<?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>223425</bug_id>
          
          <creation_ts>2021-03-18 01:43:24 -0700</creation_ts>
          <short_desc>Add WebGL 1.0.4 and 2.0.1 test files to the repository</short_desc>
          <delta_ts>2021-03-22 11:48:57 -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>WebGL</component>
          <version>Other</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>222964</blocked>
    
    <blocked>223586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dino</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1741086</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-18 01:43:24 -0700</bug_when>
    <thetext>Add WebGL 1.0.4 and 2.0.1 test files to the repository

The import of the test suites is too big commit for the infrastructure to handle, so import partially.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741092</commentid>
    <comment_count>1</comment_count>
      <attachid>423574</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-18 01:55:33 -0700</bug_when>
    <thetext>Created attachment 423574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741365</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-03-18 13:17:13 -0700</bug_when>
    <thetext>Not 100% sure how this was intended to work, but I see that the files are being put into LayoutTests/webgl/resources/webgl_test_files. This generally seems fine though note you won&apos;t be able to version these, so the monikers &quot;1.0.4&quot; and &quot;2.0.1&quot; won&apos;t have the effect you intend. Maybe better to name those 1.0.x and 2.0.x to better show they&apos;re not strictly versioned.

Will try to mark this r+, though having trouble doing so in the tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741366</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-03-18 13:17:25 -0700</bug_when>
    <thetext>+James.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741656</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-19 03:57:50 -0700</bug_when>
    <thetext>Committed r274711: &lt;https://commits.webkit.org/r274711&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423574.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741657</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-19 03:58:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/75614963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742221</commentid>
    <comment_count>6</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-03-22 07:16:42 -0700</bug_when>
    <thetext>(In reply to EWS from comment #4)
&gt; Committed r274711: &lt;https://commits.webkit.org/r274711&gt;
webgl/conformance/extensions/khr-parallel-shader-compile.html seems to be consistently failing on iOS after this change.

History: https://results.webkit.org/?suite=layout-tests&amp;test=webgl%2Fconformance%2Fextensions%2Fkhr-parallel-shader-compile.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742222</commentid>
    <comment_count>7</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-03-22 07:18:31 -0700</bug_when>
    <thetext>e.g.: https://ews-build.s3-us-west-2.amazonaws.com/iOS-14-Simulator-WK2-Tests-EWS/r423716-9453-clean-tree/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742227</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-22 08:04:28 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #6)
&gt; (In reply to EWS from comment #4)
&gt; &gt; Committed r274711: &lt;https://commits.webkit.org/r274711&gt;
&gt; webgl/conformance/extensions/khr-parallel-shader-compile.html seems to be
&gt; consistently failing on iOS after this change.


Thanks! Strange, I thought I ran the iOS-simulator for that dir..
I can add that to the skip list if nobody else does it before, but only tomorrow..</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423574</attachid>
            <date>2021-03-18 01:55:33 -0700</date>
            <delta_ts>2021-03-19 05:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223425-20210318105523.patch</filename>
            <type>text/plain</type>
            <size>20094935</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjIxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjc3ODU1M2NjYzFlZWJmMzk5YjUw
Yjc5ZGYwOTYyZjAxNzYwZDU1ZS4uM2ZiNTM4YzMyYWNlOTZhNDJiZDRhZmQ1MTYxZWE5NWI4MmJm
NjQxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAzLTE4ICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdlYkdMIDEuMC40IGFuZCAyLjAu
MSB0ZXN0IGZpbGVzIHRvIHRoZSByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBzdWl0ZSBm
aWxlcyB0byB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlIGNvbnRlbnQgZnJvbSBXZWJHTCBy
ZXBvIGlzIGJhc2VkIG9uIGFlZWE1ODJmNjJlNWIxNjFlNzE1Y2FjOWEyNzE5M2EwNGVkZDlkOTgK
KyAgICAgICAgd2l0aCBXZWJLaXQgY2hhbmdlcyBhcHBsaWVkLgorICAgICAgICBXZWJLaXQgY2hh
bmdlcyAodG8gYmUgdXBzdHJlYW1lZCk6CisgICAgICAgICAgLSBVc2UgaW5jbHVzaXZlIHRlcm1p
bm9sb2d5CisgICAgICAgICAgLSBSZW1vdmUgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Ug
dXNlLgorCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvKjogQWRk
ZWQuCisKIDIwMjEtMDMtMTggIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEltcG9ydCBjc3MvY3NzLWNvbnRhaW4gdGVzdCBmcm9tIFdQVApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY2xvc3VyZS1s
aWJyYXJ5L0FVVEhPUlMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jbG9zdXJlLWxpYnJhcnkvQVVUSE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWZhNzFmODBlYjZmYmVk
MDExZTI4NWY1ZWExYjAyZWM2YmUzNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY2xvc3VyZS1saWJyYXJ5L0FVVEhPUlMK
QEAgLTAsMCArMSwxOSBAQAorIyBUaGlzIGlzIGEgbGlzdCBvZiBjb250cmlidXRvcnMgdG8gdGhl
IENsb3N1cmUgTGlicmFyeS4KKworIyBOYW1lcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhpcyBmaWxl
IGxpa2Ugc286CisjIE5hbWUgb3IgT3JnYW5pemF0aW9uIDxlbWFpbCBhZGRyZXNzPgorCitHb29n
bGUgSW5jLgorU3RlbGxhciBTY2llbmNlIEx0ZC4KK01vaGFtZWQgTWFuc291ciA8aGVsbG9AbW9o
YW1lZG1hbnNvdXIuY29tPgorQmpvcm4gVGlwbGluZyA8Ympvcm4udGlwbGluZ0BnbWFpbC5jb20+
CitTYW1lR29hbCBMTEMgPGhlbHBAc2FtZWdvYWwuY29tPgorR3VpZG8gVGFwaWEgPGd1aWRvLnRh
cGlhQGdtYWlsLmNvbT4KK0FuZHJldyBNYXR0aWUgPGFtYXR0aWVAZ21haWwuY29tPgorSWxpYSBN
aXJraW4gPGlibWlya2luQGdtYWlsLmNvbT4KK0l2YW4gS296aWsgPGl2YW4ua296aWtAZ21haWwu
Y29tPgorUmljaCBEb3VnaGVydHkgPHJpY2hAcmQuZ2VuLm56PgorQ2hhZCBLaWxsaW5nc3dvcnRo
IDxjaGFka2lsbGluZ3N3b3J0aEBtaXNzb3VyaXN0YXRlLmVkdT4KK0RhbiBQdXBpdXMgPGRhbi5w
dXBpdXNAZ21haWwuY29tPgorTWlrZSBEdW5uIDxkdW5uNzRAZ21haWwuY29tPgorS2VuZ28gVG9k
YSA8c2t5cGVuY2lsQGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nsb3N1cmUtbGlicmFyeS9DT05UUklCVVRJTkcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jbG9zdXJlLWxpYnJh
cnkvQ09OVFJJQlVUSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYjk0MTgxZGYyYWExNTMwMDg3M2ViNmI4MzZl
YzBlYTkyMTk4ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jbG9zdXJlLWxpYnJhcnkvQ09OVFJJQlVUSU5HCkBAIC0wLDAg
KzEsNDggQEAKK0Nsb3N1cmUgTGlicmFyeSB3ZWxjb21lcyBwYXRjaGVzL3B1bGxzIGZvciBmZWF0
dXJlcyBhbmQgYnVnZml4ZXMuCisKK0ZvciBjb250cmlidXRvcnMgaW5zaWRlIEdvb2dsZSwgZm9s
bG93IHRoZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gaGVyZToKK2h0dHA6Ly9nby9jbG9zdXJlLWNvbnRy
aWJ1dG9ycworCitGb3IgY29udHJpYnV0b3JzIGV4dGVybmFsIHRvIEdvb2dsZSwgZm9sbG93IHRo
ZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gaGVyZToKKworTm90ZXMgb24gQ29udHJpYnV0aW9ucyB0byBD
bG9zdXJlIExpYnJhcnkKKworR29vZ2xlIEluZGl2aWR1YWwgQ29udHJpYnV0b3IgTGljZW5zZQor
CitJbiBhbGwgY2FzZXMsIGNvbnRyaWJ1dG9ycyBtdXN0IHNpZ24gYSBjb250cmlidXRvciBsaWNl
bnNlIGFncmVlbWVudCwKK2VpdGhlciBmb3IgYW4gaW5kaXZpZHVhbCBvciBjb3Jwb3JhdGlvbiwg
YmVmb3JlIGEgcGF0Y2ggY2FuIGJlCithY2NlcHRlZC4gUGxlYXNlIGZpbGwgb3V0IHRoZSBhZ3Jl
ZW1lbnQgZm9yIGFuIGluZGl2aWR1YWwgb3IgYQorY29ycG9yYXRpb24sIGFzIGFwcHJvcHJpYXRl
LgorCitodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9jbGEvaW5kaXZp
ZHVhbAoraHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvY2xhL2NvcnBv
cmF0ZQorCitJZiB5b3Ugb3IgeW91ciBvcmdhbml6YXRpb24gaXMgbm90IGxpc3RlZCB0aGVyZSBh
bHJlYWR5LCB5b3Ugc2hvdWxkCithZGQgYW4gZW50cnkgdG8gdGhlIEFVVEhPUlMgZmlsZSBhcyBw
YXJ0IG9mIHlvdXIgcGF0Y2guCisKK0lmIHlvdSBwbGFuIHRvIGFkZCBhIHNpZ25pZmljYW50IGNv
bXBvbmVudCBvciBsYXJnZSBjaHVuayBvZiBjb2RlLCBpdAoraXMgcmVjb21tZW5kZWQgdG8gYnJp
bmcgaXQgdXAgb24gdGhlIGRpc2N1c3Npb24gbGlzdCBmb3IgYSBkZXNpZ24KK2Rpc2N1c3Npb24g
YmVmb3JlIHdyaXRpbmcgY29kZS4KKworSWYgYXBwcm9wcmlhdGUsIHdyaXRlIGEgdW5pdCB0ZXN0
IHRoYXQgZGVtb25zdHJhdGVzIHlvdXIgcGF0Y2guIFRlc3RzIGFyZSB0aGUKK2Jlc3Qgd2F5IHRv
IGVuc3VyZSB0aGF0IGZ1dHVyZSBjb250cmlidXRvcnMgZG8gbm90IGJyZWFrIHlvdXIgY29kZQor
YWNjaWRlbnRhbGx5LgorCitUbyBjaGFuZ2UgdGhlIENsb3N1cmUgTGlicmFyeSBzb3VyY2UsIHlv
dSBtdXN0IHN1Ym1pdCBhIHB1bGwgcmVxdWVzdAoraW4gR2l0SHViLiBTZWUgdGhlIEdpdEh1YiBk
b2N1bWVudGF0aW9uIGhlcmU6CisKK2h0dHBzOi8vaGVscC5naXRodWIuY29tL2NhdGVnb3JpZXMv
NjMvYXJ0aWNsZXMKKworQ2xvc3VyZSBMaWJyYXJ5IGRldmVsb3BlcnMgbW9uaXRvciBvdXRzdGFu
ZGluZyBwdWxsIHJlcXVlc3RzLiBUaGV5IG1heQorcmVxdWVzdCBjaGFuZ2VzIG9uIHRoZSBwdWxs
IHJlcXVlc3QgYmVmb3JlIGFjY2VwdGluZy4gVGhleSB3aWxsIGFsc28KK3ZlcmlmeSB0aGF0IHRo
ZSBDTEEgaGFzIGJlZW4gc2lnbmVkLgorCitPZnRlbnRpbWVzLCB0aGUgcHVsbCByZXF1ZXN0IHdp
bGwgbm90IGJlIGRpcmVjdGx5IG1lcmdlZCwgYnV0IHBhdGNoZWQgdG8KK3RoZSBpbnRlcm5hbCBH
b29nbGUgY29kZWJhc2UgdG8gdmVyaWZ5IHRoYXQgdW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHMK
K3dpbGwgQ2xvc3VyZSBwYXNzIGJlZm9yZSBzdWJtaXR0aW5nIChhbmQgb3B0aW9uYWxseSBtYWtl
IGNoYW5nZXMgdG8KK3RoZSBwYXRjaCB0byBtYXRjaCBzdHlsZSwgZml4IHRleHQsIG9yIHRvIG1h
a2UgdGhlIGNvZGUgb3IgY29tbWVudHMKK2NsZWFyZXIpLiBJbiB0aGlzIGNhc2UsIHRoZSBpc3N1
ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHB1bGwgcmVxdWVzdAord2lsbCBiZSBjbG9zZWQgd2hlbiB0
aGUgcGF0Y2ggcHVzaGVkIHRvIHRoZSByZXBvc2l0b3J5IHZpYSB0aGUgTU9FCisoTWFrZSBPcGVu
IEVhc3kpIHN5c3RlbS4KKworaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9tb2UtamF2YS8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Ns
b3N1cmUtbGlicmFyeS9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY2xvc3VyZS1saWJyYXJ5L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTBjMGQ4
ZTg2OGViZjhkYTBiM2RjOTViYjBiZTYzNGMzNGJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nsb3N1cmUtbGlicmFyeS9M
SUNFTlNFCkBAIC0wLDAgKzEsMTc2IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAs
IEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RV
Q1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJM
aWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXBy
b2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMg
MSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBt
ZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRo
ZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAg
IkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkg
YW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxl
ZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5
LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBt
ZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAg
ICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29u
dHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVy
Y2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAo
aWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIg
KG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAg
ICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAg
ICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5n
IG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3
YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1
cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0g
cmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNs
YXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQg
dG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAg
YW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hh
bGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAg
ICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRp
Y2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9y
IGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0
aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVh
biBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0
IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhl
CisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBv
ciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9y
aWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhp
cyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQg
cmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkg
bmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2
ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3
b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24g
b2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8g
dGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25h
bGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29y
ayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExl
Z2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBj
b3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3Vi
bWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3
cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyBy
ZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11
bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9s
IHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5h
Z2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJw
b3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNs
dWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVy
d2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIg
YXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVh
biBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBi
ZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNv
ciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgor
CisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMg
YW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBo
ZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4
Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5
cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwK
KyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFu
ZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGlu
IFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2Uu
IFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vu
c2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisg
ICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBp
cnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRl
bnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGws
IHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdo
ZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNl
bnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGlu
ZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJp
bmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3
aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGlu
c3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBh
CisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2lu
ZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0
aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBh
dGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRl
ZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRl
CisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQu
IFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMg
b2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVk
aXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ug
b3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lw
aWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBv
ZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlm
aWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0
aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRh
aW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAg
IHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBh
bmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9m
IHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90
IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsg
YW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmls
ZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZh
dGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEg
cmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAg
ICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhh
dCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZl
IFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNl
czogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBh
cnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAg
ICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0
aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0
aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGly
ZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAg
b2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFu
ZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIg
b3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3Jr
cyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRl
bmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAg
ICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25z
dHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBt
YXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25z
IGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0
ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0
cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERl
cml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXBy
b2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVz
IHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAg
IDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0
YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJt
aXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNl
bnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRo
aXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgor
ICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3Vw
ZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNl
IGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVn
YXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNl
bnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFt
ZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExp
Y2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0
b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5k
IHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlz
Y2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
CisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsg
KGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVk
aW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAg
ICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5F
U1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9u
c2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5n
IG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBh
c3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExp
Y2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQg
dW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcg
bmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAg
ICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29u
dHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBh
bnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNl
cXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVz
dWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNl
IHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZv
ciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVy
ZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwg
ZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBi
ZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4g
QWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3Ry
aWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3Ug
bWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRh
bmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFi
aWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAg
ICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBt
YXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJl
c3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0
b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFu
ZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAg
IGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRv
ciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9y
IGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2Nsb3N1cmUtbGlicmFyeS9SRUFETUUtS2hyb25vcy50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jbG9zdXJlLWxpYnJhcnkvUkVBRE1FLUtocm9ub3Mu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0ZDgxZTUxY2Q3MDNlMzdlY2FlY2IxNmIxOTNkZjJjMTQxYTQzNjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jbG9zdXJlLWxpYnJhcnkvUkVBRE1FLUtocm9ub3MudHh0CkBAIC0wLDAgKzEsMjAg
QEAKK1RoaXMgaXMgYSBwYXJ0aWFsIHNuYXBzaG90IG9mIHRoZSBDbG9zdXJlIGxpYnJhcnkgd29y
a3NwYWNlIGZyb206CisKKyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJh
cnkKKworSXQgY29udGFpbnMgb25seSB0aGUgcG9ydGlvbnMgbmVlZGVkIHRvIHR5cGUgY2hlY2sg
dGhlIHBvcnRlZCBkRVFQCit0ZXN0cywgbmFtZWx5OgorCisgIGNsb3N1cmUvZ29vZy9iYXNlLmpz
CisgIGNsb3N1cmUvZ29vZy9kZXBzLmpzCisKK2FuZCBzdXBwb3J0aW5nIHNjcmlwdHMgaW4gY2xv
c3VyZS9iaW4vIC4KKworVGhlIGN1cnJlbnQgdmVyc2lvbiBzbmFwc2hvdHRlZCBoZXJlIGlzOgor
CistLS0tLQorY29tbWl0IDU3YmRmZTAwOTNjYzE1OGZiM2E1OGQyYzVmN2Q3NWVjZThjNGI0NWIK
K0F1dGhvcjogTmF0aGFuIE5hemUgPG5hbmF6ZUBnbWFpbC5jb20+CitEYXRlOiAgIEZyaSBBcHIg
MjQgMTg6Mzg6MjYgMjAxNSAtMDQwMAorCisgICAgZml4IGJhZCBtZXJnZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE5NjMzMzAxN2M0OTM4NDBkYTAxYWYxZTUyODIyYTI3NTJhZTRkYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMKQEAgLTAsMCArMSwyNDk2IEBACisv
LyBDb3B5cmlnaHQgMjAwNiBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUy1JUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisvKioKKyAqIEBmaWxlb3ZlcnZpZXcgQm9vdHN0cmFwIGZvciB0aGUgR29v
Z2xlIEpTIExpYnJhcnkgKENsb3N1cmUpLgorICoKKyAqIEluIHVuY29tcGlsZWQgbW9kZSBiYXNl
LmpzIHdpbGwgd3JpdGUgb3V0IENsb3N1cmUncyBkZXBzIGZpbGUsIHVubGVzcyB0aGUKKyAqIGds
b2JhbCA8Y29kZT5DTE9TVVJFX05PX0RFUFM8L2NvZGU+IGlzIHNldCB0byB0cnVlLiAgVGhpcyBh
bGxvd3MgcHJvamVjdHMgdG8KKyAqIGluY2x1ZGUgdGhlaXIgb3duIGRlcHMgZmlsZShzKSBmcm9t
IGRpZmZlcmVudCBsb2NhdGlvbnMuCisgKgorICogQGF1dGhvciBhcnZAZ29vZ2xlLmNvbSAoRXJp
ayBBcnZpZHNzb24pCisgKgorICogQHByb3ZpZGVHb29nCisgKi8KKworCisvKioKKyAqIEBkZWZp
bmUge2Jvb2xlYW59IE92ZXJyaWRkZW4gdG8gdHJ1ZSBieSB0aGUgY29tcGlsZXIgd2hlbiAtLWNs
b3N1cmVfcGFzcworICogICAgIG9yIC0tbWFya19hc19jb21waWxlZCBpcyBzcGVjaWZpZWQuCisg
Ki8KK3ZhciBDT01QSUxFRCA9IGZhbHNlOworCisKKy8qKgorICogQmFzZSBuYW1lc3BhY2UgZm9y
IHRoZSBDbG9zdXJlIGxpYnJhcnkuICBDaGVja3MgdG8gc2VlIGdvb2cgaXMgYWxyZWFkeQorICog
ZGVmaW5lZCBpbiB0aGUgY3VycmVudCBzY29wZSBiZWZvcmUgYXNzaWduaW5nIHRvIHByZXZlbnQg
Y2xvYmJlcmluZyBpZgorICogYmFzZS5qcyBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UuCisgKgor
ICogQGNvbnN0CisgKi8KK3ZhciBnb29nID0gZ29vZyB8fCB7fTsKKworCisvKioKKyAqIFJlZmVy
ZW5jZSB0byB0aGUgZ2xvYmFsIGNvbnRleHQuICBJbiBtb3N0IGNhc2VzIHRoaXMgd2lsbCBiZSAn
d2luZG93Jy4KKyAqLworZ29vZy5nbG9iYWwgPSB0aGlzOworCisKKy8qKgorICogQSBob29rIGZv
ciBvdmVycmlkaW5nIHRoZSBkZWZpbmUgdmFsdWVzIGluIHVuY29tcGlsZWQgbW9kZS4KKyAqCisg
KiBJbiB1bmNvbXBpbGVkIG1vZGUsIHtAY29kZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FU30g
bWF5IGJlIGRlZmluZWQgYmVmb3JlCisgKiBsb2FkaW5nIGJhc2UuanMuICBJZiBhIGtleSBpcyBk
ZWZpbmVkIGluIHtAY29kZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FU30sCisgKiB7QGNvZGUg
Z29vZy5kZWZpbmV9IHdpbGwgdXNlIHRoZSB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHZh
bHVlLiAgVGhpcworICogYWxsb3dzIGZsYWdzIHRvIGJlIG92ZXJ3cml0dGVuIHdpdGhvdXQgY29t
cGlsYXRpb24gKHRoaXMgaXMgbm9ybWFsbHkKKyAqIGFjY29tcGxpc2hlZCB3aXRoIHRoZSBjb21w
aWxlcidzICJkZWZpbmUiIGZsYWcpLgorICoKKyAqIEV4YW1wbGU6CisgKiA8cHJlPgorICogICB2
YXIgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVMgPSB7J2dvb2cuREVCVUcnOiBmYWxzZX07Cisg
KiA8L3ByZT4KKyAqCisgKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9v
bGVhbik+fHVuZGVmaW5lZH0KKyAqLworZ29vZy5nbG9iYWwuQ0xPU1VSRV9VTkNPTVBJTEVEX0RF
RklORVM7CisKKworLyoqCisgKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmluZSB2YWx1
ZXMgaW4gdW5jb21waWxlZCBvciBjb21waWxlZCBtb2RlLAorICogbGlrZSBDTE9TVVJFX1VOQ09N
UElMRURfREVGSU5FUyBidXQgZWZmZWN0aXZlIGluIGNvbXBpbGVkIGNvZGUuICBJbgorICogdW5j
b21waWxlZCBjb2RlIENMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTIHRha2VzIHByZWNlZGVuY2Uu
CisgKgorICogQWxzbyB1bmxpa2UgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVMgdGhlIHZhbHVl
cyBtdXN0IGJlIG51bWJlciwgYm9vbGVhbiBvcgorICogc3RyaW5nIGxpdGVyYWxzIG9yIHRoZSBj
b21waWxlciB3aWxsIGVtaXQgYW4gZXJyb3IuCisgKgorICogV2hpbGUgYW55IEBkZWZpbmUgdmFs
dWUgbWF5IGJlIHNldCwgb25seSB0aG9zZSBzZXQgd2l0aCBnb29nLmRlZmluZSB3aWxsIGJlCisg
KiBlZmZlY3RpdmUgZm9yIHVuY29tcGlsZWQgY29kZS4KKyAqCisgKiBFeGFtcGxlOgorICogPHBy
ZT4KKyAqICAgdmFyIENMT1NVUkVfREVGSU5FUyA9IHsnZ29vZy5ERUJVRyc6IGZhbHNlfSA7Cisg
KiA8L3ByZT4KKyAqCisgKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9v
bGVhbik+fHVuZGVmaW5lZH0KKyAqLworZ29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTOworCisK
Ky8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgbm90IHVuZGVm
aW5lZC4KKyAqIFdBUk5JTkc6IERvIG5vdCB1c2UgdGhpcyB0byB0ZXN0IGlmIGFuIG9iamVjdCBo
YXMgYSBwcm9wZXJ0eS4gVXNlIHRoZSBpbgorICogb3BlcmF0b3IgaW5zdGVhZC4KKyAqCisgKiBA
cGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hl
dGhlciB2YXJpYWJsZSBpcyBkZWZpbmVkLgorICovCitnb29nLmlzRGVmID0gZnVuY3Rpb24odmFs
KSB7CisgIC8vIHZvaWQgMCBhbHdheXMgZXZhbHVhdGVzIHRvIHVuZGVmaW5lZCBhbmQgaGVuY2Ug
d2UgZG8gbm90IG5lZWQgdG8gZGVwZW5kIG9uCisgIC8vIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBn
bG9iYWwgdmFyaWFibGUgbmFtZWQgJ3VuZGVmaW5lZCcuCisgIHJldHVybiB2YWwgIT09IHZvaWQg
MDsKK307CisKKworLyoqCisgKiBCdWlsZHMgYW4gb2JqZWN0IHN0cnVjdHVyZSBmb3IgdGhlIHBy
b3ZpZGVkIG5hbWVzcGFjZSBwYXRoLCBlbnN1cmluZyB0aGF0CisgKiBuYW1lcyB0aGF0IGFscmVh
ZHkgZXhpc3QgYXJlIG5vdCBvdmVyd3JpdHRlbi4gRm9yIGV4YW1wbGU6CisgKiAiYS5iLmMiIC0+
IGEgPSB7fTthLmI9e307YS5iLmM9e307CisgKiBVc2VkIGJ5IGdvb2cucHJvdmlkZSBhbmQgZ29v
Zy5leHBvcnRTeW1ib2wuCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBvYmpl
Y3QgdGhhdCB0aGlzIGZpbGUgZGVmaW5lcy4KKyAqIEBwYXJhbSB7Kj19IG9wdF9vYmplY3QgdGhl
IG9iamVjdCB0byBleHBvc2UgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4KKyAqIEBwYXJhbSB7T2Jq
ZWN0PX0gb3B0X29iamVjdFRvRXhwb3J0VG8gVGhlIG9iamVjdCB0byBhZGQgdGhlIHBhdGggdG87
IGRlZmF1bHQKKyAqICAgICBpcyB8Z29vZy5nbG9iYWx8LgorICogQHByaXZhdGUKKyAqLworZ29v
Zy5leHBvcnRQYXRoXyA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmplY3QsIG9wdF9vYmplY3RUb0V4
cG9ydFRvKSB7CisgIHZhciBwYXJ0cyA9IG5hbWUuc3BsaXQoJy4nKTsKKyAgdmFyIGN1ciA9IG9w
dF9vYmplY3RUb0V4cG9ydFRvIHx8IGdvb2cuZ2xvYmFsOworCisgIC8vIEludGVybmV0IEV4cGxv
cmVyIGV4aGliaXRzIHN0cmFuZ2UgYmVoYXZpb3Igd2hlbiB0aHJvd2luZyBlcnJvcnMgZnJvbQor
ICAvLyBtZXRob2RzIGV4dGVybmVkIGluIHRoaXMgbWFubmVyLiAgU2VlIHRoZSB0ZXN0RXhwb3J0
U3ltYm9sRXhjZXB0aW9ucyBpbgorICAvLyBiYXNlX3Rlc3QuaHRtbCBmb3IgYW4gZXhhbXBsZS4K
KyAgaWYgKCEocGFydHNbMF0gaW4gY3VyKSAmJiBjdXIuZXhlY1NjcmlwdCkgeworICAgIGN1ci5l
eGVjU2NyaXB0KCd2YXIgJyArIHBhcnRzWzBdKTsKKyAgfQorCisgIC8vIENlcnRhaW4gYnJvd3Nl
cnMgY2Fubm90IHBhcnNlIGNvZGUgaW4gdGhlIGZvcm0gZm9yKChhIGluIGIpOyBjOyk7CisgIC8v
IFRoaXMgcGF0dGVybiBpcyBwcm9kdWNlZCBieSB0aGUgSlNDb21waWxlciB3aGVuIGl0IGNvbGxh
cHNlcyB0aGUKKyAgLy8gc3RhdGVtZW50IGFib3ZlIGludG8gdGhlIGNvbmRpdGlvbmFsIGxvb3Ag
YmVsb3cuIFRvIHByZXZlbnQgdGhpcyBmcm9tCisgIC8vIGhhcHBlbmluZywgdXNlIGEgZm9yLWxv
b3AgYW5kIHJlc2VydmUgdGhlIGluaXQgbG9naWMgYXMgYmVsb3cuCisKKyAgLy8gUGFyZW50aGVz
ZXMgYWRkZWQgdG8gZWxpbWluYXRlIHN0cmljdCBKUyB3YXJuaW5nIGluIEZpcmVmb3guCisgIGZv
ciAodmFyIHBhcnQ7IHBhcnRzLmxlbmd0aCAmJiAocGFydCA9IHBhcnRzLnNoaWZ0KCkpOykgewor
ICAgIGlmICghcGFydHMubGVuZ3RoICYmIGdvb2cuaXNEZWYob3B0X29iamVjdCkpIHsKKyAgICAg
IC8vIGxhc3QgcGFydCBhbmQgd2UgaGF2ZSBhbiBvYmplY3Q7IHVzZSBpdAorICAgICAgY3VyW3Bh
cnRdID0gb3B0X29iamVjdDsKKyAgICB9IGVsc2UgaWYgKGN1cltwYXJ0XSkgeworICAgICAgY3Vy
ID0gY3VyW3BhcnRdOworICAgIH0gZWxzZSB7CisgICAgICBjdXIgPSBjdXJbcGFydF0gPSB7fTsK
KyAgICB9CisgIH0KK307CisKKworLyoqCisgKiBEZWZpbmVzIGEgbmFtZWQgdmFsdWUuIEluIHVu
Y29tcGlsZWQgbW9kZSwgdGhlIHZhbHVlIGlzIHJldHJpZXZlZCBmcm9tCisgKiBDTE9TVVJFX0RF
RklORVMgb3IgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVMgaWYgdGhlIG9iamVjdCBpcyBkZWZp
bmVkIGFuZAorICogaGFzIHRoZSBwcm9wZXJ0eSBzcGVjaWZpZWQsIGFuZCBvdGhlcndpc2UgdXNl
ZCB0aGUgZGVmaW5lZCBkZWZhdWx0VmFsdWUuCisgKiBXaGVuIGNvbXBpbGVkIHRoZSBkZWZhdWx0
IGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBjb21waWxlcgorICogb3B0aW9ucyBvciB0aGUg
dmFsdWUgc2V0IGluIHRoZSBDTE9TVVJFX0RFRklORVMgb2JqZWN0LgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lIFRoZSBkaXN0aW5ndWlzaGVkIG5hbWUgdG8gcHJvdmlkZS4KKyAqIEBwYXJh
bSB7c3RyaW5nfG51bWJlcnxib29sZWFufSBkZWZhdWx0VmFsdWUKKyAqLworZ29vZy5kZWZpbmUg
PSBmdW5jdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUpIHsKKyAgdmFyIHZhbHVlID0gZGVmYXVsdFZh
bHVlOworICBpZiAoIUNPTVBJTEVEKSB7CisgICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5D
T01QSUxFRF9ERUZJTkVTICYmCisgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbCgKKyAgICAgICAgICAgIGdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJ
TkVTLCBuYW1lKSkgeworICAgICAgdmFsdWUgPSBnb29nLmdsb2JhbC5DTE9TVVJFX1VOQ09NUElM
RURfREVGSU5FU1tuYW1lXTsKKyAgICB9IGVsc2UgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfREVG
SU5FUyAmJgorICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoCisg
ICAgICAgICAgICBnb29nLmdsb2JhbC5DTE9TVVJFX0RFRklORVMsIG5hbWUpKSB7CisgICAgICB2
YWx1ZSA9IGdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FU1tuYW1lXTsKKyAgICB9CisgIH0KKyAg
Z29vZy5leHBvcnRQYXRoXyhuYW1lLCB2YWx1ZSk7Cit9OworCisKKy8qKgorICogQGRlZmluZSB7
Ym9vbGVhbn0gREVCVUcgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGRlYnVn
Z2luZyBjb2RlCisgKiB0aGF0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gYSBwcm9kdWN0aW9u
IGpzX2JpbmFyeSBjYW4gYmUgZWFzaWx5IHN0cmlwcGVkCisgKiBieSBzcGVjaWZ5aW5nIC0tZGVm
aW5lIGdvb2cuREVCVUc9ZmFsc2UgdG8gdGhlIEpTQ29tcGlsZXIuIEZvciBleGFtcGxlLCBtb3N0
CisgKiB0b1N0cmluZygpIG1ldGhvZHMgc2hvdWxkIGJlIGRlY2xhcmVkIGluc2lkZSBhbiAiaWYg
KGdvb2cuREVCVUcpIiBjb25kaXRpb25hbAorICogYmVjYXVzZSB0aGV5IGFyZSBnZW5lcmFsbHkg
dXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIGFuZCBpdCBpcyBkaWZmaWN1bHQKKyAqIGZvciB0
aGUgSlNDb21waWxlciB0byBzdGF0aWNhbGx5IGRldGVybWluZSB3aGV0aGVyIHRoZXkgYXJlIHVz
ZWQuCisgKi8KK2dvb2cuZGVmaW5lKCdnb29nLkRFQlVHJywgdHJ1ZSk7CisKKworLyoqCisgKiBA
ZGVmaW5lIHtzdHJpbmd9IExPQ0FMRSBkZWZpbmVzIHRoZSBsb2NhbGUgYmVpbmcgdXNlZCBmb3Ig
Y29tcGlsYXRpb24uIEl0IGlzCisgKiB1c2VkIHRvIHNlbGVjdCBsb2NhbGUgc3BlY2lmaWMgZGF0
YSB0byBiZSBjb21waWxlZCBpbiBqcyBiaW5hcnkuIEJVSUxEIHJ1bGUKKyAqIGNhbiBzcGVjaWZ5
IHRoaXMgdmFsdWUgYnkgIi0tZGVmaW5lIGdvb2cuTE9DQUxFPTxsb2NhbGVfbmFtZT4iIGFzIEpT
Q29tcGlsZXIKKyAqIG9wdGlvbi4KKyAqCisgKiBUYWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBs
b2NhbGUgY29kZSBmb3JtYXQgaXMgaW1wb3J0YW50LiBZb3Ugc2hvdWxkIHVzZQorICogdGhlIGNh
bm9uaWNhbCBVbmljb2RlIGZvcm1hdCB3aXRoIGh5cGhlbiBhcyBhIGRlbGltaXRlci4gTGFuZ3Vh
Z2UgbXVzdCBiZQorICogbG93ZXJjYXNlLCBMYW5ndWFnZSBTY3JpcHQgLSBDYXBpdGFsaXplZCwg
UmVnaW9uIC0gVVBQRVJDQVNFLgorICogVGhlcmUgYXJlIGZldyBleGFtcGxlczogcHQtQlIsIGVu
LCBlbi1VUywgc3ItTGF0aW4tQk8sIHpoLUhhbnMtQ04uCisgKgorICogU2VlIG1vcmUgaW5mbyBh
Ym91dCBsb2NhbGUgY29kZXMgaGVyZToKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0
cy90cjM1LyNVbmljb2RlX0xhbmd1YWdlX2FuZF9Mb2NhbGVfSWRlbnRpZmllcnMKKyAqCisgKiBG
b3IgbGFuZ3VhZ2UgY29kZXMgeW91IHNob3VsZCB1c2UgdmFsdWVzIGRlZmluZWQgYnkgSVNPIDY5
My0xLiBTZWUgaXQgaGVyZQorICogaHR0cDovL3d3dy53My5vcmcvV0FJL0VSL0lHL2VydC9pc282
MzkuaHRtLiBUaGVyZSBpcyBvbmx5IG9uZSBleGNlcHRpb24gZnJvbQorICogdGhpcyBydWxlOiB0
aGUgSGVicmV3IGxhbmd1YWdlLiBGb3IgbGVnYWN5IHJlYXNvbnMgdGhlIG9sZCBjb2RlIChpdykg
c2hvdWxkCisgKiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIG5ldyBjb2RlIChoZSksIHNlZSBodHRw
Oi8vd2lraS9NYWluL0lJSVN5bm9ueW1zLgorICovCitnb29nLmRlZmluZSgnZ29vZy5MT0NBTEUn
LCAnZW4nKTsgIC8vIGRlZmF1bHQgdG8gZW4KKworCisvKioKKyAqIEBkZWZpbmUge2Jvb2xlYW59
IFdoZXRoZXIgdGhpcyBjb2RlIGlzIHJ1bm5pbmcgb24gdHJ1c3RlZCBzaXRlcy4KKyAqCisgKiBP
biB1bnRydXN0ZWQgc2l0ZXMsIHNldmVyYWwgbmF0aXZlIGZ1bmN0aW9ucyBjYW4gYmUgZGVmaW5l
ZCBvciBvdmVycmlkZGVuIGJ5CisgKiBleHRlcm5hbCBsaWJyYXJpZXMgbGlrZSBQcm90b3R5cGUs
IERhdGVqcywgYW5kIEpRdWVyeSBhbmQgc2V0dGluZyB0aGlzIGZsYWcKKyAqIHRvIGZhbHNlIGZv
cmNlcyBjbG9zdXJlIHRvIHVzZSBpdHMgb3duIGltcGxlbWVudGF0aW9ucyB3aGVuIHBvc3NpYmxl
LgorICoKKyAqIElmIHlvdXIgSmF2YVNjcmlwdCBjYW4gYmUgbG9hZGVkIGJ5IGEgdGhpcmQgcGFy
dHkgc2l0ZSBhbmQgeW91IGFyZSB3YXJ5IGFib3V0CisgKiByZWx5aW5nIG9uIG5vbi1zdGFuZGFy
ZCBpbXBsZW1lbnRhdGlvbnMsIHNwZWNpZnkKKyAqICItLWRlZmluZSBnb29nLlRSVVNURURfU0lU
RT1mYWxzZSIgdG8gdGhlIEpTQ29tcGlsZXIuCisgKi8KK2dvb2cuZGVmaW5lKCdnb29nLlRSVVNU
RURfU0lURScsIHRydWUpOworCisKKy8qKgorICogQGRlZmluZSB7Ym9vbGVhbn0gV2hldGhlciBh
IHByb2plY3QgaXMgZXhwZWN0ZWQgdG8gYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZS4KKyAqCisg
KiBUaGlzIGRlZmluZSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIGFsdGVybmF0ZSBpbXBsZW1lbnRh
dGlvbnMgY29tcGF0aWJsZSB3aXRoCisgKiBydW5uaW5nIGluIEVjbWFTY3JpcHQgU3RyaWN0IG1v
ZGUgb3Igd2FybiBhYm91dCB1bmF2YWlsYWJsZSBmdW5jdGlvbmFsaXR5LgorICogQHNlZSBodHRw
czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVy
ZW5jZS9GdW5jdGlvbnNfYW5kX2Z1bmN0aW9uX3Njb3BlL1N0cmljdF9tb2RlCisgKgorICovCitn
b29nLmRlZmluZSgnZ29vZy5TVFJJQ1RfTU9ERV9DT01QQVRJQkxFJywgZmFsc2UpOworCisKKy8q
KgorICogQGRlZmluZSB7Ym9vbGVhbn0gV2hldGhlciBjb2RlIHRoYXQgY2FsbHMge0BsaW5rIGdv
b2cuc2V0VGVzdE9ubHl9IHNob3VsZAorICogICAgIGJlIGRpc2FsbG93ZWQgaW4gdGhlIGNvbXBp
bGF0aW9uIHVuaXQuCisgKi8KK2dvb2cuZGVmaW5lKCdnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9D
T0RFJywgQ09NUElMRUQgJiYgIWdvb2cuREVCVUcpOworCisKKy8qKgorICogRGVmaW5lcyBhIG5h
bWVzcGFjZSBpbiBDbG9zdXJlLgorICoKKyAqIEEgbmFtZXNwYWNlIG1heSBvbmx5IGJlIGRlZmlu
ZWQgb25jZSBpbiBhIGNvZGViYXNlLiBJdCBtYXkgYmUgZGVmaW5lZCB1c2luZworICogZ29vZy5w
cm92aWRlKCkgb3IgZ29vZy5tb2R1bGUoKS4KKyAqCisgKiBUaGUgcHJlc2VuY2Ugb2Ygb25lIG9y
IG1vcmUgZ29vZy5wcm92aWRlKCkgY2FsbHMgaW4gYSBmaWxlIGluZGljYXRlcworICogdGhhdCB0
aGUgZmlsZSBkZWZpbmVzIHRoZSBnaXZlbiBvYmplY3RzL25hbWVzcGFjZXMuCisgKiBQcm92aWRl
ZCBzeW1ib2xzIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLgorICoKKyAqIEluIGFkZGl0
aW9uLCBnb29nLnByb3ZpZGUoKSBjcmVhdGVzIHRoZSBvYmplY3Qgc3R1YnMgZm9yIGEgbmFtZXNw
YWNlCisgKiAoZm9yIGV4YW1wbGUsIGdvb2cucHJvdmlkZSgiZ29vZy5mb28uYmFyIikgd2lsbCBj
cmVhdGUgdGhlIG9iamVjdAorICogZ29vZy5mb28uYmFyIGlmIGl0IGRvZXMgbm90IGFscmVhZHkg
ZXhpc3QpLgorICoKKyAqIEJ1aWxkIHRvb2xzIGFsc28gc2NhbiBmb3IgcHJvdmlkZS9yZXF1aXJl
L21vZHVsZSBzdGF0ZW1lbnRzCisgKiB0byBkaXNjZXJuIGRlcGVuZGVuY2llcywgYnVpbGQgZGVw
ZW5kZW5jeSBmaWxlcyAoc2VlIGRlcHMuanMpLCBldGMuCisgKgorICogQHNlZSBnb29nLnJlcXVp
cmUKKyAqIEBzZWUgZ29vZy5tb2R1bGUKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWVzcGFj
ZSBwcm92aWRlZCBieSB0aGlzIGZpbGUgaW4gdGhlIGZvcm0KKyAqICAgICAiZ29vZy5wYWNrYWdl
LnBhcnQiLgorICovCitnb29nLnByb3ZpZGUgPSBmdW5jdGlvbihuYW1lKSB7CisgIGlmICghQ09N
UElMRUQpIHsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2FtZSBuYW1lc3BhY2UgaXNuJ3QgcHJv
dmlkZWQgdHdpY2UuCisgICAgLy8gQSBnb29nLm1vZHVsZS9nb29nLnByb3ZpZGUgbWFwcyBhIGdv
b2cucmVxdWlyZSB0byBhIHNwZWNpZmljIGZpbGUKKyAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhu
YW1lKSkgeworICAgICAgdGhyb3cgRXJyb3IoJ05hbWVzcGFjZSAiJyArIG5hbWUgKyAnIiBhbHJl
YWR5IGRlY2xhcmVkLicpOworICAgIH0KKyAgfQorCisgIGdvb2cuY29uc3RydWN0TmFtZXNwYWNl
XyhuYW1lKTsKK307CisKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2Ug
cHJvdmlkZWQgYnkgdGhpcyBmaWxlIGluIHRoZSBmb3JtCisgKiAgICAgImdvb2cucGFja2FnZS5w
YXJ0Ii4KKyAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0X29iaiBUaGUgb2JqZWN0IHRvIGVtYmVkIGlu
IHRoZSBuYW1lc3BhY2UuCisgKiBAcHJpdmF0ZQorICovCitnb29nLmNvbnN0cnVjdE5hbWVzcGFj
ZV8gPSBmdW5jdGlvbihuYW1lLCBvcHRfb2JqKSB7CisgIGlmICghQ09NUElMRUQpIHsKKyAgICBk
ZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVdOworCisgICAgdmFyIG5hbWVzcGFj
ZSA9IG5hbWU7CisgICAgd2hpbGUgKChuYW1lc3BhY2UgPSBuYW1lc3BhY2Uuc3Vic3RyaW5nKDAs
IG5hbWVzcGFjZS5sYXN0SW5kZXhPZignLicpKSkpIHsKKyAgICAgIGlmIChnb29nLmdldE9iamVj
dEJ5TmFtZShuYW1lc3BhY2UpKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZ29v
Zy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVzcGFjZV0gPSB0cnVlOworICAgIH0KKyAgfQorCisg
IGdvb2cuZXhwb3J0UGF0aF8obmFtZSwgb3B0X29iaik7Cit9OworCisKKy8qKgorICogTW9kdWxl
IGlkZW50aWZpZXIgdmFsaWRhdGlvbiByZWdleHAuCisgKiBOb3RlOiBUaGlzIGlzIGEgY29uc2Vy
dmF0aXZlIGNoZWNrLCBpdCBpcyB2ZXJ5IHBvc3NpYmxlIHRvIGJlIG1vcmUgbGVuaWVudCwKKyAq
ICAgdGhlIHByaW1hcnkgZXhjbHVzaW9uIGhlcmUgaXMgIi8iIGFuZCAiXCIgYW5kIGEgbGVhZGlu
ZyAiLiIsIHRoZXNlCisgKiAgIHJlc3RyaWN0aW9ucyBhcmUgaW50ZW5kZWQgdG8gbGVhdmUgdGhl
IGRvb3Igb3BlbiBmb3IgdXNpbmcgZ29vZy5yZXF1aXJlCisgKiAgIHdpdGggcmVsYXRpdmUgZmls
ZSBwYXRocyByYXRoZXIgdGhhbiBtb2R1bGUgaWRlbnRpZmllcnMuCisgKiBAcHJpdmF0ZQorICov
Citnb29nLlZBTElEX01PRFVMRV9SRV8gPSAvXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsK
KworCisvKioKKyAqIERlZmluZXMgYSBtb2R1bGUgaW4gQ2xvc3VyZS4KKyAqCisgKiBNYXJrcyB0
aGF0IHRoaXMgZmlsZSBtdXN0IGJlIGxvYWRlZCBhcyBhIG1vZHVsZSBhbmQgY2xhaW1zIHRoZSBu
YW1lc3BhY2UuCisgKgorICogQSBuYW1lc3BhY2UgbWF5IG9ubHkgYmUgZGVmaW5lZCBvbmNlIGlu
IGEgY29kZWJhc2UuIEl0IG1heSBiZSBkZWZpbmVkIHVzaW5nCisgKiBnb29nLnByb3ZpZGUoKSBv
ciBnb29nLm1vZHVsZSgpLgorICoKKyAqIGdvb2cubW9kdWxlKCkgaGFzIHRocmVlIHJlcXVpcmVt
ZW50czoKKyAqIC0gZ29vZy5tb2R1bGUgbWF5IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGZpbGUg
YXMgZ29vZy5wcm92aWRlLgorICogLSBnb29nLm1vZHVsZSBtdXN0IGJlIHRoZSBmaXJzdCBzdGF0
ZW1lbnQgaW4gdGhlIGZpbGUuCisgKiAtIG9ubHkgb25lIGdvb2cubW9kdWxlIGlzIGFsbG93ZWQg
cGVyIGZpbGUuCisgKgorICogV2hlbiBhIGdvb2cubW9kdWxlIGFubm90YXRlZCBmaWxlIGlzIGxv
YWRlZCwgaXQgaXMgZW5jbG9zZWQgaW4KKyAqIGEgc3RyaWN0IGZ1bmN0aW9uIGNsb3N1cmUuIFRo
aXMgbWVhbnMgdGhhdDoKKyAqIC0gYW55IHZhcmlhYmxlcyBkZWNsYXJlZCBpbiBhIGdvb2cubW9k
dWxlIGZpbGUgYXJlIHByaXZhdGUgdG8gdGhlIGZpbGUKKyAqIChub3QgZ2xvYmFsKSwgdGhvdWdo
IHRoZSBjb21waWxlciBpcyBleHBlY3RlZCB0byBpbmxpbmUgdGhlIG1vZHVsZS4KKyAqIC0gVGhl
IGNvZGUgbXVzdCBvYmV5IGFsbCB0aGUgcnVsZXMgb2YgInN0cmljdCIgSmF2YVNjcmlwdC4KKyAq
IC0gdGhlIGZpbGUgd2lsbCBiZSBtYXJrZWQgYXMgInVzZSBzdHJpY3QiCisgKgorICogTk9URTog
dW5saWtlIGdvb2cucHJvdmlkZSwgZ29vZy5tb2R1bGUgZG9lcyBub3QgZGVjbGFyZSBhbnkgc3lt
Ym9scyBieQorICogaXRzZWxmLiBJZiBkZWNsYXJlZCBzeW1ib2xzIGFyZSBkZXNpcmVkLCB1c2UK
KyAqIGdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UoKS4KKyAqCisgKgorICogU2Vl
IHRoZSBwdWJsaWMgZ29vZy5tb2R1bGUgcHJvcG9zYWw6IGh0dHA6Ly9nb28uZ2wvVmExaGluCisg
KgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZXNwYWNlIHByb3ZpZGVkIGJ5IHRoaXMgZmls
ZSBpbiB0aGUgZm9ybQorICogICAgICJnb29nLnBhY2thZ2UucGFydCIsIGlzIGV4cGVjdGVkIGJ1
dCBub3QgcmVxdWlyZWQuCisgKi8KK2dvb2cubW9kdWxlID0gZnVuY3Rpb24obmFtZSkgeworICBp
ZiAoIWdvb2cuaXNTdHJpbmcobmFtZSkgfHwKKyAgICAgICFuYW1lIHx8CisgICAgICBuYW1lLnNl
YXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pID09IC0xKSB7CisgICAgdGhyb3cgRXJyb3IoJ0lu
dmFsaWQgbW9kdWxlIGlkZW50aWZpZXInKTsKKyAgfQorICBpZiAoIWdvb2cuaXNJbk1vZHVsZUxv
YWRlcl8oKSkgeworICAgIHRocm93IEVycm9yKCdNb2R1bGUgJyArIG5hbWUgKyAnIGhhcyBiZWVu
IGxvYWRlZCBpbmNvcnJlY3RseS4nKTsKKyAgfQorICBpZiAoZ29vZy5tb2R1bGVMb2FkZXJTdGF0
ZV8ubW9kdWxlTmFtZSkgeworICAgIHRocm93IEVycm9yKCdnb29nLm1vZHVsZSBtYXkgb25seSBi
ZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLicpOworICB9CisKKyAgLy8gU3RvcmUgdGhlIG1vZHVs
ZSBuYW1lIGZvciB0aGUgbG9hZGVyLgorICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVO
YW1lID0gbmFtZTsKKyAgaWYgKCFDT01QSUxFRCkgeworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBz
YW1lIG5hbWVzcGFjZSBpc24ndCBwcm92aWRlZCB0d2ljZS4KKyAgICAvLyBBIGdvb2cubW9kdWxl
L2dvb2cucHJvdmlkZSBtYXBzIGEgZ29vZy5yZXF1aXJlIHRvIGEgc3BlY2lmaWMgZmlsZQorICAg
IGlmIChnb29nLmlzUHJvdmlkZWRfKG5hbWUpKSB7CisgICAgICB0aHJvdyBFcnJvcignTmFtZXNw
YWNlICInICsgbmFtZSArICciIGFscmVhZHkgZGVjbGFyZWQuJyk7CisgICAgfQorICAgIGRlbGV0
ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bbmFtZV07CisgIH0KK307CisKKworLyoqCisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbW9kdWxlIGlkZW50aWZpZXIuCisgKiBAcmV0dXJuIHs/
fSBUaGUgbW9kdWxlIGV4cG9ydHMgZm9yIGFuIGFscmVhZHkgbG9hZGVkIG1vZHVsZSBvciBudWxs
LgorICoKKyAqIE5vdGU6IFRoaXMgaXMgbm90IGFuIGFsdGVybmF0aXZlIHRvIGdvb2cucmVxdWly
ZSwgaXQgZG9lcyBub3QKKyAqIGluZGljYXRlIGEgaGFyZCBkZXBlbmRlbmN5LCBpbnN0ZWFkIGl0
IGlzIHVzZWQgdG8gaW5kaWNhdGUKKyAqIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgb3IgdG8gYWNj
ZXNzIHRoZSBleHBvcnRzIG9mIGEgbW9kdWxlCisgKiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gbG9h
ZGVkLgorICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KKyAqLworZ29vZy5tb2R1bGUuZ2V0
ID0gZnVuY3Rpb24obmFtZSkgeworICByZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5h
bWUpOworfTsKKworCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtb2R1bGUgaWRl
bnRpZmllci4KKyAqIEByZXR1cm4gez99IFRoZSBtb2R1bGUgZXhwb3J0cyBmb3IgYW4gYWxyZWFk
eSBsb2FkZWQgbW9kdWxlIG9yIG51bGwuCisgKiBAcHJpdmF0ZQorICovCitnb29nLm1vZHVsZS5n
ZXRJbnRlcm5hbF8gPSBmdW5jdGlvbihuYW1lKSB7CisgIGlmICghQ09NUElMRUQpIHsKKyAgICBp
ZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lKSkgeworICAgICAgLy8gZ29vZy5yZXF1aXJlIG9ubHkg
cmV0dXJuIGEgdmFsdWUgd2l0aC1pbiBnb29nLm1vZHVsZSBmaWxlcy4KKyAgICAgIHJldHVybiBu
YW1lIGluIGdvb2cubG9hZGVkTW9kdWxlc18gPworICAgICAgICAgIGdvb2cubG9hZGVkTW9kdWxl
c19bbmFtZV0gOgorICAgICAgICAgIGdvb2cuZ2V0T2JqZWN0QnlOYW1lKG5hbWUpOworICAgIH0g
ZWxzZSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KK307CisKKworLyoqCisgKiBA
cHJpdmF0ZSB7P3sKKyAqICAgbW9kdWxlTmFtZTogKHN0cmluZ3x1bmRlZmluZWQpLAorICogICBk
ZWNsYXJlVGVzdE1ldGhvZHM6IGJvb2xlYW4KKyAqIH19CisgKi8KK2dvb2cubW9kdWxlTG9hZGVy
U3RhdGVfID0gbnVsbDsKKworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcmV0dXJuIHtib29sZWFu
fSBXaGV0aGVyIGEgZ29vZy5tb2R1bGUgaXMgY3VycmVudGx5IGJlaW5nIGluaXRpYWxpemVkLgor
ICovCitnb29nLmlzSW5Nb2R1bGVMb2FkZXJfID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiBnb29n
Lm1vZHVsZUxvYWRlclN0YXRlXyAhPSBudWxsOworfTsKKworCisvKioKKyAqIEluZGljYXRlIHRo
YXQgYSBtb2R1bGUncyBleHBvcnRzIHRoYXQgYXJlIGtub3duIHRlc3QgbWV0aG9kcyBzaG91bGQK
KyAqIGJlIGNvcGllZCB0byB0aGUgZ2xvYmFsIG9iamVjdC4gIFRoaXMgbWFrZXMgdGhlIHRlc3Qg
bWV0aG9kcyB2aXNpYmxlIHRvCisgKiB0ZXN0IHJ1bm5lcnMgdGhhdCBpbnNwZWN0IHRoZSBnbG9i
YWwgb2JqZWN0LgorICoKKyAqIFRPRE8oam9obmxlbnopOiBNYWtlIHRoZSB0ZXN0IGZyYW1ld29y
ayBhd2FyZSBvZiBnb29nLm1vZHVsZSBzbworICogdGhhdCB0aGlzIGlzbid0IG5lY2Vzc2FyeS4g
QWx0ZXJuYXRlbHkgY29tYmluZSB0aGlzIHdpdGggZ29vZy5zZXRUZXN0T25seQorICogdG8gbWlu
aW1pemUgYm9pbGVyIHBsYXRlLgorICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KKyAqLwor
Z29vZy5tb2R1bGUuZGVjbGFyZVRlc3RNZXRob2RzID0gZnVuY3Rpb24oKSB7CisgIGlmICghZ29v
Zy5pc0luTW9kdWxlTG9hZGVyXygpKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdnb29nLm1vZHVs
ZS5kZWNsYXJlVGVzdE1ldGhvZHMgbXVzdCBiZSBjYWxsZWQgZnJvbSAnICsKKyAgICAgICAgJ3dp
dGhpbiBhIGdvb2cubW9kdWxlJyk7CisgIH0KKyAgZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8uZGVj
bGFyZVRlc3RNZXRob2RzID0gdHJ1ZTsKK307CisKKworLyoqCisgKiBQcm92aWRlIHRoZSBtb2R1
bGUncyBleHBvcnRzIGFzIGEgZ2xvYmFsbHkgYWNjZXNzaWJsZSBvYmplY3QgdW5kZXIgdGhlCisg
KiBtb2R1bGUncyBkZWNsYXJlZCBuYW1lLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3Jh
dGlvbiB0byBnb29nLm1vZHVsZQorICogZm9yIGZpbGVzIHRoYXQgaGF2ZSBleGlzdGluZyB1c2Fn
ZXMuCisgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm92aWRlfQorICovCitnb29nLm1vZHVsZS5kZWNs
YXJlTGVnYWN5TmFtZXNwYWNlID0gZnVuY3Rpb24oKSB7CisgIGlmICghQ09NUElMRUQgJiYgIWdv
b2cuaXNJbk1vZHVsZUxvYWRlcl8oKSkgeworICAgIHRocm93IG5ldyBFcnJvcignZ29vZy5tb2R1
bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZSBtdXN0IGJlIGNhbGxlZCBmcm9tICcgKworICAgICAg
ICAnd2l0aGluIGEgZ29vZy5tb2R1bGUnKTsKKyAgfQorICBpZiAoIUNPTVBJTEVEICYmICFnb29n
Lm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKSB7CisgICAgdGhyb3cgRXJyb3IoJ2dvb2cu
bW9kdWxlIG11c3QgYmUgY2FsbGVkIHByaW9yIHRvICcgKworICAgICAgICAnZ29vZy5tb2R1bGUu
ZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZS4nKTsKKyAgfQorICBnb29nLm1vZHVsZUxvYWRlclN0YXRl
Xy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlID0gdHJ1ZTsKK307CisKKworLyoqCisgKiBNYXJrcyB0
aGF0IHRoZSBjdXJyZW50IGZpbGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZywgYW5k
IG5ldmVyIGZvcgorICogbGl2ZSBjb2RlIGluIHByb2R1Y3Rpb24uCisgKgorICogSW4gdGhlIGNh
c2Ugb2YgdW5pdCB0ZXN0cywgdGhlIG1lc3NhZ2UgbWF5IG9wdGlvbmFsbHkgYmUgYW4gZXhhY3Qg
bmFtZXNwYWNlCisgKiBmb3IgdGhlIHRlc3QgKGUuZy4gJ2dvb2cuc3RyaW5nVGVzdCcpLiBUaGUg
bGludGVyIHdpbGwgdGhlbiBpZ25vcmUgdGhlIGV4dHJhCisgKiBwcm92aWRlIChpZiBub3QgZXhw
bGljaXRseSBkZWZpbmVkIGluIHRoZSBjb2RlKS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZz19IG9w
dF9tZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gYWRkIHRvIHRoZSBlcnJvciB0aGF0J3MKKyAq
ICAgICByYWlzZWQgd2hlbiB1c2VkIGluIHByb2R1Y3Rpb24gY29kZS4KKyAqLworZ29vZy5zZXRU
ZXN0T25seSA9IGZ1bmN0aW9uKG9wdF9tZXNzYWdlKSB7CisgIGlmIChnb29nLkRJU0FMTE9XX1RF
U1RfT05MWV9DT0RFKSB7CisgICAgb3B0X21lc3NhZ2UgPSBvcHRfbWVzc2FnZSB8fCAnJzsKKyAg
ICB0aHJvdyBFcnJvcignSW1wb3J0aW5nIHRlc3Qtb25seSBjb2RlIGludG8gbm9uLWRlYnVnIGVu
dmlyb25tZW50JyArCisgICAgICAgICAgICAgICAgKG9wdF9tZXNzYWdlID8gJzogJyArIG9wdF9t
ZXNzYWdlIDogJy4nKSk7CisgIH0KK307CisKKworLyoqCisgKiBGb3J3YXJkIGRlY2xhcmVzIGEg
c3ltYm9sLiBUaGlzIGlzIGFuIGluZGljYXRpb24gdG8gdGhlIGNvbXBpbGVyIHRoYXQgdGhlCisg
KiBzeW1ib2wgbWF5IGJlIHVzZWQgaW4gdGhlIHNvdXJjZSB5ZXQgaXMgbm90IHJlcXVpcmVkIGFu
ZCBtYXkgbm90IGJlIHByb3ZpZGVkCisgKiBpbiBjb21waWxhdGlvbi4KKyAqCisgKiBUaGUgbW9z
dCBjb21tb24gdXNhZ2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBjb2RlIHRoYXQgdGFrZXMg
YSB0eXBlIGFzIGEKKyAqIGZ1bmN0aW9uIHBhcmFtZXRlciBidXQgZG9lcyBub3QgbmVlZCB0byBy
ZXF1aXJlIGl0LiBCeSBmb3J3YXJkIGRlY2xhcmluZworICogaW5zdGVhZCBvZiByZXF1aXJpbmcs
IG5vIGhhcmQgZGVwZW5kZW5jeSBpcyBtYWRlLCBhbmQgKGlmIG5vdCByZXF1aXJlZAorICogZWxz
ZXdoZXJlKSB0aGUgbmFtZXNwYWNlIG1heSBuZXZlciBiZSByZXF1aXJlZCBhbmQgdGh1cywgbm90
IGJlIHB1bGxlZAorICogaW50byB0aGUgSmF2YVNjcmlwdCBiaW5hcnkuIElmIGl0IGlzIHJlcXVp
cmVkIGVsc2V3aGVyZSwgaXQgd2lsbCBiZSB0eXBlCisgKiBjaGVja2VkIGFzIG5vcm1hbC4KKyAq
CisgKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWVzcGFjZSB0byBmb3J3YXJkIGRl
Y2xhcmUgaW4gdGhlIGZvcm0gb2YKKyAqICAgICAiZ29vZy5wYWNrYWdlLnBhcnQiLgorICovCitn
b29nLmZvcndhcmREZWNsYXJlID0gZnVuY3Rpb24obmFtZSkge307CisKKworaWYgKCFDT01QSUxF
RCkgeworCisgIC8qKgorICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gbmFtZSBoYXMgYmVlbiBnb29n
LnByb3ZpZGVkLiBUaGlzIHdpbGwgcmV0dXJuIGZhbHNlIGZvcgorICAgKiBuYW1lcyB0aGF0IGFy
ZSBhdmFpbGFibGUgb25seSBhcyBpbXBsaWNpdCBuYW1lc3BhY2VzLgorICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gbG9vayBmb3IuCisgICAqIEByZXR1cm4g
e2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5hbWUgaGFzIGJlZW4gcHJvdmlkZWQuCisgICAqIEBwcml2
YXRlCisgICAqLworICBnb29nLmlzUHJvdmlkZWRfID0gZnVuY3Rpb24obmFtZSkgeworICAgIHJl
dHVybiAobmFtZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKSB8fAorICAgICAgICAoIWdvb2cuaW1w
bGljaXROYW1lc3BhY2VzX1tuYW1lXSAmJgorICAgICAgICAgICAgZ29vZy5pc0RlZkFuZE5vdE51
bGwoZ29vZy5nZXRPYmplY3RCeU5hbWUobmFtZSkpKTsKKyAgfTsKKworICAvKioKKyAgICogTmFt
ZXNwYWNlcyBpbXBsaWNpdGx5IGRlZmluZWQgYnkgZ29vZy5wcm92aWRlLiBGb3IgZXhhbXBsZSwK
KyAgICogZ29vZy5wcm92aWRlKCdnb29nLmV2ZW50cy5FdmVudCcpIGltcGxpY2l0bHkgZGVjbGFy
ZXMgdGhhdCAnZ29vZycgYW5kCisgICAqICdnb29nLmV2ZW50cycgbXVzdCBiZSBuYW1lc3BhY2Vz
LgorICAgKgorICAgKiBAdHlwZSB7IU9iamVjdDxzdHJpbmcsIChib29sZWFufHVuZGVmaW5lZCk+
fQorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfID0geydn
b29nLm1vZHVsZSc6IHRydWV9OworCisgIC8vIE5PVEU6IFdlIGFkZCBnb29nLm1vZHVsZSBhcyBh
biBpbXBsaWNpdCBuYW1lc3BhY2UgYXMgZ29vZy5tb2R1bGUgaXMgZGVmaW5lZAorICAvLyBoZXJl
IGFuZCBiZWNhdXNlIHRoZSBleGlzdGluZyBtb2R1bGUgcGFja2FnZSBoYXMgbm90IGJlZW4gbW92
ZWQgeWV0IG91dCBvZgorICAvLyB0aGUgZ29vZy5tb2R1bGUgbmFtZXNwYWNlLiBUaGlzIHNhdGlz
aWZpZXMgYm90aCB0aGUgZGVidWcgbG9hZGVyIGFuZAorICAvLyBhaGVhZC1vZi10aW1lIGRlcGVu
ZGVuY3kgbWFuYWdlbWVudC4KK30KKworCisvKioKKyAqIFJldHVybnMgYW4gb2JqZWN0IGJhc2Vk
IG9uIGl0cyBmdWxseSBxdWFsaWZpZWQgZXh0ZXJuYWwgbmFtZS4gIFRoZSBvYmplY3QKKyAqIGlz
IG5vdCBmb3VuZCBpZiBudWxsIG9yIHVuZGVmaW5lZC4gIElmIHlvdSBhcmUgdXNpbmcgYSBjb21w
aWxhdGlvbiBwYXNzIHRoYXQKKyAqIHJlbmFtZXMgcHJvcGVydHkgbmFtZXMgYmV3YXJlIHRoYXQg
dXNpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmaW5kIHJlbmFtZWQKKyAqIHByb3BlcnRpZXMu
CisgKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLgor
ICogQHBhcmFtIHtPYmplY3Q9fSBvcHRfb2JqIFRoZSBvYmplY3Qgd2l0aGluIHdoaWNoIHRvIGxv
b2s7IGRlZmF1bHQgaXMKKyAqICAgICB8Z29vZy5nbG9iYWx8LgorICogQHJldHVybiB7P30gVGhl
IHZhbHVlIChvYmplY3Qgb3IgcHJpbWl0aXZlKSBvciwgaWYgbm90IGZvdW5kLCBudWxsLgorICov
Citnb29nLmdldE9iamVjdEJ5TmFtZSA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmopIHsKKyAgdmFy
IHBhcnRzID0gbmFtZS5zcGxpdCgnLicpOworICB2YXIgY3VyID0gb3B0X29iaiB8fCBnb29nLmds
b2JhbDsKKyAgZm9yICh2YXIgcGFydDsgcGFydCA9IHBhcnRzLnNoaWZ0KCk7ICkgeworICAgIGlm
IChnb29nLmlzRGVmQW5kTm90TnVsbChjdXJbcGFydF0pKSB7CisgICAgICBjdXIgPSBjdXJbcGFy
dF07CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorICByZXR1
cm4gY3VyOworfTsKKworCisvKioKKyAqIEdsb2JhbGl6ZXMgYSB3aG9sZSBuYW1lc3BhY2UsIHN1
Y2ggYXMgZ29vZyBvciBnb29nLmxhbmcuCisgKgorICogQHBhcmFtIHshT2JqZWN0fSBvYmogVGhl
IG5hbWVzcGFjZSB0byBnbG9iYWxpemUuCisgKiBAcGFyYW0ge09iamVjdD19IG9wdF9nbG9iYWwg
VGhlIG9iamVjdCB0byBhZGQgdGhlIHByb3BlcnRpZXMgdG8uCisgKiBAZGVwcmVjYXRlZCBQcm9w
ZXJ0aWVzIG1heSBiZSBleHBsaWNpdGx5IGV4cG9ydGVkIHRvIHRoZSBnbG9iYWwgc2NvcGUsIGJ1
dAorICogICAgIHRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBkb25lIGluIGJ1bGsuCisgKi8KK2dv
b2cuZ2xvYmFsaXplID0gZnVuY3Rpb24ob2JqLCBvcHRfZ2xvYmFsKSB7CisgIHZhciBnbG9iYWwg
PSBvcHRfZ2xvYmFsIHx8IGdvb2cuZ2xvYmFsOworICBmb3IgKHZhciB4IGluIG9iaikgeworICAg
IGdsb2JhbFt4XSA9IG9ialt4XTsKKyAgfQorfTsKKworCisvKioKKyAqIEFkZHMgYSBkZXBlbmRl
bmN5IGZyb20gYSBmaWxlIHRvIHRoZSBmaWxlcyBpdCByZXF1aXJlcy4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSByZWxQYXRoIFRoZSBwYXRoIHRvIHRoZSBqcyBmaWxlLgorICogQHBhcmFtIHshQXJyYXk8
c3RyaW5nPn0gcHJvdmlkZXMgQW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoCisgKiAgICAgdGhlIG5h
bWVzIG9mIHRoZSBvYmplY3RzIHRoaXMgZmlsZSBwcm92aWRlcy4KKyAqIEBwYXJhbSB7IUFycmF5
PHN0cmluZz59IHJlcXVpcmVzIEFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aAorICogICAgIHRoZSBu
YW1lcyBvZiB0aGUgb2JqZWN0cyB0aGlzIGZpbGUgcmVxdWlyZXMuCisgKiBAcGFyYW0ge2Jvb2xl
YW49fSBvcHRfaXNNb2R1bGUgV2hldGhlciB0aGlzIGRlcGVuZGVuY3kgbXVzdCBiZSBsb2FkZWQg
YXMKKyAqICAgICBhIG1vZHVsZSBhcyBkZWNsYXJlZCBieSBnb29nLm1vZHVsZS4KKyAqLworZ29v
Zy5hZGREZXBlbmRlbmN5ID0gZnVuY3Rpb24ocmVsUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBv
cHRfaXNNb2R1bGUpIHsKKyAgaWYgKGdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQpIHsKKyAgICB2
YXIgcHJvdmlkZSwgcmVxdWlyZTsKKyAgICB2YXIgcGF0aCA9IHJlbFBhdGgucmVwbGFjZSgvXFwv
ZywgJy8nKTsKKyAgICB2YXIgZGVwcyA9IGdvb2cuZGVwZW5kZW5jaWVzXzsKKyAgICBmb3IgKHZh
ciBpID0gMDsgcHJvdmlkZSA9IHByb3ZpZGVzW2ldOyBpKyspIHsKKyAgICAgIGRlcHMubmFtZVRv
UGF0aFtwcm92aWRlXSA9IHBhdGg7CisgICAgICBkZXBzLnBhdGhJc01vZHVsZVtwYXRoXSA9ICEh
b3B0X2lzTW9kdWxlOworICAgIH0KKyAgICBmb3IgKHZhciBqID0gMDsgcmVxdWlyZSA9IHJlcXVp
cmVzW2pdOyBqKyspIHsKKyAgICAgIGlmICghKHBhdGggaW4gZGVwcy5yZXF1aXJlcykpIHsKKyAg
ICAgICAgZGVwcy5yZXF1aXJlc1twYXRoXSA9IHt9OworICAgICAgfQorICAgICAgZGVwcy5yZXF1
aXJlc1twYXRoXVtyZXF1aXJlXSA9IHRydWU7CisgICAgfQorICB9Cit9OworCisKKworCisvLyBO
T1RFKG5uYXplKTogVGhlIGRlYnVnIERPTSBsb2FkZXIgd2FzIGluY2x1ZGVkIGluIGJhc2UuanMg
YXMgYW4gb3JpZ2luYWwgd2F5CisvLyB0byBkbyAiZGVidWctbW9kZSIgZGV2ZWxvcG1lbnQuICBU
aGUgZGVwZW5kZW5jeSBzeXN0ZW0gY2FuIHNvbWV0aW1lcyBiZQorLy8gY29uZnVzaW5nLCBhcyBj
YW4gdGhlIGRlYnVnIERPTSBsb2FkZXIncyBhc3luY2hyb25vdXMgbmF0dXJlLgorLy8KKy8vIFdp
dGggdGhlIERPTSBsb2FkZXIsIGEgY2FsbCB0byBnb29nLnJlcXVpcmUoKSBpcyBub3QgYmxvY2tp
bmcgLS0gdGhlIHNjcmlwdAorLy8gd2lsbCBub3QgbG9hZCB1bnRpbCBzb21lIHBvaW50IGFmdGVy
IHRoZSBjdXJyZW50IHNjcmlwdC4gIElmIGEgbmFtZXNwYWNlIGlzCisvLyBuZWVkZWQgYXQgcnVu
dGltZSwgaXQgbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiBhIHByZXZpb3VzIHNjcmlwdCwgb3IgbG9h
ZGVkIHZpYQorLy8gcmVxdWlyZSgpIHdpdGggaXRzIHJlZ2lzdGVyZWQgZGVwZW5kZW5jaWVzLgor
Ly8gVXNlci1kZWZpbmVkIG5hbWVzcGFjZXMgbWF5IG5lZWQgdGhlaXIgb3duIGRlcHMgZmlsZS4g
IFNlZSBodHRwOi8vZ28vanNfZGVwcywKKy8vIGh0dHA6Ly9nby9nZW5qc2RlcHMsIG9yLCBleHRl
cm5hbGx5LCBEZXBzV3JpdGVyLgorLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vY2xv
c3VyZS9saWJyYXJ5L2RvY3MvZGVwc3dyaXRlcgorLy8KKy8vIEJlY2F1c2Ugb2YgbGVnYWN5IGNs
aWVudHMsIHRoZSBET00gbG9hZGVyIGNhbid0IGJlIGVhc2lseSByZW1vdmVkIGZyb20KKy8vIGJh
c2UuanMuICBXb3JrIGlzIGJlaW5nIGRvbmUgdG8gbWFrZSBpdCBkaXNhYmxlYWJsZSBvciByZXBs
YWNlYWJsZSBmb3IKKy8vIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKERPTS1sZXNzIEphdmFTY3Jp
cHQgaW50ZXJwcmV0ZXJzIGxpa2UgUmhpbm8gb3IgVjgsCisvLyBmb3IgZXhhbXBsZSkuIFNlZSBi
b290c3RyYXAvIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKy8qKgorICogQGRlZmluZSB7Ym9v
bGVhbn0gV2hldGhlciB0byBlbmFibGUgdGhlIGRlYnVnIGxvYWRlci4KKyAqCisgKiBJZiBlbmFi
bGVkLCBhIGNhbGwgdG8gZ29vZy5yZXF1aXJlKCkgd2lsbCBhdHRlbXB0IHRvIGxvYWQgdGhlIG5h
bWVzcGFjZSBieQorICogYXBwZW5kaW5nIGEgc2NyaXB0IHRhZyB0byB0aGUgRE9NIChpZiB0aGUg
bmFtZXNwYWNlIGhhcyBiZWVuIHJlZ2lzdGVyZWQpLgorICoKKyAqIElmIGRpc2FibGVkLCBnb29n
LnJlcXVpcmUoKSB3aWxsIHNpbXBseSBhc3NlcnQgdGhhdCB0aGUgbmFtZXNwYWNlIGhhcyBiZWVu
CisgKiBwcm92aWRlZCAoYW5kIGRlcGVuZCBvbiB0aGUgZmFjdCB0aGF0IHNvbWUgb3V0c2lkZSB0
b29sIGNvcnJlY3RseSBvcmRlcmVkCisgKiB0aGUgc2NyaXB0KS4KKyAqLworZ29vZy5kZWZpbmUo
J2dvb2cuRU5BQkxFX0RFQlVHX0xPQURFUicsIHRydWUpOworCisKKy8qKgorICogQHBhcmFtIHtz
dHJpbmd9IG1zZworICogQHByaXZhdGUKKyAqLworZ29vZy5sb2dUb0NvbnNvbGVfID0gZnVuY3Rp
b24obXNnKSB7CisgIGlmIChnb29nLmdsb2JhbC5jb25zb2xlKSB7CisgICAgZ29vZy5nbG9iYWwu
Y29uc29sZVsnZXJyb3InXShtc2cpOworICB9Cit9OworCisKKy8qKgorICogSW1wbGVtZW50cyBh
IHN5c3RlbSBmb3IgdGhlIGR5bmFtaWMgcmVzb2x1dGlvbiBvZiBkZXBlbmRlbmNpZXMgdGhhdCB3
b3JrcyBpbgorICogcGFyYWxsZWwgd2l0aCB0aGUgQlVJTEQgc3lzdGVtLiBOb3RlIHRoYXQgYWxs
IGNhbGxzIHRvIGdvb2cucmVxdWlyZSB3aWxsIGJlCisgKiBzdHJpcHBlZCBieSB0aGUgSlNDb21w
aWxlciB3aGVuIHRoZSAtLWNsb3N1cmVfcGFzcyBvcHRpb24gaXMgdXNlZC4KKyAqIEBzZWUgZ29v
Zy5wcm92aWRlCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2UgdG8gaW5jbHVkZSAo
YXMgd2FzIGdpdmVuIGluIGdvb2cucHJvdmlkZSgpKSBpbgorICogICAgIHRoZSBmb3JtICJnb29n
LnBhY2thZ2UucGFydCIuCisgKiBAcmV0dXJuIHs/fSBJZiBjYWxsZWQgd2l0aGluIGEgZ29vZy5t
b2R1bGUgZmlsZSwgdGhlIGFzc29jaWF0ZWQgbmFtZXNwYWNlIG9yCisgKiAgICAgbW9kdWxlIG90
aGVyd2lzZSBudWxsLgorICovCitnb29nLnJlcXVpcmUgPSBmdW5jdGlvbihuYW1lKSB7CisKKyAg
Ly8gSWYgdGhlIG9iamVjdCBhbHJlYWR5IGV4aXN0cyB3ZSBkbyBub3QgbmVlZCBkbyBkbyBhbnl0
aGluZy4KKyAgaWYgKCFDT01QSUxFRCkgeworICAgIGlmIChnb29nLkVOQUJMRV9ERUJVR19MT0FE
RVIgJiYgZ29vZy5JU19PTERfSUVfKSB7CisgICAgICBnb29nLm1heWJlUHJvY2Vzc0RlZmVycmVk
RGVwXyhuYW1lKTsKKyAgICB9CisKKyAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lKSkgewor
ICAgICAgaWYgKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSkgeworICAgICAgICByZXR1cm4gZ29v
Zy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5hbWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGdvb2cuRU5BQkxFX0RFQlVHX0xP
QURFUikgeworICAgICAgdmFyIHBhdGggPSBnb29nLmdldFBhdGhGcm9tRGVwc18obmFtZSk7Cisg
ICAgICBpZiAocGF0aCkgeworICAgICAgICBnb29nLmluY2x1ZGVkX1twYXRoXSA9IHRydWU7Cisg
ICAgICAgIGdvb2cud3JpdGVTY3JpcHRzXygpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgZXJyb3JNZXNzYWdlID0gJ2dvb2cucmVxdWlyZSBjb3VsZCBu
b3QgZmluZDogJyArIG5hbWU7CisgICAgZ29vZy5sb2dUb0NvbnNvbGVfKGVycm9yTWVzc2FnZSk7
CisKKyAgICB0aHJvdyBFcnJvcihlcnJvck1lc3NhZ2UpOworICB9Cit9OworCisKKy8qKgorICog
UGF0aCBmb3IgaW5jbHVkZWQgc2NyaXB0cy4KKyAqIEB0eXBlIHtzdHJpbmd9CisgKi8KK2dvb2cu
YmFzZVBhdGggPSAnJzsKKworCisvKioKKyAqIEEgaG9vayBmb3Igb3ZlcnJpZGluZyB0aGUgYmFz
ZSBwYXRoLgorICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9CisgKi8KK2dvb2cuZ2xvYmFsLkNM
T1NVUkVfQkFTRV9QQVRIOworCisKKy8qKgorICogV2hldGhlciB0byB3cml0ZSBvdXQgQ2xvc3Vy
ZSdzIGRlcHMgZmlsZS4gQnkgZGVmYXVsdCwgdGhlIGRlcHMgYXJlIHdyaXR0ZW4uCisgKiBAdHlw
ZSB7Ym9vbGVhbnx1bmRlZmluZWR9CisgKi8KK2dvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQUzsK
KworCisvKioKKyAqIEEgZnVuY3Rpb24gdG8gaW1wb3J0IGEgc2luZ2xlIHNjcmlwdC4gVGhpcyBp
cyBtZWFudCB0byBiZSBvdmVycmlkZGVuIHdoZW4KKyAqIENsb3N1cmUgaXMgYmVpbmcgcnVuIGlu
IG5vbi1IVE1MIGNvbnRleHRzLCBzdWNoIGFzIHdlYiB3b3JrZXJzLiBJdCdzIGRlZmluZWQKKyAq
IGluIHRoZSBnbG9iYWwgc2NvcGUgc28gdGhhdCBpdCBjYW4gYmUgc2V0IGJlZm9yZSBiYXNlLmpz
IGlzIGxvYWRlZCwgd2hpY2gKKyAqIGFsbG93cyBkZXBzLmpzIHRvIGJlIGltcG9ydGVkIHByb3Bl
cmx5LgorICoKKyAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgdGhlIHNjcmlwdCBzb3VyY2UsIHdo
aWNoIGlzIGEgcmVsYXRpdmUgVVJJLiBJdCBzaG91bGQKKyAqIHJldHVybiB0cnVlIGlmIHRoZSBz
Y3JpcHQgd2FzIGltcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuCisgKiBAdHlwZSB7KGZ1bmN0aW9u
KHN0cmluZyk6IGJvb2xlYW4pfHVuZGVmaW5lZH0KKyAqLworZ29vZy5nbG9iYWwuQ0xPU1VSRV9J
TVBPUlRfU0NSSVBUOworCisKKy8qKgorICogTnVsbCBmdW5jdGlvbiB1c2VkIGZvciBkZWZhdWx0
IHZhbHVlcyBvZiBjYWxsYmFja3MsIGV0Yy4KKyAqIEByZXR1cm4ge3ZvaWR9IE5vdGhpbmcuCisg
Ki8KK2dvb2cubnVsbEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7fTsKKworCisvKioKKyAqIFRoZSBp
ZGVudGl0eSBmdW5jdGlvbi4gUmV0dXJucyBpdHMgZmlyc3QgYXJndW1lbnQuCisgKgorICogQHBh
cmFtIHsqPX0gb3B0X3JldHVyblZhbHVlIFRoZSBzaW5nbGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJl
dHVybmVkLgorICogQHBhcmFtIHsuLi4qfSB2YXJfYXJncyBPcHRpb25hbCB0cmFpbGluZyBhcmd1
bWVudHMuIFRoZXNlIGFyZSBpZ25vcmVkLgorICogQHJldHVybiB7P30gVGhlIGZpcnN0IGFyZ3Vt
ZW50LiBXZSBjYW4ndCBrbm93IHRoZSB0eXBlIC0tIGp1c3QgcGFzcyBpdCBhbG9uZworICogICAg
ICB3aXRob3V0IHR5cGUuCisgKiBAZGVwcmVjYXRlZCBVc2UgZ29vZy5mdW5jdGlvbnMuaWRlbnRp
dHkgaW5zdGVhZC4KKyAqLworZ29vZy5pZGVudGl0eUZ1bmN0aW9uID0gZnVuY3Rpb24ob3B0X3Jl
dHVyblZhbHVlLCB2YXJfYXJncykgeworICByZXR1cm4gb3B0X3JldHVyblZhbHVlOworfTsKKwor
CisvKioKKyAqIFdoZW4gZGVmaW5pbmcgYSBjbGFzcyBGb28gd2l0aCBhbiBhYnN0cmFjdCBtZXRo
b2QgYmFyKCksIHlvdSBjYW4gZG86CisgKiBGb28ucHJvdG90eXBlLmJhciA9IGdvb2cuYWJzdHJh
Y3RNZXRob2QKKyAqCisgKiBOb3cgaWYgYSBzdWJjbGFzcyBvZiBGb28gZmFpbHMgdG8gb3ZlcnJp
ZGUgYmFyKCksIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duCisgKiB3aGVuIGJhcigpIGlzIGludm9r
ZWQuCisgKgorICogTm90ZTogVGhpcyBkb2VzIG5vdCB0YWtlIHRoZSBuYW1lIG9mIHRoZSBmdW5j
dGlvbiB0byBvdmVycmlkZSBhcyBhbiBhcmd1bWVudAorICogYmVjYXVzZSB0aGF0IHdvdWxkIG1h
a2UgaXQgbW9yZSBkaWZmaWN1bHQgdG8gb2JmdXNjYXRlIG91ciBKYXZhU2NyaXB0IGNvZGUuCisg
KgorICogQHR5cGUgeyFGdW5jdGlvbn0KKyAqIEB0aHJvd3Mge0Vycm9yfSB3aGVuIGludm9rZWQg
dG8gaW5kaWNhdGUgdGhlIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGRlbi4KKyAqLworZ29vZy5h
YnN0cmFjdE1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICB0aHJvdyBFcnJvcigndW5pbXBsZW1lbnRl
ZCBhYnN0cmFjdCBtZXRob2QnKTsKK307CisKKworLyoqCisgKiBBZGRzIGEge0Bjb2RlIGdldElu
c3RhbmNlfSBzdGF0aWMgbWV0aG9kIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKKyAqIGlu
c3RhbmNlIG9iamVjdC4KKyAqIEBwYXJhbSB7IUZ1bmN0aW9ufSBjdG9yIFRoZSBjb25zdHJ1Y3Rv
ciBmb3IgdGhlIGNsYXNzIHRvIGFkZCB0aGUgc3RhdGljCisgKiAgICAgbWV0aG9kIHRvLgorICov
Citnb29nLmFkZFNpbmdsZXRvbkdldHRlciA9IGZ1bmN0aW9uKGN0b3IpIHsKKyAgY3Rvci5nZXRJ
bnN0YW5jZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChjdG9yLmluc3RhbmNlXykgeworICAgICAg
cmV0dXJuIGN0b3IuaW5zdGFuY2VfOworICAgIH0KKyAgICBpZiAoZ29vZy5ERUJVRykgeworICAg
ICAgLy8gTk9URTogSlNDb21waWxlciBjYW4ndCBvcHRpbWl6ZSBhd2F5IEFycmF5I3B1c2guCisg
ICAgICBnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xl
dG9uc18ubGVuZ3RoXSA9IGN0b3I7CisgICAgfQorICAgIHJldHVybiBjdG9yLmluc3RhbmNlXyA9
IG5ldyBjdG9yOworICB9OworfTsKKworCisvKioKKyAqIEFsbCBzaW5nbGV0b24gY2xhc3NlcyB0
aGF0IGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQsIGZvciB0ZXN0aW5nLiBEb24ndCByZWFkCisgKiBp
dCBkaXJlY3RseSwgdXNlIHRoZSB7QGNvZGUgZ29vZy50ZXN0aW5nLnNpbmdsZXRvbn0gbW9kdWxl
LiBUaGUgY29tcGlsZXIKKyAqIHJlbW92ZXMgdGhpcyB2YXJpYWJsZSBpZiB1bnVzZWQuCisgKiBA
dHlwZSB7IUFycmF5PCFGdW5jdGlvbj59CisgKiBAcHJpdmF0ZQorICovCitnb29nLmluc3RhbnRp
YXRlZFNpbmdsZXRvbnNfID0gW107CisKKworLyoqCisgKiBAZGVmaW5lIHtib29sZWFufSBXaGV0
aGVyIHRvIGxvYWQgZ29vZy5tb2R1bGVzIHVzaW5nIHtAY29kZSBldmFsfSB3aGVuIHVzaW5nCisg
KiB0aGUgZGVidWcgbG9hZGVyLiAgVGhpcyBwcm92aWRlcyBhIGJldHRlciBkZWJ1Z2dpbmcgZXhw
ZXJpZW5jZSBhcyB0aGUKKyAqIHNvdXJjZSBpcyB1bm1vZGlmaWVkIGFuZCBjYW4gYmUgZWRpdGVk
IHVzaW5nIENocm9tZSBXb3Jrc3BhY2VzIG9yIHNpbWlsYXIuCisgKiBIb3dldmVyIGluIHNvbWUg
ZW52aXJvbm1lbnRzIHRoZSB1c2Ugb2Yge0Bjb2RlIGV2YWx9IGlzIGJhbm5lZAorICogc28gd2Ug
cHJvdmlkZSBhbiBhbHRlcm5hdGl2ZS4KKyAqLworZ29vZy5kZWZpbmUoJ2dvb2cuTE9BRF9NT0RV
TEVfVVNJTkdfRVZBTCcsIHRydWUpOworCisKKy8qKgorICogQGRlZmluZSB7Ym9vbGVhbn0gV2hl
dGhlciB0aGUgZXhwb3J0cyBvZiBnb29nLm1vZHVsZXMgc2hvdWxkIGJlIHNlYWxlZCB3aGVuCisg
KiBwb3NzaWJsZS4KKyAqLworZ29vZy5kZWZpbmUoJ2dvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUycs
IGdvb2cuREVCVUcpOworCisKKy8qKgorICogVGhlIHJlZ2lzdHJ5IG9mIGluaXRpYWxpemVkIG1v
ZHVsZXM6CisgKiB0aGUgbW9kdWxlIGlkZW50aWZpZXIgdG8gbW9kdWxlIGV4cG9ydHMgbWFwLgor
ICogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgPz59CisgKi8KK2dvb2cubG9hZGVk
TW9kdWxlc18gPSB7fTsKKworCisvKioKKyAqIFRydWUgaWYgZ29vZy5kZXBlbmRlbmNpZXNfIGlz
IGF2YWlsYWJsZS4KKyAqIEBjb25zdCB7Ym9vbGVhbn0KKyAqLworZ29vZy5ERVBFTkRFTkNJRVNf
RU5BQkxFRCA9ICFDT01QSUxFRCAmJiBnb29nLkVOQUJMRV9ERUJVR19MT0FERVI7CisKKworaWYg
KGdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQpIHsKKyAgLyoqCisgICAqIE9iamVjdCB1c2VkIHRv
IGtlZXAgdHJhY2sgb2YgdXJscyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkLiBUaGlzIHJl
Y29yZAorICAgKiBhbGxvd3MgdGhlIHByZXZlbnRpb24gb2YgY2lyY3VsYXIgZGVwZW5kZW5jaWVz
LgorICAgKiBAcHJpdmF0ZSB7IU9iamVjdDxzdHJpbmcsIGJvb2xlYW4+fQorICAgKi8KKyAgZ29v
Zy5pbmNsdWRlZF8gPSB7fTsKKworCisgIC8qKgorICAgKiBUaGlzIG9iamVjdCBpcyB1c2VkIHRv
IGtlZXAgdHJhY2sgb2YgZGVwZW5kZW5jaWVzIGFuZCBvdGhlciBkYXRhIHRoYXQgaXMKKyAgICog
dXNlZCBmb3IgbG9hZGluZyBzY3JpcHRzLgorICAgKiBAcHJpdmF0ZQorICAgKiBAdHlwZSB7ewor
ICAgKiAgIHBhdGhJc01vZHVsZTogIU9iamVjdDxzdHJpbmcsIGJvb2xlYW4+LAorICAgKiAgIG5h
bWVUb1BhdGg6ICFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+LAorICAgKiAgIHJlcXVpcmVzOiAhT2Jq
ZWN0PHN0cmluZywgIU9iamVjdDxzdHJpbmcsIGJvb2xlYW4+PiwKKyAgICogICB2aXNpdGVkOiAh
T2JqZWN0PHN0cmluZywgYm9vbGVhbj4sCisgICAqICAgd3JpdHRlbjogIU9iamVjdDxzdHJpbmcs
IGJvb2xlYW4+LAorICAgKiAgIGRlZmVycmVkOiAhT2JqZWN0PHN0cmluZywgc3RyaW5nPgorICAg
KiB9fQorICAgKi8KKyAgZ29vZy5kZXBlbmRlbmNpZXNfID0geworICAgIHBhdGhJc01vZHVsZTog
e30sIC8vIDEgdG8gMQorCisgICAgbmFtZVRvUGF0aDoge30sIC8vIDEgdG8gMQorCisgICAgcmVx
dWlyZXM6IHt9LCAvLyAxIHRvIG1hbnkKKworICAgIC8vIFVzZWQgd2hlbiByZXNvbHZpbmcgZGVw
ZW5kZW5jaWVzIHRvIHByZXZlbnQgdXMgZnJvbSB2aXNpdGluZyBmaWxlIHR3aWNlLgorICAgIHZp
c2l0ZWQ6IHt9LAorCisgICAgd3JpdHRlbjoge30sIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBz
Y3JpcHQgZmlsZXMgd2UgaGF2ZSB3cml0dGVuLgorCisgICAgZGVmZXJyZWQ6IHt9IC8vIFVzZWQg
dG8gdHJhY2sgZGVmZXJyZWQgbW9kdWxlIGV2YWx1YXRpb25zIGluIG9sZCBJRXMKKyAgfTsKKwor
CisgIC8qKgorICAgKiBUcmllcyB0byBkZXRlY3Qgd2hldGhlciBpcyBpbiB0aGUgY29udGV4dCBv
ZiBhbiBIVE1MIGRvY3VtZW50LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGl0IGxv
b2tzIGxpa2UgSFRNTCBkb2N1bWVudC4KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cuaW5I
dG1sRG9jdW1lbnRfID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFsLmRv
Y3VtZW50OworICAgIHJldHVybiB0eXBlb2YgZG9jICE9ICd1bmRlZmluZWQnICYmCisgICAgICAg
ICAgICd3cml0ZScgaW4gZG9jOyAgLy8gWFVMRG9jdW1lbnQgbWlzc2VzIHdyaXRlLgorICB9Owor
CisKKyAgLyoqCisgICAqIFRyaWVzIHRvIGRldGVjdCB0aGUgYmFzZSBwYXRoIG9mIGJhc2UuanMg
c2NyaXB0IHRoYXQgYm9vdHN0cmFwcyBDbG9zdXJlLgorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAg
Z29vZy5maW5kQmFzZVBhdGhfID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKGdvb2cuaXNEZWYoZ29v
Zy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEgpKSB7CisgICAgICBnb29nLmJhc2VQYXRoID0gZ29v
Zy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEg7CisgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlm
ICghZ29vZy5pbkh0bWxEb2N1bWVudF8oKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2
YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CisgICAgdmFyIHNjcmlwdHMgPSBkb2MuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ1NDUklQVCcpOworICAgIC8vIFNlYXJjaCBiYWNrd2FyZHMgc2lu
Y2UgdGhlIGN1cnJlbnQgc2NyaXB0IGlzIGluIGFsbW9zdCBhbGwgY2FzZXMgdGhlIG9uZQorICAg
IC8vIHRoYXQgaGFzIGJhc2UuanMuCisgICAgZm9yICh2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0g
MTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUgeyFIVE1MU2Ny
aXB0RWxlbWVudH0gKi8gKHNjcmlwdHNbaV0pOworICAgICAgdmFyIHNyYyA9IHNjcmlwdC5zcmM7
CisgICAgICB2YXIgcW1hcmsgPSBzcmMubGFzdEluZGV4T2YoJz8nKTsKKyAgICAgIHZhciBsID0g
cW1hcmsgPT0gLTEgPyBzcmMubGVuZ3RoIDogcW1hcms7CisgICAgICBpZiAoc3JjLnN1YnN0cihs
IC0gNywgNykgPT0gJ2Jhc2UuanMnKSB7CisgICAgICAgIGdvb2cuYmFzZVBhdGggPSBzcmMuc3Vi
c3RyKDAsIGwgLSA3KTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKyAgfTsKKwor
CisgIC8qKgorICAgKiBJbXBvcnRzIGEgc2NyaXB0IGlmLCBhbmQgb25seSBpZiwgdGhhdCBzY3Jp
cHQgaGFzbid0IGFscmVhZHkgYmVlbiBpbXBvcnRlZC4KKyAgICogKE11c3QgYmUgY2FsbGVkIGF0
IGV4ZWN1dGlvbiB0aW1lKQorICAgKiBAcGFyYW0ge3N0cmluZ30gc3JjIFNjcmlwdCBzb3VyY2Uu
CisgICAqIEBwYXJhbSB7c3RyaW5nPX0gb3B0X3NvdXJjZVRleHQgVGhlIG9wdGlvbmFsbHkgc291
cmNlIHRleHQgdG8gZXZhbHVhdGUKKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cuaW1wb3J0
U2NyaXB0XyA9IGZ1bmN0aW9uKHNyYywgb3B0X3NvdXJjZVRleHQpIHsKKyAgICB2YXIgaW1wb3J0
U2NyaXB0ID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIHx8CisgICAgICAgIGdv
b2cud3JpdGVTY3JpcHRUYWdfOworICAgIGlmIChpbXBvcnRTY3JpcHQoc3JjLCBvcHRfc291cmNl
VGV4dCkpIHsKKyAgICAgIGdvb2cuZGVwZW5kZW5jaWVzXy53cml0dGVuW3NyY10gPSB0cnVlOwor
ICAgIH0KKyAgfTsKKworCisgIC8qKiBAY29uc3QgQHByaXZhdGUge2Jvb2xlYW59ICovCisgIGdv
b2cuSVNfT0xEX0lFXyA9ICEhKCFnb29nLmdsb2JhbC5hdG9iICYmIGdvb2cuZ2xvYmFsLmRvY3Vt
ZW50ICYmCisgICAgICBnb29nLmdsb2JhbC5kb2N1bWVudC5hbGwpOworCisKKyAgLyoqCisgICAq
IEdpdmVuIGEgVVJMIGluaXRpYXRlIHJldHJpZXZhbCBhbmQgZXhlY3V0aW9uIG9mIHRoZSBtb2R1
bGUuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgU2NyaXB0IHNvdXJjZSBVUkwuCisgICAqIEBw
cml2YXRlCisgICAqLworICBnb29nLmltcG9ydE1vZHVsZV8gPSBmdW5jdGlvbihzcmMpIHsKKyAg
ICAvLyBJbiBhbiBhdHRlbXB0IHRvIGtlZXAgYnJvd3NlcnMgZnJvbSB0aW1pbmcgb3V0IGxvYWRp
bmcgc2NyaXB0cyB1c2luZworICAgIC8vIHN5bmNocm9ub3VzIFhIUnMsIHB1dCBlYWNoIGxvYWQg
aW4gaXRzIG93biBzY3JpcHQgYmxvY2suCisgICAgdmFyIGJvb3RzdHJhcCA9ICdnb29nLnJldHJp
ZXZlQW5kRXhlY01vZHVsZV8oIicgKyBzcmMgKyAnIik7JzsKKworICAgIGlmIChnb29nLmltcG9y
dFNjcmlwdF8oJycsIGJvb3RzdHJhcCkpIHsKKyAgICAgIGdvb2cuZGVwZW5kZW5jaWVzXy53cml0
dGVuW3NyY10gPSB0cnVlOworICAgIH0KKyAgfTsKKworCisgIC8qKiBAcHJpdmF0ZSB7IUFycmF5
PHN0cmluZz59ICovCisgIGdvb2cucXVldWVkTW9kdWxlc18gPSBbXTsKKworCisgIC8qKgorICAg
KiBSZXR1cm4gYW4gYXBwcm9wcmlhdGUgbW9kdWxlIHRleHQuIFN1aXRhYmxlIHRvIGluc2VydCBp
bnRvCisgICAqIGEgc2NyaXB0IHRhZyAodGhhdCBpcyB1bmVzY2FwZWQpLgorICAgKiBAcGFyYW0g
e3N0cmluZ30gc3JjVXJsCisgICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JpcHRUZXh0CisgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cud3JhcE1vZHVsZV8g
PSBmdW5jdGlvbihzcmNVcmwsIHNjcmlwdFRleHQpIHsKKyAgICBpZiAoIWdvb2cuTE9BRF9NT0RV
TEVfVVNJTkdfRVZBTCB8fCAhZ29vZy5pc0RlZihnb29nLmdsb2JhbC5KU09OKSkgeworICAgICAg
cmV0dXJuICcnICsKKyAgICAgICAgICAnZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMp
IHsnICsKKyAgICAgICAgICAnInVzZSBzdHJpY3QiOycgKworICAgICAgICAgIHNjcmlwdFRleHQg
KworICAgICAgICAgICdcbicgKyAvLyB0ZXJtaW5hdGUgYW55IHRyYWlsaW5nIHNpbmdsZSBsaW5l
IGNvbW1lbnQuCisgICAgICAgICAgJztyZXR1cm4gZXhwb3J0cycgKworICAgICAgICAgICd9KTsn
ICsKKyAgICAgICAgICAnXG4vLyMgc291cmNlVVJMPScgKyBzcmNVcmwgKyAnXG4nOworICAgIH0g
ZWxzZSB7CisgICAgICByZXR1cm4gJycgKworICAgICAgICAgICdnb29nLmxvYWRNb2R1bGUoJyAr
CisgICAgICAgICAgZ29vZy5nbG9iYWwuSlNPTi5zdHJpbmdpZnkoCisgICAgICAgICAgICAgIHNj
cmlwdFRleHQgKyAnXG4vLyMgc291cmNlVVJMPScgKyBzcmNVcmwgKyAnXG4nKSArCisgICAgICAg
ICAgJyk7JzsKKyAgICB9CisgIH07CisKKyAgLy8gT24gSUU5IGFuZCBlYXJsaWVyLCBpdCBpcyBu
ZWNlc3NhcnkgdG8gaGFuZGxlCisgIC8vIGRlZmVycmVkIG1vZHVsZSBsb2Fkcy4gSW4gbGF0ZXIg
YnJvd3NlcnMsIHRoZQorICAvLyBjb2RlIHRvIGJlIGV2YWx1YXRlZCBpcyBzaW1wbHkgaW5zZXJ0
ZWQgYXMgYSBzY3JpcHQKKyAgLy8gYmxvY2sgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIFRvIGV2YWwg
ZGVmZXJyZWQKKyAgLy8gY29kZSBhdCB0aGUgcmlnaHQgdGltZSwgd2UgcGlnZ3kgYmFjayBvbiBn
b29nLnJlcXVpcmUgdG8gY2FsbAorICAvLyBnb29nLm1heWJlUHJvY2Vzc0RlZmVycmVkRGVwXy4K
KyAgLy8KKyAgLy8gVGhlIGdvb2cucmVxdWlyZXMgYXJlIHVzZWQgYm90aCB0byBib290c3RyYXAK
KyAgLy8gdGhlIGxvYWRpbmcgcHJvY2VzcyAod2hlbiBubyBkZXBzIGFyZSBhdmFpbGFibGUpIGFu
ZAorICAvLyBkZWNsYXJlIHRoYXQgdGhleSBzaG91bGQgYmUgYXZhaWxhYmxlLgorICAvLworICAv
LyBIZXJlIHdlIGV2YWwgdGhlIHNvdXJjZXMsIGlmIGFsbCB0aGUgZGVwcyBhcmUgYXZhaWxhYmxl
CisgIC8vIGVpdGhlciBhbHJlYWR5IGV2YWwnZCBvciBnb29nLnJlcXVpcmUnZC4gIFRoaXMgd2ls
bAorICAvLyBiZSB0aGUgY2FzZSB3aGVuIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGhhdmUgYWxyZWFk
eQorICAvLyBiZWVuIGxvYWRlZCwgYW5kIHRoZSBkZXBlbmRlbnQgbW9kdWxlIGlzIGxvYWRlZC4K
KyAgLy8KKyAgLy8gQnV0IHRoaXMgYWxvbmUgaXNuJ3Qgc3VmZmljaWVudCBiZWNhdXNlIGl0IGlz
IGFsc28KKyAgLy8gbmVjZXNzYXJ5IHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBu
byByb290CisgIC8vIHRoYXQgaXMgbm90IGRlZmVycmVkLiAgRm9yIHRoYXQgdGhlcmUgd2UgcmVn
aXN0ZXIgZm9yIGFuIGV2ZW50CisgIC8vIGFuZCB0cmlnZ2VyIGdvb2cubG9hZFF1ZXVlZE1vZHVs
ZXNfIGhhbmRsZSBhbnkgcmVtYWluaW5nIGRlZmVycmVkCisgIC8vIGV2YWx1YXRpb25zLgorCisg
IC8qKgorICAgKiBIYW5kbGUgYW55IHJlbWFpbmluZyBkZWZlcnJlZCBnb29nLm1vZHVsZSBldmFs
cy4KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cubG9hZFF1ZXVlZE1vZHVsZXNfID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIGNvdW50ID0gZ29vZy5xdWV1ZWRNb2R1bGVzXy5sZW5ndGg7Cisg
ICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgdmFyIHF1ZXVlID0gZ29vZy5xdWV1ZWRNb2R1bGVz
XzsKKyAgICAgIGdvb2cucXVldWVkTW9kdWxlc18gPSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICB2YXIgcGF0aCA9IHF1ZXVlW2ldOworICAgICAg
ICBnb29nLm1heWJlUHJvY2Vzc0RlZmVycmVkUGF0aF8ocGF0aCk7CisgICAgICB9CisgICAgfQor
ICB9OworCisKKyAgLyoqCisgICAqIEV2YWwgdGhlIG5hbWVkIG1vZHVsZSBpZiBpdHMgZGVwZW5k
ZW5jaWVzIGFyZQorICAgKiBhdmFpbGFibGUuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRo
ZSBtb2R1bGUgdG8gbG9hZC4KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cubWF5YmVQcm9j
ZXNzRGVmZXJyZWREZXBfID0gZnVuY3Rpb24obmFtZSkgeworICAgIGlmIChnb29nLmlzRGVmZXJy
ZWRNb2R1bGVfKG5hbWUpICYmCisgICAgICAgIGdvb2cuYWxsRGVwc0FyZUF2YWlsYWJsZV8obmFt
ZSkpIHsKKyAgICAgIHZhciBwYXRoID0gZ29vZy5nZXRQYXRoRnJvbURlcHNfKG5hbWUpOworICAg
ICAgZ29vZy5tYXliZVByb2Nlc3NEZWZlcnJlZFBhdGhfKGdvb2cuYmFzZVBhdGggKyBwYXRoKTsK
KyAgICB9CisgIH07CisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtb2R1
bGUgdG8gY2hlY2suCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5hbWUgcmVw
cmVzZW50cyBhCisgICAqICAgICBtb2R1bGUgd2hvc2UgZXZhbHVhdGlvbiBoYXMgYmVlbiBkZWZl
cnJlZC4KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cuaXNEZWZlcnJlZE1vZHVsZV8gPSBm
dW5jdGlvbihuYW1lKSB7CisgICAgdmFyIHBhdGggPSBnb29nLmdldFBhdGhGcm9tRGVwc18obmFt
ZSk7CisgICAgaWYgKHBhdGggJiYgZ29vZy5kZXBlbmRlbmNpZXNfLnBhdGhJc01vZHVsZVtwYXRo
XSkgeworICAgICAgdmFyIGFic3BhdGggPSBnb29nLmJhc2VQYXRoICsgcGF0aDsKKyAgICAgIHJl
dHVybiAoYWJzcGF0aCkgaW4gZ29vZy5kZXBlbmRlbmNpZXNfLmRlZmVycmVkOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CisgIH07CisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IFRoZSBtb2R1bGUgdG8gY2hlY2suCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhl
IG5hbWUgcmVwcmVzZW50cyBhCisgICAqICAgICBtb2R1bGUgd2hvc2UgZGVjbGFyZWQgZGVwZW5k
ZW5jaWVzIGhhdmUgYWxsIGJlZW4gbG9hZGVkCisgICAqICAgICAoZXZhbCdkIG9yIGEgZGVmZXJy
ZWQgbW9kdWxlIGxvYWQpCisgICAqIEBwcml2YXRlCisgICAqLworICBnb29nLmFsbERlcHNBcmVB
dmFpbGFibGVfID0gZnVuY3Rpb24obmFtZSkgeworICAgIHZhciBwYXRoID0gZ29vZy5nZXRQYXRo
RnJvbURlcHNfKG5hbWUpOworICAgIGlmIChwYXRoICYmIChwYXRoIGluIGdvb2cuZGVwZW5kZW5j
aWVzXy5yZXF1aXJlcykpIHsKKyAgICAgIGZvciAodmFyIHJlcXVpcmVOYW1lIGluIGdvb2cuZGVw
ZW5kZW5jaWVzXy5yZXF1aXJlc1twYXRoXSkgeworICAgICAgICBpZiAoIWdvb2cuaXNQcm92aWRl
ZF8ocmVxdWlyZU5hbWUpICYmCisgICAgICAgICAgICAhZ29vZy5pc0RlZmVycmVkTW9kdWxlXyhy
ZXF1aXJlTmFtZSkpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH07CisKKworICAvKioKKyAgICogQHBhcmFt
IHtzdHJpbmd9IGFic3BhdGgKKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cubWF5YmVQcm9j
ZXNzRGVmZXJyZWRQYXRoXyA9IGZ1bmN0aW9uKGFic3BhdGgpIHsKKyAgICBpZiAoYWJzcGF0aCBp
biBnb29nLmRlcGVuZGVuY2llc18uZGVmZXJyZWQpIHsKKyAgICAgIHZhciBzcmMgPSBnb29nLmRl
cGVuZGVuY2llc18uZGVmZXJyZWRbYWJzcGF0aF07CisgICAgICBkZWxldGUgZ29vZy5kZXBlbmRl
bmNpZXNfLmRlZmVycmVkW2Fic3BhdGhdOworICAgICAgZ29vZy5nbG9iYWxFdmFsKHNyYyk7Cisg
ICAgfQorICB9OworCisKKyAgLyoqCisgICAqIEBwYXJhbSB7ZnVuY3Rpb24oPyk6P3xzdHJpbmd9
IG1vZHVsZURlZiBUaGUgbW9kdWxlIGRlZmluaXRpb24uCisgICAqLworICBnb29nLmxvYWRNb2R1
bGUgPSBmdW5jdGlvbihtb2R1bGVEZWYpIHsKKyAgICAvLyBOT1RFOiB3ZSBhbGxvdyBmdW5jdGlv
biBkZWZpbml0aW9ucyB0byBiZSBlaXRoZXIgaW4gdGhlIGZyb20KKyAgICAvLyBvZiBhIHN0cmlu
ZyB0byBldmFsICh3aGljaCBrZWVwcyB0aGUgb3JpZ2luYWwgc291cmNlIGludGFjdCkgb3IKKyAg
ICAvLyBpbiBhIGV2YWwgZm9yYmlkZGVuIGVudmlyb25tZW50IChDU1ApIHdlIGFsbG93IGEgZnVu
Y3Rpb24gZGVmaW5pdGlvbgorICAgIC8vIHdoaWNoIGluIGl0cyBib2R5IG11c3QgY2FsbCB7QGNv
ZGUgZ29vZy5tb2R1bGV9LCBhbmQgcmV0dXJuIHRoZSBleHBvcnRzCisgICAgLy8gb2YgdGhlIG1v
ZHVsZS4KKyAgICB2YXIgcHJldmlvdXNTdGF0ZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfOwor
ICAgIHRyeSB7CisgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IHsKKyAgICAgICAgbW9k
dWxlTmFtZTogdW5kZWZpbmVkLCBkZWNsYXJlVGVzdE1ldGhvZHM6IGZhbHNlfTsKKyAgICAgIHZh
ciBleHBvcnRzOworICAgICAgaWYgKGdvb2cuaXNGdW5jdGlvbihtb2R1bGVEZWYpKSB7CisgICAg
ICAgIGV4cG9ydHMgPSBtb2R1bGVEZWYuY2FsbChnb29nLmdsb2JhbCwge30pOworICAgICAgfSBl
bHNlIGlmIChnb29nLmlzU3RyaW5nKG1vZHVsZURlZikpIHsKKyAgICAgICAgZXhwb3J0cyA9IGdv
b2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwoZ29vZy5nbG9iYWwsIG1vZHVsZURlZik7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBtb2R1bGUgZGVmaW5p
dGlvbicpOworICAgICAgfQorCisgICAgICB2YXIgbW9kdWxlTmFtZSA9IGdvb2cubW9kdWxlTG9h
ZGVyU3RhdGVfLm1vZHVsZU5hbWU7CisgICAgICBpZiAoIWdvb2cuaXNTdHJpbmcobW9kdWxlTmFt
ZSkgfHwgIW1vZHVsZU5hbWUpIHsKKyAgICAgICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxl
IG5hbWUgXCInICsgbW9kdWxlTmFtZSArICdcIicpOworICAgICAgfQorCisgICAgICAvLyBEb24n
dCBzZWFsIGxlZ2FjeSBuYW1lc3BhY2VzIGFzIHRoZXkgbWF5IGJlIHVzZXMgYXMgYSBwYXJlbnQg
b2YKKyAgICAgIC8vIGFub3RoZXIgbmFtZXNwYWNlCisgICAgICBpZiAoZ29vZy5tb2R1bGVMb2Fk
ZXJTdGF0ZV8uZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZSkgeworICAgICAgICBnb29nLmNvbnN0cnVj
dE5hbWVzcGFjZV8obW9kdWxlTmFtZSwgZXhwb3J0cyk7CisgICAgICB9IGVsc2UgaWYgKGdvb2cu
U0VBTF9NT0RVTEVfRVhQT1JUUyAmJiBPYmplY3Quc2VhbCkgeworICAgICAgICBPYmplY3Quc2Vh
bChleHBvcnRzKTsKKyAgICAgIH0KKworICAgICAgZ29vZy5sb2FkZWRNb2R1bGVzX1ttb2R1bGVO
YW1lXSA9IGV4cG9ydHM7CisgICAgICBpZiAoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8uZGVjbGFy
ZVRlc3RNZXRob2RzKSB7CisgICAgICAgIGZvciAodmFyIGVudHJ5IGluIGV4cG9ydHMpIHsKKyAg
ICAgICAgICBpZiAoZW50cnkuaW5kZXhPZigndGVzdCcsIDApID09PSAwIHx8CisgICAgICAgICAg
ICAgIGVudHJ5ID09ICd0ZWFyRG93bicgfHwKKyAgICAgICAgICAgICAgZW50cnkgPT0gJ3NldFVw
JyB8fAorICAgICAgICAgICAgICBlbnRyeSA9PSAnc2V0VXBQYWdlJyB8fAorICAgICAgICAgICAg
ICBlbnRyeSA9PSAndGVhckRvd25QYWdlJykgeworICAgICAgICAgICAgZ29vZy5nbG9iYWxbZW50
cnldID0gZXhwb3J0c1tlbnRyeV07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgfSBmaW5hbGx5IHsKKyAgICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gcHJldmlvdXNT
dGF0ZTsKKyAgICB9CisgIH07CisKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJj
ZQorICAgKiBAcmV0dXJuIHshT2JqZWN0fQorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgZ29vZy5s
b2FkTW9kdWxlRnJvbVNvdXJjZV8gPSBmdW5jdGlvbihzb3VyY2UpIHsKKyAgICAvLyBOT1RFOiB3
ZSBhdm9pZCBkZWNsYXJpbmcgcGFyYW1ldGVycyBvciBsb2NhbCB2YXJpYWJsZXMgaGVyZSB0byBh
dm9pZAorICAgIC8vIG1hc2tpbmcgZ2xvYmFscyBvciBsZWFraW5nIHZhbHVlcyBpbnRvIHRoZSBt
b2R1bGUgZGVmaW5pdGlvbi4KKyAgICAndXNlIHN0cmljdCc7CisgICAgdmFyIGV4cG9ydHMgPSB7
fTsKKyAgICBldmFsKGFyZ3VtZW50c1swXSk7CisgICAgcmV0dXJuIGV4cG9ydHM7CisgIH07CisK
KworICAvKioKKyAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltcG9ydCBm
dW5jdGlvbi4gV3JpdGVzIGEgc2NyaXB0IHRhZyB0bworICAgKiBpbXBvcnQgdGhlIHNjcmlwdC4K
KyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHNyYyBUaGUgc2NyaXB0IHVybC4KKyAgICogQHBh
cmFtIHtzdHJpbmc9fSBvcHRfc291cmNlVGV4dCBUaGUgb3B0aW9uYWxseSBzb3VyY2UgdGV4dCB0
byBldmFsdWF0ZQorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzY3JpcHQgd2Fz
IGltcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcml2YXRlCisgICAqLworICBnb29n
LndyaXRlU2NyaXB0VGFnXyA9IGZ1bmN0aW9uKHNyYywgb3B0X3NvdXJjZVRleHQpIHsKKyAgICBp
ZiAoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSkgeworICAgICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFs
LmRvY3VtZW50OworCisgICAgICAvLyBJZiB0aGUgdXNlciB0cmllcyB0byByZXF1aXJlIGEgbmV3
IHN5bWJvbCBhZnRlciBkb2N1bWVudCBsb2FkLAorICAgICAgLy8gc29tZXRoaW5nIGhhcyBnb25l
IHRlcnJpYmx5IHdyb25nLiBEb2luZyBhIGRvY3VtZW50LndyaXRlIHdvdWxkCisgICAgICAvLyB3
aXBlIG91dCB0aGUgcGFnZS4KKyAgICAgIGlmIChkb2MucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUn
KSB7CisgICAgICAgIC8vIENlcnRhaW4gdGVzdCBmcmFtZXdvcmtzIGxvYWQgYmFzZS5qcyBtdWx0
aXBsZSB0aW1lcywgd2hpY2ggdHJpZXMKKyAgICAgICAgLy8gdG8gd3JpdGUgZGVwcy5qcyBlYWNo
IHRpbWUuIElmIHRoYXQgaGFwcGVucywganVzdCBmYWlsIHNpbGVudGx5LgorICAgICAgICAvLyBU
aGVzZSBmcmFtZXdvcmtzIHdpcGUgdGhlIHBhZ2UgYmV0d2VlbiBlYWNoIGxvYWQgb2YgYmFzZS5q
cywgc28gdGhpcworICAgICAgICAvLyBpcyBPSy4KKyAgICAgICAgdmFyIGlzRGVwcyA9IC9cYmRl
cHMuanMkLy50ZXN0KHNyYyk7CisgICAgICAgIGlmIChpc0RlcHMpIHsKKyAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5v
dCB3cml0ZSAiJyArIHNyYyArICciIGFmdGVyIGRvY3VtZW50IGxvYWQnKTsKKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICB2YXIgaXNPbGRJRSA9IGdvb2cuSVNfT0xEX0lFXzsKKworICAgICAg
aWYgKG9wdF9zb3VyY2VUZXh0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKCFpc09sZElF
KSB7CisgICAgICAgICAgZG9jLndyaXRlKAorICAgICAgICAgICAgICAnPHNjcmlwdCB0eXBlPSJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9IicgKworICAgICAgICAgICAgICAgICAgc3JjICsg
JyI+PC8nICsgJ3NjcmlwdD4nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YXIgc3Rh
dGUgPSAiIG9ucmVhZHlzdGF0ZWNoYW5nZT0nZ29vZy5vblNjcmlwdExvYWRfKHRoaXMsICIgKwor
ICAgICAgICAgICAgICArK2dvb2cubGFzdE5vbk1vZHVsZVNjcmlwdEluZGV4XyArICIpJyAiOwor
ICAgICAgICAgIGRvYy53cml0ZSgKKyAgICAgICAgICAgICAgJzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgc3JjPSInICsKKyAgICAgICAgICAgICAgICAgIHNyYyArICciJyAr
IHN0YXRlICsgJz48LycgKyAnc2NyaXB0PicpOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBkb2Mud3JpdGUoCisgICAgICAgICAgICAnPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Ij4nICsKKyAgICAgICAgICAgIG9wdF9zb3VyY2VUZXh0ICsKKyAgICAgICAg
ICAgICc8LycgKyAnc2NyaXB0PicpOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAg
fSBlbHNlIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH07CisKKworICAvKiogQHBy
aXZhdGUge251bWJlcn0gKi8KKyAgZ29vZy5sYXN0Tm9uTW9kdWxlU2NyaXB0SW5kZXhfID0gMDsK
KworCisgIC8qKgorICAgKiBBIHJlYWR5c3RhdGVjaGFuZ2UgaGFuZGxlciBmb3IgbGVnYWN5IElF
CisgICAqIEBwYXJhbSB7IUhUTUxTY3JpcHRFbGVtZW50fSBzY3JpcHQKKyAgICogQHBhcmFtIHtu
dW1iZXJ9IHNjcmlwdEluZGV4CisgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAqIEBwcml2YXRl
CisgICAqLworICBnb29nLm9uU2NyaXB0TG9hZF8gPSBmdW5jdGlvbihzY3JpcHQsIHNjcmlwdElu
ZGV4KSB7CisgICAgLy8gZm9yIG5vdyBsb2FkIHRoZSBtb2R1bGVzIHdoZW4gd2UgcmVhY2ggdGhl
IGxhc3Qgc2NyaXB0LAorICAgIC8vIGxhdGVyIGFsbG93IG1vcmUgaW50ZXItbWluZ2xpbmcuCisg
ICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09ICdjb21wbGV0ZScgJiYKKyAgICAgICAgZ29vZy5s
YXN0Tm9uTW9kdWxlU2NyaXB0SW5kZXhfID09IHNjcmlwdEluZGV4KSB7CisgICAgICBnb29nLmxv
YWRRdWV1ZWRNb2R1bGVzXygpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfTsKKworICAv
KioKKyAgICogUmVzb2x2ZXMgZGVwZW5kZW5jaWVzIGJhc2VkIG9uIHRoZSBkZXBlbmRlbmNpZXMg
YWRkZWQgdXNpbmcgYWRkRGVwZW5kZW5jeQorICAgKiBhbmQgY2FsbHMgaW1wb3J0U2NyaXB0XyBp
biB0aGUgY29ycmVjdCBvcmRlci4KKyAgICogQHByaXZhdGUKKyAgICovCisgIGdvb2cud3JpdGVT
Y3JpcHRzXyA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7IUFycmF5PHN0cmluZz59IFRo
ZSBzY3JpcHRzIHdlIG5lZWQgdG8gd3JpdGUgdGhpcyB0aW1lLiAqLworICAgIHZhciBzY3JpcHRz
ID0gW107CisgICAgdmFyIHNlZW5TY3JpcHQgPSB7fTsKKyAgICB2YXIgZGVwcyA9IGdvb2cuZGVw
ZW5kZW5jaWVzXzsKKworICAgIC8qKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAqLworICAgIGZ1bmN0
aW9uIHZpc2l0Tm9kZShwYXRoKSB7CisgICAgICBpZiAocGF0aCBpbiBkZXBzLndyaXR0ZW4pIHsK
KyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgdmlz
aXRlZCB0aGlzIG9uZS4gV2UgY2FuIGdldCBoZXJlIGlmIHdlIGhhdmUgY3ljbGljCisgICAgICAv
LyBkZXBlbmRlbmNpZXMuCisgICAgICBpZiAocGF0aCBpbiBkZXBzLnZpc2l0ZWQpIHsKKyAgICAg
ICAgaWYgKCEocGF0aCBpbiBzZWVuU2NyaXB0KSkgeworICAgICAgICAgIHNlZW5TY3JpcHRbcGF0
aF0gPSB0cnVlOworICAgICAgICAgIHNjcmlwdHMucHVzaChwYXRoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGRlcHMudmlzaXRlZFtwYXRoXSA9IHRydWU7
CisKKyAgICAgIGlmIChwYXRoIGluIGRlcHMucmVxdWlyZXMpIHsKKyAgICAgICAgZm9yICh2YXIg
cmVxdWlyZU5hbWUgaW4gZGVwcy5yZXF1aXJlc1twYXRoXSkgeworICAgICAgICAgIC8vIElmIHRo
ZSByZXF1aXJlZCBuYW1lIGlzIGRlZmluZWQsIHdlIGFzc3VtZSB0aGF0IGl0IHdhcyBhbHJlYWR5
CisgICAgICAgICAgLy8gYm9vdHN0cmFwcGVkIGJ5IG90aGVyIG1lYW5zLgorICAgICAgICAgIGlm
ICghZ29vZy5pc1Byb3ZpZGVkXyhyZXF1aXJlTmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChyZXF1
aXJlTmFtZSBpbiBkZXBzLm5hbWVUb1BhdGgpIHsKKyAgICAgICAgICAgICAgdmlzaXROb2RlKGRl
cHMubmFtZVRvUGF0aFtyZXF1aXJlTmFtZV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgdGhyb3cgRXJyb3IoJ1VuZGVmaW5lZCBuYW1lVG9QYXRoIGZvciAnICsgcmVxdWly
ZU5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQor
CisgICAgICBpZiAoIShwYXRoIGluIHNlZW5TY3JpcHQpKSB7CisgICAgICAgIHNlZW5TY3JpcHRb
cGF0aF0gPSB0cnVlOworICAgICAgICBzY3JpcHRzLnB1c2gocGF0aCk7CisgICAgICB9CisgICAg
fQorCisgICAgZm9yICh2YXIgcGF0aCBpbiBnb29nLmluY2x1ZGVkXykgeworICAgICAgaWYgKCFk
ZXBzLndyaXR0ZW5bcGF0aF0pIHsKKyAgICAgICAgdmlzaXROb2RlKHBhdGgpOworICAgICAgfQor
ICAgIH0KKworICAgIC8vIHJlY29yZCB0aGF0IHdlIGFyZSBnb2luZyB0byBsb2FkIGFsbCB0aGVz
ZSBzY3JpcHRzLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHBhdGggPSBzY3JpcHRzW2ldOworICAgICAgZ29vZy5kZXBlbmRlbmNpZXNf
LndyaXR0ZW5bcGF0aF0gPSB0cnVlOworICAgIH0KKworICAgIC8vIElmIGEgbW9kdWxlIGlzIGxv
YWRlZCBzeW5jaHJvbm91c2x5IHRoZW4gd2UgbmVlZCB0bworICAgIC8vIGNsZWFyIHRoZSBjdXJy
ZW50IGluTW9kdWxlTG9hZGVyIHZhbHVlLCBhbmQgcmVzdG9yZSBpdCB3aGVuIHdlIGFyZQorICAg
IC8vIGRvbmUgbG9hZGluZyB0aGUgY3VycmVudCAicmVxdWlyZXMiLgorICAgIHZhciBtb2R1bGVT
dGF0ZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfOworICAgIGdvb2cubW9kdWxlTG9hZGVyU3Rh
dGVfID0gbnVsbDsKKworICAgIHZhciBsb2FkaW5nTW9kdWxlID0gZmFsc2U7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgcGF0aCA9IHNj
cmlwdHNbaV07CisgICAgICBpZiAocGF0aCkgeworICAgICAgICBpZiAoIWRlcHMucGF0aElzTW9k
dWxlW3BhdGhdKSB7CisgICAgICAgICAgZ29vZy5pbXBvcnRTY3JpcHRfKGdvb2cuYmFzZVBhdGgg
KyBwYXRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBsb2FkaW5nTW9kdWxlID0gdHJ1
ZTsKKyAgICAgICAgICBnb29nLmltcG9ydE1vZHVsZV8oZ29vZy5iYXNlUGF0aCArIHBhdGgpOwor
ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRl
XyA9IG1vZHVsZVN0YXRlOworICAgICAgICB0aHJvdyBFcnJvcignVW5kZWZpbmVkIHNjcmlwdCBp
bnB1dCcpOworICAgICAgfQorICAgIH0KKworICAgIC8vIHJlc3RvcmUgdGhlIGN1cnJlbnQgIm1v
ZHVsZSBsb2FkaW5nIHN0YXRlIgorICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gbW9kdWxl
U3RhdGU7CisgIH07CisKKworICAvKioKKyAgICogTG9va3MgYXQgdGhlIGRlcGVuZGVuY3kgcnVs
ZXMgYW5kIHRyaWVzIHRvIGRldGVybWluZSB0aGUgc2NyaXB0IGZpbGUgdGhhdAorICAgKiBmdWxm
aWxscyBhIHBhcnRpY3VsYXIgcnVsZS4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJ1bGUgSW4gdGhl
IGZvcm0gZ29vZy5uYW1lc3BhY2UuQ2xhc3Mgb3IgcHJvamVjdC5zY3JpcHQuCisgICAqIEByZXR1
cm4gez9zdHJpbmd9IFVybCBjb3JyZXNwb25kaW5nIHRvIHRoZSBydWxlLCBvciBudWxsLgorICAg
KiBAcHJpdmF0ZQorICAgKi8KKyAgZ29vZy5nZXRQYXRoRnJvbURlcHNfID0gZnVuY3Rpb24ocnVs
ZSkgeworICAgIGlmIChydWxlIGluIGdvb2cuZGVwZW5kZW5jaWVzXy5uYW1lVG9QYXRoKSB7Cisg
ICAgICByZXR1cm4gZ29vZy5kZXBlbmRlbmNpZXNfLm5hbWVUb1BhdGhbcnVsZV07CisgICAgfSBl
bHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfTsKKworICBnb29nLmZpbmRCYXNl
UGF0aF8oKTsKKworICAvLyBBbGxvdyBwcm9qZWN0cyB0byBtYW5hZ2UgdGhlIGRlcHMgZmlsZXMg
dGhlbXNlbHZlcy4KKyAgaWYgKCFnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFMpIHsKKyAgICBn
b29nLmltcG9ydFNjcmlwdF8oZ29vZy5iYXNlUGF0aCArICdkZXBzLmpzJyk7CisgIH0KK30KKwor
CisvKioKKyAqIE5vcm1hbGl6ZSBhIGZpbGUgcGF0aCBieSByZW1vdmluZyByZWR1bmRhbnQgIi4u
IiBhbmQgZXh0cmFuZW91cyAiLiIgZmlsZQorICogcGF0aCBjb21wb25lbnRzLgorICogQHBhcmFt
IHtzdHJpbmd9IHBhdGgKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqIEBwcml2YXRlCisgKi8KK2dv
b2cubm9ybWFsaXplUGF0aF8gPSBmdW5jdGlvbihwYXRoKSB7CisgIHZhciBjb21wb25lbnRzID0g
cGF0aC5zcGxpdCgnLycpOworICB2YXIgaSA9IDA7CisgIHdoaWxlIChpIDwgY29tcG9uZW50cy5s
ZW5ndGgpIHsKKyAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAnLicpIHsKKyAgICAgIGNvbXBvbmVu
dHMuc3BsaWNlKGksIDEpOworICAgIH0gZWxzZSBpZiAoaSAmJiBjb21wb25lbnRzW2ldID09ICcu
LicgJiYKKyAgICAgICAgY29tcG9uZW50c1tpIC0gMV0gJiYgY29tcG9uZW50c1tpIC0gMV0gIT0g
Jy4uJykgeworICAgICAgY29tcG9uZW50cy5zcGxpY2UoLS1pLCAyKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgaSsrOworICAgIH0KKyAgfQorICByZXR1cm4gY29tcG9uZW50cy5qb2luKCcvJyk7Cit9
OworCisKKy8qKgorICogUmV0cmlldmUgYW5kIGV4ZWN1dGUgYSBtb2R1bGUuCisgKiBAcGFyYW0g
e3N0cmluZ30gc3JjIFNjcmlwdCBzb3VyY2UgVVJMLgorICogQHByaXZhdGUKKyAqLworZ29vZy5y
ZXRyaWV2ZUFuZEV4ZWNNb2R1bGVfID0gZnVuY3Rpb24oc3JjKSB7CisgIGlmICghQ09NUElMRUQp
IHsKKyAgICAvLyBUaGUgZnVsbCBidXQgbm9uLWNhbm9uaWNhbGl6ZWQgVVJMIGZvciBsYXRlciB1
c2UuCisgICAgdmFyIG9yaWdpbmFsUGF0aCA9IHNyYzsKKyAgICAvLyBDYW5vbmljYWxpemUgdGhl
IHBhdGgsIHJlbW92aW5nIGFueSAvLi8gb3IgLy4uLyBzaW5jZSBDaHJvbWUncyBkZWJ1Z2dpbmcK
KyAgICAvLyBjb25zb2xlIGRvZXNuJ3QgYXV0by1jYW5vbmljYWxpemUgWEhSIGxvYWRzIGFzIGl0
IGRvZXMgPHNjcmlwdD4gc3Jjcy4KKyAgICBzcmMgPSBnb29nLm5vcm1hbGl6ZVBhdGhfKHNyYyk7
CisKKyAgICB2YXIgaW1wb3J0U2NyaXB0ID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NS
SVBUIHx8CisgICAgICAgIGdvb2cud3JpdGVTY3JpcHRUYWdfOworCisgICAgdmFyIHNjcmlwdFRl
eHQgPSBudWxsOworCisgICAgdmFyIHhociA9IG5ldyBnb29nLmdsb2JhbFsnWE1MSHR0cFJlcXVl
c3QnXSgpOworCisgICAgLyoqIEB0aGlzIHtPYmplY3R9ICovCisgICAgeGhyLm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgICAgc2NyaXB0VGV4dCA9IHRoaXMucmVzcG9uc2VUZXh0OworICAgIH07
CisgICAgeGhyLm9wZW4oJ2dldCcsIHNyYywgZmFsc2UpOworICAgIHhoci5zZW5kKCk7CisKKyAg
ICBzY3JpcHRUZXh0ID0geGhyLnJlc3BvbnNlVGV4dDsKKworICAgIGlmIChzY3JpcHRUZXh0ICE9
IG51bGwpIHsKKyAgICAgIHZhciBleGVjTW9kdWxlU2NyaXB0ID0gZ29vZy53cmFwTW9kdWxlXyhz
cmMsIHNjcmlwdFRleHQpOworICAgICAgdmFyIGlzT2xkSUUgPSBnb29nLklTX09MRF9JRV87Cisg
ICAgICBpZiAoaXNPbGRJRSkgeworICAgICAgICBnb29nLmRlcGVuZGVuY2llc18uZGVmZXJyZWRb
b3JpZ2luYWxQYXRoXSA9IGV4ZWNNb2R1bGVTY3JpcHQ7CisgICAgICAgIGdvb2cucXVldWVkTW9k
dWxlc18ucHVzaChvcmlnaW5hbFBhdGgpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW1wb3J0
U2NyaXB0KHNyYywgZXhlY01vZHVsZVNjcmlwdCk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgIHRocm93IG5ldyBFcnJvcignbG9hZCBvZiAnICsgc3JjICsgJ2ZhaWxlZCcpOworICAgIH0K
KyAgfQorfTsKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTGFuZ3VhZ2UgRW5oYW5j
ZW1lbnRzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKy8qKgorICogVGhpcyBpcyBhICJm
aXhlZCIgdmVyc2lvbiBvZiB0aGUgdHlwZW9mIG9wZXJhdG9yLiAgSXQgZGlmZmVycyBmcm9tIHRo
ZSB0eXBlb2YKKyAqIG9wZXJhdG9yIGluIHN1Y2ggYSB3YXkgdGhhdCBudWxsIHJldHVybnMgJ251
bGwnIGFuZCBhcnJheXMgcmV0dXJuICdhcnJheScuCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2
YWx1ZSB0byBnZXQgdGhlIHR5cGUgb2YuCisgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9m
IHRoZSB0eXBlLgorICovCitnb29nLnR5cGVPZiA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgIHZhciBz
ID0gdHlwZW9mIHZhbHVlOworICBpZiAocyA9PSAnb2JqZWN0JykgeworICAgIGlmICh2YWx1ZSkg
eworICAgICAgLy8gQ2hlY2sgdGhlc2UgZmlyc3QsIHNvIHdlIGNhbiBhdm9pZCBjYWxsaW5nIE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcgaWYKKyAgICAgIC8vIHBvc3NpYmxlLgorICAgICAgLy8K
KyAgICAgIC8vIElFIGltcHJvcGVybHkgbWFyc2hhbHMgdHllcG9mIGFjcm9zcyBleGVjdXRpb24g
Y29udGV4dHMsIGJ1dCBhCisgICAgICAvLyBjcm9zcy1jb250ZXh0IG9iamVjdCB3aWxsIHN0aWxs
IHJldHVybiBmYWxzZSBmb3IgImluc3RhbmNlb2YgT2JqZWN0Ii4KKyAgICAgIGlmICh2YWx1ZSBp
bnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgIHJldHVybiAnYXJyYXknOworICAgICAgfSBlbHNl
IGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAgICByZXR1cm4gczsKKyAgICAg
IH0KKworICAgICAgLy8gSEFDSzogSW4gb3JkZXIgdG8gdXNlIGFuIE9iamVjdCBwcm90b3R5cGUg
bWV0aG9kIG9uIHRoZSBhcmJpdHJhcnkKKyAgICAgIC8vICAgdmFsdWUsIHRoZSBjb21waWxlciBy
ZXF1aXJlcyB0aGUgdmFsdWUgYmUgY2FzdCB0byB0eXBlIE9iamVjdCwKKyAgICAgIC8vICAgZXZl
biB0aG91Z2ggdGhlIEVDTUEgc3BlYyBleHBsaWNpdGx5IGFsbG93cyBpdC4KKyAgICAgIHZhciBj
bGFzc05hbWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoCisgICAgICAgICAgLyoq
IEB0eXBlIHtPYmplY3R9ICovICh2YWx1ZSkpOworICAgICAgLy8gSW4gRmlyZWZveCAzLjYsIGF0
dGVtcHRpbmcgdG8gYWNjZXNzIGlmcmFtZSB3aW5kb3cgb2JqZWN0cycgbGVuZ3RoCisgICAgICAv
LyBwcm9wZXJ0eSB0aHJvd3MgYW4gTlNfRVJST1JfRkFJTFVSRSwgc28gd2UgbmVlZCB0byBzcGVj
aWFsLWNhc2UgaXQKKyAgICAgIC8vIGhlcmUuCisgICAgICBpZiAoY2xhc3NOYW1lID09ICdbb2Jq
ZWN0IFdpbmRvd10nKSB7CisgICAgICAgIHJldHVybiAnb2JqZWN0JzsKKyAgICAgIH0KKworICAg
ICAgLy8gV2UgY2Fubm90IGFsd2F5cyB1c2UgY29uc3RydWN0b3IgPT0gQXJyYXkgb3IgaW5zdGFu
Y2VvZiBBcnJheSBiZWNhdXNlCisgICAgICAvLyBkaWZmZXJlbnQgZnJhbWVzIGhhdmUgZGlmZmVy
ZW50IEFycmF5IG9iamVjdHMuIEluIElFNiwgaWYgdGhlIGlmcmFtZQorICAgICAgLy8gd2hlcmUg
dGhlIGFycmF5IHdhcyBjcmVhdGVkIGlzIGRlc3Ryb3llZCwgdGhlIGFycmF5IGxvc2VzIGl0cwor
ICAgICAgLy8gcHJvdG90eXBlLiBUaGVuIGRlcmVmZXJlbmNpbmcgdmFsLnNwbGljZSBoZXJlIHRo
cm93cyBhbiBleGNlcHRpb24sIHNvCisgICAgICAvLyB3ZSBjYW4ndCB1c2UgZ29vZy5pc0Z1bmN0
aW9uLiBDYWxsaW5nIHR5cGVvZiBkaXJlY3RseSByZXR1cm5zICd1bmtub3duJworICAgICAgLy8g
c28gdGhhdCB3aWxsIHdvcmsuIEluIHRoaXMgY2FzZSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy
biBmYWxzZSBhbmQKKyAgICAgIC8vIG1vc3QgYXJyYXkgZnVuY3Rpb25zIHdpbGwgc3RpbGwgd29y
ayBiZWNhdXNlIHRoZSBhcnJheSBpcyBzdGlsbAorICAgICAgLy8gYXJyYXktbGlrZSAoc3VwcG9y
dHMgbGVuZ3RoIGFuZCBbXSkgZXZlbiB0aG91Z2ggaXQgaGFzIGxvc3QgaXRzCisgICAgICAvLyBw
cm90b3R5cGUuCisgICAgICAvLyBNYXJrIE1pbGxlciBub3RpY2VkIHRoYXQgT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZworICAgICAgLy8gYWxsb3dzIGFjY2VzcyB0byB0aGUgdW5mb3JnZWFibGUg
W1tDbGFzc11dIHByb3BlcnR5LgorICAgICAgLy8gIDE1LjIuNC4yIE9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcgKCApCisgICAgICAvLyAgV2hlbiB0aGUgdG9TdHJpbmcgbWV0aG9kIGlzIGNhbGxl
ZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgdGFrZW46CisgICAgICAvLyAgICAgIDEuIEdldCB0
aGUgW1tDbGFzc11dIHByb3BlcnR5IG9mIHRoaXMgb2JqZWN0LgorICAgICAgLy8gICAgICAyLiBD
b21wdXRlIGEgc3RyaW5nIHZhbHVlIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHRocmVlIHN0cmluZ3MK
KyAgICAgIC8vICAgICAgICAgIltvYmplY3QgIiwgUmVzdWx0KDEpLCBhbmQgIl0iLgorICAgICAg
Ly8gICAgICAzLiBSZXR1cm4gUmVzdWx0KDIpLgorICAgICAgLy8gYW5kIHRoaXMgYmVoYXZpb3Ig
c3Vydml2ZXMgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBleGVjdXRpb24gY29udGV4dC4KKyAgICAg
IGlmICgoY2xhc3NOYW1lID09ICdbb2JqZWN0IEFycmF5XScgfHwKKyAgICAgICAgICAgLy8gSW4g
SUUgYWxsIG5vbiB2YWx1ZSB0eXBlcyBhcmUgd3JhcHBlZCBhcyBvYmplY3RzIGFjcm9zcyB3aW5k
b3cKKyAgICAgICAgICAgLy8gYm91bmRhcmllcyAobm90IGlmcmFtZSB0aG91Z2gpIHNvIHdlIGhh
dmUgdG8gZG8gb2JqZWN0IGRldGVjdGlvbgorICAgICAgICAgICAvLyBmb3IgdGhpcyBlZGdlIGNh
c2UuCisgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5sZW5ndGggPT0gJ251bWJlcicgJiYKKyAgICAg
ICAgICAgdHlwZW9mIHZhbHVlLnNwbGljZSAhPSAndW5kZWZpbmVkJyAmJgorICAgICAgICAgICB0
eXBlb2YgdmFsdWUucHJvcGVydHlJc0VudW1lcmFibGUgIT0gJ3VuZGVmaW5lZCcgJiYKKyAgICAg
ICAgICAgIXZhbHVlLnByb3BlcnR5SXNFbnVtZXJhYmxlKCdzcGxpY2UnKQorCisgICAgICAgICAg
KSkgeworICAgICAgICByZXR1cm4gJ2FycmF5JzsKKyAgICAgIH0KKyAgICAgIC8vIEhBQ0s6IFRo
ZXJlIGlzIHN0aWxsIGFuIGFycmF5IGNhc2UgdGhhdCBmYWlscy4KKyAgICAgIC8vICAgICBmdW5j
dGlvbiBBcnJheUltcG9zdG9yKCkge30KKyAgICAgIC8vICAgICBBcnJheUltcG9zdG9yLnByb3Rv
dHlwZSA9IFtdOworICAgICAgLy8gICAgIHZhciBpbXBvc3RvciA9IG5ldyBBcnJheUltcG9zdG9y
OworICAgICAgLy8gdGhpcyBjYW4gYmUgZml4ZWQgYnkgZ2V0dGluZyByaWQgb2YgdGhlIGZhc3Qg
cGF0aAorICAgICAgLy8gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIGFuZCBzb2xlbHkgcmVseWlu
ZyBvbgorICAgICAgLy8gKHZhbHVlICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcudmFsbCh2
YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScpCisgICAgICAvLyBidXQgdGhhdCB3b3VsZCByZXF1
aXJlIG1hbnkgbW9yZSBmdW5jdGlvbiBjYWxscyBhbmQgaXMgbm90IHdhcnJhbnRlZAorICAgICAg
Ly8gdW5sZXNzIGNsb3N1cmUgY29kZSBpcyByZWNlaXZpbmcgb2JqZWN0cyBmcm9tIHVudHJ1c3Rl
ZCBzb3VyY2VzLgorCisgICAgICAvLyBJRSBpbiBjcm9zcy13aW5kb3cgY2FsbHMgZG9lcyBub3Qg
Y29ycmVjdGx5IG1hcnNoYWwgdGhlIGZ1bmN0aW9uIHR5cGUKKyAgICAgIC8vIChpdCBhcHBlYXJz
IGp1c3QgYXMgYW4gb2JqZWN0KSBzbyB3ZSBjYW5ub3QgdXNlIGp1c3QgdHlwZW9mIHZhbCA9PQor
ICAgICAgLy8gJ2Z1bmN0aW9uJy4gSG93ZXZlciwgaWYgdGhlIG9iamVjdCBoYXMgYSBjYWxsIHBy
b3BlcnR5LCBpdCBpcyBhCisgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgIGlmICgoY2xhc3NOYW1l
ID09ICdbb2JqZWN0IEZ1bmN0aW9uXScgfHwKKyAgICAgICAgICB0eXBlb2YgdmFsdWUuY2FsbCAh
PSAndW5kZWZpbmVkJyAmJgorICAgICAgICAgIHR5cGVvZiB2YWx1ZS5wcm9wZXJ0eUlzRW51bWVy
YWJsZSAhPSAndW5kZWZpbmVkJyAmJgorICAgICAgICAgICF2YWx1ZS5wcm9wZXJ0eUlzRW51bWVy
YWJsZSgnY2FsbCcpKSkgeworICAgICAgICByZXR1cm4gJ2Z1bmN0aW9uJzsKKyAgICAgIH0KKwor
ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gJ251bGwnOworICAgIH0KKworICB9IGVsc2UgaWYg
KHMgPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuY2FsbCA9PSAndW5kZWZpbmVkJykgewor
ICAgIC8vIEluIFNhZmFyaSB0eXBlb2Ygbm9kZUxpc3QgcmV0dXJucyAnZnVuY3Rpb24nLCBhbmQg
b24gRmlyZWZveCB0eXBlb2YKKyAgICAvLyBiZWhhdmVzIHNpbWlsYXJseSBmb3IgSFRNTHtBcHBs
ZXQsRW1iZWQsT2JqZWN0fSwgRWxlbWVudHMgYW5kIFJlZ0V4cHMuIFdlCisgICAgLy8gd291bGQg
bGlrZSB0byByZXR1cm4gb2JqZWN0IGZvciB0aG9zZSBhbmQgd2UgY2FuIGRldGVjdCBhbiBpbnZh
bGlkCisgICAgLy8gZnVuY3Rpb24gYnkgbWFraW5nIHN1cmUgdGhhdCB0aGUgZnVuY3Rpb24gb2Jq
ZWN0IGhhcyBhIGNhbGwgbWV0aG9kLgorICAgIHJldHVybiAnb2JqZWN0JzsKKyAgfQorICByZXR1
cm4gczsKK307CisKKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1
ZSBpcyBudWxsLgorICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KKyAqIEByZXR1
cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgbnVsbC4KKyAqLworZ29vZy5pc051bGwg
PSBmdW5jdGlvbih2YWwpIHsKKyAgcmV0dXJuIHZhbCA9PT0gbnVsbDsKK307CisKKworLyoqCisg
KiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBkZWZpbmVkIGFuZCBub3Qg
bnVsbC4KKyAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCisgKiBAcmV0dXJuIHti
b29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIG5vdCBudWxsLgorICovCitn
b29nLmlzRGVmQW5kTm90TnVsbCA9IGZ1bmN0aW9uKHZhbCkgeworICAvLyBOb3RlIHRoYXQgdW5k
ZWZpbmVkID09IG51bGwuCisgIHJldHVybiB2YWwgIT0gbnVsbDsKK307CisKKworLyoqCisgKiBS
ZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhbiBhcnJheS4KKyAqIEBwYXJh
bSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCisgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVy
IHZhcmlhYmxlIGlzIGFuIGFycmF5LgorICovCitnb29nLmlzQXJyYXkgPSBmdW5jdGlvbih2YWwp
IHsKKyAgcmV0dXJuIGdvb2cudHlwZU9mKHZhbCkgPT0gJ2FycmF5JzsKK307CisKKworLyoqCisg
KiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBsb29rcyBsaWtlIGFuIGFycmF5LiBUbyBxdWFs
aWZ5IGFzIGFycmF5IGxpa2UKKyAqIHRoZSB2YWx1ZSBuZWVkcyB0byBiZSBlaXRoZXIgYSBOb2Rl
TGlzdCBvciBhbiBvYmplY3Qgd2l0aCBhIE51bWJlciBsZW5ndGgKKyAqIHByb3BlcnR5LiBBcyBh
IHNwZWNpYWwgY2FzZSwgYSBmdW5jdGlvbiB2YWx1ZSBpcyBub3QgYXJyYXkgbGlrZSwgYmVjYXVz
ZSBpdHMKKyAqIGxlbmd0aCBwcm9wZXJ0eSBpcyBmaXhlZCB0byBjb3JyZXNwb25kIHRvIHRoZSBu
dW1iZXIgb2YgZXhwZWN0ZWQgYXJndW1lbnRzLgorICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUg
dG8gdGVzdC4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYW4gYXJy
YXkuCisgKi8KK2dvb2cuaXNBcnJheUxpa2UgPSBmdW5jdGlvbih2YWwpIHsKKyAgdmFyIHR5cGUg
PSBnb29nLnR5cGVPZih2YWwpOworICAvLyBXZSBkbyBub3QgdXNlIGdvb2cuaXNPYmplY3QgaGVy
ZSBpbiBvcmRlciB0byBleGNsdWRlIGZ1bmN0aW9uIHZhbHVlcy4KKyAgcmV0dXJuIHR5cGUgPT0g
J2FycmF5JyB8fCB0eXBlID09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwubGVuZ3RoID09ICdudW1i
ZXInOworfTsKKworCisvKioKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgb2JqZWN0IGxvb2tzIGxp
a2UgYSBEYXRlLiBUbyBxdWFsaWZ5IGFzIERhdGUtbGlrZSB0aGUKKyAqIHZhbHVlIG5lZWRzIHRv
IGJlIGFuIG9iamVjdCBhbmQgaGF2ZSBhIGdldEZ1bGxZZWFyKCkgZnVuY3Rpb24uCisgKiBAcGFy
YW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhl
ciB2YXJpYWJsZSBpcyBhIGxpa2UgYSBEYXRlLgorICovCitnb29nLmlzRGF0ZUxpa2UgPSBmdW5j
dGlvbih2YWwpIHsKKyAgcmV0dXJuIGdvb2cuaXNPYmplY3QodmFsKSAmJiB0eXBlb2YgdmFsLmdl
dEZ1bGxZZWFyID09ICdmdW5jdGlvbic7Cit9OworCisKKy8qKgorICogUmV0dXJucyB0cnVlIGlm
IHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBzdHJpbmcuCisgKiBAcGFyYW0gez99IHZhbCBWYXJp
YWJsZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBh
IHN0cmluZy4KKyAqLworZ29vZy5pc1N0cmluZyA9IGZ1bmN0aW9uKHZhbCkgeworICByZXR1cm4g
dHlwZW9mIHZhbCA9PSAnc3RyaW5nJzsKK307CisKKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYg
dGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIGJvb2xlYW4uCisgKiBAcGFyYW0gez99IHZhbCBWYXJp
YWJsZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBi
b29sZWFuLgorICovCitnb29nLmlzQm9vbGVhbiA9IGZ1bmN0aW9uKHZhbCkgeworICByZXR1cm4g
dHlwZW9mIHZhbCA9PSAnYm9vbGVhbic7Cit9OworCisKKy8qKgorICogUmV0dXJucyB0cnVlIGlm
IHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBudW1iZXIuCisgKiBAcGFyYW0gez99IHZhbCBWYXJp
YWJsZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBh
IG51bWJlci4KKyAqLworZ29vZy5pc051bWJlciA9IGZ1bmN0aW9uKHZhbCkgeworICByZXR1cm4g
dHlwZW9mIHZhbCA9PSAnbnVtYmVyJzsKK307CisKKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYg
dGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIGZ1bmN0aW9uLgorICogQHBhcmFtIHs/fSB2YWwgVmFy
aWFibGUgdG8gdGVzdC4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMg
YSBmdW5jdGlvbi4KKyAqLworZ29vZy5pc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFsKSB7CisgIHJl
dHVybiBnb29nLnR5cGVPZih2YWwpID09ICdmdW5jdGlvbic7Cit9OworCisKKy8qKgorICogUmV0
dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYW4gb2JqZWN0LiAgVGhpcyBpbmNs
dWRlcyBhcnJheXMgYW5kCisgKiBmdW5jdGlvbnMuCisgKiBAcGFyYW0gez99IHZhbCBWYXJpYWJs
ZSB0byB0ZXN0LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBhbiBv
YmplY3QuCisgKi8KK2dvb2cuaXNPYmplY3QgPSBmdW5jdGlvbih2YWwpIHsKKyAgdmFyIHR5cGUg
PSB0eXBlb2YgdmFsOworICByZXR1cm4gdHlwZSA9PSAnb2JqZWN0JyAmJiB2YWwgIT0gbnVsbCB8
fCB0eXBlID09ICdmdW5jdGlvbic7CisgIC8vIHJldHVybiBPYmplY3QodmFsKSA9PT0gdmFsIGFs
c28gd29ya3MsIGJ1dCBpcyBzbG93ZXIsIGVzcGVjaWFsbHkgaWYgdmFsIGlzCisgIC8vIG5vdCBh
biBvYmplY3QuCit9OworCisKKy8qKgorICogR2V0cyBhIHVuaXF1ZSBJRCBmb3IgYW4gb2JqZWN0
LiBUaGlzIG11dGF0ZXMgdGhlIG9iamVjdCBzbyB0aGF0IGZ1cnRoZXIgY2FsbHMKKyAqIHdpdGgg
dGhlIHNhbWUgb2JqZWN0IGFzIGEgcGFyYW1ldGVyIHJldHVybnMgdGhlIHNhbWUgdmFsdWUuIFRo
ZSB1bmlxdWUgSUQgaXMKKyAqIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGFjcm9zcyB0aGUgY3Vy
cmVudCBzZXNzaW9uIGFtb25nc3Qgb2JqZWN0cyB0aGF0IGFyZQorICogcGFzc2VkIGludG8ge0Bj
b2RlIGdldFVpZH0uIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBJRCBpcyB1bmlxdWUg
b3IKKyAqIGNvbnNpc3RlbnQgYWNyb3NzIHNlc3Npb25zLiBJdCBpcyB1bnNhZmUgdG8gZ2VuZXJh
dGUgdW5pcXVlIElEIGZvciBmdW5jdGlvbgorICogcHJvdG90eXBlcy4KKyAqCisgKiBAcGFyYW0g
e09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSB1bmlxdWUgSUQgZm9yLgorICogQHJl
dHVybiB7bnVtYmVyfSBUaGUgdW5pcXVlIElEIGZvciB0aGUgb2JqZWN0LgorICovCitnb29nLmdl
dFVpZCA9IGZ1bmN0aW9uKG9iaikgeworICAvLyBUT0RPKGFydik6IE1ha2UgdGhlIHR5cGUgc3Ry
aWN0ZXIsIGRvIG5vdCBhY2NlcHQgbnVsbC4KKworICAvLyBJbiBPcGVyYSB3aW5kb3cuaGFzT3du
UHJvcGVydHkgZXhpc3RzIGJ1dCBhbHdheXMgcmV0dXJucyBmYWxzZSBzbyB3ZSBhdm9pZAorICAv
LyB1c2luZyBpdC4gQXMgYSBjb25zZXF1ZW5jZSB0aGUgdW5pcXVlIElEIGdlbmVyYXRlZCBmb3Ig
QmFzZUNsYXNzLnByb3RvdHlwZQorICAvLyBhbmQgU3ViQ2xhc3MucHJvdG90eXBlIHdpbGwgYmUg
dGhlIHNhbWUuCisgIHJldHVybiBvYmpbZ29vZy5VSURfUFJPUEVSVFlfXSB8fAorICAgICAgKG9i
altnb29nLlVJRF9QUk9QRVJUWV9dID0gKytnb29nLnVpZENvdW50ZXJfKTsKK307CisKKworLyoq
CisgKiBXaGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYWxyZWFkeSBhc3NpZ25lZCBhIHVuaXF1
ZSBJRC4KKyAqCisgKiBUaGlzIGRvZXMgbm90IG1vZGlmeSB0aGUgb2JqZWN0LgorICoKKyAqIEBw
YXJhbSB7IU9iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2suCisgKiBAcmV0dXJuIHtib29s
ZWFufSBXaGV0aGVyIHRoZXJlIGlzIGFuIGFzc2lnbmVkIHVuaXF1ZSBpZCBmb3IgdGhlIG9iamVj
dC4KKyAqLworZ29vZy5oYXNVaWQgPSBmdW5jdGlvbihvYmopIHsKKyAgcmV0dXJuICEhb2JqW2dv
b2cuVUlEX1BST1BFUlRZX107Cit9OworCisKKy8qKgorICogUmVtb3ZlcyB0aGUgdW5pcXVlIElE
IGZyb20gYW4gb2JqZWN0LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgb2JqZWN0IHdhcworICogcHJl
dmlvdXNseSBtdXRhdGVkIHVzaW5nIHtAY29kZSBnb29nLmdldFVpZH0gaW4gd2hpY2ggY2FzZSB0
aGUgbXV0YXRpb24gaXMKKyAqIHVuZG9uZS4KKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9i
amVjdCB0byByZW1vdmUgdGhlIHVuaXF1ZSBJRCBmaWVsZCBmcm9tLgorICovCitnb29nLnJlbW92
ZVVpZCA9IGZ1bmN0aW9uKG9iaikgeworICAvLyBUT0RPKGFydik6IE1ha2UgdGhlIHR5cGUgc3Ry
aWN0ZXIsIGRvIG5vdCBhY2NlcHQgbnVsbC4KKworICAvLyBJbiBJRSwgRE9NIG5vZGVzIGFyZSBu
b3QgaW5zdGFuY2VzIG9mIE9iamVjdCBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHdlCisgIC8v
IHRyeSB0byBkZWxldGUuICBJbnN0ZWFkIHdlIHRyeSB0byB1c2UgcmVtb3ZlQXR0cmlidXRlLgor
ICBpZiAoJ3JlbW92ZUF0dHJpYnV0ZScgaW4gb2JqKSB7CisgICAgb2JqLnJlbW92ZUF0dHJpYnV0
ZShnb29nLlVJRF9QUk9QRVJUWV8pOworICB9CisgIC8qKiBAcHJlc2VydmVUcnkgKi8KKyAgdHJ5
IHsKKyAgICBkZWxldGUgb2JqW2dvb2cuVUlEX1BST1BFUlRZX107CisgIH0gY2F0Y2ggKGV4KSB7
CisgIH0KK307CisKKworLyoqCisgKiBOYW1lIGZvciB1bmlxdWUgSUQgcHJvcGVydHkuIEluaXRp
YWxpemVkIGluIGEgd2F5IHRvIGhlbHAgYXZvaWQgY29sbGlzaW9ucworICogd2l0aCBvdGhlciBj
bG9zdXJlIEphdmFTY3JpcHQgb24gdGhlIHNhbWUgcGFnZS4KKyAqIEB0eXBlIHtzdHJpbmd9Cisg
KiBAcHJpdmF0ZQorICovCitnb29nLlVJRF9QUk9QRVJUWV8gPSAnY2xvc3VyZV91aWRfJyArICgo
TWF0aC5yYW5kb20oKSAqIDFlOSkgPj4+IDApOworCisKKy8qKgorICogQ291bnRlciBmb3IgVUlE
LgorICogQHR5cGUge251bWJlcn0KKyAqIEBwcml2YXRlCisgKi8KK2dvb2cudWlkQ291bnRlcl8g
PSAwOworCisKKy8qKgorICogQWRkcyBhIGhhc2ggY29kZSBmaWVsZCB0byBhbiBvYmplY3QuIFRo
ZSBoYXNoIGNvZGUgaXMgdW5pcXVlIGZvciB0aGUKKyAqIGdpdmVuIG9iamVjdC4KKyAqIEBwYXJh
bSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBnZXQgdGhlIGhhc2ggY29kZSBmb3IuCisgKiBA
cmV0dXJuIHtudW1iZXJ9IFRoZSBoYXNoIGNvZGUgZm9yIHRoZSBvYmplY3QuCisgKiBAZGVwcmVj
YXRlZCBVc2UgZ29vZy5nZXRVaWQgaW5zdGVhZC4KKyAqLworZ29vZy5nZXRIYXNoQ29kZSA9IGdv
b2cuZ2V0VWlkOworCisKKy8qKgorICogUmVtb3ZlcyB0aGUgaGFzaCBjb2RlIGZpZWxkIGZyb20g
YW4gb2JqZWN0LgorICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHJlbW92ZSB0
aGUgZmllbGQgZnJvbS4KKyAqIEBkZXByZWNhdGVkIFVzZSBnb29nLnJlbW92ZVVpZCBpbnN0ZWFk
LgorICovCitnb29nLnJlbW92ZUhhc2hDb2RlID0gZ29vZy5yZW1vdmVVaWQ7CisKKworLyoqCisg
KiBDbG9uZXMgYSB2YWx1ZS4gVGhlIGlucHV0IG1heSBiZSBhbiBPYmplY3QsIEFycmF5LCBvciBi
YXNpYyB0eXBlLiBPYmplY3RzIGFuZAorICogYXJyYXlzIHdpbGwgYmUgY2xvbmVkIHJlY3Vyc2l2
ZWx5LgorICoKKyAqIFdBUk5JTkdTOgorICogPGNvZGU+Z29vZy5jbG9uZU9iamVjdDwvY29kZT4g
ZG9lcyBub3QgZGV0ZWN0IHJlZmVyZW5jZSBsb29wcy4gT2JqZWN0cyB0aGF0CisgKiByZWZlciB0
byB0aGVtc2VsdmVzIHdpbGwgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLgorICoKKyAqIDxjb2Rl
Pmdvb2cuY2xvbmVPYmplY3Q8L2NvZGU+IGlzIHVuYXdhcmUgb2YgdW5pcXVlIGlkZW50aWZpZXJz
LCBhbmQgY29waWVzCisgKiBVSURzIGNyZWF0ZWQgYnkgPGNvZGU+Z2V0VWlkPC9jb2RlPiBpbnRv
IGNsb25lZCByZXN1bHRzLgorICoKKyAqIEBwYXJhbSB7Kn0gb2JqIFRoZSB2YWx1ZSB0byBjbG9u
ZS4KKyAqIEByZXR1cm4geyp9IEEgY2xvbmUgb2YgdGhlIGlucHV0IHZhbHVlLgorICogQGRlcHJl
Y2F0ZWQgZ29vZy5jbG9uZU9iamVjdCBpcyB1bnNhZmUuIFByZWZlciB0aGUgZ29vZy5vYmplY3Qg
bWV0aG9kcy4KKyAqLworZ29vZy5jbG9uZU9iamVjdCA9IGZ1bmN0aW9uKG9iaikgeworICB2YXIg
dHlwZSA9IGdvb2cudHlwZU9mKG9iaik7CisgIGlmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUg
PT0gJ2FycmF5JykgeworICAgIGlmIChvYmouY2xvbmUpIHsKKyAgICAgIHJldHVybiBvYmouY2xv
bmUoKTsKKyAgICB9CisgICAgdmFyIGNsb25lID0gdHlwZSA9PSAnYXJyYXknID8gW10gOiB7fTsK
KyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAgICBjbG9uZVtrZXldID0gZ29vZy5jbG9u
ZU9iamVjdChvYmpba2V5XSk7CisgICAgfQorICAgIHJldHVybiBjbG9uZTsKKyAgfQorCisgIHJl
dHVybiBvYmo7Cit9OworCisKKy8qKgorICogQSBuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgZ29v
Zy5iaW5kLgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkg
YXBwbHkuCisgKiBAcGFyYW0ge09iamVjdHx1bmRlZmluZWR9IHNlbGZPYmogU3BlY2lmaWVzIHRo
ZSBvYmplY3Qgd2hpY2ggdGhpcyBzaG91bGQKKyAqICAgICBwb2ludCB0byB3aGVuIHRoZSBmdW5j
dGlvbiBpcyBydW4uCisgKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIEFkZGl0aW9uYWwgYXJndW1l
bnRzIHRoYXQgYXJlIHBhcnRpYWxseSBhcHBsaWVkIHRvIHRoZQorICogICAgIGZ1bmN0aW9uLgor
ICogQHJldHVybiB7IUZ1bmN0aW9ufSBBIHBhcnRpYWxseS1hcHBsaWVkIGZvcm0gb2YgdGhlIGZ1
bmN0aW9uIGJpbmQoKSB3YXMKKyAqICAgICBpbnZva2VkIGFzIGEgbWV0aG9kIG9mLgorICogQHBy
aXZhdGUKKyAqIEBzdXBwcmVzcyB7ZGVwcmVjYXRlZH0gVGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0
IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGlzCisgKiAgICAgZGVwcmVjYXRlZCBiZWNhdXNlIHNv
bWUgcGVvcGxlIGhhdmUgZGVjbGFyZWQgYSBwdXJlLUpTIHZlcnNpb24uCisgKiAgICAgT25seSB0
aGUgcHVyZS1KUyB2ZXJzaW9uIGlzIHRydWx5IGRlcHJlY2F0ZWQuCisgKi8KK2dvb2cuYmluZE5h
dGl2ZV8gPSBmdW5jdGlvbihmbiwgc2VsZk9iaiwgdmFyX2FyZ3MpIHsKKyAgcmV0dXJuIC8qKiBA
dHlwZSB7IUZ1bmN0aW9ufSAqLyAoZm4uY2FsbC5hcHBseShmbi5iaW5kLCBhcmd1bWVudHMpKTsK
K307CisKKworLyoqCisgKiBBIHB1cmUtSlMgaW1wbGVtZW50YXRpb24gb2YgZ29vZy5iaW5kLgor
ICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkuCisg
KiBAcGFyYW0ge09iamVjdHx1bmRlZmluZWR9IHNlbGZPYmogU3BlY2lmaWVzIHRoZSBvYmplY3Qg
d2hpY2ggdGhpcyBzaG91bGQKKyAqICAgICBwb2ludCB0byB3aGVuIHRoZSBmdW5jdGlvbiBpcyBy
dW4uCisgKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRoYXQg
YXJlIHBhcnRpYWxseSBhcHBsaWVkIHRvIHRoZQorICogICAgIGZ1bmN0aW9uLgorICogQHJldHVy
biB7IUZ1bmN0aW9ufSBBIHBhcnRpYWxseS1hcHBsaWVkIGZvcm0gb2YgdGhlIGZ1bmN0aW9uIGJp
bmQoKSB3YXMKKyAqICAgICBpbnZva2VkIGFzIGEgbWV0aG9kIG9mLgorICogQHByaXZhdGUKKyAq
LworZ29vZy5iaW5kSnNfID0gZnVuY3Rpb24oZm4sIHNlbGZPYmosIHZhcl9hcmdzKSB7CisgIGlm
ICghZm4pIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgfQorCisgIGlmIChhcmd1bWVudHMu
bGVuZ3RoID4gMikgeworICAgIHZhciBib3VuZEFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDIpOworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIC8vIFBy
ZXBlbmQgdGhlIGJvdW5kIGFyZ3VtZW50cyB0byB0aGUgY3VycmVudCBhcmd1bWVudHMuCisgICAg
ICB2YXIgbmV3QXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7Cisg
ICAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShuZXdBcmdzLCBib3VuZEFyZ3MpOwor
ICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGZPYmosIG5ld0FyZ3MpOworICAgIH07CisKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gZm4uYXBwbHkoc2Vs
Zk9iaiwgYXJndW1lbnRzKTsKKyAgICB9OworICB9Cit9OworCisKKy8qKgorICogUGFydGlhbGx5
IGFwcGxpZXMgdGhpcyBmdW5jdGlvbiB0byBhIHBhcnRpY3VsYXIgJ3RoaXMgb2JqZWN0JyBhbmQg
emVybyBvcgorICogbW9yZSBhcmd1bWVudHMuIFRoZSByZXN1bHQgaXMgYSBuZXcgZnVuY3Rpb24g
d2l0aCBzb21lIGFyZ3VtZW50cyBvZiB0aGUgZmlyc3QKKyAqIGZ1bmN0aW9uIHByZS1maWxsZWQg
YW5kIHRoZSB2YWx1ZSBvZiB0aGlzICdwcmUtc3BlY2lmaWVkJy4KKyAqCisgKiBSZW1haW5pbmcg
YXJndW1lbnRzIHNwZWNpZmllZCBhdCBjYWxsLXRpbWUgYXJlIGFwcGVuZGVkIHRvIHRoZSBwcmUt
c3BlY2lmaWVkCisgKiBvbmVzLgorICoKKyAqIEFsc28gc2VlOiB7QGxpbmsgI3BhcnRpYWx9Lgor
ICoKKyAqIFVzYWdlOgorICogPHByZT52YXIgYmFyTWV0aEJvdW5kID0gYmluZChteUZ1bmN0aW9u
LCBteU9iaiwgJ2FyZzEnLCAnYXJnMicpOworICogYmFyTWV0aEJvdW5kKCdhcmczJywgJ2FyZzQn
KTs8L3ByZT4KKyAqCisgKiBAcGFyYW0gez9mdW5jdGlvbih0aGlzOlQsIC4uLil9IGZuIEEgZnVu
Y3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5LgorICogQHBhcmFtIHtUfSBzZWxmT2JqIFNwZWNpZmll
cyB0aGUgb2JqZWN0IHdoaWNoIHRoaXMgc2hvdWxkIHBvaW50IHRvIHdoZW4gdGhlCisgKiAgICAg
ZnVuY3Rpb24gaXMgcnVuLgorICogQHBhcmFtIHsuLi4qfSB2YXJfYXJncyBBZGRpdGlvbmFsIGFy
Z3VtZW50cyB0aGF0IGFyZSBwYXJ0aWFsbHkgYXBwbGllZCB0byB0aGUKKyAqICAgICBmdW5jdGlv
bi4KKyAqIEByZXR1cm4geyFGdW5jdGlvbn0gQSBwYXJ0aWFsbHktYXBwbGllZCBmb3JtIG9mIHRo
ZSBmdW5jdGlvbiBiaW5kKCkgd2FzCisgKiAgICAgaW52b2tlZCBhcyBhIG1ldGhvZCBvZi4KKyAq
IEB0ZW1wbGF0ZSBUCisgKiBAc3VwcHJlc3Mge2RlcHJlY2F0ZWR9IFNlZSBhYm92ZS4KKyAqLwor
Z29vZy5iaW5kID0gZnVuY3Rpb24oZm4sIHNlbGZPYmosIHZhcl9hcmdzKSB7CisgIC8vIFRPRE8o
bmlja3NhbnRvcyk6IG5hcnJvdyB0aGUgdHlwZSBzaWduYXR1cmUuCisgIGlmIChGdW5jdGlvbi5w
cm90b3R5cGUuYmluZCAmJgorICAgICAgLy8gTk9URShuaWNrc2FudG9zKTogU29tZWJvZHkgcHVs
bGVkIGJhc2UuanMgaW50byB0aGUgZGVmYXVsdCBDaHJvbWUKKyAgICAgIC8vIGV4dGVuc2lvbiBl
bnZpcm9ubWVudC4gVGhpcyBtZWFucyB0aGF0IGZvciBDaHJvbWUgZXh0ZW5zaW9ucywgdGhleSBn
ZXQKKyAgICAgIC8vIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGdW5jdGlvbi5wcm90b3R5cGUuYmlu
ZCB0aGF0IGNhbGxzIGdvb2cuYmluZAorICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgbmF0aXZlIG9u
ZS4gRXZlbiB3b3JzZSwgd2UgZG9uJ3Qgd2FudCB0byBpbnRyb2R1Y2UgYQorICAgICAgLy8gY2ly
Y3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGdvb2cuYmluZCBhbmQgRnVuY3Rpb24ucHJvdG90eXBl
LmJpbmQsIHNvCisgICAgICAvLyB3ZSBoYXZlIHRvIGhhY2sgdGhpcyB0byBtYWtlIHN1cmUgaXQg
d29ya3MgY29ycmVjdGx5LgorICAgICAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmco
KS5pbmRleE9mKCduYXRpdmUgY29kZScpICE9IC0xKSB7CisgICAgZ29vZy5iaW5kID0gZ29vZy5i
aW5kTmF0aXZlXzsKKyAgfSBlbHNlIHsKKyAgICBnb29nLmJpbmQgPSBnb29nLmJpbmRKc187Cisg
IH0KKyAgcmV0dXJuIGdvb2cuYmluZC5hcHBseShudWxsLCBhcmd1bWVudHMpOworfTsKKworCisv
KioKKyAqIExpa2UgYmluZCgpLCBleGNlcHQgdGhhdCBhICd0aGlzIG9iamVjdCcgaXMgbm90IHJl
cXVpcmVkLiBVc2VmdWwgd2hlbiB0aGUKKyAqIHRhcmdldCBmdW5jdGlvbiBpcyBhbHJlYWR5IGJv
dW5kLgorICoKKyAqIFVzYWdlOgorICogdmFyIGcgPSBwYXJ0aWFsKGYsIGFyZzEsIGFyZzIpOwor
ICogZyhhcmczLCBhcmc0KTsKKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBBIGZ1bmN0aW9u
IHRvIHBhcnRpYWxseSBhcHBseS4KKyAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgQWRkaXRpb25h
bCBhcmd1bWVudHMgdGhhdCBhcmUgcGFydGlhbGx5IGFwcGxpZWQgdG8gZm4uCisgKiBAcmV0dXJu
IHshRnVuY3Rpb259IEEgcGFydGlhbGx5LWFwcGxpZWQgZm9ybSBvZiB0aGUgZnVuY3Rpb24gYmlu
ZCgpIHdhcworICogICAgIGludm9rZWQgYXMgYSBtZXRob2Qgb2YuCisgKi8KK2dvb2cucGFydGlh
bCA9IGZ1bmN0aW9uKGZuLCB2YXJfYXJncykgeworICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAv
LyBDbG9uZSB0aGUgYXJyYXkgKHdpdGggc2xpY2UoKSkgYW5kIGFwcGVuZCBhZGRpdGlvbmFsIGFy
Z3VtZW50cworICAgIC8vIHRvIHRoZSBleGlzdGluZyBhcmd1bWVudHMuCisgICAgdmFyIG5ld0Fy
Z3MgPSBhcmdzLnNsaWNlKCk7CisgICAgbmV3QXJncy5wdXNoLmFwcGx5KG5ld0FyZ3MsIGFyZ3Vt
ZW50cyk7CisgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIG5ld0FyZ3MpOworICB9OworfTsKKwor
CisvKioKKyAqIENvcGllcyBhbGwgdGhlIG1lbWJlcnMgb2YgYSBzb3VyY2Ugb2JqZWN0IHRvIGEg
dGFyZ2V0IG9iamVjdC4gVGhpcyBtZXRob2QKKyAqIGRvZXMgbm90IHdvcmsgb24gYWxsIGJyb3dz
ZXJzIGZvciBhbGwgb2JqZWN0cyB0aGF0IGNvbnRhaW4ga2V5cyBzdWNoIGFzCisgKiB0b1N0cmlu
ZyBvciBoYXNPd25Qcm9wZXJ0eS4gVXNlIGdvb2cub2JqZWN0LmV4dGVuZCBmb3IgdGhpcyBwdXJw
b3NlLgorICogQHBhcmFtIHtPYmplY3R9IHRhcmdldCBUYXJnZXQuCisgKiBAcGFyYW0ge09iamVj
dH0gc291cmNlIFNvdXJjZS4KKyAqLworZ29vZy5taXhpbiA9IGZ1bmN0aW9uKHRhcmdldCwgc291
cmNlKSB7CisgIGZvciAodmFyIHggaW4gc291cmNlKSB7CisgICAgdGFyZ2V0W3hdID0gc291cmNl
W3hdOworICB9CisKKyAgLy8gRm9yIElFNyBvciBsb3dlciwgdGhlIGZvci1pbi1sb29wIGRvZXMg
bm90IGNvbnRhaW4gYW55IHByb3BlcnRpZXMgdGhhdCBhcmUKKyAgLy8gbm90IGVudW1lcmFibGUg
b24gdGhlIHByb3RvdHlwZSBvYmplY3QgKGZvciBleGFtcGxlLCBpc1Byb3RvdHlwZU9mIGZyb20K
KyAgLy8gT2JqZWN0LnByb3RvdHlwZSkgYnV0IGFsc28gaXQgd2lsbCBub3QgaW5jbHVkZSAncmVw
bGFjZScgb24gb2JqZWN0cyB0aGF0CisgIC8vIGV4dGVuZCBTdHJpbmcgYW5kIGNoYW5nZSAncmVw
bGFjZScgKG5vdCB0aGF0IGl0IGlzIGNvbW1vbiBmb3IgYW55b25lIHRvCisgIC8vIGV4dGVuZCBh
bnl0aGluZyBleGNlcHQgT2JqZWN0KS4KK307CisKKworLyoqCisgKiBAcmV0dXJuIHtudW1iZXJ9
IEFuIGludGVnZXIgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRz
CisgKiAgICAgYmV0d2VlbiBtaWRuaWdodCwgSmFudWFyeSAxLCAxOTcwIGFuZCB0aGUgY3VycmVu
dCB0aW1lLgorICovCitnb29nLm5vdyA9IChnb29nLlRSVVNURURfU0lURSAmJiBEYXRlLm5vdykg
fHwgKGZ1bmN0aW9uKCkgeworICAvLyBVbmFyeSBwbHVzIG9wZXJhdG9yIGNvbnZlcnRzIGl0cyBv
cGVyYW5kIHRvIGEgbnVtYmVyIHdoaWNoIGluIHRoZSBjYXNlIG9mCisgIC8vIGEgZGF0ZSBpcyBk
b25lIGJ5IGNhbGxpbmcgZ2V0VGltZSgpLgorICByZXR1cm4gK25ldyBEYXRlKCk7Cit9KTsKKwor
CisvKioKKyAqIEV2YWxzIEphdmFTY3JpcHQgaW4gdGhlIGdsb2JhbCBzY29wZS4gIEluIElFIHRo
aXMgdXNlcyBleGVjU2NyaXB0LCBvdGhlcgorICogYnJvd3NlcnMgdXNlIGdvb2cuZ2xvYmFsLmV2
YWwuIElmIGdvb2cuZ2xvYmFsLmV2YWwgZG9lcyBub3QgZXZhbHVhdGUgaW4gdGhlCisgKiBnbG9i
YWwgc2NvcGUgKGZvciBleGFtcGxlLCBpbiBTYWZhcmkpLCBhcHBlbmRzIGEgc2NyaXB0IHRhZyBp
bnN0ZWFkLgorICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuZWl0aGVyIGV4ZWNTY3JpcHQgb3Ig
ZXZhbCBpcyBkZWZpbmVkLgorICogQHBhcmFtIHtzdHJpbmd9IHNjcmlwdCBKYXZhU2NyaXB0IHN0
cmluZy4KKyAqLworZ29vZy5nbG9iYWxFdmFsID0gZnVuY3Rpb24oc2NyaXB0KSB7CisgIGlmIChn
b29nLmdsb2JhbC5leGVjU2NyaXB0KSB7CisgICAgZ29vZy5nbG9iYWwuZXhlY1NjcmlwdChzY3Jp
cHQsICdKYXZhU2NyaXB0Jyk7CisgIH0gZWxzZSBpZiAoZ29vZy5nbG9iYWwuZXZhbCkgeworICAg
IC8vIFRlc3QgdG8gc2VlIGlmIGV2YWwgd29ya3MKKyAgICBpZiAoZ29vZy5ldmFsV29ya3NGb3JH
bG9iYWxzXyA9PSBudWxsKSB7CisgICAgICBnb29nLmdsb2JhbC5ldmFsKCd2YXIgX2V0XyA9IDE7
Jyk7CisgICAgICBpZiAodHlwZW9mIGdvb2cuZ2xvYmFsWydfZXRfJ10gIT0gJ3VuZGVmaW5lZCcp
IHsKKyAgICAgICAgZGVsZXRlIGdvb2cuZ2xvYmFsWydfZXRfJ107CisgICAgICAgIGdvb2cuZXZh
bFdvcmtzRm9yR2xvYmFsc18gPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ29vZy5l
dmFsV29ya3NGb3JHbG9iYWxzXyA9IGZhbHNlOworICAgICAgfQorICAgIH0KKworICAgIGlmIChn
b29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfKSB7CisgICAgICBnb29nLmdsb2JhbC5ldmFsKHNjcmlw
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsK
KyAgICAgIHZhciBzY3JpcHRFbHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnU0NSSVBUJyk7CisgICAg
ICBzY3JpcHRFbHQudHlwZSA9ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JzsKKyAgICAgIHNjcmlw
dEVsdC5kZWZlciA9IGZhbHNlOworICAgICAgLy8gTm90ZSh1c2VyKTogY2FuJ3QgdXNlIC5pbm5l
ckhUTUwgc2luY2UgInQoJzx0ZXN0PicpIiB3aWxsIGZhaWwgYW5kCisgICAgICAvLyAudGV4dCBk
b2Vzbid0IHdvcmsgaW4gU2FmYXJpIDIuICBUaGVyZWZvcmUgd2UgYXBwZW5kIGEgdGV4dCBub2Rl
LgorICAgICAgc2NyaXB0RWx0LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShzY3JpcHQp
KTsKKyAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdEVsdCk7CisgICAgICBkb2MuYm9k
eS5yZW1vdmVDaGlsZChzY3JpcHRFbHQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICB0aHJvdyBF
cnJvcignZ29vZy5nbG9iYWxFdmFsIG5vdCBhdmFpbGFibGUnKTsKKyAgfQorfTsKKworCisvKioK
KyAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gY2FsbCAnZXZhbCcgZGlyZWN0bHkg
dG8gZXZhbCBjb2RlIGluIHRoZQorICogZ2xvYmFsIHNjb3BlLiBTZXQgdG8gYSBCb29sZWFuIGJ5
IHRoZSBmaXJzdCBjYWxsIHRvIGdvb2cuZ2xvYmFsRXZhbCAod2hpY2gKKyAqIGVtcGlyaWNhbGx5
IHRlc3RzIHdoZXRoZXIgZXZhbCB3b3JrcyBmb3IgZ2xvYmFscykuIEBzZWUgZ29vZy5nbG9iYWxF
dmFsCisgKiBAdHlwZSB7P2Jvb2xlYW59CisgKiBAcHJpdmF0ZQorICovCitnb29nLmV2YWxXb3Jr
c0Zvckdsb2JhbHNfID0gbnVsbDsKKworCisvKioKKyAqIE9wdGlvbmFsIG1hcCBvZiBDU1MgY2xh
c3MgbmFtZXMgdG8gb2JmdXNjYXRlZCBuYW1lcyB1c2VkIHdpdGgKKyAqIGdvb2cuZ2V0Q3NzTmFt
ZSgpLgorICogQHByaXZhdGUgeyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fHVuZGVmaW5lZH0KKyAq
IEBzZWUgZ29vZy5zZXRDc3NOYW1lTWFwcGluZworICovCitnb29nLmNzc05hbWVNYXBwaW5nXzsK
KworCisvKioKKyAqIE9wdGlvbmFsIG9iZnVzY2F0aW9uIHN0eWxlIGZvciBDU1MgY2xhc3MgbmFt
ZXMuIFNob3VsZCBiZSBzZXQgdG8gZWl0aGVyCisgKiAnQllfV0hPTEUnIG9yICdCWV9QQVJUJyBp
ZiBkZWZpbmVkLgorICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9CisgKiBAcHJpdmF0ZQorICog
QHNlZSBnb29nLnNldENzc05hbWVNYXBwaW5nCisgKi8KK2dvb2cuY3NzTmFtZU1hcHBpbmdTdHls
ZV87CisKKworLyoqCisgKiBIYW5kbGVzIHN0cmluZ3MgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUg
dXNlZCBhcyBDU1MgY2xhc3MgbmFtZXMuCisgKgorICogVGhpcyBmdW5jdGlvbiB3b3JrcyBpbiB0
YW5kZW0gd2l0aCBAc2VlIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcuCisgKgorICogV2l0aG91dCBh
bnkgbWFwcGluZyBzZXQsIHRoZSBhcmd1bWVudHMgYXJlIHNpbXBsZSBqb2luZWQgd2l0aCBhIGh5
cGhlbiBhbmQKKyAqIHBhc3NlZCB0aHJvdWdoIHVuYWx0ZXJlZC4KKyAqCisgKiBXaGVuIHRoZXJl
IGlzIGEgbWFwcGluZywgdGhlcmUgYXJlIHR3byBwb3NzaWJsZSBzdHlsZXMgaW4gd2hpY2ggdGhl
c2UKKyAqIG1hcHBpbmdzIGFyZSB1c2VkLiBJbiB0aGUgQllfUEFSVCBzdHlsZSwgZWFjaCBwYXJ0
IChpLmUuIGluIGJldHdlZW4gaHlwaGVucykKKyAqIG9mIHRoZSBwYXNzZWQgaW4gY3NzIG5hbWUg
aXMgcmV3cml0dGVuIGFjY29yZGluZyB0byB0aGUgbWFwLiBJbiB0aGUgQllfV0hPTEUKKyAqIHN0
eWxlLCB0aGUgZnVsbCBjc3MgbmFtZSBpcyBsb29rZWQgdXAgaW4gdGhlIG1hcCBkaXJlY3RseS4g
SWYgYSByZXdyaXRlIGlzCisgKiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBtYXAsIHRoZSBjb21waWxl
ciB3aWxsIG91dHB1dCBhIHdhcm5pbmcuCisgKgorICogV2hlbiB0aGUgbWFwcGluZyBpcyBwYXNz
ZWQgdG8gdGhlIGNvbXBpbGVyLCBpdCB3aWxsIHJlcGxhY2UgY2FsbHMgdG8KKyAqIGdvb2cuZ2V0
Q3NzTmFtZSB3aXRoIHRoZSBzdHJpbmdzIGZyb20gdGhlIG1hcHBpbmcsIGUuZy4KKyAqICAgICB2
YXIgeCA9IGdvb2cuZ2V0Q3NzTmFtZSgnZm9vJyk7CisgKiAgICAgdmFyIHkgPSBnb29nLmdldENz
c05hbWUodGhpcy5iYXNlQ2xhc3MsICdhY3RpdmUnKTsKKyAqICBiZWNvbWVzOgorICogICAgIHZh
ciB4PSAnZm9vJzsKKyAqICAgICB2YXIgeSA9IHRoaXMuYmFzZUNsYXNzICsgJy1hY3RpdmUnOwor
ICoKKyAqIElmIG9uZSBhcmd1bWVudCBpcyBwYXNzZWQgaXQgd2lsbCBiZSBwcm9jZXNzZWQsIGlm
IHR3byBhcmUgcGFzc2VkIG9ubHkgdGhlCisgKiBtb2RpZmllciB3aWxsIGJlIHByb2Nlc3NlZCwg
YXMgaXQgaXMgYXNzdW1lZCB0aGUgZmlyc3QgYXJndW1lbnQgd2FzIGdlbmVyYXRlZAorICogYXMg
YSByZXN1bHQgb2YgY2FsbGluZyBnb29nLmdldENzc05hbWUuCisgKgorICogQHBhcmFtIHtzdHJp
bmd9IGNsYXNzTmFtZSBUaGUgY2xhc3MgbmFtZS4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gb3B0X21v
ZGlmaWVyIEEgbW9kaWZpZXIgdG8gYmUgYXBwZW5kZWQgdG8gdGhlIGNsYXNzIG5hbWUuCisgKiBA
cmV0dXJuIHtzdHJpbmd9IFRoZSBjbGFzcyBuYW1lIG9yIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRo
ZSBjbGFzcyBuYW1lIGFuZAorICogICAgIHRoZSBtb2RpZmllci4KKyAqLworZ29vZy5nZXRDc3NO
YW1lID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBvcHRfbW9kaWZpZXIpIHsKKyAgdmFyIGdldE1hcHBp
bmcgPSBmdW5jdGlvbihjc3NOYW1lKSB7CisgICAgcmV0dXJuIGdvb2cuY3NzTmFtZU1hcHBpbmdf
W2Nzc05hbWVdIHx8IGNzc05hbWU7CisgIH07CisKKyAgdmFyIHJlbmFtZUJ5UGFydHMgPSBmdW5j
dGlvbihjc3NOYW1lKSB7CisgICAgLy8gUmVtYXAgYWxsIHRoZSBwYXJ0cyBpbmRpdmlkdWFsbHku
CisgICAgdmFyIHBhcnRzID0gY3NzTmFtZS5zcGxpdCgnLScpOworICAgIHZhciBtYXBwZWQgPSBb
XTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICBt
YXBwZWQucHVzaChnZXRNYXBwaW5nKHBhcnRzW2ldKSk7CisgICAgfQorICAgIHJldHVybiBtYXBw
ZWQuam9pbignLScpOworICB9OworCisgIHZhciByZW5hbWU7CisgIGlmIChnb29nLmNzc05hbWVN
YXBwaW5nXykgeworICAgIHJlbmFtZSA9IGdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8gPT0gJ0JZ
X1dIT0xFJyA/CisgICAgICAgIGdldE1hcHBpbmcgOiByZW5hbWVCeVBhcnRzOworICB9IGVsc2Ug
eworICAgIHJlbmFtZSA9IGZ1bmN0aW9uKGEpIHsKKyAgICAgIHJldHVybiBhOworICAgIH07Cisg
IH0KKworICBpZiAob3B0X21vZGlmaWVyKSB7CisgICAgcmV0dXJuIGNsYXNzTmFtZSArICctJyAr
IHJlbmFtZShvcHRfbW9kaWZpZXIpOworICB9IGVsc2UgeworICAgIHJldHVybiByZW5hbWUoY2xh
c3NOYW1lKTsKKyAgfQorfTsKKworCisvKioKKyAqIFNldHMgdGhlIG1hcCB0byBjaGVjayB3aGVu
IHJldHVybmluZyBhIHZhbHVlIGZyb20gZ29vZy5nZXRDc3NOYW1lKCkuIEV4YW1wbGU6CisgKiA8
cHJlPgorICogZ29vZy5zZXRDc3NOYW1lTWFwcGluZyh7CisgKiAgICJnb29nIjogImEiLAorICog
ICAiZGlzYWJsZWQiOiAiYiIsCisgKiB9KTsKKyAqCisgKiB2YXIgeCA9IGdvb2cuZ2V0Q3NzTmFt
ZSgnZ29vZycpOworICogLy8gVGhlIGZvbGxvd2luZyBldmFsdWF0ZXMgdG86ICJhIGEtYiIuCisg
KiBnb29nLmdldENzc05hbWUoJ2dvb2cnKSArICcgJyArIGdvb2cuZ2V0Q3NzTmFtZSh4LCAnZGlz
YWJsZWQnKQorICogPC9wcmU+CisgKiBXaGVuIGRlY2xhcmVkIGFzIGEgbWFwIG9mIHN0cmluZyBs
aXRlcmFscyB0byBzdHJpbmcgbGl0ZXJhbHMsIHRoZSBKU0NvbXBpbGVyCisgKiB3aWxsIHJlcGxh
Y2UgYWxsIGNhbGxzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpIHVzaW5nIHRoZSBzdXBwbGllZCBtYXAg
aWYgdGhlCisgKiAtLWNsb3N1cmVfcGFzcyBmbGFnIGlzIHNldC4KKyAqCisgKiBAcGFyYW0geyFP
YmplY3R9IG1hcHBpbmcgQSBtYXAgb2Ygc3RyaW5ncyB0byBzdHJpbmdzIHdoZXJlIGtleXMgYXJl
IHBvc3NpYmxlCisgKiAgICAgYXJndW1lbnRzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpIGFuZCB2YWx1
ZXMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcworICogICAgIHRoYXQgc2hvdWxkIGJlIHJl
dHVybmVkLgorICogQHBhcmFtIHtzdHJpbmc9fSBvcHRfc3R5bGUgVGhlIHN0eWxlIG9mIGNzcyBu
YW1lIG1hcHBpbmcuIFRoZXJlIGFyZSB0d28gdmFsaWQKKyAqICAgICBvcHRpb25zOiAnQllfUEFS
VCcsIGFuZCAnQllfV0hPTEUnLgorICogQHNlZSBnb29nLmdldENzc05hbWUgZm9yIGEgZGVzY3Jp
cHRpb24uCisgKi8KK2dvb2cuc2V0Q3NzTmFtZU1hcHBpbmcgPSBmdW5jdGlvbihtYXBwaW5nLCBv
cHRfc3R5bGUpIHsKKyAgZ29vZy5jc3NOYW1lTWFwcGluZ18gPSBtYXBwaW5nOworICBnb29nLmNz
c05hbWVNYXBwaW5nU3R5bGVfID0gb3B0X3N0eWxlOworfTsKKworCisvKioKKyAqIFRvIHVzZSBD
U1MgcmVuYW1pbmcgaW4gY29tcGlsZWQgbW9kZSwgb25lIG9mIHRoZSBpbnB1dCBmaWxlcyBzaG91
bGQgaGF2ZSBhCisgKiBjYWxsIHRvIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcoKSB3aXRoIGFuIG9i
amVjdCBsaXRlcmFsIHRoYXQgdGhlIEpTQ29tcGlsZXIKKyAqIGNhbiBleHRyYWN0IGFuZCB1c2Ug
dG8gcmVwbGFjZSBhbGwgY2FsbHMgdG8gZ29vZy5nZXRDc3NOYW1lKCkuIEluIHVuY29tcGlsZWQK
KyAqIG1vZGUsIEphdmFTY3JpcHQgY29kZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSB0aGlzIGJh
c2UuanMgZmlsZSB0aGF0IGRlY2xhcmVzCisgKiBhIGdsb2JhbCB2YXJpYWJsZSwgQ0xPU1VSRV9D
U1NfTkFNRV9NQVBQSU5HLCB3aGljaCBpcyB1c2VkIGJlbG93LiBUaGlzIGlzCisgKiB0byBlbnN1
cmUgdGhhdCB0aGUgbWFwcGluZyBpcyBsb2FkZWQgYmVmb3JlIGFueSBjYWxscyB0byBnb29nLmdl
dENzc05hbWUoKQorICogYXJlIG1hZGUgaW4gdW5jb21waWxlZCBtb2RlLgorICoKKyAqIEEgaG9v
ayBmb3Igb3ZlcnJpZGluZyB0aGUgQ1NTIG5hbWUgbWFwcGluZy4KKyAqIEB0eXBlIHshT2JqZWN0
PHN0cmluZywgc3RyaW5nPnx1bmRlZmluZWR9CisgKi8KK2dvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NT
X05BTUVfTUFQUElORzsKKworCitpZiAoIUNPTVBJTEVEICYmIGdvb2cuZ2xvYmFsLkNMT1NVUkVf
Q1NTX05BTUVfTUFQUElORykgeworICAvLyBUaGlzIGRvZXMgbm90IGNhbGwgZ29vZy5zZXRDc3NO
YW1lTWFwcGluZygpIGJlY2F1c2UgdGhlIEpTQ29tcGlsZXIKKyAgLy8gcmVxdWlyZXMgdGhhdCBn
b29nLnNldENzc05hbWVNYXBwaW5nKCkgYmUgY2FsbGVkIHdpdGggYW4gb2JqZWN0IGxpdGVyYWwu
CisgIGdvb2cuY3NzTmFtZU1hcHBpbmdfID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9N
QVBQSU5HOworfQorCisKKy8qKgorICogR2V0cyBhIGxvY2FsaXplZCBtZXNzYWdlLgorICoKKyAq
IFRoaXMgZnVuY3Rpb24gaXMgYSBjb21waWxlciBwcmltaXRpdmUuIElmIHlvdSBnaXZlIHRoZSBj
b21waWxlciBhIGxvY2FsaXplZAorICogbWVzc2FnZSBidW5kbGUsIGl0IHdpbGwgcmVwbGFjZSB0
aGUgc3RyaW5nIGF0IGNvbXBpbGUtdGltZSB3aXRoIGEgbG9jYWxpemVkCisgKiB2ZXJzaW9uLCBh
bmQgZXhwYW5kIGdvb2cuZ2V0TXNnIGNhbGwgdG8gYSBjb25jYXRlbmF0ZWQgc3RyaW5nLgorICoK
KyAqIE1lc3NhZ2VzIG11c3QgYmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGZvcm06CisgKiA8Y29kZT4K
KyAqIHZhciBNU0dfTkFNRSA9IGdvb2cuZ2V0TXNnKCdIZWxsbyB7JHBsYWNlaG9sZGVyfScsIHsn
cGxhY2Vob2xkZXInOiAnd29ybGQnfSk7CisgKiA8L2NvZGU+CisgKgorICogQHBhcmFtIHtzdHJp
bmd9IHN0ciBUcmFuc2xhdGFibGUgc3RyaW5nLCBwbGFjZXMgaG9sZGVycyBpbiB0aGUgZm9ybSB7
JGZvb30uCisgKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIHN0cmluZz49fSBvcHRfdmFsdWVzIE1h
cHMgcGxhY2UgaG9sZGVyIG5hbWUgdG8gdmFsdWUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IG1lc3Nh
Z2Ugd2l0aCBwbGFjZWhvbGRlcnMgZmlsbGVkLgorICovCitnb29nLmdldE1zZyA9IGZ1bmN0aW9u
KHN0ciwgb3B0X3ZhbHVlcykgeworICBpZiAob3B0X3ZhbHVlcykgeworICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKC9ce1wkKFtefV0rKX0vZywgZnVuY3Rpb24obWF0Y2gsIGtleSkgeworICAgICAgcmV0
dXJuIGtleSBpbiBvcHRfdmFsdWVzID8gb3B0X3ZhbHVlc1trZXldIDogbWF0Y2g7CisgICAgfSk7
CisgIH0KKyAgcmV0dXJuIHN0cjsKK307CisKKworLyoqCisgKiBHZXRzIGEgbG9jYWxpemVkIG1l
c3NhZ2UuIElmIHRoZSBtZXNzYWdlIGRvZXMgbm90IGhhdmUgYSB0cmFuc2xhdGlvbiwgZ2l2ZXMg
YQorICogZmFsbGJhY2sgbWVzc2FnZS4KKyAqCisgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGludHJv
ZHVjaW5nIGEgbmV3IG1lc3NhZ2UgdGhhdCBoYXMgbm90IHlldCBiZWVuCisgKiB0cmFuc2xhdGVk
IGludG8gYWxsIGxhbmd1YWdlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29tcGlsZXIg
cHJpbWl0aXZlLiBNdXN0IGJlIHVzZWQgaW4gdGhlIGZvcm06CisgKiA8Y29kZT52YXIgeCA9IGdv
b2cuZ2V0TXNnV2l0aEZhbGxiYWNrKE1TR19BLCBNU0dfQik7PC9jb2RlPgorICogd2hlcmUgTVNH
X0EgYW5kIE1TR19CIHdlcmUgaW5pdGlhbGl6ZWQgd2l0aCBnb29nLmdldE1zZy4KKyAqCisgKiBA
cGFyYW0ge3N0cmluZ30gYSBUaGUgcHJlZmVycmVkIG1lc3NhZ2UuCisgKiBAcGFyYW0ge3N0cmlu
Z30gYiBUaGUgZmFsbGJhY2sgbWVzc2FnZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGJlc3Qg
dHJhbnNsYXRlZCBtZXNzYWdlLgorICovCitnb29nLmdldE1zZ1dpdGhGYWxsYmFjayA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgcmV0dXJuIGE7Cit9OworCisKKy8qKgorICogRXhwb3NlcyBhbiB1bm9i
ZnVzY2F0ZWQgZ2xvYmFsIG5hbWVzcGFjZSBwYXRoIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LgorICog
Tm90ZSB0aGF0IGZpZWxkcyBvZiB0aGUgZXhwb3J0ZWQgb2JqZWN0ICp3aWxsKiBiZSBvYmZ1c2Nh
dGVkLCB1bmxlc3MgdGhleSBhcmUKKyAqIGV4cG9ydGVkIGluIHR1cm4gdmlhIHRoaXMgZnVuY3Rp
b24gb3IgZ29vZy5leHBvcnRQcm9wZXJ0eS4KKyAqCisgKiBBbHNvIGhhbmR5IGZvciBtYWtpbmcg
cHVibGljIGl0ZW1zIHRoYXQgYXJlIGRlZmluZWQgaW4gYW5vbnltb3VzIGNsb3N1cmVzLgorICoK
KyAqIGV4LiBnb29nLmV4cG9ydFN5bWJvbCgncHVibGljLnBhdGguRm9vJywgRm9vKTsKKyAqCisg
KiBleC4gZ29vZy5leHBvcnRTeW1ib2woJ3B1YmxpYy5wYXRoLkZvby5zdGF0aWNGdW5jdGlvbics
IEZvby5zdGF0aWNGdW5jdGlvbik7CisgKiAgICAgcHVibGljLnBhdGguRm9vLnN0YXRpY0Z1bmN0
aW9uKCk7CisgKgorICogZXguIGdvb2cuZXhwb3J0U3ltYm9sKCdwdWJsaWMucGF0aC5Gb28ucHJv
dG90eXBlLm15TWV0aG9kJywKKyAqICAgICAgICAgICAgICAgICAgICAgICBGb28ucHJvdG90eXBl
Lm15TWV0aG9kKTsKKyAqICAgICBuZXcgcHVibGljLnBhdGguRm9vKCkubXlNZXRob2QoKTsKKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gcHVibGljUGF0aCBVbm9iZnVzY2F0ZWQgbmFtZSB0byBleHBv
cnQuCisgKiBAcGFyYW0geyp9IG9iamVjdCBPYmplY3QgdGhlIG5hbWUgc2hvdWxkIHBvaW50IHRv
LgorICogQHBhcmFtIHtPYmplY3Q9fSBvcHRfb2JqZWN0VG9FeHBvcnRUbyBUaGUgb2JqZWN0IHRv
IGFkZCB0aGUgcGF0aCB0bzsgZGVmYXVsdAorICogICAgIGlzIGdvb2cuZ2xvYmFsLgorICovCitn
b29nLmV4cG9ydFN5bWJvbCA9IGZ1bmN0aW9uKHB1YmxpY1BhdGgsIG9iamVjdCwgb3B0X29iamVj
dFRvRXhwb3J0VG8pIHsKKyAgZ29vZy5leHBvcnRQYXRoXyhwdWJsaWNQYXRoLCBvYmplY3QsIG9w
dF9vYmplY3RUb0V4cG9ydFRvKTsKK307CisKKworLyoqCisgKiBFeHBvcnRzIGEgcHJvcGVydHkg
dW5vYmZ1c2NhdGVkIGludG8gdGhlIG9iamVjdCdzIG5hbWVzcGFjZS4KKyAqIGV4LiBnb29nLmV4
cG9ydFByb3BlcnR5KEZvbywgJ3N0YXRpY0Z1bmN0aW9uJywgRm9vLnN0YXRpY0Z1bmN0aW9uKTsK
KyAqIGV4LiBnb29nLmV4cG9ydFByb3BlcnR5KEZvby5wcm90b3R5cGUsICdteU1ldGhvZCcsIEZv
by5wcm90b3R5cGUubXlNZXRob2QpOworICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBPYmplY3Qg
d2hvc2Ugc3RhdGljIHByb3BlcnR5IGlzIGJlaW5nIGV4cG9ydGVkLgorICogQHBhcmFtIHtzdHJp
bmd9IHB1YmxpY05hbWUgVW5vYmZ1c2NhdGVkIG5hbWUgdG8gZXhwb3J0LgorICogQHBhcmFtIHsq
fSBzeW1ib2wgT2JqZWN0IHRoZSBuYW1lIHNob3VsZCBwb2ludCB0by4KKyAqLworZ29vZy5leHBv
cnRQcm9wZXJ0eSA9IGZ1bmN0aW9uKG9iamVjdCwgcHVibGljTmFtZSwgc3ltYm9sKSB7CisgIG9i
amVjdFtwdWJsaWNOYW1lXSA9IHN5bWJvbDsKK307CisKKworLyoqCisgKiBJbmhlcml0IHRoZSBw
cm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuCisgKgor
ICogVXNhZ2U6CisgKiA8cHJlPgorICogZnVuY3Rpb24gUGFyZW50Q2xhc3MoYSwgYikgeyB9Cisg
KiBQYXJlbnRDbGFzcy5wcm90b3R5cGUuZm9vID0gZnVuY3Rpb24oYSkgeyB9OworICoKKyAqIGZ1
bmN0aW9uIENoaWxkQ2xhc3MoYSwgYiwgYykgeworICogICBDaGlsZENsYXNzLmJhc2UodGhpcywg
J2NvbnN0cnVjdG9yJywgYSwgYik7CisgKiB9CisgKiBnb29nLmluaGVyaXRzKENoaWxkQ2xhc3Ms
IFBhcmVudENsYXNzKTsKKyAqCisgKiB2YXIgY2hpbGQgPSBuZXcgQ2hpbGRDbGFzcygnYScsICdi
JywgJ3NlZScpOworICogY2hpbGQuZm9vKCk7IC8vIFRoaXMgd29ya3MuCisgKiA8L3ByZT4KKyAq
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjaGlsZEN0b3IgQ2hpbGQgY2xhc3MuCisgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBwYXJlbnRDdG9yIFBhcmVudCBjbGFzcy4KKyAqLworZ29vZy5pbmhlcml0cyA9
IGZ1bmN0aW9uKGNoaWxkQ3RvciwgcGFyZW50Q3RvcikgeworICAvKiogQGNvbnN0cnVjdG9yICov
CisgIGZ1bmN0aW9uIHRlbXBDdG9yKCkge307CisgIHRlbXBDdG9yLnByb3RvdHlwZSA9IHBhcmVu
dEN0b3IucHJvdG90eXBlOworICBjaGlsZEN0b3Iuc3VwZXJDbGFzc18gPSBwYXJlbnRDdG9yLnBy
b3RvdHlwZTsKKyAgY2hpbGRDdG9yLnByb3RvdHlwZSA9IG5ldyB0ZW1wQ3RvcigpOworICAvKiog
QG92ZXJyaWRlICovCisgIGNoaWxkQ3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjaGlsZEN0
b3I7CisKKyAgLyoqCisgICAqIENhbGxzIHN1cGVyY2xhc3MgY29uc3RydWN0b3IvbWV0aG9kLgor
ICAgKgorICAgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlvdSB1c2UgZ29v
Zy5pbmhlcml0cyB0bworICAgKiBleHByZXNzIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcHMgYmV0
d2VlbiBjbGFzc2VzLgorICAgKgorICAgKiBOT1RFOiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9y
IGdvb2cuYmFzZSBhbmQgZm9yIHN1cGVyQ2xhc3NfCisgICAqIHByb3BlcnR5IGRlZmluZWQgaW4g
Y2hpbGRDdG9yLgorICAgKgorICAgKiBAcGFyYW0geyFPYmplY3R9IG1lIFNob3VsZCBhbHdheXMg
YmUgInRoaXMiLgorICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbWV0aG9kIG5h
bWUgdG8gY2FsbC4gQ2FsbGluZworICAgKiAgICAgc3VwZXJjbGFzcyBjb25zdHJ1Y3RvciBjYW4g
YmUgZG9uZSB3aXRoIHRoZSBzcGVjaWFsIHN0cmluZworICAgKiAgICAgJ2NvbnN0cnVjdG9yJy4K
KyAgICogQHBhcmFtIHsuLi4qfSB2YXJfYXJncyBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gc3Vw
ZXJjbGFzcworICAgKiAgICAgbWV0aG9kL2NvbnN0cnVjdG9yLgorICAgKiBAcmV0dXJuIHsqfSBU
aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBzdXBlcmNsYXNzIG1ldGhvZC9jb25zdHJ1Y3Rvci4KKyAg
ICovCisgIGNoaWxkQ3Rvci5iYXNlID0gZnVuY3Rpb24obWUsIG1ldGhvZE5hbWUsIHZhcl9hcmdz
KSB7CisgICAgLy8gQ29weWluZyB1c2luZyBsb29wIHRvIGF2b2lkIGRlb3AgZHVlIHRvIHBhc3Np
bmcgYXJndW1lbnRzIG9iamVjdCB0bworICAgIC8vIGZ1bmN0aW9uLiBUaGlzIGlzIGZhc3RlciBp
biBtYW55IEpTIGVuZ2luZXMgYXMgb2YgbGF0ZSAyMDE0LgorICAgIHZhciBhcmdzID0gbmV3IEFy
cmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgYXJnc1tpIC0gMl0gPSBhcmd1bWVudHNbaV07Cisg
ICAgfQorICAgIHJldHVybiBwYXJlbnRDdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXS5hcHBseSht
ZSwgYXJncyk7CisgIH07Cit9OworCisKKy8qKgorICogQ2FsbCB1cCB0byB0aGUgc3VwZXJjbGFz
cy4KKyAqCisgKiBJZiB0aGlzIGlzIGNhbGxlZCBmcm9tIGEgY29uc3RydWN0b3IsIHRoZW4gdGhp
cyBjYWxscyB0aGUgc3VwZXJjbGFzcworICogY29uc3RydWN0b3Igd2l0aCBhcmd1bWVudHMgMS1O
LgorICoKKyAqIElmIHRoaXMgaXMgY2FsbGVkIGZyb20gYSBwcm90b3R5cGUgbWV0aG9kLCB0aGVu
IHlvdSBtdXN0IHBhc3MgdGhlIG5hbWUgb2YgdGhlCisgKiBtZXRob2QgYXMgdGhlIHNlY29uZCBh
cmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uLiBJZiB5b3UgZG8gbm90LCB5b3Ugd2lsbCBnZXQgYQor
ICogcnVudGltZSBlcnJvci4gVGhpcyBjYWxscyB0aGUgc3VwZXJjbGFzcycgbWV0aG9kIHdpdGgg
YXJndW1lbnRzIDItTi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3MgaWYgeW91IHVz
ZSBnb29nLmluaGVyaXRzIHRvIGV4cHJlc3MgaW5oZXJpdGFuY2UKKyAqIHJlbGF0aW9uc2hpcHMg
YmV0d2VlbiB5b3VyIGNsYXNzZXMuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBhIGNvbXBpbGVy
IHByaW1pdGl2ZS4gQXQgY29tcGlsZS10aW1lLCB0aGUgY29tcGlsZXIgd2lsbCBkbworICogbWFj
cm8gZXhwYW5zaW9uIHRvIHJlbW92ZSBhIGxvdCBvZiB0aGUgZXh0cmEgb3ZlcmhlYWQgdGhhdCB0
aGlzIGZ1bmN0aW9uCisgKiBpbnRyb2R1Y2VzLiBUaGUgY29tcGlsZXIgd2lsbCBhbHNvIGVuZm9y
Y2UgYSBsb3Qgb2YgdGhlIGFzc3VtcHRpb25zIHRoYXQgdGhpcworICogZnVuY3Rpb24gbWFrZXMs
IGFuZCB0cmVhdCBpdCBhcyBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSBicmVhayB0aGVtLgorICoK
KyAqIEBwYXJhbSB7IU9iamVjdH0gbWUgU2hvdWxkIGFsd2F5cyBiZSAidGhpcyIuCisgKiBAcGFy
YW0geyo9fSBvcHRfbWV0aG9kTmFtZSBUaGUgbWV0aG9kIG5hbWUgaWYgY2FsbGluZyBhIHN1cGVy
IG1ldGhvZC4KKyAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgVGhlIHJlc3Qgb2YgdGhlIGFyZ3Vt
ZW50cy4KKyAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3Mg
bWV0aG9kLgorICogQHN1cHByZXNzIHtlczVTdHJpY3R9IFRoaXMgbWV0aG9kIGNhbiBub3QgYmUg
dXNlZCBpbiBzdHJpY3QgbW9kZSwgYnV0CisgKiAgICAgYWxsIENsb3N1cmUgTGlicmFyeSBjb25z
dW1lcnMgbXVzdCBkZXBlbmQgb24gdGhpcyBmaWxlLgorICovCitnb29nLmJhc2UgPSBmdW5jdGlv
bihtZSwgb3B0X21ldGhvZE5hbWUsIHZhcl9hcmdzKSB7CisgIHZhciBjYWxsZXIgPSBhcmd1bWVu
dHMuY2FsbGVlLmNhbGxlcjsKKworICBpZiAoZ29vZy5TVFJJQ1RfTU9ERV9DT01QQVRJQkxFIHx8
IChnb29nLkRFQlVHICYmICFjYWxsZXIpKSB7CisgICAgdGhyb3cgRXJyb3IoJ2FyZ3VtZW50cy5j
YWxsZXIgbm90IGRlZmluZWQuICBnb29nLmJhc2UoKSBjYW5ub3QgYmUgdXNlZCAnICsKKyAgICAg
ICAgICAgICAgICAnd2l0aCBzdHJpY3QgbW9kZSBjb2RlLiBTZWUgJyArCisgICAgICAgICAgICAg
ICAgJ2h0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy1D
Jyk7CisgIH0KKworICBpZiAoY2FsbGVyLnN1cGVyQ2xhc3NfKSB7CisgICAgLy8gQ29weWluZyB1
c2luZyBsb29wIHRvIGF2b2lkIGRlb3AgZHVlIHRvIHBhc3NpbmcgYXJndW1lbnRzIG9iamVjdCB0
bworICAgIC8vIGZ1bmN0aW9uLiBUaGlzIGlzIGZhc3RlciBpbiBtYW55IEpTIGVuZ2luZXMgYXMg
b2YgbGF0ZSAyMDE0LgorICAgIHZhciBjdG9yQXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVu
Z3RoIC0gMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIGN0b3JBcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgLy8g
VGhpcyBpcyBhIGNvbnN0cnVjdG9yLiBDYWxsIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLgor
ICAgIHJldHVybiBjYWxsZXIuc3VwZXJDbGFzc18uY29uc3RydWN0b3IuYXBwbHkobWUsIGN0b3JB
cmdzKTsKKyAgfQorCisgIC8vIENvcHlpbmcgdXNpbmcgbG9vcCB0byBhdm9pZCBkZW9wIGR1ZSB0
byBwYXNzaW5nIGFyZ3VtZW50cyBvYmplY3QgdG8KKyAgLy8gZnVuY3Rpb24uIFRoaXMgaXMgZmFz
dGVyIGluIG1hbnkgSlMgZW5naW5lcyBhcyBvZiBsYXRlIDIwMTQuCisgIHZhciBhcmdzID0gbmV3
IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTsKKyAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICBhcmdzW2kgLSAyXSA9IGFyZ3VtZW50c1tpXTsKKyAg
fQorICB2YXIgZm91bmRDYWxsZXIgPSBmYWxzZTsKKyAgZm9yICh2YXIgY3RvciA9IG1lLmNvbnN0
cnVjdG9yOworICAgICAgIGN0b3I7IGN0b3IgPSBjdG9yLnN1cGVyQ2xhc3NfICYmIGN0b3Iuc3Vw
ZXJDbGFzc18uY29uc3RydWN0b3IpIHsKKyAgICBpZiAoY3Rvci5wcm90b3R5cGVbb3B0X21ldGhv
ZE5hbWVdID09PSBjYWxsZXIpIHsKKyAgICAgIGZvdW5kQ2FsbGVyID0gdHJ1ZTsKKyAgICB9IGVs
c2UgaWYgKGZvdW5kQ2FsbGVyKSB7CisgICAgICByZXR1cm4gY3Rvci5wcm90b3R5cGVbb3B0X21l
dGhvZE5hbWVdLmFwcGx5KG1lLCBhcmdzKTsKKyAgICB9CisgIH0KKworICAvLyBJZiB3ZSBkaWQg
bm90IGZpbmQgdGhlIGNhbGxlciBpbiB0aGUgcHJvdG90eXBlIGNoYWluLCB0aGVuIG9uZSBvZiB0
d28KKyAgLy8gdGhpbmdzIGhhcHBlbmVkOgorICAvLyAxKSBUaGUgY2FsbGVyIGlzIGFuIGluc3Rh
bmNlIG1ldGhvZC4KKyAgLy8gMikgVGhpcyBtZXRob2Qgd2FzIG5vdCBjYWxsZWQgYnkgdGhlIHJp
Z2h0IGNhbGxlci4KKyAgaWYgKG1lW29wdF9tZXRob2ROYW1lXSA9PT0gY2FsbGVyKSB7CisgICAg
cmV0dXJuIG1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZVtvcHRfbWV0aG9kTmFtZV0uYXBwbHkobWUs
IGFyZ3MpOworICB9IGVsc2UgeworICAgIHRocm93IEVycm9yKAorICAgICAgICAnZ29vZy5iYXNl
IGNhbGxlZCBmcm9tIGEgbWV0aG9kIG9mIG9uZSBuYW1lICcgKworICAgICAgICAndG8gYSBtZXRo
b2Qgb2YgYSBkaWZmZXJlbnQgbmFtZScpOworICB9Cit9OworCisKKy8qKgorICogQWxsb3cgZm9y
IGFsaWFzaW5nIHdpdGhpbiBzY29wZSBmdW5jdGlvbnMuICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBm
b3IKKyAqIHVuY29tcGlsZWQgY29kZSAtIGluIGNvbXBpbGVkIGNvZGUgdGhlIGNhbGxzIHdpbGwg
YmUgaW5saW5lZCBhbmQgdGhlIGFsaWFzZXMKKyAqIGFwcGxpZWQuICBJbiB1bmNvbXBpbGVkIGNv
ZGUgdGhlIGZ1bmN0aW9uIGlzIHNpbXBseSBydW4gc2luY2UgdGhlIGFsaWFzZXMgYXMKKyAqIHdy
aXR0ZW4gYXJlIHZhbGlkIEphdmFTY3JpcHQuCisgKgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
KX0gZm4gRnVuY3Rpb24gdG8gY2FsbC4gIFRoaXMgZnVuY3Rpb24gY2FuIGNvbnRhaW4gYWxpYXNl
cworICogICAgIHRvIG5hbWVzcGFjZXMgKGUuZy4gInZhciBkb20gPSBnb29nLmRvbSIpIG9yIGNs
YXNzZXMKKyAqICAgICAoZS5nLiAidmFyIFRpbWVyID0gZ29vZy5UaW1lciIpLgorICovCitnb29n
LnNjb3BlID0gZnVuY3Rpb24oZm4pIHsKKyAgZm4uY2FsbChnb29nLmdsb2JhbCk7Cit9OworCisK
Ky8qCisgKiBUbyBzdXBwb3J0IHVuY29tcGlsZWQsIHN0cmljdCBtb2RlIGJ1bmRsZXMgdGhhdCB1
c2UgZXZhbCB0byBkaXZpZGUgc291cmNlCisgKiBsaWtlIHNvOgorICogICAgZXZhbCgnc29tZVNv
dXJjZTsvLyMgc291cmNlVXJsIHNvdXJjZWZpbGUuanMnKTsKKyAqIFdlIG5lZWQgdG8gZXhwb3J0
IHRoZSBnbG9iYWxseSBkZWZpbmVkIHN5bWJvbHMgImdvb2ciIGFuZCAiQ09NUElMRUQiLgorICog
RXhwb3J0aW5nICJnb29nIiBicmVha3MgdGhlIGNvbXBpbGVyIG9wdGltaXphdGlvbnMsIHNvIHdl
IHJlcXVpcmVkIHRoYXQKKyAqIGJlIGRlZmluZWQgZXh0ZXJuYWxseS4KKyAqIE5PVEU6IFdlIGRv
bid0IHVzZSBnb29nLmV4cG9ydFN5bWJvbCBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byB0
cmlnZ2VyCisgKiBleHRlcm4gZ2VuZXJhdGlvbiB3aGVuIHRoYXQgY29tcGlsZXIgb3B0aW9uIGlz
IGVuYWJsZWQuCisgKi8KK2lmICghQ09NUElMRUQpIHsKKyAgZ29vZy5nbG9iYWxbJ0NPTVBJTEVE
J10gPSBDT01QSUxFRDsKK30KKworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBnb29n
LmRlZmluZUNsYXNzIGltcGxlbWVudGF0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisK
Ky8qKgorICogQ3JlYXRlcyBhIHJlc3RyaWN0ZWQgZm9ybSBvZiBhIENsb3N1cmUgImNsYXNzIjoK
KyAqICAgLSBmcm9tIHRoZSBjb21waWxlcidzIHBlcnNwZWN0aXZlLCB0aGUgaW5zdGFuY2UgcmV0
dXJuZWQgZnJvbSB0aGUKKyAqICAgICBjb25zdHJ1Y3RvciBpcyBzZWFsZWQgKG5vIG5ldyBwcm9w
ZXJ0aWVzIG1heSBiZSBhZGRlZCkuICBUaGlzIGVuYWJsZXMKKyAqICAgICBiZXR0ZXIgY2hlY2tz
LgorICogICAtIHRoZSBjb21waWxlciB3aWxsIHJld3JpdGUgdGhpcyBkZWZpbml0aW9uIHRvIGEg
Zm9ybSB0aGF0IGlzIG9wdGltYWwKKyAqICAgICBmb3IgdHlwZSBjaGVja2luZyBhbmQgb3B0aW1p
emF0aW9uIChpbml0aWFsbHkgdGhpcyB3aWxsIGJlIGEgbW9yZQorICogICAgIHRyYWRpdGlvbmFs
IGZvcm0pLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyQ2xhc3MgVGhlIHN1cGVyY2xh
c3MsIE9iamVjdCBvciBudWxsLgorICogQHBhcmFtIHtnb29nLmRlZmluZUNsYXNzLkNsYXNzRGVz
Y3JpcHRvcn0gZGVmCisgKiAgICAgQW4gb2JqZWN0IGxpdGVyYWwgZGVzY3JpYmluZworICogICAg
IHRoZSBjbGFzcy4gIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKyAqICAg
ICAiY29uc3RydWN0b3IiOiB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24KKyAqICAgICAic3RhdGlj
cyI6IGFuIG9iamVjdCBsaXRlcmFsIGNvbnRhaW5pbmcgbWV0aG9kcyB0byBhZGQgdG8gdGhlIGNv
bnN0cnVjdG9yCisgKiAgICAgICAgYXMgInN0YXRpYyIgbWV0aG9kcyBvciBhIGZ1bmN0aW9uIHRo
YXQgd2lsbCByZWNlaXZlIHRoZSBjb25zdHJ1Y3RvcgorICogICAgICAgIGZ1bmN0aW9uIGFzIGl0
cyBvbmx5IHBhcmFtZXRlciB0byB3aGljaCBzdGF0aWMgcHJvcGVydGllcyBjYW4KKyAqICAgICAg
ICBiZSBhZGRlZC4KKyAqICAgICBhbGwgb3RoZXIgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gdGhl
IHByb3RvdHlwZS4KKyAqIEByZXR1cm4geyFGdW5jdGlvbn0gVGhlIGNsYXNzIGNvbnN0cnVjdG9y
LgorICovCitnb29nLmRlZmluZUNsYXNzID0gZnVuY3Rpb24oc3VwZXJDbGFzcywgZGVmKSB7Cisg
IC8vIFRPRE8oam9obmxlbnopOiBjb25zaWRlciBtYWtpbmcgdGhlIHN1cGVyQ2xhc3MgYW4gb3B0
aW9uYWwgcGFyYW1ldGVyLgorICB2YXIgY29uc3RydWN0b3IgPSBkZWYuY29uc3RydWN0b3I7Cisg
IHZhciBzdGF0aWNzID0gZGVmLnN0YXRpY3M7CisgIC8vIFdyYXAgdGhlIGNvbnN0cnVjdG9yIHBy
aW9yIHRvIHNldHRpbmcgdXAgdGhlIHByb3RvdHlwZSBhbmQgc3RhdGljIG1ldGhvZHMuCisgIGlm
ICghY29uc3RydWN0b3IgfHwgY29uc3RydWN0b3IgPT0gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1
Y3RvcikgeworICAgIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24oKSB7CisgICAgICB0aHJvdyBFcnJv
cignY2Fubm90IGluc3RhbnRpYXRlIGFuIGludGVyZmFjZSAobm8gY29uc3RydWN0b3IgZGVmaW5l
ZCkuJyk7CisgICAgfTsKKyAgfQorCisgIHZhciBjbHMgPSBnb29nLmRlZmluZUNsYXNzLmNyZWF0
ZVNlYWxpbmdDb25zdHJ1Y3Rvcl8oY29uc3RydWN0b3IsIHN1cGVyQ2xhc3MpOworICBpZiAoc3Vw
ZXJDbGFzcykgeworICAgIGdvb2cuaW5oZXJpdHMoY2xzLCBzdXBlckNsYXNzKTsKKyAgfQorCisg
IC8vIFJlbW92ZSBhbGwgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIGNvcGllZCB0
byB0aGUgcHJvdG90eXBlLgorICBkZWxldGUgZGVmLmNvbnN0cnVjdG9yOworICBkZWxldGUgZGVm
LnN0YXRpY3M7CisKKyAgZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGNscy5wcm90
b3R5cGUsIGRlZik7CisgIGlmIChzdGF0aWNzICE9IG51bGwpIHsKKyAgICBpZiAoc3RhdGljcyBp
bnN0YW5jZW9mIEZ1bmN0aW9uKSB7CisgICAgICBzdGF0aWNzKGNscyk7CisgICAgfSBlbHNlIHsK
KyAgICAgIGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjbHMsIHN0YXRpY3MpOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBjbHM7Cit9OworCisKKy8qKgorICogQHR5cGVkZWYgewor
ICogICAgICFPYmplY3R8CisgKiAgICAge2NvbnN0cnVjdG9yOiFGdW5jdGlvbn18CisgKiAgICAg
e2NvbnN0cnVjdG9yOiFGdW5jdGlvbiwgc3RhdGljczooT2JqZWN0fGZ1bmN0aW9uKEZ1bmN0aW9u
KTp2b2lkKX19CisgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm92aWRlfQorICovCitnb29nLmRlZmlu
ZUNsYXNzLkNsYXNzRGVzY3JpcHRvcjsKKworCisvKioKKyAqIEBkZWZpbmUge2Jvb2xlYW59IFdo
ZXRoZXIgdGhlIGluc3RhbmNlcyByZXR1cm5lZCBieQorICogZ29vZy5kZWZpbmVDbGFzcyBzaG91
bGQgYmUgc2VhbGVkIHdoZW4gcG9zc2libGUuCisgKi8KK2dvb2cuZGVmaW5lKCdnb29nLmRlZmlu
ZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTJywgZ29vZy5ERUJVRyk7CisKKworLyoqCisgKiBJ
ZiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTIGlzIGVuYWJsZWQgYW5kIE9i
amVjdC5zZWFsIGlzCisgKiBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgd3JhcCB0aGUgY29u
c3RydWN0b3IgaW4gYSBmdW5jdGlvbiB0aGF0IHNlYWxzIHRoZQorICogcmVzdWx0cyBvZiB0aGUg
cHJvdmlkZWQgY29uc3RydWN0b3IgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIHshRnVuY3Rpb259
IGN0ciBUaGUgY29uc3RydWN0b3Igd2hvc2UgcmVzdWx0cyBtYXliZSBiZSBzZWFsZWQuCisgKiBA
cGFyYW0ge0Z1bmN0aW9ufSBzdXBlckNsYXNzIFRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLgor
ICogQHJldHVybiB7IUZ1bmN0aW9ufSBUaGUgcmVwbGFjZW1lbnQgY29uc3RydWN0b3IuCisgKiBA
cHJpdmF0ZQorICovCitnb29nLmRlZmluZUNsYXNzLmNyZWF0ZVNlYWxpbmdDb25zdHJ1Y3Rvcl8g
PSBmdW5jdGlvbihjdHIsIHN1cGVyQ2xhc3MpIHsKKyAgaWYgKGdvb2cuZGVmaW5lQ2xhc3MuU0VB
TF9DTEFTU19JTlNUQU5DRVMgJiYKKyAgICAgIE9iamVjdC5zZWFsIGluc3RhbmNlb2YgRnVuY3Rp
b24pIHsKKyAgICAvLyBEb24ndCBzZWFsIHN1YmNsYXNzZXMgb2YgdW5zZWFsYWJsZS10YWdnZWQg
bGVnYWN5IGNsYXNzZXMuCisgICAgaWYgKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5
cGUgJiYKKyAgICAgICAgc3VwZXJDbGFzcy5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNU
UlVDVE9SX1BST1BFUlRZX10pIHsKKyAgICAgIHJldHVybiBjdHI7CisgICAgfQorICAgIC8qKgor
ICAgICAqIEB0aGlzIHtPYmplY3R9CisgICAgICogQHJldHVybiB7P30KKyAgICAgKi8KKyAgICB2
YXIgd3JhcHBlZEN0ciA9IGZ1bmN0aW9uKCkgeworICAgICAgLy8gRG9uJ3Qgc2VhbCBhbiBpbnN0
YW5jZSBvZiBhIHN1YmNsYXNzIHdoZW4gaXQgY2FsbHMgdGhlIGNvbnN0cnVjdG9yIG9mCisgICAg
ICAvLyBpdHMgc3VwZXIgY2xhc3MgYXMgdGhlcmUgaXMgbW9zdCBsaWtlbHkgc3RpbGwgc2V0dXAg
dG8gZG8uCisgICAgICB2YXIgaW5zdGFuY2UgPSBjdHIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8
fCB0aGlzOworICAgICAgaW5zdGFuY2VbZ29vZy5VSURfUFJPUEVSVFlfXSA9IGluc3RhbmNlW2dv
b2cuVUlEX1BST1BFUlRZX107CisgICAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9PT0gd3JhcHBl
ZEN0cikgeworICAgICAgICBPYmplY3Quc2VhbChpbnN0YW5jZSk7CisgICAgICB9CisgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CisgICAgfTsKKyAgICByZXR1cm4gd3JhcHBlZEN0cjsKKyAgfQorICBy
ZXR1cm4gY3RyOworfTsKKworCisvLyBUT0RPKGpvaG5sZW56KTogc2hhcmUgdGhlc2UgdmFsdWVz
IHdpdGggdGhlIGdvb2cub2JqZWN0CisvKioKKyAqIFRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIHRo
YXQgYXJlIGRlZmluZWQgb24gT2JqZWN0LnByb3RvdHlwZS4KKyAqIEB0eXBlIHshQXJyYXk8c3Ry
aW5nPn0KKyAqIEBwcml2YXRlCisgKiBAY29uc3QKKyAqLworZ29vZy5kZWZpbmVDbGFzcy5PQkpF
Q1RfUFJPVE9UWVBFX0ZJRUxEU18gPSBbCisgICdjb25zdHJ1Y3RvcicsCisgICdoYXNPd25Qcm9w
ZXJ0eScsCisgICdpc1Byb3RvdHlwZU9mJywKKyAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywKKyAg
J3RvTG9jYWxlU3RyaW5nJywKKyAgJ3RvU3RyaW5nJywKKyAgJ3ZhbHVlT2YnCitdOworCisKKy8v
IFRPRE8oam9obmxlbnopOiBzaGFyZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGdvb2cub2JqZWN0
CisvKioKKyAqIEBwYXJhbSB7IU9iamVjdH0gdGFyZ2V0IFRoZSBvYmplY3QgdG8gYWRkIHByb3Bl
cnRpZXMgdG8uCisgKiBAcGFyYW0geyFPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkg
cHJvcGVydGllcyBmcm9tLgorICogQHByaXZhdGUKKyAqLworZ29vZy5kZWZpbmVDbGFzcy5hcHBs
eVByb3BlcnRpZXNfID0gZnVuY3Rpb24odGFyZ2V0LCBzb3VyY2UpIHsKKyAgLy8gVE9ETyhqb2hu
bGVueik6IHVwZGF0ZSB0aGlzIHRvIHN1cHBvcnQgRVM1IGdldHRlcnMvc2V0dGVycworCisgIHZh
ciBrZXk7CisgIGZvciAoa2V5IGluIHNvdXJjZSkgeworICAgIGlmIChPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7CisgICAgICB0YXJnZXRba2V5XSA9
IHNvdXJjZVtrZXldOworICAgIH0KKyAgfQorCisgIC8vIEZvciBJRSB0aGUgZm9yLWluLWxvb3Ag
ZG9lcyBub3QgY29udGFpbiBhbnkgcHJvcGVydGllcyB0aGF0IGFyZSBub3QKKyAgLy8gZW51bWVy
YWJsZSBvbiB0aGUgcHJvdG90eXBlIG9iamVjdCAoZm9yIGV4YW1wbGUgaXNQcm90b3R5cGVPZiBm
cm9tCisgIC8vIE9iamVjdC5wcm90b3R5cGUpIGFuZCBpdCB3aWxsIGFsc28gbm90IGluY2x1ZGUg
J3JlcGxhY2UnIG9uIG9iamVjdHMgdGhhdAorICAvLyBleHRlbmQgU3RyaW5nIGFuZCBjaGFuZ2Ug
J3JlcGxhY2UnIChub3QgdGhhdCBpdCBpcyBjb21tb24gZm9yIGFueW9uZSB0bworICAvLyBleHRl
bmQgYW55dGhpbmcgZXhjZXB0IE9iamVjdCkuCisgIGZvciAodmFyIGkgPSAwOyBpIDwgZ29vZy5k
ZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoOyBpKyspIHsKKyAgICBr
ZXkgPSBnb29nLmRlZmluZUNsYXNzLk9CSkVDVF9QUk9UT1RZUEVfRklFTERTX1tpXTsKKyAgICBp
ZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgewor
ICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKKyAgICB9CisgIH0KK307CisKKworLyoq
CisgKiBTZWFsaW5nIGNsYXNzZXMgYnJlYWtzIHRoZSBvbGRlciBpZGlvbSBvZiBhc3NpZ25pbmcg
cHJvcGVydGllcyBvbiB0aGUKKyAqIHByb3RvdHlwZSByYXRoZXIgdGhhbiBpbiB0aGUgY29uc3Ry
dWN0b3IuICBBcyBzdWNoLCBnb29nLmRlZmluZUNsYXNzCisgKiBtdXN0IG5vdCBzZWFsIHN1YmNs
YXNzZXMgb2YgdGhlc2Ugb2xkLXN0eWxlIGNsYXNzZXMgdW50aWwgdGhleSBhcmUgZml4ZWQuCisg
KiBVbnRpbCB0aGVuLCB0aGlzIG1hcmtzIGEgY2xhc3MgYXMgImJyb2tlbiIsIGluc3RydWN0aW5n
IGRlZmluZUNsYXNzCisgKiBub3QgdG8gc2VhbCBzdWJjbGFzc2VzLgorICogQHBhcmFtIHshRnVu
Y3Rpb259IGN0ciBUaGUgbGVnYWN5IGNvbnN0cnVjdG9yIHRvIHRhZyBhcyB1bnNlYWxhYmxlLgor
ICovCitnb29nLnRhZ1Vuc2VhbGFibGVDbGFzcyA9IGZ1bmN0aW9uKGN0cikgeworICBpZiAoIUNP
TVBJTEVEICYmIGdvb2cuZGVmaW5lQ2xhc3MuU0VBTF9DTEFTU19JTlNUQU5DRVMpIHsKKyAgICBj
dHIucHJvdG90eXBlW2dvb2cuVU5TRUFMQUJMRV9DT05TVFJVQ1RPUl9QUk9QRVJUWV9dID0gdHJ1
ZTsKKyAgfQorfTsKKworCisvKioKKyAqIE5hbWUgZm9yIHVuc2VhbGFibGUgdGFnIHByb3BlcnR5
LgorICogQGNvbnN0IEBwcml2YXRlIHtzdHJpbmd9CisgKi8KK2dvb2cuVU5TRUFMQUJMRV9DT05T
VFJVQ1RPUl9QUk9QRVJUWV8gPSAnZ29vZ19kZWZpbmVDbGFzc19sZWdhY3lfdW5zZWFsYWJsZSc7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2RlcHMuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2RlcHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY0NzgyNjQzY2I4YzUwNjZkY2YzMTUzZWU4ZjM1OGI2ZWUw
MjIyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvZGVwcy5qcwpAQCAtMCww
ICsxLDE0NjUgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
LUlTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gVGhpcyBmaWxlIGhhcyBiZWVuIGF1dG8t
Z2VuZXJhdGVkIGJ5IEdlbkpzRGVwcywgcGxlYXNlIGRvIG5vdCBlZGl0LgorCitnb29nLmFkZERl
cGVuZGVuY3koJy4uLy4uL3RoaXJkX3BhcnR5L2Nsb3N1cmUvZ29vZy9jYWphL3N0cmluZy9odG1s
L2h0bWxwYXJzZXIuanMnLCBbJ2dvb2cuc3RyaW5nLmh0bWwuSHRtbFBhcnNlcicsICdnb29nLnN0
cmluZy5odG1sLkh0bWxQYXJzZXIuRUZsYWdzJywgJ2dvb2cuc3RyaW5nLmh0bWwuSHRtbFBhcnNl
ci5FbGVtZW50cycsICdnb29nLnN0cmluZy5odG1sLkh0bWxQYXJzZXIuRW50aXRpZXMnLCAnZ29v
Zy5zdHJpbmcuaHRtbC5IdG1sU2F4SGFuZGxlciddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvY2FqYS9zdHJpbmcvaHRtbC9o
dG1sc2FuaXRpemVyLmpzJywgWydnb29nLnN0cmluZy5odG1sLkh0bWxTYW5pdGl6ZXInLCAnZ29v
Zy5zdHJpbmcuaHRtbC5IdG1sU2FuaXRpemVyLkF0dHJpYnV0ZVR5cGUnLCAnZ29vZy5zdHJpbmcu
aHRtbC5IdG1sU2FuaXRpemVyLkF0dHJpYnV0ZXMnLCAnZ29vZy5zdHJpbmcuaHRtbC5odG1sU2Fu
aXRpemUnXSwgWydnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInLCAnZ29vZy5zdHJpbmcuaHRtbC5I
dG1sUGFyc2VyJywgJ2dvb2cuc3RyaW5nLmh0bWwuSHRtbFBhcnNlci5FRmxhZ3MnLCAnZ29vZy5z
dHJpbmcuaHRtbC5IdG1sUGFyc2VyLkVsZW1lbnRzJywgJ2dvb2cuc3RyaW5nLmh0bWwuSHRtbFNh
eEhhbmRsZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0
eS9jbG9zdXJlL2dvb2cvZG9qby9kb20vcXVlcnkuanMnLCBbJ2dvb2cuZG9tLnF1ZXJ5J10sIFsn
Z29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZycs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uL3Ro
aXJkX3BhcnR5L2Nsb3N1cmUvZ29vZy9qcGVnX2VuY29kZXIvanBlZ19lbmNvZGVyX2Jhc2ljLmpz
JywgWydnb29nLmNyeXB0LkpwZWdFbmNvZGVyJ10sIFsnZ29vZy5jcnlwdC5iYXNlNjQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cv
bG9yZW1pcHN1bS90ZXh0L2xvcmVtaXBzdW0uanMnLCBbJ2dvb2cudGV4dC5Mb3JlbUlwc3VtJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLm1hdGgnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJ1Y3Rz
Lk1hcCcsICdnb29nLnN0cnVjdHMuU2V0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
Li4vLi4vdGhpcmRfcGFydHkvY2xvc3VyZS9nb29nL21vY2hpa2l0L2FzeW5jL2RlZmVycmVkLmpz
JywgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQuQWxyZWFkeUNh
bGxlZEVycm9yJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQuQ2FuY2VsZWRFcnJvciddLCBbJ2dvb2cu
UHJvbWlzZScsICdnb29nLlRoZW5hYmxlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywg
J2dvb2cuZGVidWcuRXJyb3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90
aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWRsaXN0LmpzJywg
Wydnb29nLmFzeW5jLkRlZmVycmVkTGlzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cv
b3NhcGkvb3NhcGkuanMnLCBbJ2dvb2cub3NhcGknXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnLi4vLi4vdGhpcmRfcGFydHkvY2xvc3VyZS9nb29nL3N2Z3Bhbi9zdmdwYW4uanMn
LCBbJ3N2Z3Bhbi5TdmdQYW4nXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5ldmVudHMnLCAn
Z29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxIYW5kbGVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL2Fubm91bmNlci5qcycsIFsn
Z29vZy5hMTF5LmFyaWEuQW5ub3VuY2VyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGlt
ZXInLCAnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuTGl2ZVByaW9yaXR5JywgJ2dv
b2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29v
Zy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYW5ub3Vu
Y2VyX3Rlc3QuanMnLCBbJ2dvb2cuYTExeS5hcmlhLkFubm91bmNlclRlc3QnXSwgWydnb29nLmEx
MXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Bbm5vdW5jZXInLCAnZ29vZy5hMTF5LmFyaWEuTGl2
ZVByaW9yaXR5JywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5k
b20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5pZnJhbWUnLCAnZ29vZy50ZXN0aW5n
Lk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnYTExeS9hcmlhL2FyaWEuanMnLCBbJ2dvb2cuYTExeS5hcmlhJ10sIFsnZ29vZy5h
MTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmExMXkuYXJpYS5k
YXRhdGFibGVzJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dv
b2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYXJpYV90ZXN0LmpzJywgWydnb29nLmExMXku
YXJpYVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dv
b2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2ExMXkvYXJp
YS9hdHRyaWJ1dGVzLmpzJywgWydnb29nLmExMXkuYXJpYS5BdXRvQ29tcGxldGVWYWx1ZXMnLCAn
Z29vZy5hMTF5LmFyaWEuQ2hlY2tlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5Ecm9wRWZmZWN0
VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLkV4cGFuZGVkVmFsdWVzJywgJ2dvb2cuYTExeS5hcmlh
LkdyYWJiZWRWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuSW52YWxpZFZhbHVlcycsICdnb29nLmEx
MXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5hMTF5LmFyaWEuT3JpZW50YXRpb25WYWx1ZXMn
LCAnZ29vZy5hMTF5LmFyaWEuUHJlc3NlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5SZWxldmFu
dFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5TZWxlY3RlZFZhbHVlcycsICdnb29nLmExMXkuYXJp
YS5Tb3J0VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2ExMXkvYXJpYS9kYXRhdGFibGVzLmpzJywgWydnb29nLmExMXkuYXJp
YS5kYXRhdGFibGVzJ10sIFsnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5vYmplY3QnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvcm9sZXMuanMnLCBbJ2dvb2cu
YTExeS5hcmlhLlJvbGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnYXJyYXkv
YXJyYXkuanMnLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hcnJheS5BcnJheUxpa2UnXSwgWydnb29n
LmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhcnJheS9hcnJheV90ZXN0
LmpzJywgWydnb29nLmFycmF5VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29v
Zy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2Fzc2VydHMvYXNzZXJ0cy5qcycsIFsnZ29vZy5hc3NlcnRzJywg
J2dvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvciddLCBbJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29v
Zy5kb20uTm9kZVR5cGUnLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdhc3NlcnRzL2Fzc2VydHNfdGVzdC5qcycsIFsnZ29vZy5hc3NlcnRzVGVzdCddLCBbJ2dv
b2cuYXNzZXJ0cycsICdnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3InLCAnZ29vZy5kb20nLCAn
Z29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuanN1bml0Jywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvYW5p
bWF0aW9uZGVsYXkuanMnLCBbJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknXSwgWydnb29nLkRp
c3Bvc2FibGUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdhc3luYy9hbmltYXRpb25kZWxheV90ZXN0LmpzJywgWydnb29nLmFz
eW5jLkFuaW1hdGlvbkRlbGF5VGVzdCddLCBbJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAn
Z29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFj
ZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24n
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9jb25kaXRpb25hbGRlbGF5Lmpz
JywgWydnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVsYXknXSwgWydnb29nLkRpc3Bvc2FibGUnLCAn
Z29vZy5hc3luYy5EZWxheSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2Nv
bmRpdGlvbmFsZGVsYXlfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5Db25kaXRpb25hbERlbGF5VGVz
dCddLCBbJ2dvb2cuYXN5bmMuQ29uZGl0aW9uYWxEZWxheScsICdnb29nLnRlc3RpbmcuTW9ja0Ns
b2NrJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdhc3luYy9kZWxheS5qcycsIFsnZ29vZy5EZWxheScsICdnb29nLmFzeW5jLkRlbGF5J10sIFsn
Z29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdhc3luYy9kZWxheV90ZXN0LmpzJywgWydnb29nLmFzeW5jLkRlbGF5VGVzdCddLCBbJ2dv
b2cuYXN5bmMuRGVsYXknLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3Rpbmcu
anN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvZnJlZWxpc3QuanMn
LCBbJ2dvb2cuYXN5bmMuRnJlZUxpc3QnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnYXN5bmMvZnJlZWxpc3RfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5GcmVlTGlzdFRlc3QnXSwg
Wydnb29nLmFzeW5jLkZyZWVMaXN0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9uZXh0dGljay5qcycsIFsnZ29vZy5hc3luYy5uZXh0
VGljaycsICdnb29nLmFzeW5jLnRocm93RXhjZXB0aW9uJ10sIFsnZ29vZy5kZWJ1Zy5lbnRyeVBv
aW50UmVnaXN0cnknLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29n
LmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9uZXh0dGlja190ZXN0LmpzJywgWydn
b29nLmFzeW5jLm5leHRUaWNrVGVzdCddLCBbJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5k
ZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29v
Zy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIn
LCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycs
ICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvcnVuLmpzJywgWydnb29nLmFzeW5j
LnJ1biddLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlJywgJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAn
Z29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbicsICdnb29nLnRlc3Rpbmcud2F0Y2hlcnMnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9ydW5fdGVzdC5qcycsIFsnZ29vZy5hc3lu
Yy5ydW5UZXN0J10sIFsnZ29vZy5hc3luYy5ydW4nLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycs
ICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL3Rocm90dGxlLmpzJywgWydnb29nLlRo
cm90dGxlJywgJ2dvb2cuYXN5bmMuVGhyb3R0bGUnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29v
Zy5UaW1lciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL3Rocm90dGxlX3Rl
c3QuanMnLCBbJ2dvb2cuYXN5bmMuVGhyb3R0bGVUZXN0J10sIFsnZ29vZy5hc3luYy5UaHJvdHRs
ZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy93b3JrcXVldWUuanMnLCBbJ2dvb2cuYXN5
bmMuV29ya0l0ZW0nLCAnZ29vZy5hc3luYy5Xb3JrUXVldWUnXSwgWydnb29nLmFzc2VydHMnLCAn
Z29vZy5hc3luYy5GcmVlTGlzdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5j
L3dvcmtxdWV1ZV90ZXN0LmpzJywgWydnb29nLmFzeW5jLldvcmtRdWV1ZVRlc3QnXSwgWydnb29n
LmFzeW5jLldvcmtRdWV1ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnYmFzZS5qcycsIFsnZ29vZyddLCBbXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdiYXNlX21vZHVsZV90ZXN0LmpzJywgWydnb29nLmJhc2VNb2R1bGVUZXN0J10s
IFsnZ29vZy5UaW1lcicsICdnb29nLnRlc3RfbW9kdWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0
eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgdHJ1ZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2Jhc2VfdGVzdC5qcycsIFsnYW4uZXhpc3RpbmcucGF0aCcsICdkdXAuYmFzZScsICdm
YXIub3V0JywgJ2dvb2cuYmFzZVRlc3QnLCAnZ29vZy5leHBsaWNpdCcsICdnb29nLmltcGxpY2l0
LmV4cGxpY2l0JywgJ2dvb2cudGVzdCcsICdnb29nLnRlc3QubmFtZScsICdnb29nLnRlc3QubmFt
ZS5zcGFjZScsICdnb29nLnh5JywgJ2dvb2cueHkueicsICducycsICd0ZXN0RGVwLmJhciddLCBb
J2dvb2cuVGltZXInLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29n
LnRlc3RfbW9kdWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudXNlckFn
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY29sb3IvYWxwaGEuanMnLCBbJ2dv
b2cuY29sb3IuYWxwaGEnXSwgWydnb29nLmNvbG9yJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnY29sb3IvYWxwaGFfdGVzdC5qcycsIFsnZ29vZy5jb2xvci5hbHBoYVRlc3QnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuY29sb3InLCAnZ29vZy5jb2xvci5hbHBoYScsICdnb29nLnRlc3Rp
bmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY29sb3IvY29sb3IuanMn
LCBbJ2dvb2cuY29sb3InLCAnZ29vZy5jb2xvci5Ic2wnLCAnZ29vZy5jb2xvci5Ic3YnLCAnZ29v
Zy5jb2xvci5SZ2InXSwgWydnb29nLmNvbG9yLm5hbWVzJywgJ2dvb2cubWF0aCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2NvbG9yL2NvbG9yX3Rlc3QuanMnLCBbJ2dvb2cuY29sb3JU
ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNvbG9yJywgJ2dvb2cuY29sb3IubmFtZXMnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NvbG9y
L25hbWVzLmpzJywgWydnb29nLmNvbG9yLm5hbWVzJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2NyeXB0L2Flcy5qcycsIFsnZ29vZy5jcnlwdC5BZXMnXSwgWydnb29nLmFzc2Vy
dHMnLCAnZ29vZy5jcnlwdC5CbG9ja0NpcGhlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2NyeXB0L2Flc190ZXN0LmpzJywgWydnb29nLmNyeXB0LkFlc1Rlc3QnXSwgWydnb29nLmNy
eXB0JywgJ2dvb2cuY3J5cHQuQWVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9hcmM0LmpzJywgWydnb29nLmNyeXB0LkFyYzQnXSwg
Wydnb29nLmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9hcmM0
X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuQXJjNFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cu
Y3J5cHQuQXJjNCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnY3J5cHQvYmFzZTY0LmpzJywgWydnb29nLmNyeXB0LmJhc2U2NCddLCBbJ2dvb2cu
Y3J5cHQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdj
cnlwdC9iYXNlNjRfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5iYXNlNjRUZXN0J10sIFsnZ29vZy5j
cnlwdCcsICdnb29nLmNyeXB0LmJhc2U2NCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmFzZW4uanMnLCBbJ2dvb2cuY3J5cHQuYmFz
ZU4nXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmFzZW5fdGVzdC5q
cycsIFsnZ29vZy5jcnlwdC5iYXNlTlRlc3QnXSwgWydnb29nLmNyeXB0LmJhc2VOJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9ibG9i
aGFzaGVyLmpzJywgWydnb29nLmNyeXB0LkJsb2JIYXNoZXInLCAnZ29vZy5jcnlwdC5CbG9iSGFz
aGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdl
dCcsICdnb29nLmZzJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
Y3J5cHQvYmxvYmhhc2hlcl90ZXN0LmpzJywgWydnb29nLmNyeXB0LkJsb2JIYXNoZXJUZXN0J10s
IFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkJsb2JIYXNoZXInLCAnZ29vZy5jcnlwdC5NZDUn
LCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jsb2Nr
Y2lwaGVyLmpzJywgWydnb29nLmNyeXB0LkJsb2NrQ2lwaGVyJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2NyeXB0L2J5dGVzdHJpbmdfcGVyZi5qcycsIFsnZ29vZy5jcnlwdC5i
eXRlQXJyYXlUb1N0cmluZ1BlcmYnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cu
dGVzdGluZy5QZXJmb3JtYW5jZVRhYmxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
Y3J5cHQvY2JjLmpzJywgWydnb29nLmNyeXB0LkNiYyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5h
c3NlcnRzJywgJ2dvb2cuY3J5cHQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlw
dC9jYmNfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5DYmNUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdn
b29nLmNyeXB0LkFlcycsICdnb29nLmNyeXB0LkNiYycsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvY3J5cHQuanMnLCBbJ2dvb2cuY3J5
cHQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2NyeXB0L2NyeXB0X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHRUZXN0J10sIFsnZ29v
Zy5jcnlwdCcsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaC5qcycsIFsnZ29vZy5jcnlwdC5IYXNoJ10s
IFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2hhc2gzMi5qcycsIFsnZ29v
Zy5jcnlwdC5oYXNoMzInXSwgWydnb29nLmNyeXB0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnY3J5cHQvaGFzaDMyX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuaGFzaDMyVGVzdCddLCBb
J2dvb2cuY3J5cHQuaGFzaDMyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3Rp
bmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaHRlc3Rl
ci5qcycsIFsnZ29vZy5jcnlwdC5oYXNoVGVzdGVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmNy
eXB0JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLlBlcmZv
cm1hbmNlVGFibGUnLCAnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRvbScsICdnb29nLnRlc3Rpbmcu
YXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2htYWMuanMnLCBb
J2dvb2cuY3J5cHQuSG1hYyddLCBbJ2dvb2cuY3J5cHQuSGFzaCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2NyeXB0L2htYWNfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5IbWFjVGVzdCdd
LCBbJ2dvb2cuY3J5cHQuSG1hYycsICdnb29nLmNyeXB0LlNoYTEnLCAnZ29vZy5jcnlwdC5oYXNo
VGVzdGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdjcnlwdC9tZDUuanMnLCBbJ2dvb2cuY3J5cHQuTWQ1J10sIFsnZ29vZy5jcnlwdC5IYXNo
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvbWQ1X3Rlc3QuanMnLCBbJ2dv
b2cuY3J5cHQuTWQ1VGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5NZDUnLCAnZ29v
Zy5jcnlwdC5oYXNoVGVzdGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdjcnlwdC9wYmtkZjIuanMnLCBbJ2dvb2cuY3J5cHQucGJrZGYyJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0
LkhtYWMnLCAnZ29vZy5jcnlwdC5TaGExJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
Y3J5cHQvcGJrZGYyX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQucGJrZGYyVGVzdCddLCBbJ2dvb2cu
Y3J5cHQnLCAnZ29vZy5jcnlwdC5wYmtkZjInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29n
LnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTEuanMn
LCBbJ2dvb2cuY3J5cHQuU2hhMSddLCBbJ2dvb2cuY3J5cHQuSGFzaCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTFfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5TaGExVGVz
dCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5TaGExJywgJ2dvb2cuY3J5cHQuaGFzaFRl
c3RlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMi5qcycsIFsnZ29vZy5jcnlwdC5TaGEyJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5IYXNoJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMjI0LmpzJywgWydnb29nLmNyeXB0LlNo
YTIyNCddLCBbJ2dvb2cuY3J5cHQuU2hhMiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2NyeXB0L3NoYTIyNF90ZXN0LmpzJywgWydnb29nLmNyeXB0LlNoYTIyNFRlc3QnXSwgWydnb29n
LmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMjI0JywgJ2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQv
c2hhMjU2LmpzJywgWydnb29nLmNyeXB0LlNoYTI1NiddLCBbJ2dvb2cuY3J5cHQuU2hhMiddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTI1Nl90ZXN0LmpzJywgWydnb29n
LmNyeXB0LlNoYTI1NlRlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMjU2Jywg
J2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMl82NGJpdC5qcycsIFsnZ29vZy5jcnlwdC5T
aGEyXzY0Yml0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5I
YXNoJywgJ2dvb2cubWF0aC5Mb25nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnY3J5
cHQvc2hhMl82NGJpdF90ZXN0LmpzJywgWydnb29nLmNyeXB0LlNoYTJfNjRiaXRfdGVzdCddLCBb
J2dvb2cuYXJyYXknLCAnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LlNoYTM4NCcsICdnb29nLmNy
eXB0LlNoYTUxMicsICdnb29nLmNyeXB0LlNoYTUxMl8yNTYnLCAnZ29vZy5jcnlwdC5oYXNoVGVz
dGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEzODQuanMnLCBbJ2dvb2cuY3J5cHQuU2hhMzg0
J10sIFsnZ29vZy5jcnlwdC5TaGEyXzY0Yml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnY3J5cHQvc2hhNTEyLmpzJywgWydnb29nLmNyeXB0LlNoYTUxMiddLCBbJ2dvb2cuY3J5cHQu
U2hhMl82NGJpdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTUxMl8y
NTYuanMnLCBbJ2dvb2cuY3J5cHQuU2hhNTEyXzI1NiddLCBbJ2dvb2cuY3J5cHQuU2hhMl82NGJp
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Nzc29tL2Nzc29tLmpzJywgWydnb29n
LmNzc29tJywgJ2dvb2cuY3Nzb20uQ3NzUnVsZVR5cGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cu
ZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdj
c3NvbS9jc3NvbV90ZXN0LmpzJywgWydnb29nLmNzc29tVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAn
Z29vZy5jc3NvbScsICdnb29nLmNzc29tLkNzc1J1bGVUeXBlJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdjc3Nv
bS9pZnJhbWUvc3R5bGUuanMnLCBbJ2dvb2cuY3Nzb20uaWZyYW1lLnN0eWxlJ10sIFsnZ29vZy5h
c3NlcnRzJywgJ2dvb2cuY3Nzb20nLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAn
Z29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5zdHJpbmcnLCAn
Z29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2Nzc29tL2lmcmFtZS9zdHlsZV90ZXN0LmpzJywgWydnb29nLmNzc29tLmlmcmFtZS5zdHls
ZVRlc3QnXSwgWydnb29nLmNzc29tJywgJ2dvb2cuY3Nzb20uaWZyYW1lLnN0eWxlJywgJ2dvb2cu
ZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkYXRhc291cmNlL2RhdGFtYW5hZ2VyLmpzJywgWydnb29nLmRzLkRhdGFNYW5hZ2VyJ10s
IFsnZ29vZy5kcy5CYXNpY05vZGVMaXN0JywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5F
eHByJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cycsICdnb29n
LnN0cnVjdHMuTWFwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9k
YXRhc291cmNlLmpzJywgWydnb29nLmRzLkJhc2VEYXRhTm9kZScsICdnb29nLmRzLkJhc2ljTm9k
ZUxpc3QnLCAnZ29vZy5kcy5EYXRhTm9kZScsICdnb29nLmRzLkRhdGFOb2RlTGlzdCcsICdnb29n
LmRzLkVtcHR5Tm9kZUxpc3QnLCAnZ29vZy5kcy5Mb2FkU3RhdGUnLCAnZ29vZy5kcy5Tb3J0ZWRO
b2RlTGlzdCcsICdnb29nLmRzLlV0aWwnLCAnZ29vZy5kcy5sb2dnZXInXSwgWydnb29nLmFycmF5
JywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9k
YXRhc291cmNlX3Rlc3QuanMnLCBbJ2dvb2cuZHMuSnNEYXRhU291cmNlVGVzdCddLCBbJ2dvb2cu
ZG9tLnhtbCcsICdnb29nLmRzLkRhdGFNYW5hZ2VyJywgJ2dvb2cuZHMuSnNEYXRhU291cmNlJywg
J2dvb2cuZHMuU29ydGVkTm9kZUxpc3QnLCAnZ29vZy5kcy5YbWxEYXRhU291cmNlJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNl
L2V4cHIuanMnLCBbJ2dvb2cuZHMuRXhwciddLCBbJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdn
b29nLmRzLkVtcHR5Tm9kZUxpc3QnLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdkYXRhc291cmNlL2V4cHJfdGVzdC5qcycsIFsnZ29vZy5kcy5FeHByVGVzdCdd
LCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cuZHMuSnNEYXRh
U291cmNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkYXRhc291cmNlL2Zhc3RkYXRhbm9kZS5qcycsIFsnZ29vZy5kcy5BYnN0cmFjdEZhc3RE
YXRhTm9kZScsICdnb29nLmRzLkZhc3REYXRhTm9kZScsICdnb29nLmRzLkZhc3RMaXN0Tm9kZScs
ICdnb29nLmRzLlByaW1pdGl2ZUZhc3REYXRhTm9kZSddLCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXIn
LCAnZ29vZy5kcy5EYXRhTm9kZUxpc3QnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cu
c3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9mYXN0ZGF0
YW5vZGVfdGVzdC5qcycsIFsnZ29vZy5kcy5GYXN0RGF0YU5vZGVUZXN0J10sIFsnZ29vZy5hcnJh
eScsICdnb29nLmRzLkRhdGFNYW5hZ2VyJywgJ2dvb2cuZHMuRXhwcicsICdnb29nLmRzLkZhc3RE
YXRhTm9kZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZGF0YXNvdXJjZS9qc2RhdGFzb3VyY2UuanMnLCBbJ2dvb2cuZHMuSnNEYXRhU291cmNl
JywgJ2dvb2cuZHMuSnNQcm9wZXJ0eURhdGFTb3VyY2UnXSwgWydnb29nLmRzLkJhc2VEYXRhTm9k
ZScsICdnb29nLmRzLkJhc2ljTm9kZUxpc3QnLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29n
LmRzLkRhdGFOb2RlJywgJ2dvb2cuZHMuRW1wdHlOb2RlTGlzdCcsICdnb29nLmRzLkxvYWRTdGF0
ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvanNvbmRhdGFzb3Vy
Y2UuanMnLCBbJ2dvb2cuZHMuSnNvbkRhdGFTb3VyY2UnXSwgWydnb29nLlVyaScsICdnb29nLmRv
bScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5K
c0RhdGFTb3VyY2UnLCAnZ29vZy5kcy5Mb2FkU3RhdGUnLCAnZ29vZy5kcy5sb2dnZXInLCAnZ29v
Zy5sb2cnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2pzeG1saHR0
cGRhdGFzb3VyY2UuanMnLCBbJ2dvb2cuZHMuSnNYbWxIdHRwRGF0YVNvdXJjZSddLCBbJ2dvb2cu
VXJpJywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5GYXN0RGF0YU5vZGUnLCAnZ29v
Zy5kcy5Mb2FkU3RhdGUnLCAnZ29vZy5kcy5sb2dnZXInLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5s
b2cnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhocklvJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9qc3htbGh0dHBkYXRhc291cmNlX3Rlc3QuanMn
LCBbJ2dvb2cuZHMuSnNYbWxIdHRwRGF0YVNvdXJjZVRlc3QnXSwgWydnb29nLmRzLkpzWG1sSHR0
cERhdGFTb3VyY2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RRdWV1ZScsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkYXRhc291cmNlL3htbGRhdGFzb3VyY2UuanMnLCBbJ2dvb2cuZHMuWG1sRGF0YVNvdXJj
ZScsICdnb29nLmRzLlhtbEh0dHBEYXRhU291cmNlJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5kb20u
Tm9kZVR5cGUnLCAnZ29vZy5kb20ueG1sJywgJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdnb29n
LmRzLkRhdGFNYW5hZ2VyJywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5Mb2FkU3RhdGUn
LCAnZ29vZy5kcy5sb2dnZXInLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5zdHJpbmcnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGUuanMnLCBbJ2dvb2cuZGF0ZScsICdn
b29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFs
JywgJ2dvb2cuZGF0ZS5tb250aCcsICdnb29nLmRhdGUud2Vla0RheSddLCBbJ2dvb2cuYXNzZXJ0
cycsICdnb29nLmRhdGUuRGF0ZUxpa2UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdn
b29nLnN0cmluZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZGF0ZV90ZXN0
LmpzJywgWydnb29nLmRhdGVUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRhdGUnLCAnZ29v
Zy5kYXRlLkRhdGUnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcs
ICdnb29nLmRhdGUubW9udGgnLCAnZ29vZy5kYXRlLndlZWtEYXknLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9scycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3Rp
bmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnBsYXRmb3JtJywg
J2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNp
b24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGVsaWtlLmpzJywgWydn
b29nLmRhdGUuRGF0ZUxpa2UnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGF0
ZS9kYXRlcmFuZ2UuanMnLCBbJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkRhdGVS
YW5nZS5JdGVyYXRvcicsICdnb29nLmRhdGUuRGF0ZVJhbmdlLlN0YW5kYXJkRGF0ZVJhbmdlS2V5
cyddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLml0ZXIu
SXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdkYXRlL2RhdGVyYW5nZV90ZXN0LmpzJywgWydnb29nLmRhdGUuRGF0ZVJhbmdl
VGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5k
YXRlLkludGVydmFsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZHVyYXRpb24uanMn
LCBbJ2dvb2cuZGF0ZS5kdXJhdGlvbiddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdn
b29nLmkxOG4uTWVzc2FnZUZvcm1hdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Rh
dGUvZHVyYXRpb25fdGVzdC5qcycsIFsnZ29vZy5kYXRlLmR1cmF0aW9uVGVzdCddLCBbJ2dvb2cu
ZGF0ZS5kdXJhdGlvbicsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9y
ZWxhdGl2ZS5qcycsIFsnZ29vZy5kYXRlLnJlbGF0aXZlJywgJ2dvb2cuZGF0ZS5yZWxhdGl2ZS5U
aW1lRGVsdGFGb3JtYXR0ZXInLCAnZ29vZy5kYXRlLnJlbGF0aXZlLlVuaXQnXSwgWydnb29nLmkx
OG4uRGF0ZVRpbWVGb3JtYXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3Jl
bGF0aXZlX3Rlc3QuanMnLCBbJ2dvb2cuZGF0ZS5yZWxhdGl2ZVRlc3QnXSwgWydnb29nLmRhdGUu
RGF0ZVRpbWUnLCAnZ29vZy5kYXRlLnJlbGF0aXZlJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1h
dCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZGF0ZS9yZWxhdGl2ZXdpdGhwbHVyYWxzLmpzJywgWydnb29nLmRhdGUucmVsYXRpdmVXaXRoUGx1
cmFscyddLCBbJ2dvb2cuZGF0ZS5yZWxhdGl2ZScsICdnb29nLmRhdGUucmVsYXRpdmUuVW5pdCcs
ICdnb29nLmkxOG4uTWVzc2FnZUZvcm1hdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2RhdGUvcmVsYXRpdmV3aXRocGx1cmFsc190ZXN0LmpzJywgWydnb29nLmRhdGUucmVsYXRpdmVX
aXRoUGx1cmFsc1Rlc3QnXSwgWydnb29nLmRhdGUucmVsYXRpdmUnLCAnZ29vZy5kYXRlLnJlbGF0
aXZlVGVzdCcsICdnb29nLmRhdGUucmVsYXRpdmVXaXRoUGx1cmFscycsICdnb29nLmkxOG4uRGF0
ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9scycs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19lbicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mYSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvdXRjZGF0ZXRpbWUuanMnLCBbJ2dvb2cuZGF0
ZS5VdGNEYXRlVGltZSddLCBbJ2dvb2cuZGF0ZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRh
dGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZGF0ZS91dGNkYXRldGltZV90ZXN0LmpzJywgWydnb29nLmRhdGUuVXRjRGF0ZVRp
bWVUZXN0J10sIFsnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5VdGNEYXRlVGltZScs
ICdnb29nLmRhdGUubW9udGgnLCAnZ29vZy5kYXRlLndlZWtEYXknLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RiL2N1cnNvci5qcycsIFsnZ29v
Zy5kYi5DdXJzb3InXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAn
Z29vZy5kZWJ1ZycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2RiL2RiLmpzJywgWydnb29nLmRiJywgJ2dvb2cuZGIuQmxvY2tlZENhbGxi
YWNrJywgJ2dvb2cuZGIuVXBncmFkZU5lZWRlZENhbGxiYWNrJ10sIFsnZ29vZy5hc3NlcnRzJywg
J2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLkluZGV4ZWRE
YicsICdnb29nLmRiLlRyYW5zYWN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZGIvZGJfdGVzdC5qcycsIFsnZ29vZy5kYlRlc3QnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29v
Zy5hcnJheScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWRMaXN0
JywgJ2dvb2cuZGInLCAnZ29vZy5kYi5DdXJzb3InLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRi
LkluZGV4ZWREYicsICdnb29nLmRiLktleVJhbmdlJywgJ2dvb2cuZGIuVHJhbnNhY3Rpb24nLCAn
Z29vZy5ldmVudHMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2Un
LCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMn
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cu
dXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZGIvZXJyb3IuanMnLCBbJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5FcnJvci5FcnJvckNv
ZGUnLCAnZ29vZy5kYi5FcnJvci5FcnJvck5hbWUnLCAnZ29vZy5kYi5FcnJvci5WZXJzaW9uQ2hh
bmdlQmxvY2tlZEVycm9yJ10sIFsnZ29vZy5kZWJ1Zy5FcnJvciddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2RiL2luZGV4LmpzJywgWydnb29nLmRiLkluZGV4J10sIFsnZ29vZy5hc3lu
Yy5EZWZlcnJlZCcsICdnb29nLmRiLkN1cnNvcicsICdnb29nLmRiLkVycm9yJywgJ2dvb2cuZGVi
dWcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9pbmRleGVkZGIuanMnLCBbJ2dv
b2cuZGIuSW5kZXhlZERiJ10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRiLkVycm9y
JywgJ2dvb2cuZGIuT2JqZWN0U3RvcmUnLCAnZ29vZy5kYi5UcmFuc2FjdGlvbicsICdnb29nLmV2
ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZl
bnRUYXJnZXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9rZXlyYW5nZS5qcycs
IFsnZ29vZy5kYi5LZXlSYW5nZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdk
Yi9vYmplY3RzdG9yZS5qcycsIFsnZ29vZy5kYi5PYmplY3RTdG9yZSddLCBbJ2dvb2cuYXN5bmMu
RGVmZXJyZWQnLCAnZ29vZy5kYi5DdXJzb3InLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLklu
ZGV4JywgJ2dvb2cuZGVidWcnLCAnZ29vZy5ldmVudHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdkYi9vbGRfZGJfdGVzdC5qcycsIFsnZ29vZy5vbGREYlRlc3QnXSwgWydnb29nLmFz
eW5jLkRlZmVycmVkJywgJ2dvb2cuZGInLCAnZ29vZy5kYi5DdXJzb3InLCAnZ29vZy5kYi5FcnJv
cicsICdnb29nLmRiLkluZGV4ZWREYicsICdnb29nLmRiLktleVJhbmdlJywgJ2dvb2cuZGIuVHJh
bnNhY3Rpb24nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAn
Z29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJB
Z2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGIvdHJhbnNhY3Rpb24uanMnLCBbJ2dvb2cuZGIuVHJh
bnNhY3Rpb24nLCAnZ29vZy5kYi5UcmFuc2FjdGlvbi5UcmFuc2FjdGlvbk1vZGUnXSwgWydnb29n
LmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5PYmplY3RTdG9yZScs
ICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMu
RXZlbnRUYXJnZXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9jb25zb2xl
LmpzJywgWydnb29nLmRlYnVnLkNvbnNvbGUnXSwgWydnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAn
Z29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5UZXh0Rm9ybWF0dGVyJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvY29uc29sZV90ZXN0LmpzJywgWydnb29nLmRlYnVn
LkNvbnNvbGVUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Db25zb2xlJywgJ2dvb2cuZGVidWcuTG9nUmVj
b3JkJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50
ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVi
dWcvZGVidWcuanMnLCBbJ2dvb2cuZGVidWcnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaHRtbC5T
YWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVy
c2lvbnMnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJ1Y3RzLlNldCcsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RlYnVnX3Rlc3Qu
anMnLCBbJ2dvb2cuZGVidWdUZXN0J10sIFsnZ29vZy5kZWJ1ZycsICdnb29nLmh0bWwuU2FmZUh0
bWwnLCAnZ29vZy5zdHJ1Y3RzLlNldCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZGVidWd3aW5kb3cuanMnLCBbJ2dvb2cuZGVidWcu
RGVidWdXaW5kb3cnXSwgWydnb29nLmRlYnVnLkh0bWxGb3JtYXR0ZXInLCAnZ29vZy5kZWJ1Zy5M
b2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5o
dG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLnN0cmluZy5D
b25zdCcsICdnb29nLnN0cnVjdHMuQ2lyY3VsYXJCdWZmZXInLCAnZ29vZy51c2VyQWdlbnQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZWJ1Z3dpbmRvd190ZXN0LmpzJywg
Wydnb29nLmRlYnVnLkRlYnVnV2luZG93VGVzdCddLCBbJ2dvb2cuZGVidWcuRGVidWdXaW5kb3cn
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Rl
YnVnL2RldmNzcy9kZXZjc3MuanMnLCBbJ2dvb2cuZGVidWcuRGV2Q3NzJywgJ2dvb2cuZGVidWcu
RGV2Q3NzLlVzZXJBZ2VudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNzc29tJywgJ2dvb2cu
ZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAn
Z29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkZWJ1Zy9kZXZjc3MvZGV2Y3NzX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRGV2Q3NzVGVz
dCddLCBbJ2dvb2cuZGVidWcuRGV2Q3NzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RldmNzcy9kZXZjc3Ny
dW5uZXIuanMnLCBbJ2dvb2cuZGVidWcuZGV2Q3NzUnVubmVyJ10sIFsnZ29vZy5kZWJ1Zy5EZXZD
c3MnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kaXZjb25zb2xlLmpzJywg
Wydnb29nLmRlYnVnLkRpdkNvbnNvbGUnXSwgWydnb29nLmRlYnVnLkh0bWxGb3JtYXR0ZXInLCAn
Z29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2Fm
ZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHlsZSddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2RlYnVnL2VuaGFuY2VlcnJvcl90ZXN0LmpzJywgWydnb29nLmRlYnVnRW5o
YW5jZUVycm9yVGVzdCddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2VudHJ5cG9pbnRyZWdpc3RyeS5qcycs
IFsnZ29vZy5kZWJ1Zy5FbnRyeVBvaW50TW9uaXRvcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRS
ZWdpc3RyeSddLCBbJ2dvb2cuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2RlYnVnL2VudHJ5cG9pbnRyZWdpc3RyeV90ZXN0LmpzJywgWydnb29nLmRlYnVnLmVudHJ5UG9p
bnRSZWdpc3RyeVRlc3QnXSwgWydnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVn
LmVudHJ5UG9pbnRSZWdpc3RyeScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3IuanMnLCBbJ2dvb2cuZGVidWcuRXJyb3InXSwg
W10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JfdGVzdC5qcycsIFsn
Z29vZy5kZWJ1Zy5FcnJvclRlc3QnXSwgWydnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cudGVzdGlu
Zy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdl
bnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2RlYnVnL2Vycm9yaGFuZGxlci5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAn
Z29vZy5kZWJ1Zy5FcnJvckhhbmRsZXIuUHJvdGVjdGVkRnVuY3Rpb25FcnJvciddLCBbJ2dvb2cu
RGlzcG9zYWJsZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1ZycsICdnb29nLmRlYnVnLkVu
dHJ5UG9pbnRNb25pdG9yJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5kZWJ1Zy5UcmFjZSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2Vycm9yaGFuZGxlcl9hc3luY190
ZXN0LmpzJywgWydnb29nLmRlYnVnLkVycm9ySGFuZGxlckFzeW5jVGVzdCddLCBbJ2dvb2cuZGVi
dWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRs
ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tD
b250cm9sJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJ3ZWFrZGVwLmpzJywgWydnb29nLmRlYnVnLmVycm9ySGFu
ZGxlcldlYWtEZXAnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJy
b3JyZXBvcnRlci5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvclJlcG9ydGVyJywgJ2dvb2cuZGVidWcu
RXJyb3JSZXBvcnRlci5FeGNlcHRpb25FdmVudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRl
YnVnJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29v
Zy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMu
RXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQu
WGhySW8nLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51cmkudXRpbHMnLCAn
Z29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJv
cnJlcG9ydGVyX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRXJyb3JSZXBvcnRlclRlc3QnXSwgWydn
b29nLmRlYnVnLkVycm9yJywgJ2dvb2cuZGVidWcuRXJyb3JSZXBvcnRlcicsICdnb29nLmV2ZW50
cycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdn
b29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZGVidWcvZmFuY3l3aW5kb3cuanMnLCBbJ2dvb2cuZGVidWcuRmFuY3lXaW5k
b3cnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGVidWcuRGVidWdXaW5kb3cnLCAnZ29vZy5kZWJ1
Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuZG9tLkRvbUhlbHBlcics
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLlNhZmVIdG1s
JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmlu
ZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RlYnVnL2Zvcm1hdHRlci5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3JtYXR0
ZXInLCAnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuVGV4dEZvcm1hdHRl
ciddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5SZWxh
dGl2ZVRpbWVQcm92aWRlcicsICdnb29nLmh0bWwuU2FmZUh0bWwnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdkZWJ1Zy9mb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3Jt
YXR0ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuTG9n
UmVjb3JkJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZnBz
ZGlzcGxheS5qcycsIFsnZ29vZy5kZWJ1Zy5GcHNEaXNwbGF5J10sIFsnZ29vZy5hc3NlcnRzJywg
J2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLnVpLkNvbXBvbmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Rl
YnVnL2Zwc2Rpc3BsYXlfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5GcHNEaXNwbGF5VGVzdCddLCBb
J2dvb2cuZGVidWcuRnBzRGlzcGxheScsICdnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcv
Z2NkaWFnbm9zdGljcy5qcycsIFsnZ29vZy5kZWJ1Zy5HY0RpYWdub3N0aWNzJ10sIFsnZ29vZy5k
ZWJ1Zy5UcmFjZScsICdnb29nLmxvZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RlYnVnL2xvZ2J1ZmZlci5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZm
ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5Mb2dSZWNvcmQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2didWZmZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1
Zy5Mb2dCdWZmZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZmZXInLCAnZ29vZy5kZWJ1Zy5M
b2dnZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2RlYnVnL2xvZ2dlci5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVi
dWcuTG9nZ2FibGUnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXIuTGV2
ZWwnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cu
ZGVidWcuTG9nQnVmZmVyJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZGVidWcvbG9nZ2VyX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuTG9nZ2Vy
VGVzdCddLCBbJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcv
bG9ncmVjb3JkLmpzJywgWydnb29nLmRlYnVnLkxvZ1JlY29yZCddLCBbXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmRzZXJpYWxpemVyLmpzJywgWydnb29nLmRl
YnVnLmxvZ1JlY29yZFNlcmlhbGl6ZXInXSwgWydnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29n
LmRlYnVnLkxvZ2dlcicsICdnb29nLmpzb24nLCAnZ29vZy5vYmplY3QnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmRzZXJpYWxpemVyX3Rlc3QuanMnLCBbJ2dv
b2cuZGVidWcubG9nUmVjb3JkU2VyaWFsaXplclRlc3QnXSwgWydnb29nLmRlYnVnLkxvZ1JlY29y
ZCcsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRlYnVnLmxvZ1JlY29yZFNlcmlhbGl6ZXIn
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Rl
YnVnL3JlbGF0aXZldGltZXByb3ZpZGVyLmpzJywgWydnb29nLmRlYnVnLlJlbGF0aXZlVGltZVBy
b3ZpZGVyJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL3RyYWNlci5q
cycsIFsnZ29vZy5kZWJ1Zy5UcmFjZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kZWJ1Zy5Mb2dn
ZXInLCAnZ29vZy5pdGVyJywgJ2dvb2cubG9nJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy5z
dHJ1Y3RzLlNpbXBsZVBvb2wnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy90
cmFjZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5UcmFjZVRlc3QnXSwgWydnb29nLmRlYnVnLlRy
YWNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdkZWZpbmVjbGFzc190ZXN0LmpzJywgWydnb29nLmRlZmluZUNsYXNzVGVzdCddLCBbJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkaXNwb3NhYmxl
L2Rpc3Bvc2FibGUuanMnLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRpc3Bvc2UnLCAnZ29v
Zy5kaXNwb3NlQWxsJ10sIFsnZ29vZy5kaXNwb3NhYmxlLklEaXNwb3NhYmxlJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZGlzcG9zYWJsZS9kaXNwb3NhYmxlX3Rlc3QuanMnLCBbJ2dv
b2cuRGlzcG9zYWJsZVRlc3QnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdkaXNwb3NhYmxlL2lkaXNwb3NhYmxlLmpzJywgWydnb29nLmRpc3Bvc2FibGUu
SURpc3Bvc2FibGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Fic3Ry
YWN0bXVsdGlyYW5nZS5qcycsIFsnZ29vZy5kb20uQWJzdHJhY3RNdWx0aVJhbmdlJ10sIFsnZ29v
Zy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Fic3RyYWN0cmFuZ2UuanMnLCBbJ2dvb2cuZG9tLkFi
c3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5SYW5nZVR5
cGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5TYXZlZENh
cmV0UmFuZ2UnLCAnZ29vZy5kb20uVGFnSXRlcmF0b3InLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYWJzdHJhY3RyYW5nZV90ZXN0LmpzJywgWydn
b29nLmRvbS5BYnN0cmFjdFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFic3Ry
YWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2FuaW1hdGlv
bmZyYW1lL2FuaW1hdGlvbmZyYW1lLmpzJywgWydnb29nLmRvbS5hbmltYXRpb25GcmFtZScsICdn
b29nLmRvbS5hbmltYXRpb25GcmFtZS5TcGVjJywgJ2dvb2cuZG9tLmFuaW1hdGlvbkZyYW1lLlN0
YXRlJ10sIFsnZ29vZy5kb20uYW5pbWF0aW9uRnJhbWUucG9seWZpbGwnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdkb20vYW5pbWF0aW9uZnJhbWUvcG9seWZpbGwuanMnLCBbJ2dvb2cu
ZG9tLmFuaW1hdGlvbkZyYW1lLnBvbHlmaWxsJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2RvbS9hbm5vdGF0ZS5qcycsIFsnZ29vZy5kb20uYW5ub3RhdGUnLCAnZ29vZy5kb20u
YW5ub3RhdGUuQW5ub3RhdGVGbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dv
b2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5k
b20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkb20vYW5ub3RhdGVfdGVzdC5qcycsIFsnZ29vZy5kb20uYW5ub3RhdGVUZXN0J10sIFsn
Z29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5hbm5vdGF0ZScsICdnb29n
Lmh0bWwuU2FmZUh0bWwnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2RvbS9icm93c2VyZmVhdHVyZS5qcycsIFsnZ29vZy5kb20uQnJvd3NlckZl
YXR1cmUnXSwgWydnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2RvbS9icm93c2VycmFuZ2UvYWJzdHJhY3RyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJh
bmdlLkFic3RyYWN0UmFuZ2UnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29n
LmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dv
b2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uVGV4dFJhbmdlSXRlcmF0b3InLCAnZ29vZy5pdGVy
JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlN0
cmluZ0J1ZmZlcicsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2RvbS9icm93c2VycmFuZ2UvYnJvd3NlcnJhbmdlLmpzJywgWydnb29nLmRvbS5icm93c2Vy
cmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkVycm9yJ10sIFsnZ29vZy5kb20nLCAnZ29v
Zy5kb20uQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uYnJv
d3NlcnJhbmdlLkdlY2tvUmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkllUmFuZ2UnLCAn
Z29vZy5kb20uYnJvd3NlcnJhbmdlLk9wZXJhUmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdl
LlczY1JhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XZWJLaXRSYW5nZScsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2Uv
YnJvd3NlcnJhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZVRlc3QnXSwgWydn
b29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRv
bS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJvd3NlcnJh
bmdlJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2Uv
Z2Vja29yYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkdlY2tvUmFuZ2UnXSwgWydn
b29nLmRvbS5icm93c2VycmFuZ2UuVzNjUmFuZ2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdkb20vYnJvd3NlcnJhbmdlL2llcmFuZ2UuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5n
ZS5JZVJhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlw
ZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5k
b20uYnJvd3NlcnJhbmdlLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5sb2cnLCAnZ29vZy5zdHJpbmcn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcnJhbmdlL29wZXJhcmFu
Z2UuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5PcGVyYVJhbmdlJ10sIFsnZ29vZy5kb20u
YnJvd3NlcnJhbmdlLlczY1JhbmdlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9t
L2Jyb3dzZXJyYW5nZS93M2NyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLlczY1Jh
bmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdn
b29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJv
d3NlcnJhbmdlLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcnJhbmdlL3dlYmtpdHJh
bmdlLmpzJywgWydnb29nLmRvbS5icm93c2VycmFuZ2UuV2ViS2l0UmFuZ2UnXSwgWydnb29nLmRv
bS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XM2NSYW5nZScsICdnb29n
LnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9idWZmZXJlZHZp
ZXdwb3J0c2l6ZW1vbml0b3IuanMnLCBbJ2dvb2cuZG9tLkJ1ZmZlcmVkVmlld3BvcnRTaXplTW9u
aXRvciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmFzeW5jLkRlbGF5JywgJ2dvb2cuZXZlbnRz
JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9idWZmZXJlZHZpZXdwb3J0c2l6ZW1vbml0
b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uQnVmZmVyZWRWaWV3cG9ydFNpemVNb25pdG9yVGVzdCdd
LCBbJ2dvb2cuZG9tLkJ1ZmZlcmVkVmlld3BvcnRTaXplTW9uaXRvcicsICdnb29nLmRvbS5WaWV3
cG9ydFNpemVNb25pdG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScs
ICdnb29nLm1hdGguU2l6ZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGlu
Zy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NsYXNzZXMuanMnLCBbJ2dv
b2cuZG9tLmNsYXNzZXMnXSwgWydnb29nLmFycmF5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZG9tL2NsYXNzZXNfdGVzdC5qcycsIFsnZ29vZy5kb20uY2xhc3Nlc190ZXN0J10sIFsn
Z29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2VzJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vY2xhc3Ns
aXN0LmpzJywgWydnb29nLmRvbS5jbGFzc2xpc3QnXSwgWydnb29nLmFycmF5J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NsYXNzbGlzdF90ZXN0LmpzJywgWydnb29nLmRvbS5j
bGFzc2xpc3RfdGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5k
b20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vY29udHJvbHJh
bmdlLmpzJywgWydnb29nLmRvbS5Db250cm9sUmFuZ2UnLCAnZ29vZy5kb20uQ29udHJvbFJhbmdl
SXRlcmF0b3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFic3RyYWN0
TXVsdGlSYW5nZScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlSXRl
cmF0b3InLCAnZ29vZy5kb20uUmFuZ2VUeXBlJywgJ2dvb2cuZG9tLlNhdmVkUmFuZ2UnLCAnZ29v
Zy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5kb20uVGV4dFJhbmdlJywgJ2dvb2cuaXRlci5TdG9w
SXRlcmF0aW9uJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZG9tL2NvbnRyb2xyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5Db250cm9sUmFuZ2VUZXN0
J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uQ29udHJvbFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdl
VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLnRl
c3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldC5qcycsIFsnZ29vZy5kb20uZGF0
YXNldCddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldF90ZXN0LmpzJywgWydnb29nLmRvbS5k
YXRhc2V0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmRhdGFzZXQnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9kb20uanMnLCBb
J2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFwcGVuZGFibGUnLCAnZ29vZy5kb20uRG9tSGVscGVyJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uQnJvd3NlckZlYXR1cmUn
LCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZl
JywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1h
dGguU2l6ZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Vbmlj
b2RlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9t
L2RvbV90ZXN0LmpzJywgWydnb29nLmRvbS5kb21fdGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cu
ZG9tLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5JbnB1
dFR5cGUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1
bmN0aW9ucycsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmlu
Zy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGlu
Zy5hc3NlcnRzJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAn
Z29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdkb20vZm9udHNpemVtb25pdG9yLmpzJywgWydnb29nLmRvbS5Gb250U2l6ZU1vbml0
b3InLCAnZ29vZy5kb20uRm9udFNpemVNb25pdG9yLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2
ZW50VHlwZScsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2RvbS9mb250c2l6ZW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uRm9udFNpemVNb25pdG9y
VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkZvbnRTaXplTW9uaXRvcicsICdnb29nLmRv
bS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVz
dGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2RvbS9mb3Jtcy5qcycsIFsnZ29vZy5kb20uZm9ybXMnXSwgWydnb29nLmRvbS5JbnB1dFR5
cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0cnVjdHMuTWFwJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Zvcm1zX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmZvcm1zVGVz
dCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmZvcm1zJywgJ2dvb2cudGVzdGluZy5qc3VuaXQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZnVsbHNjcmVlbi5qcycsIFsnZ29v
Zy5kb20uZnVsbHNjcmVlbicsICdnb29nLmRvbS5mdWxsc2NyZWVuLkV2ZW50VHlwZSddLCBbJ2dv
b2cuZG9tJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZG9tL2lmcmFtZS5qcycsIFsnZ29vZy5kb20uaWZyYW1lJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5k
b20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdn
b29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdkb20vaWZyYW1lX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmlmcmFt
ZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5pZnJhbWUnLCAnZ29vZy5odG1sLlNhZmVI
dG1sJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9pbnB1dHR5
cGUuanMnLCBbJ2dvb2cuZG9tLklucHV0VHlwZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdkb20vaW5wdXR0eXBlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLklucHV0VHlwZVRlc3Qn
XSwgWydnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdkb20vaXRlci5qcycsIFsnZ29vZy5kb20uaXRlci5BbmNlc3Rvckl0ZXJh
dG9yJywgJ2dvb2cuZG9tLml0ZXIuQ2hpbGRJdGVyYXRvcicsICdnb29nLmRvbS5pdGVyLlNpYmxp
bmdJdGVyYXRvciddLCBbJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJh
dGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9pdGVyX3Rlc3QuanMnLCBb
J2dvb2cuZG9tLml0ZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAn
Z29vZy5kb20uaXRlci5BbmNlc3Rvckl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuQ2hpbGRJdGVy
YXRvcicsICdnb29nLmRvbS5pdGVyLlNpYmxpbmdJdGVyYXRvcicsICdnb29nLnRlc3RpbmcuZG9t
JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdk
b20vbXVsdGlyYW5nZS5qcycsIFsnZ29vZy5kb20uTXVsdGlSYW5nZScsICdnb29nLmRvbS5NdWx0
aVJhbmdlSXRlcmF0b3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLkFic3RyYWN0TXVsdGlS
YW5nZScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlSXRlcmF0b3In
LCAnZ29vZy5kb20uUmFuZ2VUeXBlJywgJ2dvb2cuZG9tLlNhdmVkUmFuZ2UnLCAnZ29vZy5kb20u
VGV4dFJhbmdlJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cubG9nJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL211bHRpcmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5k
b20uTXVsdGlSYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5NdWx0aVJhbmdlJywg
J2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuaXRlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL25vZGVpdGVyYXRvci5qcycsIFsnZ29vZy5k
b20uTm9kZUl0ZXJhdG9yJ10sIFsnZ29vZy5kb20uVGFnSXRlcmF0b3InXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZWl0ZXJhdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLk5v
ZGVJdGVyYXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlSXRlcmF0b3InLCAn
Z29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZG9tL25vZGVvZmZzZXQuanMnLCBbJ2dvb2cuZG9tLk5vZGVPZmZzZXQn
XSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5kb20uVGFnTmFtZSddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RvbS9ub2Rlb2Zmc2V0X3Rlc3QuanMnLCBbJ2dvb2cuZG9tLk5vZGVP
ZmZzZXRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZU9mZnNldCcsICdnb29nLmRv
bS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZXR5cGUuanMnLCBbJ2dvb2cuZG9t
Lk5vZGVUeXBlJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJu
L2Fic3RyYWN0cGF0dGVybi5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5BYnN0cmFjdFBhdHRlcm4n
XSwgWydnb29nLmRvbS5wYXR0ZXJuLk1hdGNoVHlwZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2RvbS9wYXR0ZXJuL2FsbGNoaWxkcmVuLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLkFs
bENoaWxkcmVuJ10sIFsnZ29vZy5kb20ucGF0dGVybi5BYnN0cmFjdFBhdHRlcm4nLCAnZ29vZy5k
b20ucGF0dGVybi5NYXRjaFR5cGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20v
cGF0dGVybi9jYWxsYmFjay9jYWxsYmFjay5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFj
ayddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlciddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2NhbGxiYWNrL2NvdW50ZXIu
anMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uY2FsbGJhY2suQ291bnRlciddLCBbXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9jYWxsYmFjay90ZXN0LmpzJywgWydnb29n
LmRvbS5wYXR0ZXJuLmNhbGxiYWNrLlRlc3QnXSwgWydnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2NoaWxkbWF0Y2hlcy5q
cycsIFsnZ29vZy5kb20ucGF0dGVybi5DaGlsZE1hdGNoZXMnXSwgWydnb29nLmRvbS5wYXR0ZXJu
LkFsbENoaWxkcmVuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vZW5kdGFnLmpzJywgWydnb29nLmRvbS5wYXR0
ZXJuLkVuZFRhZyddLCBbJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4u
VGFnJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vZnVsbHRhZy5q
cycsIFsnZ29vZy5kb20ucGF0dGVybi5GdWxsVGFnJ10sIFsnZ29vZy5kb20ucGF0dGVybi5NYXRj
aFR5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5TdGFydFRhZycsICdnb29nLmRvbS5wYXR0ZXJuLlRh
ZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL21hdGNoZXIuanMn
LCBbJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hlciddLCBbJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywg
J2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuaXRlciddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL21hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy5kb20u
cGF0dGVybi5tYXRjaGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAn
Z29vZy5kb20ucGF0dGVybi5FbmRUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5GdWxsVGFnJywgJ2dv
b2cuZG9tLnBhdHRlcm4uTWF0Y2hlcicsICdnb29nLmRvbS5wYXR0ZXJuLlJlcGVhdCcsICdnb29n
LmRvbS5wYXR0ZXJuLlNlcXVlbmNlJywgJ2dvb2cuZG9tLnBhdHRlcm4uU3RhcnRUYWcnLCAnZ29v
Zy5kb20ucGF0dGVybi5jYWxsYmFjay5Db3VudGVyJywgJ2dvb2cuZG9tLnBhdHRlcm4uY2FsbGJh
Y2suVGVzdCcsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuanN1bml0
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vbm9kZXR5cGUuanMn
LCBbJ2dvb2cuZG9tLnBhdHRlcm4uTm9kZVR5cGUnXSwgWydnb29nLmRvbS5wYXR0ZXJuLkFic3Ry
YWN0UGF0dGVybicsICdnb29nLmRvbS5wYXR0ZXJuLk1hdGNoVHlwZSddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL3BhdHRlcm4uanMnLCBbJ2dvb2cuZG9tLnBhdHRl
cm4nLCAnZ29vZy5kb20ucGF0dGVybi5NYXRjaFR5cGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcGF0dGVybl90ZXN0LmpzJywgWydnb29nLmRvbS5wYXR0
ZXJuVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRh
Z1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWxsQ2hpbGRyZW4nLCAnZ29vZy5kb20ucGF0
dGVybi5DaGlsZE1hdGNoZXMnLCAnZ29vZy5kb20ucGF0dGVybi5FbmRUYWcnLCAnZ29vZy5kb20u
cGF0dGVybi5GdWxsVGFnJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuZG9t
LnBhdHRlcm4uTm9kZVR5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5SZXBlYXQnLCAnZ29vZy5kb20u
cGF0dGVybi5TZXF1ZW5jZScsICdnb29nLmRvbS5wYXR0ZXJuLlN0YXJ0VGFnJywgJ2dvb2cuZG9t
LnBhdHRlcm4uVGV4dCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcmVwZWF0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlJl
cGVhdCddLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQ
YXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vc2VxdWVuY2UuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4u
U2VxdWVuY2UnXSwgWydnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5wYXR0ZXJuJywgJ2dv
b2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hU
eXBlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vc3RhcnR0YWcu
anMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uU3RhcnRUYWcnXSwgWydnb29nLmRvbS5UYWdXYWxrVHlw
ZScsICdnb29nLmRvbS5wYXR0ZXJuLlRhZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2RvbS9wYXR0ZXJuL3RhZy5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwgWydnb29nLmRv
bS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9t
LnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cub2JqZWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZG9tL3BhdHRlcm4vdGV4dC5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5UZXh0J10s
IFsnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20ucGF0dGVybicsICdnb29nLmRvbS5wYXR0
ZXJuLkFic3RyYWN0UGF0dGVybicsICdnb29nLmRvbS5wYXR0ZXJuLk1hdGNoVHlwZSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZS5qcycsIFsnZ29vZy5kb20uUmFuZ2Un
XSwgWydnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLkJyb3dz
ZXJGZWF0dXJlJywgJ2dvb2cuZG9tLkNvbnRyb2xSYW5nZScsICdnb29nLmRvbS5NdWx0aVJhbmdl
JywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLnVzZXJB
Z2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZV90ZXN0LmpzJywg
Wydnb29nLmRvbS5SYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScs
ICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cu
dGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZWVuZHBvaW50LmpzJywgWydnb29n
LmRvbS5SYW5nZUVuZHBvaW50J10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Rv
bS9zYWZlLmpzJywgWydnb29nLmRvbS5zYWZlJ10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dv
b2cuaHRtbC5TYWZlVXJsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhZmVf
dGVzdC5qcycsIFsnZ29vZy5kb20uc2FmZVRlc3QnXSwgWydnb29nLmRvbS5zYWZlJywgJ2dvb2cu
aHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0Jywg
J2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20v
c2F2ZWRjYXJldHJhbmdlLmpzJywgWydnb29nLmRvbS5TYXZlZENhcmV0UmFuZ2UnXSwgWydnb29n
LmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlNhdmVkUmFuZ2UnLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLnN0cmluZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9z
YXZlZGNhcmV0cmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlVGVzdCdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlNhdmVkQ2FyZXRSYW5n
ZScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2Vy
QWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2F2ZWRyYW5nZS5qcycs
IFsnZ29vZy5kb20uU2F2ZWRSYW5nZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxvZydd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9zYXZlZHJhbmdlX3Rlc3QuanMnLCBb
J2dvb2cuZG9tLlNhdmVkUmFuZ2VUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2Un
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RvbS9zZWxlY3Rpb24uanMnLCBbJ2dvb2cuZG9tLnNlbGVjdGlvbidd
LCBbJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9zZWxlY3Rpb25fdGVzdC5qcycsIFsn
Z29vZy5kb20uc2VsZWN0aW9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlw
ZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNlbGVjdGlvbicsICdnb29nLnRlc3Rp
bmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZG9tL3RhZ2l0ZXJhdG9yLmpzJywgWydnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRv
bS5UYWdXYWxrVHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cu
aXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbiddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2RvbS90YWdpdGVyYXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdJ
dGVyYXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlcicsICdnb29n
Lml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnbmFtZS5qcycsIFsn
Z29vZy5kb20uVGFnTmFtZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20v
dGFnbmFtZV90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdOYW1lVGVzdCddLCBbJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdzLmpzJywgWydnb29nLmRvbS50YWdzJ10sIFsnZ29v
Zy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnc190ZXN0Lmpz
JywgWydnb29nLmRvbS50YWdzVGVzdCddLCBbJ2dvb2cuZG9tLnRhZ3MnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90ZXh0cmFuZ2UuanMn
LCBbJ2dvb2cuZG9tLlRleHRSYW5nZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29v
Zy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uU2F2
ZWRSYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRleHRSYW5nZUl0ZXJhdG9y
JywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2Vu
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90ZXh0cmFuZ2VfdGVzdC5qcycs
IFsnZ29vZy5kb20uVGV4dFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkNvbnRy
b2xSYW5nZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5t
YXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWls
dXJlcycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRyYW5nZWl0ZXJhdG9yLmpzJywgWydnb29nLmRv
bS5UZXh0UmFuZ2VJdGVyYXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5k
b20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZG9tL3RleHRyYW5nZWl0ZXJhdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLlRleHRSYW5nZUl0
ZXJhdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20u
VGV4dFJhbmdlSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy50ZXN0
aW5nLmRvbScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZG9tL3ZlbmRvci5qcycsIFsnZ29vZy5kb20udmVuZG9yJ10sIFsnZ29vZy5zdHJpbmcn
LCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdmVu
ZG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnZlbmRvclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dv
b2cuZG9tLnZlbmRvcicsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5n
Lk1vY2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudFRlc3RVdGls
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3ZpZXdwb3J0c2l6ZW1vbml0b3Iu
anMnLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3InXSwgWydnb29nLmRvbScsICdnb29n
LmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5
cGUnLCAnZ29vZy5tYXRoLlNpemUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdkb20v
dmlld3BvcnRzaXplbW9uaXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5WaWV3cG9ydFNpemVNb25p
dG9yVGVzdCddLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3InLCAnZ29vZy5ldmVudHMn
LCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5l
dmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xv
Y2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2RvbS94bWwuanMnLCBbJ2dvb2cuZG9t
LnhtbCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZG9tL3htbF90ZXN0LmpzJywgWydnb29nLmRvbS54bWxUZXN0J10sIFsn
Z29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS54bWwnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9i
cm93c2VyZmVhdHVyZS5qcycsIFsnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnXSwgWydnb29n
LmVkaXRvci5kZWZpbmVzJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1
Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdlZGl0b3IvYnJvd3NlcmZlYXR1cmVfdGVzdC5qcycsIFsnZ29vZy5lZGl0
b3IuQnJvd3NlckZlYXR1cmVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAn
Z29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLnRl
c3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2NsaWNrdG9lZGl0d3JhcHBlci5qcycsIFsnZ29v
Zy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cu
ZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3Iu
QnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5GaWVs
ZCcsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29v
Zy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmxv
ZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jbGlja3RvZWRpdHdyYXBw
ZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyVGVzdCddLCBbJ2dv
b2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0
b3IuQ2xpY2tUb0VkaXRXcmFwcGVyJywgJ2dvb2cuZWRpdG9yLlNlYW1sZXNzRmllbGQnLCAnZ29v
Zy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jb21tYW5kLmpzJywgWydnb29nLmVk
aXRvci5Db21tYW5kJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9j
b250ZW50ZWRpdGFibGVmaWVsZC5qcycsIFsnZ29vZy5lZGl0b3IuQ29udGVudEVkaXRhYmxlRmll
bGQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5sb2cnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvY29udGVudGVkaXRhYmxlZmllbGRf
dGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuQ29udGVudEVkaXRhYmxlRmllbGRUZXN0J10sIFsnZ29v
Zy5kb20nLCAnZ29vZy5lZGl0b3IuQ29udGVudEVkaXRhYmxlRmllbGQnLCAnZ29vZy5lZGl0b3Iu
ZmllbGRfdGVzdCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZWRpdG9yL2RlZmluZXMuanMnLCBbJ2dvb2cuZWRpdG9yLmRlZmluZXMnXSwgW10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ZpZWxkLmpzJywgWydnb29nLmVk
aXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5GaWVsZC5FdmVudFR5cGUnXSwgWydnb29nLmExMXku
YXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRz
JywgJ2dvb2cuYXN5bmMuRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29v
Zy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRv
ci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5pY29udGVudCcs
ICdnb29nLmVkaXRvci5pY29udGVudC5GaWVsZEZvcm1hdEluZm8nLCAnZ29vZy5lZGl0b3IuaWNv
bnRlbnQuRmllbGRTdHlsZUluZm8nLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVkaXRvci5y
YW5nZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRz
LktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVs
JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScsICdn
b29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ZpZWxkX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLmZpZWxk
X3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dv
b2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmV2ZW50cycsICdn
b29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
ZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5Mb29zZU1v
Y2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cu
dGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3Rp
bmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdlZGl0b3IvZm9jdXMuanMnLCBbJ2dvb2cuZWRpdG9yLmZvY3VzJ10sIFsnZ29v
Zy5kb20uc2VsZWN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2Zv
Y3VzX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLmZvY3VzVGVzdCddLCBbJ2dvb2cuZG9tLnNlbGVj
dGlvbicsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5mb2N1cycs
ICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRp
dG9yL2ljb250ZW50LmpzJywgWydnb29nLmVkaXRvci5pY29udGVudCcsICdnb29nLmVkaXRvci5p
Y29udGVudC5GaWVsZEZvcm1hdEluZm8nLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRTdHls
ZUluZm8nXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29n
LnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZWRpdG9yL2ljb250ZW50X3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLmljb250ZW50VGVzdCddLCBb
J2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1
cmUnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRG
b3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cu
dGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51
c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvbGluay5qcycs
IFsnZ29vZy5lZGl0b3IuTGluayddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5k
b20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
LmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRp
dG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJp
bmcuVW5pY29kZScsICdnb29nLnVyaS51dGlscycsICdnb29nLnVyaS51dGlscy5Db21wb25lbnRJ
bmRleCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9saW5rX3Rlc3QuanMn
LCBbJ2dvb2cuZWRpdG9yLkxpbmtUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5
cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5M
aW5rJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivbm9kZS5qcycsIFsnZ29vZy5lZGl0b3Iubm9kZSdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAn
Z29vZy5kb20uaXRlci5DaGlsZEl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuU2libGluZ0l0ZXJh
dG9yJywgJ2dvb2cuaXRlcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0
cmluZy5Vbmljb2RlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZWRpdG9yL25vZGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3Iubm9kZVRlc3QnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5F
eHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRv
ci9wbHVnaW4uanMnLCBbJ2dvb2cuZWRpdG9yLlBsdWdpbiddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50
VGFyZ2V0JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubG9nJywgJ2dvb2cub2JqZWN0JywgJ2dv
b2cucmVmbGVjdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2VkaXRvci9wbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuUGx1Z2luVGVzdCddLCBb
J2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmZ1bmN0aW9u
cycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dv
b2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdp
bnMvYWJzdHJhY3RidWJibGVwbHVnaW4uanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJh
Y3RCdWJibGVQbHVnaW4nXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5v
ZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20u
Y2xhc3NsaXN0JywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5zdHlsZScsICdn
b29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZl
bnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLmFjdGlvbkV2ZW50
V3JhcHBlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cu
dWkuQ29tcG9uZW50JywgJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZScsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Fic3RyYWN0YnVi
YmxlcGx1Z2luX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQ
bHVnaW5UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRv
ci5wbHVnaW5zLkFic3RyYWN0QnViYmxlUGx1Z2luJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVu
dCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29v
Zy5mdW5jdGlvbnMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9j
aycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50
cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy51aS5lZGl0b3IuQnViYmxlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RkaWFsb2dwbHVnaW4uanMnLCBb
J2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3REaWFsb2dQbHVnaW4nLCAnZ29vZy5lZGl0b3Iu
cGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpbi5FdmVudFR5cGUnXSwgWydnb29nLmRvbScsICdn
b29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW4n
LCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy51aS5lZGl0b3IuQWJz
dHJhY3REaWFsb2cnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lu
cy9hYnN0cmFjdGRpYWxvZ3BsdWdpbl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkFi
c3RyYWN0RGlhbG9nUGx1Z2luVGVzdCddLCBbJ2dvb2cuZG9tLlNhdmVkUmFuZ2UnLCAnZ29vZy5k
b20uVGFnTmFtZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkFi
c3RyYWN0RGlhbG9nUGx1Z2luJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2
ZW50SGFuZGxlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywg
J2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNl
cicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9y
LlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0
JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuQXJndW1lbnRNYXRjaGVyJywgJ2dvb2cudWku
ZWRpdG9yLkFic3RyYWN0RGlhbG9nJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3R0YWJoYW5kbGVyLmpzJywgWydn
b29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0VGFiSGFuZGxlciddLCBbJ2dvb2cuZWRpdG9yLlBs
dWdpbicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Fic3RyYWN0dGFiaGFuZGxlcl90
ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0VGFiSGFuZGxlclRlc3QnXSwg
Wydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0VGFiSGFu
ZGxlcicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMn
LCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5GaWVsZE1v
Y2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Jhc2ljdGV4dGZvcm1hdHRlci5qcycs
IFsnZ29vZy5lZGl0b3IucGx1Z2lucy5CYXNpY1RleHRGb3JtYXR0ZXInLCAnZ29vZy5lZGl0b3Iu
cGx1Z2lucy5CYXNpY1RleHRGb3JtYXR0ZXIuQ09NTUFORCddLCBbJ2dvb2cuYXJyYXknLCAnZ29v
Zy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21t
YW5kJywgJ2dvb2cuZWRpdG9yLkxpbmsnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRp
dG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5lZGl0b3Iuc3R5bGUnLCAnZ29v
Zy5pdGVyJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cubG9nJywgJ2dvb2cub2Jq
ZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScs
ICdnb29nLnVpLmVkaXRvci5tZXNzYWdlcycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Jhc2ljdGV4dGZvcm1hdHRlcl90ZXN0
LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlclRlc3QnXSwgWydn
b29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRp
dG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3Iu
RmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNU
ZXh0Rm9ybWF0dGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5n
LkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3Rp
bmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdn
b29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdn
b29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYmxvY2txdW90ZS5qcycsIFsnZ29vZy5l
ZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5
cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5lZGl0
b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5Q
bHVnaW4nLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmxvZydd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Jsb2NrcXVvdGVf
dGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlVGVzdCddLCBbJ2dvb2cu
ZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3Iu
QnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cu
dGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBl
cicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZWRpdG9yL3BsdWdpbnMvZW1vdGljb25zLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkVtb3Rp
Y29ucyddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cu
ZWRpdG9yLnJhbmdlJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudWkuZW1vamkuRW1vamknLCAn
Z29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1
Z2lucy9lbW90aWNvbnNfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbW90aWNvbnNU
ZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5U
YWdOYW1lJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW1vdGlj
b25zJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29n
LnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5z
L2VudGVyaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXInXSwg
Wydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlT2Zmc2V0JywgJ2dvb2cuZG9tLk5vZGVUeXBlJywg
J2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3Nl
ckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29v
Zy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cu
ZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywg
J2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvZW50ZXJoYW5kbGVyX3Rlc3QuanMn
LCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW50ZXJIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUn
LCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29v
Zy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmxvY2txdW90ZScsICdnb29n
LmVkaXRvci5wbHVnaW5zLkVudGVySGFuZGxlcicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29n
LmV2ZW50cycsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRG
YWlsdXJlcycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5kb20nLCAn
Z29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2ZpcnN0c3Ryb25nLmpzJywgWydnb29nLmVkaXRv
ci5wbHVnaW5zLkZpcnN0U3Ryb25nJ10sIFsnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20u
VGFnSXRlcmF0b3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Db21tYW5kJywg
J2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5u
b2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuaTE4bi51
Q2hhcicsICdnb29nLml0ZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9maXJzdHN0cm9uZ190ZXN0LmpzJywgWydnb29nLmVk
aXRvci5wbHVnaW5zLkZpcnN0U3Ryb25nVGVzdCddLCBbJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cu
ZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lu
cy5GaXJzdFN0cm9uZycsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmV2ZW50cy5LZXlDb2Rl
cycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhl
bHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29v
Zy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lu
cy9oZWFkZXJmb3JtYXR0ZXIuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuSGVhZGVyRm9ybWF0
dGVyJ10sIFsnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29v
Zy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lu
cy9oZWFkZXJmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5IZWFkZXJG
b3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29n
LmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlcicsICdnb29nLmVkaXRvci5wbHVnaW5z
LkhlYWRlckZvcm1hdHRlcicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy50ZXN0
aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRl
c3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xp
bmtidWJibGUuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmVk
aXRvci5wbHVnaW5zLkxpbmtCdWJibGUuQWN0aW9uJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRv
bScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0
b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0QnViYmxlUGx1Z2luJywgJ2dv
b2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cu
c3R5bGUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51cmkudXRpbHMnLCAnZ29v
Zy53aW5kb3cnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9s
aW5rYnViYmxlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZVRlc3Qn
XSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVn
aW5zLkxpbmtCdWJibGUnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRz
LkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnN0cmluZycsICdnb29nLnN0
eWxlJywgJ2dvb2cudGVzdGluZy5GdW5jdGlvbk1vY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5
UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5GaWVsZE1vY2snLCAnZ29vZy50ZXN0aW5n
LmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2VkaXRvci9wbHVnaW5zL2xpbmtkaWFsb2dwbHVnaW4uanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdp
bnMuTGlua0RpYWxvZ1BsdWdpbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5l
ZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0RGlhbG9nUGx1Z2lu
JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnVp
LmVkaXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dv
b2cudXJpLnV0aWxzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdp
bnMvbGlua2RpYWxvZ3BsdWdpbl90ZXN0LmpzJywgWydnb29nLnVpLmVkaXRvci5wbHVnaW5zLkxp
bmtEaWFsb2dUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cu
ZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZl
YXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29n
LmVkaXRvci5MaW5rJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0RpYWxvZ1BsdWdpbicsICdn
b29nLnN0cmluZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29u
dHJvbCcsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRp
dG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5kb20nLCAnZ29vZy50ZXN0aW5n
LmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hl
cnMnLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cnLCAnZ29vZy51aS5lZGl0b3IuTGlu
a0RpYWxvZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2VkaXRvci9wbHVnaW5zL2xpbmtzaG9ydGN1dHBsdWdpbi5qcycsIFsnZ29vZy5lZGl0b3IucGx1
Z2lucy5MaW5rU2hvcnRjdXRQbHVnaW4nXSwgWydnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cu
ZWRpdG9yLlBsdWdpbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVn
aW5zL2xpbmtzaG9ydGN1dHBsdWdpbl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxp
bmtTaG9ydGN1dFBsdWdpblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywg
J2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNUZXh0Rm9ybWF0
dGVyJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmVkaXRvci5wbHVn
aW5zLkxpbmtTaG9ydGN1dFBsdWdpbicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnRl
c3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGlu
Zy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpc3R0YWJoYW5kbGVyLmpzJywgWydnb29nLmVkaXRvci5w
bHVnaW5zLkxpc3RUYWJIYW5kbGVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJI
YW5kbGVyJywgJ2dvb2cuaXRlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRv
ci9wbHVnaW5zL2xpc3R0YWJoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMu
TGlzdFRhYkhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcs
ICdnb29nLmVkaXRvci5wbHVnaW5zLkxpc3RUYWJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkJyb3dz
ZXJFdmVudCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29n
LnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdn
b29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xvcmVtaXBzdW0uanMn
LCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTG9yZW1JcHN1bSddLCBbJ2dvb2cuYXNzZXJ0cycsICdn
b29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dv
b2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZnVuY3Rpb25zJywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3Bs
dWdpbnMvbG9yZW1pcHN1bV90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxvcmVtSXBz
dW1UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRv
ci5GaWVsZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkxvcmVtSXBzdW0nLCAnZ29vZy5zdHJpbmcu
VW5pY29kZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvcmVtb3ZlZm9ybWF0dGluZy5q
cycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5SZW1vdmVGb3JtYXR0aW5nJ10sIFsnZ29vZy5kb20n
LCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5QbHVnaW4nLCAn
Z29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLnN0cmluZycsICdn
b29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVn
aW5zL3JlbW92ZWZvcm1hdHRpbmdfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5SZW1v
dmVGb3JtYXR0aW5nVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cu
ZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3Iu
cGx1Z2lucy5SZW1vdmVGb3JtYXR0aW5nJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5F
eHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmVkaXRv
ci5GaWVsZE1vY2snLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdlZGl0b3IvcGx1Z2lucy9zcGFjZXN0YWJoYW5kbGVyLmpzJywgWydnb29nLmVkaXRvci5w
bHVnaW5zLlNwYWNlc1RhYkhhbmRsZXInXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRp
dG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJIYW5kbGVyJywgJ2dvb2cuZWRpdG9yLnJhbmdlJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvc3BhY2VzdGFiaGFuZGxl
cl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlNwYWNlc1RhYkhhbmRsZXJUZXN0J10s
IFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5TcGFj
ZXNUYWJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5L
ZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdn
b29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RI
ZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2VkaXRvci9wbHVnaW5zL3RhYmxlZWRpdG9yLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5z
LlRhYmxlRWRpdG9yJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5n
ZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRv
ci5UYWJsZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cu
b2JqZWN0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZWRpdG9yL3BsdWdpbnMvdGFibGVlZGl0b3JfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lu
cy5UYWJsZUVkaXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVGFibGVFZGl0b3InLCAnZ29vZy5v
YmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAn
Z29vZy50ZXN0aW5nLkpzVW5pdEV4Y2VwdGlvbicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxk
TW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Vk
aXRvci9wbHVnaW5zL3RhZ29uZW50ZXJoYW5kbGVyLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5z
LlRhZ09uRW50ZXJIYW5kbGVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAn
Z29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Db21tYW5k
JywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXIn
LCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5lZGl0b3Iuc3R5bGUnLCAnZ29vZy5ldmVudHMu
S2V5Q29kZXMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29n
LnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZWRpdG9yL3BsdWdpbnMvdGFnb25lbnRlcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3Iu
cGx1Z2lucy5UYWdPbkVudGVySGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5O
b2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRp
dG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBs
dWdpbicsICdnb29nLmVkaXRvci5wbHVnaW5zLlRhZ09uRW50ZXJIYW5kbGVyJywgJ2dvb2cuZXZl
bnRzLktleUNvZGVzJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy50ZXN0aW5nLmRvbScs
ICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycs
ICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdW5kb3JlZG8uanMnLCBbJ2dvb2cuZWRpdG9y
LnBsdWdpbnMuVW5kb1JlZG8nXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlT2Zmc2V0Jywg
J2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRp
dG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywg
J2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXIn
LCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dv
b2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmxvZycsICdnb29nLm9iamVjdCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvX3Rlc3QuanMn
LCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9UZXN0J10sIFsnZ29vZy5hcnJheScsICdn
b29nLmRvbScsICdnb29nLmRvbS5icm93c2VycmFuZ2UnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAn
Z29vZy5lZGl0b3IucGx1Z2lucy5Mb3JlbUlwc3VtJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5k
b1JlZG8nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLk1v
Y2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3Rpbmcu
U3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdW5kb3JlZG9tYW5hZ2VyLmpzJywgWydnb29nLmVkaXRv
ci5wbHVnaW5zLlVuZG9SZWRvTWFuYWdlcicsICdnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRv
TWFuYWdlci5FdmVudFR5cGUnXSwgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3RhdGUn
LCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy91bmRvcmVkb21hbmFnZXJfdGVzdC5qcycs
IFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXJUZXN0J10sIFsnZ29vZy5lZGl0
b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXInLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVk
b1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1
Z2lucy91bmRvcmVkb3N0YXRlLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3Rh
dGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvc3RhdGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0
b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlVGVzdCddLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5k
b1JlZG9TdGF0ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZWRpdG9yL3JhbmdlLmpzJywgWydnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmVk
aXRvci5yYW5nZS5Qb2ludCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20u
Tm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2VFbmRwb2ludCcsICdn
b29nLmRvbS5TYXZlZENhcmV0UmFuZ2UnLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVkaXRv
ci5zdHlsZScsICdnb29nLml0ZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdlZGl0b3IvcmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucmFuZ2VU
ZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmVkaXRvci5yYW5nZS5Qb2ludCcsICdnb29nLnN0
cmluZycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51
c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc2VhbWxlc3Nm
aWVsZC5qcycsIFsnZ29vZy5lZGl0b3IuU2VhbWxlc3NGaWVsZCddLCBbJ2dvb2cuY3Nzb20uaWZy
YW1lLnN0eWxlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05h
bWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29n
LmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5pY29udGVudCcsICdnb29nLmVkaXRvci5pY29u
dGVudC5GaWVsZEZvcm1hdEluZm8nLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRTdHlsZUlu
Zm8nLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVu
dFR5cGUnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cubG9nJywgJ2dv
b2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdlZGl0b3Ivc2VhbWxlc3NmaWVsZF90ZXN0LmpzJywgWydnb29nLmVkaXRvci5zZWFtbGVz
c2ZpZWxkX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5k
b20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVy
ZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5TZWFtbGVzc0ZpZWxkJywgJ2dv
b2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5n
Lk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuTW9ja1JhbmdlJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc3R5bGUuanMnLCBbJ2dv
b2cuZWRpdG9yLnN0eWxlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5O
b2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJl
JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0eWxlJywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3N0
eWxlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnN0eWxlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dv
b2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0
b3Iuc3R5bGUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50
VHlwZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZWRpdG9yL3RhYmxlLmpzJywgWydnb29nLmVkaXRvci5UYWJsZScsICdn
b29nLmVkaXRvci5UYWJsZUNlbGwnLCAnZ29vZy5lZGl0b3IuVGFibGVSb3cnXSwgWydnb29nLmRv
bScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmxvZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5bGUn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvdGFibGVfdGVzdC5qcycsIFsn
Z29vZy5lZGl0b3IuVGFibGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmVkaXRvci5UYWJsZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFn
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2FjdGlvbmV2ZW50d3Jh
cHBlci5qcycsIFsnZ29vZy5ldmVudHMuYWN0aW9uRXZlbnRXcmFwcGVyJ10sIFsnZ29vZy5hMTF5
LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycs
ICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dv
b2cuZXZlbnRzLkV2ZW50V3JhcHBlcicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9hY3Rpb25ldmVu
dHdyYXBwZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuYWN0aW9uRXZlbnRXcmFwcGVyVGVzdCdd
LCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5ldmVudHMn
LCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dv
b2cuZXZlbnRzLmFjdGlvbkV2ZW50V3JhcHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dv
b2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMv
YWN0aW9uaGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuQWN0aW9uRXZlbnQnLCAnZ29vZy5ldmVu
dHMuQWN0aW9uSGFuZGxlcicsICdnb29nLmV2ZW50cy5BY3Rpb25IYW5kbGVyLkV2ZW50VHlwZScs
ICdnb29nLmV2ZW50cy5CZWZvcmVBY3Rpb25FdmVudCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cu
ZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2
ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uaGFuZGxlcl90ZXN0
LmpzJywgWydnb29nLmV2ZW50cy5BY3Rpb25IYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dv
b2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkFjdGlvbkhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLmV2
ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZXZlbnRzL2Jyb3dzZXJldmVudC5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50Jywg
J2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudC5Nb3VzZUJ1dHRvbiddLCBbJ2dvb2cuZXZlbnRzLkJy
b3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlw
ZScsICdnb29nLnJlZmxlY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdldmVudHMvYnJvd3NlcmV2ZW50X3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkJy
b3dzZXJFdmVudFRlc3QnXSwgWydnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVu
dHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2V2ZW50cy9icm93c2VyZmVhdHVyZS5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3Nl
ckZlYXR1cmUnXSwgWydnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2V2ZW50cy9ldmVudC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMu
RXZlbnRMaWtlJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZXZlbnRzLkV2ZW50SWQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRfdGVzdC5qcycsIFsnZ29v
Zy5ldmVudHMuRXZlbnRUZXN0J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMu
RXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcuanN1bml0
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50aGFuZGxlci5qcycs
IFsnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cu
ZXZlbnRzJywgJ2dvb2cub2JqZWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZl
bnRzL2V2ZW50aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudEhhbmRsZXJUZXN0
J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZl
bnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJl
Y29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50
aWQuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50SWQnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZXZlbnRzL2V2ZW50cy5qcycsIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMu
Q2FwdHVyZVNpbXVsYXRpb25Nb2RlJywgJ2dvb2cuZXZlbnRzLktleScsICdnb29nLmV2ZW50cy5M
aXN0ZW5hYmxlVHlwZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRS
ZWdpc3RyeScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuQnJvd3Nl
ckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5l
ck1hcCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHNfdGVzdC5q
cycsIFsnZ29vZy5ldmVudHNUZXN0J10sIFsnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywg
J2dvb2cuZGVidWcuRW50cnlQb2ludE1vbml0b3InLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXIn
LCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdn
b29nLmV2ZW50cy5DYXB0dXJlU2ltdWxhdGlvbk1vZGUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAn
Z29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
ZXZlbnRzLkxpc3RlbmVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0
eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1
bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0
LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5l
dmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCcsICdnb29nLm9iamVj
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHRhcmdldF90ZXN0
LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldFRlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVu
dFRhcmdldCcsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJywgJ2dvb2cuZXZlbnRzLmV2ZW50VGFy
Z2V0VGVzdGVyJywgJ2dvb2cuZXZlbnRzLmV2ZW50VGFyZ2V0VGVzdGVyLktleVR5cGUnLCAnZ29v
Zy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXIuVW5saXN0ZW5SZXR1cm5UeXBlJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0
YXJnZXRfdmlhX2dvb2dldmVudHNfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXRH
b29nRXZlbnRzVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0
JywgJ2dvb2cuZXZlbnRzLmV2ZW50VGFyZ2V0VGVzdGVyJywgJ2dvb2cuZXZlbnRzLmV2ZW50VGFy
Z2V0VGVzdGVyLktleVR5cGUnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXIuVW5saXN0
ZW5SZXR1cm5UeXBlJywgJ2dvb2cudGVzdGluZycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0X3ZpYV93M2NpbnRl
cmZhY2VfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXRXM0NUZXN0J10sIFsnZ29v
Zy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAn
Z29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXIuS2V5VHlwZScsICdnb29nLmV2ZW50cy5ldmVu
dFRhcmdldFRlc3Rlci5Vbmxpc3RlblJldHVyblR5cGUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHRhcmdldHRlc3Rlci5q
cycsIFsnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAnZ29vZy5ldmVudHMuZXZlbnRU
YXJnZXRUZXN0ZXIuS2V5VHlwZScsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3Rlci5Vbmxp
c3RlblJldHVyblR5cGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZl
bnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cudGVzdGluZy5hc3Nl
cnRzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2V2ZW50cy9ldmVudHR5cGUuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZSdd
LCBbJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRz
L2V2ZW50d3JhcHBlci5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRXcmFwcGVyJ10sIFtdLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9maWxlZHJvcGhhbmRsZXIuanMnLCBbJ2dv
b2cuZXZlbnRzLkZpbGVEcm9wSGFuZGxlcicsICdnb29nLmV2ZW50cy5GaWxlRHJvcEhhbmRsZXIu
RXZlbnRUeXBlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cy5Ccm93
c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50
VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmxvZycsICdnb29nLmxvZy5M
ZXZlbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9maWxlZHJvcGhhbmRs
ZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyVGVzdCddLCBbJ2dvb2cu
ZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRh
cmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5k
bGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdldmVudHMvZm9jdXNoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5Gb2N1c0hhbmRsZXInLCAn
Z29vZy5ldmVudHMuRm9jdXNIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dv
b2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29n
LnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9pbWVoYW5k
bGVyLmpzJywgWydnb29nLmV2ZW50cy5JbWVIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkltZUhhbmRs
ZXIuRXZlbnQnLCAnZ29vZy5ldmVudHMuSW1lSGFuZGxlci5FdmVudFR5cGUnXSwgWydnb29nLmV2
ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZl
bnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVz
JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRz
L2ltZWhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuSW1lSGFuZGxlclRlc3QnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkltZUhh
bmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJp
bmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50
cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvaW5w
dXRoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMu
SW5wdXRIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29v
Zy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMu
RXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLktl
eUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZXZlbnRzL2lucHV0aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXJU
ZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZl
bnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMu
S2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2
ZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9u
JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRz
L2tleWNvZGVzLmpzJywgWydnb29nLmV2ZW50cy5LZXlDb2RlcyddLCBbJ2dvb2cudXNlckFnZW50
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleWNvZGVzX3Rlc3QuanMn
LCBbJ2dvb2cuZXZlbnRzLktleUNvZGVzVGVzdCddLCBbJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVu
dCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3Rpbmcu
UHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleWhhbmRsZXIuanMnLCBb
J2dvb2cuZXZlbnRzLktleUV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUhhbmRsZXInLCAnZ29vZy5l
dmVudHMuS2V5SGFuZGxlci5FdmVudFR5cGUnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50
cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMu
RXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleWhhbmRsZXJfdGVzdC5qcycsIFsn
Z29vZy5ldmVudHMuS2V5RXZlbnRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVu
dHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleUhh
bmRsZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dv
b2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleW5h
bWVzLmpzJywgWydnb29nLmV2ZW50cy5LZXlOYW1lcyddLCBbXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdldmVudHMvbGlzdGVuYWJsZS5qcycsIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJs
ZScsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlS2V5J10sIFsnZ29vZy5ldmVudHMuRXZlbnRJZCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9saXN0ZW5hYmxlX3Rlc3QuanMn
LCBbJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGVUZXN0J10sIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJs
ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZXZlbnRzL2xpc3RlbmVyLmpzJywgWydnb29nLmV2ZW50cy5MaXN0ZW5lciddLCBbJ2dvb2cuZXZl
bnRzLkxpc3RlbmFibGVLZXknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMv
bGlzdGVuZXJtYXAuanMnLCBbJ2dvb2cuZXZlbnRzLkxpc3RlbmVyTWFwJ10sIFsnZ29vZy5hcnJh
eScsICdnb29nLmV2ZW50cy5MaXN0ZW5lcicsICdnb29nLm9iamVjdCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2V2ZW50cy9saXN0ZW5lcm1hcF90ZXN0LmpzJywgWydnb29nLmV2ZW50
cy5MaXN0ZW5lck1hcFRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5ldmVudHMnLCAnZ29v
Zy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50
cy5MaXN0ZW5lck1hcCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZXZlbnRzL21vdXNld2hlZWxoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5N
b3VzZVdoZWVsRXZlbnQnLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXInLCAnZ29vZy5l
dmVudHMuTW91c2VXaGVlbEhhbmRsZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5l
dmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFy
Z2V0JywgJ2dvb2cubWF0aCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL21vdXNld2hlZWxoYW5kbGVyX3Rlc3QuanMn
LCBbJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dv
b2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5Nb3Vz
ZVdoZWVsRXZlbnQnLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXInLCAnZ29vZy5mdW5j
dGlvbnMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAn
Z29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFn
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL29ubGluZWhhbmRsZXIu
anMnLCBbJ2dvb2cuZXZlbnRzLk9ubGluZUhhbmRsZXInLCAnZ29vZy5ldmVudHMuT25saW5lSGFu
ZGxlci5FdmVudFR5cGUnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0
dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdl
dCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuTmV0d29ya1N0YXR1c01vbml0
b3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvb25saW5lbGlzdGVuZXJf
dGVzdC5qcycsIFsnZ29vZy5ldmVudHMuT25saW5lSGFuZGxlclRlc3QnXSwgWydnb29nLmV2ZW50
cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdn
b29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuT25saW5lSGFuZGxlcicsICdn
b29nLm5ldC5OZXR3b3JrU3RhdHVzTW9uaXRvcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywg
J2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZXZlbnRzL3Bhc3RlaGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuUGFzdGVIYW5kbGVyJywg
J2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlci5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuUGFzdGVI
YW5kbGVyLlN0YXRlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVs
YXknLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxl
cicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAn
Z29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5sb2cnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvcGFzdGVoYW5kbGVyX3Rlc3QuanMnLCBb
J2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50
cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQn
LCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cu
ZXZlbnRzLlBhc3RlSGFuZGxlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVz
dGluZy5Nb2NrVXNlckFnZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdl
bnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hlZWxldmVudC5qcycs
IFsnZ29vZy5ldmVudHMuV2hlZWxFdmVudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50
cy5Ccm93c2VyRXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hl
ZWxoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5XaGVlbEhhbmRsZXInXSwgWydnb29nLmRvbScs
ICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5X
aGVlbEV2ZW50JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdl
bnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy93aGVlbGhhbmRsZXJfdGVzdC5qcycsIFsnZ29v
Zy5ldmVudHMuV2hlZWxIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywg
J2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5XaGVlbEV2ZW50JywgJ2dv
b2cuZXZlbnRzLldoZWVsSGFuZGxlcicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJv
cGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9lbWFpbGFkZHJlc3MuanMnLCBbJ2dvb2cuZm9y
bWF0LkVtYWlsQWRkcmVzcyddLCBbJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnZm9ybWF0L2VtYWlsYWRkcmVzc190ZXN0LmpzJywgWydnb29nLmZvcm1hdC5FbWFp
bEFkZHJlc3NUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmZvcm1hdC5FbWFpbEFkZHJlc3Mn
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Zv
cm1hdC9mb3JtYXQuanMnLCBbJ2dvb2cuZm9ybWF0J10sIFsnZ29vZy5pMThuLkdyYXBoZW1lQnJl
YWsnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdmb3JtYXQvZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuZm9ybWF0VGVzdCddLCBb
J2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mb3JtYXQnLCAnZ29vZy5zdHJp
bmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9odG1scHJldHR5cHJpbnRl
ci5qcycsIFsnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXInLCAnZ29vZy5mb3JtYXQuSHRt
bFByZXR0eVByaW50ZXIuQnVmZmVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm9iamVj
dCcsICdnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdmb3JtYXQvaHRtbHByZXR0eXByaW50ZXJfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuSHRt
bFByZXR0eVByaW50ZXJUZXN0J10sIFsnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXInLCAn
Z29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2ludGVybmF0aW9uYWxpemVkZW1haWxhZGRyZXNz
LmpzJywgWydnb29nLmZvcm1hdC5JbnRlcm5hdGlvbmFsaXplZEVtYWlsQWRkcmVzcyddLCBbJ2dv
b2cuZm9ybWF0LkVtYWlsQWRkcmVzcycsICdnb29nLnN0cmluZyddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2Zvcm1hdC9pbnRlcm5hdGlvbmFsaXplZGVtYWlsYWRkcmVzc190ZXN0Lmpz
JywgWydnb29nLmZvcm1hdC5JbnRlcm5hdGlvbmFsaXplZEVtYWlsQWRkcmVzc1Rlc3QnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuZm9ybWF0LkludGVybmF0aW9uYWxpemVkRW1haWxBZGRyZXNzJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmb3Jt
YXQvanNvbnByZXR0eXByaW50ZXIuanMnLCBbJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVy
JywgJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVyLkh0bWxEZWxpbWl0ZXJzJywgJ2dvb2cu
Zm9ybWF0Lkpzb25QcmV0dHlQcmludGVyLlRleHREZWxpbWl0ZXJzJ10sIFsnZ29vZy5qc29uJywg
J2dvb2cuanNvbi5TZXJpYWxpemVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlN0cmlu
Z0J1ZmZlcicsICdnb29nLnN0cmluZy5mb3JtYXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdmb3JtYXQvanNvbnByZXR0eXByaW50ZXJfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuSnNv
blByZXR0eVByaW50ZXJUZXN0J10sIFsnZ29vZy5mb3JtYXQuSnNvblByZXR0eVByaW50ZXInLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2Vu
dHJ5LmpzJywgWydnb29nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRGlyZWN0b3J5RW50
cnkuQmVoYXZpb3InLCAnZ29vZy5mcy5FbnRyeScsICdnb29nLmZzLkZpbGVFbnRyeSddLCBbXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lbnRyeWltcGwuanMnLCBbJ2dvb2cuZnMu
RGlyZWN0b3J5RW50cnlJbXBsJywgJ2dvb2cuZnMuRW50cnlJbXBsJywgJ2dvb2cuZnMuRmlsZUVu
dHJ5SW1wbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmZz
LkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29n
LmZzLkZpbGVFbnRyeScsICdnb29nLmZzLkZpbGVXcml0ZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAn
Z29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lcnJvci5qcycs
IFsnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkVycm9yLkVycm9yQ29kZSddLCBbJ2dvb2cuZGVi
dWcuRXJyb3InLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdmcy9maWxlcmVhZGVyLmpzJywgWydnb29nLmZzLkZpbGVSZWFkZXInLCAn
Z29vZy5mcy5GaWxlUmVhZGVyLkV2ZW50VHlwZScsICdnb29nLmZzLkZpbGVSZWFkZXIuUmVhZHlT
dGF0ZSddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQn
LCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLlByb2dyZXNzRXZlbnQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdmcy9maWxlc2F2ZXIuanMnLCBbJ2dvb2cuZnMuRmlsZVNhdmVyJywg
J2dvb2cuZnMuRmlsZVNhdmVyLkV2ZW50VHlwZScsICdnb29nLmZzLkZpbGVTYXZlci5SZWFkeVN0
YXRlJ10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29n
LmZzLlByb2dyZXNzRXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxl
c3lzdGVtLmpzJywgWydnb29nLmZzLkZpbGVTeXN0ZW0nXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZnMvZmlsZXN5c3RlbWltcGwuanMnLCBbJ2dvb2cuZnMuRmlsZVN5c3RlbUlt
cGwnXSwgWydnb29nLmZzLkRpcmVjdG9yeUVudHJ5SW1wbCcsICdnb29nLmZzLkZpbGVTeXN0ZW0n
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxld3JpdGVyLmpzJywgWydnb29n
LmZzLkZpbGVXcml0ZXInXSwgWydnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVNhdmVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZnMuanMnLCBbJ2dvb2cuZnMnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29n
LmZzLkZpbGVSZWFkZXInLCAnZ29vZy5mcy5GaWxlU3lzdGVtSW1wbCcsICdnb29nLmZzLnVybCcs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2ZzX3Rl
c3QuanMnLCBbJ2dvb2cuZnNUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXJyYXknLCAn
Z29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mcycsICdnb29nLmZzLkRpcmVjdG9yeUVu
dHJ5JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlUmVhZGVyJywgJ2dvb2cuZnMuRmls
ZVNhdmVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9w
cm9ncmVzc2V2ZW50LmpzJywgWydnb29nLmZzLlByb2dyZXNzRXZlbnQnXSwgWydnb29nLmV2ZW50
cy5FdmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2ZzL3VybC5qcycsIFsnZ29v
Zy5mcy51cmwnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZnMvdXJsX3Rlc3Qu
anMnLCBbJ2dvb2cudXJsVGVzdCddLCBbJ2dvb2cuZnMudXJsJywgJ2dvb2cudGVzdGluZy5Qcm9w
ZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zLmpzJywgWydnb29nLmZ1bmN0aW9ucyddLCBb
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zX3Rlc3Qu
anMnLCBbJ2dvb2cuZnVuY3Rpb25zVGVzdCddLCBbJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVz
dGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0
aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvYWJz
dHJhY3RkcmFnZHJvcC5qcycsIFsnZ29vZy5meC5BYnN0cmFjdERyYWdEcm9wJywgJ2dvb2cuZngu
QWJzdHJhY3REcmFnRHJvcC5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnRHJvcEV2ZW50JywgJ2dv
b2cuZnguRHJhZ0Ryb3BJdGVtJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cu
ZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29n
LmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5l
dmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguQm94JywgJ2dv
b2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdmeC9hYnN0cmFjdGRyYWdkcm9wX3Rlc3QuanMnLCBbJ2dvb2cuZnguQWJzdHJhY3RE
cmFnRHJvcFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5l
dmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuZnguQWJzdHJhY3REcmFn
RHJvcCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbScsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0
aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbS9h
bmltLmpzJywgWydnb29nLmZ4LmFuaW0nLCAnZ29vZy5meC5hbmltLkFuaW1hdGVkJ10sIFsnZ29v
Zy5hc3luYy5BbmltYXRpb25EZWxheScsICdnb29nLmFzeW5jLkRlbGF5JywgJ2dvb2cub2JqZWN0
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbS9hbmltX3Rlc3QuanMnLCBb
J2dvb2cuZnguYW5pbVRlc3QnXSwgWydnb29nLmFzeW5jLkFuaW1hdGlvbkRlbGF5JywgJ2dvb2cu
YXN5bmMuRGVsYXknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5B
bmltYXRpb24nLCAnZ29vZy5meC5hbmltJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5N
b2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9hbmltYXRpb24uanMnLCBbJ2dvb2cu
ZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguQW5pbWF0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4LkFu
aW1hdGlvbi5TdGF0ZScsICdnb29nLmZ4LkFuaW1hdGlvbkV2ZW50J10sIFsnZ29vZy5hcnJheScs
ICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5UcmFu
c2l0aW9uQmFzZScsICdnb29nLmZ4LmFuaW0nLCAnZ29vZy5meC5hbmltLkFuaW1hdGVkJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbWF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cu
ZnguQW5pbWF0aW9uVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywg
J2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW1hdGlvbnF1ZXVlLmpzJywgWydnb29nLmZ4LkFu
aW1hdGlvblBhcmFsbGVsUXVldWUnLCAnZ29vZy5meC5BbmltYXRpb25RdWV1ZScsICdnb29nLmZ4
LkFuaW1hdGlvblNlcmlhbFF1ZXVlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAn
Z29vZy5ldmVudHMnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJh
c2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9hbmltYXRpb25xdWV1ZV90ZXN0
LmpzJywgWydnb29nLmZ4LkFuaW1hdGlvblF1ZXVlVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dv
b2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguQW5pbWF0aW9uUGFyYWxsZWxRdWV1ZScsICdnb29n
LmZ4LkFuaW1hdGlvblNlcmlhbFF1ZXVlJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLmZ4
LmFuaW0nLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvY3NzMy9meC5qcycsIFsnZ29vZy5meC5j
c3MzJ10sIFsnZ29vZy5meC5jc3MzLlRyYW5zaXRpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdmeC9jc3MzL3RyYW5zaXRpb24uanMnLCBbJ2dvb2cuZnguY3NzMy5UcmFuc2l0aW9u
J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5meC5UcmFuc2l0aW9uQmFz
ZScsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUudHJhbnNpdGlvbiddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2Z4L2NzczMvdHJhbnNpdGlvbl90ZXN0LmpzJywgWydnb29nLmZ4LmNz
czMuVHJhbnNpdGlvblRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5k
b20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5m
eC5jc3MzLlRyYW5zaXRpb24nLCAnZ29vZy5zdHlsZS50cmFuc2l0aW9uJywgJ2dvb2cudGVzdGlu
Zy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3Jk
RnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3NzcHJpdGVhbmlt
YXRpb24uanMnLCBbJ2dvb2cuZnguQ3NzU3ByaXRlQW5pbWF0aW9uJ10sIFsnZ29vZy5meC5Bbmlt
YXRpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3NzcHJpdGVhbmltYXRp
b25fdGVzdC5qcycsIFsnZ29vZy5meC5Dc3NTcHJpdGVBbmltYXRpb25UZXN0J10sIFsnZ29vZy5m
eC5Dc3NTcHJpdGVBbmltYXRpb24nLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGguU2l6ZScs
ICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kb20uanMnLCBbJ2dvb2cuZnguZG9tJywgJ2dvb2cu
ZnguZG9tLkJnQ29sb3JUcmFuc2Zvcm0nLCAnZ29vZy5meC5kb20uQ29sb3JUcmFuc2Zvcm0nLCAn
Z29vZy5meC5kb20uRmFkZScsICdnb29nLmZ4LmRvbS5GYWRlSW4nLCAnZ29vZy5meC5kb20uRmFk
ZUluQW5kU2hvdycsICdnb29nLmZ4LmRvbS5GYWRlT3V0JywgJ2dvb2cuZnguZG9tLkZhZGVPdXRB
bmRIaWRlJywgJ2dvb2cuZnguZG9tLlByZWRlZmluZWRFZmZlY3QnLCAnZ29vZy5meC5kb20uUmVz
aXplJywgJ2dvb2cuZnguZG9tLlJlc2l6ZUhlaWdodCcsICdnb29nLmZ4LmRvbS5SZXNpemVXaWR0
aCcsICdnb29nLmZ4LmRvbS5TY3JvbGwnLCAnZ29vZy5meC5kb20uU2xpZGUnLCAnZ29vZy5meC5k
b20uU2xpZGVGcm9tJywgJ2dvb2cuZnguZG9tLlN3aXBlJ10sIFsnZ29vZy5jb2xvcicsICdnb29n
LmV2ZW50cycsICdnb29nLmZ4LkFuaW1hdGlvbicsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29v
Zy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdmeC9kcmFnZHJvcC5qcycsIFsnZ29vZy5meC5EcmFnRHJvcCddLCBbJ2dvb2cuZnguQWJzdHJh
Y3REcmFnRHJvcCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2Z4L2RyYWdkcm9wZ3JvdXAuanMnLCBbJ2dvb2cuZnguRHJhZ0Ryb3BHcm91cCdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZnguQWJzdHJhY3REcmFnRHJvcCcsICdnb29nLmZ4LkRyYWdE
cm9wSXRlbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RyYWdkcm9wZ3JvdXBf
dGVzdC5qcycsIFsnZ29vZy5meC5EcmFnRHJvcEdyb3VwVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywg
J2dvb2cuZnguRHJhZ0Ryb3BHcm91cCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2dlci5qcycsIFsnZ29vZy5meC5EcmFnRXZlbnQn
LCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dvb2cuZnguRHJhZ2dlci5FdmVudFR5cGUnXSwgWydnb29n
LmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2
ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdl
dCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29v
Zy5tYXRoLlJlY3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy51c2Vy
QWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnZ2VyX3Rlc3QuanMn
LCBbJ2dvb2cuZnguRHJhZ2dlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50
cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dv
b2cubWF0aC5SZWN0JywgJ2dvb2cuc3R5bGUuYmlkaScsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9j
aycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51
c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnbGlzdGdyb3Vw
LmpzJywgWydnb29nLmZ4LkRyYWdMaXN0RGlyZWN0aW9uJywgJ2dvb2cuZnguRHJhZ0xpc3RHcm91
cCcsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXAuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ0xpc3RH
cm91cEV2ZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAn
Z29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50Jywg
J2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdn
b29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dvb2cubWF0aC5Db29y
ZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdmeC9kcmFnbGlzdGdyb3VwX3Rlc3QuanMnLCBbJ2dvb2cuZnguRHJhZ0xpc3RH
cm91cFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUn
LCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dz
ZXJFdmVudCcsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5FdmVu
dCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnRXZlbnQnLCAnZ29vZy5m
eC5EcmFnTGlzdERpcmVjdGlvbicsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXAnLCAnZ29vZy5meC5E
cmFnZ2VyJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVz
dGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2Z4L2RyYWdzY3JvbGxzdXBwb3J0LmpzJywgWydnb29nLmZ4LkRyYWdTY3JvbGxT
dXBwb3J0J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAn
Z29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29n
Lm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZngvZHJhZ3Njcm9sbHN1cHBvcnRfdGVzdC5qcycsIFsnZ29vZy5meC5EcmFnU2Nyb2xs
U3VwcG9ydFRlc3QnXSwgWydnb29nLmZ4LkRyYWdTY3JvbGxTdXBwb3J0JywgJ2dvb2cubWF0aC5D
b29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50
cycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
ZngvZWFzaW5nLmpzJywgWydnb29nLmZ4LmVhc2luZyddLCBbXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdmeC9lYXNpbmdfdGVzdC5qcycsIFsnZ29vZy5meC5lYXNpbmdUZXN0J10sIFsn
Z29vZy5meC5lYXNpbmcnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2Z4L2Z4LmpzJywgWydnb29nLmZ4J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dv
b2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguQW5pbWF0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4
LkFuaW1hdGlvbi5TdGF0ZScsICdnb29nLmZ4LkFuaW1hdGlvbkV2ZW50JywgJ2dvb2cuZnguVHJh
bnNpdGlvbi5FdmVudFR5cGUnLCAnZ29vZy5meC5lYXNpbmcnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdmeC9meF90ZXN0LmpzJywgWydnb29nLmZ4VGVzdCddLCBbJ2dvb2cuZnguQW5p
bWF0aW9uJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50
ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2Z4L3RyYW5zaXRpb24uanMnLCBbJ2dvb2cuZnguVHJhbnNp
dGlvbicsICdnb29nLmZ4LlRyYW5zaXRpb24uRXZlbnRUeXBlJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2Z4L3RyYW5zaXRpb25iYXNlLmpzJywgWydnb29nLmZ4LlRyYW5zaXRp
b25CYXNlJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UuU3RhdGUnXSwgWydnb29nLmV2ZW50cy5F
dmVudFRhcmdldCcsICdnb29nLmZ4LlRyYW5zaXRpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdncmFwaGljcy9hYnN0cmFjdGdyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLkFi
c3RyYWN0R3JhcGhpY3MnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29v
Zy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5zdHlsZScsICdnb29n
LnVpLkNvbXBvbmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2Fm
ZmluZXRyYW5zZm9ybS5qcycsIFsnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nXSwgWydn
b29nLm1hdGgnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9jYW52YXNl
bGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkNhbnZhc0VsbGlwc2VFbGVtZW50JywgJ2dvb2cu
Z3JhcGhpY3MuQ2FudmFzR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzSW1hZ2VF
bGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGlj
cy5DYW52YXNSZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNhbnZhc1RleHRFbGVtZW50J10s
IFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9t
LnNhZmUnLCAnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkdy
b3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNz
LlBhdGgnLCAnZ29vZy5ncmFwaGljcy5QYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlJlY3RF
bGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVGV4dEVsZW1lbnQnLCAnZ29vZy5odG1sLlNhZmVIdG1s
JywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLm1hdGgnLCAnZ29vZy5z
dHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdncmFwaGljcy9jYW52YXNncmFwaGljcy5qcycsIFsnZ29vZy5ncmFwaGljcy5DYW52YXNHcmFw
aGljcyddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dv
b2cuZ3JhcGhpY3MuQWJzdHJhY3RHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLkNhbnZhc0VsbGlw
c2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3Jh
cGhpY3MuQ2FudmFzSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzUGF0aEVsZW1l
bnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNSZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNh
bnZhc1RleHRFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cubWF0aC5T
aXplJywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGlj
cy9lbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwgWydnb29nLmFzc2VydHMn
LCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMu
TGlzdGVuYWJsZScsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLm1hdGgn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9lbGxpcHNlZWxlbWVudC5q
cycsIFsnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ry
b2tlQW5kRmlsbEVsZW1lbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGlj
cy9leHQvY29vcmRpbmF0ZXMuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LmNvb3JkaW5hdGVzJ10s
IFsnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9l
eHQvZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuRWxlbWVudCddLCBbJ2dvb2cuZXZl
bnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LmNv
b3JkaW5hdGVzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2Vs
bGlwc2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsbGlwc2UnXSwgWydnb29nLmdyYXBoaWNz
LmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2dyYXBoaWNzL2V4dC9leHQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0J10sIFsnZ29vZy5ncmFw
aGljcy5leHQuRWxsaXBzZScsICdnb29nLmdyYXBoaWNzLmV4dC5HcmFwaGljcycsICdnb29nLmdy
YXBoaWNzLmV4dC5Hcm91cCcsICdnb29nLmdyYXBoaWNzLmV4dC5JbWFnZScsICdnb29nLmdyYXBo
aWNzLmV4dC5SZWN0YW5nbGUnLCAnZ29vZy5ncmFwaGljcy5leHQuU2hhcGUnLCAnZ29vZy5ncmFw
aGljcy5leHQuY29vcmRpbmF0ZXMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFw
aGljcy9leHQvZ3JhcGhpY3MuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkdyYXBoaWNzJ10sIFsn
Z29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZ3JhcGhpY3MnLCAn
Z29vZy5ncmFwaGljcy5leHQuR3JvdXAnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdn
cmFwaGljcy9leHQvZ3JvdXAuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJ10sIFsnZ29v
Zy5hcnJheScsICdnb29nLmdyYXBoaWNzLmV4dC5FbGVtZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2ltYWdlLmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5J
bWFnZSddLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdncmFwaGljcy9leHQvcGF0aC5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuUGF0
aCddLCBbJ2dvb2cuZ3JhcGhpY3MuQWZmaW5lVHJhbnNmb3JtJywgJ2dvb2cuZ3JhcGhpY3MuUGF0
aCcsICdnb29nLm1hdGguUmVjdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBo
aWNzL2V4dC9yZWN0YW5nbGUuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlJlY3RhbmdsZSddLCBb
J2dvb2cuZ3JhcGhpY3MuZXh0LlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3NoYXBlLmpzJywgWydnb29nLmdyYXBoaWNzLmV4
dC5TaGFwZSddLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3N0cm9rZWFuZGZpbGxlbGVt
ZW50LmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCBbJ2dv
b2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdn
cmFwaGljcy9maWxsLmpzJywgWydnb29nLmdyYXBoaWNzLkZpbGwnXSwgW10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZm9udC5qcycsIFsnZ29vZy5ncmFwaGljcy5Gb250
J10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2dyYXBoaWNzLmpz
JywgWydnb29nLmdyYXBoaWNzJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5DYW52YXNH
cmFwaGljcycsICdnb29nLmdyYXBoaWNzLlN2Z0dyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuVm1s
R3JhcGhpY3MnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdncmFwaGljcy9ncm91cGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50
J10sIFsnZ29vZy5ncmFwaGljcy5FbGVtZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnZ3JhcGhpY3MvaW1hZ2VlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVu
dCddLCBbJ2dvb2cuZ3JhcGhpY3MuRWxlbWVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2dyYXBoaWNzL2xpbmVhcmdyYWRpZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkxpbmVhckdy
YWRpZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3BhdGguanMnLCBbJ2dvb2cuZ3JhcGhpY3Mu
UGF0aCcsICdnb29nLmdyYXBoaWNzLlBhdGguU2VnbWVudCddLCBbJ2dvb2cuYXJyYXknLCAnZ29v
Zy5tYXRoJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aGVsZW1l
bnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLlN0
cm9rZUFuZEZpbGxFbGVtZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhp
Y3MvcGF0aHMuanMnLCBbJ2dvb2cuZ3JhcGhpY3MucGF0aHMnXSwgWydnb29nLmdyYXBoaWNzLlBh
dGgnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdncmFwaGljcy9yZWN0ZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5SZWN0RWxlbWVudCdd
LCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdncmFwaGljcy9zb2xpZGZpbGwuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU29s
aWRGaWxsJ10sIFsnZ29vZy5ncmFwaGljcy5GaWxsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnZ3JhcGhpY3Mvc3Ryb2tlLmpzJywgWydnb29nLmdyYXBoaWNzLlN0cm9rZSddLCBbXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9zdHJva2VhbmRmaWxsZWxlbWVu
dC5qcycsIFsnZ29vZy5ncmFwaGljcy5TdHJva2VBbmRGaWxsRWxlbWVudCddLCBbJ2dvb2cuZ3Jh
cGhpY3MuRWxlbWVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3N2
Z2VsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5n
cmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJbWFnZUVsZW1lbnQn
LCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlN2Z1JlY3RF
bGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnXSwgWydnb29nLmRvbScsICdn
b29nLmdyYXBoaWNzLkVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50
JywgJ2dvb2cuZ3JhcGhpY3MuSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1l
bnQnLCAnZ29vZy5ncmFwaGljcy5SZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlRleHRFbGVt
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc3ZnZ3JhcGhpY3Mu
anMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnR3JhcGhpY3MnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cu
ZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUn
LCAnZ29vZy5ncmFwaGljcy5BYnN0cmFjdEdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuTGluZWFy
R3JhZGllbnQnLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxs
JywgJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJywgJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1l
bnQnLCAnZ29vZy5ncmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJ
bWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBo
aWNzLlN2Z1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnLCAnZ29v
Zy5tYXRoJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy90ZXh0ZWxlbWVudC5qcycs
IFsnZ29vZy5ncmFwaGljcy5UZXh0RWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5k
RmlsbEVsZW1lbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy92bWxl
bGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLlZtbEVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3Jh
cGhpY3MuVm1sR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sSW1hZ2VFbGVtZW50Jywg
J2dvb2cuZ3JhcGhpY3MuVm1sUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxSZWN0RWxl
bWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFRleHRFbGVtZW50J10sIFsnZ29vZy5kb20nLCAnZ29v
Zy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkdyb3VwRWxlbWVudCcs
ICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGhFbGVtZW50
JywgJ2dvb2cuZ3JhcGhpY3MuUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5UZXh0RWxlbWVu
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3ZtbGdyYXBoaWNzLmpz
JywgWydnb29nLmdyYXBoaWNzLlZtbEdyYXBoaWNzJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRv
bS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMu
RXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmdyYXBoaWNzLkFi
c3RyYWN0R3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5MaW5lYXJHcmFkaWVudCcsICdnb29nLmdy
YXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5ncmFwaGljcy5W
bWxFbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbEdyb3VwRWxlbWVudCcsICdnb29n
LmdyYXBoaWNzLlZtbEltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFBhdGhFbGVtZW50
JywgJ2dvb2cuZ3JhcGhpY3MuVm1sUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxUZXh0
RWxlbWVudCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5tYXRoJywg
J2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dv
b2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2V2ZW50Lmpz
JywgWydnb29nLmhpc3RvcnkuRXZlbnQnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmhp
c3RvcnkuRXZlbnRUeXBlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaGlzdG9yeS9l
dmVudHR5cGUuanMnLCBbJ2dvb2cuaGlzdG9yeS5FdmVudFR5cGUnXSwgW10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnaGlzdG9yeS9oaXN0b3J5LmpzJywgWydnb29nLkhpc3RvcnknLCAn
Z29vZy5IaXN0b3J5LkV2ZW50JywgJ2dvb2cuSGlzdG9yeS5FdmVudFR5cGUnXSwgWydnb29nLlRp
bWVyJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAn
Z29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMu
RXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaGlzdG9yeS5FdmVu
dCcsICdnb29nLmhpc3RvcnkuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29n
Lmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycs
ICdnb29nLmxhYnMudXNlckFnZW50LmRldmljZScsICdnb29nLm1lbW9pemUnLCAnZ29vZy5zdHJp
bmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2hpc3RvcnlfdGVzdC5qcycsIFsnZ29vZy5IaXN0b3J5
VGVzdCddLCBbJ2dvb2cuSGlzdG9yeScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29v
Zy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnaGlzdG9yeS9odG1sNWhpc3RvcnkuanMnLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3Rv
cnknLCAnZ29vZy5oaXN0b3J5Lkh0bWw1SGlzdG9yeS5Ub2tlblRyYW5zZm9ybWVyJ10sIFsnZ29v
Zy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dv
b2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuRXZlbnQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2h0bWw1aGlzdG9yeV90ZXN0LmpzJywgWydnb29nLmhp
c3RvcnkuSHRtbDVIaXN0b3J5VGVzdCddLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3RvcnknLCAn
Z29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50
ZXN0aW5nLm1vY2ttYXRjaGVycyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwv
Zmxhc2guanMnLCBbJ2dvb2cuaHRtbC5mbGFzaCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmh0
bWwuU2FmZUh0bWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2ZsYXNoX3Rl
c3QuanMnLCBbJ2dvb2cuaHRtbC5mbGFzaFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAn
Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuZmxhc2gnLCAnZ29vZy5z
dHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2h0bWwvbGVnYWN5Y29udmVyc2lvbnMuanMnLCBbJ2dvb2cuaHRtbC5sZWdhY3lj
b252ZXJzaW9ucyddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxl
JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2xlZ2FjeWNvbnZlcnNpb25zX3Rlc3Qu
anMnLCBbJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9uc1Rlc3QnXSwgWydnb29nLmh0bWwuU2Fm
ZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVy
bCcsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5
UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2h0bWwvc2FmZWh0bWwuanMnLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCddLCBbJ2dvb2cu
YXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20udGFn
cycsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdn
b29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cu
aTE4bi5iaWRpLkRpcicsICdnb29nLmkxOG4uYmlkaS5EaXJlY3Rpb25hbFN0cmluZycsICdnb29n
Lm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmlu
Zy5UeXBlZFN0cmluZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZWh0
bWxfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVIdG1sVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZl
SHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcs
ICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dv
b2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnN0cmluZy5Db25z
dCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
aHRtbC9zYWZlc2NyaXB0LmpzJywgWydnb29nLmh0bWwuU2FmZVNjcmlwdCddLCBbJ2dvb2cuYXNz
ZXJ0cycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXNjcmlwdF90ZXN0LmpzJywgWydn
b29nLmh0bWwuc2FmZVNjcmlwdFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29n
LnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnaHRtbC9zYWZlc3R5bGUuanMnLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGUnXSwg
Wydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cmluZycsICdnb29nLnN0cmlu
Zy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYWZlU3R5bGVU
ZXN0J10sIFsnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZl
c3R5bGVzaGVldC5qcycsIFsnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0J10sIFsnZ29vZy5hcnJh
eScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAn
Z29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdo
dG1sL3NhZmVzdHlsZXNoZWV0X3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYWZlU3R5bGVTaGVldFRl
c3QnXSwgWydnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5z
dHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2h0bWwvc2FmZXVybC5qcycsIFsnZ29vZy5odG1sLlNhZmVVcmwnXSwgWydnb29n
LmFzc2VydHMnLCAnZ29vZy5mcy51cmwnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuaTE4
bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3Ry
aW5nLlR5cGVkU3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZl
dXJsX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYWZlVXJsVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZl
VXJsJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnaHRtbC9zaWx2ZXJsaWdodC5qcycsIFsnZ29vZy5odG1sLnNpbHZlcmxpZ2h0J10sIFsn
Z29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29v
Zy5odG1sLmZsYXNoJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnaHRtbC9zaWx2ZXJsaWdodF90ZXN0LmpzJywgWydnb29nLmh0bWwuc2lsdmVybGln
aHRUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3Vy
Y2VVcmwnLCAnZ29vZy5odG1sLnNpbHZlcmxpZ2h0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dv
b2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Rl
c3RpbmcuanMnLCBbJ2dvb2cuaHRtbC50ZXN0aW5nJ10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywg
J2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1s
LlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVk
UmVzb3VyY2VVcmwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3RydXN0ZWRy
ZXNvdXJjZXVybC5qcycsIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCddLCBbJ2dvb2cu
YXNzZXJ0cycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRGlyZWN0aW9u
YWxTdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3RydXN0ZWRyZXNvdXJjZXVybF90
ZXN0LmpzJywgWydnb29nLmh0bWwudHJ1c3RlZFJlc291cmNlVXJsVGVzdCddLCBbJ2dvb2cuaHRt
bC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuc3RyaW5n
LkNvbnN0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdodG1sL3VuY2hlY2tlZGNvbnZlcnNpb25zLmpzJywgWydnb29nLmh0bWwudW5jaGVja2Vk
Y29udmVyc2lvbnMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dv
b2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNh
ZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVz
b3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3VuY2hlY2tlZGNvbnZlcnNpb25zX3Rlc3QuanMnLCBb
J2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9uc1Rlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0
bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29n
Lmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRy
dXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29v
Zy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3V0aWxzLmpzJywgWydnb29n
Lmh0bWwudXRpbHMnXSwgWydnb29nLnN0cmluZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2h0bWwvdXRpbHNfdGVzdC5qcycsIFsnZ29vZy5odG1sLlV0aWxzVGVzdCddLCBbJ2dvb2cu
YXJyYXknLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmh0bWwudXRpbHMnLCAnZ29vZy5vYmpl
Y3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2kxOG4vYmlkaS5qcycsIFsnZ29vZy5pMThuLmJpZGknLCAnZ29vZy5pMThuLmJpZGkuRGlyJywg
J2dvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cuaTE4bi5iaWRpLkZvcm1h
dCddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2JpZGlfdGVzdC5qcycs
IFsnZ29vZy5pMThuLmJpZGlUZXN0J10sIFsnZ29vZy5pMThuLmJpZGknLCAnZ29vZy5pMThuLmJp
ZGkuRGlyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdpMThuL2JpZGlmb3JtYXR0ZXIuanMnLCBbJ2dvb2cuaTE4bi5CaWRpRm9ybWF0dGVyJ10s
IFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdn
b29nLmkxOG4uYmlkaScsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRm9y
bWF0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9iaWRpZm9ybWF0dGVyX3Rl
c3QuanMnLCBbJ2dvb2cuaTE4bi5CaWRpRm9ybWF0dGVyVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZl
SHRtbCcsICdnb29nLmkxOG4uQmlkaUZvcm1hdHRlcicsICdnb29nLmkxOG4uYmlkaS5EaXInLCAn
Z29vZy5pMThuLmJpZGkuRm9ybWF0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2NoYXJsaXN0ZGVjb21wcmVzc29yLmpzJywgWydnb29n
LmkxOG4uQ2hhckxpc3REZWNvbXByZXNzb3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaTE4bi51
Q2hhciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY2hhcmxpc3RkZWNvbXBy
ZXNzb3JfdGVzdC5qcycsIFsnZ29vZy5pMThuLkNoYXJMaXN0RGVjb21wcmVzc29yVGVzdCddLCBb
J2dvb2cuaTE4bi5DaGFyTGlzdERlY29tcHJlc3NvcicsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jaGFycGlja2VyZGF0YS5qcycsIFsn
Z29vZy5pMThuLkNoYXJQaWNrZXJEYXRhJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2kxOG4vY29sbGF0aW9uLmpzJywgWydnb29nLmkxOG4uY29sbGF0aW9uJ10sIFtdLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29sbGF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cu
aTE4bi5jb2xsYXRpb25UZXN0J10sIFsnZ29vZy5pMThuLmNvbGxhdGlvbicsICdnb29nLnRlc3Rp
bmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFn
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jb21wYWN0bnVtYmVyZm9y
bWF0c3ltYm9scy5qcycsIFsnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWZfWkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2FtJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19h
bV9FVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXInLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyXzAwMScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfYXonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2F6X0xhdG5fQVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2JnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZ19CRycsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYm4nLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2JuX0JEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19icicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYnJfRlIn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jYV9BRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfY2FfRVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2NhX0VTX1ZBTEVOQ0lBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19jYV9GUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2FfSVQnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NocicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2hyX1VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19jcycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
Y3NfQ1onLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2N5JywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jeV9HQicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZGEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2RhX0RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kYV9H
TCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGUnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0FUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19kZV9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfZGVfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0RF
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9MVScsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2VsX0dSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19lbicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fMDAxJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BUycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2VuX0RHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19lbl9GTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0In
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dVJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9JRScsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfZW5fSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2VuX0lPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9N
SCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVAnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BSJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfZW5fU0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Vu
X1RDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9VTScsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVVMnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1ZHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19lbl9WSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fWkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pXJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lcycsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZXNfNDE5JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19lc19FQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
ZXNfRVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0lDJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldCcsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZXRfRUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2V1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldV9F
UycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmEnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZhX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19maScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfZmlfRkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZpbCcsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmlsX1BIJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfZnJfQkwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2ZyX0NBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9GUicsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfR0YnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0dQJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19mcl9NQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfZnJfTUYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01RJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfUkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2ZyX1lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19nYScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ2FfSUUnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dsJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nbF9FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfZ3N3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19n
c3dfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19MSScsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3UnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2d1X0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19oYXcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hh
d19VUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGUnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19oaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfaGlfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ocl9IUicsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2h1X0hVJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19oeScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHlfQU0nLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19pZF9JRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfaW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lzJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pc19JUycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2l0X0lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19pdF9TTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXcnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2phJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19qYV9KUCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfa2EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thX0dF
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19raycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2tfQ3lybF9LWicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfa20nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2ttX0tIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rbics
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa25fSU4nLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19rb19LUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfa3knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t5X0N5cmxfS0cn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbl9DRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfbG8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2xvX0xBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHRfTFQnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19sdl9MVicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWsn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21rX01LJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfbWxfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX21uJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbl9DeXJsX01O
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tcicsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXJfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19tc19MYXRuX01ZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdCcs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXRfTVQnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX215JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19teV9NTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfbmInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25iX05PJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uYl9TSicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX25lX05QJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19u
bCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfTkwnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25vJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19ub19OTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfb3InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29yX0lOJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wYScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfcGwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX3BsX1BMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdCcsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfQlInLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X1BUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19ybycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
cm9fUk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1JywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfc2knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX3NpX0xLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaycs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2tfU0snLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19zbF9TSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfc3EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NxX0FMJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfc3JfQ3lybF9SUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfc3YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X3N2X1NFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zdycsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3dfVFonLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc190YV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGUn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RlX0lOJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190aCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfdGhfVEgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX3RsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190cicsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHJfVFInLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc191a19VQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdXIn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VyX1BLJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191eicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfdXpfTGF0bl9VWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfdmknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZpX1ZO
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aCcsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemhfQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX3poX0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc196aF9IYW5zX0NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196
aF9UVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfenUnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3p1X1pBJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2kxOG4vY29tcGFjdG51bWJlcmZvcm1hdHN5bWJvbHNfZXh0LmpzJywg
Wydnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNFeHQnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19hYV9ESicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
YWFfRVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FhX0VUJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZl9OQScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWdxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19hZ3FfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2FrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ha19HSCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfQUUnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0JIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19hcl9ESicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
YXJfRFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VHJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9FSCcsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfRVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2FyX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19hcl9JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfSk8nLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0tNJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9LVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfYXJfTEInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2FyX0xZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NQScs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfTVInLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX09NJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19hcl9QUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfYXJfUUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NB
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TRCcsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfU08nLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19hcl9TWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJf
VEQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1ROJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9ZRScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfYXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2FzX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hc2En
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FzYV9UWicsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXN0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19hc3RfRVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2F6X0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2F6
X0N5cmxfQVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2F6X0xhdG4n
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JhcycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmFzX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19iZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfYmVfQlknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JlbScsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmVtX1pNJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZXonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2Jlel9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfYm0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JtX0xhdG4nLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JtX0xhdG5fTUwnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19ibycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfYm9fQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JvX0lO
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icngnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JyeF9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfYnMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5
cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG4nLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NnZycsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfY2dnX1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19ja2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9B
cmFiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ja2JfQXJhYl9JUScs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0FyYWJfSVInLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9JUScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19ja2JfTGF0bicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfY2tiX0xhdG5fSVEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2RhdicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGF2X0tFJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9MSScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGplJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19kamVfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2RzYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZHNiX0RFJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kdWEnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R1YV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfZHlvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19k
eW9fU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R6JywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kel9CVCcsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZWJ1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19lYnVfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Vl
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lZV9HSCcsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWVfVEcnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2VsX0NZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Vu
X0FHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BSScsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19lbl9CTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fQlMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JXJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9CWicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2VuX0NDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19lbl9DSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ00nLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NYJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ETScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfZW5fRVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2VuX0ZKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9GSycs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0QnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19lbl9HSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfZW5fR0knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dN
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HWScsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSEsnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19lbl9KRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5f
Sk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0tFJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9LSScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZW5fS04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2VuX0tZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19l
bl9MQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTFInLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0xTJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfZW5fTU8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2VuX01TJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NVCcsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVUnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01XJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19lbl9NWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfZW5fTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX05GJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ORycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2VuX05VJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19lbl9OWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEcn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BIJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QSycsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfZW5fUE4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2VuX1JXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9T
QicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NEJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfZW5fU0wnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Vu
X1NTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TWCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1onLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19lbl9UTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fVFQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RWJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UWicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2VuX1ZDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19lbl9WVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fV1MnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pNJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19lc19BUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQk8nLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NMJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19DTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfZXNfQ1InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2VzX0NVJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19ETycs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfRUMnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19lc19HVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfZXNfSE4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX01Y
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19OSScsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfUEEnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19lc19QSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNf
UFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19TVicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZXNfVVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2VzX1VZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19l
c19WRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXdvJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ld29fQ00nLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZhX0FGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19mZicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmZf
Q00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZmX0dOJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9NUicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZmZfU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2ZvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mb19G
TycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkUnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0JGJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfZnJfQkonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Zy
X0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRicsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0cnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19mcl9DSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
ZnJfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0RKJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9EWicsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfR0EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2ZyX0dOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19mcl9HUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfSFQnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0tNJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfZnJfTUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2ZyX01HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NTCcs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTVInLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01VJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19mcl9OQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfZnJfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1BG
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9SVycsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfU0MnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19mcl9TWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJf
VEQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1RHJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9UTicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfZnJfVlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2ZyX1dGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19m
dXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Z1cl9JVCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnknLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX2Z5X05MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19nZCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ2RfR0In
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19GUicsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3V6JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19ndXpfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2d2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ndl9JTScs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGEnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hhX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2hhX0xhdG5fR0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2hhX0xhdG5fTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX2hhX0xhdG5fTkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hy
X0JBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oc2InLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hzYl9ERScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfaWEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX2lhX0ZSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pZycs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWdfTkcnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19paV9DTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfaXRfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2pnbycsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamdvX0NNJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19qbWMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX2ptY19UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfa2FiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rYWJfRFonLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thbScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2FtX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19rZGUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2tkZV9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2VhJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rZWFfQ1YnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tocScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfa2hxX01MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19raScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2lfS0UnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2trX0N5cmwnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2traicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfa2tqX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19rbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2xfR0wnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tsbicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfa2xuX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19rb19LUCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
a29rJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rb2tfSU4nLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19rc19BcmFiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19rc19BcmFiX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19rc2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzYl9UWics
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NmJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rc2ZfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2tzaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfa3NoX0RFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rdycsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3dfR0InLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t5X0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX2xhZycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfbGFnX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sYicsICdn
b29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbGJfTFUnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19sZ19VRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
bGt0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sa3RfVVMnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuX0FPJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbl9DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfbG5fQ0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X2x1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdV9DRCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHVvJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19sdW9fS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX2x1eScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHV5
X0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tYXMnLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfbWFzX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19tZXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21l
cl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWZlJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZmVfTVUnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19tZ19NRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWdo
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nbycsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfbWdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19tbl9DeXJsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19t
c19MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tc19MYXRuX0JO
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tc19MYXRuX1NHJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdWEnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX211YV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfbmFxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19u
YXFfTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25kJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZF9aVycsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfbmVfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX25sX0FXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19u
bF9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfQlEnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX0NXJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubF9TUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfbmxfU1gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X25tZycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbm1nX0NNJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubicsICdnb29nLmkxOG4uQ29tcGFj
dE51bWJlckZvcm1hdFN5bWJvbHNfbm5fTk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX25uaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbm5o
X0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ucicsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnJfWkEnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX25zbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfbnNvX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19udXMn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX251c19TRCcsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnluJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19ueW5fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX29tJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vbV9FVCcs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb21fS0UnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19vc19HRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfb3NfUlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BhX0FyYWIn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BhX0FyYWJfUEsnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BhX0d1cnUnLCAnZ29vZy5pMThuLkNv
bXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9y
bWF0U3ltYm9sc19wc19BRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNf
cHRfQU8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0NWJywgJ2dv
b2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9HVycsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfTU8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJG
b3JtYXRTeW1ib2xzX3B0X01aJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19wdF9TVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfVEwnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3F1JywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc19xdV9CTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfcXVfRUMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X3F1X1BFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ybScsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm1fQ0gnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19ybl9CSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm9f
TUQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JvZicsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm9mX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9CWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfcnVfS0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1
X0taJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9NRCcsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcnVfVUEnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcndr
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yd2tfVFonLCAnZ29vZy5p
MThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfc2FoX1JVJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0
U3ltYm9sc19zYXEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhcV9L
RScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2JwJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zYnBfVFonLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX3NlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc19zZV9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2VfTk8n
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NlX1NFJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZWgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX3NlaF9NWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfc2VzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZXNfTUwn
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NnJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZ19DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfc2hpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19zaGlfTGF0bicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2hpX0xh
dG5fTUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NoaV9UZm5nJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfVGZuZ19NQScsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc21uJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc19zbW5fRkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX3NuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbl9a
VycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc28nLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0RKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVt
YmVyRm9ybWF0U3ltYm9sc19zb19FVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfc29fS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NvX1NP
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcV9NSycsICdnb29nLmkx
OG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3FfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX3NyX0N5cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX3NyX0N5cmxfTUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Ny
X0N5cmxfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG4n
LCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fQkEnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fTUUnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX3NzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c19zc19TWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3NfWkEnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NzeScsICdnb29nLmkxOG4uQ29t
cGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3N5X0VSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19zdl9BWCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJv
bHNfc3ZfRkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0tFJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zd19VRycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3djJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc19zd2NfQ0QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1i
b2xzX3RhX0xLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190YV9NWScs
ICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGFfU0cnLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJl
ckZvcm1hdFN5bWJvbHNfdGVvX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc190ZW9fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RpJywg
J2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190aV9FUicsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGlfRVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzX3RuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9s
c190bl9CVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdG5fWkEnLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RvJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc190b19UTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfdHJfQ1knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X3RzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190c19aQScsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHdxJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc190d3FfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX3R6bScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHpt
X0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3R6bV9MYXRuX01B
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191ZycsICdnb29nLmkxOG4u
Q29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdWdfQXJhYicsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfdWdfQXJhYl9DTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfdXJfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xz
X3V6X0FyYWInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWJf
QUYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmwnLCAnZ29v
Zy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmxfVVonLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3RO
dW1iZXJGb3JtYXRTeW1ib2xzX3ZhaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5
bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Zh
aV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192YWlfVmFp
aScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmFpX1ZhaWlfTFInLCAn
Z29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZlJywgJ2dvb2cuaTE4bi5Db21w
YWN0TnVtYmVyRm9ybWF0U3ltYm9sc192ZV9aQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZv
cm1hdFN5bWJvbHNfdm8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Zv
XzAwMScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdnVuJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192dW5fVFonLCAnZ29vZy5pMThuLkNvbXBh
Y3ROdW1iZXJGb3JtYXRTeW1ib2xzX3dhZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1h
dFN5bWJvbHNfd2FlX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc194
b2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3hvZ19VRycsICdnb29n
LmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeWF2JywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc195YXZfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3Jt
YXRTeW1ib2xzX3lpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195aV8w
MDEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3lvJywgJ2dvb2cuaTE4
bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195b19CSicsICdnb29nLmkxOG4uQ29tcGFjdE51
bWJlckZvcm1hdFN5bWJvbHNfeW9fTkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRT
eW1ib2xzX3pnaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemdoX01B
JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zJywgJ2dvb2cu
aTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5D
b21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX01PJywgJ2dvb2cuaTE4bi5Db21wYWN0
TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX1NHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVy
Rm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3lt
Ym9sc196aF9IYW50X0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196
aF9IYW50X01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50
X1RXJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY3VycmVuY3kuanMn
LCBbJ2dvb2cuaTE4bi5jdXJyZW5jeScsICdnb29nLmkxOG4uY3VycmVuY3kuQ3VycmVuY3lJbmZv
JywgJ2dvb2cuaTE4bi5jdXJyZW5jeS5DdXJyZW5jeUluZm9UaWVyMiddLCBbXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2N1cnJlbmN5X3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5j
dXJyZW5jeVRlc3QnXSwgWydnb29nLmkxOG4uTnVtYmVyRm9ybWF0JywgJ2dvb2cuaTE4bi5jdXJy
ZW5jeScsICdnb29nLmkxOG4uY3VycmVuY3kuQ3VycmVuY3lJbmZvJywgJ2dvb2cub2JqZWN0Jywg
J2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2N1cnJlbmN5Y29kZW1hcC5qcycsIFsn
Z29vZy5pMThuLmN1cnJlbmN5Q29kZU1hcCcsICdnb29nLmkxOG4uY3VycmVuY3lDb2RlTWFwVGll
cjInXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZWZvcm1h
dC5qcycsIFsnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZUZv
cm1hdC5Gb3JtYXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kYXRlJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHMnLCAnZ29vZy5pMThuLlRpbWVab25lJywgJ2dvb2cuc3RyaW5nJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZWZvcm1hdF90ZXN0LmpzJywg
Wydnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXRUZXN0J10sIFsnZ29vZy5kYXRlLkRhdGUnLCAnZ29v
Zy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kZScsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19m
YScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19qYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdicsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfQUUnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9TQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2JuX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGUnLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dCJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19l
bl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcicsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGVf
SUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19qYScsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX3JvX1JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3YnLCAnZ29vZy5pMThu
LlRpbWVab25lJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdpMThuL2RhdGV0aW1lcGFyc2UuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNl
J10sIFsnZ29vZy5kYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRl
dGltZXBhcnNlX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNlVGVzdCddLCBbJ2dv
b2cuZGF0ZS5EYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXJzZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGwnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWls
dXJlcycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXBhdHRlcm5zLmpzJywgWydnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hZicsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hbScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19hcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19heicsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19iZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ibicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19icicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jaHInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfY3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3knLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfZGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGUnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfZGVfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWwnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVUnLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU4nLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
ZW5fVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWkEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXNfNDE5Jywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2V0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V1JywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX2ZhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9DQScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19nYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nbCcsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
Z3UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGF3JywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX2hlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hpJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX2hyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h1Jywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX2lkJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2luJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX2lzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2l0JywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX2l3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ph
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2thJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2trJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ttJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX2tuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tvJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X2xuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xvJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX2x0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x2JywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX21rJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21sJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX21vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21yJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX21zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX210JywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX215JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25i
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25lJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX25sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25vJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX25vX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29yJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3BsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0JywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3B0X0JSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X1BUJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3J1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NoJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3NpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NrJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX3NsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Nx
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX3N2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3N3JywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX3RhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RlJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X3RsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RyJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX3VrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3VyJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3V6JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZpJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3poX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hLJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3poX1RXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3p1
J10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZXRpbWVwYXR0ZXJu
c2V4dC5qcycsIFsnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNFeHQnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfYWZfTkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWZfWkEn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWdxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2FncV9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19haycsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19ha19HSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19h
bV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcl8wMDEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfYXJfQUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfQkgn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfREonLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfYXJfRFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfRUcnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfRUgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfYXJfRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfSUwnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfYXJfSVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJf
Sk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfS00nLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfYXJfS1cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfTEInLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfTFknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfYXJfTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfTVInLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfYXJfT00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
YXJfUFMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfUUEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfYXJfU0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfU0Qn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfU08nLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfYXJfU1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfU1knLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfVEQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfYXJfVE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfWUUnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfYXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXNfSU4n
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXNhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2FzYV9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9DeXJsJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2F6X0N5cmxfQVonLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfYXpfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9MYXRuX0Fa
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JhcycsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19iYXNfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmUnLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfYmVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
YmVtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JlbV9aTScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19iZXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmV6X1RaJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JnX0JHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2JtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JtX0xhdG4nLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfYm1fTGF0bl9NTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19ibl9CRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ibl9JTicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19ibycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ib19D
TicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ib19JTicsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19icl9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icngnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYnJ4X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX2JzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JzX0N5cmwnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfYnNfQ3lybF9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19ic19MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JzX0xhdG5fQkEnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2FfQUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfY2FfRVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2FfRlInLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfY2FfSVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2dn
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NnZ19VRycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19jaHJfVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3NfQ1onLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3lfR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfZGFfREsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGFfR0wnLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfZGF2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2Rh
dl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kZV9CRScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19kZV9ERScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kZV9MSScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kZV9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19kamUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGplX05FJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX2RzYicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19k
c2JfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHVhJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX2R1YV9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19keW8nLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHlvX1NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2R6JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2R6X0JUJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX2VidScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lYnVf
S0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWUnLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfZWVfR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWVfVEcnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWxfQ1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfZWxfR1InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fMDAxJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX2VuXzE1MCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9BRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9BSScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lbl9BUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9CQics
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9CRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lbl9CTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9CUycsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9CVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19lbl9CWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9DQScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19lbl9DQycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9D
SycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9DTScsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19lbl9DWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9ERycsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9ETScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19lbl9FUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9GSicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9GSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9GTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9HRCcsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lbl9HRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9HSCcs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9HSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lbl9HTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9HVScsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9HWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19lbl9ISycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9JTScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19lbl9JTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9K
RScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9KTScsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19lbl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9LSScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9LTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19lbl9LWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9MQycsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9MUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9MUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NRycsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lbl9NSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NTycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lbl9NUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NVCcsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19lbl9NVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9NWScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19lbl9OQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9O
RicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9ORycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19lbl9OUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9OVScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9OWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19lbl9QRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9QSCcsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9QSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9QTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9QUicsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lbl9QVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9SVycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9TQicsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lbl9TQycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9TRCcsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9TSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19lbl9TTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9TUycsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19lbl9TWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9T
WicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9UQycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19lbl9USycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9UTycsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9UVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19lbl9UVicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9UWicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9VTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9VU19QT1NJWCcsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9WQycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
bl9WRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9WSScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lbl9WVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9XUycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl9aTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lbl9aVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbycsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19BUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
c19CTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19DTCcsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lc19DTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19DUics
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19DVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19lc19ETycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19FQScsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19FQycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19lc19HUScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19HVCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19lc19ITicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19J
QycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19NWCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19lc19OSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19QQScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19QRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19lc19QSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19QUicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19QWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19l
c19TVicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19VUycsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19lc19VWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lc19WRScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ldF9FRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19ldV9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ld28nLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfZXdvX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X2ZhX0FGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZhX0lSJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX2ZmJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0NNJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0dOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2ZmX01SJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX1NOJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpX0ZJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X2ZpbF9QSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mbycsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19mb19GTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9CRScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9CRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19mcl9CSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9CSicsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9CTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19mcl9DRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9DRicsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19mcl9DRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9D
SCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9DSScsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19mcl9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9ESicsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19mcl9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9HQScsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9HRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19m
cl9HTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9HUCcsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19mcl9HUScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9IVCcs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9LTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19mcl9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9NQScsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9NQycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19mcl9NRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9NRycsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19mcl9NTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9N
UScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9NUicsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19mcl9NVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9OQycsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19mcl9QRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9QTScsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9SRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19m
cl9SVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9TQycsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19mcl9TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9TWScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9URCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19mcl9URycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9UTicsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9WVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19mcl9XRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9ZVCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19mdXInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnVyX0lU
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2Z5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2Z5X05MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2dhX0lFJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX2dkJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2dk
X0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2dsX0VTJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX2dzd19DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nc3dfRlIn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3N3X0xJJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX2d1X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2d1eicsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ndXpfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfZ3YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3ZfSU0nLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfaGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGFfTGF0bics
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oYV9MYXRuX0dIJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX2hhX0xhdG5fTkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGFf
TGF0bl9ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oYXdfVVMnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfaGVfSUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGlf
SU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaHJfQkEnLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfaHJfSFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaHNiJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hzYl9ERScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19odV9IVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oeV9BTScsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19pZF9JRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19p
ZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pZ19ORycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19paScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19paV9DTicsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pc19JUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19pdF9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pdF9JVCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19pdF9TTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qYV9K
UCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qZ28nLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfamdvX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ptYycsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qbWNfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfa2FfR0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2FiJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX2thYl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rYW0n
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2FtX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX2tkZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rZGVfVFonLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2VhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X2tlYV9DVicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19raHEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfa2hxX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tpJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tpX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX2trX0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2tfQ3lybF9LWics
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ra2onLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfa2tqX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tsJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX2tsX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ts
bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rbG5fS0UnLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfa21fS0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa25fSU4nLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa29fS1AnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfa29fS1InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa29rJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX2tva19JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19r
cycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rc19BcmFiJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX2tzX0FyYWJfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3Ni
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzYl9UWicsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19rc2YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3NmX0NNJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19rc2hfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3cnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfa3dfR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3lfQ3ly
bCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19reV9DeXJsX0tHJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX2xhZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sYWdfVFon
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfbGJfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGcnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfbGdfVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGt0
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xrdF9VUycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19sbl9BTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9DRCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9DRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19sbl9DRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sb19MQScsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19sdF9MVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19s
dScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdV9DRCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19sdW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbHVvX0tFJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x1eScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19sdXlfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbHZfTFYnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfbWFzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21hc19L
RScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tYXNfVFonLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfbWVyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21lcl9LRScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tZmUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfbWZlX01VJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21nJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX21nX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21naCcs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tZ2hfTVonLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfbWdvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21nb19DTScsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ta19NSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19tbF9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tbl9DeXJsJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX21uX0N5cmxfTU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfbXJfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbXNfTGF0bicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19tc19MYXRuX0JOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX21zX0xhdG5fTVknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbXNfTGF0bl9TRycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tdF9NVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19tdWEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbXVhX0NNJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX215X01NJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X25hcScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uYXFfTkEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfbmJfTk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmJfU0on
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfbmRfWlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmVfSU4nLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfbmVfTlAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
bmxfQVcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmxfQkUnLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfbmxfQlEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmxfQ1cn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmxfTkwnLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfbmxfU1InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmxfU1gnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbm1nJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X25tZ19DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubicsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19ubl9OTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubmgnLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbm5oX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX251cycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19udXNfU0QnLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfbnluJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX255
bl9VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19vbScsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19vbV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19vbV9LRScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19vcl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc19vcycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19vc19HRScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19vc19SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19wYV9B
cmFiJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhX0FyYWJfUEsnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfcGFfR3VydScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19w
YV9HdXJ1X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BsX1BMJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3BzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BzX0FG
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X0FPJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX3B0X0NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X0dXJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X01PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3B0X01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X1NUJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3B0X1RMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3F1
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3F1X0JPJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX3F1X0VDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3F1X1BFJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X3JtX0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JuJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3JuX0JJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvX01EJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvX1JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX3JvZicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19yb2ZfVFonLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfcnVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
cnVfS0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcnVfS1onLCAnZ29vZy5pMThuLkRh
dGVUaW1lUGF0dGVybnNfcnVfTUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcnVfUlUn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcnVfVUEnLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfcncnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcndfUlcnLCAnZ29vZy5p
MThuLkRhdGVUaW1lUGF0dGVybnNfcndrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3J3
a19UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zYWgnLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfc2FoX1JVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NhcScsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zYXFfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfc2JwJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NicF9UWicsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc19zZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZV9G
SScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZV9OTycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19zZV9TRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZWgnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2VoX01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3NlcycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZXNfTUwnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfc2cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2dfQ0Yn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2hpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX3NoaV9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NoaV9MYXRuX01B
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NoaV9UZm5nJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3NoaV9UZm5nX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Np
X0xLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NrX1NLJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3NsX1NJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NtbicsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zbW5fRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnNfc24nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc25fWlcnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfc28nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc29fREon
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc29fRVQnLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfc29fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc29fU08nLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3FfQUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVy
bnNfc3FfTUsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3FfWEsnLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfc3JfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19z
cl9DeXJsX0JBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0N5cmxfTUUnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfQ3lybF9SUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQ
YXR0ZXJuc19zcl9DeXJsX1hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0xhdG4n
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0
ZVRpbWVQYXR0ZXJuc19zcl9MYXRuX01FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Ny
X0xhdG5fUlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfTGF0bl9YSycsICdnb29n
LmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdl9BWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c19zdl9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdl9TRScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc19zd19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19U
WicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19VRycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc19zd2MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3djX0NEJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RhX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRl
cm5zX3RhX0xLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RhX01ZJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3RhX1NHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Rl
X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RlbycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc190ZW9fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGVvX1VHJywg
J2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RoX1RIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX3RpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RpX0VSJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3RpX0VUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Rv
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RvX1RPJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVBhdHRlcm5zX3RyX0NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3RyX1RSJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3R3cScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c190d3FfTkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdHptJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX3R6bV9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3R6
bV9MYXRuX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3VnJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX3VnX0FyYWInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWdf
QXJhYl9DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191a19VQScsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc191cl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191cl9Q
SycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191el9BcmFiJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVBhdHRlcm5zX3V6X0FyYWJfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXpf
Q3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191el9DeXJsX1VaJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVBhdHRlcm5zX3V6X0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
dXpfTGF0bl9VWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc192YWknLCAnZ29vZy5pMThu
LkRhdGVUaW1lUGF0dGVybnNfdmFpX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
dmFpX0xhdG5fTFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdmFpX1ZhaWknLCAnZ29v
Zy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdmFpX1ZhaWlfTFInLCAnZ29vZy5pMThuLkRhdGVUaW1l
UGF0dGVybnNfdmlfVk4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdnVuJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVBhdHRlcm5zX3Z1bl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJu
c193YWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfd2FlX0NIJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVBhdHRlcm5zX3hvZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc194b2dfVUcn
LCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfeWF2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zX3lhdl9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195aScsICdnb29nLmkx
OG4uRGF0ZVRpbWVQYXR0ZXJuc195aV8wMDEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNf
eW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfeW9fQkonLCAnZ29vZy5pMThuLkRhdGVU
aW1lUGF0dGVybnNfeW9fTkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemdoJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3pnaF9NQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0
ZXJuc196aF9IYW5zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnNfQ04nLCAn
Z29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFuc19ISycsICdnb29nLmkxOG4uRGF0ZVRp
bWVQYXR0ZXJuc196aF9IYW5zX01PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hh
bnNfU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFudCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVQYXR0ZXJuc196aF9IYW50X0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5z
X3poX0hhbnRfTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFudF9UVycsICdn
b29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc196dV9aQSddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBh
dHRlcm5zJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXN5bWJv
bHMuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19hZicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FtJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfYXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19heicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm4n
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19icicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2NhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2hyJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfY3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jeScsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2RhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGUnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kZV9BVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2RlX0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZWwnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0FVJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19lbl9JRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0lOJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZW5fSVNPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fU0cn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2VuX1pBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXMnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19lc180MTknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19F
UycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2V0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZXUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2ZpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmlsJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfZnInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9D
QScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZ2wnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nc3cnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19ndScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hhdycsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGkn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ocicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2h1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHknLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19pZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2luJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfaXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pdCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2l3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
amEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYScsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2trJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa20nLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19rbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tvJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfa3knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sbics
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfbHQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sdicsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX21rJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWwnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19tbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21yJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19t
dCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX215JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfbmInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uZScsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX25sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm8nLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19ub19OTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29y
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19wbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0JywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfcHRfQlInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9QVCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
cnUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zaScsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX3NrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2wnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19zcScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfc3YnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zdycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfdGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190aCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX3RsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdHInLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc191aycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VyJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192
aScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfemhfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9ISycsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX3poX1RXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfenUn
XSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXN5bWJvbHNl
eHQuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNFeHQnLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19hYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FhX0RKJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfYWFfRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19h
YV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FmX05BJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfYWZfWkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hZ3EnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19hZ3FfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19haycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FrX0dIJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfYW1fRVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl8wMDEnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9BRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2FyX0JIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfREonLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19hcl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0VH
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfRUgnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19hcl9FUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0lMJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfSVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19h
cl9KTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0tNJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfYXJfS1cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9MQicsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0xZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfYXJfTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9NUicsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX2FyX09NJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfUFMn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9RQScsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2FyX1NBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfU0QnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19hcl9TTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Fy
X1NTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfU1knLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19hcl9URCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX1ROJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19hcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FzX0lOJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXNhX1RaJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXN0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
YXN0X0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXpfQ3lybCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX2F6X0N5cmxfQVonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19h
el9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXpfTGF0bl9BWicsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2JhcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Jhc19D
TScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfYmVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19iZW0nLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19iZW1fWk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19iZXon
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19iZXpfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19iZ19CRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JtJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfYm1fTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Jt
X0xhdG5fTUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ibl9CRCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX2JuX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm8nLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ib19DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2JvX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnJfRlInLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19icngnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19icnhfSU4n
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19icycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ic19DeXJsX0JBJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnNfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jYV9BRCcsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NhX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
Y2FfRVNfVkFMRU5DSUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jYV9GUicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NhX0lUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
Y2dnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2dnX1VHJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfY2hyX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2tiJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2tiX0FyYWInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19ja2JfQXJhYl9JUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NrYl9BcmFiX0lS
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2tiX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfY2tiX0lSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2tiX0xhdG4nLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ja2JfTGF0bl9JUScsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2NzX0NaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY3lfR0InLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19kYV9ESycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2RhX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGF2JywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfZGF2X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGVfQkUnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kZV9ERScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2RlX0xJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGVfTFUnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19kamUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kamVfTkUn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19kc2JfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kdWEnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19kdWFfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19keW8n
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19keW9fU04nLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19keicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R6X0JUJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZWJ1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZWJ1X0tF
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19lZV9HSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VlX1RHJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZWxfQ1knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbF9H
UicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuXzAwMScsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2VuXzE1MCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0FHJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQUknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19lbl9BUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0JCJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZW5fQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9CTScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0JTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZW5fQlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9CWicsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0NBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5f
Q0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9DSycsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2VuX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQ1gnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9ERycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2VuX0RNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fRVInLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19lbl9GSicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0ZLJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fRk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19lbl9HRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dHJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZW5fR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9H
SScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dNJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfZW5fR1UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9HWScsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
ZW5fSU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9JTycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2VuX0pFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSk0nLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2VuX0tJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fS04nLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19lbl9LWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0xD
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTFInLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19lbl9MUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01HJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTUgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19l
bl9NTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01QJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfZW5fTVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9NVCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01VJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfZW5fTVcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9NWScsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX2VuX05BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTkYn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2VuX05SJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTlUnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19lbl9OWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Vu
X1BHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fUEgnLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19lbl9QSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1BOJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fUFInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19lbl9QVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1JXJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZW5fU0InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TQycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZW5fU0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TTCcsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1NTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5f
U1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TWicsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2VuX1RDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVEsnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9UTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2VuX1RUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVFYnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19lbl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VHJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19lbl9WQycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1ZHJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZW5fVkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9W
VScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1dTJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfZW5fWk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9aVycsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW9f
MDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfQVInLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19lc19CTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0NMJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfQ08nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19lc19DUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0NVJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZXNfRE8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19FQScs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0VDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZXNfR1EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19HVCcsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0hOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNf
SUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19NWCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2VzX05JJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfUEEnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19QRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2VzX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfUFInLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19lc19QWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX1NWJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19lc19VWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX1ZFJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZXRfRUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ldV9F
UycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2V3bycsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2V3b19DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZhX0FGJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfZmFfSVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19m
ZicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfZmZfR04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9NUicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX1NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
ZmlfRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19maWxfUEgnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19mbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZvX0ZPJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19mcl9CRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0JJJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZnJfQkonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9CTCcs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZnJfQ0YnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DRycsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJf
Q0knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DTScsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfRFonLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X2ZyX0dBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfR0YnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19mcl9HTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0dQJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfR1EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19mcl9IVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0tNJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfZnJfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9N
QScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX01DJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfZnJfTUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9NRycsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
ZnJfTVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9NUicsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2ZyX01VJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfTkMnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX2ZyX1BGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfUE0nLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19mcl9SRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1JX
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfU0MnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19mcl9TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1NZJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfVEQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19m
cl9URycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1ROJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfZnJfVlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9XRicsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1lUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfZnVyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnVyX0lUJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfZnknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19meV9OTCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dhX0lFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfZ2QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nZF9HQicsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2dsX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ3N3X0NIJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ3N3X0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfZ3N3X0xJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ3VfSU4nLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19ndXonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ndXpf
S0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ndicsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2d2X0lNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGEnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19oYV9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGFf
TGF0bl9HSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hhX0xhdG5fTkUnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19oYV9MYXRuX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfaGF3X1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGVfSUwnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19oaV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hyX0JB
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHJfSFInLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19oc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19oc2JfREUnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19odV9IVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2h5
X0FNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaWEnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19pYV9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2lkX0lEJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfaWcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pZ19O
RycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2lpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfaWlfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pc19JUycsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX2l0X0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaXRf
SVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pdF9TTScsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2phX0pQJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfamdvJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfamdvX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
am1jJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfam1jX1RaJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfa2FfR0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYWInLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYWJfRFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19rYW0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYW1fS0UnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19rZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rZGVfVFonLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rZWEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19rZWFfQ1YnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19raHEnLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19raHFfTUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19raScsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tpX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfa2tfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2trX0N5cmxfS1onLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19ra2onLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19r
a2pfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX2tsX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa2xuJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfa2xuX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
a21fS0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbl9JTicsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2tvX0tQJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa29fS1InLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rb2snLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19rb2tfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rcycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX2tzX0FyYWInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc19BcmFi
X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3NiJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfa3NiX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3NmJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfa3NmX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
a3NoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3NoX0RFJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfa3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rd19HQicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2t5X0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19reV9DeXJsX0tHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGFnJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfbGFnX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGIn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sYl9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2xnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGdfVUcnLCAnZ29vZy5pMThu
LkRhdGVUaW1lU3ltYm9sc19sa3QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sa3RfVVMn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sbl9BTycsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX2xuX0NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbG5fQ0YnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19sbl9DRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xv
X0xBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHRfTFQnLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19sdScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2x1X0NEJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfbHVvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHVv
X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHV5JywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfbHV5X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHZfTFYnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19tYXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19t
YXNfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tYXNfVFonLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19tZXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZXJfS0UnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZmUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19tZmVfTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX21nX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdoJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdoX01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfbWdvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdvX0NNJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfbWtfTUsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tbF9JTics
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21uX0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19tbl9DeXJsX01OJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXJfSU4nLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tc19MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfbXNfTGF0bl9CTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21zX0xhdG5fTVkn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tc19MYXRuX1NHJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfbXRfTVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tdWEnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19tdWFfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19teV9NTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25hcScsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX25hcV9OQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25iX05PJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmJfU0onLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19uZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25kX1pXJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfbmVfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uZV9OUCcs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25sX0FXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfbmxfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubF9CUScsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX25sX0NXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmxf
TkwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubF9TUicsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX25sX1NYJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm1nJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfbm1nX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
bm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubl9OTycsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX25uaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25uaF9DTScsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25yJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbnJf
WkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uc28nLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19uc29fWkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19udXMnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19udXNfU0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19u
eW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ueW5fVUcnLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc19vbScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29tX0VUJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfb21fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19v
cl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29zJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfb3NfR0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19vc19SVScsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BhX0FyYWInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19wYV9BcmFiX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGFfR3VydScsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BhX0d1cnVfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc19wbF9QTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BzJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfcHNfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9BTycs
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0X0NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfcHRfR1cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9NTycsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX3B0X01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHRf
U1QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9UTCcsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX3F1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcXVfQk8nLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc19xdV9FQycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3F1
X1BFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcm0nLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc19ybV9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JuJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfcm5fQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19yb19N
RCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvX1JPJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfcm9mJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcm9mX1RaJywgJ2dvb2cu
aTE4bi5EYXRlVGltZVN5bWJvbHNfcnVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19y
dV9LRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J1X0taJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfcnVfTUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ydV9SVScsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J1X1VBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfcncnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX3J3aycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J3a19UWicsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X3NhaF9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NhcScsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX3NhcV9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NicCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NicF9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX3NlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2VfRkknLCAnZ29vZy5pMThuLkRh
dGVUaW1lU3ltYm9sc19zZV9OTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NlX1NFJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2VoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfc2VoX01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2VzJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfc2VzX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2cnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZ19DRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1i
b2xzX3NoaScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NoaV9MYXRuJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfc2hpX0xhdG5fTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19zaGlfVGZuZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NoaV9UZm5nX01BJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2lfTEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19za19TSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NsX1NJJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfc21uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc21uX0ZJJywg
J2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc24nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19zbl9aVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NvJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfc29fREonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zb19FVCcsICdn
b29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NvX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJv
bHNfc29fU08nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcV9BTCcsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX3NxX01LJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3FfWEsn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9DeXJsJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfc3JfQ3lybF9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyX0N5cmxf
TUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9DeXJsX1JTJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfc3JfQ3lybF9YSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Ny
X0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9MYXRuX0JBJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfc3JfTGF0bl9NRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9MYXRuX1hLJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19z
c19TWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NzX1pBJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfc3N5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3N5X0VSJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3ZfQVgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9s
c19zdl9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N2X1NFJywgJ2dvb2cuaTE4bi5E
YXRlVGltZVN5bWJvbHNfc3dfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zd19UWics
ICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfc3djJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3djX0NEJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfdGFfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190YV9M
SycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RhX01ZJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfdGFfU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190ZV9JTicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Rl
b19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Rlb19VRycsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX3RoX1RIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGknLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc190aV9FUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X3RpX0VUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdG4nLCAnZ29vZy5pMThuLkRhdGVU
aW1lU3ltYm9sc190bl9CVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RuX1pBJywgJ2dv
b2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdG8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190
b19UTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RyX0NZJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfdHJfVFInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190cycsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RzX1pBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
dHdxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdHdxX05FJywgJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHNfdHptJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdHptX0xhdG4nLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190em1fTGF0bl9NQScsICdnb29nLmkxOG4uRGF0ZVRp
bWVTeW1ib2xzX3VnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdWdfQXJhYicsICdnb29n
LmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VnX0FyYWJfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3lt
Ym9sc191a19VQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VyX0lOJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfdXJfUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191el9B
cmFiJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXpfQXJhYl9BRicsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX3V6X0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191el9D
eXJsX1VaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXpfTGF0bicsICdnb29nLmkxOG4u
RGF0ZVRpbWVTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192
YWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192YWlfTGF0bicsICdnb29nLmkxOG4uRGF0
ZVRpbWVTeW1ib2xzX3ZhaV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdmFp
X1ZhaWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192YWlfVmFpaV9MUicsICdnb29nLmkx
OG4uRGF0ZVRpbWVTeW1ib2xzX3ZlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdmVfWkEn
LCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192aV9WTicsICdnb29nLmkxOG4uRGF0ZVRpbWVT
eW1ib2xzX3ZvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdm9fMDAxJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfdnVuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdnVuX1Ra
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfd2FlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfd2FlX0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeG9nJywgJ2dvb2cuaTE4
bi5EYXRlVGltZVN5bWJvbHNfeG9nX1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeWF2
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeWF2X0NNJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfeWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195aV8wMDEnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc195bycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3lvX0JK
JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeW9fTkcnLCAnZ29vZy5pMThuLkRhdGVUaW1l
U3ltYm9sc196Z2gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196Z2hfTUEnLCAnZ29vZy5p
MThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW5zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNf
emhfSGFuc19DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnNfSEsnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW5zX01PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5
bWJvbHNfemhfSGFuc19TRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnQnLCAn
Z29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW50X0hLJywgJ2dvb2cuaTE4bi5EYXRlVGlt
ZVN5bWJvbHNfemhfSGFudF9NTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnRf
VFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196dV9aQSddLCBbJ2dvb2cuaTE4bi5EYXRl
VGltZVN5bWJvbHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2dyYXBoZW1l
YnJlYWsuanMnLCBbJ2dvb2cuaTE4bi5HcmFwaGVtZUJyZWFrJ10sIFsnZ29vZy5zdHJ1Y3RzLklu
dmVyc2lvbk1hcCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZ3JhcGhlbWVi
cmVha190ZXN0LmpzJywgWydnb29nLmkxOG4uR3JhcGhlbWVCcmVha1Rlc3QnXSwgWydnb29nLmkx
OG4uR3JhcGhlbWVCcmVhaycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnaTE4bi9tZXNzYWdlZm9ybWF0LmpzJywgWydnb29nLmkxOG4uTWVzc2Fn
ZUZvcm1hdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0JywgJ2dv
b2cuaTE4bi5vcmRpbmFsUnVsZXMnLCAnZ29vZy5pMThuLnBsdXJhbFJ1bGVzJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9tZXNzYWdlZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cu
aTE4bi5NZXNzYWdlRm9ybWF0VGVzdCddLCBbJ2dvb2cuaTE4bi5NZXNzYWdlRm9ybWF0JywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cuaTE4bi5wbHVyYWxSdWxlcycs
ICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9taW1lLmpzJywgWydnb29nLmkxOG4u
bWltZScsICdnb29nLmkxOG4ubWltZS5lbmNvZGUnXSwgWydnb29nLmFycmF5J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9taW1lX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5taW1l
LmVuY29kZVRlc3QnXSwgWydnb29nLmkxOG4ubWltZS5lbmNvZGUnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vbnVtYmVyZm9ybWF0Lmpz
JywgWydnb29nLmkxOG4uTnVtYmVyRm9ybWF0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQuQ3Vy
cmVuY3lTdHlsZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0LkZvcm1hdCddLCBbJ2dvb2cuYXNz
ZXJ0cycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLmN1cnJlbmN5JywgJ2dvb2cubWF0aCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vbnVtYmVyZm9ybWF0X3Rlc3QuanMn
LCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRUZXN0J10sIFsnZ29vZy5pMThuLkNvbXBhY3ROdW1i
ZXJGb3JtYXRTeW1ib2xzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19k
ZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5pMThu
LkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZGUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfcGwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm8nLCAnZ29vZy50ZXN0aW5n
LkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9k
dWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnaTE4bi9udW1iZXJmb3JtYXRzeW1ib2xzLmpzJywgWydnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9scycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hZics
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hZl9aQScsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19hbScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hbV9FVCcs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19hcl8wMDEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXonLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXpfTGF0bl9BWicsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19iZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZ19C
RycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibicsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19ibl9CRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19icics
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19icl9GUicsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19jYScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jYV9BRCcs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jYV9FUycsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19jYV9FU19WQUxFTkNJQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19jYV9GUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jYV9JVCcsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jaHInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfY2hyX1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NzJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NzX0NaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2N5JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2N5X0dCJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX2RhX0RLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RhX0dMJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX2RlX0FUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0JFJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0NIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2RlX0RFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xVJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2VsX0dSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuXzAwMScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19lbl9BUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BVScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ERycsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19lbl9GTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HQics
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HVScsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19lbl9JRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9J
TicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9JTycsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19lbl9NSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19l
bl9NUCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QUicsICdnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19lbl9TRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UQycsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9VTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19lbl9VUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9WRycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9WSScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19lbl9aQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl9aVycsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lcycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19lc180MTknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZXNfRUEnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZXNfRVMnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZXNfSUMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZXQnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZXRfRUUnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZXUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZXVfRVMnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZmFfSVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmknLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmlfRkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZmlsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZpbF9QSCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19mcl9CTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DQScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9GUicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19mcl9HRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HUCcs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NQycsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19mcl9NRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9N
UScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19mcl9SRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19m
cl9ZVCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19nYScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19nYV9JRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19n
bCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19nbF9FUycsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19nc3cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZ3N3
X0NIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19MSScsICdnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9sc19ndScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19n
dV9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19oYXcnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfaGF3X1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X2hlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX2hpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hp
X0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2hyX0hSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2h1
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2h1X0hVJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2h5JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2h5X0FN
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX2lkX0lEJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2luJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2lzX0lTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0JywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0X0lUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2l0X1NNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l3JywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2phJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2phX0pQJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2thJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2thX0dFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2trJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2trX0N5cmxfS1onLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa20nLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfa21fS0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa24nLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa25fSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfa28nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa29fS1InLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfa3lfQ3lybF9LRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sbicsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sbl9DRCcsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19sbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sb19MQScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sdCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19sdF9MVCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sdicsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sdl9MVicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19taycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ta19NSycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tbCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19tbF9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tbicsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tbl9DeXJsX01OJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX21yJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21yX0lOJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX21zX0xhdG5fTVknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXQnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXRfTVQnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfbXknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXlfTU0nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmInLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfbmJfTk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmJfU0onLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfbmVfTlAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmwnLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmxfTkwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm9fTk8nLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb3InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfb3JfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGEnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydV9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19wbCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wbF9QTCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wdCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19wdF9CUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wdF9QVCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ybycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19yb19STycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydScsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19zaScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaV9MSycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19za19TSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbCcsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbF9TSScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19zcScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcV9BTCcsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19zcl9DeXJsX1JTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2JywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2X1NFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX3N3JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1RaJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX3RhX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RlJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RlX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX3RoJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RoX1RIJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X3RyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RyX1RSJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX3VrJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3Vr
X1VBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3VyJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX3VyX1BLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfdmknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
dmlfVk4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemgnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfemhfQ04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
emhfSEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFuc19DTicsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9UVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc196dScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196dV9aQSddLCBbXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL251bWJlcmZvcm1hdHN5bWJvbHNleHQu
anMnLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzRXh0JywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2FhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FhX0RK
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FhX0VSJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2FhX0VUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Fm
X05BJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FncScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19hZ3FfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
YWsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYWtfR0gnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfYXJfQUUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
YXJfQkgnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfREonLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfYXJfRFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfYXJfRUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfRUgnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfRVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfYXJfSUwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfSVEnLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfSk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfYXJfS00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfS1cnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfTEInLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfYXJfTFknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfTUEn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfTVInLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfYXJfT00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJf
UFMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfUUEnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfYXJfU0EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
YXJfU0QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU08nLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU1MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfYXJfU1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfVEQnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfVE4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXMnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXNfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FzYV9UWicsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hc3QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfYXN0X0VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2F6X0N5cmwnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXpfQ3lybF9BWicsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19hel9MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X2JhcycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iYXNfQ00nLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfYmUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
YmVfQlknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYmVtJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX2JlbV9aTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19iZXonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYmV6X1RaJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JtJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X2JtX0xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm1fTGF0bl9NTCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibl9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19ibycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ib19DTicsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ib19JTicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19icngnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnJ4X0lOJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnNfQ3ly
bF9CQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ic19MYXRuJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfY2dnJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NnZ19VRycsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ja2InLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfY2tiX0FyYWInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0Fy
YWJfSVEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0FyYWJfSVInLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lRJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2NrYl9JUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ja2JfTGF0
bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ja2JfTGF0bl9JUScsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kYXYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZGF2X0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xJJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RqZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19kamVfTkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHNiJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RzYl9ERScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19kdWEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHVhX0NNJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2R5bycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19keW9fU04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHonLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHpfQlQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZWJ1JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VidV9LRScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19lZV9HSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lZV9URycsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbF9DWScsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUcn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUknLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5f
QkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQk0nLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZW5fQlMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fQlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlonLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZW5fQ0MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0snLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZW5fQ1gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRE0nLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZW5fRkonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRksnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0QnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZW5fR0cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0gn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0knLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZW5fR00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5f
R1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSEsnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZW5fSU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fSkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSk0nLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZW5fS0knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS04nLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZW5fTEMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTFInLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTFMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZW5fTUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTU8nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVMnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZW5fTVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVUn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVcnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZW5fTVknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5f
TkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkYnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZW5fTkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fTlInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlUnLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZW5fUEcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEgnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZW5fUE4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUlcnLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0InLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0QnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0gnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZW5fU0wnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1Mn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1gnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZW5fU1onLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5f
VEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVE8nLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZW5fVFQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZW5fVFYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFonLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZW5fVkMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVlUnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fV1MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZW5fWk0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW8nLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2VzX0FSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JPJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NMJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2VzX0NPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NSJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NVJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX2VzX0RPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0VD
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2VzX0dUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Vz
X0hOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX01YJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX2VzX05JJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X2VzX1BBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX2VzX1BSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1NWJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX2VzX1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1VZJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1ZFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2V3bycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ld29fQ00nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmFfQUYnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZmYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfQ00nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfR04nLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZmZfTVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfU04n
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZm8nLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZm9fRk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkUn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkYnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZnJfQkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJf
QkonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0QnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZnJfQ0cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0gnLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZnJfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfREonLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfRFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZnJfR0EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfR04nLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfR1EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZnJfSFQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfS00nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfTFUnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfZnJfTUEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUcn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUwnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfZnJfTVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJf
TVUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfTkMnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfZnJfTkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
ZnJfUEYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfUlcnLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfZnJfU0MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfZnJfU04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfU1knLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfVEQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfZnJfVEcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfVE4nLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnJfVlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfZnJfV0YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnVyJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Z1cl9JVCcsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19meScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19meV9OTCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19nZCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19nZF9HQicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19nc3dfRlInLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZ3V6JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2d1el9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ndicsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ndl9JTScsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19oYScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19oYV9MYXRuJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hhX0xhdG5fR0gnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfaGFfTGF0bl9ORScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19oYV9MYXRuX05HJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyX0JBJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hzYicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19oc2JfREUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWEnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWFfRlInLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfaWcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWdfTkcnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWknLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfaWlfQ04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaXRfQ0gnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfamdvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX2pnb19DTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19qbWMnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfam1jX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX2thYicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rYWJfRFon
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2FtJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX2thbV9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rZGUn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2RlX1RaJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2tlYScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rZWFf
Q1YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2hxJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2tocV9NTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19r
aScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19raV9LRScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19ra19DeXJsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xz
X2traicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ra2pfQ00nLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfa2wnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
a2xfR0wnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2xuJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX2tsbl9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19rb19LUCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rb2snLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfa29rX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX2tzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzX0FyYWInLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NfQXJhYl9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19rc2InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NiX1RaJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzZicsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19rc2ZfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NoJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzaF9ERScsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19rdycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rd19HQics
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19reV9DeXJsJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX2xhZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sYWdf
VFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbGInLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfbGJfTFUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbGcn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbGdfVUcnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfbGt0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xrdF9V
UycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sbl9BTycsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19sbl9DRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19s
bl9DRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sdScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19sdV9DRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19s
dW8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHVvX0tFJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX2x1eScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19s
dXlfS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWFzJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19tYXNfVFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWVyJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21lcl9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19tZmUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWZlX01VJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21nJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX21nX01HJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21naCcsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfbWdvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21nb19DTScsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tbl9DeXJsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX21zX0xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXNfTGF0
bl9CTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tc19MYXRuX1NHJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX211YScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19tdWFfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmFxJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25hcV9OQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19uZCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uZF9aVycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uZV9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19ubF9BVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CRScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CUScsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19ubF9DVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9TUics
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9TWCcsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19ubWcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm1nX0NN
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25uJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX25uX05PJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25uaCcs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubmhfQ00nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfbnInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbnJfWkEn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbnNvJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX25zb19aQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19udXMn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbnVzX1NEJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX255bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ueW5f
VUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb20nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfb21fRVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb21f
S0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb3MnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfb3NfR0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb3Nf
UlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYicsICdnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9sc19wYV9BcmFiX1BLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX3BhX0d1cnUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHMnLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHNfQUYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfcHRfQU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfQ1YnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfR1cnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfcHRfTU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfTVon
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfU1QnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfcHRfVEwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXUn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXVfQk8nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfcXVfRUMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXVf
UEUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm0nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfcm1fQ0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm4n
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm5fQkknLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfcm9fTUQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm9m
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3JvZl9UWicsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc19ydV9CWScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19y
dV9LRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9LWicsICdnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9NRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19ydV9VQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydycsICdnb29nLmkxOG4u
TnVtYmVyRm9ybWF0U3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19yd2snLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcndrX1RaJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c19zYWhfUlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2FxJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NhcV9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19zYnAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2JwX1RaJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX3NlX0ZJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NlX05PJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NlX1NFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX3NlaCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zZWhfTVonLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX3Nlc19NTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zZycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zZ19DRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19zaGknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2hpX0xhdG4nLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2hpX0xhdG5fTUEnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfc2hpX1RmbmcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJv
bHNfc2hpX1RmbmdfTUEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc21uJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3Ntbl9GSScsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19zbicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbl9aVycsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc19zb19ESicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zb19FVCcsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zb19LRScsICdnb29nLmkxOG4uTnVtYmVyRm9y
bWF0U3ltYm9sc19zb19TTycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcV9NSycs
ICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcV9YSycsICdnb29nLmkxOG4uTnVtYmVy
Rm9ybWF0U3ltYm9sc19zcl9DeXJsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3Ny
X0N5cmxfQkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3JfQ3lybF9NRScsICdn
b29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcl9DeXJsX1hLJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
c3JfTGF0bl9CQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcl9MYXRuX01FJywg
J2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfc3JfTGF0bl9YSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19zcycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zc19TWicsICdnb29nLmkx
OG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zc19aQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3lt
Ym9sc19zc3knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3N5X0VSJywgJ2dvb2cu
aTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2X0FYJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRT
eW1ib2xzX3N2X0ZJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0tFJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX3N3YycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zd2NfQ0QnLCAn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGFfTEsnLCAnZ29vZy5pMThuLk51bWJlckZv
cm1hdFN5bWJvbHNfdGFfTVknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGFfU0cn
LCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGVvJywgJ2dvb2cuaTE4bi5OdW1iZXJG
b3JtYXRTeW1ib2xzX3Rlb19LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190ZW9f
VUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGknLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfdGlfRVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGlf
RVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdG4nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfdG5fQlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdG5f
WkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdG8nLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfdG9fVE8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHJf
Q1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHMnLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfdHNfWkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHdx
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3R3cV9ORScsICdnb29nLmkxOG4uTnVt
YmVyRm9ybWF0U3ltYm9sc190em0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHpt
X0xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHptX0xhdG5fTUEnLCAnZ29v
Zy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdWcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5
bWJvbHNfdWdfQXJhYicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191Z19BcmFiX0NO
JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3VyX0lOJywgJ2dvb2cuaTE4bi5OdW1i
ZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
dXpfQXJhYl9BRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191el9DeXJsJywgJ2dv
b2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmxfVVonLCAnZ29vZy5pMThuLk51bWJl
ckZvcm1hdFN5bWJvbHNfdXpfTGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc192
YWknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfdmFpX0xhdG5fTFInLCAnZ29vZy5pMThuLk51bWJlckZvcm1h
dFN5bWJvbHNfdmFpX1ZhaWknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdmFpX1Zh
aWlfTFInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdmUnLCAnZ29vZy5pMThuLk51
bWJlckZvcm1hdFN5bWJvbHNfdmVfWkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNf
dm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdm9fMDAxJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX3Z1bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc192
dW5fVFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfd2FlJywgJ2dvb2cuaTE4bi5O
dW1iZXJGb3JtYXRTeW1ib2xzX3dhZV9DSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c194b2cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfeG9nX1VHJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lhdicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9s
c195YXZfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfeWknLCAnZ29vZy5pMThu
Lk51bWJlckZvcm1hdFN5bWJvbHNfeWlfMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX3lvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lvX0JKJywgJ2dvb2cuaTE4
bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lvX05HJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1i
b2xzX3pnaCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196Z2hfTUEnLCAnZ29vZy5p
MThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFucycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0
U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3poX0hh
bnNfTU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFuc19TRycsICdnb29n
LmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3Jt
YXRTeW1ib2xzX3poX0hhbnRfSEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhf
SGFudF9NTycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X1RXJ10sIFsn
Z29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdpMThuL29yZGluYWxydWxlcy5qcycsIFsnZ29vZy5pMThuLm9yZGluYWxSdWxlcyddLCBb
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3BsdXJhbHJ1bGVzLmpzJywgWydn
b29nLmkxOG4ucGx1cmFsUnVsZXMnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
aTE4bi9wbHVyYWxydWxlc190ZXN0LmpzJywgWydnb29nLmkxOG4ucGx1cmFsUnVsZXNUZXN0J10s
IFsnZ29vZy5pMThuLnBsdXJhbFJ1bGVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3RpbWV6b25lLmpzJywgWydnb29nLmkxOG4uVGlt
ZVpvbmUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGF0ZS5EYXRlTGlrZScsICdnb29nLnN0cmlu
ZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdGltZXpvbmVfdGVzdC5qcycs
IFsnZ29vZy5pMThuLlRpbWVab25lVGVzdCddLCBbJ2dvb2cuaTE4bi5UaW1lWm9uZScsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi91Y2hh
ci5qcycsIFsnZ29vZy5pMThuLnVDaGFyJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2kxOG4vdWNoYXIvbG9jYWxuYW1lZmV0Y2hlci5qcycsIFsnZ29vZy5pMThuLnVDaGFyLkxv
Y2FsTmFtZUZldGNoZXInXSwgWydnb29nLmkxOG4udUNoYXInLCAnZ29vZy5pMThuLnVDaGFyLk5h
bWVGZXRjaGVyJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4
bi91Y2hhci9sb2NhbG5hbWVmZXRjaGVyX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi51Q2hhci5Mb2Nh
bE5hbWVGZXRjaGVyVGVzdCddLCBbJ2dvb2cuaTE4bi51Q2hhci5Mb2NhbE5hbWVGZXRjaGVyJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi91Y2hhci9uYW1lZmV0Y2hlci5qcycsIFsn
Z29vZy5pMThuLnVDaGFyLk5hbWVGZXRjaGVyJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2kxOG4vdWNoYXIvcmVtb3RlbmFtZWZldGNoZXIuanMnLCBbJ2dvb2cuaTE4bi51Q2hh
ci5SZW1vdGVOYW1lRmV0Y2hlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlVyaScsICdn
b29nLmkxOG4udUNoYXInLCAnZ29vZy5pMThuLnVDaGFyLk5hbWVGZXRjaGVyJywgJ2dvb2cubG9n
JywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cuc3RydWN0cy5NYXAnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdpMThuL3VjaGFyL3JlbW90ZW5hbWVmZXRjaGVyX3Rlc3QuanMnLCBbJ2dv
b2cuaTE4bi51Q2hhci5SZW1vdGVOYW1lRmV0Y2hlclRlc3QnXSwgWydnb29nLmkxOG4udUNoYXIu
UmVtb3RlTmFtZUZldGNoZXInLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCcsICdnb29nLnRlc3RpbmcubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlv
biddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXJfdGVzdC5qcycsIFsn
Z29vZy5pMThuLnVDaGFyVGVzdCddLCBbJ2dvb2cuaTE4bi51Q2hhcicsICdnb29nLnRlc3Rpbmcu
anN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnaXRlci9pdGVyLmpzJywgWydn
b29nLml0ZXInLCAnZ29vZy5pdGVyLkl0ZXJhYmxlJywgJ2dvb2cuaXRlci5JdGVyYXRvcicsICdn
b29nLml0ZXIuU3RvcEl0ZXJhdGlvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywg
J2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubWF0aCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2l0ZXIvaXRlcl90ZXN0LmpzJywgWydnb29nLml0ZXJUZXN0J10sIFsnZ29vZy5pdGVyJywg
J2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9ldmFsanNv
bnByb2Nlc3Nvci5qcycsIFsnZ29vZy5qc29uLkV2YWxKc29uUHJvY2Vzc29yJ10sIFsnZ29vZy5q
c29uJywgJ2dvb2cuanNvbi5Qcm9jZXNzb3InLCAnZ29vZy5qc29uLlNlcmlhbGl6ZXInXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2h5YnJpZC5qcycsIFsnZ29vZy5qc29uLmh5
YnJpZCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmpzb24nXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdqc29uL2h5YnJpZF90ZXN0LmpzJywgWydnb29nLmpzb24uaHlicmlkVGVzdCdd
LCBbJ2dvb2cuanNvbicsICdnb29nLmpzb24uaHlicmlkJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0
eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1
bmN0aW9uJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
anNvbi9oeWJyaWRqc29ucHJvY2Vzc29yLmpzJywgWydnb29nLmpzb24uSHlicmlkSnNvblByb2Nl
c3NvciddLCBbJ2dvb2cuanNvbi5Qcm9jZXNzb3InLCAnZ29vZy5qc29uLmh5YnJpZCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2pzb24vaHlicmlkanNvbnByb2Nlc3Nvcl90ZXN0Lmpz
JywgWydnb29nLmpzb24uSHlicmlkSnNvblByb2Nlc3NvclRlc3QnXSwgWydnb29nLmpzb24uSHli
cmlkSnNvblByb2Nlc3NvcicsICdnb29nLmpzb24uaHlicmlkJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2pzb24uanMnLCBbJ2dvb2cu
anNvbicsICdnb29nLmpzb24uUmVwbGFjZXInLCAnZ29vZy5qc29uLlJldml2ZXInLCAnZ29vZy5q
c29uLlNlcmlhbGl6ZXInXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9q
c29uX3BlcmYuanMnLCBbJ2dvb2cuanNvblBlcmYnXSwgWydnb29nLmRvbScsICdnb29nLmpzb24n
LCAnZ29vZy5tYXRoJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRh
YmxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2pzb25fdGVzdC5qcycsIFsn
Z29vZy5qc29uVGVzdCddLCBbJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuanNvbicsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnanNvbi9uYXRpdmVqc29ucHJvY2Vzc29yLmpzJywgWydnb29nLmpzb24uTmF0aXZlSnNv
blByb2Nlc3NvciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmpzb24uUHJvY2Vzc29yJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9wcm9jZXNzb3IuanMnLCBbJ2dvb2cuanNv
bi5Qcm9jZXNzb3InXSwgWydnb29nLnN0cmluZy5QYXJzZXInLCAnZ29vZy5zdHJpbmcuU3RyaW5n
aWZpZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL3Byb2Nlc3Nvcl90ZXN0
LmpzJywgWydnb29nLmpzb24ucHJvY2Vzc29yVGVzdCddLCBbJ2dvb2cuanNvbi5FdmFsSnNvblBy
b2Nlc3NvcicsICdnb29nLmpzb24uTmF0aXZlSnNvblByb2Nlc3NvcicsICdnb29nLnRlc3Rpbmcu
anN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bGFicy9kb20vcGFnZXZpc2liaWxpdHltb25pdG9yLmpzJywgWydnb29nLmxhYnMuZG9tLlBhZ2VW
aXNpYmlsaXR5RXZlbnQnLCAnZ29vZy5sYWJzLmRvbS5QYWdlVmlzaWJpbGl0eU1vbml0b3InLCAn
Z29vZy5sYWJzLmRvbS5QYWdlVmlzaWJpbGl0eVN0YXRlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5k
b20udmVuZG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZl
bnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm1lbW9pemUn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2RvbS9wYWdldmlzaWJpbGl0eW1v
bml0b3JfdGVzdC5qcycsIFsnZ29vZy5sYWJzLmRvbS5QYWdlVmlzaWJpbGl0eU1vbml0b3JUZXN0
J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sYWJzLmRvbS5QYWdl
VmlzaWJpbGl0eU1vbml0b3InLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29v
Zy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbGFicy9ldmVudHMvbm9uZGlzcG9zYWJsZWV2ZW50dGFyZ2V0Lmpz
JywgWydnb29nLmxhYnMuZXZlbnRzLk5vbkRpc3Bvc2FibGVFdmVudFRhcmdldCddLCBbJ2dvb2cu
YXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRz
Lkxpc3RlbmFibGUnLCAnZ29vZy5ldmVudHMuTGlzdGVuZXJNYXAnLCAnZ29vZy5vYmplY3QnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2V2ZW50cy9ub25kaXNwb3NhYmxlZXZl
bnR0YXJnZXRfdGVzdC5qcycsIFsnZ29vZy5sYWJzLmV2ZW50cy5Ob25EaXNwb3NhYmxlRXZlbnRU
YXJnZXRUZXN0J10sIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5ldmVu
dFRhcmdldFRlc3RlcicsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3Rlci5LZXlUeXBlJywg
J2dvb2cuZXZlbnRzLmV2ZW50VGFyZ2V0VGVzdGVyLlVubGlzdGVuUmV0dXJuVHlwZScsICdnb29n
LmxhYnMuZXZlbnRzLk5vbkRpc3Bvc2FibGVFdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9ldmVudHMvbm9uZGlzcG9z
YWJsZWV2ZW50dGFyZ2V0X3ZpYV9nb29nZXZlbnRzX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5ldmVu
dHMuTm9uRGlzcG9zYWJsZUV2ZW50VGFyZ2V0R29vZ0V2ZW50c1Rlc3QnXSwgWydnb29nLmV2ZW50
cycsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlcicsICdnb29nLmV2ZW50cy5ldmVudFRh
cmdldFRlc3Rlci5LZXlUeXBlJywgJ2dvb2cuZXZlbnRzLmV2ZW50VGFyZ2V0VGVzdGVyLlVubGlz
dGVuUmV0dXJuVHlwZScsICdnb29nLmxhYnMuZXZlbnRzLk5vbkRpc3Bvc2FibGVFdmVudFRhcmdl
dCcsICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2xhYnMvZXZlbnRzL3RvdWNoLmpzJywgWydnb29nLmxhYnMuZXZlbnRz
LnRvdWNoJywgJ2dvb2cubGFicy5ldmVudHMudG91Y2guVG91Y2hEYXRhJ10sIFsnZ29vZy5hcnJh
eScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3RyaW5n
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9ldmVudHMvdG91Y2hfdGVzdC5q
cycsIFsnZ29vZy5sYWJzLmV2ZW50cy50b3VjaFRlc3QnXSwgWydnb29nLmxhYnMuZXZlbnRzLnRv
dWNoJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdsYWJzL2Zvcm1hdC9jc3YuanMnLCBbJ2dvb2cubGFicy5mb3JtYXQuY3N2JywgJ2dvb2cubGFi
cy5mb3JtYXQuY3N2LlBhcnNlRXJyb3InLCAnZ29vZy5sYWJzLmZvcm1hdC5jc3YuVG9rZW4nXSwg
Wydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cu
b2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLm5ld2xpbmVzJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9mb3JtYXQvY3N2X3Rlc3QuanMnLCBbJ2dvb2cubGFi
cy5mb3JtYXQuY3N2VGVzdCddLCBbJ2dvb2cubGFicy5mb3JtYXQuY3N2JywgJ2dvb2cubGFicy5m
b3JtYXQuY3N2LlBhcnNlRXJyb3InLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmFzc2Vy
dHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2xhYnMvaHRtbC9hdHRyaWJ1dGVfcmV3cml0ZXIuanMnLCBbJ2dvb2cubGFicy5odG1sLkF0dHJp
YnV0ZVJld3JpdGVyJywgJ2dvb2cubGFicy5odG1sLkF0dHJpYnV0ZVZhbHVlJywgJ2dvb2cubGFi
cy5odG1sLmF0dHJpYnV0ZVJld3JpdGVyUHJlc3VibWl0V29ya2Fyb3VuZCddLCBbXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2h0bWwvc2FuaXRpemVyLmpzJywgWydnb29nLmxh
YnMuaHRtbC5TYW5pdGl6ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVVcmwn
LCAnZ29vZy5sYWJzLmh0bWwuYXR0cmlidXRlUmV3cml0ZXJQcmVzdWJtaXRXb3JrYXJvdW5kJywg
J2dvb2cubGFicy5odG1sLnNjcnViYmVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9odG1sL3Nhbml0aXplcl90ZXN0Lmpz
JywgWydnb29nLmxhYnMuaHRtbC5TYW5pdGl6ZXJUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVVcmwn
LCAnZ29vZy5sYWJzLmh0bWwuU2FuaXRpemVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5n
LkNvbnN0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdsYWJzL2h0bWwvc2NydWJiZXIuanMnLCBbJ2dvb2cubGFicy5odG1sLnNjcnViYmVyJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmRvbS50YWdzJywgJ2dvb2cubGFicy5odG1sLmF0dHJpYnV0
ZVJld3JpdGVyUHJlc3VibWl0V29ya2Fyb3VuZCcsICdnb29nLnN0cmluZyddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2xhYnMvaHRtbC9zY3J1YmJlcl90ZXN0LmpzJywgWydnb29nLmh0
bWwuU2NydWJiZXJUZXN0J10sIFsnZ29vZy5sYWJzLmh0bWwuc2NydWJiZXInLCAnZ29vZy5vYmpl
Y3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2xhYnMvaTE4bi9saXN0Zm9ybWF0LmpzJywgWydnb29nLmxhYnMuaTE4
bi5HZW5kZXJJbmZvJywgJ2dvb2cubGFicy5pMThuLkdlbmRlckluZm8uR2VuZGVyJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2kx
OG4vbGlzdGZvcm1hdF90ZXN0LmpzJywgWydnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0VGVzdCdd
LCBbJ2dvb2cubGFicy5pMThuLkdlbmRlckluZm8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9scycsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcicsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19tbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c196dScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbGFicy9pMThuL2xpc3RzeW1ib2xzLmpzJywgWydnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9scycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hZicsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hbScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19hcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19heicsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19ibicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19icicsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19jaHInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY3Mn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY3knLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfZGEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
ZGUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfQVQnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfZWwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW4nLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQVUnLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfZW5fR0InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
ZW5fSUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSU4nLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfZW5fVVMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5f
WkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZXMnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfZXNfNDE5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX2VzX0VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V0JywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V1JywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX2ZhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpbCcsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19mcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19m
cl9DQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nYScsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19nc3cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZ3UnLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaGF3JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX2hlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hpJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX2h1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2h5Jywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX2luJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lz
JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2l0JywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX2l3JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X2phJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2thJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX2trJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX2ttJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tuJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX2t5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xuJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX2x0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2x2JywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21rJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX21sJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21uJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21vJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX21yJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21z
JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX210JywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX215JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X25iJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25lJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX25sJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX25vJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25vX05PJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29yJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX3BhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BsJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0JywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3B0X0JSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0
X1BUJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JvJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX3J1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX3NoJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NpJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NrJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX3NsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NxJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX3N2JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3N3JywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RhJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3RlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RoJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RsJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX3RyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Vr
JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3VyJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3V6JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X3ZpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0NOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX3poX0hLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX1RXJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3p1J10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2xhYnMvaTE4bi9saXN0c3ltYm9sc2V4dC5qcycsIFsnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNFeHQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfYWZfTkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYWZfWkEnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYWdxJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX2FncV9DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19haycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ha19HSCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hbV9FVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19hcl8wMDEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJf
QUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfQkgnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfREonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfYXJfRFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfRUcn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfRUgnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfRVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfYXJfSUwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfSVEnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfSk8nLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfYXJfS00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfYXJfS1cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfTEInLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfTFknLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfYXJfTUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
YXJfTVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfT00nLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfUFMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfYXJfUUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJf
U0EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfU0QnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfU08nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfYXJfU1MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfU1kn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfVEQnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfVE4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfYXJfWUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXMnLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXNfSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfYXNhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2Fz
YV9UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hel9DeXJsJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2F6X0N5cmxfQVonLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfYXpfTGF0bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19hel9MYXRuX0FaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2Jhcycs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iYXNfQ00nLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfYmUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfYmVfQlknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYmVtJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JlbV9aTScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19iZXonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYmV6
X1RaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JnX0JHJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JtJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX2JtX0xhdG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYm1fTGF0
bl9NTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ibl9CRCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ibl9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19ibycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ib19DTics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ib19JTicsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19icl9GUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19icngnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYnJ4X0lOJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JzJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX2JzX0N5cmwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
YnNfQ3lybF9CQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ic19MYXRuJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2FfQUQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfY2FfRVMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2FfRlIn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2FfSVQnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfY2dnJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX2NnZ19VRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jaHJfVVMnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY3NfQ1onLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfY3lfR0InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfZGFfREsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGFfR0wnLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGF2JywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX2Rhdl9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19k
ZV9CRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kZV9ERScsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kZV9MSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19kZV9MVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kamUn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGplX05FJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX2RzYicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19kc2JfREUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZHVhJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2R1YV9DTScsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19keW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
ZHlvX1NOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2R6JywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2R6X0JUJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX2VidScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lYnVfS0Un
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZWUnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfZWVfR0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfZWVfVEcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZWxfQ1knLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZWxfR1InLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfZW5fMDAxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X2VuXzE1MCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9BRycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9BSScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19lbl9BUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
bl9CQicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9CRScsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9CTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lbl9CUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9C
VycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9CWicsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9DQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lbl9DQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9DSycs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9DTScsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9DWCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lbl9ERycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9ETScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9FUicsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbl9GSicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lbl9GSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9GTScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9HRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19lbl9HRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
bl9HSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9HSScsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9HTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lbl9HVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9H
WScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9ISycsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9JTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lbl9JTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9KRScs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9KTScsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lbl9LSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9LTicsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9LWScsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbl9MQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lbl9MUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9MUycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9NRycsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19lbl9NSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
bl9NTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9NUCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9NUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lbl9NVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9N
VScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9NVycsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9NWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lbl9OQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9ORics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9ORycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9OUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lbl9OVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9OWicsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9QRycsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbl9QSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lbl9QSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9QTicsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9QUicsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19lbl9QVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
bl9SVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9TQicsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9TQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lbl9TRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9T
SCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9TTCcsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9TUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lbl9TWCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9TWics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9UQycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9USycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lbl9UTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9UVCcsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9UVicsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbl9UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lbl9VRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9VTScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9VU19QT1NJWCcsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9WQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lbl9WRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9WSScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9WVScsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lbl9XUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lbl9aTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl9aVycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lc19BUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19C
TycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19DTCcsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19DTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lc19DUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19DVScs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19ETycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19FQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19lc19FQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19HUScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19HVCcsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19lc19ITicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19lc19JQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19NWCcsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19OSScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19lc19QQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19l
c19QRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19QSCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19QUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19lc19QWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19T
VicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19VUycsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lc19VWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19lc19WRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ldF9FRScs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ldV9FUycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19ld28nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfZXdvX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZhX0FGJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZhX0lSJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX2ZmJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2Zm
X0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX0dOJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX01SJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX2ZmX1NOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpX0ZJ
JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpbF9QSCcsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mbycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19mb19GTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9CRScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9CRicsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19mcl9CSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19mcl9CSicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9CTCcsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9DRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19mcl9DRicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19m
cl9DRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9DSCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9DSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19mcl9DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9E
SicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9EWicsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9GUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19mcl9HQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9HRics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9HTicsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9HUCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19mcl9HUScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9IVCcsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9LTScsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19mcl9MVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19mcl9NQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9NQycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9NRicsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19mcl9NRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19m
cl9NTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9NUScsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9NUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19mcl9NVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9O
QycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9ORScsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9QRicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19mcl9QTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9SRScs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9SVycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9TQycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19mcl9TTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9TWScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9URCcsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19mcl9URycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19mcl9UTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9WVScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9XRicsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19mcl9ZVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19m
dXInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnVyX0lUJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2Z5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX2Z5X05MJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2dhX0lFJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2dkJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX2dkX0dCJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X2dsX0VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2dzd19DSCcsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nc3dfRlInLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfZ3N3X0xJJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X2d1X0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2d1eicsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ndXpfS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfZ3YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZ3ZfSU0n
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaGEnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfaGFfTGF0bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19oYV9MYXRuX0dIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhX0xh
dG5fTkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaGFfTGF0bl9ORycsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19oYXdfVVMnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfaGVfSUwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfaGlfSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaHJfQkEnLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaHJfSFInLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfaHNiJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hz
Yl9ERScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19odV9IVScsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19oeV9BTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19pZF9JRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pZycs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pZ19ORycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19paScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19paV9DTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pc19JUycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pdF9DSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19pdF9JVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19p
dF9TTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qYV9KUCcsICdnb29nLmxh
YnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qZ28nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfamdvX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ptYycs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qbWNfVFonLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfa2FfR0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfa2FiJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2thYl9EWicsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rYW0nLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfa2FtX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X2tkZScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rZGVfVFonLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2VhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX2tlYV9DVicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19raHEn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2hxX01MJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX2tpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX2tpX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2trX0N5cmwnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2tfQ3lybF9LWicsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ra2onLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfa2tqX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tsJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tsX0dMJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX2tsbicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19r
bG5fS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa21fS0gnLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa25fSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfa29fS1AnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa29f
S1InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa29rJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX2tva19JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19rcycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rc19BcmFiJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tzX0FyYWJfSU4nLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3NiJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX2tzYl9UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rc2YnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3NmX0NNJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX2tzaCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19rc2hfREUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3cnLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3dfR0InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfa3lfQ3lybCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19r
eV9DeXJsX0tHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xhZycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sYWdfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfbGInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGJf
TFUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGcnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfbGdfVUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfbGt0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xrdF9VUycsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9BTycsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19sbl9DRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19sbl9DRicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9DRycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sb19MQScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19sdF9MVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19s
dScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdV9DRCcsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfbHVvX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2x1eScsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdXlfS0UnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfbHZfTFYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfbWFzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tYXNfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfbWVyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21l
cl9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tZmUnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbWZlX01VJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX21nJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21nX01HJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21naCcsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfbWdvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21nb19DTScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ta19NSycsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19tbF9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19t
bl9DeXJsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21uX0N5cmxfTU4nLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbXJfSU4nLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfbXNfTGF0bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19tc19MYXRuX0JOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21zX0xh
dG5fTVknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbXNfTGF0bl9TRycsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tdF9NVCcsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19tdWEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
bXVhX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX215X01NJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25hcScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19uYXFfTkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmJf
Tk8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmJfU0onLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfbmRfWlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmVfSU4nLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmVfTlAnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfbmxfQVcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfbmxfQkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmxfQlEnLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmxfQ1cnLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfbmxfTkwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
bmxfU1InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmxfU1gnLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbm1nJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX25tZ19DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubl9OTycsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19ubmgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfbm5oX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX251cycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19udXNfU0QnLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfbnluJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX255
bl9VRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19vbScsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19vbV9FVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19vbV9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19vcl9JTics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19vcycsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19vc19HRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19vc19SVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19wYV9BcmFiJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BhX0FyYWJfUEsnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfcGFfR3VydScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc19wYV9HdXJ1X0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Bs
X1BMJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BzJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX3BzX0FGJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX3B0X0FPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X0NWJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X0dXJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3B0X01PJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX3B0X01aJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X1NUJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X1RMJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX3F1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3F1
X0JPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3F1X0VDJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3F1X1BFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX3JtJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JtX0NIJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JuJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX3JuX0JJJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X3JvX01EJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JvX1JPJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JvZicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9y
bWF0U3ltYm9sc19yb2ZfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcnVf
QlknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcnVfS0cnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcnVfS1onLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfcnVfTUQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcnVfUlUn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcnVfVUEnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfcncnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfcndfUlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcndrJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3J3a19UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc19zYWgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2Fo
X1JVJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NhcScsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zYXFfS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfc2JwJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NicF9UWics
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZScsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19zZV9GSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c19zZV9OTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZV9TRScsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZWgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfc2VoX01aJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Nl
cycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZXNfTUwnLCAnZ29vZy5sYWJz
LmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5
bWJvbHNfc2dfQ0YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2hpJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NoaV9MYXRuJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3NoaV9MYXRuX01BJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzX3NoaV9UZm5nJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3No
aV9UZm5nX01BJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NpX0xLJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NrX1NLJywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX3NsX1NJJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xz
X3NtbicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zbW5fRkknLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc24nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfc25fWlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc28nLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc29fREonLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfc29fRVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfc29fS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc29fU08nLCAnZ29v
Zy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3FfQUwnLCAnZ29vZy5sYWJzLmkxOG4uTGlz
dEZvcm1hdFN5bWJvbHNfc3FfTUsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
c3FfWEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3JfQ3lybCcsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcl9DeXJsX0JBJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3NyX0N5cmxfTUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfc3JfQ3lybF9SUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19z
cl9DeXJsX1hLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyX0xhdG4nLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3JfTGF0bl9CQScsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcl9MYXRuX01FJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJv
bHNfc3JfTGF0bl9YSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9BWCcs
ICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9GSScsICdnb29nLmxhYnMuaTE4
bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9TRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc19zd19LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19UWicsICdn
b29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19VRycsICdnb29nLmxhYnMuaTE4bi5M
aXN0Rm9ybWF0U3ltYm9sc19zd2MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
c3djX0NEJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RhX0lOJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RhX0xLJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3RhX01ZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Rh
X1NHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RlX0lOJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RlbycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc190ZW9fS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGVvX1VH
JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RoX1RIJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX3RpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1i
b2xzX3RpX0VSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RpX0VUJywgJ2dv
b2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RvJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3RvX1RPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Ry
X0NZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3RyX1RSJywgJ2dvb2cubGFi
cy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3R3cScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0
U3ltYm9sc190d3FfTkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdHptJywg
J2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3R6bV9MYXRuJywgJ2dvb2cubGFicy5p
MThuLkxpc3RGb3JtYXRTeW1ib2xzX3R6bV9MYXRuX01BJywgJ2dvb2cubGFicy5pMThuLkxpc3RG
b3JtYXRTeW1ib2xzX3VnJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3VnX0Fy
YWInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdWdfQXJhYl9DTicsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc191a19VQScsICdnb29nLmxhYnMuaTE4bi5MaXN0
Rm9ybWF0U3ltYm9sc191cl9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc191
cl9QSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc191el9BcmFiJywgJ2dvb2cu
bGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3V6X0FyYWJfQUYnLCAnZ29vZy5sYWJzLmkxOG4u
TGlzdEZvcm1hdFN5bWJvbHNfdXpfQ3lybCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc191el9DeXJsX1VaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3V6X0xh
dG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXpfTGF0bl9VWicsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc192YWknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNf
dmFpX0xhdG5fTFInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdmFpX1ZhaWkn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdmFpX1ZhaWlfTFInLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdmlfVk4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZv
cm1hdFN5bWJvbHNfdnVuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Z1bl9U
WicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc193YWUnLCAnZ29vZy5sYWJzLmkx
OG4uTGlzdEZvcm1hdFN5bWJvbHNfd2FlX0NIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRT
eW1ib2xzX3hvZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc194b2dfVUcnLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeWF2JywgJ2dvb2cubGFicy5pMThuLkxp
c3RGb3JtYXRTeW1ib2xzX3lhdl9DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9s
c195aScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195aV8wMDEnLCAnZ29vZy5s
YWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfeW9fQkonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeW9fTkcn
LCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemdoJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3pnaF9NQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3lt
Ym9sc196aF9IYW5zJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnNf
Q04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSGFuc19ISycsICdnb29n
LmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196aF9IYW5zX01PJywgJ2dvb2cubGFicy5pMThu
Lkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnNfU0cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1h
dFN5bWJvbHNfemhfSGFudCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196aF9I
YW50X0hLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnRfTU8nLCAn
Z29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSGFudF9UVycsICdnb29nLmxhYnMu
aTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196dV9aQSddLCBbJ2dvb2cubGFicy5pMThuLkxpc3RGb3Jt
YXRTeW1ib2xzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9pdGVyYWJsZS9p
dGVyYWJsZS5qcycsIFsnZ29vZy5sYWJzLml0ZXJhYmxlJ10sIFtdLCB0cnVlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnbGFicy9pdGVyYWJsZS9pdGVyYWJsZV90ZXN0LmpzJywgWydnb29nLmxhYnMu
aXRlcmFibGVUZXN0J10sIFsnZ29vZy5sYWJzLml0ZXJhYmxlJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIHRydWUpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdsYWJzL21vY2svbW9jay5qcycsIFsnZ29vZy5sYWJzLm1vY2snLCAnZ29vZy5sYWJz
Lm1vY2suVmVyaWZpY2F0aW9uRXJyb3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycs
ICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29v
Zy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL21vY2svbW9ja190
ZXN0LmpzJywgWydnb29nLmxhYnMubW9ja1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubGFi
cy5tb2NrJywgJ2dvb2cubGFicy5tb2NrLlZlcmlmaWNhdGlvbkVycm9yJywgJ2dvb2cubGFicy50
ZXN0aW5nLkFueXRoaW5nTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbk1h
dGNoZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L2ltYWdlLmpzJywgWydnb29nLmxhYnMubmV0Lmlt
YWdlJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cudXNlckFnZW50
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvaW1hZ2VfdGVzdC5qcycs
IFsnZ29vZy5sYWJzLm5ldC5pbWFnZVRlc3QnXSwgWydnb29nLmxhYnMubmV0LmltYWdlJywgJ2dv
b2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC5qcycsIFsnZ29vZy5uZXQuV2ViQ2hhbm5l
bCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC9iYXNldGVzdGNoYW5uZWwuanMnLCBb
J2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5CYXNlVGVzdENoYW5uZWwnXSwgWydnb29nLmxhYnMu
bmV0LndlYkNoYW5uZWwuQ2hhbm5lbCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5l
bFJlcXVlc3QnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cycsICdnb29n
LmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVzdFN0YXRzLlN0YXQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL2NoYW5uZWwuanMnLCBbJ2dvb2cubGFi
cy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvY2hhbm5lbHJlcXVlc3QuanMnLCBbJ2dvb2cubGFicy5u
ZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVxdWVzdCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3lu
Yy5UaHJvdHRsZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5sYWJzLm5ldC53
ZWJDaGFubmVsLnJlcXVlc3RTdGF0cycsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVz
dFN0YXRzLlNlcnZlclJlYWNoYWJpbGl0eScsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwucmVx
dWVzdFN0YXRzLlN0YXQnLCAnZ29vZy5uZXQuRXJyb3JDb2RlJywgJ2dvb2cubmV0LkV2ZW50VHlw
ZScsICdnb29nLm5ldC5YbWxIdHRwJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudXJpLnV0aWxzLlN0
YW5kYXJkUXVlcnlQYXJhbScsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvY2hhbm5lbHJlcXVlc3RfdGVzdC5qcycsIFsn
Z29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLmNoYW5uZWxSZXF1ZXN0VGVzdCddLCBbJ2dvb2cuVXJp
JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVx
dWVzdCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJywgJ2dvb2cu
bGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFu
bmVsLnJlcXVlc3RTdGF0cy5TZXJ2ZXJSZWFjaGFiaWxpdHknLCAnZ29vZy50ZXN0aW5nLk1vY2tD
bG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0
aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC9j
b25uZWN0aW9uc3RhdGUuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5Db25uZWN0aW9u
U3RhdGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hh
bm5lbC9mb3J3YXJkY2hhbm5lbHJlcXVlc3Rwb29sLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNo
YW5uZWwuRm9yd2FyZENoYW5uZWxSZXF1ZXN0UG9vbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5z
dHJpbmcnLCAnZ29vZy5zdHJ1Y3RzLlNldCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2xhYnMvbmV0L3dlYmNoYW5uZWwvZm9yd2FyZGNoYW5uZWxyZXF1ZXN0cG9vbF90ZXN0LmpzJywg
Wydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuZm9yd2FyZENoYW5uZWxSZXF1ZXN0UG9vbFRlc3Qn
XSwgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbFJlcXVlc3QnLCAnZ29vZy5sYWJz
Lm5ldC53ZWJDaGFubmVsLkZvcndhcmRDaGFubmVsUmVxdWVzdFBvb2wnLCAnZ29vZy50ZXN0aW5n
LlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5u
ZWwvbmV0dXRpbHMuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5uZXRVdGlscyddLCBb
J2dvb2cuVXJpJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XZWJDaGFubmVsRGVidWcnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL3JlcXVlc3Rz
dGF0cy5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cycsICdnb29n
LmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVzdFN0YXRzLkV2ZW50JywgJ2dvb2cubGFicy5uZXQu
d2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU2VydmVyUmVhY2hhYmlsaXR5JywgJ2dvb2cubGFicy5u
ZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU2VydmVyUmVhY2hhYmlsaXR5RXZlbnQnLCAnZ29v
Zy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cy5TdGF0JywgJ2dvb2cubGFicy5uZXQu
d2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU3RhdEV2ZW50JywgJ2dvb2cubGFicy5uZXQud2ViQ2hh
bm5lbC5yZXF1ZXN0U3RhdHMuVGltaW5nRXZlbnQnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdn
b29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xh
YnMvbmV0L3dlYmNoYW5uZWwvd2ViY2hhbm5lbGJhc2UuanMnLCBbJ2dvb2cubGFicy5uZXQud2Vi
Q2hhbm5lbC5XZWJDaGFubmVsQmFzZSddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuYXJyYXknLCAnZ29v
Zy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuVGV4dEZvcm1hdHRlcicsICdnb29nLmpzb24nLCAnZ29v
Zy5sYWJzLm5ldC53ZWJDaGFubmVsLkJhc2VUZXN0Q2hhbm5lbCcsICdnb29nLmxhYnMubmV0Lndl
YkNoYW5uZWwuQ2hhbm5lbCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbFJlcXVl
c3QnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNvbm5lY3Rpb25TdGF0ZScsICdnb29nLmxh
YnMubmV0LndlYkNoYW5uZWwuRm9yd2FyZENoYW5uZWxSZXF1ZXN0UG9vbCcsICdnb29nLmxhYnMu
bmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5l
bC5XaXJlJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlVjgnLCAnZ29vZy5sYWJzLm5l
dC53ZWJDaGFubmVsLm5ldFV0aWxzJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0
U3RhdHMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cy5TdGF0JywgJ2dv
b2cubG9nJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywg
J2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuQ2lyY3VsYXJCdWZmZXInXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL3dlYmNoYW5uZWxiYXNlX3Rl
c3QuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC53ZWJDaGFubmVsQmFzZVRlc3QnXSwg
Wydnb29nLlRpbWVyJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5mdW5jdGlvbnMn
LCAnZ29vZy5qc29uJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVxdWVzdCcs
ICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuRm9yd2FyZENoYW5uZWxSZXF1ZXN0UG9vbCcsICdn
b29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbEJhc2UnLCAnZ29vZy5sYWJzLm5ldC53
ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlVHJhbnNwb3J0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hh
bm5lbC5XZWJDaGFubmVsRGVidWcnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldpcmUnLCAn
Z29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLm5ldFV0aWxzJywgJ2dvb2cubGFicy5uZXQud2ViQ2hh
bm5lbC5yZXF1ZXN0U3RhdHMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0
cy5TdGF0JywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdn
b29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9u
ZXQvd2ViY2hhbm5lbC93ZWJjaGFubmVsYmFzZXRyYW5zcG9ydC5qcycsIFsnZ29vZy5sYWJzLm5l
dC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlVHJhbnNwb3J0J10sIFsnZ29vZy5hc3NlcnRzJywg
J2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFu
bmVsUmVxdWVzdCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbEJhc2UnLCAn
Z29vZy5sb2cnLCAnZ29vZy5uZXQuV2ViQ2hhbm5lbCcsICdnb29nLm5ldC5XZWJDaGFubmVsVHJh
bnNwb3J0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLnBhdGgnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL3dlYmNoYW5uZWxiYXNldHJhbnNw
b3J0X3Rlc3QuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC53ZWJDaGFubmVsQmFzZVRy
YW5zcG9ydFRlc3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmxh
YnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbFJlcXVlc3QnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFu
bmVsLldlYkNoYW5uZWxCYXNlVHJhbnNwb3J0JywgJ2dvb2cubmV0LldlYkNoYW5uZWwnLCAnZ29v
Zy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvd2ViY2hhbm5lbGRl
YnVnLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJ10sIFsn
Z29vZy5qc29uJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFi
cy9uZXQvd2ViY2hhbm5lbC93aXJlLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ly
ZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVs
L3dpcmV2OC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldpcmVWOCddLCBbJ2dvb2cu
YXNzZXJ0cycsICdnb29nLmpzb24nLCAnZ29vZy5qc29uLk5hdGl2ZUpzb25Qcm9jZXNzb3InLCAn
Z29vZy5zdHJ1Y3RzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2Vi
Y2hhbm5lbC93aXJldjhfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldpcmVW
OFRlc3QnXSwgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZVY4JywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFu
bmVsdHJhbnNwb3J0LmpzJywgWydnb29nLm5ldC5XZWJDaGFubmVsVHJhbnNwb3J0J10sIFtdLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWx0cmFuc3BvcnRm
YWN0b3J5LmpzJywgWydnb29nLm5ldC5jcmVhdGVXZWJDaGFubmVsVHJhbnNwb3J0J10sIFsnZ29v
Zy5mdW5jdGlvbnMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlVHJh
bnNwb3J0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQveGhyLmpzJywg
Wydnb29nLmxhYnMubmV0LnhocicsICdnb29nLmxhYnMubmV0Lnhoci5FcnJvcicsICdnb29nLmxh
YnMubmV0Lnhoci5IdHRwRXJyb3InLCAnZ29vZy5sYWJzLm5ldC54aHIuT3B0aW9ucycsICdnb29n
LmxhYnMubmV0Lnhoci5Qb3N0RGF0YScsICdnb29nLmxhYnMubmV0Lnhoci5SZXNwb25zZVR5cGUn
LCAnZ29vZy5sYWJzLm5ldC54aHIuVGltZW91dEVycm9yJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dv
b2cuZGVidWcuRXJyb3InLCAnZ29vZy5qc29uJywgJ2dvb2cubmV0Lkh0dHBTdGF0dXMnLCAnZ29v
Zy5uZXQuWG1sSHR0cCcsICdnb29nLnN0cmluZycsICdnb29nLnVyaS51dGlscycsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3hocl90ZXN0
LmpzJywgWydnb29nLmxhYnMubmV0LnhoclRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5s
YWJzLm5ldC54aHInLCAnZ29vZy5uZXQuV3JhcHBlclhtbEh0dHBGYWN0b3J5JywgJ2dvb2cubmV0
LlhtbEh0dHAnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0
JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9v
YmplY3Qvb2JqZWN0LmpzJywgWydnb29nLmxhYnMub2JqZWN0J10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ2xhYnMvb2JqZWN0L29iamVjdF90ZXN0LmpzJywgWydnb29nLmxhYnMu
b2JqZWN0VGVzdCddLCBbJ2dvb2cubGFicy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvcHVic3ViL2Jyb2FkY2FzdHB1YnN1
Yi5qcycsIFsnZ29vZy5sYWJzLnB1YnN1Yi5Ccm9hZGNhc3RQdWJTdWInXSwgWydnb29nLkRpc3Bv
c2FibGUnLCAnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuYXN5bmMucnVuJywgJ2dv
b2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5q
c29uJywgJ2dvb2cubG9nJywgJ2dvb2cubWF0aCcsICdnb29nLnB1YnN1Yi5QdWJTdWInLCAnZ29v
Zy5zdG9yYWdlLlN0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNUxvY2FsU3Rv
cmFnZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2xhYnMvcHVic3ViL2Jyb2FkY2FzdHB1YnN1Yl90ZXN0LmpzJywgWydnb29n
LmxhYnMucHVic3ViLkJyb2FkY2FzdFB1YlN1YlRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cu
ZGVidWcuTG9nZ2VyJywgJ2dvb2cuanNvbicsICdnb29nLmxhYnMucHVic3ViLkJyb2FkY2FzdFB1
YlN1YicsICdnb29nLnN0b3JhZ2UuU3RvcmFnZScsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cu
dGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVz
dGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3Rpbmcu
anN1bml0JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2tt
YXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdG9y
YWdlL2JvdW5kZWRjb2xsZWN0YWJsZXN0b3JhZ2UuanMnLCBbJ2dvb2cubGFicy5zdG9yYWdlLkJv
dW5kZWRDb2xsZWN0YWJsZVN0b3JhZ2UnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycs
ICdnb29nLml0ZXInLCAnZ29vZy5zdG9yYWdlLkNvbGxlY3RhYmxlU3RvcmFnZScsICdnb29nLnN0
b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5FeHBpcmluZ1N0b3JhZ2UnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3N0b3JhZ2UvYm91bmRlZGNvbGxlY3RhYmxlc3Rv
cmFnZV90ZXN0LmpzJywgWydnb29nLmxhYnMuc3RvcmFnZS5Cb3VuZGVkQ29sbGVjdGFibGVTdG9y
YWdlVGVzdCddLCBbJ2dvb2cubGFicy5zdG9yYWdlLkJvdW5kZWRDb2xsZWN0YWJsZVN0b3JhZ2Un
LCAnZ29vZy5zdG9yYWdlLmNvbGxlY3RhYmxlU3RvcmFnZVRlc3RlcicsICdnb29nLnN0b3JhZ2Uu
c3RvcmFnZV90ZXN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdHJ1Y3RzL21hcC5qcycsIFsnZ29vZy5sYWJzLnN0cnVj
dHMuTWFwJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5sYWJzLm9iamVj
dCcsICdnb29nLm9iamVjdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvc3Ry
dWN0cy9tYXBfcGVyZi5qcycsIFsnZ29vZy5sYWJzLnN0cnVjdHMuTWFwUGVyZiddLCBbJ2dvb2cu
YXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cubGFicy5zdHJ1
Y3RzLk1hcCcsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRh
YmxlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdsYWJzL3N0cnVjdHMvbWFwX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5zdHJ1Y3RzLk1hcFRlc3Qn
XSwgWydnb29nLmxhYnMuc3RydWN0cy5NYXAnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFj
ZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J2xhYnMvc3RydWN0cy9tdWx0aW1hcC5qcycsIFsnZ29vZy5sYWJzLnN0cnVjdHMuTXVsdGltYXAn
XSwgWydnb29nLmFycmF5JywgJ2dvb2cubGFicy5vYmplY3QnLCAnZ29vZy5sYWJzLnN0cnVjdHMu
TWFwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdHJ1Y3RzL211bHRpbWFw
X3Rlc3QuanMnLCBbJ2dvb2cubGFicy5zdHJ1Y3RzLk11bHRpbWFwVGVzdCddLCBbJ2dvb2cubGFi
cy5zdHJ1Y3RzLk1hcCcsICdnb29nLmxhYnMuc3RydWN0cy5NdWx0aW1hcCcsICdnb29nLnRlc3Rp
bmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdHlsZS9waXhl
bGRlbnNpdHltb25pdG9yLmpzJywgWydnb29nLmxhYnMuc3R5bGUuUGl4ZWxEZW5zaXR5TW9uaXRv
cicsICdnb29nLmxhYnMuc3R5bGUuUGl4ZWxEZW5zaXR5TW9uaXRvci5EZW5zaXR5JywgJ2dvb2cu
bGFicy5zdHlsZS5QaXhlbERlbnNpdHlNb25pdG9yLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRz
JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbGFicy9zdHlsZS9waXhlbGRlbnNpdHltb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5z
dHlsZS5QaXhlbERlbnNpdHlNb25pdG9yVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20u
RG9tSGVscGVyJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cubGFicy5zdHlsZS5QaXhlbERlbnNpdHlN
b25pdG9yJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuanN1bml0
JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ2xhYnMvdGVzdGluZy9hc3NlcnR0aGF0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5N
YXRjaGVyRXJyb3InLCAnZ29vZy5sYWJzLnRlc3RpbmcuYXNzZXJ0VGhhdCddLCBbJ2dvb2cuZGVi
dWcuRXJyb3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3RpbmcvYXNz
ZXJ0dGhhdF90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5hc3NlcnRUaGF0VGVzdCddLCBb
J2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5hc3Nl
cnRUaGF0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0
aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL2RlY29yYXRv
cm1hdGNoZXIuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFueXRoaW5nTWF0Y2hlciddLCBbJ2dv
b2cubGFicy50ZXN0aW5nLk1hdGNoZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCds
YWJzL3Rlc3RpbmcvZGVjb3JhdG9ybWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGlu
Zy5kZWNvcmF0b3JNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFueXRoaW5nTWF0
Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbk1hdGNoZXInLCAnZ29vZy5sYWJz
LnRlc3RpbmcuTWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMv
dGVzdGluZy9kaWN0aW9uYXJ5bWF0Y2hlci5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuSGFzRW50
cmllc01hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSGFzRW50cnlNYXRjaGVyJywgJ2dvb2cu
bGFicy50ZXN0aW5nLkhhc0tleU1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSGFzVmFsdWVN
YXRjaGVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXInLCAn
Z29vZy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3Rpbmcv
ZGljdGlvbmFyeW1hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuZGljdGlvbmFy
eU1hdGNoZXJUZXN0J10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuSGFzRW50cnlNYXRjaGVyJywgJ2dv
b2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5hc3NlcnRU
aGF0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdsYWJzL3Rlc3RpbmcvZW52aXJvbm1lbnQuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLkVudmly
b25tZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRlYnVnLkNvbnNvbGUnLCAnZ29vZy50ZXN0
aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5n
LlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdsYWJzL3Rlc3RpbmcvZW52aXJvbm1lbnRfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRl
c3RpbmcuZW52aXJvbm1lbnRUZXN0J10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQn
LCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90
ZXN0aW5nL2Vudmlyb25tZW50X3VzYWdlX3Rlc3QuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLmVu
dmlyb25tZW50VXNhZ2VUZXN0J10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3RpbmcvbG9naWNtYXRjaGVyLmpz
JywgWydnb29nLmxhYnMudGVzdGluZy5BbGxPZk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3Rpbmcu
QW55T2ZNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLklzTm90TWF0Y2hlciddLCBbJ2dvb2cu
YXJyYXknLCAnZ29vZy5sYWJzLnRlc3RpbmcuTWF0Y2hlciddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ2xhYnMvdGVzdGluZy9sb2dpY21hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJz
LnRlc3RpbmcubG9naWNNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFsbE9mTWF0
Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbk1hdGNoZXInLCAnZ29vZy5sYWJz
LnRlc3RpbmcuTWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMv
dGVzdGluZy9tYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyJ10sIFtdLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9udW1iZXJtYXRjaGVyLmpz
JywgWydnb29nLmxhYnMudGVzdGluZy5DbG9zZVRvTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGlu
Zy5FcXVhbFRvTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbkVxdWFsVG9N
YXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkdyZWF0ZXJUaGFuTWF0Y2hlcicsICdnb29nLmxh
YnMudGVzdGluZy5MZXNzVGhhbkVxdWFsVG9NYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkxl
c3NUaGFuTWF0Y2hlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmxhYnMudGVzdGluZy5NYXRj
aGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL251bWJlcm1h
dGNoZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcubnVtYmVyTWF0Y2hlclRlc3QnXSwg
Wydnb29nLmxhYnMudGVzdGluZy5MZXNzVGhhbk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3Rpbmcu
TWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9v
YmplY3RtYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5IYXNQcm9wZXJ0eU1hdGNoZXIn
LCAnZ29vZy5sYWJzLnRlc3RpbmcuSW5zdGFuY2VPZk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3Rp
bmcuSXNOdWxsTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5Jc051bGxPclVuZGVmaW5lZE1h
dGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSXNVbmRlZmluZWRNYXRjaGVyJywgJ2dvb2cubGFi
cy50ZXN0aW5nLk9iamVjdEVxdWFsc01hdGNoZXInXSwgWydnb29nLmxhYnMudGVzdGluZy5NYXRj
aGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL29iamVjdG1h
dGNoZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRlc3Rpbmcub2JqZWN0TWF0Y2hlclRlc3QnXSwg
Wydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyRXJyb3InLCAnZ29vZy5sYWJzLnRlc3RpbmcuT2Jq
ZWN0RXF1YWxzTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5hc3NlcnRUaGF0JywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3Rp
bmcvc3RyaW5nbWF0Y2hlci5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuQ29udGFpbnNTdHJpbmdN
YXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkVuZHNXaXRoTWF0Y2hlcicsICdnb29nLmxhYnMu
dGVzdGluZy5FcXVhbFRvSWdub3JpbmdXaGl0ZXNwYWNlTWF0Y2hlcicsICdnb29nLmxhYnMudGVz
dGluZy5FcXVhbHNNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLlJlZ2V4TWF0Y2hlcicsICdn
b29nLmxhYnMudGVzdGluZy5TdGFydHNXaXRoTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5T
dHJpbmdDb250YWluc0luT3JkZXJNYXRjaGVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubGFi
cy50ZXN0aW5nLk1hdGNoZXInLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdsYWJzL3Rlc3Rpbmcvc3RyaW5nbWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMu
dGVzdGluZy5zdHJpbmdNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJF
cnJvcicsICdnb29nLmxhYnMudGVzdGluZy5TdHJpbmdDb250YWluc0luT3JkZXJNYXRjaGVyJywg
J2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L2Jyb3dzZXIuanMnLCBb
J2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sYWJz
LnVzZXJBZ2VudC51dGlsJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvYnJvd3Nlcl90ZXN0LmpzJywgWydn
b29nLmxhYnMudXNlckFnZW50LmJyb3dzZXJUZXN0J10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5i
cm93c2VyJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNl
ckFnZW50LnV0aWwnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L2RldmljZS5qcycsIFsnZ29v
Zy5sYWJzLnVzZXJBZ2VudC5kZXZpY2UnXSwgWydnb29nLmxhYnMudXNlckFnZW50LnV0aWwnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC9kZXZpY2VfdGVzdC5q
cycsIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5kZXZpY2VUZXN0J10sIFsnZ29vZy5sYWJzLnVzZXJB
Z2VudC5kZXZpY2UnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFi
cy51c2VyQWdlbnQudXRpbCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvZW5naW5lLmpzJywgWydnb29nLmxhYnMudXNl
ckFnZW50LmVuZ2luZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGls
JywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2Vy
YWdlbnQvZW5naW5lX3Rlc3QuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lVGVzdCdd
LCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVz
dEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L3BsYXRmb3Jt
LmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJ10sIFsnZ29vZy5sYWJzLnVzZXJB
Z2VudC51dGlsJywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bGFicy91c2VyYWdlbnQvcGxhdGZvcm1fdGVzdC5qcycsIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5w
bGF0Zm9ybVRlc3QnXSwgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cubGFi
cy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNl
cmFnZW50L3Rlc3RfYWdlbnRzLmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnRlc3RBZ2VudHMn
XSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvdXRpbC5q
cycsIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJ10sIFsnZ29vZy5zdHJpbmcnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC91dGlsX3Rlc3QuanMnLCBbJ2dv
b2cubGFicy51c2VyQWdlbnQudXRpbFRlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdnb29nLmxh
YnMudXNlckFnZW50LnRlc3RBZ2VudHMnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dv
b2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvY291bnRyaWVzLmpzJywgWydnb29nLmxv
Y2FsZS5jb3VudHJpZXMnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxl
L2NvdW50cnlsYW5ndWFnZW5hbWVzX3Rlc3QuanMnLCBbJ2dvb2cubG9jYWxlLmNvdW50cnlMYW5n
dWFnZU5hbWVzVGVzdCddLCBbJ2dvb2cubG9jYWxlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvZGVmYXVsdGxvY2FsZW5hbWVjb25z
dGFudHMuanMnLCBbJ2dvb2cubG9jYWxlLmRlZmF1bHRMb2NhbGVOYW1lQ29uc3RhbnRzJ10sIFtd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS9nZW5lcmljZm9udG5hbWVzLmpz
JywgWydnb29nLmxvY2FsZS5nZW5lcmljRm9udE5hbWVzJ10sIFtdLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ2xvY2FsZS9nZW5lcmljZm9udG5hbWVzX3Rlc3QuanMnLCBbJ2dvb2cubG9j
YWxlLmdlbmVyaWNGb250TmFtZXNUZXN0J10sIFsnZ29vZy5sb2NhbGUuZ2VuZXJpY0ZvbnROYW1l
cycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bG9jYWxlL2dlbmVyaWNmb250bmFtZXNkYXRhLmpzJywgWydnb29nLmxvY2FsZS5nZW5lcmljRm9u
dE5hbWVzRGF0YSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvbG9j
YWxlLmpzJywgWydnb29nLmxvY2FsZSddLCBbJ2dvb2cubG9jYWxlLm5hdGl2ZU5hbWVDb25zdGFu
dHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvbmF0aXZlbmFtZWNvbnN0
YW50cy5qcycsIFsnZ29vZy5sb2NhbGUubmF0aXZlTmFtZUNvbnN0YW50cyddLCBbXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvc2NyaXB0VG9MYW5ndWFnZXMuanMnLCBbJ2dv
b2cubG9jYWxlLnNjcmlwdFRvTGFuZ3VhZ2VzJ10sIFsnZ29vZy5sb2NhbGUnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvdGltZXpvbmVkZXRlY3Rpb24uanMnLCBbJ2dvb2cu
bG9jYWxlLnRpbWVab25lRGV0ZWN0aW9uJ10sIFsnZ29vZy5sb2NhbGUuVGltZVpvbmVGaW5nZXJw
cmludCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS90aW1lem9uZWRldGVj
dGlvbl90ZXN0LmpzJywgWydnb29nLmxvY2FsZS50aW1lWm9uZURldGVjdGlvblRlc3QnXSwgWydn
b29nLmxvY2FsZS50aW1lWm9uZURldGVjdGlvbicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL3RpbWV6b25lZmluZ2VycHJpbnQuanMn
LCBbJ2dvb2cubG9jYWxlLlRpbWVab25lRmluZ2VycHJpbnQnXSwgW10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnbG9jYWxlL3RpbWV6b25lbGlzdC5qcycsIFsnZ29vZy5sb2NhbGUuVGlt
ZVpvbmVMaXN0J10sIFsnZ29vZy5sb2NhbGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdsb2NhbGUvdGltZXpvbmVsaXN0X3Rlc3QuanMnLCBbJ2dvb2cubG9jYWxlLlRpbWVab25lTGlz
dFRlc3QnXSwgWydnb29nLmxvY2FsZScsICdnb29nLmxvY2FsZS5UaW1lWm9uZUxpc3QnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ2xvZy9sb2cu
anMnLCBbJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cubG9nLkxvZ1JlY29yZCcs
ICdnb29nLmxvZy5Mb2dnZXInXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nTWFuYWdl
cicsICdnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlciddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ2xvZy9sb2dfdGVzdC5qcycsIFsnZ29vZy5sb2dUZXN0J10s
IFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRo
L2FmZmluZXRyYW5zZm9ybS5qcycsIFsnZ29vZy5tYXRoLkFmZmluZVRyYW5zZm9ybSddLCBbJ2dv
b2cubWF0aCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvYWZmaW5ldHJhbnNm
b3JtX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5BZmZpbmVUcmFuc2Zvcm1UZXN0J10sIFsnZ29vZy5h
cnJheScsICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkFmZmluZVRyYW5zZm9ybScsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9iZXppZXIu
anMnLCBbJ2dvb2cubWF0aC5CZXppZXInXSwgWydnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkNvb3Jk
aW5hdGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2Jlemllcl90ZXN0Lmpz
JywgWydnb29nLm1hdGguQmV6aWVyVGVzdCddLCBbJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQmV6
aWVyJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2JveC5qcycsIFsnZ29vZy5tYXRoLkJveCdd
LCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bWF0aC9ib3hfdGVzdC5qcycsIFsnZ29vZy5tYXRoLkJveFRlc3QnXSwgWydnb29nLm1hdGguQm94
JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2Nvb3JkaW5hdGUuanMnLCBbJ2dvb2cubWF0aC5D
b29yZGluYXRlJ10sIFsnZ29vZy5tYXRoJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bWF0aC9jb29yZGluYXRlMy5qcycsIFsnZ29vZy5tYXRoLkNvb3JkaW5hdGUzJ10sIFtdLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvY29vcmRpbmF0ZTNfdGVzdC5qcycsIFsnZ29v
Zy5tYXRoLkNvb3JkaW5hdGUzVGVzdCddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlMycsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9jb29y
ZGluYXRlX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlVGVzdCddLCBbJ2dvb2cubWF0
aC5Db29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdtYXRoL2V4cG9uZW50aWFsYmFja29mZi5qcycsIFsnZ29vZy5tYXRoLkV4cG9u
ZW50aWFsQmFja29mZiddLCBbJ2dvb2cuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ21hdGgvZXhwb25lbnRpYWxiYWNrb2ZmX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5FeHBv
bmVudGlhbEJhY2tvZmZUZXN0J10sIFsnZ29vZy5tYXRoLkV4cG9uZW50aWFsQmFja29mZicsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9p
bnRlZ2VyLmpzJywgWydnb29nLm1hdGguSW50ZWdlciddLCBbXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdtYXRoL2ludGVnZXJfdGVzdC5qcycsIFsnZ29vZy5tYXRoLkludGVnZXJUZXN0
J10sIFsnZ29vZy5tYXRoLkludGVnZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvaW50ZXJwb2xhdG9yL2ludGVycG9sYXRvcjEuanMn
LCBbJ2dvb2cubWF0aC5pbnRlcnBvbGF0b3IuSW50ZXJwb2xhdG9yMSddLCBbXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9saW5lYXIxLmpzJywgWydnb29n
Lm1hdGguaW50ZXJwb2xhdG9yLkxpbmVhcjEnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0
cycsICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLmludGVycG9sYXRvci5JbnRlcnBvbGF0b3IxJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9pbnRlcnBvbGF0b3IvbGluZWFyMV90
ZXN0LmpzJywgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLkxpbmVhcjFUZXN0J10sIFsnZ29vZy5t
YXRoLmludGVycG9sYXRvci5MaW5lYXIxJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9wY2hpcDEuanMnLCBbJ2dv
b2cubWF0aC5pbnRlcnBvbGF0b3IuUGNoaXAxJ10sIFsnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5p
bnRlcnBvbGF0b3IuU3BsaW5lMSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgv
aW50ZXJwb2xhdG9yL3BjaGlwMV90ZXN0LmpzJywgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLlBj
aGlwMVRlc3QnXSwgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLlBjaGlwMScsICdnb29nLnRlc3Rp
bmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9pbnRlcnBvbGF0
b3Ivc3BsaW5lMS5qcycsIFsnZ29vZy5tYXRoLmludGVycG9sYXRvci5TcGxpbmUxJ10sIFsnZ29v
Zy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5pbnRlcnBv
bGF0b3IuSW50ZXJwb2xhdG9yMScsICdnb29nLm1hdGgudGRtYSddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ21hdGgvaW50ZXJwb2xhdG9yL3NwbGluZTFfdGVzdC5qcycsIFsnZ29vZy5t
YXRoLmludGVycG9sYXRvci5TcGxpbmUxVGVzdCddLCBbJ2dvb2cubWF0aC5pbnRlcnBvbGF0b3Iu
U3BsaW5lMScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnbWF0aC9saW5lLmpzJywgWydnb29nLm1hdGguTGluZSddLCBbJ2dvb2cubWF0aCcsICdn
b29nLm1hdGguQ29vcmRpbmF0ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgv
bGluZV90ZXN0LmpzJywgWydnb29nLm1hdGguTGluZVRlc3QnXSwgWydnb29nLm1hdGguQ29vcmRp
bmF0ZScsICdnb29nLm1hdGguTGluZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9sb25nLmpzJywgWydnb29nLm1hdGguTG9uZyddLCBb
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2xvbmdfdGVzdC5qcycsIFsnZ29v
Zy5tYXRoLkxvbmdUZXN0J10sIFsnZ29vZy5tYXRoLkxvbmcnLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvbWF0aC5qcycsIFsnZ29vZy5t
YXRoJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdtYXRoL21hdGhfdGVzdC5qcycsIFsnZ29vZy5tYXRoVGVzdCddLCBbJ2dvb2cu
bWF0aCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbWF0aC9tYXRyaXguanMnLCBbJ2dvb2cubWF0aC5NYXRyaXgnXSwgWydnb29nLmFycmF5Jywg
J2dvb2cubWF0aCcsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnN0cmluZyddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ21hdGgvbWF0cml4X3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5NYXRy
aXhUZXN0J10sIFsnZ29vZy5tYXRoLk1hdHJpeCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9wYXRoLmpzJywgWydnb29nLm1hdGguUGF0
aCcsICdnb29nLm1hdGguUGF0aC5TZWdtZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLm1hdGgn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3BhdGhfdGVzdC5qcycsIFsnZ29v
Zy5tYXRoLlBhdGhUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLm1hdGguQWZmaW5lVHJhbnNm
b3JtJywgJ2dvb2cubWF0aC5QYXRoJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3BhdGhzLmpzJywgWydnb29nLm1hdGgucGF0aHMnXSwg
Wydnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUGF0aCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ21hdGgvcGF0aHNfdGVzdC5qcycsIFsnZ29vZy5tYXRoLnBhdGhzVGVz
dCddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5wYXRocycsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9yYW5nZS5q
cycsIFsnZ29vZy5tYXRoLlJhbmdlJ10sIFsnZ29vZy5hc3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnbWF0aC9yYW5nZV90ZXN0LmpzJywgWydnb29nLm1hdGguUmFuZ2VUZXN0
J10sIFsnZ29vZy5tYXRoLlJhbmdlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3Jhbmdlc2V0LmpzJywgWydnb29nLm1hdGguUmFuZ2VT
ZXQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3Rv
cEl0ZXJhdGlvbicsICdnb29nLm1hdGguUmFuZ2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdtYXRoL3Jhbmdlc2V0X3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5SYW5nZVNldFRlc3QnXSwg
Wydnb29nLml0ZXInLCAnZ29vZy5tYXRoLlJhbmdlJywgJ2dvb2cubWF0aC5SYW5nZVNldCcsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9y
ZWN0LmpzJywgWydnb29nLm1hdGguUmVjdCddLCBbJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRo
LkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlNpemUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdtYXRoL3JlY3RfdGVzdC5qcycsIFsnZ29vZy5tYXRoLlJlY3RUZXN0J10sIFsnZ29vZy5t
YXRoLkJveCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUmVjdCcsICdnb29n
Lm1hdGguU2l6ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnbWF0aC9zaXplLmpzJywgWydnb29nLm1hdGguU2l6ZSddLCBbXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3NpemVfdGVzdC5qcycsIFsnZ29vZy5tYXRoLlNpemVU
ZXN0J10sIFsnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvdGRtYS5qcycsIFsnZ29vZy5tYXRoLnRkbWEnXSwg
W10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC90ZG1hX3Rlc3QuanMnLCBbJ2dv
b2cubWF0aC50ZG1hVGVzdCddLCBbJ2dvb2cubWF0aC50ZG1hJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3ZlYzIuanMnLCBbJ2dvb2cu
bWF0aC5WZWMyJ10sIFsnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC92ZWMyX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5W
ZWMyVGVzdCddLCBbJ2dvb2cubWF0aC5WZWMyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3ZlYzMuanMnLCBbJ2dvb2cubWF0aC5WZWMz
J10sIFsnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5Db29yZGluYXRlMyddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ21hdGgvdmVjM190ZXN0LmpzJywgWydnb29nLm1hdGguVmVjM1Rlc3Qn
XSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZTMnLCAnZ29vZy5tYXRoLlZlYzMnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lbW9pemUvbWVtb2l6
ZS5qcycsIFsnZ29vZy5tZW1vaXplJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J21lbW9pemUvbWVtb2l6ZV90ZXN0LmpzJywgWydnb29nLm1lbW9pemVUZXN0J10sIFsnZ29vZy5t
ZW1vaXplJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdtZXNzYWdpbmcvYWJzdHJhY3RjaGFubmVsLmpzJywgWydnb29nLm1lc3NhZ2luZy5BYnN0
cmFjdENoYW5uZWwnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5qc29uJywgJ2dvb2cubG9n
JywgJ2dvb2cubWVzc2FnaW5nLk1lc3NhZ2VDaGFubmVsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnbWVzc2FnaW5nL2Fic3RyYWN0Y2hhbm5lbF90ZXN0LmpzJywgWydnb29nLm1lc3Nh
Z2luZy5BYnN0cmFjdENoYW5uZWxUZXN0J10sIFsnZ29vZy5tZXNzYWdpbmcuQWJzdHJhY3RDaGFu
bmVsJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXN5bmMuTW9j
a0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ21lc3NhZ2luZy9idWZmZXJlZGNoYW5uZWwuanMnLCBbJ2dvb2cubWVzc2FnaW5nLkJ1
ZmZlcmVkQ2hhbm5lbCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cu
ZXZlbnRzJywgJ2dvb2cubG9nJywgJ2dvb2cubWVzc2FnaW5nLk1lc3NhZ2VDaGFubmVsJywgJ2dv
b2cubWVzc2FnaW5nLk11bHRpQ2hhbm5lbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J21lc3NhZ2luZy9idWZmZXJlZGNoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuQnVm
ZmVyZWRDaGFubmVsVGVzdCddLCBbJ2dvb2cuZGVidWcuQ29uc29sZScsICdnb29nLmRvbScsICdn
b29nLmRvbS5UYWdOYW1lJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cubWVz
c2FnaW5nLkJ1ZmZlcmVkQ2hhbm5lbCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cu
dGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXN5bmMuTW9ja0NvbnRyb2wnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdl
Q2hhbm5lbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9kZWZlcnJl
ZGNoYW5uZWwuanMnLCBbJ2dvb2cubWVzc2FnaW5nLkRlZmVycmVkQ2hhbm5lbCddLCBbJ2dvb2cu
RGlzcG9zYWJsZScsICdnb29nLm1lc3NhZ2luZy5NZXNzYWdlQ2hhbm5lbCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9kZWZlcnJlZGNoYW5uZWxfdGVzdC5qcycsIFsn
Z29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJy
ZWQnLCAnZ29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsJywgJ2dvb2cudGVzdGluZy5Nb2Nr
Q29udHJvbCcsICdnb29nLnRlc3RpbmcuYXN5bmMuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9sb2dnZXJjbGllbnQuanMnLCBb
J2dvb2cubWVzc2FnaW5nLkxvZ2dlckNsaWVudCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29n
LmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlciddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9sb2dnZXJjbGllbnRfdGVzdC5q
cycsIFsnZ29vZy5tZXNzYWdpbmcuTG9nZ2VyQ2xpZW50VGVzdCddLCBbJ2dvb2cuZGVidWcnLCAn
Z29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5tZXNzYWdpbmcuTG9nZ2VyQ2xpZW50JywgJ2dvb2cu
dGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGlu
Zy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnbWVzc2FnaW5nL2xvZ2dlcnNlcnZlci5qcycsIFsnZ29vZy5tZXNzYWdpbmcuTG9nZ2Vy
U2VydmVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVs
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL2xvZ2dlcnNlcnZlcl90
ZXN0LmpzJywgWydnb29nLm1lc3NhZ2luZy5Mb2dnZXJTZXJ2ZXJUZXN0J10sIFsnZ29vZy5kZWJ1
Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cubG9nJywgJ2dvb2cubG9n
LkxldmVsJywgJ2dvb2cubWVzc2FnaW5nLkxvZ2dlclNlcnZlcicsICdnb29nLnRlc3RpbmcuTW9j
a0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9tZXNzYWdlY2hhbm5lbC5qcycs
IFsnZ29vZy5tZXNzYWdpbmcuTWVzc2FnZUNoYW5uZWwnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnbWVzc2FnaW5nL21lc3NhZ2luZy5qcycsIFsnZ29vZy5tZXNzYWdpbmcnXSwg
W10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL21lc3NhZ2luZ190ZXN0
LmpzJywgWydnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbFRlc3QnXSwg
Wydnb29nLm1lc3NhZ2luZycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9tdWx0aWNoYW5uZWwuanMn
LCBbJ2dvb2cubWVzc2FnaW5nLk11bHRpQ2hhbm5lbCcsICdnb29nLm1lc3NhZ2luZy5NdWx0aUNo
YW5uZWwuVmlydHVhbENoYW5uZWwnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5sb2cnLCAn
Z29vZy5tZXNzYWdpbmcuTWVzc2FnZUNoYW5uZWwnLCAnZ29vZy5vYmplY3QnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvbXVsdGljaGFubmVsX3Rlc3QuanMnLCBbJ2dv
b2cubWVzc2FnaW5nLk11bHRpQ2hhbm5lbFRlc3QnXSwgWydnb29nLm1lc3NhZ2luZy5NdWx0aUNo
YW5uZWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5qc3VuaXQn
LCAnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUNoYW5uZWwnLCAnZ29vZy50ZXN0
aW5nLm1vY2ttYXRjaGVycy5JZ25vcmVBcmd1bWVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ21lc3NhZ2luZy9wb3J0Y2FsbGVyLmpzJywgWydnb29nLm1lc3NhZ2luZy5Qb3J0Q2Fs
bGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5t
ZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsJywgJ2dvb2cubWVzc2FnaW5nLlBvcnRDaGFubmVsJywg
J2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywgJ2dvb2cub2JqZWN0J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRjYWxsZXJfdGVzdC5qcycsIFsnZ29vZy5t
ZXNzYWdpbmcuUG9ydENhbGxlclRlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdn
b29nLm1lc3NhZ2luZy5Qb3J0Q2FsbGVyJywgJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywg
J2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cu
dGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJ10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRjaGFubmVsLmpzJywgWydnb29nLm1lc3NhZ2luZy5Q
b3J0Q2hhbm5lbCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLkRl
ZmVycmVkJywgJ2dvb2cuZGVidWcnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRU
eXBlJywgJ2dvb2cuanNvbicsICdnb29nLmxvZycsICdnb29nLm1lc3NhZ2luZy5BYnN0cmFjdENo
YW5uZWwnLCAnZ29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsJywgJ2dvb2cub2JqZWN0Jywg
J2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnbWVzc2FnaW5nL3BvcnRuZXR3b3JrLmpzJywgWydnb29nLm1lc3NhZ2luZy5Qb3J0TmV0
d29yayddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydG9w
ZXJhdG9yLmpzJywgWydnb29nLm1lc3NhZ2luZy5Qb3J0T3BlcmF0b3InXSwgWydnb29nLkRpc3Bv
c2FibGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cubG9nJywgJ2dvb2cubWVzc2FnaW5nLlBvcnRD
aGFubmVsJywgJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywgJ2dvb2cub2JqZWN0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRvcGVyYXRvcl90ZXN0Lmpz
JywgWydnb29nLm1lc3NhZ2luZy5Qb3J0T3BlcmF0b3JUZXN0J10sIFsnZ29vZy5tZXNzYWdpbmcu
UG9ydE5ldHdvcmsnLCAnZ29vZy5tZXNzYWdpbmcuUG9ydE9wZXJhdG9yJywgJ2dvb2cudGVzdGlu
Zy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVs
JywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VQb3J0J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3Jlc3BvbmRpbmdjaGFubmVsLmpzJywgWydnb29n
Lm1lc3NhZ2luZy5SZXNwb25kaW5nQ2hhbm5lbCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29n
LmxvZycsICdnb29nLm1lc3NhZ2luZy5NdWx0aUNoYW5uZWwnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdtZXNzYWdpbmcvcmVzcG9uZGluZ2NoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5t
ZXNzYWdpbmcuUmVzcG9uZGluZ0NoYW5uZWxUZXN0J10sIFsnZ29vZy5tZXNzYWdpbmcuUmVzcG9u
ZGluZ0NoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUNoYW5uZWwnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvdGVzdGRhdGEvcG9ydGNoYW5uZWxf
d29ya2VyLmpzJywgWydnb29nLm1lc3NhZ2luZy50ZXN0ZGF0YS5wb3J0Y2hhbm5lbF93b3JrZXIn
XSwgWydnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ21lc3NhZ2luZy90ZXN0ZGF0YS9wb3J0bmV0d29ya193b3JrZXIxLmpzJywgWydnb29n
Lm1lc3NhZ2luZy50ZXN0ZGF0YS5wb3J0bmV0d29ya193b3JrZXIxJ10sIFsnZ29vZy5tZXNzYWdp
bmcuUG9ydENhbGxlcicsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy90ZXN0ZGF0YS9wb3J0bmV0d29ya193b3JrZXIy
LmpzJywgWydnb29nLm1lc3NhZ2luZy50ZXN0ZGF0YS5wb3J0bmV0d29ya193b3JrZXIyJ10sIFsn
Z29vZy5tZXNzYWdpbmcuUG9ydENhbGxlcicsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9hYnN0cmFjdG1vZHVsZWxvYWRl
ci5qcycsIFsnZ29vZy5tb2R1bGUuQWJzdHJhY3RNb2R1bGVMb2FkZXInXSwgWydnb29nLm1vZHVs
ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9iYXNlbW9kdWxlLmpzJywg
Wydnb29nLm1vZHVsZS5CYXNlTW9kdWxlJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cubW9k
dWxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL2xvYWRlci5qcycsIFsn
Z29vZy5tb2R1bGUuTG9hZGVyJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cu
YXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cubW9kdWxlJywg
J2dvb2cub2JqZWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL21vZHVs
ZS5qcycsIFsnZ29vZy5tb2R1bGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bW9kdWxlL21vZHVsZWluZm8uanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZUluZm8nXSwgWydnb29n
LkRpc3Bvc2FibGUnLCAnZ29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbicsICdnb29nLmZ1bmN0aW9u
cycsICdnb29nLm1vZHVsZScsICdnb29nLm1vZHVsZS5CYXNlTW9kdWxlJywgJ2dvb2cubW9kdWxl
Lk1vZHVsZUxvYWRDYWxsYmFjayddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21vZHVs
ZS9tb2R1bGVpbmZvX3Rlc3QuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZUluZm9UZXN0J10sIFsn
Z29vZy5tb2R1bGUuQmFzZU1vZHVsZScsICdnb29nLm1vZHVsZS5Nb2R1bGVJbmZvJywgJ2dvb2cu
dGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVsb2FkY2FsbGJhY2suanMnLCBbJ2dvb2cubW9k
dWxlLk1vZHVsZUxvYWRDYWxsYmFjayddLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5
JywgJ2dvb2cuZGVidWcuZXJyb3JIYW5kbGVyV2Vha0RlcCcsICdnb29nLm1vZHVsZSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVsb2FkY2FsbGJhY2tfdGVzdC5q
cycsIFsnZ29vZy5tb2R1bGUuTW9kdWxlTG9hZENhbGxiYWNrVGVzdCddLCBbJ2dvb2cuZGVidWcu
RXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZnVu
Y3Rpb25zJywgJ2dvb2cubW9kdWxlLk1vZHVsZUxvYWRDYWxsYmFjaycsICdnb29nLnRlc3Rpbmcu
anN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVsb2FkZXIuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVs
ZUxvYWRlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cycsICdn
b29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVu
dHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubG9n
JywgJ2dvb2cubW9kdWxlLkFic3RyYWN0TW9kdWxlTG9hZGVyJywgJ2dvb2cubmV0LkJ1bGtMb2Fk
ZXInLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LmpzbG9hZGVyJywgJ2dvb2cudXNl
ckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdtb2R1bGUvbW9kdWxlbG9hZGVyX3Rlc3QuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVs
ZUxvYWRlclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05h
bWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5tb2R1bGUuTW9kdWxl
TG9hZGVyJywgJ2dvb2cubW9kdWxlLk1vZHVsZU1hbmFnZXInLCAnZ29vZy5uZXQuQnVsa0xvYWRl
cicsICdnb29nLm5ldC5YbWxIdHRwJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Bc3lu
Y1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGlu
Zy5ldmVudHMuRXZlbnRPYnNlcnZlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNl
ckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL21vZHVsZW1hbmFn
ZXIuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZU1hbmFnZXInLCAnZ29vZy5tb2R1bGUuTW9kdWxl
TWFuYWdlci5DYWxsYmFja1R5cGUnLCAnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdlci5GYWlsdXJl
VHlwZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycs
ICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGVidWcuVHJhY2UnLCAnZ29vZy5kaXNwb3Nl
JywgJ2dvb2cubG9nJywgJ2dvb2cubW9kdWxlJywgJ2dvb2cubW9kdWxlLk1vZHVsZUluZm8nLCAn
Z29vZy5tb2R1bGUuTW9kdWxlTG9hZENhbGxiYWNrJywgJ2dvb2cub2JqZWN0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL21vZHVsZW1hbmFnZXJfdGVzdC5qcycsIFsnZ29v
Zy5tb2R1bGUuTW9kdWxlTWFuYWdlclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZnVuY3Rp
b25zJywgJ2dvb2cubW9kdWxlLkJhc2VNb2R1bGUnLCAnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdl
cicsICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3Rp
bmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ21vZHVsZS90ZXN0ZGF0YS9tb2RBXzEuanMnLCBbJ2dvb2cubW9kdWxl
LnRlc3RkYXRhLm1vZEFfMSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1
bGUvdGVzdGRhdGEvbW9kQV8yLmpzJywgWydnb29nLm1vZHVsZS50ZXN0ZGF0YS5tb2RBXzInXSwg
Wydnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbW9kdWxlL3Rlc3RkYXRhL21vZEJfMS5qcycsIFsnZ29vZy5tb2R1bGUudGVzdGRhdGEubW9k
Ql8xJ10sIFsnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdlciddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ25ldC9icm93c2VyY2hhbm5lbC5qcycsIFsnZ29vZy5uZXQuQnJvd3NlckNoYW5u
ZWwnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuRXJyb3InLCAnZ29vZy5uZXQuQnJvd3NlckNo
YW5uZWwuRXZlbnQnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuSGFuZGxlcicsICdnb29nLm5l
dC5Ccm93c2VyQ2hhbm5lbC5Mb2dTYXZlcicsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5RdWV1
ZWRNYXAnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuU2VydmVyUmVhY2hhYmlsaXR5JywgJ2dv
b2cubmV0LkJyb3dzZXJDaGFubmVsLlNlcnZlclJlYWNoYWJpbGl0eUV2ZW50JywgJ2dvb2cubmV0
LkJyb3dzZXJDaGFubmVsLlN0YXQnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuU3RhdEV2ZW50
JywgJ2dvb2cubmV0LkJyb3dzZXJDaGFubmVsLlN0YXRlJywgJ2dvb2cubmV0LkJyb3dzZXJDaGFu
bmVsLlRpbWluZ0V2ZW50J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2Vy
dHMnLCAnZ29vZy5kZWJ1Zy5UZXh0Rm9ybWF0dGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dv
b2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuanNvbicsICdnb29nLmpzb24uRXZhbEpzb25Q
cm9jZXNzb3InLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQuQnJvd3NlclRlc3RDaGFubmVsJywgJ2dv
b2cubmV0LkNoYW5uZWxEZWJ1ZycsICdnb29nLm5ldC5DaGFubmVsUmVxdWVzdCcsICdnb29nLm5l
dC5YaHJJbycsICdnb29nLm5ldC50bXBuZXR3b3JrJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3Ry
aW5nJywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuQ2lyY3VsYXJCdWZmZXInXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvYnJvd3NlcmNoYW5uZWxfdGVzdC5qcycsIFsn
Z29vZy5uZXQuQnJvd3NlckNoYW5uZWxUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5
JywgJ2dvb2cuZG9tJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuanNvbicsICdnb29nLm5ldC5C
cm93c2VyQ2hhbm5lbCcsICdnb29nLm5ldC5DaGFubmVsRGVidWcnLCAnZ29vZy5uZXQuQ2hhbm5l
bFJlcXVlc3QnLCAnZ29vZy5uZXQudG1wbmV0d29yaycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dv
b2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAn
Z29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rp
bmcucmVjb3JkRnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvYnJv
d3NlcnRlc3RjaGFubmVsLmpzJywgWydnb29nLm5ldC5Ccm93c2VyVGVzdENoYW5uZWwnXSwgWydn
b29nLmpzb24uRXZhbEpzb25Qcm9jZXNzb3InLCAnZ29vZy5uZXQuQ2hhbm5lbFJlcXVlc3QnLCAn
Z29vZy5uZXQuQ2hhbm5lbFJlcXVlc3QuRXJyb3InLCAnZ29vZy5uZXQudG1wbmV0d29yaycsICdn
b29nLnN0cmluZy5QYXJzZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCduZXQvYnVsa2xvYWRlci5qcycsIFsnZ29vZy5uZXQuQnVsa0xvYWRlciddLCBb
J2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdn
b29nLmxvZycsICdnb29nLm5ldC5CdWxrTG9hZGVySGVscGVyJywgJ2dvb2cubmV0LkV2ZW50VHlw
ZScsICdnb29nLm5ldC5YaHJJbyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9i
dWxrbG9hZGVyX3Rlc3QuanMnLCBbJ2dvb2cubmV0LkJ1bGtMb2FkZXJUZXN0J10sIFsnZ29vZy5l
dmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cubmV0LkJ1bGtM
b2FkZXInLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9i
dWxrbG9hZGVyaGVscGVyLmpzJywgWydnb29nLm5ldC5CdWxrTG9hZGVySGVscGVyJ10sIFsnZ29v
Zy5EaXNwb3NhYmxlJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bmV0L2NoYW5uZWxkZWJ1Zy5qcycsIFsnZ29vZy5uZXQuQ2hhbm5lbERlYnVnJ10sIFsnZ29vZy5q
c29uJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2NoYW5u
ZWxyZXF1ZXN0LmpzJywgWydnb29nLm5ldC5DaGFubmVsUmVxdWVzdCcsICdnb29nLm5ldC5DaGFu
bmVsUmVxdWVzdC5FcnJvciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3luYy5UaHJvdHRsZScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLm5l
dC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhtbEh0dHAnLCAn
Z29vZy5vYmplY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCduZXQvY2hhbm5lbHJlcXVlc3RfdGVzdC5qcycsIFsnZ29vZy5uZXQuQ2hhbm5lbFJlcXVl
c3RUZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5uZXQuQnJvd3Nl
ckNoYW5uZWwnLCAnZ29vZy5uZXQuQ2hhbm5lbERlYnVnJywgJ2dvb2cubmV0LkNoYW5uZWxSZXF1
ZXN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVw
bGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubmV0LlhocklvJywg
J2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ25ldC9jb29raWVzLmpzJywgWydnb29nLm5ldC5Db29raWVzJywgJ2dvb2cubmV0LmNvb2tp
ZXMnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Nvb2tpZXNfdGVzdC5q
cycsIFsnZ29vZy5uZXQuY29va2llc1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubmV0LmNv
b2tpZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9jb3JzeG1saHR0cGZhY3Rv
cnkuanMnLCBbJ2dvb2cubmV0LkNvcnNYbWxIdHRwRmFjdG9yeScsICdnb29nLm5ldC5JZUNvcnNY
aHJBZGFwdGVyJ10sIFsnZ29vZy5uZXQuSHR0cFN0YXR1cycsICdnb29nLm5ldC5YaHJMaWtlJywg
J2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCduZXQvY29yc3htbGh0dHBmYWN0b3J5X3Rlc3QuanMnLCBbJ2dv
b2cubmV0LkNvcnNYbWxIdHRwRmFjdG9yeVRlc3QnXSwgWydnb29nLm5ldC5Db3JzWG1sSHR0cEZh
Y3RvcnknLCAnZ29vZy5uZXQuSWVDb3JzWGhyQWRhcHRlcicsICdnb29nLnRlc3RpbmcuanN1bml0
JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Ny
b3NzZG9tYWlucnBjLmpzJywgWydnb29nLm5ldC5Dcm9zc0RvbWFpblJwYyddLCBbJ2dvb2cuVXJp
JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29n
LmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5
cGUnLCAnZ29vZy5odG1sLmxlZ2FjeWNvbnZlcnNpb25zJywgJ2dvb2cuanNvbicsICdnb29nLmxv
ZycsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuSHR0cFN0YXR1cycsICdnb29nLnN0
cmluZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25l
dC9jcm9zc2RvbWFpbnJwY190ZXN0LmpzJywgWydnb29nLm5ldC5Dcm9zc0RvbWFpblJwY1Rlc3Qn
XSwgWydnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm5ldC5Dcm9zc0RvbWFpblJw
YycsICdnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuanN1bml0Jywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Vycm9y
Y29kZS5qcycsIFsnZ29vZy5uZXQuRXJyb3JDb2RlJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ25ldC9ldmVudHR5cGUuanMnLCBbJ2dvb2cubmV0LkV2ZW50VHlwZSddLCBbXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvZmlsZWRvd25sb2FkZXIuanMnLCBbJ2dv
b2cubmV0LkZpbGVEb3dubG9hZGVyJywgJ2dvb2cubmV0LkZpbGVEb3dubG9hZGVyLkVycm9yJ10s
IFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmFzeW5jLkRlZmVycmVk
JywgJ2dvb2cuY3J5cHQuaGFzaDMyJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5ldmVudHMn
LCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZnMnLCAnZ29vZy5mcy5EaXJlY3Rv
cnlFbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVNhdmVyJywgJ2dvb2cubmV0
LkV2ZW50VHlwZScsICdnb29nLm5ldC5YaHJJbycsICdnb29nLm5ldC5YaHJJb1Bvb2wnLCAnZ29v
Zy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvZmlsZWRvd25sb2Fk
ZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuRmlsZURvd25sb2FkZXJUZXN0J10sIFsnZ29vZy5mcy5F
cnJvcicsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRmlsZURvd25sb2FkZXInLCAn
Z29vZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0
aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmZzJywgJ2dvb2cudGVzdGluZy5m
cy5GaWxlU3lzdGVtJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLm5ldC5Y
aHJJb1Bvb2wnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaHR0cHN0YXR1cy5q
cycsIFsnZ29vZy5uZXQuSHR0cFN0YXR1cyddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCduZXQvaWZyYW1lX3hocl90ZXN0LmpzJywgWydnb29nLm5ldC5pZnJhbWVYaHJUZXN0J10s
IFsnZ29vZy5UaW1lcicsICdnb29nLmRlYnVnLkNvbnNvbGUnLCAnZ29vZy5kZWJ1Zy5Mb2dNYW5h
Z2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVu
dHMnLCAnZ29vZy5uZXQuSWZyYW1lSW8nLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5n
LkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pZnJhbWVpby5qcycsIFsnZ29vZy5u
ZXQuSWZyYW1lSW8nLCAnZ29vZy5uZXQuSWZyYW1lSW8uSW5jcmVtZW50YWxEYXRhRXZlbnQnXSwg
Wydnb29nLlRpbWVyJywgJ2dvb2cuVXJpJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywg
J2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC51
bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmpzb24nLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cu
TGV2ZWwnLCAnZ29vZy5uZXQuRXJyb3JDb2RlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29n
LnJlZmxlY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJ1
Y3RzJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0
L2lmcmFtZWlvX2RpZmZlcmVudF9iYXNlX3Rlc3QuanMnLCBbJ2dvb2cubmV0LmlmcmFtZUlvRGlm
ZmVyZW50QmFzZVRlc3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLm5ldC5FdmVudFR5cGUnLCAn
Z29vZy5uZXQuSWZyYW1lSW8nLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pZnJhbWVp
b190ZXN0LmpzJywgWydnb29nLm5ldC5JZnJhbWVJb1Rlc3QnXSwgWydnb29nLmRlYnVnJywgJ2dv
b2cuZGVidWcuRGl2Q29uc29sZScsICdnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5kb20n
LCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5
cGUnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnLCAnZ29vZy5uZXQuSWZyYW1lSW8nLCAn
Z29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCduZXQvaWZyYW1lbG9hZG1vbml0b3IuanMnLCBbJ2dvb2cubmV0LklmcmFtZUxvYWRN
b25pdG9yJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRU
YXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2lmcmFtZWxvYWRtb25pdG9yX3Rlc3QuanMnLCBb
J2dvb2cubmV0LklmcmFtZUxvYWRNb25pdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9t
LlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5uZXQuSWZyYW1lTG9hZE1vbml0b3InLCAn
Z29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pbWFnZWxvYWRlci5qcycsIFsnZ29vZy5uZXQu
SW1hZ2VMb2FkZXInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05h
bWUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0
JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5v
YmplY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdu
ZXQvaW1hZ2Vsb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuSW1hZ2VMb2FkZXJUZXN0J10sIFsn
Z29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuZGlzcG9zZScsICdnb29nLmV2ZW50cycs
ICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQu
RXZlbnRUeXBlJywgJ2dvb2cubmV0LkltYWdlTG9hZGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cu
c3RyaW5nJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnbmV0L2lwYWRkcmVzcy5qcycsIFsnZ29vZy5uZXQuSXBBZGRyZXNzJywgJ2dvb2cu
bmV0LklwdjRBZGRyZXNzJywgJ2dvb2cubmV0LklwdjZBZGRyZXNzJ10sIFsnZ29vZy5hcnJheScs
ICdnb29nLm1hdGguSW50ZWdlcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZyddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pcGFkZHJlc3NfdGVzdC5qcycsIFsnZ29vZy5u
ZXQuSXBBZGRyZXNzVGVzdCddLCBbJ2dvb2cubWF0aC5JbnRlZ2VyJywgJ2dvb2cubmV0LklwQWRk
cmVzcycsICdnb29nLm5ldC5JcHY0QWRkcmVzcycsICdnb29nLm5ldC5JcHY2QWRkcmVzcycsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2pz
bG9hZGVyLmpzJywgWydnb29nLm5ldC5qc2xvYWRlcicsICdnb29nLm5ldC5qc2xvYWRlci5FcnJv
cicsICdnb29nLm5ldC5qc2xvYWRlci5FcnJvckNvZGUnLCAnZ29vZy5uZXQuanNsb2FkZXIuT3B0
aW9ucyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRlYnVn
LkVycm9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCduZXQvanNsb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuanNsb2FkZXJU
ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cubmV0LmpzbG9hZGVyJywgJ2dvb2cubmV0LmpzbG9hZGVyLkVycm9yQ29kZScsICdnb29nLnRl
c3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbmV0L2pzb25wLmpzJywgWydnb29nLm5ldC5Kc29ucCddLCBbJ2dv
b2cuVXJpJywgJ2dvb2cubmV0LmpzbG9hZGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbmV0L2pzb25wX3Rlc3QuanMnLCBbJ2dvb2cubmV0Lkpzb25wVGVzdCddLCBbJ2dvb2cubmV0
Lkpzb25wJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudXNlckFnZW50J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L21vY2tpZnJhbWVpby5qcycsIFsnZ29v
Zy5uZXQuTW9ja0lGcmFtZUlvJ10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5q
c29uJywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5u
ZXQuSWZyYW1lSW8nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvbXVsdGlpZnJh
bWVsb2FkbW9uaXRvci5qcycsIFsnZ29vZy5uZXQuTXVsdGlJZnJhbWVMb2FkTW9uaXRvciddLCBb
J2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0LklmcmFtZUxvYWRNb25pdG9yJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbmV0L211bHRpaWZyYW1lbG9hZG1vbml0b3JfdGVzdC5qcycsIFsn
Z29vZy5uZXQuTXVsdGlJZnJhbWVMb2FkTW9uaXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cubmV0LklmcmFtZUxvYWRNb25pdG9yJywgJ2dvb2cubmV0Lk11
bHRpSWZyYW1lTG9hZE1vbml0b3InLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC9uZXR3
b3Jrc3RhdHVzbW9uaXRvci5qcycsIFsnZ29vZy5uZXQuTmV0d29ya1N0YXR1c01vbml0b3InXSwg
Wydnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bmV0L25ldHdvcmt0ZXN0ZXIuanMnLCBbJ2dvb2cubmV0Lk5ldHdvcmtUZXN0ZXInXSwgWydnb29n
LlRpbWVyJywgJ2dvb2cuVXJpJywgJ2dvb2cubG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnbmV0L25ldHdvcmt0ZXN0ZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuTmV0d29ya1Rlc3Rl
clRlc3QnXSwgWydnb29nLlVyaScsICdnb29nLm5ldC5OZXR3b3JrVGVzdGVyJywgJ2dvb2cudGVz
dGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ25ldC90ZXN0ZGF0YS9qc2xvYWRlcl90ZXN0MS5qcycsIFsnZ29vZy5uZXQu
dGVzdGRhdGEuanNsb2FkZXJfdGVzdDEnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnbmV0L3Rlc3RkYXRhL2pzbG9hZGVyX3Rlc3QyLmpzJywgWydnb29nLm5ldC50ZXN0ZGF0YS5q
c2xvYWRlcl90ZXN0MiddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvdGVz
dGRhdGEvanNsb2FkZXJfdGVzdDMuanMnLCBbJ2dvb2cubmV0LnRlc3RkYXRhLmpzbG9hZGVyX3Rl
c3QzJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC90ZXN0ZGF0YS9qc2xv
YWRlcl90ZXN0NC5qcycsIFsnZ29vZy5uZXQudGVzdGRhdGEuanNsb2FkZXJfdGVzdDQnXSwgW10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3RtcG5ldHdvcmsuanMnLCBbJ2dvb2cu
bmV0LnRtcG5ldHdvcmsnXSwgWydnb29nLlVyaScsICdnb29nLm5ldC5DaGFubmVsRGVidWcnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvd2Vic29ja2V0LmpzJywgWydnb29nLm5l
dC5XZWJTb2NrZXQnLCAnZ29vZy5uZXQuV2ViU29ja2V0LkVycm9yRXZlbnQnLCAnZ29vZy5uZXQu
V2ViU29ja2V0LkV2ZW50VHlwZScsICdnb29nLm5ldC5XZWJTb2NrZXQuTWVzc2FnZUV2ZW50J10s
IFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVn
aXN0cnknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMu
RXZlbnRUYXJnZXQnLCAnZ29vZy5sb2cnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdu
ZXQvd2Vic29ja2V0X3Rlc3QuanMnLCBbJ2dvb2cubmV0LldlYlNvY2tldFRlc3QnXSwgWydnb29n
LmRlYnVnLkVudHJ5UG9pbnRNb25pdG9yJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dv
b2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rp
b25zJywgJ2dvb2cubmV0LldlYlNvY2tldCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dv
b2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29v
Zy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bmV0L3dyYXBwZXJ4bWxodHRwZmFjdG9yeS5qcycsIFsnZ29vZy5uZXQuV3JhcHBlclhtbEh0dHBG
YWN0b3J5J10sIFsnZ29vZy5uZXQuWGhyTGlrZScsICdnb29nLm5ldC5YbWxIdHRwRmFjdG9yeSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJpby5qcycsIFsnZ29vZy5uZXQu
WGhySW8nLCAnZ29vZy5uZXQuWGhySW8uUmVzcG9uc2VUeXBlJ10sIFsnZ29vZy5UaW1lcicsICdn
b29nLmFycmF5JywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZXZlbnRz
LkV2ZW50VGFyZ2V0JywgJ2dvb2cuanNvbicsICdnb29nLmxvZycsICdnb29nLm5ldC5FcnJvckNv
ZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0Lkh0dHBTdGF0dXMnLCAnZ29vZy5u
ZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMn
LCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnVyaS51dGlscycsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJpb190ZXN0LmpzJywgWydnb29n
Lm5ldC5YaHJJb1Rlc3QnXSwgWydnb29nLlVyaScsICdnb29nLmRlYnVnLkVudHJ5UG9pbnRNb25p
dG9yJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJl
Z2lzdHJ5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubmV0LkV2ZW50
VHlwZScsICdnb29nLm5ldC5XcmFwcGVyWG1sSHR0cEZhY3RvcnknLCAnZ29vZy5uZXQuWGhySW8n
LCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29n
LnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dv
b2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJbycsICdnb29nLnRlc3Rp
bmcucmVjb3JkRnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveGhy
aW9wb29sLmpzJywgWydnb29nLm5ldC5YaHJJb1Bvb2wnXSwgWydnb29nLm5ldC5YaHJJbycsICdn
b29nLnN0cnVjdHMuUHJpb3JpdHlQb29sJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bmV0L3hocmxpa2UuanMnLCBbJ2dvb2cubmV0Llhockxpa2UnXSwgW10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnbmV0L3hocm1hbmFnZXIuanMnLCBbJ2dvb2cubmV0Llhock1hbmFnZXIn
LCAnZ29vZy5uZXQuWGhyTWFuYWdlci5FdmVudCcsICdnb29nLm5ldC5YaHJNYW5hZ2VyLlJlcXVl
c3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5F
dmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5uZXQuRXJyb3JD
b2RlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5YaHJJbycsICdnb29nLm5ldC5Y
aHJJb1Bvb2wnLCAnZ29vZy5zdHJ1Y3RzLk1hcCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ25ldC94aHJtYW5hZ2VyX3Rlc3QuanMnLCBbJ2dvb2cubmV0Llhock1hbmFnZXJUZXN0J10s
IFsnZ29vZy5ldmVudHMnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhocklvJywg
J2dvb2cubmV0Llhock1hbmFnZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rp
bmcubmV0LlhocklvUG9vbCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveG1saHR0cC5qcycsIFsnZ29vZy5uZXQuRGVmYXVs
dFhtbEh0dHBGYWN0b3J5JywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5uZXQuWG1sSHR0cC5P
cHRpb25UeXBlJywgJ2dvb2cubmV0LlhtbEh0dHAuUmVhZHlTdGF0ZScsICdnb29nLm5ldC5YbWxI
dHRwRGVmaW5lcyddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLm5ldC5XcmFwcGVyWG1sSHR0cEZh
Y3RvcnknLCAnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCduZXQveG1saHR0cGZhY3RvcnkuanMnLCBbJ2dvb2cubmV0LlhtbEh0dHBGYWN0b3J5
J10sIFsnZ29vZy5uZXQuWGhyTGlrZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25l
dC94cGMvY3Jvc3NwYWdlY2hhbm5lbC5qcycsIFsnZ29vZy5uZXQueHBjLkNyb3NzUGFnZUNoYW5u
ZWwnXSwgWydnb29nLlVyaScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuYXN5bmMuRGVs
YXknLCAnZ29vZy5kaXNwb3NlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29v
Zy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50
VHlwZScsICdnb29nLmpzb24nLCAnZ29vZy5sb2cnLCAnZ29vZy5tZXNzYWdpbmcuQWJzdHJhY3RD
aGFubmVsJywgJ2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cu
bmV0LnhwYy5DaGFubmVsU3RhdGVzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9s
ZScsICdnb29nLm5ldC54cGMuRGlyZWN0VHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5GcmFtZUVs
ZW1lbnRNZXRob2RUcmFuc3BvcnQnLCAnZ29vZy5uZXQueHBjLklmcmFtZVBvbGxpbmdUcmFuc3Bv
cnQnLCAnZ29vZy5uZXQueHBjLklmcmFtZVJlbGF5VHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5O
YXRpdmVNZXNzYWdpbmdUcmFuc3BvcnQnLCAnZ29vZy5uZXQueHBjLk5peFRyYW5zcG9ydCcsICdn
b29nLm5ldC54cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy5uZXQueHBjLlVyaUNmZ0ZpZWxkcycs
ICdnb29nLnN0cmluZycsICdnb29nLnVyaS51dGlscycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvY3Jvc3NwYWdlY2hhbm5lbF90ZXN0Lmpz
JywgWydnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFRlc3QnXSwgWydnb29nLkRpc3Bvc2Fi
bGUnLCAnZ29vZy5VcmknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRvbScsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxvZycs
ICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxk
cycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbCcsICdnb29nLm5ldC54cGMuQ3Jvc3NQ
YWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydFR5cGVzJywgJ2dvb2cub2Jq
ZWN0JywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0
eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCduZXQveHBjL2Nyb3NzcGFnZWNoYW5uZWxyb2xlLmpzJywgWydnb29nLm5ldC54cGMu
Q3Jvc3NQYWdlQ2hhbm5lbFJvbGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
bmV0L3hwYy9kaXJlY3R0cmFuc3BvcnQuanMnLCBbJ2dvb2cubmV0LnhwYy5EaXJlY3RUcmFuc3Bv
cnQnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5ldmVudHMu
RXZlbnRIYW5kbGVyJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMu
Q2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScsICdnb29nLm5l
dC54cGMuVHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnRUeXBlcycsICdnb29nLm9i
amVjdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvZGlyZWN0dHJhbnNw
b3J0X3Rlc3QuanMnLCBbJ2dvb2cubmV0LnhwYy5EaXJlY3RUcmFuc3BvcnRUZXN0J10sIFsnZ29v
Zy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIn
LCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnLCAnZ29vZy5uZXQueHBjJywgJ2dvb2cubmV0
LnhwYy5DZmdGaWVsZHMnLCAnZ29vZy5uZXQueHBjLkNyb3NzUGFnZUNoYW5uZWwnLCAnZ29vZy5u
ZXQueHBjLkNyb3NzUGFnZUNoYW5uZWxSb2xlJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnRUeXBl
cycsICdnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9mcmFtZWVsZW1lbnRtZXRob2R0
cmFuc3BvcnQuanMnLCBbJ2dvb2cubmV0LnhwYy5GcmFtZUVsZW1lbnRNZXRob2RUcmFuc3BvcnQn
XSwgWydnb29nLmxvZycsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNyb3NzUGFnZUNo
YW5uZWxSb2xlJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnQnLCAnZ29vZy5uZXQueHBjLlRyYW5z
cG9ydFR5cGVzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9pZnJhbWVw
b2xsaW5ndHJhbnNwb3J0LmpzJywgWydnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9y
dCcsICdnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydC5SZWNlaXZlcicsICdnb29n
Lm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydC5TZW5kZXInXSwgWydnb29nLmFycmF5Jywg
J2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2
ZWwnLCAnZ29vZy5uZXQueHBjJywgJ2dvb2cubmV0LnhwYy5DZmdGaWVsZHMnLCAnZ29vZy5uZXQu
eHBjLkNyb3NzUGFnZUNoYW5uZWxSb2xlJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnQnLCAnZ29v
Zy5uZXQueHBjLlRyYW5zcG9ydFR5cGVzJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9pZnJhbWVwb2xsaW5ndHJhbnNwb3J0X3Rlc3QuanMn
LCBbJ2dvb2cubmV0LnhwYy5JZnJhbWVQb2xsaW5nVHJhbnNwb3J0VGVzdCddLCBbJ2dvb2cuVGlt
ZXInLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1bmN0aW9ucycsICdn
b29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsJywg
J2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScsICdnb29nLm5ldC54cGMuVHJhbnNw
b3J0VHlwZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29n
LnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvaWZyYW1lcmVsYXl0cmFuc3BvcnQuanMnLCBb
J2dvb2cubmV0LnhwYy5JZnJhbWVSZWxheVRyYW5zcG9ydCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cu
ZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cycsICdnb29nLmh0bWwu
U2FmZUh0bWwnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnLCAnZ29vZy5uZXQueHBjJywg
J2dvb2cubmV0LnhwYy5DZmdGaWVsZHMnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydCcsICdnb29n
Lm5ldC54cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29u
c3QnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQv
eHBjL25hdGl2ZW1lc3NhZ2luZ3RyYW5zcG9ydC5qcycsIFsnZ29vZy5uZXQueHBjLk5hdGl2ZU1l
c3NhZ2luZ1RyYW5zcG9ydCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cu
YXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVy
JywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hh
bm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydCcsICdnb29nLm5ldC54cGMuVHJhbnNw
b3J0VHlwZXMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL25hdGl2ZW1l
c3NhZ2luZ3RyYW5zcG9ydF90ZXN0LmpzJywgWydnb29nLm5ldC54cGMuTmF0aXZlTWVzc2FnaW5n
VHJhbnNwb3J0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0Lnhw
YycsICdnb29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFu
bmVsJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScsICdnb29nLm5ldC54cGMu
TmF0aXZlTWVzc2FnaW5nVHJhbnNwb3J0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL25peHRyYW5zcG9ydC5qcycsIFsnZ29vZy5u
ZXQueHBjLk5peFRyYW5zcG9ydCddLCBbJ2dvb2cubG9nJywgJ2dvb2cubmV0LnhwYycsICdnb29n
Lm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScs
ICdnb29nLm5ldC54cGMuVHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnRUeXBlcycs
ICdnb29nLnJlZmxlY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL3Jl
bGF5LmpzJywgWydnb29nLm5ldC54cGMucmVsYXknXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnbmV0L3hwYy90cmFuc3BvcnQuanMnLCBbJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnQn
XSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5kb20nLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9y
dE5hbWVzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy94cGMuanMnLCBb
J2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5D
aGFubmVsU3RhdGVzJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnROYW1lcycsICdnb29nLm5ldC54
cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy5uZXQueHBjLlVyaUNmZ0ZpZWxkcyddLCBbJ2dvb2cu
bG9nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnb2JqZWN0L29iamVjdC5qcycsIFsn
Z29vZy5vYmplY3QnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnb2JqZWN0L29i
amVjdF90ZXN0LmpzJywgWydnb29nLm9iamVjdFRlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdn
b29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRG
dW5jdGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2Fic29s
dXRlcG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuQWJzb2x1dGVQb3NpdGlvbiddLCBb
J2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cucG9zaXRpb25pbmcnLCAnZ29vZy5wb3NpdGlv
bmluZy5BYnN0cmFjdFBvc2l0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncG9z
aXRpb25pbmcvYWJzdHJhY3Rwb3NpdGlvbi5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5BYnN0cmFj
dFBvc2l0aW9uJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5n
L2FuY2hvcmVkcG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRQb3NpdGlv
biddLCBbJ2dvb2cucG9zaXRpb25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5BYnN0cmFjdFBvc2l0
aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvYW5jaG9yZWRw
b3NpdGlvbl90ZXN0LmpzJywgWydnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb25UZXN0
J10sIFsnZ29vZy5kb20nLCAnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dv
b2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29v
Zy5zdHlsZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgncG9zaXRpb25pbmcvYW5jaG9yZWR2aWV3cG9ydHBvc2l0aW9uLmpzJywgWydnb29nLnBv
c2l0aW9uaW5nLkFuY2hvcmVkVmlld3BvcnRQb3NpdGlvbiddLCBbJ2dvb2cucG9zaXRpb25pbmcn
LCAnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcu
T3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvd1N0YXR1cyddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2FuY2hvcmVkdmlld3BvcnRwb3NpdGlvbl90
ZXN0LmpzJywgWydnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkVmlld3BvcnRQb3NpdGlvblRlc3Qn
XSwgWydnb29nLmRvbScsICdnb29nLm1hdGguQm94JywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9y
ZWRWaWV3cG9ydFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9z
aXRpb25pbmcuT3ZlcmZsb3dTdGF0dXMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvY2xpZW50cG9z
aXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuQ2xpZW50UG9zaXRpb24nXSwgWydnb29nLmFz
c2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5wb3NpdGlv
bmluZycsICdnb29nLnBvc2l0aW9uaW5nLkFic3RyYWN0UG9zaXRpb24nLCAnZ29vZy5zdHlsZSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2NsaWVudHBvc2l0aW9u
X3Rlc3QuanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuY2xpZW50UG9zaXRpb25UZXN0J10sIFsnZ29v
Zy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnBvc2l0aW9uaW5nLkNsaWVudFBvc2l0
aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL21l
bnVhbmNob3JlZHBvc2l0aW9uLmpzJywgWydnb29nLnBvc2l0aW9uaW5nLk1lbnVBbmNob3JlZFBv
c2l0aW9uJ10sIFsnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFZpZXdwb3J0UG9zaXRpb24nLCAn
Z29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3Bvc2l0aW9uaW5nL21lbnVhbmNob3JlZHBvc2l0aW9uX3Rlc3QuanMnLCBbJ2dvb2cucG9zaXRp
b25pbmcuTWVudUFuY2hvcmVkUG9zaXRpb25UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk1l
bnVBbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdwb3NpdGlvbmluZy9wb3NpdGlvbmluZy5qcycsIFsnZ29vZy5wb3Np
dGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLkNv
cm5lckJpdCcsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cucG9zaXRpb25pbmcu
T3ZlcmZsb3dTdGF0dXMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUmVjdCcsICdnb29n
Lm1hdGguU2l6ZScsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL3Bvc2l0aW9uaW5nX3Rlc3QuanMnLCBbJ2dv
b2cucG9zaXRpb25pbmdUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGguQ29vcmRpbmF0
ZScsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25p
bmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmlu
Zy5PdmVyZmxvd1N0YXR1cycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZh
aWx1cmVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51
c2VyQWdlbnQucHJvZHVjdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9u
aW5nL3ZpZXdwb3J0Y2xpZW50cG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuVmlld3Bv
cnRDbGllbnRQb3NpdGlvbiddLCBbJ2dvb2cuZG9tJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywg
J2dvb2cucG9zaXRpb25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5DbGllbnRQb3NpdGlvbicsICdn
b29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3dTdGF0
dXMnLCAnZ29vZy5zdHlsZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9u
aW5nL3ZpZXdwb3J0Y2xpZW50cG9zaXRpb25fdGVzdC5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5W
aWV3cG9ydENsaWVudFBvc2l0aW9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cucG9zaXRpb25p
bmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmlu
Zy5WaWV3cG9ydENsaWVudFBvc2l0aW9uJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Bv
c2l0aW9uaW5nL3ZpZXdwb3J0cG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuVmlld3Bv
cnRQb3NpdGlvbiddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cucG9zaXRpb25pbmcn
LCAnZ29vZy5wb3NpdGlvbmluZy5BYnN0cmFjdFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcu
Q29ybmVyJywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9t
aXNlL3Byb21pc2UuanMnLCBbJ2dvb2cuUHJvbWlzZSddLCBbJ2dvb2cuVGhlbmFibGUnLCAnZ29v
Zy5hc3NlcnRzJywgJ2dvb2cuYXN5bmMuRnJlZUxpc3QnLCAnZ29vZy5hc3luYy5ydW4nLCAnZ29v
Zy5hc3luYy50aHJvd0V4Y2VwdGlvbicsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cucHJvbWlz
ZS5SZXNvbHZlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb21pc2UvcHJvbWlz
ZV90ZXN0LmpzJywgWydnb29nLlByb21pc2VUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cu
VGhlbmFibGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2Un
LCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNl
cicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb21pc2UvcmVzb2x2ZXIuanMnLCBbJ2dv
b2cucHJvbWlzZS5SZXNvbHZlciddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdw
cm9taXNlL3Rlc3RzdWl0ZWFkYXB0ZXIuanMnLCBbJ2dvb2cucHJvbWlzZS50ZXN0U3VpdGVBZGFw
dGVyJ10sIFsnZ29vZy5Qcm9taXNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncHJv
bWlzZS90aGVuYWJsZS5qcycsIFsnZ29vZy5UaGVuYWJsZSddLCBbXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdwcm90by9wcm90by5qcycsIFsnZ29vZy5wcm90byddLCBbJ2dvb2cucHJv
dG8uU2VyaWFsaXplciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvL3Nlcmlh
bGl6ZXIuanMnLCBbJ2dvb2cucHJvdG8uU2VyaWFsaXplciddLCBbJ2dvb2cuanNvbi5TZXJpYWxp
emVyJywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8v
c2VyaWFsaXplcl90ZXN0LmpzJywgWydnb29nLnByb3RvVGVzdCddLCBbJ2dvb2cucHJvdG8nLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb3Rv
Mi9kZXNjcmlwdG9yLmpzJywgWydnb29nLnByb3RvMi5EZXNjcmlwdG9yJywgJ2dvb2cucHJvdG8y
Lk1ldGFkYXRhJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5vYmplY3Qn
LCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvZGVz
Y3JpcHRvcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5EZXNjcmlwdG9yVGVzdCddLCBbJ2dvb2cu
cHJvdG8yLkRlc2NyaXB0b3InLCAnZ29vZy5wcm90bzIuTWVzc2FnZScsICdnb29nLnRlc3Rpbmcu
anN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL2ZpZWxkZGVzY3Jp
cHRvci5qcycsIFsnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJ10sIFsnZ29vZy5hc3NlcnRz
JywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL2Zp
ZWxkZGVzY3JpcHRvcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5GaWVsZERlc2NyaXB0b3JUZXN0
J10sIFsnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2Un
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3By
b3RvMi9sYXp5ZGVzZXJpYWxpemVyLmpzJywgWydnb29nLnByb3RvMi5MYXp5RGVzZXJpYWxpemVy
J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2UnLCAnZ29vZy5wcm90bzIu
U2VyaWFsaXplciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9tZXNzYWdl
LmpzJywgWydnb29nLnByb3RvMi5NZXNzYWdlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucHJv
dG8yLkRlc2NyaXB0b3InLCAnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL21lc3NhZ2VfdGVzdC5qcycsIFsnZ29vZy5wcm90
bzIuTWVzc2FnZVRlc3QnXSwgWydnb29nLnRlc3RpbmcuanN1bml0JywgJ3Byb3RvMi5UZXN0QWxs
VHlwZXMnLCAncHJvdG8yLlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtJywgJ3Byb3RvMi5UZXN0QWxs
VHlwZXMuTmVzdGVkTWVzc2FnZScsICdwcm90bzIuVGVzdEFsbFR5cGVzLk9wdGlvbmFsR3JvdXAn
LCAncHJvdG8yLlRlc3RBbGxUeXBlcy5SZXBlYXRlZEdyb3VwJ10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgncHJvdG8yL29iamVjdHNlcmlhbGl6ZXIuanMnLCBbJ2dvb2cucHJvdG8yLk9i
amVjdFNlcmlhbGl6ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5wcm90bzIuRmllbGREZXNj
cmlwdG9yJywgJ2dvb2cucHJvdG8yLlNlcmlhbGl6ZXInLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvb2JqZWN0c2VyaWFsaXplcl90ZXN0LmpzJywg
Wydnb29nLnByb3RvMi5PYmplY3RTZXJpYWxpemVyVGVzdCddLCBbJ2dvb2cucHJvdG8yLk9iamVj
dFNlcmlhbGl6ZXInLCAnZ29vZy5wcm90bzIuU2VyaWFsaXplcicsICdnb29nLnRlc3RpbmcuUHJv
cGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ3Byb3RvMi5UZXN0QWxsVHlw
ZXMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvcGFja2FnZV90ZXN0LnBi
LmpzJywgWydzb21lcHJvdG9wYWNrYWdlLlRlc3RQYWNrYWdlVHlwZXMnXSwgWydnb29nLnByb3Rv
Mi5NZXNzYWdlJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdwcm90bzIvcGJsaXRlc2VyaWFsaXplci5qcycsIFsnZ29vZy5wcm90bzIuUGJMaXRl
U2VyaWFsaXplciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnByb3RvMi5GaWVsZERlc2NyaXB0
b3InLCAnZ29vZy5wcm90bzIuTGF6eURlc2VyaWFsaXplcicsICdnb29nLnByb3RvMi5TZXJpYWxp
emVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL3BibGl0ZXNlcmlhbGl6
ZXJfdGVzdC5qcycsIFsnZ29vZy5wcm90bzIuUGJMaXRlU2VyaWFsaXplclRlc3QnXSwgWydnb29n
LnByb3RvMi5QYkxpdGVTZXJpYWxpemVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAncHJvdG8y
LlRlc3RBbGxUeXBlcyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9wcm90
b190ZXN0LmpzJywgWydnb29nLnByb3RvMi5tZXNzYWdlVGVzdCddLCBbJ2dvb2cucHJvdG8yLkZp
ZWxkRGVzY3JpcHRvcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ3Byb3RvMi5UZXN0QWxsVHlw
ZXMnLCAnc29tZXByb3RvcGFja2FnZS5UZXN0UGFja2FnZVR5cGVzJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgncHJvdG8yL3NlcmlhbGl6ZXIuanMnLCBbJ2dvb2cucHJvdG8yLlNlcmlh
bGl6ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJywg
J2dvb2cucHJvdG8yLk1lc3NhZ2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90
bzIvdGVzdC5wYi5qcycsIFsncHJvdG8yLlRlc3RBbGxUeXBlcycsICdwcm90bzIuVGVzdEFsbFR5
cGVzLk5lc3RlZEVudW0nLCAncHJvdG8yLlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlJywgJ3By
b3RvMi5UZXN0QWxsVHlwZXMuT3B0aW9uYWxHcm91cCcsICdwcm90bzIuVGVzdEFsbFR5cGVzLlJl
cGVhdGVkR3JvdXAnLCAncHJvdG8yLlRlc3REZWZhdWx0Q2hpbGQnLCAncHJvdG8yLlRlc3REZWZh
dWx0UGFyZW50J10sIFsnZ29vZy5wcm90bzIuTWVzc2FnZSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3Byb3RvMi90ZXh0Zm9ybWF0c2VyaWFsaXplci5qcycsIFsnZ29vZy5wcm90bzIu
VGV4dEZvcm1hdFNlcmlhbGl6ZXInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdn
b29nLmpzb24nLCAnZ29vZy5tYXRoJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cucHJvdG8yLkZpZWxk
RGVzY3JpcHRvcicsICdnb29nLnByb3RvMi5NZXNzYWdlJywgJ2dvb2cucHJvdG8yLlNlcmlhbGl6
ZXInLCAnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIv
dGV4dGZvcm1hdHNlcmlhbGl6ZXJfdGVzdC5qcycsIFsnZ29vZy5wcm90bzIuVGV4dEZvcm1hdFNl
cmlhbGl6ZXJUZXN0J10sIFsnZ29vZy5wcm90bzIuT2JqZWN0U2VyaWFsaXplcicsICdnb29nLnBy
b3RvMi5UZXh0Rm9ybWF0U2VyaWFsaXplcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ3Byb3Rv
Mi5UZXN0QWxsVHlwZXMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvdXRp
bC5qcycsIFsnZ29vZy5wcm90bzIuVXRpbCddLCBbJ2dvb2cuYXNzZXJ0cyddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3B1YnN1Yi9wdWJzdWIuanMnLCBbJ2dvb2cucHVic3ViLlB1YlN1
YiddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFycmF5J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgncHVic3ViL3B1YnN1Yl90ZXN0LmpzJywgWydnb29nLnB1YnN1Yi5QdWJTdWJU
ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnB1YnN1Yi5QdWJTdWInLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3B1YnN1Yi90b3BpY2lkLmpz
JywgWydnb29nLnB1YnN1Yi5Ub3BpY0lkJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3B1YnN1Yi90eXBlZHB1YnN1Yi5qcycsIFsnZ29vZy5wdWJzdWIuVHlwZWRQdWJTdWInXSwg
Wydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5wdWJzdWIuUHViU3ViJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgncHVic3ViL3R5cGVkcHVic3ViX3Rlc3QuanMnLCBbJ2dvb2cucHVic3Vi
LlR5cGVkUHViU3ViVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5wdWJzdWIuVG9waWNJZCcs
ICdnb29nLnB1YnN1Yi5UeXBlZFB1YlN1YicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncmVmbGVjdC9yZWZsZWN0LmpzJywgWydnb29nLnJlZmxl
Y3QnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgncmVzdWx0L2RlZmVycmVkYWRh
cHRvci5qcycsIFsnZ29vZy5yZXN1bHQuRGVmZXJyZWRBZGFwdG9yJ10sIFsnZ29vZy5hc3luYy5E
ZWZlcnJlZCcsICdnb29nLnJlc3VsdCcsICdnb29nLnJlc3VsdC5SZXN1bHQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdyZXN1bHQvZGVwZW5kZW50cmVzdWx0LmpzJywgWydnb29nLnJl
c3VsdC5EZXBlbmRlbnRSZXN1bHQnXSwgWydnb29nLnJlc3VsdC5SZXN1bHQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdyZXN1bHQvcmVzdWx0X2ludGVyZmFjZS5qcycsIFsnZ29vZy5y
ZXN1bHQuUmVzdWx0J10sIFsnZ29vZy5UaGVuYWJsZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3Jlc3VsdC9yZXN1bHR1dGlsLmpzJywgWydnb29nLnJlc3VsdCddLCBbJ2dvb2cuYXJy
YXknLCAnZ29vZy5yZXN1bHQuRGVwZW5kZW50UmVzdWx0JywgJ2dvb2cucmVzdWx0LlJlc3VsdCcs
ICdnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdyZXN1bHQvc2ltcGxlcmVzdWx0LmpzJywgWydnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnLCAn
Z29vZy5yZXN1bHQuU2ltcGxlUmVzdWx0LlN0YXRlRXJyb3InXSwgWydnb29nLlByb21pc2UnLCAn
Z29vZy5UaGVuYWJsZScsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cucmVzdWx0LlJlc3VsdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3NveS9kYXRhLmpzJywgWydnb29nLnNveS5k
YXRhLlNhbml0aXplZENvbnRlbnQnLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRDb250ZW50S2lu
ZCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lv
bnMnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdz
b3kvZGF0YV90ZXN0LmpzJywgWydnb29nLnNveS5kYXRhVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZl
SHRtbCcsICdnb29nLnNveS50ZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzb3kvcmVuZGVyZXIuanMnLCBbJ2dvb2cuc295Lklu
amVjdGVkRGF0YVN1cHBsaWVyJywgJ2dvb2cuc295LlJlbmRlcmVyJ10sIFsnZ29vZy5hc3NlcnRz
JywgJ2dvb2cuZG9tJywgJ2dvb2cuc295JywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ29udGVu
dCcsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnc295L3JlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cuc295LlJlbmRlcmVy
VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05h
bWUnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnNv
eS5SZW5kZXJlcicsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJywgJ2dvb2cu
c295LnRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVj
b3JkRnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzb3kvc295LmpzJywg
Wydnb29nLnNveSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2Rl
VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ29udGVu
dCcsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJywgJ2dvb2cuc3RyaW5nJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc295L3NveV90ZXN0LmpzJywgWydnb29nLnNv
eVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdO
YW1lJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc295JywgJ2dvb2cuc295LnRlc3RIZWxwZXIn
LCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3NveS9zb3lfdGVzdGhlbHBlci5qcycsIFsn
Z29vZy5zb3kudGVzdEhlbHBlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAn
Z29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ29udGVudCcsICdn
b29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cu
dXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3BlbGwvc3BlbGxjaGVj
ay5qcycsIFsnZ29vZy5zcGVsbC5TcGVsbENoZWNrJywgJ2dvb2cuc3BlbGwuU3BlbGxDaGVjay5X
b3JkQ2hhbmdlZEV2ZW50J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cy5FdmVudCcsICdn
b29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnN0cnVjdHMuU2V0J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnc3BlbGwvc3BlbGxjaGVja190ZXN0LmpzJywgWydnb29nLnNwZWxs
LlNwZWxsQ2hlY2tUZXN0J10sIFsnZ29vZy5zcGVsbC5TcGVsbENoZWNrJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdGF0cy9iYXNpY3N0YXQu
anMnLCBbJ2dvb2cuc3RhdHMuQmFzaWNTdGF0J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubG9n
JywgJ2dvb2cuc3RyaW5nLmZvcm1hdCcsICdnb29nLnN0cnVjdHMuQ2lyY3VsYXJCdWZmZXInXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdGF0cy9iYXNpY3N0YXRfdGVzdC5qcycsIFsn
Z29vZy5zdGF0cy5CYXNpY1N0YXRUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnN0YXRzLkJh
c2ljU3RhdCcsICdnb29nLnN0cmluZy5mb3JtYXQnLCAnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRv
bScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9jb2xsZWN0YWJsZXN0b3JhZ2UuanMnLCBbJ2dvb2cu
c3RvcmFnZS5Db2xsZWN0YWJsZVN0b3JhZ2UnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaXRlcics
ICdnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5FeHBpcmluZ1N0b3JhZ2Un
LCAnZ29vZy5zdG9yYWdlLlJpY2hTdG9yYWdlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnc3RvcmFnZS9jb2xsZWN0YWJsZXN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5zdG9yYWdlLkNv
bGxlY3RhYmxlU3RvcmFnZVRlc3QnXSwgWydnb29nLnN0b3JhZ2UuQ29sbGVjdGFibGVTdG9yYWdl
JywgJ2dvb2cuc3RvcmFnZS5jb2xsZWN0YWJsZVN0b3JhZ2VUZXN0ZXInLCAnZ29vZy5zdG9yYWdl
LnN0b3JhZ2VfdGVzdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy50ZXN0aW5nLnN0b3JhZ2UuRmFrZU1lY2hhbmlzbSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvY29sbGVjdGFibGVzdG9yYWdldGVzdGVyLmpzJywg
Wydnb29nLnN0b3JhZ2UuY29sbGVjdGFibGVTdG9yYWdlVGVzdGVyJ10sIFsnZ29vZy50ZXN0aW5n
LmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL2VuY3J5cHRl
ZHN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5FbmNyeXB0ZWRTdG9yYWdlJ10sIFsnZ29vZy5j
cnlwdCcsICdnb29nLmNyeXB0LkFyYzQnLCAnZ29vZy5jcnlwdC5TaGExJywgJ2dvb2cuY3J5cHQu
YmFzZTY0JywgJ2dvb2cuanNvbicsICdnb29nLmpzb24uU2VyaWFsaXplcicsICdnb29nLnN0b3Jh
Z2UuQ29sbGVjdGFibGVTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnLCAnZ29vZy5z
dG9yYWdlLlJpY2hTdG9yYWdlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFn
ZS9lbmNyeXB0ZWRzdG9yYWdlX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5FbmNyeXB0ZWRTdG9y
YWdlVGVzdCddLCBbJ2dvb2cuanNvbicsICdnb29nLnN0b3JhZ2UuRW5jcnlwdGVkU3RvcmFnZScs
ICdnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZScsICdn
b29nLnN0b3JhZ2UuY29sbGVjdGFibGVTdG9yYWdlVGVzdGVyJywgJ2dvb2cuc3RvcmFnZS5zdG9y
YWdlX3Rlc3QnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHNldWRv
UmFuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnN0b3JhZ2UuRmFr
ZU1lY2hhbmlzbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvZXJyb3Jj
b2RlLmpzJywgWydnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJ10sIFtdLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3N0b3JhZ2UvZXhwaXJpbmdzdG9yYWdlLmpzJywgWydnb29nLnN0b3JhZ2Uu
RXhwaXJpbmdTdG9yYWdlJ10sIFsnZ29vZy5zdG9yYWdlLlJpY2hTdG9yYWdlJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9leHBpcmluZ3N0b3JhZ2VfdGVzdC5qcycsIFsn
Z29vZy5zdG9yYWdlLkV4cGlyaW5nU3RvcmFnZVRlc3QnXSwgWydnb29nLnN0b3JhZ2UuRXhwaXJp
bmdTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5zdG9yYWdlX3Rlc3QnLCAnZ29vZy50ZXN0aW5nLk1v
Y2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5zdG9yYWdlLkZh
a2VNZWNoYW5pc20nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hh
bmlzbS9lcnJvcmNvZGUuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uRXJyb3JDb2RlJ10s
IFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL2Vycm9y
aGFuZGxpbmdtZWNoYW5pc20uanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uRXJyb3JIYW5k
bGluZ01lY2hhbmlzbSddLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uTWVjaGFuaXNtJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vZXJyb3JoYW5kbGlu
Z21lY2hhbmlzbV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9ySGFuZGxp
bmdNZWNoYW5pc21UZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5FcnJvckhhbmRsaW5n
TWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1
bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20v
aHRtbDVsb2NhbHN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVMb2Nh
bFN0b3JhZ2UnXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1V2ViU3RvcmFnZSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL2h0bWw1bG9jYWxz
dG9yYWdlX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVMb2NhbFN0b3Jh
Z2VUZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNUxvY2FsU3RvcmFnZScsICdn
b29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNlcGFyYXRpb25UZXN0ZXInLCAnZ29vZy5z
dG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21TaGFyaW5nVGVzdGVyJywgJ2dvb2cuc3RvcmFnZS5t
ZWNoYW5pc20ubWVjaGFuaXNtVGVzdERlZmluaXRpb24nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2Uv
bWVjaGFuaXNtL2h0bWw1c2Vzc2lvbnN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5p
c20uSFRNTDVTZXNzaW9uU3RvcmFnZSddLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVX
ZWJTdG9yYWdlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5p
c20vaHRtbDVzZXNzaW9uc3RvcmFnZV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNt
LkhUTUw1U2Vzc2lvblN0b3JhZ2VUZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1M
NVNlc3Npb25TdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2VwYXJh
dGlvblRlc3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNoYXJpbmdUZXN0
ZXInLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0RGVmaW5pdGlvbicsICdn
b29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaHRtbDV3ZWJzdG9yYWdlLmpzJywgWydnb29n
LnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1V2ViU3RvcmFnZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdn
b29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy5zdG9y
YWdlLm1lY2hhbmlzbS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5JdGVyYWJs
ZU1lY2hhbmlzbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFu
aXNtL2h0bWw1d2Vic3RvcmFnZV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhU
TUw1TW9ja1N0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNVdlYlN0b3JhZ2VU
ZXN0JywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uTW9ja1Rocm93YWJsZVN0b3JhZ2UnXSwgWydn
b29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9yQ29kZScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNt
LkhUTUw1V2ViU3RvcmFnZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaWV1c2VyZGF0YS5qcycsIFsnZ29vZy5z
dG9yYWdlLm1lY2hhbmlzbS5JRVVzZXJEYXRhJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRl
ci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnN0b3JhZ2UubWVj
aGFuaXNtLkVycm9yQ29kZScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkl0ZXJhYmxlTWVjaGFu
aXNtJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9pZXVzZXJkYXRhX3Rlc3QuanMnLCBb
J2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSUVVc2VyRGF0YVRlc3QnXSwgWydnb29nLnN0b3JhZ2Uu
bWVjaGFuaXNtLklFVXNlckRhdGEnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21T
ZXBhcmF0aW9uVGVzdGVyJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2hhcmlu
Z1Rlc3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9u
JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9pdGVyYWJsZW1lY2hhbmlzbS5qcycs
IFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5JdGVyYWJsZU1lY2hhbmlzbSddLCBbJ2dvb2cuYXJy
YXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNt
Lk1lY2hhbmlzbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFu
aXNtL2l0ZXJhYmxlbWVjaGFuaXNtdGVzdGVyLmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNt
Lml0ZXJhYmxlTWVjaGFuaXNtVGVzdGVyJ10sIFsnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cu
c3RvcmFnZS5tZWNoYW5pc20uSXRlcmFibGVNZWNoYW5pc20nLCAnZ29vZy50ZXN0aW5nLmFzc2Vy
dHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9tZWNo
YW5pc20uanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uTWVjaGFuaXNtJ10sIFtdLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL21lY2hhbmlzbWZhY3Rv
cnkuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtZmFjdG9yeSddLCBbJ2dv
b2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVMb2NhbFN0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLm1l
Y2hhbmlzbS5IVE1MNVNlc3Npb25TdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSUVV
c2VyRGF0YScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLlByZWZpeGVkTWVjaGFuaXNtJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vbWVjaGFuaXNtZmFj
dG9yeV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbWZhY3RvcnlU
ZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21mYWN0b3J5JywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21l
Y2hhbmlzbS9tZWNoYW5pc21zZXBhcmF0aW9udGVzdGVyLmpzJywgWydnb29nLnN0b3JhZ2UubWVj
aGFuaXNtLm1lY2hhbmlzbVNlcGFyYXRpb25UZXN0ZXInXSwgWydnb29nLml0ZXIuU3RvcEl0ZXJh
dGlvbicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9uJywg
J2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3Rv
cmFnZS9tZWNoYW5pc20vbWVjaGFuaXNtc2hhcmluZ3Rlc3Rlci5qcycsIFsnZ29vZy5zdG9yYWdl
Lm1lY2hhbmlzbS5tZWNoYW5pc21TaGFyaW5nVGVzdGVyJ10sIFsnZ29vZy5pdGVyLlN0b3BJdGVy
YXRpb24nLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0RGVmaW5pdGlvbics
ICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0
b3JhZ2UvbWVjaGFuaXNtL21lY2hhbmlzbXRlc3RkZWZpbml0aW9uLmpzJywgWydnb29nLnN0b3Jh
Z2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9uJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL21lY2hhbmlzbXRlc3Rlci5qcycsIFsn
Z29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0ZXInXSwgWydnb29nLnN0b3JhZ2Uu
bWVjaGFuaXNtLkVycm9yQ29kZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVzZXJB
Z2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3Qu
aXNWZXJzaW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5p
c20vcHJlZml4ZWRtZWNoYW5pc20uanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uUHJlZml4
ZWRNZWNoYW5pc20nXSwgWydnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5zdG9yYWdlLm1lY2hh
bmlzbS5JdGVyYWJsZU1lY2hhbmlzbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0
b3JhZ2UvbWVjaGFuaXNtL3ByZWZpeGVkbWVjaGFuaXNtX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFn
ZS5tZWNoYW5pc20uUHJlZml4ZWRNZWNoYW5pc21UZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hh
bmlzbS5IVE1MNUxvY2FsU3RvcmFnZScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLlByZWZpeGVk
TWVjaGFuaXNtJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2VwYXJhdGlvblRl
c3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNoYXJpbmdUZXN0ZXInLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0b3Jh
Z2UvcmljaHN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZScsICdnb29nLnN0
b3JhZ2UuUmljaFN0b3JhZ2UuV3JhcHBlciddLCBbJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnLCAn
Z29vZy5zdG9yYWdlLlN0b3JhZ2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9y
YWdlL3JpY2hzdG9yYWdlX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZVRlc3Qn
XSwgWydnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZScs
ICdnb29nLnN0b3JhZ2Uuc3RvcmFnZV90ZXN0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29v
Zy50ZXN0aW5nLnN0b3JhZ2UuRmFrZU1lY2hhbmlzbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3N0b3JhZ2Uvc3RvcmFnZS5qcycsIFsnZ29vZy5zdG9yYWdlLlN0b3JhZ2UnXSwgWydn
b29nLmpzb24nLCAnZ29vZy5zdG9yYWdlLkVycm9yQ29kZSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3N0b3JhZ2Uvc3RvcmFnZV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2Uuc3RvcmFn
ZV90ZXN0J10sIFsnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9jb25zdC5qcycsIFsnZ29vZy5zdHJp
bmcuQ29uc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvY29uc3RfdGVzdC5qcycsIFsnZ29v
Zy5zdHJpbmcuY29uc3RUZXN0J10sIFsnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9saW5raWZ5Lmpz
JywgWydnb29nLnN0cmluZy5saW5raWZ5J10sIFsnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvbGlua2lmeV90ZXN0LmpzJywgWydnb29nLnN0cmluZy5s
aW5raWZ5VGVzdCddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5z
dHJpbmcubGlua2lmeScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvbmV3bGluZXMuanMnLCBbJ2dv
b2cuc3RyaW5nLm5ld2xpbmVzJywgJ2dvb2cuc3RyaW5nLm5ld2xpbmVzLkxpbmUnXSwgWydnb29n
LmFycmF5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL25ld2xpbmVzX3Rl
c3QuanMnLCBbJ2dvb2cuc3RyaW5nLm5ld2xpbmVzVGVzdCddLCBbJ2dvb2cuc3RyaW5nLm5ld2xp
bmVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdzdHJpbmcvcGFyc2VyLmpzJywgWydnb29nLnN0cmluZy5QYXJzZXInXSwgW10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3BhdGguanMnLCBbJ2dvb2cuc3RyaW5nLnBhdGgn
XSwgWydnb29nLmFycmF5JywgJ2dvb2cuc3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnc3RyaW5nL3BhdGhfdGVzdC5qcycsIFsnZ29vZy5zdHJpbmcucGF0aFRlc3QnXSwgWydn
b29nLnN0cmluZy5wYXRoJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCdzdHJpbmcvc3RyaW5nLmpzJywgWydnb29nLnN0cmluZycsICdnb29nLnN0
cmluZy5Vbmljb2RlJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9z
dHJpbmdfdGVzdC5qcycsIFsnZ29vZy5zdHJpbmdUZXN0J10sIFsnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmZ1bmN0aW9ucycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0
cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3Rpbmcu
UHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnc3RyaW5nL3N0cmluZ2J1ZmZlci5qcycsIFsnZ29vZy5zdHJpbmcuU3Ry
aW5nQnVmZmVyJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9zdHJp
bmdidWZmZXJfdGVzdC5qcycsIFsnZ29vZy5zdHJpbmcuU3RyaW5nQnVmZmVyVGVzdCddLCBbJ2dv
b2cuc3RyaW5nLlN0cmluZ0J1ZmZlcicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3N0cmluZ2Zvcm1hdC5qcycsIFsnZ29vZy5zdHJp
bmcuZm9ybWF0J10sIFsnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdzdHJpbmcvc3RyaW5nZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuc3RyaW5nLmZvcm1hdFRlc3Qn
XSwgWydnb29nLnN0cmluZy5mb3JtYXQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9zdHJpbmdpZmllci5qcycsIFsnZ29vZy5zdHJp
bmcuU3RyaW5naWZpZXInXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5n
L3R5cGVkc3RyaW5nLmpzJywgWydnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCBbXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2F2bHRyZWUuanMnLCBbJ2dvb2cuc3RydWN0
cy5BdmxUcmVlJywgJ2dvb2cuc3RydWN0cy5BdmxUcmVlLk5vZGUnXSwgWydnb29nLnN0cnVjdHMu
Q29sbGVjdGlvbiddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvYXZsdHJl
ZV90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuQXZsVHJlZVRlc3QnXSwgWydnb29nLmFycmF5Jywg
J2dvb2cuc3RydWN0cy5BdmxUcmVlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2NpcmN1bGFyYnVmZmVyLmpzJywgWydnb29nLnN0
cnVjdHMuQ2lyY3VsYXJCdWZmZXInXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
c3RydWN0cy9jaXJjdWxhcmJ1ZmZlcl90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuQ2lyY3VsYXJC
dWZmZXJUZXN0J10sIFsnZ29vZy5zdHJ1Y3RzLkNpcmN1bGFyQnVmZmVyJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2NvbGxlY3Rp
b24uanMnLCBbJ2dvb2cuc3RydWN0cy5Db2xsZWN0aW9uJ10sIFtdLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3N0cnVjdHMvY29sbGVjdGlvbl90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMu
Q29sbGVjdGlvblRlc3QnXSwgWydnb29nLnN0cnVjdHMuQXZsVHJlZScsICdnb29nLnN0cnVjdHMu
U2V0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCdzdHJ1Y3RzL2hlYXAuanMnLCBbJ2dvb2cuc3RydWN0cy5IZWFwJ10sIFsnZ29vZy5hcnJheScs
ICdnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMuTm9kZSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3N0cnVjdHMvaGVhcF90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuSGVhcFRlc3Qn
XSwgWydnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLkhlYXAnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvaW52ZXJzaW9ubWFw
LmpzJywgWydnb29nLnN0cnVjdHMuSW52ZXJzaW9uTWFwJ10sIFsnZ29vZy5hcnJheSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvaW52ZXJzaW9ubWFwX3Rlc3QuanMnLCBb
J2dvb2cuc3RydWN0cy5JbnZlcnNpb25NYXBUZXN0J10sIFsnZ29vZy5zdHJ1Y3RzLkludmVyc2lv
bk1hcCcsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnc3RydWN0cy9saW5rZWRtYXAuanMnLCBbJ2dvb2cuc3RydWN0cy5MaW5rZWRNYXAnXSwgWydn
b29nLnN0cnVjdHMuTWFwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9s
aW5rZWRtYXBfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLkxpbmtlZE1hcFRlc3QnXSwgWydnb29n
LnN0cnVjdHMuTGlua2VkTWFwJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5n
LnJlY29yZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9t
YXAuanMnLCBbJ2dvb2cuc3RydWN0cy5NYXAnXSwgWydnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29v
Zy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCdzdHJ1Y3RzL21hcF90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuTWFwVGVzdCdd
LCBbJ2dvb2cuaXRlcicsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9u
b2RlLmpzJywgWydnb29nLnN0cnVjdHMuTm9kZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCdzdHJ1Y3RzL3Bvb2wuanMnLCBbJ2dvb2cuc3RydWN0cy5Qb29sJ10sIFsnZ29vZy5E
aXNwb3NhYmxlJywgJ2dvb2cuc3RydWN0cy5RdWV1ZScsICdnb29nLnN0cnVjdHMuU2V0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9wb29sX3Rlc3QuanMnLCBbJ2dvb2cu
c3RydWN0cy5Qb29sVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5Qb29sJywgJ2dvb2cudGVzdGluZy5N
b2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3N0cnVjdHMvcHJpb3JpdHlwb29sLmpzJywgWydnb29nLnN0cnVjdHMuUHJpb3JpdHlQ
b29sJ10sIFsnZ29vZy5zdHJ1Y3RzLlBvb2wnLCAnZ29vZy5zdHJ1Y3RzLlByaW9yaXR5UXVldWUn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3ByaW9yaXR5cG9vbF90ZXN0
LmpzJywgWydnb29nLnN0cnVjdHMuUHJpb3JpdHlQb29sVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5Q
cmlvcml0eVBvb2wnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9wcmlvcml0eXF1ZXVl
LmpzJywgWydnb29nLnN0cnVjdHMuUHJpb3JpdHlRdWV1ZSddLCBbJ2dvb2cuc3RydWN0cy5IZWFw
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9wcmlvcml0eXF1ZXVlX3Rl
c3QuanMnLCBbJ2dvb2cuc3RydWN0cy5Qcmlvcml0eVF1ZXVlVGVzdCddLCBbJ2dvb2cuc3RydWN0
cycsICdnb29nLnN0cnVjdHMuUHJpb3JpdHlRdWV1ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9xdWFkdHJlZS5qcycsIFsnZ29v
Zy5zdHJ1Y3RzLlF1YWRUcmVlJywgJ2dvb2cuc3RydWN0cy5RdWFkVHJlZS5Ob2RlJywgJ2dvb2cu
c3RydWN0cy5RdWFkVHJlZS5Qb2ludCddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9xdWFkdHJlZV90ZXN0LmpzJywgWydnb29n
LnN0cnVjdHMuUXVhZFRyZWVUZXN0J10sIFsnZ29vZy5zdHJ1Y3RzJywgJ2dvb2cuc3RydWN0cy5R
dWFkVHJlZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnc3RydWN0cy9xdWV1ZS5qcycsIFsnZ29vZy5zdHJ1Y3RzLlF1ZXVlJ10sIFsnZ29vZy5h
cnJheSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcXVldWVfdGVzdC5q
cycsIFsnZ29vZy5zdHJ1Y3RzLlF1ZXVlVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5RdWV1ZScsICdn
b29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0
cy9zZXQuanMnLCBbJ2dvb2cuc3RydWN0cy5TZXQnXSwgWydnb29nLnN0cnVjdHMnLCAnZ29vZy5z
dHJ1Y3RzLkNvbGxlY3Rpb24nLCAnZ29vZy5zdHJ1Y3RzLk1hcCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3N0cnVjdHMvc2V0X3Rlc3QuanMnLCBbJ2dvb2cuc3RydWN0cy5TZXRUZXN0
J10sIFsnZ29vZy5pdGVyJywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dv
b2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3Rz
L3NpbXBsZXBvb2wuanMnLCBbJ2dvb2cuc3RydWN0cy5TaW1wbGVQb29sJ10sIFsnZ29vZy5EaXNw
b3NhYmxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9zdHJpbmdzZXQu
anMnLCBbJ2dvb2cuc3RydWN0cy5TdHJpbmdTZXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5p
dGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9zdHJpbmdzZXRfdGVz
dC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlN0cmluZ1NldFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dv
b2cuaXRlcicsICdnb29nLnN0cnVjdHMuU3RyaW5nU2V0JywgJ2dvb2cudGVzdGluZy5hc3NlcnRz
JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdz
dHJ1Y3RzL3N0cnVjdHMuanMnLCBbJ2dvb2cuc3RydWN0cyddLCBbJ2dvb2cuYXJyYXknLCAnZ29v
Zy5vYmplY3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3N0cnVjdHNf
dGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnN0cnVj
dHMuU2V0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCdzdHJ1Y3RzL3RyZWVub2RlLmpzJywgWydnb29nLnN0cnVjdHMuVHJlZU5vZGUnXSwgWydn
b29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cnVjdHMuTm9kZSddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvdHJlZW5vZGVfdGVzdC5qcycsIFsnZ29vZy5z
dHJ1Y3RzLlRyZWVOb2RlVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5UcmVlTm9kZScsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy90cmll
LmpzJywgWydnb29nLnN0cnVjdHMuVHJpZSddLCBbJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RydWN0
cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvdHJpZV90ZXN0LmpzJywg
Wydnb29nLnN0cnVjdHMuVHJpZVRlc3QnXSwgWydnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMn
LCAnZ29vZy5zdHJ1Y3RzLlRyaWUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvd2Vhay93ZWFrLmpzJywgWydnb29nLnN0cnVjdHMu
d2VhayddLCBbJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
c3RydWN0cy93ZWFrL3dlYWtfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLndlYWtUZXN0J10sIFsn
Z29vZy5hcnJheScsICdnb29nLnN0cnVjdHMud2VhaycsICdnb29nLnRlc3RpbmcuanN1bml0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvYmlkaS5qcycsIFsnZ29vZy5zdHls
ZS5iaWRpJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL2JpZGlfdGVzdC5qcycsIFsnZ29vZy5z
dHlsZS5iaWRpVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy5zdHlsZS5i
aWRpJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCdzdHlsZS9jdXJzb3IuanMnLCBbJ2dvb2cuc3R5bGUuY3Vyc29y
J10sIFsnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCdzdHls
ZS9jdXJzb3JfdGVzdC5qcycsIFsnZ29vZy5zdHlsZS5jdXJzb3JUZXN0J10sIFsnZ29vZy5zdHls
ZS5jdXJzb3InLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3N0eWxlLmpzJywgWydnb29nLnN0eWxlJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9k
ZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS52ZW5kb3InLCAnZ29vZy5tYXRo
LkJveCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUmVjdCcsICdnb29nLm1h
dGguU2l6ZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3N0eWxlX2RvY3VtZW50X3Njcm9s
bF90ZXN0LmpzJywgWydnb29nLnN0eWxlLnN0eWxlX2RvY3VtZW50X3Njcm9sbF90ZXN0J10sIFsn
Z29vZy5kb20nLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvc3R5bGVfdGVzdC5qcycsIFsnZ29vZy5zdHlsZV90
ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNvbG9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9t
LlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cubGFicy51c2VyQWdl
bnQudXRpbCcsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cu
bWF0aC5SZWN0JywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5n
JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50
ZXN0aW5nLk1vY2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0Jywg
J2dvb2cudXNlckFnZW50VGVzdFV0aWwnLCAnZ29vZy51c2VyQWdlbnRUZXN0VXRpbC5Vc2VyQWdl
bnRzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvc3R5bGVfd2Via2l0X3Nj
cm9sbGJhcnNfdGVzdC5qcycsIFsnZ29vZy5zdHlsZS53ZWJraXRTY3JvbGxiYXJzVGVzdCddLCBb
J2dvb2cuYXNzZXJ0cycsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGVTY3JvbGxiYXJUZXN0ZXIn
LCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3N0
eWxlc2Nyb2xsYmFydGVzdGVyLmpzJywgWydnb29nLnN0eWxlU2Nyb2xsYmFyVGVzdGVyJ10sIFsn
Z29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGlu
Zy5hc3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvdHJhbnNmb3Jt
LmpzJywgWydnb29nLnN0eWxlLnRyYW5zZm9ybSddLCBbJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cu
bWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5Db29yZGluYXRlMycsICdnb29nLnN0eWxlJywg
J2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvdHJhbnNmb3JtX3Rlc3QuanMnLCBbJ2dv
b2cuc3R5bGUudHJhbnNmb3JtVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUn
LCAnZ29vZy5zdHlsZS50cmFuc2Zvcm0nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVz
ZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3RyYW5zaXRpb24uanMnLCBbJ2dvb2cuc3R5bGUudHJh
bnNpdGlvbicsICdnb29nLnN0eWxlLnRyYW5zaXRpb24uQ3NzM1Byb3BlcnR5J10sIFsnZ29vZy5h
cnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZl
JywgJ2dvb2cuZG9tLnZlbmRvcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0
bWwnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3N0eWxlL3RyYW5zaXRpb25fdGVzdC5qcycsIFsnZ29vZy5zdHlsZS50cmFuc2l0
aW9uVGVzdCddLCBbJ2dvb2cuc3R5bGUnLCAnZ29vZy5zdHlsZS50cmFuc2l0aW9uJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd0ZXN0X21vZHVsZS5qcycsIFsnZ29vZy50ZXN0X21vZHVsZSddLCBbJ2dvb2cudGVz
dF9tb2R1bGVfZGVwJ10sIHRydWUpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0X21vZHVsZV9k
ZXAuanMnLCBbJ2dvb2cudGVzdF9tb2R1bGVfZGVwJ10sIFtdLCB0cnVlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndGVzdGluZy9hc3NlcnRzLmpzJywgWydnb29nLnRlc3RpbmcuSnNVbml0RXhjZXB0
aW9uJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzLkFycmF5
TGlrZSddLCBbJ2dvb2cudGVzdGluZy5zdGFja3RyYWNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndGVzdGluZy9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5hc3NlcnRz
VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5pdGVyLkl0ZXJhdG9yJywg
J2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcics
ICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cuc3RydWN0cy5TZXQnLCAn
Z29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJB
Z2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXN5bmMvbW9ja2Nv
bnRyb2wuanMnLCBbJ2dvb2cudGVzdGluZy5hc3luYy5Nb2NrQ29udHJvbCddLCBbJ2dvb2cuYXNz
ZXJ0cycsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGVidWcnLCAnZ29vZy50ZXN0aW5n
LmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5JZ25vcmVBcmd1bWVudCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXN5bmMvbW9ja2NvbnRyb2xfdGVz
dC5qcycsIFsnZ29vZy50ZXN0aW5nLmFzeW5jLk1vY2tDb250cm9sVGVzdCddLCBbJ2dvb2cuYXN5
bmMuRGVmZXJyZWQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5h
c3NlcnRzJywgJ2dvb2cudGVzdGluZy5hc3luYy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3Rpbmcu
anN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9hc3luY3Rlc3Rj
YXNlLmpzJywgWydnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuQXN5
bmNUZXN0Q2FzZS5Db250cm9sQnJlYWtpbmdFeGNlcHRpb24nXSwgWydnb29nLnRlc3RpbmcuVGVz
dENhc2UnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd0ZXN0aW5nL2FzeW5jdGVzdGNhc2VfYXN5bmNfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5n
LkFzeW5jVGVzdENhc2VBc3luY1Rlc3QnXSwgWydnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScs
ICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVz
dGluZy9hc3luY3Rlc3RjYXNlX25vYXN5bmNfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLkFzeW5j
VGVzdENhc2VTeW5jVGVzdCddLCBbJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2Fz
eW5jdGVzdGNhc2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2VUZXN0J10s
IFsnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29n
LnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndGVzdGluZy9iZW5jaG1hcmsuanMnLCBbJ2dvb2cudGVzdGluZy5iZW5j
aG1hcmsnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5Q
ZXJmb3JtYW5jZVRhYmxlJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyJywgJ2dvb2cu
dGVzdGluZy5UZXN0Q2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcv
Y29udGludWF0aW9udGVzdGNhc2UuanMnLCBbJ2dvb2cudGVzdGluZy5Db250aW51YXRpb25UZXN0
Q2FzZScsICdnb29nLnRlc3RpbmcuQ29udGludWF0aW9uVGVzdENhc2UuU3RlcCcsICdnb29nLnRl
c3RpbmcuQ29udGludWF0aW9uVGVzdENhc2UuVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5l
dmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3Rp
bmcuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvY29udGlu
dWF0aW9udGVzdGNhc2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLkNvbnRpbnVhdGlvblRlc3RD
YXNlVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dv
b2cudGVzdGluZy5Db250aW51YXRpb25UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2Nr
JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2Fz
ZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dGVzdGluZy9kZWZlcnJlZHRlc3RjYXNlLmpzJywgWydnb29nLnRlc3RpbmcuRGVmZXJyZWRUZXN0
Q2FzZSddLCBbJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5UZXN0
Q2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZGVmZXJyZWR0ZXN0
Y2FzZV90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuRGVmZXJyZWRUZXN0Q2FzZVRlc3QnXSwgWydn
b29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy5EZWZlcnJlZFRlc3RDYXNlJywgJ2dv
b2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuVGVzdFJ1bm5lcicsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbiddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZG9tLmpzJywgWydnb29nLnRlc3RpbmcuZG9tJ10s
IFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5w
dXRUeXBlJywgJ2dvb2cuZG9tLk5vZGVJdGVyYXRvcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdn
b29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNz
bGlzdCcsICdnb29nLml0ZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5z
dHlsZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZG9tX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGlu
Zy5kb21UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3Rp
bmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2VkaXRvci9kb20uanMnLCBbJ2dvb2cudGVz
dGluZy5lZGl0b3IuZG9tJ10sIFsnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnSXRl
cmF0b3InLCAnZ29vZy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5pdGVyJywgJ2dvb2cuc3RyaW5n
JywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dGVzdGluZy9lZGl0b3IvZG9tX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5lZGl0b3IuZG9tVGVz
dCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mdW5jdGlvbnMnLCAn
Z29vZy50ZXN0aW5nLmVkaXRvci5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZWRpdG9yL2ZpZWxkbW9jay5qcycsIFsnZ29v
Zy50ZXN0aW5nLmVkaXRvci5GaWVsZE1vY2snXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5n
ZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLnRlc3RpbmcuTG9vc2VNb2NrJywgJ2dvb2cu
dGVzdGluZy5tb2NrbWF0Y2hlcnMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0
aW5nL2VkaXRvci90ZXN0aGVscGVyLmpzJywgWydnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxw
ZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAn
Z29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVk
aXRvci5wbHVnaW5zLkFic3RyYWN0QnViYmxlUGx1Z2luJywgJ2dvb2cudGVzdGluZy5kb20nXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2VkaXRvci90ZXN0aGVscGVyX3Rl
c3QuanMnLCBbJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlclRlc3QnXSwgWydnb29nLmRv
bScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy50ZXN0aW5n
LmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdl
bnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2V2ZW50cy9ldmVudG9i
c2VydmVyLmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXInXSwgWydnb29n
LmFycmF5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9ldmVudHMvZXZl
bnRvYnNlcnZlcl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXJU
ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcs
ICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2Jz
ZXJ2ZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3Rlc3RpbmcvZXZlbnRzL2V2ZW50cy5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdn
b29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXNz
ZXJ0cycsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5C
cm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMu
RXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNv
ZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2V2ZW50cy9ldmVudHNfdGVzdC5qcycs
IFsnZ29vZy50ZXN0aW5nLmV2ZW50c1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywg
J2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLm1h
dGguQ29vcmRpbmF0ZScsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGlu
Zy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2V2ZW50cy9tYXRjaGVycy5q
cycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudE1hdGNoZXInXSwgWydnb29nLmV2ZW50cy5F
dmVudCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlciddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL21hdGNoZXJzX3Rlc3QuanMn
LCBbJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnRNYXRjaGVyVGVzdCddLCBbJ2dvb2cuZXZlbnRz
LkV2ZW50JywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnRNYXRjaGVyJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2V2ZW50cy9v
bmxpbmVoYW5kbGVyLmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLk9ubGluZUhhbmRsZXInXSwg
Wydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLm5ldC5OZXR3b3JrU3RhdHVzTW9uaXRv
ciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL29ubGluZWhh
bmRsZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cy5PbmxpbmVIYW5kbGVyVGVzdCdd
LCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0Lk5ldHdvcmtTdGF0dXNNb25pdG9yJywgJ2dvb2cu
dGVzdGluZy5ldmVudHMuRXZlbnRPYnNlcnZlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzLk9ubGlu
ZUhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3Rlc3RpbmcvZXhwZWN0ZWRmYWlsdXJlcy5qcycsIFsnZ29vZy50ZXN0aW5nLkV4cGVj
dGVkRmFpbHVyZXMnXSwgWydnb29nLmRlYnVnLkRpdkNvbnNvbGUnLCAnZ29vZy5kb20nLCAnZ29v
Zy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAn
Z29vZy5sb2cnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuSnNVbml0RXhjZXB0aW9uJywg
J2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXhwZWN0ZWRmYWlsdXJlc190ZXN0LmpzJywg
Wydnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlc1Rlc3QnXSwgWydnb29nLmRlYnVnLkxvZ2dl
cicsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuSnNVbml0
RXhjZXB0aW9uJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd0ZXN0aW5nL2ZzL2Jsb2IuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5CbG9iJ10sIFsn
Z29vZy5jcnlwdC5iYXNlNjQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5n
L2ZzL2Jsb2JfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkJsb2JUZXN0J10sIFsnZ29vZy50
ZXN0aW5nLmZzLkJsb2InLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZGlyZWN0b3J5ZW50cnlfdGVzdC5qcycsIFsnZ29vZy50
ZXN0aW5nLmZzLkRpcmVjdG9yeUVudHJ5VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mcy5E
aXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RD
YXNlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0
ZW0nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3Rlc3RpbmcvZnMvZW50cnkuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5EaXJlY3RvcnlFbnRyeScs
ICdnb29nLnRlc3RpbmcuZnMuRW50cnknLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVFbnRyeSddLCBb
J2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5E
ZWZlcnJlZCcsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRGlyZWN0b3J5RW50
cnlJbXBsJywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVF
bnRyeScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdn
b29nLnRlc3RpbmcuZnMuRmlsZScsICdnb29nLnRlc3RpbmcuZnMuRmlsZVdyaXRlciddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZW50cnlfdGVzdC5qcycsIFsnZ29v
Zy50ZXN0aW5nLmZzLkVudHJ5VGVzdCddLCBbJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnknLCAnZ29v
Zy5mcy5FcnJvcicsICdnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3Rpbmcu
TW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlU3lzdGVtJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGUuanMn
LCBbJ2dvb2cudGVzdGluZy5mcy5GaWxlJ10sIFsnZ29vZy50ZXN0aW5nLmZzLkJsb2InXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGVlbnRyeV90ZXN0LmpzJywg
Wydnb29nLnRlc3RpbmcuZnMuRmlsZUVudHJ5VGVzdCddLCBbJ2dvb2cudGVzdGluZy5Bc3luY1Rl
c3RDYXNlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVF
bnRyeScsICdnb29nLnRlc3RpbmcuZnMuRmlsZVN5c3RlbScsICdnb29nLnRlc3RpbmcuanN1bml0
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9maWxlcmVhZGVyLmpz
JywgWydnb29nLnRlc3RpbmcuZnMuRmlsZVJlYWRlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVSZWFkZXIn
LCAnZ29vZy50ZXN0aW5nLmZzLlByb2dyZXNzRXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGVyZWFkZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZz
LkZpbGVSZWFkZXJUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzeW5jLkRlZmVycmVkJywg
J2dvb2cuZXZlbnRzJywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlUmVhZGVyJywgJ2dv
b2cuZnMuRmlsZVNhdmVyJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVz
dGluZy5mcy5GaWxlUmVhZGVyJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlU3lzdGVtJywgJ2dvb2cu
dGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2Zz
L2ZpbGVzeXN0ZW0uanMnLCBbJ2dvb2cudGVzdGluZy5mcy5GaWxlU3lzdGVtJ10sIFsnZ29vZy5m
cy5GaWxlU3lzdGVtJywgJ2dvb2cudGVzdGluZy5mcy5EaXJlY3RvcnlFbnRyeSddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZmlsZXdyaXRlci5qcycsIFsnZ29vZy50
ZXN0aW5nLmZzLkZpbGVXcml0ZXInXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50
VGFyZ2V0JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlU2F2ZXInLCAnZ29vZy5zdHJp
bmcnLCAnZ29vZy50ZXN0aW5nLmZzLlByb2dyZXNzRXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGV3cml0ZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5n
LmZzLkZpbGVXcml0ZXJUZXN0J10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmV2ZW50
cycsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVNhdmVyJywgJ2dvb2cudGVzdGluZy5B
c3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmZz
LkJsb2InLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0ZW0nLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZnMuanMnLCBbJ2dv
b2cudGVzdGluZy5mcyddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5j
LkRlZmVycmVkJywgJ2dvb2cuZnMnLCAnZ29vZy50ZXN0aW5nLmZzLkJsb2InLCAnZ29vZy50ZXN0
aW5nLmZzLkZpbGVTeXN0ZW0nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5n
L2ZzL2ZzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5mc1Rlc3QnXSwgWydnb29nLnRlc3Rpbmcu
QXN5bmNUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuZnMnLCAnZ29vZy50ZXN0aW5nLmZzLkJsb2In
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rl
c3RpbmcvZnMvaW50ZWdyYXRpb25fdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLmludGVncmF0
aW9uVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5hc3luYy5EZWZlcnJlZExp
c3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mcycsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5Jywg
J2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlU2F2ZXInLCAnZ29vZy50ZXN0aW5nLkFzeW5j
VGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5n
LmZzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd0ZXN0aW5nL2ZzL3Byb2dyZXNzZXZlbnQuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5Qcm9ncmVz
c0V2ZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd0ZXN0aW5nL2Z1bmN0aW9ubW9jay5qcycsIFsnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVz
dGluZy5GdW5jdGlvbk1vY2snLCAnZ29vZy50ZXN0aW5nLkdsb2JhbEZ1bmN0aW9uTW9jaycsICdn
b29nLnRlc3RpbmcuTWV0aG9kTW9jayddLCBbJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5M
b29zZU1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVw
bGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd0ZXN0aW5nL2Z1bmN0aW9ubW9ja190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuRnVu
Y3Rpb25Nb2NrVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0
aW5nJywgJ2dvb2cudGVzdGluZy5GdW5jdGlvbk1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2snLCAn
Z29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9ncmFwaGljcy5qcycsIFsnZ29vZy50ZXN0aW5nLmdy
YXBoaWNzJ10sIFsnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9pMThuL2Fzc2VydHMuanMnLCBb
J2dvb2cudGVzdGluZy5pMThuLmFzc2VydHMnXSwgWydnb29nLnRlc3RpbmcuanN1bml0J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9pMThuL2Fzc2VydHNfdGVzdC5qcycs
IFsnZ29vZy50ZXN0aW5nLmkxOG4uYXNzZXJ0c1Rlc3QnXSwgWydnb29nLnRlc3RpbmcuRXhwZWN0
ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuaTE4bi5hc3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndGVzdGluZy9qc3VuaXQuanMnLCBbJ2dvb2cudGVzdGluZy5qc3VuaXQn
XSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRl
c3RpbmcuVGVzdFJ1bm5lciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcv
bG9vc2Vtb2NrLmpzJywgWydnb29nLnRlc3RpbmcuTG9vc2VFeHBlY3RhdGlvbkNvbGxlY3Rpb24n
LCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jayddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5zdHJ1Y3Rz
Lk1hcCcsICdnb29nLnRlc3RpbmcuTW9jayddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3Rlc3RpbmcvbG9vc2Vtb2NrX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5Mb29zZU1vY2tUZXN0
J10sIFsnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBs
YWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21lc3NhZ2luZy9tb2NrbWVz
c2FnZWNoYW5uZWwuanMnLCBbJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFu
bmVsJ10sIFsnZ29vZy5tZXNzYWdpbmcuQWJzdHJhY3RDaGFubmVsJywgJ2dvb2cudGVzdGluZy5h
c3NlcnRzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tZXNzYWdpbmcv
bW9ja21lc3NhZ2VldmVudC5qcycsIFsnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2Fn
ZUV2ZW50J10sIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50
VHlwZScsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndGVzdGluZy9tZXNzYWdpbmcvbW9ja21lc3NhZ2Vwb3J0LmpzJywgWydnb29nLnRl
c3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlUG9ydCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFy
Z2V0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tZXNzYWdpbmcvbW9j
a3BvcnRuZXR3b3JrLmpzJywgWydnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tQb3J0TmV0d29y
ayddLCBbJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywgJ2dvb2cudGVzdGluZy5tZXNzYWdp
bmcuTW9ja01lc3NhZ2VDaGFubmVsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVz
dGluZy9tb2NrLmpzJywgWydnb29nLnRlc3RpbmcuTW9jaycsICdnb29nLnRlc3RpbmcuTW9ja0V4
cGVjdGF0aW9uJ10sIFsnZ29vZy5hcnJheScsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3Rpbmcu
SnNVbml0RXhjZXB0aW9uJywgJ2dvb2cudGVzdGluZy5Nb2NrSW50ZXJmYWNlJywgJ2dvb2cudGVz
dGluZy5tb2NrbWF0Y2hlcnMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5n
L21vY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tUZXN0J10sIFsnZ29vZy5hcnJheScs
ICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tD
b250cm9sJywgJ2dvb2cudGVzdGluZy5Nb2NrRXhwZWN0YXRpb24nLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2NsYXNzZmFj
dG9yeS5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDbGFzc0ZhY3RvcnknLCAnZ29vZy50ZXN0aW5n
Lk1vY2tDbGFzc1JlY29yZCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50
ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3Rp
bmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycyddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2NsYXNzZmFjdG9yeV90ZXN0LmpzJywgWydmYWtl
LkJhc2VDbGFzcycsICdmYWtlLkNoaWxkQ2xhc3MnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbGFzc0Zh
Y3RvcnlUZXN0J10sIFsnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xhc3NGYWN0
b3J5JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd0ZXN0aW5nL21vY2tjbG9jay5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDbG9jayddLCBbJ2dv
b2cuRGlzcG9zYWJsZScsICdnb29nLmFzeW5jLnJ1bicsICdnb29nLnRlc3RpbmcuUHJvcGVydHlS
ZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZl
bnQnLCAnZ29vZy50ZXN0aW5nLndhdGNoZXJzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgndGVzdGluZy9tb2NrY2xvY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDbG9ja1Rl
c3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29n
LmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9w
ZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29y
ZEZ1bmN0aW9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrY29u
dHJvbC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJ10sIFsnZ29vZy5hcnJheScsICdn
b29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuU3Ry
aWN0TW9jayddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2NvbnRy
b2xfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sVGVzdCddLCBbJ2dvb2cudGVz
dGluZy5Nb2NrJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NraW50ZXJmYWNl
LmpzJywgWydnb29nLnRlc3RpbmcuTW9ja0ludGVyZmFjZSddLCBbXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2ttYXRjaGVycy5qcycsIFsnZ29vZy50ZXN0aW5nLm1v
Y2ttYXRjaGVycycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlcics
ICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLklnbm9yZUFyZ3VtZW50JywgJ2dvb2cudGVzdGlu
Zy5tb2NrbWF0Y2hlcnMuSW5zdGFuY2VPZicsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLk9i
amVjdEVxdWFscycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLlJlZ2V4cE1hdGNoJywgJ2dv
b2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuU2F2ZUFyZ3VtZW50JywgJ2dvb2cudGVzdGluZy5tb2Nr
bWF0Y2hlcnMuVHlwZU9mJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLnRlc3Rp
bmcuYXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja21h
dGNoZXJzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnNUZXN0J10sIFsnZ29v
Zy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cu
dGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVu
dE1hdGNoZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2tyYW5k
b20uanMnLCBbJ2dvb2cudGVzdGluZy5Nb2NrUmFuZG9tJ10sIFsnZ29vZy5EaXNwb3NhYmxlJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrcmFuZG9tX3Rlc3QuanMn
LCBbJ2dvb2cudGVzdGluZy5Nb2NrUmFuZG9tVGVzdCddLCBbJ2dvb2cudGVzdGluZy5Nb2NrUmFu
ZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd0ZXN0aW5nL21vY2tyYW5nZS5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tSYW5nZSddLCBbJ2dv
b2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jayddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3JhbmdlX3Rlc3QuanMnLCBbJ2dvb2cu
dGVzdGluZy5Nb2NrUmFuZ2VUZXN0J10sIFsnZ29vZy50ZXN0aW5nLk1vY2tSYW5nZScsICdnb29n
LnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9t
b2Nrc3RvcmFnZS5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tTdG9yYWdlJ10sIFsnZ29vZy5zdHJ1
Y3RzLk1hcCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3N0b3Jh
Z2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tTdG9yYWdlVGVzdCddLCBbJ2dvb2cudGVz
dGluZy5Nb2NrU3RvcmFnZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrdXNlcmFnZW50LmpzJywgWydnb29nLnRlc3Rpbmcu
TW9ja1VzZXJBZ2VudCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxhYnMudXNlckFnZW50
LnV0aWwnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2t1c2VyYWdlbnRfdGVz
dC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tVc2VyQWdlbnRUZXN0J10sIFsnZ29vZy5kaXNwb3Nl
JywgJ2dvb2cudGVzdGluZy5Nb2NrVXNlckFnZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL211
bHRpdGVzdHJ1bm5lci5qcycsIFsnZ29vZy50ZXN0aW5nLk11bHRpVGVzdFJ1bm5lcicsICdnb29n
LnRlc3RpbmcuTXVsdGlUZXN0UnVubmVyLlRlc3RGcmFtZSddLCBbJ2dvb2cuVGltZXInLCAnZ29v
Zy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cu
ZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWku
U2VydmVyQ2hhcnQnLCAnZ29vZy51aS5UYWJsZVNvcnRlciddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3Rlc3RpbmcvbmV0L3hocmlvLmpzJywgWydnb29nLnRlc3RpbmcubmV0Llhocklv
J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbS54bWwnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5qc29uJywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdn
b29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuSHR0cFN0YXR1cycsICdnb29nLm5ldC5YaHJJ
bycsICdnb29nLm5ldC5YbWxIdHRwJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RydWN0cy5NYXAn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL25ldC94aHJpb190ZXN0Lmpz
JywgWydnb29nLnRlc3RpbmcubmV0LlhocklvVGVzdCddLCBbJ2dvb2cuZG9tLnhtbCcsICdnb29n
LmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29v
Zy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5vYmplY3QnLCAnZ29v
Zy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5JbnN0YW5jZU9mJywgJ2dv
b2cudGVzdGluZy5uZXQuWGhySW8nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0
aW5nL25ldC94aHJpb3Bvb2wuanMnLCBbJ2dvb2cudGVzdGluZy5uZXQuWGhySW9Qb29sJ10sIFsn
Z29vZy5uZXQuWGhySW9Qb29sJywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL29iamVjdHByb3BlcnR5c3RyaW5nLmpzJywgWydn
b29nLnRlc3RpbmcuT2JqZWN0UHJvcGVydHlTdHJpbmcnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndGVzdGluZy9wZXJmb3JtYW5jZXRhYmxlLmpzJywgWydnb29nLnRlc3Rpbmcu
UGVyZm9ybWFuY2VUYWJsZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29v
Zy50ZXN0aW5nLlBlcmZvcm1hbmNlVGltZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd0ZXN0aW5nL3BlcmZvcm1hbmNldGltZXIuanMnLCBbJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5j
ZVRpbWVyJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyLlRhc2snXSwgWydnb29nLmFy
cmF5JywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5tYXRoJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndGVzdGluZy9wZXJmb3JtYW5jZXRpbWVyX3Rlc3QuanMnLCBbJ2dvb2cu
dGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAn
Z29vZy5kb20nLCAnZ29vZy5tYXRoJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50
ZXN0aW5nLlBlcmZvcm1hbmNlVGltZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcHJvcGVydHlyZXBsYWNlci5qcycsIFsnZ29v
Zy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInXSwgWydnb29nLnRlc3RpbmcuT2JqZWN0UHJvcGVy
dHlTdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd0ZXN0aW5nL3Byb3BlcnR5cmVwbGFjZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLlByb3Bl
cnR5UmVwbGFjZXJUZXN0J10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcuUHJv
cGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuanN1
bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wcm90bzIvcHJvdG8y
LmpzJywgWydnb29nLnRlc3RpbmcucHJvdG8yJ10sIFsnZ29vZy5wcm90bzIuTWVzc2FnZScsICdn
b29nLnByb3RvMi5PYmplY3RTZXJpYWxpemVyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wcm90bzIvcHJvdG8yX3Rlc3QuanMn
LCBbJ2dvb2cudGVzdGluZy5wcm90bzJUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdn
b29nLnRlc3RpbmcucHJvdG8yJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3BzZXVkb3JhbmRvbS5qcycsIFsnZ29vZy50ZXN0aW5n
LlBzZXVkb1JhbmRvbSddLCBbJ2dvb2cuRGlzcG9zYWJsZSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3Rlc3RpbmcvcHNldWRvcmFuZG9tX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5Q
c2V1ZG9SYW5kb21UZXN0J10sIFsnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRvbScsICdnb29nLnRl
c3RpbmcuanN1bml0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9yZWNv
cmRmdW5jdGlvbi5qcycsIFsnZ29vZy50ZXN0aW5nLkZ1bmN0aW9uQ2FsbCcsICdnb29nLnRlc3Rp
bmcucmVjb3JkQ29uc3RydWN0b3InLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIFsn
Z29vZy50ZXN0aW5nLmFzc2VydHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0
aW5nL3JlY29yZGZ1bmN0aW9uX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlv
blRlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNl
cicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRDb25zdHJ1Y3Rv
cicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd0ZXN0aW5nL3NoYXJkaW5ndGVzdGNhc2UuanMnLCBbJ2dvb2cudGVzdGluZy5TaGFy
ZGluZ1Rlc3RDYXNlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc2hhcmRpbmd0ZXN0Y2FzZV90
ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuU2hhcmRpbmdUZXN0Q2FzZVRlc3QnXSwgWydnb29nLnRl
c3RpbmcuU2hhcmRpbmdUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50
ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc2luZ2xldG9uLmpzJywgWydnb29nLnRlc3Rpbmcuc2luZ2xl
dG9uJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc2luZ2xldG9u
X3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5zaW5nbGV0b25UZXN0J10sIFsnZ29vZy50ZXN0aW5n
LmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rpbmcuc2luZ2xldG9u
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdGFja3RyYWNlLmpzJywg
Wydnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZScsICdnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZS5GcmFt
ZSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3N0YWNrdHJhY2Vf
dGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLnN0YWNrdHJhY2VUZXN0J10sIFsnZ29vZy5mdW5jdGlv
bnMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29v
Zy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAn
Z29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rp
bmcuc3RhY2t0cmFjZScsICdnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZS5GcmFtZScsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc3RvcmFnZS9m
YWtlbWVjaGFuaXNtLmpzJywgWydnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJ10s
IFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5JdGVyYWJsZU1lY2hhbmlzbScsICdnb29nLnN0cnVj
dHMuTWFwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdHJpY3Rtb2Nr
LmpzJywgWydnb29nLnRlc3RpbmcuU3RyaWN0TW9jayddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy50
ZXN0aW5nLk1vY2snXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3N0cmlj
dG1vY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2tUZXN0J10sIFsnZ29vZy50
ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc3R5bGUvbGF5b3V0YXNzZXJ0cy5qcycsIFsnZ29vZy50
ZXN0aW5nLnN0eWxlLmxheW91dGFzc2VydHMnXSwgWydnb29nLnN0eWxlJywgJ2dvb2cudGVzdGlu
Zy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5zdHlsZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3Rlc3Rpbmcvc3R5bGUvbGF5b3V0YXNzZXJ0c190ZXN0LmpzJywgWydnb29nLnRlc3Rp
bmcuc3R5bGUubGF5b3V0YXNzZXJ0c1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdO
YW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rpbmcu
c3R5bGUubGF5b3V0YXNzZXJ0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rp
bmcvc3R5bGUvc3R5bGUuanMnLCBbJ2dvb2cudGVzdGluZy5zdHlsZSddLCBbJ2dvb2cuZG9tJywg
J2dvb2cubWF0aC5SZWN0JywgJ2dvb2cuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd0ZXN0aW5nL3N0eWxlL3N0eWxlX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5zdHlsZVRl
c3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rpbmcuc3R5bGUnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3Rlc3RjYXNlLmpzJywgWydnb29nLnRlc3RpbmcuVGVzdENh
c2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlLkVycm9yJywgJ2dvb2cudGVzdGluZy5UZXN0Q2Fz
ZS5PcmRlcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UuUmVzdWx0JywgJ2dvb2cudGVzdGluZy5U
ZXN0Q2FzZS5UZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGhlbmFibGUnLCAnZ29vZy5k
b20uVGFnTmFtZScsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29n
LnRlc3Rpbmcuc3RhY2t0cmFjZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rp
bmcvdGVzdGNhc2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLlRlc3RDYXNlVGVzdCddLCBbJ2dv
b2cuUHJvbWlzZScsICdnb29nLnRlc3RpbmcuTW9ja1JhbmRvbScsICdnb29nLnRlc3RpbmcuVGVz
dENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3Rlc3RpbmcvdGVzdHF1ZXVlLmpzJywgWydnb29nLnRlc3RpbmcuVGVzdFF1ZXVlJ10sIFtd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdGVzdHJ1bm5lci5qcycsIFsn
Z29vZy50ZXN0aW5nLlRlc3RSdW5uZXInXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVz
dGluZy5UZXN0Q2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdGVz
dHN1aXRlLmpzJywgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIFsnZ29vZy50ZXN0aW5nLlRl
c3RDYXNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy91aS9yZW5kZXJl
cmFzc2VydHMuanMnLCBbJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnXSwgWydnb29n
LnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdWkvcmVuZGVyZXJhc3NlcnRzX3Rlc3QuanMnLCBb
J2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmFz
c2VydHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJh
c3NlcnRzJywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndGVzdGluZy91aS9yZW5kZXJlcmhhcm5lc3MuanMnLCBbJ2dvb2cudGVzdGluZy51
aS5SZW5kZXJlckhhcm5lc3MnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5kb20uTm9kZVR5
cGUnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmRvbSddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdWkvc3R5bGUuanMnLCBbJ2dvb2cudGVzdGlu
Zy51aS5zdHlsZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdWkvc3R5bGVfdGVzdC5qcycsIFsnZ29vZy50ZXN0
aW5nLnVpLnN0eWxlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy50ZXN0aW5nLnVpLnN0eWxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndGVz
dGluZy93YXRjaGVycy5qcycsIFsnZ29vZy50ZXN0aW5nLndhdGNoZXJzJ10sIFtdLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3RpbWVyL3RpbWVyLmpzJywgWydnb29nLlRpbWVyJ10sIFsn
Z29vZy5Qcm9taXNlJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndGltZXIvdGltZXJfdGVzdC5qcycsIFsnZ29vZy5UaW1lclRlc3QnXSwg
Wydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29nLnRlc3Rp
bmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd0d2Vhay9lbnRyaWVzLmpzJywgWydnb29nLnR3ZWFrLkJhc2VFbnRyeScsICdn
b29nLnR3ZWFrLkJhc2VQcmltaXRpdmVTZXR0aW5nJywgJ2dvb2cudHdlYWsuQmFzZVNldHRpbmcn
LCAnZ29vZy50d2Vhay5Cb29sZWFuR3JvdXAnLCAnZ29vZy50d2Vhay5Cb29sZWFuSW5Hcm91cFNl
dHRpbmcnLCAnZ29vZy50d2Vhay5Cb29sZWFuU2V0dGluZycsICdnb29nLnR3ZWFrLkJ1dHRvbkFj
dGlvbicsICdnb29nLnR3ZWFrLk51bWVyaWNTZXR0aW5nJywgJ2dvb2cudHdlYWsuU3RyaW5nU2V0
dGluZyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cubG9nJywgJ2dvb2cu
b2JqZWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsvZW50cmllc190ZXN0
LmpzJywgWydnb29nLnR3ZWFrLkJhc2VFbnRyeVRlc3QnXSwgWydnb29nLnRlc3RpbmcuTW9ja0Nv
bnRyb2wnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnR3ZWFrLnRlc3RoZWxwZXJzJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsvcmVnaXN0cnkuanMnLCBbJ2dvb2cu
dHdlYWsuUmVnaXN0cnknXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmxv
ZycsICdnb29nLnN0cmluZycsICdnb29nLnR3ZWFrLkJhc2VQcmltaXRpdmVTZXR0aW5nJywgJ2dv
b2cudHdlYWsuQmFzZVNldHRpbmcnLCAnZ29vZy50d2Vhay5Cb29sZWFuU2V0dGluZycsICdnb29n
LnR3ZWFrLk51bWVyaWNTZXR0aW5nJywgJ2dvb2cudHdlYWsuU3RyaW5nU2V0dGluZycsICdnb29n
LnVyaS51dGlscyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL3JlZ2lzdHJ5
X3Rlc3QuanMnLCBbJ2dvb2cudHdlYWsuUmVnaXN0cnlUZXN0J10sIFsnZ29vZy5hc3NlcnRzLkFz
c2VydGlvbkVycm9yJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50d2VhaycsICdnb29n
LnR3ZWFrLnRlc3RoZWxwZXJzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsv
dGVzdGhlbHBlcnMuanMnLCBbJ2dvb2cudHdlYWsudGVzdGhlbHBlcnMnXSwgWydnb29nLnR3ZWFr
JywgJ2dvb2cudHdlYWsuQm9vbGVhbkdyb3VwJywgJ2dvb2cudHdlYWsuQm9vbGVhbkluR3JvdXBT
ZXR0aW5nJywgJ2dvb2cudHdlYWsuQm9vbGVhblNldHRpbmcnLCAnZ29vZy50d2Vhay5CdXR0b25B
Y3Rpb24nLCAnZ29vZy50d2Vhay5OdW1lcmljU2V0dGluZycsICdnb29nLnR3ZWFrLlJlZ2lzdHJ5
JywgJ2dvb2cudHdlYWsuU3RyaW5nU2V0dGluZyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3R3ZWFrL3R3ZWFrLmpzJywgWydnb29nLnR3ZWFrJywgJ2dvb2cudHdlYWsuQ29uZmlnUGFy
YW1zJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cudHdlYWsuQmFzZVNldHRpbmcnLCAnZ29vZy50
d2Vhay5Cb29sZWFuR3JvdXAnLCAnZ29vZy50d2Vhay5Cb29sZWFuSW5Hcm91cFNldHRpbmcnLCAn
Z29vZy50d2Vhay5Cb29sZWFuU2V0dGluZycsICdnb29nLnR3ZWFrLkJ1dHRvbkFjdGlvbicsICdn
b29nLnR3ZWFrLk51bWVyaWNTZXR0aW5nJywgJ2dvb2cudHdlYWsuUmVnaXN0cnknLCAnZ29vZy50
d2Vhay5TdHJpbmdTZXR0aW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsv
dHdlYWt1aS5qcycsIFsnZ29vZy50d2Vhay5FbnRyaWVzUGFuZWwnLCAnZ29vZy50d2Vhay5Ud2Vh
a1VpJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5k
b20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29n
Lm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudHdlYWsn
LCAnZ29vZy50d2Vhay5CYXNlRW50cnknLCAnZ29vZy50d2Vhay5Cb29sZWFuR3JvdXAnLCAnZ29v
Zy50d2Vhay5Cb29sZWFuSW5Hcm91cFNldHRpbmcnLCAnZ29vZy50d2Vhay5Cb29sZWFuU2V0dGlu
ZycsICdnb29nLnR3ZWFrLkJ1dHRvbkFjdGlvbicsICdnb29nLnR3ZWFrLk51bWVyaWNTZXR0aW5n
JywgJ2dvb2cudHdlYWsuU3RyaW5nU2V0dGluZycsICdnb29nLnVpLlppcHB5JywgJ2dvb2cudXNl
ckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsvdHdlYWt1aV90ZXN0
LmpzJywgWydnb29nLnR3ZWFrLlR3ZWFrVWlUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudHdl
YWsnLCAnZ29vZy50d2Vhay5Ud2Vha1VpJywgJ2dvb2cudHdlYWsudGVzdGhlbHBlcnMnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYnN0cmFjdHNwZWxsY2hlY2tlci5qcycsIFsn
Z29vZy51aS5BYnN0cmFjdFNwZWxsQ2hlY2tlcicsICdnb29nLnVpLkFic3RyYWN0U3BlbGxDaGVj
a2VyLkFzeW5jUmVzdWx0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hcnJheScsICdnb29n
LmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLk5v
ZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cu
ZG9tLnNlbGVjdGlvbicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zcGVsbC5T
cGVsbENoZWNrJywgJ2dvb2cuc3RydWN0cy5TZXQnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNv
bXBvbmVudCcsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkuTWVudVNlcGFyYXRvcicsICdn
b29nLnVpLlBvcHVwTWVudSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2Fj
LmpzJywgWydnb29nLnVpLmFjJ10sIFsnZ29vZy51aS5hYy5BcnJheU1hdGNoZXInLCAnZ29vZy51
aS5hYy5BdXRvQ29tcGxldGUnLCAnZ29vZy51aS5hYy5JbnB1dEhhbmRsZXInLCAnZ29vZy51aS5h
Yy5SZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2FjX3Rlc3Qu
anMnLCBbJ2dvb2cudWkuYWNUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAn
Z29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dv
b2cuZG9tLnNlbGVjdGlvbicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZl
bnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
ZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycs
ICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuYWMnLCAnZ29vZy51c2VyQWdlbnQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9hcnJheW1hdGNoZXIuanMnLCBbJ2dv
b2cudWkuYWMuQXJyYXlNYXRjaGVyJ10sIFsnZ29vZy5zdHJpbmcnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9hYy9hcnJheW1hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy51aS5hYy5B
cnJheU1hdGNoZXJUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLmFjLkFy
cmF5TWF0Y2hlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2F1dG9jb21w
bGV0ZS5qcycsIFsnZ29vZy51aS5hYy5BdXRvQ29tcGxldGUnLCAnZ29vZy51aS5hYy5BdXRvQ29t
cGxldGUuRXZlbnRUeXBlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5l
dmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5vYmplY3QnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9hdXRvY29tcGxldGVfdGVzdC5qcycsIFsnZ29v
Zy51aS5hYy5BdXRvQ29tcGxldGVUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5
LmFyaWEuUm9sZScsICdnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRU
YXJnZXQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cu
dGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubW9j
a21hdGNoZXJzJywgJ2dvb2cudWkuYWMuQXV0b0NvbXBsZXRlJywgJ2dvb2cudWkuYWMuSW5wdXRI
YW5kbGVyJywgJ2dvb2cudWkuYWMuUmVuZGVyT3B0aW9ucycsICdnb29nLnVpLmFjLlJlbmRlcmVy
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvY2FjaGluZ21hdGNoZXIuanMn
LCBbJ2dvb2cudWkuYWMuQ2FjaGluZ01hdGNoZXInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXN5
bmMuVGhyb3R0bGUnLCAnZ29vZy51aS5hYy5BcnJheU1hdGNoZXInLCAnZ29vZy51aS5hYy5SZW5k
ZXJPcHRpb25zJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvY2FjaGluZ21h
dGNoZXJfdGVzdC5qcycsIFsnZ29vZy51aS5hYy5DYWNoaW5nTWF0Y2hlclRlc3QnXSwgWydnb29n
LnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3Rp
bmcubW9ja21hdGNoZXJzJywgJ2dvb2cudWkuYWMuQ2FjaGluZ01hdGNoZXInXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9pbnB1dGhhbmRsZXIuanMnLCBbJ2dvb2cudWkuYWMu
SW5wdXRIYW5kbGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5h
MTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uc2VsZWN0aW9uJywgJ2dvb2cuZXZlbnRz
LkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5
Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLnN0cmluZycsICdnb29nLnVz
ZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvYWMvaW5wdXRoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuSW5wdXRI
YW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tLnNlbGVjdGlvbicsICdnb29nLmV2ZW50cy5Ccm93c2Vy
RXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAn
Z29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5vYmplY3QnLCAn
Z29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWku
YWMuSW5wdXRIYW5kbGVyJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvYWMvcmVtb3RlLmpzJywgWydnb29nLnVpLmFjLlJlbW90ZSddLCBbJ2dvb2cu
dWkuYWMuQXV0b0NvbXBsZXRlJywgJ2dvb2cudWkuYWMuSW5wdXRIYW5kbGVyJywgJ2dvb2cudWku
YWMuUmVtb3RlQXJyYXlNYXRjaGVyJywgJ2dvb2cudWkuYWMuUmVuZGVyZXInXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yZW1vdGVhcnJheW1hdGNoZXIuanMnLCBbJ2dvb2cu
dWkuYWMuUmVtb3RlQXJyYXlNYXRjaGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVXJp
JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuanNvbicsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29v
Zy5uZXQuWGhySW8nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yZW1vdGVh
cnJheW1hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy51aS5hYy5SZW1vdGVBcnJheU1hdGNoZXJUZXN0
J10sIFsnZ29vZy5qc29uJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29u
dHJvbCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nLCAn
Z29vZy51aS5hYy5SZW1vdGVBcnJheU1hdGNoZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS9hYy9yZW5kZXJlci5qcycsIFsnZ29vZy51aS5hYy5SZW5kZXJlcicsICdnb29nLnVp
LmFjLlJlbmRlcmVyLkN1c3RvbVJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5h
MTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dv
b2cuYXNzZXJ0cycsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5
cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVu
dHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywg
J2dvb2cuZnguZG9tLkZhZGVJbkFuZFNob3cnLCAnZ29vZy5meC5kb20uRmFkZU91dEFuZEhpZGUn
LCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBv
c2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51
aS5JZEdlbmVyYXRvcicsICdnb29nLnVpLmFjLkF1dG9Db21wbGV0ZSddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL2FjL3JlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuUmVu
ZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdn
b29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmZ4LmRvbS5GYWRlSW5BbmRT
aG93JywgJ2dvb2cuZnguZG9tLkZhZGVPdXRBbmRIaWRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cu
c3R5bGUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnVpLmFjLkF1dG9Db21wbGV0ZScsICdnb29nLnVpLmFjLlJlbmRlcmVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvcmVuZGVyb3B0aW9ucy5qcycsIFsn
Z29vZy51aS5hYy5SZW5kZXJPcHRpb25zJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3VpL2FjL3JpY2hpbnB1dGhhbmRsZXIuanMnLCBbJ2dvb2cudWkuYWMuUmljaElucHV0SGFu
ZGxlciddLCBbJ2dvb2cudWkuYWMuSW5wdXRIYW5kbGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvYWMvcmljaHJlbW90ZS5qcycsIFsnZ29vZy51aS5hYy5SaWNoUmVtb3RlJ10s
IFsnZ29vZy51aS5hYy5BdXRvQ29tcGxldGUnLCAnZ29vZy51aS5hYy5SZW1vdGUnLCAnZ29vZy51
aS5hYy5SZW5kZXJlcicsICdnb29nLnVpLmFjLlJpY2hJbnB1dEhhbmRsZXInLCAnZ29vZy51aS5h
Yy5SaWNoUmVtb3RlQXJyYXlNYXRjaGVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dWkvYWMvcmljaHJlbW90ZWFycmF5bWF0Y2hlci5qcycsIFsnZ29vZy51aS5hYy5SaWNoUmVtb3Rl
QXJyYXlNYXRjaGVyJ10sIFsnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwubGVnYWN5Y29udmVy
c2lvbnMnLCAnZ29vZy5qc29uJywgJ2dvb2cudWkuYWMuUmVtb3RlQXJyYXlNYXRjaGVyJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWN0aXZpdHltb25pdG9yLmpzJywgWydnb29n
LnVpLkFjdGl2aXR5TW9uaXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dv
b2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRh
cmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS9hY3Rpdml0eW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy51aS5BY3Rpdml0eU1vbml0
b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQn
LCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29v
Zy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29n
LnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnVp
LkFjdGl2aXR5TW9uaXRvciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FkdmFu
Y2VkdG9vbHRpcC5qcycsIFsnZ29vZy51aS5BZHZhbmNlZFRvb2x0aXAnXSwgWydnb29nLmV2ZW50
cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGgu
Q29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuVG9vbHRpcCcsICdnb29nLnVzZXJB
Z2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FkdmFuY2VkdG9vbHRpcF90
ZXN0LmpzJywgWydnb29nLnVpLkFkdmFuY2VkVG9vbHRpcFRlc3QnXSwgWydnb29nLmRvbScsICdn
b29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50
VHlwZScsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5
bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dv
b2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5BZHZhbmNlZFRvb2x0aXAnLCAnZ29vZy51aS5U
b29sdGlwJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dWkvYW5pbWF0ZWR6aXBweS5qcycsIFsnZ29vZy51aS5BbmltYXRlZFppcHB5J10sIFsnZ29vZy5k
b20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ4LkFuaW1hdGlv
bicsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5lYXNpbmcnLCAnZ29vZy51aS5aaXBw
eScsICdnb29nLnVpLlppcHB5RXZlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
aS9hbmltYXRlZHppcHB5X3Rlc3QuanMnLCBbJ2dvb2cudWkuQW5pbWF0ZWRaaXBweVRlc3QnXSwg
Wydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFzc2VydHMn
LCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5B
bmltYXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJl
cGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAn
Z29vZy51aS5BbmltYXRlZFppcHB5JywgJ2dvb2cudWkuWmlwcHknXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9hdHRhY2hhYmxlbWVudS5qcycsIFsnZ29vZy51aS5BdHRhY2hhYmxl
TWVudSddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cu
YXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcs
ICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnN0cmlu
ZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuSXRlbUV2ZW50JywgJ2dvb2cudWkuTWVudUJhc2Un
LCAnZ29vZy51aS5Qb3B1cEJhc2UnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9iaWRpaW5wdXQuanMnLCBbJ2dvb2cudWkuQmlkaUlucHV0J10sIFsn
Z29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29v
Zy5ldmVudHMnLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuaTE4bi5iaWRpJywg
J2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnVpLkNvbXBvbmVudCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL2JpZGlpbnB1dF90ZXN0LmpzJywgWydnb29nLnVpLkJpZGlJbnB1
dFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuQmlk
aUlucHV0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYnViYmxlLmpzJywgWydn
b29nLnVpLkJ1YmJsZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2
ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dv
b2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29nLm1hdGguQm94JywgJ2dvb2cucG9zaXRp
b25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5BYnNvbHV0ZVBvc2l0aW9uJywgJ2dvb2cucG9zaXRp
b25pbmcuQW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29n
LnBvc2l0aW9uaW5nLkNvcm5lckJpdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0eWxl
JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuUG9wdXAnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9idXR0b24uanMnLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWku
QnV0dG9uLlNpZGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5
Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLnVpLkJ1dHRvblJlbmRlcmVy
JywgJ2dvb2cudWkuQnV0dG9uU2lkZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNv
bnRyb2wnLCAnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYnV0dG9uX3Rlc3QuanMnLCBbJ2dv
b2cudWkuQnV0dG9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdn
b29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUn
LCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29n
LnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5CdXR0b24n
LCAnZ29vZy51aS5CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkJ1dHRvblNpZGUnLCAnZ29vZy51
aS5Db21wb25lbnQnLCAnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlciddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3VpL2J1dHRvbnJlbmRlcmVyLmpzJywgWydnb29nLnVpLkJ1dHRv
blJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdn
b29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy51aS5CdXR0b25TaWRl
JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvYnV0dG9ucmVuZGVyZXJfdGVzdC5qcycsIFsnZ29v
Zy51aS5CdXR0b25SZW5kZXJlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXku
YXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9t
LmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3Rp
bmcuanN1bml0JywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5C
dXR0b24nLCAnZ29vZy51aS5CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkJ1dHRvblNpZGUnLCAn
Z29vZy51aS5Db21wb25lbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9idXR0
b25zaWRlLmpzJywgWydnb29nLnVpLkJ1dHRvblNpZGUnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvY2hhcmNvdW50ZXIuanMnLCBbJ2dvb2cudWkuQ2hhckNvdW50ZXInLCAn
Z29vZy51aS5DaGFyQ291bnRlci5EaXNwbGF5J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMn
LCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hhcmNvdW50ZXJfdGVzdC5qcycsIFsn
Z29vZy51aS5DaGFyQ291bnRlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcuYXNz
ZXJ0cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuQ2hhckNvdW50ZXInLCAnZ29v
Zy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jaGFycGlja2Vy
LmpzJywgWydnb29nLnVpLkNoYXJQaWNrZXInXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmEx
MXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycs
ICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5l
dmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlcicsICdnb29nLmV2ZW50
cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuaTE4bi5DaGFyTGlz
dERlY29tcHJlc3NvcicsICdnb29nLmkxOG4udUNoYXInLCAnZ29vZy5zdHJ1Y3RzLlNldCcsICdn
b29nLnN0eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cu
dWkuQ29udGFpbmVyU2Nyb2xsZXInLCAnZ29vZy51aS5GbGF0QnV0dG9uUmVuZGVyZXInLCAnZ29v
Zy51aS5Ib3ZlckNhcmQnLCAnZ29vZy51aS5MYWJlbElucHV0JywgJ2dvb2cudWkuTWVudScsICdn
b29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLlRvb2x0aXAn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jaGFycGlja2VyX3Rlc3QuanMnLCBb
J2dvb2cudWkuQ2hhclBpY2tlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXku
YXJpYS5TdGF0ZScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZl
bnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaTE4bi5DaGFyUGlja2VyRGF0YScs
ICdnb29nLmkxOG4udUNoYXIuTmFtZUZldGNoZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9s
JywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRl
c3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudWkuQ2hhclBpY2tlcicsICdnb29nLnVpLkZsYXRC
dXR0b25SZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NoZWNrYm94
LmpzJywgWydnb29nLnVpLkNoZWNrYm94JywgJ2dvb2cudWkuQ2hlY2tib3guU3RhdGUnXSwgWydn
b29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmV2ZW50cy5FdmVu
dFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51aS5D
aGVja2JveFJlbmRlcmVyJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcs
ICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hl
Y2tib3hfdGVzdC5qcycsIFsnZ29vZy51aS5DaGVja2JveFRlc3QnXSwgWydnb29nLmExMXkuYXJp
YScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cu
ZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZl
bnRzJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNoZWNrYm94JywgJ2dvb2cudWkuQ2hlY2tib3hS
ZW5kZXJlcicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcics
ICdnb29nLnVpLmRlY29yYXRlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hl
Y2tib3htZW51aXRlbS5qcycsIFsnZ29vZy51aS5DaGVja0JveE1lbnVJdGVtJ10sIFsnZ29vZy51
aS5NZW51SXRlbScsICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgndWkvY2hlY2tib3hyZW5kZXJlci5qcycsIFsnZ29vZy51aS5DaGVja2JveFJlbmRlcmVy
J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXku
YXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5UYWdO
YW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLm9iamVjdCcsICdnb29nLnVpLkNvbnRy
b2xSZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbG9yYnV0dG9u
LmpzJywgWydnb29nLnVpLkNvbG9yQnV0dG9uJ10sIFsnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51
aS5Db2xvckJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd1aS9jb2xvcmJ1dHRvbl90ZXN0LmpzJywgWydnb29nLnVpLkNvbG9y
QnV0dG9uVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy51aS5Db2xvckJ1dHRvbicsICdnb29nLnVpLmRlY29yYXRlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JidXR0b25yZW5kZXJlci5qcycsIFsnZ29v
Zy51aS5Db2xvckJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLmNs
YXNzbGlzdCcsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnVpLkNvbG9yTWVudUJ1dHRvblJlbmRl
cmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JtZW51YnV0dG9uLmpz
JywgWydnb29nLnVpLkNvbG9yTWVudUJ1dHRvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5vYmpl
Y3QnLCAnZ29vZy51aS5Db2xvck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkNvbG9yUGFs
ZXR0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51
QnV0dG9uJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd1aS9jb2xvcm1lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Db2xvck1lbnVCdXR0
b25SZW5kZXJlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNvbG9yJywgJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuTWVudUJ1dHRvblJlbmRlcmVy
JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29s
b3JtZW51YnV0dG9ucmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Db2xvck1lbnVCdXR0b25U
ZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudGVzdGluZy51aS5SZW5kZXJlckhhcm5lc3MnLCAnZ29vZy50ZXN0aW5nLnVp
LnJlbmRlcmVyYXNzZXJ0cycsICdnb29nLnVpLkNvbG9yTWVudUJ1dHRvbicsICdnb29nLnVpLkNv
bG9yTWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndWkvY29sb3JwYWxldHRlLmpzJywgWydnb29nLnVpLkNvbG9yUGFsZXR0
ZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5jb2xvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cuc3R5bGUnLCAnZ29vZy51aS5QYWxldHRlJywgJ2dvb2cudWkuUGFsZXR0ZVJlbmRlcmVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JwYWxldHRlX3Rlc3QuanMnLCBb
J2dvb2cudWkuQ29sb3JQYWxldHRlVGVzdCddLCBbJ2dvb2cuY29sb3InLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLkNvbG9yUGFsZXR0ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VpL2NvbG9ycGlja2VyLmpzJywgWydnb29nLnVpLkNvbG9yUGlja2VyJywgJ2dvb2cu
dWkuQ29sb3JQaWNrZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy51aS5Db2xvclBhbGV0dGUnLCAnZ29v
Zy51aS5Db21wb25lbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb2xvcnNw
bGl0YmVoYXZpb3IuanMnLCBbJ2dvb2cudWkuQ29sb3JTcGxpdEJlaGF2aW9yJ10sIFsnZ29vZy51
aS5Db2xvck1lbnVCdXR0b24nLCAnZ29vZy51aS5TcGxpdEJlaGF2aW9yJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgndWkvY29tYm9ib3guanMnLCBbJ2dvb2cudWkuQ29tYm9Cb3gnLCAn
Z29vZy51aS5Db21ib0JveEl0ZW0nXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXNzZXJ0cycsICdn
b29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
LmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLklu
cHV0SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5k
bGVyJywgJ2dvb2cubG9nJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRp
b25pbmcuTWVudUFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScs
ICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkl0ZW1FdmVudCcsICdnb29nLnVpLkxhYmVs
SW5wdXQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5NZW51
U2VwYXJhdG9yJywgJ2dvb2cudWkucmVnaXN0cnknLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb21ib2JveF90ZXN0LmpzJywgWydnb29nLnVpLkNv
bWJvQm94VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20u
Y2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xv
Y2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cu
dWkuQ29tYm9Cb3gnLCAnZ29vZy51aS5Db21ib0JveEl0ZW0nLCAnZ29vZy51aS5Db21wb25lbnQn
LCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInLCAnZ29vZy51aS5MYWJlbElucHV0JywgJ2dvb2cu
dWkuTWVudScsICdnb29nLnVpLk1lbnVJdGVtJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgndWkvY29tcG9uZW50LmpzJywgWydnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbXBv
bmVudC5FcnJvcicsICdnb29nLnVpLkNvbXBvbmVudC5FdmVudFR5cGUnLCAnZ29vZy51aS5Db21w
b25lbnQuU3RhdGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScs
ICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2
ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLm9iamVjdCcsICdn
b29nLnN0eWxlJywgJ2dvb2cudWkuSWRHZW5lcmF0b3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd1aS9jb21wb25lbnRfdGVzdC5qcycsIFsnZ29vZy51aS5Db21wb25lbnRUZXN0J10s
IFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy50ZXN0
aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNv
bXBvbmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRhaW5lci5qcycs
IFsnZ29vZy51aS5Db250YWluZXInLCAnZ29vZy51aS5Db250YWluZXIuRXZlbnRUeXBlJywgJ2dv
b2cudWkuQ29udGFpbmVyLk9yaWVudGF0aW9uJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5h
MTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRz
LkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5k
bGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAn
Z29vZy51aS5Db250YWluZXJSZW5kZXJlcicsICdnb29nLnVpLkNvbnRyb2wnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250YWluZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Db250
YWluZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMu
RXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5RXZlbnQnLCAn
Z29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuQ29t
cG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udHJvbCddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRhaW5lcnJlbmRlcmVyLmpzJywgWydnb29nLnVp
LkNvbnRhaW5lclJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hcnJheScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdn
b29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnVp
LnJlZ2lzdHJ5JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgndWkvY29udGFpbmVycmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Db250YWluZXJSZW5k
ZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5
UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcudWkucmVuZGVy
ZXJhc3NlcnRzJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVy
ZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9j
b250YWluZXJzY3JvbGxlci5qcycsIFsnZ29vZy51aS5Db250YWluZXJTY3JvbGxlciddLCBbJ2dv
b2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcics
ICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29udGFpbmVyc2Nyb2xsZXJfdGVzdC5q
cycsIFsnZ29vZy51aS5Db250YWluZXJTY3JvbGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29n
LnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLkNvbnRhaW5lclNjcm9sbGVy
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29udHJvbC5qcycsIFsnZ29vZy51
aS5Db250cm9sJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20n
LCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cu
ZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVu
dHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLnN0cmluZycsICdn
b29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2xDb250ZW50JywgJ2dvb2cudWkuQ29u
dHJvbFJlbmRlcmVyJywgJ2dvb2cudWkuZGVjb3JhdGUnLCAnZ29vZy51aS5yZWdpc3RyeScsICdn
b29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRyb2xf
dGVzdC5qcycsIFsnZ29vZy51aS5Db250cm9sVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dv
b2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVu
dHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0Jywg
J2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVy
ZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50Jywg
J2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250
cm9sJywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknLCAnZ29v
Zy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250cm9sY29u
dGVudC5qcycsIFsnZ29vZy51aS5Db250cm9sQ29udGVudCddLCBbXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9jb250cm9scmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuQ29udHJvbFJl
bmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29n
LmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRv
bScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLm9iamVj
dCcsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dv
b2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29udHJvbHJl
bmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyVGVzdCddLCBbJ2dvb2cu
YTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUn
LCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdn
b29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnRl
c3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcics
ICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29u
dHJvbCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Nvb2tpZWVkaXRvci5qcycsIFsnZ29vZy51aS5D
b29raWVFZGl0b3InXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuY29va2llcycsICdnb29n
LnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgndWkvY29va2llZWRpdG9yX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29v
a2llRWRpdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cu
ZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5jb29raWVzJywgJ2dvb2cudGVzdGluZy5ldmVu
dHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNvb2tpZUVkaXRvciddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NzczNidXR0b25yZW5kZXJlci5qcycsIFsnZ29v
Zy51aS5Dc3MzQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5C
dXR0b25SZW5kZXJlcicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLklOTElORV9CTE9D
S19DTEFTU05BTUUnLCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VpL2NzczNtZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuQ3NzM01lbnVC
dXR0b25SZW5kZXJlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51
aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkuTWVudUJ1dHRvbicsICdnb29nLnVp
Lk1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndWkvY3NzbmFtZXMuanMnLCBbJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NM
QVNTTkFNRSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jdXN0b21idXR0
b24uanMnLCBbJ2dvb2cudWkuQ3VzdG9tQnV0dG9uJ10sIFsnZ29vZy51aS5CdXR0b24nLCAnZ29v
Zy51aS5DdXN0b21CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY3VzdG9tYnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cu
dWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cu
YXNzZXJ0cycsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cu
ZG9tLmNsYXNzbGlzdCcsICdnb29nLnN0cmluZycsICdnb29nLnVpLkJ1dHRvblJlbmRlcmVyJywg
J2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VpL2N1c3RvbWNvbG9ycGFsZXR0ZS5qcycsIFsnZ29vZy51aS5DdXN0b21Db2xvclBh
bGV0dGUnXSwgWydnb29nLmNvbG9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAn
Z29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQ29sb3JQYWxldHRlJywgJ2dvb2cudWkuQ29t
cG9uZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvY3VzdG9tY29sb3JwYWxl
dHRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ3VzdG9tQ29sb3JQYWxldHRlVGVzdCddLCBbJ2dvb2cu
ZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5qc3VuaXQn
LCAnZ29vZy51aS5DdXN0b21Db2xvclBhbGV0dGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS9kYXRlcGlja2VyLmpzJywgWydnb29nLnVpLkRhdGVQaWNrZXInLCAnZ29vZy51aS5E
YXRlUGlja2VyLkV2ZW50cycsICdnb29nLnVpLkRhdGVQaWNrZXJFdmVudCddLCBbJ2dvb2cuYTEx
eS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0
ZVJhbmdlJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2Rl
VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2
ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5SGFu
ZGxlcicsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0
dGVybnMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLnN0eWxlJywgJ2dvb2cu
dWkuQ29tcG9uZW50JywgJ2dvb2cudWkuRGVmYXVsdERhdGVQaWNrZXJSZW5kZXJlcicsICdnb29n
LnVpLklkR2VuZXJhdG9yJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZGF0ZXBp
Y2tlcl90ZXN0LmpzJywgWydnb29nLnVpLkRhdGVQaWNrZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFy
aWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUu
RGF0ZVJhbmdlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xh
c3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29v
Zy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xz
X3poX0hLJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkRh
dGVQaWNrZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kYXRlcGlja2VycmVu
ZGVyZXIuanMnLCBbJ2dvb2cudWkuRGF0ZVBpY2tlclJlbmRlcmVyJ10sIFtdLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3VpL2RlY29yYXRlLmpzJywgWydnb29nLnVpLmRlY29yYXRlJ10s
IFsnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Rl
Y29yYXRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuZGVjb3JhdGVUZXN0J10sIFsnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLmRlY29yYXRlJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kZWZhdWx0ZGF0ZXBpY2tlcnJlbmRlcmVyLmpzJywg
Wydnb29nLnVpLkRlZmF1bHREYXRlUGlja2VyUmVuZGVyZXInXSwgWydnb29nLmRvbScsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cudWkuRGF0ZVBpY2tlclJlbmRlcmVyJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgndWkvZGlhbG9nLmpzJywgWydnb29nLnVpLkRpYWxvZycsICdnb29n
LnVpLkRpYWxvZy5CdXR0b25TZXQnLCAnZ29vZy51aS5EaWFsb2cuQnV0dG9uU2V0LkRlZmF1bHRC
dXR0b25zJywgJ2dvb2cudWkuRGlhbG9nLkRlZmF1bHRCdXR0b25DYXB0aW9ucycsICdnb29nLnVp
LkRpYWxvZy5EZWZhdWx0QnV0dG9uS2V5cycsICdnb29nLnVpLkRpYWxvZy5FdmVudCcsICdnb29n
LnVpLkRpYWxvZy5FdmVudFR5cGUnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJp
YS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRv
bScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNs
YXNzbGlzdCcsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2
ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdn
b29nLmZ4LkRyYWdnZXInLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5sZWdhY3lj
b252ZXJzaW9ucycsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVj
dHMuTWFwJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Nb2RhbFBvcHVwJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgndWkvZGlhbG9nX3Rlc3QuanMnLCBbJ2dvb2cudWkuRGlhbG9nVGVz
dCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5
LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5j
bGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
ZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnguY3NzMycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAn
Z29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2Nr
JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMn
LCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAn
Z29vZy51aS5EaWFsb2cnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXIuanMnLCBbJ2dvb2cudWkuRGltZW5zaW9uUGlja2Vy
J10sIFsnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dv
b2cubWF0aC5TaXplJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcsICdn
b29nLnVpLkRpbWVuc2lvblBpY2tlclJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXJfdGVzdC5qcycsIFsn
Z29vZy51aS5EaW1lbnNpb25QaWNrZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51
aS5EaW1lbnNpb25QaWNrZXInLCAnZ29vZy51aS5EaW1lbnNpb25QaWNrZXJSZW5kZXJlciddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2RpbWVuc2lvbnBpY2tlcnJlbmRlcmVyLmpz
JywgWydnb29nLnVpLkRpbWVuc2lvblBpY2tlclJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEu
QW5ub3VuY2VyJywgJ2dvb2cuYTExeS5hcmlhLkxpdmVQcmlvcml0eScsICdnb29nLmRvbScsICdn
b29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51
aS5Db250cm9sUmVuZGVyZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXJyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVp
LkRpbWVuc2lvblBpY2tlclJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhLkxpdmVQcmlv
cml0eScsICdnb29nLmFycmF5JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5n
LnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudWkuRGltZW5zaW9uUGlja2VyJywgJ2dvb2cudWkuRGlt
ZW5zaW9uUGlja2VyUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9k
cmFnZHJvcGRldGVjdG9yLmpzJywgWydnb29nLnVpLkRyYWdEcm9wRGV0ZWN0b3InLCAnZ29vZy51
aS5EcmFnRHJvcERldGVjdG9yLkV2ZW50VHlwZScsICdnb29nLnVpLkRyYWdEcm9wRGV0ZWN0b3Iu
SW1hZ2VEcm9wRXZlbnQnLCAnZ29vZy51aS5EcmFnRHJvcERldGVjdG9yLkxpbmtEcm9wRXZlbnQn
XSwgWydnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWF0aC5D
b29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kcmlsbGRvd25yb3cuanMnLCBbJ2dv
b2cudWkuRHJpbGxkb3duUm93J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cu
ZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcs
ICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy51aS5Db21wb25lbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kcmlsbGRvd25yb3dfdGVzdC5qcycsIFsnZ29v
Zy51aS5EcmlsbGRvd25Sb3dUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCcsICdnb29nLnVpLkRyaWxsZG93blJvdyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3VpL2VkaXRvci9hYnN0cmFjdGRpYWxvZy5qcycsIFsnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3RE
aWFsb2cnLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cuQnVpbGRlcicsICdnb29nLnVp
LmVkaXRvci5BYnN0cmFjdERpYWxvZy5FdmVudFR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29v
Zy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0Jywg
J2dvb2cuc3RyaW5nJywgJ2dvb2cudWkuRGlhbG9nJywgJ2dvb2cudWkuUG9wdXBCYXNlJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZWRpdG9yL2Fic3RyYWN0ZGlhbG9nX3Rlc3Qu
anMnLCBbJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nVGVzdCddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNz
bGlzdCcsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAn
Z29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cu
dGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubW9j
a21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlcicsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxv
ZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vk
aXRvci9idWJibGUuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZSddLCBbJ2dvb2cuYXNzZXJ0
cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlZpZXdwb3J0U2l6
ZU1vbml0b3InLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dv
b2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sb2cnLCAnZ29vZy5t
YXRoLkJveCcsICdnb29nLm9iamVjdCcsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRp
b25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlv
bmluZy5PdmVyZmxvd1N0YXR1cycsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cu
dWkuQ29tcG9uZW50JywgJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudXNlckFnZW50J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZWRpdG9yL2J1YmJsZV90ZXN0LmpzJywgWydn
b29nLnVpLmVkaXRvci5CdWJibGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5wb3NpdGlv
bmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvd1N0YXR1cycsICdnb29nLnN0
cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdn
b29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5Db21w
b25lbnQnLCAnZ29vZy51aS5lZGl0b3IuQnViYmxlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgndWkvZWRpdG9yL2RlZmF1bHR0b29sYmFyLmpzJywgWydnb29nLnVpLmVkaXRvci5CdXR0
b25EZXNjcmlwdG9yJywgJ2dvb2cudWkuZWRpdG9yLkRlZmF1bHRUb29sYmFyJ10sIFsnZ29vZy5h
c3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3Ns
aXN0JywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLmVkaXRv
ci5Ub29sYmFyRmFjdG9yeScsICdnb29nLnVpLmVkaXRvci5tZXNzYWdlcycsICdnb29nLnVzZXJB
Z2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci9saW5rZGlhbG9n
LmpzJywgWydnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLkxpbmtE
aWFsb2cuQmVmb3JlVGVzdExpbmtFdmVudCcsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nLkV2
ZW50VHlwZScsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nLk9rRXZlbnQnXSwgWydnb29nLmEx
MXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5J
bnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZWRp
dG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkxpbmsnLCAnZ29vZy5lZGl0b3IuZm9j
dXMnLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50
cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuaHRtbC5T
YWZlSHRtbCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5
bGUnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5MaW5r
QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cnLCAnZ29vZy51
aS5lZGl0b3IuVGFiUGFuZScsICdnb29nLnVpLmVkaXRvci5tZXNzYWdlcycsICdnb29nLnVzZXJB
Z2VudCcsICdnb29nLndpbmRvdyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vk
aXRvci9saW5rZGlhbG9nX3Rlc3QuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkxpbmtEaWFsb2dUZXN0
J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLlRhZ05hbWUn
LCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29n
LmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRU
eXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5n
Lk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVz
dGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2
ZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycycs
ICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlcicsICdnb29nLnVpLmVk
aXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cu
dWkuZWRpdG9yLm1lc3NhZ2VzJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvZWRpdG9yL21lc3NhZ2VzLmpzJywgWydnb29nLnVpLmVkaXRvci5tZXNz
YWdlcyddLCBbJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLnN0cmluZy5D
b25zdCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci90YWJwYW5lLmpz
JywgWydnb29nLnVpLmVkaXRvci5UYWJQYW5lJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9t
LklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdn
b29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
c3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWku
VGFiJywgJ2dvb2cudWkuVGFiQmFyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkv
ZWRpdG9yL3Rvb2xiYXJjb250cm9sbGVyLmpzJywgWydnb29nLnVpLmVkaXRvci5Ub29sYmFyQ29u
dHJvbGxlciddLCBbJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxl
cicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnVpLkNvbXBvbmVudCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci90b29sYmFyZmFjdG9yeS5qcycsIFsn
Z29vZy51aS5lZGl0b3IuVG9vbGJhckZhY3RvcnknXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9t
JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29k
ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVy
JywgJ2dvb2cudWkuT3B0aW9uJywgJ2dvb2cudWkuVG9vbGJhcicsICdnb29nLnVpLlRvb2xiYXJC
dXR0b24nLCAnZ29vZy51aS5Ub29sYmFyQ29sb3JNZW51QnV0dG9uJywgJ2dvb2cudWkuVG9vbGJh
ck1lbnVCdXR0b24nLCAnZ29vZy51aS5Ub29sYmFyUmVuZGVyZXInLCAnZ29vZy51aS5Ub29sYmFy
U2VsZWN0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dWkvZWRpdG9yL3Rvb2xiYXJmYWN0b3J5X3Rlc3QuanMnLCBbJ2dvb2cudWkuZWRpdG9yLlRvb2xi
YXJGYWN0b3J5VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1
cmVzJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudWkuZWRpdG9yLlRvb2xiYXJGYWN0b3J5JywgJ2dvb2cudXNlckFnZW50J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZW1vamkuanMnLCBbJ2dvb2cu
dWkuZW1vamkuRW1vamknXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1v
amkvZW1vamlwYWxldHRlLmpzJywgWydnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0ZSddLCBbJ2dv
b2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5JbWFnZUxvYWRlcicsICdnb29nLnVpLlBh
bGV0dGUnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0
ZVJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZW1vamlw
YWxldHRlcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuZW1vamkuRW1vamlQYWxldHRlUmVuZGVyZXIn
XSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uTm9kZVR5cGUn
LCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5zdHlsZScs
ICdnb29nLnVpLlBhbGV0dGVSZW5kZXJlcicsICdnb29nLnVpLmVtb2ppLkVtb2ppJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZW1vamlwaWNrZXIuanMnLCBbJ2dvb2cu
dWkuZW1vamkuRW1vamlQaWNrZXInXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5UYWJQYW5lJywgJ2dvb2cudWkuZW1vamku
RW1vamknLCAnZ29vZy51aS5lbW9qaS5FbW9qaVBhbGV0dGUnLCAnZ29vZy51aS5lbW9qaS5FbW9q
aVBhbGV0dGVSZW5kZXJlcicsICdnb29nLnVpLmVtb2ppLlByb2dyZXNzaXZlRW1vamlQYWxldHRl
UmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lbW9qaS9lbW9qaXBp
Y2tlcl90ZXN0LmpzJywgWydnb29nLnVpLmVtb2ppLkVtb2ppUGlja2VyVGVzdCddLCBbJ2dvb2cu
ZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFu
ZGxlcicsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLmVtb2ppLkVtb2ppJywgJ2dv
b2cudWkuZW1vamkuRW1vamlQaWNrZXInLCAnZ29vZy51aS5lbW9qaS5TcHJpdGVJbmZvJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZmFzdF9ub25wcm9ncmVzc2l2ZV9l
bW9qaXBpY2tlcl90ZXN0LmpzJywgWydnb29nLnVpLmVtb2ppLkZhc3ROb25Qcm9ncmVzc2l2ZUVt
b2ppUGlja2VyVGVzdCddLCBbJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdn
b29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdn
b29nLnVpLmVtb2ppLkVtb2ppJywgJ2dvb2cudWkuZW1vamkuRW1vamlQaWNrZXInLCAnZ29vZy51
aS5lbW9qaS5TcHJpdGVJbmZvJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvZW1vamkvZmFzdF9wcm9ncmVzc2l2ZV9lbW9qaXBpY2tlcl90ZXN0Lmpz
JywgWydnb29nLnVpLmVtb2ppLkZhc3RQcm9ncmVzc2l2ZUVtb2ppUGlja2VyVGVzdCddLCBbJ2dv
b2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUn
LCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkFzeW5j
VGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLmVtb2ppLkVtb2ppJywg
J2dvb2cudWkuZW1vamkuRW1vamlQaWNrZXInLCAnZ29vZy51aS5lbW9qaS5TcHJpdGVJbmZvJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvcG9wdXBlbW9qaXBpY2tlci5q
cycsIFsnZ29vZy51aS5lbW9qaS5Qb3B1cEVtb2ppUGlja2VyJ10sIFsnZ29vZy5ldmVudHMuRXZl
bnRUeXBlJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0
aW9uaW5nLkNvcm5lcicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlBvcHVwJywgJ2dv
b2cudWkuZW1vamkuRW1vamlQaWNrZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
aS9lbW9qaS9wb3B1cGVtb2ppcGlja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuZW1vamkuUG9wdXBF
bW9qaVBpY2tlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dv
b2cudWkuZW1vamkuUG9wdXBFbW9qaVBpY2tlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3VpL2Vtb2ppL3Byb2dyZXNzaXZlZW1vamlwYWxldHRlcmVuZGVyZXIuanMnLCBbJ2dvb2cu
dWkuZW1vamkuUHJvZ3Jlc3NpdmVFbW9qaVBhbGV0dGVSZW5kZXJlciddLCBbJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0ZVJlbmRlcmVy
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvc3ByaXRlaW5mby5qcycs
IFsnZ29vZy51aS5lbW9qaS5TcHJpdGVJbmZvJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VpL2Vtb2ppL3Nwcml0ZWluZm9fdGVzdC5qcycsIFsnZ29vZy51aS5lbW9qaS5TcHJp
dGVJbmZvVGVzdCddLCBbJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5lbW9qaS5TcHJp
dGVJbmZvJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZmlsdGVyZWRtZW51Lmpz
JywgWydnb29nLnVpLkZpbHRlcmVkTWVudSddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTEx
eS5hcmlhLkF1dG9Db21wbGV0ZVZhbHVlcycsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29n
LmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2
ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVy
JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywg
J2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5GaWx0ZXJPYnNlcnZp
bmdNZW51SXRlbScsICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVz
ZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ZpbHRlcmVkbWVudV90
ZXN0LmpzJywgWydnb29nLnVpLkZpbHRlcmVkTWVudVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScs
ICdnb29nLmExMXkuYXJpYS5BdXRvQ29tcGxldGVWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuU3Rh
dGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5tYXRoLlJl
Y3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy51aS5GaWx0ZXJlZE1lbnUnLCAnZ29vZy51aS5NZW51SXRlbSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ZpbHRlcm9ic2VydmluZ21lbnVpdGVtLmpzJywg
Wydnb29nLnVpLkZpbHRlck9ic2VydmluZ01lbnVJdGVtJ10sIFsnZ29vZy51aS5GaWx0ZXJPYnNl
cnZpbmdNZW51SXRlbVJlbmRlcmVyJywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5yZWdp
c3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ZpbHRlcm9ic2VydmluZ21l
bnVpdGVtcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuRmlsdGVyT2JzZXJ2aW5nTWVudUl0ZW1SZW5k
ZXJlciddLCBbJ2dvb2cudWkuTWVudUl0ZW1SZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3VpL2ZsYXRidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5GbGF0QnV0dG9u
UmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLkJ1dHRvbicsICdn
b29nLnVpLkJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRScs
ICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvZmxh
dG1lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5GbGF0TWVudUJ1dHRvblJlbmRlcmVy
J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0eWxlJywgJ2dvb2cu
dWkuRmxhdEJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRScs
ICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudVJlbmRl
cmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
aS9mb3JtcG9zdC5qcycsIFsnZ29vZy51aS5Gb3JtUG9zdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29v
Zy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdn
b29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy51aS5Db21wb25lbnQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9mb3JtcG9zdF90ZXN0LmpzJywgWydnb29nLnVpLkZvcm1Qb3N0VGVz
dCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
Lm9iamVjdCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuRm9ybVBvc3QnLCAnZ29v
Zy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2dhdWdlLmpzJywgWydnb29nLnVpLkdh
dWdlJywgJ2dvb2cudWkuR2F1Z2VDb2xvcmVkUmFuZ2UnXSwgWydnb29nLmExMXkuYXJpYScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ4
LkFuaW1hdGlvbicsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5lYXNpbmcnLCAnZ29v
Zy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLkZvbnQnLCAnZ29vZy5ncmFwaGljcy5QYXRoJywg
J2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cubWF0aCcsICdnb29nLnVpLkNvbXBvbmVu
dCcsICdnb29nLnVpLkdhdWdlVGhlbWUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
aS9nYXVnZXRoZW1lLmpzJywgWydnb29nLnVpLkdhdWdlVGhlbWUnXSwgWydnb29nLmdyYXBoaWNz
LkxpbmVhckdyYWRpZW50JywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cuZ3JhcGhp
Y3MuU3Ryb2tlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaG92ZXJjYXJkLmpz
JywgWydnb29nLnVpLkhvdmVyQ2FyZCcsICdnb29nLnVpLkhvdmVyQ2FyZC5FdmVudFR5cGUnLCAn
Z29vZy51aS5Ib3ZlckNhcmQuVHJpZ2dlckV2ZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRv
bScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVu
dFR5cGUnLCAnZ29vZy51aS5BZHZhbmNlZFRvb2x0aXAnLCAnZ29vZy51aS5Qb3B1cEJhc2UnLCAn
Z29vZy51aS5Ub29sdGlwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaG92ZXJj
YXJkX3Rlc3QuanMnLCBbJ2dvb2cudWkuSG92ZXJDYXJkVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dv
b2cuZXZlbnRzJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50
ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5l
dmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkhvdmVyQ2FyZCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2hzdmFwYWxldHRlLmpzJywgWydnb29n
LnVpLkhzdmFQYWxldHRlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmNvbG9yLmFscGhhJywgJ2dv
b2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywg
J2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Ic3ZQYWxldHRlJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaHN2YXBhbGV0dGVfdGVzdC5qcycsIFsn
Z29vZy51aS5Ic3ZhUGFsZXR0ZVRlc3QnXSwgWydnb29nLmNvbG9yLmFscGhhJywgJ2dvb2cuZG9t
LlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dv
b2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5
UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkhzdmFQYWxldHRlJywg
J2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaHN2cGFs
ZXR0ZS5qcycsIFsnZ29vZy51aS5Ic3ZQYWxldHRlJ10sIFsnZ29vZy5jb2xvcicsICdnb29nLmRv
bS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2
ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy5zdHlsZS5iaWRpJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFnZW50
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaHN2cGFsZXR0ZV90ZXN0LmpzJywg
Wydnb29nLnVpLkhzdlBhbGV0dGVUZXN0J10sIFsnZ29vZy5jb2xvcicsICdnb29nLmRvbS5UYWdO
YW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5F
dmVudCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGlu
Zy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5Db21w
b25lbnQnLCAnZ29vZy51aS5Ic3ZQYWxldHRlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaWRnZW5lcmF0b3IuanMnLCBbJ2dvb2cudWkuSWRHZW5l
cmF0b3InXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaWRsZXRpbWVyLmpz
JywgWydnb29nLnVpLklkbGVUaW1lciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5ldmVudHMnLCAn
Z29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5zdHJ1Y3RzLlNldCcsICdnb29nLnVpLkFj
dGl2aXR5TW9uaXRvciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL2lkbGV0aW1l
cl90ZXN0LmpzJywgWydnb29nLnVpLklkbGVUaW1lclRlc3QnXSwgWydnb29nLmV2ZW50cycsICdn
b29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5J
ZGxlVGltZXInLCAnZ29vZy51aS5Nb2NrQWN0aXZpdHlNb25pdG9yJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndWkvaWZyYW1lbWFzay5qcycsIFsnZ29vZy51aS5JZnJhbWVNYXNrJ10s
IFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29vZy5kb20u
aWZyYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLnN0eWxlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaWZyYW1lbWFza190ZXN0LmpzJywgWydnb29nLnVp
LklmcmFtZU1hc2tUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
LmRvbS5pZnJhbWUnLCAnZ29vZy5zdHJ1Y3RzLlBvb2wnLCAnZ29vZy5zdHlsZScsICdnb29nLnRl
c3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnLCAnZ29vZy51aS5JZnJhbWVNYXNrJywgJ2dvb2cudWkuUG9wdXAnLCAnZ29vZy51
aS5Qb3B1cEJhc2UnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS9pbWFnZWxlc3NidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5JbWFnZWxlc3NC
dXR0b25SZW5kZXJlciddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0
JywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ3VzdG9t
QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cu
dWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9pbWFnZWxlc3Nt
ZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuSW1hZ2VsZXNzTWVudUJ1dHRvblJlbmRl
cmVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xp
c3QnLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkuTWVudUJ1dHRv
bicsICdnb29nLnVpLk1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvaW5wdXRkYXRlcGlja2VyLmpzJywgWydnb29n
LnVpLklucHV0RGF0ZVBpY2tlciddLCBbJ2dvb2cuZGF0ZS5EYXRlVGltZScsICdnb29nLmRvbScs
ICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0cmluZycs
ICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkRhdGVQaWNrZXInLCAnZ29vZy51aS5Qb3B1
cEJhc2UnLCAnZ29vZy51aS5Qb3B1cERhdGVQaWNrZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd1aS9pbnB1dGRhdGVwaWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5JbnB1dERhdGVQ
aWNrZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dv
b2cuaTE4bi5EYXRlVGltZVBhcnNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5J
bnB1dERhdGVQaWNrZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9pdGVtZXZl
bnQuanMnLCBbJ2dvb2cudWkuSXRlbUV2ZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9rZXlib2FyZHNob3J0Y3V0aGFuZGxlci5qcycs
IFsnZ29vZy51aS5LZXlib2FyZFNob3J0Y3V0RXZlbnQnLCAnZ29vZy51aS5LZXlib2FyZFNob3J0
Y3V0SGFuZGxlcicsICdnb29nLnVpLktleWJvYXJkU2hvcnRjdXRIYW5kbGVyLkV2ZW50VHlwZSdd
LCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50
cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5
Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5TmFtZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy51c2Vy
QWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9rZXlib2FyZHNob3J0Y3V0
aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLnVpLktleWJvYXJkU2hvcnRjdXRIYW5kbGVyVGVzdCdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcs
ICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cu
dGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dv
b2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLktleWJv
YXJkU2hvcnRjdXRIYW5kbGVyJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvbGFiZWxpbnB1dC5qcycsIFsnZ29vZy51aS5MYWJlbElucHV0J10sIFsn
Z29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9t
LlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxl
cicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51
c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9sYWJlbGlucHV0X3Rl
c3QuanMnLCBbJ2dvb2cudWkuTGFiZWxJbnB1dFRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdn
b29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAn
Z29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50
ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnLCAnZ29vZy51aS5MYWJlbElucHV0JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbGlua2J1dHRvbnJlbmRlcmVyLmpzJywgWydnb29n
LnVpLkxpbmtCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuRmxh
dEJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd1aS9tZWRpYS9mbGFzaG9iamVjdC5qcycsIFsnZ29vZy51aS5tZWRpYS5GbGFz
aE9iamVjdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0LlNjcmlwdEFjY2Vzc0xldmVsJywg
J2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QuV21vZGVzJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dv
b2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdn
b29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
aHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1s
LmZsYXNoJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29nLmxvZycsICdnb29n
Lm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQu
Zmxhc2gnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9mbGFzaG9iamVj
dF90ZXN0LmpzJywgWydnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0VGVzdCddLCBbJ2dvb2cuZG9t
JywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRz
JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmh0
bWwuU2FmZVVybCcsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmV2
ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3Qn
LCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRp
YS9mbGlja3IuanMnLCBbJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0JywgJ2dvb2cudWkubWVkaWEu
RmxpY2tyU2V0TW9kZWwnXSwgWydnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cu
c3RyaW5nLkNvbnN0JywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QnLCAnZ29vZy51aS5tZWRp
YS5NZWRpYScsICdnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRp
YVJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvZmxpY2ty
X3Rlc3QuanMnLCBbJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0VGVzdCddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLmpz
dW5pdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuRmxpY2ty
U2V0JywgJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0TW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRp
YSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL2dvb2dsZXZpZGVvLmpz
JywgWydnb29nLnVpLm1lZGlhLkdvb2dsZVZpZGVvJywgJ2dvb2cudWkubWVkaWEuR29vZ2xlVmlk
ZW9Nb2RlbCddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QnLCAn
Z29vZy51aS5tZWRpYS5NZWRpYScsICdnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWwnLCAnZ29vZy51
aS5tZWRpYS5NZWRpYVJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkv
bWVkaWEvZ29vZ2xldmlkZW9fdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5Hb29nbGVWaWRlb1Rl
c3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLkdvb2dsZVZp
ZGVvJywgJ2dvb2cudWkubWVkaWEuR29vZ2xlVmlkZW9Nb2RlbCcsICdnb29nLnVpLm1lZGlhLk1l
ZGlhJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvbWVkaWEuanMnLCBb
J2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5NZWRpYVJlbmRlcmVyJ10sIFsn
Z29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVp
LkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXIn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9tZWRpYV90ZXN0LmpzJywg
Wydnb29nLnVpLm1lZGlhLk1lZGlhVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05h
bWUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNv
bnRyb2xSZW5kZXJlcicsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVk
aWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9tZWRpYW1vZGVsLmpzJywgWydnb29nLnVpLm1lZGlhLk1l
ZGlhTW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLkNhdGVnb3J5JywgJ2dvb2cudWku
bWVkaWEuTWVkaWFNb2RlbC5DcmVkaXQnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLkNyZWRp
dC5Sb2xlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5DcmVkaXQuU2NoZW1lJywgJ2dvb2cu
dWkubWVkaWEuTWVkaWFNb2RlbC5NZWRpdW0nLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLk1p
bWVUeXBlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5QbGF5ZXInLCAnZ29vZy51aS5tZWRp
YS5NZWRpYU1vZGVsLlN1YlRpdGxlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5UaHVtYm5h
aWwnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29v
Zy5odG1sLmxlZ2FjeWNvbnZlcnNpb25zJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dWkvbWVkaWEvbWVkaWFtb2RlbF90ZXN0LmpzJywgWydnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWxU
ZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWwn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9tcDMuanMnLCBbJ2dvb2cu
dWkubWVkaWEuTXAzJ10sIFsnZ29vZy5zdHJpbmcnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVj
dCcsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlcidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL21wM190ZXN0LmpzJywgWydn
b29nLnVpLm1lZGlhLk1wM1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29n
LnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1l
ZGlhLk1wMyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL3Bob3RvLmpz
JywgWydnb29nLnVpLm1lZGlhLlBob3RvJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVp
Lm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL3Bob3RvX3Rlc3QuanMnLCBbJ2dvb2cudWkubWVk
aWEuUGhvdG9UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlh
LlBob3RvJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvcGljYXNhLmpz
JywgWydnb29nLnVpLm1lZGlhLlBpY2FzYUFsYnVtJywgJ2dvb2cudWkubWVkaWEuUGljYXNhQWxi
dW1Nb2RlbCddLCBbJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcu
Q29uc3QnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLk1lZGlh
JywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVy
ZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9waWNhc2FfdGVzdC5q
cycsIFsnZ29vZy51aS5tZWRpYS5QaWNhc2FUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmpl
Y3QnLCAnZ29vZy51aS5tZWRpYS5NZWRpYScsICdnb29nLnVpLm1lZGlhLlBpY2FzYUFsYnVtJywg
J2dvb2cudWkubWVkaWEuUGljYXNhQWxidW1Nb2RlbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VpL21lZGlhL3ZpbWVvLmpzJywgWydnb29nLnVpLm1lZGlhLlZpbWVvJywgJ2dvb2cu
dWkubWVkaWEuVmltZW9Nb2RlbCddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkubWVkaWEuRmxh
c2hPYmplY3QnLCAnZ29vZy51aS5tZWRpYS5NZWRpYScsICdnb29nLnVpLm1lZGlhLk1lZGlhTW9k
ZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYVJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvbWVkaWEvdmltZW9fdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5WaW1lb1Rl
c3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLk1lZGlhJywg
J2dvb2cudWkubWVkaWEuVmltZW8nLCAnZ29vZy51aS5tZWRpYS5WaW1lb01vZGVsJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEveW91dHViZS5qcycsIFsnZ29vZy51aS5t
ZWRpYS5Zb3V0dWJlJywgJ2dvb2cudWkubWVkaWEuWW91dHViZU1vZGVsJ10sIFsnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLnN0cmluZycsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLm1l
ZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5N
ZWRpYU1vZGVsJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL3lvdXR1YmVfdGVzdC5qcycsIFsnZ29vZy51aS5tZWRp
YS5Zb3V0dWJlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50
ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVk
aWEuWW91dHViZScsICdnb29nLnVpLm1lZGlhLllvdXR1YmVNb2RlbCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL21lbnUuanMnLCBbJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1l
bnUuRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm1hdGguQ29vcmRpbmF0
ZScsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50LkV2ZW50
VHlwZScsICdnb29nLnVpLkNvbXBvbmVudC5TdGF0ZScsICdnb29nLnVpLkNvbnRhaW5lcicsICdn
b29nLnVpLkNvbnRhaW5lci5PcmllbnRhdGlvbicsICdnb29nLnVpLk1lbnVIZWFkZXInLCAnZ29v
Zy51aS5NZW51SXRlbScsICdnb29nLnVpLk1lbnVSZW5kZXJlcicsICdnb29nLnVpLk1lbnVTZXBh
cmF0b3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51X3Rlc3QuanMnLCBb
J2dvb2cudWkuTWVudVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLm1h
dGguQ29vcmRpbmF0ZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51J10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndWkvbWVudWJhci5qcycsIFsnZ29vZy51aS5tZW51QmFyJ10sIFsnZ29v
Zy51aS5Db250YWluZXInLCAnZ29vZy51aS5NZW51QmFyUmVuZGVyZXInXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YmFyZGVjb3JhdG9yLmpzJywgWydnb29nLnVpLm1lbnVC
YXJEZWNvcmF0b3InXSwgWydnb29nLnVpLk1lbnVCYXJSZW5kZXJlcicsICdnb29nLnVpLm1lbnVC
YXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Vp
L21lbnViYXJyZW5kZXJlci5qcycsIFsnZ29vZy51aS5NZW51QmFyUmVuZGVyZXInXSwgWydnb29n
LmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVy
UmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YmFzZS5qcycs
IFsnZ29vZy51aS5NZW51QmFzZSddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLnVpLlBv
cHVwJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudWJ1dHRvbi5qcycsIFsn
Z29vZy51aS5NZW51QnV0dG9uJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdn
b29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5l
dmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktl
eUhhbmRsZXInLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnBvc2l0
aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuTWVu
dUFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdycsICdnb29nLnN0
eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuSWRH
ZW5lcmF0b3InLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUJ1dHRvblJlbmRlcmVyJywg
J2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5NZW51UmVuZGVyZXInLCAnZ29vZy51aS5yZWdp
c3RyeScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudWJ1dHRvbl90ZXN0LmpzJywgWydnb29nLnVp
Lk1lbnVCdXR0b25UZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29n
LmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cu
ZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdn
b29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cucG9z
aXRpb25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5N
ZW51QW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cu
c3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLlBy
b3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnVpLkNvbXBvbmVudCcs
ICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudUl0ZW0n
LCAnZ29vZy51aS5TdWJNZW51JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnBy
b2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuTWVu
dUJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
LnN0eWxlJywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVf
QkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVSZW5kZXJlcidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVidXR0b25yZW5kZXJlcl90ZXN0
LmpzJywgWydnb29nLnVpLk1lbnVCdXR0b25SZW5kZXJlclRlc3QnXSwgWydnb29nLmExMXkuYXJp
YScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVz
dGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWku
TWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvbWVudWhlYWRlci5qcycsIFsnZ29vZy51aS5NZW51SGVhZGVyJ10sIFsn
Z29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkuTWVudUhlYWRl
clJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS9tZW51aGVhZGVycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuTWVudUhlYWRlclJlbmRl
cmVyJ10sIFsnZ29vZy51aS5Db250cm9sUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd1aS9tZW51aXRlbS5qcycsIFsnZ29vZy51aS5NZW51SXRlbSddLCBbJ2dvb2cuYTEx
eS5hcmlhLlJvbGUnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xp
c3QnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51aS5Db21w
b25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkuTWVudUl0ZW1SZW5kZXJlcicsICdn
b29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudWl0
ZW1fdGVzdC5qcycsIFsnZ29vZy51aS5NZW51SXRlbVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScs
ICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5k
b20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAn
Z29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy50ZXN0
aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRG
dW5jdGlvbicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cu
dWkuTWVudUl0ZW1SZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21l
bnVpdGVtcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuTWVudUl0ZW1SZW5kZXJlciddLCBbJ2dvb2cu
YTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cu
dWkuQ29udHJvbFJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVu
dWl0ZW1yZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXJUZXN0J10s
IFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJp
YS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuQ29t
cG9uZW50JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5NZW51SXRlbVJlbmRlcmVyJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudXJlbmRlcmVyLmpzJywgWydnb29n
LnVpLk1lbnVSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJv
bGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51aS5Db250YWluZXJSZW5kZXJlcicsICdnb29nLnVp
LlNlcGFyYXRvciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVzZXBhcmF0
b3IuanMnLCBbJ2dvb2cudWkuTWVudVNlcGFyYXRvciddLCBbJ2dvb2cudWkuTWVudVNlcGFyYXRv
clJlbmRlcmVyJywgJ2dvb2cudWkuU2VwYXJhdG9yJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51c2VwYXJhdG9ycmVuZGVyZXIuanMnLCBb
J2dvb2cudWkuTWVudVNlcGFyYXRvclJlbmRlcmVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20u
VGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXIn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51c2VwYXJhdG9ycmVuZGVyZXJf
dGVzdC5qcycsIFsnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5k
b20nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLk1lbnVTZXBhcmF0b3InLCAnZ29v
Zy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd1aS9tb2NrYWN0aXZpdHltb25pdG9yLmpzJywgWydnb29nLnVpLk1vY2tBY3Rpdml0eU1vbml0
b3InXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5BY3Rpdml0eU1vbml0b3In
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tb2NrYWN0aXZpdHltb25pdG9yX3Rl
c3QuanMnLCBbJ2dvb2cudWkuTW9ja0FjdGl2aXR5TW9uaXRvclRlc3QnXSwgWydnb29nLmV2ZW50
cycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGlu
Zy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnVpLkFjdGl2aXR5TW9uaXRvcicsICdnb29nLnVpLk1v
Y2tBY3Rpdml0eU1vbml0b3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tb2Rh
bHBvcHVwLmpzJywgWydnb29nLnVpLk1vZGFsUG9wdXAnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cu
YTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29n
LmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmRv
bS5pZnJhbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cu
ZXZlbnRzLkZvY3VzSGFuZGxlcicsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5zdHJpbmcn
LCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlBvcHVwQmFzZScs
ICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL21vZGFs
cG9wdXBfdGVzdC5qcycsIFsnZ29vZy51aS5Nb2RhbFBvcHVwVGVzdCddLCBbJ2dvb2cuYTExeS5h
cmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZGlzcG9zZScsICdnb29nLmRvbScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFy
Z2V0JywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLmZ4LmNzczMnLCAnZ29vZy5zdHJpbmcn
LCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy51aS5Nb2RhbFBvcHVwJywgJ2dvb2cudWkuUG9wdXBCYXNlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbmF0aXZlYnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dv
b2cudWkuTmF0aXZlQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20u
SW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dv
b2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnVpLkJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWku
Q29tcG9uZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvbmF0aXZlYnV0dG9u
cmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlclRlc3QnXSwg
Wydnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50
ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRl
c3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51
aS5CdXR0b24nLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5k
ZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Vp
L29wdGlvbi5qcycsIFsnZ29vZy51aS5PcHRpb24nXSwgWydnb29nLnVpLkNvbXBvbmVudCcsICdn
b29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd1aS9wYWxldHRlLmpzJywgWydnb29nLnVpLlBhbGV0dGUnXSwgWydnb29nLmFy
cmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScs
ICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnVpLkNvbXBv
bmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5QYWxldHRlUmVuZGVyZXInLCAnZ29v
Zy51aS5TZWxlY3Rpb25Nb2RlbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Bh
bGV0dGVfdGVzdC5qcycsIFsnZ29vZy51aS5QYWxldHRlVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlh
JywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdn
b29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlFdmVudCcsICdnb29nLnRlc3Rp
bmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJl
Y29yZEZ1bmN0aW9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyJywg
J2dvb2cudWkuUGFsZXR0ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BhbGV0
dGVyZW5kZXJlci5qcycsIFsnZ29vZy51aS5QYWxldHRlUmVuZGVyZXInXSwgWydnb29nLmExMXku
YXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dv
b2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVJdGVy
YXRvcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9t
LmNsYXNzbGlzdCcsICdnb29nLml0ZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbnRyb2xS
ZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3VpL3BhbGV0dGVyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLlBhbGV0dGVSZW5kZXJlclRl
c3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTEx
eS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuUGFsZXR0ZScsICdnb29nLnVpLlBh
bGV0dGVSZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BsYWludGV4
dHNwZWxsY2hlY2tlci5qcycsIFsnZ29vZy51aS5QbGFpblRleHRTcGVsbENoZWNrZXInXSwgWydn
b29nLlRpbWVyJywgJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2
ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5
SGFuZGxlcicsICdnb29nLnNwZWxsLlNwZWxsQ2hlY2snLCAnZ29vZy5zdHlsZScsICdnb29nLnVp
LkFic3RyYWN0U3BlbGxDaGVja2VyJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFn
ZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvcGxhaW50ZXh0c3BlbGxjaGVj
a2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuUGxhaW5UZXh0U3BlbGxDaGVja2VyVGVzdCddLCBbJ2dv
b2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zcGVs
bC5TcGVsbENoZWNrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCcsICdnb29nLnVpLlBsYWluVGV4dFNwZWxsQ2hlY2tlciddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJ3VpL3BvcHVwLmpzJywgWydnb29nLnVpLlBvcHVwJywgJ2dvb2cudWkuUG9wdXAu
QWJzb2x1dGVQb3NpdGlvbicsICdnb29nLnVpLlBvcHVwLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29v
Zy51aS5Qb3B1cC5BbmNob3JlZFZpZXdQb3J0UG9zaXRpb24nLCAnZ29vZy51aS5Qb3B1cC5DbGll
bnRQb3NpdGlvbicsICdnb29nLnVpLlBvcHVwLk92ZXJmbG93JywgJ2dvb2cudWkuUG9wdXAuVmll
d1BvcnRDbGllbnRQb3NpdGlvbicsICdnb29nLnVpLlBvcHVwLlZpZXdQb3J0UG9zaXRpb24nXSwg
Wydnb29nLm1hdGguQm94JywgJ2dvb2cucG9zaXRpb25pbmcuQWJzb2x1dGVQb3NpdGlvbicsICdn
b29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5BbmNo
b3JlZFZpZXdwb3J0UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5DbGllbnRQb3NpdGlvbics
ICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93Jywg
J2dvb2cucG9zaXRpb25pbmcuVmlld3BvcnRDbGllbnRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9u
aW5nLlZpZXdwb3J0UG9zaXRpb24nLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLlBvcHVwQmFzZSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwX3Rlc3QuanMnLCBbJ2dvb2cu
dWkuUG9wdXBUZXN0J10sIFsnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dv
b2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpzdW5p
dCcsICdnb29nLnVpLlBvcHVwJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvcG9wdXBiYXNlLmpzJywgWydnb29nLnVpLlBvcHVwQmFzZScsICdnb29n
LnVpLlBvcHVwQmFzZS5FdmVudFR5cGUnLCAnZ29vZy51aS5Qb3B1cEJhc2UuVHlwZSddLCBbJ2dv
b2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywg
J2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5F
dmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29k
ZXMnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wb3B1cGJhc2VfdGVzdC5qcycsIFsn
Z29vZy51aS5Qb3B1cEJhc2VUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScs
ICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5F
dmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywg
J2dvb2cuZnguY3NzMycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5l
dmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuanN1bml0
JywgJ2dvb2cudWkuUG9wdXBCYXNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkv
cG9wdXBjb2xvcnBpY2tlci5qcycsIFsnZ29vZy51aS5Qb3B1cENvbG9yUGlja2VyJ10sIFsnZ29v
Zy5hc3NlcnRzJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUn
LCAnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcu
Q29ybmVyJywgJ2dvb2cudWkuQ29sb3JQaWNrZXInLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29v
Zy51aS5Qb3B1cCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwY29sb3Jw
aWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Qb3B1cENvbG9yUGlja2VyVGVzdCddLCBbJ2dvb2cu
ZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLkNvbG9yUGlja2VyJywgJ2dvb2cudWkuUG9wdXBDb2xvclBpY2tl
ciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwZGF0ZXBpY2tlci5qcycs
IFsnZ29vZy51aS5Qb3B1cERhdGVQaWNrZXInXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAn
Z29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29y
bmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5zdHlsZScsICdnb29nLnVp
LkNvbXBvbmVudCcsICdnb29nLnVpLkRhdGVQaWNrZXInLCAnZ29vZy51aS5Qb3B1cCcsICdnb29n
LnVpLlBvcHVwQmFzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwZGF0
ZXBpY2tlcl90ZXN0LmpzJywgWydnb29nLnVpLlBvcHVwRGF0ZVBpY2tlclRlc3QnXSwgWydnb29n
LmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5j
dGlvbicsICdnb29nLnVpLlBvcHVwQmFzZScsICdnb29nLnVpLlBvcHVwRGF0ZVBpY2tlciddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwbWVudS5qcycsIFsnZ29vZy51aS5Q
b3B1cE1lbnUnXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5wb3NpdGlvbmluZy5B
bmNob3JlZFZpZXdwb3J0UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29v
Zy5wb3NpdGlvbmluZy5NZW51QW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLk92
ZXJmbG93JywgJ2dvb2cucG9zaXRpb25pbmcuVmlld3BvcnRDbGllbnRQb3NpdGlvbicsICdnb29n
LnN0cnVjdHMuTWFwJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51
aS5NZW51JywgJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBtZW51X3Rlc3QuanMnLCBbJ2dvb2cudWkuUG9w
dXBNZW51VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdn
b29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGguQ29vcmRp
bmF0ZScsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnN0eWxlJywgJ2dvb2cudGVz
dGluZy5qc3VuaXQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51
aS5Qb3B1cE1lbnUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wcm9ncmVzc2Jh
ci5qcycsIFsnZ29vZy51aS5Qcm9ncmVzc0JhcicsICdnb29nLnVpLlByb2dyZXNzQmFyLk9yaWVu
dGF0aW9uJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywg
J2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlJh
bmdlTW9kZWwnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd1aS9wcm9tcHQuanMnLCBbJ2dvb2cudWkuUHJvbXB0J10sIFsnZ29vZy5UaW1lcicsICdnb29n
LmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2
ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5o
dG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29nLnVpLkNv
bXBvbmVudCcsICdnb29nLnVpLkRpYWxvZycsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3VpL3Byb21wdF90ZXN0LmpzJywgWydnb29nLnVpLlByb21wdFRl
c3QnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywg
J2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywg
J2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkJp
ZGlJbnB1dCcsICdnb29nLnVpLkRpYWxvZycsICdnb29nLnVpLlByb21wdCcsICdnb29nLnVzZXJB
Z2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgndWkvcmFuZ2Vtb2RlbC5qcycsIFsnZ29vZy51aS5SYW5nZU1vZGVsJ10sIFsnZ29vZy5l
dmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy51aS5Db21wb25lbnQnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd1aS9yYW5nZW1vZGVsX3Rlc3QuanMnLCBbJ2dvb2cudWkuUmFuZ2VNb2Rl
bFRlc3QnXSwgWydnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuUmFuZ2VNb2RlbCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3JhdGluZ3MuanMnLCBbJ2dvb2cudWkuUmF0
aW5ncycsICdnb29nLnVpLlJhdGluZ3MuRXZlbnRUeXBlJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAn
Z29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFzc2Vy
dHMnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVu
dHMuRXZlbnRUeXBlJywgJ2dvb2cudWkuQ29tcG9uZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvcmVnaXN0cnkuanMnLCBbJ2dvb2cudWkucmVnaXN0cnknXSwgWydnb29nLmFz
c2VydHMnLCAnZ29vZy5kb20uY2xhc3NsaXN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgndWkvcmVnaXN0cnlfdGVzdC5qcycsIFsnZ29vZy51aS5yZWdpc3RyeVRlc3QnXSwgWydnb29n
Lm9iamVjdCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9yaWNodGV4dHNwZWxsY2hlY2tlci5qcycsIFsn
Z29vZy51aS5SaWNoVGV4dFNwZWxsQ2hlY2tlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3Nl
cnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywg
J2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29v
Zy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLm1hdGgu
Q29vcmRpbmF0ZScsICdnb29nLnNwZWxsLlNwZWxsQ2hlY2snLCAnZ29vZy5zdHJpbmcuU3RyaW5n
QnVmZmVyJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5BYnN0cmFjdFNwZWxsQ2hlY2tlcicsICdn
b29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlBvcHVwTWVudSddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJ3VpL3JpY2h0ZXh0c3BlbGxjaGVja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWku
UmljaFRleHRTcGVsbENoZWNrZXJUZXN0J10sIFsnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20u
Y2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cu
c3BlbGwuU3BlbGxDaGVjaycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGlu
Zy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLlJpY2hUZXh0U3BlbGxD
aGVja2VyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvcm91bmRlZHBhbmVsLmpz
JywgWydnb29nLnVpLkJhc2VSb3VuZGVkUGFuZWwnLCAnZ29vZy51aS5Dc3NSb3VuZGVkUGFuZWwn
LCAnZ29vZy51aS5HcmFwaGljc1JvdW5kZWRQYW5lbCcsICdnb29nLnVpLlJvdW5kZWRQYW5lbCcs
ICdnb29nLnVpLlJvdW5kZWRQYW5lbC5Db3JuZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5k
b20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ncmFw
aGljcycsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAn
Z29vZy5ncmFwaGljcy5TdHJva2UnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5Db29yZGluYXRl
JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51c2VyQWdlbnQnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9yb3VuZGVkcGFuZWxfdGVzdC5qcycsIFsn
Z29vZy51aS5Sb3VuZGVkUGFuZWxUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29n
LnVpLkNzc1JvdW5kZWRQYW5lbCcsICdnb29nLnVpLkdyYXBoaWNzUm91bmRlZFBhbmVsJywgJ2dv
b2cudWkuUm91bmRlZFBhbmVsJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgndWkvcm91bmRlZHRhYnJlbmRlcmVyLmpzJywgWydnb29nLnVpLlJvdW5kZWRU
YWJSZW5kZXJlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51aS5U
YWInLCAnZ29vZy51aS5UYWJCYXInLCAnZ29vZy51aS5UYWJSZW5kZXJlcicsICdnb29nLnVpLnJl
Z2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2Nyb2xsZmxvYXRlci5q
cycsIFsnZ29vZy51aS5TY3JvbGxGbG9hdGVyJywgJ2dvb2cudWkuU2Nyb2xsRmxvYXRlci5FdmVu
dFR5cGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29n
LmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudFR5
cGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVzZXJBZ2VudCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Njcm9sbGZsb2F0ZXJfdGVzdC5qcycs
IFsnZ29vZy51aS5TY3JvbGxGbG9hdGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRz
JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLlNjcm9sbEZs
b2F0ZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZWxlY3QuanMnLCBbJ2dv
b2cudWkuU2VsZWN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScs
ICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuZXZlbnRzLkV2ZW50
VHlwZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLklkR2VuZXJhdG9yJywgJ2dvb2cu
dWkuTWVudUJ1dHRvbicsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkuTWVudVJlbmRlcmVy
JywgJ2dvb2cudWkuU2VsZWN0aW9uTW9kZWwnLCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlbGVjdF90ZXN0LmpzJywgWydnb29nLnVpLlNlbGVj
dFRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cu
YTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGlu
Zy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudWkuQ29tcG9u
ZW50JywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5NZW51JywgJ2dv
b2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5TZWxlY3QnLCAnZ29vZy51aS5TZXBhcmF0b3InXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZWxlY3Rpb25tZW51YnV0dG9uLmpzJywg
Wydnb29nLnVpLlNlbGVjdGlvbk1lbnVCdXR0b24nLCAnZ29vZy51aS5TZWxlY3Rpb25NZW51QnV0
dG9uLlNlbGVjdGlvblN0YXRlJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRh
Z05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5D
b21wb25lbnQnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29v
Zy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlbGVjdGlv
bm1lbnVidXR0b25fdGVzdC5qcycsIFsnZ29vZy51aS5TZWxlY3Rpb25NZW51QnV0dG9uVGVzdCdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlNlbGVjdGlv
bk1lbnVCdXR0b24nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZWxlY3Rpb25t
b2RlbC5qcycsIFsnZ29vZy51aS5TZWxlY3Rpb25Nb2RlbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29v
Zy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2VsZWN0aW9ubW9kZWxfdGVzdC5qcycsIFsnZ29vZy51
aS5TZWxlY3Rpb25Nb2RlbFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cudGVzdGluZy5qc3Vu
aXQnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudWkuU2VsZWN0aW9uTW9k
ZWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZXBhcmF0b3IuanMnLCBbJ2dv
b2cudWkuU2VwYXJhdG9yJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hc3NlcnRzJywgJ2dv
b2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLk1lbnVTZXBhcmF0
b3JSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgndWkvc2VydmVyY2hhcnQuanMnLCBbJ2dvb2cudWkuU2VydmVyQ2hhcnQnLCAnZ29vZy51
aS5TZXJ2ZXJDaGFydC5BeGlzRGlzcGxheVR5cGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5DaGFy
dFR5cGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5FbmNvZGluZ1R5cGUnLCAnZ29vZy51aS5TZXJ2
ZXJDaGFydC5FdmVudCcsICdnb29nLnVpLlNlcnZlckNoYXJ0LkxlZ2VuZFBvc2l0aW9uJywgJ2dv
b2cudWkuU2VydmVyQ2hhcnQuTWF4aW11bVZhbHVlJywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuTXVs
dGlBeGlzQWxpZ25tZW50JywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuTXVsdGlBeGlzVHlwZScsICdn
b29nLnVpLlNlcnZlckNoYXJ0LlVyaVBhcmFtJywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuVXJpVG9v
TG9uZ0V2ZW50J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAn
Z29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLnN0cmluZycsICdn
b29nLnVpLkNvbXBvbmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlcnZl
cmNoYXJ0X3Rlc3QuanMnLCBbJ2dvb2cudWkuU2VydmVyQ2hhcnRUZXN0J10sIFsnZ29vZy5Vcmkn
LCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLlNlcnZlckNo
YXJ0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2xpZGVyLmpzJywgWydnb29n
LnVpLlNsaWRlcicsICdnb29nLnVpLlNsaWRlci5PcmllbnRhdGlvbiddLCBbJ2dvb2cuYTExeS5h
cmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFt
ZScsICdnb29nLnVpLlNsaWRlckJhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
aS9zbGlkZXJiYXNlLmpzJywgWydnb29nLnVpLlNsaWRlckJhc2UnLCAnZ29vZy51aS5TbGlkZXJC
YXNlLkFuaW1hdGlvbkZhY3RvcnknLCAnZ29vZy51aS5TbGlkZXJCYXNlLk9yaWVudGF0aW9uJ10s
IFsnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywg
J2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dv
b2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cu
ZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2Rlcycs
ICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxIYW5kbGVy
JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuZnguQW5pbWF0aW9uUGFyYWxsZWxRdWV1ZScsICdn
b29nLmZ4LkRyYWdnZXInLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguZG9tLlJlc2l6
ZUhlaWdodCcsICdnb29nLmZ4LmRvbS5SZXNpemVXaWR0aCcsICdnb29nLmZ4LmRvbS5TbGlkZScs
ICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29n
LnN0eWxlLmJpZGknLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5SYW5nZU1vZGVsJ10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2xpZGVyYmFzZV90ZXN0LmpzJywgWydn
b29nLnVpLlNsaWRlckJhc2VUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFy
aWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFz
c2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZl
bnRzLktleUNvZGVzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cubWF0aC5Db29yZGluYXRl
JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy5zdHlsZS5iaWRpJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xv
Y2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAn
Z29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cu
dGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlNs
aWRlckJhc2UnLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCd1aS9zcGxpdGJlaGF2aW9yLmpzJywgWydnb29nLnVpLlNwbGl0QmVoYXZpb3InLCAnZ29vZy51
aS5TcGxpdEJlaGF2aW9yLkRlZmF1bHRIYW5kbGVycyddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5kaXNwb3NlJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cu
ZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy51aS5CdXR0
b25TaWRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuZGVjb3JhdGUnLCAnZ29vZy51
aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NwbGl0YmVoYXZp
b3JfdGVzdC5qcycsIFsnZ29vZy51aS5TcGxpdEJlaGF2aW9yVGVzdCddLCBbJ2dvb2cuYXJyYXkn
LCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2
ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuQ29tcG9uZW50Jywg
J2dvb2cudWkuQ3VzdG9tQnV0dG9uJywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVCdXR0
b24nLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLlNwbGl0QmVoYXZpb3InLCAnZ29vZy51
aS5kZWNvcmF0ZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NwbGl0cGFuZS5q
cycsIFsnZ29vZy51aS5TcGxpdFBhbmUnLCAnZ29vZy51aS5TcGxpdFBhbmUuT3JpZW50YXRpb24n
XSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29n
LmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dl
cicsICdnb29nLm1hdGguUmVjdCcsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnN0eWxlJywgJ2dv
b2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndWkvc3BsaXRwYW5lX3Rlc3QuanMnLCBbJ2dvb2cudWkuU3BsaXRQYW5lVGVzdCdd
LCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0Jywg
J2dvb2cuZXZlbnRzJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0
aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5yZWNvcmRG
dW5jdGlvbicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlNwbGl0UGFuZSddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3N0eWxlL2FwcC9idXR0b25yZW5kZXJlci5qcycs
IFsnZ29vZy51aS5zdHlsZS5hcHAuQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLkJ1dHRvbicsICdnb29nLnVpLkN1c3Rv
bUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRScsICdnb29n
LnVpLnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBw
L2J1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuc3R5bGUuYXBwLkJ1dHRvblJlbmRl
cmVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0
aW5nLnVpLnN0eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dv
b2cudWkuc3R5bGUuYXBwLkJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBwL21lbnVidXR0b25yZW5kZXJlci5q
cycsIFsnZ29vZy51aS5zdHlsZS5hcHAuTWVudUJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5
LmFyaWEuUm9sZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUn
LCAnZ29vZy5zdHlsZScsICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51UmVuZGVyZXInLCAn
Z29vZy51aS5zdHlsZS5hcHAuQnV0dG9uUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCd1aS9zdHlsZS9hcHAvbWVudWJ1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cu
dWkuc3R5bGUuYXBwLk1lbnVCdXR0b25SZW5kZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29n
LnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy51aS5zdHlsZScsICdnb29nLnVpLkNvbXBv
bmVudCcsICdnb29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5zdHlsZS5hcHAuTWVudUJ1dHRv
blJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBwL3By
aW1hcnlhY3Rpb25idXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5zdHlsZS5hcHAuUHJpbWFy
eUFjdGlvbkJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5yZWdp
c3RyeScsICdnb29nLnVpLnN0eWxlLmFwcC5CdXR0b25SZW5kZXJlciddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL3N0eWxlL2FwcC9wcmltYXJ5YWN0aW9uYnV0dG9ucmVuZGVyZXJf
dGVzdC5qcycsIFsnZ29vZy51aS5zdHlsZS5hcHAuUHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVy
VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5n
LnVpLnN0eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cu
dWkuc3R5bGUuYXBwLlByaW1hcnlBY3Rpb25CdXR0b25SZW5kZXJlciddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VpL3N1Ym1lbnUuanMnLCBbJ2dvb2cudWkuU3ViTWVudSddLCBbJ2dv
b2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlz
dCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkVmll
d3BvcnRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnN0eWxlJywg
J2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVJdGVtJywg
J2dvb2cudWkuU3ViTWVudVJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd1aS9zdWJtZW51X3Rlc3QuanMnLCBbJ2dvb2cudWkuU3ViTWVu
dVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMn
LCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5mdW5j
dGlvbnMnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93Jywg
J2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZl
bnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51
aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5TdWJNZW51JywgJ2dvb2cudWku
U3ViTWVudVJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3VibWVu
dXJlbmRlcmVyLmpzJywgWydnb29nLnVpLlN1Yk1lbnVSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5h
cmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnN0eWxlJywg
J2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXInXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd1aS90YWIuanMnLCBbJ2dvb2cudWkuVGFiJ10sIFsnZ29vZy51aS5D
b21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkuVGFiUmVuZGVyZXInLCAnZ29v
Zy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYl90ZXN0
LmpzJywgWydnb29nLnVpLlRhYlRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuVGFiJywgJ2dvb2cudWkuVGFiUmVu
ZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90YWJiYXIuanMnLCBbJ2dv
b2cudWkuVGFiQmFyJywgJ2dvb2cudWkuVGFiQmFyLkxvY2F0aW9uJ10sIFsnZ29vZy51aS5Db21w
b25lbnQuRXZlbnRUeXBlJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVy
Lk9yaWVudGF0aW9uJywgJ2dvb2cudWkuVGFiJywgJ2dvb2cudWkuVGFiQmFyUmVuZGVyZXInLCAn
Z29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmJh
cl90ZXN0LmpzJywgWydnb29nLnVpLlRhYkJhclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2
ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29v
Zy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLkNvbXBv
bmVudCcsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLlRhYicsICdnb29nLnVpLlRhYkJh
cicsICdnb29nLnVpLlRhYkJhclJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgndWkvdGFiYmFycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVGFiQmFyUmVuZGVyZXInXSwgWydn
b29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudWkuQ29udGFpbmVyUmVu
ZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90YWJiYXJyZW5kZXJlcl90
ZXN0LmpzJywgWydnb29nLnVpLlRhYkJhclJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlh
LlJvbGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5q
c3VuaXQnLCAnZ29vZy50ZXN0aW5nLnVpLnJlbmRlcmVyYXNzZXJ0cycsICdnb29nLnVpLkNvbnRh
aW5lcicsICdnb29nLnVpLlRhYkJhcicsICdnb29nLnVpLlRhYkJhclJlbmRlcmVyJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGFibGVzb3J0ZXIuanMnLCBbJ2dvb2cudWkuVGFi
bGVTb3J0ZXInLCAnZ29vZy51aS5UYWJsZVNvcnRlci5FdmVudFR5cGUnXSwgWydnb29nLmFycmF5
JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0Jywg
J2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnVpLkNvbXBv
bmVudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmxlc29ydGVyX3Rlc3Qu
anMnLCBbJ2dvb2cudWkuVGFibGVTb3J0ZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRv
bScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3Rp
bmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5UYWJsZVNvcnRlcidd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYnBhbmUuanMnLCBbJ2dvb2cudWku
VGFiUGFuZScsICdnb29nLnVpLlRhYlBhbmUuRXZlbnRzJywgJ2dvb2cudWkuVGFiUGFuZS5UYWJM
b2NhdGlvbicsICdnb29nLnVpLlRhYlBhbmUuVGFiUGFnZScsICdnb29nLnVpLlRhYlBhbmVFdmVu
dCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dv
b2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdn
b29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5l
dmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHlsZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJ3VpL3RhYnBhbmVfdGVzdC5qcycsIFsnZ29vZy51aS5UYWJQYW5lVGVzdCddLCBbJ2dvb2cu
ZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5UYWJQYW5lJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGFicmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVGFiUmVu
ZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dv
b2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkv
dGFicmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5UYWJSZW5kZXJlclRlc3QnXSwgWydnb29n
LmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29n
LnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnVpLnJl
bmRlcmVyYXNzZXJ0cycsICdnb29nLnVpLlRhYicsICdnb29nLnVpLlRhYlJlbmRlcmVyJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGV4dGFyZWEuanMnLCBbJ2dvb2cudWkuVGV4
dGFyZWEnLCAnZ29vZy51aS5UZXh0YXJlYS5FdmVudFR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAn
Z29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScs
ICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLlRleHRhcmVhUmVuZGVy
ZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90
ZXh0YXJlYV90ZXN0LmpzJywgWydnb29nLnVpLlRleHRhcmVhVGVzdCddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLnN0eWxlJywgJ2dvb2cu
dGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnRPYnNl
cnZlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuVGV4dGFyZWEnLCAnZ29vZy51
aS5UZXh0YXJlYVJlbmRlcmVyJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnBy
b2R1Y3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90ZXh0YXJlYXJlbmRlcmVy
LmpzJywgWydnb29nLnVpLlRleHRhcmVhUmVuZGVyZXInXSwgWydnb29nLmRvbS5UYWdOYW1lJywg
J2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9nZ2xlYnV0dG9uLmpzJywgWydnb29nLnVpLlRvZ2ds
ZUJ1dHRvbiddLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cu
dWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXIuanMnLCBbJ2dvb2cudWkuVG9vbGJhciddLCBb
J2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuVG9vbGJhclJlbmRlcmVyJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcl90ZXN0LmpzJywgWydnb29nLnVpLlRvb2xi
YXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZl
bnRUeXBlJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVu
dCcsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWkuVG9vbGJhcicsICdnb29nLnVpLlRv
b2xiYXJNZW51QnV0dG9uJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJh
cmJ1dHRvbi5qcycsIFsnZ29vZy51aS5Ub29sYmFyQnV0dG9uJ10sIFsnZ29vZy51aS5CdXR0b24n
LCAnZ29vZy51aS5Ub29sYmFyQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJidXR0b25yZW5kZXJlci5qcycs
IFsnZ29vZy51aS5Ub29sYmFyQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLnVpLkN1c3RvbUJ1dHRv
blJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcmNvbG9y
bWVudWJ1dHRvbi5qcycsIFsnZ29vZy51aS5Ub29sYmFyQ29sb3JNZW51QnV0dG9uJ10sIFsnZ29v
Zy51aS5Db2xvck1lbnVCdXR0b24nLCAnZ29vZy51aS5Ub29sYmFyQ29sb3JNZW51QnV0dG9uUmVu
ZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
J3VpL3Rvb2xiYXJjb2xvcm1lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Ub29sYmFy
Q29sb3JNZW51QnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uY2xh
c3NsaXN0JywgJ2dvb2cudWkuQ29sb3JNZW51QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5NZW51
QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5Ub29sYmFyTWVudUJ1dHRvblJlbmRlcmVyJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcmNvbG9ybWVudWJ1dHRvbnJlbmRl
cmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuVG9vbGJhckNvbG9yTWVudUJ1dHRvblJlbmRlcmVyVGVz
dCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLnVp
LlJlbmRlcmVySGFybmVzcycsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dv
b2cudWkuVG9vbGJhckNvbG9yTWVudUJ1dHRvbicsICdnb29nLnVpLlRvb2xiYXJDb2xvck1lbnVC
dXR0b25SZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJt
ZW51YnV0dG9uLmpzJywgWydnb29nLnVpLlRvb2xiYXJNZW51QnV0dG9uJ10sIFsnZ29vZy51aS5N
ZW51QnV0dG9uJywgJ2dvb2cudWkuVG9vbGJhck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVp
LnJlZ2lzdHJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcm1lbnVi
dXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Ub29sYmFyTWVudUJ1dHRvblJlbmRlcmVyJ10s
IFsnZ29vZy51aS5NZW51QnV0dG9uUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCd1aS90b29sYmFycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVG9vbGJhclJlbmRlcmVyJ10s
IFsnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudWkuQ29u
dGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVyZXInLCAnZ29vZy51aS5TZXBhcmF0b3In
LCAnZ29vZy51aS5Ub29sYmFyU2VwYXJhdG9yUmVuZGVyZXInXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd1aS90b29sYmFyc2VsZWN0LmpzJywgWydnb29nLnVpLlRvb2xiYXJTZWxlY3Qn
XSwgWydnb29nLnVpLlNlbGVjdCcsICdnb29nLnVpLlRvb2xiYXJNZW51QnV0dG9uUmVuZGVyZXIn
LCAnZ29vZy51aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rv
b2xiYXJzZXBhcmF0b3IuanMnLCBbJ2dvb2cudWkuVG9vbGJhclNlcGFyYXRvciddLCBbJ2dvb2cu
dWkuU2VwYXJhdG9yJywgJ2dvb2cudWkuVG9vbGJhclNlcGFyYXRvclJlbmRlcmVyJywgJ2dvb2cu
dWkucmVnaXN0cnknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFyc2Vw
YXJhdG9ycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVG9vbGJhclNlcGFyYXRvclJlbmRlcmVyJ10s
IFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0
JywgJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRScsICdnb29nLnVpLk1lbnVTZXBhcmF0
b3JSZW5kZXJlciddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJzZXBh
cmF0b3JyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLlRvb2xiYXJTZXBhcmF0b3JSZW5kZXJl
clRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy50ZXN0aW5n
LmpzdW5pdCcsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFT
U05BTUUnLCAnZ29vZy51aS5Ub29sYmFyU2VwYXJhdG9yJywgJ2dvb2cudWkuVG9vbGJhclNlcGFy
YXRvclJlbmRlcmVyJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcnRv
Z2dsZWJ1dHRvbi5qcycsIFsnZ29vZy51aS5Ub29sYmFyVG9nZ2xlQnV0dG9uJ10sIFsnZ29vZy51
aS5Ub2dnbGVCdXR0b24nLCAnZ29vZy51aS5Ub29sYmFyQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51
aS5yZWdpc3RyeSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2x0aXAuanMn
LCBbJ2dvb2cudWkuVG9vbHRpcCcsICdnb29nLnVpLlRvb2x0aXAuQ3Vyc29yVG9vbHRpcFBvc2l0
aW9uJywgJ2dvb2cudWkuVG9vbHRpcC5FbGVtZW50VG9vbHRpcFBvc2l0aW9uJywgJ2dvb2cudWku
VG9vbHRpcC5TdGF0ZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScs
ICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29v
Zy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29n
Lm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cucG9zaXRpb25pbmcnLCAn
Z29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29y
bmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVy
Zmxvd1N0YXR1cycsICdnb29nLnBvc2l0aW9uaW5nLlZpZXdwb3J0UG9zaXRpb24nLCAnZ29vZy5z
dHJ1Y3RzLlNldCcsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuUG9wdXAnLCAnZ29vZy51aS5Qb3B1
cEJhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sdGlwX3Rlc3QuanMn
LCBbJ2dvb2cudWkuVG9vbHRpcFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1l
JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29n
LmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5tYXRoLkNvb3Jk
aW5hdGUnLCAnZ29vZy5wb3NpdGlvbmluZy5BYnNvbHV0ZVBvc2l0aW9uJywgJ2dvb2cuc3R5bGUn
LCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNl
cicsICdnb29nLnRlc3RpbmcuVGVzdFF1ZXVlJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29v
Zy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLlBvcHVwQmFzZScsICdnb29nLnVpLlRvb2x0aXAn
LCAnZ29vZy51c2VyQWdlbnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVl
L2Jhc2Vub2RlLmpzJywgWydnb29nLnVpLnRyZWUuQmFzZU5vZGUnLCAnZ29vZy51aS50cmVlLkJh
c2VOb2RlLkV2ZW50VHlwZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hMTF5LmFyaWEnLCAnZ29v
Zy5hc3NlcnRzJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5l
dmVudHMuS2V5Q29kZXMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU3R5
bGUnLCAnZ29vZy5odG1sLmxlZ2FjeWNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cu
c3RyaW5nLlN0cmluZ0J1ZmZlcicsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdHJlZS9iYXNlbm9kZV90ZXN0LmpzJywg
Wydnb29nLnVpLnRyZWUuQmFzZU5vZGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5odG1sLmxlZ2FjeWNvbnZlcnNpb25z
JywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywg
J2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS50cmVl
LkJhc2VOb2RlJywgJ2dvb2cudWkudHJlZS5UcmVlQ29udHJvbCcsICdnb29nLnVpLnRyZWUuVHJl
ZU5vZGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVlL3RyZWVjb250cm9s
LmpzJywgWydnb29nLnVpLnRyZWUuVHJlZUNvbnRyb2wnXSwgWydnb29nLmExMXkuYXJpYScsICdn
b29nLmFzc2VydHMnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlw
ZScsICdnb29nLmV2ZW50cy5Gb2N1c0hhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcics
ICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5sb2cnLCAnZ29vZy51aS50cmVlLkJhc2VOb2Rl
JywgJ2dvb2cudWkudHJlZS5UcmVlTm9kZScsICdnb29nLnVpLnRyZWUuVHlwZUFoZWFkJywgJ2dv
b2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndWkvdHJlZS90cmVl
Y29udHJvbF90ZXN0LmpzJywgWydnb29nLnVpLnRyZWUuVHJlZUNvbnRyb2xUZXN0J10sIFsnZ29v
Zy5kb20nLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVpLnRyZWUuVHJlZUNvbnRyb2wn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVlL3RyZWVub2RlLmpzJywgWydn
b29nLnVpLnRyZWUuVHJlZU5vZGUnXSwgWydnb29nLnVpLnRyZWUuQmFzZU5vZGUnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVlL3R5cGVhaGVhZC5qcycsIFsnZ29vZy51aS50
cmVlLlR5cGVBaGVhZCcsICdnb29nLnVpLnRyZWUuVHlwZUFoZWFkLk9mZnNldCddLCBbJ2dvb2cu
YXJyYXknLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJ1
Y3RzLlRyaWUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVlL3R5cGVhaGVh
ZF90ZXN0LmpzJywgWydnb29nLnVpLnRyZWUuVHlwZUFoZWFkVGVzdCddLCBbJ2dvb2cuZG9tJywg
J2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51aS50
cmVlLlRyZWVDb250cm9sJywgJ2dvb2cudWkudHJlZS5UeXBlQWhlYWQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd1aS90cmlzdGF0ZW1lbnVpdGVtLmpzJywgWydnb29nLnVpLlRyaVN0
YXRlTWVudUl0ZW0nLCAnZ29vZy51aS5UcmlTdGF0ZU1lbnVJdGVtLlN0YXRlJ10sIFsnZ29vZy5k
b20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAn
Z29vZy51aS5UcmlTdGF0ZU1lbnVJdGVtUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyaXN0YXRlbWVudWl0ZW1yZW5kZXJlci5q
cycsIFsnZ29vZy51aS5UcmlTdGF0ZU1lbnVJdGVtUmVuZGVyZXInXSwgWydnb29nLmFzc2VydHMn
LCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuTWVudUl0ZW1SZW5kZXJlciddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3R3b3RodW1ic2xpZGVyLmpzJywgWydnb29nLnVp
LlR3b1RodW1iU2xpZGVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9s
ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudWkuU2xpZGVyQmFzZSdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3R3b3RodW1ic2xpZGVyX3Rlc3QuanMn
LCBbJ2dvb2cudWkuVHdvVGh1bWJTbGlkZXJUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcs
ICdnb29nLnVpLlNsaWRlckJhc2UnLCAnZ29vZy51aS5Ud29UaHVtYlNsaWRlciddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3ppcHB5LmpzJywgWydnb29nLnVpLlppcHB5JywgJ2dv
b2cudWkuWmlwcHkuRXZlbnRzJywgJ2dvb2cudWkuWmlwcHlFdmVudCddLCBbJ2dvb2cuYTExeS5h
cmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29v
Zy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cu
ZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2
ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHlsZSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VpL3ppcHB5X3Rlc3QuanMnLCBbJ2dvb2cudWku
WmlwcHlUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFn
TmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5vYmplY3Qn
LCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudWku
WmlwcHknXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1cmkvdXJpLmpzJywgWydnb29n
LlVyaScsICdnb29nLlVyaS5RdWVyeURhdGEnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuc3RyaW5n
JywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudXJpLnV0aWxzJywg
J2dvb2cudXJpLnV0aWxzLkNvbXBvbmVudEluZGV4JywgJ2dvb2cudXJpLnV0aWxzLlN0YW5kYXJk
UXVlcnlQYXJhbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VyaS91cmlfdGVzdC5q
cycsIFsnZ29vZy5VcmlUZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VyaS91dGlscy5qcycsIFsnZ29vZy51cmku
dXRpbHMnLCAnZ29vZy51cmkudXRpbHMuQ29tcG9uZW50SW5kZXgnLCAnZ29vZy51cmkudXRpbHMu
UXVlcnlBcnJheScsICdnb29nLnVyaS51dGlscy5RdWVyeVZhbHVlJywgJ2dvb2cudXJpLnV0aWxz
LlN0YW5kYXJkUXVlcnlQYXJhbSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cmluZycsICdn
b29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VyaS91dGlsc190
ZXN0LmpzJywgWydnb29nLnVyaS51dGlsc1Rlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdnb29n
LnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3Rpbmcu
anN1bml0JywgJ2dvb2cudXJpLnV0aWxzJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dXNlcmFnZW50L2Fkb2JlcmVhZGVyLmpzJywgWydnb29nLnVzZXJBZ2VudC5hZG9iZVJlYWRlcidd
LCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgndXNlcmFnZW50L2Fkb2JlcmVhZGVyX3Rlc3QuanMnLCBbJ2dvb2cudXNlckFnZW50
LmFkb2JlUmVhZGVyVGVzdCddLCBbJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdl
bnQuYWRvYmVSZWFkZXInXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQv
Zmxhc2guanMnLCBbJ2dvb2cudXNlckFnZW50LmZsYXNoJ10sIFsnZ29vZy5zdHJpbmcnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvZmxhc2hfdGVzdC5qcycsIFsnZ29v
Zy51c2VyQWdlbnQuZmxhc2hUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVz
ZXJBZ2VudC5mbGFzaCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9p
cGhvdG8uanMnLCBbJ2dvb2cudXNlckFnZW50LmlwaG90byddLCBbJ2dvb2cuc3RyaW5nJywgJ2dv
b2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L2pz
Y3JpcHQuanMnLCBbJ2dvb2cudXNlckFnZW50LmpzY3JpcHQnXSwgWydnb29nLnN0cmluZyddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9qc2NyaXB0X3Rlc3QuanMnLCBb
J2dvb2cudXNlckFnZW50LmpzY3JpcHRUZXN0J10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdn
b29nLnVzZXJBZ2VudC5qc2NyaXB0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndXNl
cmFnZW50L2tleWJvYXJkLmpzJywgWydnb29nLnVzZXJBZ2VudC5rZXlib2FyZCddLCBbJ2dvb2cu
bGFicy51c2VyQWdlbnQucGxhdGZvcm0nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1
c2VyYWdlbnQva2V5Ym9hcmRfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnQua2V5Ym9hcmRUZXN0
J10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdl
bnQudXRpbCcsICdnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcuanN1
bml0JywgJ2dvb2cudXNlckFnZW50LmtleWJvYXJkJywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcGxhdGZvcm0uanMnLCBb
J2dvb2cudXNlckFnZW50LnBsYXRmb3JtJ10sIFsnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdl
bnQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcGxhdGZvcm1fdGVz
dC5qcycsIFsnZ29vZy51c2VyQWdlbnQucGxhdGZvcm1UZXN0J10sIFsnZ29vZy50ZXN0aW5nLk1v
Y2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCcsICdn
b29nLnVzZXJBZ2VudC5wbGF0Zm9ybScsICdnb29nLnVzZXJBZ2VudFRlc3RVdGlsJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L3Byb2R1Y3QuanMnLCBbJ2dvb2cudXNl
ckFnZW50LnByb2R1Y3QnXSwgWydnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5s
YWJzLnVzZXJBZ2VudC5wbGF0Zm9ybScsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9wcm9kdWN0X2lzdmVyc2lvbi5qcycsIFsnZ29vZy51
c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRm
b3JtJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnBy
b2R1Y3QnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcHJvZHVjdF90
ZXN0LmpzJywgWydnb29nLnVzZXJBZ2VudC5wcm9kdWN0VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAn
Z29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRp
bCcsICdnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlS
ZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cu
dXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nLCAn
Z29vZy51c2VyQWdlbnRUZXN0VXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3Vz
ZXJhZ2VudC91c2VyYWdlbnQuanMnLCBbJ2dvb2cudXNlckFnZW50J10sIFsnZ29vZy5sYWJzLnVz
ZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lJywgJ2dvb2cubGFi
cy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dvb2cu
c3RyaW5nJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L3VzZXJhZ2Vu
dF9xdWlya3NfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnRRdWlya3NUZXN0J10sIFsnZ29vZy50
ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3VzZXJhZ2VudC91c2VyYWdlbnRfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnRUZXN0
J10sIFsnZ29vZy5hcnJheScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cu
bGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAn
Z29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdn
b29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudFRlc3RVdGlsJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L3VzZXJhZ2VudHRlc3R1dGlsLmpzJywgWydnb29nLnVz
ZXJBZ2VudFRlc3RVdGlsJywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwuVXNlckFnZW50cyddLCBb
J2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxhYnMudXNlckFnZW50LmVuZ2lu
ZScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cudXNlckFnZW50JywgJ2dv
b2cudXNlckFnZW50LmtleWJvYXJkJywgJ2dvb2cudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cu
dXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvZmxvYXQzMmFycmF5LmpzJywgWydnb29n
LnZlYy5GbG9hdDMyQXJyYXknXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndmVj
L2Zsb2F0NjRhcnJheS5qcycsIFsnZ29vZy52ZWMuRmxvYXQ2NEFycmF5J10sIFtdLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQzLmpzJywgWydnb29nLnZlYy5NYXQzJ10sIFsn
Z29vZy52ZWMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0M2QuanMnLCBb
J2dvb2cudmVjLm1hdDNkJywgJ2dvb2cudmVjLm1hdDNkLlR5cGUnXSwgWydnb29nLnZlYyddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQzZi5qcycsIFsnZ29vZy52ZWMubWF0
M2YnLCAnZ29vZy52ZWMubWF0M2YuVHlwZSddLCBbJ2dvb2cudmVjJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndmVjL21hdDQuanMnLCBbJ2dvb2cudmVjLk1hdDQnXSwgWydnb29nLnZl
YycsICdnb29nLnZlYy5WZWMzJywgJ2dvb2cudmVjLlZlYzQnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCd2ZWMvbWF0NGQuanMnLCBbJ2dvb2cudmVjLm1hdDRkJywgJ2dvb2cudmVjLm1h
dDRkLlR5cGUnXSwgWydnb29nLnZlYycsICdnb29nLnZlYy52ZWMzZCcsICdnb29nLnZlYy52ZWM0
ZCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQ0Zi5qcycsIFsnZ29vZy52
ZWMubWF0NGYnLCAnZ29vZy52ZWMubWF0NGYuVHlwZSddLCBbJ2dvb2cudmVjJywgJ2dvb2cudmVj
LnZlYzNmJywgJ2dvb2cudmVjLnZlYzRmJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
dmVjL21hdHJpeDMuanMnLCBbJ2dvb2cudmVjLk1hdHJpeDMnXSwgW10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgndmVjL21hdHJpeDQuanMnLCBbJ2dvb2cudmVjLk1hdHJpeDQnXSwgWydn
b29nLnZlYycsICdnb29nLnZlYy5WZWMzJywgJ2dvb2cudmVjLlZlYzQnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCd2ZWMvcXVhdGVybmlvbi5qcycsIFsnZ29vZy52ZWMuUXVhdGVybmlv
biddLCBbJ2dvb2cudmVjJywgJ2dvb2cudmVjLlZlYzMnLCAnZ29vZy52ZWMuVmVjNCddLCBmYWxz
ZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9yYXkuanMnLCBbJ2dvb2cudmVjLlJheSddLCBb
J2dvb2cudmVjLlZlYzMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjLmpz
JywgWydnb29nLnZlYycsICdnb29nLnZlYy5BbnlUeXBlJywgJ2dvb2cudmVjLkFycmF5VHlwZScs
ICdnb29nLnZlYy5GbG9hdDMyJywgJ2dvb2cudmVjLkZsb2F0NjQnLCAnZ29vZy52ZWMuTnVtYmVy
J10sIFsnZ29vZy52ZWMuRmxvYXQzMkFycmF5JywgJ2dvb2cudmVjLkZsb2F0NjRBcnJheSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMyLmpzJywgWydnb29nLnZlYy5WZWMy
J10sIFsnZ29vZy52ZWMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjMmQu
anMnLCBbJ2dvb2cudmVjLnZlYzJkJywgJ2dvb2cudmVjLnZlYzJkLlR5cGUnXSwgWydnb29nLnZl
YyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMyZi5qcycsIFsnZ29vZy52
ZWMudmVjMmYnLCAnZ29vZy52ZWMudmVjMmYuVHlwZSddLCBbJ2dvb2cudmVjJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzMuanMnLCBbJ2dvb2cudmVjLlZlYzMnXSwgWydn
b29nLnZlYyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMzZC5qcycsIFsn
Z29vZy52ZWMudmVjM2QnLCAnZ29vZy52ZWMudmVjM2QuVHlwZSddLCBbJ2dvb2cudmVjJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzNmLmpzJywgWydnb29nLnZlYy52ZWMz
ZicsICdnb29nLnZlYy52ZWMzZi5UeXBlJ10sIFsnZ29vZy52ZWMnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCd2ZWMvdmVjNC5qcycsIFsnZ29vZy52ZWMuVmVjNCddLCBbJ2dvb2cudmVj
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzRkLmpzJywgWydnb29nLnZl
Yy52ZWM0ZCcsICdnb29nLnZlYy52ZWM0ZC5UeXBlJ10sIFsnZ29vZy52ZWMnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjNGYuanMnLCBbJ2dvb2cudmVjLnZlYzRmJywgJ2dv
b2cudmVjLnZlYzRmLlR5cGUnXSwgWydnb29nLnZlYyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJ3dlYmdsL3dlYmdsLmpzJywgWydnb29nLndlYmdsJ10sIFtdLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJ3dpbmRvdy93aW5kb3cuanMnLCBbJ2dvb2cud2luZG93J10sIFsnZ29v
Zy5kb20uVGFnTmFtZScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cuc3Ry
aW5nJywgJ2dvb2cudXNlckFnZW50J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnd2lu
ZG93L3dpbmRvd190ZXN0LmpzJywgWydnb29nLndpbmRvd1Rlc3QnXSwgWydnb29nLmRvbScsICdn
b29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cu
bGFicy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkFz
eW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0
aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLndpbmRvdyddLCBmYWxzZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9hdHRyaWJzL2dsLWJpbmRBdHRyaWJMb2NhdGlvbi1hbGlhc2luZy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
YXR0cmlicy9nbC1iaW5kQXR0cmliTG9jYXRpb24tYWxpYXNpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YWU1NDcxNWRjMjJlMzI5M2RlY2QxZWM4NzcwNzRhMzA5NjdjZGM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvYXR0cmlicy9nbC1iaW5kQXR0cmliTG9jYXRpb24tYWxpYXNpbmcuaHRtbApAQCAtMCwwICsx
LDQyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9nbC1iaW5kYXR0cmlibG9jYXRpb24tYWxpYXNpbmcuanMi
Pjwvc2NyaXB0PgorPHRpdGxlPmJpbmRBdHRyaWJMb2NhdGlvbiB3aXRoIGFsaWFzaW5nPC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9
IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPHNjcmlwdCBp
ZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2F0dHJpYnV0ZSAkKHR5cGVfMSkgYV8xOworYXR0cmli
dXRlICQodHlwZV8yKSBhXzI7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSAkKGds
X1Bvc2l0aW9uXzEpICsgJChnbF9Qb3NpdGlvbl8yKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgY29tYmluYXRp
b25zIG9mIHZhbGlkLCBhY3RpdmUgYXR0cmlidXRlIHR5cGVzIGNhbm5vdCBiZSBib3VuZCB0byB0
aGUgc2FtZSBsb2NhdGlvbiB3aXRoIGJpbmRBdHRyaWJMb2NhdGlvbi4iKTsKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczog
ZmFsc2V9KTsKK3ZhciBnbEZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHd0dS5z
aW1wbGVDb2xvckZyYWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIpOworCitydW5CaW5k
QXR0cmliTG9jYXRpb25BbGlhc2luZ1Rlc3Qod3R1LCBnbCwgZ2xGcmFnbWVudFNoYWRlciwgd3R1
LmdldFNjcmlwdCgndmVydGV4U2hhZGVyJykpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWJpbmRB
dHRyaWJMb2NhdGlvbi1tYXRyaXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtYmluZEF0dHJpYkxvY2F0aW9u
LW1hdHJpeC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNWZkMjViMTk3ZTY5MWMwNjhlNWM5N2M4NDc0YWU0
MDgzYTVmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWJpbmRBdHRyaWJMb2NhdGlv
bi1tYXRyaXguaHRtbApAQCAtMCwwICsxLDk4IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzx0aXRsZT5XZWJHTCBiaW5kQXR0cmliTG9jYXRpb24gd2l0
aCBNYXRyaXggQXR0cmlidXRlcyBDb25mb3JtYW5jZSBUZXN0PC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0
aDogOHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB2ZWN0b3JzIHBsYWNlZCB2aWEg
YmluZEF0dHJpYkxvY2F0aW9uIHJpZ2h0IGFmdGVyIG1hdHJpY2llcyB3aWxsIGZhaWwgaWYgdGhl
cmUgaXMgaW5zdWZmaWNpZW50IHJvb20gZm9yIHRoZSBtYXRyaXguIik7CisKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczog
ZmFsc2V9KTsKKworLy8gTWFrZSBzdXJlIHdlIGhhdmUgcm9vbSBmb3IgYXQgbGVhc3QgYSBtYXQ0
LgordmFyIG1heEF0dHJpYnV0ZXMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRS
SUJTKTsKK2RlYnVnKCdNQVhfVkVSVEVYX0FUVFJJQlVURVMgaXMgJyArIG1heEF0dHJpYnV0ZXMp
Oworc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ21heEF0dHJpYnV0ZXMnLCAnNCcpOworCit2
YXIgZ2xGcmFnbWVudFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyKGdsLCB3dHUuc2ltcGxlQ29sb3JG
cmFnbWVudFNoYWRlciwgZ2wuRlJBR01FTlRfU0hBREVSKTsKKworLy8gR2l2ZW4gYSBtYXRyaXgg
ZGltZW5zaW9uLCBsb2FkIGEgdmVydGV4IHNoYWRlciB3aXRoIGEgbWF0cml4IG9mIHRoYXQgZGlt
ZW5zaW9uCisvLyBhbmQgYSB2ZWN0b3IuIEVuc3VyZSB0aGF0IGJvdGggdGhlIHZlY3RvciBhbmQg
bWF0cml4IGFyZSBhY3RpdmUgYXR0cmlidXRlcy4KKy8vIFJldHVybiB0aGUgY29tcGlsZWQgdmVy
dGV4IHNoYWRlci4KK2Z1bmN0aW9uIGxvYWRWZXJ0ZXhTaGFkZXIobnVtTWF0cml4RGltZW5zaW9u
cykgeworICAgIHZhciBzdHJWZXJ0ZXhTaGFkZXIgPQorICAgICAgICAnYXR0cmlidXRlIG1hdCcg
KyBudW1NYXRyaXhEaW1lbnNpb25zICsgJyBtYXRyaXg7XG4nICsKKyAgICAgICAgJ2F0dHJpYnV0
ZSB2ZWMnICsgbnVtTWF0cml4RGltZW5zaW9ucyArICcgdmVjdG9yO1xuJyArCisgICAgICAgICd2
b2lkIG1haW4odm9pZCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQodmVjdG9yKm1hdHJpeCc7CisgICAg
Ly8gRW5zdXJlIHRoZSB2ZWM0IGhhcyB0aGUgY29ycmVjdCBudW1iZXIgb2YgZGltZW5zaW9ucyBp
biBvcmRlciB0byBiZSBhc3NpZ25hYmxlCisgICAgLy8gdG8gZ2xfUG9zaXRpb24uCisgICAgZm9y
ICh2YXIgaWkgPSBudW1NYXRyaXhEaW1lbnNpb25zOyBpaSA8IDQ7ICsraWkpIHsKKyAgICAgICAg
c3RyVmVydGV4U2hhZGVyICs9ICIsMC4wIjsKKyAgICB9CisgICAgc3RyVmVydGV4U2hhZGVyICs9
ICIpO31cbiI7CisgICAgcmV0dXJuIHd0dS5sb2FkU2hhZGVyKGdsLCBzdHJWZXJ0ZXhTaGFkZXIs
IGdsLlZFUlRFWF9TSEFERVIpOworfQorCisvLyBHaXZlbiBhIHZlcnRleCBzaGFkZXIsIG1hdHJp
eCBsb2NhdGlvbiBhbmQgdmVjdG9yIGxvY2F0aW9uLCBjcmVhdGUgYW5kIGxpbmsKKy8vIGEgcHJv
Z3JhbSB3aXRoIGdsRnJhZ21lbnRTaGFkZXIgYW5kIGEgdmVydGV4IHNoYWRlciByZXR1cm5lZCBi
eSBsb2FkVmVydGV4U2hhZGVyCisvLyBhdHRhY2hlZC4gQmluZCB0aGUgbWF0cml4IHRvIG1hdHJp
eExvY2F0aW9uIGFuZCB0aGUgdmVjdG9yIHRvIHZlY3RvckxvY2F0aW9uLgorLy8gUmV0dXJuIHdo
ZXRoZXIgdGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWwuCitmdW5jdGlvbiBjcmVhdGVBbmRMaW5rUHJv
Z3JhbShnbFZlcnRleFNoYWRlciwgbWF0cml4TG9jYXRpb24sIHZlY3RvckxvY2F0aW9uKSB7Cisg
ICAgdmFyIGdsUHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5iaW5kQXR0cmli
TG9jYXRpb24oZ2xQcm9ncmFtLCBtYXRyaXhMb2NhdGlvbiwgJ21hdHJpeCcpOworICAgIGdsLmJp
bmRBdHRyaWJMb2NhdGlvbihnbFByb2dyYW0sIHZlY3RvckxvY2F0aW9uLCAndmVjdG9yJyk7Cisg
ICAgZ2wuYXR0YWNoU2hhZGVyKGdsUHJvZ3JhbSwgZ2xWZXJ0ZXhTaGFkZXIpOworICAgIGdsLmF0
dGFjaFNoYWRlcihnbFByb2dyYW0sIGdsRnJhZ21lbnRTaGFkZXIpOworICAgIGdsLmxpbmtQcm9n
cmFtKGdsUHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2xQcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUyk7Cit9CisKKy8vIEZvciBlYWNoIG1hdHJpeCBkaW1lbnNpb24g
KG1hdDIsIG1hdDMgYW5kIG1hdDQpCitmb3IgKHZhciBtbSA9IDI7IG1tIDw9IDQ7ICsrbW0pIHsK
KyAgICBkZWJ1ZygnVGVzdGluZyAnICsgbW0gKyAnIGRpbWVuc2lvbmFsIG1hdHJpY2VzJyk7Cisg
ICAgdmFyIGdsVmVydGV4U2hhZGVyID0gbG9hZFZlcnRleFNoYWRlcihtbSk7CisgICAgLy8gUGVy
IHRoZSBXZWJHTCBzcGVjOiAiTGlua1Byb2dyYW0gd2lsbCBmYWlsIGlmIHRoZSBhdHRyaWJ1dGUg
YmluZGluZ3MgYXNzaWduZWQKKyAgICAvLyBieSBiaW5kQXR0cmliTG9jYXRpb24gZG8gbm90IGxl
YXZlIGVub3VnaCBzcGFjZSB0byBhc3NpZ24gYSBsb2NhdGlvbiBmb3IgYW4KKyAgICAvLyBhY3Rp
dmUgbWF0cml4IGF0dHJpYnV0ZSB3aGljaCByZXF1aXJlcyBtdWx0aXBsZSBjb250aWd1b3VzIGdl
bmVyaWMgYXR0cmlidXRlcy4iCisgICAgLy8gV2Ugd2lsbCB0ZXN0IHRoaXMgYnkgcGxhY2luZyB0
aGUgdmVjdG9yIGFmdGVyIHRoZSBtYXRyaXggYXR0cmlidXRlIHN1Y2ggdGhhdCB0aGVyZQorICAg
IC8vIGlzIG5vdCBlbm91Z2ggcm9vbSBmb3IgdGhlIG1hdHJpeC4gVmVydGlmeSB0aGUgbGluayBv
cGVyYXRpb24gZmFpbHMuCisKKyAgICAvLyBSdW4gdGhlIHRlc3QgZm9yIGVhY2ggYXZhaWxhYmxl
IGF0dHJpYnV0ZSBzbG90LiAgR28gdG8gbWF4QXR0cmlidXRlcy1tbSB0byBsZWF2ZSBlbm91Z2gg
cm9vbQorICAgIC8vIGZvciB0aGUgbWF0cml4IGl0c2VsZi4gTGVhdmUgYW5vdGhlciBzbG90IG9w
ZW4gZm9yIHRoZSB2ZWN0b3IgZm9sbG93aW5nIHRoZSBtYXRyaXguCisgICAgZm9yICh2YXIgcHAg
PSAwOyBwcCA8PSBtYXhBdHRyaWJ1dGVzIC0gbW0gLSAxOyArK3BwKSB7CisgICAgICAgIC8vIEZv
ciBlYWNoIG1hdHJpeCBkaW1lbnNpb24sIGJpbmQgdGhlIHZlY3RvciByaWdodCBhZnRlciB0aGUg
bWF0cml4IHN1Y2ggdGhhdCB3ZSBsZWF2ZQorICAgICAgICAvLyBpbnN1ZmZpY2llbnQgcm9vbSBm
b3IgdGhlIG1hdHJpeC4gVmVyaWZ5IGRvaW5nIHRoaXMgd2lsbCBmYWlsIHRoZSBsaW5rIG9wZXJh
dGlvbi4KKyAgICAgICAgZm9yICh2YXIgbGwgPSAwOyBsbCA8IG1tOyArK2xsKSB7CisgICAgICAg
ICAgICB2YXIgdmVjdG9yTG9jYXRpb24gPSBwcCArIGxsOworICAgICAgICAgICAgYXNzZXJ0TXNn
KCFjcmVhdGVBbmRMaW5rUHJvZ3JhbShnbFZlcnRleFNoYWRlciwgLyptYXRyaXhMb2NhdGlvbiov
cHAsIHZlY3RvckxvY2F0aW9uKSwKKyAgICAgICAgICAgICAgICAiTWF0cml4IHdpdGggbG9jYXRp
b24gIiArIHBwICsgIiBhbmQgdmVjdG9yIHdpdGggbG9jYXRpb24gIiArIHZlY3RvckxvY2F0aW9u
ICsgIiBzaG91bGQgbm90IGxpbmsuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gRW5zdXJlIHRo
YXQgb25jZSB3ZSBoYXZlIGxlZnQgZW5vdWdoIHJvb20gZm9yIHRoZSBtYXRyaXgsIHRoZSBwcm9n
cmFtIGxpbmtzIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgdmFyIHZlY3RvckxvY2F0aW9uID0gcHAg
KyBsbDsKKyAgICAgICAgYXNzZXJ0TXNnKGNyZWF0ZUFuZExpbmtQcm9ncmFtKGdsVmVydGV4U2hh
ZGVyLCAvKm1hdHJpeExvY2F0aW9uKi9wcCwgdmVjdG9yTG9jYXRpb24pLAorICAgICAgICAgICAg
Ik1hdHJpeCB3aXRoIGxvY2F0aW9uICIgKyBwcCArICIgYW5kIHZlY3RvciB3aXRoIGxvY2F0aW9u
ICIgKyB2ZWN0b3JMb2NhdGlvbiArICIgc2hvdWxkIGxpbmsuIik7CisgICAgICAgIGRlYnVnKCcn
KTsKKyAgICB9CisgICAgZGVidWcoJycpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWJpbmRB
dHRyaWJMb2NhdGlvbi1ub25leGlzdGVudC1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtYmlu
ZEF0dHJpYkxvY2F0aW9uLW5vbmV4aXN0ZW50LWF0dHJpYnV0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2
OTY4YjVlYTRiMTdmZjkyY2JlNzE1ZGMyZjE4Y2YyOWJhMDNlYmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9hdHRyaWJzL2dsLWJpbmRBdHRyaWJMb2NhdGlvbi1ub25leGlzdGVudC1hdHRyaWJ1dGUuaHRt
bApAQCAtMCwwICsxLDgyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzx0aXRsZT5iaW5kQXR0cmliTG9jYXRpb24gd2l0aCBub25leGlzdGVudCBhdHRyaWJ1
dGUgbmFtZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iOCIgaGVpZ2h0PSI4Ij48L2NhbnZhcz4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworYXR0cmlidXRlIHZlYzQgYXR0cjsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoYXR0cik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgY2FsbGluZyBiaW5kQXR0cmliTG9jYXRp
b24gd2l0aCBhIG5vbi1leGlzdGVudCBhdHRyaWJ1dGUgbG9jYXRpb24gaXMgZmluZS4iKTsKKwor
Ly8gT3BlbkdMIEVTIDIuMC4yNSBzZWN0aW9uIDIuMTAgcGFnZSAzNC4KKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBmcmFnbWVu
dFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyKGdsLCB3dHUuc2ltcGxlQ29sb3JGcmFnbWVudFNoYWRl
ciwgZ2wuRlJBR01FTlRfU0hBREVSKTsKK3ZhciB2ZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRl
ckZyb21TY3JpcHQoZ2wsICd2ZXJ0ZXhTaGFkZXInLCBnbC5WRVJURVhfU0hBREVSKTsKK2Fzc2Vy
dE1zZyh2ZXJ0ZXhTaGFkZXIgIT0gbnVsbCwgIlZlcnRleCBzaGFkZXIgY29tcGlsZWQgc3VjY2Vz
c2Z1bGx5LiIpOworCit2YXIgY2hlY2tBdHRyaWJMb2NhdGlvbiA9IGZ1bmN0aW9uKHByb2dyYW0s
IGV4cGVjdGVkTG9jYXRpb24pIHsKKyAgICB2YXIgbG9jYXRpb24gPSBnbC5nZXRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCAnYXR0cicpOworICAgIGlmIChsb2NhdGlvbiAhPSBleHBlY3RlZExvY2F0
aW9uKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWQgbG9jYXRpb24gZm9yIGF0dHI6
ICcgKyBsb2NhdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnTG9jYXRp
b24gb2YgYXR0ciBpczogJyArIGxvY2F0aW9uKTsKKyAgICB9Cit9CisKK3ZhciB0ZXN0UHJvZ3Jh
bU5vbkV4aXN0ZW50QXR0cmlidXRlQm91bmQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcHJvZ3Jh
bSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3Jh
bSwgMCwgJ2F0dHInKTsKKyAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMSwgJ2Jv
Z3VzX2F0dHInKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsK
KyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgIGdsLmxp
bmtQcm9ncmFtKHByb2dyYW0pOworICAgIHZhciBsaW5rU3RhdHVzID0gZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgZXhwZWN0VHJ1ZShsaW5rU3Rh
dHVzLCAiTGluayBzaG91bGQgc3VjY2VlZCBldmVuIGlmIGEgbm9uLWV4aXN0ZW50IGF0dHJpYnV0
ZSBpcyBib3VuZC4iKTsKKyAgICBpZiAobGlua1N0YXR1cykgeworICAgICAgICBjaGVja0F0dHJp
YkxvY2F0aW9uKHByb2dyYW0sIDApOworICAgIH0KK307Cit2YXIgdGVzdFByb2dyYW1Ob25FeGlz
dGVudEF0dHJpYnV0ZU92ZXJsYXAgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IGds
LmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMSwg
J2F0dHInKTsKKyAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMSwgJ2JvZ3VzX2F0
dHInKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKKyAgICBn
bC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgIGdsLmxpbmtQcm9n
cmFtKHByb2dyYW0pOworICAgIHZhciBsaW5rU3RhdHVzID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgZXhwZWN0VHJ1ZShsaW5rU3RhdHVzLCAi
TGluayBzaG91bGQgc3VjY2VlZCBldmVuIGlmIGEgbm9uLWV4aXN0ZW50IGF0dHJpYnV0ZSBpcyBi
b3VuZCB0byB0aGUgc2FtZSBsb2NhdGlvbiBhcyBhbiBhdHRyaWJ1dGUgdGhhdCdzIHByZXNlbnQg
aW4gdGhlIHNoYWRlciB0ZXh0LiIpOworICAgIGlmIChsaW5rU3RhdHVzKSB7CisgICAgICAgIGNo
ZWNrQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMSk7CisgICAgfQorfTsKKwordGVzdFByb2dyYW1O
b25FeGlzdGVudEF0dHJpYnV0ZUJvdW5kKCk7Cit0ZXN0UHJvZ3JhbU5vbkV4aXN0ZW50QXR0cmli
dXRlT3ZlcmxhcCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWJpbmRBdHRyaWJMb2NhdGlvbi1y
ZXBlYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC1iaW5kQXR0cmliTG9jYXRpb24tcmVwZWF0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZmJlYTRmYjYzNjZjMzJhYTA2M2RmZTdiNGMyMTU5YjdkNzc4NTFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC1iaW5kQXR0cmliTG9jYXRpb24tcmVwZWF0ZWQu
aHRtbApAQCAtMCwwICsxLDY4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBSZXBlYXRlZCBCaW5kQXR0cmliTG9jYXRpb24gVGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCI+Cis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorICAgIGF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKKyAgICB2b2lk
IG1haW4oKQorICAgIHsKKyAgICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuMCwxLjAsMC4wLDEuMCk7CisgICAgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCByZXBlYXRlZCBsb2FkaW5nIG9mIHByb2dyYW1zIGlu
dm9sdmluZyBiaW5kQXR0cmliTG9jYXRpb24gY2FsbHMiKTsKK2RlYnVnKCJSZWdyZXNzaW9uIHRl
c3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVz
L2RldGFpbD9pZD01MTA2MzcnPmNyYnVnLmNvbS81MTA2Mzc8L2E+Iik7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2
YXIgZ19wcm9ncmFtOwordmFyIGdfYXR0cmliTG9jYXRpb247CitmdW5jdGlvbiBzZXR1cChhdHRy
aWJJbmRleCkgeworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgICBnbCwg
Wyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRpb24nXSwgW2F0dHJpYkluZGV4XSk7Cisg
IGdfcHJvZ3JhbSA9IHByb2dyYW07CisgIGdfYXR0cmliTG9jYXRpb24gPSBhdHRyaWJJbmRleDsK
KyAgc2hvdWxkQmUoImdsLmdldEF0dHJpYkxvY2F0aW9uKGdfcHJvZ3JhbSwgJ3ZQb3NpdGlvbicp
IiwgImdfYXR0cmliTG9jYXRpb24iKTsKKyAgcmV0dXJuIHByb2dyYW07Cit9CisKK3ZhciBwMCA9
IHNldHVwKDApOwordmFyIHAzID0gc2V0dXAoMyk7Cit2YXIgcDEgPSBzZXR1cCgxKTsKKy8vIFRo
aXMgY2FsbCBmYWlscyB0aGUgZ2V0QXR0cmliTG9jYXRpb24gY2hlY2sgb24gc29tZSBkcml2ZXJz
IHdoZW4KKy8vIENocm9tZSdzIHByb2dyYW0gYmluYXJ5IGNhY2hlIGlzIGVuYWJsZWQuIE9uIHRo
ZSBhZmZlY3RlZCBkcml2ZXJzLAorLy8gaXQgcmV0dXJucyB0aGUgYm91bmQgYXR0cmlidXRlIGxv
Y2F0aW9uIGZyb20gdGhlIGZpcnN0IGJpbmFyeQorLy8gY3JlYXRlZC4gU3dhcHBpbmcgMCBhbmQg
MSBhYm92ZSB3aWxsIGNhdXNlIGl0IHRvIHJldHVybiAxIHJhdGhlcgorLy8gdGhhbiAwLgorcDMg
PSBzZXR1cCgzKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWRpc2FibGVkLXZlcnRleC1hdHRy
aWItdXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLWRpc2FibGVkLXZlcnRleC1hdHRyaWItdXBkYXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2VmMTJmYjlhYTUwOGExMTNhMjI2OTIxMTg1YmIwZjkyMWZiNzMw
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtZGlzYWJsZWQtdmVydGV4LWF0dHJpYi11
cGRhdGUuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBEaXNhYmxlZCBWZXJ0ZXggQXR0cmliIFVw
ZGF0ZSBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0
eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0
cmlidXRlIGZsb2F0IGFfYWN0dWFsVmFsdWU7Cit1bmlmb3JtIGZsb2F0IHVfZXhwZWN0ZWRWYWx1
ZTsKK3ZhcnlpbmcgZmxvYXQgdl9yZXN1bHQ7Cit2b2lkIG1haW4oKSB7CisgIGdsX1Bvc2l0aW9u
ID0gYV9wb3NpdGlvbjsKKyAgdl9yZXN1bHQgPSBhX2FjdHVhbFZhbHVlID09IHVfZXhwZWN0ZWRW
YWx1ZSA/IDEuMCA6IDAuMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFy
eWluZyBmbG9hdCB2X3Jlc3VsdDsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gdl9y
ZXN1bHQgPiAwLjAgPyB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCkgOiB2ZWM0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKy8vIFRlc3RzIHRoYXQgcmVwZWF0
ZWRseSB1cGRhdGluZyBhIGRpc2FibGVkIHZlcnRleCBhdHRyaWJ1dGUgd29ya3MgYXMgZXhwZWN0
ZWQuCisvLyBUaGlzIGNvdmVycyBhbiBBTkdMRSBidWcgd2hlcmUgZGlydHkgYml0cyBmb3IgY3Vy
cmVudCB2YWx1ZXMgd2VyZSBpZ25vcmluZyByZXBlYXRlZCB1cGRhdGVzLgorLy8gQmFzZWQgb24g
QU5HTEUgdGVzdCAoVmVydGV4QXR0cmlidXRlVGVzdCwgRGlzYWJsZWRBdHRyaWJVcGRhdGVzKSBm
cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvYW5nbGUvYmxvYi9mN2YwYjhjM2FiMjFjNTJj
YzI5MTUwNDg5NTkzNjFjZjYyOGQ5NWYwL3NyYy90ZXN0cy9nbF90ZXN0cy9WZXJ0ZXhBdHRyaWJ1
dGVUZXN0LmNwcAorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVz
Y3JpcHRpb24oKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwor
Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVy
J10pOworZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKwordmFyIHBvc2l0aW9uTG9jYXRpb24gPSBn
bC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOwordmFyIGF0dHJpYkxv
YyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX2FjdHVhbFZhbHVlIik7CitnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvYywgMSwgZ2wuRkxPQVQsIGdsLkZBTFNFLCAwLCAw
KTsKKwordmFyIHVuaUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9leHBl
Y3RlZFZhbHVlIik7CisKK3ZhciBncmlkUmVzID0gMTsKK3d0dS5zZXR1cEluZGV4ZWRRdWFkKGds
LCBncmlkUmVzLCBwb3NpdGlvbkxvY2F0aW9uKTsKKwordmFyIHRlc3RWYWx1ZXMgPSBbMSwgMiwg
MywgNF07Citmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyArK2kpIHsKKyAg
dmFyIHRlc3RWYWx1ZSA9IHRlc3RWYWx1ZXNbaV07CisgIGdsLnVuaWZvcm0xZih1bmlMb2MsIHRl
c3RWYWx1ZSk7CisgIGdsLnZlcnRleEF0dHJpYjFmKGF0dHJpYkxvYywgdGVzdFZhbHVlKTsKKyAg
d3R1LmNsZWFyQW5kRHJhd0luZGV4ZWRRdWFkKGdsLCBncmlkUmVzKTsKKyAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK3d0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC1kaXNhYmxlZC12ZXJ0ZXgtYXR0cmliLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9h
dHRyaWJzL2dsLWRpc2FibGVkLXZlcnRleC1hdHRyaWIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGY4OTk3
NDQ5YzI0ZjNjMTQ1NWI2MTJiZDI2MTY1ZTE4NTkzN2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0
cmlicy9nbC1kaXNhYmxlZC12ZXJ0ZXgtYXR0cmliLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
RGlzYWJsZWQgVmVydGV4IEF0dHJpYiBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KKzwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzQgYV9jb2xvcjsKK3ZhcnlpbmcgdmVjNCB2X2Nv
bG9yOworYm9vbCBpc0NvcnJlY3RDb2xvcih2ZWM0IHYpIHsKKyAgcmV0dXJuIHYueCA9PSAwLjAg
JiYgdi55ID09IDAuMCAmJiB2LnogPT0gMC4wICYmIHYudyA9PSAxLjA7Cit9Cit2b2lkIG1haW4o
KSB7CisgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgdl9jb2xvciA9IGlzQ29ycmVjdENv
bG9yKGFfY29sb3IpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2X2NvbG9yOwordm9p
ZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yOworfQorPC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlw
dGlvbigpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK3Zh
ciBudW1WZXJ0ZXhBdHRyaWJzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklC
Uyk7Citmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtVmVydGV4QXR0cmliczsgKytpaSkgeworICB2
YXIgY29sb3JMb2NhdGlvbiA9IChpaSArIDEpICUgbnVtVmVydGV4QXR0cmliczsKKyAgdmFyIHBv
c2l0aW9uTG9jYXRpb24gPSBjb2xvckxvY2F0aW9uID8gMCA6IDE7CisKKyAgaWYgKHBvc2l0aW9u
TG9jYXRpb24gIT0gMCkgeworICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IDNkIGNvbnRl
eHQgZm9yIHRlc3RpbmcgYXR0cmliIDAKKyAgICAvLyBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGVmZmVj
dGVkIGF0dHJpYiAwIG9uIG90aGVyIHRlc3RzLgorICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgpOworICB9CisKKyAgZGVidWcoInRlc3RpbmcgYXR0cmliOiAiICsgY29sb3JMb2NhdGlvbik7
CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgIGdsLAorICAgICAgWyd2
c2hhZGVyJywgJ2ZzaGFkZXInXSwKKyAgICAgIFsnYV9wb3NpdGlvbicsICdhX2NvbG9yJ10sCisg
ICAgICBbcG9zaXRpb25Mb2NhdGlvbiwgY29sb3JMb2NhdGlvbl0pOworICB2YXIgZ3JpZFJlcyA9
IDE7CisgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlkUmVzLCBwb3NpdGlvbkxvY2F0aW9u
KTsKKyAgd3R1LmNsZWFyQW5kRHJhd0luZGV4ZWRRdWFkKGdsLCBncmlkUmVzKTsKKyAgd3R1LmNo
ZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMi
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtZW5hYmxlLXZlcnRleC1hdHRyaWIuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2F0dHJpYnMvZ2wtZW5hYmxlLXZlcnRleC1hdHRyaWIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzA5MzZh
YThhMTliMTcxMzU5OTI5ZGNmMDkzZGFlYTVmNmZmYTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0
cmlicy9nbC1lbmFibGUtdmVydGV4LWF0dHJpYi5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPldl
YkdMIEVuYWJsZSBWZXJ0ZXggQXR0cmliIFRlc3Q8L3RpdGxlPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPgor
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
KyAgICBhdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CisgICAgdm9pZCBtYWluKCkKKyAgICB7Cisg
ICAgICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIH0KKzwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICB2b2lkIG1h
aW4oKQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjAp
OworICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oInRlc3RzIHRoYXQgdHVybmluZyBvbiBhdHRyaWJzIHRoYXQgaGF2ZSBubyBidWZmZXIgYm91
bmQgZmFpbHMgdG8gZHJhdyIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQ
cm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiJdKTsKKwordmFy
IHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
bmV3IEZsb2F0MzJBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAwLjUsLTAuNSwwIF0pLCBn
bC5TVEFUSUNfRFJBVyk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2dsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworZ2wuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
Uik7CisKK2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMv
Z2wtbWF0cml4LWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtbWF0cml4LWF0dHJpYnV0ZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYzdhYjU2YjBmN2Q1ZWI1MzhiMGFiNWNjYzBlOTU1MDlhM2EzZWI4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC1tYXRyaXgtYXR0cmlidXRlcy5odG1sCkBA
IC0wLDAgKzEsMTM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzx0aXRsZT5XZWJHTCBNYXRyaXggQXR0cmlidXRlIENvbmZvcm1hbmNlIFRlc3Q8L3RpdGxl
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0i
OCIgc3R5bGU9IndpZHRoOiA4cHg7IGhlaWdodDogOHB4OyI+PC9jYW52YXM+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZW5zdXJlcyB0aGF0IG1hdHJp
eCBhdHRyaWJ1dGUgbG9jYXRpb25zIGRvIG5vdCBjbGFzaCB3aXRoIG90aGVyIHNoYWRlciBhdHRy
aWJ1dGVzLiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7CisKKy8vIE1ha2Ugc3VyZSB3ZSBoYXZl
IHJvb20gZm9yIGF0IGxlYXN0IGEgbWF0NC4KK3ZhciBtYXhBdHRyaWJ1dGVzID0gZ2wuZ2V0UGFy
YW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUyk7CitkZWJ1ZygnTUFYX1ZFUlRFWF9BVFRSSUJV
VEVTIGlzICcgKyBtYXhBdHRyaWJ1dGVzKTsKK3Nob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdt
YXhBdHRyaWJ1dGVzJywgJzQnKTsKKwordmFyIGdsRnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNo
YWRlcihnbCwgd3R1LnNpbXBsZUNvbG9yRnJhZ21lbnRTaGFkZXIsIGdsLkZSQUdNRU5UX1NIQURF
Uik7CisKKy8vIHByZXBhcmVNYXRyaXhQcm9ncmFtIGNyZWF0ZXMgYSBwcm9ncmFtIHdpdGggZ2xG
cmFnbWVudFNoYWRlciBhcyB0aGUgZnJhZ21lbnQgc2hhZGVyLgorLy8gVGhlIHZlcnRleCBzaGFk
ZXIgaGFzIG51bVZlY3RvciBudW1iZXIgb2YgdmVjdG9ycyBhbmQgYSBtYXRyaXggd2l0aCBudW1N
YXRyaXhEaW1lbnNpb25zCisvLyBkaW1lbnNpb25zIGF0IGxvY2F0aW9uIG51bU1hdHJpeFBvc2l0
aW9uIGluIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMuCisvLyBFbnN1cmVzIHRoYXQgZXZlcnkgdmVj
dG9yIGFuZCBtYXRyaXggaXMgdXNlZCBieSB0aGUgcHJvZ3JhbS4KKy8vIFJldHVybnMgYSB2YWxp
ZCBwcm9ncmFtIG9uIHN1Y2Nlc3NmdWxsIGxpbms7IG51bGwgb24gbGluayBmYWlsdXJlLgorZnVu
Y3Rpb24gcHJlcGFyZU1hdHJpeFByb2dyYW0obnVtVmVjdG9ycywgbnVtTWF0cml4RGltZW5zaW9u
cywgbnVtTWF0cml4UG9zaXRpb24pIHsKKyAgICAvLyBBZGQgdGhlIG1hdHJpeCBhbmQgdmVjdG9y
IGF0dHJpYnV0ZSBkZWNsYXJhdGlvbnMuIERlY2xhcmUgdGhlIHZlY3RvcnMKKyAgICAvLyB0byBo
YXZlIHRoZSBzYW1lIG51bWJlciBvZiBjb21wb25lbnRzIGFzIHRoZSBtYXRyaXggc28gd2UgY2Fu
IHBlcmZvcm0KKyAgICAvLyBvcGVyYXRpb25zIG9uIHRoZW0gd2hlbiB3ZSBhc3NpZ24gdG8gZ2xf
UG9zaXRpb24gbGF0ZXIgb24uCisgICAgdmFyIHN0clZlcnRleFNoYWRlciA9ICIiOworICAgIGZv
ciAodmFyIGlpID0gMTsgaWkgPD0gbnVtVmVjdG9yczsgKytpaSkgeworICAgICAgICBpZiAobnVt
TWF0cml4UG9zaXRpb24gPT09IGlpKSB7CisgICAgICAgICAgICBzdHJWZXJ0ZXhTaGFkZXIgKz0g
ImF0dHJpYnV0ZSBtYXQiICsgbnVtTWF0cml4RGltZW5zaW9ucyArICIgbWF0cml4O1xuIjsKKyAg
ICAgICAgfQorICAgICAgICBzdHJWZXJ0ZXhTaGFkZXIgKz0gImF0dHJpYnV0ZSB2ZWMiICsgbnVt
TWF0cml4RGltZW5zaW9ucyArICIgdmVjXyIgKyBpaSArICI7XG4iOworICAgIH0KKyAgICAvLyBu
dW1NYXRyaXhQb3NpdGlvbiB3aWxsIGJlIG9uZSBwYXN0IG51bVZlY3RvcnMgaWYgdGhlIGNhbGxl
ciB3YW50cyBpdCB0byBiZQorICAgIC8vIGxhc3QuIEhlbmNlLCB3ZSBuZWVkIHRoaXMgY2hlY2sg
b3V0c2lkZSB0aGUgbG9vcCBhcyB3ZWxsIGFzIGluc2lkZS4KKyAgICBpZiAobnVtTWF0cml4UG9z
aXRpb24gPT09IGlpKSB7CisgICAgICAgIHN0clZlcnRleFNoYWRlciArPSAiYXR0cmlidXRlIG1h
dCIgKyBudW1NYXRyaXhEaW1lbnNpb25zICsgIiBtYXRyaXg7XG4iOworICAgIH0KKyAgICAvLyBB
ZGQgdGhlIGJvZHkgb2YgdGhlIHNoYWRlci4gQWRkIHVwIGFsbCBvZiB0aGUgdmVjdG9ycyBhbmQg
bXVsdGlwbHkgYnkgdGhlIG1hdHJpeC4KKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBwZXJmb3Jt
IGRvIG5vdCBtYXR0ZXIuIFdlIGp1c3QgbmVlZCB0byBlbnN1cmUgdGhhdCBhbGwgdGhlIHZlY3Rv
ciBhbmQKKyAgICAvLyBtYXRyaXggYXR0cmlidXRlcyBhcmUgdXNlZC4KKyAgICBzdHJWZXJ0ZXhT
aGFkZXIgKz0gICJ2b2lkIG1haW4odm9pZCkgeyBcbmdsX1Bvc2l0aW9uID0gdmVjNCgoIjsKKyAg
ICBmb3IgKHZhciBpaSA9IDE7IGlpIDw9IG51bVZlY3RvcnM7ICsraWkpIHsKKyAgICAgICAgaWYg
KGlpID4gMSkgeworICAgICAgICAgICAgc3RyVmVydGV4U2hhZGVyICs9ICIrIgorICAgICAgICB9
CisgICAgICAgIHN0clZlcnRleFNoYWRlciArPSAidmVjXyIgKyBpaTsKKyAgICB9CisgICAgc3Ry
VmVydGV4U2hhZGVyICs9ICIpKm1hdHJpeCI7CisgICAgLy8gRW5zdXJlIHRoZSB2ZWM0IGhhcyB0
aGUgY29ycmVjdCBudW1iZXIgb2YgZGltZW5zaW9ucyBpbiBvcmRlciB0byBiZSBhc3NpZ25hYmxl
CisgICAgLy8gdG8gZ2xfUG9zaXRpb24uCisgICAgZm9yICh2YXIgaWkgPSBudW1NYXRyaXhEaW1l
bnNpb25zOyBpaSA8IDQ7ICsraWkpIHsKKyAgICAgICAgc3RyVmVydGV4U2hhZGVyICs9ICIsMC4w
IjsKKyAgICB9CisgICAgc3RyVmVydGV4U2hhZGVyICs9ICIpO31cbiI7CisgICAgLy8gTG9hZCB0
aGUgc2hhZGVyLCBhdHRhY2ggaXQgdG8gYSBwcm9ncmFtLCBhbmQgcmV0dXJuIHRoZSBsaW5rIHJl
c3VsdHMKKyAgICB2YXIgZ2xWZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgc3RyVmVy
dGV4U2hhZGVyLCBnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2YXIgc3RyVGVzdCA9ICdMb2FkIHNo
YWRlciB3aXRoICcgKyBudW1WZWN0b3JzICsgJyB2ZWN0b3JzIGFuZCAxIG1hdHJpeCc7CisgICAg
aWYgKGdsVmVydGV4U2hhZGVyICE9PSBudWxsKSB7CisgICAgICAgIHRlc3RQYXNzZWQoc3RyVGVz
dCk7CisKKyAgICAgICAgdmFyIGdsUHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAg
ICAgZ2wuYXR0YWNoU2hhZGVyKGdsUHJvZ3JhbSwgZ2xWZXJ0ZXhTaGFkZXIpOworICAgICAgICBn
bC5hdHRhY2hTaGFkZXIoZ2xQcm9ncmFtLCBnbEZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgZ2wu
bGlua1Byb2dyYW0oZ2xQcm9ncmFtKTsKKyAgICAgICAgaWYgKGdsLmdldFByb2dyYW1QYXJhbWV0
ZXIoZ2xQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykpIHsKKyAgICAgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnbGlua1Byb2dyYW0nKTsKKyAgICAgICAgICAgIHJl
dHVybiBnbFByb2dyYW07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKHN0clRlc3QpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK30KKworZGVidWcoJycpOwor
CisvLyBUZXN0IG1hdDIsIG1hdDMgYW5kIG1hdDQuCitmb3IgKHZhciBtbSA9IDI7IG1tIDw9IDQ7
ICsrbW0pIHsKKyAgICAvLyBBZGQgbWF4QXR0cmlidXRlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGJ5
IHNhdmluZyBlbm91Z2ggcm9vbSBpbiB0aGUgYXR0cmlidXRlCisgICAgLy8gbGlzdCBmb3IgYSBt
YXRyaXggb2YgbW0gZGltZW5zaW9ucy4gQWxsIG9mIHRoZSBvdGhlciBhdHRyaWJ1dGUgc2xvdHMg
d2lsbCBiZQorICAgIC8vIGZpbGxlZCB3aXRoIHZlY3RvcnMuCisgICAgdmFyIG51bVZlY3RvcnMg
PSBtYXhBdHRyaWJ1dGVzIC0gbW07CisgICAgZm9yICh2YXIgcHAgPSAxOyBwcCA8PSBudW1WZWN0
b3JzICsgMTsgKytwcCkgeworICAgICAgICBkZWJ1ZygnVGVzdCAnICsgbW0gKyAnIGRpbWVuc2lv
bmFsIG1hdHJpeCBhdCBwb3NpdGlvbiAnICsgcHApOworICAgICAgICB2YXIgZ2xQcm9ncmFtID0g
cHJlcGFyZU1hdHJpeFByb2dyYW0obnVtVmVjdG9ycywgLypudW1NYXRyaXhEaW1lbnNpb25zKi9t
bSwgLypudW1NYXRyaXhQb3NpdGlvbiovcHApOworICAgICAgICBzaG91bGRCZU5vbk51bGwoJ2ds
UHJvZ3JhbScpOworICAgICAgICB2YXIgYXR0cmliTWF0cml4ID0gZ2wuZ2V0QXR0cmliTG9jYXRp
b24oZ2xQcm9ncmFtLCAnbWF0cml4Jyk7CisgICAgICAgIGRlYnVnKCdNYXRyaXggaXMgYXQgYXR0
cmlidXRlIGxvY2F0aW9uICcgKyBhdHRyaWJNYXRyaXgpOworICAgICAgICBzaG91bGRCZVRydWUo
J2F0dHJpYk1hdHJpeCA+IC0xJyk7CisgICAgICAgIC8vIFBlciB0aGUgc3BlYywgd2hlbiBhbiBh
dHRyaWJ1dGUgaXMgYSBtYXRyaXggYXR0cmlidXRlLCBnZXRBdHRyaWJMb2NhdGlvbgorICAgICAg
ICAvLyByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29tcG9uZW50IG9mIHRoZSBtYXRy
aXguIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0CisgICAgICAgIC8vIGxlYXZlIHN1ZmZpY2llbnQg
cm9vbSBmb3IgYWxsIHRoZSBjb21wb25lbnRzLiBIZXJlIHdlIGVuc3VyZSBub25lIG9mIHRoZSB2
ZWN0b3JzCisgICAgICAgIC8vIGluIHRoZSBzaGFkZXIgYXJlIGFzc2lnbmVkIGF0dHJpYnV0ZSBs
b2NhdGlvbnMgdGhhdCBiZWxvbmcgdG8gdGhlIG1hdHJpeC4KKyAgICAgICAgZm9yICh2YXIgdnYg
PSAxOyB2diA8PSBudW1WZWN0b3JzOyArK3Z2KSB7CisgICAgICAgICAgICB2YXIgc3RyVmVjdG9y
ID0gJ3ZlY18nICsgdnYKKyAgICAgICAgICAgIHZhciBhdHRyaWJWZWN0b3IgPSBnbC5nZXRBdHRy
aWJMb2NhdGlvbihnbFByb2dyYW0sIHN0clZlY3Rvcik7CisgICAgICAgICAgICBkZWJ1ZyhzdHJW
ZWN0b3IgKyAnIGlzIGF0IGF0dHJpYnV0ZSBsb2NhdGlvbiAnICsgYXR0cmliVmVjdG9yKTsKKyAg
ICAgICAgICAgIC8vIEJlZ2luIHdpdGggdGhlIGZpcnN0IGF0dHJpYnV0ZSBsb2NhdGlvbiB3aGVy
ZSB0aGUgbWF0cml4IGJlZ2lucyBhbmQgZW5zdXJlCisgICAgICAgICAgICAvLyB0aGUgdmVjdG9y
J3MgYXR0cmlidXRlIGxvY2F0aW9uIGlzIG5vdCBhc3NpZ25lZCB0byB0aGUgbWF0cml4LiBMb29w
IHVudGlsCisgICAgICAgICAgICAvLyB3ZSd2ZSBjaGVja2VkIGFsbCBvZiB0aGUgYXR0cmlidXRl
IGxvY2F0aW9ucyB0aGF0IGJlbG9uZyB0byB0aGUgbWF0cml4LgorICAgICAgICAgICAgZm9yICh2
YXIgaWkgPSBhdHRyaWJNYXRyaXg7IGlpIDwgYXR0cmliTWF0cml4ICsgbW07ICsraWkpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdGVzdFN0ciA9IHN0clZlY3RvciArICcgYXR0cmlidXRlIGxvY2F0
aW9uOiAnICsgYXR0cmliVmVjdG9yICsgJy4gIFNob3VsZCBub3QgYmUgJyArIGlpOworICAgICAg
ICAgICAgICAgIGlmIChhdHRyaWJWZWN0b3IgIT09IGlpKSB7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQodGVzdFN0cik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0U3RyKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGVidWcoJycpOworICAgIH0KKyAgICBkZWJ1
ZygnJyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi1jb250ZXh0LXN3
aXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLWNvbnRleHQtc3dpdGNoLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWRiMWM5YTMyMTcyYzg1YzFjOTU4ZWI4NTI1NTA3ZjViZGI5NjExNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi1jb250ZXh0LXN3aXRjaC5o
dG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPldlYkdMIFZlcnRleCBBdHRyaWIgQ29udGV4dCBTd2l0
Y2ggVGVzdDwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
Im9uZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KKzwvY2FudmFzPgorPGNhbnZhcyBpZD0idHdv
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPgorPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigidGVzdHMgdGhhdCB2ZXJ0ZXggYXR0cmliIHZhbHVlIGlzIHByZXNl
cnZlZCBhY3Jvc3MgY29udGV4dCBzd2l0Y2hlcyIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIHBvc2l0aW9uTG9jYXRpb24gPSAwOwordmFyIGNvbG9yTG9jYXRpb24gPSAxOwordmFy
IGdyaWRSZXMgPSAxOworCit2YXIgY2FudmFzMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
bmUiKTsKK3ZhciBnbDEgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhczEpOwordmFyIHByb2dy
YW0xID0gd3R1LnNldHVwU2ltcGxlVmVydGV4Q29sb3JQcm9ncmFtKGdsMSwgcG9zaXRpb25Mb2Nh
dGlvbiwgY29sb3JMb2NhdGlvbik7CitnbDEudmVydGV4QXR0cmliNGYoY29sb3JMb2NhdGlvbiwg
MC4wLCAxLjAsIDAuMCwgMS4wKTsKK3d0dS5zZXR1cEluZGV4ZWRRdWFkKGdsMSwgZ3JpZFJlcywg
cG9zaXRpb25Mb2NhdGlvbik7Cit3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wxLCBncmlk
UmVzKTsKK3d0dS5jaGVja0NhbnZhcyhnbDEsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUg
Z3JlZW4gMSIpOworCit2YXIgY2FudmFzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0d28i
KTsKK3ZhciBnbDIgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhczIpOwordmFyIHByb2dyYW0y
ID0gd3R1LnNldHVwU2ltcGxlVmVydGV4Q29sb3JQcm9ncmFtKGdsMiwgcG9zaXRpb25Mb2NhdGlv
biwgY29sb3JMb2NhdGlvbik7Cit3dHUuc2V0dXBJbmRleGVkUXVhZChnbDIsIGdyaWRSZXMsIHBv
c2l0aW9uTG9jYXRpb24pOword3R1LmNsZWFyQW5kRHJhd0luZGV4ZWRRdWFkKGdsMiwgZ3JpZFJl
cyk7Cit3dHUuY2hlY2tDYW52YXMoZ2wyLCBbMCwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSBibGFj
ayAxIik7CisKK3d0dS5jaGVja0NhbnZhcyhnbDEsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQg
YmUgZ3JlZW4gMiIpOworCit3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wyLCBncmlkUmVz
KTsKK3d0dS5jaGVja0NhbnZhcyhnbDIsIFswLCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIGJsYWNr
IDIiKTsKKword3R1LmNsZWFyQW5kRHJhd0luZGV4ZWRRdWFkKGdsMSwgZ3JpZFJlcyk7Cit3dHUu
Y2hlY2tDYW52YXMoZ2wxLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIDMiKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi1yZW5kZXIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0
dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi1yZW5kZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTBlYmZlNjg4
NmI2M2EyMDUzM2UwMDRjNTk0OTFhMGE3N2E5YzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0cmli
cy9nbC12ZXJ0ZXgtYXR0cmliLXJlbmRlci5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSd2c2hhZGVy
JyB0eXBlPSd4LXNoYWRlcic+CithdHRyaWJ1dGUgdmVjNCBhOworYXR0cmlidXRlIHZlYzIgcDsK
K3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHAueCArIGEueCArIGEueSArIGEu
eiArIGEudywgcC55LCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFk
ZXInIHR5cGU9J3gtc2hhZGVyJz4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWlu
KCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBjaGVja1JlZFBvcnRpb24o
Z2wsIHcsIGxvdywgaGlnaCkgeworICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodyAqIHcgKiA0
KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCB3LCB3LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBidWYpOworICB2YXIgaSA9IDA7CisgIGZvciAoOyBpIDwgdzsgKytpKSB7CisgICAgaWYgKGJ1
ZltpICogNCArIDBdID09IDI1NSAmJiBidWZbaSAqIDQgKyAxXSA9PSAwICYmIGJ1ZltpICogNCAr
IDJdID09IDAgJiYgYnVmW2kgKiA0ICsgM10gPT0gMjU1KSB7CisgICAgICBicmVhazsKKyAgICB9
CisgIH0KKyAgcmV0dXJuIGxvdyA8PSBpICYmIGkgPD0gaGlnaDsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCd0ZXN0YmVkJywgeyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiB0cnVlIH0p
OworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgnY291bGQgbm90IGNyZWF0ZSBjb250ZXh0
Jyk7CisgICAgcmV0dXJuOworICB9CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydwJywgJ2EnXSkKKworICBnbC5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShnbC5wKTsKKyAgdmFyIHBvcyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBw
b3MudHlwZSA9IGdsLkZMT0FUOworICBwb3Muc2l6ZSA9IDI7CisgIHBvcy5udW0gPSA0OworICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5B
UlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWy0xLCAtMSwgMSwgLTEsIC0xLCAxLCAxLCAx
XSksIGdsLlNUQVRJQ19EUkFXKTsKKworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIHBvcy5z
aXplLCBwb3MudHlwZSwgZmFsc2UsIDAsIDApOworCisgIGRlYnVnKCdUZXN0IHZlcnRleEF0dHJp
YlsxLi40XWZ2IGJ5IHNldHRpbmcgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyB0aGF0IGFkZCB1cCB0
byAxLjUgYW5kIHVzZSB0aGF0IHdoZW4gcmVuZGVyaW5nLicpOworICB2YXIgdmFscyA9IFtbMC41
XSwgWzAuMSwwLjRdLCBbMC4yLC0wLjIsMC41XSwgWy0xLjAsMC4zLDAuMiwyLjBdXTsKKworICBm
b3IgKHZhciBqID0gMDsgaiA8IDQ7ICsraikgeworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBnbFsndmVydGV4QXR0cmliJyArIChq
KzEpICsgJ2Z2J10oMSwgdmFsc1tqXSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9T
VFJJUCwgMCwgcG9zLm51bSk7CisKKyAgICBpZiAoY2hlY2tSZWRQb3J0aW9uKGdsLCA1MCwgNTAg
KiAwLjcsIDUwICogMC44KSkgeworICAgICAgdGVzdFBhc3NlZCgnQXR0cmlidXRlIG9mIHNpemUg
JyArIChqKzEpICsgJyB3YXMgc2V0IGNvcnJlY3RseScpOworICAgIH0gZWxzZSB7CisgICAgICB0
ZXN0RmFpbGVkKCdBdHRyaWJ1dGUgb2Ygc2l6ZSAnICsgKGorMSkgKyAnIHdhcyBub3Qgc2V0IGNv
cnJlY3RseScpOworICAgIH0KKyAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9InRlc3RiZWQiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IHRoYXQgdXNpbmcgY29uc3Rh
bnQgYXR0cmlidXRlcyB3b3Jrcy4nKTsKK3J1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wt
dmVydGV4LWF0dHJpYi11bmNvbnN1bWVkLW91dC1vZi1ib3VuZHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wt
dmVydGV4LWF0dHJpYi11bmNvbnN1bWVkLW91dC1vZi1ib3VuZHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NzA0ZGQ2NDNiMzFhZGVmM2UxNTdjOTc0ZmViZGQ0YjU3OTYxOWFkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvYXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLXVuY29uc3VtZWQtb3V0LW9mLWJvdW5kcy5odG1s
CkBAIC0wLDAgKzEsMTkxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmNvbnN1bWVkIFZlcnRleCBBdHRyaWJ1dGVzIE91dCBv
ZiBCb3VuZHMgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+Cis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAgIHZvaWQgbWFpbigpIHsgfQorPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXJfYXR0cmliIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRl
eCI+CisgICAgYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworICAgIHZvaWQgbWFpbigpIHsKKyAg
ICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIHZvaWQgbWFp
bigpIHsKKyAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSk7CisgICAgfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHVuY29uc3Vt
ZWQgdmVydGV4IGF0dHJpYnV0ZXMgYXJlIG5vdCByZWFkIG91dCBvZiBib3VuZHMiKTsKKy8vIFRl
c3RzIGZvciBodHRwOi8vY3JidWcuY29tLzc1NjI5MyAoZHJpdmVyIGNyYXNoIG9uIG1hY09TKQor
Ly8gYW5kIGEgY2xhc3Mgb2Ygc2ltaWxhciBidWdzIHRoYXQgY291bGQgZXhpc3Qgb24gb3RoZXIg
c3lzdGVtcy4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNvbnRleHRWZXJzaW9u
ID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgZ19wcm9ncmFtOwordmFyIGdfYXR0cmliTG9jYXRp
b247CisKK3ZhciBudW1BdHRyaWJzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRU
UklCUyk7Cit2YXIgYWxsb2NhdGVkQnVmZmVyOwordmFyIGluZGV4QnVmZmVyOworCitmdW5jdGlv
biBzZXR1cEJ1ZmZlcnMobnVtVmVydHMpIHsKKyAgdmFyIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJB
cnJheShudW1WZXJ0cyAqIDMpOworICBhbGxvY2F0ZWRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGFsbG9jYXRlZEJ1ZmZlcik7Cisg
IGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcp
OworCisgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KG51bVZlcnRzKTsKKyAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IG51bVZlcnRzOyArK2lpKSB7CisgICAgaW5kaWNlc1tpaV0gPSBpaTsK
KyAgfQorCisgIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZm
ZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0
YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOworfQor
Cit2YXIgcHJvZ05vQXR0cmlicyA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdm
c2hhZGVyJ10sIFtdLCBbXSk7Cit2YXIgcHJvZ0F0dHJpYjEgPSB3dHUuc2V0dXBQcm9ncmFtKGds
LCBbJ3ZzaGFkZXJfYXR0cmliJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRpb24nXSwgWzFdKTsKK3Zh
ciBwcm9nQXR0cmliMiA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcl9hdHRyaWInLCAn
ZnNoYWRlciddLCBbJ3ZQb3NpdGlvbiddLCBbMl0pOworc2V0dXBCdWZmZXJzKDYwMDAwKTsKKwor
dmFyIHVuYWxsb2NhdGVkQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cit2YXIgdGVzdHMgPSBb
XTsKKworZGVidWcoIiIpOworZGVidWcoIjx1PlRlc3RzIHdpdGggb25lIHVuY29uc3VtZWQgYXR0
cmlidXRlPHU+Iik7CisKK3Rlc3RzLnB1c2goeworICBuYW1lOiAiZHJhd0FycmF5cyIsCisgIGVy
cm9yczogZ2wuTk9fRVJST1IsCisgIGRyYXc6IGZ1bmN0aW9uKCkgeyBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgMyk7IH0KK30pOwordGVzdHMucHVzaCh7CisgIG5hbWU6ICJkcmF3RWxl
bWVudHMiLAorICBlcnJvcnM6IGdsLk5PX0VSUk9SLAorICBkcmF3OiBmdW5jdGlvbigpIHsgZ2wu
ZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNjAwMDAsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsg
fQorfSk7CisKK2lmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgIHRlc3RzLnB1c2goeworICAg
IG5hbWU6ICJkcmF3QXJyYXlzSW5zdGFuY2VkIiwKKyAgICBlcnJvcnM6IGdsLk5PX0VSUk9SLAor
ICAgIGRyYXc6IGZ1bmN0aW9uKCkgeyBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xF
UywgMCwgMywgMSk7IH0KKyAgfSk7CisgIHRlc3RzLnB1c2goeworICAgIG5hbWU6ICJkcmF3RWxl
bWVudHNJbnN0YW5jZWQiLAorICAgIGVycm9yczogZ2wuTk9fRVJST1IsCisgICAgZHJhdzogZnVu
Y3Rpb24oKSB7IGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDYwMDAwLCBn
bC5VTlNJR05FRF9TSE9SVCwgMCwgMSk7IH0KKyAgfSk7CisgIHRlc3RzLnB1c2goeworICAgIG5h
bWU6ICJkcmF3UmFuZ2VFbGVtZW50cyIsCisgICAgZXJyb3JzOiBnbC5OT19FUlJPUiwKKyAgICBk
cmF3OiBmdW5jdGlvbigpIHsgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCA2
MDAwMCwgNjAwMDAsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCAxKTsgfQorICB9KTsKK30KKworLy8g
UnVuIHRlc3RzCisKKy8vIEJvdW5kIGZvcmV2ZXIKK2dsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKworZm9yICh2YXIgYXR0cmliID0gMDsgYXR0cmli
IDwgbnVtQXR0cmliczsgKythdHRyaWIpIHsKKyAgZGVidWcoIkF0dHJpYiAiICsgYXR0cmliICsg
IiB1bmNvbnN1bWVkIik7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kp
IHsKKyAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ05vQXR0
cmlicyk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShhdHRyaWIpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB1bmFsbG9jYXRlZEJ1ZmZlcik7CisgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWIsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisK
KyAgICB0ZXN0LmRyYXcoKTsKKworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShhdHRy
aWIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIHRlc3QuZXJyb3JzLCB0ZXN0Lm5hbWUp
OworICB9Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCI8dT5UZXN0cyB3aXRoIG9uZSBjb25zdW1l
ZCBhdHRyaWJ1dGUgYW5kIG9uZSB1bmNvbnN1bWVkIGF0dHJpYnV0ZTx1PiIpOworCit2YXIgZXh0
ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CitpZiAoIWV4dCkg
eworICBkZWJ1ZygiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyBub3QgYXZhaWxhYmxlIC0gc2tpcHBl
ZCIpOworfSBlbHNlIHsKKyAgdGVzdHMucHVzaCh7CisgICAgbmFtZTogImRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSIsCisgICAgZXJyb3JzOiBnbC5OT19FUlJPUiwKKyAgICBkcmF3OiBmdW5jdGlv
bigpIHsKKyAgICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAw
LCAzLCAxKTsKKyAgICB9CisgIH0pOworICB0ZXN0cy5wdXNoKHsKKyAgICBuYW1lOiAiZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUiLAorICAgIGVycm9yczogZ2wuTk9fRVJST1IsCisgICAgZHJh
dzogZnVuY3Rpb24oKSB7CisgICAgICBleHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoZ2wu
VFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgMSk7CisgICAgfQorICB9KTsKK30K
KworLy8gTm90ZSB0aGVzZSBkb24ndCB0cmlnZ2VyIHRoZSBtYWNPUyBkcml2ZXIgY3Jhc2ggKGh0
dHA6Ly9jcmJ1Zy5jb20vNzU2MjkzKQorLy8gYnV0IHRoZXkgc3RpbGwgYWRkIHBvdGVudGlhbGx5
IHVzZWZ1bCBjb3ZlcmFnZS4KK2ZvciAodmFyIGF0dHJpYiA9IDA7IGF0dHJpYiA8IG51bUF0dHJp
YnM7ICsrYXR0cmliKSB7CisgIHZhciBjb25zdW1lZEF0dHJpYiA9IGF0dHJpYiA9PSAxID8gMiA6
IDE7CisgIHZhciBwcm9nID0gY29uc3VtZWRBdHRyaWIgPT0gMSA/IHByb2dBdHRyaWIxIDogcHJv
Z0F0dHJpYjI7CisgIGRlYnVnKCJBdHRyaWIgIiArIGF0dHJpYiArCisgICAgICAiIHVuY29uc3Vt
ZWQgKGF0dHJpYiAiICsgY29uc3VtZWRBdHRyaWIgKyAiIGNvbnN1bWVkKSIpOworCisgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3Rz
W2ldOworICAgIGdsLnVzZVByb2dyYW0ocHJvZyk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShhdHRyaWIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB1bmFs
bG9jYXRlZEJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWIsIDMsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBOZWVkZWQgYmVjYXVzZSBBTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBjb25zdW1lZAorICAgIC8vIGF0dHJp
YnV0ZSB0byBoYXZlIGRpdmlzb3I9MCAod2hpY2ggaXMgdGhlIGRlZmF1bHQsIHNvIHdlIGRvbid0
IG5lZWQgdG8KKyAgICAvLyBjYWxsIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSBoZXJlKS4KKyAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb25zdW1lZEF0dHJpYik7CisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGFsbG9jYXRlZEJ1ZmZlcik7CisgICAgZ2wudmVydGV4
QXR0cmliUG9pbnRlcihjb25zdW1lZEF0dHJpYiwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsK
KworICAgIHRlc3QuZHJhdygpOworCisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0
dHJpYik7CisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbnN1bWVkQXR0cmliKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCB0ZXN0LmVycm9ycywgdGVzdC5uYW1lKTsKKyAg
fQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWRlOTQzOTkxMThjYTVlZjdiYjFhMmUyNGI2NDAyYTUwMDdlMTIyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5odG1sCkBAIC0wLDAg
KzEsMTMxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBFbmFibGUgVmVydGV4IEF0dHJpYiBaZXJvIFRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
PgorPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KKyAgICBhdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CisgICAgdm9pZCBtYWluKCkKKyAgICB7
CisgICAgICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIH0KKzwvc2NyaXB0PgorCis8
c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICB2b2lk
IG1haW4oKQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsMS4wLDAuMCwx
LjApOworICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRlc3Qgc29tZSBvZiB0aGUgaXNzdWVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
YXR0cmliIDAgb24gT3BlbkdMIHZzIFdlYkdMIik7CitkZWJ1ZygiIik7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2
YXIgZ19wcm9ncmFtOwordmFyIGdfYXR0cmliTG9jYXRpb247CitmdW5jdGlvbiBzZXR1cChhdHRy
aWJJbmRleCkgeworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgICBnbCwg
Wyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRpb24nXSwgW2F0dHJpYkluZGV4XSk7Cisg
IGdfcHJvZ3JhbSA9IHByb2dyYW07CisgIGdfYXR0cmliTG9jYXRpb24gPSBhdHRyaWJJbmRleDsK
KyAgc2hvdWxkQmUoImdfYXR0cmliTG9jYXRpb24iLCAiZ2wuZ2V0QXR0cmliTG9jYXRpb24oZ19w
cm9ncmFtLCAndlBvc2l0aW9uJykiKTsKKyAgcmV0dXJuIHByb2dyYW07Cit9CisKK2Z1bmN0aW9u
IHNldHVwVmVydHMobnVtVmVydHMpIHsKKyAgdmFyIHZlcnRzID0gWworICAgICAxLjAsICAxLjAs
IDAuMCwKKyAgICAtMS4wLCAgMS4wLCAwLjAsCisgICAgLTEuMCwgLTEuMCwgMC4wLAorICAgICAx
LjAsICAxLjAsIDAuMCwKKyAgICAtMS4wLCAtMS4wLCAwLjAsCisgICAgIDEuMCwgLTEuMCwgMC4w
CisgIF07CisgIHZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KG51bVZlcnRzICogMyk7
CisgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KG51bVZlcnRzKTsKKyAgZm9yICh2YXIg
aWkgPSAwOyBpaSA8IG51bVZlcnRzOyArK2lpKSB7CisgICAgdmFyIG5keCA9IGlpICUgNjsKKyAg
ICB2YXIgZHN0ID0gaWkgKiAzOworICAgIHZhciBzcmMgPSBuZHggKiAzOworICAgIGZvciAodmFy
IGpqID0gMDsgamogPCAzOyArK2pqKSB7CisgICAgICBwb3NpdGlvbnNbZHN0ICsgampdID0gdmVy
dHNbc3JjICsgampdOworICAgIH0KKyAgICBpbmRpY2VzW2lpXSA9IGlpOworICB9CisgIHZhciB2
ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBwb3NpdGlvbnMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgdmFyIGluZGV4QnVmZmVyID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGlu
ZGV4QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5k
aWNlcywgZ2wuU1RBVElDX0RSQVcpOworfQorCit2YXIgcDAgPSBzZXR1cCgwKTsKK3ZhciBwMyA9
IHNldHVwKDMpOworc2V0dXBWZXJ0cyg2MDAwMCk7CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCA1
OyArK2lpKSB7CisgIC8vIHRlc3QgZHJhd2luZyB3aXRoIGF0dHJpYiAwCisgIGdsLnVzZVByb2dy
YW0ocDApOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKKyAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNjAwMDAs
IGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZSgKKyAgICAgIGds
LCBnbC5OT19FUlJPUiwKKyAgICAgICJkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggNiB2ZXJ0
cyIpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJjYW52YXMgc2hv
dWxkIGJlIGdyZWVuIik7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAv
LyB0ZXN0IGRyYXdpbmcgd2l0aG91dCBhdHRyaWIgMAorICBnbC51c2VQcm9ncmFtKHAzKTsKKyAg
Z2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMyk7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MywgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2MDAwMCk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiZHJhd2luZyB1
c2luZyBhdHRyaWIgMyB3aXRoIDYwMDAwIHZlcnRzIik7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwg
WzAsIDI1NSwgMCwgMjU1XSwgImNhbnZhcyBzaG91bGQgYmUgZ3JlZW4iKTsKKyAgZ2wuZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDMpOworCisgIC8vIFRoaXMgc2Vjb25kIHRlc3Qgb2YgZHJhd2lu
ZyB3aXRob3V0IGF0dHJpYjAgdW5jb3ZlcmVkIGEgYnVnIGluIGNocm9tZQorICAvLyB3aGVyZSBh
ZnRlciB0aGUgZHJhdyB3aXRob3V0IGF0dHJpYjAgdGhlIGF0dHJpYiAwIGVtdWxhdGlvbiBjb2Rl
IGRpc2FibGVkCisgIC8vIGF0dHJpYiAwIGFuZCBpdCB3YXMgbmV2ZXIgcmUtZW5hYmxlZCBzbyB0
aGlzIG5leHQgZHJhdyBmYWlsZWQuCisgIGdsLnVzZVByb2dyYW0ocDMpOworICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSgzKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cisg
IGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYwMDAwLCBnbC5VTlNJR05FRF9TSE9SVCwg
MCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsCisgICAg
ICAiZHJhd2luZyB1c2luZyBhdHRyaWIgMyB3aXRoIDYwMDAwIHZlcnRzIik7CisgIHd0dS5jaGVj
a0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgImNhbnZhcyBzaG91bGQgYmUgZ3JlZW4iKTsK
KyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDMpOworfQorCisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9h
dHRyaWJzL2dsLXZlcnRleC1hdHRyaWIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFhNjljNWU3YmM0YmQ4Njc4ZmY5NzBlMTdkNTE1Mzg0NDQ1ZTYwNmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLXZlcnRleC1hdHRyaWIuaHRtbApAQCAtMCww
ICsxLDI4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCB2ZXJ0ZXhBdHRyaWIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9j
YW52YXM+CisKKzxzY3JpcHQ+Cit2YXIgY29udGV4dFZlcnNpb24gPSAxOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvZ2wtdmVydGV4LWF0dHJpYi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJwb2ludGVy
LW9mZnNldHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmlicG9pbnRlci1vZmZzZXRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2NiOGJkODRhNjU2OTI3NTQ5OWQzZTQzYjNlZWZlZmZmY2MzNTcwYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmlicG9pbnRlci1vZmZzZXRz
Lmh0bWwKQEAgLTAsMCArMSwxOTAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPnZlcnRleGF0dHJpYnBvaW50ZXIgb2Zmc2V0cyB0
ZXN0PC90aXRsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KK1RoZXJlIGlzIHN1cHBvc2VkIHRvIGJlIGFu
IGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQncyBub3QgaW1wb3J0YW50LgorPC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICA8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisgICAg
ICAgIGF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5p
Zm9ybSB2ZWM0IGNvbG9yOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorCisg
ICAgPHNjcmlwdD4KKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICBmdW5jdGlvbiBpbml0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oInRlc3QgdmVydGV4YXR0cmli
cG9pbnRlciBvZmZzZXRzIHdvcmsiKTsKKworICAgICAgICAgICAgdmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOworICAgICAgICAgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBs
ZSIpOworICAgICAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZz
aGFkZXIiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiJdKTsKKworICAgICAgICAgICAgdmFyIHRl
c3RzID0gWworICAgICAgICAgICAgICB7IGRhdGE6IG5ldyBGbG9hdDMyQXJyYXkoWyAwLCAxLCAw
LCAxLCAwLCAwLCAwLCAwLCAwIF0pLAorICAgICAgICAgICAgICAgIHR5cGU6IGdsLkZMT0FULAor
ICAgICAgICAgICAgICAgIGNvbXBvbmVudFNpemU6IDQsCisgICAgICAgICAgICAgICAgbm9ybWFs
aXplOiBmYWxzZSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgeyBkYXRhOiBuZXcg
VWludDE2QXJyYXkoWyAwLCAzMjc2NywgMCwgMzI3NjcsIDAsIDAsIDAsIDAsIDBdKSwKKyAgICAg
ICAgICAgICAgICB0eXBlOiBnbC5TSE9SVCwKKyAgICAgICAgICAgICAgICBjb21wb25lbnRTaXpl
OiAyLAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgeyBkYXRhOiBuZXcgVWludDE2QXJyYXkoWyAwLCA2NTUzNSwgMCwgNjU1
MzUsIDAsIDAsIDAsIDAsIDAgXSksCisgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURf
U0hPUlQsCisgICAgICAgICAgICAgICAgY29tcG9uZW50U2l6ZTogMiwKKyAgICAgICAgICAgICAg
ICBub3JtYWxpemU6IHRydWUsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHsgZGF0
YTogbmV3IFVpbnQxNkFycmF5KFsgMCwgMSwgMCwgMSwgMCwgMCwgMCwgMCwgMCBdKSwKKyAgICAg
ICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVCwKKyAgICAgICAgICAgICAgICBjb21w
b25lbnRTaXplOiAyLAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZTogZmFsc2UsCisgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgIHsgZGF0YTogbmV3IFVpbnQxNkFycmF5KFsgMCwgMSwg
MCwgMSwgMCwgMCwgMCwgMCwgMCBdKSwKKyAgICAgICAgICAgICAgICB0eXBlOiBnbC5TSE9SVCwK
KyAgICAgICAgICAgICAgICBjb21wb25lbnRTaXplOiAyLAorICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZTogZmFsc2UsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHsgZGF0YTogbmV3
IFVpbnQ4QXJyYXkoWyAwLCAxMjcsIDAsIDEyNywgMCwgMCwgMCwgMCwgMCBdKSwKKyAgICAgICAg
ICAgICAgICB0eXBlOiBnbC5CWVRFLAorICAgICAgICAgICAgICAgIGNvbXBvbmVudFNpemU6IDEs
CisgICAgICAgICAgICAgICAgbm9ybWFsaXplOiB0cnVlLAorICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICB7IGRhdGE6IG5ldyBVaW50OEFycmF5KFsgMCwgMjU1LCAwLCAyNTUsIDAsIDAs
IDAsIDAsIDAgXSksCisgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAg
ICAgICAgICAgICAgICBjb21wb25lbnRTaXplOiAxLAorICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgeyBkYXRhOiBuZXcgVWlu
dDhBcnJheShbIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDAgXSksCisgICAgICAgICAgICAgICAg
dHlwZTogZ2wuQllURSwKKyAgICAgICAgICAgICAgICBjb21wb25lbnRTaXplOiAxLAorICAgICAg
ICAgICAgICAgIG5vcm1hbGl6ZTogZmFsc2UsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgIHsgZGF0YTogbmV3IFVpbnQ4QXJyYXkoWyAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAwIF0p
LAorICAgICAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAg
ICAgY29tcG9uZW50U2l6ZTogMSwKKyAgICAgICAgICAgICAgICBub3JtYWxpemU6IGZhbHNlLAor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBpZiAod3R1Lmdl
dERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCkgPj0gMikgeworICAgICAgICAgICAgICB0ZXN0cy5w
dXNoKC4uLlsKKyAgICAgICAgICAgICAgICAgIHsgZGF0YTogbmV3IEludDMyQXJyYXkoWyAwLCAx
LCAwLCAxLCAwLCAwLCAwLCAwLCAwXSksCisgICAgICAgICAgICAgICAgICAgIHR5cGU6IGdsLklO
VCwKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U2l6ZTogNCwKKyAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsaXplOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICB7IGRhdGE6IG5ldyBJbnQzMkFycmF5KFsgMCwgMjE0NzQ4MzY0NywgMCwgMjE0NzQ4
MzY0NywgMCwgMCwgMCwgMCwgMF0pLAorICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5JTlQs
CisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFNpemU6IDQsCisgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICB7IGRhdGE6IG5ldyBVaW50MzJBcnJheShbIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDBd
KSwKKyAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5ULAorICAgICAgICAg
ICAgICAgICAgICBjb21wb25lbnRTaXplOiA0LAorICAgICAgICAgICAgICAgICAgICBub3JtYWxp
emU6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGF0
YTogbmV3IFVpbnQzMkFycmF5KFsgMCwgNDI5NDk2NzI5NSwgMCwgNDI5NDk2NzI5NSwgMCwgMCwg
MCwgMCwgMF0pLAorICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9JTlQsCisg
ICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFNpemU6IDQsCisgICAgICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICB7IGRhdGE6IG5ldyBVaW50MTZBcnJheShbIDAsIDBiMTExMTAwMDAwMDAwMDAsIDAsIDBiMTEx
MTAwMDAwMDAwMDAsIDAsIDAsIDAsIDAsIDBdKSwKKyAgICAgICAgICAgICAgICAgICAgdHlwZTog
Z2wuSEFMRl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U2l6ZTogMiwKKyAg
ICAgICAgICAgICAgICAgICAgbm9ybWFsaXplOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICB7IGRhdGE6IG5ldyBVaW50MTZBcnJheShbIDAsIDBiMTExMTAw
MDAwMDAwMDAsIDAsIDBiMTExMTAwMDAwMDAwMDAsIDAsIDAsIDAsIDAsIDBdKSwKKyAgICAgICAg
ICAgICAgICAgICAgdHlwZTogZ2wuSEFMRl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgY29t
cG9uZW50U2l6ZTogMiwKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplOiBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAg
ICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAg
ICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTAyNCwgZ2wuU1RBVElDX0RS
QVcpOworICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisKKyAgICAg
ICAgICAgIHZhciBjb2xvckxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY29s
b3IiKTsKKyAgICAgICAgICAgIHZhciBrTnVtVmVydHMgPSAzOworICAgICAgICAgICAgdmFyIGtO
dW1Db21wb25lbnRzID0gMzsKKworICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAgICAg
ICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0ZXN0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAg
ICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0dF07CisgICAgICAgICAgICAgIGZvciAodmFyIG9vID0g
MDsgb28gPCAzOyArK29vKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgc3MgPSAwOyBzcyA8
IDM7ICsrc3MpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAob28gKyAxKSAqIHRl
c3QuY29tcG9uZW50U2l6ZTsKKyAgICAgICAgICAgICAgICAgIHZhciBjb2xvciA9IChjb3VudCAl
IDIpID8gWzEsIDAsIDAsIDFdIDogWzAsIDEsIDAsIDFdOworICAgICAgICAgICAgICAgICAgdmFy
IHN0cmlkZSA9IHRlc3QuY29tcG9uZW50U2l6ZSAqIGtOdW1Db21wb25lbnRzICsgdGVzdC5jb21w
b25lbnRTaXplICogc3M7CisgICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiY2hlY2sgd2l0aCAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0ZXN0
LnR5cGUpICsgIiBhdCBvZmZzZXQ6ICIgKyBvZmZzZXQgKyAiIHdpdGggc3RyaWRlOiIgKyBzdHJp
ZGUgKyAiIG5vcm1hbGl6ZTogIiArIHRlc3Qubm9ybWFsaXplKTsKKyAgICAgICAgICAgICAgICAg
IGdsLnVuaWZvcm00ZnYoY29sb3JMb2MsIGNvbG9yKTsKKyAgICAgICAgICAgICAgICAgIHZhciBk
YXRhID0gbmV3IFVpbnQ4QXJyYXkodGVzdC5jb21wb25lbnRTaXplICoga051bVZlcnRzICoga051
bUNvbXBvbmVudHMgKyBzdHJpZGUgKiAoa051bVZlcnRzIC0gMSkpOworICAgICAgICAgICAgICAg
ICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheSh0ZXN0LmRhdGEuYnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICAgIHZhciBzaXplID0gdGVzdC5jb21wb25lbnRTaXplICoga051bUNvbXBvbmVudHM7
CisgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwga051bVZlcnRzOyArK2pq
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBvZmYxID0gamogKiBzaXplOworICAgICAgICAg
ICAgICAgICAgICB2YXIgb2ZmMiA9IGpqICogc3RyaWRlOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciB6eiA9IDA7IHp6IDwgc2l6ZTsgKyt6eikgeworICAgICAgICAgICAgICAgICAgICAg
IGRhdGFbb2ZmMiArIHp6XSA9IHZpZXdbb2ZmMSArIHp6XTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZ2wuYnVmZmVyU3ViRGF0
YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldCwgZGF0YSk7CisgICAgICAgICAgICAgICAgICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIHRlc3QudHlwZSwgdGVzdC5ub3JtYWxpemUsIHN0cmlk
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgICAgICAgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKworICAgICAgICAgICAgICAgICAgdmFyIGJ1ZiA9IG5l
dyBVaW50OEFycmF5KDUwICogNTAgKiA0KTsKKyAgICAgICAgICAgICAgICAgIGdsLnJlYWRQaXhl
bHMoMCwgMCwgNTAsIDUwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworCisgICAg
ICAgICAgICAgICAgICB2YXIgYmxhY2sgPSBbMCwgMCwgMCwgMF07CisgICAgICAgICAgICAgICAg
ICB2YXIgb3RoZXIgPSBbY29sb3JbMF0gKiAyNTUsIGNvbG9yWzFdICogMjU1LCBjb2xvclsyXSAq
IDI1NSwgY29sb3JbM10gKiAyNTVdOworICAgICAgICAgICAgICAgICAgdmFyIG90aGVyTXNnID0g
InNob3VsZCBiZSAiICsgKChjb3VudCAlIDIpID8gInJlZCIgOiAiZ3JlZW4iKQorICAgICAgICAg
ICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgYmxhY2ssICJzaG91
bGQgYmUgYmxhY2siLCAwKTsKKyAgICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDQ5LCAxLCAxLCBibGFjaywgInNob3VsZCBiZSBibGFjayIsIDApOworICAgICAgICAg
ICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMjYsIDQwLCAxLCAxLCBvdGhlciwgb3Ro
ZXJNc2csIDApOworICAgICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMjYs
IDI3LCAxLCAxLCBvdGhlciwgb3RoZXJNc2csIDApOworICAgICAgICAgICAgICAgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgNDAsIDI3LCAxLCAxLCBvdGhlciwgb3RoZXJNc2csIDApOworICAg
ICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICB9CisKKyAgICAgICBpbml0KCk7CisgICAgICAgdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJwb2ludGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9hdHRyaWJz
L2dsLXZlcnRleGF0dHJpYnBvaW50ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmQ0MTE3MzI5ZDY2MmE1
M2ZiYzdhMmVmMjFiN2RhOTBmMGVmNzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYXR0cmlicy9nbC12
ZXJ0ZXhhdHRyaWJwb2ludGVyLmh0bWwKQEAgLTAsMCArMSwxNzEgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHZlcnRleEF0dHJp
YlBvaW50ZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdmVydGV4QXR0cmli
UG9pbnRlciBiZWhhdmlvcnMgaW4gV2ViR0wuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52
YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4
dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyLiIpOworCisgIGlmICghZ2wuRklYRUQpIHsKKyAgICBnbC5GSVhFRCA9IDB4
MTQwQzsKKyAgfQorCisgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgIGdsLmJ1ZmZl
ckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KDApLCBnbC5TVEFUSUNfRFJB
Vyk7CisKKworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCA0KTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAidmVydGV4QXR0
cmliUG9pbnRlciBzaG91bGQgZmFpbCBpZiBubyBidWZmZXIgaXMgYm91bmQgYW5kIGBvZmZzZXRg
IGlzIG5vbi16ZXJvLiIpOworCisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0
ZXhPYmplY3QpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEsIGdsLkZMT0FULCBmYWxz
ZSwgMCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAidmVydGV4QXR0cmliUG9pbnRlciBzaG91bGQgc3Vj
Y2VlZCBpZiBubyBidWZmZXIgaXMgYm91bmQgYW5kIGBvZmZzZXRgIGlzIHplcm8uIik7CisKKyAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisKKworICBpZiAo
d3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCkgPCAyKSB7CisgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCAxLCBnbC5JTlQsIDAsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICJ2ZXJ0ZXhBdHRyaWJQb2ludGVy
IHNob3VsZCBub3Qgc3VwcG9ydCBJTlQiKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAs
IDEsIGdsLlVOU0lHTkVEX0lOVCwgMCwgMCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgInZlcnRleEF0dHJpYlBvaW50ZXIgc2hv
dWxkIG5vdCBzdXBwb3J0IFVOU0lHTkVEX0lOVCIpOworICB9CisgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMSwgZ2wuRklYRUQsIDAsIDAsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX0VOVU0sCisgICAgICAgICAgInZlcnRleEF0dHJpYlBvaW50ZXIgc2hvdWxk
IG5vdCBzdXBwb3J0IEZJWEVEIik7CisKKyAgdmFyIGNoZWNrVmVydGV4QXR0cmliUG9pbnRlciA9
IGZ1bmN0aW9uKAorICAgICAgZ2wsIGVyciwgcmVhc29uLCBzaXplLCB0eXBlLCBub3JtYWxpemUs
IHN0cmlkZSwgb2Zmc2V0KSB7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCBzaXplLCB0
eXBlLCBub3JtYWxpemUsIHN0cmlkZSwgb2Zmc2V0KTsKKyAgICB2YXIgc3VjY2VlZGVkID0gKGVy
ciA9PSBnbC5OT19FUlJPUik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXJyLAorICAg
ICAgICAiZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAiICsgc2l6ZSArCisgICAgICAgICIsIGds
LiIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5cGUpICsKKyAgICAgICAgIiwgIiArIG5vcm1h
bGl6ZSArCisgICAgICAgICIsICIgKyBzdHJpZGUgKworICAgICAgICAiLCAiICsgb2Zmc2V0ICsK
KyAgICAgICAgIikgc2hvdWxkICIgKyAoc3VjY2VlZGVkID8gInN1Y2NlZWQgIiA6ICJmYWlsICIp
ICsgcmVhc29uKTsKKyAgICBpZiAoc3VjY2VlZGVkKSB7CisgICAgICBzaG91bGRCZSgnZ2wuZ2V0
VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSknLCBzaXplLnRvU3Ry
aW5nKCkpOworICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigwLCBnbC5WRVJURVhf
QVRUUklCX0FSUkFZX1RZUEUpJywgJ2dsLicgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5cGUp
KTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9OT1JNQUxJWkVEKScsIG5vcm1hbGl6ZS50b1N0cmluZygpKTsKKyAgICAgIHNob3Vs
ZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUp
Jywgc3RyaWRlLnRvU3RyaW5nKCkpOworICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJp
Yk9mZnNldCgwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIpJywgb2Zmc2V0LnRvU3Ry
aW5nKCkpOworICAgIH0KKyAgfQorCisgIHZhciB0eXBlcyA9IFsKKyAgICB7IHR5cGU6Z2wuQllU
RSwgICAgICAgICAgIGJ5dGVzUGVyQ29tcG9uZW50OiAxIH0sCisgICAgeyB0eXBlOmdsLlVOU0lH
TkVEX0JZVEUsICBieXRlc1BlckNvbXBvbmVudDogMSB9LAorICAgIHsgdHlwZTpnbC5TSE9SVCwg
ICAgICAgICAgYnl0ZXNQZXJDb21wb25lbnQ6IDIgfSwKKyAgICB7IHR5cGU6Z2wuVU5TSUdORURf
U0hPUlQsIGJ5dGVzUGVyQ29tcG9uZW50OiAyIH0sCisgICAgeyB0eXBlOmdsLkZMT0FULCAgICAg
ICAgICBieXRlc1BlckNvbXBvbmVudDogNCB9LAorICBdOworCisgIGlmICh3dHUuZ2V0RGVmYXVs
dDNEQ29udGV4dFZlcnNpb24oKSA+PSAyKSB7CisgICAgdHlwZXMucHVzaCguLi5bCisgICAgICAg
IHsgdHlwZTpnbC5JTlQsICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzUGVyQ29tcG9uZW50
OiA0IH0sCisgICAgICAgIHsgdHlwZTpnbC5VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgIGJ5
dGVzUGVyQ29tcG9uZW50OiA0IH0sCisgICAgICAgIHsgdHlwZTpnbC5IQUxGX0ZMT0FULCAgICAg
ICAgICAgICAgICAgIGJ5dGVzUGVyQ29tcG9uZW50OiAyIH0sCisgICAgICAgIHsgdHlwZTpnbC5J
TlRfMl8xMF8xMF8xMF9SRVYsICAgICAgICAgIGJ5dGVzUGVyQ29tcG9uZW50OiA0LCBtaW5TaXpl
OiA0IH0sCisgICAgICAgIHsgdHlwZTpnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIGJ5
dGVzUGVyQ29tcG9uZW50OiA0LCBtaW5TaXplOiA0IH0sCisgICAgICBdKTsKKyAgfQorCisgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCB0eXBlcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgaW5mbyA9
IHR5cGVzW2lpXTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yICh2YXIgc2l6ZSA9IDE7IHNpemUg
PD0gNDsgKytzaXplKSB7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBkZWJ1ZygiY2hlY2tpbmc6
ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGluZm8udHlwZSkgKyAiIHdpdGggc2l6ZSAiICsg
c2l6ZSk7CisgICAgICB2YXIgYnl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIGluZm8uYnl0ZXNQZXJD
b21wb25lbnQ7CisgICAgICB2YXIgb2Zmc2V0U2V0ID0gWworICAgICAgICAgIDAsCisgICAgICAg
ICAgMSwKKyAgICAgICAgICBpbmZvLmJ5dGVzUGVyQ29tcG9uZW50IC0gMSwKKyAgICAgICAgICBp
bmZvLmJ5dGVzUGVyQ29tcG9uZW50LAorICAgICAgICAgIGluZm8uYnl0ZXNQZXJDb21wb25lbnQg
KyAxLAorICAgICAgICAgIGluZm8uYnl0ZXNQZXJDb21wb25lbnQgKiAyXTsKKyAgICAgIGZvciAo
dmFyIGpqID0gMDsgamogPCBvZmZzZXRTZXQubGVuZ3RoOyArK2pqKSB7CisgICAgICAgIHZhciBv
ZmZzZXQgPSBvZmZzZXRTZXRbampdOworICAgICAgICBmb3IgKHZhciBrayA9IDA7IGtrIDwgb2Zm
c2V0U2V0Lmxlbmd0aDsgKytraykgeworICAgICAgICAgIHZhciBzdHJpZGUgPSBvZmZzZXRTZXRb
a2tdOworICAgICAgICAgIHZhciBlcnIgPSBnbC5OT19FUlJPUjsKKyAgICAgICAgICB2YXIgcmVh
c29uID0gIiIKKyAgICAgICAgICBpZiAob2Zmc2V0ICUgaW5mby5ieXRlc1BlckNvbXBvbmVudCAh
PSAwKSB7CisgICAgICAgICAgICByZWFzb24gPSAiYmVjYXVzZSBvZmZzZXQgaXMgYmFkIjsKKyAg
ICAgICAgICAgIGVyciA9IGdsLklOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgIH0KKyAgICAg
ICAgICBpZiAoc3RyaWRlICUgaW5mby5ieXRlc1BlckNvbXBvbmVudCAhPSAwKSB7CisgICAgICAg
ICAgICByZWFzb24gPSAiYmVjYXVzZSBzdHJpZGUgaXMgYmFkIjsKKyAgICAgICAgICAgIGVyciA9
IGdsLklOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoc2l6ZSA8
IGluZm8ubWluU2l6ZSkgeworICAgICAgICAgICAgcmVhc29uID0gImJlY2F1c2Ugc2l6ZSA8IG1p
blNpemUiOworICAgICAgICAgICAgZXJyID0gZ2wuSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAg
ICAgfQorICAgICAgICAgIGNoZWNrVmVydGV4QXR0cmliUG9pbnRlcigKKyAgICAgICAgICAgICAg
Z2wsIGVyciwgcmVhc29uLCBzaXplLCBpbmZvLnR5cGUsIGZhbHNlLCBzdHJpZGUsIG9mZnNldCk7
CisgICAgICAgIH0KKyAgICAgICAgdmFyIHN0cmlkZSA9IE1hdGguZmxvb3IoMjU1IC8gaW5mby5i
eXRlc1BlckNvbXBvbmVudCkgKiBpbmZvLmJ5dGVzUGVyQ29tcG9uZW50OworCisgICAgICAgIGlm
IChvZmZzZXQgPT0gMCkgeworICAgICAgICAgIGNoZWNrVmVydGV4QXR0cmliUG9pbnRlcigKKyAg
ICAgICAgICAgICAgZ2wsIHNpemUgPCBpbmZvLm1pblNpemUgPyBnbC5JTlZBTElEX09QRVJBVElP
TiA6IGdsLk5PX0VSUk9SLCAiYXQgc3RyaWRlIGxpbWl0IiwKKyAgICAgICAgICAgICAgc2l6ZSwg
aW5mby50eXBlLCBmYWxzZSwgc3RyaWRlLCBvZmZzZXQpOworICAgICAgICAgIGNoZWNrVmVydGV4
QXR0cmliUG9pbnRlcigKKyAgICAgICAgICAgICAgZ2wsIHNpemUgPCBpbmZvLm1pblNpemUgPyBn
bC5JTlZBTElEX09QRVJBVElPTiA6IGdsLklOVkFMSURfVkFMVUUsICJvdmVyIHN0cmlkZSBsaW1p
dCIsCisgICAgICAgICAgICAgIHNpemUsIGluZm8udHlwZSwgZmFsc2UsCisgICAgICAgICAgICAg
IHN0cmlkZSArIGluZm8uYnl0ZXNQZXJDb21wb25lbnQsIG9mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9CisgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMv
YnVmZmVyLWJpbmQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9idWZmZXItYmluZC10ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjBmMWZkN2EzOGQ4MjE5OThiYTdiNDk1YjAxMWY2ZGUxNTQ4Y2Y3NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2J1ZmZlcnMvYnVmZmVyLWJpbmQtdGVzdC5odG1sCkBAIC0wLDAgKzEsNjYg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHRpdGxlPldlYkdMIEJpbmRCdWZmZXIgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIGEgYnVmZmVyIGNhbiBv
bmx5IGJlIGJvdW5kIHRvIDEgdGFyZ2V0LiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFz
LmdldENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJj
b250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0
IGV4aXN0cyIpOworCisgIGRlYnVnKCIiKTsKKworICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICJzaG91bGQgYmUgYWJsZSB0
byBiaW5kIGFycmF5IGJ1ZmZlci4iKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IG51bGwpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAg
ICAgICJzaG91bGQgYmUgYWJsZSB0byB1bmJpbmQgYXJyYXkgYnVmZmVyLiIpOworICBnbC5iaW5k
QnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWYpOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICJzaG91bGQgZ2V0IElO
VkFMSURfT1BFUkFUSU9OIGlmIGF0dGVtcHRpbmcgdG8gYmluZCBhcnJheSBidWZmZXIgdG8gZGlm
ZmVyZW50IHRhcmdldCIpOworCisgIHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wu
YmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAgICAgICAic2hvdWxkIGJlIGFibGUgdG8g
YmluZCBlbGVtZW50IGFycmF5IGJ1ZmZlci4iKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLAorICAgICAgICAgICAgInNob3VsZCBiZSBhYmxlIHRvIHVuYmluZCBlbGVtZW50IGFycmF5
IGJ1ZmZlci4iKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAg
InNob3VsZCBnZXQgSU5WQUxJRF9PUEVSQVRJT04gaWYgYXR0ZW1wdGluZyB0byBiaW5kIGVsZW1l
bnQgYXJyYXkgYnVmZmVyIHRvIGRpZmZlcmVudCB0YXJnZXQiKTsKK30KKworZGVidWcoIiIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2J1ZmZlcnMvYnVmZmVyLWRhdGEtYW5kLWJ1ZmZlci1zdWItZGF0YS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvYnVmZmVycy9idWZmZXItZGF0YS1hbmQtYnVmZmVyLXN1Yi1kYXRhLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjNjMjY1OGEyMmI5Y2NkMDU1M2JjOGUwMzRjMmI0MmY1ZmI2OWI5NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2J1ZmZlcnMvYnVmZmVyLWRhdGEtYW5kLWJ1ZmZlci1zdWItZGF0YS5odG1sCkBAIC0w
LDAgKzEsMjAzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9u
KCJUZXN0IGJ1ZmZlckRhdGEvYnVmZmVyU3ViRGF0YSB3aXRoIG9yIHdpdGhvdXQgQXJyYXlCdWZm
ZXIgaW5wdXQiKTsKKworZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODg0Ij5odHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4ODQ8L2E+IDogPGNvZGU+SW1wbGVtZW50IGJ1ZmZl
ckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1ZmZlciBhcyBpbnB1dDwvY29kZT4n
KTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgpOworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBu
b3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlz
dHMiKTsKKworICAgIGJ1ZmZlckRhdGFUZXN0KCk7CisgICAgYnVmZmVyRGF0YVNpemVzVGVzdCgp
OworCisgICAgYnVmZmVyU3ViRGF0YVRlc3QoKTsKK30KKworZnVuY3Rpb24gYnVmZmVyRGF0YVRl
c3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGJ1ZmZlckRhdGEgd2l0aG91
dCBBcnJheUJ1ZmZlciBpbnB1dCIpOworCisgICAgdmFyIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICAgIHNob3VsZEJlTm9uTnVsbChidWYpOworCisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIDQsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgIm5vIGJ1ZmZlciBib3VuZCIpOworCisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOworCisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIC00
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9WQUxVRSwKKyAgICAgICAgImNhbGxpbmcgYnVmZmVyRGF0YSB3aGVuIGJ1ZmZlciBzaXplIGlz
IG5lZ2F0aXZlIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFIik7CisKKyAgICBnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCwgZ2wuU1RBVElDX0RSQVcpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsCisgICAgICAgICJjYWxsaW5nIGJ1
ZmZlckRhdGEgd2hlbiBCdWZmZXJEYXRhU291cmNlIGlzIG51bGwgc2hvdWxkIGdlbmVyYXRlIElO
VkFMSURfVkFMVUUiKTsKKworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB1bmRl
ZmluZWQsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX1ZBTFVFLAorICAgICAgICAiY2FsbGluZyBidWZmZXJEYXRhIHdoZW4gQnVmZmVyRGF0
YVNvdXJjZSBpcyB1bmRlZmluZWQgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfVkFMVUUiKTsKKwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKK30KKworZnVuY3Rpb24g
YnVmZmVyRGF0YVNpemVzVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3Qg
YnVmZmVyRGF0YSBvdmVybG9hZHMiKTsKKworICAgIC8vIGJ1ZmZlckRhdGEgaGFzIGFuIGludGVn
ZXIgb3ZlcmxvYWQgYW5kIGFuIEFycmF5QnVmZmVyIG92ZXJsb2FkLgorICAgIC8vIFBlciB0aGUg
V2ViSURMIHNwZWMsIHRoZSBvdmVybG9hZCByZXNvbHV0aW9uIGFsZ29yaXRobSBzaG91bGQgcmVz
b2x2ZSB0eXBlcyBhcyBmb2xsb3dzOgorICAgIC8vIC0gSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwg
b3IgdW5kZWZpbmVkLCBwaWNrIHRoZSBudWxsYWJsZSB0eXBlLCB3aGljaCBpcyBBcnJheUJ1ZmZl
ci4KKyAgICAvLyAgIFBlciB0aGUgV2ViR0wgc3BlYywgbnVsbCBzaG91bGQgZmxhZyBJTlZBTElE
X1ZBTFVFLgorICAgIC8vIC0gSWYgdGhlIGFyZ3VtZW50IGlzIGFuIEFycmF5QnVmZmVyLCB0aGVu
IHBpY2sgdGhlIEFycmF5QnVmZmVyIG92ZXJsb2FkCisgICAgLy8gLSBFdmVyeXRoaW5nIGVsc2Ug
c2hvdWxkIHBpY2sgdGhlIG51bWVyaWMgb3ZlcmxvYWQuIFRoaXMgbWVhbnMgdGhpbmdzIGxpa2Ug
b2JqZWN0cywgc3RyaW5ncywKKyAgICAvLyAgIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFycmF5
cyBvZiBudW1iZXJzIGFuZCBzdHJpbmdzLCBldGMgc2hvdWxkIGNvbnZlcnQgdGhlbXNlbHZlcyB0
byBhIG51bWJlci4KKyAgICB2YXIgYnVmZmVyRGF0YVBhcmFtcyA9IFsKKyAgICAgICAgeyBwYXJh
bWV0ZXI6IDAsIGV4cGVjdGVkQnVmZmVyU2l6ZTogMCB9LAorICAgICAgICB7IHBhcmFtZXRlcjog
NCwgZXhwZWN0ZWRCdWZmZXJTaXplOiA0IH0sCisgICAgICAgIHsgcGFyYW1ldGVyOiA1LjEsIGV4
cGVjdGVkQnVmZmVyU2l6ZTogNSB9LAorICAgICAgICB7IHBhcmFtZXRlcjogNS44LCBleHBlY3Rl
ZEJ1ZmZlclNpemU6IDUgfSwKKyAgICAgICAgeyBwYXJhbWV0ZXI6IDUuNSwgZXhwZWN0ZWRCdWZm
ZXJTaXplOiA1IH0sCisKKyAgICAgICAgeyBwYXJhbWV0ZXI6ICI0IiwgZXhwZWN0ZWRCdWZmZXJT
aXplOiA0IH0sCisgICAgICAgIHsgcGFyYW1ldGVyOiAiNS4xIiwgZXhwZWN0ZWRCdWZmZXJTaXpl
OiA1IH0sCisgICAgICAgIHsgcGFyYW1ldGVyOiAiNS44IiwgZXhwZWN0ZWRCdWZmZXJTaXplOiA1
IH0sCisgICAgICAgIHsgcGFyYW1ldGVyOiAiNS41IiwgZXhwZWN0ZWRCdWZmZXJTaXplOiA1IH0s
CisgICAgICAgIHsgcGFyYW1ldGVyOiAiMCIsIGV4cGVjdGVkQnVmZmVyU2l6ZTogMCB9LAorCisg
ICAgICAgIHsgcGFyYW1ldGVyOiBbNDIsIDY0XSwgZXhwZWN0ZWRCdWZmZXJTaXplOiAwIH0sCisg
ICAgICAgIHsgcGFyYW1ldGVyOiBbNDJdLCBleHBlY3RlZEJ1ZmZlclNpemU6IDQyIH0sCisgICAg
ICAgIHsgcGFyYW1ldGVyOiBbIjQyIl0sIGV4cGVjdGVkQnVmZmVyU2l6ZTogNDIgfSwKKyAgICAg
ICAgeyBwYXJhbWV0ZXI6IFsiNDIiLCAiNjQiXSwgZXhwZWN0ZWRCdWZmZXJTaXplOiAwIH0sCisK
KyAgICAgICAgeyBwYXJhbWV0ZXI6IG5ldyBBcnJheUJ1ZmZlcigwKSwgZXhwZWN0ZWRCdWZmZXJT
aXplOiAwIH0sCisgICAgICAgIHsgcGFyYW1ldGVyOiBuZXcgQXJyYXlCdWZmZXIoNCksIGV4cGVj
dGVkQnVmZmVyU2l6ZTogNCB9LAorICAgICAgICB7IHBhcmFtZXRlcjogbmV3IFVpbnQ4QXJyYXko
bmV3IEFycmF5QnVmZmVyKDUpKSwgZXhwZWN0ZWRCdWZmZXJTaXplOiA1IH0sCisgICAgICAgIHsg
cGFyYW1ldGVyOiBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDcpKSwgZXhwZWN0ZWRCdWZm
ZXJTaXplOiA3IH0sCisKKyAgICAgICAgeyBwYXJhbWV0ZXI6ICJXZWJHTCBSb2NrcyEiLCBleHBl
Y3RlZEJ1ZmZlclNpemU6IDAgfSwKKyAgICAgICAgeyBwYXJhbWV0ZXI6IHsgbXlzdHJpbmc6ICJX
ZWJHTCBSb2NrcyEiIH0sIGV4cGVjdGVkQnVmZmVyU2l6ZTogMCB9LAorICAgIF07CisKKyAgICBp
ZiAod2luZG93LlNoYXJlZEFycmF5QnVmZmVyKSB7CisgICAgICAgIGJ1ZmZlckRhdGFQYXJhbXMu
cHVzaCgKKyAgICAgICAgICAgIHsgcGFyYW1ldGVyOiBuZXcgU2hhcmVkQXJyYXlCdWZmZXIoMyks
IGV4cGVjdGVkQnVmZmVyU2l6ZTogMyB9LAorICAgICAgICAgICAgeyBwYXJhbWV0ZXI6IG5ldyBV
aW50OEFycmF5KG5ldyBTaGFyZWRBcnJheUJ1ZmZlcig2KSksIGV4cGVjdGVkQnVmZmVyU2l6ZTog
NiB9LAorICAgICAgICAgICAgeyBwYXJhbWV0ZXI6IG5ldyBEYXRhVmlldyhuZXcgU2hhcmVkQXJy
YXlCdWZmZXIoOCkpLCBleHBlY3RlZEJ1ZmZlclNpemU6IDggfQorICAgICAgICApOworICAgIH0K
KworICAgIGJ1ZmZlckRhdGFQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAoYnVmZmVyRGF0YVBhcmFt
KSB7CisgICAgICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXJEYXRhUGFyYW0ucGFyYW1ldGVyLCBnbC5TVEFUSUNf
RFJBVyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiUGFz
c2luZyAiICsgYnVmZmVyRGF0YVBhcmFtLnBhcmFtZXRlciArICIgdG8gYnVmZmVyRGF0YSIpOwor
CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oImdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJB
WV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSIsIGJ1ZmZlckRhdGFQYXJhbS5leHBlY3RlZEJ1ZmZl
clNpemUpOworICAgIH0pOworCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51
bGwpOworfQorCitmdW5jdGlvbiBidWZmZXJTdWJEYXRhVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRlc3QgYnVmZmVyU3ViRGF0YSIpOworCisgICAgdmFyIGJ1ZiA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOwor
CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIG5ldyBBcnJheUJ1ZmZl
cigxKSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIkNh
bGxpbmcgYnVmZmVyU3ViRGF0YSBiZWZvcmUgYnVmZmVyRGF0YSBzaG91bGQgZmFpbCIpOworCisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDEyOCwgZ2wuU1RBVElDX0RSQVcpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIHZhciBhcnJh
eSA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgLTEwLCBhcnJheSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSwKKyAgICAgICAgImNhbGxpbmcgYnVmZmVyU3ViRGF0YSB3aXRoIEFycmF5QnVm
ZmVyIHdoZW4gb2Zmc2V0IGlzIG5lZ2F0aXZlIHNob3VsZCBJTlZBTElEX1ZBTFVFIik7CisKKyAg
ICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgNjUsIGFycmF5KTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiYnVmZmVyIG92ZXJmbG93Iik7
CisKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgLTEwLCBuZXcgRmxvYXQz
MkFycmF5KDgpKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LAorICAgICAgICAiY2FsbGluZyBidWZmZXJTdWJEYXRhIHdpdGggQXJyYXlCdWZmZXJWaWV3IHdo
ZW4gb2Zmc2V0IGlzIG5lZ2F0aXZlIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFIik7CisK
KyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTAsIGFycmF5KTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgImNhbGxpbmcgYnVm
ZmVyU3ViRGF0YSB3aXRoIEFycmF5QnVmZmVyIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBnbC5i
dWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTAsIG5ldyBGbG9hdDMyQXJyYXkoMCkpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAiY2FsbGlu
ZyBidWZmZXJTdWJEYXRhIHdpdGggemVyby1zaXplZCBBcnJheUJ1ZmZlclZpZXcgc2hvdWxkIHN1
Y2NlZWQiKTsKKworICAgIC8vIEFyZ3VtZW50cyB0aGF0IGFyZSBub3QgQXJyYXlCdWZmZXJzLCBu
dWxsIG9yIHVuZGVmaW5lZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uCisgICAg
c2hvdWxkVGhyb3coImdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCA0Mik7Iik7
CisgICAgc2hvdWxkVGhyb3coImdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCA1
LjUpOyIpOworICAgIHNob3VsZFRocm93KCJnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZF
UiwgMCwgXCI1LjVcIik7Iik7CisgICAgc2hvdWxkVGhyb3coImdsLmJ1ZmZlclN1YkRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCAwLCBbNF0pOyIpOworICAgIHNob3VsZFRocm93KCJnbC5idWZmZXJTdWJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgeyBteW51bWJlcjogNDJ9KTsiKTsKKyAgICBzaG91bGRU
aHJvdygiZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDEwLCBudWxsKSIpOworICAg
IHNob3VsZFRocm93KCJnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTAsIHVuZGVm
aW5lZCkiKTsKKworICAgIGlmICh3aW5kb3cuU2hhcmVkQXJyYXlCdWZmZXIpIHsKKyAgICAgICAg
Y29uc3QgdmFsaWREYXRhcyA9IFsKKyAgICAgICAgICAgICduZXcgU2hhcmVkQXJyYXlCdWZmZXIo
MyknLAorICAgICAgICAgICAgJ25ldyBVaW50OEFycmF5KG5ldyBTaGFyZWRBcnJheUJ1ZmZlcigz
KSknLAorICAgICAgICAgICAgJ25ldyBEYXRhVmlldyhuZXcgU2hhcmVkQXJyYXlCdWZmZXIoMykp
JywKKyAgICAgICAgXTsKKyAgICAgICAgZm9yIChjb25zdCB4IG9mIHZhbGlkRGF0YXMpIHsKKyAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KGBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZF
UiwgMCwgJHt4fSlgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGdlbmVyYXRlIG5vIEdMIGVycm9yIik7CisKKyAg
ICAvLyAtCisgICAgLy8gRmlyZWZveCBidWc6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE4MzcKKworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBudWxsKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgbmV3
IEFycmF5QnVmZmVyKDApKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICAgIkNhbGxpbmcgYnVmZmVyU3ViRGF0YSB3aXRoIGVtcHR5IEFy
cmF5QnVmZmVyIGFuZCBudWxsIFdlYkdMQnVmZmVyIHNob3VsZCBmYWlsIik7CisKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpOworICAgIGdsLmJ1
ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCBuZXcgQXJyYXlCdWZmZXIoMCkpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsCisgICAgICAgICJDYWxsaW5nIGJ1ZmZlclN1YkRh
dGEgd2l0aCBlbXB0eSBBcnJheUJ1ZmZlciBhbmQgbm9uLW51bGwgV2ViR0xCdWZmZXIgc2hvdWxk
IHN1Y2NlZWQiKTsKKworICAgIC8vIC0KKworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBudWxsKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci1kYXRhLWFycmF5LWJ1
ZmZlci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvYnVmZmVyLWRhdGEtYXJyYXktYnVmZmVyLWRlbGV0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhMjU0MjZmMGM0NGFiNDczZTAyM2UzZWQ2YjY2OGMwNTEzYmJl
Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci1kYXRhLWFycmF5LWJ1ZmZlci1k
ZWxldGUuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IEFSUkFZX0JVRkZFUiBkZWxldGlvbiB3aGVuIGEgdmVydGV4
IGF0dHJpYiBhcnJheSB3aXRoIGxvY2F0aW9uICE9IDAgaXMgcG9pbnRpbmcgdG8gaXQgYW5kIHBy
ZXNlcnZlRHJhd2luZ0J1ZmZlciBpcyB0cnVlLiIpOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZh
cyk7CisKK2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKAorICAgICJ3ZWJnbGNvbnRleHRsb3N0IiwK
KyAgICBmdW5jdGlvbihldmVudCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb250ZXh0IGxvc3Qi
KTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICB9LAorICAgIGZhbHNlKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjYW52YXMsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9KTsKKworaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBmaW5pc2hUZXN0
KCk7Cit9IGVsc2UgeworICAgIHZhciBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWzBdKTsKKyAg
ICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGFycmF5
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworCisgICAgdmFyIGF0dHJpYkxvY2F0aW9uID0gMTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShhdHRyaWJMb2NhdGlvbik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihh
dHRyaWJMb2NhdGlvbiwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIGdsLmRlbGV0
ZUJ1ZmZlcihidWYpOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgLy8g
V2FpdCBmb3IgcG9zc2libGUgY29udGV4dCBsb3NzCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICB9LCAyMDAwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9idWZmZXItZGF0YS1k
eW5hbWljLWRlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci1kYXRhLWR5bmFtaWMtZGVsYXkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZTQxYTY4N2JiNzkyNjY4ZDM3N2QxOWQ0NTVjYTY5NGUzMjNmOTRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9idWZmZXItZGF0YS1keW5hbWljLWRlbGF5Lmh0bWwK
QEAgLTAsMCArMSwxMTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPmJ1ZmZlckRhdGEgd2l0aCBEWU5BTUlDX0RSQVcgYW5kIGRlbGF5IGJl
dHdlZW4gdXBkYXRpbmcgZGF0YTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJ2
c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisgICAgYXR0cmlidXRlIHZlYzIgYV9w
b3NpdGlvbjsKKyAgICBhdHRyaWJ1dGUgdmVjMiBhX2NvbG9yOworICAgIHZhcnlpbmcgdmVjMiB2
X2NvbG9yOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoYV9wb3NpdGlvbiwgMC4wLCAxLjApOworICAgICAgICB2X2NvbG9yID0gYV9jb2xvcjsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHZhcnlpbmcgdmVjMiB2
X2NvbG9yOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHZfY29sb3IsIDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IGJ1ZmZlckRhdGEgd2l0aCBE
WU5BTUlDX0RSQVcgdXBkYXRlcyB0aGUgdmVydGV4IGF0dHJpYnV0ZSB3aGVuIHRoZXJlIGlzIGEg
c2lnbmlmaWNhbnQgZGVsYXkgYmV0d2VlbiB1cGRhdGluZyB0aGUgYnVmZmVyLiIpOwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFz
Iik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hh
ZGVyIl0sIFsiYV9wb3NpdGlvbiIsICJhX2NvbG9yIl0pOworCisvLyBJbml0aWFsaXplIHBvc2l0
aW9uIHZlcnRleCBhdHRyaWJ1dGUgdG8gZHJhdyBhIHNxdWFyZSBjb3ZlcmluZyB0aGUgZW50aXJl
IGNhbnZhcy4KK3ZhciBwb3NpdGlvbkJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKK2dsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAtMS4wLCAgMS4wLAorICAg
ICAxLjAsICAxLjAsCisgICAgLTEuMCwgLTEuMCwKKyAgICAgMS4wLCAtMS4wCisgICAgXSksIGds
LkRZTkFNSUNfRFJBVyk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2dsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworLy8gSW5pdGlh
bGl6ZSBjb2xvciB2ZXJ0ZXggYXR0cmlidXRlIHRvIHJlZC4KK3ZhciBjb2xvckJ1ZmZlciA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yQnVm
ZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsK
KyAgICAxLjAsIDAuMCwKKyAgICAxLjAsIDAuMCwKKyAgICAxLjAsIDAuMCwKKyAgICAxLjAsIDAu
MCwKKyAgICBdKSwgZ2wuRFlOQU1JQ19EUkFXKTsKK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KDEpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDAp
OworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIGVycm9yIGFmdGVy
IHNldHVwIik7CisKKy8vIEZpbGwgdGhlIGNhbnZhcyB3aXRoIHJlZAorZ2wuZHJhd0FycmF5cyhn
bC5UUklBTkdMRV9TVFJJUCwgMCwgNCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIk5vIGVycm9yIGFmdGVyIGZpcnN0IGRyYXdBcnJheXMiKTsKKword3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgMCwgMCwgNTAsIDUwLCBbMjU1LCAwLCAwLCAyNTVdLCAiQ2FudmFzIHNob3Vs
ZCBiZSByZWQgYWZ0ZXIgdGhlIGZpcnN0IGRyYXdBcnJheXMiKTsKKworLy8gV2l0aCB0aGUgYnVm
ZmVyIHNldCB0byBEWU5BTUlDX0RSQVcsIEFuZ2xlIGludGVybmFsbHkgY2hhbmdlcyB0aGUgc3Rv
cmFnZSB0eXBlIG9mIHRoZSB2ZXJ0ZXggYXR0cmlidXRlIGZyb20gRFlOQU1JQyB0byBESVJFQ1QK
Ky8vIGlmIHRoZSBidWZmZXIgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgYWZ0ZXIgfjQtNSBkcmF3IGNh
bGxzLiBXaGVuIHRoZSBidWZmZXIgaXMgZXZlbnR1YWxseSB1cGRhdGVkLCB0aGUgdmVydGV4IGF0
dHJpYnV0ZQorLy8gaXMgdXBkYXRlZCBiYWNrIHRvIERZTkFNSUMsIGJ1dCB0aGVyZSB3YXMgYSBi
dWcgaW4gQW5nbGUgd2hlcmUgdGhlIGRhdGEgaXMgbm90IG1hcmtlZCBhcyBkaXJ0eS4gVGhlIHJl
c3VsdCBpcyB0aGF0IHRoZQorLy8gdmVydGV4IGRhdGEgaXMgbm90IHVwZGF0ZWQgd2l0aCB0aGUg
bmV3IGJ1ZmZlciBkYXRhLiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdmVydGV4IGRhdGEg
aXMgdXBkYXRlZC4KK3ZhciBpdGVyYXRpb24gPSAwOworZnVuY3Rpb24gZHJhdygpIHsKKyAgICAv
LyBEcmF3IDEwIHRpbWVzIHRvIGVuc3VyZSB0aGF0IHRoZSB2ZXJ0ZXggYXR0cmlidXRlIHN0b3Jh
Z2UgdHlwZSBpcyBjaGFuZ2VkLgorICAgIGlmIChpdGVyYXRpb24gPCAxMCkgeworICAgICAgICBn
bC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFX1NUUklQLCAwLCAyKTsKKyAgICAgICAgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKGRyYXcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLy8gVXBkYXRl
IHRoZSBidWZmZXIgYm91bmQgdG8gdGhlIGNvbG9yIHZlcnRleCBhdHRyaWJ1dGUgdG8gZ3JlZW4g
YW5kIGRyYXcuCisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1
ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQz
MkFycmF5KFsKKyAgICAgICAgICAgIDAuMCwgMS4wLAorICAgICAgICAgICAgMC4wLCAxLjAsCisg
ICAgICAgICAgICAwLjAsIDEuMCwKKyAgICAgICAgICAgIDAuMCwgMS4wLAorICAgICAgICAgICAg
XSksIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVf
U1RSSVAsIDAsIDQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgIk5vIGVycm9yIGFmdGVyIGxhc3QgZHJhd0FycmF5cyIpOworCisgICAgICAgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDUwLCA1MCwgWzAsIDI1NSwgMCwgMjU1XSwgIkNhbnZhcyBz
aG91bGQgYmUgZ3JlZW4gYWZ0ZXIgMTAgZnJhbWVzIik7CisKKyAgICAgICAgZmluaXNoVGVzdCgp
OworICAgIH0KKworICAgIGl0ZXJhdGlvbisrOworfQorCityZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
ZHJhdyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVy
cy9idWZmZXItdW5pbml0aWFsaXplZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9idWZmZXItdW5pbml0aWFsaXpl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc1MjgyZjM2NzQ0Mzg2YTU1MGU2NmY0MmI0ODA1NjhmZWE3Njc1
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci11bmluaXRpYWxpemVkLmh0bWwK
QEAgLTAsMCArMSwxMDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMSIgaGVp
Z2h0PSIxIj48L2NhbnZhcz4KKworPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorYXR0cmlidXRlIGZsb2F0IGFfdmVydGV4Owordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9Qb3NpdGlvbiA9IGFfdmVydGV4ID09IDAuMCA/IHZlYzQoOSwgOSwgOSwgMSkgOiB2ZWM0
KDAuNSwgMC41LCAwLjUsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHVuaW5pdGlhbGl6ZWQg
V2ViR0xCdWZmZXJzIGFyZSB6ZXJvZWQgb3V0Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVy
IiwgImZzaGFkZXIiXSwgWyJhX3ZlcnRleCJdKTsKK3Nob3VsZEJlVHJ1ZSgicHJvZ3JhbSAhPSBu
dWxsIik7CisKK3ZhciBURVNUX0xFTkdUSCA9IDEwMjQ7Cit2YXIgVEVTVF9CVUZTSVpFID0gVEVT
VF9MRU5HVEggKiA0OwordmFyIGRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KFRFU1RfTEVOR1RIIC8g
NCk7IC8vIHRoaXMgYXJyYXkgaXMgemVyb2VkCisKK3ZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFy
cmF5KFRFU1RfTEVOR1RIKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgVEVTVF9MRU5HVEg7IGkrKykg
eworICBpbmRpY2VzW2ldID0gaTsKK30KKworZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKwor
ZnVuY3Rpb24gdGVzdChpbml0RnVuY3Rpb24pIHsKKyAgdmFyIHVuaW5pdGlhbGl6ZWRCdWZmZXIg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHVu
aW5pdGlhbGl6ZWRCdWZmZXIpOworICBpbml0RnVuY3Rpb24oKTsKKworICB2YXIgZWxlbWVudHMg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgZWxlbWVudHMpOworICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBpbmRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgdmFyIHZlcnRleExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3ZlcnRl
eCIpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleExvYywgMSwgZ2wuRkxPQVQsIGds
LkZBTFNFLCAwLCAwKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4TG9jKTsK
KworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9yIHNob3Vs
ZCByZXN1bHQgZnJvbSBzZXR1cCIpOworCisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQg
fCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgZ2wuZHJhd0VsZW1lbnRzKGdsLlBPSU5UUywgVEVT
VF9MRU5HVEgsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChn
bCwgMCwgMCwgMSwgMSwgWzAsIDI1NSwgMCwgMjU1XSwgImJ1ZmZlciBzaG91bGQgYmUgaW5pdGlh
bGl6ZWQgdG8gemVybyIpOworCisgIGdsLmRlbGV0ZUJ1ZmZlcih1bmluaXRpYWxpemVkQnVmZmVy
KTsKK30KKwordmFyIFJFUEVUSVRJT05TID0gNTA7CisKK3ZhciBqOworZGVidWcoIiIpOworZGVi
dWcoInRlc3RpbmcgYnVmZmVyRGF0YSguLi4sIHNpemUsIC4uLikiKTsKK2ZvciAoaiA9IDA7IGog
PCBSRVBFVElUSU9OUzsgaisrKSB7CisgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIFRFU1RfQlVGU0laRSwgZ2wuU1RBVElDX0RSQVcpOworICB9
KTsKK30KKworZGVidWcoIiIpOworZGVidWcoInRlc3RpbmcgYnVmZmVyU3ViRGF0YSguLi4sIG9m
ZnNldCwgZGF0YSkgb2YgdW5pbml0aWFsaXplZCBidWZmZXIiKTsKK2ZvciAoaiA9IDA7IGogPCBS
RVBFVElUSU9OUzsgaisrKSB7CisgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIFRFU1RfQlVGU0laRSwgZ2wuU1RBVElDX0RSQVcpOworICAgIC8v
IGJ1ZmZlclN1YkRhdGEgdGhlIHNlY29uZCBxdWFydGVyIG9mIHRoZSBidWZmZXIKKyAgICBnbC5i
dWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgVEVTVF9CVUZTSVpFIC8gNCwgZGF0YSk7Cisg
IH0pOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvZWxlbWVudC1hcnJheS1idWZmZXItZGVsZXRl
LXJlY3JlYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2VsZW1lbnQtYXJyYXktYnVmZmVyLWRlbGV0ZS1yZWNy
ZWF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZmI4MWFmOWIxYjk3NzVkOWE4MDA5NjcwZTNlOGRlMGY5
ZmU2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2VsZW1lbnQtYXJyYXktYnVmZmVyLWRl
bGV0ZS1yZWNyZWF0ZS5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPkVsZW1lbnQgQXJyYXkgQnVmZmVyIERl
bGV0aW9uIGFuZCBSZWNyZWF0aW9uIFRlc3Q8L3RpdGxlPgorICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorICA8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZnVuY3Rp
b24gaW5pdCgpCit7CisgIGRlc2NyaXB0aW9uKCk7CisKKyAgLy8gQ2xlYXIgdGhlIGJhY2tncm91
bmQgd2l0aCByZWQuCisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsK
KyAgd3R1LnNldHVwU2ltcGxlQ29sb3JQcm9ncmFtKGdsKTsKKyAgdmFyIGNvbG9yID0gWzAsIDI1
NSwgMCwgMjU1XTsKKyAgd3R1LnNldFVCeXRlRHJhd0NvbG9yKGdsLCBjb2xvcik7CisKKyAgdmFy
IHZlcnRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAgIC0xLCAtMSwKKyAgICAgMSwgLTEsCisgICAgLTEs
ICAxLAorICAgICAxLCAgMQorICBdKSwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOworCisgIC8vIENyZWF0ZSBhbiBlbGVtZW50IGFycmF5IGJ1ZmZlci4K
KyAgdmFyIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIo
Z2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDNdKSwgZ2wu
U1RBVElDX0RSQVcpOworCisgIC8vIERlbGV0ZSB0aGUgZWxlbWVudCBhcnJheSBidWZmZXIuCisg
IGdsLmRlbGV0ZUJ1ZmZlcihpbmRleEJ1ZmZlcik7CisKKyAgLy8gQ3JlYXRlIGEgbmV3IGVsZW1l
bnQgYXJyYXkgYnVmZmVyLgorICBpbmRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBn
bC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7CisgIGds
LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50OEFycmF5KFswLCAx
LCAyLCAzXSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAvLyBEcmF3IHdpdGggdGhlIG5ldyBlbGVt
ZW50IGFycmF5IGJ1ZmZlci4KKyAgLy8gSWYgdGhlIGdlb21ldHJ5IGlzIGRyYXduIHN1Y2Nlc3Nm
dWxseSwgdGhlIGZyYWdtZW50IHNoYWRlciB3aWxsIGNvbG9yIGl0IGdyZWVuLgorICBnbC5kcmF3
RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIDApOworCisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gZHJh
dyIpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIGNvbG9yLCAic2hvdWxkIGJlIGdyZWVuIikKK30K
KworaW5pdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRp
Y2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9idWZmZXJzL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lODIzZjk1ZjY5ZjBiNjJmZjZlYmYyZjcxNTk5NjdkZjQxNGI5ZjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLmh0
bWwKQEAgLTAsMCArMSw1NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oJ1Rlc3QgdGhhdCBjbGllbnQgZGF0YSBpcyBhbHdheXMgY29waWVkIGR1cmluZyBidWZm
ZXJEYXRhIGFuZCBidWZmZXJTdWJEYXRhIGNhbGxzLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgZGF0
YSB0aGUgR0wgdXNlcyB0byBkcmF3IG1heSBkaWZmZXIgZnJvbSB0aGF0IGNoZWNrZWQgYnkgdGhl
IGluZGV4IHZhbGlkYXRpb24gY29kZS4nKQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgY29udGV4dCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBwcm9ncmFtID0gd3R1Lmxv
YWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFt
KTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFS
UkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKy8vIDQgdmVydGljZXMgLT4gMiB0cmlhbmdsZXMK
K2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJh
eShbIDAsMCwwLCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsK
K2NvbnRleHQudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0LkZMT0FULCBmYWxzZSwg
MCwgMCk7CisKK3ZhciBpbmRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7CisKK2Nv
bnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleE9iamVj
dCk7Cit2YXIgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAx
MDAwMCBdKTsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBpbmRpY2VzLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDIpIik7Cit2YXIg
aW5kZXhWYWxpZGF0aW9uRXJyb3IgPSB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtj
b250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCBjb250ZXh0Lk5PX0VSUk9SXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQs
IDApIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGluZGV4VmFsaWRhdGlv
bkVycm9yLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwg
Y29udGV4dC5VTlNJR05FRF9TSE9SVCwgNCkiKTsKK2luZGljZXNbMF0gPSAyOworaW5kaWNlc1s1
XSA9IDE7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJS
T1IsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250
ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0LCBpbmRleFZhbGlkYXRpb25FcnJvciwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGluZGV4VmFsaWRhdGlvbkVycm9yLCAiY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05F
RF9TSE9SVCwgNCkiKTsKKworZGVidWcoIiIpCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvaW5kZXgtdmFs
aWRhdGlvbi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12
YWxpZGF0aW9uLWNyYXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE4
NzNmNzQwZjA0NDA3ZjhlOTBkMWJjODM4NzExYzViYmZkOTg0NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2J1ZmZlcnMvaW5kZXgtdmFsaWRhdGlvbi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0YS5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oJ1ZlcmlmaWVzIHRoYXQgdGhlIGluZGV4IHZhbGlkYXRpb24gY29kZSB3aGljaCBpcyB3
aXRoaW4gYnVmZmVyU3ViRGF0YSBkb2VzIG5vdCBjcmFzaC4nKQorCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CisKK3ZhciBlbGVtZW50
QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIDI1NiwgZ2wuU1RBVElDX0RSQVcpOwordmFyIGRhdGEgPSBuZXcgVWludDhBcnJh
eSgxMjcpOworZ2wuYnVmZmVyU3ViRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgNjMsIGRh
dGEpOwordGVzdFBhc3NlZCgiYnVmZmVyU3ViRGF0YSwgd2hlbiBidWZmZXIgb2JqZWN0IHdhcyBp
bml0aWFsaXplZCB3aXRoIG51bGwsIGRpZCBub3QgY3Jhc2giKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZm
ZXJzL2luZGV4LXZhbGlkYXRpb24tbGFyZ2UtYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2luZGV4LXZh
bGlkYXRpb24tbGFyZ2UtYnVmZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA0MjcwMzlhMGMyY2UyYzQ3
ZjcxNTNlZGFhMWE4NWVhZjc2MzA2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvaW5kZXgt
dmFsaWRhdGlvbi1sYXJnZS1idWZmZXIuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGluZGV4IHZhbGlk
YXRpb24gZm9yIGRyYXdFbGVtZW50cyB3b3JrcyB3aXRoIGxhcmdlIGF0dHJpYnV0ZSBidWZmZXJz
Jyk7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjb250ZXh0ID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShjb250
ZXh0KTsKKworY29udGV4dC51c2VQcm9ncmFtKHByb2dyYW0pOworCisvLyBDcmVhdGUgYSBzbWFs
bCBpbmRleCBidWZmZXIuCit2YXIgaW5kZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigp
OworY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4
T2JqZWN0KTsKK3ZhciBpbmRleEFycmF5ID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyXSk7Citj
b250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhBcnJh
eSwgY29udGV4dC5TVEFUSUNfRFJBVyk7CisKKy8vIENyZWF0ZSBhIGxhcmdlIGF0dHJpYnV0ZSBi
dWZmZXIuCit2YXIgdmVydGV4T2JqZWN0ID0gY29udGV4dC5jcmVhdGVCdWZmZXIoKTsKK2NvbnRl
eHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4
dC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4
dC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoMyAqIDY1NTM2KSwgY29udGV4dC5TVEFU
SUNfRFJBVyk7Citjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4dC5GTE9B
VCwgZmFsc2UsIDAsIDApOworCitkZWJ1ZygiVGVzdCBsYXJnZSBhdHRyaWJ1dGUgYnVmZmVyIikK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVE
X1NIT1JULCAwKSIpOworCisvLyBFbmxhcmdlIHRoZSBhdHRyaWJ1dGUgYnVmZmVyIHNsaWdodGx5
LgorZGVidWcoIlRlc3QgZXZlbiBsYXJnZXIgYXR0cmlidXRlIGJ1ZmZlciIpCitjb250ZXh0LmJ1
ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoMyAqIDY1NTM2
ICsgMyksIGNvbnRleHQuU1RBVElDX0RSQVcpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5U
UklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CisKK2RlYnVnKCIiKQor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9idWZmZXJzL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5k
aWNlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLXZlcmlmaWVzLXRvby1tYW55LWlu
ZGljZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWJiZjRmMzJkNTVkM2Y2NjRkZDkwNGFiMmNlMDEwZGRl
MThiMmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLXZlcmlm
aWVzLXRvby1tYW55LWluZGljZXMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGluZGV4IHZhbGlkYXRp
b24gZm9yIGRyYXdFbGVtZW50cyBkb2VzIG5vdCBleGFtaW5lIHRvbyBtYW55IGluZGljZXMnKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNvbnRleHQgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQp
OworCitjb250ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7Cit2YXIgdmVydGV4T2JqZWN0ID0gY29u
dGV4dC5jcmVhdGVCdWZmZXIoKTsKK2NvbnRleHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7
Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7
CisvLyA0IHZlcnRpY2VzIC0+IDIgdHJpYW5nbGVzCitjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4
dC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAsMCwgMCwxLDAsIDEsMCwwLCAx
LDEsMCBdKSwgY29udGV4dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50
ZXIoMCwgMywgY29udGV4dC5GTE9BVCwgZmFsc2UsIDAsIDApOworCit2YXIgaW5kZXhPYmplY3Qg
PSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworCitkZWJ1ZygiVGVzdCBvdXQgb2YgcmFuZ2UgaW5k
aWNlcyIpCitjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
aW5kZXhPYmplY3QpOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIG5ldyBVaW50MTZBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAwMCBdKSwgY29u
dGV4dC5TVEFUSUNfRFJBVyk7Cit2YXIgaW5kZXhWYWxpZGF0aW9uRXJyb3IgPSB3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIFtjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCBjb250
ZXh0Lk5PX0VSUk9SXSwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RS
SVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSIpOwor
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBpbmRleFZhbGlkYXRpb25FcnJvciwg
ImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQu
VU5TSUdORURfU0hPUlQsIDQpIik7CisKK2RlYnVnKCIiKQordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2lu
ZGV4LXZhbGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12
YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODI3NjgwODVm
Y2M3YTMzYjZhZmQ4MWI3NjJkNGMyZWQ3MmZlYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVy
cy9pbmRleC12YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXIuaHRtbApAQCAtMCwwICsxLDEw
NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKworPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJp
YnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWM0IHZDb2xvcjsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAg
ICBjb2xvciA9IHZDb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnMiIHR5cGU9Ingt
c2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB1
cGRhdGluZyB0aGUgc2l6ZSBvZiBhIHZlcnRleCBidWZmZXIgaXMgcHJvcGVybHkgbm90aWNlZCBi
eSB0aGUgV2ViR0wgaW1wbGVtZW50YXRpb24uJykKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0sIFsidlBvc2l0aW9uIiwgInZDb2xv
ciJdKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgaW5pdGlh
bGl6YXRpb24iKTsKKwordmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CitnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgKKyAgICBbLTEsMSwwLCAxLDEsMCwg
LTEsLTEsMCwKKyAgICAgLTEsLTEsMCwgMSwxLDAsIDEsLTEsMF0pLCBnbC5TVEFUSUNfRFJBVyk7
CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2dsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiYWZ0ZXIgdmVydGV4IHNldHVwIik7CisKK3ZhciB0ZXhDb29yZE9iamVjdCA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHRleENv
b3JkT2JqZWN0KTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFy
cmF5KAorICAgIFswLDAsIDEsMCwgMCwxLAorICAgICAwLDEsIDEsMCwgMSwxXSksIGdsLlNUQVRJ
Q19EUkFXKTsKK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworZ2wudmVydGV4QXR0cmli
UG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOword3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciB0ZXh0dXJlIGNvb3JkIHNldHVwIik7CisKKy8vIE5v
dyByZXNpemUgdGhlc2UgYnVmZmVycyBiZWNhdXNlIHdlIHdhbnQgdG8gY2hhbmdlIHdoYXQgd2Un
cmUgZHJhd2luZy4KK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3Qp
OworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAg
IC0xLDEsMCwgMSwxLDAsIC0xLC0xLDAsIDEsLTEsMCwKKyAgICAtMSwxLDAsIDEsMSwwLCAtMSwt
MSwwLCAxLC0xLDBdKSwgZ2wuU1RBVElDX0RSQVcpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhZnRlciB2ZXJ0ZXggcmVkZWZpbml0aW9uIik7CitnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRPYmplY3QpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIG5ldyBVaW50OEFycmF5KFsKKyAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAyNTUs
IDAsIDAsIDI1NSwKKyAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAyNTUsIDAsIDAsIDI1NSwKKyAg
ICAwLCAyNTUsIDAsIDI1NSwKKyAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAwLCAyNTUsIDAsIDI1
NSwKKyAgICAwLCAyNTUsIDAsIDI1NV0pLCBnbC5TVEFUSUNfRFJBVyk7CitnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKDEsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIGZhbHNlLCAwLCAwKTsKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgdGV4dHVyZSBjb29yZGluYXRlIC8g
Y29sb3IgcmVkZWZpbml0aW9uIik7CisKK3ZhciBudW1RdWFkcyA9IDI7Cit2YXIgaW5kaWNlcyA9
IG5ldyBVaW50OEFycmF5KG51bVF1YWRzICogNik7Citmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVt
UXVhZHM7ICsraWkpIHsKKyAgICB2YXIgb2Zmc2V0ID0gaWkgKiA2OworICAgIHZhciBxdWFkID0g
KGlpID09IChudW1RdWFkcyAtIDEpKSA/IDQgOiAwOworICAgIGluZGljZXNbb2Zmc2V0ICsgMF0g
PSBxdWFkICsgMDsKKyAgICBpbmRpY2VzW29mZnNldCArIDFdID0gcXVhZCArIDE7CisgICAgaW5k
aWNlc1tvZmZzZXQgKyAyXSA9IHF1YWQgKyAyOworICAgIGluZGljZXNbb2Zmc2V0ICsgM10gPSBx
dWFkICsgMjsKKyAgICBpbmRpY2VzW29mZnNldCArIDRdID0gcXVhZCArIDE7CisgICAgaW5kaWNl
c1tvZmZzZXQgKyA1XSA9IHF1YWQgKyAzOworfQordmFyIGluZGV4T2JqZWN0ID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleE9i
amVjdCk7CitnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBn
bC5TVEFUSUNfRFJBVyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFm
dGVyIHNldHRpbmcgdXAgaW5kaWNlcyIpOworZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywg
bnVtUXVhZHMgKiA2LCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgZHJhd2luZyIpOworCitkZWJ1ZygiIikKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9idWZmZXJzL2luZGV4LXZhbGlkYXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYWE3ZTc4NzgxMzM0NmYxNTEzOWRjNjQwZjZjNTRjM2FjZWMy
ZmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy9pbmRleC12YWxpZGF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMTkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IGluZGV4IHZhbGlkYXRpb24gdmVyaWZpZXMgdGhlIGNvcnJlY3QgbnVtYmVy
IG9mIGluZGljZXMiKTsKKworZnVuY3Rpb24gc2l6ZUluQnl0ZXModHlwZSkgeworICBzd2l0Y2gg
KHR5cGUpIHsKKyAgY2FzZSBnbC5CWVRFOgorICBjYXNlIGdsLlVOU0lHTkVEX0JZVEU6CisgICAg
cmV0dXJuIDE7CisgIGNhc2UgZ2wuU0hPUlQ6CisgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlQ6Cisg
ICAgcmV0dXJuIDI7CisgIGNhc2UgZ2wuSU5UOgorICBjYXNlIGdsLlVOU0lHTkVEX0lOVDoKKyAg
Y2FzZSBnbC5GTE9BVDoKKyAgICByZXR1cm4gNDsKKyAgZGVmYXVsdDoKKyAgICB0aHJvdyAidW5r
bm93biB0eXBlIjsKKyAgfQorfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQ
cm9ncmFtKGdsKTsKKworLy8gMyB2ZXJ0aWNlcyA9PiAxIHRyaWFuZ2xlLCBpbnRlcmxlYXZlZCBk
YXRhCit2YXIgZGF0YUNvbXBsZXRlID0gbmV3IEZsb2F0MzJBcnJheShbMCwgMCwgMCwgMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLCAxLCAxLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDFdKTsKK3ZhciBkYXRhSW5jb21wbGV0ZSA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAs
IDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxLCAxLCAxXSk7Cit2YXIgaW5kaWNlcyA9IG5l
dyBVaW50MTZBcnJheShbMCwgMSwgMl0pOworCitkZWJ1ZygiVGVzdGluZyB3aXRoIHZhbGlkIGlu
ZGljZXMiKTsKKwordmFyIGJ1ZmZlckNvbXBsZXRlID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyQ29tcGxldGUpOworZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIGRhdGFDb21wbGV0ZSwgZ2wuU1RBVElDX0RSQVcpOwordmFyIGVs
ZW1lbnRzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBlbGVtZW50cyk7CitnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBpbmRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CitnbC51c2VQcm9ncmFtKHByb2dyYW0pOwor
dmFyIHZlcnRleExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3ZlcnRleCIp
OwordmFyIG5vcm1hbExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX25vcm1h
bCIpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhMb2MsIDQsIGdsLkZMT0FULCBmYWxz
ZSwgNyAqIHNpemVJbkJ5dGVzKGdsLkZMT0FUKSwgMCk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh2ZXJ0ZXhMb2MpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcihub3JtYWxMb2MsIDMsIGds
LkZMT0FULCBmYWxzZSwgNyAqIHNpemVJbkJ5dGVzKGdsLkZMT0FUKSwgNCAqIHNpemVJbkJ5dGVz
KGdsLkZMT0FUKSk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShub3JtYWxMb2MpOworc2hv
dWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
Uik7CitzaG91bGRCZVVuZGVmaW5lZCgnZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywg
Z2wuVU5TSUdORURfU0hPUlQsIDApJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKK2RlYnVnKCJUZXN0aW5nIHdpdGggb3V0LW9mLXJhbmdlIGluZGljZXMiKTsKKwor
dmFyIGJ1ZmZlckluY29tcGxldGUgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBidWZmZXJJbmNvbXBsZXRlKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBkYXRhSW5jb21wbGV0ZSwgZ2wuU1RBVElDX0RSQVcpOworZ2wudmVydGV4QXR0
cmliUG9pbnRlcih2ZXJ0ZXhMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgNyAqIHNpemVJbkJ5dGVz
KGdsLkZMT0FUKSwgMCk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhMb2MpOwor
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7CitkZWJ1ZygiRW5hYmxlIHZl
cnRpY2VzLCB2YWxpZCIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwor
c2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVO
U0lHTkVEX1NIT1JULCAwKScpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Ip
OworZGVidWcoIkVuYWJsZSBub3JtYWxzLCBvdXQtb2YtcmFuZ2UiKTsKK2dsLnZlcnRleEF0dHJp
YlBvaW50ZXIobm9ybWFsTG9jLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhn
bC5GTE9BVCksIDQgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkpOworZ2wuZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkobm9ybWFsTG9jKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKK3Nob3VsZEJlVW5kZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBn
bC5VTlNJR05FRF9TSE9SVCwgMCknKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZB
TElEX09QRVJBVElPTiwgZ2wuTk9fRVJST1JdKTsKKworZGVidWcoIlRlc3Qgd2l0aCBlbmFibGVk
IGF0dHJpYnV0ZSB0aGF0IGRvZXMgbm90IGJlbG9uZyB0byBjdXJyZW50IHByb2dyYW0iKTsKKwor
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7Cit2YXIgZXh0cmFMb2MgPSBN
YXRoLm1heCh2ZXJ0ZXhMb2MsIG5vcm1hbExvYykgKyAxOworZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoZXh0cmFMb2MpOworZGVidWcoIkVuYWJsZSBhbiBleHRyYSBhdHRyaWJ1dGUgd2l0aCBu
dWxsIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitzaG91bGRCZVVu
ZGVmaW5lZCgnZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfU0hP
UlQsIDApJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTik7
CitkZWJ1ZygiRW5hYmxlIGFuIGV4dHJhIGF0dHJpYnV0ZSB3aXRoIGluc3VmZmljaWVudCBkYXRh
IGJ1ZmZlciIpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcihleHRyYUxvYywgMywgZ2wuRkxPQVQs
IGZhbHNlLCA3ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpLCA0ICogc2l6ZUluQnl0ZXMoZ2wuRkxP
QVQpKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK3Nob3VsZEJlVW5k
ZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9S
VCwgMCknKTsKK2RlYnVnKCJQYXNzIGxhcmdlIG5lZ2F0aXZlIGluZGV4IHRvIHZlcnRleEF0dHJp
YlBvaW50ZXIiKTsKK2dsLnZlcnRleEF0dHJpYlBvaW50ZXIobm9ybWFsTG9jLCAzLCBnbC5GTE9B
VCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCksIC0yMDAwMDAwMDAwICogc2l6ZUlu
Qnl0ZXMoZ2wuRkxPQVQpKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFM
VUUpOworc2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMs
IGdsLlVOU0lHTkVEX1NIT1JULCAwKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvdmVydGV4LWJ1
ZmZlci11cGRhdGVkLWFmdGVyLWRyYXcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2J1ZmZlcnMvdmVydGV4LWJ1ZmZlci11cGRh
dGVkLWFmdGVyLWRyYXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDQzNmI2NGVmOTIzM2ZiOTM0OTg4ZDFj
NzYzZmYyNTJiZDVkNWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvYnVmZmVycy92ZXJ0ZXgtYnVmZmVy
LXVwZGF0ZWQtYWZ0ZXItZHJhdy5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRleCBCdWZm
ZXIgVXBkYXRlZCBBZnRlciBEcmF3IFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPgorPC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMy
IGFfcG9zaXRpb247CithdHRyaWJ1dGUgdmVjNCBhX2NvbG9yOwordmFyeWluZyB2ZWM0IHZfb3V0
Y29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLCAw
LCAxKTsKKyAgdl9vdXRjb2xvciA9IGFfY29sb3I7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBp
ZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2YXJ5aW5nIG1lZGl1bXAg
dmVjNCB2X291dGNvbG9yOwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZfb3V0
Y29sb3I7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKy8vIFRlc3RzIHRoYXQgRDNEMTEgZGly
dHkgYml0IHVwZGF0ZXMgZG9uJ3QgZm9yZ2V0IGFib3V0IEJ1ZmZlclN1YkRhdGEgYXR0cmliIHVw
ZGF0ZXMuCisvLyBCYXNlZCBvbiBBTkdMRSB0ZXN0IChTdGF0ZUNoYW5nZVRlc3QsIFZlcnRleEJ1
ZmZlclVwZGF0ZWRBZnRlckRyYXcpIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9hbmds
ZS9ibG9iL2Y3ZjBiOGMzYWIyMWM1MmNjMjkxNTA0ODk1OTM2MWNmNjI4ZDk1ZjAvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAKKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCk7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImV4YW1wbGUiKTsKKwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBb
J3ZzaGFkZXInLCAnZnNoYWRlciddKTsKKwordmFyIGNvbG9yTG9jID0gZ2wuZ2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgImFfY29sb3IiKTsKK3ZhciBncmVlbiA9IG5ldyBVaW50OEFycmF5KDQg
KiA2KTsKK3ZhciByZWQgPSBuZXcgVWludDhBcnJheSg0ICogNik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgNjsgKytpKSB7CisgIHZhciBjaSA9IGkgKiA0OworCisgIGdyZWVuW2NpXSA9IDA7Cisg
IHJlZFtjaV0gPSAyNTU7CisKKyAgZ3JlZW5bY2kgKyAxXSA9IDI1NTsKKyAgcmVkW2NpICsgMV0g
PSAwOworCisgIGdyZWVuW2NpICsgMl0gPSByZWRbY2kgKyAyXSA9IDA7CisKKyAgZ3JlZW5bY2kg
KyAzXSA9IHJlZFtjaSArIDNdID0gMjU1OworfQorCit2YXIgcG9zaXRpb25Mb2MgPSBnbC5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworCit2YXIgZ3JpZFJlcyA9IDE7
Cit3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgcG9zaXRpb25Mb2MpOworCit2YXIg
Y29sb3JCdWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBjb2xvckJ1Zik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgZ3JlZW4sIGds
LlNUQVRJQ19EUkFXKTsKK2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2MsIDQsIGdsLlVO
U0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29s
b3JMb2MpOworCit3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMpOword3R1
LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisK
K2dsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCByZWQpOworCit3dHUuY2xlYXJB
bmREcmF3SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1
LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2Nh
bnZhcy9idWZmZXItb2Zmc2NyZWVuLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9idWZmZXItb2Zmc2NyZWVu
LXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGJmMmQzNWZiYTgxOGU0MDYyMDA2MGU1M2IwNTE5OWY4
YmZjMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL2J1ZmZlci1vZmZzY3JlZW4tdGVzdC5o
dG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCByZXF1aXJlZCBidWZmZXIgY2xlYXIgYmVoYXZpb3VyIHRl
c3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2JvZHkgeworICAgIGhlaWdodDog
MzAwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGNhbnZhcyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSJib3JkZXI6
IDFweCBzb2xpZCBibHVlOyIgaWQ9ImMiPjwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIFdlYkdMIGltcGxl
bWVudGF0aW9ucyBjb3JyZWN0bHkgY2xlYXIgIiArCisgICAgICAgICAgICAidGhlIGRyYXdpbmcg
YnVmZmVyIG9uIGNvbXBvc2l0ZSBpZiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgaXMgZmFsc2UuIik7
CitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbDEgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJjIik7Cit2YXIgZ2wyID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwor
c2hvdWxkQmVOb25OdWxsKCJnbDEiKTsKK3Nob3VsZEJlTm9uTnVsbCgiZ2wyIik7CisKK3Nob3Vs
ZEJlRmFsc2UoJ2dsMS5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cicpOworc2hvdWxkQmVGYWxzZSgnZ2wyLmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVE
cmF3aW5nQnVmZmVyJyk7CisKK2Z1bmN0aW9uIGluaXQoZ2wpIHsKKyAgICBnbC5jbGVhckNvbG9y
KDEsIDAsIDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIGVuYWJsZSBz
Y2lzc29yIGhlcmUsIGJlZm9yZSBjb21wb3NpdGluZywgdG8gbWFrZSBzdXJlIGl0J3MgY29ycmVj
dGx5CisgICAgLy8gaWdub3JlZCBhbmQgcmVzdG9yZWQKKyAgICBnbC5zY2lzc29yKDAsIDEwLCAx
MCwgMTApOworICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworfQorCitpbml0KGdsMSk7
Citpbml0KGdsMik7CisKK3d0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICAgIGZ1
bmN0aW9uIGNsZWFyKGdsKSB7CisgICAgICAgIC8vIHNjaXNzb3Igd2FzIHNldCBlYXJsaWVyCisg
ICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgIH0KKyAgICBjbGVhcihnbDEpOworICAgIGNsZWFyKGdsMik7
CisKKyAgICBkZWJ1ZygiY2hlY2sgb24gc2NyZWVuIGNhbnZhcyIpOworICAgIHd0dS5jaGVja0Nh
bnZhc1JlY3QoZ2wxLCAwLCAxMCwgMTAsIDEwLCBbMCwgMCwgMjU1LCAyNTVdLAorICAgICAgICAi
Y2xlYXJlZCBjb3JuZXIgc2hvdWxkIGJlIGJsdWUsIHN0ZW5jaWwgc2hvdWxkIGJlIHByZXNlcnZl
ZCIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wxLCAwLCAwLCAxMCwgMTAsIFswLCAwLCAw
LCAwXSwKKyAgICAgICAgInJlbWFpbmRlciBvZiBidWZmZXIgc2hvdWxkIGJlIGNsZWFyZWQiKTsK
KyAgICBkZWJ1ZygiY2hlY2sgb2ZmIHNjcmVlbiBjYW52YXMiKTsKKyAgICB3dHUuY2hlY2tDYW52
YXNSZWN0KGdsMiwgMCwgMTAsIDEwLCAxMCwgWzAsIDAsIDI1NSwgMjU1XSwKKyAgICAgICAgImNs
ZWFyZWQgY29ybmVyIHNob3VsZCBiZSBibHVlLCBzdGVuY2lsIHNob3VsZCBiZSBwcmVzZXJ2ZWQi
KTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsMiwgMCwgMCwgMTAsIDEwLCBbMjU1LCAwLCAw
LCAyNTVdLAorICAgICAgICAicmVtYWluZGVyIG9mIGJ1ZmZlciBzaG91bGQgYmUgdW4tY2xlYXJl
ZCByZWQiKTsKKworICAgIGZpbmlzaFRlc3QoKTsKK30pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9j
YW52YXMvYnVmZmVyLXByZXNlcnZlLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9idWZmZXItcHJlc2VydmUt
dGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDkwNTU3NmQxNmI0MGEyZDc3MWM5YWY0MGVjYTgxNDAy
NjQ0OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvYnVmZmVyLXByZXNlcnZlLXRlc3QuaHRt
bApAQCAtMCwwICsxLDY2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgcmVxdWlyZWQgYnVmZmVyIGNsZWFyIGJlaGF2aW91ciB0ZXN0
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citib2R5IHsKKyAgICBoZWlnaHQ6IDMw
MDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0gSW1wb3J0YW50IHRvIHB1
dCB0aGUgY2FudmFzIGF0IHRoZSB0b3Agc28gdGhhdCBpdCdzIGFsd2F5cyB2aXNpYmxlIGV2ZW4g
aW4gdGhlIHRlc3Qgc3VpdGUgcnVubmVyLgorICAgICBPdGhlcndpc2UgaXQganVzdCBkb2Vzbid0
IGdldCBjb21wb3NpdGVkIGluIEZpcmVmb3guIC0tPgorPGNhbnZhcyB3aWR0aD0iMjAiIGhlaWdo
dD0iMjAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibHVlOyIgaWQ9ImMiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworCitk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIGNvcnJl
Y3RseSBjbGVhciB0aGUgZHJhd2luZyBidWZmZXIgIiArCisgICAgICAgICAgICAib24gY29tcG9z
aXRlIGlmIHByZXNlcnZlRHJhd2luZ0J1ZmZlciBpcyBmYWxzZS4iKTsKK2RlYnVnKCIiKTsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJjIik7CitzaG91bGRCZVRydWUoImdsICE9IG51bGwiKTsKK3Nob3VsZEJlVHJ1ZSgnZ2wuZ2V0
Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UnKTsKKwor
Z2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQg
fCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworLy8gZW5h
YmxlIHNjaXNzb3IgaGVyZSwgYmVmb3JlIGNvbXBvc2l0aW5nLCB0byBtYWtlIHN1cmUgaXQncyBj
b3JyZWN0bHkKKy8vIGlnbm9yZWQgYW5kIHJlc3RvcmVkCitnbC5zY2lzc29yKDAsIDEwLCAxMCwg
MTApOworZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKK2Z1bmN0aW9uIGNsZWFyKCkgewor
ICAgIC8vIHNjaXNzb3Igd2FzIHNldCBlYXJsaWVyCisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAx
LCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDEwLCAxMCwgMTAsIFswLCAwLCAyNTUsIDI1NV0sCisgICAgICAg
ICJjbGVhcmVkIGNvcm5lciBzaG91bGQgYmUgYmx1ZSwgc3RlbmNpbCBzaG91bGQgYmUgcHJlc2Vy
dmVkIik7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMTAsIDEwLCBbMCwgMCwg
MCwgMF0sCisgICAgICAgICJyZW1haW5kZXIgb2YgYnVmZmVyIHNob3VsZCBiZSBjbGVhcmVkIik7
CisKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworfQorCit3dHUud2FpdEZvckNvbXBv
c2l0ZShjbGVhcik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvY2FudmFzLXRlc3QuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2NhbnZhcy9jYW52YXMtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMTY0NjkyYzFkM2Y5MGM1MmY3
N2QzYzE5NzU1NWI1ZTllZWJmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvY2FudmFzLXRl
c3QuaHRtbApAQCAtMCwwICsxLDE5NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ2FudmFzIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1
MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyZCIgd2lk
dGg9IjQwIiBoZWlnaHQ9IjQwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIGlu
dGVyYWN0IGNvcnJlY3RseSB3aXRoIHRoZSBjYW52YXMgdGFnLiIpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFyIGVycjsKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cit2YXIgY2FudmFzMmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMmQiKTsKK3Zh
ciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KGNhbnZhcyk7CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9l
cyBub3QgZXhpc3QiKTsKKyAgZmluaXNoVGVzdCgpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgi
Y29udGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBjYW52
YXMgYW5kIFdlYkdMIGludGVyYWN0aW9uIik7CisKKyAgLy8gQ2hlY2sgdGhhdCBhIGNhbnZhcyB3
aXRoIG5vIHdpZHRoIG9yIGhlaWdodCBpcyAzMDB4MTUwIHBpeGVscworICBzaG91bGRCZSgnY2Fu
dmFzLndpZHRoJywgJzMwMCcpOworICBzaG91bGRCZSgnY2FudmFzLmhlaWdodCcsICcxNTAnKTsK
KworICAvLyBDaGVjayBnZXQgYSA0IHZhbHVlIGdsIHBhcmFtZXRlciBhcyBhIGNzdiBzdHJpbmcu
CisgIHZhciBnZXRWYWx1ZTR2ID0gZnVuY3Rpb24obmFtZSkgeworICAgIHZhciB2ID0gZ2wuZ2V0
UGFyYW1ldGVyKG5hbWUpOworICAgIHZhciByZXN1bHQgPSAnJyArCisgICAgICAgIHZbMF0gKyAn
LCcgKworICAgICAgICB2WzFdICsgJywnICsKKyAgICAgICAgdlsyXSArICcsJyArCisgICAgICAg
IHZbM107CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIHZhciBnZXRWaWV3cG9ydCA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiBnZXRWYWx1ZTR2KGdsLlZJRVdQT1JUKTsKKyAgfQorCisg
IHZhciBnZXRDbGVhckNvbG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGdldFZhbHVlNHYo
Z2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICB9CisKKyAgdmFyIGlzQWJvdXRFcXVhbCA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICByZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDwgMC4wMTsKKyAgfQorCisg
IHZhciBpc0Fib3V0RXF1YWxJbnQgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJuIE1hdGgu
YWJzKGEgLSBiKSA8IDM7CisgIH0KKworICB2YXIgY2hlY2tDYW52YXNDb250ZW50SXMgPSBmdW5j
dGlvbihyM2QsZzNkLGIzZCxhM2QpIHsKKyAgICB2YXIgcjJkOworICAgIHZhciBnMmQ7CisgICAg
dmFyIGIyZDsKKyAgICB2YXIgYTJkOworCisgICAgdmFyIGNoZWNrUGl4ZWwgPSBmdW5jdGlvbih4
LCB5LCByM2QsZzNkLGIzZCxhM2QpIHsKKyAgICAgIHZhciBvZmZzZXQgPSAoeSAqIDQwICsgeCkg
KiA0OworICAgICAgcjJkID0gaW1nRGF0YS5kYXRhW29mZnNldF07CisgICAgICBnMmQgPSBpbWdE
YXRhLmRhdGFbb2Zmc2V0ICsgMV07CisgICAgICBiMmQgPSBpbWdEYXRhLmRhdGFbb2Zmc2V0ICsg
Ml07CisgICAgICBhMmQgPSBpbWdEYXRhLmRhdGFbb2Zmc2V0ICsgM107CisgICAgICB2YXIgcmVz
ID0gaXNBYm91dEVxdWFsSW50KHIyZCwgcjNkKSAmJgorICAgICAgICAgICAgICAgIGlzQWJvdXRF
cXVhbEludChnMmQsIGczZCkgJiYKKyAgICAgICAgICAgICAgICBpc0Fib3V0RXF1YWxJbnQoYjJk
LCBiM2QpICYmCisgICAgICAgICAgICAgICAgaXNBYm91dEVxdWFsSW50KGEyZCwgYTNkKTsKKyAg
ICAgIGlmICghcmVzKSB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdhdCAnICsgeCAr
ICcsICcgKyB5ICsgIiAob2Zmc2V0ICIgKyBvZmZzZXQgKyAiKSA9ICIgKyByMmQgKyAiLCAiICsg
ZzJkICsgIiwgIiArIGIyZCArICIsICIgKyBhMmQpOworICAgICAgfQorICAgICAgcmV0dXJuIHJl
czsKKyAgICB9CisKKyAgICB2YXIgY2hlY2tQaXhlbHMgPSBmdW5jdGlvbihyM2QsZzNkLGIzZCxh
M2QpIHsKKyAgICAgIHJldHVybiBjaGVja1BpeGVsKDAsIDAsIHIzZCwgZzNkLCBiM2QsIGEzZCkg
JiYKKyAgICAgICAgICAgICBjaGVja1BpeGVsKDAsIDM5LCByM2QsIGczZCwgYjNkLCBhM2QpICYm
CisgICAgICAgICAgICAgY2hlY2tQaXhlbCgzOSwgMCwgcjNkLCBnM2QsIGIzZCwgYTNkKSAmJgor
ICAgICAgICAgICAgIGNoZWNrUGl4ZWwoMzksIDM5LCByM2QsIGczZCwgYjNkLCBhM2QpICYmCisg
ICAgICAgICAgICAgY2hlY2tQaXhlbCgwLCAwLCByM2QsIGczZCwgYjNkLCBhM2QpOworICAgIH07
CisKKyAgICAvLyBTZXQgdG8ganVzdCB0YWtlIHRoZSBjb2xvciBmcm9tIHRoZSAzZCBjYW52YXMK
KyAgICBjdHgyZC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnY29weSc7CisKKyAgICAvLyBm
aWxsIDJkIGNhbnZhcyB3aXRoIG9yYW5nZQorICAgIGN0eDJkLmZpbGxTdHlsZSA9ICJyZ2IoMjU1
LDE5MiwxMjgpIjsKKyAgICBjdHgyZC5maWxsUmVjdCAoMCwgMCwgNDAsIDQwKTsKKworICAgIC8v
IGdldCB0aGUgaW1hZ2UgZGF0YQorICAgIHZhciBpbWdEYXRhID0gY3R4MmQuZ2V0SW1hZ2VEYXRh
KDAsIDAsIDQwLCA0MCk7CisKKyAgICAvLyBjaGVjayBpdCBnb3QgY2xlYXJlZC4KKyAgICBpZiAo
IWNoZWNrUGl4ZWxzKDI1NSwgMTkyLCAxMjgsIDI1NSkpIHsKKyAgICAgIHRlc3RGYWlsZWQoInVu
YWJsZSB0byBmaWxsIDJkIGNvbnRleHQuIik7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gZHJhdyAzZCBjYW52YXMgb24gdG9wLgorICAgIGN0eDJkLmRyYXdJbWFnZShjYW52YXMsIDAs
MCwgNDAsIDQwKTsKKworICAgIC8vIGdldCB0aGUgaW1hZ2UgZGF0YQorICAgIHZhciBpbWdEYXRh
ID0gY3R4MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDQwLCA0MCk7CisKKyAgICAvLyBDaGVjayBpdCdz
IHRoZSBleHBlY3RlZCBjb2xvci4KKyAgICBpZiAoIWNoZWNrUGl4ZWxzKHIzZCwgZzNkLCBiM2Qs
IGEzZCkpIHsKKyAgICAgdGVzdEZhaWxlZCgicGl4ZWxzIGFyZSAiICsgcjJkICsgIiwiICsgZzJk
ICsgIiwiICsgYjJkICsgIiwiICsgYTJkICsKKyAgICAgICAgICAgICAgICAiIGV4cGVjdGVkICIg
KyByM2QgKyAiLCIgKyBnM2QgKyAiLCIgKyBiM2QgKyAiLCIgKyBhM2QpOworICAgIH0gZWxzZSB7
CisgICAgICB0ZXN0UGFzc2VkKCJwaXhlbHMgYXJlICIgKyByM2QgKyAiLCIgKyBnM2QgKyAiLCIg
KyBiM2QgKyAiLCIgKyBhM2QpOworICAgIH0KKyAgfQorCisgIGNoZWNrQ2FudmFzQ29udGVudElz
KDAsIDAsIDAsIDApOworICBzaG91bGRCZSgnZ2V0Vmlld3BvcnQoKScsICciMCwwLDMwMCwxNTAi
Jyk7CisKKyAgLy8gQ2hhbmdlIHRoZSBkaXNwbGF5IHNpemUgb2YgdGhlIGNhbnZhcyBhbmQgY2hl
Y2sKKyAgLy8gdGhlIHZpZXdwb3J0IHNpemUgZG9lcyBub3QgY2hhbmdlLgorICBkZWJ1ZygiIik7
CisgIGRlYnVnKCJjaGFuZ2UgZGlzcGxheSBzaXplIG9mIGNhbnZhcyBhbmQgc2VlIHRoYXQgdmll
d3BvcnQgZG9lcyBub3QgY2hhbmdlIik7CisgIGNhbnZhcy5zdHlsZS53aWR0aCA9ICIxMDBweCI7
CisgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSAiMjVweCI7CisgIHZhciBpbnRlcnZhbElkOworICBp
bnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgIGlmIChjYW52
YXMuY2xpZW50V2lkdGggPT0gMTAwICYmCisgICAgICAgIGNhbnZhcy5jbGllbnRIZWlnaHQgPT0g
MjUpIHsKKyAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAgc2hv
dWxkQmUoJ2dldFZpZXdwb3J0KCknLCAnIjAsMCwzMDAsMTUwIicpOworICAgICAgc2hvdWxkQmUo
J2NhbnZhcy53aWR0aCcsICczMDAnKTsKKyAgICAgIHNob3VsZEJlKCdjYW52YXMuaGVpZ2h0Jywg
JzE1MCcpOworCisgICAgICAvLyBDaGFuZ2UgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjYW52YXMK
KyAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHZpZXdwb3J0IGRvZXMgbm90IGNoYW5nZS4KKyAgICAg
IC8vIENoZWNrIHRoYXQgdGhlIGNsZWFyIGNvbG9yIGRvZXMgbm90IGNoYW5nZS4KKyAgICAgIC8v
IENoZWNrIHRoYXQgdGhlIGNvbG9yIG1hc2sgZG9lcyBub3QgY2hhbmdlLgorICAgICAgZGVidWco
IiIpOworICAgICAgZGVidWcoImNoYW5nZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGNhbnZhcyBh
bmQgc2VlIHRoYXQgdGhlIHZpZXdwb3J0IGRvZXMgbm90IGNoYW5nZSIpOworICAgICAgZ2wuY2xl
YXJDb2xvcigwLjI1LCAwLjUsIDAuNzUsIDEpOworICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgY2hlY2tDYW52YXNDb250ZW50
SXMoNjQsIDEyOCwgMTkyLCAyNTUpOworICAgICAgZ2wuY29sb3JNYXNrKDAsMCwwLDApOworICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJObyBHTCBlcnJvcnMgYmVm
b3JlIHJlc2l6aW5nIHRoZSBjYW52YXMiKTsKKyAgICAgIGNhbnZhcy53aWR0aCA9IDQwMDsKKyAg
ICAgIGNhbnZhcy5oZWlnaHQgPSAxMDsKKyAgICAgIGVyciA9IGdsLmdldEVycm9yKCk7CisgICAg
ICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBtaWdodCBsb3N0IHRoZSBjb250ZXh0IHdoZW4gcmVz
aXppbmcKKyAgICAgIGlmIChlcnIgIT0gZ2wuQ09OVEVYVF9MT1NUX1dFQkdMKSB7CisgICAgICAg
IHNob3VsZEJlKCJlcnIiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICAgICAgdmFyIHYgPSBnbC5nZXRQ
YXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgICAgICBhc3NlcnRNc2coaXNBYm91
dEVxdWFsKHZbMF0sIDAuMjUpICYmCisgICAgICAgICAgICAgICAgICBpc0Fib3V0RXF1YWwodlsx
XSwgMC41KSAmJgorICAgICAgICAgICAgICAgICAgaXNBYm91dEVxdWFsKHZbMl0sIDAuNzUpICYm
CisgICAgICAgICAgICAgICAgICBpc0Fib3V0RXF1YWwodlszXSwgMSksCisgICAgICAgICAgICAg
ICAgICAiZ2wuY2xlYXJDb2xvciBzaG91bGQgbm90IGNoYW5nZSBhZnRlciBjYW52YXMgcmVzaXpl
Iik7CisgICAgICAgIHYgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfV1JJVEVNQVNLKTsKKyAg
ICAgICAgYXNzZXJ0TXNnKGlzQWJvdXRFcXVhbCh2WzBdLCAwKSAmJgorICAgICAgICAgICAgICAg
ICAgaXNBYm91dEVxdWFsKHZbMV0sIDApICYmCisgICAgICAgICAgICAgICAgICBpc0Fib3V0RXF1
YWwodlsyXSwgMCkgJiYKKyAgICAgICAgICAgICAgICAgIGlzQWJvdXRFcXVhbCh2WzNdLCAwKSwK
KyAgICAgICAgICAgICAgICAgICJnbC5jb2xvck1hc2sgc2hvdWxkIG5vdCBjaGFuZ2UgYWZ0ZXIg
Y2FudmFzIHJlc2l6ZSIpOworICAgICAgICBzaG91bGRCZSgnZ2V0Vmlld3BvcnQoKScsICciMCww
LDMwMCwxNTAiJyk7CisgICAgICAgIGNoZWNrQ2FudmFzQ29udGVudElzKDAsIDAsIDAsIDApOwor
ICAgICAgfQorCisgICAgICBkZWJ1ZygiIik7CisgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfQor
ICAgfSwgMTAwMC8zMCk7Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvY2FudmFzL2NhbnZhcy16ZXJvLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtemVyby1z
aXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg1YTczZDM0MjI5NTQ1Y2ZhNGE0NTMyOTdjOTMxOWI0ZTIw
OGNmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtemVyby1zaXplLmh0bWwKQEAg
LTAsMCArMSw0MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorICAgIDx0aXRsZT5aZXJvIFNpemUgQ2FudmFzIFRlc3Q8L3RpdGxlPgorICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCBhIHplcm8gc2l6ZSBjYW52YXMgZG9lcyBub3QgZmFpbC4iKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjYW52YXMnKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2NhbnZh
cy53aWR0aCA9IDA7CitjYW52YXMuaGVpZ2h0ID0gMDsKK2dsLnZpZXdwb3J0KDAsIDAsIDAsIDAp
OwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworc2hvdWxkQmVUcnVl
KCJwcm9ncmFtICE9IG51bGwiKTsKK3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwordmFyIHBpeGVsID0gbmV3IFVpbnQ4QXJy
YXkoWzAsIDI1NSwgMCwgMjU1XSk7CitnbC50ZXhJbWFnZTJEKAorICBnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbCk7Cit3
dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvY2FudmFzL2RyYXctc3RhdGljLXdlYmdsLXRvLW11bHRpcGxlLWNhbnZhcy10ZXN0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9jYW52YXMvZHJhdy1zdGF0aWMtd2ViZ2wtdG8tbXVsdGlwbGUtY2FudmFzLXRlc3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZTdhMmU2ZjU0NmNjMTI5OGJlMTM3MzY5N2Q2M2Q0N2E4ZGNlYTEzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvY2FudmFzL2RyYXctc3RhdGljLXdlYmdsLXRvLW11bHRpcGxlLWNhbnZh
cy10ZXN0Lmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ2FudmFzIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhczJkXzAiIHdpZHRoPSIx
MjgiIGhlaWdodD0iMTI4Ij4gPC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyZF8xIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMmRfMiIg
d2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9IndlYmdsIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIFdlYkdMIGltcGxlbWVudGF0aW9u
cyBpbnRlcmFjdCBjb3JyZWN0bHkgd2l0aCB0aGUgY2FudmFzIDJEIGRyYXdJbWFnZSBjYWxsIHdo
ZW4gZHJhd2luZyB0aGUgc2FtZSBjb250ZW50LiIpOworCit2YXIgZXJyOwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworCit2YXIgY2FudmFzMmQgPSBbXTsKK3ZhciBjdHgyZCA9IFtdOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAzOyBpICsrKSB7CisgIGNhbnZhczJkW2ldID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhczJkXyIgKyBpKTsKKyAgY3R4MmRbaV0gPSBjYW52YXMyZFtpXS5n
ZXRDb250ZXh0KCIyZCIpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIndlYmdsIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CitpZiAo
IWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIkNoZWNraW5nIGRy
YXdpbmcgdGhlIHNhbWUgV2ViR0wgY29udGVudCB0byBIVyBhY2NlbGVyYXRlZCBjYW52YXMgYW5k
IFNXIENhbnZhc2VzIik7CisgIGRlYnVnKCIiKTsKKyAgdmFyIGNvbG9yID0gW1swLjI1LCAwLjUs
IDAuNzUsIDFdLCBbMSwgMCwgMCwgMV0sIFsxLCAwLCAxLCAxXV07CisgIHZhciBjb2xvclZhbHVl
ID0gW1s2NCwgMTI4LCAxOTIsIDI1NV0sIFsyNTUsIDAsIDAsIDI1NV0sIFsyNTUsIDAsIDI1NSwg
MjU1XV07CisgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQgPCAxMDsgY291bnQgKyspIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgZ2wuY2xlYXJDb2xvcihjb2xv
cltpXVswXSwgY29sb3JbaV1bMV0sIGNvbG9yW2ldWzJdLCBjb2xvcltpXVszXSk7CisgICAgICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAg
ICBjdHgyZFswXS5kcmF3SW1hZ2UoY2FudmFzLCAwLCAwLCBjYW52YXMyZFswXS53aWR0aCwgY2Fu
dmFzMmRbMF0uaGVpZ2h0KTsKKyAgICAgIGN0eDJkWzFdLmRyYXdJbWFnZShjYW52YXMsIDAsIDAs
IGNhbnZhczJkWzFdLndpZHRoLCBjYW52YXMyZFsxXS5oZWlnaHQpOworICAgICAgY3R4MmRbMl0u
ZHJhd0ltYWdlKGNhbnZhcywgMCwgMCwgY2FudmFzMmRbMl0ud2lkdGgsIGNhbnZhczJkWzJdLmhl
aWdodCk7CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGN0eDJkWzBdLCAwLCAwLCBjYW52YXMy
ZFswXS53aWR0aCwgY2FudmFzMmRbMF0uaGVpZ2h0LCBjb2xvclZhbHVlW2ldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZHJhd0ltYWdlOiBTaG91bGQgYmUgKCIgKyBjb2xvclZhbHVlW2ld
WzBdICsgIiwiICsgY29sb3JWYWx1ZVtpXVsxXSArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIsIiArIGNvbG9yVmFsdWVbaV1bMl0gKyAiLCIgKyBjb2xvclZhbHVlW2ldWzNdICsgIikuIiwg
Mik7CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGN0eDJkWzFdLCAwLCAwLCBjYW52YXMyZFsx
XS53aWR0aCwgY2FudmFzMmRbMV0uaGVpZ2h0LCBjb2xvclZhbHVlW2ldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZHJhd0ltYWdlOiBTaG91bGQgYmUgKCIgKyBjb2xvclZhbHVlW2ldWzBd
ICsgIiwiICsgY29sb3JWYWx1ZVtpXVsxXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIs
IiArIGNvbG9yVmFsdWVbaV1bMl0gKyAiLCIgKyBjb2xvclZhbHVlW2ldWzNdICsgIikuIiwgMik7
CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGN0eDJkWzJdLCAwLCAwLCBjYW52YXMyZFsyXS53
aWR0aCwgY2FudmFzMmRbMl0uaGVpZ2h0LCBjb2xvclZhbHVlW2ldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZHJhd0ltYWdlOiBTaG91bGQgYmUgKCIgKyBjb2xvclZhbHVlW2ldWzBdICsg
IiwiICsgY29sb3JWYWx1ZVtpXVsxXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIiAr
IGNvbG9yVmFsdWVbaV1bMl0gKyAiLCIgKyBjb2xvclZhbHVlW2ldWzNdICsgIikuIiwgMik7Cisg
ICAgfQorICB9CisKKyAgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgZGVidWcoIiIpOworfQorZmlu
aXNoVGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2Nh
bnZhcy9kcmF3LXdlYmdsLXRvLWNhbnZhcy10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy13ZWJnbC10
by1jYW52YXMtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MDA3Y2ZlNTBlODhhMDliYmM5YzFlY2Ew
NzY0MzAzNjRhYmM4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy13ZWJnbC10by1j
YW52YXMtdGVzdC5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENhbnZhcyBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMyZF8wIiB3aWR0
aD0iNDAwIiBoZWlnaHQ9IjQwMCI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMmRfMSIg
d2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczJk
XzIiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj4gPC9jYW52YXM+Cis8Y2FudmFzIGlkPSJ3ZWJn
bCIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXBsZW1lbnRh
dGlvbnMgaW50ZXJhY3QgY29ycmVjdGx5IHdpdGggdGhlIGNhbnZhcyAyRCBkcmF3SW1hZ2UgY2Fs
bC4iKTsKKwordmFyIGVycjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIGNhbnZh
czJkID0gW107Cit2YXIgY3R4MmQgPSBbXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSArKykg
eworICBjYW52YXMyZFtpXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMyZF8iICsg
aSk7CisgIGN0eDJkW2ldID0gY2FudmFzMmRbaV0uZ2V0Q29udGV4dCgiMmQiKTsKK30KKwordmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3ZWJnbCIpOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250
ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4
aXN0cyIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIkNoZWNraW5nIGNhbnZhcyBhbmQgV2Vi
R0wgZHJhd0ltYWdlIGludGVyYWN0aW9uIik7CisgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQg
PCAxMDsgY291bnQgKyspIHsKKyAgICBnbC5jbGVhckNvbG9yKDAuMjUsIDAuNSwgMC43NSwgMSk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgIGN0eDJkWzBdLmRyYXdJbWFnZShjYW52YXMsIDAsIDAsIGNhbnZhczJkWzBdLndpZHRo
LCBjYW52YXMyZFswXS5oZWlnaHQpOworCisgICAgZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsK
KyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7
CisgICAgY3R4MmRbMV0uZHJhd0ltYWdlKGNhbnZhcywgMCwgMCwgY2FudmFzMmRbMV0ud2lkdGgs
IGNhbnZhczJkWzFdLmhlaWdodCk7CisKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDEsIDEpOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsK
KyAgICBjdHgyZFsyXS5kcmF3SW1hZ2UoY2FudmFzLCAwLCAwLCBjYW52YXMyZFsyXS53aWR0aCwg
Y2FudmFzMmRbMl0uaGVpZ2h0KTsKKworICAgIGdsLmNsZWFyQ29sb3IoMSwgMSwgMCwgMSk7Cisg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwor
CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgyZFswXSwgMCwgMCwgY2FudmFzMmRbMF0ud2lk
dGgsIGNhbnZhczJkWzBdLmhlaWdodCwgWzY0LCAxMjgsIDE5MiwgMjU1XSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJkcmF3SW1hZ2U6IFNob3VsZCBiZSBbNjQsIDEyOCwgMTkyLCAyNTVdIiwg
Mik7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgyZFsxXSwgMCwgMCwgY2FudmFzMmRbMV0u
d2lkdGgsIGNhbnZhczJkWzFdLmhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJkcmF3SW1hZ2U6IFNob3VsZCBiZSBbMjU1LCAwLCAwLCAyNTVdIiwgMik7
CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgyZFsyXSwgMCwgMCwgY2FudmFzMmRbMl0ud2lk
dGgsIGNhbnZhczJkWzJdLmhlaWdodCwgWzI1NSwgMCwgMjU1LCAyNTVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgImRyYXdJbWFnZTogU2hvdWxkIGJlIFsyNTUsIDAsIDI1NSwgMjU1XSIsIDIp
OworICB9CisKKyAgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgZGVidWcoIiIpOworfQorZmluaXNo
VGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZh
cy9kcmF3aW5nYnVmZmVyLWhkLWRwaS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJhd2luZ2J1ZmZlci1o
ZC1kcGktdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZWRlYWNjMGYyNzU0NGUyMmYxYzg1MTYzNjFh
Njk3ZmIwOTM1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJhd2luZ2J1ZmZlci1oZC1k
cGktdGVzdC5odG1sCkBAIC0wLDAgKzEsMjA0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBEcmF3aW5nQnVmZmVyIGRpbWVuc2lv
bnMgb24gSEQtRFBJIG1hY2hpbmVzIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0idnNoYWRlckdyaWQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2
ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlckdyaWQiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQor
eworICBmbG9hdCByID0gbW9kKGdsX0ZyYWdDb29yZC54LCAyLjApIDwgMS4wID8gMC4wIDogMS4w
OworICBmbG9hdCBnID0gbW9kKGdsX0ZyYWdDb29yZC55LCAyLjApIDwgMS4wID8gMC4wIDogMS4w
OworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHIsIGcsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIGds
OwordmFyIGNhbnZhczsKKworZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKCkgeworICAvLyBXZSBl
eHBlY3QgdGhhdCBmb3IgdGhlIHNpemVzIGJlaW5nIHRlc3RpbmcgZHJhd2luZ0J1ZmZlcldpZHRo
IGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0CisgIC8vIHdpbGwgbWF0Y2ggY2FudmFzLndpZHRoIGFu
ZCBjYW52YXMuaGVpZ2h0LgorCisgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGF0IGRldmljZVBpeGVs
UmF0aW8gZG9lcyBub3QgZWZmZWN0IHRoZSBiYWNrYnVmZmVyIHNpemUgb2YgYSBjYW52YXMuCisg
IHNob3VsZEJlKCdnbC5kcmF3aW5nQnVmZmVyV2lkdGgnLCAnY2FudmFzLndpZHRoJyk7CisgIHNo
b3VsZEJlKCdnbC5kcmF3aW5nQnVmZmVySGVpZ2h0JywgJ2NhbnZhcy5oZWlnaHQnKTsKK30KKwor
Ly8gVGhpcyB1c2VzIGdsX0ZyYWdDb29yZCB0byBkcmF3IGEgZGV2aWNlIHBpeGVsIHJlbGF2ZW50
IHBhdHRlcm4uCisvLyBJZiBkcmF3QnVmZmVyV2lkdGggb3IgZHJhd0J1ZmZlckhlaWdodCBhcmUg
bm90IGluIGRldmljZSBwaXhlbHMKKy8vIHRoaXMgdGVzdCBzaG91bGQgZmFpbC4KK2Z1bmN0aW9u
IGNoZWNrR3JpZChnbCwgd2lkdGgsIGhlaWdodCkgeworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1
cFByb2dyYW0oZ2wsIFsidnNoYWRlckdyaWQiLCAiZnNoYWRlckdyaWQiXSwgWyJhX3Bvc2l0aW9u
Il0pOworICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7
CisgIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisKKyAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICB2YXIgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXko
d2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbHMpOworCisgIHZhciBjb2xvcnMgPSBb
CisgICAgWyB7IGNvbG9yOiBbMCwgICAwLCAwLCAyNTVdLCBuYW1lOiAiYmxhY2siIH0sICB7IGNv
bG9yOiBbMjU1LCAgIDAsIDAsIDI1NV0sIG5hbWU6ICJyZWQiICAgIH0gXSwKKyAgICBbIHsgY29s
b3I6IFswLCAyNTUsIDAsIDI1NV0sIG5hbWU6ICJncmVlbiIgfSwgIHsgY29sb3I6IFsyNTUsIDI1
NSwgMCwgMjU1XSwgbmFtZTogInllbGxvdyIgfSBdLAorICBdOworCisgIGZvciAodmFyIHl5ID0g
MDsgeXkgPCBoZWlnaHQ7ICsreXkpIHsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgd2lkdGg7
ICsreHgpIHsKKyAgICAgIHZhciBpbmZvID0gY29sb3JzW3l5ICUgMl1beHggJSAyXTsKKyAgICAg
IHZhciBjb2xvciA9IGluZm8uY29sb3I7CisgICAgICB2YXIgb2Zmc2V0ID0gKHl5ICogd2lkdGgg
KyB4eCkgKiA0OworICAgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IDQ7ICsramopIHsKKyAgICAg
ICAgaWYgKHBpeGVsc1tvZmZzZXQgKyBqal0gIT0gY29sb3JbampdKSB7CisgICAgICAgICAgdmFy
IGFjdHVhbCA9IFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zm
c2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgICAgdGVzdEZhaWxlZCgiYXQg
IiArIHh4ICsgIiwgIiArIHl5ICsgIiBleHBlY3RlZCAiICsgY29sb3IgKyAiKCIgKyBpbmZvLm5h
bWUgKyAiKSB3YXMgIiArIGFjdHVhbCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQoImdyaWQgcmVuZGVyZWQgY29ycmVjdGx5
Iik7Cit9CisKKy8vIFRoaXMgcGFzc2VzIGRldmljZSBjb29yZGluYXRlIHZlcnRpY2VzIGluIHRv
IG1ha2Ugc3VyZSBnbC52aWV3cG9ydCBpcyBub3QgYmVpbmcgbXVja2VkIHdpdGguCitmdW5jdGlv
biBjaGVja1F1YWQoZ2wsIHdpZHRoLCBoZWlnaHQpIHsKKyAgdmFyIGRldmljZVRvQ2xpcFNwYWNl
ID0gZnVuY3Rpb24odmFsdWUsIHJhbmdlKSB7CisgICAgcmV0dXJuIHZhbHVlIC8gcmFuZ2UgKiAy
IC0gMTsKKyAgfQorCisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKwor
ICAvLyBkcmF3IGEgc21hbGwgZ3JlZW4gc3F1YXJlIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyLgor
ICB2YXIgZGV2aWNlWDEgPSB3aWR0aCAtIDQ7CisgIHZhciBkZXZpY2VYMiA9IHdpZHRoOworICB2
YXIgZGV2aWNlWTEgPSBoZWlnaHQgLSA0OworICB2YXIgZGV2aWNlWTIgPSBoZWlnaHQ7CisKKyAg
dmFyIGNsaXBYMSA9IGRldmljZVRvQ2xpcFNwYWNlKGRldmljZVgxLCB3aWR0aCk7CisgIHZhciBj
bGlwWDIgPSBkZXZpY2VUb0NsaXBTcGFjZShkZXZpY2VYMiwgd2lkdGgpOworICB2YXIgY2xpcFkx
ID0gZGV2aWNlVG9DbGlwU3BhY2UoZGV2aWNlWTEsIGhlaWdodCk7CisgIHZhciBjbGlwWTIgPSBk
ZXZpY2VUb0NsaXBTcGFjZShkZXZpY2VZMiwgaGVpZ2h0KTsKKworICB2YXIgdmVydGV4T2JqZWN0
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0ZXhPYmplY3QpOworICBnbC5idWZmZXJEYXRhKAorICAgICAgZ2wuQVJSQVlfQlVGRkVSLAor
ICAgICAgbmV3IEZsb2F0MzJBcnJheSgKKyAgICAgICAgWyBjbGlwWDIsIGNsaXBZMiwKKyAgICAg
ICAgICBjbGlwWDEsIGNsaXBZMiwKKyAgICAgICAgICBjbGlwWDEsIGNsaXBZMSwKKyAgICAgICAg
ICBjbGlwWDIsIGNsaXBZMiwKKyAgICAgICAgICBjbGlwWDEsIGNsaXBZMSwKKyAgICAgICAgICBj
bGlwWDIsIGNsaXBZMV0pLAorICAgICAgZ2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOworCisgIHZhciBncmVlbiA9IFswLCAyNTUsIDAsIDI1NV07CisgIHZh
ciBibGFjayA9IFswLCAwLCAwLCAwXTsKKyAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAg
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIHd0dS5kcmF3VUJ5dGVDb2xvclF1YWQo
Z2wsIFswLCAyNTUsIDAsIDI1NV0pOworCisgIHZhciBzcXVhcmVXaWR0aCA9IGRldmljZVgyIC0g
ZGV2aWNlWDE7CisgIHZhciBzcXVhcmVIZWlnaHQgPSBkZXZpY2VZMiAtIGRldmljZVkxOworCisg
IC8vIGNoZWNrIHRoZSBzcXVhcmUuCisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGRldmljZVgx
LCBkZXZpY2VZMSwgc3F1YXJlV2lkdGgsIHNxdWFyZUhlaWdodCwgZ3JlZW4sICJzaG91bGQgYmUg
Z3JlZW4iKTsKKyAgLy8gY2hlY2sgb3V0c2lkZSB0aGUgc3F1YXJlLgorICB3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0gc3F1YXJlSGVpZ2h0LCBibGFjaywgInNo
b3VsZCBiZSBibGFjayIpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCBoZWlnaHQgLSBz
cXVhcmVIZWlnaHQsIHdpZHRoIC0gc3F1YXJlV2lkdGgsIHNxdWFyZUhlaWdodCwgYmxhY2ssICJz
aG91bGQgYmUgYmxhY2siKTsKK30KKworCitmdW5jdGlvbiB0ZXN0KGRlc2lyZWRXaWR0aCwgZGVz
aXJlZEhlaWdodCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0aW5nIGNhbnZhcyB3aWR0
aCA9ICIgKyBkZXNpcmVkV2lkdGggKyAiLCBoZWlnaHQgPSAiICsgZGVzaXJlZEhlaWdodCk7CisK
KyAgLy8gTWFrZSBhIGZyZXNoIGNhbnZhcy4KKyAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CisgIGNhbnZhcy53aWR0aCA9IGRlc2lyZWRXaWR0aDsKKyAgY2FudmFz
LmhlaWdodCA9IGRlc2lyZWRIZWlnaHQ7CisKKyAgLy8gVGhpcyAnZ2wnIG11c3QgYmUgZ2xvYmFs
IGZvciBzaG91bGRCZSB0byB3b3JrLgorICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
LCB7YW50aWFsaWFzOiBmYWxzZX0pOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImNvbnRl
eHQgZXhpc3RzIik7CisKKyAgICAvLyBDaGVjayB0aGUgZGltZW5zaW9ucyBhcmUgY29ycmVjdC4K
KyAgICBjaGVja0RpbWVuc2lvbnMoKTsKKworICAgIC8vIERyYXcgYSBwaXhlbCBncmlkIHVzaW5n
IGEgc2hhZGVyIHRoYXQgZHJhd3MgaW4gZGV2aWNlIGNvb3JkaW5hdGVzCisgICAgY2hlY2tHcmlk
KGdsLCBkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQpOworCisgICAgLy8gRHJhdyBhIHF1YWQg
aW4gdGhlIHRvcCByaWdodCBjb3JuZXIuCisgICAgY2hlY2tRdWFkKGdsLCBkZXNpcmVkV2lkdGgs
IGRlc2lyZWRIZWlnaHQpOworCisgICAgc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnZ2wuTk9f
RVJST1InKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGluZyByZXNpemluZyBj
YW52YXMgdG8gd2lkdGggPSAiICsgZGVzaXJlZFdpZHRoICsgIiwgaGVpZ2h0ID0gIiArIGRlc2ly
ZWRIZWlnaHQpOworCisgICAgdmFyIG9sZFZpZXdwb3J0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJ
RVdQT1JUKTsKKworICAgIC8vIGZsaXAgd2lkdGggYW5kIGhlaWdodAorICAgIGNhbnZhcy53aWR0
aCA9IGRlc2lyZWRIZWlnaHQ7CisgICAgY2FudmFzLmhlaWdodCA9IGRlc2lyZWRXaWR0aDsKKwor
ICAgIC8vIGZpeCB0aGUgdmlld3BvcnQKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBkZXNpcmVkSGVp
Z2h0LCBkZXNpcmVkV2lkdGgpOworCisgICAgLy8gQ2hlY2sgdGhlIGRpbWVuc2lvbnMgYXJlIGNv
cnJlY3QuCisgICAgY2hlY2tEaW1lbnNpb25zKCk7CisKKyAgICAvLyBEcmF3IGEgcGl4ZWwgZ3Jp
ZCB1c2luZyBhIHNoYWRlciB0aGF0IGRyYXdzIGluIGRldmljZSBjb29yZGluYXRlcworICAgIGNo
ZWNrR3JpZChnbCwgZGVzaXJlZEhlaWdodCwgZGVzaXJlZFdpZHRoKTsKKworICAgIC8vIERyYXcg
YSBxdWFkIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyLgorICAgIGNoZWNrUXVhZChnbCwgZGVzaXJl
ZEhlaWdodCwgZGVzaXJlZFdpZHRoKTsKKworICAgIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywg
J2dsLk5PX0VSUk9SJyk7CisgIH0KK30KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisv
LyB0ZXN0IGEgZmV3IHNpemVzCit0ZXN0KDMyLCAxNik7Cit0ZXN0KDEyOCwgNjQpOwordGVzdCgy
NTYsIDUxMik7CisKK2RlYnVnKCIiKQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL2RyYXdpbmdidWZmZXItc3Rh
dGljLWNhbnZhcy10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJhd2luZ2J1ZmZlci1zdGF0aWMtY2FudmFz
LXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmZmYjMyMTk0ZDBkNjhmMTZhMzNhNTFjYjQ5M2MzYWVh
MDM3MDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL2RyYXdpbmdidWZmZXItc3RhdGljLWNh
bnZhcy10ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENhbnZhcyBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCI+IDwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4o
KQoreworICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0
IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpCit7
CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLDAuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBkcmF3VHJpYW5nbGVUZXN0KGds
KQoreworICB2YXIgd2lkdGggPSA1MDsKKyAgdmFyIGhlaWdodCA9IDUwOworICBnbC52aWV3cG9y
dCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsK
KyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAu
NSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAz
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMs
IDAsIDMpOworCisgIC8vIFRlc3Qgc2V2ZXJhbCBsb2NhdGlvbnMKKyAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgMCwgd2lkdGgsIDEsIFswLCAwLCAwLCAyNTVdLAorICAgICAgJ0ZpcnN0IGxp
bmUgc2hvdWxkIGJlIGFsbCBibGFjaycpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAyMCwg
MTUsIDEwLCAxLCBbMjU1LCAwLCAwLCAyNTVdLAorICAgICAgJ0xpbmUgMTUgc2hvdWxkIGJlIHJl
ZCBmb3IgYXQgbGVhc3QgMTAgcmVkIHBpeGVscyBzdGFydGluZyAyMCBwaXhlbHMgaW4nKTsKKyAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgaGVpZ2h0IC0gMSwgd2lkdGgsIDEsIFswLCAwLCAw
LCAyNTVdLAorICAgICAgJ0xhc3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgY29ycmVj
dGx5IGltcGxlbWVudCBkcmF3aW5nYnVmZmVyV2lkdGgvSGVpZ2h0IHdpdGggY29tcG9zaXRpbmcu
Iik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGVycjsK
K3ZhciBtYXhTaXplOwordmFyIGdsID0gIHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOwor
aWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVs
c2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgIHZhciBwcm9ncmFtID0g
d3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24i
XSk7CisgIHNob3VsZEJlTm9uTnVsbCgicHJvZ3JhbSIpOworICBnbC5lbmFibGUoZ2wuREVQVEhf
VEVTVCk7CisgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiQ2hlY2tp
bmcgZHJhd2luZ0J1ZmZlcldpZHRoL2RyYXdpbmdCdWZmZXJIZWlnaHQiKTsKKworICBzaG91bGRC
ZSgnZ2wuZHJhd2luZ0J1ZmZlcldpZHRoJywgJ2dsLmNhbnZhcy53aWR0aCcpOworICBzaG91bGRC
ZSgnZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCcsICdnbC5jYW52YXMuaGVpZ2h0Jyk7CisKKyAgLy8g
Q2hlY2sgdGhhdCBjaGFuZ2luZyB0aGUgY2FudmFzIHNpemUgdG8gc29tZXRoaW5nIHRvbyBsYXJn
ZSBmYWxscyBiYWNrIHRvIHJlYXNvbmFibGUgdmFsdWVzLgorICBtYXhTaXplID0gZ2wuZ2V0UGFy
YW1ldGVyKGdsLk1BWF9WSUVXUE9SVF9ESU1TKTsKKyAgc2hvdWxkQmVUcnVlKCdtYXhTaXplWzBd
ID4gMCcpOworICBzaG91bGRCZVRydWUoJ21heFNpemVbMV0gPiAwJyk7CisKKyAgLy8gZGVidWco
Ik1BWF9WSUVXUE9SVF9ESU1TID0gIiArIG1heFNpemVbMF0gKyAieCIgKyBtYXhTaXplWzFdKTsK
KyAgZ2wuY2FudmFzLndpZHRoID0gbWF4U2l6ZVswXSAqIDQ7CisgIGdsLmNhbnZhcy5oZWlnaHQg
PSBtYXhTaXplWzFdICogNDsKKyAgc2hvdWxkQmVUcnVlKCdnbC5kcmF3aW5nQnVmZmVyV2lkdGgg
PiAwJyk7CisgIHNob3VsZEJlVHJ1ZSgnZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCA+IDAnKTsKKyAg
c2hvdWxkQmVUcnVlKCdnbC5kcmF3aW5nQnVmZmVyV2lkdGggPD0gbWF4U2l6ZVswXScpOworICBz
aG91bGRCZVRydWUoJ2dsLmRyYXdpbmdCdWZmZXJIZWlnaHQgPD0gbWF4U2l6ZVsxXScpOworICBz
aG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICdnbC5OT19FUlJPUicpOworCisgIGRlYnVnKCIiKTsK
KyAgZGVidWcoIkNoZWNraW5nIHNjYWxpbmcgdXAgdGhlbiBiYWNrIGRvd24gdG8gNTAvNTAsIGRy
YXdpbmcgc3RpbGwgd29ya3MuIik7CisgIGdsLmNhbnZhcy53aWR0aCA9IDUwOworICBnbC5jYW52
YXMuaGVpZ2h0ID0gNTA7CisgIHNob3VsZEJlVHJ1ZSgnZ2wuZHJhd2luZ0J1ZmZlcldpZHRoID09
IDUwJyk7CisgIHNob3VsZEJlVHJ1ZSgnZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCA9PSA1MCcpOwor
ICBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICdnbC5OT19FUlJPUicpOworICBkcmF3VHJpYW5n
bGVUZXN0KGdsKTsKKyAgc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnZ2wuTk9fRVJST1InKTsK
K30KK2RlYnVnKCIiKQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL2RyYXdpbmdidWZmZXItdGVzdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Y2FudmFzL2RyYXdpbmdidWZmZXItdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZjQ1OGU1OWFkYTgz
ZWMwMWM0NGJlZjIwZDliYmJlMWE5YzQ0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvZHJh
d2luZ2J1ZmZlci10ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMTcgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENhbnZhcy5kcmF3aW5n
QnVmZmVyV2lkdGgsZHJhd2luZ0J1ZmZlckhlaWdodCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsK
K2RlYnVnKCIiKTsKKwordmFyIGdsOwordmFyIG9sZFZpZXdwb3J0OworCitmdW5jdGlvbiBnZXRN
YXhWaWV3cG9ydERpbWVuc2lvbnMoKSB7CisgIC8vIGNyZWF0ZSBhIGZyZXNoIGNhbnZhcy4gVGhp
cyBjYW52YXMgd2lsbCBiZSBkaXNjYXJkZWQKKyAgLy8gYWZ0ZXIgZXhpdGluZyB0aGlzIGZ1bmN0
aW9uLgorICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Cisg
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7Cisg
IGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cisg
ICAgcmV0dXJuIFswLCAwXTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4
aXN0cyIpOworCisgICAgLy8gRm9yIGEgZGVmYXVsdCBzaXplIGNhbnZhcyB0aGVzZSBzaG91bGQg
YmUgZXF1YWwuCisgICAgLy8gV2ViR0wgY29udGV4dHMgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5n
ZSB0aGUgc2l6ZSBvZiB0aGUgZHJhd2luZ0J1ZmZlcgorICAgIC8vIGZvciB0aGluZ3MgbGlrZSBo
aS1yZXMgZGlzcGxheXMuCisgICAgc2hvdWxkQmUoJ2dsLmRyYXdpbmdCdWZmZXJXaWR0aCcsICdn
bC5jYW52YXMud2lkdGgnKTsKKyAgICBzaG91bGRCZSgnZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCcs
ICdnbC5jYW52YXMuaGVpZ2h0Jyk7CisgICAgcmV0dXJuIGdsLmdldFBhcmFtZXRlcihnbC5NQVhf
VklFV1BPUlRfRElNUyk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdChkZXNpcmVkV2lkdGgsIGRl
c2lyZWRIZWlnaHQpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdGluZyBjYW52YXMgd2lk
dGggPSAiICsgZGVzaXJlZFdpZHRoICsgIiwgaGVpZ2h0ID0gIiArIGRlc2lyZWRIZWlnaHQpOwor
CisgIC8vIE1ha2UgYSBmcmVzaCBjYW52YXMuCisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgY2FudmFzLndpZHRoID0gZGVzaXJlZFdpZHRoOworICBj
YW52YXMuaGVpZ2h0ID0gZGVzaXJlZEhlaWdodDsKKworICAvLyBUaGlzICdnbCcgbXVzdCBiZSBn
bG9iYWwgZm9yIHNob3VsZEJlIHRvIHdvcmsuCisgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVk
KCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgi
Y29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFZlcmlmeSB0aGVzZSBzdGF0cyBkaWRuJ3QgY2hh
bmdlIHNpbmNlIHRoZXkgY29tZSBmcm9tIGEgZGlmZmVyZW50CisgICAgLy8gY29udGV4dC4KKyAg
ICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WSUVXUE9SVF9ESU1TKVswXScsICdt
YXhTaXplWzBdJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5NQVhfVklFV1BP
UlRfRElNUylbMV0nLCAnbWF4U2l6ZVsxXScpOworCisgICAgLy8gY2hlY2sgdGhlIGluaXRpYWwg
dmlld3BvcnQgbWF0Y2hlcyB0aGUgZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVy
SGVpZ2h0CisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5WSUVXUE9SVClbMF0nLCAn
MCcpOworICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuVklFV1BPUlQpWzFdJywgJzAn
KTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJRVdQT1JUKVsyXScsICdnbC5k
cmF3aW5nQnVmZmVyV2lkdGgnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJ
RVdQT1JUKVszXScsICdnbC5kcmF3aW5nQnVmZmVySGVpZ2h0Jyk7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInRlc3RpbmcgcmVzaXppbmcgY2FudmFzIHRvIHdpZHRoID0gIiArIGRlc2ly
ZWRXaWR0aCArICIsIGhlaWdodCA9ICIgKyBkZXNpcmVkSGVpZ2h0KTsKKworICAgIG9sZFZpZXdw
b3J0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJRVdQT1JUKTsKKworICAgIC8vIGZsaXAgd2lkdGgg
YW5kIGhlaWdodAorICAgIGNhbnZhcy53aWR0aCA9IGRlc2lyZWRIZWlnaHQ7CisgICAgY2FudmFz
LmhlaWdodCA9IGRlc2lyZWRXaWR0aDsKKworICAgIC8vIFZlcmlmeSB0aGUgdmlld3BvcnQgZGlk
bid0IGNoYW5nZS4KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJRVdQT1JUKVsw
XScsICdvbGRWaWV3cG9ydFswXScpOworICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wu
VklFV1BPUlQpWzFdJywgJ29sZFZpZXdwb3J0WzFdJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFBh
cmFtZXRlcihnbC5WSUVXUE9SVClbMl0nLCAnb2xkVmlld3BvcnRbMl0nKTsKKyAgICBzaG91bGRC
ZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlZJRVdQT1JUKVszXScsICdvbGRWaWV3cG9ydFszXScpOwor
CisgICAgLy8gZml4IHRoZSB2aWV3cG9ydAorLy8gICAgZ2wudmlld3BvcnQoMCwgMCwgZ2wuZHJh
d2luZ0J1ZmZlcldpZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0KTsKKworICAgIHNob3VsZEJl
KCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisgIH0KK30KKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIG1heFNpemUgPSBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbnMoKTsK
K2RlYnVnKCJNQVhfVklFV1BPUlRfRElNUzogIiArIG1heFNpemVbMF0gKyAiLCAiICsgbWF4U2l6
ZVsxXSk7CisKK3Nob3VsZEJlVHJ1ZSgnbWF4U2l6ZVswXSA+IDAnKTsKK3Nob3VsZEJlVHJ1ZSgn
bWF4U2l6ZVsxXSA+IDAnKTsKKworLy8gdGVzdCBhIHNtYWxsIHNpemUgdG8gbWFrZSBzdXJlIGl0
IHdvcmtzIGF0IGFsbC4KK3Rlc3QoMTYsIDMyKTsKKworLy8gTWFrZSBhIGNhbnZhcyBzbGlnaHRs
eSBsYXJnZXIgdGhhbiB0aGUgbWF4IHNpemUgV2ViR0wgY2FuIGhhbmRsZS4KKy8vIEZyb20gc2Vj
dGlvbiAyLjIgb2YgdGhlIHNwZWMgdGhlIFdlYkdMIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbGxv
dyB0aGlzIHRvIHdvcmsuCisKKy8vIHRlc3QgYSBzaXplIGxhcmdlciB0aGFuIE1BWF9WSUVXUE9S
VF9ESU1TIGluIGJvdGggZGltZW5zaW9ucwordGVzdChtYXhTaXplWzBdICsgMzIsIDgpOworCitk
ZWJ1ZygiIikKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9mcmFtZWJ1ZmZlci1iaW5kaW5ncy1hZmZlY3RlZC1i
eS10by1kYXRhLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL2ZyYW1lYnVmZmVyLWJpbmRpbmdzLWFmZmVjdGVk
LWJ5LXRvLWRhdGEtdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMyMWFjYTJhYjU2M2U3MmQzZmVkOWZj
Zjk0ZWQwMjhmY2RkNjdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9mcmFtZWJ1ZmZlci1i
aW5kaW5ncy1hZmZlY3RlZC1ieS10by1kYXRhLXVybC5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlZlcmlm
aWVzIHRoYW4gR0wgZnJhbWVidWZmZXIgYmluZGluZ3MgZG8gbm90IGNoYW5nZSBieSB0b0RhdGFV
UkwoKTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCJWZXJpZmllcyB0aGFuIEdMIGZyYW1lYnVmZmVyIGJpbmRpbmdzIGRvIG5vdCBjaGFu
Z2UgYnkgdG9EYXRhVVJMKCkiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZnVuY3Rp
b24gdGVzdCgpIHsKKyAgdmFyIGdsQ2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4
YW1wbGUiKTsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChnbENhbnZhcywge3ByZXNl
cnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSwgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlfSk7CisKKyAg
aWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAg
ICByZXR1cm47CisgIH0KKworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cENvbG9yUXVhZChnbCk7
CisKKyAgLy8gQ2xlYXIgYmFja2J1ZmZlciBpbiByZWQuCisgIGdsLmNsZWFyQ29sb3IoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIHd0dS5j
aGVja0NhbnZhcyhnbCwgWzI1NSwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSByZWQiKTsKKworICB2
YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCA1MCwgNTAsIDAsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZibyk7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgaWYgKGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gQ2xlYXIgdGhlIEZCTyBpbiBncmVl
bi4KKyAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKKworICAvLyBiYWNrYnVmZmVyIGlzIHN0aWxsIGluIHJlZC4KKyAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgLy8gdG9EYXRhVVJMKCkgY2FsbHMg
bXVzdCBub3QgYmluZCBiYWNrYnVmZmVyLgorICBnbENhbnZhcy50b0RhdGFVUkwoKTsKKyAgLy8g
Q2FsbGluZyB0d2ljZSBjYXVzZWQgYSBidWcgZHVlIHRvIHdyb25nIGNhY2hlIGltcGw7IGNyYnVn
LmNvbS80NDU4NDgKKyAgZ2xDYW52YXMudG9EYXRhVVJMKCk7CisgIC8vIEl0IG11c3QgYXBwbGll
cyB0byB0aGUgRkJPLCBub3QgYmFja2J1ZmZlci4KKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisKKyAgLy8gYmFja2J1ZmZlciBtdXN0IGJlIGluIHJlZCwgbm90IGdyZWVuLgorICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICB3dHUuY2hlY2tDYW52
YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgcmVkIik7Cit9Cit0ZXN0KCk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2NhbnZhcy9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvY2FudmFzL2ZyYW1lYnVmZmVyLWJpbmRpbmdzLXVuYWZmZWN0ZWQtb24tcmVzaXpl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTM0Mjg0MWZlMzUyY2YxZjczMDJiMzA3YzZlMTUzZmNlNTQ2OGE4
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVj
dGVkLW9uLXJlc2l6ZS5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlZlcmlmaWVzIHRoYXQgR0wgZnJhbWVi
dWZmZXIgYmluZGluZ3MgZG8gbm90IGNoYW5nZSB3aGVuIGNhbnZhcyBpcyByZXNpemVkPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0
PSI0Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2VuYWJsZUpTVGVzdFByZVZl
cmJvc2VMb2dnaW5nKCk7CitkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCBHTCBmcmFtZWJ1ZmZl
ciBiaW5kaW5ncyBkbyBub3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQiKTsKKwordmFy
IGVycjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMpOwordmFyIGdyZWVuID0gWzAsIDI1NSwgMCwgMjU1XTsKK3ZhciBibHVlID0gWzAsIDAs
IDI1NSwgMjU1XTsKK3ZhciBmYm9TaXplID0gMjsKK3Nob3VsZEJlVHJ1ZSgiZmJvU2l6ZSA8IGNh
bnZhcy53aWR0aCIpOwordmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7Cit2YXIgZmJvVGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSk7CitnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCBmYm9UZXgpOworZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBmYm9UZXgsIDAp
OworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBmYm9TaXplLCBmYm9T
aXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKK2dsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJ
TkVBUik7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9T
LCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworc2hvdWxkQmUoImdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRF
Iik7CisKK2Z1bmN0aW9uIGNoZWNrRkJPKGNvbG9yLCBtc2cpIHsKKyAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgMCwgZmJvU2l6ZSwgZmJvU2l6ZSwgY29sb3IsIG1zZyk7CisgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIGZib1NpemUsIGZib1NpemUsIGZib1NpemUsIGZib1NpemUsIFswLCAw
LCAwLCAwXSwgImFyZWEgb3V0c2lkZSBmYm8gc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrIik7
Cit9CisKKy8vIFRoZSBGQk8gaXMgMngyIGFuZCBpdCdzIGJvdW5kIHNvIGNsZWFyaW5nIHNob3Vs
ZCBjbGVhciBhIDJ4MiBhcmVhCisvLyBhbmQgY2FsbGluZyByZWFkIHBpeGVscyBzaG91bGQgcmVh
ZCB0aGUgY2xlYXIgY29sb3IgaW4gdGhhdCAyeDIgYXJlYQorLy8gYW5kIDAsMCwwLDAgb3V0c2lk
ZSB0aGF0IGFyZWEuCisvLworLy8gSWYgdGhlIEZCTyBpcyBubyBsb25nZXIgYm91bmQgYmVjYXVz
ZSBvZiBhIFdlYkdMIGltcGxlbWVudGF0aW9uIGVycm9yCisvLyB0aGVuIGxpa2VseSB0aGUgY2xl
YXIgd2lsbCBjbGVhciB0aGUgYmFja2J1ZmZlciBhbmQgcmVhZGluZyBvdXRzaWRlCisvLyB0aGUg
MngyIGFyZWEgd2lsbCBub3QgYmUgMCwwLDAsMAorCitmdW5jdGlvbiB0ZXN0KCkgeworICBnbC5j
bGVhckNvbG9yKDAsIDAsIDEsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsK
KyAgY2hlY2tGQk8oYmx1ZSwgInNob3VsZCBiZSBibHVlIik7CisgIGdsLmNsZWFyQ29sb3IoMCwg
MSwgMCwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICBjaGVja0ZCTyhn
cmVlbiwgInNob3VsZCBiZSBncmVlbiIpOworfQorCitkZWJ1ZygidGVzdCBiZWZvcmUgcmVzaXpp
bmcgY2FudmFzIik7Cit0ZXN0KCk7CitkZWJ1ZygidGVzdCBhZnRlciByZXNpemluZyBjYW52YXMi
KTsKK2NhbnZhcy53aWR0aCA9IDg7Cit0ZXN0KCk7CitkZWJ1ZygidGVzdCBhZnRlciByZXNpemlu
ZyBjYW52YXMgYW5kIHdhaXRpbmcgZm9yIGNvbXBvc2l0aW5nIik7CitjYW52YXMud2lkdGggPSAx
NjsKK3d0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICB0ZXN0KCk7CisgIGZpbmlz
aFRlc3QoKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzLiIpOworfSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9yYXBpZC1y
ZXNpemluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ0
MjA4MzAzMDMwMTkyMjYyYzllZjQyNDNiM2E1NmE4MmQyNzljMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2NhbnZhcy9yYXBpZC1yZXNpemluZy5odG1sCkBAIC0wLDAgKzEsMTcxIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBSYXBpZCBS
ZXNpemluZyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMxIiBzdHlsZT0id2lkdGg6IDI1NnB4OyBoZWln
aHQ6IDI1NnB4OyI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMiIgc3R5bGU9IndpZHRo
OiAyNTZweDsgaGVpZ2h0OiAyNTZweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0
cmlidXRlIHZlYzIgcG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24sIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpCit7CisgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMC4wLDEuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKKworZGVzY3JpcHRpb24oIlZlcmlmaWVzIHRoYXQgcmFwaWRseSByZXNp
emluZyB0aGUgY2FudmFzIHdvcmtzIGNvcnJlY3RseS4iKTsKKworZGVidWcoIiIpOworZGVidWco
IlJlZ3Jlc3Npb24gdGVzdCBmb3IgQ2hyb21pdW0gPGEgaHJlZj0naHR0cDovL2NyYnVnLmNvbS8y
OTkzNzEnPklzc3VlIDI5OTM3MTwvYT4gYW5kIDxhIGhyZWY9J2h0dHA6Ly9jcmJ1Zy5jb20vNTU3
ODQ4Jz5Jc3N1ZSA1NTc4NDg8L2E+Iik7CitkZWJ1ZygiIik7CisKK3ZhciBlcnI7Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzOwordmFyIGxhcmdlU2l6ZSA9IDI1NjsKK3Zh
ciBzbWFsbFNpemUgPSAxMjg7Cit2YXIgY3VycmVudFNpemU7Cit2YXIgZ2w7Cit2YXIgcHJvZ3Jh
bTsKK3ZhciBudW1GcmFtZXMgPSAwOwordmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlvbiBu
ZXh0VGVzdCgpIHsKKyAgKyt0ZXN0TnVtYmVyOworICBudW1GcmFtZXMgPSAwOworICBjdXJyZW50
U2l6ZSA9IGxhcmdlU2l6ZTsKKyAgaWYgKHRlc3ROdW1iZXIgPiAyKSB7CisgICAgZmluaXNoVGVz
dCgpOworICAgIHJldHVybjsKKyAgfQorCisgIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiICsgdGVzdE51bWJlcik7CisgIGNhbnZhcy53aWR0aCA9IGN1cnJlbnRTaXpl
OworICBjYW52YXMuaGVpZ2h0ID0gY3VycmVudFNpemU7CisgIHZhciB1c2VQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIgPSAodGVzdE51bWJlciA9PSAxKSA/IHRydWUgOiBmYWxzZTsKKyAgZGVidWcoIlRl
c3RpbmcgcHJlc2VydmVEcmF3aW5nQnVmZmVyID0gIiArIHVzZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cik7CisgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgcHJlc2VydmVEcmF3aW5n
QnVmZmVyOiB1c2VQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgfSk7CisKKyAgaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKworICAgIHd0dS5yZXF1ZXN0
QW5pbUZyYW1lKG5leHRUZXN0KTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0
IGV4aXN0cyIpOworCisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKworICAgIHByb2dy
YW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInBvc2l0
aW9uIl0pOworICAgIHNob3VsZEJlTm9uTnVsbCgicHJvZ3JhbSIpOworCisgICAgLy8gUHJlcGFy
ZSB0byBkcmF3IHF1YWRzCisgICAgdmFyIHF1YWRTaXplID0gMC4xOworCisgICAgdmFyIHZlcnRl
eEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0ZXhCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgIC8vIExvd2VyIGxlZnQKKyAgICAgIC0xLCAtMSAr
IHF1YWRTaXplLAorICAgICAgLTEsIC0xLAorICAgICAgLTEgKyBxdWFkU2l6ZSwgLTEsCisgICAg
ICAtMSArIHF1YWRTaXplLCAtMSArIHF1YWRTaXplLAorCisgICAgICAvLyBMb3dlciByaWdodAor
ICAgICAgMSAtIHF1YWRTaXplLCAtMSArIHF1YWRTaXplLAorICAgICAgMSAtIHF1YWRTaXplLCAt
MSwKKyAgICAgIDEsIC0xLAorICAgICAgMSwgLTEgKyBxdWFkU2l6ZSwKKworICAgICAgLy8gVXBw
ZXIgcmlnaHQKKyAgICAgIDEgLSBxdWFkU2l6ZSwgMSwKKyAgICAgIDEgLSBxdWFkU2l6ZSwgMSAt
IHF1YWRTaXplLAorICAgICAgMSwgMSAtIHF1YWRTaXplLAorICAgICAgMSwgMSwKKworICAgICAg
Ly8gVXBwZXIgbGVmdAorICAgICAgLTEsIDEsCisgICAgICAtMSwgMSAtIHF1YWRTaXplLAorICAg
ICAgLTEgKyBxdWFkU2l6ZSwgMSAtIHF1YWRTaXplLAorICAgICAgLTEgKyBxdWFkU2l6ZSwgMQor
ICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAs
IDApOworCisgICAgdmFyIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShbCisg
ICAgICAwLCAxLCAyLAorICAgICAgMCwgMiwgMywKKworICAgICAgNCwgNSwgNiwKKyAgICAgIDQs
IDYsIDcsCisKKyAgICAgIDgsIDksIDEwLAorICAgICAgOCwgMTAsIDExLAorCisgICAgICAxMiwg
MTMsIDE0LAorICAgICAgMTIsIDE0LCAxNQorICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAg
ICB3dHUucmVxdWVzdEFuaW1GcmFtZShyZW5kZXIpOworICB9Cit9CisKK2Z1bmN0aW9uIHJlbmRl
cigpIHsKKyAgaWYgKCsrbnVtRnJhbWVzIDwgMzApIHsKKyAgICBpZiAoY3VycmVudFNpemUgPT0g
bGFyZ2VTaXplKSB7CisgICAgICBjYW52YXMuaGVpZ2h0ID0gc21hbGxTaXplOworICAgICAgY3Vy
cmVudFNpemUgPSBzbWFsbFNpemU7CisgICAgfSBlbHNlIHsKKyAgICAgIGNhbnZhcy5oZWlnaHQg
PSBsYXJnZVNpemU7CisgICAgICBjdXJyZW50U2l6ZSA9IGxhcmdlU2l6ZTsKKyAgICB9CisgIH0K
KworICBnbC52aWV3cG9ydCgwLCAwLCBsYXJnZVNpemUsIGN1cnJlbnRTaXplKTsKKyAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMs
IDI0LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisKKyAgLy8gQ2hlY2sgdGhlIGZvdXIgY29ybmVy
cworICB2YXIgZ3JlZW4gPSBbIDAsIDI1NSwgMCwgMjU1IF07CisgIHZhciBpbnNldCA9IDM7Cisg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGluc2V0LCBpbnNldCwgMSwgMSwgZ3JlZW4sICJsb3dl
ciBsZWZ0IHNob3VsZCBiZSBncmVlbiIsIDEpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBs
YXJnZVNpemUgLSBpbnNldCwgaW5zZXQsIDEsIDEsIGdyZWVuLCAibG93ZXIgcmlnaHQgc2hvdWxk
IGJlIGdyZWVuIiwgMSk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGluc2V0LCBjdXJyZW50
U2l6ZSAtIGluc2V0LCAxLCAxLCBncmVlbiwgInVwcGVyIGxlZnQgc2hvdWxkIGJlIGdyZWVuIiwg
MSk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGxhcmdlU2l6ZSAtIGluc2V0LCBjdXJyZW50
U2l6ZSAtIGluc2V0LCAxLCAxLCBncmVlbiwgInVwcGVyIHJpZ2h0IHNob3VsZCBiZSBncmVlbiIs
IDEpOworCisgIGlmIChudW1GcmFtZXMgPCA2MCkgeworICAgIHd0dS5yZXF1ZXN0QW5pbUZyYW1l
KHJlbmRlcik7CisgIH0gZWxzZSB7CisgICAgd3R1LnJlcXVlc3RBbmltRnJhbWUobmV4dFRlc3Qp
OworICB9Cit9CisKK3d0dS5yZXF1ZXN0QW5pbUZyYW1lKG5leHRUZXN0KTsKKworPC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9yZW5kZXItYWZ0ZXItcmVz
aXplLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2NhbnZhcy9yZW5kZXItYWZ0ZXItcmVzaXplLXRlc3QuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOTczZDRkNjE4MTYwOGQzYmY1Yzc5YzEzYTZmODFmYjIzOTM4NjllCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvY2FudmFzL3JlbmRlci1hZnRlci1yZXNpemUtdGVzdC5odG1sCkBAIC0wLDAg
KzEsMTQyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgcmVuZGVyIGFmdGVyIHJlc2l6ZSB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBzdHlsZT0id2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsiIGlkPSJjIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgY2FuIHJlbmRlciBjb3Jy
ZWN0bHkgYWZ0ZXIgcmVzaXppbmcgdGhlIGNhbnZhcy4iKTsKK2RlYnVnKCIiKTsKKworY29uc3Qg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Citjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImMi
LCB7ZGVwdGg6IHRydWUsIHN0ZW5jaWw6IHRydWV9KTsKK3Nob3VsZEJlVHJ1ZSgiZ2wgIT0gbnVs
bCIpOworCitnbC5jbGVhckNvbG9yKDEsMCwwLDEpOworCitjb25zdCBwb3NpdGlvbkxvY2F0aW9u
ID0gMDsKK2NvbnN0IHByb2dyYW0gPSB3dHUuc2V0dXBDb2xvclF1YWQoZ2wsIHBvc2l0aW9uTG9j
YXRpb24pOworY29uc3QgY29sb3JMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAndV9jb2xvcicpOworZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworY29uc3QgU01BTEwg
PSAyOworLy8gQ2hhbmdpbmcgdGhpcyBzaXplIHRvIHNvbWV0aGluZyBzbWFsbGVyIHByb2R1Y2Vz
CisvLyBkaWZmZXJlbnQgcmVzdWx0cy4gU29tZXRpbWVzIHdyb25nLCBzb21ldGltZXMgY29ycmVj
dC4KK2NvbnN0IExBUkdFID0gMTIwMDsKKworZ2wudW5pZm9ybTRmdihjb2xvckxvY2F0aW9uLCBb
MC4wLCAxLjAsIDAuMCwgMS4wXSk7CisKKy8vIC0KKworZGVidWcoJ1xuUmVzaXplIHRoZW4gcmVu
ZGVyLicpOworZ2wuY2FudmFzLndpZHRoID0gZ2wuY2FudmFzLmhlaWdodCA9IFNNQUxMOworZ2wu
dmlld3BvcnQoMCwgMCwgU01BTEwsIFNNQUxMKTsKKworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7Cit3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKword3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgMSwgMSwgWyAwLCAyNTUsIDAsIDI1NSBdKTsKKworLy8gLQorCitkZWJ1ZygnXG5SZXNp
emUgdHdpY2UgdGhlbiByZW5kZXIuJyk7CitnbC5jYW52YXMud2lkdGggPSBnbC5jYW52YXMuaGVp
Z2h0ID0gTEFSR0U7CitnbC5jYW52YXMud2lkdGggPSBnbC5jYW52YXMuaGVpZ2h0ID0gU01BTEw7
CisKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOword3R1LmRyYXdVbml0UXVhZChnbCk7
CisKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsgMCwgMjU1LCAwLCAyNTUg
XSk7CisKK2RlYnVnKCdcbkNhdXNlIGEgR0wgZXJyb3IsIHRoZW4gcmVzaXplIGFuZCByZW5kZXIu
Jyk7CitnbC5kZXB0aEZ1bmMoMCk7IC8vIENhdXNlcyBJTlZBTElEX0VOVU0KK2dsLmNhbnZhcy53
aWR0aCA9IGdsLmNhbnZhcy5oZWlnaHQgPSBMQVJHRTsKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworZ2wuY2FudmFzLndpZHRoID0gZ2wuY2FudmFzLmhlaWdodCA9IFNNQUxMOworCitn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKK3d0dS5kcmF3VW5pdFF1YWQoZ2wpOworCit3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbIDAsIDI1NSwgMCwgMjU1IF0pOwor
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworLy8gLQorCitkZWJ1ZygnXG5SZW5kZXIsIG5vLW9w
IHJlc2l6ZSwgdGhlbiBkZXB0aC1mYWlsIHJlbmRlci4nKTsKKworZ2wuZW5hYmxlKGdsLkRFUFRI
X1RFU1QpOworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9C
SVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworZ2wudW5pZm9ybTRmdihjb2xvckxvY2F0aW9u
LCBbMC4wLCAxLjAsIDAuMCwgMS4wXSk7Cit3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworZ2wuY2Fu
dmFzLndpZHRoID0gZ2wuY2FudmFzLndpZHRoOworZ2wudW5pZm9ybTRmdihjb2xvckxvY2F0aW9u
LCBbMC4wLCAwLjAsIDEuMCwgMS4wXSk7Cit3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKword3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWyAwLCAyNTUsIDAsIDI1NSBdKTsKKworLy8g
UmVzZXQKK2dsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKy8vIC0KKworZGVidWcoJ1xuUmVu
ZGVyLCBuby1vcCByZXNpemUsIHRoZW4gc3RlbmNpbC1mYWlsIHJlbmRlci4nKTsKKworZ2wuZW5h
YmxlKGdsLlNURU5DSUxfVEVTVCk7CitnbC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wu
SU5DUik7CitnbC5zdGVuY2lsRnVuYyhnbC5FUVVBTCwgMCwgMHhmZik7CitnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVS
X0JJVCk7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jYXRpb24sIFswLjAsIDEuMCwgMC4wLCAxLjBd
KTsKK3d0dS5kcmF3VW5pdFF1YWQoZ2wpOworCitnbC5jYW52YXMud2lkdGggPSBnbC5jYW52YXMu
d2lkdGg7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jYXRpb24sIFswLjAsIDAuMCwgMS4wLCAxLjBd
KTsKK3d0dS5kcmF3VW5pdFF1YWQoZ2wpOworCit3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAw
LCAxLCAxLCBbIDAsIDI1NSwgMCwgMjU1IF0pOworCisvLyBSZXNldAorZ2wuZGlzYWJsZShnbC5T
VEVOQ0lMX1RFU1QpOworZ2wuc3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLktFRVApOwor
Z2wuc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAwLCAweGZmKTsKKworLy8gLQorCitkZWJ1ZygnXG5S
ZW5kZXIsIG5vLW9wIHJlc2l6ZSwgdGhlbiBzY2lzc29yIHJlbmRlci4nKTsKKworZ2wuZW5hYmxl
KGdsLlNDSVNTT1JfVEVTVCk7CitnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKK2dsLnVu
aWZvcm00ZnYoY29sb3JMb2NhdGlvbiwgWzAuMCwgMS4wLCAwLjAsIDEuMF0pOword3R1LmRyYXdV
bml0UXVhZChnbCk7CisKK2dsLmNhbnZhcy53aWR0aCA9IGdsLmNhbnZhcy53aWR0aDsKK2dsLmVu
YWJsZShnbC5TQ0lTU09SX1RFU1QpOworZ2wuc2Npc3NvcigwLCAwLCAxLCAxKTsKK2dsLnVuaWZv
cm00ZnYoY29sb3JMb2NhdGlvbiwgWzAuMCwgMC4wLCAxLjAsIDEuMF0pOword3R1LmRyYXdVbml0
UXVhZChnbCk7CitnbC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKK3d0dS5jaGVja0NhbnZh
c1JlY3QoZ2wsIDEsIDAsIDEsIDEsIFsgMCwgMjU1LCAwLCAyNTUgXSk7Cit3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbIDAsIDAsIDI1NSwgMjU1IF0pOworCisvLyAtCisKK2Zp
bmlzaFRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NhbnZhcy90ZXh0dXJlLWJpbmRpbmdzLXVu
YWZmZWN0ZWQtb24tcmVzaXplLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvdGV4dHVyZS1iaW5kaW5ncy11bmFmZmVj
dGVkLW9uLXJlc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMDVhNzM0ZmZhNzhkNzg2MjJlNTE2Zjhm
ZWRiMDcwNDIwM2EzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvdGV4dHVyZS1iaW5kaW5n
cy11bmFmZmVjdGVkLW9uLXJlc2l6ZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oJ1ZlcmlmaWVzIHRoYXQgR0wgdGV4dHVyZSBiaW5k
aW5ncyBkbyBub3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQnKTsKKwordmFyIGVycjsK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMp
OwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworCit2YXIgZ3JlZW4g
PSBbMCwgMjU1LCAwLCAyNTVdOwordmFyIGJsdWUgPSBbMCwgMCwgMjU1LCAyNTVdOwordmFyIHRl
eDAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cit3dHUuZmlsbFRleHR1cmUoZ2wsIHRleDAsIDEsIDEs
IGJsdWUsIDApOworZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSkKK3ZhciB0ZXgxID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOword3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgxLCAxLCAxLCBncmVlbiwg
MCk7CisKK3ZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQpOworICBnbC51bmlmb3JtMWkobG9jLCAwKTsKKyAgd3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBibHVlLCAic2hvdWxkIGJlIGJs
dWUiKTsKKyAgZ2wudW5pZm9ybTFpKGxvYywgMSk7CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgZ3JlZW4sICJzaG91bGQgYmUgZ3JlZW4iKTsK
K30KKworZGVidWcoInRlc3QgYmVmb3JlIHJlc2l6aW5nIGNhbnZhcyIpOwordGVzdCgpOworZGVi
dWcoInRlc3QgYWZ0ZXIgcmVzaXppbmcgY2FudmFzIik7CitjYW52YXMud2lkdGggPSA4OwordGVz
dCgpOworZGVidWcoInRlc3QgYWZ0ZXIgcmVzaXppbmcgY2FudmFzIGFuZCB3YWl0aW5nIGZvciBj
b21wb3NpdGluZyIpOworY2FudmFzLndpZHRoID0gMTY7Cit3dHUud2FpdEZvckNvbXBvc2l0ZShm
dW5jdGlvbigpIHsKKyAgdGVzdCgpOworICBmaW5pc2hUZXN0KCk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycy4iKTsKK30pOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9jYW52YXMvdG8tZGF0YS11cmwtdGVzdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL3Rv
LWRhdGEtdXJsLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGU4ODJjNjFmMTdkZmI2Mzg0MjVmMGMz
MGNiOTcwNDQyZWM0Y2ZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY2FudmFzL3RvLWRhdGEtdXJsLXRl
c3QuaHRtbApAQCAtMCwwICsxLDE0MiBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHRvRGF0YVVSTCB0ZXN0PC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweCIgaWQ9ImMzZCI+
PC9jYW52YXM+Cis8Y2FudmFzIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4IiBpZD0iYzJkIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBudW1UZXN0cyA9IDEwOwordmFyIGdsOwordmFyIGN0eDsKKwor
dmFyIG1haW4gPSBmdW5jdGlvbigpIHsKKyAgZGVzY3JpcHRpb24oKTsKKyAgY3R4ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImMyZCIpLmdldENvbnRleHQoIjJkIik7CisKKyAgdmFyIHVwZGF0
ZUNhbnZhcyA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMzZCIpOworCisgICAgaWYgKGdsICYm
IChnbC5hdHRyaWJ1dGVzICE9PSBhdHRyaWJ1dGVzKSkgeworICAgICAgLy8gQXR0cmlidXRlcyBj
aGFuZ2VkLCByZWNyZWF0ZSB0aGUgY2FudmFzCisgICAgICB2YXIgbmV3Q2FudmFzID0gY2FudmFz
LmNsb25lTm9kZSgpOworICAgICAgY2FudmFzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld0Nh
bnZhcywgY2FudmFzKTsKKyAgICAgIGNhbnZhcyA9IG5ld0NhbnZhczsKKyAgICAgIGdsID0gdW5k
ZWZpbmVkOworICAgIH0KKworICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5o
ZWlnaHQgPSBoZWlnaHQ7CisKKyAgICBpZiAoIWdsKSB7CisgICAgICBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzLCBhdHRyaWJ1dGVzKTsKKworICAgICAgaWYgKCFnbCkgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJjYW4ndCBjcmVhdGUgM2QgY29udGV4dCIpOworICAgICAgICByZXR1cm47
CisgICAgICB9CisKKyAgICAgIGdsLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOworICAgIH0KKwor
ICAgIHJldHVybiBnbDsKKyAgfTsKKworICB2YXIgY2xlYXJSZWN0ID0gZnVuY3Rpb24oZ2wsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGNvbG9yKSB7CisgICAgZ2wuY2xlYXJDb2xvcihjb2xvclswXSAv
IDI1NSwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LCBjb2xvclszXSAvIDI1NSk7Cisg
ICAgZ2wuc2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgfTsKKworICB2YXIgdGVzdFNpemUgPSBmdW5jdGlvbih3aWR0aCwg
aGVpZ2h0LCBhdHRyaWJ1dGVzLCBjYWxsYmFjaykgeworICAgIGxldCBhdHRyaWJ1dGVzRGVidWdN
ZXNzYWdlID0gIiI7CisgICAgaWYgKGF0dHJpYnV0ZXMpIHsKKyAgICAgIGF0dHJpYnV0ZXNEZWJ1
Z01lc3NhZ2UgPSAiIGF0dHJpYnV0ZXM6ICIgKyBKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVzKTsK
KyAgICB9CisgICAgZGVidWcoInRlc3RpbmcgIiArIHdpZHRoICsgIiBieSAiICsgaGVpZ2h0ICsg
YXR0cmlidXRlc0RlYnVnTWVzc2FnZSk7CisgICAgdmFyIGdsID0gdXBkYXRlQ2FudmFzKHdpZHRo
LCBoZWlnaHQsIGF0dHJpYnV0ZXMpOworICAgIGlmICghZ2wpIHsKKyAgICAgIGNhbGxiYWNrKCk7
CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhl
aWdodCk7CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICB2YXIgYm90dG9t
Q29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdOworICAgIHZhciB0b3BDb2xvciA9IFswLCAyNTUsIDAs
IDI1NV07CisgICAgdmFyIHJpZ2h0Q29sb3IgPSBbMCwgMCwgMjU1LCAyNTVdOworICAgIHZhciBo
YWxmSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKyAgICB2YXIgdG9wSGVpZ2h0ID0g
aGVpZ2h0IC0gaGFsZkhlaWdodDsKKyAgICB2YXIgY2FudmFzVG9wSGVpZ2h0ID0gaGVpZ2h0IC0g
dG9wSGVpZ2h0OworICAgIGNsZWFyUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhhbGZIZWlnaHQsIGJv
dHRvbUNvbG9yKTsKKyAgICBjbGVhclJlY3QoZ2wsIDAsIGhhbGZIZWlnaHQsIHdpZHRoLCB0b3BI
ZWlnaHQsIHRvcENvbG9yKTsKKyAgICBjbGVhclJlY3QoZ2wsIHdpZHRoIC0gMSwgMCwgMSwgaGVp
Z2h0LCByaWdodENvbG9yKTsKKworICAgIC8vIFBlcmZvcm1zIGdsLmNhbnZhcy50b0RhdGFVUkwo
KSBpbnRlcm5hbGx5CisgICAgdmFyIGltZyA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGdsLmNh
bnZhcywgZnVuY3Rpb24oKSB7CisgICAgICBjdHguY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAg
ICBjdHguY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICAgIGN0eC5pbWFnZVNtb290aGluZ0Vu
YWJsZWQgPSBmYWxzZTsKKyAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsKKyAgICAgIHd0
dS5jaGVja0NhbnZhc1JlY3QoY3R4LCAwLCAwLCB3aWR0aCAtIDEsIHRvcEhlaWdodCwgdG9wQ29s
b3IpOworICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgsIDAsIHRvcEhlaWdodCwgd2lkdGgg
LSAxLCBoYWxmSGVpZ2h0LCBib3R0b21Db2xvcik7CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0
KGN0eCwgd2lkdGggLSAxLCAwLCAxLCBoZWlnaHQsIHJpZ2h0Q29sb3IpOworICAgICAgZGVidWco
IiIpOworICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKKyAgfTsKKworICBjb25zdCBwcmVtdWx0
aXBsaWVkQWxwaGFBdHRyaWJ1dGVzID0gIHsKKyAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IGZhbHNl
LAorICB9OworICB2YXIgdGVzdHMgPSBbCisgICAgeyB3aWR0aDogIDE2ICAgICwgaGVpZ2h0OiAg
MTYgICAgLCB9LAorICAgIHsgd2lkdGg6ICAxNiAtIDEsIGhlaWdodDogIDE2ICAgICwgfSwKKyAg
ICB7IHdpZHRoOiAgMTYgLSAxLCBoZWlnaHQ6ICAxNiAtIDEsIH0sCisgICAgeyB3aWR0aDogIDE2
ICsgMSwgaGVpZ2h0OiAgMTYgLSAxLCB9LAorICAgIHsgd2lkdGg6ICAxNiAtIDEsIGhlaWdodDog
IDE2ICsgMSwgfSwKKyAgICB7IHdpZHRoOiAyNTYgICAgLCBoZWlnaHQ6IDI1NiAgICAsIH0sCisg
ICAgeyB3aWR0aDogMjU2IC0gMSwgaGVpZ2h0OiAyNTYgICAgLCB9LAorICAgIHsgd2lkdGg6IDI1
NiAtIDEsIGhlaWdodDogMjU2IC0gMSwgfSwKKyAgICB7IHdpZHRoOiAyNTYgKyAxLCBoZWlnaHQ6
IDI1NiAtIDEsIH0sCisgICAgeyB3aWR0aDogMjU2IC0gMSwgaGVpZ2h0OiAyNTYgKyAxLCB9LAor
ICAgIHsgd2lkdGg6IDUxMiAgICAsIGhlaWdodDogNTEyICAgICwgfSwKKyAgICB7IHdpZHRoOiA1
MTIgLSAxLCBoZWlnaHQ6IDUxMiAgICAsIH0sCisgICAgeyB3aWR0aDogNTEyIC0gMSwgaGVpZ2h0
OiA1MTIgLSAxLCB9LAorICAgIHsgd2lkdGg6IDUxMiArIDEsIGhlaWdodDogNTEyIC0gMSwgfSwK
KyAgICB7IHdpZHRoOiA1MTIgLSAxLCBoZWlnaHQ6IDUxMiArIDEsIH0sCisgICAgeyB3aWR0aDog
IDE2ICAgICwgaGVpZ2h0OiAgMTYgICAgLCBhdHRyaWJ1dGVzOiBwcmVtdWx0aXBsaWVkQWxwaGFB
dHRyaWJ1dGVzfSwKKyAgXTsKKyAgdmFyIHRlc3RJbmRleCA9IDA7CisgIHZhciBydW5OZXh0VGVz
dCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0ZXN0SW5kZXggPT0gdGVzdHMubGVuZ3RoKSB7Cisg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdEluZGV4KytdOworICAgIHRlc3RTaXplKHRlc3Qud2lkdGgsIHRlc3QuaGVpZ2h0
LCB0ZXN0LmF0dHJpYnV0ZXMsIGZ1bmN0aW9uKCkgeworICAgICAgc2V0VGltZW91dChydW5OZXh0
VGVzdCwgMCk7CisgICAgfSkKKyAgfTsKKyAgcnVuTmV4dFRlc3QoKTsKK307CittYWluKCk7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9jYW52YXMvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9jYW52YXMvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzA0MTRmYzFhODkxNTA1NWIwM2UwZWIxOTJhOGNiODEzNzdmZTAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2NhbnZhcy92aWV3cG9ydC11bmNoYW5nZWQtdXBvbi1yZXNpemUuaHRtbApAQCAtMCww
ICsxLDkyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2
ZWMzIGdfUG9zaXRpb247CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KGdfUG9zaXRpb24ueCwgZ19Qb3NpdGlvbi55LCBnX1Bvc2l0aW9uLnosIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oJ1ZlcmlmaWVzIHRoYXQgR0wgdmlld3BvcnQgZG9lcyBub3QgY2hhbmdl
IHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQnKTsKKwordmFyIGVycjsKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBw
cm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJn
X1Bvc2l0aW9uIl0pOworCit2YXIgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAg
MS4wLCAgMS4wLCAwLjAsCisgICAgLTEuMCwgIDEuMCwgMC4wLAorICAgIC0xLjAsIC0xLjAsIDAu
MCwKKyAgICAgMS4wLCAgMS4wLCAwLjAsCisgICAgLTEuMCwgLTEuMCwgMC4wLAorICAgICAxLjAs
IC0xLjAsIDAuMF0pOwordmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZibyk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MCk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisKKy8vIENsZWFyIGFuZCBzZXQgdXAKK2dsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CitnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CitnbC51c2VQ
cm9ncmFtKHByb2dyYW0pOworLy8gRHJhdyB0aGUgdHJpYW5nbGUgcGFpciB0byB0aGUgZnJhbWUg
YnVmZmVyCitnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKy8vIEVuc3VyZSB0
aGF0IHRoZSBmcmFtZSBidWZmZXIgaXMgcmVkIGF0IHRoZSBzYW1wbGVkIHBpeGVsCit3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCAyLCAyLCAxLCAxLCBbMjU1LCAwLCAwLCAyNTVdKTsKKworLy8gTm93
IHJlc2l6ZSB0aGUgY2FudmFzCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
Ik5vIEdMIGVycm9ycyBiZWZvcmUgcmVzaXppbmcgdGhlIGNhbnZhcyIpOwordmFyIGNhbnZhcyA9
IGdsLmNhbnZhczsKK2NhbnZhcy53aWR0aCA9IDg7CitjYW52YXMuaGVpZ2h0ID0gODsKK2VyciA9
IGdsLmdldEVycm9yKCk7CisvLyBTb21lIGltcGxlbWVudGF0aW9ucyBtaWdodCBsb3N0IHRoZSBj
b250ZXh0IHdoZW4gcmVzaXppbmcKK2lmIChlcnIgPT0gZ2wuQ09OVEVYVF9MT1NUX1dFQkdMKSB7
CisgIHRlc3RQYXNzZWQoImNhbnZhcyBsb3N0IGNvbnRleHQgb24gcmVzaXplIik7Cit9IGVsc2Ug
eworICBzaG91bGRCZSgiZXJyIiwgImdsLk5PX0VSUk9SIik7CisgIC8vIERvIGFub3RoZXIgcmVu
ZGVyCisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklU
KTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAvLyBUaGlzIHRpbWUs
IGJlY2F1c2Ugd2UgZGlkIG5vdCBjaGFuZ2UgdGhlIHZpZXdwb3J0LCBpdCBzaG91bGQKKyAgLy8g
c3RpbGwgYmUgKDAsIDAsIDQsIDQpLCBzbyBvbmx5IHRoZSBsb3dlci1sZWZ0IHF1YWRyYW50IHNo
b3VsZAorICAvLyBoYXZlIGJlZW4gZmlsbGVkLgorICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA2
LCA2LCAxLCAxLCBbMCwgMCwgMjU1LCAyNTVdKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvd2Vi
Z2wtdG8tMmQtY2FudmFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9jYW52YXMvd2ViZ2wtdG8tMmQtY2FudmFzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmVkOWM4OTcxODFlNTFkZTY1NDgwNGY2YjgxM2NkZjNiOWYxYThhYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2NhbnZhcy93ZWJnbC10by0yZC1jYW52YXMuaHRtbApAQCAtMCwwICsxLDc4
IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgY2FudmFzIHRvIDJEIGNhbnZhcyB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzdHlsZT4KK2NhbnZh
cyB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgbWFyZ2luOiAzcHg7CisgICAg
ZGlzcGxheTogYmxvY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZGlmZjsKK3ZhciBjb25zb2xlRWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjb25z
b2xlJyk7CisKK3ZhciBtYWluID0gZnVuY3Rpb24oKSB7CisgIGRlc2NyaXB0aW9uKCk7CisKKyAg
dGVzdCh7IHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwgfSwgWzE3MSwgMjM0LCAxNzIsIDE5MV0s
IFsxMjgsIDI1NSwgMTc3LCAxMjhdKTsKKyAgdGVzdCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFs
c2UsIH0sIFsxNzAsIDIzNCwgMTcxLCAxOTFdLCBbMTI4LCAyNTUsIDE3NywgMTI4XSk7CisgIHRl
c3QoeyBhbHBoYTogZmFsc2UsIH0sIFsxMjcsIDI1NSwgMTc4LCAyNTVdLCBbMTI4LCAyNTUsIDE3
OCwgMjU1XSk7CisgIHRlc3QoeyBwcmVtdWx0aXBsaWVkQWxwaGE6IGZhbHNlLCBhbHBoYTogZmFs
c2UsIH0sIFsxMjcsIDI1NSwgMTc4LCAyNTVdLCBbMTI4LCAyNTUsIDE3OCwgMjU1XSk7CisKKyAg
ZnVuY3Rpb24gdGVzdChhdHRycywgZXhwZWN0ZWQsIGV4cGVjdGVkMikgeworICAgIGRlYnVnKGB0
ZXN0OiAke0pTT04uc3RyaW5naWZ5KGF0dHJzKX1gKTsKKworICAgIGNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgIGNhbnZhcy53aWR0aCA9IDY0Owor
ICAgIGNhbnZhcy5oZWlnaHQgPSA2NDsKKworICAgIGNvbnN0IGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMsIGF0dHJzKTsKKyAgICBpZiAoIWdsKSB7CisgICAgICB0ZXN0RmFpbGVkKCJj
YW4ndCBjcmVhdGUgM2QgY29udGV4dCIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25z
dCBhbHBoYSA9IDAuNTsKKyAgICBjb25zdCBlZmZlY3RpdmVBbHBoYSA9IGF0dHJzLnByZW11bHRp
cGxpZWRBbHBoYSA/IGFscGhhIDogMS4wOworICAgIGNvbnN0IGNvbG9yID0gWzAuNSwgMS4wLCAw
LjddLm1hcCh2ID0+IHYgKiBlZmZlY3RpdmVBbHBoYSk7CisgICAgY29sb3IucHVzaCgwLjUpOwor
ICAgIGRlYnVnKGBjbGVhckNvbG9yOiAke2NvbG9yLmpvaW4oJywgJyl9YCk7CisgICAgZ2wuY2xl
YXJDb2xvciguLi5jb2xvcik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cisg
ICAgY29uc29sZUVsZW0uYXBwZW5kQ2hpbGQoY2FudmFzKTsKKworICAgIGNvbnN0IGN0eCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisgICAgY3R4
LmNhbnZhcy53aWR0aCA9IDEyODsKKyAgICBjdHguY2FudmFzLmhlaWdodCA9IDEyODsKKyAgICBj
dHguZmlsbFN0eWxlID0gJ3JnYmEoMjU1LCAxOTAsIDE2MCwgMC41KSc7CisgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIDY0LCA2NCk7CisgICAgY3R4LmRyYXdJbWFnZShjYW52YXMsIDMyLCAzMik7Cisg
ICAgY29uc29sZUVsZW0uYXBwZW5kQ2hpbGQoY3R4LmNhbnZhcyk7CisKKyAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGN0eCwgMzMsIDMzLCAxLCAxLCBleHBlY3RlZCwgJ2NhbnZhcyAyZCBpcyBjb3Jy
ZWN0IGNvbG9yJywgMyk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgsIDY1LCA2NSwgMSwg
MSwgZXhwZWN0ZWQyLCAnY2FudmFzIDJkIGlzIGNvcnJlY3QgY29sb3InLCAzKTsKKyAgICBkZWJ1
ZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpOworICB9CisgIGZpbmlzaFRl
c3QoKTsKK307CittYWluKCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnN0YW50cy1h
bmQtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb25zdGFudHMtYW5kLXByb3BlcnRpZXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYThhMmZmM2I2MThmMTc0Y2Y2YzRmYzgyNTJmNmY1OGQ4ZTE0MTk1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb25zdGFudHMtYW5kLXByb3BlcnRpZXMuaHRtbApA
QCAtMCwwICsxLDU0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIENvbnN0YW50cyBhbmQgUHJvcGVydGllcyBUZXN0PC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBo
ZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIFdlYkdMIGNvbnRleHQgaGFzIGFsbCB0
aGUgY29uc3RhbnRzIGFuZCAobm9uLWZ1bmN0aW9uKSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZp
Y2F0aW9uLiIpOworCit2YXIgY29uc3RhbnRzID0geworICAgIC8qIENsZWFyQnVmZmVyTWFzayAq
LworREVQVEhfQlVGRkVSX0JJVCAgICAgICAgICAgICAgIDogMHgwMDAwMDEwMCwKK1NURU5DSUxf
QlVGRkVSX0JJVCAgICAgICAgICAgICA6IDB4MDAwMDA0MDAsCitDT0xPUl9CVUZGRVJfQklUICAg
ICAgICAgICAgICAgOiAweDAwMDA0MDAwLAorCisgICAgLyogQmVnaW5Nb2RlICovCitQT0lOVFMg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAwMDAsCitMSU5FUyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDAwMDEsCitMSU5FX0xPT1AgICAgICAgICAgICAgICAgICAgICAgOiAweDAw
MDIsCitMSU5FX1NUUklQICAgICAgICAgICAgICAgICAgICAgOiAweDAwMDMsCitUUklBTkdMRVMg
ICAgICAgICAgICAgICAgICAgICAgOiAweDAwMDQsCitUUklBTkdMRV9TVFJJUCAgICAgICAgICAg
ICAgICAgOiAweDAwMDUsCitUUklBTkdMRV9GQU4gICAgICAgICAgICAgICAgICAgOiAweDAwMDYs
CisKKyAgICAvKiBBbHBoYUZ1bmN0aW9uIChub3Qgc3VwcG9ydGVkIGluIEVTMjApICovCisgICAg
LyogICAgICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAgIC8qICAgICAgRVFVQUwg
Ki8KKyAgICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JFQVRFUiAqLworICAgIC8q
ICAgICAgTk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLworICAgIC8qICAgICAgQUxX
QVlTICovCisKKyAgICAvKiBCbGVuZGluZ0ZhY3RvckRlc3QgKi8KK1pFUk8gICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDAsCitPTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxLAor
U1JDX0NPTE9SICAgICAgICAgICAgICAgICAgICAgIDogMHgwMzAwLAorT05FX01JTlVTX1NSQ19D
T0xPUiAgICAgICAgICAgIDogMHgwMzAxLAorU1JDX0FMUEhBICAgICAgICAgICAgICAgICAgICAg
IDogMHgwMzAyLAorT05FX01JTlVTX1NSQ19BTFBIQSAgICAgICAgICAgIDogMHgwMzAzLAorRFNU
X0FMUEhBICAgICAgICAgICAgICAgICAgICAgIDogMHgwMzA0LAorT05FX01JTlVTX0RTVF9BTFBI
QSAgICAgICAgICAgIDogMHgwMzA1LAorCisgICAgLyogQmxlbmRpbmdGYWN0b3JTcmMgKi8KKyAg
ICAvKiAgICAgIFpFUk8gKi8KKyAgICAvKiAgICAgIE9ORSAqLworRFNUX0NPTE9SICAgICAgICAg
ICAgICAgICAgICAgIDogMHgwMzA2LAorT05FX01JTlVTX0RTVF9DT0xPUiAgICAgICAgICAgIDog
MHgwMzA3LAorU1JDX0FMUEhBX1NBVFVSQVRFICAgICAgICAgICAgIDogMHgwMzA4LAorICAgIC8q
ICAgICAgU1JDX0FMUEhBICovCisgICAgLyogICAgICBPTkVfTUlOVVNfU1JDX0FMUEhBICovCisg
ICAgLyogICAgICBEU1RfQUxQSEEgKi8KKyAgICAvKiAgICAgIE9ORV9NSU5VU19EU1RfQUxQSEEg
Ki8KKworICAgIC8qIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAqLworRlVOQ19BREQgICAgICAgICAg
ICAgICAgICAgICAgIDogMHg4MDA2LAorQkxFTkRfRVFVQVRJT04gICAgICAgICAgICAgICAgIDog
MHg4MDA5LAorQkxFTkRfRVFVQVRJT05fUkdCICAgICAgICAgICAgIDogMHg4MDA5LCAgIC8qIHNh
bWUgYXMgQkxFTkRfRVFVQVRJT04gKi8KK0JMRU5EX0VRVUFUSU9OX0FMUEhBICAgICAgICAgICA6
IDB4ODgzRCwKKworICAgIC8qIEJsZW5kU3VidHJhY3QgKi8KK0ZVTkNfU1VCVFJBQ1QgICAgICAg
ICAgICAgICAgICA6IDB4ODAwQSwKK0ZVTkNfUkVWRVJTRV9TVUJUUkFDVCAgICAgICAgICA6IDB4
ODAwQiwKKworICAgIC8qIFNlcGFyYXRlIEJsZW5kIEZ1bmN0aW9ucyAqLworQkxFTkRfRFNUX1JH
QiAgICAgICAgICAgICAgICAgIDogMHg4MEM4LAorQkxFTkRfU1JDX1JHQiAgICAgICAgICAgICAg
ICAgIDogMHg4MEM5LAorQkxFTkRfRFNUX0FMUEhBICAgICAgICAgICAgICAgIDogMHg4MENBLAor
QkxFTkRfU1JDX0FMUEhBICAgICAgICAgICAgICAgIDogMHg4MENCLAorQ09OU1RBTlRfQ09MT1Ig
ICAgICAgICAgICAgICAgIDogMHg4MDAxLAorT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SICAgICAg
IDogMHg4MDAyLAorQ09OU1RBTlRfQUxQSEEgICAgICAgICAgICAgICAgIDogMHg4MDAzLAorT05F
X01JTlVTX0NPTlNUQU5UX0FMUEhBICAgICAgIDogMHg4MDA0LAorQkxFTkRfQ09MT1IgICAgICAg
ICAgICAgICAgICAgIDogMHg4MDA1LAorCisgICAgLyogQnVmZmVyIE9iamVjdHMgKi8KK0FSUkFZ
X0JVRkZFUiAgICAgICAgICAgICAgICAgICA6IDB4ODg5MiwKK0VMRU1FTlRfQVJSQVlfQlVGRkVS
ICAgICAgICAgICA6IDB4ODg5MywKK0FSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICA6IDB4
ODg5NCwKK0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgICA6IDB4ODg5NSwKKworU1RSRUFN
X0RSQVcgICAgICAgICAgICAgICAgICAgIDogMHg4OEUwLAorU1RBVElDX0RSQVcgICAgICAgICAg
ICAgICAgICAgIDogMHg4OEU0LAorRFlOQU1JQ19EUkFXICAgICAgICAgICAgICAgICAgIDogMHg4
OEU4LAorCitCVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgOiAweDg3NjQsCitCVUZGRVJf
VVNBR0UgICAgICAgICAgICAgICAgICAgOiAweDg3NjUsCisKK0NVUlJFTlRfVkVSVEVYX0FUVFJJ
QiAgICAgICAgICA6IDB4ODYyNiwKKworICAgIC8qIEN1bGxGYWNlTW9kZSAqLworRlJPTlQgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogMHgwNDA0LAorQkFDSyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogMHgwNDA1LAorRlJPTlRfQU5EX0JBQ0sgICAgICAgICAgICAgICAgIDogMHgwNDA4
LAorCisgICAgLyogRGVwdGhGdW5jdGlvbiAqLworICAgIC8qICAgICAgTkVWRVIgKi8KKyAgICAv
KiAgICAgIExFU1MgKi8KKyAgICAvKiAgICAgIEVRVUFMICovCisgICAgLyogICAgICBMRVFVQUwg
Ki8KKyAgICAvKiAgICAgIEdSRUFURVIgKi8KKyAgICAvKiAgICAgIE5PVEVRVUFMICovCisgICAg
LyogICAgICBHRVFVQUwgKi8KKyAgICAvKiAgICAgIEFMV0FZUyAqLworCisgICAgLyogRW5hYmxl
Q2FwICovCisgICAgLyogVEVYVFVSRV8yRCAqLworQ1VMTF9GQUNFICAgICAgICAgICAgICAgICAg
ICAgIDogMHgwQjQ0LAorQkxFTkQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkUyLAor
RElUSEVSICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkQwLAorU1RFTkNJTF9URVNUICAg
ICAgICAgICAgICAgICAgIDogMHgwQjkwLAorREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAg
IDogMHgwQjcxLAorU0NJU1NPUl9URVNUICAgICAgICAgICAgICAgICAgIDogMHgwQzExLAorUE9M
WUdPTl9PRkZTRVRfRklMTCAgICAgICAgICAgIDogMHg4MDM3LAorU0FNUExFX0FMUEhBX1RPX0NP
VkVSQUdFICAgICAgIDogMHg4MDlFLAorU0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgIDog
MHg4MEEwLAorCisgICAgLyogRXJyb3JDb2RlICovCitOT19FUlJPUiAgICAgICAgICAgICAgICAg
ICAgICAgOiAwLAorSU5WQUxJRF9FTlVNICAgICAgICAgICAgICAgICAgIDogMHgwNTAwLAorSU5W
QUxJRF9WQUxVRSAgICAgICAgICAgICAgICAgIDogMHgwNTAxLAorSU5WQUxJRF9PUEVSQVRJT04g
ICAgICAgICAgICAgIDogMHgwNTAyLAorT1VUX09GX01FTU9SWSAgICAgICAgICAgICAgICAgIDog
MHgwNTA1LAorCisgICAgLyogRnJvbnRGYWNlRGlyZWN0aW9uICovCitDVyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAweDA5MDAsCitDQ1cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAweDA5MDEsCisKKyAgICAvKiBHZXRQTmFtZSAqLworTElORV9XSURUSCAgICAgICAgICAgICAg
ICAgICAgIDogMHgwQjIxLAorQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFICAgICAgIDogMHg4NDZE
LAorQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFICAgICAgIDogMHg4NDZFLAorQ1VMTF9GQUNFX01P
REUgICAgICAgICAgICAgICAgIDogMHgwQjQ1LAorRlJPTlRfRkFDRSAgICAgICAgICAgICAgICAg
ICAgIDogMHgwQjQ2LAorREVQVEhfUkFOR0UgICAgICAgICAgICAgICAgICAgIDogMHgwQjcwLAor
REVQVEhfV1JJVEVNQVNLICAgICAgICAgICAgICAgIDogMHgwQjcyLAorREVQVEhfQ0xFQVJfVkFM
VUUgICAgICAgICAgICAgIDogMHgwQjczLAorREVQVEhfRlVOQyAgICAgICAgICAgICAgICAgICAg
IDogMHgwQjc0LAorU1RFTkNJTF9DTEVBUl9WQUxVRSAgICAgICAgICAgIDogMHgwQjkxLAorU1RF
TkNJTF9GVU5DICAgICAgICAgICAgICAgICAgIDogMHgwQjkyLAorU1RFTkNJTF9GQUlMICAgICAg
ICAgICAgICAgICAgIDogMHgwQjk0LAorU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwgICAgICAgIDog
MHgwQjk1LAorU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgIDogMHgwQjk2LAorU1RFTkNJ
TF9SRUYgICAgICAgICAgICAgICAgICAgIDogMHgwQjk3LAorU1RFTkNJTF9WQUxVRV9NQVNLICAg
ICAgICAgICAgIDogMHgwQjkzLAorU1RFTkNJTF9XUklURU1BU0sgICAgICAgICAgICAgIDogMHgw
Qjk4LAorU1RFTkNJTF9CQUNLX0ZVTkMgICAgICAgICAgICAgIDogMHg4ODAwLAorU1RFTkNJTF9C
QUNLX0ZBSUwgICAgICAgICAgICAgIDogMHg4ODAxLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhf
RkFJTCAgIDogMHg4ODAyLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyAgIDogMHg4ODAz
LAorU1RFTkNJTF9CQUNLX1JFRiAgICAgICAgICAgICAgIDogMHg4Q0EzLAorU1RFTkNJTF9CQUNL
X1ZBTFVFX01BU0sgICAgICAgIDogMHg4Q0E0LAorU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAg
ICAgIDogMHg4Q0E1LAorVklFV1BPUlQgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkEyLAor
U0NJU1NPUl9CT1ggICAgICAgICAgICAgICAgICAgIDogMHgwQzEwLAorICAgIC8qICAgICAgU0NJ
U1NPUl9URVNUICovCitDT0xPUl9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgOiAweDBDMjIsCitD
T0xPUl9XUklURU1BU0sgICAgICAgICAgICAgICAgOiAweDBDMjMsCitVTlBBQ0tfQUxJR05NRU5U
ICAgICAgICAgICAgICAgOiAweDBDRjUsCitQQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAg
OiAweDBEMDUsCitNQVhfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgOiAweDBEMzMsCitNQVhf
VklFV1BPUlRfRElNUyAgICAgICAgICAgICAgOiAweDBEM0EsCitTVUJQSVhFTF9CSVRTICAgICAg
ICAgICAgICAgICAgOiAweDBENTAsCitSRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgOiAw
eDBENTIsCitHUkVFTl9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBENTMsCitCTFVFX0JJ
VFMgICAgICAgICAgICAgICAgICAgICAgOiAweDBENTQsCitBTFBIQV9CSVRTICAgICAgICAgICAg
ICAgICAgICAgOiAweDBENTUsCitERVBUSF9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBE
NTYsCitTVEVOQ0lMX0JJVFMgICAgICAgICAgICAgICAgICAgOiAweDBENTcsCitQT0xZR09OX09G
RlNFVF9VTklUUyAgICAgICAgICAgOiAweDJBMDAsCisgICAgLyogICAgICBQT0xZR09OX09GRlNF
VF9GSUxMICovCitQT0xZR09OX09GRlNFVF9GQUNUT1IgICAgICAgICAgOiAweDgwMzgsCitURVhU
VVJFX0JJTkRJTkdfMkQgICAgICAgICAgICAgOiAweDgwNjksCitTQU1QTEVfQlVGRkVSUyAgICAg
ICAgICAgICAgICAgOiAweDgwQTgsCitTQU1QTEVTICAgICAgICAgICAgICAgICAgICAgICAgOiAw
eDgwQTksCitTQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAgICAgOiAweDgwQUEsCitTQU1QTEVf
Q09WRVJBR0VfSU5WRVJUICAgICAgICAgOiAweDgwQUIsCisKKyAgICAvKiBHZXRUZXh0dXJlUGFy
YW1ldGVyICovCisgICAgLyogICAgICBURVhUVVJFX01BR19GSUxURVIgKi8KKyAgICAvKiAgICAg
IFRFWFRVUkVfTUlOX0ZJTFRFUiAqLworICAgIC8qICAgICAgVEVYVFVSRV9XUkFQX1MgKi8KKyAg
ICAvKiAgICAgIFRFWFRVUkVfV1JBUF9UICovCisKK0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
ICAgICA6IDB4ODZBMywKKworICAgIC8qIEhpbnRNb2RlICovCitET05UX0NBUkUgICAgICAgICAg
ICAgICAgICAgICAgOiAweDExMDAsCitGQVNURVNUICAgICAgICAgICAgICAgICAgICAgICAgOiAw
eDExMDEsCitOSUNFU1QgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDExMDIsCisKKyAgICAv
KiBIaW50VGFyZ2V0ICovCitHRU5FUkFURV9NSVBNQVBfSElOVCAgICAgICAgICAgIDogMHg4MTky
LAorCisgICAgLyogRGF0YVR5cGUgKi8KK0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MTQwMCwKK1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICA6IDB4MTQwMSwKK1NIT1JU
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTQwMiwKK1VOU0lHTkVEX1NIT1JUICAgICAg
ICAgICAgICAgICA6IDB4MTQwMywKK0lOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
MTQwNCwKK1VOU0lHTkVEX0lOVCAgICAgICAgICAgICAgICAgICA6IDB4MTQwNSwKK0ZMT0FUICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTQwNiwKKworICAgIC8qIFBpeGVsRm9ybWF0ICov
CitERVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgOiAweDE5MDIsCitBTFBIQSAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDE5MDYsCitSR0IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAweDE5MDcsCitSR0JBICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDgsCitM
VU1JTkFOQ0UgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDksCitMVU1JTkFOQ0VfQUxQSEEg
ICAgICAgICAgICAgICAgOiAweDE5MEEsCisKKyAgICAvKiBQaXhlbFR5cGUgKi8KKyAgICAvKiAg
ICAgIFVOU0lHTkVEX0JZVEUgKi8KK1VOU0lHTkVEX1NIT1JUXzRfNF80XzQgICAgICAgICA6IDB4
ODAzMywKK1VOU0lHTkVEX1NIT1JUXzVfNV81XzEgICAgICAgICA6IDB4ODAzNCwKK1VOU0lHTkVE
X1NIT1JUXzVfNl81ICAgICAgICAgICA6IDB4ODM2MywKKworICAgIC8qIFNoYWRlcnMgKi8KK0ZS
QUdNRU5UX1NIQURFUiAgICAgICAgICAgICAgICAgIDogMHg4QjMwLAorVkVSVEVYX1NIQURFUiAg
ICAgICAgICAgICAgICAgICAgOiAweDhCMzEsCitNQVhfVkVSVEVYX0FUVFJJQlMgICAgICAgICAg
ICAgICA6IDB4ODg2OSwKK01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICAgICAgIDogMHg4REZC
LAorTUFYX1ZBUllJTkdfVkVDVE9SUyAgICAgICAgICAgICAgOiAweDhERkMsCitNQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUyA6IDB4OEI0RCwKK01BWF9WRVJURVhfVEVYVFVSRV9JTUFH
RV9VTklUUyAgIDogMHg4QjRDLAorTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgICAgICAgICAgOiAw
eDg4NzIsCitNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTICAgICA6IDB4OERGRCwKK1NIQURF
Ul9UWVBFICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjRGLAorREVMRVRFX1NUQVRVUyAgICAg
ICAgICAgICAgICAgICAgOiAweDhCODAsCitMSU5LX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg
ICA6IDB4OEI4MiwKK1ZBTElEQVRFX1NUQVRVUyAgICAgICAgICAgICAgICAgIDogMHg4QjgzLAor
QVRUQUNIRURfU0hBREVSUyAgICAgICAgICAgICAgICAgOiAweDhCODUsCitBQ1RJVkVfVU5JRk9S
TVMgICAgICAgICAgICAgICAgICA6IDB4OEI4NiwKK0FDVElWRV9BVFRSSUJVVEVTICAgICAgICAg
ICAgICAgIDogMHg4Qjg5LAorU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OICAgICAgICAgOiAweDhC
OEMsCitDVVJSRU5UX1BST0dSQU0gICAgICAgICAgICAgICAgICA6IDB4OEI4RCwKKworICAgIC8q
IFN0ZW5jaWxGdW5jdGlvbiAqLworTkVWRVIgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgw
MjAwLAorTEVTUyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwMjAxLAorRVFVQUwgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogMHgwMjAyLAorTEVRVUFMICAgICAgICAgICAgICAgICAg
ICAgICAgIDogMHgwMjAzLAorR1JFQVRFUiAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwMjA0
LAorTk9URVFVQUwgICAgICAgICAgICAgICAgICAgICAgIDogMHgwMjA1LAorR0VRVUFMICAgICAg
ICAgICAgICAgICAgICAgICAgIDogMHgwMjA2LAorQUxXQVlTICAgICAgICAgICAgICAgICAgICAg
ICAgIDogMHgwMjA3LAorCisgICAgLyogU3RlbmNpbE9wICovCisgICAgLyogICAgICBaRVJPICov
CitLRUVQICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDFFMDAsCitSRVBMQUNFICAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDFFMDEsCitJTkNSICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAweDFFMDIsCitERUNSICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDFFMDMsCitJ
TlZFUlQgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE1MEEsCitJTkNSX1dSQVAgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg1MDcsCitERUNSX1dSQVAgICAgICAgICAgICAgICAgICAgICAg
OiAweDg1MDgsCisKKyAgICAvKiBTdHJpbmdOYW1lICovCitWRU5ET1IgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDFGMDAsCitSRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgOiAweDFG
MDEsCitWRVJTSU9OICAgICAgICAgICAgICAgICAgICAgICAgOiAweDFGMDIsCisKKyAgICAvKiBU
ZXh0dXJlTWFnRmlsdGVyICovCitORUFSRVNUICAgICAgICAgICAgICAgICAgICAgICAgOiAweDI2
MDAsCitMSU5FQVIgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDI2MDEsCisKKyAgICAvKiBU
ZXh0dXJlTWluRmlsdGVyICovCisgICAgLyogICAgICBORUFSRVNUICovCisgICAgLyogICAgICBM
SU5FQVIgKi8KK05FQVJFU1RfTUlQTUFQX05FQVJFU1QgICAgICAgICA6IDB4MjcwMCwKK0xJTkVB
Ul9NSVBNQVBfTkVBUkVTVCAgICAgICAgICA6IDB4MjcwMSwKK05FQVJFU1RfTUlQTUFQX0xJTkVB
UiAgICAgICAgICA6IDB4MjcwMiwKK0xJTkVBUl9NSVBNQVBfTElORUFSICAgICAgICAgICA6IDB4
MjcwMywKKworICAgIC8qIFRleHR1cmVQYXJhbWV0ZXJOYW1lICovCitURVhUVVJFX01BR19GSUxU
RVIgICAgICAgICAgICAgOiAweDI4MDAsCitURVhUVVJFX01JTl9GSUxURVIgICAgICAgICAgICAg
OiAweDI4MDEsCitURVhUVVJFX1dSQVBfUyAgICAgICAgICAgICAgICAgOiAweDI4MDIsCitURVhU
VVJFX1dSQVBfVCAgICAgICAgICAgICAgICAgOiAweDI4MDMsCisKKyAgICAvKiBUZXh0dXJlVGFy
Z2V0ICovCitURVhUVVJFXzJEICAgICAgICAgICAgICAgICAgICAgOiAweDBERTEsCitURVhUVVJF
ICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE3MDIsCisKK1RFWFRVUkVfQ1VCRV9NQVAgICAg
ICAgICAgICAgICA6IDB4ODUxMywKK1RFWFRVUkVfQklORElOR19DVUJFX01BUCAgICAgICA6IDB4
ODUxNCwKK1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCAgICA6IDB4ODUxNSwKK1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWCAgICA6IDB4ODUxNiwKK1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWSAgICA6IDB4ODUxNywKK1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSAgICA6IDB4ODUx
OCwKK1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAgICA6IDB4ODUxOSwKK1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWiAgICA6IDB4ODUxQSwKK01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUg
ICAgICA6IDB4ODUxQywKKworICAgIC8qIFRleHR1cmVVbml0ICovCitURVhUVVJFMCAgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0QzAsCitURVhUVVJFMSAgICAgICAgICAgICAgICAgICAgICAg
OiAweDg0QzEsCitURVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzIsCitURVhU
VVJFMyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzMsCitURVhUVVJFNCAgICAgICAgICAg
ICAgICAgICAgICAgOiAweDg0QzQsCitURVhUVVJFNSAgICAgICAgICAgICAgICAgICAgICAgOiAw
eDg0QzUsCitURVhUVVJFNiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzYsCitURVhUVVJF
NyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzcsCitURVhUVVJFOCAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0QzgsCitURVhUVVJFOSAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0
QzksCitURVhUVVJFMTAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0EsCitURVhUVVJFMTEg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0IsCitURVhUVVJFMTIgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0Q0MsCitURVhUVVJFMTMgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0Qs
CitURVhUVVJFMTQgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0UsCitURVhUVVJFMTUgICAg
ICAgICAgICAgICAgICAgICAgOiAweDg0Q0YsCitURVhUVVJFMTYgICAgICAgICAgICAgICAgICAg
ICAgOiAweDg0RDAsCitURVhUVVJFMTcgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDEsCitU
RVhUVVJFMTggICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDIsCitURVhUVVJFMTkgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0RDMsCitURVhUVVJFMjAgICAgICAgICAgICAgICAgICAgICAg
OiAweDg0RDQsCitURVhUVVJFMjEgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDUsCitURVhU
VVJFMjIgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDYsCitURVhUVVJFMjMgICAgICAgICAg
ICAgICAgICAgICAgOiAweDg0RDcsCitURVhUVVJFMjQgICAgICAgICAgICAgICAgICAgICAgOiAw
eDg0RDgsCitURVhUVVJFMjUgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDksCitURVhUVVJF
MjYgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REEsCitURVhUVVJFMjcgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0REIsCitURVhUVVJFMjggICAgICAgICAgICAgICAgICAgICAgOiAweDg0
REMsCitURVhUVVJFMjkgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REQsCitURVhUVVJFMzAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0REUsCitURVhUVVJFMzEgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0REYsCitBQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAgOiAweDg0RTAs
CisKKyAgICAvKiBUZXh0dXJlV3JhcE1vZGUgKi8KK1JFUEVBVCAgICAgICAgICAgICAgICAgICAg
ICAgICA6IDB4MjkwMSwKK0NMQU1QX1RPX0VER0UgICAgICAgICAgICAgICAgICA6IDB4ODEyRiwK
K01JUlJPUkVEX1JFUEVBVCAgICAgICAgICAgICAgICA6IDB4ODM3MCwKKworICAgIC8qIFVuaWZv
cm0gVHlwZXMgKi8KK0ZMT0FUX1ZFQzIgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1MCwKK0ZM
T0FUX1ZFQzMgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1MSwKK0ZMT0FUX1ZFQzQgICAgICAg
ICAgICAgICAgICAgICA6IDB4OEI1MiwKK0lOVF9WRUMyICAgICAgICAgICAgICAgICAgICAgICA6
IDB4OEI1MywKK0lOVF9WRUMzICAgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1NCwKK0lOVF9W
RUM0ICAgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1NSwKK0JPT0wgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4OEI1NiwKK0JPT0xfVkVDMiAgICAgICAgICAgICAgICAgICAgICA6IDB4
OEI1NywKK0JPT0xfVkVDMyAgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1OCwKK0JPT0xfVkVD
NCAgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1OSwKK0ZMT0FUX01BVDIgICAgICAgICAgICAg
ICAgICAgICA6IDB4OEI1QSwKK0ZMT0FUX01BVDMgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1
QiwKK0ZMT0FUX01BVDQgICAgICAgICAgICAgICAgICAgICA6IDB4OEI1QywKK1NBTVBMRVJfMkQg
ICAgICAgICAgICAgICAgICAgICA6IDB4OEI1RSwKK1NBTVBMRVJfQ1VCRSAgICAgICAgICAgICAg
ICAgICA6IDB4OEI2MCwKKworICAgIC8qIFZlcnRleCBBcnJheXMgKi8KK1ZFUlRFWF9BVFRSSUJf
QVJSQVlfRU5BQkxFRCAgICAgICAgOiAweDg2MjIsCitWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUg
ICAgICAgICAgIDogMHg4NjIzLAorVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUgICAgICAgICA6
IDB4ODYyNCwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAgICAgICAgICAgOiAweDg2MjUsCitW
RVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgICAgIDogMHg4ODZBLAorVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9QT0lOVEVSICAgICAgICA6IDB4ODY0NSwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkcgOiAweDg4OUYsCisKKyAgICAvKiBSZWFkIEZvcm1hdCAqLworSU1QTEVNRU5U
QVRJT05fQ09MT1JfUkVBRF9UWVBFICAgOiAweDhCOUEsCitJTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX0ZPUk1BVCA6IDB4OEI5QiwKKworICAgIC8qIFNoYWRlciBTb3VyY2UgKi8KK0NPTVBJTEVf
U1RBVFVTICAgICAgICAgICAgICAgICA6IDB4OEI4MSwKKworICAgIC8qIFNoYWRlciBQcmVjaXNp
b24tU3BlY2lmaWVkIFR5cGVzICovCitMT1dfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgOiAw
eDhERjAsCitNRURJVU1fRkxPQVQgICAgICAgICAgICAgICAgICAgOiAweDhERjEsCitISUdIX0ZM
T0FUICAgICAgICAgICAgICAgICAgICAgOiAweDhERjIsCitMT1dfSU5UICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDhERjMsCitNRURJVU1fSU5UICAgICAgICAgICAgICAgICAgICAgOiAweDhE
RjQsCitISUdIX0lOVCAgICAgICAgICAgICAgICAgICAgICAgOiAweDhERjUsCisKKyAgICAvKiBG
cmFtZWJ1ZmZlciBPYmplY3QuICovCitGUkFNRUJVRkZFUiAgICAgICAgICAgICAgICAgICAgOiAw
eDhENDAsCitSRU5ERVJCVUZGRVIgICAgICAgICAgICAgICAgICAgOiAweDhENDEsCisKK1JHQkE0
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODA1NiwKK1JHQjVfQTEgICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4ODA1NywKK1JHQjU2NSAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
OEQ2MiwKK0RFUFRIX0NPTVBPTkVOVDE2ICAgICAgICAgICAgICA6IDB4ODFBNSwKK1NURU5DSUxf
SU5ERVg4ICAgICAgICAgICAgICAgICA6IDB4OEQ0OCwKK0RFUFRIX1NURU5DSUwgICAgICAgICAg
ICAgICAgICA6IDB4ODRGOSwKKworUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgIDogMHg4
RDQyLAorUkVOREVSQlVGRkVSX0hFSUdIVCAgICAgICAgICAgIDogMHg4RDQzLAorUkVOREVSQlVG
RkVSX0lOVEVSTkFMX0ZPUk1BVCAgIDogMHg4RDQ0LAorUkVOREVSQlVGRkVSX1JFRF9TSVpFICAg
ICAgICAgIDogMHg4RDUwLAorUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgICAgICAgIDogMHg4RDUx
LAorUkVOREVSQlVGRkVSX0JMVUVfU0laRSAgICAgICAgIDogMHg4RDUyLAorUkVOREVSQlVGRkVS
X0FMUEhBX1NJWkUgICAgICAgIDogMHg4RDUzLAorUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAg
ICAgIDogMHg4RDU0LAorUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSAgICAgIDogMHg4RDU1LAor
CitGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFICAgICAgICAgICA6IDB4OENEMCwK
K0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgICAgICAgICAgIDogMHg4Q0QxLAor
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMICAgICAgICAgOiAweDhDRDIsCitG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSA6IDB4OENEMywKKwor
Q09MT1JfQVRUQUNITUVOVDAgICAgICAgICAgICAgIDogMHg4Q0UwLAorREVQVEhfQVRUQUNITUVO
VCAgICAgICAgICAgICAgIDogMHg4RDAwLAorU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAg
IDogMHg4RDIwLAorREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgIDogMHg4MjFBLAorCitO
T05FICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwLAorCitGUkFNRUJVRkZFUl9DT01QTEVU
RSAgICAgICAgICAgICAgICAgICAgICA6IDB4OENENSwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
QVRUQUNITUVOVCAgICAgICAgIDogMHg4Q0Q2LAorRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNT
SU5HX0FUVEFDSE1FTlQgOiAweDhDRDcsCitGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lP
TlMgICAgICAgICA6IDB4OENEOSwKK0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEICAgICAgICAgICAg
ICAgICAgIDogMHg4Q0RELAorCitGUkFNRUJVRkZFUl9CSU5ESU5HICAgICAgICAgICAgOiAweDhD
QTYsCitSRU5ERVJCVUZGRVJfQklORElORyAgICAgICAgICAgOiAweDhDQTcsCitNQVhfUkVOREVS
QlVGRkVSX1NJWkUgICAgICAgICAgOiAweDg0RTgsCisKK0lOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OICA6IDB4MDUwNiwKKworLyogV2ViR0wtc3BlY2lmaWMgZW51bXMgKi8KK1VOUEFDS19G
TElQX1lfV0VCR0wgICAgICAgICAgICAgICAgOiAweDkyNDAsCitVTlBBQ0tfUFJFTVVMVElQTFlf
QUxQSEFfV0VCR0wgICAgIDogMHg5MjQxLAorQ09OVEVYVF9MT1NUX1dFQkdMICAgICAgICAgICAg
ICAgICA6IDB4OTI0MiwKK1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgOiAweDky
NDMsCitCUk9XU0VSX0RFRkFVTFRfV0VCR0wgICAgICAgICAgICAgIDogMHg5MjQ0Cit9OworCisv
LyBPdGhlciBub24tZnVuY3Rpb24gcHJvcGVydGllcyBvbiB0aGUgV2ViR0wgb2JqZWN0Cit2YXIg
b3RoZXJQcm9wZXJ0aWVzID0geworZHJhd2luZ0J1ZmZlcldpZHRoICA6ICJudW1iZXIiLAorZHJh
d2luZ0J1ZmZlckhlaWdodCA6ICJudW1iZXIiLAorY2FudmFzICAgICAgICAgICAgICA6ICJpbXBs
ZW1lbnRhdGlvbi1kZXBlbmRlbnQiCit9OworCisvLyBQcm9wZXJ0aWVzIHRvIGJlIGlnbm9yZWQg
KGFzIGEgbGlzdCBvZiBzdHJpbmdzKSBiZWNhdXNlIHRoZXkgd2VyZQorLy8gYWRkZWQgaW4gdmVy
c2lvbnMgb2YgdGhlIHNwZWMgdGhhdCBhcmUgYmFja3dhcmQtY29tcGF0aWJsZSB3aXRoCisvLyB0
aGlzIHZlcnNpb24KK3ZhciBpZ25vcmVkUHJvcGVydGllcyA9IFsKK107CisKKy8vIENvbnN0YW50
cyByZW1vdmVkIGZyb20gdGhlIFdlYkdMIHNwZWMgY29tcGFyZWQgdG8gRVMgMi4wCit2YXIgcmVt
b3ZlZENvbnN0YW50cyA9IHsKK05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA6IDB4ODZB
MiwKK0ZJWEVEICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTQwQywKK0FDVElWRV9VTklG
T1JNX01BWF9MRU5HVEggICAgICA6IDB4OEI4NywKK0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdU
SCAgICA6IDB4OEI4QSwKK0VYVEVOU0lPTlMgICAgICAgICAgICAgICAgICAgICA6IDB4MUYwMywK
K0lORk9fTE9HX0xFTkdUSCAgICAgICAgICAgICAgICA6IDB4OEI4NCwKK1NIQURFUl9TT1VSQ0Vf
TEVOR1RIICAgICAgICAgICA6IDB4OEI4OCwKK1NIQURFUl9DT01QSUxFUiAgICAgICAgICAgICAg
ICA6IDB4OERGQSwKK1NIQURFUl9CSU5BUllfRk9STUFUUyAgICAgICAgICA6IDB4OERGOCwKK05V
TV9TSEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICA6IDB4OERGOSwKK307CisKK2Z1bmN0aW9uIGFz
c2VydFByb3BlcnR5KHYsIHApIHsKKyAgaWYgKHAgaW4gdikgeworICAgIHJldHVybiB0cnVlOwor
ICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIlByb3BlcnR5IGRvZXMgbm90IGV4aXN0OiAiICsg
cCkKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0Tm9Qcm9wZXJ0
eSh2LCBwKSB7CisgIGlmIChwIGluIHYpIHsKKyAgICB0ZXN0RmFpbGVkKCJQcm9wZXJ0eSBpcyBk
ZWZpbmVkIGFuZCBzaG91bGQgbm90IGJlOiAiICsgcCkKKyAgICByZXR1cm4gZmFsc2U7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0TXNnXyhi
b29sLCBtc2cpIHsKKyAgaWYgKCFib29sKSAvLyBzaG93IG9ubHkgZmFpbHVyZXMgdG8gYXZvaWQg
c3BhbW1pbmcgcmVzdWx0IGxpc3QKKyAgICBhc3NlcnRNc2coYm9vbCwgbXNnKTsKKyAgcmV0dXJu
IGJvb2w7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwor
dmFyIHBhc3NlZCA9IHRydWU7Citmb3IgKHZhciBpIGluIGNvbnN0YW50cykgeworICB2YXIgciA9
IGFzc2VydFByb3BlcnR5KGdsLCBpKSAmJiBhc3NlcnRNc2dfKGdsW2ldID09IGNvbnN0YW50c1tp
XSwgIlByb3BlcnR5ICIraSsiIHZhbHVlIHRlc3QgIitnbFtpXSsiID09ICIrY29uc3RhbnRzW2ld
KTsKKyAgcGFzc2VkID0gcGFzc2VkICYmIHI7Cit9CitpZiAocGFzc2VkKSB7CisgIHRlc3RQYXNz
ZWQoIkFsbCBXZWJHTCBjb25zdGFudHMgZm91bmQgdG8gaGF2ZSBjb3JyZWN0IHZhbHVlcy4iKTsK
K30KK3Bhc3NlZCA9IHRydWU7Citmb3IgKHZhciBpIGluIHJlbW92ZWRDb25zdGFudHMpIHsKKyAg
dmFyIHIgPSBhc3NlcnROb1Byb3BlcnR5KGdsLCBpKTsKKyAgcGFzc2VkID0gcGFzc2VkICYmIHI7
Cit9CitpZiAocGFzc2VkKSB7CisgIHRlc3RQYXNzZWQoIkFsbCBjb25zdGFudHMgcmVtb3ZlZCBm
cm9tIFdlYkdMIHNwZWMgd2VyZSBhYnNlbnQgZnJvbSBXZWJHTCBjb250ZXh0LiIpOworfQordmFy
IGV4dGVuZGVkID0gZmFsc2U7Citmb3IgKHZhciBpIGluIGdsKSB7CisgIGlmIChjb25zdGFudHNb
aV0gIT09IHVuZGVmaW5lZCkgeworICAgIC8vIE9LOyBrbm93biBjb25zdGFudAorICB9IGVsc2Ug
aWYgKGlnbm9yZWRQcm9wZXJ0aWVzLmluZGV4T2YoaSkgIT0gLTEpIHsKKyAgICAvLyBPSzsgY29u
c3RhbnQgdGhhdCBzaG91bGQgYmUgaWdub3JlZCBiZWNhdXNlIGl0IHdhcyBhZGRlZCBpbiBhIGxh
dGVyIHZlcnNpb24gb2YgdGhlIHNwZWMKKyAgfSBlbHNlIGlmIChvdGhlclByb3BlcnRpZXNbaV0g
IT09IHVuZGVmaW5lZCAmJgorICAgICAgICAgICAgIChvdGhlclByb3BlcnRpZXNbaV0gPT0gImlt
cGxlbWVudGF0aW9uLWRlcGVuZGVudCIgfHwgdHlwZW9mIGdsW2ldID09IG90aGVyUHJvcGVydGll
c1tpXSkpIHsKKyAgICAvLyBPSzsga25vd24gcHJvcGVydHkgb2Yga25vd24gdHlwZQorICB9IGVs
c2UgaWYgKHR5cGVvZiBnbFtpXSAhPSAiZnVuY3Rpb24iICYmIHJlbW92ZWRDb25zdGFudHNbaV0g
PT09IHVuZGVmaW5lZCkgeworICAgIGlmICghZXh0ZW5kZWQpIHsKKyAgICAgIGV4dGVuZGVkID0g
dHJ1ZTsKKyAgICAgIHRlc3RGYWlsZWQoIkFsc28gZm91bmQgdGhlIGZvbGxvd2luZyBleHRyYSBw
cm9wZXJ0aWVzOiIpOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKGkpOworICB9Cit9CisKK2lmICgh
ZXh0ZW5kZWQpIHsKKyAgdGVzdFBhc3NlZCgiTm8gZXh0cmEgcHJvcGVydGllcyBmb3VuZCBvbiBX
ZWJHTCBjb250ZXh0LiIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1hdHRyaWJ1dGUtcHJlc2VydmUtZHJhd2luZy1idWZmZXIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1hdHRyaWJ1dGUtcHJlc2VydmUtZHJhd2luZy1idWZmZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YTAyMzk5NmZiNzBhZTYwZWUxYzFkNjRlNTkxOWQxZTI2ZWYwOWY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvY29udGV4dC9jb250ZXh0LWF0dHJpYnV0ZS1wcmVzZXJ2ZS1kcmF3aW5nLWJ1ZmZlci5odG1s
CkBAIC0wLDAgKzEsMTE3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHN0eWxlPgorLnBhdHRlcm4geworICB3aGl0ZS1zcGFjZTogbm93cmFwOworICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7Cit9CitjYW52YXMgeworICB3aWR0aDoxMHB4OworICBoZWln
aHQ6MTBweDsKK30KKy5zcXVhcmUgeworICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgd2lkdGg6
MTBweDsKKyAgaGVpZ2h0OjEwcHg7CisgIGJhY2tncm91bmQtY29sb3I6cmVkOworfQorPC9zdHls
ZT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Citm
dW5jdGlvbiBjaGVja1Jlc3VsdChjdHgxLCBjdHgyLCBwcmVzZXJ2ZSkgeworICB2YXIgaW1nRGF0
YTEgPSBjdHgxLmdldEltYWdlRGF0YSgwLDAsMSwxKTsKKyAgdmFyIGltZ0RhdGEyID0gY3R4Mi5n
ZXRJbWFnZURhdGEoMCwwLDEsMSk7CisgIHZhciBjb3JyZWN0MSA9IFsyNTUsMCwwLDI1NV07Cisg
IHZhciBjb3JyZWN0MiA9IHByZXNlcnZlID8gWzI1NSwwLDAsMjU1XSA6IFswLDAsMCwyNTVdOwor
ICB2YXIgb2sxID0gdHJ1ZTsKKyAgdmFyIG9rMiA9IHRydWU7CisgIGZvciAodmFyIHAgPSAwOyBw
IDwgNDsgKytwKSB7CisgICAgaWYgKGltZ0RhdGExLmRhdGFbcF0gIT0gY29ycmVjdDFbcF0pCisg
ICAgICBvazEgPSBmYWxzZTsKKyAgICBpZiAoaW1nRGF0YTIuZGF0YVtwXSAhPSBjb3JyZWN0Mltw
XSkKKyAgICAgIG9rMiA9IGZhbHNlOworICB9CisgIGlmIChvazEgJiYgb2syKQorICAgIHRlc3RQ
YXNzZWQoJ1JlbmRlcmVkIG9rIHdpdGggcHJlc2VydmVEcmF3aW5nQnVmZmVyICcgKyBwcmVzZXJ2
ZSArJy4nKTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoJ0RpZCBub3QgcmVuZGVyIG9rIHdpdGgg
cHJlc2VydmVEcmF3aW5nQnVmZmVyICcgKyBwcmVzZXJ2ZSArICcuJyk7CisgIGlmIChwcmVzZXJ2
ZSkgeworICAgIGZpbmlzaFRlc3QoKQorICB9IGVsc2UgeworICAgIHJ1blRlc3QodHJ1ZSk7Cisg
IH0KK30KKworZnVuY3Rpb24gcnVuVGVzdChwcmVzZXJ2ZSkgeworICB2YXIgYzEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYycgKyAocHJlc2VydmUgKiAzICsgMSkpOworICB2YXIgYzIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycgKyAocHJlc2VydmUgKiAzICsgMikpOworICB2YXIg
YzMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycgKyAocHJlc2VydmUgKiAzICsgMykpOwor
ICB2YXIgY3R4MSA9IGMxLmdldENvbnRleHQoJzJkJyk7CisgIHZhciBjdHgyID0gYzIuZ2V0Q29u
dGV4dCgnMmQnKTsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjMywgeyBhbHBoYTpm
YWxzZSwgcHJlc2VydmVEcmF3aW5nQnVmZmVyOnByZXNlcnZlIH0pOworICBpZiAoIWdsKSB7Cisg
ICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIGlmIChwcmVzZXJ2
ZSkgeworICAgICAgZmluaXNoVGVzdCgpCisgICAgfSBlbHNlIHsKKyAgICAgIHJ1blRlc3QodHJ1
ZSk7CisgICAgfQorICAgIHJldHVybjsKKyAgfQorICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEp
OworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgY3R4MS5kcmF3SW1hZ2UoYzMs
IDAsIDApOworICB3dHUud2FpdEZvckNvbXBvc2l0ZShmdW5jdGlvbigpIHsKKyAgICBjdHgyLmRy
YXdJbWFnZShjMywgMCwgMCk7CisgICAgY2hlY2tSZXN1bHQoY3R4MSwgY3R4MiwgcHJlc2VydmUp
OworICB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJwYXR0
ZXJuIj4KKyAgPGNhbnZhcyBpZD0nYzEnPjwvY2FudmFzPgorICA8Y2FudmFzIGlkPSdjMic+PC9j
YW52YXM+CisgIDxjYW52YXMgaWQ9J2MzJz48L2NhbnZhcz4KKzwvZGl2PgorPHNwYW4+c2hvdWxk
IGxvb2sgbGlrZTwvc3Bhbj4KKzxkaXYgY2xhc3M9InBhdHRlcm4iPgorICA8ZGl2IGNsYXNzPSdz
cXVhcmUnPjwvZGl2PgorICA8ZGl2IGNsYXNzPSdzcXVhcmUnIHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOmJsYWNrJz48L2Rpdj4KKyAgPGRpdiBjbGFzcz0nc3F1YXJlJz48L2Rpdj4KKzwvZGl2Pgor
PGhyIC8+Cis8ZGl2IGNsYXNzPSJwYXR0ZXJuIj4KKyAgPGNhbnZhcyBpZD0nYzQnPjwvY2FudmFz
PgorICA8Y2FudmFzIGlkPSdjNSc+PC9jYW52YXM+CisgIDxjYW52YXMgaWQ9J2M2Jz48L2NhbnZh
cz4KKzwvZGl2PgorPHNwYW4+c2hvdWxkIGxvb2sgbGlrZTwvc3Bhbj4KKzxkaXYgY2xhc3M9InBh
dHRlcm4iPgorICA8ZGl2IGNsYXNzPSdzcXVhcmUnPjwvZGl2PgorICA8ZGl2IGNsYXNzPSdzcXVh
cmUnPjwvZGl2PgorICA8ZGl2IGNsYXNzPSdzcXVhcmUnPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IHRoYXQgcHJlc2VydmVEcmF3aW5n
QnVmZmVyIGF0dHJpYnV0ZSBpcyBob25vcmVkLicpOworcnVuVGVzdChmYWxzZSk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3Nob3VsZEJlVHJ1ZSgic3VjY2Vzc2Z1bGx5UGFyc2Vk
Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250
ZXh0L2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFjNzk2OTg4Y2UwY2FmMjg1Mjc1ZjZkODgyYTQxNDRhZTJjNWZiMmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1z
dGVuY2lsLWFudGlhbGlhcy5odG1sCkBAIC0wLDAgKzEsMzMyIEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgcG9zOworYXR0cmlidXRlIHZlYzQg
Y29sb3JJbjsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBjb2xv
ciA9IGNvbG9ySW47CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcy54eXosIDEuMCk7Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKKy8vIFRoZXNlIGZvdXIgZGVjbGFyYXRpb25zIG5l
ZWQgdG8gYmUgZ2xvYmFsIGZvciAic2hvdWxkQmUiIHRvIHNlZSB0aGVtCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit2YXIgY29udGV4dEF0dHJpYnMgPSBudWxsOwordmFyIHJl
ZENoYW5uZWxzID0gWzAsIDAsIDBdOwordmFyIGNvcnJlY3RDb2xvciA9IG51bGw7Cit2YXIgZnJh
bWVidWZmZXI7Cit2YXIgZmJIYXNDb2xvcjsKK3ZhciBmYkhhc0RlcHRoOwordmFyIGZiSGFzU3Rl
bmNpbDsKKworZnVuY3Rpb24gaW5pdCgpCit7CisgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzIGFyZSB3b3JraW5nIGFzIHNwZWNpZmllZCwgaW5jbHVkaW5nIGFs
cGhhLCBkZXB0aCwgc3RlbmNpbCwgYW50aWFsaWFzLCBidXQgbm90IHByZW11bHRpcGxpZWRBbHBo
YScpOworCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBnZXRXZWJHTChjYW52YXNXaWR0
aCwgY2FudmFzSGVpZ2h0LCBjb250ZXh0QXR0cmlicywgY2xlYXJDb2xvciwgY2xlYXJEZXB0aCwg
Y2xlYXJTdGVuY2lsKQoreworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKKyAgICBpZiAoIWNhbnZhcykKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
Y2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hl
aWdodDsKKworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIGNvbnRleHRBdHRy
aWJzKTsKKyAgICBpZiAoIWdsKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIHZhciBwcm9n
cmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJwb3Mi
LCAiY29sb3JJbiJdKTsKKyAgICBpZiAoIXByb2dyYW0pCisgICAgICAgIHJldHVybiBudWxsOwor
CisgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIGdsLmVuYWJsZShnbC5TVEVOQ0lM
X1RFU1QpOworCisgICAgZ2wuY2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFd
LCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKKyAgICBnbC5jbGVhckRlcHRoKGNsZWFy
RGVwdGgpOworICAgIGdsLmNsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9C
VUZGRVJfQklUKTsKKworICAgIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsK
KyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAg
ICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIGdsLmNhbnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0
dXJlLCAwKTsKKyAgICBmYkhhc1N0ZW5jaWwgPSBmYWxzZTsKKyAgICBmYkhhc0RlcHRoID0gZmFs
c2U7CisgICAgZmJIYXNDb2xvciA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpID09IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFOworICAgIGlmIChmYkhhc0NvbG9yKSB7
CisgICAgICB2YXIgZGVwdGhTdGVuY2lsID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAg
ICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsKTsKKyAg
ICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9TVEVO
Q0lMLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQpOworICAgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWwpOworICAgICAgZmJIYXNEZXB0aCA9
IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpID09IGdsLkZSQU1FQlVG
RkVSX0NPTVBMRVRFOworICAgICAgaWYgKCFmYkhhc0RlcHRoKSB7CisgICAgICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgICAgIHNob3VsZEJlKCdnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURScpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZmJIYXNTdGVuY2lsID0gdHJ1ZTsKKyAg
ICAgIH0KKyAgICB9CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxs
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKworICAgIHJldHVybiBnbDsKK30KKworZnVuY3Rpb24gZHJhd0FuZFJlYWRQ
aXhlbChnbCwgdmVydGljZXMsIGNvbG9ycykKK3sKKyAgICB2YXIgY29sb3JPZmZzZXQgPSB2ZXJ0
aWNlcy5ieXRlTGVuZ3RoOworCisgICAgdmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8pOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBjb2xvck9mZnNldCArIGNvbG9ycy5ieXRlTGVuZ3RoLCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIHZlcnRp
Y2VzKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JPZmZzZXQs
IGNvbG9ycyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCBjb2xv
ck9mZnNldCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKyAgICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgdmVydGljZXMubGVuZ3RoIC8gMyk7Cit9CisKK2Z1
bmN0aW9uIHRlc3REZWZhdWx0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBkZWZhdWx0IGF0dHJp
YnV0ZXM6IHsgc3RlbmNpbDpmYWxzZSB9Iik7CisgICAgc2hvdWxkQmVOb25OdWxsKCJnbCA9IGdl
dFdlYkdMKDEsIDEsIG51bGwsIFsgMCwgMCwgMCwgMCBdLCAxLCAwKSIpOworICAgIHNob3VsZEJl
RmFsc2UoImdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkuc3RlbmNpbCIpOworICAgIHNob3VsZEJl
VHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykgPT0gMCIpOworfQorCitmdW5j
dGlvbiB0ZXN0QWxwaGEoYWxwaGEpCit7CisgICAgZGVidWcoIlRlc3RpbmcgYWxwaGEgPSAiICsg
YWxwaGEpOworICAgIGlmIChhbHBoYSkgeworICAgICAgICBzaG91bGRCZU5vbk51bGwoImdsID0g
Z2V0V2ViR0woMSwgMSwgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxz
ZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgxLCAxLCB7
IGFscGhhOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBm
YWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJn
bC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPT0gMCIpOworICAgIH0KKyAgICBzaG91bGRC
ZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5SRURfQklUUykgPj0gOCIpOworICAgIHNob3VsZEJl
VHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpID49IDgiKTsKKyAgICBzaG91bGRC
ZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDgiKTsKKyAgICBzaG91bGRC
ZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA9PSAwIik7CisgICAgc2hvdWxk
QmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA9PSAwIik7CisKKyAgICBz
aG91bGRCZU5vbk51bGwoImNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiY29udGV4dEF0dHJpYnMuYWxwaGEgPT0gIiArIGFscGhh
KTsKKworICAgIHZhciBjb3JyZWN0Q29sb3IgPSAoY29udGV4dEF0dHJpYnMuYWxwaGEgPyBbMCwg
MCwgMCwgMF0gOiBbMCwgMCwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgMSwgMSwgY29ycmVjdENvbG9yKTsKKworICAgIGlmIChmYkhhc0NvbG9yKSB7CisgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAg
IGdsLmNsZWFyQ29sb3IoMC41LCAwLjUsIDAuNSwgMC41KTsKKyAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwg
MSwgWzEyNywgMTI3LCAxMjcsIDEyN10sIHVuZGVmaW5lZCwgMSk7CisgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVz
dERlcHRoKGRlcHRoKQoreworICAgIGRlYnVnKCJUZXN0aW5nIGRlcHRoID0gIiArIGRlcHRoKTsK
KyAgICBpZiAoZGVwdGgpIHsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJnbCA9IGdldFdlYkdM
KDEsIDEsIHsgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAx
IF0sIDEsIDApIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkRF
UFRIX0JJVFMpID49IDE2Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJnbCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50
aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklUUykgPT0gMCIpOworICAgIH0KKyAg
ICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5SRURfQklUUykgPj0gOCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpID49IDgiKTsKKyAg
ICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDgiKTsKKyAg
ICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5BTFBIQV9CSVRTKSA+PSA4Iik7CisK
KyAgICBzaG91bGRCZU5vbk51bGwoImNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJp
YnV0ZXMoKSIpOworCisgICAgZ2wuZGVwdGhGdW5jKGdsLk5FVkVSKTsKKworICAgIHZhciB2ZXJ0
aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgMS4wLCAgMS4wLCAwLjAsCisgICAg
ICAgIC0xLjAsICAxLjAsIDAuMCwKKyAgICAgICAgLTEuMCwgLTEuMCwgMC4wLAorICAgICAgICAg
MS4wLCAgMS4wLCAwLjAsCisgICAgICAgIC0xLjAsIC0xLjAsIDAuMCwKKyAgICAgICAgIDEuMCwg
LTEuMCwgMC4wXSk7CisgICAgdmFyIGNvbG9ycyA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAgICAg
MjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAs
IDAsIDI1NSwKKyAgICAgICAgMjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1
LAorICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOworCisgICAgZHJhd0FuZFJlYWRQaXhlbChnbCwg
dmVydGljZXMsIGNvbG9ycywgMCwgMCk7CisgICAgY29ycmVjdENvbG9yID0gKGNvbnRleHRBdHRy
aWJzLmRlcHRoID8gWzAsIDAsIDAsIDI1NV0gOiBbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBjb3JyZWN0Q29sb3IpOworCisgICAgaWYg
KGZiSGFzRGVwdGgpIHsKKyAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZnJhbWVidWZmZXIpOworICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgICAgZHJhd0FuZFJlYWRQaXhlbChnbCwgdmVydGljZXMsIGNv
bG9ycywgMCwgMCk7CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBb
MCwgMCwgMCwgMjU1XSk7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IG51bGwpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN0ZW5jaWxBbmREZXB0aChzdGVuY2ls
LCBkZXB0aCkKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBzdGVuY2lsID0gIiArIHN0ZW5jaWwgKyAi
LCBkZXB0aCA9ICIgKyBkZXB0aCk7CisgICAgdmFyIGNyZWF0aW9uU3RyaW5nID0KKyAgICAgICAg
ImdsID0gZ2V0V2ViR0woMSwgMSwgeyBkZXB0aDogIiArIGRlcHRoICsgIiwgc3RlbmNpbDogIiAr
IHN0ZW5jaWwgKyAiLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSI7
CisgICAgc2hvdWxkQmVOb25OdWxsKGNyZWF0aW9uU3RyaW5nKTsKKworICAgIHNob3VsZEJlVHJ1
ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSA+PSA4Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgPj0gOCIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMVUVfQklUUykgPj0gOCIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMUEhBX0JJVFMpID49IDgiKTsKKyAgICBpZiAoZGVwdGgp
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkRFUFRIX0JJVFMpID49
IDE2Iik7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihn
bC5ERVBUSF9CSVRTKSA9PSAwIik7CisKKyAgICBpZiAoc3RlbmNpbCkKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA+PSA4Iik7CisgICAgZWxz
ZQorICAgICAgICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5TVEVOQ0lMX0JJVFMp
ID09IDAiKTsKKworICAgIHNob3VsZEJlTm9uTnVsbCgiY29udGV4dEF0dHJpYnMgPSBnbC5nZXRD
b250ZXh0QXR0cmlidXRlcygpIik7CisgICAgaWYgKCFkZXB0aCAmJiBjb250ZXh0QXR0cmlicy5k
ZXB0aCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBpbXBsZW1lbnRhdGlvbiBwcm92aWRl
ZCBhIGRlcHRoIGJ1ZmZlciB3aGVuIGl0IHNob3VsZCBub3QgaGF2ZSIpOworICAgIH0KKyAgICBp
ZiAoIWNvbnRleHRBdHRyaWJzLmRlcHRoKQorICAgICAgICBkZXB0aCA9IGZhbHNlOworICAgIGlm
ICghc3RlbmNpbCAmJiBjb250ZXh0QXR0cmlicy5zdGVuY2lsKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIldlYkdMIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGEgc3RlbmNpbCBidWZmZXIgd2hlbiBp
dCBzaG91bGQgbm90IGhhdmUiKTsKKyAgICB9CisgICAgaWYgKCFjb250ZXh0QXR0cmlicy5zdGVu
Y2lsKQorICAgICAgICBzdGVuY2lsID0gZmFsc2U7CisKKyAgICBnbC5kZXB0aEZ1bmMoZ2wuQUxX
QVlTKTsKKworICAgIGdsLnN0ZW5jaWxGdW5jKGdsLk5FVkVSLCAxLCAxKTsKKyAgICBnbC5zdGVu
Y2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuS0VFUCk7CisKKyAgICB2YXIgdmVydGljZXMgPSBu
ZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgIDEuMCwgMS4wLCAwLjAsCisgICAgICAgIC0xLjAs
IDEuMCwgMC4wLAorICAgICAgICAtMS4wLCAtMS4wLCAwLjAsCisgICAgICAgICAxLjAsIDEuMCwg
MC4wLAorICAgICAgICAtMS4wLCAtMS4wLCAwLjAsCisgICAgICAgICAxLjAsIC0xLjAsIDAuMF0p
OworICAgIHZhciBjb2xvcnMgPSBuZXcgVWludDhBcnJheShbCisgICAgICAgIDI1NSwgMCwgMCwg
MjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgMjU1LCAwLCAwLCAyNTUsCisg
ICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAg
MjU1LCAwLCAwLCAyNTVdKTsKKworICAgIGRyYXdBbmRSZWFkUGl4ZWwoZ2wsIHZlcnRpY2VzLCBj
b2xvcnMsIDAsIDApOworICAgIGNvcnJlY3RDb2xvciA9IChzdGVuY2lsID8gWzAsIDAsIDAsIDI1
NV0gOiBbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAw
LCAxLCAxLCBjb3JyZWN0Q29sb3IpCisKKyAgICBpZiAoZmJIYXNTdGVuY2lsKSB7CisgICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAg
IGRyYXdBbmRSZWFkUGl4ZWwoZ2wsIHZlcnRpY2VzLCBjb2xvcnMsIDAsIDApOworICAgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDAsIDI1NV0pOworICAgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RBbnRpYWxpYXMoYW50aWFsaWFzKQoreworICAgIGRlYnVnKCJUZXN0aW5nIGFu
dGlhbGlhcyA9ICIgKyBhbnRpYWxpYXMpOworICAgIC8vIEJvdGggdGhlIHdpZHRoIGFuZCBoZWln
aHQgb2YgY2FudmFzIGFyZSBOLgorICAgIHZhciBOID0gMjsKKyAgICBpZiAoYW50aWFsaWFzKQor
ICAgICAgICBzaG91bGRCZU5vbk51bGwoImdsID0gZ2V0V2ViR0woIiArIE4gKyAiLCAiICsgTiAr
ICIsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNlLCBhbnRpYWxp
YXM6IHRydWUgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CisgICAgZWxzZQorICAgICAgICBz
aG91bGRCZU5vbk51bGwoImdsID0gZ2V0V2ViR0woIiArIE4gKyAiLCAiICsgTiArICIsIHsgZGVw
dGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNl
IH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSIpOworICAgIHNob3VsZEJlTm9uTnVsbCgiY29udGV4
dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CisKKyAgICB2YXIgdmVydGlj
ZXMgPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgIDEuMCwgMS4wLCAwLjAsCisgICAgICAg
IC0xLjAsIDEuMCwgMC4wLAorICAgICAgICAtMS4wLCAtMS4wLCAwLjBdKTsKKyAgICB2YXIgY29s
b3JzID0gbmV3IFVpbnQ4QXJyYXkoWworICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAg
MjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1XSk7CisgICAgZHJhd0FuZFJl
YWRQaXhlbChnbCwgdmVydGljZXMsIGNvbG9ycywgMCwgMCk7CisgICAgdmFyIGJ1ZiA9IG5ldyBV
aW50OEFycmF5KE4gKiBOICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCBOLCBOLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIHJlZENoYW5uZWxzWzBdID0gYnVmWzQg
KiAoTiArIDEpXTsgLy8gKDEsIDEpCisgICAgcmVkQ2hhbm5lbHNbMV0gPSBidWZbNCAqIE4gKiAo
TiAtIDEpXTsgLy8gbGVmdCB0b3AKKyAgICByZWRDaGFubmVsc1syXSA9IGJ1Zls0ICogKE4gLSAx
KV07IC8vIHJpZ2h0IGJvdHRvbQorICAgIHNob3VsZEJlVHJ1ZSgicmVkQ2hhbm5lbHNbMV0gPT0g
MjU1ICYmIHJlZENoYW5uZWxzWzJdID09IDAiKTsKKyAgICBzaG91bGRCZSgicmVkQ2hhbm5lbHNb
MF0gIT0gMjU1ICYmIHJlZENoYW5uZWxzWzBdICE9IDAiLCAiY29udGV4dEF0dHJpYnMuYW50aWFs
aWFzIik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHRlc3REZWZhdWx0KCk7Cisg
ICAgdGVzdEFscGhhKHRydWUpOworICAgIHRlc3RBbHBoYShmYWxzZSk7CisgICAgdGVzdERlcHRo
KHRydWUpOworICAgIHRlc3REZXB0aChmYWxzZSk7CisgICAgdGVzdFN0ZW5jaWxBbmREZXB0aCh0
cnVlLCBmYWxzZSk7CisgICAgdGVzdFN0ZW5jaWxBbmREZXB0aChmYWxzZSwgZmFsc2UpOworICAg
IHRlc3RTdGVuY2lsQW5kRGVwdGgodHJ1ZSwgdHJ1ZSk7CisgICAgdGVzdFN0ZW5jaWxBbmREZXB0
aChmYWxzZSwgdHJ1ZSk7CisgICAgdGVzdEFudGlhbGlhcyh0cnVlKTsKKyAgICB0ZXN0QW50aWFs
aWFzKGZhbHNlKTsKKworICAgIGZpbmlzaFRlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2Nv
bnRleHQvY29udGV4dC1jcmVhdGlvbi1hbmQtZGVzdHJ1Y3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1jcmVhdGlvbi1hbmQtZGVzdHJ1Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjMyNGI1ZjE3
ODAzM2NkNTk4ZGY1MWI4YzE3NDQ5ZGIwYzY0NDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LWNyZWF0aW9uLWFuZC1kZXN0cnVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRl
c3QgdGhhdCBjb250ZXh0cyBhcmUgZnJlZWQgYW5kIGdhcmJhZ2UgY29sbGVjdGVkIHJlYXNvbmFi
bHk8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2l0ZXJhYmxlLXRlc3QuanMi
PiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgdGVzdCA9IEl0
ZXJhYmxlVGVzdC5jcmVhdGVDb250ZXh0Q3JlYXRpb25BbmREZXN0cnVjdGlvblRlc3QoKTsKK3Zh
ciBpdGVyYXRpb25zID0gcGFyc2VJbnQod3R1LmdldFVybE9wdGlvbnMoKS5pdGVyYXRpb25zLCAx
MCkgfHwgNTA7CitJdGVyYWJsZVRlc3QucnVuKHRlc3QsIGl0ZXJhdGlvbnMpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250
ZXh0LWNyZWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VlYjViMDkyYjgzNDEwZWQ1NTAwMjRiMDEy
NWI5MzRmYWY5MzU0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1jcmVhdGlv
bi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgdGhhdCB5b3UgY2FuIGNyZWF0ZSBsYXJnZSBudW1i
ZXJzIG9mIFdlYkdMIGNvbnRleHRzLjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVz
dHMvaXRlcmFibGUtdGVzdC5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7CisKK3ZhciB0ZXN0ID0gSXRlcmFibGVUZXN0LmNyZWF0ZUNvbnRleHRDcmVhdGlvblRlc3Qo
KTsKK3ZhciBpdGVyYXRpb25zID0gcGFyc2VJbnQod3R1LmdldFVybE9wdGlvbnMoKS5pdGVyYXRp
b25zLCAxMCkgfHwgNTA7CitJdGVyYWJsZVRlc3QucnVuKHRlc3QsIGl0ZXJhdGlvbnMpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1ldmljdGlvbi13aXRoLWdhcmJhZ2Ut
Y29sbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWV2aWN0aW9uLXdpdGgtZ2FyYmFnZS1j
b2xsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg5OGU3MzUyMDhjNDBlMTZhM2IyOWFhNTAxZmY0
NGRlMWQ5OTcwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1ldmljdGlvbi13
aXRoLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgdGhhdCBjb250
ZXh0IGV2aWN0aW9uIGFuZCBnYXJiYWdlIGNvbGxlY3Rpb24gZG8gbm90IGludGVyZmVyZSB3aXRo
IGVhY2ggb3RoZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CisvLyBTZWUgaHR0cDovL2NyYnVnLmNvbS8zNzQwODYgZm9yIG9yaWdpbmFsIGZhaWxpbmcg
Y2FzZS4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY29udGV4dCBldmljdGlvbiBhbmQgZ2FyYmFn
ZSBjb2xsZWN0aW9uIGRvIG5vdCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLiIpOwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgdG90YWxfaXRlcmF0aW9uID0gNTA7Cit2YXIgYXJy
YXlfY291bnQgPSAxMDsKKwordmFyIGJhbmsgPSBbXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJy
YXlfY291bnQ7IGkrKykKKyAgYmFua1tpXSA9IFtdOworCitmb3IgKHZhciBpdGVyID0gMDsgaXRl
ciA8IHRvdGFsX2l0ZXJhdGlvbjsgKytpdGVyKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
YXlfY291bnQ7IGkrKykKKyAgICBiYW5rW2ldW2l0ZXIgKiBpXSA9IGl0ZXI7CisKKyAgdmFyIGNh
bnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICB2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgIGNhbnZhcy53aWR0aCA9IDUwOworICBjYW52YXMu
aGVpZ2h0ID0gNTA7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsK
KyAgc2hvdWxkQmVUcnVlKCJwcm9ncmFtICE9IG51bGwiKTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgdmFy
IHBpeGVsID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDI1NSwgMCwgMjU1XSk7CisgIGdsLnRleEltYWdl
MkQoCisgICAgZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgcGl4ZWwpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJv
cnMgZnJvbSBpdGVyYXRpb24gIiArIGl0ZXIpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9j
b250ZXh0LWhpZGRlbi1hbHBoYS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWhpZGRlbi1hbHBoYS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVkNjdmYzAwOTM5ZmMzZTgzMzA3MTcxNGRhNjYyY2FlNTAwYmM5NmMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtaGlkZGVuLWFscGhhLmh0bWwKQEAg
LTAsMCArMSwxNjYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSd2cycgdHlwZT0neC1zaGFkZXIveC12ZXJ0ZXgnPgorICAgIGF0dHJp
YnV0ZSB2ZWMyIGFQb3NDb29yZDsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGds
X1Bvc2l0aW9uID0gdmVjNChhUG9zQ29vcmQsIDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4K
KworPHNjcmlwdCBpZD0nZnMnIHR5cGU9J3gtc2hhZGVyL3gtZnJhZ21lbnQnPgorICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisgICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHBvc0Nvb3Jkc19hcnIgPSBuZXcgRmxvYXQz
MkFycmF5KDIgKiA0KTsKK3ZhciBwb3NDb29yZHNfYnVmZiA9IG51bGw7CitmdW5jdGlvbiBEcmF3
UXVhZChnbCwgcHJvZywgeDAsIHkwLCB4MSwgeTEpIHsKKyAgICBnbC51c2VQcm9ncmFtKHByb2cp
OworCisgICAgaWYgKCFwb3NDb29yZHNfYnVmZikgeworICAgICAgICBwb3NDb29yZHNfYnVmZiA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIH0KKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgcG9zQ29vcmRzX2J1ZmYpOworICAgIHBvc0Nvb3Jkc19hcnJbMF0gPSB4MDsKKyAgICBw
b3NDb29yZHNfYXJyWzFdID0geTA7CisKKyAgICBwb3NDb29yZHNfYXJyWzJdID0geDE7CisgICAg
cG9zQ29vcmRzX2FyclszXSA9IHkwOworCisgICAgcG9zQ29vcmRzX2Fycls0XSA9IHgwOworICAg
IHBvc0Nvb3Jkc19hcnJbNV0gPSB5MTsKKworICAgIHBvc0Nvb3Jkc19hcnJbNl0gPSB4MTsKKyAg
ICBwb3NDb29yZHNfYXJyWzddID0geTE7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIHBvc0Nvb3Jkc19hcnIsIGdsLlNUUkVBTV9EUkFXKTsKKworICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHByb2cuYVBvc0Nvb3JkKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KHByb2cuYVBvc0Nvb3JkLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNCk7Cit9CisKK2Z1bmN0aW9uIERyYXdTcXVh
cmUoZ2wsIHByb2csIHNpemUpIHsKKyAgICBEcmF3UXVhZChnbCwgcHJvZywgLXNpemUsIC1zaXpl
LCBzaXplLCBzaXplKTsKK30KKworZnVuY3Rpb24gUmVzZXQoZ2wpIHsKKyAgICBnbC5jYW52YXMu
d2lkdGggKz0gMTsKKyAgICBnbC5jYW52YXMud2lkdGggLT0gMTsKK30KKwordmFyIGlDb2xvcjsK
K3ZhciBwaXhlbDsKK3ZhciBkYXRhVVJMX3ByZTsKK3ZhciBkYXRhVVJMX3Bvc3Q7CisKK2Z1bmN0
aW9uIFRlc3QoZ2wsIHByb2csIHNob3VsZEZpbmlzaCkgeworICAgIGdsLmVuYWJsZShnbC5CTEVO
RCk7CisgICAgZ2wuYmxlbmRGdW5jKGdsLlpFUk8sIGdsLkRTVF9BTFBIQSk7CisKKyAgICBpQ29s
b3IgPSA2NDsKKyAgICB2YXIgZkNvbG9yID0gaUNvbG9yIC8gMjU1LjA7CisKKyAgICAvLy8vLy8v
Ly8vLy8vLy8vLy8KKworICAgIGRlYnVnKCdjbGVhcihSLEcsQiwwKScpOworCisgICAgUmVzZXQo
Z2wpOworCisgICAgZ2wuY2xlYXJDb2xvcihmQ29sb3IsIGZDb2xvciwgZkNvbG9yLCAwLjApOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZGF0YVVSTF9wcmUgPSBn
bC5jYW52YXMudG9EYXRhVVJMKCk7CisgICAgLy9jb25zb2xlLmxvZygnQmVmb3JlIGJsZW5kaW5n
OiAnICsgZGF0YVVSTF9wcmUpOworCisgICAgRHJhd1NxdWFyZShnbCwgcHJvZywgMC43KTsKKwor
ICAgIFdlYkdMVGVzdFV0aWxzLmNoZWNrQ2FudmFzUmVjdChnbCwgZ2wuZHJhd2luZ0J1ZmZlcldp
ZHRoLzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmRyYXdpbmdCdWZm
ZXJIZWlnaHQvMiwgMSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lD
b2xvciwgaUNvbG9yLCBpQ29sb3IsIDI1NV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdTaG91bGQgYmxlbmQgYXMgaWYgYWxwaGEgaXMgMS4wLicpOworCisgICAgZGF0YVVS
TF9wb3N0ID0gZ2wuY2FudmFzLnRvRGF0YVVSTCgpOworICAgIC8vY29uc29sZS5sb2coJ0FmdGVy
IGJsZW5kaW5nOiAnICsgZGF0YVVSTF9wb3N0KTsKKyAgICBzaG91bGRCZSgiZGF0YVVSTF9wb3N0
IiwgImRhdGFVUkxfcHJlIik7CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIGRlYnVn
KCdtYXNrKFIsRyxCLDApLCBjbGVhcihSLEcsQiwxKScpOworCisgICAgUmVzZXQoZ2wpOworCisg
ICAgZ2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIGZhbHNlKTsKKyAgICBnbC5jbGVhckNv
bG9yKGZDb2xvciwgZkNvbG9yLCBmQ29sb3IsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgZ2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwor
CisgICAgZGF0YVVSTF9wcmUgPSBnbC5jYW52YXMudG9EYXRhVVJMKCk7CisgICAgLy9jb25zb2xl
LmxvZygnQmVmb3JlIGJsZW5kaW5nOiAnICsgZGF0YVVSTF9wcmUpOworCisgICAgRHJhd1NxdWFy
ZShnbCwgcHJvZywgMC43KTsKKworICAgIFdlYkdMVGVzdFV0aWxzLmNoZWNrQ2FudmFzUmVjdChn
bCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQvMiwgMSwgMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW2lDb2xvciwgaUNvbG9yLCBpQ29sb3IsIDI1NV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTaG91bGQgYmxlbmQgYXMgaWYgYWxwaGEgaXMg
MS4wLicpOworCisgICAgZGF0YVVSTF9wb3N0ID0gZ2wuY2FudmFzLnRvRGF0YVVSTCgpOworICAg
IC8vY29uc29sZS5sb2coJ0FmdGVyIGJsZW5kaW5nOiAnICsgZGF0YVVSTF9wb3N0KTsKKyAgICBz
aG91bGRCZSgiZGF0YVVSTF9wb3N0IiwgImRhdGFVUkxfcHJlIik7CisKKyAgICAvLy8vLy8vLy8v
Ly8vLy8vCisKKyAgICBXZWJHTFRlc3RVdGlscy5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworCisgICAgaWYgKHNob3VsZEZpbmlzaCkKKyAg
ICAgICAgZmluaXNoVGVzdCgpOworfQorCit2YXIgZ2w7CitmdW5jdGlvbiBpbml0KCkgeworICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7CisgICAgdmFy
IGF0dHJpYnMgPSB7CisgICAgICAgIGFscGhhOiBmYWxzZSwKKyAgICAgICAgYW50aWFsaWFzOiBm
YWxzZSwKKyAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSwKKyAgICB9OworICAgIGds
ID0gY2FudmFzLmdldENvbnRleHQoJ2V4cGVyaW1lbnRhbC13ZWJnbCcsIGF0dHJpYnMpOworICAg
IHNob3VsZEJlTm9uTnVsbChnbCk7CisgICAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5B
TFBIQV9CSVRTKSIsICIwIik7CisKKyAgICB2YXIgcHJvZyA9IFdlYkdMVGVzdFV0aWxzLnNldHVw
UHJvZ3JhbShnbCwgWyd2cycsICdmcyddKTsKKyAgICBzaG91bGRCZU5vbk51bGwocHJvZyk7Cisg
ICAgcHJvZy5hUG9zQ29vcmQgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9nLCAnYVBvc0Nvb3Jk
Jyk7CisKKyAgICBUZXN0KGdsLCBwcm9nLCBmYWxzZSk7CisKKyAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoZnVuY3Rpb24oKXsgVGVzdChnbCwgcHJvZywgdHJ1ZSk7IH0pOworfQorCis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzxjYW52YXMgaWQ9J2NhbnZhcyc+
PC9jYW52YXM+Cis8YnIvPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2Nv
bnRleHQtbG9zdC1yZXN0b3JlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OTQyZTNkMWNlNGI5NzBiN2E1YjQ5NzFhOWI3ZTg2YzU3ZTlkNjUz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQuaHRtbApA
QCAtMCwwICsxLDI4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGNhbnZhczsKK3ZhciBnbDsKK3ZhciBzaG91bGRHZW5lcmF0ZUdMRXJyb3I7Cit2YXIgV0VC
R0xfbG9zZV9jb250ZXh0OwordmFyIG5ld19XRUJHTF9sb3NlX2NvbnRleHQ7Cit2YXIgYnVmZmVy
T2JqZWN0czsKK3ZhciBwcm9ncmFtOwordmFyIHRleHR1cmU7Cit2YXIgdGV4Q29sb3IgPSBbMjU1
LCAxMCwgMjAsIDI1NV07Cit2YXIgYWxsb3dSZXN0b3JlOwordmFyIGNvbnRleHRMb3N0RXZlbnRG
aXJlZDsKK3ZhciBjb250ZXh0UmVzdG9yZWRFdmVudEZpcmVkOwordmFyIE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0OwordmFyIG9sZF9PRVNfdmVydGV4X2FycmF5X29iamVjdDsKK3ZhciB2ZXJ0ZXhB
cnJheU9iamVjdDsKK3ZhciBPRVNfdGV4dHVyZV9mbG9hdDsKK3ZhciBuZXdFeHRlbnNpb247CisK
K2Z1bmN0aW9uIGluaXQoKQoreworICAgIGVuYWJsZUpTVGVzdFByZVZlcmJvc2VMb2dnaW5nKCk7
CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIGJlaGF2aW9yIHVuZGVyIGEgcmVzdG9yZWQgY29udGV4
dC4iKTsKKworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvciA9IHd0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3I7CisgICAgdGVzdExvc2luZ0NvbnRleHQoKTsKK30KKworZnVuY3Rpb24gc2V0dXBUZXN0
KCkKK3sKKyAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAg
ICBjYW52YXMud2lkdGggPSAxOworICAgIGNhbnZhcy5oZWlnaHQgPSAxOworICAgIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIFdFQkdMX2xvc2VfY29udGV4dCA9IGdldEV4
dGVuc2lvbkFuZEFkZFByb3BlcnR5KGdsLCAiV0VCR0xfbG9zZV9jb250ZXh0Iik7CisgICAgaWYg
KCFXRUJHTF9sb3NlX2NvbnRleHQpIHsKKyAgICAgICAgZGVidWcoIkNvdWxkIG5vdCBmaW5kIFdF
QkdMX2xvc2VfY29udGV4dCBleHRlbnNpb24iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIC8vIFRyeSB0byBnZXQgYSBmZXcgZXh0ZW5zaW9ucworICAgIE9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0ID0gZ2V0RXh0ZW5zaW9uQW5kQWRkUHJvcGVydHkoZ2wsICJPRVNfdmVydGV4
X2FycmF5X29iamVjdCIpOworICAgIE9FU190ZXh0dXJlX2Zsb2F0ID0gZ2V0RXh0ZW5zaW9uQW5k
QWRkUHJvcGVydHkoZ2wsICJPRVNfdGV4dHVyZV9mbG9hdCIpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Z1bmN0aW9uIGdldEV4dGVuc2lvbkFuZEFkZFByb3BlcnR5KGdsLCBuYW1lKSB7Cisg
IHZhciBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsIG5hbWUpOwor
ICBpZiAoZXh0KSB7CisgICAgZXh0LndlYmdsVGVzdFByb3BlcnR5ID0gdHJ1ZTsKKyAgfQorICBy
ZXR1cm4gZXh0OworfQorCitmdW5jdGlvbiByZUdldEV4dGVuc2lvbkFuZFRlc3RGb3JQcm9wZXJ0
eShnbCwgbmFtZSwgZXhwZWN0UHJvcGVydHkpIHsKKyAgbmV3RXh0ZW5zaW9uID0gd3R1LmdldEV4
dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCBuYW1lKTsKKyAgLy8gTk9URTogd2hpbGUgZ2V0
dGluZyBhIGV4dGVuc2lvbiBhZnRlciBjb250ZXh0IGxvc3QvcmVzdG9yZWQgaXMgYWxsb3dlZCB0
byBmYWlsCisgIC8vIGZvciB0aGUgcHVycG9zZSB0aGUgY29uZm9ybWFuY2UgdGVzdHMgaXQgaXMg
bm90LgorICAvLworICAvLyBIeXBvdGhldGljYWxseSB0aGUgdXNlciBjYW4gc3dpdGNoIEdQVXMg
bGl2ZS4gRm9yIGV4YW1wbGUgb24gV2luZG93cywgaW5zdGFsbCAyIEdQVXMsCisgIC8vIHRoZW4g
aW4gdGhlIGNvbnRyb2wgcGFuZW4gZW5hYmxlIDEsIGRpc2FibGUgdGhlIG90aGVycyBhbmQgdmlz
YSB2ZXJzYS4gU2luY2UgdGhlIEdQVXMKKyAgLy8gaGF2ZSBkaWZmZXJlbnQgY2FwYWJpbGl0aWVz
IG9uZSBvciB0aGUgb3RoZXIgbWF5IG5vdCBzdXBwb3J0IGEgcGFydGljbGFyIGV4dGVuc2lvbi4K
KyAgLy8KKyAgLy8gQnV0LCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbmZvcm1hbmNlIHRlc3Rz
IHRoZSBjb250ZXh0IGlzIGV4cGVjdGVkIHRvIHJlc3RvcmUKKyAgLy8gb24gdGhlIHNhbWUgR1BV
IGFuZCB0aGVyZWZvcmUgdGhlIGV4dGVuc2lvbnMgdGhhdCBzdWNjZWVkZWQgcHJldmlvdXNseSBz
aG91bGQKKyAgLy8gc3VjY2VlZCBvbiByZXN0b3JlLgorICBzaG91bGRCZVRydWUoIm5ld0V4dGVu
c2lvbiAhPSBudWxsIik7CisgIGlmIChleHBlY3RQcm9wZXJ0eSkgeworICAgIHNob3VsZEJlVHJ1
ZSgibmV3RXh0ZW5zaW9uLndlYmdsVGVzdFByb3BlcnR5ID09PSB0cnVlIik7CisgIH0gZWxzZSB7
CisgICAgc2hvdWxkQmVUcnVlKCJuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHVu
ZGVmaW5lZCIpOworICB9CisgIHJldHVybiBuZXdFeHRlbnNpb247Cit9CisKK2Z1bmN0aW9uIHRl
c3RMb3NpbmdDb250ZXh0KCkKK3sKKyAgICBpZiAoIXNldHVwVGVzdCgpKSB7CisgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJUZXN0IGxv
c2luZyBhIGNvbnRleHQgYW5kIGluYWJpbGl0eSB0byByZXN0b3JlIGl0LiIpOworCisgICAgY2Fu
dmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCBmdW5jdGlvbihlKSB7Cisg
ICAgICAgdGVzdExvc3RDb250ZXh0KGUpOworICAgICAgIC8vIHJlc3RvcmUgdGhlIGNvbnRleHQg
YWZ0ZXIgdGhpcyBldmVudCBoYXMgZXhpdGVkLgorICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgICAvLyB3ZSBkaWRuJ3QgY2FsbCBwcmV2ZW50IGRlZmF1bHQgc28gd2Ugc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQKKyAgICAgICAgIHNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJXRUJHTF9sb3NlX2NvbnRl
eHQucmVzdG9yZUNvbnRleHQoKSIpOworICAgICAgICAgdGVzdExvc2luZ0FuZFJlc3RvcmluZ0Nv
bnRleHQoKTsKKyAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICBjYW52YXMuYWRkRXZlbnRMaXN0
ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCB0ZXN0U2hvdWxkTm90UmVzdG9yZUNvbnRleHQp
OworICAgIGFsbG93UmVzdG9yZSA9IGZhbHNlOworICAgIGNvbnRleHRMb3N0RXZlbnRGaXJlZCA9
IGZhbHNlOworICAgIGNvbnRleHRSZXN0b3JlZEV2ZW50RmlyZWQgPSBmYWxzZTsKKworICAgIHRl
c3RPcmlnaW5hbENvbnRleHQoKTsKKyAgICBXRUJHTF9sb3NlX2NvbnRleHQubG9zZUNvbnRleHQo
KTsKKyAgICAvLyBUaGUgY29udGV4dCBzaG91bGQgYmUgbG9zdCBpbW1lZGlhdGVseS4KKyAgICBz
aG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRF
cnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRF
cnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgLy8gZ2wgbWV0aG9kcyBzaG91bGQgYmUgbm8t
b3BzCisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJsZW5k
RnVuYyhnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQKSIpOworICAgIC8vIGJ1dCB0
aGUgZXZlbnQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZmlyZWQuCisgICAgc2hvdWxkQmVGYWxzZSgi
Y29udGV4dExvc3RFdmVudEZpcmVkIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RMb3NpbmdBbmRSZXN0
b3JpbmdDb250ZXh0KCkKK3sKKyAgICBpZiAoIXNldHVwVGVzdCgpKQorICAgICAgICBmaW5pc2hU
ZXN0KCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgbG9zaW5nIGFuZCByZXN0
b3JpbmcgYSBjb250ZXh0LiIpOworCisgICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmds
Y29udGV4dGxvc3QiLCBmdW5jdGlvbihlKSB7CisgICAgICB0ZXN0TG9zdENvbnRleHQoZSk7Cisg
ICAgICAvLyByZXN0b3JlIHRoZSBjb250ZXh0IGFmdGVyIHRoaXMgZXZlbnQgaGFzIGV4aXRlZC4K
KyAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICJXRUJHTF9sb3NlX2NvbnRleHQucmVzdG9yZUNvbnRleHQo
KSIpOworICAgICAgICAvLyBDYWxsaW5nIHJlc3RvcmVDb250ZXh0KCkgdHdpY2Ugc2hvdWxkIG5v
dCBjYXVzZSBlcnJvciBvciBjcmFzaAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLk5PX0VSUk9SLCAiV0VCR0xfbG9zZV9jb250ZXh0LnJlc3RvcmVDb250ZXh0KCkiKTsKKyAg
ICAgICAgLy8gVGhlIGNvbnRleHQgc2hvdWxkIHN0aWxsIGJlIGxvc3QuIEl0IHdpbGwgbm90IGdl
dCByZXN0b3JlZCB1bnRpbCB0aGUKKyAgICAgICAgLy8gd2ViZ2xyZXN0b3JlY29udGV4dCBldmVu
dCBpcyBmaXJlZC4KKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsK
KyAgICAgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICAg
ICAgLy8gZ2wgbWV0aG9kcyBzaG91bGQgc3RpbGwgYmUgbm8tb3BzCisgICAgICAgIHNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5ibGVuZEZ1bmMoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9DVUJFX01BUCkiKTsKKyAgICAgIH0sIDApOworICAgIH0pOworICAgIGNh
bnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIGZ1bmN0aW9uKCkg
eworICAgICAgdGVzdFJlc3RvcmVkQ29udGV4dCgpOworICAgICAgZmluaXNoVGVzdCgpOworICAg
IH0pOworICAgIGFsbG93UmVzdG9yZSA9IHRydWU7CisgICAgY29udGV4dExvc3RFdmVudEZpcmVk
ID0gZmFsc2U7CisgICAgY29udGV4dFJlc3RvcmVkRXZlbnRGaXJlZCA9IGZhbHNlOworCisgICAg
dGVzdE9yaWdpbmFsQ29udGV4dCgpOworICAgIFdFQkdMX2xvc2VfY29udGV4dC5sb3NlQ29udGV4
dCgpOworICAgIC8vIFRoZSBjb250ZXh0IHNob3VsZCBiZSBsb3N0IGltbWVkaWF0ZWx5LgorICAg
IHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7CisgICAgc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICAvLyBnbCBtZXRob2RzIHNob3VsZCBiZSBu
by1vcHMKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmxl
bmRGdW5jKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ1VCRV9NQVApIik7CisgICAgLy8gYnV0
IHRoZSBldmVudCBzaG91bGQgbm90IGhhdmUgYmVlbiBmaXJlZC4KKyAgICBzaG91bGRCZUZhbHNl
KCJjb250ZXh0TG9zdEV2ZW50RmlyZWQiKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbmRlcmluZygp
Cit7CisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAyNTUpOworICAgIGdsLmNvbG9yTWFzaygx
LCAxLCAxLCAwKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCk7CisKKyAgICBwcm9ncmFtID0gd3R1LnNldHVwU2ltcGxlVGV4dHVyZVByb2dy
YW0oZ2wpOworICAgIGJ1ZmZlck9iamVjdHMgPSB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgICAg
dGV4dHVyZSA9IHd0dS5jcmVhdGVDb2xvcmVkVGV4dHVyZShnbCwgY2FudmFzLndpZHRoLCBjYW52
YXMuaGVpZ2h0LCB0ZXhDb2xvcik7CisKKyAgICBnbC51bmlmb3JtMWkoZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ0ZXgiKSwgMCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsLCBbMCwgMCwgMCwgMjU1XSk7CisKKyAgICB2YXIgY29tcGFyZSA9IHRleENvbG9yLnNsaWNl
KDAsIDMpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNhbnZhcy53aWR0aCwg
Y2FudmFzLmhlaWdodCwgY29tcGFyZSwgInNob3VsZEJlICIgKyBjb21wYXJlKTsKKworICAgIHNo
b3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Cit9CisKK2Z1bmN0aW9uIHRl
c3RPcmlnaW5hbENvbnRleHQoKQoreworICAgIGRlYnVnKCJUZXN0IHZhbGlkIGNvbnRleHQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgi
Z2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgIHRlc3RSZW5kZXJpbmcoKTsKKyAg
ICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RMb3N0Q29udGV4dChlKQoreworICAgIGRl
YnVnKCJUZXN0IGxvc3QgY29udGV4dCIpOworICAgIHNob3VsZEJlRmFsc2UoImNvbnRleHRMb3N0
RXZlbnRGaXJlZCIpOworICAgIGNvbnRleHRMb3N0RXZlbnRGaXJlZCA9IHRydWU7CisgICAgc2hv
dWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJy
b3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgIGRlYnVnKCIiKTsKKyAgICBpZiAoYWxsb3dSZXN0
b3JlKQorICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2hvdWxk
Tm90UmVzdG9yZUNvbnRleHQoZSkKK3sKKyAgICB0ZXN0RmFpbGVkKCJTaG91bGQgbm90IHJlc3Rv
cmUgdGhlIGNvbnRleHQgdW5sZXNzIHByZXZlbnREZWZhdWx0IGlzIGNhbGxlZCBvbiB0aGUgY29u
dGV4dCBsb3N0IGV2ZW50Iik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiB0ZXN0UmVz
b3VyY2VzKGV4cGVjdGVkKQoreworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgImdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpIiwKKyAgICAgICAgImdsLnVzZVByb2dyYW0o
cHJvZ3JhbSkiLAorICAgICAgICAiZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZl
ck9iamVjdHNbMF0pIiwKKyAgICBdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBleHBlY3RlZCwg
dGVzdHNbaV0pOworfQorCitmdW5jdGlvbiB0ZXN0T0VTVGV4dHVyZUZsb2F0KCkgeworICBpZiAo
T0VTX3RleHR1cmVfZmxvYXQpIHsKKyAgICAvLyBFeHRlbnNpb24gbXVzdCBzdGlsbCBiZSBsb3N0
LgorICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklO
VkFMSURfRU5VTSwgImdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwg
MSwgMCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIG51bGwpIik7CisgICAgLy8gVHJ5IHJlLWVuYWJsaW5n
IGV4dGVuc2lvbgorICAgIE9FU190ZXh0dXJlX2Zsb2F0ID0gcmVHZXRFeHRlbnNpb25BbmRUZXN0
Rm9yUHJvcGVydHkoZ2wsICJPRVNfdGV4dHVyZV9mbG9hdCIsIGZhbHNlKTsKKyAgICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVsbCkiKTsKKyAg
fQorfQorCitmdW5jdGlvbiB0ZXN0T0VTVmVydGV4QXJyYXlPYmplY3QoKSB7CisgIGlmIChPRVNf
dmVydGV4X2FycmF5X29iamVjdCkgeworICAgIC8vIEV4dGVuc2lvbiBtdXN0IHN0aWxsIGJlIGxv
c3QuCisgICAgc2hvdWxkQmVOdWxsKCJPRVNfdmVydGV4X2FycmF5X29iamVjdC5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpIik7CisgICAgLy8gVHJ5IHJlLWVuYWJsaW5nIGV4dGVuc2lvbgorCisgICAg
b2xkX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0ID0gT0VTX3ZlcnRleF9hcnJheV9vYmplY3Q7Cisg
ICAgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgPSByZUdldEV4dGVuc2lvbkFuZFRlc3RGb3JQcm9w
ZXJ0eShnbCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZmFsc2UpOworICAgIHNob3VsZEJl
VHJ1ZSgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSAhPSBu
dWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJvbGRfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3Jl
YXRlVmVydGV4QXJyYXlPRVMoKSA9PSBudWxsIik7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdEV4
dGVuc2lvbnMoKSB7CisgIHRlc3RPRVNUZXh0dXJlRmxvYXQoKTsKKyAgdGVzdE9FU1ZlcnRleEFy
cmF5T2JqZWN0KCk7CisgIC8vIE9ubHkgdGhlIFdFQkdMX2xvc2VfY29udGV4dCBleHRlbnNpb24g
c2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdCBhZnRlciBjb250ZXh0IGxvc3QuCisgIG5ld19XRUJH
TF9sb3NlX2NvbnRleHQgPSByZUdldEV4dGVuc2lvbkFuZFRlc3RGb3JQcm9wZXJ0eShnbCwgIldF
QkdMX2xvc2VfY29udGV4dCIsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzdG9yZWRDb250
ZXh0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdCByZXN0b3JlZCBjb250ZXh0Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiY29udGV4dFJlc3RvcmVkRXZlbnRGaXJlZCIpOworICAgIGNvbnRleHRSZXN0b3Jl
ZEV2ZW50RmlyZWQgPSB0cnVlOworICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4dExvc3Qo
KSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisKKyAg
ICAvLyBWYWxpZGF0ZSB0aGF0IHVzaW5nIG9sZCByZXNvdXJjZXMgZmFpbHMuCisgICAgdGVzdFJl
c291cmNlcyhnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICB0ZXN0UmVuZGVyaW5nKCk7CisK
KyAgICAvLyBWYWxpZGF0ZSBuZXcgcmVzb3VyY2VzIGNyZWF0ZWQgaW4gdGVzdFJlbmRlcmluZygp
LgorICAgIHRlc3RSZXNvdXJjZXMoZ2wuTk9fRVJST1IpOworCisgICAgdGVzdEV4dGVuc2lvbnMo
KTsKKworICAgIGRlYnVnKCIiKTsKK30KKworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0iaW5pdCgpIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250
ZXh0LWxvc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ0
OWM0ODVjZGY5NmQ3Mjg1M2I5Yjc3Y2NmZDc5NmNhZWFmNDI3ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2NvbnRleHQvY29udGV4dC1sb3N0Lmh0bWwKQEAgLTAsMCArMSwzNjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K3ZhciB3dHU7Cit2YXIgY2FudmFzOwordmFyIGdsOwordmFyIHNob3VsZEdlbmVyYXRlR0xFcnJv
cjsKK3ZhciBleHRlbnNpb25OYW1lOwordmFyIGV4dGVuc2lvbjsKKwordmFyIGJ1ZmZlcjsKK3Zh
ciBmcmFtZWJ1ZmZlcjsKK3ZhciBwcm9ncmFtOwordmFyIHJlbmRlcmJ1ZmZlcjsKK3ZhciBzaGFk
ZXI7Cit2YXIgdGV4dHVyZTsKK3ZhciB1bmlmb3JtTG9jYXRpb247Cit2YXIgYXJyYXlCdWZmZXI7
Cit2YXIgYXJyYXlCdWZmZXJWaWV3Cit2YXIgaW1hZ2U7Cit2YXIgdmlkZW87Cit2YXIgY2FudmFz
MmQ7Cit2YXIgY3R4MmQ7Cit2YXIgaW1hZ2VEYXRhOwordmFyIGZsb2F0MzJhcnJheTsKK3ZhciBp
bnQzMmFycmF5OwordmFyIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0OwordmFyIHZlcnRleEFycmF5
T2JqZWN0OworCitmdW5jdGlvbiBpbml0KCkKK3sKKyAgICB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
KyAgICBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
ID0gd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcjsKKworICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBi
ZWhhdmlvciB1bmRlciBhIGxvc3QgY29udGV4dCIpOworCisgICAgLy8gY2FsbCB0ZXN0VmFsaWRD
b250ZXh0KCkgYmVmb3JlIGNoZWNraW5nIGZvciB0aGUgZXh0ZW5zaW9uLCBiZWNhdXNlIHRoaXMg
aXMgd2hlcmUgd2UgY2hlY2sKKyAgICAvLyBmb3IgdGhlIGlzQ29udGV4dExvc3QoKSBtZXRob2Qs
IHdoaWNoIHdlIHdhbnQgdG8gZG8gcmVnYXJkbGVzcyBvZiB0aGUgZXh0ZW5zaW9uJ3MgcHJlc2Vu
Y2UuCisgICAgdGVzdFZhbGlkQ29udGV4dCgpOworCisgICAgZXh0ZW5zaW9uTmFtZSA9IHd0dS5n
ZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2xvc2VfY29u
dGV4dCIpOworICAgIGlmICghZXh0ZW5zaW9uTmFtZSkgeworICAgICAgICBkZWJ1ZygiQ291bGQg
bm90IGZpbmQgV0VCR0xfbG9zZV9jb250ZXh0IGV4dGVuc2lvbiIpOworICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZXh0ZW5zaW9uID0gZ2wu
Z2V0RXh0ZW5zaW9uKGV4dGVuc2lvbk5hbWUpOworCisgICAgLy8gbmVlZCBhbiBleHRlbnNpb24g
dGhhdCBleHBvc2VzIG5ldyBBUEkgbWV0aG9kcy4KKyAgICBPRVNfdmVydGV4X2FycmF5X29iamVj
dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIk9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0Iik7CisKKyAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0
bG9zdCIsIHRlc3RMb3N0Q29udGV4dCwgZmFsc2UpOworCisgICAgLy8gV2UgbmVlZCB0byBpbml0
aWFsaXplIHx1bmlmb3JtTG9jYXRpb258IGJlZm9yZSBsb3NpbmcgY29udGV4dC4KKyAgICAvLyBP
dGhlcndpc2UgZ2wuZ2V0VW5pZm9ybSgpIHdoZW4gY29udGV4dCBpcyBsb3N0IHdpbGwgdGhyb3cu
CisgICAgdW5pZm9ybUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0
ZXgiKTsKKyAgICBsb3NlQ29udGV4dCgpOworfQorCitmdW5jdGlvbiBsb3NlQ29udGV4dCgpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJMb3NlIGNvbnRleHQiKTsKKworICAgIC8vIE5v
dGU6IHRoaXMgd2lsbCBjYXVzZSB0aGUgY29udGV4dCB0byBiZSBsb3N0LCBidXQgdGhlCisgICAg
Ly8gd2ViZ2xjb250ZXh0bG9zdCBldmVudCBsaXN0ZW5lciB0byBiZSBxdWV1ZWQuCisgICAgZXh0
ZW5zaW9uLmxvc2VDb250ZXh0KCk7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiB0ZXN0
VmFsaWRDb250ZXh0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdCB2YWxpZCBjb250ZXh0Iik7CisKKyAg
ICBzaG91bGRCZUZhbHNlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKworICAgIGFycmF5QnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGFycmF5QnVmZmVyVmlldyA9IG5ldyBJbnQ4QXJy
YXkoYXJyYXlCdWZmZXIpOworCisgICAgLy8gR2VuZXJhdGUgcmVzb3VyY2VzIGZvciB0ZXN0aW5n
LgorICAgIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVm
ZmVyKTsKKyAgICBwcm9ncmFtID0gd3R1LnNldHVwU2ltcGxlVGV4dHVyZVByb2dyYW0oZ2wpOwor
ICAgIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgIHNoYWRlciA9
IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB0ZXh0dXJlID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUp
OworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisKKyAgICAv
LyBUZXN0IGlzIHF1ZXJpZXMgdGhhdCB3aWxsIGxhdGVyIGJlIGZhbHNlCisgICAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmVuYWJsZShnbC5CTEVORCkiKTsKKyAg
ICBzaG91bGRCZVRydWUoImdsLmlzQnVmZmVyKGJ1ZmZlcikiKTsKKyAgICBzaG91bGRCZVRydWUo
ImdsLmlzRW5hYmxlZChnbC5CTEVORCkiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzRnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpIik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc1Byb2dyYW0ocHJv
Z3JhbSkiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZl
cikiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzU2hhZGVyKHNoYWRlcikiKTsKKyAgICBzaG91
bGRCZVRydWUoImdsLmlzVGV4dHVyZSh0ZXh0dXJlKSIpOworCisgICAgaWYgKE9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0KSB7CisgICAgICB2ZXJ0ZXhBcnJheU9iamVjdCA9IE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICBzaG91bGRCZSgiZ2wuZ2V0
RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgICAgc2hvdWxkQmVUcnVlKCJPRVNfdmVydGV4
X2FycmF5X29iamVjdC5pc1ZlcnRleEFycmF5T0VTKHZlcnRleEFycmF5T2JqZWN0KSIpOworICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdEdMTk9FcnJvckZ1bmN0aW9ucyh0ZXN0cykgeworICB0ZXN0
cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuTk9fRVJST1IsIHRlc3QpOworICB9KTsKK30KKworZnVuY3Rpb24gdGVzdEZ1bmN0aW9u
c1RoYXRSZXR1cm5OVUxMKHRlc3RzKSB7CisgIHRlc3RzLmZvckVhY2goZnVuY3Rpb24odGVzdCkg
eworICAgICAgc2hvdWxkQmVOdWxsKHRlc3QpOworICB9KTsKK30KKworZnVuY3Rpb24gdGVzdExv
c3RDb250ZXh0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdCBsb3N0IGNvbnRleHQiKTsKKworICAgIC8v
IEZ1bmN0aW9ucyB3aXRoIHNwZWNpYWwgcmV0dXJuIHZhbHVlcy4KKyAgICBzaG91bGRCZVRydWUo
ImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
LkNPTlRFWFRfTE9TVF9XRUJHTCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEIik7CisgICAgc2hvdWxk
QmUoImdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICd1X21vZGVsVmlld1Byb2pNYXRyaXgn
KSIsICItMSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoMCwgZ2wu
VkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKSIsICIwIik7CisKKyAgICAvLyBBdHRlbXB0IHJl
c2l6ZSBvZiBsb3N0IGNvbnRleHQgc2hvdWxkIHN1Y2NlZWQsIHN0aWxsIGxvc3QuCisgICAgZ2wu
Y2FudmFzLndpZHRoID0gZ2wuY2FudmFzLndpZHRoOyAvLyBUcnkgdG8gaGl0IGFueSBzYW1lLXNp
emUgcmVzaXplIHBhdGguCisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsK
KworICAgIGNvbnN0IG5ld1NpemUgPSBnbC5jYW52YXMud2lkdGggKyAxOworICAgIGdsLmNhbnZh
cy53aWR0aCA9IG5ld1NpemU7CisgICAgc2hvdWxkQmUoImdsLmNhbnZhcy53aWR0aCIsIG5ld1Np
emUpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisKKyAgICAvLyBU
ZXN0IHRoZSBleHRlbnNpb24gaXRzZWxmLgorICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJleHRlbnNpb24ubG9zZUNvbnRleHQoKSIpOworCisgICAg
aW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB2aWRlbyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJk
Iik7CisgICAgaW1hZ2VEYXRhID0gY3R4MmQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpOworICAgIGZs
b2F0MzJhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7CisgICAgaW50MzJhcnJheSA9IG5ldyBJ
bnQzMkFycmF5KDEpOworCisgICAgLy8gRnVuY3Rpb25zIHJldHVybmluZyB2b2lkIHNob3VsZCBy
ZXR1cm4gaW1tZWRpYXRlbHkuCisgICAgLy8gVGhpcyBpcyB1bnRlc3RhYmxlLCBidXQgd2UgY2Fu
IGF0IGxlYXN0IGJlIHN1cmUgdGhleSBjYXVzZSBubyBlcnJvcnMKKyAgICAvLyBhbmQgdGhlIGNv
ZGVwYXRocyBhcmUgZXhlcmNpc2VkLgorICAgIHZhciB2b2lkVGVzdHMgPSBbCisgICAgICAgICJn
bC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKSIsCisgICAgICAgICJnbC5hdHRhY2hTaGFkZXIo
cHJvZ3JhbSwgc2hhZGVyKSIsCisgICAgICAgICJnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgYnVmZmVyKSIsCisgICAgICAgICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZyYW1lYnVmZmVyKSIsCisgICAgICAgICJnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgcmVuZGVyYnVmZmVyKSIsCisgICAgICAgICJnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXh0dXJlKSIsCisgICAgICAgICJnbC5ibGVuZENvbG9yKDEuMCwgMS4wLCAxLjAsIDEu
MCkiLAorICAgICAgICAiZ2wuYmxlbmRFcXVhdGlvbihnbC5GVU5DX0FERCkiLAorICAgICAgICAi
Z2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGdsLkZVTkNfQURELCBnbC5GVU5DX0FERCkiLAorICAg
ICAgICAiZ2wuYmxlbmRGdW5jKGdsLk9ORSwgZ2wuT05FKSIsCisgICAgICAgICJnbC5ibGVuZEZ1
bmNTZXBhcmF0ZShnbC5PTkUsIGdsLk9ORSwgZ2wuT05FLCBnbC5PTkUpIiwKKyAgICAgICAgImds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCBnbC5TVEFUSUNfRFJBVykiLAorICAgICAg
ICAiZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGFycmF5QnVmZmVyVmlldywgZ2wuU1RB
VElDX0RSQVcpIiwKKyAgICAgICAgImdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBhcnJh
eUJ1ZmZlciwgZ2wuU1RBVElDX0RSQVcpIiwKKyAgICAgICAgImdsLmJ1ZmZlclN1YkRhdGEoZ2wu
QVJSQVlfQlVGRlJFLCAwLCBhcnJheUJ1ZmZlclZpZXcpIiwKKyAgICAgICAgImdsLmJ1ZmZlclN1
YkRhdGEoZ2wuQVJSQVlfQlVGRlJFLCAwLCBhcnJheUJ1ZmZlcikiLAorICAgICAgICAiZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCkiLAorICAgICAgICAiZ2wuY2xlYXJDb2xvcigxLCAxLCAx
LCAxKSIsCisgICAgICAgICJnbC5jbGVhckRlcHRoKDEpIiwKKyAgICAgICAgImdsLmNsZWFyU3Rl
bmNpbCgwKSIsCisgICAgICAgICJnbC5jb2xvck1hc2soMSwgMSwgMSwgMSkiLAorICAgICAgICAi
Z2wuY29tcGlsZVNoYWRlcihzaGFkZXIpIiwKKyAgICAgICAgImdsLmNvcHlUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsIDAsIDAsIDAsIDApIiwKKyAgICAgICAgImdsLmNv
cHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDAsIDApIiwKKyAg
ICAgICAgImdsLmN1bGxGYWNlKGdsLkZST05UKSIsCisgICAgICAgICJnbC5kZWxldGVCdWZmZXIo
YnVmZmVyKSIsCisgICAgICAgICJnbC5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikiLAor
ICAgICAgICAiZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKSIsCisgICAgICAgICJnbC5kZWxldGVS
ZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKSIsCisgICAgICAgICJnbC5kZWxldGVTaGFkZXIoc2hh
ZGVyKSIsCisgICAgICAgICJnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpIiwKKyAgICAgICAgImds
LmRlcHRoRnVuYyhnbC5ORVZFUikiLAorICAgICAgICAiZ2wuZGVwdGhNYXNrKDApIiwKKyAgICAg
ICAgImdsLmRlcHRoUmFuZ2UoMCwgMSkiLAorICAgICAgICAiZ2wuZGV0YWNoU2hhZGVyKHByb2dy
YW0sIHNoYWRlcikiLAorICAgICAgICAiZ2wuZGlzYWJsZShnbC5CTEVORCkiLAorICAgICAgICAi
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDApIiwKKyAgICAgICAgImdsLmRyYXdBcnJheXMo
Z2wuUE9JTlRTLCAwLCAwKSIsCisgICAgICAgICJnbC5kcmF3RWxlbWVudHMoZ2wuUE9JTlRTLCAw
LCBnbC5VTlNJR05FRF9TSE9SVCwgMCkiLAorICAgICAgICAiZ2wuZW5hYmxlKGdsLkJMRU5EKSIs
CisgICAgICAgICJnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKSIsCisgICAgICAgICJnbC5m
aW5pc2goKSIsCisgICAgICAgICJnbC5mbHVzaCgpIiwKKyAgICAgICAgImdsLmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVO
REVSQlVGRkVSLCByZW5kZXJidWZmZXIpIiwKKyAgICAgICAgImdsLmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwg
dGV4dHVyZSwgMCkiLAorICAgICAgICAiZ2wuZnJvbnRGYWNlKGdsLkNXKSIsCisgICAgICAgICJn
bC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKSIsCisgICAgICAgICJnbC5oaW50KGdsLkdF
TkVSQVRFX01JUE1BUF9ISU5ULCBnbC5GQVNURVNUKSIsCisgICAgICAgICJnbC5saW5lV2lkdGgo
MCkiLAorICAgICAgICAiZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSkiLAorICAgICAgICAiZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgMCkiLAorICAgICAgICAiZ2wucG9seWdv
bk9mZnNldCgwLCAwKSIsCisgICAgICAgICJnbC5yZWFkUGl4ZWxzKDAsIDAsIDAsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5QnVmZmVyVmlldykiLAorICAgICAgICAiZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAwLCAwKSIsCisgICAg
ICAgICJnbC5zYW1wbGVDb3ZlcmFnZSgwLCAwKSIsCisgICAgICAgICJnbC5zY2lzc29yKDAsIDAs
IDAsIDApIiwKKyAgICAgICAgImdsLnNoYWRlclNvdXJjZShzaGFkZXIsICcnKSIsCisgICAgICAg
ICJnbC5zdGVuY2lsRnVuYyhnbC5ORVZFUiwgMCwgMCkiLAorICAgICAgICAiZ2wuc3RlbmNpbEZ1
bmNTZXBhcmF0ZShnbC5GUk9OVCwgZ2wuTkVWRVIsIDAsIDApIiwKKyAgICAgICAgImdsLnN0ZW5j
aWxNYXNrKDApIiwKKyAgICAgICAgImdsLnN0ZW5jaWxNYXNrU2VwYXJhdGUoZ2wuRlJPTlQsIDAp
IiwKKyAgICAgICAgImdsLnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5LRUVQKSIsCisg
ICAgICAgICJnbC5zdGVuY2lsT3BTZXBhcmF0ZShnbC5GUk9OVCwgZ2wuS0VFUCwgZ2wuS0VFUCwg
Z2wuS0VFUCkiLAorICAgICAgICAiZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBhcnJheUJ1ZmZlclZpZXcp
IiwKKyAgICAgICAgImdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1hZ2VEYXRhKSIsCisgICAgICAgICJnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGltYWdlKSIsCisgICAgICAgICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhczJkKSIsCisgICAgICAgICJnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIHZpZGVvKSIsCisgICAgICAgICJnbC50ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCkiLAorICAgICAgICAiZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1Qp
IiwKKyAgICAgICAgImdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXlCdWZmZXJWaWV3KSIsCisgICAgICAg
ICJnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIGltYWdlRGF0YSkiLAorICAgICAgICAiZ2wudGV4U3ViSW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWFnZSkiLAor
ICAgICAgICAiZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBjYW52YXMyZCkiLAorICAgICAgICAiZ2wudGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRl
bykiLAorICAgICAgICAiZ2wudW5pZm9ybTFmKHVuaWZvcm1Mb2NhdGlvbiwgMCkiLAorICAgICAg
ICAiZ2wudW5pZm9ybTFmdih1bmlmb3JtTG9jYXRpb24sIGZsb2F0MzJhcnJheSkiLAorICAgICAg
ICAiZ2wudW5pZm9ybTFmdih1bmlmb3JtTG9jYXRpb24sIFswXSkiLAorICAgICAgICAiZ2wudW5p
Zm9ybTFpKHVuaWZvcm1Mb2NhdGlvbiwgMCkiLAorICAgICAgICAiZ2wudW5pZm9ybTFpdih1bmlm
b3JtTG9jYXRpb24sIGludDMyYXJyYXkpIiwKKyAgICAgICAgImdsLnVuaWZvcm0xaXYodW5pZm9y
bUxvY2F0aW9uLCBbMF0pIiwKKyAgICAgICAgImdsLnVuaWZvcm0yZih1bmlmb3JtTG9jYXRpb24s
IDAsIDApIiwKKyAgICAgICAgImdsLnVuaWZvcm0yZnYodW5pZm9ybUxvY2F0aW9uLCBmbG9hdDMy
YXJyYXkpIiwKKyAgICAgICAgImdsLnVuaWZvcm0yZnYodW5pZm9ybUxvY2F0aW9uLCBbMCwgMF0p
IiwKKyAgICAgICAgImdsLnVuaWZvcm0yaSh1bmlmb3JtTG9jYXRpb24sIDAsIDApIiwKKyAgICAg
ICAgImdsLnVuaWZvcm0yaXYodW5pZm9ybUxvY2F0aW9uLCBpbnQzMmFycmF5KSIsCisgICAgICAg
ICJnbC51bmlmb3JtMml2KHVuaWZvcm1Mb2NhdGlvbiwgWzAsIDBdKSIsCisgICAgICAgICJnbC51
bmlmb3JtM2YodW5pZm9ybUxvY2F0aW9uLCAwLCAwLCAwKSIsCisgICAgICAgICJnbC51bmlmb3Jt
M2Z2KHVuaWZvcm1Mb2NhdGlvbiwgZmxvYXQzMmFycmF5KSIsCisgICAgICAgICJnbC51bmlmb3Jt
M2Z2KHVuaWZvcm1Mb2NhdGlvbiwgWzAsIDAsIDBdKSIsCisgICAgICAgICJnbC51bmlmb3JtM2ko
dW5pZm9ybUxvY2F0aW9uLCAwLCAwLCAwKSIsCisgICAgICAgICJnbC51bmlmb3JtM2l2KHVuaWZv
cm1Mb2NhdGlvbiwgaW50MzJhcnJheSkiLAorICAgICAgICAiZ2wudW5pZm9ybTNpdih1bmlmb3Jt
TG9jYXRpb24sIFswLCAwLCAwXSkiLAorICAgICAgICAiZ2wudW5pZm9ybTRmKHVuaWZvcm1Mb2Nh
dGlvbiwgMCwgMCwgMCwgMCkiLAorICAgICAgICAiZ2wudW5pZm9ybTRmdih1bmlmb3JtTG9jYXRp
b24sIGZsb2F0MzJhcnJheSkiLAorICAgICAgICAiZ2wudW5pZm9ybTRmdih1bmlmb3JtTG9jYXRp
b24sIFswLCAwLCAwLCAwXSkiLAorICAgICAgICAiZ2wudW5pZm9ybTRpKHVuaWZvcm1Mb2NhdGlv
biwgMCwgMCwgMCwgMCkiLAorICAgICAgICAiZ2wudW5pZm9ybTRpdih1bmlmb3JtTG9jYXRpb24s
IGludDMyYXJyYXkpIiwKKyAgICAgICAgImdsLnVuaWZvcm00aXYodW5pZm9ybUxvY2F0aW9uLCBb
MCwgMCwgMCwgMF0pIiwKKyAgICAgICAgImdsLnVuaWZvcm1NYXRyaXgyZnYodW5pZm9ybUxvY2F0
aW9uLCBmYWxzZSwgZmxvYXQzMmFycmF5KSIsCisgICAgICAgICJnbC51bmlmb3JtTWF0cml4MmZ2
KHVuaWZvcm1Mb2NhdGlvbiwgZmFsc2UsIFswLCAwLCAwLCAwXSkiLAorICAgICAgICAiZ2wudW5p
Zm9ybU1hdHJpeDNmdih1bmlmb3JtTG9jYXRpb24sIGZhbHNlLCBmbG9hdDMyYXJyYXkpIiwKKyAg
ICAgICAgImdsLnVuaWZvcm1NYXRyaXgzZnYodW5pZm9ybUxvY2F0aW9uLCBmYWxzZSwgWzAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDBdKSIsCisgICAgICAgICJnbC51bmlmb3JtTWF0cml4NGZ2KHVu
aWZvcm1Mb2NhdGlvbiwgZmFsc2UsIGZsb2F0MzJhcnJheSkiLAorICAgICAgICAiZ2wudW5pZm9y
bU1hdHJpeDRmdih1bmlmb3JtTG9jYXRpb24sIGZhbHNlLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pIiwKKyAgICAgICAgImdsLnVzZVByb2dyYW0ocHJv
Z3JhbSkiLAorICAgICAgICAiZ2wudmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pIiwKKyAgICAgICAg
ImdsLnZlcnRleEF0dHJpYjFmKDAsIDApIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjFmdigw
LCBmbG9hdDMyYXJyYXkpIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjFmdigwLCBbMF0pIiwK
KyAgICAgICAgImdsLnZlcnRleEF0dHJpYjJmKDAsIDAsIDApIiwKKyAgICAgICAgImdsLnZlcnRl
eEF0dHJpYjJmdigwLCBmbG9hdDMyYXJyYXkpIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjJm
digwLCBbMCwgMF0pIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjNmKDAsIDAsIDAsIDApIiwK
KyAgICAgICAgImdsLnZlcnRleEF0dHJpYjNmdigwLCBmbG9hdDMyYXJyYXkpIiwKKyAgICAgICAg
ImdsLnZlcnRleEF0dHJpYjNmdigwLCBbMCwgMCwgMF0pIiwKKyAgICAgICAgImdsLnZlcnRleEF0
dHJpYjRmKDAsIDAsIDAsIDAsIDApIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjRmdigwLCBm
bG9hdDMyYXJyYXkpIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYjRmdigwLCBbMCwgMCwgMCwg
MF0pIiwKKyAgICAgICAgImdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMCwgZ2wuRkxPQVQsIGZh
bHNlLCAwLCAwKSIsCisgICAgICAgICJnbC52aWV3cG9ydCgwLCAwLCAwLCAwKSIsCisgICAgXTsK
KyAgICB0ZXN0R0xOT0Vycm9yRnVuY3Rpb25zKHZvaWRUZXN0cyk7CisKKyAgICAvLyBGdW5jdGlv
bnMgcmV0dXJuIG51bGxhYmxlIHZhbHVlcyBzaG91bGQgYWxsIHJldHVybiBudWxsLgorICAgIHZh
ciBudWxsVGVzdHMgPSBbCisgICAgICAgICJnbC5jcmVhdGVCdWZmZXIoKSIsCisgICAgICAgICJn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIiwKKyAgICAgICAgImdsLmNyZWF0ZVByb2dyYW0oKSIsCisg
ICAgICAgICJnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIsCisgICAgICAgICJnbC5jcmVhdGVTaGFk
ZXIoZ2wuR0xfVkVSVEVYX1NIQURFUikiLAorICAgICAgICAiZ2wuY3JlYXRlVGV4dHVyZSgpIiwK
KyAgICAgICAgImdsLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSIsCisgICAgICAgICJnbC5n
ZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIiwKKyAgICAgICAgImdsLmdldEF0dGFjaGVkU2hh
ZGVycyhwcm9ncmFtKSIsCisgICAgICAgICJnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlf
QlVGRkVSLCBnbC5CVUZGRVJfU0laRSkiLAorICAgICAgICAiZ2wuZ2V0Q29udGV4dEF0dHJpYnV0
ZXMoKSIsCisgICAgICAgICJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9OQU1FKSIsCisgICAgICAgICJnbC5nZXRQYXJhbWV0ZXIoZ2wuQ1VSUkVOVF9Q
Uk9HUkFNKSIsCisgICAgICAgICJnbC5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKSIsCisgICAg
ICAgICJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSIsCisg
ICAgICAgICJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfV0lEVEgpIiwKKyAgICAgICAgImdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVy
KSIsCisgICAgICAgICJnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5TSEFERVJfVFlQ
RSkiLAorICAgICAgICAiZ2wuZ2V0U2hhZGVyU291cmNlKHNoYWRlcikiLAorICAgICAgICAiZ2wu
Z2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKSIsCisgICAg
ICAgICJnbC5nZXRVbmlmb3JtKHByb2dyYW0sIHVuaWZvcm1Mb2NhdGlvbikiLAorICAgICAgICAi
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd2UG9zaXRpb24nKSIsCisgICAgICAgICJn
bC5nZXRWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElO
RykiLAorICAgICAgICAiZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpIiwKKyAgICAgICAgImds
LmdldEV4dGVuc2lvbignIiArIGV4dGVuc2lvbk5hbWUgKyAiJykiLAorICAgIF07CisgICAgdGVz
dEZ1bmN0aW9uc1RoYXRSZXR1cm5OVUxMKG51bGxUZXN0cyk7CisKKyAgICAvLyAiSXMiIHF1ZXJp
ZXMgc2hvdWxkIGFsbCByZXR1cm4gZmFsc2UuCisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNCdWZm
ZXIoYnVmZmVyKSIpOworICAgIHNob3VsZEJlRmFsc2UoImdsLmlzRW5hYmxlZChnbC5CTEVORCki
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImdsLmlzUHJvZ3JhbShwcm9ncmFtKSIpOworICAgIHNob3VsZEJl
RmFsc2UoImdsLmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcikiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJnbC5pc1NoYWRlcihzaGFkZXIpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNUZXh0
dXJlKHRleHR1cmUpIik7CisKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19F
UlJPUiIpOworCisgICAgLy8gdGVzdCBleHRlbnNpb25zCisgICAgaWYgKE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0KSB7CisgICAgICB0ZXN0R0xOT0Vycm9yRnVuY3Rpb25zKAorICAgICAgICBbCisg
ICAgICAgICAgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2ZXJ0
ZXhBcnJheU9iamVjdCkiLAorICAgICAgICAgICJPRVNfdmVydGV4X2FycmF5X29iamVjdC5pc1Zl
cnRleEFycmF5T0VTKHZlcnRleEFycmF5T2JqZWN0KSIsCisgICAgICAgICAgIk9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZlcnRleEFycmF5T2JqZWN0KSIsCisg
ICAgICAgIF0pOworICAgICAgdGVzdEZ1bmN0aW9uc1RoYXRSZXR1cm5OVUxMKAorICAgICAgICBb
CisgICAgICAgICAgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VT
KCkiLAorICAgICAgICBdKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmaW5pc2hU
ZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LW5vLWFscGhhLWZiby13aXRoLWFscGhhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQt
bm8tYWxwaGEtZmJvLXdpdGgtYWxwaGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWZjODBlZTVmYWMwMGNk
OTc0ZGYwNjM5MjViNGJjNGFhYzM0N2EzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250
ZXh0LW5vLWFscGhhLWZiby13aXRoLWFscGhhLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisvLyBUaGlzIGRlY2xhcmF0
aW9uIG5lZWRzIHRvIGJlIGdsb2JhbCBmb3IgInNob3VsZEJlIiB0byBzZWUgaXQKK3ZhciBnbDsK
KworZnVuY3Rpb24gaW5pdCgpCit7CisgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0aGF0IGEgV2Vi
R0wgY29udGV4dCB3aXRoIGFscGhhOmZhbHNlIHN0aWxsIHdvcmtzIGNvcnJlY3RseSBhZnRlciBo
YW5kbGluZyB0ZXh0dXJlcyB3aXRoIGFuIGFscGhhIGNoYW5uZWwuJyk7CisKKyAgICBydW5UZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIGdldFdlYkdMKGNvbnRleHRBdHRyaWJzKQoreworICAgIHJldHVy
biB3dHUuY3JlYXRlM0RDb250ZXh0KCJjIiwgY29udGV4dEF0dHJpYnMpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoMSAqIDEgKiA0KTsK
KyAgICBzaG91bGRCZU5vbk51bGwoImdsID0gZ2V0V2ViR0woeyBhbHBoYTogZmFsc2UsIGFudGlh
bGlhczogZmFsc2UgfSkiKTsKKworICAgIC8vIENsZWFyIHRvIGJsYWNrLiBBbHBoYSBjaGFubmVs
IG9mIGNsZWFyQ29sb3IoKSBpcyBpZ25vcmVkLgorICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAs
IDAuMCwgMC43KTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbMCwgMCwgMCwgMjU1XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJBbHBoYSBjaGFubmVsIG9mIGNsZWFyQ29sb3Igc2hvdWxkIGJlIGln
bm9yZWQiKTsKKworICAgIHd0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICAgICAg
ICAvLyBNYWtlIGEgbmV3IGZyYW1lYnVmZmVyIGFuZCBhdHRhY2ggYSB0ZXh0dXJlIHdpdGggYW4g
YWxwaGEgY2hhbm5lbC4KKyAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAg
ICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IG51bGwpOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworCisgICAg
ICAgIC8vIENsZWFyIHRleHR1cmUuIE5vdGUgdGhhdCBhbHBoYSBjaGFubmVsIGlzIG5vdCAxLjAu
CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAwLjAsIDAuMCwgMC41KTsKKyAgICAgICAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIDEsIDEsIFsyNTUsIDAsIDAsIDEyOF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkFscGhhIGNoYW5uZWwgb2YgY2xlYXJDb2xvciBzaG91bGQgYmUgb2JleWVkIGZvciBG
Qk8gd2l0aCBhbHBoYSBjaGFubmVsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsK
KworICAgICAgICAvLyBCaW5kIGJhY2sgYnVmZmVyIGFuZCBjaGVjayB0aGF0IGl0cyBhbHBoYSBj
aGFubmVsIGlzIHN0aWxsIDEuMC4KKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBudWxsKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwg
MSwgWzAsIDAsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFscGhhIGNo
YW5uZWwgb2YgYmFjayBidWZmZXIgc2hvdWxkIHN0aWxsIGJlIDI1NSIpOworICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgfSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJpbml0KCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIGJsdWU7IiBpZD0iYyI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9jb250ZXh0L2NvbnRleHQtcmVsZWFzZS11cG9uLXJlbG9hZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LXJlbGVhc2UtdXBvbi1yZWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmQzYTYxNzQx
YzM1ZDMyZTQ0YTlmZDM5OTNkNGVjZjc2YWU3ZTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LXJlbGVhc2UtdXBvbi1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBD
b250ZXh0IFJlbGVhc2UgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBpZD0i
aG9zdCIgc3R5bGU9IndpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsgYm9yZGVyOiAwOyI+PC9p
ZnJhbWU+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBXZWJHTCBjb250ZXh0cyBhcmUgcmVsZWFzZWQgcHJvcGVybHkgdXBvbiBwYWdl
IHJlbG9hZCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBob3N0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKK3ZhciB0ZXN0SXRlcmF0aW9ucyA9IDI1Owor
dmFyIGN1cnJlbnRJdGVyYXRpb24gPSAwOworCitmdW5jdGlvbiByZWZyZXNoRnJhbWUoKSB7Cisg
IGlmKGN1cnJlbnRJdGVyYXRpb24gPCB0ZXN0SXRlcmF0aW9ucykgeworICAgIGN1cnJlbnRJdGVy
YXRpb24rKzsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgIiArIGN1cnJlbnRJdGVy
YXRpb24gKyAiIG9mICIgKyB0ZXN0SXRlcmF0aW9ucyk7CisgICAgaG9zdC5zcmMgPSAicmVzb3Vy
Y2VzL2NvbnRleHQtcmVsZWFzZS11cG9uLXJlbG9hZC1jaGlsZC5odG1sIjsKKyAgfSBlbHNlIHsK
KyAgICBmaW5pc2hUZXN0KCk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnRleHQoKSB7Cisg
IHZhciBnbCA9IGhvc3QuY29udGVudFdpbmRvdy5nbENvbnRleHQ7CisgIGFzc2VydE1zZyhnbCAh
PSBudWxsLCAiY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseSIpOworCisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyIpOworCisgIGlm
KGdsLmNhbnZhcy53aWR0aCAhPSBnbC5kcmF3aW5nQnVmZmVyV2lkdGggfHwKKyAgICBnbC5jYW52
YXMuaGVpZ2h0ICE9IGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpIHsKKyAgICB0ZXN0RmFpbGVkKCJC
dWZmZXIgd2FzIHRoZSB3cm9uZyBzaXplOiAiICsKKyAgICAgICAgZ2wuZHJhd2luZ0J1ZmZlcldp
ZHRoICsgIngiICsgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCk7CisgIH0gZWxzZSB7CisgICAgdGVz
dFBhc3NlZCgiQnVmZmVyIHdhcyB0aGUgY29ycmVjdCBzaXplOiAiICsKKyAgICAgICAgZ2wuZHJh
d2luZ0J1ZmZlcldpZHRoICsgIngiICsgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCk7CisgICAgcmVm
cmVzaEZyYW1lKCk7CisgIH0KKworICBnbCA9IG51bGw7Cit9CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgaWYoZXZlbnQuZGF0YSA9PSAi
UmVhZHkiKSB7CisgICAgdGVzdENvbnRleHQoKTsKKyAgfQorfSk7CisKK3JlZnJlc2hGcmFtZSgp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtcmVsZWFzZS13aXRoLXdvcmtl
cnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1yZWxlYXNlLXdpdGgtd29ya2Vycy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzMDM3ZmQzYzEyNTZlZDc0NzUzMjM1YWEwMzI2Yjk5MDFjMzJkNWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtcmVsZWFzZS13aXRoLXdvcmtlcnMuaHRtbApAQCAt
MCwwICsxLDcyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBDb250ZXh0IFJlbGVhc2UgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGlmcmFtZSBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZw
eDsgYm9yZGVyOiAwOyI+PC9pZnJhbWU+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBXZWJHTCBjb250ZXh0cyBhcmUgcmVsZWFzZWQg
cHJvcGVybHkgd2hlbiBhIHdvcmtlciBpcyB1c2VkIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKKwordmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOwordmFy
IHRlc3RJdGVyYXRpb25zID0gMjU7Cit2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKK2Z1bmN0
aW9uIHJlZnJlc2hGcmFtZSgpIHsKKyAgaWYoY3VycmVudEl0ZXJhdGlvbiA8IHRlc3RJdGVyYXRp
b25zKSB7CisgICAgY3VycmVudEl0ZXJhdGlvbisrOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiVGVzdCAiICsgY3VycmVudEl0ZXJhdGlvbiArICIgb2YgIiArIHRlc3RJdGVyYXRpb25zKTsK
KyAgICBob3N0LnNyYyA9ICJyZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLWNoaWxkLXdpdGgtd29y
a2VyLmh0bWwiOworICB9IGVsc2UgeworICAgIGZpbmlzaFRlc3QoKTsKKyAgfQorfQorCitmdW5j
dGlvbiB0ZXN0Q29udGV4dCgpIHsKKyAgdmFyIGdsID0gaG9zdC5jb250ZW50V2luZG93LmdsQ29u
dGV4dDsKKyAgYXNzZXJ0TXNnKGdsICE9IG51bGwsICJjb250ZXh0IHdhcyBjcmVhdGVkIHByb3Bl
cmx5Iik7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzIik7CisKKyAgaWYoZ2wuY2FudmFzLndpZHRoICE9IGdsLmRyYXdpbmdCdWZm
ZXJXaWR0aCB8fAorICAgIGdsLmNhbnZhcy5oZWlnaHQgIT0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdo
dCkgeworICAgIHRlc3RGYWlsZWQoIkJ1ZmZlciB3YXMgdGhlIHdyb25nIHNpemU6ICIgKworICAg
ICAgICBnbC5kcmF3aW5nQnVmZmVyV2lkdGggKyAieCIgKyBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0
KTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNp
emU6ICIgKworICAgICAgICBnbC5kcmF3aW5nQnVmZmVyV2lkdGggKyAieCIgKyBnbC5kcmF3aW5n
QnVmZmVySGVpZ2h0KTsKKyAgICByZWZyZXNoRnJhbWUoKTsKKyAgfQorCisgIGdsID0gbnVsbDsK
K30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkg
eworICBpZihldmVudC5kYXRhID09ICJSZWFkeSIpIHsKKyAgICB0ZXN0Q29udGV4dCgpOworICB9
Cit9KTsKKworcmVmcmVzaEZyYW1lKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1zaXplLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LXNpemUtY2hhbmdlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjM4ZDdhNzA5OWQxYTkzOTMzNzFmMTczNmE3NGRiNzA5Nzg2MzI0YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1zaXplLWNoYW5nZS5odG1sCkBAIC0wLDAg
KzEsOTIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKKy8vIFRoZXNlIGRlY2xhcmF0aW9ucyBuZWVkIHRv
IGJlIGdsb2JhbCBmb3IgInNob3VsZEJlIiB0byBzZWUgdGhlbQordmFyIGdsOwordmFyIHBpeGVs
ID0gWzAsIDAsIDAsIDFdOwordmFyIGNhbnZhczsKKworZnVuY3Rpb24gaW5pdCgpCit7CisgICAg
ZGVzY3JpcHRpb24oJ1ZlcmlmeSB0aGF0IGNoYW5naW5nIHRoZSBzaXplIG9mIGFuIGFudGlhbGlh
c2VkIFdlYkdMIGNvbnRleHQgZG9lcyBub3QgY2F1c2UgaXQgdG8gc3RvcCB3b3JraW5nLicpOwor
CisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBnZXRXZWJHTChjYW52YXNXaWR0aCwgY2Fu
dmFzSGVpZ2h0LCBjb250ZXh0QXR0cmlicykKK3sKKyAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBpZiAoIWNhbnZhcykKKyAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9
IGNhbnZhc0hlaWdodDsKKworICAgIGdsID0gV2ViR0xUZXN0VXRpbHMuY3JlYXRlM0RDb250ZXh0
KGNhbnZhcywgY29udGV4dEF0dHJpYnMpOworICAgIGlmICghZ2wpCisgICAgICAgIHJldHVybiBu
dWxsOworCisgICAgcmV0dXJuIGdsOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBz
aG91bGRCZU5vbk51bGwoImdsID0gZ2V0V2ViR0woMSwgMSwgeyBhbHBoYTogZmFsc2UsIGFudGlh
bGlhczogdHJ1ZSB9KSIpOworCisgICAgLy8gQ2xlYXIgdG8gYmxhY2suCisgICAgZ2wuY2xlYXJD
b2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcGl4ZWwncyBSIGNoYW5uZWwgaXMgMC4KKyAg
ICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoMSAqIDEgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgcGl4ZWxb
MF0gPSBidWZbMF07CisgICAgc2hvdWxkQmVUcnVlKCJwaXhlbFswXSA9PSAwIik7CisKKyAgICAv
LyBDaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGNhbnZhcy4KKyAgICBjYW52YXMud2lkdGggPSAzOwor
ICAgIGNhbnZhcy5oZWlnaHQgPSAzOworCisgICAgLy8gQ2xlYXIgdG8gYmxhY2suCisgICAgZ2wu
Y2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworCisgICAgLy8gQ2xlYXIgdGhlIHRvcC1sZWZ0IHBpeGVsIHRvIHdoaXRlLgor
ICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgIGdsLnNjaXNzb3IoMCwgMCwgMSwg
MSk7CisgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdG9wLWxlZnQg
cGl4ZWwgaGFzIFIgY2hhbm5lbCAyNTUuCisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIHBpeGVsWzBdID0gYnVmWzBdOwor
ICAgIHNob3VsZEJlVHJ1ZSgicGl4ZWxbMF0gPT0gMjU1Iik7CisKKyAgICAvLyBDaGVjayB0aGF0
IHRoZSBib3R0b20tcmlnaHQgcGl4ZWwgaGFzIFIgY2hhbm5lbCAwLgorICAgIGdsLnJlYWRQaXhl
bHMoMiwgMiwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICBwaXhl
bFswXSA9IGJ1ZlswXTsKKyAgICBzaG91bGRCZVRydWUoInBpeGVsWzBdID09IDAiKTsKKworICAg
IGZpbmlzaFRlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Imlu
aXQoKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC10eXBl
LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC10eXBlLXRlc3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YWEzMTUyMTlhZjhiNTc2Zjc5M2E4ODlkMWE0ZDYyNjFjMGZmMTExCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvY29udGV4dC9jb250ZXh0LXR5cGUtdGVzdC5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENh
bnZhcyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgor
PGNhbnZhcyBpZD0iY2FudmFzMmQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBX
ZWJHTCBpbXBsZW1lbnRhdGlvbnMgaW50ZXJhY3QgY29ycmVjdGx5IHdpdGggdGhlIGNhbnZhcyB0
YWcuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCithc3Nl
cnRNc2cod2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCwKKyAgICAgICAgICAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0IHNob3VsZCBiZSBhIG1lbWJlciBvZiB3aW5kb3ciKTsKK2Fzc2VydE1zZygn
V2ViR0xSZW5kZXJpbmdDb250ZXh0JyBpbiB3aW5kb3csCisgICAgICAgICAgIldlYkdMUmVuZGVy
aW5nQ29udGV4dCBzaG91bGQgYmUgJ2luJyB3aW5kb3ciKTsKK2Fzc2VydE1zZyhPYmplY3QuZ2V0
UHJvdG90eXBlT2YoV2ViR0xSZW5kZXJpbmdDb250ZXh0LnByb3RvdHlwZSkgPT09IE9iamVjdC5w
cm90b3R5cGUsCisgICAgICAgICAgIldlYkdMUmVuZGVyaW5nQ29udGV4dCBzaG91bGQgb25seSBo
YXZlIE9iamVjdCBpbiBpdCdzIHByb3RvdHlwZSBjaGFpbiIpOworCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworaWYgKCFnbCkgeworICB0
ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFz
c2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgIGRlYnVnKCJDaGVja2luZyBjb250ZXh0IHR5cGUi
KTsKKyAgYXNzZXJ0TXNnKGdsIGluc3RhbmNlb2YgV2ViR0xSZW5kZXJpbmdDb250ZXh0LAorICAg
ICAgICAgICAgImNvbnRleHQgdHlwZSBzaG91bGQgYmUgV2ViR0xSZW5kZXJpbmdDb250ZXh0Iik7
Cit9CitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvZGVsZXRlZC1vYmplY3QtYmVoYXZp
b3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2NvbnRleHQvZGVsZXRlZC1vYmplY3QtYmVoYXZpb3IuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MjVmMzk5Njc4ZjA1OTZjMTgyOWE4OGI3NWYxNGMyYzFlNTU1NjZjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvY29udGV4dC9kZWxldGVkLW9iamVjdC1iZWhhdmlvci5odG1sCkBAIC0wLDAgKzEsMjM3
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5EZWxldGVkIE9iamVjdCBCZWhhdmlvcjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY2FudmFzZXMiPgorPGNhbnZhcyBpZD0i
Y2FudmFzMSI+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlZlcmlmaWVzIGJlaGF2aW9yIG9mIGRlbGV0ZWQg
b2JqZWN0cyIpOworCitjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2NvbnN0IGNhbnZhczEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOworY29uc3Qgc3ogPSA2NDsKK2Nh
bnZhczEud2lkdGggPSBzejsKK2NhbnZhczEuaGVpZ2h0ID0gc3o7Citjb25zdCBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoImNhbnZhczEiKTsKK2xldCB0ZXgsIHJiOyAvLyBmb3Igc2hvdWxkQmUK
KworZnVuY3Rpb24gdGVzdEJvdW5kRkJPVGV4dHVyZSgpIHsKKyAgZGVidWcoIlZlcmlmaWVzIHRo
YXQgYSB0ZXh0dXJlIGF0dGFjaGVkIHRvIGEgYm91bmQgZnJhbWVidWZmZXIgYW5kIHRoZW4gZGVs
ZXRlZCBpcyBhdXRvbWF0aWNhbGx5IGRldGFjaGVkIik7CisKKyAgbGV0IGZiID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7
CisgIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBz
eiwgc3osIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRF
WFRVUkVfMkQsIHRleCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAic2hvdWxkIGJlIG5vIGVycm9ycyBkdXJpbmcgZnJhbWVidWZmZXIgc2V0dXAiKTsKKyAgLy8g
VGhlIFdlYkdMIDEuMCBzcGVjIGd1YXJhbnRlZXMgdGhhdCB0aGlzIGNvbWJpbmF0aW9uIG9mIGF0
dGFjaG1lbnRzIHJlc3VsdHMKKyAgLy8gaW4gYSBjb21wbGV0ZSBmcmFtZWJ1ZmZlci4KKyAgc2hv
dWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFIiwKKyAgICAgICAgICAgIkZyYW1lYnVmZmVyIHNob3VsZCBiZSBj
b21wbGV0ZSBhZnRlciBzZXR1cCIpOworICBkZWJ1ZygiVGV4dHVyZSBzaG91bGQgc3RpbGwgYmUg
Ym91bmQgdG8gdGhlIGNvbnRleHQiKTsKKyAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5U
RVhUVVJFX0JJTkRJTkdfMkQpIiwgInRleCIpOworICAvLyBEZWxldGUgdGhlIHRleHR1cmUuCisg
IGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgZGVidWcoIlRleHR1cmUgc2hvdWxkIGhhdmUgYmVl
biB1bmJvdW5kIGZyb20gdGhlIGNvbnRleHQiKTsKKyAgc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJh
bWV0ZXIoZ2wuVEVYVFVSRV9CSU5ESU5HXzJEKSIpOworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hv
dWxkIHJlcG9ydCB0aGF0IHRoZSB0ZXh0dXJlIHdhcyBkZXRhY2hlZCIpOworICBzaG91bGRCZSgi
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSki
LCAiZ2wuTk9ORSIpOworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hvdWxkIGJlIGluY29tcGxldGUg
YWZ0ZXIgdGV4dHVyZSB3YXMgZGVsZXRlZCIpOworICBzaG91bGROb3RCZSgiZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUi
KTsKKyAgZGVidWcoIlRleHR1cmUgc2hvdWxkIG5vdCByZXBvcnQgdGhhdCBpdCdzIHN0aWxsIGEg
dGV4dHVyZSBhZnRlciBkZWxldGlvbiIpOworICBzaG91bGRCZSgiZ2wuaXNUZXh0dXJlKHRleCki
LCAiZmFsc2UiKTsKKyAgLy8gRnJhbWVidWZmZXIgc2hvdWxkIG5vdCBmdW5jdGlvbi4KKyAgZ2wu
Y2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04sICJGcmFtZWJ1ZmZlciBzaG91bGQgbm90IHdvcmsgYWZ0ZXIgZGVsZXRpbmcg
aXRzIG9ubHkgYXR0YWNobWVudCIpOworICAvLyBEZWZhdWx0IGZyYW1lYnVmZmVyIHNob3VsZG4n
dCBoYXZlIGJlZW4gdG91Y2hlZC4KKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBudWxsKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgc3osIHN6LCBbMCwgMCwg
MCwgMF0sICJkZWZhdWx0IGZyYW1lYnVmZmVyIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjayIp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBl
cnJvcnMgYWZ0ZXIgdmVyaWZ5aW5nIGRlZmF1bHQgZnJhbWVidWZmZXIncyBjb250ZW50cyIpOwor
ICAvLyBBdHRlbXB0IHRvIGJpbmQgZGVsZXRlZCB0ZXh0dXJlIHNob3VsZCBmYWlsLgorICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZyb20gYmluZGluZyBkZWxldGVkIHRleHR1cmUiKTsK
KyAgZGVidWcoIiIpOworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7Cit9CisKK2Z1bmN0aW9u
IHRlc3RVbmJvdW5kRkJPVGV4dHVyZSgpIHsKKyAgZGVidWcoIlZlcmlmaWVzIHRoYXQgYSB0ZXh0
dXJlIGF0dGFjaGVkIHRvIGFuIHVuYm91bmQgZnJhbWVidWZmZXIgYW5kIHRoZW4gZGVsZXRlZCBy
ZW1haW5zIHVzYWJsZSB1bnRpbCBkZXRhY2hlZCIpOworCisgIGxldCBmYiA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
ICB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgc3os
IHN6LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCB0ZXgsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InNob3VsZCBiZSBubyBlcnJvcnMgZHVyaW5nIGZyYW1lYnVmZmVyIHNldHVwIik7CisgIC8vIFRo
ZSBXZWJHTCAxLjAgc3BlYyBndWFyYW50ZWVzIHRoYXQgdGhpcyBjb21iaW5hdGlvbiBvZiBhdHRh
Y2htZW50cyByZXN1bHRzCisgIC8vIGluIGEgY29tcGxldGUgZnJhbWVidWZmZXIuCisgIHNob3Vs
ZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFN
RUJVRkZFUl9DT01QTEVURSIsCisgICAgICAgICAgICJGcmFtZWJ1ZmZlciBzaG91bGQgYmUgY29t
cGxldGUgYWZ0ZXIgc2V0dXAiKTsKKyAgLy8gVW5iaW5kIHRoZSBmcmFtZWJ1ZmZlciBmcm9tIHRo
ZSBjb250ZXh0IHNvIHRoYXQgZGVsZXRpbmcgdGhlIHRleHR1cmUKKyAgLy8gZG9lc24ndCBhdXRv
bWF0aWNhbGx5IHVuYmluZCBpdCBmcm9tIHRoZSBmcmFtZWJ1ZmZlci4KKyAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgZGVidWcoIlRleHR1cmUgc2hvdWxkIHN0
aWxsIGJlIGJvdW5kIHRvIHRoZSBjb250ZXh0Iik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuVEVYVFVSRV9CSU5ESU5HXzJEKSIsICJ0ZXgiKTsKKyAgLy8gRGVsZXRlIHRoZSB0ZXh0
dXJlLgorICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIGRlYnVnKCJUZXh0dXJlIHNob3VsZCBo
YXZlIGJlZW4gdW5ib3VuZCBmcm9tIHRoZSBjb250ZXh0Iik7CisgIHNob3VsZEJlTnVsbCgiZ2wu
Z2V0UGFyYW1ldGVyKGdsLlRFWFRVUkVfQklORElOR18yRCkiKTsKKyAgLy8gRnJhbWVidWZmZXIg
c2hvdWxkIHN0aWxsIGJlIGNvbXBsZXRlLgorICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiKTsKKyAgZGVidWcoIkZyYW1lYnVmZmVyIHNob3VsZCBzdGlsbCBiZSBjb21wbGV0
ZSBhZnRlciB0ZXh0dXJlIHdhcyBkZWxldGVkIik7CisgIHNob3VsZEJlKCJnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIp
OworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hvdWxkIHJlcG9ydCB0aGF0IHRoZSB0ZXh0dXJlIGlz
IHN0aWxsIGF0dGFjaGVkIik7CisgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSIsICJ0ZXgiKTsKKyAgZGVidWcoIlRleHR1
cmUgc2hvdWxkIG5vdCByZXBvcnQgdGhhdCBpdCdzIHN0aWxsIGEgdGV4dHVyZSBhZnRlciBkZWxl
dGlvbiIpOworICBzaG91bGRCZSgiZ2wuaXNUZXh0dXJlKHRleCkiLCAiZmFsc2UiKTsKKyAgLy8g
RnJhbWVidWZmZXIgc2hvdWxkIHN0aWxsIGZ1bmN0aW9uLgorICBnbC5jbGVhckNvbG9yKDAuMCwg
MS4wLCAwLjAsIDEuMCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBzeiwgc3osIFswLCAyNTUsIDAsIDI1NV0sICJmcmFt
ZWJ1ZmZlciBzaG91bGQgYmUgZ3JlZW4iKTsKKyAgLy8gRGVsZXRpbmcgdGV4dHVyZSBhIHNlY29u
ZCB0aW1lIHNob3VsZCBub3QgdW5iaW5kIGl0IGZyb20gdGhlIGZyYW1lYnVmZmVyLgorICBnbC5k
ZWxldGVUZXh0dXJlKHRleCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiZGVsZXRpbmcgYW4gb2JqZWN0IHR3aWNlIGlzIG5vdCBhbiBlcnJvciIpOworICBkZWJ1Zygi
RnJhbWVidWZmZXIgc2hvdWxkIHN0aWxsIHJlcG9ydCB0aGF0IHRoZSB0ZXh0dXJlIGlzIGF0dGFj
aGVkIik7CisgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FKSIsICJ0ZXgiKTsKKyAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBz
aG91bGRuJ3QgaGF2ZSBiZWVuIHRvdWNoZWQuCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgbnVsbCk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHN6LCBzeiwg
WzAsIDAsIDAsIDBdLCAiZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUgdHJhbnNwYXJlbnQg
YmxhY2siKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQg
YmUgbm8gZXJyb3JzIGFmdGVyIHZlcmlmeWluZyBmcmFtZWJ1ZmZlcnMnIGNvbnRlbnRzIik7Cisg
IC8vIEF0dGVtcHQgdG8gYmluZCBkZWxldGVkIHRleHR1cmUgc2hvdWxkIGZhaWwuCisgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZnJvbSBiaW5kaW5nIGRlbGV0ZWQgdGV4dHVyZSIpOwor
ICBkZWJ1ZygiIik7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKK30KKworZnVuY3Rpb24g
dGVzdEJvdW5kRkJPUmVuZGVyYnVmZmVyKCkgeworICBkZWJ1ZygiVmVyaWZpZXMgdGhhdCBhIHJl
bmRlcmJ1ZmZlciBhdHRhY2hlZCB0byBhIGJvdW5kIGZyYW1lYnVmZmVyIGFuZCB0aGVuIGRlbGV0
ZWQgaXMgYXV0b21hdGljYWxseSBkZXRhY2hlZCIpOworCisgIGxldCBmYiA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
ICByYiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgcmIpOworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJV
RkZFUiwgZ2wuUkdCQTQsIHN6LCBzeikKKyAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJy
b3JzIGR1cmluZyBmcmFtZWJ1ZmZlciBzZXR1cCIpOworICAvLyBUaGUgV2ViR0wgMS4wIHNwZWMg
ZG9lc24ndCBndWFyYW50ZWUgdGhhdCB0aGlzIGZyYW1lYnVmZmVyIGNvbmZpZ3VyYXRpb24KKyAg
Ly8gd2lsbCBiZSBjb21wbGV0ZS4KKyAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgZGVidWcoIkZy
YW1lYnVmZmVyIHdpdGggR0xfUkdCQTQgcmVuZGVyYnVmZmVyIHdhcyBpbmNvbXBsZXRlOyBza2lw
cGluZyB0ZXN0Iik7CisgICAgcmV0dXJuOworICB9CisgIGRlYnVnKCJSZW5kZXJidWZmZXIgc2hv
dWxkIHN0aWxsIGJlIGJvdW5kIHRvIHRoZSBjb250ZXh0Iik7CisgIHNob3VsZEJlKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSX0JJTkRJTkcpIiwgInJiIik7CisgIC8vIERlbGV0ZSB0
aGUgcmVuZGVyYnVmZmVyLgorICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmIpOworICBkZWJ1Zygi
UmVuZGVyYnVmZmVyIHNob3VsZCBoYXZlIGJlZW4gdW5ib3VuZCBmcm9tIHRoZSBjb250ZXh0Iik7
CisgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUl9CSU5ESU5H
KSIpOworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hvdWxkIHJlcG9ydCB0aGF0IHRoZSB0ZXh0dXJl
IHdhcyBkZXRhY2hlZCIpOworICBzaG91bGRCZSgiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkiLCAiZ2wuTk9ORSIpOworICBkZWJ1ZygiRnJh
bWVidWZmZXIgc2hvdWxkIGJlIGluY29tcGxldGUgYWZ0ZXIgcmVuZGVyYnVmZmVyIHdhcyBkZWxl
dGVkIik7CisgIHNob3VsZE5vdEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworICBkZWJ1ZygiUmVuZGVyYnVm
ZmVyIHNob3VsZCBub3QgcmVwb3J0IHRoYXQgaXQncyBzdGlsbCBhIHJlbmRlcmJ1ZmZlciBhZnRl
ciBkZWxldGlvbiIpOworICBzaG91bGRCZSgiZ2wuaXNSZW5kZXJidWZmZXIocmIpIiwgImZhbHNl
Iik7CisgIC8vIEZyYW1lYnVmZmVyIHNob3VsZCBub3QgZnVuY3Rpb24uCisgIGdsLmNsZWFyQ29s
b3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OLCAiRnJhbWVidWZmZXIgc2hvdWxkIG5vdCB3b3JrIGFmdGVyIGRlbGV0aW5nIGl0cyBvbmx5
IGF0dGFjaG1lbnQiKTsKKyAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGRuJ3QgaGF2ZSBi
ZWVuIHRvdWNoZWQuCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7
CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHN6LCBzeiwgWzAsIDAsIDAsIDBdLCAi
ZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2siKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGFm
dGVyIHZlcmlmeWluZyBmcmFtZWJ1ZmZlcnMnIGNvbnRlbnRzIik7CisgIC8vIEF0dGVtcHQgdG8g
YmluZCBkZWxldGVkIHJlbmRlcmJ1ZmZlciBzaG91bGQgZmFpbC4KKyAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJmcm9tIGJpbmRpbmcgZGVsZXRlZCByZW5kZXJidWZmZXIiKTsK
KyAgZGVidWcoIiIpOworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7Cit9CisKK2Z1bmN0aW9u
IHRlc3RVbmJvdW5kRkJPUmVuZGVyYnVmZmVyKCkgeworICBkZWJ1ZygiVmVyaWZpZXMgdGhhdCBh
IHJlbmRlcmJ1ZmZlciBhdHRhY2hlZCB0byBhbiB1bmJvdW5kIGZyYW1lYnVmZmVyIGFuZCB0aGVu
IGRlbGV0ZWQgcmVtYWlucyB1c2FibGUgdW50aWwgZGV0YWNoZWQiKTsKKworICBsZXQgZmIgPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZiKTsKKyAgcmIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCBzeiwgc3opCisgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVG
RkVSLCByYik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxk
IGJlIG5vIGVycm9ycyBkdXJpbmcgZnJhbWVidWZmZXIgc2V0dXAiKTsKKyAgLy8gVGhlIFdlYkdM
IDEuMCBzcGVjIGRvZXNuJ3QgZ3VhcmFudGVlIHRoYXQgdGhpcyBmcmFtZWJ1ZmZlciBjb25maWd1
cmF0aW9uCisgIC8vIHdpbGwgYmUgY29tcGxldGUuCisgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAg
IGRlYnVnKCJGcmFtZWJ1ZmZlciB3aXRoIEdMX1JHQkE0IHJlbmRlcmJ1ZmZlciB3YXMgaW5jb21w
bGV0ZTsgc2tpcHBpbmcgdGVzdCIpOworICAgIHJldHVybjsKKyAgfQorICAvLyBVbmJpbmQgdGhl
IGZyYW1lYnVmZmVyIGZyb20gdGhlIGNvbnRleHQgc28gdGhhdCBkZWxldGluZyB0aGUgcmVuZGVy
YnVmZmVyCisgIC8vIGRvZXNuJ3QgYXV0b21hdGljYWxseSB1bmJpbmQgaXQgZnJvbSB0aGUgZnJh
bWVidWZmZXIuCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cisg
IGRlYnVnKCJSZW5kZXJidWZmZXIgc2hvdWxkIHN0aWxsIGJlIGJvdW5kIHRvIHRoZSBjb250ZXh0
Iik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSX0JJTkRJTkcp
IiwgInJiIik7CisgIC8vIERlbGV0ZSB0aGUgcmVuZGVyYnVmZmVyLgorICBnbC5kZWxldGVSZW5k
ZXJidWZmZXIocmIpOworICBkZWJ1ZygiUmVuZGVyYnVmZmVyIHNob3VsZCBoYXZlIGJlZW4gdW5i
b3VuZCBmcm9tIHRoZSBjb250ZXh0Iik7CisgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUl9CSU5ESU5HKSIpOworICAvLyBGcmFtZWJ1ZmZlciBzaG91bGQgc3Rp
bGwgYmUgY29tcGxldGUuCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIp
OworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hvdWxkIHN0aWxsIGJlIGNvbXBsZXRlIGFmdGVyIHJl
bmRlcmJ1ZmZlciB3YXMgZGVsZXRlZCIpOworICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKyAg
ZGVidWcoIkZyYW1lYnVmZmVyIHNob3VsZCByZXBvcnQgdGhhdCB0aGUgcmVuZGVyYnVmZmVyIGlz
IHN0aWxsIGF0dGFjaGVkIik7CisgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSIsICJyYiIpOworICBkZWJ1ZygiUmVuZGVy
YnVmZmVyIHNob3VsZCBub3QgcmVwb3J0IHRoYXQgaXQncyBzdGlsbCBhIHJlbmRlcmJ1ZmZlciBh
ZnRlciBkZWxldGlvbiIpOworICBzaG91bGRCZSgiZ2wuaXNSZW5kZXJidWZmZXIocmIpIiwgImZh
bHNlIik7CisgIC8vIEZyYW1lYnVmZmVyIHNob3VsZCBzdGlsbCBmdW5jdGlvbi4KKyAgZ2wuY2xl
YXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgLy8gVXNlIGEgaGlnaCB0b2xlcmFuY2UgdG8gYWNjb21tb2RhdGUgbG93IGJpdCBk
ZXB0aCBwcmVjaXNpb24uCisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHN6LCBzeiwg
WzAsIDI1NSwgMCwgMjU1XSwgImZyYW1lYnVmZmVyIHNob3VsZCBiZSBncmVlbiIsIDIwKTsKKyAg
Ly8gRGVsZXRpbmcgcmVuZGVyYnVmZmVyIGEgc2Vjb25kIHRpbWUgc2hvdWxkIG5vdCB1bmJpbmQg
aXQgZnJvbSB0aGUgZnJhbWVidWZmZXIuCisgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYik7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZGVsZXRpbmcgYW4gb2JqZWN0
IHR3aWNlIGlzIG5vdCBhbiBlcnJvciIpOworICBkZWJ1ZygiRnJhbWVidWZmZXIgc2hvdWxkIHN0
aWxsIHJlcG9ydCB0aGF0IHRoZSByZW5kZXJidWZmZXIgaXMgYXR0YWNoZWQiKTsKKyAgc2hvdWxk
QmUoImdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05B
TUUpIiwgInJiIik7CisgIC8vIERlZmF1bHQgZnJhbWVidWZmZXIgc2hvdWxkbid0IGhhdmUgYmVl
biB0b3VjaGVkLgorICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOwor
ICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBzeiwgc3osIFswLCAwLCAwLCAwXSwgImRl
ZmF1bHQgZnJhbWVidWZmZXIgc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrIik7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBhZnRl
ciB2ZXJpZnlpbmcgZnJhbWVidWZmZXJzJyBjb250ZW50cyIpOworICAvLyBBdHRlbXB0IHRvIGJp
bmQgZGVsZXRlZCByZW5kZXJidWZmZXIgc2hvdWxkIGZhaWwuCisgIGdsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCByYik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiZnJvbSBiaW5kaW5nIGRlbGV0ZWQgcmVuZGVyYnVmZmVyIik7Cisg
IGRlYnVnKCIiKTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmIpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0cygpIHsKKyAgdGVzdEJvdW5kRkJPVGV4dHVyZSgpOworICB0ZXN0VW5ib3VuZEZCT1Rl
eHR1cmUoKTsKKyAgdGVzdEJvdW5kRkJPUmVuZGVyYnVmZmVyKCk7CisgIHRlc3RVbmJvdW5kRkJP
UmVuZGVyYnVmZmVyKCk7CisgIGZpbmlzaFRlc3QoKTsKK30KKworcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHJ1blRlc3RzKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvaW5jb3JyZWN0LWNvbnRl
eHQtb2JqZWN0LWJlaGF2aW91ci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9pbmNvcnJlY3QtY29udGV4dC1vYmpl
Y3QtYmVoYXZpb3VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBkOWIwNDcwODc1OGNkMzc1NzJkN2Q0OTMx
NzJmYWI3NzVmOTk2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvaW5jb3JyZWN0LWNvbnRl
eHQtb2JqZWN0LWJlaGF2aW91ci5odG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMg
d2l0aCBvYmplY3RzIGZyb20gb3RoZXIgY29udGV4dHMiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGNvbnRleHRBID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRl
eHRCID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGJ1ZmZlckEgPSBjb250ZXh0QS5jcmVh
dGVCdWZmZXIoKTsKK3ZhciBidWZmZXJCID0gY29udGV4dEIuY3JlYXRlQnVmZmVyKCk7Cit2YXIg
ZnJhbWVCdWZmZXJBID0gY29udGV4dEEuY3JlYXRlRnJhbWVidWZmZXIoKTsKK3ZhciBmcmFtZUJ1
ZmZlckIgPSBjb250ZXh0Qi5jcmVhdGVGcmFtZWJ1ZmZlcigpOwordmFyIHByb2dyYW1BID0gd3R1
LmxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dEEpOwordmFyIHByb2dyYW1CID0gd3R1LmxvYWRT
dGFuZGFyZFByb2dyYW0oY29udGV4dEIpOwordmFyIHJlbmRlckJ1ZmZlckEgPSBjb250ZXh0QS5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKK3ZhciByZW5kZXJCdWZmZXJCID0gY29udGV4dEIuY3JlYXRl
UmVuZGVyYnVmZmVyKCk7Cit2YXIgc2hhZGVyQSA9IHd0dS5sb2FkU3RhbmRhcmRWZXJ0ZXhTaGFk
ZXIoY29udGV4dEEpOwordmFyIHNoYWRlckIgPSB3dHUubG9hZFN0YW5kYXJkVmVydGV4U2hhZGVy
KGNvbnRleHRCKTsKK3ZhciB0ZXh0dXJlQSA9IGNvbnRleHRBLmNyZWF0ZVRleHR1cmUoKTsKK3Zh
ciB0ZXh0dXJlQiA9IGNvbnRleHRCLmNyZWF0ZVRleHR1cmUoKTsKK3ZhciBsb2NhdGlvbkEgPSBj
b250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUEsICd1X21vZGVsVmlld1Byb2pNYXRy
aXgnKTsKK3ZhciBsb2NhdGlvbkIgPSBjb250ZXh0Qi5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKTsKK3ZhciB1bmlmb3JtRGF0YSA9IFtdOworCitm
dW5jdGlvbiBnZW5lcmF0ZUZsb2F0MzJBcnJheShsZW5ndGgpIHsKKyAgICB1bmlmb3JtRGF0YSA9
IG5ldyBGbG9hdDMyQXJyYXkobGVuZ3RoKTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVGbG9hdEFy
cmF5KGxlbmd0aCkgeworICAgIHVuaWZvcm1EYXRhID0gbmV3IEFycmF5KGxlbmd0aCk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bmlmb3JtRGF0YVtp
XSA9IDAuMDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlSW50MzJBcnJheShsZW5ndGgp
IHsKKyAgICB1bmlmb3JtRGF0YSA9IG5ldyBJbnQzMkFycmF5KGxlbmd0aCk7Cit9CisKK2Z1bmN0
aW9uIGdlbmVyYXRlSW50QXJyYXkobGVuZ3RoKSB7CisgICAgdW5pZm9ybURhdGEgPSBuZXcgQXJy
YXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHVuaWZvcm1EYXRhW2ldID0gMDsKKyAgICB9Cit9CisKKy8vIE1ha2UgdGhlIGJpbmRhYmxl
IG9iamVjdHMgdmFsaWQgaW4gYm90aCBjb250ZXh0cyBmaXJzdC4KK3d0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEuYmluZEJ1ZmZl
cihjb250ZXh0QS5BUlJBWV9CVUZGRVIsIGJ1ZmZlckEpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLmJpbmRCdWZmZXIo
Y29udGV4dEEuQVJSQVlfQlVGRkVSLCBudWxsKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0QiwgY29udGV4dEIuTk9fRVJST1IsICJjb250ZXh0Qi5iaW5kQnVmZmVyKGNvbnRl
eHRCLkFSUkFZX0JVRkZFUiwgYnVmZmVyQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEIsIGNvbnRleHRCLk5PX0VSUk9SLCAiY29udGV4dEIuYmluZEJ1ZmZlcihjb250ZXh0
Qi5BUlJBWV9CVUZGRVIsIG51bGwpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRl
eHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0
QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJBKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5iaW5kRnJhbWVidWZmZXIo
Y29udGV4dEEuRlJBTUVCVUZGRVIsIG51bGwpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRCLCBjb250ZXh0Qi5OT19FUlJPUiwgImNvbnRleHRCLmJpbmRGcmFtZWJ1ZmZlcihj
b250ZXh0Qi5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJCKSIpOword3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0QiwgY29udGV4dEIuTk9fRVJST1IsICJjb250ZXh0Qi5iaW5kRnJhbWVi
dWZmZXIoY29udGV4dEIuRlJBTUVCVUZGRVIsIG51bGwpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLmJpbmRSZW5kZXJi
dWZmZXIoY29udGV4dEEuUkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJBKSIpOword3R1LnNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5i
aW5kUmVuZGVyYnVmZmVyKGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgbnVsbCkiKTsKK3d0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEIsIGNvbnRleHRCLk5PX0VSUk9SLCAiY29udGV4dEIu
YmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0Qi5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRCLCBjb250ZXh0Qi5OT19FUlJPUiwg
ImNvbnRleHRCLmJpbmRSZW5kZXJidWZmZXIoY29udGV4dEIuUkVOREVSQlVGRkVSLCBudWxsKSIp
Oword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1Is
ICJjb250ZXh0QS5iaW5kVGV4dHVyZShjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQSkiKTsK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAi
Y29udGV4dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgbnVsbCkiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEIsIGNvbnRleHRCLk5PX0VSUk9SLCAiY29udGV4
dEIuYmluZFRleHR1cmUoY29udGV4dEIuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRCLCBjb250ZXh0Qi5OT19FUlJPUiwgImNvbnRleHRC
LmJpbmRUZXh0dXJlKGNvbnRleHRCLlRFWFRVUkVfMkQsIG51bGwpIik7CisKK3d0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29u
dGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0
QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLmF0
dGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuYmluZEF0
dHJpYkxvY2F0aW9uKHByb2dyYW1CLCAwLCAnZm9vJykiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuYmlu
ZEJ1ZmZlcihjb250ZXh0QS5BUlJBWV9CVUZGRVIsIGJ1ZmZlckIpIik7Cit3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRl
eHRBLmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJCKSIp
Oword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9P
UEVSQVRJT04sICJjb250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHRBLlJFTkRFUkJVRkZF
UiwgcmVuZGVyQnVmZmVyQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEs
IGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuYmluZFRleHR1cmUoY29udGV4
dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNv
bnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLmNvbXBpbGVTaGFk
ZXIoc2hhZGVyQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRl
eHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZGVsZXRlQnVmZmVyKGJ1ZmZlckIpIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1lQnVmZmVyQikiKTsKK3d0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFU
SU9OLCAiY29udGV4dEEuZGVsZXRlUHJvZ3JhbShwcm9ncmFtQikiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4
dEEuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlckJ1ZmZlckIpIik7Cit3dHUuc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRB
LmRlbGV0ZVNoYWRlcihzaGFkZXJCKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5kZWxldGVTaGFkZXIo
c2hhZGVyQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRB
LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlQikiKTsK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSIpOword3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQikiKTsKK3d0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29u
dGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZGRVIsIGNvbnRl
eHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVuZGVyQnVmZmVy
QikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFM
SURfT1BFUkFUSU9OLCAiY29udGV4dEEuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dEEuRlJB
TUVCVUZGRVIsIGNvbnRleHRBLkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0QS5URVhUVVJFXzJE
LCB0ZXh0dXJlQiwgMCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNv
bnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0QWN0aXZlQXR0cmliKHByb2dy
YW1CLCAwKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEu
SU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW1CLCAw
KSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbUIsIDApIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1CLCAnYV92ZXJ0ZXgn
KSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW1CLCAwKSIp
Oword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9P
UEVSQVRJT04sICJjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtQiwgMCkiKTsKK3d0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFU
SU9OLCAiY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlckIsIDApIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4
dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLmdldFVuaWZv
cm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0VW5pZm9ybShw
cm9ncmFtQSwgbG9jYXRpb25CKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5pc0J1ZmZl
cihidWZmZXJCKSIpOworc2hvdWxkQmVGYWxzZSgiY29udGV4dEEuaXNCdWZmZXIoYnVmZmVyQiki
KTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9S
LCAiY29udGV4dEEuaXNGcmFtZWJ1ZmZlcihmcmFtZUJ1ZmZlckIpIik7CitzaG91bGRCZUZhbHNl
KCJjb250ZXh0QS5pc0ZyYW1lYnVmZmVyKGZyYW1lQnVmZmVyQikiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEuaXNQcm9n
cmFtKHByb2dyYW1CKSIpOworc2hvdWxkQmVGYWxzZSgiY29udGV4dEEuaXNQcm9ncmFtKHByb2dy
YW1CKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9f
RVJST1IsICJjb250ZXh0QS5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJCdWZmZXJCKSIpOworc2hvdWxk
QmVGYWxzZSgiY29udGV4dEEuaXNSZW5kZXJidWZmZXIocmVuZGVyQnVmZmVyQikiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4
dEEuaXNTaGFkZXIoc2hhZGVyQikiKTsKK3Nob3VsZEJlRmFsc2UoImNvbnRleHRBLmlzU2hhZGVy
KHNoYWRlckIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0
QS5OT19FUlJPUiwgImNvbnRleHRBLmlzVGV4dHVyZSh0ZXh0dXJlQikiKTsKK3Nob3VsZEJlRmFs
c2UoImNvbnRleHRBLmlzVGV4dHVyZSh0ZXh0dXJlQikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEubGlu
a1Byb2dyYW0ocHJvZ3JhbUIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRB
LCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnNoYWRlclNvdXJjZShzaGFk
ZXJCLCAnZm9vJykiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0
QS51bmlmb3JtMWYobG9jYXRpb25CLCAwLjApIik7CitnZW5lcmF0ZUZsb2F0MzJBcnJheSgxKTsg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTFmdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhKSIpOwor
Z2VuZXJhdGVGbG9hdEFycmF5KDEpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRl
eHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xZnYobG9j
YXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25CLCAwKSIpOworZ2VuZXJhdGVJbnQzMkFycmF5
KDEpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xaXYobG9jYXRpb25CLCB1bmlmb3JtRGF0
YSkiKTsKK2dlbmVyYXRlSW50QXJyYXkoMSk7ICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3Jt
MWl2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTJmKGxvY2F0aW9uQiwgMC4wLCAwLjApIik7CitnZW5l
cmF0ZUZsb2F0MzJBcnJheSgyKTsgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEs
IGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTJmdihsb2NhdGlv
bkIsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJhdGVGbG9hdEFycmF5KDIpOyAgICB3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHRBLnVuaWZvcm0yZnYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4
dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtMmkobG9jYXRpb25CLCAwLCAw
KSIpOworZ2VuZXJhdGVJbnQzMkFycmF5KDIpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0y
aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVyYXRlSW50QXJyYXkoMik7ICAgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0QS51bmlmb3JtMml2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEpIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTNmKGxvY2F0
aW9uQiwgMC4wLCAwLjAsIDAuMCkiKTsKK2dlbmVyYXRlRmxvYXQzMkFycmF5KDMpOyAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0QS51bmlmb3JtM2Z2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEpIik7CitnZW5lcmF0
ZUZsb2F0QXJyYXkoMyk7ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNv
bnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTNmdihsb2NhdGlvbkIs
IHVuaWZvcm1EYXRhKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRl
eHRBLnVuaWZvcm0zaShsb2NhdGlvbkIsIDAsIDAsIDApIik7CitnZW5lcmF0ZUludDMyQXJyYXko
Myk7ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFM
SURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTNpdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRh
KSIpOworZ2VuZXJhdGVJbnRBcnJheSgzKTsgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0z
aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0QS51bmlmb3JtNGYobG9jYXRpb25CLCAwLjAsIDAuMCwgMC4wLCAwLjAp
Iik7CitnZW5lcmF0ZUZsb2F0MzJBcnJheSg0KTsgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTRm
dihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJhdGVGbG9hdEFycmF5KDQpOyAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJB
VElPTiwgImNvbnRleHRBLnVuaWZvcm00ZnYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtNGkobG9jYXRp
b25CLCAwLCAwLCAwLCAwKSIpOworZ2VuZXJhdGVJbnQzMkFycmF5KDQpOyAgICB3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHRBLnVuaWZvcm00aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVyYXRlSW50
QXJyYXkoNCk7ICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4
dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtNGl2KGxvY2F0aW9uQiwgdW5p
Zm9ybURhdGEpIik7CitnZW5lcmF0ZUZsb2F0MzJBcnJheSg0KTsgIHd0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEu
dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVy
YXRlRmxvYXRBcnJheSg0KTsgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwg
Y29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJhdGVGbG9hdDMyQXJyYXkoOSk7
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb25CLCBmYWxzZSwgdW5p
Zm9ybURhdGEpIik7CitnZW5lcmF0ZUZsb2F0QXJyYXkoOSk7ICAgIHd0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEu
dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVy
YXRlRmxvYXQzMkFycmF5KDE2KTsgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwg
Y29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxv
Y2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJhdGVGbG9hdEFycmF5KDE2KTsg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25CLCBmYWxzZSwgdW5p
Zm9ybURhdGEpIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9tZXRob2RzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0
L21ldGhvZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTI3NGZiOTgwNDU4YWZkMGM3MzU1OGZjYzkwNDE1
OWIwMzhiZDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9tZXRob2RzLmh0bWwKQEAgLTAs
MCArMSwyMTggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBNZXRob2RzIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgV2ViR0wgY29udGV4dCBoYXMgYWxsIHRoZSBtZXRob2RzIGluIHRoZSBzcGVj
aWZpY2F0aW9uLiIpOworCit2YXIgbWV0aG9kcyA9IFsKKyAgImdldENvbnRleHRBdHRyaWJ1dGVz
IiwKKyAgImFjdGl2ZVRleHR1cmUiLAorICAiYXR0YWNoU2hhZGVyIiwKKyAgImJpbmRBdHRyaWJM
b2NhdGlvbiIsCisgICJiaW5kQnVmZmVyIiwKKyAgImJpbmRGcmFtZWJ1ZmZlciIsCisgICJiaW5k
UmVuZGVyYnVmZmVyIiwKKyAgImJpbmRUZXh0dXJlIiwKKyAgImJsZW5kQ29sb3IiLAorICAiYmxl
bmRFcXVhdGlvbiIsCisgICJibGVuZEVxdWF0aW9uU2VwYXJhdGUiLAorICAiYmxlbmRGdW5jIiwK
KyAgImJsZW5kRnVuY1NlcGFyYXRlIiwKKyAgImJ1ZmZlckRhdGEiLAorICAiYnVmZmVyU3ViRGF0
YSIsCisgICJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIiwKKyAgImNsZWFyIiwKKyAgImNsZWFyQ29s
b3IiLAorICAiY2xlYXJEZXB0aCIsCisgICJjbGVhclN0ZW5jaWwiLAorICAiY29sb3JNYXNrIiwK
KyAgImNvbXBpbGVTaGFkZXIiLAorICAiY29tcHJlc3NlZFRleEltYWdlMkQiLAorICAiY29tcHJl
c3NlZFRleFN1YkltYWdlMkQiLAorICAiY29weVRleEltYWdlMkQiLAorICAiY29weVRleFN1Yklt
YWdlMkQiLAorICAiY3JlYXRlQnVmZmVyIiwKKyAgImNyZWF0ZUZyYW1lYnVmZmVyIiwKKyAgImNy
ZWF0ZVByb2dyYW0iLAorICAiY3JlYXRlUmVuZGVyYnVmZmVyIiwKKyAgImNyZWF0ZVNoYWRlciIs
CisgICJjcmVhdGVUZXh0dXJlIiwKKyAgImN1bGxGYWNlIiwKKyAgImRlbGV0ZUJ1ZmZlciIsCisg
ICJkZWxldGVGcmFtZWJ1ZmZlciIsCisgICJkZWxldGVQcm9ncmFtIiwKKyAgImRlbGV0ZVJlbmRl
cmJ1ZmZlciIsCisgICJkZWxldGVTaGFkZXIiLAorICAiZGVsZXRlVGV4dHVyZSIsCisgICJkZXB0
aEZ1bmMiLAorICAiZGVwdGhNYXNrIiwKKyAgImRlcHRoUmFuZ2UiLAorICAiZGV0YWNoU2hhZGVy
IiwKKyAgImRpc2FibGUiLAorICAiZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IiwKKyAgImRyYXdB
cnJheXMiLAorICAiZHJhd0VsZW1lbnRzIiwKKyAgImVuYWJsZSIsCisgICJlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSIsCisgICJmaW5pc2giLAorICAiZmx1c2giLAorICAiZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIiLAorICAiZnJhbWVidWZmZXJUZXh0dXJlMkQiLAorICAiZnJvbnRGYWNlIiwKKyAg
ImdlbmVyYXRlTWlwbWFwIiwKKyAgImdldEFjdGl2ZUF0dHJpYiIsCisgICJnZXRBY3RpdmVVbmlm
b3JtIiwKKyAgImdldEF0dGFjaGVkU2hhZGVycyIsCisgICJnZXRBdHRyaWJMb2NhdGlvbiIsCisg
ICJnZXRQYXJhbWV0ZXIiLAorICAiZ2V0QnVmZmVyUGFyYW1ldGVyIiwKKyAgImdldEVycm9yIiwK
KyAgImdldEV4dGVuc2lvbiIsCisgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIi
LAorICAiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsCisgICJnZXRQcm9ncmFtSW5mb0xvZyIsCisgICJn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIiLAorICAiZ2V0U2hhZGVyUGFyYW1ldGVyIiwKKyAgImdl
dFNoYWRlckluZm9Mb2ciLAorICAiZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IiwKKyAgImdldFNo
YWRlclNvdXJjZSIsCisgICJnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIiwKKyAgImdldFRleFBhcmFt
ZXRlciIsCisgICJnZXRVbmlmb3JtIiwKKyAgImdldFVuaWZvcm1Mb2NhdGlvbiIsCisgICJnZXRW
ZXJ0ZXhBdHRyaWIiLAorICAiZ2V0VmVydGV4QXR0cmliT2Zmc2V0IiwKKyAgImhpbnQiLAorICAi
aXNCdWZmZXIiLAorICAiaXNDb250ZXh0TG9zdCIsCisgICJpc0VuYWJsZWQiLAorICAiaXNGcmFt
ZWJ1ZmZlciIsCisgICJpc1Byb2dyYW0iLAorICAiaXNSZW5kZXJidWZmZXIiLAorICAiaXNTaGFk
ZXIiLAorICAiaXNUZXh0dXJlIiwKKyAgImxpbmVXaWR0aCIsCisgICJsaW5rUHJvZ3JhbSIsCisg
ICJwaXhlbFN0b3JlaSIsCisgICJwb2x5Z29uT2Zmc2V0IiwKKyAgInJlYWRQaXhlbHMiLAorICAi
cmVuZGVyYnVmZmVyU3RvcmFnZSIsCisgICJzYW1wbGVDb3ZlcmFnZSIsCisgICJzY2lzc29yIiwK
KyAgInNoYWRlclNvdXJjZSIsCisgICJzdGVuY2lsRnVuYyIsCisgICJzdGVuY2lsRnVuY1NlcGFy
YXRlIiwKKyAgInN0ZW5jaWxNYXNrIiwKKyAgInN0ZW5jaWxNYXNrU2VwYXJhdGUiLAorICAic3Rl
bmNpbE9wIiwKKyAgInN0ZW5jaWxPcFNlcGFyYXRlIiwKKyAgInRleEltYWdlMkQiLAorICAidGV4
UGFyYW1ldGVyZiIsCisgICJ0ZXhQYXJhbWV0ZXJpIiwKKyAgInRleFN1YkltYWdlMkQiLAorICAi
dW5pZm9ybTFmIiwKKyAgInVuaWZvcm0xZnYiLAorICAidW5pZm9ybTFpIiwKKyAgInVuaWZvcm0x
aXYiLAorICAidW5pZm9ybTJmIiwKKyAgInVuaWZvcm0yZnYiLAorICAidW5pZm9ybTJpIiwKKyAg
InVuaWZvcm0yaXYiLAorICAidW5pZm9ybTNmIiwKKyAgInVuaWZvcm0zZnYiLAorICAidW5pZm9y
bTNpIiwKKyAgInVuaWZvcm0zaXYiLAorICAidW5pZm9ybTRmIiwKKyAgInVuaWZvcm00ZnYiLAor
ICAidW5pZm9ybTRpIiwKKyAgInVuaWZvcm00aXYiLAorICAidW5pZm9ybU1hdHJpeDJmdiIsCisg
ICJ1bmlmb3JtTWF0cml4M2Z2IiwKKyAgInVuaWZvcm1NYXRyaXg0ZnYiLAorICAidXNlUHJvZ3Jh
bSIsCisgICJ2YWxpZGF0ZVByb2dyYW0iLAorICAidmVydGV4QXR0cmliMWYiLAorICAidmVydGV4
QXR0cmliMWZ2IiwKKyAgInZlcnRleEF0dHJpYjJmIiwKKyAgInZlcnRleEF0dHJpYjJmdiIsCisg
ICJ2ZXJ0ZXhBdHRyaWIzZiIsCisgICJ2ZXJ0ZXhBdHRyaWIzZnYiLAorICAidmVydGV4QXR0cmli
NGYiLAorICAidmVydGV4QXR0cmliNGZ2IiwKKyAgInZlcnRleEF0dHJpYlBvaW50ZXIiLAorICAi
dmlld3BvcnQiCitdOworCisvLyBQcm9wZXJ0aWVzIHRvIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGV5
IHdlcmUgYWRkZWQgaW4gdmVyc2lvbnMgb2YgdGhlCisvLyBzcGVjIHRoYXQgYXJlIGJhY2t3YXJk
LWNvbXBhdGlibGUgd2l0aCB0aGlzIHZlcnNpb24KK3ZhciBpZ25vcmVkTWV0aG9kcyA9IFsKKyAg
Ly8gVGhlcmUgaXMgbm8gb2ZmaWNpYWwgc3BlYyBmb3IgdGhlIGNvbW1pdCBBUEkgeWV0LCB0aGUg
cHJvcG9zYWwgbGluayBpczoKKyAgLy8gaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9PZmZz
Y3JlZW5DYW52YXMKKyAgImNvbW1pdCIKK107CisKK2Z1bmN0aW9uIGFzc2VydEZ1bmN0aW9uKHYs
IGYpIHsKKyAgdHJ5IHsKKyAgICBpZiAodHlwZW9mIHZbZl0gIT0gImZ1bmN0aW9uIikgeworICAg
ICAgdGVzdEZhaWxlZCgiUHJvcGVydHkgZWl0aGVyIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBh
IGZ1bmN0aW9uOiAiICsgZik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfSBjYXRjaChlKSB7CisgICAgdGVzdEZhaWxlZCgi
VHJ5aW5nIHRvIGFjY2VzcyB0aGUgcHJvcGVydHkgJyIgKyBmICsgIicgdGhyZXcgYW4gZXJyb3I6
ICIrZS50b1N0cmluZygpKTsKKyAgfQorfQorCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdl
dENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoY2FudmFzKTsKK3ZhciBwYXNzZWQgPSB0cnVlOworZm9yICh2YXIgaT0wOyBpPG1ldGhv
ZHMubGVuZ3RoOyBpKyspIHsKKyAgdmFyIHIgPSBhc3NlcnRGdW5jdGlvbihnbCwgbWV0aG9kc1tp
XSk7CisgIHBhc3NlZCA9IHBhc3NlZCAmJiByOworfQoraWYgKHBhc3NlZCkgeworICB0ZXN0UGFz
c2VkKCJBbGwgV2ViR0wgbWV0aG9kcyBmb3VuZC4iKTsKK30KK3ZhciBleHRlbmRlZCA9IGZhbHNl
OworZm9yICh2YXIgaSBpbiBnbCkgeworICBpZiAodHlwZW9mIGdsW2ldID09ICJmdW5jdGlvbiIg
JiYgbWV0aG9kcy5pbmRleE9mKGkpID09IC0xICYmIGlnbm9yZWRNZXRob2RzLmluZGV4T2YoaSkg
PT0gLTEpIHsKKyAgICBpZiAoIWV4dGVuZGVkKSB7CisgICAgICBleHRlbmRlZCA9IHRydWU7Cisg
ICAgICB0ZXN0RmFpbGVkKCJBbHNvIGZvdW5kIHRoZSBmb2xsb3dpbmcgZXh0cmEgbWV0aG9kczoi
KTsKKyAgICB9CisgICAgdGVzdEZhaWxlZChpKTsKKyAgfQorfQorCitpZiAoIWV4dGVuZGVkKSB7
CisgIHRlc3RQYXNzZWQoIk5vIGV4dHJhIG1ldGhvZHMgZm91bmQgb24gV2ViR0wgY29udGV4dC4i
KTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L3ByZW11bHRpcGx5YWxwaGEt
dGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvY29udGV4dC9wcmVtdWx0aXBseWFscGhhLXRlc3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lY2JlMjUxNjExMjdkOTA3NzgwYmY0MTZiOTVmNWIxMmE3YTBjMDE5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvY29udGV4dC9wcmVtdWx0aXBseWFscGhhLXRlc3QuaHRtbApAQCAtMCwwICsxLDI1MSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
VGVzdCB0aGUgV2ViR0wgcHJlbXVsdGlwbGllZEFscGhhIGNvbnRleHQgY3JlYXRpb24gZmxhZy48
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+PGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworCisvLyB3dHUuY3JlYXRlM0RDb250ZXh0KC4uLikgd2lsbCBzZXQg
YW50aWFsaWFzIHRvIGZhbHNlIGJ5IGRlZmF1bHQKKy8vIGlmIHRoZSBhbnRpYWxpYXMgcHJvcGVy
dHkgaXMgbm90IHNldCB0byB0cnVlIGV4cGxpY2l0bHkuCisvLyBUbyBjb3ZlciB0aGUgYW50aWFs
aWFzIGNhc2UsIGl0IG5lZWRzIHRvIHNldCBhbnRpYWxpYXMgdG8gdHJ1ZQorLy8gZXhwbGljaXRs
eS4KK3ZhciB0ZXN0cyA9IFsKKyAgLy8gSWYgcHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUgYW5k
IGFudGlhbGlhcyBpcyBmYWxzZSB0aGVuCisgIC8vIFt0ZXh0dXJlXSAgICAgICAgICAgW2NhbnZh
c10gICAgICAgICAgICAgW2RhdGFVUkxdCisgIC8vIDMyLCA2NCwgMTI4LCAxMjggLT4gNjQsIDEy
OCwgMjU1LCAxMjggLT4gNjQsIDEyOCwgMjU1LCAxMjgKKyAgeyBjcmVhdGlvbkF0dHJpYnV0ZXM6
IHt9LAorICAgIHNlbnRDb2xvcjogWzMyLCA2NCwgMTI4LCAxMjhdLAorICAgIGV4cGVjdGVkQ29s
b3I6IFs2NCwgMTI4LCAyNTUsIDEyOF0sCisgICAgZXJyb3JSYW5nZTogMiwKKyAgICBpbWFnZUZv
cm1hdDogImltYWdlL3BuZyIKKyAgfSwKKyAgLy8gSWYgcHJlbXVsdGlwbGllZEFscGhhIGlzIHRy
dWUgYW5kIGFudGlhbGlhcyBpcyB0cnVlIHRoZW4KKyAgLy8gW3RleHR1cmVdICAgICAgICAgICBb
Y2FudmFzXSAgICAgICAgICAgICBbZGF0YVVSTF0KKyAgLy8gMzIsIDY0LCAxMjgsIDEyOCAtPiA2
NCwgMTI4LCAyNTUsIDEyOCAtPiA2NCwgMTI4LCAyNTUsIDEyOAorICB7IGNyZWF0aW9uQXR0cmli
dXRlczoge2FudGlhbGlhczogdHJ1ZX0sCisgICAgc2VudENvbG9yOiBbMzIsIDY0LCAxMjgsIDEy
OF0sCisgICAgZXhwZWN0ZWRDb2xvcjogWzY0LCAxMjgsIDI1NSwgMTI4XSwKKyAgICBlcnJvclJh
bmdlOiAyLAorICAgIGltYWdlRm9ybWF0OiAiaW1hZ2UvcG5nIgorICB9LAorICAvLyBJZiBwcmVt
dWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZSBhbmQgYW50aWFsaWFzIGlzIGZhbHNlIHRoZW4KKyAgLy8g
W3RleHR1cmVdICAgICAgICAgICBbY2FudmFzXSAgICAgICAgICAgICBbdGV4dHVyZV0KKyAgLy8g
MzIsIDY0LCAxMjgsIDEyOCAtPiA2NCwgMTI4LCAyNTUsIDEyOCAtPiA2NCwgMTI4LCAyNTUsIDEy
OAorICB7IGNyZWF0aW9uQXR0cmlidXRlczoge30sCisgICAgc2VudENvbG9yOiBbMzIsIDY0LCAx
MjgsIDEyOF0sCisgICAgZXhwZWN0ZWRDb2xvcjogWzY0LCAxMjgsIDI1NSwgMTI4XSwKKyAgICBl
cnJvclJhbmdlOiAyLAorICB9LAorICAvLyBJZiBwcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZSBh
bmQgYW50aWFsaWFzIGlzIHRydWUgdGhlbgorICAvLyBbdGV4dHVyZV0gICAgICAgICAgIFtjYW52
YXNdICAgICAgICAgICAgIFt0ZXh0dXJlXQorICAvLyAzMiwgNjQsIDEyOCwgMTI4IC0+IDY0LCAx
MjgsIDI1NSwgMTI4IC0+IDY0LCAxMjgsIDI1NSwgMTI4CisgIHsgY3JlYXRpb25BdHRyaWJ1dGVz
OiB7YW50aWFsaWFzOiB0cnVlfSwKKyAgICBzZW50Q29sb3I6IFszMiwgNjQsIDEyOCwgMTI4XSwK
KyAgICBleHBlY3RlZENvbG9yOiBbNjQsIDEyOCwgMjU1LCAxMjhdLAorICAgIGVycm9yUmFuZ2U6
IDIsCisgIH0sCisgIC8vIElmIHByZW11bHRpcGxpZWRBbHBoYSBpcyBmYWxzZSBhbmQgYW50aWFs
aWFzIGlzIGZhbHNlIHRoZW4KKyAgLy8gW3RleHR1cmVdICAgICAgICAgICBbY2FudmFzXSAgICAg
ICAgICAgIFtkYXRhVVJMXQorICAvLyAyNTUsIDE5MiwgMTI4LCAxIC0+IDI1NSwgMTkyLCAxMjgs
IDEgLT4gMjU1LCAxOTIsIDEyOCwgMQorICB7IGNyZWF0aW9uQXR0cmlidXRlczoge3ByZW11bHRp
cGxpZWRBbHBoYTogZmFsc2V9LAorICAgIHNlbnRDb2xvcjogWzI1NSwgMTkyLCAxMjgsIDFdLAor
ICAgIGV4cGVjdGVkQ29sb3I6IFsyNTUsIDE5MiwgMTI4LCAxXSwKKyAgICBlcnJvclJhbmdlOiAw
LAorICAgIGltYWdlRm9ybWF0OiAiaW1hZ2UvcG5nIgorICB9LAorICAvLyBJZiBwcmVtdWx0aXBs
aWVkQWxwaGEgaXMgZmFsc2UgYW5kIGFudGlhbGlhcyBpcyB0cnVlIHRoZW4KKyAgLy8gW3RleHR1
cmVdICAgICAgICAgICBbY2FudmFzXSAgICAgICAgICAgIFtkYXRhVVJMXQorICAvLyAyNTUsIDE5
MiwgMTI4LCAxIC0+IDI1NSwgMTkyLCAxMjgsIDEgLT4gMjU1LCAxOTIsIDEyOCwgMQorICB7IGNy
ZWF0aW9uQXR0cmlidXRlczoge3ByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczog
dHJ1ZX0sCisgICAgc2VudENvbG9yOiBbMjU1LCAxOTIsIDEyOCwgMV0sCisgICAgZXhwZWN0ZWRD
b2xvcjogWzI1NSwgMTkyLCAxMjgsIDFdLAorICAgIGVycm9yUmFuZ2U6IDAsCisgICAgaW1hZ2VG
b3JtYXQ6ICJpbWFnZS9wbmciCisgIH0sCisgIC8vIElmIHByZW11bHRpcGxpZWRBbHBoYSBpcyBm
YWxzZSBhbmQgYW50aWFsaWFzIGlzIGZhbHNlIHRoZW4KKyAgLy8gW3RleHR1cmVdICAgICAgICAg
ICBbY2FudmFzXSAgICAgICAgICAgIFt0ZXh0dXJlXQorICAvLyAyNTUsIDE5MiwgMTI4LCAxIC0+
IDI1NSwgMTkyLCAxMjgsIDEgLT4gMjU1LCAxOTIsIDEyOCwgMQorICB7IGNyZWF0aW9uQXR0cmli
dXRlczoge3ByZW11bHRpcGxpZWRBbHBoYTogZmFsc2V9LAorICAgIHNlbnRDb2xvcjogWzI1NSwg
MTkyLCAxMjgsIDFdLAorICAgIGV4cGVjdGVkQ29sb3I6IFsyNTUsIDE5MiwgMTI4LCAxXSwKKyAg
ICBlcnJvclJhbmdlOiAwLAorICB9LAorICAvLyBJZiBwcmVtdWx0aXBsaWVkQWxwaGEgaXMgZmFs
c2UgYW5kIGFudGlhbGlhcyBpcyB0cnVlIHRoZW4KKyAgLy8gW3RleHR1cmVdICAgICAgICAgICBb
Y2FudmFzXSAgICAgICAgICAgIFt0ZXh0dXJlXQorICAvLyAyNTUsIDE5MiwgMTI4LCAxIC0+IDI1
NSwgMTkyLCAxMjgsIDEgLT4gMjU1LCAxOTIsIDEyOCwgMQorICB7IGNyZWF0aW9uQXR0cmlidXRl
czoge3ByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczogdHJ1ZX0sCisgICAgc2Vu
dENvbG9yOiBbMjU1LCAxOTIsIDEyOCwgMV0sCisgICAgZXhwZWN0ZWRDb2xvcjogWzI1NSwgMTky
LCAxMjgsIDFdLAorICAgIGVycm9yUmFuZ2U6IDAsCisgIH0sCisgIC8vIElmIHByZW11bHRpcGxp
ZWRBbHBoYSBpcyBmYWxzZSBhbmQgYW50aWFsaWFzIGlzIGZhbHNlIHRoZW4KKyAgLy8gW3RleHR1
cmVdICAgICAgICAgICAgIFtjYW52YXNdICAgICAgICAgICAgW2RhdGFVUkxdCisgIC8vIDI1NSwg
MjU1LCAyNTUsIDEyOCAtPiAyNTUsIDI1NSwgMjU1LCAxMjggLT4gMTI4LCAxMjgsIDEyOCwgMjU1
CisgIHsgY3JlYXRpb25BdHRyaWJ1dGVzOiB7cHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZX0sCisg
ICAgc2VudENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMTI4XSwKKyAgICBleHBlY3RlZENvbG9yOiBb
MTI4LCAxMjgsIDEyOCwgMjU1XSwKKyAgICBlcnJvclJhbmdlOiAyLAorICAgIGltYWdlRm9ybWF0
OiAiaW1hZ2UvanBlZyIKKyAgfSwKKyAgLy8gSWYgcHJlbXVsdGlwbGllZEFscGhhIGlzIGZhbHNl
IGFuZCBhbnRpYWxpYXMgaXMgdHJ1ZSB0aGVuCisgIC8vIFt0ZXh0dXJlXSAgICAgICAgICAgICBb
Y2FudmFzXSAgICAgICAgICAgIFtkYXRhVVJMXQorICAvLyAyNTUsIDI1NSwgMjU1LCAxMjggLT4g
MjU1LCAyNTUsIDI1NSwgMTI4IC0+IDEyOCwgMTI4LCAxMjgsIDI1NQorICB7IGNyZWF0aW9uQXR0
cmlidXRlczoge3ByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczogdHJ1ZX0sCisg
ICAgc2VudENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMTI4XSwKKyAgICBleHBlY3RlZENvbG9yOiBb
MTI4LCAxMjgsIDEyOCwgMjU1XSwKKyAgICBlcnJvclJhbmdlOiAyLAorICAgIGltYWdlRm9ybWF0
OiAiaW1hZ2UvanBlZyIKKyAgfSwKKyAgLy8gSWYgcHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUg
YW5kIGFudGlhbGlhcyBpcyBmYWxzZSB0aGVuCisgIC8vIFt0ZXh0dXJlXSAgICAgICAgICAgICBb
Y2FudmFzXSAgICAgICAgICAgIFtkYXRhVVJMXQorICAvLyAxMjgsIDEyOCwgMTI4LCAxMjggLT4g
MjU1LCAyNTUsIDI1NSwgMTI4IC0+IDEyOCwgMTI4LCAxMjgsIDI1NQorICB7IGNyZWF0aW9uQXR0
cmlidXRlczoge30sCisgICAgc2VudENvbG9yOiBbMTI4LCAxMjgsIDEyOCwgMTI4XSwKKyAgICBl
eHBlY3RlZENvbG9yOiBbMTI4LCAxMjgsIDEyOCwgMjU1XSwKKyAgICBlcnJvclJhbmdlOiAyLAor
ICAgIGltYWdlRm9ybWF0OiAiaW1hZ2UvanBlZyIKKyAgfSwKKyAgLy8gSWYgcHJlbXVsdGlwbGll
ZEFscGhhIGlzIHRydWUgYW5kIGFudGlhbGlhcyBpcyB0cnVlIHRoZW4KKyAgLy8gW3RleHR1cmVd
ICAgICAgICAgICAgIFtjYW52YXNdICAgICAgICAgICAgW2RhdGFVUkxdCisgIC8vIDEyOCwgMTI4
LCAxMjgsIDEyOCAtPiAyNTUsIDI1NSwgMjU1LCAxMjggLT4gMTI4LCAxMjgsIDEyOCwgMjU1Cisg
IHsgY3JlYXRpb25BdHRyaWJ1dGVzOiB7YW50aWFsaWFzOiB0cnVlfSwKKyAgICBzZW50Q29sb3I6
IFsxMjgsIDEyOCwgMTI4LCAxMjhdLAorICAgIGV4cGVjdGVkQ29sb3I6IFsxMjgsIDEyOCwgMTI4
LCAyNTVdLAorICAgIGVycm9yUmFuZ2U6IDIsCisgICAgaW1hZ2VGb3JtYXQ6ICJpbWFnZS9qcGVn
IgorICB9CitdOworCit2YXIgZ19jb3VudCA9IDA7Cit2YXIgZ2w7Cit2YXIgY2FudmFzOwordmFy
IHByZW11bHRpcGxpZWRBbHBoYTsKKworZW5hYmxlSlNUZXN0UHJlVmVyYm9zZUxvZ2dpbmcoKTsK
K2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBXZWJHTCBwcmVtdWx0aXBsaWVkQWxwaGEgY29udGV4dCBj
cmVhdGlvbiBmbGFnLiIpOworZG9OZXh0VGVzdCgpOworZnVuY3Rpb24gZG9OZXh0VGVzdCgpIHsK
KyAgaWYgKGdfY291bnQgPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3RzW2df
Y291bnQrK107CisgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgLy8gTmVlZCB0byBwcmVzZXJ2ZSBkcmF3aW5nIGJ1ZmZlciB0byBsb2FkIGl0IGluIGEg
Y2FsbGJhY2sKKyAgICB0ZXN0LmNyZWF0aW9uQXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIgPSB0cnVlOworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHRlc3QuY3Jl
YXRpb25BdHRyaWJ1dGVzKTsKKyAgICB2YXIgcHJlbXVsdGlwbGllZEFscGhhID0gdGVzdC5jcmVh
dGlvbkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhICE9IGZhbHNlOworICAgIHZhciBhbnRp
YWxpYXMgPSB0ZXN0LmNyZWF0aW9uQXR0cmlidXRlcy5hbnRpYWxpYXMgPT0gdHJ1ZTsKKyAgICBk
ZWJ1ZygiIikKKyAgICBkZWJ1ZygidGVzdGluZzogcHJlbXVsdGlwbGllZEFscGhhOiAiICsgcHJl
bXVsdGlwbGllZEFscGhhCisgICAgICAgICsgIiwgYW50aWFsaWFzOiAiICsgYW50aWFsaWFzCisg
ICAgICAgICsgIiwgaW1hZ2VGb3JtYXQ6ICIgKyB0ZXN0LmltYWdlRm9ybWF0KTsKKworICAgIGlm
ICghZ2wpIHsKKyAgICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAg
ICAgIGRvTmV4dFRlc3QoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgn
Z2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEnLCBwcmVtdWx0aXBs
aWVkQWxwaGEudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmVUcnVlKCdnbC5nZXRDb250ZXh0QXR0
cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcicpOworCisgICAgd3R1LmxvZyhnbC5nZXRD
b250ZXh0QXR0cmlidXRlcygpKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVk
UXVhZChnbCk7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNo
b3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4LCAyLCAyLCB0ZXN0LnNlbnRD
b2xvciwgMCk7CisgICAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
dGV4Iik7CisgICAgZ2wudW5pZm9ybTFpKGxvYywgMCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJ
TkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisKKyAgICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGRyYXdpbmcuIik7CisKKyAgICB2YXIg
bG9hZFRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgIGRlYnVnKCJsb2FkVGV4dHVyZSBjYWxs
ZWQiKTsKKyAgICAgIHZhciBwbmdUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAvLyBu
b3QgbmVlZGVkIGFzIGl0J3MgdGhlIGRlZmF1bHQKKyAgICAgIC8vIGdsLnBpeGVsU3RvcmVpKGds
LlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgZmFsc2UpOworICAgICAgd3R1LmZhaWxJ
ZkdMRXJyb3IoZ2wsICdnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJT
SU9OX1dFQkdMLCBnbC5OT05FKTsnKTsKKyAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHBuZ1RleCk7CisgICAgICBpZiAodGVzdC5pbWFnZUZvcm1hdCkgeworICAgICAgICAgLy8g
Y3JlYXRlIHRleHR1cmUgZnJvbSBpbWFnZQorICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB0aGlzKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBjcmVhdGUgdGV4dHVyZSBmcm9tIGNhbnZhcworICAg
ICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBjYW52YXMpOworICAgICAgfQorICAgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwg
Z2wuTElORUFSKTsKKyAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJv
cnMgZnJvbSBjcmVhdGluZyBjb3B5LiIpOworICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxk
IGJlIG5vIGVycm9ycyBmcm9tIDJuZCBkcmF3aW5nLiIpOworICAgICAgd3R1LmNoZWNrQ2FudmFz
KAorICAgICAgICAgZ2wsIHRlc3QuZXhwZWN0ZWRDb2xvciwKKyAgICAgICAgICJzaG91bGQgZHJh
dyB3aXRoICIgKyB0ZXN0LmV4cGVjdGVkQ29sb3IsIHRlc3QuZXJyb3JSYW5nZSk7CisKKyAgICAg
IGRvTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICB2YXIgbG9hZFRleHR1cmVFcnJvciA9IGZ1bmN0
aW9uKCkgeworICAgICAgdGVzdEZhaWxlZCgiQ3JlYXRpbmcgaW1hZ2UgZnJvbSBjYW52YXMgZmFp
bGVkLiBJbWFnZSBzcmM6ICIgKyB0aGlzLnNyYyk7CisgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
fQorCisgICAgdmFyIHNocmlua1N0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykgeworICAgICAgaWYg
KHN0cmluZy5sZW5ndGggPCA2MykgeworICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgfQor
ICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgMzApICsgIi4uLiIgKyBzdHJpbmcuc3Vic3Ry
KHN0cmluZy5sZW5ndGggLSAzMCk7CisgICAgfQorCisgICAgaWYgKHRlc3QuaW1hZ2VGb3JtYXQp
IHsKKyAgICAgIC8vIExvYWQgY2FudmFzIGludG8gc3RyaW5nIHVzaW5nIHRvRGF0YVVSTAorICAg
ICAgZGVidWcoIkNhbGxpbmcgY2FudmFzLnRvRGF0YVVSTCgnIiArIHRlc3QuaW1hZ2VGb3JtYXQg
KyAiJykiKTsKKyAgICAgIHZhciBpbWFnZVVybCA9IGNhbnZhcy50b0RhdGFVUkwodGVzdC5pbWFn
ZUZvcm1hdCk7CisgICAgICBkZWJ1ZygiaW1hZ2VVcmwgPSAnIiArIHNocmlua1N0cmluZyhpbWFn
ZVVybCkgKyAiJyIpOworICAgICAgaWYgKHRlc3QuaW1hZ2VGb3JtYXQgIT0gImltYWdlL3BuZyIg
JiYKKyAgICAgICAgICAoaW1hZ2VVcmwuaW5kZXhPZigiZGF0YTppbWFnZS9wbmcsIikgPT0gMCB8
fAorICAgICAgICAgICBpbWFnZVVybC5pbmRleE9mKCJkYXRhOmltYWdlL3BuZzsiKSA9PSAwKSkg
eworICAgICAgICBkZWJ1ZygiSW1hZ2UgZm9ybWF0ICIgKyB0ZXN0LmltYWdlRm9ybWF0ICsgIiBu
b3Qgc3VwcG9ydGVkOyBza2lwcGluZyIpOworICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dFRlc3Qs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTG9hZCBzdHJpbmcgaW50byB0aGUgdGV4
dHVyZQorICAgICAgICBkZWJ1ZygiV2FpdGluZyBmb3IgaW1hZ2Uub25sb2FkIik7CisgICAgICAg
IHZhciBpbnB1dCA9IHd0dS5tYWtlSW1hZ2UoaW1hZ2VVcmwsIGxvYWRUZXh0dXJlLCBsb2FkVGV4
dHVyZUVycm9yKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gTG9hZCBjYW52YXMg
aW50byB0aGUgdGV4dHVyZSBhc3luY2hyb25vdXNseSAodG8gcHJldmVudCB1bmJvdW5kZWQgc3Rh
Y2sgY29uc3VtcHRpb24pCisgICAgICBkZWJ1ZygiV2FpdGluZyBmb3Igc2V0VGltZW91dCIpOwor
ICAgICAgc2V0VGltZW91dChsb2FkVGV4dHVyZSwgMCk7CisgICAgfQorICB9IGVsc2UgeworICAg
IHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIGZpbmlzaFRlc3QoKTsKKyAgfQor
fQorCis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRl
eHQvcmVzb3VyY2VzL2NvbnRleHQtcmVsZWFzZS1jaGlsZC13aXRoLXdvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29u
dGV4dC9yZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLWNoaWxkLXdpdGgtd29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjY0MDhjMGVmMmMyMTQ0NTFhZDVhYTE5ZDU1YmNjNGIwNzkzNWM1YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2NvbnRleHQvcmVzb3VyY2VzL2NvbnRleHQtcmVsZWFzZS1jaGlsZC13aXRo
LXdvcmtlci5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBzdHlsZT0ibWFyZ2lu
OiAwOyBwYWRkaW5nOiAwOyI+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5TaW1wbGUgV2ViR0wgY29udGV4dCB3aXRoIFdvcmtlcjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsiPgorPGNh
bnZhcyBpZD0iYyIgd2lkdGg9IjE2ODAiIGhlaWdodD0iMTA1MCIgc3R5bGU9IndpZHRoOiAyNTZw
eDsgaGVpZ2h0OiAyNTZweDsiPiA8IS0tIHNjYWxlZCB0byBmaXQgcGFnZSBiZXR0ZXIgLS0+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUg
dmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0
aW9uOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCwwLjAsMC4wLDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBteVdvcmtlciA9IG5ldyBXb3JrZXIoImNv
bnRleHQtcmVsZWFzZS13b3JrZXIuanMiKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgiYyIsIHsgYW50aWFsaWFzOiBmYWxzZSB9KTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7CisKK3ZhciB2
ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoWyAwLDAuNzUsMCwgLTAuNzUsLTAuNzUsMCwgMC43NSwtMC43NSwwIF0p
LCBnbC5TVEFUSUNfRFJBVyk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2dsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworZ2wuY2xl
YXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDMpOworCitpZiAocGFyZW50KSB7CisgIHdpbmRvdy5nbENvbnRleHQgPSBnbDsKKyAgcGFyZW50
LnBvc3RNZXNzYWdlKCJSZWFkeSIsICIqIik7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvcmVzb3VyY2VzL2NvbnRleHQtcmVsZWFzZS11cG9uLXJl
bG9hZC1jaGlsZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9yZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLXVwb24t
cmVsb2FkLWNoaWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYwNmM0MWQ0ZTE1ODdiMDMwYzYyOGZkMDMy
YzcwZTg1YTMxZjFiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvcmVzb3VyY2VzL2NvbnRl
eHQtcmVsZWFzZS11cG9uLXJlbG9hZC1jaGlsZC5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbCBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nOiAwOyI+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5TaW1wbGUgV2ViR0wgY29udGV4dDwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRl
bjsiPgorPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjE2ODAiIGhlaWdodD0iMTA1MCIgc3R5bGU9Indp
ZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsiPiA8IS0tIHNjYWxlZCB0byBmaXQgcGFnZSBiZXR0
ZXIgLS0+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9u
ID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCwwLjAsMC4wLDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgiYyIsIHsgYW50aWFsaWFzOiBmYWxzZSB9KTsKK3ZhciBwcm9ncmFtID0gd3R1
LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7
CisKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNzUsMCwgLTAuNzUsLTAuNzUsMCwgMC43NSwt
MC43NSwwIF0pLCBnbC5TVEFUSUNfRFJBVyk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgw
KTsKK2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsK
KworZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworZ2wuZHJhd0FycmF5cyhnbC5UUklB
TkdMRVMsIDAsIDMpOworCitpZiAocGFyZW50KSB7CisgICAgd2luZG93LmdsQ29udGV4dCA9IGds
OworICAgIHBhcmVudC5wb3N0TWVzc2FnZSgiUmVhZHkiLCAiKiIpOworfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L3Jlc291cmNlcy9jb250ZXh0LXJl
bGVhc2Utd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9yZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLXdvcmtl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNjgwMTE3YzI1YjNkYTE3OTM4MmJmMTkxMTk3NTNmMzFhNjZmNmM0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC9yZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLXdv
cmtlci5qcwpAQCAtMCwwICsxLDQgQEAKKy8vIFNpbXBsZSB3b3JrZXIgdXNlZCB0byBwcm92b2tl
IFdlYkdMIGNvbnRleHQgcmVsZWFzZSBidWdzIG9uIENocm9tZQorCitwb3N0TWVzc2FnZSgiSGVs
bG8gV29ybGQiKTsKK2Nsb3NlKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvY29udGV4dC91c2VyLWRlZmluZWQtcHJvcGVydGllcy1vbi1jb250ZXh0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9j
b250ZXh0L3VzZXItZGVmaW5lZC1wcm9wZXJ0aWVzLW9uLWNvbnRleHQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MDI5MDg3YzFmMDJkMTE5MGM0N2Q3N2ZlN2I0OTUyNDQ3ZDY1MzIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvY29udGV4dC91c2VyLWRlZmluZWQtcHJvcGVydGllcy1vbi1jb250ZXh0Lmh0bWwKQEAg
LTAsMCArMSw0OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIFVzZXItRGVmaW5lZCBQcm9wZXJ0aWVzIFRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXRpYWxpemUoKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5
bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgaWYgdXNlci1k
ZWZpbmVkIHByb3BlcnRpZXMgYXJlIHNldCBvbiB0aGUgV2ViR0wgY29udGV4dCBvYmplY3QsIHRo
YXQgdGhleSBkb24ndCBkaXNhcHBlYXIgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiIpOworCit2
YXIgZ2wyID0gbnVsbDsKKworZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHsKKyAgdmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOworICB2YXIgZ2wxID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICBpZiAo
IWdsMSkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsK
KyAgICBmaW5pc2hUZXN0KCk7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29u
dGV4dCBleGlzdHMiKTsKKyAgICBnbDEubXlQcm9wZXJ0eSA9IDI7CisgICAgd3R1LnJlcXVlc3RB
bmltRnJhbWUocnVuVGVzdCk7CisgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgd2Vi
Z2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworICBnbDIg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgIHNob3VsZEJlKCdnbDIubXlQcm9wZXJ0
eScsICcyJyk7CisgIGZpbmlzaFRlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvY29udGV4dC96ZXJvLXNpemVkLWNhbnZhcy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvY29udGV4dC96
ZXJvLXNpemVkLWNhbnZhcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZTEzMzg4NjUzYmY5YWU3NDljZGU3
MjFjYTNiYjY1ZTNjNzg4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250ZXh0L3plcm8tc2l6ZWQt
Y2FudmFzLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworCisvLyBHbG9iYWwgZGVjbGFyYXRpb25zIHNvIHRoYXQgInNob3VsZEJlIiBjYW4gZXZhbCB3
aXRoIHRoZW06CitsZXQgZ2w7CisKKyhmdW5jdGlvbigpIHsKKyAgICBkZXNjcmlwdGlvbignQ2hl
Y2sgdGhhdCB6ZXJvLXNpemVkIGNhbnZhc2VzIHdvcmsgd2l0aCBXZWJHTC4nKTsKKworICAgIHRl
c3RaZXJvKCk7CisKKyAgICBmaW5pc2hUZXN0KCk7Cit9KSgpOworCitmdW5jdGlvbiB0ZXN0WmVy
bygpIHsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKKyAgICBjYW52YXMud2lkdGggPSAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAwOworICAgIGds
ID0gV2ViR0xUZXN0VXRpbHMuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisKKyAgICBleHBlY3RU
cnVlKGdsLCBgQ29udGV4dCBjcmVhdGlvbiB3aXRoICR7Y2FudmFzLndpZHRofXgke2NhbnZhcy5o
ZWlnaHR9IGNhbnZhcyBzaG91bGQgc3VjY2VlZC5gKTsKKyAgICBzaG91bGRCZSgnZ2wuZHJhd2lu
Z0J1ZmZlcldpZHRoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnZ2wuZHJhd2luZ0J1ZmZlckhlaWdo
dCcsICcxJyk7CisgICAgc2hvdWxkQmVGYWxzZSgnZ2wuaXNDb250ZXh0TG9zdCgpJyk7CisKKyAg
ICBjb25zdCB2ZXJzaW9uID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFUlNJT04pOworICAgIGV4cGVj
dFRydWUodmVyc2lvbiAmJiB2ZXJzaW9uLmxlbmd0aCwgYGdldFBhcmFtZXRlcigpIHNob3VsZCBy
ZXR1cm4gc29tZXRoaW5nLmApOworCisgICAgZGVidWcoJ2NhbnZhcy53aWR0aCA9IDInKTsKKyAg
ICBjYW52YXMud2lkdGggPSAyOworICAgIHNob3VsZEJlKCdnbC5kcmF3aW5nQnVmZmVyV2lkdGgn
LCAnMicpOworICAgIHNob3VsZEJlRmFsc2UoJ2dsLmlzQ29udGV4dExvc3QoKScpOworCisgICAg
ZGVidWcoJ2NhbnZhcy53aWR0aCA9IDAnKTsKKyAgICBjYW52YXMud2lkdGggPSAwOworICAgIHNo
b3VsZEJlKCdnbC5kcmF3aW5nQnVmZmVyV2lkdGgnLCAnMScpOworICAgIHNob3VsZEJlRmFsc2Uo
J2dsLmlzQ29udGV4dExvc3QoKScpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy1vdXQtb2YtYm91
bmRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL2FuZ2xlLWluc3RhbmNlZC1hcnJheXMtb3V0LW9mLWJvdW5k
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY0YTA2Mzg1NGUxOTk1NDVkOGNlYTRlNjk4ZmUyZmNlZjQ0Y2Ix
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2FuZ2xlLWluc3RhbmNlZC1hcnJheXMt
b3V0LW9mLWJvdW5kcy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb3V0
LW9mLWJvdW5kcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCBvZiBkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgYW5kIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIHdpdGggb3V0LW9mLWJvdW5kcyBw
YXJhbWV0ZXJzIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGV4dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25Q
cmVmaXhlcyhnbCwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKK2lmICghZXh0KSB7CisgICAg
dGVzdFBhc3NlZCgiTm8gQU5HTEVfaW5zdGFuY2VkX2FycmF5cyBzdXBwb3J0IC0tIHRoaXMgaXMg
bGVnYWwiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQg
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyBleHRlbnNpb24iKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIlRlc3Qgd2l0aCAxIGluc3RhbmNlIHdpdGhvdXQgaW5zdGFuY2VkIGF0dHJpYnV0ZXMi
KTsKKyAgICBkZWJ1ZygiIik7CisgICAgT3V0T2ZCb3VuZHNUZXN0LnJ1bkRyYXdBcnJheXNUZXN0
KCJleHQuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgJChvZmZzZXQpLCAk
KGNvdW50KSwgMSkiLCBnbCwgd3R1LCBleHQpOworICAgIGRlYnVnKCIiKTsKKyAgICBPdXRPZkJv
dW5kc1Rlc3QucnVuRHJhd0VsZW1lbnRzVGVzdCgiZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKGdsLlRSSUFOR0xFUywgJChjb3VudCksICQodHlwZSksICQob2Zmc2V0KSwgMSkiLCBnbCwg
d3R1LCBleHQpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIDIgaW5zdGFu
Y2VzIHdpdGhvdXQgaW5zdGFuY2VkIGF0dHJpYnV0ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
T3V0T2ZCb3VuZHNUZXN0LnJ1bkRyYXdBcnJheXNUZXN0KCJleHQuZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKGdsLlRSSUFOR0xFUywgJChvZmZzZXQpLCAkKGNvdW50KSwgMikiLCBnbCwgd3R1LCBl
eHQpOworICAgIGRlYnVnKCIiKTsKKyAgICBPdXRPZkJvdW5kc1Rlc3QucnVuRHJhd0VsZW1lbnRz
VGVzdCgiZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgJChjb3Vu
dCksICQodHlwZSksICQob2Zmc2V0KSwgMikiLCBnbCwgd3R1LCBleHQpOworICAgIGRlYnVnKCIi
KTsKKyAgICBPdXRPZkJvdW5kc1Rlc3QucnVuRHJhd0FycmF5c0luc3RhbmNlZFRlc3QoImV4dC5k
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAkKG9mZnNldCksICQoY291bnQp
LCAkKHByaW1jb3VudCkpIiwgZ2wsIHd0dSwgZXh0KTsKKyAgICBkZWJ1ZygiIik7CisgICAgT3V0
T2ZCb3VuZHNUZXN0LnJ1bkRyYXdFbGVtZW50c0luc3RhbmNlZFRlc3QoImV4dC5kcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShnbC5UUklBTkdMRVMsICQoY291bnQpLCAkKHR5cGUpLCAkKG9mZnNl
dCksICQocHJpbWNvdW50KSkiLCBnbCwgd3R1LCBleHQpOworICAgIGRlYnVnKCIiKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL2FuZ2xlLWluc3RhbmNlZC1hcnJheXMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNTg3YmNkNGVj
MjQ4NmY0NGUwNDU5ZmZjNGE1MmU3OWFlYTRhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL2FuZ2xlLWluc3RhbmNlZC1hcnJheXMuaHRtbApAQCAtMCwwICsxLDY1OSBAQAor77u/PCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyBpbnN0YW5jZWQgZHJh
d3MgLS0+Cis8c2NyaXB0IGlkPSJvdXRwdXRWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIGFPZmZz
ZXQ7CithdHRyaWJ1dGUgdmVjNCBhQ29sb3I7Cit2YXJ5aW5nIHZlYzQgdkNvbG9yOwordm9pZCBt
YWluKCkgeworICAgIHZDb2xvciA9IGFDb2xvcjsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlv
biArIHZlYzQoYU9mZnNldCwgMC4wLCAwLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9
Im91dHB1dEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IHZDb2xvcjsKK3ZvaWQgbWFpbigpIHsK
KyAgICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0i
ZHJhd0FycmF5c1Rlc3RWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0
dHJpYnV0ZSB2ZWMzIGFQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMzIGFJbnN0YW5jZVBvczsKK3Vu
aWZvcm0gdmVjMyB1T2Zmc2V0Owordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChhUG9zaXRpb24ueHl6ICsgYUluc3RhbmNlUG9zLnh5eiArIHVPZmZzZXQsIDEuMCk7Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZHJhd0FycmF5c1Rlc3RGcmFnbWVudFNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjAsIDAsIDAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxp
dHkgb2YgdGhlIEFOR0xFX2luc3RhbmNlZF9hcnJheXMgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFp
bGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBleHQgPSBudWxsOwordmFyIHZhb2V4dCA9
IG51bGw7CisKK3ZhciBwb3NpdGlvbkxvYyA9IDA7Cit2YXIgb2Zmc2V0TG9jID0gMjsKK3ZhciBj
b2xvckxvYyA9IDM7Cit2YXIgcHJvZ3JhbTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQo
IldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBmaW5pc2hUZXN0KCk7Cit9IGVs
c2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBydW5E
aXZpc29yVGVzdERpc2FibGVkKCk7CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBz
dG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0gd3R1Lmdl
dEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIp
OworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIEFOR0xFX2luc3RhbmNl
ZF9hcnJheXMgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9y
dGVkVGVzdChmYWxzZSk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBBTkdMRV9pbnN0YW5jZWRfYXJy
YXlzIGV4dGVuc2lvbiIpOworCisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QodHJ1ZSk7CisKKyAg
ICAgICAgcnVuRGl2aXNvclRlc3RFbmFibGVkKCk7CisgICAgICAgIHJ1blVuaXF1ZU9iamVjdFRl
c3QoKTsKKworICAgICAgICBzZXR1cENhbnZhcygpOworICAgICAgICBydW5PdXRwdXRUZXN0cygp
OworICAgICAgICBydW5EcmF3QXJyYXlzV2l0aE9mZnNldFRlc3QoKTsKKyAgICAgICAgcnVuVkFP
SW5zdGFuY2luZ0ludGVyYWN0aW9uVGVzdCgpOworICAgICAgICBydW5BTkdMRUNvcnJ1cHRpb25U
ZXN0KCk7CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgQU5HTEUgY29ycnVwdGlvbiB0ZXN0IGxl
YXZlcyB2ZXJ0ZXggYXR0cmliIGRpdmlzb3JzIGRpcnR5IGF0IHRoZSBtb21lbnQuCisgICAgICAg
IC8vIFRoaXMgc2hvdWxkIGJlIGNsZWFuZWQgdXAgaWYgbW9yZSBzdWJ0ZXN0cyBhcmUgYWRkZWQg
YWZ0ZXIgaXQuCisgICAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lv
bkVuYWJsZWQpIHsKKyAgICB2YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cygpOworICAgIGlmIChzdXBwb3J0ZWQuaW5kZXhPZigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIp
ID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQg
Z2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1
dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQU5HTEVf
aW5zdGFuY2VkX2FycmF5cyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9u
IHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgi
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0
ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHJ1bkRpdmlzb3JUZXN0RGlzYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3Rpbmcg
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVk
Iik7CisKKyAgICB2YXIgVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFID0gMHg4OEZF
OworCisgICAgZ2wuZ2V0VmVydGV4QXR0cmliKDAsIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNP
Ul9BTkdMRSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAi
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFIHNob3VsZCBub3QgYmUgcXVlcnlhYmxl
IGlmIGV4dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworfQorCitmdW5jdGlvbiBydW5EaXZpc29yVGVz
dEVuYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJ
U09SX0FOR0xFIHdpdGggZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCJleHQu
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFIiwgIjB4ODhGRSIpOworCisgICAgdmFy
IG1heF92ZXJ0ZXhfYXR0cmlicyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX0FUVFJJ
QlMpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhfdmVydGV4X2F0dHJpYnM7ICsraSkg
eworICAgICAgICB2YXIgcXVlcmllZF92YWx1ZSA9IGdsLmdldFZlcnRleEF0dHJpYihpLCBleHQu
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFKTsKKyAgICAgICAgaWYocXVlcmllZF92
YWx1ZSA9PSAwKXsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlZlcnRleCBhdHRyaWJ1dGUgIiAr
IGkgKyAiIG11c3QgaGFzIGEgZGVmYXVsdCBkaXZpc29yIG9mIDAiKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNleworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRGVmYXVsdCBkaXZpc29yIG9mIHZl
cnRleCBhdHRyaWJ1dGUgIiArIGkgKyAiIHNob3VsZCBiZTogMCwgcmV0dXJuZWQgdmFsdWUgd2Fz
OiAiICsgcXVlcmllZF92YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBleHQudmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKG1heF92ZXJ0ZXhfYXR0cmlicywgMik7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSBpbmRleCBzZXQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIE1BWF9WRVJURVhfQVRUUklCUyBz
aG91bGQgYmUgYW4gaW52YWxpZCB2YWx1ZSIpOworCisgICAgZXh0LnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShtYXhfdmVydGV4X2F0dHJpYnMtMSwgMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgaW5kZXggc2V0IGxl
c3MgdGhhbiBNQVhfVkVSVEVYX0FUVFJJQlMgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIHZhciBx
dWVyaWVkX3ZhbHVlID0gZ2wuZ2V0VmVydGV4QXR0cmliKG1heF92ZXJ0ZXhfYXR0cmlicy0xLCBl
eHQuVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFKTsKKyAgICBpZihxdWVyaWVkX3Zh
bHVlID09IDIpeworICAgICAgICB0ZXN0UGFzc2VkKCJTZXQgdmFsdWUgb2YgVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9ESVZJU09SX0FOR0xFIG1hdGNoZXMgZXhwZWNhdGlvbiIpOworICAgIH0KKyAgICBl
bHNleworICAgICAgICB0ZXN0RmFpbGVkKCJTZXQgdmFsdWUgb2YgVkVSVEVYX0FUVFJJQl9BUlJB
WV9ESVZJU09SX0FOR0xFIHNob3VsZCBiZTogMiwgcmV0dXJuZWQgdmFsdWUgd2FzOiAiICsgcXVl
cmllZF92YWx1ZSk7CisgICAgfQorCisgICAgLy8gUmVzZXQgdmVydGV4IGF0dHJpYiBkaXZpc29y
cyBzbyB0aGV5IGNhbm5vdCBhZmZlY3QgZm9sbG93aW5nIHN1YnRlc3RzLgorICAgIGV4dC52ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUobWF4X3ZlcnRleF9hdHRyaWJzLTEsIDApOworfQorCitmdW5j
dGlvbiBzZXR1cENhbnZhcygpIHsKKyAgICBjYW52YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdo
dCA9IDUwOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7CisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKworICAgIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsLCBbIm91dHB1dFZlcnRleFNoYWRlciIsICJvdXRwdXRGcmFnbWVudFNo
YWRlciJdLCBbJ2FQb3NpdGlvbicsICdhT2Zmc2V0JywgJ2FDb2xvciddLCBbcG9zaXRpb25Mb2Ms
IG9mZnNldExvYywgY29sb3JMb2NdKTsKKyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIkFOR0xF
X2luc3RhbmNlZF9hcnJheXMiKTsKK30KKworZnVuY3Rpb24gcnVuT3V0cHV0VGVzdHMoKSB7Cisg
ICAgdmFyIGluc3RhbmNlQ291bnQgPSA0OworCisgICAgZGVidWcoIlRlc3RpbmcgdmFyaW91cyBk
cmF3cyBmb3IgdmFsaWQgYnVpbHQtaW4gZnVuY3Rpb24gYmVoYXZpb3IiKTsKKworICAgIHZhciBv
ZmZzZXRzID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIC0xLjAsICAxLjAsCisgICAgICAg
ICAxLjAsICAxLjAsCisgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgICAxLjAsIC0xLjAsCisg
ICAgXSk7CisgICAgdmFyIG9mZnNldEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRCdWZmZXIpOworICAgIGdsLmJ1ZmZl
ckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob2Zmc2V0TG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG9mZnNldExvYywgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBleHQudmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKG9mZnNldExvYywgMSk7CisKKyAgICB2YXIgY29sb3JzID0g
bmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIDEuMCwgMC4wLCAwLjAsIDEuMCwgLy8gUmVkCisg
ICAgICAgIDAuMCwgMS4wLCAwLjAsIDEuMCwgLy8gR3JlZW4KKyAgICAgICAgMC4wLCAwLjAsIDEu
MCwgMS4wLCAvLyBCbHVlCisgICAgICAgIDEuMCwgMS4wLCAwLjAsIDEuMCwgLy8gWWVsbG93Cisg
ICAgICAgIC8vIGV4dHJhIGRhdGEgd2hlbiBjb2xvckxvYyBkaXZpc29yIGlzIHNldCBiYWNrIHRv
IDAKKyAgICAgICAgMS4wLCAxLjAsIDAuMCwgMS4wLCAvLyBZZWxsb3cKKyAgICAgICAgMS4wLCAx
LjAsIDAuMCwgMS4wLCAvLyBZZWxsb3cKKyAgICBdKTsKKyAgICB2YXIgY29sb3JCdWZmZXIgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29s
b3JCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMsIGds
LlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvYyk7
CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvYywgNCwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKKyAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbG9yTG9jLCAxKTsK
KworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsKKworICAgIC8vIERyYXcgMTogUmVndWxh
ciBkcmF3QXJyYXlzCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGRyYXdBcnJh
eXMgd2l0aCBub24temVybyBkaXZpc29yIik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmVydGV4IGF0dHJpYiBkaXZpc29yIHNo
b3VsZCBhZmZlY3QgcmVndWxhciBkcmF3QXJyYXlzIHdoZW4gdGhlIGV4dGVuc2lvbiBpcyBlbmFi
bGVkIik7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgY2FudmFzLmhlaWdodC8yLCBj
YW52YXMud2lkdGgvMiwgY2FudmFzLmhlaWdodC8yLCBbMjU1LCAwLCAwLCAyNTVdKTsKKworICAg
IC8vIERyYXcgMjogRHJhdyBOb24taW5kZXhlZCBpbnN0YW5jZXMKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlRlc3RpbmcgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIik7CisgICAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBUZXN0IGRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSBlcnJvciBjb25kaXRpb25zCisgICAgZXh0LmRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShnbC5UUklBTkdMRVMsIDAsIDYsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5jaGVja0NhbnZh
c1JlY3QoZ2wsIDAsIGNhbnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWln
aHQvMiwgWzI1NSwgMCwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgY2Fu
dmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWln
aHQvMiwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwg
MCwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgWzAsIDAsIDI1NSwgMjU1XSk7Cisg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgY2FudmFzLndpZHRoLzIsIDAsIGNhbnZhcy53aWR0
aC8yLCBjYW52YXMuaGVpZ2h0LzIsIFsyNTUsIDI1NSwgMCwgMjU1XSk7CisKKyAgICBleHQuZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgMCwgNiwgLTEpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgY2Fubm90IGhhdmUgYSBwcmltY291bnQgbGVzcyB0aGFuIDAiKTsKKworICAgIGV4dC5k
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAwLCAtMSwgaW5zdGFuY2VDb3Vu
dCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSBjYW5ub3QgaGF2ZSBhIGNvdW50IGxlc3MgdGhhbiAwIik7CisK
KyAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHBvc2l0aW9uTG9jLCAxKTsKKyAgICBl
eHQuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VD
b3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSB2ZXJ0ZXggYXR0cmlidXRlIHdpdGggYSBkaXZp
c29yIG9mIHplcm8gd2hlbiBjYWxsaW5nIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpOworICAg
IGV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUocG9zaXRpb25Mb2MsIDApOworCisgICAgZXh0
LmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShnbC5QT0lOVFMsIDAsIDYsIGluc3RhbmNlQ291bnQp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFIHdpdGggUE9JTlRTIHNob3VsZCBzdWNjZWVkIik7CisgICAgZXh0LmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShnbC5MSU5FUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgd2l0aCBMSU5FUyBzaG91bGQgc3VjY2VlZCIpOworICAgIGV4dC5kcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoZ2wuTElORV9MSVNULCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSB3aXRoIExJTkVfTElTVCBzaG91bGQgcmV0dXJuIHN1Y2NlZWQiKTsKKyAgICBleHQuZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFX0xJU1QsIDAsIDYsIGluc3RhbmNlQ291bnQp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFIHdpdGggVFJJQU5HTEVfTElTVCBzaG91bGQgc3VjY2VlZCIpOworCisgICAg
ZXh0LmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShkZXNrdG9wR0xbJ1FVQURfU1RSSVAnXSwgMCwg
NiwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9FTlVNLCAiZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIHdpdGggUVVBRF9TVFJJUCBzaG91bGQg
cmV0dXJuIElOVkFMSURfRU5VTSIpOworICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
ZGVza3RvcEdMWydRVUFEUyddLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUg
d2l0aCBRVUFEUyBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5VTSIpOworICAgIGV4dC5kcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoZGVza3RvcEdMWydQT0xZR09OJ10sIDAsIDYsIGluc3RhbmNlQ291
bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSB3aXRoIFBPTFlHT04gc2hvdWxkIHJldHVybiBJTlZBTElEX0VO
VU0iKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUgd2l0aCBwYXJhbSAnZmlyc3QnID4gMCIpOworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgIHd0dS5zZXR1cFF1YWQoZ2wsIHsKKyAgICAgICAgcG9zaXRp
b25Mb2NhdGlvbjogMCwKKyAgICAgICAgc2NhbGU6IDAuNQorICAgIH0pOworICAgIHZhciBvZmZz
ZXRzSGFsZiA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAtMC41LCAgMC41LAorICAgICAg
ICAgMC41LCAgMC41LAorICAgICAgICAtMC41LCAtMC41LAorICAgICAgICAgMC41LCAtMC41Cisg
ICAgXSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldEJ1ZmZlcik7
CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldHNIYWxmLCBnbC5TVEFU
SUNfRFJBVyk7CisKKyAgICBleHQuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xF
UywgMywgMywgaW5zdGFuY2VDb3VudCk7CisgICAgdmFyIHcgPSBNYXRoLmZsb29yKDAuMjUqY2Fu
dmFzLndpZHRoKSwKKyAgICAgICAgaCA9IE1hdGguZmxvb3IoMC4yNSpjYW52YXMuaGVpZ2h0KTsK
KyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBNYXRoLmNlaWwoMC4yNSpjYW52YXMud2lkdGgp
LCAwLjUqY2FudmFzLmhlaWdodCwgdywgaCwgWzI1NSwgMCwgMCwgMjU1XSk7CisgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgTWF0aC5jZWlsKDAuNzUqY2FudmFzLndpZHRoKSwgMC41KmNhbnZh
cy5oZWlnaHQsIHcsIGgsIFswLCAyNTUsIDAsIDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIE1hdGguY2VpbCgwLjI1KmNhbnZhcy53aWR0aCksIDAsIHcsIGgsIFswLCAwLCAyNTUs
IDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIE1hdGguY2VpbCgwLjc1KmNhbnZh
cy53aWR0aCksIDAsIHcsIGgsIFsyNTUsIDI1NSwgMCwgMjU1XSk7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRlc3RpbmcgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIHdpdGggYXR0cmli
dXRlcyAnZGl2aXNvcicgcmVzZXQgdG8gMCIpOworICAgIGRlYnVnKCJDb3JyZWN0IHJlbmRlcmlu
ZyBvdXRwdXQ6IDQgeWVsbG93IHRyaWFuZ2xlcyIpOworICAgIGRlYnVnKCJQb3NzaWJsZSBpbmNv
cnJlY3QgcmVuZGVyaW5nIG91dHB1dDogbWlzc2luZyB0cmlhbmdsZXMsIG9yIHRyaWFuZ2xlcyB3
aXRoIGRpZmZlcmVudCBjb2xvciBhdCBlYWNoIHZlcnRleCIpOworICAgIGV4dC52ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoY29sb3JMb2MsIDApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAz
LCAzLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBNYXRoLmNl
aWwoMC4yNSpjYW52YXMud2lkdGgpLCAwLjUqY2FudmFzLmhlaWdodCwgdywgaCwgWzI1NSwgMjU1
LCAwLCAyNTVdKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBNYXRoLmNlaWwoMC43NSpj
YW52YXMud2lkdGgpLCAwLjUqY2FudmFzLmhlaWdodCwgdywgaCwgWzI1NSwgMjU1LCAwLCAyNTVd
KTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBNYXRoLmNlaWwoMC4yNSpjYW52YXMud2lk
dGgpLCAwLCB3LCBoLCBbMjU1LCAyNTUsIDAsIDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIE1hdGguY2VpbCgwLjc1KmNhbnZhcy53aWR0aCksIDAsIHcsIGgsIFsyNTUsIDI1NSwg
MCwgMjU1XSk7CisgICAgZXh0LnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShjb2xvckxvYywgMSk7
CisKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7CisgICAgd3R1LnNldHVwSW5kZXhlZFF1
YWQoZ2wsIDEsIDApOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRC
dWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRzLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICAvLyBEcmF3IDM6IFJlZ3VsYXIgZHJhd0VsZW1lbnRzCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGRyYXdFbGVtZW50cyB3aXRoIG5vbi16ZXJv
IGRpdmlzb3IiKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAvLyBQ
b2ludCB0byBhbm90aGVyIGxvY2F0aW9uIGluIHRoZSBidWZmZXIgc28gdGhhdCB0aGUgZHJhdyB3
b3VsZCBvdmVyZmxvdyB3aXRob3V0IHRoZSBkaXZpc29yCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNv
bG9yTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDQ4KTsKKyAgICBnbC5kcmF3RWxlbWVudHMo
Z2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ2ZXJ0ZXggYXR0cmliIGRpdmlzb3Igc2hvdWxkIGFm
ZmVjdCByZWd1bGFyIGRyYXdFbGVtZW50cyB3aGVuIHRoZSBleHRlbnNpb24gaXMgZW5hYmxlZCIp
OworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIGNhbnZhcy5oZWlnaHQvMiwgY2FudmFz
LndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgWzI1NSwgMjU1LCAwLCAyNTVdKTsKKyAgICAvLyBS
ZXN0b3JlIHRoZSB2ZXJ0ZXggYXR0cmliIHBvaW50ZXIKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKGNvbG9yTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgLy8gRHJhdyA0
OiBEcmF3IGluZGV4ZWQgaW5zdGFuY2VzCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0
aW5nIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFO
R0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5j
aGVja0NhbnZhc1JlY3QoZ2wsIDAsIGNhbnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNh
bnZhcy5oZWlnaHQvMiwgWzI1NSwgMCwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVj
dChnbCwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNh
bnZhcy5oZWlnaHQvMiwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVj
dChnbCwgMCwgMCwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgWzAsIDAsIDI1NSwg
MjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgY2FudmFzLndpZHRoLzIsIDAsIGNh
bnZhcy53aWR0aC8yLCBjYW52YXMuaGVpZ2h0LzIsIFsyNTUsIDI1NSwgMCwgMjU1XSk7CisKKyAg
ICAvLyBUZXN0IGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIGVycm9yIGNvbmRpdGlvbnMKKyAg
ICBleHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJ
R05FRF9TSE9SVCwgMCwgLTEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsICJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBjYW5ub3QgaGF2ZSBhIHByaW1j
b3VudCBsZXNzIHRoYW4gMCIpOworCisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KGdsLlRSSUFOR0xFUywgLTEsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUgY2Fubm90IGhhdmUgYSBjb3VudCBsZXNzIHRoYW4gMCIpOworCisg
ICAgZXh0LnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShwb3NpdGlvbkxvYywgMSk7CisgICAgZXh0
LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURf
U0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdmVydGV4IGF0
dHJpYnV0ZSB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvIHdoZW4gY2FsbGluZyBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpOworICAgIGV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUocG9zaXRp
b25Mb2MsIDApOworCisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFO
R0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RSB3aXRoIFVOU0lHTkVEX0JZVEUgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIGV4dC5kcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShnbC5QT0lOVFMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBp
bnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIHdpdGggUE9JTlRTIHNob3VsZCBzdWNjZWVkIik7
CisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLkxJTkVTLCA2LCBnbC5VTlNJ
R05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSB3aXRoIExJTkVTIHNo
b3VsZCBzdWNjZWVkIik7CisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLkxJ
TkVfTElTVCwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUgd2l0aCBMSU5FX0xJU1Qgc2hvdWxkIHJldHVybiBzdWNjZWVkIik7CisgICAgZXh0LmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFX0xJU1QsIDYsIGdsLlVOU0lHTkVE
X1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIHdpdGggVFJJQU5HTEVfTElT
VCBzaG91bGQgc3VjY2VlZCIpOworCisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KGRlc2t0b3BHTFsnUVVBRF9TVFJJUCddLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFu
Y2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAi
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgd2l0aCBRVUFEX1NUUklQIHNob3VsZCByZXR1cm4g
SU5WQUxJRF9FTlVNIik7CisgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGRlc2t0
b3BHTFsnUVVBRFMnXSwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFIHdpdGggUVVBRFMgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0iKTsK
KyAgICBleHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoZGVza3RvcEdMWydQT0xZR09OJ10s
IDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RSB3aXRoIFBPTFlHT04gc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0iKTsKKworICAgIC8vIFJl
c2V0IHZlcnRleCBhdHRyaWIgZGl2aXNvcnMgc28gdGhleSBjYW5ub3QgYWZmZWN0IGZvbGxvd2lu
ZyBzdWJ0ZXN0cy4KKyAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbG9yTG9jLCAw
KTsKKyAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKG9mZnNldExvYywgMCk7Cit9CisK
K2Z1bmN0aW9uIHJ1bkRyYXdBcnJheXNUZXN0KHByb2dyYW0sIGZpcnN0LCBjb3VudCwgaW5zdGFu
Y2VDb3VudCwgb2Zmc2V0KQoreworICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIGFuZCB1bmlmb3Jt
IGxvY2F0aW9ucworICAgIHZhciBwb3NpdGlvbkxvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW0sICJhUG9zaXRpb24iKTsKKyAgICB2YXIgaW5zdGFuY2VQb3NMb2MgPSBnbC5nZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCAiYUluc3RhbmNlUG9zIik7CisgICAgdmFyIHVuaWZvcm1Mb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVPZmZzZXQiKTsKKworICAgIC8vIExv
YWQgdGhlIHZlcnRleCBwb3NpdGlvbnMKKyAgICB2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJB
cnJheShbCisgICAgICAgIC0xLCAtMSwKKyAgICAgICAgLTEsICAwLAorICAgICAgICAgMCwgIDAs
CisKKyAgICAgICAgIDAsICAwLAorICAgICAgICAgMCwgLTEsCisgICAgICAgIC0xLCAtMSwKKwor
ICAgICAgICAgMSwgLTEsCisgICAgICAgICAxLCAgMCwKKyAgICAgICAgIDAsICAwLAorCisgICAg
ICAgICAwLCAgMCwKKyAgICAgICAgIDAsIC0xLAorICAgICAgICAgMSwgLTEsCisgICAgXSk7Cisg
ICAgdmFyIHBvc2l0aW9uQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25zLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIocG9zaXRpb25Mb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBM
b2FkIHRoZSBpbnN0YW5jZSBwb3NpdGlvbnMKKyAgICB2YXIgaW5zdGFuY2VQb3NpdGlvbnMgPSBu
ZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgIDAsIDAsCisgICAgICAgICAxLCAwCisgICAgXSk7
CisgICAgdmFyIGluc3RhbmNlUG9zaXRpb25CdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5zdGFuY2VQb3NpdGlvbkJ1ZmZlcik7
CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGluc3RhbmNlUG9zaXRpb25zLCBn
bC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5zdGFuY2VQ
b3NMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoaW5zdGFuY2VQb3NMb2MsIDIsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBFbmFibGUgaW5zdGFuY2luZworICAgIGV4
dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOworCisgICAgLy8g
T2Zmc2V0CisgICAgZ2wudW5pZm9ybTNmdih1bmlmb3JtTG9jLCBvZmZzZXQpOworCisgICAgLy8g
RG8gdGhlIGluc3RhbmNlZCBkcmF3CisgICAgZXh0LmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShn
bC5UUklBTkdMRVMsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgc2hv
dWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIFJlc2V0IHZlcnRleCBhdHRyaWIgZGl2aXNvcnMgc28g
dGhleSBjYW5ub3QgYWZmZWN0IGZvbGxvd2luZyBzdWJ0ZXN0cy4KKyAgICBleHQudmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKGluc3RhbmNlUG9zTG9jLCAwKTsKK30KKworZnVuY3Rpb24gcnVuRHJh
d0FycmF5c1dpdGhPZmZzZXRUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRl
c3RpbmcgdGhhdCB0aGUgJ2ZpcnN0JyBwYXJhbWV0ZXIgdG8gZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFIGlzIG9ubHkgYW4gb2Zmc2V0IGludG8gdGhlIG5vbi1pbnN0YW5jZWQgdmVydGV4IGF0dHJp
YnV0ZXMuIik7CisgICAgLy8gU2VlOiBodHRwOi8vY3JidWcuY29tLzQ1NzI2OSBhbmQgaHR0cDov
L2NyYnVnLmNvbS80NDcxNDAKKworICAgIHZhciBkcmF3QXJyYXlzUHJvZ3JhbSA9IHd0dS5zZXR1
cFByb2dyYW0oZ2wsIFsiZHJhd0FycmF5c1Rlc3RWZXJ0ZXhTaGFkZXIiLCAiZHJhd0FycmF5c1Rl
c3RGcmFnbWVudFNoYWRlciJdKTsKKworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgcnVuRHJhd0FycmF5c1Rlc3QoZHJhd0FycmF5c1Byb2dyYW0sIDAsIDYsIDIsIFsw
LCAwLCAwXSk7CisKKyAgICBydW5EcmF3QXJyYXlzVGVzdChkcmF3QXJyYXlzUHJvZ3JhbSwgNiwg
NiwgMiwgWy0xLCAxLCAwXSk7CisKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBj
YW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIFsyNTUsIDAsIDAsIDI1NV0pOworfQorCitmdW5j
dGlvbiBydW5VbmlxdWVPYmplY3RUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlRlc3RpbmcgdGhhdCBnZXRFeHRlbnNpb24oKSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBlYWNo
IHRpbWUiKTsKKyAgICBleHQgPSBudWxsOworICAgIGdsLmdldEV4dGVuc2lvbigiQU5HTEVfaW5z
dGFuY2VkX2FycmF5cyIpLm15UHJvcGVydHkgPSAyOworICAgIHdlYmdsSGFybmVzc0NvbGxlY3RH
YXJiYWdlKCk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEV4dGVuc2lvbigiQU5HTEVfaW5zdGFuY2Vk
X2FycmF5cyIpLm15UHJvcGVydHknLCAnMicpOworfQorCitmdW5jdGlvbiBydW5WQU9JbnN0YW5j
aW5nSW50ZXJhY3Rpb25UZXN0KCkKK3sKKyAgICBkZWJ1ZygiIikKKyAgICBkZWJ1ZygiVGVzdGlu
ZyB0aGF0IEFOR0xFX2luc3RhbmNlZF9hcnJheXMgaW50ZXJhY3RzIGNvcnJlY3RseSB3aXRoIE9F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0IGlmIHByZXNlbnQiKTsKKyAgICAvLyBTZWU6IGh0dHBzOi8v
Z2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvaXNzdWVzLzEyMjgKKworICAgIC8vIFF1ZXJ5
IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3Mg
aXQKKyAgICB2YW9leHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
Iik7CisgICAgaWYgKCF2YW9leHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3Qgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdmVy
dGV4X2FycmF5X29iamVjdCBleHRlbnNpb24iKTsKKworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3Jh
bSk7CisKKyAgICB2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgICAw
LjAsICAxLjAsIC8vIExlZnQgcXVhZAorICAgICAgICAtMS4wLCAgMS4wLAorICAgICAgICAtMS4w
LCAtMS4wLAorICAgICAgICAgMC4wLCAgMS4wLAorICAgICAgICAtMS4wLCAtMS4wLAorICAgICAg
ICAgMC4wLCAtMS4wLAorCisgICAgICAgICAxLjAsICAxLjAsIC8vIFJpZ2h0IHF1YWQKKyAgICAg
ICAgIDAuMCwgIDEuMCwKKyAgICAgICAgIDAuMCwgLTEuMCwKKyAgICAgICAgIDEuMCwgIDEuMCwK
KyAgICAgICAgIDAuMCwgLTEuMCwKKyAgICAgICAgIDEuMCwgLTEuMAorICAgIF0pOworICAgIHZh
ciBwb3NpdGlvbkJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbkJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5B
UlJBWV9CVUZGRVIsIHBvc2l0aW9ucywgZ2wuU1RBVElDX0RSQVcpOworCisgICAgdmFyIGNvbG9y
cyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAxLjAsIDAuMCwgMC4wLCAxLjAsIC8vIFJl
ZAorICAgICAgICAxLjAsIDAuMCwgMC4wLCAxLjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsIDEu
MCwKKyAgICAgICAgMS4wLCAwLjAsIDAuMCwgMS4wLAorICAgICAgICAxLjAsIDAuMCwgMC4wLCAx
LjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsIDEuMCwKKworICAgICAgICAwLjAsIDAuMCwgMS4w
LCAxLjAsIC8vIEJsdWUKKyAgICAgICAgMC4wLCAwLjAsIDEuMCwgMS4wLAorICAgICAgICAwLjAs
IDAuMCwgMS4wLCAxLjAsCisgICAgICAgIDAuMCwgMC4wLCAxLjAsIDEuMCwKKyAgICAgICAgMC4w
LCAwLjAsIDEuMCwgMS4wLAorICAgICAgICAwLjAsIDAuMCwgMS4wLCAxLjAsCisgICAgXSk7Cisg
ICAgdmFyIGNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgY29sb3JzLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBSZXNldCB0aGUg
ZGl2aXNvciBvZiB0aGUgZGVmYXVsdCBWQU8gdG8gMAorICAgIGV4dC52ZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUoY29sb3JMb2MsIDApOworCisgICAgLy8gU2V0IHVwIFZBTyB3aXRoIGFuIGF0dHJp
YiBkaXZpc29yCisgICAgdmFyIHZhbzEgPSB2YW9leHQuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsK
KyAgICB2YW9leHQuYmluZFZlcnRleEFycmF5T0VTKHZhbzEpOworICAgIHsKKyAgICAgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAgICAgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOworICAgICAgICBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisg
ICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAg
ICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jKTsKKyAgICAgICAgZ2wudmVy
dGV4QXR0cmliUG9pbnRlcihjb2xvckxvYywgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAg
ICAgICAgZXh0LnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShjb2xvckxvYywgMSk7CisKKyAgICAg
ICAgZ2wudmVydGV4QXR0cmliMmZ2KG9mZnNldExvYywgWzAuMCwgMC4wXSk7CisgICAgfQorICAg
IHZhb2V4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisKKyAgICAvLyBTZXQgdXAgVkFPIHdp
dGggbm8gYXR0cmliIGRpdmlzb3IKKyAgICB2YXIgdmFvMiA9IHZhb2V4dC5jcmVhdGVWZXJ0ZXhB
cnJheU9FUygpOworICAgIHZhb2V4dC5iaW5kVmVydGV4QXJyYXlPRVModmFvMik7CisgICAgewor
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25CdWZmZXIpOwor
ICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvYyk7CisgICAgICAg
IGdsLnZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yQnVm
ZmVyKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2MpOworICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2Us
IDAsIDApOworICAgICAgICAvLyBOb3RlIHRoYXQgbm8gZGl2aXNvciBpcyBzZXQgaGVyZSwgd2hp
Y2ggaW1wbGllcyB0aGF0IGl0J3MgMAorCisgICAgICAgIGdsLnZlcnRleEF0dHJpYjJmdihvZmZz
ZXRMb2MsIFswLjAsIDAuMF0pOworICAgIH0KKyAgICB2YW9leHQuYmluZFZlcnRleEFycmF5T0VT
KG51bGwpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJFbnN1cmUgdGhhdCBWZXJ0ZXgg
QXJyYXkgT2JqZWN0cyByZXRhaW4gYXR0cmliIGRpdmlzb3JzIik7CisKKyAgICB2YW9leHQuYmlu
ZFZlcnRleEFycmF5T0VTKHZhbzEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAxMik7CisgICAgLy8gSWYgdGhl
IGRpdmlzb3IgaXMgcHJvcGVybHkgbWFuYWdlZCBieSB0aGUgVkFPIGEgc2luZ2xlIHJlZCBxdWFk
IHdpbGwgYmUgZHJhd24KKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0s
ICJlbnRpcmUgY2FudmFzIHNob3VsZCBiZSByZWQiKTsKKworICAgIHZhb2V4dC5iaW5kVmVydGV4
QXJyYXlPRVModmFvMik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDEyKTsKKyAgICAvLyBJZiB0aGUgZGl2aXNv
ciBpcyBwcm9wZXJseSBtYW5hZ2VkIGJ5IHRoZSBWQU8gYSByZWQgYW5kIGJsdWUgcXVhZCB3aWxs
IGJlIGRyYXduLgorICAgIHd0dS5jaGVja0NhbnZhc1JlY3RzKGdsLCBbCisgICAgICAgIHd0dS5t
YWtlQ2hlY2tSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCAqIDAuNSwgY2FudmFzLmhlaWdodCwgWzI1
NSwgMCwgMCwgMjU1XSwgImxlZnQgaGFsZiBvZiBjYW52YXMgc2hvdWxkIGJlIHJlZCIsIDEpLAor
ICAgICAgICB3dHUubWFrZUNoZWNrUmVjdChjYW52YXMud2lkdGggKiAwLjUsIDAsIGNhbnZhcy53
aWR0aCAqIDAuNSwgY2FudmFzLmhlaWdodCwgWzAsIDAsIDI1NSwgMjU1XSwgInJpZ2h0IGhhbGYg
b2YgY2FudmFzIHNob3VsZCBiZSBibHVlIiwgMSkKKyAgICBdKTsKKworICAgIHZhb2V4dC5iaW5k
VmVydGV4QXJyYXlPRVMobnVsbCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkFOR0xFQ29ycnVwdGlvblRl
c3QoKQoreworICAgIGRlYnVnKCIiKQorICAgIGRlYnVnKCJUZXN0aW5nIHRvIGVuc3VyZSB0aGF0
IHJlbmRlcmluZyBpc24ndCBjb3JydXB0IGR1ZSB0byBhbiBBTkdMRSBidWciKTsKKyAgICAvLyBT
ZWU6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/
aWQ9NDY3CisKKyAgICBzZXR1cENhbnZhcygpOworCisgICAgdmFyIHRvbGVyYW5jZSA9IDI7IC8v
IEFtb3VudCBvZiB2YXJpYW5jZSB0byBhbGxvdyBpbiByZXN1bHQgcGl4ZWxzIC0gbWF5IG5lZWQg
dG8gYmUgdHdlYWtlZCBoaWdoZXIKKyAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDEwOyAvLyBNdXN0
IGJlIGhpZ2hlciB0aGFuIDYKKyAgICB2YXIgaXRlcmF0aW9uID0gMDsKKyAgICB2YXIgdG90YWxJ
dGVyYXRpb25zID0gMTA7CisKKyAgICB2YXIgb2Zmc2V0cyA9IG5ldyBGbG9hdDMyQXJyYXkoWwor
ICAgICAgICAwLjAsIDAuMCwKKyAgICAgICAgMC4yLCAwLjAsCisgICAgICAgIDAuNCwgMC4wLAor
ICAgICAgICAwLjYsIDAuMCwKKyAgICAgICAgMC44LCAwLjAsCisgICAgICAgIDEuMCwgMC4wLAor
ICAgICAgICAxLjIsIDAuMCwKKyAgICAgICAgMS40LCAwLjAsCisgICAgICAgIDEuNiwgMC4wLAor
ICAgICAgICAxLjgsIDAuMCwKKyAgICBdKTsKKyAgICB2YXIgb2Zmc2V0QnVmZmVyID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldEJ1
ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldHMuYnl0ZUxl
bmd0aCAqIDIsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgMCwgb2Zmc2V0cyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob2Zm
c2V0TG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldExvYywgMiwgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKG9mZnNl
dExvYywgMSk7CisKKyAgICB2YXIgY29sb3JzID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAg
IDEuMCwgMC4wLCAwLjAsIDEuMCwKKyAgICAgICAgMS4wLCAxLjAsIDAuMCwgMS4wLAorICAgICAg
ICAwLjAsIDEuMCwgMC4wLCAxLjAsCisgICAgICAgIDAuMCwgMS4wLCAxLjAsIDEuMCwKKyAgICAg
ICAgMC4wLCAwLjAsIDEuMCwgMS4wLAorICAgICAgICAxLjAsIDAuMCwgMS4wLCAxLjAsCisgICAg
ICAgIDEuMCwgMC4wLCAwLjAsIDEuMCwKKyAgICAgICAgMS4wLCAxLjAsIDAuMCwgMS4wLAorICAg
ICAgICAwLjAsIDEuMCwgMC4wLCAxLjAsCisgICAgICAgIDAuMCwgMS4wLCAxLjAsIDEuMCwKKyAg
ICBdKTsKKyAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMuYnl0ZUxlbmd0aCAqIDIsIGdsLlNUQVRJQ19EUkFX
KTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgY29sb3JzKTsKKyAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvYyk7CisgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcihjb2xvckxvYywgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBleHQu
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbG9yTG9jLCAxKTsKKworICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsKKworICAg
IGZ1bmN0aW9uIGN5Y2xlQW5kVGVzdCgpIHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBpbnN0YW5j
ZWQgZGF0YSBidWZmZXJzIG91dHNpZGUgdGhlIGFjY2Vzc2VkIHJhbmdlLgorICAgICAgICAvLyBU
aGlzLCBwbHVzIHJlbmRlcmluZyBtb3JlIGluc3RhbmNlcyB0aGFuIHZlcnRpY2VzLCB0cmlnZ2Vy
cyB0aGUgYnVnLgorICAgICAgICB2YXIgbnVsbERhdGEgPSBuZXcgRmxvYXQzMkFycmF5KG9mZnNl
dHMubGVuZ3RoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNl
dEJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvZmZz
ZXRzLmJ5dGVMZW5ndGgsIG51bGxEYXRhKTsKKworICAgICAgICBudWxsRGF0YSA9IG5ldyBGbG9h
dDMyQXJyYXkoY29sb3JzLmxlbmd0aCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCBjb2xvcnMuYnl0ZUxlbmd0aCwgbnVsbERhdGEpOworCisgICAgICAgIGV4dC5kcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsK
KworICAgICAgICAvLyBNYWtlIHN1cmUgZWFjaCBjb2xvciB3YXMgZHJhd24gY29ycmVjdGx5Cisg
ICAgICAgIHZhciBpOworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGluc3RhbmNlQ291bnQ7ICsraSkgeworICAgICAgICAgICAgdmFyIHcgPSBjYW52
YXMud2lkdGggLyBpbnN0YW5jZUNvdW50OworICAgICAgICAgICAgdmFyIHggPSB3ICogaTsKKyAg
ICAgICAgICAgIHZhciBjb2xvciA9ICBbY29sb3JzWyhpKjQpXSAqIDI1NSwgY29sb3JzWyhpKjQp
KzFdICogMjU1LCBjb2xvcnNbKGkqNCkrMl0gKiAyNTUsIDI1NV0KKworICAgICAgICAgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdENvbG9yKAorICAgICAgICAgICAgICAgIGdsLCB4LCAwLCB3LCBjYW52
YXMuaGVpZ2h0LCBjb2xvciwgdG9sZXJhbmNlLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
e30sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHBh
c3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0sIGRlYnVnKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChwYXNzZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlBhc3NlZCB0ZXN0
ICIgKyBpdGVyYXRpb24gKyAiIG9mICIgKyB0b3RhbEl0ZXJhdGlvbnMpOworICAgICAgICAgICAg
aWYgKGl0ZXJhdGlvbiA8IHRvdGFsSXRlcmF0aW9ucykgeworICAgICAgICAgICAgICAgICsraXRl
cmF0aW9uOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY3ljbGVBbmRUZXN0LCAwKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbGVk
IHRlc3QgIiArIGl0ZXJhdGlvbiArICIgb2YgIiArIHRvdGFsSXRlcmF0aW9ucyk7CisgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjeWNsZUFuZFRlc3Qo
KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9leHQtYmxlbmQtbWlubWF4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1ibGVuZC1taW5tYXguaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NDVkY2I5MmQ0NmYxYTIyNjRlNDUxNGNjMzRkOGQ0NTk3ZGY1ZTUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtYmxlbmQtbWlubWF4Lmh0bWwKQEAgLTAs
MCArMSwyMjUgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEVYVF9ibGVuZF9taW5tYXggQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52
YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwhLS0gU2hhZGVycyB0byB0ZXN0IG91dHB1
dCAtLT4KKzxzY3JpcHQgaWQ9Im91dHB1dFZlcnRleFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12
ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAgIGds
X1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJvdXRwdXRG
cmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdUNvbG9yOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9m
IHRoZSBFWFRfYmxlbmRfbWlubWF4IGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOwor
CitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcyk7Cit2YXIgZXh0ID0gbnVsbDsKKworLy8gVXNlIHRoZSBjb25zdGFudCBk
aXJlY3RseSB3aGVuIHdlIGRvbid0IGhhdmUgdGhlIGV4dGVuc2lvbgordmFyIE1JTl9FWFQgPSAw
eDgwMDc7Cit2YXIgTUFYX0VYVCA9IDB4ODAwODsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWls
ZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBh
c3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIHJ1bkJsZW5kVGVzdERpc2FibGVk
KCk7CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBz
aG91bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhLbm93
blByZWZpeGVzKGdsLCAiRVhUX2JsZW5kX21pbm1heCIpOworICAgIGlmICghZXh0KSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIk5vIEVYVF9ibGVuZF9taW5tYXggc3VwcG9ydCAtLSB0aGlzIGlzIGxl
Z2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGVidWcoIiIpOworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5h
YmxlZCBFWFRfYmxlbmRfbWlubWF4IGV4dGVuc2lvbiIpOworCisgICAgICAgIHJ1blN1cHBvcnRl
ZFRlc3QodHJ1ZSk7CisKKyAgICAgICAgcnVuQmxlbmRUZXN0RW5hYmxlZCgpOworICAgICAgICBy
dW5PdXRwdXRUZXN0cygpOworICAgICAgICBydW5VbmlxdWVPYmplY3RUZXN0KCk7CisgICAgfQor
fQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICB2
YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICAgIGlmIChzdXBw
b3J0ZWQuaW5kZXhPZigiRVhUX2JsZW5kX21pbm1heCIpID49IDApIHsKKyAgICAgICAgaWYgKGV4
dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVYVF9ibGVuZF9taW5t
YXggbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRVhUX2JsZW5kX21pbm1heCBs
aXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiRVhUX2JsZW5kX21pbm1heCBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBi
dXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiRVhUX2JsZW5kX21pbm1heCBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBh
bmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkJsZW5kVGVzdERpc2FibGVkKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyBibGVuZGluZyBlbnVtcyB3aXRoIGV4dGVuc2lvbiBkaXNh
YmxlZCIpOworCisgICAgLy8gU2V0IHRoZSBibGVuZCBlcXVhdGlvbiB0byBhIGtub3duLWdvb2Qg
ZW51bSBmaXJzdAorICAgIGdsLmJsZW5kRXF1YXRpb24oZ2wuRlVOQ19BREQpOworCisgICAgd3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiZ2wuYmxlbmRFcXVh
dGlvbihNSU5fRVhUKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRf
RVFVQVRJT04pIiwgImdsLkZVTkNfQUREIik7CisKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICJnbC5ibGVuZEVxdWF0aW9uKE1BWF9FWFQpIik7Cisg
ICAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTikiLCAiZ2wuRlVO
Q19BREQiKTsKKworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
RU5VTSwgImdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShNSU5fRVhULCBnbC5GVU5DX0FERCkiKTsK
KyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0VRVUFUSU9OX1JHQikiLCAi
Z2wuRlVOQ19BREQiKTsKKworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklO
VkFMSURfRU5VTSwgImdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShnbC5GVU5DX0FERCwgTUlOX0VY
VCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0VRVUFUSU9OX0FM
UEhBKSIsICJnbC5GVU5DX0FERCIpOworCisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9FTlVNLCAiZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKE1BWF9FWFQsIGds
LkZVTkNfQUREKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfRVFV
QVRJT05fUkdCKSIsICJnbC5GVU5DX0FERCIpOworCisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGdsLkZV
TkNfQURELCBNQVhfRVhUKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxF
TkRfRVFVQVRJT05fQUxQSEEpIiwgImdsLkZVTkNfQUREIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkJs
ZW5kVGVzdEVuYWJsZWQoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGJs
ZW5kaW5nIGVudW1zIHdpdGggZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCJl
eHQuTUlOX0VYVCIsICIweDgwMDciKTsKKyAgICBzaG91bGRCZSgiZXh0Lk1BWF9FWFQiLCAiMHg4
MDA4Iik7CisKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwg
ImdsLmJsZW5kRXF1YXRpb24oZXh0Lk1JTl9FWFQpIik7CisgICAgc2hvdWxkQmUoImdsLmdldFBh
cmFtZXRlcihnbC5CTEVORF9FUVVBVElPTikiLCAiZXh0Lk1JTl9FWFQiKTsKKworICAgIHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmxlbmRFcXVhdGlvbihl
eHQuTUFYX0VYVCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0VR
VUFUSU9OKSIsICJleHQuTUFYX0VYVCIpOworCisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsICJnbC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoZXh0Lk1JTl9FWFQs
IGdsLkZVTkNfQUREKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRf
RVFVQVRJT05fUkdCKSIsICJleHQuTUlOX0VYVCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJh
bWV0ZXIoZ2wuQkxFTkRfRVFVQVRJT05fQUxQSEEpIiwgImdsLkZVTkNfQUREIik7CisKKyAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJsZW5kRXF1YXRp
b25TZXBhcmF0ZShnbC5GVU5DX0FERCwgZXh0Lk1JTl9FWFQpIik7CisgICAgc2hvdWxkQmUoImds
LmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9SR0IpIiwgImdsLkZVTkNfQUREIik7Cisg
ICAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9BTFBIQSkiLCAi
ZXh0Lk1JTl9FWFQiKTsKKworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGV4dC5NQVhfRVhULCBnbC5GVU5DX0FE
RCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0VRVUFUSU9OX1JH
QikiLCAiZXh0Lk1BWF9FWFQiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJM
RU5EX0VRVUFUSU9OX0FMUEhBKSIsICJnbC5GVU5DX0FERCIpOworCisgICAgd3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUo
Z2wuRlVOQ19BREQsIGV4dC5NQVhfRVhUKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuQkxFTkRfRVFVQVRJT05fUkdCKSIsICJnbC5GVU5DX0FERCIpOworICAgIHNob3VsZEJl
KCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfRVFVQVRJT05fQUxQSEEpIiwgImV4dC5NQVhfRVhU
Iik7Cit9CisKK2Z1bmN0aW9uIHJ1bk91dHB1dFRlc3RzKCkgeworICAgIHZhciBlID0gMjsgLy8g
QW1vdW50IG9mIHZhcmlhbmNlIHRvIGFsbG93IGluIHJlc3VsdCBwaXhlbHMgLSBtYXkgbmVlZCB0
byBiZSB0d2Vha2VkIGhpZ2hlcgorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5n
IHZhcmlvdXMgZHJhd3MgZm9yIHZhbGlkIGJsZW5kaW5nIGJlaGF2aW9yIik7CisKKyAgICBjYW52
YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUwOworICAgIGdsLnZpZXdwb3J0KDAsIDAs
IGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgZ2wuZW5hYmxlKGdsLkJMRU5EKTsK
KyAgICBnbC5ibGVuZEZ1bmMoZ2wuT05FLCBnbC5PTkUpOworCisgICAgdmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbIm91dHB1dFZlcnRleFNoYWRlciIsICJvdXRwdXRGcmFnbWVu
dFNoYWRlciJdLCBbJ3ZQb3NpdGlvbiddLCBbMF0pOworICAgIHZhciBxdWFkUGFyYW1ldGVycyA9
IHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKyAgICB2YXIgY29sb3JVbmlmb3JtID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3IiKTsKKworCisgICAgLy8gRHJhdyAx
CisgICAgZ2wuYmxlbmRFcXVhdGlvbihleHQuTUlOX0VYVCk7CisKKyAgICBnbC5jbGVhckNvbG9y
KDAuMiwgMC40LCAwLjYsIDAuOCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisKKyAgICBnbC51bmlmb3JtNGYoY29sb3JVbmlmb3JtLCAwLjgsIDAuNiwgMC40LCAwLjIpOwor
ICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbNTEsIDEwMiwgMTAyLCA1MV0pOwor
CisgICAgLy8gRHJhdyAyOgorICAgIGdsLmJsZW5kRXF1YXRpb24oZXh0Lk1BWF9FWFQpOworCisg
ICAgZ2wuY2xlYXJDb2xvcigwLjIsIDAuNCwgMC42LCAwLjgpOworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgZ2wudW5pZm9ybTRmKGNvbG9yVW5pZm9ybSwgMC44LCAw
LjYsIDAuNCwgMC4yKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworICAgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWzIwNCwg
MTUzLCAxNTMsIDIwNF0pOworCisgICAgLy8gRHJhdyAzCisgICAgZ2wuYmxlbmRFcXVhdGlvblNl
cGFyYXRlKGV4dC5NSU5fRVhULCBleHQuTUFYX0VYVCk7CisKKyAgICBnbC5jbGVhckNvbG9yKDAu
MiwgMC40LCAwLjYsIDAuOCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBnbC51bmlmb3JtNGYoY29sb3JVbmlmb3JtLCAwLjgsIDAuNiwgMC40LCAwLjIpOworICAg
IHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwg
MCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbNTEsIDEwMiwgMTAyLCAyMDRdKTsKKwor
ICAgIC8vIERyYXcgNAorICAgIGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShleHQuTUFYX0VYVCwg
ZXh0Lk1JTl9FWFQpOworCisgICAgZ2wuY2xlYXJDb2xvcigwLjIsIDAuNCwgMC42LCAwLjgpOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZ2wudW5pZm9ybTRmKGNv
bG9yVW5pZm9ybSwgMC44LCAwLjYsIDAuNCwgMC4yKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGds
KTsKKworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2Fu
dmFzLmhlaWdodCwgWzIwNCwgMTUzLCAxNTMsIDUxXSk7Cit9CisKK2Z1bmN0aW9uIHJ1blVuaXF1
ZU9iamVjdFRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0
IGdldEV4dGVuc2lvbigpIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSIpOworICAg
IGV4dCA9IG51bGw7CisgICAgZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfYmxlbmRfbWlubWF4IikubXlQ
cm9wZXJ0eSA9IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91
bGRCZSgnZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfYmxlbmRfbWlubWF4IikubXlQcm9wZXJ0eScsICcy
Jyk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVm
ZmVyLWhhbGYtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LWNvbG9yLWJ1ZmZlci1oYWxmLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUyZmU5OGU0NTJkMjhmNDAyNzMwNDY3Yjc0NGZlMDUxOTk4
ZmJhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LWNvbG9yLWJ1ZmZlci1oYWxm
LWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPsKgCis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1
MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+Cit2YXIgdmVyc2lvbiA9IDE7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy90ZXN0cy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LWRpc2pvaW50LXRpbWVyLXF1ZXJ5
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC1kaXNqb2ludC10aW1lci1xdWVyeS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmYzI5Y2M0NDVlNTNhZjFkNjcwNWRmODk3ZDNlOGI3NWNhNmNhMDAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC1kaXNqb2ludC10aW1lci1xdWVyeS5odG1sCkBAIC0wLDAg
KzEsMzEyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBFWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9j
YW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2Yg
dGhlIEVYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJs
ZS4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzKTsKK3ZhciBleHQgPSBudWxsOwordmFyIHF1ZXJ5ID0gbnVsbDsKK3ZhciBxdWVyeTIg
PSBudWxsOwordmFyIGVsYXBzZWRfcXVlcnkgPSBudWxsOwordmFyIHRpbWVzdGFtcF9xdWVyeTEg
PSBudWxsOwordmFyIHRpbWVzdGFtcF9xdWVyeTIgPSBudWxsOwordmFyIGF2YWlsYWJpbGl0eV9y
ZXRyeSA9IDUwMDsKK3ZhciB0aW1lc3RhbXBfY291bnRlcl9iaXRzID0gMDsKKworaWYgKCFnbCkg
eworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBm
aW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhp
c3RzIik7CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBz
byBzaG91bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhL
bm93blByZWZpeGVzKGdsLCAiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Iik7CisgICAgaWYgKCFl
eHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IHN1
cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpID4gMSkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IG11c3Qg
bm90IGJlIGFkdmVydGlzZWQgb24gV2ViR0wgMi4wIGNvbnRleHRzIik7CisgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBydW5TYW5pdHlUZXN0
cygpOworCisgICAgICAgICAgICAvLyBDbGVhciBkaXNqb2ludCB2YWx1ZS4KKyAgICAgICAgICAg
IGdsLmdldFBhcmFtZXRlcihleHQuR1BVX0RJU0pPSU5UX0VYVCk7CisKKyAgICAgICAgICAgIHJ1
bkVsYXBzZWRUaW1lVGVzdCgpOworICAgICAgICAgICAgdGltZXN0YW1wX2NvdW50ZXJfYml0cyA9
IGV4dC5nZXRRdWVyeUVYVChleHQuVElNRVNUQU1QX0VYVCwgZXh0LlFVRVJZX0NPVU5URVJfQklU
U19FWFQpOworICAgICAgICAgICAgaWYgKHRpbWVzdGFtcF9jb3VudGVyX2JpdHMgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgcnVuVGltZVN0YW1wVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmVyaWZ5UXVlcnlSZXN1bHRzTm90QXZhaWxhYmxlKCk7CisKKyAgICAgICAgICAgIHdp
bmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tRdWVyeVJlc3VsdHMpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TYW5pdHlUZXN0cygpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRlc3RpbmcgdGltZXIgcXVlcnkgZXhwZWN0YXRpb25zIik7CisKKyAgICBz
aG91bGRCZSgiZXh0LlFVRVJZX0NPVU5URVJfQklUU19FWFQiLCAiMHg4ODY0Iik7CisgICAgc2hv
dWxkQmUoImV4dC5DVVJSRU5UX1FVRVJZX0VYVCIsICIweDg4NjUiKTsKKyAgICBzaG91bGRCZSgi
ZXh0LlFVRVJZX1JFU1VMVF9FWFQiLCAiMHg4ODY2Iik7CisgICAgc2hvdWxkQmUoImV4dC5RVUVS
WV9SRVNVTFRfQVZBSUxBQkxFX0VYVCIsICIweDg4NjciKTsKKyAgICBzaG91bGRCZSgiZXh0LlRJ
TUVfRUxBUFNFRF9FWFQiLCAiMHg4OEJGIik7CisgICAgc2hvdWxkQmUoImV4dC5USU1FU1RBTVBf
RVhUIiwgIjB4OEUyOCIpOworICAgIHNob3VsZEJlKCJleHQuR1BVX0RJU0pPSU5UX0VYVCIsICIw
eDhGQkIiKTsKKworICAgIHNob3VsZEJlKCJleHQuaXNRdWVyeUVYVChudWxsKSIsICJmYWxzZSIp
OworCisgICAgc2hvdWxkQmVUcnVlKCJleHQuZ2V0UXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9F
WFQsIGV4dC5DVVJSRU5UX1FVRVJZX0VYVCkgPT09IG51bGwiKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgICAgc2hvdWxkQmVUcnVlKCJleHQuZ2V0UXVlcnlF
WFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGV4dC5RVUVSWV9DT1VOVEVSX0JJVFNfRVhUKSA+PSAz
MCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIHNo
b3VsZEJlVHJ1ZSgiZXh0LmdldFF1ZXJ5RVhUKGV4dC5USU1FU1RBTVBfRVhULCBleHQuQ1VSUkVO
VF9RVUVSWV9FWFQpID09PSBudWxsIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IpOworCisgICAgLy8gQ2VydGFpbiBkcml2ZXJzIHNldCB0aW1lc3RhbXAgY291bnRl
ciBiaXRzIHRvIDAgYXMgdGhleSBkb24ndCBzdXBwb3J0IHRpbWVzdGFtcHMKKyAgICBzaG91bGRC
ZVRydWUoImV4dC5nZXRRdWVyeUVYVChleHQuVElNRVNUQU1QX0VYVCwgZXh0LlFVRVJZX0NPVU5U
RVJfQklUU19FWFQpID49IDMwIHx8ICIgKworICAgICAgICAgICAgICJleHQuZ2V0UXVlcnlFWFQo
ZXh0LlRJTUVTVEFNUF9FWFQsIGV4dC5RVUVSWV9DT1VOVEVSX0JJVFNfRVhUKSA9PT0gMCIpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aW1lIGVsYXBzZWQgcXVlcnkgbGlmZWN5Y2xlIik7Cisg
ICAgcXVlcnkgPSBleHQuY3JlYXRlUXVlcnlFWFQoKTsKKyAgICBzaG91bGRCZSgiZXh0LmlzUXVl
cnlFWFQocXVlcnkpIiwgImZhbHNlIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJRdWVyeSBjcmVhdGlvbiBtdXN0IHN1Y2NlZWQuIik7CisgICAgc2hvdWxkVGhy
b3coImV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FU1RBTVBfRVhULCBudWxsKSIpOworICAgIGV4
dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FU1RBTVBfRVhULCBxdWVyeSk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiQmVnaW5uaW5nIGEgdGltZXN0YW1wIHF1
ZXJ5IHNob3VsZCBmYWlsLiIpOworICAgIGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBT
RURfRVhULCBxdWVyeSk7CisgICAgc2hvdWxkQmUoImV4dC5pc1F1ZXJ5RVhUKHF1ZXJ5KSIsICJ0
cnVlIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJCZWdpbm5p
bmcgYW4gaW5hY3RpdmUgdGltZSBlbGFwc2VkIHF1ZXJ5IHNob3VsZCBzdWNjZWVkLiIpOworICAg
IGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJBdHRlbXB0aW5nIHRv
IGJlZ2luIGFuIGFjdGl2ZSBxdWVyeSBzaG91bGQgZmFpbC4iKTsKKyAgICBleHQuZ2V0UXVlcnlP
YmplY3RFWFQocXVlcnksIGV4dC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJGZXRjaGluZyBxdWVy
eSByZXN1bHQgYXZhaWxhYmlsaXR5IG9mIGFuIGFjdGl2ZSBxdWVyeSBzaG91bGQgZmFpbC4iKTsK
KyAgICBleHQuZ2V0UXVlcnlPYmplY3RFWFQocXVlcnksIGV4dC5RVUVSWV9SRVNVTFRfRVhUKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkZldGNo
aW5nIHF1ZXJ5IHJlc3VsdCBvZiBhbiBhY3RpdmUgcXVlcnkgc2hvdWxkIGZhaWwuIik7CisgICAg
c2hvdWxkQmUoImV4dC5nZXRRdWVyeUVYVChleHQuVElNRV9FTEFQU0VEX0VYVCwgZXh0LkNVUlJF
TlRfUVVFUllfRVhUKSIsICJxdWVyeSIpOworICAgIGV4dC5lbmRRdWVyeUVYVChleHQuVElNRV9F
TEFQU0VEX0VYVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJF
bmRpbmcgYW4gYWN0aXZlIHRpbWUgZWxhcHNlZCBxdWVyeSBzaG91bGQgc3VjY2VlZC4iKTsKKyAg
ICBzaG91bGRUaHJvdygiZXh0LmdldFF1ZXJ5T2JqZWN0RVhUKG51bGwsIGV4dC5RVUVSWV9SRVNV
TFRfQVZBSUxBQkxFX0VYVCkiKTsKKyAgICBleHQuZ2V0UXVlcnlPYmplY3RFWFQocXVlcnksIGV4
dC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJGZXRjaGluZyBxdWVyeSByZXN1bHQgYXZhaWxhYmlsaXR5IGFmdGVy
IHF1ZXJ5IGVuZCBzaG91bGQgc3VjY2VlZC4iKTsKKyAgICBleHQuZW5kUXVlcnlFWFQoZXh0LlRJ
TUVfRUxBUFNFRF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiQXR0ZW1wdGluZyB0byBlbmQgYW4gaW5hY3RpdmUgcXVlcnkgc2hvdWxkIGZh
aWwuIik7CisgICAgZXh0LnF1ZXJ5Q291bnRlckVYVChxdWVyeSwgZXh0LlRJTUVTVEFNUF9FWFQp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHVzZSB0aW1lIGVsYXBzZWQgcXVlcnkgdG8gc3RvcmUgYSB0aW1l
c3RhbXAuIik7CisgICAgZXh0LmRlbGV0ZVF1ZXJ5RVhUKHF1ZXJ5KTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlF1ZXJ5IGRlbGV0aW9uIG11c3Qgc3VjY2VlZC4i
KTsKKyAgICBleHQuYmVnaW5RdWVyeUVYVChleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQmVnaW5u
aW5nIGEgZGVsZXRlZCBxdWVyeSBtdXN0IGZhaWwuIik7CisgICAgZXh0LmdldFF1ZXJ5T2JqZWN0
RVhUKHF1ZXJ5LCBleHQuUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiRmV0Y2hpbmcgcXVlcnkgcmVz
dWx0IGF2YWlsYWJpbGl0eSBhZnRlciBxdWVyeSBkZWxldGlvbiBzaG91bGQgZmFpbC4iKTsKKyAg
ICBzaG91bGRCZSgiZXh0LmlzUXVlcnlFWFQocXVlcnkpIiwgImZhbHNlIik7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGltZXN0YW1wIGNvdW50ZXIiKTsKKyAgICBxdWVy
eSA9IGV4dC5jcmVhdGVRdWVyeUVYVCgpOworICAgIHNob3VsZFRocm93KCJleHQucXVlcnlDb3Vu
dGVyRVhUKG51bGwsIGV4dC5USU1FU1RBTVBfRVhUKSIpOworICAgIGV4dC5xdWVyeUNvdW50ZXJF
WFQocXVlcnksIGV4dC5USU1FU1RBTVBfRVhUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlRpbWVzdGFtcCBjb3VudGVyIHF1ZXJpZXMgc2hvdWxkIHdvcmsuIik7
CisgICAgZXh0LmRlbGV0ZVF1ZXJ5RVhUKHF1ZXJ5KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlBlcmZvcm1p
bmcgcGFyYW1ldGVyIHNhbml0eSBjaGVja3MiKTsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoZXh0LlRJ
TUVTVEFNUF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
Z2V0UGFyYW1ldGVyIHRpbWVzdGFtcCBjYWxscyBzaG91bGQgd29yay4iKTsKKyAgICBnbC5nZXRQ
YXJhbWV0ZXIoZXh0LkdQVV9ESVNKT0lOVF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiZ2V0UGFyYW1ldGVyIGRpc2pvaW50IGNhbGxzIHNob3VsZCB3b3Jr
LiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGN1cnJlbnQgcXVlcnkg
Y29uZGl0aW9ucyIpOworICAgIHF1ZXJ5ID0gZXh0LmNyZWF0ZVF1ZXJ5RVhUKCk7CisgICAgcXVl
cnkyID0gZXh0LmNyZWF0ZVF1ZXJ5RVhUKCk7CisgICAgc2hvdWxkQmUoImV4dC5nZXRRdWVyeUVY
VChleHQuVElNRV9FTEFQU0VEX0VYVCwgZXh0LkNVUlJFTlRfUVVFUllfRVhUKSIsICJudWxsIik7
CisgICAgZXh0LmJlZ2luUXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5KTsKKyAg
ICBzaG91bGRCZSgiZXh0LmdldFF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBleHQuQ1VS
UkVOVF9RVUVSWV9FWFQpIiwgInF1ZXJ5Iik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGZhaWxl
ZCBiZWdpbiBxdWVyeSBzaG91bGQgbm90IGNoYW5nZSB0aGUgY3VycmVudCBxdWVyeS4iKTsKKyAg
ICBleHQuYmVnaW5RdWVyeUVYVChleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkyKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkJlZ2lubmluZyBh
biBlbGFwc2VkIHF1ZXJ5IHdpdGhvdXQgZW5kaW5nIHNob3VsZCBmYWlsLiIpOworICAgIHNob3Vs
ZEJlKCJleHQuZ2V0UXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGV4dC5DVVJSRU5UX1FV
RVJZX0VYVCkiLCAicXVlcnkiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmVnaW5uaW5nIGEg
dGltZXN0YW1wIHF1ZXJ5IGlzIGludmFsaWQgYW5kIHNob3VsZCBub3QgY2hhbmdlIHRoZSBlbGFw
c2VkIHF1ZXJ5LiIpOworICAgIGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FU1RBTVBfRVhULCBx
dWVyeTIpCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNKTsKKyAg
ICBzaG91bGRCZSgiZXh0LmdldFF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBleHQuQ1VS
UkVOVF9RVUVSWV9FWFQpIiwgInF1ZXJ5Iik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRpbWVz
dGFtcCBxdWVyaWVzIGVuZCBpbW1lZGlhdGVseSBzbyBhcmUgbmV2ZXIgY3VycmVudC4iKTsKKyAg
ICBleHQucXVlcnlDb3VudGVyRVhUKHF1ZXJ5MiwgZXh0LlRJTUVTVEFNUF9FWFQpOworICAgIHNo
b3VsZEJlKCJleHQuZ2V0UXVlcnlFWFQoZXh0LlRJTUVTVEFNUF9FWFQsIGV4dC5DVVJSRU5UX1FV
RVJZX0VYVCkiLCAibnVsbCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBlbmRpbmcgdGhlIHF1
ZXJ5IHNob3VsZCBjbGVhciB0aGUgY3VycmVudCBxdWVyeS4iKTsKKyAgICBleHQuZW5kUXVlcnlF
WFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQpOworICAgIHNob3VsZEJlKCJleHQuZ2V0UXVlcnlFWFQo
ZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGV4dC5DVVJSRU5UX1FVRVJZX0VYVCkiLCAibnVsbCIpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyBiZWdpbm5pbmcgYSBlbGFwc2VkIHF1ZXJ5IHVzaW5nIGEg
dGltZXN0YW1wIHF1ZXJ5IHNob3VsZCBmYWlsIGFuZCBub3QgYWZmZWN0IGN1cnJlbnQgcXVlcnku
IikKKyAgICBleHQuYmVnaW5RdWVyeUVYVChleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkyKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlN3aXRj
aGluZyBxdWVyeSB0YXJnZXRzIHNob3VsZCBmYWlsLiIpOworICAgIHNob3VsZEJlKCJleHQuZ2V0
UXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGV4dC5DVVJSRU5UX1FVRVJZX0VYVCkiLCAi
bnVsbCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAg
IGV4dC5kZWxldGVRdWVyeUVYVChxdWVyeSk7CisgICAgZXh0LmRlbGV0ZVF1ZXJ5RVhUKHF1ZXJ5
Mik7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBi
ZSBubyBlcnJvcnMgYXQgZW5kIG9mIHNhbml0eSB0ZXN0cyIpOworfQorCitmdW5jdGlvbiBydW5F
bGFwc2VkVGltZVRlc3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGVs
YXBzZWQgdGltZSBxdWVyeSIpOworCisgICAgZWxhcHNlZF9xdWVyeSA9IGV4dC5jcmVhdGVRdWVy
eUVYVCgpOworICAgIGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBlbGFw
c2VkX3F1ZXJ5KTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDEsIDEpOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGV4dC5lbmRRdWVyeUVYVChleHQuVElNRV9FTEFQ
U0VEX0VYVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJUaW1l
IGVsYXBzZWQgcXVlcnkgc2hvdWxkIGhhdmUgbm8gZXJyb3JzIik7Cit9CisKK2Z1bmN0aW9uIHJ1
blRpbWVTdGFtcFRlc3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRp
bWVzdGFtcCBxdWVyeSIpOworCisgICAgdGltZXN0YW1wX3F1ZXJ5MSA9IGV4dC5jcmVhdGVRdWVy
eUVYVCgpOworICAgIHRpbWVzdGFtcF9xdWVyeTIgPSBleHQuY3JlYXRlUXVlcnlFWFQoKTsKKyAg
ICBleHQucXVlcnlDb3VudGVyRVhUKHRpbWVzdGFtcF9xdWVyeTEsIGV4dC5USU1FU1RBTVBfRVhU
KTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQpOworICAgIGV4dC5xdWVyeUNvdW50ZXJFWFQodGltZXN0YW1wX3F1ZXJ5Miwg
ZXh0LlRJTUVTVEFNUF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiVGltZXN0YW1wIHF1ZXJpZXMgc2hvdWxkIGhhdmUgbm8gZXJyb3JzIik7Cit9CisKK2Z1
bmN0aW9uIHZlcmlmeVF1ZXJ5UmVzdWx0c05vdEF2YWlsYWJsZSgpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlZlcmlmeWluZyBxdWVyaWVzJyByZXN1bHRzIGRvbid0IGJlY29tZSBhdmFp
bGFibGUgdG9vIGVhcmx5Iik7CisKKyAgICAvLyBWZXJpZnkgYXMgYmVzdCBhcyBwb3NzaWJsZSB0
aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0CisgICAgLy8gYWxsb3cgYSBxdWVyeSdzIHJl
c3VsdCB0byBiZWNvbWUgYXZhaWxhYmxlIHRoZSBzYW1lIGZyYW1lLCBieQorICAgIC8vIHNwaW4t
bG9vcGluZyBmb3Igc29tZSB0aW1lIGFuZCBlbnN1cmluZyB0aGF0IG5vbmUgb2YgdGhlCisgICAg
Ly8gcXVlcmllcycgcmVzdWx0cyBiZWNvbWUgYXZhaWxhYmxlLgorICAgIHZhciBzdGFydFRpbWUg
PSBEYXRlLm5vdygpOworICAgIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgMjAwMCkg
eworICAgICAgICBnbC5maW5pc2goKTsKKyAgICAgICAgaWYgKGV4dC5nZXRRdWVyeU9iamVjdEVY
VChlbGFwc2VkX3F1ZXJ5LCBleHQuUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQpKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJPbmUgb2YgdGhlIHF1ZXJpZXMnIHJlc3VsdHMgYmVjYW1lIGF2
YWlsYWJsZSB0b28gZWFybHkiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodGltZXN0YW1wX2NvdW50ZXJfYml0cyA+IDApIHsKKyAgICAgICAgICAgIGlmIChl
eHQuZ2V0UXVlcnlPYmplY3RFWFQodGltZXN0YW1wX3F1ZXJ5MSwgZXh0LlFVRVJZX1JFU1VMVF9B
VkFJTEFCTEVfRVhUKSB8fAorICAgICAgICAgICAgICAgIGV4dC5nZXRRdWVyeU9iamVjdEVYVCh0
aW1lc3RhbXBfcXVlcnkyLCBleHQuUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQpKSB7CisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiT25lIG9mIHRoZSBxdWVyaWVzJyByZXN1bHRzIGJlY2Ft
ZSBhdmFpbGFibGUgdG9vIGVhcmx5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdGVzdFBhc3NlZCgiUXVlcmllcycgcmVz
dWx0cyBkaWRuJ3QgYmVjb21lIGF2YWlsYWJsZSBpbiBhIHNwaW4gbG9vcCIpOworfQorCitmdW5j
dGlvbiBjaGVja1F1ZXJ5UmVzdWx0cygpIHsKKyAgICBpZiAoYXZhaWxhYmlsaXR5X3JldHJ5ID4g
MCkgeworICAgICAgICAvLyBNYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIHdhaXQgZm9yIHRo
ZSBxdWVyaWVzJyByZXN1bHRzIHRvIGJlY29tZSBhdmFpbGFibGUuCisgICAgICAgIGlmICghZXh0
LmdldFF1ZXJ5T2JqZWN0RVhUKGVsYXBzZWRfcXVlcnksIGV4dC5RVUVSWV9SRVNVTFRfQVZBSUxB
QkxFX0VYVCkgfHwKKyAgICAgICAgICAgICh0aW1lc3RhbXBfY291bnRlcl9iaXRzID4gMCAmJiAh
ZXh0LmdldFF1ZXJ5T2JqZWN0RVhUKHRpbWVzdGFtcF9xdWVyeTIsIGV4dC5RVUVSWV9SRVNVTFRf
QVZBSUxBQkxFX0VYVCkpKSB7CisgICAgICAgICAgICB2YXIgZXJyb3IgPSBnbC5nZXRFcnJvcigp
OworICAgICAgICAgICAgaWYgKGVycm9yICE9IGdsLk5PX0VSUk9SKSB7CisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZ2V0UXVlcnlPYmplY3RFWFQgc2hvdWxkIGhhdmUgbm8gZXJyb3JzOiAi
ICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBlcnJvcikpOworICAgICAgICAgICAgICAgIGRlYnVn
KCIiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZhaWxhYmlsaXR5X3JldHJ5LS07Cisg
ICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNoZWNrUXVlcnlSZXN1bHRz
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyBxdWVyeSByZXN1bHRzIik7CisKKyAgICAvLyBNYWtlIHN1
cmUgcXVlcmllcyBhcmUgYXZhaWxhYmxlLgorICAgIHNob3VsZEJlKCJleHQuZ2V0UXVlcnlPYmpl
Y3RFWFQoZWxhcHNlZF9xdWVyeSwgZXh0LlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUKSIsICJ0
cnVlIik7CisgICAgaWYgKHRpbWVzdGFtcF9jb3VudGVyX2JpdHMgPiAwKSB7CisgICAgICAgIHNo
b3VsZEJlKCJleHQuZ2V0UXVlcnlPYmplY3RFWFQodGltZXN0YW1wX3F1ZXJ5MSwgZXh0LlFVRVJZ
X1JFU1VMVF9BVkFJTEFCTEVfRVhUKSIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJlKCJleHQu
Z2V0UXVlcnlPYmplY3RFWFQodGltZXN0YW1wX3F1ZXJ5MiwgZXh0LlFVRVJZX1JFU1VMVF9BVkFJ
TEFCTEVfRVhUKSIsICJ0cnVlIik7CisgICAgfQorCisgICAgdmFyIGRpc2pvaW50X3ZhbHVlID0g
Z2wuZ2V0UGFyYW1ldGVyKGV4dC5HUFVfRElTSk9JTlRfRVhUKTsKKyAgICBpZiAoZGlzam9pbnRf
dmFsdWUpIHsKKyAgICAgICAgLy8gQ2Fubm90IHZhbGlkYXRlIHJlc3VsdHMgbWFrZSBzZW5zZSwg
YnV0IHRoaXMgaXMgb2theS4KKyAgICAgICAgdGVzdFBhc3NlZCgiRGlzam9pbnQgdHJpZ2dlcmVk
LiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBlbGFwc2VkX3Jlc3VsdCA9IGV4dC5nZXRR
dWVyeU9iamVjdEVYVChlbGFwc2VkX3F1ZXJ5LCBleHQuUVVFUllfUkVTVUxUX0VYVCk7CisgICAg
ICAgIGlmICh0aW1lc3RhbXBfY291bnRlcl9iaXRzID4gMCkgeworICAgICAgICAgICAgdmFyIHRp
bWVzdGFtcF9yZXN1bHQxID0gZXh0LmdldFF1ZXJ5T2JqZWN0RVhUKHRpbWVzdGFtcF9xdWVyeTEs
IGV4dC5RVUVSWV9SRVNVTFRfRVhUKTsKKyAgICAgICAgICAgIHZhciB0aW1lc3RhbXBfcmVzdWx0
MiA9IGV4dC5nZXRRdWVyeU9iamVjdEVYVCh0aW1lc3RhbXBfcXVlcnkyLCBleHQuUVVFUllfUkVT
VUxUX0VYVCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRG8gc29tZSBiYXNpYyB2YWxpZGl0eSBj
aGVja2luZyBvZiB0aGUgZWxhcHNlZCB0aW1lIHF1ZXJ5LiBUaGVyZSdzIG5vIHdheSBpdCBzaG91
bGQKKyAgICAgICAgLy8gdGFrZSBtb3JlIHRoYW4gYWJvdXQgaGFsZiBhIHNlY29uZCBmb3IgYSBu
by1vcCBxdWVyeS4KKyAgICAgICAgdmFyIGhhbGZTZWNvbmRJbk5hbm9zID0gMC41ICogMTAwMCAq
IDEwMDAgKiAxMDAwOworICAgICAgICBpZiAoZWxhcHNlZF9yZXN1bHQgPCAwIHx8IGVsYXBzZWRf
cmVzdWx0ID4gaGFsZlNlY29uZEluTmFub3MpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRp
bWUgZWxhcHNlZCBxdWVyeSByZXR1cm5lZCBpbnZhbGlkIGRhdGE6ICIgKyBlbGFwc2VkX3Jlc3Vs
dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJUaW1lIGVsYXBz
ZWQgcXVlcnkgcmVzdWx0cyB3ZXJlIHZhbGlkLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRpbWVzdGFtcF9jb3VudGVyX2JpdHMgPiAwKSB7CisgICAgICAgICAgICBpZiAodGltZXN0YW1w
X3Jlc3VsdDEgPD0gMCB8fAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcF9yZXN1bHQyIDw9IDAg
fHwKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXBfcmVzdWx0MiA8PSB0aW1lc3RhbXBfcmVzdWx0
MSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRpbWVzdGFtcCBxdWVyaWVzIHJldHVy
bmVkIGludmFsaWQgZGF0YTogdGltZXN0YW1wX3Jlc3VsdDEgPSAiICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVzdGFtcF9yZXN1bHQxICsgIiwgdGltZXN0YW1wX3Jlc3VsdDIgPSAi
ICsgdGltZXN0YW1wX3Jlc3VsdDIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJUaW1lc3RhbXAgcXVlcnkgcmVzdWx0cyB3ZXJlIHZhbGlkLiIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGZp
bmlzaFRlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9leHQtZnJhZy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtZnJhZy1kZXB0
aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVlMmE2ZGYwY2Q3MDdkMDQ5NDI5YWFmNjdhMDg4ZmU3Y2M0YjVm
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1mcmFnLWRlcHRoLmh0bWwKQEAg
LTAsMCArMSwyODkgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIEVYVF9mcmFnX2RlcHRoIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2Fu
dmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3Rpbmcg
ZnJhZ21lbnQgZGVwdGggd3JpdGluZyAtLT4KKworPCEtLSBTaGFkZXIgb21pdHRpbmcgdGhlIHJl
cXVpcmVkICNleHRlbnNpb24gcHJhZ21hIC0tPgorPHNjcmlwdCBpZD0ibWlzc2luZ1ByYWdtYUZy
YWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnRGVwdGhFWFQgPSAxLjA7Cit9Cis8L3NjcmlwdD4K
KworPCEtLSBTaGFkZXIgdG8gdGVzdCBtYWNybyBkZWZpbml0aW9uIC0tPgorPHNjcmlwdCBpZD0i
bWFjcm9GcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyNpZmRlZiBHTF9FWFRfZnJhZ19kZXB0
aAorICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyNlbHNlCisg
ICAgLy8gRXJyb3IgZXhwZWN0ZWQKKyAgICAjZXJyb3Igbm8gR0xfRVhUX2ZyYWdfZGVwdGg7Cisj
ZW5kaWYKK30KKzwvc2NyaXB0PgorCis8IS0tIFNoYWRlciB3aXRoIHJlcXVpcmVkICNleHRlbnNp
b24gcHJhZ21hIC0tPgorPHNjcmlwdCBpZD0idGVzdEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KKyNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnRGVwdGhFWFQgPSAxLjA7
Cit9Cis8L3NjcmlwdD4KKzwhLS0gU2hhZGVycyB0byBsaW5rIHdpdGggdGVzdCBmcmFnbWVudCBz
aGFkZXJzIC0tPgorPHNjcmlwdCBpZD0iZ29vZFZlcnRleFNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAg
IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8IS0tIFNoYWRlcnMgdG8g
dGVzdCBvdXRwdXQgLS0+Cis8c2NyaXB0IGlkPSJvdXRwdXRWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigp
IHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0ib3V0cHV0RnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorI2V4
dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCA6IGVuYWJsZQorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit1bmlmb3JtIGZsb2F0IHVEZXB0aDsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2xfRnJhZ0RlcHRoRVhUID0gdURl
cHRoOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRfZnJhZ19k
ZXB0aCBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwor
dmFyIGV4dCA9IG51bGw7CisKKy8vIFJ1biBhbGwgdGVzdHMgb25jZS4KK3J1bkFsbFRlc3RzKCk7
CisKKy8vIFJ1biBhbGwgdGVzdHMgYWdhaW5zdCB3aXRoIGEgbmV3IGNvbnRleHQgdG8gdGVzdCBm
b3IgYW55IGNhY2hlIGlzc3Vlcy4KK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIG5ldyBjb250
ZXh0IHRvIGNhdGNoIGNhY2hlIGVycm9ycyIpOworZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7
CitleHQgPSBudWxsOworcnVuQWxsVGVzdHMoKTsKKworZnVuY3Rpb24gcnVuQWxsVGVzdHMoKSB7
CisgICAgaWYgKCFnbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMg
bm90IGV4aXN0Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29u
dGV4dCBleGlzdHMiKTsKKworICAgICAgICBydW5TaGFkZXJUZXN0cyhmYWxzZSk7CisKKyAgICAg
ICAgLy8gUXVlcnkgdGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUg
Y2FuIGFjY2VzcyBpdAorICAgICAgICBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJl
Zml4ZXMoZ2wsICJFWFRfZnJhZ19kZXB0aCIpOworICAgICAgICBpZiAoIWV4dCkgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiTm8gRVhUX2ZyYWdfZGVwdGggc3VwcG9ydCAtLSB0aGlzIGlzIGxl
Z2FsIik7CisKKyAgICAgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QoZmFsc2UpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgRVhU
X2ZyYWdfZGVwdGggZXh0ZW5zaW9uIik7CisKKyAgICAgICAgICAgIHJ1blN1cHBvcnRlZFRlc3Qo
dHJ1ZSk7CisKKyAgICAgICAgICAgIHJ1blNoYWRlclRlc3RzKHRydWUpOworICAgICAgICAgICAg
cnVuT3V0cHV0VGVzdHMoKTsKKyAgICAgICAgICAgIHJ1blVuaXF1ZU9iamVjdFRlc3QoKTsKKwor
ICAgICAgICAgICAgLy8gUnVuIGRlZmVycmVkIGxpbmsgdGVzdHMuCisgICAgICAgICAgICBydW5E
ZWZlcnJlZExpbmtUZXN0cygpOworICAgICAgICB9CisgICAgfQorCit9CisKK2Z1bmN0aW9uIHJ1
blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBzdXBwb3J0ZWQgPSBn
bC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgaWYgKHN1cHBvcnRlZC5pbmRleE9mKCJF
WFRfZnJhZ19kZXB0aCIpID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVYVF9mcmFnX2RlcHRoIGxpc3RlZCBhcyBzdXBwb3J0
ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkVYVF9mcmFnX2RlcHRoIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0
IGdldEV4dGVuc2lvbiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJFWFRfZnJh
Z19kZXB0aCBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRl
ZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiRVhUX2ZyYWdf
ZGVwdGggbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBmYWlsZWQgLS0g
dGhpcyBpcyBsZWdhbCIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TaGFk
ZXJUZXN0cyhleHRlbnNpb25FbmFibGVkKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIHZhcmlvdXMgc2hhZGVyIGNvbXBpbGVzIHdpdGggZXh0ZW5zaW9uICIgKyAoZXh0ZW5z
aW9uRW5hYmxlZCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpKTsKKworICAgIC8vIEV4cGVjdCB0
aGUgbWFjcm8gc2hhZGVyIHRvIHN1Y2NlZWQgT05MWSBpZiBlbmFibGVkCisgICAgdmFyIG1hY3Jv
RnJhZ21lbnRQcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtRnJvbVNjcmlwdEV4cGVjdEVycm9yKGds
LCAiZ29vZFZlcnRleFNoYWRlciIsICJtYWNyb0ZyYWdtZW50U2hhZGVyIik7CisgICAgaWYgKGV4
dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgaWYgKG1hY3JvRnJhZ21lbnRQcm9ncmFtKSB7Cisg
ICAgICAgICAgICAvLyBFeHBlY3RlZCByZXN1bHQKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdM
X0VYVF9mcmFnX2RlcHRoIGRlZmluZWQgaW4gc2hhZGVycyB3aGVuIGV4dGVuc2lvbiBpcyBlbmFi
bGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJHTF9FWFRf
ZnJhZ19kZXB0aCBub3QgZGVmaW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9uIGlzIGVuYWJs
ZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtYWNyb0ZyYWdtZW50
UHJvZ3JhbSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR0xfRVhUX2ZyYWdfZGVwdGggZGVm
aW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJHTF9FWFRfZnJhZ19kZXB0aCBub3QgZGVm
aW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9uIGRpc2FibGVkIik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBBbHdheXMgZXhwZWN0IHRoZSBzaGFkZXIgbWlzc2luZyB0aGUgI3ByYWdt
YSB0byBmYWlsICh3aGV0aGVyIGVuYWJsZWQgb3Igbm90KQorICAgIHZhciBtaXNzaW5nUHJhZ21h
RnJhZ21lbnRQcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtRnJvbVNjcmlwdEV4cGVjdEVycm9yKGds
LCAiZ29vZFZlcnRleFNoYWRlciIsICJtaXNzaW5nUHJhZ21hRnJhZ21lbnRTaGFkZXIiKTsKKyAg
ICBpZiAobWlzc2luZ1ByYWdtYUZyYWdtZW50UHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJTaGFkZXIgYnVpbHQtaW5zIGFsbG93ZWQgd2l0aG91dCAjZXh0ZW5zaW9uIHByYWdtYSIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlNoYWRlciBidWlsdC1pbnMgZGlzYWxs
b3dlZCB3aXRob3V0ICNleHRlbnNpb24gcHJhZ21hIik7CisgICAgfQorCisgICAgLy8gVHJ5IHRv
IGNvbXBpbGUgYSBzaGFkZXIgdXNpbmcgdGhlIGJ1aWx0LWlucyB0aGF0IHNob3VsZCBvbmx5IHN1
Y2NlZWQgaWYgZW5hYmxlZAorICAgIHZhciB0ZXN0RnJhZ21lbnRQcm9ncmFtID0gd3R1LmxvYWRQ
cm9ncmFtRnJvbVNjcmlwdEV4cGVjdEVycm9yKGdsLCAiZ29vZFZlcnRleFNoYWRlciIsICJ0ZXN0
RnJhZ21lbnRTaGFkZXIiKTsKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICBp
ZiAodGVzdEZyYWdtZW50UHJvZ3JhbSkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hhZGVy
IGJ1aWx0LWlucyBjb21waWxlZCBzdWNjZXNzZnVsbHkgd2hlbiBleHRlbnNpb24gZW5hYmxlZCIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hhZGVyIGJ1aWx0
LWlucyBmYWlsZWQgdG8gY29tcGlsZSB3aGVuIGV4dGVuc2lvbiBlbmFibGVkIik7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodGVzdEZyYWdtZW50UHJvZ3JhbSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2hhZGVyIGJ1aWx0LWlucyBjb21waWxlZCBzdWNjZXNzZnVs
bHkgd2hlbiBleHRlbnNpb24gZGlzYWJsZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlNoYWRlciBidWlsdC1pbnMgZmFpbGVkIHRvIGNvbXBpbGUgd2hlbiBl
eHRlbnNpb24gZGlzYWJsZWQiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVu
T3V0cHV0VGVzdHMoKSB7CisgICAgdmFyIGUgPSAyOyAvLyBBbW91bnQgb2YgdmFyaWFuY2UgdG8g
YWxsb3cgaW4gcmVzdWx0IHBpeGVscyAtIG1heSBuZWVkIHRvIGJlIHR3ZWFrZWQgaGlnaGVyCisK
KyAgICBkZWJ1ZygiVGVzdGluZyB2YXJpb3VzIGRyYXdzIGZvciB2YWxpZCBidWlsdC1pbiBmdW5j
dGlvbiBiZWhhdmlvciIpOworCisgICAgY2FudmFzLndpZHRoID0gNTA7IGNhbnZhcy5oZWlnaHQg
PSA1MDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworCisgICAgLy8gRW5hYmxlIGRlcHRoIHRlc3Rpbmcgd2l0aCBhIGNsZWFyRGVwdGggb2YgMC41
CisgICAgLy8gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IGZyYWdtZW50cyBhcmUgb25seSByZW5kZXJl
ZCB3aGVuCisgICAgLy8gZ2xfZnJhZ0RlcHRoRVhUIGlzIDwgMC41CisgICAgZ2wuY2xlYXJEZXB0
aCgwLjUpOworICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKworICAgIHZhciBwb3NpdGlv
bkxvYyA9IDA7CisgICAgdmFyIHRleGNvb3JkTG9jID0gMTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFsib3V0cHV0VmVydGV4U2hhZGVyIiwgIm91dHB1dEZyYWdtZW50
U2hhZGVyIl0sIFsndlBvc2l0aW9uJ10sIFswXSk7CisgICAgdmFyIHF1YWRQYXJhbWV0ZXJzID0g
d3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworICAgIHZhciBkZXB0aFVuaWZvcm0gPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVEZXB0aCIpOworCisgICAgLy8gRHJhdyAxOiBH
cmVhdGVyIHRoYW4gY2xlYXIgZGVwdGgKKyAgICBnbC51bmlmb3JtMWYoZGVwdGhVbmlmb3JtLCAx
LjApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbMjU1LCAyNTUs
IDI1NSwgMjU1XSk7CisKKyAgICAvLyBEcmF3IDI6IExlc3MgdGhhbiBjbGVhciBkZXB0aAorICAg
IGdsLnVuaWZvcm0xZihkZXB0aFVuaWZvcm0sIDAuMCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQsIFsyNTUsIDAsIDAsIDI1NV0pOworfQorCitmdW5jdGlvbiBydW5V
bmlxdWVPYmplY3RUZXN0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGdldEV4dGVuc2lv
bigpIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSIpOworICAgIGV4dCA9IG51bGw7
CisgICAgZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfZnJhZ19kZXB0aCIpLm15UHJvcGVydHkgPSAyOwor
ICAgIHdlYmdsSGFybmVzc0NvbGxlY3RHYXJiYWdlKCk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEV4
dGVuc2lvbigiRVhUX2ZyYWdfZGVwdGgiKS5teVByb3BlcnR5JywgJzInKTsKK30KKworZnVuY3Rp
b24gcnVuRGVmZXJyZWRMaW5rVGVzdHMoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIGRlZmVycmVkIHNoYWRlciBjb21waWxhdGlvbiB0ZXN0cy4iKTsKKworICAgIC8vIFRl
c3QgZm9yIGNvbXBpbGF0aW9uIGZhaWx1cmVzIHRoYXQgYXJlIGNhdXNlZCBieSBtaXNzaW5nIGV4
dGVuc2lvbnMKKyAgICAvLyBkbyBub3Qgc3VjY2VlZCBpZiBleHRlbnNpb25zIGFyZSBlbmFibGVk
IGR1cmluZyBsaW5raW5nLiBUaGlzIHdvdWxkCisgICAgLy8gb25seSBoYXBwZW4gZm9yIGRlZmVy
cmVkIHNoYWRlciBjb21waWxhdGlvbnMuCisKKyAgICAvLyBGaXJzdCB0ZXN0IGlmIGxpbmsgc3Vj
Y2VlZHMgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4KKyAgICB2YXIgZ2xFbmFibGVkID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgpOworICAgIHZhciBleHRFbmFibGVkID0gZ2xFbmFibGVkLmdldEV4dGVu
c2lvbigiRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBpZiAoIWV4dEVuYWJsZWQpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiRGVmZXJyZWQgbGluayB0ZXN0IGV4cGVjdHMgdGhlIGV4dGVuc2lvbiB0byBi
ZSBzdXBwb3J0ZWQiKTsKKyAgICB9CisKKyAgICB2YXIgdmVydGV4U2hhZGVyID0gd3R1LmxvYWRT
aGFkZXJGcm9tU2NyaXB0KGdsRW5hYmxlZCwgImdvb2RWZXJ0ZXhTaGFkZXIiKTsKKyAgICB2YXIg
ZnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2xFbmFibGVkLCAibWFj
cm9GcmFnbWVudFNoYWRlciIpOworCisgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIgfHwgIWZyYWdtZW50
U2hhZGVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZ29vZCBzaGFk
ZXJzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsRW5hYmxlZCwgW3ZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXJdKTsK
KworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlvbiB3
aXRoIGV4dGVuc2lvbiBlbmFibGVkIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIENyZWF0ZSBuZXcgY29udGV4dCB0byB0ZXN0IGxpbmsgZmFpbHVyZSB3aXRob3V0
IGV4dGVuc2lvbiBlbmFibGVkLgorICAgIHZhciBnbERlZmVycmVkID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgpOworCisgICAgdmFyIHZlcnRleFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlw
dChnbERlZmVycmVkLCAiZ29vZFZlcnRleFNoYWRlciIsIGdsRGVmZXJyZWQuVkVSVEVYX1NIQURF
UiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpOworICAgIHZhciBmcmFnbWVudFNoYWRlciA9
IHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbERlZmVycmVkLCAibWFjcm9GcmFnbWVudFNoYWRl
ciIsIGdsRGVmZXJyZWQuRlJBR01FTlRfU0hBREVSLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1
ZSk7CisKKyAgICBpZiAodmVydGV4U2hhZGVyID09IG51bGwgfHwgZnJhZ21lbnRTaGFkZXIgPT0g
bnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIHNoYWRlcnMuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTaGFkZXIgY29tcGlsYXRpb25zIHNo
b3VsZCBoYXZlIGZhaWxlZCBkdWUgdG8gZXh0ZW5zaW9ucyBub3QgZW5hYmxlZC4KKyAgICBnbERl
ZmVycmVkLmdldEV4dGVuc2lvbigiRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICB2YXIgcHJvZ3JhbSA9
IHd0dS5zZXR1cFByb2dyYW0oZ2xEZWZlcnJlZCwgW3ZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFk
ZXJdKTsKKyAgICBpZiAocHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlv
biB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCB0aGVuIGxpbmtpbmcgd2l0aCBleHRlbnNpb24gZW5h
YmxlZCBzaG91bGQgaGF2ZSBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB0ZXN0UGFzc2VkKCJDb21waWxhdGlvbiB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCB0aGVuIGxp
bmtpbmcgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4iKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL2V4dC1zUkdCLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1zUkdCLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2U4MzUzZjdmMjJjYTgyZjgzOGQ2OTZmNDViYmYyNzU2NTI2YjQzNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXNSR0IuaHRtbApAQCAtMCwwICsxLDQ2OCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjE2IiBoZWlnaHQ9
IjE2IiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Ij48L2NhbnZhcz4KKworPCEtLSBTaGFkZXJzIHRvIHRlc3Qgb3V0cHV0IC0tPgorPHNj
cmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjNCBhUG9zaXRpb247Cit2b2lkIG1haW4oKSB7CisgIGdsX1Bvc2l0aW9uID0gYVBvc2l0
aW9uOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBm
bG9hdCB1Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQodUNvbG9y
LCB1Q29sb3IsIHVDb2xvciwgMSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwor
YXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IHRl
eENvb3JkMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1w
bGVyMkQgdGV4OwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7Cit9Cis8L3NjcmlwdD4KKwor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGNhbnZhczsKK3ZhciBnbDsKK3ZhciBleHQgPSBudWxsOworCit2YXIgZXh0Q29uc3RhbnRzID0g
eworICAiU1JHQl9FWFQiOiAweDhDNDAsCisgICJTUkdCX0FMUEhBX0VYVCI6IDB4OEM0MiwKKyAg
IlNSR0I4X0FMUEhBOF9FWFQiOiAweDhDNDMsCisgICJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NP
TE9SX0VOQ09ESU5HX0VYVCI6IDB4ODIxMAorfTsKKworZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKCkg
eworICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIkVYVF9zUkdCIik7Cit9CisKK2Z1bmN0aW9uIGxp
c3RzRXh0ZW5zaW9uKCkgeworICB2YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucygpOworICByZXR1cm4gKHN1cHBvcnRlZC5pbmRleE9mKCJFWFRfc1JHQiIpID49IDApOwor
fQorCitmdW5jdGlvbiB0b1ZlYzNTdHJpbmcodmFsKSB7CisgIGlmICh0eXBlb2YodmFsKSA9PSAn
bnVtYmVyJykgeworICAgIHJldHVybiB0b1ZlYzNTdHJpbmcoW3ZhbCwgdmFsLCB2YWxdKTsKKyAg
fQorICByZXR1cm4gJ1snICsgdmFsWzBdICsgJywgJyArIHZhbFsxXSArICcsICcgKyB2YWxbMl0g
KyAnXSc7Cit9CisKK3ZhciBlID0gMjsgLy8gQW1vdW50IG9mIHZhcmlhbmNlIHRvIGFsbG93IGlu
IHJlc3VsdCBwaXhlbHMgLSBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIGhpZ2hlcgorCitmdW5jdGlv
biBleHBlY3RSZXN1bHQodGFyZ2V0KSB7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsCisgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihnbC5kcmF3aW5nQnVmZmVyV2lkdGggLyAyKSwK
KyAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQg
LyAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgIDEs
CisgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldCwgdGFyZ2V0LCB0YXJnZXQsIDI1NV0sCisg
ICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAgIGUp
OworfQorCitmdW5jdGlvbiBjcmVhdGVHcmV5c1JHQlRleHR1cmUoZ2wsIGNvbG9yLCBmb3JtYXQp
IHsKKyAgdmFyIG51bVBpeGVscyA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aCAqIGdsLmRyYXdpbmdC
dWZmZXJIZWlnaHQ7CisgIHZhciBlbGVtZW50czsKKyAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBj
YXNlIGV4dC5TUkdCX0VYVDogZWxlbWVudHMgPSAzOyBicmVhazsKKyAgICBjYXNlIGV4dC5TUkdC
X0FMUEhBX0VYVDogZWxlbWVudHMgPSA0OyBicmVhazsKKyAgICBkZWZhdWx0OiByZXR1cm4gbnVs
bDsKKyAgfQorCisgIHZhciBzaXplID0gbnVtUGl4ZWxzICogZWxlbWVudHM7CisgIHZhciBidWYg
PSBuZXcgVWludDhBcnJheShzaXplKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG51bVBpeGVs
czsgKytpaSkgeworICAgIHZhciBvZmYgPSBpaSAqIGVsZW1lbnRzOworICAgIGJ1ZltvZmYgKyAw
XSA9IGNvbG9yOworICAgIGJ1ZltvZmYgKyAxXSA9IGNvbG9yOworICAgIGJ1ZltvZmYgKyAyXSA9
IGNvbG9yOworICAgIGlmIChmb3JtYXQgPT0gZXh0LlNSR0JfQUxQSEFfRVhUKSB7CisgICAgICBi
dWZbb2ZmICsgM10gPSAyNTU7CisgICAgfQorICB9CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgZm9ybWF0LAorICAgICAgICAgICAgICAgIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwKKyAgICAg
ICAgICAgICAgICBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0LAorICAgICAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgIGdsLlVOU0lHTkVEX0JZVEUs
CisgICAgICAgICAgICAgICAgYnVmKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICByZXR1cm4gdGV4OworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRGb3JtYXQoZm4sIGludGVybmFsRm9ybWF0LCBmb3JtYXROYW1lLCBlbmFibGVkKSB7
CisgIGlmIChlbmFibGVkKSB7CisgICAgZm4oaW50ZXJuYWxGb3JtYXQpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAid2FzIGFibGUgdG8gY3JlYXRlIHR5cGUgIiAr
IGZvcm1hdE5hbWUpOworICB9IGVsc2UgeworICAgIHRlc3RJbnZhbGlkRm9ybWF0KGZuLCBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0TmFtZSwgZW5hYmxlZCk7CisgIH0KK30KKworZnVuY3Rpb24gdGVz
dEludmFsaWRGb3JtYXQoZm4sIGludGVybmFsRm9ybWF0LCBmb3JtYXROYW1lLCBlbmFibGVkKSB7
CisgIGZuKGludGVybmFsRm9ybWF0KTsKKyAgdmFyIGVyciA9IGdsLmdldEVycm9yKCk7CisgIGlm
IChlcnIgPT0gZ2wuTk9fRVJST1IpIHsKKyAgICB0ZXN0RmFpbGVkKCJzaG91bGQgTk9UIGJlIGFi
bGUgdG8gY3JlYXRlIHR5cGUgIiArIGZvcm1hdE5hbWUpOworICB9IGVsc2UgaWYgKGVyciA9PSBn
bC5JTlZBTElEX0VOVU0gfHwgZXJyID09IGdsLklOVkFMSURfVkFMVUUpIHsKKyAgICB0ZXN0UGFz
c2VkKCJub3QgYWJsZSB0byBjcmVhdGUgaW52YWxpZCBmb3JtYXQ6ICIgKyBmb3JtYXROYW1lKTsK
KyAgfQorfQorCit2YXIgdGV4dHVyZUZvcm1hdEZpeHR1cmUgPSB7CisgIGRlc2M6ICJDaGVja2lu
ZyB0ZXh0dXJlIGZvcm1hdHMiLAorICBjcmVhdGU6IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIHZh
ciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvLyBsZXZlbAorICAgICAgICAgICAgICAg
ICAgZm9ybWF0LCAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxGb3JtYXQKKyAgICAgICAgICAg
ICAgICAgIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgIC8vIHdpZHRoCisgICAgICAgICAgICAgICAg
ICBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0LCAvLyBoZWlnaHQKKyAgICAgICAgICAgICAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgIC8vIGJvcmRlcgorICAgICAgICAgICAgICAgICAgZm9ybWF0
LCAgICAgICAgICAgICAgICAgLy8gZm9ybWF0CisgICAgICAgICAgICAgICAgICBnbC5VTlNJR05F
RF9CWVRFLCAgICAgICAvLyB0eXBlCisgICAgICAgICAgICAgICAgICBudWxsKTsgICAgICAgICAg
ICAgICAgICAvLyBkYXRhCisgIH0sCisgIHRlc3RzOiBbCisgICAgeworICAgICAgZGVzYzogIkNo
ZWNraW5nIHZhbGlkIGZvcm1hdHMiLAorICAgICAgZm46IHRlc3RWYWxpZEZvcm1hdCwKKyAgICAg
IGZvcm1hdHM6IFsgJ1NSR0JfRVhUJywgJ1NSR0JfQUxQSEFfRVhUJyBdCisgICAgfSwKKyAgICB7
CisgICAgICBkZXNjOiAiQ2hlY2tpbmcgaW52YWxpZCBmb3JtYXRzIiwKKyAgICAgIGZuOiB0ZXN0
SW52YWxpZEZvcm1hdCwKKyAgICAgIGZvcm1hdHM6IFsgJ1NSR0I4X0FMUEhBOF9FWFQnIF0KKyAg
ICB9CisgIF0KK307CisKK3ZhciByZW5kZXJidWZmZXJGb3JtYXRGaXh0dXJlID0geworICBkZXNj
OiAiQ2hlY2tpbmcgcmVuZGVyYnVmZmVyIGZvcm1hdHMiLAorICBjcmVhdGU6IGZ1bmN0aW9uKGZv
cm1hdCkgeworICAgIHZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICBnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOworICB9
LAorICB0ZXN0czogWworICAgIHsKKyAgICAgIGRlc2M6ICJDaGVja2luZyB2YWxpZCBmb3JtYXRz
IiwKKyAgICAgIGZuOiB0ZXN0VmFsaWRGb3JtYXQsCisgICAgICBmb3JtYXRzOiBbICdTUkdCOF9B
TFBIQThfRVhUJyBdCisgICAgfSwKKyAgICB7CisgICAgICBkZXNjOiAiQ2hlY2tpbmcgaW52YWxp
ZCBmb3JtYXRzIiwKKyAgICAgIGZuOiB0ZXN0SW52YWxpZEZvcm1hdCwKKyAgICAgIGZvcm1hdHM6
IFsgJ1NSR0JfRVhUJywgJ1NSR0JfQUxQSEFfRVhUJyBdCisgICAgfQorICBdCit9OworCisKK2Rl
c2NyaXB0aW9uKCJUZXN0IHNSR0IgdGV4dHVyZSBzdXBwb3J0Iik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCitjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7CitnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2lmICgh
Z2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsK
KyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVn
KCJDaGVja2luZyBzUkdCIHRleHR1cmUgc3VwcG9ydCB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCIp
OworCisgIHJ1bkZvcm1hdFRlc3QodGV4dHVyZUZvcm1hdEZpeHR1cmUsIGZhbHNlKTsKKyAgcnVu
Rm9ybWF0VGVzdChyZW5kZXJidWZmZXJGb3JtYXRGaXh0dXJlLCBmYWxzZSk7CisKKyAgZGVidWco
IiIpOworICBkZWJ1ZygiQ2hlY2tpbmcgc1JHQiB0ZXh0dXJlIHN1cHBvcnQiKTsKKworICAvLyBR
dWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNj
ZXNzIGl0CisgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigiRVhUX3NSR0IiKTsKKworICBpZiAoIWV4
dCkgeworICAgIHRlc3RQYXNzZWQoIk5vIEVYVF9zUkdCIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdh
bCIpOworCisgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgZmluaXNoVGVzdCgpOwor
ICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIEVYVF9zUkdC
IGV4dGVuc2lvbiIpOworCisgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKworICAgIGdsLnZp
ZXdwb3J0KDAsIDAsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdo
dCk7CisKKyAgICBydW5Db25zdGFudHNUZXN0KCk7CisgICAgcnVuRm9ybWF0VGVzdCh0ZXh0dXJl
Rm9ybWF0Rml4dHVyZSwgdHJ1ZSk7CisgICAgcnVuRm9ybWF0VGVzdChyZW5kZXJidWZmZXJGb3Jt
YXRGaXh0dXJlLCB0cnVlKTsKKyAgICBydW5UZXh0dXJlUmVhZENvbnZlcnNpb25UZXN0KCk7Cisg
ICAgcnVuRnJhbWVidWZmZXJUZXh0dXJlQ29udmVyc2lvblRlc3QoZXh0LlNSR0JfRVhUKTsKKyAg
ICBydW5GcmFtZWJ1ZmZlclRleHR1cmVDb252ZXJzaW9uVGVzdChleHQuU1JHQl9BTFBIQV9FWFQp
OworICAgIHJ1bkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyQ29udmVyc2lvblRlc3QoKTsKKyAgICBy
dW5HZW5lcmF0ZU1pcG1hcFRlc3QoKTsKKyAgICBydW5Mb2FkRnJvbUltYWdlVGVzdChmdW5jdGlv
bigpIHsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9KTsKKyAgfQorfQorCitmdW5jdGlvbiBy
dW5Db25zdGFudHNUZXN0KCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBleHRl
bnNpb24gY29uc3RhbnRzIHZhbHVlcyIpOworCisgIGZvciAodmFyIGNvbnN0YW50IGluIGV4dENv
bnN0YW50cykgeworICAgIGlmIChjb25zdGFudCBpbiBleHQpIHsKKyAgICAgIGlmIChleHRDb25z
dGFudHNbY29uc3RhbnRdICE9IGV4dFtjb25zdGFudF0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
VmFsdWUgb2YgIiArIGNvbnN0YW50ICsgIiBzaG91bGQgYmU6ICIgKyBleHRDb25zdGFudHNbY29u
c3RhbnRdICsgIiwgd2FzOiAiICsgZXh0W2NvbnN0YW50XSk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJWYWx1ZSBvZiAiICsgY29uc3RhbnQgKyAiIHdhcyBleHBlY3RlZCB2
YWx1ZTogIiArIGV4dENvbnN0YW50c1tjb25zdGFudF0pOworICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICB0ZXN0RmFpbGVkKGNvbnN0YW50ICsgIiBub3QgZm91bmQgaW4gZXh0ZW5zaW9uIG9i
amVjdCIpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVu
c2lvbkVuYWJsZWQpIHsKKyAgaWYgKGxpc3RzRXh0ZW5zaW9uKCkpIHsKKyAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCkgeworICAgICAgdGVzdFBhc3NlZCgiRVhUX3NSR0IgbGlzdGVkIGFzIHN1cHBv
cnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgIH0gZWxzZSB7CisgICAgICB0
ZXN0RmFpbGVkKCJFWFRfc1JHQiBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24g
ZmFpbGVkIik7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7
CisgICAgICB0ZXN0RmFpbGVkKCJFWFRfc1JHQiBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQg
Z2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2Vk
KCJFWFRfc1JHQiBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxl
ZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkZvcm1h
dFRlc3QoZml4dHVyZSwgZW5hYmxlZCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKGZpeHR1cmUu
ZGVzYyk7CisKKyAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IGZpeHR1cmUudGVzdHMubGVuZ3RoOyAr
K3R0KSB7CisgICAgdmFyIHRlc3QgPSBmaXh0dXJlLnRlc3RzW3R0XTsKKyAgICBkZWJ1Zyh0ZXN0
LmRlc2MpOworCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3QuZm9ybWF0cy5sZW5ndGg7
ICsraWkpIHsKKyAgICAgIHZhciBmb3JtYXROYW1lID0gdGVzdC5mb3JtYXRzW2lpXTsKKyAgICAg
IHRlc3QuZm4oZml4dHVyZS5jcmVhdGUsIGV4dENvbnN0YW50c1tmb3JtYXROYW1lXSwgImV4dC4i
ICsgZm9ybWF0TmFtZSwgZW5hYmxlZCk7CisgICAgfQorCisgICAgaWYgKHR0ICE9IGZpeHR1cmUu
dGVzdHMubGVuZ3RoIC0gMSkKKyAgICAgIGRlYnVnKCIiKTsKKyAgfQorfQorCitmdW5jdGlvbiBy
dW5UZXh0dXJlUmVhZENvbnZlcnNpb25UZXN0KCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJU
ZXN0IHRoZSBjb252ZXJzaW9uIG9mIGNvbG9ycyBmcm9tIHNSR0IgdG8gbGluZWFyIG9uIHRleHR1
cmUgcmVhZCIpOworCisgIC8vIERyYXcKKyAgdmFyIGNvbnZlcnNpb25zID0gWworICAgIFsgICAw
LCAgIDAgXSwKKyAgICBbICA2MywgIDEzIF0sCisgICAgWyAxMjcsICA1NCBdLAorICAgIFsgMTkx
LCAxMzMgXSwKKyAgICBbIDI1NSwgMjU1IF0KKyAgXTsKKworICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFRleHR1cmVkUXVhZChnbCk7CisgIGdsLnVuaWZvcm0xaShnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInRleCIpLCAwKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29udmVy
c2lvbnMubGVuZ3RoOyBpaSsrKSB7CisgICAgdmFyIHRleCA9IGNyZWF0ZUdyZXlzUkdCVGV4dHVy
ZShnbCwgY29udmVyc2lvbnNbaWldWzBdLCBleHQuU1JHQl9FWFQpOworICAgIHd0dS5kcmF3VW5p
dFF1YWQoZ2wpOworICAgIGV4cGVjdFJlc3VsdChjb252ZXJzaW9uc1tpaV1bMV0pOworICB9Cit9
CisKK2Z1bmN0aW9uIHJ1bkZyYW1lYnVmZmVyVGV4dHVyZUNvbnZlcnNpb25UZXN0KGZvcm1hdCkg
eworICB2YXIgZm9ybWF0U3RyaW5nOworICB2YXIgdmFsaWRGb3JtYXQ7CisgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgY2FzZSBleHQuU1JHQl9FWFQ6IGZvcm1hdFN0cmluZyA9ICJzUkdCIjsgdmFs
aWRGb3JtYXQgPSBmYWxzZTsgYnJlYWs7CisgICAgY2FzZSBleHQuU1JHQl9BTFBIQV9FWFQ6IGZv
cm1hdFN0cmluZyA9ICJzUkdCX0FMUEhBIjsgdmFsaWRGb3JtYXQgPSB0cnVlOyBicmVhazsKKyAg
ICBkZWZhdWx0OiByZXR1cm4gbnVsbDsKKyAgfQorICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0
ICIgKyBmb3JtYXRTdHJpbmcgKyAiIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnRzLiIgKyAodmFsaWRG
b3JtYXQgPyAiIiA6ICIgKEludmFsaWQpIikpOworCisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyd2ZXJ0ZXhTaGFkZXInLCAnZnJhZ21lbnRTaGFkZXInXSwgWydhUG9zaXRp
b24nXSwgWzBdKTsKKyAgdmFyIHRleCA9IGNyZWF0ZUdyZXlzUkdCVGV4dHVyZShnbCwgMCwgZm9y
bWF0KTsKKyAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgs
IDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgc2hvdWxk
QmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGV4dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HX0VYVCknLCAnZXh0LlNSR0JfRVhUJyk7CisKKyAgaWYgKHZhbGlkRm9ybWF0KSB7Cisg
ICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwg
ImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlRlc3QgdGhlIGNvbnZlcnNpb24gb2YgY29sb3JzIGZyb20gbGluZWFyIHRvICIgKyBmb3JtYXRT
dHJpbmcgKyAiIG9uIGZyYW1lYnVmZmVyICh0ZXh0dXJlKSB3cml0ZSIpOworCisgICAgLy8gRHJh
dworICAgIHZhciBjb252ZXJzaW9ucyA9IFsKKyAgICAgIFsgICAwLCAgIDAgXSwKKyAgICAgIFsg
IDEzLCAgNjMgXSwKKyAgICAgIFsgIDU0LCAxMjcgXSwKKyAgICAgIFsgMTMzLCAxOTEgXSwKKyAg
ICAgIFsgMjU1LCAyNTUgXQorICAgIF07CisKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7
CisKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29udmVyc2lvbnMubGVuZ3RoOyBpaSsrKSB7
CisgICAgICBnbC51bmlmb3JtMWYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29s
b3IiKSwgY29udmVyc2lvbnNbaWldWzBdLzI1NS4wKTsKKyAgICAgIHd0dS5kcmF3VW5pdFF1YWQo
Z2wsIFswLCAwLCAwLCAwXSk7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisgICAgICBleHBlY3RSZXN1bHQoY29udmVyc2lvbnNbaWldWzFdKTsKKyAgICB9Cisg
IH0gZWxzZSB7CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCIpOworCisg
ICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDApOworICAgIGdsLnVuaWZvcm0xZihnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvciIpLCAwLjUpOworICAgIHd0dS5kcmF3VW5pdFF1
YWQoZ2wsIFswLCAwLCAwLCAwXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICB9CisKKyAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKK30KKworZnVuY3Rpb24gcnVuRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJDb252ZXJzaW9uVGVzdCgpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGVzdCB0
aGUgY29udmVyc2lvbiBvZiBjb2xvcnMgZnJvbSBsaW5lYXIgdG8gc1JHQiBvbiBmcmFtZWJ1ZmZl
ciAocmVuZGVyYnVmZmVyKSB3cml0ZSIpOworCisgIGZ1bmN0aW9uIGNyZWF0ZXNSR0JGcmFtZWJ1
ZmZlcihnbCwgd2lkdGgsIGhlaWdodCkgeworICAgIHZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsK
KyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZXh0LlNSR0I4X0FM
UEhBOF9FWFQsIHdpZHRoLCBoZWlnaHQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKKworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkVOREVSQlVGRkVSLCByYm8pOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIHNob3VsZEJlKCdn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBleHQuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElO
R19FWFQpJywgJ2V4dC5TUkdCX0VYVCcpOworICAgIHNob3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOwor
CisgICAgcmV0dXJuIGZibzsKKyAgfQorCisgIC8vIERyYXcKKyAgdmFyIGNvbnZlcnNpb25zID0g
WworICAgIFsgICAwLCAgIDAgXSwKKyAgICBbICAxMywgIDYzIF0sCisgICAgWyAgNTQsIDEyNyBd
LAorICAgIFsgMTMzLCAxOTEgXSwKKyAgICBbIDI1NSwgMjU1IF0KKyAgXTsKKworICB2YXIgcHJv
Z3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndmVydGV4U2hhZGVyJywgJ2ZyYWdtZW50U2hh
ZGVyJ10sIFsnYVBvc2l0aW9uJ10sIFswXSk7CisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsK
KyAgdmFyIGZibyA9IGNyZWF0ZXNSR0JGcmFtZWJ1ZmZlcihnbCwgZ2wuZHJhd2luZ0J1ZmZlcldp
ZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0KTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
Y29udmVyc2lvbnMubGVuZ3RoOyBpaSsrKSB7CisgICAgZ2wudW5pZm9ybTFmKGdsLmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yIiksIGNvbnZlcnNpb25zW2lpXVswXS8yNTUuMCk7
CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDBdKTsKKyAgICBleHBlY3RSZXN1
bHQoY29udmVyc2lvbnNbaWldWzFdKTsKKyAgfQorfQorCitmdW5jdGlvbiBydW5Mb2FkRnJvbUlt
YWdlVGVzdChjYWxsYmFjaykgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0cyB0byBlbnN1
cmUgdGhhdCBTUkdCIHRleHR1cmVzIGNhbiBzdWNjZXNzZnVsbHkgdXNlIGltYWdlIGVsZW1lbnRz
IGFzIHRoZWlyIHNvdXJjZSIpOworCisgIHZhciBpbWcgPSB3dHUubWFrZUltYWdlKCIuLi8uLi9y
ZXNvdXJjZXMvZ3JheS0xMDI0eDEwMjQuanBnIiwgZnVuY3Rpb24oKSB7CisgICAgdmFyIHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZXh0LlNSR0JfRVhULCBl
eHQuU1JHQl9FWFQsIGdsLlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBleHQuU1JHQl9BTFBIQV9FWFQsIGV4dC5TUkdCX0FMUEhBX0VYVCwgZ2wuVU5TSUdORURf
QllURSwgaW1nKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisK
KyAgICBjYWxsYmFjaygpOworICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJJbWFn
ZSBjb3VsZCBub3QgYmUgbG9hZGVkIik7CisgICAgY2FsbGJhY2soKTsKKyAgfSk7Cit9CisKK2Z1
bmN0aW9uIHJ1bkdlbmVyYXRlTWlwbWFwVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJHZW5lcmF0ZU1pcG1hcHMgZm9yIHNSR0IgdGV4dHVyZXMgaXMgZm9yYmlkZGVuIik7CisK
KyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleCk7CisKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGV4dC5TUkdCX0FMUEhBX0VYVCwgMiwgMiwgMCwgZXh0LlNSR0JfQUxQSEFfRVhULAorICAgICAg
ICAgICAgICAgICAgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVf
MkQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OKTsK
KworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvZXh0LXNoYWRlci10ZXh0dXJlLWxvZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtc2hhZGVy
LXRleHR1cmUtbG9kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxNzZiZDU5MDM3YTZkZTE0MGUxYmJlMWQ2
N2NjYWZlOTA1YjI4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXNoYWRlci10
ZXh0dXJlLWxvZC5odG1sCkBAIC0wLDAgKzEsMzQxIEBACivvu788IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiAy
NTZweDsgaGVpZ2h0OiAyNTZweDsiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczIiIHN0
eWxlPSJ3aWR0aDogMjU2cHg7IGhlaWdodDogMjU2cHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyB0ZXh0dXJlIExPRCBmdW5j
dGlvbnMgLS0+CisKKzwhLS0gU2hhZGVyIG9taXR0aW5nIHRoZSByZXF1aXJlZCAjZXh0ZW5zaW9u
IHByYWdtYSAtLT4KKzxzY3JpcHQgaWQ9Im1pc3NpbmdQcmFnbWFGcmFnbWVudFNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3Zhcnlp
bmcgdmVjMiB0ZXhDb29yZDB2OwordW5pZm9ybSBmbG9hdCBsb2Q7Cit1bmlmb3JtIHNhbXBsZXIy
RCB0ZXg7Cit2b2lkIG1haW4oKSB7CisgICAgdmVjNCBjb2xvciA9IHRleHR1cmUyRExvZEVYVCh0
ZXgsIHRleENvb3JkMHYsIGxvZCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3Nj
cmlwdD4KKworPCEtLSBTaGFkZXIgdG8gdGVzdCBtYWNybyBkZWZpbml0aW9uIC0tPgorPHNjcmlw
dCBpZD0ibWFjcm9GcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyNpZmRlZiBHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAw
LjApOworI2Vsc2UKKyAgICAvLyBFcnJvciBleHBlY3RlZAorICAgICNlcnJvciBubyBHTF9FWFRf
c2hhZGVyX3RleHR1cmVfbG9kOworI2VuZGlmCit9Cis8L3NjcmlwdD4KKworPCEtLSBTaGFkZXIg
d2l0aCByZXF1aXJlZCAjZXh0ZW5zaW9uIHByYWdtYSAtLT4KKzxzY3JpcHQgaWQ9InRlc3RGcmFn
bWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZXh0ZW5zaW9uIEdMX0VY
VF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
dmFyeWluZyB2ZWMyIHRleENvb3JkMHY7Cit1bmlmb3JtIGZsb2F0IGxvZDsKK3VuaWZvcm0gc2Ft
cGxlcjJEIHRleDsKK3ZvaWQgbWFpbigpIHsKKyAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJETG9k
RVhUKHRleCwgdGV4Q29vcmQwdiwgbG9kKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30K
Kzwvc2NyaXB0PgorCis8IS0tIFNoYWRlcnMgdG8gbGluayB3aXRoIHRlc3QgZnJhZ21lbnQgc2hh
ZGVycyAtLT4KKzxzY3JpcHQgaWQ9Imdvb2RWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIHRleENv
b3JkMDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDB2Owordm9pZCBtYWluKCkgeworICAgIHRleENv
b3JkMHYgPSB0ZXhDb29yZDA7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3Nj
cmlwdD4KKworPCEtLSBTaGFkZXJzIHRvIHRlc3Qgb3V0cHV0IC0tPgorPHNjcmlwdCBpZD0ib3V0
cHV0VmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVj
NCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzIgdGV4
Q29vcmQwdjsKK3ZvaWQgbWFpbigpIHsKKyAgICB0ZXhDb29yZDB2ID0gdGV4Q29vcmQwOworICAg
IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJvdXRw
dXRGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZXh0ZW5zaW9u
IEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiByZXF1aXJlCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDB2OwordW5pZm9ybSBmbG9hdCBsb2Q7Cit1bmlm
b3JtIHNhbXBsZXIyRCB0ZXg7Cit2b2lkIG1haW4oKSB7CisgICAgdmVjNCBjb2xvciA9IHRleHR1
cmUyRExvZEVYVCh0ZXgsIHRleENvb3JkMHYsIGxvZCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29s
b3I7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVy
aWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgZXh0
ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBleHQg
PSBudWxsOworCisvLyBSdW4gYWxsIHRlc3RzIG9uY2UuCitydW5BbGxUZXN0cygpOworCisvLyBS
dW4gYWxsIHRlc3RzIGFnYWluc3Qgd2l0aCBhIG5ldyBjb250ZXh0IHRvIHRlc3QgZm9yIGFueSBj
YWNoZSBpc3N1ZXMuCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBuZXcgY29udGV4dCB0byBj
YXRjaCBjYWNoZSBlcnJvcnMiKTsKK3ZhciBjYW52YXMyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNhbnZhczIiKTsKK2dsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMyKTsKK2V4dCA9
IG51bGw7CitydW5BbGxUZXN0cygpOworCitmdW5jdGlvbiBydW5BbGxUZXN0cygpIHsKKyAgICBp
ZiAoIWdsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhp
c3QiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4
aXN0cyIpOworCisgICAgICAgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZAor
ICAgICAgICBydW5TaGFkZXJUZXN0cyhmYWxzZSk7CisKKyAgICAgICAgLy8gUXVlcnkgdGhlIGV4
dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAorICAg
ICAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgaWYgKCFleHQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIk5vIEVYVF9zaGFkZXJf
dGV4dHVyZV9sb2Qgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICAgICAgICAgIHJ1
blN1cHBvcnRlZFRlc3QoZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVz
dFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCBleHRl
bnNpb24iKTsKKworICAgICAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKworICAgICAg
ICAgICAgcnVuU2hhZGVyVGVzdHModHJ1ZSk7CisgICAgICAgICAgICBydW5PdXRwdXRUZXN0cygp
OworICAgICAgICAgICAgcnVuVW5pcXVlT2JqZWN0VGVzdCgpOworICAgICAgICAgICAgcnVuUmVm
ZXJlbmNlQ3ljbGVUZXN0KCk7CisKKyAgICAgICAgICAgIC8vIFJ1biBkZWZlcnJlZCBsaW5rIHRl
c3RzLgorICAgICAgICAgICAgcnVuRGVmZXJyZWRMaW5rVGVzdHMoKTsKKyAgICAgICAgfQorICAg
IH0KKworfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lvbkVuYWJsZWQpIHsK
KyAgICB2YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICAgIGlm
IChzdXBwb3J0ZWQuaW5kZXhPZigiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpID49IDApIHsKKyAg
ICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9u
IHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNp
b24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxl
ZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1
blNoYWRlclRlc3RzKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRlc3RpbmcgdmFyaW91cyBzaGFkZXIgY29tcGlsZXMgd2l0aCBleHRlbnNpb24gIiArIChl
eHRlbnNpb25FbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIikpOworCisgICAgLy8gRXhw
ZWN0IHRoZSBtYWNybyBzaGFkZXIgdG8gc3VjY2VlZCBPTkxZIGlmIGVuYWJsZWQKKyAgICB2YXIg
bWFjcm9GcmFnbWVudFByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhwZWN0RXJy
b3IoZ2wsICJnb29kVmVydGV4U2hhZGVyIiwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiKTsKKyAgICBp
ZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICBpZiAobWFjcm9GcmFnbWVudFByb2dyYW0p
IHsKKyAgICAgICAgICAgIC8vIEV4cGVjdGVkIHJlc3VsdAorICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCBkZWZpbmVkIGluIHNoYWRlcnMgd2hlbiBleHRl
bnNpb24gaXMgZW5hYmxlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCBub3QgZGVmaW5lZCBpbiBzaGFkZXJzIHdo
ZW4gZXh0ZW5zaW9uIGlzIGVuYWJsZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChtYWNyb0ZyYWdtZW50UHJvZ3JhbSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCBkZWZpbmVkIGluIHNoYWRlcnMgd2hlbiBleHRlbnNp
b24gaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2Qgbm90IGRlZmluZWQgaW4gc2hhZGVycyB3aGVu
IGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWx3YXlz
IGV4cGVjdCB0aGUgc2hhZGVyIG1pc3NpbmcgdGhlICNwcmFnbWEgdG8gZmFpbCAod2hldGhlciBl
bmFibGVkIG9yIG5vdCkKKyAgICB2YXIgbWlzc2luZ1ByYWdtYUZyYWdtZW50UHJvZ3JhbSA9IHd0
dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBlY3RFcnJvcihnbCwgImdvb2RWZXJ0ZXhTaGFkZXIi
LCAibWlzc2luZ1ByYWdtYUZyYWdtZW50U2hhZGVyIik7CisgICAgaWYgKG1pc3NpbmdQcmFnbWFG
cmFnbWVudFByb2dyYW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hhZGVyIGJ1aWx0LWlucyBh
bGxvd2VkIHdpdGhvdXQgI2V4dGVuc2lvbiBwcmFnbWEiKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJTaGFkZXIgYnVpbHQtaW5zIGRpc2FsbG93ZWQgd2l0aG91dCAjZXh0ZW5z
aW9uIHByYWdtYSIpOworICAgIH0KKworICAgIC8vIFRyeSB0byBjb21waWxlIGEgc2hhZGVyIHVz
aW5nIHRoZSBidWlsdC1pbnMgdGhhdCBzaG91bGQgb25seSBzdWNjZWVkIGlmIGVuYWJsZWQKKyAg
ICB2YXIgdGVzdEZyYWdtZW50UHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBl
Y3RFcnJvcihnbCwgImdvb2RWZXJ0ZXhTaGFkZXIiLCAidGVzdEZyYWdtZW50U2hhZGVyIik7Cisg
ICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgaWYgKHRlc3RGcmFnbWVudFByb2dy
YW0pIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNoYWRlciBidWlsdC1pbnMgY29tcGlsZWQg
c3VjY2Vzc2Z1bGx5IHdoZW4gZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNoYWRlciBidWlsdC1pbnMgZmFpbGVkIHRvIGNvbXBp
bGUgd2hlbiBleHRlbnNpb24gZW5hYmxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHRlc3RGcmFnbWVudFByb2dyYW0pIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlNoYWRlciBidWlsdC1pbnMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5IHdoZW4gZXh0ZW5zaW9uIGRp
c2FibGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaGFk
ZXIgYnVpbHQtaW5zIGZhaWxlZCB0byBjb21waWxlIHdoZW4gZXh0ZW5zaW9uIGRpc2FibGVkIik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bk91dHB1dFRlc3RzKCkgeworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB2YXJpb3VzIGRyYXdzIGZvciB2YWxpZCBi
dWlsdC1pbiBmdW5jdGlvbiBiZWhhdmlvciIpOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFBy
b2dyYW0oZ2wsIFsib3V0cHV0VmVydGV4U2hhZGVyIiwgIm91dHB1dEZyYWdtZW50U2hhZGVyIl0s
IFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddLCBbMCwgMV0pOworICAgIHZhciBxdWFkUGFyYW1l
dGVycyA9IHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICAgIHZhciBjb2xvcnMgPSBb
CisgICAgICAgIHtuYW1lOiAncmVkJywgY29sb3I6WzI1NSwgMCwgMCwgMjU1XX0sCisgICAgICAg
IHtuYW1lOiAnZ3JlZW4nLCBjb2xvcjpbMCwgMjU1LCAwLCAyNTVdfSwKKyAgICAgICAge25hbWU6
ICdibHVlJywgY29sb3I6WzAsIDAsIDI1NSwgMjU1XX0sCisgICAgICAgIHtuYW1lOiAneWVsbG93
JywgY29sb3I6WzI1NSwgMjU1LCAwLCAyNTVdfSwKKyAgICAgICAge25hbWU6ICdtYWdlbnRhJywg
Y29sb3I6WzI1NSwgMCwgMjU1LCAyNTVdfSwKKyAgICAgICAge25hbWU6ICdjeWFuJywgY29sb3I6
WzAsIDI1NSwgMjU1LCAyNTVdfSwKKyAgICAgICAge25hbWU6ICdwaW5rJywgY29sb3I6WzI1NSwg
MTI4LCAxMjgsIDI1NV19LAorICAgICAgICB7bmFtZTogJ2dyYXknLCBjb2xvcjpbMTI4LCAxMjgs
IDEyOCwgMjU1XX0sCisgICAgICAgIHtuYW1lOiAnbGlnaHQgZ3JlZW4nLCBjb2xvcjpbMTI4LCAy
NTUsIDEyOCwgMjU1XX0sCisgICAgXTsKKworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVT
VF9NSVBNQVBfTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5SRVBFQVQpOworICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCk7CisK
KyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29sb3JzLmxlbmd0aDsgKytpaSkgeworICAgICAg
ICB2YXIgY29sb3IgPSBjb2xvcnNbaWldOworICAgICAgICB2YXIgc2l6ZSA9IE1hdGgucG93KDIs
IGNvbG9ycy5sZW5ndGggLSBpaSAtIDEpOworICAgICAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRl
eCwgc2l6ZSwgc2l6ZSwgY29sb3IuY29sb3IsIGlpKTsKKyAgICB9CisKKyAgICB2YXIgbG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJsb2QiKTsKKworICAgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGdsLnVuaWZvcm0xZihs
b2MsIGlpKTsKKyAgICAgICAgdmFyIGNvbG9yID0gY29sb3JzW2lpXTsKKyAgICAgICAgd3R1LmRy
YXdVbml0UXVhZChnbCk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcygKKyAgICAgICAgICAgIGds
LCBjb2xvci5jb2xvciwKKyAgICAgICAgICAgICIyNTZ4MjU2IHRleHR1cmUgZHJhd24gdG8gMjU2
eDI1NiBkZXN0IHdpdGggbG9kID0gIiArIGlpICsKKyAgICAgICAgICAgICIgc2hvdWxkIGJlICIg
KyBjb2xvci5uYW1lKTsKKyAgICB9CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUik7Cit9CisKK2Z1bmN0aW9uIHJ1blVuaXF1ZU9iamVjdFRlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGdldEV4dGVuc2lvbigpIHJldHVybnMg
dGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSIpOworICAgIGV4dCA9IG51bGw7CisgICAgZ2wuZ2V0
RXh0ZW5zaW9uKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIikubXlQcm9wZXJ0eSA9IDI7CisgICAg
d2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0RXh0ZW5z
aW9uKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIikubXlQcm9wZXJ0eScsICcyJyk7Cit9CisKK2Z1
bmN0aW9uIHJ1blJlZmVyZW5jZUN5Y2xlVGVzdCgpCit7CisgICAgLy8gY3JlYXRlIHNvbWUgcmVm
ZXJlbmNlIGN5Y2xlcy4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIHRoZXkgY2F1c2UgbGVha3MuIFRo
ZSBwb2ludCBpcyB0aGF0CisgICAgLy8gc29tZSBicm93c2VyIHRlc3QgcnVubmVycyBoYXZlIGlu
c3RydW1lbnRhdGlvbiB0byBkZXRlY3QgbGVha2VkIHJlZmNvdW50ZWQgb2JqZWN0cy4KKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgcmVmZXJlbmNlIGN5Y2xlcyBiZXR3ZWVuIGNv
bnRleHQgYW5kIGV4dGVuc2lvbiBvYmplY3RzIik7CisgICAgdmFyIGV4dCA9IGdsLmdldEV4dGVu
c2lvbigiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOworCisgICAgLy8gY3JlYXRlIGN5Y2xlIGJl
dHdlZW4gZXh0ZW5zaW9uIGFuZCBjb250ZXh0LCBzaW5jZSB0aGUgY29udGV4dCBoYXMgdG8gaG9s
ZCBhIHJlZmVyZW5jZSB0byB0aGUgZXh0ZW5zaW9uCisgICAgZXh0LmNvbnRleHQgPSBnbDsKKwor
ICAgIC8vIGNyZWF0ZSBhIHNlbGYtY3ljbGUgb24gdGhlIGV4dGVuc2lvbiBvYmplY3QKKyAgICBl
eHQuZXh0ID0gZXh0OworfQorCitmdW5jdGlvbiBydW5EZWZlcnJlZExpbmtUZXN0cygpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZGVmZXJyZWQgc2hhZGVyIGNvbXBpbGF0
aW9uIHRlc3RzLiIpOworCisgICAgLy8gVGVzdCBmb3IgY29tcGlsYXRpb24gZmFpbHVyZXMgdGhh
dCBhcmUgY2F1c2VkIGJ5IG1pc3NpbmcgZXh0ZW5zaW9ucworICAgIC8vIGRvIG5vdCBzdWNjZWVk
IGlmIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgZHVyaW5nIGxpbmtpbmcuIFRoaXMgd291bGQKKyAg
ICAvLyBvbmx5IGhhcHBlbiBmb3IgZGVmZXJyZWQgc2hhZGVyIGNvbXBpbGF0aW9ucy4KKworICAg
IC8vIEZpcnN0IHRlc3QgaWYgbGluayBzdWNjZWVkcyB3aXRoIGV4dGVuc2lvbiBlbmFibGVkLgor
ICAgIHZhciBnbEVuYWJsZWQgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CisgICAgdmFyIGV4dEVu
YWJsZWQgPSBnbEVuYWJsZWQuZ2V0RXh0ZW5zaW9uKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7
CisgICAgaWYgKCFleHRFbmFibGVkKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkRlZmVycmVkIGxp
bmsgdGVzdCBleHBlY3RzIHRoZSBleHRlbnNpb24gdG8gYmUgc3VwcG9ydGVkIik7CisgICAgfQor
CisgICAgdmFyIHZlcnRleFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbEVuYWJs
ZWQsICJnb29kVmVydGV4U2hhZGVyIik7CisgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gd3R1Lmxv
YWRTaGFkZXJGcm9tU2NyaXB0KGdsRW5hYmxlZCwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiKTsKKwor
ICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlcikgeworICAgICAgICB0ZXN0
RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGdvb2Qgc2hhZGVycy4iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbEVuYWJsZWQs
IFt2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyXSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiQ29tcGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5hYmxlZCBm
YWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgbmV3IGNv
bnRleHQgdG8gdGVzdCBsaW5rIGZhaWx1cmUgd2l0aG91dCBleHRlbnNpb24gZW5hYmxlZC4KKyAg
ICB2YXIgZ2xEZWZlcnJlZCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKworICAgIHZhciB2ZXJ0
ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2xEZWZlcnJlZCwgImdvb2RWZXJ0
ZXhTaGFkZXIiLCBnbERlZmVycmVkLlZFUlRFWF9TSEFERVIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB0cnVlKTsKKyAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlckZyb21TY3Jp
cHQoZ2xEZWZlcnJlZCwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiLCBnbERlZmVycmVkLkZSQUdNRU5U
X1NIQURFUiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpOworCisgICAgaWYgKHZlcnRleFNo
YWRlciA9PSBudWxsIHx8IGZyYWdtZW50U2hhZGVyID09IG51bGwpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiQ291bGQgbm90IGNyZWF0ZSBzaGFkZXJzLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gU2hhZGVyIGNvbXBpbGF0aW9ucyBzaG91bGQgaGF2ZSBmYWlsZWQgZHVlIHRv
IGV4dGVuc2lvbnMgbm90IGVuYWJsZWQuCisgICAgZ2xEZWZlcnJlZC5nZXRFeHRlbnNpb24oIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dy
YW0oZ2xEZWZlcnJlZCwgW3ZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXJdKTsKKyAgICBpZiAo
cHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlvbiB3aXRoIGV4dGVuc2lv
biBkaXNhYmxlZCB0aGVuIGxpbmtpbmcgd2l0aCBleHRlbnNpb24gZW5hYmxlZCBzaG91bGQgaGF2
ZSBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJD
b21waWxhdGlvbiB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCB0aGVuIGxpbmtpbmcgd2l0aCBleHRl
bnNpb24gZW5hYmxlZC4iKTsKK30KKworZGVidWcoIiIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0
LXRleHR1cmUtY29tcHJlc3Npb24tYnB0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1j
b21wcmVzc2lvbi1icHRjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZlZDlkOWZkNzM1YWZlNDk3ZTYyY2Q5
NWFkNDRjNTdhNThkZmNjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtY29tcHJlc3Npb24tYnB0Yy5odG1sCkBAIC0wLDAgKzEsMTQzIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBFWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9icHRjIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxMSU5LIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEVYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2JwdGMgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIi
KTsKKwordmFyIHZhbGlkRm9ybWF0cyA9IHsKKyAgQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk1f
RVhUOiAweDhFOEMsCisgIENPTVBSRVNTRURfU1JHQl9BTFBIQV9CUFRDX1VOT1JNX0VYVDogMHg4
RThELAorICBDT01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQ6IDB4OEU4RSwKKyAg
Q09NUFJFU1NFRF9SR0JfQlBUQ19VTlNJR05FRF9GTE9BVF9FWFQ6IDB4OEU4RgorfTsKKworZnVu
Y3Rpb24gZXhwZWN0ZWRCeXRlTGVuZ3RoKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCkgeworICByZXR1
cm4gTWF0aC5jZWlsKHdpZHRoIC8gNCkgKiBNYXRoLmNlaWwoaGVpZ2h0IC8gNCkgKiAxNjsKK30K
KworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgeworICByZXR1cm4ge3dpZHRo
OiA0LCBoZWlnaHQ6IDR9OworfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY3R1
ID0gQ29tcHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXRE
ZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgp
OwordmFyIGV4dDsKKwordmFyIGZvcm1hdHMgPSBudWxsOworCitmdW5jdGlvbiBydW5UZXN0RXh0
ZW5zaW9uKCkgeworICAvLyBUZXN0IHRoYXQgZW51bSB2YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0
bHkgaW4gc3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRoZSBleHRlbnNpb24gb2JqZWN0LgorICBj
dHUudGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGdsLCB2YWxpZEZvcm1hdHMpOworICBjdHUu
dGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZvcm1hdHMpOworICAvLyBUZXN0
IHRoYXQgdGV4dHVyZSB1cGxvYWQgYnVmZmVyIHNpemUgaXMgdmFsaWRhdGVkIGNvcnJlY3RseS4K
KyAgY3R1LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0
cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpOworICAvLyBUZXN0IFRl
eFN1YkltYWdlIHZhbGlkYXRpb24gb24gZGltZW5zaW9ucworICAvLyBDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UqIHdpbGwgcmVzdWx0IGluIGFuCisgIC8vIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIG9u
bHkgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBvY2N1cnM6CisgIC8vICogPHdp
ZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0
PiBpcyBub3QKKyAgLy8gZXF1YWwgdG8gVEVYVFVSRV9XSURUSDsKKyAgLy8gKiA8aGVpZ2h0PiBp
cyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPGhlaWdodD4gcGx1cyA8eW9mZnNldD4gaXMK
KyAgLy8gICAgICAgICAgIG5vdCBlcXVhbCB0byBURVhUVVJFX0hFSUdIVDsgb3IKKyAgLy8gKiA8
eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuCisgIGN0dS50
ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxl
bmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zLAorICAgIDE2LCAxNiwgWworICAgICAgeyB4b2Zmc2V0
OiAwLCB5b2Zmc2V0OiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAorICAgICAgICBleHBlY3RhdGlv
bjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJoZWlnaHQgaXMgbm90IGEgbXVsdGlw
bGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDogMCwgeW9mZnNldDogMCwgd2lkdGg6IDMsIGhl
aWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNz
YWdlOiAid2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDog
MSwgeW9mZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246
IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAieG9mZnNldCBpcyBub3QgYSBtdWx0aXBs
ZSBvZiA0IiB9LAorICAgICAgeyB4b2Zmc2V0OiAwLCB5b2Zmc2V0OiAxLCB3aWR0aDogNCwgaGVp
Z2h0OiA0LAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3Nh
Z2U6ICJ5b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IHhvZmZzZXQ6
IDEyLCB5b2Zmc2V0OiAxMiwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRp
b246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQiIH0sCisgIF0pOworCisgIC8vIFRl
c3QgVGV4SW1hZ2UgdmFsaWRhdGlvbiBvbiBsZXZlbCBkaW1lbnNpb25zIGNvbWJpbmF0aW9ucy4K
KyAgLy8gV2hlbiBsZXZlbCBlcXVhbHMgMCwgd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgbXVs
dGlwbGUgb2YgNC4KKyAgLy8gV2hlbiBsZXZlbCBpcyBsYXJnZXIgdGhhbiAwLCB0aGlzIGNvbnN0
cmFpbnQgZG9lc24ndCBhcHBseS4KKyAgY3R1LnRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucyhn
bCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywK
KyAgICBbCisgICAgICB7IGxldmVsOiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAorICAgICAgICBl
eHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCBo
ZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgbGV2ZWw6IDAsIHdpZHRo
OiAzLCBoZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0aW9uOiBnbC5JTlZBTElEX09QRVJBVElP
TiwgbWVzc2FnZTogImxldmVsIGlzIDAsIHdpZHRoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0s
CisgICAgICB7IGxldmVsOiAwLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAorICAgICAgICBleHBlY3Rh
dGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBp
cyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAgeyBsZXZlbDogMCwgd2lkdGg6IDQsIGhl
aWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMg
dmFsaWQiIH0sCisgICAgICB7IGxldmVsOiAxLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAorICAgICAg
ICBleHBlY3RhdGlvbjogZ2wuTk9fRVJST1IsIG1lc3NhZ2U6ICJsZXZlbCA+IDAsIGlzIHZhbGlk
IiB9LAorICAgICAgeyBsZXZlbDogMiwgd2lkdGg6IDEsIGhlaWdodDogMSwKKyAgICAgICAgZXhw
ZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAibGV2ZWwgPiAwLCBpcyB2YWxpZCIgfSwK
KyAgXSk7CisKKyAgLy8gVGVzdCB0aGF0IEJQVEMgZW51bXMgYXJlIG5vdCBhY2NlcHRlZCBieSB0
ZXhJbWFnZTJECisgIHsKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKyAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQsIDQsIDQs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5P
Uk1fRVhUIGZhaWxzIHdpdGggdGV4SW1hZ2UyRCIpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX0JQVENfVU5PUk1fRVhULCA0
LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9CUFRDX1VOT1JNX0VYVCBmYWlscyB3aXRoIHRleEltYWdlMkQiKTsKKworICAgIGlmIChjb250
ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGV4dC5DT01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQsIDQsIDQsIDAsIGdsLlJH
QiwgZ2wuRkxPQVQsIG51bGwpOworICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJDT01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQgZmFp
bHMgd2l0aCB0ZXhJbWFnZTJEIik7CisKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZXh0LkNPTVBSRVNTRURfUkdCX0JQVENfVU5TSUdORURfRkxPQVRfRVhULCA0LCA0LCAw
LCBnbC5SR0IsIGdsLkZMT0FULCBudWxsKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9SR0JfQlBUQ19VTlNJR05FRF9GTE9B
VF9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisgICAgfQorCisgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXgpOworICB9Cit9OworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBpZiAoIWdsKSB7
CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICB9IGVsc2Ugewor
ICAgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgICBjdHUudGVzdENvbXByZXNz
ZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQoZ2wsIHZhbGlkRm9ybWF0
cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCA0KTsKKworICAgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigi
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpOworCisgICAgd3R1LnJ1bkV4dGVuc2lvblN1
cHBvcnRlZFRlc3QoZ2wsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiwgZXh0ICE9PSBu
dWxsKTsKKworICAgIGlmIChleHQgIT09IG51bGwpIHsKKyAgICAgIHJ1blRlc3RFeHRlbnNpb24o
KTsKKyAgICB9CisgIH0KK30KKworcnVuVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4
dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVy
ZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzc2ZDNlNDAyNDM1ZDg0ZDFi
ZTA0ZmExYzM3YTFlNDNlNTUxYWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQt
dGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApAQCAtMCwwICsxLDI2IEBACivvu788IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBF
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgY29udGV4dFZlcnNpb24gPSAx
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvZXh0LXRleHR1cmUtZmls
dGVyLWFuaXNvdHJvcGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZDlhOWJjNmRlMzQ5ODU1YTY1NGI3MTI3NjQ5N2E4OGJiNmY3Y2E2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwKQEAgLTAsMCAr
MSw5OSBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgRXh0ZW5zaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgcHNldWRv
UmFuZG9tID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciBzZWVkID0gMzsKKyAgICByZXR1cm4gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHNlZWQgPSAoc2VlZCAqIDExICsgMTcpICUgMjU7CisgICAgICAg
IHJldHVybiBzZWVkIC8gMjU7CisgICAgfTsKK30pKCk7CisKK3ZhciByYW5kb21pemVDYXNlID0g
ZnVuY3Rpb24oc3RyKSB7CisgICAgdmFyIG5ld0NoYXJzID0gW107CisgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHN0ci5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdmFyIGMgPSBzdHIuc3Vic3Ry
KGlpLCAxKTsKKyAgICAgICAgdmFyIG0gPSAocHNldWRvUmFuZG9tKCkgPiAwLjUpID8gYy50b0xv
d2VyQ2FzZSgpIDogYy50b1VwcGVyQ2FzZSgpOworICAgICAgICBuZXdDaGFycy5wdXNoKG0pOwor
ICAgIH0KKyAgICByZXR1cm4gbmV3Q2hhcnMuam9pbigiIik7Cit9OworCitkZXNjcmlwdGlvbigp
OworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52
YXMpOworCit2YXIgaWk7CisKK2RlYnVnKCJjaGVjayBldmVyeSBleHRlbnNpb24gYWR2ZXJ0aXNl
ZCBjYW4gYmUgZW5hYmxlZCIpOworZGVidWcoIiIpOwordmFyIGV4dGVuc2lvbk5hbWVzID0gZ2wu
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwordmFyIGV4dGVuc2lvbk5hbWVzTG93ZXIgPSBbXTsK
K2ZvciAoaWkgPSAwOyBpaSA8IGV4dGVuc2lvbk5hbWVzLmxlbmd0aDsgKytpaSkgeworICAgIGV4
dGVuc2lvbk5hbWVzTG93ZXIucHVzaChleHRlbnNpb25OYW1lc1tpaV0udG9Mb3dlckNhc2UoKSk7
Cit9CisKK2ZvciAoaWkgPSAwOyBpaSA8IGV4dGVuc2lvbk5hbWVzLmxlbmd0aDsgKytpaSkgewor
ICAgIHZhciBvcmlnaW5hbE5hbWUgPSBleHRlbnNpb25OYW1lc1tpaV07CisgICAgdmFyIG1peGVk
TmFtZSA9IHJhbmRvbWl6ZUNhc2Uob3JpZ2luYWxOYW1lKTsKKyAgICB2YXIgZXh0ZW5zaW9uID0g
Z2wuZ2V0RXh0ZW5zaW9uKG1peGVkTmFtZSk7CisgICAgYXNzZXJ0TXNnKGV4dGVuc2lvbiwgImFi
bGUgdG8gZ2V0ICIgKyBvcmlnaW5hbE5hbWUgKyAiIGFzICIgKyBtaXhlZE5hbWUpOworICAgIGlm
IChleHRlbnNpb24pIHsKKyAgICAgICAgdmFyIGtUZXN0U3RyaW5nID0gInRoaXMgaXMgYSB0ZXN0
IjsKKyAgICAgICAgdmFyIGtUZXN0TnVtYmVyID0gMTIzOworICAgICAgICB2YXIga1Rlc3RGdW5j
dGlvbiA9IGZ1bmN0aW9uKCkgeyB9OworICAgICAgICB2YXIga1Rlc3RPYmplY3QgPSB7IH07Cisg
ICAgICAgIGV4dGVuc2lvbi50ZXN0U3RyaW5nUHJvcGVydHkgPSBrVGVzdFN0cmluZzsKKyAgICAg
ICAgZXh0ZW5zaW9uLnRlc3ROdW1iZXJQcm9wZXJ0eSA9IGtUZXN0TnVtYmVyOworICAgICAgICBl
eHRlbnNpb24udGVzdEZ1bmN0aW9uUHJvcGVydHkgPSBrVGVzdEZ1bmN0aW9uOworICAgICAgICBl
eHRlbnNpb24udGVzdE9iamVjdFByb3BlcnR5ID0ga1Rlc3RPYmplY3Q7CisgICAgICAgIHdlYmds
SGFybmVzc0NvbGxlY3RHYXJiYWdlKCk7CisgICAgICAgIHZhciBleHRlbnNpb24yID0gZ2wuZ2V0
RXh0ZW5zaW9uKG9yaWdpbmFsTmFtZSk7CisgICAgICAgIGFzc2VydE1zZygKKyAgICAgICAgICAg
IGV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uMiwKKyAgICAgICAgICAgICJjYWxsaW5nIGdldEV4dGVu
c2lvbiB0d2ljZSBmb3IgdGhlIHNhbWUgZXh0ZW5zaW9uIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0
Iik7CisgICAgICAgIGFzc2VydE1zZygKKyAgICAgICAgICAgIGV4dGVuc2lvbjIudGVzdFN0cmlu
Z1Byb3BlcnR5ID09PSBrVGVzdFN0cmluZyAmJgorICAgICAgICAgICAgZXh0ZW5zaW9uMi50ZXN0
RnVuY3Rpb25Qcm9wZXJ0eSA9PT0ga1Rlc3RGdW5jdGlvbiAmJgorICAgICAgICAgICAgZXh0ZW5z
aW9uMi50ZXN0T2JqZWN0UHJvcGVydHkgPT09IGtUZXN0T2JqZWN0ICYmCisgICAgICAgICAgICBl
eHRlbnNpb24yLnRlc3ROdW1iZXJQcm9wZXJ0eSA9PT0ga1Rlc3ROdW1iZXIsCisgICAgICAgICAg
ICAib2JqZWN0IHJldHVybmVkIGJ5IDJuZCBjYWxsIHRvIGdldEV4dGVuc2lvbiBoYXMgc2FtZSBw
cm9wZXJ0aWVzIik7CisKKyAgICAgICAgdmFyIHByZWZpeGVkVmFyaWFudHMgPSB3dHUuZ2V0RXh0
ZW5zaW9uUHJlZml4ZWROYW1lcyhvcmlnaW5hbE5hbWUpOworICAgICAgICBmb3IgKHZhciBqaiA9
IDA7IGpqIDwgcHJlZml4ZWRWYXJpYW50cy5sZW5ndGg7ICsramopIHsKKyAgICAgICAgICAgIGFz
c2VydE1zZygKKyAgICAgICAgICAgICAgICBnbC5nZXRFeHRlbnNpb24ocHJlZml4ZWRWYXJpYW50
c1tqal0pID09PSBudWxsIHx8CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uTmFtZXNMb3dlci5p
bmRleE9mKHByZWZpeGVkVmFyaWFudHNbampdLnRvTG93ZXJDYXNlKCkpICE9PSAtMSwKKyAgICAg
ICAgICAgICAgICAiZ2V0RXh0ZW5zaW9uKCciICsgcHJlZml4ZWRWYXJpYW50c1tqal0gKyAiJykg
cmV0dXJucyBhbiBvYmplY3Qgb25seSBpZiB0aGUgbmFtZSBpcyByZXR1cm5lZCBieSBnZXRTdXBw
b3J0ZWRFeHRlbnNpb25zIik7CisgICAgICAgIH0KKyAgICB9CisgICAgZGVidWcoIiIpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMva2hyLXBhcmFsbGVsLXNoYWRlci1jb21waWxlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2toci1wYXJhbGxlbC1zaGFkZXItY29tcGlsZS5odG1sCmluZGV4IDJkYzA3
YjBiNzhiY2JhYzE3OGYzZTY2N2MzZDJkZWFiOWEzZDI2ZjguLjI5MTVhMmQyZGViN2U3NzIwMzQw
MzI5MTM3ZTYxY2Y2MWZiYTMyMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMva2hyLXBhcmFsbGVs
LXNoYWRlci1jb21waWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9raHItcGFyYWxsZWwtc2hhZGVy
LWNvbXBpbGUuaHRtbApAQCAtMTEsMzMgKzExLDYzIEBAIGZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+Cisuc3Bpbm5lciB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdo
dDogMTAwcHg7CisgICAgYm9yZGVyOiAyMHB4IHNvbGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRl
ci10b3A6IDIwcHggc29saWQgYmxhY2s7CisgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgcGFkZGluZzogMTBweDsKK30KK0BrZXlmcmFtZXMgcm90
YXRpb24geworICAgIGZyb20geyB0cmFuc29ybTogcm90YXRlKDApOyB9CisgICAgdG8geyB0cmFu
c2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9Cit9Cis8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+CiA8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8YnV0dG9uIG9uY2xpY2s9J2NvbXBpbGVTaGFk
ZXJzKCknPlRoZSBzcGlubmVycyBiZWxvdyBzaG91bGQgbm90IHN0dXR0ZXIgd2hlbiB5b3UgY2xp
Y2sgdGhpcyBidXR0b24uPC9idXR0b24+Cis8ZGl2IGNsYXNzPSJzcGlubmVyIiBzdHlsZT0iYW5p
bWF0aW9uOiByb3RhdGlvbiAycyBpbmZpbml0ZSBsaW5lYXI7Ij5DU1M8L2Rpdj4KKzxkaXYgY2xh
c3M9InNwaW5uZXIiIGlkPXNwaW5uZXI+SlM8L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotCis8Y2FudmFzIGlkPWNhbnZhcz48L2NhbnZhcz4KIDxzY3JpcHQ+CiAidXNlIHN0cmljdCI7
CiBkZXNjcmlwdGlvbigiVGVzdCBLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiKTsKIAorZnVu
Y3Rpb24gc3BpblNwaW5uZXIoKSB7CisgICAgbGV0IGRlZ3JlZXMgPSAocGVyZm9ybWFuY2Uubm93
KCkgLyAxMDAwIC8gMiAlIDEuKSAqIDM2MDsKKyAgICBzcGlubmVyLnN0eWxlLnRyYW5zZm9ybSA9
IGByb3RhdGUoJHtkZWdyZWVzfWRlZylgOworICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzcGlu
U3Bpbm5lcik7Cit9CitzcGluU3Bpbm5lcigpOworCiBjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGls
czsKIAogY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CiBjb25zdCBsb3NlQ29udGV4
dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2xvc2VfY29u
dGV4dCIpOwogCiBsZXQgY291bnRlciA9IDA7Ci1jb25zdCB2ZXJ0ZXhTb3VyY2UgPSAoKSA9PiBg
Citjb25zdCB2ZXJ0ZXhTb3VyY2UgPSAoZXh0cmEpID0+IGAKIHZvaWQgbWFpbigpIHsKLSAgICBn
bF9Qb3NpdGlvbiA9IHZlYzQoJHtjb3VudGVyKyt9LCAxLCAxLCAxKTsKKyAgICB2ZWM0IHJlc3Vs
dCA9IHZlYzQoMC4ke2NvdW50ZXIrK30pOworJHtleHRyYSB8fCAnJ30KKyAgICBnbF9Qb3NpdGlv
biA9IHJlc3VsdDsKIH1gOwotY29uc3QgZnJhZ21lbnRTb3VyY2UgPSAoKSA9PiBgCitjb25zdCBm
cmFnbWVudFNvdXJjZSA9IChleHRyYSkgPT4gYAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owogdm9p
ZCBtYWluKCkgewotICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4ke2NvdW50ZXIrK30sIDEsIDEs
IDEpOworICAgIHZlYzQgcmVzdWx0ID0gdmVjNCgwLiR7Y291bnRlcisrfSk7Ciske2V4dHJhIHx8
ICcnfQorICAgIGdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKIH1gOwogCi1jb25zdCB2cyA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKLWNvbnN0IGZzID0gZ2wuY3JlYXRlU2hhZGVy
KGdsLkZSQUdNRU5UX1NIQURFUik7Ci1jb25zdCBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgp
OworbGV0IHZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworbGV0IGZzID0g
Z2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CitsZXQgcHJvZ3JhbSA9IGdsLmNy
ZWF0ZVByb2dyYW0oKTsKIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2cyk7CiBnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgZnMpOwogCkBAIC01OCwzNiArODgsMTMzIEBAIGlmIChzdGF0dXMgIT09
IG51bGwpIHRlc3RGYWlsZWQoJ0V4dGVuc2lvbiBkaXNhYmxlZCwgc3RhdHVzIHNob3VsZCBiZSBu
dWxsJyk7CiB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJleHRlbnNp
b24gZGlzYWJsZWQiKTsKIAogY29uc3QgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhLbm93blBy
ZWZpeGVzKGdsLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIik7Ci1pZiAoIWV4dCkgewot
ICAgIHRlc3RQYXNzZWQoIk5vIEtIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBzdXBwb3J0IC0t
IHRoaXMgaXMgbGVnYWwiKTsKLX0gZWxzZSB7Ci0gICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5
IGVuYWJsZWQgS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIGV4dGVuc2lvbiIpOwogCi0gICAg
c2hvdWxkQmUoImV4dC5DT01QTEVUSU9OX1NUQVRVU19LSFIiLCAiMHg5MUIxIik7CitsZXQgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CiAKLSAgICBkZWJ1ZygiQ2hlY2tpbmcgdGhhdCBzdGF0
dXMgaXMgYSBib29sZWFuLiIpOwotICAgIGdsLnNoYWRlclNvdXJjZSh2cywgdmVydGV4U291cmNl
KCkpOwotICAgIGdsLmNvbXBpbGVTaGFkZXIodnMpOwotICAgIGxldCBzdGF0dXMgPSBnbC5nZXRT
aGFkZXJQYXJhbWV0ZXIodnMsIENPTVBMRVRJT05fU1RBVFVTX0tIUik7Ci0gICAgaWYgKHN0YXR1
cyAhPT0gdHJ1ZSAmJiBzdGF0dXMgIT09IGZhbHNlKSB0ZXN0RmFpbGVkKCJzdGF0dXMgc2hvdWxk
IGJlIGEgYm9vbGVhbiIpOworbGV0IGV4dHJhQ29kZSA9ICcnOwogCi0gICAgZ2wubGlua1Byb2dy
YW0ocHJvZ3JhbSk7Ci0gICAgc3RhdHVzID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFt
LCBDT01QTEVUSU9OX1NUQVRVU19LSFIpOwotICAgIGlmIChzdGF0dXMgIT09IHRydWUgJiYgc3Rh
dHVzICE9PSBmYWxzZSkgdGVzdEZhaWxlZCgic3RhdHVzIHNob3VsZCBiZSBhIGJvb2xlYW4iKTsK
LQotICAgIGRlYnVnKCJDaGVja2luZyB0aGF0IHN0YXR1cyBpcyB0cnVlIHdoZW4gY29udGV4dCBp
cyBsb3N0LiIpOwotICAgIGlmIChsb3NlQ29udGV4dCkgewotICAgICAgICBsb3NlQ29udGV4dC5s
b3NlQ29udGV4dCgpOwotICAgICAgICBzdGF0dXMgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIodnMs
IENPTVBMRVRJT05fU1RBVFVTX0tIUik7Ci0gICAgICAgIGlmIChzdGF0dXMgIT09IHRydWUpIHRl
c3RGYWlsZWQoInN0YXR1cyBzaG91bGQgYmUgdHJ1ZSB3aGVuIGNvbnRleHQgaXMgbG9zdCIpOwor
KGFzeW5jICgpID0+IHsKKworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5v
IEtIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgc2hvdWxk
QmUoImV4dC5DT01QTEVUSU9OX1NUQVRVU19LSFIiLCAiMHg5MUIxIik7CisKKyAgICAgICAgZGVi
dWcoIkNoZWNraW5nIHRoYXQgc3RhdHVzIGlzIGEgYm9vbGVhbi4iKTsKKyAgICAgICAgZ2wuc2hh
ZGVyU291cmNlKHZzLCB2ZXJ0ZXhTb3VyY2UoKSk7CisgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIo
dnMpOworICAgICAgICBsZXQgc3RhdHVzID0gZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHZzLCBDT01Q
TEVUSU9OX1NUQVRVU19LSFIpOworICAgICAgICBpZiAoc3RhdHVzICE9PSB0cnVlICYmIHN0YXR1
cyAhPT0gZmFsc2UpIHRlc3RGYWlsZWQoInN0YXR1cyBzaG91bGQgYmUgYSBib29sZWFuIik7CisK
KyAgICAgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CiAgICAgICAgIHN0YXR1cyA9IGdsLmdl
dFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgQ09NUExFVElPTl9TVEFUVVNfS0hSKTsKLSAgICAg
ICAgaWYgKHN0YXR1cyAhPT0gdHJ1ZSkgdGVzdEZhaWxlZCgic3RhdHVzIHNob3VsZCBiZSB0cnVl
IHdoZW4gY29udGV4dCBpcyBsb3N0Iik7CisgICAgICAgIGlmIChzdGF0dXMgIT09IHRydWUgJiYg
c3RhdHVzICE9PSBmYWxzZSkgdGVzdEZhaWxlZCgic3RhdHVzIHNob3VsZCBiZSBhIGJvb2xlYW4i
KTsKKworICAgICAgICBjb25zdCBtaW5pbXVtU2hhZGVyQ29tcGlsZUR1cmF0aW9uTXMgPSA1MDA7
CisgICAgICAgIGRlYnVnKGBDb25zdHJ1Y3Rpbmcgc2hhZGVyIHRoYXQgdGFrZXMgPiAke21pbmlt
dW1TaGFkZXJDb21waWxlRHVyYXRpb25Nc30gbXMgdG8gY29tcGlsZS5gKTsKKyAgICAgICAgbGV0
IG1lYXN1cmVkQ29tcGlsZUR1cmF0aW9uID0gMDsKKyAgICAgICAgZXh0cmFDb2RlID0gJ1xuICAg
IGlmICh0cnVlKSB7IHJlc3VsdCArPSB2ZWM0KDAuMDAwMDAwMSk7IH0nOworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgbWVhc3VyZWRDb21waWxlRHVyYXRpb24gPCBtaW5pbXVtU2hhZGVyQ29tcGls
ZUR1cmF0aW9uTXM7IGkrKykgeworICAgICAgICAgICAgZXh0cmFDb2RlICs9IGV4dHJhQ29kZTsK
KyAgICAgICAgICAgIGV4dHJhQ29kZSArPSBleHRyYUNvZGU7CisgICAgICAgICAgICBpZiAoaSA8
IDQpIGNvbnRpbnVlOworICAgICAgICAgICAgZ2wuc2hhZGVyU291cmNlKHZzLCB2ZXJ0ZXhTb3Vy
Y2UoZXh0cmFDb2RlKSk7CisgICAgICAgICAgICBnbC5zaGFkZXJTb3VyY2UoZnMsIGZyYWdtZW50
U291cmNlKGV4dHJhQ29kZSkpOworICAgICAgICAgICAgZ2wuY29tcGlsZVNoYWRlcih2cyk7Cisg
ICAgICAgICAgICBnbC5jb21waWxlU2hhZGVyKGZzKTsKKyAgICAgICAgICAgIGdsLmxpbmtQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3co
KTsKKyAgICAgICAgICAgIGlmICghZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5M
SU5LX1NUQVRVUykpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBTaGFkZXJzIGZhaWxl
ZCB0byBjb21waWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW06ICR7Z2wu
Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSl9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dnM6ICR7Z2wuZ2V0U2hhZGVySW5mb0xvZyh2cyl9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnM6ICR7Z2wuZ2V0U2hhZGVySW5mb0xvZyhmcyl9YCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZWFzdXJlZENvbXBpbGVEdXJhdGlvbiA9
IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBkZWJ1Zygn
Jyk7CisgICAgICAgIGdsLnNoYWRlclNvdXJjZSh2cywgdmVydGV4U291cmNlKGV4dHJhQ29kZSkp
OworICAgICAgICBnbC5zaGFkZXJTb3VyY2UoZnMsIGZyYWdtZW50U291cmNlKGV4dHJhQ29kZSkp
OworICAgICAgICBnbC5jb21waWxlU2hhZGVyKHZzKTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRl
cihmcyk7CisgICAgICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIGxldCBz
dGFydCA9IHBlcmZvcm1hbmNlLm5vdygpOworICAgICAgICBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIo
ZnMsIENPTVBMRVRJT05fU1RBVFVTX0tIUik7CisgICAgICAgIGdsLmdldFNoYWRlclBhcmFtZXRl
cih2cywgQ09NUExFVElPTl9TVEFUVVNfS0hSKTsKKyAgICAgICAgbGV0IGR1cmF0aW9uID0gcGVy
Zm9ybWFuY2Uubm93KCkgLSBzdGFydDsKKyAgICAgICAgaWYgKGR1cmF0aW9uID4gMTAwKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZChgUXVlcnlpbmcgc2hhZGVyIHN0YXR1cyBzaG91bGQgbm90IHdh
aXQgZm9yIGNvbXBpbGF0aW9uLiBUb29rICR7ZHVyYXRpb259IG1zYCk7CisKKyAgICAgICAgbGV0
IGZyYW1lcyA9IDA7CisgICAgICAgIGNvbnN0IG1heGltdW1UaW1lVG9XYWl0ID0gbWVhc3VyZWRD
b21waWxlRHVyYXRpb24gKiA0OworICAgICAgICB3aGlsZSAoIWdsLmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbSwgQ09NUExFVElPTl9TVEFUVVNfS0hSKQorICAgICAgICAgICAgJiYgcGVyZm9y
bWFuY2Uubm93KCkgLSBzdGFydCA8IG1heGltdW1UaW1lVG9XYWl0KSB7CisgICAgICAgICAgICBm
cmFtZXMrKzsKKyAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25G
cmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZHVyYXRpb24gPSBwZXJmb3JtYW5jZS5ub3coKSAt
IHN0YXJ0OworICAgICAgICBpZiAoIWdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgQ09N
UExFVElPTl9TVEFUVVNfS0hSKSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZChgUHJvZ3JhbSB0
b29rIGxvbmdlciB0aGFuICR7bWF4aW11bVRpbWVUb1dhaXR9IG1zIHRvIGNvbXBpbGUuIEV4cGVj
dGVkOiAke21lYXN1cmVkQ29tcGlsZUR1cmF0aW9ufSBtcywgYWN0dWFsOiAke2R1cmF0aW9ufSBt
c2ApOworICAgICAgICB9IGVsc2UgaWYgKCFnbC5nZXRTaGFkZXJQYXJhbWV0ZXIodnMsIENPTVBM
RVRJT05fU1RBVFVTX0tIUikgfHwgIWdsLmdldFNoYWRlclBhcmFtZXRlcihmcywgQ09NUExFVElP
Tl9TVEFUVVNfS0hSKSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnUHJvZ3JhbSBsaW5rZWQg
YmVmb3JlIHNoYWRlcnMgZmluaXNoZWQgY29tcGlsaW5nLicpOworICAgICAgICB9IGVsc2UgaWYg
KGZyYW1lcyA8PSA2KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGBQcm9ncmFtIHNob3VsZCBo
YXZlIHRha2VuIG1hbnkgbW9yZSB0aGFuIDYgZnJhbWVzIHRvIGNvbXBpbGUuIEFjdHVhbCB2YWx1
ZTogJHtmcmFtZXN9IGZyYW1lcywgZHVyYXRpb24gJHtwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0
fSBtcy5gKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDT01Q
TEVUSU9OX1NUQVRVU19LSFIgc3VjZXNzZnVsbHkgdHJhbnNpdGlvbmVkIGZyb20gZmFsc2UgdG8g
dHJ1ZSBpbiAke2ZyYW1lc30gZnJhbWVzIGFuZCAke2R1cmF0aW9ufSBtcy5gKTsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoYENPTVBMRVRJT05fU1RBVFVTX0tIUiBzdWNlc3NmdWxseSB0cmFuc2l0
aW9uZWQgZnJvbSBmYWxzZSB0byB0cnVlYCk7CisgICAgICAgIH0KKworCisgICAgICAgIGRlYnVn
KCJDaGVja2luZyB0aGF0IHN0YXR1cyBpcyB0cnVlIHdoZW4gY29udGV4dCBpcyBsb3N0LiIpOwor
ICAgICAgICBpZiAobG9zZUNvbnRleHQpIHsKKyAgICAgICAgICAgIGdsLnNoYWRlclNvdXJjZSh2
cywgdmVydGV4U291cmNlKGV4dHJhQ29kZSkpOworICAgICAgICAgICAgZ2wuc2hhZGVyU291cmNl
KGZzLCBmcmFnbWVudFNvdXJjZShleHRyYUNvZGUpKTsKKyAgICAgICAgICAgIGdsLmNvbXBpbGVT
aGFkZXIodnMpOworICAgICAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihmcyk7CisgICAgICAgICAg
ICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGxvc2VDb250ZXh0Lmxvc2VD
b250ZXh0KCk7CisgICAgICAgICAgICBzdGF0dXMgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIodnMs
IENPTVBMRVRJT05fU1RBVFVTX0tIUik7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSB0cnVl
KSB0ZXN0RmFpbGVkKCJzaGFkZXIgc3RhdHVzIHNob3VsZCBiZSB0cnVlIHdoZW4gY29udGV4dCBp
cyBsb3N0Iik7CisgICAgICAgICAgICBzdGF0dXMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIENPTVBMRVRJT05fU1RBVFVTX0tIUik7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9
PSB0cnVlKSB0ZXN0RmFpbGVkKCJwcm9ncmFtIHN0YXR1cyBzaG91bGQgYmUgdHJ1ZSB3aGVuIGNv
bnRleHQgaXMgbG9zdCIpOworICAgICAgICAgICAgbG9zZUNvbnRleHQucmVzdG9yZUNvbnRleHQo
KTsKKyAgICAgICAgICAgIHZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOwor
ICAgICAgICAgICAgZnMgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAg
ICAgICAgICAgIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgZmluaXNoVGVzdCgpOworfSkoKTsKKworYXN5bmMgZnVuY3Rpb24gY29tcGlsZVNoYWRl
cnMoKSB7CisgICAgY29uc29sZS5sb2coJ0NvbXBpbGluZyBzaGFkZXJzJyk7CisgICAgY29uc3Qg
Z2wgPSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnKTsKKyAgICBjb25zdCB2cyA9IGdsLmNyZWF0
ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICBjb25zdCBmcyA9IGdsLmNyZWF0ZVNoYWRl
cihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGNvbnN0IHByb2dyYW0gPSBnbC5jcmVhdGVQcm9n
cmFtKCk7CisgICAgZ2wuZ2V0RXh0ZW5zaW9uKHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVm
aXhlcyhnbCwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIpKTsKKyAgICBnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgdnMpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcyk7Cisg
ICAgZ2wuc2hhZGVyU291cmNlKHZzLCB2ZXJ0ZXhTb3VyY2UoZXh0cmFDb2RlKSk7CisgICAgZ2wu
c2hhZGVyU291cmNlKGZzLCBmcmFnbWVudFNvdXJjZShleHRyYUNvZGUpKTsKKyAgICBnbC5jb21w
aWxlU2hhZGVyKHZzKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKGZzKTsKKyAgICBnbC5saW5rUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICB3aGlsZSAoIWdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3Jh
bSwgQ09NUExFVElPTl9TVEFUVVNfS0hSKSkgeworICAgICAgICBnbC5nZXRTaGFkZXJQYXJhbWV0
ZXIodnMsIENPTVBMRVRJT05fU1RBVFVTX0tIUik7CisgICAgICAgIGdsLmdldFNoYWRlclBhcmFt
ZXRlcihmcywgQ09NUExFVElPTl9TVEFUVVNfS0hSKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21p
c2UocmVxdWVzdEFuaW1hdGlvbkZyYW1lKTsKICAgICB9CisgICAgZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgY29uc29sZS5sb2coJ0NvbXBpbGF0
aW9uIGZpbmlzaGVkLicpOwogfQogCi1jb25zdCBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwog
PC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtZWxlbWVu
dC1pbmRleC11aW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMzBhY2FiYTI4MTA5Y2NiYTIxZGZiMzdiNDZmYTQ0Yjc1ODYzNmI2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtZWxlbWVudC1pbmRleC11aW50Lmh0bWwK
QEAgLTAsMCArMSw0MjggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIE9FU19lbGVtZW50X2luZGV4X3VpbnQgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjNCB2Q29sb3I7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRp
b247CisgICAgY29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFy
eWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsK
K30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhl
IE9FU19lbGVtZW50X2luZGV4X3VpbnQgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7
CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gbnVs
bDsKK3ZhciBleHQgPSBudWxsOwordmFyIGNhbnZhcyA9IG51bGw7CisKKy8vIFRlc3QgYm90aCBT
VEFUSUNfRFJBVyBhbmQgRFlOQU1JQ19EUkFXIGFzIGEgcmVncmVzc2lvbiB0ZXN0CisvLyBmb3Ig
YSBidWcgaW4gQU5HTEUgd2hpY2ggaGFzIHNpbmNlIGJlZW4gZml4ZWQuCitmb3IgKHZhciBpaSA9
IDA7IGlpIDwgMjsgKytpaSkgeworICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICAgIGNhbnZhcy53aWR0aCA9IDUwOworICAgIGNhbnZhcy5oZWlnaHQgPSA1
MDsKKworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworCisgICAgaWYgKCFn
bCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMi
KTsKKworICAgICAgICB2YXIgZHJhd1R5cGUgPSAoaWkgPT0gMCkgPyBnbC5TVEFUSUNfRFJBVyA6
IGdsLkRZTkFNSUNfRFJBVzsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgIiArICgoaWkgPT0gMCkg
PyAiU1RBVElDX0RSQVciIDogIkRZTkFNSUNfRFJBVyIpKTsKKworCisgICAgICAgIC8vIFF1ZXJ5
IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3Mg
aXQKKyAgICAgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfZWxlbWVudF9pbmRleF91aW50
Iik7CisgICAgICAgIGlmICghZXh0KSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNf
ZWxlbWVudF9pbmRleF91aW50IHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworCisgICAgICAg
ICAgICBydW5TdXBwb3J0ZWRUZXN0KGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9FU19lbGVtZW50X2luZGV4X3Vp
bnQgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QodHJ1ZSk7CisK
KyAgICAgICAgICAgIHJ1bkRyYXdUZXN0cyhkcmF3VHlwZSk7CisKKyAgICAgICAgICAgIC8vIFRo
ZXNlIHRlc3RzIGFyZSB0d2Vha2VkIGR1cGxpY2F0ZXMgb2YgdGhlIGJ1ZmZlcnMvaW5kZXgtdmFs
aWRhdGlvbiogdGVzdHMKKyAgICAgICAgICAgIC8vIHVzaW5nIHVuc2lnbmVkIGludCBpbmRpY2Vz
IHRvIGVuc3VyZSB0aGF0IGJlaGF2aW9yIHJlbWFpbnMgY29uc2lzdGVudAorICAgICAgICAgICAg
cnVuSW5kZXhWYWxpZGF0aW9uVGVzdHMoZHJhd1R5cGUpOworICAgICAgICAgICAgcnVuQ29waWVz
SW5kaWNlc1Rlc3RzKGRyYXdUeXBlKTsKKyAgICAgICAgICAgIHJ1blJlc2l6ZWRCdWZmZXJUZXN0
cyhkcmF3VHlwZSk7CisgICAgICAgICAgICBydW5WZXJpZmllc1Rvb01hbnlJbmRpY2VzVGVzdHMo
ZHJhd1R5cGUpOworICAgICAgICAgICAgcnVuQ3Jhc2hXaXRoQnVmZmVyU3ViRGF0YVRlc3RzKGRy
YXdUeXBlKTsKKworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBz
dXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgaWYgKHN1cHBvcnRl
ZC5pbmRleE9mKCJPRVNfZWxlbWVudF9pbmRleF91aW50IikgPj0gMCkgeworICAgICAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiT0VTX2VsZW1lbnRf
aW5kZXhfdWludCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVk
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJPRVNfZWxlbWVu
dF9pbmRleF91aW50IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQi
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVk
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJPRVNfZWxlbWVudF9pbmRleF91aW50IG5vdCBs
aXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJPRVNfZWxlbWVudF9pbmRleF91aW50
IG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMg
aXMgbGVnYWwiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuRHJhd1Rlc3Rz
KGRyYXdUeXBlKSB7CisgICAgZGVidWcoIlRlc3QgdGhhdCBkcmF3cyB3aXRoIHVuc2lnbmVkIGlu
dGVnZXIgaW5kaWNlcyBwcm9kdWNlIHRoZSBleHBlY3RlZCByZXN1bHRzIik7CisKKyAgICBjYW52
YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUwOworICAgIGdsLnZpZXdwb3J0KDAsIDAs
IGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFNpbXBsZUNvbG9yUHJvZ3JhbShnbCk7CisKKyAgICBmdW5jdGlvbiBzZXR1cERyYXcocykg
eworICAgICAgICAvLyBDcmVhdGUgYSB2ZXJ0ZXggYnVmZmVyIHRoYXQgY2Fubm90IGJlIGZ1bGx5
IGluZGV4ZWQgdmlhIHNob3J0cworICAgICAgICB2YXIgcXVhZEFycmF5TGVuID0gNjU1MzcgKiAz
OworICAgICAgICB2YXIgcXVhZEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShxdWFkQXJyYXlMZW4p
OworCisgICAgICAgIC8vIExlYXZlIGFsbCBidXQgdGhlIGxhc3QgNCB2YWx1ZXMgemVyby1lZCBv
dXQKKyAgICAgICAgdmFyIGlkeCA9IHF1YWRBcnJheUxlbiAtIDEyOworCisgICAgICAgIC8vIElu
aXRpYWxpemVkIHRoZSBsYXN0IDQgdmFsdWVzIHRvIGEgcXVhZAorICAgICAgICBxdWFkQXJyYXlb
aWR4KytdID0gMS4wICogczsKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IDEuMCAqIHM7Cisg
ICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAwLjA7CisKKyAgICAgICAgcXVhZEFycmF5W2lkeCsr
XSA9IC0xLjAgKiBzOworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0gMS4wICogczsKKyAgICAg
ICAgcXVhZEFycmF5W2lkeCsrXSA9IDAuMDsKKworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0g
LTEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAtMS4wICogczsKKyAgICAgICAg
cXVhZEFycmF5W2lkeCsrXSA9IDAuMDsKKworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0gMS4w
ICogczsKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IC0xLjAgKiBzOworICAgICAgICBxdWFk
QXJyYXlbaWR4KytdID0gMC4wOworCisgICAgICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRl
eE9iamVjdCk7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBxdWFkQXJy
YXksIGRyYXdUeXBlKTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gdW5zaWduZWQgaW50IGluZGV4
IGJ1ZmZlciB0aGF0IGluZGV4ZXMgdGhlIGxhc3QgNCB2ZXJ0aWNlcworICAgICAgICB2YXIgYmFz
ZUluZGV4ID0gKHF1YWRBcnJheUxlbiAvIDMpIC0gNDsKKworICAgICAgICB2YXIgaW5kZXhPYmpl
Y3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgaW5kZXhPYmplY3QpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDMyQXJyYXkoWworICAgICAgICAgICAgYmFzZUlu
ZGV4ICsgMCwKKyAgICAgICAgICAgIGJhc2VJbmRleCArIDEsCisgICAgICAgICAgICBiYXNlSW5k
ZXggKyAyLAorICAgICAgICAgICAgYmFzZUluZGV4ICsgMiwKKyAgICAgICAgICAgIGJhc2VJbmRl
eCArIDMsCisgICAgICAgICAgICBiYXNlSW5kZXggKyAwXSksIGRyYXdUeXBlKTsKKworICAgICAg
ICB2YXIgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSAwOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShvcHRfcG9zaXRpb25Mb2NhdGlvbik7CisgICAgICAgIGdsLnZlcnRleEF0dHJp
YlBvaW50ZXIob3B0X3Bvc2l0aW9uTG9jYXRpb24sIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisgICAgfTsKKyAgICBmdW5jdGlvbiB0ZXN0UGl4ZWwoYmxvY2tMaXN0LCBhbGxvd0xpc3QpIHsK
KyAgICAgICAgZnVuY3Rpb24gdGVzdExpc3QobGlzdCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgICAg
IGZvciAodmFyIG4gPSAwOyBuIDwgbGlzdC5sZW5ndGg7IG4rKykgeworICAgICAgICAgICAgICAg
IHZhciBsID0gbGlzdFtuXTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IC1NYXRoLmZsb29yKGwg
KiBjYW52YXMud2lkdGggLyAyKSArIGNhbnZhcy53aWR0aCAvIDI7CisgICAgICAgICAgICAgICAg
dmFyIHkgPSAtTWF0aC5mbG9vcihsICogY2FudmFzLmhlaWdodCAvIDIpICsgY2FudmFzLmhlaWdo
dCAvIDI7CisgICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgeCwgeSwgMSwg
MSwgW2V4cGVjdGVkLCBleHBlY3RlZCwgZXhwZWN0ZWRdLAorICAgICAgICAgICAgICAgICAgICAi
RHJhdyBzaG91bGQgcGFzcyIsIDIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRlc3RMaXN0KGJsb2NrTGlzdCwgMCk7CisgICAgICAgIHRlc3RMaXN0KGFsbG93TGlzdCwgMjU1
KTsKKyAgICB9OworICAgIGZ1bmN0aW9uIHZlcmlmeURyYXcocykgeworICAgICAgICBnbC5jbGVh
ckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgd3R1LnNldEZsb2F0RHJh
d0NvbG9yKGdsLCBbMC4wLCAwLjAsIDAuMCwgMS4wXSk7CisgICAgICAgIGdsLmRyYXdFbGVtZW50
cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX0lOVCwgMCk7CisKKyAgICAgICAgdmFyIGJs
b2NrTGlzdCA9IFtdOworICAgICAgICB2YXIgYWxsb3dMaXN0ID0gW107CisgICAgICAgIHZhciBw
b2ludHMgPSBbMC4wLCAwLjIsIDAuNCwgMC42LCAwLjgsIDEuMF07CisgICAgICAgIGZvciAodmFy
IG4gPSAwOyBuIDwgcG9pbnRzLmxlbmd0aDsgbisrKSB7CisgICAgICAgICAgICBpZiAocG9pbnRz
W25dIDw9IHMpIHsKKyAgICAgICAgICAgICAgICBibG9ja0xpc3QucHVzaChwb2ludHNbbl0pOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhbGxvd0xpc3QucHVzaChwb2lu
dHNbbl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRlc3RQaXhlbChibG9j
a0xpc3QsIGFsbG93TGlzdCk7CisgICAgfTsKKworICAgIHNldHVwRHJhdygwLjUpOworICAgIHZl
cmlmeURyYXcoMC41KTsKK30KKworZnVuY3Rpb24gcnVuSW5kZXhWYWxpZGF0aW9uVGVzdHMoZHJh
d1R5cGUpIHsKKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBpbmRleCB2YWxpZGF0aW9uIHZl
cmlmaWVzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBpbmRpY2VzIik7CisKKyAgICBmdW5jdGlvbiBz
aXplSW5CeXRlcyh0eXBlKSB7CisgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgIGNhc2UgZ2wu
QllURToKKyAgICAgIGNhc2UgZ2wuVU5TSUdORURfQllURToKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICBjYXNlIGdsLlNIT1JUOgorICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVDoKKyAgICAg
ICAgcmV0dXJuIDI7CisgICAgICBjYXNlIGdsLklOVDoKKyAgICAgIGNhc2UgZ2wuVU5TSUdORURf
SU5UOgorICAgICAgY2FzZSBnbC5GTE9BVDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBkZWZh
dWx0OgorICAgICAgICB0aHJvdyAidW5rbm93biB0eXBlIjsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGdsKTsKKworICAgIC8vIDMg
dmVydGljZXMgPT4gMSB0cmlhbmdsZSwgaW50ZXJsZWF2ZWQgZGF0YQorICAgIHZhciBkYXRhQ29t
cGxldGUgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLCAxLCAxLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCAxXSk7CisgICAgdmFyIGRhdGFJbmNvbXBsZXRlID0gbmV3IEZsb2F0MzJBcnJh
eShbMCwgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs
IDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxLCAx
LCAxXSk7CisgICAgdmFyIGluZGljZXMgPSBuZXcgVWludDMyQXJyYXkoWzAsIDEsIDJdKTsKKwor
ICAgIGRlYnVnKCJUZXN0aW5nIHdpdGggdmFsaWQgaW5kaWNlcyIpOworCisgICAgdmFyIGJ1ZmZl
ckNvbXBsZXRlID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGJ1ZmZlckNvbXBsZXRlKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgZGF0YUNvbXBsZXRlLCBkcmF3VHlwZSk7CisgICAgdmFyIGVsZW1lbnRzID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
ZWxlbWVudHMpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGlu
ZGljZXMsIGRyYXdUeXBlKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIHZhciB2
ZXJ0ZXhMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV92ZXJ0ZXgiKTsKKyAg
ICB2YXIgbm9ybWFsTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFfbm9ybWFs
Iik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhMb2MsIDQsIGdsLkZMT0FULCBm
YWxzZSwgNyAqIHNpemVJbkJ5dGVzKGdsLkZMT0FUKSwgMCk7CisgICAgZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkodmVydGV4TG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG5vcm1h
bExvYywgMywgZ2wuRkxPQVQsIGZhbHNlLCA3ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpLCA0ICog
c2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShu
b3JtYWxMb2MpOworICAgIHNob3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01QTEVURScpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgnZ2wuZHJh
d0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5ULCAwKScpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIGRlYnVnKCJUZXN0aW5n
IHdpdGggb3V0LW9mLXJhbmdlIGluZGljZXMiKTsKKworICAgIHZhciBidWZmZXJJbmNvbXBsZXRl
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IGJ1ZmZlckluY29tcGxldGUpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBk
YXRhSW5jb21wbGV0ZSwgZHJhd1R5cGUpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodmVy
dGV4TG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCksIDAp
OworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRleExvYyk7CisgICAgZ2wuZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7CisgICAgZGVidWcoIkVuYWJsZSB2ZXJ0
aWNlcywgdmFsaWQiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMs
IGdsLlVOU0lHTkVEX0lOVCwgMCknKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUik7CisgICAgZGVidWcoIkVuYWJsZSBub3JtYWxzLCBvdXQtb2YtcmFuZ2UiKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG5vcm1hbExvYywgMywgZ2wuRkxPQVQsIGZhbHNlLCA3
ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpLCA0ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKTsKKyAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShub3JtYWxMb2MpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBbZ2wuSU5WQUxJRF9PUEVSQVRJT04sIGdsLk5PX0VSUk9SXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJ
R05FRF9JTlQsIDApJyk7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIGVuYWJsZWQgYXR0cmlidXRl
IHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGN1cnJlbnQgcHJvZ3JhbSIpOworCisgICAgZ2wuZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7CisgICAgdmFyIGV4dHJhTG9jID0gTWF0
aC5tYXgodmVydGV4TG9jLCBub3JtYWxMb2MpICsgMTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShleHRyYUxvYyk7CisgICAgZGVidWcoIkVuYWJsZSBhbiBleHRyYSBhdHRyaWJ1dGUg
d2l0aCBudWxsIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwor
ICAgIHNob3VsZEJlVW5kZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBn
bC5VTlNJR05FRF9JTlQsIDApJyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04pOworICAgIGRlYnVnKCJFbmFibGUgYW4gZXh0cmEgYXR0cmlidXRlIHdp
dGggaW5zdWZmaWNpZW50IGRhdGEgYnVmZmVyIik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRl
cihleHRyYUxvYywgMywgZ2wuRkxPQVQsIGZhbHNlLCA3ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQp
LCA0ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUik7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhn
bC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX0lOVCwgMCknKTsKKyAgICBkZWJ1ZygiUGFzcyBs
YXJnZSBuZWdhdGl2ZSBpbmRleCB0byB2ZXJ0ZXhBdHRyaWJQb2ludGVyIik7CisgICAgZ2wudmVy
dGV4QXR0cmliUG9pbnRlcihub3JtYWxMb2MsIDMsIGdsLkZMT0FULCBmYWxzZSwgNyAqIHNpemVJ
bkJ5dGVzKGdsLkZMT0FUKSwgLTIwMDAwMDAwMDAgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05F
RF9JTlQsIDApJyk7Cit9CisKK2Z1bmN0aW9uIHJ1bkNvcGllc0luZGljZXNUZXN0cyhkcmF3VHlw
ZSkgeworICAgIGRlYnVnKCJUZXN0IHRoYXQgY2xpZW50IGRhdGEgaXMgYWx3YXlzIGNvcGllZCBk
dXJpbmcgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3ViRGF0YSBjYWxscyIpOworCisgICAgdmFyIHBy
b2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShnbCk7CisKKyAgICBnbC51c2VQcm9ncmFt
KHByb2dyYW0pOworICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICAvLyA0IHZlcnRpY2VzIC0+IDIgdHJpYW5n
bGVzCisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXko
WyAwLDAsMCwgMCwxLDAsIDEsMCwwLCAxLDEsMCBdKSwgZHJhd1R5cGUpOworICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHZhciBp
bmRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhPYmplY3QpOworICAgIHZhciBpbmRpY2VzID0gbmV3
IFVpbnQzMkFycmF5KFsgMTAwMDAsIDAsIDEsIDIsIDMsIDEwMDAwIF0pOworICAgIGdsLmJ1ZmZl
ckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGRyYXdUeXBlKTsKKyAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRyYXdFbGVtZW50
cyhnbC5UUklBTkdMRV9TVFJJUCwgNCwgZ2wuVU5TSUdORURfSU5ULCA0KSIpOworICAgIHZhciBp
bmRleFZhbGlkYXRpb25FcnJvciA9IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5J
TlZBTElEX09QRVJBVElPTiwgZ2wuTk9fRVJST1JdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsLmRyYXdFbGVtZW50cyhnbC5UUklB
TkdMRV9TVFJJUCwgNCwgZ2wuVU5TSUdORURfSU5ULCAwKSIpOworICAgIHd0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGluZGV4VmFsaWRhdGlvbkVycm9yLCAiZ2wuZHJhd0VsZW1lbnRzKGds
LlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05FRF9JTlQsIDgpIik7CisgICAgaW5kaWNlc1sw
XSA9IDI7CisgICAgaW5kaWNlc1s1XSA9IDE7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsICJnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQs
IGdsLlVOU0lHTkVEX0lOVCwgNCkiKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGds
LCBpbmRleFZhbGlkYXRpb25FcnJvciwgImdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRV9TVFJJ
UCwgNCwgZ2wuVU5TSUdORURfSU5ULCAwKSIpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGluZGV4VmFsaWRhdGlvbkVycm9yLCAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xF
X1NUUklQLCA0LCBnbC5VTlNJR05FRF9JTlQsIDgpIik7Cit9CisKK2Z1bmN0aW9uIHJ1blJlc2l6
ZWRCdWZmZXJUZXN0cyhkcmF3VHlwZSkgeworICAgIGRlYnVnKCJUZXN0IHRoYXQgdXBkYXRpbmcg
dGhlIHNpemUgb2YgYSB2ZXJ0ZXggYnVmZmVyIGlzIHByb3Blcmx5IG5vdGljZWQgYnkgdGhlIFdl
YkdMIGltcGxlbWVudGF0aW9uLiIpOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbInZzIiwgImZzIl0sIFsidlBvc2l0aW9uIiwgInZDb2xvciJdKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGluaXRpYWxpemF0aW9uIik7
CisKKyAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICAgIFstMSwxLDAsIDEs
MSwwLCAtMSwtMSwwLAorICAgICAgICAgLTEsLTEsMCwgMSwxLDAsIDEsLTEsMF0pLCBkcmF3VHlw
ZSk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgdmVydGV4IHNldHVwIik7CisKKyAgICB2
YXIgdGV4Q29vcmRPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRPYmplY3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KAorICAgICAgICBbMCwwLCAxLDAsIDAsMSwK
KyAgICAgICAgIDAsMSwgMSwwLCAxLDFdKSwgZHJhd1R5cGUpOworICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImFmdGVyIHRleHR1cmUgY29vcmQgc2V0dXAiKTsKKworICAgIC8vIE5vdyByZXNpemUgdGhl
c2UgYnVmZmVycyBiZWNhdXNlIHdlIHdhbnQgdG8gY2hhbmdlIHdoYXQgd2UncmUgZHJhd2luZy4K
KyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAg
IC0xLDEsMCwgMSwxLDAsIC0xLC0xLDAsIDEsLTEsMCwKKyAgICAgICAgLTEsMSwwLCAxLDEsMCwg
LTEsLTEsMCwgMSwtMSwwXSksIGRyYXdUeXBlKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgImFmdGVyIHZlcnRleCByZWRlZmluaXRpb24iKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRPYmplY3QpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDhBcnJheShbCisgICAgICAgIDI1NSwgMCwgMCwg
MjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgMjU1LCAwLCAwLCAyNTUsCisg
ICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAg
MCwgMjU1LCAwLCAyNTUsCisgICAgICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAwLCAyNTUs
IDAsIDI1NV0pLCBkcmF3VHlwZSk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBn
bC5VTlNJR05FRF9CWVRFLCBmYWxzZSwgMCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJhZnRlciB0ZXh0dXJlIGNvb3JkaW5hdGUgLyBjb2xvciByZWRlZmlu
aXRpb24iKTsKKworICAgIHZhciBudW1RdWFkcyA9IDI7CisgICAgdmFyIGluZGljZXMgPSBuZXcg
VWludDMyQXJyYXkobnVtUXVhZHMgKiA2KTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVt
UXVhZHM7ICsraWkpIHsKKyAgICAgICAgdmFyIG9mZnNldCA9IGlpICogNjsKKyAgICAgICAgdmFy
IHF1YWQgPSAoaWkgPT0gKG51bVF1YWRzIC0gMSkpID8gNCA6IDA7CisgICAgICAgIGluZGljZXNb
b2Zmc2V0ICsgMF0gPSBxdWFkICsgMDsKKyAgICAgICAgaW5kaWNlc1tvZmZzZXQgKyAxXSA9IHF1
YWQgKyAxOworICAgICAgICBpbmRpY2VzW29mZnNldCArIDJdID0gcXVhZCArIDI7CisgICAgICAg
IGluZGljZXNbb2Zmc2V0ICsgM10gPSBxdWFkICsgMjsKKyAgICAgICAgaW5kaWNlc1tvZmZzZXQg
KyA0XSA9IHF1YWQgKyAxOworICAgICAgICBpbmRpY2VzW29mZnNldCArIDVdID0gcXVhZCArIDM7
CisgICAgfQorICAgIHZhciBpbmRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKKyAgICBn
bC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBkcmF3VHlwZSk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBzZXR0aW5n
IHVwIGluZGljZXMiKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCBudW1RdWFk
cyAqIDYsIGdsLlVOU0lHTkVEX0lOVCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhZnRlciBkcmF3aW5nIik7Cit9CisKK2Z1bmN0aW9uIHJ1blZlcmlmaWVz
VG9vTWFueUluZGljZXNUZXN0cyhkcmF3VHlwZSkgeworICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IGluZGV4IHZhbGlkYXRpb24gZm9yIGRyYXdFbGVtZW50cyBkb2VzIG5vdCBleGFtaW5lIHRv
byBtYW55IGluZGljZXMiKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRTdGFuZGFyZFBy
b2dyYW0oZ2wpOworCisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB2YXIgdmVydGV4
T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoMCk7CisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAgIC8vIDQgdmVydGljZXMg
LT4gMiB0cmlhbmdsZXMKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZs
b2F0MzJBcnJheShbIDAsMCwwLCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBkcmF3VHlwZSk7Cisg
ICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwor
CisgICAgdmFyIGluZGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisKKyAgICBkZWJ1Zygi
VGVzdCBvdXQgb2YgcmFuZ2UgaW5kaWNlcyIpCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgaW5kZXhPYmplY3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MzJBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAw
MCBdKSwgZHJhd1R5cGUpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05F
RF9JTlQsIDQpIik7CisgICAgdmFyIGluZGV4VmFsaWRhdGlvbkVycm9yID0gd3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURfT1BFUkFUSU9OLCBnbC5OT19FUlJPUl0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05FRF9JTlQsIDAp
Iik7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgaW5kZXhWYWxpZGF0aW9uRXJy
b3IsICJnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQsIGdsLlVOU0lHTkVEX0lO
VCwgOCkiKTsKK30KKworZnVuY3Rpb24gcnVuQ3Jhc2hXaXRoQnVmZmVyU3ViRGF0YVRlc3RzKGRy
YXdUeXBlKSB7CisgICAgZGVidWcoJ1ZlcmlmaWVzIHRoYXQgdGhlIGluZGV4IHZhbGlkYXRpb24g
Y29kZSB3aGljaCBpcyB3aXRoaW4gYnVmZmVyU3ViRGF0YSBkb2VzIG5vdCBjcmFzaC4nKQorCisg
ICAgdmFyIGVsZW1lbnRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyKTsKKyAgICBnbC5idWZm
ZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAyNTYsIGRyYXdUeXBlKTsKKyAgICB2YXIg
ZGF0YSA9IG5ldyBVaW50MzJBcnJheSgxMjcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIDY0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLCAiYWZ0ZXIgYXR0ZW1wdGluZyB0byB1cGRhdGUgYSBidWZmZXIg
b3V0c2lkZSBvZiB0aGUgYWxsb2NhdGVkIGJvdW5kcyIpOworICAgIHRlc3RQYXNzZWQoImJ1ZmZl
clN1YkRhdGEsIHdoZW4gYnVmZmVyIG9iamVjdCB3YXMgaW5pdGlhbGl6ZWQgd2l0aCBudWxsLCBk
aWQgbm90IGNyYXNoIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtc3RhbmRhcmQtZGVyaXZhdGl2ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRl
cml2YXRpdmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZmNGRlMDI0M2E1ZGMwZjkyOTQzOWQ4MjdjOTM3
NWE4NzdiZWViNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRl
cml2YXRpdmVzLmh0bWwKQEAgLTAsMCArMSw0NDQgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIE9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6
IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0aW5nIHN0YW5kYXJkIGRlcml2YXRpdmVzIC0tPgorCis8
IS0tIFNoYWRlciBvbWl0dGluZyB0aGUgcmVxdWlyZWQgI2V4dGVuc2lvbiBwcmFnbWEgLS0+Cis8
c2NyaXB0IGlkPSJtaXNzaW5nUHJhZ21hRnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzIgdGV4Q29v
cmQ7Cit2b2lkIG1haW4oKSB7CisgICAgZmxvYXQgZHggPSBkRmR4KHRleENvb3JkLngpOworICAg
IGZsb2F0IGR5ID0gZEZkeSh0ZXhDb29yZC55KTsKKyAgICBmbG9hdCB3ID0gZndpZHRoKHRleENv
b3JkLngpOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZHgsIGR5LCB3LCAxLjApOworfQorPC9z
Y3JpcHQ+CisKKzwhLS0gU2hhZGVyIHRvIHRlc3QgbWFjcm8gZGVmaW5pdGlvbiAtLT4KKzxzY3Jp
cHQgaWQ9Im1hY3JvRnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisjaWZkZWYgR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4w
LCAwLjApOworI2Vsc2UKKyAgICAvLyBFcnJvciBleHBlY3RlZAorICAgICNlcnJvciBubyBHTF9P
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM7CisjZW5kaWYKK30KKzwvc2NyaXB0PgorCis8IS0tIFNo
YWRlciB3aXRoIHJlcXVpcmVkICNleHRlbnNpb24gcHJhZ21hIC0tPgorPHNjcmlwdCBpZD0idGVz
dEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyNleHRlbnNpb24g
R0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpIHsKKyAgICBmbG9hdCBk
eCA9IGRGZHgodGV4Q29vcmQueCk7CisgICAgZmxvYXQgZHkgPSBkRmR5KHRleENvb3JkLnkpOwor
ICAgIGZsb2F0IHcgPSBmd2lkdGgodGV4Q29vcmQueCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChkeCwgZHksIHcsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzwhLS0gU2hhZGVyIHdpdGggI2V4dGVu
c2lvbiBhZnRlciBvdGhlciBjb2RlIC0tPgorPHNjcmlwdCBpZD0idGVzdEZyYWdtZW50U2hhZGVy
V2l0aEV4dGVuc2lvbk5vdEF0VG9wIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkg
eworI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUKKyAgICBm
bG9hdCBkeCA9IGRGZHgodGV4Q29vcmQueCk7CisgICAgZmxvYXQgZHkgPSBkRmR5KHRleENvb3Jk
LnkpOworICAgIGZsb2F0IHcgPSBmd2lkdGgodGV4Q29vcmQueCk7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNChkeCwgZHksIHcsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzwhLS0gU2hhZGVycyB0byBs
aW5rIHdpdGggdGVzdCBmcmFnbWVudCBzaGFkZXJzIC0tPgorPHNjcmlwdCBpZD0iZ29vZFZlcnRl
eFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0
aW9uOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkgeworICAgIHRleENvb3Jk
ID0gdlBvc2l0aW9uLnh5OworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3Jp
cHQ+Cis8IS0tIFNoYWRlcnMgdG8gdGVzdCBvdXRwdXQgLS0+Cis8c2NyaXB0IGlkPSJvdXRwdXRW
ZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQ
b3NpdGlvbjsKK3ZhcnlpbmcgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgICBwb3Np
dGlvbiA9IHZQb3NpdGlvbjsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0ib3V0cHV0RnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFi
bGUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IHBvc2l0aW9uOwordm9p
ZCBtYWluKCkgeworICAgIGZsb2F0IGR6ZHggPSBkRmR4KHBvc2l0aW9uLnopOworICAgIGZsb2F0
IGR6ZHkgPSBkRmR5KHBvc2l0aW9uLnopOworICAgIGZsb2F0IGZ3ID0gZndpZHRoKHBvc2l0aW9u
LnopOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYWJzKGR6ZHgpICogNDAuMCwgYWJzKGR6ZHkp
ICogNDAuMCwgZncgKiA0MC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHRoZSBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uLCBpZiBpdCBpcyBh
dmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBleHQgPSBudWxsOworCisvLyBSdW4g
YWxsIHRlc3RzIG9uY2UuCitydW5BbGxUZXN0cygpOworCisvLyBSdW4gYWxsIHRlc3RzIGFnYWlu
c3Qgd2l0aCBhIG5ldyBjb250ZXh0IHRvIHRlc3QgZm9yIGFueSBjYWNoZSBpc3N1ZXMuCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdGluZyBuZXcgY29udGV4dCB0byBjYXRjaCBjYWNoZSBlcnJvcnMi
KTsKK2dsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworZXh0ID0gbnVsbDsKK3J1bkFsbFRlc3Rz
KCk7CisKK2Z1bmN0aW9uIHJ1bkFsbFRlc3RzKCkgeworICAgIGlmICghZ2wpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAgICAg
Ly8gUnVuIHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCisgICAgICAgIHJ1bkhpbnRUZXN0
RGlzYWJsZWQoKTsKKyAgICAgICAgcnVuU2hhZGVyVGVzdHMoZmFsc2UpOworCisgICAgICAgIC8v
IFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBh
Y2Nlc3MgaXQKKyAgICAgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKTsKKyAgICAgICAgaWYgKCFleHQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQo
Ik5vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsK
KworICAgICAgICAgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgICAgIHJ1blN1cHBvcnRlZFRl
c3QodHJ1ZSk7CisKKyAgICAgICAgICAgIHJ1bkhpbnRUZXN0RW5hYmxlZCgpOworICAgICAgICAg
ICAgcnVuU2hhZGVyVGVzdHModHJ1ZSk7CisgICAgICAgICAgICBydW5PdXRwdXRUZXN0cygpOwor
ICAgICAgICAgICAgcnVuVW5pcXVlT2JqZWN0VGVzdCgpOworCisgICAgICAgICAgICAvLyBSdW4g
ZGVmZXJyZWQgbGluayB0ZXN0cy4KKyAgICAgICAgICAgIHJ1bkRlZmVycmVkTGlua1Rlc3RzKCk7
CisgICAgICAgIH0KKyAgICB9CisKK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChleHRl
bnNpb25FbmFibGVkKSB7CisgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMoKTsKKyAgICBpZiAoc3VwcG9ydGVkLmluZGV4T2YoIk9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyIpID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBsaXN0ZWQgYXMgc3VwcG9y
dGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgbGlzdGVkIGFzIHN1
cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQg
Z2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGVzdFBhc3NlZCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5vdCBsaXN0ZWQgYXMgc3VwcG9y
dGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSGludFRlc3REaXNhYmxlZCgpIHsKKyAgICBkZWJ1
ZygiVGVzdGluZyBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyB3aXRoIGV4dGVu
c2lvbiBkaXNhYmxlZCIpOworCisgICAgLy8gVXNlIHRoZSBjb25zdGFudCBkaXJlY3RseSBhcyB3
ZSBkb24ndCBoYXZlIHRoZSBleHRlbnNpb24KKyAgICB2YXIgRlJBR01FTlRfU0hBREVSX0RFUklW
QVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICBnbC5nZXRQYXJhbWV0ZXIoRlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfRU5VTSwgIkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTIHNo
b3VsZCBub3QgYmUgcXVlcnlhYmxlIGlmIGV4dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworCisgICAg
Z2wuaGludChGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUywgZ2wuRE9OVF9DQVJF
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJoaW50IHNo
b3VsZCBub3QgYWNjZXB0IEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTIGlmIGV4
dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworfQorCitmdW5jdGlvbiBydW5IaW50VGVzdEVuYWJsZWQo
KSB7CisgICAgZGVidWcoIlRlc3RpbmcgRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9P
RVMgd2l0aCBleHRlbnNpb24gZW5hYmxlZCIpOworCisgICAgc2hvdWxkQmUoImV4dC5GUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyIsICIweDhCOEIiKTsKKworICAgIGdsLmdldFBh
cmFtZXRlcihleHQuRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRlJBR01FTlRfU0hBREVSX0RFUklW
QVRJVkVfSElOVF9PRVMgcXVlcnkgc2hvdWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJs
ZWQiKTsKKworICAgIC8vIERlZmF1bHQgdmFsdWUgaXMgRE9OVF9DQVJFCisgICAgaWYgKGdsLmdl
dFBhcmFtZXRlcihleHQuRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpID09IGds
LkRPTlRfQ0FSRSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJEZWZhdWx0IHZhbHVlIG9mIEZSQUdN
RU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTIGlzIERPTlRfQ0FSRSIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkRlZmF1bHQgdmFsdWUgb2YgRlJBR01FTlRfU0hBREVS
X0RFUklWQVRJVkVfSElOVF9PRVMgaXMgbm90IERPTlRfQ0FSRSIpOworICAgIH0KKworICAgIC8v
IEVuc3VyZSB0aGF0IHdlIGNhbiBzZXQgdGhlIHRhcmdldAorICAgIGdsLmhpbnQoZXh0LkZSQUdN
RU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTLCBnbC5ET05UX0NBUkUpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiaGludCBzaG91bGQgYWNjZXB0IEZSQUdN
RU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTIik7CisKKyAgICAvLyBUZXN0IGFsbCB0aGUg
aGludCBtb2RlcworICAgIHZhciB2YWxpZE1vZGVzID0gWyJGQVNURVNUIiwgIk5JQ0VTVCIsICJE
T05UX0NBUkUiXTsKKyAgICB2YXIgYW55RmFpbGVkID0gZmFsc2U7CisgICAgZm9yICh2YXIgbiA9
IDA7IG4gPCB2YWxpZE1vZGVzLmxlbmd0aDsgbisrKSB7CisgICAgICAgIHZhciBtb2RlID0gdmFs
aWRNb2Rlc1tuXTsKKyAgICAgICAgZ2wuaGludChleHQuRlJBR01FTlRfU0hBREVSX0RFUklWQVRJ
VkVfSElOVF9PRVMsIGdsW21vZGVdKTsKKyAgICAgICAgaWYgKGdsLmdldFBhcmFtZXRlcihleHQu
RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpICE9IGdsW21vZGVdKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJSb3VuZC10cmlwIG9mIGhpbnQoKS9nZXRQYXJhbWV0ZXIoKSBm
YWlsZWQgb24gbW9kZSAiICsgbW9kZSk7CisgICAgICAgICAgICBhbnlGYWlsZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmICghYW55RmFpbGVkKSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoIlJvdW5kLXRyaXAgb2YgaGludCgpL2dldFBhcmFtZXRlcigpIHdpdGggYWxsIHN1cHBvcnRl
ZCBtb2RlcyIpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU2hhZGVyVGVzdHMoZXh0ZW5zaW9u
RW5hYmxlZCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB2YXJpb3VzIHNo
YWRlciBjb21waWxlcyB3aXRoIGV4dGVuc2lvbiAiICsgKGV4dGVuc2lvbkVuYWJsZWQgPyAiZW5h
YmxlZCIgOiAiZGlzYWJsZWQiKSk7CisKKyAgICAvLyBFeHBlY3QgdGhlIG1hY3JvIHNoYWRlciB0
byBzdWNjZWVkIE9OTFkgaWYgZW5hYmxlZAorICAgIHsKKyAgICAgICAgY29uc3QgbWFjcm9GcmFn
bWVudFByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhwZWN0RXJyb3IoZ2wsICJn
b29kVmVydGV4U2hhZGVyIiwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiKTsKKyAgICAgICAgaWYgKGV4
dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIGlmIChtYWNyb0ZyYWdtZW50UHJvZ3JhbSkg
eworICAgICAgICAgICAgICAgIC8vIEV4cGVjdGVkIHJlc3VsdAorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBkZWZpbmVkIGluIHNoYWRlcnMg
d2hlbiBleHRlbnNpb24gaXMgZW5hYmxlZCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgbm90IGRl
ZmluZWQgaW4gc2hhZGVycyB3aGVuIGV4dGVuc2lvbiBpcyBlbmFibGVkIik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobWFjcm9GcmFnbWVudFByb2dy
YW0pIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMgZGVmaW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdMX09FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcyBub3QgZGVmaW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9u
IGRpc2FibGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBB
bHdheXMgZXhwZWN0IHRoZSBzaGFkZXIgbWlzc2luZyB0aGUgI3ByYWdtYSB0byBmYWlsICh3aGV0
aGVyIGVuYWJsZWQgb3Igbm90KQorICAgIHsKKyAgICAgICAgY29uc3QgbWlzc2luZ1ByYWdtYUZy
YWdtZW50UHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBlY3RFcnJvcihnbCwg
Imdvb2RWZXJ0ZXhTaGFkZXIiLCAibWlzc2luZ1ByYWdtYUZyYWdtZW50U2hhZGVyIik7CisgICAg
ICAgIGlmIChtaXNzaW5nUHJhZ21hRnJhZ21lbnRQcm9ncmFtKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJTaGFkZXIgYnVpbHQtaW5zIGFsbG93ZWQgd2l0aG91dCAjZXh0ZW5zaW9uIHByYWdt
YSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hhZGVyIGJ1
aWx0LWlucyBkaXNhbGxvd2VkIHdpdGhvdXQgI2V4dGVuc2lvbiBwcmFnbWEiKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFRyeSB0byBjb21waWxlIGEgc2hhZGVyIHVzaW5nIHRoZSBidWls
dC1pbnMgdGhhdCBzaG91bGQgb25seSBzdWNjZWVkIGlmIGVuYWJsZWQKKyAgICB7CisgICAgICAg
IGNvbnN0IHRlc3RGcmFnbWVudFByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhw
ZWN0RXJyb3IoZ2wsICJnb29kVmVydGV4U2hhZGVyIiwgInRlc3RGcmFnbWVudFNoYWRlciIpOwor
ICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHRlc3RGcmFn
bWVudFByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaGFkZXIgYnVpbHQt
aW5zIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSB3aGVuIGV4dGVuc2lvbiBlbmFibGVkIik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNoYWRlciBidWls
dC1pbnMgZmFpbGVkIHRvIGNvbXBpbGUgd2hlbiBleHRlbnNpb24gZW5hYmxlZCIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRlc3RGcmFnbWVudFBy
b2dyYW0pIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgYnVpbHQtaW5zIGNv
bXBpbGVkIHN1Y2Nlc3NmdWxseSB3aGVuIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaGFkZXIgYnVpbHQtaW5z
IGZhaWxlZCB0byBjb21waWxlIHdoZW4gZXh0ZW5zaW9uIGRpc2FibGVkIik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIHRlc3RzIHNwZWNpZmljYWxseSB0
aGF0ICNleHRlbnNpb24gZGlyZWN0aXZlcyBhZnRlciBvdGhlciBjb2RlIGFyZQorICAgIC8vIHZh
bGlkLCBwZXIgc3BlYyAoNi4zNSBHTFNMIEVTICNleHRlbnNpb24gZGlyZWN0aXZlIGxvY2F0aW9u
KS4KKyAgICAvLworICAgIC8vIFRoaXMgdGVzdCBhY3R1YWxseSBoYXMgbm90aGluZyB0byBkbyB3
aXRoIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcywgYnV0CisgICAgLy8gaXMgaW5zZXJ0ZWQgaGVy
ZSBiZWNhdXNlIHRoaXMgZXh0ZW5zaW9uIGlzIHViaXF1aXRvdXMuCisgICAgLy8KKyAgICAvLyBU
aGlzIHRlc3QgaXMgbm90IGFzIHN0cmljdCBhcyB0aGUgc3BlYyAtIGl0IGRvZXNuJ3QgcmVxdWly
ZSB0aGF0ICJ0aGUKKyAgICAvLyBzY29wZSAuLi4gaXMgYWx3YXlzIHRoZSB3aG9sZSBzaGFkZXIi
LCBiZWNhdXNlIGltcGxlbWVudGF0aW9ucyAoQU5HTEUKKyAgICAvLyBzaGFkZXIgdHJhbnNsYXRv
cikgZG8gbm90IGFjdHVhbGx5IGltcGxlbWVudCB0aGlzIGNvcnJlY3RseS4gVGhlIHRlc3QKKyAg
ICAvLyBjb3ZlcmFnZSBpcyBpbnRlbnRpb25hbGx5IGxlZnQgaW5jb21wbGV0ZSAtIGluIHByYWN0
aWNlLCBhbGwgV2ViR0wKKyAgICAvLyBzaGFkZXJzIGFscmVhZHkgd29yayB3aXRoIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLCBzbyB0aGVyZSdzIG5vCisgICAgLy8gcHJhY3RpY2FsIHJlYXNv
biB0byB1cGRhdGUgdGhlbSB0byBtYXRjaCB0aGUgc3BlYy4gQ29udmVyc2VseSwgdGhlCisgICAg
Ly8gY3VycmVudGx5IGltcGxlbWVudGVkIHJ1bGVzIGFyZSB0b28gY29tcGxleCB0byBmb3JtYWxp
emUgaW4gc3BlYy4KKyAgICAvLworICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9j
cmJ1Zy5jb20vOTcxNjYwIC4KKyAgICB7CisgICAgICAgIGNvbnN0IHRlc3RGcmFnbWVudFByb2dy
YW1XaXRoRXh0ZW5zaW9uTm90QXRUb3AgPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhwZWN0
RXJyb3IoZ2wsICJnb29kVmVydGV4U2hhZGVyIiwgInRlc3RGcmFnbWVudFNoYWRlcldpdGhFeHRl
bnNpb25Ob3RBdFRvcCIpOworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAg
ICAgICAgaWYgKHRlc3RGcmFnbWVudFByb2dyYW1XaXRoRXh0ZW5zaW9uTm90QXRUb3ApIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaGFkZXIgd2l0aCAjZXh0ZW5zaW9uIGFmdGVyIG5v
bi1wcmVwcm9jZXNzb3IgY29kZTogY29tcGlsZWQgc3VjY2Vzc2Z1bGx5IHdoZW4gZXh0ZW5zaW9u
IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiU2hhZGVyIHdpdGggI2V4dGVuc2lvbiBhZnRlciBub24tcHJlcHJvY2Vzc29yIGNvZGU6
IGZhaWxlZCB0byBjb21waWxlIHdoZW4gZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuT3V0cHV0VGVzdHMoKSB7Cisg
ICAgLy8gVGhpcyB0ZXN0cyBkb2VzIHNldmVyYWwgZHJhd3Mgd2l0aCB2YXJpb3VzIHZhbHVlcyBv
ZiB6LgorICAgIC8vIFRoZSBvdXRwdXQgb2YgdGhlIGZyYWdtZW50IHNoYWRlciBpczoKKyAgICAv
LyBbZEZkeCh6KSwgZEZkeSh6KSwgZndpZHRoKHopLCAxLjBdCisgICAgLy8gVGhlIGV4cGVjdGVk
IG1hdGg6IChub3RlIHRoZSBjb252ZXJzaW9uIHRvIHVpbnQ4KQorICAgIC8vICAgIGNhbnZhcy53
aWR0aCA9IGNhbnZhcy5oZWlnaHQgPSA1MAorICAgIC8vICAgIGRGZHggPSB0b3RhbENoYW5nZS54
IC8gY2FudmFzLndpZHRoICA9IDAuNSAvIDUwLjAgPSAwLjAxCisgICAgLy8gICAgZEZkeSA9IHRv
dGFsQ2hhbmdlLnkgLyBjYW52YXMuaGVpZ2h0ID0gMC41IC8gNTAuMCA9IDAuMDEKKyAgICAvLyAg
ICBmdyA9IGFicyhkRmR4ICsgZEZkeSkgPSAwLjAxICsgMC4wMSA9IDAuMDIKKyAgICAvLyAgICBy
ID0gZmxvb3IoZEZkeCAqIDQwLjAgKiAyNTUpID0gMTAyCisgICAgLy8gICAgZyA9IGZsb29yKGRG
ZHkgKiA0MC4wICogMjU1KSA9IDEwMgorICAgIC8vICAgIGIgPSBmbG9vcihmdyAqIDQwLjAgKiAy
NTUpID0gMjA0CisKKyAgICB2YXIgZSA9IDU7IC8vIEFtb3VudCBvZiB2YXJpYW5jZSB0byBhbGxv
dyBpbiByZXN1bHQgcGl4ZWxzIC0gbWF5IG5lZWQgdG8gYmUgdHdlYWtlZCBoaWdoZXIKKworICAg
IGRlYnVnKCJUZXN0aW5nIHZhcmlvdXMgZHJhd3MgZm9yIHZhbGlkIGJ1aWx0LWluIGZ1bmN0aW9u
IGJlaGF2aW9yIik7CisKKyAgICBjYW52YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUw
OworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Cisg
ICAgZ2wuaGludChleHQuRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMsIGdsLk5J
Q0VTVCk7CisKKyAgICB2YXIgcG9zaXRpb25Mb2MgPSAwOworICAgIHZhciB0ZXhjb29yZExvYyA9
IDE7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbIm91dHB1dFZlcnRl
eFNoYWRlciIsICJvdXRwdXRGcmFnbWVudFNoYWRlciJdLCBbJ3ZQb3NpdGlvbicsICd0ZXhDb29y
ZDAnXSwgWzAsIDFdKTsKKyAgICB2YXIgcXVhZFBhcmFtZXRlcnMgPSB3dHUuc2V0dXBVbml0UXVh
ZChnbCwgcG9zaXRpb25Mb2MsIHRleGNvb3JkTG9jKTsKKworICAgIGZ1bmN0aW9uIGV4cGVjdFJl
c3VsdCh0YXJnZXQsIG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIGxvY2F0aW9ucyA9IFsKKyAgICAg
ICAgICAgIFsgMC4xLCAwLjEgXSwKKyAgICAgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAg
ICAgIFsgMC4xLCAwLjkgXSwKKyAgICAgICAgICAgIFsgMC45LCAwLjkgXSwKKyAgICAgICAgICAg
IFsgMC41LCAwLjUgXQorICAgICAgICBdOworICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGxv
Y2F0aW9ucy5sZW5ndGg7IG4rKykgeworICAgICAgICAgICAgdmFyIGxvYyA9IGxvY2F0aW9uc1tu
XTsKKyAgICAgICAgICAgIHZhciBweCA9IE1hdGguZmxvb3IobG9jWzBdICogY2FudmFzLndpZHRo
KTsKKyAgICAgICAgICAgIHZhciBweSA9IE1hdGguZmxvb3IobG9jWzFdICogY2FudmFzLmhlaWdo
dCk7CisgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBweCwgcHksIDEsIDEsIHRh
cmdldCwgbWVzc2FnZSwgNCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gc2V0
dXBCdWZmZXJzKHRsLCB0ciwgYmwsIGJyKSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCBxdWFkUGFyYW1ldGVyc1swXSk7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgMS4wLCAgMS4wLCB0
ciwKKyAgICAgICAgICAtMS4wLCAgMS4wLCB0bCwKKyAgICAgICAgICAtMS4wLCAtMS4wLCBibCwK
KyAgICAgICAgICAgMS4wLCAgMS4wLCB0ciwKKyAgICAgICAgICAtMS4wLCAtMS4wLCBibCwKKyAg
ICAgICAgICAgMS4wLCAtMS4wLCBicl0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2MsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisgICAgfTsKKworICAgIC8vIERyYXcgMTogKG5vIHZhcmlhdGlvbikKKyAgICBzZXR1cEJ1ZmZl
cnMoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICAgIGV4cGVjdFJlc3VsdChbMCwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICAgIkRy
YXcgMSAobm8gdmFyaWF0aW9uKSBzaG91bGQgcGFzcyIpOworCisgICAgLy8gRHJhdyAyOiAodmFy
aWF0aW9uIGluIHgpCisgICAgc2V0dXBCdWZmZXJzKDEuMCwgMC4wLCAxLjAsIDAuMCk7CisgICAg
d3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICBleHBlY3RSZXN1bHQoWzIwNCwgMCwg
MjA0LCAyNTVdLAorICAgICAgICAgICAgICAgICAiRHJhdyAyICh2YXJpYXRpb24gaW4geCkgc2hv
dWxkIHBhc3MiKTsKKworICAgIC8vIERyYXcgMzogKHZhcmlhdGlvbiBpbiB5KQorICAgIHNldHVw
QnVmZmVycygxLjAsIDEuMCwgMC4wLCAwLjApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgZXhwZWN0UmVzdWx0KFswLCAyMDQsIDIwNCwgMjU1XSwKKyAgICAgICAgICAg
ICAgICAgIkRyYXcgMyAodmFyaWF0aW9uIGluIHkpIHNob3VsZCBwYXNzIik7CisKKyAgICAvLyBE
cmF3IDQ6ICh2YXJpYXRpb24gaW4geCAmIHkpCisgICAgc2V0dXBCdWZmZXJzKDEuMCwgMC41LCAw
LjUsIDAuMCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICBleHBlY3RS
ZXN1bHQoWzEwMiwgMTAyLCAyMDQsIDI1NV0sCisgICAgICAgICAgICAgICAgICJEcmF3IDQgKHZh
cmlhdGlvbiBpbiB4ICYgeSkgc2hvdWxkIHBhc3MiKTsKK30KKworZnVuY3Rpb24gcnVuVW5pcXVl
T2JqZWN0VGVzdCgpCit7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBnZXRFeHRlbnNpb24oKSBy
ZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBlYWNoIHRpbWUiKTsKKyAgICBleHQgPSBudWxsOworICAg
IGdsLmdldEV4dGVuc2lvbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikubXlQcm9wZXJ0eSA9
IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91bGRCZSgnZ2wu
Z2V0RXh0ZW5zaW9uKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKS5teVByb3BlcnR5JywgJzIn
KTsKK30KKworZnVuY3Rpb24gcnVuRGVmZXJyZWRMaW5rVGVzdHMoKSB7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJUZXN0aW5nIGRlZmVycmVkIHNoYWRlciBjb21waWxhdGlvbiB0ZXN0cy4i
KTsKKworICAgIC8vIFRlc3QgZm9yIGNvbXBpbGF0aW9uIGZhaWx1cmVzIHRoYXQgYXJlIGNhdXNl
ZCBieSBtaXNzaW5nIGV4dGVuc2lvbnMKKyAgICAvLyBkbyBub3Qgc3VjY2VlZCBpZiBleHRlbnNp
b25zIGFyZSBlbmFibGVkIGR1cmluZyBsaW5raW5nLiBUaGlzIHdvdWxkCisgICAgLy8gb25seSBo
YXBwZW4gZm9yIGRlZmVycmVkIHNoYWRlciBjb21waWxhdGlvbnMuCisKKyAgICAvLyBGaXJzdCB0
ZXN0IGlmIGxpbmsgc3VjY2VlZHMgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4KKyAgICB2YXIgZ2xF
bmFibGVkID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworICAgIHZhciBleHRFbmFibGVkID0gZ2xF
bmFibGVkLmdldEV4dGVuc2lvbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgaWYg
KCFleHRFbmFibGVkKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkRlZmVycmVkIGxpbmsgdGVzdCBl
eHBlY3RzIHRoZSBleHRlbnNpb24gdG8gYmUgc3VwcG9ydGVkIik7CisgICAgfQorCisgICAgdmFy
IHZlcnRleFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbEVuYWJsZWQsICJnb29k
VmVydGV4U2hhZGVyIik7CisgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXJG
cm9tU2NyaXB0KGdsRW5hYmxlZCwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiKTsKKworICAgIGlmICgh
dmVydGV4U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlcikgeworICAgICAgICB0ZXN0RmFpbGVkKCJD
b3VsZCBub3QgY3JlYXRlIGdvb2Qgc2hhZGVycy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbEVuYWJsZWQsIFt2ZXJ0ZXhT
aGFkZXIsIGZyYWdtZW50U2hhZGVyXSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiQ29tcGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5hYmxlZCBmYWlsZWQuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgbmV3IGNvbnRleHQgdG8g
dGVzdCBsaW5rIGZhaWx1cmUgd2l0aG91dCBleHRlbnNpb24gZW5hYmxlZC4KKyAgICB2YXIgZ2xE
ZWZlcnJlZCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKworICAgIHZhciB2ZXJ0ZXhTaGFkZXIg
PSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2xEZWZlcnJlZCwgImdvb2RWZXJ0ZXhTaGFkZXIi
LCBnbERlZmVycmVkLlZFUlRFWF9TSEFERVIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTsK
KyAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2xEZWZl
cnJlZCwgIm1hY3JvRnJhZ21lbnRTaGFkZXIiLCBnbERlZmVycmVkLkZSQUdNRU5UX1NIQURFUiwg
dW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpOworCisgICAgaWYgKHZlcnRleFNoYWRlciA9PSBu
dWxsIHx8IGZyYWdtZW50U2hhZGVyID09IG51bGwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291
bGQgbm90IGNyZWF0ZSBzaGFkZXJzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gU2hhZGVyIGNvbXBpbGF0aW9ucyBzaG91bGQgaGF2ZSBmYWlsZWQgZHVlIHRvIGV4dGVuc2lv
bnMgbm90IGVuYWJsZWQuCisgICAgZ2xEZWZlcnJlZC5nZXRFeHRlbnNpb24oIk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbERl
ZmVycmVkLCBbdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcl0pOworICAgIGlmIChwcm9ncmFt
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvbXBpbGF0aW9uIHdpdGggZXh0ZW5zaW9uIGRpc2Fi
bGVkIHRoZW4gbGlua2luZyB3aXRoIGV4dGVuc2lvbiBlbmFibGVkIHNob3VsZCBoYXZlIGZhaWxl
ZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RQYXNzZWQoIkNvbXBpbGF0
aW9uIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkIHRoZW4gbGlua2luZyB3aXRoIGV4dGVuc2lvbiBl
bmFibGVkLiIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRl
eHR1cmUtZmxvYXQtbGluZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LWxp
bmVhci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOGYxOTRlODI1MWZkNTM5MGM4MzgxZDg1MDZhNzM1ODU1
ZThjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LWxp
bmVhci5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb2VzLXRleHR1cmUt
ZmxvYXQtYW5kLWhhbGYtZmxvYXQtbGluZWFyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitkZXNjcmlwdGlvbigiVGVzdCBPRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIsIGlmIGF2YWlsYWJsZS4iKTsKKworY29uc3Qgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Citjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKworKGZ1bmN0aW9uKCkg
eworICAgIGlmICghd3R1LmlzV2ViR0wyKGdsKSkgeworICAgICAgICBpZiAoIWdsLmdldEV4dGVu
c2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiTm8g
T0VTX3RleHR1cmVfZmxvYXQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgdGVzdFRleExpbmVhcihnbCwgIk9FU190
ZXh0dXJlX2Zsb2F0X2xpbmVhciIsICJSR0JBMzJGIiwgIkZMT0FUIik7Cit9KSgpOworCitkZWJ1
ZygiIik7Citjb25zdCBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52
YXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNjgxMDgzODk5MmJmOTBhMWEwZmEzZDNmYjJkYTE4M2RlOGU4ZDFlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5o
dG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBpZiAo
IWdsLmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAgICAgICB0ZXN0UGFz
c2VkKCJObyBPRVNfdGV4dHVyZV9mbG9hdCBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxs
eSBlbmFibGVkIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbiIpOworICAgIHJldHVybiB0cnVl
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdC
QSIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vcmVzb3VyY2VzLyIpKCkn
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9h
dC13aXRoLWltYWdlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0
aC1pbWFnZS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRhZDhkMjdkYmIxMjRkNWM4ZGY0OGZkNzQ3
MzhlZjkwOTU5NjljZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUt
ZmxvYXQtd2l0aC1pbWFnZS1kYXRhLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1kYXRhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVf
ZmxvYXQiKSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfdGV4dHVyZV9mbG9hdCBzdXBw
b3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9FU190ZXh0dXJlX2Zsb2F0IGV4
dGVuc2lvbiIpOworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vcmVzb3VyY2VzLyIpKCknPgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIy
IiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmZjE5ZTVkNTFiMmJj
NDkyNGI1N2M4ZjFkOTcwMDJmZTNhMjJjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT0VTX3RleHR1
cmVfZmxvYXQiKSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfdGV4dHVyZV9mbG9hdCBz
dXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9FU190ZXh0dXJlX2Zsb2F0
IGV4dGVuc2lvbiIpOworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vcmVzb3VyY2VzLyIpKCknPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2NiZDUw
ZjE1YzMyOGQ4ZjM0YWYwN2E3MDM3Y2NiOTY2OWZjZTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgaWYgKCFnbC5nZXRFeHRlbnNpb24oIk9F
U190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3RleHR1cmVf
ZmxvYXQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4dHVy
ZV9mbG9hdCBleHRlbnNpb24iKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSdnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJGTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uL3Jlc291cmNlcy8iKSgpJz4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzx2aWRlbyB3aWR0aD0iNjQwIiBo
ZWlnaHQ9IjIyOCIgaWQ9InZpZCIgY29udHJvbHMgbXV0ZWQ+CisgIDxzb3VyY2Ugc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVkLWdyZWVuLm1wNCIgIHR5cGU9J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMx
LjQyRTAxRSwgbXA0YS40MC4yIicgLz4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWQtZ3JlZW4ud2VibXZwOC53ZWJtIiB0eXBlPSd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwgdm9y
YmlzIicgLz4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWQtZ3JlZW4udGhlb3Jh
Lm9ndiIgIHR5cGU9J3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInIC8+Cis8L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3NTdjYjIyZWNmYjA0YjNkZjhjNjc3MDIyNDcwNzdlZGZkZDdkN2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSw0MjYg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
Pk9FU190ZXh0dXJlX2Zsb2F0L1dFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9leHQtZmxvYXQtYmxlbmQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRpbmct
cG9pbnQgdGV4dHVyZXMgLS0+Cis8c2NyaXB0IGlkPSJ0ZXN0RnJhZ21lbnRTaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7Cit1bmlmb3JtIHZlYzQgc3VidHJhY3RvcjsKK3ZhcnlpbmcgdmVjMiB0
ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCBjb2xvciA9IHRleHR1cmUyRCh0ZXgs
IHRleENvb3JkKTsKKyAgICBpZiAoYWJzKGNvbG9yLnIgLSBzdWJ0cmFjdG9yLnIpICsKKyAgICAg
ICAgYWJzKGNvbG9yLmcgLSBzdWJ0cmFjdG9yLmcpICsKKyAgICAgICAgYWJzKGNvbG9yLmIgLSBz
dWJ0cmFjdG9yLmIpICsKKyAgICAgICAgYWJzKGNvbG9yLmEgLSBzdWJ0cmFjdG9yLmEpIDwgOC4w
KSB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEu
MCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRp
bmctcG9pbnQgcmVuZGVyIHRhcmdldHMgLS0+Cis8c2NyaXB0IGlkPSJwb3NpdGlvblZlcnRleFNo
YWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9u
Owordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZmxvYXRpbmdQb2ludEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgxMDAwMC4wLCAxMDAwMC4wLCAxMDAwMC4wLCAxMDAwMC4wKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhl
IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGFuZCBXRUJHTF9jb2xvcl9i
dWZmZXJfZmxvYXQgZXh0ZW5zaW9ucywgaWYgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7
CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7
CisKKyAgICB2YXIgdGV4dHVyZWRTaGFkZXJzID0gWworICAgICAgICB3dHUuc2ltcGxlVGV4dHVy
ZVZlcnRleFNoYWRlciwKKyAgICAgICAgInRlc3RGcmFnbWVudFNoYWRlciIKKyAgICBdOworICAg
IHZhciB0ZXN0UHJvZ3JhbSA9CisgICAgICAgIHd0dS5zZXR1cFByb2dyYW0oZ2wsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZWRTaGFkZXJzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddLAorICAgICAgICAgICAgICAgICAgICAgICAg
IFswLCAxXSk7CisgICAgdmFyIHF1YWRQYXJhbWV0ZXJzID0gd3R1LnNldHVwVW5pdFF1YWQoZ2ws
IDAsIDEpOworCisgICAgLy8gRmlyc3QgdmVyaWZ5IHRoYXQgYWxsb2NhdGlvbiBvZiBmbG9hdGlu
Zy1wb2ludCB0ZXh0dXJlcyBmYWlscyBpZgorICAgIC8vIHRoZSBleHRlbnNpb24gaGFzIG5vdCBi
ZWVuIGVuYWJsZWQgeWV0LgorICAgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodGVzdFByb2dyYW0s
IGZhbHNlKTsKKworICAgIGlmICghZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIp
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIE9FU190ZXh0dXJlX2Zsb2F0IHN1cHBvcnQgLS0g
dGhpcyBpcyBsZWdhbCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nl
c3NmdWxseSBlbmFibGVkIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbiIpOworICAgICAgICAv
LyBJZiBhbHBoYSB2YWx1ZSBpcyBtaXNzaW5nIGZyb20gYSB0ZXh0dXJlIGl0IGdldHMgZmlsbGVk
IHRvIDEgd2hlbiBzYW1wbGluZyBhY2NvcmRpbmcgdG8gR0xFUzIuMCB0YWJsZSAzLjEyCisgICAg
ICAgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodGVzdFByb2dyYW0sIHRydWUsIGdsLlJHQkEsIDQs
IFsxMDAwMCwgMTAwMDAsIDEwMDAwLCAxMDAwMF0pOworICAgICAgICBydW5UZXh0dXJlQ3JlYXRp
b25UZXN0KHRlc3RQcm9ncmFtLCB0cnVlLCBnbC5SR0IsIDMsIFsxMDAwMCwgMTAwMDAsIDEwMDAw
LCAxXSk7CisgICAgICAgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodGVzdFByb2dyYW0sIHRydWUs
IGdsLkxVTUlOQU5DRSwgMSwgWzEwMDAwLCAxMDAwMCwgMTAwMDAsIDFdKTsKKyAgICAgICAgcnVu
VGV4dHVyZUNyZWF0aW9uVGVzdCh0ZXN0UHJvZ3JhbSwgdHJ1ZSwgZ2wuQUxQSEEsIDEsIFswLCAw
LCAwLCAxMDAwMF0pOworICAgICAgICBydW5UZXh0dXJlQ3JlYXRpb25UZXN0KHRlc3RQcm9ncmFt
LCB0cnVlLCBnbC5MVU1JTkFOQ0VfQUxQSEEsIDIsIFsxMDAwMCwgMTAwMDAsIDEwMDAwLCAxMDAw
MF0pOworCisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgICAgIHZhciByZW5kZXJhYmxlID0gaXNSZW5kZXJhYmxlKGdsKTsKKyAgICAgICAgICAg
IHZhciByZW5kZXJhYmxlRXh0TmFtZSA9ICJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiOworICAg
ICAgICAgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKS5pbmNs
dWRlcyhyZW5kZXJhYmxlRXh0TmFtZSk7CisgICAgICAgICAgICBpZiAocmVuZGVyYWJsZSAmJiAh
c3VwcG9ydGVkKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUkdCQS9GTE9BVCBpcyBj
b2xvciByZW5kZXJhYmxlIGJ1dCAiICsgcmVuZGVyYWJsZUV4dE5hbWUgKyAiIG5vdCBleHBvc2Vk
Iik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN1cHBvcnRlZCAmJiAhcmVuZGVyYWJsZSkgewor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQocmVuZGVyYWJsZUV4dE5hbWUgKyAiIGlzIGV4cG9z
ZWQgYnV0IFJHQkEvRkxPQVQgaXMgbm90IGNvbG9yIHJlbmRlcmFibGUiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWQpIHsKKyAgICAgICAgICAgICAgICBydW5SZW5k
ZXJUYXJnZXRBbmRSZWFkYmFja1Rlc3QodGVzdFByb2dyYW0sIGdsLlJHQkEsIDQsIFsxMDAwMCwg
MTAwMDAsIDEwMDAwLCAxMDAwMF0sIDAsIHRydWUpOworICAgICAgICAgICAgICAgIHJ1blJlbmRl
clRhcmdldEFuZFJlYWRiYWNrVGVzdCh0ZXN0UHJvZ3JhbSwgZ2wuUkdCLCAzLCBbMTAwMDAsIDEw
MDAwLCAxMDAwMCwgMV0sIDAsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBydW5SZW5kZXJUYXJn
ZXRBbmRSZWFkYmFja1Rlc3QodGVzdFByb2dyYW0sIGdsLlJHQkEsIDQsIFsxMDAwMCwgMTAwMDAs
IDEwMDAwLCAxMDAwMF0sIDEsIHRydWUpOworICAgICAgICAgICAgICAgIHJ1blJlbmRlclRhcmdl
dEFuZFJlYWRiYWNrVGVzdCh0ZXN0UHJvZ3JhbSwgZ2wuUkdCQSwgNCwgWzEwMDAwLCAxMDAwMCwg
MTAwMDAsIDEwMDAwXSwgMC41LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBydW5GcmFtZWJ1ZmZl
clRlc3QoKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiVGVzdCBmbG9hdDMyIGJsZW5kaW5nIHdpdGhvdXQgRVhUX2Zsb2F0X2JsZW5kLiIpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHRGbG9hdEJsZW5kKGdsLlJHQkEpOworCisgICAgICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQgZmxv
YXQzMiBibGVuZGluZyBzdWNjZWVkcyB3aXRoIEVYVF9mbG9hdF9ibGVuZC4iKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWdsLmdldEV4dGVuc2lvbigiRVhUX2Zsb2F0X2JsZW5kIikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTm8gRVhUX2Zsb2F0X2JsZW5kIHN1cHBvcnQgLS0g
dGhpcyBpcyBsZWdhbCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRlc3RFeHRGbG9hdEJsZW5kKGdsLlJHQkEpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KSgpOworCisgICAgICAgIHJ1blVuaXF1ZU9iamVjdFRlc3Qo
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzUmVuZGVyYWJsZShnbCkgeworICAgIHZhciB0ZXgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEs
IDAsIGdsLlJHQkEsIGdsLkZMT0FULCBudWxsKTsKKworICAgIHZhciBmYiA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7
CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworCisgICAgdmFyIHN0YXR1cyA9IGds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGdsLmRlbGV0ZUZy
YW1lYnVmZmVyKGZiKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisKKyAgICByZXR1cm4g
c3RhdHVzID09IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFOworfQorCitmdW5jdGlvbiBhbGxvY2F0
ZVRleHR1cmUoKQoreworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXh0dXJlIHBhcmFtZXRlciBz
ZXR1cCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJldHVybiB0ZXh0dXJlOworfQorCitmdW5jdGlv
biBjaGVja1JlbmRlcmluZ1Jlc3VsdHMoKQoreworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAs
IDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIpOworfQorCitmdW5jdGlvbiBydW5UZXh0
dXJlQ3JlYXRpb25UZXN0KHRlc3RQcm9ncmFtLCBleHRlbnNpb25FbmFibGVkLCBvcHRfZm9ybWF0
LCBvcHRfbnVtQ2hhbm5lbHMsIG9wdF9zdWJ0cmFjdG9yKQoreworICAgIHZhciBmb3JtYXQgPSBv
cHRfZm9ybWF0IHx8IGdsLlJHQkE7CisgICAgdmFyIG51bWJlck9mQ2hhbm5lbHMgPSBvcHRfbnVt
Q2hhbm5lbHMgfHwgNDsKKyAgICB2YXIgZXhwZWN0RmFpbHVyZSA9ICFleHRlbnNpb25FbmFibGVk
OworICAgIHZhciBzdWJ0cmFjdG9yID0gb3B0X3N1YnRyYWN0b3IgfHwgWzEwMDAwLCAxMDAwMCwg
MTAwMDAsIDEwMDAwXTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGluZyBmb3Jt
YXQ6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZvcm1hdCkgKworICAgICAgICAgICIgZXhw
ZWN0OiIgKyAoZXh0ZW5zaW9uRW5hYmxlZCA/ICJzdWNjZXNzIiA6ICJmYWlsdXJlIikpOworCisg
ICAgdmFyIHRleHR1cmUgPSBhbGxvY2F0ZVRleHR1cmUoKTsKKyAgICAvLyBHZW5lcmF0ZSBkYXRh
LgorICAgIHZhciB3aWR0aCA9IDI7CisgICAgdmFyIGhlaWdodCA9IDI7CisgICAgdmFyIGRhdGEg
PSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGRhdGEubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGRh
dGFbaWldID0gMTAwMDA7CisgICAgfQorICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIGdsLkZMT0FULCBkYXRhKTsKKyAg
ICBpZiAoZXhwZWN0RmFpbHVyZSkgeworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX0VOVU0sICJmbG9hdGluZy1wb2ludCB0ZXh0dXJlIGFsbG9jYXRpb24gbXVzdCBi
ZSBkaXNhbGxvd2VkIGlmIE9FU190ZXh0dXJlX2Zsb2F0IGlzbid0IGVuYWJsZWQiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBhbGxvY2F0aW9uIHNob3VsZCBz
dWNjZWVkIGlmIE9FU190ZXh0dXJlX2Zsb2F0IGlzIGVuYWJsZWQiKTsKKyAgICB9CisgICAgLy8g
VmVyaWZ5IHRoYXQgdGhlIHRleHR1cmUgYWN0dWFsbHkgd29ya3MgZm9yIHNhbXBsaW5nIGFuZCBj
b250YWlucyB0aGUgZXhwZWN0ZWQgZGF0YS4KKyAgICBnbC51bmlmb3JtNGZ2KGdsLmdldFVuaWZv
cm1Mb2NhdGlvbih0ZXN0UHJvZ3JhbSwgInN1YnRyYWN0b3IiKSwgc3VidHJhY3Rvcik7CisgICAg
d3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICBjaGVja1JlbmRlcmluZ1Jlc3VsdHMo
KTsKKworICAgIC8vIENoZWNrIHRoYXQgbGluZWFyIGZhaWxzLgorICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAg
IHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBb
MjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworfQorCitmdW5jdGlvbiBhcnJheVRv
U3RyaW5nKGFyciwgc2l6ZSkgeworICAgIHZhciBteVNpemU7CisgICAgaWYgKCFzaXplKQorICAg
ICAgICBteVNpemUgPSBhcnIubGVuZ3RoOworICAgIGVsc2UKKyAgICAgICAgbXlTaXplID0gc2l6
ZTsKKyAgICB2YXIgb3V0ID0gIlsiOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBteVNpemU7
ICsraWkpIHsKKyAgICBpZiAoaWkgPiAwKSB7CisgICAgICAgIG91dCArPSAiLCAiOworICAgIH0K
KyAgICBvdXQgKz0gYXJyW2lpXTsKKyAgICB9CisgICAgcmV0dXJuIG91dCArICJdIjsKK30KKwor
ZnVuY3Rpb24gcnVuUmVuZGVyVGFyZ2V0QW5kUmVhZGJhY2tUZXN0KHRlc3RQcm9ncmFtLCBmb3Jt
YXQsIG51bWJlck9mQ2hhbm5lbHMsIHN1YnRyYWN0b3IsIHRleFN1YkltYWdlQ292ZXIsIHJlcXVp
cmVSZW5kZXJhYmxlKQoreworICAgIHZhciBmb3JtYXRTdHJpbmcgPSB3dHUuZ2xFbnVtVG9TdHJp
bmcoZ2wsIGZvcm1hdCk7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIGZsb2F0
aW5nLXBvaW50ICIgKyBmb3JtYXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQiICsgKHRleFN1Yklt
YWdlQ292ZXIgPiAwID8gIiBhZnRlciBjYWxsaW5nIHRleFN1YkltYWdlIiA6ICIiKSk7CisKKyAg
ICB2YXIgdGV4dHVyZSA9IGFsbG9jYXRlVGV4dHVyZSgpOworICAgIHZhciB3aWR0aCA9IDI7Cisg
ICAgdmFyIGhlaWdodCA9IDI7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgZ2wuRkxPQVQsIG51bGwpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZmxvYXRpbmctcG9pbnQgdGV4dHVy
ZSBhbGxvY2F0aW9uIHNob3VsZCBzdWNjZWVkIGlmIE9FU190ZXh0dXJlX2Zsb2F0IGlzIGVuYWJs
ZWQiKTsKKworICAgIC8vIFRyeSB0byB1c2UgdGhpcyB0ZXh0dXJlIGFzIGEgcmVuZGVyIHRhcmdl
dC4KKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJl
MkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0
ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAg
ICAvLyBJdCBpcyBsZWdhbCBmb3IgYSBXZWJHTCBpbXBsZW1lbnRhdGlvbiBleHBvc2luZyB0aGUg
T0VTX3RleHR1cmVfZmxvYXQgZXh0ZW5zaW9uIHRvCisgICAgLy8gc3VwcG9ydCBmbG9hdGluZy1w
b2ludCB0ZXh0dXJlcyBidXQgbm90IGFzIGF0dGFjaG1lbnRzIHRvIGZyYW1lYnVmZmVyIG9iamVj
dHMuCisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9
IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIGlmIChyZXF1aXJlUmVuZGVyYWJs
ZSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImZsb2F0aW5nLXBvaW50ICIgKyBmb3JtYXRTdHJp
bmcgKyAiIHJlbmRlciB0YXJnZXQgbm90IHN1cHBvcnRlZCIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBkZWJ1ZygiZmxvYXRpbmctcG9pbnQgIiArIGZvcm1hdFN0cmluZyArICIgcmVuZGVy
IHRhcmdldCBub3Qgc3VwcG9ydGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh0ZXhTdWJJbWFnZUNvdmVyID4gMCkgeworICAgICAgICAvLyBF
bnN1cmUgdGhhdCByZXBsYWNpbmcgdGhlIHdob2xlIHRleHR1cmUgb3IgYSBwYXJ0IG9mIGl0IHdp
dGggdGV4U3ViSW1hZ2UyRCBkb2Vzbid0IGFmZmVjdCByZW5kZXJhYmlsaXR5CisgICAgICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICB2YXIgZGF0YSA9
IG5ldyBGbG9hdDMyQXJyYXkod2lkdGggKiBoZWlnaHQgKiBudW1iZXJPZkNoYW5uZWxzICogdGV4
U3ViSW1hZ2VDb3Zlcik7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgMCwgMCwgd2lkdGgsIGhlaWdodCAqIHRleFN1YkltYWdlQ292ZXIsIGZvcm1hdCwgZ2wuRkxP
QVQsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InRleFN1YkltYWdlMkQgc2hvdWxkIHN1Y2NlZWQgaWYgT0VTX3RleHR1cmVfZmxvYXQgaXMgZW5h
YmxlZCIpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAg
ICAgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZW5kZXIg
dGFyZ2V0IHN1cHBvcnQgY2hhbmdlZCBhZnRlciBjYWxsaW5nIHRleFN1YkltYWdlMkQiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciByZW5kZXJQcm9n
cmFtID0KKyAgICAgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbInBvc2l0aW9uVmVydGV4U2hhZGVyIiwgImZsb2F0aW5nUG9pbnRGcmFnbWVudFNoYWRl
ciJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndlBvc2l0aW9uJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgWzBdKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIHRvIGZs
b2F0aW5nLXBvaW50IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIE5vdyBzYW1w
bGUgZnJvbSB0aGUgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBhbmQgdmVyaWZ5IHdlIGdvdCB0aGUg
Y29ycmVjdCB2YWx1ZXMuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBu
dWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBn
bC51c2VQcm9ncmFtKHRlc3RQcm9ncmFtKTsKKyAgICBnbC51bmlmb3JtMWkoZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAidGV4IiksIDApOworICAgIGdsLnVuaWZvcm00ZnYoZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAic3VidHJhY3RvciIpLCBzdWJ0cmFjdG9y
KTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIGZyb20gZmxvYXRpbmctcG9pbnQgdGV4
dHVyZSBzaG91bGQgc3VjY2VlZCIpOworICAgIGNoZWNrUmVuZGVyaW5nUmVzdWx0cygpOworCisg
ICAgLy8gRmluYWxseSwgaWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGZsb2F0aW5nLXBv
aW50IHJlYWRiYWNrLCB2ZXJpZnkgaXQuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYm8pOworICAgIHZhciBpbXBsRm9ybWF0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLklN
UExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUKTsKKyAgICB2YXIgaW1wbFR5cGUgPSBnbC5n
ZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImdldFBhcmFtZXRlciBvZiBJTVBMRU1F
TlRBVElPTl9DT0xPUl9SRUFEX3tGT1JNQVR8VFlQRX0gc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICBp
ZiAoKGltcGxGb3JtYXQgPT0gZ2wuUkdCQSB8fCBpbXBsRm9ybWF0ID09IGdsLlJHQikgJiYgaW1w
bFR5cGUgPT0gZ2wuRkxPQVQpIHsKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgcmVhZGJhY2sgb2YgZmxv
YXRpbmctcG9pbnQgdmFsdWVzIik7CisgICAgdmFyIGFycmF5U2l6ZSA9IChpbXBsRm9ybWF0ID09
IGdsLlJHQkEpID8gNCA6IDMKKyAgICB2YXIgYnVmID0gbmV3IEZsb2F0MzJBcnJheShhcnJheVNp
emUpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgaW1wbEZvcm1hdCwgaW1wbFR5cGUg
LCBidWYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZFBp
eGVscyBmcm9tIGZsb2F0aW5nLXBvaW50IHJlbmRlcmJ1ZmZlciBzaG91bGQgc3VjY2VlZCIpOwor
ICAgIHZhciBvayA9IHRydWU7CisgICAgdmFyIHRvbGVyYW5jZSA9IDguMDsgLy8gVE9ETzogZmFj
dG9yIHRoaXMgb3V0IGZyb20gYm90aCB0aGlzIHRlc3QgYW5kIHRoZSBzdWJ0cmFjdG9yIHNoYWRl
ciBhYm92ZS4KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYnVmLmxlbmd0aDsgKytpaSkgewor
ICAgICAgICBpZiAoTWF0aC5hYnMoYnVmW2lpXSAtIHN1YnRyYWN0b3JbaWldKSA+IHRvbGVyYW5j
ZSkgeworICAgICAgICBvayA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAob2spIHsKKyAgICAgICAgdGVzdFBhc3NlZCgicmVhZFBpeGVscyBvZiBmbG9h
dC10eXBlIGRhdGEgZnJvbSBmbG9hdGluZy1wb2ludCByZW5kZXJidWZmZXIgc3VjY2VlZGVkIik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZFBpeGVscyBvZiBmbG9hdC10
eXBlIGRhdGEgZnJvbSBmbG9hdGluZy1wb2ludCByZW5kZXJidWZmZXIgZmFpbGVkOiBleHBlY3Rl
ZCAiCisgICAgICAgICAgICAgICArIGFycmF5VG9TdHJpbmcoc3VidHJhY3RvciwgYXJyYXlTaXpl
KSArICIsIGdvdCAiICsgYXJyYXlUb1N0cmluZyhidWYpKTsKKyAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiBydW5VbmlxdWVPYmplY3RUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRlc3RpbmcgdGhhdCBnZXRFeHRlbnNpb24oKSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBl
YWNoIHRpbWUiKTsKKyAgICBnbC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0IikubXlQ
cm9wZXJ0eSA9IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91
bGRCZSgnZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIpLm15UHJvcGVydHknLCAn
MicpOworfQorCisvLyBNYWtlIHN1cmUgd2UgY2FuIGNhbGwgcmVhZFBpeGVscyB3aXRoIHRoZSBw
YXNzZWQgaW4gYXJyYXlCdWZmZXJDb25zdHJ1Y3RvciBhbmQgdGhhdCB0aGUgY29sb3IKKy8vIGNo
YW5uZWxzIGFyZSB0aGUgb25lcyB3ZSBleHBlY3QuIElmIHRoZXJlIGlzIGEgbWlzbWF0Y2ggYmV0
d2VlbiB0aGUgZ2xUeXBlIGFuZCBhcnJheUJ1ZmZlciB0eXBlLAorLy8gZmFpbCB0aGUgdGVzdC4K
K2Z1bmN0aW9uIHZlcmlmeVJlYWRQaXhlbHNDb2xvcnMocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEs
IGFscGhhUkdCLCBnbEZvcm1hdCwgZ2xUeXBlLCBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKSB7Cisg
ICAgdmFyIHR5cGVOYW1lID0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBnbFR5cGUpOworCisgICAg
ZGVidWcod3R1LmdsRW51bVRvU3RyaW5nKGdsLCBnbEZvcm1hdCkgKyAiIGZyYW1lYnVmZmVyIHdp
dGggIiArIHR5cGVOYW1lICsgIiByZWFkYmFjay4iKTsKKworICAgIHZhciBhcnJheUJ1ZmZlciA9
IG5ldyBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwg
MSwgMSwgZ2wuUkdCQSwgZ2xUeXBlLCBhcnJheUJ1ZmZlcik7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZWFkUGl4ZWxzIHNob3VsZCByZXR1cm4gTk9fRVJST1Ig
d2hlbiByZWFkaW5nICIgKyB0eXBlTmFtZSArICIgZGF0YS4iKTsKKworICAgIGFzc2VydE1zZyhh
cnJheUJ1ZmZlclswXSA9PT0gcmVkLCAiUmVkIGNoYW5uZWwgc2hvdWxkIGJlICIgKyByZWQgKyAi
IGZvciAiICsgdHlwZU5hbWUgKyAiIHJlYWRQaXhlbHMuIFJlY2VpdmVkOiAiICsgYXJyYXlCdWZm
ZXJbMF0pOworICAgIGFzc2VydE1zZyhhcnJheUJ1ZmZlclsxXSA9PT0gZ3JlZW4sICJHcmVlbiBj
aGFubmVsIHNob3VsZCBiZSAiICsgZ3JlZW4gKyAiIGZvciAiICsgdHlwZU5hbWUgKyAiIHJlYWRQ
aXhlbHMuIFJlY2VpdmVkOiAiICsgYXJyYXlCdWZmZXJbMV0pOworICAgIGFzc2VydE1zZyhhcnJh
eUJ1ZmZlclsyXSA9PT0gYmx1ZSwgIkJsdWUgY2hhbm5lbCBzaG91bGQgYmUgIiArIGJsdWUgKyAi
IGZvciAiICsgdHlwZU5hbWUgKyAiIHJlYWRQaXhlbHMuIFJlY2VpdmVkOiAiICsgYXJyYXlCdWZm
ZXJbMl0pOworICAgIGlmIChnbEZvcm1hdCA9PT0gZ2wuUkdCQSkgeworICAgICAgICBhc3NlcnRN
c2coYXJyYXlCdWZmZXJbM10gPT09IGFscGhhLCAiQWxwaGEgY2hhbm5lbCBzaG91bGQgYmUgIiAr
IGFscGhhICsgIiBmb3IgIiArIHR5cGVOYW1lICsgIiByZWFkUGl4ZWxzLiBSZWNlaXZlZDogIiAr
IGFycmF5QnVmZmVyWzNdKTsKKyAgICB9IGVsc2UgaWYgKGdsRm9ybWF0ID09PSBnbC5SR0IpIHsK
KyAgICAgICAgYXNzZXJ0TXNnKGFycmF5QnVmZmVyWzNdID09PSBhbHBoYVJHQiwgIkFscGhhIGNo
YW5uZWwgc2hvdWxkIGJlICIgKyBhbHBoYVJHQiArICIgZm9yICIgKyB0eXBlTmFtZSArICIgcmVh
ZFBpeGVscy4gUmVjZWl2ZWQ6ICIgKyBhcnJheUJ1ZmZlclszXSk7CisgICAgfQorCisgICAgLy8g
TWFrZSBzdXJlIGFueSBhcnJheUJ1ZmZlciB0eXBlcyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gYXJy
YXlCdWZmZXJDb25zdHJ1Y3RvciBmYWlsIHJlYWRQaXhlbHMuCisgICAgaWYgKGFycmF5QnVmZmVy
Q29uc3RydWN0b3IgIT09IFVpbnQ4QXJyYXkpIHsKKyAgICAgICAgYXJyYXlCdWZmZXIgPSBuZXcg
VWludDhBcnJheSg0KTsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JB
LCBnbFR5cGUsIGFycmF5QnVmZmVyKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJyZWFkUGl4ZWxzIHNob3VsZCByZXR1cm4gSU5WQUxJRF9P
UEVSQVRJT04gd2hlbiByZWFkaW5nIG1pc21hdGNoZWQgdHlwZXMuICIgKyBVaW50OEFycmF5LnRv
U3RyaW5nKCkpOworICAgIH0KKyAgICBpZiAoYXJyYXlCdWZmZXJDb25zdHJ1Y3RvciAhPT0gRmxv
YXQzMkFycmF5KSB7CisgICAgICAgIGFycmF5QnVmZmVyID0gbmV3IEZsb2F0MzJBcnJheSg0KTsK
KyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbFR5cGUsIGFycmF5
QnVmZmVyKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJyZWFkUGl4ZWxzIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gd2hlbiBy
ZWFkaW5nIG1pc21hdGNoZWQgdHlwZXMuICIgKyBGbG9hdDMyQXJyYXkudG9TdHJpbmcoKSk7Cisg
ICAgfQorICAgIGlmIChhcnJheUJ1ZmZlckNvbnN0cnVjdG9yICE9PSBVaW50MTZBcnJheSkgewor
ICAgICAgICBhcnJheUJ1ZmZlciA9IG5ldyBVaW50MTZBcnJheSg0KTsKKyAgICAgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbFR5cGUsIGFycmF5QnVmZmVyKTsKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJyZWFkUGl4
ZWxzIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gd2hlbiByZWFkaW5nIG1pc21hdGNo
ZWQgdHlwZXMuICIgKyBVaW50MTZBcnJheS50b1N0cmluZygpKTsKKyAgICB9Cit9CisKKy8vIFZl
cmlmeSB0aGF0IGZsb2F0IHRleHR1cmVzIGF0dGFjaGVkIHRvIGZyYW1lIGJ1ZmZlcnMgZnVuY3Rp
b24gY29ycmVjdGx5IHdpdGggcmVnYXJkIHRvIGZyYW1lYnVmZmVyCisvLyBjb21wbGV0bmVzcywg
SU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQvVFlQRSBhbmQgcmVhZFBpeGVscworZnVu
Y3Rpb24gcnVuRnJhbWVidWZmZXJUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
RnJhbWVidWZmZXIgVGVzdHMiKTsKKworICAgIHZhciB0ZXh0dXJlID0gYWxsb2NhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICB2
YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAw
KTsKKworICAgIGRlYnVnKCJFbnN1cmUgbm9uLWNvbG9yLXJlbmRlcmFibGUgZm9ybWF0cyBbTFVN
SU5BTkNFLCBMVU1JTkFOQ0VfQUxQSEEsIEFMUEhBXSBmYWlsLiIpOworICAgIHZhciBhcnJheUJ1
ZmZlckZsb2F0T3V0cHV0ID0gbmV3IEZsb2F0MzJBcnJheSg0KTsgLy8gNCBjb2xvciBjaGFubmVs
cworICAgIFtnbC5MVU1JTkFOQ0UsIGdsLkxVTUlOQU5DRV9BTFBIQSwgZ2wuQUxQSEFdLmZvckVh
Y2goZnVuY3Rpb24oYmFkRm9ybWF0KSB7CisgICAgICAgIGRlYnVnKHd0dS5nbEVudW1Ub1N0cmlu
ZyhnbCwgYmFkRm9ybWF0KSArICIgZnJhbWVidWZmZXIiKTsKKworICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGJhZEZvcm1hdCwgMSwgMSwgMCwgYmFkRm9ybWF0LCBnbC5G
TE9BVCwgbnVsbCk7CisgICAgICAgIHNob3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQi
KTsKKworICAgICAgICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5JTVBMRU1FTlRB
VElPTl9DT0xPUl9SRUFEX0ZPUk1BVCkiKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1B
VCBzaG91bGQgZmFpbCBmb3IgaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcnMuIik7CisKKyAgICAgICAg
c2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVB
RF9UWVBFKSIpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSBzaG91bGQgZmFpbCBmb3Ig
aW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcnMuIik7CisKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAw
LCAxLCAxLCBnbC5SR0JBLCBnbC5GTE9BVCwgYXJyYXlCdWZmZXJGbG9hdE91dHB1dCk7CisgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OICwgInJlYWRQaXhlbHMgc2hvdWxkIGZhaWwgb24gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcnMu
Iik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9KTsKKworICAgIGRlYnVnKCJFbnN1cmUgY29s
b3IgcmVuZGVyYWJsZSBmb3JtYXRzIFtSR0JBLCBSR0JdIHN1Y2NlZWQuIik7CisgICAgdmFyIGFy
cmF5QnVmZmVyRmxvYXRJbnB1dCA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7IC8vIDQgY29sb3IgY2hh
bm5lbHMKKyAgICBhcnJheUJ1ZmZlckZsb2F0SW5wdXRbMF0gPSAwOworICAgIGFycmF5QnVmZmVy
RmxvYXRJbnB1dFsxXSA9IC4yNTsKKyAgICBhcnJheUJ1ZmZlckZsb2F0SW5wdXRbMl0gPSAuNTA7
CisgICAgYXJyYXlCdWZmZXJGbG9hdElucHV0WzNdID0gLjc1OworCisgICAgW2dsLlJHQkEsIGds
LlJHQl0uZm9yRWFjaChmdW5jdGlvbihnb29kRm9ybWF0KSB7CisgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgZGVidWcod3R1LmdsRW51bVRvU3RyaW5nKGdsLCBnb29kRm9ybWF0KSArICIgZnJh
bWVidWZmZXIgdGVzdHMiKTsKKworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdvb2RGb3JtYXQsIDEsIDEsIDAsIGdvb2RGb3JtYXQsIGdsLkZMT0FULCBhcnJheUJ1ZmZl
ckZsb2F0SW5wdXQpOworICAgICAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5G
UkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkZvcm1hdCBpcyBub3QgcmVuZGVyYWJsZS4gVGhpcyBpcyBhbGxvd2VkLiIpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHZlcmlmeVJlYWRQaXhlbHND
b2xvcnMoCisgICAgICAgICAgICAwLjAwLCAvLyByZWQKKyAgICAgICAgICAgIDAuMjUsIC8vIGdy
ZWVuCisgICAgICAgICAgICAwLjUwLCAvLyBibHVlCisgICAgICAgICAgICAwLjc1LCAvLyBhbHBo
YQorICAgICAgICAgICAgMS4wLCAgLy8gYWxwaGFSR0IKKyAgICAgICAgICAgIGdvb2RGb3JtYXQs
CisgICAgICAgICAgICBnbC5GTE9BVCwKKyAgICAgICAgICAgIEZsb2F0MzJBcnJheSk7CisKKyAg
ICAgICAgdmFyIGltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0ID0gZ2wuZ2V0UGFyYW1ldGVy
KGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUKTsKKyAgICAgICAgYXNzZXJ0TXNn
KGltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0ID09PSBnbC5SR0JBIHx8IGltcGxlbWVudGF0
aW9uQ29sb3JSZWFkRm9ybWF0ID09PSBnbC5SR0IsCisgICAgICAgICAgICAiSU1QTEVNRU5UQVRJ
T05fQ09MT1JfUkVBRF9GT1JNQVQgc2hvdWxkIGJlIGNvbG9yIHJlbmRlcmFibGU6IFJHQkEgb3Ig
UkdCLiBSZWNlaXZlZDogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW1wbGVtZW50YXRpb25D
b2xvclJlYWRGb3JtYXQpKTsKKworICAgICAgICB2YXIgaW1wbGVtZW50YXRpb25Db2xvclJlYWRU
eXBlID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSk7
CisgICAgICAgIGFzc2VydE1zZyhpbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUgPT09IGdsLlVO
U0lHTkVEX0JZVEUgfHwKKyAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uQ29sb3JSZWFk
VHlwZSA9PT0gZ2wuRkxPQVQgfHwKKyAgICAgICAgICAgICAgICAgICJJTVBMRU1FTlRBVElPTl9D
T0xPUl9SRUFEX1RZUEUgbXVzdCBiZSBvbmUgb2YgVU5TSUdORURfQllURSBvciBGTE9BVCAiICsK
KyAgICAgICAgICAgICAgICAgICJSZWNlaXZlZDogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwg
aW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKSk7CisgICAgfSk7Cit9CisKK2RlYnVnKCIiKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LWxpbmVhci5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LWxpbmVhci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ1OTM0Njg1N2U5OTY0ZGM2YjgzYmE4NTIxZGMwY2ZiNzhjYWVkMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtbGluZWFyLmh0bWwKQEAg
LTAsMCArMSw0NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9vZXMtdGV4dHVyZS1mbG9hdC1hbmQtaGFs
Zi1mbG9hdC1saW5lYXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCJUZXN0IE9FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyLCBpZiBhdmFpbGFibGUuIik7CisKK2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
Y29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBp
ZiAod3R1LmlzV2ViR0wyKGdsKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0X2xpbmVhciBpcyBjb3JlIGluIFdlYkdMIDIuIik7CisKKyAgICBjb25zdCBl
eHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICBpZiAo
IWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IHN1
cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8v
IFJlcXVpcmVkIGJ5IHRoZSB0ZXN0IGhhcm5lc3MuCisgICAgZ2wuSEFMRl9GTE9BVF9PRVMgPSBl
eHQuSEFMRl9GTE9BVF9PRVM7CisgICAgdGVzdFRleExpbmVhcihnbCwgIk9FU190ZXh0dXJlX2hh
bGZfZmxvYXRfbGluZWFyIiwgdW5kZWZpbmVkLCAiSEFMRl9GTE9BVF9PRVMiKTsKK30pKCk7CisK
K2RlYnVnKCIiKTsKK2NvbnN0IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0
LXdpdGgtY2FudmFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0
aC1jYW52YXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTkxYzU4YjE5ZTM2M2I0MjA0NTNiZmE3Y2M4NDY5
N2I0Nzg3MGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxm
LWZsb2F0LXdpdGgtY2FudmFzLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHZhciBleHQgPSBudWxsOworCisgICAgaWYgKCEoZXh0ID0gZ2wuZ2V0
RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpKSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoIk5vIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBSZXF1aXJlZCBieSB0aGUg
dGVzdCBoYXJuZXNzLgorICAgIGdsLkhBTEZfRkxPQVRfT0VTID0gZXh0LkhBTEZfRkxPQVRfT0VT
OworCisgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCBleHRlbnNpb24iKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSdnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJIQUxGX0ZM
T0FUX09FUyIsIHRlc3RQcm9sb2d1ZSwgICIuLi8uLi9yZXNvdXJjZXMvIikoKSc+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0
aC1pbWFnZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0
aC1pbWFnZS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmM2Y5N2IwODhjMDM3Y2QyZjZhMGYxZGMz
NGMxZmNmYTc0MmNmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUt
aGFsZi1mbG9hdC13aXRoLWltYWdlLWRhdGEuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHZhciBleHQgPSBudWxsOworCisgICAgaWYgKCEo
ZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIk5vIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgc3VwcG9ydCAtLSB0aGlz
IGlzIGxlZ2FsIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBSZXF1
aXJlZCBieSB0aGUgdGVzdCBoYXJuZXNzLgorICAgIGdsLkhBTEZfRkxPQVRfT0VTID0gZXh0LkhB
TEZfRkxPQVRfT0VTOworCisgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBleHRlbnNpb24iKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdC
QSIsICJIQUxGX0ZMT0FUX09FUyIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uL3Jlc291cmNlcy8iKSgp
Jz4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZs
b2F0LXdpdGgtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13
aXRoLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0ODZlYWMwZThmNDFlNzZjN2NhZGUwOWI1ZDQw
OWI5YjljYmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFs
Zi1mbG9hdC13aXRoLWltYWdlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgdmFyIGV4dCA9IG51bGw7CisKKyAgICBpZiAoIShleHQgPSBnbC5nZXRF
eHRlbnNpb24oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiTm8gT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFJlcXVpcmVkIGJ5IHRoZSB0
ZXN0IGhhcm5lc3MuCisgICAgZ2wuSEFMRl9GTE9BVF9PRVMgPSBleHQuSEFMRl9GTE9BVF9PRVM7
CisKKyAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IGV4dGVuc2lvbiIpOworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIkhBTEZfRkxP
QVRfT0VTIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vcmVzb3VyY2VzLyIpKCknPgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgt
dmlkZW8uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVv
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzE5YjMzMjExMzk0M2EyNGI2OGU0MDA5ZTkyZWEzOGEyZWZhODk3
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13
aXRoLXZpZGVvLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgdmFyIGV4dCA9IG51bGw7CisKKyAgICBpZiAoIShleHQgPSBnbC5nZXRFeHRlbnNpb24o
Ik9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFJlcXVpcmVkIGJ5IHRoZSB0ZXN0IGhhcm5l
c3MuCisgICAgZ2wuSEFMRl9GTE9BVF9PRVMgPSBleHQuSEFMRl9GTE9BVF9PRVM7CisKKyAgICB0
ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGV4
dGVuc2lvbiIpOworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIkhBTEZfRkxPQVRfT0VTIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vcmVzb3VyY2VzLyIpKCknPgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHZpZGVvIHdpZHRoPSI2NDAiIGhl
aWdodD0iMjI4IiBpZD0idmlkIiBjb250cm9scyBtdXRlZD4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWQtZ3JlZW4ubXA0IiAgdHlwZT0ndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEu
NDJFMDFFLCBtcDRhLjQwLjIiJyAvPgorICA8c291cmNlIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
ZC1ncmVlbi53ZWJtdnA4LndlYm0iIHR5cGU9J3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4LCB2b3Ji
aXMiJyAvPgorICA8c291cmNlIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZC1ncmVlbi50aGVvcmEu
b2d2IiAgdHlwZT0ndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSwgdm9yYmlzIicgLz4KKzwvdmlk
ZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWhhbGYtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkNWQ4MTYwOGFmMzZkNDU1YzM0MTAxZGZhNWJlMTM5MDlmNzY4ZGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQuaHRtbApA
QCAtMCwwICsxLDQ3NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsi
PiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczJkIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhl
aWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0idGVzdEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQgdGV4OwordW5pZm9ybSB2
ZWM0IHN1YnRyYWN0b3I7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQorewor
ICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7CisgICAgaWYgKGFicyhj
b2xvci5yIC0gc3VidHJhY3Rvci5yKSArCisgICAgICAgIGFicyhjb2xvci5nIC0gc3VidHJhY3Rv
ci5nKSArCisgICAgICAgIGFicyhjb2xvci5iIC0gc3VidHJhY3Rvci5iKSArCisgICAgICAgIGFi
cyhjb2xvci5hIC0gc3VidHJhY3Rvci5hKSA8IDguMCkgeworICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIH0KK30KKzwvc2NyaXB0Pgor
PCEtLSBTaGFkZXJzIGZvciB0ZXN0aW5nIGhhbGYtZmxvYXRpbmctcG9pbnQgcmVuZGVyIHRhcmdl
dHMgLS0+Cis8c2NyaXB0IGlkPSJmbG9hdGluZ1BvaW50RnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEwMDAwLjAsIDEwMDAwLjAsIDEwMDAwLjAsIDEwMDAwLjApOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgd2l0aCBudWxsL25vbi1u
dWxsIEFycmF5QnVmZmVyVmlldyIpOworCitkZWJ1ZygiIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwor
dmFyIGNvbG9yQ2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczJkIik7Citj
b2xvckNhbnZhcy53aWR0aCA9IDI7Citjb2xvckNhbnZhcy5oZWlnaHQgPSAyOwordmFyIGN0eCA9
IGNvbG9yQ2FudmFzLmdldENvbnRleHQoIjJkIik7CitjdHguZmlsbFN0eWxlID0gInJnYigyNTUs
MCwwKSI7CitjdHguZmlsbFJlY3QoMCwgMCwgMiwgMik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcyk7CisvLyBUaGlzIGNvbnN0YW50IG11c3QgYmUgZGVmaW5lZCBpbiBvcmRl
ciB0byBydW4gdGhlIHRleHR1cmUgY3JlYXRpb24gdGVzdCB3aXRob3V0IHRoZSBleHRlbnNpb24g
ZW5hYmxlZC4KK3ZhciBoYWxmRmxvYXRPRVNFbnVtID0gMHg4RDYxOwordmFyIGV4dCA9IG51bGw7
CisKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3Qg
ZXhpc3RzIik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3Rz
Iik7CisKKyAgICAvLyBWZXJpZnkgdGhhdCBhbGxvY2F0aW9uIG9mIHRleHR1cmUgZmFpbHMgaWYg
ZXh0ZW5zaW9uIGlzIG5vdCBlbmFibGVkCisgICAgcnVuVGV4dHVyZUNyZWF0aW9uVGVzdChmYWxz
ZSk7CisgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikK
KyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IHN1cHBvcnQuIFRoaXMgaXMgbGVnYWwiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGV4
dGVuc2lvbiIpOworCisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFk
KGdsKTsKKworICAgICAgICAvLyBDaGVjayBpZiBjcmVhdGlvbiBvZiB0ZXh0dXJlIHN1Y2NlZWQn
cyB3aXRoIHZhcmlvdXMgZm9ybWF0cyBhbmQgbnVsbCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAg
dmFyIGZvcm1hdHMgPSBbCisgICAgICAgICAgeyBmb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgICAg
ZXhwZWN0ZWQ6IFsyNTUsICAgMCwgICAwLCAyNTVdLCB9LAorICAgICAgICAgIHsgZm9ybWF0OiBn
bC5SR0IsICAgICAgICAgICAgIGV4cGVjdGVkOiBbMjU1LCAgIDAsICAgMCwgMjU1XSwgfSwKKyAg
ICAgICAgICB7IGZvcm1hdDogZ2wuTFVNSU5BTkNFLCAgICAgICBleHBlY3RlZDogWzI1NSwgMjU1
LCAyNTUsIDI1NV0sIH0sCisgICAgICAgICAgeyBmb3JtYXQ6IGdsLkFMUEhBLCAgICAgICAgICAg
ZXhwZWN0ZWQ6IFsgIDAsICAgMCwgICAwLCAyNTVdLCB9LAorICAgICAgICAgIHsgZm9ybWF0OiBn
bC5MVU1JTkFOQ0VfQUxQSEEsIGV4cGVjdGVkOiBbMjU1LCAyNTUsIDI1NSwgMjU1XSwgfSwKKyAg
ICAgICAgXTsKKyAgICAgICAgZm9ybWF0cy5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKKyAgICAgICAg
ICAgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodHJ1ZSwgZi5mb3JtYXQsIG51bGwsIGYuZXhwZWN0
ZWQpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBUZXh0dXJlIGNyZWF0aW9uIHNob3VsZCBm
YWlsIHdoZW4gcGFzc2VkIHdpdGggbm9uLW51bGwsIG5vbi1VaW50MTYgQXJyYXlCdWZmZXJWaWV3
CisgICAgICAgIGZvcm1hdHMuZm9yRWFjaChmdW5jdGlvbihmKSB7CisgICAgICAgICAgICB2YXIg
d2lkdGggPSAyOworICAgICAgICAgICAgdmFyIGhlaWdodCA9IDI7CisgICAgICAgICAgICB2YXIg
Zm9ybWF0ID0gZi5mb3JtYXQ7CisKKyAgICAgICAgICAgIC8vIEZsb2F0MzJBcnJheQorICAgICAg
ICAgICAgdmFyIGZsb2F0MzJEYXRhID0gbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAq
IGdldE51bWJlck9mQ2hhbm5lbHMoZm9ybWF0KSk7CisgICAgICAgICAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgZmxvYXQzMkRhdGEubGVuZ3RoOyBpaSsrKSB7CisgICAgICAgICAgICAgICAgZmxv
YXQzMkRhdGFbaWldID0gMTAwMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJ1blRleHR1
cmVDcmVhdGlvblRlc3QodHJ1ZSwgZm9ybWF0LCBmbG9hdDMyRGF0YSwgbnVsbCk7CisKKyAgICAg
ICAgICAgIC8vIEludDE2QXJyYXkKKyAgICAgICAgICAgIHZhciBpbnQxNkRhdGEgPSBuZXcgSW50
MTZBcnJheSh3aWR0aCAqIGhlaWdodCAqIGdldE51bWJlck9mQ2hhbm5lbHMoZm9ybWF0KSk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgIGludDE2RGF0YS5sZW5ndGg7IGlpKysp
IHsKKyAgICAgICAgICAgICAgICBpbnQxNkRhdGFbaWldID0gMTAwMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodHJ1ZSwgZm9ybWF0LCBpbnQxNkRh
dGEsIG51bGwpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBUZXN0IHRoYXQgVWludDE2IGVu
Y29kZWQgaGFsZiBmbG9hdCB2YWx1ZXMgY2FuIGJlIHVzZWQgYXMgdGV4dHVyZSBkYXRhLgorCisg
ICAgICAgIC8vIEZpcnN0IHRlc3QgdGhhdCB2YWx1ZXMgaW4gdGhlIDAtMSByYW5nZSBjYW4gYmUg
d3JpdHRlbiBhbmQgcmVhZC4KKyAgICAgICAgdmFyIGhhbGZGbG9hdE9uZVRoaXJkID0gMHgzNTU1
OyAvLyBIYWxmIGZsb2F0IDEvMworICAgICAgICB2YXIgdWludDE2Rm9ybWF0cyA9IFsKKyAgICAg
ICAgICB7IGZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBleHBlY3RlZDogWzg1LCA4NSwgODUs
ICA4NV0sIH0sCisgICAgICAgICAgeyBmb3JtYXQ6IGdsLlJHQiwgICAgICAgICAgICAgZXhwZWN0
ZWQ6IFs4NSwgODUsIDg1LCAyNTVdLCB9LAorICAgICAgICAgIHsgZm9ybWF0OiBnbC5MVU1JTkFO
Q0UsICAgICAgIGV4cGVjdGVkOiBbODUsIDg1LCA4NSwgMjU1XSwgfSwKKyAgICAgICAgICB7IGZv
cm1hdDogZ2wuQUxQSEEsICAgICAgICAgICBleHBlY3RlZDogWyAwLCAgMCwgIDAsICA4NV0sIH0s
CisgICAgICAgICAgeyBmb3JtYXQ6IGdsLkxVTUlOQU5DRV9BTFBIQSwgZXhwZWN0ZWQ6IFs4NSwg
ODUsIDg1LCAgODVdLCB9LAorICAgICAgICBdOworCisgICAgICAgIHVpbnQxNkZvcm1hdHMuZm9y
RWFjaChmdW5jdGlvbihmKSB7CisgICAgICAgICAgICB2YXIgd2lkdGggPSAyOworICAgICAgICAg
ICAgdmFyIGhlaWdodCA9IDI7CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0gZi5mb3JtYXQ7CisK
KyAgICAgICAgICAgIHZhciB1aW50MTZEYXRhID0gbmV3IFVpbnQxNkFycmF5KHdpZHRoICogaGVp
Z2h0ICogZ2V0TnVtYmVyT2ZDaGFubmVscyhmb3JtYXQpKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGlpID0gMDsgaWkgPCAgdWludDE2RGF0YS5sZW5ndGg7IGlpKyspIHsKKyAgICAgICAgICAgICAg
ICB1aW50MTZEYXRhW2lpXSA9IGhhbGZGbG9hdE9uZVRoaXJkOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcnVuVGV4dHVyZUNyZWF0aW9uVGVzdCh0cnVlLCBmb3JtYXQsIHVpbnQxNkRhdGEs
IGYuZXhwZWN0ZWQpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBOZXh0IGNoZWNrIHRoYXQg
dmFsdWVzIG91dHNpZGUgdGhlIDAtMSByYW5nZSBjYW4gYmUgd3JpdHRlbi4KKyAgICAgICAgdmFy
IGhhbGZGbG9hdFRlbksgPSAweDcwRTI7IC8vIEhhbGYgZmxvYXQgMTAwMDAKKyAgICAgICAgdmFy
IHVpbnQxNkZvcm1hdHMyID0gWworICAgICAgICAgIHsgZm9ybWF0OiBnbC5SR0JBLCBzdWJ0cmFj
dG9yOiBbMTAwMDAsIDEwMDAwLCAxMDAwMCwgMTAwMDBdLCByZXF1aXJlUmVuZGVyYWJsZTogdHJ1
ZX0sCisgICAgICAgICAgeyBmb3JtYXQ6IGdsLlJHQiwgIHN1YnRyYWN0b3I6IFsxMDAwMCwgMTAw
MDAsIDEwMDAwLCAxXSwgcmVxdWlyZVJlbmRlcmFibGU6IGZhbHNlfSwKKyAgICAgICAgXTsKKwor
ICAgICAgICB1aW50MTZGb3JtYXRzMi5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKKyAgICAgICAgICAg
IHZhciB3aWR0aCA9IDI7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gMjsKKyAgICAgICAgICAg
IHZhciBmb3JtYXQgPSBmLmZvcm1hdDsKKworICAgICAgICAgICAgdmFyIHVpbnQxNkRhdGEgPSBu
ZXcgVWludDE2QXJyYXkod2lkdGggKiBoZWlnaHQgKiBnZXROdW1iZXJPZkNoYW5uZWxzKGZvcm1h
dCkpOworICAgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8ICB1aW50MTZEYXRhLmxlbmd0
aDsgaWkrKykgeworICAgICAgICAgICAgICAgIHVpbnQxNkRhdGFbaWldID0gaGFsZkZsb2F0VGVu
SzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJ1blJlbmRlclRlc3QoZm9ybWF0LCBmLnN1
YnRyYWN0b3IsIHVpbnQxNkRhdGEsIGYucmVxdWlyZVJlbmRlcmFibGUpOworICAgICAgICB9KTsK
KworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAg
ICAgICB2YXIgcmVuZGVyYWJsZSA9IGlzUmVuZGVyYWJsZShnbCwgZXh0KTsKKyAgICAgICAgICAg
IHZhciByZW5kZXJhYmxlRXh0TmFtZSA9ICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiOwor
ICAgICAgICAgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKS5p
bmNsdWRlcyhyZW5kZXJhYmxlRXh0TmFtZSk7CisgICAgICAgICAgICBpZiAocmVuZGVyYWJsZSAm
JiAhc3VwcG9ydGVkKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUkdCQS9IQUxGX0ZM
T0FUX09FUyBpcyBjb2xvciByZW5kZXJhYmxlIGJ1dCAiICsgcmVuZGVyYWJsZUV4dE5hbWUgKyAi
IG5vdCBleHBvc2VkIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN1cHBvcnRlZCAmJiAhcmVu
ZGVyYWJsZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQocmVuZGVyYWJsZUV4dE5hbWUg
KyAiIGlzIGV4cG9zZWQgYnV0IFJHQkEvSEFMRl9GTE9BVF9PRVMgaXMgbm90IGNvbG9yIHJlbmRl
cmFibGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWQpIHsKKyAg
ICAgICAgICAgICAgICBydW5SZW5kZXJUZXN0KGdsLlJHQkEsIFsxMDAwMCwgMTAwMDAsIDEwMDAw
LCAxMDAwMF0sIG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgIHJ1blJlbmRlclRlc3QoZ2wu
UkdCLCBbMTAwMDAsIDEwMDAwLCAxMDAwMCwgMV0sIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBydW5GcmFtZWJ1ZmZlclRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkoKTsK
KworICAgICAgICAvLyBDaGVjayBvZiBnZXRFeHRlbnNpb24oKSByZXR1cm5zIHNhbWUgb2JqZWN0
CisgICAgICAgIHJ1blVuaXF1ZU9iamVjdFRlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlz
UmVuZGVyYWJsZShnbCwgZXh0KSB7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsK
KyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZXh0LkhBTEZf
RkxPQVRfT0VTLCBudWxsKTsKKworICAgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5URVhUVVJFXzJELCB0ZXgsIDApOworCisgICAgdmFyIHN0YXR1cyA9IGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
KTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisKKyAgICByZXR1cm4gc3RhdHVzID09IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFOworfQorCitmdW5jdGlvbiBnZXROdW1iZXJPZkNoYW5uZWxz
KGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IGdsLlJHQkEpCisgICAgICAgIHJldHVybiA0
OworICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBnbC5SR0IpCisgICAgICAgIHJldHVybiAzOworICAg
IGVsc2UgaWYgKGZvcm1hdCA9PSBnbC5MVU1JTkFOQ0UgfHwgZm9ybWF0ID09IGdsLkFMUEhBKQor
ICAgICAgICByZXR1cm4gMTsKKyAgICBlbHNlIGlmIChmb3JtYXQgPT0gZ2wuTFVNSU5BTkNFX0FM
UEhBKQorICAgICAgICByZXR1cm4gMjsKK30KKworZnVuY3Rpb24gYWxsb2NhdGVUZXh0dXJlKCkK
K3sKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJF
U1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQ
X1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4dHVyZSBwYXJhbWV0ZXIgc2V0dXAgc2hvdWxk
IHN1Y2NlZWQiKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKK30KKworZnVuY3Rpb24gcnVuVGV4dHVy
ZUNyZWF0aW9uVGVzdChleHRlbnNpb25FbmFibGVkLCBvcHRfZm9ybWF0LCBvcHRfZGF0YSwgb3B0
X2V4cGVjdGVkKQoreworICAgIHZhciBmb3JtYXQgPSBvcHRfZm9ybWF0IHx8IGdsLlJHQkE7Cisg
ICAgdmFyIGRhdGEgPSBvcHRfZGF0YSB8fCBudWxsOworICAgIHZhciBleHBlY3RTdWNjZXNzID0g
dHJ1ZTsKKworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCB8fCAhb3B0X2V4cGVjdGVkKQorICAg
ICAgICBleHBlY3RTdWNjZXNzID0gZmFsc2U7CisgICAgZGVidWcoIlRlc3RpbmcgdGV4dHVyZSBj
cmVhdGlvbiB3aXRoIGV4dGVuc2lvbiAiICsgKGV4dGVuc2lvbkVuYWJsZWQgPyAiZW5hYmxlZCIg
OiAiZGlzYWJsZWQiKSArCisgICAgICAgICAgIiwgZm9ybWF0ICIgKyB3dHUuZ2xFbnVtVG9TdHJp
bmcoZ2wsIGZvcm1hdCkgKyAiLCBhbmQgZGF0YSAiICsgKGRhdGEgPyAibm9uLW51bGwiIDogIm51
bGwiKSArCisgICAgICAgICAgIi4gRXhwZWN0ICIgKyAoZXhwZWN0U3VjY2VzcyA/ICJTdWNjZXNz
IiA6ICJGYWlsdXJlIikpOworCisgICAgdmFyIHRleHR1cmUgPSBhbGxvY2F0ZVRleHR1cmUoKTsK
KyAgICB2YXIgd2lkdGggPSAyOworICAgIHZhciBoZWlnaHQgPSAyOworICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIGhh
bGZGbG9hdE9FU0VudW0sIGRhdGEpOworICAgIGlmKCFleHRlbnNpb25FbmFibGVkKSB7CisgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIkhhbGYgZmxvYXRp
bmcgcG9pbnQgdGV4dHVyZSBtdXN0IGJlIGRpc2FsbG93ZWQgaWYgT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCBpc24ndCBlbmFibGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKCFv
cHRfZXhwZWN0ZWQpIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJIYWxmIGZsb2F0aW5nIHBvaW50IHRleHR1cmUgYWxsb2NhdGlvbiBtdXN0
IGJlIGRpc2FsbG93ZWQgd2hlbiBBcnJheUJ1ZmZlclZpZXcgaXMgbm90LW51bGwgYW5kIG5vdC1V
aW50MTYiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiSGFsZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJl
IGFsbG9jYXRpb24gc2hvdWxkIHN1Y2NlZWQgaWYgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBpcyBl
bmFibGVkIik7CisKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgZm9ybWF0LCBoYWxmRmxvYXRPRVNFbnVtLCBj
b2xvckNhbnZhcyk7CisgICAgICAgIH0KKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBvcHRfZXhwZWN0ZWQpOworICAgICAg
ICAvLyBDaGVjayB0aGF0IGxpbmVhciBmYWlscy4KKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAg
IHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhn
bCwgWzAsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgYmxhY2siKTsKKyAgICB9CisKK30KKworZnVu
Y3Rpb24gY2hlY2tSZW5kZXJpbmdSZXN1bHRzKCkKK3sKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30KKworZnVuY3Rpb24gcnVu
UmVuZGVyVGVzdChmb3JtYXQsIHN1YnRyYWN0b3IsIGRhdGEsIHJlcXVpcmVSZW5kZXJhYmxlKQor
eworICAgIHZhciBmb3JtYXRTdHJpbmcgPSB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZvcm1hdCk7
CisKKyAgICBkZWJ1ZygiIik7CisKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZGVidWcoIlRl
c3RpbmcgaGFsZiBmbG9hdGluZyBwb2ludCAiICsgZm9ybWF0U3RyaW5nICsgIiByZW5kZXIgdGFy
Z2V0Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgaGFsZiBmbG9hdGlu
ZyBwb2ludCAiICsgZm9ybWF0U3RyaW5nICsgIiBmcm9tIGEgVWludDE2QXJyYXkiKTsKKyAgICB9
CisKKyAgICB2YXIgdGV4dHVyZSA9IGFsbG9jYXRlVGV4dHVyZSgpOworICAgIHZhciB3aWR0aCA9
IDI7CisgICAgdmFyIGhlaWdodCA9IDI7CisKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCBleHQuSEFMRl9GTE9BVF9P
RVMsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiSGFs
ZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIGFsbG9jYXRpb24gc2hvdWxkIHN1Y2NlZWQgaWYgT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBpcyBlbmFibGVkIik7CisKKyAgICBpZiAoIWRhdGEpIHsKKyAg
ICAgICAgLy8gVHJ5IHRvIHVzZSB0aGlzIHRleHR1cmUgYXMgcmVuZGVyIHRhcmdldAorICAgICAg
ICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQs
IHRleHR1cmUsIDApOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxs
KTsKKworICAgICAgICAvLyBJdCBpcyBsZWdhbCBmb3IgYSBXZWJHTCBpbXBsZW1lbnRhdGlvbiBl
eHBvc2luZyB0aGUgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBleHRlbnNpb24gdG8KKyAgICAgICAg
Ly8gc3VwcG9ydCBoYWxmIGZsb2F0aW5nIHBvaW50IHRleHR1cmVzIGJ1dCBub3QgYXMgYXR0YWNo
bWVudHMgdG8gZnJhbWVidWZmZXIgb2JqZWN0cy4KKyAgICAgICAgaWYgKGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7
CisgICAgICAgICAgICBpZiAocmVxdWlyZVJlbmRlcmFibGUpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGZvcm1hdFN0cmluZyArICIgcmVuZGVyIHRhcmdldHMgbm90IHN1cHBvcnRlZC4i
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVidWcoZm9ybWF0U3Ry
aW5nICsgIiByZW5kZXIgdGFyZ2V0cyBub3Qgc3VwcG9ydGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciByZW5kZXJQcm9ncmFtID0KKyAgICAgICAgICAgIHd0dS5zZXR1cFByb2dyYW0oZ2wsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3dHUuc2ltcGxlVmVydGV4U2hhZGVyLCAiZmxv
YXRpbmdQb2ludEZyYWdtZW50U2hhZGVyIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsndlBvc2l0aW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswXSk7CisgICAg
ICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlJlbmRlcmluZyB0byBoYWxmIGZsb2F0aW5nIHBvaW50IHRleHR1cmUg
c2hvdWxkIHN1Y2NlZWQiKTsKKyAgICB9CisKKyAgICAvLyBOb3cgc2FtcGxlIGZyb20gdGhlIGhh
bGYgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBhbmQgdmVyaWZ5IHdlIGdvdCB0aGUgY29ycmVjdCB2
YWx1ZXMuCisgICAgdmFyIHRleHR1cmVkU2hhZGVycyA9IFsKKyAgICAgICAgICB3dHUuc2ltcGxl
VGV4dHVyZVZlcnRleFNoYWRlciwKKyAgICAgICAgICAidGVzdEZyYWdtZW50U2hhZGVyIgorICAg
ICAgXTsKKyAgICB2YXIgdGVzdFByb2dyYW0gPQorICAgICAgICB3dHUuc2V0dXBQcm9ncmFtKGds
LAorICAgICAgICAgICAgICAgICAgICAgICAgW3d0dS5zaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVy
LCAidGVzdEZyYWdtZW50U2hhZGVyIl0sCisgICAgICAgICAgICAgICAgICAgICAgICBbJ3ZQb3Np
dGlvbicsICd0ZXhDb29yZDAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxXSk7Cisg
ICAgdmFyIHF1YWRQYXJhbWV0ZXJzID0gd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2wudXNlUHJvZ3JhbSh0ZXN0UHJv
Z3JhbSk7CisgICAgZ2wudW5pZm9ybTRmdihnbC5nZXRVbmlmb3JtTG9jYXRpb24odGVzdFByb2dy
YW0sICJzdWJ0cmFjdG9yIiksIHN1YnRyYWN0b3IpOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIGZy
b20gaGFsZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIHNob3VsZCBzdWNjZWVkIik7CisgICAgY2hl
Y2tSZW5kZXJpbmdSZXN1bHRzKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blVuaXF1ZU9iamVjdFRlc3Qo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGdldEV4dGVuc2lv
bigpIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSIpOworICAgIGV4dCA9IG51bGw7
CisgICAgZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikubXlQcm9wZXJ0
eSA9IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91bGRCZSgn
Z2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikubXlQcm9wZXJ0eScsICcy
Jyk7Cit9CisKKy8vIE1ha2Ugc3VyZSB3ZSBjYW4gY2FsbCByZWFkUGl4ZWxzIHdpdGggdGhlIHBh
c3NlZCBpbiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yIGFuZCB0aGF0IHRoZSBjb2xvcgorLy8gY2hh
bm5lbHMgYXJlIHRoZSBvbmVzIHdlIGV4cGVjdC4gSWYgdGhlcmUgaXMgYSBtaXNtYXRjaCBiZXR3
ZWVuIHRoZSBnbFR5cGUgYW5kIGFycmF5QnVmZmVyIHR5cGUsCisvLyBmYWlsIHRoZSB0ZXN0Lgor
ZnVuY3Rpb24gdmVyaWZ5UmVhZFBpeGVsc0NvbG9ycyhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwg
YWxwaGFSR0IsIGdsRm9ybWF0LCBnbFR5cGUsIGFycmF5QnVmZmVyQ29uc3RydWN0b3IpIHsKKyAg
ICB2YXIgdHlwZU5hbWUgPSB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGdsVHlwZSk7CisKKyAgICBk
ZWJ1Zyh3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGdsRm9ybWF0KSArICIgZnJhbWVidWZmZXIgd2l0
aCAiICsgdHlwZU5hbWUgKyAiIHJlYWRiYWNrLiIpOworCisgICAgdmFyIGFycmF5QnVmZmVyID0g
bmV3IGFycmF5QnVmZmVyQ29uc3RydWN0b3IoNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAx
LCAxLCBnbC5SR0JBLCBnbFR5cGUsIGFycmF5QnVmZmVyKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgInJlYWRQaXhlbHMgc2hvdWxkIHJldHVybiBOT19FUlJPUiB3
aGVuIHJlYWRpbmcgIiArIHR5cGVOYW1lICsgIiBkYXRhLiIpOworCisgICAgYXNzZXJ0TXNnKGFy
cmF5QnVmZmVyWzBdID09PSByZWQsICJSZWQgY2hhbm5lbCBzaG91bGQgYmUgIiArIHJlZCArICIg
Zm9yICIgKyB0eXBlTmFtZSArICIgcmVhZFBpeGVscy4gUmVjZWl2ZWQ6ICIgKyBhcnJheUJ1ZmZl
clswXSk7CisgICAgYXNzZXJ0TXNnKGFycmF5QnVmZmVyWzFdID09PSBncmVlbiwgIkdyZWVuIGNo
YW5uZWwgc2hvdWxkIGJlICIgKyBncmVlbiArICIgZm9yICIgKyB0eXBlTmFtZSArICIgcmVhZFBp
eGVscy4gUmVjZWl2ZWQ6ICIgKyBhcnJheUJ1ZmZlclsxXSk7CisgICAgYXNzZXJ0TXNnKGFycmF5
QnVmZmVyWzJdID09PSBibHVlLCAiQmx1ZSBjaGFubmVsIHNob3VsZCBiZSAiICsgYmx1ZSArICIg
Zm9yICIgKyB0eXBlTmFtZSArICIgcmVhZFBpeGVscy4gUmVjZWl2ZWQ6ICIgKyBhcnJheUJ1ZmZl
clsyXSk7CisgICAgaWYgKGdsRm9ybWF0ID09PSBnbC5SR0JBKSB7CisgICAgICAgIGFzc2VydE1z
ZyhhcnJheUJ1ZmZlclszXSA9PT0gYWxwaGEsICJBbHBoYSBjaGFubmVsIHNob3VsZCBiZSAiICsg
YWxwaGEgKyAiIGZvciAiICsgdHlwZU5hbWUgKyAiIHJlYWRQaXhlbHMuIFJlY2VpdmVkOiAiICsg
YXJyYXlCdWZmZXJbM10pOworICAgIH0gZWxzZSBpZiAoZ2xGb3JtYXQgPT09IGdsLlJHQikgewor
ICAgICAgICBhc3NlcnRNc2coYXJyYXlCdWZmZXJbM10gPT09IGFscGhhUkdCLCAiQWxwaGEgY2hh
bm5lbCBzaG91bGQgYmUgIiArIGFscGhhUkdCICsgIiBmb3IgIiArIHR5cGVOYW1lICsgIiByZWFk
UGl4ZWxzLiBSZWNlaXZlZDogIiArIGFycmF5QnVmZmVyWzNdKTsKKyAgICB9CisKKyAgICAvLyBN
YWtlIHN1cmUgYW55IGFycmF5QnVmZmVyIHR5cGVzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byBhcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yIGZhaWwgcmVhZFBpeGVscy4KKyAgICBpZiAoYXJyYXlCdWZmZXJD
b25zdHJ1Y3RvciAhPT0gVWludDhBcnJheSkgeworICAgICAgICBhcnJheUJ1ZmZlciA9IG5ldyBV
aW50OEFycmF5KDQpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEs
IGdsVHlwZSwgYXJyYXlCdWZmZXIpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgInJlYWRQaXhlbHMgc2hvdWxkIHJldHVybiBJTlZBTElEX09Q
RVJBVElPTiB3aGVuIHJlYWRpbmcgbWlzbWF0Y2hlZCB0eXBlcy4gIiArIFVpbnQ4QXJyYXkudG9T
dHJpbmcoKSk7CisgICAgfQorICAgIGlmIChhcnJheUJ1ZmZlckNvbnN0cnVjdG9yICE9PSBGbG9h
dDMyQXJyYXkpIHsKKyAgICAgICAgYXJyYXlCdWZmZXIgPSBuZXcgRmxvYXQzMkFycmF5KDQpOwor
ICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsVHlwZSwgYXJyYXlC
dWZmZXIpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgInJlYWRQaXhlbHMgc2hvdWxkIHJldHVybiBJTlZBTElEX09QRVJBVElPTiB3aGVuIHJl
YWRpbmcgbWlzbWF0Y2hlZCB0eXBlcy4gIiArIEZsb2F0MzJBcnJheS50b1N0cmluZygpKTsKKyAg
ICB9CisgICAgaWYgKGFycmF5QnVmZmVyQ29uc3RydWN0b3IgIT09IFVpbnQxNkFycmF5KSB7Cisg
ICAgICAgIGFycmF5QnVmZmVyID0gbmV3IFVpbnQxNkFycmF5KDQpOworICAgICAgICBnbC5yZWFk
UGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsVHlwZSwgYXJyYXlCdWZmZXIpOworICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInJlYWRQaXhl
bHMgc2hvdWxkIHJldHVybiBJTlZBTElEX09QRVJBVElPTiB3aGVuIHJlYWRpbmcgbWlzbWF0Y2hl
ZCB0eXBlcy4gIiArIFVpbnQxNkFycmF5LnRvU3RyaW5nKCkpOworICAgIH0KK30KKworLy8gVmVy
aWZ5IHRoYXQgaGFsZiBmbG9hdCB0ZXh0dXJlcyBhdHRhY2hlZCB0byBmcmFtZSBidWZmZXJzIGZ1
bmN0aW9uIGNvcnJlY3RseSB3aXRoIHJlZ2FyZCB0byBmcmFtZWJ1ZmZlcgorLy8gY29tcGxldG5l
c3MsIElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUL1RZUEUgYW5kIHJlYWRQaXhlbHMK
K2Z1bmN0aW9uIHJ1bkZyYW1lYnVmZmVyVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIkZyYW1lYnVmZmVyIFRlc3RzIik7CisKKyAgICB2YXIgdGV4dHVyZSA9IGFsbG9jYXRlVGV4
dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworCisg
ICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSwgMCk7CisKKyAgICBkZWJ1ZygiRW5zdXJlIG5vbi1jb2xvci1yZW5kZXJhYmxlIGZvcm1hdHMg
W0xVTUlOQU5DRSwgTFVNSU5BTkNFX0FMUEhBLCBBTFBIQV0gZmFpbC4iKTsKKyAgICB2YXIgYXJy
YXlCdWZmZXJGbG9hdE91dHB1dCA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7IC8vIDQgY29sb3IgY2hh
bm5lbHMKKyAgICBbZ2wuTFVNSU5BTkNFLCBnbC5MVU1JTkFOQ0VfQUxQSEEsIGdsLkFMUEhBXS5m
b3JFYWNoKGZ1bmN0aW9uKGJhZEZvcm1hdCkgeworICAgICAgICBkZWJ1Zyh3dHUuZ2xFbnVtVG9T
dHJpbmcoZ2wsIGJhZEZvcm1hdCkgKyAiIGZyYW1lYnVmZmVyIik7CisKKyAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBiYWRGb3JtYXQsIDEsIDEsIDAsIGJhZEZvcm1hdCwg
ZXh0LkhBTEZfRkxPQVRfT0VTLCBudWxsKTsKKyAgICAgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVCIpOworCisgICAgICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVy
KGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUKSIpOworICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIklNUExFTUVOVEFUSU9OX0NP
TE9SX1JFQURfRk9STUFUIHNob3VsZCBmYWlsIGZvciBpbmNvbXBsZXRlIGZyYW1lYnVmZmVycy4i
KTsKKworICAgICAgICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5JTVBMRU1FTlRB
VElPTl9DT0xPUl9SRUFEX1RZUEUpIik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFIHNo
b3VsZCBmYWlsIGZvciBpbmNvbXBsZXRlIGZyYW1lYnVmZmVycy4iKTsKKworICAgICAgICBnbC5y
ZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLkZMT0FULCBhcnJheUJ1ZmZlckZsb2F0
T3V0cHV0KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9GUkFN
RUJVRkZFUl9PUEVSQVRJT04gLCAicmVhZFBpeGVscyBzaG91bGQgZmFpbCBvbiBpbmNvbXBsZXRl
IGZyYW1lYnVmZmVycy4iKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0pOworCisgICAgZGVi
dWcoIkVuc3VyZSBjb2xvciByZW5kZXJhYmxlIGZvcm1hdHMgW1JHQkEsIFJHQl0gc3VjY2VlZC4i
KTsKKyAgICB2YXIgYXJyYXlCdWZmZXJIYWxmRmxvYXRJbnB1dCA9IG5ldyBVaW50MTZBcnJheSg0
KTsgLy8gNCBjb2xvciBjaGFubmVscworICAgIGFycmF5QnVmZmVySGFsZkZsb2F0SW5wdXRbMF0g
PSAwOyAgICAgIC8vIDAgaW4gaGFsZiBmbG9hdAorICAgIGFycmF5QnVmZmVySGFsZkZsb2F0SW5w
dXRbMV0gPSAweDM0MDA7IC8vIDAuMjUgaW4gaGFsZiBmbG9hdAorICAgIGFycmF5QnVmZmVySGFs
ZkZsb2F0SW5wdXRbMl0gPSAweDM4MDA7IC8vIDAuNTAgaW4gaGFsZiBmbG9hdAorICAgIGFycmF5
QnVmZmVySGFsZkZsb2F0SW5wdXRbM10gPSAweDNBMDA7IC8vIDAuNzUgaW4gaGFsZiBmbG9hdAor
CisgICAgW2dsLlJHQkEsIGdsLlJHQl0uZm9yRWFjaChmdW5jdGlvbihnb29kRm9ybWF0KSB7Cisg
ICAgICAgIGRlYnVnKHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZ29vZEZvcm1hdCkgKyAiIGZyYW1l
YnVmZmVyIHRlc3RzIik7CisgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdvb2RGb3JtYXQsIDEsIDEsIDAsIGdvb2RGb3JtYXQsIGV4
dC5IQUxGX0ZMT0FUX09FUywgYXJyYXlCdWZmZXJIYWxmRmxvYXRJbnB1dCk7CisgICAgICAgIGlm
IChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgLy8gUGVyIHRoZSBPRVNfY29sb3JfYnVmZmVy
X2hhbGZfZmxvYXQsIFJHQkEvRkxPQVQgc2hvdWxkIGFsd2F5cyBzdWNjZWVkIGZvciByZWFkUGl4
ZWxzCisgICAgICAgICAgICB2ZXJpZnlSZWFkUGl4ZWxzQ29sb3JzKAorICAgICAgICAgICAgICAg
IDAuMDAsIC8vIHJlZAorICAgICAgICAgICAgICAgIDAuMjUsIC8vIGdyZWVuCisgICAgICAgICAg
ICAgICAgMC41MCwgLy8gYmx1ZQorICAgICAgICAgICAgICAgIDAuNzUsIC8vIGFscGhhCisgICAg
ICAgICAgICAgICAgMS4wLCAgLy8gYWxwaGFSR0IKKyAgICAgICAgICAgICAgICBnb29kRm9ybWF0
LAorICAgICAgICAgICAgICAgIGdsLkZMT0FULAorICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJh
eSk7CisKKyAgICAgICAgICAgIHZhciBpbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCA9IGds
LmdldFBhcmFtZXRlcihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCk7CisgICAg
ICAgICAgICBhc3NlcnRNc2coaW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQgPT09IGdsLlJH
QkEgfHwgaW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQgPT09IGdsLlJHQiwKKyAgICAgICAg
ICAgICAgICAiSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQgc2hvdWxkIGJlIGNvbG9y
IHJlbmRlcmFibGU6IFJHQkEgb3IgUkdCLiBSZWNlaXZlZDogIiArIHd0dS5nbEVudW1Ub1N0cmlu
ZyhnbCwgaW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQpKTsKKworICAgICAgICAgICAgdmFy
IGltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSA9IGdsLmdldFBhcmFtZXRlcihnbC5JTVBMRU1F
TlRBVElPTl9DT0xPUl9SRUFEX1RZUEUpOworCisgICAgICAgICAgICAvLyBUaGVyZSBpcyBub3Ro
aW5nIGluIHRoZSBzcGVjaWZpY2F0aW9ucyB0aGF0IGtlZXBzIHRoZQorICAgICAgICAgICAgLy8g
aW1wbGVtZW50YXRpb24gY29sb3IgcmVhZCBmb3JtYXQgYW5kIHR5cGUgZnJvbSBiZWluZyB0aGUK
KyAgICAgICAgICAgIC8vIHNhbWUgYXMgdGhlIGltcGxpY2l0bHkgc3VwcG9ydGVkIG9uZS4gRm9y
IHRoaXMgcmVhc29uLCBrZWVwCisgICAgICAgICAgICAvLyBnbC5GTE9BVCBhcyBvbmUgb2YgdGhl
IHZhbGlkIG9wdGlvbnMuCisgICAgICAgICAgICBhc3NlcnRNc2coaW1wbGVtZW50YXRpb25Db2xv
clJlYWRUeXBlID09PSBnbC5VTlNJR05FRF9CWVRFIHx8CisgICAgICAgICAgICAgICAgICAgICAg
aW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlID09PSBnbC5GTE9BVCB8fAorICAgICAgICAgICAg
ICAgICAgICAgIGltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSA9PT0gZXh0LkhBTEZfRkxPQVRf
T0VTIHx8CisgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBl
ID09PSBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80IHx8CisgICAgICAgICAgICAgICAgICAgICAg
aW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlID09PSBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8x
IHx8CisgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlID09
PSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNSwKKyAgICAgICAgICAgICAgICAgICAgICAiSU1QTEVN
RU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFIG11c3QgYmUgb25lIG9mIFVOU0lHTkVEX0JZVEUsIFVO
U0lHTkVEX1NIT1JUXzRfNF80XzQsIFVOU0lHTkVEX1NIT1JUXzVfNV81XzEsIFVOU0lHTkVEX1NI
T1JUXzVfNl81LCBGTE9BVCwgb3IgSEFMRl9GTE9BVF9PRVMuICIgKworICAgICAgICAgICAgICAg
ICAgICAgICJSZWNlaXZlZDogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW1wbGVtZW50YXRp
b25Db2xvclJlYWRUeXBlKSk7CisKKyAgICAgICAgICAgIC8vIFRlc3QgdGhlIFJHQkEvSEFMRl9G
TE9BVF9PRVMgY29tYmluYXRpb24KKyAgICAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbkNvbG9y
UmVhZEZvcm1hdCA9PT0gZ2wuUkdCQSAmJiBpbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUgPT09
IGV4dC5IQUxGX0ZMT0FUX09FUykgeworICAgICAgICAgICAgICAgIHZlcmlmeVJlYWRQaXhlbHND
b2xvcnMoCisgICAgICAgICAgICAgICAgICAgIDAsICAgICAgLy8gcmVkCisgICAgICAgICAgICAg
ICAgICAgIDB4MzQwMCwgLy8gZ3JlZW4KKyAgICAgICAgICAgICAgICAgICAgMHgzODAwLCAvLyBi
bHVlCisgICAgICAgICAgICAgICAgICAgIDB4M0EwMCwgLy8gYWxwaGEKKyAgICAgICAgICAgICAg
ICAgICAgMHgzQzAwLCAvLyBhbHBoYVJHQgorICAgICAgICAgICAgICAgICAgICBnb29kRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICBleHQuSEFMRl9GTE9BVF9PRVMsCisgICAgICAgICAgICAg
ICAgICAgIFVpbnQxNkFycmF5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBk
ZWJ1ZygiIik7CisgICAgfSk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9vZXMtdmVydGV4LWFycmF5LW9iamVjdC1idWZmZXJEYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29l
cy12ZXJ0ZXgtYXJyYXktb2JqZWN0LWJ1ZmZlckRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODllOWJj
YzFiYTY4OWYzNGRlMjZiZTk1ODM5NzY5MjIzOWEzMjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9vZXMtdmVydGV4LWFycmF5LW9iamVjdC1idWZmZXJEYXRhLmh0bWwKQEAgLTAsMCAr
MSwxOTQgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0X2J1ZmZlckRhdGEgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8IS0tIGNvbW1lbnQgaW4gdGhlIHNjcmlwdCB0YWcgYmVsb3cg
dG8gdGVzdCB0aHJvdWdoIEpTIGVtdWFsYXRpb24gb2YgdGhlIGV4dGVuc2lvbi4gLS0+Cis8IS0t
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVtb3MvZ29vZ2xlL3Jlc291cmNlcy9PRVNWZXJ0ZXhB
cnJheU9iamVjdC5qcyI+PC9zY3JpcHQ+CistLT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUw
cHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWM0IGFfY29sb3I7Cit2YXJ5aW5nIHZlYzQg
dl9jb2xvcjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9u
OworICAgIHZfY29sb3IgPSBhX2NvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwordmFyeWluZyB2ZWM0IHZfY29sb3I7Cit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdD
b2xvciA9IHZfY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIGRyYXdpbmcgcmVzdWx0cyB3aGVuIHVzaW5n
IGdsLmJ1ZmZlckRhdGEgd2l0aCB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9u
LiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KGNhbnZhcyk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOwor
CitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlz
dCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOwor
CisgICAgLy8gU2V0dXAgZW11bGF0ZWQgT0VTVmVydGV4QXJyYXlPYmplY3QgaWYgaXQgaGFzIGJl
ZW4gaW5jbHVkZWQuCisgICAgaWYgKHdpbmRvdy5zZXR1cFZlcnRleEFycmF5T2JqZWN0KSB7Cisg
ICAgICAgIGRlYnVnKCJ1c2luZyBlbXVhdGVkIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgICAgIHNldHVwVmVydGV4QXJyYXlPYmplY3QoZ2wpOworICAgIH0KKworICAgIC8vIFF1ZXJ5
IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3Mg
aXQKKyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7
CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3Qgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICB9IGVsc2UgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdmVydGV4X2FycmF5X29i
amVjdCBleHRlbnNpb24iKTsKKworICAgICAgICBydW5CdWZmZXJEYXRhVGVzdCgpOworICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKyAgICB9Cit9CisKKy8qKgorICogVGhlIE9FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0IGV4dGVuc2lvbiBzZWVtcyB0byB3b3JrIGluY29ycmVjdGx5IG9uIHNvbWUgaGFuZGhlbGQg
ZGV2aWNlcywKKyAqIG5hbWVseSB0aGUgTmV4dXMgNSwgYW5kIE5leHVzIDcgKGluIDIwMTQvMDEp
IHdoZW4gdXNpbmcgYnVmZmVyRGF0YSBiZWZvcmUgYmluZGluZyB0aGUgVkFPLgorICogVGhlIHRl
c3RlZCBPUyB3YXMgQW5kcm9pZCBLaXRLYXQgNC40LjIsIHRoZSBlZmZlY3RzIHdlcmUgdGhlIHNh
bWUgaW4gYWxsIHRlc3RlZCBicm93c2VycworICogKENocm9tZSwgQ2hyb21lIEJldGEsIEZpcmVm
b3gsIEZpcmVmb3ggQmV0YSksIHNvIGl0IGlzIGxpa2VseSBhIGRyaXZlciBidWcuCisgKiBUaGVz
ZSBkZXZpY2VzIGhhdmUgdGhlIHNpbWlsYXIgQWRyZW5vIDMyMCBhbmQgQWRyZW5vIDMzMCBHUFVz
IHJlc3BlY3RpdmVseS4KKyAqCisgKiBUaGUgaXNzdXNlIHJlc3VsdGVkIGZyb20gdGhpcyBzZXF1
ZW5jZSBvZiBhY3Rpb25zIGluIGEgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGxvb3A6CisgKiAxLiB1
cGxvYWQgc29tZSB2ZXJ0ZXggYnVmZmVycyB3aXRoIGdsLmJ1ZmZlckRhdGEgKGVnLiBjb2xvcnMp
CisgKiAyLiBiaW5kIHRoZSBWQU8KKyAqIDMuIGNsZWFyIHRoZSBjYW52YXMKKyAqIDQuIGRyYXcg
KHNvbWUgdHJpYW5nbGVzKSB0byB0aGUgY2FudmFzCisgKiA1LiB1bmJpbmQgdGhlIFZBTworICoK
KyAqIFRoaXMgY2F1c2VkIHRoZSBkcmF3biB0cmlhbmdsZXMgdG8gYmUgZHJhd24gd2l0aCBibGFj
ayAoMCkgZm9yIG1vc3Qgb2YgdGhlIGZyYW1lcywgd2l0aCBzb21lCisgKiByYXJlIGZyYW1lcyBw
cmVzZW50aW5nIHRoZSBjb3JyZWN0IHJlbmRlciByZXN1bHRzLiBJbnRlcmVzdGluZ2x5IG9uIGJv
dGggZGV2aWNlcyBleGFjdGx5IGV2ZXJ5CisgKiA2NHRoIGZyYW1lIHBhc3NlZCAoc3RhcnRpbmcg
d2l0aCB0aGUgdmVyeSBmaXJzdCBvbmUpLCB0aGUgb3RoZXJzIGZhaWxlZC4KKyAqIChCZWNhdXNl
IG9mIHRoaXMsIHdlIHRlc3QgbXVsdGlwbGUgZnJhbWVzLikKKyAqIFdoZW4gcG9zaXRpb25zIHdl
cmUgdXBsb2FkZWQsIHNlZW1pbmdseSBub3RoaW5nIHdhcyBkcmF3biwgdGhhdCdzIGxpa2VseSBi
ZWNhdXNlIHRoZQorICogcG9zaXRpb24gYnVmZmVyIHdhcyBhbHNvIGFsbCAwcy4KKyAqCisgKiBU
aGUgaXNzdWUgZGlkIG5vdCBvY2N1cjoKKyAqIC0gaWYgc3RlcCAxLiBhbmQgMi4gd2VyZSBzd2Fw
cGVkCisgKiAtIG9yIGlmIHN0ZXA1IHdhcyBvbW1pdGVkIChwcm9iYWJseSBiZWNhdXNlIHRoYXQg
bWFrZXMgc3RlcCAyIGEgbm8tb3Agc2luY2UgdGhlIFZBTyBpcyBib3VuZCkKKyAqLworZnVuY3Rp
b24gcnVuQnVmZmVyRGF0YVRlc3QoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgZHJhd3Mgd2l0aCBi
dWZmZXJEYXRhIik7CisKKyAgICBjYW52YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUw
OworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisK
KyAgICB2YXIgdGVzdENvbG9yID0gWzAsIDI1NSwgMCwgMjU1XTsKKyAgICB2YXIgY2xlYXJDb2xv
ciA9IFsyNTUsIDAsIDAsIDI1NV07CisKKyAgICAvLyBXaGVyZSB0aGUgaXNzdWUgb2NjdXJlcywg
dGhpcyBpcyB0aGUgc2VxdWVuY2Ugb2Ygc3VjY2Vzcy9mYWlsdXJlIGV2ZXJ5IHRpbWU6CisgICAg
Ly8gcmVzdWx0OiAgICAgICAgICAgc3VjY2VzcyBmYWlsIGZhaWwgZmFpbCBmYWlsIC4uLiBzdWNj
ZXNzIGZhaWwgZmFpbCAuLi4KKyAgICAvLyBjdXJyZW50VGVzdENvdW50OiAwICAgICAgIDEgICAg
MiAgICAzICAgIDQgICAgLi4uIDY0ICAgICAgNjUgICA2NiAgIC4uLgorICAgIC8vIFNvIHdpdGgg
anVzdCAxIHRlc3QgaXQgcGFzc2VzLCBidXQgMiB0ZXN0cyBhcmUgZW5vdWdoLiBIZXJlIHdlIHVz
ZSAzLgorICAgIHZhciBudW1iZXJPZlRlc3RzID0gMzsKKyAgICB2YXIgY3VycmVudFRlc3RDb3Vu
dCA9IDA7CisKKyAgICB2YXIgcG9zaXRpb25Mb2MgPSAwOworICAgIHZhciBjb2xvckxvYyA9IDE7
CisgICAgdmFyIGdyaWRSZXMgPSAxOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBTaW1w
bGVWZXJ0ZXhDb2xvclByb2dyYW0oZ2wsIHBvc2l0aW9uTG9jLCBjb2xvckxvYyk7CisKKyAgICB2
YXIgdmFvMCA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIGV4dC5iaW5kVmVydGV4
QXJyYXlPRVModmFvMCk7CisKKyAgICB2YXIgYnVmZmVycyA9IHd0dS5zZXR1cEluZGV4ZWRRdWFk
V2l0aE9wdGlvbnMoZ2wsCisgICAgeyBncmlkUmVzOiBncmlkUmVzLAorICAgICAgcG9zaXRpb25M
b2NhdGlvbjogcG9zaXRpb25Mb2MKKyAgICB9KTsKKworICAgIHZhciBjb2xvclR5cGVkQXJyYXkg
PSBjcmVhdGVDb2xvclR5cGVkQXJyYXkoKTsKKworICAgIHZhciBjb2xvckJ1ZmZlciA9IGdsLmNy
ZWF0ZUJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29s
b3JMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2MsIDQsIGdsLkZMT0FU
LCBmYWxzZSwgMCwgMCk7CisKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworCisg
ICAgdGVzdERyYXdpbmcoKTsKKworICAgIGZ1bmN0aW9uIHRlc3REcmF3aW5nKCkgeworICAgICAg
ICAvLyB0aGlzIG9yZGVyIHdvcmtzIGZpbmU6CisgICAgICAgIC8vIGV4dC5iaW5kVmVydGV4QXJy
YXlPRVModmFvMCk7CisgICAgICAgIC8vIHVwbG9hZENvbG9yKCk7CisKKyAgICAgICAgLy8gdGhp
cyBvcmRlciBkb2Vzbid0OgorICAgICAgICB1cGxvYWRDb2xvcigpOworICAgICAgICBleHQuYmlu
ZFZlcnRleEFycmF5T0VTKHZhbzApOworCisgICAgICAgIHd0dS5jbGVhckFuZERyYXdJbmRleGVk
UXVhZChnbCwgMSwgY2xlYXJDb2xvcik7CisKKyAgICAgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9F
UyhudWxsKTsKKworICAgICAgICAvL2RlYnVnKCI8c3Bhbj4iK2N1cnJlbnRUZXN0Q291bnQrIjwv
c3BhbiIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIHRlc3RDb2xvciwgInNob3VsZCBi
ZSBncmVlbiIpCisKKyAgICAgICAgaWYgKCsrY3VycmVudFRlc3RDb3VudCA8IG51bWJlck9mVGVz
dHMpIHsKKyAgICAgICAgICAgIHRlc3REcmF3aW5nKCk7CisgICAgICAgICAgICAvLyB3dHUucmVx
dWVzdEFuaW1GcmFtZSh0ZXN0RHJhd2luZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBjbGVhbiB1cAorICAgICAgICAgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZhbzAp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdXBsb2FkQ29sb3IoKSB7CisgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvclR5cGVkQXJyYXksIGdsLlNUUkVB
TV9EUkFXKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVDb2xvclR5cGVkQXJyYXkoKSB7
CisgICAgICAgIHZhciBjb2xvcnMgPSBbXTsKKyAgICAgICAgdmFyIHBPZmZzZXQgPSAwOworICAg
ICAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDw9IGdyaWRSZXM7ICsreXkpIHsKKyAgICAgICAgICBm
b3IgKHZhciB4eCA9IDA7IHh4IDw9IGdyaWRSZXM7ICsreHgpIHsKKyAgICAgICAgICAgIGNvbG9y
c1twT2Zmc2V0ICsgMF0gPSB0ZXN0Q29sb3JbMF07CisgICAgICAgICAgICBjb2xvcnNbcE9mZnNl
dCArIDFdID0gdGVzdENvbG9yWzFdOworICAgICAgICAgICAgY29sb3JzW3BPZmZzZXQgKyAyXSA9
IHRlc3RDb2xvclsyXTsKKyAgICAgICAgICAgIGNvbG9yc1twT2Zmc2V0ICsgM10gPSB0ZXN0Q29s
b3JbM107CisgICAgICAgICAgICBwT2Zmc2V0ICs9IDQ7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KGNvbG9ycyk7CisgICAgfQorfQorCitk
ZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3Qu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMzZkZTJlNmM1Y2Q3MDAzYjVhOGVlNTc0YWNkYzM4NjBlNzlhNmFmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9vZXMtdmVydGV4LWFycmF5LW9iamVjdC5odG1sCkBAIC0wLDAgKzEs
NzI1IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzwhLS0gY29tbWVudCBpbiB0aGUgc2NyaXB0IHRhZyBiZWxvdyB0byB0ZXN0IHRocm91
Z2ggSlMgZW11bGF0aW9uIG9mIHRoZSBleHRlbnNpb24uIC0tPgorPCEtLQorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlbW9zL2dvb2dsZS9yZXNvdXJjZXMvT0VTVmVydGV4QXJyYXlPYmplY3QuanMi
Pjwvc2NyaXB0PgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUw
cHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247CithdHRyaWJ1dGUgdmVjNCBhX2NvbG9yOwordmFyeWluZyB2ZWM0IHZfY29sb3I7Cit2b2lk
IG1haW4odm9pZCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgICB2X2NvbG9y
ID0gYV9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVj
NCB2X2NvbG9yOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9y
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3QgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
KTsKK3ZhciBleHQgPSBudWxsOwordmFyIHZhbyA9IG51bGw7CisKK2lmICghZ2wpIHsKKyAgICB0
ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAg
IHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAvLyBTZXR1cCBlbXVs
YXRlZCBPRVNWZXJ0ZXhBcnJheU9iamVjdCBpZiBpdCBoYXMgYmVlbiBpbmNsdWRlZC4KKyAgICBp
ZiAod2luZG93LnNldHVwVmVydGV4QXJyYXlPYmplY3QpIHsKKyAgICAgICAgZGVidWcoInVzaW5n
IGVtdWxhdGVkIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHNldHVwVmVydGV4
QXJyYXlPYmplY3QoZ2wpOworICAgIH0KKworICAgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVuc2lv
biBkaXNhYmxlZAorICAgIHJ1bkJpbmRpbmdUZXN0RGlzYWJsZWQoKTsKKworICAgIC8vIFF1ZXJ5
IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3Mg
aXQKKyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7
CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3Qgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9y
dGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IGVuYWJsZWQgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIik7CisKKyAg
ICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuQmluZGluZ1Rlc3RFbmFi
bGVkKCk7CisgICAgICAgIHJ1bk9iamVjdFRlc3QoKTsKKyAgICAgICAgcnVuQXR0cmlidXRlVGVz
dHMoKTsKKyAgICAgICAgcnVuQXR0cmlidXRlVmFsdWVUZXN0cygpOworICAgICAgICBydW5EcmF3
VGVzdHMoKTsKKyAgICAgICAgcnVuVW5ib3VuZERlbGV0ZVRlc3RzKCk7CisgICAgICAgIHJ1bkJv
dW5kRGVsZXRlVGVzdHMoKTsKKyAgICAgICAgcnVuQXJyYXlCdWZmZXJCaW5kVGVzdHMoKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQg
YmUgbm8gZXJyb3JzIik7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4
dGVuc2lvbkVuYWJsZWQpIHsKKyAgICB2YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucygpOworICAgIGlmIChzdXBwb3J0ZWQuaW5kZXhPZigiT0VTX3ZlcnRleF9hcnJheV9v
YmplY3QiKSA+PSAwKSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCBsaXN0ZWQgYXMgc3VwcG9y
dGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdl
dEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVk
IGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gcnVuQmluZGluZ1Rlc3REaXNhYmxlZCgpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmluZGluZyBlbnVtIHdpdGggZXh0ZW5zaW9uIGRp
c2FibGVkIik7CisKKyAgICAvLyBVc2UgdGhlIGNvbnN0YW50IGRpcmVjdGx5IGFzIHdlIGRvbid0
IGhhdmUgdGhlIGV4dGVuc2lvbgorICAgIHZhciBWRVJURVhfQVJSQVlfQklORElOR19PRVMgPSAw
eDg1QjU7CisKKyAgICBnbC5nZXRQYXJhbWV0ZXIoVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJWRVJURVhfQVJS
QVlfQklORElOR19PRVMgc2hvdWxkIG5vdCBiZSBxdWVyeWFibGUgaWYgZXh0ZW5zaW9uIGlzIGRp
c2FibGVkIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkJpbmRpbmdUZXN0RW5hYmxlZCgpIHsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmluZGluZyBlbnVtIHdpdGggZXh0ZW5zaW9u
IGVuYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCJleHQuVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VT
IiwgIjB4ODVCNSIpOworCisgICAgZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklO
RElOR19PRVMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVkVS
VEVYX0FSUkFZX0JJTkRJTkdfT0VTIHF1ZXJ5IHNob3VsZCBzdWNjZWVkIGlmIGV4dGVuc2lvbiBp
cyBlbmFibGVkIik7CisKKyAgICAvLyBEZWZhdWx0IHZhbHVlIGlzIG51bGwKKyAgICBpZiAoZ2wu
Z2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpID09PSBudWxsKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoIkRlZmF1bHQgdmFsdWUgb2YgVkVSVEVYX0FSUkFZX0JJTkRJTkdf
T0VTIGlzIG51bGwiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJEZWZhdWx0
IHZhbHVlIG9mIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyBpcyBub3QgbnVsbCIpOworICAgIH0K
KworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBiaW5kaW5nIGEgVkFPIik7Cisg
ICAgdmFyIHZhbzAgPSBleHQuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICB2YXIgdmFvMSA9
IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFy
YW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpIik7CisgICAgZXh0LmJpbmRWZXJ0
ZXhBcnJheU9FUyh2YW8wKTsKKyAgICBpZiAoZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJS
QVlfQklORElOR19PRVMpID09IHZhbzApIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZ2wuZ2V0UGFy
YW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpIGlzIGV4cGVjdGVkIFZBTyIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImdsLmdldFBhcmFtZXRlcihleHQuVkVS
VEVYX0FSUkFZX0JJTkRJTkdfT0VTKSBpcyBub3QgZXhwZWN0ZWQgVkFPIikKKyAgICB9CisgICAg
ZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8xKTsKKyAgICBpZiAoZ2wuZ2V0UGFyYW1ldGVyKGV4
dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpID09IHZhbzEpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpIGlzIGV4cGVj
dGVkIFZBTyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImdsLmdldFBhcmFt
ZXRlcihleHQuVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTKSBpcyBub3QgZXhwZWN0ZWQgVkFPIikK
KyAgICB9CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZhbzEpOworICAgIHNob3VsZEJl
TnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpIik7Cisg
ICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8xKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJpbmRpbmcgYSBkZWxldGVkIHZlcnRleCBhcnJh
eSBvYmplY3QiKTsKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworICAgIHNob3Vs
ZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMpIik7
CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZhbzEpOworfQorCitmdW5jdGlvbiBydW5P
YmplY3RUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBvYmplY3Qg
Y3JlYXRpb24iKTsKKworICAgIHZhbyA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY3JlYXRlVmVydGV4QXJyYXlP
RVMgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3IiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoInZhbyIp
OworCisgICAgLy8gRXhwZWN0IGZhbHNlIGlmIG5ldmVyIGJvdW5kCisgICAgc2hvdWxkQmVGYWxz
ZSgiZXh0LmlzVmVydGV4QXJyYXlPRVModmFvKSIpOworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlP
RVModmFvKTsKKyAgICBzaG91bGRCZVRydWUoImV4dC5pc1ZlcnRleEFycmF5T0VTKHZhbykiKTsK
KyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworICAgIHNob3VsZEJlVHJ1ZSgiZXh0
LmlzVmVydGV4QXJyYXlPRVModmFvKSIpOworCisgICAgc2hvdWxkQmVGYWxzZSgiZXh0LmlzVmVy
dGV4QXJyYXlPRVMobnVsbCkiKTsKKworICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW8p
OworICAgIHZhbyA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJ1bkF0dHJpYnV0ZVRlc3RzKCkgewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBhdHRyaWJ1dGVzIHdvcmsgYWNyb3Nz
IGJpbmRpbmdzIik7CisKKyAgICB2YXIgc3RhdGVzID0gW107CisKKyAgICB2YXIgYXR0ckNvdW50
ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgZm9yICh2YXIg
biA9IDA7IG4gPCBhdHRyQ291bnQ7IG4rKykgeworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIG51bGwpOworCisgICAgICAgIHZhciBzdGF0ZSA9IHt9OworICAgICAgICBzdGF0
ZXMucHVzaChzdGF0ZSk7CisKKyAgICAgICAgdmFyIHZhbyA9IHN0YXRlLnZhbyA9IGV4dC5jcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHZhbyk7
CisKKyAgICAgICAgdmFyIGVuYWJsZUFycmF5ID0gKG4gJSAyID09IDApOworICAgICAgICBpZiAo
ZW5hYmxlQXJyYXkpIHsKKyAgICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG4pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVuYWJsZUFycmF5KSB7CisgICAgICAg
ICAgICB2YXIgYnVmZmVyID0gc3RhdGUuYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICAgICAg
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxMDI0LCBnbC5TVEFUSUNfRFJBVyk7
CisKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIobiwgMSArIG4gJSA0LCBnbC5G
TE9BVCwgdHJ1ZSwgbiAqIDQsIG4gKiA0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlbmFi
bGVBcnJheSkgeworICAgICAgICAgICAgdmFyIGVsYnVmZmVyID0gc3RhdGUuZWxidWZmZXIgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIGVsYnVmZmVyKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIDEwMjQsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisgICAgfQorCisgICAgdmFyIGFu
eU1pc21hdGNoID0gZmFsc2U7CisgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBhdHRyQ291bnQ7IG4r
KykgeworICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNbbl07CisKKyAgICAgICAgZXh0LmJpbmRW
ZXJ0ZXhBcnJheU9FUyhzdGF0ZS52YW8pOworCisgICAgICAgIHZhciBzaG91bGRCZUVuYWJsZWQg
PSAobiAlIDIgPT0gMCk7CisgICAgICAgIHZhciBpc0VuYWJsZWQgPSBnbC5nZXRWZXJ0ZXhBdHRy
aWIobiwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKTsKKyAgICAgICAgaWYgKHNob3Vs
ZEJlRW5hYmxlZCAhPSBpc0VuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlZFUlRF
WF9BVFRSSUJfQVJSQVlfRU5BQkxFRCBub3QgcHJlc2VydmVkIik7CisgICAgICAgICAgICBhbnlN
aXNtYXRjaCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYnVmZmVyID0gZ2wuZ2V0
VmVydGV4QXR0cmliKG4sIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpOwor
ICAgICAgICBpZiAoc2hvdWxkQmVFbmFibGVkKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyID09
IHN0YXRlLmJ1ZmZlcikgeworICAgICAgICAgICAgICAgIC8vIE1hdGNoZWQKKyAgICAgICAgICAg
ICAgICBpZiAoKGdsLmdldFZlcnRleEF0dHJpYihuLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJ
WkUpID09IDEgKyBuICUgNCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGdsLmdldFZlcnRleEF0
dHJpYihuLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUpID09IGdsLkZMT0FUKSAmJgorICAg
ICAgICAgICAgICAgICAgICAoZ2wuZ2V0VmVydGV4QXR0cmliKG4sIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfTk9STUFMSVpFRCkgPT0gdHJ1ZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGdsLmdl
dFZlcnRleEF0dHJpYihuLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gbiAqIDQp
ICYmCisgICAgICAgICAgICAgICAgICAgIChnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQobiwgZ2wu
VkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKSA9PSBuICogNCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gTWF0Y2hlZAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlZFUlRFWF9BVFRSSUJfQVJSQVlfKiBub3QgcHJlc2VydmVkIik7
CisgICAgICAgICAgICAgICAgICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgbm90IHByZXNlcnZlZCIpOworICAgICAg
ICAgICAgICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQiBpcyBub3QgcHJl
c2VydmVkCisgICAgICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyBub3QgcHJlc2VydmVkIik7
CisgICAgICAgICAgICAgICAgYW55TWlzbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGVsYnVmZmVyID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpOworICAgICAgICBpZiAoc2hvdWxkQmVFbmFibGVkKSB7
CisgICAgICAgICAgICBpZiAoZWxidWZmZXIgPT0gc3RhdGUuZWxidWZmZXIpIHsKKyAgICAgICAg
ICAgICAgICAvLyBNYXRjaGVkCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgbm90IHByZXNlcnZlZCIp
OworICAgICAgICAgICAgICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChlbGJ1ZmZlciA9PSBudWxsKSB7CisgICAg
ICAgICAgICAgICAgLy8gTWF0Y2hlZAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIG5vdCBwcmVzZXJ2
ZWQiKTsKKyAgICAgICAgICAgICAgICBhbnlNaXNtYXRjaCA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKTsKKyAg
ICBpZiAoIWFueU1pc21hdGNoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBhdHRyaWJ1dGVz
IHByZXNlcnZlZCBhY3Jvc3MgYmluZGluZ3MiKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBuID0g
MDsgbiA8IGF0dHJDb3VudDsgbisrKSB7CisgICAgICAgIHZhciBzdGF0ZSA9IHN0YXRlc1tuXTsK
KyAgICAgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHN0YXRlLnZhbyk7CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5BdHRyaWJ1dGVWYWx1ZVRlc3RzKCkgeworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiVGVzdGluZyB0aGF0IGF0dHJpYnV0ZSB2YWx1ZXMgYXJlIG5vdCBhdHRhY2hlZCB0
byBiaW5kaW5ncyIpOworCisgICAgdmFyIHY7CisgICAgdmFyIHZhbzAgPSBleHQuY3JlYXRlVmVy
dGV4QXJyYXlPRVMoKTsKKyAgICB2YXIgYW55RmFpbGVkID0gZmFsc2U7CisKKyAgICBleHQuYmlu
ZFZlcnRleEFycmF5T0VTKG51bGwpOworICAgIGdsLnZlcnRleEF0dHJpYjRmKDAsIDAsIDEsIDIs
IDMpOworCisgICAgdiA9IGdsLmdldFZlcnRleEF0dHJpYigwLCBnbC5DVVJSRU5UX1ZFUlRFWF9B
VFRSSUIpOworICAgIGlmICghKHZbMF0gPT0gMCAmJiB2WzFdID09IDEgJiYgdlsyXSA9PSAyICYm
IHZbM10gPT0gMykpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVmVydGV4IGF0dHJpYiB2YWx1ZSBu
b3Qgcm91bmQtdHJpcHBlZD8iKTsKKyAgICAgICAgYW55RmFpbGVkID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHZhbzApOworCisgICAgdiA9IGdsLmdldFZlcnRl
eEF0dHJpYigwLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpOworICAgIGlmICghKHZbMF0gPT0g
MCAmJiB2WzFdID09IDEgJiYgdlsyXSA9PSAyICYmIHZbM10gPT0gMykpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiVmVydGV4IGF0dHJpYiB2YWx1ZSByZXNldCBhY3Jvc3MgYmluZGluZ3MiKTsKKyAg
ICAgICAgYW55RmFpbGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0Zigw
LCA0LCA1LCA2LCA3KTsKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworCisgICAg
diA9IGdsLmdldFZlcnRleEF0dHJpYigwLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpOworICAg
IGlmICghKHZbMF0gPT0gNCAmJiB2WzFdID09IDUgJiYgdlsyXSA9PSA2ICYmIHZbM10gPT0gNykp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVmVydGV4IGF0dHJpYiB2YWx1ZSBib3VuZCB0byBidWZm
ZXIiKTsKKyAgICAgICAgYW55RmFpbGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWFueUZh
aWxlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJWZXJ0ZXggYXR0cmlidXRlIHZhbHVlcyBhcmUg
bm90IGF0dGFjaGVkIHRvIGJpbmRpbmdzIikKKyAgICB9CisKKyAgICBleHQuYmluZFZlcnRleEFy
cmF5T0VTKG51bGwpOworICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW8wKTsKK30KKwor
ZnVuY3Rpb24gcnVuRHJhd1Rlc3RzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVz
dGluZyBkcmF3cyB3aXRoIHZhcmlvdXMgVkFPIGJpbmRpbmdzIik7CisKKyAgICBjYW52YXMud2lk
dGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUwOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICB2YXIgdmFvMCA9IGV4dC5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgIHZhciB2YW8xID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7
CisgICAgdmFyIHZhbzIgPSBleHQuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKworICAgIHZhciBw
b3NpdGlvbkxvY2F0aW9uID0gMDsKKyAgICB2YXIgY29sb3JMb2NhdGlvbiA9IDE7CisKKyAgICB2
YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFNpbXBsZVZlcnRleENvbG9yUHJvZ3JhbShnbCwgcG9zaXRp
b25Mb2NhdGlvbiwgY29sb3JMb2NhdGlvbik7CisKKyAgICBmdW5jdGlvbiBzZXR1cFF1YWQocywg
Y29sb3JzSW5BcnJheSkgeworICAgICAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmpl
Y3QpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJB
cnJheShbCisgICAgICAgICAgICAgMS4wICogcywgIDEuMCAqIHMsIDAuMCwKKyAgICAgICAgICAg
IC0xLjAgKiBzLCAgMS4wICogcywgMC4wLAorICAgICAgICAgICAgLTEuMCAqIHMsIC0xLjAgKiBz
LCAwLjAsCisgICAgICAgICAgICAgMS4wICogcywgIDEuMCAqIHMsIDAuMCwKKyAgICAgICAgICAg
IC0xLjAgKiBzLCAtMS4wICogcywgMC4wLAorICAgICAgICAgICAgIDEuMCAqIHMsIC0xLjAgKiBz
LCAwLjBdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihw
b3NpdGlvbkxvY2F0aW9uLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIC8v
IFRlc3Qgc3dpdGNoaW5nIGJldHdlZW4gVkFPcyB0aGF0IGhhdmUgZGlmZmVyZW50IG51bWJlciBv
ZiBlbmFibGVkIGFycmF5cworICAgICAgICBpZiAoY29sb3JzSW5BcnJheSkgeworICAgICAgICAg
ICAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgICAgICAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAg
ICAgICAgICAgMC4wLCAwLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgICAgIDAuMCwgMC4wLCAw
LjAsIDEuMCwKKyAgICAgICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAxLjAsCisgICAgICAgICAg
ICAgICAgMC4wLCAwLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgICAgIDAuMCwgMC4wLCAwLjAs
IDEuMCwKKyAgICAgICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAxLjBdKSwgZ2wuU1RBVElDX0RS
QVcpOworICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2NhdGlv
bik7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jYXRpb24sIDQs
IGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBn
bC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2NhdGlvbik7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgZnVuY3Rpb24gdmVyaWZ5RGlhZ29uYWxQaXhlbHMocywgZXhwZWN0ZWRJbnNp
ZGUsIGRyYXdEZXNjcmlwdGlvbikgeworICAgICAgICAvLyBUZXN0cyBwaXhlbHMgYWxvbmcgYSBk
aWFnb25hbCBydW5uaW5nIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgY2FudmFzIHRvIHRoZSAoMCwg
MCkgY29ybmVyLgorICAgICAgICAvLyBWYWx1ZXMgb24gdGhlIHBvaW50cyBsaXN0IGluZGljYXRl
IHJlbGF0aXZlIHBvc2l0aW9uIGFsb25nIHRoaXMgZGlhZ29uYWwuCisgICAgICAgIHZhciBwb2lu
dHMgPSBbMC4wLCAwLjIsIDAuNCwgMC42LCAwLjgsIDEuMF07CisgICAgICAgIGZvciAodmFyIG4g
PSAwOyBuIDwgcG9pbnRzLmxlbmd0aDsgbisrKSB7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWQg
PSBwb2ludHNbbl0gPD0gcyA/IGV4cGVjdGVkSW5zaWRlIDogMjU1OworICAgICAgICAgICAgdmFy
IHggPSBNYXRoLnJvdW5kKCgxIC0gcG9pbnRzW25dKSAqIGNhbnZhcy53aWR0aCAvIDIpOworICAg
ICAgICAgICAgdmFyIHkgPSBNYXRoLnJvdW5kKCgxIC0gcG9pbnRzW25dKSAqIGNhbnZhcy5oZWln
aHQgLyAyKTsKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHgsIHksIDEsIDEs
IFtleHBlY3RlZCwgZXhwZWN0ZWQsIGV4cGVjdGVkLCAyNTVdLAorICAgICAgICAgICAgICAgICJE
cmF3aW5nICIgKyBkcmF3RGVzY3JpcHRpb24gKyAiIHNob3VsZCBwYXNzIiwgMik7CisgICAgICAg
IH0KKyAgICB9OworICAgIGZ1bmN0aW9uIHZlcmlmeURyYXcoZHJhd0Rlc2NyaXB0aW9uLCBzLCBj
b2xvcnNJbkFycmF5KSB7CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cisg
ICAgICAgIHZhciBleHBlY3RlZEluc2lkZSA9IGNvbG9yc0luQXJyYXkgPyAwIDogMTI4OworICAg
ICAgICB2ZXJpZnlEaWFnb25hbFBpeGVscyhzLCBleHBlY3RlZEluc2lkZSwgZHJhd0Rlc2NyaXB0
aW9uKTsKKyAgICB9OworCisgICAgLy8gU2V0dXAgYWxsIGJpbmRpbmdzCisgICAgc2V0dXBRdWFk
KDEsIHRydWUpOworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVModmFvMCk7CisgICAgc2V0dXBR
dWFkKDAuNSwgdHJ1ZSk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8xKTsKKyAgICBz
ZXR1cFF1YWQoMC4yNSwgdHJ1ZSk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8yKTsK
KyAgICBzZXR1cFF1YWQoMC43NSwgZmFsc2UpOworCisgICAgZ2wudmVydGV4QXR0cmliNGYoY29s
b3JMb2NhdGlvbiwgMC41LCAwLjUsIDAuNSwgMSk7CisKKyAgICAvLyBWZXJpZnkgZHJhd2luZwor
ICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisgICAgdmVyaWZ5RHJhdygid2l0aCB0
aGUgZGVmYXVsdCBWQU8iLCAxLCB0cnVlKTsKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHZh
bzApOworICAgIHZlcmlmeURyYXcoIndpdGggVkFPICMwIiwgMC41LCB0cnVlKTsKKyAgICBleHQu
YmluZFZlcnRleEFycmF5T0VTKHZhbzEpOworICAgIHZlcmlmeURyYXcoIndpdGggVkFPICMxIiwg
MC4yNSwgdHJ1ZSk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8yKTsKKyAgICB2ZXJp
ZnlEcmF3KCJ3aXRoIFZBTyB0aGF0IGhhcyB0aGUgY29sb3IgYXJyYXkgZGlzYWJsZWQiLCAwLjc1
LCBmYWxzZSk7CisKKyAgICAvLyBWZXJpZnkgYm91bmQgVkFPIGFmdGVyIGRlbGV0ZQorICAgIGV4
dC5iaW5kVmVydGV4QXJyYXlPRVModmFvMSk7CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VT
KHZhbzApOworICAgIHZlcmlmeURyYXcoImFmdGVyIGRlbGV0aW5nIGFub3RoZXIgVkFPIiwgMC4y
NSwgdHJ1ZSk7CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZhbzEpOworICAgIHZlcmlm
eURyYXcoImFmdGVyIGRlbGV0aW5nIHRoZSBWQU8gdGhhdCB3YXMgYm91bmQiLCAxLCB0cnVlKTsK
KworICAgIC8vIERpc2FibGUgZ2xvYmFsIHZlcnRleCBhdHRyaWIgYXJyYXkKKyAgICBnbC5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2wuZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOworCisgICAgLy8gQ2hlY2sgdGhhdCBjb25z
dGFudCB2YWx1ZXMgYXJlIHRyZWF0ZWQgY29ycmVjdGx5IGFzIG5vdCBiZWluZyBwYXJ0IG9mIFZB
TyBzdGF0ZS4KKyAgICB2YXIgcG9zaXRpb25Mb2MgPSAwOworICAgIHZhciBjb2xvckxvYyA9IDE7
CisgICAgdmFyIGdyaWRSZXMgPSAxOworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlk
UmVzLCBwb3NpdGlvbkxvYyk7CisgICAgLy8gU2V0IHRoZSB2ZXJ0ZXggY29sb3IgdG8gcmVkLgor
ICAgIGdsLnZlcnRleEF0dHJpYjRmKGNvbG9yTG9jLCAxLCAwLCAwLCAxKTsKKworICAgIHZhciB2
YW8wID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJh
eU9FUyh2YW8wKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFNpbXBsZVZlcnRleENvbG9y
UHJvZ3JhbShnbCwgcG9zaXRpb25Mb2MsIGNvbG9yTG9jKTsKKyAgICB3dHUuc2V0dXBJbmRleGVk
UXVhZChnbCwgZ3JpZFJlcywgcG9zaXRpb25Mb2MpOworICAgIC8vIFNldCB0aGUgdmVydGV4IGNv
bG9yIHRvIGdyZWVuLgorICAgIGdsLnZlcnRleEF0dHJpYjRmKGNvbG9yTG9jLCAwLCAxLCAwLCAx
KTsKKyAgICB3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMpOworICAgIHd0
dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIpOwor
ICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW8wKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3
SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1
NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIpOworfQorCitmdW5jdGlvbiBydW5VbmJvdW5k
RGVsZXRlVGVzdHMoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHVzaW5n
IGJ1ZmZlcnMgdGhhdCBhcmUgZGVsZXRlZCB3aGVuIGF0dGFjaGVkIHRvIHVuYm91bmQgVkFPcyIp
OworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAi
ZnNoYWRlciJdLCBbImFfcG9zaXRpb24iLCAiYV9jb2xvciJdKTsKKyAgICBnbC51c2VQcm9ncmFt
KHByb2dyYW0pOworCisgICAgdmFyIHBvc2l0aW9uQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAg
ICBnbC5idWZmZXJEYXRhKAorICAgICAgICBnbC5BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBG
bG9hdDMyQXJyYXkoWworICAgICAgICAgICAgIDEuMCwgIDEuMCwKKyAgICAgICAgICAgIC0xLjAs
ICAxLjAsCisgICAgICAgICAgICAtMS4wLCAtMS4wLAorICAgICAgICAgICAgIDEuMCwgLTEuMF0p
LAorICAgICAgICBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2YXIgY29sb3JzID0gWworICAgICAg
ICBbMjU1LCAgIDAsICAgMCwgMjU1XSwKKyAgICAgICAgWyAgMCwgMjU1LCAgIDAsIDI1NV0sCisg
ICAgICAgIFsgIDAsICAgMCwgMjU1LCAyNTVdLAorICAgICAgICBbICAwLCAyNTUsIDI1NSwgMjU1
XQorICAgIF07CisgICAgdmFyIGNvbG9yQnVmZmVycyA9IFtdOworICAgIHZhciBlbGVtZW50QnVm
ZmVycyA9IFtdOworICAgIHZhciB2YW9zID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IGNvbG9ycy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdmFyIHZhbyA9IGV4dC5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgICAgICB2YW9zLnB1c2godmFvKTsKKyAgICAgICAgZXh0LmJpbmRW
ZXJ0ZXhBcnJheU9FUyh2YW8pOworICAgICAgICAvLyBTZXQgdGhlIHBvc2l0aW9uIGJ1ZmZlcgor
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25CdWZmZXIpOwor
ICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICAgICAgZ2wudmVydGV4
QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIHZh
ciBlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGVsZW1lbnRCdWZm
ZXJzLnB1c2goZWxlbWVudEJ1ZmZlcik7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGVsZW1lbnRCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKAor
ICAgICAgICAgICAgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsCisgICAgICAgICAgICBuZXcgVWlu
dDhBcnJheShbMCwgMSwgMiwgMCwgMiwgM10pLAorICAgICAgICAgICAgZ2wuU1RBVElDX0RSQVcp
OworCisgICAgICAgIC8vIFNldHVwIHRoZSBjb2xvciBhdHRyaWIKKyAgICAgICAgdmFyIGNvbG9y
ID0gY29sb3JzW2lpXTsKKyAgICAgICAgaWYgKGlpIDwgMykgeworICAgICAgICAgICAgdmFyIGNv
bG9yQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICBjb2xvckJ1ZmZlcnMu
cHVzaChjb2xvckJ1ZmZlcik7CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgY29sb3JCdWZmZXIpOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBVaW50OEFycmF5KAorICAgICAgICAgICAgICAgIFsgY29sb3JbMF0sIGNvbG9y
WzFdLCBjb2xvclsyXSwgY29sb3JbM10sCisgICAgICAgICAgICAgICAgICBjb2xvclswXSwgY29s
b3JbMV0sIGNvbG9yWzJdLCBjb2xvclszXSwKKyAgICAgICAgICAgICAgICAgIGNvbG9yWzBdLCBj
b2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdLAorICAgICAgICAgICAgICAgICAgY29sb3JbMF0s
IGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3JbM10KKyAgICAgICAgICAgICAgICBdKSwgZ2wuU1RB
VElDX0RSQVcpOworICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7Cisg
ICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGdsLlVOU0lHTkVEX0JZVEUs
IHRydWUsIDAsIDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2wudmVydGV4QXR0
cmliNGYoMSwgY29sb3JbMF0gLyAyNTUsIGNvbG9yWzFdIC8gMjU1LCBjb2xvclsyXSAvIDI1NSwg
Y29sb3JbM10gLyAyNTUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZGVsZXRlIHRoZSBj
b2xvciBidWZmZXJzIEFORCB0aGUgcG9zaXRpb24gYnVmZmVyLgorICAgIGV4dC5iaW5kVmVydGV4
QXJyYXlPRVMobnVsbCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9yQnVmZmVycy5s
ZW5ndGg7ICsraWkpIHsKKyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGNvbG9yQnVmZmVyc1tpaV0p
OworICAgICAgICBnbC5kZWxldGVCdWZmZXIoZWxlbWVudEJ1ZmZlcnNbaWldKTsKKyAgICAgICAg
ZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW9zW2lpXSk7CisgICAgICAgIHZhciBib3VuZEJ1ZmZl
ciA9IGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9C
SU5ESU5HKTsKKyAgICAgICAgLy8gVGhlIGJ1ZmZlcnMgc2hvdWxkIHN0aWxsIGJlIHZhbGlkIGF0
IHRoaXMgcG9pbnQsIHNpbmNlIGl0IHdhcyBhdHRhY2hlZCB0byB0aGUgVkFPCisgICAgICAgIGlm
KGJvdW5kQnVmZmVyICE9IGNvbG9yQnVmZmVyc1tpaV0pIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoImJ1ZmZlciByZW1vdmVkIGV2ZW4gdGhvdWdoIGl0IGlzIHN0aWxsIGF0dGFjaGVkIHRvIGEg
VkFPIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51
bGwpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihwb3NpdGlvbkJ1ZmZlcik7CisKKyAgICAvLyBSZW5k
ZXIgd2l0aCB0aGUgZGVsZXRlZCBidWZmZXJzLiBBcyB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IFZB
T3MgdGhleQorICAgIC8vIG11c3Qgc3RpbGwgYmUgYXJvdW5kLgorICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHZhciBjb2xvciA9IGNvbG9y
c1tpaV07CisgICAgICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVModmFvc1tpaV0pOworICAgICAg
ICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9CWVRFLCAwKTsK
KyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBjb2xvciwgInNob3VsZCBiZSAiICsgY29sb3Ip
OworICAgIH0KKworICAgIC8vIENsZWFuIHVwLgorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBj
b2xvckJ1ZmZlcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJh
eU9FUyh2YW9zW2lpXSk7CisgICAgfQorCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9y
QnVmZmVycy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgLy8gVGhlIGJ1ZmZlcnMgc2hvdWxkIG5v
IGxvbmdlciBiZSB2YWxpZCBub3cgdGhhdCB0aGUgVkFPcyBhcmUgZGVsZXRlZAorICAgICAgICBp
ZihnbC5pc0J1ZmZlcihjb2xvckJ1ZmZlcnNbaWldKSkgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiYnVmZmVyIG5vdCBwcm9wZXJseSBjbGVhbmVkIHVwIGFmdGVyIFZBTyBkZWxldGlvbiIpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5Cb3VuZERlbGV0ZVRlc3RzKCkgewor
ICAgIGRlYnVnKCJUZXN0aW5nIHVzaW5nIGJ1ZmZlcnMgdGhhdCBhcmUgZGVsZXRlZCB3aGVuIGF0
dGFjaGVkIHRvIGJvdW5kIFZBT3MiKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJhX3Bvc2l0aW9uIiwgImFfY29sb3Ii
XSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIHZhciBwb3NpdGlvbkJ1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBwb3NpdGlvbkJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YSgKKyAgICAgICAgZ2wuQVJSQVlf
QlVGRkVSLAorICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgICAxLjAsICAx
LjAsCisgICAgICAgICAgICAtMS4wLCAgMS4wLAorICAgICAgICAgICAgLTEuMCwgLTEuMCwKKyAg
ICAgICAgICAgICAxLjAsIC0xLjBdKSwKKyAgICAgICAgZ2wuU1RBVElDX0RSQVcpOworCisgICAg
Ly8gU2V0dXAgdGhlIGNvbG9yIGF0dHJpYgorICAgIHZhciBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0
ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1ZmZl
cik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBVaW50OEFycmF5KAor
ICAgICAgICBbIDI1NSwgICAwLCAgIDAsIDI1NSwKKyAgICAgICAgICAgIDAsIDI1NSwgICAwLCAy
NTUsCisgICAgICAgICAgICAwLCAgIDAsIDI1NSwgMjU1LAorICAgICAgICAgICAgMCwgMjU1LCAy
NTUsIDI1NQorICAgICAgICBdKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgdmFyIHZhb3MgPSBb
XTsKKyAgICB2YXIgZWxlbWVudEJ1ZmZlcnMgPSBbXTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlp
IDwgNDsgKytpaSkgeworICAgICAgICB2YXIgdmFvID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5T0VT
KCk7CisgICAgICAgIHZhb3MucHVzaCh2YW8pOworICAgICAgICBleHQuYmluZFZlcnRleEFycmF5
T0VTKHZhbyk7CisKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0
aW9uQnVmZmVyKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAg
ICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsK
KworICAgICAgICB2YXIgZWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAg
ICBlbGVtZW50QnVmZmVycy5wdXNoKGVsZW1lbnRCdWZmZXIpOworICAgICAgICBnbC5iaW5kQnVm
ZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wu
YnVmZmVyRGF0YSgKKyAgICAgICAgICAgIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLAorICAgICAg
ICAgICAgbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDAsIDIsIDNdKSwKKyAgICAgICAgICAgIGds
LlNUQVRJQ19EUkFXKTsKKworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
Y29sb3JCdWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAg
ICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVl
LCAwLCAwKTsKKyAgICB9CisKKyAgICAvLyBkZWxldGUgdGhlIGNvbG9yIGJ1ZmZlcnMgQU5EIHRo
ZSBwb3NpdGlvbiBidWZmZXIsIHRoYXQgYXJlIGJvdW5kIHRvIHRoZSBjdXJyZW50IFZBTworICAg
IGZvciAodmFyIGlpID0gMDsgaWkgPCB2YW9zLmxlbmd0aDsgKytpaSkgeworICAgICAgICBleHQu
YmluZFZlcnRleEFycmF5T0VTKHZhb3NbaWldKTsKKworICAgICAgICBnbC5kZWxldGVCdWZmZXIo
Y29sb3JCdWZmZXIpOworICAgICAgICBnbC5kZWxldGVCdWZmZXIocG9zaXRpb25CdWZmZXIpOwor
CisgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBpdGVyYXRpb24sIGRlbGV0ZUJ1ZmZlciB3aWxs
IGJlIGEgbm8tb3AsIGFuZCB3aWxsIG5vdCB1bmJpbmQgaXRzIG1hdGNoaW5nCisgICAgICAgIC8v
IGJpbmQgcG9pbnRzIG9uIHRoZSBub3ctYm91bmQgVkFPIGxpa2UgaXQgZGlkIG9uIHRoZSBmaXJz
dCBpdGVyYXRpb24uCisgICAgICAgIHZhciBleHBlY3RSZXRhaW5lZCA9IChpaSAhPSAwKTsKKyAg
ICAgICAgdmFyIHNob3VsZEJlU3RyID0gKGV4cGVjdFJldGFpbmVkID8gInJldGFpbmVkIiA6ICJj
bGVhcmVkIik7CisKKyAgICAgICAgdmFyIGJvdW5kUG9zaXRpb25CdWZmZXIgPSBnbC5nZXRWZXJ0
ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyk7CisgICAg
ICAgIGlmIChleHBlY3RSZXRhaW5lZCAhPSAoYm91bmRQb3NpdGlvbkJ1ZmZlciA9PSBwb3NpdGlv
bkJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBvc2l0aW9uIGF0dHJpYiBzdG9y
ZWQgYnVmZmVyIHNob3VsZCBiZSAiICsgc2hvdWxkQmVTdHIgKyAiLiIpOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGJvdW5kQ29sb3JCdWZmZXIgPSBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wu
VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyk7CisgICAgICAgIGlmIChleHBlY3RS
ZXRhaW5lZCAhPSAoYm91bmRDb2xvckJ1ZmZlciA9PSBjb2xvckJ1ZmZlcikpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkNvbG9yIGF0dHJpYiBzdG9yZWQgYnVmZmVyIHNob3VsZCBiZSAiICsg
c2hvdWxkQmVTdHIgKyAiLiIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcmV0YWluZWQs
IGV2ZXJ5dGhpbmcgc2hvdWxkIHN0aWxsIHdvcmsuIElmIGNsZWFyZWQsIGRyYXdpbmcgc2hvdWxk
IG5vdyBmYWlsLgorICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5V
TlNJR05FRF9CWVRFLCAwKTsKKyAgICAgICAgdmFyIGV4cGVjdGVkRXJyb3IgPSAoZXhwZWN0UmV0
YWluZWQgPyBnbC5OT19FUlJPUiA6IGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZXhwZWN0ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRHJhdyBjYWxsIHNob3VsZCAiICsgKGV4cGVjdFJldGFpbmVkID8gIm5vdCAiIDog
IiIpICsgImZhaWwuIik7CisKKyAgICAgICAgaWYgKGdsLmlzQnVmZmVyKHBvc2l0aW9uQnVmZmVy
KSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVmZXJlbmNlcyBmcm9tIHVuYm91bmQgVkFP
cyBkb24ndCBrZWVwIFBvc2l0aW9uIGJ1ZmZlciBhbGl2ZS4iKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoZ2wuaXNCdWZmZXIoY29sb3JCdWZmZXIpKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJSZWZlcmVuY2VzIGZyb20gdW5ib3VuZCBWQU9zIGRvbid0IGtlZXAgQ29sb3IgYnVmZmVyIGFs
aXZlIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkFycmF5QnVmZmVyQmlu
ZFRlc3RzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGJ1ZmZl
ciBiaW5kaW5ncyBvbiBWQU9zIGRvbid0IGFmZmVjdCBkZWZhdWx0IFZBTyBBUlJBWV9CVUZGRVIg
YmluZGluZy4iKTsKKworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisKKyAgICB2
YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0s
IFsiYV9jb2xvciIsICJhX3Bvc2l0aW9uIl0pOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAvLyBjcmVhdGUgc2hhcmVkIGVsZW1lbnQgYnVmZmVyCisgICAgdmFyIGVsZW1lbnRC
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAvLyBiaW5kIHRvIGRlZmF1bHQKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyKTsKKyAg
ICBnbC5idWZmZXJEYXRhKAorICAgICAgICBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwKKyAgICAg
ICAgbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDAsIDIsIDNdKSwKKyAgICAgICAgZ2wuU1RBVElD
X0RSQVcpOworCisgICAgLy8gZmlyc3QgY3JlYXRlIHRoZSBidWZmZXJzIGZvciBubyBWQU8gZHJh
dy4KKyAgICB2YXIgbm9uVkFPQ29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbm9uVkFPQ29sb3JCdWZmZXIpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDhBcnJheSgKKyAgICAgICAgWyAw
LCAyNTUsIDAsIDI1NSwKKyAgICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgICAwLCAy
NTUsIDAsIDI1NSwKKyAgICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgXSksIGdsLlNU
QVRJQ19EUkFXKTsKKworICAgIC8vIHNoYXJlZCBwb3NpdGlvbiBidWZmZXIuCisgICAgdmFyIHBv
c2l0aW9uQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKAorICAgICAg
ICBnbC5BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAg
ICAgIDEuMCwgIDEuMCwKKyAgICAgICAgICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgICAtMS4w
LCAtMS4wLAorICAgICAgICAgICAgIDEuMCwgLTEuMF0pLAorICAgICAgICBnbC5TVEFUSUNfRFJB
Vyk7CisKKyAgICAvLyBhdHRhY2ggcG9zaXRpb24gYnVmZmVyIHRvIGRlZmF1bHQKKyAgICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEs
IDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBub3cgY3JlYXRlIFZBTworICAg
IHZhciB2YW8gPSBleHQuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICBleHQuYmluZFZlcnRl
eEFycmF5T0VTKHZhbyk7CisKKyAgICAvLyBhdHRhY2ggdGhlIHBvc2l0aW9uIGJ1ZmZlciBWQU8K
KyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDEsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICB2YXIgdmFvQ29sb3JC
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdmFvQ29sb3JCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgVWludDhBcnJheSgKKyAgICAgICAgWyAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgICAy
NTUsIDAsIDAsIDI1NSwKKyAgICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgICAyNTUs
IDAsIDAsIDI1NSwKKyAgICAgICAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGds
LlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworCisgICAgLy8gbm93IHNldCB0aGUgYnVmZmVy
IGJhY2sgdG8gdGhlIG5vblZBT0NvbG9yQnVmZmVyCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIG5vblZBT0NvbG9yQnVmZmVyKTsKKworICAgIC8vIGJpbmQgdG8gVkFPCisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7Cisg
ICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCk7
CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJl
ZCIpOworCisgICAgLy8gdW5iaW5kIFZBTworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVs
bCk7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBub25WQU9Db2xvckJ1ZmZlciBzaG91bGQg
YmUgc3RpbGwgYmUgYm91bmQuCisgICAgLy8gSWYgdGhlIFdlYkdMIGltcGwgaXMgZW11bGF0aW5n
IFZBT3MgaXQgbXVzdCBtYWtlIHN1cmUKKyAgICAvLyBpdCBjb3JyZWN0bHkgcmVzdG9yZXMgdGhp
cyBiaW5kaW5nLgorICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuVU5TSUdORURfQllURSwgdHJ1ZSwgMCwgMCk7Cisg
ICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCk7
CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdy
ZWVuIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21w
cmVzc2VkLXRleHR1cmUtYXN0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRl
eHR1cmUtYXN0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MzdjM2YyYTQ1Yzg4YzdjNjUyZmE1YjU3Njc5
MmIyYzEwZWM2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNz
ZWQtdGV4dHVyZS1hc3RjLmh0bWwKQEAgLTAsMCArMSwyNTI0IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMjAgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3Rz
L2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPHN0
eWxlPgoraW1nIHsKKyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyBtYXJnaW4tcmlnaHQ6IDFl
bTsKK30KKworLnRlc3RpbWFnZXMgYnIgeworICBjbGVhcjogYm90aDsKK30KKworLnRlc3RpbWFn
ZXMgPiBkaXYgeworICBmbG9hdDogbGVmdDsKKyAgbWFyZ2luOiAxZW07Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBoZWlnaHQ6
IDhweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25h
bGl0eSBvZiB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMgZXh0ZW5zaW9uLCBpZiBp
dCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKworLy8gQ29tcHJlc3NlZCB0ZXh0dXJl
cyBnZW5lcmF0ZWQgd2l0aCBBUk0ncyBBU1RDIGVuY29kZXIKKy8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9BUk0tc29mdHdhcmUvYXN0Yy1lbmNvZGVyCisKKy8vIFRoZSBkYXRhIGJlbG93IGlzIHByaW50
ZWQgZGlyZWN0bHkgZnJvbSB0aGUgYXN0YyBmaWxlLAorLy8gYW5kIHRoZSBoZWFkZXIgaGFzIGJl
ZW4gbGVmdCBmb3IgY2xhcml0eSByZWFzb25zLgorCisvLyBMRFIgZW5jb2RlZCB3aXRoIHRoZSBm
b2xsb3dpbmcgY29tbWFuZCBsaW5lOgorLy8gJ2FzdGNlbmMgLWMgc291cmNlLnBuZyByZXN1bHQu
YXN0YyB7YmxvY2tTaXplfSAtbWVkaXVtJworCisvLyBUaGUgaW1hZ2UgdXNlZCBmb3IgTERSIGNv
bXByZXNzaW9uIGNhbiBiZSBmb3VuZAorLy8gYXQgc2RrL3Rlc3RzL3Jlc291cmNlcy9yZWQtZ3Jl
ZW4taGFyZC5wbmcKKwordmFyIGFzdGNfNHg0X2FyZ2JfbGRyID0gbmV3IFVpbnQ4QXJyYXkoWwor
ICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg0LCAweDQsIDB4MSwgMHgxMCwgMHgwLCAw
eDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDQyLCAweDIs
IDB4MSwgMHgyLCAweDIsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4
ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsCisgICAgMHg0MiwgMHgyLCAweDEsIDB4MiwgMHgyLCAweDAsIDB4MCwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHg0Miwg
MHgyLCAweDEsIDB4MiwgMHgyLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZm
LCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweDQy
LCAweDIsIDB4MSwgMHgyLCAweDIsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4NDIsIDB4MiwgMHgxLCAweDIsIDB4Miwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4
ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4
NDIsIDB4MiwgMHgxLCAweDIsIDB4MiwgMHgwLCAweDAsIDB4MCwgMHhmMCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKK10pOwordmFyIGFzdGNfNXg0X2FyZ2JfbGRy
ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg1LCAw
eDQsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBI
RUFERVIKKyAgICAweGMxLCAweDIsIDB4MSwgMHgyLCAweDEsIDB4MCwgMHgwLCAweDgwLCAweDQ4
LCAweDIyLCAweDg5LCAweDI0LCAweDkyLCAweDQ4LCAweDIyLCAweDksCisgICAgMHhmYywgMHhm
ZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhm
YywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4YzEsIDB4MiwgMHgxLCAweDIs
IDB4MSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDIwLCAweDg5LCAweDI0LCAweDkyLCAweDQ4LCAw
eDIyLCAweDg5LAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAw
eGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweGZmLCAweGZmLAorICAgIDB4YzEsIDB4MiwgMHgxLCAweDIsIDB4MSwgMHgwLCAweDAs
IDB4ODAsIDB4NDgsIDB4MjIsIDB4ODksIDB4MjQsIDB4MCwgMHg0MCwgMHgwLCAweDgwLAorICAg
IDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZm
LAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZk
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhjMSwgMHgyLCAweDEsIDB4MiwgMHgxLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHg4OSwgMHgyNCwgMHg5MiwgMHg0OCwgMHgyMiwgMHg4
OSwKK10pOwordmFyIGFzdGNfNXg1X2FyZ2JfbGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8v
MHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg1LCAweDUsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4
MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweGYzLCAweDAsIDB4ODEs
IDB4ZmYsIDB4NywgMHgwLCAweGUwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweDFmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhm
ZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwKKyAgICAweGYzLCAweDAsIDB4N2YsIDB4MCwgMHhmOCwgMHgxLCAweGUwLCAweGZm
LCAweGYxLCAweGZmLCAweGY4LCAweDdmLCAweDAsIDB4MCwgMHgwLCAweDAsCisgICAgMHhmYywg
MHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAg
MHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
CisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorXSk7Cit2YXIg
YXN0Y182eDVfYXJnYl9sZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFiLCAw
eGExLCAweDVjLCAweDYsIDB4NSwgMHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAs
IDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4NjMsIDB4MSwgMHg4MSwgMHgxMCwgMHgwLCAw
eDAsIDB4NDgsIDB4NDksIDB4MjksIDB4MjksIDB4MjUsIDB4YTUsIDB4YTQsIDB4OTQsIDB4OTQs
IDB4MTIsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMs
IDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsCisgICAgMHg2MywgMHgxLCAweDgxLCAweDEwLCAweDAsIDB4MCwgMHg0OCwg
MHgwLCAweDI4LCAweDAsIDB4MjQsIDB4MCwgMHhhNCwgMHg5NCwgMHg5NCwgMHg5MiwKKyAgICAw
eGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwK
KyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwKKyAgICAweDYzLCAweDEsIDB4ODEsIDB4MTAsIDB4MCwgMHgwLCAweDAsIDB4NDgsIDB4
MSwgMHgyOCwgMHgxLCAweGE0LCAweDAsIDB4OTQsIDB4MCwgMHg5MiwKK10pOwordmFyIGFzdGNf
Nng2X2FyZ2JfbGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwg
MHg1YywgMHg2LCAweDYsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEs
IDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDQsIDB4MSwgMHgxLCAweGZlLCAweGZmLCAweDEsIDB4
MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGYwLCAweGZmLCAweGZmLCAweGZmLCAweDdmLAorICAg
IDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZm
LAorICAgIDB4NCwgMHgxLCAweDEsIDB4ZmUsIDB4ZmYsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgw
LCAweDAsIDB4ZjAsIDB4ZmYsIDB4YzMsIDB4MzAsIDB4ZmMsCisgICAgMHhmYywgMHhmZCwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg0LCAweDEs
IDB4MSwgMHhmZSwgMHhmZiwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHg4MCwgMHhl
MywgMHhmOCwgMHhmZiwgMHhmZiwKK10pOwordmFyIGFzdGNfOHg1X2FyZ2JfbGRyID0gbmV3IFVp
bnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg4LCAweDUsIDB4MSwg
MHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAg
ICAweDY2LCAweDAsIDB4YzEsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDNmLAorICAgIDB4ZmMsIDB4ZmQsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweDY2LCAweDAsIDB4YzEsIDB4ZmYsIDB4MCwgMHgw
LCAweGYwLCAweGZmLCAweGYwLCAweGZmLCAweGYwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLAorICAgIDB4NjYsIDB4MCwgMHhjMSwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZiwgMHhm
ZiwgMHhmLCAweGZmLCAweGYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhm
ZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg2
NiwgMHgwLCAweDNmLCAweDAsIDB4MWYsIDB4MCwgMHgzLCAweDAsIDB4MywgMHgwLCAweDMsIDB4
MCwgMHgzLCAweDAsIDB4MywgMHgwLAorXSk7Cit2YXIgYXN0Y184eDZfYXJnYl9sZHIgPSBuZXcg
VWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweDgsIDB4NiwgMHgx
LCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgor
ICAgIDB4NTQsIDB4MSwgMHg4MSwgMHgyMCwgMHgwLCAweDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4
N2YsIDB4N2YsIDB4N2YsIDB4N2YsIDB4N2YsIDB4N2YsIDB4M2YsCisgICAgMHhmYywgMHhmZCwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4NTQsIDB4MSwgMHg4MSwgMHgyMCwgMHgwLCAw
eDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4ZjgsIDB4N2YsIDB4NTYsIDB4M2YsIDB4NzIsIDB4N2Ys
IDB4N2YsCisgICAgMHg1NCwgMHgxLCAweDgxLCAweDIwLCAweDAsIDB4MCwgMHg3MCwgMHg3Ziwg
MHg3ZiwgMHg3ZiwgMHgzZiwgMHg3MiwgMHg3OCwgMHg3ZiwgMHg3MCwgMHg3ZiwKKyAgICAweGZj
LCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg1NCwgMHgxLCAweDgxLCAweDIw
LCAweDAsIDB4MCwgMHg1MCwgMHg3ZiwgMHg3MiwgMHhmZSwgMHg3ZiwgMHg3ZiwgMHg3ZiwgMHg3
ZiwgMHg3ZiwgMHg3ZiwKK10pOwordmFyIGFzdGNfOHg4X2FyZ2JfbGRyID0gbmV3IFVpbnQ4QXJy
YXkoWworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg4LCAweDgsIDB4MSwgMHgxMCwg
MHgwLCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDQ0
LCAweDUsIDB4MSwgMHgyLCAweDIsIDB4MCwgMHgwLCAweDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHg0NCwgMHg1LCAweDEsIDB4MiwgMHgy
LCAweDAsIDB4MCwgMHgwLCAweDNmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLAorICAgIDB4NDQsIDB4NSwgMHgxLCAweDIsIDB4MiwgMHgwLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmYywgMHhmYywKKyAgICAweDQ0LCAw
eDUsIDB4MSwgMHgyLCAweDIsIDB4MCwgMHgwLCAweDAsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4M2YsIDB4M2YsCitdKTsKK3ZhciBhc3RjXzEweDVfYXJnYl9sZHIgPSBu
ZXcgVWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4NSwg
MHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURF
UgorICAgIDB4NjUsIDB4MSwgMHgxLCAweGZlLCAweGZmLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4
YzAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHhmYywgMHhmZCwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4NjUsIDB4MSwgMHgxLCAweGZlLCAweGZmLCAw
eDEsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmYywgMHhmMCwgMHhjMywgMHhmZiwgMHhmZiwgMHhm
ZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhm
ZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg2
NSwgMHgxLCAweGZmLCAweDEsIDB4MCwgMHhmZSwgMHgxLCAweDAsIDB4MCwgMHhjMCwgMHg3LCAw
eDFmLCAweDdjLCAweGYwLCAweGMxLCAweDcsCitdKTsKK3ZhciBhc3RjXzEweDZfYXJnYl9sZHIg
PSBuZXcgVWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4
NiwgMHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhF
QURFUgorICAgIDB4YTQsIDB4MSwgMHgxLCAweGZlLCAweGZmLCAweDEsIDB4MCwgMHgwLCAweGYw
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLAorICAgIDB4ZmMsIDB4
ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGE0LCAweDEsIDB4MSwgMHhmZSwgMHhm
ZiwgMHgxLCAweDAsIDB4MCwgMHhmMCwgMHhmZiwgMHhmZiwgMHhmMCwgMHhjMywgMHhmLCAweGZm
LCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZj
LCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhhNCwgMHgxLCAweDEsIDB4ZmUs
IDB4ZmYsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgzZSwgMHhmOCwgMHhlMCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwKK10pOwordmFyIGFzdGNfMTB4OF9hcmdiX2xkciA9IG5ldyBVaW50OEFycmF5
KFsKKyAgICAvLzB4MTMsIDB4YWIsIDB4YTEsIDB4NWMsIDB4YSwgMHg4LCAweDEsIDB4MTAsIDB4
MCwgMHgwLCAweDEwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgSEVBREVSCisgICAgMHg2NSwg
MHg5LCAweDY5LCAweDM1LCAweDAsIDB4OCwgMHgxMCwgMHgyLCAweDAsIDB4MCwgMHhmYywgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3ZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsCisgICAgMHg2LCAweDExLCAweDY5LCAweDJkLCAweDgwLCAweDQwLCAweDIsIDB4
ODAsIDB4NCwgMHgwLCAweDgsIDB4MCwgMHhmZiwgMHhmLCAweGYwLCAweGZmLAorICAgIDB4NDQs
IDB4NSwgMHgxLCAweDIsIDB4MiwgMHgwLCAweDAsIDB4MCwgMHhmMCwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKK10pOwordmFyIGFzdGNfMTB4MTBfYXJnYl9sZHIg
PSBuZXcgVWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4
YSwgMHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhF
QURFUgorICAgIDB4YTQsIDB4YzksIDB4YywgMHgzLCAweDIyLCAweDAsIDB4OCwgMHg0MCwgMHg4
LCAweDNmLCAweGZjLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLAorICAgIDB4ZmMsIDB4
ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsCisgICAgMHg0NSwgMHg4OSwgMHg3LCAweDM1LCAweDAsIDB4NDAsIDB4MTAsIDB4
MCwgMHgyMCwgMHgwLCAweDAsIDB4MWYsIDB4N2MsIDB4ZjAsIDB4YzEsIDB4ZmYsCitdKTsKK3Zh
ciBhc3RjXzEyeDEwX2FyZ2JfbGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhh
YiwgMHhhMSwgMHg1YywgMHhjLCAweGEsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwg
MHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDY0LCAweDgsIDB4MTEsIDB4MywgMHgy
MiwgMHgwLCAweDgsIDB4NDAsIDB4MzgsIDB4ZmMsIDB4YzMsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4N2YsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4
ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGU1LCAweDEwLCAweDRhLCAw
eDRkLCAweDQ2LCAweDdmLCAweDAsIDB4YzAsIDB4ZiwgMHg0MCwgMHhmOCwgMHgxLCAweDM5LCAw
eGYxLCAweDcsIDB4MCwKK10pOwordmFyIGFzdGNfMTJ4MTJfYXJnYl9sZHIgPSBuZXcgVWludDhB
cnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGMsIDB4YywgMHgxLCAweDEw
LCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4
NjQsIDB4YTgsIDB4MjEsIDB4MywgMHgyMiwgMHgwLCAweDgsIDB4NDAsIDB4MzgsIDB4ZmMsIDB4
YzMsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHhmYywgMHhmZCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwK
KyAgICAweDg0LCAweGQ4LCAweGU5LCAweDJlLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4ODAsIDB4
YzAsIDB4ODAsIDB4MjgsIDB4MmEsIDB4YWIsIDB4MmEsIDB4ZmYsCitdKTsKKworLy8gSERSIGVu
Y29kZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKKy8vICdhc3RjZW5jIC1jIHNv
dXJjZS5oZHIgcmVzdWx0LmFzdGMge2Jsb2NrU2l6ZX0gLW1lZGl1bScKKworLy8gVGhlIGltYWdl
IHVzZWQgZm9yIEhEUiBjb21wcmVzc2lvbiBjYW4gYmUgZm91bmQKKy8vIGF0IHNkay90ZXN0cy9y
ZXNvdXJjZXMvcmVkLWdyZWVuLWhhcmQuaGRyCisKK3ZhciBhc3RjXzR4NF9hcmdiX2hkciA9IG5l
dyBVaW50OEFycmF5KFsKKyAgICAvLzB4MTMsIDB4YWIsIDB4YTEsIDB4NWMsIDB4NCwgMHg0LCAw
eDEsIDB4MTAsIDB4MCwgMHgwLCAweDEwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgSEVBREVS
CisgICAgMHg0MiwgMHgyLCAweDEsIDB4ODIsIDB4ODIsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZiwKKyAgICAweGZjLCAweGZkLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAw
eGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg0MiwgMHgyLCAweDgxLCAweDMsIDB4
ODIsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwKKyAgICAweDQyLCAweDIsIDB4ODEsIDB4MywgMHg4MiwgMHgwLCAweDAsIDB4MCwg
MHhmZiwgMHgwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4ZmMs
IDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsCisgICAgMHg0MiwgMHgyLCAweDgzLCAweDAsIDB4MCwgMHg0MSwgMHgwLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsCisgICAgMHg0Miwg
MHgyLCAweDgzLCAweDAsIDB4MCwgMHg0MSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweGZmLCAweDAsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAw
eGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLAorICAgIDB4NDIsIDB4MiwgMHgxLCAweDgyLCAweDgyLCAweDAsIDB4MCwgMHgw
LCAweGYwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorXSk7Cit2
YXIgYXN0Y181eDRfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgLy8weDEzLCAweGFi
LCAweGExLCAweDVjLCAweDUsIDB4NCwgMHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwgMHgwLCAw
eDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4YzEsIDB4MiwgMHgxLCAweDQyLCAweDIx
LCAweDAsIDB4MCwgMHg4MCwgMHg0OCwgMHgyMiwgMHg4OSwgMHgyNCwgMHg5MiwgMHg0OCwgMHgy
MiwgMHg5LAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZj
LCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgw
LCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAg
ICAweGMxLCAweDIsIDB4MSwgMHg0MiwgMHgyMSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDIwLCAw
eDg5LCAweDI0LCAweDkyLCAweDQ4LCAweDIyLCAweDg5LAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
CisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4YzEsIDB4Miwg
MHgxLCAweDQyLCAweDIxLCAweDAsIDB4MCwgMHg4MCwgMHg0OCwgMHgyMiwgMHg4OSwgMHgyNCwg
MHgwLCAweDQwLCAweDAsIDB4ODAsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAw
eGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAw
eGMxLCAweDIsIDB4MSwgMHg0MiwgMHgyMSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ODks
IDB4MjQsIDB4OTIsIDB4NDgsIDB4MjIsIDB4ODksCitdKTsKK3ZhciBhc3RjXzV4NV9hcmdiX2hk
ciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAvLzB4MTMsIDB4YWIsIDB4YTEsIDB4NWMsIDB4NSwg
MHg1LCAweDEsIDB4MTAsIDB4MCwgMHgwLCAweDEwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwg
SEVBREVSCisgICAgMHhmMywgMHgwLCAweDgxLCAweGZmLCAweDcsIDB4MCwgMHhlMCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgxZiwKKyAgICAweGZj
LCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgw
LCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAg
ICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmMywgMHgwLCAweDgx
LCAweGZmLCAweDcsIDB4MCwgMHgwLCAweDAsIDB4ZSwgMHgwLCAweDcsIDB4ODAsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAor
ICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAw
eGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAw
eGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZmLAorXSk7Cit2YXIgYXN0Y182eDVfYXJnYl9oZHIgPSBuZXcgVWludDhB
cnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweDYsIDB4NSwgMHgxLCAweDEw
LCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4
NjMsIDB4MSwgMHg4MSwgMHgxMCwgMHgwLCAweDAsIDB4NDgsIDB4NDksIDB4MjksIDB4MjksIDB4
MjUsIDB4YTUsIDB4YTQsIDB4OTQsIDB4OTQsIDB4MTIsCisgICAgMHhmYywgMHhmZCwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwK
KyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg2MywgMHgxLCAw
eDgxLCAweDEwLCAweDAsIDB4MCwgMHg0OCwgMHgwLCAweDI4LCAweDAsIDB4MjQsIDB4MCwgMHhh
NCwgMHg5NCwgMHg5NCwgMHg5MiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4
ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4
ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweDYzLCAweDEsIDB4ODEsIDB4
MTAsIDB4MCwgMHgwLCAweDAsIDB4NDgsIDB4MSwgMHgyOCwgMHgxLCAweGE0LCAweDAsIDB4OTQs
IDB4MCwgMHg5MiwKK10pOwordmFyIGFzdGNfNng2X2FyZ2JfaGRyID0gbmV3IFVpbnQ4QXJyYXko
WworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg2LCAweDYsIDB4MSwgMHgxMCwgMHgw
LCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDQsIDB4
MSwgMHgxLCAweGZjLCAweGZkLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGYwLCAw
eGZmLCAweGZmLCAweGZmLCAweDdmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywg
MHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4NCwgMHgxLCAweDEsIDB4ZmMsIDB4
ZmQsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZjAsIDB4ZmYsIDB4YzMsIDB4MzAs
IDB4ZmMsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMs
IDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsCisgICAgMHg0LCAweDEsIDB4MSwgMHhmYywgMHhmZCwgMHgxLCAweDAsIDB4
MCwgMHgwLCAweDAsIDB4MCwgMHg4MCwgMHhlMywgMHhmOCwgMHhmZiwgMHhmZiwKK10pOwordmFy
IGFzdGNfOHg1X2FyZ2JfaGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhhYiwg
MHhhMSwgMHg1YywgMHg4LCAweDUsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwgMHgw
LCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDY2LCAweDAsIDB4YzEsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweDNmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweDY2
LCAweDAsIDB4YzEsIDB4ZmYsIDB4MCwgMHgwLCAweGYwLCAweGZmLCAweGYwLCAweGZmLCAweGYw
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4NjYsIDB4MCwgMHhjMSwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZiwgMHhmZiwgMHhmLCAweGZmLCAweGYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAg
IDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg2NiwgMHgwLCAweGMxLCAweGZmLCAweDAsIDB4MCwg
MHhmYywgMHhmZiwgMHhmYywgMHhmZiwgMHhmYywgMHhmZiwgMHhmYywgMHhmZiwgMHhmYywgMHhm
ZiwKK10pOwordmFyIGFzdGNfOHg2X2FyZ2JfaGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8v
MHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHg4LCAweDYsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4
MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCBIRUFERVIKKyAgICAweDU0LCAweDEsIDB4ODEs
IDB4MjAsIDB4MCwgMHgwLCAweDcwLCAweDdmLCAweDdmLCAweDdmLCAweDdmLCAweDdmLCAweDdm
LCAweDdmLCAweDdmLCAweDNmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwKKyAgICAweDU0LCAweDEsIDB4ODEsIDB4MjAsIDB4MCwgMHgwLCAweDcwLCAweDdmLCAweDdm
LCAweGY4LCAweDdmLCAweDU2LCAweDNmLCAweDcyLCAweDdmLCAweDdmLAorICAgIDB4NTQsIDB4
MSwgMHg4MSwgMHgyMCwgMHgwLCAweDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4N2YsIDB4M2YsIDB4
NzIsIDB4NzgsIDB4N2YsIDB4NzAsIDB4N2YsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLAorICAgIDB4NTQsIDB4MSwgMHg4MSwgMHgyMCwgMHgwLCAweDAsIDB4NTAsIDB4
N2YsIDB4NzIsIDB4ZmUsIDB4N2YsIDB4N2YsIDB4N2YsIDB4N2YsIDB4N2YsIDB4N2YsCitdKTsK
K3ZhciBhc3RjXzh4OF9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAvLzB4MTMsIDB4
YWIsIDB4YTEsIDB4NWMsIDB4OCwgMHg4LCAweDEsIDB4MTAsIDB4MCwgMHgwLCAweDEwLCAweDAs
IDB4MCwgMHgxLCAweDAsIDB4MCwgSEVBREVSCisgICAgMHg0NCwgMHg1LCAweDgxLCAweDMsIDB4
ODIsIDB4MCwgMHgwLCAweDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4N2YsCisgICAgMHg0NCwgMHg1LCAweDgxLCAweDMsIDB4ODIsIDB4MCwgMHgwLCAweDAs
IDB4M2YsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHg0
NCwgMHg1LCAweDEsIDB4ODIsIDB4ODIsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmMsIDB4ZmMsCisgICAgMHg0NCwgMHg1LCAweDEsIDB4ODIs
IDB4ODIsIDB4MCwgMHgwLCAweDAsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4M2YsIDB4M2YsCitdKTsKK3ZhciBhc3RjXzEweDVfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJh
eShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4NSwgMHgxLCAweDEwLCAw
eDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4NjUs
IDB4MSwgMHgxLCAweGZjLCAweGZkLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4YzAsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLAorICAgIDB4NjUsIDB4MSwgMHgxLCAweGZjLCAweGZkLCAweDEsIDB4MCwgMHgw
LCAweDAsIDB4MCwgMHhmYywgMHhmMCwgMHhjMywgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZj
LCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgw
LCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAg
ICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHg2NSwgMHgxLCAweDEs
IDB4ZmMsIDB4ZmQsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGY4LCAweGUwLCAweDgzLCAw
eGYsIDB4M2UsIDB4ZjgsCitdKTsKK3ZhciBhc3RjXzEweDZfYXJnYl9oZHIgPSBuZXcgVWludDhB
cnJheShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4NiwgMHgxLCAweDEw
LCAweDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4
YTQsIDB4MSwgMHgxLCAweGZjLCAweGZkLCAweDEsIDB4MCwgMHgwLCAweGYwLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwKKyAgICAweGE0LCAweDEsIDB4MSwgMHhmYywgMHhmZCwgMHgxLCAweDAs
IDB4MCwgMHhmMCwgMHhmZiwgMHhmZiwgMHhmMCwgMHhjMywgMHhmLCAweGZmLCAweGZmLAorICAg
IDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsCisgICAgMHhhNCwgMHgxLCAweDEsIDB4ZmMsIDB4ZmQsIDB4MSwg
MHgwLCAweDAsIDB4MCwgMHgzZSwgMHhmOCwgMHhlMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwK
K10pOwordmFyIGFzdGNfMTB4OF9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAvLzB4
MTMsIDB4YWIsIDB4YTEsIDB4NWMsIDB4YSwgMHg4LCAweDEsIDB4MTAsIDB4MCwgMHgwLCAweDEw
LCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgSEVBREVSCisgICAgMHg2NSwgMHg5LCAweDY5LCAw
eDM1LCAweDAsIDB4OCwgMHgxMCwgMHgyLCAweDAsIDB4MCwgMHhmYywgMHhlMCwgMHgzLCAweDAs
IDB4MCwgMHgwLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAw
eDE1LCAweDExLCAweDY5LCAweDI1LCAweDAsIDB4ODQsIDB4MCwgMHgxMCwgMHgwLCAweDIsIDB4
NDAsIDB4ODgsIDB4M2YsIDB4MCwgMHgzZiwgMHgwLAorICAgIDB4NDQsIDB4NSwgMHgxLCAweDIs
IDB4MiwgMHgwLCAweDAsIDB4MCwgMHhmMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwKK10pOwordmFyIGFzdGNfMTB4MTBfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJh
eShbCisgICAgLy8weDEzLCAweGFiLCAweGExLCAweDVjLCAweGEsIDB4YSwgMHgxLCAweDEwLCAw
eDAsIDB4MCwgMHgxMCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4YTQs
IDB4YzksIDB4YywgMHgzLCAweDIyLCAweDAsIDB4OCwgMHg0MCwgMHg4LCAweDNmLCAweGZjLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwKKyAgICAweGZjLCAweGZkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsCisgICAg
MHg0NSwgMHg4OSwgMHg3LCAweDM1LCAweDAsIDB4NDAsIDB4MCwgMHg4MiwgMHgwLCAweDAsIDB4
MCwgMHhlMCwgMHg4MywgMHhmLCAweDNlLCAweDAsCitdKTsKK3ZhciBhc3RjXzEyeDEwX2FyZ2Jf
aGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIC8vMHgxMywgMHhhYiwgMHhhMSwgMHg1YywgMHhj
LCAweGEsIDB4MSwgMHgxMCwgMHgwLCAweDAsIDB4MTAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgw
LCBIRUFERVIKKyAgICAweDY0LCAweDgsIDB4MTEsIDB4MywgMHgyMiwgMHgwLCAweDgsIDB4NDAs
IDB4MzgsIDB4ZmMsIDB4YzMsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHhm
YywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAorICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwKKyAgICAweDQ0LCAweDEwLCAweDRhLCAweDQ5LCAweDQ2LCAweGYsIDB4
MWMsIDB4M2YsIDB4MCwgMHgyOCwgMHhmZiwgMHgxLCAweGMwLCAweDNmLCAweGMsIDB4MCwKK10p
OwordmFyIGFzdGNfMTJ4MTJfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgLy8weDEz
LCAweGFiLCAweGExLCAweDVjLCAweGMsIDB4YywgMHgxLCAweDEwLCAweDAsIDB4MCwgMHgxMCwg
MHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIEhFQURFUgorICAgIDB4NjQsIDB4YTgsIDB4MjEsIDB4
MywgMHgyMiwgMHgwLCAweDgsIDB4NDAsIDB4MzgsIDB4ZmMsIDB4YzMsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4ZmYsIDB4N2YsCisgICAgMHhmYywgMHhmZCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGZmLCAweGZmLAor
ICAgIDB4ZmMsIDB4ZmQsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwKKyAgICAweDQsIDB4ZDgsIDB4
ZTksIDB4MmUsIDB4MCwgMHg4LCAweDEsIDB4NDAsIDB4ODAsIDB4YzAsIDB4ODEsIDB4MjgsIDB4
MmEsIDB4MCwgMHgwLCAweDAsCitdKTsKKworLy8gRGVjb2RlZCBBU1RDIHRleHR1cmVzIGdlbmVy
YXRlZCB3aXRoIEFSTSdzIEFTVEMgZW5jb2RlcgorLy8gaHR0cHM6Ly9naXRodWIuY29tL0FSTS1z
b2Z0d2FyZS9hc3RjLWVuY29kZXIKKworLy8gQXMgdGhlIG9yaWdpbmFsIGltYWdlIGlzIHF1aXRl
IHNpbXBsZSB0byBjb21wcmVzcywKKy8vIHNldmVyYWwgZGVjb2RlZCBpbWFnZXMgc2hhcmUgdGhl
IHNhbWUgZGF0YQorCisvLyBMRFIgZGVjb2RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBs
aW5lOgorLy8gJ2FzdGNlbmMgLWQgc291cmNlLmFzdGMgcmVzdWx0LnRnYScKK3ZhciBkZWNvZGVk
XzR4NFRvMTB4Nl9hcmdiX2xkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwg
MHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhm
ZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwg
MHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4
MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKK10pOwordmFyIGRlY29kZWRfMTB4OF9hcmdiX2xkciA9IG5ldyBVaW50OEFycmF5KFsK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZGYsIDB4MjAsIDB4
MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAor
ICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorXSk7Cit2YXIgZGVjb2RlZF8xMHgxMF9hcmdiX2xk
ciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4MjAsIDB4ZGYsIDB4MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLAorICAgIDB4
MjAsIDB4ZGYsIDB4MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHg4Ziwg
MHg3MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorXSk7Cit2
YXIgZGVjb2RlZF8xMngxMF9hcmdiX2xkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGRmLCAweDIwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHg3MCwgMHg4ZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorXSk7Cit2YXIgZGVjb2RlZF8xMngxMl9hcmdiX2xkciA9IG5ldyBVaW50
OEFycmF5KFsKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwg
MHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhm
ZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4MTAsIDB4ZWYsIDB4MCwgMHhmZiwgMHgxMCwgMHhlZiwgMHgw
LCAweGZmLAorICAgIDB4MTAsIDB4ZWYsIDB4MCwgMHhmZiwgMHgxMCwgMHhlZiwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDcw
LCAweDhmLCAweDAsIDB4ZmYsIDB4NzAsIDB4OGYsIDB4MCwgMHhmZiwKKyAgICAweDcwLCAweDhm
LCAweDAsIDB4ZmYsIDB4NzAsIDB4OGYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhjZiwgMHgzMCwgMHgwLCAweGZmLCAweGNm
LCAweDMwLCAweDAsIDB4ZmYsCisgICAgMHhjZiwgMHgzMCwgMHgwLCAweGZmLCAweGNmLCAweDMw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGJmLCAweDQwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHg2MCwgMHg5
ZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorXSk7CisKK3Zh
ciBkZWNvZGVkXzEweDhfYXJnYl9sZHJfc3JnYiA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4YmMsIDB4NCwgMHgwLCAweGZmLCAw
eDQsIDB4YmMsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKK10pOwordmFyIGRlY29kZWRfMTB4MTBfYXJnYl9sZHJfc3JnYiA9IG5l
dyBVaW50OEFycmF5KFsKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwg
MHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4
MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
NCwgMHhiYywgMHgwLCAweGZmLCAweDQsIDB4YmMsIDB4MCwgMHhmZiwKKyAgICAweDQsIDB4YmMs
IDB4MCwgMHhmZiwgMHg0LCAweGJjLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweDQ2LCAweDI5LCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCitdKTsKK3ZhciBkZWNvZGVk
XzEyeDEwX2FyZ2JfbGRyX3NyZ2IgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhiYywgMHg0LCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHgyOSwgMHg0NiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorXSk7Cit2YXIgZGVjb2RlZF8xMngxMl9hcmdiX2xkcl9zcmdiID0gbmV3IFVpbnQ4
QXJyYXkoWworICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHgxLCAweGRjLCAweDAsIDB4ZmYsIDB4MSwgMHhkYywgMHgwLCAw
eGZmLAorICAgIDB4MSwgMHhkYywgMHgwLCAweGZmLCAweDEsIDB4ZGMsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgyOSwgMHg0
NiwgMHgwLCAweGZmLCAweDI5LCAweDQ2LCAweDAsIDB4ZmYsCisgICAgMHgyOSwgMHg0NiwgMHgw
LCAweGZmLCAweDI5LCAweDQ2LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4OWYsIDB4OCwgMHgwLCAweGZmLCAweDlmLCAweDgs
IDB4MCwgMHhmZiwKKyAgICAweDlmLCAweDgsIDB4MCwgMHhmZiwgMHg5ZiwgMHg4LCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweDg1LCAweGQsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweDFlLCAweDU4LCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCitdKTsKKworLy8gSERSIGRlY29k
ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKKy8vICdhc3RjZW5jIC1kIHNvdXJj
ZS5hc3RjIHJlc3VsdC50Z2EnCisKK3ZhciBkZWNvZGVkXzR4NF9hcmdiX2hkciA9IG5ldyBVaW50
OEFycmF5KFsKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwg
MHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmUsIDB4MCwgMHhm
ZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwg
MHhmZiwKKyAgICAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhm
ZCwgMHgwLCAweGZmLCAweDAsIDB4ZmQsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmQsIDB4MCwg
MHhmZiwgMHgwLCAweGZkLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKK10pOwordmFyIGRlY29kZWRfNXg0X2Fy
Z2JfaGRyID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4
MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4
ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAg
IDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7Cit2
YXIgZGVjb2RlZF81eDVfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAw
eGZlLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCitdKTsKK3ZhciBkZWNvZGVkXzZ4NV9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5
KFsKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAw
eGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgw
LCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwK
KyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgw
LCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwg
MHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKK10pOwordmFyIGRlY29kZWRfNng2X2FyZ2JfaGRy
ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhm
ZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwg
MHhmZSwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4MCwg
MHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7Cit2YXIgZGVj
b2RlZF84eDVfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZmLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCitdKTsKK3ZhciBkZWNvZGVkXzh4Nl9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5KFsKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAw
eGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKK10pOwordmFyIGRlY29kZWRfOHg4X2FyZ2JfaGRyID0gbmV3
IFVpbnQ4QXJyYXkoWworICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAw
eGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgw
LCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwg
MHgwLCAweGZmLAorICAgIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgw
LCAweGZkLCAweDAsIDB4ZmYsIDB4MCwgMHhmZCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZCwg
MHgwLCAweGZmLCAweDAsIDB4ZmQsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4MCwgMHhmZCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7CisKK3ZhciBkZWNvZGVk
XzEweDVUbzEweDZfYXJnYl9oZHIgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZl
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAs
IDB4ZmYsCisgICAgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4
ZmUsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZlLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwgMHgwLCAweGZlLCAw
eDAsIDB4ZmYsCisgICAgMHgwLCAweGZlLCAweDAsIDB4ZmYsIDB4MCwgMHhmZSwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHgwLCAweGZlLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCitdKTsKKwordmFyIGRlY29kZWRfMTB4OF9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5
KFsKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZGYsIDB4MjAs
IDB4MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAg
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7Cit2YXIgZGVjb2RlZF8xMHgxMF9hcmdi
X2hkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZm
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4MjAsIDB4ZGYsIDB4MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLAorICAg
IDB4MjAsIDB4ZGYsIDB4MCwgMHhmZiwgMHgyMCwgMHhkZiwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
CisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHg4
ZiwgMHg3MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7
Cit2YXIgZGVjb2RlZF8xMngxMF9hcmdiX2hkciA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4
ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYs
IDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweDAs
IDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGRmLCAweDIwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisg
ICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsCisgICAgMHg3MCwgMHg4ZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhm
ZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZm
LAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLAorXSk7Cit2YXIgZGVjb2RlZF8xMngxMl9hcmdiX2hkciA9IG5ldyBV
aW50OEFycmF5KFsKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweDAsIDB4ZmUsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4
MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgw
LCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwg
MHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4
MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAw
eDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwg
MHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4
MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAs
IDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAw
eGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MCwgMHhm
ZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4MCwgMHhmZiwKKyAgICAweDAsIDB4ZmYsIDB4MCwg
MHhmZiwgMHgwLCAweGZmLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAs
IDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAw
eGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4MTAsIDB4ZWYsIDB4MCwgMHhmZiwgMHgxMCwgMHhlZiwg
MHgwLCAweGZmLAorICAgIDB4MTAsIDB4ZWYsIDB4MCwgMHhmZiwgMHgxMCwgMHhlZiwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhm
ZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAs
IDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eDcwLCAweDhmLCAweDAsIDB4ZmYsIDB4NzAsIDB4OGYsIDB4MCwgMHhmZiwKKyAgICAweDcwLCAw
eDhmLCAweDAsIDB4ZmYsIDB4NzAsIDB4OGYsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZl
LCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhjZiwgMHgzMCwgMHgwLCAweGZmLCAw
eGNmLCAweDMwLCAweDAsIDB4ZmYsCisgICAgMHhjZiwgMHgzMCwgMHgwLCAweGZmLCAweGNmLCAw
eDMwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhm
ZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUs
IDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAg
ICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwg
MHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhm
ZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAs
IDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwg
MHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAw
eGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwK
KyAgICAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwKKyAgICAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAw
eDAsIDB4MCwgMHhmZiwKKyAgICAweGJmLCAweDQwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgw
LCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAg
MHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4
MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHhmZiwgMHgwLCAweDAsIDB4ZmYs
IDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAw
eDAsIDB4ZmYsCisgICAgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZm
LCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsCisgICAgMHg2MCwg
MHg5ZiwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4
ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZm
LCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhm
ZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwg
MHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwgMHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4
ZmUsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4MCwgMHhmZiwgMHgwLCAweGZmLCAweGZmLCAweDAs
IDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAor
ICAgIDB4ZmYsIDB4MCwgMHgwLCAweGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgw
LCAweDAsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAweGZmLAorICAgIDB4ZmYsIDB4MCwgMHgwLCAw
eGZmLCAweGZmLCAweDAsIDB4MCwgMHhmZiwgMHhmZiwgMHgwLCAweDAsIDB4ZmYsIDB4ZmYsIDB4
MCwgMHgwLCAweGZmLAorICAgIDB4ZmUsIDB4MCwgMHgwLCAweGZmLCAweGZlLCAweDAsIDB4MCwg
MHhmZiwgMHhmZSwgMHgwLCAweDAsIDB4ZmYsIDB4ZmUsIDB4MCwgMHgwLCAweGZmLAorXSk7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjdHUgPSBDb21wcmVzc2VkVGV4dHVyZVV0
aWxzOwordmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9u
KCk7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7Cit2
YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cit2YXIgbmFuVG9NYWdlbnRh
UHJvZ3JhbTJELCBuYW5Ub01hZ2VudGFQcm9ncmFtMkRBcnJheSwgbmFuVG9NYWdlbnRhUHJvZ3Jh
bTNEOwordmFyIHByb2dyYW0yREFycmF5LCBwcm9ncmFtM0Q7CisKK2dsLnVzZVByb2dyYW0ocHJv
Z3JhbSk7CisKK3ZhciBleHRGbGFnID0gIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIjsK
K3ZhciBleHQgPSBudWxsOwordmFyIHZhbyA9IG51bGw7Cit2YXIgdmFsaWRGb3JtYXRzID0gewor
CisgICAgQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA6IDB4OTNCMCwKKyAgICBDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDRfS0hSIDogMHg5M0IxLAorICAgIENPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NV9LSFIgOiAweDkzQjIsCisgICAgQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiA6IDB4
OTNCMywKKyAgICBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSIDogMHg5M0I0LAorICAgIENP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgOiAweDkzQjUsCisgICAgQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg2X0tIUiA6IDB4OTNCNiwKKyAgICBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hS
IDogMHg5M0I3LAorICAgIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSIDogMHg5M0I4LAor
ICAgIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSIDogMHg5M0I5LAorICAgIENPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSIDogMHg5M0JBLAorICAgIENPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDEwX0tIUiA6IDB4OTNCQiwKKyAgICBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIg
OiAweDkzQkMsCisgICAgQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSIDogMHg5M0JELAor
ICAgIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiA6IDB4OTNEMCwKKyAgICBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIgOiAweDkzRDEsCisgICAgQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSIDogMHg5M0QyLAorICAgIENPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiA6IDB4OTNEMywKKyAgICBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzZ4Nl9LSFIgOiAweDkzRDQsCisgICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ184eDVfS0hSIDogMHg5M0Q1LAorICAgIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg2X0tIUiA6IDB4OTNENiwKKyAgICBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4
OF9LSFIgOiAweDkzRDcsCisgICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
UiA6IDB4OTNEOCwKKyAgICBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSIDog
MHg5M0Q5LAorICAgIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIgOiAweDkz
REEsCisgICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIgOiAweDkzREIs
CisgICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgOiAweDkzREMsCisg
ICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgOiAweDkzREQKKworfTsK
K3ZhciBuYW1lOworCitjb25zdCBlcnJvckNvbG9yID0gWzI1NSwgMCwgMjU1LCAyNTVdOworbGV0
IGhhc0hkciA9IGZhbHNlOworCit2YXIgY2hlY2syRFRhcmdldCA9IDE7Cit2YXIgY2hlY2syREFy
cmF5VGFyZ2V0ID0gMTsKK3ZhciBjaGVjazNEVGFyZ2V0ID0gMTsKKworaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
ICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFRoZSB0ZXh0
dXJlIHNpemUgMyAqIDUgKiA4IGJlbG93IGlzIGRpdmlzaWJsZSBieSBhbGwgdGhlIGRpZmZlcmVu
dCBibG9jayBzaXplcyBzdXBwb3J0ZWQgYnkgdGhlIGV4dGVuc2lvbi4KKyAgICBjdHUudGVzdENv
bXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQoZ2wsIHZhbGlk
Rm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCAzICogNSAqIDgpOworCisgICAgLy8gUXVlcnkg
dGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBp
dAorICAgIGV4dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgZXh0Rmxh
Zyk7CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIHd0
dS5ydW5FeHRlbnNpb25TdXBwb3J0ZWRUZXN0KGdsLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X2FzdGMiLCBmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IGVuYWJsZWQgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMgZXh0ZW5zaW9uIik7
CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVk
VGVzdChnbCwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgdHJ1ZSk7CisgICAgICAg
IHJ1blRlc3RFeHRlbnNpb24oKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNp
b24oKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nICIgKyBleHRGbGFnKTsK
KworICAgIC8vIFRlc3QgdGhhdCBlbnVtIHZhbHVlcyBhcmUgbGlzdGVkIGNvcnJlY3RseSBpbiBz
dXBwb3J0ZWQgZm9ybWF0cyBhbmQgaW4gdGhlIGV4dGVuc2lvbiBvYmplY3QuCisgICAgY3R1LnRl
c3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZChnbCwgdmFsaWRGb3JtYXRzKTsKKyAgICBjdHUudGVz
dENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZvcm1hdHMpOworICAgIC8vIFRlc3Qg
dGhhdCB0ZXh0dXJlIHVwbG9hZCBidWZmZXIgc2l6ZSBpcyB2YWxpZGF0ZWQgY29ycmVjdGx5Lgor
ICAgIGN0dS50ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZmZXJTaXplKGdsLCB2YWxpZEZvcm1h
dHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zKTsKKworICAgIGlmIChj
b250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgICAgIC8vIEZvciBMRFIgYW5kIG5vbi1zUkdCIGZv
cm1hdHMsIHRoZSBlcnJvciBjb2xvciBpcyBtYWdlbnRhICpvciogYWxsIE5hTnMuIFRvCisgICAg
ICAgIC8vIG1ha2Ugc3VyZSB3ZSBhY2NlcHQgdGhpcyB3ZSBjcmVhdGUgYSBwcm9ncmFtIHRoYXQg
dHJhbnNmb3JtcyBhbiBhbGwgTmFOCisgICAgICAgIC8vIHNhbXBsaW5nIHJlc3VsdCB0byBtYWdl
bnRhLgorCisgICAgICAgIG5hblRvTWFnZW50YVByb2dyYW0yRCA9IHd0dS5zZXR1cFNpbXBsZVRl
eHR1cmVQcm9ncmFtRVNTTDMwMChnbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsCisgICAgICAgICAg
IGAjdmVyc2lvbiAzMDAgZXMKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
ICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgaW4gdmVjMiB0
ZXhDb29yZDsKKyAgICAgICAgICAgIG91dCB2ZWM0IG91dF9jb2xvcjsKKyAgICAgICAgICAgIHZv
aWQgbWFpbigpIHsKKyAgICAgICAgICAgICAgICB2ZWM0IGMgPSB0ZXh0dXJlKHRleCwgdGV4Q29v
cmQpOworICAgICAgICAgICAgICAgIGlmIChhbGwoaXNuYW4oYykpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG91dF9jb2xvciA9IHZlYzQoMSwgMCwgMSwgMSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0X2NvbG9yID0gYzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9YAorICAgICAgICApOworCisgICAgICAgIG5hblRvTWFnZW50YVBy
b2dyYW0yREFycmF5ID0gd3R1LnNldHVwU2ltcGxlVGV4dHVyZVByb2dyYW1FU1NMMzAwKGdsLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwKKyAgICAgICAgICAgYCN2ZXJzaW9uIDMwMCBlcworICAgICAg
ICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIG1lZGl1
bXAgc2FtcGxlcjJEQXJyYXkgdGV4OworICAgICAgICAgICAgaW4gdmVjMiB0ZXhDb29yZDsKKyAg
ICAgICAgICAgIG91dCB2ZWM0IG91dF9jb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbigpIHsK
KyAgICAgICAgICAgICAgICB2ZWM0IGMgPSB0ZXh0dXJlKHRleCwgdmVjMyh0ZXhDb29yZCwgMCkp
OworICAgICAgICAgICAgICAgIGlmIChhbGwoaXNuYW4oYykpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG91dF9jb2xvciA9IHZlYzQoMSwgMCwgMSwgMSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgb3V0X2NvbG9yID0gYzsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9YAorICAgICAgICApOworCisgICAgICAgIG5hblRvTWFnZW50YVByb2dy
YW0zRCA9IHd0dS5zZXR1cFNpbXBsZVRleHR1cmVQcm9ncmFtRVNTTDMwMChnbCwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsCisgICAgICAgICAgIGAjdmVyc2lvbiAzMDAgZXMKKyAgICAgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBtZWRpdW1wIHNhbXBs
ZXIzRCB0ZXg7CisgICAgICAgICAgICBpbiB2ZWMyIHRleENvb3JkOworICAgICAgICAgICAgb3V0
IHZlYzQgb3V0X2NvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAgICAg
ICAgIHZlYzQgYyA9IHRleHR1cmUodGV4LCB2ZWMzKHRleENvb3JkLCAwKSk7CisgICAgICAgICAg
ICAgICAgaWYgKGFsbChpc25hbihjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0X2NvbG9y
ID0gdmVjNCgxLCAwLCAxLCAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBvdXRfY29sb3IgPSBjOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH1gCisgICAgICAgICk7CisKKyAgICAgICAgcHJvZ3JhbTJEQXJyYXkgPSB3dHUuc2V0dXBTaW1w
bGVUZXh0dXJlUHJvZ3JhbUVTU0wzMDAoZ2wsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLAorICAgICAg
ICAgICBgI3ZlcnNpb24gMzAwIGVzCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICAgICAgICAgIHVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheSB0ZXg7CisgICAg
ICAgICAgICBpbiB2ZWMyIHRleENvb3JkOworICAgICAgICAgICAgb3V0IHZlYzQgb3V0X2NvbG9y
OworICAgICAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAgICAgICAgIG91dF9jb2xvciA9
IHRleHR1cmUodGV4LCB2ZWMzKHRleENvb3JkLCAwKSk7CisgICAgICAgICAgICB9YAorICAgICAg
ICApOworCisgICAgICAgIHByb2dyYW0zRCA9IHd0dS5zZXR1cFNpbXBsZVRleHR1cmVQcm9ncmFt
RVNTTDMwMChnbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsCisgICAgICAgICAgIGAjdmVyc2lvbiAz
MDAgZXMKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAg
dW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB0ZXg7CisgICAgICAgICAgICBpbiB2ZWMyIHRleENv
b3JkOworICAgICAgICAgICAgb3V0IHZlYzQgb3V0X2NvbG9yOworICAgICAgICAgICAgdm9pZCBt
YWluKCkgeworICAgICAgICAgICAgICAgIG91dF9jb2xvciA9IHRleHR1cmUodGV4LCB2ZWMzKHRl
eENvb3JkLCAwKSk7CisgICAgICAgICAgICB9YAorICAgICAgICApOworICAgIH0KKworICAgIC8v
IFF1ZXJ5IHN1cHBvcnRlZCBwcm9maWxlcyBhbmQgdGVzdCBBU1RDIHRleHR1cmUgd2l0aCBhcHBy
b3ByaWF0ZSBmb3JtYXRzCisgICAgdmFyIHByb2ZpbGVzID0gZXh0LmdldFN1cHBvcnRlZFByb2Zp
bGVzKCk7CisgICAgLy8gQ2hlY2sgZm9yIEhEUiBzdXBwb3J0IGZpcnN0LCBzaW5jZSBpdCBhZmZl
Y3RzIHNsaWNlZCAzRCBzdXBwb3J0IGZvciBMRFIKKyAgICBpZiAocHJvZmlsZXMuaW5kZXhPZigi
aGRyIikgIT0gLTEpIHsKKyAgICAgICAgaGFzSGRyID0gdHJ1ZTsKKyAgICAgICAgdGVzdEhEUlRl
eHR1cmVzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiSERSIHByb2ZpbGUg
aXMgbm90IHN1cHBvcnRlZC4iKTsKKyAgICB9CisKKyAgICBpZiAocHJvZmlsZXMuaW5kZXhPZigi
bGRyIikgIT0gLTEpIHsKKyAgICAgICAgdGVzdExEUlRleHR1cmVzKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgnTERSIHByb2ZpbGUgbXVzdCBiZSBzdXBwb3J0ZWQuJyk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0TERSVGV4dHVyZXMoKSB7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJUZXN0aW5nIGV2ZXJ5IExEUiB0ZXh0dXJlIGZvcm1hdCBjb21wcmVzc2lvbiIp
OworCisgICAgdmFyIGRhdGEgPSBbXTsKKyAgICB2YXIgZm9ybWF0cyA9IFtdOworICAgIHZhciBz
UkdCZm9ybWF0cyA9IFtdOworICAgIHZhciByYXdzID0gW107CisgICAgdmFyIHNSR0JyYXdzID0g
W107CisKKyAgICBkYXRhLnB1c2goYXN0Y180eDRfYXJnYl9sZHIsIGFzdGNfNXg0X2FyZ2JfbGRy
LCBhc3RjXzV4NV9hcmdiX2xkciwKKyAgICAgICAgICAgICAgYXN0Y182eDVfYXJnYl9sZHIsIGFz
dGNfNng2X2FyZ2JfbGRyLCBhc3RjXzh4NV9hcmdiX2xkciwKKyAgICAgICAgICAgICAgYXN0Y184
eDZfYXJnYl9sZHIsIGFzdGNfOHg4X2FyZ2JfbGRyLCBhc3RjXzEweDVfYXJnYl9sZHIsCisgICAg
ICAgICAgICAgIGFzdGNfMTB4Nl9hcmdiX2xkciwgYXN0Y18xMHg4X2FyZ2JfbGRyLCBhc3RjXzEw
eDEwX2FyZ2JfbGRyLAorICAgICAgICAgICAgICBhc3RjXzEyeDEwX2FyZ2JfbGRyLCBhc3RjXzEy
eDEyX2FyZ2JfbGRyKTsKKworICAgIGZvcm1hdHMucHVzaChleHQuQ09NUFJFU1NFRF9SR0JBX0FT
VENfNHg0X0tIUiwgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsCisgICAgICAgICAg
ICAgICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsIGV4dC5DT01QUkVTU0VEX1JH
QkFfQVNUQ182eDVfS0hSLAorICAgICAgICAgICAgICAgIGV4dC5DT01QUkVTU0VEX1JHQkFfQVNU
Q182eDZfS0hSLCBleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAg
ICAgICBleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwgZXh0LkNPTVBSRVNTRURfUkdC
QV9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAgICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDVfS0hSLCBleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAg
ICAgICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSLCBleHQuQ09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4MTBfS0hSLAorICAgICAgICAgICAgICAgIGV4dC5DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFIsIGV4dC5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIpOworCisg
ICAgc1JHQmZvcm1hdHMucHVzaChleHQuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSLCBleHQuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAorICAgICAgICAg
ICAgICAgIGV4dC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsIGV4dC5DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIsCisgICAgICAgICAgICAgICAgZXh0LkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiwgZXh0LkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICBleHQuQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDZfS0hSLCBleHQuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184
eDhfS0hSLAorICAgICAgICAgICAgICAgIGV4dC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDVfS0hSLCBleHQuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiwKKyAg
ICAgICAgICAgICAgICBleHQuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwg
ZXh0LkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSLAorICAgICAgICAgICAg
ICAgIGV4dC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwgZXh0LkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSKTsKKworICAgIC8vIGFkZHMgZGVjb2Rl
ZCBpbWFnZSB0byB1c2UgaW4gdGhlIGNvbXBhcmUgZnVuY3Rpb24KKyAgICAvLyBjZXJ0YWluIGJs
b2NrIHNpemUgc2hhcmUgdGhlIHNhbWUgZGVjb2RlZCBkYXRhCisgICAgLy8gZHVlIHRvIHRoZSBm
YWN0IHRoYXQgdGhlIHRlc3QgaW1hZ2UgaXMgcXVpdGUgc2ltcGxlCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDsgKytpKQorICAgICAgICByYXdzLnB1c2goZGVjb2RlZF80eDRUbzEweDZfYXJn
Yl9sZHIpOworICAgIHJhd3MucHVzaChkZWNvZGVkXzEweDhfYXJnYl9sZHIsIGRlY29kZWRfMTB4
MTBfYXJnYl9sZHIsIGRlY29kZWRfMTJ4MTBfYXJnYl9sZHIsIGRlY29kZWRfMTJ4MTJfYXJnYl9s
ZHIpOworCisgICAgLy8gR2l2ZW4gdGhhdCB0ZXN0IGltYWdlcyBtb3N0bHkgdXNlIDAgYW5kIDI1
NSwgc1JHQiBkZWNvZGluZyBpcyB0aGUgc2FtZSBhcyBsaW5lYXIgZm9yIDR4NCAtIDEweDYgaW1h
Z2VzCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBzUkdCcmF3cy5w
dXNoKGRlY29kZWRfNHg0VG8xMHg2X2FyZ2JfbGRyKTsKKyAgICBzUkdCcmF3cy5wdXNoKGRlY29k
ZWRfMTB4OF9hcmdiX2xkcl9zcmdiLCBkZWNvZGVkXzEweDEwX2FyZ2JfbGRyX3NyZ2IsIGRlY29k
ZWRfMTJ4MTBfYXJnYl9sZHJfc3JnYiwgZGVjb2RlZF8xMngxMl9hcmdiX2xkcl9zcmdiKTsKKwor
ICAgIHRlc3RBU1RDVGV4dHVyZXMoYnVpbGRUZXN0cyhkYXRhLCBmb3JtYXRzLCByYXdzLCAnTERS
JykpOworICAgIHRlc3RBU1RDVGV4dHVyZXMoYnVpbGRUZXN0cyhkYXRhLCBzUkdCZm9ybWF0cywg
c1JHQnJhd3MsICdMRFItc1JHQicpKTsKK30KKworZnVuY3Rpb24gdGVzdEhEUlRleHR1cmVzKCkg
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBldmVyeSBIRFIgdGV4dHVyZSBm
b3JtYXQgY29tcHJlc3Npb24iKTsKKworCisgICAgdmFyIGRhdGEgPSBbXTsKKyAgICB2YXIgZm9y
bWF0cyA9IFtdOworICAgIHZhciByYXdzID0gW107CisKKyAgICBkYXRhLnB1c2goYXN0Y180eDRf
YXJnYl9oZHIsIGFzdGNfNXg0X2FyZ2JfaGRyLCBhc3RjXzV4NV9hcmdiX2hkciwKKyAgICAgICAg
ICAgICAgYXN0Y182eDVfYXJnYl9oZHIsIGFzdGNfNng2X2FyZ2JfaGRyLCBhc3RjXzh4NV9hcmdi
X2hkciwKKyAgICAgICAgICAgICAgYXN0Y184eDZfYXJnYl9oZHIsIGFzdGNfOHg4X2FyZ2JfaGRy
LCBhc3RjXzEweDVfYXJnYl9oZHIsCisgICAgICAgICAgICAgIGFzdGNfMTB4Nl9hcmdiX2hkciwg
YXN0Y18xMHg4X2FyZ2JfaGRyLCBhc3RjXzEweDEwX2FyZ2JfaGRyLAorICAgICAgICAgICAgICBh
c3RjXzEyeDEwX2FyZ2JfaGRyLCBhc3RjXzEyeDEyX2FyZ2JfaGRyKTsKKworICAgIGZvcm1hdHMu
cHVzaChleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwgZXh0LkNPTVBSRVNTRURfUkdC
QV9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NV9LSFIsIGV4dC5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSLAorICAgICAgICAgICAg
ICAgIGV4dC5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLCBleHQuQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICBleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENf
OHg2X0tIUiwgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAg
ICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLCBleHQuQ09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDhfS0hSLCBleHQuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLAorICAgICAgICAg
ICAgICAgIGV4dC5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIsIGV4dC5DT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMl9LSFIpOworCisgICAgLy8gYWRkcyBkZWNvZGVkIGltYWdlIHRvIHVz
ZSBpbiB0aGUgY29tcGFyZSBmdW5jdGlvbgorICAgIC8vIGNlcnRhaW4gYmxvY2sgc2l6ZSBzaGFy
ZSB0aGUgc2FtZSBkZWNvZGVkIGRhdGEKKyAgICAvLyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUg
dGVzdCBpbWFnZSBpcyBxdWl0ZSBzaW1wbGUKKyAgICByYXdzLnB1c2goZGVjb2RlZF80eDRfYXJn
Yl9oZHIsIGRlY29kZWRfNXg0X2FyZ2JfaGRyLCBkZWNvZGVkXzV4NV9hcmdiX2hkciwgZGVjb2Rl
ZF82eDVfYXJnYl9oZHIsCisgICAgICAgICAgICAgIGRlY29kZWRfNng2X2FyZ2JfaGRyLCBkZWNv
ZGVkXzh4NV9hcmdiX2hkciwgZGVjb2RlZF84eDZfYXJnYl9oZHIsIGRlY29kZWRfOHg4X2FyZ2Jf
aGRyLAorICAgICAgICAgICAgICBkZWNvZGVkXzEweDVUbzEweDZfYXJnYl9oZHIsIGRlY29kZWRf
MTB4NVRvMTB4Nl9hcmdiX2hkciwgZGVjb2RlZF8xMHg4X2FyZ2JfaGRyLAorICAgICAgICAgICAg
ICBkZWNvZGVkXzEweDEwX2FyZ2JfaGRyLCBkZWNvZGVkXzEyeDEwX2FyZ2JfaGRyLCBkZWNvZGVk
XzEyeDEyX2FyZ2JfaGRyKTsKKworICAgIHRlc3RBU1RDVGV4dHVyZXMoYnVpbGRUZXN0cyhkYXRh
LCBmb3JtYXRzLCByYXdzLCAnSERSJykpOworfQorCitmdW5jdGlvbiB0ZXN0QVNUQ1RleHR1cmVz
KHRlc3RzKSB7CisgICAgZGVidWcoIjxoci8+Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICB0ZXN0QVNUQ1RleHR1cmUodGVzdHNbaV0sIGNv
bnRleHRWZXJzaW9uID49IDIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEFTVENUZXh0dXJl
KHRlc3QsIHVzZUVTMykgeworICAgIHZhciBkYXRhID0gdGVzdC5kYXRhOworICAgIHZhciB3aWR0
aCA9IHRlc3Qud2lkdGg7CisgICAgdmFyIGhlaWdodCA9IHRlc3QuaGVpZ2h0OworICAgIHZhciBm
b3JtYXQgPSB0ZXN0LmZvcm1hdDsKKyAgICB2YXIgcmF3ID0gdGVzdC5yYXc7CisKKyAgICBjYW52
YXMud2lkdGggPSB3aWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGdsLnZp
ZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dGVzdGluZyAiICsgY3R1LmZvcm1hdFRvU3RyaW5nKGV4dCwgZm9ybWF0KSArICIgIiArIHdpZHRo
ICsgIngiICsgaGVpZ2h0ICsgIiAoIiArIHRlc3QubW9kZSArICIpIiArCisgICAgICAgICAgKHVz
ZUVTMyA/ICIgdmlhIEVTIDMuMCBlbnRyeXBvaW50cyIgOiAiIHZpYSBjb21wcmVzc2VkVGV4SW1h
Z2UyRCIpKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmdW5jdGlvbiBlcnJvckNvbG9yTWF5YmVO
YU4oKSB7CisgICAgICAgIHJldHVybiBmb3JtYXQgPj0gZXh0LkNPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFIgJiYgZm9ybWF0IDw9IGV4dC5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZW5zdXJlUGFyYW1ldGVycyh0YXJnZXQpIHsKKyAgICAg
ICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRVUkVfV1JB
UF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHNldHVwRW1wdHlUZXh0dXJlKHRhcmdldCwgdXNlU3RvcmFnZSkgewor
ICAgICAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5kVGV4
dHVyZSh0YXJnZXQsIHRleCk7CisgICAgICAgIGVuc3VyZVBhcmFtZXRlcnModGFyZ2V0KTsKKwor
ICAgICAgICBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIGlmICh1
c2VTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTJEKHRhcmdldCwgMSwg
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCAwLCBmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIDAsIG5ldyBVaW50OEFycmF5KGRhdGEubGVuZ3RoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfMkRfQVJSQVkgfHwgdGFyZ2V0
ID09IGdsLlRFWFRVUkVfM0QpIHsKKyAgICAgICAgICAgIGlmICh1c2VTdG9yYWdlKSB7CisgICAg
ICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEKHRhcmdldCwgMSwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ2wuY29tcHJl
c3NlZFRleEltYWdlM0QodGFyZ2V0LCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIG5l
dyBVaW50OEFycmF5KGRhdGEubGVuZ3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdGV4OyAvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSBzbyBp
dCBjb3VsZCBiZSBkZWxldGVkCisgICAgfQorCisgICAgZnVuY3Rpb24gdXBsb2FkU3ViRGF0YSh0
YXJnZXQpIHsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQodGFyZ2V0LCBleHBlY3RhdGlv
bnMsIGRpbSkgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGV4cGVjdGF0aW9uc1swXSwgInVwbG9hZGluZyBjb21wcmVzc2VkIDJEIHRleHR1
cmUgZGF0YSB2aWEgY29tcHJlc3NlZFRleFN1YkltYWdlIiArIGRpbSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRF9BUlJBWToK
KyAgICAgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXhwZWN0YXRpb25z
WzFdLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgMkQgYXJyYXkgdGV4dHVyZSBkYXRhIHZpYSBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UiICsgZGltKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzNEOgorICAgICAgICAgICAgICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBleHBlY3RhdGlvbnNbMl0sICJ1cGxvYWRpbmcgY29tcHJl
c3NlZCAzRCB0ZXh0dXJlIGRhdGEgdmlhIGNvbXByZXNzZWRUZXhTdWJJbWFnZSIgKyBkaW0pOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgMCwgMCwgMCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICAgICAgY2hlY2tSZXN1bHQodGFyZ2V0LCBbZ2wu
Tk9fRVJST1IsIGdsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9FTlVNIF0sICIyRCIpOworCisg
ICAgICAgIGlmICh1c2VFUzMpIHsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgMCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgZm9ybWF0LCBkYXRhKTsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KHRhcmdldCwgW2dsLklOVkFMSURfRU5VTSwgZ2wuTk9f
RVJST1IsIGdsLk5PX0VSUk9SXSwgIjNEIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzZXR1cEZpbGxlZFRleHR1cmUodGFyZ2V0KSB7CisgICAgICAgIHZhciB0ZXggPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4KTsKKyAg
ICAgICAgZW5zdXJlUGFyYW1ldGVycyh0YXJnZXQpOworCisgICAgICAgIGlmICh0YXJnZXQgPT0g
Z2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQodGFy
Z2V0LCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsIGRhdGEpOworICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIm5vbiAwIGJvcmRlciIpOwor
CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIDAsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGds
LlRFWFRVUkVfMkRfQVJSQVkgfHwgdGFyZ2V0ID09IGdsLlRFWFRVUkVfM0QpIHsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAxLCAwLCBkYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXg7IC8vIEtl
ZXAgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHNvIGl0IGNvdWxkIGJlIGRlbGV0ZWQKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzd2l0Y2hQcm9ncmFtKHRhcmdldCkgeworICAgICAgICAvLyBGb3Ig
TERSIG5vbi1zUkdCIGFuZCBIRFIgZm9ybWF0cywgd2UgYWNjZXB0IGFsbCBOYU5zIGFzIGEgdmFs
aWQgcmVzdWx0LgorICAgICAgICAvLyBUaGlzIHByb2dyYW0gdHJhbnNmb3JtcyBhbGwgTmFOcyB0
byB0aGUgbm9ybWFsIGVycm9yIGNvbG9yLCBtYWdlbnRhLgorCisgICAgICAgIC8vIFRoZXJlJ3Mg
bm8gMTAwJSByZWxpYWJsZSB3YXkgdG8gY2hlY2sgTmFOIHZhbHVlcyBvbiBFU1NMIDEuMCwKKyAg
ICAgICAgLy8gc28gZXJyb3IgY29sb3IgaXMgdmVyaWZpZWQgb25seSBvbiBFU1NMIDMuMC4KKwor
ICAgICAgICBpZiAoZXJyb3JDb2xvck1heWJlTmFOKCkpIHsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obmFu
VG9NYWdlbnRhUHJvZ3JhbTJEKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGds
LlRFWFRVUkVfMkRfQVJSQVkpIHsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG5hblRv
TWFnZW50YVByb2dyYW0yREFycmF5KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09
IGdsLlRFWFRVUkVfM0QpIHsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG5hblRvTWFn
ZW50YVByb2dyYW0zRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgICAgICBnbC51
c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gZ2wu
VEVYVFVSRV8yRF9BUlJBWSkgeworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3Jh
bTJEQXJyYXkpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8z
RCkgeworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbTNEKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrRXJyb3JDb2xvcigp
IHsKKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCBmcm9tIGVt
cHR5IHRleHR1cmUiKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBlcnJvckNvbG9yLCAi
dGV4dHVyZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gZXJyb3IgY29sb3IiKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja1NhbXBsaW5nKHRhcmdldCkgeworICAgICAgICAvLyBDaGVjayB0
aGF0IHRoZSBkZWNvZGVkIGltYWdlIGlzIGNvbnNpc3RlbnQgd2l0aCBORUFSRVNUIGZpbHRlcmlu
ZworICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgcXVhZCB3aXRoIE5FQVJFU1Qg
ZmlsdGVyaW5nIik7CisgICAgICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hh
bm5lbHMsIHdpZHRoLCBoZWlnaHQsIHJhdywgZGF0YSwgZm9ybWF0LCB1bmRlZmluZWQsICJORUFS
RVNUIik7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZGVjb2RlZCBpbWFnZSBpcyBjb25z
aXN0ZW50IHdpdGggTElORUFSIGZpbHRlcmluZworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRh
cmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICBnbC50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAg
ICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgcXVhZCB3aXRoIExJTkVBUiBmaWx0ZXJp
bmciKTsKKyAgICAgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywg
d2lkdGgsIGhlaWdodCwgcmF3LCBkYXRhLCBmb3JtYXQsIHVuZGVmaW5lZCwgIkxJTkVBUiIpOwor
CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgLy8gTWlwbWFwcyBoYW5kbGluZworICAgICAg
ICBnbC5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRyeWluZyB0byBnZW5lcmF0ZSBtaXBtYXBzIGZy
b20gY29tcHJlc3NlZCB0ZXh0dXJlIik7CisgICAgfQorCisgICAgdmFyIHRleDsKKworICAgIGlm
ICh1c2VFUzMpIHsKKyAgICAgICAgLy8gMkQgdGV4dHVyZQorICAgICAgICBpZiAoY2hlY2syRFRh
cmdldCkgeworICAgICAgICAgICAgc3dpdGNoUHJvZ3JhbShnbC5URVhUVVJFXzJEKTsKKworICAg
ICAgICAgICAgLy8gaW1tdXRhYmxlCisgICAgICAgICAgICB0ZXggPSBzZXR1cEVtcHR5VGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0cnVlKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBjb21wcmVzc2VkIHRleHR1cmUgdmlhIHRleFN0
b3JhZ2UyRCIpOworICAgICAgICAgICAgY2hlY2tFcnJvckNvbG9yKCk7CisgICAgICAgICAgICB1
cGxvYWRTdWJEYXRhKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAgY2hlY2tTYW1wbGluZyhn
bC5URVhUVVJFXzJEKQorICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworCisgICAg
ICAgICAgICAvLyBtdXRhYmxlIGVtcHR5CisgICAgICAgICAgICB0ZXggPSBzZXR1cEVtcHR5VGV4
dHVyZShnbC5URVhUVVJFXzJELCBmYWxzZSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImFsbG9jYXRpbmcgZW1wdHkgY29tcHJlc3NlZCB0ZXh0dXJl
IHZpYSBjb21wcmVzc2VkVGV4SW1hZ2UyRCIpOworICAgICAgICAgICAgY2hlY2tFcnJvckNvbG9y
KCk7CisgICAgICAgICAgICB1cGxvYWRTdWJEYXRhKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAg
ICAgY2hlY2tTYW1wbGluZyhnbC5URVhUVVJFXzJEKQorICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXgpOworCisgICAgICAgICAgICAvLyBtdXRhYmxlIGZpbGxlZAorICAgICAgICAgICAg
dGV4ID0gc2V0dXBGaWxsZWRUZXh0dXJlKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhbGxvY2F0aW5nIGZpbGxlZCBjb21w
cmVzc2VkIHRleHR1cmUgdmlhIGNvbXByZXNzZWRUZXhJbWFnZTJEIik7CisgICAgICAgICAgICBj
aGVja1NhbXBsaW5nKGdsLlRFWFRVUkVfMkQpCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJl
KHRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyRCBhcnJheQorICAgICAgICBpZiAoY2hl
Y2syREFycmF5VGFyZ2V0KSB7CisgICAgICAgICAgICBzd2l0Y2hQcm9ncmFtKGdsLlRFWFRVUkVf
MkRfQVJSQVkpOworCisgICAgICAgICAgICAvLyBpbW11dGFibGUKKyAgICAgICAgICAgIHRleCA9
IHNldHVwRW1wdHlUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRydWUpOworICAgICAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhbGxvY2F0aW5nIGNvbXBy
ZXNzZWQgdGV4dHVyZSBhcnJheSB2aWEgdGV4U3RvcmFnZTNEIik7CisgICAgICAgICAgICBjaGVj
a0Vycm9yQ29sb3IoKTsKKyAgICAgICAgICAgIHVwbG9hZFN1YkRhdGEoZ2wuVEVYVFVSRV8yRF9B
UlJBWSk7CisgICAgICAgICAgICBjaGVja1NhbXBsaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpCisg
ICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisKKyAgICAgICAgICAgIC8vIG11dGFi
bGUgZW1wdHkKKyAgICAgICAgICAgIHRleCA9IHNldHVwRW1wdHlUZXh0dXJlKGdsLlRFWFRVUkVf
MkRfQVJSQVksIGZhbHNlKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiYWxsb2NhdGluZyBlbXB0eSBjb21wcmVzc2VkIHRleHR1cmUgYXJyYXkgdmlh
IGNvbXByZXNzZWRUZXhJbWFnZTNEIik7CisgICAgICAgICAgICBjaGVja0Vycm9yQ29sb3IoKTsK
KyAgICAgICAgICAgIHVwbG9hZFN1YkRhdGEoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgICAg
ICAgICBjaGVja1NhbXBsaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpCisgICAgICAgICAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleCk7CisKKyAgICAgICAgICAgIC8vIG11dGFibGUgZmlsbGVkCisgICAg
ICAgICAgICB0ZXggPSBzZXR1cEZpbGxlZFRleHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7Cisg
ICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFsbG9jYXRp
bmcgZmlsbGVkIGNvbXByZXNzZWQgdGV4dHVyZSBhcnJheSB2aWEgY29tcHJlc3NlZFRleEltYWdl
M0QiKTsKKyAgICAgICAgICAgIGNoZWNrU2FtcGxpbmcoZ2wuVEVYVFVSRV8yRF9BUlJBWSkKKyAg
ICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IDNEIHRleHR1cmUKKyAgICAgICAgaWYgKGNoZWNrM0RUYXJnZXQpIHsKKyAgICAgICAgICAgIHN3
aXRjaFByb2dyYW0oZ2wuVEVYVFVSRV8zRCk7CisgICAgICAgICAgICAvLyBpbW11dGFibGUKKyAg
ICAgICAgICAgIHRleCA9IHNldHVwRW1wdHlUZXh0dXJlKGdsLlRFWFRVUkVfM0QsIHRydWUpOwor
ICAgICAgICAgICAgaWYgKGhhc0hkcikgeworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBjb21wcmVzc2VkIHNsaWNlZCAzRCB0
ZXh0dXJlIHZpYSB0ZXhTdG9yYWdlM0QiKTsKKyAgICAgICAgICAgICAgICBjaGVja0Vycm9yQ29s
b3IoKTsKKyAgICAgICAgICAgICAgICB1cGxvYWRTdWJEYXRhKGdsLlRFWFRVUkVfM0QpOworICAg
ICAgICAgICAgICAgIGNoZWNrU2FtcGxpbmcoZ2wuVEVYVFVSRV8zRCkKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJhbGxvY2F0aW5nIGNvbXByZXNzZWQgc2xpY2VkIDNEIHRleHR1cmUgdmlh
IHRleFN0b3JhZ2UzRCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXgpOworCisgICAgICAgICAgICAvLyBtdXRhYmxlIGVtcHR5CisgICAgICAgICAgICB0
ZXggPSBzZXR1cEVtcHR5VGV4dHVyZShnbC5URVhUVVJFXzNELCBmYWxzZSk7CisgICAgICAgICAg
ICBpZiAoaGFzSGRyKSB7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhbGxvY2F0aW5nIGVtcHR5IGNvbXByZXNzZWQgc2xpY2VkIDNEIHRleHR1
cmUgdmlhIGNvbXByZXNzZWRUZXhJbWFnZTNEIik7CisgICAgICAgICAgICAgICAgY2hlY2tFcnJv
ckNvbG9yKCk7CisgICAgICAgICAgICAgICAgdXBsb2FkU3ViRGF0YShnbC5URVhUVVJFXzNEKTsK
KyAgICAgICAgICAgICAgICBjaGVja1NhbXBsaW5nKGdsLlRFWFRVUkVfM0QpCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiYWxsb2NhdGluZyBlbXB0eSBjb21wcmVzc2VkIHNsaWNlZCAzRCB0
ZXh0dXJlIHZpYSBjb21wcmVzc2VkVGV4SW1hZ2UzRCIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworCisgICAgICAgICAgICAvLyBtdXRhYmxlIGZp
bGxlZAorICAgICAgICAgICAgdGV4ID0gc2V0dXBGaWxsZWRUZXh0dXJlKGdsLlRFWFRVUkVfM0Qp
OworICAgICAgICAgICAgaWYgKGhhc0hkcikgeworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBmaWxsZWQgY29tcHJlc3NlZCBz
bGljZWQgM0QgdGV4dHVyZSB2aWEgY29tcHJlc3NlZFRleEltYWdlM0QiKTsKKyAgICAgICAgICAg
ICAgICBjaGVja1NhbXBsaW5nKGdsLlRFWFRVUkVfM0QpCisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAiYWxsb2NhdGluZyBmaWxsZWQgY29tcHJlc3NlZCBzbGljZWQgM0QgdGV4dHVyZSB2aWEg
Y29tcHJlc3NlZFRleEltYWdlM0QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDJE
IHRleHR1cmUKKyAgICAgICAgaWYgKGNoZWNrMkRUYXJnZXQpIHsKKyAgICAgICAgICAgIC8vIG11
dGFibGUgZW1wdHkKKyAgICAgICAgICAgIHRleCA9IHNldHVwRW1wdHlUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIGZhbHNlKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiYWxsb2NhdGluZyBlbXB0eSBjb21wcmVzc2VkIHRleHR1cmUgdmlhIGNvbXByZXNz
ZWRUZXhJbWFnZTJEIik7CisKKyAgICAgICAgICAgIC8vIFNraXAgZXJyb3IgY29sb3IgY2hlY2sg
b24gSERSIGFuZCBub24tc1JHQiBmb3JtYXRzIG9uIFdlYkdMIDEuMAorICAgICAgICAgICAgaWYg
KCFlcnJvckNvbG9yTWF5YmVOYU4oKSkgY2hlY2tFcnJvckNvbG9yKCk7CisgICAgICAgICAgICB1
cGxvYWRTdWJEYXRhKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAgY2hlY2tTYW1wbGluZyhn
bC5URVhUVVJFXzJEKQorICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworCisgICAg
ICAgICAgICAvLyBtdXRhYmxlIGZpbGxlZAorICAgICAgICAgICAgdGV4ID0gc2V0dXBGaWxsZWRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJhbGxvY2F0aW5nIGZpbGxlZCBjb21wcmVzc2VkIHRleHR1cmUgdmlh
IGNvbXByZXNzZWRUZXhJbWFnZTJEIik7CisgICAgICAgICAgICBjaGVja1NhbXBsaW5nKGdsLlRF
WFRVUkVfMkQpCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVSZWN0KAorICAgICAgICBhY3R1YWxXaWR0aCwg
YWN0dWFsSGVpZ2h0LCBhY3R1YWxDaGFubmVscywKKyAgICAgICAgZGF0YVdpZHRoLCBkYXRhSGVp
Z2h0LCBleHBlY3RlZERhdGEsCisgICAgICAgIHRlc3REYXRhLCB0ZXN0Rm9ybWF0LCB0b2xlcmFu
Y2UsIGZpbHRlcmluZ01vZGUpIHsKKworICAgIGlmKHR5cGVvZih0b2xlcmFuY2UpID09ICd1bmRl
ZmluZWQnKSB7IHRvbGVyYW5jZSA9IDU7IH0KKyAgICB2YXIgYWN0dWFsID0gbmV3IFVpbnQ4QXJy
YXkoYWN0dWFsV2lkdGggKiBhY3R1YWxIZWlnaHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAs
IDAsIGFjdHVhbFdpZHRoLCBhY3R1YWxIZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGFjdHVhbCk7CisgICAgZmxpcEltYWdlKGFjdHVhbCwgYWN0dWFsV2lkdGgsIGFjdHVhbEhlaWdo
dCk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ZGl2LmNsYXNzTmFtZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgICBjdHUuaW5zZXJ0Q2FwdGlvbmVkSW1n
KGRpdiwgImV4cGVjdGVkIiwgY3R1Lm1ha2VTY2FsZWRJbWFnZSgKKyAgICAgICAgICAgIGFjdHVh
bFdpZHRoLCBhY3R1YWxIZWlnaHQsIGRhdGFXaWR0aCwgZXhwZWN0ZWREYXRhLAorICAgICAgICAg
ICAgYWN0dWFsQ2hhbm5lbHMgPT0gNCkpOworICAgIGN0dS5pbnNlcnRDYXB0aW9uZWRJbWcoZGl2
LCAiYWN0dWFsIiwgY3R1Lm1ha2VTY2FsZWRJbWFnZSgKKyAgICAgICAgICAgIGFjdHVhbFdpZHRo
LCBhY3R1YWxIZWlnaHQsIGFjdHVhbFdpZHRoLCBhY3R1YWwsCisgICAgICAgICAgICBhY3R1YWxD
aGFubmVscyA9PSA0KSk7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2JyJykpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoZGl2KTsKKworICAgIHZhciBmYWlsZWQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciB5eSA9
IDA7IHl5IDwgYWN0dWFsSGVpZ2h0OyArK3l5KSB7CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsg
eHggPCBhY3R1YWxXaWR0aDsgKyt4eCkgeworICAgICAgICAgICAgdmFyIGFjdHVhbE9mZnNldCA9
ICh5eSAqIGFjdHVhbFdpZHRoICsgeHgpICogNDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZE9m
ZnNldCA9ICh5eSAqIGRhdGFXaWR0aCArIHh4KSAqIDQ7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWQgPSBbCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkRGF0YVtleHBlY3RlZE9mZnNldCAr
IDBdLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZERhdGFbZXhwZWN0ZWRPZmZzZXQgKyAx
XSwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWREYXRhW2V4cGVjdGVkT2Zmc2V0ICsgMl0s
CisgICAgICAgICAgICAgICAgICAgIChhY3R1YWxDaGFubmVscyA9PSAzID8gMjU1IDogZXhwZWN0
ZWREYXRhW2V4cGVjdGVkT2Zmc2V0ICsgM10pCisgICAgICAgICAgICBdOworICAgICAgICAgICAg
Zm9yICh2YXIgamogPSAwOyBqaiA8IDQ7ICsramopIHsKKyAgICAgICAgICAgICAgICBpZiAoTWF0
aC5hYnMoYWN0dWFsW2FjdHVhbE9mZnNldCArIGpqXSAtIGV4cGVjdGVkW2pqXSkgPiB0b2xlcmFu
Y2UpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHdhcyA9IGFjdHVhbFthY3R1YWxPZmZzZXQgKyAwXS50b1N0cmluZygpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IDQ7ICsraikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgd2FzICs9ICIsIiArIGFjdHVhbFthY3R1YWxPZmZzZXQgKyBqXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdhdCAo
JyArIHh4ICsgJywgJyArIHl5ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCArICcgd2FzICcgKyB3YXMpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZh
aWxlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ0ZXh0dXJlIHJlbmRlcmVkIGNvcnJlY3RseSB3
aXRoICIgKyBmaWx0ZXJpbmdNb2RlICsgIiBmaWx0ZXJpbmciKTsKKyAgICB9Cit9CisKKy8vIEJ1
aWxkcyBzZXZlcmFsIHRlc3RzIGZyb20gdHdvIGFycmF5cworLy8gZGF0YSBnaXZlcyBlYWNoIFVp
bnQ4QXJyYXkgZW5jb2RlZCBkYXRhIHRvIHVzZQorLy8gZm9ybWF0cyB0aGUgYXNzb2NpYXRlIGZv
cm1hdCB0byBkZWNvZGUgdGhlIGRhdGEKKy8vIHJhd3MgZ2l2ZXMgZWFjaCBkZWNvZGVkIFVpbnQ4
QXJyYXkgZGF0YSBmb3IgdGV4dHVyZSBjb21wYXJpc29uCisvLyBtb2RlICdMRFInLCAnTERSLXNS
R0InLCBvciAnSERSJworZnVuY3Rpb24gYnVpbGRUZXN0cyhkYXRhLCBmb3JtYXRzLCByYXdzLCBt
b2RlKSB7CisKKyAgICB2YXIgdGVzdHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRh
dGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHRlc3QgPSB7CisgICAgICAgICAgICB3aWR0
aDogMTYsCisgICAgICAgICAgICBoZWlnaHQ6IDE2LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQs
CisgICAgICAgICAgICBkYXRhOiBkYXRhW2ldLAorICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXRz
W2ldLAorICAgICAgICAgICAgcmF3OiByYXdzW2ldLAorICAgICAgICAgICAgbW9kZTogbW9kZQor
ICAgICAgICB9OworICAgICAgICB0ZXN0cy5wdXNoKHRlc3QpOworICAgIH0KKworICAgIHJldHVy
biB0ZXN0czsKK30KKworZnVuY3Rpb24gZXhwZWN0ZWRCeXRlTGVuZ3RoKHcsIGgsIGZvcm1hdCkg
eworCisgICAgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUiB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNHg0X0tIUikKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHcgKyAzKSAvIDQpICog
TWF0aC5mbG9vcigoaCArIDMpIC8gNCkgKiAxNjsKKyAgICBlbHNlIGlmIChmb3JtYXQgPT0gdmFs
aWRGb3JtYXRzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgfHwgZm9ybWF0ID09IHZhbGlk
Rm9ybWF0cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIpCisgICAgICAgIHJl
dHVybiBNYXRoLmZsb29yKCh3ICsgNCkgLyA1KSAqIE1hdGguZmxvb3IoKGggKyAzKSAvIDQpICog
MTY7CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JHQkFf
QVNUQ181eDVfS0hSIHx8IGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDVfS0hSKQorICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodyArIDQpIC8g
NSkgKiBNYXRoLmZsb29yKChoICsgNCkgLyA1KSAqIDE2OworICAgIGVsc2UgaWYgKGZvcm1hdCA9
PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiB8fCBmb3JtYXQgPT0g
dmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUikKKyAgICAg
ICAgcmV0dXJuIE1hdGguZmxvb3IoKHcgKyA1KSAvIDYpICogTWF0aC5mbG9vcigoaCArIDQpIC8g
NSkgKiAxNjsKKyAgICBlbHNlIGlmIChmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNTRURf
UkdCQV9BU1RDXzZ4Nl9LSFIgfHwgZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpCisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3ICsg
NSkgLyA2KSAqIE1hdGguZmxvb3IoKGggKyA1KSAvIDYpICogMTY7CisgICAgZWxzZSBpZiAoZm9y
bWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSIHx8IGZvcm1h
dCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSKQor
ICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodyArIDcpIC8gOCkgKiBNYXRoLmZsb29yKChoICsg
NCkgLyA1KSAqIDE2OworICAgIGVsc2UgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg2X0tIUiB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUikKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Io
KHcgKyA3KSAvIDgpICogTWF0aC5mbG9vcigoaCArIDUpIC8gNikgKiAxNjsKKyAgICBlbHNlIGlm
IChmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIgfHwg
Zm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9L
SFIpCisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3ICsgNykgLyA4KSAqIE1hdGguZmxvb3Io
KGggKyA3KSAvIDgpICogMTY7CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUiB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpCisgICAgICAgIHJldHVybiBNYXRo
LmZsb29yKCh3ICsgOSkgLyAxMCkgKiBNYXRoLmZsb29yKChoICsgNCkgLyA1KSAqIDE2OworICAg
IGVsc2UgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4
Nl9LSFIgfHwgZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDZfS0hSKQorICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodyArIDkpIC8gMTApICog
TWF0aC5mbG9vcigoaCArIDUpIC8gNikgKiAxNjsKKyAgICBlbHNlIGlmIChmb3JtYXQgPT0gdmFs
aWRGb3JtYXRzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSIHx8IGZvcm1hdCA9PSB2YWxp
ZEZvcm1hdHMuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUikKKyAgICAgICAg
cmV0dXJuIE1hdGguZmxvb3IoKHcgKyA5KSAvIDEwKSAqIE1hdGguZmxvb3IoKGggKyA3KSAvIDgp
ICogMTY7CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHgxMF9LSFIgfHwgZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUikKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHcg
KyA5KSAvIDEwKSAqIE1hdGguZmxvb3IoKGggKyA5KSAvIDEwKSAqIDE2OworICAgIGVsc2UgaWYg
KGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSIHx8
IGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngx
MF9LSFIpCisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3ICsgMTEpIC8gMTIpICogTWF0aC5m
bG9vcigoaCArIDkpIC8gMTApICogMTY7CisKKyAgICByZXR1cm4gTWF0aC5mbG9vcigodyArIDEx
KSAvIDEyKSAqIE1hdGguZmxvb3IoKGggKyAxMSkgLyAxMikgKiAxNjsKK30KKworZnVuY3Rpb24g
Z2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgeworICAgIHZhciByZSA9IC8uKl8oXGQrKXgoXGQr
KV9LSFIvOworICAgIGZvciAobmFtZSBpbiB2YWxpZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKHZh
bGlkRm9ybWF0c1tuYW1lXSA9PT0gZm9ybWF0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBu
YW1lLm1hdGNoKHJlKTsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgIHdpZHRo
OiBwYXJzZUludChtYXRjaFsxXSwgMTApLAorICAgICAgICAgICAgICBoZWlnaHQ6IHBhcnNlSW50
KG1hdGNoWzJdLCAxMCkKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICB0
ZXN0RmFpbGVkKCdDb3VsZCBub3QgZmluZCBibG9jayBkaW1lbnNpb25zIGZvciBmb3JtYXQgJyAr
IGN0dS5mb3JtYXRUb1N0cmluZyhleHQsIGZvcm1hdCkpOworICAgIHJldHVybiB7d2lkdGg6IDQs
IGhlaWdodDogNH07Cit9CisKKy8vIFN3YXBzIHR3byBjZWxscyBpbiBhbiBhcnJheWJ1ZmZlci4K
Ky8vIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiB0aGUgaW1hZ2UgZmxpcHBpbmcgZnVuY3Rpb24K
K2Z1bmN0aW9uIHN3YXBDZWxsKGFycmF5LCBpLCBqKSB7CisgICAgdmFyIGEgPSBhcnJheVtpXTsK
KyAgICBhcnJheVtpXSA9IGFycmF5W2pdOworICAgIGFycmF5W2pdID0gYTsKK30KKworZnVuY3Rp
b24gZmxpcEltYWdlKGltZ0J1ZmZlciwgdywgaCkgeworICAgIHZhciBoYWxmSGVpZ2h0ID0gaCAv
IDI7CisKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IGhhbGZIZWlnaHQ7IGorKykgeworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHc7IGkrKykgeworICAgICAgICAgICAgdmFyIGJlZ2luQnl0
ZSA9IChqICogdyArIGkpICogNDsKKyAgICAgICAgICAgIHZhciBlbmRCeXRlID0gKChoIC0gaiAt
IDEpICogdyArIGkpICogNDsKKworICAgICAgICAgICAgc3dhcENlbGwoaW1nQnVmZmVyLCBiZWdp
bkJ5dGUsIGVuZEJ5dGUpOworICAgICAgICAgICAgc3dhcENlbGwoaW1nQnVmZmVyLCBiZWdpbkJ5
dGUgKyAxLCBlbmRCeXRlICsgMSk7CisgICAgICAgICAgICBzd2FwQ2VsbChpbWdCdWZmZXIsIGJl
Z2luQnl0ZSArIDIsIGVuZEJ5dGUgKyAyKTsKKyAgICAgICAgICAgIHN3YXBDZWxsKGltZ0J1ZmZl
ciwgYmVnaW5CeXRlICsgMywgZW5kQnl0ZSArIDMpOworICAgICAgICB9CisgICAgfQorfQorCitk
ZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJl
LWV0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtZXRjLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGE4NTIzOWZmOWQ1YTIwNjg3NTA2Yjg2NmNkMWIyMWEzYmE0ZjBkZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLWV0Yy5o
dG1sCkBAIC0wLDAgKzEsMTI2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxMSU5LIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXBy
ZXNzZWQtdGV4dHVyZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1
bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMgZXh0ZW5zaW9u
LCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHZhbGlkRm9ybWF0
cyA9IHsKKyAgQ09NUFJFU1NFRF9SMTFfRUFDICAgICAgICAgICAgICAgICAgICAgICAgOiAweDky
NzAsCisgIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgICAgICAgICAgICAgICAgIDogMHg5Mjcx
LAorICBDT01QUkVTU0VEX1JHMTFfRUFDICAgICAgICAgICAgICAgICAgICAgICA6IDB4OTI3MiwK
KyAgQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgICAgICAgICAgICAgICAgOiAweDkyNzMsCisg
IENPTVBSRVNTRURfUkdCOF9FVEMyICAgICAgICAgICAgICAgICAgICAgIDogMHg5Mjc0LAorICBD
T01QUkVTU0VEX1NSR0I4X0VUQzIgICAgICAgICAgICAgICAgICAgICA6IDB4OTI3NSwKKyAgQ09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiAgOiAweDkyNzYsCisgIENPTVBS
RVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIDogMHg5Mjc3LAorICBDT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDICAgICAgICAgICAgICAgICA6IDB4OTI3OCwKKyAgQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUMgICAgICAgICAgOiAweDkyNzkKK307CisKK2Z1bmN0aW9u
IGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgdmFyIGJsb2Nr
U2l6ZUluQnl0ZXMgPSA4OworCisgIHZhciBsYXJnZXJCbG9ja0Zvcm1hdHMgPSBbCisgICAgdmFs
aWRGb3JtYXRzLkNPTVBSRVNTRURfUkcxMV9FQUMsCisgICAgdmFsaWRGb3JtYXRzLkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDLAorICAgIHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLAorICAgIHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VB
Q107CisKKyAgaWYgKGxhcmdlckJsb2NrRm9ybWF0cy5pbmRleE9mKGZvcm1hdCkgPj0gMCkgewor
ICAgIGJsb2NrU2l6ZUluQnl0ZXMgPSAxNjsKKyAgfQorCisgIHJldHVybiBNYXRoLmZsb29yKCh3
aWR0aCArIDMpIC8gNCkgKiBNYXRoLmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICogYmxvY2tTaXpl
SW5CeXRlczsKK30KKworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgeworICBy
ZXR1cm4ge3dpZHRoOiA0LCBoZWlnaHQ6IDR9OworfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgY3R1ID0gQ29tcHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBjb250ZXh0VmVyc2lv
biA9IHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgpOwordmFyIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGM7CisKK3ZhciBm
b3JtYXRzID0gbnVsbDsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgfSBlbHNlIHsKKyAgICB0
ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgICAgY3R1LnRlc3RDb21wcmVzc2VkRm9y
bWF0c1VuYXZhaWxhYmxlV2hlbkV4dGVuc2lvbkRpc2FibGVkKGdsLCB2YWxpZEZvcm1hdHMsIGV4
cGVjdGVkQnl0ZUxlbmd0aCwgNCk7CisKKyAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRj
ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisKKyAg
ICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIldFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9ldGMiLCBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjICE9PSBudWxsKTsKKworICAg
IHZhciBpc1Bvc2l0aXZlID0gV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyAhPT0gbnVsbDsK
KworICAgIGlmIChpc1Bvc2l0aXZlKSB7CisgICAgICAvLyBUZXN0IHRoYXQgZW51bSB2YWx1ZXMg
YXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4gc3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRoZSBleHRl
bnNpb24gb2JqZWN0LgorICAgICAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZChnbCwg
dmFsaWRGb3JtYXRzKTsKKyAgICAgIGN0dS50ZXN0Q29ycmVjdEVudW1WYWx1ZXNJbkV4dChXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjLCB2YWxpZEZvcm1hdHMpOworICAgICAgLy8gVGVzdCB0
aGF0IHRleHR1cmUgdXBsb2FkIGJ1ZmZlciBzaXplIGlzIHZhbGlkYXRlZCBjb3JyZWN0bHkuCisg
ICAgICBjdHUudGVzdEZvcm1hdFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZShnbCwgdmFsaWRGb3Jt
YXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucyk7CisKKyAgICAgIHZh
ciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworCisgICAgICBmb3IgKHZhciBuYW1lIGluIHZhbGlkRm9ybWF0cykgewor
ICAgICAgICBpZiAodmFsaWRGb3JtYXRzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAg
ICAgdmFyIGZvcm1hdCA9IHZhbGlkRm9ybWF0c1tuYW1lXTsKKyAgICAgICAgICB3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmNvbXByZXNzZWRUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsICIgKyBmb3JtYXQgKyAiLCA0LCA0LCAwLCBuZXcgVWludDhBcnJh
eSgiICsgZXhwZWN0ZWRCeXRlTGVuZ3RoKDQsIDQsIGZvcm1hdCkgKyAiKSkiKTsKKyAgICAgICAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDQsIDQsICIgKyBmb3JtYXQg
KyAiLCBuZXcgVWludDhBcnJheSgiICsgZXhwZWN0ZWRCeXRlTGVuZ3RoKDQsIDQsIGZvcm1hdCkg
KyAiKSkiKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHZhciB0ZXgyID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDIp
OworCisgICAgZGVidWcoIiIpOworICAgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAg
ICB2YXIgZXhwZWN0ZWRFcnJvciA9IGlzUG9zaXRpdmUgPyBnbC5JTlZBTElEX09QRVJBVElPTjog
W2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dOworICAgICAgLy8gYG51bGxg
IGNvZXJjZXMgaW50byBgMGAgZm9yIHRoZSBQQk8gZW50cnlwb2ludCwgeWllbGRpbmcgSU5WQUxJ
RF9PUCBkdWUgdG8gbm8gUEJPIGJvdW5kLgorICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZXhwZWN0ZWRFcnJvciwgImdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1IxMV9FQUMsIDQsIDQsIDAsIDAsIG51bGwp
Iik7CisgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBleHBlY3RlZEVycm9yLCAi
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwg
dmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfUjExX0VBQywgMCwgbnVsbCkiKTsKKyAgICAgIHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGV4cGVjdGVkRXJyb3IsICJnbC5jb21wcmVzc2VkVGV4
SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9S
MTFfRUFDLCA0LCA0LCA0LCAwLCAwLCBudWxsKSIpOworICAgICAgd3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZXhwZWN0ZWRFcnJvciwgImdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfMkRfQVJSQVksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIHZhbGlkRm9ybWF0cy5DT01Q
UkVTU0VEX1IxMV9FQUMsIDAsIG51bGwpIik7CisgICAgfSBlbHNlIHsKKyAgICAgIHNob3VsZFRo
cm93KCJnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB2YWxpZEZvcm1h
dHMuQ09NUFJFU1NFRF9SMTFfRUFDLCA0LCA0LCAwLCBudWxsKSIpOworICAgICAgc2hvdWxkVGhy
b3coImdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAs
IDAsIHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1IxMV9FQUMsIG51bGwpIik7CisgICAgICBzaG91
bGRUaHJvdygiZ2wuY29tcHJlc3NlZFRleEltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwg
dmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfUjExX0VBQywgNCwgNCwgNCwgMCwgbnVsbCkiKTsKKyAg
ICAgIHNob3VsZFRocm93KCJnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJE
X0FSUkFZLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SMTFf
RUFDLCBudWxsKSIpOworICAgIH0KKyAgfQorfQorCitydW5UZXN0KCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLWV0YzEuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
d2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLWV0YzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWE2ZWQwNjQy
MzkwNWU0MDM3NmFhMTYwZmNkOTdkZmE5M2UyMzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtZXRjMS5odG1sCkBAIC0wLDAgKzEsNzQgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxMSU5LIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxl
LiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB2YWxpZEZvcm1hdHMgPSB7CisgIENPTVBSRVNTRURf
UkdCX0VUQzFfV0VCR0w6IDB4OEQ2NCwKK307CisKK2Z1bmN0aW9uIGV4cGVjdGVkQnl0ZUxlbmd0
aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgcmV0dXJuIE1hdGguZmxvb3IoKHdpZHRoICsg
MykgLyA0KSAqIE1hdGguZmxvb3IoKGhlaWdodCArIDMpIC8gNCkgKiA4OworfQorCitmdW5jdGlv
biBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KSB7CisgIHJldHVybiB7d2lkdGg6IDQsIGhlaWdo
dDogNH07Cit9CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjdHUgPSBDb21wcmVz
c2VkVGV4dHVyZVV0aWxzOwordmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENv
bnRleHRWZXJzaW9uKCk7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzE7CisKK3ZhciBmb3JtYXRzID0gbnVsbDsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4
aXN0cyIpOworCisgICAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c1VuYXZhaWxhYmxlV2hlbkV4
dGVuc2lvbkRpc2FibGVkKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgNCk7
CisKKyAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSA9IGdsLmdldEV4dGVuc2lvbigi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiKTsKKworICAgIHd0dS5ydW5FeHRlbnNpb25T
dXBwb3J0ZWRUZXN0KGdsLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfZXRjMSAhPT0gbnVsbCk7CisKKyAgICBpZiAoV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2V0YzEgIT09IG51bGwpIHsKKyAgICAgIC8vIFRlc3QgdGhhdCBlbnVtIHZh
bHVlcyBhcmUgbGlzdGVkIGNvcnJlY3RseSBpbiBzdXBwb3J0ZWQgZm9ybWF0cyBhbmQgaW4gdGhl
IGV4dGVuc2lvbiBvYmplY3QuCisgICAgICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVk
KGdsLCB2YWxpZEZvcm1hdHMpOworICAgICAgY3R1LnRlc3RDb3JyZWN0RW51bVZhbHVlc0luRXh0
KFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxLCB2YWxpZEZvcm1hdHMpOworICAgICAgLy8g
VGVzdCB0aGF0IHRleHR1cmUgdXBsb2FkIGJ1ZmZlciBzaXplIGlzIHZhbGlkYXRlZCBjb3JyZWN0
bHkuCisgICAgICBjdHUudGVzdEZvcm1hdFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZShnbCwgdmFs
aWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucyk7CisgICAg
fQorICB9Cit9CisKK3J1blRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21w
cmVzc2VkLXRleHR1cmUtcHZydGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10
ZXh0dXJlLXB2cnRjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY1ZjQ0YTljZGFjMTBkZjEzZGIyMzBlYTEy
NzQ3NjRhMWQ2MzIwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJl
c3NlZC10ZXh0dXJlLXB2cnRjLmh0bWwKQEAgLTAsMCArMSwzNzEgQEAKK++7vzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3B2cnRjIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxzdHlsZT4K
K2ltZyB7CisgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgbWFyZ2luLXJpZ2h0OiAxZW07Cit9
CisudGVzdGltYWdlcyB7Cit9CisKKy50ZXN0aW1hZ2VzIGJyIHsKKyAgY2xlYXI6IGJvdGg7Cit9
CisKKy50ZXN0aW1hZ2VzID4gZGl2IHsKKyAgZmxvYXQ6IGxlZnQ7CisgIG1hcmdpbjogMWVtOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBzdHlsZT0id2lkdGg6
IDhweDsgaGVpZ2h0OiA4cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMg
dGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyBl
eHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOworCit2YXIgcHZy
dGNfNHg0XzJicHAgPSBuZXcgVWludDhBcnJheShbCisgIDB4NzcsIDB4MjIsIDB4NzcsIDB4MjIs
IDB4YmIsIDB4MmIsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
CitdKTsKKwordmFyIHB2cnRjXzR4NF80YnBwID0gbmV3IFVpbnQ4QXJyYXkoWworICAweDFiLCAw
eDFiLCAweDFiLCAweDFiLCAweGJhLCAweDJiLCAweDAwLCAweDgwLCAweDFiLCAweDFiLCAweDFi
LCAweDFiLCAweGJhLCAweDJiLCAweDAwLCAweDgwLAorICAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLAorXSk7CisKK3ZhciBwdnJ0Y180eDRfcmdiYV9kZWNvZGVkID0gbmV3
IFVpbnQ4QXJyYXkoWworICAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweDQ2LCAweDQ2LCAweDQ2
LCAweGI4LCAweDc2LCAweDc2LCAweDcxLCAweDhhLCAweGJkLCAweGJkLCAweGJhLCAweDQ0LAor
ICAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweDQ2LCAweDQ2LCAweDQzLCAweGI4LCAweDc2LCAw
eDc2LCAweDcxLCAweDhhLCAweGJkLCAweGJkLCAweGI1LCAweDQ0LAorICAweDAwLCAweDAwLCAw
eDAwLCAweGZmLCAweDQ2LCAweDQ2LCAweDQzLCAweGI4LCAweDc2LCAweDc2LCAweDcxLCAweDhh
LCAweGJkLCAweGJkLCAweGI1LCAweDQ0LAorICAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweDQ2
LCAweDQ2LCAweDQ2LCAweGI4LCAweDc2LCAweDc2LCAweDcxLCAweDhhLCAweGJkLCAweGJkLCAw
eGI3LCAweDQ0LAorXSk7CisKK3ZhciBwdnJ0Y180eDRfcmdiX2RlY29kZWQgPSBuZXcgVWludDhB
cnJheShbCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4NDYsIDB4NDYsIDB4NDYsIDB4ZmYs
IDB4NzYsIDB4NzYsIDB4NzEsIDB4ZmYsIDB4YmQsIDB4YmQsIDB4YmEsIDB4ZmYsCisgIDB4MDAs
IDB4MDAsIDB4MDAsIDB4ZmYsIDB4NDYsIDB4NDYsIDB4NDMsIDB4ZmYsIDB4NzYsIDB4NzYsIDB4
NzEsIDB4ZmYsIDB4YmQsIDB4YmQsIDB4YjUsIDB4ZmYsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4
ZmYsIDB4NDYsIDB4NDYsIDB4NDMsIDB4ZmYsIDB4NzYsIDB4NzYsIDB4NzEsIDB4ZmYsIDB4YmQs
IDB4YmQsIDB4YjUsIDB4ZmYsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4NDYsIDB4NDYs
IDB4NDYsIDB4ZmYsIDB4NzYsIDB4NzYsIDB4NzEsIDB4ZmYsIDB4YmQsIDB4YmQsIDB4YjcsIDB4
ZmYsCitdKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNvbnRleHRWZXJzaW9u
ID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRl
eHR1cmVkUXVhZChnbCk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOwordmFyIHZh
bGlkRm9ybWF0cyA9IHsKKyAgICBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICAg
OiAweDhDMDAsCisgICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyAgICAgIDogMHg4
QzAxLAorICAgIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HICAgICA6IDB4OEMwMiwK
KyAgICBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyAgICAgOiAweDhDMDMsCit9Owor
dmFyIG5hbWU7Cit2YXIgc3VwcG9ydGVkRm9ybWF0czsKKworaWYgKCFnbCkgeworICAgIHRlc3RG
YWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVz
dFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFJ1biB0ZXN0cyB3aXRo
IGV4dGVuc2lvbiBkaXNhYmxlZAorICAgIHJ1blRlc3REaXNhYmxlZCgpOworCisgICAgLy8gUXVl
cnkgdGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2Vz
cyBpdAorICAgIGV4dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOworICAgIGlmICghZXh0KSB7CisgICAgICAg
IHRlc3RQYXNzZWQoIk5vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyBzdXBwb3J0IC0t
IHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIGV4dGVuc2lvbiIpOworCisgICAgICAgIHJ1blN1cHBv
cnRlZFRlc3QodHJ1ZSk7CisgICAgICAgIHJ1blRlc3RFeHRlbnNpb24oKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBu
YW1lID0gd3R1LmdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7CisgICAgaWYgKG5hbWUgIT09IHVuZGVmaW5l
ZCkgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdFBh
c3NlZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIGxpc3RlZCBhcyBzdXBwb3J0ZWQg
YW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyBsaXN0ZWQgYXMg
c3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIG5vdCBsaXN0ZWQgYXMgc3VwcG9y
dGVkIGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMgbm90IGxp
c3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdh
bCIpOworICAgICAgICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uIHJ1blRlc3REaXNhYmxlZCgp
IHsKKyAgICBkZWJ1ZygiVGVzdGluZyBiaW5kaW5nIGVudW0gd2l0aCBleHRlbnNpb24gZGlzYWJs
ZWQiKTsKKworICAgIHN1cHBvcnRlZEZvcm1hdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFMpOworICAgIHNob3VsZEJlKCJzdXBwb3J0ZWRGb3JtYXRzIiwg
IltdIik7Cit9CisKK2Z1bmN0aW9uIGZvcm1hdEV4aXN0cyhmb3JtYXQsIHN1cHBvcnRlZEZvcm1h
dHMpIHsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGg7
ICsraWkpIHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBzdXBwb3J0ZWRGb3JtYXRzW2lpXSkgewor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgZm9ybWF0VG9TdHJp
bmcoZm9ybWF0KSArICIgaXMgZXhpc3RzIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisgICAgdGVzdEZhaWxlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgZm9ybWF0VG9T
dHJpbmcoZm9ybWF0KSArICIgZG9lcyBub3QgZXhpc3QiKTsKK30KKworZnVuY3Rpb24gZm9ybWF0
VG9TdHJpbmcoZm9ybWF0KSB7CisgICAgZm9yICh2YXIgcCBpbiBleHQpIHsKKyAgICAgICAgaWYg
KGV4dFtwXSA9PSBmb3JtYXQpIHsKKyAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiAiMHgiICsgZm9ybWF0LnRvU3RyaW5nKDE2KTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdEV4dGVuc2lvbigpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBXRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKKworICAgIC8vIGNoZWNrIHRoYXQgYWxsIGZvcm1hdCBlbnVt
cyBleGlzdC4KKyAgICBmb3IgKG5hbWUgaW4gdmFsaWRGb3JtYXRzKSB7CisgICAgICAgIHZhciBl
eHBlY3RlZCA9ICIweCIgKyB2YWxpZEZvcm1hdHNbbmFtZV0udG9TdHJpbmcoMTYpOworICAgICAg
ICB2YXIgYWN0dWFsID0gImV4dFsnIiArIG5hbWUgKyAiJ10iOworICAgICAgICBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKTsKKyAgICB9CisKKyAgICBzdXBwb3J0ZWRGb3JtYXRzID0gZ2wuZ2V0
UGFyYW1ldGVyKGdsLkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKTsKKyAgICAvLyBUaGVyZSBz
aG91bGQgYmUgZXhhY3RseSA0IGZvcm1hdHMgZm9yIGJvdGggV2ViR0wgMS4wIGFuZCBXZWJHTCAy
LjAuCisgICAgc2hvdWxkQmUoInN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoIiwgIjQiKTsKKworICAg
IC8vIGNoZWNrIHRoYXQgYWxsIDQgZm9ybWF0cyBleGlzdAorICAgIGZvciAodmFyIG5hbWUgaW4g
dmFsaWRGb3JtYXRzLmxlbmd0aCkgeworICAgICAgICBmb3JtYXRFeGlzdHModmFsaWRGb3JtYXRz
W25hbWVdLCBzdXBwb3J0ZWRGb3JtYXRzKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IGVhY2ggZm9y
bWF0CisgICAgdGVzdFBWUlRDX1JHQkFfMkJQUCgpOworICAgIHRlc3RQVlJUQ19SR0JfMkJQUCgp
OworICAgIHRlc3RQVlJUQ19SR0JBXzRCUFAoKTsKKyAgICB0ZXN0UFZSVENfUkdCXzRCUFAoKTsK
K30KKworZnVuY3Rpb24gdGVzdFBWUlRDX1JHQkFfMkJQUCgpIHsKKyAgICB2YXIgdGVzdHMgPSBb
CisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAg
ICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogcHZydGNfNHg0XzJicHAsCisgICAg
ICAgICAgICByYXc6IHB2cnRjXzR4NF9yZ2JhX2RlY29kZWQsCisgICAgICAgICAgICBmb3JtYXQ6
IGV4dC5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRworICAgICAgICB9CisgICAgXTsK
KyAgICB0ZXN0UFZSVENUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQVlJUQ19S
R0JfMkJQUCgpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAg
ICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAg
ICAgZGF0YTogcHZydGNfNHg0XzJicHAsCisgICAgICAgICAgICByYXc6IHB2cnRjXzR4NF9yZ2Jf
ZGVjb2RlZCwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCX1BWUlRDXzJC
UFBWMV9JTUcKKyAgICAgICAgfQorICAgIF07CisgICAgdGVzdFBWUlRDVGV4dHVyZXModGVzdHMp
OworfQorCitmdW5jdGlvbiB0ZXN0UFZSVENfUkdCQV80QlBQKCkgeworICAgIHZhciB0ZXN0cyA9
IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAg
ICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBwdnJ0Y180eDRfNGJwcCwKKyAg
ICAgICAgICAgIHJhdzogcHZydGNfNHg0X3JnYmFfZGVjb2RlZCwKKyAgICAgICAgICAgIGZvcm1h
dDogZXh0LkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HCisgICAgICAgIH0KKyAgICBd
OworICAgIHRlc3RQVlJUQ1RleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdFBWUlRD
X1JHQl80QlBQKCkgeworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0LAor
ICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAg
ICAgICBkYXRhOiBwdnJ0Y180eDRfNGJwcCwKKyAgICAgICAgICAgIHJhdzogcHZydGNfNHg0X3Jn
Yl9kZWNvZGVkLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JfUFZSVENf
NEJQUFYxX0lNRworICAgICAgICB9CisgICAgXTsKKyAgICB0ZXN0UFZSVENUZXh0dXJlcyh0ZXN0
cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQVlJUQ1RleHR1cmVzKHRlc3RzKSB7CisgICAgZGVidWco
Ijxoci8+Iik7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0aDsgKytpaSkg
eworICAgICAgICB0ZXN0UFZSVENUZXh0dXJlKHRlc3RzW2lpXSk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0UFZSVENUZXh0dXJlKHRlc3QpIHsKKyAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFy
cmF5KHRlc3QuZGF0YSk7CisgICAgdmFyIHdpZHRoID0gdGVzdC53aWR0aDsKKyAgICB2YXIgaGVp
Z2h0ID0gdGVzdC5oZWlnaHQ7CisgICAgdmFyIGZvcm1hdCA9IHRlc3QuZm9ybWF0OworICAgIHZh
ciB1bmNvbXByZXNzZWREYXRhID0gdGVzdC5yYXc7CisKKyAgICBjYW52YXMud2lkdGggPSB3aWR0
aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGdsLnZpZXdwb3J0KDAsIDAsIHdp
ZHRoLCBoZWlnaHQpOworICAgIGRlYnVnKCJ0ZXN0aW5nICIgKyBmb3JtYXRUb1N0cmluZyhmb3Jt
YXQpICsgIiAiICsgd2lkdGggKyAieCIgKyBoZWlnaHQpOworCisgICAgdmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wu
TkVBUkVTVCk7CisgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1cmUiKTsKKyAgICBn
bC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRyeWluZyB0byBnZW5lcmF0ZSBtaXBtYXBzIGZy
b20gY29tcHJlc3NlZCB0ZXh0dXJlIik7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
KTsKKyAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0LmNoYW5uZWxzLCB3aWR0aCwg
aGVpZ2h0LCB1bmNvbXByZXNzZWREYXRhLCBkYXRhLCBmb3JtYXQsIHVuZGVmaW5lZCwgIk5FQVJF
U1QiKTsKKyAgICAvLyBUZXN0IGFnYWluIHdpdGggbGluZWFyIGZpbHRlcmluZy4KKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElO
RUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFH
X0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHdpZHRoLCBoZWln
aHQsIHVuY29tcHJlc3NlZERhdGEsIGRhdGEsIGZvcm1hdCwgdW5kZWZpbmVkLCAiTElORUFSIik7
CisKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIDEsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUsICJub24gMCBib3JkZXIiKTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGggLSAxLCBoZWlnaHQsIDAsIGRh
dGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
aW52YWxpZCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCAtIDIsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVu
c2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQgLSAxLCAwLCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAg
IGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgs
IGhlaWdodCAtIDIsIDAsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisKKyAgICBnbC5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQgYWxsb3dlZCBmb3IgcmVsb2FkaW5nIG9mIGNvbXBsZXRl
IHRleHR1cmVzIik7CisKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAwLCB3aWR0aCAtIDIsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEIG5vdCBhbGxvd2VkIGZvciBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyIpOworICAg
IGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRo
LCBoZWlnaHQgLSAyLCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY29tcHJlc3NlZFRleFN1YkltYWdlMkQgbm90IGFsbG93
ZWQgZm9yIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGVzIik7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMiwgMCwgd2lkdGggLSAyLCBoZWlnaHQsIGZvcm1h
dCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCBub3QgYWxsb3dlZCBmb3IgcGFydGlhbCB0ZXh0
dXJlIHVwZGF0ZXMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAyLCB3aWR0aCwgaGVpZ2h0IC0gMiwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEIG5vdCBhbGxvd2VkIGZvciBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyIpOworfQor
CitmdW5jdGlvbiBpbnNlcnRJbWcoZWxlbWVudCwgY2FwdGlvbiwgaW1nKSB7CisgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBlbmRDaGlsZChp
bWcpOworICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNhcHRpb24pKTsKKyAg
ICBkaXYuYXBwZW5kQ2hpbGQobGFiZWwpOworICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTsK
K30KKworZnVuY3Rpb24gbWFrZUltYWdlKGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBkYXRhV2lk
dGgsIGRhdGEsIGFscGhhKSB7CisgICAgdmFyIHNjYWxlID0gODsKKyAgICB2YXIgYyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSBpbWFnZVdpZHRoICog
c2NhbGU7CisgICAgYy5oZWlnaHQgPSBpbWFnZUhlaWdodCAqIHNjYWxlOworICAgIHZhciBjdHgg
PSBjLmdldENvbnRleHQoIjJkIik7CisgICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IGltYWdlSGVp
Z2h0OyArK3l5KSB7CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBpbWFnZVdpZHRoOyAr
K3h4KSB7CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gKHl5ICogZGF0YVdpZHRoICsgeHgpICog
NDsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgiICsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YVtvZmZzZXQgKyAwXSArICIsIiArCisgICAgICAgICAgICAgICAgICAgIGRhdGFb
b2Zmc2V0ICsgMV0gKyAiLCIgKworICAgICAgICAgICAgICAgICAgICBkYXRhW29mZnNldCArIDJd
ICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgKGFscGhhID8gZGF0YVtvZmZzZXQgKyAzXSAv
IDI1NSA6IDEpICsgIikiOworICAgICAgICAgICAgY3R4LmZpbGxSZWN0KHh4ICogc2NhbGUsIHl5
ICogc2NhbGUsIHNjYWxlLCBzY2FsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHd0
dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGMpOworfQorZnVuY3Rpb24gY29tcGFyZVJlY3QoCisgICAg
ICAgIGFjdHVhbFdpZHRoLCBhY3R1YWxIZWlnaHQsIGFjdHVhbENoYW5uZWxzLAorICAgICAgICBk
YXRhV2lkdGgsIGRhdGFIZWlnaHQsIGV4cGVjdGVkRGF0YSwKKyAgICAgICAgdGVzdERhdGEsIHRl
c3RGb3JtYXQsIHRvbGVyYW5jZSwgZmlsdGVyaW5nTW9kZSkgeworICAgIGlmKHR5cGVvZih0b2xl
cmFuY2UpID09ICd1bmRlZmluZWQnKSB7IHRvbGVyYW5jZSA9IDU7IH0KKyAgICB2YXIgYWN0dWFs
ID0gbmV3IFVpbnQ4QXJyYXkoYWN0dWFsV2lkdGggKiBhY3R1YWxIZWlnaHQgKiA0KTsKKyAgICBn
bC5yZWFkUGl4ZWxzKAorICAgICAgICAgICAgMCwgMCwgYWN0dWFsV2lkdGgsIGFjdHVhbEhlaWdo
dCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYWN0dWFsKTsKKworICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuY2xhc3NOYW1lID0gInRlc3Rp
bWFnZXMiOworICAgIGluc2VydEltZyhkaXYsICJleHBlY3RlZCIsIG1ha2VJbWFnZSgKKyAgICAg
ICAgICAgIGFjdHVhbFdpZHRoLCBhY3R1YWxIZWlnaHQsIGRhdGFXaWR0aCwgZXhwZWN0ZWREYXRh
LAorICAgICAgICAgICAgYWN0dWFsQ2hhbm5lbHMgPT0gNCkpOworICAgIGluc2VydEltZyhkaXYs
ICJhY3R1YWwiLCBtYWtlSW1hZ2UoCisgICAgICAgICAgICBhY3R1YWxXaWR0aCwgYWN0dWFsSGVp
Z2h0LCBhY3R1YWxXaWR0aCwgYWN0dWFsLAorICAgICAgICAgICAgYWN0dWFsQ2hhbm5lbHMgPT0g
NCkpOworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7
CisKKyAgICB2YXIgZmFpbGVkID0gZmFsc2U7CisgICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IGFj
dHVhbEhlaWdodDsgKyt5eSkgeworICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgYWN0dWFs
V2lkdGg7ICsreHgpIHsKKyAgICAgICAgICAgIHZhciBhY3R1YWxPZmZzZXQgPSAoeXkgKiBhY3R1
YWxXaWR0aCArIHh4KSAqIDQ7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSAoeXkg
KiBkYXRhV2lkdGggKyB4eCkgKiA0OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gWworICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZERhdGFbZXhwZWN0ZWRPZmZzZXQgKyAwXSwKKyAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWREYXRhW2V4cGVjdGVkT2Zmc2V0ICsgMV0sCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkRGF0YVtleHBlY3RlZE9mZnNldCArIDJdLAorICAgICAgICAg
ICAgICAgICAgICAoYWN0dWFsQ2hhbm5lbHMgPT0gMyA/IDI1NSA6IGV4cGVjdGVkRGF0YVtleHBl
Y3RlZE9mZnNldCArIDNdKQorICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIGZvciAodmFyIGpq
ID0gMDsgamogPCA0OyArK2pqKSB7CisgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFjdHVh
bFthY3R1YWxPZmZzZXQgKyBqal0gLSBleHBlY3RlZFtqal0pID4gdG9sZXJhbmNlKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHZhciB3
YXMgPSBhY3R1YWxbYWN0dWFsT2Zmc2V0ICsgMF0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCA0OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdhcyArPSAiLCIgKyBhY3R1YWxbYWN0dWFsT2Zmc2V0ICsgal07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnYXQgKCcgKyB4eCArICcs
ICcgKyB5eSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpIGV4
cGVjdGVkOiAnICsgZXhwZWN0ZWQgKyAnIHdhcyAnICsgd2FzKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmYWlsZWQpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgidGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkgd2l0aCAiICsgZmls
dGVyaW5nTW9kZSArICIgZmlsdGVyaW5nIik7CisgICAgfQorfQorCitkZWJ1ZygiIik7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMtc3JnYi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy1zcmdiLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODAyMjE1MDhlYmFlZjAxZGRhOTZiNmU2YzhmZTdiMWIyMzMzNTBlZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMtc3Jn
Yi5odG1sCkBAIC0wLDAgKzEsODQ0IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXByZXNzZWQt
dGV4dHVyZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGNfc3JnYiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8c3R5bGU+Citp
bWcgeworIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworIG1hcmdpbi1yaWdodDogMWVtOworfQor
CisudGVzdGltYWdlcyBiciB7CisgIGNsZWFyOiBib3RoOworfQorCisudGVzdGltYWdlcyA+IGRp
diB7CisgIGZsb2F0OiBsZWZ0OworICBtYXJnaW46IDFlbTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRoOiA4cHg7IGhlaWdodDogOHB4OyI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9m
IHRoZSBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIGV4dGVuc2lvbiwgaWYgaXQg
aXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKKy8qCitUaGVzZSB0ZXN0cyB1c2UgdGhl
IHNhbWUgcGF5bG9hZHMgYXMgYSBub24tc1JHQiB2ZXJzaW9uLiBXaGVuIHJ1bm5pbmcgc2lkZS1i
eS1zaWRlLAoraW1hZ2VzIGZyb20gdGhlc2UgdGVzdHMgbXVzdCBhcHBlYXIgbXVjaCBkYXJrZXIg
dGhhbiBsaW5lYXIgY291bnRlcnBhcnRzLgorKi8KKworLyoKK0JDMSAoRFhUMSkgYmxvY2sKK2Uw
ID0gWyAgMCwgMjU1LCAwXQorZTEgPSBbMjU1LCAgIDAsIDBdCitlMCA8IGUxLCBzbyBpdCB1c2Vz
IDMtY29sb3IgbW9kZQorCitsb2NhbCBwYWxldHRlCisgICAgMDogWyAgMCwgMjU1LCAwLCAyNTVd
CisgICAgMTogWzI1NSwgICAwLCAwLCAyNTVdCisgICAgMjogWzEyOCwgMTI4LCAwLCAyNTVdCisg
ICAgMzogWyAgMCwgICAwLCAwLCAyNTVdIC8vIGZvciBCQzEgUkdCCisgICAgMzogWyAgMCwgICAw
LCAwLCAgIDBdIC8vIGZvciBCQzEgUkdCQQorc2VsZWN0b3JzCisgICAgMyAyIDEgMAorICAgIDIg
MiAxIDAKKyAgICAxIDEgMSAwCisgICAgMCAwIDAgMAorCitFeHRlbmRpbmcgdGhpcyBibG9jayB3
aXRoIG9wYXF1ZSBhbHBoYSBhbmQgdXBsb2FkaW5nIGFzIEJDMiBvciBCQzMKK3dpbGwgZ2VuZXJh
dGUgd3JvbmcgY29sb3JzIGJlY2F1c2UgQkMyIGFuZCBCQzMgZG8gbm90IGhhdmUgMy1jb2xvciBt
b2RlLgorKi8KK3ZhciBpbWdfNHg0X3JnYmFfZHh0MSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAw
eEUwLCAweDA3LCAweDAwLCAweEY4LCAweDFCLCAweDFBLCAweDE1LCAweDAwCitdKTsKKworLyoK
K0JDMiAoRFhUMykgYmxvY2sKKworUXVhbnRpemVkIGFscGhhIHZhbHVlcworICAgIDAgMSAyIDMK
KyAgICA0IDUgNiA3CisgICAgOCA5IEEgQgorICAgIEMgRCBFIEYKKworUkdCIGJsb2NrCitlMCA9
IFsyNTUsICAgMCwgMF0KK2UxID0gWyAgMCwgMjU1LCAwXQorQkMyIGhhcyBvbmx5IDQtY29sb3Ig
bW9kZQorCitsb2NhbCBwYWxldHRlCisgICAgMDogWzI1NSwgICAwLCAwXQorICAgIDE6IFsgIDAs
IDI1NSwgMF0KKyAgICAyOiBbMTcwLCAgODUsIDBdCisgICAgMzogWyA4NSwgMTcwLCAwXQorc2Vs
ZWN0b3JzCisgICAgMCAxIDIgMworICAgIDEgMSAyIDMKKyAgICAyIDIgMiAzCisgICAgMyAzIDMg
MworKi8KK3ZhciBpbWdfNHg0X3JnYmFfZHh0MyA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweDEw
LCAweDMyLCAweDU0LCAweDc2LCAweDk4LCAweEJBLCAweERDLCAweEZFLAorICAgIDB4MDAsIDB4
RjgsIDB4RTAsIDB4MDcsIDB4RTQsIDB4RTUsIDB4RUEsIDB4RkYKK10pOworCisvKgorQkMzIChE
WFQ1KSBibG9jaworCitBbHBoYSBibG9jayAoYWthIERYVDVBKQorZTAgPSAyNTUKK2UxID0gMAor
ZTAgPiBlMSwgc28gdXNpbmcgNiBpbnRlcm1lZGlhdGUgcG9pbnRzCitsb2NhbCBwYWxldHRlCisg
ICAgMjU1LCAwLCAyMTksIDE4MiwgMTQ2LCAxMDksIDczLCAzNgorc2VsZWN0b3JzCisgICAgMCAx
IDIgMworICAgIDEgMiAzIDQKKyAgICAyIDMgNCA1CisgICAgMyA0IDUgNgorCitSR0IgYmxvY2sK
K2UwID0gWzI1NSwgICAwLCAwXQorZTEgPSBbICAwLCAyNTUsIDBdCitCQzMgaGFzIG9ubHkgNC1j
b2xvciBtb2RlCisKK2xvY2FsIHBhbGV0dGUKKyAgICAwOiBbMjU1LCAgIDAsIDBdCisgICAgMTog
WyAgMCwgMjU1LCAwXQorICAgIDI6IFsxNzAsICA4NSwgMF0KKyAgICAzOiBbIDg1LCAxNzAsIDBd
CitzZWxlY3RvcnMKKyAgICAzIDIgMSAwCisgICAgMyAyIDEgMQorICAgIDMgMiAyIDIKKyAgICAz
IDMgMyAzCisqLwordmFyIGltZ180eDRfcmdiYV9keHQ1ID0gbmV3IFVpbnQ4QXJyYXkoWworICAg
IDB4RkYsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHgw
MCwgMHhGOCwgMHhFMCwgMHgwNywgMHgxQiwgMHg1QiwgMHhBQiwgMHhGRgorXSk7CisKKy8qCis4
eDggYmxvY2sgZW5kcG9pbnRzIHVzZSBoYWxmLWludGVuc2l0eSB2YWx1ZXMgKGFwcGVhciBkYXJr
ZXIgdGhhbiA0eDQpCisqLwordmFyIGltZ184eDhfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJyYXko
WworICAgIDB4ZTAsMHgwMywweDAwLDB4NzgsMHgxMywweDEwLDB4MTUsMHgwMCwKKyAgICAweDBm
LDB4MDAsMHhlMCwweDdiLDB4MTEsMHgxMCwweDE1LDB4MDAsCisgICAgMHhlMCwweDAzLDB4MGYs
MHg3OCwweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4MGYsMHgwMCwweGVmLDB4MDMsMHg0NCww
eDQ1LDB4NDAsMHg1NQorXSk7Cit2YXIgaW1nXzh4OF9yZ2JhX2R4dDMgPSBuZXcgVWludDhBcnJh
eShbCisgICAgMHhmNiwweGZmLDB4ZjYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHg3
OCwweGUwLDB4MDMsMHg0NCwweDQ1LDB4NDAsMHg1NSwKKyAgICAweGZmLDB4ZmYsMHhmZiwweGZm
LDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhlMCwweDdiLDB4MGYsMHgwMCwweDQ0LDB4NDUsMHg0MCww
eDU1LAorICAgIDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmNiwweGZmLDB4ZjYsMHhmZiwweDBmLDB4
NzgsMHhlMCwweDAzLDB4MTEsMHgxMCwweDE1LDB4MDAsCisgICAgMHhmZiwweGZmLDB4ZmYsMHhm
ZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZWYsMHgwMywweDBmLDB4MDAsMHgxMSwweDEwLDB4MTUs
MHgwMAorXSk7Cit2YXIgaW1nXzh4OF9yZ2JhX2R4dDUgPSBuZXcgVWludDhBcnJheShbCisweGZm
LDB4NjksMHgwMSwweDEwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDc4LDB4ZTAsMHgwMyww
eDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4ZmYsMHhmZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4
MDAsMHgwMCwweGUwLDB4N2IsMHgwZiwweDAwLDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAgMHhm
ZiwweDY5LDB4MDAsMHgwMCwweDAwLDB4MDEsMHgxMCwweDAwLDB4MGYsMHg3OCwweGUwLDB4MDMs
MHgxMSwweDEwLDB4MTUsMHgwMCwKKyAgICAweGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHhlZiwweDAzLDB4ZWYsMHgwMCwweDExLDB4MTAsMHgxNSwweDAwCitdKTsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGN0dSA9IENvbXByZXNzZWRUZXh0dXJlVXRp
bHM7Cit2YXIgY29udGV4dFZlcnNpb24gPSB3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24o
KTsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9KTsKK3Zh
ciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKK3ZhciBleHQgPSBudWxsOwor
dmFyIHZhbyA9IG51bGw7Cit2YXIgdmFsaWRGb3JtYXRzID0geworICAgIENPTVBSRVNTRURfU1JH
Ql9TM1RDX0RYVDFfRVhUICAgICAgIDogMHg4QzRDLAorICAgIENPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDFfRVhUIDogMHg4QzRELAorICAgIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDNfRVhUIDogMHg4QzRFLAorICAgIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVf
RVhUIDogMHg4QzRGLAorfTsKK3ZhciBuYW1lOwordmFyIHN1cHBvcnRlZEZvcm1hdHM7CisKK2lm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAg
ICAvLyBSdW4gdGVzdHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQKKyAgICBjdHUudGVzdENvbXBy
ZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQoZ2wsIHZhbGlkRm9y
bWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCA0KTsKKworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNp
b24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQg
PSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJXRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfczN0Y19zcmdiIik7CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiTm8gV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiBzdXBwb3J0IC0tIHRoaXMg
aXMgbGVnYWwiKTsKKyAgICAgICAgd3R1LnJ1bkV4dGVuc2lvblN1cHBvcnRlZFRlc3QoZ2wsICJX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgZmFsc2UpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9zM3RjX3NyZ2IgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgd3R1LnJ1bkV4dGVu
c2lvblN1cHBvcnRlZFRlc3QoZ2wsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgdHJ1ZSk7CisgICAgICAgIHJ1blRlc3RFeHRlbnNpb24oKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgICBpZiAo
Zm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VY
VCB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDVfRVhUKSB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3aWR0aCArIDMpIC8gNCkgKiBN
YXRoLmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICogMTY7CisgICAgfQorICAgIHJldHVybiBNYXRo
LmZsb29yKCh3aWR0aCArIDMpIC8gNCkgKiBNYXRoLmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICog
ODsKK30KKworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgeworICAgIHJldHVy
biB7d2lkdGg6IDQsIGhlaWdodDogNH07Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24o
KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIFdFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjX3NyZ2IiKTsKKworICAgIC8vIFRlc3QgdGhhdCBlbnVtIHZhbHVlcyBhcmUg
bGlzdGVkIGNvcnJlY3RseSBpbiBzdXBwb3J0ZWQgZm9ybWF0cyBhbmQgaW4gdGhlIGV4dGVuc2lv
biBvYmplY3QuCisgICAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZChnbCwgdmFsaWRG
b3JtYXRzKTsKKyAgICBjdHUudGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZv
cm1hdHMpOworICAgIC8vIFRlc3QgdGhhdCB0ZXh0dXJlIHVwbG9hZCBidWZmZXIgc2l6ZSBpcyB2
YWxpZGF0ZWQgY29ycmVjdGx5LgorICAgIGN0dS50ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZm
ZXJTaXplKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1l
bnNpb25zKTsKKworICAgIC8vIFRlc3QgZWFjaCBmb3JtYXQKKyAgICB0ZXN0RFhUMV9TUkdCKCk7
CisgICAgdGVzdERYVDFfU1JHQl9BTFBIQSgpOworICAgIHRlc3REWFQzX1NSR0JfQUxQSEEoKTsK
KyAgICB0ZXN0RFhUNV9TUkdCX0FMUEhBKCk7CisKKyAgICAvLyBUZXN0IGNvbXByZXNzZWQgUEJP
cyB3aXRoIGEgc2luZ2xlIGZvcm1hdAorICAgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7Cisg
ICAgICAgIHRlc3REWFQ1X1NSR0JfQUxQSEFfUEJPKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0RFhUMV9TUkdCKCkgeworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0
LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDMsCisgICAg
ICAgICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0MSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0
LkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IGZh
bHNlLAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWln
aHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogMywKKyAgICAgICAgICAgIGRhdGE6IGltZ184
eDhfcmdiYV9keHQxLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9TUkdCX1Mz
VENfRFhUMV9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgICAgICBz
dWJYMDogMCwKKyAgICAgICAgICAgIHN1YlkwOiAwLAorICAgICAgICAgICAgc3ViV2lkdGg6IDQs
CisgICAgICAgICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJEYXRhOiBpbWdfNHg0
X3JnYmFfZHh0MQorICAgICAgICB9CisgICAgXTsKKyAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMp
OworfQorCitmdW5jdGlvbiB0ZXN0RFhUMV9TUkdCX0FMUEhBKCkgeworICAgIHZhciB0ZXN0cyA9
IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAg
ICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0MSwK
KyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFf
RVhULAorICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSAtLSB0aGUgdGV4dHVy
ZSBpcyBzdGlsbCBvcGFxdWUKKyAgICAgICAgICAgIC8vIHRob3VnaCBpdCdzIFJHQkEuCisgICAg
ICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDog
OCwKKyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAg
ICAgICAgICAgZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDEsCisgICAgICAgICAgICBmb3JtYXQ6IGV4
dC5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgYSBzcGVjaWFsIGNhc2UgLS0gdGhlIHRleHR1cmUgaXMgc3RpbGwgb3BhcXVlCisgICAg
ICAgICAgICAvLyB0aG91Z2ggaXQncyBSR0JBLgorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNl
LAorICAgICAgICB9CisgICAgXTsKKyAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMpOworfQorCitm
dW5jdGlvbiB0ZXN0RFhUM19TUkdCX0FMUEhBKCkgeworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAg
ICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hh
bm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0MywKKyAgICAgICAg
ICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhULAorICAg
ICAgICAgICAgaGFzQWxwaGE6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDog
OCwKKyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAg
ICAgICAgICAgZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDMsCisgICAgICAgICAgICBmb3JtYXQ6IGV4
dC5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwKKyAgICAgICAgICAgIGhhc0Fs
cGhhOiB0cnVlLAorICAgICAgICAgICAgc3ViWDA6IDAsCisgICAgICAgICAgICBzdWJZMDogMCwK
KyAgICAgICAgICAgIHN1YldpZHRoOiA0LAorICAgICAgICAgICAgc3ViSGVpZ2h0OiA0LAorICAg
ICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yZ2JhX2R4dDMKKyAgICAgICAgfQorICAgIF07Cisg
ICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVDVfU1JHQl9B
TFBIQSgpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAg
ICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAg
ZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDUsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiB0cnVl
LAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6
IDgsCisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhf
cmdiYV9keHQ1LAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9TUkdCX0FMUEhB
X1MzVENfRFhUNV9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogdHJ1ZSwKKyAgICAgICAgICAg
IHN1YlgwOiAwLAorICAgICAgICAgICAgc3ViWTA6IDAsCisgICAgICAgICAgICBzdWJXaWR0aDog
NCwKKyAgICAgICAgICAgIHN1YkhlaWdodDogNCwKKyAgICAgICAgICAgIHN1YkRhdGE6IGltZ180
eDRfcmdiYV9keHQ1CisgICAgICAgIH0KKyAgICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0ZXN0
cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFRUZXh0dXJlcyh0ZXN0cykgeworICAgIGRlYnVnKCI8
aHIvPiIpOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsK
KyAgICAgICAgdGVzdERYVFRleHR1cmUodGVzdHNbaWldLCBmYWxzZSk7CisgICAgICAgIGlmIChj
b250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgICAgICAgICBkZWJ1ZygiPGJyLz4iKTsKKyAgICAg
ICAgICAgIHRlc3REWFRUZXh0dXJlKHRlc3RzW2lpXSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHVuY29tcHJlc3NEWFRCbG9ja1NSR0IoCisgICAgZGVzdEJ1ZmZlciwg
ZGVzdFgsIGRlc3RZLCBkZXN0V2lkdGgsIHNyYywgc3JjT2Zmc2V0LCBmb3JtYXQpIHsKKyAgICAv
LyBEZWNvZGluZyByb3V0aW5lcyBmb2xsb3cgRDNEMTEgZnVuY3Rpb25hbCBzcGVjIHdydAorICAg
IC8vIGVuZHBvaW50cyB1bnF1YW50aXphdGlvbiBhbmQgaW50ZXJwb2xhdGlvbi4KKyAgICAvLyBT
b21lIGhhcmR3YXJlIG1heSBwcm9kdWNlIHNsaWdodGx5IGRpZmZlcmVudCB2YWx1ZXMgLSBpdCdz
IG5vcm1hbC4KKworICAgIGZ1bmN0aW9uIG1ha2U1NjUoc3JjLCBvZmZzZXQpIHsKKyAgICAgICAg
cmV0dXJuIHNyY1tvZmZzZXQgKyAwXSArIChzcmNbb2Zmc2V0ICsgMV0gPDwgOCk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIG1ha2U4ODg4RnJvbTU2NShjKSB7CisgICAgICAgIC8vIFRoZXNlIHZhbHVl
cyBleGFjdGx5IG1hdGNoIGh3IGRlY29kZXIgd2hlbiBzZWxlY3RvcnMgYXJlIDAgb3IgMS4KKyAg
ICAgICAgZnVuY3Rpb24gcmVwbGljYXRlQml0cyh2LCB3KSB7CisgICAgICAgICAgIHJldHVybiAo
diA8PCAoOCAtIHcpKSB8ICh2ID4+ICh3ICsgdyAtIDgpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gWworICAgICAgICAgICAgICAgIHJlcGxpY2F0ZUJpdHMoKGMgPj4gMTEpICYgMHgxRiwg
NSksCisgICAgICAgICAgICAgICAgcmVwbGljYXRlQml0cygoYyA+PiAgNSkgJiAweDNGLCA2KSwK
KyAgICAgICAgICAgICAgICByZXBsaWNhdGVCaXRzKChjID4+ICAwKSAmIDB4MUYsIDUpLAorICAg
ICAgICAgICAgICAgIDI1NQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZnVuY3Rpb24gbWl4
KG11bHQsIGMwLCBjMSwgZGl2KSB7CisgICAgICAgIHZhciByID0gW107CisgICAgICAgIGZvciAo
dmFyIGlpID0gMDsgaWkgPCBjMC5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgICAgIC8vIEZvciBn
cmVlbiBjaGFubmVsICg2IGJpdHMpLCB0aGlzIGludGVycG9sYXRpb24gZXhhY3RseSBtYXRjaGVz
IGh3IGRlY29kZXJzCisKKyAgICAgICAgICAgIC8vIEZvciByZWQgYW5kIGJsdWUgY2hhbm5lbHMg
KDUgYml0cyksIHRoaXMgaW50ZXJwb2xhdGlvbiBleGFjdGx5CisgICAgICAgICAgICAvLyBtYXRj
aGVzIG9ubHkgc29tZSBodyBkZWNvZGVycyBhbmQgc3RheXMgd2l0aGluIGFjY2VwdGFibGUgcmFu
Z2UgZm9yIG90aGVycy4KKyAgICAgICAgICAgIHJbaWldID0gTWF0aC5mbG9vcigoYzBbaWldICog
bXVsdCArIGMxW2lpXSkgLyBkaXYgKyAwLjUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
OworICAgIH0KKyAgICB2YXIgaXNEWFQxID0gZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1NSR0Jf
UzNUQ19EWFQxX0VYVCB8fAorICAgICAgICAgICAgICAgICBmb3JtYXQgPT0gZXh0LkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOworICAgIHZhciBjb2xvck9mZnNldCA9IHNyY09m
ZnNldCArIChpc0RYVDEgPyAwIDogOCk7CisgICAgdmFyIGNvbG9yMCA9IG1ha2U1NjUoc3JjLCBj
b2xvck9mZnNldCArIDApOworICAgIHZhciBjb2xvcjEgPSBtYWtlNTY1KHNyYywgY29sb3JPZmZz
ZXQgKyAyKTsKKyAgICB2YXIgYzBndGMxID0gY29sb3IwID4gY29sb3IxIHx8ICFpc0RYVDE7Cisg
ICAgdmFyIHJnYmEwID0gbWFrZTg4ODhGcm9tNTY1KGNvbG9yMCk7CisgICAgdmFyIHJnYmExID0g
bWFrZTg4ODhGcm9tNTY1KGNvbG9yMSk7CisgICAgdmFyIGNvbG9ycyA9IFsKKyAgICAgICAgICAg
IHJnYmEwLAorICAgICAgICAgICAgcmdiYTEsCisgICAgICAgICAgICBjMGd0YzEgPyBtaXgoMiwg
cmdiYTAsIHJnYmExLCAzKSA6IG1peCgxLCByZ2JhMCwgcmdiYTEsIDIpLAorICAgICAgICAgICAg
YzBndGMxID8gbWl4KDIsIHJnYmExLCByZ2JhMCwgMykgOiBbMCwgMCwgMCwgMjU1XQorICAgICAg
ICBdOworCisgICAgLy8geWVhIEkga25vdyB0aGVyZSBpcyBhIGxvdCBvZiBtYXRoIGluIHRoaXMg
aW5uZXIgbG9vcC4KKyAgICAvLyBzbyBzdWUgbWUuCisgICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8
IDQ7ICsreXkpIHsKKyAgICAgICAgdmFyIHBpeGVscyA9IHNyY1tjb2xvck9mZnNldCArIDQgKyB5
eV07CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCA0OyArK3h4KSB7CisgICAgICAgICAg
ICB2YXIgZHN0T2ZmID0gKChkZXN0WSArIHl5KSAqIGRlc3RXaWR0aCArIGRlc3RYICsgeHgpICog
NDsKKyAgICAgICAgICAgIHZhciBjb2RlID0gKHBpeGVscyA+PiAoeHggKiAyKSkgJiAweDM7Cisg
ICAgICAgICAgICB2YXIgc3JjQ29sb3IgPSBjb2xvcnNbY29kZV07CisgICAgICAgICAgICB2YXIg
YWxwaGE7CisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBl
eHQuQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICAgICAgYWxwaGEg
PSAyNTU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGV4dC5DT01Q
UkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgICBhbHBoYSA9
IChjb2RlID09IDMgJiYgIWMwZ3RjMSkgPyAwIDogMjU1OworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19F
WFQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGEwID0g
c3JjW3NyY09mZnNldCArIHl5ICogMiArICh4eCA+PiAxKV07CisgICAgICAgICAgICAgICAgICAg
IHZhciBhbHBoYTEgPSAoYWxwaGEwID4+ICgoeHggJSAyKSAqIDQpKSAmIDB4RjsKKyAgICAgICAg
ICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTEgfCAoYWxwaGExIDw8IDQpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXh0LkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGFscGhhMCA9IHNyY1tzcmNPZmZzZXQgKyAwXTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGFscGhhMSA9IHNyY1tzcmNPZmZzZXQgKyAxXTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGFscGhhT2ZmID0gKHl5ID4+IDEpICogMyArIDI7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBhbHBoYUJpdHMgPQorICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1tzcmNP
ZmZzZXQgKyBhbHBoYU9mZiArIDBdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzcmNbc3Jj
T2Zmc2V0ICsgYWxwaGFPZmYgKyAxXSAqIDI1NiArCisgICAgICAgICAgICAgICAgICAgICAgICAg
c3JjW3NyY09mZnNldCArIGFscGhhT2ZmICsgMl0gKiA2NTUzNjsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGFscGhhU2hpZnQgPSAoeXkgJSAyKSAqIDEyICsgeHggKiAzOworICAgICAgICAgICAg
ICAgICAgICB2YXIgYWxwaGFDb2RlID0gKGFscGhhQml0cyA+PiBhbHBoYVNoaWZ0KSAmIDB4NzsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhMCA+IGFscGhhMSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChhbHBoYUNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhhMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhhMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBNYXRoLmZsb29y
KCgoOCAtIGFscGhhQ29kZSkgKiBhbHBoYTAgKyAoYWxwaGFDb2RlIC0gMSkgKiBhbHBoYTEpIC8g
Ny4wICsgMC41KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFDb2RlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSA3OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gMjU1OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IE1hdGguZmxvb3IoKCg2
IC0gYWxwaGFDb2RlKSAqIGFscGhhMCArIChhbHBoYUNvZGUgLSAxKSAqIGFscGhhMSkgLyA1LjAg
KyAwLjUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICB0aHJvdyAiYmFkIGZvcm1hdCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXN0
QnVmZmVyW2RzdE9mZiArIDBdID0gc1JHQkNoYW5uZWxUb0xpbmVhcihzcmNDb2xvclswXSk7Cisg
ICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDFdID0gc1JHQkNoYW5uZWxUb0xpbmVhcihz
cmNDb2xvclsxXSk7CisgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDJdID0gc1JHQkNo
YW5uZWxUb0xpbmVhcihzcmNDb2xvclsyXSk7CisgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9m
ZiArIDNdID0gYWxwaGE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGdldEJsb2Nr
U2l6ZShmb3JtYXQpIHsKKyAgdmFyIGlzRFhUMSA9IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9T
UkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJF
U1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ7CisgIHJldHVybiBpc0RYVDEgPyA4IDogMTY7
Cit9CisKK2Z1bmN0aW9uIHVuY29tcHJlc3NEWFRTUkdCKHdpZHRoLCBoZWlnaHQsIGRhdGEsIGZv
cm1hdCkgeworICAgIGlmICh3aWR0aCAlIDQgfHwgaGVpZ2h0ICUgNCkgdGhyb3cgImJhZCB3aWR0
aCBvciBoZWlnaHQiOworCisgICAgdmFyIGRlc3QgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhl
aWdodCAqIDQpOworICAgIHZhciBibG9ja3NBY3Jvc3MgPSB3aWR0aCAvIDQ7CisgICAgdmFyIGJs
b2Nrc0Rvd24gPSBoZWlnaHQgLyA0OworICAgIHZhciBibG9ja1NpemUgPSBnZXRCbG9ja1NpemUo
Zm9ybWF0KTsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgYmxvY2tzRG93bjsgKyt5eSkgewor
ICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgYmxvY2tzQWNyb3NzOyArK3h4KSB7CisgICAg
ICAgICAgICB1bmNvbXByZXNzRFhUQmxvY2tTUkdCKAorICAgICAgICAgICAgICAgIGRlc3QsIHh4
ICogNCwgeXkgKiA0LCB3aWR0aCwgZGF0YSwKKyAgICAgICAgICAgICAgICAoeXkgKiBibG9ja3NB
Y3Jvc3MgKyB4eCkgKiBibG9ja1NpemUsIGZvcm1hdCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGRlc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY29tcHJlc3NEWFRJbnRvU3ViUmVnaW9uU1JH
Qih3aWR0aCwgaGVpZ2h0LCBzdWJYMCwgc3ViWTAsIHN1YldpZHRoLCBzdWJIZWlnaHQsIGRhdGEs
IGZvcm1hdCkKK3sKKyAgICBpZiAod2lkdGggJSA0IHx8IGhlaWdodCAlIDQgfHwgc3ViWDAgJSA0
IHx8IHN1YlkwICUgNCB8fCBzdWJXaWR0aCAlIDQgfHwgc3ViSGVpZ2h0ICUgNCkKKyAgICAgICAg
dGhyb3cgImJhZCBkaW1lbnNpb24iOworCisgICAgdmFyIGRlc3QgPSBuZXcgVWludDhBcnJheSh3
aWR0aCAqIGhlaWdodCAqIDQpOworICAgIC8vIFplcm8tZmlsbGVkIERYVDEgdGV4dHVyZSByZXBy
ZXNlbnRzIFswLCAwLCAwLCAyNTVdCisgICAgaWYgKGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9T
UkdCX1MzVENfRFhUMV9FWFQgfHwgZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCkgeworICAgICAgICBmb3IgKHZhciBpID0gMzsgaSA8IGRlc3QubGVuZ3Ro
OyBpICs9IDQpIGRlc3RbaV0gPSAyNTU7CisgICAgfQorICAgIHZhciBibG9ja3NBY3Jvc3MgPSBz
dWJXaWR0aCAvIDQ7CisgICAgdmFyIGJsb2Nrc0Rvd24gPSBzdWJIZWlnaHQgLyA0OworICAgIHZh
ciBibG9ja1NpemUgPSBnZXRCbG9ja1NpemUoZm9ybWF0KTsKKyAgICBmb3IgKHZhciB5eSA9IDA7
IHl5IDwgYmxvY2tzRG93bjsgKyt5eSkgeworICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwg
YmxvY2tzQWNyb3NzOyArK3h4KSB7CisgICAgICAgICAgICB1bmNvbXByZXNzRFhUQmxvY2tTUkdC
KAorICAgICAgICAgICAgICAgIGRlc3QsIHN1YlgwICsgeHggKiA0LCBzdWJZMCArIHl5ICogNCwg
d2lkdGgsIGRhdGEsCisgICAgICAgICAgICAgICAgKHl5ICogYmxvY2tzQWNyb3NzICsgeHgpICog
YmxvY2tTaXplLCBmb3JtYXQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBkZXN0Owor
fQorCitmdW5jdGlvbiBjb3B5UmVjdChkYXRhLCBzcmNYLCBzcmNZLCBkc3RYLCBkc3RZLCB3aWR0
aCwgaGVpZ2h0LCBzdHJpZGUpIHsKKyAgdmFyIGJ5dGVzUGVyTGluZSA9IHdpZHRoICogNDsKKyAg
dmFyIHNyY09mZnNldCA9IHNyY1ggKiA0ICsgc3JjWSAqIHN0cmlkZTsKKyAgdmFyIGRzdE9mZnNl
dCA9IGRzdFggKiA0ICsgZHN0WSAqIHN0cmlkZTsKKyAgZm9yICg7IGhlaWdodCA+IDA7IC0taGVp
Z2h0KSB7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGJ5dGVzUGVyTGluZTsgKytpaSkgewor
ICAgICAgZGF0YVtkc3RPZmZzZXQgKyBpaV0gPSBkYXRhW3NyY09mZnNldCArIGlpXTsKKyAgICB9
CisgICAgc3JjT2Zmc2V0ICs9IHN0cmlkZTsKKyAgICBkc3RPZmZzZXQgKz0gc3RyaWRlOworICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3REWFRUZXh0dXJlKHRlc3QsIHVzZVRleFN0b3JhZ2UpIHsKKyAg
ICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHRlc3QuZGF0YSk7CisgICAgdmFyIHdpZHRoID0g
dGVzdC53aWR0aDsKKyAgICB2YXIgaGVpZ2h0ID0gdGVzdC5oZWlnaHQ7CisgICAgdmFyIGZvcm1h
dCA9IHRlc3QuZm9ybWF0OworCisgICAgdmFyIHVuY29tcHJlc3NlZERhdGEgPSB1bmNvbXByZXNz
RFhUU1JHQih3aWR0aCwgaGVpZ2h0LCBkYXRhLCBmb3JtYXQpOworCisgICAgY2FudmFzLndpZHRo
ID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICBnbC52aWV3cG9ydCgw
LCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBkZWJ1ZygidGVzdGluZyAiICsgY3R1LmZvcm1hdFRv
U3RyaW5nKGV4dCwgZm9ybWF0KSArICIgIiArIHdpZHRoICsgIngiICsgaGVpZ2h0ICsKKyAgICAg
ICAgICAodXNlVGV4U3RvcmFnZSA/ICIgdmlhIHRleFN0b3JhZ2UyRCIgOiAiIHZpYSBjb21wcmVz
c2VkVGV4SW1hZ2UyRCIpKTsKKworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGlm
ICh1c2VUZXhTdG9yYWdlKSB7CisgICAgICAgIGlmICh0ZXN0LnN1YkRhdGEpIHsKKyAgICAgICAg
ICAgIHZhciB1bmNvbXByZXNzZWREYXRhU3ViID0gdW5jb21wcmVzc0RYVEludG9TdWJSZWdpb25T
UkdCKAorICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHRlc3Quc3ViWDAsIHRlc3Quc3Vi
WTAsIHRlc3Quc3ViV2lkdGgsIHRlc3Quc3ViSGVpZ2h0LCB0ZXN0LnN1YkRhdGEsIGZvcm1hdCk7
CisgICAgICAgICAgICB2YXIgdGV4MSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOworICAgICAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTJEKGds
LlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFsbG9jYXRpbmcgY29tcHJlc3NlZCB0
ZXh0dXJlIHZpYSB0ZXhTdG9yYWdlMkQiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIDAsIHRlc3Quc3ViWDAs
IHRlc3Quc3ViWTAsIHRlc3Quc3ViV2lkdGgsIHRlc3Quc3ViSGVpZ2h0LCBmb3JtYXQsIHRlc3Qu
c3ViRGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1cmUgZGF0YSB2aWEgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQiKTsKKworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsK
KyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2lu
ZyB1bml0IHF1YWQgMSIpOworICAgICAgICAgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwg
dGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YVN1YiwgIk5FQVJFU1QiKTsKKworICAgICAg
ICAgICAgLy8gQ2xlYW4gdXAgYW5kIHJlY292ZXIKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1
cmUodGV4MSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworICAgICAgICB9CisKKyAgICAgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBjb21wcmVzc2VkIHRleHR1cmUgdmlhIHRleFN0b3Jh
Z2UyRCIpOworICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7
CisgICAgICAgIHZhciBjbGVhckNvbG9yID0gKHRlc3QuaGFzQWxwaGEgPyBbMCwgMCwgMCwgMF0g
OiBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgY2xlYXJDb2xv
ciwgInRleHR1cmUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIGJsYWNrIik7CisgICAgICAgIGds
LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVyZSBkYXRhIHZpYSBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZGF0
YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2Fk
aW5nIGNvbXByZXNzZWQgdGV4dHVyZSIpOworICAgIH0KKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChn
bC5URVhUVVJFXzJEKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInRyeWluZyB0byBnZW5lcmF0ZSBtaXBtYXBzIGZyb20gY29tcHJlc3NlZCB0ZXh0
dXJlIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBj
bGVhcmluZyBnZW5lcmF0ZU1pcG1hcCBlcnJvciIpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3
aW5nIHVuaXQgcXVhZCAxIik7CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5j
aGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1QiKTsKKyAgICAvLyBUZXN0IGFnYWlu
IHdpdGggbGluZWFyIGZpbHRlcmluZy4KKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAg
ICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQgMiIpOworICAgIGNvbXBhcmVSZWN0
KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3NlZERhdGEsICJMSU5FQVIi
KTsKKworICAgIGlmICghdXNlVGV4U3RvcmFnZSkgeworICAgICAgICAvLyBJdCdzIG5vdCBhbGxv
d2VkIHRvIHJlZGVmaW5lIHRleHR1cmVzIGRlZmluZWQgdmlhIHRleFN0b3JhZ2UyRC4KKyAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCAxLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgIm5vbiAwIGJvcmRlciIpOworCisgICAgICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGggKyA0LCBoZWlnaHQsIDAs
IGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
ICsgNCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRo
IC0gNCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7
CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCAtIDQsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVu
c2lvbnMiKTsKKworICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBmb3JtYXQsIHdpZHRoIC0gMSwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lv
bnMiKTsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Zm9ybWF0LCB3aWR0aCAtIDIsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7
CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCAtIDEsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQgLSAyLCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKworICAgICAg
ICBpZiAod2lkdGggPT0gNCkgeworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCAxLCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25z
IGZvciBsZXZlbCA+IDAiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgMiwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBm
b3IgbGV2ZWwgPiAwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhlaWdodCA9PSA0KSB7Cisg
ICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3Jt
YXQsIHdpZHRoLCAxLCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAg
ICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQs
IHdpZHRoLCAyLCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBwaWNrIGEgd3JvbmcgZm9ybWF0IHRoYXQgdXNlcyB0aGUgc2Ft
ZSBhbW91bnQgb2YgZGF0YS4KKyAgICB2YXIgd3JvbmdGb3JtYXQ7CisgICAgc3dpdGNoIChmb3Jt
YXQpIHsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAg
IHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOwor
ICAgICAgYnJlYWs7CisgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
MV9FWFQ6CisgICAgICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQx
X0VYVDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDNfRVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUNV9FWFQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOworICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgd3JvbmdGb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZm9ybWF0IGRvZXMgbm90IG1hdGNoIik7CisKKyAg
ICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCA0LCAwLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUsICJkaW1lbnNpb24gb3V0IG9mIHJhbmdlIik7CisgICAgZ2wuY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgNCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZB
TFVFLCAiZGltZW5zaW9uIG91dCBvZiByYW5nZSIpOworCisgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggKyA0LCBoZWlnaHQsIGZvcm1h
dCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
ImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCArIDQs
IGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9W
QUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggLSA0LCBo
ZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAg
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgs
IGhlaWdodCAtIDQsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7
CisKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAw
LCB3aWR0aCAtIDEsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAg
IGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRo
IC0gMiwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdo
dCAtIDEsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0gMiwg
Zm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworCisgICAgdmFyIHN1YkRhdGEgPSBuZXcg
VWludDhBcnJheShkYXRhLmJ1ZmZlciwgMCwgZ2V0QmxvY2tTaXplKGZvcm1hdCkpOworCisgICAg
aWYgKHdpZHRoID09IDggJiYgaGVpZ2h0ID09IDgpIHsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwgMCwgNCwgNCwgZm9ybWF0LCBzdWJEYXRh
KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJpbnZhbGlkIG9mZnNldCIpOworICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCAwLCAxLCA0LCA0LCBmb3JtYXQsIHN1YkRhdGEpOworICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgb2Zm
c2V0Iik7CisgICAgfQorCisgICAgdmFyIHN0cmlkZSA9IHdpZHRoICogNDsKKyAgICBmb3IgKHZh
ciB5b2ZmID0gMDsgeW9mZiA8IGhlaWdodDsgeW9mZiArPSA0KSB7CisgICAgICAgIGZvciAodmFy
IHhvZmYgPSAwOyB4b2ZmIDwgd2lkdGg7IHhvZmYgKz0gNCkgeworICAgICAgICAgICAgY29weVJl
Y3QodW5jb21wcmVzc2VkRGF0YSwgMCwgMCwgeG9mZiwgeW9mZiwgNCwgNCwgc3RyaWRlKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHhv
ZmYsIHlvZmYsIDQsIDQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1cmUi
KTsKKyAgICAgICAgICAgIC8vIEZpcnN0IHRlc3QgTkVBUkVTVCBmaWx0ZXJpbmcuCisgICAgICAg
ICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgICB3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICAgICAgY29tcGFyZVJlY3Qod2lkdGgs
IGhlaWdodCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1QiKTsKKyAg
ICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1
bml0IHF1YWQiKTsKKyAgICAgICAgICAgIC8vIE5leHQgdGVzdCBMSU5FQVIgZmlsdGVyaW5nLgor
ICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAg
IHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7CisgICAgICAgICAg
ICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0LmNoYW5uZWxzLCB1bmNvbXByZXNzZWRE
YXRhLCAiTElORUFSIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQ1
X1NSR0JfQUxQSEFfUEJPKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGluZyBQ
Qk8gdXBsb2FkcyIpOworICAgIHZhciB3aWR0aCA9IDg7CisgICAgdmFyIGhlaWdodCA9IDg7Cisg
ICAgdmFyIGNoYW5uZWxzID0gNDsKKyAgICB2YXIgZGF0YSA9IGltZ184eDhfcmdiYV9keHQ1Owor
ICAgIHZhciBmb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ7
CisgICAgdmFyIHVuY29tcHJlc3NlZERhdGEgPSB1bmNvbXByZXNzRFhUU1JHQih3aWR0aCwgaGVp
Z2h0LCBkYXRhLCBmb3JtYXQpOworCisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsK
KworICAgIC8vIEZpcnN0LCBQQk8gc2l6ZSA9IGltYWdlIHNpemUKKyAgICB2YXIgcGJvMSA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZF
UiwgcGJvMSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBkYXRh
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJ1cGxvYWRpbmcgYSBQQk8iKTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCk7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmxlbmd0aCwgMCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgYSB0ZXh0
dXJlIGZyb20gYSBQQk8iKTsKKworICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JV
RkZFUiwgbnVsbCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7Cisg
ICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgY2hhbm5lbHMsIHVuY29tcHJlc3NlZERhdGEs
ICJORUFSRVNUIik7CisKKyAgICAvLyBDbGVhciB0aGUgdGV4dHVyZSBiZWZvcmUgdGhlIG5leHQg
dGVzdAorICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgbnVsbCk7Cisg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCBuZXcgVWludDhBcnJheShkYXRhLmxlbmd0aCkpOworCisgICAg
Ly8gU2Vjb25kLCBpbWFnZSBpcyBqdXN0IGEgc3VicmFuZ2Ugb2YgdGhlIFBCTworICAgIHZhciBw
Ym8yID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBwYm8yKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZG
RVIsIGRhdGEubGVuZ3RoKjMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRh
KGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEubGVuZ3RoLCBkYXRhKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBhIFBCTyBzdWJyYW5nZSIp
OworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5sZW5ndGgsIGRhdGEubGVuZ3RoKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBhIHRleHR1cmUg
ZnJvbSBhIFBCTyBzdWJyYW5nZSIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNL
X0JVRkZFUiwgbnVsbCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7
CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgY2hhbm5lbHMsIHVuY29tcHJlc3NlZERh
dGEsICJORUFSRVNUIik7Cit9CisKKy8vIFNlZSBFWFRfdGV4dHVyZV9zUkdCLCBTZWN0aW9uIDMu
OC54LCBzUkdCIFRleHR1cmUgQ29sb3IgQ29udmVyc2lvbi4KK2Z1bmN0aW9uIHNSR0JDaGFubmVs
VG9MaW5lYXIodmFsdWUpIHsKKyAgICB2YWx1ZSA9IHZhbHVlIC8gMjU1OworICAgIGlmICh2YWx1
ZSA8PSAwLjA0MDQ1KSB7CisgICAgICAgIHZhbHVlID0gdmFsdWUgLyAxMi45MjsKKyAgICB9IGVs
c2UgeworICAgICAgICB2YWx1ZSA9IE1hdGgucG93KCh2YWx1ZSArIDAuMDU1KSAvIDEuMDU1LCAy
LjQpOworICAgIH0KKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSAqIDI1NSArIDAuNSk7Cit9
CisKK2Z1bmN0aW9uIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCBleHBlY3Rl
ZERhdGEsIGZpbHRlcmluZ01vZGUpIHsKKyAgICB2YXIgYWN0dWFsID0gbmV3IFVpbnQ4QXJyYXko
d2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWln
aHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFjdHVhbCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZWFkaW5nIGJhY2sgcGl4ZWxzIik7CisKKyAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmNsYXNzTmFt
ZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgICBjdHUuaW5zZXJ0Q2FwdGlvbmVkSW1nKGRpdiwgImV4cGVj
dGVkIiwgY3R1Lm1ha2VTY2FsZWRJbWFnZSh3aWR0aCwgaGVpZ2h0LCB3aWR0aCwgZXhwZWN0ZWRE
YXRhLCB0cnVlKSk7CisgICAgY3R1Lmluc2VydENhcHRpb25lZEltZyhkaXYsICJhY3R1YWwiLCBj
dHUubWFrZVNjYWxlZEltYWdlKHdpZHRoLCBoZWlnaHQsIHdpZHRoLCBhY3R1YWwsIHRydWUpKTsK
KyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOworCisg
ICAgdmFyIGZhaWxlZCA9IGZhbHNlOworICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCBoZWlnaHQ7
ICsreXkpIHsKKyAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHdpZHRoOyArK3h4KSB7Cisg
ICAgICAgICAgICB2YXIgb2Zmc2V0ID0gKHl5ICogd2lkdGggKyB4eCkgKiA0OworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkID0gZXhwZWN0ZWREYXRhLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNCk7
CisgICAgICAgICAgICAvLyBDb21wYXJlIFJHQiB2YWx1ZXMKKyAgICAgICAgICAgIGZvciAodmFy
IGpqID0gMDsgamogPCAzOyArK2pqKSB7CisgICAgICAgICAgICAgICAgLy8gQWNjZXB0YWJsZSBp
bnRlcnBvbGF0aW9uIGVycm9yIGRlcGVuZHMgb24gZW5kcG9pbnRzOgorICAgICAgICAgICAgICAg
IC8vIDEuMCAvIDI1NS4wICsgMC4wMyAqIG1heChhYnMoZW5kcG9pbnQwIC0gZW5kcG9pbnQxKSwg
YWJzKGVuZHBvaW50MF9wIC0gZW5kcG9pbnQxX3ApKQorICAgICAgICAgICAgICAgIC8vIEZvciBz
aW1wbGljaXR5LCBhc3N1bWUgdGhlIHdvcnN0IGNhc2UgKGUwIGlzIDAuMCwgZTEgaXMgMS4wKS4g
QWZ0ZXIgY29udmVyc2lvbiB0byB1bm9ybTgsIGl0IGlzIDkuCisgICAgICAgICAgICAgICAgaWYg
KE1hdGguYWJzKGFjdHVhbFtvZmZzZXQgKyBqal0gLSBleHBlY3RlZFtqal0pID4gOSkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgd2FzID0gYWN0dWFsW29mZnNldCArIDBdLnRvU3RyaW5nKCk7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgMzsgKytqKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3YXMgKz0gIiwiICsgYWN0dWFsW29mZnNldCArIGpdOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1JHQiBhdCAoJyArIHh4ICsgJywgJyArIHl5
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSBleHBlY3RlZDog
JyArIGV4cGVjdGVkICsgJyDCsSA5IHdhcyAnICsgd2FzKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaGFubmVscyA9PSAzKSB7CisgICAgICAg
ICAgICAgICAgLy8gQkMxIFJHQiBpcyBhbGxvd2VkIHRvIGJlIG1hcHBlZCB0byBCQzEgUkdCQS4K
KyAgICAgICAgICAgICAgICAvLyBJbiBzdWNoIGEgY2FzZSwgMy1jb2xvciBtb2RlIGJsYWNrIHZh
bHVlIGNhbiBiZSB0cmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICAvLyBbMCwgMCwgMCwgMF0g
aW5zdGVhZCBvZiBbMCwgMCwgMCwgMjU1XS4KKworICAgICAgICAgICAgICAgIGlmIChhY3R1YWxb
b2Zmc2V0ICsgM10gIT0gZXhwZWN0ZWRbM10pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR290
IG5vbi1vcGFxdWUgdmFsdWUgZm9yIG9wYXF1ZSBmb3JtYXQKKworICAgICAgICAgICAgICAgICAg
ICAvLyBDaGVjayBSR0IgdmFsdWVzLiBOb3RpY2UsIHRoYXQgdGhlIGNvbmRpdGlvbiBoZXJlCisg
ICAgICAgICAgICAgICAgICAgIC8vIGlzIG1vcmUgcGVybWlzc2l2ZSB0aGFuIG5lZWRlZCBzaW5j
ZSB3ZSBkb24ndCBoYXZlCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbXByZXNzZWQgZGF0YSBh
dCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsW29mZnNldF0gPT0g
MCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsW29mZnNldCArIDFdID09IDAgJiYK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFtvZmZzZXQgKyAyXSA9PSAwICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxbb2Zmc2V0ICsgM10gPT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYnVnKCI8Yj5EWFQxIFNSR0IgaXMgbWFwcGVkIHRvIERYVDEg
U1JHQiBBTFBIQTwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdBbHBoYSBhdCAoJyArIHh4ICsgJywgJyArIHl5ICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSBleHBlY3RlZDogJyArIGV4cGVjdGVk
WzNdICsgJyB3YXMgJyArIGFjdHVhbFtvZmZzZXQgKyAzXSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIENvbXBhcmUgQWxwaGEgdmFsdWVzCisgICAgICAgICAgICAgICAgLy8gQWNjZXB0YWJs
ZSBpbnRlcnBvbGF0aW9uIGVycm9yIGRlcGVuZHMgb24gZW5kcG9pbnRzOgorICAgICAgICAgICAg
ICAgIC8vIDEuMCAvIDY1NTM1LjAgKyAwLjAzICogbWF4KGFicyhlbmRwb2ludDAgLSBlbmRwb2lu
dDEpLCBhYnMoZW5kcG9pbnQwX3AgLSBlbmRwb2ludDFfcCkpCisgICAgICAgICAgICAgICAgLy8g
Rm9yIHNpbXBsaWNpdHksIGFzc3VtZSB0aGUgd29yc3QgY2FzZSAoZTAgaXMgMC4wLCBlMSBpcyAx
LjApLiBBZnRlciBjb252ZXJzaW9uIHRvIHVub3JtOCwgaXQgaXMgOC4KKyAgICAgICAgICAgICAg
ICBpZiAoTWF0aC5hYnMoYWN0dWFsW29mZnNldCArIDNdIC0gZXhwZWN0ZWRbM10pID4gOCkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgd2FzID0gYWN0dWFsW29mZnNldCArIDNdLnRvU3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoJ0FscGhhIGF0ICgnICsgeHggKyAnLCAnICsgeXkgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBleHBlY3Rl
ZCArICcgwrEgOCB3YXMgJyArIHdhcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGlmICghZmFpbGVkKSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoInRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5IHdpdGggIiArIGZpbHRlcmluZ01vZGUgKyAi
IGZpbHRlcmluZyIpOworICAgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI1
MGU2NGQwN2I0MDE5ZDNlOTMwZGE0MTdmMjcwZDg1MDgyOGMxNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXNpemUtbGltaXQuaHRtbApAQCAt
MCwwICsxLDM1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBjb21wcmVzc2VkIHRleHR1cmUgc2l6ZSBsaW1pdCBjb25mb3JtYW5j
ZSB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL3dlYmdsLWNvbXByZXNz
ZWQtdGV4dHVyZS1zaXplLWxpbWl0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBzdHlsZT0id2lkdGg6IDQw
cHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZW5h
YmxlSlNUZXN0UHJlVmVyYm9zZUxvZ2dpbmcoKTsKK2Rlc2NyaXB0aW9uKCJDaGVja3Mgc2l6ZSBs
aW1pdCBvZiB0aGUgd2ViZ2wgY29tcHJlc3NlZCB0ZXh0dXJlcyIpCisKKy8vIEFycmF5QnVmZmVy
cyBjYW4gYmUgYXQgbW9zdCA0R0IgKG1pbnVzIDEgYnl0ZSksIGJ1dCBhbnkgYWxsb2NhdGlvbnMg
bGFyZ2VyIHRoYW4gMSBHQiBhcmUgdW5yZWxpYWJsZSBpbiBwcmFjdGljZS4gU28gbGltaXQgYWxs
b2NhdGlvbnMgdG8gMSBHQi4KKy8vIFRleHR1cmVzIHRoYXQgYXJlIHdpZGUgaW4ganVzdCBvbmUg
ZGltZW5zaW9uIGNhbiBzdGlsbCBiZSB1c2VkIHRvIHRlc3QgbWF4IFRFWFRVUkVfMkQgc2l6ZSBs
aW1pdCBldmVuIGlmIHdlIGNhbid0IGFsbG9jYXRlIHNwYWNlIGZvciBodWdlIHNxdWFyZSB0ZXh0
dXJlcy4KKy8vIFVzZSBhIGZhaXJseSBjb25zZXJ2YXRpdmUgbGltaXQgZm9yIHBvc2l0aXZlIHRl
c3QgY3ViZSBtYXAgc2l6ZSBzbyBPT00gaXMgYXZvaWRlZC4KK3J1bkNvbXByZXNzZWRUZXh0dXJl
U2l6ZUxpbWl0VGVzdChNYXRoLnBvdygyLCAzMCksIDIwNDgpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
d2ViZ2wtZGVidWctcmVuZGVyZXItaW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MDEyMjVkYjc1MzQw
MWU2N2RkNTFmYzc0YmQ5ZjVhNjRjZmMyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbApAQCAtMCwwICsxLDEwNCBAQAor77u/PCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
V2ViR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiBzdHlsZT0id2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyBzdGFuZGFyZCBkZXJp
dmF0aXZlcyAtLT4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlYnVnX3JlbmRl
cmVyX2luZm8gZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgiY2FudmFzIik7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOworCitpZiAoIWds
KSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBl
bHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgLy8g
UnVuIHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCisgICAgcnVuVGVzdERpc2FibGVkKCk7
CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91
bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIik7CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
Tm8gV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsK
KworICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9p
bmZvIGV4dGVuc2lvbiIpOworCisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QodHJ1ZSk7CisgICAg
ICAgIHJ1blRlc3RFbmFibGVkKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRU
ZXN0KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICB2YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9y
dGVkRXh0ZW5zaW9ucygpOworICAgIGlmIChzdXBwb3J0ZWQuaW5kZXhPZigiV0VCR0xfZGVidWdf
cmVuZGVyZXJfaW5mbyIpID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8gbGlzdGVk
IGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBs
aXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBub3QgbGlzdGVkIGFzIHN1
cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBub3QgbGlz
dGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2Fs
Iik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3REaXNhYmxlZCgpIHsK
KyAgICBkZWJ1ZygiVGVzdGluZyBlbnVtcyB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworCisg
ICAgLy8gVXNlIHRoZSBjb25zdGFudHMgZGlyZWN0bHkgYXMgd2UgZG9uJ3QgaGF2ZSB0aGUgZXh0
ZW5zaW9uCisKKyAgICB2YXIgVU5NQVNLRURfVkVORE9SX1dFQkdMID0gMHg5MjQ1OworICAgIGds
LmdldFBhcmFtZXRlcihVTk1BU0tFRF9WRU5ET1JfV0VCR0wpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCBzaG91bGQg
bm90IGJlIHF1ZXJ5YWJsZSBpZiBleHRlbnNpb24gaXMgZGlzYWJsZWQiKTsKKworICAgIHZhciBV
Tk1BU0tFRF9SRU5ERVJFUl9XRUJHTCA9IDB4OTI0NjsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoVU5N
QVNLRURfUkVOREVSRVJfV0VCR0wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfRU5VTSwgIlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMIHNob3VsZCBub3QgYmUgcXVlcnlh
YmxlIGlmIGV4dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworfQorCitmdW5jdGlvbiBydW5UZXN0RW5h
YmxlZCgpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBlbnVtcyB3aXRoIGV4dGVuc2lvbiBlbmFibGVk
Iik7CisKKyAgICBzaG91bGRCZSgiZXh0LlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCIsICIweDkyNDUi
KTsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoZXh0LlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJVTk1BU0tFRF9WRU5ET1JfV0VC
R0wgcXVlcnkgc2hvdWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZSIpOworCisgICAg
c2hvdWxkQmUoImV4dC5VTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCIsICIweDkyNDYiKTsKKyAgICBn
bC5nZXRQYXJhbWV0ZXIoZXh0LlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMIHF1
ZXJ5IHNob3VsZCBzdWNjZWVkIGlmIGV4dGVuc2lvbiBpcyBlbmFibGUiKTsKK30KKworZGVidWco
IiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvd2ViZ2wtZGVidWctc2hhZGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOTU3MzZhODYx
ZmU5M2JlZTlkODg3Yzk2NDIxMmNlYzI2ODg1MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3dlYmdsLWRlYnVnLXNoYWRlcnMuaHRtbApAQCAtMCwwICsxLDE0NCBAQAor77u/PCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgV2Vi
R0xfZGVidWdfc2hhZGVycyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHls
ZT0id2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyBzdGFuZGFyZCBkZXJpdmF0aXZlcyAt
LT4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVy
aWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlYnVnX3NoYWRlcnMgZXh0ZW5z
aW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7Cit2
YXIgZXh0ID0gbnVsbDsKK3ZhciBzaGFkZXIgPSBudWxsOwordmFyIHByb2dyYW0gPSBudWxsOwor
dmFyIGluZm8gPSBudWxsOwordmFyIHRyYW5zbGF0ZWRTb3VyY2U7Cit2YXIgbmV3VHJhbnNsYXRl
ZFNvdXJjZTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9l
cyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBl
eGlzdHMiKTsKKworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5
IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIldF
QkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2Vk
KCJObyBXRUJHTF9kZWJ1Z19zaGFkZXJzIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworCisg
ICAgICAgIHJ1blN1cHBvcnRlZFRlc3QoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdMX2RlYnVnX3NoYWRlcnMgZXh0ZW5z
aW9uIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuVGVz
dEVuYWJsZWQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5z
aW9uRW5hYmxlZCkgeworICAgIHZhciBzdXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKCk7CisgICAgaWYgKHN1cHBvcnRlZC5pbmRleE9mKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIikg
Pj0gMCkgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVz
dFBhc3NlZCgiV0VCR0xfZGVidWdfc2hhZGVycyBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRF
eHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4
dGVuc2lvbiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChl
eHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9kZWJ1Z19z
aGFkZXJzIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVk
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9kZWJ1
Z19zaGFkZXJzIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVk
IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVu
VGVzdEVuYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgZnVuY3Rpb24gd2l0aCBleHRlbnNp
b24gZW5hYmxlZCIpOworCisgICAgdmFyIHNoYWRlckluZm9zID0gWworICAgICAgeworICAgICAg
ICBzb3VyY2U6ICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDAuMCwgMC4w
LCAxLjApOyB9IiwKKyAgICAgICAgdHlwZTogZ2wuVkVSVEVYX1NIQURFUgorICAgICAgfSwKKyAg
ICAgIHsKKyAgICAgICAgc291cmNlOiAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCwgMC4wLCAwLjAsIDEuMCk7IH0iLAorICAgICAgICB0eXBlOiBnbC5GUkFHTUVOVF9TSEFE
RVIKKyAgICAgIH0KKyAgICBdOworCisgICAgLy8gRG8gdGhpcyB0d2ljZSB0byB0ZXN0IGZvciBj
YWNoaW5nIGlzc3Vlcy4KKyAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgMjsgKytqaikgeworICAg
ICAgICBkZWJ1ZygicGFzczoiICsgKGpqICsgMSkpOworICAgICAgICBwcm9ncmFtID0gZ2wuY3Jl
YXRlUHJvZ3JhbSgpOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc2hhZGVySW5mb3Mu
bGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAgICBpbmZvID0gc2hhZGVySW5mb3NbaWldOworCisg
ICAgICAgICAgICBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoaW5mby50eXBlKTsKKworICAgICAg
ICAgICAgLy8gaWYgbm8gc291cmNlIGhhcyBiZWVuIGRlZmluZWQgb3IgY29tcGlsZVNoYWRlcigp
IGhhcyBub3QgYmVlbiBjYWxsZWQsCisgICAgICAgICAgICAvLyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlKCkgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBzaG91
bGRCZSgiZXh0LmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyKSIsICciIicpOworICAg
ICAgICAgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgaW5mby5zb3VyY2UpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImV4dC5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKHNoYWRlcikiLCAnIiIn
KTsKKyAgICAgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuQ09NUElMRV9TVEFU
VVMpIik7CisgICAgICAgICAgICB0cmFuc2xhdGVkU291cmNlID0gZXh0LmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2Uoc2hhZGVyKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiTm8gZ2wgZXJyb3Igc2hvdWxkIG9jY3VyIik7CisgICAgICAgICAgICBp
ZiAodHJhbnNsYXRlZFNvdXJjZSAmJiB0cmFuc2xhdGVkU291cmNlLmxlbmd0aCA+IDApIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgY2FsbGVkIGdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2UoKSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJDYWxsaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoKSBmYWlsZWQi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpOworICAgICAgICB9CisgICAgICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAg
ICAgICBzaG91bGRCZVRydWUoImdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElO
S19TVEFUVVMpIik7CisgICAgfQorCisgICAgLy8gVGVzdCBjaGFuZ2luZyB0aGUgc291cmNlLiBN
YWtlIHN1cmUgd2UgZ2V0IHRoZSBjb3JyZWN0IHNvdXJjZSBlYWNoIHRpbWUuCisgICAgZGVidWco
InRlc3QgY2hhbmdpbmcgc291cmNlIik7CisgICAgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGds
LkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgInZvaWQgbWFp
bigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNChnbF9GcmFnQ29vcmQueCwgMC4wLCAwLjAsIDEuMCk7
IH0iKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgc2hvdWxkQmVUcnVlKCJn
bC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykiKTsKKyAgICBz
aG91bGRUaHJvdygiZXh0LmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UobnVsbCkiKTsKKyAgICB0
cmFuc2xhdGVkU291cmNlID0gZXh0LmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsK
KyAgICBzaG91bGRCZVRydWUoJ3RyYW5zbGF0ZWRTb3VyY2UgJiYgdHJhbnNsYXRlZFNvdXJjZS5p
bmRleE9mKCJnbF9GcmFnQ29vcmQiKSA+PSAwJyk7CisgICAgLy8gY2hhbmdlIHRoZSBzb3VyY2Ug
YnV0IGRvbid0IGNvbXBpbGUuCisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgInZvaWQgbWFp
bigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOyB9Iik7CisgICAg
Ly8gdGhlIHNvdXJjZSBzaG91bGQgTk9UIGNoYW5nZS4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFz
IHRoZSBvbGQgc291cmNlLgorICAgIG5ld1RyYW5zbGF0ZWRTb3VyY2UgPSBleHQuZ2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZShzaGFkZXIpOworICAgIHNob3VsZEJlKCduZXdUcmFuc2xhdGVkU291
cmNlJywgJ3RyYW5zbGF0ZWRTb3VyY2UnKTsKKyAgICAvLyBub3cgY29tcGlsZS4KKyAgICBnbC5j
b21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRTaGFkZXJQYXJh
bWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykiKTsKKyAgICAvLyB0aGUgc291cmNlIHNo
b3VsZCBoYXZlIGNoYW5nZS4KKyAgICBuZXdUcmFuc2xhdGVkU291cmNlID0gZXh0LmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsKKyAgICBzaG91bGROb3RCZSgnbmV3VHJhbnNsYXRl
ZFNvdXJjZScsICd0cmFuc2xhdGVkU291cmNlJyk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmds
LWRlcHRoLXRleHR1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjMxOGNjMWQzNWM3ZTE3NjRjNmRlMTU5
YTkzOTg3NDUzOTU1ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZXB0
aC10ZXh0dXJlLmh0bWwKQEAgLTAsMCArMSwzNzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHRpdGxlPldlYkdMIFdFQkdMX2RlcHRoX3RleHR1cmUgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
Owordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTsK
K3VuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247Cit2b2lkIG1haW4oKQoreworICAgIHZlYzIgdGV4
Y29vcmQgPSAoZ2xfRnJhZ0Nvb3JkLnh5IC0gdmVjMigwLjUpKSAvICh1X3Jlc29sdXRpb24gLSB2
ZWMyKDEuMCkpOworICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHRleGNv
b3JkKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9
IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0
aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uLCBpZiBpdCBpcyBh
dmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7YW50aWFsaWFzOiBmYWxzZX0pOwordmFyIHBy
b2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOwordmFyIGV4dCA9IG51bGw7Cit2YXIg
dmFvID0gbnVsbDsKK3ZhciB0ZXg7Cit2YXIgbmFtZTsKK3ZhciBzdXBwb3J0ZWRGb3JtYXRzOwor
dmFyIGNhbnZhczI7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRl
eHQgZXhpc3RzIik7CisKKyAgICAvLyBSdW4gdGVzdHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQK
KyAgICBydW5UZXN0RGlzYWJsZWQoKTsKKworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5k
IHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQgPSB3dHUu
Z2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJXRUJHTF9kZXB0aF90ZXh0dXJlIik7
CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gV0VCR0xfZGVwdGhfdGV4
dHVyZSBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVz
dChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5
IGVuYWJsZWQgV0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24iKTsKKworICAgICAgICBydW5T
dXBwb3J0ZWRUZXN0KHRydWUpOworICAgICAgICBydW5UZXN0RXh0ZW5zaW9uKHRydWUpOworICAg
ICAgICBydW5UZXN0RXh0ZW5zaW9uKGZhbHNlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blN1
cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBuYW1lID0gd3R1LmdldFN1
cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VCR0xfZGVwdGhfdGV4dHVy
ZSIpOworICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKGV4dGVuc2lv
bkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIldFQkdMX2RlcHRoX3RleHR1cmUg
bGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBs
aXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBub3QgbGlzdGVkIGFzIHN1cHBvcnRl
ZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBub3QgbGlzdGVkIGFzIHN1cHBv
cnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAg
IH0KKyAgICB9Cit9CisKKworZnVuY3Rpb24gcnVuVGVzdERpc2FibGVkKCkgeworICAgIGRlYnVn
KCJUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworCisgICAg
dmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5JTlZB
TElEX0VOVU0sIGdsLklOVkFMSURfVkFMVUVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAx
LCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX1NIT1JULCBudWxsKScpOwor
ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5JTlZBTElEX0VOVU0sIGdsLklO
VkFMSURfVkFMVUVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBU
SF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCknKTsKK30KKworCitmdW5jdGlvbiBk
dW1wSXQoZ2wsIHJlcywgbXNnKSB7CisgIHJldHVybjsgIC8vIGNvbW1lbnQgb3V0IHRvIGRlYnVn
CisgIGRlYnVnKG1zZyk7CisgIHZhciBhY3R1YWxQaXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMg
KiByZXMgKiA0KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYWN0dWFsUGl4ZWxzKTsKKworICBmb3IgKHZhciB5eSA9IDA7IHl5IDwg
cmVzOyArK3l5KSB7CisgICAgdmFyIHN0cnMgPSBbXTsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4
IDwgcmVzOyArK3h4KSB7CisgICAgICB2YXIgYWN0dWFsID0gKHl5ICogcmVzICsgeHgpICogNDsK
KyAgICAgIHN0cnMucHVzaCgiKCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsXSArICIsIiArIGFjdHVh
bFBpeGVsc1thY3R1YWwrMV0gKyAiLCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMl0gKyAiLCIg
KyBhY3R1YWxQaXhlbHNbYWN0dWFsICsgM10gKyAiKSIpOworICAgIH0KKyAgICBkZWJ1ZyhzdHJz
LmpvaW4oIiAiKSk7CisgIH0KK30KK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24odW5wYWNrRmxp
cFkpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBXRUJHTF9kZXB0aF90ZXh0dXJlLiBVTlBBQ0tfRkxJ
UF9ZX1dFQkdMOiAiICsgdW5wYWNrRmxpcFkpOworCisgICAgY29uc3QgcmVzID0gMjsKKyAgICBj
b25zdCBkZXN0UmVzID0gNDsKKworICAgIC8vIG1ha2UgY2FudmFzIGZvciB0ZXN0aW5nLgorICAg
IGNhbnZhczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMy
LndpZHRoID0gcmVzOworICAgIGNhbnZhczIuaGVpZ2h0ID0gcmVzOworICAgIHZhciBjdHggPSBj
YW52YXMyLmdldENvbnRleHQoIjJkIik7CisgICAgY3R4LmZpbGxTdHlsZSA9ICJibHVlIjsKKyAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpOworCisg
ICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRl
ciddLCBbJ2FfcG9zaXRpb24nXSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBn
bC51bmlmb3JtMmYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3Jlc29sdXRpb24i
KSwgZGVzdFJlcywgZGVzdFJlcyk7CisKKyAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2wu
YnVmZmVyRGF0YSgKKyAgICAgICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgICBuZXcgRmxvYXQz
MkFycmF5KAorICAgICAgICAgICAgWyAgIDEsICAxLCAgMSwKKyAgICAgICAgICAgICAgIC0xLCAg
MSwgIDAsCisgICAgICAgICAgICAgICAtMSwgLTEsIC0xLAorICAgICAgICAgICAgICAgIDEsICAx
LCAgMSwKKyAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsCisgICAgICAgICAgICAgICAgMSwgLTEs
ICAwLAorICAgICAgICAgICAgXSksCisgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAs
IDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfRkxJUF9ZX1dFQkdMLCB1bnBhY2tGbGlwWSk7CisKKyAgICB2YXIgdHlwZXMgPSBbCisgICAg
ICAgIHtvYmo6ICdnbCcsICBhdHRhY2htZW50OiAnREVQVEhfQVRUQUNITUVOVCcsICAgICAgICAg
Zm9ybWF0OiAnREVQVEhfQ09NUE9ORU5UJywgdHlwZTogJ1VOU0lHTkVEX1NIT1JUJywgICAgICAg
ICAgZGF0YTogJ25ldyBVaW50MTZBcnJheSgxKScsIGRlcHRoQml0czogIjE2In0sCisgICAgICAg
IHtvYmo6ICdnbCcsICBhdHRhY2htZW50OiAnREVQVEhfQVRUQUNITUVOVCcsICAgICAgICAgZm9y
bWF0OiAnREVQVEhfQ09NUE9ORU5UJywgdHlwZTogJ1VOU0lHTkVEX0lOVCcsICAgICAgICAgICAg
ZGF0YTogJ25ldyBVaW50MzJBcnJheSgxKScsIGRlcHRoQml0czogIjE2In0sCisgICAgICAgIHtv
Ymo6ICdleHQnLCBhdHRhY2htZW50OiAnREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UJywgZm9ybWF0
OiAnREVQVEhfU1RFTkNJTCcsICAgdHlwZTogJ1VOU0lHTkVEX0lOVF8yNF84X1dFQkdMJywgZGF0
YTogJ25ldyBVaW50MzJBcnJheSgxKScsIGRlcHRoQml0czogIjI0Iiwgc3RlbmNpbEJpdHM6ICI4
In0KKyAgICBdOworCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHR5cGVzLmxlbmd0aDsgKytp
aSkgeworICAgICAgICB2YXIgdHlwZUluZm8gPSB0eXBlc1tpaV07CisgICAgICAgIHZhciB0eXBl
ID0gdHlwZUluZm8udHlwZTsKKyAgICAgICAgdmFyIHR5cGVTdHIgPSB0eXBlSW5mby5vYmogKyAn
LicgKyB0eXBlOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoInRlc3Rpbmc6
ICIgKyB0eXBlKTsKKworICAgICAgICAvLyBjaGVjayB0aGF0IGN1YmVtYXBzIGFyZSBub3QgYWxs
b3dlZC4KKyAgICAgICAgdmFyIGN1YmVUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGN1YmVUZXgpOworICAgICAgICB2
YXIgdGFyZ2V0cyA9IFsKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJywK
KyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YJywKKyAgICAgICAgICAnVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9ZJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aJywKKyAg
ICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aJworICAgICAgICBdOworICAgICAg
ICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAg
ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAn
Z2wudGV4SW1hZ2UyRChnbC4nICsgdGFyZ2V0c1tpaV0gKyAnLCAwLCBnbC4nICsgdHlwZUluZm8u
Zm9ybWF0ICsgJywgMSwgMSwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsICcgKyB0eXBl
U3RyICsgJywgbnVsbCknKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBXZWJHTF9kZXB0
aF90ZXh0dXJlIGV4dGVuc2lvbiBzdXBwb3J0cyBib3RoIE5FQVJFU1QgYW5kCisgICAgICAgIC8v
IExJTkVBUiBmaWx0ZXJpbmcgZm9yIGRlcHRoIHRleHR1cmVzLCBldmVuIHRob3VnaCBMSU5FQVIK
KyAgICAgICAgLy8gZG9lc24ndCBoYXZlIG11Y2ggbWVhbmluZywgYW5kIGlzbid0IHN1cHBvcnRl
ZCBpbiBXZWJHTAorICAgICAgICAvLyAyLjAuIFN0aWxsLCB0ZXN0IGJvdGguCisgICAgICAgIHZh
ciBmaWx0ZXJNb2RlcyA9IFsKKyAgICAgICAgICAnTElORUFSJywKKyAgICAgICAgICAnTkVBUkVT
VCcKKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgZmlsdGVyTW9k
ZXMubGVuZ3RoOyArK2pqKSB7CisgICAgICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgICAgICBk
ZWJ1ZygndGVzdGluZyAnICsgZmlsdGVyTW9kZXNbampdICsgJyBmaWx0ZXJpbmcnKTsKKyAgICAg
ICAgICAgIHZhciBmaWx0ZXJNb2RlID0gZ2xbZmlsdGVyTW9kZXNbampdXTsKKworICAgICAgICAg
ICAgLy8gY2hlY2sgMmQgdGV4dHVyZXMuCisgICAgICAgICAgICB0ZXggPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwor
ICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBmaWx0ZXJNb2RlKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXJNb2RlKTsKKworICAgICAgICAgICAg
Ly8gdGVzdCBsZXZlbCA+IDAKKyAgICAgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAx
LCBnbC4nICsgdHlwZUluZm8uZm9ybWF0ICsgJywgMSwgMSwgMCwgZ2wuJyArIHR5cGVJbmZvLmZv
cm1hdCArICcsICcgKyB0eXBlU3RyICsgJywgbnVsbCknKTsKKworICAgICAgICAgICAgLy8gdGVz
dCB3aXRoIGRhdGEKKyAgICAgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC4n
ICsgdHlwZUluZm8uZm9ybWF0ICsgJywgMSwgMSwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCAr
ICcsICcgKyB0eXBlU3RyICsgJywgJyArIHR5cGVJbmZvLmRhdGEgKyAnKScpOworCisgICAgICAg
ICAgICAvLyB0ZXN0IHdpdGggY2FudmFzCisgICAgICAgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElE
X09QRVJBVElPTl0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLicgKyB0eXBl
SW5mby5mb3JtYXQgKyAnLCBnbC4nICsgdHlwZUluZm8uZm9ybWF0ICsgJywgJyArIHR5cGVTdHIg
ICsgJywgY2FudmFzMiknKTsKKworICAgICAgICAgICAgLy8gdGVzdCBjb3B5VGV4SW1hZ2UyRAor
ICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURfRU5V
TSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAnZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsIDAsIDAsIDEsIDEsIDApJyk7CisKKyAg
ICAgICAgICAgIC8vIHRlc3QgcmVhbCB0aGluZworICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgcmVzICsgJywgJyArIHJlcyArICcs
IDAsIGdsLicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgdHlwZVN0ciArICcsIG51bGwpJyk7
CisKKyAgICAgICAgICAgIC8vIHRlc3QgdGV4U3ViSW1hZ2UyRAorICAgICAgICAgICAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC50ZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIGdsLicgKyB0eXBlSW5mby5mb3Jt
YXQgKyAnLCAnICsgdHlwZVN0ciAgKyAnLCAnICsgdHlwZUluZm8uZGF0YSArICcpJyk7CisKKyAg
ICAgICAgICAgIC8vIHRlc3QgY29weVRleFN1YkltYWdlMkQKKyAgICAgICAgICAgIHd0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wuY29weVRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSknKTsKKworICAgICAg
ICAgICAgLy8gdGVzdCBnZW5lcmF0ZU1pcG1hcAorICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC5nZW5lcmF0ZU1pcG1hcChn
bC5URVhUVVJFXzJEKScpOworCisgICAgICAgICAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmJvKTsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVS
LCBnbFt0eXBlSW5mby5hdHRhY2htZW50XSwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKworICAg
ICAgICAgICAgLy8gRW5zdXJlIERFUFRIX0JJVFMgcmV0dXJucyA+PSAxNiBiaXRzIGZvciBVTlNJ
R05FRF9TSE9SVCBhbmQgVU5TSUdORURfSU5ULCA+PSAyNCBVTlNJR05FRF9JTlRfMjRfOF9XRUJH
TC4KKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0ZW5jaWwsIGVuc3VyZSBTVEVOQ0lMX0JJ
VFMgcmVwb3J0cyA+PSA4IGZvciBVTlNJR05FRF9JTlRfMjRfOF9XRUJHTC4KKyAgICAgICAgICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklU
UyknLCB0eXBlSW5mby5kZXB0aEJpdHMpOworICAgICAgICAgICAgaWYgKHR5cGVJbmZvLnN0ZW5j
aWxCaXRzID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnZ2wuZ2V0
UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUyknLCAnMCcpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnZ2wuZ2V0UGFyYW1l
dGVyKGdsLlNURU5DSUxfQklUUyknLCB0eXBlSW5mby5zdGVuY2lsQml0cyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIGNoZWNrIGlmIHRoZSBzcGVj
IGlzIHVwZGF0ZWQgdG8gcmVxdWlyZSB0aGVzZSBjb21iaW5hdGlvbnMgdG8gd29yay4KKyAgICAg
ICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyB0cnkgYWRkaW5nIGEgY29sb3IgYnVmZmVyLgorICAgICAgICAgICAgICAgIHZhciBjb2xvclRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBjb2xvclRleCk7CisgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7Cisg
ICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7Cisg
ICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCByZXMsIHJlcywgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBjb2xv
clRleCwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlKCdnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURScpOworCisgICAgICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgdGV4dHVyZSB0byByZW5k
ZXIgd2l0aCB3aGlsZSB3ZSByZXR1cm4gdG8gdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKworICAgICAgICAgICAgLyog
U2V0dXAgMngyIGRlcHRoIHRleHR1cmU6CisgICAgICAgICAgICAgKiAxIDAuNiAwLjgKKyAgICAg
ICAgICAgICAqIHwKKyAgICAgICAgICAgICAqIDAgMC4yIDAuNAorICAgICAgICAgICAgICogICAg
MC0tLTEKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgY29uc3QgZDAwID0gMC4yOworICAg
ICAgICAgICAgY29uc3QgZDAxID0gMC40OworICAgICAgICAgICAgY29uc3QgZDEwID0gMC42Owor
ICAgICAgICAgICAgY29uc3QgZDExID0gMC44OworCisgICAgICAgICAgICBnbC5lbmFibGUoZ2wu
U0NJU1NPUl9URVNUKTsKKworICAgICAgICAgICAgZ2wuc2Npc3NvcigwLCAwLCAxLCAxKTsKKyAg
ICAgICAgICAgIGdsLmNsZWFyRGVwdGgoZDAwKTsKKyAgICAgICAgICAgIGdsLmNsZWFyKGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICBnbC5zY2lzc29yKDEsIDAsIDEsIDEpOwor
ICAgICAgICAgICAgZ2wuY2xlYXJEZXB0aChkMTApOworICAgICAgICAgICAgZ2wuY2xlYXIoZ2wu
REVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgICAgIGdsLnNjaXNzb3IoMCwgMSwgMSwgMSk7
CisgICAgICAgICAgICBnbC5jbGVhckRlcHRoKGQwMSk7CisgICAgICAgICAgICBnbC5jbGVhcihn
bC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICAgICAgZ2wuc2Npc3NvcigxLCAxLCAxLCAx
KTsKKyAgICAgICAgICAgIGdsLmNsZWFyRGVwdGgoZDExKTsKKyAgICAgICAgICAgIGdsLmNsZWFy
KGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICBnbC5kaXNhYmxlKGdsLlNDSVNT
T1JfVEVTVCk7CisKKyAgICAgICAgICAgIC8vIHJlbmRlciB0aGUgZGVwdGggdGV4dHVyZS4KKyAg
ICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAg
ICAgICAgICBnbC5jYW52YXMud2lkdGggPSBkZXN0UmVzOworICAgICAgICAgICAgZ2wuY2FudmFz
LmhlaWdodCA9IGRlc3RSZXM7CisgICAgICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCBkZXN0UmVz
LCBkZXN0UmVzKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eCk7CisKKyAgICAgICAgICAgIGdsLmRpc2FibGUoZ2wuRElUSEVSKTsKKyAgICAgICAgICAgIGds
LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgICAgIGdsLmNsZWFyQ29sb3IoMSwgMCwg
MCwgMSk7CisgICAgICAgICAgICBnbC5jbGVhckRlcHRoKDEuMCk7CisgICAgICAgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAg
ICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgICAgICAgICAgIGR1
bXBJdChnbCwgcmVzLCAiLS1kZXB0aC0tIik7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQaXhl
bHMgPSBuZXcgVWludDhBcnJheShkZXN0UmVzICogZGVzdFJlcyAqIDQpOworICAgICAgICAgICAg
Z2wucmVhZFBpeGVscygwLCAwLCBkZXN0UmVzLCBkZXN0UmVzLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBhY3R1YWxQaXhlbHMpOworCisgICAgICAgICAgICBjb25zdCBlcHMgPSAwLjAwMjsK
KworICAgICAgICAgICAgbGV0IGV4cGVjdGVkTWluOworICAgICAgICAgICAgbGV0IGV4cGVjdGVk
TWF4OworICAgICAgICAgICAgaWYgKGZpbHRlck1vZGUgPT0gZ2wuTkVBUkVTVCkgeworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkTWluID0gWworICAgICAgICAgICAgICAgICAgICBkMDAsIGQwMCwg
ZDEwLCBkMTAsCisgICAgICAgICAgICAgICAgICAgIGQwMCwgZDAwLCBkMTAsIGQxMCwKKyAgICAg
ICAgICAgICAgICAgICAgZDAxLCBkMDEsIGQxMSwgZDExLAorICAgICAgICAgICAgICAgICAgICBk
MDEsIGQwMSwgZDExLCBkMTEKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIGV4
cGVjdGVkTWF4ID0gZXhwZWN0ZWRNaW4uc2xpY2UoKTsKKworICAgICAgICAgICAgICAgIGV4cGVj
dGVkTWluID0gZXhwZWN0ZWRNaW4ubWFwKHggPT4geCAtIGVwcyk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRNYXggPSBleHBlY3RlZE1heC5tYXAoeCA9PiB4ICsgZXBzKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRNaW4gPSBbCisgICAgICAgICAgICAg
ICAgICAgIGQwMC1lcHMsIGQwMCwgZDAwLCBkMTAtZXBzLAorICAgICAgICAgICAgICAgICAgICBk
MDAsIGQwMCwgZDAwLCBkMTAsCisgICAgICAgICAgICAgICAgICAgIGQwMCwgZDAwLCBkMDAsIGQx
MCwKKyAgICAgICAgICAgICAgICAgICAgZDAxLWVwcywgZDAxLCBkMDEsIGQxMS1lcHMsCisgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICBleHBlY3RlZE1heCA9IFsKKyAgICAgICAg
ICAgICAgICAgICAgZDAwK2VwcywgZDEwLCBkMTAsIGQxMCtlcHMsCisgICAgICAgICAgICAgICAg
ICAgIGQwMSwgZDExLCBkMTEsIGQxMSwKKyAgICAgICAgICAgICAgICAgICAgZDAxLCBkMTEsIGQx
MSwgZDExLAorICAgICAgICAgICAgICAgICAgICBkMDErZXBzLCBkMTEsIGQxMSwgZDExK2VwcywK
KyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZh
ciB5eSA9IDA7IHl5IDwgZGVzdFJlczsgKyt5eSkgeworICAgICAgICAgICAgICAgIGZvciAodmFy
IHh4ID0gMDsgeHggPCBkZXN0UmVzOyArK3h4KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHQgPSB4eCArIGRlc3RSZXMqeXk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhcyA9IGFj
dHVhbFBpeGVsc1s0KnRdIC8gMjU1LjA7IC8vIDRicHAKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgZU1pbiA9IGV4cGVjdGVkTWluW3RdOworICAgICAgICAgICAgICAgICAgICBjb25zdCBlTWF4
ID0gZXhwZWN0ZWRNYXhbdF07CisgICAgICAgICAgICAgICAgICAgIGxldCBmdW5jID0gdGVzdFBh
c3NlZDsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IGBBdCAke3h4fSwke3l5fSwg
ZXhwZWN0ZWQgd2l0aGluIFske2VNaW59LCR7ZU1heH1dLCB3YXMgJHt3YXMudG9GaXhlZCgzKX1g
CisgICAgICAgICAgICAgICAgICAgIGlmICh3YXMgPD0gZU1pbiB8fCB3YXMgPj0gZU1heCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IHRlc3RGYWlsZWQ7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyh0ZXh0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNoZWNrIGxpbWl0YXRpb25zCisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
ICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2xbdHlwZUlu
Zm8uYXR0YWNobWVudF0sIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgICAgICAgICAgdmFy
IGJhZEF0dGFjaG1lbnQgPSB0eXBlSW5mby5hdHRhY2htZW50ID09ICdERVBUSF9BVFRBQ0hNRU5U
JyA/ICdERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQnIDogJ0RFUFRIX0FUVEFDSE1FTlQnOworICAg
ICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICdnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuJyArIGJhZEF0dGFjaG1lbnQg
KyAnLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApJyk7CisgICAgICAgICAgICBzaG91bGROb3RCZSgn
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUnKTsKKyAgICAgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAnZ2wuY2xlYXIoZ2wuREVQVEhfQlVG
RkVSX0JJVCknKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgbnVsbCk7CisgICAgICAgICAgICBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICdnbC5OT19F
UlJPUicpOworICAgICAgICB9CisgICAgfQorfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy1icm9hZGNhc3QtcmV0dXJuLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3dlYmdsLWRyYXctYnVmZmVycy1icm9hZGNhc3QtcmV0dXJuLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDc3M2FlODYyMTQ5OTU4YzBhMjg3MWMwNzRmZGQyZWZlNzdlY2MyMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLWJyb2FkY2FzdC1yZXR1cm4uaHRtbApA
QCAtMCwwICsxLDEzOCBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgV0VCR0xfZHJhd19idWZmZXJzIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL3dlYmdsLWRyYXctYnVmZmVy
cy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij4g
PC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJS
ZWRXaXRoUmV0dXJuIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyNleHRlbnNpb24gR0xf
RVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5p
Zm9ybSBmbG9hdCB1X3plcm87Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgxLDAsMCwxKTsKKyAgICBpZiAodV96ZXJvIDwgMS4wKSB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLDAsMSwxKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlcldpdGhEaXNjYXJkIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
KyNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCB1X3plcm87Cit2b2lkIG1haW4oKSB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLDAsMCwxKTsKKyAgICBpZiAodV96ZXJvIDwgMS4wKSB7CisgICAg
ICAgIGRpc2NhcmQ7CisgICAgfQorICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwwLDEsMSk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IHZlcmlmaWVzIGdsX0ZyYWdDb2xvciBiZWluZyBicm9hZGNhc3RlZCB3aGVuIHVzaW5nIFdF
QkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVi
dWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjYW52YXMpOwordmFyIGV4dCA9IG51bGw7Cit2YXIgZHJhd0J1ZmZlcnNVdGlsczsKKworaWYg
KCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9
IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgIC8vIFF1
ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nl
c3MgaXQKKyAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKTsKKyAg
aWYgKCFleHQpIHsKKyAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9kcmF3X2J1ZmZlcnMgc3VwcG9y
dCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IGVuYWJsZWQgV0VCR0xfZHJhd19idWZmZXJzIGV4dGVuc2lvbiIpOworICAgIGRyYXdC
dWZmZXJzVXRpbHMgPSBXZWJHTERyYXdCdWZmZXJzVXRpbHMoZ2wsIGV4dCk7CisgICAgcnVuRHJh
d1Rlc3RzKCk7CisgIH0KK30KKworZnVuY3Rpb24gcnVuRHJhd1Rlc3RzKCkgeworICBkZWJ1Zygi
Iik7CisgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgdmFyIG1heFVzYWJs
ZSA9IGRyYXdCdWZmZXJzVXRpbHMuZ2V0TWF4VXNhYmxlQ29sb3JBdHRhY2htZW50cygpOworICB2
YXIgYnVmcyA9IGRyYXdCdWZmZXJzVXRpbHMubWFrZUNvbG9yQXR0YWNobWVudEFycmF5KG1heFVz
YWJsZSk7CisKKyAgdmFyIHdpZHRoID0gNjQ7CisgIHZhciBoZWlnaHQgPSA2NDsKKyAgdmFyIGF0
dGFjaG1lbnRzID0gW107CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBtYXhVc2FibGU7ICsraWkp
IHsKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOwor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGds
LkNMQU1QX1RPX0VER0UpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCArIGlpLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICAgIGF0dGFjaG1l
bnRzLnB1c2goeworICAgICAgdGV4dHVyZTogdGV4CisgICAgfSk7CisgIH0KKworICBkZWJ1Zygi
dGVzdCB0aGF0IGdsX0ZyYWdDb2xvciBicm9hZGNhc3RzIGlmIGV4dGVuc2lvbiBpcyBlbmFibGVk
IGluIGZyYWdtZW50IHNoYWRlciBhbmQgZnJhZ21lbnQgc2hhZGVyIG1haW4gcmV0dXJucyBpbiB0
aGUgbWlkZGxlIik7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
ICBleHQuZHJhd0J1ZmZlcnNXRUJHTChidWZzKTsKKyAgdmFyIHJlZFByb2dyYW1XaXRoUmV0dXJu
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3d0dS5zaW1wbGVWZXJ0ZXhTaGFkZXIsICJmc2hhZGVy
UmVkV2l0aFJldHVybiJdLCBbInZQb3NpdGlvbiJdLCB1bmRlZmluZWQsIHRydWUpOworICBzaG91
bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUiKTsKKyAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIGdsLnVzZVByb2dyYW0ocmVkUHJvZ3JhbVdp
dGhSZXR1cm4pOworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBkcmF3Iik7CisKKyAgZHJhd0J1ZmZlcnNVdGlscy5j
aGVja0F0dGFjaG1lbnRzRm9yQ29sb3IoYXR0YWNobWVudHMsIFsyNTUsIDAsIDAsIDI1NV0pOwor
CisgIGRlYnVnKCJ0ZXN0IHRoYXQgbm9uZSBvZiB0aGUgYXR0YWNobWVudHMgYXJlIHdyaXR0ZW4g
aW4gY2FzZSB0aGUgZnJhZ21lbnQgc2hhZGVyIGRpc2NhcmRzIik7CisgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICBleHQuZHJhd0J1ZmZlcnNXRUJHTChidWZzKTsK
KyAgdmFyIHByb2dyYW1XaXRoRGlzY2FyZCA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFt3dHUuc2lt
cGxlVmVydGV4U2hhZGVyLCAiZnNoYWRlcldpdGhEaXNjYXJkIl0sIFsidlBvc2l0aW9uIl0sIHVu
ZGVmaW5lZCwgdHJ1ZSk7CisgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICBnbC51c2VQcm9ncmFtKHByb2dyYW1XaXRoRGlzY2Fy
ZCk7CisgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImFmdGVyIGRyYXciKTsKKworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0
YWNobWVudHNGb3JDb2xvcihhdHRhY2htZW50cywgWzAsIDAsIDAsIDBdKTsKKworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmIpOworICBhdHRhY2ht
ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGF0dGFjaG1lbnQpIHsKKyAgICBnbC5kZWxldGVUZXh0dXJl
KGF0dGFjaG1lbnQudGV4dHVyZSk7CisgIH0pOworICBnbC5kZWxldGVQcm9ncmFtKHJlZFByb2dy
YW1XaXRoUmV0dXJuKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtV2l0aERpc2NhcmQpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLWZyYW1lYnVmZmVy
LXVuc3VwcG9ydGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy1mcmFtZWJ1
ZmZlci11bnN1cHBvcnRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NjZhM2MzOGI4YTk1NTI0MGQxZjdh
MTIwYzg0YzZkZDkxZGVlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRy
YXctYnVmZmVycy1mcmFtZWJ1ZmZlci11bnN1cHBvcnRlZC5odG1sCkBAIC0wLDAgKzEsMTI2IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBXRUJHTF9kcmF3X2J1ZmZlcnMgRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgVGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9
IjIiPiA8L2NhbnZhcz4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbDsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Cit2YXIgZmIxID0gbnVsbDsKK3ZhciBmYjIgPSBudWxsOworCitmdW5jdGlv
biBjaGVja0ZyYW1lYnVmZmVyKGV4cGVjdGVkKSB7CisgICAgdmFyIGFjdHVhbCA9IGdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGlmIChleHBlY3RlZC5pbmRl
eE9mKGFjdHVhbCkgPCAwKSB7CisgICAgICAgIHZhciBtc2cgPSAiY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyBleHBlY3RzIFsiOworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZXhw
ZWN0ZWQubGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAgICBtc2cgKz0gd3R1LmdsRW51bVRv
U3RyaW5nKGdsLCBleHBlY3RlZFtpbmRleF0pOworICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA8
IGV4cGVjdGVkLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIiwgIjsKKyAgICAgICAg
fQorICAgICAgICBtc2cgKz0gIl0sIHdhcyAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBhY3R1
YWwpOworICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFy
IG1zZyA9ICJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIGdvdCAiICsgd3R1LmdsRW51bVRvU3RyaW5n
KGdsLCBhY3R1YWwpICsKKyAgICAgICAgICAgICAgICAgICIgYXMgZXhwZWN0ZWQiOworICAgICAg
ICB0ZXN0UGFzc2VkKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0SW1hZ2VBdHRhY2hl
ZFR3b1BvaW50cygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNraW5nIGFuIGlt
YWdlIGlzIGF0dGFjaGVkIHRvIG1vcmUgdGhhbiBvbmUgY29sb3IgYXR0YWNobWVudCBpbiBhIGZy
YW1lYnVmZmVyLiIpOworCisgICAgdmFyIHRleDEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
dmFyIHRleDIgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4MSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELAorICAgICAg
ICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBsZXZlbAorICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAgICAgICAgMSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWR0aAorICAgICAgICAg
ICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBo
ZWlnaHQKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYm9yZGVyCisgICAgICAgICAgICAgICAgICBnbC5SR0JBLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdAorICAgICAgICAgICAgICAgICAg
Z2wuVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlCisgICAg
ICAgICAgICAgICAgICBuZXcgVWludDhBcnJheSg0KSk7ICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRhdGEKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgyKTsKKyAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KDQpKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlRleHR1cmUgY3JlYXRpb24gc2hvdWxkIHN1Y2NlZWQu
Iik7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMSk7CisgICAg
Z2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGV4dC5DT0xPUl9BVFRBQ0hN
RU5UMF9XRUJHTCwgZ2wuVEVYVFVSRV8yRCwgdGV4MSwgMCk7CisgICAgY2hlY2tGcmFtZWJ1ZmZl
cihbZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgZXh0LkNPTE9SX0FUVEFDSE1FTlQxX1dFQkdMLCBnbC5URVhUVVJF
XzJELCB0ZXgyLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURV0pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBleHQu
Q09MT1JfQVRUQUNITUVOVDJfV0VCR0wsIGdsLlRFWFRVUkVfMkQsIHRleDEsIDApOworICAgIGNo
ZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXSk7CisKKyAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIyKTsKKyAgICB2YXIgdGV4Q3ViZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXhDdWJl
KTsKKyAgICBmb3IgKHZhciB0YXJnZXQgPSBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7
IHRhcmdldCA8IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIDY7IHRhcmdldCsrKSB7
CisgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheSg0KSk7CisgICAgfQorICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBleHQuQ09MT1JfQVRUQUNITUVO
VDBfV0VCR0wsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgdGV4Q3ViZSwgMCk7Cisg
ICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZXh0LkNPTE9SX0FUVEFDSE1FTlQx
X1dFQkdMLCBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIHRleEN1YmUsIDApOworICAg
IGNoZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisgICAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGV4dC5DT0xPUl9BVFRBQ0hNRU5UMl9X
RUJHTCwgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCB0ZXhDdWJlLCAwKTsKKyAgICBj
aGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF0pOworCisgICAgLy8g
Q2xlYW4gdXAKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleDEpOworICAgIGdsLmRlbGV0ZVRleHR1
cmUodGV4Mik7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhDdWJlKTsKK30KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQuIik7CisKK3Nob3VsZEJlTm9u
TnVsbCgiZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAxKSIp
OworZmIxID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKK2ZiMiA9IGdsLmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CisKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2RyYXdfYnVmZmVycyIp
OworaWYgKCFleHQpIHsKKyAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9kcmF3X2J1ZmZlcnMgc3Vw
cG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7Cit9IGVsc2UgeworICAgIHZhciBidWZzID0gW2V4dC5D
T0xPUl9BVFRBQ0hNRU5UMF9XRUJHTCwgZXh0LkNPTE9SX0FUVEFDSE1FTlQxX1dFQkdMLCBleHQu
Q09MT1JfQVRUQUNITUVOVDJfV0VCR0xdOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmIxKTsKKyAgICBleHQuZHJhd0J1ZmZlcnNXRUJHTChidWZzKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBhYmxlIHRvIGNhbGwg
ZHJhd0J1ZmZlcnNXRUJHTCBzdWNjZXNzZnVsbHkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZiMik7CisgICAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVmcyk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0
byBjYWxsIGRyYXdCdWZmZXJzV0VCR0wgc3VjY2Vzc2Z1bGx5Iik7CisKKyAgICB0ZXN0UGFzc2Vk
KCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uIik7Cisg
ICAgdGVzdEltYWdlQXR0YWNoZWRUd29Qb2ludHMoKTsKKworICAgIGdsLmRlbGV0ZUZyYW1lYnVm
ZmVyKGZiMSk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmIyKTsKK30KKworZGVidWcoIiIp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy1tYXgtZHJhdy1idWZm
ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy1tYXgtZHJhdy1idWZmZXJz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODE4MWE2YTU4NzBiNDgyYTZmYzk3OGNmZTM5ZWZiNDU3NzA2ZGRi
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLW1heC1k
cmF3LWJ1ZmZlcnMuaHRtbApAQCAtMCwwICsxLDExOCBAQAor77u/PCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgV0VCR0xfZHJhd19idWZm
ZXJzIGdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSBDb25mb3JtYW5jZSBUZXN0PC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAgIGds
X1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgOiByZXF1aXJlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsK
KyAgICBnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10gPSB2ZWM0KDAuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJDb25zdGFudEluZGV4IiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KKyNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdEYXRhWyQo
Z2xfTWF4RHJhd0J1ZmZlcnMpXSA9IHZlYzQoMC4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnNoYWRlclRlc3RNYXhEcmF3QnVmZmVyc1ZhbHVlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KKyNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9ICgkKGds
X01heERyYXdCdWZmZXJzKSA9PSBnbF9NYXhEcmF3QnVmZmVycykgPyB2ZWM0KDAsIDEsIDAsIDEp
IDogdmVjNCgxLCAwLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBjb21waWxpbmcgdGhlIHNh
bWUgc2hhZGVyIHVzaW5nIEdMX0VYVF9kcmF3X2J1ZmZlcnMgdHdpY2Ugd2lsbCBoYXZlIHNpbWls
YXIgcmVzdWx0cyBvbiBib3RoIHJvdW5kcy4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwordmFyIGV4dCA9
IG51bGw7Cit2YXIgbWF4RHJhd0J1ZmZlcnM7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
V2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgi
V2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIldFQkdM
X2RyYXdfYnVmZmVycyIpOworICBpZiAoIWV4dCkgeworICAgIHRlc3RQYXNzZWQoIk5vIFdFQkdM
X2RyYXdfYnVmZmVycyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICBmaW5pc2hUZXN0
KCk7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgV0VC
R0xfZHJhd19idWZmZXJzIGV4dGVuc2lvbiIpOworICAgIG1heERyYXdCdWZmZXJzID0gZ2wuZ2V0
UGFyYW1ldGVyKGV4dC5NQVhfRFJBV19CVUZGRVJTX1dFQkdMKTsKKyAgICBydW5TaGFkZXJzVGVz
dCgpOworICAgIGZpbmlzaFRlc3QoKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0VmFsdWVPZk1h
eERyYXdCdWZmZXJzKCkgeworICBkZWJ1ZygiVGVzdCB0aGUgdmFsdWUgb2YgZ2xfTWF4RHJhd0J1
ZmZlcnMgaW4gYSBzaGFkZXIiKTsKKyAgdmFyIGZzaGFkZXIgPSB3dHUucmVwbGFjZVBhcmFtcyh3
dHUuZ2V0U2NyaXB0KCJmc2hhZGVyVGVzdE1heERyYXdCdWZmZXJzVmFsdWUiKSwgeyJnbF9NYXhE
cmF3QnVmZmVycyI6IG1heERyYXdCdWZmZXJzfSk7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgZnNoYWRlcl0sIFsiYV9wb3NpdGlvbiJdLCB1bmRlZmlu
ZWQsIHRydWUpOworICBleHBlY3RUcnVlKHByb2dyYW0gIT0gbnVsbCwgIlRlc3QgcHJvZ3JhbSBz
aG91bGQgY29tcGlsZSIpOworICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgIHd0dS5jbGVhckFu
ZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1
XSwgInNob3VsZCBiZSBncmVlbiB0byBpbmRpY2F0ZSB0aGF0IGdsX01heERyYXdCdWZmZXJzIGhh
ZCB0aGUgcmlnaHQgdmFsdWUiKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJy
b3JzIik7Cit9CisKK2Z1bmN0aW9uIHJ1blNpbmdsZVRlc3Qoc2hhZGVycywgaW5kZXhNc2cpIHsK
KyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBzaGFkZXJzLCBbImFfcG9zaXRp
b24iXSwgdW5kZWZpbmVkLCB0cnVlKTsKKyAgdmFyIHByb2dyYW1MaW5rZWRTdWNjZXNzZnVsbHkg
PSAocHJvZ3JhbSAhPSBudWxsKTsKKyAgZXhwZWN0VHJ1ZSghcHJvZ3JhbUxpbmtlZFN1Y2Nlc3Nm
dWxseSwgIlByb2dyYW0gd2hlcmUgZ2xfRnJhZ0RhdGEgaXMgaW5kZXhlZCBieSAiICsgaW5kZXhN
c2cgKyAiIHNob3VsZCBmYWlsIGNvbXBpbGF0aW9uLiIpOworICBnbC5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworfQorCitmdW5jdGlvbiBydW5TaGFkZXJzVGVzdCgpIHsKKyAgZGVidWcoIk1BWF9E
UkFXX0JVRkZFUlNfV0VCR0wgaXM6ICIgKyBtYXhEcmF3QnVmZmVycyk7CisKKyAgLy8gRm9yIHJl
ZmVyZW5jZSwgdXNlIGEgY29uc3RhbnQgb3V0LW9mLXJhbmdlIHBhcmFtZXRlciB0byB0ZXN0Ogor
ICBkZWJ1ZygiVGVzdCBpbmRleGluZyBnbF9GcmFnRGF0YSB3aXRoIHZhbHVlIG9mIE1BWF9EUkFX
X0JVRkZFUlNfV0VCR0wiKTsKKyAgdmFyIGZzaGFkZXIgPSB3dHUucmVwbGFjZVBhcmFtcyh3dHUu
Z2V0U2NyaXB0KCJmc2hhZGVyQ29uc3RhbnRJbmRleCIpLCB7ImdsX01heERyYXdCdWZmZXJzIjog
bWF4RHJhd0J1ZmZlcnN9KTsKKyAgcnVuU2luZ2xlVGVzdChbInZzaGFkZXIiLCBmc2hhZGVyXSwg
bWF4RHJhd0J1ZmZlcnMgKyAiICh2YWx1ZSBvZiBNQVhfRFJBV19CVUZGRVJTX1dFQkdMKSIpOwor
CisgIGRlYnVnKCIiKTsKKworICBkZWJ1ZygiVGVzdCBpbmRleGluZyBnbF9GcmFnRGF0YSB3aXRo
IGdsX01heERyYXdCdWZmZXJzIik7CisgIGRlYnVnKCJSZXBlYXQgdGhpcyB0ZXN0IHR3aWNlIGFz
IHRoYXQgaGFzIHJldmVhbGVkIGEgYnVnLiIpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsr
aSkgeworICAgIHJ1blNpbmdsZVRlc3QoWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgImdsX01heERy
YXdCdWZmZXJzIik7CisgIH0KKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisKKyAgZGVidWcoIiIpOworCisgIHRlc3RW
YWx1ZU9mTWF4RHJhd0J1ZmZlcnMoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExMWZkMWMzY2IyNTI4MjYw
YTVjYzZjNTlmOTU1Mzg1MzJkMTc2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2Vi
Z2wtZHJhdy1idWZmZXJzLmh0bWwKQEAgLTAsMCArMSw4MTIgQEAKK++7vzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFdFQkdMX2RyYXdf
YnVmZmVycyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90
ZXN0cy93ZWJnbC1kcmF3LWJ1ZmZlcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyNleHRl
bnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OwordW5pZm9ybSB2ZWM0IHVfY29sb3JzWyQobnVtRHJhd2luZ0J1ZmZlcnMpXTsKK3ZvaWQg
bWFpbigpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8ICQobnVtRHJhd2luZ0J1ZmZlcnMpOyAr
K2kpIHsKKyAgICAgICAgZ2xfRnJhZ0RhdGFbaV0gPSB1X2NvbG9yc1tpXTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJOb1dyaXRlIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KKyNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUKK3ZvaWQg
bWFpbigpIHsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclJlZCIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigp
IHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsMCwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJmc2hhZGVyUmVkV2l0aEV4dGVuc2lvbiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CisjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEs
MCwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyTWFjcm9EaXNhYmxlZCIg
dHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjaWZkZWYgR0xfRVhUX2RyYXdfYnVmZmVycwor
ICBiYWQgY29kZSBoZXJlCisjZW5kaWYKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBt
YWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwwLDAsMCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9ImZzaGFkZXJNYWNyb0VuYWJsZWQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorI2lmZGVmIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgI2lmIEdMX0VYVF9kcmF3X2J1ZmZl
cnMgPT0gMQorICAgICNkZWZpbmUgQ09ERQorICAjZWxzZQorICAgICNkZWZpbmUgQ09ERSB0aGlz
X2NvZGVfaXNfYmFkX2l0X3Nob3VsZF9oYXZlX2NvbXBpbGVkCisgICNlbmRpZgorI2Vsc2UKKyAg
ICNkZWZpbmUgQ09ERSB0aGlzX2NvZGVfaXNfYmFkX2l0X3Nob3VsZF9oYXZlX2NvbXBpbGVkCisj
ZW5kaWYKK0NPREUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwwLDAsMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXJCdWlsdEluQ29uc3RFbmFibGVkIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xv
ciA9IChnbF9NYXhEcmF3QnVmZmVycyA9PSAkKG51bURyYXdpbmdCdWZmZXJzKSkgPyB2ZWM0KDAs
MSwwLDEpIDogdmVjNCgxLDAsMCwxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkg
b2YgdGhlIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4i
KTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dChjYW52YXMpOwordmFyIGV4dCA9IG51bGw7Cit2YXIgcHJvZ3JhbVdpdGhNYXhE
cmF3QnVmZmVyc0VxdWFsT25lID0gbnVsbDsKK3ZhciBkcmF3QnVmZmVyc1V0aWxzOworbGV0IGZi
OworCit2YXIgZXh0ZW5zaW9uQ29uc3RhbnRzID0gWworICB7IG5hbWU6ICJNQVhfQ09MT1JfQVRU
QUNITUVOVFNfV0VCR0wiLCBlbnVtOiAweDhDREYsIGV4cGVjdGVkRm46IGZ1bmN0aW9uKHYpIHsg
cmV0dXJuIHYgPj0gNDsgfSwgcGFzc01zZzogIiBzaG91bGQgYmUgPj0gNCJ9LAorICB7IG5hbWU6
ICJNQVhfRFJBV19CVUZGRVJTX1dFQkdMIiwgICAgICBlbnVtOiAweDg4MjQsIGV4cGVjdGVkRm46
IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHYgPiAwOyB9LCBwYXNzTXNnOiAiIHNob3VsZCBiZSA+IDAi
fSwKKworICB7IG5hbWU6ICJDT0xPUl9BVFRBQ0hNRU5UMF9XRUJHTCIsICAgICBlbnVtOiAweDhD
RTAsIH0sCisgIHsgbmFtZTogIkNPTE9SX0FUVEFDSE1FTlQxX1dFQkdMIiwgICAgIGVudW06IDB4
OENFMSwgfSwKKyAgeyBuYW1lOiAiQ09MT1JfQVRUQUNITUVOVDJfV0VCR0wiLCAgICAgZW51bTog
MHg4Q0UyLCB9LAorICB7IG5hbWU6ICJDT0xPUl9BVFRBQ0hNRU5UM19XRUJHTCIsICAgICBlbnVt
OiAweDhDRTMsIH0sCisgIHsgbmFtZTogIkNPTE9SX0FUVEFDSE1FTlQ0X1dFQkdMIiwgICAgIGVu
dW06IDB4OENFNCwgfSwKKyAgeyBuYW1lOiAiQ09MT1JfQVRUQUNITUVOVDVfV0VCR0wiLCAgICAg
ZW51bTogMHg4Q0U1LCB9LAorICB7IG5hbWU6ICJDT0xPUl9BVFRBQ0hNRU5UNl9XRUJHTCIsICAg
ICBlbnVtOiAweDhDRTYsIH0sCisgIHsgbmFtZTogIkNPTE9SX0FUVEFDSE1FTlQ3X1dFQkdMIiwg
ICAgIGVudW06IDB4OENFNywgfSwKKyAgeyBuYW1lOiAiQ09MT1JfQVRUQUNITUVOVDhfV0VCR0wi
LCAgICAgZW51bTogMHg4Q0U4LCB9LAorICB7IG5hbWU6ICJDT0xPUl9BVFRBQ0hNRU5UOV9XRUJH
TCIsICAgICBlbnVtOiAweDhDRTksIH0sCisgIHsgbmFtZTogIkNPTE9SX0FUVEFDSE1FTlQxMF9X
RUJHTCIsICAgIGVudW06IDB4OENFQSwgfSwKKyAgeyBuYW1lOiAiQ09MT1JfQVRUQUNITUVOVDEx
X1dFQkdMIiwgICAgZW51bTogMHg4Q0VCLCB9LAorICB7IG5hbWU6ICJDT0xPUl9BVFRBQ0hNRU5U
MTJfV0VCR0wiLCAgICBlbnVtOiAweDhDRUMsIH0sCisgIHsgbmFtZTogIkNPTE9SX0FUVEFDSE1F
TlQxM19XRUJHTCIsICAgIGVudW06IDB4OENFRCwgfSwKKyAgeyBuYW1lOiAiQ09MT1JfQVRUQUNI
TUVOVDE0X1dFQkdMIiwgICAgZW51bTogMHg4Q0VFLCB9LAorICB7IG5hbWU6ICJDT0xPUl9BVFRB
Q0hNRU5UMTVfV0VCR0wiLCAgICBlbnVtOiAweDhDRUYsIH0sCisKKyAgeyBuYW1lOiAiRFJBV19C
VUZGRVIwX1dFQkdMIiwgICAgICAgICAgZW51bTogMHg4ODI1LCB9LAorICB7IG5hbWU6ICJEUkFX
X0JVRkZFUjFfV0VCR0wiLCAgICAgICAgICBlbnVtOiAweDg4MjYsIH0sCisgIHsgbmFtZTogIkRS
QVdfQlVGRkVSMl9XRUJHTCIsICAgICAgICAgIGVudW06IDB4ODgyNywgfSwKKyAgeyBuYW1lOiAi
RFJBV19CVUZGRVIzX1dFQkdMIiwgICAgICAgICAgZW51bTogMHg4ODI4LCB9LAorICB7IG5hbWU6
ICJEUkFXX0JVRkZFUjRfV0VCR0wiLCAgICAgICAgICBlbnVtOiAweDg4MjksIH0sCisgIHsgbmFt
ZTogIkRSQVdfQlVGRkVSNV9XRUJHTCIsICAgICAgICAgIGVudW06IDB4ODgyQSwgfSwKKyAgeyBu
YW1lOiAiRFJBV19CVUZGRVI2X1dFQkdMIiwgICAgICAgICAgZW51bTogMHg4ODJCLCB9LAorICB7
IG5hbWU6ICJEUkFXX0JVRkZFUjdfV0VCR0wiLCAgICAgICAgICBlbnVtOiAweDg4MkMsIH0sCisg
IHsgbmFtZTogIkRSQVdfQlVGRkVSOF9XRUJHTCIsICAgICAgICAgIGVudW06IDB4ODgyRCwgfSwK
KyAgeyBuYW1lOiAiRFJBV19CVUZGRVI5X1dFQkdMIiwgICAgICAgICAgZW51bTogMHg4ODJFLCB9
LAorICB7IG5hbWU6ICJEUkFXX0JVRkZFUjEwX1dFQkdMIiwgICAgICAgICBlbnVtOiAweDg4MkYs
IH0sCisgIHsgbmFtZTogIkRSQVdfQlVGRkVSMTFfV0VCR0wiLCAgICAgICAgIGVudW06IDB4ODgz
MCwgfSwKKyAgeyBuYW1lOiAiRFJBV19CVUZGRVIxMl9XRUJHTCIsICAgICAgICAgZW51bTogMHg4
ODMxLCB9LAorICB7IG5hbWU6ICJEUkFXX0JVRkZFUjEzX1dFQkdMIiwgICAgICAgICBlbnVtOiAw
eDg4MzIsIH0sCisgIHsgbmFtZTogIkRSQVdfQlVGRkVSMTRfV0VCR0wiLCAgICAgICAgIGVudW06
IDB4ODgzMywgfSwKKyAgeyBuYW1lOiAiRFJBV19CVUZGRVIxNV9XRUJHTCIsICAgICAgICAgZW51
bTogMHg4ODM0LCB9LAorXTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250
ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250
ZXh0IGV4aXN0cyIpOworCisgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZAor
ICBydW5FbnVtVGVzdERpc2FibGVkKCk7CisgIHJ1blNoYWRlcnNUZXN0RGlzYWJsZWQoKTsKKyAg
cnVuQXR0YWNobWVudFRlc3REaXNhYmxlZCgpOworCisgIGRlYnVnKCIiKTsKKworICAvLyBRdWVy
eSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNjZXNz
IGl0CisgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigiV0VCR0xfZHJhd19idWZmZXJzIik7CisgIGlm
ICghZXh0KSB7CisgICAgdGVzdFBhc3NlZCgiTm8gV0VCR0xfZHJhd19idWZmZXJzIHN1cHBvcnQg
LS0gdGhpcyBpcyBsZWdhbCIpOworCisgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAg
ZmluaXNoVGVzdCgpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBl
bmFibGVkIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24iKTsKKworICAgIGRyYXdCdWZmZXJz
VXRpbHMgPSBXZWJHTERyYXdCdWZmZXJzVXRpbHMoZ2wsIGV4dCk7CisgICAgcnVuU3VwcG9ydGVk
VGVzdCh0cnVlKTsKKyAgICBydW5FbnVtVGVzdEVuYWJsZWQoKTsKKyAgICBydW5TaGFkZXJzVGVz
dEVuYWJsZWQoKTsKKyAgICBydW5BdHRhY2htZW50VGVzdEVuYWJsZWQoKTsKKyAgICBydW5EcmF3
VGVzdHMoKTsKKyAgICBydW5QcmVzZXJ2ZVRlc3RzKCk7CisgIH0KK30KKworZnVuY3Rpb24gY3Jl
YXRlRXh0RHJhd0J1ZmZlcnNQcm9ncmFtKHNjcmlwdElkLCBzdWIpIHsKKyAgdmFyIGZzb3VyY2Ug
PSB3dHUuZ2V0U2NyaXB0KHNjcmlwdElkKTsKKyAgZnNvdXJjZSA9IHd0dS5yZXBsYWNlUGFyYW1z
KGZzb3VyY2UsIHN1Yik7CisgIHJldHVybiB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbd3R1LnNpbXBs
ZVZlcnRleFNoYWRlciwgZnNvdXJjZV0sIFsidlBvc2l0aW9uIl0sIHVuZGVmaW5lZCwgdHJ1ZSk7
Cit9CisKK2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICB2
YXIgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICBpZiAoc3VwcG9y
dGVkLmluZGV4T2YoIldFQkdMX2RyYXdfYnVmZmVycyIpID49IDApIHsKKyAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCkgeworICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZHJhd19idWZmZXJzIGxpc3Rl
ZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICB9IGVsc2Ug
eworICAgICAgdGVzdEZhaWxlZCgiV0VCR0xfZHJhd19idWZmZXJzIGxpc3RlZCBhcyBzdXBwb3J0
ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQiKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgIHRlc3RGYWlsZWQoIldFQkdMX2RyYXdfYnVmZmVy
cyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOwor
ICAgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9kcmF3X2J1ZmZlcnMgbm90IGxp
c3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdh
bCIpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBydW5FbnVtVGVzdERpc2FibGVkKCkgewor
ICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVuc2lv
biBkaXNhYmxlZCIpOworCisgIC8vIFVzZSB0aGUgY29uc3RhbnQgZGlyZWN0bHkgYXMgd2UgZG9u
J3QgaGF2ZSB0aGUgZXh0ZW5zaW9uCisgIGV4dGVuc2lvbkNvbnN0YW50cy5mb3JFYWNoKGZ1bmN0
aW9uKGMpIHsKKyAgICBpZiAoYy5leHBlY3RlZEZuKSB7CisgICAgICBnbC5nZXRQYXJhbWV0ZXIo
Yy5lbnVtKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwg
Yy5uYW1lICsgIiBzaG91bGQgbm90IGJlIHF1ZXJ5YWJsZSBpZiBleHRlbnNpb24gaXMgZGlzYWJs
ZWQiKTsKKyAgICB9CisgIH0pOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gcnVuRW51bVRl
c3RFbmFibGVkKCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIGVudW1zIHdpdGgg
ZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKworICBleHRlbnNpb25Db25zdGFudHMuZm9yRWFjaChmdW5j
dGlvbihjKSB7CisgICAgc2hvdWxkQmUoImV4dC4iICsgYy5uYW1lLCAiMHgiICsgYy5lbnVtLnRv
U3RyaW5nKDE2KSk7CisgICAgaWYgKGMuZXhwZWN0ZWRGbikgeworICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJiZWZvcmUgZ2V0UGFyYW1ldGVyIik7CisgICAgICBk
ZWJ1ZyhjLm5hbWUgKyAiOiAweCIgKyBleHRbYy5uYW1lXS50b1N0cmluZygxNikpOworICAgICAg
ZXhwZWN0VHJ1ZShjLmV4cGVjdGVkRm4oZ2wuZ2V0UGFyYW1ldGVyKGV4dFtjLm5hbWVdKSksICJn
bC5nZXRQYXJhbWV0ZXIoZXh0LiIgKyBjLm5hbWUgKyAiKSIgKyBjLnBhc3NNc2cpOworICAgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGMubmFtZSArICIgcXVlcnkgc2hv
dWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZWQiKTsKKyAgICB9CisgIH0pOworCisg
IHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfQ09MT1JfQVRUQUNITUVOVFNf
V0VCR0wpID49IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX0RSQVdfQlVGRkVSU19XRUJHTCkiKTsK
KworICBkZWJ1ZygiVGVzdGluZyBkcmF3QnVmZmVyc1dFQkdMIHdpdGggZGVmYXVsdCBkcmF3aW5n
IGJ1ZmZlciIpOworICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBf
V0VCR0wpIiwgImdsLkJBQ0siKTsKKyAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJleHQuZHJhd0J1ZmZlcnNXRUJHTChbXSkiKTsKKyAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJleHQuZHJhd0J1
ZmZlcnNXRUJHTChbZ2wuTk9ORSwgZ2wuTk9ORV0pIik7CisgIHd0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZXh0LmRyYXdCdWZmZXJzV0VCR0woW2V4
dC5DT0xPUl9BVFRBQ0hNRU5UMF9XRUJHTF0pIik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCkiLCAiZ2wuQkFDSyIpOworICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImV4dC5kcmF3QnVmZmVyc1dFQkdMKFtnbC5O
T05FXSkiKTsKKyAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihleHQuRFJBV19CVUZGRVIwX1dF
QkdMKSIsICJnbC5OT05FIik7CisgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZXh0LmRyYXdCdWZmZXJzV0VCR0woW2dsLkJBQ0tdKSIpOworICBzaG91bGRCZSgi
Z2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wpIiwgImdsLkJBQ0siKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8g
ZXJyb3JzIik7CisKKyAgZGVidWcoIlRlc3RpbmcgZHJhd0J1ZmZlcnMgYW5kIGdldFBhcmFtZXRl
ciB3aXRoIGJpbmRGcmFtZWJ1ZmZlciwgd2l0aG91dCBkcmF3aW5nLiIpOworICBmYiA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmIpOworICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wp
IiwgImdsLkNPTE9SX0FUVEFDSE1FTlQwIik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIo
ZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCsxKSIsICJnbC5OT05FIik7CisgIHd0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZXh0LmRyYXdCdWZmZXJzV0VCR0woW2dsLk5P
TkVdKSIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICBz
aG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wpIiwgImdsLkJB
Q0siKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIHNob3Vs
ZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCkiLCAiZ2wuTk9ORSIp
OworCisgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZXh0LmRy
YXdCdWZmZXJzV0VCR0woW2dsLk5PTkUsZ2wuQ09MT1JfQVRUQUNITUVOVDArMV0pIik7CisgIHNo
b3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCkiLCAiZ2wuTk9O
RSIpOworICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wr
MSkiLCAiZ2wuQ09MT1JfQVRUQUNITUVOVDArMSIpOworCisgIHd0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZXh0LmRyYXdCdWZmZXJzV0VCR0woW2dsLkNPTE9SX0FU
VEFDSE1FTlQwLGdsLkNPTE9SX0FUVEFDSE1FTlQwKzFdKSIpOworICBzaG91bGRCZSgiZ2wuZ2V0
UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wpIiwgImdsLkNPTE9SX0FUVEFDSE1FTlQw
Iik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCsx
KSIsICJnbC5DT0xPUl9BVFRBQ0hNRU5UMCsxIik7CisKKyAgd3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYikiKTsKKyAgc2hv
dWxkQmUoImdsLmdldFBhcmFtZXRlcihleHQuRFJBV19CVUZGRVIwX1dFQkdMKSIsICJnbC5CQUNL
Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTaGFkZXJzKHRlc3RzLCBzdWIpIHsKKyAgdGVzdHMuZm9y
RWFjaChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIHNoYWRlcnMgPSBbd3R1LnNpbXBsZVZlcnRl
eFNoYWRlciwgd3R1LnJlcGxhY2VQYXJhbXMod3R1LmdldFNjcmlwdCh0ZXN0LmZyYWdtZW50U2hh
ZGVyVGVtcGxhdGUpLCBzdWIpXTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIHNoYWRlcnMsIFsidlBvc2l0aW9uIl0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgdmFyIHBy
b2dyYW1MaW5rZWRTdWNjZXNzZnVsbHkgPSAocHJvZ3JhbSAhPSBudWxsKTsKKyAgICB2YXIgZXhw
ZWN0ZWRQcm9ncmFtVG9MaW5rU3VjY2Vzc2Z1bGx5ID0gKHRlc3QuZXhwZWN0RmFpbHVyZSA9PSB0
cnVlKTsKKyAgICBleHBlY3RUcnVlKHByb2dyYW1MaW5rZWRTdWNjZXNzZnVsbHkgIT0gZXhwZWN0
ZWRQcm9ncmFtVG9MaW5rU3VjY2Vzc2Z1bGx5LCB0ZXN0Lm1zZyk7CisgICAgZ2wuZGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1blNoYWRlcnNUZXN0RGlzYWJs
ZWQoKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoInRlc3Qgc2hhZGVycyBkaXNhYmxlZCIpOwor
CisgIHZhciBzdWIgPSB7bnVtRHJhd2luZ0J1ZmZlcnM6IDF9OworICB0ZXN0U2hhZGVycyhbCisg
ICAgeyBmcmFnbWVudFNoYWRlclRlbXBsYXRlOiAiZnNoYWRlck1hY3JvRGlzYWJsZWQiLAorICAg
ICAgbXNnOiAiR0xfRVhUX2RyYXdfYnVmZmVycyBzaG91bGQgbm90IGJlIGRlZmluZWQgaW4gR0xT
TCIsCisgICAgfSwKKyAgICB7IGZyYWdtZW50U2hhZGVyVGVtcGxhdGU6ICJmc2hhZGVyIiwKKyAg
ICAgIG1zZzogIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyBzaG91bGQgbm90IGJlIGFs
bG93ZWQgaW4gR0xTTCIsCisgICAgICBleHBlY3RGYWlsdXJlOiB0cnVlLAorICAgIH0sCisgIF0s
IHN1Yik7CisKKyAgcHJvZ3JhbVdpdGhNYXhEcmF3QnVmZmVyc0VxdWFsT25lID0gY3JlYXRlRXh0
RHJhd0J1ZmZlcnNQcm9ncmFtKCJmc2hhZGVyQnVpbHRJbkNvbnN0RW5hYmxlZCIsIHN1Yik7Cisg
IHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsK
KyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVu
Iik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxk
IGJlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBydW5TaGFkZXJzVGVzdEVuYWJsZWQoKSB7
CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoInRlc3Qgc2hhZGVycyBlbmFibGVkIik7CisKKyAgdmFy
IHN1YiA9IHtudW1EcmF3aW5nQnVmZmVyczogZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfRFJBV19C
VUZGRVJTX1dFQkdMKX07CisgIHRlc3RTaGFkZXJzKFsKKyAgICB7IGZyYWdtZW50U2hhZGVyVGVt
cGxhdGU6ICJmc2hhZGVyTWFjcm9FbmFibGVkIiwKKyAgICAgIG1zZzogIkdMX0VYVF9kcmF3X2J1
ZmZlcnMgc2hvdWxkIGJlIGRlZmluZWQgYXMgMSBpbiBHTFNMIiwKKyAgICB9LAorICAgIHsgZnJh
Z21lbnRTaGFkZXJUZW1wbGF0ZTogImZzaGFkZXIiLAorICAgICAgbXNnOiAiZnJhZ21lbnQgc2hh
ZGVyIGNvbnRhaW5pbmcgdGhlICNleHRlbnNpb24gZGlyZWN0aXZlIHNob3VsZCBjb21waWxlIiwK
KyAgICB9LAorICBdLCBzdWIpOworCisgIHZhciBwcm9ncmFtID0gY3JlYXRlRXh0RHJhd0J1ZmZl
cnNQcm9ncmFtKCJmc2hhZGVyQnVpbHRJbkNvbnN0RW5hYmxlZCIsIHN1Yik7CisgIHd0dS5zZXR1
cFVuaXRRdWFkKGdsKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNo
ZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisgIGds
LmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCisgIGRlYnVnKCIiKTsKKyAg
ZGVidWcoInRlc3QgdGhhdCBnbF9NYXhEcmF3QnVmZmVycyBpcyBmcm96ZW4gYXQgbGluayB0aW1l
IGFuZCBlbmFibGluZyB0aGUgZXh0ZW5zaW9uIHdvbid0IGNoYW5nZSBpdC4iKTsKKyAgZ2wudXNl
UHJvZ3JhbShwcm9ncmFtV2l0aE1heERyYXdCdWZmZXJzRXF1YWxPbmUpOworICB3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1
NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtV2l0aE1h
eERyYXdCdWZmZXJzRXF1YWxPbmUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gcnVuQXR0
YWNobWVudFRlc3REaXNhYmxlZCgpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdCBhdHRh
Y2htZW50IGRpc2FibGVkIik7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIHZh
ciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
ICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAgKyAxLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX0VOVU0sICJzaG91bGQgbm90IGJlIGFibGUgdG8gYXR0YWNoIHRvIGds
LkNPTE9SX0FUVEFDSE1FTlQxIik7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXgpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gbWFrZUFycmF5
KHNpemUsIHZhbHVlKSB7CisgIHZhciBhcnJheSA9IFtdCisgIGZvciAodmFyIGlpID0gMDsgaWkg
PCBzaXplOyArK2lpKSB7CisgICAgYXJyYXkucHVzaCh2YWx1ZSk7CisgIH0KKyAgcmV0dXJuIGFy
cmF5OworfQorCitmdW5jdGlvbiBydW5BdHRhY2htZW50VGVzdEVuYWJsZWQoKSB7CisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoInRlc3QgYXR0YWNobWVudCBlbmFibGVkIik7CisKKyAgdmFyIG1heERy
YXdpbmdCdWZmZXJzID0gZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfRFJBV19CVUZGRVJTX1dFQkdM
KTsKKyAgdmFyIG1heENvbG9yQXR0YWNobWVudHMgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19XRUJHTCk7CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKKyAgdmFyIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYik7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCArIG1heENvbG9yQXR0YWNobWVudHMsIGdsLlRFWFRVUkVfMkQsIHRleCwg
MCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgInNob3VsZCBu
b3QgYmUgYWJsZSB0byBhdHRhY2ggcGFzcyB0aGUgbWF4IGF0dGFjaG1lbnQgcG9pbnQ6IGdsLkNP
TE9SX0FUVEFDSE1FTlQwICsgIiArIG1heENvbG9yQXR0YWNobWVudHMpOworICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyBtYXhD
b2xvckF0dGFjaG1lbnRzIC0gMSwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBhdHRhY2ggdG8g
dGhlIG1heCBhdHRhY2htZW50IHBvaW50OiBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArICIgKyAobWF4
Q29sb3JBdHRhY2htZW50cyAtIDEpKTsKKyAgZXh0LmRyYXdCdWZmZXJzV0VCR0wobWFrZUFycmF5
KG1heERyYXdpbmdCdWZmZXJzLCBnbC5OT05FKSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gY2FsbCBkcmF3QnVmZmVyc1dFQkdMIHdp
dGggYXJyYXkgTk9ORSBvZiBzaXplICIgKyBtYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgdmFyIGJ1
ZnMgPSBkcmF3QnVmZmVyc1V0aWxzLm1ha2VDb2xvckF0dGFjaG1lbnRBcnJheShtYXhEcmF3aW5n
QnVmZmVycyk7CisgIGV4dC5kcmF3QnVmZmVyc1dFQkdMKGJ1ZnMpOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBhYmxlIHRvIGNhbGwgZHJhd0J1ZmZl
cnNXRUJHTCB3aXRoIGFycmF5IGF0dGFjaG1lbnRzIG9mIHNpemUgIiArIG1heENvbG9yQXR0YWNo
bWVudHMpOworICBidWZzWzBdID0gZ2wuTk9ORTsKKyAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVm
cyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFi
bGUgdG8gY2FsbCBkcmF3QnVmZmVyc1dFQkdMIHdpdGggbWl4ZWQgYXJyYXkgYXR0YWNobWVudHMg
b2Ygc2l6ZSAiICsgbWF4Q29sb3JBdHRhY2htZW50cyk7CisgIGlmIChtYXhEcmF3aW5nQnVmZmVy
cyA+IDEpIHsKKyAgICBidWZzWzBdID0gZXh0LkNPTE9SX0FUVEFDSE1FTlQxX1dFQkdMOworICAg
IGJ1ZnNbMV0gPSBleHQuQ09MT1JfQVRUQUNITUVOVDBfV0VCR0w7CisgICAgZXh0LmRyYXdCdWZm
ZXJzV0VCR0woYnVmcyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sICJzaG91bGQgbm90IGJlIGFibGUgdG8gY2FsbCBkcmF3QnVmZmVyc1dFQkdMIHdp
dGggb3V0IG9mIG9yZGVyIGF0dGFjaG1lbnRzIG9mIHNpemUgIiArIG1heENvbG9yQXR0YWNobWVu
dHMpOworICAgIHZhciBidWZzID0gZHJhd0J1ZmZlcnNVdGlscy5tYWtlQ29sb3JBdHRhY2htZW50
QXJyYXkoTWF0aC5mbG9vcihtYXhEcmF3aW5nQnVmZmVycyAvIDIpKTsKKyAgICBleHQuZHJhd0J1
ZmZlcnNXRUJHTChidWZzKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInNob3VsZCBiZSBhYmxlIHRvIGNhbGwgZHJhd0J1ZmZlcnNXRUJHTCB3aXRoIHNob3J0IGFy
cmF5IG9mIGF0dGFjaG1lbnRzIG9mIHNpemUgIiArIGJ1ZnMubGVuZ3RoKTsKKyAgfQorCisgIGds
LmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJv
cnMiKTsKK30KKworZnVuY3Rpb24gbWFrZUNvbG9yQnlJbmRleChpbmRleCkgeworICB2YXIgbG93
ID0gKGluZGV4IC0gMSkgJSAxNSArIDE7CisgIHZhciBoaWdoID0gKGluZGV4IC0gMSkgLyAxNTsK
KworICB2YXIgemVyb09yT25lID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiB2ID8gMSA6IDA7
CisgIH07CisKKyAgdmFyIG9uZU9yVHdvID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiB2ID8g
MiA6IDE7CisgIH0KKworICB2YXIgbWFrZUNvbXBvbmVudCA9IGZ1bmN0aW9uKGIwLCBiMSwgYjIp
IHsKKyAgICByZXR1cm4gTWF0aC5mbG9vcigyNTUgKiB6ZXJvT3JPbmUoYjApIC8gb25lT3JUd28o
YjEpIC8gb25lT3JUd28oYjIpKTsKKyAgfTsKKyAgcmV0dXJuIFsKKyAgICBtYWtlQ29tcG9uZW50
KGxvdyAmICgxIDw8IDApLCBoaWdoICYgKDEgPDwgMCksIGhpZ2ggJiAoMSA8PCA0KSksCisgICAg
bWFrZUNvbXBvbmVudChsb3cgJiAoMSA8PCAxKSwgaGlnaCAmICgxIDw8IDEpLCBoaWdoICYgKDEg
PDwgNSkpLAorICAgIG1ha2VDb21wb25lbnQobG93ICYgKDEgPDwgMiksIGhpZ2ggJiAoMSA8PCAy
KSwgaGlnaCAmICgxIDw8IDYpKSwKKyAgICBtYWtlQ29tcG9uZW50KGxvdyAmICgxIDw8IDMpLCBo
aWdoICYgKDEgPDwgMyksIGhpZ2ggJiAoMSA8PCA3KSksCisgIF07Cit9CisKK2Z1bmN0aW9uIHJ1
bkRyYXdUZXN0cygpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiLS0tLS0tLS0tIGRyYXcgdGVz
dHMgLS0tLS0tLS0tLS0iKTsKKyAgdmFyIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
dmFyIGZiMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIHZhciBoYWxmRkIxID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIGhhbGZGQjIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICB2YXIgZW5kc0ZCID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIG1pZGRsZUZC
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKworICB2YXIgbWF4RHJhd2luZ0J1ZmZlcnMgPSBn
bC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9EUkFXX0JVRkZFUlNfV0VCR0wpOworICB2YXIgbWF4VXNh
YmxlID0gZHJhd0J1ZmZlcnNVdGlscy5nZXRNYXhVc2FibGVDb2xvckF0dGFjaG1lbnRzKCk7Cisg
IHZhciBoYWxmID0gTWF0aC5mbG9vcihtYXhVc2FibGUgLyAyKTsKKyAgdmFyIGJ1ZnMgPSBkcmF3
QnVmZmVyc1V0aWxzLm1ha2VDb2xvckF0dGFjaG1lbnRBcnJheShtYXhVc2FibGUpOworICB2YXIg
bm9uZXMgPSBtYWtlQXJyYXkobWF4VXNhYmxlLCBnbC5OT05FKTsKKworICBbZmIsIGZiMiwgaGFs
ZkZCMSwgaGFsZkZCMiwgZW5kc0ZCLCBtaWRkbGVGQl0uZm9yRWFjaChmdW5jdGlvbihmYm8pIHsK
KyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBleHQuZHJh
d0J1ZmZlcnNXRUJHTChidWZzKTsKKyAgfSk7CisKKyAgdmFyIGNoZWNrUHJvZ3JhbSA9IHd0dS5z
ZXR1cFRleHR1cmVkUXVhZChnbCk7CisgIHZhciByZWRQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgW3d0dS5zaW1wbGVWZXJ0ZXhTaGFkZXIsICJmc2hhZGVyUmVkIl0sIFsidlBvc2l0aW9u
Il0pOworICB2YXIgcmVkUHJvZ3JhbVdpdGhFeHRlbnNpb24gPSB3dHUuc2V0dXBQcm9ncmFtKGds
LCBbd3R1LnNpbXBsZVZlcnRleFNoYWRlciwgImZzaGFkZXJSZWRXaXRoRXh0ZW5zaW9uIl0sIFsi
dlBvc2l0aW9uIl0pOworICB2YXIgZHJhd1Byb2dyYW0gPSBjcmVhdGVFeHREcmF3QnVmZmVyc1By
b2dyYW0oImZzaGFkZXIiLCB7bnVtRHJhd2luZ0J1ZmZlcnM6IG1heERyYXdpbmdCdWZmZXJzfSk7
CisgIHZhciB3aWR0aCA9IDY0OworICB2YXIgaGVpZ2h0ID0gNjQ7CisgIHZhciBhdHRhY2htZW50
cyA9IFtdOworICAvLyBNYWtlcyA2IGZyYW1lYnVmZmVycy4KKyAgLy8gZmIgYW5kIGZiMiBoYXZl
IGFsbCB0aGUgYXR0YWNobWVudHMuCisgIC8vIGhhbGZGQjEgaGFzIHRoZSBmaXJzdCBoYWxmIG9m
IHRoZSBhdHRhY2htZW50cworICAvLyBoYWxmRkIyIGhhcyB0aGUgc2Vjb25kIGhhbGYgb2YgdGhl
IGF0dGFjaG1lbnRzCisgIC8vIGVuZHNGQiBoYXMgdGhlIGZpcnN0IGFuZCBsYXN0IGF0dGFjaG1l
bnRzCisgIC8vIG1pZGRsZUZCIGhhcyBhbGwgYnV0IHRoZSBmaXJzdCBhbmQgbGFzdCBhdHRhY2ht
ZW50cworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbWF4VXNhYmxlOyArK2lpKSB7CisgICAgdmFy
IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXgpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwg
d2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
Lk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAgKyBpaSwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZiMik7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgaWksIGdsLlRFWFRVUkVfMkQsIHRleCwg
MCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBpaSA8IGhhbGYgPyBo
YWxmRkIxIDogaGFsZkZCMik7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgaWksIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCAoaWkgPT0gMCB8fCBpaSA9
PSAobWF4VXNhYmxlIC0gMSkpID8gZW5kc0ZCIDogbWlkZGxlRkIpOworICAgIGdsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIGlpLCBn
bC5URVhUVVJFXzJELCB0ZXgsIDApOworICAgIHZhciBsb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihkcmF3UHJvZ3JhbSwgInVfY29sb3JzWyIgKyBpaSArICJdIik7CisgICAgdmFyIGNv
bG9yID0gbWFrZUNvbG9yQnlJbmRleChpaSArIDEpOworICAgIHZhciBmbG9hdENvbG9yID0gW2Nv
bG9yWzBdIC8gMjU1LCBjb2xvclsxXSAvIDI1NSwgY29sb3JbMl0gLyAyNTUsIGNvbG9yWzNdIC8g
MjU1XTsKKyAgICBnbC51bmlmb3JtNGZ2KGxvY2F0aW9uLCBmbG9hdENvbG9yKTsKKyAgICBhdHRh
Y2htZW50cy5wdXNoKHsKKyAgICAgIHRleHR1cmU6IHRleCwKKyAgICAgIGNvbG9yOiBjb2xvcgor
ICAgIH0pOworICB9CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
ICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAi
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYjIpOworICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5G
UkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKworICB2YXIgZHJhd0Fu
ZENoZWNrQXR0YWNobWVudHMgPSBmdW5jdGlvbih0ZXN0RkIsIG1zZywgdGVzdEZuKSB7CisgICAg
ZGVidWcoInRlc3QgY2xlYXJpbmcgIiArIG1zZyk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIHRlc3RGQik7CisKKyAgICBhdHRhY2htZW50cy5mb3JFYWNoKGZ1bmN0
aW9uKGF0dGFjaG1lbnQsIGluZGV4KSB7CisgICAgICBkZWJ1ZygiYXR0YWNobWVudDogIiArIGlu
ZGV4ICsgIiA9ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGdsLmdldFBhcmFtZXRlcihleHQu
RFJBV19CVUZGRVIwX1dFQkdMICsgaW5kZXgpKSArCisgICAgICAgICAgICAiLCAiICsgd3R1Lmds
RW51bVRvU3RyaW5nKGdsLCBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgaW5kZXgsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpKSk7CisgICAgfSk7CisKKyAgICBpZiAoZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKKyAgICAgIGRlYnVnKCJmcmFtZWJ1ZmZlciBub3QgY29tcGxldGUiKTsKKyAgICAgIGRl
YnVnKCIiKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDbGVhciBhbGwgdGhlIGF0
dGFjaG1lbnRzCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjIpOwor
ICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgLy9kcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xv
ckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgIC8vICBy
ZXR1cm4gWzAsIDAsIDAsIDBdOworICAgIC8vfSk7CisgICAgLy9kZWJ1ZygiLS0iKTsKKworICAg
IC8vIENsZWFyIHNvbWUgYXR0YWNobWVudHMgdXNpbmcgdGVzdEZCCisgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCB0ZXN0RkIpOworCisgICAgZ2wuY2xlYXJDb2xvcigwLCAx
LCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3QnVm
ZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlv
bihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgcmV0dXJuIHRlc3RGbihhdHRhY2htZW50LCBp
bmRleCkgPyBbMCwgMjU1LCAwLCAyNTVdIDogWzAsIDAsIDAsIDBdOworICAgIH0pOworCisgICAg
ZGVidWcoInRlc3QgZHJhd2luZyB0byAiICsgbXNnKTsKKworICAgIC8vIERyYXcgdG8gc29tZSBh
dHRhY2htZW50cyB1c2luZyB0ZXN0RkIKKyAgICBnbC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsK
KyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRlc3RGQik7CisgICAgd3R1
LmRyYXdVbml0UXVhZChnbCk7CisKKyAgICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVu
dHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgewor
ICAgICAgcmV0dXJuIHRlc3RGbihhdHRhY2htZW50LCBpbmRleCkgPyBhdHRhY2htZW50LmNvbG9y
IDogWzAsIDAsIDAsIDBdOworICAgIH0pOworICB9OworCisgIGdsLnVzZVByb2dyYW0oZHJhd1By
b2dyYW0pOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7CisgIGV4
dC5kcmF3QnVmZmVyc1dFQkdMKGJ1ZnMpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiKTsKKyAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVmcyk7CisKKyAgd3R1LmRyYXdV
bml0UXVhZChnbCk7CisKKyAgZGVidWcoInRlc3QgdGhhdCBlYWNoIHRleHR1cmUgZ290IHRoZSBj
b3JyZWN0IGNvbG9yLiIpOworCisgIGRyYXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0Zv
ckNvbG9yKGF0dGFjaG1lbnRzKTsKKworICBkZWJ1ZygidGVzdCBjbGVhcmluZyBjbGVhcnMgYWxs
IHRoZSB0ZXh0dXJlcyIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
KTsKKyAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisKKyAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3Io
YXR0YWNobWVudHMsIFswLCAyNTUsIDAsIDI1NV0pOworCisgIGRlYnVnKCJ0ZXN0IGEgZnJhZ21l
bnQgc2hhZGVyIHdyaXRpbmcgdG8gbmVpdGhlciBnbF9GcmFnQ29sb3Igbm9yIGdsX0ZyYWdEYXRh
IGRvZXMgbm90IHRvdWNoIGF0dGFjaG1lbnRzIik7CisgIHZhciBub1dyaXRlUHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFt3dHUuc2ltcGxlVmVydGV4U2hhZGVyLCAiZnNoYWRlck5vV3Jp
dGUiXSwgWyJ2UG9zaXRpb24iXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiU2hvdWxkIGJlIG5vIEdMIGVycm9yIHNldHRpbmcgdXAgdGhlIHByb2dyYW0iKTsKKyAg
aWYgKCFub1dyaXRlUHJvZ3JhbSkgeworICAgIHRlc3RGYWlsZWQoIlNldHVwIGEgcHJvZ3JhbSB3
aGVyZSBmcmFnbWVudCBzaGFkZXIgd3JpdGVzIG5vdGhpbmcgZmFpbGVkIik7CisgIH0gZWxzZSB7
CisgICAgZ2wudXNlUHJvZ3JhbShub1dyaXRlUHJvZ3JhbSk7CisgICAgd3R1LmRyYXdVbml0UXVh
ZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJBY3RpdmUgZHJhdyBidWZmZXJzIHdpdGggbWlzc2luZyBmcmFnIG91dHB1dHMuIik7CisgICAg
ZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3IoYXR0YWNobWVudHMsIFsw
LCAyNTUsIDAsIDI1NV0pOworICAgIGdsLmRlbGV0ZVByb2dyYW0obm9Xcml0ZVByb2dyYW0pOwor
ICB9CisKKyAgZGVidWcoInRlc3QgdGhhdCBOT05FIGRyYXdzIG5vdGhpbmciKTsKKyAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIGV4dC5kcmF3QnVmZmVyc1dFQkdM
KG5vbmVzKTsKKyAgZ2wudXNlUHJvZ3JhbShyZWRQcm9ncmFtKTsKKyAgd3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKKworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JD
b2xvcihhdHRhY2htZW50cywgWzAsIDI1NSwgMCwgMjU1XSk7CisKKyAgZGVidWcoInRlc3QgdGhh
dCBnbF9GcmFnQ29sb3IgZG9lcyBub3QgYnJvYWRjYXN0IHVubGVzcyBleHRlbnNpb24gaXMgZW5h
YmxlZCBpbiBmcmFnbWVudCBzaGFkZXIiKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYik7CisgIGV4dC5kcmF3QnVmZmVyc1dFQkdMKGJ1ZnMpOworICBnbC51c2VQcm9n
cmFtKHJlZFByb2dyYW0pOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgd3R1LmRyYXdVbml0UXVhZChnbCk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQWN0aXZlIGRy
YXcgYnVmZmVycyB3aXRoIG1pc3NpbmcgZnJhZyBvdXRwdXRzLiIpOworICBnbC5jb2xvck1hc2so
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8g
ZXJyb3JzIHdoZW4gYWxsIDQgY2hhbm5lbHMgb2YgY29sb3IgbWFzayBhcmUgZGlzYWJsZWQuIik7
CisgIGdsLmNvbG9yTWFzayhmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgd3R1LmRyYXdV
bml0UXVhZChnbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAicGFydGlhbGx5IGRpYWJsZWQgY29sb3IgbWFzayBzaGFsbCBoYXZlIG5vIGltcGFjdC4i
KTsKKyAgZ2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCisgIGRlYnVnKCJ0
ZXN0IHRoYXQgZ2xfRnJhZ0NvbG9yIGJyb2FkY2FzdHMgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZWQg
aW4gZnJhZ21lbnQgc2hhZGVyIik7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZXh0LmRyYXdCdWZm
ZXJzV0VCR0woYnVmcyk7CisgIGdsLnVzZVByb2dyYW0ocmVkUHJvZ3JhbVdpdGhFeHRlbnNpb24p
OworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0
YWNobWVudHNGb3JDb2xvcihhdHRhY2htZW50cywgWzI1NSwgMCwgMCwgMjU1XSk7CisKKyAgaWYg
KG1heFVzYWJsZSA+IDEpIHsKKyAgICAvLyBGaXJzdCBoYWxmIG9mIGNvbG9yIGJ1ZmZlcnMgZGlz
YWJsZS4KKyAgICB2YXIgYnVmczEgPSBkcmF3QnVmZmVyc1V0aWxzLm1ha2VDb2xvckF0dGFjaG1l
bnRBcnJheShtYXhVc2FibGUpOworICAgIC8vIFNlY29uZCBoYWxmIG9mIGNvbG9yIGJ1ZmZlcnMg
ZGlzYWJsZS4KKyAgICB2YXIgYnVmczIgPSBkcmF3QnVmZmVyc1V0aWxzLm1ha2VDb2xvckF0dGFj
aG1lbnRBcnJheShtYXhVc2FibGUpOworICAgIC8vIENvbG9yIGJ1ZmZlcnMgd2l0aCBldmVuIGlu
ZGljZXMgZGlzYWJsZWQuCisgICAgdmFyIGJ1ZnMzID0gZHJhd0J1ZmZlcnNVdGlscy5tYWtlQ29s
b3JBdHRhY2htZW50QXJyYXkobWF4VXNhYmxlKTsKKyAgICAvLyBDb2xvciBidWZmZXJzIHdpdGgg
b2RkIGluZGljZXMgZGlzYWJsZWQuCisgICAgdmFyIGJ1ZnM0ID0gZHJhd0J1ZmZlcnNVdGlscy5t
YWtlQ29sb3JBdHRhY2htZW50QXJyYXkobWF4VXNhYmxlKTsKKyAgICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgbWF4VXNhYmxlOyArK2lpKSB7CisgICAgICBpZiAoaWkgPCBoYWxmKSB7CisgICAgICAg
IGJ1ZnMxW2lpXSA9IGdsLk5PTkU7CisgICAgICB9IGVsc2UgeworICAgICAgICBidWZzMltpaV0g
PSBnbC5OT05FOworICAgICAgfQorICAgICAgaWYgKGlpICUgMikgeworICAgICAgICBidWZzM1tp
aV0gPSBnbC5OT05FOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgYnVmczRbaWldID0gZ2wuTk9O
RTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygidGVzdCBzZXR0aW5nIGZpcnN0IGhhbGYg
dG8gTk9ORSBhbmQgY2xlYXJpbmciKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmIpOworICAgIC8vIFdlIHNob3VsZCBjbGVhciBhbGwgYnVmZmVycyByYXRoZXIg
dGhhbiBkZXBlbmRpbmcgb24gdGhlIHByZXZpb3VzCisgICAgLy8gZ2xfRnJhZ0NvbG9yIGJyb2Fk
Y2FzdHMgdGVzdCB0byBzdWNjZWVkIGFuZCBzZXR0aW5nIHRoZSBjb2xvcnMuCisgICAgZXh0LmRy
YXdCdWZmZXJzV0VCR0woYnVmcyk7CisgICAgZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGV4dC5kcmF3QnVmZmVyc1dF
QkdMKGJ1ZnMxKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFj
aG1lbnRzRm9yQ29sb3JGbihhdHRhY2htZW50cywgZnVuY3Rpb24oYXR0YWNobWVudCwgaW5kZXgp
IHsKKyAgICAgIHJldHVybiBpbmRleCA8IGhhbGYgPyBbMjU1LCAwLCAwLCAyNTVdIDogWzAsIDI1
NSwgMCwgMjU1XTsKKyAgICB9KTsKKworICAgIGRlYnVnKCJ0ZXN0IHNldHRpbmcgZmlyc3QgaGFs
ZiB0byBOT05FIGFuZCBkcmF3aW5nIik7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZiKTsKKyAgICBnbC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsKKyAgICB3dHUu
ZHJhd1VuaXRRdWFkKGdsKTsKKworICAgIGRyYXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50
c0ZvckNvbG9yRm4oYXR0YWNobWVudHMsIGZ1bmN0aW9uKGF0dGFjaG1lbnQsIGluZGV4KSB7Cisg
ICAgICByZXR1cm4gaW5kZXggPCBoYWxmID8gWzI1NSwgMCwgMCwgMjU1XSA6IGF0dGFjaG1lbnQu
Y29sb3I7CisgICAgfSk7CisKKyAgICBkZWJ1ZygidGVzdCBzZXR0aW5nIHNlY29uZCBoYWxmIHRv
IE5PTkUgYW5kIGNsZWFyaW5nIik7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiKTsKKyAgICBleHQuZHJhd0J1ZmZlcnNXRUJHTChidWZzKTsKKyAgICBnbC5jbGVh
ckNvbG9yKDEsIDAsIDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
CisgICAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVmczIpOworICAgIGdsLmNsZWFyQ29sb3IoMCwg
MCwgMSwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZHJhd0J1
ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3JGbihhdHRhY2htZW50cywgZnVuY3Rp
b24oYXR0YWNobWVudCwgaW5kZXgpIHsKKyAgICAgIHJldHVybiBpbmRleCA8IGhhbGYgPyBbMCwg
MCwgMjU1LCAyNTVdIDogWzI1NSwgMCwgMCwgMjU1XTsKKyAgICB9KTsKKworICAgIGRlYnVnKCJ0
ZXN0IHNldHRpbmcgc2Vjb25kIGhhbGYgdG8gTk9ORSBhbmQgZHJhd2luZyIpOworCisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wudXNlUHJvZ3JhbShk
cmF3UHJvZ3JhbSk7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisKKyAgICBkcmF3QnVmZmVy
c1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihh
dHRhY2htZW50LCBpbmRleCkgeworICAgICAgcmV0dXJuIGluZGV4IDwgaGFsZiA/IGF0dGFjaG1l
bnQuY29sb3IgOiBbMjU1LCAwLCAwLCAyNTVdOworICAgIH0pOworCisgICAgZGVidWcoInRlc3Qg
c2V0dGluZyBidWZmZXJzIHdpdGggZXZlbiBpbmRpY2VzIHRvIE5PTkUgYW5kIGNsZWFyaW5nIik7
CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBleHQu
ZHJhd0J1ZmZlcnNXRUJHTChidWZzKTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGV4dC5kcmF3QnVmZmVyc1dF
QkdMKGJ1ZnMzKTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDEsIDEpOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFj
aG1lbnRzRm9yQ29sb3JGbihhdHRhY2htZW50cywgZnVuY3Rpb24oYXR0YWNobWVudCwgaW5kZXgp
IHsKKyAgICAgIHJldHVybiAoaW5kZXggJSAyKSA/IFsyNTUsIDAsIDAsIDI1NV0gOiBbMjU1LCAw
LCAyNTUsIDI1NV07CisgICAgfSk7CisKKyAgICBkZWJ1ZygidGVzdCBzZXR0aW5nIGJ1ZmZlcnMg
d2l0aCBvZGQgaW5kaWNlcyB0byBOT05FIGFuZCBkcmF3aW5nIik7CisKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBleHQuZHJhd0J1ZmZlcnNXRUJHTChi
dWZzKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgIGdsLnVzZVByb2dyYW0oZHJhd1Byb2dyYW0pOworICAgIGV4
dC5kcmF3QnVmZmVyc1dFQkdMKGJ1ZnM0KTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKwor
ICAgIGRyYXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yRm4oYXR0YWNobWVu
dHMsIGZ1bmN0aW9uKGF0dGFjaG1lbnQsIGluZGV4KSB7CisgICAgICByZXR1cm4gKGluZGV4ICUg
MiA9PSAwKSA/IFswLCAwLCAwLCAyNTVdIDogYXR0YWNobWVudC5jb2xvcjsKKyAgICB9KTsKKwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgaGFsZkZCMSk7CisgICAgZXh0
LmRyYXdCdWZmZXJzV0VCR0woYnVmcyk7CisgICAgZHJhd0FuZENoZWNrQXR0YWNobWVudHMoCisg
ICAgICBoYWxmRkIxLCAiZnJhbWVidWZmZXIgdGhhdCBvbmx5IGhhcyBmaXJzdCBoYWxmIG9mIGF0
dGFjaG1lbnRzIiwKKyAgICAgIGZ1bmN0aW9uKGF0dGFjaG1lbnQsIGluZGV4KSB7CisgICAgICAg
IHJldHVybiBpbmRleCA8IGhhbGY7CisgICAgICB9KTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgaGFsZkZCMik7CisgICAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVm
cyk7CisgICAgZHJhd0FuZENoZWNrQXR0YWNobWVudHMoCisgICAgICBoYWxmRkIyLCAiZnJhbWVi
dWZmZXIgdGhhdCBvbmx5IGhhcyBzZWNvbmQgaGFsZiBvZiBhdHRhY2htZW50cyIsCisgICAgICBm
dW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgICByZXR1cm4gaW5kZXggPj0gaGFs
ZjsKKyAgICAgIH0pOworCisgICAgaWYgKG1heFVzYWJsZSA+IDIpIHsKKyAgICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZW5kc0ZCKTsKKyAgICAgIGV4dC5kcmF3QnVmZmVy
c1dFQkdMKGJ1ZnMpOworICAgICAgZHJhd0FuZENoZWNrQXR0YWNobWVudHMoCisgICAgICAgIGVu
ZHNGQiwgImZyYW1lYnVmZmVyIHRoYXQgb25seSBoYXMgZmlyc3QgYW5kIGxhc3QgYXR0YWNobWVu
dHMiLAorICAgICAgICBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgICAgIHJl
dHVybiBpbmRleCA9PSAwIHx8IGluZGV4ID09IChtYXhVc2FibGUgLSAxKTsKKyAgICAgICAgfSk7
CisKKyAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbWlkZGxlRkIpOwor
ICAgICAgZXh0LmRyYXdCdWZmZXJzV0VCR0woYnVmcyk7CisgICAgICBkcmF3QW5kQ2hlY2tBdHRh
Y2htZW50cygKKyAgICAgICAgbWlkZGxlRkIsCisgICAgICAgICJmcmFtZWJ1ZmZlciB0aGF0IGhh
cyBhbGwgYnV0IHRoZSBmaXJzdCBhbmQgbGFzdCBhdHRhY2htZW50cyIsCisgICAgICAgIGZ1bmN0
aW9uKGF0dGFjaG1lbnQsIGluZGV4KSB7CisgICAgICAgICAgcmV0dXJuIGluZGV4ICE9IDAgJiYg
aW5kZXggIT0gKG1heFVzYWJsZSAtIDEpOworICAgICAgICB9KTsKKyAgICB9CisgIH0KKworICBk
ZWJ1ZygidGVzdCBzd2l0Y2hpbmcgYmV0d2VlbiBmYm9zIGRvZXMgbm90IGFmZmVjdCBhbnkgY29s
b3IgYXR0YWNobWVudCBjb250ZW50cyIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiMik7CisgIGV4dC5kcmF3QnVmZmVyc1dFQkdMKG5vbmVzKTsKKworICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZXh0LmRyYXdCdWZmZXJzV0VCR0wo
YnVmcyk7CisgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQpOworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xv
cihhdHRhY2htZW50cywgWzI1NSwgMCwgMCwgMjU1XSk7CisKKyAgLy8gZmIyIHN0aWxsIGhhcyB0
aGUgTk9ORSBkcmF3IGJ1ZmZlcnMgZnJvbSBiZWZvcmUsIHNvIHRoaXMgZHJhdyBzaG91bGQgYmUg
YSBuby1vcC4KKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjIpOworICBn
bC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsKKyAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgIGRy
YXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yKGF0dGFjaG1lbnRzLCBbMjU1
LCAwLCAwLCAyNTVdKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
KTsKKyAgZ2wudXNlUHJvZ3JhbShkcmF3UHJvZ3JhbSk7CisgIHd0dS5kcmF3VW5pdFF1YWQoZ2wp
OworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvcihhdHRhY2htZW50
cyk7CisKKyAgZGVidWcoInRlc3QgcXVlcmllcyIpOworICBkZWJ1ZygiY2hlY2sgZnJhbWVidWZm
ZXIgd2l0aCBhbGwgYXR0YWNobWVudHMgb24iKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYik7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBtYXhVc2FibGU7ICsraWkp
IHsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5EUkFXX0JVRkZFUjBfV0VCR0wg
KyAiICsgaWkgKyAiKSIsICJnbC5DT0xPUl9BVFRBQ0hNRU5UMCArICIgKyBpaSk7CisgIH0KKwor
ICBkZWJ1ZygiY2hlY2sgZnJhbWVidWZmZXIgd2l0aCBhbGwgYXR0YWNobWVudHMgb2ZmIik7Cisg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIyKTsKKyAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IG1heFVzYWJsZTsgKytpaSkgeworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZXh0LkRSQVdfQlVGRkVSMF9XRUJHTCArICIgKyBpaSArICIpIiwgImdsLk5PTkUiKTsKKyAg
fQorCisgIGRlYnVnKCJ0ZXN0IGF0dGFjaG1lbnQgc2l6ZSBtaXMtbWF0Y2giKTsKKyAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgYXR0YWNobWVudHNbMF0udGV4dHVyZSk7CisgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGggKiAyLCBoZWlnaHQsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgc2hvdWxkQmVUcnVlKCJnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7CisgIHNob3VsZEJlVHJ1ZSgi
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUiKTsKKworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7CisgIGdsLmRlbGV0
ZUZyYW1lYnVmZmVyKGZiMik7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGhhbGZGQjEpOworICBn
bC5kZWxldGVGcmFtZWJ1ZmZlcihoYWxmRkIyKTsKKyAgYXR0YWNobWVudHMuZm9yRWFjaChmdW5j
dGlvbihhdHRhY2htZW50KSB7CisgICAgZ2wuZGVsZXRlVGV4dHVyZShhdHRhY2htZW50LnRleHR1
cmUpOworICB9KTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShjaGVja1Byb2dyYW0pOworICBnbC5kZWxl
dGVQcm9ncmFtKHJlZFByb2dyYW0pOworICBnbC5kZWxldGVQcm9ncmFtKHJlZFByb2dyYW1XaXRo
RXh0ZW5zaW9uKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShkcmF3UHJvZ3JhbSk7Cit9CisKK2Z1bmN0
aW9uIHJ1blByZXNlcnZlVGVzdHMoKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIi0tLS0tLS0t
LSBwcmVzZXJ2ZSB0ZXN0cyAtLS0tLS0tLS0tLSIpOworCisgIGRlYnVnKCJUZXN0aW5nIHRoYXQg
ZnJhbWUgYnVmZmVyIGlzIGNsZWFyZWQgYWZ0ZXIgY29tcG9zaXRpbmciKTsKKyAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICBnbC5jbGVhckNvbG9yKDEsIDEs
IDAsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMjU1LCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgeWVsbG93Iik7CisKKyAgLy8g
c2V0IHRoZSBkcmF3IGJ1ZmZlciB0byBOT05FCisgIGV4dC5kcmF3QnVmZmVyc1dFQkdMKFtnbC5O
T05FXSk7CisgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMSwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQpOworCisgIC8vIG1ha2Ugc3VyZSB0aGUgY2FudmFzIGlzIHN0aWxsIGNsZWFy
CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzI1NSwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIHll
bGxvdyIpOworCisgIHd0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICAgIGdsLmNs
ZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMF0sICJzaG91bGQgYmUgY2xlYXIi
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3Vs
ZCBiZSBubyBlcnJvcnMiKTsKKworICAgIHJ1bkVuZFRlc3RzKCk7CisgIH0pOworfQorCitmdW5j
dGlvbiBydW5FbmRUZXN0cygpIHsKKyAgLy8gQ3JlYXRlIG5ldyBjb250ZXh0IGFuZCB2ZXJpZnkg
c2hhZGVyIHRlc3RzIHdpdGggbm8gZXh0ZW5zaW9uIHN0aWxsIHN1Y2NlZWRzLgorICBkZWJ1Zygi
Iik7CisgIGRlYnVnKCJUZXN0aW5nIG5ldyBjb250ZXh0IHdpdGggbm8gZXh0ZW5zaW9uIik7Cisg
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxl
ZCgiTmV3IFdlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgfSBlbHNlIHsKKyAgICB0
ZXN0UGFzc2VkKCJOZXcgV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKyAgICBydW5FbnVtVGVzdERp
c2FibGVkKCk7CisgICAgcnVuU2hhZGVyc1Rlc3REaXNhYmxlZCgpOworICAgIHJ1bkF0dGFjaG1l
bnRUZXN0RGlzYWJsZWQoKTsKKyAgfQorCisgIGZpbmlzaFRlc3QoKTsKK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC13ZWJjb2RlY3Mt
dmlkZW8tZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtd2ViY29kZWNzLXZpZGVvLWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmI4MjBkMjYxMzM3M2YzMzRkZjY1NmU1ZTI2MzRjYWRjNjA4ZTY5
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtd2ViY29kZWNzLXZpZGVvLWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwxOTkgQEAKKzwhLS0NCitDb3B5cmlnaHQgKGMpIDIwMjEgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLg0KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuDQorLS0+DQorDQorPCFET0NUWVBFIGh0bWw+DQorPGh0bWw+DQorDQorPGhl
YWQ+DQorICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQorICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4NCisgIDxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorICA8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+DQorICA8c2NyaXB0IHNyYz0i
Li4vLi4vanMvdGVzdHMvb3V0LW9mLWJvdW5kcy10ZXN0LmpzIj48L3NjcmlwdD4NCisgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9leHRlbnNpb25zL3Byb3Bvc2Fscy9XRUJHTF93ZWJjb2RlY3Nf
dmlkZW9fZnJhbWUvd2ViZ2xfd2ViY29kZWNzX3ZpZGVvX2ZyYW1lLmpzIj48L3NjcmlwdD4NCisg
IDxzdHlsZT4NCisgICAgY2FudmFzIHsNCisgICAgICBwYWRkaW5nOiAxMHB4Ow0KKyAgICAgIGJh
Y2tncm91bmQ6IGdvbGQ7DQorICAgIH0NCisNCisgICAgYnV0dG9uIHsNCisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjNTU1NTU1Ow0KKyAgICAgIGJvcmRlcjogbm9uZTsNCisgICAgICBjb2xvcjog
d2hpdGU7DQorICAgICAgcGFkZGluZzogMTVweCAzMnB4Ow0KKyAgICAgIHdpZHRoOiAxNTBweDsN
CisgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQorICAgICAgZGlzcGxheTogYmxvY2s7DQorICAg
ICAgZm9udC1zaXplOiAxNnB4Ow0KKyAgICB9DQorICA8L3N0eWxlPg0KKzwvaGVhZD4NCisNCis8
Ym9keT4NCisgIDxjYW52YXMgaWQ9InNyYyIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2Fu
dmFzPg0KKyAgPGNhbnZhcyBpZD0iZHN0IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52
YXM+DQorICA8cCBpZD0iaW5mbyI+PC9wPg0KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
Pg0KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorICA8c2NyaXB0Pg0KKyAgICAidXNlIHN0
cmljdCI7DQorICAgIGRlc2NyaXB0aW9uKCJUZXN0IG9mIGltcG9ydGluZyBWaWRlb2ZyYW1lIGZy
b20gV2ViY29kZWNzIHRvIFdlYmdsIik7DQorDQorICAgIGNvbnN0IGtJc1J1bm5pbmdUZXN0ID0g
dHJ1ZTsNCisgICAgY29uc3Qga01heEZyYW1lID0gMTA7DQorICAgIGNvbnN0IGtUZXN0UGl4ZWwg
PSBbMjU1LCAxMjgsIDAsIDI1NV07DQorICAgIC8vIFN1bSBvZiBwaXhlbCBkaWZmZXJlbmNlIG9m
IFIvRy9CIGNoYW5uZWwuIFVzZSB0byBkZWNpZGUgd2hldGhlciBhDQorICAgIC8vIHBpeGVsIGlz
IG1hdGNoZWQgd2l0aCBhbm90aGVyLg0KKyAgICBjb25zdCBjb2RlY19zdHJpbmcgPSAidnAwOS4w
MC41MS4wOC4wMCI7DQorDQorICAgIGxldCB3dHUgPSBXZWJHTFRlc3RVdGlsczsNCisgICAgbGV0
IGNudiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcmMiKTsNCisgICAgbGV0IHNyY193aWR0
aCA9IGNudi53aWR0aDsNCisgICAgbGV0IHNyY19oZWlnaHQgPSBjbnYuaGVpZ2h0Ow0KKyAgICBs
ZXQgc3JjX2NvbG9yID0gInJnYmEoIiArIGtUZXN0UGl4ZWxbMF0udG9TdHJpbmcoKSArICIsIiAr
IGtUZXN0UGl4ZWxbMV0udG9TdHJpbmcoKSArICIsIg0KKyAgICAgICsga1Rlc3RQaXhlbFsyXS50
b1N0cmluZygpICsgIiwiICsga1Rlc3RQaXhlbFszXS50b1N0cmluZygpICsgIikiOw0KKyAgICBs
ZXQgZnJhbWVfY291bnRlciA9IDA7DQorICAgIGxldCBwaXhlbENvbXBhcmVUb2xlcmFuY2UgPSA1
Ow0KKw0KKyAgICBmdW5jdGlvbiBnZXRRdWVyeVZhcmlhYmxlKHZhcmlhYmxlKSB7DQorICAgICAg
dmFyIHF1ZXJ5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7DQorICAgICAg
dmFyIHZhcnMgPSBxdWVyeS5zcGxpdCgiJiIpOw0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dmFycy5sZW5ndGg7IGkrKykgew0KKyAgICAgICAgdmFyIHBhaXIgPSB2YXJzW2ldLnNwbGl0KCI9
Iik7DQorICAgICAgICBpZiAocGFpclswXSA9PSB2YXJpYWJsZSkgeyByZXR1cm4gcGFpclsxXTsg
fQ0KKyAgICAgIH0NCisgICAgICByZXR1cm4gZmFsc2U7DQorICAgIH0NCisNCisgICAgbGV0IHRo
ID0gcGFyc2VJbnQoZ2V0UXVlcnlWYXJpYWJsZSgndGhyZXNob2xkJykpOw0KKyAgICBpZiAoIWlz
TmFOKHRoKSkNCisgICAgICBwaXhlbENvbXBhcmVUb2xlcmFuY2UgPSB0aDsNCisNCisgICAgYXN5
bmMgZnVuY3Rpb24gc3RhcnREcmF3aW5nKCkgew0KKyAgICAgIGxldCBjbnYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3JjIik7DQorICAgICAgdmFyIGN0eCA9IGNudi5nZXRDb250ZXh0KCcy
ZCcsIHsgYWxwaGE6IGZhbHNlIH0pOw0KKw0KKyAgICAgIGN0eC5maWxsU3R5bGUgPSBzcmNfY29s
b3I7DQorICAgICAgbGV0IGRyYXdPbmVGcmFtZSA9IGZ1bmN0aW9uICh0aW1lKSB7DQorICAgICAg
ICBjdHguZmlsbFN0eWxlID0gc3JjX2NvbG9yOw0KKyAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAs
IHNyY193aWR0aCwgc3JjX2hlaWdodCk7DQorICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGRyYXdPbmVGcmFtZSk7DQorICAgICAgfQ0KKyAgICAgIHdpbmRvdy5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoZHJhd09uZUZyYW1lKTsNCisgICAgfQ0KKw0KKyAgICBmdW5jdGlvbiBjYXB0
dXJlQW5kRW5jb2RlKHByb2Nlc3NDaHVuaykgew0KKyAgICAgIGxldCBjbnYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3JjIik7DQorICAgICAgbGV0IGZwcyA9IDYwOw0KKyAgICAgIGxldCBw
ZW5kaW5nX291dHB1dHMgPSAwOw0KKyAgICAgIGxldCBzdHJlYW0gPSBjbnYuY2FwdHVyZVN0cmVh
bShmcHMpOw0KKyAgICAgIGxldCB2dHIgPSBuZXcgVmlkZW9UcmFja1JlYWRlcihzdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKVswXSk7DQorDQorICAgICAgY29uc3QgaW5pdCA9IHsNCisgICAgICAgIG91
dHB1dDogKGNodW5rKSA9PiB7DQorICAgICAgICAgIHRlc3RQYXNzZWQoIkVuY29kZSBmcmFtZSBz
dWNjZXNzZnVsbHkuIik7DQorICAgICAgICAgIHBlbmRpbmdfb3V0cHV0cy0tOw0KKyAgICAgICAg
ICBwcm9jZXNzQ2h1bmsoY2h1bmspOw0KKyAgICAgICAgfSwNCisgICAgICAgIGVycm9yOiAoZSkg
PT4gew0KKyAgICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gZW5jb2RlIGZyYW1lLiIpOw0K
KyAgICAgICAgICBmaW5pc2hUZXN0KCk7DQorICAgICAgICAgIHZ0ci5zdG9wKCk7DQorICAgICAg
ICB9DQorICAgICAgfTsNCisNCisgICAgICBjb25zdCBjb25maWcgPSB7DQorICAgICAgICBjb2Rl
YzogY29kZWNfc3RyaW5nLA0KKyAgICAgICAgd2lkdGg6IGNudi53aWR0aCwNCisgICAgICAgIGhl
aWdodDogY252LmhlaWdodCwNCisgICAgICAgIGJpdHJhdGU6IDEwZTYsDQorICAgICAgICBmcmFt
ZXJhdGU6IGZwcywNCisgICAgICB9Ow0KKw0KKyAgICAgIGxldCBlbmNvZGVyID0gbmV3IFZpZGVv
RW5jb2Rlcihpbml0KTsNCisgICAgICBlbmNvZGVyLmNvbmZpZ3VyZShjb25maWcpOw0KKw0KKyAg
ICAgIHZ0ci5zdGFydCgoZnJhbWUpID0+IHsNCisgICAgICAgIGlmIChwZW5kaW5nX291dHB1dHMg
PiAzMCkgew0KKyAgICAgICAgICBjb25zb2xlLmxvZygiZHJvcCB0aGlzIGZyYW1lIik7DQorICAg
ICAgICAgIC8vIFRvbyBtYW55IGZyYW1lcyBpbiBmbGlnaHQsIGVuY29kZXIgaXMgb3ZlcndoZWxt
ZWQNCisgICAgICAgICAgLy8gbGV0J3MgZHJvcCB0aGlzIGZyYW1lLg0KKyAgICAgICAgICByZXR1
cm47DQorICAgICAgICB9DQorICAgICAgICBpZiAoZnJhbWVfY291bnRlciA9PSBrTWF4RnJhbWUp
IHsNCisgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgZnJhbWVfY291
bnRlcisrOw0KKyAgICAgICAgcGVuZGluZ19vdXRwdXRzKys7DQorICAgICAgICBjb25zdCBpbnNl
cnRfa2V5ZnJhbWUgPSAoZnJhbWVfY291bnRlciAlIDE1MCkgPT0gMDsNCisgICAgICAgIGVuY29k
ZXIuZW5jb2RlKGZyYW1lLCB7IGtleUZyYW1lOiBpbnNlcnRfa2V5ZnJhbWUgfSk7DQorICAgICAg
fSk7DQorICAgIH0NCisNCisgICAgZnVuY3Rpb24gc3RhcnREZWNvZGluZ0FuZFJlbmRlcmluZyhj
bnYsIGhhbmRsZUZyYW1lKSB7DQorICAgICAgY29uc3QgaW5pdCA9IHsNCisgICAgICAgIG91dHB1
dDogaGFuZGxlRnJhbWUsDQorICAgICAgICBlcnJvcjogKGUpID0+IHsNCisgICAgICAgICAgdGVz
dEZhaWxlZCgiRmFpbGVkIHRvIGRlY29kZSBmcmFtZS4iKTsNCisgICAgICAgICAgZmluaXNoVGVz
dCgpOw0KKyAgICAgICAgfQ0KKyAgICAgIH07DQorDQorICAgICAgY29uc3QgY29uZmlnID0gew0K
KyAgICAgICAgY29kZWM6IGNvZGVjX3N0cmluZywNCisgICAgICAgIGNvZGVkV2lkdGg6IGNudi53
aWR0aCwNCisgICAgICAgIGNvZGVkSGVpZ2h0OiBjbnYuaGVpZ2h0LA0KKyAgICAgICAgYWNjZWxl
cmF0aW9uOiAiZGVueSIsDQorDQorICAgICAgfTsNCisNCisgICAgICBsZXQgZGVjb2RlciA9IG5l
dyBWaWRlb0RlY29kZXIoaW5pdCk7DQorICAgICAgZGVjb2Rlci5jb25maWd1cmUoY29uZmlnKTsN
CisgICAgICByZXR1cm4gZGVjb2RlcjsNCisgICAgfQ0KKw0KKyAgICBmdW5jdGlvbiBpc0ZyYW1l
UGl4ZWxNYXRjaGVkKGdsLCB0aF9wZXJfcGl4ZWwgPSBwaXhlbENvbXBhcmVUb2xlcmFuY2UpIHsN
CisgICAgICBXZWJHTFRlc3RVdGlscy5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHNyY193aWR0
aCwgc3JjX3dpZHRoLCBrVGVzdFBpeGVsLCAic2hvdWxkIGJlIG9yYW5nZSIsIHBpeGVsQ29tcGFy
ZVRvbGVyYW5jZSkNCisgICAgfQ0KKw0KKyAgICBmdW5jdGlvbiBtYWluKCkgew0KKyAgICAgIGlm
ICghKCJWaWRlb0VuY29kZXIiIGluIHdpbmRvdykpIHsNCisgICAgICAgIHRlc3RQYXNzZWQoIldl
YkNvZGVjcyBBUEkgaXMgbm90IHN1cHBvcnRlZC4iKTsNCisgICAgICAgIGZpbmlzaFRlc3QoKTsN
CisgICAgICAgIHJldHVybjsNCisgICAgICB9DQorICAgICAgbGV0IGNudiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkc3QiKTsNCisNCisgICAgICBsZXQgd2ViZ2xfd2ViY29kZWNzX3Rlc3Rf
Y29udGV4dCA9IHsNCisgICAgICAgIG1heEZyYW1lVGVzdGVkOiBrTWF4RnJhbWUsDQorICAgICAg
ICBkaXNwbGF5ZWRfZnJhbWU6IDAsDQorICAgICAgICBpc0ZyYW1lUGl4ZWxNYXRjaGVkOiBpc0Zy
YW1lUGl4ZWxNYXRjaGVkLA0KKyAgICAgICAgdGVzdEZhaWxlZDogdGVzdEZhaWxlZCwNCisgICAg
ICAgIHRlc3RQYXNzZWQ6IHRlc3RQYXNzZWQsDQorICAgICAgICBmaW5pc2hUZXN0OiBmaW5pc2hU
ZXN0DQorICAgICAgfTsNCisgICAgICBzZXRUZXN0TW9kZSh3ZWJnbF93ZWJjb2RlY3NfdGVzdF9j
b250ZXh0KTsNCisgICAgICBsZXQgaGFuZGxlRnJhbWUgPSByZXF1ZXN0V2ViR0xWaWRlb0ZyYW1l
SGFuZGxlcihjbnYpOw0KKyAgICAgIGlmIChoYW5kbGVGcmFtZSA9PT0gbnVsbCkgew0KKyAgICAg
ICAgZmluaXNoVGVzdCgpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICAgIH0NCisNCisgICAgICBz
dGFydERyYXdpbmcoKTsNCisgICAgICBsZXQgZGVjb2RlciA9IHN0YXJ0RGVjb2RpbmdBbmRSZW5k
ZXJpbmcoY252LCBoYW5kbGVGcmFtZSk7DQorICAgICAgY2FwdHVyZUFuZEVuY29kZSgoY2h1bmsp
ID0+IHsNCisgICAgICAgIGRlY29kZXIuZGVjb2RlKGNodW5rKTsNCisgICAgICB9KTsNCisgICAg
fQ0KKw0KKyAgICBkb2N1bWVudC5ib2R5Lm9ubG9hZCA9IG1haW47DQorICA8L3NjcmlwdD4NCisN
Cis8L2JvZHk+DQorDQorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvYnVncy9hbmdsZS1hbWJpZ3VvdXMtZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9idWdzL2FuZ2xlLWFtYmlndW91cy1mdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdm
MTBhMDVmNWQ3YjI4ZjkyMjJjYzhmNzM5OGQyZWFmZjg0OWQ2OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvYnVncy9hbmdsZS1hbWJpZ3VvdXMtZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEs
NzIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPkFOR0xFIGFtYmlndW91cyBmdW5jdGlvbiBjYWxsIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQW1iaWd1b3VzSExTTEZ1bmN0
aW9uQ2FsbCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gdmVjNCB1djsKK3VuaWZvcm0gbWF0MiB1bTsKK3ZlYzQgZm9vKHZlYzQg
dikgeworICAgIHJldHVybiB2OworfQordmVjNCBmb28obWF0MiBtKSB7CisgICAgcmV0dXJuIHZl
YzQobSk7Cit9Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IGZvbyh1dikgKyBm
b28odW0pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQW1iaWd1b3VzSExTTFN0
cnVjdEZ1bmN0aW9uQ2FsbCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxvYXQgdV96ZXJvOworc3RydWN0IFMgeyBmbG9hdCBm
b287IH07CitzdHJ1Y3QgUzIgeyBmbG9hdCBmb287IH07CitmbG9hdCBnZXQoUyBzKSB7IHJldHVy
biBzLmZvbyArIHVfemVybzsgfQorZmxvYXQgZ2V0KFMyIHMyKSB7IHJldHVybiAwLjI1ICsgczIu
Zm9vICsgdV96ZXJvOyB9Cit2b2lkIG1haW4oKQoreworICAgIFMgczsKKyAgICBzLmZvbyA9IDAu
NTsKKyAgICBTMiBzMjsKKyAgICBzMi5mb28gPSAwLjI1OworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMC4wLCBnZXQocykgKyBnZXQoczIpLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJU
ZXN0IG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdmVjNCBhbmQgbWF0MiBwYXJhbWV0ZXJzIHRo
YXQgaGF2ZSBoYWQgaXNzdWVzIGluIEFOR0xFLiBJc3N1ZXMgd2VyZSBkdWUgdG8gSExTTCBjb21w
aWxlciB0cmVhdGluZyBmbG9hdDQgYW5kIGZsb2F0MngyIGFzIHRoZSBzYW1lIHR5cGUgd2hlbiBy
ZXNvbHZpbmcgd2hpY2ggb3ZlcmxvYWRlZCBmdW5jdGlvbiB0byBjYWxsLiIpOworCitHTFNMQ29u
Zm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmc2hhZGVyQW1iaWd1
b3VzSExTTEZ1bmN0aW9uQ2FsbCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3Vj
Y2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIkRpc2FtYmlndWF0ZSBjb3JyZWN0bHkgYmV0d2VlbiBv
dmVybG9hZGVkIGZ1bmN0aW9uIGNhbGxzIHdpdGggNC1jb21wb25lbnQgZmxvYXQgcGFyYW1ldGVy
cyIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJBbWJpZ3VvdXNITFNMU3RydWN0RnVuY3Rp
b25DYWxsJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICBwYXNzTXNnOiAiRGlzYW1iaWd1YXRlIGNvcnJlY3RseSBiZXR3ZWVuIG92ZXJsb2FkZWQgZnVu
Y3Rpb24gY2FsbHMgd2l0aCBzdHJ1Y3QgcGFyYW1ldGVycyIsCisgIHJlbmRlcjogdHJ1ZQorfQor
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9h
bmdsZS1jb25zdHJ1Y3Rvci1pbnZhbGlkLXBhcmFtZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hbmds
ZS1jb25zdHJ1Y3Rvci1pbnZhbGlkLXBhcmFtZXRlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzY2Mzgx
MWYxNTNmZmYwMzQ2ZGZjY2I5ODQxMWZmZDMyZDBkMTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9idWdzL2FuZ2xlLWNvbnN0cnVjdG9yLWludmFsaWQtcGFyYW1ldGVycy5odG1sCkBAIC0wLDAg
KzEsNTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPkFOR0xFIGNvbnN0cnVjdG9yIGJ1Z3MgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJTYW1wbGVySW5Db25zdHJ1Y3RvckFy
Z3VtZW50cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHM7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMC4wLCBzLCAwLjAsIDAuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXJWb2lkSW5Db25zdHJ1Y3RvckFyZ3VtZW50cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgZm9vKCkge30KK3ZvaWQgbWFp
bigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGZvbygpLCAwLjAsIDAuMCk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IGNvbnN0cnVjdG9ycyB0aGF0IGhhdmUgaGFkIGlzc3VlcyBp
biBBTkdMRSIpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworeworICBmU2hh
ZGVySWQ6ICdmc2hhZGVyU2FtcGxlckluQ29uc3RydWN0b3JBcmd1bWVudHMnLAorICBmU2hhZGVy
U3VjY2VzczogZmFsc2UsCisgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgcGFzc01zZzogIlNhbXBs
ZXIgaW4gY29uc3RydWN0b3IgYXJndW1lbnRzIHNob3VsZCBub3QgY29tcGlsZSIKK30sCit7Cisg
IGZTaGFkZXJJZDogJ2ZzaGFkZXJWb2lkSW5Db25zdHJ1Y3RvckFyZ3VtZW50cycsCisgIGZTaGFk
ZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiVm9p
ZCBpbiBjb25zdHJ1Y3RvciBhcmd1bWVudHMgc2hvdWxkIG5vdCBjb21waWxlIgorfSwKK10pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvYW5nbGUt
ZDNkMTEtY29tcGlsZXItZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hbmdsZS1kM2QxMS1jb21waWxl
ci1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1OGRkYWQwOGZjY2E3YTIwNzNiNzgwODZlMzc0YTBi
ODIzYzEyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvYW5nbGUtZDNkMTEtY29tcGls
ZXItZXJyb3IuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5BTkdMRSBEM0QxMSBCdWcgLSBTaGFkZXIgY29t
cGlsYXRpb24gZXJyb3I8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlw
dCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit1bmlmb3JtIGZsb2F0IEE7Cit2b2lkIG1haW4oKSB7CisgIGJvb2wgQiA9IGJvb2wo
QSk7CisgIGZsb2F0IHggPSBCID8gLUEgOiAxLitBOworICBmbG9hdCB5ID0gQiA/IDEuK0EgOiAt
QTsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHgsIHksIDAsIDApOworfQorCis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAs
IDEpOworfQorPC9zY3JpcHQ+CisKKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworLy8gU2VlIGh0dHA6Ly9j
cmJ1Zy5jb20vMzcxODY4IGZvciBvcmlnaW5hbCBmYWlsaW5nIGNhc2UuCitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGNoZWNrcyBhbiBBTkdMRSBEM0QxMSBzaGFkZXIgY29tcGlsZXIgZXJyb3IuIik7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsK
K2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBl
bHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7Cisg
IGRlYnVnKCJDaGVja2luZyBzaGFkZXIgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIik7CisKKyAg
Y2hlY2tDb21waWxhdGlvbigpOworfQorCitmdW5jdGlvbiBjaGVja0NvbXBpbGF0aW9uKCkgewor
ICB2YXIgdnMgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgIGdsLnNoYWRl
clNvdXJjZSh2cywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZzIikudGV4dCk7CisgIGdsLmNv
bXBpbGVTaGFkZXIodnMpOworICBpZiAoIWdsLmdldFNoYWRlclBhcmFtZXRlcih2cywgZ2wuQ09N
UElMRV9TVEFUVVMpKSB7CisgICAgICB0ZXN0RmFpbGVkKCJWZXJ0ZXggU2hhZGVyIGZhaWxlZCB0
byBjb21waWxlOiAiICsgZ2wuZ2V0U2hhZGVySW5mb0xvZyh2cykpOworICAgICAgcmV0dXJuOwor
ICB9CisKKyAgdmFyIGZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7Cisg
IGdsLnNoYWRlclNvdXJjZShmcywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzIikudGV4dCk7
CisgIGdsLmNvbXBpbGVTaGFkZXIoZnMpOworICBpZiAoIWdsLmdldFNoYWRlclBhcmFtZXRlcihm
cywgZ2wuQ09NUElMRV9TVEFUVVMpKSB7CisgICAgICB0ZXN0RmFpbGVkKCJGcmFnbWVudCBTaGFk
ZXIgZmFpbGVkIHRvIGNvbXBpbGU6ICIgKyBnbC5nZXRTaGFkZXJJbmZvTG9nKGZzKSk7CisgICAg
ICByZXR1cm47CisgIH0KKworICB2YXIgcCA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgZ2wuYXR0
YWNoU2hhZGVyKHAsIHZzKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKHAsIGZzKTsKKyAgZ2wubGlua1By
b2dyYW0ocCk7CisgIGlmICghZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwLCBnbC5MSU5LX1NUQVRV
UykpIHsKKyAgICAgIHRlc3RGYWlsZWQoIlByb2dyYW0gZmFpbGVkIHRvIGxpbms6ICIgKyBnbC5n
ZXRQcm9ncmFtSW5mb0xvZyhwKSk7CisgICAgICByZXR1cm47CisgIH0KKworICB0ZXN0UGFzc2Vk
KCJMaW5rZWQgU3VjY2Vzc2Z1bGx5Iik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2J1Z3MvYW5nbGUtZHgtdmFyaWFibGUtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvYW5nbGUt
ZHgtdmFyaWFibGUtYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5NGJlZmY2NmIyMmZlYTVhNjlhOWVi
MmFlZDE0ZWI5YWMzZGFmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hbmdsZS1keC12
YXJpYWJsZS1idWcuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5BTkdMRSBEM0QxMSBCdWcgLSBWYXJpYWJs
ZXMgYmVnaW5uaW5nIHdpdGggImR4XyI8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CithdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZhcnlpbmcgZmxvYXQg
ZHhfdmFyOwordm9pZCBtYWluKCkgeworICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICBkeF92
YXIgPSBwb3NpdGlvbi54OworfQorCis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyBm
bG9hdCBkeF92YXI7Cit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZHhfdmFy
LCAwLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIi
IGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKy8vIFNlZSBo
dHRwOi8vY3JidWcuY29tLzM3MTg2OCBmb3Igb3JpZ2luYWwgZmFpbGluZyBjYXNlLgorZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBjaGVja3MgYW4gQU5HTEUgRDNEMTEgc2hhZGVyIGNvbXBpbGVyIGVy
cm9yLiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2Fu
dmFzIik7CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWco
IiIpOworICBkZWJ1ZygiQ2hlY2tpbmcgc2hhZGVyIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nLiIp
OworCisgIGNoZWNrQ29tcGlsYXRpb24oKQorfQorCitmdW5jdGlvbiBjaGVja0NvbXBpbGF0aW9u
KCkgeworICB2YXIgdnMgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgIGds
LnNoYWRlclNvdXJjZSh2cywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZzIikudGV4dCk7Cisg
IGdsLmNvbXBpbGVTaGFkZXIodnMpOworICBpZiAoIWdsLmdldFNoYWRlclBhcmFtZXRlcih2cywg
Z2wuQ09NUElMRV9TVEFUVVMpKSB7CisgICAgICB0ZXN0RmFpbGVkKCJWZXJ0ZXggU2hhZGVyIGZh
aWxlZCB0byBjb21waWxlOiAiICsgZ2wuZ2V0U2hhZGVySW5mb0xvZyh2cykpOworICAgICAgcmV0
dXJuOworICB9CisKKyAgdmFyIGZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURF
Uik7CisgIGdsLnNoYWRlclNvdXJjZShmcywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzIiku
dGV4dCk7CisgIGdsLmNvbXBpbGVTaGFkZXIoZnMpOworICBpZiAoIWdsLmdldFNoYWRlclBhcmFt
ZXRlcihmcywgZ2wuQ09NUElMRV9TVEFUVVMpKSB7CisgICAgICB0ZXN0RmFpbGVkKCJGcmFnbWVu
dCBTaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGU6ICIgKyBnbC5nZXRTaGFkZXJJbmZvTG9nKGZzKSk7
CisgICAgICByZXR1cm47CisgIH0KKworICB2YXIgcCA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAg
Z2wuYXR0YWNoU2hhZGVyKHAsIHZzKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKHAsIGZzKTsKKyAgZ2wu
bGlua1Byb2dyYW0ocCk7CisgIGlmICghZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwLCBnbC5MSU5L
X1NUQVRVUykpIHsKKyAgICAgIHRlc3RGYWlsZWQoIlByb2dyYW0gZmFpbGVkIHRvIGxpbms6ICIg
KyBnbC5nZXRQcm9ncmFtSW5mb0xvZyhwKSk7CisgICAgICByZXR1cm47CisgIH0KKworICB0ZXN0
UGFzc2VkKCJMaW5rZWQgU3VjY2Vzc2Z1bGx5Iik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvYXJyYXktb2Ytc3RydWN0LXdpdGgtaW50LWZpcnN0LXBvc2l0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvYXJyYXktb2Ytc3RydWN0LXdpdGgtaW50LWZpcnN0LXBvc2l0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTdkZDgwNTU2NmUzNTY0OGVkMDRiZmUyMjRmMTliNjQ4MjVmNmE0
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hcnJheS1vZi1zdHJ1Y3Qtd2l0aC1pbnQt
Zmlyc3QtcG9zaXRpb24uaHRtbApAQCAtMCwwICsxLDE0MSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RHJpdmVyIEJ1ZyAtIEFycmF5IG9m
IHN0cnVjdHMgd2l0aCBpbnQgb3IgYm9vbCBpbiBmaXJzdCBwb3NpdGlvbjwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiBzdHlsZT0iYm9yZGVy
OiBub25lOyIgd2lkdGg9Ijc4OCIgaGVpZ2h0PSIyNTYiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9
InNoYWRlci12cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzIgcG9z
Owordm9pZCBtYWluKHZvaWQpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMC4wLCAxLjAp
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci1mcy1pbnQiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgTGlnaHQg
eworICBpbnQgdW51c2VkOworICB2ZWMzIGNvbG9yOworfTsKK2NvbnN0IGludCBudW1MaWdodHMg
PSAxOwordm9pZCBtYWluKCkgeworICBMaWdodCBsaWdodHNbbnVtTGlnaHRzXTsKKyAgbGlnaHRz
WzBdLmNvbG9yID0gdmVjMygwLjAsIDAuNSwgMC4wKTsKKworICB2ZWMzIHJlc3VsdCA9IHZlYzMo
MC4wLCAwLjAsIDAuMCk7CisgIGZvciAoaW50IGk9MDsgaTxudW1MaWdodHM7IGkrKykgeworICAg
IHJlc3VsdCArPSBsaWdodHNbaV0uY29sb3I7CisgIH0KKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNChy
ZXN1bHQucmdiLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci1mcy1i
b29sIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
Oworc3RydWN0IExpZ2h0IHsKKyAgYm9vbCB1bnVzZWQ7CisgIHZlYzMgY29sb3I7Cit9OworY29u
c3QgaW50IG51bUxpZ2h0cyA9IDE7Cit2b2lkIG1haW4oKSB7CisgIExpZ2h0IGxpZ2h0c1tudW1M
aWdodHNdOworICBsaWdodHNbMF0uY29sb3IgPSB2ZWMzKDAuMCwgMC41LCAwLjApOworCisgIHZl
YzMgcmVzdWx0ID0gdmVjMygwLjAsIDAuMCwgMC4wKTsKKyAgZm9yIChpbnQgaT0wOyBpPG51bUxp
Z2h0czsgaSsrKSB7CisgICAgcmVzdWx0ICs9IGxpZ2h0c1tpXS5jb2xvcjsKKyAgfQorICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHJlc3VsdC5yZ2IsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlw
dCBpZD0ic2hhZGVyLWZzLWJvb2wtcmVhZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVjdCBMaWdodCB7CisgIGJvb2wgdXNlTGlnaHQ7
CisgIHZlYzMgY29sb3I7Cit9OworY29uc3QgaW50IG51bUxpZ2h0cyA9IDE7Cit2b2lkIG1haW4o
KSB7CisgIExpZ2h0IGxpZ2h0c1tudW1MaWdodHNdOworICBsaWdodHNbMF0uY29sb3IgPSB2ZWMz
KDAuMCwgMC41LCAwLjApOworICBsaWdodHNbMF0udXNlTGlnaHQgPSB0cnVlOworCisgIHZlYzMg
cmVzdWx0ID0gdmVjMygwLjAsIDAuMCwgMC4wKTsKKyAgZm9yIChpbnQgaT0wOyBpPG51bUxpZ2h0
czsgaSsrKSB7CisgICAgTGlnaHQgbGlnaHQgPSBsaWdodHNbaV07CisgICAgaWYgKGxpZ2h0LnVz
ZUxpZ2h0KSB7CisgICAgICByZXN1bHQgKz0gbGlnaHQuY29sb3I7CisgICAgfQorICB9CisgIGds
X0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LnJnYiwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBkZXNjcmlwdGlvbigp
OworICBkZWJ1ZygKKyAgICAiVGhpcyB0ZXN0IGNoZWNrcyBhY2Nlc3NpbmcgYW4gYXJyYXkgb2Yg
c3RydWN0cywgd2hlcmUgdGhlIHN0cnVjdCAiICsKKyAgICAiZGVmaW5pdGlvbiBoYXMgYW4gaW50
IG9yIGJvb2wgaW4gdGhlIGZpcnN0IHBvc2l0aW9uLiAiICsKKyAgICAiVGhpcyB0ZXN0IGhhcyBo
YXMgZmFpbGVkIGluIE9TIFggb24gc29tZSBOVklESUEgY2FyZHMsICIgKworICAgICJzdWNoIGFz
IHRoZSBOVklESUEgR2VGb3JjZSBHVCA2NTBNLiBJZiB0aGluZ3MgYXJlIHdvcmtpbmcgIiArCisg
ICAgImNvcnJlY3RseSwgdGhlbiB0aGVyZSB3aWxsIGJlIGEgc2VyaWVzIG9mIDUwJSBncmVlbiBz
cXVhcmVzLiIpCisgIGRlYnVnKCIiKTsKKworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cisg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworICB2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisKKyAgdmFyIHRlc3ROdW0gPSAwOwor
ICB2YXIgYm9yZGVyID0gMTA7IC8vIGJvcmRlciBiZXR3ZWVuIHRlc3Qgc3F1YXJlcyBmb3Igdmlz
aWJpbGl0eQorICB2YXIgc3F1YXJlU2l6ZSA9IDI1NjsKKyAgdmFyIGV4cGVjdGVkQ29sb3IgPSBb
MCwgMTI3LCAwLCAyNTVdOyAvLyA1MCUgZ3JlZW4KKworICBmdW5jdGlvbiBzdWJUZXN0KG1lc3Nh
Z2UsIGZyYWdtZW50U2hhZGVyKSB7CisgICAgZGVidWcobWVzc2FnZSk7CisgICAgdmFyIHN0YXJ0
WCA9IChzcXVhcmVTaXplICsgYm9yZGVyKSAqIHRlc3ROdW07CisgICAgdmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsIFsic2hhZGVyLXZzIiwgZnJhZ21lbnRTaGFkZXJd
LCBbInBvcyJdLCBudWxsLCB0cnVlKTsKKyAgICBnbC52aWV3cG9ydChzdGFydFgsIDAsIHNxdWFy
ZVNpemUsIHNxdWFyZVNpemUpOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5j
aGVja0NhbnZhc1JlY3QoCisgICAgICBnbCwgc3RhcnRYLCAwLCBzcXVhcmVTaXplLCBzcXVhcmVT
aXplLAorICAgICAgZXhwZWN0ZWRDb2xvciwgInNxdWFyZSBzaG91bGQgYmUgNTAlIGdyZWVuIiwg
MSk7CisgICAgZGVidWcoIiIpOworICAgIHRlc3ROdW0rKzsKKyAgfQorCisgIGlmICghZ2wpIHsK
KyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgIH0gZWxzZSB7Cisg
ICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworICAgIHN1YlRlc3QoIlRlc3QgdW51c2VkIGludCBp
biBmaXJzdCBzdHJ1Y3QgcG9zaXRpb24uIiwgInNoYWRlci1mcy1pbnQiKTsKKyAgICBzdWJUZXN0
KCJUZXN0IHVudXNlZCBib29sIGluIGZpcnN0IHN0cnVjdCBwb3NpdGlvbi4iLCAic2hhZGVyLWZz
LWJvb2wiKTsKKyAgICBzdWJUZXN0KCJUZXN0IHVzZWQgYm9vbCBpbiBmaXJzdCBzdHJ1Y3QgcG9z
aXRpb24uIiwgInNoYWRlci1mcy1ib29sLXJlYWQiKTsKKyAgfQorfQorCit0ZXN0KCk7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvYXNzaWduLXRvLXN3aXp6bGVkLXR3aWNlLWluLWZ1bmN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2J1Z3MvYXNzaWduLXRvLXN3aXp6bGVkLXR3aWNlLWluLWZ1bmN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODQ3MTI3YTQwOGQwNDY1OGVkMjc2NmY5ZjEzNTlhNmQzZGMzMGVlOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hc3NpZ24tdG8tc3dpenpsZWQtdHdpY2UtaW4tZnVu
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDUyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Bc3NpZ25pbmcgYW4gYXNzaWdubWVudCB0byBhIHN3
aXp6bGVkIHZhbHVlIGluc2lkZSBmdW5jdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3ZlYzIgZigpCit7CisgICAgdmVjMiByID0g
dmVjMigwKTsKKyAgICByLnggPSByLnkgPSAxLjA7CisgICAgcmV0dXJuIHI7Cit9CisKK3ZvaWQg
bWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yLmdhID0gZigpOworfQorCis8L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9u
KCk7CisKKy8vIE1pbmltYWwgdGVzdCBjYXNlIGJhc2VkIG9uIHJlcG9ydCBhdCBodHRwOi8vY3Ji
dWcuY29tLzc5ODExNworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWwor
eworICBmU2hhZGVySWQ6ICdmc2hhZGVyJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiQXNzaWduaW5nIGFuIGFzc2lnbm1lbnQgdG8g
YSBzd2l6emxlZCB2YWx1ZSBpbnNpZGUgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24iCit9CitdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2Jvb2wt
dHlwZS1jYXN0LWJ1Zy1pbnQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9ib29sLXR5cGUtY2FzdC1i
dWctaW50LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg0YzRlMDI4OTNjMThhMWUzZWZhNWRmZGY3
MmE1NzgwMmQ2MzIwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9ib29sLXR5cGUtY2Fz
dC1idWctaW50LWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzMTIgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlZlcmlmeSBpbnQoYm9vbCkgYW5k
IGZsb2F0KGJvb2wpIHdvcmsgY29ycmVjdGx5IChNYWMgQU1EIGRyaXZlciBidWcpPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBo
ZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlci1pbnQxIiB0eXBlPSJ4LXNo
YWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyBhUG9zaXRpb247Cit2YXJ5aW5nIG1lZGl1
bXAgZmxvYXQgZnZhbHVlOwordW5pZm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgewor
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEpOworICAgIGludCBpdmFsdWUgPSBp
bnQoYnZhbHVlKTsKKyAgICBpZiAoaXZhbHVlID09IDApIHsKKyAgICAgICAgZnZhbHVlID0gMC4w
OworICAgIH0gZWxzZSBpZiAoaXZhbHVlID09IDEpIHsKKyAgICAgICAgZnZhbHVlID0gMS4wOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZ2YWx1ZSA9IC0xLjA7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWludDEiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
dmFyeWluZyBtZWRpdW1wIGZsb2F0IGZ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIGlmIChm
dmFsdWUgPT0gMS4wKQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAs
IDEuMCk7CisgICAgZWxzZSBpZiAoZnZhbHVlID09IDAuMCkKKyAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGVsc2UKKyAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9InZzaGFkZXItaW50MiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZl
YzMgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQ
b3NpdGlvbiwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItaW50MiIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit1bmlmb3JtIGJvb2wgYnZhbHVlOworCit2b2lkIG1h
aW4oKSB7CisgICAgaW50IGl2YWx1ZSA9IGludChidmFsdWUpOworCisgICAgaWYgKGl2YWx1ZSA9
PSAxKQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cisg
ICAgZWxzZSBpZiAoaXZhbHVlID09IDApCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4w
LCAxLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVy
LWZsb2F0MSIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgYVBvc2l0
aW9uOwordmFyeWluZyBtZWRpdW1wIGZsb2F0IGZ2YWx1ZTsKK3VuaWZvcm0gYm9vbCBidmFsdWU7
CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAxKTsK
KyAgICBmdmFsdWUgPSBmbG9hdChidmFsdWUpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
c2hhZGVyLWZsb2F0MSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2YXJ5aW5nIG1lZGl1
bXAgZmxvYXQgZnZhbHVlOworCit2b2lkIG1haW4oKSB7CisgICAgaWYgKGZ2YWx1ZSA9PSAxLjAp
CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBl
bHNlIGlmIChmdmFsdWUgPT0gMC4wKQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
MS4wLCAwLjAsIDEuMCk7CisgICAgZWxzZQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0idnNoYWRlci1m
bG9hdDIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIGFQb3NpdGlv
bjsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWZsb2F0MiIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+Cit1bmlmb3JtIGJvb2wgYnZhbHVlOworCit2b2lkIG1haW4oKSB7Cisg
ICAgbWVkaXVtcCBmbG9hdCBmdmFsdWUgPSBmbG9hdChidmFsdWUpOworCisgICAgaWYgKGZ2YWx1
ZSA9PSAxLjApCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4w
KTsKKyAgICBlbHNlIGlmIChmdmFsdWUgPT0gMC4wKQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxzZQorICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0i
dnNoYWRlci12ZWMyLTEiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMz
IGFQb3NpdGlvbjsKK3ZhcnlpbmcgbWVkaXVtcCB2ZWMyIGZ2YWx1ZTsKK3VuaWZvcm0gYm9vbCBi
dmFsdWU7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9u
LCAxKTsKKyAgICBmdmFsdWUgPSB2ZWMyKGJ2YWx1ZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXItdmVjMi0xIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3Zhcnlpbmcg
bWVkaXVtcCB2ZWMyIGZ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIGlmIChmdmFsdWUgPT0g
dmVjMigxLjAsIDEuMCkpCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICBlbHNlIGlmIChmdmFsdWUgPT0gdmVjMigwLjAsIDAuMCkpCisgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0
PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyLXZlYzItMiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgi
PgorYXR0cmlidXRlIHZlYzMgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXItdmVjMi0yIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwordW5pZm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIHZl
YzIgZnZhbHVlID0gdmVjMihidmFsdWUpOworCisgICAgaWYgKGZ2YWx1ZSA9PSB2ZWMyKDEuMCwg
MS4wKSkKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwor
ICAgIGVsc2UgaWYgKGZ2YWx1ZSA9PSB2ZWMyKDAuMCwgMC4wKSkKKyAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGVsc2UKKyAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9InZzaGFkZXItdmVjMy0xIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjMyBhUG9zaXRpb247Cit2YXJ5aW5nIG1lZGl1bXAgdmVjMyBmdmFsdWU7Cit1bmlmb3Jt
IGJvb2wgYnZhbHVlOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQ
b3NpdGlvbiwgMSk7CisgICAgZnZhbHVlID0gdmVjMyhidmFsdWUpOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc2hhZGVyLXZlYzMtMSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2
YXJ5aW5nIG1lZGl1bXAgdmVjMyBmdmFsdWU7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpZiAoZnZh
bHVlID09IHZlYzMoMS4wLCAxLjAsIDEuMCkpCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlIGlmIChmdmFsdWUgPT0gdmVjMygwLjAsIDAu
MCwgMC4wKSkKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjAp
OworICAgIGVsc2UKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXItdmVjMy0yIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyBhUG9zaXRpb247CisKK3ZvaWQgbWFp
bigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAxKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnNoYWRlci12ZWMzLTIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGJvb2wgYnZhbHVlOworCit2b2lk
IG1haW4oKSB7CisgICAgdmVjMyBmdmFsdWUgPSB2ZWMzKGJ2YWx1ZSk7CisKKyAgICBpZiAoZnZh
bHVlID09IHZlYzMoMS4wLCAxLjAsIDEuMCkpCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlIGlmIChmdmFsdWUgPT0gdmVjMygwLjAsIDAu
MCwgMC4wKSkKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjAp
OworICAgIGVsc2UKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXItdmVjNC0xIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyBhUG9zaXRpb247Cit2YXJ5aW5nIG1l
ZGl1bXAgdmVjNCBmdmFsdWU7Cit1bmlmb3JtIGJvb2wgYnZhbHVlOworCit2b2lkIG1haW4oKSB7
CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMSk7CisgICAgZnZhbHVlID0gdmVj
NChidmFsdWUpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXZlYzQtMSIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2YXJ5aW5nIG1lZGl1bXAgdmVjNCBmdmFsdWU7CisK
K3ZvaWQgbWFpbigpIHsKKyAgICBpZiAoZnZhbHVlID09IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4w
KSkKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAg
IGVsc2UgaWYgKGZ2YWx1ZSA9PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpCisgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IGlkPSJ2c2hhZGVyLXZlYzQtMiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgor
YXR0cmlidXRlIHZlYzMgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KGFQb3NpdGlvbiwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXItdmVjNC0yIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwordW5pZm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIHZlYzQg
ZnZhbHVlID0gdmVjNChidmFsdWUpOworCisgICAgaWYgKGZ2YWx1ZSA9PSB2ZWM0KDEuMCwgMS4w
LCAxLjAsIDEuMCkpCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICBlbHNlIGlmIChmdmFsdWUgPT0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKQor
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxz
ZQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8
L3NjcmlwdD4KKworICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVmVyaWZ5IGludChib29sKSBhbmQgZmxvYXQoYm9v
bCkgd29yayBjb3JyZWN0bHkiKTsKK2RlYnVnKCIiKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgi
Y2FudmFzIik7CisgICAgaWYgKCFnbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRv
ZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd3R1LnNldHVwVW5p
dFF1YWQoZ2wpOworCisgICAgdmFyIHRlc3RDYXNlcyA9IFsKKyAgICAgICAgeyB2c2hhZGVyOiAi
dnNoYWRlci1pbnQxIiwgZnNoYWRlcjogImZzaGFkZXItaW50MSIsIGRlc2M6ICJ2ZXJ0ZXggc2hh
ZGVyIGludCIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci1pbnQyIiwgZnNoYWRlcjog
ImZzaGFkZXItaW50MiIsIGRlc2M6ICJmcmFnbWVudCBzaGFkZXIgaW50IiB9LAorICAgICAgICB7
IHZzaGFkZXI6ICJ2c2hhZGVyLWZsb2F0MSIsIGZzaGFkZXI6ICJmc2hhZGVyLWZsb2F0MSIsIGRl
c2M6ICJ2ZXJ0ZXggc2hhZGVyIGZsb2F0IiB9LAorICAgICAgICB7IHZzaGFkZXI6ICJ2c2hhZGVy
LWZsb2F0MiIsIGZzaGFkZXI6ICJmc2hhZGVyLWZsb2F0MiIsIGRlc2M6ICJmcmFnbWVudCBzaGFk
ZXIgZmxvYXQiIH0sCisgICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItdmVjMi0xIiwgZnNoYWRl
cjogImZzaGFkZXItdmVjMi0xIiwgZGVzYzogInZlcnRleCBzaGFkZXIgdmVjMiIgfSwKKyAgICAg
ICAgeyB2c2hhZGVyOiAidnNoYWRlci12ZWMyLTIiLCBmc2hhZGVyOiAiZnNoYWRlci12ZWMyLTIi
LCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIHZlYzIiIH0sCisgICAgICAgIHsgdnNoYWRlcjogInZz
aGFkZXItdmVjMy0xIiwgZnNoYWRlcjogImZzaGFkZXItdmVjMy0xIiwgZGVzYzogInZlcnRleCBz
aGFkZXIgdmVjMyIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci12ZWMzLTIiLCBmc2hh
ZGVyOiAiZnNoYWRlci12ZWMzLTIiLCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIHZlYzMiIH0sCisg
ICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItdmVjNC0xIiwgZnNoYWRlcjogImZzaGFkZXItdmVj
NC0xIiwgZGVzYzogInZlcnRleCBzaGFkZXIgdmVjNCIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAi
dnNoYWRlci12ZWM0LTIiLCBmc2hhZGVyOiAiZnNoYWRlci12ZWM0LTIiLCBkZXNjOiAiZnJhZ21l
bnQgc2hhZGVyIHZlYzQiIH0sCisgICAgXTsKKworICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8
IHRlc3RDYXNlcy5sZW5ndGg7ICsraWR4KSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdENhc2Vz
W2lkeF07CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFByb2dyYW0oZ2wsIFt0ZXN0LnZzaGFkZXIsIHRlc3QuZnNoYWRlcl0sIFsiYVBvc2l0aW9u
Il0pOworICAgICAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZh
aWwgdG8gc2V0IHVwIHByb2dyYW0iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZh
ciB1bmlmb3JtTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdidmFsdWUnKTsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nICIgKyB0ZXN0LmRlc2MgKyAiIHdpdGggZmFsc2Ui
KTsKKyAgICAgICAgICAgIGdsLnVuaWZvcm0xaSh1bmlmb3JtTG9jLCAwKTsKKyAgICAgICAgICAg
IHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBb
MCwgMjU1LCAwLCAyNTVdKTsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nICIgKyB0ZXN0LmRl
c2MgKyAiIHdpdGggdHJ1ZSIpOworICAgICAgICAgICAgZ2wudW5pZm9ybTFpKHVuaWZvcm1Mb2Ms
IDEpOworICAgICAgICAgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgICAgICAgICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgICAgICAgZ2wuZGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHRlc3RpbmciKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK3Rlc3QoKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2J1Z3MvY2hhcmFjdGVyLXNldC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NoYXJhY3Rlci1zZXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYmE4NTQ2MTNjNmFmMmZjOWZjZDViN2JmOTNlNjg4MGJlYTQ4ZmFlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NoYXJhY3Rlci1zZXQuaHRtbApAQCAtMCwwICsxLDEx
NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+Q2hhcmFjdGVyIFNldDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisK
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworLy8gU2VlIGh0dHA6Ly9jcmJ1Zy5jb20vMTEwODU4OCBmb3Ig
b3JpZ2luYWwgZmFpbGluZyBjYXNlLgorLy8gQ2hlY2sgIk9wZW5HTCBSZWdpc3RyeSBUaGUgT3Bl
bkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UiCisvLyBTZWN0aW9uIDMuMiBDaGFyYWN0ZXIgU2V0cyBG
b3IgbW9yZSBpbmZvCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBjaGFyYWN0ZXIgc2V0
IHZhbGlkYXRpb24gZm9yIGdsc2wuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0
Q29udGV4dCIpOworCitsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitsZXQgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK2xldCBjb25zb2xlRGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMi
KTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBzaGFkZXIgY2hhcmFjdGVyIHNl
dCB2YWxpZGF0aW9uIGFuZCBjb21waWxhdGlvbiIpOworCisgIHJ1blRlc3QoKTsKK30KKworZnVu
Y3Rpb24gdGVzdFNoYWRlclNvdXJjZShzaGFkZXJTb3VyY2UsIG1zZykgeworICAgIGlmICghcXVp
ZXRNb2RlKCkpIHsKKyAgICAgICAgd3R1LmFkZFNoYWRlclNvdXJjZShjb25zb2xlRGl2LCAidGVz
dCBmcmFnbWVudCBzaGFkZXIiLCBzaGFkZXJTb3VyY2UpOworICAgIH0KKworICAgIGxldCBzaGFk
ZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgICBpZiAoc2hhZGVy
ID09IG51bGwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiKioqIEVycm9yOiB1bmFibGUgdG8gY3Jl
YXRlIHNoYWRlciAnIiArIHNoYWRlclNvdXJjZSArICInIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzaGFkZXJTb3VyY2UpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCBtc2cpOworfQorCitmdW5jdGlvbiBN
VVNUKGlmVHJ1dGh5KSB7CisgICAgcmV0dXJuIGlmVHJ1dGh5ID8gJ01VU1QnIDogJ01VU1QgTk9U
JzsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKworICAgIGNvbnN0IEJBRF9TVFJJTkdTID0g
WworICAgICAgICAnJCcsCisgICAgICAgICciJywKKyAgICAgICAgJ+S4gOS6m+azqOmHiicsCisg
ICAgICAgICcjbGluZSA0MiAiZm9vLmdsc2wiJywKKyAgICBdOworICAgIGNvbnN0IFRFU1RTID0g
WworICAgICAgICBbJ2luIGlkZW50aWZpZXInLCBzID0+IHMsIGZhbHNlXSwKKyAgICAgICAgWydp
biBjb21tZW50JywgcyA9PiBgLy8gJHtzfWAsIHRydWUsIHRydWVdLAorICAgICAgICBbJ2luIGlm
ZGVmLW91dCcsIHMgPT4gYCNpZiAwIFxuJHtzfSBcbiNlbmRpZmAsIHRydWVdLAorICAgICAgICBb
J2luIGlmZGVmLW91dCAjcHJlcHJvYycsIHMgPT4gYCNpZiAwIFxuIyR7c30gXG4jZW5kaWZgLCB0
cnVlXSwKKyAgICAgICAgWydpbiAjcHJlcHJvYycsIHMgPT4gYCMke3N9YCwgZmFsc2VdLAorICAg
ICAgICBbJ2luIGNvbW1lbnQgYWZ0ZXIgI2RlZmluZScsIHMgPT4gYCNkZWZpbmUgVEVTVCAgLy8g
JHtzfWAsIHRydWVdLCAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGNyYnVnLmNvbS85NDA4NjUKKyAg
ICBdOworCisgICAgY29uc3QgZ2xzbF90ZXN0cyA9IFtdOworCisgICAgZm9yIChjb25zdCBzIG9m
IEJBRF9TVFJJTkdTKSB7CisgICAgICAgIGZvciAoY29uc3QgW3doZXJlLCB0ZW1wbGF0ZSwgdmFs
aWRDb21waWxlXSBvZiBURVNUUykgeworICAgICAgICAgICAgY29uc3Qgc3QgPSB0ZW1wbGF0ZShz
KTsKKyAgICAgICAgICAgIGNvbnN0IHNyYyA9IGAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
JHtzdH0KK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsK
K31gLnRyaW0oKTsKKworICAgICAgICAgICAgdGVzdFNoYWRlclNvdXJjZShzcmMsIGBzaGFkZXJT
b3VyY2UgYWxsb3dzIE91dC1vZi1jaGFyc2V0IHN0cmluZyAnJHtzfScgJHt3aGVyZX0gdW50aWwg
Y29tcGlsYXRpb24uYCk7CisKKyAgICAgICAgICAgIGdsc2xfdGVzdHMucHVzaCgKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZTaGFkZXJTb3VyY2U6IHNyYywKKyAgICAg
ICAgICAgICAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IHZhbGlkQ29tcGlsZSwKKyAgICAgICAgICAg
ICAgICAgICAgbGlua1N1Y2Nlc3M6IHZhbGlkQ29tcGlsZSwKKyAgICAgICAgICAgICAgICAgICAg
cGFzc01zZzogYE91dC1vZi1jaGFyc2V0IHN0cmluZyAnJHtzfScgJHt3aGVyZX0gJHtNVVNUKHZh
bGlkQ29tcGlsZSl9IGNvbXBpbGUuYAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMo
Z2xzbF90ZXN0cyk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
Y29tcGFyZS1sb29wLWluZGV4LXRvLXVuaWZvcm0uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb21wYXJlLWxv
b3AtaW5kZXgtdG8tdW5pZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NmRhN2ZlYTljNGExMzA1YTI1
M2MyOTAzZGNkYmU2YmY3NmM5NDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvY29tcGFy
ZS1sb29wLWluZGV4LXRvLXVuaWZvcm0uaHRtbApAQCAtMCwwICsxLDUwIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Ecml2ZXIgYnVnIC0g
Q29tcGFyaW5nIGxvb3AgaW5kZXggYWdhaW5zdCB1bmlmb3JtIGluIGEgZnJhZ21lbnQgc2hhZGVy
IHNob3VsZCB3b3JrPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2ds
c2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3VuaWZvcm0gaW50IHVDb3VudDsKKwordm9pZCBtYWluKCkgeworICAgIGZs
b2F0IGEgPSAwLjA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAg
aWYgKGkgPCB1Q291bnQpIHsKKyAgICAgICAgICAgIGEgKz0gMC4yOworICAgICAgICB9CisgICAg
fQorICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gYSwgYSwgMC4wLCAxLjApOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oIkNvbXBhcmluZyBsb29wIGluZGV4IHRvIGFuIHVuaWZvcm0gaW4g
YSBmcmFnbWVudCBzaGFkZXIgc2hvdWxkIHdvcmsuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXInLAorICBmU2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdDb21wYXJl
IGEgbG9vcCBpbmRleCB0byBhbiB1bmlmb3JtJywKKyAgdW5pZm9ybXM6IFt7bmFtZTogInVDb3Vu
dCIsIGZ1bmN0aW9uTmFtZTogInVuaWZvcm0xaSIsIHZhbHVlOiA1fV0KK30KK10pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb21wbGV4LWds
c2wtZG9lcy1ub3QtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb21wbGV4LWdsc2wtZG9lcy1ub3Qt
Y3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjMyNGRlZjg0OTk4MjY2MDc1YWVhMzI5MGZjMTdkMTlj
ZjQxOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbXBsZXgtZ2xzbC1kb2VzLW5v
dC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMTkxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Ecml2ZXIgQnVnIC0gY29tcGxleCBnbHNsIHNo
b3VsZCBub3QgY3Jhc2g8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4g
PC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IGFfcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWlu
ZyB2ZWM0IHZfdmFyeWluZzsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdl92
YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyQXJyYXlUZXN0IiB0eXBl
PSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordmFyeWlu
ZyB2ZWM0IHZfdmFyeWluZzsKK3VuaWZvcm0gJCh0eXBlKSB1X3VuaWZvcm1bJChudW1UZXN0VHlw
ZSldOwordm9pZCBtYWluKCkKK3sKKyAgICB2X3ZhcnlpbmcgPSAkKGNvZGUpOworICAgIGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckFy
cmF5VGVzdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gJCh0eXBlKSB1X3VuaWZvcm1bJChudW1UZXN0VHlwZSldOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSAkKGNvZGUpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyVW5pZm9ybVRlc3QiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
YXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CiskKHVu
aWZvcm1zKQordm9pZCBtYWluKCkKK3sKKyAgICB2X3ZhcnlpbmcgPSAkKGNvZGUpOworICAgIGds
X1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
clVuaWZvcm1UZXN0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworJCh1bmlmb3JtcykKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gJChjb2RlKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCk7CitkZWJ1ZygiIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK3ZhciB1bmlmb3JtVHlwZXMgPSBb
CisgIHsgdHlwZTogImJvb2wiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogMSwgcm93czogMSwg
Y29kZTogInZlYzQodV91bmlmb3JtJChpZCkkKGluZGV4KSwgMCwgMCwgMCkiLCB9LAorICB7IHR5
cGU6ICJmbG9hdCIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDEsIHJvd3M6IDEsIGNvZGU6ICJ2
ZWM0KHVfdW5pZm9ybSQoaWQpJChpbmRleCksIDAsIDAsIDApIiwgfSwKKyAgeyB0eXBlOiAiaW50
IiwgICAgICAgICBjb21wb25lbnRzUGVyUm93OiAxLCByb3dzOiAxLCBjb2RlOiAidmVjNCh1X3Vu
aWZvcm0kKGlkKSQoaW5kZXgpLCAwLCAwLCAwKSIsIH0sCisgIHsgdHlwZTogInZlYzIiLCAgICAg
ICAgY29tcG9uZW50c1BlclJvdzogMiwgcm93czogMSwgY29kZTogInZlYzQodV91bmlmb3JtJChp
ZCkkKGluZGV4KSwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJpdmVjMiIsICAgICAgIGNvbXBvbmVu
dHNQZXJSb3c6IDIsIHJvd3M6IDEsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSQoaWQpJChpbmRleCks
IDAsIDApIiwgfSwKKyAgeyB0eXBlOiAiYnZlYzIiLCAgICAgICBjb21wb25lbnRzUGVyUm93OiAy
LCByb3dzOiAxLCBjb2RlOiAidmVjNCh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpLCAwLCAwKSIsIH0s
CisgIHsgdHlwZTogInZlYzMiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogMywgcm93czogMSwg
Y29kZTogInZlYzQodV91bmlmb3JtJChpZCkkKGluZGV4KSwgMCkiLCB9LAorICB7IHR5cGU6ICJp
dmVjMyIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDMsIHJvd3M6IDEsIGNvZGU6ICJ2ZWM0KHVf
dW5pZm9ybSQoaWQpJChpbmRleCksIDApIiwgfSwKKyAgeyB0eXBlOiAiYnZlYzMiLCAgICAgICBj
b21wb25lbnRzUGVyUm93OiAzLCByb3dzOiAxLCBjb2RlOiAidmVjNCh1X3VuaWZvcm0kKGlkKSQo
aW5kZXgpLCAwKSIsIH0sCisgIHsgdHlwZTogInZlYzQiLCAgICAgICAgY29tcG9uZW50c1BlclJv
dzogNCwgcm93czogMSwgY29kZTogInZlYzQodV91bmlmb3JtJChpZCkkKGluZGV4KSkiLCB9LAor
ICB7IHR5cGU6ICJpdmVjNCIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDQsIHJvd3M6IDEsIGNv
ZGU6ICJ2ZWM0KHVfdW5pZm9ybSQoaWQpJChpbmRleCkpIiwgfSwKKyAgeyB0eXBlOiAiYnZlYzQi
LCAgICAgICBjb21wb25lbnRzUGVyUm93OiA0LCByb3dzOiAxLCBjb2RlOiAidmVjNCh1X3VuaWZv
cm0kKGlkKSQoaW5kZXgpKSIsIH0sCisvLyBZZXMsIHRoZSBzcGVjIHNheXMgbWF0MiB0YWtlcyA0
IGNvbHVtbnMsIDIgcm93cy4KKyAgeyB0eXBlOiAibWF0MiIsICAgICAgICBjb21wb25lbnRzUGVy
Um93OiA0LCByb3dzOiAyLCBjb2RlOiAidmVjNCh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpWzBdLCAw
LCAwKSIsIH0sCisgIHsgdHlwZTogIm1hdDMiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogMywg
cm93czogMywgY29kZTogInZlYzQodV91bmlmb3JtJChpZCkkKGluZGV4KVswXSwgMCkiLCB9LAor
ICB7IHR5cGU6ICJtYXQ0IiwgICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDQsIHJvd3M6IDQsIGNv
ZGU6ICJ2ZWM0KHVfdW5pZm9ybSQoaWQpJChpbmRleClbMF0pIiwgfSwKKy8vIFNhbXBsZXJzIGdl
bmVyYWxseSBoYXZlIG1vcmUgcmVzdGljdGl2ZSBsaW1pdHMuCisvLyAgeyB0eXBlOiAic2FtcGxl
cjJEIiwgICBjb21wb25lbnRzUGVyUm93OiAxLCByb3dzOiAxLCBjb2RlOiAidmVjNCh0ZXh0dXJl
MkQodV91bmlmb3JtWyQoaW5kZXgpXSwgdmVjMigwLCAwKSkpIiwgfSwKKy8vICB7IHR5cGU6ICJz
YW1wbGVyQ3ViZSIsIGNvbXBvbmVudHNQZXJSb3c6IDEsIHJvd3M6IDEsIGNvZGU6ICJ2ZWM0KHRl
eHR1cmVDdWJlKHVfdW5pZm9ybVskKGluZGV4KV0sIHZlYzMoMCwgMCwgMCkpKSIsIH0sCitdOwor
Cit2YXIgdkJhc2VTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJ2c2hhZGVyIik7Cit2YXIgZkJhc2VT
b3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJmc2hhZGVyIik7Cit2YXIgdkFycmF5VGVzdFNvdXJjZSA9
IHd0dS5nZXRTY3JpcHQoInZzaGFkZXJBcnJheVRlc3QiKTsKK3ZhciBmQXJyYXlUZXN0U291cmNl
ID0gd3R1LmdldFNjcmlwdCgiZnNoYWRlckFycmF5VGVzdCIpOwordmFyIHZVbmlmb3JtVGVzdFNv
dXJjZSA9IHd0dS5nZXRTY3JpcHQoInZzaGFkZXJVbmlmb3JtVGVzdCIpOwordmFyIGZVbmlmb3Jt
VGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoImZzaGFkZXJVbmlmb3JtVGVzdCIpOworCit2YXIg
dGVzdHMgPSBbXTsKK3ZhciBzaGFkZXJUeXBlcyA9IFsKKyAgeyB0eXBlOiAidmVydGV4IiwKKyAg
ICAvLyBGb3IgdGVzdHMgdGhhdCBleHBlY3QgZmFpbHVyZSB3aGljaCBzaGFkZXIgbWlnaHQgZmFp
bC4KKyAgICB2ZXJ0RXhwZWN0YXRpb246IGZhbHNlLAorICAgIGZyYWdFeHBlY3RhdGlvbjogdHJ1
ZSwKKyAgICB2ZXJ0QXJyYXlUZXN0OiB2QXJyYXlUZXN0U291cmNlLAorICAgIGZyYWdBcnJheVRl
c3Q6IGZCYXNlU291cmNlLAorICAgIHZlcnRVbmlmb3JtVGVzdDogdlVuaWZvcm1UZXN0U291cmNl
LAorICAgIGZyYWdVbmlmb3JtVGVzdDogZkJhc2VTb3VyY2UsCisgICAgbWF4VmVjdG9yczogZ2wu
Z2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSwKKyAgICBtaW5WZWN0
b3JzOiAxMjgsICAvLyBHTFNMIEVTIDEuMC4xNyBBcHBlbmRpeCBBLjcsCisgIH0sCisgIHsgdHlw
ZTogImZyYWdtZW50IiwKKyAgICAvLyBGb3IgdGVzdHMgdGhhdCBleHBlY3QgZmFpbHVyZSB3aGlj
aCBzaGFkZXIgbWlnaHQgZmFpbC4KKyAgICB2ZXJ0RXhwZWN0YXRpb246IHRydWUsCisgICAgZnJh
Z0V4cGVjdGF0aW9uOiBmYWxzZSwKKyAgICB2ZXJ0QXJyYXlUZXN0OiB2QmFzZVNvdXJjZSwKKyAg
ICBmcmFnQXJyYXlUZXN0OiBmQXJyYXlUZXN0U291cmNlLAorICAgIHZlcnRVbmlmb3JtVGVzdDog
dkJhc2VTb3VyY2UsCisgICAgZnJhZ1VuaWZvcm1UZXN0OiBmVW5pZm9ybVRlc3RTb3VyY2UsCisg
ICAgbWF4VmVjdG9yczogZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZF
Q1RPUlMpLAorICAgIG1pblZlY3RvcnM6IDE2LCAgLy8gR0xTTCBFUyAxLjAuMTcgQXBwZW5kaXgg
QS43LAorICB9LAorXTsKK2ZvciAodmFyIHNzID0gMDsgc3MgPCBzaGFkZXJUeXBlcy5sZW5ndGg7
ICsrc3MpIHsKKyAgdmFyIHNoYWRlclR5cGUgPSBzaGFkZXJUeXBlc1tzc107CisgIGRlYnVnKCJt
YXggIiArIHNoYWRlclR5cGUudHlwZSArICI6ICIgKyBzaGFkZXJUeXBlLm1heFZlY3RvcnMpOwor
ICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdW5pZm9ybVR5cGVzLmxlbmd0aDsgKytpaSkgeworICAg
IHZhciBpbmZvID0gdW5pZm9ybVR5cGVzW2lpXTsKKyAgICB3dHUubG9nKCJjaGVja2luZzogIiAr
IGluZm8udHlwZSk7CisgICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSBhbW91bnQgb2YgdGhpcyB0
eXBlIGFsbG93ZWQgaW4gYSBzaW5nbGUgYXJyYXkuCisgICAgdmFyIG51bVZhcnMgPSBNYXRoLmZs
b29yKHNoYWRlclR5cGUubWF4VmVjdG9ycyAvIGluZm8ucm93cyk7CisgICAgLy8gQ29tcHV0ZSB0
aGUgbWluaW11bSByZXF1aXJlZCB0byB3b3JrIGluIGEgc2luZ2xlIGFycmF5LgorICAgIHZhciBt
aW5WYXJzID0gTWF0aC5mbG9vcihzaGFkZXJUeXBlLm1pblZlY3RvcnMgLyBpbmZvLnJvd3MpOwor
ICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gYWxsb3dlZCBhcyBzaW5nbGUgZWxlbWVudHMKKyAg
ICB2YXIgbnVtUGVyUm93ID0gTWF0aC5mbG9vcig0IC8gaW5mby5jb21wb25lbnRzUGVyUm93KTsK
KyAgICB2YXIgbnVtTWF4ID0gTWF0aC5mbG9vcihzaGFkZXJUeXBlLm1heFZlY3RvcnMgKiBudW1Q
ZXJSb3cgLyBpbmZvLnJvd3MpOworCisgICAgLy8gVGVzdCBhcnJheVttYXhdIG9mIHRoZSB0eXBl
CisgICAgLy8gTm90ZTogV2UgY2FuJ3QgdGVzdCBmb3Igc3VjY2VzcyBvciBmYWlsZXIgYXMgYWN0
dWFsIEdMIGRyaXZlcnMgYXJlIG9ubHkgcmVxdWlyZWQgdG8gYmUgYWJsZSB0bworICAgIC8vIGRv
IHRoZSBtaW5pbXVtIG51bWJlci4gQWZ0ZXIgdGhhdCBpdCBjYW4gZmFpbCBmb3IgYW55IHJlYXNv
bi4KKyAgICB2YXIgY29kZSA9IHd0dS5yZXBsYWNlUGFyYW1zKGluZm8uY29kZSwge2lkOiAiIiwg
aW5kZXg6ICJbIiArIChudW1WYXJzIC0gMSkgKyAiXSJ9KTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAg
ICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHNoYWRlclR5cGUudmVydEFycmF5
VGVzdCwge251bVRlc3RUeXBlOiBudW1WYXJzLCBjb2RlOiBjb2RlfSwgaW5mbyksCisgICAgICB2
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFy
YW1zKHNoYWRlclR5cGUuZnJhZ0FycmF5VGVzdCwge251bVRlc3RUeXBlOiBudW1WYXJzLCBjb2Rl
OiBjb2RlfSwgaW5mbyksCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtT
dWNjZXNzOiB0cnVlLAorICAgICAgaWdub3JlUmVzdWx0czogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6
IHNoYWRlclR5cGUudHlwZSArICIgc2hhZGVyIHdpdGggdW5pZm9ybSBhcnJheSBvZiAiICsgaW5m
by50eXBlICsgIiB3aXRoICIgKyBudW1WYXJzICsgIiBlbGVtZW50cyAodGhlIG1heGltdW0pIiwK
KyAgICB9KTsKKworICAgIHZhciBnZW5lcmF0ZUNvZGUgPSBmdW5jdGlvbihudW1WYXJzKSB7Cisg
ICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKKyAgICAgIHZhciBjb2RlcyA9IFtdOworICAgICAgZm9y
ICh2YXIgdXUgPSAwOyB1dSA8IG51bVZhcnM7ICsrdXUpIHsKKyAgICAgICAgdW5pZm9ybXMucHVz
aCgiICAgIHVuaWZvcm0gIiArIGluZm8udHlwZSArICIgdV91bmlmb3JtIiArIHV1ICsgIjsiKTsK
KyAgICAgICAgY29kZXMucHVzaCh3dHUucmVwbGFjZVBhcmFtcyhpbmZvLmNvZGUsIHtpZDogdXUs
IGluZGV4OiAiIn0pKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7CisgICAgICAgIHVuaWZvcm1z
OiB1bmlmb3Jtcy5qb2luKCJcbiIpLAorICAgICAgICBjb2RlOiBjb2Rlcy5qb2luKCIgKyBcbiAg
ICAgICAgICAgICIpLAorICAgICAgfTsKKyAgICB9OworCisgICAgLy8gVGVzdCBtYXggdW5pZm9y
bXMgb2YgdHlwZS4KKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5y
ZXBsYWNlUGFyYW1zKHNoYWRlclR5cGUudmVydFVuaWZvcm1UZXN0LCBnZW5lcmF0ZUNvZGUobnVt
TWF4KSwgaW5mbyksCisgICAgICB2U2hhZGVyU3VjY2Vzczogc2hhZGVyVHlwZS52ZXJ0RXhwZWN0
YXRpb24sCisgICAgICBmU2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJUeXBl
LmZyYWdVbmlmb3JtVGVzdCwgZ2VuZXJhdGVDb2RlKG51bU1heCksIGluZm8pLAorICAgICAgZlNo
YWRlclN1Y2Nlc3M6IHNoYWRlclR5cGUuZnJhZ0V4cGVjdGF0aW9uLAorICAgICAgbGlua1N1Y2Nl
c3M6IHRydWUsCisgICAgICBpZ25vcmVSZXN1bHRzOiB0cnVlLAorICAgICAgcGFzc01zZzogc2hh
ZGVyVHlwZS50eXBlICsgIiBzaGFkZXIgd2l0aCAiICsgKG51bU1heCkgKyAiIHVuaWZvcm1zIG9m
ICIgKyBpbmZvLnR5cGUsCisgICAgfSk7CisgIH0KK30KK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5y
dW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbXBvdW5kLWFzc2ln
bm1lbnQtdHlwZS1jb21iaW5hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbXBvdW5kLWFzc2lnbm1l
bnQtdHlwZS1jb21iaW5hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNjE5NDZiMzUwY2RiNjY4MTU4
ZThjMmYwMjI5ZDhlNWVlMTBiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvY29tcG91
bmQtYXNzaWdubWVudC10eXBlLWNvbWJpbmF0aW9uLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+UmVzdWx0
IHR5cGUgc2hvdWxkIG1hdGNoIHRoZSBsLXZhbHVlIHR5cGUgaW4gY29tcG91bmQgYXNzaWdubWVu
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL2NvbXBvdW5kLWFzc2lnbm1lbnQtdHlwZS1jb21iaW5hdGlvbi5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoMSkiPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbmRpdGlvbmFsLWRpc2Nh
cmQtaW4tbG9vcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbmRpdGlvbmFsLWRpc2NhcmQtaW4tbG9vcC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjNDcwOWRkMTAzMmY1NDI3NmRmMThlMzNlYTc5ZDIyZDk4Yzc2NWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvY29uZGl0aW9uYWwtZGlzY2FyZC1pbi1sb29w
Lmh0bWwKQEAgLTAsMCArMSwxNDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q29uZGl0aW9uYWwgZGlzY2FyZCBpbiBsb29wIGlzc3Vl
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxjYW52YXMgaWQ9Im91dHB1dCIg
c3R5bGU9ImJvcmRlcjogbm9uZTsiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0IGlkPSJzaGFkZXItdnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKy8vIElu
cHV0cworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIGFfdGV4X2Nv
b3JkczsKKworLy8gT3V0cHV0Cit2YXJ5aW5nIHZlYzIgICB2X3RleF9jb29yZHM7CisKK3ZvaWQg
bWFpbih2b2lkKSB7CisgICAgdl90ZXhfY29vcmRzID0gYV90ZXhfY29vcmRzOworICAgIGdsX1Bv
c2l0aW9uICA9IGFfcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ic2hhZGVy
LWZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisvLyBDb25zdGFudHMKK2NvbnN0IGZsb2F0IFRFWEVMX0NPVU5UX1YgPSAyNTYuMDsKK2Nv
bnN0IGZsb2F0IFRFWEVMX0hFSUdIVCAgPSAxLjAgLyBURVhFTF9DT1VOVF9WOworY29uc3QgZmxv
YXQgU0VQX0lYICAgICAgICA9IFRFWEVMX0NPVU5UX1YgLyAyLjA7CisKK2NvbnN0IHZlYzQgR1JF
RU4gPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Citjb25zdCB2ZWM0IEJMVUUgID0gdmVjNCgw
LjAsIDAuMCwgMS4wLCAxLjApOworCisvLyBJbnB1dAordmFyeWluZyB2ZWMyIHZfdGV4X2Nvb3Jk
czsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV9kYXRhOworCisvLyBXaXRob3V0IHRoaXMgZnVuY3Rp
b24gb3IgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSBkYXRhLCB0aGUgaXNzdWUgZG9lcyBub3Qgb2Nj
dXIKK21lZGl1bXAgdmVjNCBVbnBhY2tEYXRhKGluIHZlYzQgaW5EYXRhKSB7CisgICAgIGZsb2F0
IHMgPSBpbkRhdGEueDsKKyAgICAgLy8gTm90ZSBzIGlzIGFsd2F5cyAwCisgICAgIC8vIG1vZCgw
LCAxKSA9IDAKKyAgICAgLy8gU28gcmV0dXJuIHZhbHVlID0gKDAsIDAsIC0xLCAwKQorICAgIHJl
dHVybiB2ZWM0KDAuMCwgMC4wLCBtb2QocywgMS4wKSAtIDEuMCwgMC4wKTsKKworICAgIC8vIENv
bW1lbnQgb3V0IHRoZSBsaW5lIGFib3ZlIGFuZCB1bmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgYW5k
IHRoZSB0ZXN0IHN1Y2NlZWRzIG9uIGFuZ2xlLWR4MTEKKyAgICAvLyByZXR1cm4gdmVjNCgwLjAs
IDAuMCwgLTEuMCwgMC4wKTsKK30KKwordm9pZCBtYWluKHZvaWQpIHsKKyAgICAgLy8gU2V0IGlu
aXRpYWwgY29sb3IKKyAgICBnbF9GcmFnQ29sb3IgPSBCTFVFOworCisgICAgaWYgKGdsX0ZyYWdD
b29yZC55IDw9IFNFUF9JWCkgeworICAgICAgICBtZWRpdW1wIHZlYzIgYWRkciA9IHZlYzIodl90
ZXhfY29vcmRzLngsIFRFWEVMX0hFSUdIVCk7CisKKyAgICAgICAgZm9yIChmbG9hdCBlX2l4ID0g
MC4wOyBlX2l4IDwgVEVYRUxfQ09VTlRfVjsgKytlX2l4KSB7CisgICAgICAgICAgICB2ZWM0IGVu
dHJ5ID0gdGV4dHVyZTJEKHVfZGF0YSwgYWRkcik7CisgICAgICAgICAgICBtZWRpdW1wIHZlYzQg
dW5wYWNrID0gVW5wYWNrRGF0YShlbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEJ1ZmZlciBpcyBm
aWxsZWQgd2l0aCAwLCB1bnBhY2sgaXMgYWx3YXlzICgwLCAwLCAtMSwgMCkKKyAgICAgICAgICAg
IC8vIFNvIGRpc2NhcmQgaXMgYWx3YXlzIHRyaWdnZXJlZAorICAgICAgICAgICAgaWYgKHVucGFj
ay56ID09IC0xLjApIHsKKyAgICAgICAgICAgICAgICBkaXNjYXJkOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBhZGRyLnkgKz0gdW5wYWNrLnogKiBURVhFTF9IRUlHSFQ7CisgICAgICAg
IH0KKyAgICAgICAgLy8gSWYgZGlzY2FyZCBpcyBub3QgdHJpZ2dlcmVkIHRoZSBvdXRwdXQgY29s
b3IgaXMgYmx1ZQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gR1JF
RU47CisgICAgfQorfQorPC9zY3JpcHQ+CisKKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwor
ZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKK2RlYnVnKCJJZiB0aGUgY29kZSBpcyBleGVjdXRl
ZCBjb3JyZWN0bHksIHRoZSB1cHBlciBoYWxmIG9mIHRoZSB2aWV3cG9ydCB3aWxsIGJlIGdyZWVu
LCB0aGUgbG93ZXIgaGFsZiB3aWxsIGJlIHJlZC4iKTsKK2RlYnVnKCJUaGlzIGlzIGEgY29uZm9y
bWFuY2Ugc3VpdGUgdGVzdCBmb3IgdGhlIGlzc3VlIHJlcG9ydGVkIGhlcmUgOiBodHRwczovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTcwNiIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm91dHB1dCIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwor
aWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVs
c2UgeworCisgIC8vIENyZWF0ZSB0ZXh0dXJlIGZpbGxlZCB3aXRoIHplcm8ncworICB2YXIgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9T
LCAJIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9ULCAJIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Cisg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBn
bC5ORUFSRVNUKTsKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDI1NiwgMjU2LCBbMCwgMCwg
MCwgMF0pOworCisgIC8vIENsZWFyIGNvbXBsZXRlIHZpZXdwb3J0IHRvIHJlZAorICBnbC5jbGVh
ckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICB2YXIgYXR0cmliQnVmZmVycyA9IHd0dS5z
ZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFt
KGdsLCBbInNoYWRlci12cyIsICJzaGFkZXItZnMiXSwgWyJhX3Bvc2l0aW9uIiwgImFfdGV4X2Nv
b3JkcyJdLCBbMCwgMV0sIHRydWUpOworCisgIC8vIEJpbmQgdGV4dHVyZQorICB2YXIgdW5pZm9y
bU1hcCA9IHd0dS5nZXRVbmlmb3JtTWFwKGdsLCBwcm9ncmFtKTsKKyAgZ2wuYWN0aXZlVGV4dHVy
ZShnbC5URVhUVVJFMCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Cisg
IGdsLnVuaWZvcm0xaSh1bmlmb3JtTWFwLnVfZGF0YS5sb2NhdGlvbiwgMCk7CisKKyAgLy8gRHJh
dworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworICAvLyBWZXJpZnkgb3V0cHV0CisgIHd0dS5j
aGVja0NhbnZhc1JlY3QoZ2wsIDAsICAgMCwgMjU2LCAxMjgsIFsgMjU1LCAgIDAsICAgMCwgMjU1
IF0sICJzaG91bGQgYmUgcmVkIiwgICAgMSk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAs
IDEyOCwgMjU2LCAxMjgsIFsgICAwLCAyNTUsICAgMCwgMjU1IF0sICJzaG91bGQgYmUgZ3JlZW4i
LCAgMSk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb25kaXRpb25hbC1kaXNjYXJkLW9w
dGltaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbmRpdGlvbmFsLWRpc2NhcmQtb3B0aW1pemF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMzYjFiYjZmYmI0YjEwN2UxYzQwNjZiYTU0MzVmNzQ0YTU0
ZTA2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb25kaXRpb25hbC1kaXNjYXJkLW9w
dGltaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsMTE3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0gYXV0aG9yOiBCaWxsIEJheHRlciAod2JheHRl
ciBhdCBnb29nbGUuY29tKSAtLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkFOR0xFIFdlYkdMIFNoYWRlciBDb25kaXRp
b25hbHMgUmVwcm88L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGNhbnZhcyBp
ZD0icmVwcm8iIHN0eWxlPSJib3JkZXI6IG5vbmU7IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0ic2hhZGVyLXZzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRl
eCI+CithdHRyaWJ1dGUgdmVjMiBwb3M7Cit2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgdmFyQTsKK3Zv
aWQgbWFpbih2b2lkKSB7CisgIHZhckEgPSAwLjsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywg
MC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci1mcyIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3Zhcnlpbmcg
ZmxvYXQgdmFyQTsKK3ZvaWQgbWFpbih2b2lkKSB7CisgIGlmICh2YXJBIDwgLTEuIHx8ICh2YXJB
IDwgLTEuICYmIHZhckEgPiAxLikpIHsKKyAgICBkaXNjYXJkOworICB9CisgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMCwgMSwgMCwgMSkgKyAyLiAqIHZhckEgKiAyLjsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0IGlkPSJzaGFkZXItZnMtbXV0YWJsZSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgZmxvYXQgdmFyQTsKK3ZvaWQgbWFp
bih2b2lkKSB7CisgIGZsb2F0IGIgPSB2YXJBOworICBpZiAodmFyQSA8IChiIC09IDEuKSB8fCAo
dmFyQSA8IGIgJiYgdmFyQSA+IChiICs9IDIuKSkpIHsKKyAgICBkaXNjYXJkOworICB9CisgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSkgKyAyLiAqIHZhckEgKiAyLjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0ic2hhZGVyLWZzLXVuZm9sZGVkIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyBmbG9hdCB2YXJBOwor
dm9pZCBtYWluKHZvaWQpIHsKKyAgYm9vbCBzMSA9IHZhckEgPCAtMS47CisgIGlmICghczEpIHsK
KyAgICBib29sIHMyID0gdmFyQSA8IC0xLjsKKyAgICBpZiAoczIpIHsKKyAgICAgIHMyID0gdmFy
QSA+IDEuOworICAgIH0KKyAgICBzMSA9IHMyOworICB9CisgIGlmIChzMSkgeworICAgIGRpc2Nh
cmQ7CisgIH0KKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKSArIDIuICogdmFyQSAq
IDIuOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitkZXNjcmlwdGlv
bigpOworZGVidWcoIiIpOworZGVidWcoIklmIHRoaW5ncyBhcmUgd29ya2luZyBjb3JyZWN0bHks
IHRoZW4gdGhlcmUgd2lsbCBiZSBhIGdyZWVuIHNxdWFyZS4iKTsKK2RlYnVnKCJPdGhlcndpc2Ug
aXQgd2lsbCBiZSBhIGJsYWNrIHZvaWQuIik7CitkZWJ1ZygiVGhpcyBpcyBhIHJlcHJvIGZvciBh
biBpc3N1ZSBzZWVuIG9uIHRoZSBEM0Q5IEFOR0xFIGltcGxlbWVudGF0aW9uIG9mIFdlYkdMIG9u
IENocm9tZSBpbiBhIHNoYWRlciB3aXRoIGEgY29uZGl0aW9uYWwgZGlzY2FyZCwgd2hlcmUgdGhl
IGNvbmRpdGlvbmFsIGlzIG9mIHRoZSBmb3JtIChhIHx8IChiICYmIGMpKS4iKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXBybyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworaWYgKCFn
bCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgIHd0dS5zZXR1cFVuaXRRdWFk
KGdsKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIHNoYWRlciB3aXRoIGNvbmRp
dGlvbmFsIGRpc2NhcmQiKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsi
c2hhZGVyLXZzIiwgInNoYWRlci1mcyJdLCBbInBvcyJdLCB1bmRlZmluZWQsIHRydWUpOworICB3
dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMTI4LCAxMjgs
IDEyOCwgMTI4LCBbIDAsIDI1NSwgMCwgMjU1IF0sICJzaG91bGQgYmUgZ3JlZW4iLCAxKTsKKwor
ICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIGNvbmRpdGlvbmFsIGRpc2NhcmQgd2l0aCBz
aWRlLWVmZmVjdHMgaW4gY29uZGl0aW9ucyIpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgIHZhciBwcm9ncmFtTXV0YWJsZSA9IHd0dS5z
ZXR1cFByb2dyYW0oZ2wsIFsic2hhZGVyLXZzIiwgInNoYWRlci1mcy1tdXRhYmxlIl0sIFsicG9z
Il0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCAxMjgsIDEyOCwgMTI4LCAxMjgsIFsgMCwgMjU1LCAwLCAyNTUgXSwg
InNob3VsZCBiZSBncmVlbiIsIDEpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRlc3Rpbmcg
Y29uZGl0aW9uYWwgZGlzY2FyZCB3aXRoIHVuZm9sZGVkIGNvbmRpdGlvbiBsb2dpYyIpOworICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgIHZh
ciBwcm9ncmFtTXV0YWJsZSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsic2hhZGVyLXZzIiwgInNo
YWRlci1mcy11bmZvbGRlZCJdLCBbInBvcyJdLCB1bmRlZmluZWQsIHRydWUpOworICB3dHUuZHJh
d1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMTI4LCAxMjgsIDEyOCwg
MTI4LCBbIDAsIDI1NSwgMCwgMjU1IF0sICJzaG91bGQgYmUgZ3JlZW4iLCAxKTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9idWdzL2NvbmRpdGlvbmFsLXRleHR1cmUtZmV0Y2guaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
YnVncy9jb25kaXRpb25hbC10ZXh0dXJlLWZldGNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM4MmI4Yzgw
MDE3NTM4OGQ3M2U2ZGFmYjk1Zjg3YWU1MjEwMDVlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
YnVncy9jb25kaXRpb25hbC10ZXh0dXJlLWZldGNoLmh0bWwKQEAgLTAsMCArMSwxMzAgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNvbmRp
dGlvbmFsIHRleHR1cmUgZmV0Y2ggdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJvdXRwdXQiIHN0eWxlPSJib3JkZXI6IG5vbmU7IiB3aWR0aD0i
NjQiIGhlaWdodD0iNjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyQ29uZGl0aW9uYWxU
ZXh0dXJlRmV0Y2giIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMyIGFf
cG9zaXRpb247CithdHRyaWJ1dGUgdmVjNCBhX2NhbnZhc1RpbGVDb2xvcjsKK2F0dHJpYnV0ZSB2
ZWMyIGFfdGV4Q29vcmQ7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2YXJ5aW5nIHZlYzQgY2Fu
dmFzVGlsZUNvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgICBjYW52YXNUaWxlQ29sb3IgPSBhX2Nh
bnZhc1RpbGVDb2xvcjsKKyAgICB0ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KGFfcG9zaXRpb24sIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnNoYWRlckNvbmRpdGlvbmFsVGV4dHVyZUZldGNoIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IGNhbnZhc1RpbGVD
b2xvcjsKK3VuaWZvcm0gYm9vbCBoYXNUZXh0dXJlOwordW5pZm9ybSBzYW1wbGVyMkQgY2FudmFz
VGlsZVRleHR1cmU7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit1bmlmb3JtIHZlYzQgdXZSZWN0
Owordm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0IGZpbmFsQ29sb3IgPSBjYW52YXNUaWxlQ29sb3I7
CisgICAgaWYgKGhhc1RleHR1cmUpIHsKKyAgICAgICAgdmVjMiBjbGFtcGVkVVYgPSBjbGFtcCh0
ZXhDb29yZC54eSwgdXZSZWN0Lnh5LCB1dlJlY3QuencpOworICAgICAgICBmaW5hbENvbG9yID0g
dGV4dHVyZTJEKGNhbnZhc1RpbGVUZXh0dXJlLCBjbGFtcGVkVVYpOworICAgIH0KKyAgICBnbF9G
cmFnQ29sb3IgPSBmaW5hbENvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworZGVidWcoIklmIHRo
ZSB0ZXN0IHBhc3NlcyBjb3JyZWN0bHkgdGhlIHZpZXdwb3J0IHdpbGwgYmUgZ3JlZW4uIik7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgib3V0cHV0Iik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7
CisKK3ZhciBjcmVhdGVHcmVlblRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGV4dHVy
ZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdF
KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
LCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleHR1cmUsIDEs
IDEsIFswLCAyNTUsIDAsIDI1NV0pOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IG51bGwpOworICAgIHJldHVybiB0ZXh0dXJlOworfTsKKwordmFyIHRlc3QgPSBmdW5jdGlvbihn
cmVlblRleHR1cmUpIHsKKyAgICAvLyBUaGlzIGlzIGEgcmVkdWNlZCB0ZXN0IGNhc2UgZm9yIGEg
cHJvYmxlbSByZXBvcnRlZCBieSBGaWdtYS4KKyAgICAvLyBQcm9ncmFtIGNvbXBpbGF0aW9uIHBy
b2R1Y2VzIHRoZSBmb2xsb3dpbmcgd2FybmluZy9lcnJvciBvbiBBTkdMRSdzCisgICAgLy8gRDNE
OSBiYWNrZW5kOgorICAgIC8vIFtXQVJOSU5HOmFuZ2xlX3BsYXRmb3JtX2ltcGwuY2MoNTEpXSA6
IHJ4OjpITFNMQ29tcGlsZXI6OmNvbXBpbGVUb0JpbmFyeSgyMjgpOiBDOlxmYWtlcGF0aCgyNiwx
Mik6IGVycm9yIFg2MDc3OiB0ZXhsZC90ZXhsZGIvdGV4bGRwL2RzeC9kc3kgaW5zdHJ1Y3Rpb25z
IHdpdGggciMgYXMgc291cmNlIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBkeW5hbWljIGNvbmRpdGlv
bmFsICdpZicgYmxvY2tzLCBkeW5hbWljIGNvbmRpdGlvbmFsIHN1YnJvdXRpbmUgY2FsbHMsIG9y
IGxvb3AvcmVwIHdpdGggYnJlYWsqLgorICAgIC8vCisgICAgLy8gQWxsIG9mIHRoZSBvcGVyYXRp
b25zIGluIHRoZSBzaGFkZXIgLS0gaW5jbHVkaW5nIHRoZSBjbGFtcGluZyBvZiB0aGUKKyAgICAv
LyB0ZXh0dXJlIGNvb3JkaW5hdGVzIC0tIHNlZW0gdG8gYmUgbmVlZGVkIGluIG9yZGVyIHRvIHBy
b3Zva2UgdGhpcworICAgIC8vIGVycm9yLgorICAgIC8vCisgICAgLy8gSG93ZXZlciwgdGhpcyBk
b2Vzbid0IHNlZW0gdG8gcHJvZHVjZSBpbmNvcnJlY3QgcmVuZGVyaW5nIHJlc3VsdHMuCisgICAg
dmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgICBnbCwKKyAgICAgICAgWyJ2
c2hhZGVyQ29uZGl0aW9uYWxUZXh0dXJlRmV0Y2giLAorICAgICAgICAgImZzaGFkZXJDb25kaXRp
b25hbFRleHR1cmVGZXRjaCJdLAorICAgICAgICBbImFfcG9zaXRpb24iLCAiYV9jYW52YXNUaWxl
Q29sb3IiLCAiYV90ZXhDb29yZCJdLAorICAgICAgICBbMCwgMSwgMl0sCisgICAgICAgIHRydWUp
OworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgY29tcGls
YXRpb24vbGluayBmYWlsZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTZXQgdXAgYnVm
ZmVycworICAgICAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMik7CisKKyAgICAgICAgLy8g
U2V0IHVwIGNvbnN0YW50IGNvbG9yIChyZWQpCisgICAgICAgIGdsLnZlcnRleEF0dHJpYjRmKDEs
IDEsIDAsIDAsIDEpOworCisgICAgICAgIHZhciB1bmlmb3JtTWFwID0gd3R1LmdldFVuaWZvcm1N
YXAoZ2wsIHByb2dyYW0pOworCisgICAgICAgIC8vIFVzZSB0ZXh0dXJpbmcKKyAgICAgICAgZ2wu
dW5pZm9ybTFpKHVuaWZvcm1NYXBbImhhc1RleHR1cmUiXS5sb2NhdGlvbiwgMSk7CisKKyAgICAg
ICAgLy8gQmluZCB0ZXh0dXJlCisgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAp
OworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBncmVlblRleHR1cmUpOwor
ICAgICAgICBnbC51bmlmb3JtMWkodW5pZm9ybU1hcFsiY2FudmFzVGlsZVRleHR1cmUiXS5sb2Nh
dGlvbiwgMCk7CisKKyAgICAgICAgLy8gU2V0IHVwIChlc3NlbnRpYWxseSBuby1vcCkgY2xhbXAg
cmVjdGFuZ2xlCisgICAgICAgIGdsLnVuaWZvcm00Zih1bmlmb3JtTWFwWyJ1dlJlY3QiXS5sb2Nh
dGlvbiwgMCwgMCwgMC4yNSwgMC4yNSk7CisKKyAgICAgICAgLy8gRHJhdworICAgICAgICB3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworCisgICAgICAgIC8vIFZlcmlmeSBvdXRwdXQKKyAg
ICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdy
ZWVuIiwgMSk7CisgICAgfQorfTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRl
eHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdmFyIHRleCA9IGNyZWF0ZUdyZWVu
VGV4dHVyZSgpOworICAgIHRlc3QodGV4KTsKK30KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9jb25z
dGFudC1wcmVjaXNpb24tcXVhbGlmaWVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvY29uc3RhbnQtcHJlY2lz
aW9uLXF1YWxpZmllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNjI4ODYyYmNiZGM2NDZhM2Q4ZjU0YTZk
YzZlNmRjNTE4ZTJiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvY29uc3RhbnQtcHJl
Y2lzaW9uLXF1YWxpZmllci5odG1sCkBAIC0wLDAgKzEsMTE1IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5CdWcgLSB0aGUgcHJlY2lzaW9u
IHF1YWxpZmllciBvZiBhIGNvbnN0YW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3QgdGhlIHByZWNp
c2lvbiBvZiBhIGNvbnN1bWluZyBvcGVyYXRpb248L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4KKy8vIEl0IGlzIGFzc3VtZWQgdGhhdCB1VGVzdCBpcyBzZXQgdG8gMC4gSXQncyBoZXJlIHRv
IG1ha2UgdGhlIGV4cHJlc3Npb24gbm90IGNvbnN0YW50LgordW5pZm9ybSBtZWRpdW1wIGZsb2F0
IHVUZXN0OworCit2b2lkIG1haW4oKSB7CisgICAgLy8gZXhhY3QgcmVwcmVzZW50YXRpb24gb2Yg
NDA5Ni41IHJlcXVpcmVzIDEzIGJpdHMgb2YgcmVsYXRpdmUgcHJlY2lzaW9uLgorICAgIGNvbnN0
IGhpZ2hwIGZsb2F0IGMgPSA0MDk2LjU7CisgICAgbWVkaXVtcCBmbG9hdCBhID0gMC4wOworICAg
IC8vIEJlbG93LCBhZGRpdGlvbiBzaG91bGQgYmUgZXZhbHVhdGVkIGF0IGhpZ2hwLCBzaW5jZSBv
bmUgb2YgdGhlIG9wZXJhbmRzIGhhcyB0aGUgaGlnaHAgcXVhbGlmaWVyLgorICAgIC8vIFRodXMg
ZnJhY3Qgc2hvdWxkIGFsc28gYmUgZXZhbHVhdGVkIGF0IGhpZ2hwLgorICAgIC8vIFNlZSBPcGVu
R0wgRVMgU2hhZGluZyBMYW5ndWFnZSBzcGVjIHNlY3Rpb24gNC41LjIuCisgICAgLy8gVGhpcyBz
aG91bGQgbWFrZSB0aGUgcmVzdWx0IDAuNSwgc2luY2UgaGlnaHAgcHJvdmlkZXMgYXQgbGVhc3Qg
MTYgYml0cyBvZiByZWxhdGl2ZSBwcmVjaXNpb24uCisgICAgLy8gKGV4Y2VwdGlvbnMgZm9yIG9w
ZXJhdGlvbiBwcmVjaXNpb24gYXJlIGFsbG93ZWQgZm9yIGEgc21hbGwgbnVtYmVyIG9mIGNvbXB1
dGF0aW9uYWxseQorICAgIC8vIGludGVuc2l2ZSBidWlsdC1pbiBmdW5jdGlvbnMsIGJ1dCBpdCBp
cyByZWFzb25hYmxlIHRvIHRoaW5rIHRoYXQgZnJhY3QgaXMgbm90IG9uZSBvZiB0aG9zZSkuCisg
ICAgLy8gSG93ZXZlciwgaWYgZnJhY3QoKSBpcyBpbmNvcnJlY3RseSBldmFsdWF0ZWQgYXQgbWlu
aW11bSBwcmVjaXNpb24gZnVsZmlsbGluZyBtZWRpdW1wIGNyaXRlcmlhLAorICAgIC8vIG9yIGF0
IElFRUUgaGFsZiBmbG9hdCBwcmVjaXNpb24sIHRoZSByZXN1bHQgaXMgMC4wLgorICAgIGEgPSBm
cmFjdChjICsgdVRlc3QpOworCisgICAgLy8gTXVsdGlwbHkgYnkgMi4wIHRvIG1ha2UgdGhlIGNv
bG9yIGdyZWVuLgorICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAyLjAgKiBhLCAwLjAsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJOb0NvbnN0YW50cyIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+CisvLyBUaGlzIHNoYWRlciBoYXMgdGhlIHNhbWUgZnVuY3Rp
b25hbGl0eSBhcyB0aGUgb25lIGFib3ZlLCBidXQgaXQgZG9lc24ndCBjb250YWluCisvLyBvcGVy
YXRpb25zIHRoYXQgY2FuIGJlIGNvbnN0YW50IGZvbGRlZCBhdCBjb21waWxlLXRpbWUuCisvLyBJ
dCdzIGhlcmUgdG8gcHJvdmlkZSBhIHBvaW50IG9mIGNvbXBhcmlzb24uCit1bmlmb3JtIG1lZGl1
bXAgZmxvYXQgdVRlc3Q7Cit1bmlmb3JtIGhpZ2hwIGZsb2F0IHVUZXN0SGlnaDsKKwordm9pZCBt
YWluKCkgeworICAgIGhpZ2hwIGZsb2F0IGMgPSA0MDk2LjUgKyB1VGVzdEhpZ2g7CisgICAgbWVk
aXVtcCBmbG9hdCBhID0gMC4wOworICAgIGEgPSBmcmFjdChjICsgdVRlc3QpOworICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMC4wLCAyLjAgKiBhLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJBbGxIaWdocCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cisv
LyBUaGlzIHNoYWRlciBoYXMgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUgb25lIGFib3Zl
LCBidXQgaXQgb25seSB1c2VzIGhpZ2hwLgorLy8gSXQncyBoZXJlIHRvIHByb3ZpZGUgYSBwb2lu
dCBvZiBjb21wYXJpc29uLgordW5pZm9ybSBoaWdocCBmbG9hdCB1VGVzdDsKKwordm9pZCBtYWlu
KCkgeworICAgIGhpZ2hwIGZsb2F0IGMgPSA0MDk2LjUgKyB1VGVzdDsKKyAgICBoaWdocCBmbG9h
dCBhID0gMC4wOworICAgIGEgPSBmcmFjdChjICsgdVRlc3QpOworICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMC4wLCAyLjAgKiBhLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigp
OworCitmdW5jdGlvbiB0ZXN0KCkgeworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgIHZh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWls
ZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0
dXJuOworICB9CisgIGlmIChnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRf
U0hBREVSLCBnbC5ISUdIX0ZMT0FUKS5wcmVjaXNpb24gPT0gMCkgeworICAgIHRlc3RQYXNzZWQo
ImhpZ2hwIHByZWNpc2lvbiBub3Qgc3VwcG9ydGVkIik7CisgICAgZmluaXNoVGVzdCgpOworICB9
IGVsc2UgeworICAgIEdMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCisgICAg
eworICAgICAgZlNoYWRlcklkOiAnZnNoYWRlcicsCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1
ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgcGFzc01zZzogJ1RoZSBwcmVjaXNp
b24gcXVhbGlmaWVyIG9mIGEgY29uc3RhbnQgYWZmZWN0cyBidWlsdC1pbiBmdW5jdGlvbiByZXN1
bHRzJywKKyAgICAgIHVuaWZvcm1zOiBbe25hbWU6ICJ1VGVzdCIsIGZ1bmN0aW9uTmFtZTogInVu
aWZvcm0xZiIsIHZhbHVlOiAwfV0KKyAgICB9LAorICAgIHsKKyAgICAgIGZTaGFkZXJJZDogJ2Zz
aGFkZXJOb0NvbnN0YW50cycsCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICAgICAgcGFzc01zZzogJ1RoZSBwcmVjaXNpb24gcXVhbGlmaWVy
IG9mIGEgdmFyaWFibGUgYWZmZWN0cyBidWlsdC1pbiBmdW5jdGlvbiByZXN1bHRzJywKKyAgICAg
IHVuaWZvcm1zOiBbe25hbWU6ICJ1VGVzdCIsIGZ1bmN0aW9uTmFtZTogInVuaWZvcm0xZiIsIHZh
bHVlOiAwfSwKKyAgICAgICAgICAgICAgICAge25hbWU6ICJ1VGVzdEhpZ2giLCBmdW5jdGlvbk5h
bWU6ICJ1bmlmb3JtMWYiLCB2YWx1ZTogMH1dCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVy
SWQ6ICdmc2hhZGVyQWxsSGlnaHAnLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAg
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6ICdBbGwgdmFyaWFibGVzIGFyZSBx
dWFsaWZpZWQgYXMgaGlnaHAnLAorICAgICAgdW5pZm9ybXM6IFt7bmFtZTogInVUZXN0IiwgZnVu
Y3Rpb25OYW1lOiAidW5pZm9ybTFmIiwgdmFsdWU6IDB9XQorICAgIH0sCisgICAgXSk7CisgIH0K
K307CisKK3Rlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvZXNzbDMtc2hhZGVycy13
aXRoLXdlYmdsMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2Vzc2wzLXNoYWRlcnMtd2l0aC13ZWJnbDEuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40N2U1OGM1YzkyN2Y0ZGQ3ZGE4NzU0ZTdkMGExODg4MGEwMTczMDE4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2Vzc2wzLXNoYWRlcnMtd2l0aC13ZWJnbDEuaHRt
bApAQCAtMCwwICsxLDEzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+QnJvd3NlciBidWcgLSBXZWJHTCAxIGNvbnRleHQgc2hvdWxkIG5v
dCBhY2NlcHQgT3BlbkdMIEVTIDMgc2hhZGluZyBsYW5ndWFnZSBzaGFkZXJzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
RVMxVmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK2F0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsKKwordm9pZCBtYWluKCkgewor
ICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJF
UzFGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPCEtLSBOb3RlIHRoYXQgdGhlIHZl
cnNpb24gZGlyZWN0aXZlIHNob3VsZCBiZSBvbiB0aGUgdmVyeSBmaXJzdCBsaW5lIGluIEVTU0wg
Mywgc2VlIEVTU0wgMyBzZWN0aW9uIDMuMyAtLT4KKzxzY3JpcHQgaWQ9IkVTM1ZlcnRleFNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CitpbiB2ZWM0IGFQb3NpdGlvbjsKKwordm9pZCBtYWluKCkgeworICAgIGds
X1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJFUzNGcmFn
bWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordm9pZCBt
YWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZW1wdHlFUzNGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKK3ZvaWQgbWFpbigpIHsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVy
V2l0aEluUXVhbGlmaWVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK2luIHZlYzQgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xf
UG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50
U2hhZGVyV2l0aE91dFF1YWxpZmllciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordm9pZCBtYWlu
KCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3Ry
aWN0IjsKK2Rlc2NyaXB0aW9uKCJPcGVuR0wgRVMgMyBzaGFkaW5nIGxhbmd1YWdlIHNoYWRlcnMg
c2hvdWxkIG5vdCBiZSBhY2NlcHRlZCBieSBXZWJHTCAxLiIpOworR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blRlc3RzKFsKKyAgeworICAgIHZTaGFkZXJJZDogIkVTM1ZlcnRleFNoYWRlciIsCisg
ICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGZTaGFkZXJJZDogIkVTMUZyYWdtZW50U2hh
ZGVyIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2Us
CisgICAgcGFzc01zZzogIk9wZW5HTCBFUyAzIHNoYWRpbmcgbGFuZ3VhZ2UgdmVydGV4IHNoYWRl
ciB3aXRoIGFuIGluIHZhcmlhYmxlIHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkgV2ViR0wgMS4i
CisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFUzFWZXJ0ZXhTaGFkZXIiLAorICAgIHZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIkVTM0ZyYWdtZW50U2hhZGVyIiwKKyAg
ICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBh
c3NNc2c6ICJPcGVuR0wgRVMgMyBzaGFkaW5nIGxhbmd1YWdlIGZyYWdtZW50IHNoYWRlciB3aXRo
IGFuIG91dCB2YXJpYWJsZSBzaG91bGQgbm90IGJlIGFjY2VwdGVkIGJ5IFdlYkdMIDEuIgorICB9
LAorICB7CisgICAgdlNoYWRlcklkOiAiRVMxVmVydGV4U2hhZGVyIiwKKyAgICB2U2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJlbXB0eUVTM0ZyYWdtZW50U2hhZGVyIiwKKyAg
ICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBh
c3NNc2c6ICJPcGVuR0wgRVMgMyBzaGFkaW5nIGxhbmd1YWdlIGZyYWdtZW50IHNoYWRlciB3aXRo
IGFuIGVtcHR5IGJvZHkgc2hvdWxkIG5vdCBiZSBhY2NlcHRlZCBieSBXZWJHTCAxLiIKKyAgfSwK
KyAgeworICAgIHZTaGFkZXJJZDogIkVTM1ZlcnRleFNoYWRlciIsCisgICAgdlNoYWRlclN1Y2Nl
c3M6IGZhbHNlLAorICAgIGZTaGFkZXJJZDogIkVTM0ZyYWdtZW50U2hhZGVyIiwKKyAgICBmU2hh
ZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6
ICJPcGVuR0wgRVMgMyBzaGFkaW5nIGxhbmd1YWdlIHNoYWRlcnMgc2hvdWxkIG5vdCBiZSBsaW5r
ZWQgYnkgV2ViR0wgMS4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFUzNWZXJ0ZXhTaGFk
ZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICBmU2hhZGVySWQ6ICJlbXB0eUVT
M0ZyYWdtZW50U2hhZGVyIiwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1
Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJPcGVuR0wgRVMgMyBzaGFkaW5nIGxhbmd1YWdl
IHNoYWRlcnMgaW5jbHVkaW5nIGZyYWdtZW50IHNoYWRlciB3aXRoIGVtcHR5IGJvZHkgc2hvdWxk
IG5vdCBiZSBsaW5rZWQgYnkgV2ViR0wgMS4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJ2
ZXJ0ZXhTaGFkZXJXaXRoSW5RdWFsaWZpZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwK
KyAgICBmU2hhZGVySWQ6ICJFUzFGcmFnbWVudFNoYWRlciIsCisgICAgZlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJWZXJ0ZXggc2hh
ZGVyIHdpdGggYW4gaW4gcXVhbGlmaWVyIG9uIGEgZ2xvYmFsIHZhcmlhYmxlIHNob3VsZCBub3Qg
YmUgYWNjZXB0ZWQgYnkgV2ViR0wgMS4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFUzFW
ZXJ0ZXhTaGFkZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDog
ImZyYWdtZW50U2hhZGVyV2l0aE91dFF1YWxpZmllciIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IGZh
bHNlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiRnJhZ21lbnQgc2hh
ZGVyIHdpdGggYW4gb3V0IHF1YWxpZmllciBvbiBhIGdsb2JhbCB2YXJpYWJsZSBzaG91bGQgbm90
IGJlIGFjY2VwdGVkIGJ5IFdlYkdMIDEuIgorICB9CitdKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2J1Z3MvZmxvb3ItZGl2LWNvcy1zaG91bGQtbm90LXRydW5jYXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
Zmxvb3ItZGl2LWNvcy1zaG91bGQtbm90LXRydW5jYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlhMDE5
YWExYmU5Y2Y1NGE2N2RhZTc1MGI5NTYxOGM0YTEyZjRmZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvYnVncy9mbG9vci1kaXYtY29zLXNob3VsZC1ub3QtdHJ1bmNhdGUuaHRtbApAQCAtMCwwICsx
LDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+Rmxvb3IgKyBkaXZpZGUgKyBjb3NpbmUgc2hvdWxkIG5vdCB0cnVuY2F0
ZSBpbnRlcm1lZGlhdGUgcmVzdWx0cy48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisKK2F0dHJpYnV0ZSB2ZWMzIHBvczsKKworLy8gVGhpcyBkaXZpc29y
IG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSAzMi1iaXQgZmxvYXRpbmcgcG9pbnQKKy8vIHJlcHJl
c2VudGF0aW9uIG9mIDFlNiAvICgyICogcGkpIHRvIHJlcHJvLgorY29uc3QgZmxvYXQgbWFnaWMg
PSAxNTkxNTQuOTUzMTI1OworCit2b2lkIG1haW4odm9pZCkgeworICAvLyBUaGlzIGZsb29yIG11
c3QgYmUgcHJlc2VudCB0byByZXByby4KKyAgZmxvYXQgeCA9IGZsb29yKHBvcy54KTsKKworICAv
LyBUaGlzIGRpdmlkZSBhbmQgY29zaW5lIG11c3QgYmUgcHJlc2VudCB0byByZXByby4KKyAgeCA9
IGNvcyh4IC8gbWFnaWMpOworCisgIC8vIElmIHRoZSBHUFUgdHJ1bmNhdGVkICd4IC8gbWFnaWMn
IHRvIDAsIHRoZW4gJ2Nvcyh4IC8gbWFnaWMpJyB3aWxsIHByb2R1Y2UKKyAgLy8gMS4wLCB0aGUg
Z3JlZW4gc3F1YXJlIHdpbGwgYmUgbW92ZWQgb2Zmc2NyZWVuLCBhbmQgdGhlIHJlZCBiYWNrZ3Jv
dW5kCisgIC8vIHdpbGwgYmUgdmlzaWJsZS4KKyAgZ2xfUG9zaXRpb24ueCA9IHBvcy55ICsgeCAq
IDIuMDsKKyAgZ2xfUG9zaXRpb24ueSA9IHBvcy56OworICBnbF9Qb3NpdGlvbi56ID0gMC4wOwor
ICBnbF9Qb3NpdGlvbi53ID0gMS4wOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFk
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
Cit2b2lkIG1haW4odm9pZCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJGbG9vcmluZyBhIG51bWJlciwgdGhl
biBkaXZpZGluZyBieSBhIGxhcmdlIG51bWJlciwgdGhlbiBjb21wdXRpbmcgdGhlIGNvc2luZSBv
ZiB0aGF0IHNob3VsZCBub3QgdHJ1bmNhdGUgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMuIik7Citk
ZWJ1ZygiUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSdodHRwczovL2NvZGUuZ29vZ2xlLmNv
bS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTExNzknPmh0dHBzOi8vY29kZS5nb29n
bGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9MTE3OTwvYT4iKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZh
cyIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNo
YWRlciddLCBbJ3BvcyddLCB1bmRlZmluZWQsIHRydWUpOworCitnbC5jbGVhckNvbG9yKDEsIDAs
IDAsIDEpOworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKK3ZhciBtYWdpYyA9IDE1
OTE1NC45NTMxMjU7Cit2YXIgeCA9IChNYXRoLlBJIC8gMi4wKSAqIG1hZ2ljOwordmFyIGRhdGEg
PSBbCisgIHgsIC0xLCAtMSwKKyAgeCwgMSwgLTEsCisgIHgsIDEsIDEsCisgIHgsIC0xLCAtMSwK
KyAgeCwgMSwgMSwKKyAgeCwgLTEsIDEKK107CisKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBnbC5jcmVhdGVCdWZmZXIoKSk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
bmV3IEZsb2F0MzJBcnJheShkYXRhKSwgZ2wuU1RBVElDX0RSQVcpOworZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoMCk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBm
YWxzZSwgMTIsIDApOworCitnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKK3d0
dS5jaGVja0NhbnZhcyhnbCwgWzAsMjU1LDAsMjU1XSwgInNob3VsZCBiZSAwLDI1NSwwLDI1NSIp
OworZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvZmxvb3Jl
ZC1kaXZpc2lvbi1hY2N1cmFjeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2Zsb29yZWQtZGl2aXNpb24tYWNj
dXJhY3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTg2MzQ0ZDNhMmRlMzg3ODBhNGMzOTcyYzQ1YTMyOTI2
NDlhZDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2Zsb29yZWQtZGl2aXNpb24tYWNj
dXJhY3kuaHRtbApAQCAtMCwwICsxLDY5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0gYXV0aG9yOiBCaWxsIEJheHRlciAod2JheHRlciBhdCBn
b29nbGUuY29tKSAtLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkZsb29yZWQgRGl2aXNpb24gQWNjdXJhY3kgQnVnPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9InNoYWRl
ci12cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9u
OwordW5pZm9ybSBmbG9hdCBkaXZpc29yOwordmFyeWluZyB2ZWM0IHZDb2xvcjsKK3ZvaWQgbWFp
bih2b2lkKSB7CisgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICBmbG9hdCBpbmRleCA9IDku
MDsKKyAgLy8gRmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBkb24ndCBoYXZlIGFueSBndWFyYW50
ZWVkIHByZWNpc2lvbiwgYnV0IHRoZXkKKyAgLy8gc2hvdWxkIGF0IGxlYXN0IGJlIGFjY3VyYXRl
IHRvIDEgcGFydCBpbiAxMF41LgorICBmbG9hdCB2YWx1ZSA9IGZsb29yKChpbmRleCAvIGRpdmlz
b3IpICogMS4wMDAwMSk7CisgIHZDb2xvciA9ICh2YWx1ZSA9PSAzLikgPyB2ZWM0KDAsIDEsIDAs
IDEpIDogdmVjNCgxLCAwLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaGFk
ZXItZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit2YXJ5aW5nIHZlYzQgdkNvbG9yOwordm9pZCBtYWluKHZvaWQpIHsKKyAgZ2xfRnJhZ0Nv
bG9yID0gdkNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oKTsKKworZGVidWcoIiIpOworLy8gUmVwcm9kdWNlcyBidWcgc2VlbiBvbiBNYWMg
T1MgWCB3aXRoIEFNRCBSYWRlb24gSEQgNjQ5MCBHUFUKK2RlYnVnKCJJZiB0aGluZ3MgYXJlIHdv
cmtpbmcgY29ycmVjdGx5LCB0aGVuIHRoZSBzcXVhcmUgd2lsbCBiZSBncmVlbi4iKTsKK2RlYnVn
KCJJZiB5b3VyIGNhcmQgdGhpbmtzIGZsb29yKDkuIC8gMy4pIGlzIG5vdCAzIHRvIHdpdGhpbiAx
IHBhcnQgaW4gMTBeNSwgIik7CitkZWJ1ZygidGhlbiB0aGUgc3F1YXJlIHdpbGwgYmUgcmVkLiIp
OworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICB2U2hhZGVy
SWQ6ICdzaGFkZXItdnMnLAorICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRlcklkOiAn
c2hhZGVyLWZzJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVl
LAorICBwYXNzTXNnOiAnVGVzdCB0aGF0IGZsb29yKDkuIC8gMy4pIGlzIDMgdG8gd2l0aGluIDEg
cGFydCBpbiAxMF41JywKKyAgdW5pZm9ybXM6IFt7bmFtZTogImRpdmlzb3IiLCBmdW5jdGlvbk5h
bWU6ICJ1bmlmb3JtMWYiLCB2YWx1ZTogM31dCit9CitdKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvZnJhZ2Nvb3JkLWxpbmtpbmctYnVnLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2J1Z3MvZnJhZ2Nvb3JkLWxpbmtpbmctYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIy
NjMyYzBhNDc2ZmJmOGY3ZWY5MzQ2ZTMxYTAwNGI4YjMzZWQyNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvYnVncy9mcmFnY29vcmQtbGlua2luZy1idWcuaHRtbApAQCAtMCwwICsxLDkzIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNM
IGNvbXBpbGVyIGJ1ZyByZWZlcmVuY2luZyBnbF9GcmFnQ29vcmQ8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzwhLS0gVGhlc2Ugc2hhZGVycyB3ZXJlIGV4dHJhY3RlZCBmcm9tIFNr
aWEncyBHUFUgYWNjZWxlcmF0ZWQgYmFja2VuZCAiR2FuZXNoIi4gLS0+Cis8c2NyaXB0IGlkPSJz
aGFkZXItdnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3VuaWZvcm0gbWF0MyB1Vmlld007
Cit1bmlmb3JtIG1hdDMgdVN0YWdlTWF0cml4X1N0YWdlMTsKK3VuaWZvcm0gdmVjNCB1cnRBZGp1
c3RtZW50OworYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uOworYXR0cmlidXRlIHZlYzQgYUNvbG9y
OwordmFyeWluZyB2ZWM0IHZDb2xvcjsKK3ZhcnlpbmcgdmVjMiB2TWF0cml4Q29vcmRfU3RhZ2Ux
Owordm9pZCBtYWluKCkgeworICAgIHZlYzMgcG9zMyA9IHVWaWV3TSAqIHZlYzMoYVBvc2l0aW9u
LCAxKTsKKyAgICB2Q29sb3IgPSBhQ29sb3I7CisgICAgeyAvLyBTdGFnZSAwOiBYZmVyRWZmZWN0
CisgICAgfQorICAgIHZNYXRyaXhDb29yZF9TdGFnZTEgPSAodVN0YWdlTWF0cml4X1N0YWdlMSAq
IHZlYzMoYVBvc2l0aW9uLCAxKSkueHk7CisgICAgeyAvLyBTdGFnZSAxOiBUZXh0dXJlCisgICAg
fQorICAgIGdsX1Bvc2l0aW9uID0gdmVjNChkb3QocG9zMy54eiwgdXJ0QWRqdXN0bWVudC54eSks
IGRvdChwb3MzLnl6LCB1cnRBZGp1c3RtZW50Lnp3KSwgMCwgcG9zMy56KTsKK30KKzwvc2NyaXB0
PgorCis8c2NyaXB0IGlkPSJzaGFkZXItZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB1RHN0Q29weVNhbXBs
ZXI7Cit1bmlmb3JtIHZlYzIgdURzdENvcHlVcHBlckxlZnQ7Cit1bmlmb3JtIHZlYzIgdURzdENv
cHlDb29yZFNjYWxlOwordW5pZm9ybSBmbG9hdCB1UlRIZWlnaHQ7Cit1bmlmb3JtIHNhbXBsZXIy
RCB1U2FtcGxlcjBfU3RhZ2UxOwordmFyeWluZyB2ZWM0IHZDb2xvcjsKK3ZhcnlpbmcgdmVjMiB2
TWF0cml4Q29vcmRfU3RhZ2UxOwordm9pZCBtYWluKCkgeworICAgIHZlYzQgZnJhZ0Nvb3JkWURv
d24gPSB2ZWM0KGdsX0ZyYWdDb29yZC54LCB1UlRIZWlnaHQgLSBnbF9GcmFnQ29vcmQueSwgZ2xf
RnJhZ0Nvb3JkLnp3KTsKKyAgICAvLyBSZWFkIGNvbG9yIGZyb20gY29weSBvZiB0aGUgZGVzdGlu
YXRpb24uCisgICAgdmVjMiBfZHN0VGV4Q29vcmQgPSAoZnJhZ0Nvb3JkWURvd24ueHkgLSB1RHN0
Q29weVVwcGVyTGVmdCkgKiB1RHN0Q29weUNvb3JkU2NhbGU7CisgICAgX2RzdFRleENvb3JkLnkg
PSAxLjAgLSBfZHN0VGV4Q29vcmQueTsKKyAgICB2ZWM0IF9kc3RDb2xvciA9IHRleHR1cmUyRCh1
RHN0Q29weVNhbXBsZXIsIF9kc3RUZXhDb29yZCk7CisKKyAgICB2ZWM0IG91dHB1dF9TdGFnZTA7
CisgICAgeyAvLyBTdGFnZSAwOiBYZmVyRWZmZWN0CisgICAgICAgIC8vIFNrWGZlcm1vZGU6Ok1v
ZGU6IE11bHRpcGx5CisgICAgICAgIG91dHB1dF9TdGFnZTAuYSA9IHZDb2xvci5hICsgKDEuMCAt
IHZDb2xvci5hKSAqIF9kc3RDb2xvci5hOworICAgICAgICBvdXRwdXRfU3RhZ2UwLnJnYiA9ICgx
LjAgLSB2Q29sb3IuYSkgKiBfZHN0Q29sb3IucmdiICsgKDEuMCAtIF9kc3RDb2xvci5hKSAqIHZD
b2xvci5yZ2IgKyB2Q29sb3IucmdiICogX2RzdENvbG9yLnJnYjsKKyAgICB9CisgICAgdmVjNCBv
dXRwdXRfU3RhZ2UxOworICAgIHsgLy8gU3RhZ2UgMTogVGV4dHVyZQorICAgIG91dHB1dF9TdGFn
ZTEgPSB0ZXh0dXJlMkQodVNhbXBsZXIwX1N0YWdlMSwgdk1hdHJpeENvb3JkX1N0YWdlMSk7Cisg
ICAgfQorICAgIGdsX0ZyYWdDb2xvciA9ICgob3V0cHV0X1N0YWdlMCAqIG91dHB1dF9TdGFnZTEp
ICsgKCh2ZWM0KDEpIC0gb3V0cHV0X1N0YWdlMSkgKiBfZHN0Q29sb3IpKTsKK30KKzwvc2NyaXB0
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitkZXNjcmlwdGlvbigpOworZGVidWcoIiIpOwor
ZGVidWcoJ1ZlcmlmeSBzaGFkZXJzIHVzaW5nIGdsX0ZyYWdDb29yZCB6IGFuZCB3IGNvbXBvbmVu
dHMgY29tcGlsZSBhbmQgbGluayBjb3JyZWN0bHknKTsKK2RlYnVnKCdSZWdyZXNzaW9uIHRlc3Qg
Zm9yIFF1YWxjb21tIGJ1ZyBJRCBDUjY0OTY1NCcpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworaWYgKCFnbCkgeworICB0ZXN0RmFp
bGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB2YXIgcHJvZ3JhbSA9
IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsic2hhZGVyLXZzIiwgInNoYWRlci1mcyJdLCBudWxsLCBu
dWxsLCB0cnVlKTsKKyAgaWYgKHByb2dyYW0pIHsKKyAgICB0ZXN0UGFzc2VkKCJQcm9ncmFtIGNv
bXBpbGVkIGFuZCBsaW5rZWQgc3VjY2Vzc2Z1bGx5Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdEZh
aWxlZCgiUHJvZ3JhbSBmYWlsZWQgdG8gY29tcGlsZSBhbmQgbGluayIpOworICB9Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvYnVncy9nbC1mcmFnY29vcmQtbXVsdGlzYW1wbGluZy1idWcuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvYnVncy9nbC1mcmFnY29vcmQtbXVsdGlzYW1wbGluZy1idWcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZjExODRkNDlmNGZhNGM5ZGNjYjQwNTc2ZWZhZDk0NjNiOWRiNTZhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9idWdzL2dsLWZyYWdjb29yZC1tdWx0aXNhbXBsaW5nLWJ1Zy5odG1sCkBAIC0w
LDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5nbF9GcmFnQ29vcmQgbXVsdGlzYW1wbGluZyBidWc8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNhbnZhc0hvbGRlciI+PC9kaXY+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmli
dXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0
KGFfcG9zaXRpb24ueHksIDEuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJm
c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCit2b2lkIG1haW4oKSB7CisgIGZsb2F0IGRlcHRoID0gZ2xfRnJhZ0Nvb3JkLnogLyBn
bF9GcmFnQ29vcmQudzsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCBkZXB0aCwgMC4wLCAx
LjAgKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oImdsX0ZyYWdDb29yZCBtdWx0aXNhbXBs
aW5nIGJ1ZyIpOworZGVidWcoIlZlcmlmaWVzIGdsX0ZyYWdDb29yZCB6L3cgdmFsdWVzIGFyZSB1
bmFmZmVjdGVkIGJ5IG11bHRpc2FtcGxpbmcuIik7CitkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2lzc3Vlcy83NzY5
Ij5UaHJlZS5qcyBJc3N1ZSA3NzY5PC9hPicpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IDI7ICsraWkpIHsKKyAgZGVidWcoIlRlc3RpbmcgIiArIChp
aSA+IDAgPyAid2l0aCIgOiAid2l0aG91dCIpICsgIiBtdWx0aXNhbXBsaW5nIik7CisgIHZhciBj
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgY2FudmFzLndpZHRo
ID0gMjU2OworICBjYW52YXMuaGVpZ2h0ID0gMjU2OworICBjYW52YXMuc3R5bGUucGFkZGluZyA9
ICIycHgiOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzSG9sZGVyJykuYXBwZW5k
Q2hpbGQoY2FudmFzKTsKKyAgdmFyIG9wdGlvbnM7CisgIGlmIChpaSA+IDApIHsKKyAgICBvcHRp
b25zID0geyBhbnRpYWxpYXM6IHRydWUgfTsKKyAgfQorICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcywgb3B0aW9ucyk7CisKKyAgZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsK
KyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgdmFyIGF0dHJpYkJ1ZmZlcnMg
PSB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydhX3Bvc2l0aW9uJ10sIFswXSwg
dHJ1ZSk7CisgIGlmICghcHJvZ3JhbSkgeworICAgIHRlc3RGYWlsZWQoIlNoYWRlciBjb21waWxh
dGlvbi9saW5rIGZhaWxlZCIpOworICB9IGVsc2UgeworICAgIC8vIERyYXcKKyAgICB3dHUuZHJh
d1VuaXRRdWFkKGdsKTsKKyAgICAvLyBWZXJpZnkgb3V0cHV0CisgICAgd3R1LmNoZWNrQ2FudmFz
KGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIiwgMyk7CisgIH0KK30KKwor
ZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvZ2xvYmFsLWlu
dmFyaWFudC1kb2VzLW5vdC1sZWFrLWFjcm9zcy1zaGFkZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvZ2xv
YmFsLWludmFyaWFudC1kb2VzLW5vdC1sZWFrLWFjcm9zcy1zaGFkZXJzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjAyNjIyYmIyOTU5OTk3Y2M3NzVhNGE3N2YwNDFkZDFmNTc0N2ViNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvYnVncy9nbG9iYWwtaW52YXJpYW50LWRvZXMtbm90LWxlYWstYWNyb3NzLXNo
YWRlcnMuaHRtbApAQCAtMCwwICsxLDc3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HbG9iYWwgaW52YXJpYW50IGRvZXMgbm90IGxlYWsg
YWNyb3NzIHNoYWRlcnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJJbnZhcmlhbnRWZXJ0ZXgiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKyNwcmFn
bWEgU1RER0wgaW52YXJpYW50KGFsbCkKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlv
biA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
RnJhZ21lbnQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEu
MCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJWZXJ0ZXhXaXRoVmFyeWlu
ZyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgordmFyeWluZyB2ZWMyIHRlc3RWYXJ5aW5nOwor
Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEu
MCk7CisgICAgdGVzdFZhcnlpbmcgPSB2ZWMyKDAuMCwgMC4wKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iRnJhZ21lbnRXaXRoVmFyeWluZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB0ZXN0VmFyeWluZzsKKwor
dm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRlc3RWYXJ5aW5nLCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGUgdXNlIG9mIHRoZSBnbG9iYWwgaW52YXJpYW50
IHByYWdtYSBpbiBvbmUgc2hhZGVyIG11c3Qgbm90IGFmZmVjdCBvdGhlciBzaGFkZXJzLiIpOwor
CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAi
SW52YXJpYW50VmVydGV4IiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVy
SWQ6ICJGcmFnbWVudCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nl
c3M6IHRydWUsCisgICAgcGFzc01zZzogIlNoYWRlcnMgdXNpbmcgZ2xvYmFsIGludmFyaWFudCBw
cmFnbWEgc2hvdWxkIGNvbXBpbGUgYW5kIGxpbmsuIgorICB9LAorICB7CisgICAgdlNoYWRlcklk
OiAiVmVydGV4V2l0aFZhcnlpbmciLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZT
aGFkZXJJZDogIkZyYWdtZW50V2l0aFZhcnlpbmciLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJTaGFkZXJzIG5vdCB1c2lu
ZyBnbG9iYWwgaW52YXJpYW50IHByYWdtYSBzaG91bGQgY29tcGlsZSBhbmQgbGluay4iCisgIH0s
CitdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdz
L2lmLXJldHVybi1hbmQtZWxzZWlmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvaWYtcmV0dXJuLWFuZC1lbHNl
aWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZTg4YWU4M2JlM2Y5MDQ1OTFjMDVkOTk5ZDk1OGJiNzEzOWZk
NDRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2lmLXJldHVybi1hbmQtZWxzZWlmLmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+SWYgd2l0aCByZXR1cm4gYW5kIGVsc2UgaWYgaW4gZnJhZ21lbnQg
c2hhZGVyPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
dnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgcG9zOwor
dmFyeWluZyB2ZWMyIHZQb3M7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gcG9z
OworICAgIHZQb3MgPSBwb3MueHk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K3ZhcnlpbmcgdmVjMiB2UG9zOwordm9pZCBtYWluKCkKK3sKKyAgICBpZih2UG9zLnggPCAxLjAp
IC8vIFRoaXMgY29sb3JzIHRoZSB3aG9sZSBjYW52YXMgZ3JlZW4KKyAgICB7CisgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZWxzZSBpZih2UG9zLnggPCAxLjEpIC8vIFRoaXMgc2hvdWxkIGhhdmUgbm8gZWZmZWN0Cisg
ICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgIH0KK30K
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigpOworCisvLyBNaW5pbWFsIHRlc3QgY2FzZSBiYXNlZCBvbiByZXBv
cnQgYXQgaHR0cDovL2FuZ2xlYnVnLmNvbS8yMzI1CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5y
dW5SZW5kZXJUZXN0cyhbCit7CisgIHZTaGFkZXJJZDogJ3ZzaGFkZXInLAorICB2U2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgZlNoYWRlcklkOiAnZnNoYWRlcicsCisgIGZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIklmIGFuZCBlbHNlIGlmIGlu
IGZyYWdtZW50IHNoYWRlciIKK30KK10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2J1Z3MvaW4tcGFyYW1ldGVyLXBhc3NlZC1hcy1pbm91dC1hcmd1bWVu
dC1hbmQtZ2xvYmFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvaW4tcGFyYW1ldGVyLXBhc3NlZC1hcy1pbm91
dC1hcmd1bWVudC1hbmQtZ2xvYmFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdlZGQwZWMzYTRiZGY3ZGJk
N2E3ZGY1YjZkNDlhOGU3ZTc5ZTNiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9pbi1w
YXJhbWV0ZXItcGFzc2VkLWFzLWlub3V0LWFyZ3VtZW50LWFuZC1nbG9iYWwuaHRtbApAQCAtMCww
ICsxLDUyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5GdW5jdGlvbiBpbiBwYXJhbWV0ZXIgcGFzc2VkIGFzIGFuIGlub3V0IGFyZ3VtZW50
IGFuZCBhIGdsb2JhbCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIG5hbWU8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyUGFyYW1ldGVycyIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZv
cm0gdmVjMyB1X3plcm87Cit2ZWMzIHA7Cit2b2lkIEcoaW5vdXQgdmVjMyBxKSB7CisgICAgcCAr
PSBxOworfQordm9pZCBGKGluIHZlYzMgcCkgeworICAgIEcocCk7Cit9Cit2b2lkIG1haW4oKXsK
KyAgICBGKHVfemVybyArIHZlYzMoMC4wLCAxLjAsIDAuMCkpOworICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQocCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKworLy8gVGhpcyBpcyBpbnRlbmRl
ZCB0byB0ZXN0IGFuIGlzc3VlIHNlZW4gb24gTlZJRElBIE9wZW5HTCBkcml2ZXJzIChhdCBsZWFz
dCB1cCB0byB2ZXJzaW9uIDM4OC41OSkuCisvLyBodHRwOi8vY3JidWcuY29tLzc5MjIxMAorCitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdm
c2hhZGVyUGFyYW1ldGVycycsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogIkZ1bmN0aW9uIGluIHBhcmFtZXRlciBwYXNzZWQgYXMgYW4g
aW5vdXQgYXJndW1lbnQgYW5kIGEgZ2xvYmFsIHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZSIK
K30KK10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1
Z3MvaW5pdC1hcnJheS13aXRoLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9pbml0LWFycmF5LXdpdGgt
bG9vcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZDI0NzY1YmRjYWVlZGIyNDcyNjA4YzljM2NmNjZjZTll
N2EwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvaW5pdC1hcnJheS13aXRoLWxvb3Au
aHRtbApAQCAtMCwwICsxLDg0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5Jbml0aWFsaXppbmcgYW4gYXJyYXkgd2l0aCBhIGxvb3AgdGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXJJbml0TG9vcCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwordm9pZCBpbml0R2xvYmFscygpOworCit1bmlmb3JtIHZlYzQgaW4wOwordmVj
NCBvdXQwOworCitmbG9hdCBmdW5jKGZsb2F0IGFbNF0pIHsKKyAgICBhWzBdID0gLTEuMDsKKyAg
ICByZXR1cm4gYVswXTsKK30KKworZmxvYXQgYXJyWzRdOworCitib29sIGlzT2sodmVjNCBhKSB7
CisgICAgdmVjNCByZWYgPSAtKGluMCArIDEuMCk7CisgICAgaWYgKGFicyhhLnggLSByZWYueCkg
PCAwLjA1ICYmIGFicyhhLnkgLSByZWYueSkgPCAwLjA1ICYmIGFicyhhLnogLSByZWYueikgPCAw
LjA1ICYmIGFicyhhLncgLSByZWYudykgPCAwLjA1KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBtYWluKCkgeworICAgIGlu
aXRHbG9iYWxzKCk7CisgICAgYXJyWzBdID0gaW4wLnggKyAxLjA7CisgICAgYXJyWzFdID0gaW4w
LnkgKyAxLjA7CisgICAgYXJyWzJdID0gaW4wLnogKyAxLjA7CisgICAgYXJyWzNdID0gaW4wLncg
KyAxLjA7CisgICAgbWVkaXVtcCBmbG9hdCBmID0gZnVuYyhhcnIpOworICAgIG91dDAgPSBmICog
dmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJbM10pOworICAgIGlmIChpc09rKG91dDAp
KQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjAp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorfQorCit2b2lkIGluaXRHbG9iYWxzKCkgeworICAg
IG91dDAgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA0OyArK2kpCisgICAgeworICAgICAgICBhcnJbaV0gPSAwLjA7CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworewor
ICBmU2hhZGVySWQ6ICdmc2hhZGVySW5pdExvb3AnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJJbml0aWFsaXplIGEgZ2xvYmFsIGFy
cmF5IHVzaW5nIGEgZm9yIGxvb3AiCit9CitdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2ludmFyaWFudC1kb2VzLW5vdC1sZWFrLWFjcm9zcy1z
aGFkZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvaW52YXJpYW50LWRvZXMtbm90LWxlYWstYWNyb3NzLXNo
YWRlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjAzNzMxMDEyODBhODcyOGQ5NjE0NzkzYWI1ZTM4MjM1
ZGY2NGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2ludmFyaWFudC1kb2VzLW5vdC1s
ZWFrLWFjcm9zcy1zaGFkZXJzLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SW52YXJpYW50IGRvZXMgbm90
IGxlYWsgYWNyb3NzIHNoYWRlcnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJJbnZhcmlhbnRWZXJ0ZXgiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CitpbnZhcmlhbnQgdl92YXJ5aW5nOworCit2b2lkIG1h
aW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJJbnZhcmlhbnRGcmFnbWVudCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2ludmFyaWFudCB2YXJ5aW5nIHZlYzQgdl92YXJ5aW5n
OworCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZfdmFyeWluZzsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iVmVydGV4V2l0aFZhcnlpbmciIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBn
bF9Qb3NpdGlvbiA9IHZfdmFyeWluZzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoZSB1c2Ugb2YgdGhl
IGludmFyaWFudCBxdWFsaWZpZXIgaW4gb25lIHNoYWRlciBtdXN0IG5vdCBhZmZlY3Qgb3RoZXIg
c2hhZGVycy4iKTsKKworZGVidWcoIiIpOworZGVidWcoIlRoaXMgaXMgYSBkZWxpYmVyYXRlIHN1
YnNldCBvZiBjb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVycy13aXRoLWludmFyaWFuY2UuaHRt
bC4iKTsKK2RlYnVnKCJDb21wYXJlZCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXN0cywgb3JkZXIgb2Yg
dGhlIHRlc3RzIGlzIGRpZmZlcmVudC4iKTsKK2RlYnVnKCJUaGlzIHRlc3QgY292ZXJzIGFuIEFO
R0xFIGJ1Zy4gU2VlIGNyYnVnLmNvbS82MzQ4MTMuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0cyhbCisgIHsKKyAgICB2U2hhZGVySWQ6ICJJbnZhcmlhbnRWZXJ0ZXgiLAorICAg
IHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIkludmFyaWFudEZyYWdtZW50
IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAg
ICBwYXNzTXNnOiAiU2hhZGVycyB1c2luZyBpbnZhcmlhbnQgcXVhbGlmaWVyIHNob3VsZCBjb21w
aWxlIGFuZCBsaW5rLiIKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogIlZlcnRleFdpdGhWYXJ5
aW5nIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJJbnZhcmlh
bnRGcmFnbWVudCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6
IGZhbHNlLAorICAgIHBhc3NNc2c6ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggdmFyaWFudCB2YXJ5aW5n
IGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQgdmFyeWluZyBtdXN0IGZhaWwiCisg
IH0sCitdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9i
dWdzL2xvZ2ljLWluc2lkZS1ibG9jay13aXRob3V0LWJyYWNlcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2xv
Z2ljLWluc2lkZS1ibG9jay13aXRob3V0LWJyYWNlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYmFjNGRi
ZDBkNDQ1NDAwYWE5OWEyM2ZmMjU2OTU5MGRlYmVhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2J1Z3MvbG9naWMtaW5zaWRlLWJsb2NrLXdpdGhvdXQtYnJhY2VzLmh0bWwKQEAgLTAsMCArMSw4
NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+U2hvcnQtY2lyY3VpdGluZyBsb2dpYyBvcGVyYXRvciB3aXRoIHNpZGUgZWZmZWN0cyBpbnNp
ZGUgaWYgc3RhdGVtZW50IHdpdGhvdXQgYnJhY2VzIHNob3VsZCB3b3JrPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlcklmIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBib29s
IHVGYWxzZTsKKworZmxvYXQgd3JvbmcgPSAwLjA7CisKK2Jvb2wgZm9vKCkgeworICAgIHdyb25n
ICs9IDEuMDsKKyAgICByZXR1cm4gIXVGYWxzZTsKK30KKworYm9vbCBiYXIoKSB7CisgICAgcmV0
dXJuICF1RmFsc2U7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgICAvLyBObyBicmFjZXMgaGVyZSAt
IHRoYXQgY2FuIGFmZmVjdCB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgaWYgZ2V0IHBhcnNl
ZCBhcyBhIGJsb2NrIG9yIGEgc3RhdGVtZW50LgorICAgIGlmICh1RmFsc2UpCisgICAgICAgIGZv
bygpICYmIGJhcigpOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAgLSB3cm9uZywg
MC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyRm9yIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitmbG9hdCB3
cm9uZyA9IDAuMDsKKworYm9vbCBmb28oKSB7CisgICAgd3JvbmcgKz0gMS4wOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBiYXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IG1haW4oKSB7CisgICAgLy8gTm8gYnJhY2VzIGhlcmUgLSB0aGF0IGNhbiBhZmZlY3Qgd2hldGhl
ciB0aGUgY29udGVudHMgb2YgdGhlIGZvciBnZXQgcGFyc2VkIGFzIGEgYmxvY2sgb3IgYSBzdGF0
ZW1lbnQuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAwOyArK2kpCisgICAgICAgIGZvbygpICYm
IGJhcigpOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAgLSB3cm9uZywgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlNob3J0LWNpcmN1aXRpbmcgbG9naWMgb3Bl
cmF0b3Igd2l0aCBzaWRlIGVmZmVjdHMgaW5zaWRlIGlmL2ZvciBzdGF0ZW1lbnQgd2l0aG91dCBi
cmFjZXMgc2hvdWxkIHdvcmsuIik7CitkZWJ1ZygiIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJJZicsCisgIGZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ1Nob3J0
LWNpcmN1aXRpbmcgb3BlcmF0b3IgaW5zaWRlIGlmIHN0YXRlbWVudCB3aXRob3V0IGJyYWNlcycs
CisgIHVuaWZvcm1zOiBbe25hbWU6ICJ1RmFsc2UiLCBmdW5jdGlvbk5hbWU6ICJ1bmlmb3JtMWki
LCB2YWx1ZTogMH1dCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyRm9yJywKKyAgZlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnU2hvcnQt
Y2lyY3VpdGluZyBvcGVyYXRvciBpbnNpZGUgZm9yIHN0YXRlbWVudCB3aXRob3V0IGJyYWNlcycK
K30KK10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
YnVncy9sb25nLWV4cHJlc3Npb25zLXNob3VsZC1ub3QtY3Jhc2guaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9s
b25nLWV4cHJlc3Npb25zLXNob3VsZC1ub3QtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWYwNTA5
YjIzZjgwNzA1ZTZiMTg4MGRhMGZkMzgxNTYzNDYzNWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9idWdzL2xvbmctZXhwcmVzc2lvbnMtc2hvdWxkLW5vdC1jcmFzaC5odG1sCkBAIC0wLDAgKzEs
MTM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5Ecml2ZXIgQnVnIC0gbG9uZyBleHBlcnNzaW9ucyBzaG91bGQgbm90IGNyYXNoPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSI0MCIgaGVpZ2h0PSI0MCI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBl
PSJ4LXNoYWRlci94LXZlcnRleCI+Cit2b2lkIG1haW4oKXsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDAsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyVW5pZm9ybVRl
c3QiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3VuaWZvcm0gdmVjNCB1X3VuaWZvcm07Cit2
b2lkIG1haW4oKXsKKyAgZ2xfUG9zaXRpb24gPQorICAgICAgJChjb2RlKQorICAgICAgdmVjNCgw
LCAwLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigp
Cit7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJVbmlmb3JtVGVzdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1X3VuaWZvcm07Cit2b2lk
IG1haW4oKQoreworICBnbF9GcmFnQ29sb3IgPQorICAgICAgJChjb2RlKQorICAgICAgdmVjNCgw
LCAwLCAwLCAwKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKwor
dmFyIHZVbmlmb3JtVGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoInZzaGFkZXJVbmlmb3JtVGVz
dCIpOwordmFyIGZVbmlmb3JtVGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoImZzaGFkZXJVbmlm
b3JtVGVzdCIpOworCit2YXIgdGVzdHMgPSBbCitdOwordmFyIGNvdW50cyA9IFsKKyAgeyBjb3Vu
dDoxMCwKKyAgICBtdXN0UGFzczogdHJ1ZSwKKyAgfSwKKyAgeyBjb3VudDoxMDAsCisgICAgbXVz
dFBhc3M6IHRydWUsCisgIH0sCisgIHsgY291bnQ6IDEwMDAsCisgICAgbXVzdFBhc3M6IGZhbHNl
LAorICB9LAorICB7IGNvdW50OiAxMDAwMCwKKyAgICBtdXN0UGFzczogZmFsc2UsCisgIH0sCitd
OwordmFyIG9wZXJhdG9yU2V0cyA9IFsKKyAgWyIrIiwgIi0iLCAiLyIsICIqIl0sCisgIFsiKyJd
LAorICBbIi0iXSwKK107Citjb3VudHMuZm9yRWFjaChmdW5jdGlvbihpbmZvKSB7CisgIG9wZXJh
dG9yU2V0cy5mb3JFYWNoKGZ1bmN0aW9uKG9wZXJhdG9ycykgeworICAgIHZhciBnZW5lcmF0ZUNv
ZGUgPSBmdW5jdGlvbihudW1WYXJzKSB7CisgICAgICB2YXIgY29kZXMgPSBbXTsKKyAgICAgIGZv
ciAodmFyIHV1ID0gMDsgdXUgPCBudW1WYXJzOyArK3V1KSB7CisgICAgICAgIGNvZGVzLnB1c2go
InVfdW5pZm9ybSAiICsgb3BlcmF0b3JzW3V1ICUgb3BlcmF0b3JzLmxlbmd0aF0pOworICAgICAg
fQorICAgICAgcmV0dXJuIHsKKyAgICAgICAgY29kZTogY29kZXMuam9pbigiXG4gICAgICAiKSwK
KyAgICAgIH07CisgICAgfTsKKworICAgIHZhciBzdWJzID0gZ2VuZXJhdGVDb2RlKGluZm8uY291
bnQpOworICAgIHRlc3RzLnB1c2goeworICAgICAgdlNoYWRlcklkOiAidnNoYWRlciIsCisgICAg
ICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNl
UGFyYW1zKGZVbmlmb3JtVGVzdFNvdXJjZSwgc3VicyksCisgICAgICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgaWdub3JlUmVzdWx0czogIWlu
Zm8ubXVzdFBhc3MsCisgICAgICBwYXNzTXNnOiAic2hhZGVyIHdpdGggIiArIGluZm8uY291bnQg
KyAiIFsiICsgb3BlcmF0b3JzICsgIl0gb3BlcmF0b3JzIGluIGV4cHJlc3Npb24gaW4gbXVsdGlw
bGUgbGluZXMiLAorICAgIH0pOworICAgIHRlc3RzLnB1c2goeworICAgICAgdlNoYWRlclNvdXJj
ZTogd3R1LnJlcGxhY2VQYXJhbXModlVuaWZvcm1UZXN0U291cmNlLCBzdWJzKSwKKyAgICAgIHZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgZlNoYWRlcklkOiAiZnNoYWRlciIsCisgICAgICBm
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgaWdu
b3JlUmVzdWx0czogIWluZm8ubXVzdFBhc3MsCisgICAgICBwYXNzTXNnOiAic2hhZGVyIHdpdGgg
IiArIGluZm8uY291bnQgKyAiIFsiICsgb3BlcmF0b3JzICsgIl0gb3BlcmF0b3JzIGluIGV4cHJl
c3Npb24gaW4gbXVsdGlwbGUgbGluZXMiLAorICAgIH0pOworICAgIHN1YnMuY29kZSA9IHN1YnMu
Y29kZS5yZXBsYWNlKC9cbiAgICAgL2csICIiKQorICAgIHRlc3RzLnB1c2goeworICAgICAgdlNo
YWRlcklkOiAidnNoYWRlciIsCisgICAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZT
aGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKGZVbmlmb3JtVGVzdFNvdXJjZSwgc3Vicyks
CisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICAgICAgaWdub3JlUmVzdWx0czogIWluZm8ubXVzdFBhc3MsCisgICAgICBwYXNzTXNnOiAic2hh
ZGVyIHdpdGggIiArIGluZm8uY291bnQgKyAiIFsiICsgb3BlcmF0b3JzICsgIl0gb3BlcmF0b3Jz
IGluIGV4cHJlc3Npb24gaW4gb25lIGxpbmUiLAorICAgIH0pOworICAgIHRlc3RzLnB1c2goewor
ICAgICAgdlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXModlVuaWZvcm1UZXN0U291cmNl
LCBzdWJzKSwKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgZlNoYWRlcklkOiAi
ZnNoYWRlciIsCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICAgICAgaWdub3JlUmVzdWx0czogIWluZm8ubXVzdFBhc3MsCisgICAgICBwYXNz
TXNnOiAic2hhZGVyIHdpdGggIiArIGluZm8uY291bnQgKyAiIFsiICsgb3BlcmF0b3JzICsgIl0g
b3BlcmF0b3JzIGluIGV4cHJlc3Npb24gaW4gb25lIGxpbmUiLAorICAgIH0pOworICB9KTsKK30p
OworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RzKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvbG9vcC1pZi1sb29wLWdyYWRp
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2J1Z3MvbG9vcC1pZi1sb29wLWdyYWRpZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTE0NjA0YWQwNzFlODkyNTYxOWY5ZDE0ZTVmZmVjNDU3YWM2YmQ5YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvYnVncy9sb29wLWlmLWxvb3AtZ3JhZGllbnQuaHRtbApAQCAtMCwwICsxLDc1
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5HcmFkaWVudCBsb29wIGluIGlmIGluIGxvb3AgY3Jhc2g8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSd2c2hhZGVyJyB0eXBlPSd4LXNoYWRlci94LXZlcnRleCc+CitwcmVjaXNpb24gaGln
aHAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CitnbF9Qb3NpdGlvbiA9IHZlYzQoIDEuMCwgMS4wLCAx
LjAsIDEuMCApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSdmc2hhZGVyJyB0eXBlPSd4LXNo
YWRlci94LWZyYWdtZW50Jz4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBsb3dw
IHNhbXBsZXIyRCBpQ2hhbm5lbDA7CisKK3ZvaWQgbWFpbigpeworICAgIGhpZ2hwIGZsb2F0IGM7
CisgICAgZm9yIChtZWRpdW1wIGZsb2F0IGkgPSAwLjA7IGkgPD0gMS4wOyBpKyspIHsKKyAgICAg
ICAgaWYgKGdsX0ZyYWdDb29yZC54IDwgMC4wKSB7CisgICAgICAgICAgICBmb3IgKG1lZGl1bXAg
ZmxvYXQgbCA9IDAuMDsgbCA8IDIuMDsgbCsrKSB7IC8vIHdpdGggMSBhcyBhIGJvdW5kIGl0IHdv
cmtzCisgICAgICAgICAgICAgICAgYyA9IHRleHR1cmUyRChpQ2hhbm5lbDAsIHZlYzIobCksIDAu
MCkueDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGMsIHZlYzMoMS4wKSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgYW4gQU5H
TEUgcmVncmVzc2lvbiB0aGF0IHdhcyBjYXVzZWQgYnkgYSBjb21wbGV4IFNoYWRlclRveSBzaGFk
ZXIuIDxhIGhyZWY9J2h0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2Rl
dGFpbD9pZD01MjQyOTcnPmNyYnVnLmNvbS81MjQyOTc8L2E+Iik7CisKK2RlYnVnKCIiKTsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgp
OworCitnbC5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIGZ1bmN0
aW9uKGUpIHsKKyAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgbG9zdCIpOworfSk7CisKK2lm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisgICAg
ZGVidWcoIiIpOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3Zz
aGFkZXInLCAnZnNoYWRlciddKTsKKyAgICBpZiAoIWdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJv
Z3JhbSwgZ2wuTElOS19TVEFUVVMpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlByb2dyYW0gZmFp
bGVkIHRvIGxpbmsiKTsKKyAgICB9CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKKy8vIEN5Y2xlIHRocm91
Z2ggYSByQUYgb25jZSB0byBnaXZlIGFueSB3ZWJnbGNvbnRleHRsb3N0IGV2ZW50cyBhIGNoYW5j
ZSB0byBwcm9wYWdhdGUKK3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7
IGZpbmlzaFRlc3QoKTsgfSk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
YnVncy9tb2R1bG8tYXJpdGhtZXRpYy1hY2N1cmFjeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL21vZHVsby1h
cml0aG1ldGljLWFjY3VyYWN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUzOWY2OWFiNzY5NjFkNTMzNGI3
ZjViNDUxNzdiYTM0NWU4NDMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9tb2R1bG8t
YXJpdGhtZXRpYy1hY2N1cmFjeS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLSBhdXRob3I6IEJpbGwgQmF4dGVy
ICh3YmF4dGVyIGF0IGdvb2dsZS5jb20pIC0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+TW9kdWxvIEFyaXRobWV0aWMg
QWNjdXJhY3kgQnVnPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2ds
c2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQgaWQ9InNoYWRlci12cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRl
IHZlYzQgdlBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBkaXZpc29yOwordmFyeWluZyB2ZWM0IHZD
b2xvcjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICBm
bG9hdCBpbmRleCA9IDkuMDsKKyAgLy8gbW9kKHgsIHkpIGlzIGNvbXB1dGVkIGFzIHgteSpmbG9v
cih4L3kpLiAgVGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMgb24KKyAgLy8gdGhlIHByZWNpc2lvbiBv
ZiBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGluIFdlYkdMIHNoYWRlcnMsIGJ1dCBkaXZpc2lv
bgorICAvLyBzaG91bGQgYmUgYWNjdXJhdGUgdG8gYXQgbGVhc3QgMSBwYXJ0IGluIDEwXjUuCisg
IGZsb2F0IHZhbHVlID0gbW9kKGluZGV4ICogMS4wMDAwMSwgZGl2aXNvcik7CisgIHZDb2xvciA9
ICh2YWx1ZSA8IDEuKSA/IHZlYzQoMCwgMSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEpOworfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2Q29sb3I7Cit2
b2lkIG1haW4odm9pZCkgeworICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiIik7Cisv
LyBSZXByb2R1Y2VzIGJ1ZyBzZWVuIG9uIE1hYyBPUyBYIHdpdGggQU1EIFJhZGVvbiBIRCA2NDkw
IEdQVQorZGVidWcoIklmIHRoaW5ncyBhcmUgd29ya2luZyBjb3JyZWN0bHksIHRoZW4gdGhlIHNx
dWFyZSB3aWxsIGJlIGdyZWVuLiIpOworZGVidWcoIklmIHlvdXIgY2FyZCB0aGlua3MgbW9kKDks
MykgaXMgbm90IDAsIHRoZW4gdGhlIHNxdWFyZSB3aWxsIGJlIHJlZC4iKTsKKworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgdlNoYWRlcklkOiAnc2hhZGVyLXZz
JywKKyAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGZTaGFkZXJJZDogJ3NoYWRlci1mcycsCisg
IGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzog
J1Rlc3QgdGhhdCBtb2QoOS8zKSBpcyAwJywKKyAgdW5pZm9ybXM6IFt7bmFtZTogImRpdmlzb3Ii
LCBmdW5jdGlvbk5hbWU6ICJ1bmlmb3JtMWYiLCB2YWx1ZTogM31dCit9CitdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL211bHRpcGxpY2F0aW9u
LWFzc2lnbm1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9tdWx0aXBsaWNhdGlvbi1hc3NpZ25tZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2IxNTdjZGVjNmRmMDlmNDE3YmFiZTNmNjA0MDkzYThlYjE5ODQxMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9tdWx0aXBsaWNhdGlvbi1hc3NpZ25tZW50Lmh0
bWwKQEAgLTAsMCArMSw1MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+TXVsdGlwbGljYXRpb24gYXNzaWdubWVudCBvcGVyYXRvciBjb21w
aWxhdGlvbiBidWc8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3VuaWZvcm0gbWF0MyByb3Q7CitmbG9hdCBmb28odmVjMyBiYXIpIHsKKyAg
ICBiYXIgKj0gcm90OworICAgIHJldHVybiAwLjA7Cit9CisKK3ZvaWQgbWFpbih2b2lkKXsKKyAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZvbyh2ZWMzKDApKSk7Cit9Cis8L3NjcmlwdD4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKKworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKK2RlYnVnKCdW
ZXJpZnkgbXVsdGlwbGljYXRpb24gYXNzaWdubWVudCBvcGVyYXRvciBjb21waWxlcyBjb3JyZWN0
bHkgLSByZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vY29kZS5nb29nbGUuY29t
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zODQ4NDciPkNocm9taXVtIGJ1ZyAzODQ4NDc8
L2E+Jyk7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCit7CisgIGZTaGFkZXJJ
ZDogJ2ZzaGFkZXInLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRy
dWUsCisgIHBhc3NNc2c6ICJ2ZWMzICo9IG1hdDMgbXVsdGlwbGljYXRpb24gYXNzaWdubWVudCBv
cGVyYXRvciIsCit9CitdKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2J1Z3MvbmVzdGVkLWZ1bmN0aW9ucy1zaG91bGQtbm90LWNyYXNoLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL2J1Z3MvbmVzdGVkLWZ1bmN0aW9ucy1zaG91bGQtbm90LWNyYXNoLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTMwZjBhMGU0ZmM0YzY5MjQ5NDZlOWUzOTcyNDVmM2M0YWYyNzQ3YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvYnVncy9uZXN0ZWQtZnVuY3Rpb25zLXNob3VsZC1ub3QtY3Jhc2guaHRtbApA
QCAtMCwwICsxLDg5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5Ecml2ZXIgQnVnIC0gbmVzdGVkIGZ1bmN0aW9ucyBzaG91bGQgbm90IGNy
YXNoPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit2b2lkIG1haW4oKXsKKyAgZ2xfUG9zaXRp
b24gPSB2ZWM0KDAsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVy
VW5pZm9ybVRlc3QiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgdV91bmlmb3JtOworCiskKGNvZGUpCisKK3ZvaWQgbWFp
bigpCit7CisgIGdsX0ZyYWdDb2xvciA9IGZ1bmN0aW9uMCgpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgpOworCit2YXIgZlVuaWZvcm1UZXN0U291cmNlID0gd3R1Lmdl
dFNjcmlwdCgiZnNoYWRlclVuaWZvcm1UZXN0Iik7CisKK3ZhciB0ZXN0cyA9IFsKK107Cit2YXIg
Y291bnRzID0gWworICB7IGNvdW50OjEwLAorICAgIG11c3RQYXNzOiB0cnVlLAorICB9LAorICB7
IGNvdW50OjEwMCwKKyAgICBtdXN0UGFzczogZmFsc2UsCisgIH0sCisgIHsgY291bnQ6IDEwMDAs
CisgICAgbXVzdFBhc3M6IGZhbHNlLAorICB9LAorICB7IGNvdW50OiAxMDAwMCwKKyAgICBtdXN0
UGFzczogZmFsc2UsCisgIH0sCitdOwordmFyIG9wZXJhdG9ycyA9IFsiKyIsICItIiwgIi8iLCAi
KiJdOworY291bnRzLmZvckVhY2goZnVuY3Rpb24oaW5mbykgeworICB2YXIgZ2VuZXJhdGVDb2Rl
ID0gZnVuY3Rpb24obnVtVmFycykgeworICAgIHZhciBjb2RlcyA9IFtdOworICAgIGNvZGVzLnB1
c2goInZlYzQgZnVuY3Rpb24iICsgbnVtVmFycyArICIoKSB7IHJldHVybiB1X3VuaWZvcm07IH0i
KTsKKyAgICBmb3IgKHZhciB1dSA9IDA7IHV1IDwgbnVtVmFyczsgKyt1dSkgeworICAgICAgdmFy
IGlkID0gbnVtVmFycyAtIHV1IC0gMTsKKyAgICAgIGNvZGVzLnB1c2goInZlYzQgZnVuY3Rpb24i
ICsgaWQgKyAiKCkgeyByZXR1cm4gZnVuY3Rpb24iICsgKGlkICsgMSkgKyAiKCk7IH0iKTsKKyAg
ICB9CisgICAgcmV0dXJuIHsKKyAgICAgIGNvZGU6IGNvZGVzLmpvaW4oIlxuXG4iKSwKKyAgICB9
OworICB9OworCisgIHZhciBzdWJzID0gZ2VuZXJhdGVDb2RlKGluZm8uY291bnQpOworICB0ZXN0
cy5wdXNoKHsKKyAgICB2U2hhZGVySWQ6ICJ2c2hhZGVyIiwKKyAgICB2U2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgICBmU2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhmVW5pZm9ybVRlc3RT
b3VyY2UsIHN1YnMpLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICAgIGlnbm9yZVJlc3VsdHM6ICFpbmZvLm11c3RQYXNzLAorICAgIHBhc3NNc2c6
ICJzaGFkZXIgd2l0aCAiICsgaW5mby5jb3VudCArICIgbmVzdGVkIGZ1bmN0aW9ucyIsCisgIH0p
OworfSk7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHModGVzdHMpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9uZXN0ZWQtbG9vcHMt
d2l0aC1icmVhay1hbmQtY29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9uZXN0ZWQtbG9vcHMtd2l0
aC1icmVhay1hbmQtY29udGludWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmE3NDQ3NDFhYmY2N2Q2MzA3
ZDA3YjQ2MTIzOWQ5M2FhYTRjNDZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL25lc3Rl
ZC1sb29wcy13aXRoLWJyZWFrLWFuZC1jb250aW51ZS5odG1sCkBAIC0wLDAgKzEsODMgQEAKK++7
vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlVz
aW5nIG5lc3RlZCBsb29wcyB3aXRoIGJyZWFrIGFuZC9vciBjb250aW51ZSBzdGF0ZW1lbnRzIGlu
IGEgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCB3b3JrPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjMyBhUG9zaXRpb247CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlv
biA9IHZlYzQoYVBvc2l0aW9uLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
K3VuaWZvcm0gaW50IHVDb3VudDsKKwordm9pZCBtYWluKCkgeworICAgIGludCBhID0gMDsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgaWYgKGkgPj0gdUNvdW50
KSB7IGJyZWFrOyB9CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMTA7ICsraikgeworICAg
ICAgICAgICAgaWYgKGogPj0gdUNvdW50KSB7IGNvbnRpbnVlOyB9CisgICAgICAgICAgICBhICs9
IDE7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAxMDsgKytqKSB7Cisg
ICAgICAgICAgICBpZiAoaiA+PSB1Q291bnQpIHsgYnJlYWs7IH0KKyAgICAgICAgICAgIGEgKz0g
MTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEwOyArK2opIHsKKyAg
ICAgICAgICAgIGlmIChqID49IHVDb3VudCkgeyBjb250aW51ZTsgfQorICAgICAgICAgICAgYSAr
PSAxOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMTA7ICsraikgewor
ICAgICAgICAgICAgaWYgKGogPj0gdUNvdW50KSB7IGJyZWFrOyB9CisgICAgICAgICAgICBhICs9
IDE7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAxMDsgKytqKSB7Cisg
ICAgICAgICAgICBpZiAoaiA+PSB1Q291bnQpIHsgY29udGludWU7IH0KKyAgICAgICAgICAgIGEg
Kz0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmbG9hdCBiID0gKGZsb2F0KGEpIC8gMTI1LjAp
ICogKDY0LjAgLyAyNTUuMCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiLCAxLjAgLSBiLCAw
LjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNj
cmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiTXVsdGlwbGUgbG9vcHMgdXNpbmcg
YnJlYWsgYW5kIGNvbnRpbnVlIHN0YXRlbWVudHMgc2hvdWxkIHdvcmsuIik7CitkZWJ1ZygiIik7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOworICAgIGlmICghZ2wpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsiYVBvc2l0aW9uIl0s
IHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgdmFyIHVuaWZvcm1Mb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgJ3VDb3VudCcpOworICAgIGdsLnVuaWZvcm0xaSh1bmlmb3JtTG9jLCA1
KTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFs2
NCwgMTkxLCAwLCAyNTVdLCAic2hvdWxkIGJlIDY0LDE5MSwwLDI1NSIpOworfTsKKwordGVzdCgp
OworZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2J1Z3MvbmVzdGVkLXNlcXVlbmNlLW9wZXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvbmVz
dGVkLXNlcXVlbmNlLW9wZXJhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwMmI4NTRmZjFlYTJjYzI2
OWVkMDkyODk5Y2QwNjc5OGZlYWZiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9uZXN0
ZWQtc2VxdWVuY2Utb3BlcmF0b3IuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5OZXN0ZWQgc2VxdWVuY2Ug
b3BlcmF0b3I8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1j
b25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyTmVzdGVkU2VxdWVuY2VPcGVyYXRvciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKy8vIE5vdGUgdGhhdCBrZWVwX2Zsb3BfcG9z
aXRpdmUgaXMgZXhwZWN0ZWQgdG8ga2VlcCBpdHMgZGVmYXVsdCB2YWx1ZSBmYWxzZS4KK3VuaWZv
cm0gYm9vbCBrZWVwX2Zsb3BfcG9zaXRpdmU7CitmbG9hdCBmbG9wOwordm9pZCBtYWluKCkKK3sK
KyAgICBmbG9wID0gLTEuMCwKKyAgICAoZmxvcCAqPSAtMS4wLAorICAgIGtlZXBfZmxvcF9wb3Np
dGl2ZSA/IDAuMCA6IGZsb3AgKj0gLTEuMCksCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAt
ZmxvcCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IGEgbmVzdGVkIHNlcXVlbmNlIG9w
ZXJhdG9yIHdpdGggYSB0ZXJuYXJ5IG9wZXJhdG9yIGluc2lkZS4gVGhlIHRlcm5hcnkgb3BlcmF0
b3IgbmVlZHMgdG8gYmUgY29udmVydGVkIGludG8gYW4gaWYgc3RhdGVtZW50IG9uIGEgSExTTCBi
YXNlZCBXZWJHTCBiYWNrZW5kLCB3aGljaCBtYWtlcyB0aGlzIGNhc2UgdHJpY2t5LiIpOworCitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdm
c2hhZGVyTmVzdGVkU2VxdWVuY2VPcGVyYXRvcicsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIk5lc3RlZCBzZXF1ZW5jZSBvcGVyYXRv
ciBpcyBldmFsdWF0ZWQgaW4gdGhlIGV4cGVjdGVkIG9yZGVyLiIKK30KK10pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvcG93LW9mLXNtYWxsLWNv
bnN0YW50LWluLXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3Bvdy1vZi1z
bWFsbC1jb25zdGFudC1pbi11c2VyLWRlZmluZWQtZnVuY3Rpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NWZhNTViODk4NjA0ODdlMTQ5Zjg3ZWMzZDZkNGQ2NGY1NGY0NjdhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9idWdzL3Bvdy1vZi1zbWFsbC1jb25zdGFudC1pbi11c2VyLWRlZmluZWQtZnVuY3Rp
b24uaHRtbApAQCAtMCwwICsxLDc0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5CdWcgLSBjYWxjdWxhdGluZyBwb3dlcnMgb2YgY29uc3Rh
bnRzIHNtYWxsZXIgdGhhbiAxLjBlLTUgaW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBzaG91bGQg
d29yazwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyBhUG9zaXRpb247CisK
K3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAxKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisKK2Zsb2F0IGZ1bihmbG9hdCBhcmcpIHsKKyAg
ICAvLyBUaGVzZSB2YWx1ZXMgYXJlIHN0aWxsIGVhc2lseSB3aXRoaW4gdGhlIGhpZ2hwIHJhbmdl
LgorICAgIC8vIFRoZSBtaW5pbXVtIHJhbmdlIGluIHRlcm1zIG9mIDEwJ3MgZXhwb25lbnQgaXMg
YXJvdW5kIC0xOSB0byAxOSwgYW5kIElFRUUtNzU0IHNpbmdsZSBwcmVjaXNpb24gcmFuZ2UgaXMg
aGlnaGVyIHRoYW4gdGhhdC4KKyAgICByZXR1cm4gMS4wZTEyICogcG93KGFyZywgMi4wKTsKK30K
Kwordm9pZCBtYWluKCkgeworICAgIC8vIE5vdGUgdGhhdCB0aGUgYnVnIGRpZCBub3QgcmVwcm9k
dWNlIGlmIGFuIHVuaWZvcm0gd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gaW5zdGVhZCBvZiBh
IGNvbnN0YW50LAorICAgIC8vIG9yIGlmIHRoZSBleHByZXNzaW9uIHdhcyBtb3ZlZCBvdXRzaWRl
IHRoZSB1c2VyLWRlZmluZWQgZnVuY3Rpb24uCisgICAgY29uc3QgZmxvYXQgYSA9IDEuMGUtNjsK
KyAgICBmbG9hdCBiID0gZnVuKGEpOworICAgIGlmIChhYnMoYiAtIDEuMCkgPCAwLjAxKSB7Cisg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsgLy8gZ3JlZW4K
KyAgICB9IGVsc2UgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAs
IDEuMCk7IC8vIHJlZAorICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1Zygi
Iik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitmdW5jdGlvbiB0ZXN0KCkgeworICB2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKKyAgaWYgKCFnbCkgeworICAgIHRl
c3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICByZXR1cm47CisgIH0KKyAg
aWYgKGdsLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLkhJ
R0hfRkxPQVQpLnByZWNpc2lvbiA9PSAwKSB7CisgICAgdGVzdFBhc3NlZCgiaGlnaHAgcHJlY2lz
aW9uIG5vdCBzdXBwb3J0ZWQiKTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChn
bCk7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAi
ZnNoYWRlciJdLCBbImFQb3NpdGlvbiJdLCB1bmRlZmluZWQsIHRydWUpOworICAgIHd0dS5kcmF3
VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDI1NiwgMjU2
LCBbMCwgMjU1LCAwLCAyNTVdKTsKKyAgfQorfTsKKwordGVzdCgpOworZmluaXNoVGVzdCgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9wb3ct
d2l0aC1jb25zdGFudC1leHBvbmVudC1zaG91bGQtbm90LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
cG93LXdpdGgtY29uc3RhbnQtZXhwb25lbnQtc2hvdWxkLW5vdC1jcmFzaC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlOTU4NDJiMTI3ZjlhOTY1OTNiZmZiMmE2ZjY4OWU1ODIwOTE2MTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvcG93LXdpdGgtY29uc3RhbnQtZXhwb25lbnQtc2hvdWxkLW5vdC1j
cmFzaC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkJ1ZyAtIHBvdygpIHdpdGggY29uc3RhbnQgdmVjdG9y
IGV4cG9uZW50IHNob3VsZCBub3QgY3Jhc2g8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVGVzdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7CisgIC8vIHBvdygp
IHdpdGggYSBjb25zdGFudCB2ZWN0b3IgZXhwb25lbnQgbWF5IGNhdXNlIGEgY3Jhc2ggb24gTlZJ
RElBIDMzMSBzZXJpZXMgT3BlbkdMIGRyaXZlcnMKKyAgdmVjMiB2ID0gcG93KGdsX0ZyYWdDb29y
ZC54eSwgdmVjMigyLjApKTsKKyAgZmxvYXQgeSA9IHBvdyh2LCB2ZWMyKDAuNDUsIDAuNSkpLnk7
CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAgKyB5IC0gZ2xfRnJhZ0Nvb3JkLnksIDAu
MCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlck5lc3RlZFRlc3QiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lk
IG1haW4oKQoreworICAvLyBwb3coKSB3aXRoIGEgY29uc3RhbnQgdmVjdG9yIGV4cG9uZW50IG1h
eSBjYXVzZSBhIGNyYXNoIG9uIE5WSURJQSAzMzEgc2VyaWVzIE9wZW5HTCBkcml2ZXJzCisgIC8v
IHdvcmthcm91bmRzIGZvciB0aGlzIHNob3VsZCB3b3JrIGV2ZW4gaWYgcHJvYmxlbWF0aWMgcG93
KCkgc3RhdGVtZW50cyBhcmUgbmVzdGVkIHdpdGhpbgorICAvLyBlYWNoIG90aGVyLgorICBmbG9h
dCB5ID0gcG93KHBvdyhnbF9GcmFnQ29vcmQueHksIHZlYzIoMi4wKSksIHZlYzIoMC40NSwgMC41
KSkueTsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCArIHkgLSBnbF9GcmFnQ29vcmQu
eSwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCisv
LyBUaGlzIHRlc3QgaGFzIHF1aXRlIGEgbG90IG9mIHRvbGVyYW5jZSBzaW5jZSBwb3coKSBkb2Vz
bid0IGhhdmUgZXhwbGljaXQgcHJlY2lzaW9uIHJlcXVpcmVtZW50cworLy8gaW4gRVNTTDEsIGFu
ZCBpbiBFU1NMMyB0aGUgbGltaXRzIGFyZSB2ZXJ5IGxvb3NlLgorR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blJlbmRlclRlc3RzKFsKKyAgeworICAgIGZTaGFkZXJJZDogImZzaGFkZXJUZXN0IiwK
KyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBy
ZW5kZXJUb2xlcmFuY2U6IDIwLAorICAgIHBhc3NNc2c6ICJzaGFkZXIgd2l0aCBwb3coKSB3aXRo
IGEgY29uc3RhbnQgdmVjdG9yIGV4cG9uZW50IHNob3VsZCBub3QgY3Jhc2giLAorICB9LAorICB7
CisgICAgZlNoYWRlcklkOiAiZnNoYWRlck5lc3RlZFRlc3QiLAorICAgIGZTaGFkZXJTdWNjZXNz
OiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRlclRvbGVyYW5jZTogMjAs
CisgICAgcGFzc01zZzogInNoYWRlciB3aXRoIG5lc3RlZCBwb3coKSBjYWxscyB3aXRoIGNvbnN0
YW50IHZlY3RvciBleHBvbmVudHMgc2hvdWxkIG5vdCBjcmFzaCIsCisgIH0KK10pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9xdWFsY29tbS1j
cmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9idWdzL3F1YWxjb21tLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFl
ZjFlNDdhYmZlNzkyMmRmOWE0YmY0NDk5OGRlNTcwMGFhY2JhMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvYnVncy9xdWFsY29tbS1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMTM2IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5RdWFsY29tbSBw
cm9ncmFtIGxpbmsgY3Jhc2ggVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSd2c2hh
ZGVyMScgdHlwZT0neC1zaGFkZXIveC12ZXJ0ZXgnPgorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
dm9pZCBtYWluKCkgeworZ2xfUG9zaXRpb24gPSB2ZWM0KCAxLjAsIDEuMCwgMS4wLCAxLjAgKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0nZnNoYWRlcjEnIHR5cGU9J3gtc2hhZGVyL3gtZnJh
Z21lbnQnPgorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwordW5pZm9ybSBpbnQgcmVuZGVyVHlwZTsK
K3VuaWZvcm0gc2FtcGxlcjJEIHRleE1hcDsKK3ZvaWQgbWFpbigpIHsKKyAgICB2ZWMyIHV2ID0g
dmVjMigwLjAsIDAuMCk7CisgICAgaWYoIHJlbmRlclR5cGUgPT0gMCApIHsKKyAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0ZXhNYXAsIHV2ICk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdmVjNCB0ZXh0dXJlID0gdGV4dHVyZTJEKCB0ZXhNYXAsIHV2ICk7CisgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHRleHR1cmU7CisgICAgfQorfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9J3Zz
aGFkZXIyJyB0eXBlPSd4LXNoYWRlci94LXZlcnRleCc+CithdHRyaWJ1dGUgdmVjMyB2ZXJ0ZXhf
cG9zaXRpb247Cit1bmlmb3JtIG1hdDQgbWF0cml4X21vZGVsOwordW5pZm9ybSBtYXQ0IG1hdHJp
eF92aWV3UHJvamVjdGlvbjsKKworYXR0cmlidXRlIHZlYzQgdmVydGV4X2JvbmVXZWlnaHRzOwor
YXR0cmlidXRlIHZlYzQgdmVydGV4X2JvbmVJbmRpY2VzOworCit1bmlmb3JtIHNhbXBsZXIyRCB0
ZXh0dXJlX3Bvc2VNYXA7Cit1bmlmb3JtIHZlYzIgdGV4dHVyZV9wb3NlTWFwU2l6ZTsKKworbWF0
NCBnZXRCb25lTWF0cml4KGNvbnN0IGluIGZsb2F0IGkpCit7CisgICAgZmxvYXQgaiA9IGkgKiA0
LjA7CisgICAgZmxvYXQgeCA9IG1vZChqLCBmbG9hdCh0ZXh0dXJlX3Bvc2VNYXBTaXplLngpKTsK
KyAgICBmbG9hdCB5ID0gZmxvb3IoaiAvIGZsb2F0KHRleHR1cmVfcG9zZU1hcFNpemUueCkpOwor
CisgICAgZmxvYXQgZHggPSAxLjAgLyBmbG9hdCh0ZXh0dXJlX3Bvc2VNYXBTaXplLngpOworICAg
IGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQodGV4dHVyZV9wb3NlTWFwU2l6ZS55KTsKKworICAgIHkg
PSBkeSAqICh5ICsgMC41KTsKKworICAgIHZlYzQgdjEgPSB0ZXh0dXJlMkQodGV4dHVyZV9wb3Nl
TWFwLCB2ZWMyKGR4ICogKHggKyAwLjUpLCB5KSk7CisgICAgdmVjNCB2MiA9IHRleHR1cmUyRCh0
ZXh0dXJlX3Bvc2VNYXAsIHZlYzIoZHggKiAoeCArIDEuNSksIHkpKTsKKyAgICB2ZWM0IHYzID0g
dGV4dHVyZTJEKHRleHR1cmVfcG9zZU1hcCwgdmVjMihkeCAqICh4ICsgMi41KSwgeSkpOworICAg
IHZlYzQgdjQgPSB0ZXh0dXJlMkQodGV4dHVyZV9wb3NlTWFwLCB2ZWMyKGR4ICogKHggKyAzLjUp
LCB5KSk7CisKKyAgICBtYXQ0IGJvbmUgPSBtYXQ0KHYxLCB2MiwgdjMsIHY0KTsKKworICAgIHJl
dHVybiBib25lOworfQorCit2b2lkIG1haW4odm9pZCkKK3sKKyAgICBtYXQ0IG1vZGVsTWF0cml4
ID0gdmVydGV4X2JvbmVXZWlnaHRzLnggKiBnZXRCb25lTWF0cml4KHZlcnRleF9ib25lSW5kaWNl
cy54KSArCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleF9ib25lV2VpZ2h0cy55ICogZ2V0
Qm9uZU1hdHJpeCh2ZXJ0ZXhfYm9uZUluZGljZXMueSkgKworICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJ0ZXhfYm9uZVdlaWdodHMueiAqIGdldEJvbmVNYXRyaXgodmVydGV4X2JvbmVJbmRpY2Vz
LnopICsKKyAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4X2JvbmVXZWlnaHRzLncgKiBnZXRC
b25lTWF0cml4KHZlcnRleF9ib25lSW5kaWNlcy53KTsKKworICAgIHZlYzQgcG9zaXRpb25XID0g
bW9kZWxNYXRyaXggKiB2ZWM0KHZlcnRleF9wb3NpdGlvbiwgMS4wKTsKKyAgICBnbF9Qb3NpdGlv
biA9IG1hdHJpeF92aWV3UHJvamVjdGlvbiAqIHBvc2l0aW9uVzsKKworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSdmc2hhZGVyMicgdHlwZT0neC1zaGFkZXIveC1mcmFnbWVudCc+CitwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgg
MS4wLCAxLjAsIDEuMCwgMS4wICk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgYSBrbm93
biBidWcgaW4gc29tZSBRdWFsY29tbSBkcml2ZXJzIHdoaWNoIGNhdXNlcyBjcmFzaGVzIHdoZW4g
bGlua2luZyBjZXJ0YWluIHNoYWRlcnMuIDxhIGhyZWY9J2h0dHBzOi8vY29kZS5nb29nbGUuY29t
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00OTg5NDcnPmNyYnVnLmNvbS80OTg5NDc8L2E+
Iik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgpOworCitnbC5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
Z2xjb250ZXh0bG9zdCIsIGZ1bmN0aW9uKGUpIHsKKyAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRl
eHQgbG9zdCIpOworfSk7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250
ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNv
bnRleHQgZXhpc3RzIik7CisgICAgZGVidWcoIiIpOworCisgICAgaWYgKGdsLmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLkhJR0hfRkxPQVQpLnByZWNpc2lv
biA9PSAwKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImhpZ2hwIHByZWNpc2lvbiBub3Qgc3VwcG9y
dGVkIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHByb2dyYW0xID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyd2c2hhZGVyMScsICdmc2hhZGVyMSddKTsKKyAgICAgICAgaWYgKCFnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHByb2dyYW0xLCBnbC5MSU5LX1NUQVRVUykpIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlByb2dyYW0gZmFpbGVkIHRvIGxpbmsiKTsKKyAgICAgICAgfQorICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKworICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgdmFyIHByb2dyYW0y
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyMicsICdmc2hhZGVyMiddKTsKKyAgICAg
ICAgaWYgKCFnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0yLCBnbC5MSU5LX1NUQVRVUykp
IHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb2dyYW0gZmFpbGVkIHRvIGxpbmsiKTsKKyAg
ICAgICAgfQorICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRo
ZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICB9Cit9CisKKy8vIEN5Y2xlIHRocm91Z2gg
YSByQUYgb25jZSB0byBnaXZlIGFueSB3ZWJnbGNvbnRleHRsb3N0IGV2ZW50cyBhIGNoYW5jZSB0
byBwcm9wYWdhdGUKK3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7IGZp
bmlzaFRlc3QoKTsgfSk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVn
cy9xdWFsY29tbS1sb29wLXdpdGgtY29udGludWUtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9xdWFs
Y29tbS1sb29wLXdpdGgtY29udGludWUtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjk0YzUyMjY4
NWEzZTRjZThkYjBjYjYxNDdiMTkxYTVkMzM4ZjUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9i
dWdzL3F1YWxjb21tLWxvb3Atd2l0aC1jb250aW51ZS1jcmFzaC5odG1sCkBAIC0wLDAgKzEsNzEg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PlF1YWxjb21tIGxvb3Agd2l0aCBjb250aW51ZSBjcmFzaCB0ZXN0PC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0ndnNoYWRlcjEnIHR5cGU9J3gtc2hhZGVyL3gtdmVydGV4Jz4KK3ZvaWQgbWFp
biAoKQoreworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSdmc2hhZGVyMScgdHlwZT0neC1zaGFk
ZXIveC1mcmFnbWVudCc+Cit2b2lkIG1haW4gKCkKK3sKKyAgICBpbnQgY291bnQxID0gMCwgY291
bnQyID0gMDsKKyAgICBmb3IoaW50IGk9MDtpPDQ7aSsrKQorICAgIHsKKyAgICAgICAgaWYoY291
bnQxID09IDIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBleGVyY2lzZXMgYSBjcmFzaCBvbiBBZHJlbm8gMzAwIHNlcmllcyBHUFVzIHdoZW4gY29t
cGlsaW5nIGNlcnRhaW4gbG9vcCBjb25zdHJ1Y3RzLiA8YSBocmVmPSdodHRwczovL2NvZGUuZ29v
Z2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTI3NzYxJz5jcmJ1Zy5jb20vNTI3
NzYxPC9hPiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKworZ2wuY2FudmFzLmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmdsY29udGV4dGxvc3QiLCBmdW5jdGlvbihlKSB7CisgICB0ZXN0RmFpbGVkKCJXZWJH
TCBjb250ZXh0IGxvc3QiKTsKK30pOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2Vi
R0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJX
ZWJHTCBjb250ZXh0IGV4aXN0cyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHZhciBwcm9ncmFt
MSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcjEnLCAnZnNoYWRlcjEnXSk7CisgICAg
aWYgKCFnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0xLCBnbC5MSU5LX1NUQVRVUykpIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiUHJvZ3JhbSBmYWlsZWQgdG8gbGluayIpOworICAgIH0KKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKworICAgIGRlYnVnKCIiKTsKK30KKworLy8gQ3ljbGUgdGhyb3VnaCBhIHJB
RiBvbmNlIHRvIGdpdmUgYW55IHdlYmdsY29udGV4dGxvc3QgZXZlbnRzIGEgY2hhbmNlIHRvIHBy
b3BhZ2F0ZQord2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsgZmluaXNo
VGVzdCgpOyB9KTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3Nh
bXBsZXItYXJyYXktc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3NhbXBsZXIt
YXJyYXktc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzOTE3OWExODZjMmVh
ZDc0NWNjMTBjYmI3M2MwZjlhNDU3MzliMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
c2FtcGxlci1hcnJheS1zdHJ1Y3QtZnVuY3Rpb24tYXJnLmh0bWwKQEAgLTAsMCArMSw3MiBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xT
TCBzdHJ1Y3QgY29udGFpbmluZyBhbiBhcnJheSBvZiBzYW1wbGVycyBwYXNzZWQgaW50byBhIHVz
ZXItZGVmaW5lZCBmdW5jdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisKKzxjYW52YXMgaWQ9Im91dHB1dCIgc3R5bGU9ImJvcmRlcjogbm9uZTsiIHdpZHRoPSI2NCIg
aGVpZ2h0PSI2NCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJTYW1wbGVyIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitzdHJ1Y3Qg
UyB7CisgICAgc2FtcGxlcjJEIHNhbVsyXTsKK307CisKK3VuaWZvcm0gUyB1bmk7CisKK3ZlYzQg
dXNlU2FtcGxlcihTIGFyZykKK3sKKyAgICByZXR1cm4gdGV4dHVyZTJEKGFyZy5zYW1bMF0sIHZl
YzIoMC4wLCAwLjApKTsKK30KKwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQodXNlU2FtcGxlcih1bmkpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CisKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgib3V0cHV0Iik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisKK2lm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGEgR0wgY29udGV4dC4i
KTsKK30gZWxzZSB7CisgICAgZGVidWcoIkRyYXdpbmcgd2l0aCBhIHNoYWRlciB0aGF0IHVzZXMg
YSBzYW1wbGVyIGFycmF5IGluIGEgc3RydWN0IHBhc3NlZCBpbnRvIGEgZnVuY3Rpb24uIik7Cisg
ICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgICBnbCwgW3d0dS5zaW1w
bGVWZXJ0ZXhTaGFkZXIsICdmc2hhZGVyU2FtcGxlciddLCBbJ2FfcG9zaXRpb24nXSwgWzBdLCB0
cnVlKTsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKKyAgICB2YXIgdGV4ID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Cisg
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIs
IGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgMSwgMSwgWzAsIDI1NSwgMCwg
MjU1XSk7CisKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVj
a0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2J1Z3Mvc2FtcGxlci1hcnJheS11c2luZy1sb29wLWluZGV4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2J1Z3Mvc2FtcGxlci1hcnJheS11c2luZy1sb29wLWluZGV4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzU3MDdhMWY4OTcyM2FkZmNkMjhjMmIwOGE0ZGM5NzVhNDU1NWVhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvYnVncy9zYW1wbGVyLWFycmF5LXVzaW5nLWxvb3AtaW5kZXguaHRtbApAQCAt
MCwwICsxLDgxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5TYW1wbGVyIGFycmF5cyB1c2luZyBsb29wIGluZGV4IHNob3VsZCBjb21waWxl
IGZpbmUuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjQiIGhlaWdodD0iNCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDMw
cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfUG9z
aXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3Vu
aWZvcm0gc2FtcGxlcjJEIHVuaVsyXTsKKworZmxvYXQgemVybyhpbnQgeCkKK3sKKyAgcmV0dXJu
IGZsb2F0KHgpIC0gZmxvYXQoeCk7Cit9CisKK3ZvaWQgbWFpbigpCit7CisgIHZlYzQgYyA9IHZl
YzQoMCwwLDAsMCk7CisgIGZvciAoaW50IGlpID0gMTsgaWkgPCAzOyArK2lpKSB7CisgICAgaWYg
KGMueCA+IDI1NS4wKSB7CisgICAgICBjLnggPSAyNTUuMCArIHplcm8oaWkpOworICAgICAgYnJl
YWs7CisgICAgfQorICAgIGMgKz0gdGV4dHVyZTJEKHVuaVtpaSAtIDFdLCB2ZWMyKDAuNSwgMC41
KSk7CisgIH0KKyAgZ2xfRnJhZ0NvbG9yID0gYzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3Zh
ciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICBnbCwgWyd2c2hh
ZGVyJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRpb24nXSwgdW5kZWZpbmVkLCB0cnVlKTsKKworZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IDI7ICsraWkpIHsKKyAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidW5pWyIgKyBpaSArICJdIik7CisgIGdsLmFjdGl2ZVRleHR1cmUo
Z2wuVEVYVFVSRTAgKyBpaSk7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIHd0
dS5maWxsVGV4dHVyZShnbCwgdGV4LCAxLCAxLCBbMzIsIDE2LCA4LCBpaSAqIDldLCAwKTsKKyAg
Z2wudW5pZm9ybTFpKGxvYywgaWkpOworfQorCit3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
Oword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJy
b3JzIGZyb20gc2V0dXAuIik7Cit3dHUuY2hlY2tDYW52YXMoZ2wsIFs2NCwgMzIsIDE2LCA5XSwK
KyAgICAgICAgICAgICAgICAiU2hvdWxkIHJlbmRlciBjb3JyZWN0bHkiLCAxKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9idWdzL3NhbXBsZXItc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9idWdzL3NhbXBsZXItc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
YmM3NTU0NDRhOGJjN2E5OTZiZTIzNDI2YzlmNjU2YzRmOTI0YjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2J1Z3Mvc2FtcGxlci1zdHJ1Y3QtZnVuY3Rpb24tYXJnLmh0bWwKQEAgLTAsMCArMSwx
MTMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+UGFzc2luZyBhIHN0cnVjdCBjb250YWluaW5nIGEgc2FtcGxlciB0byBhIGZ1bmN0aW9u
LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8Y2FudmFzIGlkPSJvdXRwdXQi
IHN0eWxlPSJib3JkZXI6IG5vbmU7IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQgaWQ9InNoYWRlci1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICBzdHJ1Y3QgU29tZVN0cnVjdHsKKyAgICAg
ICAgc2FtcGxlcjJEIHNvdXJjZTsKKyAgICB9OworCisgICAgdmVjNCBmdW4oU29tZVN0cnVjdCBz
KXsKKyAgICAgICAgcmV0dXJuIHRleHR1cmUyRChzLnNvdXJjZSwgdmVjMigwLjUpKTsKKyAgICB9
CisKKyAgICB1bmlmb3JtIFNvbWVTdHJ1Y3QgZ3JlZW47CisgICAgdm9pZCBtYWluKCl7CisgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IGZ1bihncmVlbik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9InNoYWRlci1mcy1hcnJheSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICBzdHJ1Y3QgU29tZVN0cnVjdHsKKyAgICAg
ICAgc2FtcGxlcjJEIHNvdXJjZTsKKyAgICB9OworCisgICAgdmVjNCBmdW4oU29tZVN0cnVjdCBz
WzJdKXsKKyAgICAgICAgcmV0dXJuIHRleHR1cmUyRChzWzBdLnNvdXJjZSwgdmVjMigwLjUpKTsK
KyAgICB9CisKKyAgICB1bmlmb3JtIFNvbWVTdHJ1Y3QgZ3JlZW5bMl07CisgICAgdm9pZCBtYWlu
KCl7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IGZ1bihncmVlbik7CisgICAgfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiSWYg
dGhlIHRlc3QgcGFzc2VzIGNvcnJlY3RseSB0aGUgdmlld3BvcnQgd2lsbCBiZSBncmVlbi4iKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRwdXQiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
KTsKKwordmFyIHRleHR1cmVHcmVlbjsKKwordmFyIGNyZWF0ZUdyZWVuVGV4dHVyZSA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5M
SU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIHd0dS5maWxs
VGV4dHVyZShnbCwgdGV4dHVyZSwgMSwgMSwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9Owor
Cit2YXIgdGVzdCA9IGZ1bmN0aW9uKGZyYWdTaGFkZXJJZCwgdGV4VW5pZm9ybU5hbWUpIHsKKyAg
ICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFt3dHUuc2ltcGxlVmVydGV4U2hh
ZGVyLCBmcmFnU2hhZGVySWRdLCBbImFfcG9zaXRpb24iXSwgWzBdLCB0cnVlKTsKKworICAgIGlm
ICghcHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgY29tcGlsYXRpb24vbGlu
ayBmYWlsZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBCaW5kIHRleHR1cmUKKyAgICAg
ICAgdmFyIHVuaWZvcm1NYXAgPSB3dHUuZ2V0VW5pZm9ybU1hcChnbCwgcHJvZ3JhbSk7CisgICAg
ICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlR3JlZW4pOworICAgICAgICBnbC51bmlmb3JtMWkodW5p
Zm9ybU1hcFt0ZXhVbmlmb3JtTmFtZV0ubG9jYXRpb24sIDApOworCisgICAgICAgIC8vIERyYXcK
KyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICAgICAgICAvLyBWZXJp
Znkgb3V0cHV0CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDEyOCwgMjU2LCAx
MjgsIFswLCAyNTUsMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIsICAxKTsKKyAgICB9Cit9Owor
CitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwor
fSBlbHNlIHsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisgICAgdGV4dHVyZUdy
ZWVuID0gY3JlYXRlR3JlZW5UZXh0dXJlKCk7CisgICAgdGVzdCgic2hhZGVyLWZzIiwgImdyZWVu
LnNvdXJjZSIpOworICAgIHRlc3QoInNoYWRlci1mcy1hcnJheSIsICJncmVlblswXS5zb3VyY2Ui
KTsKK30KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9zZXF1ZW5jZS1vcGVyYXRvci1ldmFsdWF0aW9u
LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mvc2VxdWVuY2Utb3BlcmF0b3ItZXZhbHVhdGlvbi1vcmRl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdlOWFmNmYxYWE0MDA1NTUwMjIxZjg1MTk4MmNiMGIxODY0NzU1
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mvc2VxdWVuY2Utb3BlcmF0b3ItZXZhbHVh
dGlvbi1vcmRlci5odG1sCkBAIC0wLDAgKzEsMTE2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHNob3J0LWNpcmN1aXRpbmcgb3Bl
cmF0b3JzIHNob3VsZCBiZSBldmFsdWF0ZWQgYWZ0ZXIgcHJldmlvdXMgb3BlcmFuZHMgaW4gYSBz
ZXF1ZW5jZTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJm
c2hhZGVyU2VxdWVuY2VTaWRlRWZmZWN0c0FmZmVjdFRlcm5hcnkiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2Jvb2wgY29ycmVjdCA9IHRy
dWU7CisKK3VuaWZvcm0gZmxvYXQgdV96ZXJvOworCitmbG9hdCB3cm9uZygpIHsKKyAgICBjb3Jy
ZWN0ID0gZmFsc2U7CisgICAgcmV0dXJuIDAuMDsKK30KKwordm9pZCBtYWluKCkgeworICAgIC8v
IEVTU0wgMS4wMCBzZWN0aW9uIDUuOSwgYWJvdXQgc2VxdWVuY2Ugb3BlcmF0b3I6CisgICAgLy8g
IkFsbCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLCBpbiBvcmRlciwgZnJvbSBsZWZ0IHRvIHJp
Z2h0IgorICAgIC8vIEFsc28gdXNlIGEgdGVybmFyeSBvcGVyYXRvciB3aGVyZSB0aGUgdGhpcmQg
b3BlcmFuZCBoYXMgc2lkZSBlZmZlY3RzIHRvIG1ha2Ugc3VyZQorICAgIC8vIG9ubHkgdGhlIHNl
Y29uZCBvcGVyYW5kIGlzIGV2YWx1YXRlZC4KKyAgICBmbG9hdCBhID0gdV96ZXJvIC0gMC41OyAv
LyBSZXN1bHQgc2hvdWxkIGJlIC0wLjUuCisgICAgZmxvYXQgZ3JlZW4gPSAoYSsrLCBhID4gMC4w
ID8gMS4wIDogd3JvbmcoKSk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGNvcnJlY3Qg
PyBncmVlbiA6IDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hh
ZGVyU2VxdWVuY2VTaWRlRWZmZWN0c0FmZmVjdEFuZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5pZm9ybSBib29sIHVfZmFsc2U7CisK
K2Jvb2wgc2lkZUVmZmVjdEEgPSBmYWxzZTsKK2Jvb2wgZnVuY0EoKSB7CisgICAgc2lkZUVmZmVj
dEEgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHNpZGVFZmZlY3RCID0gZmFs
c2U7Citib29sIGZ1bmNCKCkgeworICAgIHNpZGVFZmZlY3RCID0gdHJ1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBtYWluKCkgeworICAgIGJvb2wgYiA9IChmdW5jQSgpLCB1X2ZhbHNl
ID09IHNpZGVFZmZlY3RBICYmIGZ1bmNCKCkpOworICAgIGdsX0ZyYWdDb2xvciA9ICghYiAmJiBz
aWRlRWZmZWN0QSAmJiAhc2lkZUVmZmVjdEIpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwg
MCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJTZXF1ZW5jZVNpZGVF
ZmZlY3RzQWZmZWN0T3IiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gYm9vbCB1X2ZhbHNlOworCitib29sIHNpZGVFZmZlY3RB
ID0gZmFsc2U7Citib29sIGZ1bmNBKCkgeworICAgIHNpZGVFZmZlY3RBID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgc2lkZUVmZmVjdEIgPSBmYWxzZTsKK2Jvb2wgZnVuY0Io
KSB7CisgICAgc2lkZUVmZmVjdEIgPSB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBtYWluKCkgeworICAgIGJvb2wgYiA9IChmdW5jQSgpLCAodV9mYWxzZSA9PSAhc2lkZUVmZmVj
dEEpIHx8IGZ1bmNCKCkpOworICAgIGdsX0ZyYWdDb2xvciA9IChiICYmIHNpZGVFZmZlY3RBICYm
ICFzaWRlRWZmZWN0QikgPyB2ZWM0KDAsIDEsIDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ug
c3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiIik7CitkZWJ1ZygiVGhpcyB0ZXN0IGlz
IHRhcmdldGVkIHRvIHN0cmVzcyBzeW50YXggdHJlZSB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBtaWdo
dCBuZWVkIHRvIGJlIGRvbmUgaW4gc2hhZGVyIHRyYW5zbGF0aW9uIHRvIHVuZm9sZCBvcGVyYXRv
cnMuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZT
aGFkZXJJZDogJ2ZzaGFkZXJTZXF1ZW5jZVNpZGVFZmZlY3RzQWZmZWN0VGVybmFyeScsCisgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0V4
cHJlc3Npb24gd2hlcmUgZmlyc3Qgb3BlcmFuZCBvZiBhIHNlcXVlbmNlIG9wZXJhdG9yIGhhcyBz
aWRlIGVmZmVjdHMgd2hpY2ggYWZmZWN0IHRoZSBzZWNvbmQgb3BlcmFuZCB0aGF0IGlzIGEgdGVy
bmFyeSBvcGVyYXRvcicKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJTZXF1ZW5jZVNpZGVF
ZmZlY3RzQWZmZWN0QW5kJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICBwYXNzTXNnOiAnRXhwcmVzc2lvbiB3aGVyZSBmaXJzdCBvcGVyYW5kIG9mIGEg
c2VxdWVuY2Ugb3BlcmF0b3IgaGFzIHNpZGUgZWZmZWN0cyB3aGljaCBhZmZlY3QgdGhlIHNlY29u
ZCBvcGVyYW5kIHRoYXQgaXMgYW4gYW5kIG9wZXJhdG9yJworfSwKK3sKKyAgZlNoYWRlcklkOiAn
ZnNoYWRlclNlcXVlbmNlU2lkZUVmZmVjdHNBZmZlY3RPcicsCisgIGZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0V4cHJlc3Npb24gd2hlcmUg
Zmlyc3Qgb3BlcmFuZCBvZiBhIHNlcXVlbmNlIG9wZXJhdG9yIGhhcyBzaWRlIGVmZmVjdHMgd2hp
Y2ggYWZmZWN0IHRoZSBzZWNvbmQgb3BlcmFuZCB0aGF0IGlzIGFuIG9yIG9wZXJhdG9yJworfQor
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdz
L3NrZXRjaGZhYi1saWdodGluZy1zaGFkZXItY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9za2V0Y2hm
YWItbGlnaHRpbmctc2hhZGVyLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM0MTZkMTdkZWRjNzFm
MzMwNjQyM2YzMTIwZGUyYWU3ZTM1ZTYwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9z
a2V0Y2hmYWItbGlnaHRpbmctc2hhZGVyLWNyYXNoLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+U2tldGNo
ZmFiIExpZ2h0aW5nIFNoYWRlciBDcmFzaDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J3Zz
aGFkZXIxJyB0eXBlPSd4LXNoYWRlci94LXZlcnRleCc+CithdHRyaWJ1dGUgZmxvYXQgdGVzdFZh
bHVlOyAgICAgICAgICAvLyBDYW4gYmUgdW5pZm9ybSBhcyB3ZWxsLgordmFyeWluZyBtZWRpdW1w
IGZsb2F0IEZyYWdWYXJ5aW5nOyAgLy8gTmVjZXNzYXJ5IHRvIHJlcHJvZHVjZS4KKwordm9pZCBt
YWluKCkgeworICAvLyBDcmFzaGVzIHdpdGggbWF0NCBhcyB3ZWxsLiBEb2VzIG5vdCBjcmFzaCB3
aXRoIHZlY3RvcnMuCisgIG1hdDIgcHJvamVjdGlvbk1hdHJpeCA9IG1hdDIoMC4wLCAwLjAsIDAu
MCwgMC4wKTsKKyAgaWYgKHRlc3RWYWx1ZSA9PSAxLjApCisgIHsKKyAgICAvLyBVc2luZyB0aGUg
bWF0cml4IHZhcmlhYmxlIGFwcGVhcnMgbmVjZXNzYXJ5LgorICAgIHByb2plY3Rpb25NYXRyaXhb
MF1bMF0gPSAxLjA7CisgIH0KKworICBGcmFnVmFyeWluZyA9IDAuMDsKKyAgLy8gUmVmZXJlbmNp
bmcgdGhlIG1hdHJpeCBpcyBuZWNlc3NhcnkgdGhvdWdoIGNsZWFybHkgdGhlIGNvbXBpbGVyCisg
IC8vIGRvZXNuJ3QgcmVhbGl6ZSB0aGUgYXNzaWdubWVudCBpcyB1c2VsZXNzLgorICBnbF9Qb3Np
dGlvbiA9IHZlYzQocHJvamVjdGlvbk1hdHJpeFsxXVswXSwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFkZXIxJyB0eXBlPSd4LXNoYWRlci94LWZyYWdtZW50
Jz4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyBmbG9hdCBGcmFnVmFyeWluZzsK
Kwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KEZyYWdWYXJ5aW5nLCAwLjAs
IDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGRlbW9uc3RyYXRlcyBhIGNyYXNoIG9u
IHRoZSBOZXh1cyA1IChBZHJlbm8gMzMwKSB3aGVuIGNvbXBpbGluZyBTa2V0Y2hmYWIncyBsaWdo
dGluZyBzaGFkZXIuIDxhIGhyZWY9J2h0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD01NTE5MzcnPmNyYnVnLmNvbS81NTE5Mzc8L2E+Iik7CisKK2RlYnVn
KCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgpOworCitnbC5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9z
dCIsIGZ1bmN0aW9uKGUpIHsKKyAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgbG9zdCIpOwor
fSk7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3Rz
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIHByb2dyYW0xID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgWyd2c2hhZGVyMScsICdmc2hhZGVyMSddKTsKKyAgICBpZiAoIWdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIocHJvZ3JhbTEsIGdsLkxJTktfU1RBVFVTKSkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJQcm9ncmFtIGZhaWxlZCB0byBsaW5rIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiUHJvZ3JhbSBsaW5rZWQgc3VjY2Vzc2Z1bGx5Iik7CisgICAgfQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIp
OworCisgICAgZGVidWcoIiIpOworfQorCisvLyBDeWNsZSB0aHJvdWdoIHJBRiBhIGZldyB0aW1l
cyB0byBnaXZlIGFueSB3ZWJnbGNvbnRleHRsb3N0IGV2ZW50cyBhIGNoYW5jZSB0byBwcm9wYWdh
dGUuCit3dHUud2FpdEZvckNvbXBvc2l0ZShmdW5jdGlvbigpIHsgZmluaXNoVGVzdCgpOyB9KTsK
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3N0cnVjdC1jb25zdHJ1
Y3Rvci1oaWdocC1idWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9zdHJ1Y3QtY29uc3RydWN0b3ItaGlnaHAt
YnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZiNzJlMTkxNmYyMTU4MTJkM2IxZjNiYjAyZmI4MDY3ZmNk
MjI2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9zdHJ1Y3QtY29uc3RydWN0b3ItaGln
aHAtYnVnLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlN0cnVjdCBjb25zdHJ1Y3RvciBo
aWdocCBidWcuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wt
Y29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBp
ZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjaWZkZWYgR0xfRlJBR01F
TlRfUFJFQ0lTSU9OX0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCitzdHJ1Y3QgVGVzdCB7CisgIHZlYzMgY29sb3I7
Cit9OworCit2b2lkIG1haW4oKSB7CisgIHZlYzMgY29sb3IgPSB2ZWMzKCAwLjAsIDEuMCwgMC4w
ICk7CisgIFRlc3QgdGVzdCA9IFRlc3QoIGNvbG9yICk7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
IHRlc3QuY29sb3IsIDEuMCApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiU3RydWN0IGNv
bnN0cnVjdG9ycyBzaG91bGQgZXZhbHVhdGUgcHJvcGVybHkuIik7CitkZWJ1ZygiUmVncmVzc2lv
biB0ZXN0IGZvciBUaHJlZS5qcyBidWcgd29ya2VkIGFyb3VuZCBpbiA8YSBocmVmPSdodHRwczov
L2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL3B1bGwvNzU1Nic+aHR0cHM6Ly9naXRodWIuY29t
L21yZG9vYi90aHJlZS5qcy9wdWxsLzc1NTY8L2E+IHRoYXQgcmVwcm9kdWNlZCBvbiBOZXh1cyA0
IGFuZCA1IChBZHJlbm8gMzIwIGFuZCAzMzApLiIpOworZGVidWcoIldoZW4gaGlnaCBwcmVjaXNp
b24gaXMgdXNlZCBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyIG9uIHRoZXNlIGRldmljZXMsIGJ1Z3Mg
b2NjdXIgaW4gZXZhbHVhdGlvbiBvZiBzdHJ1Y3RzJyBjb25zdHJ1Y3RvcnMuIFRoYW5rcyB0byBN
ci4gZG9vYiBmb3IgdGhlIHJlZHVjZWQgdGVzdCBjYXNlLiIpOworCitHTFNMQ29uZm9ybWFuY2VU
ZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmc2hhZGVyJywKKyAgZlNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiU3Ry
dWN0IGNvbnRzdHJ1Y3RvciBldmFsdWF0aW9uIgorfQorXSk7CisKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mvc3RydWN0LXdpdGgtc2luZ2xlLW1l
bWJlci1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3N0cnVjdC13aXRoLXNpbmdsZS1tZW1i
ZXItY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDEwMDgzMjZmYjZhNzkxMWI0M2M4OWY1
M2E2N2IzYjczYWI5OTZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3N0cnVjdC13aXRo
LXNpbmdsZS1tZW1iZXItY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHN0cnVj
dCB3aXRoIGEgc2luZ2xlIG1lbWJlciBjb25zdHJ1Y3RvciB0ZXN0PC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+CisjdmVyc2lvbiAxMDAKKworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K3N0cnVjdCBTIHsKKyAgICBtYXQyIHJvdGF0aW9uOworfTsKK3ZvaWQgbWFpbih2b2lkKQorewor
ICAgIGZsb2F0IGFuZ2xlID0gMS4wOworICAgIFMobWF0MigxLjAsIGFuZ2xlLCAxLjAsIDEuMCkp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsK
K2RlYnVnKCJUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSdodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3Avc3dpZnRzaGFkZXIvaXNzdWVzL2RldGFpbD9pZD01Nic+U3dpZnRz
aGFkZXIgYnVnIDU2PC9hPi4iKTsKK2RlYnVnKCIiKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlcicsCisgIGZTaGFkZXJTdWNjZXNz
OiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIkNvbnN0cnVjdCBhIHN0
cnVjdCB3aXRoIGEgc2luZ2xlIG1hdHJpeCBtZW1iZXIiCit9CitdKTsKKworPC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy90ZW1wLWV4cHJlc3Npb25z
LXNob3VsZC1ub3QtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy90ZW1wLWV4cHJlc3Npb25zLXNob3Vs
ZC1ub3QtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjhkYjFkYWFkNTU2YzJlMmM0NDI2OGNmZDcz
ZjhkOWM5MDhkZjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3RlbXAtZXhwcmVzc2lv
bnMtc2hvdWxkLW5vdC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Ecml2ZXIgQnVnIC0gdGVt
cCBleHBlcnNzaW9ucyBzaG91bGQgbm90IGNyYXNoPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+
IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
Cit2b2lkIG1haW4oKXsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDEpOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVW5pZm9ybVRlc3QiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgdV91bmlm
b3JtOwordm9pZCBtYWluKCkKK3sKKyAgdmVjNCB0ZW1wID0gdmVjNCgwLCAwLCAwLCAwKTsKKyQo
Y29kZSkKKyAgZ2xfRnJhZ0NvbG9yID0gdGVtcDsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoKTsKKwordmFyIGZVbmlmb3JtVGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQo
ImZzaGFkZXJVbmlmb3JtVGVzdCIpOworCit2YXIgdGVzdHMgPSBbCitdOwordmFyIGNvdW50cyA9
IFsKKyAgeyBjb3VudDoxMDAsCisgICAgbXVzdFBhc3M6IHRydWUsCisgIH0sCisgIHsgY291bnQ6
IDEwMDAsCisgICAgbXVzdFBhc3M6IGZhbHNlLAorICB9LAorICB7IGNvdW50OiAxMDAwMCwKKyAg
ICBtdXN0UGFzczogZmFsc2UsCisgIH0sCitdOwordmFyIG9wZXJhdG9ycyA9IFsiKyIsICItIiwg
Ii8iLCAiKiJdOworY291bnRzLmZvckVhY2goZnVuY3Rpb24oaW5mbykgeworICB2YXIgZ2VuZXJh
dGVDb2RlID0gZnVuY3Rpb24obnVtVmFycykgeworICAgIHZhciBjb2RlcyA9IFtdOworICAgIHZh
ciBjb3VudCA9IDA7CisgICAgdmFyIHN0ZXAgPSAxMDsKKyAgICBmb3IgKHZhciB1dSA9IDA7IHV1
IDwgbnVtVmFyczsgdXUgKz0gc3RlcCkgeworICAgICAgdmFyIHN1YkNvZGVzID0gWyIiXTsKKyAg
ICAgIGZvciAodmFyIHZ2ID0gMDsgdnYgPCBzdGVwOyArK3Z2KSB7CisgICAgICAgIHN1YkNvZGVz
LnB1c2gob3BlcmF0b3JzWyhjb3VudCsrKSAlIG9wZXJhdG9ycy5sZW5ndGhdKTsKKyAgICAgIH0K
KyAgICAgIHN1YkNvZGVzLnB1c2goIiIpOworICAgICAgY29kZXMucHVzaCgiICB0ZW1wICs9ICIg
KyBzdWJDb2Rlcy5qb2luKCJcbiAgICAgIHVfdW5pZm9ybSAiKSArICI7Iik7CisgICAgfQorICAg
IHJldHVybiB7CisgICAgICBjb2RlOiBjb2Rlcy5qb2luKCJcbiIpLAorICAgIH07CisgIH07CisK
KyAgdmFyIHN1YnMgPSBnZW5lcmF0ZUNvZGUoaW5mby5jb3VudCk7CisgIHRlc3RzLnB1c2goewor
ICAgIHZTaGFkZXJJZDogInZzaGFkZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
IGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKGZVbmlmb3JtVGVzdFNvdXJjZSwgc3Vi
cyksCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
ICAgaWdub3JlUmVzdWx0czogIWluZm8ubXVzdFBhc3MsCisgICAgcGFzc01zZzogInNoYWRlciB3
aXRoIHVuaWZvcm0gd2l0aCAiICsgaW5mby5jb3VudCArICIgb3BlcmF0b3JzIGluIHRlbXAgZXhw
cmVzc2lvbnMgaW4gbXVsdGlwbGUgbGluZXMiLAorICB9KTsKKyAgc3Vicy5jb2RlID0gc3Vicy5j
b2RlLnJlcGxhY2UoL1xuICsvZywgIiAiKQorICB0ZXN0cy5wdXNoKHsKKyAgICB2U2hhZGVySWQ6
ICJ2c2hhZGVyIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVyU291cmNl
OiB3dHUucmVwbGFjZVBhcmFtcyhmVW5pZm9ybVRlc3RTb3VyY2UsIHN1YnMpLAorICAgIGZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIGlnbm9yZVJlc3Vs
dHM6ICFpbmZvLm11c3RQYXNzLAorICAgIHBhc3NNc2c6ICJzaGFkZXIgd2l0aCB1bmlmb3JtIHdp
dGggIiArIGluZm8uY291bnQgKyAiIG9wZXJhdG9ycyBpbiB0ZW1wIGV4cHJlc3Npb25zIGluIG9u
ZSBsaW5lIiwKKyAgfSk7Cit9KTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0
cyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdz
L3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWZsb2F0LWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3VuYXJ5LW1p
bnVzLW9wZXJhdG9yLWZsb2F0LWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZjcyMzE0NDQxYzA5ZmNl
MTQ2MmUwMDI4YTIwNjMwYmU5NTcyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvdW5h
cnktbWludXMtb3BlcmF0b3ItZmxvYXQtYnVnLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCB1bmFy
eSBtaW51cyBvcGVyYXRvciB3aXRoIGZsb2F0IGJ1ZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4gKCkgeworICAg
IGZsb2F0IGYgPSAtMS4wOworICAgIC8vIGF0YW4odGFuKDAuNSksIC1mKSBpcyBpbiByYW5nZSBb
MS41NzA3LCAxLjU3MDgpIG9uIE1hYyBPU1ggMTAuMTEgd2l0aCBJbnRlbCBHUFUuCisgICAgLy8g
QnV0IGl0IHNob3VsZCBiZSAwLjUuCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhdGFuKHRhbigw
LjUpLCAtZiksIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgZm9yIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIHdpdGgg
ZmxvYXQgYnVnIG9uIE1hY09TWCAxMC4xMSB3aXRoIEludGVsIEdQVSIpOworZGVidWcoIlRoaXMg
aXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTMwODM2Nic+Q2hyb21pdW0gSXNzdWUgMzA4
MzY2PC9hPiIpOworZGVidWcoIiIpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVy
VGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmc2hhZGVyJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRy
dWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiRXZhbHVhdGUgdW5hcnkgbWlu
dXMgb3BlcmF0b3IgYW5kIGF0YW4oeCwgeSkiLAorICByZW5kZXJUb2xlcmFuY2U6IDMsCisgIHJl
bmRlckNvbG9yOiBbMTI3LCAwLCAwLCAyNTVdCit9CitdKTsKKworPC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy91bmRlZmluZWQtaW5kZXgtc2hvdWxk
LW5vdC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3VuZGVmaW5lZC1pbmRleC1zaG91bGQtbm90LWNy
YXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5N2M5ODdmODg0MmI0ZGZjN2VjMTJkNjAwNjNkMmY2NDhl
M2VmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy91bmRlZmluZWQtaW5kZXgtc2hvdWxk
LW5vdC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkJ1ZyAtIGluZGV4aW5nIHdpdGggJ2ludCgp
JyBzaG91bGQgbm90IGNyYXNoPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+IDwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit2b2lkIG1haW4o
KXsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJUZXN0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSB2ZWM0IHVuaWZvcm1WZWM7Cit1bmlm
b3JtIG1hdDQgdW5pZm9ybU1hdDsKK3VuaWZvcm0gZmxvYXQgdW5pZm9ybUFycmF5WzRdOwordm9p
ZCBtYWluKCkKK3sKKyAgdmVjNCB0ZW1wVmVjID0gdmVjNCgwLjApOworICBtYXQ0IHRlbXBNYXQg
PSBtYXQ0KDAuMCk7CisgIGZsb2F0IHRlbXBBcnJheVs0XTsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgkKGluZGV4ZWQpW2ludCgpXSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBmVGVzdFNvdXJjZSA9IHd0dS5n
ZXRTY3JpcHQoImZzaGFkZXJUZXN0Iik7CisKK3ZhciB0ZXN0cyA9IFtdOworCit2YXIgaW5kZXhl
ZFZhbHVlcyA9IFsndGVtcFZlYycsICd0ZW1wTWF0WzBdJywgJ3RlbXBBcnJheScsICd1bmlmb3Jt
VmVjJywgJ3VuaWZvcm1NYXRbMF0nLCAndW5pZm9ybUFycmF5J107CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgaW5kZXhlZFZhbHVlcy5sZW5ndGg7ICsraSkgeworICB2YXIgc3VicyA9IHtpbmRleGVk
OiBpbmRleGVkVmFsdWVzW2ldfTsKKyAgdGVzdHMucHVzaCh7CisgICAgdlNoYWRlcklkOiAidnNo
YWRlciIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlclNvdXJjZTogd3R1
LnJlcGxhY2VQYXJhbXMoZlRlc3RTb3VyY2UsIHN1YnMpLAorICAgIGZTaGFkZXJTdWNjZXNzOiBm
YWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogInNoYWRlciB3aXRo
IGludmFsaWQgaW5kZXggZXhwcmVzc2lvbiBpbnQoKSBzaG91bGQgbm90IGNvbXBpbGUiLAorICB9
KTsKK30KK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3VuaWZvcm1zLXNob3Vs
ZC1ub3QtbG9zZS12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy91bmlmb3Jtcy1zaG91bGQtbm90LWxv
c2UtdmFsdWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM5OWYwZjg3ZjI4Zjk4M2ZiYmRiZWE5MzE0Mjky
MmQ1YmIxZDVhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVncy91bmlmb3Jtcy1zaG91bGQt
bm90LWxvc2UtdmFsdWVzLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RHJpdmVyIEJ1ZyAtIFVuaWZvcm1z
IHNob3VsZCBubyBsb3NlIHZhbHVlczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit1bmlmb3JtIGZs
b2F0IGssdTsKK3VuaWZvcm0gbWF0NCBsOworYXR0cmlidXRlIHZlYzMgYTsKK3ZvaWQgbWFpbigp
eworICBnbF9Qb3NpdGlvbj1sKnZlYzQoYSwxLit1K2spOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCB3LHgseSx6Owordm9pZCBtYWluKCkgeworIGdsX0Zy
YWdDb2xvcj12ZWM0KDEuLXkseSx3K3greiwxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKKy8vIENlcnRhaW4gZHJpdmVycyBmYWlsIHRoaXMgdGVzdC4gU3BlY2lmaWNh
bGx5IE1hYyBOVmlkaWEgR1QgMzMwIG9uIE9TWCAxMC44LjIKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1
ZygiIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitmdW5jdGlvbiB0ZXN0KCkgeworICB2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKKyAgaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICByZXR1cm47CisgIH0K
KworICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJhIl0sIHVuZGVmaW5lZCwgdHJ1ZSk7
CisKKyAgdmFyIHNldFVuaWZvcm1mID0gZnVuY3Rpb24obmFtZSwgdmFsKSB7CisgICAgdmFyIGxv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICB2YXIgZnVuYyA9
ICd1bmlmb3JtJyArIHZhbC5sZW5ndGggKyAnZnYnOworICAgIGdsW2Z1bmNdKGxvYywgdmFsKTsK
KyAgfTsKKworICB2YXIgc2V0VW5pZm9ybU1hdCA9IGZ1bmN0aW9uKG5hbWUsIHZhbCkgeworICAg
IHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgdmFy
IGZ1bmMgPSAndW5pZm9ybU1hdHJpeCcgKyBNYXRoLnNxcnQodmFsLmxlbmd0aCkgKyAnZnYnOwor
ICAgIGdsW2Z1bmNdKGxvYywgZmFsc2UsIHZhbCk7CisgIH07CisKKyAgc2V0VW5pZm9ybU1hdCgn
bCcsIFsxLCAwICwwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxXSk7Cisg
IGdsLnZpZXdwb3J0KDAsIDAsIDI1NiwgMjU2KTsKKyAgc2V0VW5pZm9ybWYoJ3knLCBbMF0pOwor
ICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgZ2wudmlld3BvcnQoMjU2LCAwLCAyNTYsIDI1Nik7
CisgIHNldFVuaWZvcm1mKCd5JywgWzFdKTsKKyAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgIHd0
dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDI1NiwgMjU2LCBbMjU1LCAwLCAwLCAyNTVdKTsK
KyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMjU2LCAwLCAyNTYsIDI1NiwgWzAsIDI1NSwgMCwg
MjU1XSk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBz
aG91bGQgYmUgbm8gZXJyb3JzIik7Cit9Cit0ZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvYnVn
cy92YXJ5aW5nLWFycmF5cy1zaG91bGQtbm90LWJlLXJldmVyc2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
dmFyeWluZy1hcnJheXMtc2hvdWxkLW5vdC1iZS1yZXZlcnNlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
Y2RkOWZlMDkwNzI2NDBhNTc0ODdjOTMwYzQyMDk0MzBlODAyM2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2J1Z3MvdmFyeWluZy1hcnJheXMtc2hvdWxkLW5vdC1iZS1yZXZlcnNlZC5odG1sCkBA
IC0wLDAgKzEsODIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5WYXJ5aW5nIGFycmF5cyBzaG91bGQgbm90IGJlIHJldmVyc2VkPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI1MTIi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hh
ZGVyL3gtdmVydGV4Ij4KK3ZhcnlpbmcgZmxvYXQgY29sb3JzWzNdOwordW5pZm9ybSB2ZWMzIHRl
c3REYXRhOworYXR0cmlidXRlIHZlYzMgcG9zaXRpb247Cit2b2lkIG1haW4oKXsKKyAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAxLjApOworICBjb2xvcnNbMF0gPSB0ZXN0RGF0YS54Owor
ICBjb2xvcnNbMV0gPSB0ZXN0RGF0YS55OworICBjb2xvcnNbMl0gPSB0ZXN0RGF0YS56OworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyBmbG9hdCBjb2xvcnNbM107Cit2
b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3JzWzBdLCBjb2xvcnNbMV0s
IGNvbG9yc1syXSwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJWYXJ5aW5nIGFycmF5cyBzaG91bGQgbm90IGJlIHJldmVyc2VkLiIpOwor
ZGVidWcoIlRoaXMgaXNzdWUgaGFzIGJlZW4gc2VlbiBpbiBDaHJvbWUgb24gTmV4dXMgNyAyMDEz
IChBZHJlbm8gMzIwKSBhbmQgTW90byBHMyAoQWRyZW5vIDMwNikuIik7CitkZWJ1ZygiIik7Citk
ZWJ1ZygiSWYgdGhpbmdzIGFyZSB3b3JraW5nIGNvcnJlY3RseSwgdGhlIHZlcnRpY2FsIHN0cmlw
ZXMgc2hvdWxkIGJlOiByZWQsIGdyZWVuLCBibHVlLCBsaWdodCBibHVlLCBvcmFuZ2UiKTsKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJJZiB0aGV5IGFyZSBub3QsIHRoZSByZWQgYW5kIGJsdWUgY2hhbm5l
bHMgd2lsbCBhcHBlYXIgdG8gYmUgc3dhcHBlZCBhbmQgeW91IHdpbGwgc2VlOiBibHVlLCBncmVl
biwgcmVkLCBvcmFuZ2UsIGxpZ2h0IGJsdWUiKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZh
cyIpOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlz
dCIpOworICAgIHJldHVybjsKKyAgfQorCisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBb
InBvc2l0aW9uIl0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgJ3Rlc3REYXRhJyk7CisKKyAgdmFyIHRyaXBsZXMgPSBbCisgICAg
WzI1NSwgMCwgMF0sCisgICAgWzAsIDI1NSwgMF0sCisgICAgWzAsIDAsIDI1NV0sCisgICAgWzAs
IDEyOCwgMjU1XSwKKyAgICBbMjU1LCAxMjgsIDBdCisgIF07CisKKyAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0cmlwbGVzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHRyaXBsZSA9IHRyaXBsZXNbaV07
CisgICAgdmFyIHggPSBpICogNjQ7CisgICAgZ2wudmlld3BvcnQoeCwgMCwgNjQsIDI1Nik7Cisg
ICAgZ2wudW5pZm9ybTNmKGxvYywgdHJpcGxlWzBdIC8gMjU1LCB0cmlwbGVbMV0gLyAyNTUsIHRy
aXBsZVsyXSAvIDI1NSk7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgeCwgMCwgNjQsIDI1NiwgW3RyaXBsZVswXSwgdHJpcGxlWzFdLCB0cmlw
bGVbMl0sIDI1NV0pOworICB9CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9Cit0ZXN0KCk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvYnVncy92ZWN0b3ItbWF0cml4LWNvbnN0cnVjdG9yLXNjYWxhcml6YXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvYnVncy92ZWN0b3ItbWF0cml4LWNvbnN0cnVjdG9yLXNjYWxhcml6YXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNmFkMzQ4M2MzMTljNzhiOTYyODYxMzNmOGU3ZTIwYWIxMjYxMTU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3ZlY3Rvci1tYXRyaXgtY29uc3RydWN0b3Itc2Nh
bGFyaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsMTgxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MjEgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzwhLS0K
KworT3JpZ2luYWwgU2hhZGVydG95OgoraHR0cHM6Ly93d3cuc2hhZGVydG95LmNvbS92aWV3L3R0
R3l6aAorCisgIGZsb2F0IGEgPSAwLjsgICAgICAgICAgIC8vIGJ1ZworICAjZGVmaW5lIEEgMC4g
ICAgICAgICAgICAvLyBvaworLy8jZGVmaW5lIEEgbWluKDAuLGlUaW1lKSAvLyBidWcKKworCisg
ICNkZWZpbmUgcihhKSAgICBtYXQyKCBjb3MoIGEgKyB2ZWM0KDAsLTEuNTcwOCwxLjU3MDgsMCkg
KSApICAgLy8gYnVnCisvLyNkZWZpbmUgcihhKSAgICBtYXQyKCBjb3MoYSksIC1zaW4oYSksIHNp
bihhKSwgY29zKGEpICkgICAgICAgLy8gbm8gYnVnCisvLyNkZWZpbmUgcihhKSAgICBjb3MoYSks
c2luKGEpKSAgICAgICAgICAgICAgIC8vIG5vIGJ1ZyAoIHZlYyBpbnN0ZWFkIG9mIG1hdCApCisv
LyNkZWZpbmUgcihhKSAgICBjb3MoYSt2ZWMyKDAsLTEuNTcwOCkpICAgICAgIC8vIG5vIGJ1ZyAo
IHZlYyBpbnN0ZWFkIG9mIG1hdCApCisKK3ZlYzIgYzsKKyNkZWZpbmUgZihVLGEpICAoIGMgPSAo
VSkgKiByKGEpICwgc2luKDEwLipjLngpICkKKwordm9pZCBtYWluSW1hZ2UoIG91dCB2ZWM0IE8s
IHZlYzIgVSApCit7CisgICAgVSAvPSBpUmVzb2x1dGlvbi54eTsKKworICAgIE8gPSBVLnkgPiAu
NQorICAgICAgICAgID8gdmVjNCggZihVLGEpICwgZihVKjQuLGEpICwgMCwwKSAgIC8vIHRvcAor
ICAgICAgICAgIDogdmVjNCggZihVLEEpICwgZihVKjQuLEEpICwgMCwwKTsgIC8vIGJvdHRvbQor
fQorLS0+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K2F0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIGFUZXhDb29yZDsKKwor
dmFyeWluZyB2ZWMyIHZUZXhDb29yZDsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAgZ2xfUG9zaXRp
b24gPSB2ZWM0KGFQb3NpdGlvbiwgMC4wLCAxLjApOworICB2VGV4Q29vcmQgPSBhVGV4Q29vcmQ7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3ZhcnlpbmcgdmVjMiB2VGV4Q29v
cmQ7CisKK2Zsb2F0IGEgPSAwLjsKKyNkZWZpbmUgQSAwLgorCisjZGVmaW5lIHIoYSkgICAgbWF0
MiggY29zKCBhICsgdmVjNCgwLC0xLjU3MDgsMS41NzA4LDApICkgKQordmVjMiBjOworI2RlZmlu
ZSBmKFUsYSkgICggYyA9IChVKSAqIHIoYSkgLCBzaW4oMTAuKmMueCkgKQorCit2b2lkIG1haW4o
KSB7CisgICAgdmVjMiBVID0gdlRleENvb3JkOworCisgICAgZ2xfRnJhZ0NvbG9yID0gVS55ID4g
LjUKKyAgICAgICAgPyB2ZWM0KCBmKFUsYSkgLCBmKFUqNC4sYSkgLCAwLDEuMCkgICAvLyB0b3AK
KyAgICAgICAgOiB2ZWM0KCBmKFUsQSkgLCBmKFUqNC4sQSkgLCAwLDEuMCk7ICAvLyBib3R0b20K
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJjb21waWxlVlNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPgordmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7CisKK3ZvaWQgbWFpbigpIHsK
KyAgICB2X3RleGNvb3JkID0gdmVjMigwLjAsIDAuMCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImNvbXBpbGVG
U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKy8vIEZyb20gaHR0cDovL2NyYnVn
LmNvbS8zOTg2OTQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQg
c190ZXh0dXJlOwordW5pZm9ybSB2ZWM0IGNvbG9yX3dlaWdodHM7Cit2YXJ5aW5nIHZlYzIgdl90
ZXhjb29yZDsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gY29sb3Jfd2VpZ2h0cyAq
IG1hdDQoCisgICAgdmVjNCh0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleGNvb3JkKS5yZ2IsIDEu
MCksCisgICAgdmVjNCh0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleGNvb3JkKS5yZ2IsIDEuMCks
CisgICAgdmVjNCh0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleGNvb3JkKS5yZ2IsIDEuMCksCisg
ICAgdmVjNCh0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleGNvb3JkKS5yZ2IsIDEuMCkpOworfQor
PC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZWJ1ZygiIik7CisKK2Rlc2NyaXB0aW9uKCJW
ZWN0b3IgYW5kIG1hdHJpeCBjb25zdHJ1Y3RvciBzY2FsYXJpemF0aW9uIHdvcmthcm91bmQgKFNI
X1NDQUxBUklaRV9WRUNfQU5EX01BVF9DT05TVFJVQ1RPUl9BUkdTKSBjYXVzZWQgYnVncyIpOwor
ZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2NyYnVnLmNvbS8xMTY1
NzUxIj5jcmJ1Zy5jb20vMTE2NTc1MTwvYT4nKTsKKworLy8gTm90ZTogRmlyZWZveCByZXBvcnRz
IHRoYXQgd2l0aG91dCB0aGlzIHdvcmthcm91bmQsIHRoZXJlIGFyZQorLy8gZmFpbHVyZXMgb24g
YXQgbGVhc3QgV2luZG93cyAvIEludGVsIEdQVSAvIE9wZW5HTCBvbjoKKy8vIGNvbmZvcm1hbmNl
L2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29uc3RydWN0LW1hdDIuaHRtbAorLy8gaHR0cHM6Ly9z
ZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9zb3VyY2UvZG9tL2NhbnZhcy9XZWJHTFNoYWRl
clZhbGlkYXRvci5jcHAjNjMKKworLy8gQ2hyb21pdW0gcmVwb3J0ZWQgdGhhdAorLy8gY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci1zdHJ1Y3Qtc2NvcGUuaHRtbCBmYWlsZWQgb24gbWFjT1Mg
YW5kCisvLyBvbiBMaW51eCBBTUQgd2l0aG91dCB0aGlzIHdvcmthcm91bmQgZW5hYmxlZDoKKy8v
IGh0dHA6Ly9jcmJ1Zy5jb20vYW5nbGVwcm9qZWN0LzcwMQorCitjb25zdCB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxl
Iik7Citjb25zdCBzeiA9IGNhbnZhcy53aWR0aCA9IGNhbnZhcy5oZWlnaHQgPSAyNTY7Citjb25z
dCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQpOworCitpZiAoIWds
KSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQiKTsKKyAg
ICBmaW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQg
Y3JlYXRpb24gc3VjY2VlZGVkIik7CisgICAgcnVuRHJhd1Rlc3QoKTsKKyAgICBydW5Db21waWxl
VGVzdCgpOworICAgIGZpbmlzaFRlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuRHJhd1Rlc3QoKSB7
CisgICAgZGVidWcoIkVuc3VyZSB0aGF0IHNoYWRlciB0cmFuc2xhdGlvbiBpc24ndCBicm9rZW4g
YnkgdGhlIHZlY3RvciBhbmQgbWF0cml4IGNvbnN0cnVjdG9yIHNjYWxhcml6YXRpb24gd29ya2Fy
b3VuZCIpOworICAgIGxldCBwb3NpdGlvbkxvY2F0aW9uID0gMDsKKyAgICBsZXQgdGV4Q29vcmRM
b2NhdGlvbiA9IDE7CisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIHBvc2l0aW9uTG9jYXRpb24s
IHRleENvb3JkTG9jYXRpb24pOworICAgIGxldCBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhUG9zaXRpb24iLCAiYVRleENvb3JkIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uXSwgdHJ1ZSk7
CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkVycm9yIGNvbXBpbGlu
ZyBzaGFkZXJzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2wudXNlUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICAvLyBCdWZmZXJzIHJldHVybmVkIGZyb20gc2V0dXBRdWFkIGFib3ZlLCBh
bmQgaWdub3JlZCwgYXJlIGFscmVhZHkgYm91bmQuCisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7
CisKKyAgICAvLyBUb3AgYW5kIGJvdHRvbSBoYWx2ZXMgc2hvdWxkIGJlIHJvdWdobHkgZXF1YWwu
IEdvIHRocm91Z2ggb25lCisgICAgLy8gaG9yaXpvbnRhbCBzY2FubGluZSBpbiB0aGUgbWlkZGxl
LgorICAgIGNvbnN0IGNvbXBhcmVIZWlnaHQgPSBzeiAvIDQ7CisgICAgbGV0IHBpeGVsVmFsdWUg
PSBuZXcgVWludDhBcnJheSg0KTsKKyAgICBsZXQgYWxsRXF1YWwgPSB0cnVlOworICAgIC8vIEVt
cGlyaWNhbGx5IGZvdW5kIHRoYXQgdG9sZXJhbmNlIGJldHdlZW4gdGhlIHRvcCBhbmQgYm90dG9t
CisgICAgLy8gbmVlZHMgdG8gYmUgdXAgdG8gcm91Z2hseSA4IG9uIHNvbWUgcGxhdGZvcm1zLgor
ICAgIGNvbnN0IHRvbGVyYW5jZSA9IDg7CisgICAgbGV0IHRlbXBCdWYgPSBuZXcgVWludDhBcnJh
eSg0KTsKKyAgICAvLyBTdGVwIG92ZXIgc29tZSBwaXhlbHMgdG8gc3BldyBzbGlnaHRseSBmZXdl
ciBjb21wYXJpc29uIG1lc3NhZ2VzLgorICAgIGZvciAobGV0IHggPSAwOyB4IDwgc3o7IHggKz0g
NCkgeworICAgICAgICBnbC5yZWFkUGl4ZWxzKHgsIGNvbXBhcmVIZWlnaHQsIDEsIDEsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVsVmFsdWUpOworICAgICAgICB3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCB4LCBzeiAtIGNvbXBhcmVIZWlnaHQsIDEsIDEsIHBpeGVsVmFsdWUsIHVuZGVm
aW5lZCwgdG9sZXJhbmNlLCB0ZW1wQnVmKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkNvbXBp
bGVUZXN0KCkgeworICAgIGRlYnVnKCJSdW5uaW5nIGNvbXBpbGF0aW9uIHRlc3QiKTsKKyAgICBs
ZXQgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsiY29tcGlsZVZTaGFkZXIiLCAiY29t
cGlsZUZTaGFkZXIiXSwgW10sIFtdLCB0cnVlKTsKKyAgICBpZiAocHJvZ3JhbSkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJTaGFkZXIgcHJldmlvdXNseSByZXF1aXJpbmcgU0hfU0NBTEFSSVpFX1ZF
Q19BTkRfTUFUX0NPTlNUUlVDVE9SX0FSR1MgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5Iik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hhZGVyIHByZXZpb3VzbHkgcmVxdWlyaW5n
IFNIX1NDQUxBUklaRV9WRUNfQU5EX01BVF9DT05TVFJVQ1RPUl9BUkdTIGZhaWxlZCB0byBjb21w
aWxlIik7CisgICAgfQorfQorCis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9idWdzL3ZlY3Rvci1zY2FsYXItYXJpdGhtZXRpYy1pbnNpZGUtbG9vcC1jb21w
bGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2J1Z3MvdmVjdG9yLXNjYWxhci1hcml0aG1ldGljLWluc2lkZS1sb29w
LWNvbXBsZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjEyNzdjMWJlMmM2OTJjMWFmMTFjNmNiOTc0NDVm
NGQ0NmIxMzRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3ZlY3Rvci1zY2FsYXItYXJp
dGhtZXRpYy1pbnNpZGUtbG9vcC1jb21wbGV4Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCB2ZWN0
b3Ivc2NhbGFyIGFyaXRobWV0aWMgaW5zaWRlIGEgZm9yIGxvb3AgKGNvbXBsZXggY2FzZXMpPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZlNoYWRlclZl
Y3RvckNvbXBvdW5kTXVsQW5kQWRkSW5TZXBhcmF0ZVN0YXRlbWVudHNJbnNpZGVGb3JMb29wIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2
b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisgIHsKKyAgICBmbG9hdCB4ID0gZ2xfRnJh
Z0Nvb3JkLng7CisgICAgZmxvYXQgeSA9ICh4ICo9IDIuMCk7CisgICAgZ2xfRnJhZ0NvbG9yID0g
Z2xfRnJhZ0NvbG9yICsgdmVjNCh5LCB5LCB5LCB5KTsKKyAgfQorICBpZiAoZ2xfRnJhZ0NvbG9y
LmcgPT0gZ2xfRnJhZ0NvbG9yLnIgJiYKKyAgICAgIGdsX0ZyYWdDb2xvci5iID09IGdsX0ZyYWdD
b2xvci5yICYmCisgICAgICBnbF9GcmFnQ29sb3IuYSA9PSBnbF9GcmFnQ29sb3IucikKKyAgewor
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgIH0KK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iZlNoYWRlclZlY3RvckNvbXBvdW5kTXVsQW5kQWRkSW5TZXBhcmF0ZVN0YXRl
bWVudHNJbnNpZGVGb3JMb29wMiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQorICB7
CisgICAgZmxvYXQgeCA9IGdsX0ZyYWdDb29yZC54OworICAgIGZsb2F0IHkgPSAoeCAqPSAyLjAp
OworICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciArIHZlYzQoeCwgeSwgeCwgeSk7Cisg
IH0KKyAgaWYgKGdsX0ZyYWdDb2xvci5nID09IGdsX0ZyYWdDb2xvci5yICYmCisgICAgICBnbF9G
cmFnQ29sb3IuYiA9PSBnbF9GcmFnQ29sb3IuciAmJgorICAgICAgZ2xfRnJhZ0NvbG9yLmEgPT0g
Z2xfRnJhZ0NvbG9yLnIpCisgIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEp
OworICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CisKKy8vIFNlZSBodHRwOi8vY3JidWcuY29tLzc3
MjY1MQorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hh
ZGVySWQ6ICdmU2hhZGVyVmVjdG9yQ29tcG91bmRNdWxBbmRBZGRJblNlcGFyYXRlU3RhdGVtZW50
c0luc2lkZUZvckxvb3AnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6
IHRydWUsCisgIHBhc3NNc2c6ICJBZGRpbmcgYSB2ZWN0b3IgdGhhdCdzIGp1c3QgNCBjb3BpZXMg
b2YgYSBzY2FsYXIgdG8gYW5vdGhlciB2ZWN0b3IgaW5zaWRlIGZvciBsb29wIHNob3VsZCB3b3Jr
LiIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZTaGFkZXJWZWN0b3JDb21wb3VuZE11bEFuZEFkZElu
U2VwYXJhdGVTdGF0ZW1lbnRzSW5zaWRlRm9yTG9vcDInLAorICBmU2hhZGVyU3VjY2VzczogdHJ1
ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJBZGRpbmcgYSB2ZWN0b3IgdGhh
dCdzIGp1c3QgNCBjb3BpZXMgb2YgYSBzY2FsYXIgc3RvcmVkIGluIHR3byBkaWZmZXJlbnQgdmFy
aWFibGVzIHRvIGFub3RoZXIgdmVjdG9yIGluc2lkZSBmb3IgbG9vcCBzaG91bGQgd29yay4iCit9
CitdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdz
L3ZlY3Rvci1zY2FsYXItYXJpdGhtZXRpYy1pbnNpZGUtbG9vcC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL3Zl
Y3Rvci1zY2FsYXItYXJpdGhtZXRpYy1pbnNpZGUtbG9vcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMmVh
MzgxMjljNzQ5NDA0NGViMDM0ZDM3MTEzMDg1Nzg0YzBjODUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL2J1Z3MvdmVjdG9yLXNjYWxhci1hcml0aG1ldGljLWluc2lkZS1sb29wLmh0bWwKQEAgLTAs
MCArMSw5OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+R0xTTCB2ZWN0b3Ivc2NhbGFyIGFyaXRobWV0aWMgaW5zaWRlIGEgZm9yIGxvb3A8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5j
ZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmU2hhZGVy
VmVjdG9yTXVsQW5kQWRkSW5zaWRlRm9yTG9vcCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
Cit2b2lkIG1haW4oKXsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjAp
OworICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKKyAgeworICAgIGdsX0ZyYWdDb2xvciAr
PSAoMi4wICogZ2xfRnJhZ0Nvb3JkLngpOworICB9CisgIGlmIChnbF9GcmFnQ29sb3IuZyA9PSBn
bF9GcmFnQ29sb3IuciAmJgorICAgICAgZ2xfRnJhZ0NvbG9yLmIgPT0gZ2xfRnJhZ0NvbG9yLnIg
JiYKKyAgICAgIGdsX0ZyYWdDb2xvci5hID09IGdsX0ZyYWdDb2xvci5yKQorICB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAgfQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmU2hhZGVyVmVjdG9yQ29tcG91bmRNdWxBbmRBZGRJbnNpZGVGb3JMb29wIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1h
aW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisgIHsKKyAgICBmbG9hdCB4ID0gZ2xfRnJhZ0Nvb3Jk
Lng7CisgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0NvbG9yICsgKHggKj0gMi4wKTsKKyAgfQor
ICBpZiAoZ2xfRnJhZ0NvbG9yLmcgPT0gZ2xfRnJhZ0NvbG9yLnIgJiYKKyAgICAgIGdsX0ZyYWdD
b2xvci5iID09IGdsX0ZyYWdDb2xvci5yICYmCisgICAgICBnbF9GcmFnQ29sb3IuYSA9PSBnbF9G
cmFnQ29sb3IucikKKyAgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7Cisg
IH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZlNoYWRlclZlY3RvckNvbXBvdW5kRGl2QW5k
QWRkSW5zaWRlRm9yTG9vcCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDAuMCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQorICB7Cisg
ICAgZmxvYXQgeCA9IGdsX0ZyYWdDb29yZC54OworICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdD
b2xvciArICh4IC89IDIuMCk7CisgIH0KKyAgaWYgKGdsX0ZyYWdDb2xvci5nID09IGdsX0ZyYWdD
b2xvci5yICYmCisgICAgICBnbF9GcmFnQ29sb3IuYiA9PSBnbF9GcmFnQ29sb3IuciAmJgorICAg
ICAgZ2xfRnJhZ0NvbG9yLmEgPT0gZ2xfRnJhZ0NvbG9yLnIpCisgIHsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CisKKy8vIFNl
ZSBodHRwOi8vY3JidWcuY29tLzc3MjY1MQorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVu
ZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmU2hhZGVyVmVjdG9yTXVsQW5kQWRkSW5zaWRl
Rm9yTG9vcCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwK
KyAgcGFzc01zZzogIkFkZGluZyBhIHNjYWxhciB0byBhIHZlY3RvciBpbnNpZGUgZm9yIGxvb3Ag
c2hvdWxkIHdvcmsuIgorfSwKK3sKKyAgZlNoYWRlcklkOiAnZlNoYWRlclZlY3RvckNvbXBvdW5k
TXVsQW5kQWRkSW5zaWRlRm9yTG9vcCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5r
U3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIkFkZGluZyBhIHNjYWxhciAodGFyZ2V0IG9mIGEg
Y29tcG91bmQgYXNzaWdubWVudC9tdWx0aXBsaWNhdGlvbiBvcGVyYXRpb24pIHRvIGEgdmVjdG9y
IGluc2lkZSBmb3IgbG9vcCBzaG91bGQgd29yay4iCit9LAoreworICBmU2hhZGVySWQ6ICdmU2hh
ZGVyVmVjdG9yQ29tcG91bmREaXZBbmRBZGRJbnNpZGVGb3JMb29wJywKKyAgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiQWRkaW5nIGEgc2Nh
bGFyICh0YXJnZXQgb2YgYSBjb21wb3VuZCBhc3NpZ25tZW50L2RpdmlzaW9uIG9wZXJhdGlvbikg
dG8gYSB2ZWN0b3IgaW5zaWRlIGZvciBsb29wIHNob3VsZCB3b3JrLiIKK30KK10pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNs
LWNvbnN0cnVjdC1idmVjMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3Qt
YnZlYzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWU3MjE2MGQxYjM5YmQxNTNkZDdmN2I5Njk5NDZmMjc5
MTBmYjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1
Y3QtYnZlYzIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3IuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgdGFyZ2V0VHlwZSA9
ICJidmVjMiI7CitkZXNjcmlwdGlvbigiVGVzdCAiICsgdGFyZ2V0VHlwZSArICIgY29uc3RydWN0
b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0U2V0ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNH
ZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFyZ2V0VHlwZSk7CisKKy8vIEdlbmVyYXRlIHRl
c3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0Q29u
c3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0U2V0KTsKKworLy8gUnVuIHRoZSB0ZXN0cwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RDYXNlcyk7CisKK2RlYnVnKCIiKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC1idmVjMy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtYnZlYzMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41N2Y1MWQzOTAyODQ2OTk4ZGIxMzAxZWI0NmI2ODYzZWI1ZDg1YmY1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtYnZlYzMuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNs
LWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25z
dHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgdGFyZ2V0VHlwZSA9ICJidmVjMyI7CitkZXNjcmlw
dGlvbigiVGVzdCAiICsgdGFyZ2V0VHlwZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMuIik7
CisKK3ZhciB0ZXN0U2V0ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVmYXVs
dFRlc3RTZXQodGFyZ2V0VHlwZSk7CisKKy8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENhc2Vz
ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0YXJn
ZXRUeXBlLCB0ZXN0U2V0KTsKKworLy8gUnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blRlc3RzKHRlc3RDYXNlcyk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC1idmVjNC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1
Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtYnZlYzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODczYzAxNmQxZWE3
YWMyZDQ2YzkyNmU0ZjFhNTRkMmY2MzYzYjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25z
dHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtYnZlYzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1nZW5l
cmF0b3IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7Cit2YXIgdGFyZ2V0VHlwZSA9ICJidmVjNCI7CitkZXNjcmlwdGlvbigiVGVzdCAiICsgdGFy
Z2V0VHlwZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0U2V0ID0g
R0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFyZ2V0VHlw
ZSk7CisKKy8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0cnVjdG9y
VGVzdHNHZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0U2V0KTsK
KworLy8gUnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RD
YXNlcyk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9n
bHNsLWNvbnN0cnVjdC1pdmVjMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1
Y3QtaXZlYzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTI0ZmUzYWJjNjU3MDZhNTg1ODFkMDM4NjMxMDJh
NDk5YjdhNzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25z
dHJ1Y3QtaXZlYzIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3IuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgdGFyZ2V0VHlw
ZSA9ICJpdmVjMiI7CitkZXNjcmlwdGlvbigiVGVzdCAiICsgdGFyZ2V0VHlwZSArICIgY29uc3Ry
dWN0b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0U2V0ID0gR0xTTENvbnN0cnVjdG9yVGVz
dHNHZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFyZ2V0VHlwZSk7CisKKy8vIEdlbmVyYXRl
IHRlc3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0
Q29uc3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0U2V0KTsKKworLy8gUnVuIHRoZSB0ZXN0
cworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RDYXNlcyk7CisKK2RlYnVnKCIi
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC1pdmVj
My5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtaXZlYzMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OTRmNjcxM2YzNTZmYWVhMjYzNWM1YmZjMGJhMWQ4N2M5MTQxNmVkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtaXZlYzMuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1j
b25zdHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgdGFyZ2V0VHlwZSA9ICJpdmVjMyI7CitkZXNj
cmlwdGlvbigiVGVzdCAiICsgdGFyZ2V0VHlwZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMu
Iik7CisKK3ZhciB0ZXN0U2V0ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVm
YXVsdFRlc3RTZXQodGFyZ2V0VHlwZSk7CisKKy8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENh
c2VzID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0
YXJnZXRUeXBlLCB0ZXN0U2V0KTsKKworLy8gUnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNl
VGVzdGVyLnJ1blRlc3RzKHRlc3RDYXNlcyk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC1pdmVjNC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25z
dHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtaXZlYzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmM1OTc2MWUx
ZDI5ZDBiNTFkNDI2Y2VhNjRlMTNhNDc2YzEyZGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9j
b25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtaXZlYzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1n
ZW5lcmF0b3IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7Cit2YXIgdGFyZ2V0VHlwZSA9ICJpdmVjNCI7CitkZXNjcmlwdGlvbigiVGVzdCAiICsg
dGFyZ2V0VHlwZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0U2V0
ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFyZ2V0
VHlwZSk7CisKKy8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0cnVj
dG9yVGVzdHNHZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0U2V0
KTsKKworLy8gUnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRl
c3RDYXNlcyk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9y
cy9nbHNsLWNvbnN0cnVjdC1tYXQyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0
cnVjdC1tYXQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE0YWZiODE3ZDc5NjcyMzg3YWM0ZGRmYjI5NjY2
MGZiNGNjMGU5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29u
c3RydWN0LW1hdDIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3IuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgdGFyZ2V0VHlw
ZSA9ICJtYXQyIjsKK2Rlc2NyaXB0aW9uKCJUZXN0ICIgKyB0YXJnZXRUeXBlICsgIiBjb25zdHJ1
Y3RvciBleHByZXNzaW9ucy4iKTsKKwordmFyIHRlc3RTZXQgPSBHTFNMQ29uc3RydWN0b3JUZXN0
c0dlbmVyYXRvci5nZXREZWZhdWx0VGVzdFNldCh0YXJnZXRUeXBlKTsKKworLy8gR2VuZXJhdGUg
dGVzdHMKK3ZhciB0ZXN0Q2FzZXMgPSBHTFNMQ29uc3RydWN0b3JUZXN0c0dlbmVyYXRvci5nZXRD
b25zdHJ1Y3RvclRlc3RzKHRhcmdldFR5cGUsIHRlc3RTZXQpOworCisvLyBSdW4gdGhlIHRlc3Rz
CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHModGVzdENhc2VzKTsKKworZGVidWcoIiIp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29uc3RydWN0LW1hdDMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29uc3RydWN0LW1hdDMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNGEyZTk4MTVkYTM5NmY0Zjk1ZTVlNTE4YWQ1NGEyNGMzMjJkYmJmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtbWF0My5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wt
ZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5j
ZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbnN0
cnVjdG9yLXRlc3RzLWdlbmVyYXRvci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB0YXJnZXRUeXBlID0gIm1hdDMiOworZGVzY3JpcHRp
b24oIlRlc3QgIiArIHRhcmdldFR5cGUgKyAiIGNvbnN0cnVjdG9yIGV4cHJlc3Npb25zLiIpOwor
Cit2YXIgdGVzdFNldCA9IEdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdldERlZmF1bHRU
ZXN0U2V0KHRhcmdldFR5cGUpOworCisvLyBHZW5lcmF0ZSB0ZXN0cwordmFyIHRlc3RDYXNlcyA9
IEdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdldENvbnN0cnVjdG9yVGVzdHModGFyZ2V0
VHlwZSwgdGVzdFNldCk7CisKKy8vIFJ1biB0aGUgdGVzdHMKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0cyh0ZXN0Q2FzZXMpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtbWF0NC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3Rv
cnMvZ2xzbC1jb25zdHJ1Y3QtbWF0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZmQ5MmIyYWI2MmEyZWI2
ZTRiYjQ0MjFhZmE2YzQ4MDFkMzFlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVj
dG9ycy9nbHNsLWNvbnN0cnVjdC1tYXQ0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uc3RydWN0b3ItdGVzdHMtZ2VuZXJhdG9y
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
dmFyIHRhcmdldFR5cGUgPSAibWF0NCI7CitkZXNjcmlwdGlvbigiVGVzdCAiICsgdGFyZ2V0VHlw
ZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0U2V0ID0gR0xTTENv
bnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFyZ2V0VHlwZSk7CisK
Ky8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0cnVjdG9yVGVzdHNH
ZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0U2V0KTsKKworLy8g
UnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RDYXNlcyk7
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNv
bnN0cnVjdC12ZWMtbWF0LWNvcm5lci1jYXNlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xz
bC1jb25zdHJ1Y3QtdmVjLW1hdC1jb3JuZXItY2FzZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmM4ZjMw
NmFlN2UxNjNlYzYwMmUxYTBlZDE3MTgyYzNlYjMzZDMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtdmVjLW1hdC1jb3JuZXItY2FzZXMuaHRtbApA
QCAtMCwwICsxLDE5NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCBpZD0i
dnNWZWM0TWF0MkFkZCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgordm9p
ZCBtYWluKCkKK3sKKyAgICBtYXQyIG0xID0gbWF0MigxLjAsIDIuMCwgMy4wLCA0LjApOworICAg
IG1hdDIgbTIgPSBtYXQyKDApOworICAgIHZlYzQgdiA9IHZlYzQobTEgKyBtMik7CisgICAgZ2xf
UG9zaXRpb24gPSB2OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc1ZlYzRNYXQzQWRkIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZvaWQgbWFpbigpCit7CisgICAgbWF0MyBtMSA9IG1hdDMoMS4wLCAyLjAsIDMuMCwg
NC4wLCA1LjAsIDYuMCwgNy4wLCA4LjAsIDkuMCk7CisgICAgbWF0MyBtMiA9IG1hdDMoMCk7Cisg
ICAgdmVjNCB2ID0gdmVjNChtMSArIG0yKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2OworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzTWF0MlZlYzRTdWIiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCB2MSA9IHZlYzQoMS4w
LCAyLjAsIDMuMCwgNC4wKTsKKyAgICB2ZWM0IHYyID0gdmVjNCgwKTsKKyAgICBtYXQyIG0gPSBt
YXQyKHYxIC0gdjIpOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIG0pOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc01hdDNWZWM0QWRkU3ViIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7
CisgICAgdmVjNCB2MSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKyAgICB2ZWM0IHYyID0g
dmVjNCgwKTsKKyAgICBtYXQzIG0gPSBtYXQzKHYxICsgdjIsIDUuMCwgdjEgLSB2Mik7CisgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChtKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c1Zl
YzRNYXQyRnVuYyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorbWF0MiBm
KG1hdDIgYSkKK3sKKyAgICByZXR1cm4gYTsKK30KK3ZvaWQgbWFpbigpCit7CisgICAgbWF0MiBt
ID0gbWF0MigxLjAsIDIuMCwgMy4wLCA0LjApOworICAgIHZlYzQgdiA9IHZlYzQoZihtKSk7Cisg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwgdik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzVmVjNE1hdDNGdW5jIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK21hdDMgZihtYXQzIGEpCit7CisgICAgcmV0dXJuIGE7
Cit9Cit2b2lkIG1haW4oKQoreworICAgIG1hdDMgbSA9IG1hdDMoMCk7CisgICAgdmVjNCB2ID0g
dmVjNChmKG0pKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2OworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9InZzTWF0MlZlYzRGdW5jIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+Cit2ZWM0IGYodmVjNCBhKQoreworICAgIHJldHVybiBhOworfQordm9pZCBtYWluKCkKK3sK
KyAgICB2ZWM0IHYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgbWF0MiBtID0gbWF0
MihmKHYpKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCBtKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iZnNNYXQzVmVjNEZ1bmMiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmVjNCBmKHZlYzQgYSkKK3sKKyAg
ICByZXR1cm4gYTsKK30KK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCB2MSA9IHZlYzQoMS4wLCAy
LjAsIDMuMCwgNC4wKTsKKyAgICB2ZWM0IHYyID0gdmVjNCgwKTsKKyAgICBtYXQzIG0gPSBtYXQz
KGYodjEpLCA1LjAsIGYodjIpKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG0pOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzTWF0NFZlY011bHRpcGxlIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2ZWM0IGYodmVjNCBhKQoreworICAgIHJldHVybiBhOwor
fQordm9pZCBtYWluKCkKK3sKKyAgICB2ZWMyIHYyID0gdmVjMigxLjAsIDIuMCk7CisgICAgdmVj
MyB2MyA9IHZlYzMoMS4wLCAyLjAsIDMuMCk7CisgICAgdmVjNCB2NCA9IHZlYzQoMS4wLCAyLjAs
IDMuMCwgNC4wKTsKKyAgICBtYXQ0IG0gPSBtYXQ0KDAuMCwgdjIsIDEuMCwgdjMgKyB2ZWMzKDEp
LCAyLjAsIHZlYzQoMCksIGYodjQpKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCBtKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNNYXQ0VmVjTXVsdGlwbGUiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmVj
NCBmKHZlYzQgYSkKK3sKKyAgICByZXR1cm4gYTsKK30KK3ZvaWQgbWFpbigpCit7CisgICAgdmVj
MiB2MiA9IHZlYzIoMS4wLCAyLjApOworICAgIHZlYzMgdjMgPSB2ZWMzKDEuMCwgMi4wLCAzLjAp
OworICAgIHZlYzQgdjQgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgbWF0NCBtID0g
bWF0NCgwLjAsIHYyLCAxLjAsIHYzICsgdmVjMygxKSwgMi4wLCB2ZWM0KDApLCBmKHY0KSk7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIHRlc3RzID0gW107CisK
K3Rlc3RzLnB1c2goeworICB2U2hhZGVyU291cmNlOiB3dHUuZ2V0U2NyaXB0KCJ2c1ZlYzRNYXQy
QWRkIiksCisgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBmU2hhZGVyU291cmNlOiB3dHUuZ2V0
U2NyaXB0KCJmc1ZlYzRNYXQzQWRkIiksCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5r
U3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogInZlYyhtYXQgKy8tIG1hdCkgd29ya3Mgb2siLAor
fSk7Cit0ZXN0cy5wdXNoKHsKKyAgdlNoYWRlclNvdXJjZTogd3R1LmdldFNjcmlwdCgidnNNYXQy
VmVjNFN1YiIpLAorICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRlclNvdXJjZTogd3R1
LmdldFNjcmlwdCgiZnNNYXQzVmVjNEFkZFN1YiIpLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJtYXQodmVjICsvLSB2ZWMpIHdvcmtz
IG9rIiwKK30pOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQo
InZzVmVjNE1hdDJGdW5jIiksCisgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBmU2hhZGVyU291
cmNlOiB3dHUuZ2V0U2NyaXB0KCJmc1ZlYzRNYXQzRnVuYyIpLAorICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJ2ZWMoZnVuYyhtYXQpKSB3
b3JrcyBvayIsCit9KTsKK3Rlc3RzLnB1c2goeworICB2U2hhZGVyU291cmNlOiB3dHUuZ2V0U2Ny
aXB0KCJ2c01hdDJWZWM0RnVuYyIpLAorICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRl
clNvdXJjZTogd3R1LmdldFNjcmlwdCgiZnNNYXQzVmVjNEZ1bmMiKSwKKyAgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAibWF0KGZ1bmModmVj
KSkgd29ya3Mgb2siLAorfSk7Cit0ZXN0cy5wdXNoKHsKKyAgdlNoYWRlclNvdXJjZTogd3R1Lmdl
dFNjcmlwdCgidnNNYXQ0VmVjTXVsdGlwbGUiKSwKKyAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZzTWF0NFZlY011bHRpcGxlIiksCisgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIm1h
dDQoZmxvYXQsIHZlYzIsIGZsb2F0LCB2ZWMzK3ZlYzMsIGZsb2F0LCB2ZWM0LCBmKHZlYzQpKSB3
b3JrcyBvayIsCit9KTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RzKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC12ZWMtbWF0
LWluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC12ZWMtbWF0LWlu
ZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE5ZmJlYmM1OTQ1YjUyOTEyNzZlNzRiOWE0Y2MzNGFkYWIw
YWZiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29uc3RydWN0
LXZlYy1tYXQtaW5kZXguaHRtbApAQCAtMCwwICsxLDU0IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKy8vIEEgbWF0cml4IGNvbnN0cnVjdG9yIHdpdGggdHdvIHdyaXRlcyBh
bmQgcmVhZHMgdG8gdGhlIHNhbWUgdmFyaWFibGUgaW5zaWRlIGl0IGluIGRpZmZlcmVudCBwYXJh
bWV0ZXJzIG11c3Qgc3VjY2VlZCAibWF0MihpbmRleCsrLCB2ZWM0KGluZGV4KyspKSIKKy8vIEVT
U0wgMS4wMCBzcGVjIHNlY3Rpb24gNS40IENvbnN0cnVjdG9yczogIkFyZ3VtZW50cyBhcmUgZXZh
bHVhdGVkIGZyb20gbGVmdCB0byByaWdodC4iCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2Jv
b2wgZXF1YWwobWF0MiBtMSwgbWF0MiBtMikKK3sKKyAgICBmbG9hdCBFUFNJTE9OID0gMC4wMDAw
MTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICBmb3IgKGludCBq
ID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgICAgaWYgKGFicyhtMVtpXVtqXSAtIG0yW2ld
W2pdKSA+IEVQU0lMT04pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQordm9pZCBtYWluKCkKK3sKKyAgICBpbnQgaSA9
IDA7CisgICAgbWF0MiBtID0gbWF0MihpKyssIHZlYzQoaSsrKSk7CisgICAgaWYgKGVxdWFsKG0s
IG1hdDIoMCwgMSwgMSwgMSkpKQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4w
LCAwLjAsIDEuMCk7CisgICAgZWxzZQorICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC12ZWMyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2NvbnN0cnVjdG9y
cy9nbHNsLWNvbnN0cnVjdC12ZWMyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZhMGQyYWY1MmNhYjY0MzFm
OTE4NTVmNzdhM2JmYjlmNjYxNTJmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0
b3JzL2dsc2wtY29uc3RydWN0LXZlYzIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25zdHJ1Y3Rvci10ZXN0cy1nZW5lcmF0b3Iu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2
YXIgdGFyZ2V0VHlwZSA9ICJ2ZWMyIjsKK2Rlc2NyaXB0aW9uKCJUZXN0ICIgKyB0YXJnZXRUeXBl
ICsgIiBjb25zdHJ1Y3RvciBleHByZXNzaW9ucy4iKTsKKwordmFyIHRlc3RTZXQgPSBHTFNMQ29u
c3RydWN0b3JUZXN0c0dlbmVyYXRvci5nZXREZWZhdWx0VGVzdFNldCh0YXJnZXRUeXBlKTsKKwor
Ly8gR2VuZXJhdGUgdGVzdHMKK3ZhciB0ZXN0Q2FzZXMgPSBHTFNMQ29uc3RydWN0b3JUZXN0c0dl
bmVyYXRvci5nZXRDb25zdHJ1Y3RvclRlc3RzKHRhcmdldFR5cGUsIHRlc3RTZXQpOworCisvLyBS
dW4gdGhlIHRlc3RzCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHModGVzdENhc2VzKTsK
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29u
c3RydWN0LXZlYzMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvY29uc3RydWN0b3JzL2dsc2wtY29uc3RydWN0LXZlYzMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNWUxYTdjZDRkZjgwMTRmNGEzYTg5ZGI2N2RjNGRiY2Y3OGI0Njg0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtdmVj
My5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9nbHNsLWNvbnN0cnVjdG9yLXRlc3RzLWdlbmVyYXRvci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB0YXJnZXRUeXBlID0gInZlYzMi
OworZGVzY3JpcHRpb24oIlRlc3QgIiArIHRhcmdldFR5cGUgKyAiIGNvbnN0cnVjdG9yIGV4cHJl
c3Npb25zLiIpOworCit2YXIgdGVzdFNldCA9IEdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9y
LmdldERlZmF1bHRUZXN0U2V0KHRhcmdldFR5cGUpOworCisvLyBHZW5lcmF0ZSB0ZXN0cwordmFy
IHRlc3RDYXNlcyA9IEdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdldENvbnN0cnVjdG9y
VGVzdHModGFyZ2V0VHlwZSwgdGVzdFNldCk7CisKKy8vIFJ1biB0aGUgdGVzdHMKK0dMU0xDb25m
b3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0Q2FzZXMpOworCitkZWJ1ZygiIik7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtdmVjNC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9jb25zdHJ1Y3RvcnMvZ2xzbC1jb25zdHJ1Y3QtdmVjNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NmZh
NDcwYTBiMjI0YTZlMzg0NjNlZjFhZTI1NDlhOWU2YWMzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL2NvbnN0cnVjdG9ycy9nbHNsLWNvbnN0cnVjdC12ZWM0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uc3RydWN0b3ItdGVz
dHMtZ2VuZXJhdG9yLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOwordmFyIHRhcmdldFR5cGUgPSAidmVjNCI7CitkZXNjcmlwdGlvbigiVGVzdCAi
ICsgdGFyZ2V0VHlwZSArICIgY29uc3RydWN0b3IgZXhwcmVzc2lvbnMuIik7CisKK3ZhciB0ZXN0
U2V0ID0gR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0RGVmYXVsdFRlc3RTZXQodGFy
Z2V0VHlwZSk7CisKKy8vIEdlbmVyYXRlIHRlc3RzCit2YXIgdGVzdENhc2VzID0gR0xTTENvbnN0
cnVjdG9yVGVzdHNHZW5lcmF0b3IuZ2V0Q29uc3RydWN0b3JUZXN0cyh0YXJnZXRUeXBlLCB0ZXN0
U2V0KTsKKworLy8gUnVuIHRoZSB0ZXN0cworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3Rz
KHRlc3RDYXNlcyk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLWFicy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1h
YnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lN2UzYjE5MjA3M2RkYTk3YjlhYWJlMjY3ZDhjYzcwMzIxNmFk
NjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1hYnMu
aHRtbApAQCAtMCwwICsxLDQ1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGFicyBmdW5jdGlvbiB0ZXN0PC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWdlbmVy
YXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitHTFNMR2VuZXJhdG9yLnJ1bkZlYXR1cmVUZXN0KHsKKyAgZmVhdHVyZTogImFicyIsCisg
IHRlc3RGdW5jOiAiJChmdW5jKSgkKGFyZzApKSIsCisgIGVtdUZ1bmM6IFsiZmxvYXQgJChmdW5j
KV9iYXNlKGZsb2F0IHZhbHVlKSB7IiwKKyAgICAgICAgICAgICIgIHJldHVybiB2YWx1ZSA+PSAw
LjAgPyB2YWx1ZSA6IC12YWx1ZTsiLAorICAgICAgICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBn
cmlkUmVzOiA0LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAi
ICAgICQoZnVuYykoJChpbnB1dCkueCAqIDIuMCAtIDEuMCksIiwKKyAgICAgIiAgICAwLjUsIiwK
KyAgICAgIiAgICAwLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICAiJChvdXRw
dXQpID0gdmVjNCgwLCAkKGZ1bmMpKCQoaW5wdXQpLnh5ICogMi4wIC0gdmVjMigxLCAxKSksIDEp
OyIsCisgICAgIiQob3V0cHV0KSA9IHZlYzQoJChmdW5jKSgkKGlucHV0KS54eXogKiAyLjAgLSB2
ZWMzKDEsIDEsIDEpKSwgMSk7IiwKKyAgICAiJChvdXRwdXQpID0gJChmdW5jKSgkKGlucHV0KSAq
IDIuMCAtIHZlYzQoMSwgMSwgMSwgMSkpOyIKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWFjb3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2ds
c2wtZnVuY3Rpb24tYWNvcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNmI5YWIzM2ZkMzZjYTNlZThjNTUw
M2U4ZDU5Y2IwODIxMzlhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNs
LWZ1bmN0aW9uLWFjb3MuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGFjb3MgZnVuY3Rpb24gdGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgcGlDb25zdGFudHMgPSBbCisgICJjb25zdCBmbG9h
dCBrUEkgICAgID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsiLAorICAiY29uc3QgZmxvYXQga0hh
bGZQSSA9IChrUEkgKiAwLjUpOyIsCisgICJjb25zdCBmbG9hdCBrMlBJICAgID0gKGtQSSAqIDIu
MCk7IgorXS5qb2luKCJcbiIpOworCit2YXIga1BJID0gTWF0aC5QSTsKK3ZhciBrSGFsZlBJID0g
TWF0aC5QSSAqIDAuNTsKK3ZhciBrMlBJID0gTWF0aC5QSSAqIDIuMDsKK3ZhciBhY29zID0gTWF0
aC5hY29zOyAgLy8gc2hvcnRoYW5kCisKK0dMU0xHZW5lcmF0b3IucnVuUmVmZXJlbmNlSW1hZ2VU
ZXN0KHsKKyAgZmVhdHVyZTogImFjb3MiLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1ZSIsCisgIHRl
c3RGdW5jOiAiJChmdW5jKSgkKHR5cGUpKSIsCisgIGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTog
MiwKKyAgZXh0cmE6IHBpQ29uc3RhbnRzLAorICB0ZXN0czogWworICAgIHsKKyAgICAgIHNvdXJj
ZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChp
bnB1dCkueCAqIDAuOCkgLyBrUEksIiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlu
cHV0KS55ICogMC44KSAvIGtQSSwiLAorICAgICAgICAgICAgICAgIiAgICAwLCIsCisgICAgICAg
ICAgICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgICBnZW5lcmF0b3I6IGZ1bmN0aW9u
KHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJuIFsgYWNvcyh4ICogMC44KSAvIGtQSSwKKyAg
ICAgICAgICAgICAgICAgYWNvcyh5ICogMC44KSAvIGtQSSwKKyAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgIHNv
dXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYyko
JChpbnB1dCkueHkgKiAwLjgpIC8ga1BJLCIsCisgICAgICAgICAgICAgICAiICAgIDAsIDEpOyJd
LmpvaW4oIlxuIiksCisgICAgICBnZW5lcmF0b3I6IGZ1bmN0aW9uKHgsIHksIHosIHcpIHsKKyAg
ICAgICAgcmV0dXJuIFsgYWNvcyh4ICogMC44KSAvIGtQSSwKKyAgICAgICAgICAgICAgICAgYWNv
cyh5ICogMC44KSAvIGtQSSwKKyAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
MSBdOworICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkg
PSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogMC44
KSAvIGtQSSwiLAorICAgICAgICAgICAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgICAg
Z2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3KSB7CisgICAgICAgIHJldHVybiBbIGFjb3Mo
eCAqIDAuOCkgLyBrUEksCisgICAgICAgICAgICAgICAgIGFjb3MoeSAqIDAuOCkgLyBrUEksCisg
ICAgICAgICAgICAgICAgIGFjb3MoeiAqIDAuOCkgLyBrUEksCisgICAgICAgICAgICAgICAgIDEg
XTsKKyAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0g
IiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSAqIDAuOCkgLyBrUEk7IiwK
KyAgICAgICAgICAgICAgXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4
LCB5LCB6LCB3KSB7CisgICAgICAgIHJldHVybiBbIGFjb3MoeCAqIDAuOCkgLyBrUEksCisgICAg
ICAgICAgICAgICAgIGFjb3MoeSAqIDAuOCkgLyBrUEksCisgICAgICAgICAgICAgICAgIGFjb3Mo
eiAqIDAuOCkgLyBrUEksCisgICAgICAgICAgICAgICAgIGFjb3ModyAqIDAuOCkgLyBrUEkgXTsK
KyAgICAgIH0sCisgICAgfSwKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0
aW9ucy9nbHNsLWZ1bmN0aW9uLWFzaW4uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rp
b24tYXNpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MWM0ZjdkODFjZTU1ODVmNWM2N2Y3NDU5ZDQ0YzNh
ZGFjMzhlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9u
LWFzaW4uaHRtbApAQCAtMCwwICsxLDk1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGFzaW4gZnVuY3Rpb24gdGVzdDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworCit2YXIgcGlDb25zdGFudHMgPSBbCisgICJjb25zdCBmbG9hdCBrUEkgICAg
ID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsiLAorICAiY29uc3QgZmxvYXQga0hhbGZQSSA9IChr
UEkgKiAwLjUpOyIsCisgICJjb25zdCBmbG9hdCBrMlBJICAgID0gKGtQSSAqIDIuMCk7IgorXS5q
b2luKCJcbiIpOworCit2YXIga1BJID0gTWF0aC5QSTsKK3ZhciBrSGFsZlBJID0gTWF0aC5QSSAq
IDAuNTsKK3ZhciBrMlBJID0gTWF0aC5QSSAqIDIuMDsKK3ZhciBhc2luID0gTWF0aC5hc2luOyAg
Ly8gc2hvcnRoYW5kCisKK0dMU0xHZW5lcmF0b3IucnVuUmVmZXJlbmNlSW1hZ2VUZXN0KHsKKyAg
ZmVhdHVyZTogImFzaW4iLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1ZSIsCisgIHRlc3RGdW5jOiAi
JChmdW5jKSgkKHR5cGUpKSIsCisgIGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTogMiwKKyAgZXh0
cmE6IHBpQ29uc3RhbnRzLAorICB0ZXN0czogWworICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91
dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueCAq
IDAuOCkgLyBrUEkgKyAwLjUsIiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0
KS55ICogMC44KSAvIGtQSSArIDAuNSwiLAorICAgICAgICAgICAgICAgIiAgICAwLCIsCisgICAg
ICAgICAgICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgICBnZW5lcmF0b3I6IGZ1bmN0
aW9uKHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJuIFsgYXNpbih4ICogMC44KSAvIGtQSSAr
IDAuNSwKKyAgICAgICAgICAgICAgICAgYXNpbih5ICogMC44KSAvIGtQSSArIDAuNSwKKyAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAor
ICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueHkgKiAwLjgpIC8ga1BJICsgMC41LCIsCisgICAgICAg
ICAgICAgICAiICAgIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgICBnZW5lcmF0b3I6IGZ1bmN0
aW9uKHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJuIFsgYXNpbih4ICogMC44KSAvIGtQSSAr
IDAuNSwKKyAgICAgICAgICAgICAgICAgYXNpbih5ICogMC44KSAvIGtQSSArIDAuNSwKKyAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAor
ICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogMC44KSAvIGtQSSArIDAuNSwiLAorICAgICAg
ICAgICAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlv
bih4LCB5LCB6LCB3KSB7CisgICAgICAgIHJldHVybiBbIGFzaW4oeCAqIDAuOCkgLyBrUEkgKyAw
LjUsCisgICAgICAgICAgICAgICAgIGFzaW4oeSAqIDAuOCkgLyBrUEkgKyAwLjUsCisgICAgICAg
ICAgICAgICAgIGFzaW4oeiAqIDAuOCkgLyBrUEkgKyAwLjUsCisgICAgICAgICAgICAgICAgIDEg
XTsKKyAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0g
IiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSAqIDAuOCkgLyBrUEkgKyAw
LjU7IiwKKyAgICAgICAgICAgICAgXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5j
dGlvbih4LCB5LCB6LCB3KSB7CisgICAgICAgIHJldHVybiBbIGFzaW4oeCAqIDAuOCkgLyBrUEkg
KyAwLjUsCisgICAgICAgICAgICAgICAgIGFzaW4oeSAqIDAuOCkgLyBrUEkgKyAwLjUsCisgICAg
ICAgICAgICAgICAgIGFzaW4oeiAqIDAuOCkgLyBrUEkgKyAwLjUsCisgICAgICAgICAgICAgICAg
IGFzaW4odyAqIDAuOCkgLyBrUEkgKyAwLjUgXTsKKyAgICAgIH0sCisgICAgfSwKKyAgXQorfSk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWF0YW4teHku
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tYXRhbi14eS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyMGQxOGQyYzAzYmVhZTI3MDAwZmE2Yjc4ODM2MTFlOTcwNWE4MzYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWF0YW4teHkuaHRtbApAQCAtMCww
ICsxLDk4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5HTFNMIGF0YW4teHkgZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0
dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMi
PiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2
YXIgcGlDb25zdGFudHMgPSBbCisgICJjb25zdCBmbG9hdCBrUEkgICAgID0gMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjsiLAorICAiY29uc3QgZmxvYXQga0hhbGZQSSA9IChrUEkgKiAwLjUpOyIsCisg
ICJjb25zdCBmbG9hdCBrMlBJICAgID0gKGtQSSAqIDIuMCk7IgorXS5qb2luKCJcbiIpOworCit2
YXIga1BJID0gTWF0aC5QSTsKK3ZhciBrSGFsZlBJID0gTWF0aC5QSSAqIDAuNTsKK3ZhciBrMlBJ
ID0gTWF0aC5QSSAqIDIuMDsKK3ZhciBhdGFuMiA9IE1hdGguYXRhbjI7ICAvLyBzaG9ydGhhbmQK
KworR0xTTEdlbmVyYXRvci5ydW5SZWZlcmVuY2VJbWFnZVRlc3QoeworICBmZWF0dXJlOiAiYXRh
biIsCisgIGFyZ3M6ICIkKHR5cGUpIHksICQodHlwZSkgeCIsCisgIHRlc3RGdW5jOiAiJChmdW5j
KSgkKHR5cGUpLCAkKHR5cGUpKSIsCisgIGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTogNSwKKyAg
ZXh0cmE6IHBpQ29uc3RhbnRzLAorICB0ZXN0czogWworICAgIHsKKyAgICAgIHNvdXJjZTogWyIk
KG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCku
eCArIDAuMSwgJChpbnB1dCkueSkgLyBrMlBJICsgMC41LCIsCisgICAgICAgICAgICAgICAiICAg
IDAsIiwKKyAgICAgICAgICAgICAgICIgICAgMCwiLAorICAgICAgICAgICAgICAgIiAgICAxKTsi
XS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3KSB7Cisg
ICAgICAgIHJldHVybiBbIGF0YW4yKHggKyAwLjEsIHkpIC8gazJQSSArIDAuNSwKKyAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgMSBdOwor
ICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0
KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHkgKyB2ZWMyKDAuMSwg
MC4xKSwgJChpbnB1dCkueXgpIC8gIiwKKyAgICAgICAgICAgICAgICIgICAgICAgICAgICBrMlBJ
ICsgdmVjMigwLjUsIDAuNSksIiwKKyAgICAgICAgICAgICAgICIgICAgMCwgMSk7Il0uam9pbigi
XG4iKSwKKyAgICAgIGdlbmVyYXRvcjogZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICBy
ZXR1cm4gWyBhdGFuMih4ICsgMC4xLCB5KSAvIGsyUEkgKyAwLjUsCisgICAgICAgICAgICAgICAg
IGF0YW4yKHkgKyAwLjEsIHgpIC8gazJQSSArIDAuNSwKKyAgICAgICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgIHNvdXJj
ZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChp
bnB1dCkueHl6ICsgdmVjMygwLjEsIDAuMSwgMC4xKSwgJChpbnB1dCkueXp4KSAvICIsCisgICAg
ICAgICAgICAgICAiICAgICAgICAgICAgazJQSSArIHZlYzMoMC41LCAwLjUsIDAuNSksIiwKKyAg
ICAgICAgICAgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICAgIGdlbmVyYXRvcjogZnVu
Y3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICByZXR1cm4gWyBhdGFuMih4ICsgMC4xLCB5KSAv
IGsyUEkgKyAwLjUsCisgICAgICAgICAgICAgICAgIGF0YW4yKHkgKyAwLjEsIHopIC8gazJQSSAr
IDAuNSwKKyAgICAgICAgICAgICAgICAgYXRhbjIoeiArIDAuMSwgeCkgLyBrMlBJICsgMC41LAor
ICAgICAgICAgICAgICAgICAxIF07CisgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgc291
cmNlOiBbIiQob3V0cHV0KSA9ICIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1
dCkgKyB2ZWM0KDAuMSwgMC4xLCAwLjEsIDAuMSksICQoaW5wdXQpLnd6eXgpIC8gIiwKKyAgICAg
ICAgICAgICAgICIgICAgICAgICAgICBrMlBJICsgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpOyIs
CisgICAgICAgICAgICAgIF0uam9pbigiXG4iKSwKKyAgICAgIGdlbmVyYXRvcjogZnVuY3Rpb24o
eCwgeSwgeiwgdykgeworICAgICAgICByZXR1cm4gWyBhdGFuMih4ICsgMC4xLCB3KSAvIGsyUEkg
KyAwLjUsCisgICAgICAgICAgICAgICAgIGF0YW4yKHkgKyAwLjEsIHopIC8gazJQSSArIDAuNSwK
KyAgICAgICAgICAgICAgICAgYXRhbjIoeiArIDAuMSwgeSkgLyBrMlBJICsgMC41LAorICAgICAg
ICAgICAgICAgICBhdGFuMih3ICsgMC4xLCB4KSAvIGsyUEkgKyAwLjUgXTsKKyAgICAgIH0sCisg
ICAgfSwKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLWF0YW4uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tYXRhbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIwZDEzNjZmNzBkNDE5ZGYwNTU5NjdhN2Y4YjFkYWM5ZjA5ODJjNGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWF0YW4uaHRtbApA
QCAtMCwwICsxLDk1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5HTFNMIGF0YW4gZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1m
ZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3Iu
anMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
Cit2YXIgcGlDb25zdGFudHMgPSBbCisgICJjb25zdCBmbG9hdCBrUEkgICAgID0gMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjsiLAorICAiY29uc3QgZmxvYXQga0hhbGZQSSA9IChrUEkgKiAwLjUpOyIs
CisgICJjb25zdCBmbG9hdCBrMlBJICAgID0gKGtQSSAqIDIuMCk7IgorXS5qb2luKCJcbiIpOwor
Cit2YXIga1BJID0gTWF0aC5QSTsKK3ZhciBrSGFsZlBJID0gTWF0aC5QSSAqIDAuNTsKK3ZhciBr
MlBJID0gTWF0aC5QSSAqIDIuMDsKK3ZhciBhdGFuID0gTWF0aC5hdGFuOyAgLy8gc2hvcnRoYW5k
CisKK0dMU0xHZW5lcmF0b3IucnVuUmVmZXJlbmNlSW1hZ2VUZXN0KHsKKyAgZmVhdHVyZTogImF0
YW4iLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1ZSIsCisgIHRlc3RGdW5jOiAiJChmdW5jKSgkKHR5
cGUpKSIsCisgIGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTogNCwKKyAgZXh0cmE6IHBpQ29uc3Rh
bnRzLAorICB0ZXN0czogWworICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0
KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueCAqIDguMCAtIDQuMCkg
LyBrMlBJICsgMC41LCIsCisgICAgICAgICAgICAgICAiICAgIDAuNSwiLAorICAgICAgICAgICAg
ICAgIiAgICAwLCIsCisgICAgICAgICAgICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAg
ICBnZW5lcmF0b3I6IGZ1bmN0aW9uKHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJuIFsgYXRh
bih4ICogOC4wIC0gNC4wKSAvIGsyUEkgKyAwLjUsCisgICAgICAgICAgICAgICAgIDAuNSwKKyAg
ICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9
LAorICAgIHsKKyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAg
ICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHkgKiA4LjAgLSB2ZWMyKDQsIDQpKSAvIGsyUEkg
KyB2ZWMyKDAuNSwgMC41KSwiLAorICAgICAgICAgICAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJc
biIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3KSB7CisgICAgICAgIHJl
dHVybiBbIGF0YW4oeCAqIDguMCAtIDQpIC8gazJQSSArIDAuNSwKKyAgICAgICAgICAgICAgICAg
YXRhbih5ICogOC4wIC0gNCkgLyBrMlBJICsgMC41LAorICAgICAgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgICAgICAxIF07CisgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgc291cmNl
OiBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlu
cHV0KS54eXogKiA4LjAgLSB2ZWMzKDQsIDQsIDQpKSAvIGsyUEkgKyB2ZWMzKDAuNSwgMC41LCAw
LjUpLCIsCisgICAgICAgICAgICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgICBnZW5l
cmF0b3I6IGZ1bmN0aW9uKHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJuIFsgYXRhbih4ICog
OC4wIC0gNCkgLyBrMlBJICsgMC41LAorICAgICAgICAgICAgICAgICBhdGFuKHkgKiA4LjAgLSA0
KSAvIGsyUEkgKyAwLjUsCisgICAgICAgICAgICAgICAgIGF0YW4oeiAqIDguMCAtIDQpIC8gazJQ
SSArIDAuNSwKKyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAorICAgIHsK
KyAgICAgIHNvdXJjZTogWyIkKG91dHB1dCkgPSAiLAorICAgICAgICAgICAgICAgIiAgICAkKGZ1
bmMpKCQoaW5wdXQpICogOC4wIC0gdmVjNCg0LCA0LCA0LCA0KSkgLyBrMlBJICsgdmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpOyIsCisgICAgICAgICAgICAgIF0uam9pbigiXG4iKSwKKyAgICAgIGdl
bmVyYXRvcjogZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICByZXR1cm4gWyBhdGFuKHgg
KiA4LjAgLSA0KSAvIGsyUEkgKyAwLjUsCisgICAgICAgICAgICAgICAgIGF0YW4oeSAqIDguMCAt
IDQpIC8gazJQSSArIDAuNSwKKyAgICAgICAgICAgICAgICAgYXRhbih6ICogOC4wIC0gNCkgLyBr
MlBJICsgMC41LAorICAgICAgICAgICAgICAgICBhdGFuKHcgKiA4LjAgLSA0KSAvIGsyUEkgKyAw
LjUgXTsKKyAgICAgIH0sCisgICAgfSwKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNlaWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wt
ZnVuY3Rpb24tY2VpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMzFiOTNmYTNlODg2NDZmZjI0NThjNjg2
ZDEzYmVkZGY2MWU0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLWNlaWwuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGNlaWwgZnVuY3Rpb24gdGVzdDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1
cmU6ICJjZWlsIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQoYXJnMCkpIiwKKyAgZW11RnVuYzog
WyJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgdmFsdWUpIHsiLAorICAgICAgICAgICAgIiAgZmxv
YXQgbSA9IG1vZCh2YWx1ZSwgMS4wKTsiLAorICAgICAgICAgICAgIiAgcmV0dXJuIG0gIT0gMC4w
ID8gKHZhbHVlICsgMS4wIC0gbSkgOiB2YWx1ZTsiLAorICAgICAgICAgICAgIn0iXS5qb2luKCJc
biIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgi
LAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueCAqIDguMCAtIDQuMCkgLyA4LjAgKyAwLjUs
IiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnkgKiA4LjAgLSA0LjApIC8gOC4wICsgMC41
LCIsCisgICAgICIgICAgMCwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIk
KG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIDguMCAt
IHZlYzIoNCwgNCkpIC8gOC4wICsgdmVjMigwLjUsIDAuNSksIiwKKyAgICAgIiAgICAwLCAxKTsi
XS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVu
YykoJChpbnB1dCkueHl6ICogOC4wIC0gdmVjMyg0LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAi
ICAgICAgIHZlYzMoMC41LCAwLjUsIDAuNSksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIp
LAorICAgIFsiJChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpICogOC4w
IC0gdmVjNCg0LCA0LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAiICAgICAgIHZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KTsiXS5qb2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1jbGFtcC1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5j
dGlvbnMvZ2xzbC1mdW5jdGlvbi1jbGFtcC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNzRhMzA5
NjE0YzcwMWYwOGI4YTYyYjRlNTUyZGM2M2UyYTg1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNsYW1wLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSw1NiBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
R0xTTCBjbGFtcC1nZW50eXBlIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xH
ZW5lcmF0b3IucnVuRmVhdHVyZVRlc3QoeworICBmZWF0dXJlOiAiY2xhbXAiLAorICBhcmdzOiAi
JCh0eXBlKSB2YWx1ZSwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlIiwKKyAgYmFzZUFy
Z3M6ICJ2YWx1ZSQoZmllbGQpLCBtaW5WYWx1ZSwgbWF4VmFsdWUiLAorICB0ZXN0RnVuYzogIiQo
ZnVuYykoJCh0eXBlKSwgZmxvYXQsIGZsb2F0KSIsCisgIGVtdUZ1bmM6IFsiZmxvYXQgJChmdW5j
KV9iYXNlKGZsb2F0IHZhbHVlLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpIHsiLAor
ICAgICAgICAgICAgIiAgcmV0dXJuIG1pbihtYXgodmFsdWUsIG1pblZhbHVlKSwgbWF4VmFsdWUp
OyIsCisgICAgICAgICAgICAifSJdLmpvaW4oIlxuIiksCisgIGdyaWRSZXM6IDgsCisgIHRlc3Rz
OiBbCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0
KS54ICogNi4wIC0gMy4wLCAtMS41LCAxLjUpIC8gMy4wICsgMC41LCIsCisgICAgICIgICAgJChm
dW5jKSgkKGlucHV0KS55ICogMTAuMCAtIDUuMCwgLTIuNSwgMi41KSAvIDUuMCArIDAuNSwiLAor
ICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRw
dXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHkgKiB2ZWMyKDYsIDEw
KSAtIHZlYzIoMywgNSksIC0xLjUsIDIuMCkgLyAiLAorICAgICAiICAgICAgIHZlYzIoMy4wLCA1
LjApICsgdmVjMigwLjUsIDAuNSksIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAor
ICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6
ICogdmVjMyg2LCAxMCwgOCkgLSB2ZWMzKDMsIDUsIDQpLCAtMS41LCAyLjApIC8gIiwKKyAgICAg
IiAgICAgICB2ZWMzKDMsIDUsIDQpICsgdmVjMygwLjUsIDAuNSwgMC41KSwiLAorICAgICAiICAg
IDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSAiLAorICAgICAiICAgICQoZnVu
YykoJChpbnB1dCkgKiB2ZWM0KDYsIDEwLCA4LCA0KSAtIHZlYzQoMywgNSwgNCwgMiksIiwKKyAg
ICAgIiAgICAgICAtMS41LCAyLjIpIC8gdmVjNCgzLCA1LCA0LCAyKSArICIsCisgICAgICIgICAg
ICAgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpOyJdLmpvaW4oIlxuIikKKyAgXQorfSk7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNsYW1wLWdlbnR5cGUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tY2xhbXAtZ2VudHlwZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5NjdiZGM1N2RhNDk3MWU0MmYxYTNlMzAzZjQ2NDY4YTIzYjEzZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNsYW1wLWdlbnR5cGUu
aHRtbApAQCAtMCwwICsxLDU5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGNsYW1wLWdlbnR5cGUgZnVuY3Rpb24gdGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6
ICJjbGFtcCIsCisgIGFyZ3M6ICIkKHR5cGUpIHZhbHVlLCAkKHR5cGUpIG1pblZhbHVlLCAkKHR5
cGUpIG1heFZhbHVlIiwKKyAgYmFzZUFyZ3M6ICJ2YWx1ZSQoZmllbGQpLCBtaW5WYWx1ZSQoZmll
bGQpLCBtYXhWYWx1ZSQoZmllbGQpIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksICQo
dHlwZSksICQodHlwZSkpIiwKKyAgZW11RnVuYzogWyJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQg
dmFsdWUsIGZsb2F0IG1pblZhbHVlLCBmbG9hdCBtYXhWYWx1ZSkgeyIsCisgICAgICAgICAgICAi
ICByZXR1cm4gbWluKG1heCh2YWx1ZSwgbWluVmFsdWUpLCBtYXhWYWx1ZSk7IiwKKyAgICAgICAg
ICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3JpZFJlczogOCwKKyAgdGVzdHM6IFsKKyAgICBbIiQo
b3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnggKiA2LjAgLSAz
LjAsIC0xLjUsIDEuNSkgLyAzLjAgKyAwLjUsIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQp
LnkgKiAxMC4wIC0gNS4wLCAtMi41LCAyLjUpIC8gNS4wICsgMC41LCIsCisgICAgICIgICAgMCwi
LAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIs
CisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIHZlYzIoNiwgMTApIC0gdmVjMigzLCA1
KSwgIiwKKyAgICAgIiAgICAgICB2ZWMyKC0xLjUsIC0yLjUpLCB2ZWMyKDEuNSwgMi41KSkgLyAi
LAorICAgICAiICAgICAgIHZlYzIoMy4wLCA1LjApICsgdmVjMigwLjUsIDAuNSksIiwKKyAgICAg
IiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogdmVjMyg2LCAxMCwgOCkgLSB2ZWMzKDMsIDUs
IDQpLCAiLAorICAgICAiICAgICAgIHZlYzMoLTEuNSwgLTIuNSwgLTIpLCB2ZWMzKDEuNSwgMi41
LCAyKSkgLyB2ZWMzKDMsIDUsIDQpICsgIiwKKyAgICAgIiAgICAgICB2ZWMzKDAuNSwgMC41LCAw
LjUpLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIs
CisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSAqIHZlYzQoNiwgMTAsIDgsIDQpIC0gdmVjNCgz
LCA1LCA0LCAyKSwiLAorICAgICAiICAgICAgIHZlYzQoLTEuNSwgLTIuNSwgLTIsIC0xKSwgdmVj
NCgxLjUsIDIuNSwgMiwgMSkpIC8gIiwKKyAgICAgIiAgICAgICB2ZWM0KDMsIDUsIDQsIDIpICsg
IiwKKyAgICAgIiAgICAgICB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSk7Il0uam9pbigiXG4iKQor
ICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24t
Y29zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNvcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE2MmZmYzc2ZmMzNzBmZTY0M2Q3NWFlYmQ2YWE4NGU0MDczNDQ2NzIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWNvcy5odG1sCkBAIC0wLDAgKzEs
OTkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPkdMU0wgY29zIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHBpQ29u
c3RhbnRzID0gWworICAiY29uc3QgZmxvYXQga1BJICAgICA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4
NDY7IiwKKyAgImNvbnN0IGZsb2F0IGtIYWxmUEkgPSAoa1BJICogMC41KTsiLAorICAiY29uc3Qg
ZmxvYXQgazJQSSAgICA9IChrUEkgKiAyLjApOyIKK10uam9pbigiXG4iKTsKKwordmFyIGtQSSA9
IE1hdGguUEk7Cit2YXIga0hhbGZQSSA9IE1hdGguUEkgKiAwLjU7Cit2YXIgazJQSSA9IE1hdGgu
UEkgKiAyLjA7Cit2YXIgY29zID0gTWF0aC5jb3M7ICAvLyBzaG9ydGhhbmQKKworR0xTTEdlbmVy
YXRvci5ydW5SZWZlcmVuY2VJbWFnZVRlc3QoeworICBmZWF0dXJlOiAiY29zIiwKKyAgYXJnczog
IiQodHlwZSkgdmFsdWUiLAorICB0ZXN0RnVuYzogIiQoZnVuYykoJCh0eXBlKSkiLAorICBncmlk
UmVzOiA4LAorICB0b2xlcmFuY2U6IDMsCisgIGV4dHJhOiBwaUNvbnN0YW50cywKKyAgdGVzdHM6
IFsKKyAgICB7CisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAgICAg
ICAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnggKiBrSGFsZlBJICsga0hhbGZQSSksIiwKKyAg
ICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS55ICoga0hhbGZQSSksIiwKKyAgICAg
ICAgICAgICAgICIgICAgMCwiLAorICAgICAgICAgICAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIp
LAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3KSB7CisgICAgcmV0dXJuIFsg
Y29zKHggKiBrSGFsZlBJICsga0hhbGZQSSksCisgICAgICAgICBjb3MoeSAqIGtIYWxmUEkpLAor
ICAgICAgICAgMCwKKyAgICAgICAgIDEgXTsKKyAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAg
ICBzb3VyY2U6IFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAgICAgICAiICAgICQoZnVuYyko
JChpbnB1dCkueHkgKiB2ZWMyKGtQSSwgazJQSSkpICogMC41ICsgdmVjMigwLjUsIDAuNSksIiwK
KyAgICAgICAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBm
dW5jdGlvbih4LCB5LCB6LCB3KSB7CisgICAgcmV0dXJuIFsgY29zKHggKiBrUEkpICogMC41ICsg
MC41LAorICAgICAgICAgY29zKHkgKiBrMlBJKSAqIDAuNSArIDAuNSwKKyAgICAgICAgIDAsCisg
ICAgICAgICAxIF07CisgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgLy8gRklYTUU6IGZv
ciBzb21lIHJlYXNvbiwgdGhpcyB0ZXN0IHJlcXVpcmVzIGEgaGlnaGVyIHRvbGVyYW5jZSB3aGVu
IHJ1biBpbiBhIHZlcnRleCBzaGFkZXIuCisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0gdmVj
NCgiLAorICAgICAgICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogdmVjMyhrUEksIGsy
UEksIDQuMCkpICogIiwKKyAgICAgICAgICAgIiAgICAwLjUgKyB2ZWMzKDAuNSwgMC41LCAwLjUp
LCIsCisgICAgICAgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICAgIGdlbmVyYXRvcjog
ZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgIHJldHVybiBbIGNvcyh4ICoga1BJKSAqIDAuNSAr
IDAuNSwKKyAgICAgICAgIGNvcyh5ICogazJQSSkgKiAwLjUgKyAwLjUsCisgICAgICAgICBjb3Mo
eiAqIDQuMCkgKiAwLjUgKyAwLjUsCisgICAgICAgICAxIF07CisgICAgICB9LAorICAgICAgdG9s
ZXJhbmNlOiA3LAorICAgIH0sCisgICAgeworICAgICAgc291cmNlOiBbIiQob3V0cHV0KSA9ICIs
CisgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSAqIHZlYzQoazJQSSwgNC4wLCBrSGFs
ZlBJLCBrUEkpKSAqIiwKKyAgICAgICAgICAgIiAgICAwLjUgKyB2ZWM0KDAuNSwgMC41LCAwLjUs
IDEpOyIsCisgICAgICAgICAgXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlv
bih4LCB5LCB6LCB3KSB7CisgICAgcmV0dXJuIFsgY29zKHggKiBrMlBJKSAqIDAuNSArIDAuNSwK
KyAgICAgICAgIGNvcyh5ICogNC4wKSAqIDAuNSArIDAuNSwKKyAgICAgICAgIGNvcyh6ICoga0hh
bGZQSSkgKiAwLjUgKyAwLjUsCisgICAgICAgICBjb3ModyAqIGtQSSkgKiAwLjUgKyAxLjAgXTsK
KyAgICAgIH0sCisgICAgfSwKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0
aW9ucy9nbHNsLWZ1bmN0aW9uLWNyb3NzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0
aW9uLWNyb3NzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdkMTdhNGVkYTk5NDY1MmZkODc2NTgyM2MzNGUx
MTUyNWVhYjZiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rp
b24tY3Jvc3MuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGNyb3NzIGZ1bmN0aW9uIHRlc3Q8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKKworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1
cmU6ICJjcm9zcyIsCisgIGFyZ3M6ICIkKHR5cGUpIHgsICQodHlwZSkgeSIsCisgIGJhc2VBcmdz
OiAidmFsdWUkKGZpZWxkKSIsCisgIHRlc3RGdW5jOiAiJChmdW5jKSgkKHR5cGUpLCQodHlwZSkp
IiwKKyAgZW11RnVuY3M6IFsKKyAgICB7IHR5cGU6ICJ2ZWMzIiwKKyAgICAgIGNvZGU6IFsKKyAg
ICAgICAgInZlYzMgJChmdW5jKV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAgICIgICByZXR1cm4g
dmVjMygiLAorICAgICAgICAiICAgICAgIHhbMV0gKiB5WzJdIC0geVsxXSAqIHhbMl0sIiwKKyAg
ICAgICAgIiAgICAgICB4WzJdICogeVswXSAtIHlbMl0gKiB4WzBdLCIsCisgICAgICAgICIgICAg
ICAgeFswXSAqIHlbMV0gLSB5WzBdICogeFsxXSk7IiwKKyAgICAgICAgIn0iXS5qb2luKCJcbiIp
CisgICAgfSwKKyAgXSwKKyAgZ3JpZFJlczogOCwKKyAgdGVzdHM6IFsKKyAgICBbIiQob3V0cHV0
KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgIG5vcm1hbGl6
ZSgkKGlucHV0KS54eXogLSAwLjUpLCIsCisgICAgICIgICAgICAgIG5vcm1hbGl6ZSgkKGlucHV0
KS55encgLSAwLjUpKSAqIDAuNSArIDAuNSwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIikK
KyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9u
LWRpc3RhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWRpc3RhbmNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWVmYTRmN2U0ZTM3YTAzNzczOWU0ZGY2MjBlNTFmMzQ1NzYzMGYyMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tZGlzdGFuY2Uu
aHRtbApAQCAtMCwwICsxLDg4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGRpc3RhbmNlIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wt
Z2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKKworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJk
aXN0YW5jZSIsCisgIGFyZ3M6ICIkKHR5cGUpIHAxLCAkKHR5cGUpIHAyIiwKKyAgYmFzZUFyZ3M6
ICJ2YWx1ZSQoZmllbGQpIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksJCh0eXBlKSki
LAorICBlbXVGdW5jczogWworICAgIHsgdHlwZTogImZsb2F0IiwKKyAgICAgIGNvZGU6IFsKKyAg
ICAgICAgImZsb2F0ICQoZnVuYylfZW11KCQoYXJncykpIHsiLAorICAgICAgICAiICAgcmV0dXJu
IGFicyhwMSAtIHAyKTsiLAorICAgICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9LAorICAgIHsg
dHlwZTogInZlYzIiLAorICAgICAgY29kZTogWworICAgICAgICAiZmxvYXQgJChmdW5jKV9lbXUo
JChhcmdzKSkgeyIsCisgICAgICAgICIgICByZXR1cm4gbGVuZ3RoKHAxIC0gcDIpOyIsCisgICAg
ICAgICJ9Il0uam9pbigiXG4iKQorICAgIH0sCisgICAgeyB0eXBlOiAidmVjMyIsCisgICAgICBj
b2RlOiBbCisgICAgICAgICJmbG9hdCAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAgICAg
IiAgIHJldHVybiBsZW5ndGgocDEgLSBwMik7IiwKKyAgICAgICAgIn0iXS5qb2luKCJcbiIpCisg
ICAgfSwKKyAgICB7IHR5cGU6ICJ2ZWM0IiwKKyAgICAgIGNvZGU6IFsKKyAgICAgICAgImZsb2F0
ICQoZnVuYylfZW11KCQoYXJncykpIHsiLAorICAgICAgICAiICAgcmV0dXJuIGxlbmd0aChwMSAt
IHAyKTsiLAorICAgICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9CisgIF0sCisgIGdyaWRSZXM6
IDgsCisgIHRlc3RzOiBbCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChm
dW5jKSgiLAorICAgICAiICAgICAgICAkKGlucHV0KS54ICogOC4wIC0gNC4wLCIsCisgICAgICIg
ICAgICAgICQoaW5wdXQpLnkgKiA4LjAgLSA0LjApIC8gOC4wLCIsCisgICAgICIgICAgMCwiLAor
ICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRw
dXQpID0gdmVjNCgiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAkKGZ1bmMpKCIsCisgICAg
ICIgICAgICAgICQoaW5wdXQpLnh5ICogOC4wIC0gNC4wLCIsCisgICAgICIgICAgICAgICQoaW5w
dXQpLnd6ICogOC4wIC0gNC4wKSAvIDguMCwiLAorICAgICAiICAgIDAsIDEpOyJdLmpvaW4oIlxu
IiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgMCwgMCwiLAorICAgICAi
ICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkueHl6ICogOC4wIC0gNC4wLCIs
CisgICAgICIgICAgICAgICQoaW5wdXQpLnl6dyAqIDguMCAtIDQuMCkgLyA4LjAsIiwKKyAgICAg
IiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAi
ICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgdmVjNCgkKGlucHV0KS54eXosIDApICogOC4w
IC0gNC4wLCIsCisgICAgICIgICAgICAgIHZlYzQoMCwgJChpbnB1dCkud3p5KSAqIDguMCAtIDQu
MCkgLyA4LjAsIiwKKyAgICAgIiAgICAwLCAwLCAxKTsiLAorICAgIF0uam9pbigiXG4iKQorICBd
Cit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tZG90
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWRvdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyOWU0M2U0NjRhYTJmY2Y5ZDVlNGYyYjI2YjYyNzhhNjcyY2Q4ZDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWRvdC5odG1sCkBAIC0wLDAgKzEsOTAg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PkdMU0wgZG90IGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworR0xTTEdlbmVyYXRv
ci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJkb3QiLAorICBhcmdzOiAiJCh0eXBlKSBw
MSwgJCh0eXBlKSBwMiIsCisgIGJhc2VBcmdzOiAidmFsdWUkKGZpZWxkKSIsCisgIHRlc3RGdW5j
OiAiJChmdW5jKSgkKHR5cGUpLCQodHlwZSkpIiwKKyAgZnJhZ21lbnRUb2xlcmFuY2U6IDEsCisg
IGVtdUZ1bmNzOiBbCisgICAgeyB0eXBlOiAiZmxvYXQiLAorICAgICAgY29kZTogWworICAgICAg
ICAiZmxvYXQgJChmdW5jKV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAgICIgICByZXR1cm4gcDEg
KiBwMjsiLAorICAgICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9LAorICAgIHsgdHlwZTogInZl
YzIiLAorICAgICAgY29kZTogWworICAgICAgICAiZmxvYXQgJChmdW5jKV9lbXUoJChhcmdzKSkg
eyIsCisgICAgICAgICIgICByZXR1cm4gcDEueCAqIHAyLnggKyBwMS55ICogcDIueTsiLAorICAg
ICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9LAorICAgIHsgdHlwZTogInZlYzMiLAorICAgICAg
Y29kZTogWworICAgICAgICAiZmxvYXQgJChmdW5jKV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAg
ICIgICByZXR1cm4gcDEueCAqIHAyLnggKyBwMS55ICogcDIueSArIHAxLnogKiBwMi56OyIsCisg
ICAgICAgICJ9Il0uam9pbigiXG4iKQorICAgIH0sCisgICAgeyB0eXBlOiAidmVjNCIsCisgICAg
ICBjb2RlOiBbCisgICAgICAgICJmbG9hdCAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAg
ICAgIiAgIHJldHVybiBwMS54ICogcDIueCArIHAxLnkgKiBwMi55ICsgcDEueiAqIHAyLnogKyBw
MS53ICogcDIudzsiLAorICAgICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9CisgIF0sCisgIGdy
aWRSZXM6IDgsCisgIHRlc3RzOiBbCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIg
ICAgJChmdW5jKSgiLAorICAgICAiICAgICAgICAkKGlucHV0KS54ICogOC4wIC0gNC4wLCIsCisg
ICAgICIgICAgICAgICQoaW5wdXQpLnkgKiA4LjAgLSA0LjApIC8gOC4wLCIsCisgICAgICIgICAg
MCwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsi
JChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAkKGZ1bmMpKCIs
CisgICAgICIgICAgICAgICQoaW5wdXQpLnh5ICogOC4wIC0gNC4wLCIsCisgICAgICIgICAgICAg
ICQoaW5wdXQpLnd6ICogOC4wIC0gNC4wKSAvIDguMCwiLAorICAgICAiICAgIDAsIDEpOyJdLmpv
aW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgMCwgMCwiLAor
ICAgICAiICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkueHl6ICogOC4wIC0g
NC4wLCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnl6dyAqIDguMCAtIDQuMCkgLyA4LjAsIiwK
KyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAor
ICAgICAiICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgdmVjNCgkKGlucHV0KS54eXosIDAp
ICogOC4wIC0gNC4wLCIsCisgICAgICIgICAgICAgIHZlYzQoMCwgJChpbnB1dCkud3p5KSAqIDgu
MCAtIDQuMCkgLyA4LjAsIiwKKyAgICAgIiAgICAwLCAwLCAxKTsiLAorICAgIF0uam9pbigiXG4i
KQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5j
dGlvbi1mYWNlZm9yd2FyZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1mYWNl
Zm9yd2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YTRlNzJlZjcyNzI5MjM5YWMyNDA1NzMxZTg5ODQ3
NWRmZDUyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9u
LWZhY2Vmb3J3YXJkLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBmYWNlZm9yd2FyZCBmdW5jdGlv
biB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWdlbmVyYXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK0dMU0xHZW5lcmF0b3IucnVuRmVhdHVyZVRlc3Qo
eworICBmZWF0dXJlOiAiZmFjZWZvcndhcmQiLAorICBhcmdzOiAiJCh0eXBlKSBOLCAkKHR5cGUp
IEksICQodHlwZSkgTnJlZiIsCisgIGJhc2VBcmdzOiAidmFsdWUkKGZpZWxkKSIsCisgIHRlc3RG
dW5jOiAiJChmdW5jKSgkKHR5cGUpLCQodHlwZSksJCh0eXBlKSkiLAorICBzaW1wbGVFbXU6IFsK
KyAgICAiJCh0eXBlKSAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAiICAgcmV0dXJuIGRv
dChOcmVmLCBJKSA8IDAuMCA/IE4gOiAtTjsiLAorICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3Jp
ZFJlczogOCwKKyAgdGVzdHM6IFsKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAg
ICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnggKiAyLjAgLSAxLjAsIiwKKyAg
ICAgIiAgICAgICAgJChpbnB1dCkueSAqIDIuMCAtIDEuMCwiLAorICAgICAiICAgICAgICAkKGlu
cHV0KS56ICogMi4wIC0gMS4wKSwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAwLCIsCisg
ICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAg
ICAgIiAgICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnh5ICogMi4wIC0gMS4w
LCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnl6ICogMi4wIC0gMS4wLCIsCisgICAgICIgICAg
ICAgICQoaW5wdXQpLnp3ICogMi4wIC0gMS4wKSwiLAorICAgICAiICAgIDAsIDEpOyJdLmpvaW4o
IlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgiLAor
ICAgICAiICAgICAgICAkKGlucHV0KS54eXogKiAyLjAgLSAxLjAsIiwKKyAgICAgIiAgICAgICAg
JChpbnB1dCkueXp3ICogMi4wIC0gMS4wLCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnp3eCAq
IDIuMCAtIDEuMCksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRw
dXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnh5
encgKiAyLjAgLSAxLjAsIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkueXp3eCAqIDIuMCAtIDEu
MCwiLAorICAgICAiICAgICAgICAkKGlucHV0KS56d3h5ICogMi4wIC0gMS4wKTsiCisgICAgXS5q
b2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wt
ZnVuY3Rpb24tZmxvb3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tZmxvb3Iu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNzFlYmQ3NDZiYWZhN2M4OWVjYTA2NzNlZmI5NTk1NmRjOTczZDc4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1mbG9vci5o
dG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPkdMU0wgZmxvb3IgZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5l
cmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJmbG9vciIs
CisgIHRlc3RGdW5jOiAiJChmdW5jKSgkKGFyZzApKSIsCisgIGVtdUZ1bmM6IFsiZmxvYXQgJChm
dW5jKV9iYXNlKGZsb2F0IHZhbHVlKSB7IiwKKyAgICAgICAgICAgICIgIHJldHVybiB2YWx1ZSAt
IG1vZCh2YWx1ZSwgMS4wKTsiLAorICAgICAgICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlk
UmVzOiA4LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAg
ICQoZnVuYykoJChpbnB1dCkueCAqIDguMCAtIDQuMCkgLyA4LjAgKyAwLjUsIiwKKyAgICAgIiAg
ICAkKGZ1bmMpKCQoaW5wdXQpLnkgKiA4LjAgLSA0LjApIC8gOC4wICsgMC41LCIsCisgICAgICIg
ICAgMCwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2
ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIDguMCAtIHZlYzIoNCwgNCkp
IC8gOC4wICsgdmVjMigwLjUsIDAuNSksIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJcbiIp
LAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCku
eHl6ICogOC4wIC0gdmVjMyg0LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAiICAgICAgIHZlYzMo
MC41LCAwLjUsIDAuNSksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChv
dXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpICogOC4wIC0gdmVjNCg0LCA0
LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAiICAgICAgIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KTsiXS5qb2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlv
bnMvZ2xzbC1mdW5jdGlvbi1mcmFjdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlv
bi1mcmFjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZTFjMGJmMTMzMGIyMmU2MmM0NjdlZjMwOGY3MjJk
MDUzNjEwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9u
LWZyYWN0Lmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBmcmFjdCBmdW5jdGlvbiB0ZXN0PC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWdlbmVyYXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitHTFNMR2VuZXJhdG9yLnJ1bkZlYXR1cmVUZXN0KHsKKyAgZmVhdHVyZTog
ImZyYWN0IiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQoYXJnMCkpIiwKKyAgZW11RnVuYzogWyJm
bG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgdmFsdWUpIHsiLAorICAgICAgICAgICAgIiAgcmV0dXJu
IHZhbHVlIC0gZmxvb3IodmFsdWUpOyIsCisgICAgICAgICAgICAifSJdLmpvaW4oIlxuIiksCisg
IGdyaWRSZXM6IDgsCisgIHRlc3RzOiBbCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAg
ICIgICAgJChmdW5jKSgkKGlucHV0KS54ICogNC4wIC0gMi4wKSwiLAorICAgICAiICAgICQoZnVu
YykoJChpbnB1dCkueSAqIDQuMCAtIDIuMCksIiwKKyAgICAgIiAgICAwLCIsCisgICAgICIgICAg
MSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAk
KGZ1bmMpKCQoaW5wdXQpLnh5ICogNC4wIC0gdmVjMigyLCAyKSksIiwKKyAgICAgIiAgICAwLCAx
KTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQo
ZnVuYykoJChpbnB1dCkueHl6ICogNC4wIC0gdmVjMygyLCAyLCAyKSksIiwKKyAgICAgIiAgICAx
KTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMp
KCQoaW5wdXQpICogNC4wIC0gdmVjNCgyLCAyLCAyLCAyKSk7Il0uam9pbigiXG4iKQorICBdCit9
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbGVuZ3Ro
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWxlbmd0aC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYzZjA0ZjQ1NDMyZDY1Njg0NmQxYjJiYWM1YmExMThmOWM2NWE4MWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLWxlbmd0aC5odG1sCkBAIC0wLDAg
KzEsODcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPkdMU0wgbGVuZ3RoIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworR0xT
TEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJsZW5ndGgiLAorICBhcmdz
OiAiJCh0eXBlKSB2YWx1ZSIsCisgIGJhc2VBcmdzOiAidmFsdWUkKGZpZWxkKSIsCisgIHRlc3RG
dW5jOiAiJChmdW5jKSgkKHR5cGUpKSIsCisgIGZyYWdtZW50VG9sZXJhbmNlOiAxLAorICBlbXVG
dW5jczogWworICAgIHsgdHlwZTogImZsb2F0IiwKKyAgICAgIGNvZGU6IFsKKyAgICAgICAgImZs
b2F0ICQoZnVuYylfZW11KCQoYXJncykpIHsiLAorICAgICAgICAiICAgcmV0dXJuIGFicygkKGJh
c2VBcmdzKSk7IiwKKyAgICAgICAgIn0iXS5qb2luKCJcbiIpCisgICAgfSwKKyAgICB7IHR5cGU6
ICJ2ZWMyIiwKKyAgICAgIGNvZGU6IFsKKyAgICAgICAgImZsb2F0ICQoZnVuYylfZW11KCQoYXJn
cykpIHsiLAorICAgICAgICAiICAgcmV0dXJuIHNxcnQoIiwKKyAgICAgICAgIiAgICAgICAkKGJh
c2VBcmdzWCkgKiAkKGJhc2VBcmdzWCkgKyAiLAorICAgICAgICAiICAgICAgICQoYmFzZUFyZ3NZ
KSAqICQoYmFzZUFyZ3NZKSk7IiwKKyAgICAgICAgIn0iXS5qb2luKCJcbiIpCisgICAgfSwKKyAg
ICB7IHR5cGU6ICJ2ZWMzIiwKKyAgICAgIGNvZGU6IFsKKyAgICAgICAgImZsb2F0ICQoZnVuYylf
ZW11KCQoYXJncykpIHsiLAorICAgICAgICAiICAgcmV0dXJuIHNxcnQoIiwKKyAgICAgICAgIiAg
ICAgICAkKGJhc2VBcmdzWCkgKiAkKGJhc2VBcmdzWCkgKyAiLAorICAgICAgICAiICAgICAgICQo
YmFzZUFyZ3NZKSAqICQoYmFzZUFyZ3NZKSArICIsCisgICAgICAgICIgICAgICAgJChiYXNlQXJn
c1opICogJChiYXNlQXJnc1opKTsiLAorICAgICAgICAifSJdLmpvaW4oIlxuIikKKyAgICB9LAor
ICAgIHsgdHlwZTogInZlYzQiLAorICAgICAgY29kZTogWworICAgICAgICAiZmxvYXQgJChmdW5j
KV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAgICIgICByZXR1cm4gc3FydCgiLAorICAgICAgICAi
ICAgICAgICQoYmFzZUFyZ3NYKSAqICQoYmFzZUFyZ3NYKSArICIsCisgICAgICAgICIgICAgICAg
JChiYXNlQXJnc1kpICogJChiYXNlQXJnc1kpICsgIiwKKyAgICAgICAgIiAgICAgICAkKGJhc2VB
cmdzWikgKiAkKGJhc2VBcmdzWikgKyAiLAorICAgICAgICAiICAgICAgICQoYmFzZUFyZ3NXKSAq
ICQoYmFzZUFyZ3NXKSk7IiwKKyAgICAgICAgIn0iXS5qb2luKCJcbiIpCisgICAgfQorICBdLAor
ICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueCAqIDguMCAtIDQuMCkgLyA0LjAsIiwKKyAgICAgIiAg
ICAkKGZ1bmMpKCQoaW5wdXQpLnkgKiA4LjAgLSA0LjApIC8gNC4wLCIsCisgICAgICIgICAgMCwi
LAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIs
CisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIDguMCAtIDQuMCkgLyA0LjAsIiwKKyAg
ICAgIiAgICAwLCAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgi
LAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogOC4wIC0gNC4wKSAvIDQuMCwiLAor
ICAgICAiICAgIDAsIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0
KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSAqIDguMCAtIDQuMCkgLyA0LjAsIDAsIDAs
IDEpOyIsCisgICAgXS5qb2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1sZXNzVGhhbi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMv
Z2xzbC1mdW5jdGlvbi1sZXNzVGhhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NjFjMmVlMTYzYjc0NmYy
MWQxMjllZjMzMjJmZDk1NTkxODRlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLWxlc3NUaGFuLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBsZXNzVGhh
biBmdW5jdGlvbiB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWdlbmVyYXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMR2VuZXJhdG9yLnJ1bkZlYXR1
cmVUZXN0KHsKKyAgZmVhdHVyZTogImxlc3NUaGFuIiwKKyAgYXJnczogIiQodHlwZSkgeCwgJCh0
eXBlKSB5IiwKKyAgYnZlY1Rlc3Q6IHRydWUsCisgIGJhc2VBcmdzOiAieCwgeSIsCisgIHRlc3RG
dW5jOiAiJChmdW5jKSgkKHR5cGUpLCAkKHR5cGUpKSIsCisgIGVtdUZ1bmM6IFsiYm9vbCAkKGZ1
bmMpIF9iYXNlKGZsb2F0IHgsIGZsb2F0IHkpIHsiLAorICAgICAgICAgICAgIiAgcmV0dXJuIHgg
PCB5OyIsCisgICAgICAgICAgICAifSJdLmpvaW4oIlxuIiksCisgIGdyaWRSZXM6IDgsCisgIHRl
c3RzOiBbCisgICAgWyJidmVjMiByID0gYnZlYzIoJChmdW5jKSgkKGlucHV0KS54eSwgJChpbnB1
dCkueXcpKTsiLAorICAgICAiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgIHIueCA/IDAu
MjogMC44LCIsCisgICAgICIgICAgci55ID8gMC4yOiAwLjgsIiwKKyAgICAgIiAgICAwLCAxKTsi
XS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVu
YykoJChpbnB1dCkueHl6ICogOC4wIC0gdmVjMyg0LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAi
ICAgICAgIHZlYzMoMC41LCAwLjUsIDAuNSksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIp
LAorICAgIFsiJChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpICogOC4w
IC0gdmVjNCg0LCA0LCA0LCA0KSkgLyA4LjAgKyAiLAorICAgICAiICAgICAgIHZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KTsiXS5qb2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1tYXgtZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tbWF4LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwZmEyNGI0OGEx
N2IxMDI4ZGQyMzljYWU3MDYzMzY3M2QyN2RlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVu
Y3Rpb25zL2dsc2wtZnVuY3Rpb24tbWF4LWZsb2F0Lmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBt
YXgtZmxvYXQgZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5y
dW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJtYXgiLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1
ZSwgZmxvYXQgbWF4VmFsdWUiLAorICBiYXNlQXJnczogInZhbHVlJChmaWVsZCksIG1heFZhbHVl
IiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQoYXJnMCksIGZsb2F0KSIsCisgIGVtdUZ1bmM6IFsi
ZmxvYXQgJChmdW5jKV9iYXNlKGZsb2F0IHZhbHVlLCBmbG9hdCBtYXhWYWx1ZSkgeyIsCisgICAg
ICAgICAgICAiICByZXR1cm4gdmFsdWUgPiBtYXhWYWx1ZSA/IHZhbHVlIDogbWF4VmFsdWU7IiwK
KyAgICAgICAgICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3JpZFJlczogOCwKKyAgdGVzdHM6IFsK
KyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLngs
IDAuNSksIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnksIDAuNSksIiwKKyAgICAgIiAg
ICAwLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZl
YzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnh5LCAwLjUpLCIsCisgICAgICIgICAg
MCwgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAg
ICAkKGZ1bmMpKCQoaW5wdXQpLnh5eiwgMC41KSwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxu
IiksCisgICAgWyIkKG91dHB1dCkgPSAiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCksIDAu
NSk7Il0uam9pbigiXG4iKQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tbWF4LWdlbnR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wt
ZnVuY3Rpb24tbWF4LWdlbnR5cGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDMwZGFjZGY5MDY2ODlkMzU0
ZDE3ZjgzOTY2Yzk5NTM5MWQ0NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMv
Z2xzbC1mdW5jdGlvbi1tYXgtZ2VudHlwZS5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgbWF4LWdl
bnR5cGUgZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5G
ZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJtYXgiLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1ZSwg
JCh0eXBlKSBtYXhWYWx1ZSIsCisgIGJhc2VBcmdzOiAidmFsdWUkKGZpZWxkKSwgbWF4VmFsdWUk
KGZpZWxkKSIsCisgIHRlc3RGdW5jOiAiJChmdW5jKSgkKHR5cGUpLCAkKHR5cGUpKSIsCisgIGVt
dUZ1bmM6IFsiZmxvYXQgJChmdW5jKV9iYXNlKGZsb2F0IHZhbHVlLCBmbG9hdCBtYXhWYWx1ZSkg
eyIsCisgICAgICAgICAgICAiICByZXR1cm4gdmFsdWUgPiBtYXhWYWx1ZSA/IHZhbHVlIDogbWF4
VmFsdWU7IiwKKyAgICAgICAgICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3JpZFJlczogOCwKKyAg
dGVzdHM6IFsKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQo
aW5wdXQpLngsIDAuNSksIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnksIDAuNSksIiwK
KyAgICAgIiAgICAwLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0
cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnh5LCB2ZWMyKDAuNSwg
MC41KSksIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQp
ID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6LCB2ZWMzKDAuNSwgMC41
LCAwLjUpKSwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkg
PSAiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSk7Il0uam9pbigiXG4iKQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tbWluLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLW1pbi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYjE0MGNlNDU5NWRmMTc2ODAyNDNj
N2ViYWVjZjY5YzBjODVmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNs
LWZ1bmN0aW9uLW1pbi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgbWluLWZsb2F0IGZ1
bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xHZW5lcmF0b3IucnVuRmVhdHVyZVRl
c3QoeworICBmZWF0dXJlOiAibWluIiwKKyAgYXJnczogIiQodHlwZSkgdmFsdWUsIGZsb2F0IGRp
dmlzb3IiLAorICBiYXNlQXJnczogInZhbHVlJChmaWVsZCksIGRpdmlzb3IiLAorICB0ZXN0RnVu
YzogIiQoZnVuYykoJChhcmcwKSwgZmxvYXQpIiwKKyAgZW11RnVuYzogWyJmbG9hdCAkKGZ1bmMp
X2Jhc2UoZmxvYXQgdmFsdWUsIGZsb2F0IGRpdmlzb3IpIHsiLAorICAgICAgICAgICAgIiAgcmV0
dXJuIHZhbHVlIDwgZGl2aXNvciA/IHZhbHVlIDogZGl2aXNvcjsiLAorICAgICAgICAgICAgIn0i
XS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQp
ID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueCwgMC41KSwiLAorICAgICAi
ICAgICQoZnVuYykoJChpbnB1dCkueSwgMC41KSwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAg
ICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAg
ICQoZnVuYykoJChpbnB1dCkueHksIDAuNSksIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJc
biIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1
dCkueHl6LCAwLjUpLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0
cHV0KSA9ICIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KSwgMC41KTsiXS5qb2luKCJcbiIp
CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlv
bi1taW4tZ2VudHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1taW4tZ2Vu
dHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZjU2NTExMmFlNTc1MTRkODc5NzZhNzI1MTNmZDkzNWZh
OWFiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLW1p
bi1nZW50eXBlLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBtaW4tZ2VudHlwZSBmdW5jdGlvbiB0
ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9nbHNsLWdlbmVyYXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMR2VuZXJhdG9yLnJ1bkZlYXR1cmVUZXN0KHsKKyAg
ZmVhdHVyZTogIm1pbiIsCisgIGFyZ3M6ICIkKHR5cGUpIHZhbHVlLCAkKHR5cGUpIG1pblZhbHVl
IiwKKyAgYmFzZUFyZ3M6ICJ2YWx1ZSQoZmllbGQpLCBtaW5WYWx1ZSQoZmllbGQpIiwKKyAgdGVz
dEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksICQodHlwZSkpIiwKKyAgZW11RnVuYzogWyJmbG9hdCAk
KGZ1bmMpX2Jhc2UoZmxvYXQgdmFsdWUsIGZsb2F0IG1pblZhbHVlKSB7IiwKKyAgICAgICAgICAg
ICIgIHJldHVybiB2YWx1ZSA8IG1pblZhbHVlID8gdmFsdWUgOiBtaW5WYWx1ZTsiLAorICAgICAg
ICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAgIFsi
JChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueCwgMC41KSwi
LAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueSwgMC41KSwiLAorICAgICAiICAgIDAsIiwK
KyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAor
ICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHksIHZlYzIoMC41LCAwLjUpKSwiLAorICAgICAi
ICAgIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAg
ICIgICAgJChmdW5jKSgkKGlucHV0KS54eXosIHZlYzMoMC41LCAwLjUsIDAuNSkpLCIsCisgICAg
ICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIsCisgICAgICIgICAg
JChmdW5jKSgkKGlucHV0KSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpKTsiXS5qb2luKCJcbiIp
CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlv
bi1taXgtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbWl4LWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzRlNzAwNjhjMmRkZDM1MDllMWU4ODg2YTdkYzAyNDYxNWM1M2Mz
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbWl4LWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBtaXgtZmxvYXQgZnVuY3Rpb24gdGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6
ICJtaXgiLAorICBhcmdzOiAiJCh0eXBlKSBzdGFydFZhbHVlLCAkKHR5cGUpIGVuZFZhbHVlLCBm
bG9hdCBtaXhWYWx1ZSIsCisgIGJhc2VBcmdzOiAic3RhcnRWYWx1ZSQoZmllbGQpLCBlbmRWYWx1
ZSQoZmllbGQpLCBtaXhWYWx1ZSIsCisgIHRlc3RGdW5jOiAiJChmdW5jKSgkKHR5cGUpLCAkKHR5
cGUpLCBmbG9hdCkiLAorICBlbXVGdW5jOiBbCisgICAgImZsb2F0ICQoZnVuYylfYmFzZShmbG9h
dCBzdGFydFZhbHVlLCBmbG9hdCBlbmRWYWx1ZSwgZmxvYXQgbWl4VmFsdWUpIHsiLAorICAgICIg
IHJldHVybiBzdGFydFZhbHVlICogKDEuMCAtIG1peFZhbHVlKSArIGVuZFZhbHVlICogbWl4VmFs
dWU7IiwKKyAgICAifSJdLmpvaW4oIlxuIiksCisgIGdyaWRSZXM6IDgsCisgIHRlc3RzOiBbCisg
ICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgxLjAsIDAuMCwgJChp
bnB1dCkueCksIiwKKyAgICAgIiAgICAoJChmdW5jKSgtMi4wLCAzLjAsICQoaW5wdXQpLnkpICsg
Mi4wKSAvIDUuMCwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIp
LAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykodmVjMigxLCAt
MiksICB2ZWMyKDAsIDIpLCAkKGlucHV0KS56KSwgIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2lu
KCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykodmVj
MygxLCAtMiwgLTEpLCB2ZWMzKDAsIDIsIDMpLCAkKGlucHV0KS55KSwiLAorICAgICAiICAgIDEp
OyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSAiLAorICAgICAiICAgICQoZnVuYyko
dmVjNCgxLCAtMiwgLTEsIDAuNSksIHZlYzQoMCwgMiwgMywgMSksICQoaW5wdXQpLncpOyIKKyAg
ICBdLmpvaW4oIlxuIikKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLW1peC1nZW50eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLW1peC1nZW50eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZhMzMzMGU3ZTgwNTdlNTRmN2Vh
YmY2ZmMyNjcyOTIyMDUyZGRhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2ds
c2wtZnVuY3Rpb24tbWl4LWdlbnR5cGUuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIG1peC1nZW50
eXBlIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xHZW5lcmF0b3IucnVuRmVh
dHVyZVRlc3QoeworICBmZWF0dXJlOiAibWl4IiwKKyAgYXJnczogIiQodHlwZSkgc3RhcnRWYWx1
ZSwgJCh0eXBlKSBlbmRWYWx1ZSwgJCh0eXBlKSBtaXhWYWx1ZSIsCisgIGJhc2VBcmdzOiAic3Rh
cnRWYWx1ZSQoZmllbGQpLCBlbmRWYWx1ZSQoZmllbGQpLCBtaXhWYWx1ZSQoZmllbGQpIiwKKyAg
dGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksICQodHlwZSksICQodHlwZSkpIiwKKyAgZW11RnVu
YzogWworICAgICJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgc3RhcnRWYWx1ZSwgZmxvYXQgZW5k
VmFsdWUsIGZsb2F0IG1peFZhbHVlKSB7IiwKKyAgICAiICByZXR1cm4gc3RhcnRWYWx1ZSAqICgx
LjAgLSBtaXhWYWx1ZSkgKyBlbmRWYWx1ZSAqIG1peFZhbHVlOyIsCisgICAgIn0iXS5qb2luKCJc
biIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgi
LAorICAgICAiICAgICQoZnVuYykoMS4wLCAwLjAsICQoaW5wdXQpLngpLCIsCisgICAgICIgICAg
KCQoZnVuYykoLTIuMCwgMy4wLCAkKGlucHV0KS55KSArIDIuMCkgLyA1LjAsIiwKKyAgICAgIiAg
ICAwLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZl
YzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKHZlYzIoMSwgLTIpLCAgdmVjMigwLCAyKSwgJChpbnB1
dCkueHkpLCAiLAorICAgICAiICAgIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1
dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSh2ZWMzKDEsIC0yLCAtMSksIHZlYzMoMCwg
MiwgMyksICQoaW5wdXQpLnh5eiksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAg
IFsiJChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKHZlYzQoMSwgLTIsIC0xLCAwLjUp
LCB2ZWM0KDAsIDIsIDMsIDEpLCAkKGlucHV0KSk7IgorICAgIF0uam9pbigiXG4iKQorICBdCit9
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbW9kLWZs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLW1vZC1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzYmNmNzY3MTVjODBiMjFhOGE0Y2U1ZjcxZTJlNjEzYjcyZDIyMmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLW1vZC1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsNTMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkdMU0wgbW9kLWZsb2F0IGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2Vu
ZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK0dMU0xHZW5lcmF0b3IucnVuRmVhdHVyZVRlc3QoeworICBmZWF0dXJlOiAibW9kIiwK
KyAgYXJnczogIiQodHlwZSkgdmFsdWUsIGZsb2F0IGRpdmlzb3IiLAorICBiYXNlQXJnczogInZh
bHVlJChmaWVsZCksIGRpdmlzb3IiLAorICB0ZXN0RnVuYzogIiQoZnVuYykoJChhcmcwKSwgZmxv
YXQpIiwKKyAgZnJhZ21lbnRUb2xlcmFuY2U6IDEsCisgIGVtdUZ1bmM6IFsiZmxvYXQgJChmdW5j
KV9iYXNlKGZsb2F0IHZhbHVlLCBmbG9hdCBkaXZpc29yKSB7IiwKKyAgICAgICAgICAgICIgIHJl
dHVybiB2YWx1ZSAtIGRpdmlzb3IgKiBmbG9vcih2YWx1ZSAvIGRpdmlzb3IpOyIsCisgICAgICAg
ICAgICAifSJdLmpvaW4oIlxuIiksCisgIGdyaWRSZXM6IDgsCisgIHRlc3RzOiBbCisgICAgWyIk
KG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54ICogNi4wIC0g
My4wLCAxLjUpIC8gMS41LCIsCisgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS55ICogNi4wIC0g
My4wLCAxLjUpIC8gMS41LCIsCisgICAgICIgICAgMCwiLAorICAgICAiICAgIDEpOyJdLmpvaW4o
IlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgkKGlu
cHV0KS54eSAqIDYuMCAtIHZlYzIoMywgMyksIDEuNSkgLyAxLjUsIiwKKyAgICAgIiAgICAwLCAx
KTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQo
ZnVuYykoJChpbnB1dCkueHl6ICogNi4wIC0gdmVjMygzLCAzLCAzKSwgMS41KSAvIDEuNSwiLAor
ICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSAiLAorICAgICAi
ICAgICQoZnVuYykoJChpbnB1dCkgKiA2LjAgLSB2ZWM0KDMsIDMsIDMsIDMpLCAxLjUpIC8gMS41
OyJdLmpvaW4oIlxuIikKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLW1vZC1nZW50eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLW1vZC1nZW50eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1NjIzMDBiOWM2ZGM0MjE3YTRh
YmI0ZTU0YzYyYWNiNzk3M2NjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2ds
c2wtZnVuY3Rpb24tbW9kLWdlbnR5cGUuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIG1vZC1nZW50
eXBlIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xHZW5lcmF0b3IucnVuRmVh
dHVyZVRlc3QoeworICBmZWF0dXJlOiAibW9kIiwKKyAgYXJnczogIiQodHlwZSkgdmFsdWUsICQo
dHlwZSkgZGl2aXNvciIsCisgIGJhc2VBcmdzOiAidmFsdWUkKGZpZWxkKSwgZGl2aXNvciQoZmll
bGQpIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksICQodHlwZSkpIiwKKyAgZW11RnVu
YzogWyJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgdmFsdWUsIGZsb2F0IGRpdmlzb3IpIHsiLAor
ICAgICAgICAgICAgIiAgcmV0dXJuIHZhbHVlIC0gZGl2aXNvciAqIGZsb29yKHZhbHVlIC8gZGl2
aXNvcik7IiwKKyAgICAgICAgICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3JpZFJlczogOCwKKyAg
dG9sZXJhbmNlOiAxLAorICB0ZXN0czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueCAqIDYuMCAtIDMuMCwgMS41KSAvIDEuNSwiLAorICAg
ICAiICAgICQoZnVuYykoJChpbnB1dCkueSAqIDEwLjAgLSA1LjAsIDIuMSkgLyAyLjEsIiwKKyAg
ICAgIiAgICAwLCIsCisgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0
KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnh5ICogdmVjMig2LCAxMCkg
LSB2ZWMyKDMsIDUpLCAiLAorICAgICAiICAgICAgIHZlYzIoMS41LCAyLjEpKSAvIHZlYzIoMS41
LCAyLjEpLCIsCisgICAgICIgICAgMCwgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0
KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnh5eiAqIHZlYzMoNiwgMTAs
IDgpIC0gdmVjMygzLCA1LCA0KSwgIiwKKyAgICAgIiAgICAgICB2ZWMzKDEuNSwgMi4xLCAzLjIp
KSAvIHZlYzMoMS41LCAyLjEsIDMuMiksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAor
ICAgIFsiJChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpICogdmVjNCg2
LCAxMCwgOCwgNCkgLSB2ZWM0KDMsIDUsIDQsIDIpLCIsCisgICAgICIgICAgICAgdmVjNCgxLjUs
IDIuMSwgMy4yLCAxLjEpKSAvIHZlYzQoMS41LCAyLjEsIDMuMiwgMS4xKTsiXS5qb2luKCJcbiIp
CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlv
bi1ub3JtYWxpemUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbm9ybWFsaXpl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmQ1Zjg4NDRkOWRmMTUwN2I2NDk4MDI2NmQzMzBiYmZhOTJiYTNk
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tbm9ybWFs
aXplLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBub3JtYWxpemUgZnVuY3Rpb24gdGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6
ICJub3JtYWxpemUiLAorICBhcmdzOiAiJCh0eXBlKSB2YWx1ZSIsCisgIHRlc3RGdW5jOiAiJChm
dW5jKSgkKHR5cGUpKSIsCisgIHNpbXBsZUVtdTogWworICAgICAgIiQodHlwZSkgJChmdW5jKV9l
bXUoJChhcmdzKSkgeyIsCisgICAgICAiICAgcmV0dXJuIHZhbHVlIC8gbGVuZ3RoKHZhbHVlKTsi
LAorICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0b2xlcmFuY2U6IDEs
CisgIHRlc3RzOiBbCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5j
KSgiLAorICAgICAiICAgICAgICAkKGlucHV0KS54ICogOC4wIC0gNC4xKSAqIDAuNSArIDAuNSwi
LAorICAgICAiICAgIDAuNSwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2lu
KCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoIiwK
KyAgICAgIiAgICAgICAgJChpbnB1dCkueHkgKiA4LjAgLSA0LjEpICogMC41ICsgMC41LCIsCisg
ICAgICIgICAgMCwgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwK
KyAgICAgIiAgICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnh5eiAqIDguMCAt
IDQuMSkgKiAwLjUgKyAwLjUsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsi
JChvdXRwdXQpID0gIiwKKyAgICAgIiAgICAkKGZ1bmMpKCIsCisgICAgICIgICAgICAgIHZlYzQo
JChpbnB1dCkueHl6LCAwKSAqIDguMCAtIDQuMSkgKiAwLjUgKyAwLjUgKyB2ZWM0KDAsMCwwLDAu
NSk7IiwKKyAgICBdLmpvaW4oIlxuIikKKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tcmVmbGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMv
Z2xzbC1mdW5jdGlvbi1yZWZsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBkOWU1NTdmN2JiMzA4ODg2
NDU0MGM5YTMzMDliM2Q4YjZjYWQ5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25z
L2dsc2wtZnVuY3Rpb24tcmVmbGVjdC5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgcmVmbGVjdCBm
dW5jdGlvbiB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9nbHNsLWdlbmVyYXRvci5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMR2VuZXJhdG9yLnJ1bkZlYXR1cmVU
ZXN0KHsKKyAgZmVhdHVyZTogInJlZmxlY3QiLAorICBhcmdzOiAiJCh0eXBlKSBJLCAkKHR5cGUp
IE4iLAorICBiYXNlQXJnczogInZhbHVlJChmaWVsZCkiLAorICB0ZXN0RnVuYzogIiQoZnVuYyko
JCh0eXBlKSwkKHR5cGUpKSIsCisgIHNpbXBsZUVtdTogWworICAgICAgIiQodHlwZSkgJChmdW5j
KV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAiICAgcmV0dXJuIEkgLSAyLjAgKiBkb3QoTiwgSSkg
KiBOOyIsCisgICAgICAifSJdLmpvaW4oIlxuIiksCisgIGdyaWRSZXM6IDgsCisgIHRlc3RzOiBb
CisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSgiLAorICAgICAi
ICAgICAgICAkKGlucHV0KS54ICogMi4wIC0gMS4wLCIsCisgICAgICIgICAgICAgICQoaW5wdXQp
LnkgKiAyLjAgLSAxLjApLCIsCisgICAgICIgICAgMCwiLAorICAgICAiICAgIDAsIiwKKyAgICAg
IiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAi
ICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkueHkgKiAyLjAgLSAxLjAsIiwK
KyAgICAgIiAgICAgICAgJChpbnB1dCkueXogKiAyLjAgLSAxLjApLCIsCisgICAgICIgICAgMCwg
MSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAk
KGZ1bmMpKCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLnh5eiAqIDIuMCAtIDEuMCwiLAorICAg
ICAiICAgICAgICAkKGlucHV0KS55encgKiAyLjAgLSAxLjApLCIsCisgICAgICIgICAgMSk7Il0u
am9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIsCisgICAgICIgICAgJChmdW5jKSgiLAor
ICAgICAiICAgICAgICAkKGlucHV0KS54eXp3ICogMi4wIC0gMS4wLCIsCisgICAgICIgICAgICAg
ICQoaW5wdXQpLnl6d3ggKiAyLjAgLSAxLjApOyIKKyAgICBdLmpvaW4oIlxuIikKKyAgXQorfSk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1yZWZyYWN0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXJlZnJhY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZWU0M2IyZjYwYzUyZGY1MzU1NTJhZmI5ZjkzM2ViZDgxOTY5ODg2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1yZWZyYWN0Lmh0bWwKQEAgLTAsMCAr
MSw3MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+R0xTTCByZWZyYWN0IGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xH
ZW5lcmF0b3IucnVuRmVhdHVyZVRlc3QoeworICBmZWF0dXJlOiAicmVmcmFjdCIsCisgIGFyZ3M6
ICIkKHR5cGUpIEksICQodHlwZSkgTiwgZmxvYXQgZXRhIiwKKyAgYmFzZUFyZ3M6ICJ2YWx1ZSQo
ZmllbGQpIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksJCh0eXBlKSxmbG9hdCkiLAor
ICBzaW1wbGVFbXU6IFsKKyAgICAgICIkKHR5cGUpICQoZnVuYylfZW11KCQoYXJncykpIHsiLAor
ICAgICAgIiAgIGZsb2F0IGRvdE5JID0gZG90KE4sIEkpOyIsCisgICAgICAiICAgZmxvYXQgayA9
IDEuMCAtIGV0YSAqIGV0YSAqICgxLjAgLSBkb3ROSSAqIGRvdE5JKTsiLAorICAgICAgIiAgIGlm
IChrIDwgMC4wKSB7IiwKKyAgICAgICIgICAgIHJldHVybiAkKHR5cGUpKDAuMCk7IiwKKyAgICAg
ICIgICB9IiwKKyAgICAgICIgICByZXR1cm4gZXRhICogSSAtIChldGEgKiBkb3ROSSAqIHNxcnQo
aykpICogTjsiLAorICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0
czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoIiwKKyAg
ICAgIiAgICAgICAgJChpbnB1dCkueCAqIDIuMCAtIDEuMCwiLAorICAgICAiICAgICAgICAkKGlu
cHV0KS55ICogMi4wIC0gMS4wLCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLncpLCIsCisgICAg
ICIgICAgMCwiLAorICAgICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAor
ICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoIiwKKyAgICAgIiAg
ICAgICAgJChpbnB1dCkueHkgKiAyLjAgLSAxLjAsIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCku
eXogKiAyLjAgLSAxLjAsIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkudyksIiwKKyAgICAgIiAg
ICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAi
ICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCkueHl6ICogMi4wIC0gMS4wLCIs
CisgICAgICIgICAgICAgICQoaW5wdXQpLnl6dyAqIDIuMCAtIDEuMCwiLAorICAgICAiICAgICAg
ICAkKGlucHV0KS53KSwiLAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91
dHB1dCkgPSAiLAorICAgICAiICAgICQoZnVuYykoIiwKKyAgICAgIiAgICAgICAgJChpbnB1dCku
eHl6dyAqIDIuMCAtIDEuMCwiLAorICAgICAiICAgICAgICAkKGlucHV0KS55end4ICogMi4wIC0g
MS4wLCIsCisgICAgICIgICAgICAgICQoaW5wdXQpLncpOyIKKyAgICBdLmpvaW4oIlxuIikKKyAg
XQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zaWdu
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNpZ24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTg1YzY0N2VhZGIxODQyM2FiMDgzOGVhMThhMDFjNDdkNjRkOTgyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zaWduLmh0bWwKQEAgLTAsMCArMSw1
MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+R0xTTCBzaWduIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xHZW5lcmF0
b3IucnVuRmVhdHVyZVRlc3QoeworICBmZWF0dXJlOiAic2lnbiIsCisgIHRlc3RGdW5jOiAiJChm
dW5jKSgkKGFyZzApKSIsCisgIGVtdUZ1bmM6IFsiZmxvYXQgJChmdW5jKV9iYXNlKGZsb2F0IHZh
bHVlKSB7IiwKKyAgICAgICAgICAgICIgIGlmICh2YWx1ZSA9PSAwLjApIHJldHVybiAwLjA7IiwK
KyAgICAgICAgICAgICIgIHJldHVybiB2YWx1ZSA+IDAuMCA/IDEuMCA6IC0xLjA7IiwKKyAgICAg
ICAgICAgICJ9Il0uam9pbigiXG4iKSwKKyAgZ3JpZFJlczogNCwKKyAgdGVzdHM6IFsKKyAgICBb
IiQob3V0cHV0KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnggKiAyLjAg
LSAxLjApICogMC41ICsgMC41LCIsCisgICAgICIgICAgMC41LCIsCisgICAgICIgICAgMCwiLAor
ICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisg
ICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIDIuMCAtIHZlYzIoMSwgMSkpICogMC41ICsg
dmVjMigwLjUsIDAuNSksIiwKKyAgICAgIiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsi
JChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoJChpbnB1dCkueHl6ICogMi4w
IC0gdmVjMygxLCAxLCAxKSkgKiAwLjUgKyAiLAorICAgICAiICAgICAgIHZlYzMoMC41LCAwLjUs
IDAuNSksIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0g
IiwKKyAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpICogMi4wIC0gdmVjNCgxLCAxLCAxLCAxKSkg
KiAwLjUgKyAiLAorICAgICAiICAgICAgIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KTsiXS5qb2lu
KCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVu
Y3Rpb24tc2luLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNpbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIyN2U2YWNlMWEwOWVkZDNlZGM3OWFmYTk2OWUyYTBkYWU5NzMxMzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNpbi5odG1sCkBAIC0w
LDAgKzEsOTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPkdMU0wgc2luIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFy
IHBpQ29uc3RhbnRzID0gWworICAiY29uc3QgZmxvYXQga1BJICAgICA9IDMuMTQxNTkyNjUzNTg5
NzkzMjM4NDY7IiwKKyAgImNvbnN0IGZsb2F0IGtIYWxmUEkgPSAoa1BJICogMC41KTsiLAorICAi
Y29uc3QgZmxvYXQgazJQSSAgICA9IChrUEkgKiAyLjApOyIKK10uam9pbigiXG4iKTsKKwordmFy
IGtQSSA9IE1hdGguUEk7Cit2YXIga0hhbGZQSSA9IE1hdGguUEkgKiAwLjU7Cit2YXIgazJQSSA9
IE1hdGguUEkgKiAyLjA7Cit2YXIgc2luID0gTWF0aC5zaW47ICAvLyBzaG9ydGhhbmQKKworR0xT
TEdlbmVyYXRvci5ydW5SZWZlcmVuY2VJbWFnZVRlc3QoeworICBmZWF0dXJlOiAic2luIiwKKyAg
YXJnczogIiQodHlwZSkgdmFsdWUiLAorICB0ZXN0RnVuYzogIiQoZnVuYykoJCh0eXBlKSkiLAor
ICBncmlkUmVzOiA4LAorICB0b2xlcmFuY2U6IDQsCisgIGV4dHJhOiBwaUNvbnN0YW50cywKKyAg
dGVzdHM6IFsKKyAgICB7CisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAg
ICAgICAgICAgICAgIiAgICAkKGZ1bmMpKCQoaW5wdXQpLnggKiBrSGFsZlBJICsga0hhbGZQSSks
IiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS55ICoga0hhbGZQSSksIiwK
KyAgICAgICAgICAgICAgICIgICAgMCwiLAorICAgICAgICAgICAgICAgIiAgICAxKTsiXS5qb2lu
KCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3KSB7CisgICAgICAg
IHJldHVybiBbIHNpbih4ICoga0hhbGZQSSArIGtIYWxmUEkpLAorICAgICAgICAgICAgICAgICBz
aW4oeSAqIGtIYWxmUEkpLAorICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAx
IF07CisgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgc291cmNlOiBbIiQob3V0cHV0KSA9
IHZlYzQoIiwKKyAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgkKGlucHV0KS54eSAqIHZlYzIo
a1BJLCBrMlBJKSkgKiAwLjUgKyB2ZWMyKDAuNSwgMC41KSwiLAorICAgICAgICAgICAgICAgIiAg
ICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6
LCB3KSB7CisgICAgICAgIHJldHVybiBbIHNpbih4ICoga1BJKSAqIDAuNSArIDAuNSwKKyAgICAg
ICAgICAgICAgICAgc2luKHkgKiBrMlBJKSAqIDAuNSArIDAuNSwKKyAgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICAgMSBdOworICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAg
IHNvdXJjZTogWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisgICAgICAgICAgICAgICAiICAgICQoZnVu
YykoJChpbnB1dCkueHl6ICogdmVjMyhrUEksIGsyUEksIDQuMCkpICogIiwKKyAgICAgICAgICAg
ICAgICIgICAgMC41ICsgdmVjMygwLjUsIDAuNSwgMC41KSwiLAorICAgICAgICAgICAgICAgIiAg
ICAxKTsiXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlvbih4LCB5LCB6LCB3
KSB7CisgICAgICAgIHJldHVybiBbIHNpbih4ICoga1BJKSAqIDAuNSArIDAuNSwKKyAgICAgICAg
ICAgICAgICAgc2luKHkgKiBrMlBJKSAqIDAuNSArIDAuNSwKKyAgICAgICAgICAgICAgICAgc2lu
KHogKiA0LjApICogMC41ICsgMC41LAorICAgICAgICAgICAgICAgICAxIF07CisgICAgICB9LAor
ICAgIH0sCisgICAgeworICAgICAgc291cmNlOiBbIiQob3V0cHV0KSA9ICIsCisgICAgICAgICAg
ICAgICAiICAgICQoZnVuYykoJChpbnB1dCkgKiB2ZWM0KGsyUEksIDQuMCwga0hhbGZQSSwga1BJ
KSkgKiIsCisgICAgICAgICAgICAgICAiICAgIDAuNSArIHZlYzQoMC41LCAwLjUsIDAuNSwgMSk7
IiwKKyAgICAgICAgICAgICAgXS5qb2luKCJcbiIpLAorICAgICAgZ2VuZXJhdG9yOiBmdW5jdGlv
bih4LCB5LCB6LCB3KSB7CisgICAgICAgIHJldHVybiBbIHNpbih4ICogazJQSSkgKiAwLjUgKyAw
LjUsCisgICAgICAgICAgICAgICAgIHNpbih5ICogNC4wKSAqIDAuNSArIDAuNSwKKyAgICAgICAg
ICAgICAgICAgc2luKHogKiBrSGFsZlBJKSAqIDAuNSArIDAuNSwKKyAgICAgICAgICAgICAgICAg
c2luKHcgKiBrUEkpICogMC41ICsgMSBdOworICAgICAgfSwKKyAgICB9LAorICBdCit9KTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5NjNlYzBmYjdmMTFlNjY5YzVhYjBlOWUzYzFjMGFkN2M0ODc4MzgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0
ZXAtZmxvYXQuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHNtb290aHN0ZXAtZmxvYXQgZnVuY3Rp
b24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluLCBt
YXgpIHsKKyAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5taW4odmFsdWUsIG1heCkpOworfQor
CitmdW5jdGlvbiBzbW9vdGhzdGVwKGVkZ2UwLCBlZGdlMSwgdmFsdWUpIHsKKyAgdmFyIHQgPSBj
bGFtcCgodmFsdWUgLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdlMCksIDAsIDEpOworICByZXR1cm4g
dCAqIHQgKiAoMyAtIDIgKiB0KTsKK30KKworR0xTTEdlbmVyYXRvci5ydW5SZWZlcmVuY2VJbWFn
ZVRlc3QoeworICBmZWF0dXJlOiAic21vb3Roc3RlcCIsCisgIGFyZ3M6ICJmbG9hdCBlZGdlMCwg
ZmxvYXQgZWRnZTEsICQodHlwZSkgdmFsdWUiLAorICB0ZXN0RnVuYzogIiQoZnVuYykoZmxvYXQs
IGZsb2F0LCAkKHR5cGUpKSIsCisgIGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTogNCwKKyAgdGVz
dHM6IFsKKyAgICB7CisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAg
ICAgICAgICAiICAgICQoZnVuYykoMC4zLCAwLjcsICQoaW5wdXQpLngpLCIsCisgICAgICAgICAg
ICAgICIgICAgJChmdW5jKSgwLjIsIDAuOCwgJChpbnB1dCkueSksIiwKKyAgICAgICAgICAgICAg
IiAgICAwLCIsCisgICAgICAgICAgICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICAgIGdl
bmVyYXRvcjogZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICByZXR1cm4gWyBzbW9vdGhz
dGVwKDAuMywgMC43LCB4KSwKKyAgICAgICAgICAgICAgICAgc21vb3Roc3RlcCgwLjIsIDAuOCwg
eSksCisgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgIDEgXTsKKyAgICAgIH0s
CisgICAgfSwKKyAgICB7CisgICAgICBzb3VyY2U6IFsgIiQob3V0cHV0KSA9IHZlYzQoIiwKKyAg
ICAgICAgICAgICAgICAiICAgICQoZnVuYykoMC40LCAwLjgsICQoaW5wdXQpLnh5KSwiLAorICAg
ICAgICAgICAgICAgICIgICAgMCwgMSk7Il0uam9pbigiXG4iKSwKKyAgICAgIGdlbmVyYXRvcjog
ZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICByZXR1cm4gWyBzbW9vdGhzdGVwKDAuNCwg
MC44LCB4KSwKKyAgICAgICAgICAgICAgICAgc21vb3Roc3RlcCgwLjQsIDAuOCwgeSksCisgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgIDEgXTsKKyAgICAgIH0sCisgICAgfSwK
KyAgICB7CisgICAgICAvLyBGSVhNRTogdGhpcyB0ZXN0IHNlZW1zIHRvIG5lZWQgYSBoaWdoZXIg
dG9sZXJhbmNlIHdoZW4gcnVuIGluIGEgdmVydGV4IHNoYWRlci4KKyAgICAgIHNvdXJjZTogWyAi
JChvdXRwdXQpID0gdmVjNCgiLAorICAgICAgICAgICAgICAgICIgICAgJChmdW5jKSgwLjMsIDAu
NywgJChpbnB1dCkueHl6KSwiLAorICAgICAgICAgICAgICAgICIgICAgMSk7Il0uam9pbigiXG4i
KSwKKyAgICAgIGdlbmVyYXRvcjogZnVuY3Rpb24oeCwgeSwgeiwgdykgeworICAgICAgICByZXR1
cm4gWyBzbW9vdGhzdGVwKDAuMywgMC43LCB4KSwKKyAgICAgICAgICAgICAgICAgc21vb3Roc3Rl
cCgwLjMsIDAuNywgeSksCisgICAgICAgICAgICAgICAgIHNtb290aHN0ZXAoMC4zLCAwLjcsIHop
LAorICAgICAgICAgICAgICAgICAxIF07CisgICAgICB9LAorICAgICAgdG9sZXJhbmNlOiAxMiwK
KyAgICAgIGZyYWdtZW50VG9sZXJhbmNlOiAzLAorICAgIH0sCisgICAgeworICAgICAgLy8gRklY
TUU6IHRoaXMgdGVzdCBzZWVtcyB0byBuZWVkIGEgaGlnaGVyIHRvbGVyYW5jZSB3aGVuIHJ1biBp
biBhIHZlcnRleCBzaGFkZXIuCisgICAgICBzb3VyY2U6IFsiJChvdXRwdXQpID0gIiwKKyAgICAg
ICAgICAgICAgICIgICAgJChmdW5jKSgwLjMsIDAuOSwgJChpbnB1dCkpOyJdLmpvaW4oIlxuIiks
CisgICAgICBnZW5lcmF0b3I6IGZ1bmN0aW9uKHgsIHksIHosIHcpIHsKKyAgICAgICAgcmV0dXJu
IFsgc21vb3Roc3RlcCgwLjMsIDAuOSwgeCksCisgICAgICAgICAgICAgICAgIHNtb290aHN0ZXAo
MC4zLCAwLjksIHkpLAorICAgICAgICAgICAgICAgICBzbW9vdGhzdGVwKDAuMywgMC45LCB6KSwK
KyAgICAgICAgICAgICAgICAgc21vb3Roc3RlcCgwLjMsIDAuOSwgdykgXTsKKyAgICAgIH0sCisg
ICAgICB0b2xlcmFuY2U6IDcsCisgICAgICBmcmFnbWVudFRvbGVyYW5jZTogMywKKyAgICB9LAor
ICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24t
c21vb3Roc3RlcC1nZW50eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNt
b290aHN0ZXAtZ2VudHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0Yzk5MmVkNjQ0NWZiMmNjNzgyZWE4
MjVhMGMyMGI5NzNmOWEyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNs
LWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgc21v
b3Roc3RlcC1nZW50eXBlIGZ1bmN0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10
ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtZ2VuZXJhdG9yLmpzIj4gPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworR0xTTEdl
bmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJzbW9vdGhzdGVwIiwKKyAgYXJn
czogIiQodHlwZSkgZWRnZTAsICQodHlwZSkgZWRnZTEsICQodHlwZSkgdmFsdWUiLAorICBiYXNl
QXJnczogImVkZ2UwJChmaWVsZCksIGVkZ2UxJChmaWVsZCksIHZhbHVlJChmaWVsZCkiLAorICB0
ZXN0RnVuYzogIiQoZnVuYykoJCh0eXBlKSwgJCh0eXBlKSwgJCh0eXBlKSkiLAorICBlbXVGdW5j
OiBbImZsb2F0ICQoZnVuYylfYmFzZShmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHZh
bHVlKSB7IiwKKyAgICAgICAgICAgICIgIGZsb2F0IHQgPSBjbGFtcCgodmFsdWUgLSBlZGdlMCkg
LyAoZWRnZTEgLSBlZGdlMCksIDAuMCwgMS4wKTsiLAorICAgICAgICAgICAgIiAgcmV0dXJuIHQg
KiB0ICogKDMuMCAtIDIuMCAqIHQpOyIsCisgICAgICAgICAgICAifSJdLmpvaW4oIlxuIiksCisg
IGdyaWRSZXM6IDgsCisgIHRvbGVyYW5jZTogMSwKKyAgdGVzdHM6IFsKKyAgICBbIiQob3V0cHV0
KSA9IHZlYzQoIiwKKyAgICAgIiAgICAkKGZ1bmMpKDAuMywgMC43LCAkKGlucHV0KS54KSwiLAor
ICAgICAiICAgICQoZnVuYykoMC4yLCAwLjgsICQoaW5wdXQpLnkpLCIsCisgICAgICIgICAgMCwi
LAorICAgICAiICAgIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIs
CisgICAgICIgICAgJChmdW5jKSh2ZWMyKDAuNCwgMC42KSwgdmVjMigwLjgsIDAuOSksICQoaW5w
dXQpLnh5KSwiLAorICAgICAiICAgIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1
dCkgPSB2ZWM0KCIsCisgICAgICIgICAgJChmdW5jKSh2ZWMzKDAuMywgMC41LCAwLjcpLCB2ZWMz
KDAuNywgMC45LCAxLjApLCAkKGlucHV0KS54eXopLCIsCisgICAgICIgICAgMSk7Il0uam9pbigi
XG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIsCisgICAgICIgICAgJChmdW5jKSh2ZWM0KDAuMywg
MC40LCAwLjUsIDAuMiksICIsCisgICAgICIgICAgICAgICAgICB2ZWM0KDAuNywgMC42LCAwLjks
IDAuOCksICIsCisgICAgICIgICAgICAgICAgICAkKGlucHV0KSk7Il0uam9pbigiXG4iKQorICBd
Cit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXN0ZXAt
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc3RlcC1mbG9hdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA5ZjZlMzg2MTI5YzBmN2I1ZWQ1NzdmY2VkZDUyYWIyMDM0N2E4NGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXN0ZXAtZmxvYXQu
aHRtbApAQCAtMCwwICsxLDUyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHN0ZXAtZmxvYXQgZnVuY3Rpb24gdGVzdDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJz
dGVwIiwKKyAgYXJnczogImZsb2F0IGVkZ2UsICQodHlwZSkgdmFsdWUiLAorICBiYXNlQXJnczog
ImVkZ2UsIHZhbHVlJChmaWVsZCkiLAorICB0ZXN0RnVuYzogIiQoZnVuYykoZmxvYXQsICQodHlw
ZSkpIiwKKyAgZW11RnVuYzogWyJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgZWRnZSwgZmxvYXQg
dmFsdWUpIHsiLAorICAgICAgICAgICAgIiAgcmV0dXJuIHZhbHVlIDwgZWRnZSA/IDAuMCA6IDEu
MDsiLAorICAgICAgICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0
czogWworICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoMC4zLCAk
KGlucHV0KS54KSwiLAorICAgICAiICAgICQoZnVuYykoMC43LCAkKGlucHV0KS55KSwiLAorICAg
ICAiICAgIDAsIiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQp
ID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoMC40LCAkKGlucHV0KS54eSksIiwKKyAgICAg
IiAgICAwLCAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAg
ICAiICAgICQoZnVuYykoMC40LCAkKGlucHV0KS54eXopLCIsCisgICAgICIgICAgMSk7Il0uam9p
bigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIsCisgICAgICIgICAgJChmdW5jKSgwLjQsICQo
aW5wdXQpKTsiXS5qb2luKCJcbiIpCisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9m
dW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zdGVwLWdlbnR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25z
L2dsc2wtZnVuY3Rpb24tc3RlcC1nZW50eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIyNjcyNjVmNjA3
Njk0ZTNmM2EwY2U3OGM2ZTBjNDhiYjBkOTdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvZnVu
Y3Rpb25zL2dsc2wtZnVuY3Rpb24tc3RlcC1nZW50eXBlLmh0bWwKQEAgLTAsMCArMSw1MSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xT
TCBzdGVwLWdlbnR5cGUgZnVuY3Rpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTEdlbmVy
YXRvci5ydW5GZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJzdGVwIiwKKyAgYXJnczogIiQodHlw
ZSkgZWRnZSwgJCh0eXBlKSB2YWx1ZSIsCisgIGJhc2VBcmdzOiAiZWRnZSQoZmllbGQpLCB2YWx1
ZSQoZmllbGQpIiwKKyAgdGVzdEZ1bmM6ICIkKGZ1bmMpKCQodHlwZSksICQodHlwZSkpIiwKKyAg
ZW11RnVuYzogWyJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxvYXQgZWRnZSwgZmxvYXQgdmFsdWUpIHsi
LAorICAgICAgICAgICAgIiAgcmV0dXJuIHZhbHVlIDwgZWRnZSA/IDAuMCA6IDEuMDsiLAorICAg
ICAgICAgICAgIn0iXS5qb2luKCJcbiIpLAorICBncmlkUmVzOiA4LAorICB0ZXN0czogWworICAg
IFsiJChvdXRwdXQpID0gdmVjNCgiLAorICAgICAiICAgICQoZnVuYykoMC4zLCAkKGlucHV0KS54
KSwiLAorICAgICAiICAgICQoZnVuYykoMC43LCAkKGlucHV0KS55KSwiLAorICAgICAiICAgIDAs
IiwKKyAgICAgIiAgICAxKTsiXS5qb2luKCJcbiIpLAorICAgIFsiJChvdXRwdXQpID0gdmVjNCgi
LAorICAgICAiICAgICQoZnVuYykodmVjMigwLjQsIDAuNiksICQoaW5wdXQpLnh5KSwiLAorICAg
ICAiICAgIDAsIDEpOyJdLmpvaW4oIlxuIiksCisgICAgWyIkKG91dHB1dCkgPSB2ZWM0KCIsCisg
ICAgICIgICAgJChmdW5jKSh2ZWMzKDAuMywgMC41LCAwLjcpLCAkKGlucHV0KS54eXopLCIsCisg
ICAgICIgICAgMSk7Il0uam9pbigiXG4iKSwKKyAgICBbIiQob3V0cHV0KSA9ICIsCisgICAgICIg
ICAgJChmdW5jKSggdmVjNCgwLjMsIDAuNCwgMC41LCAwLjIpLCAkKGlucHV0KSk7Il0uam9pbigi
XG4iKQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTFhY2YwZGFlMjgyNjY5NzYzNDFkYzRmNTMzNzBkNzA4YWQzZTQ0YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24uaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNM
IGZ1bmN0aW9uIHRlc3QgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTEdlbmVyYXRvci5ydW5G
ZWF0dXJlVGVzdCh7CisgIGZlYXR1cmU6ICJ0aGVfR0xTTF90ZXN0X2hhcm5lc3MiLAorICB0ZXN0
RnVuYzogInBhc3MgdGhyb3VnaCIsCisgIGVtdUZ1bmM6ICJmbG9hdCAkKGZ1bmMpX2Jhc2UoZmxv
YXQgdmFsdWUpIHsgcmV0dXJuIDAuMDsgfSIsCisgIGdyaWRSZXM6IDQsCisgIHRlc3RzOiBbCisg
ICAgICIkKG91dHB1dCkgPSB2ZWM0KCQoaW5wdXQpLngsIDAsIDAsIDEpOyIsCisgICAgICIkKG91
dHB1dCkgPSB2ZWM0KDAsICQoaW5wdXQpLnh5LCAxKTsiLAorICAgICAiJChvdXRwdXQpID0gdmVj
NCgkKGlucHV0KS54eXosIDEpOyIsCisgICAgICIkKG91dHB1dCkgPSAkKGlucHV0KTsiCisgIF0K
K30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50X2Zsb2F0LnZlcnQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2ludF9mbG9hdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjgwNTgzNGRjZDYyOTI2NmY5OWNiYmM1ZGExMmQ3YTYxOTQzMTAyMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvaW1wbGljaXQvYWRkX2ludF9mbG9hdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IGFk
ZGluZyBpbnRlZ2VyIHRvIGZsb2F0IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIGZs
b2F0IGYgPSAxLjAgKyAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9pbXBsaWNpdC9hZGRfaW50X21hdDIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50
X21hdDIudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWVkMzRjYzExZDE3ZWMxOGY5OWM0MzM5ZTRl
YzFlYWZiMDc5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pbnRfbWF0
Mi52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IGFkZGluZyBpbnRlZ2VyIHRvIG1hdDIgc2hvdWxkIGZh
aWwKK3ZvaWQgbWFpbigpCit7CisgICAgbWF0MiBmID0gbWF0MigxLjApICsgMTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5U
ZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2ludF9tYXQzLnZl
cnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2ludF9tYXQzLnZlcnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YTkyMWQ0MDEyZmNmNWEwNjVjMmNmOTI3OGZkNWViYjc5OWYxZGUyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50X21hdDMudmVydC5odG1sCkBAIC0wLDAgKzEsMzcg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10
ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBh
ZGRpbmcgaW50ZWdlciB0byBtYXQzIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIG1h
dDMgZiA9IG1hdDMoMS4wKSArIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2ltcGxpY2l0L2FkZF9pbnRfbWF0NC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fk
ZF9pbnRfbWF0NC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTM0ZDA5NjA0Y2YxNmFhNWYwMTY3
MWI1YzA3NmJkZWYxYTcwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2lu
dF9tYXQ0LnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3QgYWRkaW5nIGludGVnZXIgdG8gbWF0NCBzaG91
bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBtYXQ0IGYgPSBtYXQ0KDEuMCkgKyAxOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50X3Zl
YzIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50X3ZlYzIudmVydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5ODViNzdlNzQ1ZDE1ZTNkYjc1YzVkOGVkNGZlMzgxZWEzYTg0NDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pbnRfdmVjMi52ZXJ0Lmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0
dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRl
ciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBj
YXN0IGFkZGluZyBpbnRlZ2VyIHRvIHZlYzIgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7Cisg
ICAgdmVjMiBmID0gdmVjMigxLjAsIDIuMCkgKyAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaW50X3ZlYzMudmVydC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9p
bXBsaWNpdC9hZGRfaW50X3ZlYzMudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYjkwMjg3NjliMGU2
NzM1YjVhOTY3YzU1MDU0NmMyZjhiMGFlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxp
Y2l0L2FkZF9pbnRfdmVjMy52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IGFkZGluZyBpbnRlZ2VyIHRv
IHZlYzMgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMyBmID0gdmVjMygxLjAs
IDIuMCwgMy4wKSArIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2ltcGxpY2l0L2FkZF9pbnRfdmVjNC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pbnRf
dmVjNC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNjYTJkOTg4N2EwNjI4ZGYyOWI3MThjOWMxMzMx
NzFmNWNiYjFhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2ludF92ZWM0
LnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisKKy8vIGltcGxpY2l0IGNhc3QgYWRkaW5nIGludGVnZXIgdG8gdmVjNCBzaG91bGQgZmFp
bAordm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0IGYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCkg
KyAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9h
ZGRfaXZlYzJfdmVjMi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pdmVjMl92ZWMyLnZl
cnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NmNkNTRlYjVkYzExMDQ0MTRhZjIwMGM3MTExNzYzNzVmZTg3
MWFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaXZlYzJfdmVjMi52ZXJ0
Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNs
LWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
CisvLyBpbXBsaWNpdCBjYXN0IGFkZGluZyBpdmVjMiB0byB2ZWMyIHNob3VsZCBmYWlsCit2b2lk
IG1haW4oKQoreworICAgIHZlYzIgZiA9IHZlYzIoMS4wLCAyLjApICsgaXZlYzIoMSwgMik7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pdmVj
M192ZWMzLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYWRkX2l2ZWMzX3ZlYzMudmVydC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRmY2JlNjQxMTA2YWE1OTI1YWVkMjBiMTRjYTU5ZTJiZTk0YTljZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pdmVjM192ZWMzLnZlcnQuaHRtbApA
QCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVy
dGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGlt
cGxpY2l0IGNhc3QgYWRkaW5nIGl2ZWMzIHRvIHZlYzMgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigp
Cit7CisgICAgdmVjMyBmID0gdmVjMygxLjAsIDIuMCwgMy4wKSArIGl2ZWMzKDEsIDIsIDMpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaXZl
YzRfdmVjNC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2FkZF9pdmVjNF92ZWM0LnZlcnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NGM1NWJlNGY0NWUzODc5Mjc0MmVkMDRkNDgxNzY2MzgxMWQyZjliCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9hZGRfaXZlYzRfdmVjNC52ZXJ0Lmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZl
cnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBp
bXBsaWNpdCBjYXN0IGFkZGluZyBpdmVjNCB0byB2ZWM0IHNob3VsZCBmYWlsCit2b2lkIG1haW4o
KQoreworICAgIHZlYzQgZiA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKSArIGl2ZWM0KDEsIDIs
IDMsIDQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNp
dC9hc3NpZ25faW50X3RvX2Zsb2F0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYXNzaWduX2lu
dF90b19mbG9hdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmODM1ZTIxOGQwYWNmYThiYjBkNWRj
OGJmMmY5YTJlODU5MDYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYXNzaWdu
X2ludF90b19mbG9hdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IGFzc2luZyBpbnQgdG8gZmxvYXQg
c2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgZmxvYXQgZiA9IC0xMjM7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVu
VGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjMl90
b192ZWMyLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYXNzaWduX2l2ZWMyX3RvX3ZlYzIudmVy
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNjYWVkN2UwNDExMmU2MmIxYjE1OTRiNGIyZDA4ODdkYzI4Y2I1
MWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjMl90b192ZWMy
LnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisKKy8vIGltcGxpY2l0IGNhc3QgYXNzaWduaW5nIGl2ZWMyIHRvIHZlYzIgc2hvdWxkIGZh
aWwKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMiBmID0gaXZlYzIoMSwgMik7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjM190b192
ZWMzLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYXNzaWduX2l2ZWMzX3RvX3ZlYzMudmVydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM1ZjBlZTQwMjk0YTgyNTA0MDBmNDI0MzMwY2Y4MjViZWRjZDljOGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjM190b192ZWMzLnZl
cnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2ds
c2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CisKKy8vIGltcGxpY2l0IGNhc3QgYXNzaWduaW5nIGl2ZWMzIHRvIHZlYzMgc2hvdWxkIGZhaWwK
K3ZvaWQgbWFpbigpCit7CisgICAgdmVjMyBmID0gaXZlYzMoMSwgMiwgMyk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjNF90b192
ZWM0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvYXNzaWduX2l2ZWM0X3RvX3ZlYzQudmVydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3NDVhNTBmNTA3ZjRkM2FkMTZmYzQyZTFkNGRjN2E3MWQ5OGFhMjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Fzc2lnbl9pdmVjNF90b192ZWM0LnZl
cnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2ds
c2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CisKKy8vIGltcGxpY2l0IGNhc3QgYXNzaWduaW5nIGl2ZWM0IHRvIHZlYzQgc2hvdWxkIGZhaWwK
K3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCBmID0gaXZlYzQoMSwgMiwgMywgNCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVu
VGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2NvbnN0cnVjdF9zdHJ1
Y3QudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9jb25zdHJ1Y3Rfc3RydWN0LnZlcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNjJkYzczMWYzNDYzNzNmZDc4ZTBkYzg1ODM3Nzc3ZTZjZmFjZjU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9jb25zdHJ1Y3Rfc3RydWN0LnZlcnQuaHRtbApA
QCAtMCwwICsxLDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVy
dGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGlt
cGxpY2l0IGNhc3QgZnJvbSBpbnQgdG8gZmxvYXQgaW4gc3RydWN0IGluaXRpYWxpemVyIHNob3Vs
ZCBmYWlsCitzdHJ1Y3QgRm9vIHsKKyAgZmxvYXQgYmFyOworfTsKKwordm9pZCBtYWluKCkgewor
ICBGb28gZm9vID0gRm9vKDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50X2Zsb2F0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQv
ZGl2aWRlX2ludF9mbG9hdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAyYjJlOTY2OTgwODJhNGI1
MjI2YzAzOWRkZmFkMWVkYzJjMmMxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQv
ZGl2aWRlX2ludF9mbG9hdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGZsb2F0IGRpdmlkZWQg
YnkgaW50IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIGZsb2F0IGYgPSAxLjAgLyAx
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNl
VGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZp
ZGVfaW50X21hdDIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50X21hdDIudmVy
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjN2E1NDcyNDk5YWVhNDRhZTE5YmM0ODg4N2U4MWZmOTkyZjZi
NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfbWF0Mi52ZXJ0
Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNs
LWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
CisvLyBpbXBsaWNpdCBjYXN0IG9mIG1hdDIgZGl2aWRlZCBieSBpbnQgc2hvdWxkIGZhaWwKK3Zv
aWQgbWFpbigpCit7CisgICAgbWF0MiBmID0gbWF0MigxLjApIC8gMTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZGl2aWRlX2ludF9tYXQzLnZlcnQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvaW1wbGljaXQvZGl2aWRlX2ludF9tYXQzLnZlcnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYWQ4NTkzN2EyMzQ5MzMyMDFjZDk4YTgyMjk4N2I3MzRjYThmNjFlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50X21hdDMudmVydC5odG1sCkBAIC0wLDAgKzEs
MzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2Fz
dCBvZiBtYXQzIGRpdmlkZWQgYnkgaW50IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAg
IG1hdDMgZiA9IG1hdDMoMS4wKSAvIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfbWF0NC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxp
Y2l0L2RpdmlkZV9pbnRfbWF0NC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYyMjkwOTE5MTVmYTdl
ZTdmN2E5Mzg0MGU2NGE0NzQ4MDRmNTc1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGlj
aXQvZGl2aWRlX2ludF9tYXQ0LnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgbWF0NCBkaXZpZGVk
IGJ5IGludCBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBtYXQ0IGYgPSBtYXQ0KDEu
MCkgLyAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNp
dC9kaXZpZGVfaW50X3ZlYzIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50X3Zl
YzIudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NWNhM2UzNDFhNjgyMzM5MzNhNDE0NWQ0Zjk0NDdl
NTk2MWFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfdmVj
Mi52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIHZlYzIgZGl2aWRlZCBieSBpbnQgc2hvdWxkIGZh
aWwKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMiBmID0gdmVjMigxLjAsIDIuMCkgLyAxOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50
X3ZlYzMudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaW50X3ZlYzMudmVydC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZhODBiOTgzNmE1YmE2NTIwZDgzZjQ2YjQyYjI1YTViMmUyNDQ1ODYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfdmVjMy52ZXJ0Lmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZl
cnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBp
bXBsaWNpdCBjYXN0IG9mIHZlYzMgZGl2aWRlZCBieSBpbnQgc2hvdWxkIGZhaWwKK3ZvaWQgbWFp
bigpCit7CisgICAgdmVjMyBmID0gdmVjMygxLjAsIDIuMCwgMy4wKSAvIDE7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfdmVjNC52
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pbnRfdmVjNC52ZXJ0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTM2ZGUwNzNjMTQxYWFhYTc5YmY2Nzk2NDI3MjhkNThiMGMyMWMwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZGl2aWRlX2ludF92ZWM0LnZlcnQuaHRtbApAQCAtMCww
ICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZl
YXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hh
ZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0
IGNhc3Qgb2YgdmVjNCBkaXZpZGVkIGJ5IGludCBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sK
KyAgICB2ZWM0IGYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCkgLyAxOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3Qo
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaXZlYzJfdmVjMi52
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pdmVjMl92ZWMyLnZlcnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZTg4Y2Q2ODBiNGYyNjkwM2EyOTZkNjMwZGQ0NmRmYWM3MzgwNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaXZlYzJfdmVjMi52ZXJ0Lmh0bWwKQEAg
LTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRl
eFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBs
aWNpdCBjYXN0IG9mIHZlYzIgZGl2aWRlZCBieSBpdmVjMiBzaG91bGQgZmFpbAordm9pZCBtYWlu
KCkKK3sKKyAgICB2ZWMyIGYgPSB2ZWMyKDEuMCwgMi4wKSAvIGl2ZWMyKDEsIDIpOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1
blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaXZlYzNf
dmVjMy52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pdmVjM192ZWMzLnZlcnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OWU4YTY5YTA5OGI0MTY3NzhhY2JmYWYwY2NjMzBhMmI2YTdjNDAyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9kaXZpZGVfaXZlYzNfdmVjMy52ZXJ0Lmh0
bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9
InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisv
LyBpbXBsaWNpdCBjYXN0IG9mIHZlYzMgZGl2aWRlZCBieSBpdmVjMyBzaG91bGQgZmFpbAordm9p
ZCBtYWluKCkKK3sKKyAgICB2ZWMzIGYgPSB2ZWMzKDEuMCwgMi4wLCAzLjApIC8gaXZlYzMoMSwg
MiwgMyk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9y
bWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0
L2RpdmlkZV9pdmVjNF92ZWM0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZGl2aWRlX2l2ZWM0
X3ZlYzQudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzliYTllMWM2Zjk3MTRmNzgwYzg5MTMxOWEw
ZWM4ZDgwMjAyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2RpdmlkZV9pdmVj
NF92ZWM0LnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgdmVjNCBkaXZpZGVkIGJ5IGl2ZWM0IHNo
b3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIHZlYzQgZiA9IHZlYzQoMS4wLCAyLjAsIDMu
MCwgNC4wKSAvIGl2ZWM0KDEsIDIsIDMsIDQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9lcXVhbF9pbnRfZmxvYXQudmVydC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9p
bXBsaWNpdC9lcXVhbF9pbnRfZmxvYXQudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZmRiNmFlNTRi
Njg2Mzc3ZGMxYzUyMDM5OWVhZTY5YWVlZjNkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2lt
cGxpY2l0L2VxdWFsX2ludF9mbG9hdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byBm
bG9hdCBpbiBjb21wYXJpc2lvbiBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBib29s
IGIgPSAxLjAgPT0gMTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
aW1wbGljaXQvZXF1YWxfaXZlYzJfdmVjMi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2VxdWFs
X2l2ZWMyX3ZlYzIudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMTZlZGRlMzIyOTc3MDU0NDI5ZTQ5
Zjk4YTQ1Y2Y1YmU1M2M0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2VxdWFs
X2l2ZWMyX3ZlYzIudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBpdmVjMiB0byB2ZWMyIGluIGNv
bXBhcmlzaW9uIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIGJvb2wgYiA9IHZlYzIo
MS4wLCAyLjApID09IGl2ZWMyKDEsIDIpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9pbXBsaWNpdC9lcXVhbF9pdmVjM192ZWMzLnZlcnQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1w
bGljaXQvZXF1YWxfaXZlYzNfdmVjMy52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5NTFjYjc3Zjk3
YmVkYmE5NmM5MTk5ZjgyYjI5MmI0MTBkYTI2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1w
bGljaXQvZXF1YWxfaXZlYzNfdmVjMy52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGl2ZWMzIHRv
IHZlYzMgaW4gY29tcGFyaXNpb24gc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgYm9v
bCBiID0gdmVjMygxLjAsIDIuMCwgMy4wKSA9PSBpdmVjMygxLCAyLCAzKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0
KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZXF1YWxfaXZlYzRfdmVjNC52
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2VxdWFsX2l2ZWM0X3ZlYzQudmVydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YmRiYWZlZTI3MjJjMTA1MzY4MzE3N2JkY2UzMDBhZDljOTdiM2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2VxdWFsX2l2ZWM0X3ZlYzQudmVydC5odG1sCkBAIC0w
LDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wt
ZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5j
ZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhT
aGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGlj
aXQgY2FzdCBvZiBpdmVjNCB0byB2ZWM0IGluIGNvbXBhcmlzaW9uIHNob3VsZCBmYWlsCit2b2lk
IG1haW4oKQoreworICAgIGJvb2wgYiA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKSA9PSBpdmVj
NCgxLCAyLCAzLCA0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
aW1wbGljaXQvZnVuY3Rpb25faW50X2Zsb2F0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZnVu
Y3Rpb25faW50X2Zsb2F0LnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTIwZWVhYjM3ZTJlZjA2NDNm
NWNiNjNhM2IyMmQ4MjA3MGQxNjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9m
dW5jdGlvbl9pbnRfZmxvYXQudmVydC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBpbnQgdG8gZmxvYXQg
aW4gZnVuY3Rpb24gYXJndW1lbnQgc2hvdWxkIGZhaWwKK2Zsb2F0IGZvbyhmbG9hdCBmKSB7Cisg
IHJldHVybiBmOworfQorCit2b2lkIG1haW4oKSB7CisgIGZsb2F0IGYgPSBmb28oMSk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIu
cnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Z1bmN0aW9uX2l2
ZWMyX3ZlYzIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjMl92ZWMyLnZl
cnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNDQwMWMyNWM5ODk4MjdkZDkxMDY5YWQzZTE4YmY1MWNmZDAz
NzkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjMl92ZWMy
LnZlcnQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgaXZlYzIgdG8gdmVjMiBpbiBmdW5jdGlvbiBhcmd1
bWVudCBzaG91bGQgZmFpbAordmVjMiBmb28odmVjMiBmKSB7CisgIHJldHVybiBmOworfQorCit2
b2lkIG1haW4oKSB7CisgIHZlYzIgZiA9IGZvbyhpdmVjMigxLCAyKSk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Z1bmN0aW9uX2l2ZWMzX3ZlYzMu
dmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjM192ZWMzLnZlcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNjU4YWM1ZGU4ZWE0NDViZjkzZjBkMWU0NjVmNWE0ZWFkZDE1YzYyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjM192ZWMzLnZlcnQuaHRt
bApAQCAtMCwwICsxLDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
dmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8v
IGltcGxpY2l0IGNhc3Qgb2YgaXZlYzMgdG8gdmVjMyBpbiBmdW5jdGlvbiBhcmd1bWVudCBzaG91
bGQgZmFpbAordmVjMyBmb28odmVjMyBmKSB7CisgIHJldHVybiBmOworfQorCit2b2lkIG1haW4o
KSB7CisgIHZlYzMgZiA9IGZvbyhpdmVjMygxLCAyLCAzKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2Z1bmN0aW9uX2l2ZWM0X3ZlYzQudmVydC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjNF92ZWM0LnZlcnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44N2U0OWM1MDNkZDE1ZWZjNzlhZDJlNDIxNTFhOTUwNGFhYTQ5ZTBjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9mdW5jdGlvbl9pdmVjNF92ZWM0LnZlcnQuaHRtbApAQCAt
MCwwICsxLDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNs
LWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4
U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxp
Y2l0IGNhc3Qgb2YgaXZlYzQgdG8gdmVjNCBpbiBmdW5jdGlvbiBhcmd1bWVudCBzaG91bGQgZmFp
bAordmVjNCBmb28odmVjNCBmKSB7CisgIHJldHVybiBmOworfQorCit2b2lkIG1haW4oKSB7Cisg
IHZlYzQgZiA9IGZvbyhpdmVjNCgxLCAyLCAzLCA0KSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2dyZWF0ZXJfdGhhbi52ZXJ0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2ltcGxpY2l0L2dyZWF0ZXJfdGhhbi52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNjMjE2NGEwODQx
NDk4MjM4ZmJhOWNmZmQ0ZjJlODlmNTM1MWQzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1w
bGljaXQvZ3JlYXRlcl90aGFuLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgaW50IHRvIGZsb2F0
IHdpdGggZ3JlYXRlciB0aGFuIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIGJvb2wg
YiA9IDEuMCA+IDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2lt
cGxpY2l0L2dyZWF0ZXJfdGhhbl9lcXVhbC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2dyZWF0
ZXJfdGhhbl9lcXVhbC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThkZmU1ZWQ3N2RlOGU1YjhiMzE4
MWRkZDE4MTY2YWM3NDM3MWFiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvZ3Jl
YXRlcl90aGFuX2VxdWFsLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGlu
Zy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgaW50IHRvIGZsb2F0IHdp
dGggZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQorewor
ICAgIGJvb2wgYiA9IDEuMCA+PSAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9pbXBsaWNpdC9sZXNzX3RoYW4udmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9sZXNz
X3RoYW4udmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxYWRkYzYzMTY0NzNlNGQ0YjIwY2QxN2IwNDc5
MmY3MWZiZDZjODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2xlc3NfdGhhbi52
ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byBmbG9hdCB3aXRoIGxlc3MgdGhhbiBzaG91
bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBib29sIGIgPSAxLjAgPCAxOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9sZXNzX3RoYW5fZXF1YWwu
dmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9sZXNzX3RoYW5fZXF1YWwudmVydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE0YTc1NzNlNDA5YzE3OTA0YmVkNjcyNGExNDY1NWFkMWNkYjNhM2IKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L2xlc3NfdGhhbl9lcXVhbC52ZXJ0Lmh0bWwKQEAgLTAs
MCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1m
ZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNl
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNo
YWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNp
dCBjYXN0IG9mIGludCB0byBmbG9hdCB3aXRoIGxlc3MgdGhhbiBvciBlcXVhbCB0byBzaG91bGQg
ZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBib29sIGIgPSAxLjAgPD0gMTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0
KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaW50X2Zsb2F0
LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaW50X2Zsb2F0LnZlcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZTE0ZGJhMWFmZDM0MWY2YzdkNTFiNGNmNDVlMmQyZTM2ZWFhZjM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9tdWx0aXBseV9pbnRfZmxvYXQudmVydC5odG1s
CkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25m
b3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2
ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8g
aW1wbGljaXQgY2FzdCBvZiBpbnQgdG8gZmxvYXQgaW4gbXVsdGlwbHkgc2hvdWxkIGZhaWwKK3Zv
aWQgbWFpbigpCit7CisgICAgZmxvYXQgZiA9IDEuMCAqIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L211bHRpcGx5X2ludF9tYXQyLnZlcnQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaW50X21hdDIudmVydC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2ZWMyYWU5OTU2MzM0MzExZmY5MTIyYzQ5NGZkMDQ5YzM1OWMxMTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2ltcGxpY2l0L211bHRpcGx5X2ludF9tYXQyLnZlcnQuaHRtbApAQCAtMCwwICsx
LDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1
cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVy
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNh
c3Qgb2YgaW50IHRvIG1hdDIgaW4gbXVsdGlwbHkgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7
CisgICAgbWF0MiBmID0gbWF0MigxLjApICogMTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaW50X21hdDMudmVydC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9pbXBsaWNpdC9tdWx0aXBseV9pbnRfbWF0My52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ0Mzc5
Y2NkNzk0YjYyMTY5Njg3MzkyNmM3MmRmYjA3ZDQxZmVkNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvaW1wbGljaXQvbXVsdGlwbHlfaW50X21hdDMudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBp
bnQgdG8gbWF0MyBpbiBtdWx0aXBseSBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBt
YXQzIGYgPSBtYXQzKDEuMCkgKiAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9pbXBsaWNpdC9tdWx0aXBseV9pbnRfbWF0NC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxp
Y2l0L211bHRpcGx5X2ludF9tYXQ0LnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzNkMTQ3ZjM2ZmY3
YzdlZWQxN2YwYWIzZDVkNmM0NGJhYWM5YTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBs
aWNpdC9tdWx0aXBseV9pbnRfbWF0NC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byBt
YXQ0IGluIG11bHRpcGx5IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIG1hdDQgZiA9
IG1hdDQoMS4wKSAqIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2ltcGxpY2l0L211bHRpcGx5X2ludF92ZWMyLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVs
dGlwbHlfaW50X3ZlYzIudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmODNjOWE2NTdmMDdiYWFjZWE5
NTljMjM5YjdiOTZkMGM2YmIxNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L211
bHRpcGx5X2ludF92ZWMyLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGlu
Zy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgaW50IHRvIHZlYzIgaW4g
bXVsdGlwbHkgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMiBmID0gdmVjMigx
LjAsIDIuMCkgKiAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xT
TENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9p
bXBsaWNpdC9tdWx0aXBseV9pbnRfdmVjMy52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L211bHRp
cGx5X2ludF92ZWMzLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzk4NzJmMjFmM2E5MTgzYjBkZmU2
NDI3NzI3MzY5MTI4NTU0YjAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9tdWx0
aXBseV9pbnRfdmVjMy52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byB2ZWMzIGluIG11
bHRpcGx5IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIHZlYzMgZiA9IHZlYzMoMS4w
LCAyLjAsIDMuMCkgKiAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9pbXBsaWNpdC9tdWx0aXBseV9pbnRfdmVjNC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L211
bHRpcGx5X2ludF92ZWM0LnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTQzYjZkNDEwMmZiODVlMDZi
ZGM4ZWEyN2M4NmNkZmQ2ODc0MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9t
dWx0aXBseV9pbnRfdmVjNC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byB2ZWM0IGlu
IG11bHRpcGx5IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIHZlYzQgZiA9IHZlYzQo
MS4wLCAyLjAsIDMuMCwgNC4wKSAqIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2ltcGxpY2l0L211bHRpcGx5X2l2ZWMyX3ZlYzIudmVydC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9p
bXBsaWNpdC9tdWx0aXBseV9pdmVjMl92ZWMyLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2Q3OTdh
MzMzMGYwMjhiZjdlMGFmNzU4NDc4ODExMTc3OWFiOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9pbXBsaWNpdC9tdWx0aXBseV9pdmVjMl92ZWMyLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVz
dHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2Yg
aXZlYzIgdG8gdmVjMiBpbiBtdWx0aXBseSBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAg
ICB2ZWMyIGYgPSB2ZWMyKDEuMCwgMi4wKSAqIGl2ZWMyKDEsIDIpOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9tdWx0aXBseV9pdmVjM192ZWMzLnZl
cnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaXZlYzNfdmVjMy52ZXJ0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTI5NTFjNDJmNjkyMzBmMzUyNmI4MDU3YzZkNzI0MjhhOGZkY2NlMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlfaXZlYzNfdmVjMy52ZXJ0Lmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZl
cnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBp
bXBsaWNpdCBjYXN0IG9mIGl2ZWMzIHRvIHZlYzMgaW4gbXVsdGlwbHkgc2hvdWxkIGZhaWwKK3Zv
aWQgbWFpbigpCit7CisgICAgdmVjMyBmID0gdmVjMygxLjAsIDIuMCwgMy4wKSAqIGl2ZWMzKDEs
IDIsIDMpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNp
dC9tdWx0aXBseV9pdmVjNF92ZWM0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlwbHlf
aXZlYzRfdmVjNC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViM2NlNDc0MThhNDVkZWMzYzUzMmYx
NzJlYzliMTg0YjUzNTkxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvbXVsdGlw
bHlfaXZlYzRfdmVjNC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGl2ZWM0IHRvIHZlYzQgaW4g
bXVsdGlwbHkgc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCBmID0gdmVjNCgx
LjAsIDIuMCwgMy4wLCA0LjApICogaXZlYzQoMSwgMiwgMywgNCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L25vdF9lcXVhbF9pbnRfZmxvYXQudmVy
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9ub3RfZXF1YWxfaW50X2Zsb2F0LnZlcnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTg3YWYwYWU0N2ZlNTJiZTI2ZjExOTFlMTE0YWJkMWIxMTQ1ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9ub3RfZXF1YWxfaW50X2Zsb2F0LnZlcnQuaHRtbApA
QCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVy
dGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGlt
cGxpY2l0IGNhc3Qgb2YgaW50IHRvIGZsb2F0IGluIG5vdCBlcXVhbCBjb21wYXJpc29uIHNob3Vs
ZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIGJvb2wgYiA9IDEuMCAhPSAxOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9ub3RfZXF1YWxfaXZlYzJf
dmVjMi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L25vdF9lcXVhbF9pdmVjMl92ZWMyLnZlcnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTk4NGM5Y2NhNmU0N2I5MmQxYWEzOWU2N2VlMjVlZmVkZDEyYmM0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9ub3RfZXF1YWxfaXZlYzJfdmVjMi52
ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGl2ZWMyIHRvIHZlYzIgaW4gbm90IGVxdWFsIGNvbXBh
cmlzb24gc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgYm9vbCBiID0gdmVjMigxLjAs
IDIuMCkgIT0gaXZlYzIoMSwgMik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL2ltcGxpY2l0L25vdF9lcXVhbF9pdmVjM192ZWMzLnZlcnQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1w
bGljaXQvbm90X2VxdWFsX2l2ZWMzX3ZlYzMudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMWFjYzE1
Mjc1M2IxMDM1ZTE4MGQyNTE1ZDYxM2I3OTRlNmRlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2ltcGxpY2l0L25vdF9lcXVhbF9pdmVjM192ZWMzLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVz
dHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2Yg
aXZlYzMgdG8gdmVjMyBpbiBub3QgZXF1YWwgY29tcGFyaXNvbiBzaG91bGQgZmFpbAordm9pZCBt
YWluKCkKK3sKKyAgICBib29sIGIgPSB2ZWMzKDEuMCwgMi4wLCAzLjApICE9IGl2ZWMzKDEsIDIs
IDMpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9u
b3RfZXF1YWxfaXZlYzRfdmVjNC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L25vdF9lcXVhbF9p
dmVjNF92ZWM0LnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjgyMTA0ODZjMDE5ODQ2M2U1NGYwYmE2
ODE4MjY4NzgzNGE3Y2M5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9ub3RfZXF1
YWxfaXZlYzRfdmVjNC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGl2ZWM0IHRvIHZlYzQgaW4g
bm90IGVxdWFsIGNvbXBhcmlzb24gc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigpCit7CisgICAgYm9v
bCBiID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApICE9IGl2ZWM0KDEsIDIsIDMsIDQpOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9p
bnRfZmxvYXQudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pbnRfZmxvYXQudmVy
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhOWVlODg0OTg5ZjA5NjA2MDRkMjdiZTFkNWUwZGI1ODk1YTMy
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF9mbG9hdC52
ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorCisvLyBpbXBsaWNpdCBjYXN0IG9mIGludCB0byBmbG9hdCBpbiBzdWJ0cmFjdGlvbiBzaG91
bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICBmbG9hdCBmID0gMS4wIC0gMTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5U
ZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X21h
dDIudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pbnRfbWF0Mi52ZXJ0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzZhYzVlM2ZjMGJlYzhmMmRkYjdlOWM4NWEwMDM1MmFjODFiY2FhZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X21hdDIudmVydC5odG1s
CkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25m
b3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2
ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8g
aW1wbGljaXQgY2FzdCBvZiBpbnQgdG8gbWF0MiBpbiBzdWJ0cmFjdGlvbiBzaG91bGQgZmFpbAor
dm9pZCBtYWluKCkKK3sKKyAgICBtYXQyIGYgPSBtYXQyKDEuMCkgLSAxOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3Qo
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pbnRfbWF0My52
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF9tYXQzLnZlcnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYjA0YTkwOTRiNjRmZmE3ODczYmRkNjBlMjc2ZjY5MzgxMzllMmY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pbnRfbWF0My52ZXJ0Lmh0bWwKQEAg
LTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRl
eFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBs
aWNpdCBjYXN0IG9mIGludCB0byBtYXQzIGluIHN1YnRyYWN0aW9uIHNob3VsZCBmYWlsCit2b2lk
IG1haW4oKQoreworICAgIG1hdDMgZiA9IG1hdDMoMS4wKSAtIDE7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF9tYXQ0LnZlcnQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X21hdDQudmVydC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUxZGMyODA3YjY3NjdjNTQ5YTFmZGY1MDJjN2MzN2Q0YWUwZjU4YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF9tYXQ0LnZlcnQuaHRtbApAQCAtMCww
ICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZl
YXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hh
ZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0
IGNhc3Qgb2YgaW50IHRvIG1hdDQgaW4gc3VidHJhY3Rpb24gc2hvdWxkIGZhaWwKK3ZvaWQgbWFp
bigpCit7CisgICAgbWF0NCBmID0gbWF0NCgxLjApIC0gMTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X3ZlYzIudmVydC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pbnRfdmVjMi52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGE4OWU1ZjRlNDkwOTFkNjEzMDExNzgyYjU3MjZmNjkyNDVlZDA4OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X3ZlYzIudmVydC5odG1sCkBAIC0wLDAgKzEs
MzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2Fz
dCBvZiBpbnQgdG8gdmVjMiBpbiBzdWJ0cmFjdGlvbiBzaG91bGQgZmFpbAordm9pZCBtYWluKCkK
K3sKKyAgICB2ZWMyIGYgPSB2ZWMyKDEuMCwgMi4wKSAtIDE7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF92ZWMzLnZlcnQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X3ZlYzMudmVydC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjMGZkYzY3M2IwZGMyZmIyOTAyZTExYTFhZGY1OGU4ZmM4MWYwMWIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF92ZWMzLnZlcnQuaHRtbApAQCAtMCwwICsx
LDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1
cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVy
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNh
c3Qgb2YgaW50IHRvIHZlYzMgaW4gc3VidHJhY3Rpb24gc2hvdWxkIGZhaWwKK3ZvaWQgbWFpbigp
Cit7CisgICAgdmVjMyBmID0gdmVjMygxLjAsIDIuMCwgMy4wKSAtIDE7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF92ZWM0LnZl
cnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3RfaW50X3ZlYzQudmVydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjNTNlNGFlNTVmNzNiM2U4ZmVhYjY3OTQ0MWYyYjI5YmQ4ZmNjZGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2ludF92ZWM0LnZlcnQuaHRtbApAQCAt
MCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNs
LWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4
U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxp
Y2l0IGNhc3Qgb2YgaW50IHRvIHZlYzQgaW4gc3VidHJhY3Rpb24gc2hvdWxkIGZhaWwKK3ZvaWQg
bWFpbigpCit7CisgICAgdmVjNCBmID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApIC0gMTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvc3VidHJhY3Rf
aXZlYzJfdmVjMi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2l2ZWMyX3ZlYzIu
dmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MDM4NDI1OGFjOTdmMGFjNjlmMDE5MDY0YzA3YmYwODg0
NTIyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2l2ZWMyX3Zl
YzIudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBpdmVjMiB0byB2ZWMyIGluIHN1YnRyYWN0aW9u
IHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAgIHZlYzIgZiA9IHZlYzIoMS4wLCAyLjAp
IC0gaXZlYzIoMSwgMik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L2ltcGxpY2l0L3N1YnRyYWN0X2l2ZWMzX3ZlYzMudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9z
dWJ0cmFjdF9pdmVjM192ZWMzLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjAzYjA5YTNhNDdjM2Q2
MjA5ZmY0MzNlYWI1MDc0ZjFiYzIyNDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNp
dC9zdWJ0cmFjdF9pdmVjM192ZWMzLnZlcnQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3Nv
bWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIGltcGxpY2l0IGNhc3Qgb2YgaXZlYzMgdG8g
dmVjMyBpbiBzdWJ0cmFjdGlvbiBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICB2ZWMz
IGYgPSB2ZWMzKDEuMCwgMi4wLCAzLjApIC0gaXZlYzMoMSwgMiwgMyk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2ltcGxpY2l0L3N1YnRyYWN0X2l2ZWM0X3ZlYzQu
dmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pdmVjNF92ZWM0LnZlcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNDQwYmVjOTFmYmM3YTNhNWU1OWRiYzNkNGE4MmIyZDI2YjhjMGEzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC9zdWJ0cmFjdF9pdmVjNF92ZWM0LnZlcnQuaHRt
bApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
dmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8v
IGltcGxpY2l0IGNhc3Qgb2YgaXZlYzQgdG8gdmVjNCBpbiBzdWJ0cmFjdGlvbiBzaG91bGQgZmFp
bAordm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0IGYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCkg
LSBpdmVjNCgxLCAyLCAzLCA0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvaW1wbGljaXQvdGVybmFyeV9pbnRfZmxvYXQudmVydC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNp
dC90ZXJuYXJ5X2ludF9mbG9hdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5OGJiOTJlOGQzOWEw
MmEyMTNhOGE1NDY0NGYxYmJjNTI1YmU2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGlj
aXQvdGVybmFyeV9pbnRfZmxvYXQudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29t
ZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBpbnQgdG8gZmxv
YXQgaW4gdGVybmFyeSBleHByZXNzaW9uIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKQoreworICAg
IGZsb2F0IGYgPSB0cnVlID8gMS4wIDogMTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvaW1wbGljaXQvdGVybmFyeV9pdmVjMl92ZWMyLnZlcnQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
aW1wbGljaXQvdGVybmFyeV9pdmVjMl92ZWMyLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGRjYTBj
YzAyZDE4MTg1Y2MwNzk4MmU1M2E3YjJiMzRhMGMzMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9pbXBsaWNpdC90ZXJuYXJ5X2l2ZWMyX3ZlYzIudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBp
dmVjMiB0byB2ZWMyIGluIHRlcm5hcnkgZXhwcmVzc2lvbiBzaG91bGQgZmFpbAordm9pZCBtYWlu
KCkKK3sKKyAgICB2ZWMyIGYgPSB0cnVlID8gdmVjMigxLjAsIDIuMCkgOiBpdmVjMigxLCAyKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRl
c3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvdGVybmFy
eV9pdmVjM192ZWMzLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvaW1wbGljaXQvdGVybmFyeV9pdmVjM192ZWMz
LnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjgxZTU5Mjk2ZDlkY2ViZGVhM2M1MjY4OTc0NmUyOTUw
YzRhNjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC90ZXJuYXJ5X2l2ZWMzX3Zl
YzMudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KKworLy8gaW1wbGljaXQgY2FzdCBvZiBpdmVjMyB0byB2ZWMzIGluIHRlcm5hcnkgZXhw
cmVzc2lvbiBzaG91bGQgZmFpbAordm9pZCBtYWluKCkKK3sKKyAgICB2ZWMzIGYgPSB0cnVlID8g
dmVjMygxLjAsIDIuMCwgMy4wKSA6IGl2ZWMzKDEsIDIsIDMpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9pbXBsaWNpdC90ZXJuYXJ5X2l2ZWM0X3ZlYzQudmVydC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9pbXBsaWNpdC90ZXJuYXJ5X2l2ZWM0X3ZlYzQudmVydC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhMmI2NjliOGY5NThjNzkxZWJlNjdkYWU0YjljZjE1MGVhOTc4ZTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL2ltcGxpY2l0L3Rlcm5hcnlfaXZlYzRfdmVjNC52ZXJ0Lmh0bWwKQEAgLTAs
MCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1m
ZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNl
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNo
YWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyBpbXBsaWNp
dCBjYXN0IG9mIGl2ZWM0IHRvIHZlYzQgaW4gdGVybmFyeSBleHByZXNzaW9uIHNob3VsZCBmYWls
Cit2b2lkIG1haW4oKQoreworICAgIHZlYzQgZiA9IHRydWUgPyB2ZWM0KDEuMCwgMi4wLCAzLjAs
IDQuMCkgOiBpdmVjNCgxLCAyLCAzLCA0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbGl0ZXJhbHMvZmxvYXRfbGl0ZXJhbC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2xpdGVy
YWxzL2Zsb2F0X2xpdGVyYWwudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YmJmOGE4ODMwNjM1YTNi
MzgxZTMwMDBjOWQxZjgzNGQ4ODVlNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2xpdGVyYWxz
L2Zsb2F0X2xpdGVyYWwudmVydC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gcGFyc2luZyBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBz
aG91bGQgc3VjY2VlZAordm9pZCBtYWluKCkgeworICBmbG9hdCB6ZXJvID0gMC4wOworICBmbG9h
dCBmcmFjdGlvbmFsQ29uc3RhbnQgPSAxLjA7CisgIGZsb2F0IGZyYWN0aW9uYWxDb25zdGFudEV4
cG9uZW50ID0gMS4wZTE7CisgIGZsb2F0IGZyYWN0aW9uYWxDb25zdGFudFBvc0V4cG9uZW50ID0g
MS4wZSsxOworICBmbG9hdCBmcmFjdGlvbmFsQ29uc3RhbnROZWdFeHBvbmVudCA9IDEuMGUtMTsK
KyAgZmxvYXQgZGlnaXRTZXF1ZW5jZUV4cG9uZW50ID0gMWUxOworICBmbG9hdCBkaWdpdFNlcXVl
bmNlUG9zRXhwb25lbnQgPSAxZSsxOworICBmbG9hdCBkaWdpdFNlcXVlbmNlTmVnRXhwb25lbnQg
PSAxZS0xOworICBmbG9hdCBwb2ludERpZ2l0ID0gLjE7CisgIGZsb2F0IGRpZ2l0UG9pbnQ9IDEu
OworICBmbG9hdCB1cHBlckNhc2VFeHBvbmVudCA9IDEuMEUxOworICBoaWdocCBmbG9hdCBwb3NJ
blJhbmdlID0gNDYxMTY4NjAxODQyNzM4NzkwMy47ICAvLyAyXjYyIC0gMQorICBoaWdocCBmbG9h
dCBwb3NPdXRSYW5nZSA9IDQ2MTE2ODYwMTg0MjczODc5MDUuOyAgLy8gMl42MiArIDEKKyAgaGln
aHAgZmxvYXQgcG9zSHVnZSA9IDFFMTAwOworICBoaWdocCBmbG9hdCBuZWdJblJhbmdlID0gLTQ2
MTE2ODYwMTg0MjczODc5MDMuOworICBoaWdocCBmbG9hdCBuZWdPdXRSYW5nZSA9IC00NjExNjg2
MDE4NDI3Mzg3OTA1LjsKKyAgaGlnaHAgZmxvYXQgbmVnSHVnZSA9IC0xRTEwMDsKKyAgZ2xfUG9z
aXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbGl0ZXJhbHMvbGl0ZXJhbF9wcmVjaXNpb24uaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbGl0
ZXJhbHMvbGl0ZXJhbF9wcmVjaXNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmNjYmJlMWNlNTBkNzdm
MzllYWQwYmE4ZTQxOGFlMTQ1MWUzZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9saXRlcmFs
cy9saXRlcmFsX3ByZWNpc2lvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gcGFyc2luZyBmbG9hdGluZyBwb2ludCBsaXRlcmFscyB3
aXRoIHByZWNpc2lvbiBzaG91bGQgZmFpbAordm9pZCBtYWluKCkgeworICBtZWRpdW1wIGZsb2F0
IHplcm8gPSBtZWRpdW1wIDAuMDsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHplcm8sIDAuMCwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL2xpdGVyYWxzL292
ZXJmbG93X2xlYWsudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9saXRlcmFscy9vdmVyZmxvd19sZWFrLnZlcnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMTE5NjBkZDVmMDMxNzk1YmE1N2I2M2NiNDllODhjNThjNDBlZGI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9saXRlcmFscy9vdmVyZmxvd19sZWFrLnZlcnQuaHRt
bApAQCAtMCwwICsxLDYxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKy8vIGZsb2F0IGxpdGVyYWwgb3ZlcmZsb3cgc2hv
dWxkIG5vdCBhZmZlY3QgbmV4dCBsaXRlcmFsIHBhcnNpbmcuCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordmFyeWluZyB2ZWM0IHZfY29sb3I7CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
Owordm9pZCBtYWluKCkgeworICAgIGhpZ2hwIGZsb2F0IGZsb2F0T3ZlcmZsb3cgPSAxRTEwMDsK
KyAgICBpbnQgaSA9IDEwOworICAgIGlmIChpID09IDEwKQorICAgICAgICB2X2NvbG9yID0gdmVj
NCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGVsc2UKKyAgICAgICAgdl9jb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3ZhcnlpbmcgdmVjNCB2X2NvbG9yOwordm9p
ZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOword3R1LnNl
dHVwVW5pdFF1YWQoZ2wpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZz
aGFkZXIiLCAiZnNoYWRlciJdKTsKK2lmICghcHJvZ3JhbSkKKyAgICB0ZXN0RmFpbGVkKCJGYWls
IHRvIHNldHVwIHByb2dyYW0iKTsKK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cit3dHUu
Y2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9tYXRyaWNlcy9nbHNsLW1hdDMtY29uc3RydWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL21hdHJpY2VzL2dsc2wtbWF0My1jb25zdHJ1Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2Ex
YmRiNzA2N2E5MTNmNTkxY2U1OWNkOTYyNWVmZWJhYmRiNTI2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9tYXRyaWNlcy9nbHNsLW1hdDMtY29uc3RydWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3MiBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
R0xTTCBtYXQzIGNvbnN0cnVjdGlvbiB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVz
dHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWdlbmVyYXRvci5qcyI+IDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InNoYWRlcl9lbXUiIHR5cGU9InNvbWV0
aGluZy1ub3QtanMiPgorbWF0MyBtYXQzX2VtdSh2ZWMzIHYzXzAsIHZlYzMgdjNfMSwgdmVjMyB2
M18yKSB7CisgIG1hdDMgdGVzdDsKKyAgdGVzdFswXSA9IHYzXzA7CisgIHRlc3RbMV0gPSB2M18x
OworICB0ZXN0WzJdID0gdjNfMjsKKyAgcmV0dXJuIHRlc3Q7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9InNoYWRlcl90ZXN0IiB0eXBlPSJzb21ldGhpbmctbm90LWpzIj4KKyAgdmVjMyB2MyA9
IHZlYzMoJChpbnB1dCkueHl6KTsKKyAgbWF0MyBtMyA9ICQoY29udmVyc2lvbikodjMsIHYzLCB2
Myk7CisgIHZlYzMgYzsKKyAgaWYgKCQoaW5wdXQpLnkgPCAwLjMzKSB7CisgICAgYyA9IG0zWzBd
OworICB9IGVsc2UgaWYgKCQoaW5wdXQpLnkgPiAwLjY2KSB7CisgICAgYyA9IG0zWzFdOworICB9
IGVsc2UgeworICAgIGMgPSBtM1syXTsKKyAgfQorICAkKG91dHB1dCkgPSB2ZWM0KGMsIDEpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworLy8gU2VlIHJlc291cmNlcyBnbHNs
LWdlbmVyYXRvciBydW5CYXNpY1Rlc3QgZm9yIGhvdyB0aGlzIHdvcmtzCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7CitHTFNMR2VuZXJhdG9yLnJ1bkJhc2ljVGVzdCh7CisgIGdyaWRSZXM6IDgs
CisgIHRlc3RzOiBbCisgICAgeworICAgICAgbmFtZTogInZlYzMgdG8gbWF0MyIsCisgICAgICBy
ZWZlcmVuY2U6IHsKKyAgICAgICAgc2hhZGVyOiB3dHUuZ2V0U2NyaXB0KCJzaGFkZXJfdGVzdCIp
LAorICAgICAgICBzdWJzOiB7CisgICAgICAgICAgZW11OiB3dHUuZ2V0U2NyaXB0KCJzaGFkZXJf
ZW11IiksCisgICAgICAgICAgY29udmVyc2lvbjogIm1hdDNfZW11IgorICAgICAgICB9CisgICAg
ICB9LAorICAgICAgdGVzdDogeworICAgICAgICBzaGFkZXI6IHd0dS5nZXRTY3JpcHQoInNoYWRl
cl90ZXN0IiksCisgICAgICAgIHN1YnM6IHsKKyAgICAgICAgICBjb252ZXJzaW9uOiAibWF0MyIK
KyAgICAgICAgfSwKKyAgICAgIH0KKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9tYXRyaWNlcy9nbHNsLW1hdDQtdG8tbWF0My5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9tYXRyaWNlcy9nbHNs
LW1hdDQtdG8tbWF0My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MTZjNjMwY2IxNGUxNTgxYWVhZDhkOTdl
OTQzZGY0YmMyMzg5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21hdHJpY2VzL2dsc2wtbWF0
NC10by1tYXQzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBtYXQ0IHRvIG1hdDMgdGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1nZW5lcmF0b3IuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlk
PSJzaGFkZXJfZW11IiB0eXBlPSJzb21ldGhpbmctbm90LWpzIj4KK21hdDMgbWF0M19lbXUobWF0
NCBtNCkgeworICByZXR1cm4gbWF0MygKKyAgICAgIG00WzBdWzBdLCBtNFswXVsxXSwgbTRbMF1b
Ml0sCisgICAgICBtNFsxXVswXSwgbTRbMV1bMV0sIG00WzFdWzJdLAorICAgICAgbTRbMl1bMF0s
IG00WzJdWzFdLCBtNFsyXVsyXSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InNoYWRlcl90
ZXN0IiB0eXBlPSJzb21ldGhpbmctbm90LWpzIj4KKyAgbWF0NCBtNCA9IG1hdDQoJChpbnB1dCks
ICQoaW5wdXQpLnl6d3gsICQoaW5wdXQpLnp3eHksICQoaW5wdXQpLnd4eXopOworICBtYXQzIG0z
ID0gJChjb252ZXJzaW9uKShtNCk7CisgIHZlYzMgYzsKKyAgaWYgKCQoaW5wdXQpLnkgPCAwLjMz
KSB7CisgICAgYyA9IG0zWzBdOworICB9IGVsc2UgaWYgKCQoaW5wdXQpLnkgPiAwLjY2KSB7Cisg
ICAgYyA9IG0zWzFdOworICB9IGVsc2UgeworICAgIGMgPSBtM1syXTsKKyAgfQorICAkKG91dHB1
dCkgPSB2ZWM0KGMsIDEpOworPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworLy8g
U2VlIHJlc291cmNlcyBnbHNsLWdlbmVyYXRvciBydW5CYXNpY1Rlc3QgZm9yIGhvdyB0aGlzIHdv
cmtzCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitHTFNMR2VuZXJhdG9yLnJ1bkJhc2ljVGVz
dCh7CisgIGdyaWRSZXM6IDgsCisgIHRlc3RzOiBbCisgICAgeworICAgICAgbmFtZTogIm1hdDQg
dG8gbWF0MyIsCisgICAgICByZWZlcmVuY2U6IHsKKyAgICAgICAgc2hhZGVyOiB3dHUuZ2V0U2Ny
aXB0KCJzaGFkZXJfdGVzdCIpLAorICAgICAgICBzdWJzOiB7CisgICAgICAgICAgZW11OiB3dHUu
Z2V0U2NyaXB0KCJzaGFkZXJfZW11IiksCisgICAgICAgICAgY29udmVyc2lvbjogIm1hdDNfZW11
IgorICAgICAgICB9CisgICAgICB9LAorICAgICAgdGVzdDogeworICAgICAgICBzaGFkZXI6IHd0
dS5nZXRTY3JpcHQoInNoYWRlcl90ZXN0IiksCisgICAgICAgIHN1YnM6IHsKKyAgICAgICAgICBj
b252ZXJzaW9uOiAibWF0MyIKKyAgICAgICAgfSwKKyAgICAgIH0KKyAgICB9CisgIF0KK30pOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWF0cmljZXMvbWF0cml4LWNvbXBvdW5kLW11bHRpcGx5Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL21hdHJpY2VzL21hdHJpeC1jb21wb3VuZC1tdWx0aXBseS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE0ODUxNjBjNTY5ZGI1ZGUzMGM4NGZmNzJmOWEwYzdmZjFjY2QwYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21hdHJpY2VzL21hdHJpeC1jb21wb3VuZC1tdWx0aXBseS5odG1sCkBAIC0w
LDAgKzEsNzEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPk1hdHJpeCBjb21wb3VuZCBtdWx0aXBsaWNhdGlvbiB0ZXN0PC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhl
aWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIGFQb3NpdGlvbjsKKwordm9pZCBtYWluKCkgewor
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgJCh0eXBlKSBhID0gJCh0eXBlKSgw
LjApOworICAgICQodHlwZSkgYiA9ICQodHlwZSkoMC4wKTsKKyAgICBhWzFdWzFdID0gMy4wOyAv
LyAybmQgY29sdW1uLCAybmQgcm93CisgICAgYlswXVsxXSA9IDIuMDsgLy8gMXN0IGNvbHVtbiwg
Mm5kIHJvdworICAgICQodHlwZSkgYyA9IGEgKiBiOworICAgIGEgKj0gYjsKKyAgICAkKHR5cGUp
IGRpZmZNYXQgPSBhIC0gYzsKKyAgICBmbG9hdCBkaWZmID0gbGVuZ3RoKGRpZmZNYXRbMF0pICsg
bGVuZ3RoKGRpZmZNYXRbMV0pOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCBkaWZmIDwg
MC4wMSA/IDEuMCA6IDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIk1h
dHJpeCBjb21wb3VuZCBtdWx0aXBsaWNhdGlvbiB0ZXN0IGNvbXBhcmluZyBhZ2FpbnN0IG5vcm1h
bCBtdWx0aXBsaWNhdGlvbi4iKTsKK2RlYnVnKCIiKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK2Z1bmN0aW9uIHRlc3QoKSB7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNh
bnZhcyIpOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBl
eGlzdCIpOworICAgIHJldHVybjsKKyAgfQorICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgIHZh
ciBmc2hhZGVyVGVtcGxhdGUgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyJyk7CisKKyAgdmFyIHR5
cGVzID0gWydtYXQyJywgJ21hdDMnLCAnbWF0NCddOworICBmb3IgKHZhciBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgKytpKSB7CisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0aW5nIHR5
cGUgJyArIHR5cGVzW2ldKTsKKyAgICB2YXIgZnNoYWRlclNvdXJjZSA9IHd0dS5yZXBsYWNlUGFy
YW1zKGZzaGFkZXJUZW1wbGF0ZSwge3R5cGU6IHR5cGVzW2ldfSk7CisgICAgdmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCBmc2hhZGVyU291cmNlXSwgWyJhUG9z
aXRpb24iXSwgdW5kZWZpbmVkLCB0cnVlKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAg
ICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICdzaG91bGQgYmUgZ3JlZW4n
KTsKKyAgfQorfTsKKwordGVzdCgpOworZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvYXR0cmliLWxvY2F0aW9uLWxlbmd0aC1s
aW1pdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9hdHRyaWItbG9jYXRpb24tbGVuZ3RoLWxpbWl0cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFmMThhMjMwOWI2MjAxYjE1NGUzZjY1MjJiNjYwNTExOWRlNDdlZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvYXR0cmliLWxvY2F0aW9uLWxlbmd0aC1saW1pdHMu
aHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8dGl0bGU+V2ViR0wgYXR0cmliIGxvY2F0aW9uIGxlbmd0aCB0ZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+CitUaGVyZSBpcyBzdXBwb3NlZCB0
byBiZSBhbiBleGFtcGxlIGRyYXdpbmcgaGVyZSwgYnV0IGl0J3Mgbm90IGltcG9ydGFudC4KKzwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlZlcmlmeSBsaW1pdHMgb24gdGhlIGxlbmd0
aHMgb2YgYXR0cmlidXRlIGxvY2F0aW9ucyBwZXIgV2ViR0wgc3BlYywgIk1heGltdW0gVW5pZm9y
bSBhbmQgQXR0cmlidXRlIExvY2F0aW9uIExlbmd0aHMiLjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJnb29kVmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94
LXZlcnRleCI+CisvLyBBIHZlcnRleCBzaGFkZXIgd2hlcmUgdGhlIG5lZWRlZCBhdHRyaWIgbG9j
YXRpb24gaXMgZXhhY3RseSAyNTYgY2hhcmFjdGVycy4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlv
bjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSB2UG9zaXRpb24wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJiYWRWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKy8vIEEgdmVydGV4
IHNoYWRlciB3aGVyZSB0aGUgbmVlZGVkIGF0dHJpYiBsb2NhdGlvbiBpcyAyNTcgY2hhcmFjdGVy
cy4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3OworCit2b2lk
IG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uMDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4o
KSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oInRlc3QgYXR0cmli
IGxvY2F0aW9uIGxlbmd0aCBsaW1pdCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK2RlYnVnKCJUZXN0IGF0
dHJpYiBsb2NhdGlvbiB1bmRlcm5lYXRoIHRoZSBsZW5ndGggbGltaXQiKTsKK3ZhciBwcm9ncmFt
ID0gd3R1LmxvYWRQcm9ncmFtRnJvbVNjcmlwdChnbCwgImdvb2RWZXJ0ZXhTaGFkZXIiLCAiZnJh
Z21lbnRTaGFkZXIiKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgYXR0cmliMjU2TmFtZSA9ICJ2UG9zaXRp
b24wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2IjsKK2dsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAw
LCBhdHRyaWIyNTZOYW1lKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PTkUpOwordmFy
IGF0dHJpYkxvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0dHJpYjI1Nk5hbWUp
OworaWYgKGF0dHJpYkxvYyA9PSAtMSkgeworICAgIHRlc3RGYWlsZWQoImF0dHJpYiBsb2NhdGlv
biB3YXMgLTEsIHNob3VsZCBub3QgYmUiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiYXR0
cmliIGxvY2F0aW9uIHNob3VsZCBub3QgYmUgLTEiKTsKK30KK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PTkUpOworCitkZWJ1ZygiVGVzdCBhdHRyaWIgbG9jYXRpb24gb3ZlciB0aGUgbGVu
Z3RoIGxpbWl0Iik7Cit2YXIgYXR0cmliMjU3TmFtZSA9IGF0dHJpYjI1Nk5hbWUgKyAiNyI7CisK
K2RlYnVnKCJTaGFkZXIgY29tcGlsYXRpb24gb3IgbGluayBzaG91bGQgZmFpbCIpOworc2hvdWxk
QmUoJ3d0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBlY3RFcnJvcihnbCwgImJhZFZlcnRleFNo
YWRlciIsICJmcmFnbWVudFNoYWRlciIpJywgJ251bGwnKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PTkUpOworCitkZWJ1ZygiQXR0ZW1wdCB0byBiaW5kIHRvby1sb25nIGF0dHJpYiBs
b2NhdGlvbiBzaG91bGQgcHJvZHVjZSBlcnJvciIpOworcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dy
YW0oKTsKK2dsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAwLCBhdHRyaWIyNTdOYW1lKTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCitkZWJ1ZygiQXR0
ZW1wdCB0byBmZXRjaCB0b28tbG9uZyBhdHRyaWIgbG9jYXRpb24gc2hvdWxkIHByb2R1Y2UgZXJy
b3IiKTsKK3Byb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShnbCk7CitzaG91bGRCZSgn
Z2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmliMjU3TmFtZSknLCAnLTEnKTsKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL21pc2MvYm9vbGVhbl9wcmVjaXNpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9ib29sZWFuX3ByZWNp
c2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMGM1NWExNjQyOTk1NWY4MGUzMTE3YzNlYWZlM2EyYjJl
ZDBkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvYm9vbGVhbl9wcmVjaXNpb24uaHRt
bApAQCAtMCwwICsxLDcyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
dmVydGV4VGVzdCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gcGFy
c2luZyBib29sZWFuIHZhcmlhYmxlcyB3aXRoIHByZWNpc2lvbiBzaG91bGQgZmFpbAordm9pZCBt
YWluKCkgeworICBtZWRpdW1wICQodHlwZSkgZmFpbCA9ICQoaW5pdGlhbGl6ZXIpOworICBnbF9Q
b3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnJhZ21lbnRUZXN0IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CisvLyBwYXJzaW5nIGJvb2xlYW4gdmFyaWFibGVzIHdpdGggcHJlY2lzaW9uIHNob3VsZCBmYWls
Cit2b2lkIG1haW4oKSB7CisgIG1lZGl1bXAgJCh0eXBlKSBmYWlsID0gJChpbml0aWFsaXplcik7
CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwor
dmFyIHR5cGVzID0gWydib29sJywgJ2J2ZWMyJywgJ2J2ZWMzJywgJ2J2ZWM0J107Cit2YXIgdGVz
dHMgPSBbXTsKK3ZhciB2VGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoInZlcnRleFRlc3QiKTsK
K3ZhciBmVGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50VGVzdCIpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIGluaXRpYWxpemVy
ID0gJ3RydWUnOworICAgIGlmICh0eXBlc1tpXSAhPT0gJ2Jvb2wnKSB7CisgICAgICAgIGluaXRp
YWxpemVyID0gdHlwZXNbaV0gKyAiKHRydWUiOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IGk7ICsraikgeworICAgICAgICAgICAgaW5pdGlhbGl6ZXIgKz0gIiwgdHJ1ZSI7CisgICAgICAg
IH0KKyAgICAgICAgaW5pdGlhbGl6ZXIgKz0gIikiOworICAgIH0KKyAgICB2YXIgc3VicyA9IHt0
eXBlOiB0eXBlc1tpXSwgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyfTsKKyAgICB0ZXN0cy5wdXNo
KHsKKyAgICAgICAgdlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXModlRlc3RTb3VyY2Us
IHN1YnMpLAorICAgICAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICAgIHBhc3NNc2c6
ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggYSAiICsgdHlwZXNbaV0gKyAiIHZhcmlhYmxlIHdpdGggcHJl
Y2lzaW9uIHNob3VsZCBmYWlsLiIKKyAgICB9KTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAg
ZlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMoZlRlc3RTb3VyY2UsIHN1YnMpLAorICAg
ICAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICAgIHBhc3NNc2c6ICJmcmFnbWVudCBz
aGFkZXIgd2l0aCBhICIgKyB0eXBlc1tpXSArICIgdmFyaWFibGUgd2l0aCBwcmVjaXNpb24gc2hv
dWxkIGZhaWwuIgorICAgIH0pOworfQorR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRl
c3RzKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvY29uc3QtdmFyaWFibGUtaW5p
dGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9jb25zdC12YXJpYWJsZS1pbml0aWFsaXphdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5ZDhiZTdmNzBmMzEyMmFiYTFjYjgwOGVmOTk0YjM3NWE2YzZk
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvY29uc3QtdmFyaWFibGUtaW5pdGlhbGl6
YXRpb24uaHRtbApAQCAtMCwwICsxLDI0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+QWxsIHZhbGlkIGNvbnN0YW50IGV4cHJlc3Npb25z
IHNob3VsZCBiZSBhbGxvd2VkIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiBjb25zdCB2YXJpYWJs
ZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IlZl
cnRleFRlbXBsYXRlIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworJChpbml0KQorCit2b2lkIG1haW4oKSB7CisgICAgY29uc3QgJChjb25zdFR5
cGUpIGMgPSAkKGNvbnN0YW50RXhwcmVzc2lvbik7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGZs
b2F0KGMkKGNvbnN0VHlwZVRvU2NhbGFyKSkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJG
cmFnbWVudFRlbXBsYXRlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCiskKGluaXQpCisKK3ZvaWQgbWFpbigpIHsKKyAgICBjb25zdCAkKGNv
bnN0VHlwZSkgYyA9ICQoY29uc3RhbnRFeHByZXNzaW9uKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGZsb2F0KGMkKGNvbnN0VHlwZVRvU2NhbGFyKSkpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7CisKKy8vIEVTU0wgMS4wMCBzcGVjIHNlY3Rpb24gNC4zLjIuCisvLyBJbml0
aWFsaXplcnMgZm9yIGNvbnN0IGRlY2xhcmF0aW9ucyBtdXN0IGJlIGEgY29uc3RhbnQgZXhwcmVz
c2lvbi4KKworLy8gRVNTTCAxLjAwIHNwZWMgc2VjdGlvbiA1LjEwLgorLy8gQSBjb25zdGFudCBl
eHByZXNzaW9uIGlzIG9uZSBvZgorLy8gKiBhIGxpdGVyYWwgdmFsdWUgKGUuZy4sIDUgb3IgdHJ1
ZSkKKy8vICogYSBnbG9iYWwgb3IgbG9jYWwgdmFyaWFibGUgcXVhbGlmaWVkIGFzIGNvbnN0IGV4
Y2x1ZGluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzCisvLyAqIGFuIGV4cHJlc3Npb24gZm9ybWVkIGJ5
IGFuIG9wZXJhdG9yIG9uIG9wZXJhbmRzIHRoYXQgYXJlIGNvbnN0YW50IGV4cHJlc3Npb25zLCBp
bmNsdWRpbmcgZ2V0dGluZworLy8gYW4gZWxlbWVudCBvZiBhIGNvbnN0YW50IHZlY3RvciBvciBh
IGNvbnN0YW50IG1hdHJpeCwgb3IgYSBmaWVsZCBvZiBhIGNvbnN0YW50IHN0cnVjdHVyZQorLy8g
KiBhIGNvbnN0cnVjdG9yIHdob3NlIGFyZ3VtZW50cyBhcmUgYWxsIGNvbnN0YW50IGV4cHJlc3Np
b25zCisvLyAqIGEgYnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3aG9zZSBhcmd1bWVudHMgYXJlIGFs
bCBjb25zdGFudCBleHByZXNzaW9ucywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZQorLy8gdGV4
dHVyZSBsb29rdXAgZnVuY3Rpb25zLgorCit2YXIgYmluYXJ5T3BzR2VuVHlwZVJWYWx1ZXNUb0dl
blR5cGUgPSBbCisgICcrJywKKyAgJy0nLAorICAnKicsCisgICcvJworXTsKKwordmFyIGJpbmFy
eU9wc1NjYWxhcnNUb0Jvb2wgPSBbCisgICc8JywKKyAgJz4nLAorICAnPD0nLAorICAnPj0nCitd
OworCit2YXIgYmluYXJ5T3BzUlZhbHVlc1RvQm9vbCA9IFsKKyAgJz09JywKKyAgJyE9JworXTsK
KwordmFyIGJpbmFyeU9wc0Jvb2xzVG9Cb29sID0gWworICAnJiYnLAorICAnXl4nLAorICAnfHwn
CitdOworCit2YXIgYnVpbHRJbnNHZW5UeXBlVG9HZW5UeXBlID0gWworICAncmFkaWFucycsCisg
ICdkZWdyZWVzJywKKyAgJ3NpbicsCisgICdjb3MnLAorICAndGFuJywKKyAgJ2FzaW4nLAorICAn
YWNvcycsCisgICdhdGFuJywKKyAgJ2V4cCcsCisgICdsb2cnLAorICAnZXhwMicsCisgICdsb2cy
JywKKyAgJ3NxcnQnLAorICAnaW52ZXJzZXNxcnQnLAorICAnYWJzJywKKyAgJ3NpZ24nLAorICAn
Zmxvb3InLAorICAnY2VpbCcsCisgICdmcmFjdCcKK107CisKK3ZhciBidWlsdEluczJWZWNUb0J2
ZWMgPSBbCisgICdsZXNzVGhhbicsCisgICdsZXNzVGhhbkVxdWFsJywKKyAgJ2dyZWF0ZXJUaGFu
JywKKyAgJ2dyZWF0ZXJUaGFuRXF1YWwnLAorICAnZXF1YWwnLAorICAnbm90RXF1YWwnCitdOwor
Cit2YXIgYnVpbHRJbnMyR2VuVHlwZVRvR2VuVHlwZSA9IFsKKyAgJ2F0YW4nLAorICAncG93JywK
KyAgJ21vZCcsCisgICdtaW4nLAorICAnbWF4JywKKyAgJ3N0ZXAnCitdOworCit2YXIgcnVuVGVz
dCA9IGZ1bmN0aW9uKCkgeworICB2YXIgdnNUZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdWZXJ0ZXhUZW1wbGF0ZScpLnRleHQ7CisgIHZhciBmc1RlbXBsYXRlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ0ZyYWdtZW50VGVtcGxhdGUnKS50ZXh0OworCisgIHZhciB0ZXN0cyA9
IFtdOworICB2YXIgaTsKKyAgdmFyIG9wOworICB2YXIgYnVpbHRJbjsKKworICB2YXIgcHVzaFRl
c3QgPSBmdW5jdGlvbihjb25zdFR5cGUsIGNvbnN0YW50RXhwcmVzc2lvbiwgZXhwZWN0U3VjY2Vz
cywgb3B0X2luaXQpIHsKKyAgICBpZiAob3B0X2luaXQgPT09IHVuZGVmaW5lZCkgeworICAgICAg
b3B0X2luaXQgPSAnJzsKKyAgICB9CisgICAgdmFyIGNvbnN0VHlwZVRvU2NhbGFyID0gJyc7Cisg
ICAgaWYgKGNvbnN0VHlwZS5zdWJzdHJpbmcoMCwgMykgPT0gJ3ZlYycgfHwgY29uc3RUeXBlLnN1
YnN0cmluZygxLCA0KSA9PSAndmVjJykgeworICAgICAgICBjb25zdFR5cGVUb1NjYWxhciA9ICcu
eCc7CisgICAgfSBlbHNlIGlmIChjb25zdFR5cGUuc3Vic3RyaW5nKDAsIDMpID09ICdtYXQnKSB7
CisgICAgICAgIGNvbnN0VHlwZVRvU2NhbGFyID0gJ1swXS54JzsKKyAgICB9IGVsc2UgaWYgKGNv
bnN0VHlwZSA9PSAnbXlfc3RydWN0JykgeworICAgICAgICBjb25zdFR5cGVUb1NjYWxhciA9ICcu
ZmllbGQnOworICAgIH0KKyAgICB2YXIgdnMgPSB3dHUucmVwbGFjZVBhcmFtcyh2c1RlbXBsYXRl
LCB7Y29uc3RUeXBlOiBjb25zdFR5cGUsIGNvbnN0YW50RXhwcmVzc2lvbjogY29uc3RhbnRFeHBy
ZXNzaW9uLCBjb25zdFR5cGVUb1NjYWxhcjogY29uc3RUeXBlVG9TY2FsYXIsIGluaXQ6IG9wdF9p
bml0fSk7CisgICAgdmFyIGZzID0gd3R1LnJlcGxhY2VQYXJhbXMoZnNUZW1wbGF0ZSwge2NvbnN0
VHlwZTogY29uc3RUeXBlLCBjb25zdGFudEV4cHJlc3Npb246IGNvbnN0YW50RXhwcmVzc2lvbiwg
Y29uc3RUeXBlVG9TY2FsYXI6IGNvbnN0VHlwZVRvU2NhbGFyLCBpbml0OiBvcHRfaW5pdH0pOwor
ICAgIHRlc3RzLnB1c2goeworICAgICAgdlNoYWRlclNvdXJjZTogdnMsCisgICAgICB2U2hhZGVy
U3VjY2VzczogZXhwZWN0U3VjY2VzcywKKyAgICAgIGxpbmtTdWNjZXNzOiBleHBlY3RTdWNjZXNz
LAorICAgICAgcGFzc01zZzogIkFzc2lnbmluZyAiICsgY29uc3RhbnRFeHByZXNzaW9uICsgIiB0
byBhIGNvbnN0IGluIGEgdmVydGV4IHNoYWRlciBzaG91bGQgIiArIChleHBlY3RTdWNjZXNzID8g
ImNvbXBpbGUuIiA6ICJmYWlsIGNvbXBpbGF0aW9uLiIpCisgICAgfSk7CisgICAgdGVzdHMucHVz
aCh7CisgICAgICBmU2hhZGVyU291cmNlOiBmcywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBleHBl
Y3RTdWNjZXNzLAorICAgICAgbGlua1N1Y2Nlc3M6IGV4cGVjdFN1Y2Nlc3MsCisgICAgICBwYXNz
TXNnOiAiQXNzaWduaW5nICIgKyBjb25zdGFudEV4cHJlc3Npb24gKyAiIHRvIGEgY29uc3QgaW4g
YSBmcmFnbWVudCBzaGFkZXIgc2hvdWxkICIgKyAoZXhwZWN0U3VjY2VzcyA/ICJjb21waWxlLiIg
OiAiZmFpbCBjb21waWxhdGlvbi4iKQorICAgIH0pOworICB9CisKKyAgLy8gSGFuZGxlIHNvbWUg
b25lIG9mIGEga2luZCBjYXNlcyBmaXJzdAorICBwdXNoVGVzdCgnZmxvYXQnLCAndmVjNCgwLjUp
LngnLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ2Zsb2F0JywgJ3ZlYzQoMC41KVswXScsIHRydWUpOwor
ICBwdXNoVGVzdCgnZmxvYXQnLCAndHJ1ZSA/IDAuNSA6IDAuMicsIHRydWUpOworICBwdXNoVGVz
dCgnbXlfc3RydWN0JywgJ215X3N0cnVjdCgwLjUsIDAuMiknLCB0cnVlLCAnc3RydWN0IG15X3N0
cnVjdCB7IGZsb2F0IGZpZWxkOyBmbG9hdCBmaWVsZDI7IH07Jyk7CisgIHB1c2hUZXN0KCdmbG9h
dCcsICcoMC4yLCAwLjUpJywgdHJ1ZSk7CisKKyAgcHVzaFRlc3QoJ2Zsb2F0JywgJ2NsYW1wKDAu
MiwgMC4zLCAwLjQpJywgdHJ1ZSk7CisgIHB1c2hUZXN0KCdmbG9hdCcsICdtaXgoMC4yLCAwLjMs
IDAuNCknLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ2Zsb2F0JywgJ3Ntb290aHN0ZXAoMC4yLCAwLjMs
IDAuNCknLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ2Zsb2F0JywgJ2xlbmd0aCh2ZWM0KDAuNSkpJywg
dHJ1ZSk7CisgIHB1c2hUZXN0KCdmbG9hdCcsICdkaXN0YW5jZSh2ZWM0KDAuNSksIHZlYzQoMC4y
KSknLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ2Zsb2F0JywgJ2RvdCh2ZWM0KDAuNSksIHZlYzQoMC4y
KSknLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ3ZlYzMnLCAnY3Jvc3ModmVjMygwLjUpLCB2ZWMzKDAu
MikpJywgdHJ1ZSk7CisgIHB1c2hUZXN0KCd2ZWM0JywgJ25vcm1hbGl6ZSh2ZWM0KDAuNSkpJywg
dHJ1ZSk7CisgIHB1c2hUZXN0KCd2ZWM0JywgJ2ZhY2Vmb3J3YXJkKHZlYzQoMC4yKSwgdmVjNCgw
LjMpLCB2ZWM0KDAuNCkpJywgdHJ1ZSk7CisgIHB1c2hUZXN0KCd2ZWM0JywgJ3JlZmxlY3QodmVj
NCgwLjIpLCB2ZWM0KDAuNSkpJywgdHJ1ZSk7CisgIHB1c2hUZXN0KCd2ZWM0JywgJ3JlZnJhY3Qo
dmVjNCgwLjIpLCB2ZWM0KDAuMyksIDAuNCknLCB0cnVlKTsKKyAgcHVzaFRlc3QoJ21hdDQnLCAn
bWF0cml4Q29tcE11bHQobWF0NCgwLjIpLCBtYXQ0KDAuNSkpJywgdHJ1ZSk7CisKKyAgLy8gSGFu
ZGxlIGJ1aWx0LWluIGNvbnN0cnVjdG9ycworICBmb3IgKGkgPSAyOyBpIDw9IDQ7ICsraSkgewor
ICAgIHZhciB2ZWNUeXBlID0gJ3ZlYycgKyBpOworICAgIHB1c2hUZXN0KHZlY1R5cGUsIHZlY1R5
cGUgKyAnKDAuNSknLCB0cnVlKTsKKyAgICBwdXNoVGVzdCgnaScgKyB2ZWNUeXBlLCAnaScgKyB2
ZWNUeXBlICsgJygxKScsIHRydWUpOworICAgIHB1c2hUZXN0KCdiJyArIHZlY1R5cGUsICdiJyAr
IHZlY1R5cGUgKyAnKHRydWUpJywgdHJ1ZSk7CisgICAgcHVzaFRlc3QoJ21hdCcgKyBpLCAnbWF0
JyArIGkgKyAnKDAuNSknLCB0cnVlKTsKKyAgfQorCisgIC8vIEhhbmRsZSBvcHMKKyAgZm9yIChp
ID0gMDsgaSA8IGJpbmFyeU9wc0dlblR5cGVSVmFsdWVzVG9HZW5UeXBlLmxlbmd0aDsgKytpKSB7
CisgICAgdmFyIG9wID0gYmluYXJ5T3BzR2VuVHlwZVJWYWx1ZXNUb0dlblR5cGVbaV07CisgICAg
cHVzaFRlc3QoJ2Zsb2F0JywgJzAuMiAnICsgb3AgKyAnIDAuNScsIHRydWUpOworICAgIHB1c2hU
ZXN0KCd2ZWM0JywgJ3ZlYzQoMC4yKSAnICsgb3AgKyAnIHZlYzQoMC41KScsIHRydWUpOworICAg
IHB1c2hUZXN0KCdtYXQ0JywgJ21hdDQoMC4yKSAnICsgb3AgKyAnIG1hdDQoMC41KScsIHRydWUp
OworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IGJpbmFyeU9wc1NjYWxhcnNUb0Jvb2wubGVuZ3Ro
OyArK2kpIHsKKyAgICB2YXIgb3AgPSBiaW5hcnlPcHNTY2FsYXJzVG9Cb29sW2ldOworICAgIHB1
c2hUZXN0KCdib29sJywgJzAuMiAnICsgb3AgKyAnIDAuNScsIHRydWUpOworICB9CisKKyAgZm9y
IChpID0gMDsgaSA8IGJpbmFyeU9wc1JWYWx1ZXNUb0Jvb2wubGVuZ3RoOyArK2kpIHsKKyAgICB2
YXIgb3AgPSBiaW5hcnlPcHNSVmFsdWVzVG9Cb29sW2ldOworICAgIHB1c2hUZXN0KCdib29sJywg
JzAuMiAnICsgb3AgKyAnIDAuNScsIHRydWUpOworICAgIHB1c2hUZXN0KCdib29sJywgJ3ZlYzQo
MC4yKSAnICsgb3AgKyAnIHZlYzQoMC41KScsIHRydWUpOworICB9CisKKyAgZm9yIChpID0gMDsg
aSA8IGJpbmFyeU9wc0Jvb2xzVG9Cb29sLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIG9wID0gYmlu
YXJ5T3BzQm9vbHNUb0Jvb2xbaV07CisgICAgcHVzaFRlc3QoJ2Jvb2wnLCAnZmFsc2UgJyArIG9w
ICsgJyB0cnVlJywgdHJ1ZSk7CisgIH0KKworICAvLyBIYW5kbGUgYWxsb3dlZCBidWlsdC1pbnMK
KyAgZm9yIChpID0gMDsgaSA8IGJ1aWx0SW5zR2VuVHlwZVRvR2VuVHlwZS5sZW5ndGg7ICsraSkg
eworICAgIGJ1aWx0SW4gPSBidWlsdEluc0dlblR5cGVUb0dlblR5cGVbaV07CisgICAgcHVzaFRl
c3QoJ2Zsb2F0JywgYnVpbHRJbiArICcoMC41KScsIHRydWUpOworICAgIHB1c2hUZXN0KCd2ZWM0
JywgYnVpbHRJbiArICcodmVjNCgwLjUpKScsIHRydWUpOworICB9CisKKyAgZm9yIChpID0gMDsg
aSA8IGJ1aWx0SW5zMlZlY1RvQnZlYy5sZW5ndGg7ICsraSkgeworICAgIGJ1aWx0SW4gPSBidWls
dEluczJWZWNUb0J2ZWNbaV07CisgICAgcHVzaFRlc3QoJ2J2ZWM0JywgYnVpbHRJbiArICcodmVj
NCgwLjIpLCB2ZWM0KDAuNSkpJywgdHJ1ZSk7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgYnVp
bHRJbnMyR2VuVHlwZVRvR2VuVHlwZS5sZW5ndGg7ICsraSkgeworICAgIGJ1aWx0SW4gPSBidWls
dEluczJHZW5UeXBlVG9HZW5UeXBlW2ldOworICAgIHB1c2hUZXN0KCdmbG9hdCcsIGJ1aWx0SW4g
KyAnKDAuMiwgMC41KScsIHRydWUpOworICAgIHB1c2hUZXN0KCd2ZWM0JywgYnVpbHRJbiArICco
dmVjNCgwLjIpLCB2ZWM0KDAuNSkpJywgdHJ1ZSk7CisgIH0KKworICAvLyBJbmNsdWRlIHNvbWUg
ZXhwcmVzc2lvbnMgd2l0aCBhIGNvbnN0YW50IHZhcmlhYmxlIHJlZmVyZW5jZQorICBwdXNoVGVz
dCgnZmxvYXQnLCAnY2MnLCB0cnVlLCAnY29uc3QgZmxvYXQgY2MgPSAwLjU7Jyk7CisgIHB1c2hU
ZXN0KCdmbG9hdCcsICdjYyArIGNjMicsIHRydWUsICdjb25zdCBmbG9hdCBjYyA9IDAuNTsgY29u
c3QgZmxvYXQgY2MyID0gMC4yOycpOworICBwdXNoVGVzdCgnZmxvYXQnLCAnc3FydChjYyknLCB0
cnVlLCAnY29uc3QgZmxvYXQgY2MgPSAwLjU7Jyk7CisKKyAgR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3RzKHRlc3RzKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9lbWJlZGRl
ZC1zdHJ1Y3QtZGVmaW5pdGlvbnMtZm9yYmlkZGVuLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZW1iZWRkZWQt
c3RydWN0LWRlZmluaXRpb25zLWZvcmJpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjOTQ1ZmUyYzY1
OTNlMjMxNDUxODczNTUwOTI3Y2FhNmE0NGY5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21p
c2MvZW1iZWRkZWQtc3RydWN0LWRlZmluaXRpb25zLWZvcmJpZGRlbi5odG1sCkBAIC0wLDAgKzEs
NDEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGVtYmVkZGVkIHN0cnVj
dHVyZSBkZWZpbml0aW9ucyBhcmUgZm9yYmlkZGVuIHBlciBHTFNMIEVTIHNlY3Rpb24gNC4xLjgs
ICJTdHJ1Y3R1cmVzIiwgYW5kIHNob3VsZCBmYWlsCitzdHJ1Y3QgbmVzdGluZzEgeworICBzdHJ1
Y3QgbmVzdGluZzIgeworICAgIHZlYzQgdmVjdG9yOworICB9IGZpZWxkMjsKK307CisKK3VuaWZv
cm0gbmVzdGluZzEgdW5pZm9ybTE7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0g
dW5pZm9ybTEuZmllbGQyLnZlY3RvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL2VtcHR5LWRlY2xhcmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZW1wdHktZGVjbGFy
YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODUxODBmN2U4NTBhNTAzYTZkZWY3M2U1NTliZDVkMzVl
NmUzMmRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2VtcHR5LWRlY2xhcmF0aW9uLmh0
bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHMgLSBlbXB0eSBk
ZWNsYXJhdGlvbnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhFbXB0eURlY2xhcmF0aW9uIiB0eXBlPSJ0ZXh0
L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBWZXJ0ZXggc2hhZGVyIHdpdGggYW4gZW1w
dHkgZGVjbGFyYXRpb24gc2hvdWxkIHN1Y2NlZWQuCisvLyBTZWUgc2hhZGluZyBsYW5ndWFnZSBn
cmFtbWFyIHJ1bGVzIGluaXRfZGVjbGFyYXRvcl9saXN0IGFuZCBzaW5nbGVfZGVjbGFyYXRpb24K
Ky8vIGluIEVTU0wgc3BlY3MuCisvLyBFbXB0eSBkZWNsYXJhdGlvbnMgYXJlIGEgc2lkZSBlZmZl
Y3Qgb2YgaG93IGdyYW1tYXIgZm9yIHN0cnVjdHMgaXMgZGVmaW5lZC4KK3ZvaWQgbWFpbigpIHsK
KyAgICBmbG9hdDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0idmVydGV4RW1wdHlEZWNsYXJhdGlvblBsdXMiIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFZlcnRleCBzaGFkZXIgd2l0aCBhbiBlbXB0eSBkZWNs
YXJhdGlvbiBmb2xsb3dlZCBieSBkZWNsYXJhdG9yIHNob3VsZCBzdWNjZWVkLgorLy8gU2VlIHNo
YWRpbmcgbGFuZ3VhZ2UgZ3JhbW1hciBydWxlcyBpbml0X2RlY2xhcmF0b3JfbGlzdCBhbmQgc2lu
Z2xlX2RlY2xhcmF0aW9uCisvLyBpbiBFU1NMIHNwZWNzLgordm9pZCBtYWluKCkgeworICAgIGZs
b2F0LCBhID0gMC4wOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0idmVydGV4RW1wdHlTdHJ1Y3REZWNsYXJhdGlvblBsdXMiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFZlcnRleCBzaGFkZXIgd2l0aCBhbiBlbXB0
eSBkZWNsYXJhdGlvbiBmb2xsb3dlZCBieSBkZWNsYXJhdG9yIHNob3VsZCBzdWNjZWVkLgorLy8g
U2VlIHNoYWRpbmcgbGFuZ3VhZ2UgZ3JhbW1hciBydWxlcyBpbml0X2RlY2xhcmF0b3JfbGlzdCBh
bmQgc2luZ2xlX2RlY2xhcmF0aW9uCisvLyBpbiBFU1NMIHNwZWNzLgorCitzdHJ1Y3QgUyB7Cisg
ICAgZmxvYXQgbWVtYmVyOworfSwgYTsKKwordm9pZCBtYWluKCkgeworICAgIGEubWVtYmVyID0g
MC4wOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhLm1lbWJlcik7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9InZlcnRleEVtcHR5RGVjbGFyYXRpb25JblN0cnVjdCIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gVmVydGV4IHNoYWRlciB3aXRoIGFuIGVtcHR5IGRl
Y2xhcmF0aW9uIGluc2lkZSBzdHJ1Y3Qgc2hvdWxkIGZhaWwuCisvLyBJbi1zdHJ1Y3QgZGVjbGFy
YXRpb25zIGhhdmUgZGlmZmVyZW50IGdyYW1tYXIgZnJvbSBkZWNsYXJhdGlvbnMgb3V0c2lkZSBz
dHJ1Y3RzLgorc3RydWN0IFMgeworICAgIGZsb2F0OworICAgIGZsb2F0IGE7Cit9OworCit2b2lk
IG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9InZlcnRleEVtcHR5RGVjbGFyYXRpb25QbHVzSW5TdHJ1Y3QiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFZlcnRleCBzaGFkZXIgd2l0aCBhbiBlbXB0
eSBkZWNsYXJhdGlvbiBpbnNpZGUgc3RydWN0IHNob3VsZCBmYWlsLgorLy8gSW4tc3RydWN0IGRl
Y2xhcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBncmFtbWFyIGZyb20gZGVjbGFyYXRpb25zIG91dHNp
ZGUgc3RydWN0cy4KK3N0cnVjdCBTIHsKKyAgICBmbG9hdCwgYTsKKyAgICBmbG9hdCBiOworfTsK
Kwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3RzKFsKKyAgICB7IHZTaGFkZXJJZDogJ3ZlcnRleEVtcHR5RGVjbGFyYXRpb24nLAorICAgICAg
dlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHBh
c3NNc2c6ICdWZXJ0ZXggc2hhZGVyIHdpdGggYW4gZW1wdHkgZGVjbGFyYXRpb24gc2hvdWxkIHN1
Y2NlZWQnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJZDogJ3ZlcnRleEVtcHR5RGVjbGFyYXRpb25Q
bHVzJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRy
dWUsCisgICAgICBwYXNzTXNnOiAnVmVydGV4IHNoYWRlciB3aXRoIGFuIGVtcHR5IGRlY2xhcmF0
aW9uIGZvbGxvd2VkIGJ5IGRlY2xhcmF0b3Igc2hvdWxkIHN1Y2NlZWQnCisgICAgfSwKKyAgICB7
IHZTaGFkZXJJZDogJ3ZlcnRleEVtcHR5U3RydWN0RGVjbGFyYXRpb25QbHVzJywKKyAgICAgIHZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICBwYXNz
TXNnOiAnVmVydGV4IHNoYWRlciB3aXRoIGFuIGVtcHR5IHN0cnVjdCBkZWNsYXJhdGlvbiBmb2xs
b3dlZCBieSBkZWNsYXJhdG9yIHNob3VsZCBzdWNjZWVkJworICAgIH0sCisgICAgeyB2U2hhZGVy
SWQ6ICd2ZXJ0ZXhFbXB0eURlY2xhcmF0aW9uSW5TdHJ1Y3QnLAorICAgICAgdlNoYWRlclN1Y2Nl
c3M6IGZhbHNlLAorICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogJ1Zl
cnRleCBzaGFkZXIgd2l0aCBhbiBlbXB0eSBkZWNsYXJhdGlvbiBpbiBhIHN0cnVjdCBzaG91bGQg
ZmFpbCcKKyAgICB9LAorICAgIHsgdlNoYWRlcklkOiAndmVydGV4RW1wdHlEZWNsYXJhdGlvblBs
dXNJblN0cnVjdCcsCisgICAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3Vj
Y2VzczogZmFsc2UsCisgICAgICBwYXNzTXNnOiAnVmVydGV4IHNoYWRlciB3aXRoIGFuIGVtcHR5
IGRlY2xhcmF0aW9uIGZvbGxvd2VkIGJ5IGRlY2xhcmF0b3IgaW4gYSBzdHJ1Y3Qgc2hvdWxkIGZh
aWwnCisgICAgfQorXSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZW1wdHlfbWFpbi52
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2MvZW1wdHlfbWFpbi52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhj
MzA4ZDJkOTg2YjQ4NTFiYTc4ZTg4YWU2Njc5ZTdkMDNkYmE3ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvbWlzYy9lbXB0eV9tYWluLnZlcnQuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3Nv
bWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hhZGVyIHdpdGggYW4gZW1wdHkg
bWFpbigpIHNob3VsZCBzdWNjZWVkCit2b2lkIG1haW4oKSB7IH0KKzwvc2NyaXB0PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9leHByZXNzaW9uLWxpc3QtaW4tZGVjbGFyYXRvci1p
bml0aWFsaXplci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2V4cHJlc3Npb24tbGlzdC1pbi1kZWNsYXJhdG9y
LWluaXRpYWxpemVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiNzlkOTRlNTAwMzcxMTY2YThkNTdhMjI1
M2ZjMDA2Y2VlOTk2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9leHByZXNzaW9uLWxp
c3QtaW4tZGVjbGFyYXRvci1pbml0aWFsaXplci5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgICAkKHR5cGUpIGEs
IGI7CisgICAgJCh0eXBlKSBjID0gKGIgPSAkKGluaXRpYWxpemVyKSwgYSA9IGIpOworICAgIGds
X0ZyYWdDb2xvciA9ICQoYXNWZWM0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyBleHByZXNzaW9uIGxpc3RzIGluIGRlY2xhcmF0
b3IgaW5pdGlhbGl6ZXJzIHdvcmsgY29ycmVjdGx5LiIpOwordmFyIHRlc3RzID0gW107Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgdHlwZUluZm9zID0gWworICAgIHsgdHlwZTogJ2Zs
b2F0JywgICAgaW5pdGlhbGl6ZXI6ICcxLjAnLCAgICAgICAgICAgICAgICAgICAgICAgICBhc1Zl
YzQ6ICd2ZWM0KDAuMCwkKHZhciksMC4wLDEuMCknIH0sCisgICAgeyB0eXBlOiAndmVjMicsICAg
ICBpbml0aWFsaXplcjogJ3ZlYzIoMC4wLCAxLjApJywgICAgICAgICAgICAgIGFzVmVjNDogJ3Zl
YzQoJCh2YXIpLDAuMCwxLjApJyB9LAorICAgIHsgdHlwZTogJ3ZlYzMnLCAgICAgaW5pdGlhbGl6
ZXI6ICd2ZWMzKDAuMCwgMS4wLCAwLjApJywgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KCQodmFyKSwx
LjApJyB9LAorICAgIHsgdHlwZTogJ3ZlYzQnLCAgICAgaW5pdGlhbGl6ZXI6ICd2ZWM0KDAuMCwg
MS4wLCAwLjAsIDEuMCknLCAgICBhc1ZlYzQ6ICckKHZhciknIH0sCisgICAgeyB0eXBlOiAnaW50
JywgICAgICBpbml0aWFsaXplcjogJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzVmVj
NDogJ3ZlYzQoMC4wLCQodmFyKSwwLjAsMS4wKScgfSwKKyAgICB7IHR5cGU6ICdpdmVjMicsICAg
IGluaXRpYWxpemVyOiAnaXZlYzIoMCwgMSknLCAgICAgICAgICAgICAgICAgYXNWZWM0OiAndmVj
NCgkKHZhciksMC4wLDEuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzMnLCAgICBpbml0aWFsaXpl
cjogJ2l2ZWMzKDAsIDEsIDApJywgICAgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQoJCh2YXIpLDEu
MCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzQnLCAgICBpbml0aWFsaXplcjogJ2l2ZWM0KDAsIDEs
IDAsIDEpJywgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQoJCh2YXIpKScgfSwKKyAgICB7IHR5cGU6
ICdib29sJywgICAgIGluaXRpYWxpemVyOiAndHJ1ZScsICAgICAgICAgICAgICAgICAgICAgICAg
YXNWZWM0OiAndmVjNCgwLjAsJCh2YXIpLDAuMCwxLjApJyB9LAorICAgIHsgdHlwZTogJ2J2ZWMy
JywgICAgaW5pdGlhbGl6ZXI6ICdidmVjMihmYWxzZSwgdHJ1ZSknLCAgICAgICAgICBhc1ZlYzQ6
ICd2ZWM0KCQodmFyKSwwLjAsMS4wKScgfSwKKyAgICB7IHR5cGU6ICdidmVjMycsICAgIGluaXRp
YWxpemVyOiAnYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKScsICAgYXNWZWM0OiAndmVjNCgkKHZh
ciksMS4wKScgfSwKKyAgICB7IHR5cGU6ICdidmVjNCcsICAgIGluaXRpYWxpemVyOiAnYnZlYzQo
ZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKScsYXNWZWM0OiAndmVjNCgkKHZhcikpJyB9LAorXTsKKy8v
IEVuc3VyZSB0aGF0IGVhY2ggdmFyaWFibGUgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gZ3Jl
ZW4sIG5vdCBqdXN0IGMuCitbJ2EnLCAnYicsICdjJ10uZm9yRWFjaChmdW5jdGlvbih2YXJOYW1l
KSB7CisgICAgdHlwZUluZm9zLmZvckVhY2goZnVuY3Rpb24gKHR5cGVJbmZvKSB7CisgICAgICAg
IHZhciByZXBsYWNlUGFyYW1zID0geworICAgICAgICAgICAgdHlwZTogdHlwZUluZm8udHlwZSwK
KyAgICAgICAgICAgIGluaXRpYWxpemVyOiB0eXBlSW5mby5pbml0aWFsaXplciwKKyAgICAgICAg
ICAgIGFzVmVjNDogd3R1LnJlcGxhY2VQYXJhbXModHlwZUluZm8uYXNWZWM0LCB7dmFyOiB2YXJO
YW1lfSksCisgICAgICAgIH07CisgICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgZlNo
YWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMod3R1LmdldFNjcmlwdCgnZnJhZ21lbnRTaGFk
ZXInKSwgcmVwbGFjZVBhcmFtcyksCisgICAgICAgICAgICBwYXNzTXNnOiB0eXBlSW5mby50eXBl
ICsgJyB3aXRoIGNvbnRlbnRzIG9mICcgKyB2YXJOYW1lICsgJyByZW5kZXJlZCcsCisgICAgICAg
ICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgICAgIGxpbmtTdWNjZXNzOiB0cnVl
LAorICAgICAgICAgICAgcmVuZGVyOnRydWUKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL2ZyYWdjb2xvci1mcmFnZGF0YS1pbnZhcmlhbnQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9mcmFn
Y29sb3ItZnJhZ2RhdGEtaW52YXJpYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzNjg3MjUxNGJhZjZi
Y2U3YjNjNjMxMjQ5NjczYmUwNGUzY2IyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9m
cmFnY29sb3ItZnJhZ2RhdGEtaW52YXJpYW50Lmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0cyAtIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEgYm90aCBk
ZWNsYXJlZCBhcyBpbnZhcmlhbnQ8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4
dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gRGVjbGFyaW5nIGJvdGggZ2xfRnJhZ0Nv
bG9yIGFuZCBnbF9GcmFnRGF0YSBpbnZhcmlhbnQgc2hvdWxkIHN1Y2NlZWQuCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworLy8gU3RhdGljIHdyaXRlIG9mIGJvdGggZ2xfRnJhZ0NvbG9yIGFu
ZCBnbF9GcmFnRGF0YSBpcyBkaXNhbGxvd2VkLiBIb3dldmVyLCBzaW1wbHkgZGVjbGFyaW5nIGEg
dmFyaWFibGUgaW52YXJpYW50IGlzIG5vdCByZWFsbHkgYWNjZXNzaW5nIHRoZSB2YXJpYWJsZSwg
c28gaXQgc2hvdWxkIGJlIG9rLgoraW52YXJpYW50IGdsX0ZyYWdDb2xvcjsKK2ludmFyaWFudCBn
bF9GcmFnRGF0YTsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMS4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
bWlzYy9nbF9wb3NpdGlvbl91bnNldC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZ2xfcG9zaXRpb25f
dW5zZXQudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNDYyYzEyM2FiYWU1MDA0NzU2NjE1YTBiOWIx
ZmMwY2M4Yzg1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZ2xfcG9zaXRpb25fdW5z
ZXQudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0aG91dCBnbF9Qb3NpdGlvbiBiZWluZyB3cml0dGVu
IHNob3VsZCBzdWNjZWVkCit2b2lkIG1haW4oKSB7CisgIHZlYzQgYSA9IHZlYzQoMC4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgZmxvYXQgZiA9IGEueDsKKyAgYS55ID0gZjsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9nbG9iYWwtdmFyaWFibGUtaW5pdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL2dsb2JhbC12YXJpYWJsZS1pbml0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTllNzQx
N2Y2OWNmMWFkNTc5NmI5MTZlNzIwYmI4YzhiOTM4MTk5YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvbWlzYy9nbG9iYWwtdmFyaWFibGUtaW5pdC5odG1sCkBAIC0wLDAgKzEsMzIzIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HbG9iYWwg
dmFyaWFibGUgaW5pdGlhbGl6ZXIgcmVzdHJpY3Rpb25zPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1
cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iY29uc3RHbG9iYWxT
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworYXR0cmlidXRlIHZlYzQgYVBvc2l0aW9uOwordmFyeWluZyBmbG9hdCB2OworCitjb25zdCBm
bG9hdCBjID0gMS4wOworZmxvYXQgZiA9IGM7CisKK3ZvaWQgbWFpbigpIHsKKyAgICB2ID0gZjsK
KyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
Z2xvYmFsU2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKK2F0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsKK3ZhcnlpbmcgZmxvYXQgdjsKKwor
ZmxvYXQgYyA9IDEuMDsKK2Zsb2F0IGYgPSBjOworCit2b2lkIG1haW4oKSB7CisgICAgdiA9IGY7
CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
InVuaWZvcm1TaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYVBvc2l0aW9uOwordmFyeWluZyBmbG9hdCB2Owor
Cit1bmlmb3JtIGZsb2F0IHU7CitmbG9hdCBmID0gdTsKKwordm9pZCBtYWluKCkgeworICAgIHYg
PSBmOworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJidWlsdGluRnVuY3Rpb25TaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYVBvc2l0aW9uOwordmFyeWlu
ZyBmbG9hdCB2OworCitmbG9hdCBjID0gMS4wOworZmxvYXQgZiA9IHNpbihjKTsKKwordm9pZCBt
YWluKCkgeworICAgIHYgPSBmOworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJidWlsdGluVGV4dHVyZUZ1bmN0aW9uU2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2F0dHJpYnV0ZSB2
ZWM0IGFQb3NpdGlvbjsKK3ZhcnlpbmcgZmxvYXQgdjsKKwordW5pZm9ybSBzYW1wbGVyMkQgczsK
K2Zsb2F0IGYgPSB0ZXh0dXJlMkRMb2QocywgdmVjMigwLjUsIDAuNSksIDAuMCkueDsKKwordm9p
ZCBtYWluKCkgeworICAgIHYgPSBmOworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJhdHRyaWJ1dGVTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYVBvc2l0
aW9uOwordmFyeWluZyBmbG9hdCB2OworCitmbG9hdCBmID0gYVBvc2l0aW9uLng7CisKK3ZvaWQg
bWFpbigpIHsKKyAgICB2ID0gZjsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0idXNlckRlZmluZWRGdW5jdGlvblNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CithdHRyaWJ1dGUgdmVj
NCBhUG9zaXRpb247Cit2YXJ5aW5nIGZsb2F0IHY7CisKK2Zsb2F0IGZvbygpIHsKKyAgICByZXR1
cm4gMS4wOworfQorZmxvYXQgZiA9IGZvbygpOworCit2b2lkIG1haW4oKSB7CisgICAgdiA9IGY7
CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
InZhcnlpbmdTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIGZsb2F0IHY7CitmbG9hdCBmID0gdjsKKwordm9pZCBtYWlu
KCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9Imdsb2JhbExWYWx1ZVNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CithdHRyaWJ1dGUgdmVjNCBhUG9zaXRpb247Cit2YXJ5aW5nIGZs
b2F0IHY7CisKK2Zsb2F0IGMgPSAxLjA7CitmbG9hdCBmID0gKGMgPSAwLjApOworCit2b2lkIG1h
aW4oKSB7CisgICAgdiA9IGY7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9Imdsb2JhbExWYWx1ZVNoYWRlcjIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYVBvc2l0
aW9uOwordmFyeWluZyBmbG9hdCB2OworCitmbG9hdCBjID0gMS4wOworZmxvYXQgZiA9IChjKysp
OworCit2b2lkIG1haW4oKSB7CisgICAgdiA9IGY7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRp
b247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9Imdsb2JhbE5vbkNvbnN0VGVybmFyeSIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2Zsb2F0
IGdyZWVuID0gMS4wOworZmxvYXQgYmxhY2sgPSAwLjA7CitmbG9hdCBmID0gdHJ1ZSA/IGdyZWVu
IDogYmxhY2s7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
ZiwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJnbG9iYWxVbmlmb3JtVGVy
bmFyeSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKK3VuaWZvcm0gZmxvYXQgdV96ZXJvOworZmxvYXQgZ3JlZW4gPSAxLjAgKyB1X3plcm87Citm
bG9hdCBmID0gdHJ1ZSA/IGdyZWVuIDogdV96ZXJvOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLjAsIGYsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZ2xvYmFsVW5pZm9ybVRlcm5hcnkyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCB1X3plcm87CitmbG9hdCBn
cmVlbiA9IDEuMDsKK2Zsb2F0IGYgPSAodV96ZXJvIDwgMC4xKSA/IGdyZWVuIDogMC4wOworCit2
b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGYsIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZ2xvYmFsVW5pZm9ybVN0cnVjdCIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVjdCBTIHsK
KyAgICBmbG9hdCB6ZXJvOworICAgIGludCBvbmU7Cit9OwordW5pZm9ybSBTIHVzOworUyBzID0g
dXM7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBmbG9hdCBncmVlbiA9IChzLm9uZSA9PSAxKSA/IDEu
MCA6IDAuMDsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgZ3JlZW4sIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iYnVpbHRJbkNvbnN0YW50IiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworaW50IGkgPSBnbF9NYXhG
cmFnbWVudFVuaWZvcm1WZWN0b3JzOworCit2b2lkIG1haW4oKSB7CisgICAgZmxvYXQgZ3JlZW4g
PSAoaSA+IDApID8gMS4wIDogMC4wOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCBncmVl
biwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJidWlsdEluTm9uQ29uc3Rh
bnQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit2ZWM0IHYgPSBnbF9GcmFnQ29vcmQ7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0cyhbCisgIHsKKyAgICB2U2hhZGVySWQ6ICJjb25zdEdsb2JhbFNoYWRlciIsCisg
ICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFz
c01zZzogIkEgY29uc3QgZ2xvYmFsIGluIGEgZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVyIHNo
b3VsZCBiZSBhY2NlcHRlZCBieSBXZWJHTC4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJn
bG9iYWxTaGFkZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICAgIHBhc3NNc2c6ICJBbm90aGVyIGdsb2JhbCBpbiBhIGdsb2JhbCB2YXJpYWJs
ZSBpbml0aWFsaXplciBzaG91bGQgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgorICB9LAorICB7Cisg
ICAgdlNoYWRlcklkOiAidW5pZm9ybVNoYWRlciIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUs
CisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogIkEgdW5pZm9ybSBpbiBhIGds
b2JhbCB2YXJpYWJsZSBpbml0aWFsaXplciBzaG91bGQgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgor
ICB9LAorICB7CisgICAgdlNoYWRlcklkOiAiYnVpbHRpbkZ1bmN0aW9uU2hhZGVyIiwKKyAgICB2
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNn
OiAiQSBidWlsdC1pbiBtYXRoIGZ1bmN0aW9uIGluIGEgZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxp
emVyIHNob3VsZCBiZSBhY2NlcHRlZCBieSBXZWJHTC4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVy
SWQ6ICJidWlsdGluVGV4dHVyZUZ1bmN0aW9uU2hhZGVyIiwKKyAgICB2U2hhZGVyU3VjY2Vzczog
ZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJBIHRleHR1cmUg
bG9va3VwIGZ1bmN0aW9uIGluIGEgZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVyIHNob3VsZCBu
b3QgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAiYXR0
cmlidXRlU2hhZGVyIiwKKyAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nl
c3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJBbiBhdHRyaWJ1dGUgaW4gYSBnbG9iYWwgdmFyaWFi
bGUgaW5pdGlhbGl6ZXIgc2hvdWxkIG5vdCBiZSBhY2NlcHRlZCBieSBXZWJHTC4iCisgIH0sCisg
IHsKKyAgICB2U2hhZGVySWQ6ICJ1c2VyRGVmaW5lZEZ1bmN0aW9uU2hhZGVyIiwKKyAgICB2U2hh
ZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6
ICJBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBjYWxsIGluIGEgZ2xvYmFsIHZhcmlhYmxlIGluaXRp
YWxpemVyIHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgorICB9LAorICB7CisgICAg
dlNoYWRlcklkOiAiY29uc3RHbG9iYWxTaGFkZXIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgIGZTaGFkZXJJZDogInZhcnlpbmdTaGFkZXIiLAorICAgIGZTaGFkZXJTdWNjZXNzOiBm
YWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogIkEgdmFyeWluZyBp
biBhIGdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplciBzaG91bGQgbm90IGJlIGFjY2VwdGVkIGJ5
IFdlYkdMLiIKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogImdsb2JhbExWYWx1ZVNoYWRlciIs
CisgICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAg
ICBwYXNzTXNnOiAiQW5vdGhlciBnbG9iYWwgYXMgYW4gbC12YWx1ZSBpbiBhIGdsb2JhbCB2YXJp
YWJsZSBpbml0aWFsaXplciBzaG91bGQgbm90IGJlIGFjY2VwdGVkIGJ5IFdlYkdMLiIKKyAgfSwK
KyAgeworICAgIHZTaGFkZXJJZDogImdsb2JhbExWYWx1ZVNoYWRlcjIiLAorICAgIHZTaGFkZXJT
dWNjZXNzOiBmYWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogIkFu
b3RoZXIgZ2xvYmFsIGFzIGFuIGwtdmFsdWUgKHBhcmFtZXRlciBvZiArKykgaW4gYSBnbG9iYWwg
dmFyaWFibGUgaW5pdGlhbGl6ZXIgc2hvdWxkIG5vdCBiZSBhY2NlcHRlZCBieSBXZWJHTC4iCisg
IH0sCisgIHsKKyAgICBmU2hhZGVySWQ6ICJnbG9iYWxOb25Db25zdFRlcm5hcnkiLAorICAgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRlcjog
dHJ1ZSwKKyAgICBwYXNzTXNnOiAiTm9uLWNvbnN0IGdsb2JhbCB2YXJpYWJsZXMgYXMgb3BlcmFu
ZHMgZm9yIGEgdGVybmFyeSBvcGVyYXRvciBpbiBhIGdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXpl
ciBzaG91bGQgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgorICB9LAorICB7CisgICAgZlNoYWRlcklk
OiAiZ2xvYmFsVW5pZm9ybVRlcm5hcnkiLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRlcjogdHJ1ZSwKKyAgICBwYXNzTXNnOiAiQSB1
bmlmb3JtIGFzIHRoZSBzZWNvbmQgb3BlcmFuZCBmb3IgYSB0ZXJuYXJ5IG9wZXJhdG9yIGluIGEg
Z2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVyIHNob3VsZCBiZSBhY2NlcHRlZCBieSBXZWJHTC4i
CisgIH0sCisgIHsKKyAgICBmU2hhZGVySWQ6ICJnbG9iYWxVbmlmb3JtVGVybmFyeTIiLAorICAg
IGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRl
cjogdHJ1ZSwKKyAgICBwYXNzTXNnOiAiUmVmZXJlbmNpbmcgYSB1bmlmb3JtIGluc2lkZSB0aGUg
Zmlyc3Qgb3BlcmFuZCBmb3IgYSB0ZXJuYXJ5IG9wZXJhdG9yIGluIGEgZ2xvYmFsIHZhcmlhYmxl
IGluaXRpYWxpemVyIHNob3VsZCBiZSBhY2NlcHRlZCBieSBXZWJHTC4iCisgIH0sCisgIHsKKyAg
ICBmU2hhZGVySWQ6ICJnbG9iYWxVbmlmb3JtU3RydWN0IiwKKyAgICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICByZW5kZXI6IHRydWUsCisgICAgdW5p
Zm9ybXM6IFsKKyAgICAgICAgeyBuYW1lOiAndXMub25lJywgZnVuY3Rpb25OYW1lOiAndW5pZm9y
bTFpJywgdmFsdWU6IDEgfQorICAgIF0sCisgICAgcGFzc01zZzogIkEgZ2xvYmFsIHN0cnVjdCBp
bml0aWFsaXplZCB3aXRoIGEgdW5pZm9ybSBzdHJ1Y3Qgc2hvdWxkIGJlIGFjY2VwdGVkIGJ5IFdl
YkdMLiIKKyAgfSwKKyAgeworICAgIGZTaGFkZXJJZDogImJ1aWx0SW5Db25zdGFudCIsCisgICAg
ZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcmVuZGVy
OiB0cnVlLAorICAgIHBhc3NNc2c6ICJSZWZlcmVuY2luZyBhIGJ1aWx0LWluIGNvbnN0YW50IGlu
IGEgZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVyIHNob3VsZCBiZSBhY2NlcHRlZCBieSBXZWJH
TC4iCisgIH0sCisgIHsKKyAgICBmU2hhZGVySWQ6ICJidWlsdEluTm9uQ29uc3RhbnQiLAorICAg
IGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFz
c01zZzogIlJlZmVyZW5jaW5nIGEgYnVpbHQtaW4gbm9uLWNvbnN0YW50IGluIGEgZ2xvYmFsIHZh
cmlhYmxlIGluaXRpYWxpemVyIHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkgV2ViR0wuIgorICB9
CitdKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZ2xzbC0ydHlwZXMtb2YtdGV4dHVyZXMt
b24tc2FtZS11bml0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvZ2xzbC0ydHlwZXMtb2YtdGV4dHVyZXMtb24t
c2FtZS11bml0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU4YWViZGUzOTI2OGVjNmY3YWUxYWZmNDg5ZTVl
MjlmZjE1YjZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9nbHNsLTJ0eXBlcy1vZi10
ZXh0dXJlcy1vbi1zYW1lLXVuaXQuaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+V2ViR0wgR0xT
TCAyIHR5cGVzIG9mIHRleHR1cmVzIG9uIHNhbWUgdW5pdCBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0
bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0
MHB4OyI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyZCIgd2lkdGg9IjEiIGhlaWdodD0i
MSIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBp
ZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBv
c2l0aW9uOworYXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFyeWluZyB2ZWMyIHRleENvb3Jk
Owordm9pZCBtYWluKCkKK3sKKyAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgIHRleENvb3Jk
ID0gdGV4Q29vcmQwOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZv
cm0gc2FtcGxlcjJEIHRleDJkOwordW5pZm9ybSBzYW1wbGVyQ3ViZSB0ZXhDdWJlOwordmFyeWlu
ZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gIHRleHR1
cmUyRCh0ZXgyZCwgdGV4Q29vcmQpICsKKyAgICAgICAgICAgICAgICAgIHRleHR1cmVDdWJlKHRl
eEN1YmUsIHZlYzMoMCwxLDApKTsKK30KKzwvc2NyaXB0PgorCisgIDxzY3JpcHQ+CisgICJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIGluaXQoKQoreworICBkZXNjcmlwdGlvbigKKyAgICAiVGVzdHMg
dGhhdCB1c2luZyAyIHR5cGVzIG9mIHRleHR1cmVzIG9uIHRoZSBzYW1lIHRleHR1cmUgdW5pdCIg
KworICAgICJhbmQgcmVmZXJlbmNpbmcgdGhlbSBib3RoIGluIHRoZSBzYW1lIHByb2dyYW0gZmFp
bHMgYXMgcGVyIiArCisgICAgIk9wZW5HTCBFUyAyLjAuMjQgc3BlYyBzZWN0aW9uIDIuMTAuNCwg
U2FtcGxlcnMgc3Vic2VjdGlvbi4iKTsKKworICB2YXIgY2FudmFzMmQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzMmQiKTsKKyAgdmFyIGN0eDJkID0gY2FudmFzMmQuZ2V0Q29udGV4
dCgiMmQiKTsKKworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgIHZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiIsICJ0ZXhDb29yZDAi
XSk7CisKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVyRGF0YSgK
KyAgICAgIGdsLkFSUkFZX0JVRkZFUiwKKyAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAg
ICAgIC0xLCAxLDAsIDEsMSwwLCAtMSwtMSwwLAorICAgICAgICAgIC0xLC0xLDAsIDEsMSwwLCAg
MSwtMSwwXSksCisgICAgICBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDApOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxz
ZSwgMCwgMCk7CisKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVy
RGF0YSgKKyAgICAgIGdsLkFSUkFZX0JVRkZFUiwKKyAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWwor
ICAgICAgICAgIDAsMCwgMSwwLCAwLDEsCisgICAgICAgICAgMCwxLCAxLDAsIDEsMV0pLAorICAg
ICAgZ2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisg
IC8vIE1ha2UgdGV4dHVyZSB1bml0IDEgYWN0aXZlLgorICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRF
WFRVUkUxKTsKKworICAvLyBNYWtlIGEgMmQgdGV4dHVyZQorICB2YXIgdGV4MmQgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDJkKTsKKyAg
Y3R4MmQuZmlsbFN0eWxlID0gInJnYmEoMCwgMCwgMjU1LCAyNTUpIjsKKyAgY3R4MmQuZmlsbFJl
Y3QoMCwgMCwgMSwgMSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgY2FudmFzMmQpOworCisgIC8vIG1ha2UgYSBj
dWJlIHRleHR1cmUKKyAgdmFyIHRleEN1YmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmUpOworICBjdHgyZC5maWxsU3R5
bGUgPSAicmdiYSgwLCAyNTUsIDAsIDY0KSI7CisgIGN0eDJkLmZpbGxSZWN0KDAsIDAsIDEsIDEp
OworICB2YXIgdGFyZ2V0cyA9IFsKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
CisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWl07CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0YXJnZXRzLmxlbmd0aDsg
KytpaSkgeworICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1tpaV0sIDAsIGdsLlJHQkEsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhczJkKTsKKyAgfQorCisgIHZhciB0ZXgyZExvYyA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4MmQiKTsKKyAgdmFyIHRleEN1YmVM
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleEN1YmUiKTsKKyAgZ2wudW5p
Zm9ybTFpKHRleDJkTG9jLCAxKTsKKyAgZ2wudW5pZm9ybTFpKHRleEN1YmVMb2MsIDEpOworCisg
IGdsLmNsZWFyQ29sb3IoMSwwLDAsMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQg
fCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgNDsgKytp
aSkgeworICAgIHZhciB4ID0gaWkgJSAyOworICAgIHZhciB5ID0gTWF0aC5mbG9vcihpaSAvIDIp
OworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgImRyYXdp
bmcgd2l0aCAyIGRpZmZlcmVudCB0YXJnZXRzIG9uIHRoZSBzYW1lIHRleHR1cmUgdW5pdCBzaG91
bGQgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRSIpOworICB9Cit9CisKK2luaXQoKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL2dsc2wtZnVuY3Rpb24tbm9kZXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9nbHNs
LWZ1bmN0aW9uLW5vZGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY2MzU2ZmM0MzBlMWE0YThhNTczMjhl
NjRhMGIyOWE4NzNlZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9nbHNsLWZ1bmN0
aW9uLW5vZGVzLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgZnVuY3Rpb24gbm9kZXMgVGVzdDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXJG
dW5jdGlvbiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYVBvc2l0
aW9uOwordmFyeWluZyB2ZWM0IHZDb2xvcjsKKworZmxvYXQgc2lnbl9lbXUoZmxvYXQgdmFsdWUp
IHsKKyAgaWYgKHZhbHVlID09IDAuMCkgcmV0dXJuIDAuMDsKKyAgcmV0dXJuIHZhbHVlID4gMC4w
ID8gMS4wIDogLTEuMDsKK30KKwordm9pZCBtYWluKCkKK3sKKyAgIGdsX1Bvc2l0aW9uID0gYVBv
c2l0aW9uOworICAgdmVjMiB0ZXhjb29yZCA9IHZlYzIoYVBvc2l0aW9uLnh5ICogMC41ICsgdmVj
MigwLjUsIDAuNSkpOworICAgdmVjNCBjb2xvciA9IHZlYzQoCisgICAgICAgdGV4Y29vcmQsCisg
ICAgICAgdGV4Y29vcmQueCAqIHRleGNvb3JkLnksCisgICAgICAgKDEuMCAtIHRleGNvb3JkLngp
ICogdGV4Y29vcmQueSAqIDAuNSArIDAuNSk7CisgICB2Q29sb3IgPSB2ZWM0KAorICAgIHNpZ25f
ZW11KGNvbG9yLnggKiAyLjAgLSAxLjApICogMC41ICsgMC41LAorICAgIHNpZ25fZW11KGNvbG9y
LnkgKiAyLjAgLSAxLjApICogMC41ICsgMC41LAorICAgIDAsCisgICAgMSk7Cit9Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBpZD0idnNoYWRlck1hY3JvIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjNCBhUG9zaXRpb247Cit2YXJ5aW5nIHZlYzQgdkNvbG9yOworCisjZGVm
aW5lIHNpZ25fZW11KHZhbHVlKSAoKHZhbHVlKSA9PSAwLjAgPyAwLjAgOiAoKHZhbHVlKSA+IDAu
MCA/IDEuMCA6IC0xLjApKQorCit2b2lkIG1haW4oKQoreworICAgZ2xfUG9zaXRpb24gPSBhUG9z
aXRpb247CisgICB2ZWMyIHRleGNvb3JkID0gdmVjMihhUG9zaXRpb24ueHkgKiAwLjUgKyB2ZWMy
KDAuNSwgMC41KSk7CisgICB2ZWM0IGNvbG9yID0gdmVjNCgKKyAgICAgICB0ZXhjb29yZCwKKyAg
ICAgICB0ZXhjb29yZC54ICogdGV4Y29vcmQueSwKKyAgICAgICAoMS4wIC0gdGV4Y29vcmQueCkg
KiB0ZXhjb29yZC55ICogMC41ICsgMC41KTsKKyAgIHZDb2xvciA9IHZlYzQoCisgICAgc2lnbl9l
bXUoY29sb3IueCAqIDIuMCAtIDEuMCkgKiAwLjUgKyAwLjUsCisgICAgc2lnbl9lbXUoY29sb3Iu
eSAqIDIuMCAtIDEuMCkgKiAwLjUgKyAwLjUsCisgICAgMCwKKyAgICAxKTsKK30KKzwvc2NyaXB0
PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IHZDb2xvcjsKK3ZvaWQgbWFpbigp
Cit7CisgICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iY2FudmFzRnVuY3Rpb24iIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+
PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXNNYWNybyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIGFnYWluc3QgYSBN
YWMgZHJpdmVyIGJ1ZyByZWxhdGVkIHRvIGZ1bmN0aW9uIGNhbGxzLjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHdpZHRoID0gNTA7
Cit2YXIgaGVpZ2h0ID0gNTA7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0aW9u
IGRyYXdBbmRSZWFkKGNhbnZhc0lELCB2c2hhZGVySUQsIGJ1ZmZlcikKK3sKKyAgICB2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhc0lEKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFByb2dyYW0oZ2wsIFt2c2hhZGVySUQsICJmc2hhZGVyIl0sIFsiYVBvc2l0aW9uIl0pOwor
ICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAw
LjUsLTAuNSwwIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRI
X0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKyAg
ICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGJ1ZmZlcik7CisgICAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gY29t
cGFyZVJlbmRlcmluZyhidWZmZXIxLCBidWZmZXIyLCB0b2wpCit7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB3aWR0aCAqIGhlaWdodCAqIDQ7ICsraSkgeworICAgICAgICBpZiAoTWF0aC5hYnMo
YnVmZmVyMVtpXSAtIGJ1ZmZlcjJbaV0pID4gdG9sKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gaW5pdCgpCit7CisgICAg
ZGVzY3JpcHRpb24oInRlc3RzIGZ1bmN0aW9uIG5vZGVzIik7CisKKyAgICB2YXIgYnVmRnVuY3Rp
b24gPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIHZhciBidWZNYWNy
byA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisKKyAgICBpZiAoZHJhd0Fu
ZFJlYWQoImNhbnZhc0Z1bmN0aW9uIiwgInZzaGFkZXJGdW5jdGlvbiIsIGJ1ZkZ1bmN0aW9uKSA9
PSBmYWxzZSB8fAorICAgICAgICBkcmF3QW5kUmVhZCgiY2FudmFzTWFjcm8iLCAidnNoYWRlck1h
Y3JvIiwgYnVmTWFjcm8pID09IGZhbHNlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldHVwIGZh
aWxlZCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjb21wYXJlUmVuZGVyaW5nKGJ1ZkZ1
bmN0aW9uLCBidWZNYWNybywgNCkgPT0gZmFsc2UpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJS
ZW5kZXJpbmcgcmVzdWx0cyBhcmUgZGlmZmVyZW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlJlbmRlcmluZyByZXN1bHRzIGFyZSB0aGUgc2FtZSIpOworICAgIH0K
K30KKworaW5pdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2dsc2wtbG9uZy12YXJpYWJsZS1u
YW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL2dsc2wtbG9uZy12YXJpYWJsZS1uYW1lcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMxZTg4MDI3YTZkYzBmYWZjNTdlNTQyNjlmNDI4NmZiZmFmYzEzYWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2MvZ2xzbC1sb25nLXZhcmlhYmxlLW5hbWVzLmh0bWwKQEAgLTAs
MCArMSwyMjcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPmdsc2wgbG9uZyB2YXJpYWJsZSBuYW1lIG1hcHBpbmcgdGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiPgorVGhlcmUgaXMgc3VwcG9zZWQgdG8gYmUgYW4gZXhhbXBsZSBkcmF3aW5n
IGhlcmUsIGJ1dCBpdCdzIG5vdCBpbXBvcnRhbnQuCis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNo
YWRlcl9zaGFyZWRfdW5pZm9ybSIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRl
IHZlYzMgdlBvc2l0aW9uOwordW5pZm9ybSBtZWRpdW1wIGZsb2F0IHZhbHVlMDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTA7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9z
aXRpb24sIHZhbHVlMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTApOworfQorPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJfc2hhcmVkX3VuaWZvcm0iIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGZsb2F0IHZhbHVlMDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTA7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIHZhbHVlMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBpZD0idnNoYWRlcl91bmlmb3JtX2FycmF5IiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyB2UG9zaXRpb247Cit2b2lkIG1haW4oKQorewor
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24sIDEuMCk7Cit9Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBpZD0iZnNoYWRlcl91bmlmb3JtX2FycmF5IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCBjb2xvcjAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3WzJdOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGNvbG9yMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjdbMF0sIGNvbG9yMDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
NjdbMV0sIDEuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyX3Zh
cnlpbmciIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIHZQb3NpdGlv
bjsKK3ZhcnlpbmcgZmxvYXQgdmFsdWUwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDsKK3ZvaWQgbWFp
bigpCit7CisgICAgdmFsdWUwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCA9IDEuMDsKKyAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImZzaGFkZXJfdmFyeWluZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgZmxvYXQgdmFsdWUwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2YWx1ZTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwLCAwLjAsIDEuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJ2c2hhZGVyX2xvY2FsIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjMyB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGZvciAoaW50IGkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQgPSAwOyBpMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0IDwg
MTsgKytpMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0KQorICAgIHsKKyAgICAgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHZQb3NpdGlvbiwgMS4wKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iZnNoYWRlcl9sb2NhbCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7CisgICAgZm9yIChpbnQgaTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCA9IDA7IGkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQg
PCAxOyArK2kwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQpCisgICAgeworICAgICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAxLjAsIDEuMCk7CisgICAgfQorfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9InZzaGFkZXJfYXR0cmliIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjMyB2UG9zaXRpb24wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Owordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uMDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
NiwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyX2F0dHJpYiIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQg
bWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMS4wLCAxLjApOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVmVy
aWZ5IHRoYXQgc2hhZGVyIGxvbmcgdmFyaWFibGUgbmFtZXMgd29ya3MgZmluZSBpZiB0aGV5IGFy
ZSB3aXRoaW4gMjU2IGNoYXJhY3RlcnMuIik7CisKK2RlYnVnKCJUZXN0IHNhbWUgbG9uZyB1bmlm
b3JtIG5hbWUgaW4gYm90aCB2ZXJ0ZXggc2hhZGVyIGFuZCBmcmFnbWVudCBzaGFkZXIiKTsKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyX3No
YXJlZF91bmlmb3JtIiwgImZzaGFkZXJfc2hhcmVkX3VuaWZvcm0iXSwgWyJ2UG9zaXRpb24iXSk7
CitzaG91bGRCZU5vbk51bGwoImdsIik7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5O
T19FUlJPUiIpOwordmFyIHByb2cgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ1VSUkVOVF9QUk9HUkFN
KTsKK3Nob3VsZEJlTm9uTnVsbCgicHJvZyIpOwordmFyIHZhbHVlTG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2csICJ2YWx1ZTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIik7CitzaG91bGRC
ZU5vbk51bGwoInZhbHVlTG9jIik7CitzaG91bGRCZSgiZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihw
cm9nLCBnbC5BQ1RJVkVfVU5JRk9STVMpIiwgIjEiKTsKK3ZhciBhY3RpdmVVbmlmb3JtID0gZ2wu
Z2V0QWN0aXZlVW5pZm9ybShwcm9nLCAwKTsKK3Nob3VsZEJlTm9uTnVsbCgiYWN0aXZlVW5pZm9y
bSIpOworc2hvdWxkQmUoImFjdGl2ZVVuaWZvcm0udHlwZSIsICJnbC5GTE9BVCIpOworc2hvdWxk
QmUoImFjdGl2ZVVuaWZvcm0uc2l6ZSIsICIxIik7CitzaG91bGRCZSgiYWN0aXZlVW5pZm9ybS5u
YW1lIiwgIid2YWx1ZTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwJyIpOworZ2wudW5pZm9ybTFmKHZh
bHVlTG9jLCAxLjApOworZHJhd0FuZENoZWNrUGl4ZWxzKGdsKTsKK3Nob3VsZEJlKCJnbC5nZXRF
cnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IGxvbmcg
dW5pZm9ybSBhcnJheSBuYW1lIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlcl91bmlm
b3JtX2FycmF5IiwgImZzaGFkZXJfdW5pZm9ybV9hcnJheSJdLCBbInZQb3NpdGlvbiJdKTsKK3No
b3VsZEJlTm9uTnVsbCgiZ2wiKTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VS
Uk9SIik7Cit2YXIgcHJvZyA9IGdsLmdldFBhcmFtZXRlcihnbC5DVVJSRU5UX1BST0dSQU0pOwor
c2hvdWxkQmVOb25OdWxsKCJwcm9nIik7Cit2YXIgcmVkTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2csICJjb2xvcjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3WzBdIik7CitzaG91bGRCZU5vbk51
bGwoInJlZExvYyIpOwordmFyIGdyZWVuTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2cs
ICJjb2xvcjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3WzFdIik7CitzaG91bGRCZU5vbk51bGwoImdyZWVu
TG9jIik7CitzaG91bGRCZSgiZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9nLCBnbC5BQ1RJVkVf
VU5JRk9STVMpIiwgIjEiKTsKK3ZhciBhY3RpdmVVbmlmb3JtID0gZ2wuZ2V0QWN0aXZlVW5pZm9y
bShwcm9nLCAwKTsKK3Nob3VsZEJlTm9uTnVsbCgiYWN0aXZlVW5pZm9ybSIpOworc2hvdWxkQmUo
ImFjdGl2ZVVuaWZvcm0udHlwZSIsICJnbC5GTE9BVCIpOworc2hvdWxkQmUoImFjdGl2ZVVuaWZv
cm0uc2l6ZSIsICIyIik7CitzaG91bGRCZSgiYWN0aXZlVW5pZm9ybS5uYW1lIiwgIidjb2xvcjAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3WzBdJyIpOworZ2wudW5pZm9ybTFmKHJlZExvYywgMS4wKTsKK2ds
LnVuaWZvcm0xZihncmVlbkxvYywgMC4wKTsKK2RyYXdBbmRDaGVja1BpeGVscyhnbCk7CitzaG91
bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworZGVidWcoIiIpOworCitkZWJ1
ZygiVGVzdCBsb25nIHZhcnlpbmcgbmFtZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgiZXhhbXBsZSIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFk
ZXJfdmFyeWluZyIsICJmc2hhZGVyX3ZhcnlpbmciXSwgWyJ2UG9zaXRpb24iXSk7CitzaG91bGRC
ZU5vbk51bGwoImdsIik7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIp
OwordmFyIHByb2cgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ1VSUkVOVF9QUk9HUkFNKTsKK3Nob3Vs
ZEJlTm9uTnVsbCgicHJvZyIpOworZHJhd0FuZENoZWNrUGl4ZWxzKGdsKTsKK3Nob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0
IGxvbmcgbG9jYWwgdmFyaWFibGUgbmFtZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgiZXhhbXBsZSIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFk
ZXJfdmFyeWluZyIsICJmc2hhZGVyX3ZhcnlpbmciXSwgWyJ2UG9zaXRpb24iXSk7CitzaG91bGRC
ZU5vbk51bGwoImdsIik7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIp
OwordmFyIHByb2cgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ1VSUkVOVF9QUk9HUkFNKTsKK3Nob3Vs
ZEJlTm9uTnVsbCgicHJvZyIpOworZHJhd0FuZENoZWNrUGl4ZWxzKGdsKTsKK3Nob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0
IGxvbmcgYXR0cmlidXRlIG5hbWUiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyX2F0
dHJpYiIsICJmc2hhZGVyX2F0dHJpYiJdLCBbInZQb3NpdGlvbjAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTYi
XSk7CitzaG91bGRCZU5vbk51bGwoImdsIik7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJn
bC5OT19FUlJPUiIpOwordmFyIHByb2cgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ1VSUkVOVF9QUk9H
UkFNKTsKK3Nob3VsZEJlTm9uTnVsbCgicHJvZyIpOworc2hvdWxkQmUoImdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIocHJvZywgZ2wuQUNUSVZFX0FUVFJJQlVURVMpIiwgIjEiKTsKK3ZhciBhY3RpdmVB
dHRyaWIgPSBnbC5nZXRBY3RpdmVBdHRyaWIocHJvZywgMCk7CitzaG91bGRCZU5vbk51bGwoImFj
dGl2ZUF0dHJpYiIpOworc2hvdWxkQmUoImFjdGl2ZUF0dHJpYi5zaXplIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJhY3RpdmVBdHRyaWIudHlwZSIsICJnbC5GTE9BVF9WRUMzIik7CitzaG91bGRCZSgiYWN0
aXZlQXR0cmliLm5hbWUiLCAiJ3ZQb3NpdGlvbjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTYnIik7CitkcmF3
QW5kQ2hlY2tQaXhlbHMoZ2wpOworc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJS
T1IiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gZHJhd0FuZENoZWNrUGl4ZWxzKGdsKQorewor
ICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAw
LjUsLTAuNSwwIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRI
X0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKwor
ICAgIC8vIFRlc3Qgc2V2ZXJhbCBsb2NhdGlvbnMKKyAgICAvLyBGaXJzdCBsaW5lIHNob3VsZCBi
ZSBhbGwgYmxhY2sKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCA1MCwgMSwgWzAs
IDAsIDAsIDBdKTsKKworICAgIC8vIExpbmUgMTUgc2hvdWxkIGJlIG1hZ2VudGEgZm9yIGF0IGxl
YXN0IDEwIHBpeGVscyBzdGFydGluZyAyMCBwaXhlbHMgaW4KKyAgICB3dHUuY2hlY2tDYW52YXNS
ZWN0KGdsLCAyMCwgMTUsIDEwLCAxLCBbMjU1LCAwLCAyNTUsIDI1NV0pOworCisgICAgLy8gTGFz
dCBsaW5lIHNob3VsZCBiZSBhbGwgYmxhY2sKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAw
LCA0OSwgNTAsIDEsIFswLCAwLCAwLCAwXSk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9n
bHNsLXZlcnRleC1icmFuY2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9nbHNsLXZlcnRleC1icmFuY2guaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZWUzNTk3NTQ2MDgzNjZhNWQyMTEwMWNkMjM3ZTA5NDBkZDA1YjY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2dsc2wtdmVydGV4LWJyYW5jaC5odG1sCkBAIC0w
LDAgKzEsMTI4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5HTFNMIGZ1bmN0aW9uIG5vZGVzIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVh
dHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+IDwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyTm9CcmFuY2giIHR5cGU9Ingtc2hh
ZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIGFQb3NpdGlvbjsKK3VuaWZvcm0gZmxvYXQg
cmVkSW50ZW5zaXR5OworCit2YXJ5aW5nIHZlYzQgdkNvbG9yOworCitmbG9hdCBNQURCdWcoZmxv
YXQgcGFyYW1WYWx1ZSkgeworICBmbG9hdCBsb2NhbFZhciA9IDEuMDsKKyAgcmV0dXJuIDAuMjUg
KiBjZWlsKGxvY2FsVmFyKSArIHBhcmFtVmFsdWU7Cit9CisKK3ZvaWQgbWFpbih2b2lkKSB7Cisg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMS4wKTsKKyAgICB2Q29sb3IgPSB2ZWM0
KE1BREJ1ZyhyZWRJbnRlbnNpdHkpLCAwLiwgMC4sIDEuKTsKK30KKzwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJ2c2hhZGVyQnJhbmNoIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjMyBhUG9zaXRpb247Cit1bmlmb3JtIGZsb2F0IHJlZEludGVuc2l0eTsKKwordmFyeWlu
ZyB2ZWM0IHZDb2xvcjsKKworZmxvYXQgTUFEQnVnKGZsb2F0IHBhcmFtVmFsdWUpIHsKKyAgZmxv
YXQgbG9jYWxWYXIgPSAxLjA7CisgIHJldHVybiAwLjI1ICogY2VpbChsb2NhbFZhcikgKyBwYXJh
bVZhbHVlOworfQorCit2b2lkIG1haW4odm9pZCkgeworICAgIGZsb2F0IGNvbmRpdGlvbiA9IDQy
LjsKKyAgICBpZiAoY29uZGl0aW9uID09IDAuKSB7fQorICAgIGdsX1Bvc2l0aW9uID0gdmVjNChh
UG9zaXRpb24sIDEuMCk7CisgICAgdkNvbG9yID0gdmVjNChNQURCdWcocmVkSW50ZW5zaXR5KSwg
MC4sIDAuLCAxLik7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWlu
ZyB2ZWM0IHZDb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzTm9CcmFu
Y2giIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXNC
cmFuY2giIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+VGhpcyB0ZXN0cyBhZ2FpbnN0IGEgTWFjIGRyaXZlciBidWcgcmVsYXRlZCB0byBicmFu
Y2hlcworIGluc2lkZSBvZiBWZXJ0ZXggU2hhZGVycy48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3aWR0aCA9IDUwOwordmFyIGhl
aWdodCA9IDUwOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCitmdW5jdGlvbiBkcmF3QW5k
UmVhZChjYW52YXNJRCwgdnNoYWRlcklELCBidWZmZXIpCit7CisgICAgdmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXNJRCk7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbdnNoYWRlcklELCAiZnNoYWRlciJdLCBbImFQb3NpdGlvbiJdKTsKKyAgICB2YXIg
dmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMSwtMSwwLCAxLC0xLDAgXSksIGds
LlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAg
ICB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJyZWRJbnRlbnNpdHki
KTsKKyAgICBnbC51bmlmb3JtMWYobG9jLCAwLjc1KTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIDMpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmZmVyKTsKKyAgICBpZiAoZ2wuZ2V0RXJyb3Io
KSAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBjb21wYXJlUmVuZGVyaW5nKGJ1ZmZlcjEsIGJ1ZmZlcjIsIHRvbCkK
K3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0ICogNDsgKytpKSB7Cisg
ICAgICAgIGlmIChNYXRoLmFicyhidWZmZXIxW2ldIC0gYnVmZmVyMltpXSkgPiB0b2wpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5j
dGlvbiBpbml0KCkKK3sKKyAgICBkZXNjcmlwdGlvbigidGVzdHMgdmVydGV4IHNoYWRlciB3aXRo
IGJyYW5jaCIpOworCisgICAgdmFyIGJ1ZkJyYW5jaCA9IG5ldyBVaW50OEFycmF5KHdpZHRoICog
aGVpZ2h0ICogNCk7CisgICAgdmFyIGJ1Zk5vQnJhbmNoID0gbmV3IFVpbnQ4QXJyYXkod2lkdGgg
KiBoZWlnaHQgKiA0KTsKKworICAgIGlmIChkcmF3QW5kUmVhZCgiY2FudmFzQnJhbmNoIiwgInZz
aGFkZXJCcmFuY2giLCBidWZCcmFuY2gpID09IGZhbHNlIHx8CisgICAgICAgIGRyYXdBbmRSZWFk
KCJjYW52YXNOb0JyYW5jaCIsICJ2c2hhZGVyTm9CcmFuY2giLCBidWZOb0JyYW5jaCkgPT0gZmFs
c2UpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2V0dXAgZmFpbGVkIik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKGNvbXBhcmVSZW5kZXJpbmcoYnVmQnJhbmNoLCBidWZOb0JyYW5jaCwgNCkg
PT0gZmFsc2UpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZW5kZXJpbmcgcmVzdWx0cyBhcmUg
ZGlmZmVyZW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlJlbmRl
cmluZyByZXN1bHRzIGFyZSB0aGUgc2FtZSIpOworICAgIH0KK30KKworaW5pdCgpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21pc2MvaW5jbHVkZS52cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9pbmNsdWRlLnZzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUwOTcwZTZjY2ZlMzRlZDcyZmNhNGZhMDNiYWE4MjdkMDEzYmM2YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2MvaW5jbHVkZS52cwpAQCAtMCwwICsxLDQgQEAKKy8vIERvIG5v
dCBkZWxldGUhCisvLyBOZWVkZWQgdG8gaGVscCBnbHNsLWNvbmZvcm1hbmNlIHRlc3RzLgorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9sYXJnZS1sb29wLWNvbXBpbGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlz
Yy9sYXJnZS1sb29wLWNvbXBpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjA5NmVjMzBmMzJiOGYxYWU4
NWZiM2JkODMxMDRkZDhmZjg3Njk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2xhcmdl
LWxvb3AtY29tcGlsZS5odG1sCkBAIC0wLDAgKzEsMTcyIEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFz
Y3JpcHQiPgorYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CisKK3ZvaWQgbWFpbigpeworICAgIGds
X1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCBzb3VyY2U7
CisKK21hdDMgZnJvbnQgPSBtYXQzKAorICAgICAxLjAsICAwLjAsICAwLjAsCisgICAgIDAuMCwg
IDEuMCwgIDAuMCwKKyAgICAgMC4wLCAgMC4wLCAgMS4wCispOworCittYXQzIGJhY2sgPSBtYXQz
KAorICAgIC0xLjAsICAwLjAsICAwLjAsCisgICAgIDAuMCwgIDEuMCwgIDAuMCwKKyAgICAgMC4w
LCAgMC4wLCAtMS4wCispOworCittYXQzIGxlZnQgPSBtYXQzKAorICAgICAwLjAsICAwLjAsIC0x
LjAsCisgICAgIDAuMCwgIDEuMCwgIDAuMCwKKyAgICAgMS4wLCAgMC4wLCAgMC4wCispOworCitt
YXQzIHJpZ2h0ID0gbWF0MygKKyAgICAgMC4wLCAgMC4wLCAgMS4wLAorICAgICAwLjAsICAxLjAs
ICAwLjAsCisgICAgLTEuMCwgIDAuMCwgIDAuMAorKTsKKworbWF0MyB1cCA9IG1hdDMoCisgICAg
IDEuMCwgIDAuMCwgIDAuMCwKKyAgICAgMC4wLCAgMC4wLCAgMS4wLAorICAgICAwLjAsIC0xLjAs
ICAwLjAKKyk7CisKK21hdDMgZG93biA9IG1hdDMoCisgICAgIDEuMCwgIDAuMCwgIDAuMCwKKyAg
ICAgMC4wLCAgMC4wLCAtMS4wLAorICAgICAwLjAsICAxLjAsICAwLjAKKyk7CisKK2Zsb2F0IGNv
ZWZmaWNpZW50KHZlYzMgbm9ybWFsKXsKKyAgICBpbnQgaW5kZXggPSBpbnQoZ2xfRnJhZ0Nvb3Jk
LngpOworICAgIGZsb2F0IHggPSBub3JtYWwueDsKKyAgICBmbG9hdCB5ID0gbm9ybWFsLnk7Cisg
ICAgZmxvYXQgeiA9IG5vcm1hbC56OworCisgICAgaWYoaW5kZXg9PTApeworICAgICAgICByZXR1
cm4gMS4wOworICAgIH0KKyAgICBlbHNlIGlmKGluZGV4PT0xKXsKKyAgICAgICAgcmV0dXJuIHk7
CisgICAgfQorICAgIGVsc2UgaWYoaW5kZXg9PTIpeworICAgICAgICByZXR1cm4gejsKKyAgICB9
CisgICAgZWxzZSBpZihpbmRleD09Myl7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBl
bHNlIGlmKGluZGV4PT00KXsKKyAgICAgICAgcmV0dXJuIHgqeTsKKyAgICB9CisgICAgZWxzZSBp
ZihpbmRleD09NSl7CisgICAgICAgIHJldHVybiB5Kno7CisgICAgfQorICAgIGVsc2UgaWYoaW5k
ZXg9PTYpeworICAgICAgICByZXR1cm4gMy4wKnoqeiAtIDEuMDsKKyAgICB9CisgICAgZWxzZSBp
ZihpbmRleD09Nyl7CisgICAgICAgIHJldHVybiB4Kno7CisgICAgfQorICAgIGVsc2V7CisgICAg
ICAgIHJldHVybiB4KnggLSB5Knk7CisgICAgfQorfQorCit2ZWMzIHNhbXBsZShmbG9hdCBjaWR4
LCBtYXQzIHNpZGUpeworICAgIHZlYzMgcmVzdWx0ID0gdmVjMygwLjApOworICAgIGZsb2F0IGRp
dmlkZXIgPSAwLjA7CisKKyAgICBmb3IoaW50IGk9MDsgaTwyNTY7IGkrKyl7CisgICAgICAgIGZs
b2F0IHggPSBtb2QoZmxvYXQoaSksIDE2LjApOworICAgICAgICBmbG9hdCB5ID0gZmxvYXQoaS8x
Nik7CisgICAgICAgIHZlYzIgdGV4Y29vcmQgPSAodmVjMih4K2NpZHgqMTYuMCwgeStmbG9vcihn
bF9GcmFnQ29vcmQueSkqMTYuMCkrMC41KS82LjA7CisgICAgICAgIHZlYzIgc2lkZWNvb3JkID0g
KCh2ZWMyKHgseSkrdmVjMigwLjUsIDAuNSkpL3ZlYzIoMTYuMCkpKjIuMC0xLjA7CisgICAgICAg
IHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKHZlYzMoc2lkZWNvb3JkLCAtMS4wKSk7CisgICAgICAg
IHZlYzMgdGV4ZWwgPSB0ZXh0dXJlMkQoc291cmNlLCB0ZXhjb29yZCkucmdiOworICAgICAgICBy
ZXN1bHQgKz0gY29lZmZpY2llbnQoc2lkZSpub3JtYWwpICogdGV4ZWwgKiAtbm9ybWFsLno7Cisg
ICAgICAgIGRpdmlkZXIgKz0gLW5vcm1hbC56OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0L2Rp
dmlkZXI7Cit9CisKK3ZvaWQgbWFpbigpeworICAgIHZlYzMgcmVzdWx0ID0gKAorICAgICAgICAv
L3NhbXBsZSgwLjAsIGZyb250KSArCisgICAgICAgIC8vc2FtcGxlKDEuMCwgYmFjaykgKworICAg
ICAgICBzYW1wbGUoMi4wLCBsZWZ0KSArCisgICAgICAgIHNhbXBsZSgzLjAsIHJpZ2h0KSArCisg
ICAgICAgIHNhbXBsZSg0LjAsIHVwKSArCisgICAgICAgIHNhbXBsZSg1LjAsIGRvd24pCisgICAg
KS82LjA7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgcmVjZWl2ZWRDb250ZXh0TG9zdCA9IGZh
bHNlOworZGVzY3JpcHRpb24oIkVuc3VyZXMgdGhhdCBjb21waWxhdGlvbiBvZiBhIGxhcmdlIGxv
b3AgY29tcGxldGVzIGluIGEgcmVhc29uYWJsZSBwZXJpb2Qgb2YgdGltZSBhbmQgZG9lcyBub3Qg
Y2F1c2UgdGhlIFdlYkdMIGNvbnRleHQgdG8gYmUgbG9zdCIpOwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwor
Y2FudmFzLndpZHRoID0gMzI7CitjYW52YXMuaGVpZ2h0ID0gMzI7CitjYW52YXMuYWRkRXZlbnRM
aXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIGZ1bmN0aW9uKGUpIHsKKyAgdGVzdEZhaWxlZCgi
Y29udGV4dCB3YXMgbG9zdCBkdXJpbmcgc2hhZGVyIGNvbXBpbGF0aW9uIG9yIGxpbmtpbmciKTsK
KyAgcmVjZWl2ZWRDb250ZXh0TG9zdCA9IHRydWU7Cit9KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2Vz
IG5vdCBleGlzdCIpOworICBmaW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICB2YXIgc3RhcnRUaW1l
ID0gRGF0ZS5ub3coKTsKKyAgd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2ZXJ0ZXhTaGFkZXIiLCAi
ZnJhZ21lbnRTaGFkZXIiXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpOworICBnbC5jbGVh
ckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUg
Z3JlZW4iLCAwKTsKKyAgdmFyIGVuZFRpbWUgPSBEYXRlLm5vdygpOworCisgIC8vIERlbGF5IGZv
ciBzb21lIHBlcmlvZCB0byBpbmNyZWFzZSBjaGFuY2VzIHRoYXQgY29udGV4dCBsb3N0IGV2ZW50
IHdpbGwgYmUgZGVsaXZlcmVkLgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGlmICgh
cmVjZWl2ZWRDb250ZXh0TG9zdCkgeworICAgICAgdGVzdFBhc3NlZCgiTGFyZ2UgbG9vcCBjb21w
aWxlZCBhbmQgbGlua2VkIHdpdGhvdXQgdGVybWluYXRpbmcgdGhlIFdlYkdMIGNvbnRleHQiKTsK
KyAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSBgJHtlbmRUaW1lIC0gc3RhcnRUaW1lfSBtc2A7Cisg
ICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA8IDc1MDApIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU2hhZGVyIGNvbXBpbGF0aW9uIGNvbXBsZXRlZCBpbiBhIHJlYXNvbmFibGUgYW1vdW50IG9m
IHRpbWU6ICIgKyB0aW1lU3RyaW5nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIlNoYWRlciBjb21waWxhdGlvbiB0b29rIGFuIHVucmVhc29uYWJseSBsb25nIHRpbWU6ICIg
KyB0aW1lU3RyaW5nKTsKKyAgICAgIH0KKyAgICB9CisgICAgZmluaXNoVGVzdCgpOworICB9LCA1
MDApOworfQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9sb2NhbC12YXJpYWJsZS1zaGFkb3dp
bmctb3V0ZXItZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9sb2NhbC12YXJpYWJsZS1zaGFkb3dp
bmctb3V0ZXItZnVuY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmI4MTRjMGQ5OTMxYWVhYjJlZWYx
YTU1ZDNhNTkwMWI5NDBhZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2xvY2FsLXZh
cmlhYmxlLXNoYWRvd2luZy1vdXRlci1mdW5jdGlvbi5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IEdMU0wgQ29uZm9ybWFuY2UgVGVzdCAtIExvY2FsIFZhcmlhYmxlIFNoYWRvd2luZyBPdXRlciBG
dW5jdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90
LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciBtdXN0IHN1Y2NlZWQKK2F0dHJpYnV0ZSB2
ZWMzIHZlcnRleDsKK3ZhcnlpbmcgZmxvYXQgaW50ZXJwOwordm9pZCBtYWluKCkgeworICBpbnRl
cnAgPSB2ZXJ0ZXgueDsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZlcnRleCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGxvY2FsIHZhcmlhYmxlIHNoYWRvd2luZyBvdXRlciBmdW5j
dGlvbiBkZWZpbml0aW9uIG11c3Qgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K3ZhcnlpbmcgZmxvYXQgaW50ZXJwOworCitmbG9hdCByc3F1YXJlZChmbG9hdCByYWRpdXMpCit7
CisgIHJldHVybiByYWRpdXMgKiByYWRpdXM7Cit9CisKK3ZvaWQgc29tZV9jb21wdXRhdGlvbihm
bG9hdCByYWRpdXMsIG91dCBmbG9hdCBic2RmKSB7CisgIGJzZGYgPSAwLjA7CisgIGZsb2F0IHJz
cXVhcmVkID0gcnNxdWFyZWQocmFkaXVzKTsKKyAgYnNkZiArPSByc3F1YXJlZDsKK30KKwordm9p
ZCBtYWluKCkgeworICBmbG9hdCBjb21wOworICBzb21lX2NvbXB1dGF0aW9uKGludGVycCwgY29t
cCk7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29tcCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVu
VGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9ub24tYXNjaWktY29tbWVudHMudmVy
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL25vbi1hc2NpaS1jb21tZW50cy52ZXJ0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTRkODA3ZWQ3MWM0Y2NmZGYzMTk3NjYzOTI0M2E3NjRkNTE1OGNmNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9ub24tYXNjaWktY29tbWVudHMudmVydC5odG1sCkBAIC0wLDAgKzEs
NTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIi
IHR5cGU9InRleHQvcGxhaW4iPgorTG9hZGluZy4uLgorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworCisvLyBWaWEgYFtdLm1hcC5jYWxsKHN0ciwgeCA9PiB4LmNvZGVQb2ludEF0
KDApKTtgCitsZXQgYSA9IFsxMjM3MSwxMjQyOCwxMjM5OSw2NTMxMyw2NTMzMSw2NTMxNSw2NTMy
MSw2NTMyMSwxMjM5MSwxMjM5OSwxMjM5NCwxMjM1NiwxMjM5MSwxMjM3NywxMjI5MF07CitsZXQg
YiA9IFs2NTMzMiw2NTM1Miw2NTM1Myw2NTM2MywxMjI4OCw2NTMyMSw2NTM2MywxMjI4OCw2NTMy
Niw2NTM1OSw2NTM2NCwxMjI4OCw2NTMxMyw2NTMzMSw2NTMxNSw2NTMyMSw2NTMyMV07CithID0g
U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSk7CitiID0gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4u
Yik7CisKKy8vIC0KKwordmVydGV4U2hhZGVyLnRleHRDb250ZW50ID0gYAorLy8gTm9uIGFzY2lp
IGNvbW1lbnRzIGluIHNvdXJjZSBzaG91bGQgc3VjY2VlZAorLy8gJHthfQorLy8gJHtifQorLyoK
KyAqICR7Yn0KKyAqLworI2RlZmluZSBURVNUIDEgLy8gJHtifQordm9pZCBtYWluKCkgeworICBn
bF9Qb3NpdGlvbiA9IHZlYzQoMSwxLDEsMSk7IC8vICR7Yn0KK30gLy8gJHtifQorYDsKKworLy8g
LQorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvbWlzYy9ub24tYXNjaWkudmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL25vbi1hc2NpaS52ZXJ0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2NjMDViOTM1NDViYzE3MjExYjk5YmFhMDAzYjJjODliN2JmMjE1MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9ub24tYXNjaWkudmVydC5odG1sCkBAIC0wLDAg
KzEsNTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVh
dHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFk
ZXIiIHR5cGU9InRleHQvcGxhaW4iPgorTG9hZGluZy4uLgorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworCisvLyBWaWEgYFtdLm1hcC5jYWxsKHN0ciwgeCA9PiB4LmNvZGVQb2lu
dEF0KDApKTtgCitsZXQgYSA9IFsxMjM3MSwxMjQyOCwxMjM5OSw2NTMxMyw2NTMzMSw2NTMxNSw2
NTMyMSw2NTMyMSwxMjM5MSwxMjM5OSwxMjM5NCwxMjM1NiwxMjM5MSwxMjM3NywxMjI5MF07Cits
ZXQgYiA9IFs2NTMzMiw2NTM1Miw2NTM1Myw2NTM2MywxMjI4OCw2NTMyMSw2NTM2MywxMjI4OCw2
NTMyNiw2NTM1OSw2NTM2NCwxMjI4OCw2NTMxMyw2NTMzMSw2NTMxNSw2NTMyMSw2NTMyMV07Cits
ZXQgYyA9IFs2NTMyNiw2NTM1OSw2NTM2NCw2NTMxMyw2NTMzMSw2NTMxNSw2NTMyMSw2NTMyMV07
CithID0gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSk7CitiID0gU3RyaW5nLmZyb21Db2RlUG9p
bnQoLi4uYik7CitjID0gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYyk7CisKKy8vIC0KKwordmVy
dGV4U2hhZGVyLnRleHRDb250ZW50ID0gYAorLy8gTm9uIGFzY2lpIGRhdGEgaW4gc291cmNlIHNo
b3VsZCBmYWlsCisvLyBTZWUgR0xTTCBFUyBTcGVjIDEuMC4xNyBzZWN0aW9uIDMuMSBhbmQgMy4y
CisvLyAke2F9CisvLyAke2J9Cit1bmlmb3JtIG1hdDQgJHtjfTsKK3ZvaWQgbWFpbigpIHsKKyAg
Z2xfUG9zaXRpb24gPSB2ZWM0KDEsMSwxLDEpOworfQorYDsKKworLy8gLQorCitHTFNMQ29uZm9y
bWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9yZS1jb21w
aWxlLXJlLWxpbmsuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9yZS1jb21waWxlLXJlLWxpbmsuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYWVkNDMyMTIwYjcyNjI2MTNmZTQ0MzcxY2Q3N2QxYTM0OWY2NmZmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3JlLWNvbXBpbGUtcmUtbGluay5odG1sCkBAIC0wLDAgKzEs
MTUwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBSZS1Db21waWxlIGFuZCBSZS1saW5rIFNoYWRlciBjb25mb3JtYW5jZSB0ZXN0
LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAzMHB4OyI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K2F0dHJpYnV0ZSBmbG9hdCBjb2x1bW47CithdHRyaWJ1dGUgZmxvYXQgaGVpZ2h0OwordW5pZm9y
bSBmbG9hdCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KG1v
ZChjb2x1bW4gLSBwb3NpdGlvbiwgMS4wKSAqIDIuMCAtIDEuMCwgaGVpZ2h0LCAwLCAxKTsKK30K
Kzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyMSIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLDAsMCwxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
cjIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit1bmlmb3JtIGZsb2F0IGZvb2JhcjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLDAsZm9vYmFyLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyQiIg
dHlwZT0ibm90LWpzIj4KK2F0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOwordmFyeWluZyB2ZWMyIHZf
dGV4Q29vcmQ7Cit2b2lkIG1haW4oKSB7CisgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwg
MCwgMSk7CisgIHZfdGV4Q29vcmQgPSB2ZWMyKHBvc2l0aW9uICogMC41ICsgMC41KTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckIiIHR5cGU9Im5vdC1qcyI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwordW5pZm9ybSBzYW1wbGVy
MkQgdGV4Owordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2
X3RleENvb3JkKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCit2YXIgdnNTb3VyY2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidnNoYWRlciIpLnRleHQ7Cit2YXIgZnMxU291cmNlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzaGFkZXIxIikudGV4dDsKK3ZhciBmczJTb3VyY2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnNoYWRlcjIiKS50ZXh0OworCit2YXIgdnNTb3Vy
Y2VCID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZzaGFkZXJCIikudGV4dDsKK3ZhciBmc1Nv
dXJjZUIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnNoYWRlckIiKS50ZXh0OworCit2YXIg
dlNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKK3ZhciBmU2hhZGVy
ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisKK3ZhciB2U2hhZGVyQiA9
IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKK3ZhciBmU2hhZGVyQiA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCit2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0
ZVByb2dyYW0oKTsKK3ZhciBwcm9ncmFtQiA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKworZ2wuYXR0
YWNoU2hhZGVyKHByb2dyYW0sIHZTaGFkZXIpOworZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZT
aGFkZXIpOworCitnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbUIsIHZTaGFkZXJCKTsKK2dsLmF0dGFj
aFNoYWRlcihwcm9ncmFtQiwgZlNoYWRlckIpOworCit2YXIgc3VjY2VzczsKK3ZhciBzaGFkZXI7
CisKK2Z1bmN0aW9uIGNoZWNrU2hhZGVyU3RhdHVzKHMpIHsKKyAgc2hhZGVyID0gczsKKyAgc2hv
dWxkQmVUcnVlKCJzdWNjZXNzID0gZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuQ09N
UElMRV9TVEFUVVMpIik7CisgIGlmICghc3VjY2VzcykgeworICAgIGRlYnVnKCJlcnJvcjogIiAr
IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKSk7CisgIH0KK30KKwordmFyIHByZzsKK2Z1bmN0
aW9uIGNoZWNrUHJvZ3JhbVN0YXR1cyhwKSB7CisgIHByZyA9IHA7CisgIHNob3VsZEJlVHJ1ZSgi
c3VjY2VzcyA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJnLCBnbC5MSU5LX1NUQVRVUykiKTsK
KyAgaWYgKCFzdWNjZXNzKSB7CisgICAgZGVidWcoImVycm9yOiAiICsgZ2wuZ2V0UHJvZ3JhbUlu
Zm9Mb2cocHJnKSk7CisgIH0KK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Cisg
IGdsLnNoYWRlclNvdXJjZSh2U2hhZGVyLCB2c1NvdXJjZSk7CisgIGdsLmNvbXBpbGVTaGFkZXIo
dlNoYWRlcik7CisgIGNoZWNrU2hhZGVyU3RhdHVzKHZTaGFkZXIpCisgIGdsLnNoYWRlclNvdXJj
ZShmU2hhZGVyLCBmczFTb3VyY2UpOworICBnbC5jb21waWxlU2hhZGVyKGZTaGFkZXIpOworICBj
aGVja1NoYWRlclN0YXR1cyhmU2hhZGVyKQorCisgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOwor
ICBjaGVja1Byb2dyYW1TdGF0dXMocHJvZ3JhbSkKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsK
KworICBnbC5zaGFkZXJTb3VyY2UodlNoYWRlckIsIHZzU291cmNlQik7CisgIGdsLmNvbXBpbGVT
aGFkZXIodlNoYWRlckIpOworICBjaGVja1NoYWRlclN0YXR1cyh2U2hhZGVyQikKKyAgZ2wuc2hh
ZGVyU291cmNlKGZTaGFkZXJCLCBmc1NvdXJjZUIpOworICBnbC5jb21waWxlU2hhZGVyKGZTaGFk
ZXJCKTsKKyAgY2hlY2tTaGFkZXJTdGF0dXMoZlNoYWRlckIpCisKKyAgZ2wubGlua1Byb2dyYW0o
cHJvZ3JhbUIpOworICBjaGVja1Byb2dyYW1TdGF0dXMocHJvZ3JhbUIpCisKKyAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtQik7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAv
LyBOb3cgY2hhbmdlIHRoZSBmcmFnbWVudCBzaGFkZXIKKyAgZ2wuc2hhZGVyU291cmNlKGZTaGFk
ZXIsIGZzMlNvdXJjZSk7CisgIGdsLmNvbXBpbGVTaGFkZXIoZlNoYWRlcik7CisgIGNoZWNrU2hh
ZGVyU3RhdHVzKGZTaGFkZXIpCisKKyAgLy8gQW5kIHJlLWxpbmsKKyAgZ2wubGlua1Byb2dyYW0o
cHJvZ3JhbSk7CisgIGNoZWNrUHJvZ3JhbVN0YXR1cyhwcm9ncmFtKQorfQorCit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc2FtcGxlci1vcGVyYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2Ft
cGxlci1vcGVyYW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2ZDZjMGJhZGZkNTczNzdjNGI1MmRjZDAz
NTM1ZGM4N2IxZDM4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zYW1wbGVyLW9wZXJh
bmQuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzIC0gc2Ft
cGxlciBvcGVyYW5kczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKy8vIEVTU0woMS4wMCwgMy4wMCwgMy4xMCkgc2VjdGlv
biA0LjEuNworLy8gRXhjZXB0IGZvciBhcnJheSBpbmRleGluZywgc3RydWN0dXJlIGZpZWxkIHNl
bGVjdGlvbiwgYW5kCisvLyBwYXJlbnRoZXNlcywgc2FtcGxlcnMgYXJlIG5vdCBhbGxvd2VkIHRv
IGJlIG9wZXJhbmRzIGluIGV4cHJlc3Npb25zLgorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNh
bXBsZXJBZGRpbmciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorLy8gVGhpcyBjb3ZlcnMg
YW4gQU5HTEUgYnVnLgorLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9hbmdsZXBy
b2plY3QvaXNzdWVzL2RldGFpbD9pZD0yMDI4LgordW5pZm9ybSBzYW1wbGVyMkQgczE7Cit1bmlm
b3JtIHNhbXBsZXIyRCBzMjsKK3ZvaWQgbWFpbigpIHsKKyAgICBzMSArIHMyOworfQorPC9zY3Jp
cHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVu
VGVzdHMoWworICAgIHsgZlNoYWRlcklkOiAnc2FtcGxlckFkZGluZycsCisgICAgICBmU2hhZGVy
U3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICBwYXNzTXNn
OiAnQWRkaW5nIG9uIHNhbXBsZXJzIHNob3VsZCBmYWlsJworICAgIH0sCitdKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zZXF1ZW5jZS1vcGVyYXRvci1yZXR1cm5zLWNvbnN0YW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL21pc2Mvc2VxdWVuY2Utb3BlcmF0b3ItcmV0dXJucy1jb25zdGFudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlYTYwMWY3MTlmMjNhZTc3MWM1MzE2NzQ1YjBkMDQwMDViNDY1NWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2VxdWVuY2Utb3BlcmF0b3ItcmV0dXJucy1jb25zdGFu
dC5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPlNlcXVlbmNlIG9wZXJhdG9yIHJldHVybnMgY29uc3RhbnQg
dGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItY29uc3QtZXhwcmVzc2lvbiIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7Cisg
IC8vIFJIUyBzaG91bGQgYmUgYSBjb25zdGFudCBleHByZXNzaW9uIChhIGNvbXBpbGUtdGltZSBj
b25zdGFudHMpIHN0YXRlZCBpbiBzZWN0aW9uIDQuMy4yIGZyb20gR0xFU1NMIDEuMC4xNworICBj
b25zdCBmbG9hdCBhID0gKDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNo
YWRlci1ub24tY29uc3QtZXhwcmVzc2lvbiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7CisgIGZsb2F0IGFbKDIsIDMp
XTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJD
aGVja3Mgc2VxdWVuY2Ugb3BlcmF0b3JzIHJldHVybmluZyBjb25zdGFudHMgYW5kIGNhbiBiZSB1
c2VkIGFzIGFuIGFycmF5IHNpemUuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1
blRlc3RzKFsKK3sgZlNoYWRlcklkOiAnZnNoYWRlci1jb25zdC1leHByZXNzaW9uJywKKyAgZlNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiU2Vx
dWVuY2Ugb3BlcmF0b3IgY2FuIHJldHVybiBhIGNvbnN0YW50IGV4cHJlc3Npb24iLAorfSwKK3sg
ZlNoYWRlcklkOiAnZnNoYWRlci1ub24tY29uc3QtZXhwcmVzc2lvbicsCisgIGZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIlNlcXVlbmNlIG9w
ZXJhdG9yIHJldHVybiB2YWx1ZSBjYW4gYmUgdXNlZCBhcyBhcnJheSBzaXplIiwKK30sCitdKTsK
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC1vYmV5ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1v
YmV5ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTc0ODQ2NDY5YzBmMTkxZjVjNmUyZjM2YWViMjg1YmYw
YTQ4ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci1wcmVjaXNpb24tZm9y
bWF0LW9iZXllZC5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJmc2hhZGVyV2l0aEhpZ2hQcmVjaXNpb24iIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKK3VuaWZvcm0gdmVj
NCBjb25zdGFudENvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IGNv
bnN0YW50Q29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJXaGljaENvbXBp
bGVzV2l0aEhpZ2hwIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisjaWZk
ZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKKy8vIFNvbWV0aGluZyB3aGljaCBjb21waWxl
cworI2Vsc2UKK3NvbWV0aGluZ1doaWNoRG9lc05vdENvbXBpbGUoKTsKKyNlbmRpZgorCit2b2lk
IG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJXaGljaENvbXBpbGVzV2l0aG91dEhpZ2hwIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisjaWZuZGVmIEdMX0ZSQUdNRU5UX1BS
RUNJU0lPTl9ISUdICisvLyBTb21ldGhpbmcgd2hpY2ggY29tcGlsZXMKKyNlbHNlCitzb21ldGhp
bmdXaGljaERvZXNOb3RDb21waWxlKCk7CisjZW5kaWYKKwordm9pZCBtYWluKCkKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkNoZWNrcyB0aGF0IGdldFNoYWRlclByZWNpc2lv
bkZvcm1hdCdzIHJldHVybiB2YWx1ZSBtYXRjaGVzIHdoZXRoZXIgaGlnaHAgaXMgc3VwcG9ydGVk
IGluIGZyYWdtZW50IHNoYWRlcnMuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBwcmVjaXNpb24gPSBnbC5nZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRfU0hBREVSLCBnbC5ISUdIX0ZMT0FUKTsKK3Zh
ciBoaWdocFN1cHBvcnRlZCA9IChwcmVjaXNpb24ucmFuZ2VNaW4gPj0gNjIgJiYgcHJlY2lzaW9u
LnJhbmdlTWF4ID49IDYyICYmIHByZWNpc2lvbi5wcmVjaXNpb24gPj0gMTYpOworZGVidWcoImhp
Z2hwIGlzIiArIChoaWdocFN1cHBvcnRlZCA/ICIiIDogIiBub3QiKSArICIgc3VwcG9ydGVkIGlu
IGZyYWdtZW50IHNoYWRlcnMiKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsK
K3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlcldpdGhIaWdoUHJlY2lzaW9uJywKKyAgZlNoYWRlclN1
Y2Nlc3M6IGhpZ2hwU3VwcG9ydGVkLAorICBsaW5rU3VjY2VzczogaGlnaHBTdXBwb3J0ZWQsCisg
IHBhc3NNc2c6ICJnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQncyByZXN1bHRzIGFncmVlIHdpdGgg
aGlnaHAgc3VwcG9ydCBpbiBmcmFnbWVudCBzaGFkZXJzIiwKK30sCit7CisgIGZTaGFkZXJJZDog
aGlnaHBTdXBwb3J0ZWQgPyAnZnNoYWRlcldoaWNoQ29tcGlsZXNXaXRoSGlnaHAnIDogJ2ZzaGFk
ZXJXaGljaENvbXBpbGVzV2l0aG91dEhpZ2hwJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
J3MgcmVzdWx0cyBhZ3JlZSB3aXRoIGRlZmluaXRpb24gb2YgR0xfRlJBR01FTlRfUFJFQ0lTSU9O
X0hJR0giLAorfSwKK10pOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci1zdHJ1Y3Qtc2NvcGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItc3RydWN0LXNjb3Bl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA0ZmFmMDNiMTUwZWU1Mjg4MmY5YjFiMzQ0NDJjY2NlOTNiYjE2
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItc3RydWN0LXNjb3BlLmh0bWwK
QEAgLTAsMCArMSwyMzEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLSBhdXRob3I6IEphbWllIE1hZGlsbCAoam1hZGlsbCBhdCBjaHJvbWl1bSkg
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5TdHJ1Y3QgU2NvcGUgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJzaGFkZXItdnMt
MSIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgordm9pZCBtYWluKHZvaWQpIHsKKworICBnbF9Q
b3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKworICB7CisgICAgc3RydWN0IFQg
eworICAgICAgaW50IHYxOworICAgIH07CisKKyAgICBUIHg7CisgICAgZ2xfUG9zaXRpb24ueCAr
PSBmbG9hdCh4LnYxKTsKKyAgfQorCisgIHsKKyAgICBzdHJ1Y3QgVCB7CisgICAgICBmbG9hdCB2
MjsKKyAgICB9OworCisgICAgVCB4OworICAgIGdsX1Bvc2l0aW9uLnggKz0geC52MjsKKyAgfQor
Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ic2hhZGVyLXZzLTIiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4KK3ZvaWQgbWFpbih2b2lkKSB7CisKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgc3RydWN0IFQgeworICAgIGludCB2MTsKKyAgfTsKKwor
ICBUIHg7CisgIGdsX1Bvc2l0aW9uLnggKz0gZmxvYXQoeC52MSk7CisKKyAgeworICAgIHN0cnVj
dCBUIHsKKyAgICAgIGZsb2F0IHYyOworICAgIH07CisKKyAgICBUIHg7CisgICAgZ2xfUG9zaXRp
b24ueCArPSB4LnYyOworICB9CisKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaGFkZXIt
dnMtMyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgordm9pZCBtYWluKHZvaWQpIHsKKworICBn
bF9Qb3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKworICB7CisgICAgc3RydWN0
IFQgeworICAgICAgaW50IHYxOworICAgIH07CisKKyAgICBUIHg7CisgICAgZ2xfUG9zaXRpb24u
eCArPSBmbG9hdCh4LnYxKTsKKyAgfQorCisgIHN0cnVjdCBUIHsKKyAgICBmbG9hdCB2MjsKKyAg
fTsKKworICBUIHg7CisgIGdsX1Bvc2l0aW9uLnggKz0geC52MjsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0IGlkPSJzaGFkZXItdnMtYmFkIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit2b2lk
IG1haW4odm9pZCkgeworCisgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjAp
OworCisgIHN0cnVjdCBUIHsKKyAgICBpbnQgdjE7CisgIH07CisKKyAgVCB4OworICBnbF9Qb3Np
dGlvbi54ICs9IGZsb2F0KHgudjEpOworCisgIHN0cnVjdCBUIHsKKyAgICBmbG9hdCB2MjsKKyAg
fTsKKworICBUIHk7CisgIGdsX1Bvc2l0aW9uLnggKz0geS52MjsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0IGlkPSJzaGFkZXItdnMtYW5nbGVidWciIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
Kworc3RydWN0IFRfMCB7CisgIGludCB2MTsKK307CisKK3ZvaWQgbWFpbih2b2lkKSB7CisKKyAg
Z2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgc3RydWN0IFQgewor
ICAgIGZsb2F0IHYyOworICB9OworCisgIFRfMCB4OworICBnbF9Qb3NpdGlvbi54ICs9IGZsb2F0
KHgudjEpOworCisgIFQgeTsKKyAgZ2xfUG9zaXRpb24ueCArPSB5LnYyOworfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9InNoYWRlci12cy1tYXNrZWQtc3RydWN0LXZhcmlhYmxlIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CisKK3N0cnVjdCBUIHsKKyAgZmxvYXQgZjsKK307CisKK3ZvaWQg
bWFpbih2b2lkKSB7CisKKyAgVCBhOworCisgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwg
MC4wLCAxLjApOworCisgIHN0cnVjdCBUIHsKKyAgICBmbG9hdCBxOworICB9OworCisgIGdsX1Bv
c2l0aW9uLnggKz0gYS5mOworCisgIFQgYjsKKyAgZ2xfUG9zaXRpb24ueCArPSBiLnE7Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ic2hhZGVyLWZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKHZvaWQpIHsKKyAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdGluZyBzdHJ1Y3QgZGVmaW5p
dGlvbiBzY29wZSIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitHTFNMQ29uZm9ybWFu
Y2VUZXN0ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAic2hhZGVyLXZzLTEiLAor
ICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogInNoYWRlci1mcyIsCisg
ICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFz
c01zZzogIlR3byBzdHJ1Y3RzIGRlZmluZWQgd2l0aGluIG5vbi1vdmVybGFwcGluZyBzY29wZXMg
c2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSBzYW1lIG5hbWUiLAorICB9LAorICB7CisgICAgdlNo
YWRlcklkOiAic2hhZGVyLXZzLTIiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZT
aGFkZXJJZDogInNoYWRlci1mcyIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogIkEgc3RydWN0IGRlZmluZWQgaW5zaWRlIGEg
c2NvcGUgb3ZlcnJpZGVzIGEgc3RydWN0IGRlZmluZWQgaW4gYSBvdXRlciBzY29wZSB3aXRoIHRo
ZSBzYW1lIG5hbWUiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2hhZGVyLXZzLTMiLAor
ICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogInNoYWRlci1mcyIsCisg
ICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFz
c01zZzogIkEgc3RydWN0IGNhbiB1c2UgdGhlIHNhbWUgbmFtZSBvZiBhbm90aGVyIG91dC1vZi1z
Y29wZSBzdHJ1Y3QiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2hhZGVyLXZzLWJhZCIs
CisgICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGZTaGFkZXJJZDogInNoYWRlci1mcyIs
CisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAg
IHBhc3NNc2c6ICJBIHN0cnVjdCBjYW4ndCBiZSBkZWZpbmVkIHdpdGggdGhlIHNhbWUgbmFtZSBh
cyBhbm90aGVyIHN0cnVjdCBkZWZpbmVkIGluIHRoZSBzYW1lIHNjb3BlIiwKKyAgfSwKKyAgewor
ICAgIHZTaGFkZXJJZDogInNoYWRlci12cy1hbmdsZWJ1ZyIsCisgICAgdlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgZlNoYWRlcklkOiAic2hhZGVyLWZzIiwKKyAgICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAiU3RydWN0cyB3aXRo
IGFwcGVuZGVkIHVuZGVyc2NvcmVkIG51bWJlcnMgZG9uJ3QgY2F1c2UgbGluayBlcnJvcnMgKEFO
R0xFIGJ1ZykiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2hhZGVyLXZzLW1hc2tlZC1z
dHJ1Y3QtdmFyaWFibGUiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJ
ZDogInNoYWRlci1mcyIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nl
c3M6IHRydWUsCisgICAgcGFzc01zZzogIlZhcmlhYmxlcyBvZiBtYXNrZWQgb3V0ZXIgc2NvcGUg
c3RydWN0IHdvcmsgd2l0aCBpbm5lciBzY29wZSBzdHJ1Y3QiLAorICB9LAorXSk7CisKK2RlYnVn
KCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXVuaWZvcm0tcGFja2luZy1y
ZXN0cmljdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItdW5pZm9ybS1wYWNraW5nLXJlc3Ry
aWN0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYTk2ODQ3MGYxNTFhNTA1MjRhMzVkMDBmZDY2NTA5
ZTNkNmQyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXVuaWZvcm0tcGFj
a2luZy1yZXN0cmljdGlvbnMuaHRtbApAQCAtMCwwICsxLDI1MSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9ybSBwYWNr
aW5nIHJlc3RyY3Rpb25zIENvbmZvcm1hbmNlIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IHZfdmFyeWluZzsKK3ZvaWQgbWFpbigpCit7CisgICAg
Z2xfRnJhZ0NvbG9yID0gdl92YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyQXJyYXlUZXN0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBh
X3Bvc2l0aW9uOwordmFyeWluZyB2ZWM0IHZfdmFyeWluZzsKK3VuaWZvcm0gJCh0eXBlKSB1X3Vu
aWZvcm1bJChudW1UZXN0VHlwZSldOwordm9pZCBtYWluKCkKK3sKKyAgICB2X3ZhcnlpbmcgPSAk
KHJlc3VsdCk7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc2hhZGVyQXJyYXlUZXN0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSAkKHR5cGUpIHVfdW5pZm9ybVskKG51
bVRlc3RUeXBlKV07Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9ICQocmVzdWx0
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlclVuaWZvcm1UZXN0IiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2YXJ5aW5n
IHZlYzQgdl92YXJ5aW5nOworJCh1bmlmb3JtcykKK3ZvaWQgbWFpbigpCit7CisgICAgJChjb2Rl
KQorICAgIHZfdmFyeWluZyA9ICQocmVzdWx0KTsKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJVbmlmb3JtVGVzdCIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyQodW5pZm9y
bXMpCit2b2lkIG1haW4oKQoreworICAgICQoY29kZSkKKyAgICBnbF9GcmFnQ29sb3IgPSAkKHJl
c3VsdCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlv
bigpOworZGVidWcoIiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCit2YXIgdW5pZm9ybVR5cGVzID0gWworICB7
IHR5cGU6ICJib29sIiwgICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDEsIHJvd3M6IDEsIGZUeXBl
OiAiZmxvYXQiLCB1bmlUb0Y6ICJmbG9hdCh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpKSIsIGZUb1Zl
YzQ6ICJ2ZWM0KCQoZiksIDAsIDAsIDApIn0sCisgIHsgdHlwZTogImZsb2F0IiwgICAgICAgY29t
cG9uZW50c1BlclJvdzogMSwgcm93czogMSwgZlR5cGU6ICJmbG9hdCIsIHVuaVRvRjogInVfdW5p
Zm9ybSQoaWQpJChpbmRleCkiLCBmVG9WZWM0OiAidmVjNCgkKGYpLCAwLCAwLCAwKSJ9LAorICB7
IHR5cGU6ICJpbnQiLCAgICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDEsIHJvd3M6IDEsIGZUeXBl
OiAiZmxvYXQiLCB1bmlUb0Y6ICJmbG9hdCh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpKSIsIGZUb1Zl
YzQ6ICJ2ZWM0KCQoZiksIDAsIDAsIDApIn0sCisgIHsgdHlwZTogInZlYzIiLCAgICAgICAgY29t
cG9uZW50c1BlclJvdzogMiwgcm93czogMSwgZlR5cGU6ICJ2ZWMyIiwgIHVuaVRvRjogInVfdW5p
Zm9ybSQoaWQpJChpbmRleCkiLCBmVG9WZWM0OiAidmVjNCgkKGYpLCAwLCAwKSJ9LAorICB7IHR5
cGU6ICJpdmVjMiIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDIsIHJvd3M6IDEsIGZUeXBlOiAi
dmVjMiIsICB1bmlUb0Y6ICJ2ZWMyKHVfdW5pZm9ybSQoaWQpJChpbmRleCkpIiwgZlRvVmVjNDog
InZlYzQoJChmKSwgMCwgMCkifSwKKyAgeyB0eXBlOiAiYnZlYzIiLCAgICAgICBjb21wb25lbnRz
UGVyUm93OiAyLCByb3dzOiAxLCBmVHlwZTogInZlYzIiLCAgdW5pVG9GOiAidmVjMih1X3VuaWZv
cm0kKGlkKSQoaW5kZXgpKSIsIGZUb1ZlYzQ6ICJ2ZWM0KCQoZiksIDAsIDApIn0sCisgIHsgdHlw
ZTogInZlYzMiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogMywgcm93czogMSwgZlR5cGU6ICJ2
ZWMzIiwgIHVuaVRvRjogInVfdW5pZm9ybSQoaWQpJChpbmRleCkiLCBmVG9WZWM0OiAidmVjNCgk
KGYpLCAwKSJ9LAorICB7IHR5cGU6ICJpdmVjMyIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDMs
IHJvd3M6IDEsIGZUeXBlOiAidmVjMyIsICB1bmlUb0Y6ICJ2ZWMzKHVfdW5pZm9ybSQoaWQpJChp
bmRleCkpIiwgZlRvVmVjNDogInZlYzQoJChmKSwgMCkifSwKKyAgeyB0eXBlOiAiYnZlYzMiLCAg
ICAgICBjb21wb25lbnRzUGVyUm93OiAzLCByb3dzOiAxLCBmVHlwZTogInZlYzMiLCAgdW5pVG9G
OiAidmVjMyh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpKSIsIGZUb1ZlYzQ6ICJ2ZWM0KCQoZiksIDAp
In0sCisgIHsgdHlwZTogInZlYzQiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogNCwgcm93czog
MSwgZlR5cGU6ICJ2ZWM0IiwgIHVuaVRvRjogInVfdW5pZm9ybSQoaWQpJChpbmRleCkiLCBmVG9W
ZWM0OiAiJChmKSJ9LAorICB7IHR5cGU6ICJpdmVjNCIsICAgICAgIGNvbXBvbmVudHNQZXJSb3c6
IDQsIHJvd3M6IDEsIGZUeXBlOiAidmVjNCIsICB1bmlUb0Y6ICJ2ZWM0KHVfdW5pZm9ybSQoaWQp
JChpbmRleCkpIiwgZlRvVmVjNDogIiQoZikifSwKKyAgeyB0eXBlOiAiYnZlYzQiLCAgICAgICBj
b21wb25lbnRzUGVyUm93OiA0LCByb3dzOiAxLCBmVHlwZTogInZlYzQiLCAgdW5pVG9GOiAidmVj
NCh1X3VuaWZvcm0kKGlkKSQoaW5kZXgpKSIsIGZUb1ZlYzQ6ICIkKGYpIn0sCisvLyBZZXMsIHRo
ZSBzcGVjIHNheXMgbWF0MiB0YWtlcyA0IGNvbHVtbnMsIDIgcm93cy4KKyAgeyB0eXBlOiAibWF0
MiIsICAgICAgICBjb21wb25lbnRzUGVyUm93OiA0LCByb3dzOiAyLCBmVHlwZTogInZlYzIiLCAg
dW5pVG9GOiAidmVjMih1X3VuaWZvcm0kKGlkKSQoaW5kZXgpWzBdKSIsIGZUb1ZlYzQ6ICJ2ZWM0
KCQoZiksIDAsIDApIn0sCisgIHsgdHlwZTogIm1hdDMiLCAgICAgICAgY29tcG9uZW50c1BlclJv
dzogMywgcm93czogMywgZlR5cGU6ICJ2ZWMzIiwgIHVuaVRvRjogInZlYzModV91bmlmb3JtJChp
ZCkkKGluZGV4KVswXSkiLCBmVG9WZWM0OiAidmVjNCgkKGYpLCAwKSJ9LAorICB7IHR5cGU6ICJt
YXQ0IiwgICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDQsIHJvd3M6IDQsIGZUeXBlOiAidmVjNCIs
ICB1bmlUb0Y6ICJ2ZWM0KHVfdW5pZm9ybSQoaWQpJChpbmRleClbMF0pIiwgZlRvVmVjNDogIiQo
ZikifSwKKy8vIFNhbXBsZXJzIGdlbmVyYWxseSBoYXZlIG1vcmUgcmVzdHJpY3RpdmUgbGltaXRz
LgorLy8gIHsgdHlwZTogInNhbXBsZXIyRCIsICAgY29tcG9uZW50c1BlclJvdzogMSwgcm93czog
MSwgY29kZTogInZlYzQodGV4dHVyZTJEKHVfdW5pZm9ybVskKGluZGV4KV0sIHZlYzIoMCwgMCkp
KSIsIH0sCisvLyAgeyB0eXBlOiAic2FtcGxlckN1YmUiLCBjb21wb25lbnRzUGVyUm93OiAxLCBy
b3dzOiAxLCBjb2RlOiAidmVjNCh0ZXh0dXJlQ3ViZSh1X3VuaWZvcm1bJChpbmRleCldLCB2ZWMz
KDAsIDAsIDApKSkiLCB9LAorXTsKKwordmFyIHZCYXNlU291cmNlID0gd3R1LmdldFNjcmlwdCgi
dnNoYWRlciIpOwordmFyIGZCYXNlU291cmNlID0gd3R1LmdldFNjcmlwdCgiZnNoYWRlciIpOwor
dmFyIHZBcnJheVRlc3RTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJ2c2hhZGVyQXJyYXlUZXN0Iik7
Cit2YXIgZkFycmF5VGVzdFNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoImZzaGFkZXJBcnJheVRlc3Qi
KTsKK3ZhciB2VW5pZm9ybVRlc3RTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJ2c2hhZGVyVW5pZm9y
bVRlc3QiKTsKK3ZhciBmVW5pZm9ybVRlc3RTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJmc2hhZGVy
VW5pZm9ybVRlc3QiKTsKKwordmFyIHRlc3RzID0gW107Cit2YXIgc2hhZGVyVHlwZXMgPSBbCisg
IHsgdHlwZTogInZlcnRleCIsCisgICAgLy8gRm9yIHRlc3RzIHRoYXQgZXhwZWN0IGZhaWx1cmUg
d2hpY2ggc2hhZGVyIG1pZ2h0IGZhaWwuCisgICAgdmVydEV4cGVjdGF0aW9uOiBmYWxzZSwKKyAg
ICBmcmFnRXhwZWN0YXRpb246IHRydWUsCisgICAgdmVydEFycmF5VGVzdDogdkFycmF5VGVzdFNv
dXJjZSwKKyAgICBmcmFnQXJyYXlUZXN0OiBmQmFzZVNvdXJjZSwKKyAgICB2ZXJ0VW5pZm9ybVRl
c3Q6IHZVbmlmb3JtVGVzdFNvdXJjZSwKKyAgICBmcmFnVW5pZm9ybVRlc3Q6IGZCYXNlU291cmNl
LAorICAgIG1heFZlY3RvcnM6IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX1VOSUZPUk1f
VkVDVE9SUyksCisgICAgbWluVmVjdG9yczogMTI3LCAgLy8gR0xTTCBFUyAxLjAuMTcgQXBwZW5k
aXggQS43IGFuZCBBLjguIFJlc2VydmUgb25lIHJvdyBmb3IgY29uc3RhbnRzIGluIHRoZSBjb2Rl
LCBoZW5jZSAxMjggLSAxLgorICB9LAorICB7IHR5cGU6ICJmcmFnbWVudCIsCisgICAgLy8gRm9y
IHRlc3RzIHRoYXQgZXhwZWN0IGZhaWx1cmUgd2hpY2ggc2hhZGVyIG1pZ2h0IGZhaWwuCisgICAg
dmVydEV4cGVjdGF0aW9uOiB0cnVlLAorICAgIGZyYWdFeHBlY3RhdGlvbjogZmFsc2UsCisgICAg
dmVydEFycmF5VGVzdDogdkJhc2VTb3VyY2UsCisgICAgZnJhZ0FycmF5VGVzdDogZkFycmF5VGVz
dFNvdXJjZSwKKyAgICB2ZXJ0VW5pZm9ybVRlc3Q6IHZCYXNlU291cmNlLAorICAgIGZyYWdVbmlm
b3JtVGVzdDogZlVuaWZvcm1UZXN0U291cmNlLAorICAgIG1heFZlY3RvcnM6IGdsLmdldFBhcmFt
ZXRlcihnbC5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTKSwKKyAgICBtaW5WZWN0b3JzOiAx
NSwgIC8vIEdMU0wgRVMgMS4wLjE3IEFwcGVuZGl4IEEuOCAtIG1pbmltdW0gdmFsdWUgb2YgZ2xf
bWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyBpcyAxNi4gQWdhaW4sIHJlc2VydmUgYSByb3cgZm9y
IGNvbnN0YW50cy4KKyAgfSwKK107Citmb3IgKHZhciBzcyA9IDA7IHNzIDwgc2hhZGVyVHlwZXMu
bGVuZ3RoOyArK3NzKSB7CisgIHZhciBzaGFkZXJUeXBlID0gc2hhZGVyVHlwZXNbc3NdOworICBk
ZWJ1ZygibWF4ICIgKyBzaGFkZXJUeXBlLnR5cGUgKyAiOiAiICsgc2hhZGVyVHlwZS5tYXhWZWN0
b3JzKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHVuaWZvcm1UeXBlcy5sZW5ndGg7ICsraWkp
IHsKKyAgICB2YXIgaW5mbyA9IHVuaWZvcm1UeXBlc1tpaV07CisgICAgd3R1LmxvZygiY2hlY2tp
bmc6ICIgKyBpbmZvLnR5cGUpOworICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gYW1vdW50IG9m
IHRoaXMgdHlwZSBhbGxvd2VkIGluIGEgc2luZ2xlIGFycmF5LgorICAgIHZhciBtYXhJbkFycmF5
ID0gTWF0aC5mbG9vcihzaGFkZXJUeXBlLm1heFZlY3RvcnMgLyBpbmZvLnJvd3MpOworICAgIC8v
IENvbXB1dGUgdGhlIG1pbmltdW0gcmVxdWlyZWQgdG8gd29yayBpbiBhIHNpbmdsZSBhcnJheS4K
KyAgICB2YXIgbWluVmFycyA9IE1hdGguZmxvb3Ioc2hhZGVyVHlwZS5taW5WZWN0b3JzIC8gaW5m
by5yb3dzKTsKKyAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGFsbG93ZWQgYXMgc2luZ2xlIGVs
ZW1lbnRzCisgICAgdmFyIG1heFBlclJvdyA9IE1hdGguZmxvb3IoNCAvIGluZm8uY29tcG9uZW50
c1BlclJvdyk7CisgICAgdmFyIG1heFBhY2tlZCA9IE1hdGguZmxvb3Ioc2hhZGVyVHlwZS5tYXhW
ZWN0b3JzICogbWF4UGVyUm93IC8gaW5mby5yb3dzKTsKKworICAgIC8vIFRlc3QgYXJyYXlbMV0g
b2YgdGhlIHR5cGUKKyAgICB2YXIgdW5pVG9GID0gd3R1LnJlcGxhY2VQYXJhbXMoaW5mby51bmlU
b0YsIHtpZDogIiIsIGluZGV4OiAiWzBdIn0pOworICAgIHZhciB2ZWM0ID0gd3R1LnJlcGxhY2VQ
YXJhbXMoaW5mby5mVG9WZWM0LCB7ZjogdW5pVG9GfSk7CisgICAgdGVzdHMucHVzaCh7CisgICAg
ICB2U2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJUeXBlLnZlcnRBcnJheVRl
c3QsIHtudW1UZXN0VHlwZTogMSwgcmVzdWx0OiB2ZWM0fSwgaW5mbyksCisgICAgICB2U2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHNo
YWRlclR5cGUuZnJhZ0FycmF5VGVzdCwge251bVRlc3RUeXBlOiAxLCByZXN1bHQ6IHZlYzR9LCBp
bmZvKSwKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRy
dWUsCisgICAgICBwYXNzTXNnOiBzaGFkZXJUeXBlLnR5cGUgKyAiIHNoYWRlciB3aXRoIHVuaWZv
cm0gYXJyYXkgb2YgIiArIGluZm8udHlwZSArICIgd2l0aCAxIGVsZW1lbnQgc2hvdWxkIHN1Y2Nl
ZWQiLAorICAgIH0pOworCisgICAgLy8gTm90ZTogV2UgY2FuJ3QgdGVzdCBhbiBhcnJheSBmaWxs
aW5nIGFsbCB1bmlmb3JtIHNwYWNlIGFzIGFjdHVhbCBHTCBkcml2ZXJzIGFyZQorICAgIC8vIG9u
bHkgcmVxdWlyZWQgdG8gYmUgYWJsZSB0byBkbyB0aGUgbWluaW11bSBudW1iZXIuIEFmdGVyIHRo
YXQgaXQgY2FuIGZhaWwgZm9yCisgICAgLy8gbXVsdGlwbGUgcmVhc29ucywgaW5jbHVkaW5nIHVu
aWZvcm0gcmVnaXN0ZXJzIGJlaW5nIHJlc2VydmVkIGZvciB0aGUgaW1wbGVtZW50YXRpb24ncwor
ICAgIC8vIG93biB1c2UuIENvbnN0YW50cyBhbHNvIHRha2UgdXAgdW5pZm9ybSByZWdpc3RlcnMu
CisKKyAgICAvLyBUZXN0IHJlcXVpcmVkIG51bWJlciBvZiB1bmlmb3JtcworICAgIHZhciB1bmlU
b0YgPSB3dHUucmVwbGFjZVBhcmFtcyhpbmZvLnVuaVRvRiwge2lkOiAiIiwgaW5kZXg6ICJbIiAr
IChtaW5WYXJzIC0gMSkgKyAiXSJ9KTsKKyAgICB2YXIgdmVjNCA9IHd0dS5yZXBsYWNlUGFyYW1z
KGluZm8uZlRvVmVjNCwge2Y6IHVuaVRvRn0pOworICAgIHRlc3RzLnB1c2goeworICAgICAgdlNo
YWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMoc2hhZGVyVHlwZS52ZXJ0QXJyYXlUZXN0LCB7
bnVtVGVzdFR5cGU6IG1pblZhcnMsIHJlc3VsdDogdmVjNH0sIGluZm8pLAorICAgICAgdlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgICAgICBmU2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhz
aGFkZXJUeXBlLmZyYWdBcnJheVRlc3QsIHtudW1UZXN0VHlwZTogbWluVmFycywgcmVzdWx0OiB2
ZWM0fSwgaW5mbyksCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICAgICAgcGFzc01zZzogc2hhZGVyVHlwZS50eXBlICsgIiBzaGFkZXIgd2l0
aCB1bmlmb3JtIGFycmF5IG9mICIgKyBpbmZvLnR5cGUgKyAiIHdpdGggIiArIG1pblZhcnMgKyAi
IGVsZW1lbnRzICh0aGUgbWluaW11bSByZXF1aXJlZCkgc2hvdWxkIHN1Y2NlZWQiLAorICAgIH0p
OworCisgICAgLy8gVGVzdCBhcnJheVttYXggKyAxXSBhY2Nlc3NpbmcgbGFzdCBlbGVtZW50LiBX
ZWJHTCByZXF1aXJlcyB0aGlzIHRvIGZhaWwuCisgICAgdmFyIHVuaVRvRiA9IHd0dS5yZXBsYWNl
UGFyYW1zKGluZm8udW5pVG9GLCB7aWQ6ICIiLCBpbmRleDogIlsiICsgbWF4SW5BcnJheSArICJd
In0pOworICAgIHZhciB2ZWM0ID0gd3R1LnJlcGxhY2VQYXJhbXMoaW5mby5mVG9WZWM0LCB7Zjog
dW5pVG9GfSk7CisgICAgdGVzdHMucHVzaCh7CisgICAgICB2U2hhZGVyU291cmNlOiB3dHUucmVw
bGFjZVBhcmFtcyhzaGFkZXJUeXBlLnZlcnRBcnJheVRlc3QsIHtudW1UZXN0VHlwZTogbWF4SW5B
cnJheSArIDEsIHJlc3VsdDogdmVjNH0sIGluZm8pLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IHNo
YWRlclR5cGUudmVydEV4cGVjdGF0aW9uLAorICAgICAgZlNoYWRlclNvdXJjZTogd3R1LnJlcGxh
Y2VQYXJhbXMoc2hhZGVyVHlwZS5mcmFnQXJyYXlUZXN0LCB7bnVtVGVzdFR5cGU6IG1heEluQXJy
YXkgKyAxLCByZXN1bHQ6IHZlYzR9LCBpbmZvKSwKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBzaGFk
ZXJUeXBlLmZyYWdFeHBlY3RhdGlvbiwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAg
IHBhc3NNc2c6IHNoYWRlclR5cGUudHlwZSArICIgc2hhZGVyIHdpdGggdW5pZm9ybSBhcnJheSBv
ZiAiICsgaW5mby50eXBlICsgIiB3aXRoICIgKyAobWF4SW5BcnJheSArIDEpICsgIiBlbGVtZW50
cyAob25lIHBhc3QgbWF4aW11bSkgYWNjZXNzaW5nIGxhc3QgZWxlbWVudCBzaG91bGQgZmFpbCIs
CisgICAgfSk7CisKKyAgICAvLyBUZXN0IGFycmF5W21heCArIDFdIGFjY2Vzc2luZyBmaXJzdCBl
bGVtZW50LiBXZWJHTCByZXF1aXJlcyB0aGlzIHRvIGZhaWwgYnV0IEVTIGFsbG93cyB0cnVuY2F0
aW5nIGFycmF5LgorICAgIHZhciB1bmlUb0YgPSB3dHUucmVwbGFjZVBhcmFtcyhpbmZvLnVuaVRv
Riwge2lkOiAiIiwgaW5kZXg6ICJbMF0ifSk7CisgICAgdmFyIHZlYzQgPSB3dHUucmVwbGFjZVBh
cmFtcyhpbmZvLmZUb1ZlYzQsIHtmOiB1bmlUb0Z9KTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAg
IHZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHNoYWRlclR5cGUudmVydEFycmF5VGVz
dCwge251bVRlc3RUeXBlOiBtYXhJbkFycmF5ICsgMSwgcmVzdWx0OiB2ZWM0fSwgaW5mbyksCisg
ICAgICB2U2hhZGVyU3VjY2Vzczogc2hhZGVyVHlwZS52ZXJ0RXhwZWN0YXRpb24sCisgICAgICBm
U2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJUeXBlLmZyYWdBcnJheVRlc3Qs
IHtudW1UZXN0VHlwZTogbWF4SW5BcnJheSArIDEsIHJlc3VsdDogdmVjNH0sIGluZm8pLAorICAg
ICAgZlNoYWRlclN1Y2Nlc3M6IHNoYWRlclR5cGUuZnJhZ0V4cGVjdGF0aW9uLAorICAgICAgbGlu
a1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogc2hhZGVyVHlwZS50eXBlICsgIiBzaGFk
ZXIgd2l0aCB1bmlmb3JtIGFycmF5IG9mICIgKyBpbmZvLnR5cGUgKyAiIHdpdGggIiArIChtYXhJ
bkFycmF5ICsgMSkgKyAiIGVsZW1lbnRzIChvbmUgcGFzdCBtYXhpbXVtKSBhY2Nlc3NpbmcgZmly
c3QgZWxlbWVudCBzaG91bGQgZmFpbCIsCisgICAgfSk7CisKKyAgICAvLyBOb3RlOiBXZSBjYW4n
dCB0ZXN0IG1heCB1bmlmb3JtcyBhcyBhY3R1YWwgR0wgZHJpdmVycyBhcmUgb25seSByZXF1aXJl
ZCB0byBiZSBhYmxlCisgICAgLy8gdG8gZG8gdGhlIG1pbmltdW0gbnVtYmVyLiBBZnRlciB0aGF0
IGl0IGNhbiBmYWlsIGZvciBtdWx0aXBsZSByZWFzb25zLCBpbmNsdWRpbmcKKyAgICAvLyB1bmlm
b3JtIHJlZ2lzdGVycyBiZWluZyByZXNlcnZlZCBmb3IgdGhlIGltcGxlbWVudGF0aW9uJ3Mgb3du
IHVzZSBvciBhbHNvIGluc3RydWN0aW9uCisgICAgLy8gc3BhY2UgbGltaXRhdGlvbnMuIFN0cmlj
dGx5IHNwZWFraW5nLCBndWFyYW50ZWVkIHN1cHBvcnRlZCBsZW5ndGggb2YgYSBzaGFkZXIKKyAg
ICAvLyBleGVjdXRhYmxlIGlzIGRlZmluZWQgYnkgdGhlIEdMRVMyIGNvbmZvcm1hbmNlIHRlc3Rz
IGFjY29yZGluZyB0byBHTFNMIEVTIDEuMC4xNworICAgIC8vIEFwcGVuZGl4IEEuMi4gVGhpcyBk
b2VzIG5vdCBnaXZlIHVzIGFuIGV4YWN0IGxpbWl0OiB0aGlzIHRlc3Qgb25seSBhaW1zIHRvIGZp
dCB3aXRoaW4KKyAgICAvLyBpbnN0cnVjdGlvbiBzcGFjZSBsaW1pdHMgaW1wb3NlZCBieSBleGlz
dGluZyBHTEVTMiBjb21wbGlhbnQgaGFyZHdhcmUuCisKKyAgICB2YXIgZ2VuZXJhdGVDb2RlID0g
ZnVuY3Rpb24obnVtVmFycykgeworICAgICAgdmFyIHVuaWZvcm1zID0gW107CisgICAgICB2YXIg
c3VtVGVybXMgPSBbXTsKKyAgICAgIGZvciAodmFyIHV1ID0gMDsgdXUgPCBudW1WYXJzOyArK3V1
KSB7CisgICAgICAgIHVuaWZvcm1zLnB1c2goIiAgICB1bmlmb3JtICIgKyBpbmZvLnR5cGUgKyAi
IHVfdW5pZm9ybSIgKyB1dSArICI7Iik7CisgICAgICAgIHN1bVRlcm1zLnB1c2god3R1LnJlcGxh
Y2VQYXJhbXMoaW5mby51bmlUb0YsIHtpZDogdXUsIGluZGV4OiAiIn0pKTsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiB7CisgICAgICAgIHVuaWZvcm1zOiB1bmlmb3Jtcy5qb2luKCJcbiIpLAorICAg
ICAgICBjb2RlOiBpbmZvLmZUeXBlICsgIiBzdW0gPSAiICsgc3VtVGVybXMuam9pbigiICsgXG4g
ICAgICAgICAgICAiKSArICI7IiwKKyAgICAgICAgcmVzdWx0OiB3dHUucmVwbGFjZVBhcmFtcyhp
bmZvLmZUb1ZlYzQsIHtmOiAnc3VtJ30pCisgICAgICB9OworICAgIH07CisKKyAgICAvLyBUZXN0
IG1heCsxIHVuaWZvcm1zIG9mIHR5cGUuCisgICAgdGVzdHMucHVzaCh7CisgICAgICB2U2hhZGVy
U291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJUeXBlLnZlcnRVbmlmb3JtVGVzdCwgZ2Vu
ZXJhdGVDb2RlKG1heFBhY2tlZCArIDEpLCBpbmZvKSwKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBz
aGFkZXJUeXBlLnZlcnRFeHBlY3RhdGlvbiwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBs
YWNlUGFyYW1zKHNoYWRlclR5cGUuZnJhZ1VuaWZvcm1UZXN0LCBnZW5lcmF0ZUNvZGUobWF4UGFj
a2VkICsgMSksIGluZm8pLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHNoYWRlclR5cGUuZnJhZ0V4
cGVjdGF0aW9uLAorICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogc2hh
ZGVyVHlwZS50eXBlICsgIiBzaGFkZXIgd2l0aCAiICsgKG1heFBhY2tlZCArIDEpICsgIiB1bmlm
b3JtcyBvZiAiICsgaW5mby50eXBlICsgIiAob25lIHBhc3QgbWF4aW11bSkgc2hvdWxkIGZhaWwi
LAorICAgIH0pOworCisgICAgLy8gVGVzdCByZXF1aXJlZCB1bmlmb3JtcyBvZiB0eXBlLgorICAg
IHRlc3RzLnB1c2goeworICAgICAgdlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMoc2hh
ZGVyVHlwZS52ZXJ0VW5pZm9ybVRlc3QsIGdlbmVyYXRlQ29kZShtaW5WYXJzKSwgaW5mbyksCisg
ICAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBs
YWNlUGFyYW1zKHNoYWRlclR5cGUuZnJhZ1VuaWZvcm1UZXN0LCBnZW5lcmF0ZUNvZGUobWluVmFy
cyksIGluZm8pLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6IHNoYWRlclR5cGUudHlwZSArICIgc2hhZGVyIHdpdGgg
IiArIG1pblZhcnMgKyAiIHVuaWZvcm1zIG9mICIgKyBpbmZvLnR5cGUgKyAiICh0aGUgbWluaW11
bSByZXF1aXJlZCkgc2hvdWxkIHN1Y2NlZWQiLAorICAgIH0pOworICB9Cit9CitHTFNMQ29uZm9y
bWFuY2VUZXN0ZXIucnVuVGVzdHModGVzdHMpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci12YXJ5aW5nLXBhY2tpbmctcmVzdHJpY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hh
ZGVyLXZhcnlpbmctcGFja2luZy1yZXN0cmljdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDFhZDdi
NjNmMzIyYmExZjk2YzMxMmY4ZDJmOTcyNTE5OWUzNWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL3NoYWRlci12YXJ5aW5nLXBhY2tpbmctcmVzdHJpY3Rpb25zLmh0bWwKQEAgLTAsMCAr
MSwxODggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIHZhcnlpbmcgcGFja2luZyByZXN0cmljdGlvbnMgQ29uZm9ybWFuY2UgVGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXJBcnJheVRlc3QiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0
dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2YXJ5aW5nICQodHlwZSkgdl92YXJ5aW5nWyQobnVt
VGVzdFR5cGUpXTsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9u
OworICAgICQodmNvZGUpCit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJBcnJheVRl
c3QiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit2YXJ5aW5nICQodHlwZSkgdl92YXJ5aW5nWyQobnVtVGVzdFR5cGUpXTsKK3ZvaWQgbWFpbigp
Cit7CisgICAgZ2xfRnJhZ0NvbG9yID0gJChmY29kZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9InZzaGFkZXJWYXJ5aW5nVGVzdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CithdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworJCh2YXJ5aW5ncykKK3ZvaWQgbWFpbigpCit7CisgICAg
Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgICQodmNvZGUpCit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJWYXJ5aW5nVGVzdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyQodmFyeWluZ3MpCit2b2lkIG1haW4oKQorewor
ICAgIGdsX0ZyYWdDb2xvciA9ICQoZmNvZGUpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKwordmFy
IHZhcnlpbmdUeXBlcyA9IFsKKyAgeyB0eXBlOiAiZmxvYXQiLCAgICAgICBjb21wb25lbnRzUGVy
Um93OiAxLCByb3dzOiAxLCB2Y29kZTogInZfdmFyeWluZyQoaWQpJChpbmRleCkgPSAxLjA7Iiwg
ICAgICAgICAgICAgIGZjb2RlOiAidmVjNCh2X3ZhcnlpbmckKGlkKSQoaW5kZXgpLCAwLCAwLCAw
KSIsIH0sCisgIHsgdHlwZTogInZlYzIiLCAgICAgICAgY29tcG9uZW50c1BlclJvdzogMiwgcm93
czogMSwgdmNvZGU6ICJ2X3ZhcnlpbmckKGlkKSQoaW5kZXgpID0gdmVjMigwLCAwKTsiLCAgICAg
ICBmY29kZTogInZlYzQodl92YXJ5aW5nJChpZCkkKGluZGV4KSwgMCwgMCkiLCB9LAorICB7IHR5
cGU6ICJ2ZWMzIiwgICAgICAgIGNvbXBvbmVudHNQZXJSb3c6IDMsIHJvd3M6IDEsIHZjb2RlOiAi
dl92YXJ5aW5nJChpZCkkKGluZGV4KSA9IHZlYzMoMCwgMCwgMCk7IiwgICAgZmNvZGU6ICJ2ZWM0
KHZfdmFyeWluZyQoaWQpJChpbmRleCksIDApIiwgfSwKKyAgeyB0eXBlOiAidmVjNCIsICAgICAg
ICBjb21wb25lbnRzUGVyUm93OiA0LCByb3dzOiAxLCB2Y29kZTogInZfdmFyeWluZyQoaWQpJChp
bmRleCkgPSB2ZWM0KDAsIDAsIDAsIDApOyIsIGZjb2RlOiAidmVjNCh2X3ZhcnlpbmckKGlkKSQo
aW5kZXgpKSIsIH0sCisvLyBZZXMsIHRoZSBzcGVjIHNheXMgbWF0MiB0YWtlcyA0IGNvbHVtbnMs
IDIgcm93cy4KKyAgeyB0eXBlOiAibWF0MiIsICAgICAgICBjb21wb25lbnRzUGVyUm93OiA0LCBy
b3dzOiAyLCB2Y29kZTogInZfdmFyeWluZyQoaWQpJChpbmRleCkgPSBtYXQyKDEuMCk7IiwgZmNv
ZGU6ICJ2ZWM0KHZfdmFyeWluZyQoaWQpJChpbmRleClbMF0sIDAsIDApIiwgfSwKKyAgeyB0eXBl
OiAibWF0MyIsICAgICAgICBjb21wb25lbnRzUGVyUm93OiAzLCByb3dzOiAzLCB2Y29kZTogInZf
dmFyeWluZyQoaWQpJChpbmRleCkgPSBtYXQzKDEuMCk7IiwgZmNvZGU6ICJ2ZWM0KHZfdmFyeWlu
ZyQoaWQpJChpbmRleClbMF0sIDApIiwgfSwKKyAgeyB0eXBlOiAibWF0NCIsICAgICAgICBjb21w
b25lbnRzUGVyUm93OiA0LCByb3dzOiA0LCB2Y29kZTogInZfdmFyeWluZyQoaWQpJChpbmRleCkg
PSBtYXQ0KDEuMCk7IiwgZmNvZGU6ICJ2ZWM0KHZfdmFyeWluZyQoaWQpJChpbmRleClbMF0pIiwg
fSwKK107CisKK3ZhciB2QXJyYXlUZXN0U291cmNlID0gd3R1LmdldFNjcmlwdCgidnNoYWRlckFy
cmF5VGVzdCIpOwordmFyIGZBcnJheVRlc3RTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJmc2hhZGVy
QXJyYXlUZXN0Iik7Cit2YXIgdlZhcnlpbmdUZXN0U291cmNlID0gd3R1LmdldFNjcmlwdCgidnNo
YWRlclZhcnlpbmdUZXN0Iik7Cit2YXIgZlZhcnlpbmdUZXN0U291cmNlID0gd3R1LmdldFNjcmlw
dCgiZnNoYWRlclZhcnlpbmdUZXN0Iik7CisKK3ZhciBtaW5WYXJ5aW5nVmVjdG9ycyA9IDg7Cit2
YXIgbWF4VmFyeWluZ1ZlY3RvcnMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZBUllJTkdfVkVD
VE9SUyk7Cit2YXIgdGVzdHMgPSBbXTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IHZhcnlpbmdU
eXBlcy5sZW5ndGg7ICsraWkpIHsKKyAgdmFyIGluZm8gPSB2YXJ5aW5nVHlwZXNbaWldOworICB3
dHUubG9nKCJjaGVja2luZzogIiArIGluZm8udHlwZSk7CisgIC8vIENvbXB1dGUgdGhlIG1heGlt
dW0gYW1vdW50IG9mIHRoaXMgdHlwZSBhbGxvd2VkIGluIGEgc2luZ2xlIGFycmF5LgorICB2YXIg
bnVtVmFycyA9IE1hdGguZmxvb3IobWF4VmFyeWluZ1ZlY3RvcnMgLyBpbmZvLnJvd3MpOworICAv
LyBDb21wdXRlIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHRvIHdvcmsgaW4gYSBzaW5nbGUgYXJyYXku
CisgIHZhciBtaW5WYXJzID0gTWF0aC5mbG9vcihtaW5WYXJ5aW5nVmVjdG9ycyAvIGluZm8ucm93
cyk7CisgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gYWxsb3dlZCBhcyBzaW5nbGUgZWxlbWVudHMK
KyAgdmFyIG51bVBlclJvdyA9IE1hdGguZmxvb3IoNCAvIGluZm8uY29tcG9uZW50c1BlclJvdyk7
CisgIHZhciBudW1NYXggPSBNYXRoLmZsb29yKG1heFZhcnlpbmdWZWN0b3JzICogbnVtUGVyUm93
IC8gaW5mby5yb3dzKTsKKworICAvLyBUZXN0IGFycmF5WzFdIG9mIHRoZSB0eXBlCisgIHZhciB2
Y29kZSA9IHd0dS5yZXBsYWNlUGFyYW1zKGluZm8udmNvZGUsIHtpZDogIiIsIGluZGV4OiAiWzBd
In0pOworICB2YXIgZmNvZGUgPSB3dHUucmVwbGFjZVBhcmFtcyhpbmZvLmZjb2RlLCB7aWQ6ICIi
LCBpbmRleDogIlswXSJ9KTsKKyAgdGVzdHMucHVzaCh7CisgICAgdlNoYWRlclNvdXJjZTogd3R1
LnJlcGxhY2VQYXJhbXModkFycmF5VGVzdFNvdXJjZSwge251bVRlc3RUeXBlOiAxLCB2Y29kZTog
dmNvZGV9LCBpbmZvKSwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVyU291
cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhmQXJyYXlUZXN0U291cmNlLCB7bnVtVGVzdFR5cGU6IDEs
IGZjb2RlOiBmY29kZX0sIGluZm8pLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJzaGFkZXJzIHdpdGggdmFyeWluZyBhcnJh
eSBvZiAiICsgaW5mby50eXBlICsgIiB3aXRoIDEgZWxlbWVudCBzaG91bGQgc3VjY2VlZCIsCisg
IH0pOworCisgIC8vIFRlc3QgcmVxdWlyZWQgbnVtYmVyIG9mIHZhcnlpbmdzCisgIHZhciB2Y29k
ZSA9IHd0dS5yZXBsYWNlUGFyYW1zKGluZm8udmNvZGUsIHtpZDogIiIsIGluZGV4OiAiWyIgKyAo
bWluVmFycyAtIDEpICsgIl0ifSk7CisgIHZhciBmY29kZSA9IHd0dS5yZXBsYWNlUGFyYW1zKGlu
Zm8uZmNvZGUsIHtpZDogIiIsIGluZGV4OiAiWyIgKyAobWluVmFycyAtIDEpICsgIl0ifSk7Cisg
IHRlc3RzLnB1c2goeworICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHZBcnJh
eVRlc3RTb3VyY2UsIHtudW1UZXN0VHlwZTogbWluVmFycywgdmNvZGU6IHZjb2RlfSwgaW5mbyks
CisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlclNvdXJjZTogd3R1LnJlcGxh
Y2VQYXJhbXMoZkFycmF5VGVzdFNvdXJjZSwge251bVRlc3RUeXBlOiBtaW5WYXJzLCBmY29kZTog
ZmNvZGV9LCBpbmZvKSwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgICBwYXNzTXNnOiAic2hhZGVycyB3aXRoIHZhcnlpbmcgYXJyYXkgb2YgIiAr
IGluZm8udHlwZSArICIgd2l0aCAiICsgbWluVmFycyArICIgZWxlbWVudHMgKHRoZSBtaW5pbXVt
IHJlcXVpcmVkKSBzaG91bGQgc3VjY2VlZCIsCisgIH0pOworCisgIC8vIFRlc3QgYXJyYXlbbWF4
ICsgMV0gYWNjZXNzaW5nIGxhc3QgZWxlbWVudC4gV2ViR0wgcmVxdWlyZXMgdGhpcyB0byBmYWls
LgorICB2YXIgdmNvZGUgPSB3dHUucmVwbGFjZVBhcmFtcyhpbmZvLnZjb2RlLCB7aWQ6ICIiLCBp
bmRleDogIlsiICsgbnVtVmFycyArICJdIn0pOworICB2YXIgZmNvZGUgPSB3dHUucmVwbGFjZVBh
cmFtcyhpbmZvLmZjb2RlLCB7aWQ6ICIiLCBpbmRleDogIlsiICsgbnVtVmFycyArICJdIn0pOwor
ICB0ZXN0cy5wdXNoKHsKKyAgICB2U2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyh2QXJy
YXlUZXN0U291cmNlLCB7bnVtVGVzdFR5cGU6IG51bVZhcnMgKyAxLCB2Y29kZTogdmNvZGV9LCBp
bmZvKSwKKyAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgZlNoYWRlclNvdXJjZTogd3R1
LnJlcGxhY2VQYXJhbXMoZkFycmF5VGVzdFNvdXJjZSwge251bVRlc3RUeXBlOiBudW1WYXJzICsg
MSwgZmNvZGU6IGZjb2RlfSwgaW5mbyksCisgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAg
IGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAic2hhZGVycyB3aXRoIHZhcnlpbmcg
YXJyYXkgb2YgIiArIGluZm8udHlwZSArICIgd2l0aCAiICsgKG51bVZhcnMgKyAxKSArICIgZWxl
bWVudHMgKG9uZSBwYXN0IG1heGltdW0pIGFjY2Vzc2luZyBsYXN0IGVsZW1lbnQgc2hvdWxkIGZh
aWwiLAorICB9KTsKKworICAvLyBUZXN0IGFycmF5W21heCArIDFdIGFjY2Vzc2luZyBmaXJzdCBl
bGVtZW50LiBXZWJHTCByZXF1aXJlcyB0aGlzIHRvIGZhaWwgYnV0IEVTIGFsbG93cyB0cnVuY2F0
aW5nIGFycmF5LgorICB2YXIgdmNvZGUgPSB3dHUucmVwbGFjZVBhcmFtcyhpbmZvLnZjb2RlLCB7
aWQ6ICIiLCBpbmRleDogIlswXSJ9KTsKKyAgdmFyIGZjb2RlID0gd3R1LnJlcGxhY2VQYXJhbXMo
aW5mby5mY29kZSwge2lkOiAiIiwgaW5kZXg6ICJbMF0ifSk7CisgIHRlc3RzLnB1c2goeworICAg
IHZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHZBcnJheVRlc3RTb3VyY2UsIHtudW1U
ZXN0VHlwZTogbnVtVmFycyArIDEsIHZjb2RlOiB2Y29kZX0sIGluZm8pLAorICAgIHZTaGFkZXJT
dWNjZXNzOiBmYWxzZSwKKyAgICBmU2hhZGVyU291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhmQXJy
YXlUZXN0U291cmNlLCB7bnVtVGVzdFR5cGU6IG51bVZhcnMgKyAxLCBmY29kZTogZmNvZGV9LCBp
bmZvKSwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNl
LAorICAgIHBhc3NNc2c6ICJzaGFkZXJzIHdpdGggdmFyeWluZyBhcnJheSBvZiAiICsgaW5mby50
eXBlICsgIiB3aXRoICIgKyAobnVtVmFycyArIDEpICsgIiBlbGVtZW50cyAob25lIHBhc3QgbWF4
aW11bSkgYWNjZXNzaW5nIGZpcnN0IGVsZW1lbnQgc2hvdWxkIGZhaWwiLAorICB9KTsKKworICAv
LyBOb3RlOiBXZSBjYW4ndCB0ZXN0IG1heCB2YXJ5aW5ncyBhcyBhY3R1YWwgR0wgZHJpdmVycyBh
cmUgb25seSByZXF1aXJlZCB0byBiZSBhYmxlIHRvCisgIC8vIGRvIHRoZSBtaW5pbXVtIG51bWJl
ci4gQWZ0ZXIgdGhhdCBpdCBjYW4gZmFpbCBmb3IgYW55IHJlYXNvbiwgZm9yIGV4YW1wbGUgcnVu
bmluZyBvdXQgb2YKKyAgLy8gaW5zdHJ1Y3Rpb24gc3BhY2UuCisKKyAgdmFyIGdlbmVyYXRlQ29k
ZSA9IGZ1bmN0aW9uKG51bVZhcnMpIHsKKyAgICB2YXIgdmFyeWluZ3MgPSBbXTsKKyAgICB2YXIg
dmNvZGVzID0gW107CisgICAgdmFyIGZjb2RlcyA9IFtdOworICAgIGZvciAodmFyIHV1ID0gMDsg
dXUgPCBudW1WYXJzOyArK3V1KSB7CisgICAgICB2YXJ5aW5ncy5wdXNoKCIgICAgdmFyeWluZyAi
ICsgaW5mby50eXBlICsgIiB2X3ZhcnlpbmciICsgdXUgKyAiOyIpOworICAgICAgdmNvZGVzLnB1
c2god3R1LnJlcGxhY2VQYXJhbXMoaW5mby52Y29kZSwge2lkOiB1dSwgaW5kZXg6ICIifSkpOwor
ICAgICAgZmNvZGVzLnB1c2god3R1LnJlcGxhY2VQYXJhbXMoaW5mby5mY29kZSwge2lkOiB1dSwg
aW5kZXg6ICIifSkpOworICAgIH0KKyAgICByZXR1cm4geworICAgICAgdmFyeWluZ3M6IHZhcnlp
bmdzLmpvaW4oIlxuIiksCisgICAgICB2Y29kZTogdmNvZGVzLmpvaW4oIlxuICAgICAgICAgICAg
IiksCisgICAgICBmY29kZTogZmNvZGVzLmpvaW4oIiArIFxuICAgICAgICAgICAgIiksCisgICAg
fTsKKyAgfTsKKworICAvLyBUZXN0IG1heCsxIHZhcnlpbmdzIG9mIHR5cGUuCisgIHRlc3RzLnB1
c2goeworICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHZWYXJ5aW5nVGVzdFNv
dXJjZSwgZ2VuZXJhdGVDb2RlKG51bU1heCArIDEpLCBpbmZvKSwKKyAgICB2U2hhZGVyU3VjY2Vz
czogZmFsc2UsCisgICAgZlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMoZlZhcnlpbmdU
ZXN0U291cmNlLCBnZW5lcmF0ZUNvZGUobnVtTWF4ICsgMSksIGluZm8pLAorICAgIGZTaGFkZXJT
dWNjZXNzOiBmYWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogInNo
YWRlcnMgd2l0aCAiICsgKG51bU1heCArIDEpICsgIiB2YXJ5aW5ncyBvZiAiICsgaW5mby50eXBl
ICsgIiAob25lIHBhc3QgbWF4aW11bSkgc2hvdWxkIGZhaWwiLAorICB9KTsKKworICAvLyBUZXN0
IHJlcXVpcmVkIHZhcnlpbmdzIG9mIHR5cGUuCisgIHRlc3RzLnB1c2goeworICAgIHZTaGFkZXJT
b3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHZWYXJ5aW5nVGVzdFNvdXJjZSwgZ2VuZXJhdGVDb2Rl
KG1pblZhcnMpLCBpbmZvKSwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVy
U291cmNlOiB3dHUucmVwbGFjZVBhcmFtcyhmVmFyeWluZ1Rlc3RTb3VyY2UsIGdlbmVyYXRlQ29k
ZShtaW5WYXJzKSwgaW5mbyksCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1
Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInNoYWRlcnMgd2l0aCAiICsgbWluVmFycyArICIg
dmFyeWluZ3Mgb2YgIiArIGluZm8udHlwZSArICIgKHRoZSBtaW5pbXVtIHJlcXVpcmVkKSBzaG91
bGQgc3VjY2VlZCIsCisgIH0pOworfQorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMo
dGVzdHMpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ni1jaGFy
YWN0ZXItZGVmaW5lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtMjU2LWNoYXJhY3Rlci1k
ZWZpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWQxNTAwOWI1ODEzMjNmYWEzMDU4MGVmZTdhYjNhYzJj
NjNhYjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ni1jaGFy
YWN0ZXItZGVmaW5lLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB0aGF0IHVzZXMgMjU2IGNoYXJhY3RlciB0b2tl
biBpbiAjZGVmaW5lIHNob3VsZCBzdWNjZWVkCisjZGVmaW5lIExFTl8yNTZfT0sgWHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4WAorCit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlvbiA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ni1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtMjU2LWNoYXJhY3Rlci1pZGVudGlmaWVyLmZyYWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NjExMmRlZDFkYTVlZGJhMDNiYjk0ZmNkZTI2NzMxZTJmYTg5ZjhkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ni1jaGFyYWN0ZXItaWRl
bnRpZmllci5mcmFnLmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlcjI1NiIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVyIHRoYXQgdXNlcyAyNTYgY2hhcmFjdGVyIGlkZW50
aWZpZXIgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBm
bG9hdCBhMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Owordm9pZCBtYWluKCkKK3sKKyAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChhMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1LDAuMCwwLjAsMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJfYmVmb3JlIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBzaGFkZXIgdGhhdCB1c2VzIDI1
NiBjaGFyYWN0ZXIgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIHVuZGVyc2NvcmUgc2hvdWxk
IHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCBfYTEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0Owordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChfYTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0LDAuMCwwLjAsMS4wKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJfYWZ0ZXIiIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHNoYWRlciB0aGF0IHVzZXMgMjU2IGNoYXJhY3RlciBp
ZGVudGlmaWVyIHRoYXQgZW5kcyB3aXRoIHVuZGVyc2NvcmUgc2hvdWxkIHN1Y2NlZWQKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBmbG9hdCBhMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzRfOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzRfLDAuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnJhZ21lbnRTaGFkZXIyNTZfb2RkIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNj
cmlwdCI+CisvLyBzaGFkZXIgdGhhdCB1c2VzIDI1NiBjaGFyYWN0ZXIgaWRlbnRpZmllciB3aXRo
IG9kZCBjaGFyYWN0ZXJzIGFzIHVuZGVyc2NvcmVzIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxvYXQgYV8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82
XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJf
NF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8w
XzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZf
OF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80
XzsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYV8yXzRfNl84XzBfMl80
XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBf
Ml80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84
XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRf
Nl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8y
XzRfNl84XzBfMl80XywwLjAsMC4wLDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyMjU2X2V2ZW4iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0
Ij4KKy8vIHNoYWRlciB0aGF0IHVzZXMgMjU2IGNoYXJhY3RlciBpZGVudGlmaWVyIHdpdGggZXZl
biBjaGFyYWN0ZXJzIGFzIHVuZGVyc2NvcmVzIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxvYXQgYTFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185
XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVf
N185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8z
XzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83Xzlf
MV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNTsK
K3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYTFfM181XzdfOV8xXzNfNV83
XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNf
NV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8x
XzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181Xzdf
OV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181
XzdfOV8xXzNfNSwwLjAsMC4wLDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworICAgIHsKKyAgICAgIGZT
aGFkZXJJZDogJ2ZyYWdtZW50U2hhZGVyMjU2JywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGgg
MjU2IGNoYXJhY3RlciBpZGVudGlmaWVyIHNob3VsZCBzdWNjZWVkJworICAgIH0sCisgICAgewor
ICAgICAgZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJfYmVmb3JlJywKKyAgICAgIGZTaGFkZXJT
dWNjZXNzOiB0cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICBwYXNzTXNnOiAn
c2hhZGVyIHdpdGggMjU2IGNoYXJhY3RlciBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggdW5k
ZXJzY29yZSBzaG91bGQgc3VjY2VlZCcKKyAgICB9LAorICAgIHsKKyAgICAgIGZTaGFkZXJJZDog
J2ZyYWdtZW50U2hhZGVyX2FmdGVyJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
ICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggMjU2IGNo
YXJhY3RlciBpZGVudGlmaWVyIHRoYXQgZW5kcyB3aXRoIHVuZGVyc2NvcmUgc2hvdWxkIHN1Y2Nl
ZWQnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlcjI1Nl9v
ZGQnLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCAyNTYgY2hhcmFjdGVyIGlkZW50aWZpZXIg
d2l0aCBvZGQgY2hhcmFjdGVycyBhcyB1bmRlcnNjb3JlcyBzaG91bGQgc3VjY2VlZCcKKyAgICB9
LAorICAgIHsKKyAgICAgIGZTaGFkZXJJZDogJ2ZyYWdtZW50U2hhZGVyMjU2X2V2ZW4nLAorICAg
ICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAg
IHBhc3NNc2c6ICdzaGFkZXIgd2l0aCAyNTYgY2hhcmFjdGVyIGlkZW50aWZpZXIgd2l0aCBldmVu
IGNoYXJhY3RlcnMgYXMgdW5kZXJzY29yZXMgc2hvdWxkIHN1Y2NlZWQnCisgICAgfQorXSk7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC0yNTctY2hhcmFjdGVyLWRl
ZmluZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ny1jaGFyYWN0ZXItZGVmaW5lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGQ0M2MyODBlNDE1OTc4YzFjYzA2NWQzZjUyYjAyODQ4OTcxZjU2Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC0yNTctY2hhcmFjdGVyLWRl
ZmluZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0
Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIDI1NyBjaGFyYWN0ZXIgdG9rZW4gaW4gI2Rl
ZmluZSBzaG91bGQgZmFpbAorI2RlZmluZSBMRU5fMjU3X0JBRCBYeHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4WAorCit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci13aXRoLTI1Ny1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21p
c2Mvc2hhZGVyLXdpdGgtMjU3LWNoYXJhY3Rlci1pZGVudGlmaWVyLmZyYWcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lM2I3MGU5OWU4ODI5ODgwODkyZmQ2NTZkMmNmNjE4NWQxNDg5MTM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLTI1Ny1jaGFyYWN0ZXItaWRlbnRpZmllci5m
cmFnLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisvLyBzaGFkZXIgdGhhdCB1c2VzIDI1NyBjaGFyYWN0ZXIgaWRlbnRpZmllciBzaG91bGQg
ZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGZsb2F0IGExMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Owordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChhMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NiwwLjAsMC4wLDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1fd2ViZ2wtaWRlbnRp
Zmllci52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtX3dlYmdsLWlkZW50aWZpZXIu
dmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZDIxOTE5MDI2OGVlZGU3NDViZjNhZmYyZjMxMjVmYmU4
NjJjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtX3dlYmdsLWlk
ZW50aWZpZXIudmVydC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1q
YXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIF93ZWJnbCBpZGVudGlmaWVy
IHNob3VsZCBmYWlsCithdHRyaWJ1dGUgdmVjNCBfd2ViZ2xfdlBvc2l0aW9uOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IF93ZWJnbF92UG9zaXRpb247Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtYXJiaXRyYXJ5LWlu
ZGV4aW5nLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1hcmJpdHJhcnktaW5kZXhp
bmcuZnJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ODM3NWRjMDFiNWM3NzE5ODY0NmNiYWE2MDg0NGE4
ZDE1ZGJlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtYXJiaXRy
YXJ5LWluZGV4aW5nLmZyYWcuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB3aXRoIGFyYml0cmFyeSBpbmRl
eGluZyBleHByZXNzaW9uIHNob3VsZCBmYWlsCisvLyBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3Jl
Z2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8jU1VQUE9SVEVEX0dMU0xfQ09OU1RSVUNUUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gdmVjNCB1X2NvbG9yc1s4XTsKK3Zhcnlp
bmcgZmxvYXQgYV9pbmRleDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBpbnQgaW5kZXggPSBpbnQo
Zmxvb3IoYV9pbmRleCkpOworICAgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3JzW2luZGV4XTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWFyYml0
cmFyeS1pbmRleGluZy52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtYXJiaXRyYXJ5
LWluZGV4aW5nLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWRiZjY3MjQ0ZGYwOTczMTgwNjYzOTNk
ZTYzYTkwZGQ5ZjhjYWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRo
LWFyYml0cmFyeS1pbmRleGluZy52ZXJ0Lmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB3aXRoIGFyYml0cmFyeSBp
bmRleGluZyBleHByZXNzaW9uIHNob3VsZCBzdWNjZWVkCisvLyBodHRwOi8vd3d3Lmtocm9ub3Mu
b3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8jU1VQUE9SVEVEX0dMU0xfQ09OU1RSVUNU
UwordW5pZm9ybSBtYXQ0IHVfbWF0cmljZXNbOF07CithdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsK
K2F0dHJpYnV0ZSBmbG9hdCBhX2luZGV4OworCit2b2lkIG1haW4oKQoreworICAgIGludCBpbmRl
eCA9IGludChmbG9vcihhX2luZGV4KSk7CisgICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpY2VzW2lu
ZGV4XSAqIGFfdmVydGV4OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21p
c2Mvc2hhZGVyLXdpdGgtYXJyYXktb2Ytc3RydWN0cy1jb250YWluaW5nLWFycmF5cy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL3NoYWRlci13aXRoLWFycmF5LW9mLXN0cnVjdHMtY29udGFpbmluZy1hcnJheXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNGFjY2UxMWZjYTY0YmFiOTc1NzJlN2VkNmJjN2YwMTdjNjQwYjEx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWFycmF5LW9mLXN0cnVj
dHMtY29udGFpbmluZy1hcnJheXMuaHRtbApAQCAtMCwwICsxLDEzMyBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBBcnJheSBvZiBT
dHJ1Y3RzIENvbnRhaW5pbmcgQXJyYXlzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3Njcmlw
dD4KKworPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRp
b24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyMCIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVj
dCBteV9zdHJ1Y3QgeworICB2ZWM0IGNvbG9yWzJdOworfTsKK3VuaWZvcm0gbXlfc3RydWN0IHVf
Y29sb3JzWzJdOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9y
c1swXS5jb2xvclswXTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjEiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3Qg
bXlfc3RydWN0IHsKKyAgdmVjNCBjb2xvclsyXTsKK307Cit1bmlmb3JtIG15X3N0cnVjdCB1X2Nv
bG9yc1syXTsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvcnNb
MF0uY29sb3JbMV07Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItd2l0aC1vbmUt
ZWxlbWVudC1hcnJheXMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgbXlfc3RydWN0IHsKKyAgdmVjNCBjb2xvclsxXTsKK307Cit1
bmlmb3JtIG15X3N0cnVjdCB1X2NvbG9yc1sxXTsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdV9jb2xvcnNbMF0uY29sb3JbMF07Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0Oworc3RydWN0IG15X3N0cnVjdCB7CisgIHZlYzQgY29sb3IxWzJdOworICB2ZWM0
IGNvbG9yMlsyXTsKK307Cit1bmlmb3JtIG15X3N0cnVjdCB1X2NvbG9yc1syXTsKK3ZvaWQgbWFp
bih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvcnNbMF0uY29sb3IxWzBdICsgdV9j
b2xvcnNbMF0uY29sb3IyWzBdICsgdV9jb2xvcnNbMV0uY29sb3IxWzFdICt1X2NvbG9yc1sxXS5j
b2xvcjJbMV07Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7Cit3dHUuc2V0dXBVbml0UXVhZChnbCk7
CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCAyOyArK2lpKSB7CisgIHZhciBwcm9ncmFtID0gd3R1
LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiICsgaWldLCBbImFfcG9zaXRp
b24iXSk7CisgIHZhciByZWRfbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1
X2NvbG9yc1swXS5jb2xvclsiICsgaWkgICsgIl0iKTsKKyAgdmFyIGdyZWVuX2xvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9jb2xvcnNbMF0uY29sb3JbIiArICgxIC0gaWkp
ICsgIl0iKTsKKyAgZ2wudW5pZm9ybTRmdihyZWRfbG9jLCBbMSwgMCwgMCwgMV0pOworICBnbC51
bmlmb3JtNGZ2KGdyZWVuX2xvYywgWzAsIDEsIDAsIDFdKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiU2hv
dWxkIGJlIHJlZCIpOworfQorCit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsi
dnNoYWRlciIsICJmc2hhZGVyLXdpdGgtb25lLWVsZW1lbnQtYXJyYXlzIl0sIFsiYV9wb3NpdGlv
biJdKTsKK3ZhciBncmVlbl9sb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVf
Y29sb3JzWzBdLmNvbG9yWzBdIik7CitnbC51bmlmb3JtNGZ2KGdyZWVuX2xvYywgWzAsIDEsIDAs
IDFdKTsKK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJTaG91bGQgYmUgZ3JlZW4iKTsKKwordmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlcjMiXSwgWyJhX3Bvc2l0aW9u
Il0pOwordmFyIG51bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBn
bC5BQ1RJVkVfVU5JRk9STVMpOworc2hvdWxkQmUoIm51bVVuaWZvcm1zIiwgIjQiKTsKK3ZhciB1
bmlmb3JtcyA9IFtdCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtVW5pZm9ybXM7ICsraWkpIHsK
KyAgdW5pZm9ybXMucHVzaChnbC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGlpKS5uYW1lKTsK
K30KK3VuaWZvcm1zLnNvcnQoKTsKK3Nob3VsZEJlKCJ1bmlmb3Jtc1swXSIsICcidV9jb2xvcnNb
MF0uY29sb3IxWzBdIicpOworc2hvdWxkQmUoInVuaWZvcm1zWzFdIiwgJyJ1X2NvbG9yc1swXS5j
b2xvcjJbMF0iJyk7CitzaG91bGRCZSgidW5pZm9ybXNbMl0iLCAnInVfY29sb3JzWzFdLmNvbG9y
MVswXSInKTsKK3Nob3VsZEJlKCJ1bmlmb3Jtc1szXSIsICcidV9jb2xvcnNbMV0uY29sb3IyWzBd
IicpOwordmFyIGxvYzAwID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9y
c1swXS5jb2xvcjEiKTsKK3ZhciBsb2MwMSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidV9jb2xvcnNbMF0uY29sb3IyIik7Cit2YXIgbG9jMTAgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInVfY29sb3JzWzFdLmNvbG9yMSIpOwordmFyIGxvYzExID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yc1sxXS5jb2xvcjIiKTsKK3Nob3VsZEJlVHJ1
ZSgibG9jMDAgIT0gdW5kZWZpbmVkIik7CitzaG91bGRCZVRydWUoImxvYzAxICE9IHVuZGVmaW5l
ZCIpOworc2hvdWxkQmVUcnVlKCJsb2MxMCAhPSB1bmRlZmluZWQiKTsKK3Nob3VsZEJlVHJ1ZSgi
bG9jMTEgIT0gdW5kZWZpbmVkIik7CitnbC51bmlmb3JtNGZ2KGxvYzAwLCBbMSwgMCwgMCwgMF0p
OworZ2wudW5pZm9ybTRmdihsb2MwMSwgWzAsIDEsIDAsIDBdKTsKK2dsLnVuaWZvcm00ZnYobG9j
MTAsIFswLCAwLCAwLCAwLCAwLCAwLCAxLCAwXSk7CitnbC51bmlmb3JtNGZ2KGxvYzExLCBbMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMV0pOwordmFyIGxvYzEwMSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidV9jb2xvcnNbMV0uY29sb3IxWzFdIik7Cit2YXIgbG9jMTExID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yc1sxXS5jb2xvcjJbMV0iKTsKK3Nob3Vs
ZEJlVHJ1ZSgibG9jMTAxICE9IHVuZGVmaW5lZCIpOworc2hvdWxkQmVUcnVlKCJsb2MxMTEgIT0g
dW5kZWZpbmVkIik7Cit3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAwXSk7
CitnbC51bmlmb3JtNGZ2KGxvYzEwMSwgWzAsIDAsIDAsIDBdKTsKK2dsLnVuaWZvcm00ZnYobG9j
MTExLCBbMCwgMCwgMCwgMF0pOword3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwg
MCwgMF0pOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAyNTUsIDAsIDBdLCAiU2hvdWxkIGJl
IHllbGxvdyIpOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJl
IHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13
aXRoLWFycmF5LW9mLXN0cnVjdHMtdW5pZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRo
LWFycmF5LW9mLXN0cnVjdHMtdW5pZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NTYwZTNlNzA3NGE2
OTEwY2E1ZDNiNTY2MmI5ZDgzODc1NjEwODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mv
c2hhZGVyLXdpdGgtYXJyYXktb2Ytc3RydWN0cy11bmlmb3JtLmh0bWwKQEAgLTAsMCArMSwxNDUg
QEAKKworPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+R0xTTCBBcnJheSBvZiBTdHJ1Y3RzIFVuaWZvcm08L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
IDwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRl
eCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBn
bF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXIwIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
Oworc3RydWN0IG15X3N0cnVjdCB7CisgIHZlYzQgY29sb3I7Cit9OwordW5pZm9ybSBteV9zdHJ1
Y3QgdV9jb2xvcnNbMl07Cit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHVf
Y29sb3JzWzBdLmNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyMSIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVj
dCBteV9zdHJ1Y3QgeworICB2ZWM0IGNvbG9yOworfTsKK3VuaWZvcm0gbXlfc3RydWN0IHVfY29s
b3JzWzJdOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yc1sx
XS5jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjIiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgbXlfc3Ry
dWN0IHsKKyAgdmVjNCBjb2xvcjE7CisgIHZlYzQgY29sb3IyOworfTsKK3VuaWZvcm0gbXlfc3Ry
dWN0IHVfY29sb3JzWzJdOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB1
X2NvbG9yc1swXS5jb2xvcjEgKyB1X2NvbG9yc1swXS5jb2xvcjIgKyB1X2NvbG9yc1sxXS5jb2xv
cjEgK3VfY29sb3JzWzFdLmNvbG9yMjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
cjMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CitzdHJ1Y3QgbXlfc3RydWN0IHsKKyAgZmxvYXQgcjsKKyAgZmxvYXQgZzsKKyAgZmxvYXQgYjsK
KyAgZmxvYXQgYTsKK307Cit1bmlmb3JtIG15X3N0cnVjdCB1X2NvbG9yc1syXTsKK3ZvaWQgbWFp
bih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1X2NvbG9yc1swXS5yLCB1X2NvbG9y
c1swXS5nLCB1X2NvbG9yc1sxXS5iLCB1X2NvbG9yc1sxXS5hKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52
YXMiKTsKK3d0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IDI7
ICsraWkpIHsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIi
LCAiZnNoYWRlciIgKyBpaV0sIFsiYV9wb3NpdGlvbiJdKTsKKyAgdmFyIHJlZF9sb2MgPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfY29sb3JzWyIgKyBpaSArICJdLmNvbG9yIik7
CisgIHZhciBncmVlbl9sb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfY29s
b3JzWyIgKyAoMSAtIGlpKSArICJdLmNvbG9yIik7CisgIGdsLnVuaWZvcm00ZnYocmVkX2xvYywg
WzEsIDAsIDAsIDFdKTsKKyAgZ2wudW5pZm9ybTRmdihncmVlbl9sb2MsIFswLCAxLCAwLCAxXSk7
CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwg
WzI1NSwgMCwgMCwgMjU1XSwgIlNob3VsZCBiZSByZWQiKTsKK30KKwordmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlcjIiXSwgWyJhX3Bvc2l0aW9u
Il0pOwordmFyIG51bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBn
bC5BQ1RJVkVfVU5JRk9STVMpOworc2hvdWxkQmUoIm51bVVuaWZvcm1zIiwgIjQiKTsKK3ZhciB1
bmlmb3JtcyA9IFtdCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtVW5pZm9ybXM7ICsraWkpIHsK
KyAgdW5pZm9ybXMucHVzaChnbC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGlpKS5uYW1lKTsK
K30KK3VuaWZvcm1zLnNvcnQoKTsKK3Nob3VsZEJlKCJ1bmlmb3Jtc1swXSIsICcidV9jb2xvcnNb
MF0uY29sb3IxIicpOworc2hvdWxkQmUoInVuaWZvcm1zWzFdIiwgJyJ1X2NvbG9yc1swXS5jb2xv
cjIiJyk7CitzaG91bGRCZSgidW5pZm9ybXNbMl0iLCAnInVfY29sb3JzWzFdLmNvbG9yMSInKTsK
K3Nob3VsZEJlKCJ1bmlmb3Jtc1szXSIsICcidV9jb2xvcnNbMV0uY29sb3IyIicpOwordmFyIGxv
YzAwID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yc1swXS5jb2xvcjEi
KTsKK3ZhciBsb2MwMSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9jb2xvcnNb
MF0uY29sb3IyIik7Cit2YXIgbG9jMTAgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InVfY29sb3JzWzFdLmNvbG9yMSIpOwordmFyIGxvYzExID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ1X2NvbG9yc1sxXS5jb2xvcjIiKTsKK3Nob3VsZEJlVHJ1ZSgibG9jMDAgIT0g
dW5kZWZpbmVkIik7CitzaG91bGRCZVRydWUoImxvYzAxICE9IHVuZGVmaW5lZCIpOworc2hvdWxk
QmVUcnVlKCJsb2MxMCAhPSB1bmRlZmluZWQiKTsKK3Nob3VsZEJlVHJ1ZSgibG9jMTEgIT0gdW5k
ZWZpbmVkIik7CitnbC51bmlmb3JtNGZ2KGxvYzAwLCBbMSwgMCwgMCwgMF0pOworZ2wudW5pZm9y
bTRmdihsb2MwMSwgWzAsIDEsIDAsIDBdKTsKK2dsLnVuaWZvcm00ZnYobG9jMTAsIFswLCAwLCAx
LCAwXSk7CitnbC51bmlmb3JtNGZ2KGxvYzExLCBbMCwgMCwgMCwgMV0pOword3R1LmNsZWFyQW5k
RHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMF0pOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1
LCAyNTUsIDI1NSwgMjU1XSwgIlNob3VsZCBiZSB3aGl0ZSIpOworCitwcm9ncmFtID0gd3R1LnNl
dHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIzIl0sIFsiYV9wb3NpdGlvbiJdKTsK
K3ZhciBsb2MwciA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9jb2xvcnNbMF0u
ciIpOwordmFyIGxvYzBnID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9y
c1swXS5nIik7Cit2YXIgbG9jMGIgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVf
Y29sb3JzWzBdLmIiKTsKK3ZhciBsb2MwYSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidV9jb2xvcnNbMF0uYSIpOwordmFyIGxvYzFyID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJ1X2NvbG9yc1sxXS5yIik7Cit2YXIgbG9jMWcgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInVfY29sb3JzWzFdLmciKTsKK3ZhciBsb2MxYiA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidV9jb2xvcnNbMV0uYiIpOwordmFyIGxvYzFhID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yc1sxXS5hIik7CitzaG91bGRCZVRydWUoImxv
YzByICE9IHVuZGVmaW5lZCIpOworc2hvdWxkQmVUcnVlKCJsb2MwZyAhPSB1bmRlZmluZWQiKTsK
K3Nob3VsZEJlVHJ1ZSgibG9jMWIgIT0gdW5kZWZpbmVkIik7CitzaG91bGRCZVRydWUoImxvYzFh
ICE9IHVuZGVmaW5lZCIpOworZ2wudW5pZm9ybTFmKGxvYzByLCAxKTsKK2dsLnVuaWZvcm0xZihs
b2MwZywgMSk7CitnbC51bmlmb3JtMWYobG9jMWIsIDEpOworZ2wudW5pZm9ybTFmKGxvYzFhLCAx
KTsKK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDBdKTsKK3d0dS5jaGVj
a0NhbnZhcyhnbCwgWzI1NSwgMjU1LCAyNTUsIDI1NV0sICJTaG91bGQgYmUgd2hpdGUiKTsKKwor
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8g
ZXJyb3JzIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWF0dHJpYi1h
cnJheS52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtYXR0cmliLWFycmF5LnZlcnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNGIxZmZiMTg5NjVjYTg1ZTMwMjc3Y2JlMTVjZGNiMDIzNWM3NTY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWF0dHJpYi1hcnJheS52
ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorLy8gdmVydGV4IHNoYWRlciB0aGF0IHVzZXMgYXR0cmlidXRlIGFycmF5IHNob3VsZCBmYWls
ICBhcyBwZXIgR0xTTCBwYWdlIDExMCwgYXBwZW5kaXggQSwgc2VjdGlvbiA1CithdHRyaWJ1dGUg
dmVjNCB2UG9zaXRpb25bMl07Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBv
c2l0aW9uWzBdICsgdlBvc2l0aW9uWzFdOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWF0dHJpYi1zdHJ1Y3QudmVydC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL3NoYWRlci13aXRoLWF0dHJpYi1zdHJ1Y3QudmVydC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
MDY5ZDExYjIxNzM0N2RjMjM2MDIzNTJmMGI2MTE5YTg1NGQxZmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtYXR0cmliLXN0cnVjdC52ZXJ0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0
dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRl
ciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRl
ciB0aGF0IHVzZXMgYXR0cmlidXRlIHN0cnVjdCBzaG91bGQgZmFpbCBwZXIgR0xTTCBFUyBzZWN0
aW9uIDQuNC4zLCAiQXR0cmlidXRlIiwgcC4gMzAKK3N0cnVjdCBVc2VyVHlwZSB7CisgICAgYXR0
cmlidXRlIHZlYzQgcG9zaXRpb247Cit9OworCithdHRyaWJ1dGUgVXNlclR5cGUgdXNlckF0dHI7
Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdXNlckF0dHIucG9zaXRpb247Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jbGlw
dmVydGV4LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jbGlwdmVydGV4LnZlcnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzlkMzAyODU0MzU3ZGE1ZTFkZTAwOGQ4ZThkYWE3NTVmZDA1YWFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWNsaXB2ZXJ0ZXgudmVy
dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4K
Ky8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIGdsX0NsaXBWZXJ0ZXggc2hvdWxkIGZhaWwKK2F0
dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSB2UG9zaXRpb247CisgICAgZ2xfQ2xpcFZlcnRleCA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0
KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWNvbW1hLWFzc2lnbm1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jb21tYS1hc3NpZ25tZW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzA4MTZkNDE3MzA3YWVkNzMzNmI2MmM5MmQ0NjFjMzEzNGI2ZTU5NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jb21tYS1hc3NpZ25tZW50Lmh0bWwK
QEAgLTAsMCArMSw0MSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBm
cmFnbWVudCBzaGFkZXIgd2l0aCBjb21tYSBhc3NpZ25tZW50IHNob3VsZCBzdWNjZWVkCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYSA9IDAuMDsKKyAg
ZmxvYXQgYiA9IDAuMDsKKyAgZmxvYXQgYyA9IDAuMDsKKyAgZmxvYXQgZCA9IDAuMDsKKyAgYSA9
IDEuMSwgYiA9IDMuMTsKKyAgYyA9IDIuMSwgZCA9IDQuMTsKKyAgLy8gT3V0cHV0IGdyZWVuIGlm
IHN1Y2Nlc3NmdWwsIHJlZCBpZiBub3QuCisgIGdsX0ZyYWdDb2xvciA9ICgoYSArIGIgKyBjICsg
ZCA+IDEwLjApID8gdmVjNCgwLDEsMCwxKSA6IHZlYzQoMSwwLDAsMSkpOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRl
clRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtY29tbWEtY29u
ZGl0aW9uYWwtYXNzaWdubWVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWNvbW1hLWNv
bmRpdGlvbmFsLWFzc2lnbm1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzY3MmQ1NjllMGY3MWU3OTcy
MzlmZmM2MGQ5YjA2MjEzMzI4YjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRl
ci13aXRoLWNvbW1hLWNvbmRpdGlvbmFsLWFzc2lnbm1lbnQuaHRtbApAQCAtMCwwICsxLDE5MiBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyQUdy
ZWF0ZXJUaGFuQkNoZWNrUiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
Ly8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZm9yIHNjb3Bpbmcgc2hvdWxkIHN1Y2NlZWQKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICBmbG9hdCBhID0gMy4wOworICBm
bG9hdCBiID0gMi4wOworICBmbG9hdCByID0gMC4wOworICBmbG9hdCByMCA9IDAuNTsKKyAgZmxv
YXQgcjEgPSAxLjA7CisgIGZsb2F0IGFiID0gYSA+IGIgPyAociA9IHIwLCBhKSA6IChyID0gcjEs
IGIpOworICAvLyBPdXRwdXQgZ3JlZW4gaWYgc3VjY2Vzc2Z1bCwgcmVkIGlmIG5vdC4KKyAgZ2xf
RnJhZ0NvbG9yID0gKChyID09IHIwKSA/IHZlYzQoMCwxLDAsMSkgOiB2ZWM0KDEsMCwwLDEpKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJBR3JlYXRlclRoYW5CQ2hl
Y2tBQiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQg
c2hhZGVyIHdpdGggZm9yIHNjb3Bpbmcgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0Owordm9pZCBtYWluKCkgeworICBmbG9hdCBhID0gMy4wOworICBmbG9hdCBiID0gMi4w
OworICBmbG9hdCByID0gMC4wOworICBmbG9hdCByMCA9IDAuNTsKKyAgZmxvYXQgcjEgPSAxLjA7
CisgIGZsb2F0IGFiID0gYSA+IGIgPyAociA9IHIwLCBhKSA6IChyID0gcjEsIGIpOworICAvLyBP
dXRwdXQgZ3JlZW4gaWYgc3VjY2Vzc2Z1bCwgcmVkIGlmIG5vdC4KKyAgZ2xfRnJhZ0NvbG9yID0g
KChhYiA9PSBhKSA/IHZlYzQoMCwxLDAsMSkgOiB2ZWM0KDEsMCwwLDEpKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJBR3JlYXRlclRoYW5CQ2hlY2tUMCIgdHlwZT0i
dGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGgg
Zm9yIHNjb3Bpbmcgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9p
ZCBtYWluKCkgeworICBmbG9hdCBhID0gMy4wOworICBmbG9hdCBiID0gMi4wOworICBmbG9hdCB0
MCA9IDAuMDsKKyAgZmxvYXQgdDEgPSAwLjA7CisgIGZsb2F0IHIwID0gMC41OworICBmbG9hdCBy
MSA9IDEuMDsKKyAgZmxvYXQgYWIgPSBhID4gYiA/ICh0MCA9IHIwLCBhKSA6ICh0MSA9IHIxLCBi
KTsKKyAgLy8gT3V0cHV0IGdyZWVuIGlmIHN1Y2Nlc3NmdWwsIHJlZCBpZiBub3QuCisgIGdsX0Zy
YWdDb2xvciA9ICgodDAgPT0gcjApID8gdmVjNCgwLDEsMCwxKSA6IHZlYzQoMSwwLDAsMSkpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckFHcmVhdGVyVGhhbkJDaGVj
a1QxIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBz
aGFkZXIgd2l0aCBmb3Igc2NvcGluZyBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgIGZsb2F0IGEgPSAzLjA7CisgIGZsb2F0IGIgPSAyLjA7
CisgIGZsb2F0IHQwID0gMC4wOworICBmbG9hdCB0MSA9IDAuMDsKKyAgZmxvYXQgcjAgPSAwLjU7
CisgIGZsb2F0IHIxID0gMS4wOworICBmbG9hdCBhYiA9IGEgPiBiID8gKHQwID0gcjAsIGEpIDog
KHQxID0gcjEsIGIpOworICAvLyBPdXRwdXQgZ3JlZW4gaWYgc3VjY2Vzc2Z1bCwgcmVkIGlmIG5v
dC4KKyAgZ2xfRnJhZ0NvbG9yID0gKCh0MSA9PSAwLjApID8gdmVjNCgwLDEsMCwxKSA6IHZlYzQo
MSwwLDAsMSkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckJHcmVh
dGVyVGhhbkFDaGVja1IiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8v
IGZyYWdtZW50IHNoYWRlciB3aXRoIGZvciBzY29waW5nIHNob3VsZCBzdWNjZWVkCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYSA9IDIuMDsKKyAgZmxv
YXQgYiA9IDMuMDsKKyAgZmxvYXQgciA9IDAuMDsKKyAgZmxvYXQgcjAgPSAwLjU7CisgIGZsb2F0
IHIxID0gMS4wOworICBmbG9hdCBhYiA9IGEgPiBiID8gKHIgPSByMCwgYSkgOiAociA9IHIxLCBi
KTsKKyAgLy8gT3V0cHV0IGdyZWVuIGlmIHN1Y2Nlc3NmdWwsIHJlZCBpZiBub3QuCisgIGdsX0Zy
YWdDb2xvciA9ICgociA9PSByMSkgPyB2ZWM0KDAsMSwwLDEpIDogdmVjNCgxLDAsMCwxKSk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyQkdyZWF0ZXJUaGFuQUNoZWNr
QUIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNo
YWRlciB3aXRoIGZvciBzY29waW5nIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYSA9IDIuMDsKKyAgZmxvYXQgYiA9IDMuMDsK
KyAgZmxvYXQgciA9IDAuMDsKKyAgZmxvYXQgcjAgPSAwLjU7CisgIGZsb2F0IHIxID0gMS4wOwor
ICBmbG9hdCBhYiA9IGEgPiBiID8gKHIgPSByMCwgYSkgOiAociA9IHIxLCBiKTsKKyAgLy8gT3V0
cHV0IGdyZWVuIGlmIHN1Y2Nlc3NmdWwsIHJlZCBpZiBub3QuCisgIGdsX0ZyYWdDb2xvciA9ICgo
YWIgPT0gYikgPyB2ZWM0KDAsMSwwLDEpIDogdmVjNCgxLDAsMCwxKSk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyQkdyZWF0ZXJUaGFuQUNoZWNrVDAiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB3aXRoIGZv
ciBzY29waW5nIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQg
bWFpbigpIHsKKyAgZmxvYXQgYSA9IDIuMDsKKyAgZmxvYXQgYiA9IDMuMDsKKyAgZmxvYXQgdDAg
PSAwLjA7CisgIGZsb2F0IHQxID0gMC4wOworICBmbG9hdCByMCA9IDAuNTsKKyAgZmxvYXQgcjEg
PSAxLjA7CisgIGZsb2F0IGFiID0gYSA+IGIgPyAodDAgPSByMCwgYSkgOiAodDEgPSByMSwgYik7
CisgIC8vIE91dHB1dCBncmVlbiBpZiBzdWNjZXNzZnVsLCByZWQgaWYgbm90LgorICBnbF9GcmFn
Q29sb3IgPSAoKHQwID09IDAuMCkgPyB2ZWM0KDAsMSwwLDEpIDogdmVjNCgxLDAsMCwxKSk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyQkdyZWF0ZXJUaGFuQUNoZWNr
VDEiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNo
YWRlciB3aXRoIGZvciBzY29waW5nIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYSA9IDIuMDsKKyAgZmxvYXQgYiA9IDMuMDsK
KyAgZmxvYXQgdDAgPSAwLjA7CisgIGZsb2F0IHQxID0gMC4wOworICBmbG9hdCByMCA9IDAuNTsK
KyAgZmxvYXQgcjEgPSAxLjA7CisgIGZsb2F0IGFiID0gYSA+IGIgPyAodDAgPSByMCwgYSkgOiAo
dDEgPSByMSwgYik7CisgIC8vIE91dHB1dCBncmVlbiBpZiBzdWNjZXNzZnVsLCByZWQgaWYgbm90
LgorICBnbF9GcmFnQ29sb3IgPSAoKHQxID09IHIxKSA/IHZlYzQoMCwxLDAsMSkgOiB2ZWM0KDEs
MCwwLDEpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25m
b3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZyYWdtZW50
U2hhZGVyQUdyZWF0ZXJUaGFuQkNoZWNrUicsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBs
aW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogImNvbW1hIGJhc2VkIGNvbmRpdGlvbmFsIGFz
c2lnbm1lbnQgd29ya3MiLAorfSwKK3sKKyAgZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJBR3Jl
YXRlclRoYW5CQ2hlY2tBQicsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogImNvbW1hIGJhc2VkIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQg
d29ya3MiLAorfSwKK3sKKyAgZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJBR3JlYXRlclRoYW5C
Q2hlY2tUMCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwK
KyAgcGFzc01zZzogImNvbW1hIGJhc2VkIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQgd29ya3MiLAor
fSwKK3sKKyAgZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJBR3JlYXRlclRoYW5CQ2hlY2tUMScs
CisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01z
ZzogImNvbW1hIGJhc2VkIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQgd29ya3MiLAorfSwKK3sKKyAg
ZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJCR3JlYXRlclRoYW5BQ2hlY2tSJywKKyAgZlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiY29tbWEg
YmFzZWQgY29uZGl0aW9uYWwgYXNzaWdubWVudCB3b3JrcyIsCit9LAoreworICBmU2hhZGVySWQ6
ICdmcmFnbWVudFNoYWRlckJHcmVhdGVyVGhhbkFDaGVja0FCJywKKyAgZlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiY29tbWEgYmFzZWQgY29u
ZGl0aW9uYWwgYXNzaWdubWVudCB3b3JrcyIsCit9LAoreworICBmU2hhZGVySWQ6ICdmcmFnbWVu
dFNoYWRlckJHcmVhdGVyVGhhbkFDaGVja1QwJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiY29tbWEgYmFzZWQgY29uZGl0aW9uYWwg
YXNzaWdubWVudCB3b3JrcyIsCit9LAoreworICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlckJH
cmVhdGVyVGhhbkFDaGVja1QxJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiY29tbWEgYmFzZWQgY29uZGl0aW9uYWwgYXNzaWdubWVu
dCB3b3JrcyIsCit9CitdKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgt
Y29tbWEtc2VwYXJhdGVkLXZhcmlhYmxlLWRlY2xhcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3No
YWRlci13aXRoLWNvbW1hLXNlcGFyYXRlZC12YXJpYWJsZS1kZWNsYXJhdGlvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNjNhMTBhZTVkNzVkZjM2ZTA5YTAzODkzNmU5ZjgyMGY5ZmI3M2Y1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWNvbW1hLXNlcGFyYXRlZC12YXJpYWJs
ZS1kZWNsYXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKy8vIHNoYWRlciB3aXRoIGNvbW1hIHNlcGFyYXRlZCB1bmlmb3JtIHZh
cmlhYmxlIGRlY2xhcmF0aW9ucyBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKK3VuaWZvcm0gZmxvYXQgeCwgeTsKKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KHgsIHksIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWNvbmRpdGlvbmFsLXNjb3BpbmctbmVnYXRpdmUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jb25kaXRpb25hbC1zY29waW5nLW5lZ2F0aXZlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2Q1ODI2Y2Y5YzMwNmYxYjRjMGViODdjZTdhMTAxMzI4N2EwMDNjYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1jb25kaXRpb25hbC1zY29w
aW5nLW5lZ2F0aXZlLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3Qt
amF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgd2l0aCBpbGxlZ2FsIHJlZmVyZW5jZXMg
dG8gY29uZGl0aW9uYWxseSBzY29wZWQgdmFyaWFibGVzIHNob3VsZCBmYWlsCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgaW50IGsgPSAzOworCisgIGlmICh0cnVl
KSBpbnQgZyA9IGsgPSA0OworICBlbHNlIGludCBxID0gayA9IDU7CisKKyAgZyA9IDM7IC8vIHNo
b3VsZCBlcnJvcgorICBxID0gNDsgLy8gc2hvdWxkIGVycm9yCisKKyAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29u
Zm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXItd2l0aC1jb25kaXRpb25hbC1zY29waW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgt
Y29uZGl0aW9uYWwtc2NvcGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxYjcwNWRmZWE3NDFkNDRlMmIz
OTYxZWUwOGVhMjBiZGY1ZTA4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVy
LXdpdGgtY29uZGl0aW9uYWwtc2NvcGluZy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggY29uZGl0
aW9uYWwgc2NvcGluZyBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2
b2lkIG1haW4oKSB7CisgIGludCBrID0gMzsKKworICBpZiAodHJ1ZSkgaW50IGcgPSBrID0gNDsK
KyAgZWxzZSBpbnQgcSA9IGsgPSA1OworCisgIGlmICh0cnVlKSBpbnQgZyA9IDQ7CisgIGVsc2Ug
aW50IGsgPSAxMDsKKworICBpZiAodHJ1ZSkgeyBpbnQgZyA9IDEwOyB9CisgIGVsc2UgeyBpbnQg
ayA9IDIwOyB9CisKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLik7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1kZWZhdWx0LXByZWNpc2lvbi5m
cmFnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZGVmYXVsdC1wcmVjaXNpb24uZnJhZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIwM2FmNDZmNGZkZmNmYTY2NTAxODM1MzBkNWU2NTE2NDdkZmViMDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZGVmYXVsdC1wcmVjaXNp
b24uZnJhZy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFz
Y3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gc2hvdWxk
IHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworcHJlY2lzaW9uIGxvd3Agc2FtcGxlcjJEOworcHJlY2lzaW9uIGxvd3Agc2FtcGxlckN1YmU7
Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLDAuMCwwLjAsMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5j
ZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRo
LWRlZmF1bHQtcHJlY2lzaW9uLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1kZWZh
dWx0LXByZWNpc2lvbi52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThmNDNlYzZmODFjYWUwMjk2OGJl
ZDQwMzlkYjA0ZGIxMzk3ZWNlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1kZWZhdWx0LXByZWNpc2lvbi52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB3aXRoIGRlZmF1bHQg
cHJlY2lzaW9uIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ByZWNp
c2lvbiBtZWRpdW1wIGludDsKK3ByZWNpc2lvbiBsb3dwIHNhbXBsZXIyRDsKK3ByZWNpc2lvbiBs
b3dwIHNhbXBsZXJDdWJlOworYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWRmZHgtbm8tZXh0LmZyYWcuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvbWlzYy9zaGFkZXItd2l0aC1kZmR4LW5vLWV4dC5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4
MDNjOTJhY2QwMjBmZGY1ZTk5MDc3MGQ4ZTcxNzFkMTA0NmZkMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvbWlzYy9zaGFkZXItd2l0aC1kZmR4LW5vLWV4dC5mcmFnLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVy
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFk
ZXIgdGhhdCB1c2VzIGRGZHggd2l0aG91dCAjZXh0ZW5zaW9uIHNob3VsZCBmYWlsCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChkRmR4KDAuNSksMC4wLDAuMCwxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWRmZHguZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3No
YWRlci13aXRoLWRmZHguZnJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MzY4Njc5MzI2ZGJhNGVmYTRm
NmNhMzNkMTFkNDA0ZWQzMDZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVy
LXdpdGgtZGZkeC5mcmFnLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgdGhhdCB1c2VzIGRGZHggc2hvdWxk
IGZhaWwKKyNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzOmVuYWJsZQorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoZEZkeCgwLjUpLDAuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWRvLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXItd2l0aC1kby1sb29wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY2NDNkZDNjMDI0YjM5MTJmZThhODc2
YjJkNTkwOWFkYmExZjcyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0
aC1kby1sb29wLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgd2l0aCBkbyBsb29wIHNob3VsZCBmYWlsCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgaW50IGsgPSAwOworICBk
byB7CisgICAgaysrOworICB9IHdoaWxlIChrIDwgNSk7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
ZmxvYXQoaykpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENv
bmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci13aXRoLWVycm9yLWRpcmVjdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRo
LWVycm9yLWRpcmVjdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzE1MWZjODEzOTI3YWQzMDZmZmUw
NzU3OWEwNzMxZTUzNGFiZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdp
dGgtZXJyb3ItZGlyZWN0aXZlLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJXaXRoRXJyb3JEaXJlY3RpdmUiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKyNlcnJvciB0ZXN0aW5nMTIzIHRlc3Rpbmcx
MjMKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLDAsMCwwKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJDaGVja3Mg
c2hhZGVyIHdpdGggZXJyb3IgZGlyZWN0aXZlIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCit7IHZTaGFkZXJJZDogdW5kZWZp
bmVkLAorICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRlcklkOiAnZnNoYWRlcldpdGhF
cnJvckRpcmVjdGl2ZScsCisgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgLy8gV2UgY2FuJ3Qg
dGVzdCBmb3IgdGhlIGFjdHVhbCBlcnJvciBtZXNzYWdlIGFzCisgIC8vIEdMU0wgMS4wLjE3IDEx
IHNheXMgdGhlIG1lc3NhZ2VzIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXBlbmRhbnQuCisgIC8vZlNo
YWRlclRlc3Q6IChmdW5jdGlvbigpIHsKKyAgLy8gIHJldHVybiB3dHUuZ2V0TGFzdEVycm9yKCku
aW5kZXhPZigidGVzdGluZzEyMyB0ZXN0aW5nMTIzIikgPj0gMDsgfSksCisgIGxpbmtTdWNjZXNz
OiBmYWxzZSwKKyAgcGFzc01zZzogImVycm9yIGRpcmVjdGl2ZSBjYXVzZXMgZXJyb3IiLAorfSwK
K10pOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRo
LWV4cGxpY2l0LWludC1jYXN0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1leHBs
aWNpdC1pbnQtY2FzdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA4ZGM5ZmIwM2QxNGU1ZGRkN2Zi
MWU0OGE3MTMxOTRiNTkzMjY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1leHBsaWNpdC1pbnQtY2FzdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB0aGF0IGV4cGxpY2l0
IGludCB0byBmbG9hdCBjYXN0IHNob3VsZCBzdWNjZWVkCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRp
b247Cit2b2lkIG1haW4oKQoreworICAgIGludCBrID0gMTIzOworICAgIGdsX1Bvc2l0aW9uID0g
dmVjNCh2UG9zaXRpb24ueCwgdlBvc2l0aW9uLnksIHZQb3NpdGlvbi56LCBmbG9hdChrKSk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgt
ZmxvYXQtcmV0dXJuLXZhbHVlLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1mbG9h
dC1yZXR1cm4tdmFsdWUuZnJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MzYyYjg2YzFhYmY3Mzc4ZGU0
MzMxMjA1ZGYzMGJmZmIwZDZkYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVy
LXdpdGgtZmxvYXQtcmV0dXJuLXZhbHVlLmZyYWcuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFNoYWRlciB3aXRoIGZsb2F0IHJldHVy
biB2YWx1ZSBmcm9tIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCitmbG9hdCBmdW5jdGlvblJlc3VsdCgpOworCit2b2lkIG1haW4oKQorewor
ICAgIGZsb2F0IHIgPSBmdW5jdGlvblJlc3VsdCgpOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
ciwgciwgciwgcik7Cit9CisKK2Zsb2F0IGZ1bmN0aW9uUmVzdWx0KCkKK3sKKyAgICByZXR1cm4g
MS4wOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRl
ci13aXRoLWZvci1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZm9yLWxvb3AuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZjExYTg4ZDlmNjBkY2M4M2ZkNDY4MTZhNzA4ZmIzMmYzOWY4Zjc1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZvci1sb29wLmh0bWwKQEAg
LTAsMCArMSw4MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdt
ZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFn
bWVudCBzaGFkZXIgd2l0aCBmb3IgbG9vcCBzaG91bGQgc3VjY2VlZAorCisvLyBUT0RPKGdtYW4p
OiB0cmltIHRvIG1pbiBzaXplIHRvIHRlc3QgYnVnLgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit1bmlmb3JtIGZsb2F0IHRpbWU7Cit1bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjsKKworLy8gU2F3
LXRvb3RoIGZ1bmN0aW9uIHRoYXQgaXMgc3luY2VkIHdpdGggdGhlIGRlbW8gbXVzaWMgKDEyOGJw
bSkKK2Zsb2F0IGdCZWF0OworCisvLyBDYWxjdWxhdGUgdGhlIHN1cmZhY2UgY29sb3IKK3ZlYzMg
c3VyZkNvbG9yKHZlYzIgcCkKK3sKKyAgICB2ZWMyIHE9dmVjMihzaW4oLjA4KnAueCksNC4qcC55
KTsKKyAgICB2ZWMzIGM9dmVjMygwKTsKKyAgICBmb3IoZmxvYXQgaT0wLjtpPDE1LjtpKyspCisg
ICAgICBjKz0oMS4rc2luKGkqc2luKHRpbWUpK3ZlYzMoMC4sMS4zLDIuMikpKSouMi9sZW5ndGgo
cS12ZWMyKHNpbihpKSwxMi4qc2luKC4zKnRpbWUraSkpKTsKKyAgICByZXR1cm4gYyt2ZWMzKG1p
eChtb2QoZmxvb3IocC54Ki4yKStmbG9vcihwLnkqMi4yKSwyLiksLjIsZ0JlYXQpKTsKK30KKwor
Ly8gUmF5IHRyYWNlIChjeWxpbmRlcikKK3ZlYzMgdHJhY2UodmVjMyBvLHZlYzMgZCkKK3sKKyAg
ICBkLnkqPS42NSsuMSpzaW4oLjUqdGltZSk7CisgICAgZmxvYXQgRD0xLi8oZC55KmQueStkLnoq
ZC56KSwKKyAgICAgICAgICBhPShvLnkqZC55K28ueipkLnopKkQsCisgICAgICAgICAgYj0oby55
Km8ueStvLnoqby56LTM2LikqRCwKKyAgICAgICAgICB0PS1hLXNxcnQoYSphLWIpOworICAgIG8r
PXQqZDsKKyAgICByZXR1cm4gc3VyZkNvbG9yKHZlYzIoby54LGF0YW4oby55LG8ueikpKSooMS4r
LjAxKnQpOworfQorCit2b2lkIG1haW4oKQoreworICAgIGdCZWF0PWZyYWN0KHRpbWUqMy4yLzMu
KTsKKyAgICAvLyBTY3JlZW4gc2V0dXAKKyAgICB2ZWMyIHA9KDIuKmdsX0ZyYWdDb29yZC54eS1y
ZXNvbHV0aW9uKS9yZXNvbHV0aW9uLnksCisgICAgICAgICBxPTIuKmdsX0ZyYWdDb29yZC54eS9y
ZXNvbHV0aW9uLTEuOworCisgICAgLy8gQ2FtZXJhIHNldHVwCisgICAgdmVjMyBjcD12ZWMzKC10
aW1lKjIwLisxLiwxLjYqc2luKHRpbWUqMS4yKSwyLisyLipjb3ModGltZSouMykpLAorICAgICAg
ICAgY3Q9Y3ArdmVjMygxLiwuMypjb3ModGltZSksLS4yKSwKKyAgICAgICAgIGNkPW5vcm1hbGl6
ZShjdC1jcCksCisgICAgICAgICBjcj1ub3JtYWxpemUoY3Jvc3MoY2QsdmVjMyguNSpjb3MoLjMq
dGltZSksMC4sMS4pKSksCisgICAgICAgICBjdT1jcm9zcyhjcixjZCksCisgICAgICAgICByZD1u
b3JtYWxpemUoMi4qY2QrY3IqcC54K2N1KnAueSk7CisKKyAgICAvLyBUcmFjZSEgKCtzb21lIGZ1
bmt5IGxlbnMvcmFzdGVyIGVmZmVjdHMpCisgICAgdmVjMyBjPXRyYWNlKGNwLHJkKSoKKyAgICAg
ICAgICAgbWluKDEuLDEuOC1kb3QocSxxKSkqCisgICAgICAgICAgICguOSsuMSpzaW4oMy4qc2lu
KGdCZWF0KSpnbF9GcmFnQ29vcmQueSkpOworCisgICAgZ2xfRnJhZ0NvbG9yPXZlYzQoYywxKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRl
c3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZv
ci1zY29waW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZm9yLXNjb3BpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNGQ5NjIwZmQ1MDQ0ZDg0MmZiYjQzNzg0OGJiZDMwYmE4YzM3NjU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZvci1zY29waW5nLmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdt
ZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFn
bWVudCBzaGFkZXIgd2l0aCBpbGxlZ2FsIGZvciBzY29waW5nIHNob3VsZCBmYWlsCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgaW50IGsgPSAwOworICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEwOyBpKyspIHsgaW50IGkgPSBrK2k7IH0gLy8gbm90IGEgbmVzdGVkIHNj
b3BlLCBpbiBpJ3Mgc2NvcGUsIG5lc3RpbmcgYWxyZWFkeSBoYXBwZW5lZAorICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KGZsb2F0KGspKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvbWlzYy9zaGFkZXItd2l0aC1mcmFnLWRlcHRoLmZyYWcuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1mcmFnLWRlcHRoLmZyYWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODQ1NDQ5MmM0ZWM5
MGZlZTE3NTQyN2RkMzJhODczMTZlNTQ4MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci13aXRoLWZyYWctZGVwdGguZnJhZy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4
dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHRoYXQgdXNl
cyBnbF9GcmFnRGVwdGggc2hvdWxkIGZhaWwKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9p
ZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwwLjAsMC4wLDEuMCk7Cisg
ICAgZ2xfRnJhZ0RlcHRoID0gMS4wOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZ1bmN0aW9uLXJlY3Vyc2lvbi5mcmFnLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL21pc2Mvc2hhZGVyLXdpdGgtZnVuY3Rpb24tcmVjdXJzaW9uLmZyYWcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZmExMmU0NzFhZGE0MzA0N2U0NWExYjA4NjY3MmMzM2ZlMTM1ODAxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZ1bmN0aW9uLXJlY3Vyc2lvbi5mcmFnLmh0
bWwKQEAgLTAsMCArMSw0NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9
ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cisv
LyBzaGFkZXIgd2l0aCByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIGZhaWwKK3ZvaWQg
YSgpOwordm9pZCBiKCk7Cit2b2lkIG1haW4oKQoreworICAgIGEoKTsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAsMCwwLDApOworfQordm9pZCBhKCkKK3sKKyAgICBiKCk7Cit9Cit2b2lkIGIo
KQoreworICAgIGEoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci13aXRoLWZ1bmN0aW9uLXNjb3BlZC1zdHJ1Y3QuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXItd2l0aC1mdW5jdGlvbi1zY29wZWQtc3RydWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU2OTRhZTVl
ZTliMzVkZDVhN2ZhNmZlMGIzODZiZDQwNTllOWVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
bWlzYy9zaGFkZXItd2l0aC1mdW5jdGlvbi1zY29wZWQtc3RydWN0Lmh0bWwKQEAgLTAsMCArMSw0
MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVy
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFk
ZXIgd2l0aCBwcml2YXRlIGZ1bmN0aW9uIHNjb3BlZCBzdHJ1Y3Qgc2hvdWxkIGZhaWwuCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK2ludCBmdW4yKHN0cnVjdCBzIHsgaW50IG07IH0gZykgeyBy
ZXR1cm4gZy5tOyB9CisKK3MgYTsKKwordm9pZCBtYWluKCkgeworICBpbnQgZSA9IGZ1bjIocygz
KSk7CisKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZ1bmN0aW9uYWwtc2NvcGluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWZ1bmN0aW9uYWwtc2NvcGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxOGYzY2M0OTU2N2YwYzQ3MTZmYjJmMzc4ZTEwYjk1YmY4YWJiOGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZnVuY3Rpb25hbC1zY29waW5nLmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBm
cmFnbWVudCBzaGFkZXIgd2l0aCBpbnZhbGlkIGZ1bmN0aW9uYWwgc2NvcGluZyBzaG91bGQgZmFp
bAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbnQgZihpbnQgaykgeworICBpbnQgayA9IGsg
KyAzOworICByZXR1cm4gazsKK30KKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGYoMTAwKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1nbGNvbG9yLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1nbGNv
bG9yLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmNkNzgzOTAyNDE4YjAyYmM5ODAwYjYxY2YyNWJl
YTBhZTRiMDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWdsY29s
b3IudmVydC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIGdsX0NvbG9yIHNob3VsZCBmYWlsCith
dHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9u
ID0gZ2xfQ29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1nbGVzLTEuZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWdsZXMt
MS5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM4YTdiM2E4ZDc4ZmU0NjQ0MTVkZGQyNmI5NWJjZGY2
ZDBmZTdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1nbGVzLTEu
ZnJhZy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
Z2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHRoYXQgZXhwZWN0cyBHTF9FUyA9PSAxIHNob3VsZCBz
dWNjZWVkCisjaWYgR0xfRVMgPT0gMQorICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgdm9p
ZCBtYWluKCkKKyAgeworICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsMC4wLDAuMCwxLjAp
OworICB9CisjZWxzZQorICBmb28KKyNlbmRpZgorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZ2xlcy1zeW1ib2wuZnJhZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNj
L3NoYWRlci13aXRoLWdsZXMtc3ltYm9sLmZyYWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTY5OTU4ZjVh
NzNhYTE4MTlhYTBlMDFhYjlkMzQ4MjhlNjFkYWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYWRlci13aXRoLWdsZXMtc3ltYm9sLmZyYWcuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB0aGF0
IHVzZXMgR0xfRVMgcHJlcHJvY2Vzc29yIHN5bWJvbCBzaG91bGQgc3VjY2VlZAorI2lmIGRlZmlu
ZWQoR0xfRVMpCisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICB2b2lkIG1haW4oKQorICB7
CisgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwwLjAsMC4wLDEuMCk7CisgIH0KKyNlbHNl
CisgIGZvbworI2VuZGlmCis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1nbG9iYWwtdmFyaWFibGUtcHJlY2lzaW9uLW1pc21hdGNoLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L21pc2Mvc2hhZGVyLXdpdGgtZ2xvYmFsLXZhcmlhYmxlLXByZWNpc2lvbi1taXNtYXRjaC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzMDM5MTVmMzBkZGM0OWNlODY5MTQ2ZTVlZjc2MzY1OGQzZGJhNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZ2xvYmFsLXZhcmlhYmxlLXBy
ZWNpc2lvbi1taXNtYXRjaC5odG1sCkBAIC0wLDAgKzEsMTI4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlcldpdGhNZWRpdW1wR2xvYmFsIiB0eXBlPSJ0ZXh0
L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBUaGVyZSBpcyBubyBkZWZhdWx0IGZsb2F0
IHByZWNpc2lvbiBpbiBmcmFnbWVudCBzaGFkZXJzLCBzbyBzcGVjaWZ5IG1lZGl1bXAuCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5pZm9ybSB2ZWM0IGZvbzsKKwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9GcmFnQ29sb3IgPSBmb287Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXJXaXRoTWVkaXVtcEdsb2JhbEludCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFz
Y3JpcHQiPgorLy8gRGVmYXVsdCBwcmVjaXNpb24gZm9yIGludCBpbiBmcmFnbWVudCBzaGFkZXJz
IGlzIG1lZGl1bXAuCit1bmlmb3JtIGludCBmb287CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChmb28sIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyV2l0aE1lZGl1bXBHbG9iYWxTdHJ1Y3QiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKy8vIFRoZXJlIGlzIG5vIGRlZmF1bHQgZmxvYXQgcHJlY2lzaW9uIGlu
IGZyYWdtZW50IHNoYWRlcnMsIHNvIHNwZWNpZnkgbWVkaXVtcC4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCitzdHJ1Y3QgZm9vCit7CisgICB2ZWM0IGJhcjsKK307CisKK3VuaWZvcm0gZm9v
IGJhejsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSBiYXouYmFyOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyV2l0aEhpZ2hwR2xvYmFsIiB0eXBlPSJ4LXNo
YWRlci94LXZlcnRleCI+CisvLyBEZWZhdWx0IHByZWNpc2lvbiBmb3IgdmVydGV4IHNoYWRlcnMg
aXMgaGlnaHAuCit1bmlmb3JtIHZlYzQgZm9vOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9z
aXRpb24gPSBmb287Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXJXaXRoSGlnaHBH
bG9iYWxJbnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKy8vIERlZmF1bHQgcHJlY2lzaW9u
IGZvciBpbnQgaW4gdmVydGV4IHNoYWRlcnMgaXMgaGlnaHAuCit1bmlmb3JtIGludCBmb287CisK
K3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoZm9vLCAwLCAwLCAxKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlcldpdGhIaWdocEdsb2JhbFN0cnVjdCIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorLy8gRGVmYXVsdCBwcmVjaXNpb24gZm9yIHZlcnRleCBz
aGFkZXJzIGlzIGhpZ2hwLgorc3RydWN0IGZvbworeworICAgdmVjNCBiYXI7Cit9OworCit1bmlm
b3JtIGZvbyBiYXo7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBiYXouYmFy
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkNo
ZWNrcyBzaGFkZXJzIHdpdGggZ2xvYmFsIHZhcmlhYmxlcyBhbmQgcHJlY2lzaW9uIHF1YWxpZmll
ciBtaXNtYXRjaC4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZ2xzbFRl
c3RzID0gW107CisKK2dsc2xUZXN0cy5wdXNoKHsKKyAgdlNoYWRlcklkOiAndnNoYWRlcldpdGhI
aWdocEdsb2JhbCcsCisgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBmU2hhZGVySWQ6ICdmc2hh
ZGVyV2l0aE1lZGl1bXBHbG9iYWwnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1
Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAibWlzbWF0Y2hpbmcgcHJlY2lzaW9uIGZvciB1bmlm
b3JtcyBjYXVzZXMgbGluayBlcnJvciAoYXMgZXhwZWN0ZWQpIiwKK30pOworCitnbHNsVGVzdHMu
cHVzaCh7CisgIHZTaGFkZXJJZDogJ3ZzaGFkZXJXaXRoSGlnaHBHbG9iYWxJbnQnLAorICB2U2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRlcklkOiAnZnNoYWRlcldpdGhNZWRpdW1wR2xvYmFs
SW50JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAg
cGFzc01zZzogIm1pc21hdGNoaW5nIHByZWNpc2lvbiBmb3IgaW50IHVuaWZvcm1zIHdpdGggZGVm
YXVsdCBwcmVjaXNpb24gY2F1c2VzIGxpbmsgZXJyb3IgKGFzIGV4cGVjdGVkKSIsCit9KTsKKwor
Z2xzbFRlc3RzLnB1c2goeworICB2U2hhZGVySWQ6ICd2c2hhZGVyV2l0aEhpZ2hwR2xvYmFsU3Ry
dWN0JywKKyAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJXaXRo
TWVkaXVtcEdsb2JhbFN0cnVjdCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3Vj
Y2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICJtaXNtYXRjaGluZyBwcmVjaXNpb24gZm9yIHN0cnVj
dHVyZSB1bmlmb3JtcyBjYXVzZXMgbGluayBlcnJvciAoYXMgZXhwZWN0ZWQpIiwKK30pOworCitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoZ2xzbFRlc3RzKTsKKworZGVidWcoIiIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1nbHByb2plY3Rpb25tYXRyaXgu
dmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWdscHJvamVjdGlvbm1hdHJpeC52ZXJ0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTM4NzkxOGYxYTRhZGQ1NWIyMDViY2EzMTVmN2U0NjUzOWMxMTgz
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1nbHByb2plY3Rpb25t
YXRyaXgudmVydC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIGdsX1Byb2plY3Rpb25NYXRyaXgg
c2hvdWxkIGZhaWwKK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb24gKiBnbF9Qcm9qZWN0aW9uTWF0cml4OworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1
blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaGV4LWludC1j
b25zdGFudC1tYWNyby5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWhleC1pbnQtY29uc3Rh
bnQtbWFjcm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTllZDg3NWIyYzIxZmNmYzhmMmVhM2E4N2U2ODFk
Nzk4MzFlODVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWhleC1p
bnQtY29uc3RhbnQtbWFjcm8uaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hhZGVyIHVzZXMgdGhlIGxvbmcgaW50ZWdlciBj
b25zdGFudCBzaG91bGQgc3VjY2VlZAorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBt
YWluKCkKK3sKKyAgICAjZGVmaW5lIFRFU1QgMHgxRgorICAgIGludCBhID0gVEVTVDsKKworICAg
IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaWxsZWdhbC1kZWZhdWx0LXByZWNpc2lvbi5mcmFnLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaWxsZWdhbC1kZWZhdWx0LXByZWNpc2lvbi5mcmFn
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ5MDJjNTBkYjFiMTlmNGQ3ZTg5ZDM3M2Y3OGIxMzIwYTM5MzY5
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pbGxlZ2FsLWRlZmF1
bHQtcHJlY2lzaW9uLmZyYWcuaHRtbApAQCAtMCwwICsxLDIzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyVm9pZCIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBw
cmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAg
dm9pZDsKK3ZvaWQgbWFpbigpCit7CisgICAgbWVkaXVtcCB2ZWM0IGNvbG9yID0gdmVjNCgxLjAs
IDAuMCwgMC4wLCAxLjApOworICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckJvb2wiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9u
IGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxkIGZhaWwKK3ByZWNpc2lvbiBtZWRpdW1wIGJvb2w7Cit2
b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnJhZ21lbnRTaGFkZXJWZWMyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNj
cmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaWxs
ZWdhbCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCB2ZWMyOwordm9pZCBtYWlu
KCkKK3sKKyAgICBtZWRpdW1wIHZlYzQgY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7
CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyVmVjMyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
Ly8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlw
ZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgdmVjMzsKK3ZvaWQgbWFpbigpCit7Cisg
ICAgbWVkaXVtcCB2ZWM0IGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGds
X0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNo
YWRlclZlYzQiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdt
ZW50IHNoYWRlciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxk
IGZhaWwKK3ByZWNpc2lvbiBtZWRpdW1wIHZlYzQ7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1
bXAgdmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29s
b3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJCdmVj
MiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hh
ZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAor
cHJlY2lzaW9uIG1lZGl1bXAgYnZlYzI7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVj
NCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBj
b2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJCdmVjMyIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdp
dGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lz
aW9uIG1lZGl1bXAgYnZlYzM7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJCdmVjNCIgdHlwZT0idGV4
dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVm
YXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1l
ZGl1bXAgYnZlYzQ7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJJdmVjMiIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBw
cmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAg
aXZlYzI7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xvciA9IHZlYzQoMS4w
LCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJJdmVjMyIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNp
b24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgaXZlYzM7
Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJJdmVjNCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9y
IGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgaXZlYzQ7Cit2b2lk
IG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnJhZ21lbnRTaGFkZXJNYXQyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisvLyBmcmFnbWVudCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaWxsZWdh
bCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCBtYXQyOwordm9pZCBtYWluKCkK
K3sKKyAgICBtZWRpdW1wIHZlYzQgY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdt
ZW50U2hhZGVyTWF0MyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8g
ZnJhZ21lbnQgc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBz
aG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgbWF0MzsKK3ZvaWQgbWFpbigpCit7CisgICAg
bWVkaXVtcCB2ZWM0IGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsX0Zy
YWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRl
ck1hdDQiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50
IHNoYWRlciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxkIGZh
aWwKK3ByZWNpc2lvbiBtZWRpdW1wIG1hdDQ7Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAg
dmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3Ig
PSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25m
b3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCisgICAgeworICAgICAgZlNoYWRlcklkOiAnZnJhZ21l
bnRTaGFkZXJWb2lkJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtT
dWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNp
c2lvbiBmb3Igdm9pZCBzaG91bGQgZmFpbCcKKyAgICB9LAorICAgIHsKKyAgICAgIGZTaGFkZXJJ
ZDogJ2ZyYWdtZW50U2hhZGVyQm9vbCcsCisgICAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisg
ICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggZGVm
YXVsdCBwcmVjaXNpb24gZm9yIGJvb2wgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAg
ICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlclZlYzInLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6
IGZhbHNlLAorICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogJ3NoYWRl
ciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciB2ZWMyIHNob3VsZCBmYWlsJworICAgIH0sCisg
ICAgeworICAgICAgZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJWZWMzJywKKyAgICAgIGZTaGFk
ZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NN
c2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgdmVjMyBzaG91bGQgZmFpbCcK
KyAgICB9LAorICAgIHsKKyAgICAgIGZTaGFkZXJJZDogJ2ZyYWdtZW50U2hhZGVyVmVjNCcsCisg
ICAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisg
ICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIHZlYzQgc2hv
dWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRl
ckJ2ZWMyJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNjZXNz
OiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBm
b3IgYnZlYzIgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdm
cmFnbWVudFNoYWRlckJ2ZWMzJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAg
IGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0
IHByZWNpc2lvbiBmb3IgYnZlYzMgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAgICBm
U2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlckJ2ZWM0JywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBm
YWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIg
d2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgYnZlYzQgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAg
ICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlckl2ZWMyJywKKyAgICAgIGZTaGFk
ZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NN
c2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaXZlYzIgc2hvdWxkIGZhaWwn
CisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlckl2ZWMzJywK
KyAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwK
KyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaXZlYzMg
c2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNo
YWRlckl2ZWM0JywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNj
ZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lv
biBmb3IgaXZlYzQgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6
ICdmcmFnbWVudFNoYWRlck1hdDInLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAg
ICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogJ3NoYWRlciB3aXRoIGRlZmF1
bHQgcHJlY2lzaW9uIGZvciBtYXQyIHNob3VsZCBmYWlsJworICAgIH0sCisgICAgeworICAgICAg
ZlNoYWRlcklkOiAnZnJhZ21lbnRTaGFkZXJNYXQzJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiBm
YWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIg
d2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgbWF0MyBzaG91bGQgZmFpbCcKKyAgICB9LAorICAg
IHsKKyAgICAgIGZTaGFkZXJJZDogJ2ZyYWdtZW50U2hhZGVyTWF0NCcsCisgICAgICBmU2hhZGVy
U3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICBwYXNzTXNn
OiAnc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIG1hdDQgc2hvdWxkIGZhaWwnCisg
ICAgfQorXSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWlsbGVnYWwt
ZGVmYXVsdC1wcmVjaXNpb24udmVydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWlsbGVn
YWwtZGVmYXVsdC1wcmVjaXNpb24udmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MTBmZGRmZDU5NDMw
ZGRmMzI5OTNlZWFjZDc4MWFhOWNjMmMwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mv
c2hhZGVyLXdpdGgtaWxsZWdhbC1kZWZhdWx0LXByZWNpc2lvbi52ZXJ0Lmh0bWwKQEAgLTAsMCAr
MSwyMjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVh
dHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFk
ZXJWb2lkIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXgg
c2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFp
bAorcHJlY2lzaW9uIG1lZGl1bXAgdm9pZDsKK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3Zv
aWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlckJvb2wiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1q
YXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3Ig
aWxsZWdhbCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCBib29sOworYXR0cmli
dXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQ
b3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyVmVjMiIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB3aXRo
IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxkIGZhaWwKK3ByZWNpc2lv
biBtZWRpdW1wIHZlYzI7CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQor
eworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJ2ZXJ0ZXhTaGFkZXJWZWMzIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CisvLyB2ZXJ0ZXggc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlw
ZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgdmVjMzsKK2F0dHJpYnV0ZSB2ZWM0IHZQ
b3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlclZlYzQiIHR5cGU9InRleHQvc29t
ZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0aCBkZWZhdWx0IHBy
ZWNpc2lvbiBmb3IgaWxsZWdhbCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCB2
ZWM0OworYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hh
ZGVyQnZlYzIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHZlcnRl
eCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaWxsZWdhbCB0eXBlIHNob3VsZCBm
YWlsCitwcmVjaXNpb24gbWVkaXVtcCBidmVjMjsKK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsK
K3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlckJ2ZWMzIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24g
Zm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgYnZlYzM7Cith
dHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9u
ID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJCdmVj
NCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRl
ciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxkIGZhaWwKK3By
ZWNpc2lvbiBtZWRpdW1wIGJ2ZWM0OworYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0idmVydGV4U2hhZGVySXZlYzIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaWxs
ZWdhbCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCBpdmVjMjsKK2F0dHJpYnV0
ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9z
aXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlckl2ZWMzIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hhZGVyIHdpdGgg
ZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQgZmFpbAorcHJlY2lzaW9u
IG1lZGl1bXAgaXZlYzM7CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQor
eworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJ2ZXJ0ZXhTaGFkZXJJdmVjNCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorLy8gdmVydGV4IHNoYWRlciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5
cGUgc2hvdWxkIGZhaWwKK3ByZWNpc2lvbiBtZWRpdW1wIGl2ZWM0OworYXR0cmlidXRlIHZlYzQg
dlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyTWF0MiIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB3aXRoIGRlZmF1bHQg
cHJlY2lzaW9uIGZvciBpbGxlZ2FsIHR5cGUgc2hvdWxkIGZhaWwKK3ByZWNpc2lvbiBtZWRpdW1w
IG1hdDI7CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGds
X1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhT
aGFkZXJNYXQzIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0
ZXggc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIGlsbGVnYWwgdHlwZSBzaG91bGQg
ZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgbWF0MzsKK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsK
K3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlck1hdDQiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBm
b3IgaWxsZWdhbCB0eXBlIHNob3VsZCBmYWlsCitwcmVjaXNpb24gbWVkaXVtcCBtYXQ0OworYXR0
cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCisgICAgeyB2U2hhZGVySWQ6ICd2ZXJ0ZXhTaGFk
ZXJWb2lkJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNjZXNz
OiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lvbiBm
b3Igdm9pZCBzaG91bGQgZmFpbCcKKyAgICB9LAorICAgIHsgdlNoYWRlcklkOiAndmVydGV4U2hh
ZGVyQm9vbCcsCisgICAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3VjY2Vz
czogZmFsc2UsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNpb24g
Zm9yIGJvb2wgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJZDogJ3ZlcnRleFNo
YWRlclZlYzInLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgbGlua1N1Y2Nl
c3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogJ3NoYWRlciB3aXRoIGRlZmF1bHQgcHJlY2lzaW9u
IGZvciB2ZWMyIHNob3VsZCBmYWlsJworICAgIH0sCisgICAgeyB2U2hhZGVySWQ6ICd2ZXJ0ZXhT
aGFkZXJWZWMzJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtTdWNj
ZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNpc2lv
biBmb3IgdmVjMyBzaG91bGQgZmFpbCcKKyAgICB9LAorICAgIHsgdlNoYWRlcklkOiAndmVydGV4
U2hhZGVyVmVjNCcsCisgICAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICBsaW5rU3Vj
Y2VzczogZmFsc2UsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggZGVmYXVsdCBwcmVjaXNp
b24gZm9yIHZlYzQgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJZDogJ3ZlcnRl
eFNoYWRlckJ2ZWMyJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxpbmtT
dWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHByZWNp
c2lvbiBmb3IgYnZlYzIgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJZDogJ3Zl
cnRleFNoYWRlckJ2ZWMzJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgIGxp
bmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0IHBy
ZWNpc2lvbiBmb3IgYnZlYzMgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJZDog
J3ZlcnRleFNoYWRlckJ2ZWM0JywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAg
IGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZhdWx0
IHByZWNpc2lvbiBmb3IgYnZlYzQgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFkZXJJ
ZDogJ3ZlcnRleFNoYWRlckl2ZWMyJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAg
ICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBkZWZh
dWx0IHByZWNpc2lvbiBmb3IgaXZlYzIgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZTaGFk
ZXJJZDogJ3ZlcnRleFNoYWRlckl2ZWMzJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwK
KyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCBk
ZWZhdWx0IHByZWNpc2lvbiBmb3IgaXZlYzMgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7IHZT
aGFkZXJJZDogJ3ZlcnRleFNoYWRlckl2ZWM0JywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxz
ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0
aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaXZlYzQgc2hvdWxkIGZhaWwnCisgICAgfSwKKyAgICB7
IHZTaGFkZXJJZDogJ3ZlcnRleFNoYWRlck1hdDInLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IGZh
bHNlLAorICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogJ3NoYWRlciB3
aXRoIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBtYXQyIHNob3VsZCBmYWlsJworICAgIH0sCisgICAg
eyB2U2hhZGVySWQ6ICd2ZXJ0ZXhTaGFkZXJNYXQzJywKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiBm
YWxzZSwKKyAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIg
d2l0aCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgbWF0MyBzaG91bGQgZmFpbCcKKyAgICB9LAorICAg
IHsgdlNoYWRlcklkOiAndmVydGV4U2hhZGVyTWF0NCcsCisgICAgICB2U2hhZGVyU3VjY2Vzczog
ZmFsc2UsCisgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICBwYXNzTXNnOiAnc2hhZGVy
IHdpdGggZGVmYXVsdCBwcmVjaXNpb24gZm9yIG1hdDQgc2hvdWxkIGZhaWwnCisgICAgfQorXSk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWltcGxpY2l0LXZlYzMtdG8t
dmVjNC1jYXN0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pbXBsaWNpdC12ZWMz
LXRvLXZlYzQtY2FzdC52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc3YTNlMTkxNTBlOTM5NTFhZTk5
YWUyZDFjZjE3YTZmNmUwYWZiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1pbXBsaWNpdC12ZWMzLXRvLXZlYzQtY2FzdC52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB0aGF0
IGltcGxpY2l0IHZlYzMgdG8gdmVjNCBjYXN0IHNob3VsZCBmYWlsCithdHRyaWJ1dGUgdmVjNCB2
UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjMyBrID0gdmVjMygxLCAy
LCAzKTsKKyAgICBnbF9Qb3NpdGlvbiA9IGs7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaW5jbHVkZS52ZXJ0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21p
c2Mvc2hhZGVyLXdpdGgtaW5jbHVkZS52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMwY2Y5M2NjMjdl
YTJiNzBhZmRiYzA5ODZiNGM2MTk0YjdiZTZjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlz
Yy9zaGFkZXItd2l0aC1pbmNsdWRlLnZlcnQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3Nv
bWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hhZGVyIHVzZXMgI2luY2x1ZGUg
c2hvdWxkIGZhaWwKKworLy8gU2FkbHkgSSBjYW4gbm90IGZvcmNlIHRoZSBjdXJyZW50IHBhdGgg
c28gdGhpcyBjb3VsZCBmYWlsIGJlYWN1c2UgaW5jbHVkZS52cworLy8gZG9lcyBub3QgZXhpc3Qs
IG5vdCBiZWNhdXNlICNpbmNsdWRlIGlzIGRpc2FsbG93ZWQuCisjaW5jbHVkZSAiaW5jbHVkZS52
cyIKK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9z
aXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
bWlzYy9zaGFkZXItd2l0aC1pbnQtcmV0dXJuLXZhbHVlLmZyYWcuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1pbnQtcmV0dXJuLXZhbHVlLmZyYWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjQ0MzBj
MGY4MWIyNzU3YjMxNGU3ZmQ3MDFmMDFmNzM0ZmQyZDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL3NoYWRlci13aXRoLWludC1yZXR1cm4tdmFsdWUuZnJhZy5odG1sCkBAIC0wLDAgKzEs
NDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRl
ciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gU2hhZGVyIHdpdGgg
aW50IHJldHVybiB2YWx1ZSBmcm9tIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIHN1Y2NlZWQKK2ludCBm
dW5jdGlvblJlc3VsdCgpOworCit2b2lkIG1haW4oKQoreworICAgIGludCByID0gZnVuY3Rpb25S
ZXN1bHQoKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHIsIHIsIHIsIHIpOworfQorCitpbnQg
ZnVuY3Rpb25SZXN1bHQoKQoreworICAgIHJldHVybiAxOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaW52YWxpZC1pZGVudGlmaWVyLmZyYWcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pbnZhbGlkLWlkZW50aWZpZXIuZnJhZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmOTE4NTE5YzZmNGUwZGU4NTAyZDBkMmExOWFkZDNiNmI5ZjI5NDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtaW52YWxpZC1pZGVudGlmaWVy
LmZyYWcuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB3aXRoIGdsXyBpZGVudGlmaWVyIHNob3VsZCBmYWls
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxvYXQgZ2xfZm9vOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGdsX2ZvbywwLjAsMC4wLDEuMCk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pdmVj
Mi1yZXR1cm4tdmFsdWUuZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWl2ZWMyLXJl
dHVybi12YWx1ZS5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ0NWU3ZDNjMDNmN2NlZWJmMGQxMzVm
NThjZTQ0ZjcyYzYwMTM5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0
aC1pdmVjMi1yZXR1cm4tdmFsdWUuZnJhZy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gU2hhZGVyIHdpdGggaXZlYzIgcmV0dXJuIHZh
bHVlIGZyb20gZnVuY3Rpb24gY2FsbCBzaG91bGQgc3VjY2VlZAoraXZlYzIgZnVuY3Rpb25SZXN1
bHQoKTsKKwordm9pZCBtYWluKCkKK3sKKyAgICBpdmVjMiByID0gZnVuY3Rpb25SZXN1bHQoKTsK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHIueCwgci55LCByLngsIHIueSk7Cit9CisKK2l2ZWMy
IGZ1bmN0aW9uUmVzdWx0KCkKK3sKKyAgICByZXR1cm4gaXZlYzIoMSwgMSk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pdmVjMy1yZXR1cm4t
dmFsdWUuZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWl2ZWMzLXJldHVybi12YWx1
ZS5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc2NWVmOTI1OWUyMDM4MTcyMjcwYTFlY2M1MjNlMDY5
ZjliZjFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pdmVjMy1y
ZXR1cm4tdmFsdWUuZnJhZy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gU2hhZGVyIHdpdGggaXZlYzMgcmV0dXJuIHZhbHVlIGZyb20g
ZnVuY3Rpb24gY2FsbCBzaG91bGQgc3VjY2VlZAoraXZlYzMgZnVuY3Rpb25SZXN1bHQoKTsKKwor
dm9pZCBtYWluKCkKK3sKKyAgICBpdmVjMyByID0gZnVuY3Rpb25SZXN1bHQoKTsKKyAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHIueCwgci55LCByLnosIHIueCk7Cit9CisKK2l2ZWMzIGZ1bmN0aW9u
UmVzdWx0KCkKK3sKKyAgICByZXR1cm4gaXZlYzMoMSwgMSwgMSk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pdmVjNC1yZXR1cm4tdmFsdWUu
ZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWl2ZWM0LXJldHVybi12YWx1ZS5mcmFn
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzczMTdkMjJlOGE3YjdiOGUyNDE4ODQwNDI1YjhmZmI1ZTdiYzBm
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1pdmVjNC1yZXR1cm4t
dmFsdWUuZnJhZy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgorLy8gU2hhZGVyIHdpdGggaXZlYzQgcmV0dXJuIHZhbHVlIGZyb20gZnVuY3Rp
b24gY2FsbCBzaG91bGQgc3VjY2VlZAoraXZlYzQgZnVuY3Rpb25SZXN1bHQoKTsKKwordm9pZCBt
YWluKCkKK3sKKyAgICBpdmVjNCByID0gZnVuY3Rpb25SZXN1bHQoKTsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KHIueCwgci55LCByLnosIHIudyk7Cit9CisKK2l2ZWM0IGZ1bmN0aW9uUmVzdWx0
KCkKK3sKKyAgICByZXR1cm4gaXZlYzQoMSwgMSwgMSwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1saW1pdGVkLWluZGV4aW5nLmZyYWcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1saW1pdGVkLWluZGV4aW5nLmZyYWcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZjc0MDFlZjNjMWFlMDNkMjI2YTMwYjZkOTg0ZmQ0YmNkMDRkNzk0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLWxpbWl0ZWQtaW5kZXhpbmcuZnJh
Zy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4K
Ky8vIHZlcnRleCBzaGFkZXIgc2hvdWxkIHN1Y2NlZWQKK2F0dHJpYnV0ZSB2ZWM0IGFfd2VpZ2h0
czsKK3ZhcnlpbmcgdmVjNCB2X3dlaWdodHM7CisKK3ZvaWQgbWFpbigpIHsKKyAgICB2X3dlaWdo
dHMgPSBhX3dlaWdodHM7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0
L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgd2l0aCBhcHBy
b3ByaWF0ZWx5IGxpbWl0ZWQgaW5kZXhpbmcgZXhwcmVzc2lvbiBzaG91bGQgc3VjY2VlZAorLy8g
aHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zcGVjcy9sYXRlc3QvI1NVUFBP
UlRFRF9HTFNMX0NPTlNUUlVDVFMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3Jt
IHZlYzQgdV9jb2xvcnNbOF07Cit2YXJ5aW5nIHZlYzQgdl93ZWlnaHRzOworCit2b2lkIG1haW4o
KQoreworICAgIHZlYzQgY29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgY29sb3IgKz0gdV9jb2xvcnNbaV0g
KiB2X3dlaWdodHNbaV07CisgICAgfQorICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1
blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtbG9uZy1saW5l
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtbG9uZy1saW5lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGYyMmJlYjAyN2ZjMTkyYzM5NjhiYTdkNDJlY2RjODlkMDdlOGJiNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1sb25nLWxpbmUuaHRtbApAQCAtMCwwICsxLDY3IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVz
dHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlcldpdGhMb25nTGlu
ZSIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Cit1bmlmb3JtIGZsb2F0IGZvb287CisjaWYgZGVmaW5lZChzb21lU3ltYm9sTm90
RGVmaW5lZCkKKyNlcnJvciBsb25nCisjZW5kaWYKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNChmb29vK2Zvb28rZm9vbytmb29vLCBmb29vK2Zvb28rZm9vbytmb29vLCBm
b29vK2Zvb28rZm9vbytmb29vLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZGVzY3JpcHRpb24oImNoZWNrcyBzaGFkZXIgd2l0aCBsb25nIGxpbmUgc3VjY2Vl
ZHMiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blRlc3RzKFsKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmc2hhZGVyV2l0aExvbmdMaW5l
JywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgZlNoYWRlclByZXA6IGZ1bmN0
aW9uKHN0cikgeworICAgICAgICBmdW5jdGlvbiBleHBhbmQoc3RyLCByZSwgcmVwbGFjZW1lbnQs
IGNvdW50KSB7CisgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvdW50OyArK2lpKSB7
CisgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShyZSwgcmVwbGFjZW1lbnQpOworICAgICAg
ICAgIH0KKyAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICB9CisgICAgICAgIHN0ciA9IGV4
cGFuZChzdHIsIG5ldyBSZWdFeHAoIiAiLCAnZycpLCAiICAiLCAxMik7CisgICAgICAgIHZhciBt
YW55WmVyb3MgPSBleHBhbmQoIjAiLCBuZXcgUmVnRXhwKCIwIiwgJ2cnKSwgIjAwIiwgOCkuc3Vi
c3RyaW5nKDIpOworICAgICAgICBzdHIgPSBleHBhbmQoc3RyLCBuZXcgUmVnRXhwKCIwIiwgJ2cn
KSwgbWFueVplcm9zLCAxKTsKKyAgICAgICAgc3RyID0gZXhwYW5kKHN0ciwgbmV3IFJlZ0V4cCgi
Zm9vbyIsICdnJyksICJmb29vZm9vbyIsIDYpOworICAgICAgICBzdHIgPSBleHBhbmQoc3RyLCBu
ZXcgUmVnRXhwKCJsb25nIiwgJ2cnKSwgImxvbmdsb25nIiwgNik7CisgICAgICAgIC8vZGVidWco
ImxlbjoiICsgc3RyLmxlbmd0aCk7CisgICAgICAgIC8vZGVidWcoc3RyKTsKKyAgICAgICAgcmV0
dXJuIHN0cjsKKyAgICAgIH0sCisgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHBhc3NN
c2c6ICdzaGFkZXIgdGhhdCB1c2VzIGxvbmcgbGluZXMgc2hvdWxkIHN1Y2NlZWQnLAorICAgIH0K
KyAgXSk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1ub24tYXNjaWktZXJyb3IuZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLW5v
bi1hc2NpaS1lcnJvci5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgwY2YzYTk5NTNmZDkxNmYzZjky
MGUzNTE5M2NjZjhhMmI1MDViZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1ub24tYXNjaWktZXJyb3IuZnJhZy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVyIHdpdGggZXJyb3IgZGlyZWN0aXZl
IHVzaW5nIGNoYXJhY3RlcnMgb3V0c2lkZSBvZiBhbGxvd2VkIHNldCBmYWlscworI2Vycm9yICAv
LyB3aWxsIHJldHVybiBJTlZBTElEX1ZBTFVFLiBTZWUgV2ViR0wgNi4xOAordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsMCwwLDApOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLW5vbi1yZXNlcnZlZC13b3Jk
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLW5vbi1yZXNlcnZlZC13b3Jkcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4NDlkOGQxZDVkN2RiZTU2OTFlODE3Y2MyZDE5Y2VmOGIxMmU4ZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtbm9uLXJlc2VydmVkLXdvcmRzLmh0
bWwKQEAgLTAsMCArMSw2OTUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHMgLSBOb24gUmVz
ZXJ2ZWQgV29yZHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyMCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90
LWphdmFzY3JpcHQiPgorc3RydWN0ICRyZXBsYWNlTWUgeworICB2ZWM0ICRyZXBsYWNlTWU7Cit9
Oworc3RydWN0IEZvbyB7CisgICRyZXBsYWNlTWUgJHJlcGxhY2VNZTsKK307CithdHRyaWJ1dGUg
dmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgRm9vIGY7CisgICAgZi4kcmVwbGFj
ZU1lLiRyZXBsYWNlTWUgPSBwb3NpdGlvbjsKKyAgICBnbF9Qb3NpdGlvbiA9IGYuJHJlcGxhY2VN
ZS4kcmVwbGFjZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlcjAi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwordmVjNCAkcmVwbGFjZU1lKCkgeworICAgIHJldHVybiB2ZWM0KDAsMSwwLDEpOwor
fQordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSAkcmVwbGFjZU1lKCk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlcjEiIHR5cGU9InRleHQvc29tZXRoaW5n
LW5vdC1qYXZhc2NyaXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0ICRyZXBsYWNlTWU7Cit2b2lkIG1haW4o
KQoreworICAgIGdsX1Bvc2l0aW9uID0gJHJlcGxhY2VNZTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnJhZ21lbnRTaGFkZXIxIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZlYzQgZm9vKHZlYzQgJHJlcGxhY2VNZSkg
eworICByZXR1cm4gJHJlcGxhY2VNZTsKK30KK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0Nv
bG9yID0gZm9vKHZlYzQoMSwwLDEsMSkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0
ZXhTaGFkZXIyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2YXJ5aW5n
IHZlYzQgJHJlcGxhY2VNZTsKK2F0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICRyZXBsYWNlTWUgPSBwb3NpdGlv
bjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIyIiB0eXBlPSJ0ZXh0
L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3Zh
cnlpbmcgdmVjNCAkcmVwbGFjZU1lOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3Ig
PSAkcmVwbGFjZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIzIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CithdHRyaWJ1dGUgdmVjNCBwb3Np
dGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIzIiB0eXBlPSJ0ZXh0L3NvbWV0aGlu
Zy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVj
NCAkcmVwbGFjZU1lOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSAkcmVwbGFj
ZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIERYV29yZHMg
PSBbCisgICJCdWZmZXIiLAorICAiZG91YmxlIiwKKyAgInVpbnQiLAorICAiaGFsZiIsCisgICJk
d29yZCIsCisgICJzdHJpbmciLAorICAidGV4dHVyZSIsCisgICJwaXhlbHNoYWRlciIsCisgICJ2
ZXJ0ZXhzaGFkZXIiLAorICAic3dpdGNoIiwKKyAgIm1pbjE2ZmxvYXQiLAorICAibWluMTBmbG9h
dCIsCisgICJtaW4xNmludCIsCisgICJtaW4xMmludCIsCisgICJtaW4xNnVpbnQiLAorICAidmVj
dG9yIiwKKyAgIm1hdHJpeCIsCisgICJmbG9hdDIiLAorICAiZmxvYXQzIiwKKyAgImZsb2F0NCIs
CisgICJmbG9hdDF4MSIsCisgICJmbG9hdDF4MiIsCisgICJmbG9hdDF4MyIsCisgICJmbG9hdDF4
NCIsCisgICJmbG9hdDJ4MSIsCisgICJmbG9hdDJ4MiIsCisgICJmbG9hdDJ4MyIsCisgICJmbG9h
dDJ4NCIsCisgICJmbG9hdDN4MSIsCisgICJmbG9hdDN4MiIsCisgICJmbG9hdDN4MyIsCisgICJm
bG9hdDN4NCIsCisgICJmbG9hdDR4MSIsCisgICJmbG9hdDR4MiIsCisgICJmbG9hdDR4MyIsCisg
ICJmbG9hdDR4NCIsCisgICJpbnQxeDEiLAorICAiaW50MXgyIiwKKyAgImludDF4MyIsCisgICJp
bnQxeDQiLAorICAiaW50MngxIiwKKyAgImludDJ4MiIsCisgICJpbnQyeDMiLAorICAiaW50Mng0
IiwKKyAgImludDN4MSIsCisgICJpbnQzeDIiLAorICAiaW50M3gzIiwKKyAgImludDN4NCIsCisg
ICJpbnQ0eDEiLAorICAiaW50NHgyIiwKKyAgImludDR4MyIsCisgICJpbnQ0eDQiLAorICAiZG91
YmxlMXgxIiwKKyAgImRvdWJsZTF4MiIsCisgICJkb3VibGUxeDMiLAorICAiZG91YmxlMXg0IiwK
KyAgImRvdWJsZTJ4MSIsCisgICJkb3VibGUyeDIiLAorICAiZG91YmxlMngzIiwKKyAgImRvdWJs
ZTJ4NCIsCisgICJkb3VibGUzeDEiLAorICAiZG91YmxlM3gyIiwKKyAgImRvdWJsZTN4MyIsCisg
ICJkb3VibGUzeDQiLAorICAiZG91YmxlNHgxIiwKKyAgImRvdWJsZTR4MiIsCisgICJkb3VibGU0
eDMiLAorICAiZG91YmxlNHg0IiwKKyAgImFib3J0IiwKKyAgImFicyIsCisgICJhY29zIiwKKyAg
ImFsbCIsCisgICJBbGxNZW1vcnlCYXJyaWVyIiwKKyAgIkFsbE1lbW9yeUJhcnJpZXJXaXRoR3Jv
dXBTeW5jIiwKKyAgImFueSIsCisgICJhc2RvdWJsZSIsCisgICJhc2Zsb2F0IiwKKyAgImFzaW4i
LAorICAiYXNpbnQiLAorICAiYXNpbnQiLAorICAiYXN1aW50IiwKKyAgImFzdWludCIsCisgICJh
dGFuIiwKKyAgImF0YW4yIiwKKyAgImNlaWwiLAorICAiY2xhbXAiLAorICAiY2xpcCIsCisgICJj
b3MiLAorICAiY29zaCIsCisgICJjb3VudGJpdHMiLAorICAiY3Jvc3MiLAorICAiRDNEQ09MT1J0
b1VCWVRFNCIsCisgICJkZHgiLAorICAiZGR4X2NvYXJzZSIsCisgICJkZHhfZmluZSIsCisgICJk
ZHkiLAorICAiZGR5X2NvYXJzZSIsCisgICJkZHlfZmluZSIsCisgICJkZWdyZWVzIiwKKyAgImRl
dGVybWluYW50IiwKKyAgIkRldmljZU1lbW9yeUJhcnJpZXIiLAorICAiRGV2aWNlTWVtb3J5QmFy
cmllcldpdGhHcm91cFN5bmMiLAorICAiZGlzdGFuY2UiLAorICAiZG90IiwKKyAgImRzdCIsCisg
ICJlcnJvcmYiLAorICAiRXZhbHVhdGVBdHRyaWJ1dGVBdENlbnRyb2lkIiwKKyAgIkV2YWx1YXRl
QXR0cmlidXRlQXRTYW1wbGUiLAorICAiRXZhbHVhdGVBdHRyaWJ1dGVTbmFwcGVkIiwKKyAgImV4
cCIsCisgICJleHAyIiwKKyAgImYxNnRvZjMyIiwKKyAgImYzMnRvZjE2IiwKKyAgImZhY2Vmb3J3
YXJkIiwKKyAgImZpcnN0Yml0aGlnaCIsCisgICJmaXJzdGJpdGxvdyIsCisgICJmbG9vciIsCisg
ICJmbWEiLAorICAiZm1vZCIsCisgICJmcmFjIiwKKyAgImZyZXhwIiwKKyAgImZ3aWR0aCIsCisg
ICJHZXRSZW5kZXJUYXJnZXRTYW1wbGVDb3VudCIsCisgICJHZXRSZW5kZXJUYXJnZXRTYW1wbGVQ
b3NpdGlvbiIsCisgICJHcm91cE1lbW9yeUJhcnJpZXIiLAorICAiR3JvdXBNZW1vcnlCYXJyaWVy
V2l0aEdyb3VwU3luYyIsCisgICJJbnRlcmxvY2tlZEFkZCIsCisgICJJbnRlcmxvY2tlZEFuZCIs
CisgICJJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSIsCisgICJJbnRlcmxvY2tlZENvbXBhcmVT
dG9yZSIsCisgICJJbnRlcmxvY2tlZEV4Y2hhbmdlIiwKKyAgIkludGVybG9ja2VkTWF4IiwKKyAg
IkludGVybG9ja2VkTWluIiwKKyAgIkludGVybG9ja2VkT3IiLAorICAiSW50ZXJsb2NrZWRYb3Ii
LAorICAiaXNmaW5pdGUiLAorICAiaXNpbmYiLAorICAiaXNuYW4iLAorICAibGRleHAiLAorICAi
bGVuZ3RoIiwKKyAgImxlcnAiLAorICAibGl0IiwKKyAgImxvZyIsCisgICJsb2cxMCIsCisgICJs
b2cyIiwKKyAgIm1hZCIsCisgICJtYXgiLAorICAibWluIiwKKyAgIm1vZGYiLAorICAibXNhZDQi
LAorICAibXVsIiwKKyAgIm5vaXNlIiwKKyAgIm5vcm1hbGl6ZSIsCisgICJwb3ciLAorICAicHJp
bnRmIiwKKyAgIlByb2Nlc3MyRFF1YWRUZXNzRmFjdG9yc0F2ZyIsCisgICJQcm9jZXNzMkRRdWFk
VGVzc0ZhY3RvcnNNYXgiLAorICAiUHJvY2VzczJEUXVhZFRlc3NGYWN0b3JzTWluIiwKKyAgIlBy
b2Nlc3NJc29saW5lVGVzc0ZhY3RvcnMiLAorICAiUHJvY2Vzc1F1YWRUZXNzRmFjdG9yc0F2ZyIs
CisgICJQcm9jZXNzUXVhZFRlc3NGYWN0b3JzTWF4IiwKKyAgIlByb2Nlc3NRdWFkVGVzc0ZhY3Rv
cnNNaW4iLAorICAiUHJvY2Vzc1RyaVRlc3NGYWN0b3JzQXZnIiwKKyAgIlByb2Nlc3NUcmlUZXNz
RmFjdG9yc01heCIsCisgICJQcm9jZXNzVHJpVGVzc0ZhY3RvcnNNaW4iLAorICAicmFkaWFucyIs
CisgICJyY3AiLAorICAicmVmbGVjdCIsCisgICJyZWZyYWN0IiwKKyAgInJldmVyc2ViaXRzIiwK
KyAgInJvdW5kIiwKKyAgInJzcXJ0IiwKKyAgInNhdHVyYXRlIiwKKyAgInNpZ24iLAorICAic2lu
IiwKKyAgInNpbmNvcyIsCisgICJzaW5oIiwKKyAgInNtb290aHN0ZXAiLAorICAic3FydCIsCisg
ICJzdGVwIiwKKyAgInRhbiIsCisgICJ0YW5oIiwKKyAgInRleDFEIiwKKyAgInRleDFEIiwKKyAg
InRleDFEYmlhcyIsCisgICJ0ZXgxRGdyYWQiLAorICAidGV4MURsb2QiLAorICAidGV4MURwcm9q
IiwKKyAgInRleDJEIiwKKyAgInRleDJEIiwKKyAgInRleDJEYmlhcyIsCisgICJ0ZXgyRGdyYWQi
LAorICAidGV4MkRsb2QiLAorICAidGV4MkRwcm9qIiwKKyAgInRleDNEIiwKKyAgInRleDNEIiwK
KyAgInRleDNEYmlhcyIsCisgICJ0ZXgzRGdyYWQiLAorICAidGV4M0Rsb2QiLAorICAidGV4M0Rw
cm9qIiwKKyAgInRleENVQkUiLAorICAidGV4Q1VCRSIsCisgICJ0ZXhDVUJFYmlhcyIsCisgICJ0
ZXhDVUJFZ3JhZCIsCisgICJ0ZXhDVUJFbG9kIiwKKyAgInRleENVQkVwcm9qIiwKKyAgInRyYW5z
cG9zZSIsCisgICJ0cnVuYyIKK107CisKK3ZhciBHTFNMXzRfMjBfMTFfd29yZHMgPSBbCisgICJh
dHRyaWJ1dGUiLAorICAiY29uc3QiLAorICAidW5pZm9ybSIsCisgICJ2YXJ5aW5nIiwKKyAgImNv
aGVyZW50IiwKKyAgInZvbGF0aWxlIiwKKyAgInJlc3RyaWN0IiwKKyAgInJlYWRvbmx5IiwKKyAg
IndyaXRlb25seSIsCisgICJhdG9taWNfdWludCIsCisgICJsYXlvdXQiLAorICAiY2VudHJvaWQi
LAorICAiZmxhdCIsCisgICJzbW9vdGgiLAorICAibm9wZXJzcGVjdGl2ZSIsCisgICJwYXRjaCIs
CisgICJzYW1wbGUiLAorICAiYnJlYWsiLAorICAiY29udGludWUiLAorICAiZG8iLAorICAiZm9y
IiwKKyAgIndoaWxlIiwKKyAgInN3aXRjaCIsCisgICJjYXNlIiwKKyAgImRlZmF1bHQiLAorICAi
aWYiLAorICAiZWxzZSIsCisgICJzdWJyb3V0aW5lIiwKKyAgImluIiwKKyAgIm91dCIsCisgICJp
bm91dCIsCisgICJmbG9hdCIsCisgICJkb3VibGUiLAorICAiaW50IiwKKyAgInZvaWQiLAorICAi
Ym9vbCIsCisgICJ0cnVlIiwKKyAgImZhbHNlIiwKKyAgImludmFyaWFudCIsCisgICJkaXNjYXJk
IiwKKyAgInJldHVybiIsCisgICJtYXQyIiwKKyAgIm1hdDMiLAorICAibWF0NCIsCisgICJkbWF0
MiIsCisgICJkbWF0MyIsCisgICJkbWF0NCIsCisgICJtYXQyeDIiLAorICAibWF0MngzIiwKKyAg
Im1hdDJ4NCIsCisgICJkbWF0MngyIiwKKyAgImRtYXQyeDMiLAorICAiZG1hdDJ4NCIsCisgICJt
YXQzeDIiLAorICAibWF0M3gzIiwKKyAgIm1hdDN4NCIsCisgICJkbWF0M3gyIiwKKyAgImRtYXQz
eDMiLAorICAiZG1hdDN4NCIsCisgICJtYXQ0eDIiLAorICAibWF0NHgzIiwKKyAgIm1hdDR4NCIs
CisgICJkbWF0NHgyIiwKKyAgImRtYXQ0eDMiLAorICAiZG1hdDR4NCIsCisgICJ2ZWMyIiwKKyAg
InZlYzMiLAorICAidmVjNCIsCisgICJpdmVjMiIsCisgICJpdmVjMyIsCisgICJpdmVjNCIsCisg
ICJidmVjMiIsCisgICJidmVjMyIsCisgICJidmVjNCIsCisgICJkdmVjMiIsCisgICJkdmVjMyIs
CisgICJkdmVjNCIsCisgICJ1aW50IiwKKyAgInV2ZWMyIiwKKyAgInV2ZWMzIiwKKyAgInV2ZWM0
IiwKKyAgImxvd3AiLAorICAibWVkaXVtcCIsCisgICJoaWdocCIsCisgICJwcmVjaXNpb24iLAor
ICAic2FtcGxlcjFEIiwKKyAgInNhbXBsZXIyRCIsCisgICJzYW1wbGVyM0QiLAorICAic2FtcGxl
ckN1YmUiLAorICAic2FtcGxlcjFEU2hhZG93IiwKKyAgInNhbXBsZXIyRFNoYWRvdyIsCisgICJz
YW1wbGVyQ3ViZVNoYWRvdyIsCisgICJzYW1wbGVyMURBcnJheSIsCisgICJzYW1wbGVyMkRBcnJh
eSIsCisgICJzYW1wbGVyMURBcnJheVNoYWRvdyIsCisgICJzYW1wbGVyMkRBcnJheVNoYWRvdyIs
CisgICJpc2FtcGxlcjFEIiwKKyAgImlzYW1wbGVyMkQiLAorICAiaXNhbXBsZXIzRCIsCisgICJp
c2FtcGxlckN1YmUiLAorICAiaXNhbXBsZXIxREFycmF5IiwKKyAgImlzYW1wbGVyMkRBcnJheSIs
CisgICJ1c2FtcGxlcjFEIiwKKyAgInVzYW1wbGVyMkQiLAorICAidXNhbXBsZXIzRCIsCisgICJ1
c2FtcGxlckN1YmUiLAorICAidXNhbXBsZXIxREFycmF5IiwKKyAgInVzYW1wbGVyMkRBcnJheSIs
CisgICJzYW1wbGVyMkRSZWN0IiwKKyAgInNhbXBsZXIyRFJlY3RTaGFkb3ciLAorICAiaXNhbXBs
ZXIyRFJlY3QiLAorICAidXNhbXBsZXIyRFJlY3QiLAorICAic2FtcGxlckJ1ZmZlciIsCisgICJp
c2FtcGxlckJ1ZmZlciIsCisgICJ1c2FtcGxlckJ1ZmZlciIsCisgICJzYW1wbGVyMkRNUyIsCisg
ICJpc2FtcGxlcjJETVMiLAorICAidXNhbXBsZXIyRE1TIiwKKyAgInNhbXBsZXIyRE1TQXJyYXki
LAorICAiaXNhbXBsZXIyRE1TQXJyYXkiLAorICAidXNhbXBsZXIyRE1TQXJyYXkiLAorICAic2Ft
cGxlckN1YmVBcnJheSIsCisgICJzYW1wbGVyQ3ViZUFycmF5U2hhZG93IiwKKyAgImlzYW1wbGVy
Q3ViZUFycmF5IiwKKyAgInVzYW1wbGVyQ3ViZUFycmF5IiwKKyAgImltYWdlMUQiLAorICAiaWlt
YWdlMUQiLAorICAidWltYWdlMUQiLAorICAiaW1hZ2UyRCIsCisgICJpaW1hZ2UyRCIsCisgICJ1
aW1hZ2UyRCIsCisgICJpbWFnZTNEIiwKKyAgImlpbWFnZTNEIiwKKyAgInVpbWFnZTNEIiwKKyAg
ImltYWdlMkRSZWN0IiwKKyAgImlpbWFnZTJEUmVjdCIsCisgICJ1aW1hZ2UyRFJlY3QiLAorICAi
aW1hZ2VDdWJlIiwKKyAgImlpbWFnZUN1YmUiLAorICAidWltYWdlQ3ViZSIsCisgICJpbWFnZUJ1
ZmZlciIsCisgICJpaW1hZ2VCdWZmZXIiLAorICAidWltYWdlQnVmZmVyIiwKKyAgImltYWdlMURB
cnJheSIsCisgICJpaW1hZ2UxREFycmF5IiwKKyAgInVpbWFnZTFEQXJyYXkiLAorICAiaW1hZ2Uy
REFycmF5IiwKKyAgImlpbWFnZTJEQXJyYXkiLAorICAidWltYWdlMkRBcnJheSIsCisgICJpbWFn
ZUN1YmVBcnJheSIsCisgICJpaW1hZ2VDdWJlQXJyYXkiLAorICAidWltYWdlQ3ViZUFycmF5IiwK
KyAgImltYWdlMkRNUyIsCisgICJpaW1hZ2UyRE1TIiwKKyAgInVpbWFnZTJETVMiLAorICAiaW1h
Z2UyRE1TQXJyYXkiLAorICAiaWltYWdlMkRNU0FycmF5IiwKKyAgInVpbWFnZTJETVNBcnJheSIs
CisgICJzdHJ1Y3QiCitdOworCit2YXIgR0xTTF80XzIwXzExX2Z1dHVyZV93b3JkcyA9IFsKKyAg
ImNvbW1vbiIsCisgICJwYXJ0aXRpb24iLAorICAiYWN0aXZlIiwKKyAgImFzbSIsCisgICJjbGFz
cyIsCisgICJ1bmlvbiIsCisgICJlbnVtIiwKKyAgInR5cGVkZWYiLAorICAidGVtcGxhdGUiLAor
ICAidGhpcyIsCisgICJwYWNrZWQiLAorICAicmVzb3VyY2UiLAorICAiZ290byIsCisgICJpbmxp
bmUiLAorICAibm9pbmxpbmUiLAorICAicHVibGljIiwKKyAgInN0YXRpYyIsCisgICJleHRlcm4i
LAorICAiZXh0ZXJuYWwiLAorICAiaW50ZXJmYWNlIiwKKyAgImxvbmciLAorICAic2hvcnQiLAor
ICAiaGFsZiIsCisgICJmaXhlZCIsCisgICJ1bnNpZ25lZCIsCisgICJzdXBlcnAiLAorICAiaW5w
dXQiLAorICAib3V0cHV0IiwKKyAgImh2ZWMyIiwKKyAgImh2ZWMzIiwKKyAgImh2ZWM0IiwKKyAg
ImZ2ZWMyIiwKKyAgImZ2ZWMzIiwKKyAgImZ2ZWM0IiwKKyAgInNhbXBsZXIzRFJlY3QiLAorICAi
ZmlsdGVyIiwKKyAgInNpemVvZiIsCisgICJjYXN0IiwKKyAgIm5hbWVzcGFjZSIsCisgICJ1c2lu
ZyIsCisgICJyb3dfbWFqb3IiCitdOworCit2YXIgR0xTTF8xXzBfMTdfd29yZHMgPSBbCisgICJh
dHRyaWJ1dGUiLAorICAiY29uc3QiLAorICAidW5pZm9ybSIsCisgICJ2YXJ5aW5nIiwKKyAgImJy
ZWFrIiwKKyAgImNvbnRpbnVlIiwKKyAgImRvIiwKKyAgImZvciIsCisgICJ3aGlsZSIsCisgICJp
ZiIsCisgICJlbHNlIiwKKyAgImluIiwKKyAgIm91dCIsCisgICJpbm91dCIsCisgICJmbG9hdCIs
CisgICJpbnQiLAorICAidm9pZCIsCisgICJib29sIiwKKyAgInRydWUiLAorICAiZmFsc2UiLAor
ICAibG93cCIsCisgICJtZWRpdW1wIiwKKyAgImhpZ2hwIiwKKyAgInByZWNpc2lvbiIsCisgICJp
bnZhcmlhbnQiLAorICAiZGlzY2FyZCIsCisgICJyZXR1cm4iLAorICAibWF0MiIsCisgICJtYXQz
IiwKKyAgIm1hdDQiLAorICAidmVjMiIsCisgICJ2ZWMzIiwKKyAgInZlYzQiLAorICAiaXZlYzIi
LAorICAiaXZlYzMiLAorICAiaXZlYzQiLAorICAiYnZlYzIiLAorICAiYnZlYzMiLAorICAiYnZl
YzQiLAorICAic2FtcGxlcjJEIiwKKyAgInNhbXBsZXJDdWJlIiwKKyAgInN0cnVjdCIKK10KKwor
dmFyIEdMU0xfMV8wXzE3X0Z1dHVyZVdvcmRzID0gWworICAiYXNtIiwKKyAgImNsYXNzIiwKKyAg
InVuaW9uIiwKKyAgImVudW0iLAorICAidHlwZWRlZiIsCisgICJ0ZW1wbGF0ZSIsCisgICJ0aGlz
IiwKKyAgInBhY2tlZCIsCisgICJnb3RvIiwKKyAgInN3aXRjaCIsCisgICJkZWZhdWx0IiwKKyAg
ImlubGluZSIsCisgICJub2lubGluZSIsCisgICJ2b2xhdGlsZSIsCisgICJwdWJsaWMiLAorICAi
c3RhdGljIiwKKyAgImV4dGVybiIsCisgICJleHRlcm5hbCIsCisgICJpbnRlcmZhY2UiLAorICAi
ZmxhdCIsCisgICJsb25nIiwKKyAgInNob3J0IiwKKyAgImRvdWJsZSIsCisgICJoYWxmIiwKKyAg
ImZpeGVkIiwKKyAgInVuc2lnbmVkIiwKKyAgInN1cGVycCIsCisgICJpbnB1dCIsCisgICJvdXRw
dXQiLAorICAiaHZlYzIiLAorICAiaHZlYzMiLAorICAiaHZlYzQiLAorICAiZHZlYzIiLAorICAi
ZHZlYzMiLAorICAiZHZlYzQiLAorICAiZnZlYzIiLAorICAiZnZlYzMiLAorICAiZnZlYzQiLAor
ICAic2FtcGxlcjFEIiwKKyAgInNhbXBsZXIzRCIsCisgICJzYW1wbGVyMURTaGFkb3ciLAorICAi
c2FtcGxlcjJEU2hhZG93IiwKKyAgInNhbXBsZXIyRFJlY3QiLAorICAic2FtcGxlcjNEUmVjdCIs
CisgICJzYW1wbGVyMkRSZWN0U2hhZG93IiwKKyAgInNpemVvZiIsCisgICJjYXN0IiwKKyAgIm5h
bWVzcGFjZSIsCisgICJ1c2luZyIKK107CisKK2Rlc2NyaXB0aW9uKCk7CisKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKKwordmFyIGJh
ZFdvcmRzID0gWworICB7IHdvcmRzOiBEWFdvcmRzIH0sCisgIHsgd29yZHM6IEdMU0xfNF8yMF8x
MV93b3JkcywgfSwKKyAgeyB3b3JkczogR0xTTF80XzIwXzExX2Z1dHVyZV93b3JkcywgfQorXTsK
KwordmFyIHJlc2VydmVkV29yZHNMaXN0cyA9IFsKKyAgR0xTTF8xXzBfMTdfd29yZHMsCisgIEdM
U0xfMV8wXzE3X0Z1dHVyZVdvcmRzCitdOworCit2YXIgcmVzZXJ2ZWRXb3JkcyA9IHsgfTsKK2Zv
ciAodmFyIGlpID0gMDsgaWkgPCByZXNlcnZlZFdvcmRzTGlzdHMubGVuZ3RoOyArK2lpKSB7Cisg
IHZhciBsaXN0ID0gcmVzZXJ2ZWRXb3Jkc0xpc3RzW2lpXTsKKyAgZm9yICh2YXIgamogPSAwOyBq
aiA8IGxpc3QubGVuZ3RoOyArK2pqKSB7CisgICAgcmVzZXJ2ZWRXb3Jkc1tsaXN0W2pqXV0gPSB0
cnVlOworICB9Cit9CisKK3ZhciBjaGVja2VkV29yZHMgPSB7fTsKKwordmFyIHNyYyA9IFtdOwor
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IDQ7ICsraWkpIHsKKyAgdmFyIHZzcmMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmVydGV4U2hhZGVyIiArIGlpKS50ZXh0OworICB2YXIgZnNyYyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFnbWVudFNoYWRlciIgKyBpaSkudGV4dDsKKyAgc3Jj
LnB1c2goe3ZzcmM6IHZzcmMsIGZzcmM6IGZzcmN9KTsKK30KKwordmFyIGJhZFdvcmROZHggPSAw
OwordmFyIGxpc3ROZHggPSAwOworCitmdW5jdGlvbiB0ZXN0TmV4dFdvcmQoKSB7CisgIHZhciBs
aXN0ID0gYmFkV29yZHNbYmFkV29yZE5keF0ud29yZHM7CisgIGlmIChsaXN0TmR4ID49IGxpc3Qu
bGVuZ3RoKSB7CisgICAgKytiYWRXb3JkTmR4OworICAgIGlmIChiYWRXb3JkTmR4ID49IGJhZFdv
cmRzLmxlbmd0aCkgeworICAgICAgZmluaXNoVGVzdCgpOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBsaXN0TmR4ID0gMDsKKyAgICBsaXN0ID0gYmFkV29yZHNbYmFkV29yZE5keF0ud29yZHM7
CisgIH0KKyAgdGVzdFdvcmQobGlzdFtsaXN0TmR4XSk7CisgICsrbGlzdE5keDsKKyAgc2V0VGlt
ZW91dCh0ZXN0TmV4dFdvcmQsIDApOworfQordGVzdE5leHRXb3JkKCk7CisKK2Z1bmN0aW9uIHRl
c3RXb3JkKHdvcmQpIHsKKyAgaWYgKHdvcmQgaW4gcmVzZXJ2ZWRXb3JkcyB8fCB3b3JkIGluIGNo
ZWNrZWRXb3JkcykgeworICAgIHJldHVybjsKKyAgfQorICBjaGVja2VkV29yZHNbd29yZF0gPSB0
cnVlOworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0aW5nOiAiICsgd29yZCk7CisKKyAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IHNyYy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgdnMgPSBzcmNb
aWldLnZzcmMucmVwbGFjZSgvXCRyZXBsYWNlTWUvZywgd29yZCk7CisgICAgdmFyIGZzID0gc3Jj
W2lpXS5mc3JjLnJlcGxhY2UoL1wkcmVwbGFjZU1lL2csIHdvcmQpOworCisgICAgdmFyIHN1Y2Nl
c3MgPSB0cnVlOworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtKGdsLCB2cywgZnMs
IGZ1bmN0aW9uKG1zZykgeworICAgICAgZGVidWcobXNnKTsKKyAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICB9LCB0cnVlKTsKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgdGVzdFBhc3NlZCgi
c2hhZGVyIHdpdGg6ICciICsgd29yZCArICInIGNvbXBpbGVkIik7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHRlc3RGYWlsZWQoInNoYWRlciB3aXRoOiAnIiArIHdvcmQgKyAiJyBmYWlsZWQgdG8gY29t
cGlsZSIpOworICAgIH0KKyAgICBpZiAocHJvZ3JhbSkgeworICAgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICB9CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJzaG91bGQgYmUgbm8gR0wgZXJyb3JzIik7CisgIH0KK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2dsc2wvbWlzYy9zaGFkZXItd2l0aC1wcmVjaXNpb24uZnJhZy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3No
YWRlci13aXRoLXByZWNpc2lvbi5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM2YjY2ZWMwYmExMzY2
NTUyN2FlZjUyY2ZmYjQwYzE1ZDI2OTQxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC1wcmVjaXNpb24uZnJhZy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggcHJlY2lz
aW9uIHNob3VsZCBzdWNjZWVkCit2b2lkIG1haW4oKQoreworICAgIG1lZGl1bXAgdmVjNCBjb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRl
c3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0
aC1wcmVwcm9jZXNzb3Itd2hpdGVzcGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXBy
ZXByb2Nlc3Nvci13aGl0ZXNwYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlMzFkNTkyNzA2ZWZkMjU1
NTc0NmEwZTdiNzJhMmQwMmQ2NGEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXItd2l0aC1wcmVwcm9jZXNzb3Itd2hpdGVzcGFjZS5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhXaGl0ZXNwYWNlIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBHTFNMIEVTIHNwZWMgc2VjdGlv
biAzLjQKKyAJIyAJaWZkZWYgR0xfRVMKK2F0dHJpYnV0ZSB2ZWM0IHZfUG9zaXRpb247Cit2b2lk
IG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdl9Qb3NpdGlvbjsKK30KKyNlbmRpZgorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFdoaXRlc3BhY2UiIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIEdMU0wgRVMgc3BlYyBzZWN0aW9uIDMuNAorIAkjIAlp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQoreworICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLDAuMCwwLjAsMS4wKTsKK30KKyNlbmRpZgorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3RzKFsKKyAgICB7CisgICAgICB2U2hhZGVySWQ6ICd2ZXJ0ZXhXaGl0ZXNwYWNlJywKKyAgICAg
IHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICBw
YXNzTXNnOiAnVmVydGV4IHNoYWRlciB1c2luZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMgYXJv
dW5kICMgc2hvdWxkIHN1Y2NlZWQnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdm
cmFnbWVudFdoaXRlc3BhY2UnLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBs
aW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6ICdGcmFnbWVudCBzaGFkZXIgdXNpbmcg
c3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzIGFyb3VuZCAjIHNob3VsZCBzdWNjZWVkJworICAgIH0K
K10pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtcXVvdGVkLWVy
cm9yLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1xdW90ZWQtZXJyb3IuZnJhZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3OTMxNWQzZjk5OWYzNzhiYzRhODkyY2UxZGRjZDBmMTZlZjhiNWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtcXVvdGVkLWVycm9yLmZy
YWcuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2ds
c2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0
Ij4KKy8vIHNoYWRlciB3aXRoIGVycm9yIGRpcmVjdGl2ZSB1c2luZyBxdW90ZXMgd2lsbCBmYWls
CisjZXJyb3IgInRlc3RpbmcxMjMgdGVzdGluZzEyMyIgLy8gd2lsbCByZXR1cm4gSU5WQUxJRF9W
QUxVRS4gU2VlIFdlYkdMIDYuMTgKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLDAsMCwwKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
bWlzYy9zaGFkZXItd2l0aC1yZXNlcnZlZC13b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13
aXRoLXJlc2VydmVkLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2OTUzZTBmZTgzNjYwMjI2ZjBh
MjJlMDJkMDNmZjc3NWZkYjMyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1yZXNlcnZlZC13b3Jkcy5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZv
cm1hbmNlIFRlc3RzIC0gUmVzZXJ2ZWQgV29yZHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10
ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyMCIgdHlwZT0i
dGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorc3RydWN0ICRyZXBsYWNlTWUgeworICB2
ZWM0ICRyZXBsYWNlTWU7Cit9Oworc3RydWN0IEZvbyB7CisgICRyZXBsYWNlTWUgJHJlcGxhY2VN
ZTsKK307CithdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgRm9v
IGY7CisgICAgZi4kcmVwbGFjZU1lLiRyZXBsYWNlTWUgPSBwb3NpdGlvbjsKKyAgICBnbF9Qb3Np
dGlvbiA9IGYuJHJlcGxhY2VNZS4kcmVwbGFjZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmcmFnbWVudFNoYWRlcjAiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4K
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmVjNCAkcmVwbGFjZU1lKCkgeworICAgIHJldHVy
biB2ZWM0KDAsMSwwLDEpOworfQordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSAk
cmVwbGFjZU1lKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlcjEiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0ICRyZXBs
YWNlTWU7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gJHJlcGxhY2VNZTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIxIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZlYzQgZm9v
KHZlYzQgJHJlcGxhY2VNZSkgeworICByZXR1cm4gJHJlcGxhY2VNZTsKK30KK3ZvaWQgbWFpbigp
Cit7CisgICAgZ2xfRnJhZ0NvbG9yID0gZm9vKHZlYzQoMSwwLDEsMSkpOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+Cit2YXJ5aW5nIHZlYzQgJHJlcGxhY2VNZTsKK2F0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICRy
ZXBsYWNlTWUgPSBwb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRT
aGFkZXIyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCAkcmVwbGFjZU1lOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSAkcmVwbGFjZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJ2ZXJ0ZXhTaGFkZXIzIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cith
dHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIzIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gdmVjNCAkcmVwbGFjZU1lOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9G
cmFnQ29sb3IgPSAkcmVwbGFjZU1lOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOwordmFyIEdMU0xfMV8wXzE3X3dvcmRzID0gWworICAiYXR0cmlidXRlIiwKKyAgImNvbnN0
IiwKKyAgInVuaWZvcm0iLAorICAidmFyeWluZyIsCisgICJicmVhayIsCisgICJjb250aW51ZSIs
CisgICJkbyIsCisgICJmb3IiLAorICAid2hpbGUiLAorICAiaWYiLAorICAiZWxzZSIsCisgICJp
biIsCisgICJvdXQiLAorICAiaW5vdXQiLAorICAiZmxvYXQiLAorICAiaW50IiwKKyAgInZvaWQi
LAorICAiYm9vbCIsCisgICJ0cnVlIiwKKyAgImZhbHNlIiwKKyAgImxvd3AiLAorICAibWVkaXVt
cCIsCisgICJoaWdocCIsCisgICJwcmVjaXNpb24iLAorICAiaW52YXJpYW50IiwKKyAgImRpc2Nh
cmQiLAorICAicmV0dXJuIiwKKyAgIm1hdDIiLAorICAibWF0MyIsCisgICJtYXQ0IiwKKyAgInZl
YzIiLAorICAidmVjMyIsCisgICJ2ZWM0IiwKKyAgIml2ZWMyIiwKKyAgIml2ZWMzIiwKKyAgIml2
ZWM0IiwKKyAgImJ2ZWMyIiwKKyAgImJ2ZWMzIiwKKyAgImJ2ZWM0IiwKKyAgInNhbXBsZXIyRCIs
CisgICJzYW1wbGVyQ3ViZSIsCisgICJzdHJ1Y3QiCitdCisKK3ZhciBHTFNMXzFfMF8xN19GdXR1
cmVXb3JkcyA9IFsKKyAgImFzbSIsCisgICJjbGFzcyIsCisgICJ1bmlvbiIsCisgICJlbnVtIiwK
KyAgInR5cGVkZWYiLAorICAidGVtcGxhdGUiLAorICAidGhpcyIsCisgICJwYWNrZWQiLAorICAi
Z290byIsCisgICJzd2l0Y2giLAorICAiZGVmYXVsdCIsCisgICJpbmxpbmUiLAorICAibm9pbmxp
bmUiLAorICAidm9sYXRpbGUiLAorICAicHVibGljIiwKKyAgInN0YXRpYyIsCisgICJleHRlcm4i
LAorICAiZXh0ZXJuYWwiLAorICAiaW50ZXJmYWNlIiwKKyAgImZsYXQiLAorICAibG9uZyIsCisg
ICJzaG9ydCIsCisgICJkb3VibGUiLAorICAiaGFsZiIsCisgICJmaXhlZCIsCisgICJ1bnNpZ25l
ZCIsCisgICJzdXBlcnAiLAorICAiaW5wdXQiLAorICAib3V0cHV0IiwKKyAgImh2ZWMyIiwKKyAg
Imh2ZWMzIiwKKyAgImh2ZWM0IiwKKyAgImR2ZWMyIiwKKyAgImR2ZWMzIiwKKyAgImR2ZWM0IiwK
KyAgImZ2ZWMyIiwKKyAgImZ2ZWMzIiwKKyAgImZ2ZWM0IiwKKyAgInNhbXBsZXIxRCIsCisgICJz
YW1wbGVyM0QiLAorICAic2FtcGxlcjFEU2hhZG93IiwKKyAgInNhbXBsZXIyRFNoYWRvdyIsCisg
ICJzYW1wbGVyMkRSZWN0IiwKKyAgInNhbXBsZXIzRFJlY3QiLAorICAic2FtcGxlcjJEUmVjdFNo
YWRvdyIsCisgICJzaXplb2YiLAorICAiY2FzdCIsCisgICJuYW1lc3BhY2UiLAorICAidXNpbmci
LAorICAiX19mb28iLCAgICAgIC8vIHNvbWV0aGluZyB0aGF0IGhhcyAyIHVuZGVyc2NvcmVzCisg
ICJmb29fX2JhciIsICAgLy8gc29tZXRoaW5nIHRoYXQgaGFzIDIgdW5kZXJzY29yZXMKKyAgImds
X2ZvbyIsICAgICAvLyBzb21ldGhpbmcgdGhhdCBzdGFydHMgd2l0aCBnbF8KKyAgIndlYmdsX2Zv
byIgICAvLyBzb21ldGhpbmcgdGhhdCBzdGFydHMgd2l0aCB3ZWJnbF8KK107CisKK2Rlc2NyaXB0
aW9uKCk7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoKTsKKwordmFyIHJlc2VydmVkV29yZHNMaXN0cyA9IFsKKyAgR0xTTF8xXzBfMTdf
d29yZHMsCisgIEdMU0xfMV8wXzE3X0Z1dHVyZVdvcmRzCitdOworCit2YXIgcmVzZXJ2ZWRXb3Jk
cyA9IFtdOworZm9yICh2YXIgaWkgPSAwOyBpaSA8IHJlc2VydmVkV29yZHNMaXN0cy5sZW5ndGg7
ICsraWkpIHsKKyAgdmFyIGxpc3QgPSByZXNlcnZlZFdvcmRzTGlzdHNbaWldOworICBmb3IgKHZh
ciBqaiA9IDA7IGpqIDwgbGlzdC5sZW5ndGg7ICsramopIHsKKyAgICByZXNlcnZlZFdvcmRzLnB1
c2gobGlzdFtqal0pOworICB9Cit9CisKK3ZhciBzcmMgPSBbXTsKK2ZvciAodmFyIGlpID0gMDsg
aWkgPCA0OyArK2lpKSB7CisgIHZhciB2c3JjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZl
cnRleFNoYWRlciIgKyBpaSkudGV4dDsKKyAgdmFyIGZzcmMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZnJhZ21lbnRTaGFkZXIiICsgaWkpLnRleHQ7CisgIHNyYy5wdXNoKHt2c3JjOiB2c3Jj
LCBmc3JjOiBmc3JjfSk7Cit9CisKK3ZhciB3b3JkTmR4ID0gMDsKKworZnVuY3Rpb24gdGVzdE5l
eHRXb3JkKCkgeworICBpZiAod29yZE5keCA+PSByZXNlcnZlZFdvcmRzLmxlbmd0aCkgeworICAg
IGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKyAgdGVzdFdvcmQocmVzZXJ2ZWRXb3Jk
c1t3b3JkTmR4XSk7CisgICsrd29yZE5keDsKKyAgc2V0VGltZW91dCh0ZXN0TmV4dFdvcmQsIDAp
OworfQordGVzdE5leHRXb3JkKCk7CisKK2Z1bmN0aW9uIHRlc3RXb3JkKHdvcmQpIHsKKyAgZGVi
dWcoIiIpOworICBkZWJ1ZygidGVzdGluZzogIiArIHdvcmQpOworCisgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBzcmMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHZzID0gc3JjW2lpXS52c3JjLnJl
cGxhY2UoL1wkcmVwbGFjZU1lL2csIHdvcmQpOworICAgIHZhciBmcyA9IHNyY1tpaV0uZnNyYy5y
ZXBsYWNlKC9cJHJlcGxhY2VNZS9nLCB3b3JkKTsKKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsK
KyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbShnbCwgdnMsIGZzLCBmdW5jdGlvbiht
c2cpIHsKKyAgICAgIC8vZGVidWcobXNnKTsKKyAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB9
LCB0cnVlKTsKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgdGVzdEZhaWxlZCgic2hhZGVyIHdp
dGg6ICciICsgd29yZCArICInIGNvbXBpbGVkIGV2ZW4gdGhvdWdoIGl0IHNob3VsZCBub3QiKTsK
KyAgICB9IGVsc2UgeworICAgICAgdGVzdFBhc3NlZCgic2hhZGVyIHdpdGg6ICciICsgd29yZCAr
ICInIGNvcnJlY3RseSBmYWlsZWQgdG8gY29tcGlsZSIpOworICAgIH0KKyAgICBpZiAocHJvZ3Jh
bSkgeworICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB9CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gR0wgZXJyb3JzIik7
CisgIH0KK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1zaG9ydC1j
aXJjdWl0aW5nLW9wZXJhdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXNob3J0LWNp
cmN1aXRpbmctb3BlcmF0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1NjQ5YWE4Mzk5OTRkMDVmOTMy
ZmI3OTJkOWJhZDhlMjkwZDk3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC1zaG9ydC1jaXJjdWl0aW5nLW9wZXJhdG9ycy5odG1sCkBAIC0wLDAgKzEsMTU2IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBzaG9ydC1jaXJjdWl0IGV2YWx1YXRpb248L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgor
Cis8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgV2ViR0wgU2hhZGVy
cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKzwhLS0gUGFzcyB0
aHJvdWdoIFNoYWRlcnMgLS0+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyMCIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorLyogUEFTUy1USFJPVUdIIFZFUlRFWCBTSEFERVIgKi8KK2F0dHJpYnV0ZSB2
ZWM0IHZQb3NpdGlvbjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3Np
dGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyMCIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CisvKiBQQVNTLVRIUk9VR0ggRlJBR01FTlQgU0hBREVSICovCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2UGFzc1Rocm91Z2g7CisKK3ZvaWQg
bWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdlBhc3NUaHJvdWdoOworfQorPC9zY3JpcHQ+
CisKKzwhLS0gYmFzaWMgY29uZGl0b25hbCBzaG9ydCBjaXJjdWl0IFNoYWRlcnMgLS0+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyMSIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZl
YzQgdlBvc2l0aW9uOwordmFyeWluZyB2ZWM0IHZQYXNzVGhyb3VnaDsKKwordm9pZCBtYWluKCkK
K3sKKyAgICBpbnQgeCA9IDE7CisgICAgJCh2YXJpYWJsZXMpCisKKyAgICBpZiAoJChjb25kaXRp
b24pKQorICAgIHsgLypkbyBub3RoaW5nKi8gfQorCisgICAgLyogaWYgeCB3YXMgdW5tb2RpZmll
ZCByZXR1cm4gZ3JlZW4sIGVsc2UgcmV0dXJuIHJlZCAqLworICAgIHZQYXNzVGhyb3VnaCA9ICh4
ID09IDEpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7CisgICAgZ2xfUG9z
aXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlcjEi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K3ZvaWQgbWFpbigpCit7CisgICAgaW50IHggPSAxOworICAgICQodmFyaWFibGVzKQorCisgICAg
aWYgKCQoY29uZGl0aW9uKSkKKyAgICB7IC8qZG8gbm90aGluZyovIH0KKworICAgIGdsX0ZyYWdD
b2xvciA9ICh4ID09IDEpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7Cit9
Cis8L3NjcmlwdD4KKworPCEtLSBNYWluIGJvZHkgb2YgdGhlIFdlYmdsIHByb2dyYW0gLS0+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworCit3dHUuc2V0dXBV
bml0UXVhZChnbCwgWzAsIDFdKTsKKwordmFyIHNoYWRlclRlbXBsYXRlcyA9IFsKKyAgICB7IHZz
OiAidnNoYWRlcjEiLCBmczogImZzaGFkZXIwIiB9LCAvLyBiYXNpYyB2ZXJ0ZXggc2hvcnQtY2ly
Y3VpdCB0ZXN0CisgICAgeyB2czogInZzaGFkZXIwIiwgZnM6ICJmc2hhZGVyMSIgfSwgLy8gYmFz
aWMgZnJhZ21lbnQgc2hvcnQtY2lyY3VpdCB0ZXN0CitdOworCisvKiByZXBsYWNlIHRoZSBuYW1l
cyBvZiB0aGUgc2hhZGVycyBpbiB0aGUgdGVtcGF0ZSB2YXJpYWJsZXMgd2l0aAorICogdGhlIHNo
YWRlcnMgdGhlbXNlbHZlcyAqLworZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlclRlbXBsYXRl
cy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgdGVtcGxhdGUgPSBzaGFkZXJUZW1wbGF0ZXNbaWld
OworICAgIHRlbXBsYXRlLnZzID0gd3R1LmdldFNjcmlwdCh0ZW1wbGF0ZS52cyk7CisgICAgdGVt
cGxhdGUuZnMgPSB3dHUuZ2V0U2NyaXB0KHRlbXBsYXRlLmZzKTsKK30KKworLyogZGVmaW5lIHRo
ZSBjb25kaXRvbiB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgc2hhZGVycy4gSWYgYWRkaXRpb25h
bAorICogdmFyaWFibGVzIGFyZSBuZWVkZWQgdGhhdCBhcmUgbm90IHByZXNlbnQgaSB0aGUgc2hh
ZGVyIHRoZXkgbXkgYmUKKyAqIGRlZmluZWQgaW4gdGhlIHZhcmlhYmxlcyB2YXJpYWJsZSAqLwor
dmFyIHRlc3RzID0gWworICAgIHsgY29uZGl0aW9uOiAidHJ1ZSB8fCAoeCA9IDApID09IDEiLCB2
YXJpYWJsZXM6ICIiIH0sIC8qIHRlc3QgYmFzaWMgJ29yJyBzaG9ydCBjaXJjdWl0ICovCisgICAg
eyBjb25kaXRpb246ICJmYWxzZSAmJiAoeCA9IDApID09IDEiLCB2YXJpYWJsZXM6ICIiIH0sIC8q
IHRlc3QgYmFzaWMgJ2FuZCcgc2hvcnQgY2lyY3VpdCAqLworICAgIHsgY29uZGl0aW9uOiAiKGog
PT0gMyAmJiBqID09IGspIHx8IChqID4gKHggPSAwKSkiLCB2YXJpYWJsZXM6ICJpbnQgaiA9IDM7
XG5pbnQgayA9IDM7IiB9LCAvKiB0ZXN0IGJhc2ljICdvcicgc2hvcnQgY2lyY3VpdCB3aXRoIGFj
dHVhbCBjb25kaXRpb24gKi8KKyAgICB7IGNvbmRpdGlvbjogIihqID09IDMgJiYgaiA9PSBrKSAm
JiAoaiA+ICh4ID0gMCkpIiwgdmFyaWFibGVzOiAiaW50IGogPSAzO1xuaW50IGsgPSA0OyIgfSwg
LyogdGVzdCBiYXNpYyAnYW5kJyBzaG9ydCBjaXJjdWl0IHdpdGggYWN0dWFsIGNvbmRpdGlvbiAq
LworICAgIHsgY29uZGl0aW9uOiAiKGogKyAzID4gayAmJiAoKGogPCAxMCkgfHwgKHggKyA1ID4g
aiArICh4ID0gMCkpKSB8fCAoIHggPSAwICkgPT0gNykiLCB2YXJpYWJsZXM6ICJpbnQgaiA9IDU7
XG5pbnQgayA9IDM7IiB9LCAvKiBjb21wbGV4IHRlc3QgKi8KKyAgICB7IGNvbmRpdGlvbjogImog
KyAxID09IDYgPyB4ID09IDEgfHwgaiA+ICh4ID0gMCkgOiAoeCA9IDApID09IDEgJiYgKHggPSAw
KSA8PSAxIiwgdmFyaWFibGVzOiAiaW50IGogPSA1OyIgfSwgLyogbmVzdGVkIHdpdGggdGVybmFy
eSBvcGVyYXRvciAqLworICAgIHsgY29uZGl0aW9uOiAidHJ1ZSAmJiAodHJ1ZSB8fCAoeCA9IDAp
ID09IDEpIiwgdmFyaWFibGVzOiAiIiB9LCAvKiB0ZXN0IHVuZm9sZCBzaG9ydCBjaXJjdWl0IHVw
ZGF0ZSBvcmRlciBjb3JyZWN0bmVzcyAqLworXTsKKworZnVuY3Rpb24gdGVzdFNob3J0Q2lyY3Vp
dCh0ZXN0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIHNob3J0IGNpcmN1
aXQgY29uZGl0aW9uOiAiICsgdGVzdC5jb25kaXRpb24pOworCisgICAgLyogU2V0dGluZyBjbGVh
ciBjb2xvciB0byBibHVlICovCisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMS4wLCAxLjAp
OworCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlclRlbXBsYXRlcy5sZW5ndGg7ICsr
aWkpIHsKKworICAgICAgICAvKiBjbGVhciB0aGUgc2NyZWVuIHNvIHRoYXQgc3Vic2VxdWVudCB0
ZXN0cyBkb24ndCBjb25mbGljdCAqLworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICAgICAgdmFyIHRlbXBsYXRlID0gc2hhZGVyVGVtcGxhdGVzW2lpXTsKKworICAg
ICAgICB2YXIgdnMgPSB3dHUucmVwbGFjZVBhcmFtcyh0ZW1wbGF0ZS52cywgdGVzdCk7CisgICAg
ICAgIHZhciBmcyA9IHd0dS5yZXBsYWNlUGFyYW1zKHRlbXBsYXRlLmZzLCB0ZXN0KTsKKworICAg
ICAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFt2cywgZnNdLCBbJ3ZQb3Np
dGlvbiddLCB1bmRlZmluZWQsIHRydWUpOworCisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwg
InNob3VsZCBiZSBncmVlbiIsIDApOworCisgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3Jh
bSk7CisKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91
bGQgYmUgbm8gR0wgZXJyb3JzIik7CisgICAgfQorfQorCit2YXIgdGVzdE5keCA9IDA7CitmdW5j
dGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICB0ZXN0U2hvcnRDaXJjdWl0KHRlc3RzW3Rlc3ROZHgr
K10pOworICAgIGlmICh0ZXN0TmR4ID49IHRlc3RzLmxlbmd0aCkgeworICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7
CisgICAgfQorfQorCitydW5OZXh0VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtc2ltaWxhci11bmlmb3JtLWFycmF5
LW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtc2ltaWxhci11bmlmb3JtLWFycmF5
LW5hbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk2YWI0MDU1YzdhZDA5Y2I0MzQ4ODNjMGRkY2Q4YmNk
ZWU0NTVmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC1zaW1pbGFy
LXVuaWZvcm0tYXJyYXktbmFtZXMuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBzaW1pbGFyIG5h
bWVzIGlzc3VlPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKworPHNjcmlwdCBp
ZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9w
b3NpdGlvbjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9u
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyMSIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1X25hbWVD
b2xsaXNpb25bMl07Cit1bmlmb3JtIHZlYzQgdV9uYW1lQ29sbGlzaW9uMlsyXTsKK3VuaWZvcm0g
dmVjNCB1X25hbWVbMl07Cit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHVf
bmFtZUNvbGxpc2lvblswXSArIHVfbmFtZUNvbGxpc2lvbjJbMF0gKyB1X25hbWVbMF07Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSB2ZWM0IHVfbmFtZUNvbGxpc2lv
bjJbMl07Cit1bmlmb3JtIHZlYzQgdV9uYW1lQ29sbGlzaW9uWzJdOwordW5pZm9ybSB2ZWM0IHVf
bmFtZVsyXTsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdV9uYW1lQ29s
bGlzaW9uMlswXSArIHVfbmFtZUNvbGxpc2lvblswXSArIHVfbmFtZVswXTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnNoYWRlcjMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgdV9uYW1lQ29sbGlzaW9uWzJdOwor
dW5pZm9ybSB2ZWM0IHVfbmFtZVsyXTsKK3VuaWZvcm0gdmVjNCB1X25hbWVDb2xsaXNpb24yWzJd
Owordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB1X25hbWVDb2xsaXNpb25b
MF0gKyB1X25hbWVbMF0gKyB1X25hbWVDb2xsaXNpb24yWzBdOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJmc2hhZGVyNCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1X25hbWVDb2xsaXNpb24yWzJdOwordW5pZm9y
bSB2ZWM0IHVfbmFtZVsyXTsKK3VuaWZvcm0gdmVjNCB1X25hbWVDb2xsaXNpb25bMl07Cit2b2lk
IG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHVfbmFtZUNvbGxpc2lvbjJbMF0gKyB1
X25hbWVbMF0gKyB1X25hbWVDb2xsaXNpb25bMF07Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXI1IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwordW5pZm9ybSB2ZWM0IHVfbmFtZVsyXTsKK3VuaWZvcm0gdmVjNCB1X25hbWVDb2xs
aXNpb25bMl07Cit1bmlmb3JtIHZlYzQgdV9uYW1lQ29sbGlzaW9uMlsyXTsKK3ZvaWQgbWFpbih2
b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdV9uYW1lWzBdICsgdV9uYW1lQ29sbGlzaW9uWzBd
ICsgdV9uYW1lQ29sbGlzaW9uMlswXTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
cjYiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit1bmlmb3JtIHZlYzQgdV9uYW1lWzJdOwordW5pZm9ybSB2ZWM0IHVfbmFtZUNvbGxpc2lvbjJb
Ml07Cit1bmlmb3JtIHZlYzQgdV9uYW1lQ29sbGlzaW9uWzJdOwordm9pZCBtYWluKHZvaWQpIHsK
KyAgICBnbF9GcmFnQ29sb3IgPSB1X25hbWVbMF0gKyB1X25hbWVDb2xsaXNpb24yWzBdICsgdV9u
YW1lQ29sbGlzaW9uWzBdOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOword3R1LnNldHVwVW5pdFF1
YWQoZ2wpOworCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgNjsgKytpaSkgeworICB2YXIgcHJvZ3Jh
bSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIiArIChpaSArIDEp
XSwgWyJhX3Bvc2l0aW9uIl0pOworICB2YXIgbG9jMSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidV9uYW1lWzBdIik7CisgIHZhciBsb2MyID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ1X25hbWVDb2xsaXNpb25bMF0iKTsKKyAgdmFyIGxvYzMgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfbmFtZUNvbGxpc2lvbjJbMF0iKTsKKyAgZ2wudW5pZm9y
bTRmdihsb2MxLCBbMSwgMCwgMCwgMF0pOworICBnbC51bmlmb3JtNGZ2KGxvYzIsIFswLCAxLCAw
LCAwXSk7CisgIGdsLnVuaWZvcm00ZnYobG9jMywgWzAsIDAsIDAsIDFdKTsKKyAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAyNTUsIDAs
IDI1NV0sICJTaG91bGQgYmUgeWVsbG93Iik7Cit9CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC10b28tbWFueS11bmlmb3Jtcy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYWRlci13aXRoLXRvby1tYW55LXVuaWZvcm1zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVlODdm
OWM4NTRmNjgwMjUyOTMwM2Y4OTYwNDgxNGQ5YWNkZDQwYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2ds
c2wvbWlzYy9zaGFkZXItd2l0aC10b28tbWFueS11bmlmb3Jtcy5odG1sCkBAIC0wLDAgKzEsMTIz
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUt
dGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFp
bigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyLW1heCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsKK3VuaWZvcm0gdmVjNCB1X2NvbG9yWyQobWF4VW5pZm9ybVZlY3Rv
cnMpXTsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCB2ID0gdmVjNCgwLCAwLCAwLCAwKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8ICQobWF4VW5pZm9ybVZlY3RvcnMpOyArK2kpIHsKKyAgICAg
ICAgdiA9IHYgKyB2ZWM0KHVfY29sb3JbaV0pOworICAgIH0KKyAgICBnbF9Qb3NpdGlvbiA9IGFf
cG9zaXRpb24gKyB2OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJmc2hhZGVyLW1heCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1X2NvbG9yWyQobWF4VW5pZm9y
bVZlY3RvcnMpXTsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCB2ID0gdmVjNCgwLCAwLCAwLCAw
KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8ICQobWF4VW5pZm9ybVZlY3RvcnMpOyArK2kpIHsK
KyAgICAgICAgdiA9IHYgKyB2ZWM0KHVfY29sb3JbaV0pOworICAgIH0KKyAgICBnbF9GcmFnQ29s
b3IgPSB2OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oImNoZWNrcyBzaGFkZXIgd2l0aCB0b28gbWFueSB1bmlmb3JtcyBmYWlscyIpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2
YXIgbWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfRlJB
R01FTlRfVU5JRk9STV9WRUNUT1JTKTsKK3ZhciBtYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IGds
LmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyk7CisKKy8vIFVwIHRv
IDIgdW5pZm9ybSB2ZWN0b3IgcmVnaXN0ZXJzIG1heSBiZSBzcGVudCBmb3IgbGl0ZXJhbCBjb25z
dGFudHMgaW4KKy8vIHZzaGFkZXItbWF4IG9yIGZzaGFkZXItbWF4IGNvZGUuIE9uZSB2ZWN0b3Ig
cm93IGlzIHVzZWQgZm9yIHRoZSB2ZWM0LCBhbmQKKy8vIGFub3RoZXIgbWF5IGJlIHVzZWQgZm9y
IGludGVnZXIgY29uc3RhbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdHJlYXRlZAorLy8gaW50
ZXJuYWxseSBhcyBmbG9hdHMgYW5kIGFyZSBwYWNrYWJsZSB0byB0aGUgc3BhY2Ugb2Ygb25lIHJv
dy4gVGhpcyBpcworLy8gYWNjb3JkaW5nIHRvIHRoZSBHTFNMIEVTIHZhcmlhYmxlIHBhY2tpbmcg
YWxnb3JpdGhtIGRldGFpbGVkIGluIFNlY3Rpb24gNyBvZgorLy8gQXBwZW5kaXggQSBvZiB0aGUg
R0xTTCBFUyBTcGVjaWZpY2F0aW9uIDEwLjAuMTcuCit2YXIgbWF4VmVjdG9yU3RvcmFnZVVzZWRG
b3JMaXRlcmFscyA9IDI7CisKK3ZhciB0ZXN0cyA9IFsKKyB7IGRlc2M6ICJ1c2luZyBhbGwgdW5p
Zm9ybXMgaW4gdmVydGV4IHNoYWRlciBzaG91bGQgc3VjY2VlZCIsCisgICBtYXhVbmlmb3JtVmVj
dG9yczogbWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgLSBtYXhWZWN0b3JTdG9yYWdlVXNlZEZvckxp
dGVyYWxzLAorICAgdlNoYWRlcjogInZzaGFkZXItbWF4IiwKKyAgIGZTaGFkZXI6ICJmc2hhZGVy
IiwKKyAgIHN1Y2Nlc3M6IHRydWUsCisgfSwKKyB7IGRlc2M6ICJ1c2luZyB0b28gbWFueSB1bmlm
b3JtcyBpbiB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBmYWlsIiwKKyAgIG1heFVuaWZvcm1WZWN0b3Jz
OiBtYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyArIDEsCisgICB2U2hhZGVyOiAidnNoYWRlci1tYXgi
LAorICAgZlNoYWRlcjogImZzaGFkZXIiLAorICAgY29sb3I6IFswLCAxLCAwLCAxXSwKKyAgIHN1
Y2Nlc3M6IGZhbHNlLAorIH0sCisgeyBkZXNjOiAidXNpbmcgYWxsIHVuaWZvcm1zIGluIGZyYWdt
ZW50IHNoYWRlciBzaG91bGQgc3VjY2VlZCIsCisgICBtYXhVbmlmb3JtVmVjdG9yczogbWF4RnJh
Z21lbnRVbmlmb3JtVmVjdG9ycyAtIG1heFZlY3RvclN0b3JhZ2VVc2VkRm9yTGl0ZXJhbHMsCisg
ICB2U2hhZGVyOiAidnNoYWRlciIsCisgICBmU2hhZGVyOiAiZnNoYWRlci1tYXgiLAorICAgc3Vj
Y2VzczogdHJ1ZSwKKyB9LAorIHsgZGVzYzogInVzaW5nIHRvbyBtYW55IHVuaWZvcm1zIGluIGZy
YWdtZW50IHNoYWRlciBzaG91bGQgZmFpbCIsCisgICBtYXhVbmlmb3JtVmVjdG9yczogbWF4RnJh
Z21lbnRVbmlmb3JtVmVjdG9ycyArIDEsCisgICB2U2hhZGVyOiAidnNoYWRlciIsCisgICBmU2hh
ZGVyOiAiZnNoYWRlci1tYXgiLAorICAgY29sb3I6IFswLCAxLCAwLCAxXSwKKyAgIHN1Y2Nlc3M6
IGZhbHNlLAorIH0sCitdOworCit2YXIgZ2xzbFRlc3RzID0gW107CisKK2ZvciAodmFyIGlpID0g
MDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgdmFyIHRlc3QgPSB0ZXN0c1tpaV07Cisg
IHZhciB2U3JjID0gd3R1LnJlcGxhY2VQYXJhbXMod3R1LmdldFNjcmlwdCh0ZXN0LnZTaGFkZXIp
LCB0ZXN0KTsKKyAgdmFyIGZTcmMgPSB3dHUucmVwbGFjZVBhcmFtcyh3dHUuZ2V0U2NyaXB0KHRl
c3QuZlNoYWRlciksIHRlc3QpOworICBnbHNsVGVzdHMucHVzaCh7CisgICAgdlNoYWRlclNvdXJj
ZTogdlNyYywKKyAgICBmU2hhZGVyU291cmNlOiBmU3JjLAorICAgIGxpbmtTdWNjZXNzOiB0ZXN0
LnN1Y2Nlc3MsCisgICAgcGFzc01zZzogJ3NoYWRlciAnICsgdGVzdC5kZXNjLAorICB9KTsKK30K
KworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKGdsc2xUZXN0cyk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXR3by1pbml0aWFsaXplci10eXBlcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL3NoYWRlci13aXRoLXR3by1pbml0aWFsaXplci10eXBlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhYzUzYjA4ZDhjMTcwOGFiZjFmY2JhNjZlMGEwN2Y1OGVkYjNjYWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdHdvLWluaXRpYWxpemVyLXR5cGVzLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBm
cmFnbWVudCBzaGFkZXIgd2l0aCBkaWZmZXJlbnQgaW5pdGlhbGl6ZXIgdHlwZXMgc2hvdWxkIHN1
Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgZmxv
YXQgdGVzdDFbNF0sIHRlc3QyOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLDEuMCwwLjAs
MS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3Jt
YW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13
aXRoLXVuZGVmaW5lZC1wcmVwcm9jZXNzb3Itc3ltYm9sLmZyYWcuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
aGFkZXItd2l0aC11bmRlZmluZWQtcHJlcHJvY2Vzc29yLXN5bWJvbC5mcmFnLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDY3ODNiY2ZkOGNjYmM0OTllMDc3ZDhjYjRkYTAzMmNiOGEwMzg2ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC11bmRlZmluZWQtcHJlcHJvY2Vzc29yLXN5
bWJvbC5mcmFnLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgKDMuNCkgdW5kZWZpbmVkIHByZXByb2Nlc3Nv
ciBzeW1ib2wgc2hvdWxkIGZhaWwKKyNpZiBVTkRFRklORURfRk9PCisgIC8vIGFjY29yZGluZyB0
byBFUyBHTFNMIHNwZWMgMy40IHVuZGVmaW5lZCBzeW1ib2xzIHNob3VsZCBmYWlsLgorI2Vsc2UK
KyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMC4wLDAuMCwwLjAsMS4wKTsKKyAgfQorI2VuZGlmCis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC11bmlmb3JtLWluLWxv
b3AtY29uZGl0aW9uLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC11bmlmb3JtLWlu
LWxvb3AtY29uZGl0aW9uLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZThkMzA2N2I3YTBjZGE3MzBh
NDk2MjczNjUxM2VkYzcyNGJjYjY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRl
ci13aXRoLXVuaWZvcm0taW4tbG9vcC1jb25kaXRpb24udmVydC5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10
ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgd2l0
aCB1bmlmb3JtIHZhcmlhYmxlIGluIGxvb3AgY29uZGl0aW9uIHNob3VsZCBmYWlsCisvLyBodHRw
Oi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8jU1VQUE9SVEVE
X0dMU0xfQ09OU1RSVUNUUwordW5pZm9ybSBpbnQgdV9udW1JdGVyYXRpb25zOworYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBmbG9hdCBjb3VudCA9IDAu
MDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHVfbnVtSXRlcmF0aW9uczsgaSsrKSB7CisgICAg
ICAgIGNvdW50ICs9IDEuMDsKKyAgICB9CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uICsg
dmVjNChjb3VudCwgY291bnQsIGNvdW50LCBjb3VudCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZWMyLXJldHVybi12YWx1ZS5mcmFnLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVjMi1yZXR1cm4tdmFsdWUuZnJhZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1ZjU4NjA3MDc2YWYwNjkxMjI5NzRjYjhjYjAwZDIwNTgwN2I3MTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVjMi1yZXR1cm4tdmFsdWUuZnJh
Zy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xz
bC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorLy8gU2hhZGVyIHdpdGggdmVjMiByZXR1cm4gdmFsdWUgZnJvbSBmdW5jdGlvbiBjYWxsIHNo
b3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmVjMiBmdW5jdGlvblJl
c3VsdCgpOworCit2b2lkIG1haW4oKQoreworICAgIHZlYzIgciA9IGZ1bmN0aW9uUmVzdWx0KCk7
CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChyLngsIHIueSwgci54LCByLnkpOworfQorCit2ZWMy
IGZ1bmN0aW9uUmVzdWx0KCkKK3sKKyAgICByZXR1cm4gdmVjMigxLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVu
VGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZWMzLXJldHVy
bi12YWx1ZS5mcmFnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVjMy1yZXR1cm4tdmFs
dWUuZnJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNWE2MGM2YzQzZmQ0NDIwYTNmZmE0MzM2MDVkNTRi
YjAzZTY5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVjMy1y
ZXR1cm4tdmFsdWUuZnJhZy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gU2hhZGVyIHdpdGggdmVjMyByZXR1cm4gdmFsdWUgZnJvbSBm
dW5jdGlvbiBjYWxsIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
dmVjMyBmdW5jdGlvblJlc3VsdCgpOworCit2b2lkIG1haW4oKQoreworICAgIHZlYzMgciA9IGZ1
bmN0aW9uUmVzdWx0KCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChyLngsIHIueSwgci56LCBy
LngpOworfQorCit2ZWMzIGZ1bmN0aW9uUmVzdWx0KCkKK3sKKyAgICByZXR1cm4gdmVjMygxLjAs
IDEuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3No
YWRlci13aXRoLXZlYzQtcmV0dXJuLXZhbHVlLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC12ZWM0LXJldHVybi12YWx1ZS5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkwMDFhMGY4Mzgy
Mjc4MjNhNDAzNWUwNjc3ZGExODliZTU1MTg4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlz
Yy9zaGFkZXItd2l0aC12ZWM0LXJldHVybi12YWx1ZS5mcmFnLmh0bWwKQEAgLTAsMCArMSw0NCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBTaGFkZXIgd2l0aCB2ZWM0
IHJldHVybiB2YWx1ZSBmcm9tIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCit2ZWM0IGZ1bmN0aW9uUmVzdWx0KCk7CisKK3ZvaWQgbWFpbigp
Cit7CisgICAgdmVjNCByID0gZnVuY3Rpb25SZXN1bHQoKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHIueCwgci55LCByLnosIHIudyk7Cit9CisKK3ZlYzQgZnVuY3Rpb25SZXN1bHQoKQorewor
ICAgIHJldHVybiB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZWM0LXZlYzMtdmVjNC1jb25kaXRp
b25hbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXZlYzQtdmVjMy12ZWM0LWNvbmRpdGlv
bmFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNjMGU4ZWE2MWUyNzk0NzE1MTkzM2E4OTFhMmFiMTgwYzJm
MGEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZWM0LXZlYzMt
dmVjNC1jb25kaXRpb25hbC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHRoYXQgdmVjNC0+dmVjMy0+dmVj
NCBjb25kaXRpb25hbCBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1
bmlmb3JtIGZsb2F0IHg7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
KHggPiAwLjAgPyB2ZWM0KDEuMCwgMS4wLCAxLjAsIDAuMCkgOiB2ZWM0KDAuMSwgMC4xLCAwLjEs
IDAuMCkpLnh5eiwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYWRlci13aXRoLXZlcnNpb24tMTAwLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aC12ZXJzaW9uLTEwMC5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ4OGE3ZjY4OTQyOTFmZjYz
YzU5OTk4ZGE0YWI3MTQwMzJlYTdlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXItd2l0aC12ZXJzaW9uLTEwMC5mcmFnLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ0ZXh0L3Nv
bWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBmcmFnbWVudCBzaGFkZXIgdGhhdCB1c2VzIF9f
VkVSU0lPTl9fPT0xMDAgc2hvdWxkIHN1Y2NlZWQKKyNpZiBfX1ZFUlNJT05fXyA9PSAxMDAKKyAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMC4wLDAuMCwwLjAsMS4wKTsKKyAgfQorI2Vsc2UKKyAgZm9vCisjZW5k
aWYKKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRl
c3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0
aC12ZXJzaW9uLTEwMC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVyc2lvbi0x
MDAudmVydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMDM1Nzk3MWY0MGM2ZGNiYmI4NjViMTIyYTNhZjAy
MzdiNDkzMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtdmVyc2lv
bi0xMDAudmVydC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgdXNlcyB0aGUgI3ZlcnNpb24gMTAwIGRpcmVjdGl2
ZSBzaG91bGQgc3VjY2VlZAorI3ZlcnNpb24gMTAwCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247
Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXZlcnNpb24t
MTIwLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZXJzaW9uLTEyMC52ZXJ0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzFiYzZkN2QwNzFjZWQ3ZGIwZjc2ZWI2Mjc3NDVjMmNlZWY1ODdkNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZXJzaW9uLTEyMC52ZXJ0
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNs
LWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
Ly8gdmVydGV4IHNoYWRlciB1c2VzIHRoZSAjdmVyc2lvbiBub3QgMTAwIGRpcmVjdGl2ZSBzaG91
bGQgZmFpbAorI3ZlcnNpb24gMTIwCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1h
aW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXZlcnNpb24tMTMwLnZlcnQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZXJzaW9uLTEzMC52ZXJ0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjk4M2M5MmY5ZGEyMzgzZTA4NWE5ZmFhMzhkYWZiMzljMThkNWJkNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC12ZXJzaW9uLTEzMC52ZXJ0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRl
eFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4
IHNoYWRlciB1c2VzIHRoZSAjdmVyc2lvbiBub3QgMTAwIGRpcmVjdGl2ZSBzaG91bGQgZmFpbAor
I3ZlcnNpb24gMTMwCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQorewor
ICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXdlYmdsLWlkZW50aWZpZXIudmVydC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL3NoYWRlci13aXRoLXdlYmdsLWlkZW50aWZpZXIudmVydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmExYzBhZjlkOWJhM2M5ZGUxZWZjOTYxYzNlZmRhNDZkMmQyOTc2MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtd2ViZ2wtaWRlbnRpZmllci52ZXJ0Lmh0
bWwKQEAgLTAsMCArMSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9
InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8g
dmVydGV4IHNoYWRlciB0aGF0IHVzZXMgd2ViZ2wgaWRlbnRpZmllciBzaG91bGQgZmFpbAorYXR0
cmlidXRlIHZlYzQgd2ViZ2xfdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHdlYmdsX3ZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC13aGlsZS1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hh
ZGVyLXdpdGgtd2hpbGUtbG9vcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MmY1NTU0MWVkYzQ5NjhjODA0
MjQ1YTIwMjU5ZjQ4OTg2ZmMxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVy
LXdpdGgtd2hpbGUtbG9vcC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggd2hpbGUgbG9vcCBzaG91
bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgIGludCBr
ID0gMDsKKyAgd2hpbGUgKGsgPCA1KSB7CisgICAgaysrOworICB9CisgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoZmxvYXQoaykpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21p
c2Mvc2hhZGVyLXdpdGhvdXQtcHJlY2lzaW9uLmZyYWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXIt
d2l0aG91dC1wcmVjaXNpb24uZnJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NTQzZTIxMTk0YWQ5MGM1
ZTdjY2E1MmJhODQyMmRmMDc2YTM5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hh
ZGVyLXdpdGhvdXQtcHJlY2lzaW9uLmZyYWcuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIGZyYWdtZW50IHNoYWRlciB3aXRob3V0IHBy
ZWNpc2lvbiBzaG91bGQgZmFpbAordW5pZm9ybSB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9zaGFkZXJzLXdpdGgtY29uc3RhbnQtZXhwcmVzc2lvbi1sb29wLWNv
bmRpdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXJzLXdpdGgtY29uc3RhbnQtZXhwcmVzc2lv
bi1sb29wLWNvbmRpdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDZkZTg3ZWY4M2NiNjVjNjNkMjJk
ODJiYzllNzQzYWVkZTZkOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlcnMt
d2l0aC1jb25zdGFudC1leHByZXNzaW9uLWxvb3AtY29uZGl0aW9ucy5odG1sCkBAIC0wLDAgKzEs
MTE1IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVh
dHVyZS10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hh
ZGVyTGl0ZXJhbExvb3BDb25kaXRpb24iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2Ny
aXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgNSArIDU7IGkrKykgeyB9CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bv
c2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckxpdGVyYWxM
b29wQ29uZGl0aW9uIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lk
IG1haW4oKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNSArIDU7IGkrKykgeyB9CisgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0
ZXhTaGFkZXJDb25zdFZhckxvb3BDb25kaXRpb24iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1q
YXZhc2NyaXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1haW4oKQorewor
ICAgIC8vIEV4cGxpY2l0bHkgY29uc3RhbnQgdmFyaWFibGVzIGNhbiBiZSBwYXJ0IG9mIGEgY29u
c3RhbnQgZXhwcmVzc2lvbgorICAgIGNvbnN0IGludCBjb25zdFZhciA9IDU7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA1ICsgY29uc3RWYXI7IGkrKykgeyB9CisgICAgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckNvbnN0
VmFyTG9vcENvbmRpdGlvbiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgor
dm9pZCBtYWluKCkKK3sKKyAgICAvLyBFeHBsaWNpdGx5IGNvbnN0YW50IHZhcmlhYmxlcyBjYW4g
YmUgcGFydCBvZiBhIGNvbnN0YW50IGV4cHJlc3Npb24KKyAgICBjb25zdCBpbnQgY29uc3RWYXIg
PSA1OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RWYXIgKyA1OyBpKyspIHsgfQorICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVy
dGV4U2hhZGVyTm9uQ29uc3RWYXJMb29wQ29uZGl0aW9uIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkK
K3sKKyAgICAvLyBEZXNwaXRlIGFzc2lnbmluZyBhIGNvbnN0YW50IGFuZCBub3QgbW9kaWZ5aW5n
IGl0LCBub25Db25zdFZhciBpcyBub3Qgc2VtYW50aWNhbGx5IGEgY29uc3RhbnQgZXhwcmVzc2lv
bgorICAgIGludCBub25Db25zdFZhciA9IDEwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9u
Q29uc3RWYXI7IGkrKykgeyB9CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlck5vbkNvbnN0VmFyTG9vcENvbmRpdGlv
biIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgordm9pZCBtYWluKCkKK3sK
KyAgICAvLyBEZXNwaXRlIGFzc2lnbmluZyBhIGNvbnN0YW50IGFuZCBub3QgbW9kaWZ5aW5nIGl0
LCBub25Db25zdFZhciBpcyBub3Qgc2VtYW50aWNhbGx5IGEgY29uc3RhbnQgZXhwcmVzc2lvbgor
ICAgIGludCBub25Db25zdFZhciA9IDEwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9uQ29u
c3RWYXI7IGkrKykgeyB9CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
Cit2YXIgdGVzdHMgPSBbXTsKK3Rlc3RzLnB1c2goeworICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5n
ZXRTY3JpcHQoInZlcnRleFNoYWRlckxpdGVyYWxMb29wQ29uZGl0aW9uIiksCisgICAgdlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlclNvdXJjZTogd3R1LmdldFNjcmlwdCgiZnJhZ21l
bnRTaGFkZXJMaXRlcmFsTG9vcENvbmRpdGlvbiIpLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJTaGFkZXJzIHdpdGggbGl0
ZXJhbHMgaW4gdGhlIGxvb3AgY29uZGl0aW9uIHNob3VsZCBjb21waWxlIGFuZCBsaW5rLiIsCit9
KTsKK3Rlc3RzLnB1c2goeworICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoInZlcnRl
eFNoYWRlckNvbnN0VmFyTG9vcENvbmRpdGlvbiIpLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50U2hhZGVyQ29uc3RW
YXJMb29wQ29uZGl0aW9uIiksCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1
Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogIlNoYWRlcnMgd2l0aCBjb25zdGFudCB2YXJpYWJs
ZXMgaW4gdGhlIGxvb3AgY29uZGl0aW9uIHNob3VsZCBjb21waWxlIGFuZCBsaW5rLiIsCit9KTsK
K3Rlc3RzLnB1c2goeworICAgIHZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoInZlcnRleFNo
YWRlck5vbkNvbnN0VmFyTG9vcENvbmRpdGlvbiIpLAorICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxz
ZSwKKyAgICBmU2hhZGVyU291cmNlOiB3dHUuZ2V0U2NyaXB0KCJmcmFnbWVudFNoYWRlckxpdGVy
YWxMb29wQ29uZGl0aW9uIiksCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1
Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJWZXJ0ZXggc2hhZGVyIHdpdGggbm9uLWNvbnN0
IHZhcmlhYmxlIGluIHRoZSBsb29wIGNvbmRpdGlvbiBzaG91bGQgZmFpbC4iLAorfSk7Cit0ZXN0
cy5wdXNoKHsKKyAgICB2U2hhZGVyU291cmNlOiB3dHUuZ2V0U2NyaXB0KCJ2ZXJ0ZXhTaGFkZXJM
aXRlcmFsTG9vcENvbmRpdGlvbiIpLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZT
aGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50U2hhZGVyTm9uQ29uc3RWYXJMb29w
Q29uZGl0aW9uIiksCisgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtTdWNjZXNz
OiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiRnJhZ21lbnQgc2hhZGVyIHdpdGggbm9uLWNvbnN0IHZh
cmlhYmxlIGluIHRoZSBsb29wIGNvbmRpdGlvbiBzaG91bGQgZmFpbC4iLAorfSk7CisKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYWRlcnMtd2l0aC1pbnZhcmlhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVycy13aXRo
LWludmFyaWFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDVkNzhjZWU0OGZhYzdhNzFmYTkyOWY0ZDE3
ZDc0ZTM0MWE5N2EwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlcnMtd2l0aC1p
bnZhcmlhbmNlLmh0bWwKQEAgLTAsMCArMSwzMzIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJWYXJpYW50IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+Cit2YXJ5aW5nIHZlYzQgdl92YXJ5aW5nOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX1BvaW50U2l6ZSA9IDEuMDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZzsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVySW52YXJpYW50IiB0eXBlPSJ0
ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitpbnZhcmlhbnQgdmFyeWluZyB2ZWM0IHZf
dmFyeWluZzsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZzsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyU2VwYXJhdGVJbnZhcmlhbnQi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ZhcnlpbmcgdmVjNCB2X3Zh
cnlpbmc7CitpbnZhcmlhbnQgdl92YXJ5aW5nOworCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bv
c2l0aW9uID0gdl92YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFk
ZXJTZXBhcmF0ZUludmFyaWFudFdyb25nT3JkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1q
YXZhc2NyaXB0Ij4KK2ludmFyaWFudCB2X3Zhcnlpbmc7Cit2YXJ5aW5nIHZlYzQgdl92YXJ5aW5n
OworCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJHbG9iYWxJbnZhcmlhbnQiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKyNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFs
bCkKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9z
aXRpb24gPSB2X3Zhcnlpbmc7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRl
ckludmFyaWFudEdsUG9zaXRpb24iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0
Ij4KK2ludmFyaWFudCBnbF9Qb3NpdGlvbjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoMCwgMCwgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlcnRl
eFNoYWRlckludmFyaWFudEdsUG9pbnRTaXplIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+CitpbnZhcmlhbnQgZ2xfUG9pbnRTaXplOworCit2b2lkIG1haW4oKQoreworICAg
IGdsX1BvaW50U2l6ZSA9IDEuMDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMCk7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyVmFyaWFudCIgdHlwZT0i
dGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJh
Z0NvbG9yID0gdl92YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNo
YWRlckludmFyaWFudCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2ludmFyaWFudCB2YXJ5aW5nIHZlYzQgdl92YXJ5aW5n
OworCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZfdmFyeWluZzsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJTZXBhcmF0ZUludmFyaWFudCIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CitpbnZhcmlhbnQgdl92YXJ5aW5nOworCit2
b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZfdmFyeWluZzsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJTZXBhcmF0ZUludmFyaWFudFdyb25nT3JkZXIi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCitpbnZhcmlhbnQgdl92YXJ5aW5nOwordmFyeWluZyB2ZWM0IHZfdmFyeWluZzsK
Kwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2X3Zhcnlpbmc7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyR2xvYmFsSW52YXJpYW50IiB0eXBlPSJ0
ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisjcHJhZ21hIFNUREdMIGludmFyaWFudChh
bGwpCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWM0IHZfdmFyeWluZzsK
Kwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2X3Zhcnlpbmc7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVySW52YXJpYW50R2xGcmFnQ29vcmQiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK2ludmFyaWFudCBnbF9GcmFnQ29v
cmQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0Nvb3JkOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlclZhcmlhbnRHbEZyYWdDb29y
ZCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSBnbF9GcmFnQ29vcmQ7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZyYWdtZW50U2hhZGVySW52YXJpYW50R2xQb2ludENvb3JkIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+CitpbnZhcmlhbnQgZ2xfUG9pbnRDb29yZDsKKwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGdsX1BvaW50Q29vcmQsIDAuMCwgMC4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJWYXJpYW50R2xQb2lu
dENvb3JkIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4o
KQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZ2xfUG9pbnRDb29yZCwgMC4wLCAwLjApOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlckludmFyaWFudEdsRnJvbnRG
YWNpbmciIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK2ludmFyaWFudCBn
bF9Gcm9udEZhY2luZzsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSBnbF9G
cm9udEZhY2luZyA/IHZlYzQoMSwgMSwgMSwgMSkgOiB2ZWM0KDAsIDAsIDAsIDEpOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlclZhcmlhbnRHbEZyb250RmFjaW5nIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4oKQoreworICAg
IGdsX0ZyYWdDb2xvciA9IGdsX0Zyb250RmFjaW5nID8gdmVjNCgxLCAxLCAxLCAxKSA6IHZlYzQo
MCwgMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisvLyBHTFNMIDEuMC4xNyA0LjMu
NQorInVzZSBzdHJpY3QiOworLy8gU2VlIEdMU0wgRVMgc3BlYyAxLjAuMTcgc2VjdGlvbiA0LjYu
NCAiSW52YXJpYW5jZSBhbmQgbGlua2FnZSIuCit2YXIgY2FzZXMgPSBbCisgIHsKKyAgICB2U2hh
ZGVySWQ6ICJ2ZXJ0ZXhTaGFkZXJWYXJpYW50IiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICBmU2hhZGVySWQ6ICJmcmFnbWVudFNoYWRlckludmFyaWFudCIsCisgICAgZlNoYWRlclN1
Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJ2ZXJ0
ZXggc2hhZGVyIHdpdGggdmFyaWFudCB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCBp
bnZhcmlhbnQgdmFyeWluZyBtdXN0IGZhaWwiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAi
dmVydGV4U2hhZGVySW52YXJpYW50IiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBm
U2hhZGVySWQ6ICJmcmFnbWVudFNoYWRlclZhcmlhbnQiLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRl
ciB3aXRoIGludmFyaWFudCB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB2YXJpYW50
IHZhcnlpbmcgbXVzdCBmYWlsIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNo
YWRlckdsb2JhbEludmFyaWFudCIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNo
YWRlcklkOiAiZnJhZ21lbnRTaGFkZXJWYXJpYW50IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1
ZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIg
d2l0aCBpbnZhcmlhbnQgKGdsb2JhbCBzZXR0aW5nKSB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFk
ZXIgd2l0aCB2YXJpYW50IHZhcnlpbmcgbXVzdCBmYWlsIiwKKyAgfSwKKyAgeworICAgIHZTaGFk
ZXJJZDogInZlcnRleFNoYWRlckdsb2JhbEludmFyaWFudCIsCisgICAgdlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRTaGFkZXJJbnZhcmlhbnQiLAorICAgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6
ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggaW52YXJpYW50IChnbG9iYWwgc2V0dGluZykgdmFyeWluZyBh
bmQgZnJhZ21lbnQgc2hhZGVyIHdpdGggaW52YXJpYW50IHZhcnlpbmcgbXVzdCBzdWNjZWVkIiwK
KyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlclNlcGFyYXRlSW52YXJpYW50
IiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJmcmFnbWVudFNo
YWRlckludmFyaWFudCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nl
c3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQgKHNl
cGFyYXRlbHkgc2V0KSB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQg
dmFyeWluZyBtdXN0IHN1Y2NlZWQiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4
U2hhZGVySW52YXJpYW50IiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVy
SWQ6ICJmcmFnbWVudFNoYWRlclNlcGFyYXRlSW52YXJpYW50IiwKKyAgICBmU2hhZGVyU3VjY2Vz
czogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNo
YWRlciB3aXRoIGludmFyaWFudCB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCBpbnZh
cmlhbnQgKHNlcGFyYXRlbHkgc2V0KSB2YXJ5aW5nIG11c3Qgc3VjY2VlZCIsCisgIH0sCisgIHsK
KyAgICB2U2hhZGVySWQ6ICJ2ZXJ0ZXhTaGFkZXJTZXBhcmF0ZUludmFyaWFudFdyb25nT3JkZXIi
LAorICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICBmU2hhZGVySWQ6ICJmcmFnbWVudFNo
YWRlckludmFyaWFudCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nl
c3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggaW52YXJpYW50IChz
ZXBhcmF0ZWx5IHNldCBpbiB3cm9uZyBvcmRlcikgdmFyeWluZyBtdXN0IGZhaWwiLAorICB9LAor
ICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVySW52YXJpYW50IiwKKyAgICB2U2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJmcmFnbWVudFNoYWRlclNlcGFyYXRlSW52
YXJpYW50V3JvbmdPcmRlciIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtT
dWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiZnJhZ21lbnQgc2hhZGVyIHdpdGggaW52YXJp
YW50IChzZXBhcmF0ZWx5IHNldCBpbiB3cm9uZyBvcmRlcikgdmFyeWluZyBtdXN0IGZhaWwiLAor
ICB9LAorICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVySW52YXJpYW50R2xQb3NpdGlv
biIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRT
aGFkZXJJbnZhcmlhbnRHbEZyYWdDb29yZCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
ICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCBp
bnZhcmlhbnQgZ2xfUG9zaXRpb24gYW5kIGZyYWdtZW50IHNoYWRlciB3aXRoIGludmFyaWFudCBn
bF9GcmFnQ29vcmQgbXVzdCBzdWNjZWVkIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZl
cnRleFNoYWRlclZhcmlhbnQiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFk
ZXJJZDogImZyYWdtZW50U2hhZGVySW52YXJpYW50R2xGcmFnQ29vcmQiLAorICAgIGZTaGFkZXJT
dWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAidmVy
dGV4IHNoYWRlciB3aXRoIHZhcmlhbnQgZ2xfUG9zaXRpb24gYW5kIGZyYWdtZW50IHNoYWRlciB3
aXRoIGludmFyaWFudCBnbF9GcmFnQ29vcmQgbXVzdCBmYWlsIiwKKyAgfSwKKyAgeworICAgIHZT
aGFkZXJJZDogInZlcnRleFNoYWRlckludmFyaWFudEdsUG9zaXRpb24iLAorICAgIHZTaGFkZXJT
dWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50U2hhZGVyVmFyaWFudEdsRnJh
Z0Nvb3JkIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIGludmFyaWFudCBnbF9Qb3NpdGlv
biBhbmQgZnJhZ21lbnQgc2hhZGVyIHdpdGggdmFyaWFudCBnbF9GcmFnQ29vcmQgbXVzdCBzdWNj
ZWVkIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlckludmFyaWFudEds
UG9pbnRTaXplIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJm
cmFnbWVudFNoYWRlckludmFyaWFudEdsUG9pbnRDb29yZCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFk
ZXIgd2l0aCBpbnZhcmlhbnQgZ2xfUG9pbnRTaXplIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCBp
bnZhcmlhbnQgZ2xfUG9pbnRDb29yZCBtdXN0IHN1Y2NlZWQiLAorICB9LAorICB7CisgICAgdlNo
YWRlcklkOiAidmVydGV4U2hhZGVyVmFyaWFudCIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUs
CisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRTaGFkZXJJbnZhcmlhbnRHbFBvaW50Q29vcmQiLAor
ICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBw
YXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIHZhcmlhbnQgZ2xfUG9pbnRTaXplIGFuZCBmcmFn
bWVudCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQgZ2xfUG9pbnRDb29yZCBtdXN0IGZhaWwiLAorICB9
LAorICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVySW52YXJpYW50R2xQb2ludFNpemUi
LAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50U2hh
ZGVyVmFyaWFudEdsUG9pbnRDb29yZCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAg
bGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCBpbnZh
cmlhbnQgZ2xfUG9pbnRTaXplIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB2YXJpYW50IGdsX1Bv
aW50Q29vcmQgbXVzdCBzdWNjZWVkIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRl
eFNoYWRlclZhcmlhbnQiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJ
ZDogImZyYWdtZW50U2hhZGVyVmFyaWFudEdsRnJvbnRGYWNpbmciLAorICAgIGZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJmcmFnbWVu
dCBzaGFkZXIgd2l0aCB2YXJpYW50IGdsX0Zyb250RmFjaW5nIG11c3Qgc3VjY2VlZCBjb21waWxh
dGlvbiIsCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJ2ZXJ0ZXhTaGFkZXJWYXJpYW50IiwK
KyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJmcmFnbWVudFNoYWRl
ckludmFyaWFudEdsRnJvbnRGYWNpbmciLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAg
ICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogImZyYWdtZW50IHNoYWRlciB3aXRo
IGludmFyaWFudCBnbF9Gcm9udEZhY2luZyBtdXN0IGZhaWwgY29tcGlsYXRpb24iLAorICB9LAor
ICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVyVmFyaWFudCIsCisgICAgdlNoYWRlclN1
Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRTaGFkZXJHbG9iYWxJbnZhcmlh
bnQiLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICAgIHBhc3NNc2c6ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggdmFyaWFudCB2YXJ5aW5nIGFuZCBmcmFn
bWVudCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQgKGdsb2JhbCBzZXR0aW5nKSB2YXJ5aW5nIG11c3Qg
c3VjY2VlZCIsCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJ2ZXJ0ZXhTaGFkZXJJbnZhcmlh
bnQiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50
U2hhZGVyR2xvYmFsSW52YXJpYW50IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBs
aW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCBpbnZh
cmlhbnQgdmFyeWluZyBhbmQgZnJhZ21lbnQgc2hhZGVyIHdpdGggaW52YXJpYW50IChnbG9iYWwg
c2V0dGluZykgdmFyeWluZyBtdXN0IGZhaWwiLAorICB9CitdOworCitHTFNMQ29uZm9ybWFuY2VU
ZXN0ZXIucnVuVGVzdHMoY2FzZXMpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXJz
LXdpdGgtbWlzLW1hdGNoaW5nLXVuaWZvcm1zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVycy13aXRo
LW1pcy1tYXRjaGluZy11bmlmb3Jtcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYTAzMjI3OGZiOTIyMTEw
YzYwNzhkZWU5NjJjZmIwODgwZmY0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hh
ZGVycy13aXRoLW1pcy1tYXRjaGluZy11bmlmb3Jtcy5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFNoYWRlcnMgd2l0aCBtaXMtbWF0Y2hp
bmcgdW5pZm9ybSB0eXBlcyBzaG91bGQgZmFpbAorLy8gR0xTTCAxLjAxNyA0LjMuNAordW5pZm9y
bSAkKHR5cGUpIHVfdW5pZm9ybTsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
ICQoY29kZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBl
PSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBTaGFkZXJzIHdpdGggbWlzLW1h
dGNoaW5nIHVuaWZvcm0gdHlwZXMgc2hvdWxkIGZhaWwKKy8vIEdMU0wgMS4wMTcgNC4zLjQKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3JtICQodHlwZSkgdV91bmlmb3JtOworCit2
b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9ICQoY29kZSk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
dW5pZm9ybVR5cGVzID0gWworICB7IHR5cGU6ICJib29sIiwgIGNvZGU6ICJ2ZWM0KHVfdW5pZm9y
bSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJmbG9hdCIsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9y
bSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJpbnQiLCAgIGNvZGU6ICJ2ZWM0KHVfdW5pZm9y
bSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJ2ZWMyIiwgIGNvZGU6ICJ2ZWM0KHVfdW5pZm9y
bSwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJpdmVjMiIsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSwg
MCwgMCkiLCB9LAorICB7IHR5cGU6ICJidmVjMiIsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSwgMCwg
MCkiLCB9LAorICB7IHR5cGU6ICJ2ZWMzIiwgIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSwgMCkiLCB9
LAorICB7IHR5cGU6ICJpdmVjMyIsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSwgMCkiLCB9LAorICB7
IHR5cGU6ICJidmVjMyIsIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSwgMCkiLCB9LAorICB7IHR5cGU6
ICJ2ZWM0IiwgIGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSkiLCB9LAorICB7IHR5cGU6ICJpdmVjNCIs
IGNvZGU6ICJ2ZWM0KHVfdW5pZm9ybSkiLCB9LAorICB7IHR5cGU6ICJidmVjNCIsIGNvZGU6ICJ2
ZWM0KHVfdW5pZm9ybSkiLCB9LAorICB7IHR5cGU6ICJtYXQyIiwgIGNvZGU6ICJ2ZWM0KHVfdW5p
Zm9ybVswXVswXSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJtYXQzIiwgIGNvZGU6ICJ2ZWM0
KHVfdW5pZm9ybVswXVswXSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJtYXQ0IiwgIGNvZGU6
ICJ2ZWM0KHVfdW5pZm9ybVswXVswXSwgMCwgMCwgMCkiLCB9LAorXTsKK3ZhciB2U291cmNlID0g
d3R1LmdldFNjcmlwdCgidmVydGV4U2hhZGVyIik7Cit2YXIgZlNvdXJjZSA9IHd0dS5nZXRTY3Jp
cHQoImZyYWdtZW50U2hhZGVyIik7Cit2YXIgdGVzdHMgPSBbXTsKK2ZvciAodmFyIGlpID0gMDsg
aWkgPCB1bmlmb3JtVHlwZXMubGVuZ3RoOyArK2lpKSB7CisgIHZhciB1MSA9IHVuaWZvcm1UeXBl
c1tpaV07CisgIHZhciB2cyA9IHd0dS5yZXBsYWNlUGFyYW1zKHZTb3VyY2UsIHUxKTsKKyAgZm9y
ICh2YXIgamogPSBpaSArIDE7IGpqIDwgdW5pZm9ybVR5cGVzLmxlbmd0aDsgKytqaikgeworICAg
IHZhciB1MiA9IHVuaWZvcm1UeXBlc1tqal07CisgICAgdmFyIGZzID0gd3R1LnJlcGxhY2VQYXJh
bXMoZlNvdXJjZSwgdTIpOworICAgIHRlc3RzLnB1c2goeworICAgICAgdlNoYWRlclNvdXJjZTog
dnMsCisgICAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJTb3VyY2U6IGZz
LAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogZmFsc2Us
CisgICAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIHVuaWZvcm0gIiArIHUxLnR5cGUg
KyAiIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB1bmlmb3JtICIgKyB1Mi50eXBlICsgIiB3aXRo
IHRoZSBzYW1lIG5hbWUgc2hvdWxkIGZhaWwgdG8gbGluayIsCisgICAgfSk7CisgIH0KK30KKwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RzKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL21pc2Mvc2hhZGVycy13aXRoLW1pcy1tYXRjaGluZy12YXJ5aW5ncy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYWRlcnMtd2l0aC1taXMtbWF0Y2hpbmctdmFyeWluZ3MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NDJiYmMwMTk5ZjBhM2MyODA5OWYzOGU1NTU3NjljNzViNGY2ZTc1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL3NoYWRlcnMtd2l0aC1taXMtbWF0Y2hpbmctdmFyeWluZ3MuaHRtbApAQCAt
MCwwICsxLDgwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNs
LWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4
U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBTaGFkZXJz
IHdpdGggbWlzLW1hdGNoaW5nIHZhcnlpbmcgdHlwZXMgc2hvdWxkIGZhaWwKKy8vIEdMU0wgMS4w
LjE3IDQuMy41CithdHRyaWJ1dGUgJCh0eXBlKSBhX2F0dHJpYnV0ZTsKK3ZhcnlpbmcgJCh0eXBl
KSB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgdl92YXJ5aW5nID0gYV9hdHRyaWJ1
dGU7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorLy8gU2hhZGVycyB3aXRoIG1pcy1tYXRjaGluZyB2YXJ5aW5ncyB0eXBlcyBzaG91bGQg
ZmFpbAorLy8gR0xTTCAxLjAuMTcgNC4zLjUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2
YXJ5aW5nICQodHlwZSkgdl92YXJ5aW5nOworCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9ICQoY29kZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgdmFyeWluZ1R5cGVzID0gWworICB7IHR5cGU6
ICJmbG9hdCIsIGNvZGU6ICJ2ZWM0KHZfdmFyeWluZywgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6
ICJ2ZWMyIiwgIGNvZGU6ICJ2ZWM0KHZfdmFyeWluZywgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJ2
ZWMzIiwgIGNvZGU6ICJ2ZWM0KHZfdmFyeWluZywgMCkiLCB9LAorICB7IHR5cGU6ICJ2ZWM0Iiwg
IGNvZGU6ICJ2ZWM0KHZfdmFyeWluZykiLCB9LAorICB7IHR5cGU6ICJtYXQyIiwgIGNvZGU6ICJ2
ZWM0KHZfdmFyeWluZ1swXVswXSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJtYXQzIiwgIGNv
ZGU6ICJ2ZWM0KHZfdmFyeWluZ1swXVswXSwgMCwgMCwgMCkiLCB9LAorICB7IHR5cGU6ICJtYXQ0
IiwgIGNvZGU6ICJ2ZWM0KHZfdmFyeWluZ1swXVswXSwgMCwgMCwgMCkiLCB9LAorXTsKK3ZhciB2
U291cmNlID0gd3R1LmdldFNjcmlwdCgidmVydGV4U2hhZGVyIik7Cit2YXIgZlNvdXJjZSA9IHd0
dS5nZXRTY3JpcHQoImZyYWdtZW50U2hhZGVyIik7Cit2YXIgdGVzdHMgPSBbXTsKK2ZvciAodmFy
IGlpID0gMDsgaWkgPCB2YXJ5aW5nVHlwZXMubGVuZ3RoOyArK2lpKSB7CisgIHZhciB1MSA9IHZh
cnlpbmdUeXBlc1tpaV07CisgIHZhciB2cyA9IHd0dS5yZXBsYWNlUGFyYW1zKHZTb3VyY2UsIHUx
KTsKKyAgZm9yICh2YXIgamogPSBpaSArIDE7IGpqIDwgdmFyeWluZ1R5cGVzLmxlbmd0aDsgKytq
aikgeworICAgIHZhciB1MiA9IHZhcnlpbmdUeXBlc1tqal07CisgICAgdmFyIGZzID0gd3R1LnJl
cGxhY2VQYXJhbXMoZlNvdXJjZSwgdTIpOworICAgIHRlc3RzLnB1c2goeworICAgICAgdlNoYWRl
clNvdXJjZTogdnMsCisgICAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGZTaGFkZXJT
b3VyY2U6IGZzLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2Vz
czogZmFsc2UsCisgICAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIHZhcnlpbmcgIiAr
IHUxLnR5cGUgKyAiIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB2YXJ5aW5nICIgKyB1Mi50eXBl
ICsgIiB3aXRoIHRoZSBzYW1lIG5hbWUgc2hvdWxkIGZhaWwgdG8gbGluayIsCisgICAgfSk7Cisg
IH0KK30KK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3NoYWRlcnMtd2l0aC1taXNzaW5nLXZhcnlpbmdzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L21pc2Mvc2hhZGVycy13aXRoLW1pc3NpbmctdmFyeWluZ3MuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGFi
Mjc5ZjYwNGFhNzA5YzNjNGU1NTY2ZGE0MzY5YTBjNGI4MDk0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL3NoYWRlcnMtd2l0aC1taXNzaW5nLXZhcnlpbmdzLmh0bWwKQEAgLTAsMCArMSw3
NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIg
dHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gR0xTTCAxLjAuMTcgNC4z
LjUKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorLy8gR0xTTCAxLjAuMTcgNC4zLjUKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCit2YXJ5aW5nICQodHlwZSkgdl92YXJ5aW5nOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX0ZyYWdDb2xvciA9ICQoY29kZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgdmFyeWluZ1R5cGVz
ID0gWworICB7IHR5cGU6ICJmbG9hdCIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDAp
IiwgfSwKKyAgeyB0eXBlOiAidmVjMiIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmcsIDAsIDApIiwg
fSwKKyAgeyB0eXBlOiAidmVjMyIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmcsIDApIiwgfSwKKyAg
eyB0eXBlOiAidmVjNCIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmcpIiwgfSwKKyAgeyB0eXBlOiAi
bWF0MiIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmdbMF1bMF0sIDAsIDAsIDApIiwgfSwKKyAgeyB0
eXBlOiAibWF0MyIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmdbMF1bMF0sIDAsIDAsIDApIiwgfSwK
KyAgeyB0eXBlOiAibWF0NCIsICBjb2RlOiAidmVjNCh2X3ZhcnlpbmdbMF1bMF0sIDAsIDAsIDAp
IiwgfSwKK107Cit2YXIgdlNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoInZlcnRleFNoYWRlciIpOwor
dmFyIGZTb3VyY2UgPSB3dHUuZ2V0U2NyaXB0KCJmcmFnbWVudFNoYWRlciIpOwordmFyIHRlc3Rz
ID0gW107Citmb3IgKHZhciBpaSA9IDA7IGlpIDwgdmFyeWluZ1R5cGVzLmxlbmd0aDsgKytpaSkg
eworICB2YXIgdTEgPSB2YXJ5aW5nVHlwZXNbaWldOworICB2YXIgdnMgPSB3dHUucmVwbGFjZVBh
cmFtcyh2U291cmNlLCB1MSk7CisgIGZvciAodmFyIGpqID0gaWkgKyAxOyBqaiA8IHZhcnlpbmdU
eXBlcy5sZW5ndGg7ICsramopIHsKKyAgICB2YXIgdTIgPSB2YXJ5aW5nVHlwZXNbampdOworICAg
IHZhciBmcyA9IHd0dS5yZXBsYWNlUGFyYW1zKGZTb3VyY2UsIHUyKTsKKyAgICB0ZXN0cy5wdXNo
KHsKKyAgICAgIHZTaGFkZXJTb3VyY2U6IHZzLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUs
CisgICAgICBmU2hhZGVyU291cmNlOiBmcywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIg
bm8gdmFyeWluZ3MgYW5kIGZyYWdtZW50IHNoYWRlciB3aXRoIHZhcnlpbmcgIiArIHUyLnR5cGUg
KyAiIHNob3VsZCBmYWlsIHRvIGxpbmsiLAorICAgIH0pOworICB9Cit9CitHTFNMQ29uZm9ybWFu
Y2VUZXN0ZXIucnVuVGVzdHModGVzdHMpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFk
ZXJzLXdpdGgtbmFtZS1jb25mbGljdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXJzLXdpdGgtbmFt
ZS1jb25mbGljdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGM5YWY4YjhmNWU2YWMzZTk1YjExN2Q2YmI5
MWUzMTE3ZTYwOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlcnMtd2l0aC1u
YW1lLWNvbmZsaWN0cy5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90
LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBzdWNjZWVkCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCBmb287Cit2b2lkIG1haW4oKQoreworICAg
IGdsX0ZyYWdDb2xvciA9IGZvbzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hh
ZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyB2ZXJ0ZXggc2hh
ZGVyIHNob3VsZCBzdWNjZWVkCithdHRyaWJ1dGUgdmVjNCBmb287Cit2b2lkIG1haW4oKQorewor
ICAgIGdsX1Bvc2l0aW9uID0gZm9vOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworCisvKgorVGhpcyB0ZXN0IHByZXZpb3VzbHkgY29uY2x1ZGVkIHRoYXQgYW4gYXR0cmli
dXRlIGluIGEgdmVydGV4IHNoYWRlcgord291bGQgY29uZmxpY3QgYWNyb3NzIHNoYWRlcnMgd2l0
aCBhIHVuaWZvcm0gb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUKK2ZyYWdtZW50IHNoYWRlciwgYmFz
ZWQgb24gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBvZiB0aGUgR0xTTCBFUyAxLjAuMTcKK3NwZWNp
ZmljYXRpb246CisKKy0tLQorU2VjdGlvbiA0LjIuNgorCisuLi4KKworV2l0aCB0aGUgZXhjZXB0
aW9uIG9mIHVuaWZvcm0gZGVjbGFyYXRpb25zLCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMK
K2hhdmUgc2VwYXJhdGUgbmFtZSBzcGFjZXMuICBGdW5jdGlvbnMgYW5kIGdsb2JhbCB2YXJpYWJs
ZXMgZGVjbGFyZWQgaW4gYQordmVydGV4IHNoYWRlciBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSBh
IGZyYWdtZW50IHNoYWRlciBhbmQgdmljZSB2ZXJzYS4KK1VuaWZvcm1zIGhhdmUgYSBzaW5nbGUg
bmFtZSBzcGFjZS4gIFVuaWZvcm1zIGRlY2xhcmVkIHdpdGggdGhlIHNhbWUgbmFtZQorbXVzdCBo
YXZlIG1hdGNoaW5nIHR5cGVzIGFuZCBwcmVjaXNpb25zLgorCitTZWN0aW9uIDQuMy4zCisKK0F0
dHJpYnV0ZSB2YXJpYWJsZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgZ2xvYmFsIHNjb3BlCisKK1Nl
Y3Rpb24gNC4zLjQKKworVGhlIHVuaWZvcm0gcXVhbGlmaWVyIGlzIHVzZWQgdG8gZGVjbGFyZSBn
bG9iYWwgdmFyaWFibGVzCistLS0KKworR0xTTCBFUyAzLjAwIGxhdGVyIGNvbmZpcm1lZCB0aGF0
IHBpcGVsaW5lIHN0YWdlcyBoYXZlIGRpc3RpbmN0CituYW1lc3BhY2VzLiBUaGUgT3BlbkdMIEVT
IHdvcmtpbmcgZ3JvdXAgY29uZmlybWVkIGluIGRpc2N1c3Npb25zCitodHRwczovL2dpdGh1Yi5j
b20vS2hyb25vc0dyb3VwL1dlYkdML2lzc3Vlcy8zMjAxIHRoYXQgdGhpcyB3YXMgdGhlCitpbnRl
bmRlZCBiZWhhdmlvciBmb3IgR0xTTCBFUyAxLjAwLgorCitGb3IgdGhpcyByZWFzb24sIHRoaXMg
dGVzdCBhc3NlcnRzIHRoYXQgc3VjaCB1c2FnZSBkb2VzIG5vdCBnZW5lcmF0ZSBhCitjb25mbGlj
dC4KKyovCisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCisgICAgeyB2U2hhZGVy
SWQ6ICd2ZXJ0ZXhTaGFkZXInLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBm
U2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlcicsCisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgcGFzc01zZzogJ3VzaW5nIHRoZSBzYW1l
IG5hbWUgZm9yIGEgdmVydGV4IHNoYWRlciBhdHRyaWJ1dGUgYW5kIGZyYWdtZW50IHNoYWRlciB1
bmlmb3JtIHNob3VsZCBzdWNjZWVkJworICAgIH0sCitdKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNs
L21pc2Mvc2hhZGVycy13aXRoLXVuaWZvcm0tc3RydWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRl
cnMtd2l0aC11bmlmb3JtLXN0cnVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzEzYmQwY2JlNDVmZTFj
ZDljMDJlNTdjMmYwMzI4ZTMwZmViNzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3No
YWRlcnMtd2l0aC11bmlmb3JtLXN0cnVjdHMuaHRtbApAQCAtMCwwICsxLDI4OSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlclN0cnVjdFNlcXVlbmNl
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBTdHJ1Y3R1cmVzIG11
c3QgaGF2ZSB0aGUgc2FtZSBuYW1lLCBzZXF1ZW5jZSBvZiB0eXBlIG5hbWVzLCBhbmQKKy8vIHR5
cGUgZGVmaW5pdGlvbnMsIGFuZCBmaWVsZCBuYW1lcyB0byBiZSBjb25zaWRlcmVkIHRoZSBzYW1l
IHR5cGUuCisvLyBHTFNMIDEuMDE3IDQuMi40CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0
cnVjdCBpbmZvIHsKKyAgdmVjNCBwb3M7CisgIHZlYzQgY29sb3I7Cit9OworCit1bmlmb3JtIGlu
Zm8gdW5pOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHVuaS5wb3M7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyU3RydWN0U2VxdWVuY2UiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFN0cnVjdHVyZXMgbXVzdCBoYXZl
IHRoZSBzYW1lIG5hbWUsIHNlcXVlbmNlIG9mIHR5cGUgbmFtZXMsIGFuZAorLy8gdHlwZSBkZWZp
bml0aW9ucywgYW5kIGZpZWxkIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgdGhlIHNhbWUgdHlwZS4K
Ky8vIEdMU0wgMS4wMTcgNC4yLjQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworc3RydWN0IGlu
Zm8geworICB2ZWM0IGNvbG9yOworICB2ZWM0IHBvczsKK307CisKK3VuaWZvcm0gaW5mbyB1bmk7
Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHVuaS5jb2xvcjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyU3RydWN0TmFtZSIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gU3RydWN0dXJlcyBtdXN0IGhhdmUgdGhlIHNhbWUg
bmFtZSwgc2VxdWVuY2Ugb2YgdHlwZSBuYW1lcywgYW5kCisvLyB0eXBlIGRlZmluaXRpb25zLCBh
bmQgZmllbGQgbmFtZXMgdG8gYmUgY29uc2lkZXJlZCB0aGUgc2FtZSB0eXBlLgorLy8gR0xTTCAx
LjAxNyA0LjIuNAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgaW5mbyB7CisgIHZl
YzQgcG9zOworICB2ZWM0IGNvbG9yOworfTsKKwordW5pZm9ybSBpbmZvIHVuaTsKK3ZvaWQgbWFp
bigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB1bmkucG9zOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmcmFnbWVudFNoYWRlclN0cnVjdE5hbWVGYWlsdXJlIiB0eXBlPSJ0ZXh0L3NvbWV0aGlu
Zy1ub3QtamF2YXNjcmlwdCI+CisvLyBTdHJ1Y3R1cmVzIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1l
LCBzZXF1ZW5jZSBvZiB0eXBlIG5hbWVzLCBhbmQKKy8vIHR5cGUgZGVmaW5pdGlvbnMsIGFuZCBm
aWVsZCBuYW1lcyB0byBiZSBjb25zaWRlcmVkIHRoZSBzYW1lIHR5cGUuCisvLyBHTFNMIDEuMDE3
IDQuMi40CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVjdCBpbmZvMSB7CisgIHZlYzQg
cG9zOworICB2ZWM0IGNvbG9yOworfTsKKwordW5pZm9ybSBpbmZvMSB1bmk7Cit2b2lkIG1haW4o
KQoreworICAgIGdsX0ZyYWdDb2xvciA9IHVuaS5jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnJhZ21lbnRTaGFkZXJTdHJ1Y3ROYW1lU3VjY2VzcyIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorLy8gU3RydWN0dXJlcyBtdXN0IGhhdmUgdGhlIHNhbWUgbmFt
ZSwgc2VxdWVuY2Ugb2YgdHlwZSBuYW1lcywgYW5kCisvLyB0eXBlIGRlZmluaXRpb25zLCBhbmQg
ZmllbGQgbmFtZXMgdG8gYmUgY29uc2lkZXJlZCB0aGUgc2FtZSB0eXBlLgorLy8gR0xTTCAxLjAx
NyA0LjIuNAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKy8vIEFkZCBhIHN0cnVjdCBiZWZv
cmUgaW5mbyB0byBtYWtlIHN1cmUgdGhlIHN0cnVjdCBpbmZvIGhlcmUgaXMgYXNzaWduZWQKKy8v
IGEgZGlmZmVyZW50IGludGVybmFsIHVuaXF1ZSBJRCBmcm9tIHRoZSBzdHJ1Y3QgaW5mbyBpbiB2
ZXJ0ZXggc2hhZGVyLgorc3RydWN0IGV4dHJhIHsKKyAgdmVjNCBwOworfTsKKworc3RydWN0IGlu
Zm8geworICB2ZWM0IHBvczsKKyAgdmVjNCBjb2xvcjsKK307CisKK3VuaWZvcm0gaW5mbyB1bmk7
Cit2b2lkIG1haW4oKQoreworICAgIGV4dHJhIG15OworICAgIG15LnAgPSB1bmkuY29sb3I7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gbXkucDsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4
U2hhZGVyU3RydWN0RmllbGROYW1lIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CisvLyBTdHJ1Y3R1cmVzIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1lLCBzZXF1ZW5jZSBvZiB0
eXBlIG5hbWVzLCBhbmQKKy8vIHR5cGUgZGVmaW5pdGlvbnMsIGFuZCBmaWVsZCBuYW1lcyB0byBi
ZSBjb25zaWRlcmVkIHRoZSBzYW1lIHR5cGUuCisvLyBHTFNMIDEuMDE3IDQuMi40CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3N0cnVjdCBpbmZvIHsKKyAgdmVjNCBwb3M7CisgIHZlYzQgY29s
b3I7Cit9OworCit1bmlmb3JtIGluZm8gdW5pOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHVuaS5wb3M7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVy
U3RydWN0RmllbGROYW1lIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cisv
LyBTdHJ1Y3R1cmVzIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1lLCBzZXF1ZW5jZSBvZiB0eXBlIG5h
bWVzLCBhbmQKKy8vIHR5cGUgZGVmaW5pdGlvbnMsIGFuZCBmaWVsZCBuYW1lcyB0byBiZSBjb25z
aWRlcmVkIHRoZSBzYW1lIHR5cGUuCisvLyBHTFNMIDEuMDE3IDQuMi40CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3N0cnVjdCBpbmZvIHsKKyAgdmVjNCBwb3MxOworICB2ZWM0IGNvbG9yOwor
fTsKKwordW5pZm9ybSBpbmZvIHVuaTsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gdW5pLmNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJTdHJ1
Y3RGaWVsZFR5cGUiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFN0
cnVjdHVyZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUsIHNlcXVlbmNlIG9mIHR5cGUgbmFtZXMs
IGFuZAorLy8gdHlwZSBkZWZpbml0aW9ucywgYW5kIGZpZWxkIG5hbWVzIHRvIGJlIGNvbnNpZGVy
ZWQgdGhlIHNhbWUgdHlwZS4KKy8vIEdMU0wgMS4wMTcgNC4yLjQKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0Oworc3RydWN0IGluZm8geworICB2ZWM0IHBvczsKKyAgdmVjNCBjb2xvcjsKK307CisK
K3VuaWZvcm0gaW5mbyB1bmk7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdW5p
LnBvczsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJTdHJ1Y3RGaWVs
ZFR5cGUiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFN0cnVjdHVy
ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUsIHNlcXVlbmNlIG9mIHR5cGUgbmFtZXMsIGFuZAor
Ly8gdHlwZSBkZWZpbml0aW9ucywgYW5kIGZpZWxkIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgdGhl
IHNhbWUgdHlwZS4KKy8vIEdMU0wgMS4wMTcgNC4yLjQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
Oworc3RydWN0IGluZm8geworICB2ZWMzIHBvczsKKyAgdmVjNCBjb2xvcjsKK307CisKK3VuaWZv
cm0gaW5mbyB1bmk7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHVuaS5jb2xv
cjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyU3RydWN0RmllbGRQcmVj
aXNpb24iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIFN0cnVjdHVy
ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUsIHNlcXVlbmNlIG9mIHR5cGUgbmFtZXMsIGFuZAor
Ly8gdHlwZSBkZWZpbml0aW9ucywgYW5kIGZpZWxkIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgdGhl
IHNhbWUgdHlwZS4KKy8vIEdMU0wgMS4wMTcgNC4yLjQKK3N0cnVjdCBpbmZvIHsKKyAgbWVkaXVt
cCB2ZWM0IHBvczsKKyAgaGlnaHAgdmVjNCBjb2xvcjsKK307CisKK3VuaWZvcm0gaW5mbyB1bmk7
Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdW5pLnBvczsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJTdHJ1Y3RGaWVsZFByZWNpc2lvbiIgdHlwZT0i
dGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gU3RydWN0dXJlcyBtdXN0IGhhdmUg
dGhlIHNhbWUgbmFtZSwgc2VxdWVuY2Ugb2YgdHlwZSBuYW1lcywgYW5kCisvLyB0eXBlIGRlZmlu
aXRpb25zLCBhbmQgZmllbGQgbmFtZXMgdG8gYmUgY29uc2lkZXJlZCB0aGUgc2FtZSB0eXBlLgor
Ly8gR0xTTCAxLjAxNyA0LjIuNAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgaW5m
byB7CisgIHZlYzQgcG9zOworICB2ZWM0IGNvbG9yOworfTsKKwordW5pZm9ybSBpbmZvIHVuaTsK
K3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdW5pLmNvbG9yOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJVbm5hbWVkU3RydWN0IiB0eXBlPSJ0ZXh0L3Nv
bWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBBTkdMRSByZWdyZXNzaW9uIG9uIFdpbmRvd3Ms
IGNyYnVnLmNvbS80MDEyOTYKK3VuaWZvcm0gc3RydWN0IHsKKyAgZmxvYXQgZjsKKyAgdmVjNCB2
OworfSB1X3N0cnVjdDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHVfc3Ry
dWN0LmYgKiB1X3N0cnVjdC52OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNo
YWRlclNpbXBsZSIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciB0
ZXN0cyA9IFtdOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQo
InZlcnRleFNoYWRlclN0cnVjdE5hbWUiKSwKKyAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGZT
aGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50U2hhZGVyU3RydWN0TmFtZVN1Y2Nl
c3MiKSwKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBw
YXNzTXNnOiAiU3RydWN0dXJlcyB3aXRoIHRoZSBzYW1lIGRlZmluYXRpb24gbXVzdCBiZSBjb25z
aWRlcmVkIHRoZSBzYW1lIHR5cGUuIiwKK30pOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3Vy
Y2U6IHd0dS5nZXRTY3JpcHQoInZlcnRleFNoYWRlclN0cnVjdE5hbWUiKSwKKyAgdlNoYWRlclN1
Y2Nlc3M6IHRydWUsCisgIGZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50U2hh
ZGVyU3RydWN0TmFtZUZhaWx1cmUiKSwKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtT
dWNjZXNzOiBmYWxzZSwKKyAgcGFzc01zZzogIlN0cnVjdHVyZXMgbXVzdCBoYXZlIHRoZSBzYW1l
IG5hbWUgdG8gYmUgY29uc2lkZXJlZCB0aGUgc2FtZSB0eXBlLiIsCit9KTsKK3Rlc3RzLnB1c2go
eworICB2U2hhZGVyU291cmNlOiB3dHUuZ2V0U2NyaXB0KCJ2ZXJ0ZXhTaGFkZXJTdHJ1Y3RTZXF1
ZW5jZSIpLAorICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgZlNoYWRlclNvdXJjZTogd3R1Lmdl
dFNjcmlwdCgiZnJhZ21lbnRTaGFkZXJTdHJ1Y3RTZXF1ZW5jZSIpLAorICBmU2hhZGVyU3VjY2Vz
czogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiU3RydWN0dXJlcyBt
dXN0IGhhdmUgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdHlwZSBuYW1lcyB0byBiZSBjb25zaWRlcmVk
IHRoZSBzYW1lIHR5cGUuIiwKK30pOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3VyY2U6IHd0
dS5nZXRTY3JpcHQoInZlcnRleFNoYWRlclN0cnVjdEZpZWxkTmFtZSIpLAorICB2U2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgZlNoYWRlclNvdXJjZTogd3R1LmdldFNjcmlwdCgiZnJhZ21lbnRTaGFk
ZXJTdHJ1Y3RGaWVsZE5hbWUiKSwKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNj
ZXNzOiBmYWxzZSwKKyAgcGFzc01zZzogIlN0cnVjdHVyZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGZp
ZWxkIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgdGhlIHNhbWUgdHlwZS4iLAorfSk7Cit0ZXN0cy5w
dXNoKHsKKyAgdlNoYWRlclNvdXJjZTogd3R1LmdldFNjcmlwdCgidmVydGV4U2hhZGVyU3RydWN0
RmllbGRUeXBlIiksCisgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBmU2hhZGVyU291cmNlOiB3
dHUuZ2V0U2NyaXB0KCJmcmFnbWVudFNoYWRlclN0cnVjdEZpZWxkVHlwZSIpLAorICBmU2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiU3RydWN0
dXJlcyBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZSBkZWZpbml0aW9ucyB0byBiZSBjb25zaWRlcmVk
IHRoZSBzYW1lIHR5cGUuIiwKK30pOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3VyY2U6IHd0
dS5nZXRTY3JpcHQoInZlcnRleFNoYWRlclN0cnVjdEZpZWxkUHJlY2lzaW9uIiksCisgIHZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICBmU2hhZGVyU291cmNlOiB3dHUuZ2V0U2NyaXB0KCJmcmFnbWVu
dFNoYWRlclN0cnVjdEZpZWxkUHJlY2lzaW9uIiksCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICBsaW5rU3VjY2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICJTdHJ1Y3R1cmVzIG11c3QgaGF2ZSB0
aGUgc2FtZSB0eXBlIGRlZmluaXRpb25zIChpbmNsdWRpbmcgcHJlY2lzaW9uKSB0byBiZSBjb25z
aWRlcmVkIHRoZSBzYW1lIHR5cGUuIiwKK30pOwordGVzdHMucHVzaCh7CisgIHZTaGFkZXJTb3Vy
Y2U6IHd0dS5nZXRTY3JpcHQoInZlcnRleFNoYWRlclVubmFtZWRTdHJ1Y3QiKSwKKyAgdlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgIGZTaGFkZXJTb3VyY2U6IHd0dS5nZXRTY3JpcHQoImZyYWdtZW50
U2hhZGVyU2ltcGxlIiksCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vzczog
dHJ1ZSwKKyAgcGFzc01zZzogIlNoYWRlcnMgd2l0aCB1bmlmb3JtcyBvZiB1bm5hbWVkIHN0cnVj
dCB0eXBlIHNob3VsZCBjb21waWxlIGFuZCBsaW5rIHN1Y2Nlc3NmdWxseS4iLAorfSk7CisKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL3NoYWRlcnMtd2l0aC12YXJ5aW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlcnMtd2l0
aC12YXJ5aW5ncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YmFhYTJiZGM0YmVjZDMyMWUzNzAwOTNjOGQy
NTM3OTA0ZmI5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVycy13aXRoLXZh
cnlpbmdzLmh0bWwKQEAgLTAsMCArMSwxMDMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJOb1ZhcnlpbmciIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAs
MCwwLDApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJVbnVzZWRWYXJ5
aW5nIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2YXJ5aW5nIHZlYzQg
dl92YXJ5aW5nOworCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAs
MCwwKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyVXNlZFZhcnlpbmci
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ZhcnlpbmcgdmVjNCB2X3Zh
cnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyVW51c2VkVmFyeWluZyIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLDAsMCwwKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJh
Z21lbnRTaGFkZXJVc2VkVmFyeWluZyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3ZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7
CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdl92YXJ5aW5nOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorLy8gR0xTTCAxLjAuMTcgNC4zLjUKKyJ1c2Ugc3RyaWN0IjsKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCisgIHsKKyAgICB2U2hhZGVySWQ6ICJ2ZXJ0
ZXhTaGFkZXJOb1ZhcnlpbmciLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFk
ZXJJZDogImZyYWdtZW50U2hhZGVyVW51c2VkVmFyeWluZyIsCisgICAgZlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFk
ZXIgd2l0aCBubyB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB1bnVzZWQgdmFyeWlu
ZyBtdXN0IHN1Y2NlZWQiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVy
Tm9WYXJ5aW5nIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJm
cmFnbWVudFNoYWRlclVzZWRWYXJ5aW5nIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAg
ICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCBu
byB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB1c2VkIHZhcnlpbmcgbXVzdCBmYWls
IiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlclVudXNlZFZhcnlpbmci
LAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50U2hh
ZGVyVW51c2VkVmFyeWluZyIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1
Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZlcnRleCBzaGFkZXIgd2l0aCB1bnVzZWQgdmFy
eWluZyBhbmQgZnJhZ21lbnQgc2hhZGVyIHdpdGggdW51c2VkIHZhcnlpbmcgbXVzdCBzdWNjZWVk
IiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlclVudXNlZFZhcnlpbmci
LAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50U2hh
ZGVyVXNlZFZhcnlpbmciLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJ2ZXJ0ZXggc2hhZGVyIHdpdGggdW51c2VkIHZhcnlp
bmcgYW5kIGZyYWdtZW50IHNoYWRlciB3aXRoIHVzZWQgdmFyeWluZyBtdXN0IHN1Y2NlZWQiLAor
ICB9LAorXSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYXJlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3NoYXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3Nzg2YmIzODUwNjkwZmUwODFhM2I3ZjE2YWFh
MDQwNjhiNDJjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhcmVkLmh0bWwKQEAg
LTAsMCArMSwxNTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2ds
c2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJzaGFy
ZWRWZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8v
IHNoYXJlZCB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBzdWNjZWVkLgordW5pZm9ybSBtYXQ0IHZpZXdQ
cm9qZWN0aW9uOwordW5pZm9ybSB2ZWMzIHdvcmxkUG9zaXRpb247Cit1bmlmb3JtIHZlYzMgbmV4
dFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBmaXNoTGVuZ3RoOwordW5pZm9ybSBmbG9hdCBmaXNo
V2F2ZUxlbmd0aDsKK3VuaWZvcm0gZmxvYXQgZmlzaEJlbmRBbW91bnQ7CithdHRyaWJ1dGUgdmVj
NCBwb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIHRleENvb3JkOwordmFyeWluZyB2ZWM0IHZfcG9z
aXRpb247Cit2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKK3ZhcnlpbmcgdmVjMyB2X3N1cmZhY2VU
b0xpZ2h0Owordm9pZCBtYWluKCkgeworICB2ZWMzIHZ6ID0gbm9ybWFsaXplKHdvcmxkUG9zaXRp
b24gLSBuZXh0UG9zaXRpb24pOworICB2ZWMzIHZ4ID0gbm9ybWFsaXplKGNyb3NzKHZlYzMoMCwx
LDApLCB2eikpOworICB2ZWMzIHZ5ID0gY3Jvc3ModnosIHZ4KTsKKyAgbWF0NCBvcmllbnRNYXQg
PSBtYXQ0KAorICAgIHZlYzQodngsIDApLAorICAgIHZlYzQodnksIDApLAorICAgIHZlYzQodnos
IDApLAorICAgIHZlYzQod29ybGRQb3NpdGlvbiwgMSkpOworICBtYXQ0IHdvcmxkID0gb3JpZW50
TWF0OworICBtYXQ0IHdvcmxkVmlld1Byb2plY3Rpb24gPSB2aWV3UHJvamVjdGlvbiAqIHdvcmxk
OworICBtYXQ0IHdvcmxkSW52ZXJzZVRyYW5zcG9zZSA9IHdvcmxkOworCisgIHZfdGV4Q29vcmQg
PSB0ZXhDb29yZDsKKyAgLy8gTk9URTpJZiB5b3UgY2hhbmdlIHRoaXMgeW91IG5lZWQgdG8gY2hh
bmdlIHRoZSBsYXNlciBjb2RlIHRvIG1hdGNoIQorICBmbG9hdCBtdWx0ID0gcG9zaXRpb24ueiA+
IDAuMCA/CisgICAgICAocG9zaXRpb24ueiAvIGZpc2hMZW5ndGgpIDoKKyAgICAgICgtcG9zaXRp
b24ueiAvIGZpc2hMZW5ndGggKiAyLjApOworICBmbG9hdCBzID0gc2luKG11bHQgKiBmaXNoV2F2
ZUxlbmd0aCk7CisgIGZsb2F0IGEgPSBzaWduKHMpOworICBmbG9hdCBvZmZzZXQgPSBwb3cobXVs
dCwgMi4wKSAqIHMgKiBmaXNoQmVuZEFtb3VudDsKKyAgdl9wb3NpdGlvbiA9ICgKKyAgICAgIHdv
cmxkVmlld1Byb2plY3Rpb24gKgorICAgICAgKHBvc2l0aW9uICsKKyAgICAgICB2ZWM0KG9mZnNl
dCwgMCwgMCwgMCkpKTsKKyAgdl9zdXJmYWNlVG9MaWdodCA9ICh3b3JsZCAqIHBvc2l0aW9uKS54
eXo7CisgIGdsX1Bvc2l0aW9uID0gdl9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnJhZ21lbnRTaGFkZXJBIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+
CisvLyBzaGFyZWQgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBzdWNjZWVkLgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgbGlnaHRDb2xvcjsKK3ZhcnlpbmcgdmVjNCB2X3Bv
c2l0aW9uOwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cit2YXJ5aW5nIHZlYzMgdl9zdXJmYWNl
VG9MaWdodDsKKwordW5pZm9ybSB2ZWM0IGFtYmllbnQ7Cit1bmlmb3JtIHNhbXBsZXIyRCBkaWZm
dXNlOwordW5pZm9ybSB2ZWM0IHNwZWN1bGFyOwordW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7Cit1
bmlmb3JtIGZsb2F0IHNwZWN1bGFyRmFjdG9yOworLy8gI2ZvZ1VuaWZvcm1zCisKK3ZlYzQgbGl0
KGZsb2F0IGwgLGZsb2F0IGgsIGZsb2F0IG0pIHsKKyAgcmV0dXJuIHZlYzQoMS4wLAorICAgICAg
ICAgICAgICBtYXgobCwgMC4wKSwKKyAgICAgICAgICAgICAgKGwgPiAwLjApID8gcG93KG1heCgw
LjAsIGgpLCBtKSA6IDAuMCwKKyAgICAgICAgICAgICAgMS4wKTsKK30KK3ZvaWQgbWFpbigpIHsK
KyAgdmVjNCBkaWZmdXNlQ29sb3IgPSB0ZXh0dXJlMkQoZGlmZnVzZSwgdl90ZXhDb29yZCk7Cisg
IHZlYzQgbm9ybWFsU3BlYyA9IHZlYzQoMCwwLDAsMCk7ICAvLyAjbm9Ob3JtYWxNYXAKKyAgdmVj
MyBzdXJmYWNlVG9MaWdodCA9IG5vcm1hbGl6ZSh2X3N1cmZhY2VUb0xpZ2h0KTsKKyAgdmVjMyBo
YWxmVmVjdG9yID0gbm9ybWFsaXplKHN1cmZhY2VUb0xpZ2h0KTsKKyAgdmVjNCBsaXRSID0gbGl0
KDEuMCwgMS4wLCBzaGluaW5lc3MpOworICB2ZWM0IG91dENvbG9yID0gdmVjNCgKKyAgICAobGln
aHRDb2xvciAqIChkaWZmdXNlQ29sb3IgKiBsaXRSLnkgKyBkaWZmdXNlQ29sb3IgKiBhbWJpZW50
ICsKKyAgICAgICAgICAgICAgICAgIHNwZWN1bGFyICogbGl0Ui56ICogc3BlY3VsYXJGYWN0b3Ig
KiBub3JtYWxTcGVjLmEpKS5yZ2IsCisgICAgICBkaWZmdXNlQ29sb3IuYSk7CisgIC8vICNmb2dD
b2RlCisgIGdsX0ZyYWdDb2xvciA9IG91dENvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmcmFnbWVudFNoYWRlckIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4K
Ky8vIHNoYXJlZCBmcmFnbWVudCBzaGFkZXIgc2hvdWxkIHN1Y2NlZWQuCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2X3Bvc2l0aW9uOwordmFyeWluZyB2ZWMyIHZfdGV4
Q29vcmQ7Cit2YXJ5aW5nIHZlYzMgdl9zdXJmYWNlVG9MaWdodDsKKworLy8gI2ZvZ1VuaWZvcm1z
CisKK3ZlYzQgbGl0KGZsb2F0IGwgLGZsb2F0IGgsIGZsb2F0IG0pIHsKKyAgcmV0dXJuIHZlYzQo
MS4wLAorICAgICAgICAgICAgICBtYXgobCwgMC4wKSwKKyAgICAgICAgICAgICAgKGwgPiAwLjAp
ID8gcG93KG1heCgwLjAsIGgpLCBtKSA6IDAuMCwKKyAgICAgICAgICAgICAgMS4wKTsKK30KK3Zv
aWQgbWFpbigpIHsKKyAgdmVjNCBub3JtYWxTcGVjID0gdmVjNCgwLDAsMCwwKTsgIC8vICNub05v
cm1hbE1hcAorICB2ZWM0IHJlZmxlY3Rpb24gPSB2ZWM0KDAsMCwwLDApOyAgLy8gI25vUmVmbGVj
dGlvbgorICB2ZWMzIHN1cmZhY2VUb0xpZ2h0ID0gbm9ybWFsaXplKHZfc3VyZmFjZVRvTGlnaHQp
OworICB2ZWM0IHNreUNvbG9yID0gdmVjNCgwLjUsMC41LDEsMSk7ICAvLyAjbm9SZWZsZWN0aW9u
CisKKyAgdmVjMyBoYWxmVmVjdG9yID0gbm9ybWFsaXplKHN1cmZhY2VUb0xpZ2h0KTsKKyAgdmVj
NCBsaXRSID0gbGl0KDEuMCwgMS4wLCAxMC4wKTsKKyAgdmVjNCBvdXRDb2xvciA9IHZlYzQobWl4
KAorICAgICAgc2t5Q29sb3IsCisgICAgICB2ZWM0KDEsMiwzLDQpICogKGxpdFIueSArIGxpdFIu
eiAqIG5vcm1hbFNwZWMuYSksCisgICAgICAxLjAgLSByZWZsZWN0aW9uLnIpLnJnYiwKKyAgICAg
IDEuMCk7CisgIC8vICNmb2dDb2RlCisgIGdsX0ZyYWdDb2xvciA9IG91dENvbG9yOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1
blRlc3RzKFsKKyAgeyB2U2hhZGVyU291cmNlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hh
cmVkVmVydGV4U2hhZGVyIikudGV4dCwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBm
U2hhZGVyU291cmNlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhZ21lbnRTaGFkZXJBIiku
dGV4dCwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwK
KyAgICBwYXNzTXNnOiAnc2hhcmVkIGZyYWdtZW50IHNoYWRlciBzaG91bGQgc3VjY2VlZCcsCisg
IH0sCisgIHsgdlNoYWRlclNvdXJjZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYXJlZFZl
cnRleFNoYWRlciIpLnRleHQsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRl
clNvdXJjZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYWdtZW50U2hhZGVyQiIpLnRleHQs
CisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAg
cGFzc01zZzogJ3NoYXJlZCBmcmFnbWVudCBzaGFkZXIgc2hvdWxkIHN1Y2NlZWQnLAorICB9Citd
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LWFzLWlub3V0LXBhcmFtZXRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1hcy1pbm91dC1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMDQxNjYxNDc3NzFiNGE1NjhjN2RlMWQ5YjcxZjIwZDM2YjJiMzFiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1hcy1pbm91dC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsx
LDExNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+R0xTTCBTdHJ1Y3R1cmUgYXMgSW5vdXQgUGFyYW1ldGVyIFRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNpbXBsZS12cyIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQg
bWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJzdHJ1Y3QtaW5vdXQtcGFyYW1ldGVyLWZzIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KK3N0cnVjdCBDb2xvckRhdGEgeworICB2ZWMzIHJlZDsKKyAgdmVjMyBibHVl
OworfTsKKwordm9pZCBtb2RpZnkoaW5vdXQgQ29sb3JEYXRhIGNvbG9yRGF0YSkgeworICBjb2xv
ckRhdGEucmVkICs9IHZlYzMoMC41LCAwLjAsIDAuMCk7CisgIGNvbG9yRGF0YS5ibHVlICs9IHZl
YzMoMC4wLCAwLjAsIDAuNSk7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgQ29sb3JEYXRhIGNvbG9y
RGF0YTsKKyAgY29sb3JEYXRhLnJlZCA9IHZlYzMoMC41LCAwLjAsIDAuMCk7CisgIGNvbG9yRGF0
YS5ibHVlID0gdmVjMygwLjAsIDAuMCwgMC41KTsKKworICB2ZWMzIHJlZCA9IHZlYzMoMS4wLCAw
LjAsIDAuMCk7CisgIHZlYzMgZ3JlZW4gPSB2ZWMzKDAuMCwgMS4wLCAwLjApOworICB2ZWMzIGJs
dWUgPSB2ZWMzKDAuMCwgMC4wLCAxLjApOworICB2ZWMzIGZpbmFsQ29sb3I7CisKKyAgbW9kaWZ5
KGNvbG9yRGF0YSk7CisKKyAgaWYgKGNvbG9yRGF0YS5yZWQgPT0gcmVkICYmIGNvbG9yRGF0YS5i
bHVlID09IGJsdWUpCisgICAgZmluYWxDb2xvciA9IGdyZWVuOworICBlbHNlCisgICAgZmluYWxD
b2xvciA9IHJlZDsKKworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZpbmFsQ29sb3IsIDEuMCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oIlRlc3Rpbmcgc3RydWN0cyBhcyBpbm91dCBwYXJhbWV0ZXIiKTsKKworZGVidWco
J1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2NyYnVnLmNvbS84NTE4NzAiPmh0
dHA6Ly9jcmJ1Zy5jb20vODUxODcwPC9hPiAvIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9t
cmRvb2IvdGhyZWUuanMvaXNzdWVzLzE0MTM3Ij5odHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3Ro
cmVlLmpzL2lzc3Vlcy8xNDEzNzwvYT4nKTsKKworZnVuY3Rpb24gcHJlcGVuZChmbG9hdFByZWNp
c2lvbikgeworICBsZXQgc291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0cnVjdC1p
bm91dC1wYXJhbWV0ZXItZnMnKS50ZXh0OworICByZXR1cm4gJ3ByZWNpc2lvbiAnICsgZmxvYXRQ
cmVjaXNpb24gKyAnIGZsb2F0O1xuJyArIHNvdXJjZTsKK30KKworbGV0IHRlc3RzID0gWworICB7
CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICBmU2hhZGVyU291cmNlOiBwcmVwZW5kKCdsb3dwJyksCisgICAgZlNoYWRlclN1Y2Nlc3M6
IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcmVuZGVyOiB0cnVlLAorICAgIHBh
c3NNc2c6ICJsb3dwIHN0cnVjdCB1c2VkIGFzIGlub3V0IHBhcmFtZXRlciIsCisgIH0sCisgIHsK
KyAgICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICAgIGZTaGFkZXJTb3VyY2U6IHByZXBlbmQoJ21lZGl1bXAnKSwKKyAgICBmU2hhZGVyU3VjY2Vz
czogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICByZW5kZXI6IHRydWUsCisgICAg
cGFzc01zZzogIm1lZGl1bXAgc3RydWN0IHVzZWQgYXMgaW5vdXQgcGFyYW1ldGVyIiwKKyAgfSwK
K107CisKK2xldCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2xldCBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoKTsKK2xldCBwcmVjaXNpb24gPSBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoZ2wu
RlJBR01FTlRfU0hBREVSLCBnbC5ISUdIX0ZMT0FUKTsKK2xldCBoaWdocFN1cHBvcnRlZCA9IChw
cmVjaXNpb24ucmFuZ2VNaW4gPj0gNjIgJiYgcHJlY2lzaW9uLnJhbmdlTWF4ID49IDYyICYmIHBy
ZWNpc2lvbi5wcmVjaXNpb24gPj0gMTYpOworZGVidWcoImhpZ2hwIGlzIiArIChoaWdocFN1cHBv
cnRlZCA/ICIiIDogIiBub3QiKSArICIgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlcnMiKTsK
KworaWYgKGhpZ2hwU3VwcG9ydGVkKSB7CisgIHRlc3RzLnB1c2goCisgICAgeworICAgICAgdlNo
YWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAg
ZlNoYWRlclNvdXJjZTogcHJlcGVuZCgnaGlnaHAnKSwKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICByZW5kZXI6IHRydWUsCisgICAg
ICBwYXNzTXNnOiAiaGlnaHAgc3RydWN0IHVzZWQgYXMgaW5vdXQgcGFyYW1ldGVyIiwKKyAgICB9
CisgICk7Cit9CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7CitkZWJ1
ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LWFzLW91dC1wYXJhbWV0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtYXMtb3V0LXBhcmFtZXRlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxOTBjNjkxZThkOWFlMWNjMDc5OTliOWY4YTcyZWUyYWY0OGZhMzAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LWFzLW91dC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsx
LDExNSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+R0xTTCBTdHJ1Y3R1cmUgYXMgT3V0IFBhcmFtZXRlciBUZXN0PC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9n
bHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaW1wbGUtdnMiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1h
aW4odm9pZCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0ic3RydWN0LW91dC1wYXJhbWV0ZXItZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorc3RydWN0IENvbG9yRGF0YSB7CisgIHZlYzMgcmVkOworICB2ZWMzIGJsdWU7Cit9
OworCit2b2lkIG1vZGlmeShvdXQgQ29sb3JEYXRhIGNvbG9yRGF0YSkgeworICBjb2xvckRhdGEu
cmVkID0gdmVjMygxLjAsIDAuMCwgMC4wKTsKKyAgY29sb3JEYXRhLmJsdWUgPSB2ZWMzKDAuMCwg
MC4wLCAxLjApOworfQorCit2b2lkIG1haW4oKSB7CisgIENvbG9yRGF0YSBjb2xvckRhdGE7CisK
KyAgdmVjMyByZWQgPSB2ZWMzKDEuMCwgMC4wLCAwLjApOworICB2ZWMzIGdyZWVuID0gdmVjMygw
LjAsIDEuMCwgMC4wKTsKKyAgdmVjMyBibHVlID0gdmVjMygwLjAsIDAuMCwgMS4wKTsKKyAgdmVj
MyBmaW5hbENvbG9yOworCisgIG1vZGlmeShjb2xvckRhdGEpOworCisgIGlmIChjb2xvckRhdGEu
cmVkID09IHJlZCAmJiBjb2xvckRhdGEuYmx1ZSA9PSBibHVlKQorICAgIGZpbmFsQ29sb3IgPSBn
cmVlbjsKKyAgZWxzZQorICAgIGZpbmFsQ29sb3IgPSByZWQ7CisKKyAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChmaW5hbENvbG9yLCAxLjApOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0aW5nIHN0cnVjdHMgYXMgb3V0
IHBhcmFtZXRlciIpOworCitkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRw
Oi8vY3JidWcuY29tLzg1MTg3MyI+aHR0cDovL2NyYnVnLmNvbS84NTE4NzM8L2E+IC8gPGEgaHJl
Zj0iaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9pc3N1ZXMvMTQxMzciPmh0dHBz
Oi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvaXNzdWVzLzE0MTM3PC9hPicpOworCitmdW5j
dGlvbiBwcmVwZW5kKGZsb2F0UHJlY2lzaW9uKSB7CisgIGxldCBzb3VyY2UgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc3RydWN0LW91dC1wYXJhbWV0ZXItZnMnKS50ZXh0OworICByZXR1cm4g
J3ByZWNpc2lvbiAnICsgZmxvYXRQcmVjaXNpb24gKyAnIGZsb2F0O1xuJyArIHNvdXJjZTsKK30K
KworbGV0IHRlc3RzID0gWworICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVyU291cmNlOiBwcmVwZW5kKCdsb3dwJyks
CisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAg
cmVuZGVyOiB0cnVlLAorICAgIHBhc3NNc2c6ICJsb3dwIHN0cnVjdCB1c2VkIGFzIG91dCBwYXJh
bWV0ZXIiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVyU291cmNlOiBwcmVwZW5kKCdtZWRpdW1wJyks
CisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAg
cmVuZGVyOiB0cnVlLAorICAgIHBhc3NNc2c6ICJtZWRpdW1wIHN0cnVjdCB1c2VkIGFzIG91dCBw
YXJhbWV0ZXIiLAorICB9LAorXTsKKworbGV0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworbGV0IGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworbGV0IHByZWNpc2lvbiA9IGdsLmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLkhJR0hfRkxPQVQpOworbGV0IGhp
Z2hwU3VwcG9ydGVkID0gKHByZWNpc2lvbi5yYW5nZU1pbiA+PSA2MiAmJiBwcmVjaXNpb24ucmFu
Z2VNYXggPj0gNjIgJiYgcHJlY2lzaW9uLnByZWNpc2lvbiA+PSAxNik7CitkZWJ1ZygiaGlnaHAg
aXMiICsgKGhpZ2hwU3VwcG9ydGVkID8gIiIgOiAiIG5vdCIpICsgIiBzdXBwb3J0ZWQgaW4gZnJh
Z21lbnQgc2hhZGVycyIpOworCitpZiAoaGlnaHBTdXBwb3J0ZWQpIHsKKyAgdGVzdHMucHVzaCgK
KyAgICB7CisgICAgICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgICAgdlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgICBmU2hhZGVyU291cmNlOiBwcmVwZW5kKCdoaWdocCcpLAorICAgICAg
ZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHJl
bmRlcjogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6ICJoaWdocCBzdHJ1Y3QgdXNlZCBhcyBvdXQgcGFy
YW1ldGVyIiwKKyAgICB9CisgICk7Cit9CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0
cyh0ZXN0cyk7CitkZWJ1ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0
LWFzc2lnbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1hc3NpZ24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZDFkNzdkMDY4NGY3OGNmMTc3MjMzNmVhYzRjY2IyOThlMTRjYjkwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZ2xzbC9taXNjL3N0cnVjdC1hc3NpZ24uaHRtbApAQCAtMCwwICsxLDIxNCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBTdHJ1
Y3R1cmUgQXNzaWdubWVudCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IGlkPSJzaW1wbGUtdnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0ic2ltcGxlLXN0
cnVjdC1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3N0cnVjdCBteV9zdHJ1Y3QgeworICBmbG9hdCBmOworfTsKKworbXlfc3RydWN0IGEg
PSBteV9zdHJ1Y3QoMC4wKTsKK215X3N0cnVjdCBiID0gbXlfc3RydWN0KDEuMCk7CisKK3ZvaWQg
bWFpbih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjAp
OworICAgIGEgPSBiOworICAgIGlmIChhLmYgPT0gMS4wKSB7CisgICAgICAgIGdsX0ZyYWdDb2xv
ci55ID0gMS4wOworICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVjLXN0cnVjdC1m
cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
K3N0cnVjdCBteV9zdHJ1Y3QgeworICB2ZWMzIHY7Cit9OworCitteV9zdHJ1Y3QgYSA9IG15X3N0
cnVjdCh2ZWMzKDAuMCwgMC4wLCAwLjApKTsKK215X3N0cnVjdCBiID0gbXlfc3RydWN0KHZlYzMo
MS4wLCAyLjAsIDMuMCkpOworCit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBhID0gYjsKKyAgICBpZiAoYS52LnggPT0g
MS4wKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvci55ID0gMS4wOworICAgIH0KK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0ibmVzdGVkLXN0cnVjdC1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworc3RydWN0IHMxCit7CisgIGZsb2F0IGY7
Cit9OworCitzdHJ1Y3QgczIKK3sKKyAgczEgczsKK307CisKK3MyIGEgPSBzMihzMSgwLjApKTsK
K3MyIGIgPSBzMihzMSgxLjApKTsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgYSA9IGI7CisgICAgaWYgKGEucy5m
ID09IDEuMCkgeworICAgICAgICBnbF9GcmFnQ29sb3IueSA9IDEuMDsKKyAgICB9Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9Im5lc3RlZC12ZWMtc3RydWN0LWZzIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitzdHJ1Y3QgczEKK3sKKyAg
dmVjMyB2OworfTsKKworc3RydWN0IHMyCit7CisgIHMxIHM7Cit9OworCitzMiBhID0gczIoczEo
dmVjMygwLjAsIDAuMCwgMC4wKSkpOworczIgYiA9IHMyKHMxKHZlYzMoMS4wLCAyLjAsIDMuMCkp
KTsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDEuMCk7CisgICAgYSA9IGI7CisgICAgaWYgKGEucy52LnggPT0gMS4wKSB7CisgICAg
ICAgIGdsX0ZyYWdDb2xvci55ID0gMS4wOworICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iYXJyYXktc3RydWN0LWZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCitzdHJ1Y3QgbXlfc3RydWN0Cit7CisgIGZsb2F0IGZbM107Cit9
OworCit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgICBteV9zdHJ1Y3QgYTsKKyAgICBteV9zdHJ1Y3QgYjsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBhLmZbaV0gPSAwLjA7CisgICAgICAg
IGIuZltpXSA9IGZsb2F0KGkpOworICAgIH0KKworICAgIGEgPSBiOworICAgIGlmIChhLmZbMV0g
PT0gMS4wICYmIGEuZlsyXSA9PSAyLjApIHsKKyAgICAgIGdsX0ZyYWdDb2xvci55ID0gMS4wOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0ic2FtcGxlci1zdHJ1Y3QtZnMiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3N0cnVj
dCBteV9zdHJ1Y3QKK3sKKyAgc2FtcGxlcjJEIHM7Cit9OworCit1bmlmb3JtIG15X3N0cnVjdCBh
OworCit2b2lkIG1haW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgICBteV9zdHJ1Y3QgYjsKKyAgICBiID0gYTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdGlu
ZyBzdHJ1Y3QgYXNzaWdubWVudCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxl
LXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJzaW1wbGUt
c3RydWN0LWZzIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2Vzczog
dHJ1ZSwKKyAgICByZW5kZXI6IHRydWUsCisgICAgcGFzc01zZzogIlNpbXBsZSBzdHJ1Y3Qgd2l0
aCBvbmUgZmxvYXQiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAg
ICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJ2ZWMtc3RydWN0LWZzIiwK
KyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBy
ZW5kZXI6IHRydWUsCisgICAgcGFzc01zZzogIlNpbXBsZSBzdHJ1Y3Qgd2l0aCBhIHZlY3RvciIs
CisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgIHZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIm5lc3RlZC1zdHJ1Y3QtZnMiLAorICAgIGZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRlcjogdHJ1
ZSwKKyAgICBwYXNzTXNnOiAiTmVzdGVkIHN0cnVjdCB3aXRoIGEgZmxvYXQiLAorICB9LAorICB7
CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICBmU2hhZGVySWQ6ICJuZXN0ZWQtdmVjLXN0cnVjdC1mcyIsCisgICAgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcmVuZGVyOiB0cnVlLAorICAg
IHBhc3NNc2c6ICJOZXN0ZWQgc3RydWN0IHdpdGggYSB2ZWN0b3IiLAorICB9LAorICB7CisgICAg
dlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBm
U2hhZGVySWQ6ICJhcnJheS1zdHJ1Y3QtZnMiLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwK
KyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogIkFzc2lnbmluZyBhIHN0cnVj
dCBjb250YWluaW5nIGFuIGFycmF5IHNob3VsZCBub3QgY29tcGlsZSIsCisgIH0sCisgIHsKKyAg
ICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
IGZTaGFkZXJJZDogInNhbXBsZXItc3RydWN0LWZzIiwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFs
c2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJBc3NpZ25pbmcgYSBz
dHJ1Y3QgY29udGFpbmluZyBhIHNhbXBsZXIgc2hvdWxkIG5vdCBjb21waWxlIiwKKyAgfQorXSk7
CitkZWJ1ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LWVxdWFscy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1lcXVhbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGFjNDBlNWM2
OTQ5ZjI3NzVmN2IxM2NmNGMxMTc5MmM0ODgxZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3N0cnVjdC1lcXVhbHMuaHRtbApAQCAtMCwwICsxLDIxNyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBTdHJ1Y3R1cmUgRXF1
YWxzIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9InNpbXBsZS12cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZl
YzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bv
c2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJzaW1wbGUtc3RydWN0LWZzIiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworc3RydWN0
IG15X3N0cnVjdCB7CisgIGZsb2F0IGY7Cit9OworCitteV9zdHJ1Y3QgYSA9IG15X3N0cnVjdCgx
LjApOworbXlfc3RydWN0IGIgPSBteV9zdHJ1Y3QoMS4wKTsKKwordm9pZCBtYWluKHZvaWQpIHsK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICBpZiAo
YSA9PSBiKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvci55ID0gMS4wOworICAgIH0KK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0idmVjLXN0cnVjdC1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0cnVjdCBteV9zdHJ1Y3QgeworICB2ZWMz
IHY7Cit9OworCitteV9zdHJ1Y3QgYSA9IG15X3N0cnVjdCh2ZWMzKDEuMCwgMi4wLCAzLjApKTsK
K215X3N0cnVjdCBiID0gbXlfc3RydWN0KHZlYzMoMS4wLCAyLjAsIDMuMCkpOworCit2b2lkIG1h
aW4odm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsK
KworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yLnkgPSAxLjA7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJuZXN0ZWQtc3RydWN0LWZzIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitzdHJ1Y3QgczEK
K3sKKyAgICBmbG9hdCBmOworfTsKKworc3RydWN0IHMyCit7CisgICAgczEgczsKK307CisKK3My
IGEgPSBzMihzMSgxLjApKTsKK3MyIGIgPSBzMihzMSgxLjApKTsKKwordm9pZCBtYWluKHZvaWQp
IHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICBp
ZiAoYSA9PSBiKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvci55ID0gMS4wOworICAgIH0KK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0ibmVzdGVkLXZlYy1zdHJ1Y3QtZnMiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3N0cnVjdCBzMQorewor
ICAgIHZlYzMgdjsKK307CisKK3N0cnVjdCBzMgoreworICAgIHMxIHM7Cit9OworCitzMiBhID0g
czIoczEodmVjMygxLjAsIDIuMCwgMy4wKSkpOworczIgYiA9IHMyKHMxKHZlYzMoMS4wLCAyLjAs
IDMuMCkpKTsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgIGdsX0ZyYWdD
b2xvci55ID0gMS4wOworICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iYXJyYXktc3Ry
dWN0LWZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCitzdHJ1Y3QgbXlfc3RydWN0Cit7CisgICAgZmxvYXQgZlszXTsKK307CisKK3ZvaWQg
bWFpbih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjAp
OworICAgIG15X3N0cnVjdCBhOworICAgIG15X3N0cnVjdCBiOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMzsgKytpKSB7CisgICAgICAgIGEuZltpXSA9IDAuMDsKKyAgICAgICAgYi5mW2ldID0g
MS4wOworICAgIH0KKworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yLngg
PSAxLjA7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJzYW1wbGVyLXN0cnVjdC1m
cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
Kworc3RydWN0IG15X3N0cnVjdAoreworICAgIHNhbXBsZXIyRCBzOworfTsKKwordW5pZm9ybSBt
eV9zdHJ1Y3QgYTsKK3VuaWZvcm0gbXlfc3RydWN0IGI7CisKK3ZvaWQgbWFpbih2b2lkKSB7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgaWYgKGEg
PT0gYikgeworICAgICAgICBnbF9GcmFnQ29sb3IueCA9IDEuMDsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRl
c3Rpbmcgc3RydWN0IGVxdWFscyIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitHTFNM
Q29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxl
LXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJzaW1wbGUt
c3RydWN0LWZzIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2Vzczog
dHJ1ZSwKKyAgICByZW5kZXI6IHRydWUsCisgICAgcGFzc01zZzogIlNpbXBsZSBzdHJ1Y3Qgd2l0
aCBvbmUgZmxvYXQiLAorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAg
ICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJ2ZWMtc3RydWN0LWZzIiwK
KyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBy
ZW5kZXI6IHRydWUsCisgICAgcGFzc01zZzogIlNpbXBsZSBzdHJ1Y3Qgd2l0aCBhIHZlY3RvciIs
CisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgIHZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIm5lc3RlZC1zdHJ1Y3QtZnMiLAorICAgIGZTaGFk
ZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHJlbmRlcjogdHJ1
ZSwKKyAgICBwYXNzTXNnOiAiTmVzdGVkIHN0cnVjdCB3aXRoIGEgZmxvYXQiLAorICB9LAorICB7
CisgICAgdlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICBmU2hhZGVySWQ6ICJuZXN0ZWQtdmVjLXN0cnVjdC1mcyIsCisgICAgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcmVuZGVyOiB0cnVlLAorICAg
IHBhc3NNc2c6ICJOZXN0ZWQgc3RydWN0IHdpdGggYSB2ZWN0b3IiLAorICB9LAorICB7CisgICAg
dlNoYWRlcklkOiAic2ltcGxlLXZzIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBm
U2hhZGVySWQ6ICJhcnJheS1zdHJ1Y3QtZnMiLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwK
KyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogIkNvbXBhcmluZyBhIHN0cnVj
dCBjb250YWluaW5nIGFuIGFycmF5IHNob3VsZCBub3QgY29tcGlsZSIsCisgIH0sCisgIHsKKyAg
ICB2U2hhZGVySWQ6ICJzaW1wbGUtdnMiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
IGZTaGFkZXJJZDogInNhbXBsZXItc3RydWN0LWZzIiwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFs
c2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJDb21wYXJpbmcgYSBz
dHJ1Y3QgY29udGFpbmluZyBhIHNhbXBsZXIgc2hvdWxkIG5vdCBjb21waWxlIiwKKyAgfQorXSk7
CitkZWJ1ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtbWl4ZWQt
YXJyYXktZGVjbGFyYXRvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtbWl4ZWQtYXJyYXktZGVj
bGFyYXRvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjZWU5ZDBmNmI2YmQ4OTFhYjcyZTZiN2RiMmI1
MzNjNmE0MGMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1taXhlZC1hcnJh
eS1kZWNsYXJhdG9ycy5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIgLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
Kzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hh
ZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyAgICBzdHJ1Y3QgUyB7CisgICAgICAgICQodHlw
ZSkgZmllbGQ7CisgICAgfTsKKyAgICBTIHMxWzJdLCBzMjsKKyAgICAkKHZhcikuZmllbGQgPSAk
KGluaXRpYWxpemVyKTsKKyAgICBnbF9GcmFnQ29sb3IgPSAkKGFzVmVjNCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCBt
aXhlZCAoYXJyYXkgdnMuIG5vdCBhcnJheSkgc3RydWN0IGRlY2xhcmF0b3JzIHdvcmsgY29ycmVj
dGx5LiIpOwordmFyIHRlc3RzID0gW107Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
dHlwZUluZm9zID0gWworICAgIHsgdHlwZTogJ2Zsb2F0JywgICAgaW5pdGlhbGl6ZXI6ICcxLjAn
LCAgICAgICAgICAgICAgICAgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KDAuMCwkKHZhcikuZmllbGQs
MC4wLDEuMCknIH0sCisgICAgeyB0eXBlOiAndmVjMicsICAgICBpbml0aWFsaXplcjogJ3ZlYzIo
MC4wLCAxLjApJywgICAgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQoJCh2YXIpLmZpZWxkLDAuMCwx
LjApJyB9LAorICAgIHsgdHlwZTogJ3ZlYzMnLCAgICAgaW5pdGlhbGl6ZXI6ICd2ZWMzKDAuMCwg
MS4wLCAwLjApJywgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KCQodmFyKS5maWVsZCwxLjApJyB9LAor
ICAgIHsgdHlwZTogJ3ZlYzQnLCAgICAgaW5pdGlhbGl6ZXI6ICd2ZWM0KDAuMCwgMS4wLCAwLjAs
IDEuMCknLCAgICBhc1ZlYzQ6ICckKHZhcikuZmllbGQnIH0sCisgICAgeyB0eXBlOiAnaW50Jywg
ICAgICBpbml0aWFsaXplcjogJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzVmVjNDog
J3ZlYzQoMC4wLCQodmFyKS5maWVsZCwwLjAsMS4wKScgfSwKKyAgICB7IHR5cGU6ICdpdmVjMics
ICAgIGluaXRpYWxpemVyOiAnaXZlYzIoMCwgMSknLCAgICAgICAgICAgICAgICAgYXNWZWM0OiAn
dmVjNCgkKHZhcikuZmllbGQsMC4wLDEuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzMnLCAgICBp
bml0aWFsaXplcjogJ2l2ZWMzKDAsIDEsIDApJywgICAgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQo
JCh2YXIpLmZpZWxkLDEuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzQnLCAgICBpbml0aWFsaXpl
cjogJ2l2ZWM0KDAsIDEsIDAsIDEpJywgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQoJCh2YXIpLmZp
ZWxkKScgfSwKKyAgICB7IHR5cGU6ICdib29sJywgICAgIGluaXRpYWxpemVyOiAndHJ1ZScsICAg
ICAgICAgICAgICAgICAgICAgICAgYXNWZWM0OiAndmVjNCgwLjAsJCh2YXIpLmZpZWxkLDAuMCwx
LjApJyB9LAorICAgIHsgdHlwZTogJ2J2ZWMyJywgICAgaW5pdGlhbGl6ZXI6ICdidmVjMihmYWxz
ZSwgdHJ1ZSknLCAgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KCQodmFyKS5maWVsZCwwLjAsMS4wKScg
fSwKKyAgICB7IHR5cGU6ICdidmVjMycsICAgIGluaXRpYWxpemVyOiAnYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKScsICAgYXNWZWM0OiAndmVjNCgkKHZhcikuZmllbGQsMS4wKScgfSwKKyAgICB7
IHR5cGU6ICdidmVjNCcsICAgIGluaXRpYWxpemVyOiAnYnZlYzQoZmFsc2UsdHJ1ZSxmYWxzZSx0
cnVlKScsYXNWZWM0OiAndmVjNCgkKHZhcikuZmllbGQpJyB9LAorXTsKK1snczFbMF0nLCAnczFb
MV0nLCAnczInXS5mb3JFYWNoKGZ1bmN0aW9uKHZhck5hbWUpIHsKKyAgICB0eXBlSW5mb3MuZm9y
RWFjaChmdW5jdGlvbiAodHlwZUluZm8pIHsKKyAgICAgICAgdmFyIHJlcGxhY2VQYXJhbXMgPSB7
CisgICAgICAgICAgICB0eXBlOiB0eXBlSW5mby50eXBlLAorICAgICAgICAgICAgaW5pdGlhbGl6
ZXI6IHR5cGVJbmZvLmluaXRpYWxpemVyLAorICAgICAgICAgICAgdmFyOiB2YXJOYW1lLAorICAg
ICAgICAgICAgYXNWZWM0OiB3dHUucmVwbGFjZVBhcmFtcyh0eXBlSW5mby5hc1ZlYzQsIHt2YXI6
IHZhck5hbWV9KQorICAgICAgICB9OworICAgICAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgICAg
IGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHd0dS5nZXRTY3JpcHQoJ2ZyYWdtZW50
U2hhZGVyJyksIHJlcGxhY2VQYXJhbXMpLAorICAgICAgICAgICAgcGFzc01zZzogdHlwZUluZm8u
dHlwZSwKKyAgICAgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgICAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgICByZW5kZXI6dHJ1ZQorICAgICAgICB9KTsKKyAg
ICB9KTsKK30pOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKHRlc3RzKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LW5lc3RpbmctZXhjZWVkcy1tYXhpbXVtLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9nbHNsL21pc2Mvc3RydWN0LW5lc3RpbmctZXhjZWVkcy1tYXhpbXVtLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzcyZTQ3ZDcwZGMzM2RkMTVkZmYzNmRmNmU5M2E3M2EzMzBmY2Q4YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtbmVzdGluZy1leGNlZWRzLW1heGltdW0uaHRtbApAQCAt
MCwwICsxLDU1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNs
LWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4
U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisvLyBzaGFkZXIg
d2l0aCB0b28tZGVlcCBzdHJ1Y3QgbmVzdGluZyBzaG91bGQgZmFpbCBwZXIgV2ViR0wgc3BlYwor
c3RydWN0IG5lc3Rpbmc1IHsKKyAgdmVjNCB2ZWNmaWVsZDsKK307CisKK3N0cnVjdCBuZXN0aW5n
NCB7CisgIG5lc3Rpbmc1IGZpZWxkNTsKK307CisKK3N0cnVjdCBuZXN0aW5nMyB7CisgIG5lc3Rp
bmc0IGZpZWxkNDsKK307CisKK3N0cnVjdCBuZXN0aW5nMiB7CisgIG5lc3RpbmczIGZpZWxkMzsK
K307CisKK3N0cnVjdCBuZXN0aW5nMSB7CisgIG5lc3RpbmcyIGZpZWxkMjsKK307CisKK3VuaWZv
cm0gbmVzdGluZzEgdW5pZm9ybTE7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0g
dW5pZm9ybTEuZmllbGQyLmZpZWxkMy5maWVsZDQuZmllbGQ1LnZlY2ZpZWxkOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LW5lc3Rpbmctb2YtdmFyaWFi
bGUtbmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtbmVzdGluZy1vZi12YXJpYWJsZS1uYW1l
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3NjI2MjgxNDEyYWY1MjI5M2Q5MzM1YmViNTlkMjdiYTgwYzcx
MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LW5lc3Rpbmctb2YtdmFyaWFi
bGUtbmFtZXMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiIC8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8dGl0
bGU+PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIg
dHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CitzdHJ1Y3QgUyB7ICQob3V0ZXJfdHlwZSkgdTsgfTsKK3ZvaWQgbWFpbigpIHsKKyAg
ICBTIFM7ICAgLy8gVGhpcyBpcyBsZWdhbCwgJ1MnIGFzIGEgdHlwZW5hbWUgaXMgZGVmaW5lZCBp
biBhbm90aGVyIHNjb3BlLgorICAgIHsKKyAgICAgICAgc3RydWN0IFMgeyAkKGlubmVyX3R5cGUp
IGE7IH07ICAvLyBUaGlzIGlzIGxlZ2FsIGFzIHdlbGwsICdTJyBpcyBub3cgZGVmaW5lZCBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYW5jZXN0b3Igc2NvcGUKKyAgICAgICAgUyBuZXd2YXI7Cisg
ICAgICAgIG5ld3Zhci5hID0gJChpbml0aWFsaXplcik7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9
ICQoZnJhZ0NvbG9yKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZGVmaW5pbmcgYSB0eXBl
bmFtZSBpbiBhIG5ldyBzY29wZSB3aGVuIHRoZSB0eXBlbmFtZSBpcyB0aGUgbmFtZSBvZiBhIHZh
cmlhYmxlIHRoYXQgaGlkZXMgYSB0eXBlbmFtZSBkZWNsYXJhdGlvbiBzdWNjZWVkcyBmb3IgYWxs
IGNvbWJpbmF0aW9ucyBvZiBHTFNMIHR5cGVzLiIpOwordmFyIHRlc3RzID0gW107Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgdHlwZUluZm8gPSBbCisgICAgeyBUeXBlOiAnZmxvYXQn
LCAgICBpbml0aWFsaXplcjogJzEuMCcsICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdDb2xv
cjogJ3ZlYzQoMC4wLCBuZXd2YXIuYSwgMC4wLCAxLjApJyB9LAorICAgIHsgVHlwZTogJ3ZlYzIn
LCAgICAgaW5pdGlhbGl6ZXI6ICd2ZWMyKDAuMCwgMS4wKScsICAgICAgICAgICAgICBmcmFnQ29s
b3I6ICd2ZWM0KG5ld3Zhci5hLCAwLjAsIDEuMCknIH0sCisgICAgeyBUeXBlOiAndmVjMycsICAg
ICBpbml0aWFsaXplcjogJ3ZlYzMoMC4wLCAxLjAsIDAuMCknLCAgICAgICAgIGZyYWdDb2xvcjog
J3ZlYzQobmV3dmFyLmEsIDEuMCknIH0sCisgICAgeyBUeXBlOiAndmVjNCcsICAgICBpbml0aWFs
aXplcjogJ3ZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKScsICAgIGZyYWdDb2xvcjogJ25ld3Zhci5h
JyB9LAorICAgIHsgVHlwZTogJ2ludCcsICAgICAgaW5pdGlhbGl6ZXI6ICcxJywgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmcmFnQ29sb3I6ICd2ZWM0KDAuMCwgbmV3dmFyLmEsIDAuMCwgMS4w
KScgfSwKKyAgICB7IFR5cGU6ICdpdmVjMicsICAgIGluaXRpYWxpemVyOiAnaXZlYzIoMCwgMSkn
LCAgICAgICAgICAgICAgICAgZnJhZ0NvbG9yOiAndmVjNChuZXd2YXIuYSwgMC4wLCAxLjApJyB9
LAorICAgIHsgVHlwZTogJ2l2ZWMzJywgICAgaW5pdGlhbGl6ZXI6ICdpdmVjMygwLCAxLCAwKScs
ICAgICAgICAgICAgICBmcmFnQ29sb3I6ICd2ZWM0KG5ld3Zhci5hLCAxLjApJyB9LAorICAgIHsg
VHlwZTogJ2l2ZWM0JywgICAgaW5pdGlhbGl6ZXI6ICdpdmVjNCgwLCAxLCAwLCAxKScsICAgICAg
ICAgICBmcmFnQ29sb3I6ICd2ZWM0KG5ld3Zhci5hKScgfSwKKyAgICB7IFR5cGU6ICdib29sJywg
ICAgIGluaXRpYWxpemVyOiAndHJ1ZScsICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ0NvbG9y
OiAndmVjNCgwLjAsIG5ld3Zhci5hLCAwLjAsIDEuMCknIH0sCisgICAgeyBUeXBlOiAnYnZlYzIn
LCAgICBpbml0aWFsaXplcjogJ2J2ZWMyKGZhbHNlLCB0cnVlKScsICAgICAgICAgIGZyYWdDb2xv
cjogJ3ZlYzQobmV3dmFyLmEsIDAuMCwgMS4wKScgfSwKKyAgICB7IFR5cGU6ICdidmVjMycsICAg
IGluaXRpYWxpemVyOiAnYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKScsICAgZnJhZ0NvbG9yOiAn
dmVjNChuZXd2YXIuYSwgMS4wKScgfSwKKyAgICB7IFR5cGU6ICdidmVjNCcsICAgIGluaXRpYWxp
emVyOiAnYnZlYzQoZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKScsZnJhZ0NvbG9yOiAndmVjNChuZXd2
YXIuYSknIH0sCitdOwordHlwZUluZm8uZm9yRWFjaChmdW5jdGlvbiAob3V0ZXJUeXBlKSB7Cisg
ICAgdHlwZUluZm8uZm9yRWFjaChmdW5jdGlvbiAoaW5uZXJUeXBlKSB7CisgICAgICAgIHZhciBy
ZXBsYWNlUGFyYW1zID0geworICAgICAgICAgICAgb3V0ZXJfdHlwZTogb3V0ZXJUeXBlLlR5cGUs
CisgICAgICAgICAgICBpbm5lcl90eXBlOiBpbm5lclR5cGUuVHlwZSwKKyAgICAgICAgICAgIC8v
IHVzZSB0aGUgaW5pdGlhbGl6ZXIgYW5kIGZyYWdDb2xvciBmb3IgdGhlIGlubmVyIHR5cGUuIEl0
cyBkZWZpbml0aW9uIHNob3VsZCBvdmVycmlkZSB0aGUgdmFyaWFibGUgbmFtZSBpbiB0aGUgb3V0
ZXJzY29wZS4KKyAgICAgICAgICAgIGluaXRpYWxpemVyOiBpbm5lclR5cGUuaW5pdGlhbGl6ZXIs
CisgICAgICAgICAgICBmcmFnQ29sb3I6IGlubmVyVHlwZS5mcmFnQ29sb3IKKyAgICAgICAgfTsK
KyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICBmU2hhZGVyU291cmNlOiB3dHUucmVw
bGFjZVBhcmFtcyh3dHUuZ2V0U2NyaXB0KCdmcmFnbWVudFNoYWRlcicpLCByZXBsYWNlUGFyYW1z
KSwKKyAgICAgICAgICAgIHBhc3NNc2c6ICdPdXRlciBzdHJ1Y3QgdHlwZTogJyArIG91dGVyVHlw
ZS5UeXBlICsgJyBpbm5lciBzdHJ1Y3QgdHlwZTogJyArIGlubmVyVHlwZS5UeXBlLAorICAgICAg
ICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgICAgICAgICAgIHJlbmRlcjogdHJ1ZQorICAgICAgICB9KTsKKyAgICB9KQorfSkKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9taXNjL3N0cnVjdC1uZXN0aW5nLXVuZGVyLW1heGltdW0uaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1
Y3QtbmVzdGluZy11bmRlci1tYXhpbXVtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcwN2U1NzAwN2E3MDMw
OTY2M2EyZmZkMjE0ZTlmNmM3YjI0MTM4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9z
dHJ1Y3QtbmVzdGluZy11bmRlci1tYXhpbXVtLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVyIHdpdGggc3RydWN0IG5lc3Rpbmcg
bGVzcyB0aGFuIG1heGltdW0gaW4gV2ViR0wgc3BlYyBzaG91bGQgc3VjY2VlZAorc3RydWN0IG5l
c3Rpbmc0IHsKKyAgICB2ZWM0IHZlY2ZpZWxkOworfTsKKworc3RydWN0IG5lc3RpbmczIHsKKyAg
ICBuZXN0aW5nNCBmaWVsZDQ7Cit9OworCitzdHJ1Y3QgbmVzdGluZzIgeworICAgIG5lc3Rpbmcz
IGZpZWxkMzsKK307CisKK3N0cnVjdCBuZXN0aW5nMSB7CisgICAgbmVzdGluZzIgZmllbGQyOwor
fTsKKwordW5pZm9ybSBuZXN0aW5nMSB1bmlmb3JtMTsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
UG9zaXRpb24gPSB1bmlmb3JtMS5maWVsZDIuZmllbGQzLmZpZWxkNC52ZWNmaWVsZDsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5y
dW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1zcGVjaWZpZXJzLWlu
LXVuaWZvcm1zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3RydWN0LXNwZWNpZmllcnMtaW4tdW5pZm9ybXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzBjNzA0YTI5MTU0NDlkMGQ4YTFkNzU5ZmRjMWIwYTViYjNhYmI2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N0cnVjdC1zcGVjaWZpZXJzLWluLXVuaWZv
cm1zLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHRpdGxlPjwv
dGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwordW5pZm9ybSBzdHJ1Y3QgUyB7ICQodHlwZSkgZmllbGQ7fSBzOwordm9pZCBtYWluKCkgewor
ICAgIC8vIEFsbCB1bmlmb3JtcyBhcmUgcmVxdWlyZWQgdG8gYmUgemVybyBpbml0aWFsaXplZC4g
QWRkIHRoZSBjb2xvciBncmVlbgorICAgIC8vIHRvIG1ha2UgdGhlIHJlbmRlcmluZyB0ZXN0IHBh
c3MuCisgICAgZ2xfRnJhZ0NvbG9yID0gJChhc1ZlYzQpICsgdmVjNCgwLjAsIDEuMCwgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
IlZlcmlmaWVzIHRoYXQgc3RydWN0dXJlIHNwZWNpZmllcnMgd29yayB3aXRoIHVuaWZvcm1zLiIp
OwordmFyIHRlc3RzID0gW107Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgdHlwZUlu
Zm9zID0gWworICAgIHsgdHlwZTogJ2Zsb2F0JywgICAgYXNWZWM0OiAndmVjNCgwLjAscy5maWVs
ZCwwLjAsMC4wKScgfSwKKyAgICB7IHR5cGU6ICd2ZWMyJywgICAgIGFzVmVjNDogJ3ZlYzQocy5m
aWVsZCwwLjAsMC4wKScgfSwKKyAgICB7IHR5cGU6ICd2ZWMzJywgICAgIGFzVmVjNDogJ3ZlYzQo
cy5maWVsZCwwLjApJyB9LAorICAgIHsgdHlwZTogJ3ZlYzQnLCAgICAgYXNWZWM0OiAncy5maWVs
ZCcgfSwKKyAgICB7IHR5cGU6ICdpbnQnLCAgICAgIGFzVmVjNDogJ3ZlYzQoMC4wLHMuZmllbGQs
MC4wLDAuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzInLCAgICBhc1ZlYzQ6ICd2ZWM0KHMuZmll
bGQsMC4wLDAuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzMnLCAgICBhc1ZlYzQ6ICd2ZWM0KHMu
ZmllbGQsMC4wKScgfSwKKyAgICB7IHR5cGU6ICdpdmVjNCcsICAgIGFzVmVjNDogJ3ZlYzQocy5m
aWVsZCknIH0sCisgICAgeyB0eXBlOiAnYm9vbCcsICAgICBhc1ZlYzQ6ICd2ZWM0KDAuMCxzLmZp
ZWxkLDAuMCwwLjApJyB9LAorICAgIHsgdHlwZTogJ2J2ZWMyJywgICAgYXNWZWM0OiAndmVjNChz
LmZpZWxkLDAuMCwwLjApJyB9LAorICAgIHsgdHlwZTogJ2J2ZWMzJywgICAgYXNWZWM0OiAndmVj
NChzLmZpZWxkLDAuMCknIH0sCisgICAgeyB0eXBlOiAnYnZlYzQnLCAgICBhc1ZlYzQ6ICd2ZWM0
KHMuZmllbGQpJyB9LAorXTsKK3R5cGVJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlSW5mbykg
eworICAgIHZhciByZXBsYWNlUGFyYW1zID0geworICAgICAgICB0eXBlOiB0eXBlSW5mby50eXBl
LAorICAgICAgICBhc1ZlYzQ6IHR5cGVJbmZvLmFzVmVjNAorICAgIH07CisgICAgdGVzdHMucHVz
aCh7CisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKHd0dS5nZXRTY3Jp
cHQoJ2ZyYWdtZW50U2hhZGVyJyksIHJlcGxhY2VQYXJhbXMpLAorICAgICAgICBwYXNzTXNnOiB0
eXBlSW5mby50eXBlLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgICAgICAgIHJlbmRlcjp0cnVlCisgICAgfSk7Cit9KTsKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9t
aXNjL3N0cnVjdC11bmFyeS1vcGVyYXRvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtdW5hcnkt
b3BlcmF0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE0YTg2MGZkODIyMzgyOTgwNzg4ZDE3NmNjMDNm
ZmMwZDQ4ZDg0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zdHJ1Y3QtdW5hcnktb3Bl
cmF0b3JzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIiAvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHRpdGxl
PjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0Oworc3RydWN0IFMgeyAkKHR5cGUpIHQ7IH07Cit2b2lkIG1haW4oKSB7CisgICAgUyBhOwor
ICAgIGEudCA9ICQoaW5pdGlhbGl6ZXIpOworICAgIFMgYiA9ICQob3BlcmF0b3IpYTsgICAvLyBV
bmFyeSBvcGVyYXRvcnMgbm90IGFsbG93ZWQKKyAgICBnbF9GcmFnQ29sb3IgPSAkKGZyYWdDb2xv
cik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdW5hcnkgb3BlcmF0b3JzICssICsrLCAtLCAtLSwgISwg
YW5kIH4gZG8gbm90IHdvcmsgb24gc3RydWN0dXJlcy4gUGVyIHRoZSBzcGVjLCBmaWVsZCBzZWxl
Y3RvcnMsIGVxdWFsaXR5IGFuZCBhc3NpZ25tZW50IGFyZSB0aGUgb25seSBvcGVyYXRvcnMgYWxs
b3dlZCBvbiBzdHJ1Y3R1cmVzLiIpOwordmFyIHRlc3RzID0gW107Cit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgb3BlcmF0b3JzID0gWycrJywgJysrJywgJy0nLCAnLS0nLCAnIScsICd+
J10KK3ZhciB0eXBlSW5mb3MgPSBbCisgICAgeyB0eXBlOiAnZmxvYXQnLCAgICBpbml0aWFsaXpl
cjogJzEuMCcsICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdDb2xvcjogJ3ZlYzQoMC4wLCBi
LnQsIDAuMCwgMS4wKScgfSwKKyAgICB7IHR5cGU6ICd2ZWMyJywgICAgIGluaXRpYWxpemVyOiAn
dmVjMigwLjAsIDEuMCknLCAgICAgICAgICAgICAgZnJhZ0NvbG9yOiAndmVjNChiLnQsIDAuMCwg
MS4wKScgfSwKKyAgICB7IHR5cGU6ICd2ZWMzJywgICAgIGluaXRpYWxpemVyOiAndmVjMygwLjAs
IDEuMCwgMC4wKScsICAgICAgICAgZnJhZ0NvbG9yOiAndmVjNChiLnQsIDEuMCknIH0sCisgICAg
eyB0eXBlOiAndmVjNCcsICAgICBpbml0aWFsaXplcjogJ3ZlYzQoMC4wLCAxLjAsIDAuMCwgMS4w
KScsICAgIGZyYWdDb2xvcjogJ2IudCcgfSwKKyAgICB7IHR5cGU6ICdpbnQnLCAgICAgIGluaXRp
YWxpemVyOiAnMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ0NvbG9yOiAndmVjNCgw
LjAsIGIudCwgMC4wLCAxLjApJyB9LAorICAgIHsgdHlwZTogJ2l2ZWMyJywgICAgaW5pdGlhbGl6
ZXI6ICdpdmVjMigwLCAxKScsICAgICAgICAgICAgICAgICBmcmFnQ29sb3I6ICd2ZWM0KGIudCwg
MC4wLCAxLjApJyB9LAorICAgIHsgdHlwZTogJ2l2ZWMzJywgICAgaW5pdGlhbGl6ZXI6ICdpdmVj
MygwLCAxLCAwKScsICAgICAgICAgICAgICBmcmFnQ29sb3I6ICd2ZWM0KGIudCwgMS4wKScgfSwK
KyAgICB7IHR5cGU6ICdpdmVjNCcsICAgIGluaXRpYWxpemVyOiAnaXZlYzQoMCwgMSwgMCwgMSkn
LCAgICAgICAgICAgZnJhZ0NvbG9yOiAndmVjNChiLnQpJyB9LAorICAgIHsgdHlwZTogJ2Jvb2wn
LCAgICAgaW5pdGlhbGl6ZXI6ICd0cnVlJywgICAgICAgICAgICAgICAgICAgICAgICBmcmFnQ29s
b3I6ICd2ZWM0KDAuMCwgYi50LCAwLjAsIDEuMCknIH0sCisgICAgeyB0eXBlOiAnYnZlYzInLCAg
ICBpbml0aWFsaXplcjogJ2J2ZWMyKGZhbHNlLCB0cnVlKScsICAgICAgICAgIGZyYWdDb2xvcjog
J3ZlYzQoYi50LCAwLjAsIDEuMCknIH0sCisgICAgeyB0eXBlOiAnYnZlYzMnLCAgICBpbml0aWFs
aXplcjogJ2J2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSknLCAgIGZyYWdDb2xvcjogJ3ZlYzQoYi50
LCAxLjApJyB9LAorICAgIHsgdHlwZTogJ2J2ZWM0JywgICAgaW5pdGlhbGl6ZXI6ICdidmVjNChm
YWxzZSx0cnVlLGZhbHNlLHRydWUpJyxmcmFnQ29sb3I6ICd2ZWM0KGIudCknIH0sCitdOworb3Bl
cmF0b3JzLmZvckVhY2goZnVuY3Rpb24gKG9wZXJhdG9yKSB7CisgICAgdHlwZUluZm9zLmZvckVh
Y2goZnVuY3Rpb24gKHR5cGVJbmZvKSB7CisgICAgICAgIHZhciByZXBsYWNlUGFyYW1zID0gewor
ICAgICAgICAgICAgaW5pdGlhbGl6ZXI6IHR5cGVJbmZvLmluaXRpYWxpemVyLAorICAgICAgICAg
ICAgdHlwZTogdHlwZUluZm8udHlwZSwKKyAgICAgICAgICAgIGZyYWdDb2xvcjogdHlwZUluZm8u
ZnJhZ0NvbG9yLAorICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLAorICAgICAgICB9Owor
ICAgICAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5yZXBs
YWNlUGFyYW1zKHd0dS5nZXRTY3JpcHQoJ2ZyYWdtZW50U2hhZGVyJyksIHJlcGxhY2VQYXJhbXMp
LAorICAgICAgICAgICAgcGFzc01zZzogJ1VuYXJ5IG9wZXJhdG9yICcgKyBvcGVyYXRvciArICcg
Y2Fubm90IGJlIHVzZWQgb24gYSBzdHJ1Y3Qgd2l0aCBhICcgKyB0eXBlSW5mby50eXBlLAorICAg
ICAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICAgICAgbGlua1N1Y2Nlc3M6
IGZhbHNlCisgICAgICAgIH0pOworICAgIH0pOworfSk7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIu
cnVuVGVzdHModGVzdHMpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy90ZXJuYXJ5LW9wZXJh
dG9yLW9uLWFycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3Rlcm5hcnktb3BlcmF0b3Itb24tYXJyYXlz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWRlZGRjNWUzMzI1NTQ0ZTUzMmRlNjM1MDJiNTRmMDNjYTU0M2Ux
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy90ZXJuYXJ5LW9wZXJhdG9yLW9uLWFycmF5
cy5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHMgLSBUZXJu
YXJ5IG9wZXJhdG9yIG9uIGFycmF5czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItYXJyYXktdGVybmFyeS1v
cGVyYXRvciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZvaWQgbWFpbigpCit7CisgIGZsb2F0IGFbM107CisgIGZsb2F0IGJbM107CisgIGZs
b2F0IGNbM10gPSB0cnVlID8gYSA6IGI7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXItc3RydWN0LWFycmF5LXRlcm5hcnktb3BlcmF0b3IiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitzdHJ1Y3QgTXlTdHJ1Y3QgeworICAgIGJv
b2wgYVszXTsKK307CisKK3ZvaWQgbWFpbigpCit7CisgIE15U3RydWN0IGI7CisgIE15U3RydWN0
IGM7CisgIE15U3RydWN0IGQgPSB0cnVlID8gYiA6IGM7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHRlcm5hcnkgb3BlcmF0b3JzIGZv
ciBzdHJ1Y3RzIGFuZCBhcnJheXMuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0
cyhbCit7IGZTaGFkZXJJZDogJ2ZzaGFkZXItYXJyYXktdGVybmFyeS1vcGVyYXRvcicsCisgIGZT
aGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAi
VXNpbmcgdGVybmFyeSBvcGVyYXRvcnMgd2l0aCBhcnJheXMgaXMgbm90IGFsbG93ZWQiLAorfSwK
K3sgZlNoYWRlcklkOiAnZnNoYWRlci1zdHJ1Y3QtYXJyYXktdGVybmFyeS1vcGVyYXRvcicsCisg
IGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNn
OiAiQnkgaW1wbGljYXRpb24sIHVzaW5nIHRlcm5hcnkgb3BlcmF0b3JzIHdpdGggc3RydWN0cyBj
b250YWluaW5nIGFycmF5cyBpcyBub3QgYWxsb3dlZCIsCit9LAorXSk7CisKK2RlYnVnKCIiKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvdGVybmFyeS1vcGVyYXRvcnMtaW4tZ2xvYmFsLWlu
aXRpYWxpemVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3Rlcm5hcnktb3BlcmF0b3JzLWluLWdsb2JhbC1p
bml0aWFsaXplcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGZlNTkyYWQwNjZlZDg0ZTJjMzE3OWVhNzQ1
ZDNkODg2ZGQ2ZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3Rlcm5hcnktb3BlcmF0
b3JzLWluLWdsb2JhbC1pbml0aWFsaXplcnMuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10
ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8dGl0bGU+VGVybmFyeSBPcGVyYXRvcnMgaW4gR2xvYmFsIEluaXRpYWxp
emVyczwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIi
IHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworY29uc3QgJCh0eXBlKSBncmVlbiA9ICQoZ3JlZW4pOworY29uc3QgJCh0eXBlKSBi
bGFjayA9ICQoYmxhY2spOworJCh0eXBlKSB2YXIgPSAodHJ1ZSkgPyBncmVlbiA6IGJsYWNrOwor
dm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9ICQoYXNWZWM0KTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0ZXJuYXJ5IG9wZXJhdG9ycyBjYW4gYmUgdXNlZCBpbiBnbG9iYWwgaW5pdGlhbGl6
ZXJzLiIpOwordmFyIHRlc3RzID0gW107Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
dHlwZUluZm9zID0gWworICAgIHsgdHlwZTogJ2Zsb2F0JywgZ3JlZW46ICcxLjAnLCAgICAgICAg
ICAgICAgICAgICAgICAgICBibGFjazogJzAuMCcsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFzVmVjNDogJ3ZlYzQoMC4wLHZhciwwLjAsMS4wKScgfSwKKyAgICB7IHR5cGU6ICd2ZWMyJywg
IGdyZWVuOiAndmVjMigwLjAsMS4wKScsICAgICAgICAgICAgICAgYmxhY2s6ICd2ZWMyKDAuMCww
LjApJywgICAgICAgICAgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KHZhciwwLjAsMS4wKScgfSwKKyAg
ICB7IHR5cGU6ICd2ZWMzJywgIGdyZWVuOiAndmVjMygwLjAsMS4wLDAuMCknLCAgICAgICAgICAg
YmxhY2s6ICd2ZWMzKDAuMCwwLjAsMC4wKScsICAgICAgICAgICAgICBhc1ZlYzQ6ICd2ZWM0KHZh
ciwxLjApJyB9LAorICAgIHsgdHlwZTogJ3ZlYzQnLCAgZ3JlZW46ICd2ZWM0KDAuMCwxLjAsMC4w
LDEuMCknLCAgICAgICBibGFjazogJ3ZlYzQoMC4wLDAuMCwwLjAsMC4wKScsICAgICAgICAgIGFz
VmVjNDogJ3ZhcicgfSwKKyAgICB7IHR5cGU6ICdpbnQnLCAgIGdyZWVuOiAnMScsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmxhY2s6ICcwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhc1ZlYzQ6ICd2ZWM0KDAuMCx2YXIsMC4wLDEuMCknIH0sCisgICAgeyB0eXBlOiAnaXZlYzIn
LCBncmVlbjogJ2l2ZWMyKDAsMSknLCAgICAgICAgICAgICAgICAgIGJsYWNrOiAnaXZlYzIoMCww
KScsICAgICAgICAgICAgICAgICAgICAgYXNWZWM0OiAndmVjNCh2YXIsMC4wLDEuMCknIH0sCisg
ICAgeyB0eXBlOiAnaXZlYzMnLCBncmVlbjogJ2l2ZWMzKDAsMSwwKScsICAgICAgICAgICAgICAg
IGJsYWNrOiAnaXZlYzMoMCwwLDApJywgICAgICAgICAgICAgICAgICAgYXNWZWM0OiAndmVjNCh2
YXIsMS4wKScgfSwKKyAgICB7IHR5cGU6ICdpdmVjNCcsIGdyZWVuOiAnaXZlYzQoMCwxLDAsMSkn
LCAgICAgICAgICAgICAgYmxhY2s6ICdpdmVjNCgwLDAsMCwwKScsICAgICAgICAgICAgICAgICBh
c1ZlYzQ6ICd2ZWM0KHZhciknIH0sCisgICAgeyB0eXBlOiAnYm9vbCcsICBncmVlbjogJ3RydWUn
LCAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOiAnZmFsc2UnLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXNWZWM0OiAndmVjNCgwLjAsdmFyLDAuMCwxLjApJyB9LAorICAgIHsgdHlwZTog
J2J2ZWMyJywgZ3JlZW46ICdidmVjMihmYWxzZSx0cnVlKScsICAgICAgICAgICBibGFjazogJ2J2
ZWMyKGZhbHNlLGZhbHNlKScsICAgICAgICAgICAgIGFzVmVjNDogJ3ZlYzQodmFyLDAuMCwxLjAp
JyB9LAorICAgIHsgdHlwZTogJ2J2ZWMzJywgZ3JlZW46ICdidmVjMyhmYWxzZSx0cnVlLGZhbHNl
KScsICAgICBibGFjazogJ2J2ZWMzKGZhbHNlLGZhbHNlLGZhbHNlKScsICAgICAgIGFzVmVjNDog
J3ZlYzQodmFyLDEuMCknIH0sCisgICAgeyB0eXBlOiAnYnZlYzQnLCBncmVlbjogJ2J2ZWM0KGZh
bHNlLHRydWUsZmFsc2UsdHJ1ZSknLGJsYWNrOiAnYnZlYzQoZmFsc2UsZmFsc2UsZmFsc2UsZmFs
c2UpJywgYXNWZWM0OiAndmVjNCh2YXIpJyB9LAorXTsKK3R5cGVJbmZvcy5mb3JFYWNoKGZ1bmN0
aW9uICh0eXBlSW5mbykgeworICAgIHZhciByZXBsYWNlUGFyYW1zID0geworICAgICAgICB0eXBl
OiB0eXBlSW5mby50eXBlLAorICAgICAgICBncmVlbjogdHlwZUluZm8uZ3JlZW4sCisgICAgICAg
IGJsYWNrOiB0eXBlSW5mby5ibGFjaywKKyAgICAgICAgYXNWZWM0OiB0eXBlSW5mby5hc1ZlYzQs
CisgICAgfTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogd3R1LnJl
cGxhY2VQYXJhbXMod3R1LmdldFNjcmlwdCgnZnJhZ21lbnRTaGFkZXInKSwgcmVwbGFjZVBhcmFt
cyksCisgICAgICAgIHBhc3NNc2c6IHR5cGVJbmZvLnR5cGUsCisgICAgICAgIGZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgcmVuZGVyOiB0
cnVlCisgICAgfSk7Cit9KTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0ZXN0cyk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3Rlcm5hcnktb3BlcmF0b3JzLWluLWluaXRpYWxp
emVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3Rlcm5hcnktb3BlcmF0b3JzLWluLWluaXRpYWxpemVycy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkYmM1OWE1Yzk1Mjk5MDllZDczMWJhMzAwY2QyOWE0ODMyMzE2NzAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvdGVybmFyeS1vcGVyYXRvcnMtaW4taW5pdGlh
bGl6ZXJzLmh0bWwKQEAgLTAsMCArMSwxMjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIgLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzx0aXRs
ZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImludEZyYWdTaGFkZXIiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ZvaWQgbWFpbigpIHsKKyAgICBp
bnQgaSA9IDIsIGogPSAoaSA+IDEpID8gMSA6IDA7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgw
LjAsIGosIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iaXZlYzJGcmFnU2hh
ZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4oKSB7
CisgICAgaXZlYzIgaSA9IGl2ZWMyKDIsIDApLCBqID0gKGkueCA+IDEpID8gaXZlYzIoMCwgMSkg
OiBpdmVjMigwLCAwKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGosIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iaXZlYzNGcmFnU2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4oKSB7CisgICAgaXZlYzMgaSA9IGl2ZWMz
KDAsIDIsIDApLCBqID0gKGkueSA+IDEpID8gaXZlYzMoMCwgMSwgMCkgOiBpdmVjMygwLCAwLCAw
KTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGosIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9Iml2ZWM0RnJhZ1NoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3Jp
cHQiPgordm9pZCBtYWluKCkgeworICAgIGl2ZWM0IGkgPSBpdmVjNCgwLjAsIDAuMCwgMi4wLCAw
LjApLCBqID0gKGkueiA+IDEpID8gaXZlYzQoMCwgMSwgMCwgMSkgOiBpdmVjNCgwLCAwLCAwLCAx
KTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGopOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmbG9hdEZyYWdTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4K
K3ZvaWQgbWFpbigpIHsKKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICBmbG9hdCBp
ID0gMi4wLCBqID0gKGkgPiAxLjApID8gMS4wIDogMC4wOworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMC4wLCBqLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZlYzJGcmFn
U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4o
KSB7CisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgdmVjMiBpID0gdmVjMigyLjAs
IDAuMCksIGogPSAoaS54ID4gMS4wKSA/IHZlYzIoMC4wLCAxLjApIDogdmVjMigwLjAsIDAuMCk7
CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChqLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9InZlYzNGcmFnU2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNj
cmlwdCI+Cit2b2lkIG1haW4oKSB7CisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAg
dmVjMyBpID0gdmVjMygwLjAsIDIuMCwgMC4wKSwgaiA9IChpLnkgPiAxLjApID8gdmVjMygwLjAs
IDEuMCwgMC4wKSA6IHZlYzMoMC4wLCAwLjAsIDAuMCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChqLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZWM0RnJhZ1NoYWRlciIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgordm9pZCBtYWluKCkgeworICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHZlYzQgaSA9IHZlYzQoMC4wLCAwLjAsIDIuMCwg
MC4wKSwgaiA9IChpLnogPiAxLjApID8gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApIDogdmVjNCgw
LjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsX0ZyYWdDb2xvciA9IGo7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9ImJvb2xGcmFnU2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2
YXNjcmlwdCI+Cit2b2lkIG1haW4oKSB7CisgICAgYm9vbCBpID0gdHJ1ZSwgaiA9IGkgPyB0cnVl
IDogZmFsc2U7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGosIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iYnZlYzJGcmFnU2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4oKSB7CisgICAgYnZlYzIgaSA9IGJ2ZWMy
KHRydWUsIGZhbHNlKSwgaiA9IGkueCA/IGJ2ZWMyKGZhbHNlLCB0cnVlKSA6IGJ2ZWMyKGZhbHNl
LCBmYWxzZSk7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChqLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImJ2ZWMzRnJhZ1NoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmct
bm90LWphdmFzY3JpcHQiPgordm9pZCBtYWluKCkgeworICAgIGJ2ZWMzIGkgPSBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpLCBqID0gaS55ID8gYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSA6IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoaiwgMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iYnZlYzRGcmFnU2hhZGVyIiB0eXBlPSJ0ZXh0
L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+Cit2b2lkIG1haW4oKSB7CisgICAgYnZlYzQgaSA9
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSksIGogPSBpLnogPyBidmVjNChmYWxzZSwg
dHJ1ZSwgZmFsc2UsIHRydWUpIDogYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChqKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgaW5pdGlhbGl6ZXJzIHdp
dGggdGVybmFyeSBvcGVyYXRvcnMgY29ycmVjdGx5IGluaXRpYWxpemUgYWxsIHZhcmlhYmxlcy4i
KTsKKy8vIFRlc3QgZnJhZ21lbnQgc2hhZGVycyBhcmUgb2YgdGhlIGZvcm0KKy8vICAgICB2b2lk
IG1haW4oKSB7CisvLyAgICAgICAgIHt0eXBlfSBpID0ge2luaXRpYWxpemVyfSwgaiA9IHt0ZXJu
YXJ5IHRlc3QgdXNpbmcgaSB0aGF0IHN1Y2NlZWRzfSA/IDoge2dyZWVufSA6IHtibGFja307Cisv
LyAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoLi4uKTsgLy8gRW1pdCBncmVlbiBzbyB0aGF0
IHRlc3Qgd2lsbCBwYXNzCisvLyAgICAgfQorLy8gVGhlIGZyYWdtZW50IHNoYWRlciBtdXN0IGNv
bXBpbGUgYW5kIGxpbmsgd2l0aCB0aGUgZGVmYXVsdCB2ZXJ0ZXggc2hhZGVyLiBKIG11c3QgYmUg
YWJsZSB0byB1c2UgdGhlIHZhbHVlcyBvZiBJIGFzIHdlbGwgYXMgaGF2ZSBpdHMgb3duCisvLyB2
YWx1ZXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCit2YXIgdGVzdHMgPSBbCisgICAgeyBmU2hhZGVy
SWQ6ICdpbnRGcmFnU2hhZGVyJywgcGFzc01zZzogJ1Rlcm5hcnkgb3BlcmF0b3IgaW4gaW50ZWdl
ciBpbml0YWxpemF0aW9uJywgZlNoYWRlclN1Y2Nlc3M6IHRydWUsIGxpbmtTdWNjZXNzOiB0cnVl
LCByZW5kZXI6IHRydWUgfSwKKyAgICB7IGZTaGFkZXJJZDogJ2l2ZWMyRnJhZ1NoYWRlcicsIHBh
c3NNc2c6ICdUZXJuYXJ5IG9wZXJhdG9yIGluIGl2ZWMyIGluaXRhbGl6YXRpb24nLCBmU2hhZGVy
U3VjY2VzczogdHJ1ZSwgbGlua1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjogdHJ1ZSB9LAorICAgIHsg
ZlNoYWRlcklkOiAnaXZlYzNGcmFnU2hhZGVyJywgcGFzc01zZzogJ1Rlcm5hcnkgb3BlcmF0b3Ig
aW4gaXZlYzMgaW5pdGFsaXphdGlvbicsIGZTaGFkZXJTdWNjZXNzOiB0cnVlLCBsaW5rU3VjY2Vz
czogdHJ1ZSwgcmVuZGVyOiB0cnVlIH0sCisgICAgeyBmU2hhZGVySWQ6ICdpdmVjNEZyYWdTaGFk
ZXInLCBwYXNzTXNnOiAnVGVybmFyeSBvcGVyYXRvciBpbiBpdmVjNCBpbml0YWxpemF0aW9uJywg
ZlNoYWRlclN1Y2Nlc3M6IHRydWUsIGxpbmtTdWNjZXNzOiB0cnVlLCByZW5kZXI6IHRydWUgfSwK
KyAgICB7IGZTaGFkZXJJZDogJ2Zsb2F0RnJhZ1NoYWRlcicsIHBhc3NNc2c6ICdUZXJuYXJ5IG9w
ZXJhdG9yIGluIGZsb2F0IGluaXRhbGl6YXRpb24nLCBmU2hhZGVyU3VjY2VzczogdHJ1ZSwgbGlu
a1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjogdHJ1ZSB9LAorICAgIHsgZlNoYWRlcklkOiAndmVjMkZy
YWdTaGFkZXInLCBwYXNzTXNnOiAnVGVybmFyeSBvcGVyYXRvciBpbiB2ZWMyIGluaXRhbGl6YXRp
b24nLCBmU2hhZGVyU3VjY2VzczogdHJ1ZSwgbGlua1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjogdHJ1
ZSB9LAorICAgIHsgZlNoYWRlcklkOiAndmVjM0ZyYWdTaGFkZXInLCBwYXNzTXNnOiAnVGVybmFy
eSBvcGVyYXRvciBpbiB2ZWMzIGluaXRhbGl6YXRpb24nLCBmU2hhZGVyU3VjY2VzczogdHJ1ZSwg
bGlua1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjogdHJ1ZSB9LAorICAgIHsgZlNoYWRlcklkOiAndmVj
NEZyYWdTaGFkZXInLCBwYXNzTXNnOiAnVGVybmFyeSBvcGVyYXRvciBpbiB2ZWM0IGluaXRhbGl6
YXRpb24nLCBmU2hhZGVyU3VjY2VzczogdHJ1ZSwgbGlua1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjog
dHJ1ZSB9LAorICAgIHsgZlNoYWRlcklkOiAnYm9vbEZyYWdTaGFkZXInLCBwYXNzTXNnOiAnVGVy
bmFyeSBvcGVyYXRvciBpbiBib29sIGluaXRhbGl6YXRpb24nLCBmU2hhZGVyU3VjY2VzczogdHJ1
ZSwgbGlua1N1Y2Nlc3M6IHRydWUsIHJlbmRlcjogdHJ1ZSB9LAorICAgIHsgZlNoYWRlcklkOiAn
YnZlYzJGcmFnU2hhZGVyJywgcGFzc01zZzogJ1Rlcm5hcnkgb3BlcmF0b3IgaW4gYnZlYzIgaW5p
dGFsaXphdGlvbicsIGZTaGFkZXJTdWNjZXNzOiB0cnVlLCBsaW5rU3VjY2VzczogdHJ1ZSwgcmVu
ZGVyOiB0cnVlIH0sCisgICAgeyBmU2hhZGVySWQ6ICdidmVjM0ZyYWdTaGFkZXInLCBwYXNzTXNn
OiAnVGVybmFyeSBvcGVyYXRvciBpbiBidmVjMyBpbml0YWxpemF0aW9uJywgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsIGxpbmtTdWNjZXNzOiB0cnVlLCByZW5kZXI6IHRydWUgfSwKKyAgICB7IGZTaGFk
ZXJJZDogJ2J2ZWM0RnJhZ1NoYWRlcicsIHBhc3NNc2c6ICdUZXJuYXJ5IG9wZXJhdG9yIGluIGJ2
ZWM0IGluaXRhbGl6YXRpb24nLCBmU2hhZGVyU3VjY2VzczogdHJ1ZSwgbGlua1N1Y2Nlc3M6IHRy
dWUsIHJlbmRlcjogdHJ1ZSB9LAorXTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0
ZXN0cyk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3VuaWZvcm0tbG9jYXRpb24tbGVuZ3Ro
LWxpbWl0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3VuaWZvcm0tbG9jYXRpb24tbGVuZ3RoLWxpbWl0cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhZWFlYjE5MzdlYjRmNjA4OGQ1MmFkYjNkYjk4ZTY4NzdjMGY2YjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2MvdW5pZm9ybS1sb2NhdGlvbi1sZW5ndGgtbGlt
aXRzLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorPHRpdGxlPldlYkdMIHVuaWZvcm0gbG9jYXRpb24gbGVuZ3RoIHRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KK1RoZXJlIGlzIHN1cHBv
c2VkIHRvIGJlIGFuIGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQncyBub3QgaW1wb3J0YW50
LgorPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VmVyaWZ5IGxpbWl0cyBvbiB0aGUg
bGVuZ3RocyBvZiB1bmlmb3JtIGxvY2F0aW9ucyBwZXIgV2ViR0wgc3BlYywgIk1heGltdW0gVW5p
Zm9ybSBhbmQgQXR0cmlidXRlIExvY2F0aW9uIExlbmd0aHMiLjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJnb29kVmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CisvLyBBIHZlcnRleCBzaGFkZXIgd2hlcmUgdGhlIG5lZWRlZCB1bmlmb3Jt
IGxvY2F0aW9uIGlzIGV4YWN0bHkgMjU2IGNoYXJhY3RlcnMuCitzdHJ1Y3QgTmVzdGluZzIgewor
ICAgIHZlYzQgaWRlbnRpZmllcjYyQ2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ7Cit9OworCitzdHJ1Y3QgTmVzdGluZzEgeworICAgIE5lc3RpbmcyIGlk
ZW50aWZpZXI2NENoYXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY7Cit9OworCit1bmlmb3JtIE5lc3RpbmcxIGlkZW50aWZpZXIxMjhDaGFyYWN0ZXJzTG9u
Z18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5OworCit2b2lkIG1h
aW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBpZGVudGlmaWVyMTI4Q2hhcmFjdGVyc0xvbmdfMDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OS5pZGVudGlmaWVyNjRDaGFy
YWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2LmlkZW50aWZp
ZXI2MkNoYXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0Owor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJiYWRWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4KKy8vIEEgdmVydGV4IHNoYWRlciB3aGVyZSB0aGUgbmVlZGVkIHVuaWZvcm0g
bG9jYXRpb24gaXMgMjU3IGNoYXJhY3RlcnMuCitzdHJ1Y3QgTmVzdGluZzIgeworICAgIHZlYzQg
aWRlbnRpZmllcjYzQ2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1OworfTsKKworc3RydWN0IE5lc3RpbmcxIHsKKyAgICBOZXN0aW5nMiBpZGVudGlmaWVy
NjRDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Owor
fTsKKwordW5pZm9ybSBOZXN0aW5nMSBpZGVudGlmaWVyMTI4Q2hhcmFjdGVyc0xvbmdfMDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTsKKwordm9pZCBtYWluKCkgewor
ICAgIE5lc3RpbmcyIHRlbXAgPSBpZGVudGlmaWVyMTI4Q2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OS5pZGVudGlmaWVyNjRDaGFyYWN0ZXJz
TG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2OworICAgIGdsX1Bvc2l0
aW9uID0gdGVtcC5pZGVudGlmaWVyNjNDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIp
OworCitkZWJ1ZygiVGVzdCB1bmlmb3JtIGxvY2F0aW9uIHVuZGVybmVhdGggdGhlIGxlbmd0aCBs
aW1pdCIpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0KGdsLCAiZ29v
ZFZlcnRleFNoYWRlciIsICJmcmFnbWVudFNoYWRlciIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciB1bmlm
b3JtTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJpZGVudGlmaWVyMTI4Q2hh
cmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OS5p
ZGVudGlmaWVyNjRDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2LmlkZW50aWZpZXI2MkNoYXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0Iik7CitzaG91bGRCZU5vbk51bGwoJ3VuaWZvcm1Mb2MnKTsKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PTkUpOworCitkZWJ1ZygiVGVzdCB1bmlmb3JtIGxvY2F0aW9u
IG92ZXIgdGhlIGxlbmd0aCBsaW1pdCIpOworcHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21T
Y3JpcHQoZ2wsICJiYWRWZXJ0ZXhTaGFkZXIiLCAiZnJhZ21lbnRTaGFkZXIiKTsKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PTkUpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciB1bmlmb3JtTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJpZGVudGlmaWVyMTI4Q2hhcmFjdGVyc0xv
bmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OS5pZGVudGlmaWVy
NjRDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Lmlk
ZW50aWZpZXI2M0NoYXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NSIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CitzaG91
bGRCZU51bGwoJ3VuaWZvcm1Mb2MnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3VuaW5pdGlh
bGl6ZWQtbG9jYWwtZ2xvYmFsLXZhcmlhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3VuaW5pdGlhbGl6
ZWQtbG9jYWwtZ2xvYmFsLXZhcmlhYmxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNTUyYWYwOTZjYWNh
M2U5OTk3ODhkMzI3MWZkN2EwNzE2NTUyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mv
dW5pbml0aWFsaXplZC1sb2NhbC1nbG9iYWwtdmFyaWFibGVzLmh0bWwKQEAgLTAsMCArMSwyNzQg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PlVuaW5pdGlhbGl6ZWQgbG9jYWwvZ2xvYmFsIHZhcmlhYmxlcyBzaG91bGQgYmUgaW5pdGlhbGl6
ZWQ8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c191
bmluaXRfaW5fZnJhZyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAg
IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8IS0tIFVuaW5pdGlh
bGl6ZWQgbG9jYWwgaW4gdmVydGV4IHNoYWRlciAtLT4KKzxzY3JpcHQgaWQ9InZzX3VuaW5pdF9s
b2NhbF9pbl92ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2YXJ5aW5nIHZlYzMgdl91bmlu
aXQ7Cit2b2lkIG1haW4oKSB7CisgICAgdmVjMyB1bmluaXQ7IC8vIHVuaW5pdGlhbGl6ZWQKKyAg
ICB2X3VuaW5pdCA9IHVuaW5pdDsKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzX3VuaW5pdF9sb2NhbF9pbl92ZXJ0IiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWMz
IHZfdW5pbml0Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZfdW5pbml0Lnh5
eno7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBVbmluaXRpYWxpemVkIGxvY2FsIGluIGZyYWdtZW50
IHNoYWRlciAtLT4KKzxzY3JpcHQgaWQ9ImZzX3VuaW5pdF9sb2NhbF9pbl9mcmFnIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWlu
KCkgeworICAgIHZlYzIgdW5pbml0OyAvLyB1bmluaXRpYWxpemVkCisgICAgZ2xfRnJhZ0NvbG9y
ID0gdW5pbml0Lnh5eXk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBVbmluaXRpYWxpemVkIGdsb2Jh
bCBpbiB2ZXJ0ZXggc2hhZGVyIC0tPgorPHNjcmlwdCBpZD0idnNfdW5pbml0X2dsb2JhbF9pbl92
ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
K2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2YXJ5aW5nIGZsb2F0IHZfdW5pbml0OworZmxv
YXQgdW5pbml0OyAvLyB1bmluaXRpYWxpemVkCit2b2lkIG1haW4oKSB7CisgICAgdl91bmluaXQg
PSB1bmluaXQ7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc191bmluaXRfZ2xvYmFsX2luX3ZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIGZsb2F0IHZfdW5pbml0
Owordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodl91bmluaXQpOworfQor
PC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFsaXplZCBnbG9iYWwgaW4gZnJhZ21lbnQgc2hhZGVy
IC0tPgorPHNjcmlwdCBpZD0iZnNfdW5pbml0X2dsb2JhbF9pbl9mcmFnIiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmVjNCB1bmluaXQ7IC8v
IHVuaW5pdGlhbGl6ZWQKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB1bmluaXQ7
Cit9Cis8L3NjcmlwdD4KKworPCEtLSBVbmluaXRpYWxpemVkIGxvY2FsIGludCBpbiBmcmFnbWVu
dCBzaGFkZXIgLS0+Cis8c2NyaXB0IGlkPSJmc191bmluaXRfbG9jYWxfaW50X2luX2ZyYWciIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lk
IG1haW4oKSB7CisgICAgaW50IHVuaW5pdDsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVuaW5p
dCk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBVbmluaXRpYWxpemVkIGxvY2FsIHZhcmlhYmxlIGFu
ZCBhbm90aGVyIHZhcmlhYmxlIGluIHRoZSBzYW1lIGRlY2xhcmF0aW9uIHVzaW5nIGl0IGFzIGFu
IGluaXRpYWxpemVyIGluIGZyYWdtZW50IHNoYWRlciAtLT4KKzxzY3JpcHQgaWQ9ImZzX3VuaW5p
dF90d29fbG9jYWxfdmFyaWFibGVzX2luX2RlY2xhcmF0aW9uX2luX2ZyYWciIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7
CisgICAgdmVjMiB1bmluaXQsIHVuaW5pdDIgPSB1bmluaXQ7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dW5pbml0Mi54eXl5OworfQorPC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFsaXplZCBsb2NhbCBh
cnJheSBhbmQgYW5vdGhlciB2YXJpYWJsZSBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbiB1c2luZyBp
dCBpbiBpdHMgaW5pdGlhbGl6ZXIgaW4gZnJhZ21lbnQgc2hhZGVyIC0tPgorPHNjcmlwdCBpZD0i
ZnNfdW5pbml0X2FycmF5X2FuZF9hbm90aGVyX2luX2RlY2xhcmF0aW9uX2luX2ZyYWciIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1h
aW4oKSB7CisgICAgdmVjMiB1bmluaXRbMl0sIHVuaW5pdDIgPSB1bmluaXRbMF07CisgICAgZ2xf
RnJhZ0NvbG9yID0gdW5pbml0Mi54eXl5OworfQorPC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFs
aXplZCBnbG9iYWwgaW50IGluIGZyYWdtZW50IHNoYWRlciAtLT4KKzxzY3JpcHQgaWQ9ImZzX3Vu
aW5pdF9nbG9iYWxfaW50X2luX2ZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbnQgdW5pbml0OyAvLyB1bmluaXRpYWxpemVkCit2b2lk
IG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1bmluaXQpOworfQorPC9zY3JpcHQ+
CisKKzwhLS0gVW5pbml0aWFsaXplZCBsb2NhbCBzdHJ1Y3QgaW4gZnJhZ21lbnQgc2hhZGVyIC0t
PgorPHNjcmlwdCBpZD0iZnNfdW5pbml0X2xvY2FsX3N0cnVjdF9pbl9mcmFnIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworc3RydWN0IFMgeyB2
ZWM0IHY7IH07Cit2b2lkIG1haW4oKSB7CisgICAgUyB1bmluaXQ7IC8vIHVuaW5pdGlhbGl6ZWQK
KyAgICBnbF9GcmFnQ29sb3IgPSB1bmluaXQudjsKK30KKzwvc2NyaXB0PgorCis8IS0tIFVuaW5p
dGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdCBpbiBmcmFnbWVudCBzaGFkZXIgLS0+Cis8c2NyaXB0IGlk
PSJmc191bmluaXRfZ2xvYmFsX3N0cnVjdF9pbl9mcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworc3RydWN0IFMgeyB2ZWM0IHY7IH07CitT
IHVuaW5pdDsgLy8gdW5pbml0aWFsaXplZAordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xv
ciA9IHVuaW5pdC52OworfQorPC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFsaXplZCBuYW1lbGVz
cyBsb2NhbCBzdHJ1Y3QgaW4gZnJhZ21lbnQgc2hhZGVyIC0tPgorPHNjcmlwdCBpZD0iZnNfdW5p
bml0X25hbWVsZXNzX2xvY2FsX3N0cnVjdF9pbl9mcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWluKCkgeworICAgIHN0cnVj
dCB7IHZlYzQgdjsgfSB1bmluaXQ7IC8vIHVuaW5pdGlhbGl6ZWQKKyAgICBnbF9GcmFnQ29sb3Ig
PSB1bmluaXQudjsKK30KKzwvc2NyaXB0PgorCis8IS0tIFVuaW5pdGlhbGl6ZWQgbmFtZWxlc3Mg
Z2xvYmFsIHN0cnVjdCBpbiBmcmFnbWVudCBzaGFkZXIgLS0+Cis8c2NyaXB0IGlkPSJmc191bmlu
aXRfbmFtZWxlc3NfZ2xvYmFsX3N0cnVjdF9pbl9mcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworc3RydWN0IHsgdmVjNCB2OyB9IHVuaW5p
dDsgLy8gdW5pbml0aWFsaXplZAordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHVu
aW5pdC52OworfQorPC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFsaXplZCBsb2NhbCBib29sIGlu
IGZyYWdtZW50IHNoYWRlciAtLT4KKzxzY3JpcHQgaWQ9ImZzX3VuaW5pdF9sb2NhbF9ib29sX2lu
X2ZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit2b2lkIG1haW4oKSB7CisgICAgYm9vbCB1bmluaXRbMTZdOyAvLyB1bmluaXRpYWxpemVk
CisgICAgYm9vbCByZXN1bHQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7Cisg
ICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB1bmluaXRbaV07CisgICAgfQorICAgIGdsX0ZyYWdD
b2xvciA9IHJlc3VsdCA/IHZlYzQoMSwgMCwgMCwgMSkgOiB2ZWM0KDApOworfQorPC9zY3JpcHQ+
CisKKzwhLS0gVW5pbml0aWFsaXplZCBnbG9iYWwgYm9vbCBpbiBmcmFnbWVudCBzaGFkZXIgLS0+
Cis8c2NyaXB0IGlkPSJmc191bmluaXRfZ2xvYmFsX2Jvb2xfaW5fZnJhZyIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2Jvb2wgdW5pbml0WzE2
XTsgLy8gdW5pbml0aWFsaXplZAordm9pZCBtYWluKCkgeworICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisgICAgICAgIHJlc3VsdCA9
IHJlc3VsdCB8fCB1bmluaXRbaV07CisgICAgfQorICAgIGdsX0ZyYWdDb2xvciA9IHJlc3VsdCA/
IHZlYzQoMSwgMCwgMCwgMSkgOiB2ZWM0KDApOworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oJ1VuaW5pdGlhbGl6ZWQgbG9j
YWwvZ2xvYmFsIHZhcmlhYmxlcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQ6IGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMTk2NicpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK3d0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKwordmFy
IGNhc2VzID0gWworICB7CisgICAgbmFtZTogIlVuaW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFibGUg
aW4gdmVydGV4IHNoYWRlciIsCisgICAgcHJvZzogWyJ2c191bmluaXRfbG9jYWxfaW5fdmVydCIs
ICJmc191bmluaXRfbG9jYWxfaW5fdmVydCJdLAorICB9LAorICB7CisgICAgbmFtZTogIlVuaW5p
dGlhbGl6ZWQgbG9jYWwgdmFyaWFibGUgaW4gZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9nOiBb
InZzX3VuaW5pdF9pbl9mcmFnIiwgImZzX3VuaW5pdF9sb2NhbF9pbl9mcmFnIl0sCisgIH0sCisg
IHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXplZCBnbG9iYWwgdmFyaWFibGUgaW4gdmVydGV4IHNo
YWRlciIsCisgICAgcHJvZzogWyJ2c191bmluaXRfZ2xvYmFsX2luX3ZlcnQiLCAiZnNfdW5pbml0
X2dsb2JhbF9pbl92ZXJ0Il0sCisgIH0sCisgIHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXplZCBn
bG9iYWwgdmFyaWFibGUgaW4gZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9nOiBbInZzX3VuaW5p
dF9pbl9mcmFnIiwgImZzX3VuaW5pdF9nbG9iYWxfaW5fZnJhZyJdLAorICB9LAorICB7CisgICAg
bmFtZTogIlVuaW5pdGlhbGl6ZWQgbG9jYWwgaW50IHZhcmlhYmxlIGluIGZyYWdtZW50IHNoYWRl
ciIsCisgICAgcHJvZzogWyJ2c191bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfbG9jYWxfaW50
X2luX2ZyYWciXSwKKyAgfSwKKyAgeworICAgIG5hbWU6ICJVbmluaXRpYWxpemVkIGxvY2FsIHZh
cmlhYmxlIGFuZCBhbm90aGVyIHZhcmlhYmxlIGluIHRoZSBzYW1lIGRlY2xhcmF0aW9uIHVzaW5n
IGl0IGFzIGFuIGluaXRpYWxpemVyIGluIGZyYWdtZW50IHNoYWRlciIsCisgICAgcHJvZzogWyJ2
c191bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfdHdvX2xvY2FsX3ZhcmlhYmxlc19pbl9kZWNs
YXJhdGlvbl9pbl9mcmFnIl0sCisgIH0sCisgIHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXplZCBs
b2NhbCBhcnJheSBhbmQgYW5vdGhlciB2YXJpYWJsZSBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbiB1
c2luZyBpdCBpbiBpdHMgaW5pdGlhbGl6ZXIgaW4gZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9n
OiBbInZzX3VuaW5pdF9pbl9mcmFnIiwgImZzX3VuaW5pdF9hcnJheV9hbmRfYW5vdGhlcl9pbl9k
ZWNsYXJhdGlvbl9pbl9mcmFnIl0sCisgIH0sCisgIHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXpl
ZCBnbG9iYWwgaW50IHZhcmlhYmxlIGluIGZyYWdtZW50IHNoYWRlciIsCisgICAgcHJvZzogWyJ2
c191bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfZ2xvYmFsX2ludF9pbl9mcmFnIl0sCisgIH0s
CisgIHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXplZCBsb2NhbCBzdHJ1Y3QgdmFyaWFibGUgaW4g
ZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9nOiBbInZzX3VuaW5pdF9pbl9mcmFnIiwgImZzX3Vu
aW5pdF9sb2NhbF9zdHJ1Y3RfaW5fZnJhZyJdLAorICB9LAorICB7CisgICAgbmFtZTogIlVuaW5p
dGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdCB2YXJpYWJsZSBpbiBmcmFnbWVudCBzaGFkZXIiLAorICAg
IHByb2c6IFsidnNfdW5pbml0X2luX2ZyYWciLCAiZnNfdW5pbml0X2dsb2JhbF9zdHJ1Y3RfaW5f
ZnJhZyJdLAorICB9LAorICB7CisgICAgbmFtZTogIlVuaW5pdGlhbGl6ZWQgbmFtZWxlc3MgbG9j
YWwgc3RydWN0IHZhcmlhYmxlIGluIGZyYWdtZW50IHNoYWRlciIsCisgICAgcHJvZzogWyJ2c191
bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfbmFtZWxlc3NfbG9jYWxfc3RydWN0X2luX2ZyYWci
XSwKKyAgfSwKKyAgeworICAgIG5hbWU6ICJVbmluaXRpYWxpemVkIG5hbWVsZXNzIGdsb2JhbCBz
dHJ1Y3QgdmFyaWFibGUgaW4gZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9nOiBbInZzX3VuaW5p
dF9pbl9mcmFnIiwgImZzX3VuaW5pdF9uYW1lbGVzc19nbG9iYWxfc3RydWN0X2luX2ZyYWciXSwK
KyAgfSwKKyAgeworICAgIG5hbWU6ICJVbmluaXRpYWxpemVkIGxvY2FsIGJvb2wgYXJyYXkgdmFy
aWFibGUgaW4gZnJhZ21lbnQgc2hhZGVyIiwKKyAgICBwcm9nOiBbInZzX3VuaW5pdF9pbl9mcmFn
IiwgImZzX3VuaW5pdF9sb2NhbF9ib29sX2luX2ZyYWciXSwKKyAgfSwKKyAgeworICAgIG5hbWU6
ICJVbmluaXRpYWxpemVkIGdsb2JhbCBib29sIGFycmF5IHZhcmlhYmxlIGluIGZyYWdtZW50IHNo
YWRlciIsCisgICAgcHJvZzogWyJ2c191bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfZ2xvYmFs
X2Jvb2xfaW5fZnJhZyJdLAorICB9LAorXTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZyhjYXNlc1tpXS5uYW1lKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dy
YW0oZ2wsIGNhc2VzW2ldLnByb2csIFsiYV9wb3NpdGlvbiJdLCB1bmRlZmluZWQsIHRydWUpOwor
ICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICB3dHUuY2xlYXJBbmRE
cmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAsIDAsIDBdKTsK
KyAgfQorCisgIGRlYnVnKCIiKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKK3J1blRlc3QoKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9nbHNsL3ByZXByb2Nlc3Nvci9jb21tZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9wcmVwcm9j
ZXNzb3IvY29tbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTNkZmIzZTMyZTc2NjY5YjM5NGI5MTM0
Njk2NzdmODIzMGI3Y2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9wcmVwcm9jZXNzb3IvY29t
bWVudHMuaHRtbApAQCAtMCwwICsxLDIwNCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q29tbWVudHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsK
KworLy8gWW91ciBzeW50YXggaGlnaGxpZ2h0ZXIgbWF5IGhhdGUgdGhpcyBmaWxlLgorLy8gQmVj
YXVzZSB0aGlzIHN0dWZmIGlzIHRyaWNreSwgd2UgY29sbGVjdCBhbGwgdGVzdHMgaGVyZSwgaW5j
bHVkaW5nIGR1cGxpY2F0aW5nIGZyb20gb3RoZXIgdGVzdHMuCisvLyBUaGF0IHdheSwgdGhpcyB0
ZXN0IGZpbGUgaXMgYSBvbmUtc3RvcC1zaG9wIGZvciB2YWxpZGF0aW9uIHRlc3RpbmcuCisKK2Nv
bnN0IG5vbkFzY2lpID0gWworICA2NTUzMywKKyAgNjU1MzMsCisgIDY1NTMzLAorICA2NTUzMywK
KyAgODM0LAorICA5NiwKKyAgNjU1MzMsCisgIDExNCwKKyAgNjU1MzMsCisgIDk4LAorICA2NTUz
MywKKyAgMTA0LAorICA2NTUzMywKKyAgMTA0LAorICA2NTUzMywKKyAgMzIyLAorICA4MzQsCisg
IDUxNCwKKyAgNjU1MzMsCisgIDY1NTMzLAorICAzMjIsCisgIDY1NTMzLAorICA2NTUzMywKKyAg
NjYsCitdLm1hcCh4ID0+IFN0cmluZy5mcm9tQ29kZVBvaW50KHgpKS5qb2luKCcnKTsKKworR0xT
TENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFt7CisgICAgdlNoYWRlclNvdXJjZTogYHZvaWQg
bWFpbigpIHt9YCwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2Vzczog
dHJ1ZSwKKyAgICBwYXNzTXNnOiAnTm9ybWFsIG1pbmltYWwgdGVzdGNhc2UnCisgIH0sIHsKKyAg
ICB2U2hhZGVyU291cmNlOiBgdm9pZCBtYWluKCkge30vKmAsCisgICAgdlNoYWRlclN1Y2Nlc3M6
IGZhbHNlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAnTWlzc2luZyBi
bG9jay1jb21tZW50LWVuZCcKKyAgfSwgeworICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1haW4o
KSB7fS8qKmAsCisgICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtTdWNjZXNzOiBm
YWxzZSwKKyAgICBwYXNzTXNnOiAnUGFydGlhbCBibG9jay1jb21tZW50LWVuZCcKKyAgfSwgewor
ICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1haW4oKSB7fS8qKi9gLAorICAgIHZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICdDb21wbGV0
ZSBibG9jay1jb21tZW50LWVuZCcKKyAgfSwgeworICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1h
aW4oKSB7fS8qICoqL2AsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nl
c3M6IHRydWUsCisgICAgcGFzc01zZzogJ0NvbXBsZXRlIGJsb2NrLWNvbW1lbnQtZW5kIHdpdGgg
KiovJworICB9LCB7CisgICAgdlNoYWRlclNvdXJjZTogYHZvaWQgbWFpbigpIHt9L2AsCisgICAg
dlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNz
TXNnOiAnUGFydGlhbCBsaW5lLWNvbW1lbnQtYmVnaW4gYXQgRU9GJworICB9LCB7CisgICAgdlNo
YWRlclNvdXJjZTogYHZvaWQgbWFpbigpIHt9Ly9gLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICdDb21wbGV0ZSBsaW5lLWNv
bW1lbnQtYmVnaW4gYXQgRU9GJworICB9LCB7CisgICAgdlNoYWRlclNvdXJjZTogYC8vCit2b2lk
IG1haW4oKSB7fWAsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6
IHRydWUsCisgICAgcGFzc01zZzogYE1pbmltYWwgbGluZSBjb21tZW50OiAiLy8sXFxuImAKKyAg
fSwgeworICAgIHZTaGFkZXJTb3VyY2U6IGAvL1wKKwordm9pZCBtYWluKCkge31gLAorICAgIHZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6
IGBNaW5pbWFsIGNvbnRpbnVlZCBsaW5lIGNvbW1lbnQ6ICIvLyxcXCxcXG4sXFxuImAKKyAgfSwg
eworICAgIHZTaGFkZXJTb3VyY2U6IGAvL1wKK2EKK3ZvaWQgbWFpbigpIHt9YCwKKyAgICB2U2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiBg
TGluZS1jb21tZW50IGNvbnRpbnVhdGlvbiB3aXRoIGNvbnRlbnQgdGhhdCBtdXN0IGJlIHNraXBw
ZWQ6ICIvLyxcXCxcXG4sYSxcXG4iYAorICB9LCB7CisgICAgdlNoYWRlclNvdXJjZTogYHZvaWQg
bWFpbigpIHt9IC8vIFRoZSBxdWljayBicm93biBmb3gganVtcGVkXFxvdmVyIHRoZSBsYXp5IGRv
Z2AsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
ICAgcGFzc01zZzogJ0JhY2tzbGFzaCBpbiBjb21tZW50JworICB9LCB7CisgICAgdlNoYWRlclNv
dXJjZTogYHZvaWQgbWFpbigpIHt9IC8vIFRoZSBxdWljayBicm93biBmb3gganVtcGVkXFxvdmVy
IHRoZSBsYXp5IGRvZworYCwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3Vj
Y2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAnQmFja3NsYXNoIGluIGNvbW1lbnQgd2l0aCBuZXds
aW5lIGJlZm9yZSBFT0YnCisgIH0sIHsKKyAgICB2U2hhZGVyU291cmNlOiBgdm9pZCBtYWluKCkg
e30gLy8gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWRcXAorb3ZlciB0aGUgbGF6eSBkb2dgLAor
ICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBh
c3NNc2c6ICdMaW5lLWNvbW1lbnQgd2l0aCBiYWNrc2xhc2gtbGluZS1jb250aW51YXRpb24nCisg
IH0sIHsKKyAgICB2U2hhZGVyU291cmNlOiBgdm9pZCBtYWluKCkge30gLy8gVGhlIHF1aWNrIGJy
b3duIGZveCBqdW1wZWRcXAorb3ZlciB0aGUgbGF6eSBkb2cKK2AsCisgICAgdlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogJ0xpbmUtY29t
bWVudCB3aXRoIGJhY2tzbGFzaC1saW5lLWNvbnRpbnVhdGlvbiB3aXRoIG5ld2xpbmUgYmVmb3Jl
IEVPRicKKyAgfSwgeworICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1haW4oKSB7fS8vJHtTdHJp
bmcuZnJvbUNvZGVQb2ludCgweDhmKX1gLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICd1cHBlci1hc2NpaSBpbiBsaW5lLWNv
bW1lbnQnCisgIH0sIHsKKyAgICB2U2hhZGVyU291cmNlOiBgdm9pZCBtYWluKCkge30vKiR7U3Ry
aW5nLmZyb21Db2RlUG9pbnQoMHg4Zil9Ki9gLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICd1cHBlci1hc2NpaSBpbiBibG9j
ay1jb21tZW50JworCisgICAgLy8gLQorICAgIC8vIExpa2UgY29tbWVudF9mcmFnLmZyYWcgZnJv
bSBjb25mb3JtYW5jZS9vZ2xlcy9HTC9idWlsZC9idWlsZF8wNDlfdG9fMDU2Lmh0bWwKKyAgfSwg
eworICAgIHZTaGFkZXJTb3VyY2U6IGAKK3ZvaWQgbWFpbigpCit7CisgICAgLyoqKioqKiAgLy8g
Y29tbWVudCBub3QgY2xvc2VkCit9YCwKKyAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAg
bGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICdVbmNsb3NlZCBibG9jay1jb21tZW50
IGNvbnRhaW5pbmcgbGluZS1jb21tZW50JworCisKKyAgICAvLyAtCisgICAgLy8gTGlrZSBjb25m
b3JtYW5jZS9nbHNsL21pc2Mvbm9uLWFzY2lpLWNvbW1lbnRzLnZlcnQuaHRtbAorICB9LCB7Cisg
ICAgdlNoYWRlclNvdXJjZTogYHZvaWQgbWFpbigpIHt9Lyoke1N0cmluZy5mcm9tQ29kZVBvaW50
KDB4OGYpfWAsCisgICAgdlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgIGxpbmtTdWNjZXNzOiBm
YWxzZSwKKyAgICBwYXNzTXNnOiAndXBwZXItYXNjaWkgaW4gdW50ZXJtaW5hdGVkIGJsb2NrLWNv
bW1lbnQnCisgIH0sIHsKKyAgICB2U2hhZGVyU291cmNlOiBgdm9pZCBtYWluKCkge30vLyAke25v
bkFzY2lpfWAsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRy
dWUsCisgICAgcGFzc01zZzogJ01vcmUgbm9uLWFzY2lpIGluIGxpbmUtY29tbWVudCcKKyAgfSwg
eworICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1haW4oKSB7fS8qCisgICAgICogJHtub25Bc2Np
aX0KKyAgICAgKi9gLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICAgIHBhc3NNc2c6ICdNb3JlIG5vbi1hc2NpaSBpbiBibG9jay1jb21tZW50Jwor
ICB9LCB7CisgICAgdlNoYWRlclNvdXJjZTogYHZvaWQgbWFpbigpIHt9LyoKKyAgICAgKiAke25v
bkFzY2lpfQorICAgICAqYCwKKyAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1
Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICdNb3JlIG5vbi1hc2NpaSBpbiB1bnRlcm1pbmF0
ZWQgYmxvY2stY29tbWVudCcKKworCisgICAgLy8gLQorICAgIC8vIExpa2UgZGVxcC9kYXRhL2ds
ZXMyL3NoYWRlcnMvcHJlcHJvY2Vzc29yLmh0bWwgfCBwcmVwcm9jZXNzb3IuY29tbWVudHMuY29t
bWVudF90cmlja18yXyoKKyAgfSwgeworICAgIHZTaGFkZXJTb3VyY2U6IGB2b2lkIG1haW4oKSB7
CisgICAgICAgIGZsb2F0IG91dDA7CisgICAgICAgIC8qKi8KKyAgICAgICAgb3V0MCA9IDEuMDsK
KyAgICAgICAgLyovCisgICAgICAgIG91dDAgPSAwLjA7CisgICAgICAgIC8qKi8KKyAgICAgIH1g
LAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAg
IHBhc3NNc2c6ICcvKiovIC8qLyAvKiovJworfV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcHJlcHJvY2Vzc29yL21hY3JvLWV4cGFuc2lvbi10cmlj
a3kuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvcHJlcHJvY2Vzc29yL21hY3JvLWV4cGFuc2lvbi10cmlja3kuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YzkyNWY0ZDdkNGQyZjJlNmU1ZjE0MGM0N2JlYzBkYjA4MTYzZGY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvZ2xzbC9wcmVwcm9jZXNzb3IvbWFjcm8tZXhwYW5zaW9uLXRyaWNreS5o
dG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPlRyaWNreSBtYWNybyBleHBhbnNpb248L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyUmVjdXJzaXZlTWFjcm9O
YW1lSW5zaWRlSW5jb21wbGV0ZU1hY3JvSW52b2NhdGlvbkluTWFjcm9FeHBhbnNpb24iIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorI2RlZmluZSBtKGEpCisjZGVmaW5lIGEgbSgoYSkKK2Ep
CisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgwLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKworR0xTTENv
bmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclJlY3Vy
c2l2ZU1hY3JvTmFtZUluc2lkZUluY29tcGxldGVNYWNyb0ludm9jYXRpb25Jbk1hY3JvRXhwYW5z
aW9uJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBw
YXNzTXNnOiAnUmVjdXJzaXZlIG1hY3JvIG5hbWUgaW5zaWRlIGluY29tcGxldGUgbWFjcm8gaW52
b2NhdGlvbiBpbiBtYWNybyBleHBhbnNpb24gc2hvdWxkIG5vdCBjcmFzaCcKK30KK10pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dl
YmdsX2ZpZWxkLnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dlYmdsX2ZpZWxkLnZlcnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iOWJiYTM2ZGE3NzZlNDkwNWFiZjEyNTVhNGFjN2Q3YzFiZDc3N2E0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZlZC9fd2ViZ2xfZmllbGQudmVydC5odG1sCkBA
IC0wLDAgKzEsNDAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2ds
c2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0
ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gdXNl
IG9mIHJlc2VydmVkIF93ZWJnbCBwcmVmaXggYXMgc3RydWN0dXJlIGZpZWxkIHNob3VsZCBmYWls
CitzdHJ1Y3QgRm9vIHsKKyAgaW50IF93ZWJnbF9iYXI7Cit9OworCit2b2lkIG1haW4oKSB7Cisg
IEZvbyBmb28gPSBGb28oMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL3Jlc2VydmVkL193ZWJnbF9mdW5jdGlvbi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL193
ZWJnbF9mdW5jdGlvbi52ZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE5NTg2ZmQ1MzgwNjJmZWUyOTZj
MjU5NWQ4N2EzMGQ0NmIwYWFjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dl
YmdsX2Z1bmN0aW9uLnZlcnQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CisKKy8vIHVzZSBvZiByZXNlcnZlZCBfd2ViZ2wgcHJlZml4IGFzIGZ1
bmN0aW9uIG5hbWUgc2hvdWxkIGZhaWwKK3ZlYzQgX3dlYmdsX2ZvbygpIHsKKyAgcmV0dXJuIHZl
YzQoMS4wKTsKK30KKwordm9pZCBtYWluKCkgeworICBnbF9Qb3NpdGlvbiA9IF93ZWJnbF9mb28o
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5j
ZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZlZC9fd2ViZ2xf
c3RydWN0LnZlcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dlYmdsX3N0cnVjdC52ZXJ0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGY2MWU5ZDdkMjgyOWE4NDBhZDBkZTI1NTY3M2NkOGJlZTgyZmU0NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dlYmdsX3N0cnVjdC52ZXJ0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRl
eFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyB1c2Ug
b2YgcmVzZXJ2ZWQgX3dlYmdsIHByZWZpeCBhcyBzdHJ1Y3R1cmUgbmFtZSBzaG91bGQgZmFpbAor
c3RydWN0IF93ZWJnbF9Gb28geworICBpbnQgYmFyOworfTsKKwordm9pZCBtYWluKCkgeworICBf
d2ViZ2xfRm9vIGZvbyA9IF93ZWJnbF9Gb28oMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvcmVzZXJ2ZWQvX3dlYmdsX3ZhcmlhYmxlLnZlcnQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvcmVz
ZXJ2ZWQvX3dlYmdsX3ZhcmlhYmxlLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2FlNmVjN2FiMWE3
ZWRlNzU4MGQxYmFmNzc4MjcxMzJmNDRiNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNl
cnZlZC9fd2ViZ2xfdmFyaWFibGUudmVydC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29t
ZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKworLy8gdXNlIG9mIHJlc2VydmVkIF93ZWJnbCBwcmVm
aXggYXMgc3RydWN0dXJlIGZpZWxkIHNob3VsZCBmYWlsCit2b2lkIG1haW4oKSB7CisgIHZlYzQg
X3dlYmdsX2ZvbzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZl
ZC93ZWJnbF9maWVsZC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL3dlYmdsX2ZpZWxkLnZlcnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDE3MTI2NjFmZDUxODVkMGI2OTkyMGRlNmRhMTdlMjA3YTE0OWQz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZlZC93ZWJnbF9maWVsZC52ZXJ0Lmh0bWwK
QEAgLTAsMCArMSw0MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9nbHNsLWNvbmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZl
cnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorCisvLyB1
c2Ugb2YgcmVzZXJ2ZWQgd2ViZ2xfIHByZWZpeCBhcyBzdHJ1Y3R1cmUgZmllbGQgc2hvdWxkIGZh
aWwKK3N0cnVjdCBGb28geworICBpbnQgd2ViZ2xfYmFyOworfTsKKwordm9pZCBtYWluKCkgewor
ICBGb28gZm9vID0gRm9vKDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC9yZXNlcnZlZC93ZWJnbF9mdW5jdGlvbi52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL3dl
YmdsX2Z1bmN0aW9uLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTlhYzE2OThhZDk0NDJkYzEwNTQ5
ZWVjZjg2NDc2ZGJjYzU2ODM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZlZC93ZWJn
bF9mdW5jdGlvbi52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90
LWphdmFzY3JpcHQiPgorCisvLyB1c2Ugb2YgcmVzZXJ2ZWQgd2ViZ2xfIHByZWZpeCBhcyBmdW5j
dGlvbiBuYW1lIHNob3VsZCBmYWlsCit2ZWM0IHdlYmdsX2ZvbygpIHsKKyAgcmV0dXJuIHZlYzQo
MS4wKTsKK30KKwordm9pZCBtYWluKCkgeworICBnbF9Qb3NpdGlvbiA9IHdlYmdsX2ZvbygpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL3dlYmdsX3N0cnVj
dC52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL3dlYmdsX3N0cnVjdC52ZXJ0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTVhMDI5NGEzZDNkMjUxNjE2MDc4YTVmMjE5YjRjOWFiZmNlNzYzOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2dsc2wvcmVzZXJ2ZWQvd2ViZ2xfc3RydWN0LnZlcnQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1
cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVy
IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CisKKy8vIHVzZSBvZiByZXNl
cnZlZCB3ZWJnbF8gcHJlZml4IGFzIHN0cnVjdHVyZSBuYW1lIHNob3VsZCBmYWlsCitzdHJ1Y3Qg
d2ViZ2xfRm9vIHsKKyAgaW50IGJhcjsKK307CisKK3ZvaWQgbWFpbigpIHsKKyAgd2ViZ2xfRm9v
IGZvbyA9IHdlYmdsX0ZvbygxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC9yZXNlcnZlZC93ZWJnbF92YXJpYWJsZS52ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Jlc2VydmVkL3dlYmds
X3ZhcmlhYmxlLnZlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI2NzA4ZTlhMzc4OWQyOWVlYTg4NWI2
ZDc3YjEzODBkMjIwNDVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9yZXNlcnZlZC93ZWJnbF92
YXJpYWJsZS52ZXJ0Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgorCisvLyB1c2Ugb2YgcmVzZXJ2ZWQgd2ViZ2xfIHByZWZpeCBhcyB2YXJpYWJs
ZSBzaG91bGQgZmFpbAordm9pZCBtYWluKCkgeworICB2ZWM0IHdlYmdsX2ZvbzsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5U
ZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9zYW1wbGVycy9nbHNsLWZ1bmN0aW9uLXRleHR1
cmUyZC1iaWFzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9nbHNsL3NhbXBsZXJzL2dsc2wtZnVuY3Rpb24tdGV4dHVyZTJkLWJp
YXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMyNzY2MTVmYTk5ZjkyZWRhODllMWYzNTEzNTQ0MDA2ODEz
NzYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9zYW1wbGVycy9nbHNsLWZ1bmN0aW9uLXRleHR1
cmUyZC1iaWFzLmh0bWwKQEAgLTAsMCArMSwxMDEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHRleHR1cmUyRCBHTFNMIGNvbmZv
cm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiIHN0
eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIyZCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0
aW9uOworYXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwor
dm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIHRleENvb3Jk
ID0gdGV4Q29vcmQwOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyMmQiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7Cit1bmlmb3JtIGZsb2F0IGJpYXM7Cit2YXJ5aW5nIHZlYzIgdGV4Q29v
cmQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXh0dXJlMkQodGV4LCB0
ZXhDb29yZCwgYmlhcyk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigidGVzdHMgR0xTTCB0ZXh0dXJlMkQgZnVuY3Rpb24gd2l0aCBiaWFzIik7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZXhhbXBsZSIpOworCitzaG91bGRCZSgiY2FudmFzLndpZHRoIiwgIjI1NiIpOwor
c2hvdWxkQmUoImNhbnZhcy5oZWlnaHQiLCAiMjU2Iik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICBn
bCwgWyd2c2hhZGVyMmQnLCAnZnNoYWRlcjJkJ10sIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCdd
LCBbMCwgMV0pOword3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworCit2YXIgY29sb3JzID0g
WworICB7bmFtZTogJ3JlZCcsIGNvbG9yOlsyNTUsIDAsIDAsIDI1NV19LAorICB7bmFtZTogJ2dy
ZWVuJywgY29sb3I6WzAsIDI1NSwgMCwgMjU1XX0sCisgIHtuYW1lOiAnYmx1ZScsIGNvbG9yOlsw
LCAwLCAyNTUsIDI1NV19LAorICB7bmFtZTogJ3llbGxvdycsIGNvbG9yOlsyNTUsIDI1NSwgMCwg
MjU1XX0sCisgIHtuYW1lOiAnbWFnZW50YScsIGNvbG9yOlsyNTUsIDAsIDI1NSwgMjU1XX0sCisg
IHtuYW1lOiAnY3lhbicsIGNvbG9yOlswLCAyNTUsIDI1NSwgMjU1XX0sCisgIHtuYW1lOiAncGlu
aycsIGNvbG9yOlsyNTUsIDEyOCwgMTI4LCAyNTVdfSwKKyAge25hbWU6ICdncmF5JywgY29sb3I6
WzEyOCwgMTI4LCAxMjgsIDI1NV19LAorICB7bmFtZTogJ2xpZ2h0IGdyZWVuJywgY29sb3I6WzEy
OCwgMjU1LCAxMjgsIDI1NV19LAorXTsKKworc2hvdWxkQmUoImNvbG9ycy5sZW5ndGgiLCAiOSIp
OworCit2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4KTsKK2dsLnRleFBhcmFtZXRlcmkoCisgICAgZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QpOworZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7
CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5S
RVBFQVQpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuUkVQRUFUKTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9ycy5sZW5ndGg7ICsr
aWkpIHsKKyAgdmFyIGNvbG9yID0gY29sb3JzW2lpXTsKKyAgdmFyIHNpemUgPSBNYXRoLnBvdygy
LCBjb2xvcnMubGVuZ3RoIC0gaWkgLSAxKTsKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIHNp
emUsIHNpemUsIGNvbG9yLmNvbG9yLCBpaSk7Cit9CisKK3ZhciBsb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImJpYXMiKTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9y
cy5sZW5ndGg7ICsraWkpIHsKKyAgZ2wudW5pZm9ybTFmKGxvYywgaWkpOworICB2YXIgY29sb3Ig
PSBjb2xvcnNbaWldOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hl
Y2tDYW52YXMoCisgICAgICBnbCwgY29sb3IuY29sb3IsCisgICAgICAiMjU2eDI1NiB0ZXh0dXJl
IGRyYXduIHRvIDI1NngyNTYgZGVzdCB3aXRoIGJpYXMgPSAiICsgaWkgKworICAgICAgIiBzaG91
bGQgYmUgIiArIGNvbG9yLm5hbWUpOworfQord3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzLiIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9z
YW1wbGVycy9nbHNsLWZ1bmN0aW9uLXRleHR1cmUyZGxvZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9zYW1wbGVycy9n
bHNsLWZ1bmN0aW9uLXRleHR1cmUyZGxvZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMzg3YmNhMTVhYzlk
N2U2NTYzYzM0NDlhYmI2OTkxY2FkZjE1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3NhbXBs
ZXJzL2dsc2wtZnVuY3Rpb24tdGV4dHVyZTJkbG9kLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IHRleHR1cmUyRCBHTFNMIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1
cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
PiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjI1NiIgaGVpZ2h0PSIyNTYiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIyZCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgor
YXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFy
eWluZyB2ZWM0IGNvbG9yOwordW5pZm9ybSBzYW1wbGVyMkQgdGV4OwordW5pZm9ybSBmbG9hdCBs
b2Q7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgY29s
b3IgPSB0ZXh0dXJlMkRMb2QodGV4LCB0ZXhDb29yZDAsIGxvZCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXIyZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAg
ICBnbF9GcmFnRGF0YVswXSA9IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZGVzY3JpcHRpb24oInRlc3RzIEdMU0wgdGV4dHVyZTJETG9kIGZ1bmN0aW9uIik7
CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZXhhbXBsZSIpOworCitzaG91bGRCZSgiY2FudmFzLndpZHRoIiwgIjI1NiIp
Oworc2hvdWxkQmUoImNhbnZhcy5oZWlnaHQiLCAiMjU2Iik7CisKK3ZhciBjb2xvcnMgPSBbCisg
IHtuYW1lOiAncmVkJywgY29sb3I6WzI1NSwgMCwgMCwgMjU1XX0sCisgIHtuYW1lOiAnZ3JlZW4n
LCBjb2xvcjpbMCwgMjU1LCAwLCAyNTVdfSwKKyAge25hbWU6ICdibHVlJywgY29sb3I6WzAsIDAs
IDI1NSwgMjU1XX0sCisgIHtuYW1lOiAneWVsbG93JywgY29sb3I6WzI1NSwgMjU1LCAwLCAyNTVd
fSwKKyAge25hbWU6ICdtYWdlbnRhJywgY29sb3I6WzI1NSwgMCwgMjU1LCAyNTVdfSwKKyAge25h
bWU6ICdjeWFuJywgY29sb3I6WzAsIDI1NSwgMjU1LCAyNTVdfSwKKyAge25hbWU6ICdwaW5rJywg
Y29sb3I6WzI1NSwgMTI4LCAxMjgsIDI1NV19LAorICB7bmFtZTogJ2dyYXknLCBjb2xvcjpbMTI4
LCAxMjgsIDEyOCwgMjU1XX0sCisgIHtuYW1lOiAnbGlnaHQgZ3JlZW4nLCBjb2xvcjpbMTI4LCAy
NTUsIDEyOCwgMjU1XX0sCitdOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZh
cyk7CitpZiAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UykgPiAwKSB7CisgIHJ1blRlc3QoKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoIk1BWF9WRVJU
RVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9PSAwLCB0aGlzIGlzIG9rYXkuIik7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAg
IGdsLCBbJ3ZzaGFkZXIyZCcsICdmc2hhZGVyMmQnXSwgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQw
J10sIFswLCAxXSk7CisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICBzaG91bGRC
ZSgiY29sb3JzLmxlbmd0aCIsICI5Iik7CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4UGFyYW1l
dGVyaSgKKyAgICAgIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVF9NSVBNQVBfTElORUFSKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLlJFUEVBVCk7CisgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCk7CisKKyAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9ycy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgY29s
b3IgPSBjb2xvcnNbaWldOworICAgIHZhciBzaXplID0gTWF0aC5wb3coMiwgY29sb3JzLmxlbmd0
aCAtIGlpIC0gMSk7CisgICAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIHNpemUsIHNpemUsIGNv
bG9yLmNvbG9yLCBpaSk7CisgIH0KKworICB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJsb2QiKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29sb3JzLmxlbmd0
aDsgKytpaSkgeworICAgIGdsLnVuaWZvcm0xZihsb2MsIGlpKTsKKyAgICB2YXIgY29sb3IgPSBj
b2xvcnNbaWldOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNo
ZWNrQ2FudmFzKAorICAgICAgICBnbCwgY29sb3IuY29sb3IsCisgICAgICAgICIyNTZ4MjU2IHRl
eHR1cmUgZHJhd24gdG8gMjU2eDI1NiBkZXN0IHdpdGggbG9kID0gIiArIGlpICsKKyAgICAgICAg
IiBzaG91bGQgYmUgIiArIGNvbG9yLm5hbWUpOworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycy4iKTsKK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2dsc2wvc2FtcGxlcnMvZ2xzbC1mdW5jdGlvbi10ZXh0dXJlMmRwcm9qLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL3NhbXBsZXJzL2dsc2wtZnVuY3Rpb24tdGV4dHVyZTJkcHJvai5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM5ZTA0MmY5YTlhMGFmM2E0ZWEzOTU2ZWMzOTMzMWFjODg1MWMwNGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9nbHNsL3NhbXBsZXJzL2dsc2wtZnVuY3Rpb24tdGV4dHVyZTJkcHJvai5odG1sCkBAIC0w
LDAgKzEsMTE2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlMkQgR0xTTCBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIwIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRp
b247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2
b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgdGV4Q29vcmQg
PSB0ZXhDb29yZDA7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIwIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBz
YW1wbGVyMkQgdGV4OwordW5pZm9ybSBmbG9hdCBkaXZpc29yOwordmFyeWluZyB2ZWMyIHRleENv
b3JkOwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdEYXRhWzBdID0gdGV4dHVyZTJEUHJvaih0
ZXgsIHZlYzModGV4Q29vcmQsIGRpdmlzb3IpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
dnNoYWRlcjEiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3Np
dGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIHRleENvb3JkMDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsK
K3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB0ZXhDb29y
ZCA9IHRleENvb3JkMDsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjEiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7Cit1bmlmb3JtIGZsb2F0IGRpdmlzb3I7Cit2YXJ5aW5nIHZlYzIgdGV4
Q29vcmQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXh0dXJlMkRQcm9q
KHRleCwgdmVjNCh0ZXhDb29yZCwgMTIzLjAsIGRpdmlzb3IpKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJ0ZXN0cyBHTFNMIHRleHR1cmUyRFBy
b2ogZnVuY3Rpb24gd2l0aCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwge2FudGlhbGlhczogZmFsc2V9KTsKKwor
d3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOwordmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CitnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9T
LCBnbC5SRVBFQVQpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X1dSQVBfVCwgZ2wuUkVQRUFUKTsKKwordmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKK2Mud2lkdGggPSAxNjsKK2MuaGVpZ2h0ID0gMTY7Cit2YXIgY3R4ID0gYy5nZXRD
b250ZXh0KCIyZCIpOworY3R4LmZpbGxTdHlsZSA9ICJyZ2IoMCwyNTUsMCkiOworY3R4LmZpbGxS
ZWN0KDAsIDAsIDE2LCAxNik7CitjdHguZmlsbFN0eWxlID0gInJnYigwLDAsMjU1KSI7CitjdHgu
ZmlsbFJlY3QoMCwgMCwgOCwgOCk7CitjdHguZmlsbFJlY3QoOCwgOCwgOCwgOCk7CisKK2dsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYyk7CisKK2ZvciAodmFyIHNzID0gMDsgc3MgPCAyOyArK3NzKSB7CisgIGRlYnVnKCIi
KTsKKyAgZGVidWcoc3MgPyAidGVzdGluZyB2ZWM0IHZlcnNpb24iIDogInRlc3RpbmcgdmVjMyB2
ZXJzaW9uIik7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgIGdsLCBb
J3ZzaGFkZXInICsgc3MsICdmc2hhZGVyJyArIHNzXSwKKyAgICAgIFsndlBvc2l0aW9uJywgJ3Rl
eENvb3JkMCddLCBbMCwgMV0pOworICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICB2YXIgbG9j
ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJkaXZpc29yIik7CisKKyAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IDM7ICsraWkpIHsKKyAgICB2YXIgZGVub21pbmF0b3IgPSBNYXRoLnBv
dygyLCBpaSk7CisgICAgZ2wudW5pZm9ybTFmKGxvYywgMSAvIGRlbm9taW5hdG9yKTsKKyAgICB3
dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHZhciBzaXplID0gMTYgLyBkZW5vbWlu
YXRvcjsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgMzI7IHl5ICs9IHNpemUpIHsKKyAgICAg
IGZvciAodmFyIHh4ID0gMDsgeHggPCAzMjsgeHggKz0gc2l6ZSkgeworICAgICAgICB2YXIgb2Rk
ID0gKHh4IC8gc2l6ZSArIHl5IC8gc2l6ZSkgJSAyOworICAgICAgICB2YXIgY29sb3IgPSBvZGQg
PyBbMCwgMjU1LCAwLCAyNTVdIDogWzAsIDAsIDI1NSwgMjU1XTsKKyAgICAgICAgdmFyIG1zZyA9
ICIiICsgeHggKyAiLCAiICsgeXkgKyAiLCAiICsgc2l6ZSArICIsICIgKyBzaXplICsgIiBzaG91
bGQgYmUgIiArIChvZGQgPyAiZ3JlZW4iIDogImJsdWUiKTsKKyAgICAgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgeHgsIHl5LCBzaXplLCBzaXplLCBjb2xvciwgbXNnKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30KK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxk
IGJlIG5vIGVycm9ycy4iKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvc2FtcGxlcnMvZ2xzbC1m
dW5jdGlvbi10ZXh0dXJlMmRwcm9qbG9kLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3NhbXBsZXJzL2dsc2wtZnVuY3Rp
b24tdGV4dHVyZTJkcHJvamxvZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3YzA5MWVlOGUxNmRjZGU2YTRm
ODAwNDJhMTVhOTRlMGJiMGQ3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3NhbXBsZXJzL2ds
c2wtZnVuY3Rpb24tdGV4dHVyZTJkcHJvamxvZC5odG1sCkBAIC0wLDAgKzEsMTYyIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0
ZXh0dXJlMkQgR0xTTCBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2IiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyMmR2ZWMzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7Cit1bmlmb3JtIGZsb2F0IGRpdmlzb3I7Cit1bmlmb3JtIGZsb2F0IGxv
ZDsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICBjb2xv
ciA9IHRleHR1cmUyRFByb2pMb2QodGV4LCB2ZWMzKDAuNzUgKiBkaXZpc29yLCAwLjI1ICogZGl2
aXNvciwgZGl2aXNvciksIGxvZCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIy
ZHZlYzQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlv
bjsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3VuaWZvcm0gc2FtcGxlcjJEIHRleDsKK3VuaWZvcm0g
ZmxvYXQgZGl2aXNvcjsKK3VuaWZvcm0gZmxvYXQgbG9kOwordm9pZCBtYWluKCkgeworICAgIGds
X1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIGNvbG9yID0gdGV4dHVyZTJEUHJvakxvZCh0ZXgs
IHZlYzQoMC43NSAqIGRpdmlzb3IsIDAuMjUgKiBkaXZpc29yLCAxMjMuMCwgZGl2aXNvciksIGxv
ZCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIyZCIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9GcmFnRGF0YVswXSA9IGNvbG9yOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oInRlc3RzIEdMU0wgdGV4
dHVyZTJEUHJvakxvZCBmdW5jdGlvbiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKKworc2hvdWxk
QmUoImNhbnZhcy53aWR0aCIsICIyNTYiKTsKK3Nob3VsZEJlKCJjYW52YXMuaGVpZ2h0IiwgIjI1
NiIpOworCit2YXIgY29sb3JzID0gWworICB7bmFtZTogJ3JlZCcsIGNvbG9yOlsyNTUsIDAsIDAs
IDI1NV19LAorICB7bmFtZTogJ2dyZWVuJywgY29sb3I6WzAsIDI1NSwgMCwgMjU1XX0sCisgIHtu
YW1lOiAnYmx1ZScsIGNvbG9yOlswLCAwLCAyNTUsIDI1NV19LAorICB7bmFtZTogJ3llbGxvdycs
IGNvbG9yOlsyNTUsIDI1NSwgMCwgMjU1XX0sCisgIHtuYW1lOiAnbWFnZW50YScsIGNvbG9yOlsy
NTUsIDAsIDI1NSwgMjU1XX0sCisgIHtuYW1lOiAnY3lhbicsIGNvbG9yOlswLCAyNTUsIDI1NSwg
MjU1XX0sCisgIHtuYW1lOiAncGluaycsIGNvbG9yOlsyNTUsIDEyOCwgMTI4LCAyNTVdfSwKKyAg
e25hbWU6ICdncmF5JywgY29sb3I6WzEyOCwgMTI4LCAxMjgsIDI1NV19LAorICB7bmFtZTogJ2xp
Z2h0IGdyZWVuJywgY29sb3I6WzEyOCwgMjU1LCAxMjgsIDI1NV19LAorXTsKK3ZhciBjb250ZXh0
VHlwZXMgPSBbIjJkIiwgIndlYmdsIl07Cit2YXIgdmVjdG9yVHlwZXMgPSBbInZlYzMiLCAidmVj
NCJdOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CitpZiAoZ2wuZ2V0
UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUykgPiAwKSB7CisgIHJ1
blRlc3QoKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFH
RV9VTklUUyA9PSAwLCB0aGlzIGlzIG9rYXkuIik7Cit9CisKKworZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgLy8gQXZvaWQgY3JlYXRpbmcgYSBXZWJHTCBjb250ZXh0IGZvciBldmVyeSB0ZXN0LCBh
cyBpdCBjYXVzZXM6CisgIC8vIFRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250ZXh0cy4gT2xkZXN0
IGNvbnRleHQgd2lsbCBiZSBsb3N0LgorICB2YXIgY2FudmFzV2ViR0wgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgdmFyIGN0eFdlYkdMID0gY2FudmFzV2ViR0wuZ2V0Q29u
dGV4dCgid2ViZ2wiKTsKKworICAvLyBNaWdodCBhcyB3ZWxsIGRvIHRoZSBzYW1lIGZvciBjYW52
YXMgMmQKKyAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgIHZhciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CisKKyAgc2hvdWxkQmUo
ImNvbG9ycy5sZW5ndGgiLCAiOSIpOworICBjb250ZXh0VHlwZXMuZm9yRWFjaCgoY29udGV4dCkg
PT4geworICAgIHZlY3RvclR5cGVzLmZvckVhY2goKHZlY3RvclR5cGUpID0+IHsKKyAgICAgIGRl
YnVnKCIiKTsKKyAgICAgIGRlYnVnKGB0ZXN0aW5nICR7Y29udGV4dH0gY29udGV4dCB3aXRoICR7
dmVjdG9yVHlwZX0gdmVydGV4IHNoYWRlcmApOworICAgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0
dXBQcm9ncmFtKAorICAgICAgICAgIGdsLCBbJ3ZzaGFkZXIyZCcgKyB2ZWN0b3JUeXBlLCAnZnNo
YWRlcjJkJ10sIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddLCBbMCwgMV0pOworICAgICAgd3R1
LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworCisgICAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAg
IGdsLnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
SU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsKKyAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1Ms
IGdsLlJFUEVBVCk7CisgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9ULCBnbC5SRVBFQVQpOworCisgICAgICAvLyBGaWxsIHRoZSB0b3AgcmlnaHQg
cXVhZHJhbnQgb2YgZWFjaCB0ZXh0dXJlIGxldmVsIHdpdGggb25lIG9mIHRoZSBjb2xvcnMKKyAg
ICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAg
IHZhciBjb2xvciA9IGNvbG9yc1tpaV07CisgICAgICAgIHZhciBzaXplID0gTWF0aC5wb3coMiwg
Y29sb3JzLmxlbmd0aCAtIGlpIC0gMSk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgPT09ICIyZCIp
IHsKKyAgICAgICAgICBjYW52YXMyZC53aWR0aCA9IHNpemU7CisgICAgICAgICAgY2FudmFzMmQu
aGVpZ2h0ID0gc2l6ZTsKKyAgICAgICAgICBjdHgyZC5maWxsU3R5bGUgPSAicmdiKDAsMCwwKSI7
CisgICAgICAgICAgY3R4MmQuZmlsbFJlY3QoMCwgMCwgc2l6ZSwgc2l6ZSk7CisgICAgICAgICAg
Y3R4MmQuZmlsbFN0eWxlID0gInJnYigiICsgY29sb3IuY29sb3JbMF0gKyAiLCIgKyBjb2xvci5j
b2xvclsxXSArICIsIiArIGNvbG9yLmNvbG9yWzJdICsgIikiOworICAgICAgICAgIGN0eDJkLmZp
bGxSZWN0KHNpemUgLyAyLCAwLCBzaXplIC8gMiwgc2l6ZSAvIDIpOworICAgICAgICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgaWksIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGNhbnZhczJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSAid2ViZ2wi
KSB7CisgICAgICAgICAgY2FudmFzV2ViR0wud2lkdGggPSBjYW52YXNXZWJHTC5oZWlnaHQgPSBz
aXplOworICAgICAgICAgIGN0eFdlYkdMLmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgICAg
ICAgY3R4V2ViR0wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgICAgY3R4V2Vi
R0wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgICAgICAgY3R4V2ViR0wuc2Npc3Nvcihz
aXplLzIsIHNpemUvMiwgc2l6ZS8yLCBzaXplLzIpCisgICAgICAgICAgY3R4V2ViR0wuY2xlYXJD
b2xvcihjb2xvci5jb2xvclswXS8yNTUsIGNvbG9yLmNvbG9yWzFdLzI1NSwgY29sb3IuY29sb3Jb
Ml0vMjU1LCAxKQorICAgICAgICAgIGN0eFdlYkdMLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgaWksIGdsLlJHQkEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhc1dlYkdMKTsKKyAgICAgICAgfQorICAgICAg
fQorCisgICAgICB2YXIgbG9kTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJs
b2QiKTsKKyAgICAgIHZhciBkaXZMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImRpdmlzb3IiKTsKKworICAgICAgZm9yICh2YXIgZGl2ID0gMTsgZGl2IDwgNDsgKytkaXYpIHsK
KyAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9ycy5sZW5ndGggLSAxOyArK2lpKSB7
CisgICAgICAgICAgZ2wudW5pZm9ybTFmKGxvZExvYywgaWkpOworICAgICAgICAgIGdsLnVuaWZv
cm0xZihkaXZMb2MsIGRpdik7CisgICAgICAgICAgdmFyIGxvZENvbG9yID0gY29sb3JzW2lpXTsK
KyAgICAgICAgICB2YXIgc2l6ZSA9IE1hdGgucG93KDIsIGNvbG9ycy5sZW5ndGggLSBpaSAtIDEp
OworICAgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAgICAgd3R1
LmNoZWNrQ2FudmFzKAorICAgICAgICAgICAgICBnbCwgbG9kQ29sb3IuY29sb3IsCisgICAgICAg
ICAgICAgICJzYW1wbGluZyB3aXRoIGxvZCA9ICIgKyBpaSArCisgICAgICAgICAgICAgICIgZGl2
aWRlciA9ICIgKyBkaXYgKworICAgICAgICAgICAgICAiIHNob3VsZCBiZSAiICsgbG9kQ29sb3Iu
bmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycy4iKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLWZyYWdjb29yZC14eS12YWx1ZXMuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvdmFyaWFibGVzL2dsLWZyYWdjb29yZC14eS12YWx1ZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNjFhNThiZmM2ZmQxNDdiZjI3OTlkMzRhM2QwNzI3ODE0OThiYWU2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtZnJhZ2Nvb3JkLXh5LXZhbHVlcy5odG1sCkBAIC0wLDAg
KzEsMTg1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5nbC1mcmFnY29vcmQgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj4KKzwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisvLyBJbnB1
dHMKK2F0dHJpYnV0ZSB2ZWM0IGFQb3NJbmZvOworCisvLyBPdXRwdXRzCit2YXJ5aW5nIHZlYzIg
dlRhcmdldFBpeGVsQ29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisgIHZUYXJnZXRQaXhlbENvb3Jk
ID0gYVBvc0luZm8uenc7CisKKyAgZ2xfUG9pbnRTaXplID0gMS4wOworICBnbF9Qb3NpdGlvbiAg
PSB2ZWM0KGFQb3NJbmZvLnh5LCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBp
ZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworLy8gSW5wdXRzCit2YXJ5aW5nIHZlYzIgdlRhcmdldFBpeGVsQ29vcmQ7CisK
Ky8vIENvbG9ycyB1c2VkIHRvIHNpZ25hbCBjb3JyZWN0bmVzcworY29uc3QgdmVjNCByZWQgICA9
IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK2NvbnN0IHZlYzQgZ3JlZW4gPSB2ZWM0KDAuMCwg
MS4wLCAwLjAsIDEuMCk7CisKK3ZvaWQgbWFpbigpCit7CisgIC8vIENoZWNrIHBpeGVsIGluZGV4
CisgIGJvb2wgcGl4ZWxJeFZhbGlkID0gKGZsb29yKGdsX0ZyYWdDb29yZC54eSkgPT0gdlRhcmdl
dFBpeGVsQ29vcmQpOworCisgIC8vIENoZWNrIGZyYWN0aW9uYWwgcGFydCBvZiBjb29yZGluYXRl
cworICBib29sIGZyYWNDb29yZFZhbGlkID0gYWxsKGxlc3NUaGFuKGFicyhmcmFjdChnbF9GcmFn
Q29vcmQueHkpIC0gdmVjMigwLjUpKSwgdmVjMigwLjAwMDEpKSk7CisKKyAgZ2xfRnJhZ0NvbG9y
ID0gKHBpeGVsSXhWYWxpZCAmJiBmcmFjQ29vcmRWYWxpZCkgPyBncmVlbiA6IHJlZDsKK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0IGlkPSJ0ZXN0X2ZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorLy8gU2hhZGVyIHRvIHRlc3QgaWYgdGhlIGZyYW1lIGJ1ZmZlciBwb3NpdGlvbnMg
d2l0aGluIHRoZSBvdXRwdXQgcGl4ZWwgYXJlIGRpZmZlcmVudCBmb3IgdGhlIGZpdmUgcmVuZGVy
IHBhc3NlcworLy8gUGFzcyBvbiBmcmFtZSBidWZmZXIgcG9zaXRpb24gaW4gdmFyeWluZywgY2hh
bmdlIGluIHZlcnRleCBzaGFkZXIgOiB2VGFyZ2V0UGl4ZWxDb29yZCA9IGFQb3NJbmZvLnh5Owor
Ly8gU2V0IHRlc3RfZnNoYWRlciBpbiBzZXR1cFByb2dyYW0oKQorCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworLy8gSW5wdXRzCit2YXJ5aW5nIHZlYzIgdlRhcmdldFBpeGVsQ29vcmQ7CisK
K2NvbnN0IHZlYzIgcGl4U2l6ZSA9IHZlYzIoMi4wLzMyLjAsIDIuMC8zMi4wKTsKKwordm9pZCBt
YWluKCkKK3sKKyAgLy8gQ29vcmRpbmF0ZXMgd2l0aGluIGEgZnJhbWVidWZmZXIgcGl4ZWwgWzAs
IDE+CisgIHZlYzIgaW5QaXhlbENvb3JkID0gZnJhY3QodlRhcmdldFBpeGVsQ29vcmQgLyBwaXhT
aXplKTsKKworICAvLyBDcmVhdGUgZGlmZmVyZW50IGNvbG9yIGRlcGVuZGVudCBvbiB0aGUgcG9z
aXRpb24gaW5zaWRlIHRoZSBmcmFtZWJ1ZmZlciBwaXhlbAorICBmbG9hdCByID0gKGluUGl4ZWxD
b29yZC54IDwgMC40KSA/IDAuMiA6IChpblBpeGVsQ29vcmQueCA+IDAuNikgPyAwLjggOiAwLjU7
CisgIGZsb2F0IGcgPSAoaW5QaXhlbENvb3JkLnkgPCAwLjQpID8gMC4yIDogKGluUGl4ZWxDb29y
ZC55ID4gMC42KSA/IDAuOCA6IDAuNTsKKworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHIsIGcsIDAu
MCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCisvLyBU
ZXN0IGlmIGdsX0ZyYWdDb29yZC54eSB2YWx1ZXMgYXJlIGFsd2F5cyBvZiB0aGUgZm9ybSA6Cisv
LyAoZmlyc3QgZnJhbWVidWZmZXIgcGl4ZWwgaW5kZXggKyAwLjUsIHNlY29uZCBmcmFtZWJ1ZmZl
ciBwaXhlbCBpbmRleCArIDAuNSkKKy8vIChpZiBubyBtdWx0aXNhbXBsaW5nKQorCisvLyBUaGlz
IGlzIGRvbmUgYnkgcmVuZGVyaW5nIGEgc2V0IG9mIHBvaW50cyB3aGljaCB0YXJnZXRzIGVpdGhl
ciB0aGUgY2VudGVyIG9mIHRoZQorLy8gb3V0cHV0IHBpeGVsIG9yIHRoZSBjZW50ZXIgb2Ygb25l
IG9mIHRoZSBxdWFkcmFudHMKKworLy8gQ29uc3RhbnRzCit2YXIgZmxvYXRzUGVyQXR0cmlidXRl
ID0gNDsKKworLy8gR2xvYmFscwordmFyIHd0dTsKK3ZhciBnbDsKK3ZhciBwcm9ncmFtOwordmFy
IHZ4QnVmZmVyOworCisvLyBTZXQgZGF0YSBmb3Igb25lIGF0dHJpYnV0ZSAoZnJhbWVidWZmZXIu
eHksIHBpeGVsX2luZGV4Lnh5KQorZnVuY3Rpb24gc2V0UGl4ZWxEYXRhKGRhdGEsIGRJeCwgeHgs
IHl5LCB4U2l6ZSwgeVNpemUsIHhPZmZzZXQsIHlPZmZzZXQpCit7CisgIC8vIEZyYW1lIGJ1ZmZl
ciBmaXJzdCBjb29yZGluYXRlIFstMSwgMV0KKyAgZGF0YVtkSXgrK10gPSAoeHggKyAwLjUpICog
eFNpemUgKyB4T2Zmc2V0IC0gMTsKKworICAvLyBGcmFtZSBidWZmZXIgc2Vjb25kIGNvb3JkaW5h
dGUgWy0xLCAxXQorICBkYXRhW2RJeCsrXSA9ICh5eSArIDAuNSkgKiB5U2l6ZSArIHlPZmZzZXQg
LSAxOworCisgIC8vIEZyYW1lIGJ1ZmZlciBwaXhlbCBmaXJzdCBpbmRleAorICBkYXRhW2RJeCsr
XSA9IHh4OworCisgIC8vIEZyYW1lIGJ1ZmZlciBwaXhlbCBzZWNvbmQgaW5kZXgKKyAgZGF0YVtk
SXgrK10gPSB5eTsKKworICByZXR1cm4gZEl4OworfQorCisvLyBDcmVhdGUgYXR0cmlidXRlIGRh
dGEKK2Z1bmN0aW9uIGNyZWF0ZUF0dHJpYnV0ZURhdGEoeE9mZnNldCwgeU9mZnNldCkKK3sKKyAg
Ly8gUmV0cmlldmUgcmVhbGlzZWQgZGltZW5zaW9ucyBvZiB2aWV3cG9ydAorICB2YXIgd2lkdGhQ
eCAgICA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aDsKKyAgdmFyIGhlaWdodFB4ICAgPSBnbC5kcmF3
aW5nQnVmZmVySGVpZ2h0OworICB2YXIgcGl4ZWxDb3VudCA9IHdpZHRoUHggKiBoZWlnaHRQeDsK
KworICAvLyBQaXhlbCBzaXplIGluIGZyYW1lYnVmZmVyIGNvb3JkaW5hdGVzCisgIHZhciBwV2lk
dGggID0gMiAvIHdpZHRoUHg7CisgIHZhciBwSGVpZ2h0ID0gMiAvIGhlaWdodFB4OworICB2YXIg
ZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkocGl4ZWxDb3VudCAqIGZsb2F0c1BlckF0dHJpYnV0ZSk7
CisgIHZhciBkSXggPSAwOworICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaGVpZ2h0UHg7ICsreXkp
CisgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHdpZHRoUHg7ICsreHgpCisgICAgICBkSXggPSBz
ZXRQaXhlbERhdGEoZGF0YSwgZEl4LCB4eCwgeXksIHBXaWR0aCwgcEhlaWdodCwgIHhPZmZzZXQg
KiBwV2lkdGgsICB5T2Zmc2V0ICogcEhlaWdodCk7CisKKyAgaWYgKGRJeCAhPT0gZGF0YS5sZW5n
dGgpCisgICAgd3R1LmVycm9yKCJnbC1mcmFnY29vcmQteHktdmFsdWVzLmh0bWwsIGNyZWF0ZUF0
dHJpYnV0ZURhdGEoKSwgaW5kZXggbm90IGNvcnJlY3QgYXQgZW5kIik7CisKKyAgcmV0dXJuIGRh
dGE7Cit9CisKKy8vIEluaXRpYWxpemUgdGVzdAorZnVuY3Rpb24gaW5pdCgpCit7CisgIGRlc2Ny
aXB0aW9uKCJ0ZXN0cyBnbF9GcmFnQ29vcmQueHkgdmFsdWVzIik7CisKKyAgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7CisgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIiwgeyBhbnRpYWxp
YXM6IGZhbHNlIH0pOworICBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVy
IiwgImZzaGFkZXIiXSwgWyJhUG9zSW5mbyJdKTsKKyAgdnhCdWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdnhCdWZmZXIpOworICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigw
LCBmbG9hdHNQZXJBdHRyaWJ1dGUsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Cit9CisKKy8vIFJl
bmRlciBkYXRhCitmdW5jdGlvbiByZW5kZXIoeE9mZnNldCwgeU9mZnNldCwgcGFzc01zZykKK3sK
KyAgLy8gU2V0IGF0dHJpYnV0ZSBkYXRhCisgIHZhciBkYXRhID0gY3JlYXRlQXR0cmlidXRlRGF0
YSh4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGRh
dGEsIGdsLkRZTkFNSUNfRFJBVyk7CisKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCBkYXRhLmxlbmd0aCAvIGZsb2F0c1BlckF0
dHJpYnV0ZSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJy
b3JzIGZyb20gZHJhdyIpOworICB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIGdyZWVuLCBwYXNzTXNnKTsKK30KKworLy8gUnVuIHRlc3RzCitpbml0
KCk7CityZW5kZXIoMCwgMCwgImdyZWVuIDogc2FtcGxpbmcgYXQgY2VudGVyIG9mIG91dHB1dCBw
aXhlbCBpcyBjb3JyZWN0Iik7CityZW5kZXIoMC4yNSwgMC4yNSwgImdyZWVuIDogc2FtcGxpbmcg
aW4gdG9wIHJpZ2h0IHF1YWRyYW50IG9mIG91dHB1dCBwaXhlbCBpcyBjb3JyZWN0Iik7CityZW5k
ZXIoLTAuMjUsIDAuMjUsICJncmVlbiA6IHNhbXBsaW5nIGluIHRvcCBsZWZ0IHF1YWRyYW50IG9m
IG91dHB1dCBwaXhlbCBpcyBjb3JyZWN0Iik7CityZW5kZXIoIDAuMjUsIC0wLjI1LCAiZ3JlZW4g
OiBzYW1wbGluZyBpbiBib3R0b20gcmlnaHQgcXVhZHJhbnQgb2Ygb3V0cHV0IHBpeGVsIGlzIGNv
cnJlY3QiKTsKK3JlbmRlcigtMC4yNSwgLTAuMjUsICJncmVlbiA6IHNhbXBsaW5nIGluIGJvdHRv
bSBsZWZ0IHF1YWRyYW50IG9mIG91dHB1dCBwaXhlbCBpcyBjb3JyZWN0Iik7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2dsc2wvdmFyaWFibGVzL2dsLWZyYWdjb29yZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wt
ZnJhZ2Nvb3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVmNmUyNzUzNzZmYjIzOGUyNTZiN2VmZDNhMmFj
MGU1MWQ0NjczNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLWZyYWdjb29y
ZC5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPmdsLWZyYWdjb29yZCBUZXN0PC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICBnbF9Q
b3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
dm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgKKyAgICAgIGZsb29yKGdsX0Zy
YWdDb29yZC54ICogNC4wIC8gMzIuMCkgLyA0LjAsCisgICAgICBmbG9vcihnbF9GcmFnQ29vcmQu
eSAqIDQuMCAvIDMyLjApIC8gNC4wLAorICAgICAgZmxvb3IoZ2xfRnJhZ0Nvb3JkLnogKiA0LjAp
IC8gNC4wLAorICAgICAgMSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIGluaXQoKQoreworICBkZXNjcmlwdGlvbigidGVzdHMgZ2xfRnJhZ0Nvb3Jk
Iik7CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIik7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7CisKKyAgdmFyIHZlcnRl
eE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoCisgICAgICBbLTEsIC0xLCAtMSwgIDEsIC0xLCAgMCwgLTEsICAxLCAg
MCwKKyAgICAgICAtMSwgIDEsICAwLCAgMSwgLTEsICAwLCAgMSwgIDEsICAxXSksCisgICAgICBn
bC5TVEFUSUNfRFJBVyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgIGZvciAodmFyIHh4ID0g
MDsgeHggPCAzMjsgeHggKz0gNCkgeworICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCAzMjsgeXkg
Kz0gNCkgeworICAgICAgdmFyIHp6ID0gKHh4IC8gNjQpICsgKHl5IC8gNjQpOworICAgICAgdmFy
IGNvbG9yID0gWworICAgICAgICBNYXRoLmZsb29yKE1hdGguZmxvb3IoeHggKiA0LjAgLyAzMi4w
KSAvIDQgKiAyNTYpLAorICAgICAgICBNYXRoLmZsb29yKE1hdGguZmxvb3IoeXkgKiA0LjAgLyAz
Mi4wKSAvIDQgKiAyNTYpLAorICAgICAgICBNYXRoLmZsb29yKE1hdGguZmxvb3IoenogKiA0LjAp
IC8gNCAqIDI1NikKKyAgICAgIF07CisgICAgICB2YXIgbXNnID0gInNob3VsZCBiZSAiICsgY29s
b3I7CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCB4eCwgeXksIDEsIDEsIGNvbG9yLCBt
c2csIDQpOworICAgIH0KKyAgfQorfQorCitpbml0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFy
aWFibGVzL2dsLWZyYWdkYXRhLWFuZC1mcmFnY29sb3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2ds
LWZyYWdkYXRhLWFuZC1mcmFnY29sb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjBlODJlOGFmM2I4MDli
MGI1M2JjZjQyYzBmMWY0NTBjMzg5YWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJs
ZXMvZ2wtZnJhZ2RhdGEtYW5kLWZyYWdjb2xvci5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRlciIgdHlwZT0idGV4
dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gZnJhZ21lbnQgc2hhZGVyIHdpdGggc3Rh
dGljIGFzc2lnbm1lbnQgdG8gYm90aCBnbF9GcmFnRGF0YVswXSBhbmQgZ2xfRnJhZ0NvbG9yIHNo
b3VsZCBmYWlsLgorLy8gR0xFUyBzcGVjIHNlY3Rpb24gMy44LjIgc3Vic2VjdGlvbiBTaGFkZXIg
T3V0cHV0cy4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKQoreworICAg
IGdsX0ZyYWdEYXRhWzBdID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAsIDEsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3Zh
cmlhYmxlcy9nbC1mcm9udGZhY2luZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtZnJvbnRmYWNp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNzE2MTYxYmNmZTkzNmY5MTY1MTJlNmQ1OWY0ZTRlMDFkMTky
OGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtZnJvbnRmYWNpbmcuaHRt
bApAQCAtMCwwICsxLDg2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5nbC1mcmFnY29vcmQgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
Cis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgi
PgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfUG9zaXRp
b24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZvaWQg
bWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQoCisgICAgICBnbF9Gcm9udEZhY2luZyA/
IDEuMCA6IDAuMCwKKyAgICAgIGdsX0Zyb250RmFjaW5nID8gMC4wIDogMS4wLAorICAgICAgMCwK
KyAgICAgIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiBpbml0KCkKK3sKKyAgZGVzY3JpcHRpb24oInRlc3RzIGdsX0Zyb250RmFjaW5nIik7CisK
KyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCJleGFtcGxlIik7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2
c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7CisKKyAgdmFyIGdyaWRSZXMgPSA0
OworICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgMCwgdHJ1ZSk7CisKKyAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICBnbC5k
cmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCBncmlkUmVzICogZ3JpZFJlcyAqIDYsIGdsLlVOU0lH
TkVEX1NIT1JULCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJu
byBlcnJvcnMgZnJvbSBkcmF3Iik7CisKKyAgdmFyIHN0ZXAgPSAzMiAvIGdyaWRSZXM7CisgIHZh
ciBoYWxmU3RlcCA9IHN0ZXAgLyAyOworICB2YXIgcXVhcnRlclN0ZXAgPSBoYWxmU3RlcCAvIDI7
CisgIGZvciAodmFyIHh4ID0gMDsgeHggPCAzMjsgeHggKz0gc3RlcCkgeworICAgIGZvciAodmFy
IHl5ID0gMDsgeXkgPCAzMjsgeXkgKz0gc3RlcCkgeworICAgICAgZm9yICh2YXIgaWkgPSAwOyBp
aSA8IDI7ICsraWkpIHsKKyAgICAgICAgdmFyIGNvbG9yID0gWworICAgICAgICAgICAgaWkgPT0g
MCA/IDI1NSA6IDAsCisgICAgICAgICAgICBpaSA9PSAwID8gMCA6IDI1NSwKKyAgICAgICAgICAg
IDAKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIG1zZyA9ICJzaG91bGQgYmUgIiArIGNvbG9yOwor
ICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KAorICAgICAgICAgICAgZ2wsCisgICAgICAgICAg
ICB4eCArIHF1YXJ0ZXJTdGVwICsgaGFsZlN0ZXAgKiBpaSwKKyAgICAgICAgICAgIHl5ICsgcXVh
cnRlclN0ZXAgKyBoYWxmU3RlcCAqIGlpLAorICAgICAgICAgICAgMSwgMSwgY29sb3IsIG1zZywg
NCk7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2luaXQoKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xz
bC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRj
b29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NzA3OGE2ZmYxZmMzOTgyYTdhMmNhNDQ2MTdiZThlOWQy
ZDUzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLmh0
bWwKQEAgLTAsMCArMSwxNDEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPmdsLXBvaW50Y29vcmQgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyNTYiIGhlaWdodD0i
MjU2Ij4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit1bmlmb3JtIGZsb2F0IHVQb2ludFNp
emU7Cit2b2lkIG1haW4oKQoreworICBnbF9Qb2ludFNpemUgPSB1UG9pbnRTaXplOworICBnbF9Q
b3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
dm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgKKyAgICAgIGdsX1BvaW50Q29v
cmQueCwKKyAgICAgIGdsX1BvaW50Q29vcmQueSwKKyAgICAgIDAsCisgICAgICAxKTsKK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkNoZWNrcyBn
bF9Qb2ludENvb3JkIGFuZCBnbF9Qb2ludFNpemUiKTsKK2RlYnVnKCIiKTsKKworLy8gTk9URTog
SSdtIG5vdCAxMDAlIGNvbmZpZGVudCBpbiB0aGlzIHRlc3QuIEkgdGhpbmsgaXQgaXMgY29ycmVj
dC4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgiZXhhbXBsZSIpOworc2hvdWxkQmVOb25OdWxsKCJnbCIpOwordmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiJd
KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisKK3ZhciBjYW52
YXMgPSBnbC5jYW52YXM7Cit2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7Cit2YXIgaGVpZ2h0ID0g
Y2FudmFzLmhlaWdodDsKK3Nob3VsZEJlKCJ3aWR0aCIsICJoZWlnaHQiKTsKKwordmFyIG1heFBv
aW50U2l6ZSA9IGdsLmdldFBhcmFtZXRlcihnbC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzFd
Oworc2hvdWxkQmVUcnVlKCJtYXhQb2ludFNpemUgPj0gMSIpOworLy8gVGhlIG1pbmltdW0gYW5k
IG1heGltdW0gcG9pbnQgc2l6ZXMgbWF5IGJlIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuCitzaG91
bGRCZVRydWUoIk1hdGguZmxvb3IobWF4UG9pbnRTaXplKSA+PSAxIik7CittYXhQb2ludFNpemUg
PSBNYXRoLmZsb29yKG1heFBvaW50U2l6ZSk7CitzaG91bGRCZVRydWUoIm1heFBvaW50U2l6ZSAl
IDEgPT0gMCIpOworCittYXhQb2ludFNpemUgPSBNYXRoLm1pbihtYXhQb2ludFNpemUsIDY0KTsK
K3ZhciBwb2ludFdpZHRoID0gbWF4UG9pbnRTaXplIC8gd2lkdGg7Cit2YXIgcG9pbnRTdGVwID0g
TWF0aC5mbG9vcihtYXhQb2ludFNpemUgLyA0KTsKK3ZhciBwb2ludFN0ZXAgPSBNYXRoLm1heCgx
LCBwb2ludFN0ZXApOworCit2YXIgcG9pbnRTaXplTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ1UG9pbnRTaXplIik7CitnbC51bmlmb3JtMWYocG9pbnRTaXplTG9jLCBtYXhQ
b2ludFNpemUpOworCit2YXIgcGl4ZWxPZmZzZXQgPSAobWF4UG9pbnRTaXplICUgMikgPyAoMSAv
IHdpZHRoKSA6IDA7Cit2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKK2dsLmJ1ZmZlckRhdGEo
CisgICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICAgIFst
MC41ICsgcGl4ZWxPZmZzZXQsIC0wLjUgKyBwaXhlbE9mZnNldCwKKyAgICAgICAgICAwLjUgKyBw
aXhlbE9mZnNldCwgLTAuNSArIHBpeGVsT2Zmc2V0LAorICAgICAgICAgLTAuNSArIHBpeGVsT2Zm
c2V0LCAgMC41ICsgcGl4ZWxPZmZzZXQsCisgICAgICAgICAgMC41ICsgcGl4ZWxPZmZzZXQsICAw
LjUgKyBwaXhlbE9mZnNldF0pLAorICAgIGdsLlNUQVRJQ19EUkFXKTsKK2dsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KDApOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwg
ZmFsc2UsIDAsIDApOworCitnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCk7CisKK2dsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCA0KTsKK3Nob3VsZEJl
KCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisKK2Z1bmN0aW9uIHMycChzKSB7Cisg
IHJldHVybiAocyArIDEuMCkgKiAwLjUgKiB3aWR0aDsKK30KKworLy9mdW5jdGlvbiBwcmludCh4
LCB5KSB7CisvLyAgdmFyIGIgPSBuZXcgVWludDhBcnJheSg0KTsKKy8vICBnbC5yZWFkUGl4ZWxz
KHgsIHksIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGIpOworLy8gIGRlYnVnKCIi
ICsgeCArICIsIiArIHkgKyAiOiAiICsgYlswXSArICIsIiArIGJbMV0gKyAiLCIgKyBiWzJdKTsK
Ky8vfQorLy8KKy8vZm9yICh2YXIgaWkgPSAwOyBpaSA8IDEwMDsgKytpaSkgeworLy8gIHByaW50
KGlpLCBpaSk7CisvL30KKworZm9yICh2YXIgcHkgPSAwOyBweSA8IDI7ICsrcHkpIHsKKyAgZm9y
ICh2YXIgcHggPSAwOyBweCA8IDI7ICsrcHgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHBv
aW50WCA9IC0wLjUgKyBweCArIHBpeGVsT2Zmc2V0OworICAgIHZhciBwb2ludFkgPSAtMC41ICsg
cHkgKyBwaXhlbE9mZnNldDsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgbWF4UG9pbnRTaXpl
OyB5eSArPSBwb2ludFN0ZXApIHsKKyAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBtYXhQb2lu
dFNpemU7IHh4ICs9IHBvaW50U3RlcCkgeworICAgICAgICAvLyBmb3JtdWxhIGZvciBzIGFuZCB0
IGZyb20gT3BlbkdMIEVTIDIuMCBzcGVjIHNlY3Rpb24gMy4zCisgICAgICAgIHZhciB4dyA9IHMy
cChwb2ludFgpOworICAgICAgICB2YXIgeXcgPSBzMnAocG9pbnRZKTsKKyAgICAgICAgLy9kZWJ1
ZygieHc6ICIgKyB4dyArICIgeXc6ICIgKyB5dyk7CisgICAgICAgIHZhciB1ID0geHggLyBtYXhQ
b2ludFNpemUgKiAyIC0gMTsKKyAgICAgICAgdmFyIHYgPSB5eSAvIG1heFBvaW50U2l6ZSAqIDIg
LSAxOworICAgICAgICB2YXIgeGYgPSBNYXRoLmZsb29yKHMycChwb2ludFggKyB1ICogcG9pbnRX
aWR0aCkpOworICAgICAgICB2YXIgeWYgPSBNYXRoLmZsb29yKHMycChwb2ludFkgKyB2ICogcG9p
bnRXaWR0aCkpOworICAgICAgICAvL2RlYnVnKCJ4ZjogIiArIHhmICsgIiB5ZjogIiArIHlmKTsK
KyAgICAgICAgdmFyIHMgPSAwLjUgKyAoeGYgKyAwLjUgLSB4dykgLyBtYXhQb2ludFNpemU7Cisg
ICAgICAgIHZhciB0ID0gMC41ICsgKHlmICsgMC41IC0geXcpIC8gbWF4UG9pbnRTaXplOworICAg
ICAgICAvL2RlYnVnKCJzOiAiICsgcyArICIgdDogIiArIHQpOworICAgICAgICB2YXIgY29sb3Ig
PSBbTWF0aC5mbG9vcihzICogMjU1KSwgTWF0aC5mbG9vcigoMSAtIHQpICogMjU1KSwgMF07Cisg
ICAgICAgIHZhciBtc2cgPSAicGl4ZWwgIiArIHhmICsgIiwiICsgeWYgKyAiIHNob3VsZCBiZSAi
ICsgY29sb3I7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHhmLCB5ZiwgMSwgMSwg
Y29sb3IsIG1zZywgNCk7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
Z2xzbC92YXJpYWJsZXMvZ2xzbC1idWlsdC1pbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsc2wt
YnVpbHQtaW5zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjM2Y4ZjVlMTY3ZmM4YTFjNTM5ODg5MmVkMzZl
NTYyMTFiNTZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsc2wtYnVpbHQt
aW5zLmh0bWwKQEAgLTAsMCArMSwxMDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgYnVpbHQgaW4gdmFyaWFibGVzIENv
bmZvcm1hbmNlIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2Fu
dmFzPgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyQ2hlY2siIHR5
cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2YXJ5
aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bv
c2l0aW9uOworICAgIHZfY29sb3IgPSAoZ2xfJChuYW1lKSA9PSAkKG1heCkpID8gdmVjNCgwLDEs
MCwxKSA6IHZlYzQoMSwwLDAsMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2
YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dl9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckNoZWNrIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSAoZ2xfJChuYW1lKSA9PSAkKG1heCkpID8gdmVjNCgw
LDEsMCwxKSA6IHZlYzQoMSwwLDAsMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitkZXNjcmlwdGlvbigpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIGNvbnRleHRWZXJzaW9uID0g
d3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7CisKK3ZhciB2YXJpYWJsZXMgPSBbCisg
IHsgbmFtZTogJ01heFZlcnRleEF0dHJpYnMnLCAgICAgICAgICAgICBtaW46ICAgOCwgfSwKKyAg
eyBuYW1lOiAnTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMnLCAgICAgIG1pbjogMTI4LCB9LAorICB7
IG5hbWU6ICdNYXhWYXJ5aW5nVmVjdG9ycycsICAgICAgICAgICAgbWluOiAgIDgsIH0sCisgIHsg
bmFtZTogJ01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzJywgICBtaW46ICAgMCwgfSwKKyAgeyBu
YW1lOiAnTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cycsIG1pbjogICA4LCB9LAorICB7IG5h
bWU6ICdNYXhUZXh0dXJlSW1hZ2VVbml0cycsICAgICAgICAgbWluOiAgIDgsIH0sCisgIHsgbmFt
ZTogJ01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMnLCAgICBtaW46ICAxNiwgfSwKK107CisKK2lm
IChjb250ZXh0VmVyc2lvbiA8PSAxKSB7CisgIHZhcmlhYmxlcy5wdXNoKHsgbmFtZTogJ01heERy
YXdCdWZmZXJzJywgbWluOiAxLCBtYXg6IDF9KTsKK30gZWxzZSB7CisgIHZhcmlhYmxlcy5wdXNo
KHsgbmFtZTogJ01heERyYXdCdWZmZXJzJywgbWluOiAxLCB9KTsKK30KKwordmFyIHRvVW5kZXJz
Y29yZSA9IGZ1bmN0aW9uKHN0cikgeworICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbYS16XSkoW0Et
Wl0pL2csIGZ1bmN0aW9uIChnKSB7IHJldHVybiBnWzBdICsgIl8iICsgZ1sxXS50b1VwcGVyQ2Fz
ZSgpIH0pLnRvVXBwZXJDYXNlKCk7Cit9OworCit2YXIgc2hhZGVyUGFpcnMgPSBbCisgICBbd3R1
LmdldFNjcmlwdCgidnNoYWRlciIpLCB3dHUuZ2V0U2NyaXB0KCJmc2hhZGVyQ2hlY2siKV0sCisg
ICBbd3R1LmdldFNjcmlwdCgidnNoYWRlckNoZWNrIiksIHd0dS5nZXRTY3JpcHQoImZzaGFkZXIi
KV0sCitdOworCit3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKK3ZhcmlhYmxlcy5mb3JFYWNoKGZ1
bmN0aW9uKHZhcmlhYmxlKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRlc3RpbmcgZ2xfIiAr
IHZhcmlhYmxlLm5hbWUpOworICBpZiAoIXZhcmlhYmxlLm1heCkgeworICAgIHZhcmlhYmxlLm1h
eCA9IGdsLmdldFBhcmFtZXRlcihnbFt0b1VuZGVyc2NvcmUodmFyaWFibGUubmFtZSldKTsKKyAg
ICBleHBlY3RUcnVlKHZhcmlhYmxlLm1heCA+PSB2YXJpYWJsZS5taW4sICJnbC5nZXRQYXJhbWV0
ZXIoZ2wuIiArIHRvVW5kZXJzY29yZSh2YXJpYWJsZS5uYW1lKSArICIpID49ICIgKyB2YXJpYWJs
ZS5taW4pOworICB9CisgIHNoYWRlclBhaXJzLmZvckVhY2goZnVuY3Rpb24ocGFpcikgeworICAg
IHZhciBzaGFkZXJzID0gW3d0dS5yZXBsYWNlUGFyYW1zKHBhaXJbMF0sIHZhcmlhYmxlKSwgd3R1
LnJlcGxhY2VQYXJhbXMocGFpclsxXSwgdmFyaWFibGUpXTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIHNoYWRlcnMsIFsiYV9wb3NpdGlvbiJdLCB1bmRlZmluZWQsIHRy
dWUpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisgIH0pOworfSk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbGltaXRzL2dsLWxpbmUtd2lkdGguaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1s
aW5lLXdpZHRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ0NmM2MmE5NDA0OWU0N2E5ZWNhMjAxOWYwZTg2
MWQ5ZTZjMzZiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1saW5lLXdpZHRoLmh0bWwK
QEAgLTAsMCArMSw3MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+VmVyaWZ5IHRoYXQgbGluZSB3aWR0aCBsaW1pdHMgYXJlIGVuZm9yY2Vk
LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4g
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0
IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJl
eGFtcGxlIik7CisKKy8vIFF1ZXJ5IHRoZSBsaW5lIHdpZHRoIHJhbmdlCit2YXIgbGluZVdpZHRo
UmFuZ2UgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKTsKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycy4i
KTsKKworaWYgKGxpbmVXaWR0aFJhbmdlWzBdID4gMSB8fCBsaW5lV2lkdGhSYW5nZVsxXSA8IDEp
CisgIHRlc3RGYWlsZWQoIkxpbmUgd2lkdGggcmFuZ2UgbXVzdCBpbmNsdWRlIHdpZHRoIDEiKTsK
KworLy8gWmVybywgbmVnYXRpdmUsIG9yIE5hTiB2YWx1ZXMgc2hvdWxkIGNhdXNlIGFuIGVycm9y
IGFuZCBsZWF2ZSB0aGUgdmFsdWUgdW5jaGFuZ2VkLgordmFyIGN1ckxpbmVXaWR0aCA9IGdsLmdl
dFBhcmFtZXRlcihnbC5MSU5FX1dJRFRIKTsKK2dsLmxpbmVXaWR0aCgwKTsKK3d0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJTaG91bGQgbm90IGJlIGFibGUgdG8gc2V0
IGxpbmVXaWR0aCB0byB6ZXJvIik7CitzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkxJTkVf
V0lEVEgpJywgJ2N1ckxpbmVXaWR0aCcpOyAvLyBQcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUgcHJl
c2VydmVkCisKK2dsLmxpbmVXaWR0aCgtMSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX1ZBTFVFLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHNldCBsaW5lV2lkdGggdG8gYSBu
ZWdhdGl2ZSB2YWx1ZSIpOworc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5MSU5FX1dJRFRI
KScsICdjdXJMaW5lV2lkdGgnKTsgLy8gUHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlIHByZXNlcnZl
ZAorCitnbC5saW5lV2lkdGgoTmFOKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsICJTaG91bGQgbm90IGJlIGFibGUgdG8gc2V0IGxpbmVXaWR0aCB0byBOYU4iKTsK
K3Nob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuTElORV9XSURUSCknLCAnY3VyTGluZVdpZHRo
Jyk7IC8vIFByZXZpb3VzIHZhbHVlIHNob3VsZCBiZSBwcmVzZXJ2ZWQKKworLy8gQ2hlY2sgdGhh
dCB0aGUgbGluZSB3aWR0aCBjYW4gYmUgc2V0IHRvIHRoZSB2YWxpZCByYW5nZS4KK2dsLmxpbmVX
aWR0aChsaW5lV2lkdGhSYW5nZVsxXSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlNob3VsZCBiZSBhYmxlIHRvIHNldCBsaW5lV2lkdGggdG8gdGhlIG1heCBzdXBwb3J0
ZWQgdmFsdWUiKTsKK3Nob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuTElORV9XSURUSCknLCAn
bGluZVdpZHRoUmFuZ2VbMV0nKTsKKworZ2wubGluZVdpZHRoKGxpbmVXaWR0aFJhbmdlWzBdKTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIGFibGUgdG8g
c2V0IGxpbmVXaWR0aCB0byB0aGUgbWluIHN1cHBvcnRlZCB2YWx1ZSIpOworc2hvdWxkQmUoJ2ds
LmdldFBhcmFtZXRlcihnbC5MSU5FX1dJRFRIKScsICdsaW5lV2lkdGhSYW5nZVswXScpOworCisv
LyBDaGVja3MgdGhhdCB0aGUgbGluZSB3aWR0aCBjYW4gYmUgc2V0IG91dHNpZGUgdGhlIHN1cHBv
cnRlZCByYW5nZSB3aXRob3V0IGVycm9yLAorLy8gYW5kIHRoZSB1bmNsYW1wZWQgdmFsdWUgY2Fu
IGJlIHF1ZXJpZWQgYmFjay4KKy8vIFllcywgdGhpcyBpcyBhY3R1YWxseSB3aGF0IHRoZSBzcGVj
IHNheXMgc2hvdWxkIGhhcHBlbi4KKy8vIFNlZTogaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvb3Bl
bmdsZXMvc2RrL2RvY3MvbWFuMy9odG1sL2dsTGluZVdpZHRoLnhodG1sCitnbC5saW5lV2lkdGgo
bGluZVdpZHRoUmFuZ2VbMV0rMSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgIlNob3VsZCBiZSBhYmxlIHRvIHNldCBsaW5lV2lkdGggdG8gdGhlIGFib3ZlIG1heCBzdXBw
b3J0ZWQgdmFsdWUiKTsKK3Nob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuTElORV9XSURUSCkn
LCAnbGluZVdpZHRoUmFuZ2VbMV0rMScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1t
YXgtdGV4dHVyZS1kaW1lbnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5z
aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YzU4NTAyMjUxMTcwMDg1NWIyZDg5M2MwOTM3ODQwMzQ2
MmEyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9u
cy5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0aGUgbWF4IGFkdmVydGl6ZWQgdGV4dHVyZSBz
aXplIGlzIHN1cHBvcnRlZC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDog
MzBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29y
ZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0
aW9uID0gdlBvc2l0aW9uOworICAgIHRleENvb3JkID0gdGV4Q29vcmQwOworfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXJDdWJlIHRleDsKK3Zhcnlpbmcg
dmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVy
ZUN1YmUodGV4LCBub3JtYWxpemUodmVjMyh0ZXhDb29yZCwgMSkpKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworZnVu
Y3Rpb24gc2hvdWxkQmVQb3dlck9mVHdvKG4sIG5hbWUpIHsKKyAgICB2YXIgcG93ZXIgPSBNYXRo
LnJvdW5kKE1hdGgubG9nKG4pIC8gTWF0aC5sb2coMikpOworICAgIGlmIChNYXRoLnBvdygyLCBw
b3dlcikgPT0gbikgeworICAgICAgICB0ZXN0UGFzc2VkKG5hbWUgKyAnIGlzIGEgcG93ZXIgb2Yg
dHdvLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQobmFtZSArICcgc2hvdWxk
IGJlIGEgcG93ZXIgb2YgdHdvLCBidXQgd2FzICcgKyBuKTsKKyAgICB9Cit9CisKKy8vIE5vdGU6
IEl0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VwdGlvbiB0aGF0IGEgMXhOIHRleHR1cmUg
c2l6ZSBzaG91bGQKKy8vIHdvcmsuIEV2ZW4gMSBieSAxMjhrIGlzIG9ubHkgNTEyawordmFyIG1h
eFNpemUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSk7CitkZWJ1ZygiYWR2
ZXJ0aXNlZCBtYXggc2l6ZTogIiArIG1heFNpemUpOworZGVidWcoInZlcmlmeWluZyBtYXggc2l6
ZSBpcyBwb3dlci1vZi10d28gKGltcGxpZWQgYnkgR0xFUyAyLjAgc2VjdGlvbiAzLjcuMSkiKTsK
K3Nob3VsZEJlUG93ZXJPZlR3byhtYXhTaXplLCAnTWF4IHNpemUnKTsKK3ZhciB0ZXN0U2l6ZSA9
IE1hdGgubWluKG1heFNpemUsIDEyOCAqIDEwMjQpOwordmFyIHBpeGVscyA9IG5ldyBVaW50OEFy
cmF5KHRlc3RTaXplICogNCk7Citmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdFNpemU7ICsraWkp
IHsKKyAgdmFyIG9mZiA9IGlpICogNDsKKyAgcGl4ZWxzW29mZiArIDBdID0gMDsKKyAgcGl4ZWxz
W29mZiArIDFdID0gMjU1OworICBwaXhlbHNbb2ZmICsgMl0gPSAxMjg7CisgIHBpeGVsc1tvZmYg
KyAzXSA9IDI1NTsKK30KK3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCitkZWJ1ZygidGVzdCAiICsgdGVzdFNpemUgKyAi
eDEiKTsKK2dsLnRleEltYWdlMkQoCisgICAgZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgdGVz
dFNpemUsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgcGl4ZWxzKTsKK2ds
LmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworCit3dHUuY2xlYXJBbmREcmF3VW5pdFF1
YWQoZ2wpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAxMjgsIDI1NV0sCisgICAgICAg
ICAgICAgICAgIlNob3VsZCBiZSAwLCAyNTUsIDEyOCwgMjU1Iik7CitkZWJ1ZygidGVzdCAxeCIg
KyB0ZXN0U2l6ZSk7CitnbC50ZXhJbWFnZTJEKAorICAgIGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIDEsIHRlc3RTaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgIHBpeGVs
cyk7CitnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKword3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKK3d0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMTI4LCAyNTVdLAor
ICAgICAgICAgICAgICAgICJTaG91bGQgYmUgMCwgMjU1LCAxMjgsIDI1NSIpOworCit2YXIgcHJv
Z3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10s
IFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddLCBbMCwgMV0pOworCit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMuIik7CisKKy8vIE5PVEU6
IFdlIGNhbid0IGVhc2lseSB0ZXN0IGN1YmUgbWFwcyBiZWNhdXNlIHRoZXkgcmVxdWlyZSB3aWR0
aCA9PSBoZWlnaHQKKy8vIGFuZCB3ZSBtaWdodCBub3QgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBt
YXhTaXplIGJ5IG1heFNpemUgdGV4dHVyZS4KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9saW1pdHMvZ2wt
bWluLWF0dHJpYnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1taW4tYXR0cmlicy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2ODEzMDMwNmM0YTBlOWE5ZjUwMDlmNTdjNDQ5NWE1YzA2MTNjYTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9saW1pdHMvZ2wtbWluLWF0dHJpYnMuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0aGUg
bWluaW11bSBudW1iZXIgb2YgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLjwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0
eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlv
bjsKK2F0dHJpYnV0ZSB2ZWM0IHYwOworYXR0cmlidXRlIHZlYzQgdjE7CithdHRyaWJ1dGUgdmVj
NCB2MjsKK2F0dHJpYnV0ZSB2ZWM0IHYzOworYXR0cmlidXRlIHZlYzQgdjQ7CithdHRyaWJ1dGUg
dmVjNCB2NTsKK2F0dHJpYnV0ZSB2ZWM0IHY2OwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICBjb2xvciA9IHYwICsg
djEgKyB2MiArIHYzICsgdjQgKyB2NSArIHY2OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9
ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworCit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
CisgICAgZ2wsCisgICAgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwKKyAgICBbJ3ZQb3NpdGlvbics
ICd2MCcsICd2MScsICd2MicsICd2MycsICd2NCcsICd2NScsICd2NiddLAorICAgIFswLCAxLCAy
LCAzLCA0LCA1LCA2LCA3XSk7CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCA3OyArK2lpKSB7Cisg
IHZhciB2ID0gKGlpICsgMSkgLyAyODsKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsK
KyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAg
ICAgdiwgdi8yLCB2LzQsIHYvOCwKKyAgICAgIHYsIHYvMiwgdi80LCB2LzgsCisgICAgICB2LCB2
LzIsIHYvNCwgdi84LAorICAgICAgdiwgdi8yLCB2LzQsIHYvOCwKKyAgICAgIHYsIHYvMiwgdi80
LCB2LzgsCisgICAgICB2LCB2LzIsIHYvNCwgdi84XSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaWkgKyAxKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRl
cihpaSArIDEsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Cit9CisKK3d0dS5jbGVhckFuZERy
YXdVbml0UXVhZChnbCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNo
b3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDAsIDAsIGdsLmNhbnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCwgWzI1NSwgMTI3LCA2NCwg
MzJdLCAiU2hvdWxkIHJlbmRlciAyNTUsMTI3LDY0LDMyICgrLy0xKSIsIDEpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1taW4tdGV4dHVyZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9n
bC1taW4tdGV4dHVyZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2I5ZjFmOTRjYzAxOTNlOWU4NTQwYjBh
ZjYxYzUyYzQzMTAzNmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbGltaXRzL2dsLW1pbi10ZXh0dXJl
cy5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHRoZSBtaW5pbXVtIG51bWJlciBvZiB1bmlmb3Jt
cyBhcmUgc3VwcG9ydGVkLjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAz
MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVy
dGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
UG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZGVmaW5lIE5VTV9URVhUVVJFUyA4IC8v
IFNlZSBzcGVjCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHVu
aVtOVU1fVEVYVFVSRVNdOwordm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0IGMgPSB2ZWM0KDAsMCww
LDApOworICAgIC8vIFRoZSBsb29wIHdhcyBtYW51YWxseSB1bnJvbGxlZCBpbiBvcmRlciB0byB2
ZXJpZnkgdGhhdCB0aGlzIHdvcmtzLgorICAgIC8vIEEgc2VwYXJhdGUgdGVzdCBzYW1wbGVyLWFy
cmF5LXVzaW5nLWxvb3AtaW5kZXguaHRtbCBjaGVja3MgdGhhdAorICAgIC8vIGxvb3BzIGluZGV4
aW5nIHNhbXBsZXIgYXJyYXlzIHN0aWxsIHdvcmsuCisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzBd
LCB2ZWMyKDAuNSwgMC41KSk7CisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzFdLCB2ZWMyKDAuNSwg
MC41KSk7CisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzJdLCB2ZWMyKDAuNSwgMC41KSk7CisgICAg
YyArPSB0ZXh0dXJlMkQodW5pWzNdLCB2ZWMyKDAuNSwgMC41KSk7CisgICAgYyArPSB0ZXh0dXJl
MkQodW5pWzRdLCB2ZWMyKDAuNSwgMC41KSk7CisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzVdLCB2
ZWMyKDAuNSwgMC41KSk7CisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzZdLCB2ZWMyKDAuNSwgMC41
KSk7CisgICAgYyArPSB0ZXh0dXJlMkQodW5pWzddLCB2ZWMyKDAuNSwgMC41KSk7CisgICAgZ2xf
RnJhZ0NvbG9yID0gYzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rl
c2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1
LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZhciBw
cm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICBnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXIn
XSwgWyd2UG9zaXRpb24nXSwgWzBdKTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IDg7ICsraWkp
IHsKKyAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidW5pWyIgKyBp
aSArICJdIik7CisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAgKyBpaSk7CisgIHZhciB0
ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4LCAxLCAx
LCBbMzIsIDE2LCA4LCBpaSAqIDldLCAwKTsKKyAgZ2wudW5pZm9ybTFpKGxvYywgaWkpOworfQor
Cit3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7Cit3dHUuY2hl
Y2tDYW52YXMoZ2wsIFsyNTUsIDEyOCwgNjQsIDI1Ml0sCisgICAgICAgICAgICAgICAgIlNob3Vs
ZCByZW5kZXIgdXNpbmcgYWxsIHRleHR1cmUgdW5pdHMiLCAxKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9saW1pdHMvZ2wtbWluLXVuaWZvcm1zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWluLXVuaWZvcm1zLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTRhMWJmN2VhNDk1ZDJlZDA3OGE1ZWQ0MTQyYjA3M2U3NGNiNDJhYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1taW4tdW5pZm9ybXMuaHRtbApAQCAtMCwwICsx
LDEwNSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHVuaWZvcm1zIGFyZSBzdXBwb3J0ZWQu
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjQi
IGhlaWdodD0iNCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorI2RlZmluZSBO
VU1fVU5JRk9STVMgMTI4IC8vIFNlZSBzcGVjCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit1
bmlmb3JtIHZlYzQgdW5pW05VTV9VTklGT1JNU107Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lk
IG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIHZlYzQgYyA9IHZl
YzQoMCwwLDAsMCk7CisgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IE5VTV9VTklGT1JNUzsgKytp
aSkgeworICAgICAgYyArPSB1bmlbaWldOworICAgIH0KKyAgICBjb2xvciA9IGM7Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFp
bigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9InZzaGFkZXIyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2
UG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2RlZmluZSBOVU1fVU5JRk9STVMg
MTYgLy8gU2VlIHNwZWMKK3VuaWZvcm0gdmVjNCB1bmlbTlVNX1VOSUZPUk1TXTsKK3ZvaWQgbWFp
bigpCit7CisgICAgdmVjNCBjID0gdmVjNCgwLDAsMCwwKTsKKyAgICBmb3IgKGludCBpaSA9IDA7
IGlpIDwgTlVNX1VOSUZPUk1TOyArK2lpKSB7CisgICAgICAgYyArPSB1bmlbaWldOworICAgIH0K
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMuciwgYy5nLCBjLmIsIGMuYSAvIDEyMC4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRvY3VtZW50
LnRpdGxlKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFk
KGdsKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRpb24nXSwgWzBdKTsK
KworZm9yICh2YXIgaWkgPSAwOyBpaSA8IDEyODsgKytpaSkgeworICB2YXIgbG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1bmlbIiArIGlpICsgIl0iKTsKKyAgZ2wudW5pZm9y
bTRmKGxvYywgMi8yNTYsIDIvNTEyLCAyLzEwMjQsIGlpLzgxMjgpOworfQorCit3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7Cit3dHUuY2hlY2tDYW52YXNSZWN0
KGdsLCAwLCAwLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQsIFsyNTUsIDEyNywg
NjQsIDI1NV0sICJTaG91bGQgcmVuZGVyIDI1NSwxMjcsNjQsMzIgKCsvLTEpIiwgMSk7CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2ws
IFsndnNoYWRlcjInLCAnZnNoYWRlcjInXSwgWyd2UG9zaXRpb24nXSwgWzBdKTsKKworZm9yICh2
YXIgaWkgPSAwOyBpaSA8IDE2OyArK2lpKSB7CisgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInVuaVsiICsgaWkgKyAiXSIpOworICBnbC51bmlmb3JtNGYobG9jLCAx
Ni8yMDQ4LCAxNi8xMDI0LCAxNi81MTIsIGlpKTsKK30KKword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7Cit3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7Cit3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCAwLCAwLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQsIFszMiwg
NjQsIDEyNywgMjU1XSwgIlNob3VsZCByZW5kZXIgMzIsNjQsMTI3LDI1NSAoKy8tMSkiLCAxKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9tYW51YWwvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy1zdGF0ZS1s
ZWFrYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9tYW51YWwvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy1zdGF0ZS1sZWFrYWdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDM2ZTk4NzdmZjk0MzFkNTcyMWQzYmQ2NDUyYzA3YjVmZDFhMjRm
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21hbnVhbC9hbmdsZS1pbnN0YW5jZWQtYXJyYXlzLXN0YXRl
LWxlYWthZ2UuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DaGVjayB0aGF0IEFOR0xFX2luc3RhbmNlZF9h
cnJheXMgc3RhdGUgZG9lcyBub3QgbGVhayB0byBicm93c2VyPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorY2Fu
dmFzIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKy5jb3JyZWN0IHsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmZjAwOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZT4KK1RoaXMgdGVzdCBtdXN0IGJlIHJ1
biBtYW51YWxseS4KKworVGhpcyB0ZXN0IHRlc3RzIHRoYXQgbGVhdmluZyBzdGF0ZSBmb3IgQU5H
TEVfaW5zdGFuY2VkX2FycmF5cyB3aXRoIG5vbi1kZWZhdWx0IHZhbHVlcyBhdCB0aGUKK2VuZCBv
ZiByZW5kZXJpbmcgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggcHJvcGVyIGNvbXBvc2l0aW5nIG9m
IHJlc3VsdHMuCitGYWlsdXJlcyBzZWVuIG9uIExpbnV4IGFuZCBNYWMgd2l0aCBDaHJvbWUgMzIu
CitTZWUgaHR0cDovL2NyYnVnLmNvbS8zMDQ5MjcgZm9yIG1vcmUgaW5mby4KKworWW91IHNob3Vs
ZCBzZWUgYSA8c3BhbiBjbGFzcz0iY29ycmVjdCI+Z3JlZW4gcmVjdGFuZ2xlPC9zcGFuPgord2l0
aCBibGFjayBhIG91dGxpbmUgb24gc3VjY2Vzcy4gIEJyaWVmbHkgZmxhc2hpbmcgcmVkIGlzIG5v
cm1hbC4KKzwvcHJlPgorPGNhbnZhcyBpZD0nYyc+PC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7CisvLyBUaGUgYnVnIGhh
cyBvbmx5IGJlZW4gc2VlbiB3aXRoIHByZXNlcnZlRHJhd2luZ0J1ZmZlcj10cnVlLgordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjLCB7IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSB9
KTsKK3ZhciBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJBTkdM
RV9pbnN0YW5jZWRfYXJyYXlzIik7Cit2YXIgZnJhbWUgPSAwOworZnVuY3Rpb24gcmVuZGVyKCkg
eworICB2YXIgUkVEX0ZSQU1FUyA9IDM7CisgIGlmIChmcmFtZSA8IFJFRF9GUkFNRVMpIHsKKyAg
ICAvLyBEcmF3IE4gZnJhbWVzIHJlZCwgbGVhdmluZyB0aGUgdmVydGV4IGRpdmlzb3IgdG8gMCBh
ZnRlciBlYWNoIGNhbGwuCisgICAgZ2wuY2xlYXJDb2xvcigxLDAsMCwxKTsKKyAgICBnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB3dHUucmVxdWVzdEFuaW1GcmFtZShyZW5kZXIp
OworICB9IGVsc2UgeworICAgIC8vIERyYXcgMiBtb3JlIHRpbWVzIGluIGdyZWVuLCBzZXR0aW5n
IHRoZSBkaXZpc29yIHRvIDEgYWZ0ZXJ3YXJkLgorICAgIGdsLmNsZWFyQ29sb3IoMCwxLDAsMSk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgaWYgKGZyYW1lIC0gUkVE
X0ZSQU1FUyA8IDIpIHsKKyAgICAgIHd0dS5yZXF1ZXN0QW5pbUZyYW1lKHJlbmRlcik7CisgICAg
fSBlbHNlIHsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9CisgICAgLy8gTGVhdmUgYXR0cmli
IDAgc2V0IHdpdGggYSBkaXZpc29yIG9mIDEgYmVmb3JlIHJldHVybmluZyB0byBicm93c2VyLgor
ICAgIGlmIChleHQpIHsKKyAgICAgICBleHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKDAsIDEp
OworICAgIH0KKyAgfQorICBmcmFtZSsrOworfQorCitpZiAoIWV4dCkgeworICB0ZXN0UGFzc2Vk
KCJObyBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOwor
fQord3R1LnJlcXVlc3RBbmltRnJhbWUocmVuZGVyKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tYW51YWwv
Y2FudmFzLWNsZWFyLW9uLXplcm8tY291bnQtZHJhdy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1jbGVh
ci1vbi16ZXJvLWNvdW50LWRyYXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMThjOGFiOTZlYmVmNTcwOWE3
MWYyNGU3OGJjNDdjMDljYTk2N2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1j
bGVhci1vbi16ZXJvLWNvdW50LWRyYXcuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DaGVjayB0aGF0IHRo
ZSBjYW52YXMgaXMgTk9UIHJlY29tcG9zaXRlZCBhZnRlciB1bnN1Y2Vzc2Z1bCBkcmF3IGNhbGw8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CitjYW52YXMgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
fQorLmNvcnJlY3QgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91
bmQtY29sb3I6ICNmZmZmZmY7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlPgor
VGhpcyB0ZXN0IG11c3QgYmUgcnVuIG1hbnVhbGx5LgorCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBh
IGNhbnZhcyBpcyBjbGVhcmVkCitldmVuIHdoZW4gYSBkcmF3IGNhbGwgaGFzIGEgemVybyBjb3Vu
dC4KKworWW91IHNob3VsZCBzZWUgdGhyZWUgPHNwYW4gY2xhc3M9ImNvcnJlY3QiPndoaXRlIHJl
Y3RhbmdsZXM8L3NwYW4+Cit3aXRoIGJsYWNrIG91dGxpbmVzIG9uIHN1Y2Nlc3MuCis8L3ByZT4K
KzxjYW52YXMgaWQ9J2MxJz48L2NhbnZhcz4KKzxjYW52YXMgaWQ9J2MyJz48L2NhbnZhcz4KKzxj
YW52YXMgaWQ9J2MzJz48L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgordm9pZCBtYWluKCkgewor
ICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgIGRpc2NhcmQ7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgYzEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYzEiKTsKK3ZhciBjMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjMiIpOwordmFyIGMzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMyIik7Cit2YXIg
Z2wxID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjMSk7Cit2YXIgZ2wyID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjMik7Cit2YXIgZ2wzID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjMik7CitnbDEuY2xlYXJD
b2xvcigwLDEsMCwxKTsKK2dsMS5jbGVhcihnbDEuQ09MT1JfQlVGRkVSX0JJVCk7CitnbDIuY2xl
YXJDb2xvcigwLDEsMCwxKTsKK2dsMi5jbGVhcihnbDIuQ09MT1JfQlVGRkVSX0JJVCk7CitnbDMu
Y2xlYXJDb2xvcigwLDEsMCwxKTsKK2dsMy5jbGVhcihnbDIuQ09MT1JfQlVGRkVSX0JJVCk7CisK
K3d0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICAvLyB0ZXN0IGRyYXdBcnJheXMK
KyAgZ2wxLmRyYXdBcnJheXMoZ2wxLlRSSUFOR0xFUywgMCwgMCk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wxLCBnbDEuTk9fRVJST1IsICJubyBlcnJvcnMiKTsKK30pOworCit3dHUud2FpdEZv
ckNvbXBvc2l0ZShmdW5jdGlvbigpIHsKKyAgLy8gdGVzdCBkcmF3RWxlbWVudHMKKyAgdmFyIGJ1
ZiA9IGdsMi5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wyLmJpbmRCdWZmZXIoZ2wyLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBidWYpOworICBnbDIuYnVmZmVyRGF0YShnbDIuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG5ldyBVaW50OEFycmF5KDEpLCBnbDIuU1RBVElDX0RSQVcpOworICBnbDIuZHJhd0VsZW1l
bnRzKGdsMi5UUklBTkdMRVMsIDAsIGdsMi5VTlNJR05FRF9TSE9SVCwgMCk7CisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wyLCBnbDIuTk9fRVJST1IsICJubyBlcnJvcnMiKTsKK30pOworCit3dHUu
d2FpdEZvckNvbXBvc2l0ZShmdW5jdGlvbigpIHsKKyAgLy8gdGVzdCBkcmF3IHdpdGggcHJvZ3Jh
bS4KKyAgd3R1LnNldHVwUHJvZ3JhbShnbDMsIFsidnNoYWRlciIsICJmc2hhZGVyIl0pOworICBn
bDEuZHJhd0FycmF5cyhnbDMuVFJJQU5HTEVTLCAwLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbDMsIGdsMi5OT19FUlJPUiwgIm5vIGVycm9ycyIpOworfSk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1uby1jbGVhci1vbi1yZWFk
cGl4ZWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9tYW51YWwvY2FudmFzLW5vLWNsZWFyLW9uLXJlYWRwaXhlbHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2FiNzgyMWM1ZjI3NzRhYTQ2YzlhMDBlZjZiYWMwYTQwZDRiNWVmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1uby1jbGVhci1vbi1yZWFkcGl4ZWxzLmh0bWwK
QEAgLTAsMCArMSw1MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+Q2hlY2sgdGhhdCB0aGUgY2FudmFzIGlzIE5PVCByZWNvbXBvc2l0ZWQg
YWZ0ZXIgY2FsbGluZyByZWFkUGl4ZWxzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorY2FudmFzIHsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKy5jb3JyZWN0IHsKKyAgICBib3JkZXI6IDFweCBz
b2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmZjAwOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHByZT4KK1RoaXMgdGVzdCBtdXN0IGJlIHJ1biBtYW51YWxseS4K
KworVGhpcyB0ZXN0IHRlc3RzIHRoYXQgYSBjYW52YXMgaXMgTk9UIGNsZWFyZWQKK2FuZCByZWNv
bXBvc2l0ZWQgYWZ0ZXIgY2FsbGluZyByZWFkUGl4ZWxzLgorCitZb3Ugc2hvdWxkIHNlZSBhIDxz
cGFuIGNsYXNzPSJjb3JyZWN0Ij5ncmVlbiByZWN0YW5nbGU8L3NwYW4+Cit3aXRoIGJsYWNrIGEg
b3V0bGluZSBvbiBzdWNjZXNzLgorPC9wcmU+Cis8Y2FudmFzIGlkPSdjJz48L2NhbnZhcz4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiKTsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoYyk7CitnbC5jbGVhckNvbG9yKDAsMSwwLDEp
OworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cit3dHUud2FpdEZvckNvbXBvc2l0ZShm
dW5jdGlvbigpIHsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBuZXcgVWludDhBcnJheSg0KSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIik7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1uby1jbGVhci1vbi11bnN1Y2Nlc3NmdWwt
ZHJhdy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvbWFudWFsL2NhbnZhcy1uby1jbGVhci1vbi11bnN1Y2Nlc3NmdWwtZHJhdy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhMTA0ZDA3NzQ2M2U0MTY2OGU2MzkxMjk5NWViN2NjNTI2ZjYzZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9tYW51YWwvY2FudmFzLW5vLWNsZWFyLW9uLXVuc3VjY2Vzc2Z1
bC1kcmF3Lmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q2hlY2sgdGhhdCB0aGUgY2FudmFzIGlzIE5PVCBy
ZWNvbXBvc2l0ZWQgYWZ0ZXIgdW5zdWNlc3NmdWwgZHJhdyBjYWxsPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
Y2FudmFzIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKy5jb3JyZWN0IHsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmZjAw
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZT4KK1RoaXMgdGVzdCBtdXN0IGJl
IHJ1biBtYW51YWxseS4KKworVGhpcyB0ZXN0IHRlc3RzIHRoYXQgYSBjYW52YXMgaXMgTk9UIGNs
ZWFyZWQKK3doZW4gYSBkcmF3IGNhbGwgZmFpbHMuCisKK1lvdSBzaG91bGQgc2VlIHR3byA8c3Bh
biBjbGFzcz0iY29ycmVjdCI+Z3JlZW4gcmVjdGFuZ2xlczwvc3Bhbj4KK3dpdGggYmxhY2sgb3V0
bGluZXMgb24gc3VjY2Vzcy4KKzwvcHJlPgorPGNhbnZhcyBpZD0nYzEnPjwvY2FudmFzPgorPGNh
bnZhcyBpZD0nYzInPjwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGMxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMxIik7Cit2YXIgYzIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYzIiKTsKK3ZhciBnbDEgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGMxKTsKK3ZhciBnbDIg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGMyKTsKK2dsMS5jbGVhckNvbG9yKDAsMSwwLDEpOworZ2wx
LmNsZWFyKGdsMS5DT0xPUl9CVUZGRVJfQklUKTsKK2dsMi5jbGVhckNvbG9yKDAsMSwwLDEpOwor
Z2wyLmNsZWFyKGdsMi5DT0xPUl9CVUZGRVJfQklUKTsKK3d0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1
bmN0aW9uKCkgeworICBnbDEuZHJhd0FycmF5cyhnbDEuQkxFTkQsIDAsIDApOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsMSwgZ2wxLklOVkFMSURfRU5VTSwgIm5vIGVycm9ycyIpOworfSk7CisK
K3d0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICB2YXIgYnVmID0gZ2wyLmNyZWF0
ZUJ1ZmZlcigpOworICBnbDIuYmluZEJ1ZmZlcihnbDIuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1
Zik7CisgIGdsMi5idWZmZXJEYXRhKGdsMi5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4
QXJyYXkoMSksIGdsMi5TVEFUSUNfRFJBVyk7CisgIGdsMi5kcmF3RWxlbWVudHMoZ2wyLkJMRU5E
LCAwLCBnbDIuVU5TSUdORURfU0hPUlQsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsMiwg
Z2wyLklOVkFMSURfRU5VTSwgIm5vIGVycm9ycyIpOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21hbnVhbC9mcmFtZWJ1ZmZlcnMta2VlcC1jb250ZW50cy1l
eGl0aW5nLWZ1bGxzY3JlZW4tbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWFudWFsL2ZyYW1lYnVmZmVycy1rZWVwLWNv
bnRlbnRzLWV4aXRpbmctZnVsbHNjcmVlbi1tb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViNmZlOGQx
OWMxMGVmYjZhMTUyZWFjNjFmZmRhY2UwNTg0MjFmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21hbnVh
bC9mcmFtZWJ1ZmZlcnMta2VlcC1jb250ZW50cy1leGl0aW5nLWZ1bGxzY3JlZW4tbW9kZS5odG1s
CkBAIC0wLDAgKzEsMTM0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5DaGVjayB0aGF0IGZyYW1lYnVmZmVycyBrZWVwIGNvbnRlbnRzIGV4
aXRpbmcgZnVsbHNjcmVlbiBtb2RlLjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OworfQorI2YgeworICAgIGxlZnQ6IDBweDsKKyAgICB0b3A6IDBweDsKK30KKyNpbm5lciB7Cit9
CitpbnB1dC5idXR0b24geworICAgIGZvbnQtc2l6ZTogMzZwdDsKK30KKy5yZWRib3ggeworICAg
IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30K
KyNjYW52YXNob2xkZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKyNjbGFiZWwgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICB0b3A6IDBweDsK
KyAgICBsZWZ0OiAwcHg7CisgICAgZm9udC1zaXplOiA0MHB4OworICAgIHotaW5kZXg6IDEwOwor
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
cmU+CitUaGlzIHRlc3QgbXVzdCBiZSBydW4gbWFudWFsbHkuCisKK0NoZWNrcyB0aGF0IGZyYW1l
YnVmZmVycyBrZWVwIHRoZWlyIGNvbnRlbnRzIGdvaW5nIGludG8gYW5kIG91dCBvZiBmdWxsc2Ny
ZWVuIG1vZGUuCisKK1Rocm91Z2ggdGhlIGVudGlyZSB0ZXN0IHlvdSBzaG91bGQgc2VlIGEgPHNw
YW4gY2xhc3M9InJlZGJveCI+cmVkIHJlY3RhbmdsZTwvc3Bhbj4uIElmIGl0IGlzIG5vdCA8c3Bh
biBjbGFzcz0icmVkYm94Ij5yZWQ8L3NwYW4+IGluIGFsbCBjYXNlcyB0aGUgdGVzdCBoYXMgZmFp
bGVkLgorPC9wcmU+Cis8ZGl2IGlkPSJmIj4KKyAgPGRpdiBpZD0iaW5uZXIiPgorICAgIDxkaXYg
aWQ9ImJ1dHRvbkhvbGRlciI+CisgICAgICA8ZGl2PjxpbnB1dCBpZD0iYnV0dG9uIiBjbGFzcz0i
YnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJDbGljayB0aGlzIGJ1dHRvbiB0byBjb250aW51
ZSB0aGUgdGVzdCIvPjwvZGl2PgorICAgICAgPGRpdiBpZD0iY2FudmFzaG9sZGVyIj4KKyAgICAg
ICAgPGNhbnZhcyBpZD0nYyc+PC9jYW52YXM+CisgICAgICAgIDxkaXYgaWQ9J2NsYWJlbCc+Cisg
ICAgICAgICAgc2hvdWxkIGJlIHJlZAorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAg
IDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIHRlc3RlZEZ1bGxTY3JlZW4gPSBmYWxzZTsKK3ZhciBj
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiKTsKK3ZhciBidXR0b24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYnV0dG9uIik7Cit2YXIgYnV0dG9uSG9sZGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbkhvbGRlciIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY2FuJ3QgaW5pdCBXZWJHTCIpOworfQor
Cit2YXIgY2hlY2tTdGF0ZSA9IGZ1bmN0aW9uKCkgeworICBkZWJ1ZygiIik7CisgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAyNTUsIDAsIDI1NV0pOworICBzaG91bGRC
ZU5vbk51bGwoImdsLmdldFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUl9CSU5ESU5HKSIpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBl
cnJvcnMiKTsKK30KKwordmFyIGNoZWNrRnJhbWVidWZmZXJTdGF0ZSA9IGZ1bmN0aW9uKGZ1bGxz
Y3JlZW4pIHsKKyAgY2hlY2tTdGF0ZSgpOworCisgIGRlYnVnKCJmdWxsc2NyZWVuOiIgKyBmdWxs
c2NyZWVuKTsKKworICBpZiAoZnVsbHNjcmVlbikgeworICAgIC8vIE5vdCBzdXJlIGlmIHRoaXMg
aXMgbmVlZGVkIGJ1dCBuZWVkIHRvIG1ha2Ugc3VyZQorICAgIC8vIHdlIGF0IGxlYXN0IHdlbnQg
ZnVsbHNjcmVlbiBvbmNlLgorICAgIHRlc3RlZEZ1bGxTY3JlZW4gPSB0cnVlOworICB9IGVsc2Ug
eworICAgIGlmICh0ZXN0ZWRGdWxsU2NyZWVuKSB7CisgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
fQorICB9Cit9OworCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkgeworICBpZiAoIXd0dS5zZXR1cEZ1
bGxzY3JlZW4oImJ1dHRvbiIsICJmIiwgY2hlY2tGcmFtZWJ1ZmZlclN0YXRlKSkgeworICAgIHRl
c3RQYXNzZWQoIkJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBmdWxsc2NyZWVuIG1vZGUuIFRoaXMg
aXMgT0siKTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGZi
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKKworICBnbC5jbGVhckNvbG9yKDEsMCwwLDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICBzaG91bGRCZSgiZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJf
Q09NUExFVEUiKTsKKworICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUKTsKKworICBjaGVja1N0YXRlKCk7Cit9OwordGVzdCgpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvYmFkLWFyZ3VtZW50
cy10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9taXNjL2JhZC1hcmd1bWVudHMtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJh
ZTdkOTFiZjMwNzM2YmU0YzI2OThkNjY0Y2JjNGU0Nzg3YmI0OWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9taXNjL2JhZC1hcmd1bWVudHMtdGVzdC5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aCB3cm9uZyBhcmd1bWVudCB0eXBl
cyIpOworCisKK3ZhciB0ZXN0QXJndW1lbnRzID0gWworICB7IHZhbHVlOiAiZm9vIiwKKyAgICB0
aHJvd3NGb3JOdWxsYWJsZXM6IHRydWUgfSwKKyAgeyB2YWx1ZTogMCwKKyAgICB0aHJvd3NGb3JO
dWxsYWJsZXM6IHRydWUgfSwKKyAgeyB2YWx1ZTogbnVsbCwKKyAgICB0aHJvd3NGb3JOdWxsYWJs
ZXM6IGZhbHNlIH0sCisgIHsgdmFsdWU6IHVuZGVmaW5lZCwKKyAgICB0aHJvd3NGb3JOdWxsYWJs
ZXM6IGZhbHNlIH0KK107CisKK3ZhciBhcmd1bWVudDsKKwordmFyIGNvbnRleHQgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbTsKK3ZhciBzaGFkZXI7Cit2YXIgbG9jOword3R1
LmxvYWRTdGFuZGFyZFByb2dyYW1Bc3luYyhjb250ZXh0LCBmdW5jdGlvbihzdWNjZXNzLCBwcm9n
KSB7CisgIHByb2dyYW0gPSBwcm9nOworICB3dHUubG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyQXN5
bmMoY29udGV4dCwgZnVuY3Rpb24oc3VjY2VzcywgcykgeworICAgIHNoYWRlciA9IHM7CisKKyAg
ICBhc3NlcnRNc2cocHJvZ3JhbSAhPSBudWxsLCAiUHJvZ3JhbSBDb21waWxlZCIpOworICAgIGFz
c2VydE1zZyhzaGFkZXIgIT0gbnVsbCwgIlNoYWRlciBDb21waWxlZCIpOworCisgICAgbG9jID0g
Y29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfbW9kZWxWaWV3UHJvak1hdHJp
eCIpOworICAgIGFzc2VydE1zZyhsb2MgIT0gbnVsbCwgImdldFVuaWZvcm1Mb2NhdGlvbiBzdWNj
ZWVkZWQiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdEFyZ3VtZW50cy5sZW5ndGg7
ICsraSkgeworICAgICAgYXJndW1lbnQgPSB0ZXN0QXJndW1lbnRzW2ldLnZhbHVlOworCisgICAg
ICBkZWJ1ZygnVGVzdGluZyBhcmd1bWVudDogJyArIGFyZ3VtZW50KTsKKworICAgICAgLy8gVGhl
c2UgZnVuY3Rpb25zIGRvbid0IGFjY2VwdCBudWxsYWJsZSBhcmd1bWVudHMgYW55IG1vcmUuCisg
ICAgICBzaG91bGRUaHJvdygiY29udGV4dC5jb21waWxlU2hhZGVyKGFyZ3VtZW50KSIpOworICAg
ICAgc2hvdWxkVGhyb3coImNvbnRleHQubGlua1Byb2dyYW0oYXJndW1lbnQpIik7CisgICAgICBz
aG91bGRUaHJvdygiY29udGV4dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgYXJndW1lbnQpIik7Cisg
ICAgICBzaG91bGRUaHJvdygiY29udGV4dC5hdHRhY2hTaGFkZXIoYXJndW1lbnQsIHNoYWRlciki
KTsKKyAgICAgIHNob3VsZFRocm93KCJjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFtLCBhcmd1
bWVudCkiKTsKKyAgICAgIHNob3VsZFRocm93KCJjb250ZXh0LmRldGFjaFNoYWRlcihhcmd1bWVu
dCwgc2hhZGVyKSIpOworICAgICAgc2hvdWxkVGhyb3coImNvbnRleHQuc2hhZGVyU291cmNlKGFy
Z3VtZW50LCAnZm9vJykiKTsKKyAgICAgIHNob3VsZFRocm93KCJjb250ZXh0LmJpbmRBdHRyaWJM
b2NhdGlvbihhcmd1bWVudCwgMCwgJ2ZvbycpIik7CisgICAgICBzaG91bGRUaHJvdygiY29udGV4
dC5nZXRQcm9ncmFtSW5mb0xvZyhhcmd1bWVudCkiKTsKKyAgICAgIHNob3VsZFRocm93KCJjb250
ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIoYXJndW1lbnQsIDApIik7CisgICAgICBzaG91bGRUaHJv
dygiY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKGFyZ3VtZW50KSIpOworICAgICAgc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKGFyZ3VtZW50LCAwKSIpOworICAgICAgc2hv
dWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyU291cmNlKGFyZ3VtZW50KSIpOworICAgICAgc2hv
dWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybShhcmd1bWVudCwgbG9jKSIpOworICAgICAgc2hv
dWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybShwcm9ncmFtLCBhcmd1bWVudCkiKTsKKyAgICAg
IHNob3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbihhcmd1bWVudCwgJ3VfbW9k
ZWxWaWV3UHJvak1hdHJpeCcpIik7CisKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZW50cnkgcG9p
bnRzIHN0aWxsIGFjY2VwdCBudWxsYWJsZSBhcmd1bWVudHMuCisgICAgICB2YXIgZnVuYzsKKyAg
ICAgIGlmICh0ZXN0QXJndW1lbnRzW2ldLnRocm93c0Zvck51bGxhYmxlcykgeworICAgICAgICBm
dW5jID0gc2hvdWxkVGhyb3c7CisgICAgICB9IGVsc2UgeworICAgICAgICBmdW5jID0gc2hvdWxk
QmVVbmRlZmluZWQ7CisgICAgICB9CisKKyAgICAgIGZ1bmMoImNvbnRleHQuYmluZEJ1ZmZlcihj
b250ZXh0LkFSUkFZX0JVRkZFUiwgYXJndW1lbnQpIik7CisgICAgICBmdW5jKCJjb250ZXh0LmJp
bmRGcmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBhcmd1bWVudCkiKTsKKyAgICAgIGZ1
bmMoImNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJVRkZFUiwgYXJndW1l
bnQpIik7CisgICAgICBmdW5jKCJjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8y
RCwgYXJndW1lbnQpIik7CisgICAgICBmdW5jKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4
dC5SRU5ERVJCVUZGRVIsIGFyZ3VtZW50KSIpOworICAgICAgZnVuYygiY29udGV4dC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1F
TlQwLCBjb250ZXh0LlRFWFRVUkVfMkQsIGFyZ3VtZW50LCAwKSIpOworICAgICAgZnVuYygiY29u
dGV4dC51bmlmb3JtMmZ2KGFyZ3VtZW50LCBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMF0pKSIp
OworICAgICAgZnVuYygiY29udGV4dC51bmlmb3JtMml2KGFyZ3VtZW50LCBuZXcgSW50MzJBcnJh
eShbMCwgMF0pKSIpOworICAgICAgZnVuYygiY29udGV4dC51bmlmb3JtTWF0cml4MmZ2KGFyZ3Vt
ZW50LCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjAsIDAuMCwgMC4wXSkpIik7Cisg
ICAgICBmdW5jKCJjb250ZXh0LnVzZVByb2dyYW0oYXJndW1lbnQpIik7CisgICAgfQorICAgIGZp
bmlzaFRlc3QoKTsKKyAgfSk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvbWlzYy9ib29sZWFuLWFyZ3VtZW50LWNvbnZlcnNpb24uaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvYm9v
bGVhbi1hcmd1bWVudC1jb252ZXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQyMzY3M2JkYTMxOTcz
NWQ3OTJjMjUwNmQ3MjU3NTYzNjUzODE1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvYm9vbGVh
bi1hcmd1bWVudC1jb252ZXJzaW9uLmh0bWwKQEAgLTAsMCArMSwxMTUgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
dGVzdC1ldmFsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IGNvbnZlcnNpb24gb2YgYm9vbGVhbiBhcmd1bWVudHMgb2YgV2ViR0wgZnVuY3Rpb25zIGZv
bGxvd3MgRWNtYVNjcmlwdCA5LjIuIFRvQm9vbGVhbiIpOworZGVidWcoIiIpOworZGVidWcoIldo
ZW4gYW4gb2JqZWN0IGlzIGNvbnZlcnRlZCB0byBhIGJvb2xlYW4sIGl0IHNob3VsZCBhbHdheXMg
ZXZhbHVhdGUgYXMgdHJ1ZS4gQW55IHZhbHVlT2YoKSBtZXRob2Qgc2hvdWxkIG5vdCBldmVuIGdl
dCBjYWxsZWQuIFNlZSBNb3ppbGxhIGJ1ZyA3Mjc1OTAgd2hlcmUgR2Vja28gaW5jb3JyZWN0bHkg
Y29udmVydGVkIHN1Y2ggYW4gYXJndW1lbnQgdG8gYSBOdW1iZXIgaW5zdGVhZCBvZiBhIEJvb2xl
YW4sIGdpdmluZyB0aGUgd3JvbmcgYmVoYXZpb3IuIFNlZSA5LjIgYW5kIDkuMyBpbiB0aGUgRWNt
YVNjcmlwdCBzcGVjaWZpY2F0aW9uLiIpOworZGVidWcoIiIpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShnbCk7
Cit2YXIgc2hhZGVyID0gd3R1LmxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihnbCk7Cit2YXIgc2hv
dWxkR2VuZXJhdGVHTEVycm9yID0gd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcjsKKworYXNzZXJ0
TXNnKHByb2dyYW0gIT0gbnVsbCwgIlByb2dyYW0gQ29tcGlsZWQiKTsKK2Fzc2VydE1zZyhzaGFk
ZXIgIT0gbnVsbCwgIlNoYWRlciBDb21waWxlZCIpOworCit2YXIgdWxvYyA9IGdsLmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidV9tb2RlbFZpZXdQcm9qTWF0cml4Iik7Cit2YXIgYWxvYyA9
IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3ZlcnRleCIpOworCitnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpOworCit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBpbml0aWFs
aXphdGlvbi4iKTsKK2Fzc2VydE1zZyh1bG9jLCAiVW5pZm9ybSBub3QgZm91bmQiKTsKK2Fzc2Vy
dE1zZyhhbG9jID49IDAsICJBdHRyaWJ1dGUgbm90IGZvdW5kIik7CisKK3ZhciBib29sQXJnID0g
eyB2YWx1ZU9mOiBmdW5jdGlvbigpIHsgdGhyb3cgIkNvbnZlcnRpbmcgYW4gT2JqZWN0IHRvIGEg
Qm9vbGVhbiBzaG91bGQganVzdCBnaXZlICd0cnVlJyB3aXRob3V0IGZ1cnRoZXIgZXZhbHVhdGlv
biI7IH0gfQorCitmdW5jdGlvbiBzaG91bGROb3RUaHJvd1dpdGhCb29sQXJncyhjb2RlKSB7Cisg
IHRyeSB7CisgICAgVGVzdEV2YWwoY29kZSk7CisgIH0gY2F0Y2goZSkgeworICAgIHRlc3RGYWls
ZWQoY29kZSArICIgdGhyZXcgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgcmV0dXJuOworICB9Cisg
IHRlc3RQYXNzZWQoY29kZSArICIgY29udmVydGVkIGl0cyBib29sZWFuIGFyZ3VtZW50cyBjb3Jy
ZWN0bHkiKTsKK30KKworc2hvdWxkTm90VGhyb3dXaXRoQm9vbEFyZ3MoCisgICJnbC5jb2xvck1h
c2soYm9vbEFyZywgYm9vbEFyZywgYm9vbEFyZywgYm9vbEFyZykiCispOworCitzaG91bGROb3RU
aHJvd1dpdGhCb29sQXJncygKKyAgImdsLmRlcHRoTWFzayhib29sQXJnKSIKKyk7CisKK3Nob3Vs
ZE5vdFRocm93V2l0aEJvb2xBcmdzKAorICAiZ2wuc2FtcGxlQ292ZXJhZ2UoMSwgYm9vbEFyZyki
CispOworCitmdW5jdGlvbiB6ZXJvQXJyYXkobGVuZ3RoKSB7CisgIHZhciBhID0gbmV3IEFycmF5
KGxlbmd0aCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgYVtpXSA9
IDA7CisgIHJldHVybiBhOworfQorCitmdW5jdGlvbiB6ZXJvRmxvYXQzMkFycmF5KGxlbmd0aCkg
eworICB2YXIgYSA9IG5ldyBGbG9hdDMyQXJyYXkobGVuZ3RoKTsKKyAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykKKyAgICBhW2ldID0gMDsKKyAgcmV0dXJuIGE7Cit9CisKK3Nob3Vs
ZE5vdFRocm93V2l0aEJvb2xBcmdzKAorICAiZ2wudW5pZm9ybU1hdHJpeDJmdih1bG9jLCBib29s
QXJnLCB6ZXJvRmxvYXQzMkFycmF5KDQpKSIKKyk7CisKK3Nob3VsZE5vdFRocm93V2l0aEJvb2xB
cmdzKAorICAiZ2wudW5pZm9ybU1hdHJpeDJmdih1bG9jLCBib29sQXJnLCB6ZXJvQXJyYXkoNCkp
IgorKTsKKworc2hvdWxkTm90VGhyb3dXaXRoQm9vbEFyZ3MoCisgICJnbC51bmlmb3JtTWF0cml4
M2Z2KHVsb2MsIGJvb2xBcmcsIHplcm9GbG9hdDMyQXJyYXkoOSkpIgorKTsKKworc2hvdWxkTm90
VGhyb3dXaXRoQm9vbEFyZ3MoCisgICJnbC51bmlmb3JtTWF0cml4M2Z2KHVsb2MsIGJvb2xBcmcs
IHplcm9BcnJheSg5KSkiCispOworCitzaG91bGROb3RUaHJvd1dpdGhCb29sQXJncygKKyAgImds
LnVuaWZvcm1NYXRyaXg0ZnYodWxvYywgYm9vbEFyZywgemVyb0Zsb2F0MzJBcnJheSgxNikpIgor
KTsKKworc2hvdWxkTm90VGhyb3dXaXRoQm9vbEFyZ3MoCisgICJnbC51bmlmb3JtTWF0cml4NGZ2
KHVsb2MsIGJvb2xBcmcsIHplcm9BcnJheSgxNikpIgorKTsKKworc2hvdWxkTm90VGhyb3dXaXRo
Qm9vbEFyZ3MoCisgICJnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGFsb2MsIDQsIGdsLkZMT0FULCBi
b29sQXJnLCA0LCAwKSIKKyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy9kZWxheWVkLWRyYXdpbmcuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL21pc2MvZGVsYXllZC1kcmF3aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRjOWVhOGYzYWE1NDUz
NzNkN2MyMDIxYmY3YjIzYzNjYmVkMTAyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvZGVsYXll
ZC1kcmF3aW5nLmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRGVsYXllZCBEcmF3aW5nIHRlc3Qu
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjQi
IGhlaWdodD0iNCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2VuYWJsZUpTVGVzdFByZVZlcmJvc2VMb2dnaW5nKCk7
CitkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgcHJvZ3JhbSA9
IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCit2YXIgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOword3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDUsIDMsIFsw
LCAxOTIsIDEyOCwgMjU1XSk7CisKK3ZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInRleCIpOworZ2wudW5pZm9ybTFpKGxvYywgMCk7CisKK2dsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1Ms
IGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisKKworZHJhd0FuZENoZWNrKCk7CisK
K3NldFRpbWVvdXQoc3RlcDIsIDEwMDApOworCitmdW5jdGlvbiBzdGVwMigpIHsKKyAgZHJhd0Fu
ZENoZWNrKCk7CisgIGZpbmlzaFRlc3QoKTsKK30KKworZnVuY3Rpb24gZHJhd0FuZENoZWNrKCkg
eworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBl
cnJvcnMgYmVmb3JlIGRyYXdpbmcuIik7CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVy
cm9ycyBmcm9tIGRyYXdpbmcuIik7CisgIHd0dS5jaGVja0NhbnZhcygKKyAgICAgIGdsLCBbMCwg
MTkyLCAxMjgsIDI1NV0sCisgICAgICAiZHJhdyBzaG91bGQgYmUgMCwgMTkyLCAxMjgsIDI1NSIp
OworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2Vycm9yLXJlcG9ydGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlz
Yy9lcnJvci1yZXBvcnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmJhMGFiYzg2OWY0NWNkZmUyYjcx
OGY3M2IxMjM2NWUzOTRmYWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy9lcnJvci1yZXBvcnRp
bmcuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiVGVzdHMgZ2VuZXJhdGlvbiBvZiBzeW50aGV0aWMgYW5kIHJlYWwgR0wgZXJy
b3JzIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjb250ZXh0ID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShj
b250ZXh0KTsKKworLy8gT3RoZXIgdGVzdHMgbGlrZSBpbmNvcnJlY3QtY29udGV4dC1vYmplY3Qt
YmVoYXZpb3VyIGFscmVhZHkgdGVzdCB0aGUgcmFpc2luZworLy8gb2YgbWFueSBzeW50aGV0aWMg
R0wgZXJyb3JzLiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIHJhaXNpbmcgb2YgY2VydGFpbgorLy8g
a25vd24gcmVhbCBHTCBlcnJvcnMsIGFuZCBjb250YWlucyBhIGZldyByZWdyZXNzaW9uIHRlc3Rz
IGZvciBidWdzCisvLyBkaXNjb3ZlcmVkIGluIHRoZSBzeW50aGV0aWMgZXJyb3IgZ2VuZXJhdGlv
biBhbmQgaW4gdGhlIFdlYkdMCisvLyBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuCisKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19FUlJPUik7CisKK2RlYnVnKCJUZXN0aW5n
IGdldEFjdGl2ZUF0dHJpYiIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0QWN0aXZlQXR0cmli
KG51bGwsIDIpIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJS
T1IpOworLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKK3d0dS5n
bEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19FUlJPUik7CisvLyBSZWFsIE9wZW5H
TCBlcnJvcgorc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAy
KSIpOword3R1LmdsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUp
OworLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19FUlJPUik7CisKK2RlYnVnKCJUZXN0aW5n
IGdldEFjdGl2ZVVuaWZvcm0iKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmdldEFjdGl2ZVVuaWZv
cm0obnVsbCwgMCkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19F
UlJPUik7CisvLyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAord3R1
LmdsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SKTsKKy8vIFJlYWwgT3Bl
bkdMIGVycm9yCitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFt
LCA1MCkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZB
TFVFKTsKKy8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOworCitkZWJ1ZygiVGVz
dGluZyBhdHRlbXB0cyB0byBtYW5pcHVsYXRlIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIik7Citz
aG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJV
RkZFUiwgbnVsbCkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19F
UlJPUik7CitzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQu
UkVOREVSQlVGRkVSLCBudWxsKSIpOworLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgord3R1Lmds
RXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OKTsKKy8vIEVy
cm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOworc2hvdWxkQmVVbmRlZmluZWQoImNvbnRl
eHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCBudWxsLCAwKSIpOworLy8gU3ludGhl
dGljIE9wZW5HTCBlcnJvcgord3R1LmdsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklO
VkFMSURfT1BFUkFUSU9OKTsKKy8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlz
IHBvaW50Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL21pc2MvZXhwYW5kby1sb3NzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2V4cGFuZG8tbG9zcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllMWYwNDFmMDI1ZGUwOTVlOTUyNzdlNzFkNWIyYTg0MzRmODY0Y2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2V4cGFuZG8tbG9zcy5odG1sCkBAIC0wLDAgKzEsMjIz
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzx0aXRsZT5X
ZWJHTCBPYmplY3QgRXhwYW5kb3MgQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBzdHlsZT0id2lk
dGg6IDhweDsgaGVpZ2h0OiA4cHg7Ij48L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgV2ViR0wgb2JqZWN0IGV4cGFu
ZG9zIGFyZSBwcmVzZXJ2ZWQgYWNyb3NzIGdhcmJhZ2UgY29sbGVjdGlvbnMuIik7CisKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlh
bGlhczogZmFsc2V9KTsKKworLy8gSGVscGVycyB0aGF0IHNldCBleHBhbmRvcyBhbmQgdmVyaWZ5
IHRoZXkgYXJlIHNldCB0byB0aGUgY29ycmVjdCB2YWx1ZS4KK3ZhciBleHBhbmRvVmFsdWUgPSAi
V2ViR0wgaXMgYXdlc29tZSEiCitmdW5jdGlvbiBzZXRUZXN0RXhwYW5kb3MoaW5zdGFuY2UpIHsK
KyAgICBpbnN0YW5jZS5leHBhbmRvMSA9IGV4cGFuZG9WYWx1ZTsKKyAgICBpbnN0YW5jZS5leHBh
bmRvMiA9IHsgc3VidmFsdWUgOiBleHBhbmRvVmFsdWUgfTsKK30KK2Z1bmN0aW9uIHZlcmlmeVRl
c3RFeHBhbmRvcyhpbnN0YW5jZSwgbXNnKSB7CisgICAgYXNzZXJ0TXNnKGluc3RhbmNlLmV4cGFu
ZG8xID09PSBleHBhbmRvVmFsdWUsIG1zZyArICI6IEV4cGVjdCBiYXNpYyBleHBhbmRvIHRvIHN1
cnZpdmUgZGVzcGl0ZSBHQy4iKTsKKyAgICBhc3NlcnRNc2coaW5zdGFuY2UuZXhwYW5kbzIgJiYg
aW5zdGFuY2UuZXhwYW5kbzIuc3VidmFsdWUgPT09IGV4cGFuZG9WYWx1ZSwgbXNnICsgIjogRXhw
ZWN0IHN1Ym9iamVjdCBleHBhbmRvIHRvIHN1cnZpdmUgZGVzcGl0ZSBHQy4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3ZSBkb24ndCBnZXQgZXhwYW5kbyBsb3NzIGZvciBib3VuZCByZXNvdXJjZXMg
d2hlcmUgdGhlCisvLyBvbmx5IHJlbWFpbmluZyByZWZlcmVuY2UgaXMgaW50ZXJuYWwgdG8gV2Vi
R0wKK2Z1bmN0aW9uIHRlc3RCYXNpY0JpbmRpbmdzKCkgeworICAgIGRlYnVnKCdCYXNpYyBCaW5k
aW5ncycpOworCisgICAgLy8gVGVzdCBkYXRhIHRoYXQgZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUs
IGJpbmQsIGFuZCByZXRyaWV2ZSBhbiBvYmplY3Qgb2ZmIG9mIHRoZSBjb250ZXh0CisgICAgdmFy
IGdsUHJvdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihnbCk7CisgICAgdmFyIHNpbXBsZURhdGEg
PSBbCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVUZXh0
dXJlLAorICAgICAgICAgICAgYmluZEZuOiBnbFByb3QuYmluZFRleHR1cmUsCisgICAgICAgICAg
ICBiaW5kQ29uc3RhbnQ6IGdsUHJvdC5URVhUVVJFXzJELAorICAgICAgICAgICAgcmV0cmlldmVD
b25zdGFudDogZ2xQcm90LlRFWFRVUkVfQklORElOR18yRCwKKyAgICAgICAgICAgIG5hbWU6ICJU
RVhUVVJFX0JJTkRJTkdfMkQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBj
cmVhdGlvbkZuOiBnbFByb3QuY3JlYXRlRnJhbWVidWZmZXIsCisgICAgICAgICAgICBiaW5kRm46
IGdsUHJvdC5iaW5kRnJhbWVidWZmZXIsCisgICAgICAgICAgICBiaW5kQ29uc3RhbnQ6IGdsUHJv
dC5GUkFNRUJVRkZFUiwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5GUkFN
RUJVRkZFUl9CSU5ESU5HLAorICAgICAgICAgICAgbmFtZTogIkZSQU1FQlVGRkVSX0JJTkRJTkci
LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3Qu
Y3JlYXRlUmVuZGVyYnVmZmVyLAorICAgICAgICAgICAgYmluZEZuOiBnbFByb3QuYmluZFJlbmRl
cmJ1ZmZlciwKKyAgICAgICAgICAgIGJpbmRDb25zdGFudDogZ2xQcm90LlJFTkRFUkJVRkZFUiwK
KyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5SRU5ERVJCVUZGRVJfQklORElO
RywKKyAgICAgICAgICAgIG5hbWU6ICJSRU5ERVJCVUZGRVJfQklORElORyIsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVCdWZmZXIs
CisgICAgICAgICAgICBiaW5kRm46IGdsUHJvdC5iaW5kQnVmZmVyLAorICAgICAgICAgICAgYmlu
ZENvbnN0YW50OiBnbFByb3QuRUxFTUVOVF9BUlJBWV9CVUZGRVIsCisgICAgICAgICAgICByZXRy
aWV2ZUNvbnN0YW50OiBnbFByb3QuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORywKKyAgICAg
ICAgICAgIG5hbWU6ICJFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIiwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgY3JlYXRpb25GbjogZ2xQcm90LmNyZWF0ZUJ1ZmZlciwK
KyAgICAgICAgICAgIGJpbmRGbjogZ2xQcm90LmJpbmRCdWZmZXIsCisgICAgICAgICAgICBiaW5k
Q29uc3RhbnQ6IGdsUHJvdC5BUlJBWV9CVUZGRVIsCisgICAgICAgICAgICByZXRyaWV2ZUNvbnN0
YW50OiBnbFByb3QuQVJSQVlfQlVGRkVSX0JJTkRJTkcsCisgICAgICAgICAgICBuYW1lOiAiQVJS
QVlfQlVGRkVSX0JJTkRJTkciLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBj
cmVhdGlvbkZuOiBnbFByb3QuY3JlYXRlVGV4dHVyZSwKKyAgICAgICAgICAgIGJpbmRGbjogZ2xQ
cm90LmJpbmRUZXh0dXJlLAorICAgICAgICAgICAgYmluZENvbnN0YW50OiBnbFByb3QuVEVYVFVS
RV9DVUJFX01BUCwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5URVhUVVJF
X0JJTkRJTkdfQ1VCRV9NQVAsCisgICAgICAgICAgICBuYW1lOiAiVEVYVFVSRV9CSU5ESU5HX0NV
QkVfTUFQIiwKKyAgICAgICAgfSwKKyAgICBdOworCisgICAgc2ltcGxlRGF0YS5mb3JFYWNoKGZ1
bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIGluc3RhbmNlID0gdGVzdC5jcmVhdGlvbkZuLmFw
cGx5KGdsLCBbXSk7CisgICAgICAgIHZhciBtc2cgPSAiZ2V0UGFyYW1ldGVyKCIgKyB0ZXN0Lm5h
bWUgKyAiKSI7CisgICAgICAgIHNldFRlc3RFeHBhbmRvcyhpbnN0YW5jZSk7CisKKyAgICAgICAg
dGVzdC5iaW5kRm4uYXBwbHkoZ2wsIFt0ZXN0LmJpbmRDb25zdGFudCwgaW5zdGFuY2VdKTsKKyAg
ICAgICAgYXNzZXJ0TXNnKGluc3RhbmNlID09PSBnbC5nZXRQYXJhbWV0ZXIodGVzdC5yZXRyaWV2
ZUNvbnN0YW50KSwgbXNnICsgIiByZXR1cm5zIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kLiIpOwor
CisgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdCBKYXZhc2NyaXB0IHJlZmVyZW5jZXMuICBSZW1h
aW5pbmcgcmVmZXJlbmNlcyBzaG91bGQgYmUgaW50ZXJuYWwgdG8gV2ViR0wuCisgICAgICAgIGlu
c3RhbmNlID0gbnVsbDsKKyAgICAgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKwor
ICAgICAgICB2ZXJpZnlUZXN0RXhwYW5kb3MoZ2wuZ2V0UGFyYW1ldGVyKHRlc3QucmV0cmlldmVD
b25zdGFudCksIG1zZyk7CisgICAgfSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKKy8vIEF0dGFj
aCBhIGNvdXBsZSBvZiBzaGFkZXJzIHRvIGEgcHJvZ3JhbSBhbmQgdmVyaWZ5IG5vIGV4cGFuZG8g
bG9zcyB3aGVuIHlvdSBjYWxsCisvLyBnZXRBdHRhY2hlZFNoYWRlcnMgYW5kIGdldFBhcmFtZXRl
cihDVVJSRU5UX1BST0dSQU0pLgorZnVuY3Rpb24gdGVzdFByb2dyYW1zQW5kU2hhZGVycygpIHsK
KyAgICBkZWJ1ZygnUHJvZ3JhbXMgYW5kIFNoYWRlcnMnKTsKKworICAgIHZhciB2cyA9IHd0dS5s
b2FkU2hhZGVyKGdsLCB3dHUuc2ltcGxlVmVydGV4U2hhZGVyLCBnbC5WRVJURVhfU0hBREVSKTsK
KyAgICBzZXRUZXN0RXhwYW5kb3ModnMpOworCisgICAgdmFyIGZzID0gd3R1LmxvYWRTaGFkZXIo
Z2wsIHd0dS5zaW1wbGVDb2xvckZyYWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIpOwor
ICAgIHNldFRlc3RFeHBhbmRvcyhmcyk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFBy
b2dyYW0oZ2wsIFt2cywgZnNdKTsKKyAgICBzZXRUZXN0RXhwYW5kb3MocHJvZ3JhbSk7CisgICAg
YXNzZXJ0TXNnKHByb2dyYW0gPT09IGdsLmdldFBhcmFtZXRlcihnbC5DVVJSRU5UX1BST0dSQU0p
LCAiZ2V0UGFyYW1ldGVyKGdsLkNVUlJFTlRfUFJPR1JBTSkgcmV0dXJuIGluc3RhbmNlIHNldCB3
aXRoIHVzZVByb2dyYW0iKTsKKworICAgIHZhciBhdHRhY2hlZFNoYWRlcnMgPSBnbC5nZXRBdHRh
Y2hlZFNoYWRlcnMocHJvZ3JhbSk7CisgICAgYXNzZXJ0TXNnKGF0dGFjaGVkU2hhZGVycy5pbmRl
eE9mKHZzKSAhPT0gLTEsICJWZXJ0ZXggc2hhZGVyIGluc3RhbmNlIGZvdW5kIGluIGdldEF0dGFj
aGVkU2hhZGVycyIpOworICAgIGFzc2VydE1zZyhhdHRhY2hlZFNoYWRlcnMuaW5kZXhPZihmcykg
IT09IC0xLCAiRnJhZ21lbnQgc2hhZGVyIGluc3RhbmNlIGZvdW5kIGluIGdldEF0dGFjaGVkU2hh
ZGVycyIpOworCisgICAgLy8gR2FyYmFnZSBjb2xsZWN0IEphdmFzY3JpcHQgcmVmZXJlbmNlcy4g
UmVtYWluaW5nIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGludGVybmFsIHRvIFdlYkdMLgorICAgIGF0
dGFjaGVkU2hhZGVycyA9IG51bGw7CisgICAgcHJvZ3JhbSA9IG51bGw7CisgICAgdnMgPSBudWxs
OworICAgIGZzID0gbnVsbDsKKyAgICB3ZWJnbEhhcm5lc3NDb2xsZWN0R2FyYmFnZSgpOworCisg
ICAgdmFyIGN1cnJlbnRQcm9ncmFtID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkNVUlJFTlRfUFJPR1JB
TSk7CisgICAgdmVyaWZ5VGVzdEV4cGFuZG9zKGN1cnJlbnRQcm9ncmFtLCAiQ3VycmVudCBwcm9n
cmFtIik7CisgICAgc2hvdWxkQmVUeXBlKGN1cnJlbnRQcm9ncmFtLCAnV2ViR0xQcm9ncmFtJyk7
CisKKyAgICB2YXIgcmV0cmlldmVkU2hhZGVycyA9IGdsLmdldEF0dGFjaGVkU2hhZGVycyhjdXJy
ZW50UHJvZ3JhbSk7CisgICAgdmVyaWZ5VGVzdEV4cGFuZG9zKHJldHJpZXZlZFNoYWRlcnNbMF0s
ICJTaGFkZXJbMF0iKTsKKyAgICBzaG91bGRCZVR5cGUocmV0cmlldmVkU2hhZGVyc1swXSwgIldl
YkdMU2hhZGVyIik7CisgICAgdmVyaWZ5VGVzdEV4cGFuZG9zKHJldHJpZXZlZFNoYWRlcnNbMV0s
ICJTaGFkZXJbMV0iKTsKKyAgICBzaG91bGRCZVR5cGUocmV0cmlldmVkU2hhZGVyc1sxXSwgIldl
YkdMU2hhZGVyIik7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKKy8vIEF0dGFjaCBhIGJ1ZmZlciB2
aWEgdmVydGV4QXR0cmliUG9pbnRlciBhbmQgdmVyaWZ5IG5vIGV4cGFuZG8gbG9zcyB3aGVuIHlv
dSBjYWxsIGdldFZlcnRleEF0dHJpYi4KK2Z1bmN0aW9uIHRlc3RWZXJ0ZXhBdHRyaWJ1dGVCdWZm
ZXJzKCkgeworICAgIGRlYnVnKCdWZXJ0ZXggQXR0cmlidXRlIEJ1ZmZlcnMnKTsKKworICAgIHZh
ciBwcm9ncmFtID0gd3R1LnNldHVwU2ltcGxlQ29sb3JQcm9ncmFtKGdsKTsKKyAgICB2YXIgcG9z
aXRpb24gPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAidlBvc2l0aW9uIik7CisKKyAg
ICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgc2V0VGVzdEV4cGFuZG9zKGJ1
ZmZlcik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAw
KTsKKyAgICBhc3NlcnRNc2coYnVmZmVyID09PSBnbC5nZXRWZXJ0ZXhBdHRyaWIocG9zaXRpb24s
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpLAorICAgICAgICAiZ2V0VmVy
dGV4QXR0cmliKFZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIHJldHVybiBpbnN0
YW5jZSBzZXQgd2l0aCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIik7CisgICAgZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIG51bGwpOworCisgICAgLy8gR2FyYmFnZSBjb2xsZWN0IEphdmFzY3Jp
cHQgcmVmZXJlbmNlcy4gUmVtYWluaW5nIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGludGVybmFsIHRv
IFdlYkdMLgorICAgIGJ1ZmZlciA9IG51bGw7CisgICAgcHJvZ3JhbSA9IG51bGw7CisgICAgd2Vi
Z2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2UoKTsKKworICAgIHZhciByZXRyaWV2ZWRCdWZmZXIgPSBn
bC5nZXRWZXJ0ZXhBdHRyaWIocG9zaXRpb24sIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVS
X0JJTkRJTkcpOworICAgIHZlcmlmeVRlc3RFeHBhbmRvcyhyZXRyaWV2ZWRCdWZmZXIsICJWZXJ0
ZXggQXR0cmlidXRlIEJ1ZmZlciIpOworICAgIHNob3VsZEJlVHlwZShyZXRyaWV2ZWRCdWZmZXIs
ICdXZWJHTEJ1ZmZlcicpOworCisgICAgZGVidWcoJycpOworfQorCisvLyBBdHRhY2ggcmVuZGVy
YnVmZmVycyB0byBmcmFtZWJ1ZmZlcnMgYW5kIHZlcmlmeSBubyBleHBhbmRvIGxvc3Mgb2N1cnJz
IHdoZW4geW91IGNhbGwKKy8vIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorZnVu
Y3Rpb24gdGVzdEZyYW1lQnVmZmVyQXR0YWNobWVudHMoKSB7CisgICAgZGVidWcoJ0ZyYW1lQnVm
ZmVyIEF0dGFjaG1lbnRzJyk7CisKKyAgICB2YXIgZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVi
dWZmZXIpOworICAgIHZhciBhdHRhY2htZW50cyA9IFsKKyAgICAgICAgeyBlbnVtOiBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgICAgICAgbmFtZTogIkNPTE9SX0FUVEFDSE1FTlQwIiB9LAorICAgICAg
ICB7IGVudW06IGdsLkRFUFRIX0FUVEFDSE1FTlQsICAgICAgICBuYW1lOiAiREVQVEhfQVRUQUNI
TUVOVCIgfSwKKyAgICAgICAgeyBlbnVtOiBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsICAgICAgbmFt
ZTogIlNURU5DSUxfQVRUQUNITUVOVCIgfSwKKyAgICAgICAgeyBlbnVtOiBnbC5ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQsbmFtZTogIkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIgfSwKKyAgICBd
OworCisgICAgLy8gQXR0YWNoIGEgcmVuZGVyYnVmZmVyIHRvIGFsbCBhdHRhY2htZW50IHBvaW50
cy4KKyAgICBhdHRhY2htZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGF0dGFjaG1lbnQpIHsKKyAgICAg
ICAgdmFyIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICBz
ZXRUZXN0RXhwYW5kb3MocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQuZW51bSwgZ2wuUkVOREVSQlVGRkVS
LCByZW5kZXJidWZmZXIpOworICAgICAgICBhc3NlcnRNc2cocmVuZGVyYnVmZmVyID09PSBnbC5n
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1l
bnQuZW51bSwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSksCisgICAgICAg
ICAgICAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCIgKyBhdHRhY2htZW50Lm5h
bWUgKyAiKSByZXR1cm5zIGluc3RhbmNlIHNldCB3aXRoIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
Iik7CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG51bGw7CisgICAgfSk7CisKKyAgICAvLyBHYXJi
YWdlIGNvbGxlY3QgSmF2YXNjcmlwdCByZWZlcmVuY2VzLiBSZW1haW5pbmcgcmVmZXJlbmNlcyBz
aG91bGQgYmUgaW50ZXJuYWwgdG8gV2ViR0wuCisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJh
Z2UoKTsKKworICAgIC8vIFZlcmlmeSBhbGwgYXR0YWNoZWQgcmVuZGVyYnVmZmVycyBoYXZlIGV4
cGFuZG9zLgorICAgIGF0dGFjaG1lbnRzLmZvckVhY2goZnVuY3Rpb24oYXR0YWNobWVudCkgewor
ICAgICAgICB2YXIgcmV0cmlldmVkUmVuZGVyYnVmZmVyID0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LmVudW0sIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpOworICAgICAgICB2ZXJpZnlUZXN0RXhwYW5k
b3MocmV0cmlldmVkUmVuZGVyYnVmZmVyLCBhdHRhY2htZW50Lm5hbWUpOworICAgICAgICBzaG91
bGRCZVR5cGUocmV0cmlldmVkUmVuZGVyYnVmZmVyLCAnV2ViR0xSZW5kZXJidWZmZXInKTsKKyAg
ICB9KTsKKworICAgIGRlYnVnKCcnKTsKK30KKworLy8gUnVuIHRlc3RzCit0ZXN0QmFzaWNCaW5k
aW5ncygpOwordGVzdFByb2dyYW1zQW5kU2hhZGVycygpOwordGVzdFZlcnRleEF0dHJpYnV0ZUJ1
ZmZlcnMoKTsKK3Rlc3RGcmFtZUJ1ZmZlckF0dGFjaG1lbnRzKCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2Mv
ZnVuY3Rpb25zLXJldHVybmluZy1zdHJpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2Z1bmN0aW9ucy1yZXR1cm5p
bmctc3RyaW5ncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZTg5ZTQ2ZjZiNjlhYzMxZmU0NjYwOGJjOGRm
Y2VkZDBjMzQxNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2Z1bmN0aW9ucy1yZXR1cm5pbmct
c3RyaW5ncy5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdC1ldmFsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGZ1bmN0
aW9ucyByZXR1cm5pbmcgc3RyaW5ncyByZWFsbHkgZG8gcmV0dXJuIHN0cmluZ3MgKGFuZCBub3Qg
ZS5nLiBudWxsKSIpOworZGVidWcoIiIpOworCit2YXIgdmFsaWRWZXJ0ZXhTaGFkZXJTdHJpbmcg
PQorICAiYXR0cmlidXRlIHZlYzQgYVZlcnRleDsgYXR0cmlidXRlIHZlYzQgYUNvbG9yOyB2YXJ5
aW5nIHZlYzQgdkNvbG9yOyB2b2lkIG1haW4oKSB7IHZDb2xvciA9IGFDb2xvcjsgZ2xfUG9zaXRp
b24gPSBhVmVydGV4OyB9IjsKK3ZhciB2YWxpZEZyYWdtZW50U2hhZGVyU3RyaW5nID0KKyAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyB2YXJ5aW5nIHZlYzQgdkNvbG9yOyB2b2lkIG1haW4oKSB7
IGdsX0ZyYWdDb2xvciA9IHZDb2xvcjsgfSI7CisKK2Z1bmN0aW9uIHNob3VsZFJldHVyblN0cmlu
ZyhfYSkKK3sKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2
ID0gVGVzdEV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7Cisg
IH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAnIHNob3VsZCByZXR1
cm4gYSBzdHJpbmcuIFRocmV3IGV4Y2VwdGlvbiAnICsgZXhjZXB0aW9uKTsKKyAgZWxzZSBpZiAo
dHlwZW9mIF9hdiA9PSAic3RyaW5nIikKKyAgICB0ZXN0UGFzc2VkKF9hICsgJyByZXR1cm5zIGEg
c3RyaW5nJyk7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgJyBzaG91bGQgcmV0dXJuIGEg
c3RyaW5nLiAgUmV0dXJuczogIicgKyBfYXYgKyAnIicpOworfQorCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK2lmICgh
Z2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsK
KyAgdmFyIHZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICBzaG91bGRS
ZXR1cm5TdHJpbmcoImdsLmdldFNoYWRlclNvdXJjZSh2cykiKTsKKyAgc2hvdWxkUmV0dXJuU3Ry
aW5nKCJnbC5nZXRTaGFkZXJJbmZvTG9nKHZzKSIpOworICBnbC5zaGFkZXJTb3VyY2UodnMsIHZh
bGlkVmVydGV4U2hhZGVyU3RyaW5nKTsKKyAgZ2wuY29tcGlsZVNoYWRlcih2cyk7CisgIHNob3Vs
ZFJldHVyblN0cmluZygiZ2wuZ2V0U2hhZGVyU291cmNlKHZzKSIpOworICBzaG91bGRSZXR1cm5T
dHJpbmcoImdsLmdldFNoYWRlckluZm9Mb2codnMpIik7CisKKyAgdmFyIGZzID0gZ2wuY3JlYXRl
U2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisgIHNob3VsZFJldHVyblN0cmluZygiZ2wuZ2V0
U2hhZGVyU291cmNlKGZzKSIpOworICBzaG91bGRSZXR1cm5TdHJpbmcoImdsLmdldFNoYWRlcklu
Zm9Mb2coZnMpIik7CisgIGdsLnNoYWRlclNvdXJjZShmcywgdmFsaWRGcmFnbWVudFNoYWRlclN0
cmluZyk7CisgIGdsLmNvbXBpbGVTaGFkZXIoZnMpOworICBzaG91bGRSZXR1cm5TdHJpbmcoImds
LmdldFNoYWRlclNvdXJjZShmcykiKTsKKyAgc2hvdWxkUmV0dXJuU3RyaW5nKCJnbC5nZXRTaGFk
ZXJJbmZvTG9nKGZzKSIpOworCisgIHZhciBwcm9nID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICBz
aG91bGRSZXR1cm5TdHJpbmcoImdsLmdldFByb2dyYW1JbmZvTG9nKHByb2cpIik7CisgIGdsLmF0
dGFjaFNoYWRlcihwcm9nLCB2cyk7CisgIGdsLmF0dGFjaFNoYWRlcihwcm9nLCBmcyk7CisgIGds
LmxpbmtQcm9ncmFtKHByb2cpOworICBzaG91bGRSZXR1cm5TdHJpbmcoImdsLmdldFByb2dyYW1J
bmZvTG9nKHByb2cpIik7CisKKyAgLy8gTWFrZSBzdXJlIGRpZmZlcmVudCBudW1iZXJzIG9mIGV4
dGVuc2lvbnMgZG9lc24ndCByZXN1bHQgaW4KKyAgLy8gZGlmZmVyZW50IHRlc3Qgb3V0cHV0Lgor
ICB2YXIgZXh0cyA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKyAgdmFyIGFsbFBhc3Nl
ZCA9IHRydWU7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBleHRzLmxlbmd0aDsgKytpaSkgewor
ICAgIHZhciBzID0gZXh0c1tpaV07CisgICAgaWYgKHR5cGVvZiBzICE9ICJzdHJpbmciKSB7Cisg
ICAgICBzaG91bGRSZXR1cm5TdHJpbmcoImdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKVsiICsg
cyArICJdIik7CisgICAgICBhbGxQYXNzZWQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgaWYgKGFs
bFBhc3NlZCkgeworICAgIHRlc3RQYXNzZWQoJ2dldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSByZXR1
cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MnKTsKKyAgfQorCisgIHNob3VsZFJldHVyblN0cmluZygi
Z2wuZ2V0UGFyYW1ldGVyKGdsLlZFTkRPUikiKTsKKyAgc2hvdWxkUmV0dXJuU3RyaW5nKCJnbC5n
ZXRQYXJhbWV0ZXIoZ2wuUkVOREVSRVIpIik7CisgIHNob3VsZFJldHVyblN0cmluZygiZ2wuZ2V0
UGFyYW1ldGVyKGdsLlZFUlNJT04pIik7CisgIHNob3VsZFJldHVyblN0cmluZygiZ2wuZ2V0UGFy
YW1ldGVyKGdsLlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikiKTsKK30KKworZGVidWcoIiIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL21pc2MvaW5zdGFuY2VvZi10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2luc3RhbmNlb2Yt
dGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMjQ2NGU3YTE0MzM5Mjk3YjQwOTE4YTAzZjExOTU2MzM1
ZTg0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2luc3RhbmNlb2YtdGVzdC5odG1sCkBAIC0w
LDAgKzEsNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIGluc3RhbmNlb2YgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDog
NDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKK3Zhcnlpbmcg
dmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRp
b247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgY29sb3I7
Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQ+Cit2YXIgY29udGV4dFZlcnNpb24gPSAxOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvdGVzdHMvaW5zdGFuY2VvZi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9taXNjL2ludmFsaWQtcGFzc2VkLXBhcmFtcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlz
Yy9pbnZhbGlkLXBhc3NlZC1wYXJhbXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjFjYTgwNWRhNWNlYTc3
ZWFmMzRmODg2ZTBhMzMzMWY1M2FjNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy9pbnZhbGlk
LXBhc3NlZC1wYXJhbXMuaHRtbApAQCAtMCwwICsxLDE3MCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9kZXNr
dG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgZm9yIGludmFsaWQgcGFzc2VkIHBhcmFt
ZXRlcnMiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNvbnRleHQgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgY29udGV4dFZlcnNpb24gPSB3dHUuZ2V0RGVmYXVsdDNE
Q29udGV4dFZlcnNpb24oKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgY3JlYXRlU2hhZGVy
KCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJP
UiwgImNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuRlJBR01FTlRfU0hBREVSKSIpOword3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4
dC5jcmVhdGVTaGFkZXIoY29udGV4dC5WRVJURVhfU0hBREVSKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuY3JlYXRl
U2hhZGVyKDApIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQu
SU5WQUxJRF9FTlVNLCAiY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5UUklBTkdMRVMpIik7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGNsZWFyKCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5jbGVhcihk
ZXNrdG9wR0xbJ0FDQ1VNX0JVRkZFUl9CSVQnXSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5jbGVhcihkZXNrdG9w
R0xbJ0FDQ1VNX0JVRkZFUl9CSVQnXSB8IGNvbnRleHQuQ09MT1JfQlVGRkVSX0JJVCkiKTsKK3d0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAi
Y29udGV4dC5jbGVhcihkZXNrdG9wR0xbJ0FDQ1VNX0JVRkZFUl9CSVQnXSB8IGNvbnRleHQuQ09M
T1JfQlVGRkVSX0JJVCB8IGNvbnRleHQuREVQVEhfQlVGRkVSX0JJVCB8IGNvbnRleHQuU1RFTkNJ
TF9CVUZGRVJfQklUKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250
ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5jbGVhcihjb250ZXh0LkNPTE9SX0JVRkZFUl9CSVQgfCBj
b250ZXh0LkRFUFRIX0JVRkZFUl9CSVQgfCBjb250ZXh0LlNURU5DSUxfQlVGRkVSX0JJVCkiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3Qge2NvcHl9VGV4e1N1Yn1JbWFnZTJEIHdpdGggbmVn
YXRpdmUgb2Zmc2V0L3dpZHRoL2hlaWdodCIpOwordmFyIHRleCA9IGNvbnRleHQuY3JlYXRlVGV4
dHVyZSgpOwordmFyIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KDIgKiAyICogNCk7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJp
bmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgdGV4KSIpOword3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LnRleEltYWdl
MkQoY29udGV4dC5URVhUVVJFXzJELCAwLCBjb250ZXh0LlJHQkEsIC0xNiwgLTE2LCAwLCBjb250
ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgbnVsbCkiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQudGV4SW1hZ2Uy
RChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMTYsIDE2LCAwLCBjb250ZXh0
LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgbnVsbCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC50ZXhTdWJJ
bWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgLTEsIC0xLCAyLCAyLCBjb250ZXh0LlJHQkEs
IGNvbnRleHQuVU5TSUdORURfQllURSwgcGl4ZWxzKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LnRleFN1YkltYWdl
MkQoY29udGV4dC5URVhUVVJFXzJELCAwLCAwLCAwLCAtMSwgLTEsIGNvbnRleHQuUkdCQSwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCBwaXhlbHMpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LnRleFN1YkltYWdlMkQoY29udGV4
dC5URVhUVVJFXzJELCAwLCAwLCAwLCAyLCAyLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdO
RURfQllURSwgcGl4ZWxzKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBj
b250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmNvcHlUZXhJbWFnZTJEKGNvbnRleHQuVEVY
VFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAwLCAwLCAtMSwgLTEsIDApIik7Cit3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmNvcHlU
ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAwLCAwLCAxNiwg
MTYsIDApIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5W
QUxJRF9WQUxVRSwgImNvbnRleHQuY29weVRleFN1YkltYWdlMkQoY29udGV4dC5URVhUVVJFXzJE
LCAwLCAtMSwgLTEsIDAsIDAsIDIsIDIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNv
bnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuY29weVRleFN1YkltYWdlMkQo
Y29udGV4dC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAtMSwgLTEpIik7Cit3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmNvcHlU
ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMiwgMikiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3QgcmVuZGVyYnVmZmVyU3RvcmFnZSgpIHdpdGggbmVn
YXRpdmUgd2lkdGgvaGVpZ2h0Iik7Cit2YXIgcmVuZGVyYnVmZmVyID0gY29udGV4dC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5OT19FUlJPUiwgImNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVyKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBj
b250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29udGV4
dC5SRU5ERVJCVUZGRVIsIGNvbnRleHQuUkdCQTQsIC0yLCAtMikiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQucmVuZGVyYnVm
ZmVyU3RvcmFnZShjb250ZXh0LlJFTkRFUkJVRkZFUiwgY29udGV4dC5SR0JBNCwgMTYsIDE2KSIp
OworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBzY2lzc29yKCkgd2l0aCBuZWdhdGl2ZSB3aWR0
aC9oZWlnaHQiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX1ZBTFVFLCAiY29udGV4dC5zY2lzc29yKDAsIDAsIC0yLCAtMikiKTsKK3d0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuc2Np
c3NvcigwLCAwLCAxNiwgMTYpIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHZpZXdwb3J0
KCkgd2l0aCBuZWdhdGl2ZSB3aWR0aC9oZWlnaHQiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC52aWV3cG9ydCgwLCAw
LCAtMiwgLTIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQu
Tk9fRVJST1IsICJjb250ZXh0LnZpZXdwb3J0KDAsIDAsIDE2LCAxNikiKTsKKworZGVidWcoIiIp
OworZGVidWcoIlNldCB1cCBhIHByb2dyYW0gdG8gdGVzdCBpbnZhbGlkIGNoYXJhY3RlcnMiKTsK
K3ZhciBpbnZhbGlkU2V0ID0gWyciJywgJyQnLCAnYCcsICdAJywgJ1xcJywgIiciXTsKK3ZhciB2
YWxpZFVuaWZvcm1OYW1lID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVpfMTIzNDU2Nzg5MCI7Cit2YXIgdmFsaWRBdHRyaWJOYW1lID0gImFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6X0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5
MCI7CitmdW5jdGlvbiBnZW5lcmF0ZVNoYWRlclNvdXJjZShvcHRfaW52YWxpZElkZW50aWZpZXJD
aGFyLCBvcHRfaW52YWxpZENvbW1lbnRDaGFyKSB7CisgIHZhciBpbnZhbGlkSWRlbnRpZmllclN0
cmluZyA9ICIiOworICB2YXIgaW52YWxpZENvbW1lbnRTdHJpbmcgPSAiIjsKKyAgaWYgKG9wdF9p
bnZhbGlkSWRlbnRpZmllckNoYXIgIT0gdW5kZWZpbmVkKSB7CisgICAgaW52YWxpZElkZW50aWZp
ZXJTdHJpbmcgKz0gb3B0X2ludmFsaWRJZGVudGlmaWVyQ2hhcjsKKyAgfQorICBpZiAob3B0X2lu
dmFsaWRDb21tZW50Q2hhciAhPSB1bmRlZmluZWQpIHsKKyAgICBpbnZhbGlkQ29tbWVudFN0cmlu
ZyArPSBvcHRfaW52YWxpZENvbW1lbnRDaGFyOworICB9CisgIHJldHVybiAidW5pZm9ybSBmbG9h
dCAiICsgdmFsaWRVbmlmb3JtTmFtZSArIGludmFsaWRJZGVudGlmaWVyU3RyaW5nICsgIjtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidmFyeWluZyBmbG9hdCAiICsgdmFsaWRBdHRy
aWJOYW1lICsgIjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICArIHZhbGlkQXR0cmliTmFtZSAgKyAiID0g
IiArIHZhbGlkVW5pZm9ybU5hbWUgKyAiO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAr
ICJnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsgfVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICArICIvLy4rLS8qJTw+W10oKXt9Xnwmfj0hOjssPyMgIiArIGludmFs
aWRDb21tZW50U3RyaW5nOworfQordmFyIHZTaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihj
b250ZXh0LlZFUlRFWF9TSEFERVIpOworY29udGV4dC5zaGFkZXJTb3VyY2UodlNoYWRlciwgZ2Vu
ZXJhdGVTaGFkZXJTb3VyY2UoKSk7Citjb250ZXh0LmNvbXBpbGVTaGFkZXIodlNoYWRlcik7Citz
aG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK3ZhciBm
U2hhZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5GUkFHTUVOVF9TSEFERVIpOwor
Y29udGV4dC5zaGFkZXJTb3VyY2UoZlNoYWRlciwgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidmFyeWluZyBmbG9hdCAiICsgdmFs
aWRBdHRyaWJOYW1lICsgIjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImdsX0ZyYWdD
b2xvciA9IHZlYzQoIiArIHZhbGlkQXR0cmliTmFtZSArICIsIDAuMCwgMC4wLCAxLjApOyB9Iik7
Citjb250ZXh0LmNvbXBpbGVTaGFkZXIoZlNoYWRlcik7CitzaG91bGRCZSgiY29udGV4dC5nZXRF
cnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK3ZhciBwcm9ncmFtID0gY29udGV4dC5jcmVh
dGVQcm9ncmFtKCk7Citjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2U2hhZGVyKTsKK2Nv
bnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZTaGFkZXIpOworY29udGV4dC5saW5rUHJvZ3Jh
bShwcm9ncmFtKTsKK3ZhciBsaW5rU3RhdHVzID0gY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHByb2dyYW0sIGNvbnRleHQuTElOS19TVEFUVVMpOworc2hvdWxkQmVUcnVlKCJsaW5rU3RhdHVz
Iik7CitpZiAoIWxpbmtTdGF0dXMpCisgIGRlYnVnKGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2co
cHJvZ3JhbSkpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VS
Uk9SIik7Citjb250ZXh0LmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAxLCB2YWxpZEF0dHJp
Yk5hbWUpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9S
Iik7Citjb250ZXh0LmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHZhbGlkQXR0cmliTmFtZSk7
CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK2Nv
bnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIHZhbGlkVW5pZm9ybU5hbWUpOworc2hv
dWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IHNoYWRlclNvdXJjZSgpIHdpdGggaW52YWxpZCBjaGFyYWN0ZXJz
Iik7Citmb3IgKHZhciBpID0gMDsgaSA8IGludmFsaWRTZXQubGVuZ3RoOyArK2kpIHsKKyAgLy8g
QmFja3NsYXNoIGFzIGxpbmUtY29udGludWF0aW9uIGlzIGFsbG93ZWQgaW4gV2ViR0wgMi4wLgor
ICBpZiAoY29udGV4dFZlcnNpb24gPiAxICYmIGludmFsaWRTZXRbaV0gPT0gJ1xcJykKKyAgICBj
b250aW51ZTsKKyAgLy8gV2l0aCByZWNlbnQgc3BlY2lmaWNhdGlvbiBjaGFuZ2VzIGZyb20KKyAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9wdWxsLzMyMDYgLCBzaGFk
ZXJTb3VyY2Ugbm8KKyAgLy8gbG9uZ2VyIGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVFLgorICB2YXIg
dmFsaWRTaGFkZXJTb3VyY2UgPSBnZW5lcmF0ZVNoYWRlclNvdXJjZSh1bmRlZmluZWQsIGludmFs
aWRTZXRbaV0pOworICBjb250ZXh0LnNoYWRlclNvdXJjZSh2U2hhZGVyLCB2YWxpZFNoYWRlclNv
dXJjZSk7CisgIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJP
UiIpOworICB2YXIgaW52YWxpZFNoYWRlclNvdXJjZSA9IGdlbmVyYXRlU2hhZGVyU291cmNlKGlu
dmFsaWRTZXRbaV0sIHVuZGVmaW5lZCk7CisgIGNvbnRleHQuc2hhZGVyU291cmNlKHZTaGFkZXIs
IGludmFsaWRTaGFkZXJTb3VyY2UpOworICBzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwg
ImNvbnRleHQuTk9fRVJST1IiKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgYmluZEF0
dHJpYkxvY2F0aW9uKCkgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMiKTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgaW52YWxpZFNldC5sZW5ndGg7ICsraSkgeworICB2YXIgaW52YWxpZE5hbWUgPSB2YWxp
ZEF0dHJpYk5hbWUgKyBpbnZhbGlkU2V0W2ldOworICBjb250ZXh0LmJpbmRBdHRyaWJMb2NhdGlv
bihwcm9ncmFtLCAxLCBpbnZhbGlkTmFtZSk7CisgIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9y
KCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0IGdldEF0dHJpYkxvY2F0aW9uKCkgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMiKTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgaW52YWxpZFNldC5sZW5ndGg7ICsraSkgeworICB2YXIgaW52YWxpZE5h
bWUgPSB2YWxpZEF0dHJpYk5hbWUgKyBpbnZhbGlkU2V0W2ldOworICBjb250ZXh0LmdldEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sIGludmFsaWROYW1lKTsKKyAgc2hvdWxkQmUoImNvbnRleHQuZ2V0
RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK30KKworZGVidWcoIiIpOworZGVi
dWcoIlRlc3QgZ2V0VW5pZm9ybUxvY2F0aW9uKCkgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMiKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgaW52YWxpZFNldC5sZW5ndGg7ICsraSkgeworICB2YXIgaW52
YWxpZE5hbWUgPSB2YWxpZFVuaWZvcm1OYW1lICsgaW52YWxpZFNldFtpXTsKKyAgY29udGV4dC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgaW52YWxpZE5hbWUpOworICBzaG91bGRCZSgiY29u
dGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworfQorCitkZWJ1Zygi
IikKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvbWlzYy9pcy1vYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvaXMtb2JqZWN0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjYyNTVhZTU3MzNmZTdjMTA5MzNjMzIyYTMwNDQ5ZjVhOWEwYjUzZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21pc2MvaXMtb2JqZWN0Lmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1Owor
dmFyIGNhbnZhczsKK3ZhciBnbDsKK3ZhciBzaG91bGRHZW5lcmF0ZUdMRXJyb3I7CisKK3ZhciBi
dWZmZXI7Cit2YXIgZnJhbWVidWZmZXI7Cit2YXIgcHJvZ3JhbTsKK3ZhciByZW5kZXJidWZmZXI7
Cit2YXIgc2hhZGVyOwordmFyIHRleHR1cmU7CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyAnaXMnIGNh
bGxzIGFnYWluc3Qgbm9uLWJvdW5kIGFuZCBkZWxldGVkIG9iamVjdHMiKTsKKword3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvciA9IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3I7CisKK3Nob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJidWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKSIpOworc2hvdWxkQmVGYWxzZSgiZ2wuaXNCdWZmZXIoYnVmZmVyKSIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBidWZmZXIpIik7CitzaG91bGRCZVRydWUoImdsLmlzQnVmZmVyKGJ1ZmZlcikiKTsKK2Rl
YnVnKCIiKTsKKworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImZyYW1l
YnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOworc2hvdWxkQmVGYWxzZSgiZ2wuaXNG
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
Tk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVy
KSIpOworc2hvdWxkQmVUcnVlKCJnbC5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSIpOworZGVi
dWcoIiIpOworCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVy
YnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKK3Nob3VsZEJlRmFsc2UoImdsLmlz
UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcikiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICJnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVy
YnVmZmVyKSIpOworc2hvdWxkQmVUcnVlKCJnbC5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
Iik7CitkZWJ1ZygiIik7CisKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1Is
ICJ0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc1Rl
eHR1cmUodGV4dHVyZSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1Is
ICJnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKSIpOworc2hvdWxkQmVUcnVl
KCJnbC5pc1RleHR1cmUodGV4dHVyZSkiKTsKK2RlYnVnKCIiKTsKKworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgInByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCkiKTsK
K3Nob3VsZEJlVHJ1ZSgiZ2wuaXNQcm9ncmFtKHByb2dyYW0pIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKSIpOworc2hv
dWxkQmVGYWxzZSgiZ2wuaXNQcm9ncmFtKHByb2dyYW0pIik7CitkZWJ1ZygiIik7CisKK3Nob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJzaGFkZXIgPSBnbC5jcmVhdGVTaGFk
ZXIoZ2wuVkVSVEVYX1NIQURFUikiKTsKK3Nob3VsZEJlVHJ1ZSgiZ2wuaXNTaGFkZXIoc2hhZGVy
KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVNo
YWRlcihzaGFkZXIpIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc1NoYWRlcihzaGFkZXIpIik7Citk
ZWJ1ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2MvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
aXNjL251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwODU4NGNmMDVkYTIx
YjJmN2QxOWRlNjQyZWMxZTFmYTRmMWUxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL251bGwt
b2JqZWN0LWJlaGF2aW91ci5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRl
c3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRob3V0IHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IG9i
amVjdHMiKTsKKwordmFyIGNvbnRleHQgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgcHJv
Z3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwordmFyIHNoYWRlciA9IHd0
dS5sb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCk7Cit2YXIgc2hvdWxkR2VuZXJhdGVH
TEVycm9yID0gd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcjsKKworYXNzZXJ0TXNnKHByb2dyYW0g
IT0gbnVsbCwgIlByb2dyYW0gQ29tcGlsZWQiKTsKK2Fzc2VydE1zZyhzaGFkZXIgIT0gbnVsbCwg
IlNoYWRlciBDb21waWxlZCIpOworc2hvdWxkVGhyb3coImNvbnRleHQuY29tcGlsZVNoYWRlcih1
bmRlZmluZWQpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5saW5rUHJvZ3JhbSh1bmRlZmluZWQp
Iik7CitzaG91bGRUaHJvdygiY29udGV4dC5hdHRhY2hTaGFkZXIodW5kZWZpbmVkLCB1bmRlZmlu
ZWQpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZp
bmVkKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuYXR0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hh
ZGVyKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZGV0YWNoU2hhZGVyKHByb2dyYW0sIHVuZGVm
aW5lZCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNo
YWRlcikiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LnNoYWRlclNvdXJjZSh1bmRlZmluZWQsIHVu
ZGVmaW5lZCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LnNoYWRlclNvdXJjZSh1bmRlZmluZWQs
ICdmb28nKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVm
aW5lZCwgMCwgJ2ZvbycpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5iaW5kQnVmZmVyKGNvbnRl
eHQuQVJSQVlfQlVGRkVSLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuYmluZEZyYW1lYnVm
ZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5iaW5k
UmVuZGVyYnVmZmVyKGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSIpOworc2hvdWxkVGhyb3coImNv
bnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSIpOworc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJpbmRCdWZmZXIo
Y29udGV4dC5BUlJBWV9CVUZGRVIsIG51bGwpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQu
RlJBTUVCVUZGRVIsIG51bGwpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29u
dGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJV
RkZFUiwgbnVsbCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5P
X0VSUk9SLCAiY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIG51bGwpIik7
CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRl
eHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZFUiwgdW5kZWZpbmVkKSIpOworc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJpbmRG
cmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCB1bmRlZmluZWQpIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZFJlbmRl
cmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJVRkZFUiwgdW5kZWZpbmVkKSIpOworc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJpbmRUZXh0dXJl
KGNvbnRleHQuVEVYVFVSRV8yRCwgdW5kZWZpbmVkKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVO
VCwgY29udGV4dC5SRU5ERVJCVUZGRVIsIG51bGwpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Y29udGV4dC5URVhUVVJFXzJELCBudWxsLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0
UHJvZ3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5n
ZXRQcm9ncmFtSW5mb0xvZyh1bmRlZmluZWQsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5n
ZXRTaGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQu
Z2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5n
ZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5p
Zm9ybSh1bmRlZmluZWQsIG51bGwpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3Jt
TG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykiKTsKKworZGVidWcoIiIpOworZGVidWcoImNoZWNr
IHdpdGggYmluZGluZ3MiKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZF
UiwgY29udGV4dC5jcmVhdGVCdWZmZXIoKSk7Citjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQu
VEVYVFVSRV8yRCwgY29udGV4dC5jcmVhdGVUZXh0dXJlKCkpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4
dC5BUlJBWV9CVUZGRVIsIDEsIGNvbnRleHQuU1RBVElDX0RSQVcpIik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZ2V0QnVmZmVyUGFy
YW1ldGVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBjb250ZXh0LkJVRkZFUl9TSVpFKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LnRl
eEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCBjb250ZXh0LlJHQkEsIDEsIDEsIDAsIGNv
bnRleHQuUkdCQSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAs
MF0pKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1Is
ICJjb250ZXh0LnRleFBhcmFtZXRlcmkoY29udGV4dC5URVhUVVJFXzJELCBjb250ZXh0LlRFWFRV
UkVfTUlOX0ZJTFRFUiwgY29udGV4dC5ORUFSRVNUKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmdldFRleFBhcmFtZXRlcihjb250
ZXh0LlRFWFRVUkVfMkQsIGNvbnRleHQuVEVYVFVSRV9NSU5fRklMVEVSKSIpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiY2hlY2sgd2l0aG91dCBiaW5kaW5ncyIpOworY29udGV4dC5iaW5kQnVmZmVy
KGNvbnRleHQuQVJSQVlfQlVGRkVSLCBudWxsKTsKK2NvbnRleHQuYmluZFRleHR1cmUoY29udGV4
dC5URVhUVVJFXzJELCBudWxsKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250
ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlf
QlVGRkVSLCAxLCBjb250ZXh0LlNUQVRJQ19EUkFXKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmdldEJ1ZmZlclBh
cmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUiwgY29udGV4dC5CVUZGRVJfU0laRSkiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAi
Y29udGV4dC50ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAx
LCAxLCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJy
YXkoWzAsMCwwLDBdKSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC50ZXhQYXJhbWV0ZXJpKGNvbnRleHQuVEVYVFVS
RV8yRCwgY29udGV4dC5URVhUVVJFX01JTl9GSUxURVIsIGNvbnRleHQuTkVBUkVTVCkiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAi
Y29udGV4dC5nZXRUZXhQYXJhbWV0ZXIoY29udGV4dC5URVhUVVJFXzJELCBjb250ZXh0LlRFWFRV
UkVfTUlOX0ZJTFRFUikiKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2Mvb2JqZWN0LWRlbGV0aW9uLWJl
aGF2aW91ci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvbWlzYy9vYmplY3QtZGVsZXRpb24tYmVoYXZpb3VyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTQ3MzBlYzRlYmI3MmQxODQxMDYyYTIyYjM1OTNkNzVkMTY2YzA5OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL21pc2Mvb2JqZWN0LWRlbGV0aW9uLWJlaGF2aW91ci5odG1sCkBAIC0wLDAgKzEs
NDQzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0
cyBkZWxldGlvbiBiZWhhdmlvciBmb3IgYnVmZmVyLCB0ZXh0dXJlLCByZW5kZXJidWZmZXIsIHNo
YWRlciwgYW5kIHByb2dyYW0iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIHNob3VsZEdlbmVyYXRlR0xFcnJvciA9IHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3I7Cit2YXIgY29udGV4dFZlcnNpb24gPSB3dHUuZ2V0RGVm
YXVsdDNEQ29udGV4dFZlcnNpb24oKTsKKworZGVidWcoIiIpOworZGVidWcoInNoYWRlciBhbmQg
cHJvZ3JhbSBkZWxldGlvbiIpOworCit2YXIgdmVydGV4U2hhZGVyID0gd3R1LmxvYWRTdGFuZGFy
ZFZlcnRleFNoYWRlcihnbCk7Cithc3NlcnRNc2codmVydGV4U2hhZGVyLCAidmVydGV4IHNoYWRl
ciBsb2FkZWQiKTsKK3ZhciBmcmFnbWVudFNoYWRlciA9IHd0dS5sb2FkU3RhbmRhcmRGcmFnbWVu
dFNoYWRlcihnbCk7Cithc3NlcnRNc2coZnJhZ21lbnRTaGFkZXIsICJmcmFnbWVudCBzaGFkZXIg
bG9hZGVkIik7CisKK3ZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworc2hvdWxkQmVO
b25OdWxsKCJwcm9ncmFtIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LCAiZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcikiKTsKK3Nob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJh
Z21lbnRTaGFkZXIpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAi
Z2wubGlua1Byb2dyYW0ocHJvZ3JhbSkiKTsKK3Nob3VsZEJlVHJ1ZSgiZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsICJnbC51c2VQcm9ncmFtKHByb2dyYW0pIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cikiKTsKK3Nob3VsZEJlVHJ1ZSgiZ2wuaXNTaGFkZXIodmVydGV4U2hhZGVyKSIpOworc2hvdWxk
QmVUcnVlKCJnbC5nZXRTaGFkZXJQYXJhbWV0ZXIodmVydGV4U2hhZGVyLCBnbC5ERUxFVEVfU1RB
VFVTKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRldGFj
aFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc1No
YWRlcih2ZXJ0ZXhTaGFkZXIpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VS
Uk9SLCAiZ2wuZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKSIpOworc2hvdWxkQmVUcnVlKCJn
bC5pc1NoYWRlcihmcmFnbWVudFNoYWRlcikiKTsKK3Nob3VsZEJlVHJ1ZSgiZ2wuZ2V0U2hhZGVy
UGFyYW1ldGVyKGZyYWdtZW50U2hhZGVyLCBnbC5ERUxFVEVfU1RBVFVTKSIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSki
KTsKK3Nob3VsZEJlVHJ1ZSgiZ2wuaXNQcm9ncmFtKHByb2dyYW0pIik7CitzaG91bGRCZVRydWUo
ImdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuREVMRVRFX1NUQVRVUykiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC51c2VQcm9ncmFtKG51bGwp
Iik7CitzaG91bGRCZUZhbHNlKCJnbC5pc1Byb2dyYW0ocHJvZ3JhbSkiKTsKK3Nob3VsZEJlRmFs
c2UoImdsLmlzU2hhZGVyKGZyYWdtZW50U2hhZGVyKSIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
dGV4dHVyZSBkZWxldGlvbiIpOworCit2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSwg
ZmJvMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCksIGZibzMgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworc2hvdWxkQmVOb25OdWxsKCJmYm8iKTsKK3Nob3VsZEJlTm9uTnVsbCgiZmJvMiIpOwor
c2hvdWxkQmVOb25OdWxsKCJmYm8zIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pIik7CisKK3Zh
ciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitzaG91bGRCZU5vbk51bGwoInRleCIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleCkiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVEVYVFVSRV9C
SU5ESU5HXzJEKSIsICJ0ZXgiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsICJnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCkiKTsKK3Nob3VsZEJlKCJnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSIsICJ0ZXgiKTsK
K3Nob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFKSIsICJnbC5URVhUVVJFIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpIik7CisvLyBEZWxldGluZyBhIHRleHR1
cmUgYm91bmQgdG8gdGhlIGN1cnJlbnRseS1ib3VuZCBmYm8gaXMgdGhlIHNhbWUgYXMKKy8vIGRl
dGFjaGluZyB0aGUgdGV4dHVlIGZyb20gZmJvIGZpcnN0LCB0aGVuIGRlbGV0ZSB0aGUgdGV4dHVy
ZS4KK3Nob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFKSIsICJnbC5OT05FIik7CitpZiAoY29udGV4dFZlcnNpb24gPiAxKSB7Cisg
IHNob3VsZEJlTnVsbCgiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfTkFNRSkiKTsKK30gZWxzZSB7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuSU5WQUxJRF9FTlVNLCAiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfTkFNRSkiKTsKK30KK3Nob3VsZEJlRmFsc2UoImdsLmlzVGV4dHVyZSh0ZXgp
Iik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5URVhUVVJFX0JJTkRJTkdfMkQp
Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuVEVYVFVSRV9CSU5ESU5HXzJEKSIpOworCit2YXIgdGV4Q3ViZU1hcCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKK3Nob3VsZEJlTm9uTnVsbCgidGV4Q3ViZU1hcCIpOworc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfQ1VCRV9NQVAsIHRleEN1YmVNYXApIik7CitzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGds
LlRFWFRVUkVfQklORElOR19DVUJFX01BUCkiLCAidGV4Q3ViZU1hcCIpOworc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVRleHR1cmUodGV4Q3ViZU1hcCki
KTsKK3Nob3VsZEJlRmFsc2UoImdsLmlzVGV4dHVyZSh0ZXhDdWJlTWFwKSIpOworc2hvdWxkQmVO
dWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmVNYXApIik7CitzaG91bGRCZU51bGwoImds
LmdldFBhcmFtZXRlcihnbC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIik7CisKK3ZhciB0ID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworc2hvdWxkQmVOb25OdWxsKCJ0Iik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdF
KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVRl
eHR1cmUodCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0KSIpOworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpIik7CisKK3ZhciB0
MiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK3Nob3VsZEJlTm9uTnVsbCgidDIiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRV
UkUwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHQyKSIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihn
bC5URVhUVVJFX0JJTkRJTkdfMkQpIiwgInQyIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLk5PX0VSUk9SLCAiZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSkiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0MikiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVEVYVFVSRV9CSU5ESU5H
XzJEKSIsICJ0MiIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LmRlbGV0ZVRleHR1cmUodDIpIik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5U
RVhUVVJFX0JJTkRJTkdfMkQpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VS
Uk9SLCAiZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCkiKTsKK3Nob3VsZEJlTnVsbCgiZ2wu
Z2V0UGFyYW1ldGVyKGdsLlRFWFRVUkVfQklORElOR18yRCkiKTsKKworZGVidWcoIiIpOworZGVi
dWcoInJlbmRlcmJ1ZmZlciBkZWxldGlvbiIpOworCit2YXIgcmJvID0gZ2wuY3JlYXRlUmVuZGVy
YnVmZmVyKCksIHJibzIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSwgcmJvMyA9IGdsLmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpOworc2hvdWxkQmVOb25OdWxsKCJyYm8iKTsKK3Nob3VsZEJlTm9uTnVs
bCgicmJvMiIpOworc2hvdWxkQmVOb25OdWxsKCJyYm8zIik7CitzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIs
IHJibykiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSX0JJTkRJ
TkcpIiwgInJibyIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYm8pIik7CitzaG91bGRCZSgiZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkiLCAicmJvIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlUmVuZGVyYnVmZmVy
KHJibykiKTsKKy8vIERlbGV0aW5nIGEgcmVuZGVyYnVmZmVyIGJvdW5kIHRvIHRoZSBjdXJyZW50
bHktYm91bmQgZmJvIGlzIHRoZSBzYW1lIGFzCisvLyBkZXRhY2hpbmcgdGhlIHJlbmRlcmJ1ZmZl
ciBmcm9tIGZibyBmaXJzdCwgdGhlbiBkZWxldGUgdGhlIHJlbmRlcmJ1ZmZlci4KK3Nob3VsZEJl
KCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBF
KSIsICJnbC5OT05FIik7CitpZiAoY29udGV4dFZlcnNpb24gPiAxKSB7CisgIHNob3VsZEJlTnVs
bCgiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFN
RSkiKTsKK30gZWxzZSB7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9F
TlVNLCAiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
TkFNRSkiKTsKK30KK3Nob3VsZEJlRmFsc2UoImdsLmlzUmVuZGVyYnVmZmVyKHJibykiKTsKK3No
b3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUl9CSU5ESU5HKSIpOwor
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pIik7CitzaG91bGRCZU51bGwoImdsLmdl
dFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVJfQklORElORykiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgcmJvMikiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSX0JJ
TkRJTkcpIiwgInJibzIiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1Is
ICJnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvMykiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSX0JJTkRJTkcpIiwgInJibzIiKTsKKworZGVidWcoIiIpOworZGVi
dWcoInVzaW5nIGRlbGV0ZWQgcmVuZGVyYnVmZmVyIik7CityYm8gPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5k
UmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKSIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SR0JBNCwgMTYsIDE2KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5O
T19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVG
RkVSLCByYm8pIik7CitpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
UikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgLy8gbWFrZSBiYWNrYnVmZmVyIHJl
ZAorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXJDb2xvcigxLDAsMCwxKSIpOworICBzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCkiKTsKKyAgLy8gbWFrZSBmYm8gZ3JlZW4KKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKSIpOwor
ICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXJDb2xvcigw
LDEsMCwxKSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCkiKTsKKyAgLy8gQmluZCBiYWNrYnVmZmVyLgorICBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBudWxsKSIpOworICAvLyBkZWxldGUgcmVuZGVyYnVmZmVyLiBJdCBz
aG91bGQgc3RpbGwgYmUgYXR0YWNoZWQgdG8gZmJvIHRob3VnaC4KKyAgc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYm8pIik7Cisg
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3dHUuY2hlY2tDYW52YXNS
ZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFsyNTUsMCwwLDI1NV0sICJiYWNrYnVmZmVyIHNob3VsZCBi
ZSByZWQiKScpOworICAvLyBVc2UgZmJvIHRoYXQgaGFzIGRlbGV0ZWQgcmJvLgorICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYm8pIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsICd3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFswLDI1NSwwLDI1NV0s
ICJmYm8gc2hvdWxkIGJlIGdyZWVuIiknKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5OT19FUlJPUiwgImdsLmNsZWFyQ29sb3IoMCwwLDEsMSkiKTsKKyAgc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpIik7
CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFswLDAsMjU1LDI1NV0sICJmYm8gc2hvdWxkIGJlIGJs
dWUiKScpOworICAvLyBCaW5kIGJhY2tidWZmZXIuCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
Iik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFsyNTUsMCwwLDI1NV0sICJiYWNrYnVmZmVyIHNo
b3VsZCBiZSByZWQiKScpOworfQorCitkZWJ1ZygiIik7CitkZWJ1ZygicmVuZGVyYnVmZmVyIGF0
dGFjaGVkIHR3aWNlIHRvIHNhbWUgZnJhbWVidWZmZXIiKTsKK3JibyA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJp
bmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJC
VUZGRVIsIGdsLlJHQkE0LCAxNiwgMTYpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pIik7Citz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJC
VUZGRVIsIHJibykiKTsKK2lmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVG
RkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICByYm8yID0gZ2wuY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvMikiKTsKKyAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYsIDE2KSIpOworICAvLyBhdHRhY2ggcmJvMiBhdCB0
d28gYXR0YWNobWVudCBwb2ludHMgaW5jb21wYXRpYmxlIHdpdGggaXQKKyAgc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJibzIp
Iik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBn
bC5SRU5ERVJCVUZGRVIsIHJibzIpIik7CisgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGds
LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIiwgInJibzIiKTsKKyAgc2hvdWxk
QmUoImdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FKSIsICJyYm8yIik7CisgIC8vIGZibyBjYW4ndCBiZSBjb21wbGV0ZSBhcyByYm8yIGlzIGF0
dGFjaGVkIGF0IGluY29tcGF0aWJsZSBhdHRhY2htZW50IHBvaW50cworICBzaG91bGROb3RCZSgi
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUiKTsKKyAgLy8gbm93IHdlIGRlbGV0ZSByYm8yLCB3aGljaCBkZXRhY2hlcyBp
dCBmcm9tIHRoZSB0d28gYXR0YWNobWVudCBwb2ludHMgd2hlcmUgaXQgY3VycmVudGx5IGlzIGF0
dGFjaGVkCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxl
dGVSZW5kZXJidWZmZXIocmJvMikiKTsKKyAgc2hvdWxkQmUoImdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkiLCAiZ2wuTk9ORSIpOworICBzaG91
bGRCZSgiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUpIiwgImdsLk5PTkUiKTsKKyAgLy8gd2Ugc2hvdWxkIG5vdyBiZSBpbiB0aGUgc2FtZSBz
dGF0ZSBhcyBiZWZvcmUgd2l0aCBvbmx5IHJibyBhdHRhY2hlZCwgc28gZmJvIHNob3VsZCBiZSBj
b21wbGV0ZSBhZ2FpbgorICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5G
UkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKyAgc2hvdWxkQmUoImds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIiwg
InJibyIpOworfQorc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRl
bGV0ZVJlbmRlcmJ1ZmZlcihyYm8pIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKSIpOworCisK
KworZGVidWcoIiIpOworZGVidWcoInVzaW5nIGRlbGV0ZWQgdGV4dHVyZSIpOwordGV4ID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwg
ImdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfMkQsIHRleCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9f
RVJST1IsICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpIik7CitpZiAoZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsK
KyAgLy8gbWFrZSBmYm8gZ3JlZW4KKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKSIpOworICBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXJDb2xvcigwLDEsMCwx
KSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCkiKTsKKyAgLy8gQmluZCBiYWNrYnVmZmVyLgorICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKSIpOworICAvLyBkZWxldGUgdGV4dHVyZS4gSXQgc2hvdWxkIHN0aWxs
IGJlIGF0dGFjaGVkIHRvIGZibyB0aG91Z2guCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICJnbC5kZWxldGVUZXh0dXJlKHRleCkiKTsKKyAgc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEs
IDEsIFsyNTUsMCwwLDI1NV0sICJiYWNrYnVmZmVyIHNob3VsZCBiZSByZWQiKScpOworICAvLyBV
c2UgZmJvIHRoYXQgaGFzIGRlbGV0ZWQgdGV4dHVyZS4KKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJv
KSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAnd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsMjU1LDAsMjU1XSwgImZibyBzaG91bGQgYmUg
Z3JlZW4iKScpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wu
Y2xlYXJDb2xvcigwLDAsMSwxKSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCkiKTsKKyAgc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAs
IDEsIDEsIFswLDAsMjU1LDI1NV0sICJmYm8gc2hvdWxkIGJlIGJsdWUiKScpOworICAvLyBCaW5k
IGJhY2tidWZmZXIuCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpIik7CisgIHNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAw
LCAxNiwgMTYsIFsyNTUsMCwwLDI1NV0sICJiYWNrYnVmZmVyIHNob3VsZCBiZSByZWQiKScpOwor
fQorCitkZWJ1ZygiIik7CitkZWJ1ZygidXNpbmcgZGVsZXRlZCByZW5kZXJidWZmZXIiKTsKK3Ji
byA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworc2hvdWxkQmVOb25OdWxsKCJyYm8iKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgcmJvKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5O
T19FUlJPUiwgImdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JB
NCwgMTYsIDE2KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKSIpOworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYm8pIik7
CitpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvMikiKTsKKyAgc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVG
RkVSLCByYm8pIik7CisgIHNob3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworICAvLyBtYWtlIGJhY2ti
dWZmZXIgcmVkCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpIik7CisgIHNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVhckNvbG9yKDEsMCwwLDEpIik7CisgIHNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKSIpOworICAvLyBtYWtlIGZibyBncmVlbgorICBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBm
Ym8pIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVh
ckNvbG9yKDAsMSwwLDEpIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsICJnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKSIpOworICAvLyBkZWxldGUgcmVuZGVy
YnVmZmVyLiBJdCBzaG91bGQgc3RpbGwgYmUgYXR0YWNoZWQgdG8gZmJvMiB0aG91Z2guCisgIHNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVSZW5kZXJidWZm
ZXIocmJvKSIpOworICAvLyBmYm8gaGFzIG5vIGF0dGFjaG1lbnRzCisgIHNob3VsZE5vdEJlKCJn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURSIpOworICAvLyBVc2UgZmJvMiB0aGF0IGhhcyBkZWxldGVkIHJiby4KKyAgc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZmJvMikiKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5O
T19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDE2LCAxNiwgWzAsMjU1LDAs
MjU1XSwgImZibyBzaG91bGQgYmUgZ3JlZW4iKScpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXJDb2xvcigwLDAsMSwxKSIpOworICBzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCkiKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDE2LCAxNiwgWzAsMCwyNTUsMjU1XSwgImZibyBzaG91bGQg
YmUgYmx1ZSIpJyk7CisgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSIsICJyYm8iKTsKKworICBzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm8pIik7CisgIGlmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgICBzaG91bGRCZU51bGwo
ImdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUp
Iik7CisgIH0gZWxzZSB7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElE
X0VOVU0sICJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9OQU1FKSIpOworICB9CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9ORSwgImds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIik7
CisgIHNob3VsZE5vdEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworICAvLyBCaW5kIGJhY2tidWZmZXIuCisg
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICd3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFsyNTUs
MCwwLDI1NV0sICJiYWNrYnVmZmVyIHNob3VsZCBiZSByZWQiKScpOworfQorCitkZWJ1ZygiIik7
CitkZWJ1ZygidXNpbmcgZGVsZXRlZCB0ZXh0dXJlIik7Cit0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CitzaG91bGRCZU5vbk51bGwoInRleCIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5OT19FUlJPUiwgImdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCkiKTsKK3Nob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZibykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsICJnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpIik7CitpZiAoZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJf
Q09NUExFVEUpIHsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvMikiKTsKKyAgc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKSIp
OworICAvLyBtYWtlIGZibyBncmVlbgorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pIik7CisgIHNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVhckNvbG9yKDAsMSww
LDEpIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKSIpOworICAvLyBkZWxldGUgdGV4dHVyZS4gSXQgc2hvdWxk
IHN0aWxsIGJlIGF0dGFjaGVkIHRvIGZibzIgdGhvdWdoLgorICBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpIik7CisgIC8vIGZibyBo
YXMgbm8gYXR0YWNobWVudHMKKyAgc2hvdWxkTm90QmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgIC8vIFVz
ZSBmYm8gdGhhdCBoYXMgZGVsZXRlZCB0ZXh0dXJlLgorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8y
KSIpOworICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
UikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsw
LDI1NSwwLDI1NV0sICJmYm8gc2hvdWxkIGJlIGdyZWVuIiknKTsKKyAgc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmNsZWFyQ29sb3IoMCwwLDEsMSkiKTsKKyAgc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbMCwwLDI1NSwyNTVdLCAiZmJvIHNo
b3VsZCBiZSBibHVlIiknKTsKKyAgc2hvdWxkQmUoImdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIiwgInRleCIpOworCisgIHNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZibykiKTsKKyAgaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICAgIHNob3VsZEJl
TnVsbCgiZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
TkFNRSkiKTsKKyAgfSBlbHNlIHsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklO
VkFMSURfRU5VTSwgImdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
T0JKRUNUX05BTUUpIik7CisgIH0KKyAgc2hvdWxkTm90QmUoImdsLmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgIC8v
IEJpbmQgYmFja2J1ZmZlci4KKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJP
UiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCkiKTsKKyAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDAsIDAsIDE2LCAxNiwgWzI1NSwwLDAsMjU1XSwgImJhY2tidWZmZXIgc2hvdWxkIGJlIHJlZCIp
Jyk7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJidWZmZXIgZGVsZXRpb24iKTsKKwordmFyIGJ1
ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworc2hvdWxkQmVOb25OdWxsKCJidWZmZXIiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgYnVmZmVyKSIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5BUlJB
WV9CVUZGRVJfQklORElORykiLCAiYnVmZmVyIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcikiKTsKK3Nob3VsZEJlRmFsc2Uo
ImdsLmlzQnVmZmVyKGJ1ZmZlcikiKTsKK3Nob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGds
LkFSUkFZX0JVRkZFUl9CSU5ESU5HKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgImdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIp
Iik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVJfQklORElO
RykiKTsKKwordmFyIGJ1ZmZlcjIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK3Nob3VsZEJlTm9uTnVs
bCgiYnVmZmVyMiIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIyKSIpOworc2hvdWxkQmUoImdsLmdl
dFBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVJfQklORElORykiLCAiYnVmZmVyMiIpOworc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBudWxsKSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQVJSQVlf
QlVGRkVSX0JJTkRJTkcpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcjIpIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc0J1ZmZl
cihidWZmZXIyKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgImdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIyKSIpOworc2hvdWxk
QmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSX0JJTkRJTkcpIik7CisKK3Zh
ciBidWZmZXJFbGVtZW50ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitzaG91bGRCZU5vbk51bGwoImJ1
ZmZlckVsZW1lbnQiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJn
bC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZmZXJFbGVtZW50KSIpOwor
c2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5H
KSIsICJidWZmZXJFbGVtZW50Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VS
Uk9SLCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlckVsZW1lbnQpIik7CitzaG91bGRCZUZhbHNlKCJn
bC5pc0J1ZmZlcihidWZmZXJFbGVtZW50KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCBidWZmZXJFbGVtZW50KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJh
bWV0ZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykiKTsKKwordmFyIGIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKK3Nob3VsZEJlTm9uTnVsbCgiYiIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBiKSIp
Oworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCAxLCBnbC5TVEFUSUNfRFJBVykiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVCdWZmZXIoYikiKTsKK3Nob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgYikiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sICJnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMSwgZ2wuU1RBVElDX0RS
QVcpIik7CisKK3ZhciBiMSA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworc2hvdWxkQmVOb25OdWxsKCJi
MSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBiMSk7Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7Iik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOyIpOwordmFyIGIyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CitzaG91bGRCZU5vbk51bGwoImIyIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5P
X0VSUk9SLCAiZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGIyKTsiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSgyKTsiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDIsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Iik7CitzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoMyk7Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wudmVy
dGV4QXR0cmliUG9pbnRlcigzLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOyIpOworc2hvdWxk
QmUoImdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9C
SU5ESU5HKSIsICJiMSIpOworc2hvdWxkQmUoImdsLmdldFZlcnRleEF0dHJpYigyLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HKSIsICJiMiIpOworc2hvdWxkQmUoImdsLmdl
dFZlcnRleEF0dHJpYigzLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HKSIs
ICJiMiIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0
ZUJ1ZmZlcihiMik7Iik7CitzaG91bGRCZSgiZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIiwgImIxIik7CitzaG91bGRCZU51bGwoImds
LmdldFZlcnRleEF0dHJpYigyLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5H
KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRWZXJ0ZXhBdHRyaWIoMywgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9CVUZGRVJfQklORElORykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
Tk9fRVJST1IsICJnbC5kZWxldGVCdWZmZXIoYjEpOyIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRW
ZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORykiKTsK
KworZGVidWcoIiIpOworZGVidWcoImZyYW1lYnVmZmVyIGRlbGV0aW9uIik7CisKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibykiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVJfQklORElORykiLCAiZmJvIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VS
Uk9SLCAiZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKSIpOworc2hvdWxkQmVGYWxzZSgiZ2wuaXNG
cmFtZWJ1ZmZlcihmYm8pIik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUl9CSU5ESU5HKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKSIpOwor
c2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVJfQklORElORykiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZibzIpIik7CitzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSX0JJTkRJTkcpIiwgImZibzIiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8zKSIpOworc2hvdWxkQmUo
ImdsLmdldFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUl9CSU5ESU5HKSIsICJmYm8yIik7CisKK2Zi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CityYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KTsKK3Nob3VsZEJlTm9uTnVsbCgiZmJvIik7CitzaG91bGRCZU5vbk51bGwoInJibyIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZmJvKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgImdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wucmVuZGVyYnVmZmVyU3RvcmFn
ZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAxNiwgMTYpIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJibykiKTsK
K2lmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFN
RUJVRkZFUl9DT01QTEVURSkgeworICAvLyBzZXQgYmFja2J1ZmZlciB0byByZWQKKyAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgbnVsbCkiKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgImdsLmNsZWFyQ29sb3IoMSwwLDAsMSkiKTsKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5OT19FUlJPUiwgImdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpIik7CisgIC8v
IHNldCBmcmFtZWJ1ZmZlciB0byBncmVlbgorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pIik7Cisg
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5jbGVhckNvbG9yKDAs
MSwwLDEpIik7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKSIpOworICAvLyBjaGVjayBmcmFtZWJ1ZmZlcgorICBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAnd3R1LmNoZWNrQ2FudmFzUmVj
dChnbCwgMCwgMCwgMTYsIDE2LCBbMCwyNTUsMCwyNTVdLCAiZmJvIHNob3VsZCBiZSBncmVlbiIp
Jyk7CisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICd3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAxNiwgMTYsIDEsIDEsIFswLDAsMCwwXSwgIm91dHNpZGUgZmJvIHNob3Vs
ZCBiZSBibGFjayIpJyk7CisgIC8vIGRlbGV0ZSBmcmFtZWJ1ZmZlci4gYmVjYXVzZSB0aGlzIHdh
cyB0aGUgYm91bmQgZmJvIHRoZSBiYWNrYnVmZmVyIHNob3VsZCBiZSBhY3RpdmUgbm93CisgIHNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVGcmFtZWJ1ZmZl
cihmYm8pIik7CisgIC8vIGNoZWNrIGJhY2tidWZmZXIKKyAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDMwMCwgMTUw
LCBbMjU1LDAsMCwyNTVdLCAiYmFja2J1ZmZlciBzaG91bGQgYmUgcmVkIiknKTsKKyAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDMwMCwgMCwgMzAwLCAzMDAsIFswLDAsMCwwXSwgIm91dHNpZGUgYmFja2J1ZmZlciBzaG91bGQg
YmUgYmxhY2siKScpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAn
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMTUwLCAzMDAsIDMwMCwgWzAsMCwwLDBdLCAib3V0
c2lkZSBiYWNrYnVmZmVyIHNob3VsZCBiZSBibGFjayIpJyk7CisgIC8vIGNoZWNrIGRyYXdpbmcg
dG8gYmFja2J1ZmZlcgorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAi
Z2wuY2xlYXJDb2xvcigwLDEsMCwxKSIpOworICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCkiKTsKKyAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAs
IDAsIDMwMCwgMTUwLCBbMCwyNTUsMCwyNTVdLCAiZmJvIHNob3VsZCBiZSBncmVlbiIpJyk7Cisg
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpIik7CisgIC8vIGNoZWNrIGFnYWluIGJlY2F1c2UgbWFu
eSBidWdneSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBoYXZlIGJvdW5kIHRvIHRoZSB0cnVlIGJhY2ti
dWZmZXIgb24gZGVsZXRlRnJhbWVidWZmZXIuCisgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICd3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAzMDAsIDE1MCwgWzAs
MjU1LDAsMjU1XSwgImZibyBzaG91bGQgYmUgZ3JlZW4iKScpOworfQorCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21p
c2Mvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2Mvc2hhZGVyLXByZWNpc2lvbi1m
b3JtYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmJlMmE4MTQ1Y2U4ZTI5MjhkYzM1YzFiM2Q5YzllMDdh
YTY2ZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC5o
dG1sCkBAIC0wLDAgKzEsMzQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgc2hhZGVyIHByZWNpc2lvbiBmb3JtYXQgdGVzdC48L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWln
aHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlv
bihkb2N1bWVudC50aXRsZSk7CitkZWJ1ZygiVGVzdHMgdGhhdCBXZWJHTFNoYWRlclByZWNpc2lv
bkZvcm1hdCBjbGFzcyBhbmQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IHdvcmsuIik7CitkZWJ1
ZygiIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKKworZnVuY3Rp
b24gdmVyaWZ5U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUp
IHsKKyAgICBzaG91bGRCZVRydWUoJ2dsLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgnICsgc2hh
ZGVydHlwZSArICcsICcgKworICAgICAgICAgICAgICAgICBwcmVjaXNpb250eXBlICsgJykgaW5z
dGFuY2VvZiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdCcpOworfQorCitkZWJ1ZygiIik7Citk
ZWJ1ZygiVGVzdCB0aGF0IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCByZXR1cm5zIGEgV2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQgb2JqZWN0LiIpOworZGVidWcoIiIpOworCit2ZXJpZnlTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoJ2dsLlZFUlRFWF9TSEFERVInLCAnZ2wuTE9XX0ZMT0FUJyk7Cit2
ZXJpZnlTaGFkZXJQcmVjaXNpb25Gb3JtYXQoJ2dsLlZFUlRFWF9TSEFERVInLCAnZ2wuTUVESVVN
X0ZMT0FUJyk7Cit2ZXJpZnlTaGFkZXJQcmVjaXNpb25Gb3JtYXQoJ2dsLlZFUlRFWF9TSEFERVIn
LCAnZ2wuSElHSF9GTE9BVCcpOwordmVyaWZ5U2hhZGVyUHJlY2lzaW9uRm9ybWF0KCdnbC5WRVJU
RVhfU0hBREVSJywgJ2dsLkxPV19JTlQnKTsKK3ZlcmlmeVNoYWRlclByZWNpc2lvbkZvcm1hdCgn
Z2wuVkVSVEVYX1NIQURFUicsICdnbC5NRURJVU1fSU5UJyk7Cit2ZXJpZnlTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoJ2dsLlZFUlRFWF9TSEFERVInLCAnZ2wuSElHSF9JTlQnKTsKK3ZlcmlmeVNoYWRl
clByZWNpc2lvbkZvcm1hdCgnZ2wuRlJBR01FTlRfU0hBREVSJywgJ2dsLkxPV19GTE9BVCcpOwor
dmVyaWZ5U2hhZGVyUHJlY2lzaW9uRm9ybWF0KCdnbC5GUkFHTUVOVF9TSEFERVInLCAnZ2wuTUVE
SVVNX0ZMT0FUJyk7Cit2ZXJpZnlTaGFkZXJQcmVjaXNpb25Gb3JtYXQoJ2dsLkZSQUdNRU5UX1NI
QURFUicsICdnbC5ISUdIX0ZMT0FUJyk7Cit2ZXJpZnlTaGFkZXJQcmVjaXNpb25Gb3JtYXQoJ2ds
LkZSQUdNRU5UX1NIQURFUicsICdnbC5MT1dfSU5UJyk7Cit2ZXJpZnlTaGFkZXJQcmVjaXNpb25G
b3JtYXQoJ2dsLkZSQUdNRU5UX1NIQURFUicsICdnbC5NRURJVU1fSU5UJyk7Cit2ZXJpZnlTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoJ2dsLkZSQUdNRU5UX1NIQURFUicsICdnbC5ISUdIX0lOVCcpOwor
CitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0aGF0IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCB0
aHJvd3MgYW4gZXJyb3Igd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuIik7CitkZWJ1ZygiIik7CisK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ2dsLmdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChnbC5ISUdIX0lOVCwgZ2wuVkVSVEVYX1NIQURFUiknKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3QgdGhhdCBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdCB2
YWx1ZXMgYXJlIHNlbnNpYmxlLiIpOworZGVidWcoIiIpOworCisvLyBUaGUgbWluaW11bSB2YWx1
ZXMgYXJlIGZyb20gT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ugc3BlYywgc2VjdGlvbiA0LjUu
CisKK3ZhciBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoZ2wuVkVSVEVYX1NIQURFUiwgZ2wuTE9XX0ZMT0FUKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVy
UHJlY2lzaW9uRm9ybWF0LnJhbmdlTWluID49IDEnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJl
Y2lzaW9uRm9ybWF0LnJhbmdlTWF4ID49IDEnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lz
aW9uRm9ybWF0LnByZWNpc2lvbiA+PSA4Jyk7CisKK3NoYWRlclByZWNpc2lvbkZvcm1hdCA9IGds
LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChnbC5WRVJURVhfU0hBREVSLCBnbC5NRURJVU1fRkxP
QVQpOworc2hvdWxkQmVUcnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gMTQn
KTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWF4ID49IDE0Jyk7
CitzaG91bGRCZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1hdC5wcmVjaXNpb24gPj0gMTAnKTsK
Kworc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGds
LlZFUlRFWF9TSEFERVIsIGdsLkhJR0hfRkxPQVQpOworc2hvdWxkQmVUcnVlKCdzaGFkZXJQcmVj
aXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gNjInKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lz
aW9uRm9ybWF0LnJhbmdlTWF4ID49IDYyJyk7CitzaG91bGRCZVRydWUoJ3NoYWRlclByZWNpc2lv
bkZvcm1hdC5wcmVjaXNpb24gPj0gMTYnKTsKKworc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gZ2wu
Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGdsLlZFUlRFWF9TSEFERVIsIGdsLkxPV19JTlQpOwor
c2hvdWxkQmVUcnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gOCcpOworc2hv
dWxkQmVUcnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNYXggPj0gOCcpOworc2hvdWxk
QmVUcnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucHJlY2lzaW9uID09IDAnKTsKKworc2hhZGVy
UHJlY2lzaW9uRm9ybWF0ID0gZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGdsLlZFUlRFWF9T
SEFERVIsIGdsLk1FRElVTV9JTlQpOworc2hvdWxkQmVUcnVlKCdzaGFkZXJQcmVjaXNpb25Gb3Jt
YXQucmFuZ2VNaW4gPj0gMTAnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0
LnJhbmdlTWF4ID49IDEwJyk7CitzaG91bGRCZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1hdC5w
cmVjaXNpb24gPT0gMCcpOworCitzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBnbC5nZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoZ2wuVkVSVEVYX1NIQURFUiwgZ2wuSElHSF9JTlQpOworc2hvdWxkQmVU
cnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gMTYnKTsKK3Nob3VsZEJlVHJ1
ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWF4ID49IDE2Jyk7CitzaG91bGRCZVRydWUo
J3NoYWRlclByZWNpc2lvbkZvcm1hdC5wcmVjaXNpb24gPT0gMCcpOworCit2YXIgc2hhZGVyUHJl
Y2lzaW9uRm9ybWF0ID0gZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGdsLkZSQUdNRU5UX1NI
QURFUiwgZ2wuTE9XX0ZMT0FUKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0
LnJhbmdlTWluID49IDEnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJh
bmdlTWF4ID49IDEnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnByZWNp
c2lvbiA+PSA4Jyk7CisKK3NoYWRlclByZWNpc2lvbkZvcm1hdCA9IGdsLmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLk1FRElVTV9GTE9BVCk7CitzaG91bGRC
ZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1hdC5yYW5nZU1pbiA+PSAxNCcpOworc2hvdWxkQmVU
cnVlKCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNYXggPj0gMTQnKTsKK3Nob3VsZEJlVHJ1
ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnByZWNpc2lvbiA+PSAxMCcpOworCitzaGFkZXJQcmVj
aXNpb25Gb3JtYXQgPSBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRfU0hB
REVSLCBnbC5MT1dfSU5UKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJh
bmdlTWluID49IDgnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdl
TWF4ID49IDgnKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnByZWNpc2lv
biA9PSAwJyk7CisKK3NoYWRlclByZWNpc2lvbkZvcm1hdCA9IGdsLmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLk1FRElVTV9JTlQpOworc2hvdWxkQmVUcnVl
KCdzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gMTAnKTsKK3Nob3VsZEJlVHJ1ZSgn
c2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWF4ID49IDEwJyk7CitzaG91bGRCZVRydWUoJ3No
YWRlclByZWNpc2lvbkZvcm1hdC5wcmVjaXNpb24gPT0gMCcpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBvcHRpb25hbCBoaWdocCBzdXBwb3J0IGluIGZyYWdtZW50IHNoYWRlcnMuIik7Citk
ZWJ1ZygiIik7CisKK3NoYWRlclByZWNpc2lvbkZvcm1hdCA9IGdsLmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChnbC5GUkFHTUVOVF9TSEFERVIsIGdsLkhJR0hfRkxPQVQpOworc2hvdWxkQmVUcnVl
KCcoc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWluID09IDAgJiYgc2hhZGVyUHJlY2lzaW9u
Rm9ybWF0LnJhbmdlTWF4ID09IDAgJiYgc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnByZWNpc2lvbiA9
PSAwKSB8fCAoc2hhZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWluID49IDYyICYmIHNoYWRlclBy
ZWNpc2lvbkZvcm1hdC5yYW5nZU1heCA+PSA2MiAmJiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQucHJl
Y2lzaW9uID49IDE2KScpOworCitzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBnbC5nZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRfU0hBREVSLCBnbC5ISUdIX0lOVCk7CitzaG91bGRC
ZVRydWUoJyhzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPT0gMCAmJiBzaGFkZXJQcmVj
aXNpb25Gb3JtYXQucmFuZ2VNYXggPT0gMCAmJiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQucHJlY2lz
aW9uID09IDApIHx8IChzaGFkZXJQcmVjaXNpb25Gb3JtYXQucmFuZ2VNaW4gPj0gMTYgJiYgc2hh
ZGVyUHJlY2lzaW9uRm9ybWF0LnJhbmdlTWF4ID49IDE2ICYmIHNoYWRlclByZWNpc2lvbkZvcm1h
dC5wcmVjaXNpb24gPT0gMCknKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdGhhdCBnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQgcmV0dXJucyB0aGUgc2FtZSB0aGluZyBldmVyeSBjYWxsLiIp
OworZGVidWcoIiIpOworCitzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBnbC5nZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoZ2wuVkVSVEVYX1NIQURFUiwgZ2wuTE9XX0ZMT0FUKTsKK3ZhciBzaGFkZXJQ
cmVjaXNpb25Gb3JtYXQyID0gZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGdsLlZFUlRFWF9T
SEFERVIsIGdsLkxPV19GTE9BVCk7CitzaG91bGRCZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1h
dC5yYW5nZU1pbiA9PSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQyLnJhbmdlTWluJyk7CitzaG91bGRC
ZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1hdC5yYW5nZU1heCA9PSBzaGFkZXJQcmVjaXNpb25G
b3JtYXQyLnJhbmdlTWF4Jyk7CitzaG91bGRCZVRydWUoJ3NoYWRlclByZWNpc2lvbkZvcm1hdC5w
cmVjaXNpb24gPT0gc2hhZGVyUHJlY2lzaW9uRm9ybWF0Mi5wcmVjaXNpb24nKTsKKworZGVidWco
IiIpOworZGVidWcoIlRlc3QgdGhhdCBzcGVjaWZpZWQgcHJlY2lzaW9uIG1hdGNoZXMgcmVuZGVy
aW5nIHJlc3VsdHMiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVzdFJlbmRlclByZWNpc2lv
blNldHVwKGdsLCBzaGFkZXJQYWlyKSB7CisgIGNvbnN0IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBzaGFkZXJQYWlyKTsKKworICAvLyBDcmVhdGUgYSBidWZmZXIgYW5kIHNldHVwIGFu
IGF0dHJpYnV0ZS4KKyAgLy8gV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGV4Y2VwdCBmb3IgYSBidWcg
aW4gU2FmYXJpIGFuZCBhcmd1YWJseQorICAvLyB0aGlzIHNob3VsZCBiZSByZW1vdmVkIGZyb20g
dGhlIHRlc3QgYnV0IHdlIGNhbid0IHRlc3QgdGhlIHRlc3QgaXRzZWxmCisgIC8vIHdpdGhvdXQg
dW50aWwgdGhlIGJ1ZyBpcyBmaXhlZC4KKyAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc1OTIKKyAgeworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBnbC5jcmVhdGVCdWZmZXIoKSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIDEsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBjb25zdCBsb2MgPSBnbC5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCAncG9zaXRpb24nKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShsb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIobG9jLCAxLCBnbC5VTlNJR05F
RF9CWVRFLCBmYWxzZSwgMCwgMCk7CisgIH0KKworICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOwor
CisgIHJldHVybiBwcm9ncmFtOworfQorCitmdW5jdGlvbiB0ZXN0UmVuZGVyUHJlY2lzaW9uKGds
LCBzaGFkZXJUeXBlLCB0eXBlLCBwcmVjaXNpb24sIGV4cGVjdGVkLCBtc2cpIHsKKyAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAx
KTsKKworICBjb25zdCBwaXhlbCA9IG5ldyBVaW50OEFycmF5KDQpOworICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKworICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBleHBlY3RlZCwgbXNnLCA1KTsKK30KKwor
ZnVuY3Rpb24gdGVzdFJlbmRlclByZWNpc2lvbkZsb2F0KGdsLCBwcmVjaXNpb25FbnVtLCBwcmVj
aXNpb24pIHsKKyAgZnVuY3Rpb24gdGVzdChnbCwgc2hhZGVyUGFpciwgc2hhZGVyVHlwZSkgewor
ICAgIGNvbnN0IGZvcm1hdCA9IGdsLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBl
LCBwcmVjaXNpb25FbnVtKTsKKyAgICBjb25zdCB2YWx1ZSA9IDIgKiogZm9ybWF0LnByZWNpc2lv
biAtIDE7CisKKyAgICBjb25zdCBsZW5ndGggPSB2ID0+IE1hdGguc3FydCh2LnJlZHVjZSgoc3Vt
LCB2KSA9PiBzdW0gKyB2ICogdiwgMCkpOworICAgIGNvbnN0IG5vcm1hbGl6ZSA9ICh2KSA9PiB7
CisgICAgICBjb25zdCBsID0gbGVuZ3RoKHYpOworICAgICAgcmV0dXJuIHYubWFwKHYgPT4gdiAv
IGwpOworICAgIH07CisKKyAgICBjb25zdCBpbnB1dCA9IFtNYXRoLnNxcnQodmFsdWUpLCBNYXRo
LnNxcnQodmFsdWUpLCBNYXRoLnNxcnQodmFsdWUpXTsKKyAgICBjb25zdCBleHBlY3RlZCA9IFsu
Li5ub3JtYWxpemUoaW5wdXQpLm1hcCh2ID0+ICh2ICogMC41ICsgMC41KSAqIDI1NSB8IDApLCAy
NTVdOworCisgICAgY29uc3QgbXNnID0gYCR7d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBzaGFkZXJU
eXBlKX06ICR7cHJlY2lzaW9ufSBmbG9hdCBwcmVjaXNpb246ICR7Zm9ybWF0LnByZWNpc2lvbn0s
IHJhbmdlTWluOiAke2Zvcm1hdC5yYW5nZU1pbn0sIHJhbmdlTWF4OiAke2Zvcm1hdC5yYW5nZU1h
eH1gOworICAgIGNvbnN0IHByb2dyYW0gPSB0ZXN0UmVuZGVyUHJlY2lzaW9uU2V0dXAoZ2wsIHNo
YWRlclBhaXIpOworICAgIGNvbnN0IHZMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAndicpOworICAgIGdsLnVuaWZvcm0zZnYodkxvY2F0aW9uLCBpbnB1dCk7CisgICAg
dGVzdFJlbmRlclByZWNpc2lvbihnbCwgc2hhZGVyVHlwZSwgJ2Zsb2F0JywgcHJlY2lzaW9uLCBl
eHBlY3RlZCwgbXNnKTsKKyAgfQorCisgIHsKKyAgICBjb25zdCB2cyA9IGAKKyAgICBhdHRyaWJ1
dGUgdmVjNCBwb3NpdGlvbjsKKyAgICB1bmlmb3JtICR7cHJlY2lzaW9ufSB2ZWMzIHY7CisgICAg
dmFyeWluZyAke3ByZWNpc2lvbn0gdmVjNCB2X3Jlc3VsdDsKKyAgICB2b2lkIG1haW4oKSB7Cisg
ICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgZ2xfUG9pbnRTaXplID0gMS4wOwor
ICAgICAgdl9yZXN1bHQgPSB2ZWM0KG5vcm1hbGl6ZSh2KSAqIDAuNSArIDAuNSwgMSk7CisgICAg
fQorICAgIGA7CisKKyAgICBjb25zdCBmcyA9IGAKKyAgICBwcmVjaXNpb24gJHtwcmVjaXNpb259
IGZsb2F0OworICAgIHZhcnlpbmcgJHtwcmVjaXNpb259IHZlYzQgdl9yZXN1bHQ7CisgICAgdm9p
ZCBtYWluKCkgeworICAgICAgZ2xfRnJhZ0NvbG9yID0gdl9yZXN1bHQ7CisgICAgfQorICAgIGA7
CisKKyAgICB0ZXN0KGdsLCBbdnMsIGZzXSwgZ2wuVkVSVEVYX1NIQURFUik7CisgIH0KKworICB7
CisgICAgY29uc3QgdnMgPSBgCisgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisgICAgdm9p
ZCBtYWluKCkgeworICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgIGdsX1BvaW50
U2l6ZSA9IDEuMDsKKyAgICB9CisgICAgYDsKKworICAgIGNvbnN0IGZzID0gYAorICAgIHByZWNp
c2lvbiAke3ByZWNpc2lvbn0gZmxvYXQ7CisgICAgdW5pZm9ybSAke3ByZWNpc2lvbn0gdmVjMyB2
OworICAgIHZvaWQgbWFpbigpIHsKKyAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobm9ybWFsaXpl
KHYpICogMC41ICsgMC41LCAxKTsKKyAgICB9CisgICAgYDsKKworICAgIHRlc3QoZ2wsIFt2cywg
ZnNdLCBnbC5GUkFHTUVOVF9TSEFERVIpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW5kZXJQ
cmVjaXNpb25JbnQoZ2wsIHByZWNpc2lvbkVudW0sIHByZWNpc2lvbikgeworICBmdW5jdGlvbiB0
ZXN0KGdsLCBzaGFkZXJQYWlyLCBzaGFkZXJUeXBlKSB7CisgICAgY29uc3QgZm9ybWF0ID0gZ2wu
Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvbkVudW0pOworICAg
IGNvbnN0IHZhbHVlID0gMSA8PCAoZm9ybWF0LnJhbmdlTWF4IC0gMSk7CisKKyAgICBjb25zdCBp
bnB1dCA9IFt2YWx1ZSwgdmFsdWUsIHZhbHVlLCB2YWx1ZV07CisgICAgY29uc3QgZXhwZWN0ZWQg
PSBbMjU1LCAyNTUsIDI1NSwgMjU1XTsKKworICAgIGNvbnN0IG1zZyA9IGAke3d0dS5nbEVudW1U
b1N0cmluZyhnbCwgc2hhZGVyVHlwZSl9OiAke3ByZWNpc2lvbn0gaW50IHByZWNpc2lvbjogJHtm
b3JtYXQucHJlY2lzaW9ufSwgcmFuZ2VNaW46ICR7Zm9ybWF0LnJhbmdlTWlufSwgcmFuZ2VNYXg6
ICR7Zm9ybWF0LnJhbmdlTWF4fWA7CisgICAgY29uc3QgcHJvZ3JhbSA9IHRlc3RSZW5kZXJQcmVj
aXNpb25TZXR1cChnbCwgc2hhZGVyUGFpcik7CisgICAgZ2wudW5pZm9ybTFpKGdsLmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAndicpLCB2YWx1ZSk7CisgICAgZ2wudW5pZm9ybTFmKGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnZicpLCB2YWx1ZSk7CisgICAgdGVzdFJlbmRlclBy
ZWNpc2lvbihnbCwgc2hhZGVyVHlwZSwgJ2ludCcsIHByZWNpc2lvbiwgZXhwZWN0ZWQsIG1zZyk7
CisgIH0KKworICB7CisgICAgY29uc3QgdnMgPSBgCisgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRp
b247CisgICAgdW5pZm9ybSAke3ByZWNpc2lvbn0gaW50IHY7CisgICAgdW5pZm9ybSBoaWdocCBm
bG9hdCBmOworICAgIHZhcnlpbmcgdmVjNCB2X3Jlc3VsdDsKKworICAgIHZvaWQgbWFpbigpIHsK
KyAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICBnbF9Qb2ludFNpemUgPSAxLjA7
CisgICAgICBmbG9hdCBkaWZmID0gYWJzKGZsb2F0KHYpIC0gZik7CisgICAgICBib29sIHBhc3Mg
PSBkaWZmIDwgMS4wOworICAgICAgdl9yZXN1bHQgPSB2ZWM0KHBhc3MpOworICAgIH0KKyAgICBg
OworCisgICAgY29uc3QgZnMgPSBgCisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAg
dmFyeWluZyB2ZWM0IHZfcmVzdWx0OworICAgIHZvaWQgbWFpbigpIHsKKyAgICAgIGdsX0ZyYWdD
b2xvciA9IHZfcmVzdWx0OworICAgIH0KKyAgICBgOworICAgIHRlc3QoZ2wsIFt2cywgZnNdLCBn
bC5WRVJURVhfU0hBREVSKTsKKyAgfQorCisgIHsKKyAgICBjb25zdCB2cyA9IGAKKyAgICBhdHRy
aWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICB2b2lkIG1haW4oKSB7CisgICAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOworICAgICAgZ2xfUG9pbnRTaXplID0gMS4wOworICAgIH0KKyAgICBgOwor
CisgICAgY29uc3QgZnMgPSBgCisgICAgcHJlY2lzaW9uICR7cHJlY2lzaW9ufSBmbG9hdDsKKyAg
ICB1bmlmb3JtICR7cHJlY2lzaW9ufSBpbnQgdjsKKyAgICB1bmlmb3JtIG1lZGl1bXAgZmxvYXQg
ZjsKKworICAgIHZvaWQgbWFpbigpIHsKKyAgICAgIG1lZGl1bXAgZmxvYXQgZGlmZiA9IGFicyhm
bG9hdCh2KSAtIGYpOworICAgICAgYm9vbCBwYXNzID0gZGlmZiA8IDEuMDsKKyAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQocGFzcyk7CisgICAgfQorICAgIGA7CisKKyAgICB0ZXN0KGdsLCBbdnMs
IGZzXSwgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgfQorfQorCisvLyBiZWNhdXNlIHRoZSBjYW52
YXMgY2FuIGJlIDE2IGJpdCBJSVJDCitjb25zdCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOwor
Citjb25zdCB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAx
LCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoCisgICAgZ2wuRlJBTUVCVUZGRVIsCisgICAgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsCisgICAgZ2wuVEVYVFVSRV8yRCwKKyAgICB0ZXgsCisgICAgMCk7CisKK2dsLnZpZXdwb3J0
KDAsIDAsIDEsIDEpOworCit7CisgIHRlc3RSZW5kZXJQcmVjaXNpb25GbG9hdChnbCwgZ2wuTE9X
X0ZMT0FULCAnbG93cCcpOworICB0ZXN0UmVuZGVyUHJlY2lzaW9uRmxvYXQoZ2wsIGdsLk1FRElV
TV9GTE9BVCwgJ21lZGl1bXAnKTsKKworICBjb25zdCBmb3JtYXQgPSBnbC5nZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRfU0hBREVSLCBnbC5ISUdIX0ZMT0FUKTsKKyAgaWYgKGZv
cm1hdC5wcmVjaXNpb24gIT09IDApIHsKKyAgICB0ZXN0UmVuZGVyUHJlY2lzaW9uRmxvYXQoZ2ws
IGdsLkhJR0hfRkxPQVQsICdoaWdocCcpOworICB9Cit9CisKK3sKKyAgdGVzdFJlbmRlclByZWNp
c2lvbkludChnbCwgZ2wuTE9XX0lOVCwgJ2xvd3AnKTsKKyAgdGVzdFJlbmRlclByZWNpc2lvbklu
dChnbCwgZ2wuTUVESVVNX0lOVCwgJ21lZGl1bXAnKTsKKworICBjb25zdCBmb3JtYXQgPSBnbC5n
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoZ2wuRlJBR01FTlRfU0hBREVSLCBnbC5ISUdIX0lOVCk7
CisgIGlmIChmb3JtYXQucmFuZ2VNYXggIT09IDApIHsKKyAgICB0ZXN0UmVuZGVyUHJlY2lzaW9u
SW50KGdsLCBnbC5ISUdIX0lOVCwgJ2hpZ2hwJyk7CisgIH0KK30KKworZmluaXNoVGVzdCgpOwor
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL3R5cGUt
Y29udmVyc2lvbi10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL3R5cGUtY29udmVyc2lvbi10ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmIwNGYzYmEwMDIzMDFlMzE4ZGNiNDllNTM0NGRmMTMzOGM1NmRhOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL21pc2MvdHlwZS1jb252ZXJzaW9uLXRlc3QuaHRtbApAQCAtMCwwICsxLDE1
MSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7CitkZXNjcmlwdGlvbigiVGVzdHMgY2FsbGluZyBXZWJHTCBBUElzIHdpdGggdmFyaW91
cyB0eXBlcyIpOworCit2YXIgY29udGV4dCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBw
cm9ncmFtID0gd3R1LmxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7Cit2YXIgc2hhZGVyID0g
d3R1LmxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KTsKKworYXNzZXJ0TXNnKHByb2dy
YW0gIT0gbnVsbCwgIlByb2dyYW0gQ29tcGlsZWQiKTsKK2Fzc2VydE1zZyhzaGFkZXIgIT0gbnVs
bCwgIlNoYWRlciBDb21waWxlZCIpOworCit2YXIgbG9jID0gY29udGV4dC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInVfbW9kZWxWaWV3UHJvak1hdHJpeCIpOworYXNzZXJ0TXNnKGxvYyAh
PSBudWxsLCAiZ2V0VW5pZm9ybUxvY2F0aW9uIHN1Y2NlZWRlZCIpOworCit2YXIgYnVmZmVyID0g
Y29udGV4dC5jcmVhdGVCdWZmZXIoKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZ
X0JVRkZFUiwgYnVmZmVyKTsKK3ZhciB0ZXh0dXJlID0gY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7
Citjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgdGV4dHVyZSk7Citjb250
ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKK3ZhciBhcmdzID0gWworICB7IHR5cGU6ICJudW1i
ZXIiLCB2YWx1ZTogMCB9LAorICB7IHR5cGU6ICJudW1iZXIiLCB2YWx1ZTogMiB9LAorICB7IHR5
cGU6ICJzdHJpbmcgdGhhdCBpcyBOYU4iLCB2YWx1ZTogImZvbyIsIH0sCisgIHsgdHlwZTogInN0
cmluZyB0aGF0IGlzIG51bWJlciIsIHZhbHVlOiAiMiIsIH0sCisgIHsgdHlwZTogIm51bGwiLCB2
YWx1ZTogbnVsbCB9LAorICB7IHR5cGU6ICJFbXB0eSBBcnJheSIsIHZhbHVlOiBbXSB9LAorICB7
IHR5cGU6ICJPYmplY3QiLCB2YWx1ZToge30gfSwKKyAgeyB0eXBlOiAiQXJyYXkgb2YgTnVtYmVy
IiwgdmFsdWU6IFsyXSB9LAorICB7IHR5cGU6ICJBcnJheSBvZiBTdHJpbmciLCB2YWx1ZTogWyJm
b28iXSB9LAorICB7IHR5cGU6ICJBcnJheSBvZiBTdHJpbmcgdGhhdCBpcyBudW1iZXIiLCB2YWx1
ZTogWyIwIl0gfSwKKyAgeyB0eXBlOiAiQXJyYXkgb2YgU3RyaW5nIHRoYXQgaXMgbnVtYmVyIiwg
dmFsdWU6IFsiMiJdIH0sCisgIHsgdHlwZTogIlR5cGVkQXJyYXkiLCB2YWx1ZTogbmV3IEZsb2F0
MzJBcnJheSgxKSB9CitdOworCit2YXIgYXJndW1lbnQ7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
YXJncy5sZW5ndGg7ICsraSkgeworICBhcmd1bWVudCA9IGFyZ3NbaV0udmFsdWU7CisgIHZhciBm
dW5jMSA9IHNob3VsZEJlVW5kZWZpbmVkOworICB2YXIgZnVuYzIgPSBzaG91bGRCZU5vbk51bGw7
CisgIGlmIChhcmd1bWVudCA9PSAyKSB7CisgICAgZnVuYzIgPSBzaG91bGRCZU51bGw7CisgIH0K
KyAgdmFyIGZ1bmMzID0gc2hvdWxkQmVOdWxsOworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0
aW5nIHR5cGUgb2YgIiArIGFyZ3NbaV0udHlwZSArICIgOiB2YWx1ZSA9ICIgKyBhcmd1bWVudCk7
CisgIGZ1bmMxKCJjb250ZXh0LmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBhcmd1bWVudCwg
J2ZvbycpIik7CisgIGZ1bmMxKCJjb250ZXh0LmJsZW5kQ29sb3IoYXJndW1lbnQsIGFyZ3VtZW50
LCBhcmd1bWVudCwgYXJndW1lbnQpIik7CisgIGZ1bmMxKCJjb250ZXh0LmJ1ZmZlckRhdGEoY29u
dGV4dC5BUlJBWV9CVUZGRVIsIGFyZ3VtZW50LCBjb250ZXh0LlNUQVRJQ19EUkFXKSIpOworICBm
dW5jMSgiY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQz
MkFycmF5KDEwKSwgY29udGV4dC5TVEFUSUNfRFJBVykiKTsKKyAgZnVuYzEoImNvbnRleHQuYnVm
ZmVyU3ViRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgYXJndW1lbnQsIG5ldyBGbG9hdDMyQXJy
YXkoMikpIik7CisgIGZ1bmMxKCJjb250ZXh0LmNsZWFyKGFyZ3VtZW50KSIpCisgIGZ1bmMxKCJj
b250ZXh0LmNsZWFyQ29sb3IoYXJndW1lbnQsIDAsIDAsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0
LmNsZWFyQ29sb3IoMCwgYXJndW1lbnQsIDAsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNsZWFy
Q29sb3IoMCwgMCwgYXJndW1lbnQsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNsZWFyQ29sb3Io
MCwgMCwgMCwgYXJndW1lbnQpIik7CisgIGZ1bmMxKCJjb250ZXh0LmNsZWFyRGVwdGgoYXJndW1l
bnQpIik7CisgIGZ1bmMxKCJjb250ZXh0LmNsZWFyU3RlbmNpbChhcmd1bWVudCkiKTsKKyAgZnVu
YzEoImNvbnRleHQuY29weVRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCBhcmd1bWVudCwg
Y29udGV4dC5SR0JBLCAwLCAwLCAxLCAxLCAwKSIpOworICBmdW5jMSgiY29udGV4dC5jb3B5VGV4
SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgYXJndW1lbnQsIDAs
IDEsIDEsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNvcHlUZXhJbWFnZTJEKGNvbnRleHQuVEVY
VFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAwLCBhcmd1bWVudCwgMSwgMSwgMCkiKTsKKyAgZnVu
YzEoImNvbnRleHQuY29weVRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCBjb250ZXh0
LlJHQkEsIDAsIDAsIGFyZ3VtZW50LCAxLCAwKSIpOworICBmdW5jMSgiY29udGV4dC5jb3B5VGV4
SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMCwgMCwgMCwgYXJn
dW1lbnQsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNvbnRleHQu
VEVYVFVSRV8yRCwgYXJndW1lbnQsIDAsIDAsIDAsIDAsIDAsIDApIik7CisgIGZ1bmMxKCJjb250
ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgYXJndW1lbnQsIDAs
IDAsIDAsIDAsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNvbnRl
eHQuVEVYVFVSRV8yRCwgMCwgMCwgYXJndW1lbnQsIDAsIDAsIDAsIDApIik7CisgIGZ1bmMxKCJj
b250ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCwgMCwgYXJn
dW1lbnQsIDAsIDAsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNv
bnRleHQuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgYXJndW1lbnQsIDAsIDApIik7CisgIGZ1bmMx
KCJjb250ZXh0LmNvcHlUZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCwgMCwg
MCwgMCwgYXJndW1lbnQsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LmNvcHlUZXhTdWJJbWFnZTJE
KGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMCwgYXJndW1lbnQpIik7CisgIGZ1
bmMxKCJjb250ZXh0LmRlcHRoTWFzayhhcmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRleHQuZGVw
dGhSYW5nZShhcmd1bWVudCwgMSkiKTsKKyAgZnVuYzEoImNvbnRleHQuZGVwdGhSYW5nZSgwLCBh
cmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlBPSU5UUywg
YXJndW1lbnQsIDEpIik7CisgIGZ1bmMxKCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5QT0lO
VFMsIDAsIGFyZ3VtZW50KSIpOworICAvL2Z1bmMxKCJjb250ZXh0LmRyYXdFbGVtZW50cyguLi4p
Iik7CisgIGZ1bmMxKCJjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGFyZ3VtZW50KSIp
OworICBmdW5jMSgiY29udGV4dC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoYXJndW1lbnQpIik7
CisgIGZ1bmMyKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBhcmd1bWVudCkiKTsK
KyAgZnVuYzIoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBhcmd1bWVudCkiKTsK
KyAgZnVuYzMoImNvbnRleHQuZ2V0UGFyYW1ldGVyKGFyZ3VtZW50KSIpOworICBmdW5jMSgiY29u
dGV4dC5saW5lV2lkdGgoYXJndW1lbnQpIik7CisgIGZ1bmMxKCJjb250ZXh0LnBvbHlnb25PZmZz
ZXQoYXJndW1lbnQsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LnBvbHlnb25PZmZzZXQoMCwgYXJn
dW1lbnQpIik7CisgIC8vZnVuYzEoImNvbnRleHQucmVhZFBpeGVscyguLi4pIik7CisgIC8vZnVu
YzEoImNvbnRleHQucmVuZGVyYnVmZmVyU3RvcmFnZSguLi4pIik7CisgIGZ1bmMxKCJjb250ZXh0
LnNhbXBsZUNvdmVyYWdlKGFyZ3VtZW50LCAwKSIpOworICBmdW5jMSgiY29udGV4dC5zYW1wbGVD
b3ZlcmFnZSgwLCBhcmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRleHQuc2Npc3Nvcihhcmd1bWVu
dCwgMCwgMTAsIDEwKSIpOworICBmdW5jMSgiY29udGV4dC5zY2lzc29yKDAsIGFyZ3VtZW50LCAx
MCwgMTApIik7CisgIGZ1bmMxKCJjb250ZXh0LnNjaXNzb3IoMCwgMCwgYXJndW1lbnQsIDEwKSIp
OworICBmdW5jMSgiY29udGV4dC5zY2lzc29yKDAsIDAsIDEwLCBhcmd1bWVudCkiKTsKKyAgZnVu
YzEoImNvbnRleHQuc2hhZGVyU291cmNlKHNoYWRlciwgYXJndW1lbnQpIik7CisgIGZ1bmMxKCJj
b250ZXh0LnN0ZW5jaWxGdW5jKGNvbnRleHQuTkVWRVIsIGFyZ3VtZW50LCAyNTUpIik7CisgIGZ1
bmMxKCJjb250ZXh0LnN0ZW5jaWxGdW5jKGNvbnRleHQuTkVWRVIsIDAsIGFyZ3VtZW50KSIpOwor
ICAvL2Z1bmMxKCJjb250ZXh0LnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMZW51
bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSIpOworICBmdW5jMSgiY29udGV4dC5zdGVu
Y2lsTWFzayhhcmd1bWVudCkiKTsKKyAgLy9mdW5jMSgiY29udGV4dC5zdGVuY2lsTWFza1NlcGFy
YXRlKGNvbnRleHQuRlJPTlQsIGFyZ3VtZW50KTsKKyAgLy9mdW5jMSgiY29udGV4dC50ZXhJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKSIpOworICAvL2Z1bmMxKCJjb250
ZXh0LnRleFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtKSIpOworICAvL2Z1bmMxKCJjb250ZXh0LnRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkiKTsKKyAgLy9mdW5jMSgiY29udGV4dC50ZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKSIpOworICBmdW5jMSgiY29udGV4dC51bmlm
b3JtMWkobG9jLCBhcmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRleHQudW5pZm9ybTJpKGxvYywg
YXJndW1lbnQsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LnVuaWZvcm0yaShsb2MsIDAsIGFyZ3Vt
ZW50KSIpOworICBmdW5jMSgiY29udGV4dC51bmlmb3JtM2kobG9jLCBhcmd1bWVudCwgMCwgMCki
KTsKKyAgZnVuYzEoImNvbnRleHQudW5pZm9ybTNpKGxvYywgMCwgYXJndW1lbnQsIDApIik7Cisg
IGZ1bmMxKCJjb250ZXh0LnVuaWZvcm0zaShsb2MsIDAsIDAsIGFyZ3VtZW50KSIpOworICBmdW5j
MSgiY29udGV4dC51bmlmb3JtNGkobG9jLCBhcmd1bWVudCwgMCwgMCwgMCkiKTsKKyAgZnVuYzEo
ImNvbnRleHQudW5pZm9ybTRpKGxvYywgMCwgYXJndW1lbnQsIDAsIDApIik7CisgIGZ1bmMxKCJj
b250ZXh0LnVuaWZvcm00aShsb2MsIDAsIDAsIGFyZ3VtZW50LCAwKSIpOworICBmdW5jMSgiY29u
dGV4dC51bmlmb3JtNGkobG9jLCAwLCAwLCAwLCBhcmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRl
eHQudW5pZm9ybTFmKGxvYywgYXJndW1lbnQpIik7CisgIGZ1bmMxKCJjb250ZXh0LnVuaWZvcm0y
Zihsb2MsIGFyZ3VtZW50LCAwKSIpOworICBmdW5jMSgiY29udGV4dC51bmlmb3JtMmYobG9jLCAw
LCBhcmd1bWVudCkiKTsKKyAgZnVuYzEoImNvbnRleHQudW5pZm9ybTNmKGxvYywgYXJndW1lbnQs
IDAsIDApIik7CisgIGZ1bmMxKCJjb250ZXh0LnVuaWZvcm0zZihsb2MsIDAsIGFyZ3VtZW50LCAw
KSIpOworICBmdW5jMSgiY29udGV4dC51bmlmb3JtM2YobG9jLCAwLCAwLCBhcmd1bWVudCkiKTsK
KyAgZnVuYzEoImNvbnRleHQudW5pZm9ybTRmKGxvYywgYXJndW1lbnQsIDAsIDAsIDApIik7Cisg
IGZ1bmMxKCJjb250ZXh0LnVuaWZvcm00Zihsb2MsIDAsIGFyZ3VtZW50LCAwLCAwKSIpOworICBm
dW5jMSgiY29udGV4dC51bmlmb3JtNGYobG9jLCAwLCAwLCBhcmd1bWVudCwgMCkiKTsKKyAgZnVu
YzEoImNvbnRleHQudW5pZm9ybTRmKGxvYywgMCwgMCwgMCwgYXJndW1lbnQpIik7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy91bmluaXRpYWxp
emVkLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGY5MzVkZDFiZGFkYTJmOWM3NWRjNWE5MzE0ZjFk
NGZhMjc4ZWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbWlzYy91bmluaXRpYWxpemVkLXRlc3QuaHRt
bApAQCAtMCwwICsxLDI2MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIFVuaW5pdGlhbGl6ZWQgR0wgUmVzb3VyY2VzIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdo
dD0iMiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJU
ZXN0cyB0byBjaGVjayB1c2VyIGNvZGUgY2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIGRhdGEg
ZnJvbSBHTCByZXNvdXJjZXMuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOworaWYgKCFnbCkKKyAgdGVzdEZhaWxl
ZCgiQ29udGV4dCBjcmVhdGVkLiIpOworZWxzZQorICB0ZXN0UGFzc2VkKCJDb250ZXh0IGNyZWF0
ZWQuIik7CisKK2Z1bmN0aW9uIHNldHVwVGV4dHVyZSh0ZXhXaWR0aCwgdGV4SGVpZ2h0KSB7Cisg
ICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKKworICAgIC8vIHRoaXMgY2FuIGJlIHF1aXRlIHVuZGV0ZXJtaW5pc3Rp
YyBzbyB0byBpbXByb3ZlIG9kZHMgb2Ygc2VlaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB3cml0ZSBi
aXRzCisgICAgLy8gaW50byB0ZXggdGhlbiBkZWxldGUgdGV4dHVyZSB0aGVuIHJlLWNyZWF0ZSBv
bmUgd2l0aCBzYW1lIGNoYXJhY3RlcmlzdGljcyAoZHJpdmVyIHdpbGwgbGlrZWx5IHJldXNlIG1l
bSkKKyAgICAvLyB3aXRoIHRoaXMgdHJpY2sgb24gcjU5MDQ2IFdlYktpdC9PU1ggSSBnZXQgRkFJ
TCAxMDAlIG9mIHRoZSB0aW1lIGluc3RlYWQgb2YgfjE1JSBvZiB0aGUgdGltZS4KKworICAgIHZh
ciBiYWREYXRhID0gbmV3IFVpbnQ4QXJyYXkodGV4V2lkdGggKiB0ZXhIZWlnaHQgKiA0KTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGJhZERhdGEubGVuZ3RoOyArK2kpCisgICAgICAgIGJhZERh
dGFbaV0gPSBpICUgMjU1OworCisgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAwLCAwLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBi
YWREYXRhKTsKKyAgICBnbC5maW5pc2goKTsgLy8gbWFrZSBzdXJlIGl0IGhhcyBiZWVuIHVwbG9h
ZGVkCisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsLmZpbmlzaCgpOyAv
LyBtYWtlIHN1cmUgaXQgaGFzIGJlZW4gZGVsZXRlZAorCisgICAgdmFyIHRleHR1cmUgPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTm9uWmVyb1BpeGVs
cyh0ZXh0dXJlLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBza2lwWCwgc2tpcFksIHNraXBXaWR0aCwg
c2tpcEhlaWdodCwgc2tpcFIsIHNraXBHLCBza2lwQiwgc2tpcEEpIHsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICB2YXIgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisgICAgc2hvdWxkQmUoImdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBM
RVRFIik7CisKKyAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHRleFdpZHRoICogdGV4SGVp
Z2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBkYXRhKTsKKworICAgIHZhciBrID0gMDsKKyAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IHRleEhlaWdodDsgKyt5KSB7CisgICAgICAgIGZvciAodmFyIHgg
PSAwOyB4IDwgdGV4V2lkdGg7ICsreCkgeworICAgICAgICAgICAgdmFyIGluZGV4ID0gKHkgKiB0
ZXhXaWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIGlmICh4ID49IHNraXBYICYmIHggPCBza2lw
WCArIHNraXBXaWR0aCAmJiB5ID49IHNraXBZICYmIHkgPCBza2lwWSArIHNraXBIZWlnaHQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YVtpbmRleF0gIT0gc2tpcFIgfHwgZGF0YVtpbmRleCAr
IDFdICE9IHNraXBHIHx8IGRhdGFbaW5kZXggKyAyXSAhPSBza2lwQiB8fCBkYXRhW2luZGV4ICsg
M10gIT0gc2tpcEEpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgibm9uLXplcm8g
cGl4ZWwgdmFsdWVzIGFyZSB3cm9uZyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YVtpbmRleCArIGldICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICBrKys7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmIChrKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIkZvdW5kICIgKyBrICsgIiBub24temVybyBieXRlcyIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBkYXRhIGluaXRpYWxpemVkIik7
CisgICAgfQorfQorCit2YXIgd2lkdGggPSA1MTI7Cit2YXIgaGVpZ2h0ID0gNTEyOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiUmVhZGluZyBhbiB1bmluaXRpYWxpemVkIHRleHR1cmUgKHRleEltYWdl
MkQpIHNob3VsZCBzdWNjZWVkIHdpdGggYWxsIGJ5dGVzIHNldCB0byAwLiIpOworCit2YXIgdGV4
ID0gc2V0dXBUZXh0dXJlKHdpZHRoLCBoZWlnaHQpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKK2NoZWNrTm9uWmVyb1BpeGVscyh0ZXgsIHdpZHRoLCBoZWlnaHQsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApOworZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworZ2wuZmluaXNoKCk7
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJSZWFkaW5nIGEgcGFydGlhbGx5IGluaXRpYWxpemVkIHRleHR1cmUgKHRleEltYWdlMkQp
IHNob3VsZCBzdWNjZWVkIHdpdGggYWxsIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgc2V0IHRvIDAgYW5k
IGluaXRpYWxpemVkIGJ5dGVzIHVudG91Y2hlZC4iKTsKKwordmFyIHRleCA9IHNldHVwVGV4dHVy
ZSh3aWR0aCwgaGVpZ2h0KTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7Cit2
YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KDQpOwordmFyIHIgPSAxMDg7Cit2YXIgZyA9IDcyOwor
dmFyIGIgPSAzNjsKK3ZhciBhID0gOTsKK2RhdGFbMF0gPSByOworZGF0YVsxXSA9IGc7CitkYXRh
WzJdID0gYjsKK2RhdGFbM10gPSBhOworZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCB3aWR0aC8yLCBoZWlnaHQvMiwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZGF0
YSk7CitjaGVja05vblplcm9QaXhlbHModGV4LCB3aWR0aCwgaGVpZ2h0LCB3aWR0aC8yLCBoZWln
aHQvMiwgMSwgMSwgciwgZywgYiwgYSk7CitnbC5kZWxldGVUZXh0dXJlKHRleCk7CitnbC5maW5p
c2goKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIp
OworZGVidWcoIlJlYWRpbmcgYW4gdW5pbml0aWFsaXplZCBwb3J0aW9uIG9mIGEgdGV4dHVyZSAo
Y29weVRleEltYWdlMkQpIHNob3VsZCBzdWNjZWVkIHdpdGggYWxsIGJ5dGVzIHNldCB0byAwLiIp
OworCit2YXIgdGV4ID0gc2V0dXBUZXh0dXJlKHdpZHRoLCBoZWlnaHQpOwordmFyIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibyk7Cit2YXIgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CitnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKK3ZhciBmYm9XaWR0aCA9IDE2OwordmFyIGZi
b0hlaWdodCA9IDE2OworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGds
LlJHQkE0LCBmYm9XaWR0aCwgZmJvSGVpZ2h0KTsKK2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBy
Ym8pOworc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CitnbC5jbGVhckNvbG9yKDEuMCwgMC4wLCAw
LjAsIDEuMCk7CitnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK2dsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDApOworY2hlY2tOb25aZXJvUGl4ZWxz
KHRleCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgZmJvV2lkdGgsIGZib0hlaWdodCwgMjU1LCAwLCAw
LCAyNTUpOworZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworZ2wuZmluaXNoKCk7Cit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJSZWFkaW5n
IGFuIHVuaW5pdGlhbGl6ZWQgcG9ydGlvbiBvZiBhIHRleHR1cmUgKGNvcHlUZXhJbWFnZTJEIHdp
dGggbmVnYXRpdmUgeCBhbmQgeSkgc2hvdWxkIHN1Y2NlZWQgd2l0aCBhbGwgYnl0ZXMgc2V0IHRv
IDAuIik7CisKK3ZhciB0ZXggPSBzZXR1cFRleHR1cmUod2lkdGgsIGhlaWdodCk7Cit2YXIgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKK3ZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK2dsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pOwordmFyIGZib1dpZHRoID0gMTY7Cit2
YXIgZmJvSGVpZ2h0ID0gMTY7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkdCQTQsIGZib1dpZHRoLCBmYm9IZWlnaHQpOworZ2wuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZG
RVIsIHJibyk7CitzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJV
RkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKK2dsLmNsZWFyQ29sb3IoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOword3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwordmFyIHggPSAtODsKK3ZhciB5ID0gLTg7Citn
bC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LCAwKTsKK2NoZWNrTm9uWmVyb1BpeGVscyh0ZXgsIHdpZHRoLCBoZWlnaHQsIC14LCAt
eSwgZmJvV2lkdGgsIGZib0hlaWdodCwgMjU1LCAwLCAwLCAyNTUpOworZ2wuZGVsZXRlVGV4dHVy
ZSh0ZXgpOworZ2wuZmluaXNoKCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
Uik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJSZWFkaW5nIGFuIHVuaW5pdGlhbGl6ZWQgcG9ydGlv
biBvZiBhIHRleHR1cmUgKGNvcHlUZXhJbWFnZTJEIGZyb20gV2ViR0wgaW50ZXJuYWwgZmJvKSBz
aG91bGQgc3VjY2VlZCB3aXRoIGFsbCBieXRlcyBzZXQgdG8gMC4iKTsKKwordmFyIHRleCA9IHNl
dHVwVGV4dHVyZSh3aWR0aCwgaGVpZ2h0KTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgbnVsbCk7CitnbC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDAuMCk7CitnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SKTsKK2dsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIDApOworY2hlY2tOb25aZXJvUGl4ZWxzKHRleCwgd2lkdGgsIGhlaWdo
dCwgMCwgMCwgZ2wuY2FudmFzLndpZHRoLCBnbC5jYW52YXMuaGVpZ2h0LCAwLCAyNTUsIDAsIDAp
OworZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworZ2wuZmluaXNoKCk7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJSZWFkaW5nIGFuIHVu
aW5pdGlhbGl6ZWQgcG9ydGlvbiBvZiBhIHRleHR1cmUgKGNvcHlUZXhTdWJJbWFnZTJEKSBzaG91
bGQgc3VjY2VlZCB3aXRoIGFsbCBieXRlcyBzZXQgdG8gMC4iKTsKKwordmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CitnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOwordmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7Cit2YXIgcmJvID0gZ2wuY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsK
K3ZhciBmYm9XaWR0aCA9IDE2OwordmFyIGZib0hlaWdodCA9IDE2OworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCBmYm9XaWR0aCwgZmJvSGVpZ2h0KTsK
K2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYm8pOworc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7
CitnbC5jbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CitnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK2dsLmNv
cHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIHdpZHRoLCBoZWln
aHQpOworY2hlY2tOb25aZXJvUGl4ZWxzKHRleCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgZmJvV2lk
dGgsIGZib0hlaWdodCwgMjU1LCAwLCAwLCAyNTUpOworZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOwor
Z2wuZmluaXNoKCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJSZWFkaW5nIGFuIHVuaW5pdGlhbGl6ZWQgcG9ydGlvbiBvZiBhIHRl
eHR1cmUgKGNvcHlUZXhTdWJJbWFnZTJEIHdpdGggbmVnYXRpdmUgeCBhbmQgeSkgc2hvdWxkIHN1
Y2NlZWQgd2l0aCBhbGwgYnl0ZXMgc2V0IHRvIDAuIik7CisKK3ZhciB0ZXggPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKK3ZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwordmFyIHJibyA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJibyk7Cit2YXIg
ZmJvV2lkdGggPSAxNjsKK3ZhciBmYm9IZWlnaHQgPSAxNjsKK2dsLnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgZmJvV2lkdGgsIGZib0hlaWdodCk7CitnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKK3Nob3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworZ2wu
Y2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Cit2YXIgeCA9IC04
OwordmFyIHkgPSAtODsKK2dsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAs
IDAsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworY2hlY2tOb25aZXJvUGl4ZWxzKHRleCwgd2lkdGgs
IGhlaWdodCwgLXgsIC15LCBmYm9XaWR0aCwgZmJvSGVpZ2h0LCAyNTUsIDAsIDAsIDI1NSk7Citn
bC5kZWxldGVUZXh0dXJlKHRleCk7CitnbC5maW5pc2goKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOworZGVidWcoIlJlYWRpbmcgYW4gdW5pbml0
aWFsaXplZCBwb3J0aW9uIG9mIGEgdGV4dHVyZSAoY29weVRleFN1YkltYWdlMkQgZnJvbSBXZWJH
TCBpbnRlcm5hbCBmYm8pIHNob3VsZCBzdWNjZWVkIHdpdGggYWxsIGJ5dGVzIHNldCB0byAwLiIp
OworCit2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4KTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwg
d2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIG51bGwpOworZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAwLjApOwor
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUik7CitnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAw
LCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKK2NoZWNrTm9uWmVyb1BpeGVscyh0ZXgsIHdpZHRoLCBo
ZWlnaHQsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgMCwgMjU1LCAwLCAwKTsK
K2dsLmRlbGV0ZVRleHR1cmUodGV4KTsKK2dsLmZpbmlzaCgpOword3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IpOworCisvL1RPRE86IHVuaW5pdGlhbGl6ZWQgdmVydGV4IGFycmF5
IGJ1ZmZlcgorLy9UT0RPOiB1bmluaXRpYWxpemVkIHZlcnRleCBlbGVtZW50cyBidWZmZXIKKy8v
VE9ETzogdW5pbml0aWFsaXplZCBmcmFtZWJ1ZmZlcj8gKGltcGxlbWVudGF0aW9ucyB3b3VsZCBu
ZWVkIHRvIGRvIGEgR0wgY2xlYXIgYXQgZmlyc3QgYmluZGluZz8pCisvL1RPRE86IHVuaW5pdGlh
bGl6ZWQgcmVuZGVyYnVmZmVyPyAoaW1wbGVtZW50YXRpb25zIHdvdWxkIG5lZWQgdG8gZG8gYSBH
TCBjbGVhciBhdCBmaXJzdCBiaW5kaW5nPykKKy8vVE9ETzogdW5pbml0aWFsaXplZCB1bmlmb3Jt
IGFycmF5cz8KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL3dlYmdsLXNwZWNpZmljLXN0
ZW5jaWwtc2V0dGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2Mvd2ViZ2wtc3BlY2lmaWMtc3RlbmNpbC1zZXR0aW5n
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3MGExMDdkYzllODQyMmZjYWQ2NmZhNDhiNjc4NmRhNGY5ZmM2
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9taXNjL3dlYmdsLXNwZWNpZmljLXN0ZW5jaWwtc2V0dGlu
Z3MuaHRtbApAQCAtMCwwICsxLDI5OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgc3RlbmNpbCBtYXNrL2Z1bmMgZnJvbnQtc3Rh
dGUtYmFjay1zdGF0ZSBlcXVhbGl0eSB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHN0ZW5jaWwgbWFzay9mdW5jIGFyZSB2YWxpZGF0ZWQgY29ycmVjdGx5
IHdoZW4gdGhlIGZyb250IHN0YXRlIGFuZCBiYWNrIHN0YXRlIGRpZmZlci4iKTsKKwordmFyIGds
OworCitmdW5jdGlvbiBjaGVja0RyYXdFcnJvcihlcnJJZk1pc21hdGNoKSB7CisgICAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZXJySWZNaXNtYXRjaCwgInd0dS5kdW1teVNldFByb2dy
YW1BbmREcmF3Tm90aGluZyhnbCkiKTsKK30KKworZnVuY3Rpb24gc2V0U3RlbmNpbE1hc2sobWFz
aykgeworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wu
c3RlbmNpbE1hc2tTZXBhcmF0ZShnbC5GUk9OVCwgIiArIG1hc2tbMF0gKyAiKSIpOworICAgIHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuc3RlbmNpbE1hc2tT
ZXBhcmF0ZShnbC5CQUNLLCAgIiArIG1hc2tbMV0gKyAiKSIpOworfQorCitmdW5jdGlvbiB0ZXN0
U3RlbmNpbE1hc2tDYXNlKG1hc2ssIGVycm9yKSB7CisgICAgc2V0U3RlbmNpbE1hc2sobWFzayk7
CisgICAgLy8gSWYgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkLCBpdCBzaG91bGQgYmUgYXQgZHJhdyB0
aW1lLgorICAgIGNoZWNrRHJhd0Vycm9yKGVycm9yKTsKK30KKworZnVuY3Rpb24gdGVzdFN0ZW5j
aWxNYXNrKGVycklmTWlzbWF0Y2gpIHsKKyAgICB0ZXN0U3RlbmNpbE1hc2tDYXNlKFswLCAyNTZd
LCBnbC5OT19FUlJPUik7CisgICAgdGVzdFN0ZW5jaWxNYXNrQ2FzZShbMSwgMjU2XSwgZXJySWZN
aXNtYXRjaCk7CisgICAgdGVzdFN0ZW5jaWxNYXNrQ2FzZShbMSwgMjU3XSwgZ2wuTk9fRVJST1Ip
OworICAgIHRlc3RTdGVuY2lsTWFza0Nhc2UoWzEsIDI1OF0sIGVycklmTWlzbWF0Y2gpOworICAg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuc3RlbmNpbE1h
c2soMTAyMykiLCAicmVzZXR0aW5nIHN0ZW5jaWxNYXNrIik7Cit9CisKK2Z1bmN0aW9uIHNldFN0
ZW5jaWxGdW5jKHJlZiwgbWFzaykgeworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLk5PX0VSUk9SLCAiZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZShnbC5GUk9OVCwgZ2wuQUxXQVlT
LCAiICsgcmVmWzBdICsgIiwgIiArIG1hc2tbMF0gKyAiKSIpOworICAgIHd0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZShnbC5C
QUNLLCAgZ2wuQUxXQVlTLCAiICsgcmVmWzFdICsgIiwgIiArIG1hc2tbMV0gKyAiKSIpOworfQor
CitmdW5jdGlvbiB0ZXN0U3RlbmNpbEZ1bmNDYXNlKHJlZiwgbWFzaywgZXJyb3IpIHsKKyAgICBz
ZXRTdGVuY2lsRnVuYyhyZWYsIG1hc2spOworICAgIC8vIElmIGFuIGVycm9yIGlzIGdlbmVyYXRl
ZCwgaXQgc2hvdWxkIGJlIGF0IGRyYXcgdGltZS4KKyAgICBjaGVja0RyYXdFcnJvcihlcnJvcik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTdGVuY2lsRnVuYyhlcnJJZk1pc21hdGNoKSB7CisgICAgdGVz
dFN0ZW5jaWxGdW5jQ2FzZShbIDI1NiwgIDI1N10sIFsxMDIzLCAxMDIzXSwgZ2wuTk9fRVJST1Ip
OworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAyNTYsICAyNTRdLCBbMTAyMywgMTAyM10sIGVy
cklmTWlzbWF0Y2gpOworCisgICAgdGVzdFN0ZW5jaWxGdW5jQ2FzZShbICAtMSwgICAgMF0sIFsx
MDIzLCAxMDIzXSwgZ2wuTk9fRVJST1IpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAgLTEs
ICAyNTRdLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworCisgICAgdGVzdFN0ZW5jaWxG
dW5jQ2FzZShbICAgMCwgICAgMF0sIFsgICAxLCAgMjU3XSwgZ2wuTk9fRVJST1IpOworICAgIHRl
c3RTdGVuY2lsRnVuY0Nhc2UoWyAgIDAsICAgIDBdLCBbICAgMSwgIDI1OF0sIGVycklmTWlzbWF0
Y2gpOworCisgICAgdGVzdFN0ZW5jaWxGdW5jQ2FzZShbICAgMSwgICAgMV0sIFsxMDI0LCAyMDQ4
XSwgZ2wuTk9fRVJST1IpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAgIDEsICAgIDFdLCBb
MjA0OCwgMTAyNF0sIGdsLk5PX0VSUk9SKTsKKworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAg
LTEsICAgLTFdLCBbMTAyMywgMTAyM10sIGdsLk5PX0VSUk9SKTsKKyAgICB0ZXN0U3RlbmNpbEZ1
bmNDYXNlKFsgIC0xLCAgICAwXSwgWzEwMjMsIDEwMjNdLCBnbC5OT19FUlJPUik7CisgICAgdGVz
dFN0ZW5jaWxGdW5jQ2FzZShbICAgMCwgICAtMV0sIFsxMDIzLCAxMDIzXSwgZ2wuTk9fRVJST1Ip
OworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAgIDAsICAgIDBdLCBbMTAyMywgMTAyM10sIGds
Lk5PX0VSUk9SKTsKKworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAgLTEsICAyNTVdLCBbMTAy
MywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAgIDAs
ICAyNTZdLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworICAgIHRlc3RTdGVuY2lsRnVu
Y0Nhc2UoWyAgIDAsIDEwMjRdLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworICAgIHRl
c3RTdGVuY2lsRnVuY0Nhc2UoWyAgIDEsICAyNTddLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0
Y2gpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAyNTUsICAgLTFdLCBbMTAyMywgMTAyM10s
IGVycklmTWlzbWF0Y2gpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWyAyNTYsICAgIDBdLCBb
MTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWzEw
MjQsICAgIDBdLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworICAgIHRlc3RTdGVuY2ls
RnVuY0Nhc2UoWyAyNTcsICAgIDFdLCBbMTAyMywgMTAyM10sIGVycklmTWlzbWF0Y2gpOworCisg
ICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5zdGVuY2ls
RnVuYyhnbC5BTFdBWVMsIDAsIDEwMjMpIiwgInJlc2V0dGluZyBzdGVuY2lsRnVuYyIpOworfQor
CisvLworLy8gVGVzdHMgb2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKKy8vCisKK2RlYnVnKCIi
KTsKKworZGVidWcoIlRlc3RpbmcgZGVmYXVsdCBmcmFtZWJ1ZmZlciB3aXRoIHsgc3RlbmNpbDog
dHJ1ZSB9Iik7CitnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB7IHN0ZW5jaWw6
IHRydWUgfSk7Cit7CisgICAgZ2wuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgdGVzdFN0
ZW5jaWxNYXNrQ2FzZShbMSwgMjU2XSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHRlc3RT
dGVuY2lsRnVuY0Nhc2UoWzI1NiwgMF0sIFsxMDIzLCAxMDIzXSwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCitkZWJ1ZygiVGVzdGluZyBkZWZhdWx0IGZyYW1lYnVmZmVyIHdpdGggeyBzdGVu
Y2lsOiBmYWxzZSB9Iik7CitnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB7IHN0
ZW5jaWw6IGZhbHNlIH0pOworeworICAgIC8vIHdpdGggeyBzdGVuY2lsOiBmYWxzZSB9CisgICAg
Z2wuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgdGVzdFN0ZW5jaWxNYXNrQ2FzZShbMSwg
MjU2XSwgZ2wuTk9fRVJST1IpOworICAgIHRlc3RTdGVuY2lsRnVuY0Nhc2UoWzI1NiwgMF0sIFsx
MDIzLCAxMDIzXSwgZ2wuTk9fRVJST1IpOworfQorLy8gKGNvbnRpbnVlIHVzaW5nIHRoaXMgR0wg
Y29udGV4dCBmb3IgdGhlIG90aGVyIHRlc3RzKQorCisvLworLy8gVGVzdHMgd2l0aCBhIGZyYW1l
YnVmZmVyIG9iamVjdAorLy8KKworY29uc3QgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwor
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7Citjb25zdCBjb2xvclJCID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgY29sb3JSQik7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwg
Z2wuUkdCQTQsIDEsIDEpOworZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUkIpOworCit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImluaXRpYWwgZnJhbWVidWZmZXIg
c2V0dXAiKQorCitmdW5jdGlvbiBydW5XaXRoU3RlbmNpbFNldHRpbmdzKGhhdmVEZXB0aEJ1ZmZl
ciwgaGF2ZVN0ZW5jaWxCdWZmZXIsIGVuYWJsZVN0ZW5jaWxUZXN0LCBmbikgeworICAgIGxldCBy
Ym8gPSBudWxsOworICAgIGxldCBhdHRhY2htZW50OworICAgIGlmIChoYXZlRGVwdGhCdWZmZXIg
fHwgaGF2ZVN0ZW5jaWxCdWZmZXIpIHsKKyAgICAgICAgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVm
ZmVyKCk7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8p
OworCisgICAgICAgIGxldCBpbnRlcm5hbGZvcm1hdDsKKyAgICAgICAgaWYgKGhhdmVEZXB0aEJ1
ZmZlciAmJiBoYXZlU3RlbmNpbEJ1ZmZlcikgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBnbC5ERVBUSF9TVEVOQ0lMOworICAgICAgICAgICAgYXR0YWNobWVudCA9IGdsLkRFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVDsKKyAgICAgICAgfSBlbHNlIGlmIChoYXZlRGVwdGhCdWZmZXIpIHsK
KyAgICAgICAgICAgIGludGVybmFsZm9ybWF0ID0gZ2wuREVQVEhfQ09NUE9ORU5UMTY7CisgICAg
ICAgICAgICBhdHRhY2htZW50ID0gZ2wuREVQVEhfQVRUQUNITUVOVDsKKyAgICAgICAgfSBlbHNl
IGlmIChoYXZlU3RlbmNpbEJ1ZmZlcikgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBn
bC5TVEVOQ0lMX0lOREVYODsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBnbC5TVEVOQ0lMX0FU
VEFDSE1FTlQ7CisgICAgICAgIH0KKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5S
RU5ERVJCVUZGRVIsIGludGVybmFsZm9ybWF0LCAxLCAxKTsKKyAgICAgICAgZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZF
UiwgcmJvKTsKKyAgICB9CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkZXB0aC9zdGVuY2lsIHJlbmRlcmJ1ZmZl
ciBzZXR1cCIpCisKKyAgICBpZiAoZW5hYmxlU3RlbmNpbFRlc3QpIHsKKyAgICAgICAgZ2wuZW5h
YmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2wuZGlzYWJsZShn
bC5TVEVOQ0lMX1RFU1QpOworICAgIH0KKworICAgIGZuKCk7CisKKyAgICBpZiAocmJvKSB7Cisg
ICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2ht
ZW50LCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihy
Ym8pOworICAgIH0KKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
ZGVwdGgvc3RlbmNpbCByZW5kZXJidWZmZXIgY2xlYW51cCIpCit9CisKK2Z1bmN0aW9uIHRlc3RT
dGVuY2lsU2V0dGluZ3MoaGF2ZURlcHRoQnVmZmVyLCBoYXZlU3RlbmNpbEJ1ZmZlciwgZW5hYmxl
U3RlbmNpbFRlc3QsIGVycklmTWlzbWF0Y2gpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IldpdGggZGVwdGhidWZmZXI9IiArIGhhdmVEZXB0aEJ1ZmZlciArCisgICAgICAgICAgICAiLCBz
dGVuY2lsYnVmZmVyPSIgKyBoYXZlU3RlbmNpbEJ1ZmZlciArCisgICAgICAgICAgICAiLCBzdGVu
Y2lsVGVzdD0iICsgZW5hYmxlU3RlbmNpbFRlc3QgKworICAgICAgICAgICAgIiwgZXhwZWN0aW5n
IGVycm9yPSIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGVycklmTWlzbWF0Y2gpICsKKyAgICAg
ICAgICAgICIgZm9yIG1pc21hdGNoaW5nIG1hc2sgb3IgZnVuYyBzZXR0aW5ncy4iKTsKKworICAg
IHJ1bldpdGhTdGVuY2lsU2V0dGluZ3MoaGF2ZURlcHRoQnVmZmVyLCBoYXZlU3RlbmNpbEJ1ZmZl
ciwgZW5hYmxlU3RlbmNpbFRlc3QsICgpID0+IHsKKyAgICAgICAgLy8gRXJyb3JzIHNob3VsZCBi
ZSB0aGUgc2FtZSBmb3IgYm90aCBtYXNrIGFuZCBmdW5jLCBiZWNhdXNlIHN0ZW5jaWwgdGVzdAor
ICAgICAgICAvLyBhbmQgc3RlbmNpbCB3cml0ZSBhcmUgYWx3YXlzIGVuYWJsZWQvZGlzYWJsZWQg
aW4gdGFuZGVtLgorICAgICAgICB0ZXN0U3RlbmNpbE1hc2soZXJySWZNaXNtYXRjaCk7CisgICAg
ICAgIHRlc3RTdGVuY2lsRnVuYyhlcnJJZk1pc21hdGNoKTsKKyAgICB9KTsKK30KKworZGVidWco
IiIpOworZGVidWcoIkJhc2UgY2FzZSBjaGVja3M6Iik7Cit0ZXN0U3RlbmNpbE1hc2tDYXNlKFsw
LCAwXSwgZ2wuTk9fRVJST1IpOwordGVzdFN0ZW5jaWxGdW5jQ2FzZShbMCwgMF0sIFsxMDIzLCAx
MDIzXSwgZ2wuTk9fRVJST1IpOworCisvLyAgICAgICAgICAgICAgICAgIGhhdmVEZXB0aEJ1ZmZl
cgorLy8gICAgICAgICAgICAgICAgICB8ICAgICAgaGF2ZVN0ZW5jaWxCdWZmZXIKKy8vICAgICAg
ICAgICAgICAgICAgfCAgICAgIHwgICAgICBlbmFibGVTdGVuY2lsVGVzdAorLy8gICAgICAgICAg
ICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICBlcnJJZk1pc21hdGNoCit0ZXN0U3RlbmNpbFNl
dHRpbmdzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGdsLk5PX0VSUk9SKTsKK3Rlc3RTdGVuY2lsU2V0
dGluZ3MoIHRydWUsIGZhbHNlLCBmYWxzZSwgZ2wuTk9fRVJST1IpOwordGVzdFN0ZW5jaWxTZXR0
aW5ncyhmYWxzZSwgIHRydWUsIGZhbHNlLCBnbC5OT19FUlJPUik7Cit0ZXN0U3RlbmNpbFNldHRp
bmdzKCB0cnVlLCAgdHJ1ZSwgZmFsc2UsIGdsLk5PX0VSUk9SKTsKKwordGVzdFN0ZW5jaWxTZXR0
aW5ncyhmYWxzZSwgZmFsc2UsICB0cnVlLCBnbC5OT19FUlJPUik7Cit0ZXN0U3RlbmNpbFNldHRp
bmdzKCB0cnVlLCBmYWxzZSwgIHRydWUsIGdsLk5PX0VSUk9SKTsKK3Rlc3RTdGVuY2lsU2V0dGlu
Z3MoZmFsc2UsICB0cnVlLCAgdHJ1ZSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwordGVzdFN0ZW5j
aWxTZXR0aW5ncyggdHJ1ZSwgIHRydWUsICB0cnVlLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisK
Ky8vCisvLyBUZXN0cyB0byBtYWtlIHN1cmUgdGhlIHN0ZW5jaWwgdmFsaWRhdGlvbiBjaGVjaywg
aWYgY2FjaGVkLCBpcyBpbnZhbGlkYXRlZCBjb3JyZWN0bHkuCisvLworCitkZWJ1ZygiIik7CisK
K2RlYnVnKCJTZXR1cCBmb3Igc3RlbmNpbCB2YWxpZGF0aW9uIGNhY2hlIGludmFsaWRhdGlvbiB0
ZXN0cyIpOworc2V0U3RlbmNpbE1hc2soWzEsIDI1OF0pOworc2V0U3RlbmNpbEZ1bmMoWzAsIDI1
Nl0sIFsxMDIzLCAxMDIzXSk7CisKK2RlYnVnKCJUZXN0IHdpdGggZW5hYmxpbmcvZGlzYWJsaW5n
IHN0ZW5jaWwgdGVzdCIpOworcnVuV2l0aFN0ZW5jaWxTZXR0aW5ncyhmYWxzZSwgdHJ1ZSwgZmFs
c2UsICgpID0+IHsKKyAgICBjaGVja0RyYXdFcnJvcihnbC5OT19FUlJPUik7CisgICAgZ2wuZW5h
YmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgY2hlY2tEcmF3RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIGdsLmRpc2FibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICBjaGVja0RyYXdF
cnJvcihnbC5OT19FUlJPUik7Cit9KTsKKworZGVidWcoIlRlc3Qgd2l0aCBzd2FwcGluZyBpbiBh
IG5ldyBGQk8iKTsKK3J1bldpdGhTdGVuY2lsU2V0dGluZ3MoZmFsc2UsIGZhbHNlLCB0cnVlLCAo
KSA9PiB7CisgICAgLy8gbm8gZXJyb3Igd2l0aCBubyBzdGVuY2lsIGJ1ZmZlcgorICAgIGNoZWNr
RHJhd0Vycm9yKGdsLk5PX0VSUk9SKTsKKworICAgIC8vIHN3YXAgaW4gYSBuZXcgRkJPIHdpdGgg
YSBzdGVuY2lsIGJ1ZmZlcgorICAgIGNvbnN0IGZiMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjIpOworICAgIGdsLmJp
bmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvclJCKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgY29sb3JSQik7CisgICAgY29uc3QgcmJvID0gZ2wuY3JlYXRlUmVuZGVy
YnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJibyk7
CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxf
SU5ERVg4LCAxLCAxKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJibyk7CisgICAg
c2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IpOworCisgICAgLy8gdGhpcyBkcmF3IHNob2x1ZCBkZXRlY3QgdGhlIG5ldyBmYm8g
c3RhdGUKKyAgICBjaGVja0RyYXdFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBn
bC5kZWxldGVGcmFtZWJ1ZmZlcihmYjIpOworICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYm8p
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworfSk7CisKK2RlYnVnKCJUZXN0IHdpdGgg
YWRkaW5nIGEgc3RlbmNpbCBhdHRhY2htZW50Iik7CitydW5XaXRoU3RlbmNpbFNldHRpbmdzKGZh
bHNlLCBmYWxzZSwgdHJ1ZSwgKCkgPT4geworICAgIC8vIG5vIGVycm9yIHdpdGggbm8gc3RlbmNp
bCBidWZmZXIKKyAgICBjaGVja0RyYXdFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAvLyBhZGQg
YSBzdGVuY2lsIGF0dGFjaG1lbnQKKyAgICBjb25zdCByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAg
ICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuU1RFTkNJTF9JTkRF
WDgsIDEsIDEpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICBzaG91
bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKKyAgICAvLyB0aGlzIGRyYXcgc2hvbHVkIGRldGVjdCB0aGUgbmV3IGZibyBzdGF0
ZQorICAgIGNoZWNrRHJhd0Vycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsLmRl
bGV0ZVJlbmRlcmJ1ZmZlcihyYm8pCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IpOworfSk7CisKK2RlYnVnKCJUZXN0IHdpdGggcmVhbGxvY2F0aW5nIHRoZSBERVBUSF9T
VEVOQ0lMIGF0dGFjaG1lbnQgZnJvbSBkZXB0aCB0byBkZXB0aCtzdGVuY2lsIik7CitydW5XaXRo
U3RlbmNpbFNldHRpbmdzKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgKCkgPT4geworICAgIC8vIGF0dGFj
aCBhIGRlcHRoIGJ1ZmZlciB0byB0aGUgREVQVEhfU1RFTkNJTCBhdHRhY2htZW50CisgICAgY29u
c3QgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZl
cihnbC5SRU5ERVJCVUZGRVIsIHJibyk7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5S
RU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAxLCAxKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJibyk7CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
QVRUQUNITUVOVCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsK
KworICAgIC8vIHRoaXMgZHJhdyBpcyBpbnZhbGlkLCBidXQgaXQgc3RpbGwgbWlnaHQgdHJpZ2dl
ciBjYWNoaW5nIG9mIHRoZSBzdGVuY2lsIHZhbGlkYXRpb24KKyAgICBjaGVja0RyYXdFcnJvcihn
bC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisKKyAgICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTCwgMSwgMSk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIC8vIHRoaXMgZHJhdyBzaG9s
dWQgZGV0ZWN0IHRoZSBuZXcgZmJvIHN0YXRlCisgICAgY2hlY2tEcmF3RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworCisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJibykKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Cit9KTsKKworZ2wuZGVsZXRlRnJhbWVi
dWZmZXIoZmIpOworZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yUkIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21pc2Mvd2ViZ2wtc3BlY2lmaWMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21pc2Mvd2ViZ2wtc3BlY2lmaWMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNGNkYzhjNzgyMGRmMzE5MTJkMzUyYTYzM2ZhZmRjZWQ3NGZmZDE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvbWlzYy93ZWJnbC1zcGVjaWZpYy5odG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IEdMRVMyIGRpZmZlcmVuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24o
IlRlc3RzIHRoZSBmZXcgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJHTCBhbmQgR0xFUzIiKTsKKwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0
YW5kYXJkUHJvZ3JhbShnbCk7CitnbC51c2VQcm9ncmFtKHByb2dyYW0pOwordmFyIHZlcnRleE9i
amVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IHZlcnRleE9iamVjdCk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2dsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKK3d0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dXAgc2hvdWxkIHN1Y2NlZWQiKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlZlcmlmeSB0aGF0IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBh
bHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZh
Y3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJsZW5kRnVuYyhnbC5DT05TVEFOVF9DT0xP
UiwgZ2wuQ09OU1RBTlRfQUxQSEEpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJsZW5kRnVuYyhnbC5PTkVfTUlOVVNfQ09OU1RBTlRf
Q09MT1IsIGdsLkNPTlNUQU5UX0FMUEhBKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5ibGVuZEZ1bmMoZ2wuQ09OU1RBTlRfQ09MT1Is
IGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmxlbmRGdW5jKGdsLk9ORV9NSU5VU19D
T05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKSIpOword3R1LnNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5ibGVuZEZ1bmMo
Z2wuQ09OU1RBTlRfQUxQSEEsIGdsLkNPTlNUQU5UX0NPTE9SKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5ibGVuZEZ1bmMoZ2wuQ09O
U1RBTlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUikiKTsKK3d0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmxlbmRGdW5jKGds
Lk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwgZ2wuQ09OU1RBTlRfQ09MT1IpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJsZW5kRnVu
YyhnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xP
UikiKTsKKword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJnbC5ibGVuZEZ1bmNTZXBhcmF0ZShnbC5DT05TVEFOVF9DT0xPUiwgZ2wuQ09OU1RBTlRf
QUxQSEEsIGdsLk9ORSwgZ2wuWkVSTykiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuT05FX01JTlVT
X0NPTlNUQU5UX0NPTE9SLCBnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FLCBnbC5aRVJPKSIpOwor
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5i
bGVuZEZ1bmNTZXBhcmF0ZShnbC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5U
X0FMUEhBLCBnbC5PTkUsIGdsLlpFUk8pIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORV9NSU5V
U19DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5PTkUsIGds
LlpFUk8pIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgImdsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLkNPTlNUQU5UX0FMUEhBLCBnbC5DT05TVEFO
VF9DT0xPUiwgZ2wuT05FLCBnbC5aRVJPKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5ibGVuZEZ1bmNTZXBhcmF0ZShnbC5DT05TVEFO
VF9BTFBIQSwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCBnbC5PTkUsIGdsLlpFUk8pIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImds
LmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwgZ2wuQ09OU1RB
TlRfQ09MT1IsIGdsLk9ORSwgZ2wuWkVSTykiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuT05FX01J
TlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsIGdsLk9ORSwg
Z2wuWkVSTykiKTsKKworZGVidWcoIiIpOworZGVidWcoIlZlcmlmeSB0aGF0IGluIGRlcHRoUmFu
Z2Ugek5lYXIgPD0gekZhciIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJnbC5kZXB0aFJhbmdlKDIwLCAxMCkiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlZlcmlmeSB0aGF0ICpMRU5HVEggYXJlIHVuZGVmaW5lZCIpOworc2hvdWxkQmVVbmRl
ZmluZWQoZ2wuSU5GT19MT0dfTEVOR1RIKTsKK3Nob3VsZEJlVW5kZWZpbmVkKGdsLlNIQURFUl9T
T1VSQ0VfTEVOR1RIKTsKK3Nob3VsZEJlVW5kZWZpbmVkKGdsLkFDVElWRV9VTklGT1JNX01BWF9M
RU5HVEgpOworc2hvdWxkQmVVbmRlZmluZWQoZ2wuQUNUSVZFX0FUVFJJQl9NQVhfTEVOR1RIKTsK
K3Nob3VsZEJlVW5kZWZpbmVkKGdsLkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJWZXJpZnkgdGhhdCBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9O
X1dFQkdMIGlzIHN1cHBvcnRlZCIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5VTlBB
Q0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMKSIsICJnbC5CUk9XU0VSX0RFRkFVTFRfV0VC
R0wiKTsKK2dsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VC
R0wsIGdsLk5PTkUpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5VTlBBQ0tfQ09MT1JT
UEFDRV9DT05WRVJTSU9OX1dFQkdMKSIsICJnbC5OT05FIik7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInNldC9nZXQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9X
RUJHTCBzaG91bGQgZ2VuZXJhdGUgbm8gZXJyb3IiKTsKKworZGVidWcoIiIpOworZGVidWcoIlZl
cmlmeSB0aGF0IGRyYXdpbmdCdWZmZXJXaWR0aCBhbmQgZHJhd2luZ0J1ZmZlckhlaWdodHMgYXJl
IGltcGxlbWVudGVkIik7CitzaG91bGRCZVRydWUoImdsLmRyYXdpbmdCdWZmZXJXaWR0aCA+PSAw
ICYmIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQgPj0gMCIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VmVyaWZ5IHRoYXQgYmluZEF0dHJpYkxvY2F0aW9uIHJlamVjdHMgbmFtZXMgc3RhcnQgd2l0aCB3
ZWJnbF8gb3IgX3dlYmdsXyIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMCwgJ3dlYmds
X2EnKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMCwgJ193ZWJnbF9hJykiKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlZlcmlmeSB0aGF0IE5hTiBsaW5lIHdpZHRoIGlzIG5vdCBhY2Nl
cHRlZCIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
ImdsLmxpbmVXaWR0aChOYU4pIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9hbGxfdGVzdHMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvYWxsX3Rlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4OWM3MTZmNGVjMjM1YTJlODYyYjIz
ZTg4ZDFjMjY2NWFlMjQwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvYWxsX3Rlc3RzLmh0bWwK
QEAgLTAsMCArMSwzNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKyAgPHRpdGxlPk9wZW5HTCBFUyAyLjAgJmx0O2NhbnZhcyZndDsgY29udGV4dCB0ZXN0
czwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgaDIgeyBkaXNwbGF5OiBp
bmxpbmU7IGZvbnQtc2l6ZTogMWVtOyBtYXJnaW4tYm90dG9tOiAwLjJlbTsgfQorICAgIGlmcmFt
ZSB7IGRpc3BsYXk6IGlubGluZTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IG92ZXJmbG93OiBo
aWRkZW47fQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvYWRUZXN0KGlkLCB1cmwpIHsKKyAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGlkKS5zcmMgPSB1cmw7CisgICAgfQorICAgIGZ1bmN0aW9uIHNlcUxvYWRl
cigpIHsKKyAgICAgIHZhciBpZnJhbWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lmcmFtZScpOworICAgICAgZm9yICh2YXIgaT0wOyBpPGlmcmFtZXMubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWZyYW1lc1tpXS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGZ1bmN0aW9uKGop
IHsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKChqKzEpKydfbGluaycpOworICAgICAgICAgICAgaWYgKGUp
IGxvYWRUZXN0KGorMSwgZS5ocmVmKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pKGkpLCBmYWxz
ZSk7CisgICAgICB9CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcwX2xp
bmsnKTsKKyAgICAgIGlmIChlKSBsb2FkVGVzdCgwLCBlLmhyZWYpOworICAgIH0KKyAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNlcUxvYWRlcigpIj4KKworICAgIDxkaXY+Cisg
ICAgICA8aWZyYW1lIHNyYz0iY29uZm9ybWFuY2UvYmFkQXJnc0FyaXR5TGVzc1RoYW5BcmdjLmh0
bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9
ImNvbmZvcm1hbmNlL2JhZEFyZ3NBcml0eUxlc3NUaGFuQXJnYy5odG1sIj5jb25mb3JtYW5jZS9i
YWRBcmdzQXJpdHlMZXNzVGhhbkFyZ2MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAg
ICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImNvbmZvcm1hbmNlL2NvbnN0YW50cy5odG1sIiB3
aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJjb25m
b3JtYW5jZS9jb25zdGFudHMuaHRtbCI+Y29uZm9ybWFuY2UvY29uc3RhbnRzLmh0bWw8L2E+PC9o
Mj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJjb25mb3Jt
YW5jZS9mdXp6VGhlQVBJLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgor
ICAgICAgPGgyPjxhIGhyZWY9ImNvbmZvcm1hbmNlL2Z1enpUaGVBUEkuaHRtbCI+Y29uZm9ybWFu
Y2UvZnV6elRoZUFQSS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+Cisg
ICAgICA8aWZyYW1lIHNyYz0iY29uZm9ybWFuY2UvZ2V0Q29udGV4dC5odG1sIiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJjb25mb3JtYW5jZS9n
ZXRDb250ZXh0Lmh0bWwiPmNvbmZvcm1hbmNlL2dldENvbnRleHQuaHRtbDwvYT48L2gyPgorICAg
IDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImNvbmZvcm1hbmNlL21l
dGhvZHMuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+
PGEgaHJlZj0iY29uZm9ybWFuY2UvbWV0aG9kcy5odG1sIj5jb25mb3JtYW5jZS9tZXRob2RzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3Jj
PSJjb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIi
PjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImNvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUEku
aHRtbCI+Y29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+
CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iY29uZm9ybWFuY2UvcXVpY2tDaGVj
a0FQSUJhZEFyZ3MuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAg
ICA8aDI+PGEgaHJlZj0iY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSUJhZEFyZ3MuaHRtbCI+Y29u
Zm9ybWFuY2UvcXVpY2tDaGVja0FQSUJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2Pgor
CisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImNvbmZvcm1hbmNlL3dlYkdMQXJyYXlz
Lmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhy
ZWY9ImNvbmZvcm1hbmNlL3dlYkdMQXJyYXlzLmh0bWwiPmNvbmZvcm1hbmNlL3dlYkdMQXJyYXlz
Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUg
c3JjPSJmdW5jdGlvbnMvYmluZEJ1ZmZlci5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvYmluZEJ1ZmZlci5odG1sIj5m
dW5jdGlvbnMvYmluZEJ1ZmZlci5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxk
aXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL2JpbmRCdWZmZXJCYWRBcmdzLmh0bWwi
IHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1
bmN0aW9ucy9iaW5kQnVmZmVyQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvYmluZEJ1ZmZlckJhZEFy
Z3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFt
ZSBzcmM9ImZ1bmN0aW9ucy9iaW5kRnJhbWVidWZmZXJMZWF2ZU5vblplcm8uaHRtbCIgd2lkdGg9
IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25z
L2JpbmRGcmFtZWJ1ZmZlckxlYXZlTm9uWmVyby5odG1sIj5mdW5jdGlvbnMvYmluZEZyYW1lYnVm
ZmVyTGVhdmVOb25aZXJvLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvYnVmZmVyRGF0YS5odG1sIiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvYnVm
ZmVyRGF0YS5odG1sIj5mdW5jdGlvbnMvYnVmZmVyRGF0YS5odG1sPC9hPjwvaDI+CisgICAgPC9k
aXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL2J1ZmZlckRh
dGFCYWRBcmdzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAg
PGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy9idWZmZXJEYXRhQmFkQXJncy5odG1sIj5mdW5jdGlvbnMv
YnVmZmVyRGF0YUJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2
PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhLmh0bWwiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9u
cy9idWZmZXJTdWJEYXRhLmh0bWwiPmZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhLmh0bWw8L2E+PC9o
Mj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlv
bnMvYnVmZmVyU3ViRGF0YUJhZEFyZ3MuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9p
ZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25zL2J1ZmZlclN1YkRhdGFCYWRBcmdz
Lmh0bWwiPmZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAg
PC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL2NvcHlU
ZXhJbWFnZTJELmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAg
PGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy9jb3B5VGV4SW1hZ2UyRC5odG1sIj5mdW5jdGlvbnMvY29w
eVRleEltYWdlMkQuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAg
ICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy9jb3B5VGV4SW1hZ2UyREJhZEFyZ3MuaHRtbCIgd2lk
dGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rp
b25zL2NvcHlUZXhJbWFnZTJEQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvY29weVRleEltYWdlMkRC
YWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxp
ZnJhbWUgc3JjPSJmdW5jdGlvbnMvY29weVRleFN1YkltYWdlMkQuaHRtbCIgd2lkdGg9IjExMCIg
aGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25zL2NvcHlU
ZXhTdWJJbWFnZTJELmh0bWwiPmZ1bmN0aW9ucy9jb3B5VGV4U3ViSW1hZ2UyRC5odG1sPC9hPjwv
aDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rp
b25zL2NvcHlUZXhTdWJJbWFnZTJEQmFkQXJncy5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQy
Ij48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvY29weVRleFN1YkltYWdl
MkRCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy9jb3B5VGV4U3ViSW1hZ2UyREJhZEFyZ3MuaHRtbDwv
YT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1
bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRBcmdzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIi
PjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRB
cmdzLmh0bWwiPmZ1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvZHJh
d0FycmF5cy5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxo
Mj48YSBocmVmPSJmdW5jdGlvbnMvZHJhd0FycmF5cy5odG1sIj5mdW5jdGlvbnMvZHJhd0FycmF5
cy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1l
IHNyYz0iZnVuY3Rpb25zL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sIiB3aWR0aD0iMTEwIiBo
ZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvZHJhd0Fy
cmF5c091dE9mQm91bmRzLmh0bWwiPmZ1bmN0aW9ucy9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRt
bDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9
ImZ1bmN0aW9ucy9kcmF3RWxlbWVudHMuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9p
ZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25zL2RyYXdFbGVtZW50cy5odG1sIj5m
dW5jdGlvbnMvZHJhd0VsZW1lbnRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvZHJhd0VsZW1lbnRzQmFkQXJncy5o
dG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVm
PSJmdW5jdGlvbnMvZHJhd0VsZW1lbnRzQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvZHJhd0VsZW1l
bnRzQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAg
ICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL2dldEltYWdlRGF0YS5odG1sIiB3aWR0aD0iMTEwIiBo
ZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvZ2V0SW1h
Z2VEYXRhLmh0bWwiPmZ1bmN0aW9ucy9nZXRJbWFnZURhdGEuaHRtbDwvYT48L2gyPgorICAgIDwv
ZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy9nZXRJbWFn
ZURhdGFCYWRBcmdzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAg
ICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy9nZXRJbWFnZURhdGFCYWRBcmdzLmh0bWwiPmZ1bmN0
aW9ucy9nZXRJbWFnZURhdGFCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvaXNUZXN0cy5odG1sIiB3aWR0
aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlv
bnMvaXNUZXN0cy5odG1sIj5mdW5jdGlvbnMvaXNUZXN0cy5odG1sPC9hPjwvaDI+CisgICAgPC9k
aXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL2xpbmtQcm9n
cmFtQmFkQXJncy5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBocmVmPSJmdW5jdGlvbnMvbGlua1Byb2dyYW1CYWRBcmdzLmh0bWwiPmZ1bmN0aW9u
cy9saW5rUHJvZ3JhbUJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8
ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy9yZWFkUGl4ZWxzLmh0bWwiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9u
cy9yZWFkUGl4ZWxzLmh0bWwiPmZ1bmN0aW9ucy9yZWFkUGl4ZWxzLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvcmVh
ZFBpeGVsc0JhZEFyZ3MuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+Cisg
ICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25zL3JlYWRQaXhlbHNCYWRBcmdzLmh0bWwiPmZ1bmN0
aW9ucy9yZWFkUGl4ZWxzQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAg
IDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL3RleEltYWdlMkQuaHRtbCIgd2lk
dGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rp
b25zL3RleEltYWdlMkQuaHRtbCI+ZnVuY3Rpb25zL3RleEltYWdlMkQuaHRtbDwvYT48L2gyPgor
ICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy90
ZXhJbWFnZTJEQmFkQXJncy5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4K
KyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvdGV4SW1hZ2UyREJhZEFyZ3MuaHRtbCI+ZnVu
Y3Rpb25zL3RleEltYWdlMkRCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUwuaHRt
bCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0i
ZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MLmh0bWwiPmZ1bmN0aW9ucy90ZXhJbWFnZTJESFRNTC5o
dG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNy
Yz0iZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MQmFkQXJncy5odG1sIiB3aWR0aD0iMTEwIiBoZWln
aHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvdGV4SW1hZ2Uy
REhUTUxCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy90ZXhJbWFnZTJESFRNTEJhZEFyZ3MuaHRtbDwv
YT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1
bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZy
YW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWwiPmZ1
bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREJhZEFyZ3Mu
aHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJl
Zj0iZnVuY3Rpb25zL3RleFN1YkltYWdlMkRCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy90ZXhTdWJJ
bWFnZTJEQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+Cisg
ICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9u
cy90ZXhTdWJJbWFnZTJESFRNTC5odG1sIj5mdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREhUTUwuaHRt
bDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9
ImZ1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRNTEJhZEFyZ3MuaHRtbCIgd2lkdGg9IjExMCIgaGVp
Z2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25zL3RleFN1Yklt
YWdlMkRIVE1MQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREhUTUxCYWRBcmdz
Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUg
c3JjPSJmdW5jdGlvbnMvdW5pZm9ybU1hdHJpeC5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQy
Ij48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMvdW5pZm9ybU1hdHJpeC5o
dG1sIj5mdW5jdGlvbnMvdW5pZm9ybU1hdHJpeC5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisK
KworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL3VuaWZvcm1NYXRyaXhC
YWRBcmdzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgy
PjxhIGhyZWY9ImZ1bmN0aW9ucy91bmlmb3JtTWF0cml4QmFkQXJncy5odG1sIj5mdW5jdGlvbnMv
dW5pZm9ybU1hdHJpeEJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8
ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy91bmlmb3JtZi5odG1sIiB3aWR0aD0i
MTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVmPSJmdW5jdGlvbnMv
dW5pZm9ybWYuaHRtbCI+ZnVuY3Rpb25zL3VuaWZvcm1mLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rp
dj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJmdW5jdGlvbnMvdW5pZm9ybWZC
YWRBcmdzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgy
PjxhIGhyZWY9ImZ1bmN0aW9ucy91bmlmb3JtZkJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3VuaWZv
cm1mQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAg
ICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL3VuaWZvcm1pLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdo
dD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy91bmlmb3JtaS5o
dG1sIj5mdW5jdGlvbnMvdW5pZm9ybWkuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAg
ICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy91bmlmb3JtaUJhZEFyZ3MuaHRt
bCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0i
ZnVuY3Rpb25zL3VuaWZvcm1pQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdW5pZm9ybWlCYWRBcmdz
Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUg
c3JjPSJmdW5jdGlvbnMvdmVydGV4QXR0cmliLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIi
PjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWIuaHRt
bCI+ZnVuY3Rpb25zL3ZlcnRleEF0dHJpYi5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKwor
ICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0iZnVuY3Rpb25zL3ZlcnRleEF0dHJpYkJhZEFy
Z3MuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEg
aHJlZj0iZnVuY3Rpb25zL3ZlcnRleEF0dHJpYkJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3ZlcnRl
eEF0dHJpYkJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2Pgor
ICAgICAgPGlmcmFtZSBzcmM9ImZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWwiIHdp
ZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9ImZ1bmN0
aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWwiPmZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2lu
dGVyLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJh
bWUgc3JjPSJmdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlckJhZEFyZ3MuaHRtbCIgd2lkdGg9
IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0iZnVuY3Rpb25z
L3ZlcnRleEF0dHJpYlBvaW50ZXJCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQ
b2ludGVyQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+Cisg
ICAgICA8aWZyYW1lIHNyYz0icGVyZm9ybWFuY2UvQ1BVdnNHUFUuaHRtbCIgd2lkdGg9IjExMCIg
aGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0icGVyZm9ybWFuY2UvQ1BV
dnNHUFUuaHRtbCI+cGVyZm9ybWFuY2UvQ1BVdnNHUFUuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2
PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9InBlcmZvcm1hbmNlL2JhbmR3aWR0
aC5odG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBo
cmVmPSJwZXJmb3JtYW5jZS9iYW5kd2lkdGguaHRtbCI+cGVyZm9ybWFuY2UvYmFuZHdpZHRoLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3Jj
PSJwZXJmb3JtYW5jZS9qc0dDUGF1c2UuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9p
ZnJhbWU+CisgICAgICA8aDI+PGEgaHJlZj0icGVyZm9ybWFuY2UvanNHQ1BhdXNlLmh0bWwiPnBl
cmZvcm1hbmNlL2pzR0NQYXVzZS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxk
aXY+CisgICAgICA8aWZyYW1lIHNyYz0icGVyZm9ybWFuY2UvanNNYXRyaXhNdWx0Lmh0bWwiIHdp
ZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9InBlcmZv
cm1hbmNlL2pzTWF0cml4TXVsdC5odG1sIj5wZXJmb3JtYW5jZS9qc01hdHJpeE11bHQuaHRtbDwv
YT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9InBl
cmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwv
aWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9InBlcmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0
bWwiPnBlcmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4K
KworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJnbHNsL2FycmF5T3V0T2ZCb3VuZHMu
aHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaHJl
Zj0iZ2xzbC9hcnJheU91dE9mQm91bmRzLmh0bWwiPmdsc2wvYXJyYXlPdXRPZkJvdW5kcy5odG1s
PC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIHNyYz0i
Z2xzbC9sb25nTG9vcHMuaHRtbCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+Cisg
ICAgICA8aDI+PGEgaHJlZj0iZ2xzbC9sb25nTG9vcHMuaHRtbCI+Z2xzbC9sb25nTG9vcHMuaHRt
bDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBzcmM9
Imdsc2wvdW5pZm9ybU91dE9mQm91bmRzLmh0bWwiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwv
aWZyYW1lPgorICAgICAgPGgyPjxhIGhyZWY9Imdsc2wvdW5pZm9ybU91dE9mQm91bmRzLmh0bWwi
Pmdsc2wvdW5pZm9ybU91dE9mQm91bmRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgc3JjPSJnbHNsL3VudXNlZEF0dHJpYnNVbmlmb3Jtcy5o
dG1sIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBocmVm
PSJnbHNsL3VudXNlZEF0dHJpYnNVbmlmb3Jtcy5odG1sIj5nbHNsL3VudXNlZEF0dHJpYnNVbmlm
b3Jtcy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL21vcmUvYWxsX3Rlc3RzX2xpbmtvbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2FsbF90ZXN0c19saW5r
b25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlYzU2M2IwMjg2ZjY0ZjZjMmFhY2FkYTAwZTNkMTgxZDc0
M2Q0OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2FsbF90ZXN0c19saW5rb25seS5odG1sCkBA
IC0wLDAgKzEsMzc4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisgIDx0aXRsZT5PcGVuR0wgRVMgMi4wICZsdDtjYW52YXMmZ3Q7IGNvbnRleHQgdGVzdHM8
L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGgyIHsgZGlzcGxheTogaW5s
aW5lOyBmb250LXNpemU6IDFlbTsgbWFyZ2luLWJvdHRvbTogMC4yZW07IH0KKyAgICBpZnJhbWUg
eyBkaXNwbGF5OiBpbmxpbmU7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBvdmVyZmxvdzogaGlk
ZGVuO30KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2FkVGVzdChpZCwgdXJsKSB7CisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChpZCkuc3JjID0gdXJsOworICAgIH0KKyAgICBmdW5jdGlvbiBzZXFMb2FkZXIo
KSB7CisgICAgICB2YXIgaWZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdp
ZnJhbWUnKTsKKyAgICAgIGZvciAodmFyIGk9MDsgaTxpZnJhbWVzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmcmFtZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChmdW5jdGlvbihqKSB7
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgoaisxKSsnX2xpbmsnKTsKKyAgICAgICAgICAgIGlmIChlKSBs
b2FkVGVzdChqKzEsIGUuaHJlZik7CisgICAgICAgICAgfQorICAgICAgICB9KShpKSwgZmFsc2Up
OworICAgICAgfQorICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnMF9saW5r
Jyk7CisgICAgICBpZiAoZSkgbG9hZFRlc3QoMCwgZS5ocmVmKTsKKyAgICB9CisgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXFMb2FkZXIoKSI+CisKKyAgICA8ZGl2PgorICAg
ICAgPGlmcmFtZSBpZD0iMCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAg
ICA8aDI+PGEgb25jbGljaz0ibG9hZFRlc3QoMCwgJ2NvbmZvcm1hbmNlL2JhZEFyZ3NBcml0eUxl
c3NUaGFuQXJnYy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJjb25mb3JtYW5jZS9iYWRBcmdz
QXJpdHlMZXNzVGhhbkFyZ2MuaHRtbCI+Y29uZm9ybWFuY2UvYmFkQXJnc0FyaXR5TGVzc1RoYW5B
cmdjLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJh
bWUgaWQ9IjEiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxh
IG9uY2xpY2s9ImxvYWRUZXN0KDEsICdjb25mb3JtYW5jZS9jb25zdGFudHMuaHRtbCcpO3JldHVy
biBmYWxzZSIgaHJlZj0iY29uZm9ybWFuY2UvY29uc3RhbnRzLmh0bWwiPmNvbmZvcm1hbmNlL2Nv
bnN0YW50cy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8
aWZyYW1lIGlkPSIyIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxo
Mj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyLCAnY29uZm9ybWFuY2UvZnV6elRoZUFQSS5odG1sJyk7
cmV0dXJuIGZhbHNlIiBocmVmPSJjb25mb3JtYW5jZS9mdXp6VGhlQVBJLmh0bWwiPmNvbmZvcm1h
bmNlL2Z1enpUaGVBUEkuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2Pgor
ICAgICAgPGlmcmFtZSBpZD0iMyIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+Cisg
ICAgICA8aDI+PGEgb25jbGljaz0ibG9hZFRlc3QoMywgJ2NvbmZvcm1hbmNlL2dldENvbnRleHQu
aHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iY29uZm9ybWFuY2UvZ2V0Q29udGV4dC5odG1sIj5j
b25mb3JtYW5jZS9nZXRDb250ZXh0Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZy
YW1lPgorICAgICAgPGgyPjxhIG9uY2xpY2s9ImxvYWRUZXN0KDQsICdjb25mb3JtYW5jZS9tZXRo
b2RzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImNvbmZvcm1hbmNlL21ldGhvZHMuaHRtbCI+
Y29uZm9ybWFuY2UvbWV0aG9kcy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxk
aXY+CisgICAgICA8aWZyYW1lIGlkPSI1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFt
ZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1LCAnY29uZm9ybWFuY2UvcXVpY2tD
aGVja0FQSS5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJjb25mb3JtYW5jZS9xdWlja0NoZWNr
QVBJLmh0bWwiPmNvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUEkuaHRtbDwvYT48L2gyPgorICAgIDwv
ZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iNiIgd2lkdGg9IjExMCIgaGVp
Z2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgb25jbGljaz0ibG9hZFRlc3QoNiwgJ2Nv
bmZvcm1hbmNlL3F1aWNrQ2hlY2tBUElCYWRBcmdzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9
ImNvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUElCYWRBcmdzLmh0bWwiPmNvbmZvcm1hbmNlL3F1aWNr
Q2hlY2tBUElCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgaWQ9IjciIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgor
ICAgICAgPGgyPjxhIG9uY2xpY2s9ImxvYWRUZXN0KDcsICdjb25mb3JtYW5jZS93ZWJHTEFycmF5
cy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJjb25mb3JtYW5jZS93ZWJHTEFycmF5cy5odG1s
Ij5jb25mb3JtYW5jZS93ZWJHTEFycmF5cy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKwor
ICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSI4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg4LCAnZnVuY3Rpb25zL2Jp
bmRCdWZmZXIuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL2JpbmRCdWZmZXIu
aHRtbCI+ZnVuY3Rpb25zL2JpbmRCdWZmZXIuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisK
KyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iOSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+
PC9pZnJhbWU+CisgICAgICA8aDI+PGEgb25jbGljaz0ibG9hZFRlc3QoOSwgJ2Z1bmN0aW9ucy9i
aW5kQnVmZmVyQmFkQXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvYmlu
ZEJ1ZmZlckJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL2JpbmRCdWZmZXJCYWRBcmdzLmh0bWw8L2E+
PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjEwIiB3
aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJs
b2FkVGVzdCgxMCwgJ2Z1bmN0aW9ucy9iaW5kRnJhbWVidWZmZXJMZWF2ZU5vblplcm8uaHRtbCcp
O3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL2JpbmRGcmFtZWJ1ZmZlckxlYXZlTm9uWmVy
by5odG1sIj5mdW5jdGlvbnMvYmluZEZyYW1lYnVmZmVyTGVhdmVOb25aZXJvLmh0bWw8L2E+PC9o
Mj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjExIiB3aWR0
aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2Fk
VGVzdCgxMSwgJ2Z1bmN0aW9ucy9idWZmZXJEYXRhLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9
ImZ1bmN0aW9ucy9idWZmZXJEYXRhLmh0bWwiPmZ1bmN0aW9ucy9idWZmZXJEYXRhLmh0bWw8L2E+
PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjEyIiB3
aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJs
b2FkVGVzdCgxMiwgJ2Z1bmN0aW9ucy9idWZmZXJEYXRhQmFkQXJncy5odG1sJyk7cmV0dXJuIGZh
bHNlIiBocmVmPSJmdW5jdGlvbnMvYnVmZmVyRGF0YUJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL2J1
ZmZlckRhdGFCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgaWQ9IjEzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4K
KyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgxMywgJ2Z1bmN0aW9ucy9idWZmZXJTdWJE
YXRhLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhLmh0
bWwiPmZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKwor
CisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjE0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQy
Ij48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgxNCwgJ2Z1bmN0aW9u
cy9idWZmZXJTdWJEYXRhQmFkQXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlv
bnMvYnVmZmVyU3ViRGF0YUJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL2J1ZmZlclN1YkRhdGFCYWRB
cmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJh
bWUgaWQ9IjE1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48
YSBvbmNsaWNrPSJsb2FkVGVzdCgxNSwgJ2Z1bmN0aW9ucy9jb3B5VGV4SW1hZ2UyRC5odG1sJyk7
cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvY29weVRleEltYWdlMkQuaHRtbCI+ZnVuY3Rp
b25zL2NvcHlUZXhJbWFnZTJELmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRp
dj4KKyAgICAgIDxpZnJhbWUgaWQ9IjE2IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFt
ZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgxNiwgJ2Z1bmN0aW9ucy9jb3B5VGV4
SW1hZ2UyREJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL2NvcHlU
ZXhJbWFnZTJEQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvY29weVRleEltYWdlMkRCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjE3IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNs
aWNrPSJsb2FkVGVzdCgxNywgJ2Z1bmN0aW9ucy9jb3B5VGV4U3ViSW1hZ2UyRC5odG1sJyk7cmV0
dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvY29weVRleFN1YkltYWdlMkQuaHRtbCI+ZnVuY3Rp
b25zL2NvcHlUZXhTdWJJbWFnZTJELmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjE4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lm
cmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgxOCwgJ2Z1bmN0aW9ucy9jb3B5
VGV4U3ViSW1hZ2UyREJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25z
L2NvcHlUZXhTdWJJbWFnZTJEQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvY29weVRleFN1YkltYWdl
MkRCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjE5IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgxOSwgJ2Z1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRB
cmdzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRB
cmdzLmh0bWwiPmZ1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjIwIiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgy
MCwgJ2Z1bmN0aW9ucy9kcmF3QXJyYXlzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0
aW9ucy9kcmF3QXJyYXlzLmh0bWwiPmZ1bmN0aW9ucy9kcmF3QXJyYXlzLmh0bWw8L2E+PC9oMj4K
KyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjIxIiB3aWR0aD0i
MTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVz
dCgyMSwgJ2Z1bmN0aW9ucy9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbCcpO3JldHVybiBmYWxz
ZSIgaHJlZj0iZnVuY3Rpb25zL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sIj5mdW5jdGlvbnMv
ZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjIyIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lm
cmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyMiwgJ2Z1bmN0aW9ucy9kcmF3
RWxlbWVudHMuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL2RyYXdFbGVtZW50
cy5odG1sIj5mdW5jdGlvbnMvZHJhd0VsZW1lbnRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4K
KworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjIzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9
IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyMywgJ2Z1bmN0
aW9ucy9kcmF3RWxlbWVudHNCYWRBcmdzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0
aW9ucy9kcmF3RWxlbWVudHNCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy9kcmF3RWxlbWVudHNCYWRB
cmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJh
bWUgaWQ9IjI0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48
YSBvbmNsaWNrPSJsb2FkVGVzdCgyNCwgJ2Z1bmN0aW9ucy9nZXRJbWFnZURhdGEuaHRtbCcpO3Jl
dHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL2dldEltYWdlRGF0YS5odG1sIj5mdW5jdGlvbnMv
Z2V0SW1hZ2VEYXRhLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAg
ICAgIDxpZnJhbWUgaWQ9IjI1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAg
ICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyNSwgJ2Z1bmN0aW9ucy9nZXRJbWFnZURhdGFC
YWRBcmdzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy9nZXRJbWFnZURhdGFC
YWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy9nZXRJbWFnZURhdGFCYWRBcmdzLmh0bWw8L2E+PC9oMj4K
KyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjI2IiB3aWR0aD0i
MTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVz
dCgyNiwgJ2Z1bmN0aW9ucy9pc1Rlc3RzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0
aW9ucy9pc1Rlc3RzLmh0bWwiPmZ1bmN0aW9ucy9pc1Rlc3RzLmh0bWw8L2E+PC9oMj4KKyAgICA8
L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjI3IiB3aWR0aD0iMTEwIiBo
ZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyNywg
J2Z1bmN0aW9ucy9saW5rUHJvZ3JhbUJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0i
ZnVuY3Rpb25zL2xpbmtQcm9ncmFtQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvbGlua1Byb2dyYW1C
YWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxp
ZnJhbWUgaWQ9IjI4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxo
Mj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyOCwgJ2Z1bmN0aW9ucy9yZWFkUGl4ZWxzLmh0bWwnKTty
ZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy9yZWFkUGl4ZWxzLmh0bWwiPmZ1bmN0aW9ucy9y
ZWFkUGl4ZWxzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjI5IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgyOSwgJ2Z1bmN0aW9ucy9yZWFkUGl4ZWxzQmFkQXJn
cy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvcmVhZFBpeGVsc0JhZEFyZ3Mu
aHRtbCI+ZnVuY3Rpb25zL3JlYWRQaXhlbHNCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rp
dj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjMwIiB3aWR0aD0iMTEwIiBoZWln
aHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzMCwgJ2Z1
bmN0aW9ucy90ZXhJbWFnZTJELmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy90
ZXhJbWFnZTJELmh0bWwiPmZ1bmN0aW9ucy90ZXhJbWFnZTJELmh0bWw8L2E+PC9oMj4KKyAgICA8
L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjMxIiB3aWR0aD0iMTEwIiBo
ZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzMSwg
J2Z1bmN0aW9ucy90ZXhJbWFnZTJEQmFkQXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJm
dW5jdGlvbnMvdGV4SW1hZ2UyREJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3RleEltYWdlMkRCYWRB
cmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJh
bWUgaWQ9IjMyIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48
YSBvbmNsaWNrPSJsb2FkVGVzdCgzMiwgJ2Z1bmN0aW9ucy90ZXhJbWFnZTJESFRNTC5odG1sJyk7
cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUwuaHRtbCI+ZnVuY3Rp
b25zL3RleEltYWdlMkRIVE1MLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRp
dj4KKyAgICAgIDxpZnJhbWUgaWQ9IjMzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFt
ZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzMywgJ2Z1bmN0aW9ucy90ZXhJbWFn
ZTJESFRNTEJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL3RleElt
YWdlMkRIVE1MQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUxCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjM0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNs
aWNrPSJsb2FkVGVzdCgzNCwgJ2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWwnKTtyZXR1cm4g
ZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWwiPmZ1bmN0aW9ucy90ZXhT
dWJJbWFnZTJELmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjM1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzNSwgJ2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJEQmFk
QXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREJh
ZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3RleFN1YkltYWdlMkRCYWRBcmdzLmh0bWw8L2E+PC9oMj4K
KyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjM2IiB3aWR0aD0i
MTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVz
dCgzNiwgJ2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRNTC5odG1sJyk7cmV0dXJuIGZhbHNlIiBo
cmVmPSJmdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREhUTUwuaHRtbCI+ZnVuY3Rpb25zL3RleFN1Yklt
YWdlMkRIVE1MLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjM3IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzNywgJ2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRN
TEJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL3RleFN1YkltYWdl
MkRIVE1MQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREhUTUxCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjM4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNs
aWNrPSJsb2FkVGVzdCgzOCwgJ2Z1bmN0aW9ucy91bmlmb3JtTWF0cml4Lmh0bWwnKTtyZXR1cm4g
ZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy91bmlmb3JtTWF0cml4Lmh0bWwiPmZ1bmN0aW9ucy91bmlm
b3JtTWF0cml4Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjM5IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCgzOSwgJ2Z1bmN0aW9ucy91bmlmb3JtTWF0cml4QmFk
QXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5jdGlvbnMvdW5pZm9ybU1hdHJpeEJh
ZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3VuaWZvcm1NYXRyaXhCYWRBcmdzLmh0bWw8L2E+PC9oMj4K
KyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQwIiB3aWR0aD0i
MTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVz
dCg0MCwgJ2Z1bmN0aW9ucy91bmlmb3JtZi5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJmdW5j
dGlvbnMvdW5pZm9ybWYuaHRtbCI+ZnVuY3Rpb25zL3VuaWZvcm1mLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQxIiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0
MSwgJ2Z1bmN0aW9ucy91bmlmb3JtZkJhZEFyZ3MuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0i
ZnVuY3Rpb25zL3VuaWZvcm1mQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdW5pZm9ybWZCYWRBcmdz
Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUg
aWQ9IjQyIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBv
bmNsaWNrPSJsb2FkVGVzdCg0MiwgJ2Z1bmN0aW9ucy91bmlmb3JtaS5odG1sJyk7cmV0dXJuIGZh
bHNlIiBocmVmPSJmdW5jdGlvbnMvdW5pZm9ybWkuaHRtbCI+ZnVuY3Rpb25zL3VuaWZvcm1pLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjQzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNs
aWNrPSJsb2FkVGVzdCg0MywgJ2Z1bmN0aW9ucy91bmlmb3JtaUJhZEFyZ3MuaHRtbCcpO3JldHVy
biBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL3VuaWZvcm1pQmFkQXJncy5odG1sIj5mdW5jdGlvbnMv
dW5pZm9ybWlCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgaWQ9IjQ0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4K
KyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0NCwgJ2Z1bmN0aW9ucy92ZXJ0ZXhBdHRy
aWIuaHRtbCcpO3JldHVybiBmYWxzZSIgaHJlZj0iZnVuY3Rpb25zL3ZlcnRleEF0dHJpYi5odG1s
Ij5mdW5jdGlvbnMvdmVydGV4QXR0cmliLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0NSwgJ2Z1bmN0aW9ucy92
ZXJ0ZXhBdHRyaWJCYWRBcmdzLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy92
ZXJ0ZXhBdHRyaWJCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjQ2IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNs
aWNrPSJsb2FkVGVzdCg0NiwgJ2Z1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWwnKTty
ZXR1cm4gZmFsc2UiIGhyZWY9ImZ1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWwiPmZ1
bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKwor
CisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ3IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQy
Ij48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0NywgJ2Z1bmN0aW9u
cy92ZXJ0ZXhBdHRyaWJQb2ludGVyQmFkQXJncy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJm
dW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlckJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3ZlcnRl
eEF0dHJpYlBvaW50ZXJCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lm
cmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0OCwgJ3BlcmZvcm1hbmNlL0NQ
VXZzR1BVLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9InBlcmZvcm1hbmNlL0NQVXZzR1BVLmh0
bWwiPnBlcmZvcm1hbmNlL0NQVXZzR1BVLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ5IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg0OSwgJ3BlcmZvcm1hbmNl
L2JhbmR3aWR0aC5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJwZXJmb3JtYW5jZS9iYW5kd2lk
dGguaHRtbCI+cGVyZm9ybWFuY2UvYmFuZHdpZHRoLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4K
KworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjUwIiB3aWR0aD0iMTEwIiBoZWlnaHQ9
IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1MCwgJ3BlcmZv
cm1hbmNlL2pzR0NQYXVzZS5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJwZXJmb3JtYW5jZS9q
c0dDUGF1c2UuaHRtbCI+cGVyZm9ybWFuY2UvanNHQ1BhdXNlLmh0bWw8L2E+PC9oMj4KKyAgICA8
L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjUxIiB3aWR0aD0iMTEwIiBo
ZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1MSwg
J3BlcmZvcm1hbmNlL2pzTWF0cml4TXVsdC5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJwZXJm
b3JtYW5jZS9qc01hdHJpeE11bHQuaHRtbCI+cGVyZm9ybWFuY2UvanNNYXRyaXhNdWx0Lmh0bWw8
L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjUy
IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNr
PSJsb2FkVGVzdCg1MiwgJ3BlcmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWwnKTtyZXR1cm4g
ZmFsc2UiIGhyZWY9InBlcmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWwiPnBlcmZvcm1hbmNl
L2pzVG9HTE92ZXJoZWFkLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgaWQ9IjUzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4K
KyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1MywgJ2dsc2wvYXJyYXlPdXRPZkJvdW5k
cy5odG1sJyk7cmV0dXJuIGZhbHNlIiBocmVmPSJnbHNsL2FycmF5T3V0T2ZCb3VuZHMuaHRtbCI+
Z2xzbC9hcnJheU91dE9mQm91bmRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAg
PGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjU0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lm
cmFtZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1NCwgJ2dsc2wvbG9uZ0xvb3Bz
Lmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9Imdsc2wvbG9uZ0xvb3BzLmh0bWwiPmdsc2wvbG9u
Z0xvb3BzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxp
ZnJhbWUgaWQ9IjU1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxo
Mj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1NSwgJ2dsc2wvdW5pZm9ybU91dE9mQm91bmRzLmh0bWwn
KTtyZXR1cm4gZmFsc2UiIGhyZWY9Imdsc2wvdW5pZm9ybU91dE9mQm91bmRzLmh0bWwiPmdsc2wv
dW5pZm9ybU91dE9mQm91bmRzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRp
dj4KKyAgICAgIDxpZnJhbWUgaWQ9IjU2IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFt
ZT4KKyAgICAgIDxoMj48YSBvbmNsaWNrPSJsb2FkVGVzdCg1NiwgJ2dsc2wvdW51c2VkQXR0cmli
c1VuaWZvcm1zLmh0bWwnKTtyZXR1cm4gZmFsc2UiIGhyZWY9Imdsc2wvdW51c2VkQXR0cmlic1Vu
aWZvcm1zLmh0bWwiPmdsc2wvdW51c2VkQXR0cmlic1VuaWZvcm1zLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9hbGxfdGVzdHNf
c2VxdWVudGlhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9hbGxfdGVzdHNfc2VxdWVudGlhbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVlYmY4MzgyYmFmMWI3N2ViNDYxMzI4NTg3NDQwNjkxYzgwODdhY2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9tb3JlL2FsbF90ZXN0c19zZXF1ZW50aWFsLmh0bWwKQEAgLTAsMCArMSwzNzggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKyAgPHRpdGxlPk9w
ZW5HTCBFUyAyLjAgJmx0O2NhbnZhcyZndDsgY29udGV4dCB0ZXN0czwvdGl0bGU+CisgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgaDIgeyBkaXNwbGF5OiBpbmxpbmU7IGZvbnQtc2l6ZTog
MWVtOyBtYXJnaW4tYm90dG9tOiAwLjJlbTsgfQorICAgIGlmcmFtZSB7IGRpc3BsYXk6IGlubGlu
ZTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IG92ZXJmbG93OiBoaWRkZW47fQorICA8L3N0eWxl
PgorICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9u
IGxvYWRUZXN0KGlkLCB1cmwpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5z
cmMgPSB1cmw7CisgICAgfQorICAgIGZ1bmN0aW9uIHNlcUxvYWRlcigpIHsKKyAgICAgIHZhciBp
ZnJhbWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpOworICAgICAg
Zm9yICh2YXIgaT0wOyBpPGlmcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWZyYW1lc1tp
XS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGZ1bmN0aW9uKGopIHsKKyAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKChqKzEpKydfbGluaycpOworICAgICAgICAgICAgaWYgKGUpIGxvYWRUZXN0KGorMSwgZS5o
cmVmKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pKGkpLCBmYWxzZSk7CisgICAgICB9CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcwX2xpbmsnKTsKKyAgICAgIGlmIChl
KSBsb2FkVGVzdCgwLCBlLmhyZWYpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNlcUxvYWRlcigpIj4KKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIw
IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMF9s
aW5rIiBocmVmPSJjb25mb3JtYW5jZS9iYWRBcmdzQXJpdHlMZXNzVGhhbkFyZ2MuaHRtbCI+Y29u
Zm9ybWFuY2UvYmFkQXJnc0FyaXR5TGVzc1RoYW5BcmdjLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rp
dj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjEiIHdpZHRoPSIxMTAiIGhlaWdo
dD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIxX2xpbmsiIGhyZWY9ImNvbmZvcm1h
bmNlL2NvbnN0YW50cy5odG1sIj5jb25mb3JtYW5jZS9jb25zdGFudHMuaHRtbDwvYT48L2gyPgor
ICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMiIgd2lkdGg9IjEx
MCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjJfbGluayIgaHJlZj0i
Y29uZm9ybWFuY2UvZnV6elRoZUFQSS5odG1sIj5jb25mb3JtYW5jZS9mdXp6VGhlQVBJLmh0bWw8
L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjMi
IHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIzX2xp
bmsiIGhyZWY9ImNvbmZvcm1hbmNlL2dldENvbnRleHQuaHRtbCI+Y29uZm9ybWFuY2UvZ2V0Q29u
dGV4dC5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZy
YW1lIGlkPSI0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48
YSBpZD0iNF9saW5rIiBocmVmPSJjb25mb3JtYW5jZS9tZXRob2RzLmh0bWwiPmNvbmZvcm1hbmNl
L21ldGhvZHMuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAg
PGlmcmFtZSBpZD0iNSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8
aDI+PGEgaWQ9IjVfbGluayIgaHJlZj0iY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS5odG1sIj5j
b25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjYiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwv
aWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSI2X2xpbmsiIGhyZWY9ImNvbmZvcm1hbmNlL3F1aWNr
Q2hlY2tBUElCYWRBcmdzLmh0bWwiPmNvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUElCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjciIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSI3
X2xpbmsiIGhyZWY9ImNvbmZvcm1hbmNlL3dlYkdMQXJyYXlzLmh0bWwiPmNvbmZvcm1hbmNlL3dl
YkdMQXJyYXlzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjgiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAg
PGgyPjxhIGlkPSI4X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9iaW5kQnVmZmVyLmh0bWwiPmZ1bmN0
aW9ucy9iaW5kQnVmZmVyLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4K
KyAgICAgIDxpZnJhbWUgaWQ9IjkiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgor
ICAgICAgPGgyPjxhIGlkPSI5X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9iaW5kQnVmZmVyQmFkQXJn
cy5odG1sIj5mdW5jdGlvbnMvYmluZEJ1ZmZlckJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwv
ZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMTAiIHdpZHRoPSIxMTAiIGhl
aWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIxMF9saW5rIiBocmVmPSJmdW5j
dGlvbnMvYmluZEZyYW1lYnVmZmVyTGVhdmVOb25aZXJvLmh0bWwiPmZ1bmN0aW9ucy9iaW5kRnJh
bWVidWZmZXJMZWF2ZU5vblplcm8uaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8
ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMTEiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZy
YW1lPgorICAgICAgPGgyPjxhIGlkPSIxMV9saW5rIiBocmVmPSJmdW5jdGlvbnMvYnVmZmVyRGF0
YS5odG1sIj5mdW5jdGlvbnMvYnVmZmVyRGF0YS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisK
KworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIxMiIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0
MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjEyX2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9i
dWZmZXJEYXRhQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvYnVmZmVyRGF0YUJhZEFyZ3MuaHRtbDwv
YT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMTMi
IHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIxM19s
aW5rIiBocmVmPSJmdW5jdGlvbnMvYnVmZmVyU3ViRGF0YS5odG1sIj5mdW5jdGlvbnMvYnVmZmVy
U3ViRGF0YS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8
aWZyYW1lIGlkPSIxNCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8
aDI+PGEgaWQ9IjE0X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9idWZmZXJTdWJEYXRhQmFkQXJncy5o
dG1sIj5mdW5jdGlvbnMvYnVmZmVyU3ViRGF0YUJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwv
ZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMTUiIHdpZHRoPSIxMTAiIGhl
aWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIxNV9saW5rIiBocmVmPSJmdW5j
dGlvbnMvY29weVRleEltYWdlMkQuaHRtbCI+ZnVuY3Rpb25zL2NvcHlUZXhJbWFnZTJELmh0bWw8
L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjE2
IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMTZf
bGluayIgaHJlZj0iZnVuY3Rpb25zL2NvcHlUZXhJbWFnZTJEQmFkQXJncy5odG1sIj5mdW5jdGlv
bnMvY29weVRleEltYWdlMkRCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjE3IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMTdfbGluayIgaHJlZj0iZnVuY3Rpb25zL2NvcHlU
ZXhTdWJJbWFnZTJELmh0bWwiPmZ1bmN0aW9ucy9jb3B5VGV4U3ViSW1hZ2UyRC5odG1sPC9hPjwv
aDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIxOCIgd2lk
dGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjE4X2xpbmsi
IGhyZWY9ImZ1bmN0aW9ucy9jb3B5VGV4U3ViSW1hZ2UyREJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25z
L2NvcHlUZXhTdWJJbWFnZTJEQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKwor
ICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIxOSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+
PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjE5X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9kZWxl
dGVCdWZmZXJCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRBcmdzLmh0bWw8
L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjIw
IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMjBf
bGluayIgaHJlZj0iZnVuY3Rpb25zL2RyYXdBcnJheXMuaHRtbCI+ZnVuY3Rpb25zL2RyYXdBcnJh
eXMuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFt
ZSBpZD0iMjEiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxh
IGlkPSIyMV9saW5rIiBocmVmPSJmdW5jdGlvbnMvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwi
PmZ1bmN0aW9ucy9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2
PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMjIiIHdpZHRoPSIxMTAiIGhlaWdo
dD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIyMl9saW5rIiBocmVmPSJmdW5jdGlv
bnMvZHJhd0VsZW1lbnRzLmh0bWwiPmZ1bmN0aW9ucy9kcmF3RWxlbWVudHMuaHRtbDwvYT48L2gy
PgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMjMiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIyM19saW5rIiBo
cmVmPSJmdW5jdGlvbnMvZHJhd0VsZW1lbnRzQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvZHJhd0Vs
ZW1lbnRzQmFkQXJncy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+Cisg
ICAgICA8aWZyYW1lIGlkPSIyNCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+Cisg
ICAgICA8aDI+PGEgaWQ9IjI0X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9nZXRJbWFnZURhdGEuaHRt
bCI+ZnVuY3Rpb25zL2dldEltYWdlRGF0YS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKwor
ICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIyNSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+
PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjI1X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9nZXRJ
bWFnZURhdGFCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy9nZXRJbWFnZURhdGFCYWRBcmdzLmh0bWw8
L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjI2
IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMjZf
bGluayIgaHJlZj0iZnVuY3Rpb25zL2lzVGVzdHMuaHRtbCI+ZnVuY3Rpb25zL2lzVGVzdHMuaHRt
bDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0i
MjciIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIy
N19saW5rIiBocmVmPSJmdW5jdGlvbnMvbGlua1Byb2dyYW1CYWRBcmdzLmh0bWwiPmZ1bmN0aW9u
cy9saW5rUHJvZ3JhbUJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8
ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMjgiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZy
YW1lPgorICAgICAgPGgyPjxhIGlkPSIyOF9saW5rIiBocmVmPSJmdW5jdGlvbnMvcmVhZFBpeGVs
cy5odG1sIj5mdW5jdGlvbnMvcmVhZFBpeGVscy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisK
KworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSIyOSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0
MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjI5X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy9y
ZWFkUGl4ZWxzQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvcmVhZFBpeGVsc0JhZEFyZ3MuaHRtbDwv
YT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMzAi
IHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIzMF9s
aW5rIiBocmVmPSJmdW5jdGlvbnMvdGV4SW1hZ2UyRC5odG1sIj5mdW5jdGlvbnMvdGV4SW1hZ2Uy
RC5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1l
IGlkPSIzMSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEg
aWQ9IjMxX2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy90ZXhJbWFnZTJEQmFkQXJncy5odG1sIj5mdW5j
dGlvbnMvdGV4SW1hZ2UyREJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAg
ICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMzIiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwv
aWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIzMl9saW5rIiBocmVmPSJmdW5jdGlvbnMvdGV4SW1h
Z2UyREhUTUwuaHRtbCI+ZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjMzIiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iMzNfbGluayIgaHJlZj0i
ZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdGV4SW1hZ2Uy
REhUTUxCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAg
ICAgIDxpZnJhbWUgaWQ9IjM0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAg
ICAgIDxoMj48YSBpZD0iMzRfbGluayIgaHJlZj0iZnVuY3Rpb25zL3RleFN1YkltYWdlMkQuaHRt
bCI+ZnVuY3Rpb25zL3RleFN1YkltYWdlMkQuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisK
KyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iMzUiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIi
PjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSIzNV9saW5rIiBocmVmPSJmdW5jdGlvbnMvdGV4
U3ViSW1hZ2UyREJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3RleFN1YkltYWdlMkRCYWRBcmdzLmh0
bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9
IjM2IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0i
MzZfbGluayIgaHJlZj0iZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwiPmZ1bmN0aW9u
cy90ZXhTdWJJbWFnZTJESFRNTC5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxk
aXY+CisgICAgICA8aWZyYW1lIGlkPSIzNyIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJh
bWU+CisgICAgICA8aDI+PGEgaWQ9IjM3X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy90ZXhTdWJJbWFn
ZTJESFRNTEJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MQmFkQXJncy5o
dG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlk
PSIzOCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9
IjM4X2xpbmsiIGhyZWY9ImZ1bmN0aW9ucy91bmlmb3JtTWF0cml4Lmh0bWwiPmZ1bmN0aW9ucy91
bmlmb3JtTWF0cml4Lmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAg
ICAgIDxpZnJhbWUgaWQ9IjM5IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAg
ICAgIDxoMj48YSBpZD0iMzlfbGluayIgaHJlZj0iZnVuY3Rpb25zL3VuaWZvcm1NYXRyaXhCYWRB
cmdzLmh0bWwiPmZ1bmN0aW9ucy91bmlmb3JtTWF0cml4QmFkQXJncy5odG1sPC9hPjwvaDI+Cisg
ICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSI0MCIgd2lkdGg9IjEx
MCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjQwX2xpbmsiIGhyZWY9
ImZ1bmN0aW9ucy91bmlmb3JtZi5odG1sIj5mdW5jdGlvbnMvdW5pZm9ybWYuaHRtbDwvYT48L2gy
PgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iNDEiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSI0MV9saW5rIiBo
cmVmPSJmdW5jdGlvbnMvdW5pZm9ybWZCYWRBcmdzLmh0bWwiPmZ1bmN0aW9ucy91bmlmb3JtZkJh
ZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlm
cmFtZSBpZD0iNDIiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgy
PjxhIGlkPSI0Ml9saW5rIiBocmVmPSJmdW5jdGlvbnMvdW5pZm9ybWkuaHRtbCI+ZnVuY3Rpb25z
L3VuaWZvcm1pLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAg
IDxpZnJhbWUgaWQ9IjQzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAg
IDxoMj48YSBpZD0iNDNfbGluayIgaHJlZj0iZnVuY3Rpb25zL3VuaWZvcm1pQmFkQXJncy5odG1s
Ij5mdW5jdGlvbnMvdW5pZm9ybWlCYWRBcmdzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKwor
CisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ0IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQy
Ij48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iNDRfbGluayIgaHJlZj0iZnVuY3Rpb25zL3Zl
cnRleEF0dHJpYi5odG1sIj5mdW5jdGlvbnMvdmVydGV4QXR0cmliLmh0bWw8L2E+PC9oMj4KKyAg
ICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjQ1IiB3aWR0aD0iMTEw
IiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iNDVfbGluayIgaHJlZj0i
ZnVuY3Rpb25zL3ZlcnRleEF0dHJpYkJhZEFyZ3MuaHRtbCI+ZnVuY3Rpb25zL3ZlcnRleEF0dHJp
YkJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAg
PGlmcmFtZSBpZD0iNDYiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAg
PGgyPjxhIGlkPSI0Nl9saW5rIiBocmVmPSJmdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlci5o
dG1sIj5mdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlci5odG1sPC9hPjwvaDI+CisgICAgPC9k
aXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSI0NyIgd2lkdGg9IjExMCIgaGVp
Z2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjQ3X2xpbmsiIGhyZWY9ImZ1bmN0
aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyQmFkQXJncy5odG1sIj5mdW5jdGlvbnMvdmVydGV4QXR0
cmliUG9pbnRlckJhZEFyZ3MuaHRtbDwvYT48L2gyPgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2
PgorICAgICAgPGlmcmFtZSBpZD0iNDgiIHdpZHRoPSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1l
PgorICAgICAgPGgyPjxhIGlkPSI0OF9saW5rIiBocmVmPSJwZXJmb3JtYW5jZS9DUFV2c0dQVS5o
dG1sIj5wZXJmb3JtYW5jZS9DUFV2c0dQVS5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKwor
ICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSI0OSIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+
PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjQ5X2xpbmsiIGhyZWY9InBlcmZvcm1hbmNlL2Jh
bmR3aWR0aC5odG1sIj5wZXJmb3JtYW5jZS9iYW5kd2lkdGguaHRtbDwvYT48L2gyPgorICAgIDwv
ZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iNTAiIHdpZHRoPSIxMTAiIGhl
aWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSI1MF9saW5rIiBocmVmPSJwZXJm
b3JtYW5jZS9qc0dDUGF1c2UuaHRtbCI+cGVyZm9ybWFuY2UvanNHQ1BhdXNlLmh0bWw8L2E+PC9o
Mj4KKyAgICA8L2Rpdj4KKworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjUxIiB3aWR0
aD0iMTEwIiBoZWlnaHQ9IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iNTFfbGluayIg
aHJlZj0icGVyZm9ybWFuY2UvanNNYXRyaXhNdWx0Lmh0bWwiPnBlcmZvcm1hbmNlL2pzTWF0cml4
TXVsdC5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZy
YW1lIGlkPSI1MiIgd2lkdGg9IjExMCIgaGVpZ2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+
PGEgaWQ9IjUyX2xpbmsiIGhyZWY9InBlcmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWwiPnBl
cmZvcm1hbmNlL2pzVG9HTE92ZXJoZWFkLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4KKworCisg
ICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjUzIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjQyIj48
L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iNTNfbGluayIgaHJlZj0iZ2xzbC9hcnJheU91dE9m
Qm91bmRzLmh0bWwiPmdsc2wvYXJyYXlPdXRPZkJvdW5kcy5odG1sPC9hPjwvaDI+CisgICAgPC9k
aXY+CisKKworICAgIDxkaXY+CisgICAgICA8aWZyYW1lIGlkPSI1NCIgd2lkdGg9IjExMCIgaGVp
Z2h0PSI0MiI+PC9pZnJhbWU+CisgICAgICA8aDI+PGEgaWQ9IjU0X2xpbmsiIGhyZWY9Imdsc2wv
bG9uZ0xvb3BzLmh0bWwiPmdsc2wvbG9uZ0xvb3BzLmh0bWw8L2E+PC9oMj4KKyAgICA8L2Rpdj4K
KworCisgICAgPGRpdj4KKyAgICAgIDxpZnJhbWUgaWQ9IjU1IiB3aWR0aD0iMTEwIiBoZWlnaHQ9
IjQyIj48L2lmcmFtZT4KKyAgICAgIDxoMj48YSBpZD0iNTVfbGluayIgaHJlZj0iZ2xzbC91bmlm
b3JtT3V0T2ZCb3VuZHMuaHRtbCI+Z2xzbC91bmlmb3JtT3V0T2ZCb3VuZHMuaHRtbDwvYT48L2gy
PgorICAgIDwvZGl2PgorCisKKyAgICA8ZGl2PgorICAgICAgPGlmcmFtZSBpZD0iNTYiIHdpZHRo
PSIxMTAiIGhlaWdodD0iNDIiPjwvaWZyYW1lPgorICAgICAgPGgyPjxhIGlkPSI1Nl9saW5rIiBo
cmVmPSJnbHNsL3VudXNlZEF0dHJpYnNVbmlmb3Jtcy5odG1sIj5nbHNsL3VudXNlZEF0dHJpYnNV
bmlmb3Jtcy5odG1sPC9hPjwvaDI+CisgICAgPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1BLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25m
b3JtYW5jZS9hcmdHZW5lcmF0b3JzLUEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNlMzAxY2UxNDMzNjBlZjA1
MWFjMGFhNzhhYzU5ZTVjZTcwMTFmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFu
Y2UvYXJnR2VuZXJhdG9ycy1BLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gQXJnR2VuZXJhdG9ycyBjb250YWlucyBhcmd1
bWVudCBnZW5lcmF0b3JzIGZvciBXZWJHTCBmdW5jdGlvbnMuCisvLyBUaGUgYXJndW1lbnQgZ2Vu
ZXJhdG9ycyBhcmUgdXNlZCBmb3IgcnVubmluZyByYW5kb20gdGVzdHMgYWdhaW5zdCB0aGUgV2Vi
R0wKKy8vIGZ1bmN0aW9ucy4KKy8vCisvLyBBcmdHZW5lcmF0b3JzIGlzIGFuIG9iamVjdCBjb25z
aXN0aW5nIG9mIGZ1bmN0aW9uTmFtZSA6IGFyZ0dlbiAtcHJvcGVydGllcy4KKy8vCisvLyBmdW5j
dGlvbk5hbWUgaXMgYSBXZWJHTCBjb250ZXh0IGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBhcmdHZW4g
aXMgYW4gYXJndW1lbnQKKy8vIGdlbmVyYXRvciBvYmplY3QgdGhhdCBlbmNhcHN1bGF0ZXMgdGhl
IHJlcXVpcmVtZW50cyB0byBydW4KKy8vIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZXN0cyBvbiB0aGUg
V2ViR0wgZnVuY3Rpb24uCisvLworLy8gQW4gYXJnR2VuIG9iamVjdCBoYXMgdGhlIGZvbGxvd2lu
ZyBtZXRob2RzOgorLy8gICAtIHNldHVwICAgIC0tIHNldCB1cCBzdGF0ZSBmb3IgdGVzdGluZyB0
aGUgR0wgZnVuY3Rpb24sIHJldHVybnMgdmFsdWVzCisvLyAgICAgICAgICAgICAgICAgdGhhdCBu
ZWVkIGNsZWFudXAgaW4gdGVhcmRvd24uIFJ1biBvbmNlIGJlZm9yZSBlbnRlcmluZyBhCisvLyAg
ICAgICAgICAgICAgICAgdGVzdCBsb29wLgorLy8gICAtIHRlYXJkb3duIC0tIGRvIGNsZWFudXAg
b24gc2V0dXAncyByZXR1cm4gdmFsdWVzIGFmdGVyIHRlc3RpbmcgaXMgY29tcGxldGUKKy8vICAg
LSBnZW5lcmF0ZSAtLSBnZW5lcmF0ZSBhIHZhbGlkIHNldCBvZiByYW5kb20gYXJndW1lbnRzIGZv
ciB0aGUgR0wgZnVuY3Rpb24KKy8vICAgLSByZXR1cm5WYWx1ZUNsZWFudXAgLS0gZG8gY2xlYW51
cCBvbiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgdGVzdGVkIEdMIGZ1bmN0aW9uCisvLyAgIC0gY2xl
YW51cCAgLS0gZG8gY2xlYW51cCBvbiBnZW5lcmF0ZWQgYXJndW1lbnRzIGZyb20gZ2VuZXJhdGUK
Ky8vICAgLSBjaGVja0FyZ1ZhbGlkaXR5IC0tIGNoZWNrIGlmIHBhc3NlZCBhcmdzIGFyZSB2YWxp
ZC4gSGFzIGEgY2FsbCBzaWduYXR1cmUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQg
bWF0Y2hlcyBnZW5lcmF0ZSdzIHJldHVybiB2YWx1ZS4gUmV0dXJucyB0cnVlCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBhcmdzIGFyZSB2YWxpZCwgZmFsc2UgaWYgbm90LgorLy8KKy8v
ICAgRXhhbXBsZSB0ZXN0IGxvb3AgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRoZSBmdW5jdGlvbiBh
cmdzIGFuZCByZXR1cm4KKy8vICAgdmFsdWVzIGZsb3cgdG9nZXRoZXI6CisvLworLy8gICB2YXIg
c2V0dXBBcmdzID0gYXJnR2VuLnNldHVwKCk7CisvLyAgIGZvciAodmFyIGk9MDsgaTxudW1iZXJP
ZlRlc3RzOyBpKyspIHsKKy8vICAgICB2YXIgZ2VuZXJhdGVkQXJncyA9IGFyZ0dlbi5nZW5lcmF0
ZS5hcHBseShhcmdHZW4sIHNldHVwQXJncyk7CisvLyAgICAgdmFyIHZhbGlkQXJncyA9IGFyZ0dl
bi5jaGVja0FyZ1ZhbGlkaXR5LmFwcGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgICAg
dmFyIHJ2ID0gY2FsbCB0aGUgR0wgZnVuY3Rpb24gd2l0aCBnZW5lcmF0ZWRBcmdzOworLy8gICAg
IGFyZ0dlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOworLy8gICAgIGFyZ0dlbi5jbGVhbnVwLmFw
cGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgIH0KKy8vICAgYXJnR2VuLnRlYXJkb3du
LmFwcGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vCitBcmdHZW5lcmF0b3JzID0geworCisvLyBH
TCBmdW5jdGlvbnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCisKKy8vIEEKKworICBhY3RpdmVUZXh0
dXJlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbdGV4dHVyZVVuaXQu
cmFuZG9tKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0KSB7IHJldHVy
biB0ZXh0dXJlVW5pdC5oYXModCk7IH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsgR0wu
YWN0aXZlVGV4dHVyZShHTC5URVhUVVJFMCk7IH0KKyAgfSwKKyAgYXR0YWNoU2hhZGVyIDogewor
ICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcCA9IEdMLmNyZWF0ZVByb2dy
YW0oKTsKKyAgICAgIHZhciBzaCA9IEdMLmNyZWF0ZVNoYWRlcihzaGFkZXJUeXBlLnJhbmRvbSgp
KTsKKyAgICAgIHJldHVybiBbcCwgc2hdOworICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6
IGZ1bmN0aW9uKHAsIHNoKSB7CisgICAgICByZXR1cm4gR0wuaXNQcm9ncmFtKHApICYmIEdMLmlz
U2hhZGVyKHNoKSAmJiAhR0wuZ2V0QXR0YWNoZWRTaGFkZXJzKHApLmhhcyhzaCk7CisgICAgfSwK
KyAgICBjbGVhbnVwIDogZnVuY3Rpb24ocCwgc2gpIHsKKyAgICAgIHRyeSB7R0wuZGV0YWNoU2hh
ZGVyKHAsc2gpO30gY2F0Y2goZSkge30KKyAgICAgIHRyeSB7R0wuZGVsZXRlUHJvZ3JhbShwKTt9
IGNhdGNoKGUpIHt9CisgICAgICB0cnkge0dMLmRlbGV0ZVNoYWRlcihzaCk7fSBjYXRjaChlKSB7
fQorICAgIH0KKyAgfQorCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5l
cmF0b3JzLUIxLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3JzLUIxLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0ZjM5NGJlMDI3ZDQ0MTQ0MWJmZDYxZThhYWJhNDY4NWJmZjRmNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtQjEuanMKQEAgLTAsMCAr
MSw2MSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisvLyBB
cmdHZW5lcmF0b3JzIGNvbnRhaW5zIGFyZ3VtZW50IGdlbmVyYXRvcnMgZm9yIFdlYkdMIGZ1bmN0
aW9ucy4KKy8vIFRoZSBhcmd1bWVudCBnZW5lcmF0b3JzIGFyZSB1c2VkIGZvciBydW5uaW5nIHJh
bmRvbSB0ZXN0cyBhZ2FpbnN0IHRoZSBXZWJHTAorLy8gZnVuY3Rpb25zLgorLy8KKy8vIEFyZ0dl
bmVyYXRvcnMgaXMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgZnVuY3Rpb25OYW1lIDogYXJnR2Vu
IC1wcm9wZXJ0aWVzLgorLy8KKy8vIGZ1bmN0aW9uTmFtZSBpcyBhIFdlYkdMIGNvbnRleHQgZnVu
Y3Rpb24gbmFtZSBhbmQgdGhlIGFyZ0dlbiBpcyBhbiBhcmd1bWVudAorLy8gZ2VuZXJhdG9yIG9i
amVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgcmVxdWlyZW1lbnRzIHRvIHJ1bgorLy8gcmFuZG9t
bHkgZ2VuZXJhdGVkIHRlc3RzIG9uIHRoZSBXZWJHTCBmdW5jdGlvbi4KKy8vCisvLyBBbiBhcmdH
ZW4gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisvLyAgIC0gc2V0dXAgICAgLS0g
c2V0IHVwIHN0YXRlIGZvciB0ZXN0aW5nIHRoZSBHTCBmdW5jdGlvbiwgcmV0dXJucyB2YWx1ZXMK
Ky8vICAgICAgICAgICAgICAgICB0aGF0IG5lZWQgY2xlYW51cCBpbiB0ZWFyZG93bi4gUnVuIG9u
Y2UgYmVmb3JlIGVudGVyaW5nIGEKKy8vICAgICAgICAgICAgICAgICB0ZXN0IGxvb3AuCisvLyAg
IC0gdGVhcmRvd24gLS0gZG8gY2xlYW51cCBvbiBzZXR1cCdzIHJldHVybiB2YWx1ZXMgYWZ0ZXIg
dGVzdGluZyBpcyBjb21wbGV0ZQorLy8gICAtIGdlbmVyYXRlIC0tIGdlbmVyYXRlIGEgdmFsaWQg
c2V0IG9mIHJhbmRvbSBhcmd1bWVudHMgZm9yIHRoZSBHTCBmdW5jdGlvbgorLy8gICAtIHJldHVy
blZhbHVlQ2xlYW51cCAtLSBkbyBjbGVhbnVwIG9uIHZhbHVlIHJldHVybmVkIGJ5IHRoZSB0ZXN0
ZWQgR0wgZnVuY3Rpb24KKy8vICAgLSBjbGVhbnVwICAtLSBkbyBjbGVhbnVwIG9uIGdlbmVyYXRl
ZCBhcmd1bWVudHMgZnJvbSBnZW5lcmF0ZQorLy8gICAtIGNoZWNrQXJnVmFsaWRpdHkgLS0gY2hl
Y2sgaWYgcGFzc2VkIGFyZ3MgYXJlIHZhbGlkLiBIYXMgYSBjYWxsIHNpZ25hdHVyZQorLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVzIGdlbmVyYXRlJ3MgcmV0dXJuIHZhbHVl
LiBSZXR1cm5zIHRydWUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3MgYXJlIHZh
bGlkLCBmYWxzZSBpZiBub3QuCisvLworLy8gICBFeGFtcGxlIHRlc3QgbG9vcCB0aGF0IGRlbW9u
c3RyYXRlcyBob3cgdGhlIGZ1bmN0aW9uIGFyZ3MgYW5kIHJldHVybgorLy8gICB2YWx1ZXMgZmxv
dyB0b2dldGhlcjoKKy8vCisvLyAgIHZhciBzZXR1cEFyZ3MgPSBhcmdHZW4uc2V0dXAoKTsKKy8v
ICAgZm9yICh2YXIgaT0wOyBpPG51bWJlck9mVGVzdHM7IGkrKykgeworLy8gICAgIHZhciBnZW5l
cmF0ZWRBcmdzID0gYXJnR2VuLmdlbmVyYXRlLmFwcGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8v
ICAgICB2YXIgdmFsaWRBcmdzID0gYXJnR2VuLmNoZWNrQXJnVmFsaWRpdHkuYXBwbHkoYXJnR2Vu
LCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgICB2YXIgcnYgPSBjYWxsIHRoZSBHTCBmdW5jdGlvbiB3
aXRoIGdlbmVyYXRlZEFyZ3M7CisvLyAgICAgYXJnR2VuLnJldHVyblZhbHVlQ2xlYW51cChydik7
CisvLyAgICAgYXJnR2VuLmNsZWFudXAuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8v
ICAgfQorLy8gICBhcmdHZW4udGVhcmRvd24uYXBwbHkoYXJnR2VuLCBzZXR1cEFyZ3MpOworLy8K
K0FyZ0dlbmVyYXRvcnMgPSB7CisKKy8vIEdMIGZ1bmN0aW9ucyBpbiBhbHBoYWJldGljYWwgb3Jk
ZXIKKworLy8gQi0xCisKKyAgYmluZEF0dHJpYkxvY2F0aW9uIDogeworICAgIGdlbmVyYXRlIDog
ZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcHJvZ3JhbSA9IEdMLmNyZWF0ZVByb2dyYW0oKTsKKyAg
ICAgIHJldHVybiBbcHJvZ3JhbSwgcmFuZG9tVmVydGV4QXR0cmlidXRlKCksIHJhbmRvbU5hbWUo
KV07CisgICAgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24ocHJvZ3JhbSwgaW5k
ZXgsIG5hbWUpIHsKKyAgICAgIHJldHVybiBHTC5pc1Byb2dyYW0ocHJvZ3JhbSkgJiYgaXNWZXJ0
ZXhBdHRyaWJ1dGUoaW5kZXgpICYmIGlzVmFsaWROYW1lKG5hbWUpOworICAgIH0sCisgICAgY2xl
YW51cCA6IGZ1bmN0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lKSB7CisgICAgICB0cnkgeyBHTC5k
ZWxldGVQcm9ncmFtKHByb2dyYW0pOyB9IGNhdGNoKGUpIHt9CisgICAgfQorICB9CisKK307CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtQjIuanMgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Nv
bmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtQjIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM2NmMzZDhmMTgwZWRk
OGI0MmNiODExYjczZWZkMmNkZTVhMGJlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9y
bWFuY2UvYXJnR2VuZXJhdG9ycy1CMi5qcwpAQCAtMCwwICsxLDE1NCBAQAorLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisvLyBBcmdHZW5lcmF0b3JzIGNvbnRhaW5z
IGFyZ3VtZW50IGdlbmVyYXRvcnMgZm9yIFdlYkdMIGZ1bmN0aW9ucy4KKy8vIFRoZSBhcmd1bWVu
dCBnZW5lcmF0b3JzIGFyZSB1c2VkIGZvciBydW5uaW5nIHJhbmRvbSB0ZXN0cyBhZ2FpbnN0IHRo
ZSBXZWJHTAorLy8gZnVuY3Rpb25zLgorLy8KKy8vIEFyZ0dlbmVyYXRvcnMgaXMgYW4gb2JqZWN0
IGNvbnNpc3Rpbmcgb2YgZnVuY3Rpb25OYW1lIDogYXJnR2VuIC1wcm9wZXJ0aWVzLgorLy8KKy8v
IGZ1bmN0aW9uTmFtZSBpcyBhIFdlYkdMIGNvbnRleHQgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGFy
Z0dlbiBpcyBhbiBhcmd1bWVudAorLy8gZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRl
cyB0aGUgcmVxdWlyZW1lbnRzIHRvIHJ1bgorLy8gcmFuZG9tbHkgZ2VuZXJhdGVkIHRlc3RzIG9u
IHRoZSBXZWJHTCBmdW5jdGlvbi4KKy8vCisvLyBBbiBhcmdHZW4gb2JqZWN0IGhhcyB0aGUgZm9s
bG93aW5nIG1ldGhvZHM6CisvLyAgIC0gc2V0dXAgICAgLS0gc2V0IHVwIHN0YXRlIGZvciB0ZXN0
aW5nIHRoZSBHTCBmdW5jdGlvbiwgcmV0dXJucyB2YWx1ZXMKKy8vICAgICAgICAgICAgICAgICB0
aGF0IG5lZWQgY2xlYW51cCBpbiB0ZWFyZG93bi4gUnVuIG9uY2UgYmVmb3JlIGVudGVyaW5nIGEK
Ky8vICAgICAgICAgICAgICAgICB0ZXN0IGxvb3AuCisvLyAgIC0gdGVhcmRvd24gLS0gZG8gY2xl
YW51cCBvbiBzZXR1cCdzIHJldHVybiB2YWx1ZXMgYWZ0ZXIgdGVzdGluZyBpcyBjb21wbGV0ZQor
Ly8gICAtIGdlbmVyYXRlIC0tIGdlbmVyYXRlIGEgdmFsaWQgc2V0IG9mIHJhbmRvbSBhcmd1bWVu
dHMgZm9yIHRoZSBHTCBmdW5jdGlvbgorLy8gICAtIHJldHVyblZhbHVlQ2xlYW51cCAtLSBkbyBj
bGVhbnVwIG9uIHZhbHVlIHJldHVybmVkIGJ5IHRoZSB0ZXN0ZWQgR0wgZnVuY3Rpb24KKy8vICAg
LSBjbGVhbnVwICAtLSBkbyBjbGVhbnVwIG9uIGdlbmVyYXRlZCBhcmd1bWVudHMgZnJvbSBnZW5l
cmF0ZQorLy8gICAtIGNoZWNrQXJnVmFsaWRpdHkgLS0gY2hlY2sgaWYgcGFzc2VkIGFyZ3MgYXJl
IHZhbGlkLiBIYXMgYSBjYWxsIHNpZ25hdHVyZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
dGhhdCBtYXRjaGVzIGdlbmVyYXRlJ3MgcmV0dXJuIHZhbHVlLiBSZXR1cm5zIHRydWUKKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3MgYXJlIHZhbGlkLCBmYWxzZSBpZiBub3QuCisv
LworLy8gICBFeGFtcGxlIHRlc3QgbG9vcCB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdGhlIGZ1bmN0
aW9uIGFyZ3MgYW5kIHJldHVybgorLy8gICB2YWx1ZXMgZmxvdyB0b2dldGhlcjoKKy8vCisvLyAg
IHZhciBzZXR1cEFyZ3MgPSBhcmdHZW4uc2V0dXAoKTsKKy8vICAgZm9yICh2YXIgaT0wOyBpPG51
bWJlck9mVGVzdHM7IGkrKykgeworLy8gICAgIHZhciBnZW5lcmF0ZWRBcmdzID0gYXJnR2VuLmdl
bmVyYXRlLmFwcGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vICAgICB2YXIgdmFsaWRBcmdzID0g
YXJnR2VuLmNoZWNrQXJnVmFsaWRpdHkuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8v
ICAgICB2YXIgcnYgPSBjYWxsIHRoZSBHTCBmdW5jdGlvbiB3aXRoIGdlbmVyYXRlZEFyZ3M7Cisv
LyAgICAgYXJnR2VuLnJldHVyblZhbHVlQ2xlYW51cChydik7CisvLyAgICAgYXJnR2VuLmNsZWFu
dXAuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgfQorLy8gICBhcmdHZW4udGVh
cmRvd24uYXBwbHkoYXJnR2VuLCBzZXR1cEFyZ3MpOworLy8KK0FyZ0dlbmVyYXRvcnMgPSB7CisK
Ky8vIEdMIGZ1bmN0aW9ucyBpbiBhbHBoYWJldGljYWwgb3JkZXIKKworLy8gQi0yCisKKyAgYmlu
ZEJ1ZmZlciA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKGJ1ZikgeworICAgICAgcmV0dXJu
IFtidWZmZXJUYXJnZXQucmFuZG9tKCksIEdMLmNyZWF0ZUJ1ZmZlcigpXTsKKyAgICB9LAorICAg
IGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0YXJnZXQsIGJ1ZikgeworICAgICAgaWYgKCFi
dWZmZXJUYXJnZXQuaGFzKHRhcmdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIEdM
LmJpbmRCdWZmZXIodGFyZ2V0LCBidWYpOworICAgICAgcmV0dXJuIEdMLmlzQnVmZmVyKGJ1Zik7
CisgICAgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24odCwgYnVmLCBtKSB7CisgICAgICBHTC5k
ZWxldGVCdWZmZXIoYnVmKTsKKyAgICB9CisgIH0sCisgIGJpbmRGcmFtZWJ1ZmZlciA6IHsKKyAg
ICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIFtHTC5GUkFNRUJVRkZFUiwg
TWF0aC5yYW5kb20oKSA+IDAuNSA/IG51bGwgOiBHTC5jcmVhdGVGcmFtZWJ1ZmZlcigpXTsKKyAg
ICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0YXJnZXQsIGZibykgeworICAg
ICAgaWYgKHRhcmdldCAhPSBHTC5GUkFNRUJVRkZFUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgaWYgKGZibyAhPSBudWxsKQorICAgICAgICAgIEdMLmJpbmRGcmFtZWJ1ZmZlcih0YXJn
ZXQsIGZibyk7CisgICAgICByZXR1cm4gKGZibyA9PSBudWxsIHx8IEdMLmlzRnJhbWVidWZmZXIo
ZmJvKSk7CisgICAgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24odGFyZ2V0LCBmYm8pIHsKKyAg
ICAgIEdMLmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bGwpOworICAgICAgaWYgKGZibykKKyAg
ICAgICAgR0wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICB9CisgIH0sCisgIGJpbmRSZW5k
ZXJidWZmZXIgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBb
R0wuUkVOREVSQlVGRkVSLCBNYXRoLnJhbmRvbSgpID4gMC41ID8gbnVsbCA6IEdMLmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0
YXJnZXQsIHJibykgeworICAgICAgaWYgKHRhcmdldCAhPSBHTC5SRU5ERVJCVUZGRVIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGlmIChyYm8gIT0gbnVsbCkKKyAgICAgICAgR0wuYmlu
ZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJibyk7CisgICAgICByZXR1cm4gKHJibyA9PSBudWxsIHx8
IEdMLmlzUmVuZGVyYnVmZmVyKHJibykpOworICAgIH0sCisgICAgY2xlYW51cCA6IGZ1bmN0aW9u
KHRhcmdldCwgcmJvKSB7CisgICAgICBHTC5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgbnVsbCk7
CisgICAgICBpZiAocmJvKQorICAgICAgICBHTC5kZWxldGVSZW5kZXJidWZmZXIocmJvKTsKKyAg
ICB9CisgIH0sCisgIGJpbmRUZXh0dXJlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7
CisgICAgICByZXR1cm4gW2JpbmRUZXh0dXJlVGFyZ2V0LnJhbmRvbSgpLCBNYXRoLnJhbmRvbSgp
ID4gMC41ID8gbnVsbCA6IEdMLmNyZWF0ZVRleHR1cmUoKV07CisgICAgfSwKKyAgICBjaGVja0Fy
Z1ZhbGlkaXR5IDogZnVuY3Rpb24odGFyZ2V0LCBvKSB7CisgICAgICBpZiAoIWJpbmRUZXh0dXJl
VGFyZ2V0Lmhhcyh0YXJnZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICBpZiAobyAh
PSBudWxsKQorICAgICAgICBHTC5iaW5kVGV4dHVyZSh0YXJnZXQsIG8pOworICAgICAgcmV0dXJu
IChvID09IG51bGwgfHwgR0wuaXNUZXh0dXJlKG8pKTsKKyAgICB9LAorICAgIGNsZWFudXAgOiBm
dW5jdGlvbih0YXJnZXQsIG8pIHsKKyAgICAgIEdMLmJpbmRUZXh0dXJlKHRhcmdldCwgbnVsbCk7
CisgICAgICBpZiAobykKKyAgICAgICAgR0wuZGVsZXRlVGV4dHVyZShvKTsKKyAgICB9CisgIH0s
CisgIGJsZW5kQ29sb3IgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJh
bmRvbUNvbG9yKCk7IH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsgR0wuYmxlbmRDb2xv
cigwLDAsMCwwKTsgfQorICB9LAorICBibGVuZEVxdWF0aW9uIDogeworICAgIGdlbmVyYXRlIDog
ZnVuY3Rpb24oKSB7IHJldHVybiBbYmxlbmRFcXVhdGlvbk1vZGUucmFuZG9tKCldOyB9LAorICAg
IGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbihvKSB7IHJldHVybiBibGVuZEVxdWF0aW9uTW9k
ZS5oYXMobyk7IH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsgR0wuYmxlbmRFcXVhdGlv
bihHTC5GVU5DX0FERCk7IH0KKyAgfSwKKyAgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogeworICAg
IGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gW2JsZW5kRXF1YXRpb25Nb2Rl
LnJhbmRvbSgpLCBibGVuZEVxdWF0aW9uTW9kZS5yYW5kb20oKV07CisgICAgfSwKKyAgICBjaGVj
a0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24obyxwKSB7CisgICAgICByZXR1cm4gYmxlbmRFcXVhdGlv
bk1vZGUuaGFzKG8pICYmIGJsZW5kRXF1YXRpb25Nb2RlLmhhcyhwKTsKKyAgICB9LAorICAgIHRl
YXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTC5GVU5DX0FE
RCwgR0wuRlVOQ19BREQpOyB9CisgIH0sCisgIGJsZW5kRnVuYyA6IHsKKyAgICBnZW5lcmF0ZSA6
IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIFtibGVuZEZ1bmNTZmFjdG9yLnJhbmRvbSgpLCBi
bGVuZEZ1bmNEZmFjdG9yLnJhbmRvbSgpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkg
OiBmdW5jdGlvbihzLGQpIHsKKyAgICAgIHJldHVybiBibGVuZEZ1bmNTZmFjdG9yLmhhcyhzKSAm
JiBibGVuZEZ1bmNEZmFjdG9yLmhhcyhkKTsKKyAgICB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rp
b24oKSB7IEdMLmJsZW5kRnVuYyhHTC5PTkUsIEdMLlpFUk8pOyB9CisgIH0sCisgIGJsZW5kRnVu
Y1NlcGFyYXRlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4g
W2JsZW5kRnVuY1NmYWN0b3IucmFuZG9tKCksIGJsZW5kRnVuY0RmYWN0b3IucmFuZG9tKCksCisg
ICAgICAgICAgICAgIGJsZW5kRnVuY1NmYWN0b3IucmFuZG9tKCksIGJsZW5kRnVuY0RmYWN0b3Iu
cmFuZG9tKCldOworICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHMsZCxh
cyxhZCkgeworICAgICAgcmV0dXJuIGJsZW5kRnVuY1NmYWN0b3IuaGFzKHMpICYmIGJsZW5kRnVu
Y0RmYWN0b3IuaGFzKGQpICYmCisgICAgICAgICAgICAgIGJsZW5kRnVuY1NmYWN0b3IuaGFzKGFz
KSAmJiBibGVuZEZ1bmNEZmFjdG9yLmhhcyhhZCkgOworICAgIH0sCisgICAgdGVhcmRvd24gOiBm
dW5jdGlvbigpIHsKKyAgICAgIEdMLmJsZW5kRnVuY1NlcGFyYXRlKEdMLk9ORSwgR0wuWkVSTywg
R0wuT05FLCBHTC5aRVJPKTsKKyAgICB9CisgIH0KKworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29u
Zm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1CMy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYXJnR2VuZXJh
dG9ycy1CMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTQ3OTZkOTE0OGEwNTZiZDVkYWY5MzM2ZjZjN2Y0MmJm
ZDc4OWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3Jz
LUIzLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworLy8gQXJnR2VuZXJhdG9ycyBjb250YWlucyBhcmd1bWVudCBnZW5lcmF0b3Jz
IGZvciBXZWJHTCBmdW5jdGlvbnMuCisvLyBUaGUgYXJndW1lbnQgZ2VuZXJhdG9ycyBhcmUgdXNl
ZCBmb3IgcnVubmluZyByYW5kb20gdGVzdHMgYWdhaW5zdCB0aGUgV2ViR0wKKy8vIGZ1bmN0aW9u
cy4KKy8vCisvLyBBcmdHZW5lcmF0b3JzIGlzIGFuIG9iamVjdCBjb25zaXN0aW5nIG9mIGZ1bmN0
aW9uTmFtZSA6IGFyZ0dlbiAtcHJvcGVydGllcy4KKy8vCisvLyBmdW5jdGlvbk5hbWUgaXMgYSBX
ZWJHTCBjb250ZXh0IGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBhcmdHZW4gaXMgYW4gYXJndW1lbnQK
Ky8vIGdlbmVyYXRvciBvYmplY3QgdGhhdCBlbmNhcHN1bGF0ZXMgdGhlIHJlcXVpcmVtZW50cyB0
byBydW4KKy8vIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZXN0cyBvbiB0aGUgV2ViR0wgZnVuY3Rpb24u
CisvLworLy8gQW4gYXJnR2VuIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorLy8g
ICAtIHNldHVwICAgIC0tIHNldCB1cCBzdGF0ZSBmb3IgdGVzdGluZyB0aGUgR0wgZnVuY3Rpb24s
IHJldHVybnMgdmFsdWVzCisvLyAgICAgICAgICAgICAgICAgdGhhdCBuZWVkIGNsZWFudXAgaW4g
dGVhcmRvd24uIFJ1biBvbmNlIGJlZm9yZSBlbnRlcmluZyBhCisvLyAgICAgICAgICAgICAgICAg
dGVzdCBsb29wLgorLy8gICAtIHRlYXJkb3duIC0tIGRvIGNsZWFudXAgb24gc2V0dXAncyByZXR1
cm4gdmFsdWVzIGFmdGVyIHRlc3RpbmcgaXMgY29tcGxldGUKKy8vICAgLSBnZW5lcmF0ZSAtLSBn
ZW5lcmF0ZSBhIHZhbGlkIHNldCBvZiByYW5kb20gYXJndW1lbnRzIGZvciB0aGUgR0wgZnVuY3Rp
b24KKy8vICAgLSByZXR1cm5WYWx1ZUNsZWFudXAgLS0gZG8gY2xlYW51cCBvbiB2YWx1ZSByZXR1
cm5lZCBieSB0aGUgdGVzdGVkIEdMIGZ1bmN0aW9uCisvLyAgIC0gY2xlYW51cCAgLS0gZG8gY2xl
YW51cCBvbiBnZW5lcmF0ZWQgYXJndW1lbnRzIGZyb20gZ2VuZXJhdGUKKy8vICAgLSBjaGVja0Fy
Z1ZhbGlkaXR5IC0tIGNoZWNrIGlmIHBhc3NlZCBhcmdzIGFyZSB2YWxpZC4gSGFzIGEgY2FsbCBz
aWduYXR1cmUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbWF0Y2hlcyBnZW5lcmF0
ZSdzIHJldHVybiB2YWx1ZS4gUmV0dXJucyB0cnVlCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBhcmdzIGFyZSB2YWxpZCwgZmFsc2UgaWYgbm90LgorLy8KKy8vICAgRXhhbXBsZSB0ZXN0
IGxvb3AgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRoZSBmdW5jdGlvbiBhcmdzIGFuZCByZXR1cm4K
Ky8vICAgdmFsdWVzIGZsb3cgdG9nZXRoZXI6CisvLworLy8gICB2YXIgc2V0dXBBcmdzID0gYXJn
R2VuLnNldHVwKCk7CisvLyAgIGZvciAodmFyIGk9MDsgaTxudW1iZXJPZlRlc3RzOyBpKyspIHsK
Ky8vICAgICB2YXIgZ2VuZXJhdGVkQXJncyA9IGFyZ0dlbi5nZW5lcmF0ZS5hcHBseShhcmdHZW4s
IHNldHVwQXJncyk7CisvLyAgICAgdmFyIHZhbGlkQXJncyA9IGFyZ0dlbi5jaGVja0FyZ1ZhbGlk
aXR5LmFwcGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgICAgdmFyIHJ2ID0gY2FsbCB0
aGUgR0wgZnVuY3Rpb24gd2l0aCBnZW5lcmF0ZWRBcmdzOworLy8gICAgIGFyZ0dlbi5yZXR1cm5W
YWx1ZUNsZWFudXAocnYpOworLy8gICAgIGFyZ0dlbi5jbGVhbnVwLmFwcGx5KGFyZ0dlbiwgZ2Vu
ZXJhdGVkQXJncyk7CisvLyAgIH0KKy8vICAgYXJnR2VuLnRlYXJkb3duLmFwcGx5KGFyZ0dlbiwg
c2V0dXBBcmdzKTsKKy8vCitBcmdHZW5lcmF0b3JzID0geworCisvLyBHTCBmdW5jdGlvbnMgaW4g
YWxwaGFiZXRpY2FsIG9yZGVyCisKKy8vIEItMworCisgIGJ1ZmZlckRhdGEgOiB7CisgICAgc2V0
dXAgOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBidWYgPSBHTC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICAgIHZhciBlYnVmID0gR0wuY3JlYXRlQnVmZmVyKCk7CisgICAgICBHTC5iaW5kQnVmZmVyKEdM
LkFSUkFZX0JVRkZFUiwgYnVmKTsKKyAgICAgIEdMLmJpbmRCdWZmZXIoR0wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIGVidWYpOworICAgICAgcmV0dXJuIFtidWYsIGVidWZdOworICAgIH0sCisgICAg
Z2VuZXJhdGUgOiBmdW5jdGlvbihidWYsIGVidWYpIHsKKyAgICAgIHJldHVybiBbYnVmZmVyVGFy
Z2V0LnJhbmRvbSgpLCByYW5kb21CdWZmZXJEYXRhKCksIGJ1ZmZlck1vZGUucmFuZG9tKCldOwor
ICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHRhcmdldCwgYnVmRGF0YSwg
bW9kZSkgeworICAgICAgcmV0dXJuIGJ1ZmZlclRhcmdldC5oYXModGFyZ2V0KSAmJiBpc0J1ZmZl
ckRhdGEoYnVmRGF0YSkgJiYgYnVmZmVyTW9kZS5oYXMobW9kZSk7CisgICAgfSwKKyAgICB0ZWFy
ZG93biA6IGZ1bmN0aW9uKGJ1ZiwgZWJ1ZikgeworICAgICAgR0wuZGVsZXRlQnVmZmVyKGJ1Zik7
CisgICAgICBHTC5kZWxldGVCdWZmZXIoZWJ1Zik7CisgICAgfSwKKyAgfQorCit9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3JzLUI0LmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3Jt
YW5jZS9hcmdHZW5lcmF0b3JzLUI0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMWNhN2Q4YjljOGU3YjZkYjM4
ZGY2ZDcxNWFiMTA1YTQzZWQ5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNl
L2FyZ0dlbmVyYXRvcnMtQjQuanMKQEAgLTAsMCArMSw3MSBAQAorLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisvLyBBcmdHZW5lcmF0b3JzIGNvbnRhaW5zIGFyZ3Vt
ZW50IGdlbmVyYXRvcnMgZm9yIFdlYkdMIGZ1bmN0aW9ucy4KKy8vIFRoZSBhcmd1bWVudCBnZW5l
cmF0b3JzIGFyZSB1c2VkIGZvciBydW5uaW5nIHJhbmRvbSB0ZXN0cyBhZ2FpbnN0IHRoZSBXZWJH
TAorLy8gZnVuY3Rpb25zLgorLy8KKy8vIEFyZ0dlbmVyYXRvcnMgaXMgYW4gb2JqZWN0IGNvbnNp
c3Rpbmcgb2YgZnVuY3Rpb25OYW1lIDogYXJnR2VuIC1wcm9wZXJ0aWVzLgorLy8KKy8vIGZ1bmN0
aW9uTmFtZSBpcyBhIFdlYkdMIGNvbnRleHQgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGFyZ0dlbiBp
cyBhbiBhcmd1bWVudAorLy8gZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUg
cmVxdWlyZW1lbnRzIHRvIHJ1bgorLy8gcmFuZG9tbHkgZ2VuZXJhdGVkIHRlc3RzIG9uIHRoZSBX
ZWJHTCBmdW5jdGlvbi4KKy8vCisvLyBBbiBhcmdHZW4gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5n
IG1ldGhvZHM6CisvLyAgIC0gc2V0dXAgICAgLS0gc2V0IHVwIHN0YXRlIGZvciB0ZXN0aW5nIHRo
ZSBHTCBmdW5jdGlvbiwgcmV0dXJucyB2YWx1ZXMKKy8vICAgICAgICAgICAgICAgICB0aGF0IG5l
ZWQgY2xlYW51cCBpbiB0ZWFyZG93bi4gUnVuIG9uY2UgYmVmb3JlIGVudGVyaW5nIGEKKy8vICAg
ICAgICAgICAgICAgICB0ZXN0IGxvb3AuCisvLyAgIC0gdGVhcmRvd24gLS0gZG8gY2xlYW51cCBv
biBzZXR1cCdzIHJldHVybiB2YWx1ZXMgYWZ0ZXIgdGVzdGluZyBpcyBjb21wbGV0ZQorLy8gICAt
IGdlbmVyYXRlIC0tIGdlbmVyYXRlIGEgdmFsaWQgc2V0IG9mIHJhbmRvbSBhcmd1bWVudHMgZm9y
IHRoZSBHTCBmdW5jdGlvbgorLy8gICAtIHJldHVyblZhbHVlQ2xlYW51cCAtLSBkbyBjbGVhbnVw
IG9uIHZhbHVlIHJldHVybmVkIGJ5IHRoZSB0ZXN0ZWQgR0wgZnVuY3Rpb24KKy8vICAgLSBjbGVh
bnVwICAtLSBkbyBjbGVhbnVwIG9uIGdlbmVyYXRlZCBhcmd1bWVudHMgZnJvbSBnZW5lcmF0ZQor
Ly8gICAtIGNoZWNrQXJnVmFsaWRpdHkgLS0gY2hlY2sgaWYgcGFzc2VkIGFyZ3MgYXJlIHZhbGlk
LiBIYXMgYSBjYWxsIHNpZ25hdHVyZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBt
YXRjaGVzIGdlbmVyYXRlJ3MgcmV0dXJuIHZhbHVlLiBSZXR1cm5zIHRydWUKKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGFyZ3MgYXJlIHZhbGlkLCBmYWxzZSBpZiBub3QuCisvLworLy8g
ICBFeGFtcGxlIHRlc3QgbG9vcCB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdGhlIGZ1bmN0aW9uIGFy
Z3MgYW5kIHJldHVybgorLy8gICB2YWx1ZXMgZmxvdyB0b2dldGhlcjoKKy8vCisvLyAgIHZhciBz
ZXR1cEFyZ3MgPSBhcmdHZW4uc2V0dXAoKTsKKy8vICAgZm9yICh2YXIgaT0wOyBpPG51bWJlck9m
VGVzdHM7IGkrKykgeworLy8gICAgIHZhciBnZW5lcmF0ZWRBcmdzID0gYXJnR2VuLmdlbmVyYXRl
LmFwcGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vICAgICB2YXIgdmFsaWRBcmdzID0gYXJnR2Vu
LmNoZWNrQXJnVmFsaWRpdHkuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgICB2
YXIgcnYgPSBjYWxsIHRoZSBHTCBmdW5jdGlvbiB3aXRoIGdlbmVyYXRlZEFyZ3M7CisvLyAgICAg
YXJnR2VuLnJldHVyblZhbHVlQ2xlYW51cChydik7CisvLyAgICAgYXJnR2VuLmNsZWFudXAuYXBw
bHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgfQorLy8gICBhcmdHZW4udGVhcmRvd24u
YXBwbHkoYXJnR2VuLCBzZXR1cEFyZ3MpOworLy8KK0FyZ0dlbmVyYXRvcnMgPSB7CisKKy8vIEdM
IGZ1bmN0aW9ucyBpbiBhbHBoYWJldGljYWwgb3JkZXIKKworLy8gQi00CisKKyAgYnVmZmVyU3Vi
RGF0YSA6IHsKKyAgICBzZXR1cCA6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGJ1ZiA9IEdMLmNy
ZWF0ZUJ1ZmZlcigpOworICAgICAgdmFyIGVidWYgPSBHTC5jcmVhdGVCdWZmZXIoKTsKKyAgICAg
IEdMLmJpbmRCdWZmZXIoR0wuQVJSQVlfQlVGRkVSLCBidWYpOworICAgICAgR0wuYnVmZmVyRGF0
YShHTC5BUlJBWV9CVUZGRVIsIDI1NiwgR0wuU1RBVElDX0RSQVcpOworICAgICAgR0wuYmluZEJ1
ZmZlcihHTC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWJ1Zik7CisgICAgICBHTC5idWZmZXJEYXRh
KEdMLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAyNTYsIEdMLlNUQVRJQ19EUkFXKTsKKyAgICAgIHJl
dHVybiBbYnVmLCBlYnVmXTsKKyAgICB9LAorICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oYnVmLCBl
YnVmKSB7CisgICAgICB2YXIgZCA9IHJhbmRvbUJ1ZmZlclN1YkRhdGEoMjU2KTsKKyAgICAgIHJl
dHVybiBbYnVmZmVyVGFyZ2V0LnJhbmRvbSgpLCBkLm9mZnNldCwgZC5kYXRhXTsKKyAgICB9LAor
ICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0YXJnZXQsIG9mZnNldCwgZGF0YSkgewor
ICAgICAgcmV0dXJuIGJ1ZmZlclRhcmdldC5oYXModGFyZ2V0KSAmJiBvZmZzZXQgPj0gMCAmJiBk
YXRhLmJ5dGVMZW5ndGggPj0gMCAmJiBvZmZzZXQgKyBkYXRhLmJ5dGVMZW5ndGggPD0gMjU2Owor
ICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbihidWYsIGVidWYpIHsKKyAgICAgIEdMLmRl
bGV0ZUJ1ZmZlcihidWYpOworICAgICAgR0wuZGVsZXRlQnVmZmVyKGVidWYpOworICAgIH0sCisg
IH0KKworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1DLmpz
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3JzLUMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJlMWMy
YTVjNTUzODE4ODYxYTU2YTY4NzMwM2UzMDQ3ODBlNzI4OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvY29uZm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1DLmpzCkBAIC0wLDAgKzEsMTE5IEBACisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8vIEFyZ0dlbmVyYXRvcnMg
Y29udGFpbnMgYXJndW1lbnQgZ2VuZXJhdG9ycyBmb3IgV2ViR0wgZnVuY3Rpb25zLgorLy8gVGhl
IGFyZ3VtZW50IGdlbmVyYXRvcnMgYXJlIHVzZWQgZm9yIHJ1bm5pbmcgcmFuZG9tIHRlc3RzIGFn
YWluc3QgdGhlIFdlYkdMCisvLyBmdW5jdGlvbnMuCisvLworLy8gQXJnR2VuZXJhdG9ycyBpcyBh
biBvYmplY3QgY29uc2lzdGluZyBvZiBmdW5jdGlvbk5hbWUgOiBhcmdHZW4gLXByb3BlcnRpZXMu
CisvLworLy8gZnVuY3Rpb25OYW1lIGlzIGEgV2ViR0wgY29udGV4dCBmdW5jdGlvbiBuYW1lIGFu
ZCB0aGUgYXJnR2VuIGlzIGFuIGFyZ3VtZW50CisvLyBnZW5lcmF0b3Igb2JqZWN0IHRoYXQgZW5j
YXBzdWxhdGVzIHRoZSByZXF1aXJlbWVudHMgdG8gcnVuCisvLyByYW5kb21seSBnZW5lcmF0ZWQg
dGVzdHMgb24gdGhlIFdlYkdMIGZ1bmN0aW9uLgorLy8KKy8vIEFuIGFyZ0dlbiBvYmplY3QgaGFz
IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKy8vICAgLSBzZXR1cCAgICAtLSBzZXQgdXAgc3RhdGUg
Zm9yIHRlc3RpbmcgdGhlIEdMIGZ1bmN0aW9uLCByZXR1cm5zIHZhbHVlcworLy8gICAgICAgICAg
ICAgICAgIHRoYXQgbmVlZCBjbGVhbnVwIGluIHRlYXJkb3duLiBSdW4gb25jZSBiZWZvcmUgZW50
ZXJpbmcgYQorLy8gICAgICAgICAgICAgICAgIHRlc3QgbG9vcC4KKy8vICAgLSB0ZWFyZG93biAt
LSBkbyBjbGVhbnVwIG9uIHNldHVwJ3MgcmV0dXJuIHZhbHVlcyBhZnRlciB0ZXN0aW5nIGlzIGNv
bXBsZXRlCisvLyAgIC0gZ2VuZXJhdGUgLS0gZ2VuZXJhdGUgYSB2YWxpZCBzZXQgb2YgcmFuZG9t
IGFyZ3VtZW50cyBmb3IgdGhlIEdMIGZ1bmN0aW9uCisvLyAgIC0gcmV0dXJuVmFsdWVDbGVhbnVw
IC0tIGRvIGNsZWFudXAgb24gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHRlc3RlZCBHTCBmdW5jdGlv
bgorLy8gICAtIGNsZWFudXAgIC0tIGRvIGNsZWFudXAgb24gZ2VuZXJhdGVkIGFyZ3VtZW50cyBm
cm9tIGdlbmVyYXRlCisvLyAgIC0gY2hlY2tBcmdWYWxpZGl0eSAtLSBjaGVjayBpZiBwYXNzZWQg
YXJncyBhcmUgdmFsaWQuIEhhcyBhIGNhbGwgc2lnbmF0dXJlCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGF0IG1hdGNoZXMgZ2VuZXJhdGUncyByZXR1cm4gdmFsdWUuIFJldHVybnMgdHJ1
ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJncyBhcmUgdmFsaWQsIGZhbHNlIGlm
IG5vdC4KKy8vCisvLyAgIEV4YW1wbGUgdGVzdCBsb29wIHRoYXQgZGVtb25zdHJhdGVzIGhvdyB0
aGUgZnVuY3Rpb24gYXJncyBhbmQgcmV0dXJuCisvLyAgIHZhbHVlcyBmbG93IHRvZ2V0aGVyOgor
Ly8KKy8vICAgdmFyIHNldHVwQXJncyA9IGFyZ0dlbi5zZXR1cCgpOworLy8gICBmb3IgKHZhciBp
PTA7IGk8bnVtYmVyT2ZUZXN0czsgaSsrKSB7CisvLyAgICAgdmFyIGdlbmVyYXRlZEFyZ3MgPSBh
cmdHZW4uZ2VuZXJhdGUuYXBwbHkoYXJnR2VuLCBzZXR1cEFyZ3MpOworLy8gICAgIHZhciB2YWxp
ZEFyZ3MgPSBhcmdHZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShhcmdHZW4sIGdlbmVyYXRlZEFy
Z3MpOworLy8gICAgIHZhciBydiA9IGNhbGwgdGhlIEdMIGZ1bmN0aW9uIHdpdGggZ2VuZXJhdGVk
QXJnczsKKy8vICAgICBhcmdHZW4ucmV0dXJuVmFsdWVDbGVhbnVwKHJ2KTsKKy8vICAgICBhcmdH
ZW4uY2xlYW51cC5hcHBseShhcmdHZW4sIGdlbmVyYXRlZEFyZ3MpOworLy8gICB9CisvLyAgIGFy
Z0dlbi50ZWFyZG93bi5hcHBseShhcmdHZW4sIHNldHVwQXJncyk7CisvLworQXJnR2VuZXJhdG9y
cyA9IHsKKworLy8gR0wgZnVuY3Rpb25zIGluIGFscGhhYmV0aWNhbCBvcmRlcgorCisvLyBDCisK
KyAgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkg
eworICAgICAgcmV0dXJuIFtNYXRoLnJhbmRvbSgpID4gMC41ID8gbnVsbCA6IEdMLmNyZWF0ZUZy
YW1lYnVmZmVyKCldOworICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKGZi
bykgeworICAgICAgaWYgKGZibyAhPSBudWxsKQorICAgICAgICBHTC5iaW5kRnJhbWVidWZmZXIo
R0wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICByZXR1cm4gZmJvID09IG51bGwgfHwgR0wuaXNG
cmFtZWJ1ZmZlcihmYm8pOworICAgIH0sCisgICAgY2xlYW51cCA6IGZ1bmN0aW9uKGZibyl7Cisg
ICAgICBHTC5iaW5kRnJhbWVidWZmZXIoR0wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgaWYg
KGZibyAhPSBudWxsKQorICAgICAgICB0cnl7IEdMLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7IH0g
Y2F0Y2goZSkge30KKyAgICB9CisgIH0sCisgIGNsZWFyIDogeworICAgIGdlbmVyYXRlIDogZnVu
Y3Rpb24oKSB7IHJldHVybiBbY2xlYXJNYXNrLnJhbmRvbSgpXTsgfSwKKyAgICBjaGVja0FyZ1Zh
bGlkaXR5IDogZnVuY3Rpb24obWFzaykgeyByZXR1cm4gY2xlYXJNYXNrLmhhcyhtYXNrKTsgfQor
ICB9LAorICBjbGVhckNvbG9yIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVy
biByYW5kb21Db2xvcigpOyB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLmNsZWFy
Q29sb3IoMCwwLDAsMCk7IH0KKyAgfSwKKyAgY2xlYXJEZXB0aCA6IHsKKyAgICBnZW5lcmF0ZSA6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gW01hdGgucmFuZG9tKCldOyB9LAorICAgIHRlYXJkb3duIDog
ZnVuY3Rpb24oKSB7IEdMLmNsZWFyRGVwdGgoMSk7IH0KKyAgfSwKKyAgY2xlYXJTdGVuY2lsIDog
eworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbcmFuZG9tU3RlbmNpbCgpXTsg
fSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9uKCkgeyBHTC5jbGVhclN0ZW5jaWwoMCk7IH0KKyAg
fSwKKyAgY29sb3JNYXNrIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICBy
ZXR1cm4gW3JhbmRvbUJvb2woKSwgcmFuZG9tQm9vbCgpLCByYW5kb21Cb29sKCksIHJhbmRvbUJv
b2woKV07CisgICAgfSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9uKCkgeyBHTC5jb2xvck1hc2so
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7IH0KKyAgfSwKKyAgY29tcGlsZVNoYWRlciA6IHt9LCAv
LyBGSVhNRQorICBjb3B5VGV4SW1hZ2UyRCA6IHt9LCAvLyBGSVhNRQorICBjb3B5VGV4U3ViSW1h
Z2UyRCA6IHt9LCAvLyBGSVhNRQorICBjcmVhdGVCdWZmZXIgOiB7CisgICAgZ2VuZXJhdGUgOiBm
dW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9LAorICAgIHJldHVyblZhbHVlQ2xlYW51cCA6IGZ1bmN0
aW9uKG8pIHsgR0wuZGVsZXRlQnVmZmVyKG8pOyB9CisgIH0sCisgIGNyZWF0ZUZyYW1lYnVmZmVy
IDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSwKKyAgICByZXR1
cm5WYWx1ZUNsZWFudXAgOiBmdW5jdGlvbihvKSB7IEdMLmRlbGV0ZUZyYW1lYnVmZmVyKG8pOyB9
CisgIH0sCisgIGNyZWF0ZVByb2dyYW0gOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsg
cmV0dXJuIFtdOyB9LAorICAgIHJldHVyblZhbHVlQ2xlYW51cCA6IGZ1bmN0aW9uKG8pIHsgR0wu
ZGVsZXRlUHJvZ3JhbShvKTsgfQorICB9LAorICBjcmVhdGVSZW5kZXJidWZmZXIgOiB7CisgICAg
Z2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9LAorICAgIHJldHVyblZhbHVlQ2xl
YW51cCA6IGZ1bmN0aW9uKG8pIHsgR0wuZGVsZXRlUmVuZGVyYnVmZmVyKG8pOyB9CisgIH0sCisg
IGNyZWF0ZVNoYWRlciA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW3No
YWRlclR5cGUucmFuZG9tKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0
KSB7IHJldHVybiBzaGFkZXJUeXBlLmhhcyh0KTsgfSwKKyAgICByZXR1cm5WYWx1ZUNsZWFudXAg
OiBmdW5jdGlvbihvKSB7IEdMLmRlbGV0ZVNoYWRlcihvKTsgfQorICB9LAorICBjcmVhdGVUZXh0
dXJlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSwKKyAgICBy
ZXR1cm5WYWx1ZUNsZWFudXAgOiBmdW5jdGlvbihvKSB7IEdMLmRlbGV0ZVRleHR1cmUobyk7IH0K
KyAgfSwKKyAgY3VsbEZhY2UgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJu
IFtjdWxsRmFjZS5yYW5kb20oKV07IH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9u
KGYpIHsgcmV0dXJuIGN1bGxGYWNlLmhhcyhmKTsgfSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9u
KCkgeyBHTC5jdWxsRmFjZShHTC5CQUNLKTsgfQorICB9CisKK307CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2NvbmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtRF9HLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdH
ZW5lcmF0b3JzLURfRy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGU2MDIwMDJmNDI1YWNiMWI1MTA2Yzg1Yjg1
ODcyNjkyMTdkMmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5l
cmF0b3JzLURfRy5qcwpAQCAtMCwwICsxLDIzNSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisvLyBBcmdHZW5lcmF0b3JzIGNvbnRhaW5zIGFyZ3VtZW50IGdl
bmVyYXRvcnMgZm9yIFdlYkdMIGZ1bmN0aW9ucy4KKy8vIFRoZSBhcmd1bWVudCBnZW5lcmF0b3Jz
IGFyZSB1c2VkIGZvciBydW5uaW5nIHJhbmRvbSB0ZXN0cyBhZ2FpbnN0IHRoZSBXZWJHTAorLy8g
ZnVuY3Rpb25zLgorLy8KKy8vIEFyZ0dlbmVyYXRvcnMgaXMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcg
b2YgZnVuY3Rpb25OYW1lIDogYXJnR2VuIC1wcm9wZXJ0aWVzLgorLy8KKy8vIGZ1bmN0aW9uTmFt
ZSBpcyBhIFdlYkdMIGNvbnRleHQgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGFyZ0dlbiBpcyBhbiBh
cmd1bWVudAorLy8gZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgcmVxdWly
ZW1lbnRzIHRvIHJ1bgorLy8gcmFuZG9tbHkgZ2VuZXJhdGVkIHRlc3RzIG9uIHRoZSBXZWJHTCBm
dW5jdGlvbi4KKy8vCisvLyBBbiBhcmdHZW4gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1ldGhv
ZHM6CisvLyAgIC0gc2V0dXAgICAgLS0gc2V0IHVwIHN0YXRlIGZvciB0ZXN0aW5nIHRoZSBHTCBm
dW5jdGlvbiwgcmV0dXJucyB2YWx1ZXMKKy8vICAgICAgICAgICAgICAgICB0aGF0IG5lZWQgY2xl
YW51cCBpbiB0ZWFyZG93bi4gUnVuIG9uY2UgYmVmb3JlIGVudGVyaW5nIGEKKy8vICAgICAgICAg
ICAgICAgICB0ZXN0IGxvb3AuCisvLyAgIC0gdGVhcmRvd24gLS0gZG8gY2xlYW51cCBvbiBzZXR1
cCdzIHJldHVybiB2YWx1ZXMgYWZ0ZXIgdGVzdGluZyBpcyBjb21wbGV0ZQorLy8gICAtIGdlbmVy
YXRlIC0tIGdlbmVyYXRlIGEgdmFsaWQgc2V0IG9mIHJhbmRvbSBhcmd1bWVudHMgZm9yIHRoZSBH
TCBmdW5jdGlvbgorLy8gICAtIHJldHVyblZhbHVlQ2xlYW51cCAtLSBkbyBjbGVhbnVwIG9uIHZh
bHVlIHJldHVybmVkIGJ5IHRoZSB0ZXN0ZWQgR0wgZnVuY3Rpb24KKy8vICAgLSBjbGVhbnVwICAt
LSBkbyBjbGVhbnVwIG9uIGdlbmVyYXRlZCBhcmd1bWVudHMgZnJvbSBnZW5lcmF0ZQorLy8gICAt
IGNoZWNrQXJnVmFsaWRpdHkgLS0gY2hlY2sgaWYgcGFzc2VkIGFyZ3MgYXJlIHZhbGlkLiBIYXMg
YSBjYWxsIHNpZ25hdHVyZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVz
IGdlbmVyYXRlJ3MgcmV0dXJuIHZhbHVlLiBSZXR1cm5zIHRydWUKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGFyZ3MgYXJlIHZhbGlkLCBmYWxzZSBpZiBub3QuCisvLworLy8gICBFeGFt
cGxlIHRlc3QgbG9vcCB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdGhlIGZ1bmN0aW9uIGFyZ3MgYW5k
IHJldHVybgorLy8gICB2YWx1ZXMgZmxvdyB0b2dldGhlcjoKKy8vCisvLyAgIHZhciBzZXR1cEFy
Z3MgPSBhcmdHZW4uc2V0dXAoKTsKKy8vICAgZm9yICh2YXIgaT0wOyBpPG51bWJlck9mVGVzdHM7
IGkrKykgeworLy8gICAgIHZhciBnZW5lcmF0ZWRBcmdzID0gYXJnR2VuLmdlbmVyYXRlLmFwcGx5
KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vICAgICB2YXIgdmFsaWRBcmdzID0gYXJnR2VuLmNoZWNr
QXJnVmFsaWRpdHkuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgICB2YXIgcnYg
PSBjYWxsIHRoZSBHTCBmdW5jdGlvbiB3aXRoIGdlbmVyYXRlZEFyZ3M7CisvLyAgICAgYXJnR2Vu
LnJldHVyblZhbHVlQ2xlYW51cChydik7CisvLyAgICAgYXJnR2VuLmNsZWFudXAuYXBwbHkoYXJn
R2VuLCBnZW5lcmF0ZWRBcmdzKTsKKy8vICAgfQorLy8gICBhcmdHZW4udGVhcmRvd24uYXBwbHko
YXJnR2VuLCBzZXR1cEFyZ3MpOworLy8KK0FyZ0dlbmVyYXRvcnMgPSB7CisKKy8vIEdMIGZ1bmN0
aW9ucyBpbiBhbHBoYWJldGljYWwgb3JkZXIKKworLy8gRAorCisgIGRlbGV0ZUJ1ZmZlciA6IHsK
KyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW0dMLmNyZWF0ZUJ1ZmZlcigpXTsg
fSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24obykgeworICAgICAgR0wuYmluZEJ1
ZmZlcihHTC5BUlJBWV9CVUZGRVIsIG8pOworICAgICAgcmV0dXJuIEdMLmlzQnVmZmVyKG8pOwor
ICAgIH0sCisgICAgY2xlYW51cCA6IGZ1bmN0aW9uKG8pIHsKKyAgICAgIEdMLmJpbmRCdWZmZXIo
R0wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgIHRyeSB7IEdMLmRlbGV0ZUJ1ZmZlcihvKTsg
fSBjYXRjaChlKSB7fQorICAgIH0KKyAgfSwKKyAgZGVsZXRlRnJhbWVidWZmZXIgOiB7CisgICAg
Z2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtHTC5jcmVhdGVGcmFtZWJ1ZmZlcigpXTsg
fSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24obykgeworICAgICAgR0wuYmluZEZy
YW1lYnVmZmVyKEdMLkZSQU1FQlVGRkVSLCBvKTsKKyAgICAgIHJldHVybiBHTC5pc0ZyYW1lYnVm
ZmVyKG8pOworICAgIH0sCisgICAgY2xlYW51cCA6IGZ1bmN0aW9uKG8pIHsKKyAgICAgIEdMLmJp
bmRGcmFtZWJ1ZmZlcihHTC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICB0cnkgeyBHTC5kZWxl
dGVGcmFtZWJ1ZmZlcihvKTsgfSBjYXRjaChlKSB7fQorICAgIH0KKyAgfSwKKyAgZGVsZXRlUHJv
Z3JhbSA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW0dMLmNyZWF0ZVBy
b2dyYW0oKV07IH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKG8pIHsgcmV0dXJu
IEdMLmlzUHJvZ3JhbShvKTsgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24obykgeyB0cnkgeyBH
TC5kZWxldGVQcm9ncmFtKG8pOyB9IGNhdGNoKGUpIHt9IH0KKyAgfSwKKyAgZGVsZXRlUmVuZGVy
YnVmZmVyIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbR0wuY3JlYXRl
UmVuZGVyYnVmZmVyKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbihvKSB7
CisgICAgICBHTC5iaW5kUmVuZGVyYnVmZmVyKEdMLlJFTkRFUkJVRkZFUiwgbyk7CisgICAgICBy
ZXR1cm4gR0wuaXNSZW5kZXJidWZmZXIobyk7CisgICAgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rp
b24obykgeworICAgICAgR0wuYmluZFJlbmRlcmJ1ZmZlcihHTC5SRU5ERVJCVUZGRVIsIG51bGwp
OworICAgICAgdHJ5IHsgR0wuZGVsZXRlUmVuZGVyYnVmZmVyKG8pOyB9IGNhdGNoKGUpIHt9Cisg
ICAgfQorICB9LAorICBkZWxldGVTaGFkZXIgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigp
IHsgcmV0dXJuIFtHTC5jcmVhdGVTaGFkZXIoc2hhZGVyVHlwZS5yYW5kb20oKSldOyB9LAorICAg
IGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbihvKSB7IHJldHVybiBHTC5pc1NoYWRlcihvKTsg
fSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24obykgeyB0cnkgeyBHTC5kZWxldGVTaGFkZXIobyk7
IH0gY2F0Y2goZSkge30gfQorICB9LAorICBkZWxldGVUZXh0dXJlIDogeworICAgIGdlbmVyYXRl
IDogZnVuY3Rpb24oKSB7IHJldHVybiBbR0wuY3JlYXRlVGV4dHVyZSgpXTsgfSwKKyAgICBjaGVj
a0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24obykgeworICAgICAgR0wuYmluZFRleHR1cmUoR0wuVEVY
VFVSRV8yRCwgbyk7CisgICAgICByZXR1cm4gR0wuaXNUZXh0dXJlKG8pOworICAgIH0sCisgICAg
Y2xlYW51cCA6IGZ1bmN0aW9uKG8pIHsKKyAgICAgIEdMLmJpbmRUZXh0dXJlKEdMLlRFWFRVUkVf
MkQsIG51bGwpOworICAgICAgdHJ5IHsgR0wuZGVsZXRlVGV4dHVyZShvKTsgfSBjYXRjaChlKSB7
fQorICAgIH0KKyAgfSwKKyAgZGVwdGhGdW5jIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24o
KSB7IHJldHVybiBbZGVwdGhGdW5jRnVuYy5yYW5kb20oKV07IH0sCisgICAgY2hlY2tBcmdWYWxp
ZGl0eSA6IGZ1bmN0aW9uKGYpIHsgcmV0dXJuIGRlcHRoRnVuY0Z1bmMuaGFzKGYpOyB9LAorICAg
IHRlYXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLmRlcHRoRnVuYyhHTC5MRVNTKTsgfQorICB9LAor
ICBkZXB0aE1hc2sgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtyYW5k
b21Cb29sKCldOyB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLmRlcHRoRnVuYyhH
TC5UUlVFKTsgfQorICB9LAorICBkZXB0aFJhbmdlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rp
b24oKSB7IHJldHVybiBbTWF0aC5yYW5kb20oKSwgTWF0aC5yYW5kb20oKV07IH0sCisgICAgdGVh
cmRvd24gOiBmdW5jdGlvbigpIHsgR0wuZGVwdGhSYW5nZSgwLCAxKTsgfQorICB9LAorICBkZXRh
Y2hTaGFkZXIgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwID0g
R0wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgdmFyIHNoID0gR0wuY3JlYXRlU2hhZGVyKHNoYWRl
clR5cGUucmFuZG9tKCkpOworICAgICAgR0wuYXR0YWNoU2hhZGVyKHAsIHNoKTsKKyAgICAgIHJl
dHVybiBbcCwgc2hdOworICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHAs
IHNoKSB7CisgICAgICByZXR1cm4gR0wuaXNQcm9ncmFtKHApICYmIEdMLmlzU2hhZGVyKHNoKSAm
JiBHTC5nZXRBdHRhY2hlZFNoYWRlcnMocCkuaGFzKHNoKTsKKyAgICB9LAorICAgIGNsZWFudXAg
OiBmdW5jdGlvbihwLCBzaCkgeworICAgICAgdHJ5IHtHTC5kZWxldGVQcm9ncmFtKHApO30gY2F0
Y2goZSkge30KKyAgICAgIHRyeSB7R0wuZGVsZXRlU2hhZGVyKHNoKTt9IGNhdGNoKGUpIHt9Cisg
ICAgfQorICB9LAorICBkaXNhYmxlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJl
dHVybiBbZW5hYmxlQ2FwLnJhbmRvbSgpXTsgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDogZnVu
Y3Rpb24oYykgeyByZXR1cm4gZW5hYmxlQ2FwLmhhcyhjKTsgfSwKKyAgICBjbGVhbnVwIDogZnVu
Y3Rpb24oYykgeyBpZiAoYyA9PSBHTC5ESVRIRVIpIEdMLmVuYWJsZShjKTsgfQorICB9LAorICBk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsg
cmV0dXJuIFtyYW5kb21WZXJ0ZXhBdHRyaWJ1dGUoKV07IH0sCisgICAgY2hlY2tBcmdWYWxpZGl0
eSA6IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGlzVmVydGV4QXR0cmlidXRlKHYpOyB9CisgIH0sCisg
IGRyYXdBcnJheXMgOiB7fSwgLy8gRklYTUUKKyAgZHJhd0VsZW1lbnRzIDoge30sIC8vIEZJWE1F
CisKKy8vIEUKKworICBlbmFibGUgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0
dXJuIFtlbmFibGVDYXAucmFuZG9tKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5j
dGlvbihjKSB7IHJldHVybiBlbmFibGVDYXAuaGFzKGMpOyB9LAorICAgIGNsZWFudXAgOiBmdW5j
dGlvbihjKSB7IGlmIChjICE9IEdMLkRJVEhFUikgR0wuZGlzYWJsZShjKTsgfQorICB9LAorICBl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gW3JhbmRvbVZlcnRleEF0dHJpYnV0ZSgpXTsgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5
IDogZnVuY3Rpb24odikgeyByZXR1cm4gaXNWZXJ0ZXhBdHRyaWJ1dGUoY2FzdFRvSW50KHYpKTsg
fSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24odikgeyBHTC5kaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkodik7IH0KKyAgfSwKKworLy8gRgorCisgIGZpbmlzaCA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gW107IH0KKyAgfSwKKyAgZmx1c2ggOiB7CisgICAgZ2VuZXJhdGUg
OiBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9CisgIH0sCisgIGZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyIDoge30sIC8vIEZJWE1FCisgIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDoge30sIC8vIEZJWE1F
CisgIGZyb250RmFjZSA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW2Zy
b250RmFjZU1vZGUucmFuZG9tKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlv
bihjKSB7IHJldHVybiBmcm9udEZhY2VNb2RlLmhhcyhjKTsgfSwKKyAgICBjbGVhbnVwIDogZnVu
Y3Rpb24oYykgeyBHTC5mcm9udEZhY2UoR0wuQ0NXKTsgfQorICB9LAorCisvLyBHLTEKKworICBn
ZW5lcmF0ZU1pcG1hcCA6IHsKKyAgICBzZXR1cCA6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHRl
eCA9IEdMLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgIHZhciB0ZXgyID0gR0wuY3JlYXRlVGV4dHVy
ZSgpOworICAgICAgR0wuYmluZFRleHR1cmUoR0wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgIEdM
LmJpbmRUZXh0dXJlKEdMLlRFWFRVUkVfQ1VCRV9NQVAsIHRleDIpOworICAgICAgdmFyIHBpeCA9
IG5ldyBVaW50OEFycmF5KDE2KjE2KjQpOworICAgICAgR0wudGV4SW1hZ2UyRChHTC5URVhUVVJF
XzJELCAwLCBHTC5SR0JBLCAxNiwgMTYsIDAsIEdMLlJHQkEsIEdMLlVOU0lHTkVEX0JZVEUsIHBp
eCk7CisgICAgICBHTC50ZXhJbWFnZTJEKEdMLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwg
MCwgR0wuUkdCQSwgMTYsIDE2LCAwLCBHTC5SR0JBLCBHTC5VTlNJR05FRF9CWVRFLCBwaXgpOwor
ICAgICAgR0wudGV4SW1hZ2UyRChHTC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIEdM
LlJHQkEsIDE2LCAxNiwgMCwgR0wuUkdCQSwgR0wuVU5TSUdORURfQllURSwgcGl4KTsKKyAgICAg
IEdMLnRleEltYWdlMkQoR0wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBHTC5SR0JB
LCAxNiwgMTYsIDAsIEdMLlJHQkEsIEdMLlVOU0lHTkVEX0JZVEUsIHBpeCk7CisgICAgICBHTC50
ZXhJbWFnZTJEKEdMLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgR0wuUkdCQSwgMTYs
IDE2LCAwLCBHTC5SR0JBLCBHTC5VTlNJR05FRF9CWVRFLCBwaXgpOworICAgICAgR0wudGV4SW1h
Z2UyRChHTC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIEdMLlJHQkEsIDE2LCAxNiwg
MCwgR0wuUkdCQSwgR0wuVU5TSUdORURfQllURSwgcGl4KTsKKyAgICAgIEdMLnRleEltYWdlMkQo
R0wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBHTC5SR0JBLCAxNiwgMTYsIDAsIEdM
LlJHQkEsIEdMLlVOU0lHTkVEX0JZVEUsIHBpeCk7CisgICAgfSwKKyAgICBnZW5lcmF0ZSA6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gW2JpbmRUZXh0dXJlVGFyZ2V0LnJhbmRvbSgpXTsgfSwKKyAgICBj
aGVja0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24odCkgeyByZXR1cm4gYmluZFRleHR1cmVUYXJnZXQu
aGFzKHQpOyB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rpb24odGV4LCB0ZXgyKSB7CisgICAgICBH
TC5iaW5kVGV4dHVyZShHTC5URVhUVVJFXzJELCBudWxsKTsKKyAgICAgIEdMLmJpbmRUZXh0dXJl
KEdMLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOworICAgICAgR0wuZGVsZXRlVGV4dHVyZSh0ZXgp
OworICAgICAgR0wuZGVsZXRlVGV4dHVyZSh0ZXgyKTsKKyAgICB9CisgIH0sCisgIGdldEFjdGl2
ZUF0dHJpYiA6IHsKKyAgLyogRklYTUUgdGhlIHF1ZXJpZWQgYXR0cmliIG5lZWRzIHRvIGJlIGFu
IGFjdGl2ZSBvbmUKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHByb2dy
YW0gPSBHTC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICByZXR1cm4gW3Byb2dyYW0sIHJhbmRvbVZl
cnRleEF0dHJpYnV0ZSgpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlv
bihwcm9ncmFtLCBpbmRleCkgeworICAgICAgcmV0dXJuIEdMLmlzUHJvZ3JhbShwcm9ncmFtKSAm
JiBpc1ZlcnRleEF0dHJpYnV0ZShpbmRleCk7CisgICAgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rp
b24ocHJvZ3JhbSwgaW5kZXgpIHsKKyAgICAgIEdMLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgfQorICAqLworICB9LAorICBnZXRBY3RpdmVVbmlmb3JtIDoge30sIC8vIEZJWE1FCisgIGdl
dEF0dGFjaGVkU2hhZGVycyA6IHsKKyAgICBzZXR1cCA6IGZ1bmN0aW9uKCkgeworICAgICAgdmFy
IHByb2dyYW0gPSBHTC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICB2YXIgczEgPSBHTC5jcmVhdGVT
aGFkZXIoR0wuVkVSVEVYX1NIQURFUik7CisgICAgICB2YXIgczIgPSBHTC5jcmVhdGVTaGFkZXIo
R0wuRlJBR01FTlRfU0hBREVSKTsKKyAgICAgIEdMLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzMSk7
CisgICAgICBHTC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgczIpOworICAgICAgcmV0dXJuIFtwcm9n
cmFtLCBzMSwgczJdOworICAgIH0sCisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbihwcm9ncmFtLCBz
MSwgczIpIHsKKyAgICAgIHJldHVybiBbcHJvZ3JhbV0KKyAgICB9LAorICAgIGNoZWNrQXJnVmFs
aWRpdHkgOiBmdW5jdGlvbihwcm9ncmFtKSB7CisgICAgICByZXR1cm4gR0wuaXNQcm9ncmFtKHBy
b2dyYW0pOworICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbihwcm9ncmFtLCBzMSwgczIp
IHsKKyAgICAgIEdMLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICBHTC5kZWxldGVTaGFk
ZXIoczEpOworICAgICAgR0wuZGVsZXRlU2hhZGVyKHMyKTsKKyAgICB9CisgIH0KKworfTsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3JzLUdfSS5qcyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUv
Y29uZm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1HX0kuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFhMjQ3NDI0MTQz
Yzg1YmQyNDYxZjFiMmIwNDMzZjczNmM1NGNiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29u
Zm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1HX0kuanMKQEAgLTAsMCArMSwxMjQgQEAKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gQXJnR2VuZXJhdG9ycyBjb250
YWlucyBhcmd1bWVudCBnZW5lcmF0b3JzIGZvciBXZWJHTCBmdW5jdGlvbnMuCisvLyBUaGUgYXJn
dW1lbnQgZ2VuZXJhdG9ycyBhcmUgdXNlZCBmb3IgcnVubmluZyByYW5kb20gdGVzdHMgYWdhaW5z
dCB0aGUgV2ViR0wKKy8vIGZ1bmN0aW9ucy4KKy8vCisvLyBBcmdHZW5lcmF0b3JzIGlzIGFuIG9i
amVjdCBjb25zaXN0aW5nIG9mIGZ1bmN0aW9uTmFtZSA6IGFyZ0dlbiAtcHJvcGVydGllcy4KKy8v
CisvLyBmdW5jdGlvbk5hbWUgaXMgYSBXZWJHTCBjb250ZXh0IGZ1bmN0aW9uIG5hbWUgYW5kIHRo
ZSBhcmdHZW4gaXMgYW4gYXJndW1lbnQKKy8vIGdlbmVyYXRvciBvYmplY3QgdGhhdCBlbmNhcHN1
bGF0ZXMgdGhlIHJlcXVpcmVtZW50cyB0byBydW4KKy8vIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZXN0
cyBvbiB0aGUgV2ViR0wgZnVuY3Rpb24uCisvLworLy8gQW4gYXJnR2VuIG9iamVjdCBoYXMgdGhl
IGZvbGxvd2luZyBtZXRob2RzOgorLy8gICAtIHNldHVwICAgIC0tIHNldCB1cCBzdGF0ZSBmb3Ig
dGVzdGluZyB0aGUgR0wgZnVuY3Rpb24sIHJldHVybnMgdmFsdWVzCisvLyAgICAgICAgICAgICAg
ICAgdGhhdCBuZWVkIGNsZWFudXAgaW4gdGVhcmRvd24uIFJ1biBvbmNlIGJlZm9yZSBlbnRlcmlu
ZyBhCisvLyAgICAgICAgICAgICAgICAgdGVzdCBsb29wLgorLy8gICAtIHRlYXJkb3duIC0tIGRv
IGNsZWFudXAgb24gc2V0dXAncyByZXR1cm4gdmFsdWVzIGFmdGVyIHRlc3RpbmcgaXMgY29tcGxl
dGUKKy8vICAgLSBnZW5lcmF0ZSAtLSBnZW5lcmF0ZSBhIHZhbGlkIHNldCBvZiByYW5kb20gYXJn
dW1lbnRzIGZvciB0aGUgR0wgZnVuY3Rpb24KKy8vICAgLSByZXR1cm5WYWx1ZUNsZWFudXAgLS0g
ZG8gY2xlYW51cCBvbiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgdGVzdGVkIEdMIGZ1bmN0aW9uCisv
LyAgIC0gY2xlYW51cCAgLS0gZG8gY2xlYW51cCBvbiBnZW5lcmF0ZWQgYXJndW1lbnRzIGZyb20g
Z2VuZXJhdGUKKy8vICAgLSBjaGVja0FyZ1ZhbGlkaXR5IC0tIGNoZWNrIGlmIHBhc3NlZCBhcmdz
IGFyZSB2YWxpZC4gSGFzIGEgY2FsbCBzaWduYXR1cmUKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoYXQgbWF0Y2hlcyBnZW5lcmF0ZSdzIHJldHVybiB2YWx1ZS4gUmV0dXJucyB0cnVlCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmdzIGFyZSB2YWxpZCwgZmFsc2UgaWYgbm90
LgorLy8KKy8vICAgRXhhbXBsZSB0ZXN0IGxvb3AgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRoZSBm
dW5jdGlvbiBhcmdzIGFuZCByZXR1cm4KKy8vICAgdmFsdWVzIGZsb3cgdG9nZXRoZXI6CisvLwor
Ly8gICB2YXIgc2V0dXBBcmdzID0gYXJnR2VuLnNldHVwKCk7CisvLyAgIGZvciAodmFyIGk9MDsg
aTxudW1iZXJPZlRlc3RzOyBpKyspIHsKKy8vICAgICB2YXIgZ2VuZXJhdGVkQXJncyA9IGFyZ0dl
bi5nZW5lcmF0ZS5hcHBseShhcmdHZW4sIHNldHVwQXJncyk7CisvLyAgICAgdmFyIHZhbGlkQXJn
cyA9IGFyZ0dlbi5jaGVja0FyZ1ZhbGlkaXR5LmFwcGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7
CisvLyAgICAgdmFyIHJ2ID0gY2FsbCB0aGUgR0wgZnVuY3Rpb24gd2l0aCBnZW5lcmF0ZWRBcmdz
OworLy8gICAgIGFyZ0dlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOworLy8gICAgIGFyZ0dlbi5j
bGVhbnVwLmFwcGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgIH0KKy8vICAgYXJnR2Vu
LnRlYXJkb3duLmFwcGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vCitBcmdHZW5lcmF0b3JzID0g
eworCisvLyBHTCBmdW5jdGlvbnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCisKKy8vIEctMgorCisg
IGdldEF0dHJpYkxvY2F0aW9uIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAg
ICB2YXIgcHJvZ3JhbSA9IEdMLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgIHZhciBuYW1lID0gcmFu
ZG9tTmFtZSgpOworICAgICAgR0wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHJhbmRvbVZl
cnRleEF0dHJpYnV0ZSgpLCBuYW1lKTsKKyAgICAgIHJldHVybiBbcHJvZ3JhbSwgbmFtZV07Cisg
ICAgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDogZnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSkgewor
ICAgICAgcmV0dXJuIEdMLmlzUHJvZ3JhbShwcm9ncmFtKSAmJiBpc1ZhbGlkTmFtZShuYW1lKTsK
KyAgICB9LAorICAgIGNsZWFudXAgOiBmdW5jdGlvbihwcm9ncmFtLCBuYW1lKSB7CisgICAgICB0
cnkgeyBHTC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOyB9IGNhdGNoKGUpIHt9CisgICAgfQorICB9
LC8qCisgIGdldFBhcmFtZXRlciA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gW2dldFBhcmFtZXRlclBuYW1lLnJhbmRvbSgpXTsgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5
IDogZnVuY3Rpb24ocCkgeyByZXR1cm4gZ2V0UGFyYW1ldGVyUG5hbWUuaGFzKHApOyB9CisgIH0s
CisgIGdldEJ1ZmZlclBhcmFtZXRlciA6IHt9LCAvLyBGSVhNRQorICBnZXRFcnJvciA6IHsKKyAg
ICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0KKyAgfSwKKyAgZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDoge30sIC8vIEZJWE1FCisgIGdldFByb2dyYW1QYXJh
bWV0ZXIgOiB7fSwgLy8gRklYTUUKKyAgZ2V0UHJvZ3JhbUluZm9Mb2cgOiB7fSwgLy8gRklYTUUK
KyAgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDoge30sIC8vIEZJWE1FCisgIGdldFNoYWRlclBh
cmFtZXRlciA6IHt9LCAvLyBGSVhNRQorICBnZXRTaGFkZXJJbmZvTG9nIDoge30sIC8vIEZJWE1F
CisgIGdldFNoYWRlclNvdXJjZSA6IHt9LCAvLyBGSVhNRQorICBnZXRUZXhQYXJhbWV0ZXIgOiB7
fSwgLy8gRklYTUUKKyAgZ2V0VW5pZm9ybSA6IHt9LCAvLyBGSVhNRQorICBnZXRVbmlmb3JtTG9j
YXRpb24gOiB7fSwgLy8gRklYTUUKKyAgZ2V0VmVydGV4QXR0cmliIDoge30sIC8vIEZJWE1FCisg
IGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHt9LCAvLyBGSVhNRQorCisvLyBICisKKyAgaGludCA6
IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gW0dMLkdFTkVSQVRFX01JUE1B
UF9ISU5ULCBtaXBtYXBIaW50LnJhbmRvbSgpXTsgfSwKKyAgICBjaGVja1ZhbGlkQXJncyA6IGZ1
bmN0aW9uKGgsIG0pIHsKKyAgICAgIHJldHVybiBoID09IEdMLkdFTkVSQVRFX01JUE1BUF9ISU5U
ICYmIG1pcG1hcEhpbnQuaGFzKG0pOworICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigp
eyBHTC5oaW50KEdMLkdFTkVSQVRFX01JUE1BUF9ISU5ULCBHTC5ET05UX0NBUkUpOyB9CisgIH0s
CisKKy8vIEkKKworICBpc0J1ZmZlciA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gW0dMLmNyZWF0ZUJ1ZmZlcigpXTsgfSwKKyAgICBjbGVhbnVwIDogZnVuY3Rpb24obykg
eyB0cnkgeyBHTC5kZWxldGVCdWZmZXIobyk7IH0gY2F0Y2goZSkge30gfQorICB9LAorICBpc0Vu
YWJsZWQgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtlbmFibGVDYXAu
cmFuZG9tKCldOyB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbihjKSB7IHJldHVy
biBlbmFibGVDYXAuaGFzKGMpOyB9CisgIH0sCisgIGlzRnJhbWVidWZmZXIgOiB7CisgICAgZ2Vu
ZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtHTC5jcmVhdGVGcmFtZWJ1ZmZlcigpXTsgfSwK
KyAgICBjbGVhbnVwIDogZnVuY3Rpb24obykgeyB0cnkgeyBHTC5kZWxldGVGcmFtZWJ1ZmZlcihv
KTsgfSBjYXRjaChlKSB7fSB9CisgIH0sCisgIGlzUHJvZ3JhbSA6IHsKKyAgICBnZW5lcmF0ZSA6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gW0dMLmNyZWF0ZVByb2dyYW0oKV07IH0sCisgICAgY2xlYW51
cCA6IGZ1bmN0aW9uKG8pIHsgdHJ5IHsgR0wuZGVsZXRlUHJvZ3JhbShvKTsgfSBjYXRjaChlKSB7
fSB9CisgIH0sCisgIGlzUmVuZGVyYnVmZmVyIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24o
KSB7IHJldHVybiBbR0wuY3JlYXRlUmVuZGVyYnVmZmVyKCldOyB9LAorICAgIGNsZWFudXAgOiBm
dW5jdGlvbihvKSB7IHRyeSB7IEdMLmRlbGV0ZVJlbmRlcmJ1ZmZlcihvKTsgfSBjYXRjaChlKSB7
fSB9CisgIH0sCisgIGlzU2hhZGVyIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJl
dHVybiBbR0wuY3JlYXRlU2hhZGVyKHNoYWRlclR5cGUucmFuZG9tKCkpXTsgfSwKKyAgICBjbGVh
bnVwIDogZnVuY3Rpb24obykgeyB0cnkgeyBHTC5kZWxldGVTaGFkZXIobyk7IH0gY2F0Y2goZSkg
e30gfQorICB9LAorICBpc1RleHR1cmUgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsg
cmV0dXJuIFtHTC5jcmVhdGVUZXh0dXJlKCldOyB9LAorICAgIGNsZWFudXAgOiBmdW5jdGlvbihv
KSB7IHRyeSB7IEdMLmRlbGV0ZVRleHR1cmUobyk7IH0gY2F0Y2goZSkge30gfQorICB9Ki8KKwor
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYXJnR2VuZXJhdG9ycy1MX1MuanMgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2NvbmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtTF9TLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzY2RiM2U2
N2E1YjJiZTQzODQyYjhjNDk3NDFlODliOTlmMjc4ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2NvbmZvcm1hbmNlL2FyZ0dlbmVyYXRvcnMtTF9TLmpzCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8vIEFyZ0dlbmVyYXRvcnMg
Y29udGFpbnMgYXJndW1lbnQgZ2VuZXJhdG9ycyBmb3IgV2ViR0wgZnVuY3Rpb25zLgorLy8gVGhl
IGFyZ3VtZW50IGdlbmVyYXRvcnMgYXJlIHVzZWQgZm9yIHJ1bm5pbmcgcmFuZG9tIHRlc3RzIGFn
YWluc3QgdGhlIFdlYkdMCisvLyBmdW5jdGlvbnMuCisvLworLy8gQXJnR2VuZXJhdG9ycyBpcyBh
biBvYmplY3QgY29uc2lzdGluZyBvZiBmdW5jdGlvbk5hbWUgOiBhcmdHZW4gLXByb3BlcnRpZXMu
CisvLworLy8gZnVuY3Rpb25OYW1lIGlzIGEgV2ViR0wgY29udGV4dCBmdW5jdGlvbiBuYW1lIGFu
ZCB0aGUgYXJnR2VuIGlzIGFuIGFyZ3VtZW50CisvLyBnZW5lcmF0b3Igb2JqZWN0IHRoYXQgZW5j
YXBzdWxhdGVzIHRoZSByZXF1aXJlbWVudHMgdG8gcnVuCisvLyByYW5kb21seSBnZW5lcmF0ZWQg
dGVzdHMgb24gdGhlIFdlYkdMIGZ1bmN0aW9uLgorLy8KKy8vIEFuIGFyZ0dlbiBvYmplY3QgaGFz
IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKy8vICAgLSBzZXR1cCAgICAtLSBzZXQgdXAgc3RhdGUg
Zm9yIHRlc3RpbmcgdGhlIEdMIGZ1bmN0aW9uLCByZXR1cm5zIHZhbHVlcworLy8gICAgICAgICAg
ICAgICAgIHRoYXQgbmVlZCBjbGVhbnVwIGluIHRlYXJkb3duLiBSdW4gb25jZSBiZWZvcmUgZW50
ZXJpbmcgYQorLy8gICAgICAgICAgICAgICAgIHRlc3QgbG9vcC4KKy8vICAgLSB0ZWFyZG93biAt
LSBkbyBjbGVhbnVwIG9uIHNldHVwJ3MgcmV0dXJuIHZhbHVlcyBhZnRlciB0ZXN0aW5nIGlzIGNv
bXBsZXRlCisvLyAgIC0gZ2VuZXJhdGUgLS0gZ2VuZXJhdGUgYSB2YWxpZCBzZXQgb2YgcmFuZG9t
IGFyZ3VtZW50cyBmb3IgdGhlIEdMIGZ1bmN0aW9uCisvLyAgIC0gcmV0dXJuVmFsdWVDbGVhbnVw
IC0tIGRvIGNsZWFudXAgb24gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHRlc3RlZCBHTCBmdW5jdGlv
bgorLy8gICAtIGNsZWFudXAgIC0tIGRvIGNsZWFudXAgb24gZ2VuZXJhdGVkIGFyZ3VtZW50cyBm
cm9tIGdlbmVyYXRlCisvLyAgIC0gY2hlY2tBcmdWYWxpZGl0eSAtLSBjaGVjayBpZiBwYXNzZWQg
YXJncyBhcmUgdmFsaWQuIEhhcyBhIGNhbGwgc2lnbmF0dXJlCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGF0IG1hdGNoZXMgZ2VuZXJhdGUncyByZXR1cm4gdmFsdWUuIFJldHVybnMgdHJ1
ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJncyBhcmUgdmFsaWQsIGZhbHNlIGlm
IG5vdC4KKy8vCisvLyAgIEV4YW1wbGUgdGVzdCBsb29wIHRoYXQgZGVtb25zdHJhdGVzIGhvdyB0
aGUgZnVuY3Rpb24gYXJncyBhbmQgcmV0dXJuCisvLyAgIHZhbHVlcyBmbG93IHRvZ2V0aGVyOgor
Ly8KKy8vICAgdmFyIHNldHVwQXJncyA9IGFyZ0dlbi5zZXR1cCgpOworLy8gICBmb3IgKHZhciBp
PTA7IGk8bnVtYmVyT2ZUZXN0czsgaSsrKSB7CisvLyAgICAgdmFyIGdlbmVyYXRlZEFyZ3MgPSBh
cmdHZW4uZ2VuZXJhdGUuYXBwbHkoYXJnR2VuLCBzZXR1cEFyZ3MpOworLy8gICAgIHZhciB2YWxp
ZEFyZ3MgPSBhcmdHZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShhcmdHZW4sIGdlbmVyYXRlZEFy
Z3MpOworLy8gICAgIHZhciBydiA9IGNhbGwgdGhlIEdMIGZ1bmN0aW9uIHdpdGggZ2VuZXJhdGVk
QXJnczsKKy8vICAgICBhcmdHZW4ucmV0dXJuVmFsdWVDbGVhbnVwKHJ2KTsKKy8vICAgICBhcmdH
ZW4uY2xlYW51cC5hcHBseShhcmdHZW4sIGdlbmVyYXRlZEFyZ3MpOworLy8gICB9CisvLyAgIGFy
Z0dlbi50ZWFyZG93bi5hcHBseShhcmdHZW4sIHNldHVwQXJncyk7CisvLworQXJnR2VuZXJhdG9y
cyA9IHsKKworLy8gR0wgZnVuY3Rpb25zIGluIGFscGhhYmV0aWNhbCBvcmRlcgorCisvLyBMCisK
KyAgbGluZVdpZHRoIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbcmFu
ZG9tTGluZVdpZHRoKCldOyB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLmxpbmVX
aWR0aCgxKTsgfQorICB9LAorICBsaW5rUHJvZ3JhbSA6IHt9LCAvLyBGSVhNRQorCisvLyBQCisg
IHBpeGVsU3RvcmVpIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICByZXR1
cm4gW3BpeGVsU3RvcmVpUG5hbWUucmFuZG9tKCksIHBpeGVsU3RvcmVpUGFyYW0ucmFuZG9tKCld
OworICAgIH0sCisgICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHBuYW1lLCBwYXJhbSkg
eworICAgICAgcmV0dXJuIHBpeGVsU3RvcmVpUG5hbWUuaGFzKHBuYW1lKSAmJiBwaXhlbFN0b3Jl
aVBhcmFtLmhhcyhwYXJhbSk7CisgICAgfSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9uKCkgewor
ICAgICAgR0wucGl4ZWxTdG9yZWkoR0wuUEFDS19BTElHTk1FTlQsIDQpOworICAgICAgR0wucGl4
ZWxTdG9yZWkoR0wuVU5QQUNLX0FMSUdOTUVOVCwgNCk7CisgICAgfQorICB9LAorICBwb2x5Z29u
T2Zmc2V0IDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7IHJldHVybiBbcmFuZG9tRmxv
YXQoKSwgcmFuZG9tRmxvYXQoKV07IH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsgR0wu
cG9seWdvbk9mZnNldCgwLDApOyB9CisgIH0sCisKKy8vIFIKKworICByZWFkUGl4ZWxzIDoge30s
IC8vIEZJWE1FCisgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiB7fSwgLy8gRklYTUUKKworLy8gUy0x
CisKKyAgc2FtcGxlQ292ZXJhZ2UgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0
dXJuIFtyYW5kb21GbG9hdEZyb21SYW5nZSgwLDEpLCByYW5kb21Cb29sKCldIH0sCisgICAgdGVh
cmRvd24gOiBmdW5jdGlvbigpIHsgR0wuc2FtcGxlQ292ZXJhZ2UoMSwgZmFsc2UpOyB9CisgIH0s
CisgIHNjaXNzb3IgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVy
biBbcmFuZG9tSW50KDMwMDApLTE1MDAsIHJhbmRvbUludCgzMDAwKS0xNTAwLCByYW5kb21JbnRG
cm9tUmFuZ2UoMCwzMDAwKSwgcmFuZG9tSW50RnJvbVJhbmdlKDAsMzAwMCldOworICAgIH0sCisg
ICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHgseSx3LGgpIHsKKyAgICAgIHJldHVybiBj
YXN0VG9JbnQodykgPj0gMCAmJiBjYXN0VG9JbnQoaCkgPj0gMDsKKyAgICB9LAorICAgIHRlYXJk
b3duIDogZnVuY3Rpb24oKSB7CisgICAgICBHTC5zY2lzc29yKDAsMCxHTC5jYW52YXMud2lkdGgs
IEdMLmNhbnZhcy5oZWlnaHQpOworICAgIH0KKyAgfSwKKyAgc2hhZGVyU291cmNlIDoge30sIC8v
IEZJWE1FCisgIHN0ZW5jaWxGdW5jIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKXsKKyAg
ICAgIHJldHVybiBbc3RlbmNpbEZ1bmNGdW5jLnJhbmRvbSgpLCByYW5kb21JbnQoTWF4U3RlbmNp
bFZhbHVlKSwgcmFuZG9tSW50KDB4ZmZmZmZmZmYpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFs
aWRpdHkgOiBmdW5jdGlvbihmdW5jLCByZWYsIG1hc2spIHsKKyAgICAgIHJldHVybiBzdGVuY2ls
RnVuY0Z1bmMuaGFzKGZ1bmMpICYmIGNhc3RUb0ludChyZWYpID49IDAgJiYgY2FzdFRvSW50KHJl
ZikgPCBNYXhTdGVuY2lsVmFsdWU7CisgICAgfSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9uKCkg
eworICAgICAgR0wuc3RlbmNpbEZ1bmMoR0wuQUxXQVlTLCAwLCAweGZmZmZmZmZmKTsKKyAgICB9
CisgIH0sCisgIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlv
bigpeworICAgICAgcmV0dXJuIFtjdWxsRmFjZS5yYW5kb20oKSwgc3RlbmNpbEZ1bmNGdW5jLnJh
bmRvbSgpLCByYW5kb21JbnQoTWF4U3RlbmNpbFZhbHVlKSwgcmFuZG9tSW50KDB4ZmZmZmZmZmYp
XTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbihmYWNlLCBmdW5jLCBy
ZWYsIG1hc2spIHsKKyAgICAgIHJldHVybiBjdWxsRmFjZS5oYXMoZmFjZSkgJiYgc3RlbmNpbEZ1
bmNGdW5jLmhhcyhmdW5jKSAmJiBjYXN0VG9JbnQocmVmKSA+PSAwICYmIGNhc3RUb0ludChyZWYp
IDwgTWF4U3RlbmNpbFZhbHVlOworICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsK
KyAgICAgIEdMLnN0ZW5jaWxGdW5jKEdMLkFMV0FZUywgMCwgMHhmZmZmZmZmZik7CisgICAgfQor
ICB9LAorICBzdGVuY2lsTWFzayA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gW3JhbmRvbUludCgweGZmZmZmZmZmKV07IH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigp
IHsgR0wuc3RlbmNpbE1hc2soMHhmZmZmZmZmZik7IH0KKyAgfQorCit9OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
bW9yZS9jb25mb3JtYW5jZS9hcmdHZW5lcmF0b3JzLVNfVi5qcyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2Uv
YXJnR2VuZXJhdG9ycy1TX1YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4MzEwMDAxY2RmOWRiMDdhNTFlOTEy
Y2FjNGZhNzFmNTUwYjI1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYXJn
R2VuZXJhdG9ycy1TX1YuanMKQEAgLTAsMCArMSwyMTIgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gQXJnR2VuZXJhdG9ycyBjb250YWlucyBhcmd1bWVu
dCBnZW5lcmF0b3JzIGZvciBXZWJHTCBmdW5jdGlvbnMuCisvLyBUaGUgYXJndW1lbnQgZ2VuZXJh
dG9ycyBhcmUgdXNlZCBmb3IgcnVubmluZyByYW5kb20gdGVzdHMgYWdhaW5zdCB0aGUgV2ViR0wK
Ky8vIGZ1bmN0aW9ucy4KKy8vCisvLyBBcmdHZW5lcmF0b3JzIGlzIGFuIG9iamVjdCBjb25zaXN0
aW5nIG9mIGZ1bmN0aW9uTmFtZSA6IGFyZ0dlbiAtcHJvcGVydGllcy4KKy8vCisvLyBmdW5jdGlv
bk5hbWUgaXMgYSBXZWJHTCBjb250ZXh0IGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBhcmdHZW4gaXMg
YW4gYXJndW1lbnQKKy8vIGdlbmVyYXRvciBvYmplY3QgdGhhdCBlbmNhcHN1bGF0ZXMgdGhlIHJl
cXVpcmVtZW50cyB0byBydW4KKy8vIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZXN0cyBvbiB0aGUgV2Vi
R0wgZnVuY3Rpb24uCisvLworLy8gQW4gYXJnR2VuIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBt
ZXRob2RzOgorLy8gICAtIHNldHVwICAgIC0tIHNldCB1cCBzdGF0ZSBmb3IgdGVzdGluZyB0aGUg
R0wgZnVuY3Rpb24sIHJldHVybnMgdmFsdWVzCisvLyAgICAgICAgICAgICAgICAgdGhhdCBuZWVk
IGNsZWFudXAgaW4gdGVhcmRvd24uIFJ1biBvbmNlIGJlZm9yZSBlbnRlcmluZyBhCisvLyAgICAg
ICAgICAgICAgICAgdGVzdCBsb29wLgorLy8gICAtIHRlYXJkb3duIC0tIGRvIGNsZWFudXAgb24g
c2V0dXAncyByZXR1cm4gdmFsdWVzIGFmdGVyIHRlc3RpbmcgaXMgY29tcGxldGUKKy8vICAgLSBn
ZW5lcmF0ZSAtLSBnZW5lcmF0ZSBhIHZhbGlkIHNldCBvZiByYW5kb20gYXJndW1lbnRzIGZvciB0
aGUgR0wgZnVuY3Rpb24KKy8vICAgLSByZXR1cm5WYWx1ZUNsZWFudXAgLS0gZG8gY2xlYW51cCBv
biB2YWx1ZSByZXR1cm5lZCBieSB0aGUgdGVzdGVkIEdMIGZ1bmN0aW9uCisvLyAgIC0gY2xlYW51
cCAgLS0gZG8gY2xlYW51cCBvbiBnZW5lcmF0ZWQgYXJndW1lbnRzIGZyb20gZ2VuZXJhdGUKKy8v
ICAgLSBjaGVja0FyZ1ZhbGlkaXR5IC0tIGNoZWNrIGlmIHBhc3NlZCBhcmdzIGFyZSB2YWxpZC4g
SGFzIGEgY2FsbCBzaWduYXR1cmUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbWF0
Y2hlcyBnZW5lcmF0ZSdzIHJldHVybiB2YWx1ZS4gUmV0dXJucyB0cnVlCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBhcmdzIGFyZSB2YWxpZCwgZmFsc2UgaWYgbm90LgorLy8KKy8vICAg
RXhhbXBsZSB0ZXN0IGxvb3AgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRoZSBmdW5jdGlvbiBhcmdz
IGFuZCByZXR1cm4KKy8vICAgdmFsdWVzIGZsb3cgdG9nZXRoZXI6CisvLworLy8gICB2YXIgc2V0
dXBBcmdzID0gYXJnR2VuLnNldHVwKCk7CisvLyAgIGZvciAodmFyIGk9MDsgaTxudW1iZXJPZlRl
c3RzOyBpKyspIHsKKy8vICAgICB2YXIgZ2VuZXJhdGVkQXJncyA9IGFyZ0dlbi5nZW5lcmF0ZS5h
cHBseShhcmdHZW4sIHNldHVwQXJncyk7CisvLyAgICAgdmFyIHZhbGlkQXJncyA9IGFyZ0dlbi5j
aGVja0FyZ1ZhbGlkaXR5LmFwcGx5KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgICAgdmFy
IHJ2ID0gY2FsbCB0aGUgR0wgZnVuY3Rpb24gd2l0aCBnZW5lcmF0ZWRBcmdzOworLy8gICAgIGFy
Z0dlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOworLy8gICAgIGFyZ0dlbi5jbGVhbnVwLmFwcGx5
KGFyZ0dlbiwgZ2VuZXJhdGVkQXJncyk7CisvLyAgIH0KKy8vICAgYXJnR2VuLnRlYXJkb3duLmFw
cGx5KGFyZ0dlbiwgc2V0dXBBcmdzKTsKKy8vCitBcmdHZW5lcmF0b3JzID0geworCisvLyBHTCBm
dW5jdGlvbnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCisKKy8vIFMtMgorCisgIHN0ZW5jaWxNYXNr
U2VwYXJhdGUgOiB7CisgICAgZ2VuZXJhdGUgOiBmdW5jdGlvbigpIHsgcmV0dXJuIFtjdWxsRmFj
ZS5yYW5kb20oKSwgcmFuZG9tSW50KDB4ZmZmZmZmZmYpXTsgfSwKKyAgICBjaGVja0FyZ1ZhbGlk
aXR5IDogZnVuY3Rpb24oZmFjZSwgbWFzaykgeworICAgICAgcmV0dXJuIGN1bGxGYWNlLmhhcyhm
YWNlKTsKKyAgICB9LAorICAgIHRlYXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLnN0ZW5jaWxNYXNr
KDB4ZmZmZmZmZmYpOyB9CisgIH0sCisgIHN0ZW5jaWxPcCA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1
bmN0aW9uKCkgeworICAgICAgcmV0dXJuIFtzdGVuY2lsT3AucmFuZG9tKCksIHN0ZW5jaWxPcC5y
YW5kb20oKSwgc3RlbmNpbE9wLnJhbmRvbSgpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRp
dHkgOiBmdW5jdGlvbihzZmFpbCwgZHBmYWlsLCBkcHBhc3MpIHsKKyAgICAgIHJldHVybiBzdGVu
Y2lsT3AuaGFzKHNmYWlsKSAmJiBzdGVuY2lsT3AuaGFzKGRwZmFpbCkgJiYgc3RlbmNpbE9wLmhh
cyhkcHBhc3MpOworICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsgR0wuc3RlbmNp
bE9wKEdMLktFRVAsIEdMLktFRVAsIEdMLktFRVApOyB9CisgIH0sCisgIHN0ZW5jaWxPcFNlcGFy
YXRlIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gW2N1bGxG
YWNlLnJhbmRvbSgpLCBzdGVuY2lsT3AucmFuZG9tKCksIHN0ZW5jaWxPcC5yYW5kb20oKSwgc3Rl
bmNpbE9wLnJhbmRvbSgpXTsKKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlv
bihmYWNlLCBzZmFpbCwgZHBmYWlsLCBkcHBhc3MpIHsKKyAgICAgIHJldHVybiBjdWxsRmFjZS5o
YXMoZmFjZSkgJiYgc3RlbmNpbE9wLmhhcyhzZmFpbCkgJiYKKyAgICAgICAgICAgICAgc3RlbmNp
bE9wLmhhcyhkcGZhaWwpICYmIHN0ZW5jaWxPcC5oYXMoZHBwYXNzKTsKKyAgICB9LAorICAgIHRl
YXJkb3duIDogZnVuY3Rpb24oKSB7IEdMLnN0ZW5jaWxPcChHTC5LRUVQLCBHTC5LRUVQLCBHTC5L
RUVQKTsgfQorICB9LAorCisvLyBUCisgIHRleEltYWdlMkQgOiB7CisgICAgbm9BbHJlYWR5VHJp
ZWRDaGVjayA6IHRydWUsIC8vIE9iamVjdC50b1NvdXJjZSBpcyB2ZXJ5IHNsb3cgaGVyZQorICAg
IHNldHVwIDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgdGV4ID0gR0wuY3JlYXRlVGV4dHVyZSgp
OworICAgICAgdmFyIHRleDIgPSBHTC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICBHTC5iaW5kVGV4
dHVyZShHTC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgR0wuYmluZFRleHR1cmUoR0wuVEVYVFVS
RV9DVUJFX01BUCwgdGV4Mik7CisgICAgICByZXR1cm4gW3RleCwgdGV4Ml07CisgICAgfSwKKyAg
ICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGZvcm1hdCA9IHRleEltYWdlRm9y
bWF0LnJhbmRvbSgpOworICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPCAwLjUpIHsKKyAgICAgICAg
dmFyIGltZyA9IHJhbmRvbUltYWdlKDE2LDE2KTsKKyAgICAgICAgdmFyIGEgPSBbIHRleEltYWdl
VGFyZ2V0LnJhbmRvbSgpLCAwLCBmb3JtYXQsIGZvcm1hdCwgR0wuVU5TSUdORURfQllURSwgaW1n
IF07CisgICAgICAgIHJldHVybiBhOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHBpeCA9
IG51bGw7CisgICAgICAgIGlmIChNYXRoLnJhbmRvbSA+IDAuNSkgeworICAgICAgICAgIHBpeCA9
IG5ldyBVaW50OEFycmF5KDE2KjE2KjQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBbCisg
ICAgICAgICAgdGV4SW1hZ2VUYXJnZXQucmFuZG9tKCksIDAsCisgICAgICAgICAgZm9ybWF0LCAx
NiwgMTYsIDAsCisgICAgICAgICAgZm9ybWF0LCBHTC5VTlNJR05FRF9CWVRFLCBwaXgKKyAgICAg
ICAgXTsKKyAgICAgIH0KKyAgICB9LAorICAgIGNoZWNrQXJnVmFsaWRpdHkgOiBmdW5jdGlvbih0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIGRhdGEpIHsKKyAgICAgICAgICAgICAgIC8vIG9yIDogZnVuY3Rpb24odGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgaW1hZ2UpCisgICAgICBpZiAo
IXRleEltYWdlVGFyZ2V0Lmhhcyh0YXJnZXQpIHx8IGNhc3RUb0ludChsZXZlbCkgPCAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8PSA2KSB7Cisg
ICAgICAgIHZhciB4Zm9ybWF0ID0gd2lkdGg7CisgICAgICAgIHZhciB4dHlwZSA9IGhlaWdodDsK
KyAgICAgICAgdmFyIHhpbWFnZSA9IGJvcmRlcjsKKyAgICAgICAgaWYgKCh4aW1hZ2UgaW5zdGFu
Y2VvZiBIVE1MSW1hZ2VFbGVtZW50IHx8CisgICAgICAgICAgICAgeGltYWdlIGluc3RhbmNlb2Yg
SFRNTFZpZGVvRWxlbWVudCB8fAorICAgICAgICAgICAgIHhpbWFnZSBpbnN0YW5jZW9mIEhUTUxD
YW52YXNFbGVtZW50IHx8CisgICAgICAgICAgICAgeGltYWdlIGluc3RhbmNlb2YgSW1hZ2VEYXRh
KSAmJgorICAgICAgICAgICAgdGV4SW1hZ2VJbnRlcm5hbEZvcm1hdC5oYXMoaW50ZXJuYWxmb3Jt
YXQpICYmCisgICAgICAgICAgICB0ZXhJbWFnZUZvcm1hdC5oYXMoeGZvcm1hdCkgJiYKKyAgICAg
ICAgICAgIHRleEltYWdlVHlwZS5oYXMoeHR5cGUpICYmCisgICAgICAgICAgICBpbnRlcm5hbGZv
cm1hdCA9PSB4Zm9ybWF0KQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICB9CisgICAgICB2YXIgdyA9IGNhc3RUb0ludCh3aWR0aCksIGggPSBjYXN0
VG9JbnQoaGVpZ2h0KSwgYiA9IGNhc3RUb0ludChib3JkZXIpOworICAgICAgcmV0dXJuIHRleElt
YWdlSW50ZXJuYWxGb3JtYXQuaGFzKGludGVybmFsZm9ybWF0KSAmJiB3ID49IDAgJiYgaCA+PSAw
ICYmCisgICAgICAgICAgICBiID09IDAgJiYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhLmJ5dGVMZW5n
dGggPT0gdypoKjQpICYmCisgICAgICAgICAgICB0ZXhJbWFnZUZvcm1hdC5oYXMoZm9ybWF0KSAm
JiB0ZXhJbWFnZVR5cGUuaGFzKHR5cGUpCisgICAgICAgICAgICAmJiBpbnRlcm5hbGZvcm1hdCA9
PSBmb3JtYXQ7CisgICAgfSwKKyAgICB0ZWFyZG93biA6IGZ1bmN0aW9uKHRleCwgdGV4Mikgewor
ICAgICAgR0wuYmluZFRleHR1cmUoR0wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgICBHTC5iaW5k
VGV4dHVyZShHTC5URVhUVVJFX0NVQkVfTUFQLCBudWxsKTsKKyAgICAgIEdMLmRlbGV0ZVRleHR1
cmUodGV4KTsKKyAgICAgIEdMLmRlbGV0ZVRleHR1cmUodGV4Mik7CisgICAgfQorICB9LAorICB0
ZXhQYXJhbWV0ZXJmIDogeworICAgIGdlbmVyYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIg
cG5hbWUgPSB0ZXhQYXJhbWV0ZXJQbmFtZS5yYW5kb20oKTsKKyAgICAgIHZhciBwYXJhbSA9IHRl
eFBhcmFtZXRlclBhcmFtW3BuYW1lXS5yYW5kb20oKTsKKyAgICAgIHJldHVybiBbYmluZFRleHR1
cmVUYXJnZXQucmFuZG9tKCksIHBuYW1lLCBwYXJhbV07CisgICAgfSwKKyAgICBjaGVja0FyZ1Zh
bGlkaXR5IDogZnVuY3Rpb24odGFyZ2V0LCBwbmFtZSwgcGFyYW0pIHsKKyAgICAgIGlmICghYmlu
ZFRleHR1cmVUYXJnZXQuaGFzKHRhcmdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
IGlmICghdGV4UGFyYW1ldGVyUG5hbWUuaGFzKHBuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgcmV0dXJuIHRleFBhcmFtZXRlclBhcmFtW3BuYW1lXS5oYXMocGFyYW0pOworICAg
IH0KKyAgfSwKKyAgdGV4UGFyYW1ldGVyaSA6IHsKKyAgICBnZW5lcmF0ZSA6IGZ1bmN0aW9uKCkg
eworICAgICAgdmFyIHBuYW1lID0gdGV4UGFyYW1ldGVyUG5hbWUucmFuZG9tKCk7CisgICAgICB2
YXIgcGFyYW0gPSB0ZXhQYXJhbWV0ZXJQYXJhbVtwbmFtZV0ucmFuZG9tKCk7CisgICAgICByZXR1
cm4gW2JpbmRUZXh0dXJlVGFyZ2V0LnJhbmRvbSgpLCBwbmFtZSwgcGFyYW1dOworICAgIH0sCisg
ICAgY2hlY2tBcmdWYWxpZGl0eSA6IGZ1bmN0aW9uKHRhcmdldCwgcG5hbWUsIHBhcmFtKSB7Cisg
ICAgICBpZiAoIWJpbmRUZXh0dXJlVGFyZ2V0Lmhhcyh0YXJnZXQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICBpZiAoIXRleFBhcmFtZXRlclBuYW1lLmhhcyhwbmFtZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIHJldHVybiB0ZXhQYXJhbWV0ZXJQYXJhbVtwbmFtZV0uaGFz
KHBhcmFtKTsKKyAgICB9CisgIH0sCisgIHRleFN1YkltYWdlMkQgOiB7fSwgLy8gRklYTUUKKwor
Ly8gVQorCisgIHVuaWZvcm0xZiA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtMWZ2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm0xaSA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtMWl2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm0yZiA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtMmZ2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm0yaSA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtMml2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm0zZiA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtM2Z2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm0zaSA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtM2l2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm00ZiA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtNGZ2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm00aSA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtNGl2IDoge30sIC8v
IEZJWE1FCisgIHVuaWZvcm1NYXRyaXgyZnYgOiB7fSwgLy8gRklYTUUKKyAgdW5pZm9ybU1hdHJp
eDNmdiA6IHt9LCAvLyBGSVhNRQorICB1bmlmb3JtTWF0cml4NGZ2IDoge30sIC8vIEZJWE1FCisg
IHVzZVByb2dyYW0gOiB7fSwgLy8gRklYTUUKKworLy8gVgorCisgIHZhbGlkYXRlUHJvZ3JhbSA6
IHt9LCAvLyBGSVhNRQorICB2ZXJ0ZXhBdHRyaWIxZiA6IHt9LCAvLyBGSVhNRQorICB2ZXJ0ZXhB
dHRyaWIxZnYgOiB7fSwgLy8gRklYTUUKKyAgdmVydGV4QXR0cmliMmYgOiB7fSwgLy8gRklYTUUK
KyAgdmVydGV4QXR0cmliMmZ2IDoge30sIC8vIEZJWE1FCisgIHZlcnRleEF0dHJpYjNmIDoge30s
IC8vIEZJWE1FCisgIHZlcnRleEF0dHJpYjNmdiA6IHt9LCAvLyBGSVhNRQorICB2ZXJ0ZXhBdHRy
aWI0ZiA6IHt9LCAvLyBGSVhNRQorICB2ZXJ0ZXhBdHRyaWI0ZnYgOiB7fSwgLy8gRklYTUUKKyAg
dmVydGV4QXR0cmliUG9pbnRlciA6IHt9LCAvLyBGSVhNRQorICB2aWV3cG9ydCA6IHsKKyAgICBn
ZW5lcmF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIFtyYW5kb21JbnQoMzAwMCktMTUw
MCwgcmFuZG9tSW50KDMwMDApLTE1MDAsIHJhbmRvbUludEZyb21SYW5nZSgwLDMwMDApLCByYW5k
b21JbnRGcm9tUmFuZ2UoMCwzMDAwKV07CisgICAgfSwKKyAgICBjaGVja0FyZ1ZhbGlkaXR5IDog
ZnVuY3Rpb24oeCx5LHcsaCkgeworICAgICAgcmV0dXJuIGNhc3RUb0ludCh3KSA+PSAwICYmIGNh
c3RUb0ludChoKSA+PSAwOworICAgIH0sCisgICAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHsKKyAg
ICAgIEdMLnZpZXdwb3J0KDAsMCxHTC5jYW52YXMud2lkdGgsIEdMLmNhbnZhcy5oZWlnaHQpOwor
ICAgIH0KKyAgfQorCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9iYWRBcmdzQXJp
dHlMZXNzVGhhbkFyZ2MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYmFkQXJnc0FyaXR5TGVzc1Ro
YW5BcmdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVlOTcyN2E2ZTZiMjMxZTE4ZjY2NTNjOWQ2N2JmYjE4
ZWUzODc0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvYmFkQXJnc0FyaXR5
TGVzc1RoYW5BcmdjLmh0bWwKQEAgLTAsMCArMSw1NzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworLyoKKyAgVGhlIGZvbGxvd2luZyB0ZXN0
cyBhcmUgZ2VuZXJhdGVkIGZyb20KKyAgaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9n
bGVzL2FwaS8yLjAvZ2wyLmgKKyAgYW5kIGFwaV9tb2RpZmljYXRpb25zLnR4dAorKi8KK1Rlc3Rz
LnRlc3RfYWN0aXZlVGV4dHVyZSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuYWN0aXZlVGV4dHVyZSgpOyB9KTsKK30KK1Rlc3RzLnRlc3RfYXR0YWNoU2hhZGVy
ID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5hdHRhY2hTaGFk
ZXIoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYXR0YWNoU2hhZGVyKDApOyB9
KTsKK30KK1Rlc3RzLnRlc3RfYmluZEF0dHJpYkxvY2F0aW9uID0gZnVuY3Rpb24oZ2wpIHsKKyAg
YXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5iaW5kQXR0cmliTG9jYXRpb24oKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKDApOyB9KTsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5iaW5kQXR0cmliTG9jYXRpb24oMCwwKTsgfSk7Cit9CitU
ZXN0cy50ZXN0X2JpbmRCdWZmZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLmJpbmRCdWZmZXIoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
YmluZEJ1ZmZlcigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2JpbmRGcmFtZWJ1ZmZlciA9IGZ1bmN0
aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmluZEZyYW1lYnVmZmVyKCk7
IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJpbmRGcmFtZWJ1ZmZlcigwKTsgfSk7
Cit9CitUZXN0cy50ZXN0X2JpbmRSZW5kZXJidWZmZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJpbmRSZW5kZXJidWZmZXIoKTsgfSk7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wuYmluZFJlbmRlcmJ1ZmZlcigwKTsgfSk7Cit9CitUZXN0cy50ZXN0
X2JpbmRUZXh0dXJlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC5iaW5kVGV4dHVyZSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5iaW5kVGV4
dHVyZSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2JsZW5kQ29sb3IgPSBmdW5jdGlvbihnbCkgewor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJsZW5kQ29sb3IoKTsgfSk7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wuYmxlbmRDb2xvcigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuYmxlbmRDb2xvcigwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC5ibGVuZENvbG9yKDAsMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2JsZW5kRXF1YXRpb24gPSBm
dW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJsZW5kRXF1YXRpb24o
KTsgfSk7Cit9CitUZXN0cy50ZXN0X2JsZW5kRXF1YXRpb25TZXBhcmF0ZSA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKCk7
IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZSgw
KTsgfSk7Cit9CitUZXN0cy50ZXN0X2JsZW5kRnVuYyA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2Vy
dEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmxlbmRGdW5jKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLmJsZW5kRnVuYygwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2JsZW5kRnVuY1NlcGFy
YXRlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5ibGVuZEZ1
bmNTZXBhcmF0ZSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5ibGVuZEZ1bmNT
ZXBhcmF0ZSgwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmxlbmRGdW5jU2Vw
YXJhdGUoMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYmxlbmRGdW5jU2Vw
YXJhdGUoMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfYnVmZmVyRGF0YSA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuYnVmZmVyRGF0YSgpOyB9KTsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5idWZmZXJEYXRhKDApOyB9KTsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC5idWZmZXJEYXRhKDAsMCk7IH0pOworfQorVGVzdHMudGVzdF9idWZmZXJT
dWJEYXRhID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5idWZm
ZXJTdWJEYXRhKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJ1ZmZlclN1YkRh
dGEoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmJ1ZmZlclN1YkRhdGEoMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X2NoZWNrRnJhbWVidWZmZXJTdGF0dXMgPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
KTsgfSk7Cit9CitUZXN0cy50ZXN0X2NsZWFyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFp
bChmdW5jdGlvbigpeyBnbC5jbGVhcigpOyB9KTsKK30KK1Rlc3RzLnRlc3RfY2xlYXJDb2xvciA9
IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuY2xlYXJDb2xvcigp
OyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5jbGVhckNvbG9yKDApOyB9KTsKKyAg
YXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5jbGVhckNvbG9yKDAsMCk7IH0pOworICBhc3NlcnRG
YWlsKGZ1bmN0aW9uKCl7IGdsLmNsZWFyQ29sb3IoMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3Rf
Y2xlYXJEZXB0aCA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
Y2xlYXJEZXB0aCgpOyB9KTsKK30KK1Rlc3RzLnRlc3RfY2xlYXJTdGVuY2lsID0gZnVuY3Rpb24o
Z2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5jbGVhclN0ZW5jaWwoKTsgfSk7Cit9
CitUZXN0cy50ZXN0X2NvbG9yTWFzayA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wuY29sb3JNYXNrKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGds
LmNvbG9yTWFzaygwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuY29sb3JNYXNr
KDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvbG9yTWFzaygwLDAsMCk7
IH0pOworfQorVGVzdHMudGVzdF9jb21waWxlU2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5jb21waWxlU2hhZGVyKCk7IH0pOworfQorVGVzdHMudGVz
dF9jb3B5VGV4SW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24o
KXsgZ2wuY29weVRleEltYWdlMkQoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
Y29weVRleEltYWdlMkQoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlU
ZXhJbWFnZTJEKDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlUZXhJ
bWFnZTJEKDAsMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuY29weVRleElt
YWdlMkQoMCwwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlUZXhJ
bWFnZTJEKDAsMCwwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlU
ZXhJbWFnZTJEKDAsMCwwLDAsMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
Y29weVRleEltYWdlMkQoMCwwLDAsMCwwLDAsMCk7IH0pOworfQorVGVzdHMudGVzdF9jb3B5VGV4
U3ViSW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
Y29weVRleFN1YkltYWdlMkQoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuY29w
eVRleFN1YkltYWdlMkQoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlU
ZXhTdWJJbWFnZTJEKDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmNvcHlU
ZXhTdWJJbWFnZTJEKDAsMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuY29w
eVRleFN1YkltYWdlMkQoMCwwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGds
LmNvcHlUZXhTdWJJbWFnZTJEKDAsMCwwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLmNvcHlUZXhTdWJJbWFnZTJEKDAsMCwwLDAsMCwwKTsgfSk7CisgIGFzc2VydEZhaWwo
ZnVuY3Rpb24oKXsgZ2wuY29weVRleFN1YkltYWdlMkQoMCwwLDAsMCwwLDAsMCk7IH0pOworfQor
VGVzdHMudGVzdF9jcmVhdGVQcm9ncmFtID0gZnVuY3Rpb24oZ2wpIHsKK30KK1Rlc3RzLnRlc3Rf
Y3JlYXRlU2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC5jcmVhdGVTaGFkZXIoKTsgfSk7Cit9CitUZXN0cy50ZXN0X2N1bGxGYWNlID0gZnVuY3Rpb24o
Z2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5jdWxsRmFjZSgpOyB9KTsKK30KK1Rl
c3RzLnRlc3RfZGVsZXRlQnVmZmVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5j
dGlvbigpeyBnbC5kZWxldGVCdWZmZXIoKTsgfSk7Cit9CitUZXN0cy50ZXN0X2RlbGV0ZUZyYW1l
YnVmZmVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5kZWxl
dGVGcmFtZWJ1ZmZlcigpOyB9KTsKK30KK1Rlc3RzLnRlc3RfZGVsZXRlUHJvZ3JhbSA9IGZ1bmN0
aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZGVsZXRlUHJvZ3JhbSgpOyB9
KTsKK30KK1Rlc3RzLnRlc3RfZGVsZXRlUmVuZGVyYnVmZmVyID0gZnVuY3Rpb24oZ2wpIHsKKyAg
YXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5kZWxldGVSZW5kZXJidWZmZXIoKTsgfSk7Cit9CitU
ZXN0cy50ZXN0X2RlbGV0ZVNoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wuZGVsZXRlU2hhZGVyKCk7IH0pOworfQorVGVzdHMudGVzdF9kZWxldGVUZXh0
dXJlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5kZWxldGVU
ZXh0dXJlKCk7IH0pOworfQorVGVzdHMudGVzdF9kZXB0aEZ1bmMgPSBmdW5jdGlvbihnbCkgewor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRlcHRoRnVuYygpOyB9KTsKK30KK1Rlc3RzLnRl
c3RfZGVwdGhNYXNrID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC5kZXB0aE1hc2soKTsgfSk7Cit9CitUZXN0cy50ZXN0X2RlcHRoUmFuZ2UgPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRlcHRoUmFuZ2UoKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZGVwdGhSYW5nZSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0
X2RldGFjaFNoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wuZGV0YWNoU2hhZGVyKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRldGFj
aFNoYWRlcigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2Rpc2FibGUgPSBmdW5jdGlvbihnbCkgewor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRpc2FibGUoKTsgfSk7Cit9CitUZXN0cy50ZXN0
X2Rpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwo
ZnVuY3Rpb24oKXsgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KCk7IH0pOworfQorVGVzdHMu
dGVzdF9kcmF3QXJyYXlzID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigp
eyBnbC5kcmF3QXJyYXlzKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRyYXdB
cnJheXMoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmRyYXdBcnJheXMoMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X2RyYXdFbGVtZW50cyA9IGZ1bmN0aW9uKGdsKSB7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZHJhd0VsZW1lbnRzKCk7IH0pOworICBhc3NlcnRGYWls
KGZ1bmN0aW9uKCl7IGdsLmRyYXdFbGVtZW50cygwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuZHJhd0VsZW1lbnRzKDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLmRyYXdFbGVtZW50cygwLDAsMCk7IH0pOworfQorVGVzdHMudGVzdF9lbmFibGUgPSBmdW5j
dGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmVuYWJsZSgpOyB9KTsKK30K
K1Rlc3RzLnRlc3RfZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgPSBmdW5jdGlvbihnbCkgeworICBh
c3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCk7IH0pOwor
fQorVGVzdHMudGVzdF9maW5pc2ggPSBmdW5jdGlvbihnbCkgeworfQorVGVzdHMudGVzdF9mbHVz
aCA9IGZ1bmN0aW9uKGdsKSB7Cit9CitUZXN0cy50ZXN0X2ZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
ID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfZnJh
bWVidWZmZXJUZXh0dXJlMkQgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5j
dGlvbigpeyBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgwLDAsMCk7IH0pOworICBhc3NlcnRGYWls
KGZ1bmN0aW9uKCl7IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDAsMCwwLDApOyB9KTsKK30KK1Rl
c3RzLnRlc3RfZnJvbnRGYWNlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5mcm9udEZhY2UoKTsgfSk7Cit9CitUZXN0cy50ZXN0X2NyZWF0ZUJ1ZmZlciA9IGZ1
bmN0aW9uKGdsKSB7Cit9CitUZXN0cy50ZXN0X2dlbmVyYXRlTWlwbWFwID0gZnVuY3Rpb24oZ2wp
IHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5nZW5lcmF0ZU1pcG1hcCgpOyB9KTsKK30K
K1Rlc3RzLnRlc3RfY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbihnbCkgeworfQorVGVzdHMu
dGVzdF9jcmVhdGVSZW5kZXJidWZmZXIgPSBmdW5jdGlvbihnbCkgeworfQorVGVzdHMudGVzdF9j
cmVhdGVUZXh0dXJlID0gZnVuY3Rpb24oZ2wpIHsKK30KK1Rlc3RzLnRlc3RfZ2V0QWN0aXZlQXR0
cmliID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5nZXRBY3Rp
dmVBdHRyaWIoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0QWN0aXZlQXR0
cmliKDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfZ2V0QWN0aXZlVW5pZm9ybSA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0QWN0aXZlVW5pZm9ybSgpOyB9KTsK
KyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5nZXRBY3RpdmVVbmlmb3JtKDApOyB9KTsKK30K
K1Rlc3RzLnRlc3RfZ2V0QXR0YWNoZWRTaGFkZXJzID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0
RmFpbChmdW5jdGlvbigpeyBnbC5nZXRBdHRhY2hlZFNoYWRlcnMoKTsgfSk7Cit9CitUZXN0cy50
ZXN0X2dldEF0dHJpYkxvY2F0aW9uID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5j
dGlvbigpeyBnbC5nZXRBdHRyaWJMb2NhdGlvbigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5nZXRBdHRyaWJMb2NhdGlvbigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2dldEJ1ZmZl
clBhcmFtZXRlcmkgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGds
LmdldEJ1ZmZlclBhcmFtZXRlcmkoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
Z2V0QnVmZmVyUGFyYW1ldGVyaSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2dldEVycm9yID0gZnVu
Y3Rpb24oZ2wpIHsKK30KK1Rlc3RzLnRlc3RfZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKDApOyB9KTsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
KDAsMCk7IH0pOworfQorVGVzdHMudGVzdF9nZXRQcm9ncmFtSW5mb0xvZyA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0UHJvZ3JhbUluZm9Mb2coKTsgfSk7
Cit9CitUZXN0cy50ZXN0X2dldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkgPSBmdW5jdGlvbihnbCkg
eworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
KTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0X2dldFNoYWRlckluZm9Mb2cgPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmdldFNoYWRlckluZm9Mb2coKTsgfSk7
Cit9CitUZXN0cy50ZXN0X2dldFNoYWRlclNvdXJjZSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2Vy
dEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0U2hhZGVyU291cmNlKCk7IH0pOworfQorVGVzdHMudGVz
dF9nZXRVbmlmb3JtTG9jYXRpb24gPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLmdldFVuaWZvcm1Mb2NhdGlvbigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5nZXRVbmlmb3JtTG9jYXRpb24oMCk7IH0pOworfQorVGVzdHMudGVzdF9oaW50ID0g
ZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5oaW50KCk7IH0pOwor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmhpbnQoMCk7IH0pOworfQorVGVzdHMudGVzdF9p
c0J1ZmZlciA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuaXNC
dWZmZXIoKTsgfSk7Cit9CitUZXN0cy50ZXN0X2lzRW5hYmxlZCA9IGZ1bmN0aW9uKGdsKSB7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuaXNFbmFibGVkKCk7IH0pOworfQorVGVzdHMudGVz
dF9pc0ZyYW1lYnVmZmVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigp
eyBnbC5pc0ZyYW1lYnVmZmVyKCk7IH0pOworfQorVGVzdHMudGVzdF9pc1Byb2dyYW0gPSBmdW5j
dGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmlzUHJvZ3JhbSgpOyB9KTsK
K30KK1Rlc3RzLnRlc3RfaXNSZW5kZXJidWZmZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRG
YWlsKGZ1bmN0aW9uKCl7IGdsLmlzUmVuZGVyYnVmZmVyKCk7IH0pOworfQorVGVzdHMudGVzdF9p
c1NoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuaXNT
aGFkZXIoKTsgfSk7Cit9CitUZXN0cy50ZXN0X2lzVGV4dHVyZSA9IGZ1bmN0aW9uKGdsKSB7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuaXNUZXh0dXJlKCk7IH0pOworfQorVGVzdHMudGVz
dF9saW5lV2lkdGggPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGds
LmxpbmVXaWR0aCgpOyB9KTsKK30KK1Rlc3RzLnRlc3RfbGlua1Byb2dyYW0gPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmxpbmtQcm9ncmFtKCk7IH0pOworfQor
VGVzdHMudGVzdF9wb2x5Z29uT2Zmc2V0ID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC5wb2x5Z29uT2Zmc2V0KCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLnBvbHlnb25PZmZzZXQoMCk7IH0pOworfQorVGVzdHMudGVzdF9yZWFkUGl4ZWxzID0g
ZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5yZWFkUGl4ZWxzKCk7
IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnJlYWRQaXhlbHMoMCk7IH0pOworICBh
c3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnJlYWRQaXhlbHMoMCwwKTsgfSk7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wucmVhZFBpeGVscygwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1
bmN0aW9uKCl7IGdsLnJlYWRQaXhlbHMoMCwwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLnJlYWRQaXhlbHMoMCwwLDAsMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3JlbmRl
cmJ1ZmZlclN0b3JhZ2UgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZSgwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZSgwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigp
eyBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKDAsMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3NhbXBs
ZUNvdmVyYWdlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5z
YW1wbGVDb3ZlcmFnZSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zYW1wbGVD
b3ZlcmFnZSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3NjaXNzb3IgPSBmdW5jdGlvbihnbCkgewor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnNjaXNzb3IoKTsgfSk7CisgIGFzc2VydEZhaWwo
ZnVuY3Rpb24oKXsgZ2wuc2Npc3NvcigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wuc2Npc3NvcigwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zY2lzc29y
KDAsMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3NoYWRlclNvdXJjZSA9IGZ1bmN0aW9uKGdsKSB7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuc2hhZGVyU291cmNlKCk7IH0pOworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnNoYWRlclNvdXJjZSgwKTsgfSk7Cit9CitUZXN0cy50ZXN0
X3N0ZW5jaWxGdW5jID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC5zdGVuY2lsRnVuYygpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zdGVuY2ls
RnVuYygwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuc3RlbmNpbEZ1bmMoMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X3N0ZW5jaWxGdW5jU2VwYXJhdGUgPSBmdW5jdGlvbihnbCkg
eworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnN0ZW5jaWxGdW5jU2VwYXJhdGUoKTsgfSk7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSgwKTsgfSk7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSgwLDApOyB9
KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zdGVuY2lsRnVuY1NlcGFyYXRlKDAsMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X3N0ZW5jaWxNYXNrID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zdGVuY2lsTWFzaygpOyB9KTsKK30KK1Rlc3RzLnRlc3Rf
c3RlbmNpbE1hc2tTZXBhcmF0ZSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuc3RlbmNpbE1hc2tTZXBhcmF0ZSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5zdGVuY2lsTWFza1NlcGFyYXRlKDApOyB9KTsKK30KK1Rlc3RzLnRlc3Rfc3RlbmNp
bE9wID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zdGVuY2ls
T3AoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuc3RlbmNpbE9wKDApOyB9KTsK
KyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5zdGVuY2lsT3AoMCwwKTsgfSk7Cit9CitUZXN0
cy50ZXN0X3N0ZW5jaWxPcFNlcGFyYXRlID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC5zdGVuY2lsT3BTZXBhcmF0ZSgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5j
dGlvbigpeyBnbC5zdGVuY2lsT3BTZXBhcmF0ZSgwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuc3RlbmNpbE9wU2VwYXJhdGUoMCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wuc3RlbmNpbE9wU2VwYXJhdGUoMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfdGV4
SW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4
SW1hZ2UyRCgpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC50ZXhJbWFnZTJEKDAp
OyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC50ZXhJbWFnZTJEKDAsMCk7IH0pOwor
fQorVGVzdHMudGVzdF90ZXhQYXJhbWV0ZXJpID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFp
bChmdW5jdGlvbigpeyBnbC50ZXhQYXJhbWV0ZXJpKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLnRleFBhcmFtZXRlcmkoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLnRleFBhcmFtZXRlcmkoMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3RleFN1YkltYWdlMkQg
PSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnRleFN1YkltYWdl
MkQoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwKTsg
fSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwLDApOyB9KTsK
KyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC50ZXhTdWJJbWFnZTJEKDAsMCwwKTsgfSk7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwLDAsMCwwKTsgfSk7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwLDAsMCwwLDApOyB9KTsK
KyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC50ZXhTdWJJbWFnZTJEKDAsMCwwLDAsMCwwKTsg
fSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwLDAsMCwwLDAs
MCwwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudGV4U3ViSW1hZ2UyRCgwLDAs
MCwwLDAsMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfdW5pZm9ybTFmID0gZnVuY3Rpb24oZ2wp
IHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtMWYoKTsgfSk7CisgIGFzc2Vy
dEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTFmKDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfdW5p
Zm9ybTFmdiA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5p
Zm9ybTFmdigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtMWZ2KDAp
OyB9KTsKK30KK1Rlc3RzLnRlc3RfdW5pZm9ybTFpID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0
RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtMWkoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wudW5pZm9ybTFpKDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfdW5pZm9ybTFpdiA9IGZ1
bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTFpdigpOyB9
KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtMWl2KDApOyB9KTsKK30KK1Rl
c3RzLnRlc3RfdW5pZm9ybTJmID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC51bmlmb3JtMmYoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5p
Zm9ybTJmKDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtMmYoMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X3VuaWZvcm0yZnYgPSBmdW5jdGlvbihnbCkgeworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm0yZnYoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wudW5pZm9ybTJmdigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3VuaWZvcm0yaSA9
IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTJpKCk7
IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm0yaSgwKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTJpKDAsMCk7IH0pOworfQorVGVzdHMudGVz
dF91bmlmb3JtMml2ID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC51bmlmb3JtMml2KCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm0y
aXYoMCk7IH0pOworfQorVGVzdHMudGVzdF91bmlmb3JtM2YgPSBmdW5jdGlvbihnbCkgeworICBh
c3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm0zZigpOyB9KTsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC51bmlmb3JtM2YoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLnVuaWZvcm0zZigwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlm
b3JtM2YoMCwwLDApOyB9KTsKK30KK1Rlc3RzLnRlc3RfdW5pZm9ybTNmdiA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTNmdigpOyB9KTsKKyAgYXNz
ZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtM2Z2KDApOyB9KTsKK30KK1Rlc3RzLnRlc3Rf
dW5pZm9ybTNpID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51
bmlmb3JtM2koKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTNpKDAp
OyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC51bmlmb3JtM2koMCwwKTsgfSk7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTNpKDAsMCwwKTsgfSk7Cit9CitUZXN0
cy50ZXN0X3VuaWZvcm0zaXYgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLnVuaWZvcm0zaXYoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5p
Zm9ybTNpdigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3VuaWZvcm00ZiA9IGZ1bmN0aW9uKGdsKSB7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTRmKCk7IH0pOworICBhc3NlcnRG
YWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm00ZigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rp
b24oKXsgZ2wudW5pZm9ybTRmKDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGds
LnVuaWZvcm00ZigwLDAsMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZv
cm00ZigwLDAsMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3VuaWZvcm00ZnYgPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm00ZnYoKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTRmdigwKTsgfSk7Cit9CitUZXN0cy50ZXN0
X3VuaWZvcm00aSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wu
dW5pZm9ybTRpKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm00aSgw
KTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybTRpKDAsMCk7IH0pOwor
ICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm00aSgwLDAsMCk7IH0pOworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm00aSgwLDAsMCwwKTsgfSk7Cit9CitUZXN0cy50
ZXN0X3VuaWZvcm00aXYgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLnVuaWZvcm00aXYoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9y
bTRpdigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3VuaWZvcm1NYXRyaXgyZnYgPSBmdW5jdGlvbihn
bCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZvcm1NYXRyaXgyZnYoKTsgfSk7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybU1hdHJpeDJmdigwKTsgfSk7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybU1hdHJpeDJmdigwLDApOyB9KTsKK30K
K1Rlc3RzLnRlc3RfdW5pZm9ybU1hdHJpeDNmdiA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wudW5pZm9ybU1hdHJpeDNmdigpOyB9KTsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC51bmlmb3JtTWF0cml4M2Z2KDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5j
dGlvbigpeyBnbC51bmlmb3JtTWF0cml4M2Z2KDAsMCk7IH0pOworfQorVGVzdHMudGVzdF91bmlm
b3JtTWF0cml4NGZ2ID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBn
bC51bmlmb3JtTWF0cml4NGZ2KCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVu
aWZvcm1NYXRyaXg0ZnYoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVuaWZv
cm1NYXRyaXg0ZnYoMCwwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3VzZVByb2dyYW0gPSBmdW5jdGlv
bihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnVzZVByb2dyYW0oKTsgfSk7Cit9
CitUZXN0cy50ZXN0X3ZhbGlkYXRlUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wudmFsaWRhdGVQcm9ncmFtKCk7IH0pOworfQorVGVzdHMudGVzdF92
ZXJ0ZXhBdHRyaWIxZiA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsg
Z2wudmVydGV4QXR0cmliMWYoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVy
dGV4QXR0cmliMWYoMCk7IH0pOworfQorVGVzdHMudGVzdF92ZXJ0ZXhBdHRyaWIxZnYgPSBmdW5j
dGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnZlcnRleEF0dHJpYjFmdigp
OyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52ZXJ0ZXhBdHRyaWIxZnYoMCk7IH0p
OworfQorVGVzdHMudGVzdF92ZXJ0ZXhBdHRyaWIyZiA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2Vy
dEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliMmYoKTsgfSk7CisgIGFzc2VydEZhaWwo
ZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliMmYoMCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0
aW9uKCl7IGdsLnZlcnRleEF0dHJpYjJmKDAsMCk7IH0pOworfQorVGVzdHMudGVzdF92ZXJ0ZXhB
dHRyaWIyZnYgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnZl
cnRleEF0dHJpYjJmdigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52ZXJ0ZXhB
dHRyaWIyZnYoMCk7IH0pOworfQorVGVzdHMudGVzdF92ZXJ0ZXhBdHRyaWIzZiA9IGZ1bmN0aW9u
KGdsKSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliM2YoKTsgfSk7
CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliM2YoMCk7IH0pOworICBh
c3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnZlcnRleEF0dHJpYjNmKDAsMCk7IH0pOworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnZlcnRleEF0dHJpYjNmKDAsMCwwKTsgfSk7Cit9CitUZXN0
cy50ZXN0X3ZlcnRleEF0dHJpYjNmdiA9IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wudmVydGV4QXR0cmliM2Z2KCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLnZlcnRleEF0dHJpYjNmdigwKTsgfSk7Cit9CitUZXN0cy50ZXN0X3ZlcnRleEF0dHJp
YjRmID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52ZXJ0ZXhB
dHRyaWI0ZigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52ZXJ0ZXhBdHRyaWI0
ZigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliNGYoMCww
KTsgfSk7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliNGYoMCwwLDAp
OyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52ZXJ0ZXhBdHRyaWI0ZigwLDAsMCww
KTsgfSk7Cit9CitUZXN0cy50ZXN0X3ZlcnRleEF0dHJpYjRmdiA9IGZ1bmN0aW9uKGdsKSB7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliNGZ2KCk7IH0pOworICBhc3Nl
cnRGYWlsKGZ1bmN0aW9uKCl7IGdsLnZlcnRleEF0dHJpYjRmdigwKTsgfSk7Cit9CitUZXN0cy50
ZXN0X3ZlcnRleEF0dHJpYlBvaW50ZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1
bmN0aW9uKCl7IGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoKTsgfSk7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwKTsgfSk7CisgIGFzc2VydEZhaWwoZnVu
Y3Rpb24oKXsgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsMCwwKTsgfSk7CisgIGFzc2VydEZh
aWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLDAsMCwwKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLDAsMCwwLDApOyB9
KTsKK30KK1Rlc3RzLnRlc3Rfdmlld3BvcnQgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWls
KGZ1bmN0aW9uKCl7IGdsLnZpZXdwb3J0KCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLnZpZXdwb3J0KDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52aWV3cG9y
dCgwLDApOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC52aWV3cG9ydCgwLDAsMCk7
IH0pOworfQorVGVzdHMudGVzdF9jdXJyZW50QXJyYXlCdWZmZXJCaW5kaW5nID0gZnVuY3Rpb24o
Z2wpIHsKK30KK1Rlc3RzLnRlc3RfY3VycmVudEVsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSBm
dW5jdGlvbihnbCkgeworfQorVGVzdHMudGVzdF9jdXJyZW50RnJhbWVidWZmZXJCaW5kaW5nID0g
ZnVuY3Rpb24oZ2wpIHsKK30KK1Rlc3RzLnRlc3RfY3VycmVudFJlbmRlcmJ1ZmZlckJpbmRpbmcg
PSBmdW5jdGlvbihnbCkgeworfQorVGVzdHMudGVzdF9jdXJyZW50VGV4dHVyZUJpbmRpbmcyRCA9
IGZ1bmN0aW9uKGdsKSB7Cit9CitUZXN0cy50ZXN0X2N1cnJlbnRUZXh0dXJlQmluZGluZ0N1YmVN
YXAgPSBmdW5jdGlvbihnbCkgeworfQorVGVzdHMudGVzdF9jdXJyZW50UHJvZ3JhbSA9IGZ1bmN0
aW9uKGdsKSB7Cit9CitUZXN0cy50ZXN0X2dldFBhcmFtZXRlciA9IGZ1bmN0aW9uKGdsKSB7Cisg
IGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0UGFyYW1ldGVyKCk7IH0pOworfQorVGVzdHMu
dGVzdF9nZXRQcm9ncmFtUGFyYW1ldGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChm
dW5jdGlvbigpeyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1
bmN0aW9uKCl7IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoMCk7IH0pOworfQorVGVzdHMudGVzdF9n
ZXRTaGFkZXJQYXJhbWV0ZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7IGdsLmdldFNoYWRlclBhcmFtZXRlcigpOyB9KTsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigp
eyBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoMCk7IH0pOworfQorVGVzdHMudGVzdF9nZXRUZXhQYXJh
bWV0ZXJpID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlvbigpeyBnbC5nZXRU
ZXhQYXJhbWV0ZXJpKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7IGdsLmdldFRleFBh
cmFtZXRlcmkoMCk7IH0pOworfQorVGVzdHMudGVzdF9nZXRVbmlmb3JtaSA9IGZ1bmN0aW9uKGds
KSB7CisgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0VW5pZm9ybWkoKTsgfSk7CisgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXsgZ2wuZ2V0VW5pZm9ybWkoMCk7IH0pOworfQorVGVzdHMudGVz
dF9nZXRWZXJ0ZXhBdHRyaWJpID0gZnVuY3Rpb24oZ2wpIHsKKyAgYXNzZXJ0RmFpbChmdW5jdGlv
bigpeyBnbC5nZXRWZXJ0ZXhBdHRyaWJpKCk7IH0pOworICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7
IGdsLmdldFZlcnRleEF0dHJpYmkoMCk7IH0pOworfQorVGVzdHMudGVzdF9wcmVzZW50ID0gZnVu
Y3Rpb24oZ2wpIHsKK30KK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uKCkgeworICB2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENv
bnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKworPC9zY3Jp
cHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+
PGJvZHk+CisgIDxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4K
KzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL2NvbnN0YW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvbW9yZS9jb25mb3JtYW5jZS9jb25zdGFudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTk5N2Fm
YWU2MzYzMWQxMjljY2UzM2I2MzU1ZDU2ZTc4YjI2ZmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9y
ZS9jb25mb3JtYW5jZS9jb25zdGFudHMuaHRtbApAQCAtMCwwICsxLDM1MCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisvKgorICBUaGUgZm9s
bG93aW5nIHRlc3RzIGFyZSBnZW5lcmF0ZWQgZnJvbQorICBodHRwOi8vd3d3Lmtocm9ub3Mub3Jn
L3JlZ2lzdHJ5L2dsZXMvYXBpLzIuMC9nbDIuaAorICBhbmQgYXBpX21vZGlmaWNhdGlvbnMudHh0
CisqLwordmFyIGNvbnN0YW50cyA9IHsKK0RFUFRIX0JVRkZFUl9CSVQgOiAweDAwMDAwMTAwLAor
U1RFTkNJTF9CVUZGRVJfQklUIDogMHgwMDAwMDQwMCwKK0NPTE9SX0JVRkZFUl9CSVQgOiAweDAw
MDA0MDAwLAorUE9JTlRTIDogMHgwMDAwLAorTElORVMgOiAweDAwMDEsCitMSU5FX0xPT1AgOiAw
eDAwMDIsCitMSU5FX1NUUklQIDogMHgwMDAzLAorVFJJQU5HTEVTIDogMHgwMDA0LAorVFJJQU5H
TEVfU1RSSVAgOiAweDAwMDUsCitUUklBTkdMRV9GQU4gOiAweDAwMDYsCitaRVJPIDogMCwKK09O
RSA6IDEsCitTUkNfQ09MT1IgOiAweDAzMDAsCitPTkVfTUlOVVNfU1JDX0NPTE9SIDogMHgwMzAx
LAorU1JDX0FMUEhBIDogMHgwMzAyLAorT05FX01JTlVTX1NSQ19BTFBIQSA6IDB4MDMwMywKK0RT
VF9BTFBIQSA6IDB4MDMwNCwKK09ORV9NSU5VU19EU1RfQUxQSEEgOiAweDAzMDUsCitEU1RfQ09M
T1IgOiAweDAzMDYsCitPTkVfTUlOVVNfRFNUX0NPTE9SIDogMHgwMzA3LAorU1JDX0FMUEhBX1NB
VFVSQVRFIDogMHgwMzA4LAorRlVOQ19BREQgOiAweDgwMDYsCitCTEVORF9FUVVBVElPTiA6IDB4
ODAwOSwKK0JMRU5EX0VRVUFUSU9OX1JHQiA6IDB4ODAwOSwKK0JMRU5EX0VRVUFUSU9OX0FMUEhB
IDogMHg4ODNELAorRlVOQ19TVUJUUkFDVCA6IDB4ODAwQSwKK0ZVTkNfUkVWRVJTRV9TVUJUUkFD
VCA6IDB4ODAwQiwKK0JMRU5EX0RTVF9SR0IgOiAweDgwQzgsCitCTEVORF9TUkNfUkdCIDogMHg4
MEM5LAorQkxFTkRfRFNUX0FMUEhBIDogMHg4MENBLAorQkxFTkRfU1JDX0FMUEhBIDogMHg4MENC
LAorQ09OU1RBTlRfQ09MT1IgOiAweDgwMDEsCitPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgOiAw
eDgwMDIsCitDT05TVEFOVF9BTFBIQSA6IDB4ODAwMywKK09ORV9NSU5VU19DT05TVEFOVF9BTFBI
QSA6IDB4ODAwNCwKK0JMRU5EX0NPTE9SIDogMHg4MDA1LAorQVJSQVlfQlVGRkVSIDogMHg4ODky
LAorRUxFTUVOVF9BUlJBWV9CVUZGRVIgOiAweDg4OTMsCitBUlJBWV9CVUZGRVJfQklORElORyA6
IDB4ODg5NCwKK0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgOiAweDg4OTUsCitTVFJFQU1f
RFJBVyA6IDB4ODhFMCwKK1NUQVRJQ19EUkFXIDogMHg4OEU0LAorRFlOQU1JQ19EUkFXIDogMHg4
OEU4LAorQlVGRkVSX1NJWkUgOiAweDg3NjQsCitCVUZGRVJfVVNBR0UgOiAweDg3NjUsCitDVVJS
RU5UX1ZFUlRFWF9BVFRSSUIgOiAweDg2MjYsCitGUk9OVCA6IDB4MDQwNCwKK0JBQ0sgOiAweDA0
MDUsCitGUk9OVF9BTkRfQkFDSyA6IDB4MDQwOCwKK1RFWFRVUkVfMkQgOiAweDBERTEsCitDVUxM
X0ZBQ0UgOiAweDBCNDQsCitCTEVORCA6IDB4MEJFMiwKK0RJVEhFUiA6IDB4MEJEMCwKK1NURU5D
SUxfVEVTVCA6IDB4MEI5MCwKK0RFUFRIX1RFU1QgOiAweDBCNzEsCitTQ0lTU09SX1RFU1QgOiAw
eDBDMTEsCitQT0xZR09OX09GRlNFVF9GSUxMIDogMHg4MDM3LAorU0FNUExFX0FMUEhBX1RPX0NP
VkVSQUdFIDogMHg4MDlFLAorU0FNUExFX0NPVkVSQUdFIDogMHg4MEEwLAorTk9fRVJST1IgOiAw
LAorSU5WQUxJRF9FTlVNIDogMHgwNTAwLAorSU5WQUxJRF9WQUxVRSA6IDB4MDUwMSwKK0lOVkFM
SURfT1BFUkFUSU9OIDogMHgwNTAyLAorT1VUX09GX01FTU9SWSA6IDB4MDUwNSwKK0NXIDogMHgw
OTAwLAorQ0NXIDogMHgwOTAxLAorTElORV9XSURUSCA6IDB4MEIyMSwKK0FMSUFTRURfUE9JTlRf
U0laRV9SQU5HRSA6IDB4ODQ2RCwKK0FMSUFTRURfTElORV9XSURUSF9SQU5HRSA6IDB4ODQ2RSwK
K0NVTExfRkFDRV9NT0RFIDogMHgwQjQ1LAorRlJPTlRfRkFDRSA6IDB4MEI0NiwKK0RFUFRIX1JB
TkdFIDogMHgwQjcwLAorREVQVEhfV1JJVEVNQVNLIDogMHgwQjcyLAorREVQVEhfQ0xFQVJfVkFM
VUUgOiAweDBCNzMsCitERVBUSF9GVU5DIDogMHgwQjc0LAorU1RFTkNJTF9DTEVBUl9WQUxVRSA6
IDB4MEI5MSwKK1NURU5DSUxfRlVOQyA6IDB4MEI5MiwKK1NURU5DSUxfRkFJTCA6IDB4MEI5NCwK
K1NURU5DSUxfUEFTU19ERVBUSF9GQUlMIDogMHgwQjk1LAorU1RFTkNJTF9QQVNTX0RFUFRIX1BB
U1MgOiAweDBCOTYsCitTVEVOQ0lMX1JFRiA6IDB4MEI5NywKK1NURU5DSUxfVkFMVUVfTUFTSyA6
IDB4MEI5MywKK1NURU5DSUxfV1JJVEVNQVNLIDogMHgwQjk4LAorU1RFTkNJTF9CQUNLX0ZVTkMg
OiAweDg4MDAsCitTVEVOQ0lMX0JBQ0tfRkFJTCA6IDB4ODgwMSwKK1NURU5DSUxfQkFDS19QQVNT
X0RFUFRIX0ZBSUwgOiAweDg4MDIsCitTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTIDogMHg4
ODAzLAorU1RFTkNJTF9CQUNLX1JFRiA6IDB4OENBMywKK1NURU5DSUxfQkFDS19WQUxVRV9NQVNL
IDogMHg4Q0E0LAorU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyA6IDB4OENBNSwKK1ZJRVdQT1JUIDog
MHgwQkEyLAorU0NJU1NPUl9CT1ggOiAweDBDMTAsCitDT0xPUl9DTEVBUl9WQUxVRSA6IDB4MEMy
MiwKK0NPTE9SX1dSSVRFTUFTSyA6IDB4MEMyMywKK1VOUEFDS19BTElHTk1FTlQgOiAweDBDRjUs
CitQQUNLX0FMSUdOTUVOVCA6IDB4MEQwNSwKK01BWF9URVhUVVJFX1NJWkUgOiAweDBEMzMsCitN
QVhfVklFV1BPUlRfRElNUyA6IDB4MEQzQSwKK1NVQlBJWEVMX0JJVFMgOiAweDBENTAsCitSRURf
QklUUyA6IDB4MEQ1MiwKK0dSRUVOX0JJVFMgOiAweDBENTMsCitCTFVFX0JJVFMgOiAweDBENTQs
CitBTFBIQV9CSVRTIDogMHgwRDU1LAorREVQVEhfQklUUyA6IDB4MEQ1NiwKK1NURU5DSUxfQklU
UyA6IDB4MEQ1NywKK1BPTFlHT05fT0ZGU0VUX1VOSVRTIDogMHgyQTAwLAorUE9MWUdPTl9PRkZT
RVRfRkFDVE9SIDogMHg4MDM4LAorVEVYVFVSRV9CSU5ESU5HXzJEIDogMHg4MDY5LAorU0FNUExF
X0JVRkZFUlMgOiAweDgwQTgsCitTQU1QTEVTIDogMHg4MEE5LAorU0FNUExFX0NPVkVSQUdFX1ZB
TFVFIDogMHg4MEFBLAorU0FNUExFX0NPVkVSQUdFX0lOVkVSVCA6IDB4ODBBQiwKK0NPTVBSRVNT
RURfVEVYVFVSRV9GT1JNQVRTIDogMHg4NkEzLAorRE9OVF9DQVJFIDogMHgxMTAwLAorRkFTVEVT
VCA6IDB4MTEwMSwKK05JQ0VTVCA6IDB4MTEwMiwKK0dFTkVSQVRFX01JUE1BUF9ISU5UIDogMHg4
MTkyLAorQllURSA6IDB4MTQwMCwKK1VOU0lHTkVEX0JZVEUgOiAweDE0MDEsCitTSE9SVCA6IDB4
MTQwMiwKK1VOU0lHTkVEX1NIT1JUIDogMHgxNDAzLAorSU5UIDogMHgxNDA0LAorVU5TSUdORURf
SU5UIDogMHgxNDA1LAorRkxPQVQgOiAweDE0MDYsCisvL0ZJWEVEIDogMHgxNDBDLAorREVQVEhf
Q09NUE9ORU5UIDogMHgxOTAyLAorQUxQSEEgOiAweDE5MDYsCitSR0IgOiAweDE5MDcsCitSR0JB
IDogMHgxOTA4LAorTFVNSU5BTkNFIDogMHgxOTA5LAorTFVNSU5BTkNFX0FMUEhBIDogMHgxOTBB
LAorVU5TSUdORURfU0hPUlRfNF80XzRfNCA6IDB4ODAzMywKK1VOU0lHTkVEX1NIT1JUXzVfNV81
XzEgOiAweDgwMzQsCitVTlNJR05FRF9TSE9SVF81XzZfNSA6IDB4ODM2MywKK0ZSQUdNRU5UX1NI
QURFUiA6IDB4OEIzMCwKK1ZFUlRFWF9TSEFERVIgOiAweDhCMzEsCitNQVhfVkVSVEVYX0FUVFJJ
QlMgOiAweDg4NjksCitNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyA6IDB4OERGQiwKK01BWF9W
QVJZSU5HX1ZFQ1RPUlMgOiAweDhERkMsCitNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklU
UyA6IDB4OEI0RCwKK01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyA6IDB4OEI0QywKK01B
WF9URVhUVVJFX0lNQUdFX1VOSVRTIDogMHg4ODcyLAorTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SUyA6IDB4OERGRCwKK1NIQURFUl9UWVBFIDogMHg4QjRGLAorREVMRVRFX1NUQVRVUyA6IDB4
OEI4MCwKK0xJTktfU1RBVFVTIDogMHg4QjgyLAorVkFMSURBVEVfU1RBVFVTIDogMHg4QjgzLAor
QVRUQUNIRURfU0hBREVSUyA6IDB4OEI4NSwKK0FDVElWRV9VTklGT1JNUyA6IDB4OEI4NiwKK0FD
VElWRV9BVFRSSUJVVEVTIDogMHg4Qjg5LAorU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OIDogMHg4
QjhDLAorQ1VSUkVOVF9QUk9HUkFNIDogMHg4QjhELAorTkVWRVIgOiAweDAyMDAsCitMRVNTIDog
MHgwMjAxLAorRVFVQUwgOiAweDAyMDIsCitMRVFVQUwgOiAweDAyMDMsCitHUkVBVEVSIDogMHgw
MjA0LAorTk9URVFVQUwgOiAweDAyMDUsCitHRVFVQUwgOiAweDAyMDYsCitBTFdBWVMgOiAweDAy
MDcsCitLRUVQIDogMHgxRTAwLAorUkVQTEFDRSA6IDB4MUUwMSwKK0lOQ1IgOiAweDFFMDIsCitE
RUNSIDogMHgxRTAzLAorSU5WRVJUIDogMHgxNTBBLAorSU5DUl9XUkFQIDogMHg4NTA3LAorREVD
Ul9XUkFQIDogMHg4NTA4LAorVkVORE9SIDogMHgxRjAwLAorUkVOREVSRVIgOiAweDFGMDEsCitW
RVJTSU9OIDogMHgxRjAyLAorLy9FWFRFTlNJT05TIDogMHgxRjAzLAorTkVBUkVTVCA6IDB4MjYw
MCwKK0xJTkVBUiA6IDB4MjYwMSwKK05FQVJFU1RfTUlQTUFQX05FQVJFU1QgOiAweDI3MDAsCitM
SU5FQVJfTUlQTUFQX05FQVJFU1QgOiAweDI3MDEsCitORUFSRVNUX01JUE1BUF9MSU5FQVIgOiAw
eDI3MDIsCitMSU5FQVJfTUlQTUFQX0xJTkVBUiA6IDB4MjcwMywKK1RFWFRVUkVfTUFHX0ZJTFRF
UiA6IDB4MjgwMCwKK1RFWFRVUkVfTUlOX0ZJTFRFUiA6IDB4MjgwMSwKK1RFWFRVUkVfV1JBUF9T
IDogMHgyODAyLAorVEVYVFVSRV9XUkFQX1QgOiAweDI4MDMsCitURVhUVVJFIDogMHgxNzAyLAor
VEVYVFVSRV9DVUJFX01BUCA6IDB4ODUxMywKK1RFWFRVUkVfQklORElOR19DVUJFX01BUCA6IDB4
ODUxNCwKK1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA6IDB4ODUxNSwKK1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCA6IDB4ODUxNiwKK1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSA6
IDB4ODUxNywKK1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSA6IDB4ODUxOCwKK1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWiA6IDB4ODUxOSwKK1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WiA6IDB4ODUxQSwKK01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgOiAweDg1MUMsCitURVhUVVJF
MCA6IDB4ODRDMCwKK1RFWFRVUkUxIDogMHg4NEMxLAorVEVYVFVSRTIgOiAweDg0QzIsCitURVhU
VVJFMyA6IDB4ODRDMywKK1RFWFRVUkU0IDogMHg4NEM0LAorVEVYVFVSRTUgOiAweDg0QzUsCitU
RVhUVVJFNiA6IDB4ODRDNiwKK1RFWFRVUkU3IDogMHg4NEM3LAorVEVYVFVSRTggOiAweDg0Qzgs
CitURVhUVVJFOSA6IDB4ODRDOSwKK1RFWFRVUkUxMCA6IDB4ODRDQSwKK1RFWFRVUkUxMSA6IDB4
ODRDQiwKK1RFWFRVUkUxMiA6IDB4ODRDQywKK1RFWFRVUkUxMyA6IDB4ODRDRCwKK1RFWFRVUkUx
NCA6IDB4ODRDRSwKK1RFWFRVUkUxNSA6IDB4ODRDRiwKK1RFWFRVUkUxNiA6IDB4ODREMCwKK1RF
WFRVUkUxNyA6IDB4ODREMSwKK1RFWFRVUkUxOCA6IDB4ODREMiwKK1RFWFRVUkUxOSA6IDB4ODRE
MywKK1RFWFRVUkUyMCA6IDB4ODRENCwKK1RFWFRVUkUyMSA6IDB4ODRENSwKK1RFWFRVUkUyMiA6
IDB4ODRENiwKK1RFWFRVUkUyMyA6IDB4ODRENywKK1RFWFRVUkUyNCA6IDB4ODREOCwKK1RFWFRV
UkUyNSA6IDB4ODREOSwKK1RFWFRVUkUyNiA6IDB4ODREQSwKK1RFWFRVUkUyNyA6IDB4ODREQiwK
K1RFWFRVUkUyOCA6IDB4ODREQywKK1RFWFRVUkUyOSA6IDB4ODRERCwKK1RFWFRVUkUzMCA6IDB4
ODRERSwKK1RFWFRVUkUzMSA6IDB4ODRERiwKK0FDVElWRV9URVhUVVJFIDogMHg4NEUwLAorUkVQ
RUFUIDogMHgyOTAxLAorQ0xBTVBfVE9fRURHRSA6IDB4ODEyRiwKK01JUlJPUkVEX1JFUEVBVCA6
IDB4ODM3MCwKK0ZMT0FUX1ZFQzIgOiAweDhCNTAsCitGTE9BVF9WRUMzIDogMHg4QjUxLAorRkxP
QVRfVkVDNCA6IDB4OEI1MiwKK0lOVF9WRUMyIDogMHg4QjUzLAorSU5UX1ZFQzMgOiAweDhCNTQs
CitJTlRfVkVDNCA6IDB4OEI1NSwKK0JPT0wgOiAweDhCNTYsCitCT09MX1ZFQzIgOiAweDhCNTcs
CitCT09MX1ZFQzMgOiAweDhCNTgsCitCT09MX1ZFQzQgOiAweDhCNTksCitGTE9BVF9NQVQyIDog
MHg4QjVBLAorRkxPQVRfTUFUMyA6IDB4OEI1QiwKK0ZMT0FUX01BVDQgOiAweDhCNUMsCitTQU1Q
TEVSXzJEIDogMHg4QjVFLAorU0FNUExFUl9DVUJFIDogMHg4QjYwLAorVkVSVEVYX0FUVFJJQl9B
UlJBWV9FTkFCTEVEIDogMHg4NjIyLAorVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFIDogMHg4NjIz
LAorVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUgOiAweDg2MjQsCitWRVJURVhfQVRUUklCX0FS
UkFZX1RZUEUgOiAweDg2MjUsCitWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgOiAweDg4
NkEsCitWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgOiAweDg2NDUsCitWRVJURVhfQVRUUklC
X0FSUkFZX0JVRkZFUl9CSU5ESU5HIDogMHg4ODlGLAorLy9JTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX1RZUEUgOiAweDhCOUEsCisvL0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIDog
MHg4QjlCLAorQ09NUElMRV9TVEFUVVMgOiAweDhCODEsCisvL1NIQURFUl9DT01QSUxFUiA6IDB4
OERGQSwKK0xPV19GTE9BVCA6IDB4OERGMCwKK01FRElVTV9GTE9BVCA6IDB4OERGMSwKK0hJR0hf
RkxPQVQgOiAweDhERjIsCitMT1dfSU5UIDogMHg4REYzLAorTUVESVVNX0lOVCA6IDB4OERGNCwK
K0hJR0hfSU5UIDogMHg4REY1LAorRlJBTUVCVUZGRVIgOiAweDhENDAsCitSRU5ERVJCVUZGRVIg
OiAweDhENDEsCitSR0JBNCA6IDB4ODA1NiwKK1JHQjVfQTEgOiAweDgwNTcsCitSR0I1NjUgOiAw
eDhENjIsCitERVBUSF9DT01QT05FTlQxNiA6IDB4ODFBNSwKK1NURU5DSUxfSU5ERVg4IDogMHg4
RDQ4LAorREVQVEhfU1RFTkNJTCA6IDB4ODRGOSwKK1JFTkRFUkJVRkZFUl9XSURUSCA6IDB4OEQ0
MiwKK1JFTkRFUkJVRkZFUl9IRUlHSFQgOiAweDhENDMsCitSRU5ERVJCVUZGRVJfSU5URVJOQUxf
Rk9STUFUIDogMHg4RDQ0LAorUkVOREVSQlVGRkVSX1JFRF9TSVpFIDogMHg4RDUwLAorUkVOREVS
QlVGRkVSX0dSRUVOX1NJWkUgOiAweDhENTEsCitSRU5ERVJCVUZGRVJfQkxVRV9TSVpFIDogMHg4
RDUyLAorUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgOiAweDhENTMsCitSRU5ERVJCVUZGRVJfREVQ
VEhfU0laRSA6IDB4OEQ1NCwKK1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUgOiAweDhENTUsCitG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFIDogMHg4Q0QwLAorRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfTkFNRSA6IDB4OENEMSwKK0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTCA6IDB4OENEMiwKK0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9D
VUJFX01BUF9GQUNFIDogMHg4Q0QzLAorQ09MT1JfQVRUQUNITUVOVDAgOiAweDhDRTAsCitERVBU
SF9BVFRBQ0hNRU5UIDogMHg4RDAwLAorU1RFTkNJTF9BVFRBQ0hNRU5UIDogMHg4RDIwLAorREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5UIDogMHg4MjFBLAorTk9ORSA6IDAsCitGUkFNRUJVRkZFUl9D
T01QTEVURSA6IDB4OENENSwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCA6IDB4
OENENiwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UIDogMHg4Q0Q3
LAorRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIDogMHg4Q0Q5LAorRlJBTUVCVUZG
RVJfVU5TVVBQT1JURUQgOiAweDhDREQsCitGUkFNRUJVRkZFUl9CSU5ESU5HIDogMHg4Q0E2LAor
UkVOREVSQlVGRkVSX0JJTkRJTkcgOiAweDhDQTcsCitNQVhfUkVOREVSQlVGRkVSX1NJWkUgOiAw
eDg0RTgsCitJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IDB4MDUwNiwKKy8vRkFMU0Ug
OiAwLAorLy9UUlVFIDogMSwKK1VOUEFDS19GTElQX1lfV0VCR0wgOiAweDkyNDAsCitVTlBBQ0tf
UFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgOiAweDkyNDEKK30KKworVGVzdHMudGVzdE9FUzIwQ29u
c3RhbnRzID0gZnVuY3Rpb24oZ2wpIHsKKyAgZm9yICh2YXIgaSBpbiBjb25zdGFudHMpIHsKKyAg
ICBhc3NlcnRQcm9wZXJ0eShnbCwgaSkgJiYKKyAgICBhc3NlcnRFcXVhbHMoaSwgZ2xbaV0sIGNv
bnN0YW50c1tpXSk7CisgIH0KKyAgdmFyIGV4dGVuZGVkID0gZmFsc2U7CisgIGZvciAodmFyIGkg
aW4gZ2wpIHsKKyAgICBpZiAoaS5tYXRjaCgvXltBLVpfXSskLykgJiYgY29uc3RhbnRzW2ldID09
IG51bGwpIHsKKyAgICAgIGlmICghZXh0ZW5kZWQpIHsKKyAgICAgICAgZXh0ZW5kZWQgPSB0cnVl
OworICAgICAgICB2YXIgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7CisgICAgICAg
IGgudGV4dENvbnRlbnQgPSAiQWxzbyBmb3VuZCB0aGUgZm9sbG93aW5nIGV4dHJhIGNvbnN0YW50
cyI7CisgICAgICAgIF9fdGVzdExvZ19fLmFwcGVuZENoaWxkKGgpOworICAgICAgfQorICAgICAg
bG9nKGkpOworICAgIH0KKyAgfQorfQorCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbigpIHsK
KyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wg
PSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgcmV0dXJuIFtnbF07Cit9
CisKKzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxl
PgorPC9oZWFkPjxib2R5PgorICA8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+
PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9m
dXp6VGhlQVBJLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL2Z1enpUaGVBUEkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTA5MGFlYjRiYTczZGM2Y2MwMDAzMGExNjdlMzU5NzFmNTZjOWM2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9mdXp6VGhlQVBJLmh0bWwKQEAgLTAsMCArMSwxMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgor
CitUZXN0cy5hdXRvcnVuID0gZmFsc2U7CitUZXN0cy5tZXNzYWdlID0gIlRoaXMgd2lsbCBmdXp6
IHRoZSBBUEkgd2l0aCByYW5kb20gaW5wdXRzIGZvciBhIFtsb25nXSB3aGlsZS4iCisKKworZnVu
Y3Rpb24gcmFuZG9tQ2FsbCh0ZXN0UHJvZ3Jlc3MsIGdsLCBtLCBhcml0aWVzKSB7CisgICAgZG9U
ZXN0Tm90aWZ5KG0pOworICAgIHZhciBhcmdjcyA9IHt9OworICAgIHZhciBmb3VuZEFyaXR5ID0g
ZmFsc2U7CisgICAgaWYgKGFyaXRpZXMgPT0gbnVsbCkgeworICAgICAgICB0ZXN0UHJvZ3Jlc3Mu
dGV4dENvbnRlbnQgKz0gIiAgICAgICAgICAgIDUwMCByYW5kb20gYXJpdHkgY2FsbHMgb24gIiAr
IG0gKyAiXG4iOworICAgICAgICBmb3IgKHZhciBpPTA7IGk8NTA7IGkrKykgeworICAgICAgICAg
ICAgZm9yICh2YXIgaj0wOyBqPDEwOyBqKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgYXJncyA9
IGdlbmVyYXRlUmFuZG9tQXJncyhqKTsKKy8vICAgICAgICAgICAgICAgICBkb1Rlc3ROb3RpZnko
bSArICI6ICIgKyBhcmdzLnRvU291cmNlKCkpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgICAgIGdsW21dLmFwcGx5KGdsLCBhcmdzKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXJnY3Nbal0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3VuZEFyaXR5ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGogaW4gYXJnY3MpIHsKKyAg
ICAgICAgICAgIHRlc3RQcm9ncmVzcy50ZXh0Q29udGVudCArPSAiMjAwIGFyaXR5ICIgKyBqICsg
IiBjYWxscyBvbiAiICsgbSArICJcbiI7CisgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8MjAw
OyBpKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGdlbmVyYXRlUmFuZG9tQXJncyhq
KTsKKy8vICAgICAgICAgICAgICAgICBkb1Rlc3ROb3RpZnkobSArICI6ICIgKyBhcmdzLnRvU291
cmNlKCkpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGdsW21d
LmFwcGx5KGdsLCBhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJnY3Nbal0gPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHZhciBrPTA7IGs8
YXJpdGllcy5sZW5ndGg7IGsrKykgeworICAgICAgICAgICAgdmFyIGogPSBhcml0aWVzW2tdOwor
ICAgICAgICAgICAgdGVzdFByb2dyZXNzLnRleHRDb250ZW50ICs9ICI1MDAgYXJpdHkgIiArIGog
KyAiIGNhbGxzIG9uICIgKyBtICsgIlxuIjsKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTw1
MDA7IGkrKykgeworICAgICAgICAgICAgICAgIHZhciBhcmdzID0gZ2VuZXJhdGVSYW5kb21Bcmdz
KGopOworLy8gICAgICAgICAgICAgICAgIGRvVGVzdE5vdGlmeShtICsgIjogIiArIGFyZ3MudG9T
b3VyY2UoKSk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZ2xb
bV0uYXBwbHkoZ2wsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisvLyAgICAgZG9U
ZXN0Tm90aWZ5KG0rIi0tT0siKTsKK30KKworVGVzdHMudGVzdEdldEdMV2ViMjAgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgdGVzdFByb2dyZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3RQcm9ncmVzcycpOworICAgIHZhciBmdW5jbmFtZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZnVuY25hbWVzJykudmFsdWUuc3BsaXQoIiwiKTsKKyAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2dsd2ViMjAnKTsKKyAgICB2YXIgZ2w7CisgICAgYXNzZXJ0T2so
ZnVuY3Rpb24oKXtnbCA9IGdldEdMQ29udGV4dChjYW52YXMpO30pOworICAgIHZhciBmdW5jcyA9
IFtdOworICAgIGZvciAodmFyIGk9MDsgaTxmdW5jbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIGZuID0gZnVuY25hbWVzW2ldOworICAgICAgICBmbiA9IGZuLnJlcGxhY2UoL15ccyt8
XHMrJC9nLCAnJyk7CisgICAgICAgIGlmIChmbi5sZW5ndGggPiAwKQorICAgICAgICAgICAgZnVu
Y3MucHVzaChmbik7CisgICAgfQorICAgIGlmIChmdW5jcy5sZW5ndGggPT0gMCkgeworICAgICAg
ICBmb3IgKHZhciBtIGluIGdsKQorICAgICAgICAgICAgdHJ5e2lmICh0eXBlb2YgZ2xbbV0gPT0g
J2Z1bmN0aW9uJykKKyAgICAgICAgICAgICAgICBmdW5jcy5wdXNoKG0pO31jYXRjaChlKXt9Cisg
ICAgfQorICAgIHZhciBpZHggPSAwOworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGxpbWl0
ID0gMTAwMDsKKyAgICB2YXIgaXYxOworICAgIHZhciBpdjI7CisgICAgaXYxID0gc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKXsKKyAgICAgICAgaWYgKGlkeCA+PSBmdW5jcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIGl2MiA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgaWYg
KGNvdW50ID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaXYy
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgIHZhciBmID0gTWF0aC5m
bG9vcihNYXRoLnJhbmRvbSgpICogZnVuY3MubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICByYW5k
b21DYWxsKHRlc3RQcm9ncmVzcywgZ2wsIGZ1bmNzW2ZdKTsKKyAgICAgICAgICAgIH0sIDUwKTsK
KyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaXYxKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByYW5kb21DYWxsKHRlc3RQcm9ncmVzcywgZ2wsIGZ1bmNz
W2lkeF0pOworICAgICAgICBpZHgrKzsKKyAgICB9LCA1MCk7Cit9CisKKzwvc2NyaXB0PgorPHN0
eWxlPmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5Pgor
ICA8Y2FudmFzIGlkPSJnbHdlYjIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgor
ICA8cD5PcHRpb25hbDogRW50ZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmdW5jdGlvbnMg
dG8gZnV6eiAobGVhdmUgYmxhbmsgZm9yIGZ1bGwgQVBJKTwvcD4KKyAgPGlucHV0IHR5cGU9InRl
eHQiIHNpemU9IjQwIiBpZD0iZnVuY25hbWVzIiB2YWx1ZT0iIj4KKyAgPHByZSBpZD0idGVzdFBy
b2dyZXNzIj48L3ByZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1h
bmNlL2dldENvbnRleHQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvZ2V0Q29udGV4dC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0YzA1NTkxMjM2ZWIwZjM4YzE5NzBkNjFiNGRhYmMzYjliODcwNWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL2dldENvbnRleHQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4K
KzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91
dGlsLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Ij4KKworVGVzdHMudGVzdEdldFdlYkdMID0gZnVuY3Rpb24oKSB7CisgIHZhciBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2ViZ2wnKTsKKyAgdmFyIGdsOworICBhc3NlcnRPayhm
dW5jdGlvbigpe2dsID0gZ2V0R0xDb250ZXh0KGNhbnZhcyl9KTsKKyAgYXNzZXJ0RXF1YWxzKCJj
dHguY2FudmFzID09PSBjYW52YXMiLCBnbC5jYW52YXMsIGNhbnZhcyk7CisgIGFzc2VydE9rKGZ1
bmN0aW9uKCl7ZzJkID0gY2FudmFzLmdldENvbnRleHQoJzJkJyl9KTsKKyAgYXNzZXJ0KCJTaG91
bGQgZ2V0IGEgbnVsbCAyZCBjb250ZXh0IGFmdGVyIGdldHRpbmcgd2ViZ2wgY29udGV4dCIsIGcy
ZCA9PT0gbnVsbCk7Cit9CisKK1Rlc3RzLnRlc3RHZXQyRCA9IGZ1bmN0aW9uKCkgeworICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzJkJyk7CisgIHZhciBnMmQ7CisgIHZh
ciBnbDsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnMmQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQn
KX0pOworICBhc3NlcnRPayhmdW5jdGlvbigpe2dsID0gZ2V0R0xDb250ZXh0KGNhbnZhcyl9KTsK
KyAgYXNzZXJ0KCJTaG91bGQgZ2V0IGEgbnVsbCBXZWJHTCBjb250ZXh0IGFmdGVyIGdldHRpbmcg
MkQgY29udGV4dCIsIGdsID09PSBudWxsKTsKK30KKzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3tw
b3NpdGlvbjphYnNvbHV0ZTt9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPGNhbnZhcyBpZD0i
MmQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvY2FudmFzPgorICA8Y2FudmFzIGlkPSJ3ZWJnbCIg
d2lkdGg9IjEiIGhlaWdodD0iMSI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9jb25mb3JtYW5jZS9tZXRob2RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL21ldGhv
ZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNmQxNGJkODI3YzU1ZTVlNzE3ZDAzZDQ4MjBmZjI2OGJkYTAy
NDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9tZXRob2RzLmh0bWwKQEAg
LTAsMCArMSwxODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQu
Y3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3Vu
aXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBz
cmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Ij4KKworLyoKKyAgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgZ2VuZXJhdGVkIGZyb20K
KyAgaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2FwaS8yLjAvZ2wyLmgKKyAg
YW5kIGFwaV9tb2RpZmljYXRpb25zLnR4dAorKi8KK3ZhciBtZXRob2RzID0gWydjYW52YXMnLAor
ImFjdGl2ZVRleHR1cmUiLAorImF0dGFjaFNoYWRlciIsCisiYmluZEF0dHJpYkxvY2F0aW9uIiwK
KyJiaW5kQnVmZmVyIiwKKyJiaW5kRnJhbWVidWZmZXIiLAorImJpbmRSZW5kZXJidWZmZXIiLAor
ImJpbmRUZXh0dXJlIiwKKyJibGVuZENvbG9yIiwKKyJibGVuZEVxdWF0aW9uIiwKKyJibGVuZEVx
dWF0aW9uU2VwYXJhdGUiLAorImJsZW5kRnVuYyIsCisiYmxlbmRGdW5jU2VwYXJhdGUiLAorImJ1
ZmZlckRhdGEiLAorImJ1ZmZlclN1YkRhdGEiLAorImNoZWNrRnJhbWVidWZmZXJTdGF0dXMiLAor
ImNsZWFyIiwKKyJjbGVhckNvbG9yIiwKKyJjbGVhckRlcHRoIiwKKyJjbGVhclN0ZW5jaWwiLAor
ImNvbG9yTWFzayIsCisiY29tcGlsZVNoYWRlciIsCisiY29weVRleEltYWdlMkQiLAorImNvcHlU
ZXhTdWJJbWFnZTJEIiwKKyJjcmVhdGVQcm9ncmFtIiwKKyJjcmVhdGVTaGFkZXIiLAorImN1bGxG
YWNlIiwKKyJkZWxldGVCdWZmZXIiLAorImRlbGV0ZUZyYW1lYnVmZmVyIiwKKyJkZWxldGVQcm9n
cmFtIiwKKyJkZWxldGVSZW5kZXJidWZmZXIiLAorImRlbGV0ZVNoYWRlciIsCisiZGVsZXRlVGV4
dHVyZSIsCisiZGVwdGhGdW5jIiwKKyJkZXB0aE1hc2siLAorImRlcHRoUmFuZ2UiLAorImRldGFj
aFNoYWRlciIsCisiZGlzYWJsZSIsCisiZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IiwKKyJkcmF3
QXJyYXlzIiwKKyJkcmF3RWxlbWVudHMiLAorImVuYWJsZSIsCisiZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkiLAorImZpbmlzaCIsCisiZmx1c2giLAorImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwK
KyJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsCisiZnJvbnRGYWNlIiwKKyJjcmVhdGVCdWZmZXIiLAor
ImdlbmVyYXRlTWlwbWFwIiwKKyJjcmVhdGVGcmFtZWJ1ZmZlciIsCisiY3JlYXRlUmVuZGVyYnVm
ZmVyIiwKKyJjcmVhdGVUZXh0dXJlIiwKKyJnZXRBY3RpdmVBdHRyaWIiLAorImdldEFjdGl2ZVVu
aWZvcm0iLAorImdldEF0dGFjaGVkU2hhZGVycyIsCisiZ2V0QXR0cmliTG9jYXRpb24iLAorImdl
dEJ1ZmZlclBhcmFtZXRlciIsCisiZ2V0RXJyb3IiLAorImdldEV4dGVuc2lvbiIsCisiZ2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucyIsCisiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwK
KyJnZXRQcm9ncmFtSW5mb0xvZyIsCisiZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIiwKKyJnZXRT
aGFkZXJJbmZvTG9nIiwKKyJnZXRTaGFkZXJTb3VyY2UiLAorImdldFVuaWZvcm1Mb2NhdGlvbiIs
CisiaGludCIsCisiaXNCdWZmZXIiLAorImlzQ29udGV4dExvc3QiLAorImlzRW5hYmxlZCIsCisi
aXNGcmFtZWJ1ZmZlciIsCisiaXNQcm9ncmFtIiwKKyJpc1JlbmRlcmJ1ZmZlciIsCisiaXNTaGFk
ZXIiLAorImlzVGV4dHVyZSIsCisibGluZVdpZHRoIiwKKyJsaW5rUHJvZ3JhbSIsCisicG9seWdv
bk9mZnNldCIsCisicmVhZFBpeGVscyIsCisicmVuZGVyYnVmZmVyU3RvcmFnZSIsCisic2FtcGxl
Q292ZXJhZ2UiLAorInNjaXNzb3IiLAorInNoYWRlclNvdXJjZSIsCisic3RlbmNpbEZ1bmMiLAor
InN0ZW5jaWxGdW5jU2VwYXJhdGUiLAorInN0ZW5jaWxNYXNrIiwKKyJzdGVuY2lsTWFza1NlcGFy
YXRlIiwKKyJzdGVuY2lsT3AiLAorInN0ZW5jaWxPcFNlcGFyYXRlIiwKKyJ0ZXhJbWFnZTJEIiwK
KyJ0ZXhQYXJhbWV0ZXJpIiwKKyJ0ZXhTdWJJbWFnZTJEIiwKKyJ1bmlmb3JtMWYiLAorInVuaWZv
cm0xZnYiLAorInVuaWZvcm0xaSIsCisidW5pZm9ybTFpdiIsCisidW5pZm9ybTJmIiwKKyJ1bmlm
b3JtMmZ2IiwKKyJ1bmlmb3JtMmkiLAorInVuaWZvcm0yaXYiLAorInVuaWZvcm0zZiIsCisidW5p
Zm9ybTNmdiIsCisidW5pZm9ybTNpIiwKKyJ1bmlmb3JtM2l2IiwKKyJ1bmlmb3JtNGYiLAorInVu
aWZvcm00ZnYiLAorInVuaWZvcm00aSIsCisidW5pZm9ybTRpdiIsCisidW5pZm9ybU1hdHJpeDJm
diIsCisidW5pZm9ybU1hdHJpeDNmdiIsCisidW5pZm9ybU1hdHJpeDRmdiIsCisidXNlUHJvZ3Jh
bSIsCisidmFsaWRhdGVQcm9ncmFtIiwKKyJ2ZXJ0ZXhBdHRyaWIxZiIsCisidmVydGV4QXR0cmli
MWZ2IiwKKyJ2ZXJ0ZXhBdHRyaWIyZiIsCisidmVydGV4QXR0cmliMmZ2IiwKKyJ2ZXJ0ZXhBdHRy
aWIzZiIsCisidmVydGV4QXR0cmliM2Z2IiwKKyJ2ZXJ0ZXhBdHRyaWI0ZiIsCisidmVydGV4QXR0
cmliNGZ2IiwKKyJ2ZXJ0ZXhBdHRyaWJQb2ludGVyIiwKKyJ2aWV3cG9ydCIsCisiZ2V0UGFyYW1l
dGVyIiwKKyJnZXRQcm9ncmFtUGFyYW1ldGVyIiwKKyJnZXRTaGFkZXJQYXJhbWV0ZXIiLAorImdl
dFRleFBhcmFtZXRlciIsCisiZ2V0VW5pZm9ybSIsCisiZ2V0VmVydGV4QXR0cmliIgorXQorCitU
ZXN0cy50ZXN0T0VTMjBNZXRob2RzID0gZnVuY3Rpb24oZ2wpIHsKKyAgZm9yICh2YXIgaT0wOyBp
PG1ldGhvZHMubGVuZ3RoOyBpKyspIHsKKyAgICBhc3NlcnRQcm9wZXJ0eShnbCwgbWV0aG9kc1tp
XSk7CisgIH0KKyAgdmFyIGV4dGVuZGVkID0gZmFsc2U7CisgIGZvciAodmFyIGkgaW4gZ2wpIHsK
KyAgICBpZiAoaS5tYXRjaCgvXlthLXpfXSskLykgJiYgbWV0aG9kcy5pbmRleE9mKGkpID09IC0x
KSB7CisgICAgICBpZiAoIWV4dGVuZGVkKSB7CisgICAgICAgIGV4dGVuZGVkID0gdHJ1ZTsKKyAg
ICAgICAgdmFyIGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMycpOworICAgICAgICBoLnRl
eHRDb250ZW50ID0gIkFsc28gZm91bmQgdGhlIGZvbGxvd2luZyBleHRyYSBwcm9wZXJ0aWVzIjsK
KyAgICAgICAgX190ZXN0TG9nX18uYXBwZW5kQ2hpbGQoaCk7CisgICAgICB9CisgICAgICBsb2co
aSk7CisgICAgfQorICB9Cit9CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uKCkgeworICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdy
YXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKwor
PC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8
L2hlYWQ+PGJvZHk+CisgIDxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2Nh
bnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL3F1aWNr
Q2hlY2tBUEktQS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLUEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTQ1MzQ1N2MzZTQ4MTI3NDBhZGM2Yjk3YzNmYTE4YjM5YjI1MzNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLUEuaHRtbApAQCAt
MCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNz
cyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3Jj
PSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgc3JjPSJxdWlja0NoZWNrQVBJLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBw
bGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJhcmdHZW5lcmF0b3JzLUEuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRoYXQg
YWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3aGVu
IGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3RzLnRl
c3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEwMDsK
KyAgZm9yICh2YXIgbmFtZSBpbiBBcmdHZW5lcmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAgIGlm
ICghR0xbbmFtZV0pCisgICAgICAgIHRocm93IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlzc2lu
ZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0IikpOworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dlbmVy
YXRvcnNbbmFtZV07CisgICAgICB2YXIgYWxyZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAgaWYg
KCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRpbnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0
aW9uIHdpdGggcmFuZG9tVGVzdENvdW50IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisg
ICAgICBhcmdHZW5lcmF0b3JUZXN0UnVubmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBz
ZXR1cFZhcnMpIHsKKyAgICAgICAgaWYgKCFnZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgeworICAg
ICAgICAgIHZhciBzcmMgPSBPYmplY3QudG9Tb3VyY2UoYXJncyk7CisgICAgICAgICAgaWYgKGFs
cmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
ICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNdID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIg
b2sgPSBmYWxzZTsKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2VyLCBh
c3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVkIGFyZ3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChnZW4u
Y2hlY2tBcmdWYWxpZGl0eSkKKyAgICAgICAgICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFtZSsi
KCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBnZW4uY2hlY2tBcmdW
YWxpZGl0eS5hcHBseShnZW4sIGFyZ3MpKTsKKyAgICAgICAgdmFyIHJ2OworICAgICAgICAvLyBh
c3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFyZ3MK
KyAgICAgICAgYXNzZXJ0T2soIlRoaXMgc2hvdWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1RvU3Ry
aW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFtZV0u
YXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRydWU7fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQgdG8g
Y2xlYW51cCB0aGUgcmV0dXJuIHZhbHVlLCBkbyBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4gY2Fs
bGluZyBnbC5kZWxldGVCdWZmZXIocnYpIGFmdGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVyKCkg
YWJvdmUKKyAgICAgICAgaWYgKGdlbi5yZXR1cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAgYXNz
ZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVybiB2YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NUb1N0
cmluZyhhcmdzKSsiKSIsCisgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5yZXR1
cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsKKyAgICAgICAgcmV0dXJuIG9rOworICAgICAgfSwgYXJn
R2VuLnRlc3RDb3VudCB8fCByYW5kb21UZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAg
ICAgdGVzdEZhaWxlZChuYW1lLCBlLm5hbWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0K
K30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxl
PgorPC9oZWFkPjxib2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9y
bWFuY2UvcXVpY2tDaGVja0FQSS1CMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNr
QVBJLUIxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQzNGYyNzc5NWVmZDYzYzE5MDcyNGM1OWNkMjUwZmQx
ZWY1NjM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQ
SS1CMS5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9InF1aWNrQ2hlY2tBUEkuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9ImFyZ0dlbmVyYXRvcnMtQjEu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgor
CisvLyBUZXN0IHRoYXQgYWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gQXJnR2VuZXJhdG9y
cyB3b3JrCisvLyB3aGVuIGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmd1
bWVudHMKK1Rlc3RzLnRlc3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHJhbmRvbVRl
c3RDb3VudCA9IDEwMDsKKyAgZm9yICh2YXIgbmFtZSBpbiBBcmdHZW5lcmF0b3JzKSB7CisgICAg
dHJ5IHsKKyAgICAgIGlmICghR0xbbmFtZV0pCisgICAgICAgIHRocm93IChuZXcgRXJyb3IobmFt
ZSArICIgaXMgbWlzc2luZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0IikpOworICAgICAgdmFyIGFy
Z0dlbiA9IEFyZ0dlbmVyYXRvcnNbbmFtZV07CisgICAgICB2YXIgYWxyZWFkeVRyaWVkQXJncyA9
IHt9OworICAgICAgaWYgKCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRpbnVlOworICAgICAgLy8gdGVz
dCBlYWNoIEdMIGZ1bmN0aW9uIHdpdGggcmFuZG9tVGVzdENvdW50IHJhbmRvbWx5IGdlbmVyYXRl
ZCB2YWxpZCBhcmdzCisgICAgICBhcmdHZW5lcmF0b3JUZXN0UnVubmVyKGFyZ0dlbiwgZnVuY3Rp
b24oYXJncywgZ2VuLCBzZXR1cFZhcnMpIHsKKyAgICAgICAgaWYgKCFnZW4ubm9BbHJlYWR5VHJp
ZWRDaGVjaykgeworICAgICAgICAgIHZhciBzcmMgPSBPYmplY3QudG9Tb3VyY2UoYXJncyk7Cisg
ICAgICAgICAgaWYgKGFscmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNdID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB2YWxp
ZGl0eSBjaGVja2VyLCBhc3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVkIGFyZ3MgYXJlIHZhbGlkCisg
ICAgICAgIGlmIChnZW4uY2hlY2tBcmdWYWxpZGl0eSkKKyAgICAgICAgICBhc3NlcnQoIlZhbGlk
IGFyZ3M6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAg
ICBnZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShnZW4sIGFyZ3MpKTsKKyAgICAgICAgdmFyIHJ2
OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCB3
aXRoIHZhbGlkIGFyZ3MKKyAgICAgICAgYXNzZXJ0T2soIlRoaXMgc2hvdWxkIHdvcms6ICIrbmFt
ZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigp
e3J2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRydWU7fSk7CisgICAgICAgIC8v
IGlmIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUgcmV0dXJuIHZhbHVlLCBkbyBpdCBoZXJlCisgICAg
ICAgIC8vIGUuZy4gY2FsbGluZyBnbC5kZWxldGVCdWZmZXIocnYpIGFmdGVyIHRlc3RpbmcgZ2wu
Y3JlYXRlQnVmZmVyKCkgYWJvdmUKKyAgICAgICAgaWYgKGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAp
CisgICAgICAgICAgYXNzZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVybiB2YWx1ZSBhZnRlciAiK25h
bWUrIigiK2FyZ3NUb1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsKKyAgICAgICAgcmV0dXJuIG9r
OworICAgICAgfSwgYXJnR2VuLnRlc3RDb3VudCB8fCByYW5kb21UZXN0Q291bnQpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgdGVzdEZhaWxlZChuYW1lLCBlLm5hbWUsIGZvcm1hdEVycm9yKGUp
KTsKKyAgICB9CisgIH0KK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFze3Bvc2l0aW9uOmFi
c29sdXRlO308L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1CMi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3Jt
YW5jZS9xdWlja0NoZWNrQVBJLUIyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmExZGRkOWJkOTdlMTU0YzNl
YmM4NDhkMDFlOTBjZDFhZjdjZGI0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFu
Y2UvcXVpY2tDaGVja0FQSS1CMi5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9InF1aWNrQ2hlY2tBUEkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9ImFy
Z0dlbmVyYXRvcnMtQjIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRoYXQgYWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZpZWQg
aW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3aGVuIGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdlbmVy
YXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3RzLnRlc3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigpIHsK
KyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEwMDsKKyAgZm9yICh2YXIgbmFtZSBpbiBBcmdHZW5l
cmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICghR0xbbmFtZV0pCisgICAgICAgIHRocm93
IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlzc2luZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0Iikp
OworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dlbmVyYXRvcnNbbmFtZV07CisgICAgICB2YXIgYWxy
ZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAgaWYgKCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRpbnVl
OworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0aW9uIHdpdGggcmFuZG9tVGVzdENvdW50IHJh
bmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisgICAgICBhcmdHZW5lcmF0b3JUZXN0UnVubmVy
KGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBzZXR1cFZhcnMpIHsKKyAgICAgICAgaWYgKCFn
ZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgeworICAgICAgICAgIHZhciBzcmMgPSBPYmplY3QudG9T
b3VyY2UoYXJncyk7CisgICAgICAgICAgaWYgKGFscmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNdID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICAgICAgLy8gaWYg
d2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2VyLCBhc3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVkIGFy
Z3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChnZW4uY2hlY2tBcmdWYWxpZGl0eSkKKyAgICAgICAg
ICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwK
KyAgICAgICAgICAgICAgICBnZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShnZW4sIGFyZ3MpKTsK
KyAgICAgICAgdmFyIHJ2OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3b3Jr
cyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFyZ3MKKyAgICAgICAgYXNzZXJ0T2soIlRoaXMgc2hv
dWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRydWU7
fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUgcmV0dXJuIHZhbHVlLCBk
byBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4gY2FsbGluZyBnbC5kZWxldGVCdWZmZXIocnYpIGFm
dGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVyKCkgYWJvdmUKKyAgICAgICAgaWYgKGdlbi5yZXR1
cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAgYXNzZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVybiB2
YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsKKyAg
ICAgICAgcmV0dXJuIG9rOworICAgICAgfSwgYXJnR2VuLnRlc3RDb3VudCB8fCByYW5kb21UZXN0
Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgdGVzdEZhaWxlZChuYW1lLCBlLm5hbWUs
IGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0KK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2Fu
dmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPC9ib2R5Pjwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1CMy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLUIzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhl
ODVkYmMwNGQwZWVkNTE3MDg3MDEyMTY5NDFiMzEwY2E3NWU4MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1CMy5odG1sCkBAIC0wLDAgKzEsNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlw
dCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9InF1
aWNrQ2hlY2tBUEkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiBzcmM9ImFyZ0dlbmVyYXRvcnMtQjMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRoYXQgYWxsIEdMIGZ1bmN0
aW9ucyBzcGVjaWZpZWQgaW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3aGVuIGNhbGxlZCB3aXRo
IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3RzLnRlc3RWYWxpZEFyZ3Mg
PSBmdW5jdGlvbigpIHsKKyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEwMDsKKyAgZm9yICh2YXIg
bmFtZSBpbiBBcmdHZW5lcmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICghR0xbbmFtZV0p
CisgICAgICAgIHRocm93IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlzc2luZyBmcm9tIHRoZSBX
ZWJHTCBjb250ZXh0IikpOworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dlbmVyYXRvcnNbbmFtZV07
CisgICAgICB2YXIgYWxyZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAgaWYgKCFhcmdHZW4uZ2Vu
ZXJhdGUpIGNvbnRpbnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0aW9uIHdpdGggcmFu
ZG9tVGVzdENvdW50IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisgICAgICBhcmdHZW5l
cmF0b3JUZXN0UnVubmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBzZXR1cFZhcnMpIHsK
KyAgICAgICAgaWYgKCFnZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgeworICAgICAgICAgIHZhciBz
cmMgPSBPYmplY3QudG9Tb3VyY2UoYXJncyk7CisgICAgICAgICAgaWYgKGFscmVhZHlUcmllZEFy
Z3Nbc3JjXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgYWxyZWFkeVRy
aWVkQXJnc1tzcmNdID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2VyLCBhc3NlcnQgdGhhdCB0
aGUgZ2VuZXJhdGVkIGFyZ3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChnZW4uY2hlY2tBcmdWYWxp
ZGl0eSkKKyAgICAgICAgICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFtZSsiKCIrYXJnc1RvU3Ry
aW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBnZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBs
eShnZW4sIGFyZ3MpKTsKKyAgICAgICAgdmFyIHJ2OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBH
TCBmdW5jdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFyZ3MKKyAgICAgICAgYXNz
ZXJ0T2soIlRoaXMgc2hvdWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIp
IiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIGFy
Z3MpOyBvayA9IHRydWU7fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUg
cmV0dXJuIHZhbHVlLCBkbyBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4gY2FsbGluZyBnbC5kZWxl
dGVCdWZmZXIocnYpIGFmdGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVyKCkgYWJvdmUKKyAgICAg
ICAgaWYgKGdlbi5yZXR1cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAgYXNzZXJ0T2soIkNsZWFu
aW5nIHVwIHJldHVybiB2YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhhcmdzKSsi
KSIsCisgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFu
dXAocnYpOyB9KTsKKyAgICAgICAgcmV0dXJuIG9rOworICAgICAgfSwgYXJnR2VuLnRlc3RDb3Vu
dCB8fCByYW5kb21UZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgdGVzdEZhaWxl
ZChuYW1lLCBlLm5hbWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0KK30KKworPC9zY3Jp
cHQ+Cis8c3R5bGU+Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxlPgorPC9oZWFkPjxi
b2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tD
aGVja0FQSS1CNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLUI0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWVlNTIyOGU3ODczZmUxYzM3ZjQ0NzI3Y2U4NDExZjE5Y2Y1ZjZhOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1CNC5odG1sCkBA
IC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQu
Y3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3Vu
aXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBz
cmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiBzcmM9InF1aWNrQ2hlY2tBUEkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9ImFyZ0dlbmVyYXRvcnMtQjQuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRo
YXQgYWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3
aGVuIGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3Rz
LnRlc3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEw
MDsKKyAgZm9yICh2YXIgbmFtZSBpbiBBcmdHZW5lcmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAg
IGlmICghR0xbbmFtZV0pCisgICAgICAgIHRocm93IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlz
c2luZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0IikpOworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dl
bmVyYXRvcnNbbmFtZV07CisgICAgICB2YXIgYWxyZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAg
aWYgKCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRpbnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1
bmN0aW9uIHdpdGggcmFuZG9tVGVzdENvdW50IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdz
CisgICAgICBhcmdHZW5lcmF0b3JUZXN0UnVubmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2Vu
LCBzZXR1cFZhcnMpIHsKKyAgICAgICAgaWYgKCFnZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgewor
ICAgICAgICAgIHZhciBzcmMgPSBPYmplY3QudG9Tb3VyY2UoYXJncyk7CisgICAgICAgICAgaWYg
KGFscmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNdID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2
YXIgb2sgPSBmYWxzZTsKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2Vy
LCBhc3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVkIGFyZ3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChn
ZW4uY2hlY2tBcmdWYWxpZGl0eSkKKyAgICAgICAgICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFt
ZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBnZW4uY2hlY2tB
cmdWYWxpZGl0eS5hcHBseShnZW4sIGFyZ3MpKTsKKyAgICAgICAgdmFyIHJ2OworICAgICAgICAv
LyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFy
Z3MKKyAgICAgICAgYXNzZXJ0T2soIlRoaXMgc2hvdWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1Rv
U3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFt
ZV0uYXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRydWU7fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQg
dG8gY2xlYW51cCB0aGUgcmV0dXJuIHZhbHVlLCBkbyBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4g
Y2FsbGluZyBnbC5kZWxldGVCdWZmZXIocnYpIGFmdGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVy
KCkgYWJvdmUKKyAgICAgICAgaWYgKGdlbi5yZXR1cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAg
YXNzZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVybiB2YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NU
b1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5y
ZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsKKyAgICAgICAgcmV0dXJuIG9rOworICAgICAgfSwg
YXJnR2VuLnRlc3RDb3VudCB8fCByYW5kb21UZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgewor
ICAgICAgdGVzdEZhaWxlZChuYW1lLCBlLm5hbWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9Cisg
IH0KK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0
eWxlPgorPC9oZWFkPjxib2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29u
Zm9ybWFuY2UvcXVpY2tDaGVja0FQSS1DLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL3F1aWNrQ2hl
Y2tBUEktQy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MTdlNDFlNzdhMTczMWVlMzhhNDcwMDBjNjhiOTU4
M2RiNzllYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL3F1aWNrQ2hlY2tB
UEktQy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9InF1aWNrQ2hlY2tBUEkuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9ImFyZ0dlbmVyYXRvcnMtQy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisK
Ky8vIFRlc3QgdGhhdCBhbGwgR0wgZnVuY3Rpb25zIHNwZWNpZmllZCBpbiBBcmdHZW5lcmF0b3Jz
IHdvcmsKKy8vIHdoZW4gY2FsbGVkIHdpdGggcmFuZG9tbHkgZ2VuZXJhdGVkIHZhbGlkIGFyZ3Vt
ZW50cworVGVzdHMudGVzdFZhbGlkQXJncyA9IGZ1bmN0aW9uKCkgeworICB2YXIgcmFuZG9tVGVz
dENvdW50ID0gMTAwOworICBmb3IgKHZhciBuYW1lIGluIEFyZ0dlbmVyYXRvcnMpIHsKKyAgICB0
cnkgeworICAgICAgaWYgKCFHTFtuYW1lXSkKKyAgICAgICAgdGhyb3cgKG5ldyBFcnJvcihuYW1l
ICsgIiBpcyBtaXNzaW5nIGZyb20gdGhlIFdlYkdMIGNvbnRleHQiKSk7CisgICAgICB2YXIgYXJn
R2VuID0gQXJnR2VuZXJhdG9yc1tuYW1lXTsKKyAgICAgIHZhciBhbHJlYWR5VHJpZWRBcmdzID0g
e307CisgICAgICBpZiAoIWFyZ0dlbi5nZW5lcmF0ZSkgY29udGludWU7CisgICAgICAvLyB0ZXN0
IGVhY2ggR0wgZnVuY3Rpb24gd2l0aCByYW5kb21UZXN0Q291bnQgcmFuZG9tbHkgZ2VuZXJhdGVk
IHZhbGlkIGFyZ3MKKyAgICAgIGFyZ0dlbmVyYXRvclRlc3RSdW5uZXIoYXJnR2VuLCBmdW5jdGlv
bihhcmdzLCBnZW4sIHNldHVwVmFycykgeworICAgICAgICBpZiAoIWdlbi5ub0FscmVhZHlUcmll
ZENoZWNrKSB7CisgICAgICAgICAgdmFyIHNyYyA9IE9iamVjdC50b1NvdXJjZShhcmdzKTsKKyAg
ICAgICAgICBpZiAoYWxyZWFkeVRyaWVkQXJnc1tzcmNdKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgICBhbHJlYWR5VHJpZWRBcmdzW3NyY10gPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIHZhciBvayA9IGZhbHNlOworICAgICAgICAvLyBpZiB3ZSBoYXZlIGFuIHZhbGlk
aXR5IGNoZWNrZXIsIGFzc2VydCB0aGF0IHRoZSBnZW5lcmF0ZWQgYXJncyBhcmUgdmFsaWQKKyAg
ICAgICAgaWYgKGdlbi5jaGVja0FyZ1ZhbGlkaXR5KQorICAgICAgICAgIGFzc2VydCgiVmFsaWQg
YXJnczogIituYW1lKyIoIithcmdzVG9TdHJpbmcoYXJncykrIikiLAorICAgICAgICAgICAgICAg
IGdlbi5jaGVja0FyZ1ZhbGlkaXR5LmFwcGx5KGdlbiwgYXJncykpOworICAgICAgICB2YXIgcnY7
CisgICAgICAgIC8vIGFzc2VydCB0aGF0IEdMIGZ1bmN0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIHdp
dGggdmFsaWQgYXJncworICAgICAgICBhc3NlcnRPaygiVGhpcyBzaG91bGQgd29yazogIituYW1l
KyIoIithcmdzVG9TdHJpbmcoYXJncykrIikiLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCl7
cnYgPSBHTFtuYW1lXS5hcHBseShHTCwgYXJncyk7IG9rID0gdHJ1ZTt9KTsKKyAgICAgICAgLy8g
aWYgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSByZXR1cm4gdmFsdWUsIGRvIGl0IGhlcmUKKyAgICAg
ICAgLy8gZS5nLiBjYWxsaW5nIGdsLmRlbGV0ZUJ1ZmZlcihydikgYWZ0ZXIgdGVzdGluZyBnbC5j
cmVhdGVCdWZmZXIoKSBhYm92ZQorICAgICAgICBpZiAoZ2VuLnJldHVyblZhbHVlQ2xlYW51cCkK
KyAgICAgICAgICBhc3NlcnRPaygiQ2xlYW5pbmcgdXAgcmV0dXJuIHZhbHVlIGFmdGVyICIrbmFt
ZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgZ2VuLnJldHVyblZhbHVlQ2xlYW51cChydik7IH0pOworICAgICAgICByZXR1cm4gb2s7
CisgICAgICB9LCBhcmdHZW4udGVzdENvdW50IHx8IHJhbmRvbVRlc3RDb3VudCk7CisgICAgfSBj
YXRjaChlKSB7CisgICAgICB0ZXN0RmFpbGVkKG5hbWUsIGUubmFtZSwgZm9ybWF0RXJyb3IoZSkp
OworICAgIH0KKyAgfQorfQorCis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7cG9zaXRpb246YWJz
b2x1dGU7fTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLURfRy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3Jt
YW5jZS9xdWlja0NoZWNrQVBJLURfRy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2OTJkYjMzMWJjZDBkNzRj
ODBhNjY1NDk5NDY1NThmYmJlMGI1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1h
bmNlL3F1aWNrQ2hlY2tBUEktRF9HLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0icXVpY2tDaGVja0FQSS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0i
YXJnR2VuZXJhdG9ycy1EX0cuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRoYXQgYWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZp
ZWQgaW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3aGVuIGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdl
bmVyYXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3RzLnRlc3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigp
IHsKKyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEwMDsKKyAgZm9yICh2YXIgbmFtZSBpbiBBcmdH
ZW5lcmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICghR0xbbmFtZV0pCisgICAgICAgIHRo
cm93IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlzc2luZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0
IikpOworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dlbmVyYXRvcnNbbmFtZV07CisgICAgICB2YXIg
YWxyZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAgaWYgKCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRp
bnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0aW9uIHdpdGggcmFuZG9tVGVzdENvdW50
IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisgICAgICBhcmdHZW5lcmF0b3JUZXN0UnVu
bmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBzZXR1cFZhcnMpIHsKKyAgICAgICAgaWYg
KCFnZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgeworICAgICAgICAgIHZhciBzcmMgPSBPYmplY3Qu
dG9Tb3VyY2UoYXJncyk7CisgICAgICAgICAgaWYgKGFscmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNd
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICAgICAgLy8g
aWYgd2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2VyLCBhc3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVk
IGFyZ3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChnZW4uY2hlY2tBcmdWYWxpZGl0eSkKKyAgICAg
ICAgICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIp
IiwKKyAgICAgICAgICAgICAgICBnZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShnZW4sIGFyZ3Mp
KTsKKyAgICAgICAgdmFyIHJ2OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3
b3JrcyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFyZ3MKKyAgICAgICAgYXNzZXJ0T2soIlRoaXMg
c2hvdWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRy
dWU7fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUgcmV0dXJuIHZhbHVl
LCBkbyBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4gY2FsbGluZyBnbC5kZWxldGVCdWZmZXIocnYp
IGFmdGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVyKCkgYWJvdmUKKyAgICAgICAgaWYgKGdlbi5y
ZXR1cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAgYXNzZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVy
biB2YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsK
KyAgICAgICAgcmV0dXJuIG9rOworICAgICAgfSwgYXJnR2VuLnRlc3RDb3VudCB8fCByYW5kb21U
ZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgdGVzdEZhaWxlZChuYW1lLCBlLm5h
bWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0KK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+
Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPC9ib2R5
PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1HX0ku
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1HX0kuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZjQ3NDg5MmZiMTlmZWE5MTY4OGI5OWQ5NDViOWI3NWJhOWJjOWQxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLUdfSS5odG1sCkBAIC0wLDAgKzEs
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgor
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBz
cmM9InF1aWNrQ2hlY2tBUEkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiBzcmM9ImFyZ0dlbmVyYXRvcnMtR19JLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworLy8gVGVzdCB0aGF0IGFsbCBH
TCBmdW5jdGlvbnMgc3BlY2lmaWVkIGluIEFyZ0dlbmVyYXRvcnMgd29yaworLy8gd2hlbiBjYWxs
ZWQgd2l0aCByYW5kb21seSBnZW5lcmF0ZWQgdmFsaWQgYXJndW1lbnRzCitUZXN0cy50ZXN0VmFs
aWRBcmdzID0gZnVuY3Rpb24oKSB7CisgIHZhciByYW5kb21UZXN0Q291bnQgPSAxMDA7CisgIGZv
ciAodmFyIG5hbWUgaW4gQXJnR2VuZXJhdG9ycykgeworICAgIHRyeSB7CisgICAgICBpZiAoIUdM
W25hbWVdKQorICAgICAgICB0aHJvdyAobmV3IEVycm9yKG5hbWUgKyAiIGlzIG1pc3NpbmcgZnJv
bSB0aGUgV2ViR0wgY29udGV4dCIpKTsKKyAgICAgIHZhciBhcmdHZW4gPSBBcmdHZW5lcmF0b3Jz
W25hbWVdOworICAgICAgdmFyIGFscmVhZHlUcmllZEFyZ3MgPSB7fTsKKyAgICAgIGlmICghYXJn
R2VuLmdlbmVyYXRlKSBjb250aW51ZTsKKyAgICAgIC8vIHRlc3QgZWFjaCBHTCBmdW5jdGlvbiB3
aXRoIHJhbmRvbVRlc3RDb3VudCByYW5kb21seSBnZW5lcmF0ZWQgdmFsaWQgYXJncworICAgICAg
YXJnR2VuZXJhdG9yVGVzdFJ1bm5lcihhcmdHZW4sIGZ1bmN0aW9uKGFyZ3MsIGdlbiwgc2V0dXBW
YXJzKSB7CisgICAgICAgIGlmICghZ2VuLm5vQWxyZWFkeVRyaWVkQ2hlY2spIHsKKyAgICAgICAg
ICB2YXIgc3JjID0gT2JqZWN0LnRvU291cmNlKGFyZ3MpOworICAgICAgICAgIGlmIChhbHJlYWR5
VHJpZWRBcmdzW3NyY10pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIGFs
cmVhZHlUcmllZEFyZ3Nbc3JjXSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG9rID0g
ZmFsc2U7CisgICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gdmFsaWRpdHkgY2hlY2tlciwgYXNzZXJ0
IHRoYXQgdGhlIGdlbmVyYXRlZCBhcmdzIGFyZSB2YWxpZAorICAgICAgICBpZiAoZ2VuLmNoZWNr
QXJnVmFsaWRpdHkpCisgICAgICAgICAgYXNzZXJ0KCJWYWxpZCBhcmdzOiAiK25hbWUrIigiK2Fy
Z3NUb1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAgICAgICAgICAgZ2VuLmNoZWNrQXJnVmFsaWRp
dHkuYXBwbHkoZ2VuLCBhcmdzKSk7CisgICAgICAgIHZhciBydjsKKyAgICAgICAgLy8gYXNzZXJ0
IHRoYXQgR0wgZnVuY3Rpb24gd29ya3Mgd2hlbiBjYWxsZWQgd2l0aCB2YWxpZCBhcmdzCisgICAg
ICAgIGFzc2VydE9rKCJUaGlzIHNob3VsZCB3b3JrOiAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhh
cmdzKSsiKSIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKXtydiA9IEdMW25hbWVdLmFwcGx5
KEdMLCBhcmdzKTsgb2sgPSB0cnVlO30pOworICAgICAgICAvLyBpZiB3ZSBuZWVkIHRvIGNsZWFu
dXAgdGhlIHJldHVybiB2YWx1ZSwgZG8gaXQgaGVyZQorICAgICAgICAvLyBlLmcuIGNhbGxpbmcg
Z2wuZGVsZXRlQnVmZmVyKHJ2KSBhZnRlciB0ZXN0aW5nIGdsLmNyZWF0ZUJ1ZmZlcigpIGFib3Zl
CisgICAgICAgIGlmIChnZW4ucmV0dXJuVmFsdWVDbGVhbnVwKQorICAgICAgICAgIGFzc2VydE9r
KCJDbGVhbmluZyB1cCByZXR1cm4gdmFsdWUgYWZ0ZXIgIituYW1lKyIoIithcmdzVG9TdHJpbmco
YXJncykrIikiLAorICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBnZW4ucmV0dXJuVmFs
dWVDbGVhbnVwKHJ2KTsgfSk7CisgICAgICAgIHJldHVybiBvazsKKyAgICAgIH0sIGFyZ0dlbi50
ZXN0Q291bnQgfHwgcmFuZG9tVGVzdENvdW50KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgIHRl
c3RGYWlsZWQobmFtZSwgZS5uYW1lLCBmb3JtYXRFcnJvcihlKSk7CisgICAgfQorICB9Cit9CisK
Kzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3twb3NpdGlvbjphYnNvbHV0ZTt9PC9zdHlsZT4KKzwv
aGVhZD48Ym9keT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNl
L3F1aWNrQ2hlY2tBUEktTF9TLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUEkt
TF9TLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk4ZTFjOTNkOTRkZDhmZjU5NzBhZjQzZjYwNjEwMmFiYmRi
YmZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS1M
X1MuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgc3JjPSJxdWlja0NoZWNrQVBJLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJhcmdHZW5lcmF0b3JzLUxfUy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisK
Ky8vIFRlc3QgdGhhdCBhbGwgR0wgZnVuY3Rpb25zIHNwZWNpZmllZCBpbiBBcmdHZW5lcmF0b3Jz
IHdvcmsKKy8vIHdoZW4gY2FsbGVkIHdpdGggcmFuZG9tbHkgZ2VuZXJhdGVkIHZhbGlkIGFyZ3Vt
ZW50cworVGVzdHMudGVzdFZhbGlkQXJncyA9IGZ1bmN0aW9uKCkgeworICB2YXIgcmFuZG9tVGVz
dENvdW50ID0gMTAwOworICBmb3IgKHZhciBuYW1lIGluIEFyZ0dlbmVyYXRvcnMpIHsKKyAgICB0
cnkgeworICAgICAgaWYgKCFHTFtuYW1lXSkKKyAgICAgICAgdGhyb3cgKG5ldyBFcnJvcihuYW1l
ICsgIiBpcyBtaXNzaW5nIGZyb20gdGhlIFdlYkdMIGNvbnRleHQiKSk7CisgICAgICB2YXIgYXJn
R2VuID0gQXJnR2VuZXJhdG9yc1tuYW1lXTsKKyAgICAgIHZhciBhbHJlYWR5VHJpZWRBcmdzID0g
e307CisgICAgICBpZiAoIWFyZ0dlbi5nZW5lcmF0ZSkgY29udGludWU7CisgICAgICAvLyB0ZXN0
IGVhY2ggR0wgZnVuY3Rpb24gd2l0aCByYW5kb21UZXN0Q291bnQgcmFuZG9tbHkgZ2VuZXJhdGVk
IHZhbGlkIGFyZ3MKKyAgICAgIGFyZ0dlbmVyYXRvclRlc3RSdW5uZXIoYXJnR2VuLCBmdW5jdGlv
bihhcmdzLCBnZW4sIHNldHVwVmFycykgeworICAgICAgICBpZiAoIWdlbi5ub0FscmVhZHlUcmll
ZENoZWNrKSB7CisgICAgICAgICAgdmFyIHNyYyA9IE9iamVjdC50b1NvdXJjZShhcmdzKTsKKyAg
ICAgICAgICBpZiAoYWxyZWFkeVRyaWVkQXJnc1tzcmNdKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgICBhbHJlYWR5VHJpZWRBcmdzW3NyY10gPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIHZhciBvayA9IGZhbHNlOworICAgICAgICAvLyBpZiB3ZSBoYXZlIGFuIHZhbGlk
aXR5IGNoZWNrZXIsIGFzc2VydCB0aGF0IHRoZSBnZW5lcmF0ZWQgYXJncyBhcmUgdmFsaWQKKyAg
ICAgICAgaWYgKGdlbi5jaGVja0FyZ1ZhbGlkaXR5KQorICAgICAgICAgIGFzc2VydCgiVmFsaWQg
YXJnczogIituYW1lKyIoIithcmdzVG9TdHJpbmcoYXJncykrIikiLAorICAgICAgICAgICAgICAg
IGdlbi5jaGVja0FyZ1ZhbGlkaXR5LmFwcGx5KGdlbiwgYXJncykpOworICAgICAgICB2YXIgcnY7
CisgICAgICAgIC8vIGFzc2VydCB0aGF0IEdMIGZ1bmN0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIHdp
dGggdmFsaWQgYXJncworICAgICAgICBhc3NlcnRPaygiVGhpcyBzaG91bGQgd29yazogIituYW1l
KyIoIithcmdzVG9TdHJpbmcoYXJncykrIikiLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCl7
cnYgPSBHTFtuYW1lXS5hcHBseShHTCwgYXJncyk7IG9rID0gdHJ1ZTt9KTsKKyAgICAgICAgLy8g
aWYgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSByZXR1cm4gdmFsdWUsIGRvIGl0IGhlcmUKKyAgICAg
ICAgLy8gZS5nLiBjYWxsaW5nIGdsLmRlbGV0ZUJ1ZmZlcihydikgYWZ0ZXIgdGVzdGluZyBnbC5j
cmVhdGVCdWZmZXIoKSBhYm92ZQorICAgICAgICBpZiAoZ2VuLnJldHVyblZhbHVlQ2xlYW51cCkK
KyAgICAgICAgICBhc3NlcnRPaygiQ2xlYW5pbmcgdXAgcmV0dXJuIHZhbHVlIGFmdGVyICIrbmFt
ZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgZ2VuLnJldHVyblZhbHVlQ2xlYW51cChydik7IH0pOworICAgICAgICByZXR1cm4gb2s7
CisgICAgICB9LCBhcmdHZW4udGVzdENvdW50IHx8IHJhbmRvbVRlc3RDb3VudCk7CisgICAgfSBj
YXRjaChlKSB7CisgICAgICB0ZXN0RmFpbGVkKG5hbWUsIGUubmFtZSwgZm9ybWF0RXJyb3IoZSkp
OworICAgIH0KKyAgfQorfQorCis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7cG9zaXRpb246YWJz
b2x1dGU7fTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9jb25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLVNfVi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3Jt
YW5jZS9xdWlja0NoZWNrQVBJLVNfVi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZTYwMTUxZTE5YmZhNmE2
NDVjNDNhZDk2MGU4ZWJkOWFlOWVlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZvcm1h
bmNlL3F1aWNrQ2hlY2tBUEktU19WLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0icXVpY2tDaGVja0FQSS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0i
YXJnR2VuZXJhdG9ycy1TX1YuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiPgorCisvLyBUZXN0IHRoYXQgYWxsIEdMIGZ1bmN0aW9ucyBzcGVjaWZp
ZWQgaW4gQXJnR2VuZXJhdG9ycyB3b3JrCisvLyB3aGVuIGNhbGxlZCB3aXRoIHJhbmRvbWx5IGdl
bmVyYXRlZCB2YWxpZCBhcmd1bWVudHMKK1Rlc3RzLnRlc3RWYWxpZEFyZ3MgPSBmdW5jdGlvbigp
IHsKKyAgdmFyIHJhbmRvbVRlc3RDb3VudCA9IDEwMDsKKyAgZm9yICh2YXIgbmFtZSBpbiBBcmdH
ZW5lcmF0b3JzKSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICghR0xbbmFtZV0pCisgICAgICAgIHRo
cm93IChuZXcgRXJyb3IobmFtZSArICIgaXMgbWlzc2luZyBmcm9tIHRoZSBXZWJHTCBjb250ZXh0
IikpOworICAgICAgdmFyIGFyZ0dlbiA9IEFyZ0dlbmVyYXRvcnNbbmFtZV07CisgICAgICB2YXIg
YWxyZWFkeVRyaWVkQXJncyA9IHt9OworICAgICAgaWYgKCFhcmdHZW4uZ2VuZXJhdGUpIGNvbnRp
bnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0aW9uIHdpdGggcmFuZG9tVGVzdENvdW50
IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisgICAgICBhcmdHZW5lcmF0b3JUZXN0UnVu
bmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBzZXR1cFZhcnMpIHsKKyAgICAgICAgaWYg
KCFnZW4ubm9BbHJlYWR5VHJpZWRDaGVjaykgeworICAgICAgICAgIHZhciBzcmMgPSBPYmplY3Qu
dG9Tb3VyY2UoYXJncyk7CisgICAgICAgICAgaWYgKGFscmVhZHlUcmllZEFyZ3Nbc3JjXSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgYWxyZWFkeVRyaWVkQXJnc1tzcmNd
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICAgICAgLy8g
aWYgd2UgaGF2ZSBhbiB2YWxpZGl0eSBjaGVja2VyLCBhc3NlcnQgdGhhdCB0aGUgZ2VuZXJhdGVk
IGFyZ3MgYXJlIHZhbGlkCisgICAgICAgIGlmIChnZW4uY2hlY2tBcmdWYWxpZGl0eSkKKyAgICAg
ICAgICBhc3NlcnQoIlZhbGlkIGFyZ3M6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIp
IiwKKyAgICAgICAgICAgICAgICBnZW4uY2hlY2tBcmdWYWxpZGl0eS5hcHBseShnZW4sIGFyZ3Mp
KTsKKyAgICAgICAgdmFyIHJ2OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiB3
b3JrcyB3aGVuIGNhbGxlZCB3aXRoIHZhbGlkIGFyZ3MKKyAgICAgICAgYXNzZXJ0T2soIlRoaXMg
c2hvdWxkIHdvcms6ICIrbmFtZSsiKCIrYXJnc1RvU3RyaW5nKGFyZ3MpKyIpIiwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpe3J2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIGFyZ3MpOyBvayA9IHRy
dWU7fSk7CisgICAgICAgIC8vIGlmIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUgcmV0dXJuIHZhbHVl
LCBkbyBpdCBoZXJlCisgICAgICAgIC8vIGUuZy4gY2FsbGluZyBnbC5kZWxldGVCdWZmZXIocnYp
IGFmdGVyIHRlc3RpbmcgZ2wuY3JlYXRlQnVmZmVyKCkgYWJvdmUKKyAgICAgICAgaWYgKGdlbi5y
ZXR1cm5WYWx1ZUNsZWFudXApCisgICAgICAgICAgYXNzZXJ0T2soIkNsZWFuaW5nIHVwIHJldHVy
biB2YWx1ZSBhZnRlciAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhhcmdzKSsiKSIsCisgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsK
KyAgICAgICAgcmV0dXJuIG9rOworICAgICAgfSwgYXJnR2VuLnRlc3RDb3VudCB8fCByYW5kb21U
ZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgdGVzdEZhaWxlZChuYW1lLCBlLm5h
bWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0KK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+
Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPC9ib2R5
PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS5qcyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvY29uZm9ybWFuY2UvcXVpY2tDaGVja0FQSS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGU3NDk2M2Uy
ODgwYzY3MjdhZjE1ODU2MjFkZjZiNTY2MjJiMmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9j
b25mb3JtYW5jZS9xdWlja0NoZWNrQVBJLmpzCkBAIC0wLDAgKzEsNDE0IEBACisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8qCisgIFF1aWNrQ2hlY2sgdGVzdHMg
Zm9yIFdlYkdMOgorCisgICAgMS4gV3JpdGUgYSB2YWxpZCBhcmcgZ2VuZXJhdG9yIGZvciBlYWNo
IGZ1bmN0aW9uCisgICAgICAxLjEuIFdyaXRlIHZhbGlkIGFyZyBwcmVkaWNhdGVzIHRvIHVzZSB3
aXRoIHJhbmRvbSBnZW5lcmF0b3I6CisgICAgICAgICAgICBpZiB2YWx1ZSBwYXNzZXMgZ2VuZXJh
dG9yLCBhY2NlcHQgaXQgYXMgdmFsaWQuCisgICAgICAxLjIuIE9mdGVuIG5lZWRzIGluaXRpYWxp
emluZyBhbmQgY2xlYW51cDoKKyAgICAgICAgICAgIHNldHVwIC0gZ2VuZXJhdGUgLSBjbGVhbnVw
CisgICAgICAgICAgICBnbC5jcmVhdGVCdWZmZXIgLSB0ZXN0KGJpbmRCdWZmZXJHZW5lcmF0b3Ip
IC0gZ2wuZGVsZXRlQnVmZmVyCisKKyAgICAyLiBXcml0ZSBhbiBpbnZhbGlkIGFyZyBnZW5lcmF0
b3IKKyAgICAgIDIuMS4gVGFrZSB2YWxpZCBhcmdzLCBtb2RpZnkgYW4gYXJnIHVudGlsIHRoZSBh
cmdzIG5vIGxvbmdlciBwYXNzCisgICAgICAgICAgICBjaGVja0FyZ1ZhbGlkaXR5LgorICAgICAg
Mi4yLiBSZXBlYXQgZm9yIGFsbCBhcmdzLgorCisgICAgMy4gVGVzdCBmdW5jdGlvbnMgdXNpbmcg
dGhlIGdlbmVyYXRvcnMKKyAgICAgIDMuMS4gQXJncyBnZW5lcmF0ZWQgd2l0aCB0aGUgdmFsaWQg
YXJnIGdlbmVyYXRvciBzaG91bGQgcGFzcworICAgICAgICAgICAgYXNzZXJ0T2soZihhcmdzKSkK
KyAgICAgIDMuMi4gQXJncyBnZW5lcmF0ZWQgd2l0aCB0aGUgaW52YWxpZCBhcmcgZ2VuZXJhdG9y
IHNob3VsZCBwYXNzCisgICAgICAgICAgICBhc3NlcnRGYWlsKGYoYXJncykpCisqLwordmFyIEdM
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit2YXIgY2FudmFzMkQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK0dMY2FudmFzLndpZHRoID0gR0xj
YW52YXMuaGVpZ2h0ID0gMjU2OworR0wgPSBnZXRHTENvbnRleHQoR0xjYW52YXMpOworQXJyYXku
ZnJvbSA9IGZ1bmN0aW9uKG8pIHsKKyAgdmFyIGEgPSBbXTsKKyAgZm9yICh2YXIgaT0wOyBpPG8u
bGVuZ3RoOyBpKyspCisgICAgYS5wdXNoKG9baV0pOworICByZXR1cm4gYTsKK30KK0FycmF5LnBy
b3RvdHlwZS5oYXMgPSBmdW5jdGlvbih2KSB7IHJldHVybiB0aGlzLmluZGV4T2YodikgIT0gLTE7
IH0KK0FycmF5LnByb3RvdHlwZS5yYW5kb20gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXNbcmFu
ZG9tSW50KHRoaXMubGVuZ3RoKV07IH0KKworY2FzdFRvSW50ID0gZnVuY3Rpb24obykgeworICBp
ZiAodHlwZW9mIG8gPT0gJ251bWJlcicpCisgICAgcmV0dXJuIGlzTmFOKG8pID8gMCA6IE1hdGgu
Zmxvb3Iobyk7CisgIGlmIChvID09IHRydWUpIHJldHVybiAxOworICByZXR1cm4gMDsKK307CisK
Ky8vIENyZWF0ZXMgYSBjb25zdGFudCBjaGVja2VyIC8gZ2VuZXJhdG9yIGZyb20gaXRzIGFyZ3Vt
ZW50cy4KKy8vCisvLyBFLmcuIGlmIHlvdSB3YW50IGEgY29uc3RhbnQgY2hlY2tlciBmb3IgdGhl
IGNvbnN0YW50cyAxLCAyLCBhbmQgMywgeW91CisvLyB3b3VsZCBkbyB0aGUgZm9sbG93aW5nOgor
Ly8KKy8vICAgdmFyIGNjID0gY29uc3RDaGVjaygxLDIsMyk7CisvLyAgIHZhciByYW5kb21Db25z
dCA9IGNjLnJhbmRvbSgpOworLy8gICBpZiAoY2MuaGFzKHJhbmRvbUNvbnN0KSkKKy8vICAgICBj
b25zb2xlLmxvZygicmFuZG9tQ29uc3QgaXMgaW5jbHVkZWQgaW4gY2MncyBjb25zdGFudHMiKTsK
Ky8vCitjb25zdENoZWNrID0gZnVuY3Rpb24oKSB7CisgIHZhciBhID0gQXJyYXkuZnJvbShhcmd1
bWVudHMpOworICBhLmhhcyA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHRoaXMuaW5kZXhPZihjYXN0
VG9JbnQodikpICE9IC0xOyB9OworICByZXR1cm4gYTsKK30KKworYmluZFRleHR1cmVUYXJnZXQg
PSBjb25zdENoZWNrKEdMLlRFWFRVUkVfMkQsIEdMLlRFWFRVUkVfQ1VCRV9NQVApOworYmxlbmRF
cXVhdGlvbk1vZGUgPSBjb25zdENoZWNrKEdMLkZVTkNfQURELCBHTC5GVU5DX1NVQlRSQUNULCBH
TC5GVU5DX1JFVkVSU0VfU1VCVFJBQ1QpOworYmxlbmRGdW5jU2ZhY3RvciA9IGNvbnN0Q2hlY2so
CisgIEdMLlpFUk8sIEdMLk9ORSwgR0wuU1JDX0NPTE9SLCBHTC5PTkVfTUlOVVNfU1JDX0NPTE9S
LCBHTC5EU1RfQ09MT1IsCisgIEdMLk9ORV9NSU5VU19EU1RfQ09MT1IsIEdMLlNSQ19BTFBIQSwg
R0wuT05FX01JTlVTX1NSQ19BTFBIQSwgR0wuRFNUX0FMUEhBLAorICBHTC5PTkVfTUlOVVNfRFNU
X0FMUEhBLCBHTC5DT05TVEFOVF9DT0xPUiwgR0wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLAor
ICBHTC5DT05TVEFOVF9BTFBIQSwgR0wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBHTC5TUkNf
QUxQSEFfU0FUVVJBVEUKKyk7CitibGVuZEZ1bmNEZmFjdG9yID0gY29uc3RDaGVjaygKKyAgR0wu
WkVSTywgR0wuT05FLCBHTC5TUkNfQ09MT1IsIEdMLk9ORV9NSU5VU19TUkNfQ09MT1IsIEdMLkRT
VF9DT0xPUiwKKyAgR0wuT05FX01JTlVTX0RTVF9DT0xPUiwgR0wuU1JDX0FMUEhBLCBHTC5PTkVf
TUlOVVNfU1JDX0FMUEhBLCBHTC5EU1RfQUxQSEEsCisgIEdMLk9ORV9NSU5VU19EU1RfQUxQSEEs
IEdMLkNPTlNUQU5UX0NPTE9SLCBHTC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsCisgIEdMLkNP
TlNUQU5UX0FMUEhBLCBHTC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEKKyk7CitidWZmZXJUYXJn
ZXQgPSBjb25zdENoZWNrKEdMLkFSUkFZX0JVRkZFUiwgR0wuRUxFTUVOVF9BUlJBWV9CVUZGRVIp
OworYnVmZmVyTW9kZSA9IGNvbnN0Q2hlY2soR0wuU1RSRUFNX0RSQVcsIEdMLlNUQVRJQ19EUkFX
LCBHTC5EWU5BTUlDX0RSQVcpOworY2xlYXJNYXNrID0gY29uc3RDaGVjaygKKyAgR0wuQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMLkRFUFRIX0JVRkZFUl9CSVQgfCBHTC5TVEVOQ0lMX0JVRkZFUl9CSVQs
CisgIEdMLkNPTE9SX0JVRkZFUl9CSVQgfCBHTC5ERVBUSF9CVUZGRVJfQklULAorICBHTC5DT0xP
Ul9CVUZGRVJfQklUIHwgR0wuU1RFTkNJTF9CVUZGRVJfQklULAorICBHTC5ERVBUSF9CVUZGRVJf
QklUIHwgR0wuU1RFTkNJTF9CVUZGRVJfQklULAorICBHTC5DT0xPUl9CVUZGRVJfQklULCBHTC5E
RVBUSF9CVUZGRVJfQklULCBHTC5TVEVOQ0lMX0JVRkZFUl9CSVQsIDAKKyk7CitjdWxsRmFjZSA9
IGNvbnN0Q2hlY2soR0wuRlJPTlQsIEdMLkJBQ0ssIEdMLkZST05UX0FORF9CQUNLKTsKK2RlcHRo
RnVuY0Z1bmMgPSBjb25zdENoZWNrKAorICBHTC5ORVZFUiwgR0wuTEVTUywgR0wuRVFVQUwsIEdM
LkxFUVVBTCwgR0wuR1JFQVRFUiwgR0wuTk9URVFVQUwsCisgIEdMLkdFUVVBTCwgR0wuQUxXQVlT
CispOworc3RlbmNpbEZ1bmNGdW5jID0gZGVwdGhGdW5jRnVuYzsKK2VuYWJsZUNhcCA9IGNvbnN0
Q2hlY2soCisgIEdMLkJMRU5ELCBHTC5DVUxMX0ZBQ0UsIEdMLkRFUFRIX1RFU1QsIEdMLkRJVEhF
UiwgR0wuUE9MWUdPTl9PRkZTRVRfRklMTCwKKyAgR0wuU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdF
LCBHTC5TQU1QTEVfQ09WRVJBR0UsIEdMLlNDSVNTT1JfVEVTVCwKKyAgR0wuU1RFTkNJTF9URVNU
CispOworZnJvbnRGYWNlTW9kZSA9IGNvbnN0Q2hlY2soR0wuQ0NXLCBHTC5DVyk7CitnZXRQYXJh
bWV0ZXJQbmFtZSA9IGNvbnN0Q2hlY2soCisgIEdMLkFDVElWRV9URVhUVVJFIHx8ICJHTC5BQ1RJ
VkVfVEVYVFVSRSIsCisgIEdMLkFMSUFTRURfTElORV9XSURUSF9SQU5HRSB8fCAiR0wuQUxJQVNF
RF9MSU5FX1dJRFRIX1JBTkdFIiwKKyAgR0wuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFIHx8ICJH
TC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UiLAorICBHTC5BTFBIQV9CSVRTIHx8ICJHTC5BTFBI
QV9CSVRTIiwKKyAgR0wuQVJSQVlfQlVGRkVSX0JJTkRJTkcgfHwgIkdMLkFSUkFZX0JVRkZFUl9C
SU5ESU5HIiwKKyAgR0wuQkxFTkQgfHwgIkdMLkJMRU5EIiwKKyAgR0wuQkxFTkRfQ09MT1IgfHwg
IkdMLkJMRU5EX0NPTE9SIiwKKyAgR0wuQkxFTkRfRFNUX0FMUEhBIHx8ICJHTC5CTEVORF9EU1Rf
QUxQSEEiLAorICBHTC5CTEVORF9EU1RfUkdCIHx8ICJHTC5CTEVORF9EU1RfUkdCIiwKKyAgR0wu
QkxFTkRfRVFVQVRJT05fQUxQSEEgfHwgIkdMLkJMRU5EX0VRVUFUSU9OX0FMUEhBIiwKKyAgR0wu
QkxFTkRfRVFVQVRJT05fUkdCIHx8ICJHTC5CTEVORF9FUVVBVElPTl9SR0IiLAorICBHTC5CTEVO
RF9TUkNfQUxQSEEgfHwgIkdMLkJMRU5EX1NSQ19BTFBIQSIsCisgIEdMLkJMRU5EX1NSQ19SR0Ig
fHwgIkdMLkJMRU5EX1NSQ19SR0IiLAorICBHTC5CTFVFX0JJVFMgfHwgIkdMLkJMVUVfQklUUyIs
CisgIEdMLkNPTE9SX0NMRUFSX1ZBTFVFIHx8ICJHTC5DT0xPUl9DTEVBUl9WQUxVRSIsCisgIEdM
LkNPTE9SX1dSSVRFTUFTSyB8fCAiR0wuQ09MT1JfV1JJVEVNQVNLIiwKKyAgR0wuQ09NUFJFU1NF
RF9URVhUVVJFX0ZPUk1BVFMgfHwgIkdMLkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIiwKKyAg
R0wuQ1VMTF9GQUNFIHx8ICJHTC5DVUxMX0ZBQ0UiLAorICBHTC5DVUxMX0ZBQ0VfTU9ERSB8fCAi
R0wuQ1VMTF9GQUNFX01PREUiLAorICBHTC5DVVJSRU5UX1BST0dSQU0gfHwgIkdMLkNVUlJFTlRf
UFJPR1JBTSIsCisgIEdMLkRFUFRIX0JJVFMgfHwgIkdMLkRFUFRIX0JJVFMiLAorICBHTC5ERVBU
SF9DTEVBUl9WQUxVRSB8fCAiR0wuREVQVEhfQ0xFQVJfVkFMVUUiLAorICBHTC5ERVBUSF9GVU5D
IHx8ICJHTC5ERVBUSF9GVU5DIiwKKyAgR0wuREVQVEhfUkFOR0UgfHwgIkdMLkRFUFRIX1JBTkdF
IiwKKyAgR0wuREVQVEhfVEVTVCB8fCAiR0wuREVQVEhfVEVTVCIsCisgIEdMLkRFUFRIX1dSSVRF
TUFTSyB8fCAiR0wuREVQVEhfV1JJVEVNQVNLIiwKKyAgR0wuRElUSEVSIHx8ICJHTC5ESVRIRVIi
LAorICBHTC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIHx8ICJHTC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HIiwKKyAgR0wuRlJBTUVCVUZGRVJfQklORElORyB8fCAiR0wuRlJBTUVC
VUZGRVJfQklORElORyIsCisgIEdMLkZST05UX0ZBQ0UgfHwgIkdMLkZST05UX0ZBQ0UiLAorICBH
TC5HRU5FUkFURV9NSVBNQVBfSElOVCB8fCAiR0wuR0VORVJBVEVfTUlQTUFQX0hJTlQiLAorICBH
TC5HUkVFTl9CSVRTIHx8ICJHTC5HUkVFTl9CSVRTIiwKKyAgR0wuTElORV9XSURUSCB8fCAiR0wu
TElORV9XSURUSCIsCisgIEdMLk1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTIHx8ICJH
TC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyIsCisgIEdMLk1BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkUgfHwgIkdMLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUiLAorICBHTC5NQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTIHx8ICJHTC5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTIiwKKyAgR0wuTUFYX1JFTkRFUkJVRkZFUl9TSVpFIHx8ICJHTC5NQVhfUkVOREVSQlVGRkVS
X1NJWkUiLAorICBHTC5NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyB8fCAiR0wuTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMiLAorICBHTC5NQVhfVEVYVFVSRV9TSVpFIHx8ICJHTC5NQVhfVEVYVFVSRV9T
SVpFIiwKKyAgR0wuTUFYX1ZBUllJTkdfVkVDVE9SUyB8fCAiR0wuTUFYX1ZBUllJTkdfVkVDVE9S
UyIsCisgIEdMLk1BWF9WRVJURVhfQVRUUklCUyB8fCAiR0wuTUFYX1ZFUlRFWF9BVFRSSUJTIiwK
KyAgR0wuTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTIHx8ICJHTC5NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFMiLAorICBHTC5NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyB8fCAi
R0wuTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMiLAorICBHTC5NQVhfVklFV1BPUlRfRElNUyB8
fCAiR0wuTUFYX1ZJRVdQT1JUX0RJTVMiLAorICBHTC5QQUNLX0FMSUdOTUVOVCB8fCAiR0wuUEFD
S19BTElHTk1FTlQiLAorICBHTC5QT0xZR09OX09GRlNFVF9GQUNUT1IgfHwgIkdMLlBPTFlHT05f
T0ZGU0VUX0ZBQ1RPUiIsCisgIEdMLlBPTFlHT05fT0ZGU0VUX0ZJTEwgfHwgIkdMLlBPTFlHT05f
T0ZGU0VUX0ZJTEwiLAorICBHTC5QT0xZR09OX09GRlNFVF9VTklUUyB8fCAiR0wuUE9MWUdPTl9P
RkZTRVRfVU5JVFMiLAorICBHTC5SRURfQklUUyB8fCAiR0wuUkVEX0JJVFMiLAorICBHTC5SRU5E
RVJCVUZGRVJfQklORElORyB8fCAiR0wuUkVOREVSQlVGRkVSX0JJTkRJTkciLAorICBHTC5TQU1Q
TEVfQlVGRkVSUyB8fCAiR0wuU0FNUExFX0JVRkZFUlMiLAorICBHTC5TQU1QTEVfQ09WRVJBR0Vf
SU5WRVJUIHx8ICJHTC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUIiwKKyAgR0wuU0FNUExFX0NPVkVS
QUdFX1ZBTFVFIHx8ICJHTC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUiLAorICBHTC5TQU1QTEVTIHx8
ICJHTC5TQU1QTEVTIiwKKyAgR0wuU0NJU1NPUl9CT1ggfHwgIkdMLlNDSVNTT1JfQk9YIiwKKyAg
R0wuU0NJU1NPUl9URVNUIHx8ICJHTC5TQ0lTU09SX1RFU1QiLAorICBHTC5TVEVOQ0lMX0JBQ0tf
RkFJTCB8fCAiR0wuU1RFTkNJTF9CQUNLX0ZBSUwiLAorICBHTC5TVEVOQ0lMX0JBQ0tfRlVOQyB8
fCAiR0wuU1RFTkNJTF9CQUNLX0ZVTkMiLAorICBHTC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9G
QUlMIHx8ICJHTC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMIiwKKyAgR0wuU1RFTkNJTF9C
QUNLX1BBU1NfREVQVEhfUEFTUyB8fCAiR0wuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyIs
CisgIEdMLlNURU5DSUxfQkFDS19SRUYgfHwgIkdMLlNURU5DSUxfQkFDS19SRUYiLAorICBHTC5T
VEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyB8fCAiR0wuU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0siLAor
ICBHTC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLIHx8ICJHTC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNL
IiwKKyAgR0wuU1RFTkNJTF9CSVRTIHx8ICJHTC5TVEVOQ0lMX0JJVFMiLAorICBHTC5TVEVOQ0lM
X0NMRUFSX1ZBTFVFIHx8ICJHTC5TVEVOQ0lMX0NMRUFSX1ZBTFVFIiwKKyAgR0wuU1RFTkNJTF9G
QUlMIHx8ICJHTC5TVEVOQ0lMX0ZBSUwiLAorICBHTC5TVEVOQ0lMX0ZVTkMgfHwgIkdMLlNURU5D
SUxfRlVOQyIsCisgIEdMLlNURU5DSUxfUEFTU19ERVBUSF9GQUlMIHx8ICJHTC5TVEVOQ0lMX1BB
U1NfREVQVEhfRkFJTCIsCisgIEdMLlNURU5DSUxfUEFTU19ERVBUSF9QQVNTIHx8ICJHTC5TVEVO
Q0lMX1BBU1NfREVQVEhfUEFTUyIsCisgIEdMLlNURU5DSUxfUkVGIHx8ICJHTC5TVEVOQ0lMX1JF
RiIsCisgIEdMLlNURU5DSUxfVEVTVCB8fCAiR0wuU1RFTkNJTF9URVNUIiwKKyAgR0wuU1RFTkNJ
TF9WQUxVRV9NQVNLIHx8ICJHTC5TVEVOQ0lMX1ZBTFVFX01BU0siLAorICBHTC5TVEVOQ0lMX1dS
SVRFTUFTSyB8fCAiR0wuU1RFTkNJTF9XUklURU1BU0siLAorICBHTC5TVUJQSVhFTF9CSVRTIHx8
ICJHTC5TVUJQSVhFTF9CSVRTIiwKKyAgR0wuVEVYVFVSRV9CSU5ESU5HXzJEIHx8ICJHTC5URVhU
VVJFX0JJTkRJTkdfMkQiLAorICBHTC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgfHwgIkdMLlRF
WFRVUkVfQklORElOR19DVUJFX01BUCIsCisgIEdMLlVOUEFDS19BTElHTk1FTlQgfHwgIkdMLlVO
UEFDS19BTElHTk1FTlQiLAorICBHTC5WSUVXUE9SVCB8fCAiR0wuVklFV1BPUlQiCispOworbWlw
bWFwSGludCA9IGNvbnN0Q2hlY2soR0wuRkFTVEVTVCwgR0wuTklDRVNULCBHTC5ET05UX0NBUkUp
OworcGl4ZWxTdG9yZWlQbmFtZSA9IGNvbnN0Q2hlY2soR0wuUEFDS19BTElHTk1FTlQsIEdMLlVO
UEFDS19BTElHTk1FTlQpOworcGl4ZWxTdG9yZWlQYXJhbSA9IGNvbnN0Q2hlY2soMSwyLDQsOCk7
CitzaGFkZXJUeXBlID0gY29uc3RDaGVjayhHTC5WRVJURVhfU0hBREVSLCBHTC5GUkFHTUVOVF9T
SEFERVIpOworc3RlbmNpbE9wID0gY29uc3RDaGVjayhHTC5LRUVQLCBHTC5aRVJPLCBHTC5SRVBM
QUNFLCBHTC5JTkNSLCBHTC5JTkNSX1dSQVAsCisgICAgICAgICAgICAgICAgICAgICAgICBHTC5E
RUNSLCBHTC5ERUNSX1dSQVAsIEdMLklOVkVSVCk7Cit0ZXhJbWFnZVRhcmdldCA9IGNvbnN0Q2hl
Y2soCisgIEdMLlRFWFRVUkVfMkQsCisgIEdMLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwK
KyAgR0wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICBHTC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ksCisgIEdMLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgR0wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICBHTC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1oKKyk7Cit0ZXhJbWFnZUludGVybmFsRm9ybWF0ID0gY29uc3RDaGVjaygKKyAgR0wuQUxQSEEs
CisgIEdMLkxVTUlOQU5DRSwKKyAgR0wuTFVNSU5BTkNFX0FMUEhBLAorICBHTC5SR0IsCisgIEdM
LlJHQkEKKyk7Cit0ZXhJbWFnZUZvcm1hdCA9IGNvbnN0Q2hlY2soCisgIEdMLkFMUEhBLAorICBH
TC5MVU1JTkFOQ0UsCisgIEdMLkxVTUlOQU5DRV9BTFBIQSwKKyAgR0wuUkdCLAorICBHTC5SR0JB
CispOwordGV4SW1hZ2VUeXBlID0gY29uc3RDaGVjayhHTC5VTlNJR05FRF9CWVRFKTsKK3RleFBh
cmFtZXRlclBuYW1lID0gY29uc3RDaGVjaygKKyAgR0wuVEVYVFVSRV9NSU5fRklMVEVSLCBHTC5U
RVhUVVJFX01BR19GSUxURVIsCisgIEdMLlRFWFRVUkVfV1JBUF9TLCBHTC5URVhUVVJFX1dSQVBf
VCk7Cit0ZXhQYXJhbWV0ZXJQYXJhbSA9IHt9OwordGV4UGFyYW1ldGVyUGFyYW1bR0wuVEVYVFVS
RV9NSU5fRklMVEVSXSA9IGNvbnN0Q2hlY2soCisgIEdMLk5FQVJFU1QsIEdMLkxJTkVBUiwgR0wu
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgR0wuTElORUFSX01JUE1BUF9ORUFSRVNULAorICBHTC5O
RUFSRVNUX01JUE1BUF9MSU5FQVIsIEdMLkxJTkVBUl9NSVBNQVBfTElORUFSKTsKK3RleFBhcmFt
ZXRlclBhcmFtW0dMLlRFWFRVUkVfTUFHX0ZJTFRFUl0gPSBjb25zdENoZWNrKEdMLk5FQVJFU1Qs
IEdMLkxJTkVBUik7Cit0ZXhQYXJhbWV0ZXJQYXJhbVtHTC5URVhUVVJFX1dSQVBfU10gPSBjb25z
dENoZWNrKAorICBHTC5DTEFNUF9UT19FREdFLCBHTC5NSVJST1JFRF9SRVBFQVQsIEdMLlJFUEVB
VCk7Cit0ZXhQYXJhbWV0ZXJQYXJhbVtHTC5URVhUVVJFX1dSQVBfVF0gPSB0ZXhQYXJhbWV0ZXJQ
YXJhbVtHTC5URVhUVVJFX1dSQVBfU107Cit0ZXh0dXJlVW5pdCA9IGNvbnN0Q2hlY2suYXBwbHko
dGhpcywgKGZ1bmN0aW9uKCl7CisgIHZhciB0ZXh0dXJlVW5pdHMgPSBbXTsKKyAgdmFyIHRleFVu
aXRzID0gR0wuZ2V0UGFyYW1ldGVyKEdMLk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgZm9y
ICh2YXIgaT0wOyBpPHRleFVuaXRzOyBpKyspIHRleHR1cmVVbml0cy5wdXNoKEdMWydURVhUVVJF
JytpXSk7CisgIHJldHVybiB0ZXh0dXJlVW5pdHM7Cit9KSgpKTsKKwordmFyIFN0ZW5jaWxCaXRz
ID0gR0wuZ2V0UGFyYW1ldGVyKEdMLlNURU5DSUxfQklUUyk7Cit2YXIgTWF4U3RlbmNpbFZhbHVl
ID0gMSA8PCBTdGVuY2lsQml0czsKKwordmFyIE1heFZlcnRleEF0dHJpYnMgPSBHTC5nZXRQYXJh
bWV0ZXIoR0wuTUFYX1ZFUlRFWF9BVFRSSUJTKTsKK3ZhciBMaW5lV2lkdGhSYW5nZSA9IEdMLmdl
dFBhcmFtZXRlcihHTC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpOworCisvLyBSZXR1cm5zIHRy
dWUgaWYgYnVmRGF0YSBjYW4gYmUgcGFzc2VkIHRvIEdMLmJ1ZmZlckRhdGEKK2lzQnVmZmVyRGF0
YSA9IGZ1bmN0aW9uKGJ1ZkRhdGEpIHsKKyAgaWYgKHR5cGVvZiBidWZEYXRhID09ICdudW1iZXIn
KQorICAgIHJldHVybiBidWZEYXRhID49IDA7CisgIGlmIChidWZEYXRhIGluc3RhbmNlb2YgQXJy
YXlCdWZmZXIpCisgICAgcmV0dXJuIHRydWU7CisgIHJldHVybiBXZWJHTEFycmF5VHlwZXMuc29t
ZShmdW5jdGlvbih0KSB7CisgICAgcmV0dXJuIGJ1ZkRhdGEgaW5zdGFuY2VvZiB0OworICB9KTsK
K307CisKK2lzVmVydGV4QXR0cmlidXRlID0gZnVuY3Rpb24oaWR4KSB7CisgIGlmICh0eXBlb2Yg
aWR4ICE9ICdudW1iZXInKSByZXR1cm4gZmFsc2U7CisgIHJldHVybiBpZHggPj0gMCAmJiBpZHgg
PCBNYXhWZXJ0ZXhBdHRyaWJzOworfTsKKworaXNWYWxpZE5hbWUgPSBmdW5jdGlvbihuYW1lKSB7
CisgIGlmICh0eXBlb2YgbmFtZSAhPSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlOworICBmb3IgKHZh
ciBpPTA7IGk8bmFtZS5sZW5ndGg7IGkrKykgeworICAgIHZhciBjID0gbmFtZS5jaGFyQ29kZUF0
KGkpOworICAgIGlmIChjICYgMHgwMEZGID09IDAgfHwgYyAmIDB4RkYwMCA9PSAwKSB7CisgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiB0cnVlOworfTsKKworV2ViR0xB
cnJheVR5cGVzID0gWworICBGbG9hdDMyQXJyYXksCisgIEludDMyQXJyYXksCisgIEludDE2QXJy
YXksCisgIEludDhBcnJheSwKKyAgVWludDMyQXJyYXksCisgIFVpbnQxNkFycmF5LAorICBVaW50
OEFycmF5CitdOword2ViR0xBcnJheUNvbnRlbnRHZW5lcmF0b3JzID0gW3JhbmRvbUxlbmd0aCwg
cmFuZG9tU21hbGxJbnRBcnJheV07CityYW5kb21XZWJHTEFycmF5ID0gZnVuY3Rpb24oKSB7Cisg
IHZhciB0ID0gV2ViR0xBcnJheVR5cGVzLnJhbmRvbSgpOworICByZXR1cm4gbmV3IHQod2ViR0xB
cnJheUNvbnRlbnRHZW5lcmF0b3JzLnJhbmRvbSgpKCkpOworfTsKKworcmFuZG9tQXJyYXlCdWZm
ZXIgPSBmdW5jdGlvbihidWZsZW4pIHsKKyAgaWYgKGJ1ZmxlbiA9PSBudWxsKSBidWZsZW4gPSAy
NTY7CisgIHZhciBsZW4gPSByYW5kb21JbnQoYnVmbGVuKSsxOworICB2YXIgcnY7CisgIHRyeSB7
CisgICAgcnYgPSBuZXcgQXJyYXlCdWZmZXIobGVuKTsKKyAgfSBjYXRjaChlKSB7CisgICAgbG9n
KCJFcnJvciBjcmVhdGluZyBBcnJheUJ1ZmZlciB3aXRoIGxlbmd0aCAiICsgbGVuKTsKKyAgICB0
aHJvdyhlKTsKKyAgfQorICByZXR1cm4gcnY7Cit9OworCitidWZmZXJEYXRhR2VuZXJhdG9ycyA9
IFtyYW5kb21MZW5ndGgsIHJhbmRvbVdlYkdMQXJyYXksIHJhbmRvbUFycmF5QnVmZmVyXTsKK3Jh
bmRvbUJ1ZmZlckRhdGEgPSBmdW5jdGlvbigpIHsKKyAgcmV0dXJuIGJ1ZmZlckRhdGFHZW5lcmF0
b3JzLnJhbmRvbSgpKCk7Cit9OworCityYW5kb21TbWFsbFdlYkdMQXJyYXkgPSBmdW5jdGlvbihi
dWZsZW4pIHsKKyAgdmFyIHQgPSBXZWJHTEFycmF5VHlwZXMucmFuZG9tKCk7CisgIHJldHVybiBu
ZXcgdChyYW5kb21JbnQoYnVmbGVuLzQpKzEpOworfTsKKworYnVmZmVyU3ViRGF0YUdlbmVyYXRv
cnMgPSBbcmFuZG9tU21hbGxXZWJHTEFycmF5LCByYW5kb21BcnJheUJ1ZmZlcl07CityYW5kb21C
dWZmZXJTdWJEYXRhID0gZnVuY3Rpb24oYnVmbGVuKSB7CisgIHZhciBkYXRhID0gYnVmZmVyU3Vi
RGF0YUdlbmVyYXRvcnMucmFuZG9tKCkoYnVmbGVuKTsKKyAgdmFyIG9mZnNldCA9IHJhbmRvbUlu
dChidWZsZW4gLSBkYXRhLmJ5dGVMZW5ndGgpOworICByZXR1cm4ge2RhdGE6ZGF0YSwgb2Zmc2V0
Om9mZnNldH07Cit9OworCityYW5kb21Db2xvciA9IGZ1bmN0aW9uKCkgeworICByZXR1cm4gW01h
dGgucmFuZG9tKCksIE1hdGgucmFuZG9tKCksIE1hdGgucmFuZG9tKCksIE1hdGgucmFuZG9tKCld
OworfTsKKworcmFuZG9tTmFtZSA9IGZ1bmN0aW9uKCkgeworICB2YXIgYXJyID0gW107CisgIHZh
ciBsZW4gPSByYW5kb21MZW5ndGgoKSsxOworICBmb3IgKHZhciBpPTA7IGk8bGVuOyBpKyspIHsK
KyAgICB2YXIgbCA9IHJhbmRvbUludCgyNTUpKzE7CisgICAgdmFyIGggPSByYW5kb21JbnQoMjU1
KSsxOworICAgIHZhciBjID0gKGggPDwgOCkgfCBsOworICAgIGFyci5wdXNoKFN0cmluZy5mcm9t
Q2hhckNvZGUoYykpOworICB9CisgIHJldHVybiBhcnIuam9pbignJyk7Cit9OworcmFuZG9tVmVy
dGV4QXR0cmlidXRlID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiByYW5kb21JbnQoTWF4VmVydGV4
QXR0cmlicyk7Cit9OworCityYW5kb21Cb29sID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRoLnJh
bmRvbSgpID4gMC41OyB9OworCityYW5kb21TdGVuY2lsID0gZnVuY3Rpb24oKSB7CisgIHJldHVy
biByYW5kb21JbnQoTWF4U3RlbmNpbFZhbHVlKTsKK307CisKK3JhbmRvbUxpbmVXaWR0aCA9IGZ1
bmN0aW9uKCkgeworICB2YXIgbG8gPSBMaW5lV2lkdGhSYW5nZVswXSwKKyAgICAgIGhpID0gTGlu
ZVdpZHRoUmFuZ2VbMV07CisgIHJldHVybiByYW5kb21GbG9hdEZyb21SYW5nZShsbywgaGkpOwor
fTsKKworcmFuZG9tSW1hZ2UgPSBmdW5jdGlvbih3LGgpIHsKKyAgdmFyIGltZzsKKyAgdmFyIHIg
PSBNYXRoLnJhbmRvbSgpOworICBpZiAociA8IDAuMjUpIHsKKyAgICBpbWcgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICBpbWcud2lkdGggPSB3OyBpbWcuaGVpZ2h0ID0g
aDsKKyAgICBpbWcuZ2V0Q29udGV4dCgnMmQnKS5maWxsUmVjdCgwLDAsdyxoKTsKKyAgfSBlbHNl
IGlmIChyIDwgMC41KSB7CisgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8n
KTsKKyAgICBpbWcubXV0ZWQgPSB0cnVlOworICAgIGltZy53aWR0aCA9IHc7IGltZy5oZWlnaHQg
PSBoOworICB9IGVsc2UgaWYgKHIgPCAwLjc1KSB7CisgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW1nJyk7CisgICAgaW1nLndpZHRoID0gdzsgaW1nLmhlaWdodCA9IGg7CisgIH0g
ZWxzZSB7CisgICAgaW1nID0gY2FudmFzMkQuZ2V0Q29udGV4dCgnMmQnKS5jcmVhdGVJbWFnZURh
dGEodyxoKTsKKyAgfQorICByZXR1cm4gaW1nCit9OworCittdXRhdGVBcmdzID0gZnVuY3Rpb24o
YXJncykgeworICB2YXIgbXV0YXRlQ291bnQgPSByYW5kb21JbnRGcm9tUmFuZ2UoMSwgYXJncy5s
ZW5ndGgpOworICB2YXIgbmV3QXJncyA9IEFycmF5LmZyb20oYXJncyk7CisgIGZvciAodmFyIGk9
MDsgaTxtdXRhdGVDb3VudDsgaSsrKSB7CisgICAgdmFyIGlkeCA9IHJhbmRvbUludChhcmdzLmxl
bmd0aCk7CisgICAgbmV3QXJnc1tpZHhdID0gZ2VuZXJhdGVSYW5kb21BcmcoaWR4LCBhcmdzLmxl
bmd0aCk7CisgIH0KKyAgcmV0dXJuIG5ld0FyZ3M7Cit9OworCisvLyBDYWxscyB0ZXN0RnVuY3Rp
b24gbnVtYmVyT2ZUZXN0cyB0aW1lcyB3aXRoIGFyZ3VtZW50cyBnZW5lcmF0ZWQgYnkKKy8vIGFy
Z0dlbi5nZW5lcmF0ZSgpIChvciBlbXB0eSBhcmd1bWVudHMgaWYgbm8gZ2VuZXJhdGUgcHJlc2Vu
dCkuCisvLworLy8gVGhlIGFyZ3VtZW50cyB0ZXN0RnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYXJl
IHRoZSBnZW5lcmF0ZWQgYXJncywKKy8vIHRoZSBhcmdHZW4sIGFuZCB3aGF0IGFyZ0dlbi5zZXR1
cCgpIHJldHVybmVkIG9yIFtdIGlmIGFyZ0dlbiBoYXMgbm90IHNldHVwCisvLyBtZXRob2QuIEku
ZS4gdGVzdEZ1bmN0aW9uKGdlbmVyYXRlZEFyZ3MsIGFyZ0dlbiwgc2V0dXBWYXJzKS4KKy8vCith
cmdHZW5lcmF0b3JUZXN0UnVubmVyID0gZnVuY3Rpb24oYXJnR2VuLCB0ZXN0RnVuY3Rpb24sIG51
bWJlck9mVGVzdHMpIHsKKyAgLy8gZG8gYXJndW1lbnQgZ2VuZXJhdG9yIHNldHVwIGlmIG5lZWRl
ZAorICB2YXIgc2V0dXBWYXJzID0gYXJnR2VuLnNldHVwID8gYXJnR2VuLnNldHVwKCkgOiBbXTsK
KyAgdmFyIGVycm9yOworICBmb3IgKHZhciBpPTA7IGk8bnVtYmVyT2ZUZXN0czsgaSsrKSB7Cisg
ICAgdmFyIGZhaWxlZCA9IGZhbHNlOworICAgIC8vIGdlbmVyYXRlIGFyZ3VtZW50cyBpZiBhcmdH
ZW4gaGFzIGEgZ2VuZXJhdGUgbWV0aG9kCisgICAgdmFyIGdlbmVyYXRlZEFyZ3MgPSBhcmdHZW4u
Z2VuZXJhdGUgPyBhcmdHZW4uZ2VuZXJhdGUuYXBwbHkoYXJnR2VuLCBzZXR1cFZhcnMpIDogW107
CisgICAgdHJ5IHsKKyAgICAgIC8vIGNhbGwgdGVzdEZ1bmN0aW9uIHdpdGggdGhlIGdlbmVyYXRl
ZCBhcmdzCisgICAgICB0ZXN0RnVuY3Rpb24uY2FsbCh0aGlzLCBnZW5lcmF0ZWRBcmdzLCBhcmdH
ZW4sIHNldHVwVmFycyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgZmFpbGVkID0gdHJ1ZTsK
KyAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgLy8gaWYgYXJnR2VuIG5lZWRzIGNsZWFudXAg
Zm9yIGdlbmVyYXRlZCBhcmdzLCBkbyBpdCBoZXJlCisgICAgaWYgKGFyZ0dlbi5jbGVhbnVwKQor
ICAgICAgYXJnR2VuLmNsZWFudXAuYXBwbHkoYXJnR2VuLCBnZW5lcmF0ZWRBcmdzKTsKKyAgICBp
ZiAoZmFpbGVkKSBicmVhazsKKyAgfQorICAvLyBpZiBhcmdHZW4gbmVlZHMgdG8gZG8gYSBmaW5h
bCBjbGVhbnVwIGZvciBzZXR1cFZhcnMsIGRvIGl0IGhlcmUKKyAgaWYgKGFyZ0dlbi50ZWFyZG93
bikKKyAgICBhcmdHZW4udGVhcmRvd24uYXBwbHkoYXJnR2VuLCBzZXR1cFZhcnMpOworICBpZiAo
ZXJyb3IpIHRocm93KGVycm9yKTsKK307CisKKy8vIFRPRE86IFJlbW92ZSB0aGlzCisvLyBXZWJL
aXQgb3IgYXQgbGVhc3QgQ2hyb21lIGlzIHJlYWxseSBzbG93IGF0IGxheWluZyBvdXQgc3RyaW5n
cyB3aXRoCisvLyB1bnByaW50YWJsZSBjaGFyYWN0ZXJzLiBXaXRob3V0IHRoaXMgdGVzdHMgY2Fu
IHRha2UgMzAtOTAgc2Vjb25kcy4KKy8vIFdpdGggdGhpcyB0aGV5J3JlIGluc3RhbnQuCitzYW5p
dGl6ZSA9IGZ1bmN0aW9uKHN0cikgeworICB2YXIgbmV3U3RyID0gW107CisgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCBzdHIubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVB
dChpaSk7CisgICAgbmV3U3RyLnB1c2goKGMgPiAzMSAmJiBjIDwgMTI4KSA/IHN0cltpaV0gOiAi
PyIpOworICB9CisgIHJldHVybiBuZXdTdHIuam9pbignJyk7Cit9OworCithcmdzVG9TdHJpbmcg
PSBmdW5jdGlvbihhcmdzKSB7CisgIHJldHVybiBzYW5pdGl6ZShhcmdzLm1hcChmdW5jdGlvbihh
KXtyZXR1cm4gT2JqZWN0LnRvU291cmNlKGEpfSkuam9pbigiLCIpKTsKK307CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9tb3JlL2NvbmZvcm1hbmNlL3F1aWNrQ2hlY2tBUElCYWRBcmdzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2NvbmZv
cm1hbmNlL3F1aWNrQ2hlY2tBUElCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2NWJmMmFkMTRj
NGRlZmNhZmI0MmM1OWM3NGVkYzE1MjFiZDdhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29u
Zm9ybWFuY2UvcXVpY2tDaGVja0FQSUJhZEFyZ3MuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJxdWlja0No
ZWNrQVBJLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKworLy8gVGVzdCB0aGF0IGFsbCBHTCBmdW5jdGlvbnMgc3BlY2lmaWVkIGluIEFyZ0dl
bmVyYXRvcnMgZmFpbAorLy8gd2hlbiBjYWxsZWQgd2l0aCByYW5kb21seSBnZW5lcmF0ZWQgaW52
YWxpZCBhcmd1bWVudHMKKy8vIFdvcmtzIG9ubHkgb24gdGVzdHMgd2l0aCBjaGVja0FyZ1ZhbGlk
aXR5IGRlZmluZWQKK1Rlc3RzLnRlc3RJbnZhbGlkQXJncyA9IGZ1bmN0aW9uKCkgeworICB2YXIg
cmFuZG9tVGVzdENvdW50ID0gMTAwOworICBmb3IgKHZhciBuYW1lIGluIEFyZ0dlbmVyYXRvcnMp
IHsKKyAgICB0cnkgeworICAgICAgaWYgKCFHTFtuYW1lXSkKKyAgICAgICAgdGhyb3cgKG5ldyBF
cnJvcihuYW1lICsgIiBpcyBtaXNzaW5nIGZyb20gdGhlIFdlYkdMIGNvbnRleHQiKSk7CisgICAg
ICB2YXIgYXJnR2VuID0gQXJnR2VuZXJhdG9yc1tuYW1lXTsKKyAgICAgIHZhciBhbHJlYWR5VHJp
ZWRBcmdzID0ge307CisgICAgICBpZiAoIWFyZ0dlbi5nZW5lcmF0ZSB8fCAhYXJnR2VuLmNoZWNr
QXJnVmFsaWRpdHkpIGNvbnRpbnVlOworICAgICAgLy8gdGVzdCBlYWNoIEdMIGZ1bmN0aW9uIHdp
dGggcmFuZG9tVGVzdENvdW50IHJhbmRvbWx5IGdlbmVyYXRlZCB2YWxpZCBhcmdzCisgICAgICBh
cmdHZW5lcmF0b3JUZXN0UnVubmVyKGFyZ0dlbiwgZnVuY3Rpb24oYXJncywgZ2VuLCBzZXR1cFZh
cnMpIHsKKyAgICAgICAgdmFyIG11dGF0ZWRBcmdzOworICAgICAgICB2YXIgZm91bmRBcmdzID0g
ZmFsc2U7CisgICAgICAgIGZvciAodmFyIGo9MDsgajwxMDA7IGorKykgeworICAgICAgICAgIG11
dGF0ZWRBcmdzID0gbXV0YXRlQXJncyhhcmdzKTsKKyAgICAgICAgICB2YXIgdmFsaWRBcmdzID0g
ZmFsc2U7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhbGlkQXJncyA9IGdlbi5jaGVj
a0FyZ1ZhbGlkaXR5LmFwcGx5KGdlbiwgbXV0YXRlZEFyZ3MpOworICAgICAgICAgIH0gY2F0Y2go
ZSkge30KKyAgICAgICAgICBpZiAoIXZhbGlkQXJncykgeworICAgICAgICAgICAgaWYgKGdlbi5u
b0FscmVhZHlUcmllZENoZWNrKSB7CisgICAgICAgICAgICAgIGZvdW5kQXJncyA9IHRydWU7Cisg
ICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3VuZCBuZXcgaW52YWxpZCBhcmdzCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXIgc3JjID0gT2JqZWN0LnRvU291cmNlKG11dGF0ZWRBcmdzKTsK
KyAgICAgICAgICAgIGlmICghYWxyZWFkeVRyaWVkQXJnc1tzcmNdKSB7CisgICAgICAgICAgICAg
IGFscmVhZHlUcmllZEFyZ3Nbc3JjXSA9IHRydWU7CisgICAgICAgICAgICAgIGZvdW5kQXJncyA9
IHRydWU7CisgICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3VuZCBuZXcgaW52YWxpZCBhcmdzCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghZm91bmRB
cmdzKQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB2YXIgb2sgPSBmYWxzZTsKKyAg
ICAgICAgdmFyIHJ2OworICAgICAgICAvLyBhc3NlcnQgdGhhdCBHTCBmdW5jdGlvbiBmYWlscyB3
aGVuIGNhbGxlZCB3aXRoIGludmFsaWQgYXJncworICAgICAgICBhc3NlcnRGYWlsKCJUaGlzIHNo
b3VsZCBmYWlsOiAiK25hbWUrIigiK2FyZ3NUb1N0cmluZyhtdXRhdGVkQXJncykrIikiLAorICAg
ICAgICAgIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBHTC5nZXRFcnJvcigpOyAvLyBjbGVhciBv
ZmYgZXhpc3RpbmcgZXJyb3IKKyAgICAgICAgICAgIHJ2ID0gR0xbbmFtZV0uYXBwbHkoR0wsIG11
dGF0ZWRBcmdzKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoR0wsIG5hbWUpOworICAgICAgICAg
ICAgb2sgPSB0cnVlOworICAgICAgICAgIH0pOworICAgICAgICAvLyBpZiB3ZSBuZWVkIHRvIGNs
ZWFudXAgdGhlIHJldHVybiB2YWx1ZSwgZG8gaXQgaGVyZQorICAgICAgICAvLyBlLmcuIGNhbGxp
bmcgZ2wuZGVsZXRlQnVmZmVyKHJ2KSBhZnRlciB0ZXN0aW5nIGdsLmNyZWF0ZUJ1ZmZlcigpIGFi
b3ZlCisgICAgICAgIGlmIChnZW4ucmV0dXJuVmFsdWVDbGVhbnVwICYmIHJ2ICE9IG51bGwpIHsK
KyAgICAgICAgICBhc3NlcnRPaygiQ2xlYW5pbmcgdXAgcmV0dXJuIHZhbHVlIGFmdGVyICIrbmFt
ZSsiKCIrYXJnc1RvU3RyaW5nKG11dGF0ZWRBcmdzKSsiKSIsCisgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7IGdlbi5yZXR1cm5WYWx1ZUNsZWFudXAocnYpOyB9KTsKKyAgICAgICAgfQor
ICAgICAgICBHTC5nZXRFcnJvcigpOworICAgICAgICByZXR1cm4gIW9rOworICAgICAgfSwgYXJn
R2VuLnRlc3RDb3VudCB8fCByYW5kb21UZXN0Q291bnQpOworICAgIH0gY2F0Y2goZSkgeworICAg
ICAgdGVzdEZhaWxlZChuYW1lLCBlLm5hbWUsIGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgIH0K
K30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxl
PgorPC9oZWFkPjxib2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9y
bWFuY2Uvd2ViR0xBcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvY29uZm9ybWFuY2Uvd2ViR0xBcnJheXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZDNlYmEwMzZkYTkxZmI0OWM3ZTc3ODYwNDhmODM0ZWNlZDJmZTQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9jb25mb3JtYW5jZS93ZWJHTEFycmF5cy5odG1sCkBAIC0w
LDAgKzEsMTY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNz
cyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3Jj
PSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Ij4KKworZnVuY3Rpb24gYXNzZXJ0SWR4cyhuYW1lLCBhcnIsIGxlbmd0aCkgeworLy8g
ICBhc3NlcnRPayhuYW1lKyI6IFJlYWQgd2l0aCBuZWdhdGl2ZSBpZHggc2hvdWxkIHdvcmsiLCBm
dW5jdGlvbigpeyByZXR1cm4gYXJyWy0xXSB9KTsKKy8vICAgYXNzZXJ0T2sobmFtZSsiOiBSZWFk
IHdpdGggdG9vIGxhcmdlIGlkeCBzaG91bGQgd29yayIsIGZ1bmN0aW9uKCl7IHJldHVybiBhcnJb
bGVuZ3RoXSB9KTsKKy8vICAgYXNzZXJ0T2sobmFtZSsiOiBXcml0ZSB3aXRoIG5lZ2F0aXZlIGlk
eCBzaG91bGQgd29yayIsIGZ1bmN0aW9uKCl7IGFyclstMV0gPSAwIH0pOworLy8gICBhc3NlcnRP
ayhuYW1lKyI6IFdyaXRlIHdpdGggdG9vIGxhcmdlIGlkeCBzaG91bGQgd29yayIsIGZ1bmN0aW9u
KCl7IGFycltsZW5ndGhdID0gMCB9KTsKKy8vICAgYXJyWzBdID0gMjsKKy8vICAgYXNzZXJ0RXF1
YWxzKG5hbWUrIjogVGVzdCB0aGF0IHdyaXRlIHdvcmtlZCIsIDIsIGFyclswXSk7CisvLyAgIGFz
c2VydE9rKG5hbWUrIjogV3JpdGUgd2l0aCBiYWQgdmFsdWUgc2hvdWxkIHdvcmsiLCBmdW5jdGlv
bigpeyBhcnJbMF0gPSB7eDoiZm9vIn0gfSk7CisvLyAgIGFzc2VydEVxdWFscyhuYW1lKyI6IFRl
c3QgdGhhdCBiYWQgd3JpdGUgZGlkbid0IHdvcmsiLCAyLCBhcnJbMF0pOworICBhc3NlcnRPayhu
YW1lKyI6IFJlYWQgYW5kIHdyaXRlcyB3aXRoIE9LIGlkeHMgc2hvdWxkIHdvcmsiLCBmdW5jdGlv
bigpeworICAgIGZvciAodmFyIGk9MDsgaTxsZW5ndGg7IGkrKykgYXJyW2ldID0gaSArIDE7Cisg
ICAgZm9yICh2YXIgaT0wOyBpPGxlbmd0aDsgaSsrKSBhcnJbaV0gPSBhcnJbaV0gKyAxOworICAg
IGZvciAodmFyIGk9MDsgaTxsZW5ndGg7IGkrKykgYXNzZXJ0RXF1YWxzKG5hbWUrIjogVGVzdCB0
aGF0IHJlYWRzIGFuZCB3cml0ZXMgd29yayIsIGkrMiwgYXJyW2ldKTsKKyAgfSk7Cit9CisKK1Rl
c3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4
dChjYW52YXMpKTsKKyAgcHJvZyA9IG5ldyBTaGFkZXIoZ2wsICd2ZXJ0JywgJ2ZyYWcnKTsKKyAg
cHJvZy51c2UoKTsKKyAgcHJvZy51bmlmb3JtNGYoJ2MnLCAyNTUsIDAsIDAsIDI1NSk7CisgIHZh
ID0gcHJvZy5hdHRyaWIoJ1ZlcnRleCcpOworICBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsK
KyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgIHJldHVybiBbZ2xd
OworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oKSB7CisgIHByb2cuZGVzdHJveSgpOwor
fQorCitUZXN0cy50ZXN0Q3JlYXRlRnJvbUFycmF5ID0gZnVuY3Rpb24oKSB7CisgIHZhciBhID0g
bmV3IEZsb2F0MzJBcnJheShbMSwyLDMsNCw1LDZdKTsKKyAgYXNzZXJ0SWR4cygnRmxvYXQnLCBh
LCA2KTsKKyAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShbMSwyLDMsNCw1LDZdKTsKKyAgYXNzZXJ0
SWR4cygnSW50JywgYSwgNik7CisgIHZhciBhID0gbmV3IEludDE2QXJyYXkoWzEsMiwzLDQsNSw2
XSk7CisgIGFzc2VydElkeHMoJ1Nob3J0JywgYSwgNik7CisgIHZhciBhID0gbmV3IEludDhBcnJh
eShbMSwyLDMsNCw1LDZdKTsKKyAgYXNzZXJ0SWR4cygnQnl0ZScsIGEsIDYpOworICB2YXIgYSA9
IG5ldyBVaW50MzJBcnJheShbMSwyLDMsNCw1LDZdKTsKKyAgYXNzZXJ0SWR4cygnVUludCcsIGEs
IDYpOworICB2YXIgYSA9IG5ldyBVaW50MTZBcnJheShbMSwyLDMsNCw1LDZdKTsKKyAgYXNzZXJ0
SWR4cygnVVNob3J0JywgYSwgNik7CisgIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkoWzEsMiwzLDQs
NSw2XSk7CisgIGFzc2VydElkeHMoJ1VCeXRlJywgYSwgNik7Cit9CitUZXN0cy50ZXN0Q3JlYXRl
RnJvbUNvdW50ID0gZnVuY3Rpb24oKSB7CisgIHZhciBhID0gbmV3IEZsb2F0MzJBcnJheSg2KTsK
KyAgYXNzZXJ0SWR4cygnRmxvYXQnLCBhLCA2KTsKKyAgdmFyIGEgPSBuZXcgSW50MzJBcnJheSg2
KTsKKyAgYXNzZXJ0SWR4cygnSW50JywgYSwgNik7CisgIHZhciBhID0gbmV3IEludDE2QXJyYXko
Nik7CisgIGFzc2VydElkeHMoJ1Nob3J0JywgYSwgNik7CisgIHZhciBhID0gbmV3IEludDhBcnJh
eSg2KTsKKyAgYXNzZXJ0SWR4cygnQnl0ZScsIGEsIDYpOworICB2YXIgYSA9IG5ldyBVaW50MzJB
cnJheSg2KTsKKyAgYXNzZXJ0SWR4cygnVUludCcsIGEsIDYpOworICB2YXIgYSA9IG5ldyBVaW50
MTZBcnJheSg2KTsKKyAgYXNzZXJ0SWR4cygnVVNob3J0JywgYSwgNik7CisgIHZhciBhID0gbmV3
IFVpbnQ4QXJyYXkoNik7CisgIGFzc2VydElkeHMoJ1VCeXRlJywgYSwgNik7Cit9CitUZXN0cy50
ZXN0Q3JlYXRlRnJvbUJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICB2YXIgc3ogPSAyNDsKKyAgdmFy
IGIgPSBuZXcgQXJyYXlCdWZmZXIoc3opOworICB2YXIgYSA9IG5ldyBGbG9hdDMyQXJyYXkoYik7
CisgIGFzc2VydElkeHMoJ0Zsb2F0JywgYSwgc3ovNCk7CisgIHZhciBhID0gbmV3IEludDMyQXJy
YXkoYik7CisgIGFzc2VydElkeHMoJ0ludCcsIGEsIHN6LzQpOworICB2YXIgYSA9IG5ldyBJbnQx
NkFycmF5KGIpOworICBhc3NlcnRJZHhzKCdTaG9ydCcsIGEsIHN6LzIpOworICB2YXIgYSA9IG5l
dyBJbnQ4QXJyYXkoYik7CisgIGFzc2VydElkeHMoJ0J5dGUnLCBhLCBzei8xKTsKKyAgdmFyIGEg
PSBuZXcgVWludDMyQXJyYXkoYik7CisgIGFzc2VydElkeHMoJ1VJbnQnLCBhLCBzei80KTsKKyAg
dmFyIGEgPSBuZXcgVWludDE2QXJyYXkoYik7CisgIGFzc2VydElkeHMoJ1VTaG9ydCcsIGEsIHN6
LzIpOworICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KGIpOworICBhc3NlcnRJZHhzKCdVQnl0ZScs
IGEsIHN6LzEpOworfQorCitUZXN0cy50ZXN0VGhhdFdyaXRlc0NoYW5nZURyYXdpbmcgPSBmdW5j
dGlvbihnbCkgeworICB2YXIgdmVydHMgPSBbCisgICAgMCwwLAorICAgIDEsMCwKKyAgICAxLDEs
CisKKyAgICAwLDAsCisgICAgMSwxLAorICAgIDAsMQorICBdOworICB2YXIgYSA9IG5ldyBGbG9h
dDMyQXJyYXkodmVydHMpOworICB2YXIgYXJyID0gW107CisgIGZvciAodmFyIGk9MDsgaTwxMjsg
aSsrKQorICAgIGFycltpXSA9IGFbaV07CisgIGFzc2VydEVxdWFscygiVGVzdCB0aGF0IHJlYWRz
IHdvcmsgZnJvbSBhbiBhcnJheS1pbml0aWFsaXplZCBGbG9hdDMyQXJyYXkiLCBhcnIsIHZlcnRz
KTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYSwgZ2wuU1RBVElDX0RSQVcpOwor
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHZhLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwor
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2YSk7CisKKyAgdmFyIGlkID0gbmV3IFVpbnQ4
QXJyYXkoNCk7CisgIGdsLnJlYWRQaXhlbHMoOCw4LDEsMSxnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBpZCk7CisgIGFzc2VydEVxdWFscyhbMCwgMCwgMCwgMF0sIFtpZFswXSwgaWRbMV0sIGlk
WzJdLCBpZFszXV0pOworCisgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKwor
ICBnbC5yZWFkUGl4ZWxzKDgsOCwxLDEsZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaWQpOwor
ICBhc3NlcnRFcXVhbHMoWzI1NSwgMCwgMCwgMjU1XSwgW2lkWzBdLCBpZFsxXSwgaWRbMl0sIGlk
WzNdXSk7CisgIGdsLnJlYWRQaXhlbHMoMCw4LDEsMSxnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBpZCk7CisgIGFzc2VydEVxdWFscyhbMCwgMCwgMCwgMF0sIFtpZFswXSwgaWRbMV0sIGlkWzJd
LCBpZFszXV0pOworCisgIGFbMF0gPSBhWzZdID0gYVsxMF0gPSAtMTsKKyAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIGEsIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcih2YSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICBnbC5kcmF3QXJyYXlz
KGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgZ2wucmVhZFBpeGVscyg4LDgsMSwxLGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGlkKTsKKyAgYXNzZXJ0RXF1YWxzKFsyNTUsIDAsIDAsIDI1NV0s
IFtpZFswXSwgaWRbMV0sIGlkWzJdLCBpZFszXV0pOworICBnbC5yZWFkUGl4ZWxzKDAsOCwxLDEs
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaWQpOworICBhc3NlcnRFcXVhbHMoIlRlc3QgdGhh
dCBGbG9hdDMyQXJyYXkjW109IHdvcmtlZCBhbmQgZHJhd0FycmF5cyBkcmV3IGEgZnVsbC13aWR0
aCByZWN0YW5nbGUiLAorICAgICAgICAgICAgICAgWzI1NSwgMCwgMCwgMjU1XSwgW2lkWzBdLCBp
ZFsxXSwgaWRbMl0sIGlkWzNdXSk7CisgIGdsLnJlYWRQaXhlbHMoMCwwLDEsMSxnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBpZCk7CisgIGFzc2VydEVxdWFscyhbMCwgMCwgMCwgMF0sIFtpZFsw
XSwgaWRbMV0sIGlkWzJdLCBpZFszXV0pOworfQorCis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZl
cnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKyAgYXR0cmlidXRlIHZlYzIgVmVydGV4Owor
ICB2b2lkIG1haW4oKQorICB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgMC4wLCAx
LjApOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWciIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICB1bmlmb3JtIHZlYzQg
YzsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIGdsX0ZyYWdDb2xvciA9IGM7CisgIH0KKzwvc2Ny
aXB0PgorPHN0eWxlPmNhbnZhc3tib3JkZXI6IDFweCBzb2xpZCBibGFja308L3N0eWxlPgorPC9o
ZWFkPjxib2R5PgorPGNhbnZhcyBpZD0iZ2wiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52
YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvYmluZEJ1ZmZl
ci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvYmluZEJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMTFk
NzYxNjhhYzdkYzU2MmNhOTQzZTlmNGYzYTViNDM5ZjQ0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy9iaW5kQnVmZmVyLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVu
aXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7
CisgIHJldHVybiBbZ2xdOworfQorCitUZXN0cy50ZXN0QmluZEJ1ZmZlckFSUkFZX0JVRkZFUiA9
IGZ1bmN0aW9uKGdsKSB7CisgIHZhciBiID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGFzc2VydChn
bC5OT19FUlJPUiA9PSBjaGVja0Vycm9yKGdsLCAiZ2VuQnVmZmVycyIpKTsKKyAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGIpOworICBhc3NlcnQoZ2wuTk9fRVJST1IgPT0gY2hlY2tF
cnJvcihnbCwgImJpbmRCdWZmZXIiKSk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBudWxsKTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2wsICJiaW5kQnVm
ZmVyIDAiKSk7CisgIGdsLmRlbGV0ZUJ1ZmZlcihiKTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9SID09
IGNoZWNrRXJyb3IoZ2wsICJkZWxldGVCdWZmZXJzIikpOworfQorCitUZXN0cy50ZXN0QmluZEJ1
ZmZlckVMRU1FTlRfQVJSQVlfQlVGRkVSID0gZnVuY3Rpb24oZ2wpIHsKKyAgdmFyIGIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2wsICJn
ZW5CdWZmZXJzIikpOworICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBi
KTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2wsICJiaW5kQnVmZmVyIikp
OworICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgYXNz
ZXJ0KGdsLk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2wsICJiaW5kQnVmZmVyIDAiKSk7CisgIGds
LmRlbGV0ZUJ1ZmZlcihiKTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2ws
ICJkZWxldGVCdWZmZXJzIikpOworfQorCis8L3NjcmlwdD4KKworPHN0eWxlPmNhbnZhc3sgcG9z
aXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8Y2FudmFzIGlkPSJn
bCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvbW9yZS9mdW5jdGlvbnMvYmluZEJ1ZmZlckJhZEFyZ3MuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rp
b25zL2JpbmRCdWZmZXJCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3OTdjYjNkMDgxMzc0NjQz
ODQyZGIxNzg1YmFmNzNkOGVhOGY3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25z
L2JpbmRCdWZmZXJCYWRBcmdzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVuaXQgPSBm
dW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wn
KTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHJl
dHVybiBbZ2xdOworfQorCitUZXN0cy50ZXN0QmluZEJ1ZmZlckFSUkFZX0JVRkZFUiA9IGZ1bmN0
aW9uKGdsKSB7CisgIHZhciBiID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGFzc2VydE9rKCJiaW5k
IGJ1ZmZlciIsIGZ1bmN0aW9uKCl7Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGIpfSk7
CisgIGFzc2VydEZhaWwoImJ1ZmZlckRhdGEgdG8gbnVsbCBidWZmZXIiLCBmdW5jdGlvbigpIHsK
KyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzEwXSksIGdsLlNUQVRJQ19E
UkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgbmV3IEZsb2F0
MzJBcnJheShbMTBdKSk7CisgIH0pOworICBhc3NlcnRGYWlsKCJiaW5kIHRvIG51bWJlciIsIGZ1
bmN0aW9uKCl7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIDEwMDAwMDAwMDAp
OworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsx
MF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZG
RVIsIDAsIG5ldyBGbG9hdDMyQXJyYXkoWzEwXSkpOworICB9KTsKKyAgYXNzZXJ0T2soImJpbmQg
dG8gbnVsbCIsIGZ1bmN0aW9uKCl7Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwp
fSk7CisgIGdsLmRlbGV0ZUJ1ZmZlcihiKTsKK30KKworVGVzdHMudGVzdEJpbmRCdWZmZXJFTEVN
RU5UX0FSUkFZX0JVRkZFUiA9IGZ1bmN0aW9uKGdsKSB7CisgIHZhciBiID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgIGFzc2VydE9rKCJiaW5kIGJ1ZmZlciIsIGZ1bmN0aW9uKCl7Z2wuYmluZEJ1ZmZl
cihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYil9KTsKKyAgYXNzZXJ0RmFpbCgiYnVmZmVyRGF0
YSB0byBudWxsIGJ1ZmZlciIsIGZ1bmN0aW9uKCkgeworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIG51bGwpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzEwXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAg
ICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgbmV3IEZsb2F0MzJBcnJheShb
MTBdKSk7CisgIH0pOworICBhc3NlcnRGYWlsKCJiaW5kIHRvIG51bWJlciIsIGZ1bmN0aW9uKCl7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMTAwMDAwMDAwMCk7
CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJB
cnJheShbMTBdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCAwLCBuZXcgRmxvYXQzMkFycmF5KFsxMF0pKTsKKyAgfSk7CisgIGFzc2VydE9r
KCJiaW5kIHRvIG51bGwiLAorICAgICAgZnVuY3Rpb24oKXtnbC5iaW5kQnVmZmVyKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCBudWxsKX0pOworICBnbC5kZWxldGVCdWZmZXIoYik7Cit9CitUZXN0
cy50ZXN0QmluZEJ1ZmZlciA9IGZ1bmN0aW9uKGdsKSB7CisgICAgYXNzZXJ0RmFpbCgiYmluZCBB
UlJBWV9CVUZGRVIgdG8gbnVtYmVyIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgMSk7fSk7CisgICAgYXNzZXJ0RmFpbCgiYmluZCBFTEVNRU5UX0FS
UkFZX0JVRkZFUiB0byBudW1iZXIiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJpbmRCdWZmZXIo
Z2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDEpO30pOworICAgIGFzc2VydEZhaWwoImJpbmQgYmFk
IHRhcmdldCIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wuYmluZEJ1ZmZlcihnbC5GTE9BVCwgMCk7
fSk7CisgICAgYXNzZXJ0RmFpbCgiYmluZCBBUlJBWV9CVUZGRVIgdG8gc3RyaW5nIiwKKyAgICAg
ICAgZnVuY3Rpb24oKXtnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgImZvbyIpO30pOwor
ICAgIGFzc2VydEZhaWwoImJpbmQgRUxFTUVOVF9BUlJBWV9CVUZGRVIgdG8gc3RyaW5nIiwKKyAg
ICAgICAgZnVuY3Rpb24oKXtnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAi
Zm9vIik7fSk7Cit9CisKKzwvc2NyaXB0PgorCis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNv
bHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDxjYW52YXMgaWQ9ImdsIiB3aWR0aD0i
MSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2Z1bmN0aW9ucy9iaW5kRnJhbWVidWZmZXJMZWF2ZU5vblplcm8uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rp
b25zL2JpbmRGcmFtZWJ1ZmZlckxlYXZlTm9uWmVyby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMGJhYjhl
MDBkM2M2YjBlZjY3YWZmMDFiNjcwYThiMGViNWZkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2Z1bmN0aW9ucy9iaW5kRnJhbWVidWZmZXJMZWF2ZU5vblplcm8uaHRtbApAQCAtMCwwICsxLDI5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8dGl0bGU+
T3BlbkdMIGZvciB0aGUgd2ViPC90aXRsZT4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+CisKKyAg
ICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorVGVzdHMubWVzc2FnZSA9
ICJUaGlzIHdhcyBzZWdmYXVsdGluZyB3aGVuIHRoZSBHTCBjb250ZXh0IGdvdCBHQydkIChpbiBn
bFhEZXN0cm95Q29udGV4dCkiOworVGVzdHMudGVzdFNlZyA9IGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOworICAgIHZhciBn
bCA9IGdldEdMQ29udGV4dChjYW52YXMpOworCisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwor
fQorPC9zY3JpcHQ+CisKKzwvaGVhZD48Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9tb3JlL2Z1bmN0aW9ucy9idWZmZXJEYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9idWZm
ZXJEYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVkNTNlNmI3ZTUzYjhiOGMwZTNlOGNhMDc0N2Q3MzM2
NzY3N2VkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL2J1ZmZlckRhdGEuaHRt
bApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91
bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIu
Li91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlw
dCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24v
amF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFwR0xD
b250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgdmFyIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICB2YXIgZWJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgYnVmKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgZWJ1Zik7CisgIHJldHVybiBbZ2wsIGJ1ZiwgZWJ1Zl07Cit9CisKK1Rlc3RzLnRlc3RC
dWZmZXJEYXRhID0gZnVuY3Rpb24oZ2wsIGJ1ZiwgZWJ1ZikgeworICAgIHZhciBkYXRhID0gWzAs
MCwwLDAsIDEsMCwwLDAsIDAsMSwwLDBdOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCAxMiwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KFtdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1ZmZl
ckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KGRhdGEpLCBnbC5TVEFUSUNf
RFJBVyk7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9C
VUZGRVIsIGdsLkJVRkZFUl9TSVpFKSwgMTIqNCk7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1
ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSksIGdsLlNUQVRJ
Q19EUkFXKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJB
cnJheShkYXRhKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgIGFzc2VydEVxdWFscyhnbC5nZXRCdWZm
ZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfU0laRSksIDEyKjQpOworICAg
IGFzc2VydEVxdWFscyhnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5C
VUZGRVJfVVNBR0UpLCBnbC5TVFJFQU1fRFJBVyk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoZGF0YSksIGdsLkRZTkFNSUNfRFJBVyk7CisgICAg
YXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJV
RkZFUl9TSVpFKSwgMTIqNCk7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRl
cihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSksIGdsLkRZTkFNSUNfRFJBVyk7CisK
KyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IFVpbnQxNkFycmF5KGRhdGEp
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBVaW50MTZBcnJheShkYXRhKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoZGF0YSksIGdsLkRZTkFNSUNfRFJBVyk7
CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIs
IGdsLkJVRkZFUl9TSVpFKSwgMTIqMik7CisgICAgdGhyb3dFcnJvcihnbCwgImFycmF5IGJ1ZmZl
clN1YkRhdGEiKTsKK30KK1Rlc3RzLnRlc3RCdWZmZXJEYXRhRWxlbWVudCA9IGZ1bmN0aW9uKGds
LCBidWYsIGVidWYpIHsKKyAgICB2YXIgZGF0YSA9IFswLDAsMCwwLCAxLDAsMCwwLCAwLDEsMCww
XTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2
QXJyYXkoZGF0YSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVm
ZmVyUGFyYW1ldGVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpLCBn
bC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgbmV3IFVpbnQxNkFycmF5KGRhdGEpLCBnbC5TVFJFQU1fRFJBVyk7CisgICAgYXNzZXJ0RXF1
YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2wuQlVG
RkVSX1VTQUdFKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShkYXRhKSwgZ2wuRFlOQU1JQ19EUkFXKTsK
KyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkVMRU1FTlRfQVJSQVlf
QlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpLCBnbC5EWU5BTUlDX0RSQVcpOworICAgIGFzc2VydEVx
dWFscyhnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGdsLkJV
RkZFUl9TSVpFKSwgMTIqMik7CisgICAgdGhyb3dFcnJvcihnbCwgImVsZW1lbnQgYXJyYXkgYnVm
ZmVyU3ViRGF0YSIpOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oZ2wsIGJ1ZiwgZWJ1
ZikgeworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihlYnVm
KTsKK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwv
c3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9
IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9u
cy9idWZmZXJEYXRhQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvYnVmZmVyRGF0YUJhZEFy
Z3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YTQ3M2JlMGQ4MmNhZWU2ZWVjMGYzNjIzN2VmMTllMWNiNjBi
ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvYnVmZmVyRGF0YUJhZEFyZ3Mu
aHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIu
Li91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3Jj
PSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRp
b24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFw
R0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgdmFyIGJ1ZiA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICB2YXIgZWJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgYnVmKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgZWJ1Zik7CisgIHJldHVybiBbZ2wsIGJ1ZiwgZWJ1Zl07Cit9CisKK1Rlc3RzLnRl
c3RCdWZmZXJEYXRhID0gZnVuY3Rpb24oZ2wpIHsKKyAgICBhc3NlcnRPaygiemVybyBzaXplIGRh
dGEiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBu
ZXcgRmxvYXQzMkFycmF5KDApLCBnbC5TVEFUSUNfRFJBVyk7fSk7CisgICAgYXNzZXJ0RmFpbCgi
YmFkIHRhcmdldCIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wuYnVmZmVyRGF0YShnbC5URVhUVVJF
XzJELCBuZXcgRmxvYXQzMkFycmF5KFsxLDIsM10pLCBnbC5TVEFUSUNfRFJBVyk7fSk7CisvLyAg
ICBhc3NlcnRGYWlsKCJhcnJheSBmb3IgZGF0YSIsCisvLyAgICAgICAgZnVuY3Rpb24oKXtnbC5i
dWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgWzEsMiwzXSwgZ2wuU1RBVElDX0RSQVcpO30pOwor
ICAgIGFzc2VydEZhaWwoImJhZCB1c2FnZSIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzEsMiwzXSksIGdsLlRFWFRV
UkVfMkQpO30pOworICAgIGFzc2VydEZhaWwoIm51bGwgZGF0YSIsCisgICAgICAgIGZ1bmN0aW9u
KCl7Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG51bGwsIGdsLlNUQVRJQ19EUkFXKTt9
KTsKKyAgICBhc3NlcnRGYWlsKCJ1bmRlZmluZWQgZGF0YSIsCisgICAgICAgIGZ1bmN0aW9uKCl7
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHVuZGVmaW5lZCwgZ2wuU1RBVElDX0RSQVcp
O30pOworICAgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMSwyLDNdKSwgZ2wuU1RBVElDX0RSQVcpO30p
OworICAgIHRocm93RXJyb3IoZ2wsICdidWZmZXJEYXRhJyk7CisgICAgZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAgIGFzc2VydEZhaWwoZnVuY3Rpb24oKXtnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMSwyLDNdKSwgZ2wuU1RB
VElDX0RSQVcpO30pOworICAgIHRocm93RXJyb3IoZ2wsICdidWZmZXJEYXRhJyk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgYXNzZXJ0RmFp
bChmdW5jdGlvbigpe2dsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBV
aW50MTZBcnJheShbMSwyLDNdKSwgZ2wuU1RBVElDX0RSQVcpO30pOworICAgIHRocm93RXJyb3Io
Z2wsICdidWZmZXJEYXRhJyk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCwgYnVm
LCBlYnVmKSB7CisgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgZ2wuZGVsZXRlQnVmZmVy
KGVidWYpOworfQorCisKKzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3sgcG9zaXRpb246YWJzb2x1
dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPGNhbnZhcyBpZD0iZ2wiIHdpZHRoPSIxNiIg
aGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9m
dW5jdGlvbnMvYnVmZmVyU3ViRGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvYnVmZmVyU3ViRGF0
YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRmMDNjZjI4MzVkYjk3MDcwY2RhMDFlMDg4NGY1ZjkzODlkNjY3
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9idWZmZXJTdWJEYXRhLmh0bWwK
QEAgLTAsMCArMSwxMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Vu
aXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4u
L3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Ij4KKworVGVzdHMuc3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgICB2YXIgZ2wgPSBnZXRH
TENvbnRleHQoY2FudmFzKTsKKyAgICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
dmFyIGVidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZ
X0JVRkZFUiwgYnVmKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBlYnVmKTsKKyAgICByZXR1cm4gW2dsLCBidWYsIGVidWZdOworfQorCitUZXN0cy50ZXN0QnVm
ZmVyU3ViRGF0YSA9IGZ1bmN0aW9uKGdsLCBidWYsIGVidWYpIHsKKyAgICB2YXIgZGF0YSA9IFsw
LDAsMCwwLCAxLDAsMCwwLCAwLDEsMCwwXTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgbmV3IEZsb2F0MzJBcnJheShkYXRhKSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1
ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCBuZXcgRmxvYXQzMkFycmF5KFsxLDIsMyw0
XSkpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgbmV3IEZsb2F0
MzJBcnJheShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZF
UiwgMzIsIG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxLDFdKSk7CisgICAgYXNzZXJ0RXF1YWxzKGds
LmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSwgMTIq
NCk7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZG
RVIsIGdsLkJVRkZFUl9VU0FHRSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShkYXRhKSwgZ2wuU1RSRUFNX0RSQVcp
OworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgbmV3IEZsb2F0MzJB
cnJheShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
MCwgbmV3IEZsb2F0MzJBcnJheShbMSwyLDMsNF0pKTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0
QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1NJWkUpLCAxMio0KTsK
KyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwg
Z2wuQlVGRkVSX1VTQUdFKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KGRhdGEpLCBnbC5EWU5BTUlDX0RSQVcpOwor
ICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgbmV3IEZsb2F0MzJBcnJh
eShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwg
bmV3IEZsb2F0MzJBcnJheShbMSwyLDMsNF0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgMTYsIG5ldyBVaW50MzJBcnJheShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZm
ZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIG5ldyBJbnQzMkFycmF5KFsxLDEsMSwxXSkp
OworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgbmV3IEludDE2QXJy
YXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2
LCBuZXcgVWludDE2QXJyYXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5B
UlJBWV9CVUZGRVIsIDE2LCBuZXcgSW50OEFycmF5KFsxLDEsMSwxXSkpOworICAgIGdsLmJ1ZmZl
clN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgbmV3IFVpbnQ4QXJyYXkoWzEsMSwxLDFdKSk7
CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIs
IGdsLkJVRkZFUl9TSVpFKSwgMTIqNCk7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZlclBh
cmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSksIGdsLkRZTkFNSUNfRFJB
Vyk7CisKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTIsIGdsLlNUQVRJQ19E
UkFXKTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JV
RkZFUiwgZ2wuQlVGRkVSX1NJWkUpLCAxMik7CisgICAgYXNzZXJ0RXF1YWxzKGdsLmdldEJ1ZmZl
clBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSksIGdsLlNUQVRJQ19E
UkFXKTsKKworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxMio0LCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIG5ldyBG
bG9hdDMyQXJyYXkoWzEsMiwzLDRdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9C
VUZGRVIsIDE2LCBuZXcgRmxvYXQzMkFycmF5KFsxLDEsMSwxXSkpOworICAgIGdsLmJ1ZmZlclN1
YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAzMiwgbmV3IEZsb2F0MzJBcnJheShbMSwxLDEsMV0pKTsK
KyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwg
Z2wuQlVGRkVSX1NJWkUpLCAxMio0KTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFy
YW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdFKSwgZ2wuU1RBVElDX0RSQVcp
OworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxMio0LCBnbC5TVFJFQU1fRFJB
Vyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBuZXcgRmxvYXQz
MkFycmF5KFsxLDEsMSwxXSkpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCAwLCBuZXcgRmxvYXQzMkFycmF5KFsxLDIsMyw0XSkpOworICAgIGFzc2VydEVxdWFscyhnbC5n
ZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfU0laRSksIDEyKjQp
OworICAgIGFzc2VydEVxdWFscyhnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVS
LCBnbC5CVUZGRVJfVVNBR0UpLCBnbC5TVFJFQU1fRFJBVyk7CisgICAgZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIDEyKjQsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3Vi
RGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBuZXcgRmxvYXQzMkFycmF5KFsxLDEsMSwxXSkpOwor
ICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCBuZXcgRmxvYXQzMkFycmF5
KFsxLDIsMyw0XSkpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwg
bmV3IFVpbnQzMkFycmF5KFsxLDEsMSwxXSkpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCAxNiwgbmV3IEludDMyQXJyYXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVy
U3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBuZXcgSW50MTZBcnJheShbMSwxLDEsMV0pKTsK
KyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIG5ldyBVaW50MTZBcnJh
eShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYs
IG5ldyBJbnQ4QXJyYXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJB
WV9CVUZGRVIsIDE2LCBuZXcgVWludDhBcnJheShbMSwxLDEsMV0pKTsKKyAgICBhc3NlcnRFcXVh
bHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1NJWkUp
LCAxMio0KTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZ
X0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdFKSwgZ2wuRFlOQU1JQ19EUkFXKTsKKworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoZGF0YSksIGdsLlNUQVRJ
Q19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIG5ldyBV
aW50MTZBcnJheShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgMCwgbmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0XSkpOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoZGF0YSksIGdsLlNUUkVBTV9EUkFXKTsK
KyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIG5ldyBVaW50MTZBcnJh
eShbMSwxLDEsMV0pKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwg
bmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0XSkpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCBuZXcgVWludDE2QXJyYXkoZGF0YSksIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wu
YnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBuZXcgVWludDE2QXJyYXkoWzEsMSwx
LDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIG5ldyBVaW50
MTZBcnJheShbMSwyLDMsNF0pKTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1l
dGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1NJWkUpLCAxMioyKTsKKyAgICB0aHJvd0Vy
cm9yKGdsLCAiYXJyYXkgYnVmZmVyU3ViRGF0YSIpOworfQorVGVzdHMudGVzdEJ1ZmZlclN1YkRh
dGFFbGVtZW50ID0gZnVuY3Rpb24oZ2wsIGJ1ZiwgZWJ1ZikgeworICAgIHZhciBkYXRhID0gWzAs
MCwwLDAsIDEsMCwwLDAsIDAsMSwwLDBdOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShkYXRhKSwgZ2wuU1RBVElDX0RSQVcpOworICAg
IGdsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDE2LCBuZXcgVWludDE2
QXJyYXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgMCwgbmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0XSkpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShkYXRhKSwgZ2wuU1RS
RUFNX0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IDE2LCBuZXcgVWludDE2QXJyYXkoWzEsMSwxLDFdKSk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCwgbmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0XSkpOwor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJh
eShkYXRhKSwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCAxNiwgbmV3IFVpbnQxNkFycmF5KFsxLDEsMSwxXSkpOworICAgIGds
LmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDAsIG5ldyBVaW50MTZBcnJh
eShbMSwyLDMsNF0pKTsKKyAgICBhc3NlcnRFcXVhbHMoZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGds
LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfU0laRSksIDEyKjIpOworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50OEFycmF5KGRhdGEpLCBn
bC5EWU5BTUlDX0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIDQsIG5ldyBVaW50OEFycmF5KFsxLDEsMSwxXSkpOworICAgIGdsLmJ1ZmZlclN1YkRh
dGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDAsIG5ldyBVaW50OEFycmF5KFsxLDIsMyw0XSkp
OworICAgIGFzc2VydEVxdWFscyhnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSwgMTIpOworICAgIHRocm93RXJyb3IoZ2wsICJlbGVt
ZW50IGFycmF5IGJ1ZmZlclN1YkRhdGEiKTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9u
KGdsLCBidWYsIGVidWYpIHsKKyAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTsKKyAgICBnbC5kZWxl
dGVCdWZmZXIoZWJ1Zik7Cit9CisKKzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3sgcG9zaXRpb246
YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPGNhbnZhcyBpZD0iZ2wiIHdpZHRo
PSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
bW9yZS9mdW5jdGlvbnMvYnVmZmVyU3ViRGF0YUJhZEFyZ3MuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25z
L2J1ZmZlclN1YkRhdGFCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEyYWRmOGZmOGVmNTg4MTdh
MjNlNGVkMDU1N2UwZTZmZjcwYTE3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25z
L2J1ZmZlclN1YkRhdGFCYWRBcmdzLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVuaXQg
PSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdnbCcpOworICAgIHZhciBnbCA9IHdyYXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykp
OworICAgIHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICB2YXIgZWJ1ZiA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVidWYpOworICAgIHJl
dHVybiBbZ2wsIGJ1ZiwgZWJ1Zl07Cit9CisKK1Rlc3RzLnRlc3RCdWZmZXJEYXRhID0gZnVuY3Rp
b24oZ2wpIHsKKyAgICB2YXIgZGF0YSA9IFswLDAsMCwwLCAxLDAsMCwwLCAwLDEsMCwwXTsKKyAg
ICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShkYXRhKSwg
Z2wuU1RSRUFNX0RSQVcpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG5ldyBVaW50MTZBcnJheShkYXRhKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgIGFzc2VydE9r
KCJ6ZXJvIGxlbmd0aCBkYXRhIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZmZXJTdWJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgMCwgbmV3IEZsb2F0MzJBcnJheSgwKSk7fSk7CisgICAgYXNzZXJ0
RmFpbCgibnVtYmVyIGZvciBkYXRhIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZmZXJTdWJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgMTIpO30pOworICAgIGFzc2VydEZhaWwoImJhZCB0YXJn
ZXQiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wuVEVYVFVSRV8yRCwg
MCwgbmV3IEZsb2F0MzJBcnJheShbMSwyLDNdKSk7fSk7CisgICAgYXNzZXJ0RmFpbCgiYXJyYXkg
Zm9yIGRhdGEiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCAwLCBbMSwyLDNdKTt9KTsKKyAgICBhc3NlcnRPaygiZmxvYXRzIGluIGVsZW1lbnQg
YnVmZmVyIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZmZXJTdWJEYXRhKGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCAwLCBuZXcgRmxvYXQzMkFycmF5KFsxLDIsM10pKTt9KTsKKyAgICBhc3Nl
cnRGYWlsKCJuZWdhdGl2ZSBvZmZzZXQiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1
YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIC0xLCBuZXcgVWludDE2QXJyYXkoWzEsMiwz
XSkpO30pOworICAgIGFzc2VydEZhaWwoIm9mZnNldCBvdXQgb2YgcmFuZ2UiLAorICAgICAgICBm
dW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDI0LCBu
ZXcgVWludDE2QXJyYXkoWzEsMiwzXSkpO30pOworICAgIGFzc2VydEZhaWwoIm9mZnNldCBvdXQg
b2YgcmFuZ2UiLAorICAgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIDI0MDAwMDAsIG5ldyBVaW50MTZBcnJheShbMSwyLDNdKSk7fSk7Cisg
ICAgYXNzZXJ0RmFpbCgib2Zmc2V0IG91dCBvZiByYW5nZSIsCisgICAgICAgIGZ1bmN0aW9uKCl7
Z2wuYnVmZmVyU3ViRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMTksIG5ldyBVaW50MTZB
cnJheShbMSwyLDNdKSk7fSk7CisgICAgYXNzZXJ0RmFpbCgiZGF0YSB0b28gbGFyZ2UiLAorICAg
ICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IDAsIG5ldyBVaW50MTZBcnJheShkYXRhLmNvbmNhdChbMV0pKSk7fSk7CisgICAgYXNzZXJ0T2so
Im9mZnNldCArIGRhdGEubGVuZ3RoID0gZW5kIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZm
ZXJTdWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAxOCwgbmV3IFVpbnQxNkFycmF5KFsx
LDIsM10pKTt9KTsKKyAgICBhc3NlcnRPaygib2Zmc2V0IEluZmluaXR5IiwKKyAgICAgICAgZnVu
Y3Rpb24oKXtnbC5idWZmZXJTdWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBJbmZpbml0
eSwgbmV3IFVpbnQxNkFycmF5KFsxLDIsM10pKTt9KTsKKyAgICBhc3NlcnRPaygib2Zmc2V0IC1J
bmZpbml0eSIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wuYnVmZmVyU3ViRGF0YShnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgLUluZmluaXR5LCBuZXcgVWludDE2QXJyYXkoWzEsMiwzXSkpO30pOwor
ICAgIGFzc2VydE9rKCJvZmZzZXQgTmFOIiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZmZXJT
dWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBOYU4sIG5ldyBVaW50MTZBcnJheShbMSwy
LDNdKSk7fSk7CisgICAgYXNzZXJ0T2soImdvb2QgYXJncyIsCisgICAgICAgIGZ1bmN0aW9uKCl7
Z2wuYnVmZmVyU3ViRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCwgbmV3IFVpbnQxNkFy
cmF5KFsxLDIsM10pKTt9KTsKKyAgICB0aHJvd0Vycm9yKGdsLCAnYnVmZmVyRGF0YTAnKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgYXNzZXJ0RmFpbCgi
c2V0dGluZyBidWZmZXIgMCIsCisgICAgICBmdW5jdGlvbigpe2dsLmJ1ZmZlclN1YkRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCAwLCBuZXcgRmxvYXQzMkFycmF5KFsxLDIsM10pKTt9KTsKKyAgICB0aHJv
d0Vycm9yKGdsLCAnYnVmZmVyRGF0YTEnKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICBhc3NlcnRGYWlsKCJzZXR0aW5nIGJ1ZmZlciAwIiwK
KyAgICAgICAgZnVuY3Rpb24oKXtnbC5idWZmZXJTdWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCAwLCBuZXcgVWludDE2QXJyYXkoWzEsMiwzXSkpO30pOworICAgIHRocm93RXJyb3IoZ2ws
ICdidWZmZXJEYXRhMicpOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oZ2wsIGJ1Ziwg
ZWJ1ZikgeworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihl
YnVmKTsKK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsg
fTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWln
aHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0
aW9ucy9jb3B5VGV4SW1hZ2UyRC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY29weVRleEltYWdlMkQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YWFlYmYzOTZkNmUyOWI1YmI2OTA2ZTUyODRiN2NjYzlhODI4N2Nk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY29weVRleEltYWdlMkQuaHRtbApA
QCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5p
dC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4v
dW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29u
dGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHJldHVybiBbZ2xdOworfQorCitUZXN0cy5z
ZXR1cCA9IGZ1bmN0aW9uKGdsKSB7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIHZhciB0ZXhDdWJlTWFwID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQ
LCB0ZXhDdWJlTWFwKTsKKyAgcmV0dXJuIFtnbF0KK30KKworVGVzdHMudGVhcmRvd24gPSBmdW5j
dGlvbihnbCx0ZXgsIHRleEN1YmVNYXApIHsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgbnVsbCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOwor
ICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4Q3ViZU1hcCk7
Cit9CisKK1Rlc3RzLnRlc3RUZXhJbWFnZTJEID0gZnVuY3Rpb24oZ2wpIHsKKyAgZ2wuY29weVRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDEsMSwwKTsKKyAgZ2wuY29w
eVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDIsMSwwKTsKKyAgZ2wu
Y29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDEsMiwwKTsKKyAg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDE2LDE2LDAp
OworICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNSwxNSwx
LDEsMCk7CisgIHZhciB2YWxpZF90YXJnZXRzID0gWworICAgIGdsLlRFWFRVUkVfMkQsCisgICAg
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWCwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWiwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oKKyAgXTsKKyAgdmFs
aWRfdGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKKyAgICBhc3NlcnRPayhmdW5jdGlvbigp
e2dsLmNvcHlUZXhJbWFnZTJEKHQsIDAsIGdsLlJHQkEsIDAsMCwxLDEsMCk7fSk7CisgIH0pOwor
fQorVGVzdHMudGVzdFJvdW5kdHJpcCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFyIHNoID0gbmV3
IEZpbHRlcihnbCwgJ2lkZW50aXR5LWZsaXAtdmVydCcsICdpZGVudGl0eS1mcmFnJyk7CisgICAg
Z2wuY2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSg0KTsKKyAgICBnbC5y
ZWFkUGl4ZWxzKDAsMCwxLDEsZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICBh
c3NlcnRFcXVhbHMoWzI1NSwwLDAsMjU1XSwgW2J1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1Zlsz
XV0pOworICAgIC8vIHJlZCB0ZXh0dXJlCisgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDE2LDE2LDApOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLmNsZWFyQ29s
b3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICAvLyBibHVlIGZyYW1lYnVmZmVyCisgICAgZ2wucmVhZFBpeGVscygwLDAsMSwxLGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgYXNzZXJ0RXF1YWxzKFswLDAsMjU1
LDI1NV0sIFtidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdLCBidWZbM11dKTsKKyAgICBzaC5hcHBseSgp
OyAvLyBwYWludCBpdCB3aXRoIHRleHR1cmUKKyAgICBnbC5yZWFkUGl4ZWxzKDAsMCwxLDEsZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICBhc3NlcnRFcXVhbHMoWzI1NSwwLDAs
MjU1XSwgW2J1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlszXV0pOworICAgIHNoLmRlc3Ryb3ko
KTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iaWRlbnRpdHktZmxpcC12ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMiBUZXg7CisKK3Zhcnlpbmcg
dmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQoreworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4
LnMsIDEuMC1UZXgudCwgMC4wLCAwLjApOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChWZXJ0ZXgs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImlkZW50aXR5LWZyYWciIHR5cGU9Ingt
c2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0g
c2FtcGxlcjJEIFRleHR1cmU7CisKK3ZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4o
KQoreworICAgIHZlYzQgYyA9IHRleHR1cmUyRChUZXh0dXJlLCB0ZXhDb29yZDAuc3QpOworICAg
IGdsX0ZyYWdDb2xvciA9IGM7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9u
OmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0
aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvZnVuY3Rpb25zL2NvcHlUZXhJbWFnZTJEQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlv
bnMvY29weVRleEltYWdlMkRCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAyZmJjOTcxZjhmM2Nk
YjM3MzFlZTQ0ZTVmMzgzMTEyMmM5MGMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rp
b25zL2NvcHlUZXhJbWFnZTJEQmFkQXJncy5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworVGVzdHMuc3RhcnRV
bml0ID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZ2wnKTsKKyAgICB2YXIgZ2wgPSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52
YXMpKTsKKyAgICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMuc2V0dXAgPSBmdW5jdGlvbihnbCkg
eworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOworICByZXR1cm4gW2dsXQorfQorCitUZXN0cy50ZWFyZG93biA9IGZ1
bmN0aW9uKGdsLHRleCkgeworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsK
KyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCitUZXN0cy50ZXN0VGV4SW1hZ2UyRCA9IGZ1
bmN0aW9uKGdsKSB7CisgICAgYXNzZXJ0T2soImhlaWdodCA+IGJhY2tIZWlnaHQiLCBmdW5jdGlv
bigpeworICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JB
LCAwLDAsIDE3LDEsMCk7CisgICAgfSk7CisgICAgYXNzZXJ0T2soIndpZHRoID4gYmFja1dpZHRo
IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgMCwwLCAxLDE3LDApOworICAgIH0pOworICAgIGFzc2VydE9rKCJ4ICsgd2lk
dGggPiBiYWNrV2lkdGgiLCBmdW5jdGlvbigpeworICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNiwwLCAxLDEsMCk7CisgICAgfSk7CisgICAgYXNz
ZXJ0T2soInkgKyBoZWlnaHQgPiBiYWNrSGVpZ2h0IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wu
Y29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwxNiwgMSwxLDApOwor
ICAgIH0pOworICAgIGFzc2VydE9rKCJOZWdhdGl2ZSBYIiwgZnVuY3Rpb24oKXsKKyAgICAgICAg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgLTEsMCwgMSwxLDAp
OworICAgIH0pOworICAgIGFzc2VydE9rKCJOZWdhdGl2ZSBZIiwgZnVuY3Rpb24oKXsKKyAgICAg
ICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwtMSwgMSwx
LDApOworICAgIH0pOworICAgIGFzc2VydEZhaWwoIk5lZ2F0aXZlIGhlaWdodCIsIGZ1bmN0aW9u
KCl7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEs
IDAsMCwgLTEsMSwwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRGYWlsKCJOZWdhdGl2ZSB3aWR0aCIs
IGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDAsMCwgMSwtMSwwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRGYWlsKCJOb24gMCBi
b3JkZXIiLCBmdW5jdGlvbigpeworICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAwLDAsIDEsMSwxKTsKKyAgICB9KTsKKyAgICBhc3NlcnRGYWlsKCJO
ZWdhdGl2ZSBib3JkZXIiLGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsMCwgMSwxLC0xKTsKKyAgICB9KTsKKyAgICBhc3Nl
cnRPaygiR29vZCBBcmdzIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29weVRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLCAxNiwxNiwwKTsKKyAgICB9KTsKKyAgICBh
c3NlcnRGYWlsKCJOUE9UIHRleHR1cmUgdG8gPiBsZXZlbCAwIiwgZnVuY3Rpb24oKXsKKyAgICAg
ICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZ2wuUkdCQSwgMCwwLCAxNSwx
NiwwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRGYWlsKCJCYWQgdGFyZ2V0IiwgZnVuY3Rpb24oKXsK
KyAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuRkxPQVQsIDAsIGdsLlJHQkEsIDAsMCwgMTYs
MTYsMCk7CisgICAgfSk7CisgICAgYXNzZXJ0RmFpbCgiQmFkIGludGVybmFsIGZvcm1hdCIsIGZ1
bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LkZMT0FULCAwLDAsIDE2LDE2LDApOworICAgIH0pOworICAgIGFzc2VydEZhaWwoIk5lZ2F0aXZl
IGxldmVsIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgLTEsIGdsLlJHQkEsIDAsMCwgMTYsMTYsMCk7CisgICAgfSk7Cit9CisKKworVGVzdHMu
ZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0PgorPHN0eWxlPmNhbnZhc3sg
cG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPGNhbnZhcyBpZD0i
Z2wiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY29weVRleFN1YkltYWdlMkQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVu
Y3Rpb25zL2NvcHlUZXhTdWJJbWFnZTJELmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIyNjJlM2Q2OGQ3N2Vk
ZWMwOTNlNzA3OTVhY2ZlODIwNjQ2MTg5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rp
b25zL2NvcHlUZXhTdWJJbWFnZTJELmh0bWwKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworVGVzdHMuc3RhcnRVbml0
ID0gZnVuY3Rpb24gKCkgeworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykpOwor
ICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMuc2V0dXAgPSBmdW5jdGlvbihnbCkgeworICB2YXIg
dGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXgpOworICB2YXIgdGV4Q3ViZU1hcCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4Q3ViZU1hcCk7CisgIHJldHVybiBbZ2xd
Cit9CisKK1Rlc3RzLnRlYXJkb3duID0gZnVuY3Rpb24oZ2wsdGV4LHRleEN1YmVNYXApIHsKKyAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOworICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIGds
LmRlbGV0ZVRleHR1cmUodGV4Q3ViZU1hcCk7Cit9CisKKworVGVzdHMudGVzdFRleEltYWdlMkQg
PSBmdW5jdGlvbihnbCkgeworICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCAwLDAsMTYsMTYsMCk7CisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsMCwgMCwwLDEsMSk7CisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsMCwgMCwwLDIsMSk7CisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsMCwgMCwwLDEsMik7CisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsMCwgMCwwLDE2LDE2KTsKKyAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgMCwwLCAxNSwxNSwxLDEpOworICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAxLDEsIDAsMCwxNSwxNSk7CisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIDE1LDE1LCAwLDAsMSwxKTsKKyAgdmFyIHZhbGlkX3RhcmdldHMgPSBbCisg
ICAgZ2wuVEVYVFVSRV8yRCwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsCisg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAg
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWgorICBdOworICB2YWxpZF90YXJnZXRzLmZvckVhY2goZnVuY3Rpb24odCkgewor
ICAgIGFzc2VydE9rKGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKHQsIDAs
IGdsLlJHQkEsIDAsMCwxLDEsMCk7CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKHQsIDAs
IDAsMCwwLDAsMSwxKTsKKyAgICB9KTsKKyAgfSk7Cit9CitUZXN0cy50ZXN0Um91bmR0cmlwID0g
ZnVuY3Rpb24oZ2wpIHsKKyAgICB2YXIgc2ggPSBuZXcgRmlsdGVyKGdsLCAnaWRlbnRpdHktZmxp
cC12ZXJ0JywgJ2lkZW50aXR5LWZyYWcnKTsKKyAgICBnbC5jbGVhckNvbG9yKDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgdmFyIGJ1
ZiA9IG5ldyBVaW50OEFycmF5KDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwwLDEsMSxnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIGFzc2VydEVxdWFscyhbMjU1LDAsMCwyNTVd
LCBbYnVmWzBdLCBidWZbMV0sIGJ1ZlsyXSwgYnVmWzNdXSk7CisgICAgLy8gcmVkIHRleHR1cmUK
KyAgICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZ2wnKSk7CisgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsMCwwLDAsMTYsMTYpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLmNsZWFyQ29s
b3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICAvLyBibHVlIGZyYW1lYnVmZmVyCisgICAgZ2wucmVhZFBpeGVscygwLDAsMSwxLGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgYXNzZXJ0RXF1YWxzKFswLDAsMjU1
LDI1NV0sIFtidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdLCBidWZbM11dKTsKKyAgICBzaC5hcHBseSgp
OyAvLyBwYWludCB3aXRoIHRleHR1cmUKKyAgICBnbC5yZWFkUGl4ZWxzKDAsMCwxLDEsZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICBhc3NlcnRFcXVhbHMoWzI1NSwwLDAsMjU1
XSwgW2J1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlszXV0pOworICAgIHNoLmRlc3Ryb3koKTsK
K30KKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iaWRlbnRpdHktZmxpcC12ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMiBUZXg7CisKK3ZhcnlpbmcgdmVj
NCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQoreworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4LnMs
IDEuMC1UZXgudCwgMC4wLCAwLjApOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChWZXJ0ZXgsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImlkZW50aXR5LWZyYWciIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gc2Ft
cGxlcjJEIFRleHR1cmU7CisKK3ZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQor
eworICAgIHZlYzQgYyA9IHRleHR1cmUyRChUZXh0dXJlLCB0ZXhDb29yZDAuc3QpOworICAgIGds
X0ZyYWdDb2xvciA9IGM7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9uOmFi
c29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0aD0i
MTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvZnVuY3Rpb25zL2NvcHlUZXhTdWJJbWFnZTJEQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlv
bnMvY29weVRleFN1YkltYWdlMkRCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE3MGM2Yzc4ZWQ4
YTI1YWRhOGJhNmU2MjRmY2FkMzFlNTVjNTlkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVu
Y3Rpb25zL2NvcHlUZXhTdWJJbWFnZTJEQmFkQXJncy5odG1sCkBAIC0wLDAgKzEsOTYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworVGVzdHMu
c3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZ2wnKTsKKyAgICB2YXIgZ2wgPSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4
dChjYW52YXMpKTsKKyAgICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMuc2V0dXAgPSBmdW5jdGlv
bihnbCkgeworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICByZXR1cm4gW2dsXQorfQorCitUZXN0cy50
ZWFyZG93biA9IGZ1bmN0aW9uKGdsLHRleCkgeworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIG51bGwpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKworVGVzdHMudGVz
dFRleEltYWdlMkQgPSBmdW5jdGlvbihnbCkgeworICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsMCwgMTYsMTYsIDApOworICAgIGFzc2VydEdMRXJyb3Io
Z2wsIGdsLklOVkFMSURfVkFMVUUsICJ3aWR0aCA+IGRzdCB0ZXggd2lkdGgiLCBmdW5jdGlvbigp
eworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIDAs
MCwgMTcsMSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgImhlaWdodCA+IGRzdCB0ZXggaGVpZ2h0IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29w
eVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAwLDAsIDEsMTcpOworICAgIH0p
OworICAgIC8vIFRoZSBzcGVjIHNheXMgdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zIGNhbiBi
ZSBvdXQgb2YgcmFuZ2UuCisgICAgYXNzZXJ0T2soInggPiBkc3QgdGV4IHdpZHRoIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCww
LCAxNiwwLCAxLDEpOworICAgIH0pOworICAgIGFzc2VydE9rKCJ5ID4gZHN0IHRleCB3aWR0aCIs
IGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsMCwgMCwxNiwgMSwxKTsKKyAgICB9KTsKKyAgICBhc3NlcnRPaygieCA8IDAiLCBmdW5j
dGlvbigpeworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LDAsIC0xLDAsIDEsMSk7CisgICAgfSk7CisgICAgYXNzZXJ0T2soInkgPCAwIiwgZnVuY3Rpb24o
KXsKKyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAw
LC0xLCAxLDEpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFM
VUUsICJ3aWR0aCA8IDAiLCBmdW5jdGlvbigpeworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLDAsIDAsMCwgLTEsMSk7CisgICAgfSk7CisgICAgYXNzZXJ0
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImhlaWdodCA8IDAiLCBmdW5jdGlvbigpewor
ICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIDAsMCwg
MSwtMSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
InhvZmZzZXQgPCAwIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgLTEsMCwgMCwwLCAxNiwxNik7CisgICAgfSk7CisgICAgYXNzZXJ0
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInlvZmZzZXQgPCAwIiwgZnVuY3Rpb24oKXsK
KyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwtMSwgMCww
LCAxNiwxNik7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgImRpbWVuc2lvbiBvdXQgb2YgcmFuZ2UiLCBmdW5jdGlvbigpeworICAgICAgICBnbC5jb3B5
VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCA0LDAsIDAsMCwgMTYsMTYpOworICAgIH0p
OworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkaW1lbnNpb24gb3V0
IG9mIHJhbmdlIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgMCw0LCAwLDAsIDE2LDE2KTsKKyAgICB9KTsKKyAgICBhc3NlcnRPaygi
eCA8IDAgZnVsbCB3aWR0aCIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgLTEsMCwgMTYsMTYpOworICAgIH0pOworICAgIGFz
c2VydE9rKCJ5IDwgMCBmdWxsIGhlaWdodCIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlU
ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgMCwtMSwgMTYsMTYpOworICAgIH0p
OworICAgIGFzc2VydE9rKGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgMCwwLCAxNiwxNik7CisgICAgfSk7CisgICAgYXNzZXJ0
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiYmFkIHRhcmdldCIsIGZ1bmN0aW9uKCl7Cisg
ICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLkZMT0FULCAwLCAwLDAsIDAsMCwgMTYsMTYp
OworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICIiLCBm
dW5jdGlvbigpeworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAt
MSwgMCwwLCAwLDAsIDE2LDE2KTsKKyAgICB9KTsKK30KKworCitUZXN0cy5lbmRVbml0ID0gZnVu
Y3Rpb24oZ2wpIHsKK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNv
bHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjE2
IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2Z1bmN0aW9ucy9kZWxldGVCdWZmZXJCYWRBcmdzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9kZWxl
dGVCdWZmZXJCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM3MzQ0ODYzMTExZjJkYjBkZTM5MzBi
NWFhNWRkYzJmMTg1ZjZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL2RlbGV0
ZUJ1ZmZlckJhZEFyZ3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBw
bGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0
aW9uICgpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOwor
ICB2YXIgZ2wgPSBnZXRHTENvbnRleHQoY2FudmFzKTsKKyAgcmV0dXJuIFtnbF07Cit9CisKK1Rl
c3RzLnRlc3REZWxldGVCdWZmZXIgPSBmdW5jdGlvbihnbCkgeworICBhc3NlcnRUaHJvd05vR0xF
cnJvcihnbCwgIm51bWJlciAiLCBmdW5jdGlvbigpeyBnbC5kZWxldGVCdWZmZXIoMSk7IH0pOwor
ICBhc3NlcnRHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgIm51bGwiLCBmdW5jdGlvbigpeyBnbC5k
ZWxldGVCdWZmZXIobnVsbCk7IH0pOworICBhc3NlcnRUaHJvd05vR0xFcnJvcihnbCwgIjAiLCBm
dW5jdGlvbigpeyBnbC5kZWxldGVCdWZmZXIoMCk7IH0pOworICBhc3NlcnRUaHJvd05vR0xFcnJv
cihnbCwgImZhbHNlIiwgZnVuY3Rpb24oKXsgZ2wuZGVsZXRlQnVmZmVyKGZhbHNlKTsgfSk7Cisg
IGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAidHJ1ZSIsIGZ1bmN0aW9uKCl7IGdsLmRlbGV0ZUJ1
ZmZlcih0cnVlKTsgfSk7CisgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAie30iLCBmdW5jdGlv
bigpeyBnbC5kZWxldGVCdWZmZXIoe30pOyB9KTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgYXNzZXJ0VGhyb3dOb0dMRXJyb3IoZ2wsICJ0ZXggYXMgYnVmIiwgZnVuY3Rpb24o
KXsgZ2wuZGVsZXRlQnVmZmVyKHRleCk7IH0pOworICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7IGdsLmRlbGV0ZUJ1ZmZlcihidWYpOyB9KTsKKyAg
YXNzZXJ0T2soZnVuY3Rpb24oKXsgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7IH0pOworICBhc3NlcnRP
ayhmdW5jdGlvbigpeyBnbC5kZWxldGVCdWZmZXIoYnVmKTsgfSk7CisgIGFzc2VydE9rKGZ1bmN0
aW9uKCl7IGdsLmRlbGV0ZVRleHR1cmUodGV4KTsgfSk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBm
dW5jdGlvbihnbCkgeworfQorCis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9uOmFi
c29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0aD0i
MTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvZnVuY3Rpb25zL2RyYXdBcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL2RyYXdBcnJheXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZmRlZmJiNjM2YjdlZjA2ZGQ2YjkzMzA2Yzc5NmQ3ZDJlOGEwZDUx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvZHJhd0FycmF5cy5odG1sCkBAIC0w
LDAgKzEsMTEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNz
cyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3Jj
PSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNj
cmlwdCI+CisKK3ZhciB2ZXJ0cyA9IFswLjAsIDAuMCwgMC4wLCAgIDEuMCwgMC4wLCAwLjAsICAg
MC4wLCAxLjAsIDAuMF07Cit2YXIgbm9ybWFscyA9IFswLjAsIDAuMCwgMS4wLCAgIDAuMCwgMC4w
LCAxLjAsICAgMC4wLCAwLjAsIDEuMF07Cit2YXIgdGV4Y29vcmRzID0gWzAuMCwwLjAsICAxLjAs
MC4wLCAgMC4wLDEuMF07CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFw
R0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgdmFyIHByb2cgPSBuZXcgU2hhZGVy
KGdsLCAndmVydCcsICdmcmFnJyk7CisgIHByb2cudXNlKCk7CisgIHZhciBzaCA9IHByb2cuc2hh
ZGVyLnByb2dyYW07CisvLyAgIGxvZyhnbC5nZXRTaGFkZXJJbmZvTG9nKHByb2cuc2hhZGVyc1sx
XSkpOworICB2YXIgdiA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHNoLCAnVmVydGV4Jyk7CisgIHZh
ciBuID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oc2gsICdOb3JtYWwnKTsKKyAgdmFyIHQgPSBnbC5n
ZXRBdHRyaWJMb2NhdGlvbihzaCwgJ1RleCcpOworICByZXR1cm4gW2dsLHByb2csdixuLHRdOwor
fQorCitUZXN0cy5zZXR1cCA9IGZ1bmN0aW9uKGdsLCBwcm9nLCB2LG4sdCkgeworICBhc3NlcnQo
MCA9PSBnbC5nZXRFcnJvcigpKTsKKyAgcmV0dXJuIFtnbCwgcHJvZywgdixuLHRdOworfQorVGVz
dHMudGVhcmRvd24gPSBmdW5jdGlvbihnbCwgcHJvZywgdixuLHQpIHsKKyAgZ2wuZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KHYpOworICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobik7Cisg
IGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh0KTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1
bmN0aW9uKGdsLCBwcm9nLCB2LG4sdCkgeworICBwcm9nLmRlc3Ryb3koKTsKK30KKworVGVzdHMu
dGVzdERyYXdBcnJheXNWQk8gPSBmdW5jdGlvbihnbCwgcHJvZywgdixuLHQpIHsKKyAgdmFyIHZi
byA9IG5ldyBWQk8oZ2wsIHtzaXplOjMsIGRhdGE6UXVhZC52ZXJ0aWNlc30pOworICB2Ym8uZHJh
dyh2KTsKKyAgYXNzZXJ0KDAgPT0gY2hlY2tFcnJvcihnbCwgInZiby5kcmF3IikpOworICBhc3Nl
cnRPayhmdW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCA1LCAxKTt9KTsKKyAg
YXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMik7fSk7
CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYp
O30pOworICBhc3NlcnRPayhmdW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAx
LCA1KTt9KTsKKyAgdmJvLmRlc3Ryb3koKTsKKyAgYXNzZXJ0KDAgPT0gY2hlY2tFcnJvcihnbCwg
InZiby5kZXN0cm95IikpOworfQorCitUZXN0cy50ZXN0RHJhd0FycmF5c1ZCT011bHRpID0gZnVu
Y3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgIC8vIGNyZWF0ZXMgVkJPcyBmb3IgdGhlIHF1YWQg
YXJyYXlzLCBiaW5kcyB0aGVtIHdpdGgKKyAgLy8gdmVydGV4QXR0cmliUG9pbnRlciBhbmQgY2Fs
bHMgZHJhd0FycmF5cworICB2YXIgdmJvID0gbmV3IFZCTyhnbCwKKyAgICB7c2l6ZTozLCBkYXRh
OlF1YWQudmVydGljZXN9LAorICAgIHtzaXplOjMsIGRhdGE6UXVhZC5ub3JtYWxzfSwKKyAgICB7
c2l6ZToyLCBkYXRhOlF1YWQudGV4Y29vcmRzfSk7CisgIHZiby5kcmF3KHYsIG4sIHQpOworICBh
c3NlcnQoMCA9PSBjaGVja0Vycm9yKGdsLCAidmJvLmRyYXciKSk7CisgIGFzc2VydE9rKGZ1bmN0
aW9uKCl7Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDUsIDEpO30pOworICBhc3NlcnRPayhm
dW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAyKTt9KTsKKyAgYXNzZXJ0
T2soZnVuY3Rpb24oKXtnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7fSk7CisgIGFz
c2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDEsIDUpO30pOwor
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvLnZib3NbMV0pOworICBnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKG4sIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIGFzc2VydE9r
KGZ1bmN0aW9uKCl7Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDUsIDEpO30pOworICBhc3Nl
cnRPayhmdW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAyKTt9KTsKKyAg
YXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7fSk7
CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDEsIDUp
O30pOworICB2Ym8uZGVzdHJveSgpOworICBhc3NlcnQoMCA9PSBjaGVja0Vycm9yKGdsLCAidmJv
LmRlc3Ryb3kiKSk7Cit9CisKKworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0IiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CisgIGF0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKKyAgYXR0cmlidXRl
IHZlYzMgTm9ybWFsOworICBhdHRyaWJ1dGUgdmVjMiBUZXg7CisKKyAgdmFyeWluZyB2ZWM0IHRl
eENvb3JkMDsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChWZXJ0
ZXggKiBOb3JtYWwsIDEuMCk7CisgICAgdGV4Q29vcmQwID0gdmVjNChUZXgsMC4wLDAuMCkgKyBn
bF9Qb3NpdGlvbjsKKyAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KKyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgdmFyeWlu
ZyB2ZWM0IHRleENvb3JkMDsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIHZlYzQgYyA9IHRleENv
b3JkMDsKKyAgICBnbF9GcmFnQ29sb3IgPSBjOworICB9Cis8L3NjcmlwdD4KKworCis8c3R5bGU+
Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDxj
YW52YXMgaWQ9ImdsIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4KKzwvYm9keT48L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9kcmF3RWxlbWVudHMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUv
ZnVuY3Rpb25zL2RyYXdFbGVtZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYzNiYjNkMjdkZDdmOTdk
NjJmN2M1NjVjODQyODNlNzgwYWI3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9u
cy9kcmF3RWxlbWVudHMuaHRtbApAQCAtMCwwICsxLDEyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCit2YXIgdmVydHMgPSBbMC4wLCAwLjAs
IDAuMCwgICAxLjAsIDAuMCwgMC4wLCAgIDAuMCwgMS4wLCAwLjBdOwordmFyIG5vcm1hbHMgPSBb
MC4wLCAwLjAsIDEuMCwgICAwLjAsIDAuMCwgMS4wLCAgIDAuMCwgMC4wLCAxLjBdOwordmFyIHRl
eGNvb3JkcyA9IFswLjAsMC4wLCAgMS4wLDAuMCwgIDAuMCwxLjBdOwordmFyIGluZGljZXMgPSBb
MCwxLDJdCisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFwR0xDb250ZXh0
KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgdmFyIHByb2cgPSBuZXcgU2hhZGVyKGdsLCAndmVy
dCcsICdmcmFnJyk7CisgIHByb2cudXNlKCk7CisgIHZhciBzaCA9IHByb2cuc2hhZGVyLnByb2dy
YW07CisgIHZhciB2ID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oc2gsICdWZXJ0ZXgnKTsKKyAgdmFy
IG4gPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihzaCwgJ05vcm1hbCcpOworICB2YXIgdCA9IGdsLmdl
dEF0dHJpYkxvY2F0aW9uKHNoLCAnVGV4Jyk7CisgIHJldHVybiBbZ2wscHJvZyx2LG4sdF07Cit9
CisKK1Rlc3RzLnNldHVwID0gZnVuY3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgIGFzc2VydCgw
ID09IGdsLmdldEVycm9yKCkpOworICByZXR1cm4gW2dsLCBwcm9nLCB2LG4sdF07Cit9CitUZXN0
cy50ZWFyZG93biA9IGZ1bmN0aW9uKGdsLCBwcm9nLCB2LG4sdCkgeworICBnbC5kaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkodik7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShuKTsKKyAg
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHQpOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVu
Y3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgIHByb2cuZGVzdHJveSgpOworfQorCitUZXN0cy50
ZXN0RHJhd0VsZW1lbnRzVkJPID0gZnVuY3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgICAgdmFy
IHZibyA9IG5ldyBWQk8oZ2wsCisgICAgICAgICAgICAgICAgICAgICAgIHtzaXplOjMsIGRhdGE6
UXVhZC52ZXJ0aWNlc30sCisgICAgICAgICAgICAgICAgICAgICAgIHtlbGVtZW50czp0cnVlLCBk
YXRhOlF1YWQuaW5kaWNlc30pOworICB2Ym8uZHJhdyh2KTsKKyAgYXNzZXJ0KGdsLk5PX0VSUk9S
ID09IGNoZWNrRXJyb3IoZ2wsICJ2Ym8uZHJhdyIpKTsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtn
bC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA1LCBnbC5VTlNJR05FRF9TSE9SVCwgMSoyKTt9
KTsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2
LCBnbC5VTlNJR05FRF9TSE9SVCwgMCoyKTt9KTsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5k
cmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCBnbC5VTlNJR05FRF9TSE9SVCwgMioxKTt9KTsK
KyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAxLCBn
bC5VTlNJR05FRF9TSE9SVCwgNSoyKTt9KTsKKyAgdmJvLmRlc3Ryb3koKTsKKyAgYXNzZXJ0KGds
Lk5PX0VSUk9SID09IGNoZWNrRXJyb3IoZ2wsICJ2Ym8uZGVzdHJveSIpKTsKK30KKworVGVzdHMu
dGVzdERyYXdFbGVtZW50c1ZCT011bHRpID0gZnVuY3Rpb24oZ2wsIHByb2csIHYsbix0KSB7Cisg
IC8vIGNyZWF0ZXMgVkJPcyBmb3IgdGhlIHF1YWQgYXJyYXlzLCBiaW5kcyB0aGVtIHdpdGgKKyAg
Ly8gdmVydGV4QXR0cmliUG9pbnRlciBhbmQgY2FsbHMgZHJhd0VsZW1lbnRzCisgIHZhciB2Ym8g
PSBuZXcgVkJPKGdsLAorICAgICAgICAgICAgICAgICAgICB7c2l6ZTozLCBkYXRhOlF1YWQudmVy
dGljZXN9LAorICAgICAgICAgICAgICAgICAgICB7c2l6ZTozLCBkYXRhOlF1YWQubm9ybWFsc30s
CisgICAgICAgICAgICAgICAgICAgIHtzaXplOjIsIGRhdGE6UXVhZC50ZXhjb29yZHN9LAorICAg
ICAgICAgICAgICAgICAgICB7ZWxlbWVudHM6dHJ1ZSwgZGF0YTpRdWFkLmluZGljZXN9KTsKKyAg
dmJvLmRyYXcodiwgbiwgdCk7CisgIGFzc2VydChnbC5OT19FUlJPUiA9PSBjaGVja0Vycm9yKGds
LCAidmJvLmRyYXciKSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGds
LlRSSUFOR0xFUywgNSwgZ2wuVU5TSUdORURfU0hPUlQsIDEqMik7fSk7CisgIGFzc2VydE9rKGZ1
bmN0aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgZ2wuVU5TSUdORURfU0hP
UlQsIDIqMik7fSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAqMik7fSk7CisgIGFzc2VydE9rKGZ1bmN0
aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMSwgZ2wuVU5TSUdORURfU0hPUlQs
IDUqMik7fSk7CisgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY291
bnQgKyBvZmZzZXQgb3V0IG9mIHJhbmdlIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wuZHJhd0VsZW1l
bnRzKGdsLlRSSUFOR0xFUywgMSwgZ2wuVU5TSUdORURfU0hPUlQsIDYqMik7fSk7CisgIGFzc2Vy
dEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY291bnQgKyBvZmZzZXQgb3V0IG9m
IHJhbmdlIDIiLAorICAgICAgZnVuY3Rpb24oKXtnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVT
LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMSoyKTt9KTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIG51bGwpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvLnZi
b3NbMV0pOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG4sIDMsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xF
UywgNSwgZ2wuVU5TSUdORURfU0hPUlQsIDEqMik7fSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7
Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgZ2wuVU5TSUdORURfU0hPUlQsIDIqMik7
fSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywg
NiwgZ2wuVU5TSUdORURfU0hPUlQsIDAqMik7fSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wu
ZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMSwgZ2wuVU5TSUdORURfU0hPUlQsIDUqMik7fSk7
CisgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY291bnQgKyBvZmZz
ZXQgb3V0IG9mIHJhbmdlIDMiLAorICAgICAgZnVuY3Rpb24oKXtnbC5kcmF3RWxlbWVudHMoZ2wu
VFJJQU5HTEVTLCAxLCBnbC5VTlNJR05FRF9TSE9SVCwgNioyKTt9KTsKKyAgYXNzZXJ0R0xFcnJv
cihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJjb3VudCArIG9mZnNldCBvdXQgb2YgcmFuZ2Ug
NCIsCisgICAgICBmdW5jdGlvbigpe2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGds
LlVOU0lHTkVEX1NIT1JULCAxKjIpO30pOworICB2Ym8uZGVzdHJveSgpOworICBhc3NlcnQoZ2wu
Tk9fRVJST1IgPT0gY2hlY2tFcnJvcihnbCwgInZiby5kZXN0cm95IikpOworfQorCisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0idmVydCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICBhdHRy
aWJ1dGUgdmVjMyBWZXJ0ZXg7CisgIGF0dHJpYnV0ZSB2ZWMzIE5vcm1hbDsKKyAgYXR0cmlidXRl
IHZlYzIgVGV4OworCisgIHZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7CisgIHZvaWQgbWFpbigpCisg
IHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4ICogTm9ybWFsLCAxLjApOworICAgIHRl
eENvb3JkMCA9IHZlYzQoVGV4LDAuMCwwLjApICsgZ2xfUG9zaXRpb247CisgIH0KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisgIHZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7CisgIHZvaWQg
bWFpbigpCisgIHsKKyAgICB2ZWM0IGMgPSB0ZXhDb29yZDA7CisgICAgZ2xfRnJhZ0NvbG9yID0g
YzsKKyAgfQorPC9zY3JpcHQ+CisKKworPHN0eWxlPmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7
IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjEiIGhl
aWdodD0iMSI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5j
dGlvbnMvaXNUZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvaXNUZXN0cy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0YzFjYjA2MDNiMmJlMjY2YWJkOTM5ZTc0NmI4NzQ5NTRmZWNiMDUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9pc1Rlc3RzLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCitUZXN0cy5z
dGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRleHQoY2Fu
dmFzKSk7CisgIHJldHVybiBbZ2xdOworfQorCitUZXN0cy50ZXN0SXMgPSBmdW5jdGlvbihnbCkg
eworICAgIHZhciB0ZXggPSBsb2FkVGV4dHVyZShnbCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
JzJkJykpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgdmFy
IGZibyA9IG5ldyBGQk8oZ2wsIDEsIDEpOworICAgIGZiby51c2UoKTsKKyAgICB2YXIgcHJvZyA9
IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICB2YXIgc2gxID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZF
UlRFWF9TSEFERVIpOworICAgIHZhciBzaDIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRf
U0hBREVSKTsKKyAgICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7CisgICAgYXNzZXJ0KCJ0ZXgiLCBnbC5pc1RleHR1
cmUodGV4KSk7CisgICAgYXNzZXJ0KCJmYm8iLCBnbC5pc0ZyYW1lYnVmZmVyKGZiby5mYm8pKTsK
KyAgICBhc3NlcnQoInJibyIsIGdsLmlzUmVuZGVyYnVmZmVyKGZiby5yYm8pKTsKKyAgICBhc3Nl
cnQoInByb2ciLCBnbC5pc1Byb2dyYW0ocHJvZykpOworICAgIGFzc2VydCgic2gxIiwgZ2wuaXNT
aGFkZXIoc2gxKSk7CisgICAgYXNzZXJ0KCJzaDIiLCBnbC5pc1NoYWRlcihzaDIpKTsKKyAgICBh
c3NlcnQoImJ1ZiIsIGdsLmlzQnVmZmVyKGJ1ZikpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
KTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8uZmJvKTsKKyAgICBnbC5kZWxldGVSZW5k
ZXJidWZmZXIoZmJvLnJibyk7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9nKTsKKyAgICBnbC5k
ZWxldGVTaGFkZXIoc2gxKTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2gyKTsKKyAgICBnbC5kZWxl
dGVCdWZmZXIoYnVmKTsKKyAgICAvLyBOT1RFOiB3ZSBwdXJwb3NlbHkgZG8gbm90IHVuYmluZCB0
aGluZ3MuCisgICAgYXNzZXJ0KCJ0ZXgiLCAhZ2wuaXNUZXh0dXJlKHRleCkpOworICAgIGFzc2Vy
dCgiZmJvIiwgIWdsLmlzRnJhbWVidWZmZXIoZmJvLmZibykpOworICAgIGFzc2VydCgicmJvIiwg
IWdsLmlzUmVuZGVyYnVmZmVyKGZiby5yYm8pKTsKKyAgICBhc3NlcnQoInByb2ciLCAhZ2wuaXNQ
cm9ncmFtKHByb2cpKTsKKyAgICBhc3NlcnQoInNoMSIsICFnbC5pc1NoYWRlcihzaDEpKTsKKyAg
ICBhc3NlcnQoInNoMiIsICFnbC5pc1NoYWRlcihzaDIpKTsKKyAgICBhc3NlcnQoImJ1ZiIsICFn
bC5pc0J1ZmZlcihidWYpKTsKK30KKworPC9zY3JpcHQ+CisKKzxzdHlsZT5jYW52YXN7IHBvc2l0
aW9uOmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPGNhbnZhcyBpZD0iZ2wi
IHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvY2FudmFzPgorICA8Y2FudmFzIGlkPSIyZCIgd2lkdGg9
IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy9pc1Rlc3RzQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvaXNUZXN0
c0JhZEFyZ3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDc1NDgxNDBiZGY4ZGRjZmJmMjAyOWU0NTU3YThm
Yjg5Y2Q5ZWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvaXNUZXN0c0JhZEFy
Z3MuaHRtbApAQCAtMCwwICsxLDg3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
c19lbGVtZW50IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4KKzxzY3JpcHQgdHlwZT0i
YXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHNo
b3VsZFRocm93KCJnbC5pc0J1ZmZlcihnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpKSIpOworICAgIHNo
b3VsZFRocm93KCJnbC5pc0J1ZmZlcihnbC5jcmVhdGVQcm9ncmFtKCkpIik7CisgICAgc2hvdWxk
VGhyb3coImdsLmlzQnVmZmVyKGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKSIpOworICAgIHNob3Vs
ZFRocm93KCJnbC5pc0J1ZmZlcihnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUikpIik7
CisgICAgc2hvdWxkVGhyb3coImdsLmlzQnVmZmVyKGdsLmNyZWF0ZVRleHR1cmUoKSkiKTsKKwor
ICAgIHNob3VsZFRocm93KCJnbC5pc0ZyYW1lYnVmZmVyKGdsLmNyZWF0ZUJ1ZmZlcigpKSIpOwor
ICAgIHNob3VsZFRocm93KCJnbC5pc0ZyYW1lYnVmZmVyKGdsLmNyZWF0ZVByb2dyYW0oKSkiKTsK
KyAgICBzaG91bGRUaHJvdygiZ2wuaXNGcmFtZWJ1ZmZlcihnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSkiKTsKKyAgICBzaG91bGRUaHJvdygiZ2wuaXNGcmFtZWJ1ZmZlcihnbC5jcmVhdGVTaGFkZXIo
Z2wuVkVSVEVYX1NIQURFUikpIik7CisgICAgc2hvdWxkVGhyb3coImdsLmlzRnJhbWVidWZmZXIo
Z2wuY3JlYXRlVGV4dHVyZSgpKSIpOworCisgICAgc2hvdWxkVGhyb3coImdsLmlzUHJvZ3JhbShn
bC5jcmVhdGVCdWZmZXIoKSkiKTsKKyAgICBzaG91bGRUaHJvdygiZ2wuaXNQcm9ncmFtKGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkpIik7CisgICAgc2hvdWxkVGhyb3coImdsLmlzUHJvZ3JhbShnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKSkiKTsKKyAgICBzaG91bGRUaHJvdygiZ2wuaXNQcm9ncmFtKGds
LmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKSkiKTsKKyAgICBzaG91bGRUaHJvdygiZ2wu
aXNQcm9ncmFtKGdsLmNyZWF0ZVRleHR1cmUoKSkiKTsKKworICAgIHNob3VsZFRocm93KCJnbC5p
c1JlbmRlcmJ1ZmZlcihnbC5jcmVhdGVCdWZmZXIoKSkiKTsKKyAgICBzaG91bGRUaHJvdygiZ2wu
aXNSZW5kZXJidWZmZXIoZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSkiKTsKKyAgICBzaG91bGRUaHJv
dygiZ2wuaXNSZW5kZXJidWZmZXIoZ2wuY3JlYXRlUHJvZ3JhbSgpKSIpOworICAgIHNob3VsZFRo
cm93KCJnbC5pc1JlbmRlcmJ1ZmZlcihnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUikp
Iik7CisgICAgc2hvdWxkVGhyb3coImdsLmlzUmVuZGVyYnVmZmVyKGdsLmNyZWF0ZVRleHR1cmUo
KSkiKTsKKworICAgIHNob3VsZFRocm93KCJnbC5pc1NoYWRlcihnbC5jcmVhdGVCdWZmZXIoKSki
KTsKKyAgICBzaG91bGRUaHJvdygiZ2wuaXNTaGFkZXIoZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSki
KTsKKyAgICBzaG91bGRUaHJvdygiZ2wuaXNTaGFkZXIoZ2wuY3JlYXRlUHJvZ3JhbSgpKSIpOwor
ICAgIHNob3VsZFRocm93KCJnbC5pc1NoYWRlcihnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSkiKTsK
KyAgICBzaG91bGRUaHJvdygiZ2wuaXNTaGFkZXIoZ2wuY3JlYXRlVGV4dHVyZSgpKSIpOworCisg
ICAgc2hvdWxkVGhyb3coImdsLmlzVGV4dHVyZShnbC5jcmVhdGVCdWZmZXIoKSkiKTsKKyAgICBz
aG91bGRUaHJvdygiZ2wuaXNUZXh0dXJlKGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkpIik7CisgICAg
c2hvdWxkVGhyb3coImdsLmlzVGV4dHVyZShnbC5jcmVhdGVQcm9ncmFtKCkpIik7CisgICAgc2hv
dWxkVGhyb3coImdsLmlzVGV4dHVyZShnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSkiKTsKKyAgICBz
aG91bGRUaHJvdygiZ2wuaXNUZXh0dXJlKGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVS
KSkiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc0J1ZmZlcihudWxsKSIsICAgICAgICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzQnVmZmVyKHVuZGVmaW5lZCkiLCAgICAgICAiZmFs
c2UiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc0ZyYW1lYnVmZmVyKG51bGwpIiwgICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzRnJhbWVidWZmZXIodW5kZWZpbmVkKSIsICAiZmFs
c2UiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc1Byb2dyYW0obnVsbCkiLCAgICAgICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzUHJvZ3JhbSh1bmRlZmluZWQpIiwgICAgICAiZmFs
c2UiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc1JlbmRlcmJ1ZmZlcihudWxsKSIsICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzUmVuZGVyYnVmZmVyKHVuZGVmaW5lZCkiLCAiZmFs
c2UiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc1NoYWRlcihudWxsKSIsICAgICAgICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzU2hhZGVyKHVuZGVmaW5lZCkiLCAgICAgICAiZmFs
c2UiKTsKKworICAgIHNob3VsZEJlKCJnbC5pc1RleHR1cmUobnVsbCkiLCAgICAgICAgICAgImZh
bHNlIik7CisgICAgc2hvdWxkQmUoImdsLmlzVGV4dHVyZSh1bmRlZmluZWQpIiwgICAgICAiZmFs
c2UiKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIHR5cGUgY2hlY2tpbmcgZm9yIGlzWCgpIGZ1
bmN0aW9ucyIpOwordmFyIGdsID0gV2ViR0xUZXN0VXRpbHMuY3JlYXRlM0RDb250ZXh0KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXNfZWxlbWVudCIpKTsKK3J1blRlc3QoKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9yZWFkUGl4ZWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9u
cy9yZWFkUGl4ZWxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1ODliMGE4MDVmY2JlMWVlMmIzMmZhNzg2
YTU1Nzg5NWQ0YTJmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3JlYWRQaXhl
bHMuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3
cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgcmV0dXJuIFtnbF07Cit9CisK
K1Rlc3RzLnRlc3RSZWFkUGl4ZWxzID0gZnVuY3Rpb24oZ2wpIHsKKyAgdmFyIGlkID0gbmV3IFVp
bnQ4QXJyYXkoMTYgKiAxNiAqIDQpOworICBhc3NlcnRPayhmdW5jdGlvbigpe2dsLnJlYWRQaXhl
bHMoMCwwLDEsMSxnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpZCk7fSk7CisgIGFzc2VydE9r
KGZ1bmN0aW9uKCl7Z2wucmVhZFBpeGVscygwLDAsMTYsMTYsZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgaWQpO30pOworICBhc3NlcnRPayhmdW5jdGlvbigpe2dsLnJlYWRQaXhlbHMoMTUsMTUs
MSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGlkKTt9KTsKK30KK1Rlc3RzLnRlc3RSZWFk
UGl4ZWxzUkdCQSA9IGZ1bmN0aW9uKGdsKSB7CisgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMSwgMCk7
CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICB2YXIgaWQgPSBuZXcgVWludDhB
cnJheSg0KTsKKyAgZ2wucmVhZFBpeGVscygxLDIsMSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGlkKTsKKyAgYXNzZXJ0QXJyYXlFcXVhbHMoWzI1NSwgMCwgMjU1LCAwXSwgaWQpOworfQor
CitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oZ2wpIHsKK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+
Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2Fu
dmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9yZWFkUGl4ZWxzQmFkQXJncy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
bW9yZS9mdW5jdGlvbnMvcmVhZFBpeGVsc0JhZEFyZ3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDE1NWVk
NjFiZjUwMWJkZDNlNmQ3NmUwYTAzMmZlNDMxYjA0NjllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9y
ZS9mdW5jdGlvbnMvcmVhZFBpeGVsc0JhZEFyZ3MuaHRtbApAQCAtMCwwICsxLDExMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHk+Cis8Y2Fu
dmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9
ImMiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij48L2NhbnZhcz4KKzxpbWcgaWQ9ImkiPgorPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBkZWZhdWx0SW1nVXJsID0gImh0dHBzOi8vZ2V0LndlYmdsLm9yZy9jb25mb3Jt
YW5jZS1yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsKK3ZhciBsb2NhbEltZ1VybCA9ICIuLi8u
Li8uLi9yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsKKworVGVzdHMuYXV0b2luaXQgPSBmYWxz
ZTsgLy8gUHJldmVudHMgdGhlIHRlc3QgZnJvbSBydW5uaW5nIHVudGlsIHRoZSBpbWFnZSBpcyBs
b2FkZWQKKworVGVzdHMuc3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQo
Z2V0R0xDb250ZXh0KGNhbnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMudGVzdFJl
YWRQaXhlbHMgPSBmdW5jdGlvbihnbCkgeworICAvLyB3ZSBjYW4ndCBrbm93IGlmIHRoaXMgaXMg
Z29pbmcgdG8gZmFpbCBiZWNhdXNlIG9mIG5lZ2F0aXZlIHdpZHRoCisgIC8vIG9yIGJlY2F1c2Ug
dGhlIGJ1ZmZlciBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhlIGRpbWVuc2lvbnMuCisgIGFzc2VydFNv
bWVHTEVycm9yKGdsLCAibmVnYXRpdmUgd2lkdGgiLAorICAgICAgZnVuY3Rpb24oKXtnbC5yZWFk
UGl4ZWxzKDAsMCwtMSwxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgIG5l
dyBVaW50OEFycmF5KDQpKTt9KTsKKyAgYXNzZXJ0U29tZUdMRXJyb3IoZ2wsICAibmVnYXRpdmUg
aGVpZ2h0IiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wucmVhZFBpeGVscygwLDAsMSwtMSwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICBuZXcgVWludDhBcnJheSg0KSk7fSk7Cisg
IGFzc2VydE9rKCJuZWdhdGl2ZSB4IiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wucmVhZFBpeGVscygt
MSwwLDEsMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICBuZXcgVWludDhB
cnJheSg0KSk7fSk7CisgIGFzc2VydE9rKCJuZWdhdGl2ZSB5IiwKKyAgICAgIGZ1bmN0aW9uKCl7
Z2wucmVhZFBpeGVscygwLC0xLDEsMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAg
ICAgICBuZXcgVWludDhBcnJheSg0KSk7fSk7CisgIGFzc2VydE9rKCJoZWlnaHQgPiBiYWNrYnVm
ZmVyIGhlaWdodCIsCisgICAgICBmdW5jdGlvbigpe2dsLnJlYWRQaXhlbHMoMCwwLDE2LDE3LCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgIG5ldyBVaW50OEFycmF5KDE2KjE3
KjQpKTt9KTsKKyAgYXNzZXJ0T2soIndpZHRoID4gYmFja2J1ZmZlciB3aWR0aCIsCisgICAgICBm
dW5jdGlvbigpe2dsLnJlYWRQaXhlbHMoMCwwLDE3LDE2LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLAorICAgICAgICAgIG5ldyBVaW50OEFycmF5KDE3KjE2KjQpKTt9KTsKKyAgYXNzZXJ0T2so
IndpZHRoLCBoZWlnaHQgPSAwIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wucmVhZFBpeGVscygwLDAs
MCwwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgIG5ldyBVaW50OEFycmF5
KDApKTt9KTsKKyAgLy8gd2UgY2FuJ3Qga25vdyBpZiB0aGlzIGlzIGdvaW5nIHRvIGZhaWwgYmVj
YXVzZSBvZiBuZWdhdGl2ZSB3aWR0aAorICAvLyBvciBiZWNhdXNlIHRoZSBidWZmZXIgc2l6ZSBk
b2Vzbid0IG1hdGNoIHRoZSBkaW1lbnNpb25zLgorICBhc3NlcnRTb21lR0xFcnJvcihnbCwgImJh
ZCBmb3JtYXQiLAorICAgICAgZnVuY3Rpb24oKXtnbC5yZWFkUGl4ZWxzKDAsMCwxLDEsIGdsLkZM
T0FULCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgIG5ldyBVaW50OEFycmF5KDQqNCkpO30p
OworICAvLyB3ZSBjYW4ndCBrbm93IGlmIHRoaXMgaXMgZ29pbmcgdG8gZmFpbCBiZWNhdXNlIG9m
IG5lZ2F0aXZlIHdpZHRoCisgIC8vIG9yIGJlY2F1c2UgdGhlIGJ1ZmZlciBzaXplIGRvZXNuJ3Qg
bWF0Y2ggdGhlIGRpbWVuc2lvbnMuCisgIGFzc2VydFNvbWVHTEVycm9yKGdsLCAiYmFkIHR5cGUi
LAorICAgICAgZnVuY3Rpb24oKXtnbC5yZWFkUGl4ZWxzKDAsMCwxLDEsIGdsLkFMUEhBLCBnbC5G
TE9BVCwKKyAgICAgICAgICBuZXcgVWludDhBcnJheSgxKjQpKTt9KTsKK30KKworVGVzdHMudGVz
dFJlYWRQaXhlbHNTT1BJTUcgPSBmdW5jdGlvbihnbCkgeworICAgIHZhciBpbWcgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiaSIpOworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAvLyBTT1AgZmFp
bHVyZQorICAgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAidGhyb3cgYmVjYXVzZSBpbWcgaXMg
ZnJvbSBhbm90aGVyIGRvbWFpbiIsCisgICAgICBmdW5jdGlvbigpe2dsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1nKTt9
KTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBhc3NlcnRP
aygiY2FudmFzIHN0aWxsIG9yaWdpbi1jbGVhbiIsCisgICAgICBmdW5jdGlvbigpe2dsLnJlYWRQ
aXhlbHMoMCwwLDEsMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICBuZXcg
VWludDhBcnJheSg0KSk7fSk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorVGVzdHMu
dGVzdFJlYWRQaXhlbHNTT1BDYW52YXMgPSBmdW5jdGlvbihnbCkgeworICAgIHZhciBpbWcgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaSIpOworICAgIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImMiKTsKKyAgICBjLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGltZywgMCwg
MCk7CisgICAgYXNzZXJ0RmFpbCgiY2FudmFzIHRocm93cyBiZWNhdXNlIG5vdCBvcmlnaW4gY2xl
YW4iLAorICAgICAgZnVuY3Rpb24oKXtjLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKDAs
MCwxLDEpO30pOworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAvLyBTT1AgZmFpbHVyZQorICAgIGFz
c2VydFRocm93Tm9HTEVycm9yKGdsLCAidGhyb3cgYmVjYXVzZSBjYW52YXMgaXMgbm90IG9yaWdp
biBjbGVhbiIsCisgICAgICBmdW5jdGlvbigpe2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7fSk7CisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgYXNzZXJ0T2soImNhbnZhcyBzdGls
bCBvcmlnaW4tY2xlYW4iLAorICAgICAgZnVuY3Rpb24oKXtnbC5yZWFkUGl4ZWxzKDAsMCwxLDEs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoNCkp
O30pOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1
bmN0aW9uKGdsKSB7Cit9OworCisoYXN5bmMgZnVuY3Rpb24oKSB7CisgIGNvbnN0IGltZyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpJyk7CisgIHRyeSB7CisgICAgYXdhaXQgd3R1LmF3YWl0
T3JUaW1lb3V0KHd0dS5sb2FkQ3Jvc3NPcmlnaW5JbWFnZShpbWcsIGRlZmF1bHRJbWdVcmwsIGxv
Y2FsSW1nVXJsKSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICB0ZXN0RmFpbGVkKGBJbWFnZSBzZXR1
cCBmYWlsZWQgKCR7ZX0pLmApOworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0K
KyAgaW5pdFRlc3RzKCk7Cit9KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvbW9yZS9mdW5jdGlvbnMvdGV4SW1hZ2UyRC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdGV4
SW1hZ2UyRC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYThiNjMxM2Y5NTg3ZTQ2OTU5ZDM4ZmU2ZDlmYWI3
YTZiMTJhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhJbWFnZTJELmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
dW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0i
Li4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdM
Q29udGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHJldHVybiBbZ2xdOworfQorCitUZXN0
cy5zZXR1cCA9IGZ1bmN0aW9uKGdsKSB7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIHZhciB0ZXhDdWJlTWFw
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCB0ZXhDdWJlTWFwKTsKKyAgcmV0dXJuIFtnbF0KK30KKworVGVzdHMudGVhcmRvd24gPSBm
dW5jdGlvbihnbCx0ZXgsdGV4Q3ViZU1hcCkgeworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCBudWxsKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgbnVsbCk7
CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhDdWJlTWFw
KTsKK30KKworVGVzdHMudGVzdFRleEltYWdlMkQgPSBmdW5jdGlvbihnbCkgeworICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsMSwwLGdsLlJHQkEsZ2wuVU5TSUdO
RURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwxLDAsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBu
ZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwXSkpOworICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsMiwwLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbmV3
IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMF0pKTsKKyAgdmFyIHZhbGlkX3RhcmdldHMgPSBb
CisgICAgZ2wuVEVYVFVSRV8yRCwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
CisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWgorICBdOworICB2YWxpZF90YXJnZXRzLmZvckVhY2goZnVuY3Rpb24odCkg
eworICAgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wudGV4SW1hZ2UyRCh0LCAwLCBnbC5SR0JBLCAx
LDEsMCxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwXSkp
O30pOworICB9KTsKK30KKworVGVzdHMudGVzdFRleEltYWdlMkROdWxsID0gZnVuY3Rpb24oZ2wp
IHsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDEsMSwwLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbnVsbCk7fSk7Cit9CisK
K1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCkgeworfQorCis8L3NjcmlwdD4KKzxzdHlsZT5j
YW52YXN7IHBvc2l0aW9uOmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52
YXMgaWQ9ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleEltYWdlMkRCYWRBcmdzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy90ZXhJbWFnZTJEQmFkQXJncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThkMWIx
YTM0YmFjYzcyZjMxYmY3YjY5Yjc1MWQyMTFjNWIxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3Jl
L2Z1bmN0aW9ucy90ZXhJbWFnZTJEQmFkQXJncy5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0
YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2dsJyk7CisgICAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRleHQo
Y2FudmFzKSk7CisgICAgcmV0dXJuIFtnbF07Cit9CisKK1Rlc3RzLnNldHVwID0gZnVuY3Rpb24o
Z2wpIHsKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgcmV0dXJuIFtnbF0KK30KKworVGVzdHMudGVh
cmRvd24gPSBmdW5jdGlvbihnbCx0ZXgpIHsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCBudWxsKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7Cit9CisKK1Rlc3RzLnRlc3RU
ZXhJbWFnZTJEID0gZnVuY3Rpb24oZ2wpIHsKKyAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5
KDQpOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAibm90IGVu
b3VnaCBkYXRhIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAyLDEsMCxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIGRhdGEpOwor
ICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAibm90
IGVub3VnaCBkYXRhIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBnbC5SR0JBLCAxLDIsMCxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIGRhdGEp
OworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfRU5VTSwgImJhZCB0
YXJnZXQiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLkZMT0FULCAwLCBn
bC5SR0JBLCAxLDEsMCxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIH0pOwor
ICAgIGFzc2VydEdMRXJyb3JJbihnbCwgW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9WQUxV
RV0sCisgICAgICAgICAgICAgICAgICAgICJiYWQgaW50ZXJuYWwgZm9ybWF0L2Zvcm1hdCIsIGZ1
bmN0aW9uKCl7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuRkxP
QVQsIDEsMSwwLGdsLkZMT0FULGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIH0pOworICAg
IGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJib3JkZXIgPiAwIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAx
LDEsNDgsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICB9KTsKKyAgICAvLyBU
aGUgc3BlYyBzYXlzIHplcm8gc2l6ZSBpcyBPSy4gSWYgeW91IGRpc2FncmVlIHBsZWFzZSBsaXN0
IHRoZSBzZWN0aW9uCisgICAgLy8gaW4gdGhlIHNwZWMgdGhhdCBkZXRhaWxzIHRoaXMgaXNzdWUu
CisgICAgYXNzZXJ0T2soInplcm8gc2l6ZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwwLDAsZ2wuUkdCQSxnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKKyAgICB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElE
X1ZBTFVFLCAibmVnYXRpdmUgd2lkdGgiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIC0xLDEsMCxnbC5SR0JBLGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
VkFMVUUsICJuZWdhdGl2ZSBoZWlnaHQiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsLTEsMCxnbC5SR0JBLGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3JJbihnbCwgW2dsLklOVkFM
SURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAiYmFkIGZvcm1hdCIsIGZ1bmN0aW9uKCl7
CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwxLDAs
Z2wuRkxPQVQsZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xF
cnJvckluKGdsLCBbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICJiYWQg
dHlwZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgMSwxLDAsZ2wuUkdCQSxnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICB9KTsK
KyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIm5vdCBlbm91Z2gg
ZGF0YSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgMSwxLDAsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJh
eSgzKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJmb3JtYXQgYW5kIHR5cGUgaW5jb21wYXRpYmxlIixmdW5jdGlvbigpeworICAgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsMSwwLGdsLlJHQkEsZ2wu
VU5TSUdORURfU0hPUlRfNV82XzUsIG51bGwpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3Io
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZm9ybWF0IGFuZCB0eXBlIGluY29tcGF0aWJsZSIs
ZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0IsIDEsMSwwLGdsLlJHQixnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCBudWxsKTsKKyAgICB9
KTsKKworICAgIGFzc2VydFRocm93cyhnbCwgdHJ1ZSwgInRvbyBmZXcgYXJncyIsIGZ1bmN0aW9u
KCl7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwg
MiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgICAgfSk7CisgICAgYXNzZXJ0VGhy
b3dzKGdsLCBmYWxzZSwgInRvbyBtYW55IGFyZ3MiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwsIG51bGwpOworICAgIH0pOworCisgICAgYXNzZXJ0VGhyb3dz
KGdsLCB0cnVlLCAiYmFkIFRleFNvdXJjZVR5cGUiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIHdpbmRvdyk7CisgICAgfSk7CisgICAgYXNzZXJ0VGhyb3dzKGdsLCB0cnVlLCAiZmFr
ZSBUZXhTb3VyY2VUeXBlIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgdmFyIGZha2VPYmogPSB7Cisg
ICAgICAgICAgICBnZXQgd2lkdGgoKSB7IHRocm93IDcgfSwKKyAgICAgICAgICAgIGdldCBoZWln
aHQoKSB7IHRocm93IDcgfSwKKyAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OENsYW1wZWRBcnJh
eSgxMCkKKyAgICAgICAgfTsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBmYWtlT2JqKTsKKyAgICB9KTsK
K30KKworCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oZ2wpIHsKK30KKworPC9zY3JpcHQ+Cis8
c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+
Cis8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9k
eT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhJbWFnZTJESFRNTC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9mdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2M3OGQx
NjM1NzU2NWZlNjUzOGVlYmZmOWY3ZjEzMTRhZTNlOTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9y
ZS9mdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUwuaHRtbApAQCAtMCwwICsxLDE0OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJpZGVudGl0eS1m
bGlwLXZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIFZlcnRl
eDsKK2F0dHJpYnV0ZSB2ZWMyIFRleDsKKwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQg
bWFpbigpCit7CisgICAgdGV4Q29vcmQwID0gdmVjNChUZXgucywgMS4wLVRleC50LCAwLjAsIDAu
MCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgMS4wKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iaWRlbnRpdHktaGZsaXAtdmVydCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgi
PgorYXR0cmlidXRlIHZlYzMgVmVydGV4OworYXR0cmlidXRlIHZlYzIgVGV4OworCit2YXJ5aW5n
IHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkKK3sKKyAgICB0ZXhDb29yZDAgPSB2ZWM0KDEu
MC1UZXgucywgVGV4LnQsIDAuMCwgMC4wKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJpZGVudGl0eS1mcmFnIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3Jt
IHNhbXBsZXIyRCBUZXh0dXJlOworCit2YXJ5aW5nIHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWlu
KCkKK3sKKyAgICB2ZWM0IGMgPSB0ZXh0dXJlMkQoVGV4dHVyZSwgdGV4Q29vcmQwLnN0KTsKKyAg
ICBnbF9GcmFnQ29sb3IgPSBjOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImdsIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+PC9jYW52YXM+Cis8Y2FudmFzIGlk
PSJjIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+PC9jYW52YXM+Cis8aW1nIGlkPSJpIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiIgIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBL
R2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FZQUFBQmNjcWhtQUFBVFZFbEVRVlI0bk8zZCtWUFVk
NTdIY2YyYjlrOVkrejQ0K3FLN09ab0dGVkE1VmZCR3phaDljeHBOekdFT29SdWE1bEJFdWUvREs0
Zlo3TWFwbVNtM01sc2h1OHhPZENwREp0M3YvYUVCQVVIQU9NRzR6MGZWNTNmcVUvVjZmZDdmVC9l
MzJiRURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdPdkJrYXI3bCszK0d3QnNrOHhVclQwclRiOHZ4
MlE0NWphbmx1N1lzV1Buc2dYZ1RlWXdhazg1VTNYdjVaaU0zK1hiVWgvbDJkSUNCYzYwODBXWjF1
cjkyYmFTSFJRQjhHYXlHZFVXdTFIem9TTkZPK1pNMWYyY2JUTE01MWxUNXdvYzVya0RPYmJaL1Zt
MlNFbTIzVnZzeWpoVjVuSlFCc0NieEdaUVZ0bU42cDRNby9ZUGRxTkdIS2xheVVyWEo5eldsRVNo
MHhJdnpzbVlMM0haNTRwek1tNlZ1UnlSTXBmVFcrcHlVQWJBbThCbVZOVm5HTlRUZHFQNnZ6T01H
ckduYU1TWnFwTnNrMTd5YktsUzZEVEwvaXhib3RSbGo1ZmxPdWJMM0k2NU1wZmpWcm5iRWFsWUtJ
TlNsMzM1dlFHQTN3S2JVVzJ4R2RXUkRLUDY2d3lqV2hZTHdKR2lGV2VhVHJKTkJuRmJVMlNQM1NU
N3M2eFNtbXVYY3JjelVlNTJ4c3R6SGZQbGJzZGN1ZHQ1cXl6WDNsS1dseGtzelhHZUs4bXhueXpK
eVNqZVFSa0FyemViUVZsbE02cDdiVWIxNDlVRjRFalZTbWFhVHJMUzllS3lwTWdlZTdvY3lMWkpt
ZHNoRlhtWlVwSG5YRkVHQi9PekpzcmRqcUV5dC9ObVdhNDlYSmJ0OUphNk1rNFZ1N2hFQkY1TE5y
MnEzbVpRejlnTTZ1OVhGRUJxc2dDY2FUckpYSmdFY2kwcHN0ZGhrdjNaTmluTlRaYkFvZndzT1pT
ZkpRZnpNcVU4ejVrb2R6c1NaYm1PZUlYYitYVzUyekZhNW5MY0tuUFpJMlVMbDRqRmZLSUF2QjdN
T3JYRlpsQkhiQWIxMXphaitrbUdVYk51QVdTbTY1ZEtZSGRHbWhSbFdxUTh6eUZIQ25MaytMNWNP
VjZVSzBjS1hWSzVKMXNPNW1kS2hkc3BaYXZLb0RUWDBWUGljaVRMSUh0RkdWQUl3Sy9OWWxCVzJm
VHFYcHRCL2RobVNKNytMeXFBckhTOTVKaVRKVkRnTkVsbFFaWjRLZ3VscnJwVTZxdExKWEJzdjV3
dDN5TW45cnZsYUlGTERpOHZnMXhING1CKzVwK1dsMEZwanIybEpNY1JMTTZ5bnl2T3pqaHhJSXQ3
QStCWFk5R3I2cTBMNC85U0FhUm94TDd3L0w5V0FXU2JESkpyVFpGaWQ0WjRqeFpKVS8xeHVmSGhP
ZW0rZWs2aWwwL0xCNzRxYVR4VEpvR2orK1ZzMlI0NXZqOVhqaFRreU9IZEM0OEpDMlZ3YUhmbW55
cmN6bit2Y0RzbXluTHRReVU1R1RlTGN6TENwVGsyVDNHVzdWaHhWc2FlN2Q0ZjRJMWwxcWt0Vm9N
NllqT292cllhMUQ4c0ZvQjlXUUU0MTVrQTh1MXBjdlJBam53VU9pTERMUUc1MTkwbzkyNDJ5bFJI
blF5Ry9YTHo2bm1KWHFxV0QzeVYwbkM2VlB4SDk4blpzdDF5ZkYrdUhDMTBTZFhlYkRtVW55eURx
b0xzN3c3bFozNWI3bmI4c2N4dC83ZFNsMzJrSkNlanF5UW40MHBKVGtiWkRpWUM0Tld6YUpWVlZy
MnExMlpRUGJZYTFIOWZ1d0IwU3dXUWxhNlhMRk95QUFveVRmTFc0VDNTZnVXTTNMM1JJQS83TDh2
RC9zdnlaZThsK2V6VzIzS3Z1MUVtTzJwbG9Oa24zVmZQU2V2YjFmSyt0MUlhejVSSjdjbGk4UjBw
a3RPbCtYS3NLRmtHQnhmS29ISnYxbDhQNW1mK3VTTFA4ZnZ5WE1kTW1kc1JLWGM1cW90ZEdRWGJ2
Vi9BRzhXaVY5VmI5YW9acTE0MWF6T294V2JjWEFIa1dsT2tKQzlEYWs4WHk2MVBMOGlEbm90TEJi
QlVCSDJYNVl2YmwrUkJ6MFc1ZTZOQkp0cHJwTC9aSnpjL09pL1hQM2hMV2k2ZWt2YzhoNld1dWtT
OFZjL0tZUEVDOFdoaHpwT3FndXp2S3ZkbWZYVjRkMmIzd2Z6TTl3L2xaVEVOQUsrQ1dhZXdXSFdx
aUUydit0cXFWLzJ3MlFMSU5oa2tQMk5oL0s4OUltTnRJZm1pOTlLejhQY2wxNWRMNjVKODBYdEpQ
ci8xdHR5LzJTaDN1eHZrenZWNkdZK0ZwTythVjY1LzhEdUpYRHdwVnp5SHBPN1VRaG1VNU12Uklw
ZFU3YzJSUTd1ejVNUis5eCtPRmJudUhpM01pVlFWdUtvUDc4NHUydTc5QTM3VExGcGxsVlduNnJY
cVZZK3RldFdQR3hiQXNndkF2VTZUdkhWb3Q4U3VuSlk3TitybHk3NjFnLzlsYjNKOXNXeDlmdnVT
Zkg3N2JYblFjMUh1ZFRmSVRGZWRqTFdGcFBlYVI3bytlRXZDalNmbHlvVkRVbGRkS3NIakIrVEM0
VUk1Vlp3blZRVTVpYmNxOW54MXVqUy81OFFCOTlYcVluZjVEcVlCNE9WWWRNL0dmNnRlOVkvazgv
L0dCZUN5R0tYRW5TRTExUWVrNTVQemN2OW00OHJRcnhQOEwyNWZraTl1dnkyZnIxcWYzYnFZbkF4
dU5NaDBaNTJNUklOeSsxT1BYUC93ZDlKKzVZdzAxNStRZDg0ZmxKcVR4WExoY0lHY0xNNzcrVWhC
enQ4dVZCYTJucXZjZS9ac3haNnk3ZDVMNERkbGNmeTM2RlZmVy9TcUg2d0dsYXd1Z01XdkFUdlRs
aFdBeVNCNUdhbHlkSCtPZkZSelJFYWpRZm44MXR2cmgvNkZ3VjljRitXeld4Zmx3YTJMY3Ivbm90
enJicFNaNi9VeTFWVW5reDIxTXR3U2tKNVBMa2pIZTJlbHFmNjRYRDUzVUVJbkRpUXVIQzZZcnk3
T216MVc1SHJZK0ZiRjRSMU1BOERtV0xUS0tzdXk4ZDlxVUwrd0FKWi9DM0NQTTEzT0h0d3RiZStl
bHVucjlmTEZ1c0YvUHZTZjMxbzcrQTk2bnEzN1BSZmxmaytqM0wrWi9Gang3bzBHbWU2cWs0bjJH
aGxxOFV2UHgrZWwvY29adVZaM1hDNmZxL2k1N2xUeDMycE9IbmdVT2xVYy9qUjRsRXRDWUNNV25h
cmVvbGZOV1BTcVdhdEI5ZE9hQmJER2w0QmNGcU1VdTIwU09uVkFibjU4VHU1Mk4yN3F0UDk4ZzlB
L1dBejlRdkFYMTczRkV1aHVrTHZkRGNuSm9MTld4bU0xTWhqeHk4MlB6a25uKzJjU3NYZFB6NGNi
VDh4K0dLaDgrRkh3U08wT1NnQlltMW1uc0poMXFvaEZyMXdZLzVYeFp3V3cvdGVBczlLVHZ3dHda
SCsyWEExVnlYQnJVQjcwWEZ6L3RGOW56TjlLOE85MU44aTloZkF2cmpzM0d1VE9qWHFaWG5oRUdH
K3ZrZEZvVUFiRC9wOTdQajcvdDU2cjU3L3B1K2I1cE9YZDZxUGJ2ZGZBYThlaTNWVmwwYWw2TFhy
bFk0dE8rYU5GcjBwc3RnRDJPTkxsek1IZEVuMm5XcVk2NitTemx4enpIeXdiODU4TC9UckJ2M3Zq
V2ZnWDE4ejE1SnJ1cXBPcHpscVphQThseG1LaHY0OUdnMy9vRC9zKzN1NjlCbDQ3RnAyaTNxSlZ6
VmgweWxtclR2bVRWWis4QUZ6NUhzRHpCWkJqTmtweHJrMkNwdzVJOTBmbjVNNk5oaGVlOWxzT2Z2
Zm1nMy9uK3JQd3oxeXZrNW11T3BsZVdKTWR0ZkhKanBydkpqdHFLQUJndWVUNHI0aVlkY3F2emJw
ZFAxajB5dmpxQXJDdjlTSlF1bDdjdGxTcDJwY3RId1lyWmFnbElQZHZOcTUvMnIvZ1ltOVR3Yit4
OWVCUGQ5WEpWSElTbUovcXJQMW11ck9HUndCZ09aTjJWNVZGcCt5MWFCZkdmNTB5c1ZRQWEzd0hZ
TEVBc3RMMXN0dVJMcWNyOHFYMThpbVo3S2lWQnowWFh4ajZqWi92TnhuODZ4c0hQL2tJVUNkVG5Y
WHg2YzdhdjB4MTFQUnM5MTREcngyVFRsRnYwaXBtekRybHJFV24vTW1pVjhsbUNpRGJiSkFEdVRZ
Sm50d3ZONjcrVG1hdTF5ZER2bWJvdDM2eDl5ejQ5UzhaL05yRk5UL2RWZnY3cWM2Nms5dTkxOEJy
eGF4ZVBmNHI0aHNWZ0hQaDl3QnpyU2xTVlpRdEh3UXFaVERpbDd2ZGpWczc3YmNZL0ptdEIxK21P
bXNUa3gyMVQ2YTZha2UyZTYrQjE0NUp1NnZLcEZQMm1yVEt4MmJ0cy9GLzhWdUFMeXFBM2ZZME9W
MmVMeTJYVHNwRWU0M2NmOEd6L1RZRVh5WTdhbVd5b3lZKzFWSHovVlJuWGZOMjd6WHcybGthLzdY
S1dZdFcrWk5GcDVUTkZFQzJ5U0Q3WFZZSm5OZ25YUisrSmROZGRacys3WCtkNE5mS1pFZU5USGJV
ekU5MjFEeWE1UElQV0NsTnJiQ1l0Y254MzZUZDlZTlpwNGhiZEtxTkMyQmgvSzhzekpMMy9ZZGxJ
T3lUT3pjYXR2d3gzc1kzK3I4bytETFpFVXBNdE5jOG1laGcvQWVlWTFMdnFqSnBsYjBtamVLeFdh
djQwYXhWSmxZWHdGcHZBbWFtNlNUZm5pYlZaWGtTZWZ1a2pNVkNjcmQ3RXlQK2VxZjlsb0pmdTJI
d0p6cHFaS0s5UnNiYlEvSEo5dEQzazUwMWpQL0FhaWFOb3Q2a1NZNy9acTNpSjdOT0tZc1hnQzhx
Z0N5VFFmYmxXTVYvZko5MGZuQldKanRyVjR6M1d6bnRuN3ZSdi81ODZMY2EvR2NyTkQvUkhubzAy
Yzc0RDZ5UXBsWllURnBGeEtSVkxJMy9Ld3ZnK1JlQjdDbkozd0Z3V1ZMa2NHR1d2T2MvTFAzTlhw
bTVYdi9MVC90TkJuOXlFOEVmVDRZL01SNExQUmx2RHpIK0E2dVpOWXBLazNaWGIvckMrRy9TS2hL
YkxZQzhqRFE1VlpZbjRZc25aTFF0S0hkdWJDNzBteDN6ZjBud3g5dERNaDRMeVZnc0ZCK1BCYjhm
YjJmOEI1NlRybEhVcDJzVjB5YU5ZbW44MzB3QlpLWHJaVisyUlh6SDkwbkgrMmRsb3FNbVdRQ3Y0
TFIvK2VDSGxvSy9FSDRaandYbngyUEJSMlB0UWNaL1lEbVRScG1hcmxZMG1UUzd2a3JUS1A1cTBp
cCtOdXVVWXRtZ0FCeXBXbkZaakhLb0lGT3VlQTlKWDVOSHBydnFOaDM2elo3MnZ5VDRDK0ZQakxZ
Rm40ekhnb3ovd0dvbXphN2Q2WnBkTVpORzhZMUpvM2hpMWk0OC8yK2lBUEl5VXVWa3FWdWFHay9J
U0RRb005ZGYzV20vTXZnMVd3NytXQ3drWTIxQkdXMEx4a2ZiZ3QrUHhVS00vOEJxYVpwZHU5UFVp
aWFUUnZHVlNhdjR5OUluQUJzVVFHYTZYb3F5TGVJOVZpVHQ3NTJSOGZiUXFzQy80dE4raThFZmF3
dkthRFFvSTlIQS9HaGI4SnV4S09NLzhCeVQ1bDlUMDlTS1FMcEdNV1RTS3Y3VHJGVThOZXVVaWVV
RllGdjFZeUNPVksza21KUGovN3ZlZzlKN3pTTlRuYld2NkxSL0JjRmZXQ1BSUUh3a0d2akxTRFRB
bTMvQWV0TFZ5anlUUnZtT1NhdVlOT3NVMzVwMXluOXNWQUJ1VzZxY0xNMlZhdzNIWmJnMUlOTmRy
K2EwWC9zei9LMEZmelFhbE5Gb0lIbjZSd08vSDJrTDh1WWY4Q0ltemE1Q2syN1hlMmF0Y3NxaVU4
YlhMWUFValdTbTY2UXd5eXplWTRVU3UzSmF4bUtodFVQL2kwLzdtaFdoWHhIOHR2V0NINVNSYUVC
R280SEVTS3YveVdocmdNcy9ZRFBTZGNvaXMxYnh2a1duZkdyUksrTnJGWUE5UlN2WlpvTWMzT3VV
ZHp3SDVmYTFDekxSVWZOUFBlM0gxemp0MXd2KzRocHVEY1JIb29IdlI2SUJMditBelRMcmxFVm1u
ZktoUmFkOGFsM3o1OEMwNHJhbHlJbVNYTG5XY0V5R1d2MHkyVmtyVTEzUGgvNmxUdnNOZ2orNlFm
QkhXZ015M0JxUTRWYi8vSEJyNE5GSTFNL2xIN0FWRnIwcVlOR3JIbHIxcXFjMmd5cSsvRTFBWjVw
T0NyTk00amxhSUcxWFRzdG9XL0NmZDlxL1ZQQURNdHpxVHd5MytKOE1NLzRETDJYbmloSXdxdUky
bzFyc0tSckpOaG1rWXE5RExsK29rRnVmbkpmeDlwcG5vVi92Yy91dG52YXhOY2I4VFFVL0lNT3Rm
aGxxOGNlSFcvemZEMGNERjdaN0k0SGZxcDAydlNwZzA2c2UyZ3pxcHhsR1RkeWVvcEZjYTRvY0wz
SEpwL1ZIWlREaWs0bU96WTM0TDMzYWIrN0VYd3ord3ZMTkQ3Y0VibzIwQmpLM2V4T0IzN0tkTnFN
NllET29IMllZMVUrZGFicDRRYVpKTGh6Wks5RjNxMlVrR3BDSkRVLzcwS3M3N1RjTXZsK0dXbnlK
d1lqdnlWQkw0SjN0M2p6Z1RiRFRabFFITW95YWg5bG0vZE9LUGM3NHBmUGwwdlB4T1JtTGhYNmQw
MzVUd1Y5WUVWOThzTVUvTlJEbThnOTRWWGJhVTdVQmw4WDQ4RVNKNitrbjlVZCtIZ2g3RXVQdG9W
ZHoycmR0SnZRdkR2NWd4TGV3dkg4Y2lIZzdobG9DbHUzZU5PQk5zdE50U3czNGp4YzliSDJuZW5h
b3hUYzMzaDZhSDR1RjR1UHR3Y1I0OG4vdS9STk8rODBHM3lkREVkLy9ESVI5OXdiQ3ZzYnQzaXpn
VGJUemFxZ3kwUFB4dWZCSU5CQWJidzg5R28rRlpzZGpvYm54OXREY2FDdzRQOW9XakkvRmdvbXhX
Q0F4K2dwTysrRzF4dnhWd1IrTStHUXc3UDF4TU94N1BCajI5ZlpIdkZYYnZWSEFtMnJuNHByc3JL
a2Q2d2lGUjl0RHNmSDJtdGhJTFBSb3JDMDRPOVlXbWh1TmhlWkcyd0x6STlGZ2ZMUXRrQmlOQmhM
UGhmNFhuUGFMYXlEaWs0R3dUd2JDM3Y4ZGFQWStISWo0UHVwdjlqTCtBNytDbmN2WGVIdE43V2dz
R0I2TmhXS2pzVkJzSkJwOE5Cb056bzVFQTNNTGEzNjROUkFmYWZVbmhwUHI1VTc3bGNHWGdiRDM3
d05oejUvN203MGpBMkhQbVczZUUrRC9yWldGMEJhc0hXNExoa2VpZ2RoSUxCUWJiZzA4R200TnpB
NjMrT2VHVy94elE2MysrYUVXZjN5b3haZElybVdoYjNrKzlJTkxvVjhLdnZRM2UrTUR6ZDRmK3Bz
OS85RWY5cllOUkh5T2JkNERBQXRXRk1Kb1c3QjJ1RFVZSG9vR1lrUFJRR3lveGY5b3FNVTNPeFR4
elExRmZITkRMYjc1b1lndlBoanhKcFpXZU8zZ0o4UHZTZlEzZVg4YUNIdG4rNXU5TTMzTlhQNEJy
N01WaFREY0dxZ2RidldIQjF2OXNjRldmMnd3NG44MEdQSE5Eb2E5YzRNUjM5eGcyRHMzRVBiT0Q0
Uzk4WUd3SnpFUTlpVDZtNzNTMyt5VnZtYlBmSCt6Wjc2dnlmTzB2OW43cDc1bWIyOS9NNWQvd0cv
SmM0VXcxT0lQOTBmOHNjR0lQOVlmOGNjR3dyNUhBMkh2N0VDemQyNmcyVHZYbHd4OXZLL1o4MjEv
cytlLytwbzgzL1kzZVQ3cmEvWTBjZmtIL0xidFhMMkdXbnkxQTJGZnVDL3NqZldIdmJIK1pzK2p2
ckQzWm0rVFo2aTN5VFBXMSt5WjdHdnlYTzlyOXZpMzkwOEg4TSt3b2hCNm03eGx0Njk1VHc2RWZl
Y0d3MTVmZjVQbm5iNW1UNkQzMm9VRDIveDNBdmdWN2R5eFk4Zk9nU2F2dTcvSms5VjN6YXZlN2o4
SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNWL2c5dFBKRVF1MVh2bVFBQUFBQkpSVTVFcmtKZ2dnPT0i
PgorPGltZyBpZD0iaTIiPgorCis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGRlZmF1bHRJbWdVcmwgPSAiaHR0cHM6Ly9nZXQud2ViZ2wub3JnL2NvbmZvcm1hbmNlLXJl
c291cmNlcy90aHVuZGVyYmlyZC1sb2dvLTY0eDY0LnBuZyI7Cit2YXIgbG9jYWxJbWdVcmwgPSAi
Li4vLi4vLi4vcmVzb3VyY2VzL3RodW5kZXJiaXJkLWxvZ28tNjR4NjQucG5nIjsKKworVGVzdHMu
YXV0b2luaXQgPSBmYWxzZTsgLy8gUHJldmVudHMgdGhlIHRlc3QgZnJvbSBydW5uaW5nIHVudGls
IHRoZSBpbWFnZSBpcyBsb2FkZWQKKworVGVzdHMuc3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgewor
ICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgICB2YXIg
Z2wgPSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgICBnbC52aWV3cG9y
dCgwLDAsY2FudmFzLndpZHRoLGNhbnZhcy5oZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMCww
LDEsMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZF
Ul9CSVQpOworICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgcmV0dXJuIFtnbF07
Cit9CisKK1Rlc3RzLnNldHVwID0gZnVuY3Rpb24oZ2wpIHsKKyAgICB2YXIgdGV4ID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Cisg
ICAgdmFyIHRleEN1YmVNYXAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4Q3ViZU1hcCk7CisgICAgcmV0dXJuIFtnbF0KK30K
KworVGVzdHMudGVhcmRvd24gPSBmdW5jdGlvbihnbCwgdGV4LCB0ZXhDdWJlTWFwKSB7CisgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgZ2wuZGVsZXRlVGV4dHVy
ZSh0ZXgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOwor
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4Q3ViZU1hcCk7Cit9CisKK1Rlc3RzLnRlc3RUZXhJbWFn
ZTJEID0gZnVuY3Rpb24oZ2wpIHsKKyAgICBnbC5lbmFibGUoZ2wuQkxFTkQpOworICAgIHZhciBp
bWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaScpOworICAgIHZhciBjID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MnKTsKKyAgICB2YXIgY3R4ID0gYy5nZXRDb250ZXh0KCcyZCcpOwor
ICAgIGN0eC5kcmF3SW1hZ2UoaW1nLDAsMCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWcpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIp
OworICAgIHZhciBmID0gbmV3IEZpbHRlcihnbCwgJ2lkZW50aXR5LWZsaXAtdmVydCcsICdpZGVu
dGl0eS1mcmFnJyk7CisgICAgZ2wuYmxlbmRGdW5jKGdsLk9ORSwgZ2wuWkVSTyk7CisgICAgZi5h
cHBseSgpOworICAgIGYuZGVzdHJveSgpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7CisgICAgZiA9IG5l
dyBGaWx0ZXIoZ2wsICdpZGVudGl0eS1oZmxpcC12ZXJ0JywgJ2lkZW50aXR5LWZyYWcnKTsKKyAg
ICBnbC5ibGVuZEZ1bmMoZ2wuU1JDX0FMUEhBLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAg
ICBmLmFwcGx5KCk7CisgICAgZi5kZXN0cm95KCk7CisgICAgdmFyIHZhbGlkX3RhcmdldHMgPSBb
CisgICAgICAgIGdsLlRFWFRVUkVfMkQsCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWCwKKyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWSwKKyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9a
LAorICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oKKyAgICBdOworICAgIHZh
bGlkX3RhcmdldHMuZm9yRWFjaChmdW5jdGlvbih0KSB7CisgICAgICAgIGFzc2VydE9rKGZ1bmN0
aW9uKCl7Z2wudGV4SW1hZ2UyRCh0LCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBjKTt9KTsKKyAgICAgICAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC50ZXhJbWFnZTJEKHQs
IDEsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMpO30pOworICAgIH0pOwor
fQorCitUZXN0cy50ZXN0VGV4SW1hZ2UyRE5vblNPUCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFy
IGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpMicpOworICAgIHZhciBjID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKTsKKyAgICB2YXIgY3R4ID0gYy5nZXRDb250ZXh0KCcyZCcp
OworICAgIGN0eC5kcmF3SW1hZ2UoaW1nLDAsMCk7CisgICAgYXNzZXJ0VGhyb3dOb0dMRXJyb3Io
Z2wsICJ0ZXhJbWFnZTJEIHdpdGggY3Jvc3Mtb3JpZ2luIGltYWdlIHNob3VsZCB0aHJvdyBleGNl
cHRpb24uIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWcpO30pOworICAgIGFzc2Vy
dFRocm93Tm9HTEVycm9yKGdsLCAidGV4SW1hZ2UyRCB3aXRoIGRpcnR5IG9yaWdpbiBjYW52YXMg
c2hvdWxkIHRocm93IGV4Y2VwdGlvbi4iLAorICAgICAgZnVuY3Rpb24oKXtnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMp
O30pOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24oZ2wpIHsKK307CisKKyhhc3luYyBm
dW5jdGlvbigpIHsKKyAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTIn
KTsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCB3dHUuYXdhaXRPclRpbWVvdXQod3R1LmxvYWRD
cm9zc09yaWdpbkltYWdlKGltZywgZGVmYXVsdEltZ1VybCwgbG9jYWxJbWdVcmwpKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoYEltYWdlIHNldHVwIGZhaWxlZCAoJHtl
fSkuYCk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpbml0VGVzdHMoKTsKK30pKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MQmFkQXJncy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9m
dW5jdGlvbnMvdGV4SW1hZ2UyREhUTUxCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk1M2NkODg4
NDYyZWI2MTRlMTJmN2VjYzlhMDk2MmVmZTVkM2ZhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUv
ZnVuY3Rpb25zL3RleEltYWdlMkRIVE1MQmFkQXJncy5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworVGVzdHMu
c3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNh
bnZhcykpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXgpOworICByZXR1cm4gW2dsLCB0ZXhdOworfQorCitUZXN0cy50
ZXN0VGV4SW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdiJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKTsKKyAgICBhc3Nl
cnRGYWlsKCJiYWQgZWxlbWVudCBiIiwKKyAgICAgICAgZnVuY3Rpb24oKSB7Z2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBi
KTsgfSk7CisgICAgYXNzZXJ0RmFpbCgiYmFkIGVsZW1lbnQgZGl2IiwKKyAgICAgICAgZnVuY3Rp
b24oKSB7Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBkaXYpOyB9KTsKKyAgICBhc3NlcnRGYWlsKCJubyBlbGVtZW50IiwK
KyAgICAgICAgZnVuY3Rpb24oKSB7Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsgfSk7CisgICAgYXNzZXJ0RmFpbCgi
c3RyaW5nIGFzIGRhdGEiLAorICAgICAgICBmdW5jdGlvbigpIHtnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsICJmb28iKTsg
fSk7CisgICAgYXNzZXJ0T2soImNhbnZhcyBhcyBkYXRhIiwKKyAgICAgICAgIGZ1bmN0aW9uKCkg
e2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgYyk7IH0pOworICAgIGFzc2VydEZhaWwoImJhZCB0YXJnZXQiLAorICAgICAg
ICBmdW5jdGlvbigpIHtnbC50ZXhJbWFnZTJEKGdsLkZMT0FULCAwLCBnbC5SR0JBLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBjKTsgfSk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlv
bihnbCwgdGV4KSB7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7Cisg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7
IHBvc2l0aW9uOmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9
ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iYyIgd2lk
dGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJELmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhT
dWJJbWFnZTJELmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYwOTEyYWE4Zjc1ZGQ1MWQ4M2M2Nzg3MmZjMzA4
OTE3MzBiZTM2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdl
MkQuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3
cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgcmV0dXJuIFtnbF07Cit9CisK
K1Rlc3RzLnNldHVwID0gZnVuY3Rpb24oZ2wpIHsKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgdmFyIHRleEN1
YmVNYXAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
Q1VCRV9NQVAsIHRleEN1YmVNYXApOworICByZXR1cm4gW2dsXQorfQorCitUZXN0cy50ZWFyZG93
biA9IGZ1bmN0aW9uKGdsLHRleCx0ZXhDdWJlTWFwKSB7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIG51bGwpOworICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOworICBnbC5kZWxldGVUZXh0dXJlKHRleEN1
YmVNYXApOworfQorCitUZXN0cy50ZXN0VGV4U3ViSW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7Cisg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwyLDAsZ2wuUkdCQSxn
bC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsMF0pKTsKKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIDEs
MSxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwXSkpOwor
ICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgMiwxLGdsLlJHQkEsZ2wu
VU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMF0pKTsKKyAgZ2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIDEsMixnbC5SR0JBLGdsLlVOU0lH
TkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSk7CisgIGdsLnRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwwLCAxLDEsZ2wuUkdCQSxnbC5VTlNJR05FRF9C
WVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMF0pKTsKKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCAwLDEsIDEsMSxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50
OEFycmF5KFswLDAsMCwwXSkpOworICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDEsMSwgMSwxLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCww
LDBdKSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSxnbC5SR0JBLCAxLDEsMCxn
bC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwXSkpOworICBn
bC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIDAsMCwgMSwxLGdsLlJHQkEsZ2wuVU5T
SUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgIHZhciB2YWxpZF90YXJn
ZXRzID0gWworICAgIGdsLlRFWFRVUkVfMkQsCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwKKyAgICBnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwKKyAgICBnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1oKKyAgXTsKKyAgdmFsaWRfdGFyZ2V0cy5mb3JFYWNoKGZ1bmN0
aW9uKHQpIHsKKyAgICBhc3NlcnRPayhmdW5jdGlvbigpeworICAgICAgICBnbC50ZXhJbWFnZTJE
KHQsIDAsIGdsLlJHQkEsIDEsMSwwLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4
QXJyYXkoWzAsMCwwLDBdKSk7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQodCwgMCwgMCwwLCAx
LDEsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMF0pKTsK
KyAgICB9KTsKKyAgfSk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCkgeworfQor
Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9uOmFic29sdXRlOyB9PC9zdHlsZT4K
KzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwv
Y2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1
YkltYWdlMkRCYWRBcmdzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJEQmFkQXJn
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1NzM2MDdiM2I3M2JlMGU5NmEwNWE0ZWE4NGRjMjY3ZjhjYzJh
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJEQmFkQXJn
cy5odG1sCkBAIC0wLDAgKzEsMTE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgICAgdmFyIGds
ID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7CisgICAgcmV0dXJuIFtnbF07
Cit9CisKK1Rlc3RzLnNldHVwID0gZnVuY3Rpb24oZ2wpIHsKKyAgICB2YXIgdGV4ID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Cisg
ICAgcmV0dXJuIFtnbF0KK30KKworVGVzdHMudGVhcmRvd24gPSBmdW5jdGlvbihnbCx0ZXgpIHsK
KyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleCk7Cit9CisKK1Rlc3RzLnRlc3RUZXhJbWFnZTJEID0gZnVuY3Rpb24oZ2wpIHsK
KyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsMiwwLGdsLlJH
QkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwLDBdKSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJub3QgZW5vdWdoIGRhdGEiLCBmdW5jdGlvbigpeworICAgICAgICBnbC50ZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsMCwgMCwgMiwxLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwg
bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJub3QgZW5vdWdoIGRhdGEiLCBmdW5jdGlvbigpewor
ICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsMCwgMCwgMSwyLGdsLlJH
QkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgICAgfSk7
CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiYmFkIHRhcmdldCIsIGZ1
bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuRkxPQVQsIDAsIDAsMCwgMSwx
LGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7Cisg
ICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIndpZHRoIG91
dCBvZiByYW5nZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwwLCAwLCAzLDEsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhB
cnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xF
cnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImhlaWdodCBvdXQgb2YgcmFuZ2UiLCBmdW5jdGlv
bigpeworICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsMCwgMCwgMSwz
LGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwXSkpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
VkFMVUUsICJkaW1lbnNpb24gb3V0IG9mIHJhbmdlIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELDAsIDEsMSwgMiwxLCBnbC5SR0JBLGdsLlVOU0lH
TkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pKTsKKyAg
ICB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGltZW5zaW9u
IG91dCBvZiByYW5nZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwwLCAxLDEsIDEsMiwgZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWlu
dDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0
T2soInplcm8gc2l6ZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwwLCAwLCAwLDAsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWlu
dDhBcnJheShbMCwwLDAsMF0pKTsKKyAgICB9KTsKKyAgICBhc3NlcnRTb21lR0xFcnJvcihnbCwg
Im5lZ2F0aXZlIHdpZHRoIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLDAsIDAsIC0xLDEsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBuZXcg
VWludDhBcnJheShbMCwwLDAsMF0pKTsKKyAgICB9KTsKKyAgICBhc3NlcnRTb21lR0xFcnJvcihn
bCwgIm5lZ2F0aXZlIGhlaWdodCIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwwLCAwLCAxLC0xLGdsLlJHQkEsZ2wuVU5TSUdORURfQllURSwg
bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgIm5lZ2F0aXZlIHgiLCBmdW5jdGlvbigpeworICAgICAgICBn
bC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsLTEsMSwxLDEsZ2wuUkdCQSxnbC5VTlNJ
R05FRF9CWVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMF0pKTsKKyAgICB9KTsKKyAgICBhc3Nl
cnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibmVnYXRpdmUgeSIsIGZ1bmN0aW9uKCl7
CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwxLC0xLDEsMSxnbC5S
R0JBLGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCwwXSkpOworICAgIH0p
OworICAgIGFzc2VydEdMRXJyb3JJbihnbCwgW2dsLklOVkFMSURfT1BFUkFUSU9OLCBnbC5JTlZB
TElEX0VOVU1dLCAiYmFkIGZvcm1hdCIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAxLDEsZ2wuRkxPQVQsZ2wuVU5TSUdORURfQllU
RSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJv
ckluKGdsLCBbZ2wuSU5WQUxJRF9PUEVSQVRJT04sIGdsLklOVkFMSURfRU5VTV0sICJiYWQgdHlw
ZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgMCwwLCAxLDEsZ2wuUkdCQSxnbC5URVhUVVJFXzJELCBuZXcgVWludDhBcnJheShbMCwwLDAs
MF0pKTsKKyAgICB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgIm5vdCBlbm91Z2ggZGF0YSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGdsLnRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAxLDEsZ2wuUkdCQSxnbC5VTlNJR05FRF9CWVRFLCBu
ZXcgVWludDhBcnJheShbMCwwLDBdKSk7CisgICAgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggaW50ZXJuYWwgZm9y
bWF0IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCAwLDAsIDEsMSxnbC5SR0IsZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAs
MCwwXSkpOworICAgIH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCIsIGZ1bmN0aW9uKCl7CisgICAgICAg
IGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAxLDEsZ2wuUkdCQSxnbC5V
TlNJR05FRF9TSE9SVF80XzRfNF80LCBuZXcgVWludDE2QXJyYXkoWzBdKSk7CisgICAgfSk7CisK
KyAgICBhc3NlcnRUaHJvd3MoZ2wsIHRydWUsICJ0b28gZmV3IGFyZ3MiLCBmdW5jdGlvbigpewor
ICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIH0pOworICAgIGFzc2VydFRocm93cyhnbCwg
ZmFsc2UsICJ0b28gbWFueSBhcmdzIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgZ2wudGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMF0pLCBudWxsKTsKKyAgICB9KTsKKworICAgIGFz
c2VydFRocm93cyhnbCwgdHJ1ZSwgImJhZCBUZXhTb3VyY2VUeXBlIiwgZnVuY3Rpb24oKXsKKyAg
ICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCB3aW5kb3cpOworICAgIH0pOworICAgIGFzc2VydFRocm93cyhnbCwg
dHJ1ZSwgImZha2UgVGV4U291cmNlVHlwZSIsIGZ1bmN0aW9uKCl7CisgICAgICAgIHZhciBmYWtl
T2JqID0geworICAgICAgICAgICAgZ2V0IHdpZHRoKCkgeyB0aHJvdyA3IH0sCisgICAgICAgICAg
ICBnZXQgaGVpZ2h0KCkgeyB0aHJvdyA3IH0sCisgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhD
bGFtcGVkQXJyYXkoMTApCisgICAgICAgIH07CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZmFrZU9iaik7
CisgICAgfSk7Cit9CisKKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwv
c2NyaXB0PgorPHN0eWxlPmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9o
ZWFkPjxib2R5PgorPGNhbnZhcyBpZD0iZ2wiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52
YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdGV4U3ViSW1h
Z2UyREhUTUwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGY4ZWMyYWEwOTdiMWZkMzE0ZTgxNzVjNzE1YWMzYmVmMDE2NmYzOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwKQEAgLTAs
MCArMSwxNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9
Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iaWRlbnRpdHktZmxpcC12ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMiBUZXg7CisKK3ZhcnlpbmcgdmVj
NCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQoreworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4LnMs
IDEuMC1UZXgudCwgMC4wLCAwLjApOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChWZXJ0ZXgsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImlkZW50aXR5LWhmbGlwLXZlcnQiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKK2F0dHJpYnV0ZSB2
ZWMyIFRleDsKKwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFpbigpCit7CisgICAg
dGV4Q29vcmQwID0gdmVjNCgxLjAtVGV4LnMsIFRleC50LCAwLjAsIDAuMCk7CisgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KFZlcnRleCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iaWRl
bnRpdHktZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKKwordmFyeWluZyB2ZWM0IHRl
eENvb3JkMDsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCBjID0gdGV4dHVyZTJEKFRleHR1cmUs
IHRleENvb3JkMC5zdCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gYzsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPjxib2R5PgorPGNhbnZhcyBpZD0iZ2wiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48L2Nh
bnZhcz4KKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48L2NhbnZhcz4K
KzxpbWcgaWQ9ImkiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiAgc3JjPSJkYXRhOmltYWdlL3Bu
ZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFU
VkVsRVFWUjRuTzNkK1ZQVWQ1N0hjZjJiOWs5WSt6NDQrcUs3T1pvR0ZWQTVWZkJHemFoOWN4cE56
R0VPb1J1YTVsQkV1ZS9ESzRmWjdNYXBtU20zTWxzaHU4eE9kQ3BESnQzdi9hRUJBVUhBT01HNHow
ZlY1M2ZxVS9WNmZkN2ZUL2UzMmJFREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd092QmthcjdsKzMr
R3dCc2s4eFVyVDByVGI4dngyUTQ1amFubHU3WXNXUG5zZ1hnVGVZd2FrODVVM1h2NVppTTMrWGJV
aC9sMmRJQ0JjNjA4MFdaMXVyOTJiYVNIUlFCOEdheUdkVVd1MUh6b1NORk8rWk0xZjJjYlRMTTUx
bFQ1d29jNXJrRE9iYlovVm0yU0VtMjNWdnN5amhWNW5KUUJzQ2J4R1pRVnRtTjZwNE1vL1lQZHFO
R0hLbGF5VXJYSjl6V2xFU2gweEl2enNtWUwzSFo1NHB6TW02VnVSeVJNcGZUVytweVVBYkFtOEJt
Vk5WbkdOVFRkcVA2dnpPTUdyR25hTVNacXBOc2sxN3liS2xTNkRUTC9peGJvdFJsajVmbE91Ykwz
STY1TXBmalZybmJFYWxZS0lOU2wzMzV2UUdBM3dLYlVXMnhHZFdSREtQNjZ3eWpXaFlMd0pHaUZX
ZWFUckpOQm5GYlUyU1AzU1Q3czZ4U21tdVhjcmN6VWU1MnhzdHpIZlBsYnNkY3VkdDVxeXpYM2xL
V2x4a3N6WEdlSzhteG55ekp5U2plUVJrQXJ6ZWJRVmxsTTZwN2JVYjE0OVVGNEVqVlNtYWFUckxT
OWVLeXBNZ2VlN29jeUxaSm1kc2hGWG1aVXBIblhGRUdCL096SnNyZGpxRXl0L05tV2E0OVhKYnQ5
SmE2TWs0VnU3aEVCRjVMTnIycTNtWlF6OWdNNnU5WEZFQnFzZ0NjYVRySlhKZ0VjaTBwc3RkaGt2
M1pOaW5OVFpiQW9md3NPWlNmSlFmek1xVTh6NWtvZHpzU1pibU9lSVhiK1hXNTJ6RmE1bkxjS25Q
WkkyVUxsNGpGZktJQXZCN01PclhGWmxCSGJBYjExemFqK2ttR1ViTnVBV1NtNjVkS1lIZEdtaFJs
V3FROHp5RkhDbkxrK0w1Y09WNlVLMGNLWFZLNUoxc081bWRLaGRzcFphdktvRFRYMFZQaWNpVExJ
SHRGR1ZBSXdLL05ZbEJXMmZUcVhwdEIvZGhtU0o3K0x5cUFySFM5NUppVEpWRGdORWxsUVpaNEtn
dWxycnBVNnF0TEpYQnN2NXd0M3lNbjlydmxhSUZMRGk4dmcxeEg0bUIrNXArV2wwRnBqcjJsSk1j
UkxNNnlueXZPempoeElJdDdBK0JYWTlHcjZxMEw0LzlTQWFSb3hMN3cvTDlXQVdTYkRKSnJUWkZp
ZDRaNGp4WkpVLzF4dWZIaE9lbStlazZpbDAvTEI3NHFhVHhUSm9HaisrVnMyUjQ1dmo5WGpoVGt5
T0hkQzQ4SkMyVndhSGZtbnlyY3puK3ZjRHNteW5MdFF5VTVHVGVMY3pMQ3BUazJUM0dXN1ZoeFZz
YWU3ZDRmNEkxbDFxa3RWb002WWpPb3ZyWWExRDhzRm9COVdRRTQxNWtBOHUxcGN2UkFqbndVT2lM
RExRRzUxOTBvOTI0MnlsUkhuUXlHL1hMejZubUpYcXFXRDN5VjBuQzZWUHhIOThuWnN0MXlmRit1
SEMxMFNkWGViRG1Vbnl5RHFvTHM3dzdsWjM1YjduYjhzY3h0LzdkU2wzMmtKQ2VqcXlRbjQwcEpU
a2JaRGlZQzROV3phSlZWVnIycTEyWlFQYllhMUg5ZnV3QjBTd1dRbGE2WExGT3lBQW95VGZMVzRU
M1NmdVdNM0wzUklBLzdMOHZEL3N2eVplOGwrZXpXMjNLdnUxRW1PMnBsb05rbjNWZlBTZXZiMWZL
K3QxSWF6NVJKN2NsaThSMHBrdE9sK1hLc0tGa0dCeGZLb0hKdjFsOFA1bWYrdVNMUDhmdnlYTWRN
bWRzUktYYzVxb3RkR1FYYnZWL0FHOFdpVjlWYjlhb1pxMTQxYXpPb3hXYmNYQUhrV2xPa0pDOURh
azhYeTYxUEw4aURub3RMQmJCVUJIMlg1WXZibCtSQnowVzVlNk5CSnRwcnBML1pKemMvT2kvWFAz
aExXaTZla3ZjOGg2V3V1a1M4VmMvS1lQRUM4V2hoenBPcWd1enZLdmRtZlhWNGQyYjN3ZnpNOXcv
bFpURU5BSytDV2Fld1dIV3FpRTJ2K3RxcVYvMncyUUxJTmhra1AyTmgvSzg5SW1OdElmbWk5OUt6
OFBjbDE1ZEw2NUo4MFh0SlByLzF0dHkvMlNoM3V4dmt6dlY2R1krRnBPK2FWNjUvOER1SlhEd3BW
enlIcE83VVFobVU1TXZSSXBkVTdjMlJRN3V6NU1SKzl4K09GYm51SGkzTWlWUVZ1S29QNzg0dTJ1
NzlBMzdUTEZwbGxWV242clhxVlkrdGV0V1BHeGJBc2d2QXZVNlR2SFZvdDhTdW5KWTdOK3JseTc2
MWcvOWxiM0o5c1d4OWZ2dVNmSDc3YlhuUWMxSHVkVGZJVEZlZGpMV0ZwUGVhUjdvK2VFdkNqU2Zs
eW9WRFVsZGRLc0hqQitUQzRVSTVWWnduVlFVNWliY3E5bngxdWpTLzU4UUI5OVhxWW5mNURxWUI0
T1ZZZE0vR2Y2dGU5WS9rOC8vR0JlQ3lHS1hFblNFMTFRZWs1NVB6Y3Y5bTQ4clFyeFA4TDI1Zmtp
OXV2eTJmcjFxZjNicVluQXh1Tk1oMFo1Mk1SSU55KzFPUFhQL3dkOUorNVl3MDE1K1FkODRmbEpx
VHhYTGhjSUdjTE03NytVaEJ6dDh1VkJhMm5xdmNlL1pzeFo2eTdkNUw0RGRsY2Z5MzZGVmZXL1Nx
SDZ3R2xhd3VnTVd2QVR2VGxoV0F5U0I1R2FseWRIK09mRlJ6UkVhalFmbjgxdHZyaC82RndWOWNG
K1d6V3hmbHdhMkxjci9ub3R6cmJwU1o2L1V5MVZVbmt4MjFNdHdTa0o1UExrakhlMmVscWY2NFhE
NTNVRUluRGlRdUhDNllyeTdPbXoxVzVIclkrRmJGNFIxTUE4RG1XTFRLS3N1eThkOXFVTCt3QUpa
L0MzQ1BNMTNPSHR3dGJlK2VsdW5yOWZMRnVzRi9QdlNmMzFvNytBOTZucTM3UFJmbGZrK2ozTCta
L0ZqeDdvMEdtZTZxazRuMkdobHE4VXZQeCtlbC9jb1p1VlozWEM2ZnEvaTU3bFR4MzJwT0huZ1VP
bFVjL2pSNGxFdENZQ01XbmFyZW9sZk5XUFNxV2F0QjlkT2FCYkRHbDRCY0ZxTVV1MjBTT25WQWJu
NThUdTUyTjI3cXRQOThnOUEvV0F6OVF2QVgxNzNGRXVodWtMdmREY25Kb0xOV3htTTFNaGp4eTgy
UHprbm4rMmNTc1hkUHo0Y2JUOHgrR0toOCtGSHdTTzBPU2dCWW0xbW5zSmgxcW9oRnIxd1kvNVh4
WndXdy90ZUFzOUtUdnd0d1pIKzJYQTFWeVhCclVCNzBYRnovdEY5bnpOOUs4TzkxTjhpOWhmQXZy
anMzR3VUT2pYcVpYbmhFR0crdmtkRm9VQWJEL3A5N1BqNy90NTZyNTcvcHUrYjVwT1hkNnFQYnZk
ZkFhOGVpM1ZWbDBhbDZMWHJsWTR0TythTkZyMHBzdGdEMk9OTGx6TUhkRW4ybldxWTY2K1N6bHh6
ekh5d2I4NThML1RyQnYzdmpXZmdYMTh6MTVKcnVxcE9wemxxWmFBOGx4bUtodjQ5R2czL29EL3Mr
M3U2OUJsNDdGcDJpM3FKVnpWaDB5bG1yVHZtVFZaKzhBRno1SHNEekJaQmpOa3B4cmsyQ3B3NUk5
MGZuNU02TmhoZWU5bHNPZnZmbWczL24rclB3ejF5dms1bXVPcGxlV0pNZHRmSEpqcHJ2Smp0cUtB
Qmd1ZVQ0cjRpWWRjcXZ6YnBkUDFqMHl2anFBckN2OVNKUXVsN2N0bFNwMnBjdEh3WXJaYWdsSVBk
dk5xNS8yci9nWW05VHdiK3g5ZUJQZDlYSlZISVNtSi9xclAxbXVyT0dSd0JnT1pOMlY1VkZwK3kx
YUJmR2Y1MHlzVlFBYTN3SFlMRUFzdEwxc3R1UkxxY3I4cVgxOGltWjdLaVZCejBYWHhqNmpaL3ZO
eG44NnhzSFAva0lVQ2RUblhYeDZjN2F2MHgxMVBSczkxNERyeDJUVGxGdjBpcG16RHJsckVXbi9N
bWlWOGxtQ2lEYmJKQUR1VFlKbnR3dk42NytUbWF1MXlkRHZtYm90MzZ4OXl6NDlTOFovTnJGTlQv
ZFZmdjdxYzY2azl1OTE4QnJ4YXhlUGY0cjRoc1ZnSFBoOXdCenJTbFNWWlF0SHdRcVpURGlsN3Zk
alZzNzdiY1kvSm10QjErbU9tc1RreDIxVDZhNmFrZTJlNitCMTQ1SnU2dktwRlAybXJUS3gyYnRz
L0YvOFZ1QUx5cUEzZlkwT1YyZUx5MlhUc3BFZTQzY2Y4R3ovVFlFWHlZN2FtV3lveVkrMVZIei9W
Um5YZk4yN3pYdzJsa2EvN1hLV1l0VytaTkZwNVRORkVDMnlTRDdYVllKbk5nblhSKytKZE5kZFpz
KzdYK2Q0TmZLWkVlTlRIYlV6RTkyMUR5YTVQSVBXQ2xOcmJDWXRjbngzNlRkOVlOWnA0aGJkS3FO
QzJCaC9LOHN6SkwzL1lkbElPeVRPemNhdHZ3eDNzWTMrcjhvK0RMWkVVcE10TmM4bWVoZy9BZWVZ
MUx2cWpKcGxiMG1qZUt4V2F2NDBheFZKbFlYd0ZwdkFtYW02U1RmbmliVlpYa1NlZnVrak1WQ2Ny
ZDdFeVArZXFmOWxvSmZ1Mkh3SnpwcVpLSzlSc2JiUS9ISjl0RDNrNTAxalAvQWFpYU5vdDZrU1k3
L1pxM2lKN05PS1lzWGdDOHFnQ3lUUWZibFdNVi9mSjkwZm5CV0pqdHJWNHozV3pudG43dlJ2LzU4
NkxjYS9HY3JORC9SSG5vMDJjNzRENnlRcGxaWVRGcEZ4S1JWTEkzL0t3dmcrUmVCN0NuSjN3RndX
VkxrY0dHV3ZPYy9MUDNOWHBtNVh2L0xUL3ROQm45eUU4RWZUNFkvTVI0TFBSbHZEekgrQTZ1Wk5Z
cEtrM1pYYi9yQytHL1NLaEtiTFlDOGpEUTVWWlluNFlzblpMUXRLSGR1YkM3MG14M3pmMG53eDl0
RE1oNEx5VmdzRkIrUEJiOGZiMmY4QjU2VHJsSFVwMnNWMHlhTlltbjgzMHdCWktYclpWKzJSWHpI
OTBuSCsyZGxvcU1tV1FDdjRMUi8rZUNIbG9LL0VINFpqd1hueDJQQlIyUHRRY1ovWURtVFJwbWFy
bFkwbVRTN3ZrclRLUDVxMGlwK051dVVZdG1nQUJ5cFduRlpqSEtvSUZPdWVBOUpYNU5IcHJ2cU5o
MzZ6WjcydnlUNEMrRlBqTFlGbjR6SGdvei93R29temE3ZDZacGRNWk5HOFkxSm8zaGkxaTQ4LzIr
aUFQSXlVdVZrcVZ1YUdrL0lTRFFvTTlkZjNXbS9NdmcxV3c3K1dDd2tZMjFCR1cwTHhrZmJndCtQ
eFVLTS84QnFhWnBkdTlQVWlpYVRSdkdWU2F2NHk5SW5BQnNVUUdhNlhvcXlMZUk5VmlUdDc1MlI4
ZmJRcXNDLzR0TitpOEVmYXd2S2FEUW9JOUhBL0doYjhKdXhLT00vOEJ5VDVsOVQwOVNLUUxwR01X
VFNLdjdUckZVOE5ldVVpZVVGWUZ2MVl5Q09WSzNrbUpQai83dmVnOUo3elNOVG5iV3Y2TFIvQmNG
ZldDUFJRSHdrR3ZqTFNEVEFtMy9BZXRMVnlqeVRSdm1PU2F1WU5Pc1UzNXAxeW45c1ZBQnVXNnFj
TE0yVmF3M0haYmcxSU5OZHIrYTBYL3N6L0swRmZ6UWFsTkZvSUhuNlJ3Ty9IMmtMOHVZZjhDSW16
YTVDazI3WGUyYXRjc3FpVThiWExZQVVqV1NtNjZRd3l5emVZNFVTdTNKYXhtS2h0VVAvaTAvN21o
V2hYeEg4dHZXQ0g1U1JhRUJHbzRIRVNLdi95V2hyZ01zL1lEUFNkY29pczFieHZrV25mR3JSSytO
ckZZQTlSU3ZaWm9NYzNPdVVkendINWZhMUN6TFJVZk5QUGUzSDF6anQxd3YrNGhwdURjUkhvb0h2
UjZJQkx2K0F6VExybEVWbW5mS2hSYWQ4YWwzejU4QzA0cmFseUltU1hMbldjRXlHV3YweTJWa3JV
MTNQaC82bFR2c05nais2UWZCSFdnTXkzQnFRNFZiLy9IQnI0TkZJMU0vbEg3QVZGcjBxWU5Hckhs
cjFxcWMyZ3lxKy9FMUFaNXBPQ3JOTTRqbGFJRzFYVHN0b1cvQ2ZkOXEvVlBBRE10enFUd3kzK0o4
TU0vNERMMlhuaWhJd3F1STJvMXJzS1JySk5obWtZcTlETGwrb2tGdWZuSmZ4OXBwbm9WL3ZjL3V0
bnZheE5jYjhUUVUvSU1PdGZobHE4Y2VIVy96ZkQwY0RGN1o3STRIZnFwMDJ2U3BnMDZzZTJnenFw
eGxHVGR5ZW9wRmNhNG9jTDNISnAvVkhaVERpazRtT3pZMzRMMzNhYis3RVh3eit3dkxORDdjRWJv
MjBCakszZXhPQjM3S2ROcU02WURPb0gyWVkxVStkYWJwNFFhWkpMaHpaSzlGM3EyVWtHcENKRFUv
NzBLczc3VGNNdmwrR1dueUp3WWp2eVZCTDRKM3QzanpnVGJEVFpsUUhNb3lhaDlsbS9kT0tQYzc0
cGZQbDB2UHhPUm1MaFg2ZDAzNVR3VjlZRVY5OHNNVS9OUkRtOGc5NFZYYmFVN1VCbDhYNDhFU0o2
K2tuOVVkK0hnaDdFdVB0b1ZkejJyZHRKdlF2RHY1Z3hMZXd2SDhjaUhnN2hsb0NsdTNlTk9CTnN0
TnRTdzM0anhjOWJIMm5lbmFveFRjMzNoNmFINHVGNHVQdHdjUjQ4bi91L1JOTys4MEczeWRERWQv
L0RJUjk5d2JDdnNidDNpemdUYlR6YXFneTBQUHh1ZkJJTkJBYmJ3ODlHbytGWnNkam9ibng5dERj
YUN3NFA5b1dqSS9GZ29teFdDQXgrZ3BPKytHMXh2eFZ3UitNK0dRdzdQMXhNT3g3UEJqMjlmWkh2
RlhidlZIQW0ycm40cHJzcktrZDZ3aUZSOXREc2ZIMm10aElMUFJvckMwNE85WVdtaHVOaGVaRzJ3
THpJOUZnZkxRdGtCaU5CaExQaGY0WG5QYUxheURpazRHd1R3YkMzdjhkYVBZK0hJajRQdXB2OWpM
K0E3K0NuY3ZYZUh0TjdXZ3NHQjZOaFdLanNWQnNKQnA4TkJvTnpvNUVBM01MYTM2NE5SQWZhZlVu
aHBQcjVVNzdsY0dYZ2JEMzd3Tmh6NS83bTcwakEySFBtVzNlRStEL3JaV0YwQmFzSFc0TGhrZWln
ZGhJTEJRYmJnMDhHbTROekE2MytPZUdXL3h6UTYzKythRVdmM3lveFpkSXJtV2hiM2srOUlOTG9W
OEt2dlEzZStNRHpkNGYrcHM5LzlFZjlyWU5SSHlPYmQ0REFBdFdGTUpvVzdCMnVEVVlIb29HWWtQ
UlFHeW94ZjlvcU1VM094VHh6UTFGZkhORExiNzVvWWd2UGhqeEpwWldlTzNnSjhQdlNmUTNlWDhh
Q0h0bis1dTlNMzNOWFA0QnI3TVZoVERjR3FnZGJ2V0hCMXY5c2NGV2Yyd3c0bjgwR1BITkRvYTlj
NE1SMzl4ZzJEczNFUGJPRDRTOThZR3dKekVROWlUNm03M1MzK3lWdm1iUGZIK3paNzZ2eWZPMHY5
bjdwNzVtYjI5L001ZC93Ry9KYzRVdzFPSVA5MGY4c2NHSVA5WWY4Y2NHd3I1SEEySHY3RUN6ZDI2
ZzJUdlhsd3g5dksvWjgyMS9zK2UvK3BvODMvWTNlVDdyYS9ZMGNma0gvTGJ0WEwyR1dueTFBMkZm
dUMvc2pmV0h2YkgrWnMranZyRDNabStUWjZpM3lUUFcxK3laN0d2eVhPOXI5dmkzOTA4SDhNK3dv
aEI2bTd4bHQ2OTVUdzZFZmVjR3cxNWZmNVBubmI1bVQ2RDMyb1VEMi94M0F2Z1Y3ZHl4WThmT2dT
YXZ1Ny9KazlWM3phdmU3ajhJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQ1YvZzl0UEpFUXUxWHZtUUFB
QUFCSlJVNUVya0pnZ2c9PSI+Cis8aW1nIGlkPSJpMiI+CisKKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZGVmYXVsdEltZ1VybCA9ICJodHRwczovL2dldC53ZWJnbC5v
cmcvY29uZm9ybWFuY2UtcmVzb3VyY2VzL3RodW5kZXJiaXJkLWxvZ28tNjR4NjQucG5nIjsKK3Zh
ciBsb2NhbEltZ1VybCA9ICIuLi8uLi8uLi9yZXNvdXJjZXMvdGh1bmRlcmJpcmQtbG9nby02NHg2
NC5wbmciOworCitUZXN0cy5hdXRvaW5pdCA9IGZhbHNlOyAvLyBQcmV2ZW50cyB0aGUgdGVzdCBm
cm9tIHJ1bm5pbmcgdW50aWwgdGhlIGltYWdlIGlzIGxvYWRlZAorCitUZXN0cy5zdGFydFVuaXQg
PSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdnbCcpOworICAgIHZhciBnbCA9IHdyYXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykp
OworCisgICAgZ2wudmlld3BvcnQoMCwwLGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KTsKKyAg
ICBnbC5jbGVhckNvbG9yKDAsMCwxLDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1Qp
OworICAgIHJldHVybiBbZ2xdOworfQorCitUZXN0cy5zZXR1cCA9IGZ1bmN0aW9uKGdsKSB7Cisg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOworICAgIHZhciB0ZXhDdWJlTWFwID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmVNYXApOwor
ICAgIHJldHVybiBbZ2xdCit9CisKK1Rlc3RzLnRlYXJkb3duID0gZnVuY3Rpb24oZ2wsIHRleCwg
dGV4Q3ViZU1hcCkgeworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOwor
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
X0NVQkVfTUFQLCBudWxsKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleEN1YmVNYXApOworfQor
CitUZXN0cy50ZXN0VGV4SW1hZ2UyRCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgZ2wuZW5hYmxlKGds
LkJMRU5EKTsKKyAgICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2knKTsKKyAg
ICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7CisgICAgdmFyIGN0eCA9IGMu
Z2V0Q29udGV4dCgnMmQnKTsKKyAgICBjdHguZHJhd0ltYWdlKGltZywwLDApOworICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgaW1nKTsKKyAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xB
TVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgdmFyIGYgPSBu
ZXcgRmlsdGVyKGdsLCAnaWRlbnRpdHktZmxpcC12ZXJ0JywgJ2lkZW50aXR5LWZyYWcnKTsKKyAg
ICBnbC5ibGVuZEZ1bmMoZ2wuT05FLCBnbC5aRVJPKTsKKyAgICBmLmFwcGx5KCk7CisgICAgZi5k
ZXN0cm95KCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsKKyAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMpOworICAgIGYg
PSBuZXcgRmlsdGVyKGdsLCAnaWRlbnRpdHktaGZsaXAtdmVydCcsICdpZGVudGl0eS1mcmFnJyk7
CisgICAgZ2wuYmxlbmRGdW5jKGdsLlNSQ19BTFBIQSwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSk7
CisgICAgZi5hcHBseSgpOworICAgIGYuZGVzdHJveSgpOworICAgIHZhciB2YWxpZF90YXJnZXRz
ID0gWworICAgICAgICBnbC5URVhUVVJFXzJELAorICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1gsCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwKKyAg
ICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLAorICAgICAgICBnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWiwKKyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aCisgICAgXTsKKyAg
ICB2YWxpZF90YXJnZXRzLmZvckVhY2goZnVuY3Rpb24odCkgeworICAgICAgICBhc3NlcnRPayhm
dW5jdGlvbigpeworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodCwgMCwgZ2wuUkdCQSwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7CisgICAgICAgICAgICAgICAgZ2wudGV4U3Vi
SW1hZ2UyRCh0LCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGFzc2VydE9rKGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgZ2wu
dGV4SW1hZ2UyRCh0LCAxLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsK
KyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHQsIDEsIDAsIDAsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGMpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVGVzdHMudGVz
dFRleEltYWdlMkROb25TT1AgPSBmdW5jdGlvbihnbCkgeworICAgIHZhciBpbWcgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaTInKTsKKyAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjJyk7CisgICAgdmFyIGN0eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICBjdHguZHJh
d0ltYWdlKGltZywwLDApOworICAgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAidGV4SW1hZ2Uy
RCB3aXRoIGNyb3NzLW9yaWdpbiBpbWFnZSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uLiIsCisgICAg
ICBmdW5jdGlvbigpe2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1nKTt9KTsKKyAgICBhc3NlcnRUaHJvd05vR0xFcnJv
cihnbCwgInRleFN1YkltYWdlMkQgd2l0aCBjcm9zcy1vcmlnaW4gaW1hZ2Ugc2hvdWxkIHRocm93
IGV4Y2VwdGlvbi4iLAorICAgICAgZnVuY3Rpb24oKXtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1nKTt9KTsKKyAgICBh
c3NlcnRUaHJvd05vR0xFcnJvcihnbCwgInRleEltYWdlMkQgd2l0aCBkaXJ0eSBvcmlnaW4gY2Fu
dmFzIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBjKTt9KTsKKyAgICBhc3NlcnRUaHJvd05vR0xFcnJvcihnbCwgInRleFN1YkltYWdlMkQgd2l0
aCBkaXJ0eSBvcmlnaW4gY2FudmFzIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIiwKKyAgICAgIGZ1
bmN0aW9uKCl7Z2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGMpO30pOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24o
Z2wpIHsKK307CisKKyhhc3luYyBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBpbWcgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaTInKTsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCB3dHUuYXdh
aXRPclRpbWVvdXQod3R1LmxvYWRDcm9zc09yaWdpbkltYWdlKGltZywgZGVmYXVsdEltZ1VybCwg
bG9jYWxJbWdVcmwpKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoYElt
YWdlIHNldHVwIGZhaWxlZCAoJHtlfSkuYCk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0VGVzdHMoKTsKK30pKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRN
TEJhZEFyZ3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MQmFkQXJncy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBkODYwYmNhYWE2ZmIwNGI4MzAzNWNiNDkxZTAyODRmMTNjOWM4ZDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRNTEJhZEFy
Z3MuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3
cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgcmV0
dXJuIFtnbCwgdGV4XTsKK30KKworVGVzdHMudGVzdFRleEltYWdlMkQgPSBmdW5jdGlvbihnbCkg
eworICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgIHZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgYyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjJyk7CisgICAgYXNzZXJ0T2soIm1ha2UgdGV4dHVyZSIsCisgICAgICAg
ICBmdW5jdGlvbigpIHtnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBn
bC5JTlZBTElEX1ZBTFVFLCAieSArIGhlaWdodCA+IHRleHR1cmUgaGVpZ2h0IiwKKyAgICAgICAg
ZnVuY3Rpb24oKSB7Z2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAxLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgInggKyB3aWR0aCA+IHRleHR1cmUgd2lkdGgiLAorICAgICAgICBmdW5j
dGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDEsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZB
TElEX1ZBTFVFLCAibmVnYXRpdmUgeCIsCisgICAgICAgIGZ1bmN0aW9uKCkge2dsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgLTEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGMpOyB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibmVnYXRp
dmUgeSIsCisgICAgICAgIGZ1bmN0aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgMCwgLTEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBhc3Nl
cnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibmVnYXRpdmUgbGV2ZWwiLAorICAgICAg
ICBmdW5jdGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIC0xLCAwLCAwLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsgfSk7CisgICAgYXNzZXJ0VGhyb3dOb0dMRXJy
b3IoZ2wsICJiYWQgZWxlbWVudCBiIiwKKyAgICAgICAgZnVuY3Rpb24oKSB7Z2wudGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGIp
OyB9KTsKKyAgICBhc3NlcnRUaHJvd05vR0xFcnJvcihnbCwgImJhZCBlbGVtZW50IGRpdiIsCisg
ICAgICAgIGZ1bmN0aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCww
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBkaXYpOyB9KTsKKyAgICBhc3NlcnRUaHJvd05v
R0xFcnJvcihnbCwgIm5vIGVsZW1lbnQiLAorICAgICAgICBmdW5jdGlvbigpIHtnbC50ZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
MCk7IH0pOworICAgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAic3RyaW5nIGFzIGRhdGEiLAor
ICAgICAgICBmdW5jdGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsMCwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgImZvbyIpOyB9KTsKKyAgICBhc3NlcnRHTEVy
cm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICJiYWQgdGFyZ2V0IiwKKyAgICAgICAgZnVuY3Rpb24o
KSB7Z2wudGV4U3ViSW1hZ2UyRChnbC5GTE9BVCwgMCwgMCwwLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBjKTsgfSk7CisgICAgYXNzZXJ0T2soImdvb2QgYXJncyIsCisgICAgICAgICBmdW5j
dGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBvcmlnaW5hbCIsCisgICAgICAgIGZ1
bmN0aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgInR5cGUgbm90IHNhbWUgYXMgb3JpZ2luYWwiLAorICAgICAgICBmdW5j
dGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfU0hPUlRfNF80XzRfNCwgYyk7IH0pOworICAgIGFzc2VydE9rKCJtYWtlIHRl
eHR1cmUgUkdCIiwKKyAgICAgICAgIGZ1bmN0aW9uKCkge2dsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIGMpOyB9KTsKKyAgICBh
c3NlcnRPaygiZm9ybWF0IHNhbWUgYXMgb3JpZ2luYWwgUkdCIiwKKyAgICAgICAgZnVuY3Rpb24o
KSB7Z2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIGdsLlJHQiwgZ2wuVU5T
SUdORURfQllURSwgYyk7IH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiZm9ybWF0IG5vdCBzYW1lIGFzIG9yaWdpbmFsIFJHQiIsCisgICAgICAgIGZ1bmN0
aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBjKTsgfSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJ0eXBlIG5vdCBzYW1lIGFzIG9yaWdpbmFsIFJHQiIsCisgICAgICAgIGZ1
bmN0aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81LCBjKTsgfSk7CisgICAgYXNzZXJ0T2soIm1ha2UgdGV4
dHVyZSBSR0JBIDRfNF80XzQiLAorICAgICAgICAgZnVuY3Rpb24oKSB7Z2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9TSE9SVF80XzRf
NF80LCBjKTsgfSk7CisgICAgYXNzZXJ0T2soImZvcm1hdCBzYW1lIGFzIG9yaWdpbmFsIFJHQkEg
NF80XzRfNCIsCisgICAgICAgIGZ1bmN0aW9uKCkge2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgMCwwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCBjKTsgfSk7
CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJmb3JtYXQgbm90
IHNhbWUgYXMgb3JpZ2luYWwgUkdCQSA0XzRfNF80IiwKKyAgICAgICAgZnVuY3Rpb24oKSB7Z2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsIGdsLlJHQiwgZ2wuVU5TSUdORURf
QllURSwgYyk7IH0pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAidHlwZSBub3Qgc2FtZSBhcyBvcmlnaW5hbCBSR0JBIDRfNF80XzQiLAorICAgICAgICBmdW5j
dGlvbigpIHtnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgYyk7IH0pOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rpb24o
Z2wsIHRleCkgeworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKworPC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzeyBw
b3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2FudmFzIGlkPSJn
bCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImMiIHdpZHRo
PSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
bW9yZS9mdW5jdGlvbnMvdW5pZm9ybU1hdHJpeC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9y
bU1hdHJpeC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZTM4OGZkNGY3ZDFmNzYwMTBmMDVjNmYzM2FkZTU0
YWQ3MzkzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy91bmlmb3JtTWF0cml4
Lmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0i
Li4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNy
Yz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiPgorCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZh
ciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3Jh
cEdMQ29udGV4dChnZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHJldHVybiBbZ2xdOworfQorCitU
ZXN0cy50ZXN0VW5pZm9ybWYgPSBmdW5jdGlvbihnbCkgeworICB2YXIgc2ggPSBuZXcgRmlsdGVy
KGdsLCAnZm9vYmFyLXZlcnQnLCAnZm9vYmFyLWZyYWcnKTsKKyAgc2guYXBwbHkoZnVuY3Rpb24o
Zil7CisgICAgdmFyIGZvbyA9IGYudW5pZm9ybSgnZm9vJyk7CisgICAgdmFyIGJhciA9IGYudW5p
Zm9ybSgnYmFyJyk7CisgICAgdmFyIGJhcjMgPSBmLnVuaWZvcm0oJ2JhcjMnKTsKKyAgICBnbC51
bmlmb3JtTWF0cml4NGZ2KGZvbywgZmFsc2UsIFsxLDAsMCwwLCAwLDIsMCwwLCAwLDAsMywwLCAw
LDAsMCw0XSk7CisgICAgZ2wudW5pZm9ybU1hdHJpeDJmdihiYXIsIGZhbHNlLCBbMiwxLCAyLDJd
KTsKKyAgICBnbC51bmlmb3JtTWF0cml4M2Z2KGJhcjMsIGZhbHNlLCBbMiwyLDIsIDIsMiwyLCAy
LDEsMl0pOworICB9KTsKKyAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg0KTsKKyAgZ2wucmVhZFBp
eGVscygwLDAsMSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGQpOworICBhc3NlcnRFcXVh
bHMoWzEsMiwzLDhdLCBbZFswXSwgZFsxXSwgZFsyXSwgZFszXV0pOworICBzaC5kZXN0cm95KCk7
Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCkgeworfQorCis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZvb2Jhci12ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjMyBWZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMiBUZXg7CisKK3VuaWZvcm0gbWF0MiBiYXI7
Cit1bmlmb3JtIG1hdDMgYmFyMzsKKwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFp
bigpCit7CisgICAgdGV4Q29vcmQwID0gdmVjNChUZXgucywgMS4wLVRleC50LCBiYXJbMF1bMV0r
YmFyM1syXVsxXSwgMC4wKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4LCAxLjApOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmb29iYXItZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5pZm9ybSBtYXQ0IGZvbzsK
KwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChmb29bMF1bMF0vMjU2LjAsIGZvb1sxXVsxXS8yNTYuMCwgZm9vWzJdWzJdLzI1
Ni4wLCBmb29bM11bM10qdGV4Q29vcmQwLnovMjU2LjApOworfQorPC9zY3JpcHQ+Cis8c3R5bGU+
Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+Cis8Y2Fu
dmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzwvYm9keT48L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy91bmlmb3JtTWF0cml4QmFkQXJncy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9ybU1hdHJpeEJhZEFyZ3MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MzU1Y2Q1NDdmZTVlYTg4NTgzZjRkMWMxNTJlZmQ3OGI5ZTE1NjBiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9ybU1hdHJpeEJhZEFyZ3MuaHRtbApAQCAtMCwwICsxLDE0
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgor
CitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIHVud3JhcHBlZEdMID0gZ2V0R0xDb250ZXh0
KGNhbnZhcyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQodW53cmFwcGVkR0wpOworICByZXR1
cm4gW2dsLCB1bndyYXBwZWRHTF07Cit9CisKK1Rlc3RzLnRlc3RVbmlmb3JtZiA9IGZ1bmN0aW9u
KGdsLCB1bndyYXBwZWRHTCkgeworICB2YXIgc2ggPSBuZXcgRmlsdGVyKGdsLCAnZm9vYmFyLXZl
cnQnLCAnZm9vYmFyLWZyYWcnKTsKKyAgc2guYXBwbHkoZnVuY3Rpb24oZil7CisgICAgdmFyIGZt
NCA9IGYudW5pZm9ybSgnZm00Jyk7CisgICAgdmFyIGZtMiA9IGYudW5pZm9ybSgnZm0yJyk7Cisg
ICAgdmFyIGZtMyA9IGYudW5pZm9ybSgnZm0zJyk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgImJhZCB0cmFuc3Bvc2UgNGZ2IiwKKyAgICAgICAgZnVuY3Rpb24oKXtn
bC51bmlmb3JtTWF0cml4NGZ2KGZtNCwgdHJ1ZSwgWzEsMCwwLDAsIDAsMiwwLDAsIDAsMCwzLDAs
IDAsMCwwLDRdKTt9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAi
YmFkIHRyYW5zcG9zZSAzZnYiLAorICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm1NYXRyaXgz
ZnYoZm0zLCB0cnVlLCBbMSwwLDAsIDAsMiwwLCAwLDAsM10pO30pOworICAgIGFzc2VydEdMRXJy
b3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJiYWQgdHJhbnNwb3NlIDJmdiIsCisgICAgICAgIGZ1
bmN0aW9uKCl7Z2wudW5pZm9ybU1hdHJpeDJmdihmbTIsIHRydWUsIFsxLDAsIDAsMl0pO30pOwor
ICAgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAiYmFkIGxvY2F0aW9uIiwKKyAgICAgICAgZnVu
Y3Rpb24oKXtnbC51bmlmb3JtTWF0cml4NGZ2KDU4ODkzOSwgZmFsc2UsIFsxLDAsMCwwLCAwLDIs
MCwwLCAwLDAsMywwLCAwLDAsMCw0XSk7fSk7CisgICAgYXNzZXJ0VGhyb3dOb0dMRXJyb3IoZ2ws
ICJiYWQgbG9jYXRpb24gKG5lZ2F0aXZlKSIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9y
bU1hdHJpeDRmdigtNTg4OTM5LCBmYWxzZSwgWzEsMCwwLDAsIDAsMiwwLDAsIDAsMCwzLDAsIDAs
MCwwLDRdKTt9KTsKKyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiMTcg
dmFsdWVzIHRvIDRmdiIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybU1hdHJpeDRmdihm
bTQsIGZhbHNlLCBbMCwxLDAsMCwwLCAwLDIsMCwwLCAwLDAsMywwLCAwLDAsMCw0XSk7fSk7Cisg
ICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIjUgdmFsdWVzIHRvIDJmdiIs
CisgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybU1hdHJpeDJmdihmbTIsIGZhbHNlLCBbMCwy
LDEsIDIsMl0pO30pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICIx
MCB2YWx1ZXMgdG8gM2Z2IiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtTWF0cml4M2Z2
KGZtMywgZmFsc2UsIFswLDIsMiwyLCAyLDIsMiwgMiwxLDJdKTt9KTsKKyAgICBhc3NlcnRHTEVy
cm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidG9vIGZldyB2YWx1ZXMgdG8gNGZ2IiwKKyAgICAg
ICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtTWF0cml4NGZ2KGZtNCwgZmFsc2UsIFswLDAsMCwgMCwy
LDAsMCwgMCwwLDMsMCwgMCwwLDAsNF0pO30pOworICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklO
VkFMSURfVkFMVUUsICJ0b28gZmV3IHZhbHVlcyB0byAyZnYiLAorICAgICAgICBmdW5jdGlvbigp
e2dsLnVuaWZvcm1NYXRyaXgyZnYoZm0yLCBmYWxzZSwgWzEsIDIsMl0pO30pOworICAgIGFzc2Vy
dEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ0b28gZmV3IHZhbHVlcyB0byAyZnYiLAor
ICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm1NYXRyaXgyZnYoZm0yLCBmYWxzZSwgW10pO30p
OworICAgIGFzc2VydFRocm93Tm9HTEVycm9yKGdsLCAic3RyaW5nIGZvciBkYXRhIiwKKyAgICAg
ICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtTWF0cml4MmZ2KGZtMiwgZmFsc2UsICJmbTQiKTt9KTsK
KyAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidG9vIGZldyB2YWx1ZXMg
dG8gM2Z2IiwKKyAgICAgICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtTWF0cml4M2Z2KGZtMywgZmFs
c2UsIFsyLDIsIDIsMiwyLCAyLDEsMl0pO30pOworICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYoZm00
LCBmYWxzZSwgWzEsMCwwLDAsIDAsMiwwLDAsIDAsMCwzLDAsIDAsMCwwLDRdKTsKKyAgICBnbC51
bmlmb3JtTWF0cml4MmZ2KGZtMiwgZmFsc2UsIFsyLDEsIDIsMl0pOworICAgIGdsLnVuaWZvcm1N
YXRyaXgzZnYoZm0zLCBmYWxzZSwgWzIsMiwyLCAyLDIsMiwgMiwxLDJdKTsKKyAgICBhc3NlcnRH
TEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIjNmdiBvbiBtYXQ0IiwKKyAgICAgICAg
ZnVuY3Rpb24oKXtnbC51bmlmb3JtTWF0cml4M2Z2KGZtNCwgZmFsc2UsIFsxLDAsMCwgMCwyLDAs
IDAsMCwzXSk7fSk7CisgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICIzZnYgb24gbWF0MiIsCisgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybU1hdHJpeDNmdihm
bTIsIGZhbHNlLCBbMCwyLDEsIDAsMiwyLCAwLDAsMF0pO30pOworICAgIGFzc2VydEdMRXJyb3Io
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiMmZ2IG9tIG1hdDMiLAorICAgICAgICBmdW5jdGlv
bigpe2dsLnVuaWZvcm1NYXRyaXgyZnYoZm0zLCBmYWxzZSwgWzIsMiwgMiwyXSk7fSk7CisgICAg
Zm9yICh2YXIgaWkgPSAyOyBpaSA8PSA0OyArK2lpKSB7CisgICAgICB2YXIgYWxsID0gW107Cisg
ICAgICB2YXIgbWF0cyA9IFtbXSxbXV07CisgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgMjsg
KytqaikgeworICAgICAgICBmb3IgKHZhciBrayA9IDA7IGtrIDwgaWkgKiBpaTsgKytraykgewor
ICAgICAgICAgIG1hdHNbampdLnB1c2goamogKyAxKTsKKyAgICAgICAgICBhbGwucHVzaChqaiAr
IDEpOworICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgbG9jME5hbWUgPSAnYW0nICsgaWkg
KyAnWzBdJzsKKyAgICAgIHZhciBsb2MxTmFtZSA9ICdhbScgKyBpaSArICdbMV0nOworICAgICAg
dmFyIGxvYzAgPSBmLnVuaWZvcm0obG9jME5hbWUpOworICAgICAgdmFyIGxvYzEgPSBmLnVuaWZv
cm0obG9jMU5hbWUpOworICAgICAgdmFyIGZuYW1lID0gInVuaWZvcm1NYXRyaXgiICsgaWkgKyAi
ZnYiOworICAgICAgYXNzZXJ0KGxvYzBOYW1lLCBsb2MwICE9IG51bGwpOworICAgICAgYXNzZXJ0
KGxvYzFOYW1lLCBsb2MxICE9IG51bGwpOworICAgICAgYXNzZXJ0T2soInNldCBhcnJheSBvZiAy
IG1hdHJpY2VzICIgKyBpaSArICJmdiIsCisgICAgICAgICAgZnVuY3Rpb24oKXtnbFtmbmFtZV0u
Y2FsbChnbCxsb2MwLCBmYWxzZSwgYWxsKTt9KTsKKyAgICAgIHZhciBhY3R1YWwgPSB1bndyYXBw
ZWRHTC5nZXRVbmlmb3JtKHNoLnNoYWRlci5wcm9ncmFtLCBsb2MwKTsKKyAgICAgIGFzc2VydCgi
Z290IHZhbHVlIGZvciBsb2MwIiwKKyAgICAgICAgICAgICBnbC5OT19FUlJPUiA9PSBjaGVja0Vy
cm9yKGdsLCAiZ2V0VW5pZm9ybSBsb2MwIikpOworICAgICAgYXNzZXJ0QXJyYXlFcXVhbHMobWF0
c1swXSwgYWN0dWFsKTsKKyAgICAgIHZhciBhY3R1YWwgPSB1bndyYXBwZWRHTC5nZXRVbmlmb3Jt
KHNoLnNoYWRlci5wcm9ncmFtLCBsb2MxKTsKKyAgICAgIGFzc2VydCgiZ290IHZhbHVlIGZvciBs
b2MxIiwKKyAgICAgICAgICAgICBnbC5OT19FUlJPUiA9PSBjaGVja0Vycm9yKGdsLCAiZ2V0VW5p
Zm9ybSBsb2MxIikpOworICAgICAgYXNzZXJ0QXJyYXlFcXVhbHMobWF0c1sxXSwgYWN0dWFsKTsK
KyAgICAgIGFzc2VydE9rKCJzZXQgYXJyYXkgb2Ygc2Vjb25kIGFycmF5IG9mIDIgbWF0cml4ZXMi
LAorICAgICAgICAgIGZ1bmN0aW9uKCl7Z2xbZm5hbWVdLmNhbGwoZ2wsIGxvYzEsIGZhbHNlLCBt
YXRzWzBdKTt9KTsKKyAgICAgIHZhciBhY3R1YWwgPSB1bndyYXBwZWRHTC5nZXRVbmlmb3JtKHNo
LnNoYWRlci5wcm9ncmFtLCBsb2MxKTsKKyAgICAgIGFzc2VydCgiZ290IHZhbHVlIGZvciBsb2Mx
IiwKKyAgICAgICAgICAgICBnbC5OT19FUlJPUiA9PSBjaGVja0Vycm9yKGdsLCAiZ2V0VW5pZm9y
bSBsb2MxIikpOworICAgICAgYXNzZXJ0QXJyYXlFcXVhbHMobWF0c1swXSwgYWN0dWFsKTsKKyAg
ICAgIHZhciBiaWcgPSBtYXRzWzFdLmNvbmNhdChbM10pOworICAgICAgYXNzZXJ0R0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgInNldCBhcnJheSBvZiBmaXJzdCBhcnJheSBvZiAyIG1hdHJp
eGVzIHBsdXMgMSB2YWx1ZSIsCisgICAgICAgICAgZnVuY3Rpb24oKXtnbFtmbmFtZV0uY2FsbChn
bCwgbG9jMCwgZmFsc2UsIGJpZyk7fSk7CisgICAgfQorICB9KTsKKyAgdmFyIGQgPSBuZXcgVWlu
dDhBcnJheSg0KTsKKyAgZ2wucmVhZFBpeGVscygwLDAsMSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGQpOworICBhc3NlcnRBcnJheUVxdWFsc1dpdGhFcHNpbG9uKFsxLDIsMyw4XSwgZCwg
WzEsMSwxLDFdKTsKKyAgc2guZGVzdHJveSgpOworfQorCitUZXN0cy5lbmRVbml0ID0gZnVuY3Rp
b24oZ2wpIHsKK30KKworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmb29iYXItdmVydCIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgVmVydGV4OworYXR0cmlidXRlIHZl
YzIgVGV4OworCit1bmlmb3JtIG1hdDIgZm0yOwordW5pZm9ybSBtYXQzIGZtMzsKK3VuaWZvcm0g
bWF0MiBhbTJbMl07Cit1bmlmb3JtIG1hdDMgYW0zWzJdOwordW5pZm9ybSBtYXQ0IGFtNFsyXTsK
KwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFpbigpCit7CisgICAgdGV4Q29vcmQw
ID0gdmVjNChUZXgucywgMS4wLVRleC50LCBmbTJbMF1bMV0rZm0zWzJdWzFdLCAwLjApOworICAg
IGZsb2F0IGQgPSBhbTJbMF1bMV1bMV0gKyBhbTNbMF1bMl1bMl0gKyBhbTRbMF1bM11bM10gKwor
ICAgICAgICAgICAgICBhbTJbMV1bMV1bMV0gKyBhbTNbMV1bMl1bMl0gKyBhbTRbMV1bM11bM107
CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgMS4wICsgZCAqIDAuMDAwMSk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZvb2Jhci1mcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3JtIG1hdDQgZm00OworCit2
YXJ5aW5nIHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGZtNFswXVswXS8yNTYuMCwgZm00WzFdWzFdLzI1Ni4wLCBmbTRbMl1bMl0vMjU2LjAs
IGZtNFszXVszXSp0ZXhDb29yZDAuei8yNTYuMCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52
YXN7IHBvc2l0aW9uOmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMg
aWQ9ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3VuaWZvcm1mLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9u
cy91bmlmb3JtZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjOTY4YzdhMGMxYzJjNTYwMjQyYTQ0NTY5ZTVi
OWMyMDk0OWFlM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy91bmlmb3JtZi5o
dG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4u
L3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9
Ii4uL3VuaXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Ij4KKworVGVzdHMuc3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBH
TENvbnRleHQoZ2V0R0xDb250ZXh0KGNhbnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKworVGVz
dHMudGVzdFVuaWZvcm1mID0gZnVuY3Rpb24oZ2wpIHsKKyAgdmFyIHNoID0gbmV3IEZpbHRlcihn
bCwgJ2Zvb2Jhci12ZXJ0JywgJ2Zvb2Jhci1mcmFnJyk7CisgIHNoLmFwcGx5KGZ1bmN0aW9uKGYp
eworICAgIHZhciBmb28gPSBmLnVuaWZvcm0oJ2ZvbycpOworICAgIHZhciBiYXIgPSBmLnVuaWZv
cm0oJ2JhcicpOworICAgIGdsLnVuaWZvcm00ZnYoZm9vLCBbMSwyLDMsNF0pOworICAgIGdsLnVu
aWZvcm0xZnYoYmFyLCBbMl0pOworICB9KTsKKyAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg0KTsK
KyAgZ2wucmVhZFBpeGVscygwLDAsMSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGQpOwor
ICBhc3NlcnRFcXVhbHMoWzEsMiwzLDhdLCBbZFswXSwgZFsxXSwgZFsyXSwgZFszXV0pOworICBz
aC5hcHBseShmdW5jdGlvbihmKXsKKyAgICB2YXIgZm9vID0gZi51bmlmb3JtKCdmb28nKTsKKyAg
ICB2YXIgYmFyID0gZi51bmlmb3JtKCdiYXInKTsKKyAgICBnbC51bmlmb3JtNGYoZm9vLCAyLDIs
Myw0KTsKKyAgICBnbC51bmlmb3JtMWYoYmFyLCAzKTsKKyAgfSk7CisgIGdsLnJlYWRQaXhlbHMo
MCwwLDEsMSxnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBkKTsKKyAgYXNzZXJ0RXF1YWxzKFsy
LDIsMywxMl0sIFtkWzBdLCBkWzFdLCBkWzJdLCBkWzNdXSk7CisgIHNoLmRlc3Ryb3koKTsKK30K
KworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZm9vYmFyLXZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2
ZWMzIFZlcnRleDsKK2F0dHJpYnV0ZSB2ZWMyIFRleDsKKwordW5pZm9ybSBmbG9hdCBiYXI7CisK
K3ZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQoreworICAgIHRleENvb3JkMCA9
IHZlYzQoVGV4LnMsIDEuMC1UZXgudCwgYmFyLCAwLjApOworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChWZXJ0ZXgsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZvb2Jhci1mcmFnIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1
bmlmb3JtIHZlYzQgZm9vOworCit2YXJ5aW5nIHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZvby5yLzI1NS4wLCBmb28uZy8yNTUuMCwgZm9v
LmIvMjU1LjAsIGZvby5hKnRleENvb3JkMC56LzI1NS4wKTsKK30KKzwvc2NyaXB0PgorPHN0eWxl
PmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorPGNh
bnZhcyBpZD0iZ2wiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8L2JvZHk+PC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9ybWZBcnJheUxlbjEuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvZnVuY3Rpb25zL3VuaWZvcm1mQXJyYXlMZW4xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IyMTBm
MWYxZTBkMDRmMTY0Yzc4ZTM5MjFmOWJmNjQ5MzUzMTdmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvZnVuY3Rpb25zL3VuaWZvcm1mQXJyYXlMZW4xLmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3NzIiAvPgorPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworVGVzdHMu
c3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQoZ2V0R0xDb250ZXh0KGNh
bnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMudGVzdFVuaWZvcm1BcnJheSA9IGZ1
bmN0aW9uKGdsKSB7CisgICAgdmFyIHNoID0gbmV3IEZpbHRlcihnbCwgJ2Zvb2Jhci12ZXJ0Jywg
J2Zvb2Jhci1mcmFnJyk7CisgICAgc2guYXBwbHkoZnVuY3Rpb24oZil7CisgICAgICAgIHZhciB1
bmlWNCA9IGYudW5pZm9ybSgndW5pVjQnKTsKKyAgICAgICAgdmFyIHVuaUZsb2F0ID0gZi51bmlm
b3JtKCd1bmlGbG9hdCcpOworICAgICAgICBhc3NlcnRPaygiMWZ2IG9uIDFmdiIsCisgICAgICAg
ICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm0xZnYodW5pRmxvYXQsIFsyXSk7fSk7CisgICAgICAg
IGFzc2VydE9rKCI1IHZhbHVlcyBvbiAxZnYiLAorICAgICAgICAgICAgZnVuY3Rpb24oKXtnbC51
bmlmb3JtMWZ2KHVuaUZsb2F0LCBbMiwzLDQsNSw2XSk7fSk7CisgICAgICAgIGFzc2VydE9rKCI0
ZnYgb24gNGZ2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRmdih1bmlWNCwg
WzEsIDIsIDMsIDRdKTt9KTsKKyAgICAgICAgYXNzZXJ0T2soIjggdmFsdWVzIG9uIDRmdiIsCisg
ICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm00ZnYodW5pVjQsIFsxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4XSk7fSk7CisKKyAgICB2YXIgdW5pZm9ybXNGb3VuZCA9IDA7CisgICAgdmFyIG51
bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihmLnNoYWRlci5wcm9ncmFtLCBnbC5B
Q1RJVkVfVU5JRk9STVMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVW5pZm9ybXM7ICsr
aSkgeworICAgICAgICB2YXIgdW5pZm9ybU5hbWUgPSBnbC5nZXRBY3RpdmVVbmlmb3JtKGYuc2hh
ZGVyLnByb2dyYW0sIGkpLm5hbWU7CisgICAgICAgIGlmICh1bmlmb3JtTmFtZS5pbmRleE9mKCd1
bmlWNCcpID09IDAgfHwgdW5pZm9ybU5hbWUuaW5kZXhPZigndW5pRmxvYXQnKSA9PSAwKSB7Cisg
ICAgICAgICAgICBhc3NlcnQoIlVuaWZvcm0gYXJyYXkgb2YgbGVuZ3RoIDEgZW5kcyB3aXRoIFsw
XSIsIHVuaWZvcm1OYW1lLmluZGV4T2YoIlswXSIpICE9IC0xKTsKKyAgICAgICAgICAgICsrdW5p
Zm9ybXNGb3VuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoIkJvdGggdW5pZm9ybXMg
Zm91bmQiLCB1bmlmb3Jtc0ZvdW5kID09IDIpOworCisgICAgICAgIHVuaVY0ID0gZi51bmlmb3Jt
KCd1bmlWNFswXScpOworICAgICAgICB1bmlGbG9hdCA9IGYudW5pZm9ybSgndW5pRmxvYXRbMF0n
KTsKKyAgICAgICAgYXNzZXJ0T2soIjFmdiBvbiAxZnYiLAorICAgICAgICAgICAgZnVuY3Rpb24o
KXtnbC51bmlmb3JtMWZ2KHVuaUZsb2F0LCBbMl0pO30pOworICAgICAgICBhc3NlcnRPaygiNSB2
YWx1ZXMgb24gMWZ2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTFmdih1bmlG
bG9hdCwgWzIsMyw0LDUsNl0pO30pOworICAgICAgICBhc3NlcnRPaygiNGZ2IG9uIDRmdiIsCisg
ICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm00ZnYodW5pVjQsIFsxLCAyLCAzLCA0XSk7
fSk7CisgICAgICAgIGFzc2VydE9rKCI4IHZhbHVlcyBvbiA0ZnYiLAorICAgICAgICAgICAgZnVu
Y3Rpb24oKXtnbC51bmlmb3JtNGZ2KHVuaVY0LCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOF0pO30p
OworCisgICAgfSk7CisgICAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg0KTsKKyAgICBnbC5yZWFk
UGl4ZWxzKDAsMCwxLDEsZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZCk7CisgICAgYXNzZXJ0
QXJyYXlFcXVhbHMoWzEsMiwzLDhdLCBkKTsKKyAgICBzaC5kZXN0cm95KCk7CisgICAgdGhyb3dF
cnJvcihnbCk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCkgeworfQorCis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZvb2Jhci12ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMiBUZXg7CisKK3VuaWZvcm0g
ZmxvYXQgdW5pRmxvYXRbMV07CisKK3ZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4o
KQoreworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4LnMsIDEuMC1UZXgudCwgdW5pRmxvYXRbMF0s
IDAuMCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgMS4wKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZm9vYmFyLWZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gdmVjNCB1bmlWNFsxXTsKKwordmFy
eWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgKKyAgICAgICAgdW5pVjRbMF0uci8yNTUuMCwKKyAgICAgICAgdW5pVjRbMF0uZy8yNTUu
MCwKKyAgICAgICAgdW5pVjRbMF0uYi8yNTUuMCwKKyAgICAgICAgdW5pVjRbMF0uYSp0ZXhDb29y
ZDAuei8yNTUuMCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9uOmFic29s
dXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMTYi
IGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUv
ZnVuY3Rpb25zL3VuaWZvcm1mQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9ybWZC
YWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJiMmM0YmFiYzg1MDAzMzdiN2U3OGNiYzQ2ZWE3NmUz
OTRlNjQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3VuaWZvcm1mQmFkQXJn
cy5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3
cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgcmV0dXJuIFtnbF07Cit9CisK
K1Rlc3RzLnRlc3RVbmlmb3JtZiA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFyIHNoID0gbmV3IEZp
bHRlcihnbCwgJ2Zvb2Jhci12ZXJ0JywgJ2Zvb2Jhci1mcmFnJyk7CisgICAgc2guYXBwbHkoZnVu
Y3Rpb24oZil7CisgICAgICAgIHZhciB1bmlWNCA9IGYudW5pZm9ybSgndW5pVjQnKTsKKyAgICAg
ICAgdmFyIHVuaUZsb2F0ID0gZi51bmlmb3JtKCd1bmlGbG9hdCcpOworICAgICAgICBhc3NlcnRU
aHJvd05vR0xFcnJvcihnbCwgIm51bWJlciBmb3IgbG9jYXRpb24iLAorICAgICAgICAgICAgZnVu
Y3Rpb24oKXtnbC51bmlmb3JtNGZ2KDU4ODgyOTI5LCBbMSwyLDMsNF0pO30pOworICAgICAgICBh
c3NlcnRUaHJvd05vR0xFcnJvcihnbCwgIm5lZ2F0aXZlIG51bWJlciBmb3IgbG9jYXRpb24iLAor
ICAgICAgICAgICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtNGZ2KC01ODg4MjkyOSwgWzEsMiwzLDRd
KTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICIx
ZnYgb24gNGZ2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTFmdih1bmlWNCwg
WzEsMiwzLDRdKTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJtb3JlIHRoYW4gZW5vdWdoIHZhbHVlcyAxZnYiLAorICAgICAgICAgICAgZnVuY3Rp
b24oKXtnbC51bmlmb3JtMWZ2KHVuaUZsb2F0LCBbMiwzLDQsNSw2XSk7fSk7CisgICAgICAgIGFz
c2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiNGZ2IG9uIGZsb2F0IiwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRmdih1bmlGbG9hdCwgWzIsMyw0LDVdKTt9
KTsKKyAgICAgICAgYXNzZXJ0T2soIjRmdiBvbiA0ZnYiLAorICAgICAgICAgICAgZnVuY3Rpb24o
KXtnbC51bmlmb3JtNGZ2KHVuaVY0LCBbMSwgMiwgMywgNF0pO30pOworICAgICAgICBhc3NlcnRH
TEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiNSB2YWx1ZXMgb24gNGZ2IiwKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRmdih1bmlWNCwgWzEsIDIsIDMsIDQsIDVdKTt9KTsK
KyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICI4IHZhbHVl
cyBvbiA0ZnYiLAorICAgICAgICAgICAgZnVuY3Rpb24oKXtnbC51bmlmb3JtNGZ2KHVuaVY0LCBb
MSwgMiwgMywgNCwgNSwgNiwgNywgOF0pO30pOworICAgICAgICBhc3NlcnRHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgIjNmdiBvbiBmbG9hdCIsCisgICAgICAgICAgICBmdW5jdGlv
bigpe2dsLnVuaWZvcm0zZnYodW5pRmxvYXQsIFsyLDMsNF0pO30pOworICAgICAgICBhc3NlcnRH
TEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIjJmdiBvbiBmbG9hdCIsCisgICAgICAg
ICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm0yZnYodW5pRmxvYXQsIFsyLDNdKTt9KTsKKyAgICAg
ICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICIzZnYgb24gNGZ2IiwK
KyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTNmdih1bmlWNCwgWzQsNSw2XSk7fSk7
CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiMmZ2IG9u
IDRmdiIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm0yZnYodW5pVjQsIFs1LDZd
KTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICIx
ZnYgb24gNGZ2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTFmdih1bmlWNCwg
WzZdKTt9KTsKKyAgICAgICAgYXNzZXJ0T2soIjFmdiBvbiAxZnYiLAorICAgICAgICAgICAgZnVu
Y3Rpb24oKXtnbC51bmlmb3JtMWZ2KHVuaUZsb2F0LCBbMl0pO30pOworICAgICAgICBhc3NlcnRH
TEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibm90IGVub3VnaCB2YWx1ZXMgb24gMWZ2IiwK
KyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTFmdih1bmlGbG9hdCwgW10pO30pOwor
ICAgICAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibm90IGVub3VnaCB2
YWx1ZXMgb24gNGZ2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRmdih1bmlW
NCwgWzMsMyw0XSk7fSk7CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiNGl2IG9uIDRmdiIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm00
aXYodW5pVjQsIFsxLCAyLCAzLCA0XSk7fSk7CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAiMWl2IG9uIDFmdiIsCisgICAgICAgICAgICBmdW5jdGlvbigp
e2dsLnVuaWZvcm0xaXYodW5pRmxvYXQsIFsyXSk7fSk7CisgICAgfSk7CisgICAgdmFyIGQgPSBu
ZXcgVWludDhBcnJheSg0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsMCwxLDEsZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgZCk7CisgICAgYXNzZXJ0QXJyYXlFcXVhbHMoWzEsMiwzLDhdLCBkKTsK
KyAgICBzaC5kZXN0cm95KCk7CisgICAgdGhyb3dFcnJvcihnbCk7Cit9CisKK1Rlc3RzLmVuZFVu
aXQgPSBmdW5jdGlvbihnbCkgeworfQorCis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZvb2Jhci12
ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7Cith
dHRyaWJ1dGUgdmVjMiBUZXg7CisKK3VuaWZvcm0gZmxvYXQgdW5pRmxvYXQ7CisKK3Zhcnlpbmcg
dmVjNCB0ZXhDb29yZDA7Cit2b2lkIG1haW4oKQoreworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4
LnMsIDEuMC1UZXgudCwgdW5pRmxvYXQsIDAuMCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZl
cnRleCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZm9vYmFyLWZyYWciIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZv
cm0gdmVjNCB1bmlWNDsKKwordmFyeWluZyB2ZWM0IHRleENvb3JkMDsKK3ZvaWQgbWFpbigpCit7
CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgKKyAgICAgICAgdW5pVjQuci8yNTUuMCwKKyAgICAg
ICAgdW5pVjQuZy8yNTUuMCwKKyAgICAgICAgdW5pVjQuYi8yNTUuMCwKKyAgICAgICAgdW5pVjQu
YSp0ZXhDb29yZDAuei8yNTUuMCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0
aW9uOmFic29sdXRlOyB9PC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3
aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL21vcmUvZnVuY3Rpb25zL3VuaWZvcm1pLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy91bmlmb3Jt
aS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI1MjYyNmE3MzUzNmViNTBkMDY5MmEyZTdiYWY3N2JmYWMzOGE0
YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy91bmlmb3JtaS5odG1sCkBAIC0w
LDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3VuaXQuY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Ii4uL3VuaXQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9
Ii4uL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKworVGVzdHMuc3RhcnRVbml0ID0gZnVuY3Rpb24gKCkgeworICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsJyk7CisgIHZhciBnbCA9IHdyYXBHTENvbnRleHQo
Z2V0R0xDb250ZXh0KGNhbnZhcykpOworICByZXR1cm4gW2dsXTsKK30KKworVGVzdHMudGVzdFVu
aWZvcm1pID0gZnVuY3Rpb24oZ2wpIHsKKyAgdmFyIHNoID0gbmV3IEZpbHRlcihnbCwgJ2Zvb2Jh
ci12ZXJ0JywgJ2Zvb2Jhci1mcmFnJyk7CisgIHNoLmFwcGx5KGZ1bmN0aW9uKGYpeworICAgIHZh
ciBmb28gPSBmLnVuaWZvcm0oJ2ZvbycpOworICAgIHZhciBiYXIgPSBmLnVuaWZvcm0oJ2Jhcicp
OworICAgIGdsLnVuaWZvcm00aXYoZm9vLCBbMSwyLDMsNF0pOworICAgIGdsLnVuaWZvcm0xaXYo
YmFyLCBbMl0pOworICB9KTsKKyAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg0KTsKKyAgZ2wucmVh
ZFBpeGVscygwLDAsMSwxLGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGQpOworICBhc3NlcnRF
cXVhbHMoWzEsMiwzLDhdLCBbZFswXSwgZFsxXSwgZFsyXSwgZFszXV0pOworICBzaC5hcHBseShm
dW5jdGlvbihmKXsKKyAgICB2YXIgZm9vID0gZi51bmlmb3JtKCdmb28nKTsKKyAgICB2YXIgYmFy
ID0gZi51bmlmb3JtKCdiYXInKTsKKyAgICBnbC51bmlmb3JtNGkoZm9vLCAyLDIsMyw0KTsKKyAg
ICBnbC51bmlmb3JtMWkoYmFyLCAzKTsKKyAgfSk7CisgIGdsLnJlYWRQaXhlbHMoMCwwLDEsMSxn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBkKTsKKyAgYXNzZXJ0RXF1YWxzKFsyLDIsMywxMl0s
IFtkWzBdLCBkWzFdLCBkWzJdLCBkWzNdXSk7CisgIHNoLmRlc3Ryb3koKTsKK30KKworVGVzdHMu
ZW5kVW5pdCA9IGZ1bmN0aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZm9v
YmFyLXZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIFZlcnRl
eDsKK2F0dHJpYnV0ZSB2ZWMyIFRleDsKKwordW5pZm9ybSBpbnQgYmFyOworCit2YXJ5aW5nIHZl
YzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkKK3sKKyAgICB0ZXhDb29yZDAgPSB2ZWM0KFRleC5z
LCAxLjAtVGV4LnQsIGZsb2F0KGJhciksIDAuMCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZl
cnRleCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZm9vYmFyLWZyYWciIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZv
cm0gaXZlYzQgZm9vOworCit2YXJ5aW5nIHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZsb2F0KGZvby5yKS8yNTYuMCwgZmxvYXQoZm9vLmcp
LzI1Ni4wLCBmbG9hdChmb28uYikvMjU2LjAsIGZsb2F0KGZvby5hKSp0ZXhDb29yZDAuei8yNTYu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT5jYW52YXN7IHBvc2l0aW9uOmFic29sdXRlOyB9PC9z
dHlsZT4KKzwvaGVhZD48Ym9keT4KKzxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiPjwvY2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25z
L3VuaWZvcm1pQmFkQXJncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdW5pZm9ybWlCYWRBcmdzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDc0MWZmZWJhYzcwYzEzMjM4NWIyMmNmM2I0YzY3YTBiMjk4MzU1YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3VuaWZvcm1pQmFkQXJncy5odG1sCkBA
IC0wLDAgKzEsMTAxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0
LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91
bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFwR0xDb250
ZXh0KGdldEdMQ29udGV4dChjYW52YXMpKTsKKyAgcmV0dXJuIFtnbF07Cit9CisKK1Rlc3RzLnRl
c3RVbmlmb3JtZiA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFyIHNoID0gbmV3IEZpbHRlcihnbCwg
J2Zvb2Jhci12ZXJ0JywgJ2Zvb2Jhci1mcmFnJyk7CisgICAgc2guYXBwbHkoZnVuY3Rpb24oZil7
CisgICAgICAgIHZhciB1bmlJVjQgPSBmLnVuaWZvcm0oJ3VuaUlWNCcpOworICAgICAgICB2YXIg
dW5pSW50ID0gZi51bmlmb3JtKCd1bmlJbnQnKTsKKyAgICAgICAgYXNzZXJ0VGhyb3dOb0dMRXJy
b3IoZ2wsICJudW1iZXIgYXMgbG9jYXRpb24iLAorICAgICAgICAgICAgZnVuY3Rpb24oKXtnbC51
bmlmb3JtNGl2KDU4ODgyOTI5LCBbMSwyLDMsNF0pO30pOworICAgICAgICBhc3NlcnRUaHJvd05v
R0xFcnJvcihnbCwgIm5lZ2F0aXZlIG51bWJlciBhcyBsb2NhdGlvbiIsCisgICAgICAgICAgICBm
dW5jdGlvbigpe2dsLnVuaWZvcm00aXYoLTU4ODgyOTI5LCBbMSwyLDMsNF0pO30pOworICAgICAg
ICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIm1vcmUgdGhhbiAxIHZh
bHVlIHRvIDFpdiIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm0xaXYodW5pSW50
LCBbMiwzLDQsNSw2XSk7fSk7CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiNGl2IG9uIGludCIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZv
cm00aXYodW5pSW50LCBbMiwzLDQsNV0pO30pOworICAgICAgICBhc3NlcnRPaygiNGl2IG9uIDRp
diIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm00aXYodW5pSVY0LCBbMSwgMiwg
MywgNF0pO30pOworICAgICAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAi
NSB2YWx1ZXMgb24gNGl2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRpdih1
bmlJVjQsIFsxLCAyLCAzLCA0LCA1XSk7fSk7CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAiOCB2YWx1ZXMgb24gNGl2IiwKKyAgICAgICAgICAgIGZ1bmN0
aW9uKCl7Z2wudW5pZm9ybTRpdih1bmlJVjQsIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4XSk7fSk7
CisgICAgICAgIGFzc2VydEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiM2l2IG9u
IGludCIsCisgICAgICAgICAgICBmdW5jdGlvbigpe2dsLnVuaWZvcm0zaXYodW5pSW50LCBbMiwz
LDRdKTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICIyaXYgb24gaW50IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTJpdih1bmlJ
bnQsIFsyLDNdKTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICIzaXYgb24gNGl2IiwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTNp
dih1bmlJVjQsIFs0LDUsNl0pO30pOworICAgICAgICBhc3NlcnRHTEVycm9yKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgIjJpdiBvbiA0aXYiLAorICAgICAgICAgICAgZnVuY3Rpb24oKXtnbC51
bmlmb3JtMml2KHVuaUlWNCwgWzUsNl0pO30pOworICAgICAgICBhc3NlcnRHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgIjFpdiBvbiA0aXYiLAorICAgICAgICAgICAgZnVuY3Rpb24o
KXtnbC51bmlmb3JtMWl2KHVuaUlWNCwgWzZdKTt9KTsKKyAgICAgICAgYXNzZXJ0R0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgIm5vdCBlbm91Z2ggdmFsdWVzIiwKKyAgICAgICAgICAgIGZ1
bmN0aW9uKCl7Z2wudW5pZm9ybTFpdih1bmlJbnQsIFtdKTt9KTsKKyAgICAgICAgYXNzZXJ0R0xF
cnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICIxZnYgb24gaW50IiwKKyAgICAgICAgICAg
IGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTFmdih1bmlJbnQsIFsyXSk7fSk7CisgICAgICAgIGFzc2Vy
dEdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiNGZ2IG9uIGl2ZWM0IiwKKyAgICAg
ICAgICAgIGZ1bmN0aW9uKCl7Z2wudW5pZm9ybTRmdih1bmlJVjQsIFsyLDMsNCw1XSk7fSk7Cisg
ICAgICAgIGdsLnVuaWZvcm0xaXYodW5pSW50LCBbMl0pOworICAgICAgICBnbC51bmlmb3JtNGl2
KHVuaUlWNCwgWzEsIDIsIDMsIDRdKTsKKyAgICB9KTsKKyAgICB2YXIgZCA9IG5ldyBVaW50OEFy
cmF5KDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwwLDEsMSxnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBkKTsKKyAgICBhc3NlcnRBcnJheUVxdWFscyhbMSwyLDMsOF0sIGQpOworICAgIHNoLmRl
c3Ryb3koKTsKKyAgICB0aHJvd0Vycm9yKGdsKTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0
aW9uKGdsKSB7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZm9vYmFyLXZlcnQiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKK2F0dHJpYnV0ZSB2
ZWMyIFRleDsKKwordW5pZm9ybSBpbnQgdW5pSW50OworCit2YXJ5aW5nIHZlYzQgdGV4Q29vcmQw
Owordm9pZCBtYWluKCkKK3sKKyAgICB0ZXhDb29yZDAgPSB2ZWM0KFRleC5zLCAxLjAtVGV4LnQs
IGZsb2F0KHVuaUludCksIDAuMCk7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZm9vYmFyLWZyYWciIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gaXZlYzQg
dW5pSVY0OworCit2YXJ5aW5nIHZlYzQgdGV4Q29vcmQwOwordm9pZCBtYWluKCkKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KAorICAgICAgICBmbG9hdCh1bmlJVjQueCkvMjU2LjAsCisgICAg
ICAgIGZsb2F0KHVuaUlWNC55KS8yNTYuMCwKKyAgICAgICAgZmxvYXQodW5pSVY0LnopLzI1Ni4w
LAorICAgICAgICBmbG9hdCh1bmlJVjQuYSkqdGV4Q29vcmQwLnovMjU2LjApOworfQorPC9zY3Jp
cHQ+Cis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+
PGJvZHk+Cis8Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4K
KzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy92ZXJ0ZXhBdHRyaWIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL21vcmUvZnVuY3Rpb25zL3ZlcnRleEF0dHJpYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NmM5
NWRhMWM0Y2ZiOTI4NDcyMDA0NDEzZDgyNTFlNWQyNmNhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy92ZXJ0ZXhBdHRyaWIuaHRtbApAQCAtMCwwICsxLDEyMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2NyaXB0IHR5cGU9
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCit2YXIgdmVydHMg
PSBbMC4wLCAwLjAsIDAuMCwgICAxLjAsIDAuMCwgMC4wLCAgIDAuMCwgMS4wLCAwLjBdOwordmFy
IG5vcm1hbHMgPSBbMC4wLCAwLjAsIDEuMCwgICAwLjAsIDAuMCwgMS4wLCAgIDAuMCwgMC4wLCAx
LjBdOwordmFyIHRleGNvb3JkcyA9IFswLjAsMC4wLCAgMS4wLDAuMCwgIDAuMCwxLjBdOworCitU
ZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChnZXRHTENvbnRl
eHQoY2FudmFzKSk7CisgIHZhciBwcm9nID0gbmV3IFNoYWRlcihnbCwgJ3ZlcnQnLCAnZnJhZycp
OworICBwcm9nLnVzZSgpOworICB2YXIgc2ggPSBwcm9nLnNoYWRlci5wcm9ncmFtOworLy8gICBs
b2coZ2wuZ2V0U2hhZGVySW5mb0xvZyhwcm9nLnNoYWRlcnNbMV0pKTsKKyAgdmFyIHYgPSBnbC5n
ZXRBdHRyaWJMb2NhdGlvbihzaCwgJ1ZlcnRleCcpOworICB2YXIgbiA9IGdsLmdldEF0dHJpYkxv
Y2F0aW9uKHNoLCAnTm9ybWFsJyk7CisgIHZhciB0ID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oc2gs
ICdUZXgnKTsKKyAgcmV0dXJuIFtnbCxwcm9nLHYsbix0XTsKK30KKworVGVzdHMuc2V0dXAgPSBm
dW5jdGlvbihnbCwgcHJvZywgdixuLHQpIHsKKyAgYXNzZXJ0KDAgPT0gZ2wuZ2V0RXJyb3IoKSk7
CisgIHJldHVybiBbZ2wsIHByb2csIHYsbix0XTsKK30KK1Rlc3RzLnRlYXJkb3duID0gZnVuY3Rp
b24oZ2wsIHByb2csIHYsbix0KSB7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh2KTsK
KyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pOworICBnbC5kaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkodCk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCwgcHJvZywgdixu
LHQpIHsKKyAgcHJvZy5kZXN0cm95KCk7Cit9CisKK1Rlc3RzLnRlc3RWZXJ0ZXhBdHRyaWIgPSBm
dW5jdGlvbihnbCwgcHJvZywgdixuLHQpIHsKKyAgdmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICB2YXIgdmVydHNBcnIgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRzKTsKKyAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZibyk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCB2ZXJ0c0FyciwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh2KTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih2LCAzLCBnbC5GTE9BVCwgZmFsc2Us
IDAsIDApOworICBhc3NlcnRPayhmdW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVT
LCAwLCAzKTt9KTsKKyAgZ2wudmVydGV4QXR0cmliMWZ2KHYsIFsxXSk7CisgIGdsLnZlcnRleEF0
dHJpYjJmdih2LCBbMSwyXSk7CisgIGdsLnZlcnRleEF0dHJpYjNmdih2LCBbMSwyLDNdKTsKKyAg
Z2wudmVydGV4QXR0cmliNGZ2KHYsIFsxLDIsMyw0XSk7CisgIGdsLnZlcnRleEF0dHJpYjFmKHYs
IDEpOworICBnbC52ZXJ0ZXhBdHRyaWIyZih2LCAxLDIpOworICBnbC52ZXJ0ZXhBdHRyaWIzZih2
LCAxLDIsMyk7CisgIGdsLnZlcnRleEF0dHJpYjRmKHYsIDEsMiwzLDQpOworICBhc3NlcnRPayhm
dW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTt9KTsKKyAgdGhyb3dF
cnJvcihnbCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgZ2wu
ZGVsZXRlQnVmZmVyKHZibyk7CisgIHRocm93RXJyb3IoZ2wpOworfQorVGVzdHMudGVzdFZlcnRl
eEF0dHJpYlZCTyA9IGZ1bmN0aW9uKGdsLCBwcm9nLCB2LG4sdCkgeworICB2YXIgdmJvID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgIHZhciB2ZXJ0c0FyciA9IG5ldyBGbG9hdDMyQXJyYXkodmVydHMp
OworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvKTsKKyAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRzQXJyLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHYpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHYsIDMsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIGdsLnZlcnRleEF0dHJpYjFmdih2LCBbMV0pOworICBn
bC52ZXJ0ZXhBdHRyaWIyZnYodiwgWzEsMl0pOworICBnbC52ZXJ0ZXhBdHRyaWIzZnYodiwgWzEs
MiwzXSk7CisgIGdsLnZlcnRleEF0dHJpYjRmdih2LCBbMSwyLDMsNF0pOworICBnbC52ZXJ0ZXhB
dHRyaWIxZih2LCAxKTsKKyAgZ2wudmVydGV4QXR0cmliMmYodiwgMSwyKTsKKyAgZ2wudmVydGV4
QXR0cmliM2YodiwgMSwyLDMpOworICBnbC52ZXJ0ZXhBdHRyaWI0Zih2LCAxLDIsMyw0KTsKKyAg
YXNzZXJ0T2soZnVuY3Rpb24oKXtnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHYsIDMsIGdsLkZMT0FU
LCBmYWxzZSwgMCwgMCk7fSk7CisgIGFzc2VydE9rKGZ1bmN0aW9uKCl7Z2wuZHJhd0FycmF5cyhn
bC5UUklBTkdMRVMsIDAsIDMpO30pOworICBnbC52ZXJ0ZXhBdHRyaWI0ZnYodiwgWzEsMiwzLDRd
KTsKKyAgYXNzZXJ0T2soZnVuY3Rpb24oKXtnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Myk7fSk7CisgIHRocm93RXJyb3IoZ2wpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgbnVsbCk7CisgIGdsLmRlbGV0ZUJ1ZmZlcih2Ym8pOworICB0aHJvd0Vycm9yKGdsKTsKK30K
KworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CisgIGF0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKKyAgYXR0cmlidXRlIHZlYzMgTm9ybWFsOworICBh
dHRyaWJ1dGUgdmVjMiBUZXg7CisKKyAgdmFyeWluZyB2ZWM0IHRleENvb3JkMDsKKyAgdm9pZCBt
YWluKCkKKyAgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChWZXJ0ZXggKiBOb3JtYWwsIDEuMCk7
CisgICAgdGV4Q29vcmQwID0gdmVjNChUZXgsMC4wLDAuMCkgKyBnbF9Qb3NpdGlvbjsKKyAgfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4K
KyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgdmFyeWluZyB2ZWM0IHRleENvb3JkMDsK
KyAgdm9pZCBtYWluKCkKKyAgeworICAgIHZlYzQgYyA9IHRleENvb3JkMDsKKyAgICBnbF9GcmFn
Q29sb3IgPSBjOworICB9Cis8L3NjcmlwdD4KKworCis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjph
YnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDxjYW52YXMgaWQ9ImdsIiB3aWR0
aD0iMSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJCYWRBcmdzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy92
ZXJ0ZXhBdHRyaWJCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjdlNDRhNWI4NzJjOWQ1Y2ZhNzJh
MzE5OWUxNDQ2Y2I4MDdiNWYzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3Zl
cnRleEF0dHJpYkJhZEFyZ3MuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0i
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKK3ZhciB2ZXJ0cyA9IFswLjAsIDAu
MCwgMC4wLCAgIDEuMCwgMC4wLCAwLjAsICAgMC4wLCAxLjAsIDAuMF07Cit2YXIgbm9ybWFscyA9
IFswLjAsIDAuMCwgMS4wLCAgIDAuMCwgMC4wLCAxLjAsICAgMC4wLCAwLjAsIDEuMF07Cit2YXIg
dGV4Y29vcmRzID0gWzAuMCwwLjAsICAxLjAsMC4wLCAgMC4wLDEuMF07CisKK1Rlc3RzLnN0YXJ0
VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdnbCcpOworICB2YXIgZ2wgPSB3cmFwR0xDb250ZXh0KGdldEdMQ29udGV4dChjYW52YXMp
KTsKKyAgdmFyIHByb2cgPSBuZXcgU2hhZGVyKGdsLCAndmVydCcsICdmcmFnJyk7CisgIHByb2cu
dXNlKCk7CisgIHZhciBzaCA9IHByb2cuc2hhZGVyLnByb2dyYW07CisvLyAgIGxvZyhnbC5nZXRT
aGFkZXJJbmZvTG9nKHByb2cuc2hhZGVyc1sxXSkpOworICB2YXIgdiA9IGdsLmdldEF0dHJpYkxv
Y2F0aW9uKHNoLCAnVmVydGV4Jyk7CisgIHZhciBuID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oc2gs
ICdOb3JtYWwnKTsKKyAgdmFyIHQgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihzaCwgJ1RleCcpOwor
ICByZXR1cm4gW2dsLHByb2csdixuLHRdOworfQorCitUZXN0cy5zZXR1cCA9IGZ1bmN0aW9uKGds
LCBwcm9nLCB2LG4sdCkgeworICBhc3NlcnQoMCA9PSBnbC5nZXRFcnJvcigpKTsKKyAgcmV0dXJu
IFtnbCwgcHJvZywgdixuLHRdOworfQorVGVzdHMudGVhcmRvd24gPSBmdW5jdGlvbihnbCwgcHJv
ZywgdixuLHQpIHsKKyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHYpOworICBnbC5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkobik7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh0
KTsKK30KKworVGVzdHMuZW5kVW5pdCA9IGZ1bmN0aW9uKGdsLCBwcm9nLCB2LG4sdCkgeworICBw
cm9nLmRlc3Ryb3koKTsKK30KKworCitUZXN0cy50ZXN0VmVydGV4QXR0cmliID0gZnVuY3Rpb24o
Z2wsIHByb2csIHYsbix0KSB7CisgIHZhciB2Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgdmFy
IHZlcnRzQXJyID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0cyk7CisgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCB2Ym8pOworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVy
dHNBcnIsIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodik7
CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodiwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsK
KyAgYXNzZXJ0RmFpbCgiYmFkIGluZGV4IiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudmVydGV4QXR0
cmliMWYoLTEsIDEpO30pOworICBhc3NlcnRGYWlsKCJiYWQgaW5kZXggKGJpZyBuZWdhdGl2ZSki
LAorICAgICAgZnVuY3Rpb24oKXtnbC52ZXJ0ZXhBdHRyaWIxZigtNjkwOTIzNDIsIDEpO30pOwor
ICBhc3NlcnRGYWlsKCJiYWQgaW5kZXggKGJpZyBwb3NpdGl2ZSkiLAorICAgICAgZnVuY3Rpb24o
KXtnbC52ZXJ0ZXhBdHRyaWIxZig1ODkyODkzOCwgMSk7fSk7CisgIGFzc2VydE9rKCJhcnJheSB0
b28gbGFyZ2UiLAorICAgICAgZnVuY3Rpb24oKXtnbC52ZXJ0ZXhBdHRyaWIxZnYodiwgWzEsMiwz
LDQsNV0pO30pOworICBhc3NlcnRGYWlsKCJhcnJheSB0b28gc21hbGwiLAorICAgICAgZnVuY3Rp
b24oKXtnbC52ZXJ0ZXhBdHRyaWIxZnYodiwgW10pO30pOworICBhc3NlcnRPaygiZHJhdyIsCisg
ICAgICBmdW5jdGlvbigpe2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTt9KTsKKyAg
dGhyb3dFcnJvcihnbCk7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydCIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorICBhdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CisgIGF0dHJpYnV0
ZSB2ZWMzIE5vcm1hbDsKKyAgYXR0cmlidXRlIHZlYzIgVGV4OworCisgIHZhcnlpbmcgdmVjNCB0
ZXhDb29yZDA7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVy
dGV4ICogTm9ybWFsLCAxLjApOworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4LDAuMCwwLjApICsg
Z2xfUG9zaXRpb247CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZyIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIHZhcnlp
bmcgdmVjNCB0ZXhDb29yZDA7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICB2ZWM0IGMgPSB0ZXhD
b29yZDA7CisgICAgZ2xfRnJhZ0NvbG9yID0gYzsKKyAgfQorPC9zY3JpcHQ+CisKKworPHN0eWxl
PmNhbnZhc3sgcG9zaXRpb246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8
Y2FudmFzIGlkPSJnbCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PC9jYW52YXM+Cis8L2JvZHk+PC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlci5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9mdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgz
OGY3ZDYxZTEwODNlMDZkYjQ4MTUyMTZjZDUxNGY3NDRhMjk4Y2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9tb3JlL2Z1bmN0aW9ucy92ZXJ0ZXhBdHRyaWJQb2ludGVyLmh0bWwKQEAgLTAsMCArMSw4NSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+Cis8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCit2
YXIgdmVydHMgPSBbMC4wLCAwLjAsIDAuMCwgICAxLjAsIDAuMCwgMC4wLCAgIDAuMCwgMS4wLCAw
LjBdOwordmFyIG5vcm1hbHMgPSBbMC4wLCAwLjAsIDEuMCwgICAwLjAsIDAuMCwgMS4wLCAgIDAu
MCwgMC4wLCAxLjBdOwordmFyIHRleGNvb3JkcyA9IFswLjAsMC4wLCAgMS4wLDAuMCwgIDAuMCwx
LjBdOworCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2wnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChn
ZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHZhciBwcm9nID0gbmV3IFNoYWRlcihnbCwgJ3ZlcnQn
LCAnZnJhZycpOworICBwcm9nLnVzZSgpOworICB2YXIgc2ggPSBwcm9nLnNoYWRlci5wcm9ncmFt
OworLy8gICBsb2coZ2wuZ2V0U2hhZGVySW5mb0xvZyhwcm9nLnNoYWRlcnNbMV0pKTsKKyAgdmFy
IHYgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihzaCwgJ1ZlcnRleCcpOworICB2YXIgbiA9IGdsLmdl
dEF0dHJpYkxvY2F0aW9uKHNoLCAnTm9ybWFsJyk7CisgIHZhciB0ID0gZ2wuZ2V0QXR0cmliTG9j
YXRpb24oc2gsICdUZXgnKTsKKyAgcmV0dXJuIFtnbCxwcm9nLHYsbix0XTsKK30KKworVGVzdHMu
c2V0dXAgPSBmdW5jdGlvbihnbCwgcHJvZywgdixuLHQpIHsKKyAgYXNzZXJ0KDAgPT0gZ2wuZ2V0
RXJyb3IoKSk7CisgIHJldHVybiBbZ2wsIHByb2csIHYsbix0XTsKK30KK1Rlc3RzLnRlYXJkb3du
ID0gZnVuY3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSh2KTsKKyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pOworICBnbC5kaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkodCk7Cit9CisKK1Rlc3RzLmVuZFVuaXQgPSBmdW5jdGlvbihnbCwg
cHJvZywgdixuLHQpIHsKKyAgcHJvZy5kZXN0cm95KCk7Cit9CisKK1Rlc3RzLnRlc3RWZXJ0ZXhB
dHRyaWJQb2ludGVyVkJPID0gZnVuY3Rpb24oZ2wsIHByb2csIHYsbix0KSB7CisgIHZhciB2Ym8g
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgdmFyIHZlcnRzQXJyID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0cyk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8pOworICBnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVydHNBcnIsIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcih2LCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKHYsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgNCk7CisgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgZ2wuZGVsZXRlQnVmZmVyKHZibyk7
Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPgorICBhdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CisgIGF0dHJpYnV0ZSB2ZWMzIE5vcm1hbDsK
KyAgYXR0cmlidXRlIHZlYzIgVGV4OworCisgIHZhcnlpbmcgdmVjNCB0ZXhDb29yZDA7CisgIHZv
aWQgbWFpbigpCisgIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4ICogTm9ybWFsLCAx
LjApOworICAgIHRleENvb3JkMCA9IHZlYzQoVGV4LDAuMCwwLjApICsgZ2xfUG9zaXRpb247Cisg
IH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIHZhcnlpbmcgdmVjNCB0ZXhDb29y
ZDA7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICB2ZWM0IGMgPSB0ZXhDb29yZDA7CisgICAgZ2xf
RnJhZ0NvbG9yID0gYzsKKyAgfQorPC9zY3JpcHQ+CisKKworPHN0eWxlPmNhbnZhc3sgcG9zaXRp
b246YWJzb2x1dGU7IH08L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8Y2FudmFzIGlkPSJnbCIg
d2lkdGg9IjEiIGhlaWdodD0iMSI+PC9jYW52YXM+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvbW9yZS9mdW5jdGlvbnMvdmVydGV4QXR0cmliUG9pbnRlckJhZEFyZ3MuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUv
ZnVuY3Rpb25zL3ZlcnRleEF0dHJpYlBvaW50ZXJCYWRBcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI0
ZDAyNThlMzhhZmNhNDEwYjFiMjMxZGYyNjAzNjMwNDQ2NWIzOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L21vcmUvZnVuY3Rpb25zL3ZlcnRleEF0dHJpYlBvaW50ZXJCYWRBcmdzLmh0bWwKQEAgLTAsMCAr
MSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vdW5pdC5jc3MiIC8+
Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4vdW5pdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iLi4v
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
PgorCitUZXN0cy5zdGFydFVuaXQgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBjYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgdmFyIGdsID0gd3JhcEdMQ29udGV4dChn
ZXRHTENvbnRleHQoY2FudmFzKSk7CisgIHJldHVybiBbZ2xdOworfQorCitUZXN0cy5zZXR1cCA9
IGZ1bmN0aW9uKGdsKSB7CisgIGFzc2VydCgwID09IGdsLmdldEVycm9yKCkpOworICByZXR1cm4g
W2dsXTsKK30KKworVGVzdHMudGVhcmRvd24gPSBmdW5jdGlvbihnbCkgeworfQorCitUZXN0cy5l
bmRVbml0ID0gZnVuY3Rpb24oZ2wpIHsKK30KKworVGVzdHMudGVzdFZlcnRleEF0dHJpYlBvaW50
ZXJWQk8gPSBmdW5jdGlvbihnbCkgeworICB2YXIgdmJvID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8pOworICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSg0KSwgZ2wuU1RBVElDX0RSQVcpOworICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIGFz
c2VydEZhaWwoIm5lZ2F0aXZlIG9mZnNldCIsCisgICAgICBmdW5jdGlvbigpe2dsLnZlcnRleEF0
dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAtNCk7fSk7CisgIGFzc2VydE9r
KCJvdXQgb2YgcmFuZ2Ugb2Zmc2V0IChPSyBiZWNhdXNlIHdlIGNhbiBjaGFuZ2UgdGhlIGJ1ZmZl
ciBsYXRlcikiLAorICAgICAgZnVuY3Rpb24oKXtnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMs
IGdsLkZMT0FULCBmYWxzZSwgMCwgMTIwMCk7fSk7CisgIGFzc2VydEZhaWwoIk9mZnNldCB0aGF0
IGlzIGluY29tcGF0aWJsZSB3aXRoIHR5cGUiLAorICAgICAgZnVuY3Rpb24oKXtnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMyk7fSk7CisgIGFzc2VydEZh
aWwoIm5lZ2F0aXZlIHN0cmlkZSIsCisgICAgICBmdW5jdGlvbigpe2dsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAtMSwgMCk7fSk7CisgIGFzc2VydEZhaWwoImJh
ZCBzaXplIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCA1LCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApO30pOworICBhc3NlcnRGYWlsKCJzdHJpZGUgdGhhdCBkb2Vz
bid0IG1hdGNoIHR5cGUiLAorICAgICAgZnVuY3Rpb24oKXtnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMSwgMCk7fSk7CisgIGFzc2VydEZhaWwoImJhZCB0eXBl
IiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5URVhU
VVJFXzJELCBmYWxzZSwgMCwgMCk7fSk7CisgIGFzc2VydEZhaWwoImJhZCBpbmRleCIsCisgICAg
ICBmdW5jdGlvbigpe2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoLTEsIDMsIGdsLkZMT0FULCBmYWxz
ZSwgMCwgMCk7fSk7CisgIGFzc2VydEZhaWwoImJhZCBpbmRleCAoYmlnIG5lZ2F0aXZlKSIsCisg
ICAgICBmdW5jdGlvbigpe2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoLTg2OTM5NDgsIDMsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7fSk7CisgIGFzc2VydEZhaWwoImJhZCBpbmRleCAoYmlnIHBvc2l0
aXZlKSIsCisgICAgICBmdW5jdGlvbigpe2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoODY5Mzk0OCwg
MywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTt9KTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIG51bGwpOworICBhc3NlcnRPaygiYmluZGluZyB0byBudWxsIGJ1ZmZlciB3aXRoIG9m
ZnNldD0wIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApO30pOworICBhc3NlcnRGYWlsKCJiaW5kaW5nIHRvIG51bGwg
YnVmZmVyIHdpdGggb2Zmc2V0IT0wIiwKKyAgICAgIGZ1bmN0aW9uKCl7Z2wudmVydGV4QXR0cmli
UG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDE2KTt9KTsKKyAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZibyk7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywg
Z2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IG51bGwpOworICBnbC5kZWxldGVCdWZmZXIodmJvKTsKKyAgdGhyb3dFcnJvcihnbCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPjxib2R5PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvZ2xzbC9hcnJheU91dE9mQm91bmRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2dsc2wvYXJyYXlPdXRPZkJvdW5k
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5NWIyMjRhOWU2ZDgxY2ZiZTNiOTllM2E0NjdiOGU5ZTIwNmQ2
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2dsc2wvYXJyYXlPdXRPZkJvdW5kcy5odG1sCkBA
IC0wLDAgKzEsMjU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0
LmNzcyIgLz4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91
bml0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
c3JjPSIuLi91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisKK1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSBnZXRHTENvbnRl
eHQoY2FudmFzKTsKKyAgcmV0dXJuIFtnbF07Cit9CisKK1Rlc3RzLnRlc3RPayA9IGZ1bmN0aW9u
KGdsKSB7CisgICAgdmFyIHNoID0gbmV3IEZpbHRlcihnbCwgJ29rdmVydCcsICdmcmFnJyk7Cisg
ICAgYXNzZXJ0T2soZnVuY3Rpb24oKXtzaC5hcHBseSgpO30pOworICAgIHNoLmRlc3Ryb3koKTsK
KworICAgIHZhciBzaCA9IG5ldyBGaWx0ZXIoZ2wsICd2ZXJ0JywgJ29rZnJhZycpOworICAgIGFz
c2VydE9rKGZ1bmN0aW9uKCl7c2guYXBwbHkoKTt9KTsKKyAgICBzaC5kZXN0cm95KCk7CisKKyAg
ICB2YXIgc2ggPSBuZXcgRmlsdGVyKGdsLCAndmVydCcsICdmcmFnJyk7CisgICAgYXNzZXJ0T2so
ZnVuY3Rpb24oKXtzaC5hcHBseSgpO30pOworICAgIHNoLmRlc3Ryb3koKTsKK30KKwordmFyIGFy
ciA9IFsnY3InLCAnY3cnLCAndnInLCAndncnXTsKK2Fyci5mb3JFYWNoKGZ1bmN0aW9uKGUpewor
ICAgIGlmIChlID09ICdjcicgfHwgZSA9PSAnY3cnKSB7CisgICAgICAgIFRlc3RzWyd0ZXN0Jytl
Kyd2ZXJ0J10gPSBmdW5jdGlvbihnbCkgeworICAgICAgICAgICAgdmFyIHNoID0gbmV3IEZpbHRl
cihnbCwgZSsndmVydCcsICdmcmFnJyk7CisgICAgICAgICAgICBhc3NlcnRGYWlsKGZ1bmN0aW9u
KCl7c2guYXBwbHkoKTt9KTsKKyAgICAgICAgICAgIHNoLmRlc3Ryb3koKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBUZXN0c1sndGVzdCcrZSsnZnJhZyddID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAg
ICAgdmFyIHNoID0gbmV3IEZpbHRlcihnbCwgJ3ZlcnQnLCBlKydmcmFnJyk7CisgICAgICAgIGFz
c2VydEZhaWwoZnVuY3Rpb24oKXtzaC5hcHBseSgpO30pOworICAgICAgICBzaC5kZXN0cm95KCk7
CisgICAgfQorfSk7CisKKworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJva3ZlcnQiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4KKworCisgIGF0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKKyAgYXR0cmli
dXRlIHZlYzIgVGV4OworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7CisgIHZvaWQgbWFpbigpCisg
IHsKKyAgICBUZXhDb29yZCA9IFRleDsKKyAgICBmbG9hdCB4WzNdOworICAgIHhbMF0gPSAxLjA7
CisgICAgeFsxXSA9IDIuMDsKKyAgICB4WzJdID0gMy4wOworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChWZXJ0ZXgsIHhbMl0pOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImNydmVydCIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorCisKKyAgYXR0cmlidXRlIHZlYzMgVmVydGV4OworICBh
dHRyaWJ1dGUgdmVjMiBUZXg7CisgIHZhcnlpbmcgdmVjMiBUZXhDb29yZDsKKyAgdm9pZCBtYWlu
KCkKKyAgeworICAgIFRleENvb3JkID0gVGV4OworICAgIGZsb2F0IHhbM107CisgICAgeFswXSA9
IDEuMDsKKyAgICB4WzFdID0gMi4wOworICAgIHhbMl0gPSAzLjA7CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KFZlcnRleCwgeFs0XSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iY3d2ZXJ0
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisKKworICBhdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7
CisgIGF0dHJpYnV0ZSB2ZWMyIFRleDsKKyAgdmFyeWluZyB2ZWMyIFRleENvb3JkOworICB2b2lk
IG1haW4oKQorICB7CisgICAgVGV4Q29vcmQgPSBUZXg7CisgICAgZmxvYXQgeFszXTsKKyAgICB4
WzBdID0gMS4wOworICAgIHhbMV0gPSAyLjA7CisgICAgeFsyXSA9IDMuMDsKKyAgICB4WzRdID0g
VmVydGV4Lno7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleCwgeFs0XSk7CisgIH0KKzwv
c2NyaXB0PgorPCEtLSBUaGlzIG9uZSBjYW4ndCBiZSByZXF1aXJlZCB0byBmYWlsIGNvbXBpbGF0
aW9uLCBiZWNhdXNlIHZlcnRleCBzaGFkZXJzIG11c3Qgc3VwcG9ydCBhcmJpdHJhcnkgYXJyYXkg
aW5kZXhpbmcgLS0+Cis8c2NyaXB0IGlkPSJ2cnZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KKworCisgIGF0dHJpYnV0ZSB2ZWMzIFZlcnRleDsKKyAgYXR0cmlidXRlIHZlYzIgVGV4Owor
ICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICBUZXhDb29y
ZCA9IFRleDsKKyAgICBmbG9hdCB4WzNdOworICAgIHhbMF0gPSAxLjA7CisgICAgeFsxXSA9IDIu
MDsKKyAgICB4WzJdID0gMy4wOworICAgIGludCBpZHggPSA0ICogaW50KG1heCgxLjAsIFZlcnRl
eC54KjIwLjApKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4LCB4W2lkeF0pOworICB9
Cis8L3NjcmlwdD4KKzwhLS0gVGhpcyBvbmUgY2FuJ3QgYmUgcmVxdWlyZWQgdG8gZmFpbCBjb21w
aWxhdGlvbiwgYmVjYXVzZSB2ZXJ0ZXggc2hhZGVycyBtdXN0IHN1cHBvcnQgYXJiaXRyYXJ5IGFy
cmF5IGluZGV4aW5nIC0tPgorPHNjcmlwdCBpZD0idnd2ZXJ0IiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CisKKworICBhdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7CisgIGF0dHJpYnV0ZSB2ZWMyIFRl
eDsKKyAgdmFyeWluZyB2ZWMyIFRleENvb3JkOworICB2b2lkIG1haW4oKQorICB7CisgICAgVGV4
Q29vcmQgPSBUZXg7CisgICAgZmxvYXQgeFszXTsKKyAgICB4WzBdID0gMS4wOworICAgIHhbMV0g
PSAyLjA7CisgICAgeFsyXSA9IDMuMDsKKyAgICBpbnQgaWR4ID0gNCAqIGludChtYXgoMS4wLCBW
ZXJ0ZXgueCoyMC4wKSk7CisgICAgeFtpZHhdID0gVmVydGV4Lno7CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KFZlcnRleCwgeFtpZHhdKTsKKyAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisKKworICBhdHRyaWJ1dGUgdmVjMyBWZXJ0ZXg7
CisgIGF0dHJpYnV0ZSB2ZWMyIFRleDsKKyAgdmFyeWluZyB2ZWMyIFRleENvb3JkOworICB2b2lk
IG1haW4oKQorICB7CisgICAgVGV4Q29vcmQgPSBUZXg7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KFZlcnRleCwgMC4wKTsKKyAgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9Im9rZnJhZyIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisKKworICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7CisKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIGZs
b2F0IHhbM107CisgICAgeFswXSA9IDEuMDsKKyAgICB4WzFdID0gMi4wOworICAgIHhbMl0gPSAz
LjA7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgVGV4Q29vcmQucywgeFsyXSk7
CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iY3JmcmFnIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KKworCisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIHZhcnlpbmcgdmVj
MiBUZXhDb29yZDsKKworICB2b2lkIG1haW4oKQorICB7CisgICAgZmxvYXQgeFszXTsKKyAgICB4
WzBdID0gMS4wOworICAgIHhbMV0gPSAyLjA7CisgICAgeFsyXSA9IDMuMDsKKyAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCwgMC4wLCBUZXhDb29yZC5zLCB4WzRdKTsKKyAgfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJjd2ZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorCisKKyAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgdmFyeWluZyB2ZWMyIFRleENvb3JkOworCisg
IHZvaWQgbWFpbigpCisgIHsKKyAgICBmbG9hdCB4WzNdOworICAgIHhbMF0gPSAxLjA7CisgICAg
eFsxXSA9IDIuMDsKKyAgICB4WzJdID0gMy4wOworCisgICAgeFs0XSA9IDYuMDsKKyAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCBUZXhDb29yZC5zLCB4WzRdKTsKKyAgfQorPC9zY3Jp
cHQ+Cis8IS0tIFRoaXMgb25lIGFjdHVhbGx5IGZhaWxzIGJlY2F1c2Ugb2YgV2ViR0wncyByZXN0
cmljdGlvbnMgb24gaW5kZXhpbmcgZXhwcmVzc2lvbnMgaW4gZnJhZ21lbnQgc2hhZGVycyAtLT4K
KzxzY3JpcHQgaWQ9InZyZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisKKworICBw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7CisKKyAg
dm9pZCBtYWluKCkKKyAgeworICAgIGZsb2F0IHhbM107CisgICAgeFswXSA9IDEuMDsKKyAgICB4
WzFdID0gMi4wOworICAgIHhbMl0gPSAzLjA7CisKKyAgICBpbnQgaWR4ID0gNCAqIGludChtYXgo
MS4wLCBUZXhDb29yZC54KjIwLjApKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4w
LCBUZXhDb29yZC5zLCB4W2lkeF0pOworICB9Cis8L3NjcmlwdD4KKzwhLS0gVGhpcyBvbmUgYWN0
dWFsbHkgZmFpbHMgYmVjYXVzZSBvZiBXZWJHTCdzIHJlc3RyaWN0aW9ucyBvbiBpbmRleGluZyBl
eHByZXNzaW9ucyBpbiBmcmFnbWVudCBzaGFkZXJzIC0tPgorPHNjcmlwdCBpZD0idndmcmFnIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKworCisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisgIHZhcnlpbmcgdmVjMiBUZXhDb29yZDsKKworICB2b2lkIG1haW4oKQorICB7CisgICAg
ZmxvYXQgeFszXTsKKyAgICB4WzBdID0gMS4wOworICAgIHhbMV0gPSAyLjA7CisgICAgeFsyXSA9
IDMuMDsKKworICAgIGludCBpZHggPSA0ICogaW50KG1heCgxLjAsIFRleENvb3JkLngqMjAuMCkp
OworICAgIHhbaWR4XSA9IDYuMDsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCBU
ZXhDb29yZC5zLCB4W2lkeF0pOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWciIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorCisKKyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgdmFyeWluZyB2ZWMyIFRleENvb3JkOworCisgIHZvaWQgbWFpbigpCisgIHsKKyAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCBUZXhDb29yZC5zLCAxLjApOworICB9Cis8L3Nj
cmlwdD4KKworCis8c3R5bGU+Y2FudmFzeyBwb3NpdGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8
L2hlYWQ+PGJvZHk+CisgIDxjYW52YXMgaWQ9ImdsIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwv
Y2FudmFzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvZ2xzbC91bmlmb3JtT3V0
T2ZCb3VuZHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL21vcmUvZ2xzbC91bmlmb3JtT3V0T2ZCb3VuZHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNTMzNDdlNjA0YjQ0ZGU5ZWNiNzRmZWJlNjBhYThkMmZiYWI2MDZjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvbW9yZS9nbHNsL3VuaWZvcm1PdXRPZkJvdW5kcy5odG1sCkBAIC0wLDAgKzEsMTk2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi91bml0LmNzcyIgLz4KKzxz
Y3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91bml0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSIuLi91dGls
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisK
K1Rlc3RzLnN0YXJ0VW5pdCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdnbCcpOworICB2YXIgZ2wgPSBnZXRHTENvbnRleHQoY2FudmFzKTsK
KyAgcmV0dXJuIFtnbF07Cit9CisKK3ZhciBhcnIgPSBbJ2NyJywgJ2N3JywgJ3ZyJywgJ3Z3Jywg
J3R2dyddOworYXJyLmZvckVhY2goZnVuY3Rpb24oZSl7CisgICAgVGVzdHNbJ3Rlc3QnK2UrJ3Zl
cnQnXSA9IGZ1bmN0aW9uKGdsKSB7CisgICAgICAgIHZhciBzaCA9IG5ldyBGaWx0ZXIoZ2wsIGUr
J3ZlcnQnLCAnZnJhZycpOworICAgICAgICBhc3NlcnRGYWlsKGZ1bmN0aW9uKCl7c2guYXBwbHko
ZnVuY3Rpb24oZil7CisgICAgICAgICAgICBmLnVuaWZvcm0zZnYoJ3gnLCBbMC4wLCAxLjAsIDIu
MF0pOworICAgICAgICAgICAgdGhyb3dFcnJvcihlKyJ2ZXJ0Iik7CisgICAgICAgIH0pO30pOwor
ICAgICAgICBzaC5kZXN0cm95KCk7CisgICAgfQorICAgIFRlc3RzWyd0ZXN0JytlKydmcmFnJ10g
PSBmdW5jdGlvbihnbCkgeworICAgICAgICB2YXIgc2ggPSBuZXcgRmlsdGVyKGdsLCAndmVydCcs
IGUrJ2ZyYWcnKTsKKyAgICAgICAgYXNzZXJ0RmFpbChmdW5jdGlvbigpe3NoLmFwcGx5KGZ1bmN0
aW9uKGYpeworICAgICAgICAgICAgZi51bmlmb3JtM2Z2KCd4JywgWzAuMCwgMS4wLCAyLjBdKTsK
KyAgICAgICAgICAgIHRocm93RXJyb3IoZSsiZnJhZyIpOworICAgICAgICB9KTt9KTsKKyAgICAg
ICAgc2guZGVzdHJveSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImNy
dmVydCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorCisKKyAgYXR0cmlidXRlIHZlYzMgVmVy
dGV4OyBhdHRyaWJ1dGUgdmVjMiBUZXg7CisgIHVuaWZvcm0gZmxvYXQgeFszXTsKKyAgdm9pZCBt
YWluKCkKKyAgeworICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KFZlcnRleC5zdCwgVGV4LnMsIHhb
NF0pOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImN3dmVydCIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorCisKKyAgYXR0cmlidXRlIHZlYzMgVmVydGV4OyBhdHRyaWJ1dGUgdmVjMiBU
ZXg7CisgIHVuaWZvcm0gZmxvYXQgeFszXTsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIHhbNF0g
PSBWZXJ0ZXguejsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoVmVydGV4LnN0LCBUZXgucywgeFs0
XSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnJ2ZXJ0IiB0eXBlPSJ4LXNoYWRlci94
LXZlcnRleCI+CisKKworICB1bmlmb3JtIGZsb2F0IHhbM107CisgIGF0dHJpYnV0ZSB2ZWMzIFZl
cnRleDsgYXR0cmlidXRlIHZlYzIgVGV4OworICB2b2lkIG1haW4oKQorICB7CisgICAgZmxvYXQg
aWR4ID0gNDAuMCAqIG1heCgxLjAsIFZlcnRleC54KjIwLjApOworICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChWZXJ0ZXgsIHhbMl0gKyBUZXgucyArIHhbaW50KGlkeCldKTsKKyAgfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IGlkPSJ2d3ZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKworCisgIGF0
dHJpYnV0ZSB2ZWMzIFZlcnRleDsgYXR0cmlidXRlIHZlYzIgVGV4OworICB1bmlmb3JtIGZsb2F0
IHhbM107CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICBpbnQgaWR4ID0gNCAqIGludChtYXgoMS4w
LCBWZXJ0ZXgueCoyMC4wKSk7CisgICAgeFtpZHhdID0gVmVydGV4Lno7CisgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KFZlcnRleC5zdCwgVGV4LnMsIHhbaWR4XSk7CisgIH0KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0idHZ3dmVydCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorCisKKyAgYXR0cmli
dXRlIHZlYzMgVmVydGV4OyBhdHRyaWJ1dGUgdmVjMiBUZXg7CisgIHVuaWZvcm0gZmxvYXQgeFsz
XTsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIGludCBpZHggPSA0ICogaW50KG1heCgxLjAsIFZl
cnRleC54KjIwLjApKTsKKyAgICB4WzJdID0gVmVydGV4W2lkeF07CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KFZlcnRleC5zdCwgVGV4LnMsIHhbMl0pOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9InZlcnQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKworCisgIGF0dHJpYnV0ZSB2ZWMz
IFZlcnRleDsgYXR0cmlidXRlIHZlYzIgVGV4OworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7Cisg
IHZvaWQgbWFpbigpCisgIHsKKyAgICBUZXhDb29yZCA9IFZlcnRleC5zdDsKKyAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoVmVydGV4LCBUZXgucyk7CisgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlk
PSJjcmZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorCisKKyAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgdW5pZm9ybSBmbG9hdCB4WzNdOworCisgIHZhcnlpbmcgdmVjMiBU
ZXhDb29yZDsKKyAgdm9pZCBtYWluKCkKKyAgeworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4w
LCAwLjAsIDAuMCwgeFs0XSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iY3dmcmFnIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKworCisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisgIHVuaWZvcm0gZmxvYXQgeFszXTsKKworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7Cisg
IHZvaWQgbWFpbigpCisgIHsKKyAgICB4WzRdID0gNi4wOworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgeFs0XSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnJm
cmFnIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKworCisgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIHVuaWZvcm0gZmxvYXQgeFszXTsKKworICB2YXJ5aW5nIHZlYzIgVGV4Q29v
cmQ7CisgIHZvaWQgbWFpbigpCisgIHsKKyAgICBpbnQgaWR4ID0gNCAqIGludChtYXgoMS4wLCBU
ZXhDb29yZC5zKjIwLjApKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAs
IHhbaWR4XSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idndmcmFnIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4KKworCisgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIHVu
aWZvcm0gZmxvYXQgeFszXTsKKworICB2YXJ5aW5nIHZlYzIgVGV4Q29vcmQ7CisgIHZvaWQgbWFp
bigpCisgIHsKKyAgICBpbnQgaWR4ID0gNCAqIGludChtYXgoMS4wLCBUZXhDb29yZC5zKjIwLjAp
KTsKKyAgICB4W2lkeF0gPSA2LjA7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwg
MC4wLCB4W2lkeF0pOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InR2d2ZyYWciIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorCisKKyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgdW5pZm9ybSBmbG9hdCB4WzNdOworCisgIHZhcnlpbmcgdmVjMiBUZXhDb29yZDsKKyAgdm9p
ZCBtYWluKCkKKyAgeworICAgIGludCBpZHggPSA0ICogaW50KG1heCgxLjAsIFRleENvb3JkLnMq
MjAuMCkpOworICAgIHhbMl0gPSBUZXhDb29yZFtpZHhdOworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgeFsyXSk7CisgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJh
ZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisKKworICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICB2b2lkIG1haW4oKQorICB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAs
IDAuMCwgMC4wLCAxLjApOworICB9Cis8L3NjcmlwdD4KKworCis8c3R5bGU+Y2FudmFzeyBwb3Np
dGlvbjphYnNvbHV0ZTsgfTwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDxjYW52YXMgaWQ9Imds
IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2NhbnZhcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9tb3JlL2luZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlMmJk
M2E4ZDY1YjExZjFlNDBiYTE5NmQ2NGIyMTI4OTUxMjFjZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21v
cmUvaW5kZXguaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKyAgICA8dGl0bGU+V2ViR0wgdGVzdHM8L3RpdGxlPgorICA8
L2hlYWQ+CisgIDxib2R5PgorCisgICAgPGgxPlRlc3RzIGZvciB0aGUgV2ViR0wgY2FudmFzIGNv
bnRleHQ8L2gxPgorCisgICAgPGgyPlRoZXNlIHRlc3RzIGFyZSBpbnRlbmRlZCB0byBzZXJ2ZSB0
aGUgZm9sbG93aW5nIHB1cnBvc2VzOjwvaDI+CisgICAgPHVsPgorICAgICAgPGxpPkFzc2VydCBz
cGVjIGNvbmZvcm1hbmNlIChzbyB0aGF0IFdlYkdMIHBhZ2VzIHdvcmsgdGhlIHNhbWUgYWNyb3Nz
IGJyb3dzZXJzIGFuZCBoYXJkd2FyZSk8L2xpPgorICAgICAgPGxpPkNoZWNrIHRoZSBzYWZldHkg
b2YgdGhlIEdMIGJpbmRpbmcgKGJvdW5kcyBjaGVja2luZywgc2FtZSBvcmlnaW4gcG9saWN5KTwv
bGk+CisgICAgICA8bGk+UHJvdmlkZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciBkZXZlbG9wZXJz
PC9saT4KKyAgICA8L3VsPgorCisgICAgPGgyPlRlc3QgcnVubmVyczwvaDI+CisgICAgPHVsPgor
ICAgICAgPGxpPjxhIGhyZWY9ImFsbF90ZXN0c19saW5rb25seS5odG1sIj5SdW4gdGVzdHMgbWFu
dWFsbHk8L2E+PC9saT4KKyAgICAgIDxsaT48YSBocmVmPSJhbGxfdGVzdHMuaHRtbCI+UnVuIGFs
bCB0ZXN0cyBpbiBwYXJhbGxlbDwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9ImFsbF90ZXN0
c19zZXF1ZW50aWFsLmh0bWwiPlJ1biBhbGwgdGVzdHMgc2VxdWVudGlhbGx5PC9hPjwvbGk+Cisg
ICAgPC91bD4KKworCisgICAgPGgyPkRlbW9zPC9oMj4KKyAgICA8dWw+CisgICAgICA8bGk+PGEg
aHJlZj0iZGVtb3Mvb3BlbmdsX3dlYi5odG1sIj5PcGVuR0wgZm9yIHRoZSB3ZWI8L2E+IChyZXF1
aXJlcyB3b3JraW5nIEZCT3MgYW5kIG51bGwgdGV4dHVyZXMgb3IgdXNpbmcgY2FudmFzZXMgYXMg
dGV4dHVyZXMpPC9saT4KKyAgICAgIDxsaT48YSBocmVmPSJkZW1vcy92aWRlby5odG1sIj5HcmVl
biBzY3JlZW4gdmlkZW8gZGVtbyB3aXRoIGEgY29sb3IgcmVtYXBwaW5nIGZpbHRlcjwvYT4gKHJl
cXVpcmVzIGxvYWRpbmcgJmx0O3ZpZGVvPiB0byB0ZXh0dXJlIHdpdGggdGV4SW1hZ2UyRCk8L2xp
PgorICAgIDwvdWw+CisKKyAgICA8aDI+UnVubmluZyB0aGUgdGVzdHM8L2gyPgorCisgICAgPG9s
PgorICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9sZWFybmluZ3dlYmdsLmNvbS9ibG9nLz9wPTEx
Ij5JbnN0YWxsIGEgYnJvd3NlciB3aXRoIFdlYkdMIHN1cHBvcnQ8L2E+PC9saT4KKyAgICAgIDxs
aT5PcGVuIG9uZSBvZiB0aGUgdGVzdCBydW5uZXJzIGxpbmtlZCBhYm92ZSBpbiB5b3VyIGJyb3dz
ZXIuPC9saT4KKyAgICAgIDxsaT5Gb3IgbW9yZSBjb250cm9sIG92ZXIgdGhlIHRlc3RzLCBnbyB0
aGUgPGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20va2lnL2NhbnZhczNkLXRlc3RzIj5HaXRIdWIg
cGFnZTwvYT4sIHNlZSB0aGUgcmVhZG1lLCBhbmQgY2xvbmUgdGhlIHJlcG8uPC9saT4KKyAgICA8
L29sPgorCisgICAgPGgyPldhbnQgdG8gY29udHJpYnV0ZT88L2gyPgorCisgICAgPHA+U2VlIHRo
ZSA8YSBocmVmPSJSRUFETUUubWQiPlJFQURNRTwvYT4uPC9wPgorICAgIDxwPlNlZSB0aGUgPGEg
aHJlZj0iaHR0cDovL2dpdGh1Yi5jb20va2lnL2NhbnZhczNkLXRlc3RzIj5HaXRIdWIgcGFnZTwv
YT4uPC9wPgorICAgIDxwPk1haWwgbWUgYXQgPGEgaHJlZj0ibWFpbHRvOmlsbWFyaS5oZWlra2lu
ZW5AZ21haWwuY29tIj5pbG1hcmkuaGVpa2tpbmVuQGdtYWlsLmNvbTwvYT48L3A+CisKKworICAg
IDxoMj5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBXZWJHTDwvaDI+CisKKyAgICA8dWw+CisgICAg
ICA8bGk+PGEgaHJlZj0iaHR0cDovL3BsYW5ldC13ZWJnbC5vcmciPlBsYW5ldCBXZWJHTDwvYT48
L2xpPgorICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9sZWFybmluZ3dlYmdsLmNvbSI+TGVhcm5p
bmcgV2ViR0w8L2E+PC9saT4KKyAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmtocm9ub3Mu
b3JnL21lc3NhZ2VfYm9hcmRzL3ZpZXdmb3J1bS5waHA/Zj0zNCI+V2ViR0wgb24gS2hyb25vcyBN
ZXNzYWdlIEJvYXJkczwvYT48L2xpPgorICAgIDwvdWw+CisKKyAgICA8aDI+RGV2ZWxvcGVyIGxp
bmtzPC9oMj4KKyAgICA8dWw+CisgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9idWdsaXN0LmNnaT9xdWlja3NlYXJjaD13ZWJnbCI+V2ViR0wgb24gTW96aWxs
YSBCdWd6aWxsYTwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVnemlsbGEu
d2Via2l0Lm9yZy9idWdsaXN0LmNnaT9xdWlja3NlYXJjaD13ZWJnbCI+V2ViR0wgb24gV2ViS2l0
IEJ1Z3ppbGxhPC9hPjwvbGk+CisgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9saXN0P3E9bGFiZWw6M0QtV2ViR0wiPldlYkdMIG9uIENo
cm9taXVtIEJ1Z3ppbGxhPC9hPjwvbGk+CisgICAgPC91bD4KKworCisgICAgPGgyPkxpY2Vuc2U8
L2gyPgorCisgICAgPHA+CisgICAgICBUaGVzZSB0ZXN0cyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhl
IEJTRCBsaWNlbnNlLiBUaGUgaW1hZ2VzIGFuZCB2aWRlb3MgdXNlZCBpbiB0aGUgdGVzdHMgYXJl
IHRoZSByZXNwZWN0aXZlIHByb3BlcnR5IG9mIHRoZWlyIGF1dGhvcnMuCisgICAgPC9wPgorCisg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvdW5pdC5jc3MgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL3VuaXQu
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA3NThiNDNiZDlkZGYwYmYxYzAyYWY1YTVmNjE2OTRmZjgwZTUzYzYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9tb3JlL3VuaXQuY3NzCkBAIC0wLDAgKzEsNjYgQEAKKy8qCitU
ZXN0cyBmb3IgdGhlIE9wZW5HTCBFUyAyLjAgSFRNTCBDYW52YXMgY29udGV4dAorCitDb3B5cmln
aHQgKEMpIDIwMDkgIElsbWFyaSBIZWlra2luZW4gPGlsbWFyaS5oZWlra2luZW5AZ21haWwuY29t
PgorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbgorb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24KK2ZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQKK3Jlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZSByaWdodHMgdG8gdXNlLAorY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKK2NvbmRpdGlvbnM6CisKK1RoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitp
bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ
TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECitOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCitXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKK0ZST00sIE9VVCBPRiBPUiBJ
TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKK09USEVSIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KKworKi8KKy5vayB7CisgIGNvbG9yOiBncmVlbjsKK30KKy5m
YWlsIHsKKyAgY29sb3I6IHJlZDsKK30KK2NhbnZhcyB7CisgIGRpc3BsYXk6IG5vbmU7Cit9Cisj
dGVzdC1zdGF0dXMgeworICBmb250LXNpemU6IGxhcmdlOworfQorCisjdGVzdC1sb2cgeworICBw
YWRkaW5nLWxlZnQ6IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTsKKyAgYmFja2dyb3Vu
ZDogd2hpdGU7CisgIGNvbG9yOiBibGFjazsKK30KKyN0ZXN0LWxvZyA+IGRpdiB7CisgIHBhZGRp
bmctYm90dG9tOiAwLjVlbTsKK30KKyN0ZXN0LWxvZyBoMiB7CisgIGZvbnQtc2l6ZTogMWVtOwor
ICBtYXJnaW4tYm90dG9tOiAwZW07CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKK30KKyN0ZXN0LWxv
ZyBoMyB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIG1hcmdpbi1sZWZ0OiAxLjVlbTsKKyAgbWFy
Z2luLWJvdHRvbTogMGVtOworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKyN0ZXN0LWxvZyBwIHsK
KyAgbWFyZ2luLWxlZnQ6IDRlbTsKKyAgZm9udC1zaXplOiBzbWFsbDsKKyAgbWFyZ2luLXRvcDog
MGVtOworICBtYXJnaW4tYm90dG9tOiAwLjJlbTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvdW5pdC5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL21vcmUvdW5pdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2EyMWM0Y2FlODIyMjZlNWEyY2MzNWI3NzQx
NzUyNWRhY2NlMDMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS91bml0LmpzCkBAIC0wLDAgKzEs
OTcwIEBACisvKgorVW5pdCB0ZXN0aW5nIGxpYnJhcnkgZm9yIHRoZSBPcGVuR0wgRVMgMi4wIEhU
TUwgQ2FudmFzIGNvbnRleHQKKyovCisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworLyogLS0gcGxhZm9ybSBzcGVjaWZpYyBjb2RlIC0tICovCisKKy8vIFdlYktp
dAoraWYgKHdpbmRvdy50ZXN0UnVubmVyICYmICF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyID0gd2luZG93LnRlc3RSdW5uZXI7Cit9
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisKKyAgLy8gVGhlIFdlYktpdCB0ZXN0aW5nIHN5c3RlbSBjb21wYXJlcyBjb25zb2xlIG91
dHB1dC4KKyAgLy8gQmVjYXVzZSB0aGUgb3V0cHV0IG9mIHRoZSBXZWJHTCBUZXN0cyBpcyBHUFUg
ZGVwZW5kZW50CisgIC8vIHdlIHR1cm4gb2ZmIGNvbnNvbGUgbWVzc2FnZXMuCisgIHdpbmRvdy5j
b25zb2xlLmxvZyA9IGZ1bmN0aW9uKCkgeyB9OworICB3aW5kb3cuY29uc29sZS5lcnJvciA9IGZ1
bmN0aW9uKCkgeyB9OworCisgIC8vIFJBRiBkb2Vzbid0IHdvcmsgaW4gTGF5b3V0VGVzdHMuIERp
c2FibGUgaXQgc28gdGhlIHRlc3RzIHdpbGwKKyAgLy8gdXNlIHNldFRpbWVvdXQgaW5zdGVhZC4K
KyAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHVuZGVmaW5lZDsKKyAgd2luZG93Lndl
YmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHVuZGVmaW5lZDsKK30KKworaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRXZWJHTEVycm9yc1Rv
Q29uc29sZUVuYWJsZWQoZmFsc2UpOworfQorCisvKiAtLSBlbmQgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZSAtLSovCitUZXN0cyA9IHsKKyAgYXV0b3J1biA6IHRydWUsCisgIG1lc3NhZ2UgOiBudWxs
LAorICBkZWxheSA6IDAsCisgIGF1dG9pbml0OiB0cnVlLAorCisgIHN0YXJ0VW5pdCA6IGZ1bmN0
aW9uKCl7IHJldHVybiBbXTsgfSwKKyAgc2V0dXAgOiBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSwKKyAgdGVhcmRvd24gOiBmdW5jdGlvbigpIHt9LAorICBlbmRVbml0IDogZnVuY3Rp
b24oKSB7fQorfQorCit2YXIgX190ZXN0U3VjY2Vzc19fID0gdHJ1ZTsKK3ZhciBfX3Rlc3RGYWls
Q291bnRfXyA9IDA7Cit2YXIgX190ZXN0TG9nX187Cit2YXIgX19iYWNrbG9nX18gPSBbXTsKKwor
dmFyIGdldFVybE9wdGlvbnMgPSAoZnVuY3Rpb24oKSB7CisgIHZhciBfdXJsT3B0aW9uc1BhcnNl
ZCA9IGZhbHNlOworICB2YXIgX3VybE9wdGlvbnMgPSB7fTsKKyAgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgIGlmICghX3VybE9wdGlvbnNQYXJzZWQpIHsKKyAgICAgIHZhciBzID0gd2luZG93Lmxv
Y2F0aW9uLmhyZWY7CisgICAgICB2YXIgcSA9IHMuaW5kZXhPZigiPyIpOworICAgICAgdmFyIGUg
PSBzLmluZGV4T2YoIiMiKTsKKyAgICAgIGlmIChlIDwgMCkgeworICAgICAgICBlID0gcy5sZW5n
dGg7CisgICAgICB9CisgICAgICB2YXIgcXVlcnkgPSBzLnN1YnN0cmluZyhxICsgMSwgZSk7Cisg
ICAgICB2YXIgcGFpcnMgPSBxdWVyeS5zcGxpdCgiJiIpOworICAgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IHBhaXJzLmxlbmd0aDsgKytpaSkgeworICAgICAgICB2YXIga2V5VmFsdWUgPSBwYWly
c1tpaV0uc3BsaXQoIj0iKTsKKyAgICAgICAgdmFyIGtleSA9IGtleVZhbHVlWzBdOworICAgICAg
ICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoa2V5VmFsdWVbMV0pOworICAgICAgICBf
dXJsT3B0aW9uc1trZXldID0gdmFsdWU7CisgICAgICB9CisgICAgICBfdXJsT3B0aW9uc1BhcnNl
ZCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIF91cmxPcHRpb25zOworICB9Cit9KSgpOwor
CitpZiAodHlwZW9mIHF1aWV0TW9kZSA9PSAndW5kZWZpbmVkJykgeworICB2YXIgcXVpZXRNb2Rl
ID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciBfcXVpZXRNb2RlQ2hlY2tlZCA9IGZhbHNlOworICAg
IHZhciBfaXNRdWlldCA9IGZhbHNlOworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIGlm
ICghX3F1aWV0TW9kZUNoZWNrZWQpIHsKKyAgICAgICAgX2lzUXVpZXQgPSAoZ2V0VXJsT3B0aW9u
cygpLnF1aWV0ID09IDEpOworICAgICAgICBfcXVpZXRNb2RlQ2hlY2tlZCA9IHRydWU7CisgICAg
ICB9CisgICAgICByZXR1cm4gX2lzUXVpZXQ7CisgICAgfQorICB9KSgpOworfQorCitPYmplY3Qu
dG9Tb3VyY2UgPSBmdW5jdGlvbihhLCBzZWVuKXsKKyAgaWYgKGEgPT0gbnVsbCkgcmV0dXJuICJu
dWxsIjsKKyAgaWYgKHR5cGVvZiBhID09ICdib29sZWFuJykgcmV0dXJuIGEgPyAidHJ1ZSIgOiAi
ZmFsc2UiOworICBpZiAodHlwZW9mIGEgPT0gJ3N0cmluZycpIHJldHVybiAnIicgKyBhLnJlcGxh
Y2UoLyIvZywgJ1xcIicpICsgJyInOworICBpZiAoYSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSBy
ZXR1cm4gYS50b1N0cmluZygpOworICBpZiAoYS53aWR0aCAmJiBhLmhlaWdodCAmJiBhLmRhdGEp
IHJldHVybiAiW0ltYWdlRGF0YV0iOworICBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAg
aWYgKCFzZWVuKSBzZWVuID0gW107CisgICAgdmFyIGlkeCA9IHNlZW4uaW5kZXhPZihhKTsKKyAg
ICBpZiAoaWR4ICE9IC0xKSByZXR1cm4gJyMnKyhpZHgrMSkrJyMnOworICAgIHNlZW4udW5zaGlm
dChhKTsKKyAgICB2YXIgc3JjcyA9IGEubWFwKGZ1bmN0aW9uKG8peyByZXR1cm4gT2JqZWN0LnRv
U291cmNlKG8sc2VlbikgfSk7CisgICAgdmFyIHByZWZpeCA9ICcnOworICAgIGlkeCA9IHNlZW4u
aW5kZXhPZihhKTsKKyAgICBpZiAoaWR4ICE9IC0xKSBwcmVmaXggPSAnIycrKGlkeCsxKSsnPSc7
CisgICAgcmV0dXJuIHByZWZpeCArICdbJyArIHNyY3Muam9pbigiLCAiKSArICddJzsKKyAgfQor
ICBpZiAodHlwZW9mIGEgPT0gJ29iamVjdCcpIHsKKyAgICBpZiAoIXNlZW4pIHNlZW4gPSBbXTsK
KyAgICB2YXIgaWR4ID0gc2Vlbi5pbmRleE9mKGEpOworICAgIGlmIChpZHggIT0gLTEpIHJldHVy
biAnIycrKGlkeCsxKSsnIyc7CisgICAgc2Vlbi51bnNoaWZ0KGEpOworICAgIHZhciBtZW1iZXJz
ID0gW107CisgICAgdmFyIG5hbWU7CisgICAgdHJ5IHsKKyAgICAgIGZvciAodmFyIGkgaW4gYSkg
eworICAgICAgICBpZiAoaS5zZWFyY2goL15bYS16QS1aMC05XSskLykgIT0gLTEpCisgICAgICAg
ICAgbmFtZSA9IGk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBuYW1lID0gJyInICsgaS5yZXBs
YWNlKC8iL2csICdcXCInKSArICciJzsKKyAgICAgICAgdmFyIGFpOworICAgICAgICB0cnkgeyBh
aSA9IGFbaV07IH0KKyAgICAgICAgY2F0Y2goZSkgeyBhaSA9ICdudWxsIC8qRVJST1JfQUNDRVNT
SU5HKi8nOyB9CisgICAgICAgIHZhciBzID0gbmFtZSArICc6JyArIE9iamVjdC50b1NvdXJjZShh
aSwgc2Vlbik7CisgICAgICAgIG1lbWJlcnMucHVzaChzKTsKKyAgICAgIH0KKyAgICB9IGNhdGNo
IChlKSB7fQorICAgIHZhciBwcmVmaXggPSAnJzsKKyAgICBpZHggPSBzZWVuLmluZGV4T2YoYSk7
CisgICAgaWYgKGlkeCAhPSAtMSkgcHJlZml4ID0gJyMnKyhpZHgrMSkrJz0nOworICAgIHJldHVy
biBwcmVmaXggKyAneycgKyBtZW1iZXJzLmpvaW4oIiwgIikgKyAnfScKKyAgfQorICBpZiAodHlw
ZW9mIGEgPT0gJ2Z1bmN0aW9uJykKKyAgICByZXR1cm4gJygnK2EudG9TdHJpbmcoKS5yZXBsYWNl
KC9cbi9nLCAiICIpLnJlcGxhY2UoL1xzKy9nLCAiICIpKycpJzsKKyAgcmV0dXJuIGEudG9TdHJp
bmcoKTsKK30KKworZnVuY3Rpb24gZm9ybWF0RXJyb3IoZSkgeworICBpZiAod2luZG93LmNvbnNv
bGUpIGNvbnNvbGUubG9nKGUpOworICB2YXIgcGF0aFNlZ3MgPSBsb2NhdGlvbi5ocmVmLnRvU3Ry
aW5nKCkuc3BsaXQoIi8iKTsKKyAgdmFyIGN1cnJlbnREb2MgPSBlLmxpbmVOdW1iZXIgIT0gbnVs
bCA/IHBhdGhTZWdzW3BhdGhTZWdzLmxlbmd0aCAtIDFdIDogbnVsbDsKKyAgdmFyIHRyYWNlID0g
KGUuZmlsZW5hbWUgfHwgY3VycmVudERvYykgKyAiOiIgKyBlLmxpbmVOdW1iZXIgKyAoZS50cmFj
ZSA/ICJcbiIrZS50cmFjZSA6ICIiKTsKKyAgcmV0dXJuIGUubWVzc2FnZSArICJcbiIgKyB0cmFj
ZTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgIHZhciBoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3Qtc3RhdHVzJyk7CisgIGlmIChoID09IG51bGwpIHsKKyAgICBoID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsKKyAgICBoLmlkID0gJ3Rlc3Qtc3RhdHVzJzsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpOworICB9CisgIGgudGV4dENvbnRlbnQgPSAi
IjsKKyAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LWxvZycpOworICBp
ZiAobG9nID09IG51bGwpIHsKKyAgICBsb2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICBsb2cuaWQgPSAndGVzdC1sb2cnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQobG9nKTsKKyAgfQorICB3aGlsZSAobG9nLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkKKyAgICBs
b2cucmVtb3ZlQ2hpbGQobG9nLmZpcnN0Q2hpbGQpOworCisgIHZhciBzZXR1cF9hcmdzID0gW107
CisKKyAgaWYgKFRlc3RzLnN0YXJ0VW5pdCAhPSBudWxsKSB7CisgICAgX190ZXN0TG9nX18gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0cnkgeworICAgICAgc2V0dXBfYXJn
cyA9IFRlc3RzLnN0YXJ0VW5pdCgpOworICAgICAgaWYgKF9fdGVzdExvZ19fLmNoaWxkTm9kZXMu
bGVuZ3RoID4gMCkKKyAgICAgICAgbG9nLmFwcGVuZENoaWxkKF9fdGVzdExvZ19fKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgIHRlc3RGYWlsZWQoInN0YXJ0VW5pdCIsIGZvcm1hdEVycm9yKGUp
KTsKKyAgICAgIGxvZy5hcHBlbmRDaGlsZChfX3Rlc3RMb2dfXyk7CisgICAgICBwcmludFRlc3RT
dGF0dXMoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKworICB2YXIgdGVzdHNSdW4gPSBm
YWxzZTsKKyAgdmFyIGFsbFRlc3RzU3VjY2Vzc2Z1bCA9IHRydWU7CisKKyAgZm9yICh2YXIgaSBp
biBUZXN0cykgeworICAgIGlmIChpLnN1YnN0cmluZygwLDQpICE9ICJ0ZXN0IikgY29udGludWU7
CisgICAgX190ZXN0TG9nX18gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBf
X3Rlc3RTdWNjZXNzX18gPSB0cnVlOworICAgIHRyeSB7CisgICAgICBkb1Rlc3ROb3RpZnkgKGkp
OworICAgICAgdmFyIGFyZ3MgPSBzZXR1cF9hcmdzOworICAgICAgaWYgKFRlc3RzLnNldHVwICE9
IG51bGwpCisgICAgICAgIGFyZ3MgPSBUZXN0cy5zZXR1cC5hcHBseShUZXN0cywgc2V0dXBfYXJn
cyk7CisgICAgICBUZXN0c1tpXS5hcHBseShUZXN0cywgYXJncyk7CisgICAgICBpZiAoVGVzdHMu
dGVhcmRvd24gIT0gbnVsbCkKKyAgICAgICAgVGVzdHMudGVhcmRvd24uYXBwbHkoVGVzdHMsIGFy
Z3MpOworICAgIH0KKyAgICBjYXRjaCAoZSkgeworICAgICAgdGVzdEZhaWxlZChpLCBlLm5hbWUs
IGZvcm1hdEVycm9yKGUpKTsKKyAgICB9CisgICAgaWYgKF9fdGVzdFN1Y2Nlc3NfXyA9PSBmYWxz
ZSkgeworICAgICAgKytfX3Rlc3RGYWlsQ291bnRfXzsKKyAgICB9CisgICAgdmFyIGggPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdoMicpOworICAgIGgudGV4dENvbnRlbnQgPSBpOworICAgIF9f
dGVzdExvZ19fLmluc2VydEJlZm9yZShoLCBfX3Rlc3RMb2dfXy5maXJzdENoaWxkKTsKKyAgICBs
b2cuYXBwZW5kQ2hpbGQoX190ZXN0TG9nX18pOworICAgIGFsbFRlc3RzU3VjY2Vzc2Z1bCA9IGFs
bFRlc3RzU3VjY2Vzc2Z1bCAmJiBfX3Rlc3RTdWNjZXNzX18gPT0gdHJ1ZTsKKyAgICByZXBvcnRU
ZXN0UmVzdWx0c1RvSGFybmVzcyhfX3Rlc3RTdWNjZXNzX18sIGkpOworICAgIGRvVGVzdE5vdGlm
eSAoaSsiLS0iKyhfX3Rlc3RTdWNjZXNzX18/Ik9LIjoiRkFJTCIpKTsKKyAgICB0ZXN0c1J1biA9
IHRydWU7CisgIH0KKworICBwcmludFRlc3RTdGF0dXModGVzdHNSdW4pOworICBpZiAoVGVzdHMu
ZW5kVW5pdCAhPSBudWxsKSB7CisgICAgX190ZXN0TG9nX18gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB0cnkgeworICAgICAgVGVzdHMuZW5kVW5pdC5hcHBseShUZXN0cywg
c2V0dXBfYXJncyk7CisgICAgICBpZiAoX190ZXN0TG9nX18uY2hpbGROb2Rlcy5sZW5ndGggPiAw
KQorICAgICAgICBsb2cuYXBwZW5kQ2hpbGQoX190ZXN0TG9nX18pOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgdGVzdEZhaWxlZCgiZW5kVW5pdCIsIGUubmFtZSwgZm9ybWF0RXJyb3IoZSkpOwor
ICAgICAgbG9nLmFwcGVuZENoaWxkKF9fdGVzdExvZ19fKTsKKyAgICB9CisgIH0KKyAgbm90aWZ5
RmluaXNoZWRUb0hhcm5lc3MoYWxsVGVzdHNTdWNjZXNzZnVsLCAiZmluaXNoZWQgdGVzdHMiKTsK
K30KKworZnVuY3Rpb24gZG9UZXN0Tm90aWZ5KG5hbWUpIHsKKyAgLy90cnnCoHsKKyAgLy8gIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgLy8gIHhoci5vcGVuKCJHRVQiLCAiaHR0
cDovL2xvY2FsaG9zdDo4ODg4LyIrbmFtZSwgdHJ1ZSk7CisgIC8vICB4aHIuc2VuZChudWxsKTsK
KyAgLy99IGNhdGNoKGUpIHt9Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQoYXNzZXJ0TmFtZSwg
bmFtZSkgeworICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICB2YXIg
aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7CisgIHZhciBkMSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgaC5hcHBlbmRDaGlsZChkMSk7CisgIGQxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGQUlMOiAiKSk7CisgIGQxLnN0eWxlLmNvbG9y
ID0gInJlZCI7CisgIGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoCisgICAg
ICBuYW1lPT1udWxsID8gYXNzZXJ0TmFtZSA6IG5hbWUgKyAiIChpbiAiICsgYXNzZXJ0TmFtZSAr
ICIpIikpOworICBkLmFwcGVuZENoaWxkKGgpOworICB2YXIgYXJncyA9IFtdCisgIGZvciAodmFy
IGk9MjsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgYSA9IGFyZ3VtZW50c1tp
XTsKKyAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICBwLnN0eWxl
LndoaXRlU3BhY2UgPSAncHJlJzsKKyAgICBwLnRleHRDb250ZW50ID0gKGEgPT0gbnVsbCkgPyAi
bnVsbCIgOgorICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGEgPT0gJ2Jvb2xlYW4nIHx8IHR5
cGVvZiBhID09ICdzdHJpbmcnKSA/IGEgOiBPYmplY3QudG9Tb3VyY2UoYSk7CisgICAgYXJncy5w
dXNoKHAudGV4dENvbnRlbnQpOworICAgIGQuYXBwZW5kQ2hpbGQocCk7CisgIH0KKyAgX190ZXN0
TG9nX18uYXBwZW5kQ2hpbGQoZCk7CisgIF9fdGVzdFN1Y2Nlc3NfXyA9IGZhbHNlOworICBkb1Rl
c3ROb3RpZnkoW2Fzc2VydE5hbWUsIG5hbWVdLmNvbmNhdChhcmdzKS5qb2luKCItLSIpKTsKK30K
KworZnVuY3Rpb24gdGVzdFBhc3NlZChhc3NlcnROYW1lLCBuYW1lKSB7CisgIGlmICghcXVpZXRN
b2RlKCkpIHsKKyAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHZhciBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDMnKTsKKyAgICB2YXIgZDEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgaC5hcHBlbmRDaGlsZChkMSk7CisgICAg
ZDEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlBBU1M6ICIpKTsKKyAgICBk
MS5zdHlsZS5jb2xvciA9ICJncmVlbiI7CisgICAgaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgKKyAgICAgICAgbmFtZT09bnVsbCA/IGFzc2VydE5hbWUgOiBuYW1lICsgIiAo
aW4gIiArIGFzc2VydE5hbWUgKyAiKSIpKTsKKyAgICBkLmFwcGVuZENoaWxkKGgpOworICAgIHZh
ciBhcmdzID0gW10KKyAgICBmb3IgKHZhciBpPTI7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgYSA9IGFyZ3VtZW50c1tpXTsKKyAgICAgIHZhciBwID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgncCcpOworICAgICAgcC5zdHlsZS53aGl0ZVNwYWNlID0gJ3ByZSc7CisgICAg
ICBwLnRleHRDb250ZW50ID0gKGEgPT0gbnVsbCkgPyAibnVsbCIgOgorICAgICAgICAgICAgICAg
ICAgICAgICh0eXBlb2YgYSA9PSAnYm9vbGVhbicgfHwgdHlwZW9mIGEgPT0gJ3N0cmluZycpID8g
YSA6IE9iamVjdC50b1NvdXJjZShhKTsKKyAgICAgIGFyZ3MucHVzaChwLnRleHRDb250ZW50KTsK
KyAgICAgIGQuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorICAgIF9fdGVzdExvZ19fLmFwcGVuZENo
aWxkKGQpOworICB9CisgIGRvVGVzdE5vdGlmeShbYXNzZXJ0TmFtZSwgbmFtZV0uY29uY2F0KGFy
Z3MpLmpvaW4oIi0tIikpOworfQorCitmdW5jdGlvbiBjaGVja1Rlc3RTdWNjZXNzKCkgeworICBy
ZXR1cm4gX190ZXN0RmFpbENvdW50X18gPT0gMDsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBmdW5jdGlvbigpeworICBmb3IgKHZhciBpPTA7IGk8X19iYWNrbG9nX18ubGVu
Z3RoOyBpKyspCisgICAgbG9nKF9fYmFja2xvZ19fW2ldKTsKK30sIGZhbHNlKTsKKworZnVuY3Rp
b24gbG9nKG1zZykgeworICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAg
dmFyIGEgPSBbXTsKKyAgZm9yICh2YXIgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKyAg
ICBhLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgcC50ZXh0Q29udGVudCA9IGEuam9pbigiLCAiKTsK
KyAgaWYgKCFfX3Rlc3RMb2dfXykgeworICAgIGlmIChkb2N1bWVudC5ib2R5KQorICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChwKTsKKyAgICBlbHNlCisgICAgICBfX2JhY2tsb2dfXy5w
dXNoKG1zZyk7CisgIH0gZWxzZSB7CisgICAgX190ZXN0TG9nX18uYXBwZW5kQ2hpbGQocCk7Cisg
IH0KK30KKworZnVuY3Rpb24gcHJpbnRUZXN0U3RhdHVzKHRlc3RzUnVuKSB7CisgIHZhciBzdGF0
dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1zdGF0dXMnKTsKKyAgaWYgKHRlc3Rz
UnVuKSB7CisgICAgc3RhdHVzLmNsYXNzTmFtZSA9IGNoZWNrVGVzdFN1Y2Nlc3MoKSA/ICdvaycg
OiAnZmFpbCc7CisgICAgc3RhdHVzLnRleHRDb250ZW50ID0gY2hlY2tUZXN0U3VjY2VzcygpID8g
IlBBU1MiIDogIkZBSUwiOworICB9IGVsc2UgeworICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnZmFp
bCc7CisgICAgc3RhdHVzLnRleHRDb250ZW50ID0gIk5PIFRFU1RTIEZPVU5EIjsKKyAgfQorfQor
CitmdW5jdGlvbiBhc3NlcnRGYWlsKG5hbWUsIGYpIHsKKyAgaWYgKGYgPT0gbnVsbCkgeyBmID0g
bmFtZTsgbmFtZSA9IG51bGw7IH0KKyAgdmFyIHIgPSBmYWxzZTsKKyAgdHJ5IHsgZigpOyB9IGNh
dGNoKGUpIHsgcj10cnVlOyB9CisgIGlmICghcikgeworICAgIHRlc3RGYWlsZWQoImFzc2VydEZh
aWwiLCBuYW1lLCBmKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0gZWxzZSB7CisgICAgdGVzdFBh
c3NlZCgiYXNzZXJ0RmFpbCIsIG5hbWUsIGYpOworICAgIHJldHVybiB0cnVlOworICB9Cit9CisK
K2Z1bmN0aW9uIGFzc2VydE9rKG5hbWUsIGYpIHsKKyAgaWYgKGYgPT0gbnVsbCkgeyBmID0gbmFt
ZTsgbmFtZSA9IG51bGw7IH0KKyAgdmFyIHIgPSBmYWxzZTsKKyAgdmFyIGVycjsKKyAgdHJ5IHsg
ZigpOyByPXRydWU7IH0gY2F0Y2goZSkgeyBlcnIgPSBlOyB9CisgIGlmICghcikgeworICAgIHRl
c3RGYWlsZWQoImFzc2VydE9rIiwgbmFtZSwgZiwgZXJyLnRvU3RyaW5nKCkpOworICAgIHJldHVy
biBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJhc3NlcnRPayIsIG5hbWUsIGYp
OworICAgIHJldHVybiB0cnVlOworICB9Cit9CisKK2Z1bmN0aW9uIGFzc2VydChuYW1lLCB2KSB7
CisgIGlmICh2ID09IG51bGwpIHsgdiA9IG5hbWU7IG5hbWUgPSBudWxsOyB9CisgIGlmICghdikg
eworICAgIHRlc3RGYWlsZWQoImFzc2VydCIsIG5hbWUsIHYpOworICAgIHJldHVybiBmYWxzZTsK
KyAgfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJhc3NlcnQiLCBuYW1lLCB2KTsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRQcm9wZXJ0eShuYW1lLCB2LCBwKSB7
CisgIGlmIChwID09IG51bGwpIHsgcCA9IHY7IHYgPSBuYW1lOyBuYW1lID0gcDsgfQorICBpZiAo
dltwXSA9PSBudWxsKSB7CisgICAgdGVzdEZhaWxlZCgiYXNzZXJ0UHJvcGVydHkiLCBuYW1lKTsK
KyAgICByZXR1cm4gZmFsc2U7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiYXNzZXJ0UHJv
cGVydHkiLCBuYW1lKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBjb21w
YXJlKGEsYikgeworICBpZiAodHlwZW9mIGEgPT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT0gJ251
bWJlcicpIHsKKyAgICByZXR1cm4gYSA9PSBiOworICB9IGVsc2UgeworICAgIHJldHVybiBPYmpl
Y3QudG9Tb3VyY2UoYSkgPT0gT2JqZWN0LnRvU291cmNlKGIpOworICB9Cit9CisKK2Z1bmN0aW9u
IGFzc2VydEVxdWFscyhuYW1lLCB2LCBwKSB7CisgIGlmIChwID09IG51bGwpIHsgcCA9IHY7IHYg
PSBuYW1lOyBuYW1lID0gbnVsbDsgfQorICBpZiAoIWNvbXBhcmUodiwgcCkpIHsKKyAgICB0ZXN0
RmFpbGVkKCJhc3NlcnRFcXVhbHMiLCBuYW1lLCB2LCBwKTsKKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiYXNzZXJ0RXF1YWxzIiwgbmFtZSwgdiwgcCk7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVhbHMobmFt
ZSwgdiwgcCkgeworICBpZiAocCA9PSBudWxsKSB7IHAgPSB2OyB2ID0gbmFtZTsgbmFtZSA9IG51
bGw7IH0KKyAgaWYgKCF2KSB7CisgICAgdGVzdEZhaWxlZCgiYXNzZXJ0QXJyYXlFcXVhbHM6IGZp
cnN0IGFycmF5IHVuZGVmaW5lZCIsIG5hbWUsIHYsIHApOworICAgIHJldHVybiBmYWxzZTsKKyAg
fQorICBpZiAoIXApIHsKKyAgICB0ZXN0RmFpbGVkKCJhc3NlcnRBcnJheUVxdWFsczogc2Vjb25k
IGFycmF5IHVuZGVmaW5lZCIsIG5hbWUsIHYsIHApOworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
ICBpZiAodi5sZW5ndGggIT0gcC5sZW5ndGgpIHsKKyAgICB0ZXN0RmFpbGVkKCJhc3NlcnRBcnJh
eUVxdWFscyIsIG5hbWUsIHYsIHApOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgdi5sZW5ndGg7ICsraWkpIHsKKyAgICBpZiAodltpaV0gIT0gcFtpaV0p
IHsKKyAgICAgIHRlc3RGYWlsZWQoImFzc2VydEFycmF5RXF1YWxzIiwgbmFtZSwgdiwgcCk7Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQoImFzc2VydEFycmF5
RXF1YWxzIiwgbmFtZSwgdiwgcCk7CisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBhc3Nl
cnRBcnJheUVxdWFsc1dpdGhFcHNpbG9uKG5hbWUsIHYsIHAsIGwpIHsKKyAgaWYgKGwgPT0gbnVs
bCkgeyBsID0gcDsgcCA9IHY7IHYgPSBuYW1lOyBuYW1lID0gbnVsbDsgfQorICBpZiAoIXYpIHsK
KyAgICB0ZXN0RmFpbGVkKCJhc3NlcnRBcnJheUVxdWFsc1dpdGhFcHNpbG9uOiBmaXJzdCBhcnJh
eSB1bmRlZmluZWQiLCBuYW1lLCB2LCBwKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYg
KCFwKSB7CisgICAgdGVzdEZhaWxlZCgiYXNzZXJ0QXJyYXlFcXVhbHNXaXRoRXBzaWxvbjogc2Vj
b25kIGFycmF5IHVuZGVmaW5lZCIsIG5hbWUsIHYsIHApOworICAgIHJldHVybiBmYWxzZTsKKyAg
fQorICBpZiAoIWwpIHsKKyAgICB0ZXN0RmFpbGVkKCJhc3NlcnRBcnJheUVxdWFsc1dpdGhFcHNp
bG9uOiBsaW1pdCBhcnJheSB1bmRlZmluZWQiLCBuYW1lLCB2LCBwKTsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKyAgaWYgKHYubGVuZ3RoICE9IHAubGVuZ3RoKSB7CisgICAgdGVzdEZhaWxlZCgi
YXNzZXJ0QXJyYXlFcXVhbHNXaXRoRXBzaWxvbiIsIG5hbWUsIHYsIHAsIGwpOworICAgIHJldHVy
biBmYWxzZTsKKyAgfQorICBpZiAodi5sZW5ndGggIT0gbC5sZW5ndGgpIHsKKyAgICB0ZXN0RmFp
bGVkKCJhc3NlcnRBcnJheUVxdWFsc1dpdGhFcHNpbG9uIiwgbmFtZSwgdiwgcCwgbCk7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB2Lmxlbmd0aDsgKytp
aSkgeworICAgIGlmIChNYXRoLmFicyh2W2lpXS0gcFtpaV0pPmxbaWldKSB7CisgICAgICB0ZXN0
RmFpbGVkKCJhc3NlcnRBcnJheUVxdWFsc1dpdGhFcHNpbG9uIiwgbmFtZSwgdiwgcCwgbCk7Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQoImFzc2VydEFycmF5
RXF1YWxzV2l0aEVwc2lsb24iLCBuYW1lLCB2LCBwLCBsKTsKKyAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhuYW1lLCB2LCBwKSB7CisgIGlmIChwID09IG51bGwp
IHsgcCA9IHY7IHYgPSBuYW1lOyBuYW1lID0gbnVsbDsgfQorICBpZiAoY29tcGFyZSh2LCBwKSkg
eworICAgIHRlc3RGYWlsZWQoImFzc2VydE5vdEVxdWFscyIsIG5hbWUsIHYsIHApCisgICAgcmV0
dXJuIGZhbHNlOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImFzc2VydE5vdEVxdWFscyIs
IG5hbWUsIHYsIHApCisgICAgcmV0dXJuIHRydWU7CisgIH0KK30KKworZnVuY3Rpb24gdGltZShl
bGVtZW50SWQsIGYpIHsKKyAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1l
bnRJZCk7CisgICAgdmFyIHQwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAgZigpOworICAg
IHZhciB0MSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIHMudGV4dENvbnRlbnQgPSAnRWxh
cHNlZDogJysodDEtdDApKycgbXMnOworfQorCitmdW5jdGlvbiByYW5kb21GbG9hdCAoKSB7Cisg
ICAgLy8gbm90ZSB0aGF0IGluIGZ1enotdGVzdGluZywgdGhpcyBjYW4gdXNlZCBhcyB0aGUgc2l6
ZSBvZiBhIGJ1ZmZlciB0byBhbGxvY2F0ZS4KKyAgICAvLyBzbyBpdCBzaG91bGRuJ3QgcmV0dXJu
IGFzdHJvbm9taWMgdmFsdWVzLiBUaGUgbWF4aW11bSB2YWx1ZSAxMDAwMDAwMCBpcyBhbHJlYWR5
IHF1aXRlIGJpZy4KKyAgICB2YXIgZmFjID0gMS4wOworICAgIHZhciByID0gTWF0aC5yYW5kb20o
KTsKKyAgICBpZiAociA8IDAuMjUpCisgICAgICAgIGZhYyA9IDEwOworICAgIGVsc2UgaWYgKHIg
PCAwLjQpCisgICAgICAgIGZhYyA9IDEwMDsKKyAgICBlbHNlIGlmIChyIDwgMC41KQorICAgICAg
ICBmYWMgPSAxMDAwOworICAgIGVsc2UgaWYgKHIgPCAwLjYpCisgICAgICAgIGZhYyA9IDEwMDAw
MDsKKyAgICBlbHNlIGlmIChyIDwgMC43KQorICAgICAgICBmYWMgPSAxMDAwMDAwMDsKKyAgICBl
bHNlIGlmIChyIDwgMC44KQorICAgICAgICBmYWMgPSBOYU47CisgICAgcmV0dXJuIC0wLjUqZmFj
ICsgTWF0aC5yYW5kb20oKSAqIGZhYzsKK30KK2Z1bmN0aW9uIHJhbmRvbUZsb2F0RnJvbVJhbmdl
KGxvLCBoaSkgeworICB2YXIgciA9IE1hdGgucmFuZG9tKCk7CisgIGlmIChyIDwgMC4wNSkKKyAg
ICByZXR1cm4gbG87CisgIGVsc2UgaWYgKHIgPiAwLjk1KQorICAgIHJldHVybiBoaTsKKyAgZWxz
ZQorICAgIHJldHVybiBsbyArIE1hdGgucmFuZG9tKCkqKGhpLWxvKTsKK30KK2Z1bmN0aW9uIHJh
bmRvbUludCAoc3opIHsKKyAgaWYgKHN6ICE9IG51bGwpCisgICAgcmV0dXJuIE1hdGguZmxvb3Io
TWF0aC5yYW5kb20oKSpzeik7CisgIGVsc2UKKyAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb21G
bG9hdCgpKTsKK30KK2Z1bmN0aW9uIHJhbmRvbUludEZyb21SYW5nZShsbywgaGkpIHsKKyAgcmV0
dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXRGcm9tUmFuZ2UobG8sIGhpKSk7Cit9CitmdW5jdGlv
biByYW5kb21MZW5ndGggKCkgeworICAgIHZhciBsID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp
ICogMjU2KTsKKyAgICBpZiAoTWF0aC5yYW5kb20gPCAwLjUpIGwgPSBsIC8gMTA7CisgICAgaWYg
KE1hdGgucmFuZG9tIDwgMC4zKSBsID0gbCAvIDEwOworICAgIHJldHVybiBsOworfQorZnVuY3Rp
b24gcmFuZG9tU21hbGxJbnRBcnJheSAoKSB7CisgICAgdmFyIGwgPSByYW5kb21MZW5ndGgoKTsK
KyAgICB2YXIgcyA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpPTA7IGk8bDsgaSsrKQor
ICAgICAgICBzW2ldID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KS0xOworICAgIHJl
dHVybiBzOworfQorZnVuY3Rpb24gcmFuZG9tRmxvYXRBcnJheSAoKSB7CisgICAgdmFyIGwgPSBy
YW5kb21MZW5ndGgoKTsKKyAgICB2YXIgcyA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBp
PTA7IGk8bDsgaSsrKQorICAgICAgICBzW2ldID0gcmFuZG9tRmxvYXQoKTsKKyAgICByZXR1cm4g
czsKK30KK2Z1bmN0aW9uIHJhbmRvbUludEFycmF5ICgpIHsKKyAgICB2YXIgbCA9IHJhbmRvbUxl
bmd0aCgpOworICAgIHZhciBzID0gbmV3IEFycmF5KGwpOworICAgIGZvciAodmFyIGk9MDsgaTxs
OyBpKyspCisgICAgICAgIHNbaV0gPSByYW5kb21GbG9hdCgpOworICAgIHJldHVybiBzOworfQor
ZnVuY3Rpb24gcmFuZG9tTWl4ZWRBcnJheSAoKSB7CisgICAgdmFyIGwgPSByYW5kb21MZW5ndGgo
KTsKKyAgICB2YXIgcyA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpPTA7IGk8bDsgaSsr
KQorICAgICAgICBzW2ldID0gcmFuZG9tTm9uQXJyYXkoKTsKKyAgICByZXR1cm4gczsKK30KK2Z1
bmN0aW9uIHJhbmRvbUFycmF5ICgpIHsKKyAgICB2YXIgciA9IE1hdGgucmFuZG9tKCk7CisgICAg
aWYgKHIgPCAwLjMpCisgICAgICAgIHJldHVybiByYW5kb21GbG9hdEFycmF5KCk7CisgICAgZWxz
ZSBpZiAociA8IDAuNikKKyAgICAgICAgcmV0dXJuIHJhbmRvbUludEFycmF5KCk7CisgICAgZWxz
ZSBpZiAociA8IDAuOCkKKyAgICAgICAgcmV0dXJuIHJhbmRvbVNtYWxsSW50QXJyYXkoKTsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiByYW5kb21NaXhlZEFycmF5KCk7Cit9CitmdW5jdGlvbiBy
YW5kb21TdHJpbmcgKCkgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0
cmluZywgcmFuZG9tU21hbGxJbnRBcnJheSgpKTsKK30KK2Z1bmN0aW9uIHJhbmRvbUdMQ29uc3Rh
bnQgKCkgeworICAgIHJldHVybiBHTENvbnN0YW50c1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkg
KiBHTENvbnN0YW50cy5sZW5ndGgpXTsKK30KKworZnVuY3Rpb24gcmFuZG9tTm9uQXJyYXkoKSB7
CisgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpOworICAgIGlmIChyIDwgMC4yNSkgeworICAgICAg
ICByZXR1cm4gcmFuZG9tRmxvYXQoKTsKKyAgICB9IGVsc2UgaWYgKHIgPCAwLjYpIHsKKyAgICAg
ICAgcmV0dXJuIHJhbmRvbUludCgpOworICAgIH0gZWxzZSBpZiAociA8IDAuNykgeworICAgICAg
ICByZXR1cm4gKHIgPCAwLjY1KTsKKyAgICB9IGVsc2UgaWYgKHIgPCAwLjg3KSB7CisgICAgICAg
IHJldHVybiByYW5kb21TdHJpbmcoKTsKKyAgICB9IGVsc2UgaWYgKHIgPCAwLjk4KSB7CisgICAg
ICAgIHJldHVybiByYW5kb21HTENvbnN0YW50KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorfQorCitmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUFyZyhwb3MsIGNv
dW50KSB7CisgICAgaWYgKHBvcyA9PSAwICYmIE1hdGgucmFuZG9tKCkgPCAwLjUpCisgICAgICAg
IHJldHVybiByYW5kb21HTENvbnN0YW50KCk7CisgICAgaWYgKHBvcyA9PSBjb3VudC0xICYmIE1h
dGgucmFuZG9tKCkgPCAwLjI1KQorICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA8IDAuNSkKKyAg
ICAgICAgICAgIHJldHVybiByYW5kb21TdHJpbmcoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIHJhbmRvbUFycmF5KCk7CisgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpOworICAg
IGlmIChyIDwgMC4yNSkgeworICAgICAgICByZXR1cm4gcmFuZG9tRmxvYXQoKTsKKyAgICB9IGVs
c2UgaWYgKHIgPCAwLjYpIHsKKyAgICAgICAgcmV0dXJuIHJhbmRvbUludCgpOworICAgIH0gZWxz
ZSBpZiAociA8IDAuNykgeworICAgICAgICByZXR1cm4gKHIgPCAwLjY1KTsKKyAgICB9IGVsc2Ug
aWYgKHIgPCAwLjc3KSB7CisgICAgICAgIHJldHVybiByYW5kb21TdHJpbmcoKTsKKyAgICB9IGVs
c2UgaWYgKHIgPCAwLjg0KSB7CisgICAgICAgIHJldHVybiByYW5kb21BcnJheSgpOworICAgIH0g
ZWxzZSBpZiAociA8IDAuOTgpIHsKKyAgICAgICAgcmV0dXJuIHJhbmRvbUdMQ29uc3RhbnQoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKKworZnVuY3Rp
b24gZ2VuZXJhdGVSYW5kb21BcmdzKGNvdW50KSB7CisgICAgdmFyIGFyciA9IG5ldyBBcnJheShj
b3VudCk7CisgICAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspCisgICAgICAgIGFycltpXSA9
IGdlbmVyYXRlUmFuZG9tQXJnKGksIGNvdW50KTsKKyAgICByZXR1cm4gYXJyOworfQorCisvLyBx
YyAoYXJnMWdlbiwgYXJnMmdlbiwgLi4uLCBwcmVkaWNhdGUpCisvLyBxYyAocmFuZG9tU3RyaW5n
LCByYW5kb21JbnQsIHJhbmRvbUludCwgZnVuY3Rpb24ocyxpLGopeyBzLnN1YnN0cmluZyhpLGop
IH0pCitmdW5jdGlvbiBxYygpIHsKK30KKworR0xDb25zdGFudHMgPSBbCisxLAorMHgwMDAwMDEw
MCwKKzB4MDAwMDA0MDAsCisweDAwMDA0MDAwLAorMHgwMDAwLAorMHgwMDAxLAorMHgwMDAyLAor
MHgwMDAzLAorMHgwMDA0LAorMHgwMDA1LAorMHgwMDA2LAorMCwKKzEsCisweDAzMDAsCisweDAz
MDEsCisweDAzMDIsCisweDAzMDMsCisweDAzMDQsCisweDAzMDUsCisweDAzMDYsCisweDAzMDcs
CisweDAzMDgsCisweDgwMDYsCisweDgwMDksCisweDgwMDksCisweDg4M0QsCisweDgwMEEsCisw
eDgwMEIsCisweDgwQzgsCisweDgwQzksCisweDgwQ0EsCisweDgwQ0IsCisweDgwMDEsCisweDgw
MDIsCisweDgwMDMsCisweDgwMDQsCisweDgwMDUsCisweDg4OTIsCisweDg4OTMsCisweDg4OTQs
CisweDg4OTUsCisweDg4RTAsCisweDg4RTQsCisweDg4RTgsCisweDg3NjQsCisweDg3NjUsCisw
eDg2MjYsCisweDA0MDQsCisweDA0MDUsCisweDA0MDgsCisweDBERTEsCisweDBCNDQsCisweDBC
RTIsCisweDBCRDAsCisweDBCOTAsCisweDBCNzEsCisweDBDMTEsCisweDgwMzcsCisweDgwOUUs
CisweDgwQTAsCiswLAorMHgwNTAwLAorMHgwNTAxLAorMHgwNTAyLAorMHgwNTA1LAorMHgwOTAw
LAorMHgwOTAxLAorMHgwQjIxLAorMHg4NDZELAorMHg4NDZFLAorMHgwQjQ1LAorMHgwQjQ2LAor
MHgwQjcwLAorMHgwQjcyLAorMHgwQjczLAorMHgwQjc0LAorMHgwQjkxLAorMHgwQjkyLAorMHgw
Qjk0LAorMHgwQjk1LAorMHgwQjk2LAorMHgwQjk3LAorMHgwQjkzLAorMHgwQjk4LAorMHg4ODAw
LAorMHg4ODAxLAorMHg4ODAyLAorMHg4ODAzLAorMHg4Q0EzLAorMHg4Q0E0LAorMHg4Q0E1LAor
MHgwQkEyLAorMHgwQzEwLAorMHgwQzIyLAorMHgwQzIzLAorMHgwQ0Y1LAorMHgwRDA1LAorMHgw
RDMzLAorMHgwRDNBLAorMHgwRDUwLAorMHgwRDUyLAorMHgwRDUzLAorMHgwRDU0LAorMHgwRDU1
LAorMHgwRDU2LAorMHgwRDU3LAorMHgyQTAwLAorMHg4MDM4LAorMHg4MDY5LAorMHg4MEE4LAor
MHg4MEE5LAorMHg4MEFBLAorMHg4MEFCLAorMHg4NkEyLAorMHg4NkEzLAorMHgxMTAwLAorMHgx
MTAxLAorMHgxMTAyLAorMHg4MTkyLAorMHgxNDAwLAorMHgxNDAxLAorMHgxNDAyLAorMHgxNDAz
LAorMHgxNDA0LAorMHgxNDA1LAorMHgxNDA2LAorMHgxNDBDLAorMHgxOTAyLAorMHgxOTA2LAor
MHgxOTA3LAorMHgxOTA4LAorMHgxOTA5LAorMHgxOTBBLAorMHg4MDMzLAorMHg4MDM0LAorMHg4
MzYzLAorMHg4QjMwLAorMHg4QjMxLAorMHg4ODY5LAorMHg4REZCLAorMHg4REZDLAorMHg4QjRE
LAorMHg4QjRDLAorMHg4ODcyLAorMHg4REZELAorMHg4QjRGLAorMHg4QjgwLAorMHg4QjgyLAor
MHg4QjgzLAorMHg4Qjg1LAorMHg4Qjg2LAorMHg4Qjg3LAorMHg4Qjg5LAorMHg4QjhBLAorMHg4
QjhDLAorMHg4QjhELAorMHgwMjAwLAorMHgwMjAxLAorMHgwMjAyLAorMHgwMjAzLAorMHgwMjA0
LAorMHgwMjA1LAorMHgwMjA2LAorMHgwMjA3LAorMHgxRTAwLAorMHgxRTAxLAorMHgxRTAyLAor
MHgxRTAzLAorMHgxNTBBLAorMHg4NTA3LAorMHg4NTA4LAorMHgxRjAwLAorMHgxRjAxLAorMHgx
RjAyLAorMHgxRjAzLAorMHgyNjAwLAorMHgyNjAxLAorMHgyNzAwLAorMHgyNzAxLAorMHgyNzAy
LAorMHgyNzAzLAorMHgyODAwLAorMHgyODAxLAorMHgyODAyLAorMHgyODAzLAorMHgxNzAyLAor
MHg4NTEzLAorMHg4NTE0LAorMHg4NTE1LAorMHg4NTE2LAorMHg4NTE3LAorMHg4NTE4LAorMHg4
NTE5LAorMHg4NTFBLAorMHg4NTFDLAorMHg4NEMwLAorMHg4NEMxLAorMHg4NEMyLAorMHg4NEMz
LAorMHg4NEM0LAorMHg4NEM1LAorMHg4NEM2LAorMHg4NEM3LAorMHg4NEM4LAorMHg4NEM5LAor
MHg4NENBLAorMHg4NENCLAorMHg4NENDLAorMHg4NENELAorMHg4NENFLAorMHg4NENGLAorMHg4
NEQwLAorMHg4NEQxLAorMHg4NEQyLAorMHg4NEQzLAorMHg4NEQ0LAorMHg4NEQ1LAorMHg4NEQ2
LAorMHg4NEQ3LAorMHg4NEQ4LAorMHg4NEQ5LAorMHg4NERBLAorMHg4NERCLAorMHg4NERDLAor
MHg4NERELAorMHg4NERFLAorMHg4NERGLAorMHg4NEUwLAorMHgyOTAxLAorMHg4MTJGLAorMHg4
MzcwLAorMHg4QjUwLAorMHg4QjUxLAorMHg4QjUyLAorMHg4QjUzLAorMHg4QjU0LAorMHg4QjU1
LAorMHg4QjU2LAorMHg4QjU3LAorMHg4QjU4LAorMHg4QjU5LAorMHg4QjVBLAorMHg4QjVCLAor
MHg4QjVDLAorMHg4QjVFLAorMHg4QjYwLAorMHg4NjIyLAorMHg4NjIzLAorMHg4NjI0LAorMHg4
NjI1LAorMHg4ODZBLAorMHg4NjQ1LAorMHg4ODlGLAorMHg4QjlBLAorMHg4QjlCLAorMHg4Qjgx
LAorMHg4Qjg0LAorMHg4Qjg4LAorMHg4REZBLAorMHg4REY4LAorMHg4REY5LAorMHg4REYwLAor
MHg4REYxLAorMHg4REYyLAorMHg4REYzLAorMHg4REY0LAorMHg4REY1LAorMHg4RDQwLAorMHg4
RDQxLAorMHg4MDU2LAorMHg4MDU3LAorMHg4RDYyLAorMHg4MUE1LAorMHgxOTAxLAorMHg4RDQ4
LAorMHg4RDQyLAorMHg4RDQzLAorMHg4RDQ0LAorMHg4RDUwLAorMHg4RDUxLAorMHg4RDUyLAor
MHg4RDUzLAorMHg4RDU0LAorMHg4RDU1LAorMHg4Q0QwLAorMHg4Q0QxLAorMHg4Q0QyLAorMHg4
Q0QzLAorMHg4Q0UwLAorMHg4RDAwLAorMHg4RDIwLAorMCwKKzB4OENENSwKKzB4OENENiwKKzB4
OENENywKKzB4OENEOSwKKzB4OENERCwKKzB4OENBNiwKKzB4OENBNywKKzB4ODRFOCwKKzB4MDUw
NiwKKzB4ODA5RAorXTsKKworZnVuY3Rpb24gcmVwb3J0VGVzdFJlc3VsdHNUb0hhcm5lc3Moc3Vj
Y2VzcywgbXNnKSB7CisgIGlmICh3aW5kb3cucGFyZW50LndlYmdsVGVzdEhhcm5lc3MpIHsKKyAg
ICB3aW5kb3cucGFyZW50LndlYmdsVGVzdEhhcm5lc3MucmVwb3J0UmVzdWx0cyh3aW5kb3cubG9j
YXRpb24ucGF0aG5hbWUsIHN1Y2Nlc3MsIG1zZyk7CisgIH0KK30KKworZnVuY3Rpb24gbm90aWZ5
RmluaXNoZWRUb0hhcm5lc3MoKSB7CisgIGlmICh3aW5kb3cucGFyZW50LndlYmdsVGVzdEhhcm5l
c3MpIHsKKyAgICB3aW5kb3cucGFyZW50LndlYmdsVGVzdEhhcm5lc3Mubm90aWZ5RmluaXNoZWQo
d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgfQorfQorCitmdW5jdGlvbiBpbml0VGVzdHMo
KSB7CisgIGlmIChUZXN0cy5tZXNzYWdlICE9IG51bGwpIHsKKyAgICB2YXIgaCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0LW1lc3NhZ2UnKTsKKyAgICBpZiAoaCA9PSBudWxsKSB7Cisg
ICAgICBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgaC5pZCA9ICd0ZXN0
LW1lc3NhZ2UnOworICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoaCwgZG9jdW1lbnQu
Ym9keS5maXJzdENoaWxkKTsKKyAgICB9CisgICAgaC50ZXh0Q29udGVudCA9IFRlc3RzLm1lc3Nh
Z2U7CisgIH0KKyAgaWYgKFRlc3RzLmF1dG9ydW4pIHsKKyAgICBydW5UZXN0cygpOworICB9IGVs
c2UgeworICAgIHZhciBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QtcnVuJyk7Cisg
ICAgaWYgKGggPT0gbnVsbCkgeworICAgICAgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lu
cHV0Jyk7CisgICAgICBoLnR5cGUgPSAnc3VibWl0JzsKKyAgICAgIGgudmFsdWUgPSAiUnVuIHRl
c3RzIjsKKyAgICAgIGguYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7Cisg
ICAgICAgIHJ1blRlc3RzKCk7CisgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CisgICAgICB9
LCBmYWxzZSk7CisgICAgICBoLmlkID0gJ3Rlc3QtcnVuJzsKKyAgICAgIGRvY3VtZW50LmJvZHku
aW5zZXJ0QmVmb3JlKGgsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAgfQorICAgIGgu
dGV4dENvbnRlbnQgPSBUZXN0cy5tZXNzYWdlOworICB9CisKK30KKword2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpeworICBpZiAoVGVzdHMuYXV0b2luaXQpIHsKKyAg
ICAvLyBsZXQgdGhlIGJyb3dzZXIgaG9wZWZ1bGx5IGZpbmlzaCB1cGRhdGluZyB0aGUgZ2wgY2Fu
dmFzIHN1cmZhY2VzIGlmIHdlIGFyZSBnaXZlbiBhIGRlbGF5CisgICAgaWYgKFRlc3RzLmRlbGF5
KQorICAgICAgc2V0VGltZW91dChpbml0VGVzdHMsIFRlc3RzLmRlbGF5KTsKKyAgICBlbHNlCisg
ICAgICBpbml0VGVzdHMoKQorICB9Cit9LCBmYWxzZSk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL21vcmUvdXRp
bC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL21vcmUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGNjMDhhNjUyYjlmNWQxNGU0MDZmZTRk
Yjc3OTkwZGNmMDA1MjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvbW9yZS91dGlsLmpzCkBAIC0wLDAg
KzEsMTI4NyBAQAorLyoKK1V0aWxpdGllcyBmb3IgdGhlIE9wZW5HTCBFUyAyLjAgSFRNTCBDYW52
YXMgY29udGV4dAorKi8KKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCitmdW5jdGlvbiBsb2FkVGV4dHVyZShnbCwgZWxlbSwgbWlwbWFwcykgeworICB2YXIgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGVsZW0pOworICBpZiAobWlwbWFwcyAhPSBmYWxzZSkKKyAgICBn
bC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RP
X0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFH
X0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgaWYgKG1pcG1hcHMpCisgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUl9NSVBNQVBf
TElORUFSKTsKKyAgZWxzZQorICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICByZXR1cm4gdGV4OworfQorCitmdW5j
dGlvbiBnZXRTaGFkZXIoZ2wsIGlkKSB7CisgIHZhciBzaGFkZXJTY3JpcHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCk7CisgIGlmICghc2hhZGVyU2NyaXB0KSB7CisgICAgdGhyb3cobmV3
IEVycm9yKCJObyBzaGFkZXIgZWxlbWVudCB3aXRoIGlkOiAiK2lkKSk7CisgIH0KKworICB2YXIg
c3RyID0gIiI7CisgIHZhciBrID0gc2hhZGVyU2NyaXB0LmZpcnN0Q2hpbGQ7CisgIHdoaWxlIChr
KSB7CisgICAgaWYgKGsubm9kZVR5cGUgPT0gMykKKyAgICAgIHN0ciArPSBrLnRleHRDb250ZW50
OworICAgIGsgPSBrLm5leHRTaWJsaW5nOworICB9CisKKyAgdmFyIHNoYWRlcjsKKyAgaWYgKHNo
YWRlclNjcmlwdC50eXBlID09ICJ4LXNoYWRlci94LWZyYWdtZW50IikgeworICAgIHNoYWRlciA9
IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICB9IGVsc2UgaWYgKHNoYWRl
clNjcmlwdC50eXBlID09ICJ4LXNoYWRlci94LXZlcnRleCIpIHsKKyAgICBzaGFkZXIgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgIH0gZWxzZSB7CisgICAgdGhyb3cobmV3
IEVycm9yKCJVbmtub3duIHNoYWRlciB0eXBlICIrc2hhZGVyU2NyaXB0LnR5cGUpKTsKKyAgfQor
CisgIGdsLnNoYWRlclNvdXJjZShzaGFkZXIsIHN0cik7CisgIGdsLmNvbXBpbGVTaGFkZXIoc2hh
ZGVyKTsKKworICBpZiAoZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuQ09NUElMRV9T
VEFUVVMpICE9IDEpIHsKKyAgICB2YXIgaWxvZyA9IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVy
KTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICB0aHJvdyhuZXcgRXJyb3IoIkZh
aWxlZCB0byBjb21waWxlIHNoYWRlciAiK3NoYWRlclNjcmlwdC5pZCArICIsIFNoYWRlciBpbmZv
IGxvZzogIiArIGlsb2cpKTsKKyAgfQorICByZXR1cm4gc2hhZGVyOworfQorCitmdW5jdGlvbiBs
b2FkU2hhZGVyQXJyYXkoZ2wsIHNoYWRlcnMpIHsKKyAgdmFyIGlkID0gZ2wuY3JlYXRlUHJvZ3Jh
bSgpOworICB2YXIgc2hhZGVyT2JqcyA9IFtdOworICBmb3IgKHZhciBpPTA7IGk8c2hhZGVycy5s
ZW5ndGg7ICsraSkgeworICAgIHRyeSB7CisgICAgICB2YXIgc2ggPSBnZXRTaGFkZXIoZ2wsIHNo
YWRlcnNbaV0pOworICAgICAgc2hhZGVyT2Jqcy5wdXNoKHNoKTsKKyAgICAgIGdsLmF0dGFjaFNo
YWRlcihpZCwgc2gpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHZhciBwciA9IHtwcm9ncmFt
OiBpZCwgc2hhZGVyczogc2hhZGVyT2Jqc307CisgICAgICBkZWxldGVTaGFkZXIoZ2wsIHByKTsK
KyAgICAgIHRocm93IChlKTsKKyAgICB9CisgIH0KKyAgdmFyIHByb2cgPSB7cHJvZ3JhbTogaWQs
IHNoYWRlcnM6IHNoYWRlck9ianN9OworICBnbC5saW5rUHJvZ3JhbShpZCk7CisgIGdsLnZhbGlk
YXRlUHJvZ3JhbShpZCk7CisgIGlmIChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGlkLCBnbC5MSU5L
X1NUQVRVUykgIT0gMSkgeworICAgIGRlbGV0ZVNoYWRlcihnbCxwcm9nKTsKKyAgICB0aHJvdyhu
ZXcgRXJyb3IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciIpKTsKKyAgfQorICBpZiAoZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihpZCwgZ2wuVkFMSURBVEVfU1RBVFVTKSAhPSAxKSB7CisgICAgZGVsZXRl
U2hhZGVyKGdsLHByb2cpOworICAgIHRocm93KG5ldyBFcnJvcigiRmFpbGVkIHRvIHZhbGlkYXRl
IHNoYWRlciIpKTsKKyAgfQorICByZXR1cm4gcHJvZzsKK30KK2Z1bmN0aW9uIGxvYWRTaGFkZXIo
Z2wpIHsKKyAgdmFyIHNoID0gW107CisgIGZvciAodmFyIGk9MTsgaTxhcmd1bWVudHMubGVuZ3Ro
OyArK2kpCisgICAgc2gucHVzaChhcmd1bWVudHNbaV0pOworICByZXR1cm4gbG9hZFNoYWRlckFy
cmF5KGdsLCBzaCk7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVNoYWRlcihnbCwgc2gpIHsKKyAgZ2wu
dXNlUHJvZ3JhbShudWxsKTsKKyAgc2guc2hhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHMpeworICAg
IGdsLmRldGFjaFNoYWRlcihzaC5wcm9ncmFtLCBzKTsKKyAgICBnbC5kZWxldGVTaGFkZXIocyk7
CisgIH0pOworICBnbC5kZWxldGVQcm9ncmFtKHNoLnByb2dyYW0pOworfQorCitmdW5jdGlvbiBn
ZXRHTEVycm9yQXNTdHJpbmcoY3R4LCBlcnIpIHsKKyAgaWYgKGVyciA9PT0gY3R4Lk5PX0VSUk9S
KSB7CisgICAgcmV0dXJuICJOT19FUlJPUiI7CisgIH0KKyAgZm9yICh2YXIgbmFtZSBpbiBjdHgp
IHsKKyAgICBpZiAoY3R4W25hbWVdID09PSBlcnIpIHsKKyAgICAgIHJldHVybiBuYW1lOworICAg
IH0KKyAgfQorICByZXR1cm4gZXJyLnRvU3RyaW5nKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRXJy
b3IoZ2wsIG1zZykgeworICB2YXIgZSA9IGdsLmdldEVycm9yKCk7CisgIGlmIChlICE9IGdsLk5P
X0VSUk9SKSB7CisgICAgbG9nKCJFcnJvciAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBlKSAr
ICIgYXQgIiArIG1zZyk7CisgIH0KKyAgcmV0dXJuIGU7Cit9CisKK2Z1bmN0aW9uIHRocm93RXJy
b3IoZ2wsIG1zZykgeworICB2YXIgZSA9IGdsLmdldEVycm9yKCk7CisgIGlmIChlICE9IDApIHsK
KyAgICB0aHJvdyhuZXcgRXJyb3IoIkVycm9yICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGUp
ICsgIiBhdCAiICsgbXNnKSk7CisgIH0KK30KKworTWF0aC5jb3QgPSBmdW5jdGlvbih6KSB7IHJl
dHVybiAxLjAgLyBNYXRoLnRhbih6KTsgfQorCisvKgorICBNYXRyaXggdXRpbGl0aWVzLCB1c2lu
ZyB0aGUgT3BlbkdMIGVsZW1lbnQgb3JkZXIgd2hlcmUKKyAgdGhlIGxhc3QgNCBlbGVtZW50cyBh
cmUgdGhlIHRyYW5zbGF0aW9uIGNvbHVtbi4KKworICBVc2VzIGZsYXQgYXJyYXlzIGFzIG1hdHJp
Y2VzIGZvciBwZXJmb3JtYW5jZS4KKworICBNb3N0IG9wZXJhdGlvbnMgaGF2ZSBpbi1wbGFjZSB2
YXJpYW50cyB0byBhdm9pZCBhbGxvY2F0aW5nIHRlbXBvcmFyeSBtYXRyaWNlcy4KKworICBOYW1p
bmcgbG9naWM6CisgICAgTWF0cml4Lm1ldGhvZCBvcGVyYXRlcyBvbiBhIDR4NCBNYXRyaXggYW5k
IHJldHVybnMgYSBuZXcgTWF0cml4LgorICAgIE1hdHJpeC5tZXRob2QzeDMgb3BlcmF0ZXMgb24g
YSAzeDMgTWF0cml4IGFuZCByZXR1cm5zIGEgbmV3IE1hdHJpeC4gTm90IGFsbCBvcGVyYXRpb25z
IGhhdmUgYSAzeDMgdmVyc2lvbiAoYXMgM3gzIGlzIHVzdWFsbHkgb25seSB1c2VkIGZvciB0aGUg
bm9ybWFsIG1hdHJpeDogTWF0cml4LnRyYW5zcG9zZTN4MyhNYXRyaXguaW52ZXJzZVRvM3gzKG1h
dDR4NCkpKQorICAgIE1hdHJpeC5tZXRob2RbM3gzXUluUGxhY2UoYXJncywgdGFyZ2V0KSBzdG9y
ZXMgaXRzIHJlc3VsdCBpbiB0aGUgdGFyZ2V0IG1hdHJpeC4KKworICAgIE1hdHJpeC5zY2FsZShb
c3gsIHN5LCBzel0pIC0tIG5vbi11bmlmb3JtIHNjYWxlIGJ5IHZlY3RvcgorICAgIE1hdHJpeC5z
Y2FsZTEocykgICAgICAgICAgIC0tIHVuaWZvcm0gc2NhbGUgYnkgc2NhbGFyCisgICAgTWF0cml4
LnNjYWxlMyhzeCwgc3ksIHN6KSAgLS0gbm9uLXVuaWZvcm0gc2NhbGUgYnkgc2NhbGFycworCisg
ICAgRGl0dG8gZm9yIHRyYW5zbGF0ZS4KKyovCitNYXRyaXggPSB7CisgIGlkZW50aXR5IDogWwor
ICAgIDEuMCwgMC4wLCAwLjAsIDAuMCwKKyAgICAwLjAsIDEuMCwgMC4wLCAwLjAsCisgICAgMC4w
LCAwLjAsIDEuMCwgMC4wLAorICAgIDAuMCwgMC4wLCAwLjAsIDEuMAorICBdLAorCisgIG5ld0lk
ZW50aXR5IDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIFsKKyAgICAgIDEuMCwgMC4wLCAwLjAs
IDAuMCwKKyAgICAgIDAuMCwgMS4wLCAwLjAsIDAuMCwKKyAgICAgIDAuMCwgMC4wLCAxLjAsIDAu
MCwKKyAgICAgIDAuMCwgMC4wLCAwLjAsIDEuMAorICAgIF07CisgIH0sCisKKyAgbmV3SWRlbnRp
dHkzeDMgOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gWworICAgICAgMS4wLCAwLjAsIDAuMCwK
KyAgICAgIDAuMCwgMS4wLCAwLjAsCisgICAgICAwLjAsIDAuMCwgMS4wCisgICAgXTsKKyAgfSwK
KworICBjb3B5TWF0cml4IDogZnVuY3Rpb24oc3JjLCBkc3QpIHsKKyAgICBmb3IgKHZhciBpPTA7
IGk8MTY7IGkrKykgZHN0W2ldID0gc3JjW2ldOworICAgIHJldHVybiBkc3Q7CisgIH0sCisKKyAg
dG8zeDMgOiBmdW5jdGlvbihtKSB7CisgICAgcmV0dXJuIFsKKyAgICAgIG1bMF0sIG1bMV0sIG1b
Ml0sCisgICAgICBtWzRdLCBtWzVdLCBtWzZdLAorICAgICAgbVs4XSwgbVs5XSwgbVsxMF0KKyAg
ICBdOworICB9LAorCisgIC8vIG9ydGhvbm9ybWFsIG1hdHJpeCBpbnZlcnNlCisgIGludmVyc2VP
TiA6IGZ1bmN0aW9uKG0pIHsKKyAgICB2YXIgbiA9IHRoaXMudHJhbnNwb3NlNHg0KG0pOworICAg
IHZhciB0ID0gW21bMTJdLCBtWzEzXSwgbVsxNF1dOworICAgIG5bM10gPSBuWzddID0gblsxMV0g
PSAwOworICAgIG5bMTJdID0gLVZlYzMuZG90KFtuWzBdLCBuWzRdLCBuWzhdXSwgdCk7CisgICAg
blsxM10gPSAtVmVjMy5kb3QoW25bMV0sIG5bNV0sIG5bOV1dLCB0KTsKKyAgICBuWzE0XSA9IC1W
ZWMzLmRvdChbblsyXSwgbls2XSwgblsxMF1dLCB0KTsKKyAgICByZXR1cm4gbjsKKyAgfSwKKwor
ICBpbnZlcnNlVG8zeDMgOiBmdW5jdGlvbihtKSB7CisgICAgcmV0dXJuIHRoaXMuaW52ZXJzZTR4
NHRvM3gzSW5QbGFjZShtLCB0aGlzLm5ld0lkZW50aXR5M3gzKCkpOworICB9LAorCisgIGludmVy
c2VUbzN4M0luUGxhY2UgOiBmdW5jdGlvbihtLG4pIHsKKyAgICB2YXIgYTExID0gbVsxMF0qbVs1
XS1tWzZdKm1bOV0sCisgICAgICAgIGEyMSA9IC1tWzEwXSptWzFdK21bMl0qbVs5XSwKKyAgICAg
ICAgYTMxID0gbVs2XSptWzFdLW1bMl0qbVs1XSwKKyAgICAgICAgYTEyID0gLW1bMTBdKm1bNF0r
bVs2XSptWzhdLAorICAgICAgICBhMjIgPSBtWzEwXSptWzBdLW1bMl0qbVs4XSwKKyAgICAgICAg
YTMyID0gLW1bNl0qbVswXSttWzJdKm1bNF0sCisgICAgICAgIGExMyA9IG1bOV0qbVs0XS1tWzVd
Km1bOF0sCisgICAgICAgIGEyMyA9IC1tWzldKm1bMF0rbVsxXSptWzhdLAorICAgICAgICBhMzMg
PSBtWzVdKm1bMF0tbVsxXSptWzRdOworICAgIHZhciBkZXQgPSBtWzBdKihhMTEpICsgbVsxXSoo
YTEyKSArIG1bMl0qKGExMyk7CisgICAgaWYgKGRldCA9PSAwKSAvLyBubyBpbnZlcnNlCisgICAg
ICByZXR1cm4gWzEsMCwwLDAsMSwwLDAsMCwxXTsKKyAgICB2YXIgaWRldCA9IDEgLyBkZXQ7Cisg
ICAgblswXSA9IGlkZXQqYTExOworICAgIG5bMV0gPSBpZGV0KmEyMTsKKyAgICBuWzJdID0gaWRl
dCphMzE7CisgICAgblszXSA9IGlkZXQqYTEyOworICAgIG5bNF0gPSBpZGV0KmEyMjsKKyAgICBu
WzVdID0gaWRldCphMzI7CisgICAgbls2XSA9IGlkZXQqYTEzOworICAgIG5bN10gPSBpZGV0KmEy
MzsKKyAgICBuWzhdID0gaWRldCphMzM7CisgICAgcmV0dXJuIG47CisgIH0sCisKKyAgaW52ZXJz
ZTN4MyA6IGZ1bmN0aW9uKG0pIHsKKyAgICByZXR1cm4gdGhpcy5pbnZlcnNlM3gzSW5QbGFjZSht
LCB0aGlzLm5ld0lkZW50aXR5M3gzKCkpOworICB9LAorCisgIGludmVyc2UzeDNJblBsYWNlIDog
ZnVuY3Rpb24obSxuKSB7CisgICAgdmFyIGExMSA9IG1bOF0qbVs0XS1tWzVdKm1bN10sCisgICAg
ICAgIGEyMSA9IC1tWzhdKm1bMV0rbVsyXSptWzddLAorICAgICAgICBhMzEgPSBtWzVdKm1bMV0t
bVsyXSptWzRdLAorICAgICAgICBhMTIgPSAtbVs4XSptWzNdK21bNV0qbVs2XSwKKyAgICAgICAg
YTIyID0gbVs4XSptWzBdLW1bMl0qbVs2XSwKKyAgICAgICAgYTMyID0gLW1bNV0qbVswXSttWzJd
Km1bM10sCisgICAgICAgIGExMyA9IG1bN10qbVs0XS1tWzRdKm1bOF0sCisgICAgICAgIGEyMyA9
IC1tWzddKm1bMF0rbVsxXSptWzZdLAorICAgICAgICBhMzMgPSBtWzRdKm1bMF0tbVsxXSptWzNd
OworICAgIHZhciBkZXQgPSBtWzBdKihhMTEpICsgbVsxXSooYTEyKSArIG1bMl0qKGExMyk7Cisg
ICAgaWYgKGRldCA9PSAwKSAvLyBubyBpbnZlcnNlCisgICAgICByZXR1cm4gWzEsMCwwLDAsMSww
LDAsMCwxXTsKKyAgICB2YXIgaWRldCA9IDEgLyBkZXQ7CisgICAgblswXSA9IGlkZXQqYTExOwor
ICAgIG5bMV0gPSBpZGV0KmEyMTsKKyAgICBuWzJdID0gaWRldCphMzE7CisgICAgblszXSA9IGlk
ZXQqYTEyOworICAgIG5bNF0gPSBpZGV0KmEyMjsKKyAgICBuWzVdID0gaWRldCphMzI7CisgICAg
bls2XSA9IGlkZXQqYTEzOworICAgIG5bN10gPSBpZGV0KmEyMzsKKyAgICBuWzhdID0gaWRldCph
MzM7CisgICAgcmV0dXJuIG47CisgIH0sCisKKyAgZnJ1c3R1bSA6IGZ1bmN0aW9uIChsZWZ0LCBy
aWdodCwgYm90dG9tLCB0b3AsIHpuZWFyLCB6ZmFyKSB7CisgICAgdmFyIFggPSAyKnpuZWFyLyhy
aWdodC1sZWZ0KTsKKyAgICB2YXIgWSA9IDIqem5lYXIvKHRvcC1ib3R0b20pOworICAgIHZhciBB
ID0gKHJpZ2h0K2xlZnQpLyhyaWdodC1sZWZ0KTsKKyAgICB2YXIgQiA9ICh0b3ArYm90dG9tKS8o
dG9wLWJvdHRvbSk7CisgICAgdmFyIEMgPSAtKHpmYXIrem5lYXIpLyh6ZmFyLXpuZWFyKTsKKyAg
ICB2YXIgRCA9IC0yKnpmYXIqem5lYXIvKHpmYXItem5lYXIpOworCisgICAgcmV0dXJuIFsKKyAg
ICAgIFgsIDAsIDAsIDAsCisgICAgICAwLCBZLCAwLCAwLAorICAgICAgQSwgQiwgQywgLTEsCisg
ICAgICAwLCAwLCBELCAwCisgICAgXTsKKyB9LAorCisgIHBlcnNwZWN0aXZlIDogZnVuY3Rpb24g
KGZvdnksIGFzcGVjdCwgem5lYXIsIHpmYXIpIHsKKyAgICB2YXIgeW1heCA9IHpuZWFyICogTWF0
aC50YW4oZm92eSAqIE1hdGguUEkgLyAzNjAuMCk7CisgICAgdmFyIHltaW4gPSAteW1heDsKKyAg
ICB2YXIgeG1pbiA9IHltaW4gKiBhc3BlY3Q7CisgICAgdmFyIHhtYXggPSB5bWF4ICogYXNwZWN0
OworCisgICAgcmV0dXJuIHRoaXMuZnJ1c3R1bSh4bWluLCB4bWF4LCB5bWluLCB5bWF4LCB6bmVh
ciwgemZhcik7CisgIH0sCisKKyAgbXVsNHg0IDogZnVuY3Rpb24gKGEsYikgeworICAgIHJldHVy
biB0aGlzLm11bDR4NEluUGxhY2UoYSxiLHRoaXMubmV3SWRlbnRpdHkoKSk7CisgIH0sCisKKyAg
bXVsNHg0SW5QbGFjZSA6IGZ1bmN0aW9uIChhLCBiLCBjKSB7CisgICAgICAgIGNbMF0gPSAgIGJb
MF0gKiBhWzBdICsKKyAgICAgICAgICAgICAgICAgYlswKzFdICogYVs0XSArCisgICAgICAgICAg
ICAgICAgIGJbMCsyXSAqIGFbOF0gKworICAgICAgICAgICAgICAgICBiWzArM10gKiBhWzEyXTsK
KyAgICAgICAgY1swKzFdID0gYlswXSAqIGFbMV0gKworICAgICAgICAgICAgICAgICBiWzArMV0g
KiBhWzVdICsKKyAgICAgICAgICAgICAgICAgYlswKzJdICogYVs5XSArCisgICAgICAgICAgICAg
ICAgIGJbMCszXSAqIGFbMTNdOworICAgICAgICBjWzArMl0gPSBiWzBdICogYVsyXSArCisgICAg
ICAgICAgICAgICAgIGJbMCsxXSAqIGFbNl0gKworICAgICAgICAgICAgICAgICBiWzArMl0gKiBh
WzEwXSArCisgICAgICAgICAgICAgICAgIGJbMCszXSAqIGFbMTRdOworICAgICAgICBjWzArM10g
PSBiWzBdICogYVszXSArCisgICAgICAgICAgICAgICAgIGJbMCsxXSAqIGFbN10gKworICAgICAg
ICAgICAgICAgICBiWzArMl0gKiBhWzExXSArCisgICAgICAgICAgICAgICAgIGJbMCszXSAqIGFb
MTVdOworICAgICAgICBjWzRdID0gICBiWzRdICogYVswXSArCisgICAgICAgICAgICAgICAgIGJb
NCsxXSAqIGFbNF0gKworICAgICAgICAgICAgICAgICBiWzQrMl0gKiBhWzhdICsKKyAgICAgICAg
ICAgICAgICAgYls0KzNdICogYVsxMl07CisgICAgICAgIGNbNCsxXSA9IGJbNF0gKiBhWzFdICsK
KyAgICAgICAgICAgICAgICAgYls0KzFdICogYVs1XSArCisgICAgICAgICAgICAgICAgIGJbNCsy
XSAqIGFbOV0gKworICAgICAgICAgICAgICAgICBiWzQrM10gKiBhWzEzXTsKKyAgICAgICAgY1s0
KzJdID0gYls0XSAqIGFbMl0gKworICAgICAgICAgICAgICAgICBiWzQrMV0gKiBhWzZdICsKKyAg
ICAgICAgICAgICAgICAgYls0KzJdICogYVsxMF0gKworICAgICAgICAgICAgICAgICBiWzQrM10g
KiBhWzE0XTsKKyAgICAgICAgY1s0KzNdID0gYls0XSAqIGFbM10gKworICAgICAgICAgICAgICAg
ICBiWzQrMV0gKiBhWzddICsKKyAgICAgICAgICAgICAgICAgYls0KzJdICogYVsxMV0gKworICAg
ICAgICAgICAgICAgICBiWzQrM10gKiBhWzE1XTsKKyAgICAgICAgY1s4XSA9ICAgYls4XSAqIGFb
MF0gKworICAgICAgICAgICAgICAgICBiWzgrMV0gKiBhWzRdICsKKyAgICAgICAgICAgICAgICAg
Yls4KzJdICogYVs4XSArCisgICAgICAgICAgICAgICAgIGJbOCszXSAqIGFbMTJdOworICAgICAg
ICBjWzgrMV0gPSBiWzhdICogYVsxXSArCisgICAgICAgICAgICAgICAgIGJbOCsxXSAqIGFbNV0g
KworICAgICAgICAgICAgICAgICBiWzgrMl0gKiBhWzldICsKKyAgICAgICAgICAgICAgICAgYls4
KzNdICogYVsxM107CisgICAgICAgIGNbOCsyXSA9IGJbOF0gKiBhWzJdICsKKyAgICAgICAgICAg
ICAgICAgYls4KzFdICogYVs2XSArCisgICAgICAgICAgICAgICAgIGJbOCsyXSAqIGFbMTBdICsK
KyAgICAgICAgICAgICAgICAgYls4KzNdICogYVsxNF07CisgICAgICAgIGNbOCszXSA9IGJbOF0g
KiBhWzNdICsKKyAgICAgICAgICAgICAgICAgYls4KzFdICogYVs3XSArCisgICAgICAgICAgICAg
ICAgIGJbOCsyXSAqIGFbMTFdICsKKyAgICAgICAgICAgICAgICAgYls4KzNdICogYVsxNV07Cisg
ICAgICAgIGNbMTJdID0gICBiWzEyXSAqIGFbMF0gKworICAgICAgICAgICAgICAgICBiWzEyKzFd
ICogYVs0XSArCisgICAgICAgICAgICAgICAgIGJbMTIrMl0gKiBhWzhdICsKKyAgICAgICAgICAg
ICAgICAgYlsxMiszXSAqIGFbMTJdOworICAgICAgICBjWzEyKzFdID0gYlsxMl0gKiBhWzFdICsK
KyAgICAgICAgICAgICAgICAgYlsxMisxXSAqIGFbNV0gKworICAgICAgICAgICAgICAgICBiWzEy
KzJdICogYVs5XSArCisgICAgICAgICAgICAgICAgIGJbMTIrM10gKiBhWzEzXTsKKyAgICAgICAg
Y1sxMisyXSA9IGJbMTJdICogYVsyXSArCisgICAgICAgICAgICAgICAgIGJbMTIrMV0gKiBhWzZd
ICsKKyAgICAgICAgICAgICAgICAgYlsxMisyXSAqIGFbMTBdICsKKyAgICAgICAgICAgICAgICAg
YlsxMiszXSAqIGFbMTRdOworICAgICAgICBjWzEyKzNdID0gYlsxMl0gKiBhWzNdICsKKyAgICAg
ICAgICAgICAgICAgYlsxMisxXSAqIGFbN10gKworICAgICAgICAgICAgICAgICBiWzEyKzJdICog
YVsxMV0gKworICAgICAgICAgICAgICAgICBiWzEyKzNdICogYVsxNV07CisgICAgcmV0dXJuIGM7
CisgIH0sCisKKyAgbXVsdjQgOiBmdW5jdGlvbiAoYSwgdikgeworICAgIGMgPSBuZXcgQXJyYXko
NCk7CisgICAgZm9yICh2YXIgaT0wOyBpPDQ7ICsraSkgeworICAgICAgdmFyIHggPSAwOworICAg
ICAgZm9yICh2YXIgaz0wOyBrPDQ7ICsraykKKyAgICAgICAgeCArPSB2W2tdICogYVtrKjQraV07
CisgICAgICBjW2ldID0geDsKKyAgICB9CisgICAgcmV0dXJuIGM7CisgIH0sCisKKyAgcm90YXRl
IDogZnVuY3Rpb24gKGFuZ2xlLCBheGlzKSB7CisgICAgYXhpcyA9IFZlYzMubm9ybWFsaXplKGF4
aXMpOworICAgIHZhciB4PWF4aXNbMF0sIHk9YXhpc1sxXSwgej1heGlzWzJdOworICAgIHZhciBj
ID0gTWF0aC5jb3MoYW5nbGUpOworICAgIHZhciBjMSA9IDEtYzsKKyAgICB2YXIgcyA9IE1hdGgu
c2luKGFuZ2xlKTsKKyAgICByZXR1cm4gWworICAgICAgeCp4KmMxK2MsIHkqeCpjMSt6KnMsIHoq
eCpjMS15KnMsIDAsCisgICAgICB4KnkqYzEteipzLCB5KnkqYzErYywgeSp6KmMxK3gqcywgMCwK
KyAgICAgIHgqeipjMSt5KnMsIHkqeipjMS14KnMsIHoqeipjMStjLCAwLAorICAgICAgMCwwLDAs
MQorICAgIF07CisgIH0sCisgIHJvdGF0ZUluUGxhY2UgOiBmdW5jdGlvbihhbmdsZSwgYXhpcywg
bSkgeworICAgIGF4aXMgPSBWZWMzLm5vcm1hbGl6ZShheGlzKTsKKyAgICB2YXIgeD1heGlzWzBd
LCB5PWF4aXNbMV0sIHo9YXhpc1syXTsKKyAgICB2YXIgYyA9IE1hdGguY29zKGFuZ2xlKTsKKyAg
ICB2YXIgYzEgPSAxLWM7CisgICAgdmFyIHMgPSBNYXRoLnNpbihhbmdsZSk7CisgICAgdmFyIHRt
cE1hdHJpeCA9IHRoaXMudG1wTWF0cml4OworICAgIHZhciB0bXBNYXRyaXgyID0gdGhpcy50bXBN
YXRyaXgyOworICAgIHRtcE1hdHJpeFswXSA9IHgqeCpjMStjOyB0bXBNYXRyaXhbMV0gPSB5Kngq
YzEreipzOyB0bXBNYXRyaXhbMl0gPSB6KngqYzEteSpzOyB0bXBNYXRyaXhbM10gPSAwOworICAg
IHRtcE1hdHJpeFs0XSA9IHgqeSpjMS16KnM7IHRtcE1hdHJpeFs1XSA9IHkqeSpjMStjOyB0bXBN
YXRyaXhbNl0gPSB5KnoqYzEreCpzOyB0bXBNYXRyaXhbN10gPSAwOworICAgIHRtcE1hdHJpeFs4
XSA9IHgqeipjMSt5KnM7IHRtcE1hdHJpeFs5XSA9IHkqeipjMS14KnM7IHRtcE1hdHJpeFsxMF0g
PSB6KnoqYzErYzsgdG1wTWF0cml4WzExXSA9IDA7CisgICAgdG1wTWF0cml4WzEyXSA9IDA7IHRt
cE1hdHJpeFsxM10gPSAwOyB0bXBNYXRyaXhbMTRdID0gMDsgdG1wTWF0cml4WzE1XSA9IDE7Cisg
ICAgdGhpcy5jb3B5TWF0cml4KG0sIHRtcE1hdHJpeDIpOworICAgIHJldHVybiB0aGlzLm11bDR4
NEluUGxhY2UodG1wTWF0cml4MiwgdG1wTWF0cml4LCBtKTsKKyAgfSwKKworICBzY2FsZSA6IGZ1
bmN0aW9uKHYpIHsKKyAgICByZXR1cm4gWworICAgICAgdlswXSwgMCwgMCwgMCwKKyAgICAgIDAs
IHZbMV0sIDAsIDAsCisgICAgICAwLCAwLCB2WzJdLCAwLAorICAgICAgMCwgMCwgMCwgMQorICAg
IF07CisgIH0sCisgIHNjYWxlMyA6IGZ1bmN0aW9uKHgseSx6KSB7CisgICAgcmV0dXJuIFsKKyAg
ICAgIHgsIDAsIDAsIDAsCisgICAgICAwLCB5LCAwLCAwLAorICAgICAgMCwgMCwgeiwgMCwKKyAg
ICAgIDAsIDAsIDAsIDEKKyAgICBdOworICB9LAorICBzY2FsZTEgOiBmdW5jdGlvbihzKSB7Cisg
ICAgcmV0dXJuIFsKKyAgICAgIHMsIDAsIDAsIDAsCisgICAgICAwLCBzLCAwLCAwLAorICAgICAg
MCwgMCwgcywgMCwKKyAgICAgIDAsIDAsIDAsIDEKKyAgICBdOworICB9LAorICBzY2FsZTNJblBs
YWNlIDogZnVuY3Rpb24oeCwgeSwgeiwgbSkgeworICAgIHZhciB0bXBNYXRyaXggPSB0aGlzLnRt
cE1hdHJpeDsKKyAgICB2YXIgdG1wTWF0cml4MiA9IHRoaXMudG1wTWF0cml4MjsKKyAgICB0bXBN
YXRyaXhbMF0gPSB4OyB0bXBNYXRyaXhbMV0gPSAwOyB0bXBNYXRyaXhbMl0gPSAwOyB0bXBNYXRy
aXhbM10gPSAwOworICAgIHRtcE1hdHJpeFs0XSA9IDA7IHRtcE1hdHJpeFs1XSA9IHk7IHRtcE1h
dHJpeFs2XSA9IDA7IHRtcE1hdHJpeFs3XSA9IDA7CisgICAgdG1wTWF0cml4WzhdID0gMDsgdG1w
TWF0cml4WzldID0gMDsgdG1wTWF0cml4WzEwXSA9IHo7IHRtcE1hdHJpeFsxMV0gPSAwOworICAg
IHRtcE1hdHJpeFsxMl0gPSAwOyB0bXBNYXRyaXhbMTNdID0gMDsgdG1wTWF0cml4WzE0XSA9IDA7
IHRtcE1hdHJpeFsxNV0gPSAxOworICAgIHRoaXMuY29weU1hdHJpeChtLCB0bXBNYXRyaXgyKTsK
KyAgICByZXR1cm4gdGhpcy5tdWw0eDRJblBsYWNlKHRtcE1hdHJpeDIsIHRtcE1hdHJpeCwgbSk7
CisgIH0sCisgIHNjYWxlMUluUGxhY2UgOiBmdW5jdGlvbihzLCBtKSB7IHJldHVybiB0aGlzLnNj
YWxlM0luUGxhY2UocywgcywgcywgbSk7IH0sCisgIHNjYWxlSW5QbGFjZSA6IGZ1bmN0aW9uKHMs
IG0pIHsgcmV0dXJuIHRoaXMuc2NhbGUzSW5QbGFjZShzWzBdLHNbMV0sc1syXSxtKTsgfSwKKwor
ICB0cmFuc2xhdGUzIDogZnVuY3Rpb24oeCx5LHopIHsKKyAgICByZXR1cm4gWworICAgICAgMSwg
MCwgMCwgMCwKKyAgICAgIDAsIDEsIDAsIDAsCisgICAgICAwLCAwLCAxLCAwLAorICAgICAgeCwg
eSwgeiwgMQorICAgIF07CisgIH0sCisKKyAgdHJhbnNsYXRlIDogZnVuY3Rpb24odikgeworICAg
IHJldHVybiB0aGlzLnRyYW5zbGF0ZTModlswXSwgdlsxXSwgdlsyXSk7CisgIH0sCisgIHRtcE1h
dHJpeCA6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSwKKyAgdG1wTWF0cml4
MiA6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSwKKyAgdHJhbnNsYXRlM0lu
UGxhY2UgOiBmdW5jdGlvbih4LHkseixtKSB7CisgICAgdmFyIHRtcE1hdHJpeCA9IHRoaXMudG1w
TWF0cml4OworICAgIHZhciB0bXBNYXRyaXgyID0gdGhpcy50bXBNYXRyaXgyOworICAgIHRtcE1h
dHJpeFswXSA9IDE7IHRtcE1hdHJpeFsxXSA9IDA7IHRtcE1hdHJpeFsyXSA9IDA7IHRtcE1hdHJp
eFszXSA9IDA7CisgICAgdG1wTWF0cml4WzRdID0gMDsgdG1wTWF0cml4WzVdID0gMTsgdG1wTWF0
cml4WzZdID0gMDsgdG1wTWF0cml4WzddID0gMDsKKyAgICB0bXBNYXRyaXhbOF0gPSAwOyB0bXBN
YXRyaXhbOV0gPSAwOyB0bXBNYXRyaXhbMTBdID0gMTsgdG1wTWF0cml4WzExXSA9IDA7CisgICAg
dG1wTWF0cml4WzEyXSA9IHg7IHRtcE1hdHJpeFsxM10gPSB5OyB0bXBNYXRyaXhbMTRdID0gejsg
dG1wTWF0cml4WzE1XSA9IDE7CisgICAgdGhpcy5jb3B5TWF0cml4KG0sIHRtcE1hdHJpeDIpOwor
ICAgIHJldHVybiB0aGlzLm11bDR4NEluUGxhY2UodG1wTWF0cml4MiwgdG1wTWF0cml4LCBtKTsK
KyAgfSwKKyAgdHJhbnNsYXRlSW5QbGFjZSA6IGZ1bmN0aW9uKHYsbSl7IHJldHVybiB0aGlzLnRy
YW5zbGF0ZTNJblBsYWNlKHZbMF0sIHZbMV0sIHZbMl0sIG0pOyB9LAorCisgIGxvb2tBdCA6IGZ1
bmN0aW9uIChleWUsIGNlbnRlciwgdXApIHsKKyAgICB2YXIgeiA9IFZlYzMuZGlyZWN0aW9uKGV5
ZSwgY2VudGVyKTsKKyAgICB2YXIgeCA9IFZlYzMubm9ybWFsaXplSW5QbGFjZShWZWMzLmNyb3Nz
KHVwLCB6KSk7CisgICAgdmFyIHkgPSBWZWMzLm5vcm1hbGl6ZUluUGxhY2UoVmVjMy5jcm9zcyh6
LCB4KSk7CisKKyAgICB2YXIgbSA9IFsKKyAgICAgIHhbMF0sIHlbMF0sIHpbMF0sIDAsCisgICAg
ICB4WzFdLCB5WzFdLCB6WzFdLCAwLAorICAgICAgeFsyXSwgeVsyXSwgelsyXSwgMCwKKyAgICAg
IDAsIDAsIDAsIDEKKyAgICBdOworCisgICAgdmFyIHQgPSBbCisgICAgICAxLCAwLCAwLCAwLAor
ICAgICAgMCwgMSwgMCwgMCwKKyAgICAgIDAsIDAsIDEsIDAsCisgICAgICAtZXllWzBdLCAtZXll
WzFdLCAtZXllWzJdLCAxCisgICAgXTsKKworICAgIHJldHVybiB0aGlzLm11bDR4NChtLHQpOwor
ICB9LAorCisgIHRyYW5zcG9zZTR4NCA6IGZ1bmN0aW9uKG0pIHsKKyAgICByZXR1cm4gWworICAg
ICAgbVswXSwgbVs0XSwgbVs4XSwgbVsxMl0sCisgICAgICBtWzFdLCBtWzVdLCBtWzldLCBtWzEz
XSwKKyAgICAgIG1bMl0sIG1bNl0sIG1bMTBdLCBtWzE0XSwKKyAgICAgIG1bM10sIG1bN10sIG1b
MTFdLCBtWzE1XQorICAgIF07CisgIH0sCisKKyAgdHJhbnNwb3NlNHg0SW5QbGFjZSA6IGZ1bmN0
aW9uKG0pIHsKKyAgICB2YXIgdG1wID0gMC4wOworICAgIHRtcCA9IG1bMV07IG1bMV0gPSBtWzRd
OyBtWzRdID0gdG1wOworICAgIHRtcCA9IG1bMl07IG1bMl0gPSBtWzhdOyBtWzhdID0gdG1wOwor
ICAgIHRtcCA9IG1bM107IG1bM10gPSBtWzEyXTsgbVsxMl0gPSB0bXA7CisgICAgdG1wID0gbVs2
XTsgbVs2XSA9IG1bOV07IG1bOV0gPSB0bXA7CisgICAgdG1wID0gbVs3XTsgbVs3XSA9IG1bMTNd
OyBtWzEzXSA9IHRtcDsKKyAgICB0bXAgPSBtWzExXTsgbVsxMV0gPSBtWzE0XTsgbVsxNF0gPSB0
bXA7CisgICAgcmV0dXJuIG07CisgIH0sCisKKyAgdHJhbnNwb3NlM3gzIDogZnVuY3Rpb24obSkg
eworICAgIHJldHVybiBbCisgICAgICBtWzBdLCBtWzNdLCBtWzZdLAorICAgICAgbVsxXSwgbVs0
XSwgbVs3XSwKKyAgICAgIG1bMl0sIG1bNV0sIG1bOF0KKyAgICBdOworICB9LAorCisgIHRyYW5z
cG9zZTN4M0luUGxhY2UgOiBmdW5jdGlvbihtKSB7CisgICAgdmFyIHRtcCA9IDAuMDsKKyAgICB0
bXAgPSBtWzFdOyBtWzFdID0gbVszXTsgbVszXSA9IHRtcDsKKyAgICB0bXAgPSBtWzJdOyBtWzJd
ID0gbVs2XTsgbVs2XSA9IHRtcDsKKyAgICB0bXAgPSBtWzVdOyBtWzVdID0gbVs3XTsgbVs3XSA9
IHRtcDsKKyAgICByZXR1cm4gbTsKKyAgfSwKK30KKworVmVjMyA9IHsKKyAgbWFrZSA6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gWzAsMCwwXTsgfSwKKyAgY29weSA6IGZ1bmN0aW9uKHYpIHsgcmV0dXJu
IFt2WzBdLHZbMV0sdlsyXV07IH0sCisKKyAgYWRkIDogZnVuY3Rpb24gKHUsdikgeworICAgIHJl
dHVybiBbdVswXSt2WzBdLCB1WzFdK3ZbMV0sIHVbMl0rdlsyXV07CisgIH0sCisKKyAgc3ViIDog
ZnVuY3Rpb24gKHUsdikgeworICAgIHJldHVybiBbdVswXS12WzBdLCB1WzFdLXZbMV0sIHVbMl0t
dlsyXV07CisgIH0sCisKKyAgbmVnYXRlIDogZnVuY3Rpb24gKHUpIHsKKyAgICByZXR1cm4gWy11
WzBdLCAtdVsxXSwgLXVbMl1dOworICB9LAorCisgIGRpcmVjdGlvbiA6IGZ1bmN0aW9uICh1LHYp
IHsKKyAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVJblBsYWNlKHRoaXMuc3ViKHUsdikpOworICB9
LAorCisgIG5vcm1hbGl6ZUluUGxhY2UgOiBmdW5jdGlvbih2KSB7CisgICAgdmFyIGltYWcgPSAx
LjAgLyBNYXRoLnNxcnQodlswXSp2WzBdICsgdlsxXSp2WzFdICsgdlsyXSp2WzJdKTsKKyAgICB2
WzBdICo9IGltYWc7IHZbMV0gKj0gaW1hZzsgdlsyXSAqPSBpbWFnOworICAgIHJldHVybiB2Owor
ICB9LAorCisgIG5vcm1hbGl6ZSA6IGZ1bmN0aW9uKHYpIHsKKyAgICByZXR1cm4gdGhpcy5ub3Jt
YWxpemVJblBsYWNlKHRoaXMuY29weSh2KSk7CisgIH0sCisKKyAgc2NhbGUgOiBmdW5jdGlvbihm
LCB2KSB7CisgICAgcmV0dXJuIFtmKnZbMF0sIGYqdlsxXSwgZip2WzJdXTsKKyAgfSwKKworICBk
b3QgOiBmdW5jdGlvbih1LHYpIHsKKyAgICByZXR1cm4gdVswXSp2WzBdICsgdVsxXSp2WzFdICsg
dVsyXSp2WzJdOworICB9LAorCisgIGlubmVyIDogZnVuY3Rpb24odSx2KSB7CisgICAgcmV0dXJu
IFt1WzBdKnZbMF0sIHVbMV0qdlsxXSwgdVsyXSp2WzJdXTsKKyAgfSwKKworICBjcm9zcyA6IGZ1
bmN0aW9uKHUsdikgeworICAgIHJldHVybiBbCisgICAgICB1WzFdKnZbMl0gLSB1WzJdKnZbMV0s
CisgICAgICB1WzJdKnZbMF0gLSB1WzBdKnZbMl0sCisgICAgICB1WzBdKnZbMV0gLSB1WzFdKnZb
MF0KKyAgICBdOworICB9Cit9CisKK1NoYWRlciA9IGZ1bmN0aW9uKGdsKXsKKyAgdGhpcy5nbCA9
IGdsOworICB0aGlzLnNoYWRlcnMgPSBbXTsKKyAgdGhpcy51bmlmb3JtTG9jYXRpb25zID0ge307
CisgIHRoaXMuYXR0cmliTG9jYXRpb25zID0ge307CisgIGZvciAodmFyIGk9MTsgaTxhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsKKyAgICB0aGlzLnNoYWRlcnMucHVzaChhcmd1bWVudHNbaV0pOwor
ICB9Cit9CitTaGFkZXIucHJvdG90eXBlID0geworICBpZCA6IG51bGwsCisgIGdsIDogbnVsbCwK
KyAgY29tcGlsZWQgOiBmYWxzZSwKKyAgc2hhZGVyIDogbnVsbCwKKyAgc2hhZGVycyA6IFtdLAor
CisgIGRlc3Ryb3kgOiBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5zaGFkZXIgIT0gbnVsbCkg
ZGVsZXRlU2hhZGVyKHRoaXMuZ2wsIHRoaXMuc2hhZGVyKTsKKyAgfSwKKworICBjb21waWxlIDog
ZnVuY3Rpb24oKSB7CisgICAgdGhpcy5zaGFkZXIgPSBsb2FkU2hhZGVyQXJyYXkodGhpcy5nbCwg
dGhpcy5zaGFkZXJzKTsKKyAgfSwKKworICB1c2UgOiBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhp
cy5zaGFkZXIgPT0gbnVsbCkKKyAgICAgIHRoaXMuY29tcGlsZSgpOworICAgIHRoaXMuZ2wudXNl
UHJvZ3JhbSh0aGlzLnNoYWRlci5wcm9ncmFtKTsKKyAgfSwKKworICB1bmlmb3JtMWZ2IDogZnVu
Y3Rpb24obmFtZSwgdmFsdWUpIHsKKyAgICB2YXIgbG9jID0gdGhpcy51bmlmb3JtKG5hbWUpOwor
ICAgIHRoaXMuZ2wudW5pZm9ybTFmdihsb2MsIHZhbHVlKTsKKyAgfSwKKworICB1bmlmb3JtMmZ2
IDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKKyAgICB2YXIgbG9jID0gdGhpcy51bmlmb3JtKG5h
bWUpOworICAgIHRoaXMuZ2wudW5pZm9ybTJmdihsb2MsIHZhbHVlKTsKKyAgfSwKKworICB1bmlm
b3JtM2Z2IDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKKyAgICB2YXIgbG9jID0gdGhpcy51bmlm
b3JtKG5hbWUpOworICAgIHRoaXMuZ2wudW5pZm9ybTNmdihsb2MsIHZhbHVlKTsKKyAgfSwKKwor
ICB1bmlmb3JtNGZ2IDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKKyAgICB2YXIgbG9jID0gdGhp
cy51bmlmb3JtKG5hbWUpOworICAgIHRoaXMuZ2wudW5pZm9ybTRmdihsb2MsIHZhbHVlKTsKKyAg
fSwKKworICB1bmlmb3JtMWYgOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgeworICAgIHZhciBsb2Mg
PSB0aGlzLnVuaWZvcm0obmFtZSk7CisgICAgdGhpcy5nbC51bmlmb3JtMWYobG9jLCB2YWx1ZSk7
CisgIH0sCisKKyAgdW5pZm9ybTJmIDogZnVuY3Rpb24obmFtZSwgdjEsdjIpIHsKKyAgICB2YXIg
bG9jID0gdGhpcy51bmlmb3JtKG5hbWUpOworICAgIHRoaXMuZ2wudW5pZm9ybTJmKGxvYywgdjEs
djIpOworICB9LAorCisgIHVuaWZvcm0zZiA6IGZ1bmN0aW9uKG5hbWUsIHYxLHYyLHYzKSB7Cisg
ICAgdmFyIGxvYyA9IHRoaXMudW5pZm9ybShuYW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm0zZihs
b2MsIHYxLHYyLHYzKTsKKyAgfSwKKworICB1bmlmb3JtNGYgOiBmdW5jdGlvbihuYW1lLCB2MSx2
Mix2Myx2NCkgeworICAgIHZhciBsb2MgPSB0aGlzLnVuaWZvcm0obmFtZSk7CisgICAgdGhpcy5n
bC51bmlmb3JtNGYobG9jLCB2MSwgdjIsIHYzLCB2NCk7CisgIH0sCisKKyAgdW5pZm9ybTFpdiA6
IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgdmFyIGxvYyA9IHRoaXMudW5pZm9ybShuYW1l
KTsKKyAgICB0aGlzLmdsLnVuaWZvcm0xaXYobG9jLCB2YWx1ZSk7CisgIH0sCisKKyAgdW5pZm9y
bTJpdiA6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgdmFyIGxvYyA9IHRoaXMudW5pZm9y
bShuYW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm0yaXYobG9jLCB2YWx1ZSk7CisgIH0sCisKKyAg
dW5pZm9ybTNpdiA6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgdmFyIGxvYyA9IHRoaXMu
dW5pZm9ybShuYW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm0zaXYobG9jLCB2YWx1ZSk7CisgIH0s
CisKKyAgdW5pZm9ybTRpdiA6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgdmFyIGxvYyA9
IHRoaXMudW5pZm9ybShuYW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm00aXYobG9jLCB2YWx1ZSk7
CisgIH0sCisKKyAgdW5pZm9ybTFpIDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKKyAgICB2YXIg
bG9jID0gdGhpcy51bmlmb3JtKG5hbWUpOworICAgIHRoaXMuZ2wudW5pZm9ybTFpKGxvYywgdmFs
dWUpOworICB9LAorCisgIHVuaWZvcm0yaSA6IGZ1bmN0aW9uKG5hbWUsIHYxLHYyKSB7CisgICAg
dmFyIGxvYyA9IHRoaXMudW5pZm9ybShuYW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm0yaShsb2Ms
IHYxLHYyKTsKKyAgfSwKKworICB1bmlmb3JtM2kgOiBmdW5jdGlvbihuYW1lLCB2MSx2Mix2Mykg
eworICAgIHZhciBsb2MgPSB0aGlzLnVuaWZvcm0obmFtZSk7CisgICAgdGhpcy5nbC51bmlmb3Jt
M2kobG9jLCB2MSx2Mix2Myk7CisgIH0sCisKKyAgdW5pZm9ybTRpIDogZnVuY3Rpb24obmFtZSwg
djEsdjIsdjMsdjQpIHsKKyAgICB2YXIgbG9jID0gdGhpcy51bmlmb3JtKG5hbWUpOworICAgIHRo
aXMuZ2wudW5pZm9ybTRpKGxvYywgdjEsIHYyLCB2MywgdjQpOworICB9LAorCisgIHVuaWZvcm1N
YXRyaXg0ZnYgOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgeworICAgIHZhciBsb2MgPSB0aGlzLnVu
aWZvcm0obmFtZSk7CisgICAgdGhpcy5nbC51bmlmb3JtTWF0cml4NGZ2KGxvYywgZmFsc2UsIHZh
bHVlKTsKKyAgfSwKKworICB1bmlmb3JtTWF0cml4M2Z2IDogZnVuY3Rpb24obmFtZSwgdmFsdWUp
IHsKKyAgICB2YXIgbG9jID0gdGhpcy51bmlmb3JtKG5hbWUpOworICAgIHRoaXMuZ2wudW5pZm9y
bU1hdHJpeDNmdihsb2MsIGZhbHNlLCB2YWx1ZSk7CisgIH0sCisKKyAgdW5pZm9ybU1hdHJpeDJm
diA6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgdmFyIGxvYyA9IHRoaXMudW5pZm9ybShu
YW1lKTsKKyAgICB0aGlzLmdsLnVuaWZvcm1NYXRyaXgyZnYobG9jLCBmYWxzZSwgdmFsdWUpOwor
ICB9LAorCisgIGF0dHJpYiA6IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICBpZiAodGhpcy5hdHRyaWJM
b2NhdGlvbnNbbmFtZV0gPT0gbnVsbCkgeworICAgICAgdmFyIGxvYyA9IHRoaXMuZ2wuZ2V0QXR0
cmliTG9jYXRpb24odGhpcy5zaGFkZXIucHJvZ3JhbSwgbmFtZSk7CisgICAgICB0aGlzLmF0dHJp
YkxvY2F0aW9uc1tuYW1lXSA9IGxvYzsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuYXR0cmliTG9j
YXRpb25zW25hbWVdOworICB9LAorCisgIHVuaWZvcm0gOiBmdW5jdGlvbihuYW1lKSB7CisgICAg
aWYgKHRoaXMudW5pZm9ybUxvY2F0aW9uc1tuYW1lXSA9PSBudWxsKSB7CisgICAgICB2YXIgbG9j
ID0gdGhpcy5nbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5zaGFkZXIucHJvZ3JhbSwgbmFtZSk7
CisgICAgICB0aGlzLnVuaWZvcm1Mb2NhdGlvbnNbbmFtZV0gPSBsb2M7CisgICAgfQorICAgIHJl
dHVybiB0aGlzLnVuaWZvcm1Mb2NhdGlvbnNbbmFtZV07CisgIH0KK30KK0ZpbHRlciA9IGZ1bmN0
aW9uKGdsLCBzaGFkZXIpIHsKKyAgU2hhZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9CitG
aWx0ZXIucHJvdG90eXBlID0gbmV3IFNoYWRlcigpOworRmlsdGVyLnByb3RvdHlwZS5hcHBseSA9
IGZ1bmN0aW9uKGluaXQpIHsKKyAgdGhpcy51c2UoKTsKKyAgdmFyIHZhID0gdGhpcy5hdHRyaWIo
IlZlcnRleCIpOworICB2YXIgdGEgPSB0aGlzLmF0dHJpYigiVGV4Iik7CisgIHZhciB2Ym8gPSBR
dWFkLmdldENhY2hlZFZCTyh0aGlzLmdsKTsKKyAgaWYgKGluaXQpIGluaXQodGhpcyk7CisgIHZi
by5kcmF3KHZhLCBudWxsLCB0YSk7Cit9CisKKworVkJPID0gZnVuY3Rpb24oZ2wpIHsKKyAgdGhp
cy5nbCA9IGdsOworICB0aGlzLmRhdGEgPSBbXTsKKyAgdGhpcy5lbGVtZW50c1ZCTyA9IG51bGw7
CisgIGZvciAodmFyIGk9MTsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICBpZiAoYXJn
dW1lbnRzW2ldLmVsZW1lbnRzKQorICAgICAgdGhpcy5lbGVtZW50cyA9IGFyZ3VtZW50c1tpXTsK
KyAgICBlbHNlCisgICAgICB0aGlzLmRhdGEucHVzaChhcmd1bWVudHNbaV0pOworICB9Cit9CisK
K1ZCTy5wcm90b3R5cGUgPSB7CisgIGluaXRpYWxpemVkIDogZmFsc2UsCisgIGxlbmd0aCA6IDAs
CisgIHZib3MgOiBudWxsLAorICB0eXBlIDogJ1RSSUFOR0xFUycsCisgIGVsZW1lbnRzVkJPIDog
bnVsbCwKKyAgZWxlbWVudHMgOiBudWxsLAorCisgIHNldERhdGEgOiBmdW5jdGlvbigpIHsKKyAg
ICB0aGlzLmRlc3Ryb3koKTsKKyAgICB0aGlzLmRhdGEgPSBbXTsKKyAgICBmb3IgKHZhciBpPTA7
IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoYXJndW1lbnRzW2ldLmVsZW1l
bnRzKQorICAgICAgICB0aGlzLmVsZW1lbnRzID0gYXJndW1lbnRzW2ldOworICAgICAgZWxzZQor
ICAgICAgICB0aGlzLmRhdGEucHVzaChhcmd1bWVudHNbaV0pOworICAgIH0KKyAgfSwKKworICBk
ZXN0cm95IDogZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMudmJvcyAhPSBudWxsKQorICAgICAg
Zm9yICh2YXIgaT0wOyBpPHRoaXMudmJvcy5sZW5ndGg7IGkrKykKKyAgICAgICAgdGhpcy5nbC5k
ZWxldGVCdWZmZXIodGhpcy52Ym9zW2ldKTsKKyAgICBpZiAodGhpcy5lbGVtZW50c1ZCTyAhPSBu
dWxsKQorICAgICAgdGhpcy5nbC5kZWxldGVCdWZmZXIodGhpcy5lbGVtZW50c1ZCTyk7CisgICAg
dGhpcy5sZW5ndGggPSB0aGlzLmVsZW1lbnRzTGVuZ3RoID0gMDsKKyAgICB0aGlzLnZib3MgPSB0
aGlzLmVsZW1lbnRzVkJPID0gbnVsbDsKKyAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7Cisg
IH0sCisKKyAgaW5pdCA6IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZGVzdHJveSgpOworICAgIHZh
ciBnbCA9IHRoaXMuZ2w7CisKKyAgICBnbC5nZXRFcnJvcigpOworICAgIHZhciB2Ym9zID0gW107
CisgICAgdmFyIGxlbmd0aCA9IDA7CisgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5n
dGg7IGkrKykKKyAgICAgIHZib3MucHVzaChnbC5jcmVhdGVCdWZmZXIoKSk7CisgICAgaWYgKHRo
aXMuZWxlbWVudHMgIT0gbnVsbCkKKyAgICAgIHRoaXMuZWxlbWVudHNWQk8gPSBnbC5jcmVhdGVC
dWZmZXIoKTsKKyAgICB0cnkgeworICAgICAgdGhyb3dFcnJvcihnbCwgImdlbkJ1ZmZlcnMiKTsK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgeworICAgICAg
ICB2YXIgZCA9IHRoaXMuZGF0YVtpXTsKKyAgICAgICAgdmFyIGRsZW4gPSBNYXRoLmZsb29yKGQu
ZGF0YS5sZW5ndGggLyBkLnNpemUpOworICAgICAgICBpZiAoaSA9PSAwIHx8IGRsZW4gPCBsZW5n
dGgpCisgICAgICAgICAgICBsZW5ndGggPSBkbGVuOworICAgICAgICBpZiAoIWQuZmxvYXRBcnJh
eSkKKyAgICAgICAgICBkLmZsb2F0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGQuZGF0YSk7Cisg
ICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym9zW2ldKTsKKyAgICAgICAg
dGhyb3dFcnJvcihnbCwgImJpbmRCdWZmZXIiKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5B
UlJBWV9CVUZGRVIsIGQuZmxvYXRBcnJheSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICB0aHJv
d0Vycm9yKGdsLCAiYnVmZmVyRGF0YSIpOworICAgICAgfQorICAgICAgaWYgKHRoaXMuZWxlbWVu
dHNWQk8gIT0gbnVsbCkgeworICAgICAgICB2YXIgZCA9IHRoaXMuZWxlbWVudHM7CisgICAgICAg
IHRoaXMuZWxlbWVudHNMZW5ndGggPSBkLmRhdGEubGVuZ3RoOworICAgICAgICB0aGlzLmVsZW1l
bnRzVHlwZSA9IGQudHlwZSA9PSBnbC5VTlNJR05FRF9CWVRFID8gZC50eXBlIDogZ2wuVU5TSUdO
RURfU0hPUlQ7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IHRoaXMuZWxlbWVudHNWQk8pOworICAgICAgICB0aHJvd0Vycm9yKGdsLCAiYmluZEJ1ZmZlciBF
TEVNRU5UX0FSUkFZX0JVRkZFUiIpOworICAgICAgICBpZiAodGhpcy5lbGVtZW50c1R5cGUgPT0g
Z2wuVU5TSUdORURfU0hPUlQgJiYgIWQudXNob3J0QXJyYXkpIHsKKyAgICAgICAgICBkLnVzaG9y
dEFycmF5ID0gbmV3IFVpbnQxNkFycmF5KGQuZGF0YSk7CisgICAgICAgICAgZ2wuYnVmZmVyRGF0
YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZC51c2hvcnRBcnJheSwgZ2wuU1RBVElDX0RSQVcp
OworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudHNUeXBlID09IGdsLlVOU0lHTkVEX0JZ
VEUgJiYgIWQudWJ5dGVBcnJheSkgeworICAgICAgICAgIGQudWJ5dGVBcnJheSA9IG5ldyBVaW50
OEFycmF5KGQuZGF0YSk7CisgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgZC51Ynl0ZUFycmF5LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIH0KKyAgICAg
ICAgdGhyb3dFcnJvcihnbCwgImJ1ZmZlckRhdGEgRUxFTUVOVF9BUlJBWV9CVUZGRVIiKTsKKyAg
ICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgIGZvciAodmFyIGk9MDsgaTx2Ym9zLmxlbmd0
aDsgaSsrKQorICAgICAgICBnbC5kZWxldGVCdWZmZXIodmJvc1tpXSk7CisgICAgICB0aHJvdyhl
KTsKKyAgICB9CisKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisKKyAgICB0
aGlzLmxlbmd0aCA9IGxlbmd0aDsKKyAgICB0aGlzLnZib3MgPSB2Ym9zOworCisgICAgdGhpcy5p
bml0aWFsaXplZCA9IHRydWU7CisgIH0sCisKKyAgdXNlIDogZnVuY3Rpb24oKSB7CisgICAgaWYg
KCF0aGlzLmluaXRpYWxpemVkKSB0aGlzLmluaXQoKTsKKyAgICB2YXIgZ2wgPSB0aGlzLmdsOwor
ICAgIGZvciAodmFyIGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChh
cmd1bWVudHNbaV0gPT0gbnVsbCB8fCBhcmd1bWVudHNbaV0gPT0gLTEpIGNvbnRpbnVlOworICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHRoaXMudmJvc1tpXSk7CisgICAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGFyZ3VtZW50c1tpXSwgdGhpcy5kYXRhW2ldLnNpemUsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShh
cmd1bWVudHNbaV0pOworICAgIH0KKyAgICBpZiAodGhpcy5lbGVtZW50c1ZCTyAhPSBudWxsKSB7
CisgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLmVsZW1l
bnRzVkJPKTsKKyAgICB9CisgIH0sCisKKyAgZHJhdyA6IGZ1bmN0aW9uKCkgeworICAgIHZhciBh
cmdzID0gW107CisgICAgdGhpcy51c2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB2YXIg
Z2wgPSB0aGlzLmdsOworICAgIGlmICh0aGlzLmVsZW1lbnRzVkJPICE9IG51bGwpIHsKKyAgICAg
IGdsLmRyYXdFbGVtZW50cyhnbFt0aGlzLnR5cGVdLCB0aGlzLmVsZW1lbnRzTGVuZ3RoLCB0aGlz
LmVsZW1lbnRzVHlwZSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGdsLmRyYXdBcnJheXMoZ2xb
dGhpcy50eXBlXSwgMCwgdGhpcy5sZW5ndGgpOworICAgIH0KKyAgfQorfQorCitGQk8gPSBmdW5j
dGlvbihnbCwgd2lkdGgsIGhlaWdodCwgdXNlX2RlcHRoKSB7CisgIHRoaXMuZ2wgPSBnbDsKKyAg
dGhpcy53aWR0aCA9IHdpZHRoOworICB0aGlzLmhlaWdodCA9IGhlaWdodDsKKyAgaWYgKHVzZV9k
ZXB0aCAhPSBudWxsKQorICAgIHRoaXMudXNlRGVwdGggPSB1c2VfZGVwdGg7Cit9CitGQk8ucHJv
dG90eXBlID0geworICBpbml0aWFsaXplZCA6IGZhbHNlLAorICB1c2VEZXB0aCA6IHRydWUsCisg
IGZibyA6IG51bGwsCisgIHJibyA6IG51bGwsCisgIHRleHR1cmUgOiBudWxsLAorCisgIGRlc3Ry
b3kgOiBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5mYm8pIHRoaXMuZ2wuZGVsZXRlRnJhbWVi
dWZmZXIodGhpcy5mYm8pOworICAgIGlmICh0aGlzLnJibykgdGhpcy5nbC5kZWxldGVSZW5kZXJi
dWZmZXIodGhpcy5yYm8pOworICAgIGlmICh0aGlzLnRleHR1cmUpIHRoaXMuZ2wuZGVsZXRlVGV4
dHVyZSh0aGlzLnRleHR1cmUpOworICB9LAorCisgIGluaXQgOiBmdW5jdGlvbigpIHsKKyAgICB2
YXIgZ2wgPSB0aGlzLmdsOworICAgIHZhciB3ID0gdGhpcy53aWR0aCwgaCA9IHRoaXMuaGVpZ2h0
OworICAgIHZhciBmYm8gPSB0aGlzLmZibyAhPSBudWxsID8gdGhpcy5mYm8gOiBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgIHZhciByYjsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICBjaGVja0Vycm9yKGdsLCAiRkJPLmluaXQgYmluZEZyYW1l
YnVmZmVyIik7CisgICAgaWYgKHRoaXMudXNlRGVwdGgpIHsKKyAgICAgIHJiID0gdGhpcy5yYm8g
IT0gbnVsbCA/IHRoaXMucmJvIDogZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICBnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIpOworICAgICAgY2hlY2tFcnJvcihn
bCwgIkZCTy5pbml0IGJpbmRSZW5kZXJidWZmZXIiKTsKKyAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgdywgaCk7CisgICAg
ICBjaGVja0Vycm9yKGdsLCAiRkJPLmluaXQgcmVuZGVyYnVmZmVyU3RvcmFnZSIpOworICAgIH0K
KworICAgIHZhciB0ZXggPSB0aGlzLnRleHR1cmUgIT0gbnVsbCA/IHRoaXMudGV4dHVyZSA6IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworICAgIHRyeSB7CisgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIHcsIGgsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIH0gY2F0
Y2ggKGUpIHsgLy8gYXJnaCwgbm8gbnVsbCB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgIHZhciB0bXAg
PSB0aGlzLmdldFRlbXBDYW52YXModyxoKTsKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdG1wKTsKKyAgICB9
CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywg
Z2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
LkxJTkVBUik7CisgICAgY2hlY2tFcnJvcihnbCwgIkZCTy5pbml0IHRleCIpOworCisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICAgIGNoZWNrRXJyb3IoZ2wsICJGQk8uaW5pdCBi
aW5kIHRleCIpOworCisgICAgaWYgKHRoaXMudXNlRGVwdGgpIHsKKyAgICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5S
RU5ERVJCVUZGRVIsIHJiKTsKKyAgICAgIGNoZWNrRXJyb3IoZ2wsICJGQk8uaW5pdCBiaW5kIGRl
cHRoIGJ1ZmZlciIpOworICAgIH0KKworICAgIHZhciBmYnN0YXQgPSBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICBpZiAoZmJzdGF0ICE9IGdsLkZSQU1FQlVG
RkVSX0NPTVBMRVRFKSB7CisgICAgICB2YXIgZ2x2OworICAgICAgZm9yICh2YXIgdiBpbiBnbCkg
eworICAgICAgICB0cnkgeyBnbHYgPSBnbFt2XTsgfSBjYXRjaCAoZSkgeyBnbHYgPSBudWxsOyB9
CisgICAgICAgIGlmIChnbHYgPT0gZmJzdGF0KSB7IGZic3RhdCA9IHY7IGJyZWFrOyB9fQorICAg
ICAgICBsb2coIkZyYW1lYnVmZmVyIHN0YXR1czogIiArIGZic3RhdCk7CisgICAgfQorICAgIGNo
ZWNrRXJyb3IoZ2wsICJGQk8uaW5pdCBjaGVjayBmYm8iKTsKKworICAgIHRoaXMuZmJvID0gZmJv
OworICAgIHRoaXMucmJvID0gcmI7CisgICAgdGhpcy50ZXh0dXJlID0gdGV4OworICAgIHRoaXMu
aW5pdGlhbGl6ZWQgPSB0cnVlOworICB9LAorCisgIGdldFRlbXBDYW52YXMgOiBmdW5jdGlvbih3
LCBoKSB7CisgICAgaWYgKCFGQk8udGVtcENhbnZhcykgeworICAgICAgRkJPLnRlbXBDYW52YXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICB9CisgICAgRkJPLnRlbXBD
YW52YXMud2lkdGggPSB3OworICAgIEZCTy50ZW1wQ2FudmFzLmhlaWdodCA9IGg7CisgICAgcmV0
dXJuIEZCTy50ZW1wQ2FudmFzOworICB9LAorCisgIHVzZSA6IGZ1bmN0aW9uKCkgeworICAgIGlm
ICghdGhpcy5pbml0aWFsaXplZCkgdGhpcy5pbml0KCk7CisgICAgdGhpcy5nbC5iaW5kRnJhbWVi
dWZmZXIodGhpcy5nbC5GUkFNRUJVRkZFUiwgdGhpcy5mYm8pOworICB9Cit9CisKK2Z1bmN0aW9u
IEdMRXJyb3IoZXJyLCBtc2csIGZpbGVOYW1lLCBsaW5lTnVtYmVyKSB7CisgIHRoaXMubWVzc2Fn
ZSA9IG1zZzsKKyAgdGhpcy5nbEVycm9yID0gZXJyOworfQorCitHTEVycm9yLnByb3RvdHlwZSA9
IG5ldyBFcnJvcigpOworCitmdW5jdGlvbiBtYWtlR0xFcnJvcldyYXBwZXIoZ2wsIGZuYW1lKSB7
CisgIHJldHVybiAoZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAgIHZhciBydiA9IGdsW2Zu
YW1lXS5hcHBseShnbCwgYXJndW1lbnRzKTsKKyAgICAgIHZhciBlcnIgPSBnbC5nZXRFcnJvcigp
OworICAgICAgaWYgKGVyciAhPSBnbC5OT19FUlJPUikgeworICAgICAgICB0aHJvdyhuZXcgR0xF
cnJvcigKKyAgICAgICAgICAgIGVyciwgIkdMIGVycm9yICIrZ2V0R0xFcnJvckFzU3RyaW5nKGds
LCBlcnIpKyIgaW4gIitmbmFtZSkpOworICAgICAgfQorICAgICAgcmV0dXJuIHJ2OworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgIGlmIChlLmdsRXJyb3IgIT09IHVuZGVmaW5lZCkgeworICAgICAg
ICB0aHJvdyBlOworICAgICAgfQorICAgICAgdGhyb3cobmV3IEVycm9yKCJUaHJldyAiICsgZS5u
YW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGluICIgKyBmbmFtZSArICJcbiIgKworICAg
ICAgICAgICAgICAgICAgICAgIGUubWVzc2FnZSArICJcbiIgKworICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyKSk7CisgICAgfQorICB9KTsKK30KKworZnVuY3Rp
b24gd3JhcEdMQ29udGV4dChnbCkgeworICB2YXIgd3JhcCA9IHt9OworICBmb3IgKHZhciBpIGlu
IGdsKSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICh0eXBlb2YgZ2xbaV0gPT0gJ2Z1bmN0aW9uJykg
eworICAgICAgICAgIHdyYXBbaV0gPSBtYWtlR0xFcnJvcldyYXBwZXIoZ2wsIGkpOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICB3cmFwW2ldID0gZ2xbaV07CisgICAgICB9CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgLy8gbG9nKCJ3cmFwR0xDb250ZXh0OiBFcnJvciBhY2Nlc3NpbmcgIiAr
IGkpOworICAgIH0KKyAgfQorICB3cmFwLmdldEVycm9yID0gZnVuY3Rpb24oKXsgcmV0dXJuIGds
LmdldEVycm9yKCk7IH07CisgIHJldHVybiB3cmFwOworfQorCitmdW5jdGlvbiBnZXRHTENvbnRl
eHQoY2FudmFzKSB7CisgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dChHTF9DT05URVhUX0lELCB7
YW50aWFsaWFzOiBmYWxzZX0pOworfQorCisvLyBBc3NlcnQgdGhhdCBmIGdlbmVyYXRlcyBhIHNw
ZWNpZmljIEdMIGVycm9yLgorZnVuY3Rpb24gYXNzZXJ0R0xFcnJvcihnbCwgZXJyLCBuYW1lLCBm
KSB7CisgIGlmIChmID09IG51bGwpIHsgZiA9IG5hbWU7IG5hbWUgPSBudWxsOyB9CisgIHZhciBy
ID0gZmFsc2U7CisgIHZhciBnbEVyciA9IDA7CisgIHRyeSB7IGYoKTsgfSBjYXRjaChlKSB7IHI9
dHJ1ZTsgZ2xFcnIgPSBlLmdsRXJyb3I7IH0KKyAgaWYgKGdsRXJyICE9PSBlcnIpIHsKKyAgICBp
ZiAoZ2xFcnIgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGVzdEZhaWxlZCgiYXNzZXJ0R0xFcnJv
cjogVU5FWFBFQ1RFRCBFWENFUFRJT04iLCBuYW1lLCBmKTsKKyAgICB9IGVsc2UgeworICAgICAg
dGVzdEZhaWxlZCgiYXNzZXJ0R0xFcnJvcjogZXhwZWN0ZWQ6ICIgKyBnZXRHTEVycm9yQXNTdHJp
bmcoZ2wsIGVycikgKworICAgICAgICAgICAgICAgICAiIGFjdHVhbDogIiArIGdldEdMRXJyb3JB
c1N0cmluZyhnbCwgZ2xFcnIpLCBuYW1lLCBmKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBc3NlcnQgdGhhdCBmIGdlbmVyYXRlcyBhIEdM
IGVycm9yIGZyb20gYSBsaXN0LgorZnVuY3Rpb24gYXNzZXJ0R0xFcnJvckluKGdsLCBleHBlY3Rl
ZEVycm9yTGlzdCwgbmFtZSwgZikgeworICBpZiAoZiA9PSBudWxsKSB7IGYgPSBuYW1lOyBuYW1l
ID0gbnVsbDsgfQorCisgIHZhciBhY3R1YWxFcnJvciA9IDA7CisgIHRyeSB7CisgICAgZigpOwor
ICB9IGNhdGNoKGUpIHsKKyAgICBpZiAoJ2dsRXJyb3InIGluIGUpIHsKKyAgICAgIGFjdHVhbEVy
cm9yID0gZS5nbEVycm9yOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0RmFpbGVkKCJhc3NlcnRH
TEVycm9yOiBVTkVYUENFVEVEIEVYQ0VQVElPTiIsIG5hbWUsIGYpOworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgfQorCisgIHZhciBleHBlY3RlZEVycm9yU3RyTGlzdCA9IFtdOworICB2
YXIgZXhwZWN0ZWRFcnJvclNldCA9IHt9OworICBmb3IgKHZhciBpIGluIGV4cGVjdGVkRXJyb3JM
aXN0KSB7CisgICAgdmFyIGN1ciA9IGV4cGVjdGVkRXJyb3JMaXN0W2ldOworICAgIGV4cGVjdGVk
RXJyb3JTZXRbY3VyXSA9IHRydWU7CisgICAgZXhwZWN0ZWRFcnJvclN0ckxpc3QucHVzaChnZXRH
TEVycm9yQXNTdHJpbmcoZ2wsIGN1cikpOworICB9CisgIHZhciBleHBlY3RlZEVycm9yTGlzdFN0
ciA9ICJbIiArIGV4cGVjdGVkRXJyb3JTdHJMaXN0LmpvaW4oIiwgIikgKyAiXSI7CisKKyAgaWYg
KGFjdHVhbEVycm9yIGluIGV4cGVjdGVkRXJyb3JTZXQpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorCisgIHRlc3RGYWlsZWQoImFzc2VydEdMRXJyb3I6IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRF
cnJvckxpc3RTdHIgKworICAgICAgICAgICAgICIgYWN0dWFsOiAiICsgZ2V0R0xFcnJvckFzU3Ry
aW5nKGdsLCBhY3R1YWxFcnJvciksIG5hbWUsIGYpOworICByZXR1cm4gZmFsc2U7Cit9CisKKy8v
IEFzc2VydCB0aGF0IGYgZ2VuZXJhdGVzIHNvbWUgR0wgZXJyb3IuIFVzZWQgaW4gc2l0dWF0aW9u
cyB3aGVyZSBpdCdzCisvLyBhbWJpZ2lvdXMgd2hpY2ggb2YgbXVsdGlwbGUgcG9zc2libGUgZXJy
b3JzIHdpbGwgYmUgZ2VuZXJhdGVkLgorZnVuY3Rpb24gYXNzZXJ0U29tZUdMRXJyb3IoZ2wsIG5h
bWUsIGYpIHsKKyAgaWYgKGYgPT0gbnVsbCkgeyBmID0gbmFtZTsgbmFtZSA9IG51bGw7IH0KKyAg
dmFyIHIgPSBmYWxzZTsKKyAgdmFyIGdsRXJyID0gMDsKKyAgdmFyIGVyciA9IDA7CisgIHRyeSB7
IGYoKTsgfSBjYXRjaChlKSB7IHI9dHJ1ZTsgZ2xFcnIgPSBlLmdsRXJyb3I7IH0KKyAgaWYgKGds
RXJyID09PSAwKSB7CisgICAgaWYgKGdsRXJyID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRlc3RG
YWlsZWQoImFzc2VydEdMRXJyb3I6IFVORVhQRUNURUQgRVhDRVBUSU9OIiwgbmFtZSwgZik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoImFzc2VydEdMRXJyb3I6IGV4cGVjdGVkOiAi
ICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBlcnIpICsKKyAgICAgICAgICAgICAgICAgIiBhY3R1
YWw6ICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGdsRXJyKSwgbmFtZSwgZik7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXNzZXJ0IHRo
YXQgZiB0aHJvd3MgYW4gZXhjZXB0aW9uIGJ1dCBkb2VzIG5vdCBnZW5lcmF0ZSBhIEdMIGVycm9y
LgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dOb0dMRXJyb3IoZ2wsIG5hbWUsIGYpIHsKKyAgaWYgKGYg
PT0gbnVsbCkgeyBmID0gbmFtZTsgbmFtZSA9IG51bGw7IH0KKyAgdmFyIHIgPSBmYWxzZTsKKyAg
dmFyIGdsRXJyID0gdW5kZWZpbmVkOworICB2YXIgZXhwOworICB0cnkgeyBmKCk7IH0gY2F0Y2go
ZSkgeyByPXRydWU7IGdsRXJyID0gZS5nbEVycm9yOyBleHAgPSBlO30KKyAgaWYgKCFyKSB7Cisg
ICAgdGVzdEZhaWxlZCgKKyAgICAgICJhc3NlcnRUaHJvd05vR0xFcnJvcjogc2hvdWxkIGhhdmUg
dGhyb3duIGV4Y2VwdGlvbiIsIG5hbWUsIGYpOworICAgIHJldHVybiBmYWxzZTsKKyAgfSBlbHNl
IHsKKyAgICBpZiAoZ2xFcnIgIT09IHVuZGVmaW5lZCkgeworICAgICAgdGVzdEZhaWxlZCgKKyAg
ICAgICAgImFzc2VydFRocm93Tm9HTEVycm9yOiBzaG91bGQgYmUgbm8gR0wgZXJyb3IgYnV0IGdl
bmVyYXRlZDogIiArCisgICAgICAgIGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZ2xFcnIpLCBuYW1l
LCBmKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgdGVzdFBhc3NlZCgiYXNz
ZXJ0VGhyb3dOb0dMRXJyb3IiLCBuYW1lLCBmKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydFRocm93cyhnbCwgc2hvdWxkVGhyb3csIGluZm8sIGZ1bmMpIHsKKyAgdmFyIGRp
ZFRocm93ID0gZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7Cisg
ICAgdmFyIGRpZEdMRXJyb3IgPSAoZSBpbnN0YW5jZW9mIEdMRXJyb3IpOworICAgIGlmICghZGlk
R0xFcnJvcikgeworICAgICAgZGlkVGhyb3cgPSB0cnVlOworICAgIH0KKyAgfQorCisgIHZhciB0
ZXh0ID0gc2hvdWxkVGhyb3cgPyAiU2hvdWxkIHRocm93OiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiU2hvdWxkIG5vdCB0aHJvdzogIjsKKyAgdmFyIGZ1bmMgPSAoZGlkVGhyb3cgPT0g
c2hvdWxkVGhyb3cpID8gdGVzdFBhc3NlZCA6IHRlc3RGYWlsZWQ7CisKKyAgZnVuYyh0ZXh0ICsg
aW5mbyk7Cit9CisKK1F1YWQgPSB7CisgIHZlcnRpY2VzIDogWworICAgIC0xLC0xLDAsCisgICAg
MSwtMSwwLAorICAgIC0xLDEsMCwKKyAgICAxLC0xLDAsCisgICAgMSwxLDAsCisgICAgLTEsMSww
CisgIF0sCisgIG5vcm1hbHMgOiBbCisgICAgMCwwLC0xLAorICAgIDAsMCwtMSwKKyAgICAwLDAs
LTEsCisgICAgMCwwLC0xLAorICAgIDAsMCwtMSwKKyAgICAwLDAsLTEKKyAgXSwKKyAgdGV4Y29v
cmRzIDogWworICAgIDAsMCwKKyAgICAxLDAsCisgICAgMCwxLAorICAgIDEsMCwKKyAgICAxLDEs
CisgICAgMCwxCisgIF0sCisgIGluZGljZXMgOiBbMCwxLDIsMSw1LDJdLAorICBtYWtlVkJPIDog
ZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1cm4gbmV3IFZCTyhnbCwKKyAgICAgICAge3NpemU6Mywg
ZGF0YTogUXVhZC52ZXJ0aWNlc30sCisgICAgICAgIHtzaXplOjMsIGRhdGE6IFF1YWQubm9ybWFs
c30sCisgICAgICAgIHtzaXplOjIsIGRhdGE6IFF1YWQudGV4Y29vcmRzfQorICAgICkKKyAgfSwK
KyAgY2FjaGU6IHt9LAorICBnZXRDYWNoZWRWQk8gOiBmdW5jdGlvbihnbCkgeworICAgIGlmICgh
dGhpcy5jYWNoZVtnbF0pCisgICAgICB0aGlzLmNhY2hlW2dsXSA9IHRoaXMubWFrZVZCTyhnbCk7
CisgICAgcmV0dXJuIHRoaXMuY2FjaGVbZ2xdOworICB9Cit9CitDdWJlID0geworICB2ZXJ0aWNl
cyA6IFsgIDAuNSwgLTAuNSwgIDAuNSwgLy8gK1gKKyAgICAgICAgICAgICAgICAwLjUsIC0wLjUs
IC0wLjUsCisgICAgICAgICAgICAgICAgMC41LCAgMC41LCAtMC41LAorICAgICAgICAgICAgICAg
IDAuNSwgIDAuNSwgIDAuNSwKKworICAgICAgICAgICAgICAgIDAuNSwgIDAuNSwgIDAuNSwgLy8g
K1kKKyAgICAgICAgICAgICAgICAwLjUsICAwLjUsIC0wLjUsCisgICAgICAgICAgICAgICAgLTAu
NSwgIDAuNSwgLTAuNSwKKyAgICAgICAgICAgICAgICAtMC41LCAgMC41LCAgMC41LAorCisgICAg
ICAgICAgICAgICAgMC41LCAgMC41LCAgMC41LCAvLyArWgorICAgICAgICAgICAgICAgIC0wLjUs
ICAwLjUsICAwLjUsCisgICAgICAgICAgICAgICAgLTAuNSwgLTAuNSwgIDAuNSwKKyAgICAgICAg
ICAgICAgICAwLjUsIC0wLjUsICAwLjUsCisKKyAgICAgICAgICAgICAgICAtMC41LCAtMC41LCAg
MC41LCAvLyAtWAorICAgICAgICAgICAgICAgIC0wLjUsICAwLjUsICAwLjUsCisgICAgICAgICAg
ICAgICAgLTAuNSwgIDAuNSwgLTAuNSwKKyAgICAgICAgICAgICAgICAtMC41LCAtMC41LCAtMC41
LAorCisgICAgICAgICAgICAgICAgLTAuNSwgLTAuNSwgIDAuNSwgLy8gLVkKKyAgICAgICAgICAg
ICAgICAtMC41LCAtMC41LCAtMC41LAorICAgICAgICAgICAgICAgIDAuNSwgLTAuNSwgLTAuNSwK
KyAgICAgICAgICAgICAgICAwLjUsIC0wLjUsICAwLjUsCisKKyAgICAgICAgICAgICAgICAtMC41
LCAtMC41LCAtMC41LCAvLyAtWgorICAgICAgICAgICAgICAgIC0wLjUsICAwLjUsIC0wLjUsCisg
ICAgICAgICAgICAgICAgMC41LCAgMC41LCAtMC41LAorICAgICAgICAgICAgICAgIDAuNSwgLTAu
NSwgLTAuNSwKKyAgICAgIF0sCisKKyAgbm9ybWFscyA6IFsgMSwgMCwgMCwKKyAgICAgICAgICAg
ICAgMSwgMCwgMCwKKyAgICAgICAgICAgICAgMSwgMCwgMCwKKyAgICAgICAgICAgICAgMSwgMCwg
MCwKKworICAgICAgICAgICAgICAwLCAxLCAwLAorICAgICAgICAgICAgICAwLCAxLCAwLAorICAg
ICAgICAgICAgICAwLCAxLCAwLAorICAgICAgICAgICAgICAwLCAxLCAwLAorCisgICAgICAgICAg
ICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgIDAsIDAs
IDEsCisgICAgICAgICAgICAgIDAsIDAsIDEsCisKKyAgICAgICAgICAgICAgLTEsIDAsIDAsCisg
ICAgICAgICAgICAgIC0xLCAwLCAwLAorICAgICAgICAgICAgICAtMSwgMCwgMCwKKyAgICAgICAg
ICAgICAgLTEsIDAsIDAsCisKKyAgICAgICAgICAgICAgMCwtMSwgMCwKKyAgICAgICAgICAgICAg
MCwtMSwgMCwKKyAgICAgICAgICAgICAgMCwtMSwgMCwKKyAgICAgICAgICAgICAgMCwtMSwgMCwK
KworICAgICAgICAgICAgICAwLCAwLC0xLAorICAgICAgICAgICAgICAwLCAwLC0xLAorICAgICAg
ICAgICAgICAwLCAwLC0xLAorICAgICAgICAgICAgICAwLCAwLC0xCisgICAgICBdLAorCisgIGlu
ZGljZXMgOiBbXSwKKyAgY3JlYXRlIDogZnVuY3Rpb24oKXsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDY7IGkrKykgeworICAgICAgQ3ViZS5pbmRpY2VzLnB1c2goaSo0ICsgMCk7CisgICAgICBD
dWJlLmluZGljZXMucHVzaChpKjQgKyAxKTsKKyAgICAgIEN1YmUuaW5kaWNlcy5wdXNoKGkqNCAr
IDMpOworICAgICAgQ3ViZS5pbmRpY2VzLnB1c2goaSo0ICsgMSk7CisgICAgICBDdWJlLmluZGlj
ZXMucHVzaChpKjQgKyAyKTsKKyAgICAgIEN1YmUuaW5kaWNlcy5wdXNoKGkqNCArIDMpOworICAg
IH0KKyAgfSwKKworICBtYWtlVkJPIDogZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1cm4gbmV3IFZC
TyhnbCwKKyAgICAgICAge3NpemU6MywgZGF0YTogQ3ViZS52ZXJ0aWNlc30sCisgICAgICAgIHtz
aXplOjMsIGRhdGE6IEN1YmUubm9ybWFsc30sCisgICAgICAgIHtlbGVtZW50czogdHJ1ZSwgZGF0
YTogQ3ViZS5pbmRpY2VzfQorICAgICkKKyAgfSwKKyAgY2FjaGUgOiB7fSwKKyAgZ2V0Q2FjaGVk
VkJPIDogZnVuY3Rpb24oZ2wpIHsKKyAgICBpZiAoIXRoaXMuY2FjaGVbZ2xdKQorICAgICAgdGhp
cy5jYWNoZVtnbF0gPSB0aGlzLm1ha2VWQk8oZ2wpOworICAgIHJldHVybiB0aGlzLmNhY2hlW2ds
XTsKKyAgfQorfQorQ3ViZS5jcmVhdGUoKTsKKworU3BoZXJlID0geworICB2ZXJ0aWNlcyA6IFtd
LAorICBub3JtYWxzIDogW10sCisgIGluZGljZXMgOiBbXSwKKyAgY3JlYXRlIDogZnVuY3Rpb24o
KXsKKyAgICB2YXIgciA9IDAuNzU7CisgICAgZnVuY3Rpb24gdmVydCh0aGV0YSwgcGhpKQorICAg
IHsKKyAgICAgIHZhciByID0gMC43NTsKKyAgICAgIHZhciB4LCB5LCB6LCBueCwgbnksIG56Owor
CisgICAgICBueCA9IE1hdGguc2luKHRoZXRhKSAqIE1hdGguY29zKHBoaSk7CisgICAgICBueSA9
IE1hdGguc2luKHBoaSk7CisgICAgICBueiA9IE1hdGguY29zKHRoZXRhKSAqIE1hdGguY29zKHBo
aSk7CisgICAgICBTcGhlcmUubm9ybWFscy5wdXNoKG54KTsKKyAgICAgIFNwaGVyZS5ub3JtYWxz
LnB1c2gobnkpOworICAgICAgU3BoZXJlLm5vcm1hbHMucHVzaChueik7CisKKyAgICAgIHggPSBy
ICogTWF0aC5zaW4odGhldGEpICogTWF0aC5jb3MocGhpKTsKKyAgICAgIHkgPSByICogTWF0aC5z
aW4ocGhpKTsKKyAgICAgIHogPSByICogTWF0aC5jb3ModGhldGEpICogTWF0aC5jb3MocGhpKTsK
KyAgICAgIFNwaGVyZS52ZXJ0aWNlcy5wdXNoKHgpOworICAgICAgU3BoZXJlLnZlcnRpY2VzLnB1
c2goeSk7CisgICAgICBTcGhlcmUudmVydGljZXMucHVzaCh6KTsKKyAgICB9CisgICAgZm9yICh2
YXIgcGhpID0gLU1hdGguUEkvMjsgcGhpIDwgTWF0aC5QSS8yOyBwaGkgKz0gTWF0aC5QSS8yMCkg
eworICAgICAgdmFyIHBoaTIgPSBwaGkgKyBNYXRoLlBJLzIwOworICAgICAgZm9yICh2YXIgdGhl
dGEgPSAtTWF0aC5QSS8yOyB0aGV0YSA8PSBNYXRoLlBJLzI7IHRoZXRhICs9IE1hdGguUEkvMjAp
IHsKKyAgICAgICAgdmVydCh0aGV0YSwgcGhpKTsKKyAgICAgICAgdmVydCh0aGV0YSwgcGhpMik7
CisgICAgICB9CisgICAgfQorICB9Cit9CisKK1NwaGVyZS5jcmVhdGUoKTsKKworaW5pdEdMX0NP
TlRFWFRfSUQgPSBmdW5jdGlvbigpeworICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2NhbnZhcycpOworICB2YXIgY29udGV4dE5hbWVzID0gWyd3ZWJnbCcsICdleHBlcmltZW50YWwt
d2ViZ2wnXTsKKyAgR0xfQ09OVEVYVF9JRCA9IG51bGw7CisgIGZvciAodmFyIGk9MDsgaTxjb250
ZXh0TmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICB0cnkgeworICAgICAgaWYgKGMuZ2V0Q29udGV4
dChjb250ZXh0TmFtZXNbaV0pKSB7CisgICAgICAgIEdMX0NPTlRFWFRfSUQgPSBjb250ZXh0TmFt
ZXNbaV07CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICB9
CisgIH0KKyAgaWYgKCFHTF9DT05URVhUX0lEKSB7CisgICAgbG9nKCJObyBXZWJHTCBjb250ZXh0
IGZvdW5kLiBVbmFibGUgdG8gcnVuIHRlc3RzLiIpOworICB9Cit9CisKK2luaXRHTF9DT05URVhU
X0lEKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvY29udGV4dC1hdHRyaWJ1dGUtcHJl
c2VydmUtZHJhd2luZy1idWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWF0dHJp
YnV0ZS1wcmVzZXJ2ZS1kcmF3aW5nLWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMzBiNjlkOWQy
MjJmN2I0NDZjNjk4YzllMmI3NjE3MmQ1YzNlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3Jl
ZW5jYW52YXMvY29udGV4dC1hdHRyaWJ1dGUtcHJlc2VydmUtZHJhd2luZy1idWZmZXIuaHRtbApA
QCAtMCwwICsxLDkzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+T2Zmc2NyZWVuQ2FuYXZzIGNvbnRleHQgYXR0cmlidXRlIHByZXNlcnZlRHJh
d2luZ0J1ZmZlcjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9jYW52YXMtdGVz
dHMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjYW52YXNlcyI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyB3aGV0aGVyIE9mZnNjcmVlbkNhbnZhcyB3ZWJnbCBjb250ZXh0IGhvbm9ycyB0aGUg
cHJlc2VydmVEcmF3aW5nQnVmZmVyIGZsYWcuIik7Citjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK2NvbnN0IHBpeGVscyA9IG5ldyBVaW50OEFycmF5KDQpOworCitmdW5jdGlvbiBjaGVja1Bp
eGVscyhjb2xvcikgeworICByZXR1cm4gKGNvbG9yWzBdID09PSBwaXhlbHNbMF0pICYmCisgICAg
KGNvbG9yWzFdID09PSBwaXhlbHNbMV0pICYmCisgICAgKGNvbG9yWzJdID09PSBwaXhlbHNbMl0p
ICYmCisgICAgKGNvbG9yWzNdID09PSBwaXhlbHNbM10pOworfQorCitjb25zdCBuZXh0RnJhbWUg
PSAoKSA9PiBuZXcgUHJvbWlzZShyID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShyKSk7CisKK2Fz
eW5jIGZ1bmN0aW9uIGdldFBpeGVsc0Zyb21PZmZzY3JlZW5XZWJnbChwcmVzZXJ2ZUZsYWcsIGNv
bG9yLCBtc2cpIHsKKyAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXNlcyIpLmFwcGVuZENoaWxk
KGNhbnZhcyk7CisgIGNvbnN0IG9mZnNjcmVlbkNhbnZhcyA9IHRyYW5zZmVycmVkT2Zmc2NyZWVu
Q2FudmFzQ3JlYXRpb24oY2FudmFzLCAxMCwgMTApOworICBjb25zdCBnbCA9IG9mZnNjcmVlbkNh
bnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHByZXNlcnZl
RmxhZ30pOworCisgIC8vIERyYXcgc29tZSBjb2xvciBvbiBnbAorICBnbC5jbGVhckNvbG9yKDEs
IDAsIDEsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICBsZXQgdDsK
KyAgY29uc3QgdDAgPSBhd2FpdCBuZXh0RnJhbWUoKTsKKyAgY29uc3QgdGltZUR1cmF0aW9uID0g
cHJlc2VydmVGbGFnID8gNTAwIDogMjAwMDsKKyAgZm9yICg7OykgeworICAgIHQgPSBhd2FpdCBu
ZXh0RnJhbWUoKTsKKworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBpZiAocHJlc2VydmVGbGFnKSB7CisgICAgICBp
ZiAoIWNoZWNrUGl4ZWxzKGNvbG9yKSkgeworICAgICAgICB0ZXN0RmFpbGVkKG1zZyArICdcbmV4
cGVjdGVkOiAnICsgY29sb3IudG9TdHJpbmcoKSArICcgd2FzICcgKyBwaXhlbHMudG9TdHJpbmco
KSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaWYgKGNo
ZWNrUGl4ZWxzKGNvbG9yKSkgeworICAgICAgICB0ZXN0UGFzc2VkKG1zZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBLZWVwIGNoZWNraW5nIHVudGlsIGl0IHRh
a2VzIHVwIHRvIGEgY2VydGFpbiB0aW1lLgorICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpm
YWxzZSBzZWVtcyBmbGFreSBvbiBDaHJvbWUncyB0ZXN0IGJvdHM7IHJ1biB0aGF0IHRlc3QgZm9y
IGxvbmdlci4KKyAgICBpZiAodCA+IHQwICsgdGltZUR1cmF0aW9uKSB7CisgICAgICBicmVhazsK
KyAgICB9CisgIH0KKworICBpZiAocHJlc2VydmVGbGFnKSB7CisgICAgdGVzdFBhc3NlZChtc2cp
OworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQobXNnICsgJ1xuYWZ0ZXIgJyArIHRpbWVEdXJh
dGlvbiArICcgbXMsIGV4cGVjdGVkOiAnICsgY29sb3IudG9TdHJpbmcoKSArICcgd2FzICcgKyBw
aXhlbHMudG9TdHJpbmcoKSk7CisgIH0KK30KKworKGFzeW5jICgpID0+IHsKKyAgaWYgKCF3aW5k
b3cuT2Zmc2NyZWVuQ2FudmFzKSB7CisgICAgICB0ZXN0UGFzc2VkKCJObyBPZmZzY3JlZW5DYW52
YXMgc3VwcG9ydCIpOworICB9IGVsc2UgeworICAgIC8vIFRlc3QgaWYgT2Zmc2NyZWVuQ2FudmFz
LndlYmdsIHJldGFpbnMgY29udGVudHMgaWYgcHJlc2VydmVEcmF3aW5nQnVmZmVyIGlzIHRydWUu
CisgICAgYXdhaXQgZ2V0UGl4ZWxzRnJvbU9mZnNjcmVlbldlYmdsKHRydWUsIFsyNTUsMCwyNTUs
MjU1XSwgInNob3VsZCBiZSBwcmVzZXJ2ZWQiKTsKKworICAgIC8vIFRlc3QgaWYgT2Zmc2NyZWVu
Q2FudmFzLndlYmdsIGxvc2VzIGNvbnRlbnRzIGlmIHByZXNlcnZlRHJhd2luZ0J1ZmZlciBpcyBm
YWxzZS4KKyAgICBhd2FpdCBnZXRQaXhlbHNGcm9tT2Zmc2NyZWVuV2ViZ2woZmFsc2UsIFswLCAw
LCAwLCAwXSwgInNob3VsZCBub3QgYmUgcHJlc2VydmVkIik7CisgIH0KKyAgZmluaXNoVGVzdCgp
OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZz
Y3JlZW5jYW52YXMvY29udGV4dC1jcmVhdGlvbi13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZh
cy9jb250ZXh0LWNyZWF0aW9uLXdvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4YjM0OGFlMzYwZWQw
MGQ3NDAzMmY5OGQzMWRjYzJiNzcwNTI2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5j
YW52YXMvY29udGV4dC1jcmVhdGlvbi13b3JrZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29u
dGV4dCBDcmVhdGlvbiBUZXN0IGZvciBPZmZzY3JlZW5DYW52YXMgaW4gYSB3b3JrZXI8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IHRoZSBXZWJHTCBjb250ZXh0IGNhbiBiZSBjcmVhdGVkIG9uIGFuIE9mZnNjcmVlbkNh
bnZhcy4iKTsKKworaWYgKCF3aW5kb3cuT2Zmc2NyZWVuQ2FudmFzKSB7CisgIHRlc3RQYXNzZWQo
Ik5vIE9mZnNjcmVlbkNhbnZhcyBzdXBwb3J0Iik7CisgIGZpbmlzaFRlc3QoKTsKK30gZWxzZSB7
CisgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdjb250ZXh0LWNyZWF0aW9uLXdvcmtlci5qcycp
OworICB3b3JrZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IHdvcmtlciIpOworICB3b3JrZXIub25tZXNz
YWdlID0gZnVuY3Rpb24oZSkgeworICAgIGlmIChlLmRhdGEgPT0gIlRlc3QgcGFzc2VkIikgewor
ICAgICAgdGVzdFBhc3NlZCgiQWxsIHRlc3RzIGhhdmUgcGFzc2VkIik7CisgICAgfSBlbHNlIHsK
KyAgICAgIHRlc3RGYWlsZWQoIlNvbWUgdGVzdHMgZmFpbGVkIik7CisgICAgfQorICAgIGZpbmlz
aFRlc3QoKTsKKyAgfQorfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWNyZWF0aW9uLXdvcmtlci5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNjcmVl
bmNhbnZhcy9jb250ZXh0LWNyZWF0aW9uLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGQ4NjdhMWQy
MjdmMGEwYTE0NTdjMGNjMGY2Y2JmNzBhYjcxYzEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2Ny
ZWVuY2FudmFzL2NvbnRleHQtY3JlYXRpb24td29ya2VyLmpzCkBAIC0wLDAgKzEsMTMgQEAKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworaW1wb3J0U2NyaXB0cygi
Li4vLi4vanMvdGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpzIik7CitzZWxmLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGUpIHsKKyAgaWYgKGNvbnRleHRDcmVhdGlvbignd2ViZ2wnKSkKKyAgICBzZWxm
LnBvc3RNZXNzYWdlKCJUZXN0IHBhc3NlZCIpOworICBlbHNlCisgICAgc2VsZi5wb3N0TWVzc2Fn
ZSgiVGVzdCBmYWlsZWQiKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvY29udGV4
dC1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtY3JlYXRpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43M2M5MTFiNWQxYzIyNmIxZDZmNGM3ZmQ1OWMwMWMyMzBkZWZiMGNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtY3JlYXRpb24uaHRtbApAQCAt
MCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgQ29udGV4dCBDcmVhdGlvbiBUZXN0IGZvciBPZmZzY3JlZW5DYW52YXM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIFdlYkdMIGNvbnRleHQgY2FuIGJl
IGNyZWF0ZWQgb24gYW4gT2Zmc2NyZWVuQ2FudmFzLiIpOworCitpZiAoIXdpbmRvdy5PZmZzY3Jl
ZW5DYW52YXMpIHsKKyAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsK
K30gZWxzZSB7CisgIGlmIChjb250ZXh0Q3JlYXRpb24oJ3dlYmdsJykpIHsKKyAgICB0ZXN0UGFz
c2VkKCJXZWJHTCBjb250ZXh0IGNyZWF0ZWQgY29ycmVjdGx5LiIpOworICB9IGVsc2UgeworICAg
IHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgY3JlYXRpb24gZmFpbGVkIik7CisgIH0KK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtbG9zdC1yZXN0b3JlZC13b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWxvc3QtcmVzdG9yZWQtd29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjJkNmVmNjBhNTBmY2UwZGZlYWM2YjM1NDlkOTk4ZjFlNGJlNDU3NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWxvc3QtcmVzdG9yZWQtd29ya2Vy
Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gaW5pdCgpCit7CisgIGRlc2NyaXB0aW9uKCJU
ZXN0cyBiZWhhdmlvciB1bmRlciBhIHJlc3RvcmVkIGNvbnRleHQgZm9yIE9mZnNjcmVlbkNhbnZh
cyBpbiBhIHdvcmtlci4iKTsKKworICBpZiAoIXdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAg
ICB0ZXN0UGFzc2VkKCJObyBPZmZzY3JlZW5DYW52YXMgc3VwcG9ydCIpOworICAgIGZpbmlzaFRl
c3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcignY29u
dGV4dC1sb3N0LXJlc3RvcmVkLXdvcmtlci5qcycpOworICB3b3JrZXIucG9zdE1lc3NhZ2UoIlN0
YXJ0IHdvcmtlciIpOworICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgIGlm
IChlLmRhdGEgPT0gIlRlc3QgcGFzc2VkIikgeworICAgICAgdGVzdFBhc3NlZCgiQWxsIHRlc3Rz
IGhhdmUgcGFzc2VkIik7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlNvbWUgdGVz
dCBmYWlsZWQiKTsKKyAgICB9CisgICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtbG9zdC1yZXN0b3Jl
ZC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvY29udGV4dC1sb3N0LXJlc3RvcmVkLXdvcmtl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NmY1OWRjZTdlYzkxMTdmOTk0MmVkYzNkMDYyYzg2MTA2MGI5NjZi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtbG9zdC1yZXN0b3Jl
ZC13b3JrZXIuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCitpbXBvcnRTY3JpcHRzKCIuLi8uLi9qcy90ZXN0cy9jYW52YXMtdGVz
dHMtdXRpbHMuanMiKTsKK3NlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgIGlmICgh
c2V0dXBUZXN0KCkpCisgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlRlc3QgZmFpbGVkIik7CisK
KyAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgaWYgKCF0ZXN0TG9zdENvbnRleHQoZSkpCisgICAgICAgICAgICBzZWxm
LnBvc3RNZXNzYWdlKCJUZXN0IGZhaWxlZCIpOworICAgICAgICAvLyByZXN0b3JlIHRoZSBjb250
ZXh0IGFmdGVyIHRoaXMgZXZlbnQgaGFzIGV4aXRlZC4KKyAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBjYWxsIHByZXZlbnQgZGVmYXVsdCBz
byB3ZSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVzdG9yZSB0aGUgY29udGV4dAorICAgICAgICAg
ICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTiwgIldFQkdMX2xvc2Vf
Y29udGV4dC5yZXN0b3JlQ29udGV4dCgpIikpCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVz
c2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICAgICAgICAgIHRlc3RMb3NpbmdBbmRSZXN0b3JpbmdD
b250ZXh0KCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNz
YWdlKCJUZXN0IHBhc3NlZCIpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigi
d2ViZ2xjb250ZXh0cmVzdG9yZWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5wb3N0TWVz
c2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICB9KTsKKyAgICBhbGxvd1Jlc3RvcmUgPSBmYWxzZTsK
KyAgICBjb250ZXh0TG9zdEV2ZW50RmlyZWQgPSBmYWxzZTsKKyAgICBjb250ZXh0UmVzdG9yZWRF
dmVudEZpcmVkID0gZmFsc2U7CisKKyAgICBpZiAoIXRlc3RPcmlnaW5hbENvbnRleHQoKSkKKyAg
ICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICBXRUJHTF9sb3NlX2Nv
bnRleHQubG9zZUNvbnRleHQoKTsKKyAgICAvLyBUaGUgY29udGV4dCBzaG91bGQgYmUgbG9zdCBp
bW1lZGlhdGVseS4KKyAgICBpZiAoIWdsLmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgc2VsZi5w
b3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5D
T05URVhUX0xPU1RfV0VCR0wpCisgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlRlc3QgZmFpbGVk
Iik7CisgICAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpCisgICAgICAgIHNlbGYu
cG9zdE1lc3NhZ2UoIlRlc3QgZmFpbGVkIik7CisgICAgLy8gZ2wgbWV0aG9kcyBzaG91bGQgYmUg
bm8tb3BzCisgICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJsZW5kRnVu
YyhnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQKSIpKQorICAgICAgICBzZWxmLnBv
c3RNZXNzYWdlKCJUZXN0IGZhaWxlZCIpOworICAgIC8vIGJ1dCB0aGUgZXZlbnQgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gZmlyZWQuCisgICAgaWYgKGNvbnRleHRMb3N0RXZlbnRGaXJlZCkKKyAgICAg
ICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQiKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zm
c2NyZWVuY2FudmFzL2NvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFz
L2NvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZTE4NzgxNzliMjliYWNk
OGQ2OGQ2YTRiNDVjMjUwY2QyMzE4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52
YXMvY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
dGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGluaXQoKQoreworICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBiZWhhdmlvciB1bmRlciBhIHJl
c3RvcmVkIGNvbnRleHQgZm9yIE9mZnNjcmVlbkNhbnZhcy4iKTsKKworICAgIGlmICghd2luZG93
Lk9mZnNjcmVlbkNhbnZhcykgeworICAgICAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFz
IHN1cHBvcnQiKTsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIXNldHVwVGVzdCgpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNhbm5vdCBpbml0
aWFsaXplIHRlc3QiKTsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCBm
dW5jdGlvbihlKSB7CisgICAgICAgIGlmICghdGVzdExvc3RDb250ZXh0KGUpKSB7CisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJTb21lIHRlc3QgZmFpbGVkIik7CisgICAgICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gcmVzdG9y
ZSB0aGUgY29udGV4dCBhZnRlciB0aGlzIGV2ZW50IGhhcyBleGl0ZWQuCisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgY2FsbCBwcmV2ZW50
IGRlZmF1bHQgc28gd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQK
KyAgICAgICAgICAgIGlmICghY29tcGFyZUdMRXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJX
RUJHTF9sb3NlX2NvbnRleHQucmVzdG9yZUNvbnRleHQoKSIpKSB7CisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiU29tZSB0ZXN0IGZhaWxlZCIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0ZXN0TG9zaW5nQW5kUmVzdG9yaW5nQ29udGV4dCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiVGVzdCBwYXNzZWQiKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU29tZSB0ZXN0IGZhaWxlZCIp
OworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9KTsKKyAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICBjYW52YXMuYWRk
RXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiU29tZSB0ZXN0IGZhaWxlZCIpOworICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9KTsKKyAgICBhbGxvd1Jlc3RvcmUgPSBmYWxzZTsKKyAg
ICBjb250ZXh0TG9zdEV2ZW50RmlyZWQgPSBmYWxzZTsKKyAgICBjb250ZXh0UmVzdG9yZWRFdmVu
dEZpcmVkID0gZmFsc2U7CisKKyAgICBpZiAoIXRlc3RPcmlnaW5hbENvbnRleHQoKSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJTb21lIHRlc3QgZmFpbGVkIik7CisgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXRUJHTF9sb3NlX2NvbnRleHQubG9zZUNv
bnRleHQoKTsKKyAgICAvLyBUaGUgY29udGV4dCBzaG91bGQgYmUgbG9zdCBpbW1lZGlhdGVseS4K
KyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIpOworICAgIHNob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgLy8gZ2wgbWV0aG9kcyBzaG91bGQg
YmUgbm8tb3BzCisgICAgc2hvdWxkQmVUcnVlKGNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAi
Z2wuYmxlbmRGdW5jKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ1VCRV9NQVApIikpOworICAg
IC8vIGJ1dCB0aGUgZXZlbnQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZmlyZWQuCisgICAgc2hvdWxk
QmVGYWxzZSgiY29udGV4dExvc3RFdmVudEZpcmVkIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
ZmZzY3JlZW5jYW52YXMvY29udGV4dC1sb3N0LXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFz
L2NvbnRleHQtbG9zdC13b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDg0NjcxMmRlMGM1MDFkMGM3
ZjBhYmQyZDNlN2M3OTc4YjI0YzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFz
L2NvbnRleHQtbG9zdC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBpbml0KCkK
K3sKKyAgZGVzY3JpcHRpb24oIlRlc3RzIGJlaGF2aW9yIHVuZGVyIGEgbG9zdCBjb250ZXh0IGZv
ciBPZmZzY3JlZW5DYW52YXMgaW4gYSB3b3JrZXIiKTsKKworICBpZiAoIXdpbmRvdy5PZmZzY3Jl
ZW5DYW52YXMpIHsKKyAgICB0ZXN0UGFzc2VkKCJObyBPZmZzY3JlZW5DYW52YXMgc3VwcG9ydCIp
OworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgd29ya2VyID0g
bmV3IFdvcmtlcignY29udGV4dC1sb3N0LXdvcmtlci5qcycpOworICB3b3JrZXIucG9zdE1lc3Nh
Z2UoIlN0YXJ0IHdvcmtlciIpOworICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewor
ICAgIGlmIChlLmRhdGEgPT0gIlRlc3QgcGFzc2VkIikgeworICAgICAgdGVzdFBhc3NlZCgiQWxs
IHRlc3RzIGhhdmUgcGFzc2VkIik7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlNv
bWUgdGVzdHMgZmFpbGVkIik7CisgICAgfQorICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47
CisgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWxvc3Qt
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtbG9zdC13b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzVjZDRiMDA0NTgwMDRjMjBkY2YxMmIzNTZhZDgxMTY2M2RkZTU0MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWxvc3Qtd29ya2VyLmpzCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworaW1w
b3J0U2NyaXB0cygiLi4vLi4vanMvdGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpzIik7CitzZWxm
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICBjYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2Fu
dmFzKDEwLCAxMCk7CisgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnKTsKKworICAg
IC8vIGNhbGwgdGVzdFZhbGlkQ29udGV4dCgpIGJlZm9yZSBjaGVja2luZyBmb3IgdGhlIGV4dGVu
c2lvbiwgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIHdlIGNoZWNrCisgICAgLy8gZm9yIHRoZSBpc0Nv
bnRleHRMb3N0KCkgbWV0aG9kLCB3aGljaCB3ZSB3YW50IHRvIGRvIHJlZ2FyZGxlc3Mgb2YgdGhl
IGV4dGVuc2lvbidzIHByZXNlbmNlLgorICAgIGlmICghdGVzdFZhbGlkQ29udGV4dCgpKQorICAg
ICAgICBzZWxmLnBvc3RNZXNzYWdlKCJUZXN0IGZhaWxlZCIpOworCisgICAgZXh0ZW5zaW9uID0g
Z2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKKyAgICAvLyBuZWVkIGFuIGV4
dGVuc2lvbiB0aGF0IGV4cG9zZXMgbmV3IEFQSSBtZXRob2RzLgorICAgIE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwor
ICAgIGlmIChleHRlbnNpb24gPT0gbnVsbCB8fCBPRVNfdmVydGV4X2FycmF5X29iamVjdCA9PSBu
dWxsKQorICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJUZXN0IGZhaWxlZCIpOworCisgICAgLy8g
V2UgbmVlZCB0byBpbml0aWFsaXplIHx1bmlmb3JtTG9jYXRpb258IGJlZm9yZSBsb3NpbmcgY29u
dGV4dC4KKyAgICAvLyBPdGhlcndpc2UgZ2wuZ2V0VW5pZm9ybSgpIHdoZW4gY29udGV4dCBpcyBs
b3N0IHdpbGwgdGhyb3cuCisgICAgdW5pZm9ybUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ0ZXgiKTsKKyAgICBleHRlbnNpb24ubG9zZUNvbnRleHQoKTsKKworICAg
IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IiwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGlmICh0ZXN0TG9zdENvbnRleHRXaXRob3V0UmVzdG9yZSgpKQorICAgICAgICAg
ICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBwYXNzZWQiKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQiKTsKKyAgICB9LCBmYWxzZSk7Cit9
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWxvc3QuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNj
cmVlbmNhbnZhcy9jb250ZXh0LWxvc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTY4YWQyMjllZTMyMzE3
ODk4ODlhMjg2OGRiNDRhYWUwMWFiZWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2Fu
dmFzL2NvbnRleHQtbG9zdC5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2Nh
bnZhcy10ZXN0cy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gaW5pdCgp
Cit7CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIGJlaGF2aW9yIHVuZGVyIGEgbG9zdCBjb250ZXh0
IGZvciBPZmZzY3JlZW5DYW52YXMiKTsKKworICAgIGlmICghd2luZG93Lk9mZnNjcmVlbkNhbnZh
cykgeworICAgICAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYW52YXMgPSBu
ZXcgT2Zmc2NyZWVuQ2FudmFzKDEwLCAxMCk7CisgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgn
d2ViZ2wnKTsKKworICAgIC8vIGNhbGwgdGVzdFZhbGlkQ29udGV4dCgpIGJlZm9yZSBjaGVja2lu
ZyBmb3IgdGhlIGV4dGVuc2lvbiwgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIHdlIGNoZWNrCisgICAg
Ly8gZm9yIHRoZSBpc0NvbnRleHRMb3N0KCkgbWV0aG9kLCB3aGljaCB3ZSB3YW50IHRvIGRvIHJl
Z2FyZGxlc3Mgb2YgdGhlIGV4dGVuc2lvbidzIHByZXNlbmNlLgorICAgIGlmICghdGVzdFZhbGlk
Q29udGV4dCgpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNvbWUgdGVzdHMgZmFpbGVkIik7Cisg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV4dGVu
c2lvbiA9IGdsLmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0Iik7CisgICAgLy8gbmVl
ZCBhbiBleHRlbnNpb24gdGhhdCBleHBvc2VzIG5ldyBBUEkgbWV0aG9kcy4KKyAgICBPRVNfdmVy
dGV4X2FycmF5X29iamVjdCA9IGdsLmdldEV4dGVuc2lvbigiT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICBpZiAoZXh0ZW5zaW9uID09IG51bGwgfHwgT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QgPT0gbnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJTb21lIHRlc3RzIGZhaWxlZCIpOwor
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBX
ZSBuZWVkIHRvIGluaXRpYWxpemUgfHVuaWZvcm1Mb2NhdGlvbnwgYmVmb3JlIGxvc2luZyBjb250
ZXh0LgorICAgIC8vIE90aGVyd2lzZSBnbC5nZXRVbmlmb3JtKCkgd2hlbiBjb250ZXh0IGlzIGxv
c3Qgd2lsbCB0aHJvdy4KKyAgICB1bmlmb3JtTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInRleCIpOworICAgIGV4dGVuc2lvbi5sb3NlQ29udGV4dCgpOworCisgICAg
Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgaWYgKHRlc3RMb3N0Q29udGV4dFdpdGhvdXRSZXN0b3JlKCkpIHsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQiKTsKKyAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlNvbWUgdGVzdHMgZmFpbGVkIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvbWV0aG9kcy13b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29m
ZnNjcmVlbmNhbnZhcy9tZXRob2RzLXdvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyOTQ3NGM5YjQ1
YmJkOWI3MTI4Yzc4YjY2Y2UwNmZhMzM5NzAyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3Jl
ZW5jYW52YXMvbWV0aG9kcy13b3JrZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgTWV0aG9kcyBU
ZXN0IGZvciBPZmZzY3JlZW5DYW52YXMgaW4gYSB3b3JrZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBXZWJH
TCBjb250ZXh0IGNyZWF0ZWQgZm9yIGFuIE9mZnNjcmVlbkNhbnZhcyBoYXMgYWxsIHRoZSBtZXRo
b2RzIGluIHRoZSBzcGVjaWZpY2F0aW9uLiIpOworCitpZiAoIXdpbmRvdy5PZmZzY3JlZW5DYW52
YXMpIHsKKyAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAgZmlu
aXNoVGVzdCgpOworfSBlbHNlIHsKKyAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoIm1ldGhvZHMt
d29ya2VyLmpzIik7CisgIHdvcmtlci5wb3N0TWVzc2FnZSgiU3RhcnQgd29ya2VyIik7CisgIHdv
cmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgaWYgKGUuZGF0YSA9PSAiVGVzdCBw
YXNzZWQiKSB7CisgICAgICB0ZXN0UGFzc2VkKCJBbGwgdGVzdHMgaGF2ZSBwYXNzZWQiKTsKKyAg
ICB9IGVsc2UgeworICAgICAgdGVzdEZhaWxlZCgiU29tZSB0ZXN0cyBmYWlsZWQiKTsKKyAgICB9
CisgICAgZmluaXNoVGVzdCgpOworICB9Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL21ldGhvZHMtd29ya2VyLmpzIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2Ny
ZWVuY2FudmFzL21ldGhvZHMtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NGNhYzdmYzY5NGY0NzVh
M2MzYThjNjllOTY3NGYwMjc5YTU3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52
YXMvbWV0aG9kcy13b3JrZXIuanMKQEAgLTAsMCArMSwxMyBAQAorLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCitpbXBvcnRTY3JpcHRzKCIuLi8uLi9qcy90ZXN0cy9j
YW52YXMtdGVzdHMtdXRpbHMuanMiKTsKK3NlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewor
ICAgIGlmICh0ZXN0QVBJcygnd2ViZ2wnKSkKKyAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlRlc3Qg
cGFzc2VkIik7CisgICAgZWxzZQorICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiVGVzdCBmYWlsZWQi
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNjcmVlbmNhbnZhcy9tZXRob2RzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3Jl
ZW5jYW52YXMvbWV0aG9kcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMjllNzZjZmM2ZjcyNDIzNmRhMjQw
ODgyNTVmMGNlMjdhNjk2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvbWV0
aG9kcy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBNZXRob2RzIFRlc3QgZm9yIE9mZnNjcmVlbkNh
bnZhczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9jYW52YXMtdGVzdHMtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgV2ViR0wgY29udGV4dCBjcmVhdGVkIGZvciBhbiBP
ZmZzY3JlZW5DYW52YXMgaGFzIGFsbCB0aGUgbWV0aG9kcyBpbiB0aGUgc3BlY2lmaWNhdGlvbi4i
KTsKKworaWYgKCF3aW5kb3cuT2Zmc2NyZWVuQ2FudmFzKSB7CisgIHRlc3RQYXNzZWQoIk5vIE9m
ZnNjcmVlbkNhbnZhcyBzdXBwb3J0Iik7Cit9IGVsc2UgeworICBpZiAodGVzdEFQSXMoJ3dlYmds
JykpIHsKKyAgICB0ZXN0UGFzc2VkKCJBbGwgV2ViR0wgbWV0aG9kcyBmb3VuZCIpOworICB9IGVs
c2UgeworICAgIHRlc3RGYWlsZWQoIlNvbWUgV2ViR0wgbWV0aG9kcyBub3QgZm91bmQiKTsKKyAg
fQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvb2Zmc2NyZWVuY2FudmFzLXJlc2l6ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZhcy1yZXNpemUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMTEwN2JiYTUzYzZhOGQ3ZThiZTlkZWNlYmE5NGRkZDc3NjczYWMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZhcy1yZXNpemUuaHRtbApAQCAt
MCwwICsxLDkzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+UmVzaXppbmcgVGVzdCBmb3IgT2Zmc2NyZWVuQ2FudmFzIGNvbW1pdCgpPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NhbnZhcy10ZXN0cy11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBPZmZzY3JlZW5DYW52YXMgY29udGV4dCBy
ZXR1cm5zIHRoZSBjb3JyZWN0IGltYWdlIHNpemUgYWZ0ZXIgcmVzaXppbmcgYW5kIGNhbGxpbmcg
Y29tbWl0KCkuIik7CisKK2Z1bmN0aW9uIHRlc3RSZXNpemVPbk5ld09mZnNjcmVlbkNhbnZhcygp
IHsKKyAgdmFyIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMoMTAsIDIwKTsKKyAgY2FudmFz
LmdldENvbnRleHQoIndlYmdsIik7CisgIGNhbnZhcy53aWR0aCA9IDMwOworICBjYW52YXMuaGVp
Z2h0ID0gNDA7CisgIGFzc2VydFdpZHRoQW5kSGVpZ2h0KGNhbnZhcywgImNhbnZhcyIsIDMwLCA0
MCk7CisgIHZhciBpbWFnZWJpdG1hcCA9IGNhbnZhcy50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsK
KyAgYXNzZXJ0V2lkdGhBbmRIZWlnaHQoaW1hZ2ViaXRtYXAsICJpbWFnZWJpdG1hcCIsIDMwLCA0
MCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNpemVPblRyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
KCkgeworICB2YXIgcGxhY2Vob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMi
KTsKKyAgdmFyIG9mZnNjcmVlbmNhbnZhcyA9IHRyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFzQ3Jl
YXRpb24ocGxhY2Vob2xkZXIsIDEwLCAyMCk7CisgIHZhciBjdHggPSBvZmZzY3JlZW5jYW52YXMu
Z2V0Q29udGV4dCgid2ViZ2wiKTsKKworICAvLyBWZXJpZnkgdGhhdCBzZXR0aW5nIHRoZSBzaXpl
IG9mIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIHBsYWNlaG9sZGVyIHdvcmtzLgorICBv
ZmZzY3JlZW5jYW52YXMud2lkdGggPSAzMDsKKyAgb2Zmc2NyZWVuY2FudmFzLmhlaWdodCA9IDQw
OworICBhc3NlcnRXaWR0aEFuZEhlaWdodChvZmZzY3JlZW5jYW52YXMsICJyZXNpemVkIG9mZnNj
cmVlbmNhbnZhcyIsIDMwLCA0MCk7CisgIHZhciBpbWFnZWJpdG1hcCA9IG9mZnNjcmVlbmNhbnZh
cy50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKKyAgYXNzZXJ0V2lkdGhBbmRIZWlnaHQoaW1hZ2Vi
aXRtYXAsICJpbWFnZWJpdG1hcCB0cmFuc2ZlcnJlZCBmcm9tIHJlc2l6ZWQgb2Zmc2NyZWVuY2Fu
dmFzIiAsIDMwLCA0MCk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgc2V0dGluZyB0aGUgc2l6ZSBvZiBh
biBPZmZzY3JlZW5DYW52YXMgZG9lcyBub3QgZGlyZWN0bHkgdXBkYXRlIHRoZSBzaXplIG9mIGl0
cyBwbGFjZWhvbGRlciBjYW52YXMuCisgIGFzc2VydFdpZHRoQW5kSGVpZ2h0KHBsYWNlaG9sZGVy
LCAicGxhY2Vob2xkZXIgY2FudmFzIiwgMTAsIDIwKTsKKworICB2YXIgYXN5bmNTdGVwc0NvbXBs
ZXRlZCA9IDA7CisgIGN0eC5jb21taXQoKTsKKyAgY3JlYXRlSW1hZ2VCaXRtYXAocGxhY2Vob2xk
ZXIpLnRoZW4oaW1hZ2UgPT4geworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBwbGFjZWhvbGRlciB3
YXMgbm90IHVwZGF0ZWQgc3luY2hyb25vdXNseS4KKyAgICBhc3NlcnRXaWR0aEFuZEhlaWdodChp
bWFnZSwgImltYWdlYml0bWFwIGZyb20gcGxhY2Vob2xkZXIgY2FudmFzIiwgMTAsIDIwKTsKKyAg
ICBhc3luY1N0ZXBzQ29tcGxldGVkKys7CisgICAgaWYgKGFzeW5jU3RlcHNDb21wbGV0ZWQgPT0g
MikgeworICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKyAgfSk7CisKKyAgLy8gU2V0IHRpbWVv
dXQgYWN0cyBhcyBhIHN5bmMgYmFycmllciB0byBhbGxvdyBjb21taXQgdG8gcHJvcGFnYXRlCisg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgLy8gVmVyaWZ5IHRoYXQgY29tbWl0KCkgYXN5
bmNocm9ub3VzbHkgdXBkYXRlcyB0aGUgc2l6ZSBvZiBpdHMgcGxhY2Vob2xkZXIgY2FudmFzLgor
ICAgIGFzc2VydFdpZHRoQW5kSGVpZ2h0KHBsYWNlaG9sZGVyLCAicGxhY2Vob2xkZXIgY2FudmFz
IiwgMzAsIDQwKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVz
IGFyZSBub3Qgc2V0dGFibGUKKyAgICBzaG91bGRUaHJvdygicGxhY2Vob2xkZXIud2lkdGggPSA1
MCIpOworICAgIHNob3VsZFRocm93KCJwbGFjZWhvbGRlci5oZWlnaHQgPSA2MCIpOworCisgICAg
YXNzZXJ0V2lkdGhBbmRIZWlnaHQocGxhY2Vob2xkZXIsICJwbGFjZWhvbGRlciBjYW52YXMgYWZ0
ZXIgc2l6ZSByZXNldCIsIDMwLCA0MCk7CisKKyAgICBjcmVhdGVJbWFnZUJpdG1hcChwbGFjZWhv
bGRlcikudGhlbihpbWFnZSA9PiB7CisgICAgICAvLyBWZXJpZnkgdGhhdCBhbiBpbWFnZSBncmFi
YmVkIGZyb20gdGhlIHBsYWNlaG9sZGVyIGhhcyB0aGUgY29ycmVjdCBkaW1lbnNpb25zCisgICAg
ICBhc3NlcnRXaWR0aEFuZEhlaWdodChpbWFnZSwgImltYWdlYml0bWFwIGZyb20gcGxhY2Vob2xk
ZXIgY2FudmFzIiwgMzAsIDQwKTsKKyAgICAgIGFzeW5jU3RlcHNDb21wbGV0ZWQrKzsKKyAgICAg
IGlmIChhc3luY1N0ZXBzQ29tcGxldGVkID09IDIpIHsKKyAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgfQorICAgIH0pOworICB9LCAwKTsKK30KKworaWYgKCF3aW5kb3cuT2Zmc2NyZWVuQ2Fu
dmFzKSB7CisgIHRlc3RQYXNzZWQoIk5vIE9mZnNjcmVlbkNhbnZhcyBzdXBwb3J0Iik7CisgIGZp
bmlzaFRlc3QoKTsKK30gZWxzZSBpZiAoIW5ldyBPZmZzY3JlZW5DYW52YXMoMTAsIDIwKS5nZXRD
b250ZXh0KCJ3ZWJnbCIpLmNvbW1pdCkgeworICB0ZXN0UGFzc2VkKCJjb21taXQoKSBub3Qgc3Vw
cG9ydGVkIik7CisgIGZpbmlzaFRlc3QoKTsKK30gZWxzZSB7CisgIHRlc3RSZXNpemVPbk5ld09m
ZnNjcmVlbkNhbnZhcygpOworICB0ZXN0UmVzaXplT25UcmFuc2ZlcnJlZE9mZnNjcmVlbkNhbnZh
cygpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3Jl
ZW5jYW52YXMvb2Zmc2NyZWVuY2FudmFzLXRpbWVyLXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52
YXMvb2Zmc2NyZWVuY2FudmFzLXRpbWVyLXF1ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzMmYxNGMx
OTI3YWJkNDQyYzUwOTNkOTI0MjRlNzc3NjBjODM0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29mZnNj
cmVlbmNhbnZhcy9vZmZzY3JlZW5jYW52YXMtdGltZXItcXVlcnkuaHRtbApAQCAtMCwwICsxLDg0
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
VGVzdCBmb3IgVGltZXIgUXVlcnkgb2JqZWN0cyB3aXRoIE9mZnNjcmVlbkNhbnZhczwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8c2NyaXB0IGlkPSdteVdvcmtlcicgdHlwZT0ndGV4dC93
b3JrZXInPgorICBmdW5jdGlvbiB0aWNrKGNhbGxiYWNrKSB7CisgICAgICBmdW5jdGlvbiB0aWNr
SW1wbCgpIHsKKyAgICAgICAgICBjb25zdCByZXMgPSBjYWxsYmFjaygpOworICAgICAgICAgIGlm
IChyZXMpIHsKKyAgICAgICAgICAgICAgaWYgKHJlcXVlc3RBbmltYXRpb25GcmFtZSkgeworICAg
ICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2tJbXBsKTsKKyAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGlja0ltcGwsIDEw
KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdGlja0lt
cGwoKTsKKyAgfQorCisgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgICAgbGV0
IGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMoMTI4LCAxMjgpOworICAgICAgbGV0IGdsID0g
Y2FudmFzLmdldENvbnRleHQoIndlYmdsIik7CisgICAgICBsZXQgZXh0ID0gZ2wuZ2V0RXh0ZW5z
aW9uKCJFWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKTsKKyAgICAgIGlmICghZXh0KSB7CisgICAg
ICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiUEFTU0VEIC0gbm8gRVhUX2Rpc2pvaW50X3RpbWVyX3F1
ZXJ5IGV4dGVuc2lvbiAtIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICB9CisgICAgICBsZXQgcXVlcnkgPSBleHQuY3JlYXRlUXVlcnlFWFQoKTsKKyAgICAg
IGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7CisgICAgICBl
eHQuZW5kUXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQpOworICAgICAgZ2wuY2xlYXJDb2xv
cigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCk7CisgICAgICB0aWNrKGZ1bmN0aW9uKCkgeworICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV4
dC5nZXRRdWVyeU9iamVjdEVYVChxdWVyeSwgZXh0LlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhU
KTsKKyAgICAgICAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3Nh
Z2UoIlBBU1NFRCAtIHRpbWVyIHF1ZXJ5IG9iamVjdCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9u
IHdvcmtlciIpOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgY29uc3QgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICAgICAgICAg
ICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJG
QUlMRUQgLSBHTCBlcnJvciAiICsgZXJyKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgIH0pOworICB9OworICA8L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICAidXNlIHN0cmlj
dCI7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGltZXIgcXVlcnkg
b2JqZWN0cyB3b3JrIHdpdGggdGhlIFdlYkdMIDEuMCBjb250ZXh0IGNyZWF0ZWQgdmlhIE9mZnNj
cmVlbkNhbnZhcy4iKTsKKyAgICBpZiAoIXdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbXlXb3JrZXInKS50ZXh0Q29udGVudF0pOworICAgICAgdmFy
IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7CisgICAgICB3
b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAgICAgaWYgKG1zZy5kYXRh
LnN0YXJ0c1dpdGgoIlBBU1NFRCIpKSB7CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnLmRh
dGEpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnLmRh
dGEpOworICAgICAgICAgIH0KKyAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAg
ICB3b3JrZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IFdvcmtlciIpOworICAgIH0KKyAgPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZmZzY3JlZW5jYW52YXMvb2Zmc2NyZWVu
Y2FudmFzLXRyYW5zZmVyLWltYWdlLWJpdG1hcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zmc2NyZWVuY2FudmFzL29mZnNj
cmVlbmNhbnZhcy10cmFuc2Zlci1pbWFnZS1iaXRtYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGIzNTky
MTZiMWYzMWZhMjE2ZDQzYTBiZDg0NWZjODBiZmNhMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2Zm
c2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZhcy10cmFuc2Zlci1pbWFnZS1iaXRtYXAuaHRtbApA
QCAtMCwwICsxLDUwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+VGVzdCBmb3IgT2Zmc2NyZWVuQ2FudmFzIFRyYW5zZmVyVG9JbWFnZUJpdG1h
cDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb2Zm
c2NyZWVuY2FudmFzLXRyYW5zZmVyLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgPHNjcmlwdCBpZD0nbXlXb3JrZXInIHR5cGU9J3RleHQvd29ya2VyJz4K
KyAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICB2YXIgY2FudmFzID0gbmV3
IE9mZnNjcmVlbkNhbnZhcygxMjgsIDEyOCk7CisgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29u
dGV4dCgid2ViZ2wiKTsKKyAgICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAxLjAsIDAuMCwgMS4wKTsK
KyAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgdmFyIGltYWdlID0g
Y2FudmFzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOworCisgICAgICBzZWxmLnBvc3RNZXNzYWdl
KHsgYml0bWFwOiBpbWFnZSB9LAorICAgICAgICAgICAgICAgICAgICAgICBbIGltYWdlIF0pOwor
ICB9OworICA8L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICAidXNlIHN0cmljdCI7CisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIHRyYW5zZmVyVG9JbWFnZUJpdG1h
cCBmdW5jdGlvbiBvZiBPZmZzY3JlZW5DYW52YXMgd2ViZ2wgY29udGV4dCBpcyBmdW5jdGlvbmFs
LiIpOworICAgIGlmICghd2luZG93Lk9mZnNjcmVlbkNhbnZhcykgeworICAgICAgICB0ZXN0UGFz
c2VkKCJObyBPZmZzY3JlZW5DYW52YXMgc3VwcG9ydCIpOworICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdteVdvcmtlcicpLnRleHRDb250ZW50XSk7CisgICAgICB2YXIgd29ya2VyID0g
bmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpKTsKKworICAgICAgd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKG1zZykgeworICAgICAgICAgIHRlc3RUcmFuc2ZlclRvSW1hZ2VC
aXRtYXAoIndlYmdsIiwgbXNnLmRhdGEuYml0bWFwKTsKKyAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICB9CisgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IFdvcmtlciIpOworICAg
IH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
YnMvYWJzXzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfMDAxX3RvXzAwNi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2NTc4ZmYzZGU1MmE3YzU0MzBiMjY3M2Y2OTJmMDcxMjZiMmYzZTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzXzAwMV90b18wMDYuaHRtbApAQCAtMCww
ICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGFic18wMDFfdG9fMDA2Lmh0bWw8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29n
bGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0
OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVu
R0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFic19mbG9hdF9mcmFnX3h2YXJ5
X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYWJzX2Zsb2F0X2ZyYWdfeHZhcnkuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhYnNfZmxvYXRfZnJhZ194dmFyeS50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFic192ZWMyX2ZyYWdf
eHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhYnNfdmVjMl9mcmFnX3h2YXJ5
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWJzX3ZlYzJfZnJhZ194dmFyeS50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFic192ZWMzX2Zy
YWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhYnNfdmVjM19mcmFnX3h2
YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWJzX3ZlYzNfZnJhZ194dmFyeS50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImFic19m
bG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhYnNfZmxv
YXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFic19mbG9hdF92ZXJ0
X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiYWJzX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAi
Z3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
YWJzX3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFic192ZWMy
X3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJhYnNfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJhYnNfdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWJz
X3ZlYzNfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfZmxvYXRfZnJhZ194dmFy
eS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjNhZWU5NTYxY2JiMGNjMjMwZTE0MzAxYmJmMDAxZWU0ZjA0MTNiNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Ficy9hYnNfZmxvYXRfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEs
MTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAgKiAoY29sb3Iu
ciAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChhYnMoYyksIDAuMCwgMC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYwNGQwZTg2YjAxNzc3NWEzODE2ZmQwODMyZDc3YmM2YTIxZmQ3NTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hYnMvYWJzX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDIuMCAqIChjb2xv
ci5yIC0gMC41KTsKKwlpZihjIDwgMC4wKSBjICo9IC0xLjA7CisKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KGMsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19m
bG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX2Zsb2F0X3ZlcnRfeHZhcnku
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40OGQ1MWVkMDVhMzMyMmY4NzQzMjdlNjU1YTMxNDdhMzFkYjg5ODM2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF92ZXJ0X3h2YXJ5LnZl
cnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAg
KiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9yID0gdmVjNChhYnMoYyksIDAuMCwgMC4wLCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF92ZXJ0X3h2YXJ5
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic19mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxZDE1NDM0MDAwZGFjYWU1YmYzNGM3MTVlN2JmMDY2OTRjZjMyMmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQK
QEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAgKiAo
Z3RmX0NvbG9yLnIgLSAwLjUpOworCWlmKGMgPCAwLjApIGMgKj0gLTEuMDsKKworCWNvbG9yID0g
dmVjNChjLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9h
YnNfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzJfZnJhZ194dmFy
eS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNjYjU5NGMwZTUyZTlkMzZiMmYwMzYwNTNjZjliOWUyMWVkMTAz
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzJfZnJhZ194dmFyeS5m
cmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9
IDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChhYnMoYyksIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVjMl9mcmFnX3h2YXJ5
X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic192ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjBiYmM1ZWM5YmJmODY0NmYxNGUxMGIxZWEyMjIzYzI5NTk4MWNkZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCkBA
IC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDIuMCAq
IChjb2xvci5yZyAtIDAuNSk7CisJaWYoKGNbMF0gPCAwLjApKSBjWzBdICo9IC0xLjA7CisJaWYo
KGNbMV0gPCAwLjApKSBjWzFdICo9IC0xLjA7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVjMl92ZXJ0X3h2YXJ5
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk4NDUzODEwMzgxNGQwMGRjNTg3ZmQ4ZTcwYTc5NWMzNDQxZTJmNDIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzJfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0g
MC41KTsKKwljb2xvciA9IHZlYzQoYWJzKGMpLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fi
cy9hYnNfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYjNiYTBiM2VlODNh
OWVmZGVmNWYxZDQxMzNkNmRkNDdhMDAxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
YnMvYWJzX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMiBjID0gMi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJaWYo
KGNbMF0gPCAwLjApKSBjWzBdICo9IC0xLjA7CisJaWYoKGNbMV0gPCAwLjApKSBjWzFdICo9IC0x
LjA7CisKKwljb2xvciA9IHZlYzQoYywgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYWJzL2Fic192ZWMzX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVj
M19mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAxNGM2MDQ1YzM5NzlmNjdkMmIyZTkzN2M5
MzNhMTExMDUzNzM3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVjM19m
cmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMyBjID0gMi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChhYnMoYyksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzNfZnJh
Z194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9hYnNfdmVjM19mcmFnX3h2YXJ5X3JlZi5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhNTg3YWNjYjg4ODYzY2YwMzU3ZjA1YjM5YzJmN2JmOWM0ZWMxZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzNfZnJhZ194dmFyeV9yZWYu
ZnJhZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMg
PSAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwlpZigoY1swXSA8IDAuMCkpIGNbMF0gKj0gLTEu
MDsKKwlpZigoY1sxXSA8IDAuMCkpIGNbMV0gKj0gLTEuMDsKKwlpZigoY1syXSA8IDAuMCkpIGNb
Ml0gKj0gLTEuMDsKKworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvYWJzL2Fic192ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fi
cy9hYnNfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2NGQ0ZWZkYWJjOTliOTU0
ZjE3YzY3YjY5ZDM1NzNkNmY2N2ZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ficy9h
YnNfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzMgYyA9IDIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZl
YzQoYWJzKGMpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic192ZWMz
X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvYWJzX3ZlYzNfdmVydF94dmFyeV9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYjVlYjgxODYzOGE5YjQ1NTU4YmVmOTNiNjYzZGMyMmE5MWJm
OWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2Fic192ZWMzX3ZlcnRfeHZhcnlf
cmVmLnZlcnQKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9
IDIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsKKwlpZigoY1swXSA8IDAuMCkpIGNbMF0gKj0g
LTEuMDsKKwlpZigoY1sxXSA8IDAuMCkpIGNbMV0gKj0gLTEuMDsKKwlpZigoY1syXSA8IDAuMCkp
IGNbMl0gKj0gLTEuMDsKKworCWNvbG9yID0gdmVjNChjLCAxLjApOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvYWJzL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hYnMvaW5wdXQucnVuLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYmY1ZGM5MWYxOTg3OWI3Mzc4MmJiNzY3YmEyM2NjZGVkODZhZDJjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWJzL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwy
IEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCithYnNfMDAx
X3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfMDAxX3RvXzAwNi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmFl
MzIxMmVhZjJkZjQyMTE2ODg4N2RmZDRiZmJlYjY3N2FkZmFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvYWNvcy9hY29zXzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVE
SVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNv
bmZvcm1hbmNlIHRlc3Q6IGFjb3NfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
IiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
b2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1
MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVy
LnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJhY29zX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJhY29zX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJhY29zX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhY29zX3ZlYzJfZnJhZ194dmFyeV9yZWYu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFjb3NfdmVjMl9mcmFnX3h2YXJ5LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAiYWNvc192ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhY29zX3ZlYzNfZnJhZ194dmFy
eV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFjb3NfdmVjM19mcmFnX3h2YXJ5LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWNvc192ZWMzX2ZyYWdfeHZhcnkudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhY29zX2Zsb2F0
X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImFjb3NfZmxvYXRf
dmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFjb3NfZmxvYXRfdmVydF94
dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
ImFjb3NfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJn
cmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJh
Y29zX3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFjb3NfdmVj
Ml92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiYWNvc192ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImFjb3NfdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
YWNvc192ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfZmxvYXRfZnJh
Z194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYjY1NzM3MDcyNmVlNWNjMzdlMGU5OTQ0ZTg0MmMwYmNmYzkyNDM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZwpA
QCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBN
X1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjID0gMi4wICogKGNvbG9yLnIg
LSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYWNvcyhjKSAvIE1fUEksIDAuMCwgMC4wLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX2Zsb2F0X2ZyYWdfeHZhcnlf
cmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYmUxNmU0NTNiNDlmZmU2NGUzMWFjOGMyYTZiNmFkMjYwMTAxM2RmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZy
YWcKQEAgLTAsMCArMSw5NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworLyogVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgZGlyZWN0IGNvcGllcyBvZiBl
YWNoIG90aGVyOgorICoKKyAqICAgR0wvYWNvcy9hY29zX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZy
YWcKKyAqICAgR0wvYXNpbi9hc2luX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKKyAqCisgKiBD
YXJlIHNob3VsZCBiZSB0YWtlbiB0byBhcHBseSBhbnkgY2hhbmdlcyB0byBib3RoLiAgT25seSB0
aGUgbGFzdAorICogbGluZSB3aGVyZSBnbF9GcmFnQ29sb3IgaXMgYXNzaWduZWQgc2hvdWxkIGJl
IGRpZmZlcmVudC4KKyAqLworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2Zsb2F0IGxlcnAoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgcykKK3sKKwlyZXR1cm4gYSArIChiIC0gYSkgKiBzOworfQorCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJZmxvYXQgYXNpblZhbHVlc1sxN107CisJYXNpblZhbHVlc1swXSA9IC0x
LjU3MDg7CisJYXNpblZhbHVlc1sxXSA9IC0xLjA2NTQ0OworCWFzaW5WYWx1ZXNbMl0gPSAtMC44
NDgwNjI7CisJYXNpblZhbHVlc1szXSA9IC0wLjY3NTEzMjsKKwlhc2luVmFsdWVzWzRdID0gLTAu
NTIzNTk5OworCWFzaW5WYWx1ZXNbNV0gPSAtMC4zODQzOTc7CisJYXNpblZhbHVlc1s2XSA9IC0w
LjI1MjY4OworCWFzaW5WYWx1ZXNbN10gPSAtMC4xMjUzMjg7CisJYXNpblZhbHVlc1s4XSA9IDAu
MDsKKwlhc2luVmFsdWVzWzldID0gMC4xMjUzMjg7CisJYXNpblZhbHVlc1sxMF0gPSAwLjI1MjY4
OworCWFzaW5WYWx1ZXNbMTFdID0gMC4zODQzOTc7CisJYXNpblZhbHVlc1sxMl0gPSAwLjUyMzU5
OTsKKwlhc2luVmFsdWVzWzEzXSA9IDAuNjc1MTMyOworCWFzaW5WYWx1ZXNbMTRdID0gMC44NDgw
NjI7CisJYXNpblZhbHVlc1sxNV0gPSAxLjA2NTQ0OworCWFzaW5WYWx1ZXNbMTZdID0gMS41NzA4
OworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQg
YyA9IDIuMCAqIChjb2xvci5yIC0gMC41KTsKKworCWZsb2F0IGFyclZhbCA9IChjICsgMS4wKSAq
IDguMDsKKwlpbnQgYXJyMCA9IGludChmbG9vcihhcnJWYWwpKTsKKwlmbG9hdCB3ZWlnaHQgPSBh
cnJWYWwgLSBmbG9vcihhcnJWYWwpOworCWZsb2F0IGFzaW5fYyA9IDAuMDsKKworCWlmIChhcnIw
ID09IDApCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1swXSwgYXNpblZhbHVlc1sxXSwgd2Vp
Z2h0KTsKKwllbHNlIGlmIChhcnIwID09IDEpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1sx
XSwgYXNpblZhbHVlc1syXSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDIpCisJCWFzaW5f
YyA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0KTsKKwllbHNlIGlm
IChhcnIwID09IDMpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1szXSwgYXNpblZhbHVlc1s0
XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDQpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZh
bHVlc1s0XSwgYXNpblZhbHVlc1s1XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDUpCisJ
CWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZhbHVlc1s2XSwgd2VpZ2h0KTsKKwll
bHNlIGlmIChhcnIwID09IDYpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s2XSwgYXNpblZh
bHVlc1s3XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDcpCisJCWFzaW5fYyA9IGxlcnAo
YXNpblZhbHVlc1s3XSwgYXNpblZhbHVlc1s4XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09
IDgpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s4XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0
KTsKKwllbHNlIGlmIChhcnIwID09IDkpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s5XSwg
YXNpblZhbHVlc1sxMF0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxMCkKKwkJYXNpbl9j
ID0gbGVycChhc2luVmFsdWVzWzEwXSwgYXNpblZhbHVlc1sxMV0sIHdlaWdodCk7CisJZWxzZSBp
ZiAoYXJyMCA9PSAxMSkKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVl
c1sxMl0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxMikKKwkJYXNpbl9jID0gbGVycChh
c2luVmFsdWVzWzEyXSwgYXNpblZhbHVlc1sxM10sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9
PSAxMykKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVzWzEzXSwgYXNpblZhbHVlc1sxNF0sIHdl
aWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxNCkKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVz
WzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxNSkKKwkJ
YXNpbl9jID0gbGVycChhc2luVmFsdWVzWzE1XSwgYXNpblZhbHVlc1sxNl0sIHdlaWdodCk7CisJ
ZWxzZSBpZiAoYXJyMCA9PSAxNikKKwkJYXNpbl9jID0gYXNpblZhbHVlc1sxNl07CisKKwkvLyBh
Y29zKHgpID0gUEkvMiAtIGFzaW4oeCkKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuNSAtIGFzaW5f
YyAvIE1fUEksIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9h
Y29zX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc19mbG9hdF92ZXJ0
X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTczOTFjMjA2YTQ4MzUzMjhlYTQ5ZDFjNWM2Y2JlY2Y5
OGI0Y2RmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc19mbG9hdF92ZXJ0
X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0
IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSAyLjAgKiAo
Z3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9yID0gdmVjNChhY29zKGMpIC8gTV9QSSwgMC4wLCAw
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfZmxvYXRfdmVy
dF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc19mbG9hdF92ZXJ0X3h2YXJ5X3Jl
Zi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExODYxODUzOWYzNDYzZGQyZTNhNDljMWIzNTYwYzM4Y2JmOTAx
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfZmxvYXRfdmVydF94dmFy
eV9yZWYudmVydApAQCAtMCwwICsxLDQxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3Qg
ZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIChn
dGZfQ29sb3IuciAtIDAuNSk7CisKKwlmbG9hdCBhY29zX2MgPSAwLjA7CisJZmxvYXQgc2NhbGUg
PSAxLjA7CisJZmxvYXQgc2lnbiA9IDEuMDsKKworCS8vIHBvdyBjYW4ndCBoYW5kbGUgbmVnYXRp
dmUgbnVtYmVycyBzbyB0YWtlIGFkdmFudGFnZSBvZiBzeW1tZXRyeQorCWlmKGMgPCAwLjApCisJ
eworCQlzaWduID0gLTEuMDsKKwkJYyAqPSAtMS4wOworCX0KKworCS8vIFRheWxvcnMgc2VyaWVz
IGV4cGFuc2lvbiBmb3IgYWNvcworCS8vIDEwMDAvMiBpdGVyYXRpb25zIG5lY2Vzc2FyeSB0byBn
ZXQgdGhlIGFjY3VyYWN5IHdpdGggdGhpcyBtZXRob2QKKwlmb3IoaW50IGkgPSAxOyBpIDwgMTAw
MDsgaSArPSAyKQorCXsKKwkJYWNvc19jICs9IHNjYWxlICogcG93KGMsIGZsb2F0KGkpKSAvIGZs
b2F0KGkpOworCQlzY2FsZSAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAxKTsKKwl9CisJYWNvc19j
ID0gTV9QSSAvIDIuMCAtIHNpZ24gKiBhY29zX2M7CisKKwljb2xvciA9IHZlYzQoYWNvc19jIC8g
TV9QSSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fj
b3NfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjMl9mcmFnX3h2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAzNDM1Y2M2MDZiMDRkNzRiNGVlZGU3Y2QxZjgzNjZlNjg2
ZGZhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc192ZWMyX2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAyLjAgKiAo
Y29sb3IucmcgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYWNvcyhjKSAvIE1fUEksIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc192ZWMyX2ZyYWdfeHZh
cnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3M2YxYTAxYTM5MjI5YWE5OTliYmU5ZTllZWY0NTY2NzExODdkMmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjMl9mcmFnX3h2YXJ5X3JlZi5m
cmFnCkBAIC0wLDAgKzEsMTMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisvKiBUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBkaXJlY3QgY29waWVzIG9m
IGVhY2ggb3RoZXI6CisgKgorICogICBHTC9hY29zL2Fjb3NfdmVjMl9mcmFnX3h2YXJ5X3JlZi5m
cmFnCisgKiAgIEdML2FzaW4vYXNpbl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKKyAqCisgKiBD
YXJlIHNob3VsZCBiZSB0YWtlbiB0byBhcHBseSBhbnkgY2hhbmdlcyB0byBib3RoLiAgT25seSB0
aGUgbGFzdAorICogbGluZSB3aGVyZSBnbF9GcmFnQ29sb3IgaXMgYXNzaWduZWQgc2hvdWxkIGJl
IGRpZmZlcmVudC4KKyAqLworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2Zsb2F0IGxlcnAoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgcykKK3sKKwlyZXR1cm4gYSArIChiIC0gYSkgKiBzOworfQorCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJZmxvYXQgYXNpblZhbHVlc1sxN107CisJYXNpblZhbHVlc1swXSA9IC0x
LjU3MDg7CisJYXNpblZhbHVlc1sxXSA9IC0xLjA2NTQ0OworCWFzaW5WYWx1ZXNbMl0gPSAtMC44
NDgwNjI7CisJYXNpblZhbHVlc1szXSA9IC0wLjY3NTEzMjsKKwlhc2luVmFsdWVzWzRdID0gLTAu
NTIzNTk5OworCWFzaW5WYWx1ZXNbNV0gPSAtMC4zODQzOTc7CisJYXNpblZhbHVlc1s2XSA9IC0w
LjI1MjY4OworCWFzaW5WYWx1ZXNbN10gPSAtMC4xMjUzMjg7CisJYXNpblZhbHVlc1s4XSA9IDAu
MDsKKwlhc2luVmFsdWVzWzldID0gMC4xMjUzMjg7CisJYXNpblZhbHVlc1sxMF0gPSAwLjI1MjY4
OworCWFzaW5WYWx1ZXNbMTFdID0gMC4zODQzOTc7CisJYXNpblZhbHVlc1sxMl0gPSAwLjUyMzU5
OTsKKwlhc2luVmFsdWVzWzEzXSA9IDAuNjc1MTMyOworCWFzaW5WYWx1ZXNbMTRdID0gMC44NDgw
NjI7CisJYXNpblZhbHVlc1sxNV0gPSAxLjA2NTQ0OworCWFzaW5WYWx1ZXNbMTZdID0gMS41NzA4
OworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMiBj
ID0gMi4wICogKGNvbG9yLnJnIC0gMC41KTsKKworCXZlYzIgYXJyVmFsID0gKGMgKyB2ZWMyKDEu
MCwgMS4wKSkgKiA4LjA7CisJaW50IGFycjB4ID0gaW50KGZsb29yKGFyclZhbC54KSk7CisJaW50
IGFycjB5ID0gaW50KGZsb29yKGFyclZhbC55KSk7CisJdmVjMiB3ZWlnaHQgPSBhcnJWYWwgLSBm
bG9vcihhcnJWYWwpOworCXZlYzIgYXNpbl9jID0gdmVjMigwLjApOworCisJaWYgKGFycjB4ID09
IDApCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzBdLCBhc2luVmFsdWVzWzFdLCB3ZWln
aHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMSkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1
ZXNbMV0sIGFzaW5WYWx1ZXNbMl0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAyKQor
CQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0Lngp
OworCWVsc2UgaWYgKGFycjB4ID09IDMpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzNd
LCBhc2luVmFsdWVzWzRdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gNCkKKwkJYXNp
bl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbNF0sIGFzaW5WYWx1ZXNbNV0sIHdlaWdodC54KTsKKwll
bHNlIGlmIChhcnIweCA9PSA1KQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNp
blZhbHVlc1s2XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDYpCisJCWFzaW5fYy54
ID0gbGVycChhc2luVmFsdWVzWzZdLCBhc2luVmFsdWVzWzddLCB3ZWlnaHQueCk7CisJZWxzZSBp
ZiAoYXJyMHggPT0gNykKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbN10sIGFzaW5WYWx1
ZXNbOF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA4KQorCQlhc2luX2MueCA9IGxl
cnAoYXNpblZhbHVlc1s4XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFy
cjB4ID09IDkpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzldLCBhc2luVmFsdWVzWzEw
XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDEwKQorCQlhc2luX2MueCA9IGxlcnAo
YXNpblZhbHVlc1sxMF0sIGFzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJy
MHggPT0gMTEpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVlc1sx
Ml0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMikKKwkJYXNpbl9jLnggPSBsZXJw
KGFzaW5WYWx1ZXNbMTJdLCBhc2luVmFsdWVzWzEzXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFy
cjB4ID09IDEzKQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sxM10sIGFzaW5WYWx1ZXNb
MTRdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTQpCisJCWFzaW5fYy54ID0gbGVy
cChhc2luVmFsdWVzWzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChh
cnIweCA9PSAxNSkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbMTVdLCBhc2luVmFsdWVz
WzE2XSwgd2VpZ2h0LngpOworICAgICAgICBlbHNlIGlmIChhcnIweCA9PSAxNikKKyAgICAgICAg
ICAgICAgICBhc2luX2MueCA9IGFzaW5WYWx1ZXNbMTZdOworCisJaWYgKGFycjB5ID09IDApCisJ
CWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzBdLCBhc2luVmFsdWVzWzFdLCB3ZWlnaHQueSk7
CisJZWxzZSBpZiAoYXJyMHkgPT0gMSkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMV0s
IGFzaW5WYWx1ZXNbMl0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAyKQorCQlhc2lu
X2MueSA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0LnkpOworCWVs
c2UgaWYgKGFycjB5ID09IDMpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzNdLCBhc2lu
VmFsdWVzWzRdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNCkKKwkJYXNpbl9jLnkg
PSBsZXJwKGFzaW5WYWx1ZXNbNF0sIGFzaW5WYWx1ZXNbNV0sIHdlaWdodC55KTsKKwllbHNlIGlm
IChhcnIweSA9PSA1KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZhbHVl
c1s2XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDYpCisJCWFzaW5fYy55ID0gbGVy
cChhc2luVmFsdWVzWzZdLCBhc2luVmFsdWVzWzddLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJy
MHkgPT0gNykKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbN10sIGFzaW5WYWx1ZXNbOF0s
IHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA4KQorCQlhc2luX2MueSA9IGxlcnAoYXNp
blZhbHVlc1s4XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09
IDkpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzldLCBhc2luVmFsdWVzWzEwXSwgd2Vp
Z2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEwKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZh
bHVlc1sxMF0sIGFzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0g
MTEpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVlc1sxMl0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxMikKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5W
YWx1ZXNbMTJdLCBhc2luVmFsdWVzWzEzXSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09
IDEzKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sxM10sIGFzaW5WYWx1ZXNbMTRdLCB3
ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTQpCisJCWFzaW5fYy55ID0gbGVycChhc2lu
VmFsdWVzWzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9
PSAxNSkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMTVdLCBhc2luVmFsdWVzWzE2XSwg
d2VpZ2h0LnkpOworICAgICAgICBlbHNlIGlmIChhcnIweSA9PSAxNikKKyAgICAgICAgICAgICAg
ICBhc2luX2MueSA9IGFzaW5WYWx1ZXNbMTZdOworCisJLy8gYWNvcyh4KSA9IFBJLzIgLSBhc2lu
KHgpCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjUgLSBhc2luX2MgLyBNX1BJLCAwLjAsIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ5
NjIyNWZjOGJjYzRmMDgwOGVhMDAwMzI0MzRjMGFlMzdjYzFmNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Fjb3MvYWNvc192ZWMyX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIwIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5
NzkzMjM4NDY7CisJdmVjMiBjID0gMi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJY29sb3Ig
PSB2ZWM0KGFjb3MoYykgLyBNX1BJLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9hY29zL2Fjb3NfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9h
Y29zX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWZhMGJlMzkyZWNiMzlm
MDA3N2I4MDg3ZjYwOTNhMzQ5NWMwMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNv
cy9hY29zX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDU2IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7
CisJdmVjMiBjID0gMi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJdmVjMiBhY29zX2MgPSB2
ZWMyKDAuMCk7CisJdmVjMiBzY2FsZSA9IHZlYzIoMS4wKTsKKwl2ZWMyIHNpZ24gPSB2ZWMyKDEu
MCk7CisKKwkvLyBwb3cgY2FuJ3QgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgc28gdGFrZSBhZHZh
bnRhZ2Ugb2Ygc3ltbWV0cnkKKwlpZihjLnIgPCAwLjApCisJeworCQlzaWduLnIgPSAtMS4wOwor
CQljLnIgKj0gLTEuMDsKKwl9CisKKwkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGFj
b3MKKwkvLyAxMDAwLzIgaXRlcmF0aW9ucyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBhY2N1cmFjeSB3
aXRoIHRoaXMgbWV0aG9kCisJZm9yKGludCBpID0gMTsgaSA8IDEwMDA7IGkgKz0gMikKKwl7CisJ
CWFjb3NfYy5yICs9IHNjYWxlLnIgKiBwb3coYy5yLCBmbG9hdChpKSkgLyBmbG9hdChpKTsKKwkJ
c2NhbGUuciAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAxKTsKKwl9CisJYWNvc19jLnIgPSBNX1BJ
IC8gMi4wIC0gc2lnbi5yICogYWNvc19jLnI7CisKKwkvLyBwb3cgY2FuJ3QgaGFuZGxlIG5lZ2F0
aXZlIG51bWJlcnMgc28gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3ltbWV0cnkKKwlpZihjLmcgPCAwLjAp
CisJeworCQlzaWduLmcgPSAtMS4wOworCQljLmcgKj0gLTEuMDsKKwl9CisKKwkvLyBUYXlsb3Jz
IHNlcmllcyBleHBhbnNpb24gZm9yIGFjb3MKKwkvLyAxMDAwLzIgaXRlcmF0aW9ucyBuZWNlc3Nh
cnkgdG8gZ2V0IHRoZSBhY2N1cmFjeSB3aXRoIHRoaXMgbWV0aG9kCisJZm9yKGludCBpID0gMTsg
aSA8IDEwMDA7IGkgKz0gMikKKwl7CisJCWFjb3NfYy5nICs9IHNjYWxlLmcgKiBwb3coYy5nLCBm
bG9hdChpKSkgLyBmbG9hdChpKTsKKwkJc2NhbGUuZyAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAx
KTsKKwl9CisJYWNvc19jLmcgPSBNX1BJIC8gMi4wIC0gc2lnbi5nICogYWNvc19jLmc7CisKKwlj
b2xvciA9IHZlYzQoYWNvc19jIC8gTV9QSSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvYWNvcy9hY29zX3ZlYzNfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9h
Y29zX3ZlYzNfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOWYwYTVjN2FjMmFlMjI5ZWIz
ZjViNDc1ZDBhNzQwMGQ2OGJiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fj
b3NfdmVjM19mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJ
dmVjMyBjID0gMi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChh
Y29zKGMpIC8gTV9QSSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvYWNvc192
ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjM19mcmFnX3h2
YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMWIzOTBmNzJhN2IxNGIyN2M1OGI0ODMzZDc3MjE5
Y2RkYzMxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVjM19mcmFn
X3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTY2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisvKiBUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBkaXJl
Y3QgY29waWVzIG9mIGVhY2ggb3RoZXI6CisgKgorICogICBHTC9hY29zL2Fjb3NfdmVjM19mcmFn
X3h2YXJ5X3JlZi5mcmFnCisgKiAgIEdML2FzaW4vYXNpbl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZy
YWcKKyAqCisgKiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBhcHBseSBhbnkgY2hhbmdlcyB0byBi
b3RoLiAgT25seSB0aGUgbGFzdAorICogbGluZSB3aGVyZSBnbF9GcmFnQ29sb3IgaXMgYXNzaWdu
ZWQgc2hvdWxkIGJlIGRpZmZlcmVudC4KKyAqLworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2Zsb2F0IGxlcnAo
ZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcykKK3sKKwlyZXR1cm4gYSArIChiIC0gYSkgKiBzOwor
fQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYXNpblZhbHVlc1sxN107CisJYXNpblZh
bHVlc1swXSA9IC0xLjU3MDg7CisJYXNpblZhbHVlc1sxXSA9IC0xLjA2NTQ0OworCWFzaW5WYWx1
ZXNbMl0gPSAtMC44NDgwNjI7CisJYXNpblZhbHVlc1szXSA9IC0wLjY3NTEzMjsKKwlhc2luVmFs
dWVzWzRdID0gLTAuNTIzNTk5OworCWFzaW5WYWx1ZXNbNV0gPSAtMC4zODQzOTc7CisJYXNpblZh
bHVlc1s2XSA9IC0wLjI1MjY4OworCWFzaW5WYWx1ZXNbN10gPSAtMC4xMjUzMjg7CisJYXNpblZh
bHVlc1s4XSA9IDAuMDsKKwlhc2luVmFsdWVzWzldID0gMC4xMjUzMjg7CisJYXNpblZhbHVlc1sx
MF0gPSAwLjI1MjY4OworCWFzaW5WYWx1ZXNbMTFdID0gMC4zODQzOTc7CisJYXNpblZhbHVlc1sx
Ml0gPSAwLjUyMzU5OTsKKwlhc2luVmFsdWVzWzEzXSA9IDAuNjc1MTMyOworCWFzaW5WYWx1ZXNb
MTRdID0gMC44NDgwNjI7CisJYXNpblZhbHVlc1sxNV0gPSAxLjA2NTQ0OworCWFzaW5WYWx1ZXNb
MTZdID0gMS41NzA4OworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4
NDY7CisJdmVjMyBjID0gMi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisKKwl2ZWMzIGFyclZhbCA9
IChjICsgdmVjMygxLjAsIDEuMCwgMS4wKSkgKiA4LjA7CisJaW50IGFycjB4ID0gaW50KGZsb29y
KGFyclZhbC54KSk7CisJaW50IGFycjB5ID0gaW50KGZsb29yKGFyclZhbC55KSk7CisJaW50IGFy
cjB6ID0gaW50KGZsb29yKGFyclZhbC56KSk7CisJdmVjMyB3ZWlnaHQgPSBhcnJWYWwgLSBmbG9v
cihhcnJWYWwpOworCXZlYzMgYXNpbl9jID0gdmVjMygwLjApOworCisJaWYgKGFycjB4ID09IDAp
CisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzBdLCBhc2luVmFsdWVzWzFdLCB3ZWlnaHQu
eCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMSkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNb
MV0sIGFzaW5WYWx1ZXNbMl0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAyKQorCQlh
c2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0LngpOwor
CWVsc2UgaWYgKGFycjB4ID09IDMpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzNdLCBh
c2luVmFsdWVzWzRdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gNCkKKwkJYXNpbl9j
LnggPSBsZXJwKGFzaW5WYWx1ZXNbNF0sIGFzaW5WYWx1ZXNbNV0sIHdlaWdodC54KTsKKwllbHNl
IGlmIChhcnIweCA9PSA1KQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZh
bHVlc1s2XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDYpCisJCWFzaW5fYy54ID0g
bGVycChhc2luVmFsdWVzWzZdLCBhc2luVmFsdWVzWzddLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAo
YXJyMHggPT0gNykKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbN10sIGFzaW5WYWx1ZXNb
OF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA4KQorCQlhc2luX2MueCA9IGxlcnAo
YXNpblZhbHVlc1s4XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4
ID09IDkpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzldLCBhc2luVmFsdWVzWzEwXSwg
d2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDEwKQorCQlhc2luX2MueCA9IGxlcnAoYXNp
blZhbHVlc1sxMF0sIGFzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHgg
PT0gMTEpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVlc1sxMl0s
IHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMikKKwkJYXNpbl9jLnggPSBsZXJwKGFz
aW5WYWx1ZXNbMTJdLCBhc2luVmFsdWVzWzEzXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4
ID09IDEzKQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sxM10sIGFzaW5WYWx1ZXNbMTRd
LCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTQpCisJCWFzaW5fYy54ID0gbGVycChh
c2luVmFsdWVzWzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIw
eCA9PSAxNSkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbMTVdLCBhc2luVmFsdWVzWzE2
XSwgd2VpZ2h0LngpOworICAgICAgICBlbHNlIGlmIChhcnIweCA9PSAxNikKKyAgICAgICAgICAg
ICAgICBhc2luX2MueCA9IGFzaW5WYWx1ZXNbMTZdOworCisJaWYgKGFycjB5ID09IDApCisJCWFz
aW5fYy55ID0gbGVycChhc2luVmFsdWVzWzBdLCBhc2luVmFsdWVzWzFdLCB3ZWlnaHQueSk7CisJ
ZWxzZSBpZiAoYXJyMHkgPT0gMSkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMV0sIGFz
aW5WYWx1ZXNbMl0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAyKQorCQlhc2luX2Mu
eSA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0LnkpOworCWVsc2Ug
aWYgKGFycjB5ID09IDMpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzNdLCBhc2luVmFs
dWVzWzRdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNCkKKwkJYXNpbl9jLnkgPSBs
ZXJwKGFzaW5WYWx1ZXNbNF0sIGFzaW5WYWx1ZXNbNV0sIHdlaWdodC55KTsKKwllbHNlIGlmIChh
cnIweSA9PSA1KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZhbHVlc1s2
XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDYpCisJCWFzaW5fYy55ID0gbGVycChh
c2luVmFsdWVzWzZdLCBhc2luVmFsdWVzWzddLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkg
PT0gNykKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbN10sIGFzaW5WYWx1ZXNbOF0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA4KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZh
bHVlc1s4XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDkp
CisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzldLCBhc2luVmFsdWVzWzEwXSwgd2VpZ2h0
LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEwKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVl
c1sxMF0sIGFzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTEp
CisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVlc1sxMl0sIHdlaWdo
dC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxMikKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1
ZXNbMTJdLCBhc2luVmFsdWVzWzEzXSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEz
KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sxM10sIGFzaW5WYWx1ZXNbMTRdLCB3ZWln
aHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTQpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFs
dWVzWzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAx
NSkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMTVdLCBhc2luVmFsdWVzWzE2XSwgd2Vp
Z2h0LnkpOworICAgICAgICBlbHNlIGlmIChhcnIweSA9PSAxNikKKyAgICAgICAgICAgICAgICBh
c2luX2MueSA9IGFzaW5WYWx1ZXNbMTZdOworCisJaWYgKGFycjB6ID09IDApCisJCWFzaW5fYy56
ID0gbGVycChhc2luVmFsdWVzWzBdLCBhc2luVmFsdWVzWzFdLCB3ZWlnaHQueik7CisJZWxzZSBp
ZiAoYXJyMHogPT0gMSkKKwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbMV0sIGFzaW5WYWx1
ZXNbMl0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSAyKQorCQlhc2luX2MueiA9IGxl
cnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFy
cjB6ID09IDMpCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFsdWVzWzNdLCBhc2luVmFsdWVzWzRd
LCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gNCkKKwkJYXNpbl9jLnogPSBsZXJwKGFz
aW5WYWx1ZXNbNF0sIGFzaW5WYWx1ZXNbNV0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9
PSA1KQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZhbHVlc1s2XSwgd2Vp
Z2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDYpCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFs
dWVzWzZdLCBhc2luVmFsdWVzWzddLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gNykK
KwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbN10sIGFzaW5WYWx1ZXNbOF0sIHdlaWdodC56
KTsKKwllbHNlIGlmIChhcnIweiA9PSA4KQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1s4
XSwgYXNpblZhbHVlc1s5XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDkpCisJCWFz
aW5fYy56ID0gbGVycChhc2luVmFsdWVzWzldLCBhc2luVmFsdWVzWzEwXSwgd2VpZ2h0LnopOwor
CWVsc2UgaWYgKGFycjB6ID09IDEwKQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1sxMF0s
IGFzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gMTEpCisJCWFz
aW5fYy56ID0gbGVycChhc2luVmFsdWVzWzExXSwgYXNpblZhbHVlc1sxMl0sIHdlaWdodC56KTsK
KwllbHNlIGlmIChhcnIweiA9PSAxMikKKwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbMTJd
LCBhc2luVmFsdWVzWzEzXSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDEzKQorCQlh
c2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1sxM10sIGFzaW5WYWx1ZXNbMTRdLCB3ZWlnaHQueik7
CisJZWxzZSBpZiAoYXJyMHogPT0gMTQpCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFsdWVzWzE0
XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSAxNSkKKwkJ
YXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbMTVdLCBhc2luVmFsdWVzWzE2XSwgd2VpZ2h0Lnop
OworICAgICAgICBlbHNlIGlmIChhcnIweiA9PSAxNikKKyAgICAgICAgICAgICAgICBhc2luX2Mu
eiA9IGFzaW5WYWx1ZXNbMTZdOworCisJLy8gYWNvcyh4KSA9IFBJLzIgLSBhc2luKHgpCisJZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLjUgLSBhc2luX2MgLyBNX1BJLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvYWNvcy9hY29zX3ZlYzNfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNv
cy9hY29zX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMzdjYTJjMmRjZDg0NTAz
MjcxODE1NGQxMzkzNWQ5OWUwZmUzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29z
L2Fjb3NfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZl
YzMgYyA9IDIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZlYzQoYWNvcyhj
KSAvIE1fUEksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2Fjb3NfdmVj
M192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX3ZlYzNfdmVydF94dmFy
eV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2FjZTBmMDRmOTJhMTQwOGEyMDhlNjRhZDdjOGZhYjRh
ODI3MDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWNvcy9hY29zX3ZlYzNfdmVydF94
dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDcyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29u
c3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMyBjID0gMi4wICog
KGd0Zl9Db2xvci5yZ2IgLSAwLjUpOworCXZlYzMgYWNvc19jID0gdmVjMygwLjApOworCXZlYzMg
c2NhbGUgPSB2ZWMzKDEuMCk7CisJdmVjMyBzaWduID0gdmVjMygxLjApOworCisJLy8gcG93IGNh
bid0IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzIHNvIHRha2UgYWR2YW50YWdlIG9mIHN5bW1ldHJ5
CisJaWYoYy5yIDwgMC4wKQorCXsKKwkJc2lnbi5yID0gLTEuMDsKKwkJYy5yICo9IC0xLjA7CisJ
fQorCisJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhY29zCisJLy8gMTAwMC8yIGl0
ZXJhdGlvbnMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgYWNjdXJhY3kgd2l0aCB0aGlzIG1ldGhvZAor
CWZvcihpbnQgaSA9IDE7IGkgPCAxMDAwOyBpICs9IDIpCisJeworCQlhY29zX2MuciArPSBzY2Fs
ZS5yICogcG93KGMuciwgZmxvYXQoaSkpIC8gZmxvYXQoaSk7CisJCXNjYWxlLnIgKj0gZmxvYXQo
aSkgLyBmbG9hdChpICsgMSk7CisJfQorCWFjb3NfYy5yID0gTV9QSSAvIDIuMCAtIHNpZ24uciAq
IGFjb3NfYy5yOworCisJLy8gcG93IGNhbid0IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzIHNvIHRh
a2UgYWR2YW50YWdlIG9mIHN5bW1ldHJ5CisJaWYoYy5nIDwgMC4wKQorCXsKKwkJc2lnbi5nID0g
LTEuMDsKKwkJYy5nICo9IC0xLjA7CisJfQorCisJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9u
IGZvciBhY29zCisJLy8gMTAwMC8yIGl0ZXJhdGlvbnMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgYWNj
dXJhY3kgd2l0aCB0aGlzIG1ldGhvZAorCWZvcihpbnQgaSA9IDE7IGkgPCAxMDAwOyBpICs9IDIp
CisJeworCQlhY29zX2MuZyArPSBzY2FsZS5nICogcG93KGMuZywgZmxvYXQoaSkpIC8gZmxvYXQo
aSk7CisJCXNjYWxlLmcgKj0gZmxvYXQoaSkgLyBmbG9hdChpICsgMSk7CisJfQorCWFjb3NfYy5n
ID0gTV9QSSAvIDIuMCAtIHNpZ24uZyAqIGFjb3NfYy5nOworCisJLy8gcG93IGNhbid0IGhhbmRs
ZSBuZWdhdGl2ZSBudW1iZXJzIHNvIHRha2UgYWR2YW50YWdlIG9mIHN5bW1ldHJ5CisJaWYoYy5i
IDwgMC4wKQorCXsKKwkJc2lnbi5iID0gLTEuMDsKKwkJYy5iICo9IC0xLjA7CisJfQorCisJLy8g
VGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhY29zCisJLy8gMTAwMC8yIGl0ZXJhdGlvbnMg
bmVjZXNzYXJ5IHRvIGdldCB0aGUgYWNjdXJhY3kgd2l0aCB0aGlzIG1ldGhvZAorCWZvcihpbnQg
aSA9IDE7IGkgPCAxMDAwOyBpICs9IDIpCisJeworCQlhY29zX2MuYiArPSBzY2FsZS5iICogcG93
KGMuYiwgZmxvYXQoaSkpIC8gZmxvYXQoaSk7CisJCXNjYWxlLmIgKj0gZmxvYXQoaSkgLyBmbG9h
dChpICsgMSk7CisJfQorCWFjb3NfYy5iID0gTV9QSSAvIDIuMCAtIHNpZ24uYiAqIGFjb3NfYy5i
OworCisJY29sb3IgPSB2ZWM0KGFjb3NfYyAvIE1fUEksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hY29zL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hY29zL2lucHV0LnJ1bi50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmM3ZWVkYWEwOGJjYjM2ZWZlN2JlMjg4MzRjODc1MDFhYjlhYjliYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fjb3MvaW5wdXQucnVuLnR4dApAQCAtMCwwICsx
LDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2Fjb3Nf
MDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsXzAwMV90b18wMDQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2FsbC9hbGxfMDAxX3RvXzAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMjhk
MDU2MjA4YzhhOThjMjI2OTMyZTQ1Mzg2NzkwZTlmNjM0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9hbGwvYWxsXzAwMV90b18wMDQuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4g
LS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9y
bWFuY2UgdGVzdDogYWxsXzAwMV90b18wMDQuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVz
LXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBo
ZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4o
eworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiYWxsX2J2ZWMyX2ZyYWdfcmVmLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJhbGxfYnZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFs
bF9idmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiYWxsX2J2ZWMyX3ZlcnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
ImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
ImFsbF9idmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWxsX2J2ZWMyX3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhbGxf
YnZlYzNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFsbF9idmVjM19mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYWxsX2J2ZWMzX2ZyYWcudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhbGxfYnZlYzNfdmVy
dF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYWxsX2J2ZWMzX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJhbGxfYnZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fs
bC9hbGxfYnZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWxsL2FsbF9idmVjMl9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDNmZTg2YTE2NTg4ZGZiOTFiNWRjMTE5ZTI1ZTRmMzJhZTgyYTU5MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9hbGxfYnZlYzJfZnJhZy5mcmFnCkBAIC0wLDAg
KzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDQuMCAq
IGNvbG9yLnJnKTsgICAvLyAzLzQgdHJ1ZSwgMS80IGZhbHNlCisJZ2xfRnJhZ0NvbG9yID0gdmVj
NCh2ZWMzKGFsbChidmVjMihjKSkpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWxs
L2FsbF9idmVjMl9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWxsL2FsbF9idmVjMl9mcmFnX3Jl
Zi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5ZmYyN2JiYjdlZDRjN2ZlOTE5ZjMxZWFhNmRiZmI2NmVlN2Ey
MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMyX2ZyYWdfcmVmLmZy
YWcKQEAgLTAsMCArMSwyOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitib29sIF9hbGwoaW4gYnZlYzIgYSkKK3sKKwlib29s
IHRlbXAgPSB0cnVlOworCisJaWYoIWFbMF0pIHRlbXAgPSBmYWxzZTsKKwlpZighYVsxXSkgdGVt
cCA9IGZhbHNlOworCisJcmV0dXJuIHRlbXA7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMyIGMgPSBmbG9vcig0LjAgKiBjb2xvci5yZyk7ICAgLy8gMy80IHRydWUsIDEvNCBmYWxzZQor
CWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMyhfYWxsKGJ2ZWMyKGMpKSksIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9h
bGxfYnZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMmUwMzc4Mzg2YjM0Nzc3ZGVjY2VkYjcz
NWQyOGI4MTUwNTQxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMy
X3ZlcnQudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBj
ID0gZmxvb3IoNC4wICogZ3RmX0NvbG9yLnJnKTsgICAvLyAzLzQgdHJ1ZSwgMS80IGZhbHNlCisJ
Y29sb3IgPSB2ZWM0KHZlYzMoYWxsKGJ2ZWMyKGMpKSksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMyX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxs
X2J2ZWMyX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFmZDZhMWEzYTE4YmJiYjJhNWI3ZDAz
OGZmNDJjNDA0NTEyZTkyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9hbGxfYnZl
YzJfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0
cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitib29sIF9hbGwoaW4gYnZlYzIgYSkK
K3sKKwlib29sIHRlbXAgPSB0cnVlOworCisJaWYoIWFbMF0pIHRlbXAgPSBmYWxzZTsKKwlpZigh
YVsxXSkgdGVtcCA9IGZhbHNlOworCisJcmV0dXJuIHRlbXA7Cit9CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcig0LjAgKiBndGZfQ29sb3IucmcpOyAgIC8vIDMvNCB0cnVl
LCAxLzQgZmFsc2UKKwljb2xvciA9IHZlYzQodmVjMyhfYWxsKGJ2ZWMyKGMpKSksIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMzX2ZyYWcuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2FsbC9hbGxfYnZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZjZhMDI4MmZjNGM5YjI5
NGQyZTExNTJjOGJiZmNhZjZkZjRiYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwv
YWxsX2J2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcig0LjAgKiBjb2xvci5yZ2IpOyAgIC8vIDMvNCB0cnVlLCAx
LzQgZmFsc2UKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoYWxsKGJ2ZWMzKGMpKSksIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMzX2ZyYWdfcmVmLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9hbGwvYWxsX2J2ZWMzX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNiNjM4MTg2
ZDNkMjljMzcxZWU1MmUzNzcyNWMyNzY5NWY4NjcwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2FsbC9hbGxfYnZlYzNfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDI5IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2Jv
b2wgX2FsbChpbiBidmVjMyBhKQoreworCWJvb2wgdGVtcCA9IHRydWU7CisKKwlpZighYVswXSkg
dGVtcCA9IGZhbHNlOworCWlmKCFhWzFdKSB0ZW1wID0gZmFsc2U7CisJaWYoIWFbMl0pIHRlbXAg
PSBmYWxzZTsKKworCXJldHVybiB0ZW1wOworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MyBjID0gZmxvb3IoNC4wICogY29sb3IucmdiKTsgICAvLyAzLzQgdHJ1ZSwgMS80IGZhbHNlCisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKF9hbGwoYnZlYzMoYykpKSwgMS4wKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2FsbC9hbGxfYnZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYWxsL2Fs
bF9idmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZjZThjMGQ5ZGMzNWIzYjE2NDJjNTA2Nzgx
MzE3ZGYwYmJiN2U2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9hbGxfYnZlYzNf
dmVydC52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUg
dmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMg
PSBmbG9vcig0LjAgKiBndGZfQ29sb3IucmdiKTsgICAvLyAzLzQgdHJ1ZSwgMS80IGZhbHNlCisJ
Y29sb3IgPSB2ZWM0KHZlYzMoYWxsKGJ2ZWMzKGMpKSksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hbGwvYWxsX2J2ZWMzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwvYWxs
X2J2ZWMzX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJlODNlZWM5MTU1NzI0MWNkYmRkOTFl
ZjMxZTE1MjQwNGQyNWM0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9hbGxfYnZl
YzNfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0
cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitib29sIF9hbGwoaW4gYnZlYzMgYSkK
K3sKKwlib29sIHRlbXAgPSB0cnVlOworCisJaWYoIWFbMF0pIHRlbXAgPSBmYWxzZTsKKwlpZigh
YVsxXSkgdGVtcCA9IGZhbHNlOworCWlmKCFhWzJdKSB0ZW1wID0gZmFsc2U7CisKKwlyZXR1cm4g
dGVtcDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDQuMCAqIGd0
Zl9Db2xvci5yZ2IpOyAgIC8vIDMvNCB0cnVlLCAxLzQgZmFsc2UKKwljb2xvciA9IHZlYzQodmVj
MyhfYWxsKGJ2ZWMzKGMpKSksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbGwv
aW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FsbC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQy
MGFjMzViY2QyY2E0ZGZjYWIxNjIyYWJkZGQ1Yjk4YmNlZWJkZGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9hbGwvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2FsbF8wMDFfdG9fMDA0Lmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfMDAxX3RvXzAwNC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55
L2FueV8wMDFfdG9fMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk0Yjk3OTExZGU2ZGUwNzU5NjA0ODY3
NTg5YjMxNDJiMWFlMmNjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfMDAx
X3RvXzAwNC5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBhbnlfMDAx
X3RvXzAwNC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJh
bnlfYnZlYzJfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFueV9idmVjMl9m
cmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYW55X2J2ZWMyX2ZyYWcudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhbnlfYnZlYzJf
dmVydF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYW55X2J2ZWMyX3ZlcnQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhbnlfYnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFueV9idmVjM19mcmFnX3JlZi5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYW55X2J2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJhbnlfYnZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogImFueV9idmVjM192ZXJ0X3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJhbnlfYnZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImFueV9idmVjM192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjMl9mcmFnLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hbnkvYW55X2J2ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzY0OGU1
MzIxZTQzMjhlZGU5ZjFkOTExOTk2NDliZjJlMjc1MDhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYW55L2FueV9idmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMS41ICogY29sb3IucmcpOyAgIC8vIDEv
MyB0cnVlLCAyLzMgZmFsc2UKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoYW55KGJ2ZWMyKGMp
KSksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbnkvYW55X2J2ZWMyX2ZyYWdfcmVm
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9hbnkvYW55X2J2ZWMyX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzAyM2M5OGRmZjE0ZjMzOGI3YjdiYTFmOWEzZTVlZDIwZDhjMTlmNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzJfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDI4IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK2Jvb2wgX2FueShpbiBidmVjMiBhKQoreworCWJvb2wgdGVtcCA9IGZhbHNlOworCisJ
aWYoYVswXSkgdGVtcCA9IHRydWU7CisJaWYoYVsxXSkgdGVtcCA9IHRydWU7CisKKwlyZXR1cm4g
dGVtcDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEuNSAqIGNv
bG9yLnJnKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2
ZWMzKF9hbnkoYnZlYzIoYykpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9h
bnlfYnZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjMl92ZXJ0LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjY5ODc3NzkyYzRjOWE3NmVkMWU2NzE2MGU0ODNlNTEwZDY2ZTJlMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEs
MTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxLjUgKiBndGZfQ29s
b3IucmcpOyAgIC8vIDEvMyB0cnVlLCAyLzMgZmFsc2UKKwljb2xvciA9IHZlYzQodmVjMyhhbnko
YnZlYzIoYykpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZl
YzJfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzJfdmVydF9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMTRjNGM2YTI5ODdmNDRhMzI2YzllYzZiNDZhZDdkOThhMTI2Zjg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0w
LDAgKzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK2Jvb2wgX2FueShpbiBidmVjMiBhKQoreworCWJvb2wgdGVtcCA9IGZhbHNl
OworCisJaWYoYVswXSkgdGVtcCA9IHRydWU7CisJaWYoYVsxXSkgdGVtcCA9IHRydWU7CisKKwly
ZXR1cm4gdGVtcDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEu
NSAqIGd0Zl9Db2xvci5yZyk7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWNvbG9yID0gdmVj
NCh2ZWMzKF9hbnkoYnZlYzIoYykpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2FueS9hbnlfYnZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjM19mcmFnLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDQ4NTlkN2RiOTJiNmM4Y2RiZWYyZjA3MzdkYjA1MjBjODU1NzNiNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzNfZnJhZy5mcmFnCkBAIC0w
LDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEu
NSAqIGNvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWdsX0ZyYWdDb2xvciA9
IHZlYzQodmVjMyhhbnkoYnZlYzMoYykpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2FueS9hbnlfYnZlYzNfZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzNfZnJh
Z19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWIwN2Y1MjBmMWE0NWIyY2VmYWUyOWE5Y2VjMTIzN2My
ZGFlOTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjM19mcmFnX3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYm9vbCBfYW55KGluIGJ2ZWMzIGEpCit7CisJ
Ym9vbCB0ZW1wID0gZmFsc2U7CisKKwlpZihhWzBdKSB0ZW1wID0gdHJ1ZTsKKwlpZihhWzFdKSB0
ZW1wID0gdHJ1ZTsKKwlpZihhWzJdKSB0ZW1wID0gdHJ1ZTsKKworCXJldHVybiB0ZW1wOworfQor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMS41ICogY29sb3IucmdiKTsg
ICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKF9hbnko
YnZlYzMoYykpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzNf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2FueV9idmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJhNGU1ZmI4NTVhMzJmM2FjMTg5YjE3MTBlNjE1MDU1ZjM1MjQ2MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigxLjUgKiBndGZfQ29sb3IucmdiKTsg
ICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJY29sb3IgPSB2ZWM0KHZlYzMoYW55KGJ2ZWMzKGMp
KSksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbnkvYW55X2J2ZWMzX3ZlcnRf
cmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hbnkvYW55X2J2ZWMzX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjgzYzEwMGQ2MGZmMTdjYzYyN2ExOTQ1MDBlZWRiNDJkOGY0YzUzMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2FueS9hbnlfYnZlYzNfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCitib29sIF9hbnkoaW4gYnZlYzMgYSkKK3sKKwlib29sIHRlbXAgPSBmYWxzZTsKKworCWlm
KGFbMF0pIHRlbXAgPSB0cnVlOworCWlmKGFbMV0pIHRlbXAgPSB0cnVlOworCWlmKGFbMl0pIHRl
bXAgPSB0cnVlOworCisJcmV0dXJuIHRlbXA7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMzIGMgPSBmbG9vcigxLjUgKiBndGZfQ29sb3IucmdiKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZh
bHNlCisJY29sb3IgPSB2ZWM0KHZlYzMoX2FueShidmVjMyhjKSkpLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvYW55L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hbnkvaW5wdXQu
cnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YWM0MjQwNjc2ODRlYTdlYzFkMGQzYjRmNTE4YzcxOTczYzQ5
N2RlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYW55L2lucHV0LnJ1bi50eHQKQEAgLTAs
MCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCith
bnlfMDAxX3RvXzAwNC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9hcnJheV8wMDFf
dG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9hcnJheV8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjQzOWZkN2E2MWZjZjBmMTE3NDdmNTcwODMyZTg2MjlhZTJjNGNlZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2FycmF5XzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsx
LDIwMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGFycmF5XzAwMV90b18wMDYuaHRtbDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2ds
ZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6
IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5H
TEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAg
ICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwK
KyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAg
ICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgIm5l
d19tYWQyIjogeworICAgICAgICAgICAgImNvdW50IjogMiwKKyAgICAgICAgICAgICJ0eXBlIjog
InVuaWZvcm0xZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICA0NS4w
LAorICAgICAgICAgICAgICAxNC4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZW1wdHlfdW5pZm9ybV9hcnJheV9mbG9h
dF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZW1wdHlfdW5pZm9ybV9hcnJh
eV9mbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZW1wdHlfdW5pZm9ybV9hcnJheV9mbG9hdF92ZXJ0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgIm5ld19tYWQyIjogeworICAgICAg
ICAgICAgImNvdW50IjogMiwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm0xZnYiLAorICAg
ICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICA0NS4wLAorICAgICAgICAgICAgICAx
NC4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiZW1wdHlfdW5pZm9ybV9hcnJheV9mbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZW1wdHlfZW1wdHlf
YXJyYXlfZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImVtcHR5X2Vt
cHR5X2FycmF5X2Zsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJlbXB0eV9lbXB0eV9hcnJheV9mbG9hdF92ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZW1wdHlfZW1wdHlfYXJyYXlfZmxvYXRfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImluaXRmdW5jX2VtcHR5X2FycmF5X2Zsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJpbml0ZnVuY19lbXB0eV9hcnJheV9mbG9hdF9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiaW5p
dGZ1bmNfZW1wdHlfYXJyYXlfZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImluaXRmdW5jX2VtcHR5X2FycmF5X2Zsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9l
bXB0eV9lbXB0eV9hcnJheV9mbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9lbXB0eV9l
bXB0eV9hcnJheV9mbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIxMGVhN2MxNTRkMTczYTg0
ZTEwYjQwZWIzYjQzYWQzMTI1NGNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5
L2VtcHR5X2VtcHR5X2FycmF5X2Zsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDI4IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgaT0wOworCWZsb2F0IG5ld19tYWRbMl07CisJZmxv
YXQgZ3JheSA9IDAuMDsKKworCW5ld19tYWRbMF09ZmxvYXQoMSk7CisJbmV3X21hZFsxXT1mbG9h
dCgyKTsKKworCWlmKCAobmV3X21hZFswXSA9PSAxLjApICYmIChuZXdfbWFkWzFdID09IDIuMCkg
KQorCSAgZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdy
YXksZ3JheSAsIGdyYXksIDEuMCk7CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2Vt
cHR5X2VtcHR5X2FycmF5X2Zsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2VtcHR5X2Vt
cHR5X2FycmF5X2Zsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWY5NzQxZGZjZTc4MzcxOGJi
OWFhMjYzYTlmOTU3ZDg2YjA1OWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXJyYXkv
ZW1wdHlfZW1wdHlfYXJyYXlfZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjcgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgaT0wOwor
CWZsb2F0IG5ld19tYWRbMl07CisJZmxvYXQgZ3JheSA9IDAuMDsKKworCW5ld19tYWRbMF09Zmxv
YXQoMSk7CisJbmV3X21hZFsxXT1mbG9hdCgyKTsKKworCWlmKCAobmV3X21hZFswXSA9PSAxLjAp
ICYmIChuZXdfbWFkWzFdID09IDIuMCkgKQorCSAgZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsK
Kwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2FycmF5L2VtcHR5X3VuaWZvcm1fYXJyYXlfZmxvYXRfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYXJyYXkvZW1wdHlfdW5pZm9ybV9hcnJheV9mbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODk2MGUwNjczMzQ4NWU1MzAxZjUzMWI1YTQ2NmVlOWNlYmE4OWZjMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2FycmF5L2VtcHR5X3VuaWZvcm1fYXJyYXlfZmxvYXRfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsMjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3VuaWZvcm0gZmxvYXQgbmV3X21hZDJbMl07CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlpbnQgaT0wOworCWZsb2F0IG5ld19tYWRbMl07CisJZmxvYXQgZ3Jh
eSA9IDAuMDsKKworCW5ld19tYWRbMF09bmV3X21hZDJbMF07CisJbmV3X21hZFsxXT1uZXdfbWFk
MlsxXTsKKworCWlmKCAobmV3X21hZFswXSA9PSA0NS4wKSAmJiAobmV3X21hZFsxXSA9PSAxNC4w
KSApCisJICBncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
Z3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2Vt
cHR5X3VuaWZvcm1fYXJyYXlfZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXJyYXkvZW1wdHlf
dW5pZm9ybV9hcnJheV9mbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgxZWVhN2YxZjUzMTA2
ZTQ4NTRiYTBiMjcxZmM3MDg4OTExYjBlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fy
cmF5L2VtcHR5X3VuaWZvcm1fYXJyYXlfZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Citjb25zdCBpbnQgYXJyYXlfc2l6ZSA9IDI7Cit1
bmlmb3JtIGZsb2F0IG5ld19tYWQyW2FycmF5X3NpemVdOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJaW50IGk9MDsKKwlmbG9hdCBuZXdfbWFkW2FycmF5X3NpemVdOworCWZsb2F0IGdyYXkgPSAw
LjA7CisKKwluZXdfbWFkWzBdID0gbmV3X21hZDJbMF07CisJbmV3X21hZFsxXSA9IG5ld19tYWQy
WzFdOworCisJaWYoIChuZXdfbWFkWzBdID09IDQ1LjApICYmIChuZXdfbWFkWzFdID09IDE0LjAp
ICkKKwkgIGdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdy
YXksIGdyYXksIDEuMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2luaXRm
dW5jX2VtcHR5X2FycmF5X2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FycmF5L2luaXRmdW5j
X2VtcHR5X2FycmF5X2Zsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2ZjOTExYWU5OTA3NGI3
NDcyZmJhNjg3Mzg0YTcyMDBiNzg3MTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXJy
YXkvaW5pdGZ1bmNfZW1wdHlfYXJyYXlfZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzMgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworCit2b2lkIGluaXRpYWxpc2VfYXJyYXkob3V0IGZsb2F0IGFycmF5WzJdLCBmbG9hdCBp
bml0X3ZhbCk7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IGk9MDsKKwlmbG9hdCBuZXdfbWFk
WzJdOworCWZsb2F0IGdyYXkgPSAwLjA7CisJaW5pdGlhbGlzZV9hcnJheShuZXdfbWFkLDI1LjAp
OworCWlmKCAobmV3X21hZFswXSA9PSAyNS4wKSAmJiAobmV3X21hZFsxXSA9PSAyNS4wKSApCisJ
ICBncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKK30KKwordm9pZCBpbml0aWFsaXNlX2FycmF5KG91dCBmbG9hdCBh
cnJheVsyXSwgZmxvYXQgaW5pdF92YWwpCit7CisJaW50IGk9MDsKKwlhcnJheVswXSA9IGluaXRf
dmFsOworCWFycmF5WzFdID0gaW5pdF92YWw7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJh
eS9pbml0ZnVuY19lbXB0eV9hcnJheV9mbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9p
bml0ZnVuY19lbXB0eV9hcnJheV9mbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYzNDdjOTlj
MTdiMDc3NWVmY2EwZDUyNjNlZjlhYTBkMDljYWQzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2FycmF5L2luaXRmdW5jX2VtcHR5X2FycmF5X2Zsb2F0X3ZlcnQudmVydApAQCAtMCwwICsx
LDMyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIGluaXRpYWxpc2VfYXJy
YXkob3V0IGZsb2F0IGFycmF5WzJdLCBmbG9hdCBpbml0X3ZhbCk7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlpbnQgaT0wOworCWZsb2F0IG5ld19tYWRbMl07CisJZmxvYXQgZ3JheSA9IDAuMDsK
Kwlpbml0aWFsaXNlX2FycmF5KG5ld19tYWQsMjUuMCk7CisJaWYoIChuZXdfbWFkWzBdID09IDI1
LjApICYmIChuZXdfbWFkWzFdID09IDI1LjApICkKKwkgIGdyYXk9MS4wOworCWVsc2UgZ3JheT0w
LjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKK3ZvaWQg
aW5pdGlhbGlzZV9hcnJheShvdXQgZmxvYXQgYXJyYXlbMl0sIGZsb2F0IGluaXRfdmFsKQorewor
CWFycmF5WzBdID0gaW5pdF92YWw7CisJYXJyYXlbMV0gPSBpbml0X3ZhbDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2FycmF5L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9pbnB1dC5y
dW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM3Y2JjMTA0OWE3YjZkZDRmNTAzNmJlNmNjOTc5NmMzOTBhNTg4
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hcnJheS9pbnB1dC5ydW4udHh0CkBAIC0w
LDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgor
YXJyYXlfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fMDAx
X3RvXzAwNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luXzAwMV90b18wMDYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDNlYmUxMWRiY2FiN2ZjZmU1YjMyZWQ5N2RiZDUzMWNmOGRjNjgxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luXzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsxLDEw
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4g
RE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGFzaW5fMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNU
ZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhc2luX2Zsb2F0X2ZyYWdfeHZhcnlfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhc2luX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhc2luX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhc2luX3ZlYzJfZnJhZ194
dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFzaW5fdmVjMl9mcmFnX3h2YXJ5
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXNpbl92ZWMyX2ZyYWdfeHZhcnkudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhc2luX3ZlYzNf
ZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImFzaW5fdmVjM19mcmFn
X3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXNpbl92ZWMzX2ZyYWdfeHZh
cnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJh
c2luX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImFz
aW5fZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFzaW5fZmxv
YXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImFzaW5fdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJhc2luX3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImFzaW5fdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiYXNpbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImFzaW5fdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiYXNpbl92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5f
ZmxvYXRfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYzljZjRmZTI5YTQzYjU0Yjk5NzlkYjhhNDUwNWRmZjkwYzBm
NWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjID0gMi4wICog
KGNvbG9yLnIgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYXNpbihjKSAvIE1fUEkgKyAw
LjUsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX2Zs
b2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fZmxvYXRfZnJhZ194
dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmM4MWVjNWY4Y2I2ZmEwOGNhY2I3ZmUyYzA0OWI0
YTQ1MjAwMDAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX2Zsb2F0X2Zy
YWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSw5MyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworLyogVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgZGly
ZWN0IGNvcGllcyBvZiBlYWNoIG90aGVyOgorICoKKyAqICAgR0wvYWNvcy9hY29zX2Zsb2F0X2Zy
YWdfeHZhcnlfcmVmLmZyYWcKKyAqICAgR0wvYXNpbi9hc2luX2Zsb2F0X2ZyYWdfeHZhcnlfcmVm
LmZyYWcKKyAqCisgKiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBhcHBseSBhbnkgY2hhbmdlcyB0
byBib3RoLiAgT25seSB0aGUgbGFzdAorICogbGluZSB3aGVyZSBnbF9GcmFnQ29sb3IgaXMgYXNz
aWduZWQgc2hvdWxkIGJlIGRpZmZlcmVudC4KKyAqLworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2Zsb2F0IGxl
cnAoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcykKK3sKKwlyZXR1cm4gYSArIChiIC0gYSkgKiBz
OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYXNpblZhbHVlc1sxN107CisJYXNp
blZhbHVlc1swXSA9IC0xLjU3MDg7CisJYXNpblZhbHVlc1sxXSA9IC0xLjA2NTQ0OworCWFzaW5W
YWx1ZXNbMl0gPSAtMC44NDgwNjI7CisJYXNpblZhbHVlc1szXSA9IC0wLjY3NTEzMjsKKwlhc2lu
VmFsdWVzWzRdID0gLTAuNTIzNTk5OworCWFzaW5WYWx1ZXNbNV0gPSAtMC4zODQzOTc7CisJYXNp
blZhbHVlc1s2XSA9IC0wLjI1MjY4OworCWFzaW5WYWx1ZXNbN10gPSAtMC4xMjUzMjg7CisJYXNp
blZhbHVlc1s4XSA9IDAuMDsKKwlhc2luVmFsdWVzWzldID0gMC4xMjUzMjg7CisJYXNpblZhbHVl
c1sxMF0gPSAwLjI1MjY4OworCWFzaW5WYWx1ZXNbMTFdID0gMC4zODQzOTc7CisJYXNpblZhbHVl
c1sxMl0gPSAwLjUyMzU5OTsKKwlhc2luVmFsdWVzWzEzXSA9IDAuNjc1MTMyOworCWFzaW5WYWx1
ZXNbMTRdID0gMC44NDgwNjI7CisJYXNpblZhbHVlc1sxNV0gPSAxLjA2NTQ0OworCWFzaW5WYWx1
ZXNbMTZdID0gMS41NzA4OworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5Nzkz
MjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIChjb2xvci5yIC0gMC41KTsKKworCWZsb2F0IGFyclZh
bCA9IChjICsgMS4wKSAqIDguMDsKKwlpbnQgYXJyMCA9IGludChmbG9vcihhcnJWYWwpKTsKKwlm
bG9hdCB3ZWlnaHQgPSBhcnJWYWwgLSBmbG9vcihhcnJWYWwpOworCWZsb2F0IGFzaW5fYyA9IDAu
MDsKKworCWlmIChhcnIwID09IDApCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1swXSwgYXNp
blZhbHVlc1sxXSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDEpCisJCWFzaW5fYyA9IGxl
cnAoYXNpblZhbHVlc1sxXSwgYXNpblZhbHVlc1syXSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIw
ID09IDIpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1syXSwgYXNpblZhbHVlc1szXSwgd2Vp
Z2h0KTsKKwllbHNlIGlmIChhcnIwID09IDMpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1sz
XSwgYXNpblZhbHVlc1s0XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDQpCisJCWFzaW5f
YyA9IGxlcnAoYXNpblZhbHVlc1s0XSwgYXNpblZhbHVlc1s1XSwgd2VpZ2h0KTsKKwllbHNlIGlm
IChhcnIwID09IDUpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s1XSwgYXNpblZhbHVlc1s2
XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDYpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZh
bHVlc1s2XSwgYXNpblZhbHVlc1s3XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDcpCisJ
CWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s3XSwgYXNpblZhbHVlc1s4XSwgd2VpZ2h0KTsKKwll
bHNlIGlmIChhcnIwID09IDgpCisJCWFzaW5fYyA9IGxlcnAoYXNpblZhbHVlc1s4XSwgYXNpblZh
bHVlc1s5XSwgd2VpZ2h0KTsKKwllbHNlIGlmIChhcnIwID09IDkpCisJCWFzaW5fYyA9IGxlcnAo
YXNpblZhbHVlc1s5XSwgYXNpblZhbHVlc1sxMF0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9
PSAxMCkKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVzWzEwXSwgYXNpblZhbHVlc1sxMV0sIHdl
aWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxMSkKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVz
WzExXSwgYXNpblZhbHVlc1sxMl0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxMikKKwkJ
YXNpbl9jID0gbGVycChhc2luVmFsdWVzWzEyXSwgYXNpblZhbHVlc1sxM10sIHdlaWdodCk7CisJ
ZWxzZSBpZiAoYXJyMCA9PSAxMykKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVzWzEzXSwgYXNp
blZhbHVlc1sxNF0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxNCkKKwkJYXNpbl9jID0g
bGVycChhc2luVmFsdWVzWzE0XSwgYXNpblZhbHVlc1sxNV0sIHdlaWdodCk7CisJZWxzZSBpZiAo
YXJyMCA9PSAxNSkKKwkJYXNpbl9jID0gbGVycChhc2luVmFsdWVzWzE1XSwgYXNpblZhbHVlc1sx
Nl0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxNikKKwkJYXNpbl9jID0gYXNpblZhbHVl
c1sxNl07CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGFzaW5fYyAvIE1fUEkgKyAwLjUsIDAuMCwg
MC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX2Zsb2F0X3ZlcnRf
eHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjJkNTVlYTJlODEyZjk2ODYyNTNjNmNiMTMzNGJiOTcwMWZhNDBlZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKQEAg
LTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAw
LjUpOworCWNvbG9yID0gdmVjNChhc2luKGMpIC8gTV9QSSArIDAuNSwgMC4wLCAwLjAsIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fZmxvYXRfdmVydF94dmFyeV9y
ZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4ODI2ZTNlOTY4MTEzMzYwNjg2YzQ3YzJhOGUxYmNiMjE3OGQ0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVy
dApAQCAtMCwwICsxLDQwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9Q
SSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIChndGZfQ29sb3Iu
ciAtIDAuNSk7CisKKwlmbG9hdCBhc2luX2MgPSAwLjA7CisJZmxvYXQgc2NhbGUgPSAxLjA7CisJ
ZmxvYXQgc2lnbiA9IDEuMDsKKworCS8vIHBvdyBjYW4ndCBoYW5kbGUgbmVnYXRpdmUgbnVtYmVy
cyBzbyB0YWtlIGFkdmFudGFnZSBvZiBzeW1tZXRyeQorCWlmKGMgPCAwLjApCisJeworCQlzaWdu
ID0gLTEuMDsKKwkJYyAqPSAtMS4wOworCX0KKworCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lv
biBmb3IgYXNpbgorCS8vIDEwMDAvMiBpdGVyYXRpb25zIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGFj
Y3VyYWN5IHdpdGggdGhpcyBtZXRob2QKKwlmb3IoaW50IGkgPSAxOyBpIDwgMTAwMDsgaSArPSAy
KQorCXsKKwkJYXNpbl9jICs9IHNjYWxlICogcG93KGMsIGZsb2F0KGkpKSAvIGZsb2F0KGkpOwor
CQlzY2FsZSAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAxKTsKKwl9CisKKwljb2xvciA9IHZlYzQo
c2lnbiAqIGFzaW5fYyAvIE1fUEkgKyAwLjUsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX3ZlYzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXNpbi9hc2luX3ZlYzJfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNzBiZmIzMzc0NTVh
YzQ5Zjk1ZGNlNWViNWQ1NjAzYjA4YzMxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
c2luL2FzaW5fdmVjMl9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4
NDY7CisJdmVjMiBjID0gMi4wICogKGNvbG9yLnJnIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KGFzaW4oYykgLyBNX1BJICsgMC41LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9hc2luL2FzaW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9h
c2luX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2QwYjUzOWQ4MzBkNjJl
Y2YzN2IzOWZhOTYwZjJiOWVkMWUyZTI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNp
bi9hc2luX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDEyOSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworLyogVGhlIGZvbGxvd2lu
ZyBmaWxlcyBhcmUgZGlyZWN0IGNvcGllcyBvZiBlYWNoIG90aGVyOgorICoKKyAqICAgR0wvYWNv
cy9hY29zX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZworICogICBHTC9hc2luL2FzaW5fdmVjMl9m
cmFnX3h2YXJ5X3JlZi5mcmFnCisgKgorICogQ2FyZSBzaG91bGQgYmUgdGFrZW4gdG8gYXBwbHkg
YW55IGNoYW5nZXMgdG8gYm90aC4gIE9ubHkgdGhlIGxhc3QKKyAqIGxpbmUgd2hlcmUgZ2xfRnJh
Z0NvbG9yIGlzIGFzc2lnbmVkIHNob3VsZCBiZSBkaWZmZXJlbnQuCisgKi8KKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCitmbG9hdCBsZXJwKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHMpCit7CisJcmV0dXJuIGEg
KyAoYiAtIGEpICogczsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGFzaW5WYWx1
ZXNbMTddOworCWFzaW5WYWx1ZXNbMF0gPSAtMS41NzA4OworCWFzaW5WYWx1ZXNbMV0gPSAtMS4w
NjU0NDsKKwlhc2luVmFsdWVzWzJdID0gLTAuODQ4MDYyOworCWFzaW5WYWx1ZXNbM10gPSAtMC42
NzUxMzI7CisJYXNpblZhbHVlc1s0XSA9IC0wLjUyMzU5OTsKKwlhc2luVmFsdWVzWzVdID0gLTAu
Mzg0Mzk3OworCWFzaW5WYWx1ZXNbNl0gPSAtMC4yNTI2ODsKKwlhc2luVmFsdWVzWzddID0gLTAu
MTI1MzI4OworCWFzaW5WYWx1ZXNbOF0gPSAwLjA7CisJYXNpblZhbHVlc1s5XSA9IDAuMTI1MzI4
OworCWFzaW5WYWx1ZXNbMTBdID0gMC4yNTI2ODsKKwlhc2luVmFsdWVzWzExXSA9IDAuMzg0Mzk3
OworCWFzaW5WYWx1ZXNbMTJdID0gMC41MjM1OTk7CisJYXNpblZhbHVlc1sxM10gPSAwLjY3NTEz
MjsKKwlhc2luVmFsdWVzWzE0XSA9IDAuODQ4MDYyOworCWFzaW5WYWx1ZXNbMTVdID0gMS4wNjU0
NDsKKwlhc2luVmFsdWVzWzE2XSA9IDEuNTcwODsKKworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0
MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzIgYyA9IDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisK
Kwl2ZWMyIGFyclZhbCA9IChjICsgdmVjMigxLjAsIDEuMCkpICogOC4wOworCWludCBhcnIweCA9
IGludChmbG9vcihhcnJWYWwueCkpOworCWludCBhcnIweSA9IGludChmbG9vcihhcnJWYWwueSkp
OworCXZlYzIgd2VpZ2h0ID0gYXJyVmFsIC0gZmxvb3IoYXJyVmFsKTsKKwl2ZWMyIGFzaW5fYyA9
IHZlYzIoMC4wKTsKKworCWlmIChhcnIweCA9PSAwKQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZh
bHVlc1swXSwgYXNpblZhbHVlc1sxXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDEp
CisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzFdLCBhc2luVmFsdWVzWzJdLCB3ZWlnaHQu
eCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMikKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNb
Ml0sIGFzaW5WYWx1ZXNbM10sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAzKQorCQlh
c2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1szXSwgYXNpblZhbHVlc1s0XSwgd2VpZ2h0LngpOwor
CWVsc2UgaWYgKGFycjB4ID09IDQpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzRdLCBh
c2luVmFsdWVzWzVdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gNSkKKwkJYXNpbl9j
LnggPSBsZXJwKGFzaW5WYWx1ZXNbNV0sIGFzaW5WYWx1ZXNbNl0sIHdlaWdodC54KTsKKwllbHNl
IGlmIChhcnIweCA9PSA2KQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1s2XSwgYXNpblZh
bHVlc1s3XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDcpCisJCWFzaW5fYy54ID0g
bGVycChhc2luVmFsdWVzWzddLCBhc2luVmFsdWVzWzhdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAo
YXJyMHggPT0gOCkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbOF0sIGFzaW5WYWx1ZXNb
OV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA5KQorCQlhc2luX2MueCA9IGxlcnAo
YXNpblZhbHVlc1s5XSwgYXNpblZhbHVlc1sxMF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIw
eCA9PSAxMCkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbMTBdLCBhc2luVmFsdWVzWzEx
XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDExKQorCQlhc2luX2MueCA9IGxlcnAo
YXNpblZhbHVlc1sxMV0sIGFzaW5WYWx1ZXNbMTJdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJy
MHggPT0gMTIpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzEyXSwgYXNpblZhbHVlc1sx
M10sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMykKKwkJYXNpbl9jLnggPSBsZXJw
KGFzaW5WYWx1ZXNbMTNdLCBhc2luVmFsdWVzWzE0XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFy
cjB4ID09IDE0KQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sxNF0sIGFzaW5WYWx1ZXNb
MTVdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTUpCisJCWFzaW5fYy54ID0gbGVy
cChhc2luVmFsdWVzWzE1XSwgYXNpblZhbHVlc1sxNl0sIHdlaWdodC54KTsKKyAgICAgICAgZWxz
ZSBpZiAoYXJyMHggPT0gMTYpCisgICAgICAgICAgICAgICAgYXNpbl9jLnggPSBhc2luVmFsdWVz
WzE2XTsKKworCWlmIChhcnIweSA9PSAwKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sw
XSwgYXNpblZhbHVlc1sxXSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEpCisJCWFz
aW5fYy55ID0gbGVycChhc2luVmFsdWVzWzFdLCBhc2luVmFsdWVzWzJdLCB3ZWlnaHQueSk7CisJ
ZWxzZSBpZiAoYXJyMHkgPT0gMikKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMl0sIGFz
aW5WYWx1ZXNbM10sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAzKQorCQlhc2luX2Mu
eSA9IGxlcnAoYXNpblZhbHVlc1szXSwgYXNpblZhbHVlc1s0XSwgd2VpZ2h0LnkpOworCWVsc2Ug
aWYgKGFycjB5ID09IDQpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzRdLCBhc2luVmFs
dWVzWzVdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNSkKKwkJYXNpbl9jLnkgPSBs
ZXJwKGFzaW5WYWx1ZXNbNV0sIGFzaW5WYWx1ZXNbNl0sIHdlaWdodC55KTsKKwllbHNlIGlmIChh
cnIweSA9PSA2KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1s2XSwgYXNpblZhbHVlc1s3
XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDcpCisJCWFzaW5fYy55ID0gbGVycChh
c2luVmFsdWVzWzddLCBhc2luVmFsdWVzWzhdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkg
PT0gOCkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbOF0sIGFzaW5WYWx1ZXNbOV0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA5KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZh
bHVlc1s5XSwgYXNpblZhbHVlc1sxMF0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAx
MCkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMTBdLCBhc2luVmFsdWVzWzExXSwgd2Vp
Z2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDExKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZh
bHVlc1sxMV0sIGFzaW5WYWx1ZXNbMTJdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0g
MTIpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzEyXSwgYXNpblZhbHVlc1sxM10sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxMykKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5W
YWx1ZXNbMTNdLCBhc2luVmFsdWVzWzE0XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09
IDE0KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sxNF0sIGFzaW5WYWx1ZXNbMTVdLCB3
ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTUpCisJCWFzaW5fYy55ID0gbGVycChhc2lu
VmFsdWVzWzE1XSwgYXNpblZhbHVlc1sxNl0sIHdlaWdodC55KTsKKyAgICAgICAgZWxzZSBpZiAo
YXJyMHkgPT0gMTYpCisgICAgICAgICAgICAgICAgYXNpbl9jLnkgPSBhc2luVmFsdWVzWzE2XTsK
KworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYXNpbl9jIC8gTV9QSSArIDAuNSwgMC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX3ZlYzJfdmVydF94dmFyeS52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvYXNpbi9hc2luX3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNTNi
ZDE0Y2ExNGZmMTVlNmE5YjU1YWZiYTViMjQyZmUxYTZlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9hc2luL2FzaW5fdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5
MzIzODQ2OworCXZlYzIgYyA9IDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCWNvbG9yID0g
dmVjNChhc2luKGMpIC8gTV9QSSArIDAuNSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvYXNpbi9hc2luX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Fz
aW4vYXNpbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVkMWQ0N2Y2Njdj
NmE3MWQ3ZjhmMDRlMGE3OTMxN2E4OWI1YTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2FzaW4vYXNpbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSw1NCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIz
ODQ2OworCXZlYzIgYyA9IDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCXZlYzIgYXNpbl9j
ID0gdmVjMigwLjApOworCXZlYzIgc2NhbGUgPSB2ZWMyKDEuMCk7CisJdmVjMiBzaWduID0gdmVj
MigxLjApOworCisJLy8gcG93IGNhbid0IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzIHNvIHRha2Ug
YWR2YW50YWdlIG9mIHN5bW1ldHJ5CisJaWYoYy5yIDwgMC4wKQorCXsKKwkJc2lnbi5yID0gLTEu
MDsKKwkJYy5yICo9IC0xLjA7CisJfQorCisJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZv
ciBhc2luCisJLy8gMTAwMC8yIGl0ZXJhdGlvbnMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgYWNjdXJh
Y3kgd2l0aCB0aGlzIG1ldGhvZAorCWZvcihpbnQgaSA9IDE7IGkgPCAxMDAwOyBpICs9IDIpCisJ
eworCQlhc2luX2MuciArPSBzY2FsZS5yICogcG93KGMuciwgZmxvYXQoaSkpIC8gZmxvYXQoaSk7
CisJCXNjYWxlLnIgKj0gZmxvYXQoaSkgLyBmbG9hdChpICsgMSk7CisJfQorCisJLy8gcG93IGNh
bid0IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzIHNvIHRha2UgYWR2YW50YWdlIG9mIHN5bW1ldHJ5
CisJaWYoYy5nIDwgMC4wKQorCXsKKwkJc2lnbi5nID0gLTEuMDsKKwkJYy5nICo9IC0xLjA7CisJ
fQorCisJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhc2luCisJLy8gMTAwMC8yIGl0
ZXJhdGlvbnMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgYWNjdXJhY3kgd2l0aCB0aGlzIG1ldGhvZAor
CWZvcihpbnQgaSA9IDE7IGkgPCAxMDAwOyBpICs9IDIpCisJeworCQlhc2luX2MuZyArPSBzY2Fs
ZS5nICogcG93KGMuZywgZmxvYXQoaSkpIC8gZmxvYXQoaSk7CisJCXNjYWxlLmcgKj0gZmxvYXQo
aSkgLyBmbG9hdChpICsgMSk7CisJfQorCisJY29sb3IgPSB2ZWM0KHNpZ24gKiBhc2luX2MgLyBN
X1BJICsgMC41LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2Fz
aW5fdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fdmVjM19mcmFnX3h2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDExOTg4NTM5ZWEwNzJjZjI0YTBmZDFlMWE3YTJkYTFjYTVi
ODNlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl92ZWMzX2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMgPSAyLjAgKiAo
Y29sb3IucmdiIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGFzaW4oYykgLyBNX1BJICsg
MC41LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXNpbi9hc2luX3ZlYzNfZnJhZ194
dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmQyMWYwYzU0NzBjMTBlMDg4YWM4NTc5YjUwNGIwODgyZTljNzMxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vYXNpbl92ZWMzX2ZyYWdfeHZhcnlfcmVm
LmZyYWcKQEAgLTAsMCArMSwxNjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKy8qIFRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGRpcmVjdCBjb3BpZXMg
b2YgZWFjaCBvdGhlcjoKKyAqCisgKiAgIEdML2Fjb3MvYWNvc192ZWMzX2ZyYWdfeHZhcnlfcmVm
LmZyYWcKKyAqICAgR0wvYXNpbi9hc2luX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZworICoKKyAq
IENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIGFwcGx5IGFueSBjaGFuZ2VzIHRvIGJvdGguICBPbmx5
IHRoZSBsYXN0CisgKiBsaW5lIHdoZXJlIGdsX0ZyYWdDb2xvciBpcyBhc3NpZ25lZCBzaG91bGQg
YmUgZGlmZmVyZW50LgorICovCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworZmxvYXQgbGVycChmbG9hdCBhLCBm
bG9hdCBiLCBmbG9hdCBzKQoreworCXJldHVybiBhICsgKGIgLSBhKSAqIHM7Cit9CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlmbG9hdCBhc2luVmFsdWVzWzE3XTsKKwlhc2luVmFsdWVzWzBdID0g
LTEuNTcwODsKKwlhc2luVmFsdWVzWzFdID0gLTEuMDY1NDQ7CisJYXNpblZhbHVlc1syXSA9IC0w
Ljg0ODA2MjsKKwlhc2luVmFsdWVzWzNdID0gLTAuNjc1MTMyOworCWFzaW5WYWx1ZXNbNF0gPSAt
MC41MjM1OTk7CisJYXNpblZhbHVlc1s1XSA9IC0wLjM4NDM5NzsKKwlhc2luVmFsdWVzWzZdID0g
LTAuMjUyNjg7CisJYXNpblZhbHVlc1s3XSA9IC0wLjEyNTMyODsKKwlhc2luVmFsdWVzWzhdID0g
MC4wOworCWFzaW5WYWx1ZXNbOV0gPSAwLjEyNTMyODsKKwlhc2luVmFsdWVzWzEwXSA9IDAuMjUy
Njg7CisJYXNpblZhbHVlc1sxMV0gPSAwLjM4NDM5NzsKKwlhc2luVmFsdWVzWzEyXSA9IDAuNTIz
NTk5OworCWFzaW5WYWx1ZXNbMTNdID0gMC42NzUxMzI7CisJYXNpblZhbHVlc1sxNF0gPSAwLjg0
ODA2MjsKKwlhc2luVmFsdWVzWzE1XSA9IDEuMDY1NDQ7CisJYXNpblZhbHVlc1sxNl0gPSAxLjU3
MDg7CisKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMz
IGMgPSAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKworCXZlYzMgYXJyVmFsID0gKGMgKyB2ZWMz
KDEuMCwgMS4wLCAxLjApKSAqIDguMDsKKwlpbnQgYXJyMHggPSBpbnQoZmxvb3IoYXJyVmFsLngp
KTsKKwlpbnQgYXJyMHkgPSBpbnQoZmxvb3IoYXJyVmFsLnkpKTsKKwlpbnQgYXJyMHogPSBpbnQo
Zmxvb3IoYXJyVmFsLnopKTsKKwl2ZWMzIHdlaWdodCA9IGFyclZhbCAtIGZsb29yKGFyclZhbCk7
CisJdmVjMyBhc2luX2MgPSB2ZWMzKDAuMCk7CisKKwlpZiAoYXJyMHggPT0gMCkKKwkJYXNpbl9j
LnggPSBsZXJwKGFzaW5WYWx1ZXNbMF0sIGFzaW5WYWx1ZXNbMV0sIHdlaWdodC54KTsKKwllbHNl
IGlmIChhcnIweCA9PSAxKQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sxXSwgYXNpblZh
bHVlc1syXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDIpCisJCWFzaW5fYy54ID0g
bGVycChhc2luVmFsdWVzWzJdLCBhc2luVmFsdWVzWzNdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAo
YXJyMHggPT0gMykKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbM10sIGFzaW5WYWx1ZXNb
NF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA0KQorCQlhc2luX2MueCA9IGxlcnAo
YXNpblZhbHVlc1s0XSwgYXNpblZhbHVlc1s1XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4
ID09IDUpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzVdLCBhc2luVmFsdWVzWzZdLCB3
ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gNikKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5W
YWx1ZXNbNl0sIGFzaW5WYWx1ZXNbN10sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA3
KQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1s3XSwgYXNpblZhbHVlc1s4XSwgd2VpZ2h0
LngpOworCWVsc2UgaWYgKGFycjB4ID09IDgpCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVz
WzhdLCBhc2luVmFsdWVzWzldLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gOSkKKwkJ
YXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbOV0sIGFzaW5WYWx1ZXNbMTBdLCB3ZWlnaHQueCk7
CisJZWxzZSBpZiAoYXJyMHggPT0gMTApCisJCWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzEw
XSwgYXNpblZhbHVlc1sxMV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMSkKKwkJ
YXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNbMTFdLCBhc2luVmFsdWVzWzEyXSwgd2VpZ2h0Lngp
OworCWVsc2UgaWYgKGFycjB4ID09IDEyKQorCQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sx
Ml0sIGFzaW5WYWx1ZXNbMTNdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTMpCisJ
CWFzaW5fYy54ID0gbGVycChhc2luVmFsdWVzWzEzXSwgYXNpblZhbHVlc1sxNF0sIHdlaWdodC54
KTsKKwllbHNlIGlmIChhcnIweCA9PSAxNCkKKwkJYXNpbl9jLnggPSBsZXJwKGFzaW5WYWx1ZXNb
MTRdLCBhc2luVmFsdWVzWzE1XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDE1KQor
CQlhc2luX2MueCA9IGxlcnAoYXNpblZhbHVlc1sxNV0sIGFzaW5WYWx1ZXNbMTZdLCB3ZWlnaHQu
eCk7CisgICAgICAgIGVsc2UgaWYgKGFycjB4ID09IDE2KQorICAgICAgICAgICAgICAgIGFzaW5f
Yy54ID0gYXNpblZhbHVlc1sxNl07CisKKwlpZiAoYXJyMHkgPT0gMCkKKwkJYXNpbl9jLnkgPSBs
ZXJwKGFzaW5WYWx1ZXNbMF0sIGFzaW5WYWx1ZXNbMV0sIHdlaWdodC55KTsKKwllbHNlIGlmIChh
cnIweSA9PSAxKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sxXSwgYXNpblZhbHVlc1sy
XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDIpCisJCWFzaW5fYy55ID0gbGVycChh
c2luVmFsdWVzWzJdLCBhc2luVmFsdWVzWzNdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkg
PT0gMykKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbM10sIGFzaW5WYWx1ZXNbNF0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA0KQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZh
bHVlc1s0XSwgYXNpblZhbHVlc1s1XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDUp
CisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzVdLCBhc2luVmFsdWVzWzZdLCB3ZWlnaHQu
eSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNikKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNb
Nl0sIGFzaW5WYWx1ZXNbN10sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA3KQorCQlh
c2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1s3XSwgYXNpblZhbHVlc1s4XSwgd2VpZ2h0LnkpOwor
CWVsc2UgaWYgKGFycjB5ID09IDgpCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzhdLCBh
c2luVmFsdWVzWzldLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gOSkKKwkJYXNpbl9j
LnkgPSBsZXJwKGFzaW5WYWx1ZXNbOV0sIGFzaW5WYWx1ZXNbMTBdLCB3ZWlnaHQueSk7CisJZWxz
ZSBpZiAoYXJyMHkgPT0gMTApCisJCWFzaW5fYy55ID0gbGVycChhc2luVmFsdWVzWzEwXSwgYXNp
blZhbHVlc1sxMV0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxMSkKKwkJYXNpbl9j
LnkgPSBsZXJwKGFzaW5WYWx1ZXNbMTFdLCBhc2luVmFsdWVzWzEyXSwgd2VpZ2h0LnkpOworCWVs
c2UgaWYgKGFycjB5ID09IDEyKQorCQlhc2luX2MueSA9IGxlcnAoYXNpblZhbHVlc1sxMl0sIGFz
aW5WYWx1ZXNbMTNdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTMpCisJCWFzaW5f
Yy55ID0gbGVycChhc2luVmFsdWVzWzEzXSwgYXNpblZhbHVlc1sxNF0sIHdlaWdodC55KTsKKwll
bHNlIGlmIChhcnIweSA9PSAxNCkKKwkJYXNpbl9jLnkgPSBsZXJwKGFzaW5WYWx1ZXNbMTRdLCBh
c2luVmFsdWVzWzE1XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDE1KQorCQlhc2lu
X2MueSA9IGxlcnAoYXNpblZhbHVlc1sxNV0sIGFzaW5WYWx1ZXNbMTZdLCB3ZWlnaHQueSk7Cisg
ICAgICAgIGVsc2UgaWYgKGFycjB5ID09IDE2KQorICAgICAgICAgICAgICAgIGFzaW5fYy55ID0g
YXNpblZhbHVlc1sxNl07CisKKwlpZiAoYXJyMHogPT0gMCkKKwkJYXNpbl9jLnogPSBsZXJwKGFz
aW5WYWx1ZXNbMF0sIGFzaW5WYWx1ZXNbMV0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9
PSAxKQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1sxXSwgYXNpblZhbHVlc1syXSwgd2Vp
Z2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDIpCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFs
dWVzWzJdLCBhc2luVmFsdWVzWzNdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gMykK
KwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbM10sIGFzaW5WYWx1ZXNbNF0sIHdlaWdodC56
KTsKKwllbHNlIGlmIChhcnIweiA9PSA0KQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1s0
XSwgYXNpblZhbHVlc1s1XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDUpCisJCWFz
aW5fYy56ID0gbGVycChhc2luVmFsdWVzWzVdLCBhc2luVmFsdWVzWzZdLCB3ZWlnaHQueik7CisJ
ZWxzZSBpZiAoYXJyMHogPT0gNikKKwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbNl0sIGFz
aW5WYWx1ZXNbN10sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSA3KQorCQlhc2luX2Mu
eiA9IGxlcnAoYXNpblZhbHVlc1s3XSwgYXNpblZhbHVlc1s4XSwgd2VpZ2h0LnopOworCWVsc2Ug
aWYgKGFycjB6ID09IDgpCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFsdWVzWzhdLCBhc2luVmFs
dWVzWzldLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gOSkKKwkJYXNpbl9jLnogPSBs
ZXJwKGFzaW5WYWx1ZXNbOV0sIGFzaW5WYWx1ZXNbMTBdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAo
YXJyMHogPT0gMTApCisJCWFzaW5fYy56ID0gbGVycChhc2luVmFsdWVzWzEwXSwgYXNpblZhbHVl
c1sxMV0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSAxMSkKKwkJYXNpbl9jLnogPSBs
ZXJwKGFzaW5WYWx1ZXNbMTFdLCBhc2luVmFsdWVzWzEyXSwgd2VpZ2h0LnopOworCWVsc2UgaWYg
KGFycjB6ID09IDEyKQorCQlhc2luX2MueiA9IGxlcnAoYXNpblZhbHVlc1sxMl0sIGFzaW5WYWx1
ZXNbMTNdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gMTMpCisJCWFzaW5fYy56ID0g
bGVycChhc2luVmFsdWVzWzEzXSwgYXNpblZhbHVlc1sxNF0sIHdlaWdodC56KTsKKwllbHNlIGlm
IChhcnIweiA9PSAxNCkKKwkJYXNpbl9jLnogPSBsZXJwKGFzaW5WYWx1ZXNbMTRdLCBhc2luVmFs
dWVzWzE1XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDE1KQorCQlhc2luX2MueiA9
IGxlcnAoYXNpblZhbHVlc1sxNV0sIGFzaW5WYWx1ZXNbMTZdLCB3ZWlnaHQueik7CisgICAgICAg
IGVsc2UgaWYgKGFycjB6ID09IDE2KQorICAgICAgICAgICAgICAgIGFzaW5fYy56ID0gYXNpblZh
bHVlc1sxNl07CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGFzaW5fYyAvIE1fUEkgKyAwLjUsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fdmVjM192ZXJ0X3h2YXJ5LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hc2luL2FzaW5fdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQ5Zjk0YTA4NTc1ZjlkYzdhOWFhOGRmOWI4NDI2MjdhMTQ4NmRmOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2FzaW4vYXNpbl92ZWMzX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUz
NTg5NzkzMjM4NDY7CisJdmVjMyBjID0gMi4wICogKGd0Zl9Db2xvci5yZ2IgLSAwLjUpOworCWNv
bG9yID0gdmVjNChhc2luKGMpIC8gTV9QSSArIDAuNSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2FzaW4vYXNpbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
c2luL2FzaW5fdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4YjYyMjI2MDg4
MzMyZmNkZDRlYWQxNmRlYjU5NTRlNmI2ZDQ3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9hc2luL2FzaW5fdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsNjkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMy
Mzg0NjsKKwl2ZWMzIGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJdmVjMyBhc2lu
X2MgPSB2ZWMzKDAuMCk7CisJdmVjMyBzY2FsZSA9IHZlYzMoMS4wKTsKKwl2ZWMzIHNpZ24gPSB2
ZWMzKDEuMCk7CisKKwkvLyBwb3cgY2FuJ3QgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgc28gdGFr
ZSBhZHZhbnRhZ2Ugb2Ygc3ltbWV0cnkKKwlpZihjLnIgPCAwLjApCisJeworCQlzaWduLnIgPSAt
MS4wOworCQljLnIgKj0gLTEuMDsKKwl9CisKKwkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24g
Zm9yIGFzaW4KKwkvLyAxMDAwLzIgaXRlcmF0aW9ucyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBhY2N1
cmFjeSB3aXRoIHRoaXMgbWV0aG9kCisJZm9yKGludCBpID0gMTsgaSA8IDEwMDA7IGkgKz0gMikK
Kwl7CisJCWFzaW5fYy5yICs9IHNjYWxlLnIgKiBwb3coYy5yLCBmbG9hdChpKSkgLyBmbG9hdChp
KTsKKwkJc2NhbGUuciAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAxKTsKKwl9CisKKwkvLyBwb3cg
Y2FuJ3QgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgc28gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3ltbWV0
cnkKKwlpZihjLmcgPCAwLjApCisJeworCQlzaWduLmcgPSAtMS4wOworCQljLmcgKj0gLTEuMDsK
Kwl9CisKKwkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGFzaW4KKwkvLyAxMDAwLzIg
aXRlcmF0aW9ucyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBhY2N1cmFjeSB3aXRoIHRoaXMgbWV0aG9k
CisJZm9yKGludCBpID0gMTsgaSA8IDEwMDA7IGkgKz0gMikKKwl7CisJCWFzaW5fYy5nICs9IHNj
YWxlLmcgKiBwb3coYy5nLCBmbG9hdChpKSkgLyBmbG9hdChpKTsKKwkJc2NhbGUuZyAqPSBmbG9h
dChpKSAvIGZsb2F0KGkgKyAxKTsKKwl9CisKKwkvLyBwb3cgY2FuJ3QgaGFuZGxlIG5lZ2F0aXZl
IG51bWJlcnMgc28gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3ltbWV0cnkKKwlpZihjLmIgPCAwLjApCisJ
eworCQlzaWduLmIgPSAtMS4wOworCQljLmIgKj0gLTEuMDsKKwl9CisKKwkvLyBUYXlsb3JzIHNl
cmllcyBleHBhbnNpb24gZm9yIGFzaW4KKwkvLyAxMDAwLzIgaXRlcmF0aW9ucyBuZWNlc3Nhcnkg
dG8gZ2V0IHRoZSBhY2N1cmFjeSB3aXRoIHRoaXMgbWV0aG9kCisJZm9yKGludCBpID0gMTsgaSA8
IDEwMDA7IGkgKz0gMikKKwl7CisJCWFzaW5fYy5iICs9IHNjYWxlLmIgKiBwb3coYy5iLCBmbG9h
dChpKSkgLyBmbG9hdChpKTsKKwkJc2NhbGUuYiAqPSBmbG9hdChpKSAvIGZsb2F0KGkgKyAxKTsK
Kwl9CisKKwljb2xvciA9IHZlYzQoc2lnbiAqIGFzaW5fYyAvIE1fUEkgKyAwLjUsIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hc2luL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
c2luL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkZTgyMzNhZDM1OTk2OTBjOTM2MmZlY2Ez
MWM2NTkyMTRlZjM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2FzaW4vaW5wdXQucnVu
LnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4KK2FzaW5fMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFu
L2F0YW5fMDAxX3RvXzAwOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuXzAwMV90b18wMDguaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWIzZTViNDYxM2E0ZmUxNzU5OGZmZTY3YzY3NDQ4N2YwNmM1YjdhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuXzAwMV90b18wMDguaHRtbApAQCAt
MCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGF0YW5fMDAxX3RvXzAwOC5odG1sPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhl
aWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
T3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhdGFuX2Zsb2F0X2ZyYWdf
eHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhdGFuX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhdGFuX2Zsb2F0X2ZyYWdfeHZhcnku
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhdGFuX3Zl
YzJfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImF0YW5fdmVjMl9m
cmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXRhbl92ZWMyX2ZyYWdf
eHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJh
dGFuX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBu
dWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImF0YW5f
dmVjM19mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXRhbl92ZWMz
X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICJhdGFuX2Zsb2F0X2ZyYWdfeHZhcnl5dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImF0YW5fZmxvYXRfZnJhZ194dmFyeXl2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiYXRhbl9mbG9hdF9mcmFnX3h2YXJ5eXZhcnkudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhdGFuX3ZlYzJfZnJhZ194dmFyeXl2YXJ5X3Jl
Zi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYXRhbl92ZWMyX2ZyYWdfeHZhcnl5dmFyeS5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImF0YW5fdmVjMl9mcmFnX3h2YXJ5eXZhcnku
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhdGFuX3Zl
YzNfZnJhZ194dmFyeXl2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYXRhbl92
ZWMzX2ZyYWdfeHZhcnl5dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImF0YW5f
dmVjM19mcmFnX3h2YXJ5eXZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJhdGFuX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImF0YW5fZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogImF0YW5fZmxvYXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogImF0YW5fdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhdGFuX3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogImF0YW5fdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXRhbi9hdGFuXzAwOV90b18wMTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl8wMDlfdG9fMDEy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjAxYzAyODJjZDFmOTZjMGM5ODA1MWVkNzk2NWYzY2VlYzk0ZjM2
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl8wMDlfdG9fMDEyLmh0bWwK
QEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGF0YW5fMDA5X3RvXzAxMi5odG1s
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7
IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhdGFuX3ZlYzNf
dmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYXRhbl92ZWMzX3Zl
cnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhdGFuX3ZlYzNfdmVydF94dmFy
eS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImF0
YW5fZmxvYXRfdmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJhdGFuX2Zsb2F0X3ZlcnRfeHZhcnl5dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImF0YW5fZmxvYXRfdmVydF94dmFyeXl2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYXRhbl92ZWMyX3ZlcnRfeHZhcnl5dmFyeV9yZWYudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYXRhbl92ZWMyX3ZlcnRfeHZhcnl5dmFyeS52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogImF0YW5fdmVjMl92ZXJ0X3h2YXJ5eXZhcnkudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhdGFuX3ZlYzNf
dmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhdGFuX3Zl
YzNfdmVydF94dmFyeXl2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXRhbl92ZWMz
X3ZlcnRfeHZhcnl5dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9hdF9mcmFnX3h2
YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJhZ194dmFyeS5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc1YjQ4ZGQ2MjE5MWQ3YjIxMzRkNzBkN2QzMGY1OWQyODhmNzUxYmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJhZ194dmFyeS5mcmFnCkBAIC0w
LDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkg
PSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSA0LjAgKiAyLjAgKiAoY29sb3Iu
ciAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChhdGFuKGMpIC8gTV9QSSArIDAuNSwgMC4w
LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJh
Z194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9hdF9mcmFnX3h2YXJ5X3Jl
Zi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzNTQ2ZDlkNzI2MTZiN2FkODA0NDllNDBjYmVlNmQwMWZkNmM1
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJhZ194dmFy
eV9yZWYuZnJhZwpAQCAtMCwwICsxLDU1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjID0gNC4w
ICogMi4wICogKGNvbG9yLnIgLSAwLjUpOworCWZsb2F0IGF0YW5fYyA9IDAuMDsKKwlmbG9hdCBz
Y2FsZSA9IDEuMDsKKwlmbG9hdCBzaWduID0gMS4wOworCXZlYzQgcmVzdWx0OworCisJaWYoYyA8
IDAuMCkKKwl7CisJCXNpZ24gPSAtMS4wOworCQljICo9IC0xLjA7CisJfQorCisJaWYoYyA8PSAx
LjApCisJeworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJZm9yKGlu
dCBpID0gMTsgaSA8IDEyOyBpICs9IDIpCisJCXsKKwkJCWF0YW5fYyArPSBzY2FsZSAqIHBvdyhj
LCBmbG9hdChpKSkgLyBmbG9hdChpKTsKKwkJCXNjYWxlICo9IC0xLjA7CisJCX0KKworCQlyZXN1
bHQgPSB2ZWM0KHNpZ24gKiBhdGFuX2MgLyBNX1BJICsgMC41LCAwLjAsIDAuMCwgMS4wKTsKKwl9
CisJZWxzZQorCXsKKwkJYyA9IDEuMCAvIGM7CisKKwkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5z
aW9uIGZvciBhdGFuCisJCWZvcihpbnQgaSA9IDE7IGkgPCAxMjsgaSArPSAyKQorCQl7CisJCQlh
dGFuX2MgKz0gc2NhbGUgKiBwb3coYywgZmxvYXQoaSkpIC8gZmxvYXQoaSk7CisJCQlzY2FsZSAq
PSAtMS4wOworCQl9CisKKwkJcmVzdWx0ID0gdmVjNChzaWduICogKE1fUEkgLyAyLjAgLSBhdGFu
X2MpIC8gTV9QSSArIDAuNSwgMC4wLCAwLjAsIDEuMCk7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0g
cmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX2Zsb2F0X2ZyYWdfeHZh
cnl5dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX2Zsb2F0X2ZyYWdfeHZhcnl5dmFyeS5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwMzMzMDkwYjE3Y2IzOWJlZjY2ODgzZjYwZjkyOGI5YzE4OTk1NzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJhZ194dmFyeXl2
YXJ5LmZyYWcKQEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lT
SU9OX0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsK
KwlmbG9hdCB4ID0gMi4wICogKGNvbG9yLmcgLSAwLjUpOworCWZsb2F0IHkgPSAyLjAgKiAoY29s
b3IuYiAtIDAuNSk7CisJY29uc3QgZmxvYXQgZXBzaWxvbiA9IDEuMGUtNDsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisKKwkvLyBBdm9pZCBldmFsdWF0aW5nIGF0
YW4oMCwgeCkgZm9yIHggPCBlcHNpbG9uIGJlY2F1c2UgaXQncyBpbXBsZW1lbnRhdGlvbi1kZXBl
bmRlbnQKKwlpZih4ID4gZXBzaWxvbiB8fCBhYnMoeSkgPiBlcHNpbG9uKQorCXsKKwkJZ2xfRnJh
Z0NvbG9yID0gdmVjNChhdGFuKHksIHgpIC8gKDIuMCAqIE1fUEkpICsgMC41LCAwLjAsIDAuMCwg
MS4wKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfZnJhZ194
dmFyeXl2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX2Zsb2F0X2ZyYWdfeHZhcnl5
dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzM0MWEyYTUyZmVkN2IzYTFkNGRlYWYyOWQ1YzUz
YjFhYjA2MzNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX2Zsb2F0X2Zy
YWdfeHZhcnl5dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDcxIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNpZmRlZiBHTF9G
UkFHTUVOVF9QUkVDSVNJT05fSElHSAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworI2Vsc2UKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1
MzU4OTc5MzIzODQ2OworCWZsb2F0IHggPSAyLjAgKiAoY29sb3IuZyAtIDAuNSk7CisJZmxvYXQg
eSA9IDIuMCAqIChjb2xvci5iIC0gMC41KTsKKwlmbG9hdCBhdGFuX2MgPSAwLjA7CisJZmxvYXQg
c2NhbGUgPSAxLjA7CisJZmxvYXQgc2lnbiA9IDEuMDsKKwl2ZWM0IHJlc3VsdCA9IHZlYzQoMC4w
LCAwLjAsIDAuMCwgMS4wKTsKKwljb25zdCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCisJLy8g
QXZvaWQgZXZhbHVhdGluZyBhdGFuKDAsIHgpIGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3Mg
aW1wbGVtZW50YXRpb24tZGVwZW5kZW50CisJaWYoeCA+IGVwc2lsb24gfHwgYWJzKHkpID4gZXBz
aWxvbikKKwl7CisJCWlmKHggPCAwLjAgXl4geSA8IDAuMCkKKwkJeworCQkJc2lnbiA9IC0xLjA7
CisJCX0KKworCQlpZihhYnMoeSkgPD0gYWJzKHgpKQorCQl7CisJCQlmbG9hdCBjID0gYWJzKHkg
LyB4KTsKKworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlmb3Io
aW50IGkgPSAxOyBpIDwgMTI7IGkgKz0gMikKKwkJCXsKKwkJCQlhdGFuX2MgKz0gc2NhbGUgKiBw
b3coYywgZmxvYXQoaSkpIC8gZmxvYXQoaSk7CisJCQkJc2NhbGUgKj0gLTEuMDsKKwkJCX0KKwor
CQkJcmVzdWx0ID0gdmVjNChzaWduICogYXRhbl9jIC8gKDIuMCAqIE1fUEkpICsgMC41LCAwLjAs
IDAuMCwgMS4wKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWZsb2F0IGMgPSBhYnMoeCAvIHkpOwor
CisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJCWZvcihpbnQgaSA9
IDE7IGkgPCAxMjsgaSArPSAyKQorCQkJeworCQkJCWF0YW5fYyArPSBzY2FsZSAqIHBvdyhjLCBm
bG9hdChpKSkgLyBmbG9hdChpKTsKKwkJCQlzY2FsZSAqPSAtMS4wOworCQkJfQorCisJCQlyZXN1
bHQgPSB2ZWM0KHNpZ24gKiAoTV9QSSAvIDIuMCAtIGF0YW5fYykgLyAoMi4wICogTV9QSSkgKyAw
LjUsIDAuMCwgMC4wLCAxLjApOworCQl9CisKKwkJaWYoeCA8IDAuMCkKKwkJCWlmKHkgPCAwLjAp
IHJlc3VsdC5yIC09IDAuNTsKKwkJCWVsc2UgaWYoeSA+IDAuMCkgcmVzdWx0LnIgKz0gMC41Owor
CX0KKworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXRhbi9hdGFuX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9h
dF92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkNDc1M2ExMjkwNTk4OGMzOTU3N2Y1NDU5
M2RkMWQ0MDAzMjAzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9h
dF92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSA0
LjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9yID0gdmVjNChhdGFuKGMpIC8g
TV9QSSArIDAuNSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9h
dGFuL2F0YW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9m
bG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4ODM4ZDk4YzhkNzU5OTQyMGRl
NzdiYjMyN2RhMGYwOGM1M2ExOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0
YW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDU2IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJ
ZmxvYXQgYyA9IDQuMCAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAuNSk7CisJZmxvYXQgYXRhbl9j
ID0gMC4wOworCWZsb2F0IHNjYWxlID0gMS4wOworCWZsb2F0IHNpZ24gPSAxLjA7CisJdmVjNCBy
ZXN1bHQ7CisKKwlpZihjIDwgMC4wKQorCXsKKwkJc2lnbiA9IC0xLjA7CisJCWMgKj0gLTEuMDsK
Kwl9CisKKwlpZihjIDw9IDEuMCkKKwl7CisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBm
b3IgYXRhbgorCQlmb3IoaW50IGkgPSAxOyBpIDwgMTI7IGkgKz0gMikKKwkJeworCQkJYXRhbl9j
ICs9IHNjYWxlICogcG93KGMsIGZsb2F0KGkpKSAvIGZsb2F0KGkpOworCQkJc2NhbGUgKj0gLTEu
MDsKKwkJfQorCisJCXJlc3VsdCA9IHZlYzQoc2lnbiAqIGF0YW5fYyAvIE1fUEkgKyAwLjUsIDAu
MCwgMC4wLCAxLjApOworCX0KKwllbHNlCisJeworCQljID0gMS4wIC8gYzsKKworCQkvLyBUYXls
b3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJZm9yKGludCBpID0gMTsgaSA8IDEyOyBp
ICs9IDIpCisJCXsKKwkJCWF0YW5fYyArPSBzY2FsZSAqIHBvdyhjLCBmbG9hdChpKSkgLyBmbG9h
dChpKTsKKwkJCXNjYWxlICo9IC0xLjA7CisJCX0KKworCQlyZXN1bHQgPSB2ZWM0KHNpZ24gKiAo
TV9QSSAvIDIuMCAtIGF0YW5fYykgLyBNX1BJICsgMC41LCAwLjAsIDAuMCwgMS4wKTsKKwl9CisK
Kwljb2xvciA9IHJlc3VsdDsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9m
bG9hdF92ZXJ0X3h2YXJ5eXZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9hdF92ZXJ0
X3h2YXJ5eXZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGE2YmExM2I2OWZlZDk1MDMwZjdlMmEzYzYx
ZTg4MDc4MTBiMjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX2Zsb2F0
X3ZlcnRfeHZhcnl5dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCB4
ID0gMi4wICogKGd0Zl9Db2xvci5nIC0gMC41KTsKKwlmbG9hdCB5ID0gMi4wICogKGd0Zl9Db2xv
ci5iIC0gMC41KTsKKwljb25zdCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCWNvbG9yID0gdmVj
NCgwLjAsIDAuMCwgMC4wLCAxLjApOworCisJLy8gQXZvaWQgZXZhbHVhdGluZyBhdGFuKDAsIHgp
IGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50CisJ
aWYoeCA+IGVwc2lsb24gfHwgYWJzKHkpID4gZXBzaWxvbikKKwl7CisJCWNvbG9yID0gdmVjNChh
dGFuKHksIHgpIC8gKDIuMCAqIE1fUEkpICsgMC41LCAwLjAsIDAuMCwgMS4wKTsKKwl9CisKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl9mbG9hdF92ZXJ0X3h2YXJ5eXZhcnlf
cmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfdmVydF94dmFyeXl2YXJ5X3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI2YzJkNWY0ZWExMDk4ZjkxYmU3MDJjOGY2MTYzZWNhMGJjMzYzYjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fZmxvYXRfdmVydF94dmFyeXl2
YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsNjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCB4ID0gMi4wICog
KGd0Zl9Db2xvci5nIC0gMC41KTsKKwlmbG9hdCB5ID0gMi4wICogKGd0Zl9Db2xvci5iIC0gMC41
KTsKKwlmbG9hdCBhdGFuX2MgPSAwLjA7CisJZmxvYXQgc2NhbGUgPSAxLjA7CisJZmxvYXQgc2ln
biA9IDEuMDsKKwl2ZWM0IHJlc3VsdCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwljb25z
dCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCisJLy8gQXZvaWQgZXZhbHVhdGluZyBhdGFuKDAs
IHgpIGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50
CisJaWYoeCA+IGVwc2lsb24gfHwgYWJzKHkpID4gZXBzaWxvbikKKwl7CisJCWlmKHggPCAwLjAg
Xl4geSA8IDAuMCkKKwkJeworCQkJc2lnbiA9IC0xLjA7CisJCX0KKworCQlpZihhYnMoeSkgPD0g
YWJzKHgpKQorCQl7CisJCQlmbG9hdCBjID0gYWJzKHkgLyB4KTsKKworCQkJLy8gVGF5bG9ycyBz
ZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlmb3IoaW50IGkgPSAxOyBpIDwgMTI7IGkgKz0g
MikKKwkJCXsKKwkJCQlhdGFuX2MgKz0gc2NhbGUgKiBwb3coYywgZmxvYXQoaSkpIC8gZmxvYXQo
aSk7CisJCQkJc2NhbGUgKj0gLTEuMDsKKwkJCX0KKworCQkJcmVzdWx0ID0gdmVjNChzaWduICog
YXRhbl9jIC8gKDIuMCAqIE1fUEkpICsgMC41LCAwLjAsIDAuMCwgMS4wKTsKKwkJfQorCQllbHNl
CisJCXsKKwkJCWZsb2F0IGMgPSBhYnMoeCAvIHkpOworCisJCQkvLyBUYXlsb3JzIHNlcmllcyBl
eHBhbnNpb24gZm9yIGF0YW4KKwkJCWZvcihpbnQgaSA9IDE7IGkgPCAxMjsgaSArPSAyKQorCQkJ
eworCQkJCWF0YW5fYyArPSBzY2FsZSAqIHBvdyhjLCBmbG9hdChpKSkgLyBmbG9hdChpKTsKKwkJ
CQlzY2FsZSAqPSAtMS4wOworCQkJfQorCisJCQlyZXN1bHQgPSB2ZWM0KHNpZ24gKiAoTV9QSSAv
IDIuMCAtIGF0YW5fYykgLyAoMi4wICogTV9QSSkgKyAwLjUsIDAuMCwgMC4wLCAxLjApOworCQl9
CisKKwkJaWYoeCA8IDAuMCkKKwkJCWlmKHkgPCAwLjApIHJlc3VsdC5yIC09IDAuNTsKKwkJCWVs
c2UgaWYoeSA+IDAuMCkgcmVzdWx0LnIgKz0gMC41OworCX0KKworCWNvbG9yID0gcmVzdWx0Owor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl9mcmFnX3h2YXJ5LmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDZkOTI3ZTU3Y2IyYmIxYjQyMmZiZTZlZWFjZjI1ODgyNWViMTRkZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE5
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1
OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSA0LjAgKiAyLjAgKiAoY29sb3IucmcgLSAwLjUp
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYXRhbihjKSAvIE1fUEkgKyAwLjUsIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkzNThmODY5ZWY0YWE2YmQ3OWNjYjllMWI1NTM2MTg4YTc1OGNhNDUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0w
LDAgKzEsMTE1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJ
ID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSA0LjAgKiAyLjAgKiAoY29sb3Iu
cmcgLSAwLjUpOworCXZlYzIgYXRhbl9jID0gdmVjMigwLjApOworCXZlYzIgc2NhbGUgPSB2ZWMy
KDEuMCk7CisJdmVjMiBzaWduID0gdmVjMigxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgwLjAs
IDAuMCwgMC4wLCAxLjApOworCisJaWYoY1swXSA8IDAuMCkKKwl7CisJCXNpZ25bMF0gPSAtMS4w
OworCQljWzBdICo9IC0xLjA7CisJfQorCisJaWYoY1swXSA8PSAxLjApCisJeworCQkvLyBUYXls
b3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICog
cG93KGNbMF0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlh
dGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJ
CXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBm
bG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9
IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVswXSAq
PSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoOSkpIC8g
ZmxvYXQoOSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAq
IHBvdyhjWzBdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVswXSAqPSAtMS4wOwor
CisJCXJlc3VsdFswXSA9IHNpZ25bMF0gKiBhdGFuX2NbMF0gLyBNX1BJICsgMC41OworCX0KKwll
bHNlCisJeworCQljWzBdID0gMS4wIC8gY1swXTsKKworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBh
bnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0
KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2Nh
bGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzBdICo9IC0x
LjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg1KSkgLyBmbG9h
dCg1KTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93
KGNbMF0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFu
X2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCXNj
YWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9h
dCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVswXSAqPSAtMS4wOworCisJCXJlc3VsdFswXSA9
IHNpZ25bMF0gKiAoTV9QSSAvIDIuMCAtIGF0YW5fY1swXSkgLyBNX1BJICsgMC41OworCX0KKwor
CisJaWYoY1sxXSA8IDAuMCkKKwl7CisJCXNpZ25bMV0gPSAtMS4wOworCQljWzFdICo9IC0xLjA7
CisJfQorCisJaWYoY1sxXSA8PSAxLjApCisJeworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNp
b24gZm9yIGF0YW4KKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDEp
KSAvIGZsb2F0KDEpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVb
MV0gKiBwb3coY1sxXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzFdICo9IC0xLjA7
CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg1KSkgLyBmbG9hdCg1
KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNb
MV0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2Nb
MV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCXNjYWxl
WzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgx
MSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCisJCXJlc3VsdFsxXSA9IHNp
Z25bMV0gKiBhdGFuX2NbMV0gLyBNX1BJICsgMC41OworCX0KKwllbHNlCisJeworCQljWzFdID0g
MS4wIC8gY1sxXTsKKworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJ
YXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOwor
CQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwg
ZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSAr
PSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJc2NhbGVbMV0g
Kj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDcpKSAv
IGZsb2F0KDcpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0g
KiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJ
CWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEp
OworCQlzY2FsZVsxXSAqPSAtMS4wOworCisJCXJlc3VsdFsxXSA9IHNpZ25bMV0gKiAoTV9QSSAv
IDIuMCAtIGF0YW5fY1sxXSkgLyBNX1BJICsgMC41OworCX0KKworCWdsX0ZyYWdDb2xvciA9IHJl
c3VsdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnl5
dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzJfZnJhZ194dmFyeXl2YXJ5LmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGJmZmNiM2RhZDg3YmQ4NjZhZmU0NzZjMGE4YTE0ZWUyYWZmYmNhNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnl5dmFyeS5m
cmFnCkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZs
b2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzIgeCA9IDIuMCAqIChjb2xv
ci5nZyAtIDAuNSk7CisJdmVjMiB5ID0gMi4wICogKGNvbG9yLmJiIC0gMC41KTsKKwljb25zdCBm
bG9hdCBlcHNpbG9uID0gMS4wZS00OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKKworCS8vIEF2b2lkIGV2YWx1YXRpbmcgYXRhbigwLCB4KSBmb3IgeCA8IGVwc2ls
b24gYmVjYXVzZSBpdCdzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudAorCWlmKHhbMF0gPiBlcHNp
bG9uIHx8IGFicyh5WzBdKSA+IGVwc2lsb24pCisJeworCQlnbF9GcmFnQ29sb3JbMF0gPSBhdGFu
KHlbMF0sIHhbMF0pIC8gKDIuMCAqIE1fUEkpICsgMC41OworCX0KKworCWlmKHhbMV0gPiBlcHNp
bG9uIHx8IGFicyh5WzFdKSA+IGVwc2lsb24pCisJeworCQlnbF9GcmFnQ29sb3JbMV0gPSBhdGFu
KHlbMV0sIHhbMV0pIC8gKDIuMCAqIE1fUEkpICsgMC41OworCX0KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnl5dmFyeV9yZWYuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2F0YW4vYXRhbl92ZWMyX2ZyYWdfeHZhcnl5dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmQ3
MTE3ZDQ4OGM4YTVlOGE4ZTkxY2FlOTU4ZmFmZDExMWQ1ZGE3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzJfZnJhZ194dmFyeXl2YXJ5X3JlZi5mcmFnCkBAIC0wLDAg
KzEsMTMzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0g
My4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIHggPSAyLjAgKiAoY29sb3IuZ2cgLSAwLjUp
OworCXZlYzIgeSA9IDIuMCAqIChjb2xvci5iYiAtIDAuNSk7CisJdmVjMiBjOworCXZlYzIgYXRh
bl9jID0gdmVjMigwLjApOworCXZlYzIgc2NhbGUgPSB2ZWMyKDEuMCk7CisJdmVjMiBzaWduID0g
dmVjMigxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCWNv
bnN0IGZsb2F0IGVwc2lsb24gPSAxLjBlLTQ7CisKKwkvLyBBdm9pZCBldmFsdWF0aW5nIGF0YW4o
MCwgeCkgZm9yIHggPCBlcHNpbG9uIGJlY2F1c2UgaXQncyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRl
bnQKKwlpZih4WzBdID4gZXBzaWxvbiB8fCBhYnMoeVswXSkgPiBlcHNpbG9uKQorCXsKKwkJaWYo
eFswXSA8IDAuMCBeXiB5WzBdIDwgMC4wKQorCQl7CisJCQlzaWduWzBdID0gLTEuMDsKKwkJfQor
CisJCWlmKGFicyh5WzBdKSA8PSBhYnMoeFswXSkpCisJCXsKKwkJCWNbMF0gPSBhYnMoeVswXSAv
IHhbMF0pOworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlhdGFu
X2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCQlz
Y2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZs
b2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSAr
PSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxlWzBd
ICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNykp
IC8gZmxvYXQoNyk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxl
WzBdICogcG93KGNbMF0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQkJc2NhbGVbMF0gKj0gLTEu
MDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgxMSkpIC8gZmxv
YXQoMTEpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKworCQkJcmVzdWx0WzBdID0gc2lnblswXSAq
IGF0YW5fY1swXSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNb
MF0gPSBhYnMoeFswXSAvIHlbMF0pOworCisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24g
Zm9yIGF0YW4KKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgxKSkg
LyBmbG9hdCgxKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVb
MF0gKiBwb3coY1swXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVswXSAqPSAtMS4w
OworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0
KDUpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBv
dyhjWzBdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlh
dGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJ
CQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0s
IGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCisJCQlyZXN1
bHRbMF0gPSBzaWduWzBdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMF0pIC8gKDIuMCAqIE1fUEkp
ICsgMC41OworCQl9CisKKwkJaWYoeFswXSA8IDAuMCkKKwkJCWlmKHlbMF0gPCAwLjApIHJlc3Vs
dFswXSAtPSAwLjU7CisJCQllbHNlIGlmKHlbMF0gPiAwLjApIHJlc3VsdFswXSArPSAwLjU7CisJ
fQorCisJaWYoeFsxXSA+IGVwc2lsb24gfHwgYWJzKHlbMV0pID4gZXBzaWxvbikKKwl7CisKKwkJ
aWYoeFsxXSA8IDAuMCBeXiB5WzFdIDwgMC4wKQorCQl7CisJCQlzaWduWzFdID0gLTEuMDsKKwkJ
fQorCisJCWlmKGFicyh5WzFdKSA8PSBhYnMoeFsxXSkpCisJCXsKKwkJCWNbMV0gPSBhYnMoeVsx
XSAvIHhbMV0pOworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlh
dGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJ
CQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0s
IGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sx
XSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxl
WzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQo
NykpIC8gZmxvYXQoNyk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNj
YWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQkJc2NhbGVbMV0gKj0g
LTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgxMSkpIC8g
ZmxvYXQoMTEpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKworCQkJcmVzdWx0WzFdID0gc2lnblsx
XSAqIGF0YW5fY1sxXSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCQllbHNlCisJCXsKKwkJ
CWNbMV0gPSBhYnMoeFsxXSAvIHlbMV0pOworCisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNp
b24gZm9yIGF0YW4KKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgx
KSkgLyBmbG9hdCgxKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2Nh
bGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVsxXSAqPSAt
MS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDUpKSAvIGZs
b2F0KDUpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAq
IHBvdyhjWzFdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisJ
CQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7
CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNb
MV0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCisJCQly
ZXN1bHRbMV0gPSBzaWduWzFdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMV0pIC8gKDIuMCAqIE1f
UEkpICsgMC41OworCQl9CisKKwkJaWYoeFsxXSA8IDAuMCkKKwkJCWlmKHlbMV0gPCAwLjApIHJl
c3VsdFsxXSAtPSAwLjU7CisJCQllbHNlIGlmKHlbMV0gPiAwLjApIHJlc3VsdFsxXSArPSAwLjU7
CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXRhbi9hdGFuX3ZlYzJfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzJf
dmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MzJmNzI0NGZmNjJiMTBhYTc0NjA5Yzk3OTFl
MDg5MmJhMGI3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl92
ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzIgYyA9IDQuMCAq
IDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCWNvbG9yID0gdmVjNChhdGFuKGMpIC8gTV9Q
SSArIDAuNSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFu
X3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX3ZlcnRf
eHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVmMmQ1ZTgzZDJkOWY5ZmQ1OGI1OTFiNGVmYWNh
OTRjYWU2OWZjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMyX3Zl
cnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxMTYgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cith
dHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSA0
LjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwl2ZWMyIGF0YW5fYyA9IHZlYzIoMC4w
KTsKKwl2ZWMyIHNjYWxlID0gdmVjMigxLjApOworCXZlYzIgc2lnbiA9IHZlYzIoMS4wKTsKKwl2
ZWM0IHJlc3VsdCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKworCWlmKGNbMF0gPCAwLjAp
CisJeworCQlzaWduWzBdID0gLTEuMDsKKwkJY1swXSAqPSAtMS4wOworCX0KKworCWlmKGNbMF0g
PD0gMS4wKQorCXsKKwkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCWF0
YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJ
c2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZs
b2F0KDMpKSAvIGZsb2F0KDMpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0g
c2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNSkpIC8gZmxvYXQoNSk7CisJCXNjYWxlWzBdICo9
IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg3KSkgLyBm
bG9hdCg3KTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICog
cG93KGNbMF0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlh
dGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsK
KwkJc2NhbGVbMF0gKj0gLTEuMDsKKworCQlyZXN1bHRbMF0gPSBzaWduWzBdICogYXRhbl9jWzBd
IC8gTV9QSSArIDAuNTsKKwl9CisJZWxzZQorCXsKKwkJY1swXSA9IDEuMCAvIGNbMF07CisKKwkJ
Ly8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCWF0YW5fY1swXSArPSBzY2Fs
ZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJc2NhbGVbMF0gKj0gLTEu
MDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDMpKSAvIGZsb2F0
KDMpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3co
Y1swXSwgZmxvYXQoNSkpIC8gZmxvYXQoNSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5f
Y1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJc2Nh
bGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0
KDkpKSAvIGZsb2F0KDkpOworCQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2Nh
bGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJc2NhbGVbMF0gKj0g
LTEuMDsKKworCQlyZXN1bHRbMF0gPSBzaWduWzBdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMF0p
IC8gTV9QSSArIDAuNTsKKwl9CisKKworCWlmKGNbMV0gPCAwLjApCisJeworCQlzaWduWzFdID0g
LTEuMDsKKwkJY1sxXSAqPSAtMS4wOworCX0KKworCWlmKGNbMV0gPD0gMS4wKQorCXsKKwkJLy8g
VGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCWF0YW5fY1sxXSArPSBzY2FsZVsx
XSAqIHBvdyhjWzFdLCBmbG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsK
KwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDMpKSAvIGZsb2F0KDMp
OworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sx
XSwgZmxvYXQoNSkpIC8gZmxvYXQoNSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sx
XSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJc2NhbGVb
MV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDkp
KSAvIGZsb2F0KDkpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVb
MV0gKiBwb3coY1sxXSwgZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJc2NhbGVbMV0gKj0gLTEu
MDsKKworCQlyZXN1bHRbMV0gPSBzaWduWzFdICogYXRhbl9jWzFdIC8gTV9QSSArIDAuNTsKKwl9
CisJZWxzZQorCXsKKwkJY1sxXSA9IDEuMCAvIGNbMV07CisKKwkJLy8gVGF5bG9ycyBzZXJpZXMg
ZXhwYW5zaW9uIGZvciBhdGFuCisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBm
bG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9
IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQlzY2FsZVsxXSAq
PSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNSkpIC8g
ZmxvYXQoNSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAq
IHBvdyhjWzFdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJ
YXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOwor
CQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwg
ZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKworCQlyZXN1bHRb
MV0gPSBzaWduWzFdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMV0pIC8gTV9QSSArIDAuNTsKKwl9
CisKKwljb2xvciA9IHJlc3VsdDsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRh
bl92ZWMyX3ZlcnRfeHZhcnl5dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzJfdmVy
dF94dmFyeXl2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZhNjQ0ODk2ODcxODg4M2QxYjIxNTU4NTM2
ZjY4MGNhYWJkMTI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMy
X3ZlcnRfeHZhcnl5dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMzQgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIHgg
PSAyLjAgKiAoZ3RmX0NvbG9yLmdnIC0gMC41KTsKKwl2ZWMyIHkgPSAyLjAgKiAoZ3RmX0NvbG9y
LmJiIC0gMC41KTsKKwljb25zdCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCWNvbG9yID0gdmVj
NCgwLjAsIDAuMCwgMC4wLCAxLjApOworCisJLy8gQXZvaWQgZXZhbHVhdGluZyBhdGFuKDAsIHgp
IGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50CisJ
aWYoeFswXSA+IGVwc2lsb24gfHwgYWJzKHlbMF0pID4gZXBzaWxvbikKKwl7CisJCWNvbG9yWzBd
ID0gYXRhbih5WzBdLCB4WzBdKSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwl9CisKKwlpZih4WzFd
ID4gZXBzaWxvbiB8fCBhYnMoeVsxXSkgPiBlcHNpbG9uKQorCXsKKwkJY29sb3JbMV0gPSBhdGFu
KHlbMV0sIHhbMV0pIC8gKDIuMCAqIE1fUEkpICsgMC41OworCX0KKworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzJfdmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYXRhbi9hdGFuX3ZlYzJfdmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlZTQxNTI2ZmZmYWE2ODI1ZDIxZjViODU5N2M3OGEzYTRkOGNkNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjMl92ZXJ0X3h2YXJ5eXZhcnlfcmVmLnZlcnQKQEAg
LTAsMCArMSwxMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29s
b3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0g
My4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIHggPSAyLjAgKiAoZ3RmX0NvbG9yLmdnIC0g
MC41KTsKKwl2ZWMyIHkgPSAyLjAgKiAoZ3RmX0NvbG9yLmJiIC0gMC41KTsKKwl2ZWMyIGM7CisJ
dmVjMiBhdGFuX2MgPSB2ZWMyKDAuMCk7CisJdmVjMiBzY2FsZSA9IHZlYzIoMS4wKTsKKwl2ZWMy
IHNpZ24gPSB2ZWMyKDEuMCk7CisJdmVjNCByZXN1bHQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7CisJY29uc3QgZmxvYXQgZXBzaWxvbiA9IDEuMGUtNDsKKworCS8vIEF2b2lkIGV2YWx1YXRp
bmcgYXRhbigwLCB4KSBmb3IgeCA8IGVwc2lsb24gYmVjYXVzZSBpdCdzIGltcGxlbWVudGF0aW9u
LWRlcGVuZGVudAorCWlmKHhbMF0gPiBlcHNpbG9uIHx8IGFicyh5WzBdKSA+IGVwc2lsb24pCisJ
eworCQlpZih4WzBdIDwgMC4wIF5eIHlbMF0gPCAwLjApCisJCXsKKwkJCXNpZ25bMF0gPSAtMS4w
OworCQl9CisKKwkJaWYoYWJzKHlbMF0pIDw9IGFicyh4WzBdKSkKKwkJeworCQkJY1swXSA9IGFi
cyh5WzBdIC8geFswXSk7CisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4K
KwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgxKSkgLyBmbG9hdCgx
KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3co
Y1swXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRh
bl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQkJ
c2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBm
bG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0g
Kz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCQlzY2FsZVsw
XSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDEx
KSkgLyBmbG9hdCgxMSk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCisJCQlyZXN1bHRbMF0gPSBz
aWduWzBdICogYXRhbl9jWzBdIC8gKDIuMCAqIE1fUEkpICsgMC41OworCQl9CisJCWVsc2UKKwkJ
eworCQkJY1swXSA9IGFicyh4WzBdIC8geVswXSk7CisKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4
cGFuc2lvbiBmb3IgYXRhbgorCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZs
b2F0KDEpKSAvIGZsb2F0KDEpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSAr
PSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzBd
ICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNSkp
IC8gZmxvYXQoNSk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxl
WzBdICogcG93KGNbMF0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQkJc2NhbGVbMF0gKj0gLTEu
MDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9h
dCg5KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBw
b3coY1swXSwgZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisK
KwkJCXJlc3VsdFswXSA9IHNpZ25bMF0gKiAoTV9QSSAvIDIuMCAtIGF0YW5fY1swXSkgLyAoMi4w
ICogTV9QSSkgKyAwLjU7CisJCX0KKworCQlpZih4WzBdIDwgMC4wKQorCQkJaWYoeVswXSA8IDAu
MCkgcmVzdWx0WzBdIC09IDAuNTsKKwkJCWVsc2UgaWYoeVswXSA+IDAuMCkgcmVzdWx0WzBdICs9
IDAuNTsKKwl9CisKKwlpZih4WzFdID4gZXBzaWxvbiB8fCBhYnMoeVsxXSkgPiBlcHNpbG9uKQor
CXsKKwkJaWYoeFsxXSA8IDAuMCBeXiB5WzFdIDwgMC4wKQorCQl7CisJCQlzaWduWzFdID0gLTEu
MDsKKwkJfQorCisJCWlmKGFicyh5WzFdKSA8PSBhYnMoeFsxXSkpCisJCXsKKwkJCWNbMV0gPSBh
YnMoeVsxXSAvIHhbMV0pOworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFu
CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMSkpIC8gZmxvYXQo
MSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93
KGNbMV0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0
YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJ
CXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwg
ZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFd
ICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQkJc2NhbGVb
MV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgx
MSkpIC8gZmxvYXQoMTEpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKworCQkJcmVzdWx0WzFdID0g
c2lnblsxXSAqIGF0YW5fY1sxXSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCQllbHNlCisJ
CXsKKwkJCWNbMV0gPSBhYnMoeFsxXSAvIHlbMV0pOworCisJCQkvLyBUYXlsb3JzIHNlcmllcyBl
eHBhbnNpb24gZm9yIGF0YW4KKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBm
bG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0g
Kz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVsx
XSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDUp
KSAvIGZsb2F0KDUpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2Fs
ZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJCXNjYWxlWzFdICo9IC0x
LjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxv
YXQoOSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICog
cG93KGNbMV0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOwor
CisJCQlyZXN1bHRbMV0gPSBzaWduWzFdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMV0pIC8gKDIu
MCAqIE1fUEkpICsgMC41OworCQl9CisKKwkJaWYoeFsxXSA8IDAuMCkKKwkJCWlmKHlbMV0gPCAw
LjApIHJlc3VsdFsxXSAtPSAwLjU7CisJCQllbHNlIGlmKHlbMV0gPiAwLjApIHJlc3VsdFsxXSAr
PSAwLjU7CisJfQorCisJY29sb3IgPSByZXN1bHQ7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9hdGFuL2F0YW5fdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVj
M19mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMDFlM2U1OTVlNzZhNmYxY2U4NzU2MDM1
YTBlZWY4ZjRmMDM3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMz
X2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMg
PSA0LjAgKiAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGF0
YW4oYykgLyBNX1BJICsgMC41LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9h
dGFuX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMzX2Zy
YWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVjZmQwMWZhMWYzOTFmNmFlYjJkMzUyMzA3
MTMwY2ViMmJiN2Q2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMz
X2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwxNjEgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZl
YzMgYyA9IDQuMCAqIDIuMCAqIChjb2xvci5yZ2IgLSAwLjUpOworCXZlYzMgYXRhbl9jID0gdmVj
MygwLjApOworCXZlYzMgc2NhbGUgPSB2ZWMzKDEuMCk7CisJdmVjMyBzaWduID0gdmVjMygxLjAp
OworCXZlYzQgcmVzdWx0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCisKKwlpZihjWzBd
IDwgMC4wKQorCXsKKwkJc2lnblswXSA9IC0xLjA7CisJCWNbMF0gKj0gLTEuMDsKKwl9CisKKwlp
ZihjWzBdIDw9IDEuMCkKKwl7CisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRh
bgorCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8gZmxvYXQo
MSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhj
WzBdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9j
WzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQlzY2Fs
ZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQo
NykpIC8gZmxvYXQoNyk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2Fs
ZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJc2NhbGVbMF0gKj0gLTEu
MDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDExKSkgLyBmbG9h
dCgxMSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisKKwkJcmVzdWx0WzBdID0gc2lnblswXSAqIGF0
YW5fY1swXSAvIE1fUEkgKyAwLjU7CisJfQorCWVsc2UKKwl7CisJCWNbMF0gPSAxLjAgLyBjWzBd
OworCisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRhbgorCQlhdGFuX2NbMF0g
Kz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCXNjYWxlWzBd
ICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCgzKSkg
LyBmbG9hdCgzKTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBd
ICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQlzY2FsZVswXSAqPSAtMS4wOwor
CQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7
CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBd
LCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBd
ICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCXNjYWxl
WzBdICo9IC0xLjA7CisKKwkJcmVzdWx0WzBdID0gc2lnblswXSAqIChNX1BJIC8gMi4wIC0gYXRh
bl9jWzBdKSAvIE1fUEkgKyAwLjU7CisJfQorCisJaWYoY1sxXSA8IDAuMCkKKwl7CisJCXNpZ25b
MV0gPSAtMS4wOworCQljWzFdICo9IC0xLjA7CisJfQorCisJaWYoY1sxXSA8PSAxLjApCisJewor
CQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzFdICs9IHNj
YWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVsxXSAqPSAt
MS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMykpIC8gZmxv
YXQoMyk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBv
dyhjWzFdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRh
bl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlz
Y2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxv
YXQoOSkpIC8gZmxvYXQoOSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBz
Y2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsxXSAq
PSAtMS4wOworCisJCXJlc3VsdFsxXSA9IHNpZ25bMV0gKiBhdGFuX2NbMV0gLyBNX1BJICsgMC41
OworCX0KKwllbHNlCisJeworCQljWzFdID0gMS4wIC8gY1sxXTsKKworCQkvLyBUYXlsb3JzIHNl
cmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNb
MV0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2Nb
MV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxl
WzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg1
KSkgLyBmbG9hdCg1KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxl
WzFdICogcG93KGNbMV0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsxXSAqPSAtMS4w
OworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxvYXQo
OSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhj
WzFdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCisJCXJl
c3VsdFsxXSA9IHNpZ25bMV0gKiAoTV9QSSAvIDIuMCAtIGF0YW5fY1sxXSkgLyBNX1BJICsgMC41
OworCX0KKworCisJaWYoY1syXSA8IDAuMCkKKwl7CisJCXNpZ25bMl0gPSAtMS4wOworCQljWzJd
ICo9IC0xLjA7CisJfQorCisJaWYoY1syXSA8PSAxLjApCisJeworCQkvLyBUYXlsb3JzIHNlcmll
cyBleHBhbnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0s
IGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFuX2NbMl0g
Kz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzJd
ICo9IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCg1KSkg
LyBmbG9hdCg1KTsKKwkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJd
ICogcG93KGNbMl0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsyXSAqPSAtMS4wOwor
CQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7
CisJCXNjYWxlWzJdICo9IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJd
LCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCisJCXJlc3Vs
dFsyXSA9IHNpZ25bMl0gKiBhdGFuX2NbMl0gLyBNX1BJICsgMC41OworCX0KKwllbHNlCisJewor
CQljWzJdID0gMS4wIC8gY1syXTsKKworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9y
IGF0YW4KKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDEpKSAvIGZs
b2F0KDEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBw
b3coY1syXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzJdICo9IC0xLjA7CisJCWF0
YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJ
c2NhbGVbMl0gKj0gLTEuMDsKKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZs
b2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFuX2NbMl0gKz0g
c2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCXNjYWxlWzJdICo9
IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgxMSkpIC8g
ZmxvYXQoMTEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCisJCXJlc3VsdFsyXSA9IHNpZ25bMl0g
KiAoTV9QSSAvIDIuMCAtIGF0YW5fY1syXSkgLyBNX1BJICsgMC41OworCX0KKworCWdsX0ZyYWdD
b2xvciA9IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMzX2Zy
YWdfeHZhcnl5dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzNfZnJhZ194dmFyeXl2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRiNTYwZTFkZjBkNWY2YjBjMzk5OGU0M2E5M2YzOTFiODBj
YzZhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMzX2ZyYWdfeHZh
cnl5dmFyeS5mcmFnCkBAIC0wLDAgKzEsMzcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgeCA9IDIu
MCAqIChjb2xvci5nZ2cgLSAwLjUpOworCXZlYzMgeSA9IDIuMCAqIChjb2xvci5iYmIgLSAwLjUp
OworCWNvbnN0IGZsb2F0IGVwc2lsb24gPSAxLjBlLTQ7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgw
LjAsIDAuMCwgMC4wLCAxLjApOworCisJLy8gQXZvaWQgZXZhbHVhdGluZyBhdGFuKDAsIHgpIGZv
ciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50CisJaWYo
eFswXSA+IGVwc2lsb24gfHwgYWJzKHlbMF0pID4gZXBzaWxvbikKKwl7CisJCWdsX0ZyYWdDb2xv
clswXSA9IGF0YW4oeVswXSwgeFswXSkgLyAoMi4wICogTV9QSSkgKyAwLjU7CisJfQorCisJaWYo
eFsxXSA+IGVwc2lsb24gfHwgYWJzKHlbMV0pID4gZXBzaWxvbikKKwl7CisJCWdsX0ZyYWdDb2xv
clsxXSA9IGF0YW4oeVsxXSwgeFsxXSkgLyAoMi4wICogTV9QSSkgKyAwLjU7CisJfQorCisJaWYo
eFsyXSA+IGVwc2lsb24gfHwgYWJzKHlbMl0pID4gZXBzaWxvbikKKwl7CisJCWdsX0ZyYWdDb2xv
clsyXSA9IGF0YW4oeVsyXSwgeFsyXSkgLyAoMi4wICogTV9QSSkgKyAwLjU7CisJfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzNfZnJhZ194dmFyeXl2YXJ5X3JlZi5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzNfZnJhZ194dmFyeXl2YXJ5X3JlZi5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2YjU1ZjRhMGNhZWE3NjljOWU1NmExYzQ5OWY1MGMwYzBlNTc1ZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjM19mcmFnX3h2YXJ5eXZhcnlfcmVmLmZy
YWcKQEAgLTAsMCArMSwxODYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZs
b2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgeCA9IDIuMCAqIChjb2xv
ci5nZ2cgLSAwLjUpOworCXZlYzMgeSA9IDIuMCAqIChjb2xvci5iYmIgLSAwLjUpOworCXZlYzMg
YzsKKwl2ZWMzIGF0YW5fYyA9IHZlYzMoMC4wKTsKKwl2ZWMzIHNjYWxlID0gdmVjMygxLjApOwor
CXZlYzMgc2lnbiA9IHZlYzMoMS4wKTsKKwl2ZWM0IHJlc3VsdCA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKKwljb25zdCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCisJLy8gQXZvaWQgZXZh
bHVhdGluZyBhdGFuKDAsIHgpIGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50
YXRpb24tZGVwZW5kZW50CisJaWYoeFswXSA+IGVwc2lsb24gfHwgYWJzKHlbMF0pID4gZXBzaWxv
bikKKwl7CisJCWlmKHhbMF0gPCAwLjAgXl4geVswXSA8IDAuMCkKKwkJeworCQkJc2lnblswXSA9
IC0xLjA7CisJCX0KKworCQlpZihhYnMoeVswXSkgPD0gYWJzKHhbMF0pKQorCQl7CisJCQljWzBd
ID0gYWJzKHlbMF0gLyB4WzBdKTsKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3Ig
YXRhbgorCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDEpKSAvIGZs
b2F0KDEpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAq
IHBvdyhjWzBdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJ
CQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNSkpIC8gZmxvYXQoNSk7
CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNb
MF0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5f
Y1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJCXNj
YWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxv
YXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisKKwkJCXJlc3VsdFsw
XSA9IHNpZ25bMF0gKiBhdGFuX2NbMF0gLyAoMi4wICogTV9QSSkgKyAwLjU7CisJCX0KKwkJZWxz
ZQorCQl7CisJCQljWzBdID0gYWJzKHhbMF0gLyB5WzBdKTsKKworCQkJLy8gVGF5bG9ycyBzZXJp
ZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1sw
XSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9j
WzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2Nh
bGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9h
dCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0g
c2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCQlzY2FsZVswXSAq
PSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDkpKSAv
IGZsb2F0KDkpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVsw
XSAqIHBvdyhjWzBdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQkJc2NhbGVbMF0gKj0gLTEu
MDsKKworCQkJcmVzdWx0WzBdID0gc2lnblswXSAqIChNX1BJIC8gMi4wIC0gYXRhbl9jWzBdKSAv
ICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCisJCWlmKHhbMF0gPCAwLjApCisJCQlpZih5WzBd
IDwgMC4wKSByZXN1bHRbMF0gLT0gMC41OworCQkJZWxzZSBpZih5WzBdID4gMC4wKSByZXN1bHRb
MF0gKz0gMC41OworCX0KKworCWlmKHhbMV0gPiBlcHNpbG9uIHx8IGFicyh5WzFdKSA+IGVwc2ls
b24pCisJeworCisJCWlmKHhbMV0gPCAwLjAgXl4geVsxXSA8IDAuMCkKKwkJeworCQkJc2lnblsx
XSA9IC0xLjA7CisJCX0KKworCQlpZihhYnMoeVsxXSkgPD0gYWJzKHhbMV0pKQorCQl7CisJCQlj
WzFdID0gYWJzKHlbMV0gLyB4WzFdKTsKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBm
b3IgYXRhbgorCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDEpKSAv
IGZsb2F0KDEpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsx
XSAqIHBvdyhjWzFdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7
CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNSkpIC8gZmxvYXQo
NSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93
KGNbMV0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0
YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJ
CXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwg
ZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisKKwkJCXJlc3Vs
dFsxXSA9IHNpZ25bMV0gKiBhdGFuX2NbMV0gLyAoMi4wICogTV9QSSkgKyAwLjU7CisJCX0KKwkJ
ZWxzZQorCQl7CisJCQljWzFdID0gYWJzKHhbMV0gLyB5WzFdKTsKKworCQkJLy8gVGF5bG9ycyBz
ZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3co
Y1sxXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRh
bl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQkJ
c2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBm
bG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0g
Kz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCQlzY2FsZVsx
XSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDkp
KSAvIGZsb2F0KDkpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2Fs
ZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQkJc2NhbGVbMV0gKj0g
LTEuMDsKKworCQkJcmVzdWx0WzFdID0gc2lnblsxXSAqIChNX1BJIC8gMi4wIC0gYXRhbl9jWzFd
KSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCisJCWlmKHhbMV0gPCAwLjApCisJCQlpZih5
WzFdIDwgMC4wKSByZXN1bHRbMV0gLT0gMC41OworCQkJZWxzZSBpZih5WzFdID4gMC4wKSByZXN1
bHRbMV0gKz0gMC41OworCX0KKworCWlmKHhbMl0gPiBlcHNpbG9uIHx8IGFicyh5WzJdKSA+IGVw
c2lsb24pCisJeworCisJCWlmKHhbMl0gPCAwLjAgXl4geVsyXSA8IDAuMCkKKwkJeworCQkJc2ln
blsyXSA9IC0xLjA7CisJCX0KKworCQlpZihhYnMoeVsyXSkgPD0gYWJzKHhbMl0pKQorCQl7CisJ
CQljWzJdID0gYWJzKHlbMl0gLyB4WzJdKTsKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lv
biBmb3IgYXRhbgorCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDEp
KSAvIGZsb2F0KDEpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJCWF0YW5fY1syXSArPSBzY2Fs
ZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzJdICo9IC0x
LjA7CisJCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoNSkpIC8gZmxv
YXQoNSk7CisJCQlzY2FsZVsyXSAqPSAtMS4wOworCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICog
cG93KGNbMl0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJ
CWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsK
KwkJCXNjYWxlWzJdICo9IC0xLjA7CisJCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1sy
XSwgZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJCXNjYWxlWzJdICo9IC0xLjA7CisKKwkJCXJl
c3VsdFsyXSA9IHNpZ25bMl0gKiBhdGFuX2NbMl0gLyAoMi4wICogTV9QSSkgKyAwLjU7CisJCX0K
KwkJZWxzZQorCQl7CisJCQljWzJdID0gYWJzKHhbMl0gLyB5WzJdKTsKKworCQkJLy8gVGF5bG9y
cyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBw
b3coY1syXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCQlzY2FsZVsyXSAqPSAtMS4wOworCQkJ
YXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOwor
CQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJd
LCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxlWzJdICo9IC0xLjA7CisJCQlhdGFuX2Nb
Ml0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCQlzY2Fs
ZVsyXSAqPSAtMS4wOworCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0
KDkpKSAvIGZsb2F0KDkpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJCWF0YW5fY1syXSArPSBz
Y2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQkJc2NhbGVbMl0g
Kj0gLTEuMDsKKworCQkJcmVzdWx0WzJdID0gc2lnblsyXSAqIChNX1BJIC8gMi4wIC0gYXRhbl9j
WzJdKSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCisJCWlmKHhbMl0gPCAwLjApCisJCQlp
Zih5WzJdIDwgMC4wKSByZXN1bHRbMl0gLT0gMC41OworCQkJZWxzZSBpZih5WzJdID4gMC4wKSBy
ZXN1bHRbMl0gKz0gMC41OworCX0KKworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2F0YW4vYXRhbl92ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2F0YW4vYXRhbl92ZWMzX3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjExZDA5NGQ2ZTdi
ODQwZDExNTAxNmRlMjc4NmQzMzk5YjEyZjFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXRhbi9hdGFuX3ZlYzNfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsK
Kwl2ZWMzIGMgPSA0LjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3IgPSB2
ZWM0KGF0YW4oYykgLyBNX1BJICsgMC41LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvYXRhbi9hdGFuX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4vYXRh
bl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI4MTFhMTAzNjMxMTU3ZTM1
MWMwNGQ2Nzg1NGQ1ZTYzZjYzNzU2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2F0YW4v
YXRhbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxNjEgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsK
Kwl2ZWMzIGMgPSA0LjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJdmVjMyBhdGFu
X2MgPSB2ZWMzKDAuMCk7CisJdmVjMyBzY2FsZSA9IHZlYzMoMS4wKTsKKwl2ZWMzIHNpZ24gPSB2
ZWMzKDEuMCk7CisJdmVjNCByZXN1bHQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisKKwlp
ZihjWzBdIDwgMC4wKQorCXsKKwkJc2lnblswXSA9IC0xLjA7CisJCWNbMF0gKj0gLTEuMDsKKwl9
CisKKwlpZihjWzBdIDw9IDEuMCkKKwl7CisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBm
b3IgYXRhbgorCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8g
ZmxvYXQoMSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAq
IHBvdyhjWzBdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJ
YXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOwor
CQlzY2FsZVswXSAqPSAtMS4wOworCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwg
ZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSAr
PSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJc2NhbGVbMF0g
Kj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDExKSkg
LyBmbG9hdCgxMSk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisKKwkJcmVzdWx0WzBdID0gc2lnblsw
XSAqIGF0YW5fY1swXSAvIE1fUEkgKyAwLjU7CisJfQorCWVsc2UKKwl7CisJCWNbMF0gPSAxLjAg
LyBjWzBdOworCisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRhbgorCQlhdGFu
X2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCXNj
YWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9h
dCgzKSkgLyBmbG9hdCgzKTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRhbl9jWzBdICs9IHNj
YWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQlzY2FsZVswXSAqPSAt
MS4wOworCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNykpIC8gZmxv
YXQoNyk7CisJCXNjYWxlWzBdICo9IC0xLjA7CisJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBv
dyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJYXRh
bl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJ
CXNjYWxlWzBdICo9IC0xLjA7CisKKwkJcmVzdWx0WzBdID0gc2lnblswXSAqIChNX1BJIC8gMi4w
IC0gYXRhbl9jWzBdKSAvIE1fUEkgKyAwLjU7CisJfQorCisKKwlpZihjWzFdIDwgMC4wKQorCXsK
KwkJc2lnblsxXSA9IC0xLjA7CisJCWNbMV0gKj0gLTEuMDsKKwl9CisKKwlpZihjWzFdIDw9IDEu
MCkKKwl7CisJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRhbgorCQlhdGFuX2Nb
MV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCXNjYWxl
WzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgz
KSkgLyBmbG9hdCgzKTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxl
WzFdICogcG93KGNbMV0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQlzY2FsZVsxXSAqPSAtMS4w
OworCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNykpIC8gZmxvYXQo
Nyk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhj
WzFdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9j
WzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCXNj
YWxlWzFdICo9IC0xLjA7CisKKwkJcmVzdWx0WzFdID0gc2lnblsxXSAqIGF0YW5fY1sxXSAvIE1f
UEkgKyAwLjU7CisJfQorCWVsc2UKKwl7CisJCWNbMV0gPSAxLjAgLyBjWzFdOworCisJCS8vIFRh
eWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRhbgorCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0g
KiBwb3coY1sxXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCXNjYWxlWzFdICo9IC0xLjA7CisJ
CWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsK
KwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0s
IGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQlzY2FsZVsxXSAqPSAtMS4wOworCQlhdGFuX2NbMV0g
Kz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCXNjYWxlWzFd
ICo9IC0xLjA7CisJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg5KSkg
LyBmbG9hdCg5KTsKKwkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJYXRhbl9jWzFdICs9IHNjYWxlWzFd
ICogcG93KGNbMV0sIGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCXNjYWxlWzFdICo9IC0xLjA7
CisKKwkJcmVzdWx0WzFdID0gc2lnblsxXSAqIChNX1BJIC8gMi4wIC0gYXRhbl9jWzFdKSAvIE1f
UEkgKyAwLjU7CisJfQorCisJaWYoY1syXSA8IDAuMCkKKwl7CisJCXNpZ25bMl0gPSAtMS4wOwor
CQljWzJdICo9IC0xLjA7CisJfQorCisJaWYoY1syXSA8PSAxLjApCisJeworCQkvLyBUYXlsb3Jz
IHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93
KGNbMl0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFu
X2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNj
YWxlWzJdICo9IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9h
dCg1KSkgLyBmbG9hdCg1KTsKKwkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJYXRhbl9jWzJdICs9IHNj
YWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsyXSAqPSAt
MS4wOworCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoOSkpIC8gZmxv
YXQoOSk7CisJCXNjYWxlWzJdICo9IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBv
dyhjWzJdLCBmbG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCisJ
CXJlc3VsdFsyXSA9IHNpZ25bMl0gKiBhdGFuX2NbMl0gLyBNX1BJICsgMC41OworCX0KKwllbHNl
CisJeworCQljWzJdID0gMS4wIC8gY1syXTsKKworCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNp
b24gZm9yIGF0YW4KKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDEp
KSAvIGZsb2F0KDEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFuX2NbMl0gKz0gc2NhbGVb
Ml0gKiBwb3coY1syXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCXNjYWxlWzJdICo9IC0xLjA7
CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCg1KSkgLyBmbG9hdCg1
KTsKKwkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNb
Ml0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCQlhdGFuX2Nb
Ml0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCXNjYWxl
WzJdICo9IC0xLjA7CisJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgx
MSkpIC8gZmxvYXQoMTEpOworCQlzY2FsZVsyXSAqPSAtMS4wOworCisJCXJlc3VsdFsyXSA9IHNp
Z25bMl0gKiAoTV9QSSAvIDIuMCAtIGF0YW5fY1syXSkgLyBNX1BJICsgMC41OworCX0KKworCWNv
bG9yID0gcmVzdWx0OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzNf
dmVydF94dmFyeXl2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2F0YW5fdmVjM192ZXJ0X3h2YXJ5
eXZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGQyY2NhNjNiMjJlODBkMWI0MzUyZmZjYjMxZWY0NWMz
ZjA0ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9hdGFuX3ZlYzNfdmVydF94
dmFyeXl2YXJ5LnZlcnQKQEAgLTAsMCArMSwzOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgeCA9IDIuMCAq
IChndGZfQ29sb3IuZ2dnIC0gMC41KTsKKwl2ZWMzIHkgPSAyLjAgKiAoZ3RmX0NvbG9yLmJiYiAt
IDAuNSk7CisJY29uc3QgZmxvYXQgZXBzaWxvbiA9IDEuMGUtNDsKKwljb2xvciA9IHZlYzQoMC4w
LCAwLjAsIDAuMCwgMS4wKTsKKworCS8vIEF2b2lkIGV2YWx1YXRpbmcgYXRhbigwLCB4KSBmb3Ig
eCA8IGVwc2lsb24gYmVjYXVzZSBpdCdzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudAorCWlmKHhb
MF0gPiBlcHNpbG9uIHx8IGFicyh5WzBdKSA+IGVwc2lsb24pCisJeworCQljb2xvclswXSA9IGF0
YW4oeVswXSwgeFswXSkgLyAoMi4wICogTV9QSSkgKyAwLjU7CisJfQorCisJaWYoeFsxXSA+IGVw
c2lsb24gfHwgYWJzKHlbMV0pID4gZXBzaWxvbikKKwl7CisJCWNvbG9yWzFdID0gYXRhbih5WzFd
LCB4WzFdKSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwl9CisKKwlpZih4WzJdID4gZXBzaWxvbiB8
fCBhYnMoeVsyXSkgPiBlcHNpbG9uKQorCXsKKwkJY29sb3JbMl0gPSBhdGFuKHlbMl0sIHhbMl0p
IC8gKDIuMCAqIE1fUEkpICsgMC41OworCX0KKworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YXRhbi9hdGFuX3ZlYzNfdmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYXRhbi9h
dGFuX3ZlYzNfdmVydF94dmFyeXl2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNDZkZWMxYWQ3
NDY0NTg5YWNmNWY3ZTNlOTFmMTZhNjUxODgyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9hdGFuL2F0YW5fdmVjM192ZXJ0X3h2YXJ5eXZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxODUg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjsKKwl2ZWMzIHggPSAyLjAgKiAoZ3RmX0NvbG9yLmdnZyAtIDAuNSk7CisJdmVj
MyB5ID0gMi4wICogKGd0Zl9Db2xvci5iYmIgLSAwLjUpOworCXZlYzMgYzsKKwl2ZWMzIGF0YW5f
YyA9IHZlYzMoMC4wKTsKKwl2ZWMzIHNjYWxlID0gdmVjMygxLjApOworCXZlYzMgc2lnbiA9IHZl
YzMoMS4wKTsKKwl2ZWM0IHJlc3VsdCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwljb25z
dCBmbG9hdCBlcHNpbG9uID0gMS4wZS00OworCisJLy8gQXZvaWQgZXZhbHVhdGluZyBhdGFuKDAs
IHgpIGZvciB4IDwgZXBzaWxvbiBiZWNhdXNlIGl0J3MgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50
CisJaWYoeFswXSA+IGVwc2lsb24gfHwgYWJzKHlbMF0pID4gZXBzaWxvbikKKwl7CisJCWlmKHhb
MF0gPCAwLjAgXl4geVswXSA8IDAuMCkKKwkJeworCQkJc2lnblswXSA9IC0xLjA7CisJCX0KKwor
CQlpZihhYnMoeVswXSkgPD0gYWJzKHhbMF0pKQorCQl7CisJCQljWzBdID0gYWJzKHlbMF0gLyB4
WzBdKTsKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3IgYXRhbgorCQkJYXRhbl9j
WzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDEpKSAvIGZsb2F0KDEpOworCQkJc2Nh
bGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9h
dCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0g
c2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoNSkpIC8gZmxvYXQoNSk7CisJCQlzY2FsZVswXSAq
PSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDcpKSAv
IGZsb2F0KDcpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVsw
XSAqIHBvdyhjWzBdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7
CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMTEpKSAvIGZsb2F0
KDExKTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisKKwkJCXJlc3VsdFswXSA9IHNpZ25bMF0gKiBh
dGFuX2NbMF0gLyAoMi4wICogTV9QSSkgKyAwLjU7CisJCX0KKwkJZWxzZQorCQl7CisJCQljWzBd
ID0gYWJzKHhbMF0gLyB5WzBdKTsKKworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZv
ciBhdGFuCisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3coY1swXSwgZmxvYXQoMSkpIC8g
ZmxvYXQoMSk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRhbl9jWzBdICs9IHNjYWxlWzBd
ICogcG93KGNbMF0sIGZsb2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsK
KwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBmbG9hdCg1KSkgLyBmbG9hdCg1
KTsKKwkJCXNjYWxlWzBdICo9IC0xLjA7CisJCQlhdGFuX2NbMF0gKz0gc2NhbGVbMF0gKiBwb3co
Y1swXSwgZmxvYXQoNykpIC8gZmxvYXQoNyk7CisJCQlzY2FsZVswXSAqPSAtMS4wOworCQkJYXRh
bl9jWzBdICs9IHNjYWxlWzBdICogcG93KGNbMF0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQkJ
c2NhbGVbMF0gKj0gLTEuMDsKKwkJCWF0YW5fY1swXSArPSBzY2FsZVswXSAqIHBvdyhjWzBdLCBm
bG9hdCgxMSkpIC8gZmxvYXQoMTEpOworCQkJc2NhbGVbMF0gKj0gLTEuMDsKKworCQkJcmVzdWx0
WzBdID0gc2lnblswXSAqIChNX1BJIC8gMi4wIC0gYXRhbl9jWzBdKSAvICgyLjAgKiBNX1BJKSAr
IDAuNTsKKwkJfQorCisJCWlmKHhbMF0gPCAwLjApCisJCQlpZih5WzBdIDwgMC4wKSByZXN1bHRb
MF0gLT0gMC41OworCQkJZWxzZSBpZih5WzBdID4gMC4wKSByZXN1bHRbMF0gKz0gMC41OworCX0K
KworCWlmKHhbMV0gPiBlcHNpbG9uIHx8IGFicyh5WzFdKSA+IGVwc2lsb24pCisJeworCQlpZih4
WzFdIDwgMC4wIF5eIHlbMV0gPCAwLjApCisJCXsKKwkJCXNpZ25bMV0gPSAtMS4wOworCQl9CisK
KwkJaWYoYWJzKHlbMV0pIDw9IGFicyh4WzFdKSkKKwkJeworCQkJY1sxXSA9IGFicyh5WzFdIC8g
eFsxXSk7CisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24gZm9yIGF0YW4KKwkJCWF0YW5f
Y1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCgxKSkgLyBmbG9hdCgxKTsKKwkJCXNj
YWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxv
YXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9
IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDUpKSAvIGZsb2F0KDUpOworCQkJc2NhbGVbMV0g
Kj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg3KSkg
LyBmbG9hdCg3KTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVb
MV0gKiBwb3coY1sxXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJCQlzY2FsZVsxXSAqPSAtMS4w
OworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDExKSkgLyBmbG9h
dCgxMSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCisJCQlyZXN1bHRbMV0gPSBzaWduWzFdICog
YXRhbl9jWzFdIC8gKDIuMCAqIE1fUEkpICsgMC41OworCQl9CisJCWVsc2UKKwkJeworCQkJY1sx
XSA9IGFicyh4WzFdIC8geVsxXSk7CisKKwkJCS8vIFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBm
b3IgYXRhbgorCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93KGNbMV0sIGZsb2F0KDEpKSAv
IGZsb2F0KDEpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0YW5fY1sxXSArPSBzY2FsZVsx
XSAqIHBvdyhjWzFdLCBmbG9hdCgzKSkgLyBmbG9hdCgzKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7
CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwgZmxvYXQoNSkpIC8gZmxvYXQo
NSk7CisJCQlzY2FsZVsxXSAqPSAtMS4wOworCQkJYXRhbl9jWzFdICs9IHNjYWxlWzFdICogcG93
KGNbMV0sIGZsb2F0KDcpKSAvIGZsb2F0KDcpOworCQkJc2NhbGVbMV0gKj0gLTEuMDsKKwkJCWF0
YW5fY1sxXSArPSBzY2FsZVsxXSAqIHBvdyhjWzFdLCBmbG9hdCg5KSkgLyBmbG9hdCg5KTsKKwkJ
CXNjYWxlWzFdICo9IC0xLjA7CisJCQlhdGFuX2NbMV0gKz0gc2NhbGVbMV0gKiBwb3coY1sxXSwg
ZmxvYXQoMTEpKSAvIGZsb2F0KDExKTsKKwkJCXNjYWxlWzFdICo9IC0xLjA7CisKKwkJCXJlc3Vs
dFsxXSA9IHNpZ25bMV0gKiAoTV9QSSAvIDIuMCAtIGF0YW5fY1sxXSkgLyAoMi4wICogTV9QSSkg
KyAwLjU7CisJCX0KKworCQlpZih4WzFdIDwgMC4wKQorCQkJaWYoeVsxXSA8IDAuMCkgcmVzdWx0
WzFdIC09IDAuNTsKKwkJCWVsc2UgaWYoeVsxXSA+IDAuMCkgcmVzdWx0WzFdICs9IDAuNTsKKwl9
CisKKwlpZih4WzJdID4gZXBzaWxvbiB8fCBhYnMoeVsyXSkgPiBlcHNpbG9uKQorCXsKKwkJaWYo
eFsyXSA8IDAuMCBeXiB5WzJdIDwgMC4wKQorCQl7CisJCQlzaWduWzJdID0gLTEuMDsKKwkJfQor
CisJCWlmKGFicyh5WzJdKSA8PSBhYnMoeFsyXSkpCisJCXsKKwkJCWNbMl0gPSBhYnMoeVsyXSAv
IHhbMl0pOworCQkJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBhdGFuCisJCQlhdGFu
X2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoMSkpIC8gZmxvYXQoMSk7CisJCQlz
Y2FsZVsyXSAqPSAtMS4wOworCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZs
b2F0KDMpKSAvIGZsb2F0KDMpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJCWF0YW5fY1syXSAr
PSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCg1KSkgLyBmbG9hdCg1KTsKKwkJCXNjYWxlWzJd
ICo9IC0xLjA7CisJCQlhdGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoNykp
IC8gZmxvYXQoNyk7CisJCQlzY2FsZVsyXSAqPSAtMS4wOworCQkJYXRhbl9jWzJdICs9IHNjYWxl
WzJdICogcG93KGNbMl0sIGZsb2F0KDkpKSAvIGZsb2F0KDkpOworCQkJc2NhbGVbMl0gKj0gLTEu
MDsKKwkJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgxMSkpIC8gZmxv
YXQoMTEpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKworCQkJcmVzdWx0WzJdID0gc2lnblsyXSAq
IGF0YW5fY1syXSAvICgyLjAgKiBNX1BJKSArIDAuNTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNb
Ml0gPSBhYnMoeFsyXSAvIHlbMl0pOworCisJCQkvLyBUYXlsb3JzIHNlcmllcyBleHBhbnNpb24g
Zm9yIGF0YW4KKwkJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBvdyhjWzJdLCBmbG9hdCgxKSkg
LyBmbG9hdCgxKTsKKwkJCXNjYWxlWzJdICo9IC0xLjA7CisJCQlhdGFuX2NbMl0gKz0gc2NhbGVb
Ml0gKiBwb3coY1syXSwgZmxvYXQoMykpIC8gZmxvYXQoMyk7CisJCQlzY2FsZVsyXSAqPSAtMS4w
OworCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0sIGZsb2F0KDUpKSAvIGZsb2F0
KDUpOworCQkJc2NhbGVbMl0gKj0gLTEuMDsKKwkJCWF0YW5fY1syXSArPSBzY2FsZVsyXSAqIHBv
dyhjWzJdLCBmbG9hdCg3KSkgLyBmbG9hdCg3KTsKKwkJCXNjYWxlWzJdICo9IC0xLjA7CisJCQlh
dGFuX2NbMl0gKz0gc2NhbGVbMl0gKiBwb3coY1syXSwgZmxvYXQoOSkpIC8gZmxvYXQoOSk7CisJ
CQlzY2FsZVsyXSAqPSAtMS4wOworCQkJYXRhbl9jWzJdICs9IHNjYWxlWzJdICogcG93KGNbMl0s
IGZsb2F0KDExKSkgLyBmbG9hdCgxMSk7CisJCQlzY2FsZVsyXSAqPSAtMS4wOworCisJCQlyZXN1
bHRbMl0gPSBzaWduWzJdICogKE1fUEkgLyAyLjAgLSBhdGFuX2NbMl0pIC8gKDIuMCAqIE1fUEkp
ICsgMC41OworCQl9CisKKwkJaWYoeFsyXSA8IDAuMCkKKwkJCWlmKHlbMl0gPCAwLjApIHJlc3Vs
dFsyXSAtPSAwLjU7CisJCQllbHNlIGlmKHlbMl0gPiAwLjApIHJlc3VsdFsyXSArPSAwLjU7CisJ
fQorCisJY29sb3IgPSByZXN1bHQ7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2lu
cHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9hdGFuL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMz
MDVmMjExMTdlODcyZWY0Zjg3ZmY1OTEyOTI5NDQ3YWMzZThkMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2F0YW4vaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDMgQEAKKyMgdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2F0YW5fMDAxX3RvXzAwOC5odG1sCith
dGFuXzAwOV90b18wMTIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvYmlD
b25zdGFudHNfMDAxX3RvXzAwOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvYmlDb25zdGFu
dHNfMDAxX3RvXzAwOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMDdiZDBmMGMyMGFhZTJiM2EzODQzNDNm
OWQxYzU4MTk1NzlkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9i
aUNvbnN0YW50c18wMDFfdG9fMDA4Lmh0bWwKQEAgLTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5j
ZSB0ZXN0OiBiaUNvbnN0YW50c18wMDFfdG9fMDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
IC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9v
Z2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUw
MCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIu
cnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImdsX01heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdsX01heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
InVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQi
OiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFs
dWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0
ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZ2xfTWF4Q29tYmluZWRUZXh0dXJl
SW1hZ2VVbml0c192ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ2xfTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0c192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
dW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6
IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1
ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3Rl
ZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfTWF4RHJhd0J1ZmZlcnNfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdsX01heERyYXdCdWZmZXJzX2ZyYWcudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0
IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZv
cm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogImdsX01heERyYXdCdWZmZXJzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJn
bF9NYXhEcmF3QnVmZmVyc192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yc19m
cmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ2xfTWF4RnJhZ21lbnRVbmlmb3Jt
VmVjdG9yc19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3Jz
X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJnbF9NYXhUZXh0dXJlSW1hZ2VVbml0c19mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAiZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHNfZnJhZy50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3Jp
ZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZ2xf
TWF4VGV4dHVyZUltYWdlVW5pdHNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImds
X01heFRleHR1cmVJbWFnZVVuaXRzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9i
aUNvbnN0YW50c18wMDlfdG9fMDE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9iaUNvbnN0
YW50c18wMDlfdG9fMDE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJlMTMzZGY0NGUxNjkwMmI4ZDkxM2Rl
OTI3MDI5N2RjNzY0MjE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRz
L2JpQ29uc3RhbnRzXzAwOV90b18wMTYuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0t
PgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1h
bmNlIHRlc3Q6IGJpQ29uc3RhbnRzXzAwOV90b18wMTYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
NTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5l
ci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfTWF4VmFyeWluZ1ZlY3RvcnNf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdsX01heFZhcnlpbmdWZWN0b3Jz
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImdsX01heFZhcnlpbmdWZWN0b3JzX3ZlcnQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJnbF9NYXhWYXJ5aW5nVmVjdG9yc192ZXJ0LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfTWF4VmVydGV4
QXR0cmlic19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ2xfTWF4VmVydGV4
QXR0cmlic19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJnbF9NYXhWZXJ0ZXhBdHRyaWJzX3ZlcnQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJnbF9NYXhWZXJ0ZXhBdHRyaWJzX3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJnbF9NYXhW
ZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAiZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZ2xfTWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImds
X01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJnbF9NYXhWZXJ0ZXhVbmlmb3Jt
VmVjdG9yc19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ2xfTWF4VmVydGV4
VW5pZm9ybVZlY3RvcnNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZ2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnNf
dmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdsX01heFZlcnRleFVuaWZvcm1WZWN0
b3JzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQor
ICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9nbF9NYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NzBmNTYwNWI5ZTBl
NjI4ZjYzOWNhYTg1N2JlMWU1ZTU0NzA3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9i
aUNvbnN0YW50cy9nbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzX2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwkvLyBUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIGlzIHNldCBhbmQgdGhh
dCBpdHMKKwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0g
dmFsdWUuCisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiA4LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAx
LjAgb3Igd2hpdGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChnbF9NYXhDb21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKSAvIDguMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0
YW50cy9nbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzX3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2JpQ29uc3RhbnRzL2dsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHNfdmVydC52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMwNDExYzhjNDg4M2UwMTY3YzY1MjE0YzU1NmQ5YjJlMGNhYThhMTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9nbF9NYXhDb21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzX3ZlcnQudmVydApAQCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyBpcyBzZXQgYW5kIHRoYXQgaXRzCisJ
Ly8gdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLgor
CS8vIFZhbHVlcyBncmVhdGVyIHRoYW4gOC4wIHdpbGwgZ2V0IGNsYW1wZWQgdG8gMS4wIG9yIHdo
aXRlLgorCWNvbG9yID0gdmVjNChmbG9hdChnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KSAvIDguMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01h
eERyYXdCdWZmZXJzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heERyYXdC
dWZmZXJzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDA5ZGExMTM1ODY4MmRlN2M0ODEzYzgzYjQ5
NjE4YzZiZmJlNzEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xf
TWF4RHJhd0J1ZmZlcnNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heERyYXdCdWZmZXJz
IGlzIHNldCBhbmQgdGhhdCBpdHMKKwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gdGhlIG1pbmltdW0gdmFsdWUuCisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiAxLjAgd2lsbCBn
ZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChn
bF9NYXhEcmF3QnVmZmVycykgLyAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25z
dGFudHMvZ2xfTWF4RHJhd0J1ZmZlcnNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMv
Z2xfTWF4RHJhd0J1ZmZlcnNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3Y2Q0MjY1NzI4MDM1YjM5
NDYyNzMzM2Y0OTk1YjI3NWI4N2UwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNv
bnN0YW50cy9nbF9NYXhEcmF3QnVmZmVyc192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCS8vIFRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heERyYXdCdWZmZXJzIGlzIHNldCBhbmQgdGhhdCBpdHMK
KwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUu
CisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiAxLjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Ig
d2hpdGUuCisJY29sb3IgPSB2ZWM0KGZsb2F0KGdsX01heERyYXdCdWZmZXJzKSAvIDEuMCk7CisK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heEZyYWdtZW50VW5p
Zm9ybVZlY3RvcnNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4RnJhZ21l
bnRVbmlmb3JtVmVjdG9yc19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmNjRhNWEyM2U2NGY3NTI0
OGVjYTdjZjg4Yzk1YmRlZTY2ZGU5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29u
c3RhbnRzL2dsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnNfZnJhZy5mcmFnCkBAIC0wLDAgKzEs
MjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IGdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgaXMgc2V0IGFuZCB0aGF0IGl0cworCS8v
IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4KKwkv
LyBWYWx1ZXMgZ3JlYXRlciB0aGFuIDE2LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hp
dGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0
b3JzKSAvIDE2LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4
RnJhZ21lbnRVbmlmb3JtVmVjdG9yc192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9n
bF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTM3MWU5
MTA1ZDZmZWI1ZmI3MjhlNjA1YTk1Y2U0NzlmMGQ3ZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yc192ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heEZyYWdtZW50VW5p
Zm9ybVZlY3RvcnMgaXMgc2V0IGFuZCB0aGF0IGl0cworCS8vIHZhbHVlIGlzIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4KKwkvLyBWYWx1ZXMgZ3JlYXRlciB0aGFu
IDE2LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUuCisJY29sb3IgPSB2ZWM0KGZs
b2F0KGdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpIC8gMTYuMCk7CisKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFRleHR1cmVJbWFnZVVuaXRzX2ZyYWcu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFRleHR1cmVJbWFnZVVuaXRzX2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOTIzZDVmYWFhYTBiMTY4YTIzNThiZTZmNmI0Y2E5ZDgwZjk3MGM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VGV4dHVyZUlt
YWdlVW5pdHNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heFRleHR1cmVJbWFnZVVuaXRz
IGlzIHNldCBhbmQgdGhhdCBpdHMKKwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gdGhlIG1pbmltdW0gdmFsdWUuCisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiA4LjAgd2lsbCBn
ZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChn
bF9NYXhUZXh0dXJlSW1hZ2VVbml0cykgLyA4LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YmlDb25zdGFudHMvZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHNfdmVydC52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
YmlDb25zdGFudHMvZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3NzgyMWUxNjA4ODM2YjRiOGE5YjUyOGQ3OWMwMGZlZTU0NjZkODUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9nbF9NYXhUZXh0dXJlSW1hZ2VVbml0c192ZXJ0LnZl
cnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heFRleHR1cmVJ
bWFnZVVuaXRzIGlzIHNldCBhbmQgdGhhdCBpdHMKKwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUuCisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiA4
LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUuCisJY29sb3IgPSB2ZWM0KGZsb2F0
KGdsX01heFRleHR1cmVJbWFnZVVuaXRzKSAvIDguMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZhcnlpbmdWZWN0b3JzX2ZyYWcuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2JpQ29uc3RhbnRzL2dsX01heFZhcnlpbmdWZWN0b3JzX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kOGFjYmM0NjJlYjlhMTkwMTAzZDUxMGVjNGE5NzJlODY1NGE2OTRhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VmFyeWluZ1ZlY3RvcnNfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCS8vIFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGdsX01heFZhcnlpbmdWZWN0b3JzIGlzIHNldCBhbmQgdGhhdCBpdHMK
KwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUu
CisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiA4LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Ig
d2hpdGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChnbF9NYXhWYXJ5aW5nVmVjdG9ycykg
LyA4LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VmFyeWlu
Z1ZlY3RvcnNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VmFyeWluZ1Zl
Y3RvcnNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MmUxMzhmZjQ1YzcwNGZlZTc1NWFkYWVjMWYy
NTYzZTFjNzFhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9nbF9N
YXhWYXJ5aW5nVmVjdG9yc192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCS8vIFRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IGdsX01heFZhcnlpbmdWZWN0b3JzIGlzIHNldCBhbmQgdGhhdCBpdHMKKwkvLyB2
YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUuCisJLy8g
VmFsdWVzIGdyZWF0ZXIgdGhhbiA4LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUu
CisJY29sb3IgPSB2ZWM0KGZsb2F0KGdsX01heFZhcnlpbmdWZWN0b3JzKSAvIDguMCk7CisKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZlcnRleEF0dHJpYnNf
ZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VmVydGV4QXR0cmlic19mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjBiNWUyMTI0OGUxNDAxNGFiMDY3NzJhYWYzZGVmOTYzM2FhYTAy
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZlcnRleEF0
dHJpYnNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdsX01heFZlcnRleEF0dHJpYnMgaXMgc2V0
IGFuZCB0aGF0IGl0cworCS8vIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg
bWluaW11bSB2YWx1ZS4KKwkvLyBWYWx1ZXMgZ3JlYXRlciB0aGFuIDguMCB3aWxsIGdldCBjbGFt
cGVkIHRvIDEuMCBvciB3aGl0ZS4KKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGZsb2F0KGdsX01heFZl
cnRleEF0dHJpYnMpIC8gOC4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRz
L2dsX01heFZlcnRleEF0dHJpYnNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xf
TWF4VmVydGV4QXR0cmlic192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJiNWY1ZTI5MGFlZWJiNGM3
YzVlMGJlZDgwNDY1ODEwNDkyYzk2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29u
c3RhbnRzL2dsX01heFZlcnRleEF0dHJpYnNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjEgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwkvLyBUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBnbF9NYXhWZXJ0ZXhBdHRyaWJzIGlzIHNldCBhbmQgdGhhdCBp
dHMKKwkvLyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFs
dWUuCisJLy8gVmFsdWVzIGdyZWF0ZXIgdGhhbiA4LjAgd2lsbCBnZXQgY2xhbXBlZCB0byAxLjAg
b3Igd2hpdGUuCisJY29sb3IgPSB2ZWM0KGZsb2F0KGdsX01heFZlcnRleEF0dHJpYnMpIC8gOC4w
KTsKKworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYmlDb25zdGFudHMvZ2xfTWF4
VmVydGV4VGV4dHVyZUltYWdlVW5pdHNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNmM5MzkyMGFi
MWMyZmY4YjVkYWJjNjJlNzdmYjQ1MGU0MWU3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9iaUNvbnN0YW50cy9nbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c19mcmFnLmZyYWcKQEAg
LTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJLy8gVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgaXMgc2V0IGFuZCB0aGF0
IGl0cworCS8vIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2
YWx1ZS4KKwlpZihnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA+PSAwKQorCQlnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCk7CisJZWxzZQorCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9nbF9NYXhW
ZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9n
bF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMxMDM2
OWE4MmY3MzljNzdkYzJhZWM5N2UyZTBhZGZjMGE0NmE0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzX3ZlcnQudmVy
dApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZ2xfTWF4VmVydGV4VGV4
dHVyZUltYWdlVW5pdHMgaXMgc2V0IGFuZCB0aGF0IGl0cworCS8vIHZhbHVlIGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4KKwlpZihnbF9NYXhWZXJ0ZXhUZXh0
dXJlSW1hZ2VVbml0cyA+PSAwKQorCQljb2xvciA9IHZlYzQoMS4wKTsKKwllbHNlCisJCWNvbG9y
ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9iaUNvbnN0YW50cy9nbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9yc19mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9iaUNvbnN0YW50cy9nbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9yc19mcmFnLmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2Y5ZTQwNTVkYjQyMzU3ZmU5MDQwMzM0ODgxMjJhYThjOWEwMDY5NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZlcnRleFVuaWZvcm1WZWN0
b3JzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwkvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyBp
cyBzZXQgYW5kIHRoYXQgaXRzCisJLy8gdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
IHRoZSBtaW5pbXVtIHZhbHVlLgorCS8vIFZhbHVlcyBncmVhdGVyIHRoYW4gMTI4LjAgd2lsbCBn
ZXQgY2xhbXBlZCB0byAxLjAgb3Igd2hpdGUuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChn
bF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycykgLyAxMjguMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9iaUNvbnN0YW50cy9nbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9yc192ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9iaUNvbnN0YW50cy9nbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9yc192ZXJ0LnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2NjNmZlMDQxZjY2OGYzMTY2M2RhZGQ4MjI4NzEyMzZmYTZiNjI0ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2dsX01heFZlcnRleFVuaWZvcm1W
ZWN0b3JzX3ZlcnQudmVydApAQCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
Z2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgaXMgc2V0IGFuZCB0aGF0IGl0cworCS8vIHZhbHVl
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4KKwkvLyBWYWx1
ZXMgZ3JlYXRlciB0aGFuIDEyOC4wIHdpbGwgZ2V0IGNsYW1wZWQgdG8gMS4wIG9yIHdoaXRlLgor
CWNvbG9yID0gdmVjNChmbG9hdChnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycykgLyAxMjguMCk7
CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpQ29uc3RhbnRzL2lucHV0LnJ1bi50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9iaUNvbnN0YW50cy9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YzQwM2Ix
YTUxZDIyMWUxODhjOTc3NTJkNDYzNmExZjIzMTkwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9iaUNvbnN0YW50cy9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMyBAQAorIyB0aGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorYmlDb25zdGFudHNfMDAxX3RvXzAw
OC5odG1sCitiaUNvbnN0YW50c18wMDlfdG9fMDE2Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2JpdURlcHRoUmFuZ2UvRGVwdGhSYW5nZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaXVEZXB0aFJh
bmdlL0RlcHRoUmFuZ2VfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZGE2MDY0NTU1NmY3MDZlM2Rm
NzJmYWM1YmEyYzAwZmRhNDVmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaXVEZXB0
aFJhbmdlL0RlcHRoUmFuZ2VfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTYgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKwordm9pZCBtYWluKHZvaWQpCit7CisJZ2xfRnJh
Z0NvbG9yID0gdmVjNChnbF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFuZ2UuZmFyLCBnbF9E
ZXB0aFJhbmdlLmRpZmYsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaXVEZXB0aFJh
bmdlL0RlcHRoUmFuZ2VfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYml1RGVwdGhSYW5nZS9EZXB0aFJh
bmdlX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDk1NzExZjFkMDFhNWM5NDYyMWI0NDhhOGNhODJh
MmE2MWEwZjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYml1RGVwdGhSYW5nZS9EZXB0
aFJhbmdlX3ZlcnQudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0ICBj
b2xvcjsKKwordm9pZCBtYWluKHZvaWQpCit7CisJY29sb3IgPSB2ZWM0KGdsX0RlcHRoUmFuZ2Uu
bmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIsIGdsX0RlcHRoUmFuZ2UuZGlmZiwgMS4wKTsKKworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYml1RGVwdGhSYW5nZS9iaXVEZXB0aFJhbmdlXzAwMV90
b18wMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2JpdURlcHRoUmFuZ2UvYml1RGVwdGhSYW5nZV8wMDFfdG9f
MDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg0MDBlZTcwNDdiMDNiODBiZThjMzY5YjM3YWI1MzU3NGU2
YTE0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2JpdURlcHRoUmFuZ2UvYml1RGVwdGhS
YW5nZV8wMDFfdG9fMDAyLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0
OiBiaXVEZXB0aFJhbmdlXzAwMV90b18wMDIuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVz
LXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBo
ZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4o
eworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
dW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6
IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1
ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC43NSwKKyAgICAgICAg
ICAgICAgMC41LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiRGVwdGhSYW5nZV9mcmFnLnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJEZXB0aFJhbmdlX2ZyYWcuZnJhZyIsCisgICAgICAg
ICJidWlsdGluX3VuaWZvcm1zIjogeworICAgICAgICAgICJtaW5fcmVxdWlyZWQiOiAyLAorICAg
ICAgICAgICJ2YWxpZF92YWx1ZXMiOiBbCisgICAgICAgICAgICAiZ2xfRGVwdGhSYW5nZS5uZWFy
IiwKKyAgICAgICAgICAgICJnbF9EZXB0aFJhbmdlLmZhciIsCisgICAgICAgICAgICAiZ2xfRGVw
dGhSYW5nZS5kaWZmIgorICAgICAgICAgIF0sCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAi
c3RhdGUiOiB7CisgICAgICAgICJkZXB0aHJhbmdlIjogeworICAgICAgICAgICJmYXIiOiAiMC43
NSIsCisgICAgICAgICAgIm5lYXIiOiAiMC4yNSIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDAuNzUsCisg
ICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIkRlcHRoUmFuZ2VfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiRGVwdGhSYW5nZV92ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciLAor
ICAgICAgICAiYnVpbHRpbl91bmlmb3JtcyI6IHsKKyAgICAgICAgICAibWluX3JlcXVpcmVkIjog
MiwKKyAgICAgICAgICAidmFsaWRfdmFsdWVzIjogWworICAgICAgICAgICAgImdsX0RlcHRoUmFu
Z2UubmVhciIsCisgICAgICAgICAgICAiZ2xfRGVwdGhSYW5nZS5mYXIiLAorICAgICAgICAgICAg
ImdsX0RlcHRoUmFuZ2UuZGlmZiIKKyAgICAgICAgICBdCisgICAgICAgIH0KKyAgICAgIH0sCisg
ICAgICAic3RhdGUiOiB7CisgICAgICAgICJkZXB0aHJhbmdlIjogeworICAgICAgICAgICJmYXIi
OiAiMC43NSIsCisgICAgICAgICAgIm5lYXIiOiAiMC4yNSIKKyAgICAgICAgfQorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Yml1RGVwdGhSYW5nZS9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYml1RGVwdGhSYW5nZS9pbnB1
dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjJmZDJlMTllOTI1OGMyYjU4NjY5ZDAzNTFlYzJmNTc5
ZWE5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9iaXVEZXB0aFJhbmdlL2lucHV0LnJ1
bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuCitiaXVEZXB0aFJhbmdlXzAwMV90b18wMDIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvYnVpbHRfaW5fdmFyeWluZ19hcnJheV9vdXRfb2ZfYm91bmRzL2J1aWx0X2luX3Zhcnlp
bmdfYXJyYXlfb3V0X29mX2JvdW5kc18wMDFfdG9fMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9idWlsdF9p
bl92YXJ5aW5nX2FycmF5X291dF9vZl9ib3VuZHMvYnVpbHRfaW5fdmFyeWluZ19hcnJheV9vdXRf
b2ZfYm91bmRzXzAwMV90b18wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDc3YzAwZGRkODZiOTk4ZjUx
NjkyMTQwMWZmMTRjOTI0OWNhNDdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYnVpbHRf
aW5fdmFyeWluZ19hcnJheV9vdXRfb2ZfYm91bmRzL2J1aWx0X2luX3ZhcnlpbmdfYXJyYXlfb3V0
X29mX2JvdW5kc18wMDFfdG9fMDAxLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNl
IHRlc3Q6IGJ1aWx0X2luX3ZhcnlpbmdfYXJyYXlfb3V0X29mX2JvdW5kc18wMDFfdG9fMDAxLmh0
bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZw
eDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAg
ICJwYXR0ZXJuIjogImJ1aWxkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJnbF9Db2xvcl9hcnJheV9pbmRleF9vdXRfb2ZfYm91bmRzX2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJnbF9Db2xvcl9hcnJheV9pbmRleF9vdXRfb2ZfYm91
bmRzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJsaW5rc3RhdCI6IGZhbHNlLAorICAgICAgImNv
bXBzdGF0IjogZmFsc2UKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2J1aWx0X2lu
X3ZhcnlpbmdfYXJyYXlfb3V0X29mX2JvdW5kcy9nbF9Db2xvcl9hcnJheV9pbmRleF9vdXRfb2Zf
Ym91bmRzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2J1aWx0X2luX3ZhcnlpbmdfYXJyYXlfb3V0X29m
X2JvdW5kcy9nbF9Db2xvcl9hcnJheV9pbmRleF9vdXRfb2ZfYm91bmRzX2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMTFhYzRiNTU5MGMxMGZjZGYwMTFkM2YwNDI4ZmI3MTY2MDA2YjM4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvYnVpbHRfaW5fdmFyeWluZ19hcnJheV9vdXRfb2ZfYm91bmRz
L2dsX0NvbG9yX2FycmF5X2luZGV4X291dF9vZl9ib3VuZHNfZnJhZy5mcmFnCkBAIC0wLDAgKzEs
MTYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKK3ZvaWQgbWFpbih2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3Jb
MV0sIGNvbG9yWzJdLCBjb2xvclszXSwgY29sb3JbNF0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvYnVpbHRfaW5fdmFyeWluZ19hcnJheV9vdXRfb2ZfYm91bmRzL2lucHV0LnJ1bi50eHQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9idWlsdF9pbl92YXJ5aW5nX2FycmF5X291dF9vZl9ib3VuZHMvaW5wdXQucnVuLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZTY0ODVhMWYzZjk1YTA3NzdjNTU2ODU0NTQ5MTMwNDI1OTk5YWZhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvYnVpbHRfaW5fdmFyeWluZ19hcnJheV9vdXRfb2Zf
Ym91bmRzL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitidWlsdF9pbl92YXJ5aW5nX2FycmF5X291dF9vZl9i
b3VuZHNfMDAxX3RvXzAwMS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfMDAx
X3RvXzAwNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9jZWlsXzAwMV90b18wMDYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YjYzZTA3ODliZjI2NmIyMjRhMjU3NGJiNDUzZmU2NmVlNmRjZjhlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9jZWlsXzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsxLDEw
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4g
RE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGNlaWxfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNU
ZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjZWlsX2Zsb2F0X2ZyYWdfeHZhcnlfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjZWlsX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJjZWlsX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjZWlsX3ZlYzJfZnJhZ194
dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImNlaWxfdmVjMl9mcmFnX3h2YXJ5
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY2VpbF92ZWMyX2ZyYWdfeHZhcnkudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjZWlsX3ZlYzNf
ZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImNlaWxfdmVjM19mcmFn
X3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY2VpbF92ZWMzX2ZyYWdfeHZh
cnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJj
ZWlsX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImNl
aWxfZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImNlaWxfZmxv
YXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImNlaWxfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJjZWlsX3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImNlaWxfdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiY2VpbF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImNlaWxfdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiY2VpbF92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxf
ZmxvYXRfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9jZWlsX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNThiNzQ2NGQ2Y2NhNDBlNzcyYmNiYTM3YmY3YWFlYTgyZWQw
MTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9jZWlsX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9h
dCBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KChjZWlsKGMpICsgMTAuMCkgLyAyMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2NlaWwvY2VpbF9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Y2VpbC9jZWlsX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM0YjgwYWE0
ZmMzNWVhOTY3MzcyN2FiNjBkYzM2NTIzZDc2YjNiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2NlaWwvY2VpbF9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjQgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworZmxvYXQgY2VpbF9yZWYoZmxvYXQgeCkKK3sKKwlpZih4ICE9IGZsb29yKHgpKSB4ID0g
Zmxvb3IoeCkgKyAxLjA7CisJcmV0dXJuIHg7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlm
bG9hdCBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KChjZWlsX3JlZihjKSArIDEwLjApIC8gMjAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfZmxvYXRfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvY2VpbC9jZWlsX2Zsb2F0X3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGNiODdjZGQx
YjVjYjJmNjdmOGVmZDRlZmY5OWNjM2FlMTBjNDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvY2VpbC9jZWlsX2Zsb2F0X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAw
LjUpOworCWNvbG9yID0gdmVjNCgoY2VpbChjKSArIDEwLjApIC8gMjAuMCwgMC4wLCAwLjAsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfZmxvYXRfdmVydF94dmFy
eV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2OTI2ZDZhNGIzZWQwMTQyMWYyMGY1ZjMwNmM0MzZkN2FjYjQ0ZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfZmxvYXRfdmVydF94dmFyeV9yZWYu
dmVydApAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCitmbG9hdCBjZWlsX3JlZihmbG9hdCB4KQoreworCWlmKHgg
IT0gZmxvb3IoeCkpIHggPSBmbG9vcih4KSArIDEuMDsKKwlyZXR1cm4geDsKK30KKwordm9pZCBt
YWluICh2b2lkKQoreworCWZsb2F0IGMgPSAxMC4wICogMi4wICogKGd0Zl9Db2xvci5yIC0gMC41
KTsKKwljb2xvciA9IHZlYzQoKGNlaWxfcmVmKGMpICsgMTAuMCkgLyAyMC4wLCAwLjAsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92ZWMyX2ZyYWdfeHZh
cnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNzQ2MzQ4MTE0ODhiMTNkYmM2YzRlMzI2MDAyZDA5N2FlOTRkNTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9jZWlsX3ZlYzJfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAg
KzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDEwLjAgKiAyLjAg
KiAoY29sb3IucmcgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKGNlaWwoYykgKyAxMC4w
KSAvIDIwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92
ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfdmVjMl9mcmFnX3h2
YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMzc5NzFkYmUxOTcyNWM4ZGQ5MTA0ZmQwYThkYjU3
NTU4MmRjMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfdmVjMl9mcmFn
X3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordmVjMiBjZWlsX3JlZih2ZWMy
IHgpCit7CisJaWYoeFswXSAhPSBmbG9vcih4WzBdKSkgeFswXSA9IGZsb29yKHhbMF0pICsgMS4w
OworCWlmKHhbMV0gIT0gZmxvb3IoeFsxXSkpIHhbMV0gPSBmbG9vcih4WzFdKSArIDEuMDsKKwly
ZXR1cm4geDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDEwLjAgKiAyLjAg
KiAoY29sb3IucmcgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKGNlaWxfcmVmKGMpICsg
MTAuMCkgLyAyMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2Nl
aWxfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfdmVjMl92ZXJ0X3h2
YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM1YTc3Mzc3OTRiODE4ZTM1OTk0NGNmMDNhNTVlYjVmOGNl
NDAxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92ZWMyX3ZlcnRfeHZh
cnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
MTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCWNvbG9yID0gdmVjNCgoY2VpbChj
KSArIDEwLjApIC8gMjAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Y2VpbC9jZWlsX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92
ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc5ZDE4YTZhMGE0MTFhZWFkNjRk
YmVjODNlOTgyYTBmYzk4ZjEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2Vp
bF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwyNiBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordmVjMiBjZWlsX3Jl
Zih2ZWMyIHgpCit7CisJaWYoeFswXSAhPSBmbG9vcih4WzBdKSkgeFswXSA9IGZsb29yKHhbMF0p
ICsgMS4wOworCWlmKHhbMV0gIT0gZmxvb3IoeFsxXSkpIHhbMV0gPSBmbG9vcih4WzFdKSArIDEu
MDsKKwlyZXR1cm4geDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDEwLjAg
KiAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwljb2xvciA9IHZlYzQoKGNlaWxfcmVmKGMp
ICsgMTAuMCkgLyAyMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
ZWlsL2NlaWxfdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfdmVjM19m
cmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc1OTc2MTlkOGJkOWRmNDQ1ZGM2YThmMWZkNTg5
MGRhOTcxZTU0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92ZWMzX2Zy
YWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWMzIGMgPSAxMC4wICogMi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgoY2VpbChjKSArIDEwLjApIC8gMjAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2NlaWwvY2VpbF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWls
L2NlaWxfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzOGM3MzVhNzM5NTNj
ZjFlMmU5NTNkNjJkY2ZiOWEwNTFjNGVmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
ZWlsL2NlaWxfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjYgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dmVjMyBjZWlsX3JlZih2ZWMzIHgpCit7CisJaWYoeFswXSAhPSBmbG9vcih4WzBdKSkgeFswXSA9
IGZsb29yKHhbMF0pICsgMS4wOworCWlmKHhbMV0gIT0gZmxvb3IoeFsxXSkpIHhbMV0gPSBmbG9v
cih4WzFdKSArIDEuMDsKKwlpZih4WzJdICE9IGZsb29yKHhbMl0pKSB4WzJdID0gZmxvb3IoeFsy
XSkgKyAxLjA7CisJcmV0dXJuIHg7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMg
PSAxMC4wICogMi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgo
Y2VpbF9yZWYoYykgKyAxMC4wKSAvIDIwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9jZWlsL2NlaWxfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jZWlsL2NlaWxfdmVj
M192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMwNGI0MTc4MjY4MGJlZmRlYzVjODQwMjdl
NTY2MTcxMTViNDMxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvY2VpbF92ZWMz
X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMyBjID0gMTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZl
YzQoKGNlaWwoYykgKyAxMC4wKSAvIDIwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9jZWlsL2NlaWxfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2VpbC9j
ZWlsX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGE4ZmNkODU5ODJlMWI1
MTMyYThiZDYxMjljZjE2MmM3MDNjNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2Vp
bC9jZWlsX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDI3IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2ZWMzIGNl
aWxfcmVmKHZlYzMgeCkKK3sKKwlpZih4WzBdICE9IGZsb29yKHhbMF0pKSB4WzBdID0gZmxvb3Io
eFswXSkgKyAxLjA7CisJaWYoeFsxXSAhPSBmbG9vcih4WzFdKSkgeFsxXSA9IGZsb29yKHhbMV0p
ICsgMS4wOworCWlmKHhbMl0gIT0gZmxvb3IoeFsyXSkpIHhbMl0gPSBmbG9vcih4WzJdKSArIDEu
MDsKKwlyZXR1cm4geDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDEwLjAg
KiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KChjZWlsX3JlZihj
KSArIDEwLjApIC8gMjAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwv
aW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NlaWwvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZDFhODdmZmFkZGIzZWVmMTU5NGQ2MzBlZDUwMjFmMjBjNmY3YTY2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvY2VpbC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorY2VpbF8wMDFfdG9fMDA2Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wXzAwMV90b18wMDYuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2NsYW1wL2NsYW1wXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTdhMDI3YzA5MGY1
MDVhYjVhNTcyNjRjYTIxZDU1MWM2MmU4YWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Y2xhbXAvY2xhbXBfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFu
Y2UgdGVzdDogY2xhbXBfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMt
dGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhl
aWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7
CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJjbGFtcF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjbGFtcF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25z
dHF1YXJ0ZXIuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJjbGFtcF9mbG9hdF9mcmFn
X3h2YXJ5X3ljb25zdHF1YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJjbGFtcF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0cXVhcnRlcl9yZWYuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogImNsYW1wX3ZlYzJfZnJhZ194dmFyeV95Y29uc3RxdWFy
dGVyLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY2xhbXBfdmVjMl9mcmFnX3h2YXJ5
X3ljb25zdHF1YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJjbGFtcF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0cXVhcnRlcl9yZWYuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogImNsYW1wX3ZlYzNfZnJhZ194dmFyeV95Y29uc3RxdWFydGVyLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY2xhbXBfdmVjM19mcmFnX3h2YXJ5X3ljb25z
dHF1YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJjbGFtcF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogImNsYW1wX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0cXVhcnRlci52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImNsYW1wX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0
cXVhcnRlci50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogImNsYW1wX3ZlYzJfdmVydF94dmFyeV95Y29uc3RxdWFydGVyX3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJjbGFtcF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0cXVhcnRlci52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogImNsYW1wX3ZlYzJfdmVydF94dmFyeV95Y29uc3RxdWFy
dGVyLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Y2xhbXBfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogImNsYW1wX3ZlYzNfdmVydF94dmFyeV95Y29uc3RxdWFydGVyLnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiY2xhbXBfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXIu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0
ZXIuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0cXVh
cnRlci5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YzE2YTVhY2U4ZTgzMGZkYjVlM2VjOWYyMTVkNWVmM2Q5
NjhiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF9mbG9hdF9mcmFn
X3h2YXJ5X3ljb25zdHF1YXJ0ZXIuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtaW5fYyA9IDAuMjU7CisJY29uc3QgZmxvYXQgbWF4
X2MgPSAwLjc1OworCWZsb2F0IGMgPSBjb2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoY2xh
bXAoYywgbWluX2MsIG1heF9jKSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9jbGFtcC9jbGFtcF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVm
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmViYTYwNDMwMzVmOWY1YTU3MGEwN2UzODVmNmQxMGJlZTFjYTEw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX2Zsb2F0X2ZyYWdfeHZh
cnlfeWNvbnN0cXVhcnRlcl9yZWYuZnJhZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtaW5fYyA9IDAuMjU7CisJY29uc3QgZmxvYXQgbWF4
X2MgPSAwLjc1OworCWZsb2F0IGMgPSBjb2xvci5yOworCWlmKGMgPiBtYXhfYykgYyA9IG1heF9j
OworCWlmKGMgPCBtaW5fYykgYyA9IG1pbl9jOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAw
LjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX2Zsb2F0
X3ZlcnRfeHZhcnlfeWNvbnN0cXVhcnRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfZmxv
YXRfdmVydF94dmFyeV95Y29uc3RxdWFydGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiMTdmOGY0NWNk
MzRmMjgyODY1YjlmYWZmZmYyZWQ5M2ZjMDNiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2NsYW1wL2NsYW1wX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0cXVhcnRlci52ZXJ0CkBAIC0wLDAg
KzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtaW5fYyA9IDAuMjU7
CisJY29uc3QgZmxvYXQgbWF4X2MgPSAwLjc1OworCWZsb2F0IGMgPSBndGZfQ29sb3IucjsKKwlj
b2xvciA9IHZlYzQoY2xhbXAoYywgbWluX2MsIG1heF9jKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25z
dHF1YXJ0ZXJfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF9mbG9hdF92ZXJ0X3h2YXJ5
X3ljb25zdHF1YXJ0ZXJfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJhN2E4NmIxYzhkNmY1ZGVlNzc1
MzU3ZWZkZTU5NmY4MDQ1ODIwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2Ns
YW1wX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0cXVhcnRlcl9yZWYudmVydApAQCAtMCwwICsxLDI0
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgbWluX2MgPSAwLjI1OworCWNv
bnN0IGZsb2F0IG1heF9jID0gMC43NTsKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisJaWYoYyA+
IG1heF9jKSBjID0gbWF4X2M7CisJaWYoYyA8IG1pbl9jKSBjID0gbWluX2M7CisKKwljb2xvciA9
IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFt
cC9jbGFtcF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0cXVhcnRlci5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xh
bXAvY2xhbXBfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXIuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OGM0ZmE5MmI4ZTYzMjk1ZWViYmYyM2Q2NTJhZWNkY2MzZWQ2NTc4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXIuZnJh
ZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMy
IG1pbl9jID0gdmVjMigwLjI1LCAwLjI1KTsKKwljb25zdCB2ZWMyIG1heF9jID0gdmVjMigwLjc1
LCAwLjc1KTsKKwl2ZWMyIGMgPSBjb2xvci5yZzsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGNsYW1w
KGMsIG1pbl9jLCBtYXhfYyksIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Ns
YW1wL2NsYW1wX3ZlYzJfZnJhZ194dmFyeV95Y29uc3RxdWFydGVyX3JlZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvY2xhbXAvY2xhbXBfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmU0NDVkZmJjYmMxODU4MThkYmZjOGVmM2JhMjczNjNlOGM1YWIxNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzJfZnJhZ194dmFyeV95Y29uc3Rx
dWFydGVyX3JlZi5mcmFnCkBAIC0wLDAgKzEsMjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWNvbnN0IHZlYzIgbWluX2MgPSB2ZWMyKDAuMjUsIDAuMjUpOworCWNvbnN0IHZlYzIgbWF4
X2MgPSB2ZWMyKDAuNzUsIDAuNzUpOworCXZlYzIgYyA9IGNvbG9yLnJnOworCWlmKGNbMF0gPCBt
aW5fY1swXSkgY1swXSA9IG1pbl9jWzBdOworCWlmKGNbMV0gPCBtaW5fY1sxXSkgY1sxXSA9IG1p
bl9jWzFdOworCWlmKGNbMF0gPiBtYXhfY1swXSkgY1swXSA9IG1heF9jWzBdOworCWlmKGNbMV0g
PiBtYXhfY1sxXSkgY1sxXSA9IG1heF9jWzFdOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAw
LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF92ZWMyX3ZlcnRf
eHZhcnlfeWNvbnN0cXVhcnRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjMl92ZXJ0
X3h2YXJ5X3ljb25zdHF1YXJ0ZXIudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGUyNzE5MTY4MjM3NmUxYmYx
NDViZjAyMDkyMmQ0OTliNGNlZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xhbXAv
Y2xhbXBfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXIudmVydApAQCAtMCwwICsxLDIxIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgbWluX2MgPSAwLjI1OworCWNvbnN0
IGZsb2F0IG1heF9jID0gMC43NTsKKwl2ZWMyIGMgPSBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2
ZWM0KGNsYW1wKGMsIG1pbl9jLCBtYXhfYyksIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzJfdmVydF94dmFyeV95Y29uc3RxdWFydGVyX3JlZi52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXJf
cmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk4ZTQwMGQ0OTBmN2I3YzE4YTkwYWI3MWVlYmQxZjY0NGUy
ZDdiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzJfdmVydF94
dmFyeV95Y29uc3RxdWFydGVyX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjYgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwljb25zdCBmbG9hdCBtaW5fYyA9IDAuMjU7CisJY29uc3QgZmxvYXQgbWF4X2Mg
PSAwLjc1OworCXZlYzIgYyA9IGd0Zl9Db2xvci5yZzsKKwlpZihjWzBdID4gbWF4X2MpIGNbMF0g
PSBtYXhfYzsKKwlpZihjWzBdIDwgbWluX2MpIGNbMF0gPSBtaW5fYzsKKwlpZihjWzFdID4gbWF4
X2MpIGNbMV0gPSBtYXhfYzsKKwlpZihjWzFdIDwgbWluX2MpIGNbMV0gPSBtaW5fYzsKKworCWNv
bG9yID0gdmVjNChjLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFt
cC9jbGFtcF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0cXVhcnRlci5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xh
bXAvY2xhbXBfdmVjM19mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXIuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YjY3ZmVlN2NmMDA1NTIxM2UxNDJjYTIyMDdmNDBhZGYzYTI1YTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjM19mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXIuZnJh
ZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMz
IG1pbl9jID0gdmVjMygwLjI1LCAwLjI1LCAwLjI1KTsKKwljb25zdCB2ZWMzIG1heF9jID0gdmVj
MygwLjc1LCAwLjc1LCAwLjc1KTsKKwl2ZWMzIGMgPSBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChjbGFtcChjLCBtaW5fYywgbWF4X2MpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvY2xhbXAvY2xhbXBfdmVjM19mcmFnX3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9jbGFtcC9jbGFtcF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0cXVhcnRlcl9yZWYu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ODM0MWZjMDZhOTc4NmE2MTdkMDE1NTMzMjMzOWEyOTgyNWYwNWYy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjM19mcmFnX3h2YXJ5
X3ljb25zdHF1YXJ0ZXJfcmVmLmZyYWcKQEAgLTAsMCArMSwyNyBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgdmVjMyBtaW5fYyA9IHZlYzMoMC4yNSwgMC4yNSwgMC4yNSk7CisJ
Y29uc3QgdmVjMyBtYXhfYyA9IHZlYzMoMC43NSwgMC43NSwgMC43NSk7CisJdmVjMyBjID0gY29s
b3IucmdiOworCWlmKGNbMF0gPCBtaW5fY1swXSkgY1swXSA9IG1pbl9jWzBdOworCWlmKGNbMV0g
PCBtaW5fY1sxXSkgY1sxXSA9IG1pbl9jWzFdOworCWlmKGNbMl0gPCBtaW5fY1syXSkgY1syXSA9
IG1pbl9jWzJdOworCWlmKGNbMF0gPiBtYXhfY1swXSkgY1swXSA9IG1heF9jWzBdOworCWlmKGNb
MV0gPiBtYXhfY1sxXSkgY1sxXSA9IG1heF9jWzFdOworCWlmKGNbMl0gPiBtYXhfY1syXSkgY1sy
XSA9IG1heF9jWzJdOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xhbXBfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXIu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzNfdmVydF94dmFyeV95Y29uc3RxdWFydGVy
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDkwNTJlZDY0MzM4NDZhOTQxZGZhOGIyZGQzODMyY2MyYzY2N2Fi
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzNfdmVydF94dmFy
eV95Y29uc3RxdWFydGVyLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWNvbnN0IGZsb2F0IG1pbl9jID0gMC4yNTsKKwljb25zdCBmbG9hdCBtYXhfYyA9IDAuNzU7
CisJdmVjMyBjID0gZ3RmX0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQoY2xhbXAoYywgbWluX2Ms
IG1heF9jKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2NsYW1wX3Zl
YzNfdmVydF94dmFyeV95Y29uc3RxdWFydGVyX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY2xhbXAvY2xh
bXBfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdHF1YXJ0ZXJfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM1
NTk3ZTQ0OTFmNzMzMDM3MjQ2ZDgxNDUxMWU5NGYwYmI3MmMwOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2NsYW1wL2NsYW1wX3ZlYzNfdmVydF94dmFyeV95Y29uc3RxdWFydGVyX3JlZi52
ZXJ0CkBAIC0wLDAgKzEsMjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBt
aW5fYyA9IDAuMjU7CisJY29uc3QgZmxvYXQgbWF4X2MgPSAwLjc1OworCXZlYzMgYyA9IGd0Zl9D
b2xvci5yZ2I7CisJaWYoY1swXSA+IG1heF9jKSBjWzBdID0gbWF4X2M7CisJaWYoY1swXSA8IG1p
bl9jKSBjWzBdID0gbWluX2M7CisJaWYoY1sxXSA+IG1heF9jKSBjWzFdID0gbWF4X2M7CisJaWYo
Y1sxXSA8IG1pbl9jKSBjWzFdID0gbWluX2M7CisJaWYoY1syXSA+IG1heF9jKSBjWzJdID0gbWF4
X2M7CisJaWYoY1syXSA8IG1pbl9jKSBjWzJdID0gbWluX2M7CisKKwljb2xvciA9IHZlYzQoYywg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NsYW1wL2lucHV0LnJ1bi50eHQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9jbGFtcC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYWZhMjc1YTQ1YTRkYWQ2
Zjc3YzBiY2YwYjlkY2YzOWQzZTEwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jbGFt
cC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQuIERPIE5PVCBFRElULgorY2xhbXBfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9jb250cm9sX2Zsb3cvY29udHJvbF9mbG93XzAwMV90b18wMDguaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2NvbnRyb2xfZmxvdy9jb250cm9sX2Zsb3dfMDAxX3RvXzAwOC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyY2U1NTM5MzhkODY1ZDFlZjYyNDVlNTk0YTM4MjI5MzlhNzdiYTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9jb250cm9sX2Zsb3cvY29udHJvbF9mbG93XzAwMV90b18wMDguaHRtbApA
QCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGNvbnRyb2xfZmxvd18wMDFfdG9f
MDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0
aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImZvcl9icmVha19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZm9y
X2JyZWFrX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsK
KyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICJmb3JfYnJlYWtfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogImZvcl9icmVha192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZm9yX2NvbnRpbnVlX2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJmb3JfY29udGludWVfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImZvcl9jb250aW51
ZV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZm9yX2NvbnRpbnVlX3ZlcnQudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVz
dWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVu
aWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJmb3JfbmVzdGVkX2JyZWFrX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJm
b3JfbmVzdGVkX2JyZWFrX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmb3JfbmVzdGVkX2JyZWFrX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJmb3JfbmVzdGVkX2JyZWFrX3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJmb3JfbmVz
dGVkX2NvbnRpbnVlX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmb3JfbmVz
dGVkX2NvbnRpbnVlX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmb3JfbmVzdGVkX2NvbnRpbnVlX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJmb3JfbmVzdGVkX2NvbnRpbnVlX3ZlcnQudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9jb250cm9sX2Zsb3cvY29udHJvbF9mbG93XzAwOV90b18wMTAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2NvbnRyb2xfZmxvdy9jb250cm9sX2Zsb3dfMDA5X3RvXzAxMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhjMTViZjljNGQwOWQ3MGY2ODk4NDM3NTdlNTk5NGQwMTk0YzkxYTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9jb250cm9sX2Zsb3cvY29udHJvbF9mbG93XzAwOV90b18wMTAuaHRtbApA
QCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogY29udHJvbF9mbG93XzAwOV90b18w
MTAuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRo
OiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6
ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAibmVzdGVkX2lmX2Vsc2VfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im5lc3RlZF9pZl9lbHNlX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJuZXN0ZWRfaWZfZWxzZV92ZXJ0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAibmVzdGVkX2lmX2Vsc2VfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2NvbnRyb2xfZmxvdy9mb3JfYnJlYWtfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93
L2Zvcl9icmVha19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVmZWQzMGVhNzk4MTM1NDcxYTI5ZDZl
ODQxY2ZhZWVjZDYxNWU0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxv
dy9mb3JfYnJlYWtfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWludCBjb3VudCA9IDA7CisgICAgICAgIGZvcihpbnQgaT0wO2k8NTtpKyspCisJ
eworCSAgY291bnQrKzsKKwkgIGlmKGNvdW50ID09IDMpCisgICAgICAgICAgICBicmVhazsKKwl9
CisKKwlmbG9hdCBncmF5OworCWlmKCBjb3VudCA9PSAzKQorCWdyYXk9MS4wOworCWVsc2UgZ3Jh
eT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L2Zvcl9icmVha192ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9jb250cm9sX2Zsb3cvZm9yX2JyZWFrX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjVj
M2JmMzIzMzFkNGQxYTBhOWI0NmI3MDk3NDM1NWQ5ZmU3MjVmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvY29udHJvbF9mbG93L2Zvcl9icmVha192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyOCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWlu
dCBjb3VudCA9IDA7CisgICAgICAgIGZvcihpbnQgaT0wO2k8NDU7aSsrKQorCXsKKwkgIGNvdW50
Kys7CisJICBpZihjb3VudCA9PSAyOSkKKyAgICAgICAgICAgIGJyZWFrOworCX0KKwlmbG9hdCBn
cmF5OworCWlmKCBjb3VudCA9PSAyOSkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvY29udHJvbF9mbG93L2Zvcl9jb250aW51ZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb250
cm9sX2Zsb3cvZm9yX2NvbnRpbnVlX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTlkODRkZjMzYWZj
Y2Y4MzE4ZDQzZTA0ZTI2ZmU2ODdjYjBkNTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Y29udHJvbF9mbG93L2Zvcl9jb250aW51ZV9mcmFnLmZyYWcKQEAgLTAsMCArMSwzMyBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IGNvdW50PTA7CisJaW50IHZhbD0wOworCisgICAg
CWZvcihpbnQgaT0wO2k8MTA7aSsrKQorCXsKKwkgIGNvdW50Kys7CisJICBpZihjb3VudCA9PSA1
KQorICAgICAgICAgICAgY29udGludWU7CisJICAgZWxzZQorCSAgICB2YWwgKz0gY291bnQ7CisJ
fQorCisJZmxvYXQgZ3JheTsKKwlpZiggdmFsID09IDUwKQorCWdyYXk9MS4wOworCWVsc2UgZ3Jh
eT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L2Zvcl9jb250aW51ZV92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9jb250cm9sX2Zsb3cvZm9yX2NvbnRpbnVlX3ZlcnQudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45M2I0ZGZlZTAxY2QxZTZlNzc1ZjBkMWZhMDlhMzIxMTU5NDJjMjVmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L2Zvcl9jb250aW51ZV92ZXJ0LnZlcnQKQEAgLTAs
MCArMSwzMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWludCBjb3VudD0wOworCWludCB2YWw9MDsKKyAgICAJZm9yKGludCBpPTA7aTwxMDtp
KyspCisJeworCSAgY291bnQrKzsKKwkgIGlmKGNvdW50ID09IDUpCisgICAgICAgICAgICBjb250
aW51ZTsKKwkgIGVsc2UKKwkgICAgdmFsICs9IGNvdW50OworCX0KKworCisJZmxvYXQgZ3JheTsK
KwlpZiggdmFsID09IDUwKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
b250cm9sX2Zsb3cvZm9yX25lc3RlZF9icmVha19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb250cm9s
X2Zsb3cvZm9yX25lc3RlZF9icmVha19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM1MjVmZGZlNGU1
ZjA2YTFlNTY2MjcyZDQzYzdiZTEzYzQzNjc0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2NvbnRyb2xfZmxvdy9mb3JfbmVzdGVkX2JyZWFrX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDM1IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgY291bnQxID0gMCwgY291bnQyID0gMDsK
KyAgICAgICAgZm9yKGludCBpPTA7aTw0O2krKykKKwl7CisJICBjb3VudDErKzsKKwkgIGNvdW50
MiA9IDA7CisJICBmb3IoaW50IGo9MDtqPDQ7aisrKQorCSAgeworCSAgICAgY291bnQyKys7CisJ
ICAgICBpZihjb3VudDIgPT0gMykKKwkJYnJlYWs7CisJICB9CisJICBpZihjb3VudDEgPT0gMikK
KyAgICAgICAgICAgIGJyZWFrOworCX0KKwlmbG9hdCBncmF5OworCWlmKCAoY291bnQxID09IDIp
ICYmIChjb3VudDIgPT0gMykpCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9jb250cm9sX2Zsb3cvZm9yX25lc3RlZF9icmVha192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
b250cm9sX2Zsb3cvZm9yX25lc3RlZF9icmVha192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcxYmU5
OTRiOGQ1NzgzNjRkODQ3YzY2MTBmNmI4Y2Y3NGU4OGM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2NvbnRyb2xfZmxvdy9mb3JfbmVzdGVkX2JyZWFrX3ZlcnQudmVydApAQCAtMCwwICsx
LDM1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJaW50IGNvdW50MSA9IDAsIGNvdW50MiA9IDA7CisgICAgICAgIGZvcihpbnQgaT0wO2k8NDU7
aSsrKQorCXsKKwkgIGNvdW50MSsrOworCSAgY291bnQyID0gMDsKKwkgIGZvcihpbnQgaj0wO2o8
NDU7aisrKQorCSAgeworCSAgICAgY291bnQyKys7CisJICAgICBpZihjb3VudDIgPT0gMjkpCisJ
CWJyZWFrOworCSAgfQorCSAgaWYoY291bnQxID09IDI5KQorICAgICAgICAgICAgYnJlYWs7CisJ
fQorCWZsb2F0IGdyYXk7CisJaWYoIChjb3VudDEgPT0gMjkpICYmIChjb3VudDIgPT0gMjkpKQor
CWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdy
YXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb250cm9sX2Zsb3cvZm9yX25l
c3RlZF9jb250aW51ZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb250cm9sX2Zsb3cvZm9yX25lc3Rl
ZF9jb250aW51ZV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5NTJjMTYzMzFlMWNlZmQzZTBhZjI5
MTc5NjEwMzI2NDQ2ZDc2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxv
dy9mb3JfbmVzdGVkX2NvbnRpbnVlX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDQ0IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgY291bnQxID0gMCwgY291bnQyID0gMDsKKwlpbnQgdmFs
MSA9IDAsIHZhbDIgPSAwOworICAgIAlmb3IoaW50IGk9MDtpPDQ7aSsrKQorCXsKKwkgIAljb3Vu
dDErKzsKKwkJY291bnQyID0gMDsKKwkJZm9yKGludCBqPTA7ajw0O2orKykKKwkJeworCQkJY291
bnQyKys7CisJCQlpZihjb3VudDIgPT0gMikKKwkJCQljb250aW51ZTsKKwkJCWVsc2UKKwkJCQl2
YWwyICs9IGNvdW50MjsKKworCQl9CisKKworCSAgCWlmKGNvdW50MSA9PSAyKQorICAgICAgICAg
ICAgCQljb250aW51ZTsKKwkgIAllbHNlCisJICAgIAkJdmFsMSArPSBjb3VudDE7CisKKwl9CisJ
ZmxvYXQgZ3JheTsKKwlpZiggKHZhbDEgPT0gOCkgJiYgKHZhbDIgPT0gMzIpICkKKwlncmF5PTEu
MDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9mb3JfbmVzdGVk
X2NvbnRpbnVlX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9mb3JfbmVzdGVkX2Nv
bnRpbnVlX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk2MjAyZWI3YjE0NTFiZTk0NGY0ZTIwZmE2
YjMwMDUxZGQ0YTJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L2Zv
cl9uZXN0ZWRfY29udGludWVfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNDQgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgY291bnQxID0gMCwg
Y291bnQyID0gMDsKKwlpbnQgdmFsMSA9IDAsIHZhbDIgPSAwOworICAgIAlmb3IoaW50IGk9MDtp
PDEwO2krKykKKwl7CisJICAJY291bnQxKys7CisJCWNvdW50MiA9IDA7CisJCWZvcihpbnQgaj0w
O2o8MTA7aisrKQorCQl7CisJCQljb3VudDIrKzsKKwkJCWlmKGNvdW50MiA9PSA1KQorCQkJCWNv
bnRpbnVlOworCQkJZWxzZQorCQkJCXZhbDIgKz0gY291bnQyOworCisJCX0KKworCisJICAJaWYo
Y291bnQxID09IDUpCisgICAgICAgICAgICAJCWNvbnRpbnVlOworCSAgCWVsc2UKKwkgICAgCQl2
YWwxICs9IGNvdW50MTsKKworCX0KKwlmbG9hdCBncmF5OworCWlmKCAodmFsMSA9PSA1MCkgJiYg
KHZhbDIgPT0gNTAwKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xvciA9IHZl
YzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nv
bnRyb2xfZmxvdy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L2lucHV0LnJ1
bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmRkY2FhNDhhZTQ4YjQxZmQ5OWQxYjRjMDJlODZmN2IzOWZkNjA1
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9pbnB1dC5ydW4udHh0
CkBAIC0wLDAgKzEsMyBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBF
RElULgorY29udHJvbF9mbG93XzAwMV90b18wMDguaHRtbAorY29udHJvbF9mbG93XzAwOV90b18w
MTAuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L25lc3RlZF9pZl9lbHNl
X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9uZXN0ZWRfaWZfZWxzZV9mcmFnLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmFjMGQwNTk2Yzk0NTcxNDRmNmFkZDNlNWI0NGQ3MGUwNzdkMGE4NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9uZXN0ZWRfaWZfZWxzZV9m
cmFnLmZyYWcKQEAgLTAsMCArMSw0MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50
IHNldHZhbCA9IDMwOworCisJaWYoLS1zZXR2YWwhPTI5KQorCQlpZiggKHNldHZhbCs9MTEpID09
IDQwKQorCQkJaWYoc2V0dmFsLzQgPT0gMTEpCisJCQkJc2V0dmFsID0gMTE7CisJCQllbHNlIGlm
KHNldHZhbC80ID09IDEwKQorCQkJCWlmKHNldHZhbC0zID09IDM3KQorCQkJCQlzZXR2YWw9MTI7
CisJCQkJZWxzZSBzZXR2YWwgPSA5OworCQkJZWxzZSBzZXR2YWwgPSAxMDsKKwkJZWxzZSBzZXR2
YWwgPSAzMDsKKwllbHNlIGlmKHNldHZhbCA9PSAyOSkKKwkJaWYoKHNldHZhbCs9MTkpICE9IDQ4
KQorCQkJc2V0dmFsID0gMTM7CisJCWVsc2UgaWYoKHNldHZhbCs9MTkpID09IDI5KQorCQkJc2V0
dmFsID0gMjg7CisJCWVsc2Ugc2V0dmFsID0gNTM7CisJZWxzZSBzZXR2YWwgPSAzMjsKKwlmbG9h
dCBncmF5OworCWlmKCBzZXR2YWwgPT0gNTMgKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY29udHJvbF9mbG93L25lc3RlZF9pZl9lbHNlX3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2NvbnRyb2xfZmxvdy9uZXN0ZWRfaWZfZWxzZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTJiNjZkOGI3OTQyZTNkZWViM2ZhMjc2YzExZTliZjEwNjhmZWQ0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2NvbnRyb2xfZmxvdy9uZXN0ZWRfaWZfZWxzZV92ZXJ0LnZlcnQKQEAgLTAs
MCArMSw0MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWludCBzZXR2YWwgPSAzMDsKKworCWlmKC0tc2V0dmFsIT0yOSkKKwkJaWYoIChzZXR2
YWwrPTExKSA9PSA0MCkKKwkJCWlmKHNldHZhbC80ID09IDExKQorCQkJCXNldHZhbCA9IDExOwor
CQkJZWxzZSBpZihzZXR2YWwvNCA9PSAxMCkKKwkJCQlpZihzZXR2YWwtMyA9PSAzNykKKwkJCQkJ
c2V0dmFsPTEyOworCQkJCWVsc2Ugc2V0dmFsID0gOTsKKwkJCWVsc2Ugc2V0dmFsID0gMTA7CisJ
CWVsc2Ugc2V0dmFsID0gMzA7CisJZWxzZSBpZihzZXR2YWwgPT0gMjkpCisJCWlmKChzZXR2YWwr
PTE5KSAhPSA0OCkKKwkJCXNldHZhbCA9IDEzOworCQllbHNlIGlmKChzZXR2YWwrPTE5KSA9PSAy
OSkKKwkJCXNldHZhbCA9IDI4OworCQllbHNlIHNldHZhbCA9IDUzOworCWVsc2Ugc2V0dmFsID0g
MzI7CisJZmxvYXQgZ3JheTsKKwlpZiggc2V0dmFsID09IDUzICkKKwlncmF5PTEuMDsKKwllbHNl
IGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc18wMDFfdG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
b3MvY29zXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTVmMDcwZTc1NTIzN2M2NzAwZTg2
ZmM5ZmNlZjhmYjFjZjQzOTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc18w
MDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBjb3Nf
MDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHls
ZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJjb3NfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImNv
c19mbG9hdF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY29zX2Zs
b2F0X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJjb3NfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiY29zX3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImNv
c192ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJjb3NfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiY29zX3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImNvc192ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJjb3NfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiY29zX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJjb3NfZmxvYXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogImNvc192ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogImNvc192ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJjb3NfdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiY29zX3ZlYzNfdmVydF94dmFyeV9yZWYudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiY29zX3ZlYzNfdmVydF94dmFyeS52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogImNvc192ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
b3MvY29zX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9jb3NfZmxvYXRfZnJh
Z194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZjViY2FkNjg2MGZhNWY0MzFmZWNhODRhOTdlMjUx
OGY4M2IyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX2Zsb2F0X2ZyYWdf
eHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuNSAqIGNvcygyLjAgKiBNX1BJICogY29sb3IucikgKyAwLjUsIDAuMCwgMC4wLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc19mbG9hdF9mcmFnX3h2YXJ5X3Jl
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc19mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZkYWNlMjllYjQ1MTg0MTdiOWI2MTNjZGQ0MmUwYjhhODQwNmIyMTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAg
LTAsMCArMSw1MyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9Q
SSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIE1fUEkgKiAoIGZy
YWN0KGFicyhjb2xvci5yKSkgLSAwLjUgKTsKKwlmbG9hdCBzaWduID0gIDEuMDsKKwlmbG9hdCBj
b3NfYyA9IC0xLjA7CisJZmxvYXQgZmFjdF9ldmVuID0gMS4wOworCWZsb2F0IGZhY3Rfb2RkICA9
IDEuMDsKKwlmbG9hdCBzdW07CisKKwkvLyBBdCB0aGlzIHBvaW50IGMgaXMgaW4gdGhlIHJhbmdl
IFstUEksIFBJKQorCisJLy8gVGF5bG9yLU1hY2xhdXJpbiBzZXJpZXMgZXhwYW5zaW9uIGZvciBj
b3NpbmUKKwkvLworCS8vIEFwcGx5IHRoZSBwcm9wZXJ0eSB0aGF0IHBvdyhhLCBiICsgYykgPSBw
b3coYSwgYikgKiBwb3coYSwgYykKKwkvLyBhbmQgdGhlIHByb3BlcnR5IHRoYXQgMS4wLyhhKmIp
ID0gMS4wL2EgKiAxLjAvYgorCS8vIHRvIG1ha2Ugc3VyZSBubyByZWdpc3RlciBldmVyIG92ZXJm
bG93cyB0aGUgcmFuZ2UgKC0xNjM4NCwgKzE2Mzg0KQorCS8vIG1hbmRhdGVkIGZvciBtZWRpdW1w
IHZhcmlhYmxlcy4KKworCWZvcihpbnQgaSA9IDI7IGkgPD0gMTA7IGkgKz0gMikKKwl7CisJCS8v
IGZhY3RfZXZlbiB3aWxsIGhvbGQgYXQgbW9zdCB0aGUgdmFsdWUgMzg0MC4KKwkJZmFjdF9ldmVu
ICo9IGZsb2F0KGkpOworCisJCS8vIGZhY3Rfb2RkIHdpbGwgYWx3YXlzIGJlIHNtYWxsZXIgdGhh
biBmYWN0X2V2ZW4KKwkJZmFjdF9vZGQgICo9IGZsb2F0KGktMSk7CisKKwkJLy8gcG93KGMsIGZs
b2F0KGkvMikpIHRha2VzIGF0IG1vc3QgdGhlIHZhbHVlIHBvdyhQSSwgNSksIHdoaWNoIGlzIGFw
cHJveC4gMzA2CisJCS8vIGFicyhzdW0pIGlzIGF0IG1vc3QgUEkvMi4wCisJCXN1bSA9IHNpZ24g
KiBwb3coYWJzKGMpLCBmbG9hdChpLzIpKS9mYWN0X2V2ZW47CisKKwkJLy8gYWJzKHN1bS9mYWN0
X29kZCkgaXMgYXQgbW9zdCBQSS8yLjAKKwkJLy8gY29zX2MgaXMgYWx3YXlzIGJvdW5kIGluIHRo
ZSByYW5nZSBbLTEuMCwgMS4wKQorCQljb3NfYyArPSBwb3coYWJzKGMpLCBmbG9hdChpLzIpKSoo
c3VtL2ZhY3Rfb2RkKTsKKworCQlzaWduID0gLXNpZ247CisJfQorCisJZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjUgKiBjb3NfYyArIDAuNSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9jb3MvY29zX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9jb3Nf
ZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNDAyNjMwMjVmZTI1YjcyYjZiODJl
Yzg3MDE2N2U1ZWJlYjZhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX2Zs
b2F0X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJY29sb3IgPSB2
ZWM0KDAuNSAqIGNvcygyLjAgKiBNX1BJICogZ3RmX0NvbG9yLnIpICsgMC41LCAwLjAsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9jb3NfZmxvYXRfdmVydF94dmFy
eV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9jb3NfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOGI2OGI3OGFkMzBlZmZjNjU3NzJkMzQxYTk4NGU4MTNhYjU4ZjU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc19mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
CkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJ
ID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjID0gMi4wICogTV9QSSAqIGd0Zl9D
b2xvci5yOworCWZsb2F0IHNpZ24gPSAtMS4wOworCWZsb2F0IGNvc19jID0gMS4wOworCWZsb2F0
IGZhY3QgPSAxLjA7CisKKwkvLyBUYXlsb3ItTWFjbGF1cmluIHNlcmllcyBleHBhbnNpb24gZm9y
IGNvc2luZQorCWZvcihpbnQgaSA9IDI7IGkgPD0gMjA7IGkgKz0gMikKKwl7CisJCWZhY3QgKj0g
ZmxvYXQoaSkqZmxvYXQoaS0xKTsKKwkJY29zX2MgKz0gc2lnbipwb3coYywgZmxvYXQoaSkpL2Zh
Y3Q7CisJCXNpZ24gPSAtc2lnbjsKKwl9CisKKwljb2xvciA9IHZlYzQoMC41ICogY29zX2MgKyAw
LjUsIDAuMCwgMC4wLCAxLjApOworCisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29z
X3ZlYzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMyX2ZyYWdfeHZhcnku
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MmYzZDM5OTBhZTdjOTkwOGU2OTUzOGU5MTE4MDA5ZGEwMTI5Zjc5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMyX2ZyYWdfeHZhcnkuZnJh
ZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9h
dCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
NSAqIGNvcygyLjAgKiBNX1BJICogY29sb3IucmcpICsgMC41LCAwLjAsIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Nvcy9jb3NfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNDRlZTcz
ZjIyMTdmYjZjNTMwN2VlMDFlMjkzNGVjOWM3N2JlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9jb3MvY29zX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDU3IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAyLjAgKiBNX1BJICogKCBmcmFjdChhYnMoY29sb3Iucmcp
KSAtIDAuNSApOworCWZsb2F0IHNpZ24gPSAgMS4wOworCXZlYzIgY29zX2MgPSB2ZWMyKC0xLjAs
IC0xLjApOworCWZsb2F0IGZhY3RfZXZlbiA9IDEuMDsKKwlmbG9hdCBmYWN0X29kZCAgPSAxLjA7
CisJdmVjMiBzdW07CisJdmVjMiBleHA7CisKKwkvLyBBdCB0aGlzIHBvaW50IGMgaXMgaW4gdGhl
IHJhbmdlIFstUEksIFBJKQorCisJLy8gVGF5bG9yLU1hY2xhdXJpbiBzZXJpZXMgZXhwYW5zaW9u
IGZvciBjb3NpbmUKKwkvLworCS8vIEFwcGx5IHRoZSBwcm9wZXJ0eSB0aGF0IHBvdyhhLCBiICsg
YykgPSBwb3coYSwgYikgKiBwb3coYSwgYykKKwkvLyBhbmQgdGhlIHByb3BlcnR5IHRoYXQgMS4w
LyhhKmIpID0gMS4wL2EgKiAxLjAvYgorCS8vIHRvIG1ha2Ugc3VyZSBubyByZWdpc3RlciBldmVy
IG92ZXJmbG93cyB0aGUgcmFuZ2UgKC0xNjM4NCwgKzE2Mzg0KQorCS8vIG1hbmRhdGVkIGZvciBt
ZWRpdW1wIHZhcmlhYmxlcy4KKworCWZvcihpbnQgaSA9IDI7IGkgPD0gMTA7IGkgKz0gMikKKwl7
CisJCS8vIGZhY3RfZXZlbiB3aWxsIGhvbGQgYXQgbW9zdCB0aGUgdmFsdWUgMzg0MC4KKwkJZmFj
dF9ldmVuICo9IGZsb2F0KGkpOworCisJCS8vIGZhY3Rfb2RkIHdpbGwgYWx3YXlzIGJlIHNtYWxs
ZXIgdGhhbiBmYWN0X2V2ZW4KKwkJZmFjdF9vZGQgICo9IGZsb2F0KGktMSk7CisKKwkJLy8gZXhw
IGlzIGF0IG1vc3QgKDUsNSkKKwkJZXhwID0gdmVjMihmbG9hdChpLzIpLCBmbG9hdChpLzIpKTsK
KworCQkvLyBwb3coYywgZXhwKSB0YWtlcyBhdCBtb3N0IHRoZSB2YWx1ZSBwb3coUEksIDUpLCB3
aGljaCBpcyBhcHByb3guIDMwNgorCQkvLyBhYnMoc3VtKSBpcyBhdCBtb3N0IFBJLzIuMAorCQlz
dW0gPSBzaWduICogcG93KGFicyhjKSwgZXhwKS9mYWN0X2V2ZW47CisKKwkJLy8gYWJzKHN1bS9m
YWN0X29kZCkgaXMgYXQgbW9zdCBQSS8yLjAKKwkJLy8gY29zX2MgaXMgYWx3YXlzIGJvdW5kIGlu
IHRoZSByYW5nZSBbLTEuMCwgMS4wKQorCQljb3NfYyArPSBwb3coYWJzKGMpLCBleHApKihzdW0v
ZmFjdF9vZGQpOworCisJCXNpZ24gPSAtc2lnbjsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuNSAqIGNvc19jICsgMC41LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9j
b3MvY29zX3ZlYzJfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMyX3ZlcnRf
eHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2FlYmE4Y2NkMDhiZGVhY2NkMTA1MjEzZTQzOWU2YzM2
NzI4YzA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMyX3ZlcnRfeHZh
cnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJY29sb3IgPSB2ZWM0KDAuNSAqIGNv
cygyLjAgKiBNX1BJICogZ3RmX0NvbG9yLnJnKSArIDAuNSwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9jb3MvY29zX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWE1MGUz
Yjg4ZDRiMjMzMTNlNDQxYTU3MTUxNWI3ZDlhNjcyOTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvY29zL2Nvc192ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwzMyBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5
MzIzODQ2OworCXZlYzIgYyA9IDIuMCAqIE1fUEkgKiBndGZfQ29sb3Iucmc7CisJZmxvYXQgc2ln
biA9IC0xLjA7CisJdmVjMiBjb3NfYyA9IHZlYzIoMS4wLCAxLjApOworCWZsb2F0IGZhY3QgPSAx
LjA7CisKKwkvLyBUYXlsb3ItTWFjbGF1cmluIHNlcmllcyBleHBhbnNpb24gZm9yIGNvc2luZQor
CWZvcihpbnQgaSA9IDI7IGkgPD0gMjA7IGkgKz0gMikKKwl7CisJCWZhY3QgKj0gZmxvYXQoaSkq
ZmxvYXQoaS0xKTsKKwkJY29zX2MgKz0gc2lnbipwb3coYywgdmVjMihmbG9hdChpKSwgZmxvYXQo
aSkpKS9mYWN0OworCQlzaWduID0gLXNpZ247CisJfQorCisJY29sb3IgPSB2ZWM0KDAuNSAqIGNv
c19jICsgMC41LCAwLjAsIDEuMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9j
b3NfdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX3ZlYzNfZnJhZ194dmFy
eS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE1MWE1MmRiMDIzZWQ4N2QzYjFhMmFhNThmM2IzODJlYjY3OWMy
NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29zX3ZlYzNfZnJhZ194dmFyeS5m
cmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZs
b2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
MC41ICogY29zKDIuMCAqIE1fUEkgKiBjb2xvci5yZ2IpICsgMC41LCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9jb3MvY29zX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjI4YTA3OGU1
MTAyMmE2YmM2ZDMwMzBmYjJlZTliMGY0MmVjMDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvY29zL2Nvc192ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSw1NyBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5
NzkzMjM4NDY7CisJdmVjMyBjID0gMi4wICogTV9QSSAqICggZnJhY3QoYWJzKGNvbG9yLnJnYikp
IC0gMC41ICk7CisJZmxvYXQgc2lnbiA9ICAxLjA7CisJdmVjMyBjb3NfYyA9IHZlYzMoLTEuMCwg
LTEuMCwgLTEuMCk7CisJZmxvYXQgZmFjdF9ldmVuID0gMS4wOworCWZsb2F0IGZhY3Rfb2RkICA9
IDEuMDsKKwl2ZWMzIHN1bTsKKwl2ZWMzIGV4cDsKKworCS8vIEF0IHRoaXMgcG9pbnQgYyBpcyBp
biB0aGUgcmFuZ2UgWy1QSSwgUEkpCisKKwkvLyBUYXlsb3ItTWFjbGF1cmluIHNlcmllcyBleHBh
bnNpb24gZm9yIGNvc2luZQorCS8vCisJLy8gQXBwbHkgdGhlIHByb3BlcnR5IHRoYXQgcG93KGEs
IGIgKyBjKSA9IHBvdyhhLCBiKSAqIHBvdyhhLCBjKQorCS8vIGFuZCB0aGUgcHJvcGVydHkgdGhh
dCAxLjAvKGEqYikgPSAxLjAvYSAqIDEuMC9iCisJLy8gdG8gbWFrZSBzdXJlIG5vIHJlZ2lzdGVy
IGV2ZXIgb3ZlcmZsb3dzIHRoZSByYW5nZSAoLTE2Mzg0LCArMTYzODQpCisJLy8gbWFuZGF0ZWQg
Zm9yIG1lZGl1bXAgdmFyaWFibGVzLgorCisJZm9yKGludCBpID0gMjsgaSA8PSAxMDsgaSArPSAy
KQorCXsKKwkJLy8gZmFjdF9ldmVuIHdpbGwgaG9sZCBhdCBtb3N0IHRoZSB2YWx1ZSAzODQwLgor
CQlmYWN0X2V2ZW4gKj0gZmxvYXQoaSk7CisKKwkJLy8gZmFjdF9vZGQgd2lsbCBhbHdheXMgYmUg
c21hbGxlciB0aGFuIGZhY3RfZXZlbgorCQlmYWN0X29kZCAgKj0gZmxvYXQoaS0xKTsKKworCQkv
LyBleHAgaXMgYXQgbW9zdCAoNSw1LDUpCisJCWV4cCA9IHZlYzMoZmxvYXQoaS8yKSwgZmxvYXQo
aS8yKSwgZmxvYXQoaS8yKSk7CisKKwkJLy8gcG93KGMsIGV4cCkgdGFrZXMgYXQgbW9zdCB0aGUg
dmFsdWUgcG93KFBJLCA1KSwgd2hpY2ggaXMgYXBwcm94LiAzMDYKKwkJLy8gYWJzKHN1bSkgaXMg
YXQgbW9zdCBQSS8yLjAKKwkJc3VtID0gc2lnbiAqIHBvdyhhYnMoYyksIGV4cCkvZmFjdF9ldmVu
OworCisJCS8vIGFicyhzdW0vZmFjdF9vZGQpIGlzIGF0IG1vc3QgUEkvMi4wCisJCS8vIGNvc19j
IGlzIGFsd2F5cyBib3VuZCBpbiB0aGUgcmFuZ2UgWy0xLjAsIDEuMCkKKwkJY29zX2MgKz0gcG93
KGFicyhjKSwgZXhwKSooc3VtL2ZhY3Rfb2RkKTsKKworCQlzaWduID0gLXNpZ247CisJfQorCisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNCgwLjUgKiBjb3NfYyArIDAuNSwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Nvcy9jb3NfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3Mv
Y29zX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMWQ4YjYyNzBiN2FjZTI4NGI5
OGI1ZTRiYzU4MTNmMDkzMTcxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvY29z
X3ZlYzNfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwljb2xvciA9
IHZlYzQoMC41ICogY29zKDIuMCAqIE1fUEkgKiBndGZfQ29sb3IucmdiKSArIDAuNSwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nvcy9jb3NfdmVjM192ZXJ0X3h2YXJ5X3JlZi52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvY29zL2Nvc192ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjNlYmQwMjUwMDI3MDVkY2U3YWZmZDMwZGM1MGI1MWQ5ZmI5YmM4OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Nvcy9jb3NfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAg
KzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1
OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMgPSAyLjAgKiBNX1BJICogZ3RmX0NvbG9yLnJnYjsK
KwlmbG9hdCBzaWduID0gLTEuMDsKKwl2ZWMzIGNvc19jID0gdmVjMygxLjAsMS4wLDEuMCk7CisJ
ZmxvYXQgZmFjdCA9IDEuMDsKKworCS8vIFRheWxvci1NYWNsYXVyaW4gc2VyaWVzIGV4cGFuc2lv
biBmb3IgY29zaW5lCisJZm9yKGludCBpID0gMjsgaSA8PSAyMDsgaSArPSAyKQorCXsKKwkJZmFj
dCAqPSBmbG9hdChpKSpmbG9hdChpLTEpOworCQljb3NfYyArPSBzaWduKnBvdyhjLCB2ZWMzKGZs
b2F0KGkpLGZsb2F0KGkpLGZsb2F0KGkpKSkvZmFjdDsKKwkJc2lnbiA9IC1zaWduOworCX0KKwor
CWNvbG9yID0gdmVjNCgwLjUgKiBjb3NfYyArIDAuNSwgMS4wKTsKKworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvY29zL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jb3MvaW5wdXQucnVuLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NGYyM2Q4YzM5Nzc4MGU1ZjcwZTYzOGMyZDg5YThkMWZlNWUwZTA2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY29zL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwy
IEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitjb3NfMDAx
X3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc18wMDFfdG9fMDAy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc18wMDFfdG9fMDAyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjEwODA3ZTVlMmMxMzVlOTU4YTdkZjE0YWI1MGMzN2JkZGQ0M2Q0ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Nyb3NzL2Nyb3NzXzAwMV90b18wMDIuaHRtbApAQCAtMCwwICsxLDU3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgY29uZm9ybWFuY2UgdGVzdDogY3Jvc3NfMDAxX3RvXzAwMi5odG1sPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0
UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjcm9zc192ZWMzX2ZyYWdfeHZhcnl5Y29uc3Rf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJjcm9zc192ZWMzX2ZyYWdfeHZhcnl5Y29u
c3QuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJjcm9zc192ZWMzX2ZyYWdfeHZhcnl5
Y29uc3QudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJjcm9zc192ZWMzX3ZlcnRfeHZhcnl5Y29uc3RfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImNyb3NzX3ZlYzNfdmVydF94dmFyeXljb25zdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogImNyb3NzX3ZlYzNfdmVydF94dmFyeXljb25zdC50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3Nz
L2Nyb3NzX3ZlYzNfZnJhZ194dmFyeXljb25zdC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY3Jvc3MvY3Jvc3Nf
dmVjM19mcmFnX3h2YXJ5eWNvbnN0LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTEwOTMyNmU0MTUwYmFmMjVi
MDk4N2JhZTQwMDdhNjk4MDIwOTI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3Nz
L2Nyb3NzX3ZlYzNfZnJhZ194dmFyeXljb25zdC5mcmFnCkBAIC0wLDAgKzEsMzAgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5
MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2ZWMzIHYy
ID0gdmVjMygxLjAsIDAuMCwgMC4wKTsKKworCisJZmxvYXQgdGhldGEgPSBjb2xvci5nICogMi4w
ICogTV9QSTsKKwlmbG9hdCBwaGkgPSBjb2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29z
KHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisJdjEu
eiA9IGNvcyhwaGkpOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoY3Jvc3ModjEsIHYyKSArIDEu
MCkgLyAyLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc192ZWMz
X2ZyYWdfeHZhcnl5Y29uc3RfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc192ZWMzX2Zy
YWdfeHZhcnl5Y29uc3RfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI0NzEwYjI4MmM3M2M1MjkyMjA0
YzRhNDAwNjIzZDMxNDE0YmY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3NzL2Ny
b3NzX3ZlYzNfZnJhZ194dmFyeXljb25zdF9yZWYuZnJhZwpAQCAtMCwwICsxLDMyIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3
OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVuaXQgdmVjdG9ycworCXZlYzMgdjE7CisJdmVjMyB2
MiA9IHZlYzMoMS4wLCAwLjAsIDAuMCk7CisJdmVjMyB2MzsKKworCWZsb2F0IHRoZXRhID0gY29s
b3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gY29sb3IuYiAqIDIuMCAqIE1fUEk7CisJ
djEueCA9IGNvcyh0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS55ID0gc2luKHRoZXRhKSAqIHNpbihw
aGkpOworCXYxLnogPSBjb3MocGhpKTsKKwl2My54ID0gdjEueSAqIHYyLnogLSB2Mi55ICogdjEu
ejsKKwl2My55ID0gdjIueCAqIHYxLnogLSB2MS54ICogdjIuejsKKwl2My56ID0gdjEueCAqIHYy
LnkgLSB2Mi54ICogdjEueTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KCh2MyArIDEuMCkgLyAyLjAs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc192ZWMzX3ZlcnRfeHZh
cnl5Y29uc3QudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3NzL2Nyb3NzX3ZlYzNfdmVydF94dmFyeXljb25z
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRmYWFkM2M2NTkzZWRiZjJjMzhmZGExOGFhOWM1Y2M4ZjE4Nzgx
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9jcm9zcy9jcm9zc192ZWMzX3ZlcnRfeHZh
cnl5Y29uc3QudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29u
c3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1
bml0IHZlY3RvcnMKKwl2ZWMzIHYxOworCXZlYzMgdjIgPSB2ZWMzKDEuMCwgMC4wLCAwLjApOwor
CisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0g
Z3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7
CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS56ID0gY29zKHBoaSk7CisJY29s
b3IgPSB2ZWM0KChjcm9zcyh2MSwgdjIpICsgMS4wKSAvIDIuMCwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Nyb3NzL2Nyb3NzX3ZlYzNfdmVydF94dmFyeXljb25zdF9yZWYudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Nyb3NzL2Nyb3NzX3ZlYzNfdmVydF94dmFyeXljb25zdF9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZTAyYWVjYzE3ZjIwYmZiYTMxYzI5ODg3YzNiMzA2MmYwOTRiM2UyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvY3Jvc3MvY3Jvc3NfdmVjM192ZXJ0X3h2YXJ5eWNvbnN0
X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBm
bG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVuaXQg
dmVjdG9ycworCXZlYzMgdjE7CisJdmVjMyB2MiA9IHZlYzMoMS4wLCAwLjAsIDAuMCk7CisJdmVj
MyB2MzsKKworCWZsb2F0IHRoZXRhID0gZ3RmX0NvbG9yLmcgKiAyLjAgKiBNX1BJOworCWZsb2F0
IHBoaSA9IGd0Zl9Db2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRoZXRhKSAqIHNp
bihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisJdjEueiA9IGNvcyhwaGkp
OworCXYzLnggPSB2MS55ICogdjIueiAtIHYyLnkgKiB2MS56OworCXYzLnkgPSB2Mi54ICogdjEu
eiAtIHYxLnggKiB2Mi56OworCXYzLnogPSB2MS54ICogdjIueSAtIHYyLnggKiB2MS55OworCWNv
bG9yID0gdmVjNCgodjMgKyAxLjApIC8gMi4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvY3Jvc3MvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3NzL2lucHV0LnJ1bi50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNlOTc5NGRiNTE2ZmIxYjFiOGYxNmY2Njg4MzJkNjJlYWQwN2UwMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Nyb3NzL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwy
IEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitjcm9zc18w
MDFfdG9fMDAyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZmF1bHQvZGVmYXVsdC5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZGVmYXVsdC9kZWZhdWx0LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxNzVjZDA3ZWRl
ODhlNThhZmZlZjU4ODgxNGY4YjcwZDc4ZGJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2RlZmF1bHQvZGVmYXVsdC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZGVmYXVsdC9kZWZhdWx0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWZhdWx0L2RlZmF1bHQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMTk5OTljYjkzOTcwMjMzZmY3MzFiMmU4Mzc3M2M1YjUxYzQ4ZmVkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9kZWZhdWx0LnZlcnQKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworCWdsX1BvaW50
U2l6ZSA9IDEuMDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZmF1bHQvZGVmYXVsdF8wMDFf
dG9fMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWZhdWx0L2RlZmF1bHRfMDAxX3RvXzAwMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiNDFlNDI3OThkNzE5NjliZTdkY2I1ZDRkYTQxM2Q4NjM5ZDExNDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWZhdWx0L2RlZmF1bHRfMDAxX3RvXzAwMS5odG1sCkBA
IC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBkZWZhdWx0XzAwMV90b18wMDEuaHRt
bDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4
OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImRlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImRlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJkZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZGVmYXVsdC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2RlZmF1bHQvZGVmYXVsdF90ZXh0dXJlZC5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVs
dC9kZWZhdWx0X3RleHR1cmVkLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjZDIyNTY3NTc4Y2VjNGM4ZjI4
MTVhOGYzMDljMTNjYTE0OWVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZmF1bHQv
ZGVmYXVsdF90ZXh0dXJlZC5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gc2FtcGxlcjJEIGd0Zl9UZXh0dXJlMDsKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKK3ZhcnlpbmcgdmVjNCBndGZfVGV4Q29vcmRbMV07CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoZ3RmX1RleHR1cmUwLCBn
dGZfVGV4Q29vcmRbMF0ueHkpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9kZWZh
dWx0X3RleHR1cmVkLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWZhdWx0L2RlZmF1bHRfdGV4dHVyZWQudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMDg4YTYyMTQ3MjBmMzdhNmE3NmMzNWFkMjVjNzY4Nzg2ZWRjN2U2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9kZWZhdWx0X3RleHR1cmVkLnZlcnQK
QEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBndGZfVGV4Q29vcmRbMV07CithdHRyaWJ1dGUgdmVjNCBndGZfTXVsdGlUZXhDb29y
ZDA7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9
IGd0Zl9Db2xvcjsKKwlndGZfVGV4Q29vcmRbMF0gPSBndGZfTXVsdGlUZXhDb29yZDA7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7CisJ
Z2xfUG9pbnRTaXplID0gMS4wOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9leHBl
Y3RlZC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9leHBlY3RlZC5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
Nzc3OWNkMWIzYzEyZTVkOTVkMzUzMTc2YTEzNzZmZDQ1MGNiMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9kZWZhdWx0L2V4cGVjdGVkLmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSB2ZWM0IHJlc3VsdDsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2RlZmF1bHQvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZmF1bHQvaW5w
dXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGMwM2U5MDZiMDQ3ODI5OTFkYzQ0MzNiMTczMGUyNGFm
YTE1YmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVmYXVsdC9pbnB1dC5ydW4udHh0
CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBF
RElULgorZGVmYXVsdF8wMDFfdG9fMDAxLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3Jl
ZXMvZGVncmVlc18wMDFfdG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfMDAx
X3RvXzAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzk5NmM1MzRhMDA3Yjg2MzFkM2M4ZDVmZTAwNzY4
NTdlNzg1OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfMDAx
X3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZGVncmVl
c18wMDFfdG9fMDA2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0
eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjog
WworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogImRlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogImRlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImRlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogImRlZ3JlZXNfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZGVncmVlc192ZWMyX2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJkZWdyZWVzX3ZlYzJfZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImRlZ3JlZXNfdmVjM19mcmFnX3h2
YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZGVncmVlc192ZWMzX2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJkZWdyZWVzX3ZlYzNfZnJhZ194dmFy
eS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImRl
Z3JlZXNfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAi
Z3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
ZGVncmVlc19mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZGVn
cmVlc19mbG9hdF92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiZGVncmVlc192ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogImRlZ3JlZXNfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAiZGVncmVlc192ZWMyX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJkZWdyZWVzX3ZlYzNfdmVydF94dmFy
eV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZGVncmVlc192ZWMzX3ZlcnRfeHZh
cnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJkZWdyZWVzX3ZlYzNfdmVydF94dmFyeS50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc19mbG9hdF9mcmFnX3h2YXJ5LmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3NzEyM2RmNGM1NGM3YTJiZGM5YjM0MGZlYmFiNzI5Y2QxMmJmMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeS5mcmFnCkBAIC0w
LDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkg
PSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSAyLjAgKiBNX1BJICogMi4wICog
KGNvbG9yLnIgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZGVncmVlcyhjKSAvICgyLjAg
KiAzNjAuMCkgKyAwLjUsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZGVncmVlcy9kZWdyZWVzX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdy
ZWVzL2RlZ3JlZXNfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE5YTM4
MTFlYjY1NjQyYTE0ZGMwZTFlYzJkMTQyZTQzZGRhYjFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZGVncmVlcy9kZWdyZWVzX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCAr
MSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIE1fUEkgKiAyLjAgKiAoY29s
b3IuciAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoYyAqIDE4MC4wIC8gTV9QSSkgLyAo
Mi4wICogMzYwLjApICsgMC41LCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2RlZ3JlZXMvZGVncmVlc19mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdy
ZWVzL2RlZ3JlZXNfZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZjBlOTVkODQw
NjdjZjUzZjAyZjNkZDhmODE3MjEyZTlmNjMwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9kZWdyZWVzL2RlZ3JlZXNfZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3
OTMyMzg0NjsKKwlmbG9hdCBjID0gMi4wICogTV9QSSAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAu
NSk7CisJY29sb3IgPSB2ZWM0KGRlZ3JlZXMoYykgLyAoMi4wICogMzYwLjApICsgMC41LCAwLjAs
IDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc19m
bG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX2Zsb2F0
X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFiZjYyZGE5NDA0YTZlZDgzYzYxYTI4
NzE1ODU3ZWEyMTlmMWE0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVn
cmVlc19mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsK
KwlmbG9hdCBjID0gMi4wICogTV9QSSAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAuNSk7CisJY29s
b3IgPSB2ZWM0KChjICogMTgwLjAgLyBNX1BJKSAvICgyLjAgKiAzNjAuMCkgKyAwLjUsIDAuMCwg
MC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3Zl
YzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzJfZnJhZ194
dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ZGY1MjY3Mjk4YzdjMjE4YWZlYWY5Y2Q5MDcyMzdmOGEw
YmYzM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfdmVjMl9m
cmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMiBjID0g
Mi4wICogTV9QSSAqIDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChkZWdyZWVzKGMpIC8gKDIuMCAqIDM2MC4wKSArIDAuNSwgMC4wLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2JmZjc1NjIxZmVkZWNlYzhkNzAxMzQ4NzQ4MTllNWI0MzE3ZjE2OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMyX2ZyYWdfeHZhcnlfcmVmLmZy
YWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMiBjID0gMi4wICogTV9QSSAq
IDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoYyAqIDE4MC4w
IC8gTV9QSSkgLyAoMi4wICogMzYwLjApICsgMC41LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9kZWdyZWVzL2RlZ3JlZXNfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdmNWFm
MjU3ZmZhZjU2OWJlODBiNDk1MmRhNDIwMWVjMDQ3NDRlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMyX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUz
NTg5NzkzMjM4NDY7CisJdmVjMiBjID0gMi4wICogTV9QSSAqIDIuMCAqIChndGZfQ29sb3Iucmcg
LSAwLjUpOworCWNvbG9yID0gdmVjNChkZWdyZWVzKGMpIC8gKDIuMCAqIDM2MC4wKSArIDAuNSwg
MC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3Zl
YzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMyX3Zl
cnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhiYWZiMjc1YmZjYWEyOGE1MDkwMmE2MmVj
NzI0ZWZjOWUwNTA5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVl
c192ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZl
YzIgYyA9IDIuMCAqIE1fUEkgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwljb2xvciA9
IHZlYzQoKGMgKiAxODAuMCAvIE1fUEkpIC8gKDIuMCAqIDM2MC4wKSArIDAuNSwgMC4wLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzNfZnJhZ194
dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzNfZnJhZ194dmFyeS5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1N2M0ODZhNzRkOWNmZjQzN2RkNzMwZDYzNGMzMzFmMzdkMTJjMGEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2RlZ3JlZXNfdmVjM19mcmFnX3h2YXJ5
LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3Qg
ZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMyBjID0gMi4wICogTV9Q
SSAqIDIuMCAqIChjb2xvci5yZ2IgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZGVncmVl
cyhjKSAvICgyLjAgKiAzNjAuMCkgKyAwLjUsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9kZWdyZWVzL2RlZ3JlZXNfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVn
cmVlcy9kZWdyZWVzX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTVkODM3
MDU0ZDE0ODYyMWVlMmQzZDZjN2Y4Mzc5ZDE4YThjNDRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsx
LDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4x
NDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMgPSAyLjAgKiBNX1BJICogMi4wICogKGNvbG9y
LnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoYyAqIDE4MC4wIC8gTV9QSSkgLyAo
Mi4wICogMzYwLjApICsgMC41LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVl
cy9kZWdyZWVzX3ZlYzNfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVz
X3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMDg5ZDMwYzM4ZTI0MDdmMWU5NDBk
MjMxMGYxYTExMjQ0ZDNlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2Rl
Z3JlZXNfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZl
YzMgYyA9IDIuMCAqIE1fUEkgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3Ig
PSB2ZWM0KGRlZ3JlZXMoYykgLyAoMi4wICogMzYwLjApICsgMC41LCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZGVncmVlcy9kZWdyZWVzX3ZlYzNfdmVydF94dmFyeV9yZWYudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThhZWZmODdmMDRkNTI0NGIwOTFjZTNlYTU2NWI2ZDNmNDEyNTIxNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvZGVncmVlc192ZWMzX3ZlcnRfeHZhcnlfcmVm
LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0
IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgYyA9IDIuMCAqIE1fUEkgKiAy
LjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KChjICogMTgwLjAgLyBN
X1BJKSAvICgyLjAgKiAzNjAuMCkgKyAwLjUsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9kZWdyZWVzL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kZWdyZWVzL2lucHV0LnJ1bi50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2FhMGMxMTBkMGQyOWIxMzU3NmJhZGE4NDFjNWE0NzYwZjkxODM3ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RlZ3JlZXMvaW5wdXQucnVuLnR4dApAQCAtMCww
ICsxLDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2Rl
Z3JlZXNfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXNjYXJkL2Rpc2Nh
cmRfMDAxX3RvXzAwMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzY2FyZC9kaXNjYXJkXzAwMV90b18wMDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOTc2MTYyNTUxYzY0ZDMxZmY2ODBjYzUyNjc5OGNlZGVjOGNmYWQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzY2FyZC9kaXNjYXJkXzAwMV90b18wMDIu
aHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZGlzY2FyZF8wMDFfdG9f
MDAyLmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0
aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDAu
MCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAg
IDAuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImRpc2NhcmRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImRpc2Nh
cmRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImRpc2NhcmRfY29uZF9mcmFnX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZGlzY2Fy
ZF9jb25kX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJkaXNjYXJkX2NvbmRf
ZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0K
K30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc2NhcmQvZGlzY2FyZF9jb25kX2ZyYWcuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Rpc2NhcmQvZGlzY2FyZF9jb25kX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWRlNDUy
NWMxMjIwMzVjZmUyYjAxMjFmZTRjNTZiY2FkMzE1ZTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZGlzY2FyZC9kaXNjYXJkX2NvbmRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjQgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWJvb2wgdG9EaXNjYXJkID0gZmFsc2U7CisJaWYoY29s
b3IuciA+IDAuNzUpIHRvRGlzY2FyZCA9IHRydWU7CisJZWxzZSBpZihjb2xvci5nID4gMC43NSkg
dG9EaXNjYXJkID0gdHJ1ZTsKKwllbHNlIGlmKGNvbG9yLmIgPiAwLjc1KSB0b0Rpc2NhcmQgPSB0
cnVlOworCisJaWYgKHRvRGlzY2FyZCkgZGlzY2FyZDsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9y
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzY2FyZC9kaXNjYXJkX2NvbmRfZnJhZ19yZWYu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Rpc2NhcmQvZGlzY2FyZF9jb25kX2ZyYWdfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjQ1NWQxZjU3ZTY4M2Y1YWMwNTJlZmM5ZjZhNmQ4NzhkODNmODQxYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Rpc2NhcmQvZGlzY2FyZF9jb25kX2ZyYWdfcmVmLmZyYWcKQEAg
LTAsMCArMSwyNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaWYoY29sb3IuciA+IDAu
NzUgfHwgY29sb3IuZyA+IDAuNzUgfHwgY29sb3IuYiA+IDAuNzUpCisJeworCQkvKiBUaGUgYmFj
a2dyb3VuZCBjb2xvciBpcyBibGFjayBieSBkZWZhdWx0LgorCQkgKiBTZXR0aW5nIHRoZSBmcmFn
bWVudCBjb2xvciB0byBpdCBzaW11bGF0ZXMgYSBkaXNjYXJkZWQgZnJhZ21lbnQuCisJCSAqLwor
CQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisJfQorCWVsc2UKKwl7
CisJCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworCX0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rp
c2NhcmQvZGlzY2FyZF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXNjYXJkL2Rpc2NhcmRfZnJhZy5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4ODc3NmZiMzg0NmNkMjgzOTkyMzRlNzU0MDUxMmVmNDQyYTAyOGUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXNjYXJkL2Rpc2NhcmRfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9
IGNvbG9yOworCWRpc2NhcmQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXNjYXJkL2lucHV0
LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9kaXNjYXJkL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY5
YmZhOTkzZGQwN2JlNWIxMDRlOTAzZTIxZDU0MDA1N2ExNTJjNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Rpc2NhcmQvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2Rpc2NhcmRfMDAxX3RvXzAwMi5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV8wMDFfdG9fMDA2Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDRkMmFlZTE1ZjFiMDI5YmVmY2I3YWNkN2ZhY2E0M2FmZjE3NGE2OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3RhbmNlXzAwMV90b18wMDYuaHRtbApAQCAtMCww
ICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGRpc3RhbmNlXzAwMV90b18wMDYuaHRtbDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBo
ZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZGlzdGFuY2VfZmxvYXRf
ZnJhZ194dmFyeXloYWxmX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZGlzdGFuY2Vf
ZmxvYXRfZnJhZ194dmFyeXloYWxmLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZGlz
dGFuY2VfZmxvYXRfZnJhZ194dmFyeXloYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZGlzdGFuY2VfdmVjMl9mcmFnX3h2YXJ5eWhhbGZfcmVmLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJkaXN0YW5jZV92ZWMyX2ZyYWdfeHZhcnl5aGFsZi5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImRpc3RhbmNlX3ZlYzJfZnJhZ194dmFyeXlo
YWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZGlz
dGFuY2VfdmVjM19mcmFnX3h2YXJ5eWhhbGZfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJkaXN0YW5jZV92ZWMzX2ZyYWdfeHZhcnl5aGFsZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogImRpc3RhbmNlX3ZlYzNfZnJhZ194dmFyeXloYWxmLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZGlzdGFuY2VfZmxvYXRfdmVydF94dmFy
eXloYWxmX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJkaXN0YW5jZV9mbG9hdF92
ZXJ0X3h2YXJ5eWhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJkaXN0YW5jZV9mbG9h
dF92ZXJ0X3h2YXJ5eWhhbGYudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJkaXN0YW5jZV92ZWMyX3ZlcnRfeHZhcnl5aGFsZl9yZWYudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZGlzdGFuY2VfdmVjMl92ZXJ0X3h2YXJ5eWhhbGYudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJkaXN0YW5jZV92ZWMyX3ZlcnRfeHZhcnl5aGFsZi50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImRpc3RhbmNl
X3ZlYzNfdmVydF94dmFyeXloYWxmX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJn
cmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJk
aXN0YW5jZV92ZWMzX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImRpc3RhbmNlX3ZlYzNfdmVydF94dmFyeXloYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2Uv
ZGlzdGFuY2VfZmxvYXRfZnJhZ194dmFyeXloYWxmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9k
aXN0YW5jZV9mbG9hdF9mcmFnX3h2YXJ5eWhhbGYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDBhMmU4YTRi
ZmY5Y2I1NmMwZGU1NmYyOGQ3ZmZhMmMxOTBmNmI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZGlzdGFuY2UvZGlzdGFuY2VfZmxvYXRfZnJhZ194dmFyeXloYWxmLmZyYWcKQEAgLTAsMCAr
MSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2
ZWMzKGRpc3RhbmNlKGNvbG9yLnIsIDAuNSkpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZGlzdGFuY2UvZGlzdGFuY2VfZmxvYXRfZnJhZ194dmFyeXloYWxmX3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfZmxvYXRfZnJhZ194dmFyeXloYWxmX3JlZi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2ZDFlMzJmMzA3ZWMyZDJmMzEzZDRkZjdmMGU1ZTliNzE0MmZkMjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV9mbG9hdF9mcmFnX3h2YXJ5
eWhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKHNxcnQocG93KGFicyhjb2xvci5yIC0gMC41KSwg
Mi4wKSkpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2Vf
ZmxvYXRfdmVydF94dmFyeXloYWxmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV9m
bG9hdF92ZXJ0X3h2YXJ5eWhhbGYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzkxNWRjOTgxYTkwNzAyZWYx
MDFmYzEzOGQ5ODY4MTg3YWFmMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFu
Y2UvZGlzdGFuY2VfZmxvYXRfdmVydF94dmFyeXloYWxmLnZlcnQKQEAgLTAsMCArMSwxOCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gdmVjNCh2ZWMzKGRpc3RhbmNlKGd0Zl9Db2xv
ci5yLCAwLjUpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rp
c3RhbmNlX2Zsb2F0X3ZlcnRfeHZhcnl5aGFsZl9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNl
L2Rpc3RhbmNlX2Zsb2F0X3ZlcnRfeHZhcnl5aGFsZl9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjZk
ZWUwYTI0M2JkYjQ2OWMwMGFjNTA2YWRkYTBiY2M3ZGNlNzAwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfZmxvYXRfdmVydF94dmFyeXloYWxmX3JlZi52ZXJ0
CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IHZlYzQodmVj
MyhzcXJ0KHBvdyhhYnMoZ3RmX0NvbG9yLnIgLSAwLjUpLCAyLjApKSksIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV92ZWMyX2ZyYWdfeHZhcnl5aGFs
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVjMl9mcmFnX3h2YXJ5eWhhbGYu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZWMwNmMyYTliYjIyMzA1MjgzYWI4Yzc4Nzg2MmU2MjM0Mzg4YmVm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVjMl9mcmFn
X3h2YXJ5eWhhbGYuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoZGlzdGFuY2UoY29sb3IucmcsIHZlYzIoMC41
KSkpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVj
Ml9mcmFnX3h2YXJ5eWhhbGZfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV92
ZWMyX2ZyYWdfeHZhcnl5aGFsZl9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjczODQwOTMzZDMyNmRi
YTVlYTdiODA0YTNlZmMxMGUxODg2OWE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlz
dGFuY2UvZGlzdGFuY2VfdmVjMl9mcmFnX3h2YXJ5eWhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSwx
NyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMz
KHNxcnQocG93KGFicyhjb2xvci5yIC0gMC41KSwgMi4wKSArIHBvdyhhYnMoY29sb3IuZyAtIDAu
NSksIDIuMCkpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3Rh
bmNlX3ZlYzJfdmVydF94dmFyeXloYWxmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5j
ZV92ZWMyX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5OGUxY2ZiN2EzMjMyOGI4
MzQ5ZTViNjAwNzVlY2M5M2YzNTRkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0
YW5jZS9kaXN0YW5jZV92ZWMyX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0CkBAIC0wLDAgKzEsMTggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IHZlYzQodmVjMyhkaXN0YW5jZShndGZfQ29s
b3IucmcsIHZlYzIoMC41KSkpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlz
dGFuY2UvZGlzdGFuY2VfdmVjMl92ZXJ0X3h2YXJ5eWhhbGZfcmVmLnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9k
aXN0YW5jZS9kaXN0YW5jZV92ZWMyX3ZlcnRfeHZhcnl5aGFsZl9yZWYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMmNkNGM5MzYxMDZhOTRjZmMwMzk3YzM0YzRkNzFjZTc2NzBmNWFmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVjMl92ZXJ0X3h2YXJ5eWhhbGZfcmVm
LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gdmVj
NCh2ZWMzKHNxcnQocG93KGFicyhndGZfQ29sb3IuciAtIDAuNSksIDIuMCkgKyBwb3coYWJzKGd0
Zl9Db2xvci5nIC0gMC41KSwgMi4wKSkpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVjM19mcmFnX3h2YXJ5eWhhbGYuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfZnJhZ194dmFyeXloYWxmLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjY1YTM3ZDVhYTQyZmE0NGQ3MjdmNTBlY2VlMmEzM2IwNjFhNjc0YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfZnJhZ194dmFyeXloYWxmLmZyYWcK
QEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCh2ZWMzKGRpc3RhbmNlKGNvbG9yLnJnYiwgdmVjMygwLjUpKSksIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV92ZWMzX2ZyYWdfeHZhcnl5aGFs
Zl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfZnJhZ194dmFyeXlo
YWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NTE3ODI4ZDFjNmJmNDhjYTE1OWZjY2FmOTU4ZThi
OTdhNTI2NDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV92
ZWMzX2ZyYWdfeHZhcnl5aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoc3FydChwb3coYWJzKGNv
bG9yLnIgLSAwLjUpLCAyLjApICsgcG93KGFicyhjb2xvci5nIC0gMC41KSwgMi4wKSArIHBvdyhh
YnMoY29sb3IuYiAtIDAuNSksIDIuMCkpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfdmVydF94dmFyeXloYWxmLnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9k
aXN0YW5jZS9kaXN0YW5jZV92ZWMzX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJl
ZmU5NDliMTJkYTZmYWZmYmJhMjEzMzM2N2Y3NzZmMjEwMWYzYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9kaXN0YW5jZS9kaXN0YW5jZV92ZWMzX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0CkBA
IC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IHZlYzQodmVjMyhk
aXN0YW5jZShndGZfQ29sb3IucmdiLCB2ZWMzKDAuNSkpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfdmVydF94dmFyeXloYWxmX3JlZi52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZGlzdGFuY2UvZGlzdGFuY2VfdmVjM192ZXJ0X3h2YXJ5eWhhbGZfcmVm
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGQyNGM3Y2U4MjY5OTQwOWMyM2M4NDQxZWQyZTE0NjQyNzk2OTBl
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2Rpc3RhbmNlX3ZlYzNfdmVy
dF94dmFyeXloYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb2xvciA9IHZlYzQodmVjMyhzcXJ0KHBvdyhhYnMoZ3RmX0NvbG9yLnIgLSAwLjUpLCAy
LjApICsgcG93KGFicyhndGZfQ29sb3IuZyAtIDAuNSksIDIuMCkgKyBwb3coYWJzKGd0Zl9Db2xv
ci5iIC0gMC41KSwgMi4wKSkpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZGlz
dGFuY2UvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2lucHV0LnJ1bi50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmZiY2U5OWVkMTZmODAzMzQxZmE1N2YxM2RmOTExNzlhOTU2ZDE5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Rpc3RhbmNlL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwy
IEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitkaXN0YW5j
ZV8wMDFfdG9fMDA2Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfMDAxX3RvXzAw
Ni5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1
ZGRlNjc0MmUyMWMwMzFiMTQxNzY2MWE3N2I0Yjc3Mzk5YzdiNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2RvdC9kb3RfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJ
VC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29u
Zm9ybWFuY2UgdGVzdDogZG90XzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIg
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29n
bGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAw
IiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5y
dW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZG90X2Zsb2F0X2ZyYWdfeHZhcnl5b25lX3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZG90X2Zsb2F0X2ZyYWdfeHZhcnl5b25lLmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiZG90X2Zsb2F0X2ZyYWdfeHZhcnl5b25lLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZG90X3ZlYzJfZnJhZ194dmFy
eXloYWxmX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZG90X3ZlYzJfZnJhZ194dmFy
eXloYWxmLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZG90X3ZlYzJfZnJhZ194dmFy
eXloYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
ZG90X3ZlYzNfZnJhZ194dmFyeXl0aGlyZF9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImRvdF92ZWMzX2ZyYWdfeHZhcnl5dGhpcmQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJkb3RfdmVjM19mcmFnX3h2YXJ5eXRoaXJkLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZG90X2Zsb2F0X3ZlcnRfeHZhcnl5b25lX3JlZi52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJkb3RfZmxvYXRfdmVydF94dmFyeXlvbmUudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJkb3RfZmxvYXRfdmVydF94dmFyeXlvbmUudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJkb3RfdmVjMl92ZXJ0
X3h2YXJ5eWhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImRvdF92ZWMyX3Zl
cnRfeHZhcnl5aGFsZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImRvdF92ZWMyX3ZlcnRf
eHZhcnl5aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImRvdF92ZWMzX3ZlcnRfeHZhcnl5dGhpcmRfcmVmLnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImRvdF92ZWMzX3ZlcnRfeHZhcnl5dGhpcmQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJkb3RfdmVjM192ZXJ0X3h2YXJ5eXRoaXJkLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2Rv
dF9mbG9hdF9mcmFnX3h2YXJ5eW9uZS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF9mbG9hdF9mcmFn
X3h2YXJ5eW9uZS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYjZhZGU3YzRmYTM3ZWM3MDE5OWYzODYyYmFh
NmUzYzU5ODFjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kb3QvZG90X2Zsb2F0X2Zy
YWdfeHZhcnl5b25lLmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKGRvdChjb2xvci5yLCAxLjApKSwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfZmxvYXRfZnJhZ194dmFyeXlvbmVfcmVm
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9kb3QvZG90X2Zsb2F0X2ZyYWdfeHZhcnl5b25lX3JlZi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllNTY3MmIxZDU4OWI1ZDU4MzA2OThiNmJmMGY2OTkxMDg1ZWNjMTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kb3QvZG90X2Zsb2F0X2ZyYWdfeHZhcnl5b25lX3JlZi5m
cmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdD
b2xvciA9IHZlYzQodmVjMyhjb2xvci5yKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2RvdC9kb3RfZmxvYXRfdmVydF94dmFyeXlvbmUudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfZmxv
YXRfdmVydF94dmFyeXlvbmUudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzNlOGQwYzg2ZGE0NzQ4NTYxMDNm
M2IwZDA4YjQ1ZTA0NjIyYjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF9m
bG9hdF92ZXJ0X3h2YXJ5eW9uZS52ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwljb2xvciA9IHZlYzQodmVjMyhkb3QoZ3RmX0NvbG9yLnIsIDEuMCkpLCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF9mbG9hdF92ZXJ0X3h2YXJ5eW9uZV9y
ZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfZmxvYXRfdmVydF94dmFyeXlvbmVfcmVmLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTQwYjUzZTI3ODA1ODUyZmQ4ZDljYzYxOGQyNjY0NGM4ZGFiM2I2ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfZmxvYXRfdmVydF94dmFyeXlvbmVfcmVm
LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gdmVj
NCh2ZWMzKGd0Zl9Db2xvci5yKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Rv
dC9kb3RfdmVjMl9mcmFnX3h2YXJ5eWhhbGYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjMl9m
cmFnX3h2YXJ5eWhhbGYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTc0NjgzOTc5M2Y4ODY4NDgwNDQ5Y2Yx
ZjQyNzBiMTczMmY3OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92ZWMy
X2ZyYWdfeHZhcnl5aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMyhkb3QoY29sb3IucmcsIHZlYzIoMC41
KSkpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92ZWMyX2ZyYWdfeHZh
cnl5aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjMl9mcmFnX3h2YXJ5eWhhbGZf
cmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODI5MzVhZjY2OTg5MDdkZmU5ZWFjYTQ5YTIxZWE2NjE3MzA1
MTM5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjMl9mcmFnX3h2YXJ5
eWhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKGNvbG9yLnIgKyBjb2xvci5nKSAqIDAuNSwgMS4w
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjMl92ZXJ0X3h2YXJ5eWhhbGYu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjMl92ZXJ0X3h2YXJ5eWhhbGYudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MDk4MTQyZmFiY2NiMmZlMmU0NTVjMmQyMDJiNDNiZDRhMDVkNjQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92ZWMyX3ZlcnRfeHZhcnl5aGFsZi52ZXJ0CkBAIC0w
LDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IHZlYzQodmVjMyhkb3Qo
Z3RmX0NvbG9yLnJnLCB2ZWMyKDAuNSkpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2RvdC9kb3RfdmVjMl92ZXJ0X3h2YXJ5eWhhbGZfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kb3Qv
ZG90X3ZlYzJfdmVydF94dmFyeXloYWxmX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMjA2ZDNkZmI2
NDQxMDA1ZWJiMjRmOWQwYWFkMzE0ZWQwNGJjZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9kb3QvZG90X3ZlYzJfdmVydF94dmFyeXloYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IHZlYzQodmVjMyhndGZfQ29sb3IuciArIGd0
Zl9Db2xvci5nKSAqIDAuNSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9k
b3RfdmVjM19mcmFnX3h2YXJ5eXRoaXJkLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kb3QvZG90X3ZlYzNfZnJh
Z194dmFyeXl0aGlyZC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZTFhYzgxMzRhOTc3MGEyNDE1Y2UwYmYw
ZWE4MWRhMTg0NTIyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9kb3QvZG90X3ZlYzNf
ZnJhZ194dmFyeXl0aGlyZC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMyhkb3QoY29sb3IucmdiLCB2ZWMzKDAu
MzMzMykpKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM19mcmFn
X3h2YXJ5eXRoaXJkX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92ZWMzX2ZyYWdfeHZhcnl5
dGhpcmRfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNhOTZkNWJlNTE0OGJiNzU4NzU2NzMxZmMwYmY1
ZTE4ODk1OGVjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM19mcmFn
X3h2YXJ5eXRoaXJkX3JlZi5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMyhjb2xvci5yICsgY29sb3IuZyArIGNv
bG9yLmIpICogMC4zMzMzLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92
ZWMzX3ZlcnRfeHZhcnl5dGhpcmQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM192ZXJ0X3h2
YXJ5eXRoaXJkLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA2ZDE2Yzg5ZTY5MjlhOTY5MGY2MWQ0MmFiNzU4
Y2M4YzIzM2QzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM192ZXJ0
X3h2YXJ5eXRoaXJkLnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbG9yID0gdmVjNCh2ZWMzKGRvdChndGZfQ29sb3IucmdiLCB2ZWMzKDAuMzMzMykpKSwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM192ZXJ0X3h2YXJ5eXRo
aXJkX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2RvdF92ZWMzX3ZlcnRfeHZhcnl5dGhpcmRfcmVm
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGFiYTUzOGRhYmJlZGJiOGZmNzcyMTg4NmY4NmU4NGRjNTU0NzNk
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2RvdC9kb3RfdmVjM192ZXJ0X3h2YXJ5eXRo
aXJkX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xv
ciA9IHZlYzQodmVjMyhndGZfQ29sb3IuciArIGd0Zl9Db2xvci5nICsgZ3RmX0NvbG9yLmIpICog
MC4zMzMzLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZG90L2lucHV0LnJ1bi50
eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9kb3QvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODc1NDdmZDMzOGVh
ZDNkMmNkNjJhYzkyMjE0ZTU0MGRmZGM0NGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZG90L2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZC4gRE8gTk9UIEVESVQuCitkb3RfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9lcXVhbC9lcXVhbF8wMDFfdG9fMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVh
bF8wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhYjk2NzA1NzcyZTdhNTgzZWZlYzBlMzNm
MmRmM2I2YWJjZmNlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsXzAw
MV90b18wMDguaHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRo
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGVxdWFs
XzAwMV90b18wMDguaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5
bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBb
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiZXF1YWxfdmVjMl9mcmFnX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZXF1YWxf
dmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXF1YWxfdmVjMl9mcmFn
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZXF1
YWxfdmVjMl92ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJlcXVhbF92ZWMy
X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJlcXVhbF92ZWMyX3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJlcXVhbF92ZWMzX2Zy
YWdfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJlcXVhbF92ZWMzX2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJlcXVhbF92ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJlcXVhbF92ZWMzX3ZlcnRfcmVm
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImVxdWFsX3ZlYzNfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogImVxdWFsX3ZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImVxdWFsX2l2ZWMyX2ZyYWdfcmVmLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJlcXVhbF9pdmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiZXF1YWxfaXZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogImVxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogImVxdWFsX2l2ZWMyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJlcXVhbF9pdmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiZXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImVxdWFsX2l2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJlcXVhbF9pdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZXF1YWxfaXZlYzNfdmVydF9yZWYudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiZXF1YWxfaXZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImVx
dWFsX2l2ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF8wMDlfdG9fMDEyLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF8wMDlfdG9fMDEyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ2
MTE4MmMzNjRhMGNjZTZlYWVjZmM1NTg5MTJlNjg5ODEyMzQ5MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2VxdWFsL2VxdWFsXzAwOV90b18wMTIuaHRtbApAQCAtMCwwICsxLDgzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1Qg
RURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Y29uZm9ybWFuY2UgdGVzdDogZXF1YWxfMDA5X3RvXzAxMi5odG1sPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVu
bmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJlcXVhbF9idmVjMl9mcmFnX3JlZi5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiZXF1YWxfYnZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogImVxdWFsX2J2ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJlcXVhbF9idmVjMl92ZXJ0X3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJlcXVhbF9idmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAiZXF1YWxfYnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogImVxdWFsX2J2ZWMzX2ZyYWdfcmVmLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJlcXVhbF9idmVjM19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
ZXF1YWxfYnZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogImVxdWFsX2J2ZWMzX3ZlcnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImVxdWFsX2J2ZWMzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJlcXVh
bF9idmVjM192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzJfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MmMw
NjQ2ZGRhMzk0MzJhNWI0M2IxYTIxYmUwZDk2ZGQyNGU5NjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9lcXVhbC9lcXVhbF9idmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigx
LjUgKiBjb2xvci5yZyk7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCXZlYzIgcmVzdWx0ID0g
dmVjMihlcXVhbChidmVjMihjKSwgYnZlYzIodHJ1ZSkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KHJlc3VsdCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxf
YnZlYzJfZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2J2ZWMyX2ZyYWdfcmVm
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTQzM2IzOTY3YTkyZTc1MGZkN2M2M2NkNjFjNTUzMGVhYTZkMDg0
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2J2ZWMyX2ZyYWdfcmVm
LmZyYWcKQEAgLTAsMCArMSwzMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9O
X0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGVxKGlu
IGJ2ZWMyIGEsIGluIGJ2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gPT0gYlsw
XSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0g
PT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCXJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigx
LjUgKiBjb2xvci5yZyk7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCXZlYzIgcmVzdWx0ID0g
dmVjMihlcShidmVjMihjKSwgYnZlYzIodHJ1ZSkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJl
c3VsdCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZl
YzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzJfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUwY2YyOTM1MWE0ZDI4YjhlODY0MDliOWQ1NGNkOWQyNzRjOGM4MDgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9idmVjMl92ZXJ0LnZlcnQKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEuNSAqIGd0Zl9D
b2xvci5yZyk7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCXZlYzIgcmVzdWx0ID0gdmVjMihl
cXVhbChidmVjMihjKSwgYnZlYzIodHJ1ZSkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAwLjAs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9idmVjMl92ZXJ0
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzJfdmVydF9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMTVjMGNiYjM2OWQ5MWNiMjM0NzU4YWU2NWQwMzNjZTZiNWNjMDgzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzJfdmVydF9yZWYudmVydApAQCAt
MCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCitidmVjMiBlcShpbiBidmVjMiBhLCBpbiBidmVjMiBiKQoreworCWJ2ZWMy
IHJlc3VsdDsKKwlpZihhWzBdID09IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1
bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdID09IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxz
ZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjMiBjID0gZmxvb3IoMS41ICogZ3RmX0NvbG9yLnJnKTsgICAvLyAxLzMgdHJ1
ZSwgMi8zIGZhbHNlCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxKGJ2ZWMyKGMpLCBidmVjMih0cnVl
KSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2VxdWFsL2VxdWFsX2J2ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2Vx
dWFsX2J2ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmNlNzE1NDdhZjY4OGI0MzdiODIzZTJk
YzE5OTFhYzA5MTMzYjEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxf
YnZlYzNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzMgYyA9IGZsb29yKDEuNSAqIGNvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBm
YWxzZQorCXZlYzMgcmVzdWx0ID0gdmVjMyhlcXVhbChidmVjMyhjKSwgYnZlYzModHJ1ZSkpKTsK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2VxdWFsL2VxdWFsX2J2ZWMzX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVh
bF9idmVjM19mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YjcxMzdlNWQ0MzM2Nzk3MGIxOWE2
ZmM0MGYyMWNmMzY3OTM5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVh
bF9idmVjM19mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzMgZXEoaW4g
YnZlYzMgYSwgaW4gYnZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA9PSBiWzBd
KSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA9
PSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYo
YVsyXSA9PSBiWzJdKSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7
CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZs
b29yKDEuNSAqIGNvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCXZlYzMgcmVz
dWx0ID0gdmVjMyhlcShidmVjMyhjKSwgYnZlYzModHJ1ZSkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KHJlc3VsdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2J2
ZWMzX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2J2ZWMzX3ZlcnQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NTg3MmQ3ZDUyNDEzYTFmZjdkZmJlMjg0N2U1ZTkxZTE5NjRiYTBhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzNfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigxLjUgKiBndGZf
Q29sb3IucmdiKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMyByZXN1bHQgPSB2ZWMz
KGVxdWFsKGJ2ZWMzKGMpLCBidmVjMyh0cnVlKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9idmVjM192ZXJ0X3Jl
Zi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzNfdmVydF9yZWYudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMzcwMThkNzViNWVjYWFmN2RlYmE4YWM3MDY0MTBlMWY2YjRlMjE3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfYnZlYzNfdmVydF9yZWYudmVydApAQCAtMCww
ICsxLDMyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCitidmVjMyBlcShpbiBidmVjMyBhLCBpbiBidmVjMyBiKQoreworCWJ2ZWMzIHJl
c3VsdDsKKwlpZihhWzBdID09IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRb
MF0gPSBmYWxzZTsKKwlpZihhWzFdID09IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSBy
ZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJdID09IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJ
ZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMS41ICogZ3RmX0NvbG9yLnJnYik7ICAgLy8gMS8z
IHRydWUsIDIvMyBmYWxzZQorCXZlYzMgcmVzdWx0ID0gdmVjMyhlcShidmVjMyhjKSwgYnZlYzMo
dHJ1ZSkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXF1YWwvZXF1YWxfaXZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1
YWxfaXZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZDEwNzBlZjQ0MGIzMTY3YTU0NmJkZmEw
MjMzOGFjNzM5YWYxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9p
dmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0
aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxdWFsKGl2ZWMyKGMpLCBp
dmVjMigwKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9pdmVjMl9mcmFnX3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZXF1YWwvZXF1YWxfaXZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzMyY2Ix
MDYxNWJmZjM2MzgyNzMwMjRjYWE5NmYwNWU2ZDI5NDRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZXF1YWwvZXF1YWxfaXZlYzJfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDI5IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK2J2ZWMyIGVxKGluIGl2ZWMyIGEsIGluIGl2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0Owor
CWlmKGFbMF0gPT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZh
bHNlOworCWlmKGFbMV0gPT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsx
XSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMyIGMgPSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBu
ZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZXEoaXZlYzIoYyksIGl2ZWMyKDAp
KSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2l2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFs
L2VxdWFsX2l2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGU5OGJlOGI2NWQ2NGNiNWMzOGNl
MWJmZTUwMDcwOWVkMWNjYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1
YWxfaXZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0
byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxdWFsKGl2ZWMyKGMp
LCBpdmVjMigwKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9lcXVhbC9lcXVhbF9pdmVjMl92ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1OTgzMTA2
ZWE1OWU4ZjdhMmNiYzQ5ZmUzYTExMDZhZGNjNmJkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9lcXVhbC9lcXVhbF9pdmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2
ZWMyIGVxKGluIGl2ZWMyIGEsIGluIGl2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFb
MF0gPT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOwor
CWlmKGFbMV0gPT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZh
bHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMg
PSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVh
cmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxKGl2ZWMyKGMpLCBpdmVjMigwKSkp
OworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2VxdWFsL2VxdWFsX2l2ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFs
X2l2ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWI0YmM0NjBmMjQzYThkMmMxNzEyMWQyNmMz
YzUzODM0NjczYTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfaXZl
YzNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CXZlYzMgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRo
ZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZXF1YWwoaXZlYzMoYyksIGl2
ZWMzKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9pdmVjM19mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXF1YWwvZXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWY4YzZkZDFmZmEw
NWQxMWJkNzMwNTQ0Y2RjNzdjMTM0MDJhYTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXF1YWwvZXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDMxIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2
ZWMzIGVxKGluIGl2ZWMzIGEsIGluIGl2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0OworCWlmKGFb
MF0gPT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOwor
CWlmKGFbMV0gPT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZh
bHNlOworCWlmKGFbMl0gPT0gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsy
XSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMzIGMgPSBmbG9vcigxMC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUg
bmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGVxKGl2ZWMzKGMpLCBpdmVjMygw
KSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXF1YWwvZXF1YWxfaXZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1
YWxfaXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNGI3ZTkyYTkyN2U3YmMyNTIwZGM5MWYy
YmQ2NzY2NTc3ZDk1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9p
dmVjM192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0
aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGVxdWFsKGl2ZWMzKGMpLCBp
dmVjMygwKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1
YWwvZXF1YWxfaXZlYzNfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2Y4ZGE0ZTI5NzVjMjI0
YzgyNTc4MWEwYTYxNjhiMmVlNjg5YjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1
YWwvZXF1YWxfaXZlYzNfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMyIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
Q29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMyBlcShp
biBpdmVjMyBhLCBpbiBpdmVjMyBiKQoreworCWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdID09IGJb
MF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFd
ID09IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlp
ZihhWzJdID09IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxz
ZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0g
Zmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZXEoaXZlYzMoYyksIGl2ZWMzKDApKSk7
CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2VxdWFsL2VxdWFsX3ZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfdmVjMl9m
cmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M0NWVkYTUzNmU3NDcxNDhiZGM5MjgxNmE1NTAzZWYxNjRj
MWIwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzJfZnJhZy5m
cmFnCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9I
SUdICitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisjZWxzZQorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnIC0gNC41KTsgICAvLyByb3Vu
ZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxdWFsKGMsIHZl
YzIoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF92ZWMyX2ZyYWdfcmVmLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9lcXVhbC9lcXVhbF92ZWMyX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU5YjQ1NjQy
ZDc3MDI2YzRmODY4OGY3MzUxYWYyMjJhODAyNGE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2VxdWFsL2VxdWFsX3ZlYzJfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDMzIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
KyNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworI2Vsc2UKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworYnZlYzIgZXEoaW4gdmVjMiBhLCBpbiB2ZWMyIGIpCit7CisJYnZl
YzIgcmVzdWx0OworCWlmKGFbMF0gPT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJl
c3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gPT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwll
bHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJv
dW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZXEoYywgdmVj
MigwLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXF1YWwvZXF1YWxfdmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ3NzQ0OGY1MDNiNWQzYjg3
MjcwMThkMjExYjkyYTVmNjhlODZlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFs
L2VxdWFsX3ZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3Vu
ZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGVxdWFsKGMsIHZl
YzIoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzJfdmVydF9yZWYudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2VxdWFsL2VxdWFsX3ZlYzJfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDVhZWFmODk3YzFl
YjI1NGY4ZDA0NjVkMDJlMDk4OTNlNjBiMzgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXF1YWwvZXF1YWxfdmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGVx
KGluIHZlYzIgYSwgaW4gdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdID09IGJb
MF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFd
ID09IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwly
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3Io
MTAuMCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50
ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihlcShjLCB2ZWMyKDAuMCkpKTsKKwljb2xvciA9IHZl
YzQocmVzdWx0LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9l
cXVhbF92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzNfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk1YzExYTRlYzkyYTZhNzY1ODkxMGNlOTMzMGYwN2NhZjQ4YTU0NjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF92ZWMzX2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigx
MC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2Vy
CisJdmVjMyByZXN1bHQgPSB2ZWMzKGVxdWFsKGMsIHZlYzMoMC4wKSkpOworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1
YWxfdmVjM19mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXF1YWwvZXF1YWxfdmVjM19mcmFnX3Jl
Zi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI3MWMzZTZmMDdiNzE1MThiOTk5NzhkNDA3MWUxMWQzZTAzM2Mx
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF92ZWMzX2ZyYWdfcmVm
LmZyYWcKQEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMyBlcShpbiB2ZWMzIGEsIGluIHZlYzMg
YikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA9PSBiWzBdKSByZXN1bHRbMF0gPSB0cnVl
OworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA9PSBiWzFdKSByZXN1bHRbMV0g
PSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYoYVsyXSA9PSBiWzJdKSByZXN1
bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5y
Z2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3Vs
dCA9IHZlYzMoZXEoYywgdmVjMygwLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9lcXVhbF92ZWMzX3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkN2Mw
NmNiNzM1Yzc3Y2JkZGQxODE2Y2YxZmEzMzVkNzBkNDNlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9lcXVhbC9lcXVhbF92ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0
LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZl
YzMoZXF1YWwoYywgdmVjMygwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzNfdmVydF9yZWYudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2VxdWFsL2VxdWFsX3ZlYzNfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTg2
ZmVhYmYzMGE5ZDBmMzI3ZGUxMmM4NDllNjI0OWJmNDAzZTAwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXF1YWwvZXF1YWxfdmVjM192ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzIgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K2J2ZWMzIGVxKGluIHZlYzMgYSwgaW4gdmVjMyBiKQoreworCWJ2ZWMzIHJlc3VsdDsKKwlpZihh
WzBdID09IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsK
KwlpZihhWzFdID09IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBm
YWxzZTsKKwlpZihhWzJdID09IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSByZXN1bHRb
Ml0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRv
IHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZXEoYywgdmVjMygwLjAp
KSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2VxdWFsL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9pbnB1dC5ydW4udHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkNGE4MWViNTE5ZmE3MTU0NDIwMDQwMWE4ZTE5Njg1NzFmNzU0NzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9lcXVhbC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMyBA
QAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorZXF1YWxfMDAx
X3RvXzAwOC5odG1sCitlcXVhbF8wMDlfdG9fMDEyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2V4cC9leHBfMDAxX3RvXzAwOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF8wMDFfdG9fMDA4Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGUyYmNhMWMwODI2ZGI4Njg5OTJhYmUwM2IyMGNiMmNiMzcxNzdkNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfMDAxX3RvXzAwOC5odG1sCkBAIC0w
LDAgKzEsMTM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZXhwXzAwMV90b18wMDguaHRtbDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
b2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWln
aHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09w
ZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZXhwX2Zsb2F0X2ZyYWdfeHZh
cnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHBfZmxvYXRfZnJhZ194dmFyeS5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImV4cF9mbG9hdF9mcmFnX3h2YXJ5LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZXhwX3ZlYzJfZnJh
Z194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImV4cF92ZWMyX2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJleHBfdmVjMl9mcmFnX3h2YXJ5LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZXhwX3ZlYzNf
ZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImV4cF92ZWMzX2ZyYWdf
eHZhcnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJleHBfdmVjM19mcmFnX3h2YXJ5
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZXhwX2Zs
b2F0X2ZyYWdfeHZhcnluZWdfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHBfZmxv
YXRfZnJhZ194dmFyeW5lZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImV4cF9mbG9h
dF9mcmFnX3h2YXJ5bmVnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiZXhwX3ZlYzJfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImV4cF92ZWMyX2ZyYWdfeHZhcnluZWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJleHBfdmVjMl9mcmFnX3h2YXJ5bmVnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZXhwX3ZlYzNfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogImV4cF92ZWMzX2ZyYWdfeHZhcnluZWcuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJleHBfdmVjM19mcmFnX3h2YXJ5bmVnLnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZXhwX2Zsb2F0X3ZlcnRfeHZhcnlf
cmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImV4cF9mbG9hdF92ZXJ0X3h2YXJ5LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwX2Zsb2F0X3ZlcnRfeHZhcnkudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBfdmVjMl92ZXJ0
X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBfdmVjMl92ZXJ0X3h2
YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwX3ZlYzJfdmVydF94dmFyeS50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2V4cC9leHBfMDA5X3RvXzAxMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF8w
MDlfdG9fMDEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1MzFhMzE2ZjUwOWRlN2NkY2QzZGM3ZGRjMjhk
MDU3NjcyZWFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfMDA5X3RvXzAx
Mi5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBleHBfMDA5X3RvXzAx
Mi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6
IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBf
dmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBfdmVj
M192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwX3ZlYzNfdmVydF94
dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
ImV4cF9mbG9hdF92ZXJ0X3h2YXJ5bmVnX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJleHBfZmxvYXRfdmVydF94dmFyeW5lZy52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImV4
cF9mbG9hdF92ZXJ0X3h2YXJ5bmVnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiZXhwX3ZlYzJfdmVydF94dmFyeW5lZ19yZWYudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiZXhwX3ZlYzJfdmVydF94dmFyeW5lZy52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogImV4cF92ZWMyX3ZlcnRfeHZhcnluZWcudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBfdmVjM192ZXJ0X3h2YXJ5bmVnX3Jl
Zi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHBfdmVjM192ZXJ0X3h2YXJ5bmVnLnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwX3ZlYzNfdmVydF94dmFyeW5lZy50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2V4cC9leHBfZmxvYXRfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4
cF9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UyNWMzMDIyZGNiYWIyZDgzYmIw
M2VhYTJmMjBmMTFlYzM0ZDcyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBf
ZmxvYXRfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IGV4cDMgPSAyMC4wODU1OworCWZsb2F0IGMgPSBjb2xvci5y
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpIC8gZXhwMywgMC4wLCAwLjAsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X2ZyYWdfeHZhcnlfcmVm
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWZiMjgxNTIwYjk1NDE4YjdiNjdiNWQ4Nzk3OWRlZDU1YmMwNzY0NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAt
MCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBleHAx
ID0gMi43MTgzOworCWNvbnN0IGZsb2F0IGV4cDMgPSAyMC4wODU1OworCWZsb2F0IGMgPSBjb2xv
ci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocG93KGV4cDEsIDMuMCAqIGMpIC8gZXhwMywgMC4w
LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X2ZyYWdf
eHZhcnluZWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfZnJhZ194dmFyeW5lZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkyZjNlOGZiNzkwNWQzMzE4MjA3NmVkN2EzMmNkODViYjE1YzBhNmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X2ZyYWdfeHZhcnluZWcuZnJh
ZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0g
LWNvbG9yLnI7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChleHAoMy4wICogYyksIDAuMCwgMC4wLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF9mbG9hdF9mcmFnX3h2YXJ5bmVn
X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF9mbG9hdF9mcmFnX3h2YXJ5bmVnX3JlZi5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxNjVjZWJlOGZhMjFkMzhkNjg3YTU2YjAwYmNhZDQzZGE4YzdhNjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X2ZyYWdfeHZhcnluZWdfcmVm
LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3Qg
ZmxvYXQgZXhwMSA9IDIuNzE4MzsKKwlmbG9hdCBjID0gY29sb3IucjsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCAvIHBvdyhleHAxLCAzLjAgKiBjKSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2V4cC9leHBfZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNzAwMzYyYTY3Y2Nj
YTE3NmZiZWRmMTQwNzVkZGFjMzcyYjVmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9l
eHAvZXhwX2Zsb2F0X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
Q29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgZmxvYXQgZXhwMyA9IDIwLjA4NTU7CisJZmxvYXQgYyA9IGd0Zl9D
b2xvci5yOworCWNvbG9yID0gdmVjNChleHAoMy4wICogYykgLyBleHAzLCAwLjAsIDAuMCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfdmVydF94dmFyeV9y
ZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OTI4ZjliMjQ1ZWVkMjE1Y2UyOWNlNzVkNTBlNGY1NWQxNmQ4MjcxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBA
IC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBleHAxID0g
Mi43MTgzOworCWNvbnN0IGZsb2F0IGV4cDMgPSAyMC4wODU1OworCWZsb2F0IGMgPSBndGZfQ29s
b3IucjsKKwljb2xvciA9IHZlYzQocG93KGV4cDEsIDMuMCAqIGMpIC8gZXhwMywgMC4wLCAwLjAs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X3ZlcnRfeHZh
cnluZWcudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfdmVydF94dmFyeW5lZy52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1ZTJlYThiNzZhN2EwNTgwYTNlZmQ1NjRiZTZhMGY2MTJmMjRmNmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX2Zsb2F0X3ZlcnRfeHZhcnluZWcudmVydApA
QCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IC1ndGZfQ29s
b3IucjsKKwljb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfdmVydF94dmFyeW5lZ19yZWYudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2V4cC9leHBfZmxvYXRfdmVydF94dmFyeW5lZ19yZWYudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZmIxMzBkZWM1NzAxNDBhZTgyNGRlZjY5ZThhNTEzZjI0MGNmMzg3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF9mbG9hdF92ZXJ0X3h2YXJ5bmVnX3JlZi52ZXJ0CkBA
IC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBleHAxID0g
Mi43MTgzOworCWZsb2F0IGMgPSBndGZfQ29sb3IucjsKKwljb2xvciA9IHZlYzQoMS4wIC8gcG93
KGV4cDEsIDMuMCAqIGMpLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2V4cC9leHBfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzJf
ZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMzA0NThmMTU3NGJiZmJjODQ1ODU4NzZiNTkz
ZGEzZmM0MjMwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzJfZnJh
Z194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IGZsb2F0IGV4cDMgPSAyMC4wODU1OworCXZlYzIgYyA9IGNvbG9yLnJnOworCWdsX0Zy
YWdDb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpIC8gZXhwMywgMC4wLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAvZXhwX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjYzYTRjODhm
Yzc2ZjIwMzRkZDQwYTNjNjlhNTViYWI5Yzc5MjllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZXhwL2V4cF92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgZXhwMSA9IDIuNzE4MzsKKwljb25z
dCBmbG9hdCBleHAzID0gMjAuMDg1NTsKKwl2ZWMyIGMgPSBjb2xvci5yZzsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KHBvdyh2ZWMyKGV4cDEpLCAzLjAgKiBjKSAvIGV4cDMsIDAuMCwgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjMl9mcmFnX3h2YXJ5bmVnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9leHAvZXhwX3ZlYzJfZnJhZ194dmFyeW5lZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWE4
OGIwNTVjZjZmZGFhODViYTNjNWMzOGQ2M2FkMzdiMDYzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9leHAvZXhwX3ZlYzJfZnJhZ194dmFyeW5lZy5mcmFnCkBAIC0wLDAgKzEsMTggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IC1jb2xvci5yZzsKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KGV4cCgzLjAgKiBjKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZXhwL2V4cF92ZWMyX2ZyYWdfeHZhcnluZWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAv
ZXhwX3ZlYzJfZnJhZ194dmFyeW5lZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTQwOGJjOWJjYzcx
OTk2NTBjODdhOGZlNzFmODk2ZmNiYzNlODliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXhwL2V4cF92ZWMyX2ZyYWdfeHZhcnluZWdfcmVmLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgZXhwMSA9IDIuNzE4MzsKKwl2ZWMy
IGMgPSBjb2xvci5yZzsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAvIHBvdyh2ZWMyKGV4cDEp
LCAzLjAgKiBjKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92
ZWMyX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjMl92ZXJ0X3h2YXJ5LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWU5NjI4NmZkODJjYTExMDZmZmJiMDg2ODczMDI3Yjc4NTZmMmM5MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQK
QEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IGV4cDMg
PSAyMC4wODU1OworCXZlYzIgYyA9IGd0Zl9Db2xvci5yZzsKKwljb2xvciA9IHZlYzQoZXhwKDMu
MCAqIGMpIC8gZXhwMywgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhw
L2V4cF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzJfdmVy
dF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTNmYWQwMTI3Mjg5NDJmMWE1NWQ4ZGRmNTAz
NmM5OTI0NWJmMDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMyX3Zl
cnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IGZsb2F0IGV4cDEgPSAyLjcxODM7CisJY29uc3QgZmxvYXQgZXhwMyA9IDIwLjA4NTU7
CisJdmVjMiBjID0gZ3RmX0NvbG9yLnJnOworCWNvbG9yID0gdmVjNChwb3codmVjMihleHAxKSwg
My4wICogYykgLyBleHAzLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9l
eHAvZXhwX3ZlYzJfdmVydF94dmFyeW5lZy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMyX3Zl
cnRfeHZhcnluZWcudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGVkMjVjOGY1ODljMDkwMTA0NTAwOGMxMjhi
N2Y4ZjYxZDdlZWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMyX3Zl
cnRfeHZhcnluZWcudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMiBjID0gLWd0Zl9Db2xvci5yZzsKKwljb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpLCAwLjAs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzJfdmVydF94dmFy
eW5lZ19yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjMl92ZXJ0X3h2YXJ5bmVnX3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJkMjZiODQyZWQyN2VkY2IwMTc1MWRlYmRjMzk3MTQ0YzhiZjIzYWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzJfdmVydF94dmFyeW5lZ19y
ZWYudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgZXhwMSA9IDIuNzE4MzsKKwl2ZWMyIGMgPSBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0
KDEuMCAvIHBvdyh2ZWMyKGV4cDEpLCAzLjAgKiBjKSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMzX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4
cC9leHBfdmVjM19mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwODE5NGI2NTM1ZjJmMmUx
MWUyYmUwY2M0YjFlZDhkMTQ1ZGE2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9l
eHBfdmVjM19mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgZmxvYXQgZXhwMyA9IDIwLjA4NTU7CisJdmVjMyBjID0gY29sb3Iu
cmdiOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpIC8gZXhwMywgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXhwL2V4cF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJm
ZTJlNThkNTdmY2FkNzY4N2E5NjExMDkwN2VhZTJlM2ZiYjJhMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2V4cC9leHBfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjAg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IGV4cDEgPSAyLjcxODM7
CisJY29uc3QgZmxvYXQgZXhwMyA9IDIwLjA4NTU7CisJdmVjMyBjID0gY29sb3IucmdiOworCWds
X0ZyYWdDb2xvciA9IHZlYzQocG93KHZlYzMoZXhwMSksIDMuMCAqIGMpIC8gZXhwMywgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjM19mcmFnX3h2YXJ5bmVnLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfZnJhZ194dmFyeW5lZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0
ZjU1M2ZlYzZhOWU2MjJjOTViMGUyMjQxYjllNmJhMzgyMDcwNGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfZnJhZ194dmFyeW5lZy5mcmFnCkBAIC0wLDAgKzEsMTgg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IC1jb2xvci5yZ2I7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChleHAoMy4wICogYyksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9leHAvZXhwX3ZlYzNfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9l
eHBfdmVjM19mcmFnX3h2YXJ5bmVnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMjQzMzQ1N2MyNmEy
YTY2Zjk0NWU5MmRlYTA2ODI2NDE3NmRkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9l
eHAvZXhwX3ZlYzNfZnJhZ194dmFyeW5lZ19yZWYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBleHAxID0gMi43MTgzOworCXZlYzMg
YyA9IGNvbG9yLnJnYjsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAvIHBvdyh2ZWMzKGV4cDEp
LCAzLjAgKiBjKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjM192
ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhOGI4ZTgyZWFhMmViMjNkMzBjNWNlM2NlOWY4NGUyZDNhMDJjOGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeS52ZXJ0CkBAIC0w
LDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBleHAzID0gMjAu
MDg1NTsKKwl2ZWMzIGMgPSBndGZfQ29sb3IucmdiOworCWNvbG9yID0gdmVjNChleHAoMy4wICog
YykgLyBleHAzLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMz
X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeV9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMmU4Zjk0MjU2N2Y4ZGIxZDRjMjIyMTRkNzY3OTgxYzAzZDEx
NmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMzX3ZlcnRfeHZhcnlf
cmVmLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZs
b2F0IGV4cDEgPSAyLjcxODM7CisJY29uc3QgZmxvYXQgZXhwMyA9IDIwLjA4NTU7CisJdmVjMyBj
ID0gZ3RmX0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQocG93KHZlYzMoZXhwMSksIDMuMCAqIGMp
IC8gZXhwMywgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cC9leHBfdmVjM192
ZXJ0X3h2YXJ5bmVnLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeW5lZy52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0OWRhMDcyODkwMjYxYTJlZWNkMDNkOTRhNjNmZDlkMmUzM2JhZmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeW5lZy52
ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAtZ3Rm
X0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQoZXhwKDMuMCAqIGMpLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMzX3ZlcnRfeHZhcnluZWdfcmVmLnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9leHAvZXhwX3ZlYzNfdmVydF94dmFyeW5lZ19yZWYudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MDc4YjFhYTcyMzBmZmNiY2YzODMwZTNhNzU0NWZmOGU1MDdlNzIzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZXhwL2V4cF92ZWMzX3ZlcnRfeHZhcnluZWdfcmVmLnZlcnQKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IGV4cDEgPSAyLjcxODM7
CisJdmVjMyBjID0gZ3RmX0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQoMS4wIC8gcG93KHZlYzMo
ZXhwMSksIDMuMCAqIGMpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwL2lu
cHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjU2
YTJiMzI5NzMxN2ViYzZiMzZkZTgyOGNlZmI3NWJlZjlmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXhwL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwzIEBACisjIHRoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitleHBfMDAxX3RvXzAwOC5odG1sCitleHBf
MDA5X3RvXzAxMi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfMDAxX3RvXzAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyXzAwMV90b18wMDguaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YzRiZTFkMzY2NGM0MjU3MjI4MzZiOTE0OThhM2FhYTRlNDIyMGRiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZXhwMi9leHAyXzAwMV90b18wMDguaHRtbApAQCAtMCwwICsxLDEzNSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9U
IEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IGNvbmZvcm1hbmNlIHRlc3Q6IGV4cDJfMDAxX3RvXzAwOC5odG1sPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVu
bmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJleHAyX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX3ZlYzJfZnJhZ194dmFyeV9y
ZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImV4cDJfdmVjMl9mcmFnX3h2YXJ5LmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwMl92ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX3ZlYzNfZnJhZ194
dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImV4cDJfdmVjM19mcmFnX3h2YXJ5
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwMl92ZWMzX2ZyYWdfeHZhcnkudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX2Zsb2F0
X2ZyYWdfeHZhcnluZWdfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX2Zsb2F0
X2ZyYWdfeHZhcnluZWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJleHAyX2Zsb2F0
X2ZyYWdfeHZhcnluZWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJleHAyX3ZlYzJfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImV4cDJfdmVjMl9mcmFnX3h2YXJ5bmVnLmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAiZXhwMl92ZWMyX2ZyYWdfeHZhcnluZWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJleHAyX3ZlYzNfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogImV4cDJfdmVjM19mcmFnX3h2YXJ5bmVnLmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiZXhwMl92ZWMzX2ZyYWdfeHZhcnluZWcudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHAyX2Zsb2F0X3ZlcnRf
eHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImV4cDJfZmxvYXRfdmVydF94
dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImV4cDJfZmxvYXRfdmVydF94dmFyeS50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImV4cDJf
dmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJleHAyX3Zl
YzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImV4cDJfdmVjMl92ZXJ0
X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAg
XQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyXzAwOV90b18wMTIuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2V4cDIvZXhwMl8wMDlfdG9fMDEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMxNzEwYzM5YzM1MWVi
Njk2MDk1NWY1ZmJkZmIyNjYwNTRjNTk5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4
cDIvZXhwMl8wMDlfdG9fMDEyLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRl
c3Q6IGV4cDJfMDA5X3RvXzAxMi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMu
Y3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0i
NTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0
ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJleHAyX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiZXhwMl92ZWMzX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJleHAyX3ZlYzNfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogImV4cDJfZmxvYXRfdmVydF94dmFyeW5lZ19yZWYudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5bmVnLnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5bmVnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZXhwMl92ZWMyX3ZlcnRf
eHZhcnluZWdfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImV4cDJfdmVjMl92ZXJ0
X3h2YXJ5bmVnLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZXhwMl92ZWMyX3ZlcnRfeHZh
cnluZWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJleHAyX3ZlYzNfdmVydF94dmFyeW5lZ19yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiZXhwMl92ZWMzX3ZlcnRfeHZhcnluZWcudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJl
eHAyX3ZlYzNfdmVydF94dmFyeW5lZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl9mbG9hdF9m
cmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfZmxvYXRfZnJhZ194dmFyeS5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzZTJkMDRhNmE1OTBkMmQ0YmEzZDg4NzdjNTJlMDUyYjY0YzFhYTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfZmxvYXRfZnJhZ194dmFyeS5mcmFn
CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSBj
b2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZXhwMig1LjAgKiBjKSAvIDMyLjAsIDAuMCwg
MC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX2Zsb2F0X2ZyYWdf
eHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfZmxvYXRfZnJhZ194dmFyeV9yZWYu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZGFkODlmOTUzOTcxZGNhMWZhMDg1NzUzMWZiMTlkZWUyNDI3Mzdj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX2Zsb2F0X2ZyYWdfeHZhcnlf
cmVmLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxv
YXQgYyA9IGNvbG9yLnI7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChwb3coMi4wLCA1LjAgKiBjKSAv
IDMyLjAsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAy
X2Zsb2F0X2ZyYWdfeHZhcnluZWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl9mbG9hdF9mcmFn
X3h2YXJ5bmVnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQyODU4NDlhYTU4OGNmY2FhYzY1ODA0MTcxY2Ji
ZTVjMmM3ZWRkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl9mbG9hdF9m
cmFnX3h2YXJ5bmVnLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJZmxvYXQgYyA9IC1jb2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZXhwMig1LjAg
KiBjKSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJf
ZmxvYXRfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl9mbG9hdF9m
cmFnX3h2YXJ5bmVnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYWQ3N2NkZGI2YzMxOTgxYWYxYjNm
N2UwMjRhMTIzMTk5N2ViNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJf
ZmxvYXRfZnJhZ194dmFyeW5lZ19yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gY29sb3IucjsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCAvIHBvdygyLjAsIDUuMCAqIGMpLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2V4cDIvZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAy
L2V4cDJfZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5M2E0ZjQyZTZkMzEzOTA3
MzFlNDk2YzIxZWZjMzUyODQ0MjE5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAy
L2V4cDJfZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisJY29sb3IgPSB2ZWM0KGV4cDIoNS4w
ICogYykgLyAzMi4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2V4cDIvZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAy
X2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E5NWRjMWExNGVkZDQxNTYw
NjgxMmFiMjBmZDdmYTg4YWRmNzExYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIv
ZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisJY29sb3IgPSB2ZWM0KHBvdygy
LjAsIDUuMCAqIGMpIC8gMzIuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9leHAyL2V4cDJfZmxvYXRfdmVydF94dmFyeW5lZy52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhw
Mi9leHAyX2Zsb2F0X3ZlcnRfeHZhcnluZWcudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTNjZTg3OWNhMGRl
MzZlMmFhMTBmODI2NmNiMjY4ZjE0M2U3NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXhwMi9leHAyX2Zsb2F0X3ZlcnRfeHZhcnluZWcudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IC1ndGZfQ29sb3IucjsKKwljb2xvciA9IHZlYzQo
ZXhwMig1LjAgKiBjKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAyL2V4cDJfZmxvYXRfdmVydF94dmFyeW5lZ19yZWYudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIv
ZXhwMl9mbG9hdF92ZXJ0X3h2YXJ5bmVnX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMDNiNjQ5NTQ0
M2E0M2NkMzMyMjI3MmYxNzZlODNkOTBmNmMxOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAyL2V4cDJfZmxvYXRfdmVydF94dmFyeW5lZ19yZWYudmVydApAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IGd0Zl9Db2xvci5yOworCWNvbG9yID0g
dmVjNCgxLjAgLyBwb3coMi4wLCA1LjAgKiBjKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRp
b24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAyL2V4cDJfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM2Yzg1NmRlMmJm
NTgzMTQ1YjE4MjBhZDU3MGY5NDc5Nzg0YzBmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2V4cDIvZXhwMl92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBjb2xvci5yZzsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KGV4cDIoNS4wICogYykgLyAzMi4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9leHAyL2V4cDJfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9l
eHAyX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGZjOWIyYTExY2E0MTNk
MTM2YmYzZjUzYjc0NmE3NzliZjY0MGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhw
Mi9leHAyX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBjb2xvci5yZzsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KHBvdyh2ZWMyKDIuMCksIDUuMCAqIGMpIC8gMzIuMCwgMC4wLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzJfZnJhZ194dmFyeW5lZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZXhwMi9leHAyX3ZlYzJfZnJhZ194dmFyeW5lZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMTEyYzc5
OTE5MmQ1MDZkODg3MWJhOTc3ODlmNzZjZjUyNDRhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9leHAyL2V4cDJfdmVjMl9mcmFnX3h2YXJ5bmVnLmZyYWcKQEAgLTAsMCArMSwxOCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gLWNvbG9yLnJnOworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoZXhwMig1LjAgKiBjKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZXhwMi9leHAyX3ZlYzJfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4
cDIvZXhwMl92ZWMyX2ZyYWdfeHZhcnluZWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExYTRlMjQy
NGJjNmE5ZTE1NzRkNGY5ZmYwMDJlMzNhZjBhOTlhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2V4cDIvZXhwMl92ZWMyX2ZyYWdfeHZhcnluZWdfcmVmLmZyYWcKQEAgLTAsMCArMSwxOCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gY29sb3Iucmc7CisJZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjAgLyBwb3codmVjMigyLjApLCA1LjAgKiBjKSwgMC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzJfdmVydF94dmFyeS52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZXhwMi9leHAyX3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZmQy
ZjZiOGEzNGIxNThhMGJjZTY4NDM4NTkwYTY5NGY2ODIyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9leHAyL2V4cDJfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGd0Zl9Db2xvci5yZzsKKwljb2xvciA9IHZl
YzQoZXhwMig1LjAgKiBjKSAvIDMyLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2V4cDIvZXhwMl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAy
L2V4cDJfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YWU5ZmExODBiNjI3
YTM4MjBiNTg5MDM0NzQ4OGMyNzFjMWZiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9l
eHAyL2V4cDJfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0KHBv
dyh2ZWMyKDIuMCksIDUuMCAqIGMpIC8gMzIuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzJfdmVydF94dmFyeW5lZy52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZXhwMi9leHAyX3ZlYzJfdmVydF94dmFyeW5lZy52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDZmOTdmODJi
YWYwNTZiM2I4N2JhZGNmNGQ5NDk3MjM2M2IwODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAyL2V4cDJfdmVjMl92ZXJ0X3h2YXJ5bmVnLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IC1ndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0
KGV4cDIoNS4wICogYyksIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4
cDIvZXhwMl92ZWMyX3ZlcnRfeHZhcnluZWdfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJf
dmVjMl92ZXJ0X3h2YXJ5bmVnX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YTE5ZDQ1MGYwZjg0ZTBi
Njc4NTk4YzczOGU1MjlmNmU3ZWE4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAy
L2V4cDJfdmVjMl92ZXJ0X3h2YXJ5bmVnX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0KDEu
MCAvIHBvdyh2ZWMyKDIuMCksIDUuMCAqIGMpLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAy
L2V4cDJfdmVjM19mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJlNDFkMzAwMjk4M2IwOGJj
ZDExMmNlODgyZjNlMzM3ZDZlYjAyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIv
ZXhwMl92ZWMzX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWMzIGMgPSBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChl
eHAyKDUuMCAqIGMpIC8gMzIuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIv
ZXhwMl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVjM19m
cmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxNzE5ZmMyMjZlNDU3MmYyM2FkOTZkNzU2
ZmRjZTRiODYxYmFiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVj
M19mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzMgYyA9IGNvbG9yLnJnYjsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHBvdyh2
ZWMzKDIuMCksIDUuMCAqIGMpIC8gMzIuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2V4cDIvZXhwMl92ZWMzX2ZyYWdfeHZhcnluZWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl92
ZWMzX2ZyYWdfeHZhcnluZWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjc5OTg3NGNlYzY3YjY3ZmM2MDkw
NWVlNmUzNmMwZDk4YzQ0MTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAy
X3ZlYzNfZnJhZ194dmFyeW5lZy5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzMgYyA9IC1jb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChl
eHAyKDUuMCAqIGMpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3Zl
YzNfZnJhZ194dmFyeW5lZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl92ZWMzX2ZyYWdf
eHZhcnluZWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc4MDdkNGM2YjlmY2Y1ZTdmOWRmNmUyNmYy
ZDJkM2NjNWQyNzdkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl92ZWMz
X2ZyYWdfeHZhcnluZWdfcmVmLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMyBjID0gY29sb3IucmdiOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoMS4w
IC8gcG93KHZlYzMoMi4wKSwgNS4wICogYyksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9leHAyL2V4cDJfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVj
M192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNlOWY5MWJlMDRhYTVjMWFhNmY3YTA2MGRk
OGUyNDAzYTU4N2M4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl92ZWMz
X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMyBjID0gZ3RmX0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQoZXhwMig1LjAgKiBjKSAvIDMy
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVjM192ZXJ0
X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzNfdmVydF94dmFyeV9yZWYu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMjBhNTZlNzA4MTEyMjJkNDIwMzc2OTVmMzA4Mzc3NDI4ZmEwNDM5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzNfdmVydF94dmFyeV9y
ZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0g
Z3RmX0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQocG93KHZlYzMoMi4wKSwgNS4wICogYykgLyAz
Mi4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzNfdmVy
dF94dmFyeW5lZy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzNfdmVydF94dmFyeW5lZy52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcwOGNkMDQ5NGMzM2ZkZTkwNTAyYzE3ZDVkNDI3MjA2MTAxYTYwNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2V4cDJfdmVjM192ZXJ0X3h2YXJ5bmVn
LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IC1n
dGZfQ29sb3IucmdiOworCWNvbG9yID0gdmVjNChleHAyKDUuMCAqIGMpLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9leHAyX3ZlYzNfdmVydF94dmFyeW5lZ19yZWYudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2V4cDIvZXhwMl92ZWMzX3ZlcnRfeHZhcnluZWdfcmVmLnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2EwMjM4ZjU5YzI0YTA3NjhjOWFlN2M2ZmQ2OWFjMTAyNTIyODg3NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2V4cDIvZXhwMl92ZWMzX3ZlcnRfeHZhcnluZWdfcmVmLnZlcnQK
QEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGd0Zl9Db2xv
ci5yZ2I7CisJY29sb3IgPSB2ZWM0KDEuMCAvIHBvdyh2ZWMzKDIuMCksIDUuMCAqIGMpLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZXhwMi9pbnB1dC5ydW4udHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZXhwMi9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OTNjZDQxM2ViOTk3ZTMyZjk2ZTNl
NmQzOTRkODAyZjlkZjk1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9leHAyL2lucHV0
LnJ1bi50eHQKQEAgLTAsMCArMSwzIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4g
RE8gTk9UIEVESVQuCitleHAyXzAwMV90b18wMDguaHRtbAorZXhwMl8wMDlfdG9fMDEyLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkXzAwMV90b18wMDYu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkXzAwMV90b18wMDYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MTFlOGNmZWJiYjVmN2ZjMDU4ZWVlZWRjOTFmNWU4MDU3M2E1MWExCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfMDAxX3RvXzAw
Ni5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZmFjZWZvcndhcmRf
MDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHls
ZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJmYWNlZm9yd2FyZF9mbG9hdF9mcmFnX252YXJ5aWNvbnN0X3JlZi5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiZmFjZWZvcndhcmRfZmxvYXRfZnJhZ19udmFyeWljb25zdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogImZhY2Vmb3J3YXJkX2Zsb2F0X2ZyYWdfbnZhcnlpY29uc3Qu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmYWNl
Zm9yd2FyZF9mbG9hdF92ZXJ0X252YXJ5aWNvbnN0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJmYWNlZm9yd2FyZF9mbG9hdF92ZXJ0X252YXJ5aWNvbnN0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAiZmFjZWZvcndhcmRfZmxvYXRfdmVydF9udmFyeWljb25zdC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImZhY2Vmb3J3YXJkX3Zl
YzJfZnJhZ19udmFyeWljb25zdF9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBu
dWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImZhY2Vm
b3J3YXJkX3ZlYzJfZnJhZ19udmFyeWljb25zdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImZhY2Vmb3J3YXJkX3ZlYzJfZnJhZ19udmFyeWljb25zdC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImZhY2Vmb3J3YXJkX3ZlYzJfdmVydF9u
dmFyeWljb25zdF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZmFjZWZvcndhcmRf
dmVjMl92ZXJ0X252YXJ5aWNvbnN0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmFjZWZv
cndhcmRfdmVjMl92ZXJ0X252YXJ5aWNvbnN0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZmFjZWZvcndhcmRfdmVjM19mcmFnX252YXJ5aWNvbnN0X3Jl
Zi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZmFjZWZvcndhcmRfdmVjM19mcmFnX252YXJ5
aWNvbnN0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmFjZWZvcndhcmRfdmVjM19m
cmFnX252YXJ5aWNvbnN0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiZmFjZWZvcndhcmRfdmVjM192ZXJ0X252YXJ5aWNvbnN0X3JlZi52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJmYWNlZm9yd2FyZF92ZWMzX3ZlcnRfbnZhcnlpY29uc3Qu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmYWNlZm9yd2FyZF92ZWMzX3ZlcnRfbnZhcnlp
Y29uc3QudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBd
Cit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF9mbG9hdF9mcmFn
X252YXJ5aWNvbnN0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF9mbG9h
dF9mcmFnX252YXJ5aWNvbnN0LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFmYjQ5NTQ1OGMzNTUwZWJmMmIw
YmVhNjMyOWJhODk3NmNiNGQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3
YXJkL2ZhY2Vmb3J3YXJkX2Zsb2F0X2ZyYWdfbnZhcnlpY29uc3QuZnJhZwpAQCAtMCwwICsxLDIz
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1
OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVuaXQgdmVjdG9ycworCWZsb2F0IHYx
ID0gKGNvbG9yLmcgKiAyLjApIC0gMS4wOworCWZsb2F0IHYyID0gKGNvbG9yLmIgKiAyLjApIC0g
MS4wOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZmFjZWZvcndhcmQodjEsIHYyLCB2MSkgKyAx
LjApIC8gMi4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vm
b3J3YXJkL2ZhY2Vmb3J3YXJkX2Zsb2F0X2ZyYWdfbnZhcnlpY29uc3RfcmVmLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF9mbG9hdF9mcmFnX252YXJ5aWNvbnN0X3JlZi5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc4OGQyNGIxZTk4NDFiNzczYzg4OGZmMTlmMmRjYmYwMDNiNzAxMDkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF9mbG9h
dF9mcmFnX252YXJ5aWNvbnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2
OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJZmxvYXQgdjEgPSAoY29sb3IuZyAqIDIu
MCkgLSAxLjA7CisJZmxvYXQgdjIgPSAoY29sb3IuYiAqIDIuMCkgLSAxLjA7CisKKwlpZihkb3Qo
djEsIHYyKSA+PSAwLjApIHYxICo9IC0xLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgodjEgKyAx
LjApIC8gMi4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vm
b3J3YXJkL2ZhY2Vmb3J3YXJkX2Zsb2F0X3ZlcnRfbnZhcnlpY29uc3QudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX2Zsb2F0X3ZlcnRfbnZhcnlpY29uc3QudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZjgwNmU3MjdlNDk4N2NhM2ZlZWQ4MWE4MGY5NGFhYmU0NjBkZDE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfZmxvYXRfdmVydF9u
dmFyeWljb25zdC52ZXJ0CkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJl
IHVuaXQgdmVjdG9ycworCWZsb2F0IHYxID0gKGd0Zl9Db2xvci5nICogMi4wKSAtIDEuMDsKKwlm
bG9hdCB2MiA9IChndGZfQ29sb3IuYiAqIDIuMCkgLSAxLjA7CisKKwljb2xvciA9IHZlYzQoKGZh
Y2Vmb3J3YXJkKHYxLCB2MiwgdjEpICsgMS4wKSAvIDIuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF9mbG9hdF92ZXJ0
X252YXJ5aWNvbnN0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRf
ZmxvYXRfdmVydF9udmFyeWljb25zdF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjhjY2IxZmQ1NjNm
Y2ZlNTU1YTI4NjFiNWMzN2RhN2EwNzFhZTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfZmxvYXRfdmVydF9udmFyeWljb25zdF9yZWYudmVydApA
QCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9
IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwlm
bG9hdCB2MSA9IChndGZfQ29sb3IuZyAqIDIuMCkgLSAxLjA7CisJZmxvYXQgdjIgPSAoZ3RmX0Nv
bG9yLmIgKiAyLjApIC0gMS4wOworCisJaWYoZG90KHYxLCB2MikgPj0gMC4wKSB2MSAqPSAtMS4w
OworCWNvbG9yID0gdmVjNCgodjEgKyAxLjApIC8gMi4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzJfZnJhZ19u
dmFyeWljb25zdC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfdmVjMl9m
cmFnX252YXJ5aWNvbnN0LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg3NzExNTM5NjgxNGNhZDNhYjdhMWI4
YWJkZmFhMjQyODk4ZDVjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJk
L2ZhY2Vmb3J3YXJkX3ZlYzJfZnJhZ19udmFyeWljb25zdC5mcmFnCkBAIC0wLDAgKzEsMjkgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1
MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMiB2MTsKKwl2
ZWMyIHYyID0gbm9ybWFsaXplKHZlYzIoMS4wLCAxLjApKTsKKworCisJZmxvYXQgdGhldGEgPSBj
b2xvci5nICogMi4wICogTV9QSTsKKwlmbG9hdCBwaGkgPSBjb2xvci5iICogMi4wICogTV9QSTsK
Kwl2MS54ID0gY29zKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2lu
KHBoaSk7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KChmYWNlZm9yd2FyZCh2MSwgdjIsIHYxKSAr
IDEuMCkgLyAyLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3
YXJkL2ZhY2Vmb3J3YXJkX3ZlYzJfZnJhZ19udmFyeWljb25zdF9yZWYuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzJfZnJhZ19udmFyeWljb25zdF9yZWYuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNmNmMjE1YzY2NDRkMjZjNjUzNWIyYWRmOTI5MGU2NGZkM2FhNjkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfdmVjMl9mcmFn
X252YXJ5aWNvbnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJ
Ly8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMiB2MTsKKwl2ZWMyIHYyID0gbm9ybWFsaXpl
KHZlYzIoMS4wLCAxLjApKTsKKworCisJZmxvYXQgdGhldGEgPSBjb2xvci5nICogMi4wICogTV9Q
STsKKwlmbG9hdCBwaGkgPSBjb2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRoZXRh
KSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisKKwlpZihkb3Qo
djEsIHYyKSA+PSAwLjApIHYxICo9IC0xLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgodjEgKyAx
LjApIC8gMi4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2Fy
ZC9mYWNlZm9yd2FyZF92ZWMyX3ZlcnRfbnZhcnlpY29uc3QudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vm
b3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzJfdmVydF9udmFyeWljb25zdC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4ZDVlMjY0Nzc5Nzc4ZmIxN2U3N2FiMjdjNDdlNDJlZjdhYTgyNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF92ZWMyX3ZlcnRfbnZhcnlpY29u
c3QudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZl
Y3RvcnMKKwl2ZWMyIHYxOworCXZlYzIgdjIgPSBub3JtYWxpemUodmVjMigxLjAsIDEuMCkpOwor
CisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0g
Z3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7
CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKworCWNvbG9yID0gdmVjNCgoZmFjZWZv
cndhcmQodjEsIHYyLCB2MSkgKyAxLjApIC8gMi4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF92ZWMyX3ZlcnRfbnZhcnlpY29u
c3RfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF92ZWMyX3ZlcnRf
bnZhcnlpY29uc3RfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ExMDIwMTViYjI0MDYwMGY5YzQ4ZjIz
MzIxZWIzYWQ2ODljMmI3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJk
L2ZhY2Vmb3J3YXJkX3ZlYzJfdmVydF9udmFyeWljb25zdF9yZWYudmVydApAQCAtMCwwICsxLDMw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUz
NTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMyIHYxOworCXZl
YzIgdjIgPSBub3JtYWxpemUodmVjMigxLjAsIDEuMCkpOworCisJZmxvYXQgdGhldGEgPSBndGZf
Q29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gZ3RmX0NvbG9yLmIgKiAyLjAgKiBN
X1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkg
KiBzaW4ocGhpKTsKKworCWlmKGRvdCh2MSwgdjIpID49IDAuMCkgdjEgKj0gLTEuMDsKKwljb2xv
ciA9IHZlYzQoKHYxICsgMS4wKSAvIDIuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfdmVjM19mcmFnX252YXJ5aWNvbnN0LmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF92ZWMzX2ZyYWdfbnZhcnlpY29u
c3QuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZDUwNDUzMDE4ZGFhNmEzMDVlZDUyNzY2OGViMzBkNzg5MzJj
NWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRf
dmVjM19mcmFnX252YXJ5aWNvbnN0LmZyYWcKQEAgLTAsMCArMSwzMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7
CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMzIHYxOworCXZlYzMgdjIgPSBub3Jt
YWxpemUodmVjMygxLjAsIDEuMCwgMS4wKSk7CisKKworCWZsb2F0IHRoZXRhID0gY29sb3IuZyAq
IDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gY29sb3IuYiAqIDIuMCAqIE1fUEk7CisJdjEueCA9
IGNvcyh0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS55ID0gc2luKHRoZXRhKSAqIHNpbihwaGkpOwor
CXYxLnogPSBjb3MocGhpKTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKGZhY2Vmb3J3YXJkKHYx
LCB2MiwgdjEpICsgMS4wKSAvIDIuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zh
Y2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzNfZnJhZ19udmFyeWljb25zdF9yZWYuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzNfZnJhZ19udmFyeWljb25zdF9yZWYu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MzE2Zjc4YmEzYTkxMDBjZjQwMjNjYWQxM2IzZTcxYjkzZTE3YmI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfdmVj
M19mcmFnX252YXJ5aWNvbnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2
OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2ZWMzIHYyID0gbm9y
bWFsaXplKHZlYzMoMS4wLCAxLjAsIDEuMCkpOworCisKKwlmbG9hdCB0aGV0YSA9IGNvbG9yLmcg
KiAyLjAgKiBNX1BJOworCWZsb2F0IHBoaSA9IGNvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLngg
PSBjb3ModGhldGEpICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsK
Kwl2MS56ID0gY29zKHBoaSk7CisKKwlpZihkb3QodjEsIHYyKSA+PSAwLjApIHYxICo9IC0xLjA7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgodjEgKyAxLjApIC8gMi4wLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRfdmVjM192ZXJ0X252YXJ5aWNv
bnN0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mYWNlZm9yd2FyZC9mYWNlZm9yd2FyZF92ZWMzX3ZlcnRfbnZh
cnlpY29uc3QudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGNiOThjNmUwNzk2YmZiY2RmZjdlZGJlYWYzNDQ4
OGE4YTExMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZv
cndhcmRfdmVjM192ZXJ0X252YXJ5aWNvbnN0LnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2
OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2ZWMzIHYyID0gbm9y
bWFsaXplKHZlYzMoMS4wLCAxLjAsIDEuMCkpOworCisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3Iu
ZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gZ3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOwor
CXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4o
cGhpKTsKKwl2MS56ID0gY29zKHBoaSk7CisKKwljb2xvciA9IHZlYzQoKGZhY2Vmb3J3YXJkKHYx
LCB2MiwgdjEpICsgMS4wKSAvIDIuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzNfdmVydF9udmFyeWljb25zdF9yZWYudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2ZhY2Vmb3J3YXJkL2ZhY2Vmb3J3YXJkX3ZlYzNfdmVydF9udmFyeWljb25zdF9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNmM4ZTZiMmVkNGJlZDFlNzU5NmM4YThlMWQ1MGYwNjk0Mjhm
NTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvZmFjZWZvcndhcmRf
dmVjM192ZXJ0X252YXJ5aWNvbnN0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsK
KworCS8vIEJvdGggYXJlIHVuaXQgdmVjdG9ycworCXZlYzMgdjE7CisJdmVjMyB2MiA9IG5vcm1h
bGl6ZSh2ZWMzKDEuMCwgMS4wLCAxLjApKTsKKworCWZsb2F0IHRoZXRhID0gZ3RmX0NvbG9yLmcg
KiAyLjAgKiBNX1BJOworCWZsb2F0IHBoaSA9IGd0Zl9Db2xvci5iICogMi4wICogTV9QSTsKKwl2
MS54ID0gY29zKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBo
aSk7CisJdjEueiA9IGNvcyhwaGkpOworCisJaWYoZG90KHYxLCB2MikgPj0gMC4wKSB2MSAqPSAt
MS4wOworCWNvbG9yID0gdmVjNCgodjEgKyAxLjApIC8gMi4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZmFjZWZvcndhcmQvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vm
b3J3YXJkL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEwN2U2Mzk3OTk1ODMxZDI0OTFkMDUy
MGM2ODljNDlkNGNmMTk2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZhY2Vmb3J3YXJk
L2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRE8gTk9UIEVESVQuCitmYWNlZm9yd2FyZF8wMDFfdG9fMDA2Lmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Zsb29yL2Zsb29yXzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29y
L2Zsb29yXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzNhYmRjZWRlYTFlODRjNjVmZTMw
OGRhNWI1ODBmNTM5MWY2ODBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxvb3IvZmxv
b3JfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDog
Zmxvb3JfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3Nz
IiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAw
IiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0
cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJmbG9vcl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiZmxvb3JfZmxvYXRfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImZsb29yX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJmbG9vcl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJmbG9vcl92ZWMyX2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJmbG9vcl92ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJmbG9vcl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJmbG9vcl92ZWMzX2ZyYWdfeHZhcnkuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9vcl92ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmbG9vcl9mbG9hdF92ZXJ0
X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmbG9vcl9mbG9hdF92ZXJ0
X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmxvb3JfZmxvYXRfdmVydF94dmFy
eS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImZs
b29yX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3Jp
ZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZmxv
b3JfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmxvb3JfdmVj
Ml92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiZmxvb3JfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJmbG9vcl92ZWMzX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJmbG9vcl92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl9mbG9h
dF9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl9mbG9hdF9mcmFnX3h2YXJ5
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWI3NGUwNDViNjIzYzZjOWIwOTIwYjg0ODAwOGIwZWVjMDg5YTYx
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9h
dCBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KChmbG9vcihjKSArIDEwLjApIC8gMjAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZmxvb3IvZmxvb3JfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDdh
Nzg2YTk4YWFmNGExNTMxYzAwNmVhNGQyNTEzZTE5ZDg5ZTA0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZmxvb3IvZmxvb3JfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsx
LDI3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK2Zsb2F0IGZsb29yX3JlZihmbG9hdCB4KQoreworCWlmKHggPj0gMC4wKQor
CQl4ID0gZmxvYXQoaW50KHgpKTsKKwllbHNlCisJCXggPSBmbG9hdChpbnQoeCkgLSAxKTsKKwly
ZXR1cm4geDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAxMC4wICogMi4w
ICogKGNvbG9yLnIgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKGZsb29yX3JlZihjKSAr
IDEwLjApIC8gMjAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
bG9vci9mbG9vcl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl9m
bG9hdF92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg3MjU5OTQwYWY4OTg5NGFmNWNkYmRh
NDZkNzMyZTYxM2MwNzdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29y
X2Zsb2F0X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJZmxvYXQgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9y
ID0gdmVjNCgoZmxvb3IoYykgKyAxMC4wKSAvIDIwLjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxvb3IvZmxvb3JfZmxvYXRfdmVydF94dmFyeV9yZWYudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWZlMTdjNzQwZmQzOGI5YTU3OTcwYjBiNTk4MzY3ZmE4NzE3NGNiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQK
QEAgLTAsMCArMSwyOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworZmxvYXQgZmxvb3JfcmVmKGZsb2F0IHgpCit7CisJaWYoeCA+PSAw
LjApCisJCXggPSBmbG9hdChpbnQoeCkpOworCWVsc2UKKwkJeCA9IGZsb2F0KGludCh4KSAtIDEp
OworCXJldHVybiB4OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDEwLjAg
KiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9yID0gdmVjNCgoZmxvb3JfcmVmKGMp
ICsgMTAuMCkgLyAyMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Zsb29yL2Zsb29yX3ZlYzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxvb3IvZmxv
b3JfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNmQ5YTE1ZmJhYjYyZGI3YjU5
OTc3YzRiZDcxMjg3NzNjMjAyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zs
b29yX3ZlYzJfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzIgYyA9IDEwLjAgKiAyLjAgKiAoY29sb3IucmcgLSAwLjUpOworCWds
X0ZyYWdDb2xvciA9IHZlYzQoKGZsb29yKGMpICsgMTAuMCkgLyAyMC4wLCAwLjAsIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2Y1MzdjYzM1NzMyZjYzZDEwYTVjOWE2MjlmODM3NmM0OTgyYTk2YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpA
QCAtMCwwICsxLDMxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZlYzIgZmxvb3JfcmVmKHZlYzIgeCkKK3sKKwlpZih4WzBd
ID49IDAuMCkKKwkJeFswXSA9IGZsb2F0KGludCh4WzBdKSk7CisJZWxzZQorCQl4WzBdID0gZmxv
YXQoaW50KHhbMF0pIC0gMSk7CisJaWYoeFsxXSA+PSAwLjApCisJCXhbMV0gPSBmbG9hdChpbnQo
eFsxXSkpOworCWVsc2UKKwkJeFsxXSA9IGZsb2F0KGludCh4WzFdKSAtIDEpOworCXJldHVybiB4
OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTAuMCAqIDIuMCAqIChjb2xv
ci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZmxvb3JfcmVmKGMpICsgMTAuMCkg
LyAyMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92
ZWMyX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX3ZlYzJfdmVydF94dmFy
eS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNiNTNlMjNkYWQ5ZmIxZDJkNTQ4MzlmZTBkZmRkMGFmMjdiNjgy
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMyX3ZlcnRfeHZh
cnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
MTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCWNvbG9yID0gdmVjNCgoZmxvb3Io
YykgKyAxMC4wKSAvIDIwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Zsb29yL2Zsb29yX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zs
b29yX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWJiM2EwZjBmOGNkYWJh
ZGU2Zjg0Mjg0MThlYjg2NjNmMGNkZmZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxv
b3IvZmxvb3JfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzIgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZlYzIg
Zmxvb3JfcmVmKHZlYzIgeCkKK3sKKwlpZih4WzBdID49IDAuMCkKKwkJeFswXSA9IGZsb2F0KGlu
dCh4WzBdKSk7CisJZWxzZQorCQl4WzBdID0gZmxvYXQoaW50KHhbMF0pIC0gMSk7CisJaWYoeFsx
XSA+PSAwLjApCisJCXhbMV0gPSBmbG9hdChpbnQoeFsxXSkpOworCWVsc2UKKwkJeFsxXSA9IGZs
b2F0KGludCh4WzFdKSAtIDEpOworCXJldHVybiB4OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMiBjID0gMTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUpOworCWNvbG9yID0g
dmVjNCgoZmxvb3JfcmVmKGMpICsgMTAuMCkgLyAyMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRp
b24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Zsb29yL2Zsb29yX3ZlYzNfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YmQ1NzIx
NzgwNzZiZGQyY2IzYmVmOGZlYzhmODBmMWY5M2ZiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mbG9vci9mbG9vcl92ZWMzX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAxMC4wICogMi4wICogKGNvbG9yLnJn
YiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZmxvb3IoYykgKyAxMC4wKSAvIDIwLjAs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX2ZyYWdfeHZh
cnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjc5Zjc2NWM0MDgzZDQ5YmIwZDQzNjUwM2Y1MTMzMjFmOTFmODBhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Zsb29yL2Zsb29yX3ZlYzNfZnJhZ194dmFyeV9y
ZWYuZnJhZwpAQCAtMCwwICsxLDM1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZlYzMgZmxvb3JfcmVmKHZlYzMgeCkKK3sK
KwlpZih4WzBdID49IDAuMCkKKwkJeFswXSA9IGZsb2F0KGludCh4WzBdKSk7CisJZWxzZQorCQl4
WzBdID0gZmxvYXQoaW50KHhbMF0pIC0gMSk7CisJaWYoeFsxXSA+PSAwLjApCisJCXhbMV0gPSBm
bG9hdChpbnQoeFsxXSkpOworCWVsc2UKKwkJeFsxXSA9IGZsb2F0KGludCh4WzFdKSAtIDEpOwor
CWlmKHhbMl0gPj0gMC4wKQorCQl4WzJdID0gZmxvYXQoaW50KHhbMl0pKTsKKwllbHNlCisJCXhb
Ml0gPSBmbG9hdChpbnQoeFsyXSkgLSAxKTsKKwlyZXR1cm4geDsKK30KKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzMgYyA9IDEwLjAgKiAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwlnbF9G
cmFnQ29sb3IgPSB2ZWM0KChmbG9vcl9yZWYoYykgKyAxMC4wKSAvIDIwLjAsIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Zsb29yL2Zsb29yX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYWNj
NjNmYjIwZDk3ZTA4YjMyNjE5ZGE3MTkzOWUzZDAxZDc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMTAuMCAqIDIuMCAqIChndGZfQ29sb3Iu
cmdiIC0gMC41KTsKKwljb2xvciA9IHZlYzQoKGZsb29yKGMpICsgMTAuMCkgLyAyMC4wLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxvb3IvZmxvb3JfdmVjM192ZXJ0X3h2YXJ5
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZmxvb3IvZmxvb3JfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5MTNhMmIwMGMxOGIzOTVhMmRjMzAyZDFkNjkwODk4ODEzNTRlN2UKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9mbG9vcl92ZWMzX3ZlcnRfeHZhcnlfcmVm
LnZlcnQKQEAgLTAsMCArMSwzNiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordmVjMyBmbG9vcl9yZWYodmVjMyB4KQoreworCWlmKHhb
MF0gPj0gMC4wKQorCQl4WzBdID0gZmxvYXQoaW50KHhbMF0pKTsKKwllbHNlCisJCXhbMF0gPSBm
bG9hdChpbnQoeFswXSkgLSAxKTsKKwlpZih4WzFdID49IDAuMCkKKwkJeFsxXSA9IGZsb2F0KGlu
dCh4WzFdKSk7CisJZWxzZQorCQl4WzFdID0gZmxvYXQoaW50KHhbMV0pIC0gMSk7CisJaWYoeFsy
XSA+PSAwLjApCisJCXhbMl0gPSBmbG9hdChpbnQoeFsyXSkpOworCWVsc2UKKwkJeFsyXSA9IGZs
b2F0KGludCh4WzJdKSAtIDEpOworCXJldHVybiB4OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMyBjID0gMTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9
IHZlYzQoKGZsb29yX3JlZihjKSArIDEwLjApIC8gMjAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Zsb29yL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9pbnB1dC5y
dW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzNzc4N2RiOGI5MGEzOWQ2NTYyNDdhYjRkOGI4YzFlYzliNjRm
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mbG9vci9pbnB1dC5ydW4udHh0CkBAIC0w
LDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgor
Zmxvb3JfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF8w
MDFfdG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF8wMDFfdG9fMDA2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWNjZjY5MzdmMWQ5ZGI4YTE0NDdiN2FmY2YzYzQwZTExYzA2Yzk0ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0XzAwMV90b18wMDYuaHRtbApAQCAtMCww
ICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGZyYWN0XzAwMV90b18wMDYuaHRtbDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
b2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWln
aHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09w
ZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZnJhY3RfZmxvYXRfZnJhZ194
dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImZyYWN0X2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmcmFjdF9mbG9hdF9mcmFnX3h2YXJ5
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZnJhY3Rf
dmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZnJhY3RfdmVj
Ml9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZnJhY3RfdmVjMl9m
cmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiZnJhY3RfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
ZnJhY3RfdmVjM19mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZnJh
Y3RfdmVjM19mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZnJhY3RfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZnJhY3RfZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogImZyYWN0X2Zsb2F0X3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmcmFjdF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogImZyYWN0X3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogImZyYWN0X3ZlYzJfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImZyYWN0X3ZlYzNfdmVydF94
dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZnJhY3RfdmVjM192ZXJ0X3h2
YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZnJhY3RfdmVjM192ZXJ0X3h2YXJ5LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnJhY3QvZnJhY3RfZmxvYXRfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnJhY3QvZnJhY3RfZmxvYXRfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5MDBmNThk
YmNmMzE1NjZlMjU1MGQ2Mzg5ZTUxYTUzOWE0ZTU3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mcmFjdC9mcmFjdF9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDEwLjAgKiAyLjAgKiAoY29sb3Iu
ciAtIDAuNSk7CisJYyA9IGFicyhmcmFjdChjKSAtIDAuNSkgKiAyLjA7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChjLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0
L2ZyYWN0X2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF9m
bG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZDJhMTQ2NDgxYmFkYzA2ZjAw
MDA0MTZiMTZiNDZhOTE5MDA0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9m
cmFjdF9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAxMC4wICogMi4wICogKGNvbG9yLnIgLSAwLjUp
OworCWMgPSBhYnMoKGMgLSBmbG9vcihjKSkgLSAwLjUpICogMi4wOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9m
cmFjdF9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF9mbG9hdF92
ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI4ZDU2MGI4YjQwNzIwZDU1OTYzYWQwZDg5YTI3
Yzc0MzUzYmQxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X2Zsb2F0
X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
ZmxvYXQgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWMgPSBhYnMoZnJh
Y3QoYykgLSAwLjUpICogMi4wOworCWNvbG9yID0gdmVjNChjLCAwLjAsIDAuMCwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X2Zsb2F0X3ZlcnRfeHZhcnlfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhNjQ0YjJmYjBmYWM5YTljYTJhMjk3MWRhNjIwMjI2YzBhOGQ4ZDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52
ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTAu
MCAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAuNSk7CisJYyA9IGFicygoYyAtIGZsb29yKGMpKSAt
IDAuNSkgKiAyLjA7CisJY29sb3IgPSB2ZWM0KGMsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnJhY3QvZnJhY3RfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mcmFjdC9mcmFjdF92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mjg4ZmM1
ZmU5MmM4OTY0NzcwOGVkNWFiNTg1N2JiNDgyNDc2ZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZnJhY3QvZnJhY3RfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxOSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5y
ZyAtIDAuNSk7CisJYyA9IGFicyhmcmFjdChjKSAtIDAuNSkgKiAyLjA7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChjLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFj
dF92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF92ZWMyX2Zy
YWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RmN2U5ZDg4ZjBhOTJkYmMyMDA1MzJkOGI0
MWM0YTY2ZTNmYWMxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X3Zl
YzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMyIGMgPSAxMC4wICogMi4wICogKGNvbG9yLnJnIC0gMC41KTsKKwljID0g
YWJzKChjIC0gZmxvb3IoYykpIC0gMC41KSAqIDIuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMs
IDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X3ZlYzJfdmVy
dF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnJhY3QvZnJhY3RfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGM3MDJhODI1NzdlZWMyM2IyYjVmZTljNGIyNTFkYzMyMTYzNWVjMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X3ZlYzJfdmVydF94dmFyeS52ZXJ0
CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAxMC4wICog
Mi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJYyA9IGFicyhmcmFjdChjKSAtIDAuNSkgKiAy
LjA7CisJY29sb3IgPSB2ZWM0KGMsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2ZyYWN0L2ZyYWN0X3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0
L2ZyYWN0X3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjgxNTQxYWY3OTRi
YjU3MWM1NTRiMGIyNmQ2YjgwZGI0ZDMxMjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnJhY3QvZnJhY3RfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAxMC4wICogMi4wICogKGd0Zl9Db2xvci5yZyAt
IDAuNSk7CisJYyA9IGFicygoYyAtIGZsb29yKGMpKSAtIDAuNSkgKiAyLjA7CisJY29sb3IgPSB2
ZWM0KGMsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0
X3ZlYzNfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnJhY3QvZnJhY3RfdmVjM19mcmFnX3h2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBjZTlkMDBkZDM5MTllY2UwMzI1ZjZiMDIwYTY5NzUyNWE1
OGQ0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X3ZlYzNfZnJhZ194
dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IDEwLjAgKiAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwljID0gYWJzKGZyYWN0KGMp
IC0gMC41KSAqIDIuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mcmFjdC9mcmFjdF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEx
ZGNmNWYyMWNkNzk0NTQ2NWY4NTVlZWZhMzMzZmM3OTIwYzI0ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2ZyYWN0L2ZyYWN0X3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsx
LDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAxMC4wICogMi4wICog
KGNvbG9yLnJnYiAtIDAuNSk7CisJYyA9IGFicygoYyAtIGZsb29yKGMpKSAtIDAuNSkgKiAyLjA7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnJhY3QvZnJhY3RfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF92
ZWMzX3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTJlZjVkNDU0MDk2ZDQyYjMyMTRmNTUz
MDI1ZGQ5MmJjOTE5MDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnJhY3QvZnJhY3Rf
dmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzMgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJYyA9IGFi
cyhmcmFjdChjKSAtIDAuNSkgKiAyLjA7CisJY29sb3IgPSB2ZWM0KGMsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mcmFjdC9mcmFjdF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjlkYmM0ZWY5YTJmYjUxYzMzYTZmZjA3ZDc4ZGNiOGM4MzcxMTk0MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2ZyYWN0L2ZyYWN0X3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApAQCAt
MCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMTAuMCAqIDIuMCAq
IChndGZfQ29sb3IucmdiIC0gMC41KTsKKwljID0gYWJzKChjIC0gZmxvb3IoYykpIC0gMC41KSAq
IDIuMDsKKwljb2xvciA9IHZlYzQoYywgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2ZyYWN0L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9pbnB1dC5ydW4udHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc0Y2NjNjhiNTRjZTUzYzRmZThjMmIxZTk4MTlkMjg0MDhjOTVhYWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mcmFjdC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAor
IyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorZnJhY3RfMDAxX3Rv
XzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYXJyYXlfZmxvYXRfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2FycmF5X2Zsb2F0X2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hM2Y4MTI4OWM5YjBhMmY0NGNiOGZjYTA3MDRjNjI4Mjg4Zjc4ZjA0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2FycmF5X2Zsb2F0X2ZyYWcuZnJhZwpAQCAtMCww
ICsxLDg1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKKworCit2b2lkIHF1YWxpZmllcnMoaW4gZmxvYXQgYVs0XSwgb3V0IGZs
b2F0IGJbNF0sIGlub3V0IGZsb2F0IGNbNF0sIGNvbnN0IGluIGZsb2F0IGRbNF0sIGZsb2F0IGVb
NF0pCit7CisJYlswXSA9IGFbMF07CisJY1swXSArPSBkWzBdOworCWFbMF0gKz0gMS4wOworCWVb
MF0gKz0gMS4wOworCisJYlsxXSA9IGFbMV07CisJY1sxXSArPSBkWzFdOworCWFbMV0gKz0gMS4w
OworCWVbMV0gKz0gMS4wOworCisJYlsyXSA9IGFbMl07CisJY1syXSArPSBkWzJdOworCWFbMl0g
Kz0gMS4wOworCWVbMl0gKz0gMS4wOworCisJYlszXSA9IGFbM107CisJY1szXSArPSBkWzNdOwor
CWFbM10gKz0gMS4wOworCWVbM10gKz0gMS4wOworfQorCisKKwordm9pZCBtYWluICh2b2lkKQor
eworCWZsb2F0IGFbNF07CisJZmxvYXQgYls0XTsKKwlmbG9hdCBjWzRdOworCWZsb2F0IGRbNF07
CisJZmxvYXQgZVs0XTsKKwlmbG9hdCBxID0gMC4wOworCWZsb2F0IHEyID0gMC4wOworCisJYVsw
XSA9IDEuMDsKKwliWzBdID0gMi4wOworCWNbMF0gPSAzLjA7CisJZFswXSA9IDQuMDsKKwllWzBd
ID0gMS4wOworCisJYVsxXSA9IDEuMDsKKwliWzFdID0gMi4wOworCWNbMV0gPSAzLjA7CisJZFsx
XSA9IDQuMDsKKwllWzFdID0gMS4wOworCisJYVsyXSA9IDEuMDsKKwliWzJdID0gMi4wOworCWNb
Ml0gPSAzLjA7CisJZFsyXSA9IDQuMDsKKwllWzJdID0gMS4wOworCisJYVszXSA9IDEuMDsKKwli
WzNdID0gMi4wOworCWNbM10gPSAzLjA7CisJZFszXSA9IDQuMDsKKwllWzNdID0gMS4wOworCisJ
cXVhbGlmaWVycyhhLCBiLCBjLCBkLCBlKTsKKworCS8vIHJhbmRvbWx5IHRlc3QgYSB2YWx1ZQor
CWlmKGFbMF0gPT0gMS4wKSBxICs9IDEuMDsKKwlpZihiWzFdID09IDEuMCkgcSArPSAyLjA7CisJ
aWYoY1syXSA9PSA3LjApIHEgKz0gNC4wOworCWlmKGRbM10gPT0gNC4wKSBxMiArPSAxLjA7CisJ
aWYoZVswXSA9PSAxLjApIHEyICs9IDIuMDsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMihx
IC8gNy4wLCBxMiAvIDMuMCksIDEuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9hcnJheV9mbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYXJyYXlf
ZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NDkzYjM0NmY4ZmUxZThmN2RmZmQyM2I2ZGM3
NzRjOWFlODdkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYXJyYXlf
ZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsODYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKKworCit2b2lkIHF1YWxpZmllcnMoaW4gZmxvYXQgYVs0XSwgb3V0IGZsb2F0IGJbNF0s
IGlub3V0IGZsb2F0IGNbNF0sIGNvbnN0IGluIGZsb2F0IGRbNF0sIGZsb2F0IGVbNF0pCit7CisJ
YlswXSA9IGFbMF07CisJY1swXSArPSBkWzBdOworCWFbMF0gKz0gMS4wOworCWVbMF0gKz0gMS4w
OworCisJYlsxXSA9IGFbMV07CisJY1sxXSArPSBkWzFdOworCWFbMV0gKz0gMS4wOworCWVbMV0g
Kz0gMS4wOworCisJYlsyXSA9IGFbMl07CisJY1syXSArPSBkWzJdOworCWFbMl0gKz0gMS4wOwor
CWVbMl0gKz0gMS4wOworCisJYlszXSA9IGFbM107CisJY1szXSArPSBkWzNdOworCWFbM10gKz0g
MS4wOworCWVbM10gKz0gMS4wOworfQorCisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxv
YXQgYVs0XTsKKwlmbG9hdCBiWzRdOworCWZsb2F0IGNbNF07CisJZmxvYXQgZFs0XTsKKwlmbG9h
dCBlWzRdOworCWZsb2F0IHEgPSAwLjA7CisJZmxvYXQgcTIgPSAwLjA7CisKKwlhWzBdID0gMS4w
OworCWJbMF0gPSAyLjA7CisJY1swXSA9IDMuMDsKKwlkWzBdID0gNC4wOworCWVbMF0gPSAxLjA7
CisKKwlhWzFdID0gMS4wOworCWJbMV0gPSAyLjA7CisJY1sxXSA9IDMuMDsKKwlkWzFdID0gNC4w
OworCWVbMV0gPSAxLjA7CisKKwlhWzJdID0gMS4wOworCWJbMl0gPSAyLjA7CisJY1syXSA9IDMu
MDsKKwlkWzJdID0gNC4wOworCWVbMl0gPSAxLjA7CisKKwlhWzNdID0gMS4wOworCWJbM10gPSAy
LjA7CisJY1szXSA9IDMuMDsKKwlkWzNdID0gNC4wOworCWVbM10gPSAxLjA7CisKKwlxdWFsaWZp
ZXJzKGEsIGIsIGMsIGQsIGUpOworCisJLy8gcmFuZG9tbHkgdGVzdCBhIHZhbHVlCisJaWYoYVsw
XSA9PSAxLjApIHEgKz0gMS4wOworCWlmKGJbMV0gPT0gMS4wKSBxICs9IDIuMDsKKwlpZihjWzJd
ID09IDcuMCkgcSArPSA0LjA7CisJaWYoZFszXSA9PSA0LjApIHEyICs9IDEuMDsKKwlpZihlWzBd
ID09IDEuMCkgcTIgKz0gMi4wOworCisJY29sb3IgPSB2ZWM0KHZlYzIocSAvIDcuMCwgcTIgLyAz
LjApLCAxLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9v
bF9lbXB0eV9lbXB0eV9ib29sX2FycmF5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9i
b29sX2VtcHR5X2VtcHR5X2Jvb2xfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWFiNWRk
NDI4OGFiOTJjZjQyMjA4MWRiZjg1MjcwZDcwMTg4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9lbXB0eV9ib29sX2FycmF5X2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2Jvb2wgZnVuY3Rp
b24oYm9vbCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gYm9vbCBhcnJheVszXSwgY29u
c3QgaW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0
IGluIGJvb2wgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYm9vbCBwYXJbM107CisJ
Ym9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXpl
IHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgdHJ1ZSk7CisKKwlyZXQg
PSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hh
bmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUu
CisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkgJiYgcmV0KQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1
bmN0aW9uIGRlZmluaXRpb25zLgorYm9vbCBmdW5jdGlvbihib29sIHBhclszXSkKK3sKKwkvLyBS
ZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCB0cnVlKSkKKwl7
CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0
X2FsbChwYXIsIGZhbHNlKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxzZQorCQlyZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJvb2wgYXJyYXlbM10sIGNvbnN0IGlu
IGJvb2wgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0
OworfQorCit2b2lkIHNldF9hbGwob3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFs
dWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJd
ID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9l
bXB0eV9ib29sX2FycmF5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5
X2VtcHR5X2Jvb2xfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ODQ1N2VjZGUwZjViNzkw
NDU3N2VjYTcxNTBmYzZkYTE3MmQwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvYm9vbF9lbXB0eV9lbXB0eV9ib29sX2FycmF5X3ZlcnQudmVydApAQCAtMCwwICsxLDc0
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bnMuCitib29sIGZ1bmN0aW9uKGJvb2wgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJv
b2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBib29s
IGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWJvb2wgcGFyWzNdOworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlmbG9hdCBncmF5ID0gMC4wOwor
CisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIHRydWUuCisJc2V0X2FsbChwYXIs
IHRydWUpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hv
dWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hv
dWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIHRydWUpICYmIHJldCkKKwl7CisJCWdy
YXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgorYm9vbCBmdW5jdGlvbihib29sIHBhclsz
XSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFy
LCB0cnVlKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAi
aW4iKS4KKwkJc2V0X2FsbChwYXIsIGZhbHNlKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxz
ZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJvb2wgYXJyYXlb
M10sIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJy
YXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisK
KwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0
IGluIGJvb2wgdmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVl
OworCWFycmF5WzJdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMv
Ym9vbF9lbXB0eV9lbXB0eV9ib29sX2VtcHR5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9ib29sX2VtcHR5X2VtcHR5X2Jvb2xfZW1wdHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1Y2Vj
MjNmZDYyMjc1OGZiZjY4NjRiOGE1YjRjMTU1OTZjM2QwNDkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9lbXB0eV9ib29sX2VtcHR5X2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDQ4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorYm9vbCBmdW5j
dGlvbihib29sIHBhcik7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlib29sIHBhciA9IHRydWU7
CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5j
dGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBi
eSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYo
cGFyICYmIHJldCkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgor
Ym9vbCBmdW5jdGlvbihib29sIHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBw
YXJhbWV0ZXIuCisJaWYocGFyKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChk
ZWZhdWx0IGlzICJpbiIpLgorCQlwYXIgPSBmYWxzZTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJ
ZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMv
Ym9vbF9lbXB0eV9lbXB0eV9ib29sX2VtcHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9ib29sX2VtcHR5X2VtcHR5X2Jvb2xfZW1wdHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOGVm
NTJhMzEzNGEwYmU2NGQ2MjU2NjE4NGM4MGVlOGNhMWE3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9lbXB0eV9ib29sX2VtcHR5X3ZlcnQudmVydApA
QCAtMCwwICsxLDQ4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlv
biBkZWNsYXJhdGlvbi4KK2Jvb2wgZnVuY3Rpb24oYm9vbCBwYXIpOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJYm9vbCBwYXIgPSB0cnVlOworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlmbG9hdCBn
cmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIg
c2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24g
c2hvdWxkIHJldHVybiB0cnVlLgorCWlmKHBhciAmJiByZXQpCisJeworCQlncmF5ID0gMS4wOwor
CX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBG
dW5jdGlvbiBkZWZpbml0aW9uLgorYm9vbCBmdW5jdGlvbihib29sIHBhcikKK3sKKwkvLyBSZXR1
cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYocGFyKQorCXsKKwkJLy8gVGVzdCBw
YXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlwYXIgPSBmYWxzZTsKKwor
CQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbl9ib29sX2FycmF5X2ZyYWcuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X2luX2Jvb2xfYXJyYXlfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU0NDRkZGI5MTQ4NjllMTc3YTU0ZjIwYzc1NjkxODE2ZjAyODQxNTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbl9ib29sX2FycmF5
X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
cy4KK2Jvb2wgZnVuY3Rpb24oaW4gYm9vbCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4g
Ym9vbCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJv
b2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJYm9vbCBwYXJbM107CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0IGdyYXkgPSAwLjA7
CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBh
ciwgdHJ1ZSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBz
aG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBz
aG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkgJiYgcmV0KQorCXsKKwkJ
Z3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXks
IDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitib29sIGZ1bmN0aW9uKGluIGJv
b2wgcGFyWzNdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlz
X2FsbChwYXIsIHRydWUpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZh
dWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgZmFsc2UpOworCisJCXJldHVybiB0cnVlOwor
CX0KKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gYm9v
bCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisK
KwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYm9vbCBhcnJheVsz
XSwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFd
ID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9ib29sX2VtcHR5X2luX2Jvb2xfYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL2Jvb2xfZW1wdHlfaW5fYm9vbF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ5
NGY1ZjYxYmM3YjE1MzdhZDg4ODA5YmQ5MmJlZDJjNmE2YzJhMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X2luX2Jvb2xfYXJyYXlfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9u
IGRlY2xhcmF0aW9ucy4KK2Jvb2wgZnVuY3Rpb24oaW4gYm9vbCBwYXJbM10pOworYm9vbCBpc19h
bGwoY29uc3QgaW4gYm9vbCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNl
dF9hbGwob3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFsdWUpOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJYm9vbCBwYXJbM107CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0
IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4K
KwlzZXRfYWxsKHBhciwgdHJ1ZSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhl
IHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRo
ZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkgJiYg
cmV0KQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2Jvb2wgZnVuY3Rp
b24oaW4gYm9vbCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXku
CisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZp
ZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCBmYWxzZSk7CisKKwkJcmV0dXJu
IHRydWU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCitib29sIGlzX2FsbChjb25z
dCBpbiBib29sIGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0g
dHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJh
eVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBib29s
IGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJ
YXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5fYm9vbF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbl9ib29sX2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzIxMjRkYWJiODQxMTc1NzFjN2I4M2E0OGQ2YmQ1NjlmNDhlNDVmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5fYm9vbF9lbXB0eV9mcmFn
LmZyYWcKQEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2Jv
b2wgZnVuY3Rpb24oaW4gYm9vbCBwYXIpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYm9vbCBw
YXIgPSB0cnVlOworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJ
cmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1
bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0
cnVlLgorCWlmKHBhciAmJiByZXQpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVm
aW5pdGlvbi4KK2Jvb2wgZnVuY3Rpb24oaW4gYm9vbCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2
YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKHBhcikKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVy
IHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJcGFyID0gZmFsc2U7CisKKwkJcmV0dXJu
IHRydWU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5fYm9vbF9lbXB0eV92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbl9ib29sX2VtcHR5X3ZlcnQudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MDI3ZWRjN2I5ZDRhYTc5NzYzZjEzMmE3Mzc2MjliNTY4NmUzMzA0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5fYm9vbF9lbXB0eV92ZXJ0LnZl
cnQKQEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVu
Y3Rpb24gZGVjbGFyYXRpb24uCitib29sIGZ1bmN0aW9uKGluIGJvb2wgcGFyKTsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWJvb2wgcGFyID0gdHJ1ZTsKKwlib29sIHJldCA9IGZhbHNlOworCisJ
ZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFy
YW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1
bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZS4KKwlpZihwYXIgJiYgcmV0KQorCXsKKwkJZ3JheSA9
IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
KworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2Jvb2wgZnVuY3Rpb24oaW4gYm9vbCBwYXIpCit7
CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKHBhcikKKwl7CisJ
CS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJcGFyID0g
ZmFsc2U7CisKKwkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5vdXRfYm9vbF9hcnJh
eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbm91dF9ib29sX2Fy
cmF5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTNlNzY1YjE1NjRlNGM2NzlmMDViZTk2MjYyMzE4
MzQwNGQyMzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1w
dHlfaW5vdXRfYm9vbF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBG
dW5jdGlvbiBkZWNsYXJhdGlvbnMuCitib29sIGZ1bmN0aW9uKGlub3V0IGJvb2wgcGFyWzNdKTsK
K2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJvb2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFsdWUp
Owordm9pZCBzZXRfYWxsKG91dCBib29sIGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKTsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWJvb2wgcGFyWzNdOworCWJvb2wgcmV0ID0gZmFsc2U7
CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5
IHRvIHRydWUuCisJc2V0X2FsbChwYXIsIHRydWUpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsK
KworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFu
ZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGZhbHNl
KSAmJiByZXQpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
Z3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2Jv
b2wgZnVuY3Rpb24oaW5vdXQgYm9vbCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkpCisJeworCQkvLyBUZXN0IHBhcmFt
ZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCBmYWxzZSk7
CisKKwkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCitib29s
IGlzX2FsbChjb25zdCBpbiBib29sIGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKQorewor
CWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRf
YWxsKG91dCBib29sIGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWFycmF5WzBd
ID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfaW5vdXRfYm9vbF9hcnJheV92
ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9pbm91dF9ib29sX2FycmF5
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODgxZWRhMjViODQwOTAzYzBiYzk0YTBmMDNkNGRkOGQx
YzFmY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlf
aW5vdXRfYm9vbF9hcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorYm9vbCBmdW5jdGlv
bihpbm91dCBib29sIHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBib29sIGFycmF5WzNd
LCBjb25zdCBpbiBib29sIHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgYm9vbCBhcnJheVszXSwg
Y29uc3QgaW4gYm9vbCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlib29sIHBhclsz
XTsKKwlib29sIHJldCA9IGZhbHNlOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRp
YWxpemUgdGhlIGVudGlyZSBhcnJheSB0byB0cnVlLgorCXNldF9hbGwocGFyLCB0cnVlKTsKKwor
CXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFu
Z2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZS4K
KwlpZihpc19hbGwocGFyLCBmYWxzZSkgJiYgcmV0KQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisK
Kwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rp
b24gZGVmaW5pdGlvbi4KK2Jvb2wgZnVuY3Rpb24oaW5vdXQgYm9vbCBwYXJbM10pCit7CisJLy8g
UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkpCisJ
eworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNl
dF9hbGwocGFyLCBmYWxzZSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwkJcmV0dXJu
IGZhbHNlOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBib29sIGFycmF5WzNdLCBjb25zdCBp
biBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJl
dDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBib29sIGFycmF5WzNdLCBjb25zdCBpbiBib29sIHZh
bHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsy
XSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlf
aW5vdXRfYm9vbF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0
eV9pbm91dF9ib29sX2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjIwY2I0NjA0OGMwNDY2
NTk0NDQ5N2RhNGMwZWYxMDMyNDQ3MTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL2Jvb2xfZW1wdHlfaW5vdXRfYm9vbF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSw0
OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2Jvb2wgZnVuY3Rpb24oaW5vdXQg
Ym9vbCBwYXIpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYm9vbCBwYXIgPSB0cnVlOworCWJv
b2wgcmV0ID0gZmFsc2U7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24o
cGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0
aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKCFwYXIgJiYgcmV0
KQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdy
YXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitib29sIGZ1bmN0
aW9uKGlub3V0IGJvb2wgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFt
ZXRlci4KKwlpZihwYXIpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1
bHQgaXMgImluIikuCisJCXBhciA9IGZhbHNlOworCisJCXJldHVybiB0cnVlOworCX0KKwllbHNl
CisJCXJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29s
X2VtcHR5X2lub3V0X2Jvb2xfZW1wdHlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jv
b2xfZW1wdHlfaW5vdXRfYm9vbF9lbXB0eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFhOTU5N2Jj
OWU1NWM3Y2UxY2Y1NDc0YmE3NmQzNjg3YzVmNjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X2lub3V0X2Jvb2xfZW1wdHlfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsNDggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRl
Y2xhcmF0aW9uLgorYm9vbCBmdW5jdGlvbihpbm91dCBib29sIHBhcik7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwlib29sIHBhciA9IHRydWU7CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0
IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRl
ciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91
bGQgcmV0dXJuIHRydWUuCisJaWYoIXBhciAmJiByZXQpCisJeworCQlncmF5ID0gMS4wOworCX0K
KworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5j
dGlvbiBkZWZpbml0aW9uLgorYm9vbCBmdW5jdGlvbihpbm91dCBib29sIHBhcikKK3sKKwkvLyBS
ZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYocGFyKQorCXsKKwkJLy8gVGVz
dCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlwYXIgPSBmYWxzZTsK
KworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9vdXRfYm9vbF9hcnJheV9mcmFnLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9vdXRfYm9vbF9hcnJheV9mcmFnLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWE3ZTA4YjFjZmY0MmNlNGU3MWEwYzNkOWU5NTkyZWM4NzExNTRiMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X291dF9ib29s
X2FycmF5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDY4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xh
cmF0aW9uLgorYm9vbCBmdW5jdGlvbihvdXQgYm9vbCBwYXJbM10pOworYm9vbCBpc19hbGwoY29u
c3QgaW4gYm9vbCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwo
b3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0IGluIGJvb2wgdmFsdWUpOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJYm9vbCBwYXJbM107CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWZsb2F0IGdyYXkg
PSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRf
YWxsKHBhciwgdHJ1ZSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFt
ZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBz
aG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNfYWxsKHBhciwgZmFsc2UpICYmIHJldCkKKwl7CisJ
CWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5
LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorYm9vbCBmdW5jdGlvbihvdXQg
Ym9vbCBwYXJbM10pCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlz
ICJpbiIpLgorCXNldF9hbGwocGFyLCBmYWxzZSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBpc19hbGwoY29uc3QgaW4gYm9vbCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sK
Kwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0
X2FsbChvdXQgYm9vbCBhcnJheVszXSwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlhcnJheVsw
XSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X291dF9ib29sX2FycmF5X3Zl
cnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X291dF9ib29sX2FycmF5X3Zl
cnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ODVjMjJlNjg3Mjg4ZTMyNWE5ZmE2YjkwYTg5YTg0OGM5OTE2
ZDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jvb2xfZW1wdHlfb3V0
X2Jvb2xfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNjggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorYm9vbCBmdW5jdGlvbihvdXQg
Ym9vbCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gYm9vbCBhcnJheVszXSwgY29uc3Qg
aW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJvb2wgYXJyYXlbM10sIGNvbnN0IGlu
IGJvb2wgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYm9vbCBwYXJbM107CisJYm9v
bCByZXQgPSBmYWxzZTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRo
ZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgdHJ1ZSk7CisKKwlyZXQgPSBm
dW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0
aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNf
YWxsKHBhciwgZmFsc2UpICYmIHJldCkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3Ig
PSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmlu
aXRpb24uCitib29sIGZ1bmN0aW9uKG91dCBib29sIHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFt
ZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChwYXIsIGZhbHNlKTsK
KworCXJldHVybiB0cnVlOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBib29sIGFycmF5WzNd
LCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5
WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJ
cmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBib29sIGFycmF5WzNdLCBjb25zdCBp
biBib29sIHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsK
KwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jv
b2xfZW1wdHlfb3V0X2Jvb2xfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Jv
b2xfZW1wdHlfb3V0X2Jvb2xfZW1wdHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMGZmZTc0MTA4
MDAyOTAxNzUyZDMwMGMyZGExMDcwODkzZjc4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9vdXRfYm9vbF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCAr
MSw0MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2Jvb2wgZnVuY3Rpb24ob3V0
IGJvb2wgcGFyKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWJvb2wgcGFyID0gdHJ1ZTsKKwli
b29sIHJldCA9IGZhbHNlOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9u
KHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5j
dGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZS4KKwlpZighcGFyICYmIHJl
dCkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBn
cmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorYm9vbCBmdW5j
dGlvbihvdXQgYm9vbCBwYXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZh
dWx0IGlzICJpbiIpLgorCXBhciA9IGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9vdXRfYm9vbF9lbXB0eV92ZXJ0LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYm9vbF9lbXB0eV9vdXRfYm9vbF9lbXB0eV92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjE1MTBiOTRiZmZiMzA1NDI1ZjE4YmI4ZjJlZDdiNGI1ZDA2ZTIwZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9ib29sX2VtcHR5X291dF9ib29s
X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDQyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2Jvb2wgZnVuY3Rpb24ob3V0IGJvb2wg
cGFyKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWJvb2wgcGFyID0gdHJ1ZTsKKwlib29sIHJl
dCA9IGZhbHNlOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7
CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBh
bmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZS4KKwlpZighcGFyICYmIHJldCkKKwl7
CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitib29sIGZ1bmN0aW9uKG91dCBi
b29sIHBhcikKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImlu
IikuCisJcGFyID0gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9lbXB0eV9idmVjNF9hcnJheV9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfZW1wdHlfYnZlYzRfYXJyYXlfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2OWYwNTFlMGUyNjEwMWYxNTY1MDIxMjYzNDBhZjU3NjNkNzM2ZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfZW1wdHlfYnZl
YzRfYXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVj
bGFyYXRpb25zLgorYnZlYzQgZnVuY3Rpb24oYnZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25z
dCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxs
KG91dCBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJYnZlYzQgcGFyWzNdOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXpl
IHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJh
bWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIHRydWUpKSAmJiBpc19hbGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7
CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQor
CisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK2J2ZWM0IGZ1bmN0aW9uKGJ2ZWM0IHBhclszXSkK
K3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBx
dWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkpOworCisJCXJldHVybiBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJv
b2wgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGlu
IGJ2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBidmVjNCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRy
dWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlb
MV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQg
YXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJ
YXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2FycmF5X3ZlcnQudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9lbXB0eV9idmVjNF9hcnJheV92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2U3NzgwNzg2Njk3NGM0NTUzY2YzODVhNjc4OGUyNWMwZmRmODViZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9lbXB0eV9i
dmVjNF9hcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw5MSBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorYnZlYzQgZnVuY3Rpb24oYnZl
YzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9v
bCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVszXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYnZlYzQgcGFyWzNdOworCWJ2
ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdy
YXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlz
ZXRfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpOworCisJcmV0ID0gZnVu
Y3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQg
YnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlm
KGlzX2FsbChwYXIsIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpKSAmJiBpc19hbGwocmV0
LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdy
YXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgorYnZlYzQg
ZnVuY3Rpb24oYnZlYzQgcGFyWzNdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFy
cmF5LgorCWlmKGlzX2FsbChwYXIsIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpKSkKKwl7
CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0
X2FsbChwYXIsIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSk7CisKKwkJcmV0dXJu
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCX0KKwllbHNlCisJCXJldHVybiBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGlu
IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisK
KwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30K
KworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZh
bHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
YXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwor
dm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7
CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFs
dWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfZW1wdHlf
YnZlYzRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2Vt
cHR5X2J2ZWM0X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmFiNDYwOWRkODI4NGY4NzMw
ODQ3ZWMwNTQ2YzQzZGVkNWYwNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rp
b25zL2J2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorYnZlYzQgZnVuY3Rpb24oYnZlYzQg
cGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1
ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlidmVjNCBwYXIgPSBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKTsKKwlidmVjNCByZXQgPSBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRo
ZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0
aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIHRydWUpICYm
IGlzX2FsbChyZXQsIHRydWUpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmlu
aXRpb24uCitidmVjNCBmdW5jdGlvbihidmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1
ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIHRydWUpKQorCXsKKwkJLy8gVGVz
dCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwg
ZmFsc2UpOworCisJCXJldHVybiBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwl9CisJ
ZWxzZQorCQlyZXR1cm4gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQorCiti
b29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJ
Ym9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFyLCBjb25zdCBp
biBib29sIHZhbHVlKQoreworCXBhclswXSA9IHZhbHVlOworCXBhclsxXSA9IHZhbHVlOworCXBh
clsyXSA9IHZhbHVlOworCXBhclszXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2VtcHR5X3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9lbXB0eV9idmVjNF9lbXB0eV92ZXJ0LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzZhYzQ4ODJhYjE2YTM5MGYxMDUwNGMzMDdjMmE4MTc1OGQ0MzM4NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9lbXB0eV9idmVjNF9l
bXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCitidmVjNCBmdW5jdGlvbihidmVjNCBwYXIp
OworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKTsK
K3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWJ2ZWM0IHBhciA9IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKwor
CWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBh
cmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBm
dW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkgJiYgaXNf
YWxsKHJldCwgdHJ1ZSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChn
cmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgor
YnZlYzQgZnVuY3Rpb24oYnZlYzQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhl
IHBhcmFtZXRlci4KKwlpZihpc19hbGwocGFyLCB0cnVlKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1l
dGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIGZhbHNlKTsK
KworCQlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVsc2UKKwkJ
cmV0dXJuIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBpc19h
bGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0
ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1
cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2
YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2
YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9idmVjNF9lbXB0eV9pbl9idmVjNF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlv
bnMvYnZlYzRfZW1wdHlfaW5fYnZlYzRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MGNi
ZDI2OGNhZmY3NjM0NDAxZDY4MmU2YTEzZGE3NmJkZDdiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5fYnZlYzRfYXJyYXlfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorYnZlYzQgZnVu
Y3Rpb24oaW4gYnZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwg
Y29uc3QgaW4gYm9vbCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVsz
XSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVsz
XSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYnZlYzQg
cGFyWzNdOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkg
dG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFp
biB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpKSAm
JiBpc19hbGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZp
bml0aW9ucy4KK2J2ZWM0IGZ1bmN0aW9uKGluIGJ2ZWM0IHBhclszXSkKK3sKKwkvLyBSZXR1cm4g
dGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1
bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkpOworCisJCXJldHVybiBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwl9CisJ
ZWxzZQorCQlyZXR1cm4gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQorCiti
b29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJ
Ym9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IGFycmF5WzNd
LCBjb25zdCBpbiBidmVjNCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJh
eVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwor
CXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgYXJyYXlbM10sIGNvbnN0
IGluIGJ2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1
ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25z
L2J2ZWM0X2VtcHR5X2luX2J2ZWM0X2FycmF5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9idmVjNF9lbXB0eV9pbl9idmVjNF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ4ZmI4
Y2Q4MzkyMTc5YWRlNzM2OGY2ZGFmNjQwZmVhMTA5NTM3NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9pbl9idmVjNF9hcnJheV92ZXJ0LnZlcnQKQEAg
LTAsMCArMSw5MSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24g
ZGVjbGFyYXRpb25zLgorYnZlYzQgZnVuY3Rpb24oaW4gYnZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNf
YWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Citib29sIGlzX2Fs
bChjb25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOwordm9pZCBz
ZXRfYWxsKG91dCBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJYnZlYzQgcGFyWzNdOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0
aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRo
ZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0
aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpKSAmJiBpc19hbGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkg
PSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgorYnZlYzQgZnVuY3Rpb24oaW4gYnZlYzQgcGFy
WzNdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChw
YXIsIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1l
dGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSk7CisKKwkJcmV0dXJuIGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpOworCX0KKwllbHNlCisJCXJldHVybiBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3Qg
aW4gYm9vbCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gYnZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKQoreworCWJvb2wgcmV0
ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihh
cnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBi
dmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1
ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5fYnZlYzRfZW1wdHlfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2luX2J2ZWM0X2VtcHR5X2ZyYWcuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43OWIwMGZiMDhlYmZjODE0ODhmOTI3NTlmNTU5NmNkZjljNTcxZDdlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2luX2J2ZWM0
X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xh
cmF0aW9uLgorYnZlYzQgZnVuY3Rpb24oaW4gYnZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0
IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJ2
ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwli
dmVjNCBwYXIgPSBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwlidmVjNCByZXQgPSBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKKwlmbG9hdCBncmF5ID0gMC4wOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFp
biB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biB0cnVlLgorCWlmKGlzX2FsbChwYXIsIHRydWUpICYmIGlzX2FsbChyZXQsIHRydWUpKQorCXsK
KwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdy
YXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitidmVjNCBmdW5jdGlvbihp
biBidmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgor
CWlmKGlzX2FsbChwYXIsIHRydWUpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVy
IChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgZmFsc2UpOworCisJCXJldHVybiBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBi
dmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJ
aWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisK
K3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCXBh
clswXSA9IHZhbHVlOworCXBhclsxXSA9IHZhbHVlOworCXBhclsyXSA9IHZhbHVlOworCXBhclsz
XSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5
X2luX2J2ZWM0X2VtcHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0
eV9pbl9idmVjNF9lbXB0eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBjMDM3OWIyMGIxNmM2ZTQ5
MmFiNTE0OTAyMDAzZDg4Yzk1MzgwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0
aW9ucy9idmVjNF9lbXB0eV9pbl9idmVjNF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24u
CitidmVjNCBmdW5jdGlvbihpbiBidmVjNCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZl
YzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFy
LCBjb25zdCBpbiBib29sIHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWJ2ZWM0IHBh
ciA9IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQg
PSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hh
bmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUu
CisJaWYoaXNfYWxsKHBhciwgdHJ1ZSkgJiYgaXNfYWxsKHJldCwgdHJ1ZSkpCisJeworCQlncmF5
ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorYnZlYzQgZnVuY3Rpb24oaW4gYnZlYzQgcGFy
KQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihpc19hbGwo
cGFyLCB0cnVlKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBp
cyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIGZhbHNlKTsKKworCQlyZXR1cm4gYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBj
b25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9h
bGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1
ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9pbm91dF9idmVj
NF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRf
YnZlYzRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MTI2ODM5MmMwMDIzODI0ZWIwOGUx
ZDBhZWJkNDFiMjhiMWY1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMv
YnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfYXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsOTEgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorYnZlYzQgZnVuY3Rpb24oaW5vdXQgYnZl
YzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9v
bCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVszXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYnZlYzQgcGFyWzNdOworCWJ2
ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdy
YXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gdHJ1ZS4KKwlz
ZXRfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpOworCisJcmV0ID0gZnVu
Y3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhl
IGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2Fs
bChwYXIsIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSkgJiYgaXNfYWxsKHJldCwg
dHJ1ZSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3Jh
eSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitidmVj
NCBmdW5jdGlvbihpbm91dCBidmVjNCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIp
LgorCQlzZXRfYWxsKHBhciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKTsKKwor
CQlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVsc2UKKwkJcmV0
dXJuIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBpc19hbGwo
Y29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0g
dHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4g
cmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0
OworfQorCit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBidmVjNCB2
YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlb
Ml0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0
eV9pbm91dF9idmVjNF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRf
ZW1wdHlfaW5vdXRfYnZlYzRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNDk3NGY0NDc1
Y2Q1MTQwN2NlOTZhMjdjMGQ2NTAzOTYwMmYxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucy4KK2J2ZWM0IGZ1bmN0aW9uKGlub3V0IGJ2ZWM0IHBhclszXSk7Citib29sIGlz
X2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpOworYm9vbCBpc19h
bGwoY29uc3QgaW4gYnZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKTsKK3ZvaWQg
c2V0X2FsbChvdXQgYnZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWJ2ZWM0IHBhclszXTsKKwlidmVjNCByZXQgPSBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5p
dGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIHRydWUuCisJc2V0X2FsbChwYXIsIGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBU
aGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1
bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZS4KKwlpZihpc19hbGwocGFyLCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkpICYmIGlzX2FsbChyZXQsIHRydWUpKQorCXsKKwkJZ3JheSA9
IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
KworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitidmVjNCBmdW5jdGlvbihpbm91dCBidmVjNCBw
YXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxs
KHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpKQorCXsKKwkJLy8gVGVzdCBwYXJh
bWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKTsKKworCQlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25z
dCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChj
b25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7CisJYm9vbCBy
ZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0
IGJ2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBidmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZh
bHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9pbm91dF9idmVjNF9iaWdhcnJheV9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfYmln
YXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZWRlMDg3NWZlYWZiYWE0ODc1MmRhN2Q3MTM4
MDdkYWQ3ZjVlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRf
ZW1wdHlfaW5vdXRfYnZlYzRfYmlnYXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTEyIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2J2ZWM0IGZ1bmN0aW9uKGlub3V0IGJ2ZWM0
IHBhclsxMF0pOworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29s
IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IGFycmF5WzEwXSwgY29uc3QgaW4g
YnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVsxMF0sIGNvbnN0IGlu
IGJ2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWJ2ZWM0IHBhclsxMF07CisJ
YnZlYzQgcmV0ID0gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCisJZmxvYXQg
Z3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byB0cnVlLgor
CXNldF9hbGwocGFyLCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSk7CisKKwlyZXQgPSBm
dW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0
aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNf
YWxsKHBhciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKSAmJiBpc19hbGwocmV0
LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChn
cmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK2J2
ZWM0IGZ1bmN0aW9uKGlub3V0IGJ2ZWM0IHBhclsxMF0pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1
ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJp
biIpLgorCQlzZXRfYWxsKHBhciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKTsK
KworCQlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVsc2UKKwkJ
cmV0dXJuIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBpc19h
bGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0
ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1
cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVsxMF0sIGNvbnN0
IGluIGJ2ZWM0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs0XSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbNV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KGFycmF5WzZdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs3XSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbOF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKGFycmF5WzldICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7
Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiBidmVjNCB2
YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlb
Ml0gPSB2YWx1ZTsKKwlhcnJheVszXSA9IHZhbHVlOworCWFycmF5WzRdID0gdmFsdWU7CisJYXJy
YXlbNV0gPSB2YWx1ZTsKKwlhcnJheVs2XSA9IHZhbHVlOworCWFycmF5WzddID0gdmFsdWU7CisJ
YXJyYXlbOF0gPSB2YWx1ZTsKKwlhcnJheVs5XSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2lub3V0X2J2ZWM0X2JpZ2FycmF5X3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9pbm91dF9idmVjNF9iaWdhcnJheV92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEwN2M3YjY3ZDRkZGJjY2I1MmUwM2FiY2MxOTNmMjg4ZjQ0
NGJlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9p
bm91dF9idmVjNF9iaWdhcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwxMTIgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2J2ZWM0IGZ1
bmN0aW9uKGlub3V0IGJ2ZWM0IHBhclsxMF0pOworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQg
cGFyLCBjb25zdCBpbiBib29sIHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IGFy
cmF5WzEwXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBh
cnJheVsxMF0sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWJ2ZWM0IHBhclsxMF07CisJYnZlYzQgcmV0ID0gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGly
ZSBhcnJheSB0byB0cnVlLgorCXNldF9hbGwocGFyLCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91
bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0
dXJuIHRydWUuCisJaWYoaXNfYWxsKHBhciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpKSAmJiBpc19hbGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRl
ZmluaXRpb25zLgorYnZlYzQgZnVuY3Rpb24oaW5vdXQgYnZlYzQgcGFyWzEwXSkKK3sKKwkvLyBS
ZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIg
KGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkpOworCisJCXJldHVybiBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsK
Kwl9CisJZWxzZQorCQlyZXR1cm4gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwor
fQorCitib29sIGlzX2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUp
Cit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IGFy
cmF5WzEwXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJ
aWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYoYXJyYXlbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzRd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs1XSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYoYXJyYXlbNl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFy
cmF5WzddICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs4XSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbOV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBhcnJheVsxMF0sIGNv
bnN0IGluIGJ2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2
YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworCWFycmF5WzNdID0gdmFsdWU7CisJYXJyYXlbNF0g
PSB2YWx1ZTsKKwlhcnJheVs1XSA9IHZhbHVlOworCWFycmF5WzZdID0gdmFsdWU7CisJYXJyYXlb
N10gPSB2YWx1ZTsKKwlhcnJheVs4XSA9IHZhbHVlOworCWFycmF5WzldID0gdmFsdWU7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfZW1w
dHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X2lub3V0X2J2ZWM0
X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTkyZGJhZmVhM2U0YWVjNzJiMDI4ZDI2NTI1
ZTM3NWQwNjAyODVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0
X2VtcHR5X2lub3V0X2J2ZWM0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
Ky8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorYnZlYzQgZnVuY3Rpb24oaW5vdXQgYnZlYzQgcGFy
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7
Cit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlidmVjNCBwYXIgPSBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKTsKKwlidmVjNCByZXQgPSBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisK
KwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBw
YXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rp
b24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGZhbHNlKSAmJiBpc19hbGwo
cmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgor
YnZlYzQgZnVuY3Rpb24oaW5vdXQgYnZlYzQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUg
b2YgdGhlIHBhcmFtZXRlci4KKwlpZihpc19hbGwocGFyLCB0cnVlKSkKKwl7CisJCS8vIFRlc3Qg
cGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIGZh
bHNlKTsKKworCQlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJfQorCWVs
c2UKKwkJcmV0dXJuIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9v
bCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJv
b2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisK
KwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4g
Ym9vbCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJb
Ml0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9idmVjNF9lbXB0eV9pbm91dF9idmVjNF9lbXB0eV92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfZW1wdHlfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5ODM1MTVlNWFlODEyYzI0MDM0YzcwODc3MzQ1MzcxNjBjMjM0NTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfZW1w
dHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorYnZlYzQgZnVuY3Rpb24oaW5vdXQgYnZlYzQg
cGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1
ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlidmVjNCBwYXIgPSBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKTsKKwlidmVjNCByZXQgPSBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRo
ZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIHJldHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGZhbHNlKSAmJiBpc19h
bGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdy
YXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCiti
dmVjNCBmdW5jdGlvbihpbm91dCBidmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIHRydWUpKQorCXsKKwkJLy8gVGVzdCBw
YXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgZmFs
c2UpOworCisJCXJldHVybiBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwl9CisJZWxz
ZQorCQlyZXR1cm4gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQorCitib29s
IGlzX2FsbChjb25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJYm9v
bCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwor
CXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFyLCBjb25zdCBpbiBi
b29sIHZhbHVlKQoreworCXBhclswXSA9IHZhbHVlOworCXBhclsxXSA9IHZhbHVlOworCXBhclsy
XSA9IHZhbHVlOworCXBhclszXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL2J2ZWM0X2VtcHR5X291dF9idmVjNF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvYnZlYzRfZW1wdHlfb3V0X2J2ZWM0X2FycmF5X2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNzI5MzQwYWQ1OGUxZmI1ZjMwYjBhMGNjZTEzZTEyYmExNTgzMGQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X291dF9idmVjNF9hcnJheV9mcmFn
LmZyYWcKQEAgLTAsMCArMSw4NSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCiti
dmVjNCBmdW5jdGlvbihvdXQgYnZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2
ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBidmVj
NCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBidmVj
NCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJYnZlYzQgcGFyWzNdOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRp
cmUgYXJyYXkgdG8gdHJ1ZS4KKwlzZXRfYWxsKHBhciwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hv
dWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJl
dHVybiB0cnVlLgorCWlmKGlzX2FsbChwYXIsIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSkgJiYgaXNfYWxsKHJldCwgdHJ1ZSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWds
X0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rp
b24gZGVmaW5pdGlvbnMuCitidmVjNCBmdW5jdGlvbihvdXQgYnZlYzQgcGFyWzNdKQoreworCS8v
IFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwlzZXRfYWxsKHBh
ciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKTsKKworCXJldHVybiBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQg
cGFyLCBjb25zdCBpbiBib29sIHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBh
clswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBh
clszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29s
IGlzX2FsbChjb25zdCBpbiBidmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7
CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsy
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNl
dF9hbGwob3V0IGJ2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBidmVjNCB2YWx1ZSkKK3sKKwlhcnJh
eVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9vdXRfYnZlYzRfYXJy
YXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2J2ZWM0X2VtcHR5X291dF9idmVjNF9h
cnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE0NmU1YmE2ODMxMmNjOGNlZmM4YjVkNDA3OGIy
YmNjODNlNGRkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9l
bXB0eV9vdXRfYnZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsODUgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2J2ZWM0IGZ1
bmN0aW9uKG91dCBidmVjNCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFy
LCBjb25zdCBpbiBib29sIHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IGFycmF5
WzNdLCBjb25zdCBpbiBidmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGJ2ZWM0IGFycmF5
WzNdLCBjb25zdCBpbiBidmVjNCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlidmVj
NCBwYXJbM107CisJYnZlYzQgcmV0ID0gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJh
eSB0byB0cnVlLgorCXNldF9hbGwocGFyLCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSk7
CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUg
Y2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRy
dWUuCisJaWYoaXNfYWxsKHBhciwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpKSAm
JiBpc19hbGwocmV0LCB0cnVlKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRp
b25zLgorYnZlYzQgZnVuY3Rpb24ob3V0IGJ2ZWM0IHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFt
ZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChwYXIsIGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSk7CisKKwlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3Qg
aW4gYm9vbCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gYnZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGJ2ZWM0IHZhbHVlKQoreworCWJvb2wgcmV0
ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihh
cnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBi
dmVjNCBhcnJheVszXSwgY29uc3QgaW4gYnZlYzQgdmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1
ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfb3V0X2J2ZWM0X2VtcHR5X2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9vdXRfYnZlYzRfZW1wdHlfZnJhZy5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1Y2FlMjdjNGJhM2Y2ZTBkZDE2NWRlMjAzMmYxOWYxNTI4NzQ3NWEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfb3V0X2J2
ZWM0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDY4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRl
Y2xhcmF0aW9uLgorYnZlYzQgZnVuY3Rpb24ob3V0IGJ2ZWM0IHBhcik7Citib29sIGlzX2FsbChj
b25zdCBpbiBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91
dCBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJYnZlYzQgcGFyID0gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJYnZlYzQgcmV0
ID0gYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCisJZmxvYXQgZ3JheSA9IDAu
MDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBi
ZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4g
dHJ1ZS4KKwlpZihpc19hbGwocGFyLCBmYWxzZSkgJiYgaXNfYWxsKHJldCwgdHJ1ZSkpCisJewor
CQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2J2ZWM0IGZ1bmN0aW9uKG91
dCBidmVjNCBwYXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlz
ICJpbiIpLgorCXNldF9hbGwocGFyLCBmYWxzZSk7CisKKwlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29u
c3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxs
KG91dCBidmVjNCBwYXIsIGNvbnN0IGluIGJvb2wgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7
CisJcGFyWzFdID0gdmFsdWU7CisJcGFyWzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRfZW1wdHlfb3V0X2J2ZWM0X2Vt
cHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9idmVjNF9lbXB0eV9vdXRfYnZlYzRf
ZW1wdHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MmRmMjZmNTYxNWNmYTVhNDY5ZDQ0ZjcxNThh
YTNhM2Q4MTg2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvYnZlYzRf
ZW1wdHlfb3V0X2J2ZWM0X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDY4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2J2ZWM0IGZ1
bmN0aW9uKG91dCBidmVjNCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gYnZlYzQgcGFyLCBj
b25zdCBpbiBib29sIHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgYnZlYzQgcGFyLCBjb25zdCBp
biBib29sIHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWJ2ZWM0IHBhciA9IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCWJ2ZWM0IHJldCA9IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlv
bihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVu
Y3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUuCisJaWYoaXNfYWxsKHBh
ciwgZmFsc2UpICYmIGlzX2FsbChyZXQsIHRydWUpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisK
Kwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rp
b24gZGVmaW5pdGlvbi4KK2J2ZWM0IGZ1bmN0aW9uKG91dCBidmVjNCBwYXIpCit7CisJLy8gVGVz
dCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFyLCBm
YWxzZSk7CisKKwlyZXR1cm4gYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Cit9CisKK2Jv
b2wgaXNfYWxsKGNvbnN0IGluIGJ2ZWM0IHBhciwgY29uc3QgaW4gYm9vbCB2YWx1ZSkKK3sKKwli
b29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBidmVjNCBwYXIsIGNvbnN0IGlu
IGJvb2wgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7CisJcGFyWzFdID0gdmFsdWU7CisJcGFy
WzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvZmxvYXRfZW1wdHlfZW1wdHlfZmxvYXRfYXJyYXlfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2VtcHR5X2Zsb2F0X2FycmF5X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZTRiNWVjMTg4NTEyZWUwYTcwZjA3MGU1M2M3OTNmZjYwZjg0Y2MwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2VtcHR5X2Zsb2F0X2Fy
cmF5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0
aW9ucy4KK2Zsb2F0IGZ1bmN0aW9uKGZsb2F0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBp
biBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91
dCBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJZmxvYXQgcGFyWzNdOworCWZsb2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkg
PSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9h
bGwocGFyLCAxLjApOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0
ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rp
b24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgMS4wKSAmJiAocmV0ID09IDEu
MCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitmbG9hdCBm
dW5jdGlvbihmbG9hdCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJy
YXkuCisJaWYoaXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxp
ZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIDAuMCk7CisKKwkJcmV0dXJu
IDEuMDsKKwl9CisJZWxzZQorCQlyZXR1cm4gMC4wOworfQorCitib29sIGlzX2FsbChjb25zdCBp
biBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGZsb2F0
IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOwor
CWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9hcnJheV92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfZW1wdHlfZmxvYXRfYXJyYXlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZiZGNhMmY0MTNhZTY0Mzc4ODNkYTYyYmUyOWIyNjQ0YTFmMzkyNWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfZW1wdHlf
ZmxvYXRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2Zsb2F0IGZ1bmN0aW9uKGZs
b2F0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBmbG9hdCBhcnJheVszXSwgY29uc3Qg
aW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBmbG9hdCBhcnJheVszXSwgY29uc3Qg
aW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgcGFyWzNdOwor
CWZsb2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXpl
IHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCAxLjApOworCisJcmV0ID0g
ZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5n
ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJ
aWYoaXNfYWxsKHBhciwgMS4wKSAmJiAocmV0ID09IDEuMCkpCisJeworCQlncmF5ID0gMS4wOwor
CX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBG
dW5jdGlvbiBkZWZpbml0aW9ucy4KK2Zsb2F0IGZ1bmN0aW9uKGZsb2F0IHBhclszXSkKK3sKKwkv
LyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCAxLjApKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlz
ZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1cm4gMS4wOworCX0KKwllbHNlCisJCXJldHVybiAw
LjA7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBm
bG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7
Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgZmxvYXQgYXJyYXlbM10sIGNvbnN0IGluIGZsb2F0IHZh
bHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsy
XSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5
X2VtcHR5X2Zsb2F0X2VtcHR5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9l
bXB0eV9lbXB0eV9mbG9hdF9lbXB0eV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM4OTNlNDliNjYx
MGYyZDFmMzEyYTViZjg5NjVmMTI4OGRjMDE1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAs
MCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2Zsb2F0IGZ1bmN0aW9u
KGZsb2F0IHBhcik7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBwYXIgPSAxLjA7CisJ
ZmxvYXQgcmV0ID0gMC4wOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9u
KHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRo
ZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKChwYXIg
PT0gMS4wKSAmJiAocmV0ID09IDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0Zy
YWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24g
ZGVmaW5pdGlvbi4KK2Zsb2F0IGZ1bmN0aW9uKGZsb2F0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhl
IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYocGFyID09IDEuMCkKKwl7CisJCS8vIFRlc3Qg
cGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJcGFyID0gMC4wOworCisJ
CXJldHVybiAxLjA7CisJfQorCWVsc2UKKwkJcmV0dXJuIDAuMDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9lbXB0eV92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfZW1wdHlfZmxvYXRfZW1wdHlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4YWRhZTExNWQ1ZmYwY2I3MjA2NmIzZWZjZjg4NGZiOTJlMzNlOWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfZW1wdHlf
ZmxvYXRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNDggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorZmxvYXQgZnVuY3Rpb24oZmxv
YXQgcGFyKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHBhciA9IDEuMDsKKwlmbG9h
dCByZXQgPSAwLjA7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFy
KTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1
bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoKHBhciA9PSAx
LjApICYmIChyZXQgPT0gMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRp
b24uCitmbG9hdCBmdW5jdGlvbihmbG9hdCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgcGFyYW1ldGVyLgorCWlmKHBhciA9PSAxLjApCisJeworCQkvLyBUZXN0IHBhcmFtZXRl
ciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXBhciA9IDAuMDsKKworCQlyZXR1cm4g
MS4wOworCX0KKwllbHNlCisJCXJldHVybiAwLjA7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvZmxvYXRfZW1wdHlfaW5fZmxvYXRfYXJyYXlfZnJhZy5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2luX2Zsb2F0X2FycmF5X2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYzAyNTA0ZTM3MDNjNjFhODE2ZjQwYjBlODA0ODRiZmMxM2RiMmJjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2luX2Zsb2F0X2FycmF5X2ZyYWcu
ZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2Zs
b2F0IGZ1bmN0aW9uKGluIGZsb2F0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBmbG9h
dCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBmbG9h
dCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJZmxvYXQgcGFyWzNdOworCWZsb2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7
CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFy
LCAxLjApOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hv
dWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hv
dWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgMS4wKSAmJiAocmV0ID09IDEuMCkpCisJ
eworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2Zsb2F0IGZ1bmN0aW9u
KGluIGZsb2F0IHBhclszXSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4K
KwlpZihpc19hbGwocGFyLCAxLjApKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVy
IChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1cm4gMS4w
OworCX0KKwllbHNlCisJCXJldHVybiAwLjA7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGZs
b2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7
CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQg
PSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgZmxvYXQgYXJy
YXlbM10sIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJy
YXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2luX2Zsb2F0X2FycmF5X3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbl9mbG9hdF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDQ2MTdlMGNmYTdhZjU1NGYxNTBkMTVjZTlkMTIwZTU1OTc1MGU3MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbl9mbG9hdF9hcnJheV92
ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
Ly8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorZmxvYXQgZnVuY3Rpb24oaW4gZmxvYXQgcGFyWzNd
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2
YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2
YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBwYXJbM107CisJZmxvYXQgcmV0
ID0gMC4wOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGly
ZSBhcnJheSB0byAxLjAuCisJc2V0X2FsbChwYXIsIDEuMCk7CisKKwlyZXQgPSBmdW5jdGlvbihw
YXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUg
ZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwo
cGFyLCAxLjApICYmIChyZXQgPT0gMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRl
ZmluaXRpb24uCitmbG9hdCBmdW5jdGlvbihpbiBmbG9hdCBwYXJbM10pCit7CisJLy8gUmV0dXJu
IHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8v
IFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChw
YXIsIDAuMCk7CisKKwkJcmV0dXJuIDEuMDsKKwl9CisJZWxzZQorCQlyZXR1cm4gMC4wOworfQor
Citib29sIGlzX2FsbChjb25zdCBpbiBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFs
dWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihh
cnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2
b2lkIHNldF9hbGwob3V0IGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sK
KwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1
ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbl9mbG9h
dF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfaW5fZmxv
YXRfZW1wdHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlMTZkMmZkNzJkNWZmNmRlNzlhZTAzZWU5
MDZkMTkzNjA5ZDY1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxv
YXRfZW1wdHlfaW5fZmxvYXRfZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDggQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
Ly8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCitmbG9hdCBmdW5jdGlvbihpbiBmbG9hdCBwYXIpOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgcGFyID0gMS4wOworCWZsb2F0IHJldCA9IDAu
MDsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8g
VGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5k
IHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZigocGFyID09IDEuMCkgJiYgKHJl
dCA9PSAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitm
bG9hdCBmdW5jdGlvbihpbiBmbG9hdCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0
aGUgcGFyYW1ldGVyLgorCWlmKHBhciA9PSAxLjApCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBx
dWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXBhciA9IDAuMDsKKworCQlyZXR1cm4gMS4w
OworCX0KKwllbHNlCisJCXJldHVybiAwLjA7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvZmxvYXRfZW1wdHlfaW5fZmxvYXRfZW1wdHlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL2Zsb2F0X2VtcHR5X2luX2Zsb2F0X2VtcHR5X3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YjUxOTRlOWEwNDIyNzI1NmJjMzhlZWI3NmRkOWFiMjcwYmNhMjZmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2luX2Zsb2F0X2VtcHR5X3ZlcnQudmVy
dApAQCAtMCwwICsxLDQ4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5j
dGlvbiBkZWNsYXJhdGlvbi4KK2Zsb2F0IGZ1bmN0aW9uKGluIGZsb2F0IHBhcik7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlmbG9hdCBwYXIgPSAxLjA7CisJZmxvYXQgcmV0ID0gMC4wOworCisJ
ZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFy
YW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1
bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKChwYXIgPT0gMS4wKSAmJiAocmV0ID09IDEu
MCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBn
cmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorZmxvYXQgZnVuY3Rp
b24oaW4gZmxvYXQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRl
ci4KKwlpZihwYXIgPT0gMS4wKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChk
ZWZhdWx0IGlzICJpbiIpLgorCQlwYXIgPSAwLjA7CisKKwkJcmV0dXJuIDEuMDsKKwl9CisJZWxz
ZQorCQlyZXR1cm4gMC4wOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0
X2VtcHR5X2lub3V0X2Zsb2F0X2FycmF5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9m
bG9hdF9lbXB0eV9pbm91dF9mbG9hdF9hcnJheV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEzZDE1
OTkzNGZiMGM0NGJjMTM0MGE3YjM5NmQzOTBkMTQ3YzY2YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbm91dF9mbG9hdF9hcnJheV9mcmFnLmZyYWcK
QEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCitmbG9hdCBm
dW5jdGlvbihpbm91dCBmbG9hdCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gZmxvYXQg
YXJyYXlbM10sIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgZmxvYXQg
YXJyYXlbM10sIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWZsb2F0IHBhclszXTsKKwlmbG9hdCByZXQgPSAwLjA7CisKKwlmbG9hdCBncmF5ID0gMC4wOwor
CisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBhciwg
MS4wKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3Vs
ZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1
cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIDAuMCkgJiYgKHJldCA9PSAxLjApKQorCXsKKwkJZ3Jh
eSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEu
MCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitmbG9hdCBmdW5jdGlvbihpbm91dCBm
bG9hdCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYo
aXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVm
YXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIDAuMCk7CisKKwkJcmV0dXJuIDEuMDsKKwl9
CisJZWxzZQorCQlyZXR1cm4gMC4wOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBmbG9hdCBh
cnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJ
aWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGZsb2F0IGFycmF5WzNd
LCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFd
ID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9mbG9hdF9lbXB0eV9pbm91dF9mbG9hdF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfaW5vdXRfZmxvYXRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI4Zjk3NzhmMDJhN2IyNTU4ZDM4NzU3ODlmMmZhYWJjYTJkZmVmZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfaW5vdXRfZmxvYXRfYXJy
YXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2Zsb2F0IGZ1bmN0aW9uKGlub3V0IGZsb2F0
IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4g
ZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4g
ZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgcGFyWzNdOworCWZs
b2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRo
ZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCAxLjApOworCisJcmV0ID0gZnVu
Y3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhl
IGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxs
KHBhciwgMC4wKSAmJiAocmV0ID09IDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBk
ZWZpbml0aW9uLgorZmxvYXQgZnVuY3Rpb24oaW5vdXQgZmxvYXQgcGFyWzNdKQoreworCS8vIFJl
dHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChwYXIsIDEuMCkpCisJewor
CQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9h
bGwocGFyLCAwLjApOworCisJCXJldHVybiAxLjA7CisJfQorCWVsc2UKKwkJcmV0dXJuIDAuMDsK
K30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gZmxvYXQgYXJyYXlbM10sIGNvbnN0IGluIGZsb2F0
IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30K
Kwordm9pZCBzZXRfYWxsKG91dCBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUp
Cit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0g
dmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZmxvYXRfZW1wdHlfaW5v
dXRfZmxvYXRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5
X2lub3V0X2Zsb2F0X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGYwOGY0ZWQ1NmQ4M2I2
ZGY4OWUwMDJlNDQ0NmY1ODgyNjQyY2IxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL2Zsb2F0X2VtcHR5X2lub3V0X2Zsb2F0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDQ4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorZmxvYXQgZnVuY3Rpb24oaW5v
dXQgZmxvYXQgcGFyKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHBhciA9IDEuMDsK
KwlmbG9hdCByZXQgPSAwLjA7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rp
b24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1
bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoKHBhciA9PSAw
LjApICYmIChyZXQgPT0gMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZp
bml0aW9uLgorZmxvYXQgZnVuY3Rpb24oaW5vdXQgZmxvYXQgcGFyKQoreworCS8vIFJldHVybiB0
aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihwYXIgPT0gMS4wKQorCXsKKwkJLy8gVGVz
dCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlwYXIgPSAwLjA7CisK
KwkJcmV0dXJuIDEuMDsKKwl9CisJZWxzZQorCQlyZXR1cm4gMC4wOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X2lub3V0X2Zsb2F0X2VtcHR5X3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbm91dF9mbG9hdF9lbXB0eV92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTRjY2Q4YjE1OWE5NDZlOTBhNTJmZmQ3Yzg1NjM4OWFmZjdlYjAx
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9pbm91
dF9mbG9hdF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCitmbG9hdCBmdW5jdGlvbihp
bm91dCBmbG9hdCBwYXIpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgcGFyID0gMS4w
OworCWZsb2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5j
dGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUg
ZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZigocGFyID09
IDAuMCkgJiYgKHJldCA9PSAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9
IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5p
dGlvbi4KK2Zsb2F0IGZ1bmN0aW9uKGlub3V0IGZsb2F0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhl
IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYocGFyID09IDEuMCkKKwl7CisJCS8vIFRlc3Qg
cGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJcGFyID0gMC4wOworCisJ
CXJldHVybiAxLjA7CisJfQorCWVsc2UKKwkJcmV0dXJuIDAuMDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRfZmxvYXRfYXJyYXlfZnJhZy5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X291dF9mbG9hdF9hcnJheV9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2E4YjNiMmUzNDllY2FiYjRkMmY1OTZhNTZlMzY5YzQ2ZTQzZDk0YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRfZmxvYXRf
YXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb24uCitmbG9hdCBmdW5jdGlvbihvdXQgZmxvYXQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Cit2b2lkIHNldF9h
bGwob3V0IGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlmbG9hdCBwYXJbM107CisJZmxvYXQgcmV0ID0gMC4wOworCisJZmxvYXQg
Z3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLjAuCisJ
c2V0X2FsbChwYXIsIDEuMCk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBh
cmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlv
biBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAwLjApICYmIChyZXQgPT0gMS4w
KSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBn
cmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorZmxvYXQgZnVu
Y3Rpb24ob3V0IGZsb2F0IHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIg
KGRlZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChwYXIsIDAuMCk7CisKKwlyZXR1cm4gMS4wOwor
fQorCitib29sIGlzX2FsbChjb25zdCBpbiBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQg
dmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQor
Cit2b2lkIHNldF9hbGwob3V0IGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkK
K3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2
YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRf
ZmxvYXRfYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X291
dF9mbG9hdF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJjZDY3ZDVmZjY4ODFkYWYxZDA3
NWU5MDNiM2VhNTQ1ZDE1OTVjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9mbG9hdF9lbXB0eV9vdXRfZmxvYXRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNjggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgor
ZmxvYXQgZnVuY3Rpb24ob3V0IGZsb2F0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBm
bG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBm
bG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJZmxvYXQgcGFyWzNdOworCWZsb2F0IHJldCA9IDAuMDsKKworCWZsb2F0IGdyYXkgPSAw
LjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwo
cGFyLCAxLjApOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIg
c2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxk
IHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgMC4wKSAmJiAocmV0ID09IDEuMCkpCisJewor
CQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorZmxvYXQgZnVuY3Rpb24ob3V0IGZs
b2F0IHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMg
ImluIikuCisJc2V0X2FsbChwYXIsIDAuMCk7CisKKwlyZXR1cm4gMS4wOworfQorCitib29sIGlz
X2FsbChjb25zdCBpbiBmbG9hdCBhcnJheVszXSwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJ
Ym9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9h
bGwob3V0IGZsb2F0IGFycmF5WzNdLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlhcnJheVsw
XSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRfZmxvYXRfZW1wdHlf
ZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X291dF9mbG9hdF9lbXB0
eV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3ODcwMjA5ZmU1YjI5NjMwZGYzMTQxNTZmOGFlODRi
MGIzMzk3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0
eV9vdXRfZmxvYXRfZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDIgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVu
Y3Rpb24gZGVjbGFyYXRpb24uCitmbG9hdCBmdW5jdGlvbihvdXQgZmxvYXQgcGFyKTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWZsb2F0IHBhciA9IDEuMDsKKwlmbG9hdCByZXQgPSAwLjA7CisK
KwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBw
YXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rp
b24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoKHBhciA9PSAwLjApICYmIChyZXQgPT0gMS4wKSkK
Kwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5
LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorZmxvYXQgZnVuY3Rp
b24ob3V0IGZsb2F0IHBhcikKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1
bHQgaXMgImluIikuCisJcGFyID0gMC4wOworCisJcmV0dXJuIDEuMDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRfZmxvYXRfZW1wdHlfdmVydC52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Zsb2F0X2VtcHR5X291dF9mbG9hdF9lbXB0eV92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTlmNGRhNWRkOTIxYzM4YTQ4MTY5YjhiMWVmNTg1YmEzY2Q3NjFiZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mbG9hdF9lbXB0eV9vdXRfZmxv
YXRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNDIgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorZmxvYXQgZnVuY3Rpb24ob3V0IGZs
b2F0IHBhcik7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBwYXIgPSAxLjA7CisJZmxv
YXQgcmV0ID0gMC4wOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBh
cik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlv
biBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKChwYXIgPT0gMC4wKSAm
JiAocmV0ID09IDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChn
cmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgor
ZmxvYXQgZnVuY3Rpb24ob3V0IGZsb2F0IHBhcikKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFs
aWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJcGFyID0gMC4wOworCisJcmV0dXJuIDEuMDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDAxX3RvXzAwOC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzRhOTYxNDBhNTRjMDI3OWMzNWE2YjY4NzMxMTQ3MTAxNzljNmY0MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDAxX3RvXzAwOC5odG1sCkBAIC0w
LDAgKzEsMjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZnVuY3Rpb25zXzAwMV90b18wMDguaHRt
bDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4
OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3Vs
dCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJxdWFsaWZpZXJzX2Zsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJx
dWFsaWZpZXJzX2Zsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJxdWFsaWZpZXJzX2Zsb2F0X2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJxdWFsaWZpZXJzX2Zsb2F0X2ZyYWcudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInF1
YWxpZmllcnNfc3RydWN0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJxdWFsaWZp
ZXJzX3N0cnVjdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAicXVhbGlmaWVyc19zdHJ1Y3RfZnJhZy5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInF1YWxpZmllcnNfc3RydWN0X2ZyYWcudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAg
ICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAor
ICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImFycmF5
X2Zsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhcnJheV9mbG9hdF92ZXJ0
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6
ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiYXJyYXlfZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImFy
cmF5X2Zsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6
IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAg
ICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJ2b2lkX2VtcHR5X2VtcHR5X3ZvaWRfZW1wdHlfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZvaWRfZW1wdHlfZW1wdHlfdm9pZF9lbXB0eV9m
cmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAidm9pZF9lbXB0eV9lbXB0eV92b2lkX2VtcHR5X3ZlcnQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJ2b2lkX2VtcHR5X2VtcHR5X3ZvaWRfZW1wdHlfdmVydC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDA5X3RvXzAxNi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL2Z1bmN0aW9uc18wMDlfdG9fMDE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczMDhkYmUx
ZDI5MTE0Mjg3OWEyNTQ2OTgzMmQwNzJmMjg5MTRhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDA5X3RvXzAxNi5odG1sCkBAIC0wLDAgKzEsMjMxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgY29uZm9ybWFuY2UgdGVzdDogZnVuY3Rpb25zXzAwOV90b18wMTYuaHRtbDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2
cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVT
VGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYm9vbF9lbXB0eV9l
bXB0eV9ib29sX2VtcHR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJib29s
X2VtcHR5X2VtcHR5X2Jvb2xfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImJvb2xfZW1wdHlfZW1wdHlfYm9v
bF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYm9vbF9lbXB0eV9lbXB0
eV9ib29sX2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJib29sX2VtcHR5X2VtcHR5X2Jvb2xfYXJyYXlfZnJhZy5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJvb2xfZW1wdHlfZW1wdHlfYm9vbF9hcnJh
eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAg
ICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAi
dHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiYm9vbF9lbXB0eV9lbXB0eV9ib29sX2FycmF5X3ZlcnQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJib29sX2VtcHR5X2VtcHR5X2Jvb2xfYXJyYXlfdmVydC50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImJvb2xfZW1wdHlfaW5fYm9vbF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAiYm9vbF9lbXB0eV9pbl9ib29sX2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAg
ICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAg
ICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJib29sX2VtcHR5X2lu
X2Jvb2xfZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJvb2xfZW1wdHlf
aW5fYm9vbF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYm9vbF9lbXB0eV9pbl9ib29sX2FycmF5X2ZyYWcuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJib29sX2VtcHR5X2luX2Jvb2xfYXJyYXlfZnJh
Zy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImJvb2xfZW1wdHlfaW5fYm9vbF9hcnJheV92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiYm9vbF9lbXB0eV9pbl9ib29sX2FycmF5X3ZlcnQudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvZnVuY3Rpb25zXzAxN190b18wMjQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9mdW5jdGlvbnNfMDE3X3RvXzAyNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MzM0MjM4NjAwNTFiZDM5
MzQxY2YxZmFmNjIwNmNjMTgxOWUyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvZnVuY3Rpb25zXzAxN190b18wMjQuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQu
IC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZv
cm1hbmNlIHRlc3Q6IGZ1bmN0aW9uc18wMTdfdG9fMDI0Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5u
ZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImJvb2xfZW1wdHlfaW5vdXRfYm9v
bF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYm9vbF9lbXB0eV9p
bm91dF9ib29sX2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJib29sX2VtcHR5X2lub3V0X2Jvb2xfZW1wdHlf
dmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJvb2xfZW1wdHlfaW5vdXRfYm9vbF9l
bXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiYm9vbF9lbXB0eV9pbm91dF9ib29sX2FycmF5X2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJib29sX2VtcHR5X2lub3V0X2Jvb2xfYXJyYXlfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImJvb2xfZW1wdHlfaW5vdXRfYm9vbF9hcnJheV92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiYm9vbF9lbXB0eV9pbm91dF9ib29sX2FycmF5X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJib29sX2Vt
cHR5X291dF9ib29sX2VtcHR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJi
b29sX2VtcHR5X291dF9ib29sX2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNv
dW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAg
InZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4
cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJib29sX2VtcHR5X291dF9ib29s
X2VtcHR5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJib29sX2VtcHR5X291dF9i
b29sX2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6
IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAg
ICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJib29sX2VtcHR5X291dF9ib29sX2FycmF5X2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJib29sX2VtcHR5X291dF9ib29sX2FycmF5X2ZyYWcu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAi
cmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjog
InVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJib29sX2VtcHR5X291dF9ib29sX2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJib29sX2VtcHR5X291dF9ib29sX2FycmF5X3ZlcnQudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvZnVuY3Rpb25zXzAyNV90b18wMzIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9mdW5jdGlvbnNfMDI1X3RvXzAzMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZmQ2NzFhNDYyMjhhNWM5
ZDBjZTUxYjUyZDAzMGVmOTk3YjQzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvZnVuY3Rpb25zXzAyNV90b18wMzIuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQu
IC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZv
cm1hbmNlIHRlc3Q6IGZ1bmN0aW9uc18wMjVfdG9fMDMyLmh0bWw8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5u
ZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImludF9lbXB0eV9lbXB0eV9pbnRf
ZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludF9lbXB0eV9lbXB0
eV9pbnRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogImludF9lbXB0eV9lbXB0eV9pbnRfZW1wdHlfdmVydC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludF9lbXB0eV9lbXB0eV9pbnRfZW1wdHlfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImludF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogImludF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfZnJhZy50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImludF9l
bXB0eV9lbXB0eV9pbnRfYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImlu
dF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImludF9lbXB0eV9pbl9pbnRfZW1wdHlf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludF9lbXB0eV9pbl9pbnRfZW1w
dHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImludF9lbXB0eV9pbl9pbnRfZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogImludF9lbXB0eV9pbl9pbnRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImludF9lbXB0
eV9pbl9pbnRfYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludF9l
bXB0eV9pbl9pbnRfYXJyYXlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVu
aWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAx
LAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUi
OiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImludF9lbXB0eV9pbl9pbnRfYXJyYXlfdmVy
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludF9lbXB0eV9pbl9pbnRfYXJyYXlfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30p
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDMzX3RvXzA0MC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wMzNfdG9fMDQwLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmI1NGU3ZDk2YmE5NzYxYmE1YmVmNjg1MjIxMjM0ZGFhNjY5YjIxOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDMzX3RvXzA0MC5odG1sCkBAIC0wLDAg
KzEsMjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZnVuY3Rpb25zXzAzM190b18wNDAuaHRtbDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBo
ZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiaW50
X2VtcHR5X2lub3V0X2ludF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAiaW50X2VtcHR5X2lub3V0X2ludF9lbXB0eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAg
ICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAg
ICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiaW50X2VtcHR5X2lub3V0
X2ludF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaW50X2VtcHR5X2lu
b3V0X2ludF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiaW50X2VtcHR5X2lub3V0X2ludF9hcnJheV9mcmFnLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaW50X2VtcHR5X2lub3V0X2ludF9hcnJheV9m
cmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiaW50X2VtcHR5X2lub3V0X2ludF9hcnJheV92ZXJ0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAiaW50X2VtcHR5X2lub3V0X2ludF9hcnJheV92ZXJ0LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiaW50X2Vt
cHR5X291dF9pbnRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImlu
dF9lbXB0eV9vdXRfaW50X2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJpbnRfZW1wdHlfb3V0X2ludF9lbXB0
eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaW50X2VtcHR5X291dF9pbnRfZW1w
dHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogImludF9lbXB0eV9vdXRfaW50X2FycmF5X2ZyYWcuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJpbnRfZW1wdHlfb3V0X2ludF9hcnJheV9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiaW50
X2VtcHR5X291dF9pbnRfYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImlu
dF9lbXB0eV9vdXRfaW50X2FycmF5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVu
Y3Rpb25zXzA0MV90b18wNDguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDQx
X3RvXzA0OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNDExMzM1NzdmOGRmZmViMmVhYTUxMTJmN2U1ZTMy
NDEyMmM1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25z
XzA0MV90b18wNDguaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
IHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGZ1
bmN0aW9uc18wNDFfdG9fMDQ4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5j
c3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRl
c3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogImZsb2F0X2VtcHR5X2VtcHR5X2Zsb2F0X2VtcHR5X2ZyYWcu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9l
bXB0eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiZmxvYXRfZW1wdHlfZW1wdHlfZmxvYXRfZW1wdHlfdmVydC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogImZsb2F0X2VtcHR5X2VtcHR5X2Zsb2F0X2VtcHR5X3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAg
ICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJmbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9hcnJheV9mcmFnLmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAiZmxvYXRfZW1wdHlfZW1wdHlfZmxvYXRfYXJyYXlfZnJhZy50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogImZsb2F0X2VtcHR5X2VtcHR5X2Zsb2F0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJmbG9hdF9lbXB0eV9lbXB0eV9mbG9hdF9hcnJheV92ZXJ0LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZmxvYXRf
ZW1wdHlfaW5fZmxvYXRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
ImZsb2F0X2VtcHR5X2luX2Zsb2F0X2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJmbG9hdF9lbXB0eV9pbl9m
bG9hdF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmxvYXRfZW1wdHlf
aW5fZmxvYXRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogImZsb2F0X2VtcHR5X2luX2Zsb2F0X2FycmF5X2ZyYWcu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9hdF9lbXB0eV9pbl9mbG9hdF9hcnJh
eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAg
ICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAi
dHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZmxvYXRfZW1wdHlfaW5fZmxvYXRfYXJyYXlfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogImZsb2F0X2VtcHR5X2luX2Zsb2F0X2FycmF5X3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzA0OV90b18wNTYuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDQ5X3RvXzA1Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ODA3NGMz
MDIyOWU5MWJiMDAxM2Y3YmJkMmVkMTg5OTYzZmY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzA0OV90b18wNTYuaHRtbApAQCAtMCwwICsxLDIzMSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGZ1bmN0aW9uc18wNDlfdG9fMDU2Lmh0bWw8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAx
NnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xF
U1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImZsb2F0X2VtcHR5
X2lub3V0X2Zsb2F0X2VtcHR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJm
bG9hdF9lbXB0eV9pbm91dF9mbG9hdF9lbXB0eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAg
ICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAg
ICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZmxvYXRfZW1wdHlfaW5v
dXRfZmxvYXRfZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImZsb2F0X2Vt
cHR5X2lub3V0X2Zsb2F0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJmbG9hdF9lbXB0eV9pbm91dF9mbG9hdF9h
cnJheV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZmxvYXRfZW1wdHlfaW5v
dXRfZmxvYXRfYXJyYXlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogImZsb2F0X2VtcHR5X2lub3V0X2Zsb2F0X2FycmF5
X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9hdF9lbXB0eV9pbm91dF9mbG9h
dF9hcnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiZmxvYXRfZW1wdHlfb3V0X2Zsb2F0X2VtcHR5X2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9hdF9lbXB0eV9vdXRfZmxvYXRfZW1wdHlfZnJh
Zy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImZsb2F0X2VtcHR5X291dF9mbG9hdF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAiZmxvYXRfZW1wdHlfb3V0X2Zsb2F0X2VtcHR5X3ZlcnQudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijog
eworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00
ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJmbG9h
dF9lbXB0eV9vdXRfZmxvYXRfYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImZsb2F0X2VtcHR5X291dF9mbG9hdF9hcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZmxvYXRfZW1wdHlf
b3V0X2Zsb2F0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJmbG9hdF9l
bXB0eV9vdXRfZmxvYXRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5j
dGlvbnNfMDU3X3RvXzA2NC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wNTdf
dG9fMDY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMWU5YjlmMzNkM2NiYzM1ZjY4OGEzYzdjMDIzMDRm
N2ViNWU0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNf
MDU3X3RvXzA2NC5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0g
dGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZnVu
Y3Rpb25zXzA1N190b18wNjQuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNz
cyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUw
MCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVz
dHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiYnZlYzRfZW1wdHlfZW1wdHlfYnZlYzRfZW1wdHlfZnJhZy5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJ2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2Vt
cHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAg
ICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAg
ICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJidmVjNF9lbXB0eV9lbXB0eV9idmVjNF9lbXB0eV92ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAiYnZlYzRfZW1wdHlfZW1wdHlfYnZlYzRfZW1wdHlfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogImJ2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2FycmF5X2ZyYWcuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJidmVjNF9lbXB0eV9lbXB0eV9idmVjNF9hcnJheV9mcmFnLnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3Vs
dCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiYnZlYzRfZW1wdHlfZW1wdHlfYnZlYzRfYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogImJ2ZWM0X2VtcHR5X2VtcHR5X2J2ZWM0X2FycmF5X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJidmVjNF9l
bXB0eV9pbl9idmVjNF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
YnZlYzRfZW1wdHlfaW5fYnZlYzRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImJ2ZWM0X2VtcHR5X2luX2J2
ZWM0X2VtcHR5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJidmVjNF9lbXB0eV9p
bl9idmVjNF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYnZlYzRfZW1wdHlfaW5fYnZlYzRfYXJyYXlfZnJhZy5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJ2ZWM0X2VtcHR5X2luX2J2ZWM0X2FycmF5
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJidmVjNF9lbXB0eV9pbl9idmVjNF9hcnJheV92ZXJ0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAiYnZlYzRfZW1wdHlfaW5fYnZlYzRfYXJyYXlfdmVydC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDY1X3RvXzA3Mi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL2Z1bmN0aW9uc18wNjVfdG9fMDcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVhMTQyNWQ1
OGFhM2I4MWM5OTNjNDgyMDI4MjJkMzNmN2FlNmNiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDY1X3RvXzA3Mi5odG1sCkBAIC0wLDAgKzEsMjMxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgY29uZm9ybWFuY2UgdGVzdDogZnVuY3Rpb25zXzA2NV90b18wNzIuaHRtbDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2
cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVT
VGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYnZlYzRfZW1wdHlf
aW5vdXRfYnZlYzRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJ2
ZWM0X2VtcHR5X2lub3V0X2J2ZWM0X2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJidmVjNF9lbXB0eV9pbm91
dF9idmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYnZlYzRfZW1w
dHlfaW5vdXRfYnZlYzRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
InVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQi
OiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFs
dWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0
ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImJ2ZWM0X2VtcHR5X2lub3V0X2J2ZWM0X2Fy
cmF5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJidmVjNF9lbXB0eV9pbm91
dF9idmVjNF9hcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRfYmlnYXJyYXlf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJ2ZWM0X2VtcHR5X2lub3V0X2J2
ZWM0X2JpZ2FycmF5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJidmVjNF9lbXB0eV9pbm91dF9idmVjNF9hcnJheV92
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYnZlYzRfZW1wdHlfaW5vdXRfYnZlYzRf
YXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogImJ2ZWM0X2VtcHR5X2lub3V0X2J2ZWM0X2JpZ2FycmF5X3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJidmVjNF9lbXB0eV9pbm91dF9idmVjNF9iaWdh
cnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiYnZlYzRfZW1wdHlfb3V0X2J2ZWM0X2VtcHR5X2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJidmVjNF9lbXB0eV9vdXRfYnZlYzRfZW1wdHlfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImJ2ZWM0X2VtcHR5X291dF9idmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiYnZlYzRfZW1wdHlfb3V0X2J2ZWM0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzA3M190b18wODAuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0
aW9ucy9mdW5jdGlvbnNfMDczX3RvXzA4MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkOGQ1YTY5Y2UzMTNi
MDUyZmI0MWIyMTM3MWEzZWFhMWE4OTQyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvZnVuY3Rpb25zXzA3M190b18wODAuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVE
SVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNv
bmZvcm1hbmNlIHRlc3Q6IGZ1bmN0aW9uc18wNzNfdG9fMDgwLmh0bWw8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RS
dW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAg
ICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAg
ICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImJ2ZWM0X2VtcHR5X291dF9i
dmVjNF9hcnJheV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYnZlYzRfZW1w
dHlfb3V0X2J2ZWM0X2FycmF5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50Ijog
MSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVl
IjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJidmVjNF9lbXB0eV9vdXRfYnZlYzRfYXJy
YXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImJ2ZWM0X2VtcHR5X291dF9idmVj
NF9hcnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfZW1wdHlfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIml2ZWM0X2VtcHR5X2VtcHR5X2l2ZWM0X2VtcHR5
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJpdmVjNF9lbXB0eV9lbXB0eV9pdmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfZW1wdHlfdmVydC50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIml2ZWM0X2VtcHR5X2VtcHR5X2l2ZWM0X2FycmF5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJpdmVjNF9lbXB0eV9lbXB0eV9pdmVjNF9hcnJheV9mcmFnLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
aXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogIml2ZWM0X2VtcHR5X2VtcHR5X2l2ZWM0X2FycmF5X3ZlcnQudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAg
ICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAor
ICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJpdmVjNF9lbXB0
eV9pbl9pdmVjNF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaXZl
YzRfZW1wdHlfaW5faXZlYzRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIml2ZWM0X2VtcHR5X2luX2l2ZWM0
X2VtcHR5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJpdmVjNF9lbXB0eV9pbl9p
dmVjNF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wODFf
dG9fMDg4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzA4MV90b18wODguaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZmMyYTQ1MDc5NDIyYWJjYmEzYzBhNjViZGU4MDQ3MzVhOTNmNGJhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wODFfdG9fMDg4
Lmh0bWwKQEAgLTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBmdW5jdGlvbnNfMDgx
X3RvXzA4OC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJpdmVjNF9lbXB0eV9pbl9pdmVjNF9hcnJheV9mcmFnLmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAiaXZlYzRfZW1wdHlfaW5faXZlYzRfYXJyYXlfZnJhZy50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQi
OiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9y
bTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAg
ICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Iml2ZWM0X2VtcHR5X2luX2l2ZWM0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJpdmVjNF9lbXB0eV9pbl9pdmVjNF9hcnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiaXZlYzRfZW1wdHlfaW5v
dXRfaXZlYzRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIml2ZWM0
X2VtcHR5X2lub3V0X2l2ZWM0X2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNv
dW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAg
InZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4
cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJpdmVjNF9lbXB0eV9pbm91dF9p
dmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaXZlYzRfZW1wdHlf
aW5vdXRfaXZlYzRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVu
aWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAx
LAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUi
OiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIml2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0X2FycmF5
X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJpdmVjNF9lbXB0eV9pbm91dF9p
dmVjNF9hcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYmlnYXJyYXlfZnJh
Zy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIml2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0
X2JpZ2FycmF5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6
IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAg
ICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJpdmVjNF9lbXB0eV9pbm91dF9pdmVjNF9hcnJheV92ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYXJy
YXlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIml2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0X2JpZ2FycmF5X3ZlcnQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJpdmVjNF9lbXB0eV9pbm91dF9pdmVjNF9iaWdhcnJh
eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAg
XQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wODlfdG9fMDk2Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzA4OV90b18wOTYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZjk1ZmNkYWNlODg5NTRkMTRiMzU4NWE3NDUxZDQwYTljYzUzZDBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wODlfdG9fMDk2Lmh0bWwKQEAg
LTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBmdW5jdGlvbnNfMDg5X3RvXzA5Ni5o
dG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2
cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVz
dWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVu
aWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJpdmVjNF9lbXB0eV9vdXRfaXZlYzRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogIml2ZWM0X2VtcHR5X291dF9pdmVjNF9lbXB0eV9mcmFnLnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAg
ICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwK
KyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAg
ICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiaXZlYzRf
ZW1wdHlfb3V0X2l2ZWM0X2VtcHR5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJp
dmVjNF9lbXB0eV9vdXRfaXZlYzRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIml2ZWM0X2VtcHR5X291dF9pdmVj
NF9hcnJheV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiaXZlYzRfZW1wdHlf
b3V0X2l2ZWM0X2FycmF5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJpdmVjNF9lbXB0eV9vdXRfaXZlYzRfYXJyYXlf
dmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIml2ZWM0X2VtcHR5X291dF9pdmVjNF9h
cnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAidmVjNF9lbXB0eV9lbXB0eV92ZWM0X2VtcHR5X2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2VtcHR5X2VtcHR5X3ZlYzRfZW1wdHlfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInZlYzRfZW1wdHlfZW1wdHlfdmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAidmVjNF9lbXB0eV9lbXB0eV92ZWM0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X2Vt
cHR5X2VtcHR5X3ZlYzRfYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InZlYzRfZW1wdHlfZW1wdHlfdmVjNF9hcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAg
ICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAg
ICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9lbXB0eV9lbXB0
eV92ZWM0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2VtcHR5
X2VtcHR5X3ZlYzRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlv
bnNfMDk3X3RvXzEwNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18wOTdfdG9f
MTA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNiM2Y5OTVmOWIyN2RhOTIzZjkyOTUzZDVmZWE1MzdjMTg3
ZTUzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMDk3
X3RvXzEwNC5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZnVuY3Rp
b25zXzA5N190b18xMDQuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIg
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIg
c3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMi
OiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAidmVjNF9lbXB0eV9pbl92ZWM0X2VtcHR5X2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2VtcHR5X2luX3ZlYzRfZW1wdHlfZnJhZy50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogInZlYzRfZW1wdHlfaW5fdmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAidmVjNF9lbXB0eV9pbl92ZWM0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAg
ICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAg
ICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X2VtcHR5X2luX3Zl
YzRfYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfZW1wdHlf
aW5fdmVjNF9hcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9lbXB0eV9pbl92ZWM0X2FycmF5X3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2VtcHR5X2luX3ZlYzRfYXJyYXlfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInZlYzRfZW1wdHlfaW5vdXRfdmVjNF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAidmVjNF9lbXB0eV9pbm91dF92ZWM0X2VtcHR5X2ZyYWcudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijog
eworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00
ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2
ZWM0X2VtcHR5X2lub3V0X3ZlYzRfZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogInZlYzRfZW1wdHlfaW5vdXRfdmVjNF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF9lbXB0eV9pbm91
dF92ZWM0X2FycmF5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2Vt
cHR5X2lub3V0X3ZlYzRfYXJyYXlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
InVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQi
OiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFs
dWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0
ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfZW1wdHlfaW5vdXRfdmVjNF9iaWdh
cnJheV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9lbXB0eV9pbm91
dF92ZWM0X2JpZ2FycmF5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25z
XzEwNV90b18xMTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMTA1X3RvXzEx
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjMTFlZGJlOTI4NjQ2ZWFiNWIzYmRhM2Y5ODFmNWIxZmVmMDQy
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzEwNV90
b18xMTIuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGZ1bmN0aW9u
c18xMDVfdG9fMTEyLmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0
eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjog
WworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogInZlYzRfZW1wdHlfaW5vdXRfdmVjNF9hcnJheV92ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9lbXB0eV9pbm91dF92ZWM0X2FycmF5X3ZlcnQu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAi
cmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjog
InVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJ2ZWM0X2VtcHR5X2lub3V0X3ZlYzRfYmlnYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogInZlYzRfZW1wdHlfaW5vdXRfdmVjNF9iaWdhcnJheV92ZXJ0LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3Vs
dCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
dmVjNF9lbXB0eV9vdXRfdmVjNF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAidmVjNF9lbXB0eV9vdXRfdmVjNF9lbXB0eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9lbXB0eV9v
dXRfdmVjNF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9lbXB0
eV9vdXRfdmVjNF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF9lbXB0eV9vdXRfdmVjNF9hcnJheV9mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9lbXB0eV9vdXRfdmVjNF9hcnJh
eV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAg
ICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAi
dHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAidmVjNF9lbXB0eV9vdXRfdmVjNF9hcnJheV92ZXJ0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAidmVjNF9lbXB0eV9vdXRfdmVjNF9hcnJheV92ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWF0
NF9lbXB0eV9lbXB0eV9tYXQ0X2VtcHR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJtYXQ0X2VtcHR5X2VtcHR5X21hdDRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDRfZW1wdHlf
ZW1wdHlfbWF0NF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0NF9l
bXB0eV9lbXB0eV9tYXQ0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVu
Y3Rpb25zXzExM190b18xMjAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9mdW5jdGlvbnNfMTEz
X3RvXzEyMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYjFmMjk5MWU0OTU5NjA4ZTM2OWFkZGE2NjQ2YjZm
ZWFjZTlmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25z
XzExM190b18xMjAuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
IHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGZ1
bmN0aW9uc18xMTNfdG9fMTIwLmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5j
c3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRl
c3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDRfZW1wdHlfZW1wdHlfbWF0NF9hcnJheV9mcmFnLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0NF9lbXB0eV9lbXB0eV9tYXQ0X2FycmF5
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJtYXQ0X2VtcHR5X2VtcHR5X21hdDRfYXJyYXlfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfZW1wdHlfbWF0NF9hcnJheV92ZXJ0LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3Vs
dCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
bWF0NF9lbXB0eV9pbl9tYXQ0X2VtcHR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJtYXQ0X2VtcHR5X2luX21hdDRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAg
ICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAg
ICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDRfZW1wdHlfaW5f
bWF0NF9lbXB0eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0NF9lbXB0eV9p
bl9tYXQ0X2VtcHR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQ0X2VtcHR5X2luX21hdDRfYXJyYXlfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfaW5fbWF0NF9hcnJheV9mcmFn
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6
ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAibWF0NF9lbXB0eV9pbl9tYXQ0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJtYXQ0X2VtcHR5X2luX21hdDRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDRfZW1wdHlf
aW5vdXRfbWF0NF9lbXB0eV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0
NF9lbXB0eV9pbm91dF9tYXQ0X2VtcHR5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNv
dW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAg
InZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4
cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXQ0X2VtcHR5X2lub3V0X21h
dDRfZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfaW5v
dXRfbWF0NF9lbXB0eV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18x
MjFfdG9fMTI2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvZnVuY3Rpb25zXzEyMV90b18xMjYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMWQwNjgwOWQzMjAwOGJmZjYxMmE4MDkyNGIyNjIyNDE1NmI1ZTI4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2Z1bmN0aW9uc18xMjFfdG9f
MTI2Lmh0bWwKQEAgLTAsMCArMSwxODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBmdW5jdGlvbnNf
MTIxX3RvXzEyNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHls
ZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAg
ICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAg
ICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJtYXQ0X2VtcHR5X2lub3V0X21hdDRfYXJyYXlfZnJhZy5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfaW5vdXRfbWF0NF9hcnJheV9mcmFnLnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJl
c3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1
bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
CisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAibWF0NF9lbXB0eV9pbm91dF9tYXQ0X2FycmF5X3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJtYXQ0X2VtcHR5X2lub3V0X21hdDRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDRfZW1w
dHlfb3V0X21hdDRfZW1wdHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1h
dDRfZW1wdHlfb3V0X21hdDRfZW1wdHlfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDRfZW1wdHlfb3V0X21hdDRf
ZW1wdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfb3V0X21h
dDRfZW1wdHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjog
eworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAg
ICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIm1hdDRfZW1wdHlfb3V0X21hdDRfYXJyYXlfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfZW1wdHlfb3V0X21hdDRfYXJyYXlfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIm1hdDRfZW1wdHlfb3V0X21hdDRfYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogIm1hdDRfZW1wdHlfb3V0X21hdDRfYXJyYXlfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2lucHV0LnJ1bi50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDBiNGZhOGZhNjRlZDE1ZTAxZTYzZTJkZjQ5OWQwOGE0M2JmM2M0MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnB1dC5ydW4udHh0CkBAIC0w
LDAgKzEsMTcgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4K
K2Z1bmN0aW9uc18wMDFfdG9fMDA4Lmh0bWwKK2Z1bmN0aW9uc18wMDlfdG9fMDE2Lmh0bWwKK2Z1
bmN0aW9uc18wMTdfdG9fMDI0Lmh0bWwKK2Z1bmN0aW9uc18wMjVfdG9fMDMyLmh0bWwKK2Z1bmN0
aW9uc18wMzNfdG9fMDQwLmh0bWwKK2Z1bmN0aW9uc18wNDFfdG9fMDQ4Lmh0bWwKK2Z1bmN0aW9u
c18wNDlfdG9fMDU2Lmh0bWwKK2Z1bmN0aW9uc18wNTdfdG9fMDY0Lmh0bWwKK2Z1bmN0aW9uc18w
NjVfdG9fMDcyLmh0bWwKK2Z1bmN0aW9uc18wNzNfdG9fMDgwLmh0bWwKK2Z1bmN0aW9uc18wODFf
dG9fMDg4Lmh0bWwKK2Z1bmN0aW9uc18wODlfdG9fMDk2Lmh0bWwKK2Z1bmN0aW9uc18wOTdfdG9f
MTA0Lmh0bWwKK2Z1bmN0aW9uc18xMDVfdG9fMTEyLmh0bWwKK2Z1bmN0aW9uc18xMTNfdG9fMTIw
Lmh0bWwKK2Z1bmN0aW9uc18xMjFfdG9fMTI2Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9pbnRfZW1wdHlfZW1wdHlfaW50X2FycmF5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9pbnRfZW1wdHlfZW1wdHlfaW50X2FycmF5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZDBjZDg0NDhhZGI2YjQ0YTk2MDc2ZTAzYmRlNzgzMGJmZjA3ZGIyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgoraW50IGZ1
bmN0aW9uKGludCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gaW50IGFycmF5WzNdLCBj
b25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBpbnQgYXJyYXlbM10sIGNvbnN0
IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgcGFyWzNdOworCWlu
dCByZXQgPSAwOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVu
dGlyZSBhcnJheSB0byAxLgorCXNldF9hbGwocGFyLCAxKTsKKworCXJldCA9IGZ1bmN0aW9uKHBh
cik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBm
dW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4KKwlpZihpc19hbGwocGFy
LCAxKSAmJiAocmV0ID09IDEpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmlu
aXRpb25zLgoraW50IGZ1bmN0aW9uKGludCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1
ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0IHBhcmFt
ZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCAwKTsKKwor
CQlyZXR1cm4gMTsKKwl9CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGludCBh
cnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJy
YXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2ludF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2ludF9lbXB0eV9lbXB0eV9pbnRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0YzZlMTI4YWI3M2M1ZDc4ZTQ3OGI2MzM3YmU4YTlhY2Q0ZWFmMmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2VtcHR5X2ludF9hcnJheV92ZXJ0
LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8g
RnVuY3Rpb24gZGVjbGFyYXRpb25zLgoraW50IGZ1bmN0aW9uKGludCBwYXJbM10pOworYm9vbCBp
c19hbGwoY29uc3QgaW4gaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBz
ZXRfYWxsKG91dCBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlpbnQgcGFyWzNdOworCWludCByZXQgPSAwOworCisJZmxvYXQgZ3JheSA9
IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLgorCXNldF9hbGwo
cGFyLCAxKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNo
b3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNo
b3VsZCByZXR1cm4gMS4KKwlpZihpc19hbGwocGFyLCAxKSAmJiAocmV0ID09IDEpKQorCXsKKwkJ
Z3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitpbnQgZnVuY3Rpb24oaW50IHBhclsz
XSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFy
LCAxKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4i
KS4KKwkJc2V0X2FsbChwYXIsIDApOworCisJCXJldHVybiAxOworCX0KKwllbHNlCisJCXJldHVy
biAwOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGlu
dCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9
CisKK3ZvaWQgc2V0X2FsbChvdXQgaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7
CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFs
dWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2VtcHR5X2lu
dF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2VtcHR5X2lu
dF9lbXB0eV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVkYTA1YmJiMGRjZjIyYjJlMzM1ODEyZjlj
ZDU4MmU5ZjVkMmI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRf
ZW1wdHlfZW1wdHlfaW50X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDQ4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8v
IEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoraW50IGZ1bmN0aW9uKGludCBwYXIpOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJaW50IHBhciA9IDE7CisJaW50IHJldCA9IDA7CisKKwlmbG9hdCBncmF5
ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hv
dWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hv
dWxkIHJldHVybiAxLgorCWlmKChwYXIgPT0gMSkgJiYgKHJldCA9PSAxKSkKKwl7CisJCWdyYXkg
PSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgoraW50IGZ1bmN0aW9uKGludCBwYXIpCit7
CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKHBhciA9PSAxKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlw
YXIgPSAwOworCisJCXJldHVybiAxOworCX0KKwllbHNlCisJCXJldHVybiAwOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9lbXB0eV9pbnRfZW1wdHlfdmVydC52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9lbXB0eV9pbnRfZW1wdHlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiZGE3YTdlMjliZjFjODU4YjEzZDIwNDI4MWNmZDk1MWQ1NWRlNmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2VtcHR5X2lu
dF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCitpbnQgZnVuY3Rpb24oaW50IHBhcik7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgcGFyID0gMTsKKwlpbnQgcmV0ID0gMDsKKwor
CWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBh
cmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBm
dW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoKHBhciA9PSAxKSAmJiAocmV0ID09IDEpKQor
CXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2ludCBmdW5jdGlvbihpbnQg
cGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihwYXIg
PT0gMSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4i
KS4KKwkJcGFyID0gMDsKKworCQlyZXR1cm4gMTsKKwl9CisJZWxzZQorCQlyZXR1cm4gMDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5faW50X2FycmF5X2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5faW50X2FycmF5X2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTdjOWZhMWQzZDYxNDIwN2Y1M2I1NmU2NGZlODk3Y2E5MzcwMDU2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9pbl9pbnRf
YXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb25zLgoraW50IGZ1bmN0aW9uKGluIGludCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3Qg
aW4gaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBp
bnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlpbnQgcGFyWzNdOworCWludCByZXQgPSAwOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8v
IEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLgorCXNldF9hbGwocGFyLCAxKTsKKwor
CXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1haW4g
dW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4g
MS4KKwlpZihpc19hbGwocGFyLCAxKSAmJiAocmV0ID09IDEpKQorCXsKKwkJZ3JheSA9IDEuMDsK
Kwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisK
Ky8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitpbnQgZnVuY3Rpb24oaW4gaW50IHBhclszXSkKK3sK
KwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCAxKSkK
Kwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJ
c2V0X2FsbChwYXIsIDApOworCisJCXJldHVybiAxOworCX0KKwllbHNlCisJCXJldHVybiAwOwor
fQorCitib29sIGlzX2FsbChjb25zdCBpbiBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1
ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFy
cmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3Zv
aWQgc2V0X2FsbChvdXQgaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYXJy
YXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFsdWU7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2luX2ludF9hcnJheV92
ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2luX2ludF9hcnJheV92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY2ZTRhMWJiNDE0NzIxOWJjNTk1YjBiOGFlODgyNzlkM2ZhODM5
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5faW50
X2FycmF5X3ZlcnQudmVydApAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCitpbnQgZnVuY3Rpb24oaW4gaW50IHBh
clszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2
YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGludCBhcnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVl
KTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWludCBwYXJbM107CisJaW50IHJldCA9IDA7CisK
KwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRv
IDEuCisJc2V0X2FsbChwYXIsIDEpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRo
ZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0
aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKGlzX2FsbChwYXIsIDEpICYmIChyZXQg
PT0gMSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5
LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgoraW50IGZ1bmN0
aW9uKGluIGludCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXku
CisJaWYoaXNfYWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIg
KGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCAwKTsKKworCQlyZXR1cm4gMTsKKwl9
CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gaW50IGFycmF5
WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJy
YXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisK
KwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGludCBhcnJheVszXSwgY29uc3Qg
aW4gaW50IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsK
KwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2lu
dF9lbXB0eV9pbl9pbnRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9l
bXB0eV9pbl9pbnRfZW1wdHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMzE3MTFjN2ZkNTY1Yjc4
NDY1MTljYTgwOGM5YmMwZmY5NTBjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvaW50X2VtcHR5X2luX2ludF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSw0OCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2ludCBmdW5jdGlvbihpbiBpbnQgcGFyKTsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWludCBwYXIgPSAxOworCWludCByZXQgPSAwOworCisJ
ZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFy
YW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1
bmN0aW9uIHNob3VsZCByZXR1cm4gMS4KKwlpZigocGFyID09IDEpICYmIChyZXQgPT0gMSkpCisJ
eworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2ludCBmdW5jdGlvbihp
biBpbnQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlp
ZihwYXIgPT0gMSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBp
cyAiaW4iKS4KKwkJcGFyID0gMDsKKworCQlyZXR1cm4gMTsKKwl9CisJZWxzZQorCQlyZXR1cm4g
MDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5faW50X2Vt
cHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5faW50X2VtcHR5
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTUzMTM3NThlODExYWI3MTBmOWFmMDllNDEyNGM2MDcw
NDViYWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9p
bl9pbnRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNDggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoraW50IGZ1bmN0aW9uKGluIGlu
dCBwYXIpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IHBhciA9IDE7CisJaW50IHJldCA9
IDA7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8v
IFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFu
ZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKChwYXIgPT0gMSkgJiYgKHJldCA9
PSAxKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXks
IGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitpbnQgZnVuY3Rp
b24oaW4gaW50IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIu
CisJaWYocGFyID09IDEpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1
bHQgaXMgImluIikuCisJCXBhciA9IDA7CisKKwkJcmV0dXJuIDE7CisJfQorCWVsc2UKKwkJcmV0
dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2lub3V0
X2ludF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2lub3V0
X2ludF9hcnJheV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY4MjIzYjBjYTFmMDIwMzI3MDI2MmVi
ZTQxNDZlZDkxMjY4ZmQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9p
bnRfZW1wdHlfaW5vdXRfaW50X2FycmF5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
Ky8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2ludCBmdW5jdGlvbihpbm91dCBpbnQgcGFyWzNd
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGludCBhcnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVl
KTsKK3ZvaWQgc2V0X2FsbChvdXQgaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IHBhclszXTsKKwlpbnQgcmV0ID0gMDsKKworCWZs
b2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4K
KwlzZXRfYWxsKHBhciwgMSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBh
cmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlv
biBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgMCkgJiYgKHJldCA9PSAxKSkKKwl7
CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBn
cmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgoraW50IGZ1bmN0aW9uKGlu
b3V0IGludCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJ
aWYoaXNfYWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRl
ZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCAwKTsKKworCQlyZXR1cm4gMTsKKwl9CisJ
ZWxzZQorCQlyZXR1cm4gMDsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gaW50IGFycmF5WzNd
LCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlb
MF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwly
ZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGludCBhcnJheVszXSwgY29uc3QgaW4g
aW50IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlh
cnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9l
bXB0eV9pbm91dF9pbnRfYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9l
bXB0eV9pbm91dF9pbnRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YmIxOTI3MmE4ZjM2
YzkxNGM0MTJmMmMxMTlmNWM1ZjNjMjRhNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvaW50X2VtcHR5X2lub3V0X2ludF9hcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3
NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRp
b25zLgoraW50IGZ1bmN0aW9uKGlub3V0IGludCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3Qg
aW4gaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBp
bnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlpbnQgcGFyWzNdOworCWludCByZXQgPSAwOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8v
IEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLgorCXNldF9hbGwocGFyLCAxKTsKKwor
CXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFu
Z2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4KKwlp
Zihpc19hbGwocGFyLCAwKSAmJiAocmV0ID09IDEpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisK
Kwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rp
b24gZGVmaW5pdGlvbi4KK2ludCBmdW5jdGlvbihpbm91dCBpbnQgcGFyWzNdKQoreworCS8vIFJl
dHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChwYXIsIDEpKQorCXsKKwkJ
Ly8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxs
KHBhciwgMCk7CisKKwkJcmV0dXJuIDE7CisJfQorCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK2Jv
b2wgaXNfYWxsKGNvbnN0IGluIGludCBhcnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVlKQorewor
CWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRf
YWxsKG91dCBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9
IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5vdXRfaW50X2VtcHR5X2ZyYWcu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5vdXRfaW50X2VtcHR5X2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOWZmMjFiMTY0YmJhNmE0NmE1NmUzNGQwYmFmN2IzNTc4NDk4Njg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9pbm91dF9p
bnRfZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDggQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVj
bGFyYXRpb24uCitpbnQgZnVuY3Rpb24oaW5vdXQgaW50IHBhcik7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlpbnQgcGFyID0gMTsKKwlpbnQgcmV0ID0gMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7
CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUg
Y2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEu
CisJaWYoKHBhciA9PSAwKSAmJiAocmV0ID09IDEpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1
bmN0aW9uIGRlZmluaXRpb24uCitpbnQgZnVuY3Rpb24oaW5vdXQgaW50IHBhcikKK3sKKwkvLyBS
ZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYocGFyID09IDEpCisJeworCQkv
LyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXBhciA9IDA7
CisKKwkJcmV0dXJuIDE7CisJfQorCWVsc2UKKwkJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2lub3V0X2ludF9lbXB0eV92ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X2lub3V0X2ludF9lbXB0eV92ZXJ0LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODFhNDNhM2E4NDQ5MmI3ZGQ2NTcyNTg4MzMyOTM5MWE0MDE0Mjk3ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfaW5vdXRfaW50X2VtcHR5
X3ZlcnQudmVydApAQCAtMCwwICsxLDQ4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
CisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2ludCBmdW5jdGlvbihpbm91dCBpbnQgcGFyKTsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWludCBwYXIgPSAxOworCWludCByZXQgPSAwOworCisJ
ZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFy
YW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9u
IHNob3VsZCByZXR1cm4gMS4KKwlpZigocGFyID09IDApICYmIChyZXQgPT0gMSkpCisJeworCQln
cmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgoraW50IGZ1bmN0aW9uKGlub3V0IGludCBw
YXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKHBhciA9
PSAxKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIp
LgorCQlwYXIgPSAwOworCisJCXJldHVybiAxOworCX0KKwllbHNlCisJCXJldHVybiAwOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9vdXRfaW50X2FycmF5X2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfb3V0X2ludF9hcnJheV9mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWEyYzJjMDRiNTI4ZWVhY2Q0NmU5M2QyZmQ4YzViYWYzYmU4ZGFi
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRfZW1wdHlfb3V0X2lu
dF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSw2OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNs
YXJhdGlvbi4KK2ludCBmdW5jdGlvbihvdXQgaW50IHBhclszXSk7Citib29sIGlzX2FsbChjb25z
dCBpbiBpbnQgYXJyYXlbM10sIGNvbnN0IGluIGludCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0
IGludCBhcnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWludCBwYXJbM107CisJaW50IHJldCA9IDA7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJ
Ly8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuCisJc2V0X2FsbChwYXIsIDEpOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNo
YW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgor
CWlmKGlzX2FsbChwYXIsIDApICYmIChyZXQgPT0gMSkpCisJeworCQlncmF5ID0gMS4wOworCX0K
KworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8g
RnVuY3Rpb24gZGVmaW5pdGlvbi4KK2ludCBmdW5jdGlvbihvdXQgaW50IHBhclszXSkKK3sKKwkv
LyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChw
YXIsIDApOworCisJcmV0dXJuIDE7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGludCBhcnJh
eVszXSwgY29uc3QgaW4gaW50IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFy
cmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBpbnQgYXJyYXlbM10sIGNvbnN0
IGluIGludCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7
CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9p
bnRfZW1wdHlfb3V0X2ludF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50
X2VtcHR5X291dF9pbnRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjYmQ2NGJjZjJkOGFk
NjVjYWEzZjMwNzBjYzMxNzVlMTMwNTlhYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvaW50X2VtcHR5X291dF9pbnRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNjgg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
LgoraW50IGZ1bmN0aW9uKG91dCBpbnQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGlu
dCBhcnJheVszXSwgY29uc3QgaW4gaW50IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgaW50IGFy
cmF5WzNdLCBjb25zdCBpbiBpbnQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50
IHBhclszXTsKKwlpbnQgcmV0ID0gMDsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0
aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4KKwlzZXRfYWxsKHBhciwgMSk7CisKKwlyZXQg
PSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBi
eSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNf
YWxsKHBhciwgMCkgJiYgKHJldCA9PSAxKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRl
ZmluaXRpb24uCitpbnQgZnVuY3Rpb24ob3V0IGludCBwYXJbM10pCit7CisJLy8gVGVzdCBwYXJh
bWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFyLCAwKTsKKwor
CXJldHVybiAxOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpbnQgYXJyYXlbM10sIGNvbnN0
IGluIGludCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiBy
ZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgaW50IGFycmF5WzNdLCBjb25zdCBpbiBpbnQgdmFs
dWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJd
ID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaW50X2VtcHR5X291
dF9pbnRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2ludF9lbXB0eV9vdXRf
aW50X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWJjNTRkMTkxMmM2NDE2MjJhMDI3M2I0
Zjc5MWIzYzU3MGI3MjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2lu
dF9lbXB0eV9vdXRfaW50X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDQyIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8v
IEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoraW50IGZ1bmN0aW9uKG91dCBpbnQgcGFyKTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWludCBwYXIgPSAxOworCWludCByZXQgPSAwOworCisJZmxvYXQg
Z3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVy
IHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3Vs
ZCByZXR1cm4gMS4KKwlpZigocGFyID09IDApICYmIChyZXQgPT0gMSkpCisJeworCQlncmF5ID0g
MS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsK
K30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2ludCBmdW5jdGlvbihvdXQgaW50IHBhcikK
K3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJcGFy
ID0gMDsKKworCXJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2lu
dF9lbXB0eV9vdXRfaW50X2VtcHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pbnRf
ZW1wdHlfb3V0X2ludF9lbXB0eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZlODg0MWFiYWNhYWI1
MjdjYmI1OTc2ZmQyOWQxMmQ3MDI0MzgwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9pbnRfZW1wdHlfb3V0X2ludF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw0MiBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24u
CitpbnQgZnVuY3Rpb24ob3V0IGludCBwYXIpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50
IHBhciA9IDE7CisJaW50IHJldCA9IDA7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0g
ZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkg
dGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKChwYXIg
PT0gMCkgJiYgKHJldCA9PSAxKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRp
b24uCitpbnQgZnVuY3Rpb24ob3V0IGludCBwYXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVh
bGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXBhciA9IDA7CisKKwlyZXR1cm4gMTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9lbXB0eV9pdmVjNF9hcnJh
eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRf
YXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzNmOTM1ZTVkZDBhYjY0YWYwZmI3Mzc1ZmE5
OTQ4MWM0NmU4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRf
ZW1wdHlfZW1wdHlfaXZlYzRfYXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsOTEgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
Ly8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgoraXZlYzQgZnVuY3Rpb24oaXZlYzQgcGFyWzNdKTsK
K2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKTsKK2Jv
b2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSk7
Cit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSk7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpdmVjNCBwYXJbM107CisJaXZlYzQgcmV0ID0gaXZl
YzQoMCwgMCwgMCwgMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0
aGUgZW50aXJlIGFycmF5IHRvIDEuCisJc2V0X2FsbChwYXIsIGl2ZWM0KDEsIDEsIDEsIDEpKTsK
KworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1h
aW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1
cm4gMS4KKwlpZihpc19hbGwocGFyLCBpdmVjNCgxLCAxLCAxLCAxKSkgJiYgaXNfYWxsKHJldCwg
MSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitpdmVjNCBm
dW5jdGlvbihpdmVjNCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJy
YXkuCisJaWYoaXNfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpKQorCXsKKwkJLy8gVGVzdCBw
YXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgaXZl
YzQoMCwgMCwgMCwgMCkpOworCisJCXJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsKKwl9CisJZWxz
ZQorCQlyZXR1cm4gaXZlYzQoMCwgMCwgMCwgMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGlu
IGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKwor
CWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQor
Citib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFs
dWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihh
cnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2
b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sK
KwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1
ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9lbXB0eV9p
dmVjNF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1w
dHlfaXZlYzRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNmI1NzAzZGQyZDZlMDJiNWYy
YjM5N2FkNDAzMjAzNTk3Y2I4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlv
bnMvaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsOTEg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
cy4KK2l2ZWM0IGZ1bmN0aW9uKGl2ZWM0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBp
dmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBpdmVj
NCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBpdmVj
NCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJaXZlYzQgcGFyWzNdOworCWl2ZWM0IHJldCA9IGl2ZWM0KDAsIDAsIDAsIDApOworCisJZmxv
YXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLgor
CXNldF9hbGwocGFyLCBpdmVjNCgxLCAxLCAxLCAxKSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIp
OworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVu
Y3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwg
aXZlYzQoMSwgMSwgMSwgMSkpICYmIGlzX2FsbChyZXQsIDEpKQorCXsKKwkJZ3JheSA9IDEuMDsK
Kwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8g
RnVuY3Rpb24gZGVmaW5pdGlvbnMuCitpdmVjNCBmdW5jdGlvbihpdmVjNCBwYXJbM10pCit7CisJ
Ly8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgaXZlYzQo
MSwgMSwgMSwgMSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0
IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwgMCkpOworCisJCXJldHVy
biBpdmVjNCgxLCAxLCAxLCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gaXZlYzQoMCwgMCwgMCwg
MCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZh
bHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJb
Ml0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVj
NCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOwor
CisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5
WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5
WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9lbXB0eV9pdmVjNF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfZW1wdHlfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyMzA3ODE3MWU1MGViMzU1NzkyMTBlODA0NmI0NjE0NzNjN2NjZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRf
ZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb24uCitpdmVjNCBmdW5jdGlvbihpdmVjNCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4g
aXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBw
YXIsIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpdmVjNCBw
YXIgPSBpdmVjNCgxLCAxLCAxLCAxKTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAwLCAwLCAwKTsK
KworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhl
IHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRo
ZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgMSkgJiYgaXNfYWxs
KHJldCwgMSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
Z3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2l2
ZWM0IGZ1bmN0aW9uKGl2ZWM0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBw
YXJhbWV0ZXIuCisJaWYoaXNfYWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBx
dWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCAwKTsKKworCQlyZXR1
cm4gaXZlYzQoMSwgMSwgMSwgMSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIGl2ZWM0KDAsIDAsIDAs
IDApOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2
YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBw
YXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2
YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9lbXB0eV9pdmVjNF9lbXB0eV92ZXJ0LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1wdHlfaXZlYzRfZW1wdHlfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIwZTY5MWM3M2FlMGZjZjVmNmQzNjJkNTcxOTY4YWZjZDIyMGZk
MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfZW1w
dHlfaXZlYzRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoraXZlYzQgZnVuY3Rpb24o
aXZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50
IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUp
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZlYzQgcGFyID0gaXZlYzQoMSwgMSwgMSwgMSk7
CisJaXZlYzQgcmV0ID0gaXZlYzQoMCwgMCwgMCwgMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFp
biB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biAxLgorCWlmKGlzX2FsbChwYXIsIDEpICYmIGlzX2FsbChyZXQsIDEpKQorCXsKKwkJZ3JheSA9
IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
KworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2l2ZWM0IGZ1bmN0aW9uKGl2ZWM0IHBhcikKK3sK
KwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYoaXNfYWxsKHBhciwg
MSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIiku
CisJCXNldF9hbGwocGFyLCAwKTsKKworCQlyZXR1cm4gaXZlYzQoMSwgMSwgMSwgMSk7CisJfQor
CWVsc2UKKwkJcmV0dXJuIGl2ZWM0KDAsIDAsIDAsIDApOworfQorCitib29sIGlzX2FsbChjb25z
dCBpbiBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7
CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsK
K30KKwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sK
KwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsKKwlw
YXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9l
bXB0eV9pbl9pdmVjNF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRf
ZW1wdHlfaW5faXZlYzRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYmNkMDc2MDBkYzZm
NDc0ZWMzYzVhMzNkZTA3NWVhZmQzNjI1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5faXZlYzRfYXJyYXlfZnJhZy5mcmFnCkBAIC0wLDAgKzEs
OTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgoraXZlYzQgZnVuY3Rpb24oaW4g
aXZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4g
aW50IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IGFycmF5WzNdLCBjb25zdCBp
biBpdmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBp
biBpdmVjNCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpdmVjNCBwYXJbM107CisJ
aXZlYzQgcmV0ID0gaXZlYzQoMCwgMCwgMCwgMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJ
Ly8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuCisJc2V0X2FsbChwYXIsIGl2ZWM0
KDEsIDEsIDEsIDEpKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1l
dGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0
aW9uIHNob3VsZCByZXR1cm4gMS4KKwlpZihpc19hbGwocGFyLCBpdmVjNCgxLCAxLCAxLCAxKSkg
JiYgaXNfYWxsKHJldCwgMSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5p
dGlvbnMuCitpdmVjNCBmdW5jdGlvbihpbiBpdmVjNCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRo
ZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkp
KQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgor
CQlzZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwgMCkpOworCisJCXJldHVybiBpdmVjNCgxLCAx
LCAxLCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gaXZlYzQoMCwgMCwgMCwgMCk7Cit9CisKK2Jv
b2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKQoreworCWJv
b2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisK
KwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBhcnJheVszXSwg
Y29uc3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlb
MF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwly
ZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBp
biBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7
CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9p
dmVjNF9lbXB0eV9pbl9pdmVjNF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMv
aXZlYzRfZW1wdHlfaW5faXZlYzRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmODU5YTRm
NjE4ZDIxZTU4YjZkMDZkNzRkN2U5OTVhMzI5NjIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5faXZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKGluIGl2ZWM0IHBhclszXSk7Citib29sIGlzX2Fs
bChjb25zdCBpbiBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSk7Citib29sIGlzX2FsbChj
b25zdCBpbiBpdmVjNCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpOwordm9pZCBzZXRf
YWxsKG91dCBpdmVjNCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJaXZlYzQgcGFyWzNdOworCWl2ZWM0IHJldCA9IGl2ZWM0KDAsIDAsIDAs
IDApOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBh
cnJheSB0byAxLgorCXNldF9hbGwocGFyLCBpdmVjNCgxLCAxLCAxLCAxKSk7CisKKwlyZXQgPSBm
dW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdl
ZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYo
aXNfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpICYmIGlzX2FsbChyZXQsIDEpKQorCXsKKwkJ
Z3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCitpdmVjNCBmdW5jdGlvbihpbiBpdmVj
NCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNf
YWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVh
bGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwg
MCkpOworCisJCXJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4g
aXZlYzQoMCwgMCwgMCwgMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwg
Y29uc3QgaW4gaW50IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2Fs
bChjb25zdCBpbiBpdmVjNCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9v
bCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwo
b3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9
IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9pbl9pdmVjNF9lbXB0eV9mcmFn
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5faXZlYzRfZW1wdHlfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI3MzQyNDUwNGY1MWQwZmM0MDMwZWEzZDJhNTZmZGVlMjNkZWQ0
MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5f
aXZlYzRfZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24g
ZGVjbGFyYXRpb24uCitpdmVjNCBmdW5jdGlvbihpbiBpdmVjNCBwYXIpOworYm9vbCBpc19hbGwo
Y29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91
dCBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlpdmVjNCBwYXIgPSBpdmVjNCgxLCAxLCAxLCAxKTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAw
LCAwLCAwKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOwor
CisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rp
b24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgMSkg
JiYgaXNfYWxsKHJldCwgMSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5p
dGlvbi4KK2l2ZWM0IGZ1bmN0aW9uKGluIGl2ZWM0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZh
bHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYoaXNfYWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0
IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFyLCAw
KTsKKworCQlyZXR1cm4gaXZlYzQoMSwgMSwgMSwgMSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIGl2
ZWM0KDAsIDAsIDAsIDApOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNv
bnN0IGluIGludCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxs
KG91dCBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsK
KwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9pbl9pdmVjNF9lbXB0
eV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5faXZlYzRfZW1w
dHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ODQwYmQ5OGM4Nzg4ZWNhMzYyYzRlZmU3ZmMxZWRh
YzQ2NzUwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1w
dHlfaW5faXZlYzRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoraXZlYzQgZnVuY3Rp
b24oaW4gaXZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3Qg
aW4gaW50IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQg
dmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZlYzQgcGFyID0gaXZlYzQoMSwgMSwg
MSwgMSk7CisJaXZlYzQgcmV0ID0gaXZlYzQoMCwgMCwgMCwgMCk7CisKKwlmbG9hdCBncmF5ID0g
MC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxk
IHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxk
IHJldHVybiAxLgorCWlmKGlzX2FsbChwYXIsIDEpICYmIGlzX2FsbChyZXQsIDEpKQorCXsKKwkJ
Z3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK2l2ZWM0IGZ1bmN0aW9uKGluIGl2ZWM0
IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYoaXNf
YWxsKHBhciwgMSkpCisJeworCQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQg
aXMgImluIikuCisJCXNldF9hbGwocGFyLCAwKTsKKworCQlyZXR1cm4gaXZlYzQoMSwgMSwgMSwg
MSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIGl2ZWM0KDAsIDAsIDAsIDApOworfQorCitib29sIGlz
X2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwlib29sIHJl
dCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBh
clsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0
dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2
YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2
YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9pdmVjNF9lbXB0eV9pbm91dF9pdmVjNF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5j
dGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEyMGQ5OWI0ZWZlZDM2NjRlNDg0ZTMzMWExZjQ2N2M1YzBjZTkxNDAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYXJyYXlfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgor
aXZlYzQgZnVuY3Rpb24oaW5vdXQgaXZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGlu
IGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2
ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGl2
ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwlpdmVjNCBwYXJbM107CisJaXZlYzQgcmV0ID0gaXZlYzQoMCwgMCwgMCwgMCk7CisKKwlm
bG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEu
CisJc2V0X2FsbChwYXIsIGl2ZWM0KDEsIDEsIDEsIDEpKTsKKworCXJldCA9IGZ1bmN0aW9uKHBh
cik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlv
biBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4KKwlpZihpc19hbGwocGFyLCBpdmVj
NCgwLCAwLCAwLCAwKSkgJiYgaXNfYWxsKHJldCwgMSkpCisJeworCQlncmF5ID0gMS4wOworCX0K
KworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8g
RnVuY3Rpb24gZGVmaW5pdGlvbnMuCitpdmVjNCBmdW5jdGlvbihpbm91dCBpdmVjNCBwYXJbM10p
Cit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwg
aXZlYzQoMSwgMSwgMSwgMSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChk
ZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwgMCkpOworCisJ
CXJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gaXZlYzQoMCwg
MCwgMCwgMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4g
aW50IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBp
biBpdmVjNCBhcnJheVszXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGl2ZWM0
IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOwor
CWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9pbm91dF9pdmVjNF9hcnJheV92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYXJyYXlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3ZjEzNjkyN2M4OWFlNGMzOWIzNmQwM2NlNDRkNTg4NzJkZWM0ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRf
aXZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKGlu
b3V0IGl2ZWM0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNvbnN0
IGluIGludCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBhcnJheVszXSwgY29u
c3QgaW4gaXZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBhcnJheVszXSwgY29u
c3QgaW4gaXZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZlYzQgcGFyWzNd
OworCWl2ZWM0IHJldCA9IGl2ZWM0KDAsIDAsIDAsIDApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLgorCXNldF9hbGwocGFyLCBp
dmVjNCgxLCAxLCAxLCAxKSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBh
cmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlv
biBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwgMCkpICYm
IGlzX2FsbChyZXQsIDEpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQo
Z3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMu
CitpdmVjNCBmdW5jdGlvbihpbm91dCBpdmVjNCBwYXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2
YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlz
ZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwgMCkpOworCisJCXJldHVybiBpdmVjNCgxLCAxLCAx
LCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gaXZlYzQoMCwgMCwgMCwgMCk7Cit9CisKK2Jvb2wg
aXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKQoreworCWJvb2wg
cmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwly
ZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBhcnJheVszXSwgY29u
c3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQg
PSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1
cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBp
dmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJ
YXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVj
NF9lbXB0eV9pbm91dF9pdmVjNF9iaWdhcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlv
bnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYmlnYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA5MWNhODJlOTRjZjk1OWFhZDk4ZTRkOGNmODJjNTRkNWY3MmNlOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfYmlnYXJyYXlf
ZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTEyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
cy4KK2l2ZWM0IGZ1bmN0aW9uKGlub3V0IGl2ZWM0IHBhclsxMF0pOworYm9vbCBpc19hbGwoY29u
c3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3Qg
aW4gaXZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwo
b3V0IGl2ZWM0IGFycmF5WzEwXSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJaXZlYzQgcGFyWzEwXTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAwLCAwLCAw
KTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJy
YXkgdG8gMS4KKwlzZXRfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpOworCisJcmV0ID0gZnVu
Y3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhl
IGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKGlzX2FsbChw
YXIsIGl2ZWM0KDAsIDAsIDAsIDApKSAmJiBpc19hbGwocmV0LCAxKSkKKwl7CisJCWdyYXkgPSAx
LjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
fQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKGlub3V0IGl2ZWM0
IHBhclsxMF0pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNf
YWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVh
bGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgaXZlYzQoMCwgMCwgMCwg
MCkpOworCisJCXJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsKKwl9CisJZWxzZQorCQlyZXR1cm4g
aXZlYzQoMCwgMCwgMCwgMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwg
Y29uc3QgaW4gaW50IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2Fs
bChjb25zdCBpbiBpdmVjNCBhcnJheVsxMF0sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKQoreworCWJv
b2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzNdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihhcnJheVs0XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlb
NV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzZdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihhcnJheVs3XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
YXJyYXlbOF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzldICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQg
aXZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZh
bHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKKwlhcnJheVszXSA9
IHZhbHVlOworCWFycmF5WzRdID0gdmFsdWU7CisJYXJyYXlbNV0gPSB2YWx1ZTsKKwlhcnJheVs2
XSA9IHZhbHVlOworCWFycmF5WzddID0gdmFsdWU7CisJYXJyYXlbOF0gPSB2YWx1ZTsKKwlhcnJh
eVs5XSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2Vt
cHR5X2lub3V0X2l2ZWM0X2JpZ2FycmF5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9p
dmVjNF9lbXB0eV9pbm91dF9pdmVjNF9iaWdhcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhl
MTVhMDQ1MTg0MGY2NDgxNjZjYTU2Zjc4NjZjZTcwZmVhZWMzZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9pbm91dF9pdmVjNF9iaWdhcnJheV92ZXJ0
LnZlcnQKQEAgLTAsMCArMSwxMTIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8v
IEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKGlub3V0IGl2ZWM0IHBhclsx
MF0pOworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUp
OworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiBpdmVjNCB2
YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzEwXSwgY29uc3QgaW4gaXZlYzQg
dmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZlYzQgcGFyWzEwXTsKKwlpdmVjNCBy
ZXQgPSBpdmVjNCgwLCAwLCAwLCAwKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0
aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4KKwlzZXRfYWxsKHBhciwgaXZlYzQoMSwgMSwg
MSwgMSkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hv
dWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJl
dHVybiAxLgorCWlmKGlzX2FsbChwYXIsIGl2ZWM0KDAsIDAsIDAsIDApKSAmJiBpc19hbGwocmV0
LCAxKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXks
IGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgoraXZlYzQgZnVu
Y3Rpb24oaW5vdXQgaXZlYzQgcGFyWzEwXSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRo
ZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCBpdmVjNCgxLCAxLCAxLCAxKSkpCisJeworCQkvLyBU
ZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFy
LCBpdmVjNCgwLCAwLCAwLCAwKSk7CisKKwkJcmV0dXJuIGl2ZWM0KDEsIDEsIDEsIDEpOworCX0K
KwllbHNlCisJCXJldHVybiBpdmVjNCgwLCAwLCAwLCAwKTsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVl
OworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7
Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IGFycmF5WzEwXSwgY29uc3QgaW4gaXZl
YzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzRdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihhcnJheVs1XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlb
Nl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzddICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihhcnJheVs4XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
YXJyYXlbOV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwor
dm9pZCBzZXRfYWxsKG91dCBpdmVjNCBhcnJheVsxMF0sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKQor
eworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZh
bHVlOworCWFycmF5WzNdID0gdmFsdWU7CisJYXJyYXlbNF0gPSB2YWx1ZTsKKwlhcnJheVs1XSA9
IHZhbHVlOworCWFycmF5WzZdID0gdmFsdWU7CisJYXJyYXlbN10gPSB2YWx1ZTsKKwlhcnJheVs4
XSA9IHZhbHVlOworCWFycmF5WzldID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0X2VtcHR5X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NzE0YWY1Zjk4MWJjYzIxNTgwNjgxNjZiYTdhMzc3NTU4NTEzYjI5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0X2Vt
cHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0
aW9uLgoraXZlYzQgZnVuY3Rpb24oaW5vdXQgaXZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0
IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgaXZl
YzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZl
YzQgcGFyID0gaXZlYzQoMSwgMSwgMSwgMSk7CisJaXZlYzQgcmV0ID0gaXZlYzQoMCwgMCwgMCwg
MCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8v
IFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUg
ZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKGlzX2FsbChwYXIsIDApICYmIGlzX2FsbChy
ZXQsIDEpKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdy
YXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitpdmVj
NCBmdW5jdGlvbihpbm91dCBpdmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0
aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIDEpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0
ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMCk7CisKKwkJ
cmV0dXJuIGl2ZWM0KDEsIDEsIDEsIDEpOworCX0KKwllbHNlCisJCXJldHVybiBpdmVjNCgwLCAw
LCAwLCAwKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBp
bnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgaXZl
YzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7CisJcGFyWzFd
ID0gdmFsdWU7CisJcGFyWzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfaW5vdXRfaXZlYzRfZW1wdHlfdmVy
dC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5X2lub3V0X2l2ZWM0X2VtcHR5
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTFmMzM5NTJiOTk3NDE5MGUwYTAwYWI4NTIxZjIzMjVh
YmNjZjkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5
X2lub3V0X2l2ZWM0X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2l2ZWM0IGZ1bmN0
aW9uKGlub3V0IGl2ZWM0IHBhcik7Citib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNv
bnN0IGluIGludCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IHBhciwgY29uc3QgaW4g
aW50IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWl2ZWM0IHBhciA9IGl2ZWM0KDEs
IDEsIDEsIDEpOworCWl2ZWM0IHJldCA9IGl2ZWM0KDAsIDAsIDAsIDApOworCisJZmxvYXQgZ3Jh
eSA9IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNo
b3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCBy
ZXR1cm4gMS4KKwlpZihpc19hbGwocGFyLCAwKSAmJiBpc19hbGwocmV0LCAxKSkKKwl7CisJCWdy
YXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitpdmVjNCBmdW5jdGlvbihpbm91dCBpdmVj
NCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlz
X2FsbChwYXIsIDEpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0
IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMCk7CisKKwkJcmV0dXJuIGl2ZWM0KDEsIDEsIDEs
IDEpOworCX0KKwllbHNlCisJCXJldHVybiBpdmVjNCgwLCAwLCAwLCAwKTsKK30KKworYm9vbCBp
c19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCBy
ZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJl
dHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQg
dmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7CisJcGFyWzFdID0gdmFsdWU7CisJcGFyWzJdID0g
dmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlv
bnMvaXZlYzRfZW1wdHlfb3V0X2l2ZWM0X2FycmF5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0
aW9ucy9pdmVjNF9lbXB0eV9vdXRfaXZlYzRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNi
OTY4MzQ4YjJhNTgwNzg3NGU4N2Y5YzdhOTY0ZGM4MGIzNzE3MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfb3V0X2l2ZWM0X2FycmF5X2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDg1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK2l2ZWM0
IGZ1bmN0aW9uKG91dCBpdmVjNCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQg
cGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgYXJy
YXlbM10sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgaXZlYzQgYXJy
YXlbM10sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWl2
ZWM0IHBhclszXTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAwLCAwLCAwKTsKKworCWZsb2F0IGdy
YXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4KKwlzZXRf
YWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKwor
CS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0
aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlmKGlzX2FsbChwYXIsIGl2ZWM0KDAsIDAs
IDAsIDApKSAmJiBpc19hbGwocmV0LCAxKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlv
biBkZWZpbml0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKG91dCBpdmVjNCBwYXJbM10pCit7CisJLy8g
VGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFy
LCBpdmVjNCgwLCAwLCAwLCAwKSk7CisKKwlyZXR1cm4gaXZlYzQoMSwgMSwgMSwgMSk7Cit9CisK
K2Jvb2wgaXNfYWxsKGNvbnN0IGluIGl2ZWM0IHBhciwgY29uc3QgaW4gaW50IHZhbHVlKQorewor
CWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBhcnJheVsz
XSwgY29uc3QgaW4gaXZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJy
YXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisK
KwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IGl2ZWM0IGFycmF5WzNdLCBjb25z
dCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFs
dWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9u
cy9pdmVjNF9lbXB0eV9vdXRfaXZlYzRfYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rp
b25zL2l2ZWM0X2VtcHR5X291dF9pdmVjNF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk4
YTY4M2UyNzdlMjY2YWI5YTJjZjhhYjQwZTk3ZWY1MzllNzBjNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9vdXRfaXZlYzRfYXJyYXlfdmVydC52ZXJ0
CkBAIC0wLDAgKzEsODUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0
aW9uIGRlY2xhcmF0aW9ucy4KK2l2ZWM0IGZ1bmN0aW9uKG91dCBpdmVjNCBwYXJbM10pOworYm9v
bCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOworYm9vbCBp
c19hbGwoY29uc3QgaW4gaXZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKTsKK3Zv
aWQgc2V0X2FsbChvdXQgaXZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKTsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWl2ZWM0IHBhclszXTsKKwlpdmVjNCByZXQgPSBpdmVjNCgw
LCAwLCAwLCAwKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBl
bnRpcmUgYXJyYXkgdG8gMS4KKwlzZXRfYWxsKHBhciwgaXZlYzQoMSwgMSwgMSwgMSkpOworCisJ
cmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5n
ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLgorCWlm
KGlzX2FsbChwYXIsIGl2ZWM0KDAsIDAsIDAsIDApKSAmJiBpc19hbGwocmV0LCAxKSkKKwl7CisJ
CWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgoraXZlYzQgZnVuY3Rpb24ob3V0IGl2
ZWM0IHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMg
ImluIikuCisJc2V0X2FsbChwYXIsIGl2ZWM0KDAsIDAsIDAsIDApKTsKKworCXJldHVybiBpdmVj
NCgxLCAxLCAxLCAxKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBjb25z
dCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIGl2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiBpdmVjNCB2YWx1ZSkKK3sKKwlib29sIHJl
dCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
YXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQg
aXZlYzQgYXJyYXlbM10sIGNvbnN0IGluIGl2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFs
dWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5X291dF9pdmVjNF9lbXB0eV9mcmFnLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfb3V0X2l2ZWM0X2VtcHR5X2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNzRhNzIyZjZlMDJkMTU4ZTUwM2UwYTY0NjcwYjI2OGY4YTYyZWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL2l2ZWM0X2VtcHR5X291dF9p
dmVjNF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSw2OCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBk
ZWNsYXJhdGlvbi4KK2l2ZWM0IGZ1bmN0aW9uKG91dCBpdmVjNCBwYXIpOworYm9vbCBpc19hbGwo
Y29uc3QgaW4gaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91
dCBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlpdmVjNCBwYXIgPSBpdmVjNCgxLCAxLCAxLCAxKTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAw
LCAwLCAwKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOwor
CisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5k
IHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgMCkgJiYgaXNf
YWxsKHJldCwgMSkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4K
K2l2ZWM0IGZ1bmN0aW9uKG91dCBpdmVjNCBwYXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVh
bGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFyLCAwKTsKKworCXJldHVybiBp
dmVjNCgxLCAxLCAxLCAxKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBj
b25zdCBpbiBpbnQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2Fs
bChvdXQgaXZlYzQgcGFyLCBjb25zdCBpbiBpbnQgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7
CisJcGFyWzFdID0gdmFsdWU7CisJcGFyWzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRfZW1wdHlfb3V0X2l2ZWM0X2Vt
cHR5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9pdmVjNF9lbXB0eV9vdXRfaXZlYzRf
ZW1wdHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZmY2MWQ1ZDJjNjQ1YjY1M2Q2Nzg2MzBlYjVm
YzVkZjljNDdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvaXZlYzRf
ZW1wdHlfb3V0X2l2ZWM0X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDY4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK2l2ZWM0IGZ1
bmN0aW9uKG91dCBpdmVjNCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gaXZlYzQgcGFyLCBj
b25zdCBpbiBpbnQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBwYXIsIGNvbnN0IGlu
IGludCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpdmVjNCBwYXIgPSBpdmVjNCgx
LCAxLCAxLCAxKTsKKwlpdmVjNCByZXQgPSBpdmVjNCgwLCAwLCAwLCAwKTsKKworCWZsb2F0IGdy
YXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBz
aG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQg
cmV0dXJuIDEuCisJaWYoaXNfYWxsKHBhciwgMCkgJiYgaXNfYWxsKHJldCwgMSkpCisJeworCQln
cmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgoraXZlYzQgZnVuY3Rpb24ob3V0IGl2ZWM0
IHBhcikKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIiku
CisJc2V0X2FsbChwYXIsIDApOworCisJcmV0dXJuIGl2ZWM0KDEsIDEsIDEsIDEpOworfQorCiti
b29sIGlzX2FsbChjb25zdCBpbiBpdmVjNCBwYXIsIGNvbnN0IGluIGludCB2YWx1ZSkKK3sKKwli
b29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBpdmVjNCBwYXIsIGNvbnN0IGlu
IGludCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJb
Ml0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy9tYXQ0X2VtcHR5X2VtcHR5X21hdDRfYXJyYXlfZnJhZy5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL21hdDRfZW1wdHlfZW1wdHlfbWF0NF9hcnJheV9mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjJmMDcwNGNkNGIwMDk1YTEyNzg2ZmNiYzcwMWRmMjY5YmNiZmJmYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2VtcHR5X21hdDRfYXJyYXlfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsMTI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2NvbnN0IG1hdDQgbWF0X29uZXMgPSBtYXQ0
KDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEu
MCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCk7Citjb25zdCBtYXQ0
IG1hdF96ZXJvcyA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAw
LjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAwLjAsIDAu
MCwgMC4wKTsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorbWF0NCBmdW5jdGlvbihtYXQ0
IHBhclsyXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQg
dmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0
NCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQg
dmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWF0NCBwYXJbMl07CisJbWF0NCByZXQg
PSBtYXRfemVyb3M7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUg
ZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBhciwgbWF0X29uZXMpOworCisJcmV0ID0g
ZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5n
ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJ
aWYoaXNfYWxsKHBhciwgbWF0X29uZXMpICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5
ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4w
KTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCittYXQ0IGZ1bmN0aW9uKG1hdDQgcGFy
WzJdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChw
YXIsIG1hdF9vbmVzKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVs
dCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIG1hdF96ZXJvcyk7CisKKwkJcmV0dXJuIG1hdF9v
bmVzOworCX0KKwllbHNlCisJCXJldHVybiBtYXRfemVyb3M7Cit9CisKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRy
dWU7CisKKwlpZihwYXJbMF1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsw
XVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CisJaWYocGFyWzFdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzFdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlm
KHBhclsyXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsyXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJb
M11bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbM11bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsK
K30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2
YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJ
cmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBp
biBtYXQ0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2VtcHR5X21hdDRf
YXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfZW1wdHlfbWF0
NF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyOTNjZWQ4ZWUzYjI5NTMyN2IyZjVjMDBi
ZDZhNGExODZlNWM1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0
X2VtcHR5X2VtcHR5X21hdDRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMTI0IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitjb25zdCBtYXQ0IG1hdF9vbmVzID0gbWF0NCgxLjAs
IDEuMCwgMS4wLCAxLjAsCisJCQkgICAxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAxLjAsIDEu
MCwgMS4wLCAxLjAsCisJCQkgICAxLjAsIDEuMCwgMS4wLCAxLjApOworY29uc3QgbWF0NCBtYXRf
emVyb3MgPSBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAw
LjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAu
MCk7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK21hdDQgZnVuY3Rpb24obWF0NCBwYXJb
Ml0pOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFs
dWUpOwordm9pZCBzZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVl
KTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDQgcGFyWzJdOworCW1hdDQgcmV0ID0gbWF0
X3plcm9zOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGly
ZSBhcnJheSB0byAxLjAuCisJc2V0X2FsbChwYXIsIG1hdF9vbmVzKTsKKworCXJldCA9IGZ1bmN0
aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5
IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKGlz
X2FsbChwYXIsIG1hdF9vbmVzKSAmJiBpc19hbGwocmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEu
MDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwor
Ly8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCittYXQ0IGZ1bmN0aW9uKG1hdDQgcGFyWzJdKQorewor
CS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChwYXIsIG1hdF9v
bmVzKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4i
KS4KKwkJc2V0X2FsbChwYXIsIG1hdF96ZXJvcyk7CisKKwkJcmV0dXJuIG1hdF9vbmVzOworCX0K
KwllbHNlCisJCXJldHVybiBtYXRfemVyb3M7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1h
dDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlp
ZihwYXJbMF1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsxXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFy
WzFdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzFdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsyXVsw
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclsyXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbM11bMF0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisJaWYocGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJb
M11bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9v
bCBpc19hbGwoY29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSkKK3sK
Kwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJl
dDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZh
bHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2VtcHR5X21hdDRfZW1wdHlfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfZW1wdHlfbWF0NF9lbXB0eV9m
cmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEwNzViYWQ5MzdiY2Q4MmI1ZmQ5MWNlMTAzOTcxOGRiMGI3
YWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2Vt
cHR5X21hdDRfZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTI4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0
aW9uIGRlY2xhcmF0aW9uLgorbWF0NCBmdW5jdGlvbihtYXQ0IHBhcik7Citib29sIGlzX2FsbChj
b25zdCBpbiBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91
dCBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJbWF0NCBwYXIgPSBtYXQ0KDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCTEuMCwgMS4wLCAxLjAs
IDEuMCwKKwkJCTEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCTEuMCwgMS4wLCAxLjAsIDEuMCk7CisJ
bWF0NCByZXQgPSBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCTAuMCwgMC4wLCAwLjAsIDAu
MCwKKwkJCTAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCTAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKwlm
bG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJh
bWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgMS4wKSAmJiBpc19hbGwo
cmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCitt
YXQ0IGZ1bmN0aW9uKG1hdDQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBh
cmFtZXRlci4KKwlpZihpc19hbGwocGFyLCAxLjApKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIg
cXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMC4wKTsKKworCQly
ZXR1cm4gbWF0NCgxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4w
LAorCQkJICAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAxLjAp
OworCX0KKwllbHNlCisJCXJldHVybiBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAw
LjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAu
MCwgMC4wLCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBj
b25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF1b
MF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsxXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzFdWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzFdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsyXVswXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsz
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbM11bMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxs
KG91dCBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJcGFyWzBdWzBdID0gdmFs
dWU7CisJcGFyWzBdWzFdID0gdmFsdWU7CisJcGFyWzBdWzJdID0gdmFsdWU7CisJcGFyWzBdWzNd
ID0gdmFsdWU7CisKKwlwYXJbMV1bMF0gPSB2YWx1ZTsKKwlwYXJbMV1bMV0gPSB2YWx1ZTsKKwlw
YXJbMV1bMl0gPSB2YWx1ZTsKKwlwYXJbMV1bM10gPSB2YWx1ZTsKKworCXBhclsyXVswXSA9IHZh
bHVlOworCXBhclsyXVsxXSA9IHZhbHVlOworCXBhclsyXVsyXSA9IHZhbHVlOworCXBhclsyXVsz
XSA9IHZhbHVlOworCisJcGFyWzNdWzBdID0gdmFsdWU7CisJcGFyWzNdWzFdID0gdmFsdWU7CisJ
cGFyWzNdWzJdID0gdmFsdWU7CisJcGFyWzNdWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9lbXB0eV9tYXQ0X2VtcHR5X3ZlcnQudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2VtcHR5X21hdDRfZW1wdHlfdmVydC52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJiYmNmNTllY2VhYmMwN2RjYjExNmNjNzllM2M0YzUzYWQ1MGNjNTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9lbXB0eV9tYXQ0
X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDEyOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCittYXQ0IGZ1bmN0aW9uKG1hdDQgcGFy
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7
Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwltYXQ0IHBhciA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAor
CQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAx
LjAsIDEuMCwgMS4wKTsKKwltYXQ0IHJldCA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJ
MC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAs
IDAuMCwgMC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIp
OworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVu
Y3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFy
LCAxLjApICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBk
ZWZpbml0aW9uLgorbWF0NCBmdW5jdGlvbihtYXQ0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZh
bHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYoaXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8vIFRl
c3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIs
IDAuMCk7CisKKwkJcmV0dXJuIG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgIDEuMCwg
MS4wLCAxLjAsIDEuMCwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAgMS4wLCAx
LjAsIDEuMCwgMS4wKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gbWF0NCgwLjAsIDAuMCwgMC4wLCAw
LjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAu
MCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjApOworfQorCitib29sIGlzX2FsbChjb25zdCBp
biBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOwor
CisJaWYocGFyWzBdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMV0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsyXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzBdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlm
KHBhclsxXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzFdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsxXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJb
Ml1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsxXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMl1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzNdWzBd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMV0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclszXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzNdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisK
K3ZvaWQgc2V0X2FsbChvdXQgbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCXBh
clswXVswXSA9IHZhbHVlOworCXBhclswXVsxXSA9IHZhbHVlOworCXBhclswXVsyXSA9IHZhbHVl
OworCXBhclswXVszXSA9IHZhbHVlOworCisJcGFyWzFdWzBdID0gdmFsdWU7CisJcGFyWzFdWzFd
ID0gdmFsdWU7CisJcGFyWzFdWzJdID0gdmFsdWU7CisJcGFyWzFdWzNdID0gdmFsdWU7CisKKwlw
YXJbMl1bMF0gPSB2YWx1ZTsKKwlwYXJbMl1bMV0gPSB2YWx1ZTsKKwlwYXJbMl1bMl0gPSB2YWx1
ZTsKKwlwYXJbMl1bM10gPSB2YWx1ZTsKKworCXBhclszXVswXSA9IHZhbHVlOworCXBhclszXVsx
XSA9IHZhbHVlOworCXBhclszXVsyXSA9IHZhbHVlOworCXBhclszXVszXSA9IHZhbHVlOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5fbWF0NF9hcnJheV9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbl9tYXQ0X2FycmF5X2Zy
YWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jN2VhYzcyYjk3ZjNhYzhlMTI5ZDc2N2VhNTBjZDY4MTI1NjU2
NDE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5f
bWF0NF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxMjQgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworY29uc3QgbWF0NCBt
YXRfb25lcyA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAsIDEuMCwg
MS4wLAorCQkJICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAsIDEuMCwgMS4w
KTsKK2NvbnN0IG1hdDQgbWF0X3plcm9zID0gbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkg
ICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAg
ICAwLjAsIDAuMCwgMC4wLCAwLjApOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCittYXQ0
IGZ1bmN0aW9uKGluIG1hdDQgcGFyWzJdKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFy
LCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IGFycmF5
WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgbWF0NCBhcnJheVsy
XSwgY29uc3QgaW4gbWF0NCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQ0IHBh
clsyXTsKKwltYXQ0IHJldCA9IG1hdF96ZXJvczsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkv
LyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCBtYXRf
b25lcyk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91
bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91
bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCBtYXRfb25lcykgJiYgaXNfYWxsKHJldCwg
MS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5
LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK21hdDQg
ZnVuY3Rpb24oaW4gbWF0NCBwYXJbMl0pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUg
YXJyYXkuCisJaWYoaXNfYWxsKHBhciwgbWF0X29uZXMpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0
ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgbWF0X3plcm9z
KTsKKworCQlyZXR1cm4gbWF0X29uZXM7CisJfQorCWVsc2UKKwkJcmV0dXJuIG1hdF96ZXJvczsK
K30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXVswXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzBdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMF1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVszXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbMV1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsxXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFd
WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bM10gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCisJaWYocGFyWzJdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMl1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsyXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzNdICE9IHZhbHVlKQorCQlyZXQg
PSBmYWxzZTsKKworCWlmKHBhclszXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzNdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMl0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IGFycmF5
WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFy
cmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IG1h
dDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsK
KwlhcnJheVsxXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21h
dDRfZW1wdHlfaW5fbWF0NF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0
NF9lbXB0eV9pbl9tYXQ0X2FycmF5X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjU3Y2M5OTA3MjRl
ODMzYzk5OGFhZTRmNTIxYjE1Njk4YWM5NjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5fbWF0NF9hcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwx
MjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2NvbnN0IG1hdDQgbWF0X29uZXMg
PSBtYXQ0KDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJ
CSAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCk7Citjb25z
dCBtYXQ0IG1hdF96ZXJvcyA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwg
MC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAw
LjAsIDAuMCwgMC4wKTsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgorbWF0NCBmdW5jdGlv
bihpbiBtYXQ0IHBhclsyXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IHBhciwgY29uc3Qg
aW4gZmxvYXQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29u
c3QgaW4gbWF0NCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgYXJyYXlbMl0sIGNvbnN0
IGluIG1hdDQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWF0NCBwYXJbMl07CisJ
bWF0NCByZXQgPSBtYXRfemVyb3M7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlh
bGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBhciwgbWF0X29uZXMpOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFp
biB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biAxLjAuCisJaWYoaXNfYWxsKHBhciwgbWF0X29uZXMpICYmIGlzX2FsbChyZXQsIDEuMCkpCisJ
eworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK21hdDQgZnVuY3Rpb24oaW4g
bWF0NCBwYXJbMl0pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYo
aXNfYWxsKHBhciwgbWF0X29uZXMpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVy
IChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgbWF0X3plcm9zKTsKKworCQlyZXR1
cm4gbWF0X29uZXM7CisJfQorCWVsc2UKKwkJcmV0dXJuIG1hdF96ZXJvczsKK30KKworYm9vbCBp
c19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wg
cmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzBdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMl0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisKKwlpZihwYXJbMV1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBh
clsxXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzJdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCisJaWYocGFyWzJdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1b
MV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwor
CWlmKHBhclszXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzFdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMl0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclszXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1
cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IGFycmF5WzJdLCBjb25zdCBp
biBtYXQ0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IG1hdDQgYXJyYXlbMl0s
IGNvbnN0IGluIG1hdDQgdmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9
IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5f
bWF0NF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbl9t
YXQ0X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2NiNTBlOGE0MDFiOWQ3N2VlYWY1MDg4
MGZlMGNkM2ZiNTNmMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21h
dDRfZW1wdHlfaW5fbWF0NF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxMjggQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
Ly8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCittYXQ0IGZ1bmN0aW9uKGluIG1hdDQgcGFyKTsKK2Jv
b2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Cit2b2lk
IHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwltYXQ0IHBhciA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4w
LCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAxLjAsIDEu
MCwgMS4wKTsKKwltYXQ0IHJldCA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAw
LjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAsIDAuMCwg
MC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJ
Ly8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24g
YW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAxLjAp
ICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVm
aW5pdGlvbi4KK21hdDQgZnVuY3Rpb24oaW4gbWF0NCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2
YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIDEuMCkpCisJeworCQkvLyBU
ZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFy
LCAwLjApOworCisJCXJldHVybiBtYXQ0KDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgICAxLjAs
IDEuMCwgMS4wLCAxLjAsCisJCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgIDEuMCwg
MS4wLCAxLjAsIDEuMCk7CisJfQorCWVsc2UKKwkJcmV0dXJuIG1hdDQoMC4wLCAwLjAsIDAuMCwg
MC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAw
LjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wKTsKK30KKworYm9vbCBpc19hbGwoY29uc3Qg
aW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsK
KworCWlmKHBhclswXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzFd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMl0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclswXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlp
ZihwYXJbMV1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsxXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbMV1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFy
WzJdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMV0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzJdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclszXVsw
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzFdICE9IHZhbHVlKQorCQly
ZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclszXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQor
Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlw
YXJbMF1bMF0gPSB2YWx1ZTsKKwlwYXJbMF1bMV0gPSB2YWx1ZTsKKwlwYXJbMF1bMl0gPSB2YWx1
ZTsKKwlwYXJbMF1bM10gPSB2YWx1ZTsKKworCXBhclsxXVswXSA9IHZhbHVlOworCXBhclsxXVsx
XSA9IHZhbHVlOworCXBhclsxXVsyXSA9IHZhbHVlOworCXBhclsxXVszXSA9IHZhbHVlOworCisJ
cGFyWzJdWzBdID0gdmFsdWU7CisJcGFyWzJdWzFdID0gdmFsdWU7CisJcGFyWzJdWzJdID0gdmFs
dWU7CisJcGFyWzJdWzNdID0gdmFsdWU7CisKKwlwYXJbM11bMF0gPSB2YWx1ZTsKKwlwYXJbM11b
MV0gPSB2YWx1ZTsKKwlwYXJbM11bMl0gPSB2YWx1ZTsKKwlwYXJbM11bM10gPSB2YWx1ZTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2luX21hdDRfZW1wdHlf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5fbWF0NF9lbXB0eV92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc4ZTIyNzg5MWNlMjk3MGMzZTA1NzA1ZGIzNjQ2ZjkzZGU5
ZDhlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2lu
X21hdDRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMTI4IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK21hdDQgZnVuY3Rpb24oaW4g
bWF0NCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0
IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDQgcGFyID0gbWF0NCgxLjAsIDEuMCwgMS4w
LCAxLjAsCisJCQkxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkxLjAsIDEuMCwgMS4wLCAxLjAsCisJ
CQkxLjAsIDEuMCwgMS4wLCAxLjApOworCW1hdDQgcmV0ID0gbWF0NCgwLjAsIDAuMCwgMC4wLCAw
LjAsCisJCQkwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkw
LjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCXJldCA9IGZ1bmN0
aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIGJ5
IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKGlz
X2FsbChwYXIsIDEuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJ
fQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1
bmN0aW9uIGRlZmluaXRpb24uCittYXQ0IGZ1bmN0aW9uKGluIG1hdDQgcGFyKQoreworCS8vIFJl
dHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihpc19hbGwocGFyLCAxLjApKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlz
ZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1cm4gbWF0NCgxLjAsIDEuMCwgMS4wLCAxLjAsCisJ
CQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJ
CSAgICAxLjAsIDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiBtYXQ0KDAuMCwg
MC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAw
LjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNf
YWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJl
dCA9IHRydWU7CisKKwlpZihwYXJbMF1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclswXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCisJaWYocGFyWzFdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJb
MV1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KworCWlmKHBhclsyXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclsyXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlp
ZihwYXJbM11bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihwYXJbM11bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJu
IHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFs
dWUpCit7CisJcGFyWzBdWzBdID0gdmFsdWU7CisJcGFyWzBdWzFdID0gdmFsdWU7CisJcGFyWzBd
WzJdID0gdmFsdWU7CisJcGFyWzBdWzNdID0gdmFsdWU7CisKKwlwYXJbMV1bMF0gPSB2YWx1ZTsK
KwlwYXJbMV1bMV0gPSB2YWx1ZTsKKwlwYXJbMV1bMl0gPSB2YWx1ZTsKKwlwYXJbMV1bM10gPSB2
YWx1ZTsKKworCXBhclsyXVswXSA9IHZhbHVlOworCXBhclsyXVsxXSA9IHZhbHVlOworCXBhclsy
XVsyXSA9IHZhbHVlOworCXBhclsyXVszXSA9IHZhbHVlOworCisJcGFyWzNdWzBdID0gdmFsdWU7
CisJcGFyWzNdWzFdID0gdmFsdWU7CisJcGFyWzNdWzJdID0gdmFsdWU7CisJcGFyWzNdWzNdID0g
dmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbm91
dF9tYXQ0X2FycmF5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2lu
b3V0X21hdDRfYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmZDcyMTU0MTQwNDM3ZjQwODYx
ZDhjOWVjZDNhMDNjMzZkYjFlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlv
bnMvbWF0NF9lbXB0eV9pbm91dF9tYXQ0X2FycmF5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDEyNCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCitjb25zdCBtYXQ0IG1hdF9vbmVzID0gbWF0NCgxLjAsIDEuMCwgMS4wLCAxLjAsCisJ
CQkgICAxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkg
ICAxLjAsIDEuMCwgMS4wLCAxLjApOworY29uc3QgbWF0NCBtYXRfemVyb3MgPSBtYXQ0KDAuMCwg
MC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAw
LjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKy8vIEZ1bmN0aW9u
IGRlY2xhcmF0aW9ucy4KK21hdDQgZnVuY3Rpb24oaW5vdXQgbWF0NCBwYXJbMl0pOworYm9vbCBp
c19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK2Jvb2wgaXNf
YWxsKGNvbnN0IGluIG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpOwordm9pZCBz
ZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKTsKKwordm9pZCBt
YWluICh2b2lkKQoreworCW1hdDQgcGFyWzJdOworCW1hdDQgcmV0ID0gbWF0X3plcm9zOworCisJ
ZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAx
LjAuCisJc2V0X2FsbChwYXIsIG1hdF9vbmVzKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisK
KwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQg
dGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIG1hdF96ZXJv
cykgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJh
Z0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBk
ZWZpbml0aW9ucy4KK21hdDQgZnVuY3Rpb24oaW5vdXQgbWF0NCBwYXJbMl0pCit7CisJLy8gUmV0
dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgbWF0X29uZXMpKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlz
ZXRfYWxsKHBhciwgbWF0X3plcm9zKTsKKworCQlyZXR1cm4gbWF0X29uZXM7CisJfQorCWVsc2UK
KwkJcmV0dXJuIG1hdF96ZXJvczsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIs
IGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclsw
XVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzFdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKHBhclswXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbMV1bMF0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsxXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzFdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMV1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzJdWzBdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsyXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJd
WzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclszXVswXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbM11bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVszXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2Fs
bChjb25zdCBpbiBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKQoreworCWJvb2wg
cmV0ID0gdHJ1ZTsKKworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihhcnJheVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQor
Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpCit7
CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5vdXRfbWF0NF9hcnJheV92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbm91dF9tYXQ0X2FycmF5X3ZlcnQudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMmU2ZjAyNTgxZGRhZTRmMjgzZTFlYzQ2ZWU4NDgyMjAyZGYwYTdkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5vdXRfbWF0
NF9hcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwxMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK2NvbnN0IG1hdDQgbWF0X29uZXMgPSBtYXQ0KDEuMCwgMS4wLCAxLjAsIDEuMCwK
KwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJ
CSAgIDEuMCwgMS4wLCAxLjAsIDEuMCk7Citjb25zdCBtYXQ0IG1hdF96ZXJvcyA9IG1hdDQoMC4w
LCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAs
IDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wKTsKKworLy8gRnVuY3Rp
b24gZGVjbGFyYXRpb25zLgorbWF0NCBmdW5jdGlvbihpbm91dCBtYXQ0IHBhclsyXSk7Citib29s
IGlzX2FsbChjb25zdCBpbiBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBp
c19hbGwoY29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSk7Cit2b2lk
IHNldF9hbGwob3V0IG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJbWF0NCBwYXJbMl07CisJbWF0NCByZXQgPSBtYXRfemVyb3M7CisK
KwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRv
IDEuMC4KKwlzZXRfYWxsKHBhciwgbWF0X29uZXMpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsK
KworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFu
ZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgbWF0X3pl
cm9zKSAmJiBpc19hbGwocmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVm
aW5pdGlvbnMuCittYXQ0IGZ1bmN0aW9uKGlub3V0IG1hdDQgcGFyWzJdKQoreworCS8vIFJldHVy
biB0aGUgdmFsdWUgb2YgdGhlIGFycmF5LgorCWlmKGlzX2FsbChwYXIsIG1hdF9vbmVzKSkKKwl7
CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0
X2FsbChwYXIsIG1hdF96ZXJvcyk7CisKKwkJcmV0dXJuIG1hdF9vbmVzOworCX0KKwllbHNlCisJ
CXJldHVybiBtYXRfemVyb3M7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBj
b25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF1b
MF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsxXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzFdWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzFdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsyXVswXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsz
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbM11bMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwo
Y29uc3QgaW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSkKK3sKKwlib29sIHJl
dCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
YXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwor
dm9pZCBzZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKQorewor
CWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2lub3V0X21hdDRfZW1wdHlfZnJhZy5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfaW5vdXRfbWF0NF9lbXB0eV9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGFlZTAzMDlmZGZlZDhjMjNhNTFiM2MwZDlmZTQ0YmQwNWVmMGVkOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2lub3V0X21hdDRf
ZW1wdHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTI4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xh
cmF0aW9uLgorbWF0NCBmdW5jdGlvbihpbm91dCBtYXQ0IHBhcik7Citib29sIGlzX2FsbChjb25z
dCBpbiBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCBt
YXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
bWF0NCBwYXIgPSBtYXQ0KDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCTEuMCwgMS4wLCAxLjAsIDEu
MCwKKwkJCTEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCTEuMCwgMS4wLCAxLjAsIDEuMCk7CisJbWF0
NCByZXQgPSBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCTAuMCwgMC4wLCAwLjAsIDAuMCwK
KwkJCTAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCTAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKwlmbG9h
dCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0
ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hv
dWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgMC4wKSAmJiBpc19hbGwocmV0LCAxLjAp
KQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdy
YXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCittYXQ0IGZ1bmN0
aW9uKGlub3V0IG1hdDQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFt
ZXRlci4KKwlpZihpc19hbGwocGFyLCAxLjApKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVh
bGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1
cm4gbWF0NCgxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAor
CQkJICAgIDEuMCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAxLjApOwor
CX0KKwllbHNlCisJCXJldHVybiBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAwLjAs
IDAuMCwgMC4wLCAwLjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwg
MC4wLCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25z
dCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF1bMF0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsxXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzFdWzBdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFd
WzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsyXVswXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVszXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbM11bMF0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bM10gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91
dCBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJcGFyWzBdWzBdID0gdmFsdWU7
CisJcGFyWzBdWzFdID0gdmFsdWU7CisJcGFyWzBdWzJdID0gdmFsdWU7CisJcGFyWzBdWzNdID0g
dmFsdWU7CisKKwlwYXJbMV1bMF0gPSB2YWx1ZTsKKwlwYXJbMV1bMV0gPSB2YWx1ZTsKKwlwYXJb
MV1bMl0gPSB2YWx1ZTsKKwlwYXJbMV1bM10gPSB2YWx1ZTsKKworCXBhclsyXVswXSA9IHZhbHVl
OworCXBhclsyXVsxXSA9IHZhbHVlOworCXBhclsyXVsyXSA9IHZhbHVlOworCXBhclsyXVszXSA9
IHZhbHVlOworCisJcGFyWzNdWzBdID0gdmFsdWU7CisJcGFyWzNdWzFdID0gdmFsdWU7CisJcGFy
WzNdWzJdID0gdmFsdWU7CisJcGFyWzNdWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbm91dF9tYXQ0X2VtcHR5X3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X2lub3V0X21hdDRfZW1wdHlfdmVydC52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxMGY1YWRkYjY1YzA0YWQ5YTdhYWEwOGRhYTY3ZjA4ZjJiZWI0OTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9pbm91dF9tYXQ0X2Vt
cHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDEyOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCittYXQ0IGZ1bmN0aW9uKGlub3V0IG1hdDQg
cGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1
ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQ0IHBhciA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4w
LAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4w
LCAxLjAsIDEuMCwgMS4wKTsKKwltYXQ0IHJldCA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAor
CQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAw
LjAsIDAuMCwgMC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihw
YXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rp
b24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAw
LjApICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9y
ID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZp
bml0aW9uLgorbWF0NCBmdW5jdGlvbihpbm91dCBtYXQ0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhl
IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYoaXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8v
IFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChw
YXIsIDAuMCk7CisKKwkJcmV0dXJuIG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgIDEu
MCwgMS4wLCAxLjAsIDEuMCwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkgICAgMS4w
LCAxLjAsIDEuMCwgMS4wKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gbWF0NCgwLjAsIDAuMCwgMC4w
LCAwLjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAs
IDAuMCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjApOworfQorCitib29sIGlzX2FsbChjb25z
dCBpbiBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVl
OworCisJaWYocGFyWzBdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1b
MV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwor
CWlmKHBhclsxXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzFdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMl0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclsxXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihw
YXJbMl1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsxXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMl1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzNd
WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMV0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclszXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzNdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9
CisKK3ZvaWQgc2V0X2FsbChvdXQgbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQorewor
CXBhclswXVswXSA9IHZhbHVlOworCXBhclswXVsxXSA9IHZhbHVlOworCXBhclswXVsyXSA9IHZh
bHVlOworCXBhclswXVszXSA9IHZhbHVlOworCisJcGFyWzFdWzBdID0gdmFsdWU7CisJcGFyWzFd
WzFdID0gdmFsdWU7CisJcGFyWzFdWzJdID0gdmFsdWU7CisJcGFyWzFdWzNdID0gdmFsdWU7CisK
KwlwYXJbMl1bMF0gPSB2YWx1ZTsKKwlwYXJbMl1bMV0gPSB2YWx1ZTsKKwlwYXJbMl1bMl0gPSB2
YWx1ZTsKKwlwYXJbMl1bM10gPSB2YWx1ZTsKKworCXBhclszXVswXSA9IHZhbHVlOworCXBhclsz
XVsxXSA9IHZhbHVlOworCXBhclszXVsyXSA9IHZhbHVlOworCXBhclszXVszXSA9IHZhbHVlOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfb3V0X21hdDRfYXJy
YXlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfb3V0X21hdDRfYXJy
YXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZWNlNjY2ZjFmYTM1NGY2NTkyZDM4Y2Y0OTBmNWE1
NzZiMzY2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvbWF0NF9lbXB0
eV9vdXRfbWF0NF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxMTggQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworY29uc3Qg
bWF0NCBtYXRfb25lcyA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAs
IDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAsIDEu
MCwgMS4wKTsKK2NvbnN0IG1hdDQgbWF0X3plcm9zID0gbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAs
CisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwK
KwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjApOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMu
CittYXQ0IGZ1bmN0aW9uKG91dCBtYXQ0IHBhclsyXSk7Citib29sIGlzX2FsbChjb25zdCBpbiBt
YXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0
NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1hdDQg
YXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
bWF0NCBwYXJbMl07CisJbWF0NCByZXQgPSBtYXRfemVyb3M7CisKKwlmbG9hdCBncmF5ID0gMC4w
OworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBh
ciwgbWF0X29uZXMpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0
ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hv
dWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgbWF0X3plcm9zKSAmJiBpc19hbGwocmV0
LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdy
YXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25zLgorbWF0
NCBmdW5jdGlvbihvdXQgbWF0NCBwYXJbMl0pCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlm
aWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFyLCBtYXRfemVyb3MpOworCisJcmV0
dXJuIG1hdF9vbmVzOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiBtYXQ0IHBhciwgY29uc3Qg
aW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMV0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclswXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzBdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsxXVswXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMV1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsz
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbMl1bMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzJdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bM10gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzNdWzBdICE9IHZhbHVlKQorCQlyZXQg
PSBmYWxzZTsKKwlpZihwYXJbM11bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBh
clszXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzNdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0
IGluIG1hdDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQg
c2V0X2FsbChvdXQgbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSkKK3sKKwlhcnJh
eVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9vdXRfbWF0NF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvbWF0NF9lbXB0eV9vdXRfbWF0NF9hcnJheV92ZXJ0LnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWU1MmQ0NTczMDIzNjM5MjI2ZmY3ZDI3MWYwZWU1ZTNiNmY3ZGI0OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X291dF9tYXQ0X2FycmF5X3ZlcnQu
dmVydApAQCAtMCwwICsxLDExOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworY29u
c3QgbWF0NCBtYXRfb25lcyA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAx
LjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJICAgMS4wLCAxLjAs
IDEuMCwgMS4wKTsKK2NvbnN0IG1hdDQgbWF0X3plcm9zID0gbWF0NCgwLjAsIDAuMCwgMC4wLCAw
LjAsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgIDAuMCwgMC4wLCAwLjAsIDAu
MCwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLCAwLjApOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bnMuCittYXQ0IGZ1bmN0aW9uKG91dCBtYXQ0IHBhclsyXSk7Citib29sIGlzX2FsbChjb25zdCBp
biBtYXQ0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4g
bWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1h
dDQgYXJyYXlbMl0sIGNvbnN0IGluIG1hdDQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJbWF0NCBwYXJbMl07CisJbWF0NCByZXQgPSBtYXRfemVyb3M7CisKKwlmbG9hdCBncmF5ID0g
MC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxs
KHBhciwgbWF0X29uZXMpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJh
bWV0ZXIgc2hvdWxkIGJlIGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24g
c2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgbWF0X3plcm9zKSAmJiBpc19hbGwo
cmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCittYXQ0
IGZ1bmN0aW9uKG91dCBtYXQ0IHBhclsyXSkKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZp
ZXIgKGRlZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChwYXIsIG1hdF96ZXJvcyk7CisKKwlyZXR1
cm4gbWF0X29uZXM7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBp
biBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF1bMF0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisJaWYocGFyWzBdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJb
MF1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzFdWzBdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKHBhclsxXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzNd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclsyXVswXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMl1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVszXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbM11bMF0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclszXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzNdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bM10gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29uc3Qg
aW4gbWF0NCBhcnJheVsyXSwgY29uc3QgaW4gbWF0NCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRy
dWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlb
MV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBz
ZXRfYWxsKG91dCBtYXQ0IGFycmF5WzJdLCBjb25zdCBpbiBtYXQ0IHZhbHVlKQoreworCWFycmF5
WzBdID0gdmFsdWU7CisJYXJyYXlbMV0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X291dF9tYXQ0X2VtcHR5X2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X291dF9tYXQ0X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mODhiYmEwNTBiZTBmNzNlZDJjYmM4ZDFhM2NhMmNhOGU1ZDExMTU3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfb3V0X21hdDRfZW1wdHlfZnJhZy5m
cmFnCkBAIC0wLDAgKzEsMTE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorbWF0
NCBmdW5jdGlvbihvdXQgbWF0NCBwYXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIs
IGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChvdXQgbWF0NCBwYXIsIGNvbnN0
IGluIGZsb2F0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDQgcGFyID0gbWF0
NCgxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkxLjAsIDEuMCwgMS4wLCAxLjAsCisJCQkxLjAsIDEu
MCwgMS4wLCAxLjAsCisJCQkxLjAsIDEuMCwgMS4wLCAxLjApOworCW1hdDQgcmV0ID0gbWF0NCgw
LjAsIDAuMCwgMC4wLCAwLjAsCisJCQkwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkwLjAsIDAuMCwg
MC4wLCAwLjAsCisJCQkwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBj
aGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4w
LgorCWlmKGlzX2FsbChwYXIsIDAuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkg
PSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorbWF0NCBmdW5jdGlvbihvdXQgbWF0NCBw
YXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgor
CXNldF9hbGwocGFyLCAwLjApOworCisJcmV0dXJuIG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAor
CQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkg
ICAgMS4wLCAxLjAsIDEuMCwgMS4wKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBw
YXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBh
clswXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzBdWzFdICE9IHZhbHVl
KQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMF1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKHBhclswXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbMV1b
MF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXVsxXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzFdWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihwYXJbMV1bM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJaWYocGFyWzJdWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl1bMV0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCWlmKHBhclsyXVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzJdWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCWlmKHBhclszXVswXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbM11bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVsz
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNl
dF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlwYXJbMF1bMF0g
PSB2YWx1ZTsKKwlwYXJbMF1bMV0gPSB2YWx1ZTsKKwlwYXJbMF1bMl0gPSB2YWx1ZTsKKwlwYXJb
MF1bM10gPSB2YWx1ZTsKKworCXBhclsxXVswXSA9IHZhbHVlOworCXBhclsxXVsxXSA9IHZhbHVl
OworCXBhclsxXVsyXSA9IHZhbHVlOworCXBhclsxXVszXSA9IHZhbHVlOworCisJcGFyWzJdWzBd
ID0gdmFsdWU7CisJcGFyWzJdWzFdID0gdmFsdWU7CisJcGFyWzJdWzJdID0gdmFsdWU7CisJcGFy
WzJdWzNdID0gdmFsdWU7CisKKwlwYXJbM11bMF0gPSB2YWx1ZTsKKwlwYXJbM11bMV0gPSB2YWx1
ZTsKKwlwYXJbM11bMl0gPSB2YWx1ZTsKKwlwYXJbM11bM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X291dF9tYXQ0X2VtcHR5X3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy9tYXQ0X2VtcHR5X291dF9tYXQ0X2VtcHR5X3ZlcnQudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNTkzYmUyYTU2MDliMjYyNWY5YjFmNWM4MGQ0N2M2YTI5YWU0NGIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL21hdDRfZW1wdHlfb3V0X21hdDRf
ZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMTE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK21hdDQgZnVuY3Rpb24ob3V0IG1hdDQg
cGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1
ZSk7Cit2b2lkIHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQ0IHBhciA9IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4w
LAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkJMS4w
LCAxLjAsIDEuMCwgMS4wKTsKKwltYXQ0IHJldCA9IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLAor
CQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJMC4wLCAw
LjAsIDAuMCwgMC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihw
YXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rp
b24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAw
LjApICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9y
ID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZp
bml0aW9uLgorbWF0NCBmdW5jdGlvbihvdXQgbWF0NCBwYXIpCit7CisJLy8gVGVzdCBwYXJhbWV0
ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCXNldF9hbGwocGFyLCAwLjApOworCisJ
cmV0dXJuIG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4w
LAorCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wLAorCQkgICAgMS4wLCAxLjAsIDEuMCwgMS4wKTsK
K30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gbWF0NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXVswXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzBdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMF1bMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclswXVszXSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlpZihwYXJbMV1bMF0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsxXVsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFd
WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV1bM10gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCisJaWYocGFyWzJdWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihwYXJbMl1bMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXVsyXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdWzNdICE9IHZhbHVlKQorCQlyZXQg
PSBmYWxzZTsKKworCWlmKHBhclszXVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzNdWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM11bMl0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXVszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IG1hdDQgcGFyLCBjb25z
dCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlwYXJbMF1bMF0gPSB2YWx1ZTsKKwlwYXJbMF1bMV0gPSB2
YWx1ZTsKKwlwYXJbMF1bMl0gPSB2YWx1ZTsKKwlwYXJbMF1bM10gPSB2YWx1ZTsKKworCXBhclsx
XVswXSA9IHZhbHVlOworCXBhclsxXVsxXSA9IHZhbHVlOworCXBhclsxXVsyXSA9IHZhbHVlOwor
CXBhclsxXVszXSA9IHZhbHVlOworCisJcGFyWzJdWzBdID0gdmFsdWU7CisJcGFyWzJdWzFdID0g
dmFsdWU7CisJcGFyWzJdWzJdID0gdmFsdWU7CisJcGFyWzJdWzNdID0gdmFsdWU7CisKKwlwYXJb
M11bMF0gPSB2YWx1ZTsKKwlwYXJbM11bMV0gPSB2YWx1ZTsKKwlwYXJbM11bMl0gPSB2YWx1ZTsK
KwlwYXJbM11bM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9x
dWFsaWZpZXJzX2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9xdWFsaWZpZXJz
X2Zsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODAzMzFlM2FmMTI1OTFkNjIzNzBhNjZlYzBh
MWU2YmE2ODNmMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3F1YWxp
ZmllcnNfZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDIgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworCisKK2Zsb2F0IHF1
YWxpZmllcnMoaW4gZmxvYXQgYSwgb3V0IGZsb2F0IGIsIGlub3V0IGZsb2F0IGMsIGNvbnN0IGlu
IGZsb2F0IGQsIGZsb2F0IGUpCit7CisJYiA9IGE7CisJYyArPSBkOworCWEgKz0gMS4wOworCXJl
dHVybiBlOworfQorCisKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGEgPSAxLjAsIGIg
PSAyLjAsIGMgPSAzLjAsIGQgPSA0LjAsIGUgPSAxLjAsIGYgPSAwLjA7CisJZmxvYXQgcSA9IDAu
MDsKKwlmbG9hdCBxMiA9IDAuMDsKKworCWYgPSBxdWFsaWZpZXJzKGEsIGIsIGMsIGQsIGUpOwor
CisJaWYoYSA9PSAxLjApIHEgKz0gMS4wOworCWlmKGIgPT0gMS4wKSBxICs9IDIuMDsKKwlpZihj
ID09IDcuMCkgcSArPSA0LjA7CisJaWYoZCA9PSA0LjApIHEyICs9IDEuMDsKKwlpZihlID09IDEu
MCkgcTIgKz0gMi4wOworCWlmKGYgPT0gMS4wKSBxMiArPSA0LjA7CisKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHZlYzIocSAvIDcuMCwgcTIgLyA3LjApLCAxLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvcXVhbGlmaWVyc19mbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvcXVhbGlmaWVyc19mbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE0MmRm
MmYwMzhkYTdhMjZiNzA4NzU4ZGJjMzQxM2JkNzYxYTZiYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy9xdWFsaWZpZXJzX2Zsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDQy
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisKKworZmxvYXQgcXVhbGlmaWVycyhp
biBmbG9hdCBhLCBvdXQgZmxvYXQgYiwgaW5vdXQgZmxvYXQgYywgY29uc3QgaW4gZmxvYXQgZCwg
ZmxvYXQgZSkKK3sKKwliID0gYTsKKwljICs9IGQ7CisJYSArPSAxLjA7CisJcmV0dXJuIGU7Cit9
CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYSA9IDEuMCwgYiA9IDIuMCwgYyA9
IDMuMCwgZCA9IDQuMCwgZSA9IDEuMCwgZiA9IDAuMDsKKwlmbG9hdCBxID0gMC4wOworCWZsb2F0
IHEyID0gMC4wOworCisJZiA9IHF1YWxpZmllcnMoYSwgYiwgYywgZCwgZSk7CisKKwlpZihhID09
IDEuMCkgcSArPSAxLjA7CisJaWYoYiA9PSAxLjApIHEgKz0gMi4wOworCWlmKGMgPT0gNy4wKSBx
ICs9IDQuMDsKKwlpZihkID09IDQuMCkgcTIgKz0gMS4wOworCWlmKGUgPT0gMS4wKSBxMiArPSAy
LjA7CisJaWYoZiA9PSAxLjApIHEyICs9IDQuMDsKKworCWNvbG9yID0gdmVjNCh2ZWMyKHEgLyA3
LjAsIHEyIC8gNy4wKSwgMS4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL3F1YWxpZmllcnNfc3RydWN0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9x
dWFsaWZpZXJzX3N0cnVjdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxYTdlNzVjMDUzMzkxNTQ0
MjE1MGI4NTdiODYyMjRiMmQ0ODQzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0
aW9ucy9xdWFsaWZpZXJzX3N0cnVjdF9mcmFnLmZyYWcKQEAgLTAsMCArMSw2NiBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorc3RydWN0IHNhYmNkCit7CisJZmxvYXQg
YTsKKwlmbG9hdCBiOworCWZsb2F0IGM7CisJZmxvYXQgZDsKK307CisKKworCitzYWJjZCBxdWFs
aWZpZXJzKGluIHNhYmNkIGEsIG91dCBzYWJjZCBiLCBpbm91dCBzYWJjZCBjLCBjb25zdCBpbiBz
YWJjZCBkLAorc2FiY2QgZSkKK3sKKyAgICAgICAgc2FiY2Qgb25lID0gc2FiY2QoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKKworICAgICAgICBiID0gYTsKKworICAgICAgICBjLmEgKz0gZC5hOworICAg
ICAgICBjLmIgKz0gZC5iOworICAgICAgICBjLmMgKz0gZC5jOworICAgICAgICBjLmQgKz0gZC5k
OworCisgICAgICAgIGEuYSArPSBvbmUuYTsKKyAgICAgICAgYS5iICs9IG9uZS5iOworICAgICAg
ICBhLmMgKz0gb25lLmM7CisgICAgICAgIGEuZCArPSBvbmUuZDsKKworICAgICAgICByZXR1cm4g
ZTsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXNhYmNkIGEgPSBzYWJjZCgxLjAsIDEuMCwg
MS4wLCAxLjApOworCXNhYmNkIGIgPSBzYWJjZCgyLjAsIDIuMCwgMi4wLCAyLjApOworCXNhYmNk
IGMgPSBzYWJjZCgzLjAsIDMuMCwgMy4wLCAzLjApOworCXNhYmNkIGQgPSBzYWJjZCg0LjAsIDQu
MCwgNC4wLCA0LjApOworCXNhYmNkIGUgPSBzYWJjZCgxLjAsIDEuMCwgMS4wLCAxLjApOworCXNh
YmNkIGYgPSBzYWJjZCgwLjAsIDAuMCwgMC4wLCAwLjApOworCXNhYmNkIG9uZSA9IHNhYmNkKDEu
MCwgMS4wLCAxLjAsIDEuMCk7CisJc2FiY2QgZm91ciA9IHNhYmNkKDQuMCwgNC4wLCA0LjAsIDQu
MCk7CisJc2FiY2Qgc2V2ZW4gPSBzYWJjZCg3LjAsIDcuMCwgNy4wLCA3LjApOworCWZsb2F0IHEg
PSAwLjA7CisJZmxvYXQgcTIgPSAwLjA7CisKKwlmID0gcXVhbGlmaWVycyhhLCBiLCBjLCBkLCBl
KTsKKworCWlmKGEgPT0gb25lKSBxICs9IDEuMDsKKwlpZihiID09IG9uZSkgcSArPSAyLjA7CisJ
aWYoYyA9PSBzZXZlbikgcSArPSA0LjA7CisJaWYoZCA9PSBmb3VyKSBxMiArPSAxLjA7CisJaWYo
ZSA9PSBvbmUpIHEyICs9IDIuMDsKKwlpZihmID09IG9uZSkgcTIgKz0gNC4wOworCisJZ2xfRnJh
Z0NvbG9yID0gdmVjNCh2ZWMyKHEgLyA3LjAsIHEyIC8gNy4wKSwgMS4wLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3F1YWxpZmllcnNfc3RydWN0X3ZlcnQudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2Z1bmN0aW9ucy9xdWFsaWZpZXJzX3N0cnVjdF92ZXJ0LnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjAxZjNmNWVmZmYwY2QxMzQ5MDM0MGQ2NGQyYmExOGQxNzNlYmYwMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy9xdWFsaWZpZXJzX3N0cnVjdF92ZXJ0LnZlcnQKQEAg
LTAsMCArMSw3MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworCisKK3N0cnVjdCBz
YWJjZAoreworCWZsb2F0IGE7CisJZmxvYXQgYjsKKwlmbG9hdCBjOworCWZsb2F0IGQ7Cit9Owor
CisKKworc2FiY2QgcXVhbGlmaWVycyhpbiBzYWJjZCBhLCBvdXQgc2FiY2QgYiwgaW5vdXQgc2Fi
Y2QgYywgY29uc3QgaW4gc2FiY2QgZCwKK3NhYmNkIGUpCit7CisgICAgICAgIHNhYmNkIG9uZSA9
IHNhYmNkKDEuMCwgMS4wLCAxLjAsIDEuMCk7CisKKyAgICAgICAgYiA9IGE7CisKKyAgICAgICAg
Yy5hICs9IGQuYTsKKyAgICAgICAgYy5iICs9IGQuYjsKKyAgICAgICAgYy5jICs9IGQuYzsKKyAg
ICAgICAgYy5kICs9IGQuZDsKKworICAgICAgICBhLmEgKz0gb25lLmE7CisgICAgICAgIGEuYiAr
PSBvbmUuYjsKKyAgICAgICAgYS5jICs9IG9uZS5jOworICAgICAgICBhLmQgKz0gb25lLmQ7CisK
KyAgICAgICAgcmV0dXJuIGU7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBhID0g
c2FiY2QoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKwlzYWJjZCBiID0gc2FiY2QoMi4wLCAyLjAsIDIu
MCwgMi4wKTsKKwlzYWJjZCBjID0gc2FiY2QoMy4wLCAzLjAsIDMuMCwgMy4wKTsKKwlzYWJjZCBk
ID0gc2FiY2QoNC4wLCA0LjAsIDQuMCwgNC4wKTsKKwlzYWJjZCBlID0gc2FiY2QoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKKwlzYWJjZCBmID0gc2FiY2QoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKwlzYWJj
ZCBvbmUgPSBzYWJjZCgxLjAsIDEuMCwgMS4wLCAxLjApOworCXNhYmNkIGZvdXIgPSBzYWJjZCg0
LjAsIDQuMCwgNC4wLCA0LjApOworCXNhYmNkIHNldmVuID0gc2FiY2QoNy4wLCA3LjAsIDcuMCwg
Ny4wKTsKKwlmbG9hdCBxID0gMC4wOworCWZsb2F0IHEyID0gMC4wOworCisJZiA9IHF1YWxpZmll
cnMoYSwgYiwgYywgZCwgZSk7CisKKwlpZihhID09IG9uZSkgcSArPSAxLjA7CisJaWYoYiA9PSBv
bmUpIHEgKz0gMi4wOworCWlmKGMgPT0gc2V2ZW4pIHEgKz0gNC4wOworCWlmKGQgPT0gZm91cikg
cTIgKz0gMS4wOworCWlmKGUgPT0gb25lKSBxMiArPSAyLjA7CisJaWYoZiA9PSBvbmUpIHEyICs9
IDQuMDsKKworCWNvbG9yID0gdmVjNCh2ZWMyKHEgLyA3LjAsIHEyIC8gNy4wKSwgMS4wLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfZW1wdHlf
dmVjNF9hcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9lbXB0
eV92ZWM0X2FycmF5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmZmZDY5NWVkODAxMDAzZTk3OTA1
MjRkNDU4ZWQzMGIzOTAyNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25z
L3ZlYzRfZW1wdHlfZW1wdHlfdmVjNF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSw5MSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCit2ZWM0IGZ1bmN0aW9uKHZlYzQgcGFyWzNd
KTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7
Citib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVl
KTsKK3ZvaWQgc2V0X2FsbChvdXQgdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHBhclszXTsKKwl2ZWM0IHJldCA9IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFs
aXplIHRoZSBlbnRpcmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCB2ZWM0KDEuMCwgMS4w
LCAxLjAsIDEuMCkpOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0
ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rp
b24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwgdmVjNCgxLjAsIDEuMCwgMS4w
LCAxLjApKSAmJiBpc19hbGwocmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKKy8vIEZ1bmN0
aW9uIGRlZmluaXRpb25zLgordmVjNCBmdW5jdGlvbih2ZWM0IHBhclszXSkKK3sKKwkvLyBSZXR1
cm4gdGhlIHZhbHVlIG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCB2ZWM0KDEuMCwgMS4w
LCAxLjAsIDEuMCkpKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0
IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKwor
CQlyZXR1cm4gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2
ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQg
cGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihw
YXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9v
bCBpc19hbGwoY29uc3QgaW4gdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sK
Kwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJd
ICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0
X2FsbChvdXQgdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVsw
XSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2VtcHR5X3ZlYzRfYXJyYXlf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfZW1wdHlfdmVjNF9hcnJh
eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M4M2VhZGU4MTFkZTMyZjU4NjI3ZWYxZWIzODZlZGE0
ZWY2ZjI5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5
X2VtcHR5X3ZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsOTEgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KK3ZlYzQgZnVuY3Rp
b24odmVjNCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGlu
IGZsb2F0IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgYXJyYXlbM10sIGNvbnN0
IGluIHZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IGFycmF5WzNdLCBjb25zdCBp
biB2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgcGFyWzNdOworCXZl
YzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0byAxLjAuCisJc2V0X2FsbChwYXIs
IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSk7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJ
Ly8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24g
YW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCB2ZWM0
KDEuMCwgMS4wLCAxLjAsIDEuMCkpICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0g
MS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQor
CisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK3ZlYzQgZnVuY3Rpb24odmVjNCBwYXJbM10pCit7
CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxsKHBhciwgdmVj
NCgxLjAsIDEuMCwgMS4wLCAxLjApKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmll
ciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIHZlYzQoMC4wLCAwLjAsIDAuMCwg
MC4wKSk7CisKKwkJcmV0dXJuIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKwl9CisJZWxzZQor
CQlyZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworfQorCitib29sIGlzX2FsbChjb25z
dCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVl
OworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFs
c2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7
Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQg
dmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlp
ZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQor
Cit2b2lkIHNldF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQgdmFsdWUpCit7
CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0gdmFs
dWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9lbXB0eV92
ZWM0X2VtcHR5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2VtcHR5
X3ZlYzRfZW1wdHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMDI3YWI4ZGVmMDc1ZTBlYzM0ZThk
MjExNGMxYmJjNzM4YTQ4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMv
dmVjNF9lbXB0eV9lbXB0eV92ZWM0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc0IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgordmVjNCBmdW5jdGlvbih2ZWM0IHBhcik7Citi
b29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9p
ZCBzZXRfYWxsKG91dCB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjNCBwYXIgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJdmVj
NCByZXQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOwor
CisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFp
biB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biAxLjAuCisJaWYoaXNfYWxsKHBhciwgMS4wKSAmJiBpc19hbGwocmV0LCAxLjApKQorCXsKKwkJ
Z3JheSA9IDEuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXks
IDEuMCk7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCit2ZWM0IGZ1bmN0aW9uKHZlYzQg
cGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihpc19h
bGwocGFyLCAxLjApKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0
IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1cm4gdmVjNCgxLjAsIDEu
MCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAu
MCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2
YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFy
WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IHBh
ciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7CisJcGFyWzFdID0g
dmFsdWU7CisJcGFyWzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9lbXB0eV92ZWM0X2VtcHR5X3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2VtcHR5X3ZlYzRfZW1wdHlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmNzE0YTU3MjhhNzIyN2U0ZmE1ZmI1ZGU0ZGIwMzZiYzU2NGVmZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9lbXB0eV92
ZWM0X2VtcHR5X3ZlcnQudmVydApAQCAtMCwwICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK3ZlYzQgZnVuY3Rpb24odmVjNCBw
YXIpOworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KTsKK3ZvaWQgc2V0X2FsbChvdXQgdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgcGFyID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjAp
OworCXZlYzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9
IDAuMDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3Vs
ZCByZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3Vs
ZCByZXR1cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIDEuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkK
Kwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXks
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCit2ZWM0IGZ1bmN0aW9uKHZl
YzQgcGFyKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKwlpZihp
c19hbGwocGFyLCAxLjApKQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZh
dWx0IGlzICJpbiIpLgorCQlzZXRfYWxsKHBhciwgMC4wKTsKKworCQlyZXR1cm4gdmVjNCgxLjAs
IDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9h
dCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYo
cGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0
IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJcGFyWzBdID0gdmFsdWU7CisJcGFyWzFd
ID0gdmFsdWU7CisJcGFyWzJdID0gdmFsdWU7CisJcGFyWzNdID0gdmFsdWU7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9pbl92ZWM0X2FycmF5X2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2luX3ZlYzRfYXJyYXlfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzMjU4YzY5YjNiNGQ3N2U2Zjc0MWVlNDBhNGVhNGYwYWIxZGEzYzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9pbl92ZWM0X2Fy
cmF5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDkxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0
aW9ucy4KK3ZlYzQgZnVuY3Rpb24oaW4gdmVjNCBwYXJbM10pOworYm9vbCBpc19hbGwoY29uc3Qg
aW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGlu
IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCB2
ZWM0IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzQgcGFyWzNdOworCXZlYzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOwor
CisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGlyZSBhcnJheSB0
byAxLjAuCisJc2V0X2FsbChwYXIsIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSk7CisKKwlyZXQg
PSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hh
bmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4K
KwlpZihpc19hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkpICYmIGlzX2FsbChyZXQs
IDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3Jh
eSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCit2ZWM0
IGZ1bmN0aW9uKGluIHZlYzQgcGFyWzNdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhl
IGFycmF5LgorCWlmKGlzX2FsbChwYXIsIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSkpCisJewor
CQkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9h
bGwocGFyLCB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOworCisJCXJldHVybiB2ZWM0KDEuMCwg
MS4wLCAxLjAsIDEuMCk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHZlYzQoMC4wLCAwLjAsIDAuMCwg
MC4wKTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0
IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiB2
ZWM0IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsK
KworCWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IGFycmF5
WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlb
MV0gPSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
ZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5fdmVjNF9hcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvdmVjNF9lbXB0eV9pbl92ZWM0X2FycmF5X3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NjE4NTQ0NTc3Y2M3ZGU3MThjNDNlYzNjM2ViODYzMzcyMWY3YWEyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5fdmVjNF9hcnJheV92ZXJ0LnZlcnQK
QEAgLTAsMCArMSw5MSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rp
b24gZGVjbGFyYXRpb25zLgordmVjNCBmdW5jdGlvbihpbiB2ZWM0IHBhclszXSk7Citib29sIGlz
X2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBpc19h
bGwoY29uc3QgaW4gdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7Cit2b2lkIHNl
dF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQgdmFsdWUpOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjNCBwYXJbM107CisJdmVjNCByZXQgPSB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDAuMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50
aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBhciwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjAp
KTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBy
ZW1haW4gdW5jaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCBy
ZXR1cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSkgJiYg
aXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0
KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb25z
LgordmVjNCBmdW5jdGlvbihpbiB2ZWM0IHBhclszXSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVl
IG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkp
KQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgor
CQlzZXRfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKworCQlyZXR1cm4gdmVj
NCgxLjAsIDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBp
biBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlib29sIHJldCA9
IHRydWU7CisKKwlpZihhcnJheVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJy
YXlbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgdmVj
NCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOwor
CWFycmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2luX3ZlYzRfZW1wdHlfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5fdmVjNF9lbXB0eV9mcmFnLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5NGJkOWVkNTBmYTZlODJlNzllMTIzNWE5OWRhOGQyMzU0M2M2OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2luX3ZlYzRfZW1wdHlfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsNzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCit2
ZWM0IGZ1bmN0aW9uKGluIHZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFy
LCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IHZlYzQgcGFyLCBjb25z
dCBpbiBmbG9hdCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHBhciA9IHZl
YzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKwl2ZWM0IHJldCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwg
MC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJ
Ly8gVGhlIHBhcmFtZXRlciBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24g
YW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAxLjAp
ICYmIGlzX2FsbChyZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVm
aW5pdGlvbi4KK3ZlYzQgZnVuY3Rpb24oaW4gdmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2
YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIDEuMCkpCisJeworCQkvLyBU
ZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFy
LCAwLjApOworCisJCXJldHVybiB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJfQorCWVsc2UK
KwkJcmV0dXJuIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1
ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0
OworfQorCit2b2lkIHNldF9hbGwob3V0IHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkK
K3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsK
KwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0
X2VtcHR5X2luX3ZlYzRfZW1wdHlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRf
ZW1wdHlfaW5fdmVjNF9lbXB0eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThiZWQ1NzZiNTM4MjM4
YzlhODBjMzNmMTUxYjBlY2QzZDAyNGQwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1
bmN0aW9ucy92ZWM0X2VtcHR5X2luX3ZlYzRfZW1wdHlfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNzQg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
LgordmVjNCBmdW5jdGlvbihpbiB2ZWM0IHBhcik7Citib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0
IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IHBhciwg
Y29uc3QgaW4gZmxvYXQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBwYXIg
PSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJdmVjNCByZXQgPSB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDAuMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsK
KworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQgYnkgdGhlIGZ1bmN0
aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJaWYoaXNfYWxsKHBhciwg
MS4wKSAmJiBpc19hbGwocmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVm
aW5pdGlvbi4KK3ZlYzQgZnVuY3Rpb24oaW4gdmVjNCBwYXIpCit7CisJLy8gUmV0dXJuIHRoZSB2
YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCWlmKGlzX2FsbChwYXIsIDEuMCkpCisJeworCQkvLyBU
ZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwocGFy
LCAwLjApOworCisJCXJldHVybiB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJfQorCWVsc2UK
KwkJcmV0dXJuIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1
ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzFdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0
OworfQorCit2b2lkIHNldF9hbGwob3V0IHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkK
K3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1ZTsKKwlwYXJbMl0gPSB2YWx1ZTsK
KwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0
X2VtcHR5X2lub3V0X3ZlYzRfYXJyYXlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3Zl
YzRfZW1wdHlfaW5vdXRfdmVjNF9hcnJheV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU2OWI1NjM5
ZTdkOGZjZjQ2ZjgyNDJhODJlZWIzMGNiODQ4ZDBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X2lub3V0X3ZlYzRfYXJyYXlfZnJhZy5mcmFnCkBAIC0w
LDAgKzEsOTEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zLgordmVjNCBmdW5jdGlv
bihpbm91dCB2ZWM0IHBhclszXSk7Citib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29u
c3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBhcnJheVszXSwg
Y29uc3QgaW4gdmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNv
bnN0IGluIHZlYzQgdmFsdWUpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBwYXJbM107
CisJdmVjNCByZXQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKwlmbG9hdCBncmF5ID0g
MC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUgZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxs
KHBhciwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7
CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBh
bmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIHZlYzQo
MC4wLCAwLjAsIDAuMCwgMC4wKSkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkgPSAx
LjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
fQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9ucy4KK3ZlYzQgZnVuY3Rpb24oaW5vdXQgdmVjNCBw
YXJbM10pCit7CisJLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXJyYXkuCisJaWYoaXNfYWxs
KHBhciwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVy
IHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIHZlYzQoMC4wLCAw
LjAsIDAuMCwgMC4wKSk7CisKKwkJcmV0dXJuIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKwl9
CisJZWxzZQorCQlyZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworfQorCitib29sIGlz
X2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCBy
ZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihw
YXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJl
dHVybiByZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgYXJyYXlbM10sIGNvbnN0
IGluIHZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0g
dmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBm
YWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4g
cmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQg
dmFsdWUpCit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5
WzJdID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0
eV9pbm91dF92ZWM0X2FycmF5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92ZWM0X2Vt
cHR5X2lub3V0X3ZlYzRfYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNTQ3MTM0ZGQwZjQ4
MDJjMWEyNjUwNTA3ZDM0ZjA2MTlkZDMwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9m
dW5jdGlvbnMvdmVjNF9lbXB0eV9pbm91dF92ZWM0X2FycmF5X3ZlcnQudmVydApAQCAtMCwwICsx
LDkxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5jdGlvbiBkZWNsYXJh
dGlvbnMuCit2ZWM0IGZ1bmN0aW9uKGlub3V0IHZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25z
dCBpbiB2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChv
dXQgdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWM0IHBhclszXTsKKwl2ZWM0IHJldCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4w
KTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJy
YXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkpOworCisJ
cmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5n
ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJ
aWYoaXNfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKSAmJiBpc19hbGwocmV0LCAx
LjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCit2ZWM0IGZ1bmN0
aW9uKGlub3V0IHZlYzQgcGFyWzNdKQoreworCS8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGFy
cmF5LgorCWlmKGlzX2FsbChwYXIsIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSkpCisJeworCQkv
LyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJCXNldF9hbGwo
cGFyLCB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOworCisJCXJldHVybiB2ZWM0KDEuMCwgMS4w
LCAxLjAsIDEuMCk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4w
KTsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZh
bHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJb
Ml0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0
ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0
IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKwor
CWlmKGFycmF5WzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsxXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IGFycmF5WzNd
LCBjb25zdCBpbiB2ZWM0IHZhbHVlKQoreworCWFycmF5WzBdID0gdmFsdWU7CisJYXJyYXlbMV0g
PSB2YWx1ZTsKKwlhcnJheVsyXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRfdmVjNF9iaWdhcnJheV9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9pbm91dF92ZWM0X2JpZ2FycmF5X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYjFhODFjYzA5M2IxZWNhMjQ1OWY1N2ExNDk5OGRiYTM4ODc5YjUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRfdmVjNF9iaWdh
cnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxMTIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb25zLgordmVjNCBmdW5jdGlvbihpbm91dCB2ZWM0IHBhclsxMF0pOworYm9vbCBpc19hbGwo
Y29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIHZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKTsKK3ZvaWQgc2V0X2Fs
bChvdXQgdmVjNCBhcnJheVsxMF0sIGNvbnN0IGluIHZlYzQgdmFsdWUpOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjNCBwYXJbMTBdOworCXZlYzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4w
LCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsKKworCS8vIEluaXRpYWxpemUgdGhlIGVudGly
ZSBhcnJheSB0byAxLjAuCisJc2V0X2FsbChwYXIsIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSk7
CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUg
Y2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEu
MC4KKwlpZihpc19hbGwocGFyLCB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpICYmIGlzX2FsbChy
ZXQsIDEuMCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
Z3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCit2
ZWM0IGZ1bmN0aW9uKGlub3V0IHZlYzQgcGFyWzEwXSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVl
IG9mIHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkp
KQorCXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgor
CQlzZXRfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKworCQlyZXR1cm4gdmVj
NCgxLjAsIDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBp
biBmbG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7
CisJaWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFs
dWUpCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29u
c3QgaW4gdmVjNCBhcnJheVsxMF0sIGNvbnN0IGluIHZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQg
PSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFy
cmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkK
KwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOwor
CWlmKGFycmF5WzRdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs1XSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbNl0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKGFycmF5WzddICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs4
XSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbOV0gIT0gdmFsdWUpCisJCXJl
dCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IGFy
cmF5WzEwXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFy
cmF5WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKKwlhcnJheVszXSA9IHZhbHVlOwor
CWFycmF5WzRdID0gdmFsdWU7CisJYXJyYXlbNV0gPSB2YWx1ZTsKKwlhcnJheVs2XSA9IHZhbHVl
OworCWFycmF5WzddID0gdmFsdWU7CisJYXJyYXlbOF0gPSB2YWx1ZTsKKwlhcnJheVs5XSA9IHZh
bHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRf
dmVjNF9iaWdhcnJheV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9p
bm91dF92ZWM0X2JpZ2FycmF5X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2U1N2UzNzZiYzg1M2Iz
NDI1YjAwYWZmNDgwN2IzYWQ0YzhhZjRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVu
Y3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRfdmVjNF9iaWdhcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCAr
MSwxMTIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xh
cmF0aW9ucy4KK3ZlYzQgZnVuY3Rpb24oaW5vdXQgdmVjNCBwYXJbMTBdKTsKK2Jvb2wgaXNfYWxs
KGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Citib29sIGlzX2FsbChj
b25zdCBpbiB2ZWM0IGFycmF5WzEwXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7Cit2b2lkIHNldF9h
bGwob3V0IHZlYzQgYXJyYXlbMTBdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKTsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzQgcGFyWzEwXTsKKwl2ZWM0IHJldCA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMC4wKTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRp
cmUgYXJyYXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkp
OworCisJcmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJl
IGNoYW5nZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAx
LjAuCisJaWYoaXNfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKSAmJiBpc19hbGwo
cmV0LCAxLjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCit2ZWM0
IGZ1bmN0aW9uKGlub3V0IHZlYzQgcGFyWzEwXSkKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9m
IHRoZSBhcnJheS4KKwlpZihpc19hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkpKQor
CXsKKwkJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgorCQlz
ZXRfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKworCQlyZXR1cm4gdmVjNCgx
LjAsIDEuMCwgMS4wLCAxLjApOworCX0KKwllbHNlCisJCXJldHVybiB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDAuMCk7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBm
bG9hdCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJ
aWYocGFyWzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29uc3Qg
aW4gdmVjNCBhcnJheVsxMF0sIGNvbnN0IGluIHZlYzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5
WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJ
cmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KGFycmF5WzRdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs1XSAhPSB2YWx1
ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbNl0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKGFycmF5WzddICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihhcnJheVs4XSAh
PSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbOV0gIT0gdmFsdWUpCisJCXJldCA9
IGZhbHNlOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBzZXRfYWxsKG91dCB2ZWM0IGFycmF5
WzEwXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5
WzFdID0gdmFsdWU7CisJYXJyYXlbMl0gPSB2YWx1ZTsKKwlhcnJheVszXSA9IHZhbHVlOworCWFy
cmF5WzRdID0gdmFsdWU7CisJYXJyYXlbNV0gPSB2YWx1ZTsKKwlhcnJheVs2XSA9IHZhbHVlOwor
CWFycmF5WzddID0gdmFsdWU7CisJYXJyYXlbOF0gPSB2YWx1ZTsKKwlhcnJheVs5XSA9IHZhbHVl
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRfdmVj
NF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9pbm91dF92
ZWM0X2VtcHR5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDE0NGNhYzU3ZGM0MmUyNGM0YTcyMGNm
MDEwZDM3MDY3NjMxZGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3Zl
YzRfZW1wdHlfaW5vdXRfdmVjNF9lbXB0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSw3NCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
CisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK3ZlYzQgZnVuY3Rpb24oaW5vdXQgdmVjNCBwYXIp
OworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsK
K3ZvaWQgc2V0X2FsbChvdXQgdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzQgcGFyID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOwor
CXZlYzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAu
MDsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBi
ZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4g
MS4wLgorCWlmKGlzX2FsbChwYXIsIDAuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdy
YXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgordmVjNCBmdW5jdGlvbihpbm91dCB2
ZWM0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuCisJaWYo
aXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxpZmllciAoZGVm
YXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIDAuMCk7CisKKwkJcmV0dXJuIHZlYzQoMS4w
LCAxLjAsIDEuMCwgMS4wKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4w
LCAwLjApOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxv
YXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlm
KHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQor
CQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgdmVj
NCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCXBhclswXSA9IHZhbHVlOworCXBhclsx
XSA9IHZhbHVlOworCXBhclsyXSA9IHZhbHVlOworCXBhclszXSA9IHZhbHVlOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5vdXRfdmVjNF9lbXB0eV92ZXJ0
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9pbm91dF92ZWM0X2VtcHR5X3Zl
cnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNGU3NTMyMGY4MmRmYTEwODZlY2I2MTg0YzI3NzkxOWMyMTY5
OTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfaW5v
dXRfdmVjNF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCit2ZWM0IGZ1bmN0aW9uKGlu
b3V0IHZlYzQgcGFyKTsKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBm
bG9hdCB2YWx1ZSk7Cit2b2lkIHNldF9hbGwob3V0IHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2
YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHBhciA9IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKKwl2ZWM0IHJldCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKworCWZs
b2F0IGdyYXkgPSAwLjA7CisKKwlyZXQgPSBmdW5jdGlvbihwYXIpOworCisJLy8gVGhlIHBhcmFt
ZXRlciBzaG91bGQgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBz
aG91bGQgcmV0dXJuIDEuMC4KKwlpZihpc19hbGwocGFyLCAwLjApICYmIGlzX2FsbChyZXQsIDEu
MCkpCisJeworCQlncmF5ID0gMS4wOworCX0KKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBn
cmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgordmVjNCBmdW5jdGlv
bihpbm91dCB2ZWM0IHBhcikKK3sKKwkvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0
ZXIuCisJaWYoaXNfYWxsKHBhciwgMS4wKSkKKwl7CisJCS8vIFRlc3QgcGFyYW1ldGVyIHF1YWxp
ZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwkJc2V0X2FsbChwYXIsIDAuMCk7CisKKwkJcmV0dXJu
IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gdmVjNCgwLjAs
IDAuMCwgMC4wLCAwLjApOworfQorCitib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29u
c3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZh
bHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9
IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2Fs
bChvdXQgdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKQoreworCXBhclswXSA9IHZhbHVl
OworCXBhclsxXSA9IHZhbHVlOworCXBhclsyXSA9IHZhbHVlOworCXBhclszXSA9IHZhbHVlOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfb3V0X3ZlYzRfYXJy
YXlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfb3V0X3ZlYzRfYXJy
YXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NjhhN2ViMjQxNWIxNTUzY2U5OGYxMWYxY2JmODEy
N2MyNWJkMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0
eV9vdXRfdmVjNF9hcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSw4NSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCisvLyBGdW5j
dGlvbiBkZWNsYXJhdGlvbnMuCit2ZWM0IGZ1bmN0aW9uKG91dCB2ZWM0IHBhclszXSk7Citib29s
IGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpOworYm9vbCBp
c19hbGwoY29uc3QgaW4gdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7Cit2b2lk
IHNldF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQgdmFsdWUpOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjNCBwYXJbM107CisJdmVjNCByZXQgPSB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDAuMCk7CisKKwlmbG9hdCBncmF5ID0gMC4wOworCisJLy8gSW5pdGlhbGl6ZSB0aGUg
ZW50aXJlIGFycmF5IHRvIDEuMC4KKwlzZXRfYWxsKHBhciwgdmVjNCgxLjAsIDEuMCwgMS4wLCAx
LjApKTsKKworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3Vs
ZCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1
cm4gMS4wLgorCWlmKGlzX2FsbChwYXIsIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSkgJiYgaXNf
YWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkgPSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0g
dmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9u
cy4KK3ZlYzQgZnVuY3Rpb24ob3V0IHZlYzQgcGFyWzNdKQoreworCS8vIFRlc3QgcGFyYW1ldGVy
IHF1YWxpZmllciAoZGVmYXVsdCBpcyAiaW4iKS4KKwlzZXRfYWxsKHBhciwgdmVjNCgwLjAsIDAu
MCwgMC4wLCAwLjApKTsKKworCXJldHVybiB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7Cit9CisK
K2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sK
Kwlib29sIHJldCA9IHRydWU7CisKKwlpZihwYXJbMF0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCWlmKHBhclsxXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzJdICE9IHZh
bHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbM10gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNl
OworCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBhcnJheVsz
XSwgY29uc3QgaW4gdmVjNCB2YWx1ZSkKK3sKKwlib29sIHJldCA9IHRydWU7CisKKwlpZihhcnJh
eVswXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYoYXJyYXlbMV0gIT0gdmFsdWUpCisJ
CXJldCA9IGZhbHNlOworCWlmKGFycmF5WzJdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwor
CXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgdmVjNCBhcnJheVszXSwgY29uc3Qg
aW4gdmVjNCB2YWx1ZSkKK3sKKwlhcnJheVswXSA9IHZhbHVlOworCWFycmF5WzFdID0gdmFsdWU7
CisJYXJyYXlbMl0gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92
ZWM0X2VtcHR5X291dF92ZWM0X2FycmF5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92
ZWM0X2VtcHR5X291dF92ZWM0X2FycmF5X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjVhNDBmOTc5
ZDcxY2NiMmJmNTMwY2VlYjllNTYzMzYyNTQ4ZWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfb3V0X3ZlYzRfYXJyYXlfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsODUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8vIEZ1bmN0aW9uIGRlY2xh
cmF0aW9ucy4KK3ZlYzQgZnVuY3Rpb24ob3V0IHZlYzQgcGFyWzNdKTsKK2Jvb2wgaXNfYWxsKGNv
bnN0IGluIHZlYzQgcGFyLCBjb25zdCBpbiBmbG9hdCB2YWx1ZSk7Citib29sIGlzX2FsbChjb25z
dCBpbiB2ZWM0IGFycmF5WzNdLCBjb25zdCBpbiB2ZWM0IHZhbHVlKTsKK3ZvaWQgc2V0X2FsbChv
dXQgdmVjNCBhcnJheVszXSwgY29uc3QgaW4gdmVjNCB2YWx1ZSk7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWM0IHBhclszXTsKKwl2ZWM0IHJldCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4w
KTsKKworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwkvLyBJbml0aWFsaXplIHRoZSBlbnRpcmUgYXJy
YXkgdG8gMS4wLgorCXNldF9hbGwocGFyLCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkpOworCisJ
cmV0ID0gZnVuY3Rpb24ocGFyKTsKKworCS8vIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGNoYW5n
ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxLjAuCisJ
aWYoaXNfYWxsKHBhciwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApKSAmJiBpc19hbGwocmV0LCAx
LjApKQorCXsKKwkJZ3JheSA9IDEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnMuCit2ZWM0IGZ1bmN0
aW9uKG91dCB2ZWM0IHBhclszXSkKK3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRl
ZmF1bHQgaXMgImluIikuCisJc2V0X2FsbChwYXIsIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSk7
CisKKwlyZXR1cm4gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworfQorCitib29sIGlzX2FsbChj
b25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0
cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMV0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiBy
ZXQ7Cit9CisKK2Jvb2wgaXNfYWxsKGNvbnN0IGluIHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZl
YzQgdmFsdWUpCit7CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYoYXJyYXlbMF0gIT0gdmFsdWUp
CisJCXJldCA9IGZhbHNlOworCWlmKGFycmF5WzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsK
KwlpZihhcnJheVsyXSAhPSB2YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0Owor
fQorCit2b2lkIHNldF9hbGwob3V0IHZlYzQgYXJyYXlbM10sIGNvbnN0IGluIHZlYzQgdmFsdWUp
Cit7CisJYXJyYXlbMF0gPSB2YWx1ZTsKKwlhcnJheVsxXSA9IHZhbHVlOworCWFycmF5WzJdID0g
dmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9vdXRf
dmVjNF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdmVjNF9lbXB0eV9vdXRf
dmVjNF9lbXB0eV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUzNTdhYjVhM2RmYjM3NDQwNzk3ZDU5
OWVlNjg1ZDY4YWZiNDY1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2Z1bmN0aW9ucy92
ZWM0X2VtcHR5X291dF92ZWM0X2VtcHR5X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDY4IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
Ky8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgordmVjNCBmdW5jdGlvbihvdXQgdmVjNCBwYXIpOwor
Ym9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK3Zv
aWQgc2V0X2FsbChvdXQgdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKKwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzQgcGFyID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCXZl
YzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBj
aGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4w
LgorCWlmKGlzX2FsbChwYXIsIDAuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkg
PSAxLjA7CisJfQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworfQorCisvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgordmVjNCBmdW5jdGlvbihvdXQgdmVjNCBw
YXIpCit7CisJLy8gVGVzdCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChkZWZhdWx0IGlzICJpbiIpLgor
CXNldF9hbGwocGFyLCAwLjApOworCisJcmV0dXJuIHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsK
K30KKworYm9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVl
KQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmKHBhclswXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisJaWYocGFyWzFdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxzZTsKKwlpZihwYXJbMl0g
IT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclszXSAhPSB2YWx1ZSkKKwkJcmV0ID0g
ZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNldF9hbGwob3V0IHZlYzQgcGFyLCBj
b25zdCBpbiBmbG9hdCB2YWx1ZSkKK3sKKwlwYXJbMF0gPSB2YWx1ZTsKKwlwYXJbMV0gPSB2YWx1
ZTsKKwlwYXJbMl0gPSB2YWx1ZTsKKwlwYXJbM10gPSB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X291dF92ZWM0X2VtcHR5X3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2Z1bmN0aW9ucy92ZWM0X2VtcHR5X291dF92ZWM0X2VtcHR5X3ZlcnQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMjY5NTZjZjA3ODI5MDg4MjYyNGExNGNkOWJlM2E4MmFiMTRlZTM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZlYzRfZW1wdHlfb3V0X3ZlYzRfZW1wdHlf
dmVydC52ZXJ0CkBAIC0wLDAgKzEsNjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
Ky8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgordmVjNCBmdW5jdGlvbihvdXQgdmVjNCBwYXIpOwor
Ym9vbCBpc19hbGwoY29uc3QgaW4gdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKK3Zv
aWQgc2V0X2FsbChvdXQgdmVjNCBwYXIsIGNvbnN0IGluIGZsb2F0IHZhbHVlKTsKKwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzQgcGFyID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCXZl
YzQgcmV0ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCXJldCA9IGZ1bmN0aW9uKHBhcik7CisKKwkvLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBj
aGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4w
LgorCWlmKGlzX2FsbChwYXIsIDAuMCkgJiYgaXNfYWxsKHJldCwgMS4wKSkKKwl7CisJCWdyYXkg
PSAxLjA7CisJfQorCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CisKKy8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCit2ZWM0IGZ1bmN0aW9uKG91dCB2ZWM0IHBhcikK
K3sKKwkvLyBUZXN0IHBhcmFtZXRlciBxdWFsaWZpZXIgKGRlZmF1bHQgaXMgImluIikuCisJc2V0
X2FsbChwYXIsIDAuMCk7CisKKwlyZXR1cm4gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworfQor
Citib29sIGlzX2FsbChjb25zdCBpbiB2ZWM0IHBhciwgY29uc3QgaW4gZmxvYXQgdmFsdWUpCit7
CisJYm9vbCByZXQgPSB0cnVlOworCisJaWYocGFyWzBdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKwlpZihwYXJbMV0gIT0gdmFsdWUpCisJCXJldCA9IGZhbHNlOworCWlmKHBhclsyXSAhPSB2
YWx1ZSkKKwkJcmV0ID0gZmFsc2U7CisJaWYocGFyWzNdICE9IHZhbHVlKQorCQlyZXQgPSBmYWxz
ZTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0X2FsbChvdXQgdmVjNCBwYXIsIGNvbnN0
IGluIGZsb2F0IHZhbHVlKQoreworCXBhclswXSA9IHZhbHVlOworCXBhclsxXSA9IHZhbHVlOwor
CXBhclsyXSA9IHZhbHVlOworCXBhclszXSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZnVuY3Rpb25zL3ZvaWRfZW1wdHlfZW1wdHlfdm9pZF9lbXB0eV9mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9mdW5jdGlvbnMvdm9pZF9lbXB0eV9lbXB0eV92b2lkX2VtcHR5X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYjI3Nzg2M2QwMWNjMzQwYjM5MDRjMzE1MjRiNjFjMjk2Y2U5YWVlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZvaWRfZW1wdHlfZW1wdHlfdm9pZF9lbXB0
eV9mcmFnLmZyYWcKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitmbG9hdCBncmF5ID0gMC4wOworCisv
LyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KK3ZvaWQgZnVuY3Rpb24odm9pZCk7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlncmF5ID0gMC4wOworCisJZnVuY3Rpb24oKTsKKworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5p
dGlvbi4KK3ZvaWQgZnVuY3Rpb24odm9pZCkKK3sKKwlncmF5ID0gMS4wOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZvaWRfZW1wdHlfZW1wdHlfdm9pZF9lbXB0eV92ZXJ0LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9mdW5jdGlvbnMvdm9pZF9lbXB0eV9lbXB0eV92b2lkX2VtcHR5X3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjUxMzBjMjZlZDhiNDM5MDRiNGMxMTkyYWIxZWJmZTg5ZjNjODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZnVuY3Rpb25zL3ZvaWRfZW1wdHlfZW1wdHlf
dm9pZF9lbXB0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKworZmxvYXQgZ3JheSA9IDAuMDsKKworLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24u
Cit2b2lkIGZ1bmN0aW9uKHZvaWQpOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ3JheSA9IDAu
MDsKKworCWZ1bmN0aW9uKCk7CisKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KKworLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KK3ZvaWQgZnVuY3Rpb24odm9pZCkK
K3sKKwlncmF5ID0gMS4wOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2ds
X0ZyYWdDb29yZF8wMDFfdG9fMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJh
Z0Nvb3JkXzAwMV90b18wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTE4ZGZhMTA1M2JjMzY3NTRmNzQ5
MDc0ZjAyNWRjMzY3ODAyNWNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nv
b3JkL2dsX0ZyYWdDb29yZF8wMDFfdG9fMDAzLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQu
IC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZv
cm1hbmNlIHRlc3Q6IGdsX0ZyYWdDb29yZF8wMDFfdG9fMDAzLmh0bWw8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RS
dW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImdsX0ZyYWdDb29yZF94eV9mcmFnX3JlZi5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfRnJhZ0Nvb3JkX3h5X2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJnbF9GcmFnQ29vcmRfeHlfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImdsX0ZyYWdDb29yZF96X2ZyYWdf
cmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfRnJhZ0Nvb3JkX3pfZnJh
Z19yZWYuZnJhZyIsCisgICAgICAgICJidWlsdGluX3VuaWZvcm1zIjogeworICAgICAgICAgICJt
aW5fcmVxdWlyZWQiOiAyLAorICAgICAgICAgICJ2YWxpZF92YWx1ZXMiOiBbCisgICAgICAgICAg
ICAiZ2xfRGVwdGhSYW5nZS5uZWFyIiwKKyAgICAgICAgICAgICJnbF9EZXB0aFJhbmdlLmZhciIs
CisgICAgICAgICAgICAiZ2xfRGVwdGhSYW5nZS5kaWZmIgorICAgICAgICAgIF0sCisgICAgICAg
IH0KKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogImdsX0ZyYWdDb29yZF96X2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJnbF9GcmFnQ29vcmRfel9mcmFnLnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAw
LjUsCisgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ2xfRnJhZ0Nvb3Jk
X3dfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdsX0ZyYWdDb29yZF93X2Zy
YWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3JkX3dfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2dsX0ZyYWdDb29yZF93X2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZThiZTE4NzI2NzY4YjhlYzVlZWYxZThlNGI2OTI5ZWM5MmE0OTBmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2dsX0ZyYWdDb29yZF93X2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDE1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
b2lkIG1haW4odm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoZ2xfRnJhZ0Nvb3Jk
LncpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2dsX0ZyYWdD
b29yZF94eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3JkX3h5
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzI2NjFmYzVmNzFkNzM0YjFhYjZkMDVlNzM3ODhiOWE0
MjIzNjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2dsX0ZyYWdD
b29yZF94eV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9hdCB2aWV3cG9ydHdpZHRoOwordW5pZm9ybSBm
bG9hdCB2aWV3cG9ydGhlaWdodDsKKwordm9pZCBtYWluKHZvaWQpCit7CisJLy8gVGhlIGltYWdl
IHdpZHRoIGlzIDUwMCBzbyBzY2FsZSB0aGUgcG9zaXRpb24gdG8gMC4uLjEgZm9yIGNvbG9yCisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNChnbF9GcmFnQ29vcmQueCAvdmlld3BvcnR3aWR0aCAsIGdsX0Zy
YWdDb29yZC55L3ZpZXdwb3J0aGVpZ2h0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3JkX3h5X2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3JkX3h5X2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGVlYTljNTgxYjFjMmU2NjA3ODFhMmFlM2FkOGQ5OTI5MzNhOTQxYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2dsX0ZyYWdDb29yZC9nbF9GcmFnQ29vcmRfeHlfZnJhZ19yZWYuZnJhZwpA
QCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbih2b2lkKQoreworCS8vIFRoZSBpbWFnZSB3
aWR0aCBpcyA1MDB4NTAwIGFuZCB0aGUgcmVjdGFuZ2xlIGlzIDQzNHg0MzQKKwkvLyBUaGUgZ3Jl
ZW4gY29tcG9uZW50IGNvcnJlc3BvbmRzIHRvIHggKDAuLi4xIGxlZnQgdG8gcmlnaHQpIGFuZCB0
aGUKKwkvLyBibHVlIGNvbXBvbmVudCBjb3JyZXNwb25kcyB0byB5ICgwLi4uMSBib3R0b20gdG8g
dG9wKQorCWdsX0ZyYWdDb2xvciA9IHZlYzQoKDQzNC4wIC8gNTAwLjApICogKGNvbG9yLmdiIC0g
MC41KSArIDAuNSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nv
b3JkL2dsX0ZyYWdDb29yZF96X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dsX0ZyYWdDb29yZC9nbF9G
cmFnQ29vcmRfel9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgxYTgxZDgwM2I1Y2QyOTRhMzE4MzI2
NTVhYWNiYzc4NzBmMzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dsX0ZyYWdDb29y
ZC9nbF9GcmFnQ29vcmRfel9mcmFnLmZyYWcKQEAgLTAsMCArMSwxNSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordm9pZCBtYWluKHZvaWQpCit7CisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh2ZWMzKGdsX0ZyYWdDb29yZC56KSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2dsX0ZyYWdDb29yZC9nbF9GcmFnQ29vcmRfel9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZ2xfRnJhZ0Nvb3JkL2dsX0ZyYWdDb29yZF96X2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDY2ZGIxN2RlYmVhNTc2NTdlNmJlMDljZjI2NzA1MTFlYzFiMWY1YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2dsX0ZyYWdDb29yZC9nbF9GcmFnQ29vcmRfel9mcmFnX3JlZi5mcmFnCkBA
IC0wLDAgKzEsMjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBwb3NpdGlvbjsKKwordm9pZCBtYWluKHZvaWQpCit7CisJLy8gTm9ybWFsaXpl
ZCBkZXZpY2UgY29vcmRpbmF0ZXMKKwlmbG9hdCB6ID0gcG9zaXRpb24ueiAvIHBvc2l0aW9uLnc7
CisJZmxvYXQgZiA9IGdsX0RlcHRoUmFuZ2UuZmFyOworCWZsb2F0IG4gPSBnbF9EZXB0aFJhbmdl
Lm5lYXI7CisKKwkvLyBXaW5kb3cgY29vcmRpbmF0ZXMKKwl6ID0gKChmIC0gbikgLyAyLjApICog
eiArIChmICsgbikgLyAyLjA7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoeiksIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3JkX3pfZnJh
Z19yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2dsX0ZyYWdDb29yZC9nbF9GcmFnQ29vcmRfel9mcmFnX3Jl
Zi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNjMTFmZmI3M2QzOWIxODQxMjgxOGIyM2JjZTg3MjRlNWZhZTYw
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvZ2xfRnJhZ0Nvb3Jk
X3pfZnJhZ19yZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IHBv
c2l0aW9uOworCit2b2lkIG1haW4odm9pZCkKK3sKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKworCS8vIFZlcnRleCdzIGNsaXAgY29v
cmRpbmF0ZXMKKwlwb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZ2xfRnJhZ0Nvb3JkL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9nbF9GcmFnQ29vcmQvaW5w
dXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODhjZGU3YmZmMTI4NzNiZmE2ZTVlNjhmYmI3MDI2OTYy
ZTE4ZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJhZ0Nvb3JkL2lucHV0LnJ1
bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuCitnbF9GcmFnQ29vcmRfMDAxX3RvXzAwMy5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9nbF9Gcm9udEZhY2luZy9nbF9Gcm9udEZhY2luZ18wMDFfdG9fMDAxLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9nbF9Gcm9udEZhY2luZy9nbF9Gcm9udEZhY2luZ18wMDFfdG9fMDAxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGMxZmUxYWM4NzU2NjZkMmY3N2E2ZDVjNzI5NTQ3MDA0ZmU1YzY2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2dsX0Zyb250RmFjaW5nL2dsX0Zyb250RmFjaW5nXzAwMV90b18w
MDEuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogZ2xfRnJvbnRGYWNp
bmdfMDAxX3RvXzAwMS5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBz
dHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6
IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAi
ZnJvbnRiYWNrc3F1YXJlIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJnbF9Gcm9udEZhY2luZ19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAiZ2xfRnJvbnRGYWNpbmdfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dsX0Zyb250RmFjaW5nL2ds
X0Zyb250RmFjaW5nX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dsX0Zyb250RmFjaW5nL2dsX0Zyb250
RmFjaW5nX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDE0MzU3NGJjNTRkNzYzOWQyMTU4NjQyYjNi
ZmYxYmJiYjAzNWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJvbnRGYWNpbmcv
Z2xfRnJvbnRGYWNpbmdfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZvaWQgbWFpbih2b2lkKQoreworCWlmKGdsX0Zyb250
RmFjaW5nKQorCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisJZWxz
ZQorCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9nbF9Gcm9udEZhY2luZy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xf
RnJvbnRGYWNpbmcvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjQ0NDE5MTk1YzM1MzBlYzMy
YjQyNzlkNzNlNTZlMzMxYjFiZGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ2xfRnJv
bnRGYWNpbmcvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2dsX0Zyb250RmFjaW5nXzAwMV90b18wMDEuaHRt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5fMDAxX3RvXzAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5fMDAxX3RvXzAwOC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJjOTc0MGFkMDY5MzdmYjJlOTFkZWFmYTJiODFmY2EwNTFmNGYyMTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl8wMDFfdG9f
MDA4Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBncmVhdGVyVGhh
bl8wMDFfdG9fMDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0
eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjog
WworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogImdyZWF0ZXJUaGFuX3ZlYzJfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImdyZWF0ZXJUaGFuX3ZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdy
ZWF0ZXJUaGFuX3ZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImdyZWF0ZXJUaGFuX3ZlYzJfdmVydF9yZWYudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZ3JlYXRlclRoYW5fdmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiZ3JlYXRlclRoYW5fdmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRoYW5fdmVjM19mcmFnX3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRoYW5fdmVjM19mcmFnLmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAiZ3JlYXRlclRoYW5fdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiZ3JlYXRlclRoYW5fdmVjM192ZXJ0
X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJncmVhdGVyVGhhbl92ZWMzX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJncmVhdGVyVGhhbl92ZWMzX3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJncmVhdGVyVGhhbl9p
dmVjMl9mcmFnX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRoYW5faXZl
YzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdyZWF0ZXJUaGFuX2l2ZWMy
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJncmVhdGVyVGhhbl9pdmVjMl92ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJncmVhdGVyVGhhbl9pdmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ3Jl
YXRlclRoYW5faXZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogImdyZWF0ZXJUaGFuX2l2ZWMzX2ZyYWdfcmVmLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJncmVhdGVyVGhhbl9pdmVjM19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAiZ3JlYXRlclRoYW5faXZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogImdyZWF0ZXJUaGFuX2l2ZWMzX3ZlcnRfcmVmLnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogImdyZWF0ZXJUaGFuX2l2ZWMzX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJncmVhdGVyVGhhbl9pdmVjM192ZXJ0LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Z3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYjY5
NTRlNzRjYjAwYmIyNWYwZjY2YWIyNGZmMDhlYTY1ZGI4M2YKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjMl9mcmFnLmZyYWcKQEAgLTAsMCAr
MSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAq
IGNvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVj
MiByZXN1bHQgPSB2ZWMyKGdyZWF0ZXJUaGFuKGl2ZWMyKGMpLCBpdmVjMigwKSkpOworCWdsX0Zy
YWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjMl9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Z3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTI0MDYzZGYyYzg1ZTc2ZjdkOWExYmEyNGIzMzI4NDAwMWVhM2YwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZlYzJfZnJhZ19yZWYuZnJhZwpA
QCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGd0KGluIGl2ZWMyIGEsIGluIGl2ZWMyIGIpCit7
CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gPiBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVs
c2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA+IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7
CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnIC0gNC41KTsgICAv
LyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGd0KGl2
ZWMyKGMpLCBpdmVjMigwKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVj
Ml92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjMl92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjhiZmQzMWVjMDIzMDA3YjhkYzU3YTI1NGMxNzNjYjQwYmZlY2U3
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX2l2
ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MiBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhl
IG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihncmVhdGVyVGhhbihpdmVjMihj
KSwgaXZlYzIoMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjMl92ZXJ0X3Jl
Zi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZlYzJfdmVydF9yZWYu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGFjOWQ3ZGNjYWQ2OTZlMzM1MWZmYWYyM2YzMjA2YWI4NGY4ZWVl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5faXZl
YzJfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMiBndChpbiBpdmVjMiBhLCBp
biBpdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdID4gYlswXSkgcmVzdWx0WzBd
ID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gPiBiWzFdKSByZXN1
bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29s
b3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJl
c3VsdCA9IHZlYzIoZ3QoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3Vs
dCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3Jl
YXRlclRoYW5faXZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRo
YW5faXZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDc3YjMyOGI0MjAyODJjOGIwZTNhMDlj
MjI1M2VmNGJjODIzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9n
cmVhdGVyVGhhbl9pdmVjM19mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAg
Ly8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhncmVh
dGVyVGhhbihpdmVjMyhjKSwgaXZlYzMoMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3Vs
dCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFu
X2l2ZWMzX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9p
dmVjM19mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2Nzc1YTliYzRmOTU2ZmFmMzYxOTJjYWE0
ZjQ2N2U1OWM3NTVhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9n
cmVhdGVyVGhhbl9pdmVjM19mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZl
YzMgZ3QoaW4gaXZlYzMgYSwgaW4gaXZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVsw
XSA+IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlp
ZihhWzFdID4gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNl
OworCWlmKGFbMl0gPiBiWzJdKSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0g
ZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMg
YyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZ3QoaXZlYzMoYyksIGl2ZWMzKDApKSk7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9n
cmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY3MjJk
NjU1NzFjMDRiN2Q1MjBmNzk1MDExMzFjMWU5OWZiY2M5MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX2l2ZWMzX3ZlcnQudmVydApAQCAtMCwwICsx
LDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9D
b2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMz
IHJlc3VsdCA9IHZlYzMoZ3JlYXRlclRoYW4oaXZlYzMoYyksIGl2ZWMzKDApKSk7CisJY29sb3Ig
PSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJU
aGFuL2dyZWF0ZXJUaGFuX2l2ZWMzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhh
bi9ncmVhdGVyVGhhbl9pdmVjM192ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNjNmMmFhZWY1
MzM0N2ExYjFmMzA5MDQ5NzQ3MmU1NDkxMmNmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl9pdmVjM192ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEs
MzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK2J2ZWMzIGd0KGluIGl2ZWMzIGEsIGluIGl2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0
OworCWlmKGFbMF0gPiBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0g
ZmFsc2U7CisJaWYoYVsxXSA+IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRb
MV0gPSBmYWxzZTsKKwlpZihhWzJdID4gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJl
c3VsdFsyXSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWMzIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91
bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhndChpdmVjMyhj
KSwgaXZlYzMoMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5fdmVjMl9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl92ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43M2RiYzRhNzJiODE2NzJjNWVlMGFmOTVjMjhjM2M1YzFkYzg0NTI5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5fdmVjMl9mcmFnLmZyYWcKQEAg
LTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKK3By
ZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWMyIGMgPSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRo
ZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3JlYXRlclRoYW4oYywgdmVj
MigwLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzJfZnJhZ19yZWYu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzJfZnJhZ19yZWYuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YzczYjFhYzVlZDkzMDI2MGE3YTc1NzY2ZDdhNjJjZTg3ODIyYmVhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRoYW5fdmVjMl9m
cmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2lmZGVmIEdMX0ZSQUdNRU5UX1BS
RUNJU0lPTl9ISUdICitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisjZWxzZQorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVj
MiBndChpbiB2ZWMyIGEsIGluIHZlYzIgYikKK3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSA+
IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihh
WzFdID4gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOwor
CXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9v
cigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVn
ZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3QoYywgdmVjMigwLjApKSk7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0
ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4v
Z3JlYXRlclRoYW5fdmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg2ZTc4ZTZmZWE4NmI2YWQ3
ZTY0N2Q0YjkzNjAzZWFkMzhkOGZjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0
ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41
KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMy
KGdyZWF0ZXJUaGFuKGMsIHZlYzIoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFu
X3ZlYzJfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3Zl
YzJfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjg4NjE0N2UyZmUyOGQ5MGM1NTA4MzgwZDRj
MzcxYWI4ZWFhZjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3Jl
YXRlclRoYW5fdmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGd0KGlu
IHZlYzIgYSwgaW4gdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdID4gYlswXSkg
cmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gPiBi
WzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAg
KiBndGZfQ29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIK
Kwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3QoYywgdmVjMigwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJl
c3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4v
Z3JlYXRlclRoYW5fdmVjM19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVy
VGhhbl92ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTQ4ZjdlMzQ1Nzc1NGY3M2ViMWY0ZDg2
OGQyNjcyZDBlNzdjMDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4v
Z3JlYXRlclRoYW5fdmVjM19mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAg
Ly8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhncmVh
dGVyVGhhbihjLCB2ZWMzKDAuMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4w
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzNf
ZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3ZlYzNfZnJh
Z19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDBkMjg4NDk4OTVjNDY1MjNmY2VmYjZmYTI3YmFjNGU0
M2Y0ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vZ3JlYXRlclRo
YW5fdmVjM19mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzMgZ3QoaW4g
dmVjMyBhLCBpbiB2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0OworCWlmKGFbMF0gPiBiWzBdKSBy
ZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA+IGJb
MV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJd
ID4gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsyXSA9IGZhbHNlOworCXJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigx
MC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2Vy
CisJdmVjMyByZXN1bHQgPSB2ZWMzKGd0KGMsIHZlYzMoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4v
Z3JlYXRlclRoYW5fdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVy
VGhhbl92ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2RlYzc0NjNmMzRlN2YwMWQwN2IxMWZm
MDJhMzJlNzlmYzNiYjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4v
Z3JlYXRlclRoYW5fdmVjM192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmdiIC0gNC41KTsgICAv
LyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGdyZWF0
ZXJUaGFuKGMsIHZlYzMoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl92ZWMzX3ZlcnRf
cmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9ncmVhdGVyVGhhbl92ZWMzX3ZlcnRfcmVm
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzUyYWRhZTliOTgxZDUxZTQwZDg5NDczMzYxOGVkYTQ1ZDE3OTQ3
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuL2dyZWF0ZXJUaGFuX3Zl
YzNfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMyBndChpbiB2ZWMzIGEsIGlu
IHZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA+IGJbMF0pIHJlc3VsdFswXSA9
IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdID4gYlsxXSkgcmVzdWx0
WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCWlmKGFbMl0gPiBiWzJdKSBy
ZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBndGZf
Q29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVj
MyByZXN1bHQgPSB2ZWMzKGd0KGMsIHZlYzMoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbi9pbnB1dC5ydW4u
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW4vaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDJh
Y2FlNzRkY2E2M2IzMGU3OWEwMjI4YmNjODExMmFiNTY3NWZlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvZ3JlYXRlclRoYW4vaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2dyZWF0ZXJUaGFuXzAwMV90
b18wMDguaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVy
VGhhbkVxdWFsXzAwMV90b18wMDguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3Jl
YXRlclRoYW5FcXVhbF8wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwZWE2ZGI3OGM3OWJk
ZThmYzNiMzQzMDcyNTMxMTFiN2QwMDVhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dy
ZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF8wMDFfdG9fMDA4Lmh0bWwKQEAgLTAsMCAr
MSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBncmVhdGVyVGhhbkVxdWFsXzAwMV90b18wMDgu
aHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAx
NnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRo
YW5FcXVhbF92ZWMyX2ZyYWdfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJncmVhdGVy
VGhhbkVxdWFsX3ZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdyZWF0
ZXJUaGFuRXF1YWxfdmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF92ZWMyX3ZlcnRfcmVmLnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogImdyZWF0ZXJUaGFuRXF1YWxfdmVjMl92ZXJ0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiZ3JlYXRlclRoYW5FcXVhbF92ZWMyX3ZlcnQudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJncmVhdGVyVGhhbkVxdWFs
X3ZlYzNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImdyZWF0ZXJUaGFuRXF1
YWxfdmVjM19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ3JlYXRlclRoYW5F
cXVhbF92ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJncmVhdGVyVGhhbkVxdWFsX3ZlYzNfdmVydF9yZWYudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF92ZWMzX3ZlcnQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJncmVhdGVyVGhhbkVxdWFsX3ZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImdyZWF0ZXJUaGFuRXF1YWxfaXZlYzJf
ZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImdyZWF0ZXJUaGFuRXF1YWxfaXZl
YzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImdyZWF0ZXJUaGFuRXF1YWxf
aXZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImdyZWF0ZXJUaGFuRXF1YWxfaXZlYzJfdmVydF9yZWYudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF9pdmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiZ3JlYXRlclRoYW5FcXVhbF9pdmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF9pdmVjM19m
cmFnX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF9pdmVj
M19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZ3JlYXRlclRoYW5FcXVhbF9p
dmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiZ3JlYXRlclRoYW5FcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJncmVhdGVyVGhhbkVxdWFsX2l2ZWMzX3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJncmVhdGVyVGhhbkVxdWFsX2l2ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9n
cmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMyX2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NDZmNjBiMTlmYWJkMThhNTFlZDAyMjQ2OGY0NTljNmViZTBmMjRmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2
ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWMyIGMgPSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRo
ZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3JlYXRlclRoYW5FcXVhbChp
dmVjMihjKSwgaXZlYzIoMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhh
bkVxdWFsX2l2ZWMyX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dy
ZWF0ZXJUaGFuRXF1YWxfaXZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2EwMzQ3YTc3
MDllY2UxZTAyMWUzYWFmNTgwZjY3NGRjNzk3OTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMyX2ZyYWdfcmVmLmZyYWcK
QEAgLTAsMCArMSwyOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMiBndGUoaW4gaXZlYzIgYSwgaW4gaXZlYzIgYikK
K3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSA+PSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOwor
CWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA+PSBiWzFdKSByZXN1bHRbMV0gPSB0
cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZyAtIDQuNSk7
ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihn
dGUoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRl
clRoYW5FcXVhbF9pdmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dy
ZWF0ZXJUaGFuRXF1YWxfaXZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkYmU1ZWEyNWRlMmVk
NzE4NWE3NTdiYTgzZjg2YzM4ODRhMjgzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9n
cmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzJfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3Rm
X0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVj
MiByZXN1bHQgPSB2ZWMyKGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJ
Y29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzJfdmVydF9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZjJmNDFhNmU5YTJmZGM5NTQyOTg1MjA2NWQ2MWU1MzU5ZjE2
NzZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVy
VGhhbkVxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzIgZ3Rl
KGluIGl2ZWMyIGEsIGluIGl2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gPj0g
YlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFb
MV0gPj0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOwor
CXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9v
cigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBp
bnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGd0ZShpdmVjMihjKSwgaXZlYzIoMCkpKTsKKwlj
b2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzNfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMzX2ZyYWcuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMjQwYTY4MGUyY2I1YTA5ZTgyOTdlYWRiN2E1YjFlMTg4ZjkxN2Y2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFs
X2l2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWMzIGMgPSBmbG9vcigxMC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0
byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGdyZWF0ZXJUaGFuRXF1
YWwoaXZlYzMoYyksIGl2ZWMzKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFu
RXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3Jl
YXRlclRoYW5FcXVhbF9pdmVjM19mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0NjY3NmNlYTQ5
OTljNjk0MTRhM2Q2ZDU0ZTRiNzEzNzU5OGIxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZwpA
QCAtMCwwICsxLDMxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIGd0ZShpbiBpdmVjMyBhLCBpbiBpdmVjMyBiKQor
eworCWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdID49IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJ
ZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdID49IGJbMV0pIHJlc3VsdFsxXSA9IHRy
dWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJdID49IGJbMl0pIHJlc3VsdFsy
XSA9IHRydWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAt
IDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0g
dmVjMyhndGUoaXZlYzMoYyksIGl2ZWMzKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1
bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0
ZXJUaGFuRXF1YWxfaXZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9n
cmVhdGVyVGhhbkVxdWFsX2l2ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmIxMmExZjY2NWRj
MGRkYjdkNGQzNzhkMTlhZWQ3NzhiZDVmYTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Z3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMzX3ZlcnQudmVydApAQCAtMCww
ICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0
Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2
ZWMzIHJlc3VsdCA9IHZlYzMoZ3JlYXRlclRoYW5FcXVhbChpdmVjMyhjKSwgaXZlYzMoMCkpKTsK
Kwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
Z3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX2l2ZWMzX3ZlcnRfcmVmLnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfaXZlYzNfdmVydF9yZWYu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YTU5NTE4NmYzZmEwOTZjNDRmN2E3MmE3M2Q3ZGQxZTJmY2VmNmQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhh
bkVxdWFsX2l2ZWMzX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzMgZ3RlKGlu
IGl2ZWMzIGEsIGluIGl2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0OworCWlmKGFbMF0gPj0gYlsw
XSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0g
Pj0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCWlm
KGFbMl0gPj0gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsyXSA9IGZhbHNl
OworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBm
bG9vcigxMC4wICogZ3RmX0NvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJl
c3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhndGUoaXZlYzMoYyksIGl2ZWMzKDApKSk7
CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMyX2ZyYWcuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMyX2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMzdlNGFlNWNjZTM3MzJiYWMwMjU3ZmE3MThlODJhOTczNWViNDkxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX3Zl
YzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2lmZGVmIEdMX0ZSQUdNRU5UX1BS
RUNJU0lPTl9ISUdICitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisjZWxzZQorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnIC0gNC41KTsg
ICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGdy
ZWF0ZXJUaGFuRXF1YWwoYywgdmVjMigwLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1
bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwv
Z3JlYXRlclRoYW5FcXVhbF92ZWMyX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhh
bkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjMl9mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5
ODdiNTcxZWJkZGE1MTdiMGM3MGUxZjZhN2VjOWQxMmI3N2JjNzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjMl9mcmFnX3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lP
Tl9ISUdICitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisjZWxzZQorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMiBndGUo
aW4gdmVjMiBhLCBpbiB2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gPj0gYlsw
XSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0g
Pj0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCXJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigx
MC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIK
Kwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3RlKGMsIHZlYzIoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVy
VGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVh
dGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDExMjg3NjQyMTcyNThjZTQyMmZmZjVkN2RiZmM1M2VjNzZmMjJlNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMyX3ZlcnQu
dmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxv
b3IoMTAuMCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3Qg
aW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihncmVhdGVyVGhhbkVxdWFsKGMsIHZlYzIoMC4w
KSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMyX3ZlcnRfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjMl92
ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMmM0Yjc0ZjZjZTMxM2EyNzJjYmM1YWQwOGUzM2U0
OGJkMzdhODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dy
ZWF0ZXJUaGFuRXF1YWxfdmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMy
IGd0ZShpbiB2ZWMyIGEsIGluIHZlYzIgYikKK3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSA+
PSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYo
YVsxXSA+PSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7
CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZs
b29yKDEwLjAgKiBndGZfQ29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0
IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIoZ3RlKGMsIHZlYzIoMC4wKSkpOworCWNvbG9y
ID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dy
ZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMzX2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYTBiOTdjODdkMDlhNTFkNjJhZmM2NTM3ODM1Y2ZmNTQzNzhjOWI1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFsX3ZlYzNf
ZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBu
ZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZ3JlYXRlclRoYW5FcXVhbChjLCB2
ZWMzKDAuMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMzX2Zy
YWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxf
dmVjM19mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MWY0ODkzNDE5NWE3MDgyMmYwZWFjNDRh
OTMzMGZjMzg4M2FjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVx
dWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjM19mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworYnZlYzMgZ3RlKGluIHZlYzMgYSwgaW4gdmVjMyBiKQoreworCWJ2ZWMzIHJlc3VsdDsK
KwlpZihhWzBdID49IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBm
YWxzZTsKKwlpZihhWzFdID49IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRb
MV0gPSBmYWxzZTsKKwlpZihhWzJdID49IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSBy
ZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQg
dG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhndGUoYywgdmVjMygw
LjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjM192ZXJ0LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2dyZWF0ZXJUaGFuRXF1YWxfdmVjM192ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWNmNmJmMDM3M2JjNTYwYmFjZmI2ZmQ2NTBkMWI4MGQxZjVlZjEz
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRo
YW5FcXVhbF92ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJv
dW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZ3JlYXRlclRo
YW5FcXVhbChjLCB2ZWMzKDAuMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvZ3JlYXRlclRoYW5FcXVhbC9ncmVhdGVyVGhhbkVxdWFs
X3ZlYzNfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0ZXJUaGFuRXF1YWwvZ3JlYXRlclRo
YW5FcXVhbF92ZWMzX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDkwN2UzOGZjNWRiNTJkNmE3
YjI4MWE1YWY0MTBmNjhiMDBmNzlhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dyZWF0
ZXJUaGFuRXF1YWwvZ3JlYXRlclRoYW5FcXVhbF92ZWMzX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCAr
MSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworYnZlYzMgZ3RlKGluIHZlYzMgYSwgaW4gdmVjMyBiKQoreworCWJ2ZWMzIHJlc3Vs
dDsKKwlpZihhWzBdID49IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0g
PSBmYWxzZTsKKwlpZihhWzFdID49IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1
bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJdID49IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxz
ZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8v
IHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoZ3RlKGMs
IHZlYzMoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9ncmVhdGVyVGhhbkVxdWFsL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9n
cmVhdGVyVGhhbkVxdWFsL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2Mjg4MzAxMzY0YmZm
Mjk1ZWI3MzY3Zjk0OWU3MmZlMDEzMDk3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2dy
ZWF0ZXJUaGFuRXF1YWwvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2dyZWF0ZXJUaGFuRXF1YWxfMDAxX3Rv
XzAwOC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnB1dC5ydW4udHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI1Nzlk
NDc2ZmM4ZDM3NWZlZDkzM2JhMWQzN2ViY2NmOWM3NTI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvaW52ZXJzZXNxcnQvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2ludmVyc2VzcXJ0XzAwMV90b18w
MDYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfMDAx
X3RvXzAwNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfMDAxX3RvXzAw
Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1ZGQ0MjA5NGYwMmY1MjQ5NzY1N2YxN2M3YzY0OTUzMTE4ZmNm
M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF8w
MDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBpbnZl
cnNlc3FydF8wMDFfdG9fMDA2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5j
c3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRl
c3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImludmVyc2VzcXJ0X2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJpbnZlcnNlc3FydF9mbG9hdF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAiaW52ZXJzZXNxcnRfZmxvYXRfZnJhZ194dmFyeS50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImludmVyc2VzcXJ0X3ZlYzJf
ZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImludmVyc2VzcXJ0X3Zl
YzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludmVyc2VzcXJ0
X3ZlYzJfZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImludmVyc2VzcXJ0X3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogImludmVyc2VzcXJ0X3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogImludmVyc2VzcXJ0X3ZlYzNfZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImludmVyc2VzcXJ0X2Zsb2F0
X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImludmVyc2VzcXJ0
X2Zsb2F0X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJpbnZlcnNlc3Fy
dF9mbG9hdF92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiaW52ZXJzZXNxcnRfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICJpbnZlcnNlc3FydF92ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJpbnZlcnNlc3FydF92ZWMyX3ZlcnRfeHZhcnkudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJpbnZlcnNlc3FydF92
ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImludmVyc2Vz
cXJ0X3ZlYzNfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImludmVyc2Vz
cXJ0X3ZlYzNfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2Vz
cXJ0X2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2Vz
cXJ0X2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMwYjI4NmMyZTU5MDMzYTZh
YmZlYjY0NTFlYWNjMjFiM2MxYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJz
ZXNxcnQvaW52ZXJzZXNxcnRfZmxvYXRfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAoY29sb3IuciAqIDk5LjApICsg
MS4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoaW52ZXJzZXNxcnQoYyksIDAuMCwgMC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfZmxvYXRf
ZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2VzcXJ0X2Zs
b2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRmZmZlYWY5NTU4ZDQzOGM2MDJk
ZjJiZTUyNzcyOGNiNzViNjA5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2Vz
cXJ0L2ludmVyc2VzcXJ0X2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwxOCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IChjb2xvci5yICogOTkuMCkg
KyAxLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLyBzcXJ0KGMpLCAwLjAsIDAuMCwgMS4w
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2VzcXJ0X2Zsb2F0
X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2VzcXJ0X2Zsb2F0
X3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjJiODM5NWU4ODhmNzA3YmE3ZTJhMTkxYjc2
MWNlMDM4MGM3MzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52
ZXJzZXNxcnRfZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlmbG9hdCBjID0gKGd0Zl9Db2xvci5yICogOTkuMCkgKyAxLjA7CisJY29s
b3IgPSB2ZWM0KGludmVyc2VzcXJ0KGMpLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVyc2VzcXJ0X2Zsb2F0X3ZlcnRfeHZhcnlfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF9mbG9hdF92ZXJ0X3h2YXJ5
X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOGM1Yzk0ODEzZjRlNzJiZWRiN2JjOWQzOGNhYjdmNjZk
NTUyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3Fy
dF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwlmbG9hdCBjID0gKGd0Zl9Db2xvci5yICogOTkuMCkgKyAxLjA7CisJY29sb3Ig
PSB2ZWM0KDEuMCAvIHNxcnQoYyksIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZDRmOTgxZDQ0OGEyNzI1ODE4YTBhNDY2NjhiNTRhM2U1NzIzYzU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjMl9mcmFnX3h2
YXJ5LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MiBjID0gKGNvbG9yLnJnICogOTkuMCkgKyAxLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChpbnZl
cnNlc3FydChjKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNx
cnQvaW52ZXJzZXNxcnRfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJz
ZXNxcnQvaW52ZXJzZXNxcnRfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAy
MDRlZGUyMDgzYjEzYjg1ZDFlZDFlNmY0ZTBjNjdhNzg2ZDc2MDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZy
YWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
KGNvbG9yLnJnICogOTkuMCkgKyAxLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLyBzcXJ0
KGMpLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZl
cnNlc3FydF92ZWMyX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2ludmVyc2VzcXJ0L2ludmVy
c2VzcXJ0X3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyOGRmOGE5OWE4NWMyOGQ5
MjU5YzUwZmQyNGQ4YTlhNzVlNGI2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZl
cnNlc3FydC9pbnZlcnNlc3FydF92ZWMyX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gKGd0Zl9Db2xvci5yZyAqIDk5LjApICsg
MS4wOworCWNvbG9yID0gdmVjNChpbnZlcnNlc3FydChjKSwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjMl92ZXJ0X3h2YXJ5
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjMl92ZXJ0X3h2
YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YWVlM2YwNzMxOTY0M2E3YWIzYjEyNGRhY2I0Zjhh
YmI2NTcxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNl
c3FydF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzIgYyA9IChndGZfQ29sb3IucmcgKiA5OS4wKSArIDEuMDsKKwljb2xv
ciA9IHZlYzQoMS4wIC8gc3FydChjKSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF92ZWMzX2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYTQ4MTM5MDk1MjJiOTU3YjgwODA2OWQyOWQyMTgzNWQxYTkwZmFlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjM19mcmFnX3h2YXJ5
LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBj
ID0gKGNvbG9yLnJnYiAqIDk5LjApICsgMS4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoaW52ZXJz
ZXNxcnQoYyksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZl
cnNlc3FydF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9p
bnZlcnNlc3FydF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIwZTYwMzkx
MjE3MTg3YWExM2ExODc4OWI1M2Q3N2M1YzU3ZjA4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2ludmVyc2VzcXJ0L2ludmVyc2VzcXJ0X3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAt
MCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAoY29sb3Iu
cmdiICogOTkuMCkgKyAxLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLyBzcXJ0KGMpLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVj
M192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF92ZWMz
X3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWVlMTJkNWU1OGJlYjgxMmZkNDc0Njc5N2Qy
OGNkNTMxYWM4OGY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvaW52ZXJzZXNxcnQvaW52
ZXJzZXNxcnRfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzMgYyA9IChndGZfQ29sb3IucmdiICogOTkuMCkgKyAxLjA7CisJY29s
b3IgPSB2ZWM0KGludmVyc2VzcXJ0KGMpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvaW52ZXJzZXNxcnQvaW52ZXJzZXNxcnRfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc5Mjk1ODViNzBjMGJhMGFlMTIzZWQwY2EyYzM0NmI3OWI3NzdiZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9pbnZlcnNlc3FydC9pbnZlcnNlc3FydF92ZWMzX3ZlcnRf
eHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IChndGZfQ29sb3IucmdiICogOTkuMCkgKyAxLjA7CisJY29sb3IgPSB2ZWM0KDEuMCAv
IHNxcnQoYyksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvaW5wdXQu
cnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMzE0
N2VjM2NiZGQyNzY3YmJlYTAzZjdlNTRhYjUzMDk5NmIwNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZW5ndGgvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK2xlbmd0aF8wMDFfdG9fMDA2Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfMDAxX3RvXzAwNi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbGVuZ3RoL2xlbmd0aF8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RjYzk3YjVi
ODAxODVmNmIyMTVkZjZkZDZhODI0M2Y2OWM2ZmVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xlbmd0aC9sZW5ndGhfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJ
VC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29u
Zm9ybWFuY2UgdGVzdDogbGVuZ3RoXzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
NTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5l
ci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVuZ3RoX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJsZW5ndGhfZmxvYXRfZnJhZ194dmFyeS5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogImxlbmd0aF9mbG9hdF9mcmFnX3h2YXJ5LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVuZ3RoX3ZlYzJfZnJhZ194
dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxlbmd0aF92ZWMyX2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZW5ndGhfdmVjMl9mcmFnX3h2YXJ5
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVuZ3Ro
X3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxlbmd0aF92
ZWMzX2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZW5ndGhfdmVj
M19mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAibGVuZ3RoX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogImxlbmd0aF9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAibGVuZ3RoX2Zsb2F0X3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZW5ndGhfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZW5ndGhfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAibGVuZ3RoX3ZlYzJfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlbmd0aF92ZWMzX3ZlcnRf
eHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlbmd0aF92ZWMzX3ZlcnRf
eHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZW5ndGhfdmVjM192ZXJ0X3h2YXJ5
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZW5ndGgvbGVuZ3RoX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YjY5ZWNlZWViMGE5YWQyN2EyZjFmNzNmNDlmOTlkMzg3MTYyODk1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCAr
MSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2
ZWMzKGxlbmd0aChjb2xvci5yKSksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5n
dGgvbGVuZ3RoX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVu
Z3RoX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1NjcyYjFkNTg5YjVk
NTgzMDY5OGI2YmYwZjY5OTEwODVlY2MxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xl
bmd0aC9sZW5ndGhfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE3IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoY29sb3Iu
ciksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX2Zsb2F0X3Zl
cnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfZmxvYXRfdmVydF94dmFyeS52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4NGU4Mzk0M2IxYTFhNTQ3OWM0MTQ0NWMwMjY2ZGMxMTFjZWRiN2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX2Zsb2F0X3ZlcnRfeHZh
cnkudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSB2
ZWM0KHZlYzMobGVuZ3RoKGd0Zl9Db2xvci5yKSksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZW5ndGgvbGVuZ3RoX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sZW5ndGgvbGVuZ3RoX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQw
YjUzZTI3ODA1ODUyZmQ4ZDljYzYxOGQyNjY0NGM4ZGFiM2I2ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2xlbmd0aC9sZW5ndGhfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCww
ICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSB2ZWM0KHZlYzMoZ3RmX0Nv
bG9yLnIpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92
ZWMyX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjMl9mcmFnX3h2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJiYTNiZmE3NTVlZmM3Yzg5ZjU4YTBiOWY4ZDlhZGZiNTFh
ZjZlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjMl9mcmFn
X3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKGxlbmd0aChjb2xvci5yZykgLyAyLjApLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX2ZyYWdfeHZhcnlfcmVm
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOGEyOTEzMDUwNGVlYzAzYzllMWE4NGY2NTZlMGQ1ZTY5MDAyZGQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX2ZyYWdfeHZhcnlfcmVm
LmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJh
Z0NvbG9yID0gdmVjNCh2ZWMzKHNxcnQoY29sb3Iucipjb2xvci5yICsgY29sb3IuZypjb2xvci5n
KSAvIDIuMCksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX3Zl
YzJfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX3ZlcnRfeHZh
cnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZDQyMmNlMDQ2ZDE5MTc4Nzc4NzUyYjM1MDM3ZmZkODZmMjkw
NWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX3ZlcnRf
eHZhcnkudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3Ig
PSB2ZWM0KHZlYzMobGVuZ3RoKGd0Zl9Db2xvci5yZykgLyAyLjApLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NTQwZjkzYzhkOGI1NmIwZDgxZGE0Y2RlOGI3NGU5ZDI3ODk4ZjQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQK
QEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gdmVjNCh2ZWMz
KHNxcnQoZ3RmX0NvbG9yLnIqZ3RmX0NvbG9yLnIgKyBndGZfQ29sb3IuZypndGZfQ29sb3IuZykg
LyAyLjApLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92
ZWMzX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjM19mcmFnX3h2
YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBhZTQ0NjBiN2ZlYTY1MTRjYzFjNWE4NTRiZTE4NTI0ZGE3
MTZlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjM19mcmFn
X3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKGxlbmd0aChjb2xvci5yZ2IpIC8gMy4wKSwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjM19mcmFnX3h2YXJ5X3Jl
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVuZ3RoL2xlbmd0aF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGMwOTJjNTA1ZDdjN2ZlM2QxM2JkMTFiZGZhMDFhNjc1NDBhN2M0YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjM19mcmFnX3h2YXJ5X3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0Zy
YWdDb2xvciA9IHZlYzQodmVjMyhzcXJ0KGNvbG9yLnIqY29sb3IuciArIGNvbG9yLmcqY29sb3Iu
ZyArIGNvbG9yLmIqY29sb3IuYikgLyAzLjApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbGVuZ3RoL2xlbmd0aF92ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9s
ZW5ndGhfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY5ZTJlYmRhOTFhZjFiZmIx
YTQ3ZjBlNmI2M2FmMmE5ZGI1NmRkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0
aC9sZW5ndGhfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCWNvbG9yID0gdmVjNCh2ZWMzKGxlbmd0aChndGZfQ29sb3IucmdiKSAvIDMu
MCksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX3ZlYzNf
dmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlbmd0aC9sZW5ndGhfdmVjM192ZXJ0X3h2
YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyOWUxNTAwMzYwYzkwYWZlNjY1MGY1MmJlMzQ5ZWQ4
MDY1YzJlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZW5ndGgvbGVuZ3RoX3ZlYzNf
dmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29sb3IgPSB2ZWM0KHZlYzMoc3FydChndGZfQ29sb3IucipndGZfQ29sb3IuciArIGd0Zl9D
b2xvci5nKmd0Zl9Db2xvci5nICsgZ3RmX0NvbG9yLmIqZ3RmX0NvbG9yLmIpIC8gMy4wKSwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2lucHV0LnJ1bi50eHQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZXNzVGhhbi9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OWM5MTZkOTc5NGNh
NDQxYWY3MmQ3NjA1ZWNhZDUwYWI4N2ZmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
ZXNzVGhhbi9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorbGVzc1RoYW5fMDAxX3RvXzAwOC5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl8wMDFfdG9fMDA4Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sZXNzVGhhbi9sZXNzVGhhbl8wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYzYTNh
MjI5YWJhZTg4NTEwNzYzZTI3YzY5MzU1NWZjZTExMzVkMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuXzAwMV90b18wMDguaHRtbApAQCAtMCwwICsxLDEzNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGxlc3NUaGFuXzAwMV90b18wMDguaHRtbDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2
cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVT
VGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVzc1RoYW5fdmVjMl9mcmFnX3JlZi5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVzc1RoYW5fdmVjMl9mcmFnLmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAibGVzc1RoYW5fdmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibGVzc1RoYW5fdmVjMl92ZXJ0X3Jl
Zi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZXNzVGhhbl92ZWMyX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbl92ZWMyX3ZlcnQudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNzVGhhbl92ZWMzX2ZyYWdfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNzVGhhbl92ZWMzX2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbl92ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZXNzVGhhbl92ZWMzX3ZlcnRf
cmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NUaGFuX3ZlYzNfdmVydC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogImxlc3NUaGFuX3ZlYzNfdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxlc3NUaGFuX2l2ZWMyX2ZyYWdf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNzVGhhbl9pdmVjMl9mcmFnLmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAibGVzc1RoYW5faXZlYzJfZnJhZy50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NUaGFuX2l2ZWMy
X3ZlcnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NUaGFuX2l2ZWMyX3Zl
cnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbl9pdmVjMl92ZXJ0LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVzc1RoYW5faXZl
YzNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxlc3NUaGFuX2l2ZWMzX2Zy
YWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbl9pdmVjM19mcmFnLnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibGVzc1Ro
YW5faXZlYzNfdmVydF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibGVzc1RoYW5f
aXZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxlc3NUaGFuX2l2ZWMzX3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVjMl9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZi
OWY3MDk2OTMyYTI0MTEwZTY5ODQwNzBkY2Y1MzIyMzAwODhhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogY29s
b3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJl
c3VsdCA9IHZlYzIobGVzc1RoYW4oaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NU
aGFuL2xlc3NUaGFuX2l2ZWMyX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNz
VGhhbl9pdmVjMl9mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNWY1OTcyNjI2NGM5NmY2YmNk
YTUwODE2ODJlOTUyMmNmMmUyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhh
bi9sZXNzVGhhbl9pdmVjMl9mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZl
YzIgbHQoaW4gaXZlYzIgYSwgaW4gaXZlYzIgYikKK3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVsw
XSA8IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlp
ZihhWzFdIDwgYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNl
OworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBm
bG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGlu
dGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobHQoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFu
L2xlc3NUaGFuX2l2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjRiMTJmMTg3MmQ0M2NjZmUz
OTJkNGExN2EyZTEyNzJhYWVjNzU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1Ro
YW4vbGVzc1RoYW5faXZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAv
LyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGxlc3NU
aGFuKGl2ZWMyKGMpLCBpdmVjMigwKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMyX3Zl
cnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVjMl92ZXJ0X3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllYzU1ZTg1NTFhNDMxN2ViYWU1OWVhZTAzNGFlNThlODU5ZmUzNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVjMl92ZXJ0
X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGx0KGluIGl2ZWMyIGEsIGluIGl2ZWMy
IGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gPCBiWzBdKSByZXN1bHRbMF0gPSB0cnVl
OworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA8IGJbMV0pIHJlc3VsdFsxXSA9
IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZyAt
IDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0g
dmVjMihsdChpdmVjMihjKSwgaXZlYzIoMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAwLjAs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVj
M19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl9pdmVjM19mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzlmYTg3MmQxNDM1MDIxMTk3OTc0ZGE3ZjczYTNhOTViZTllM2FmZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMzX2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBm
bG9vcigxMC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBp
bnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGxlc3NUaGFuKGl2ZWMzKGMpLCBpdmVjMygwKSkp
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5faXZlYzNfZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xl
c3NUaGFuL2xlc3NUaGFuX2l2ZWMzX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiZjQ4Zjk4
MmZkYjJmOWE3MjU4YTcxZjEwMGYyYjY4OWUyNzNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMzX2ZyYWdfcmVmLmZyYWcKQEAgLTAsMCArMSwzMSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCitidmVjMyBsdChpbiBpdmVjMyBhLCBpbiBpdmVjMyBiKQoreworCWJ2ZWMzIHJlc3Vs
dDsKKwlpZihhWzBdIDwgYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9
IGZhbHNlOworCWlmKGFbMV0gPCBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0
WzFdID0gZmFsc2U7CisJaWYoYVsyXSA8IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSBy
ZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQg
dG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhsdChpdmVjMyhjKSwg
aXZlYzMoMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMzX3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDY0ZWM4
YmI2NDQ1NGFiYmM3ZmNlMGQxYzMzNmQ0ODAxNGZiNmI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5faXZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJn
YiAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0
ID0gdmVjMyhsZXNzVGhhbihpdmVjMyhjKSwgaXZlYzMoMCkpKTsKKwljb2xvciA9IHZlYzQocmVz
dWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5f
aXZlYzNfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2ZWMzX3Zl
cnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3MTlhYmY4MDJiMWRlOTJiMDFiZjdlODg0MDRhMTg2
ODZmYTAwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX2l2
ZWMzX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzMgbHQoaW4gaXZlYzMgYSwg
aW4gaXZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA8IGJbMF0pIHJlc3VsdFsw
XSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdIDwgYlsxXSkgcmVz
dWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCWlmKGFbMl0gPCBiWzJd
KSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBn
dGZfQ29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJ
dmVjMyByZXN1bHQgPSB2ZWMzKGx0KGl2ZWMzKGMpLCBpdmVjMygwKSkpOworCWNvbG9yID0gdmVj
NChyZXN1bHQsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNz
VGhhbl92ZWMyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX3ZlYzJfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjZGZjY2I4Njk0ODZhZGU3N2RhNGQ4MGNhMGZjY2NlMDY5ZjI0
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMyX2Zy
YWcuZnJhZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJ
T05fSElHSAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworI2Vsc2UKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZyAtIDQuNSk7ICAgLy8g
cm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihsZXNzVGhh
bihjLCB2ZWMyKDAuMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjMl9mcmFnX3Jl
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjMl9mcmFnX3JlZi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFiODQxZTRiMTU1M2IwNTVmOTAyYTUyZjFhNmJlMGI5MDg3YjBmZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMyX2ZyYWdfcmVmLmZy
YWcKQEAgLTAsMCArMSwzMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJ
R0gKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGx0KGluIHZl
YzIgYSwgaW4gdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdIDwgYlswXSkgcmVz
dWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gPCBiWzFd
KSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBj
b2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIg
cmVzdWx0ID0gdmVjMihsdChjLCB2ZWMyKDAuMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJl
c3VsdCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1Ro
YW5fdmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMyX3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMzQxZTUxMGUzMzc5ZDM0MjFmNzJjNzlkOWZhNzJiNTVlMzkxNGFh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjMl92ZXJ0
LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZs
b29yKDEwLjAgKiBndGZfQ29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0
IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobGVzc1RoYW4oYywgdmVjMigwLjApKSk7CisJ
Y29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjMl92ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1Ro
YW4vbGVzc1RoYW5fdmVjMl92ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMjA2ODYxYTg1ZDc3
ZWMwMmU3NTljZWE1MmIxMzY4NWViMjZlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
ZXNzVGhhbi9sZXNzVGhhbl92ZWMyX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZl
YzIgbHQoaW4gdmVjMiBhLCBpbiB2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0g
PCBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYo
YVsxXSA8IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsK
KwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxv
b3IoMTAuMCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3Qg
aW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihsdChjLCB2ZWMyKDAuMCkpKTsKKwljb2xvciA9
IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNz
VGhhbi9sZXNzVGhhbl92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFu
X3ZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMGJmZWEyNWMwYTFlNDdjNzA2Nzg4ZDYwMzUx
ZTAzYzFiOWE0NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhh
bl92ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWMzIGMgPSBmbG9vcigxMC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0
byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGxlc3NUaGFuKGMsIHZl
YzMoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjM19mcmFnX3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjM19mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
OTdiZDZlYjNkNDgyZDZiZDJmZTQ1ZGMwMDMwMDZmMjRhYzEzYWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMzX2ZyYWdfcmVmLmZyYWcKQEAgLTAsMCAr
MSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCitidmVjMyBsdChpbiB2ZWMzIGEsIGluIHZlYzMgYikKK3sKKwlidmVjMyBy
ZXN1bHQ7CisJaWYoYVswXSA8IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRb
MF0gPSBmYWxzZTsKKwlpZihhWzFdIDwgYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJl
c3VsdFsxXSA9IGZhbHNlOworCWlmKGFbMl0gPCBiWzJdKSByZXN1bHRbMl0gPSB0cnVlOworCWVs
c2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJv
dW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMobHQoYywgdmVj
MygwLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMzX3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2xlc3NUaGFuL2xlc3NUaGFuX3ZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZjE1YzFiNDNj
YWIyZjFhYWFkMTM5NTYzYjA4ZTI2ZmQxZTBiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sZXNzVGhhbi9sZXNzVGhhbl92ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0
LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZl
YzMobGVzc1RoYW4oYywgdmVjMygwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX3ZlYzNfdmVydF9y
ZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuL2xlc3NUaGFuX3ZlYzNfdmVydF9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNmU3MDNkNmY5NDI4NmFmMDQ3MDBhZWYyNDAxNzMxODAxMDhjMzMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW4vbGVzc1RoYW5fdmVjM192ZXJ0X3JlZi52
ZXJ0CkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIGx0KGluIHZlYzMgYSwgaW4gdmVjMyBiKQorewor
CWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdIDwgYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNl
IHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gPCBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOwor
CWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYoYVsyXSA8IGJbMl0pIHJlc3VsdFsyXSA9IHRy
dWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0
LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZl
YzMobHQoYywgdmVjMygwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvaW5wdXQucnVuLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xlc3NUaGFuRXF1YWwvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTYzMzJjY2NhYzRl
M2M0YWQzNzBlYTI5YTA3OTg5NTgzYzYxNDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bGVzc1RoYW5FcXVhbC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorbGVzc1RoYW5FcXVhbF8wMDFfdG9fMDA4
Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF8w
MDFfdG9fMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfMDAx
X3RvXzAwOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YWRmMjJmYmYwYzEyMjZmMzMwMTBjNjE0OGVlNjVh
NTMzYmZjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NU
aGFuRXF1YWxfMDAxX3RvXzAwOC5odG1sCkBAIC0wLDAgKzEsMTM1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2Ug
dGVzdDogbGVzc1RoYW5FcXVhbF8wMDFfdG9fMDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
IC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9v
Z2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUw
MCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIu
cnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfdmVjMl9mcmFnX3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAibGVzc1RoYW5FcXVhbF92ZWMyX2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbkVxdWFsX3ZlYzJfZnJhZy50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfdmVj
Ml92ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZXNzVGhhbkVxdWFsX3Zl
YzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxlc3NUaGFuRXF1YWxfdmVjMl92
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibGVz
c1RoYW5FcXVhbF92ZWMzX2ZyYWdfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNz
VGhhbkVxdWFsX3ZlYzNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxlc3NU
aGFuRXF1YWxfdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAibGVzc1RoYW5FcXVhbF92ZWMzX3ZlcnRfcmVmLnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfdmVjM192ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAibGVzc1RoYW5FcXVhbF92ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNzVGhhbkVxdWFsX2l2ZWMyX2ZyYWdfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsZXNzVGhhbkVxdWFsX2l2ZWMyX2ZyYWcuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsZXNzVGhhbkVxdWFsX2l2ZWMyX2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsZXNzVGhh
bkVxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NU
aGFuRXF1YWxfaXZlYzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxlc3NUaGFu
RXF1YWxfaXZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfaXZlYzNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogImxlc3NUaGFuRXF1YWxfaXZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxlc3NUaGFuRXF1YWxfaXZlYzNfdmVydF9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMyX2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjMl9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDc0N2MzYTg0OWQyMDk5Njg5NzA1NmQzOGY5MjQ5OWQwMWFiMWI3MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVj
Ml9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMiBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUg
bmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGxlc3NUaGFuRXF1YWwoaXZlYzIo
YyksIGl2ZWMyKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVj
Ml9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2
ZWMyX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiZTE5YjU2YmYyNmFhYzBiNjYyM2MwOGVi
YzAzNTBjMTZmNzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwv
bGVzc1RoYW5FcXVhbF9pdmVjMl9mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
YnZlYzIgbHRlKGluIGl2ZWMyIGEsIGluIGl2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0OworCWlm
KGFbMF0gPD0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNl
OworCWlmKGFbMV0gPD0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9
IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMy
IGMgPSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobHRlKGl2ZWMyKGMpLCBpdmVjMigwKSkp
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfaXZlYzJfdmVydC52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMyX3ZlcnQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMjc2ZjBjOGRlMDE4M2ExYjY0ZWNhZTYyNjkwNGI0NzU3YjIyZWE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMyX3Zl
cnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
Zmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJl
c3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihsZXNzVGhhbkVxdWFsKGl2ZWMyKGMpLCBp
dmVjMigwKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjMl92ZXJ0X3Jl
Zi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMyX3ZlcnRf
cmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE4ODkwZjVkMWFhNGE1YmM5OWEzNjlkY2NkYzQ3ZGNlOGI4
Y2EzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5F
cXVhbF9pdmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIGx0ZShpbiBp
dmVjMiBhLCBpbiBpdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdIDw9IGJbMF0p
IHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdIDw9
IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlyZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAu
MCAqIGd0Zl9Db2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdl
cgorCXZlYzIgcmVzdWx0ID0gdmVjMihsdGUoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJY29sb3Ig
PSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVz
c1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NU
aGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjM19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRkYzlh
MTIwOTY2MGJhYTAwNmRjMTBkYmFkNzczMzIwZGRlYTBmNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjM19mcmFnLmZyYWcKQEAgLTAs
MCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAu
MCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgor
CXZlYzMgcmVzdWx0ID0gdmVjMyhsZXNzVGhhbkVxdWFsKGl2ZWMzKGMpLCBpdmVjMygwKSkpOwor
CWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMzX2ZyYWdfcmVmLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfaXZlYzNfZnJhZ19yZWYuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMzI5NTE0OWM1ZmQ4OTJiYmIxNWM3NGI1OTliNGZhMTVmMTcyMDExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMzX2Zy
YWdfcmVmLmZyYWcKQEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMyBsdGUoaW4gaXZlYzMgYSwg
aW4gaXZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA8PSBiWzBdKSByZXN1bHRb
MF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA8PSBiWzFdKSBy
ZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYoYVsyXSA8PSBi
WzJdKSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAg
KiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2
ZWMzIHJlc3VsdCA9IHZlYzMobHRlKGl2ZWMzKGMpLCBpdmVjMygwKSkpOworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQocmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5F
cXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMzX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1
YWwvbGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3YzBjOTFmZTY2
M2RiZDA1MjJmNzMxNDIzMzU5MDI0MjBjOThkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0LnZlcnQKQEAgLTAsMCArMSwy
MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0
cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29s
b3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyBy
ZXN1bHQgPSB2ZWMzKGxlc3NUaGFuRXF1YWwoaXZlYzMoYyksIGl2ZWMzKDApKSk7CisJY29sb3Ig
PSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFu
RXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1Ro
YW5FcXVhbC9sZXNzVGhhbkVxdWFsX2l2ZWMzX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1
ZjA2NzlhOTUxZDZlODU2MjZhNzM5YTdkY2Q2NGZlODhmYWFkOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0
CkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIGx0ZShpbiBpdmVjMyBhLCBpbiBpdmVjMyBiKQorewor
CWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdIDw9IGJbMF0pIHJlc3VsdFswXSA9IHRydWU7CisJZWxz
ZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdIDw9IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7
CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJdIDw9IGJbMl0pIHJlc3VsdFsyXSA9
IHRydWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2Ig
LSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9
IHZlYzMobHRlKGl2ZWMzKGMpLCBpdmVjMygwKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1
YWxfdmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxf
dmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE5MzYwYmRhZGQxOWUxNjA0Y2M0ZTJkZTg1ZmE1
NmEyODc4YWIzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVz
c1RoYW5FcXVhbF92ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNpZmRlZiBH
TF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworI2Vsc2UK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBjb2xv
ci5yZyAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVz
dWx0ID0gdmVjMihsZXNzVGhhbkVxdWFsKGMsIHZlYzIoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhh
bkVxdWFsL2xlc3NUaGFuRXF1YWxfdmVjMl9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1Ro
YW5FcXVhbC9sZXNzVGhhbkVxdWFsX3ZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmUy
MTkwYWM5M2ZlZTNlZTg4MGM4MmNhNzU4NGQ0OTIzY2EyYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX3ZlYzJfZnJhZ19yZWYuZnJhZwpA
QCAtMCwwICsxLDMzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKKyNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSAor
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworI2Vsc2UKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzIgbHRlKGluIHZlYzIg
YSwgaW4gdmVjMiBiKQoreworCWJ2ZWMyIHJlc3VsdDsKKwlpZihhWzBdIDw9IGJbMF0pIHJlc3Vs
dFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdIDw9IGJbMV0p
IHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlyZXR1cm4gcmVz
dWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMTAuMCAqIGNv
bG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiBy
ZXN1bHQgPSB2ZWMyKGx0ZShjLCB2ZWMyKDAuMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJl
c3VsdCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9s
ZXNzVGhhbkVxdWFsX3ZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNz
VGhhbkVxdWFsX3ZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ODA5ZWY4ZDc0OTI0NDEwMTU3
MDg5ZmMxMmExYTE3MmRlNmNjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhh
bkVxdWFsL2xlc3NUaGFuRXF1YWxfdmVjMl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmcgLSA0
LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZl
YzIobGVzc1RoYW5FcXVhbChjLCB2ZWMyKDAuMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAw
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NU
aGFuRXF1YWxfdmVjMl92ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNz
VGhhbkVxdWFsX3ZlYzJfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTllZmIwMTg1MjQyZGZi
NmVmMDU5OWJhNTJjZmU0ZGQxNGI2ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVz
c1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX3ZlYzJfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDMw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCitidmVjMiBsdGUoaW4gdmVjMiBhLCBpbiB2ZWMyIGIpCit7CisJYnZlYzIgcmVzdWx0Owor
CWlmKGFbMF0gPD0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZh
bHNlOworCWlmKGFbMV0gPD0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsx
XSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0gNC41KTsgICAvLyByb3VuZCB0byB0
aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2ZWMyKGx0ZShjLCB2ZWMyKDAuMCkp
KTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfdmVjM19mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfdmVjM19mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDYwYWY4ZDk3NDBhZDliMGNjN2M0ZjU0MDgwYTUzYTVkMmY5ZDkzZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVhbF92ZWMzX2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBm
bG9vcigxMC4wICogY29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBp
bnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGxlc3NUaGFuRXF1YWwoYywgdmVjMygwLjApKSk7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1YWxfdmVjM19mcmFnX3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX3ZlYzNfZnJhZ19yZWYuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMDdjMjRlOTA4MGViZWM0YzQ4YmRkMjY1ZjJkMjQ2ZTVlZDFhODZlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhhbkVxdWFsX3ZlYzNfZnJh
Z19yZWYuZnJhZwpAQCAtMCwwICsxLDMxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIGx0ZShpbiB2ZWMzIGEsIGlu
IHZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSA8PSBiWzBdKSByZXN1bHRbMF0g
PSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSA8PSBiWzFdKSByZXN1
bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYoYVsyXSA8PSBiWzJd
KSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBj
b2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMz
IHJlc3VsdCA9IHZlYzMobHRlKGMsIHZlYzMoMC4wKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
cmVzdWx0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNz
VGhhbkVxdWFsX3ZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbGVzc1RoYW5FcXVhbC9sZXNzVGhh
bkVxdWFsX3ZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZTQ3OTY1N2VhZGQ4Mzc0ZTVhMGZm
ZTkzMzY0MjllNjIxNWYzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVx
dWFsL2xlc3NUaGFuRXF1YWxfdmVjM192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmdiIC0gNC41
KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMz
KGxlc3NUaGFuRXF1YWwoYywgdmVjMygwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xlc3NUaGFuRXF1YWwvbGVzc1RoYW5FcXVh
bF92ZWMzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVxdWFsL2xlc3NUaGFuRXF1
YWxfdmVjM192ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYjg3Yjc4ODUxNmM5NDYyOGE3MGMy
YjU1MDNjYTk5MDQ3OTVmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sZXNzVGhhbkVx
dWFsL2xlc3NUaGFuRXF1YWxfdmVjM192ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzIgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2
ZWMzIGx0ZShpbiB2ZWMzIGEsIGluIHZlYzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVsw
XSA8PSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJ
aWYoYVsxXSA8PSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFs
c2U7CisJaWYoYVsyXSA8PSBiWzJdKSByZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJd
ID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmdiIC0gNC41KTsgICAvLyByb3VuZCB0byB0
aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMyByZXN1bHQgPSB2ZWMzKGx0ZShjLCB2ZWMzKDAuMCkp
KTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbG9nL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvaW5wdXQucnVuLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZWIxNTYxYzFiZTBmMGFlNTg5MTc0ZmZiYmU0MzNjYzMxMTk2YWY1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwzIEBACisjIHRo
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitsb2dfMDAxX3RvXzAwOC5o
dG1sCitsb2dfMDA5X3RvXzAxMi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nXzAw
MV90b18wMDguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfMDAxX3RvXzAwOC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEzYWZkNmEzM2M2ZjY3MDMzNGMyYTNjZWMxNGE1NmFmYWU1MTEwZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nXzAwMV90b18wMDguaHRtbApAQCAtMCwwICsxLDEzNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGxvZ18wMDFfdG9fMDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RS
dW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZ19mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibG9nX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJsb2dfZmxvYXRfZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZ19mbG9hdF9mcmFnX3h2YXJ5MDFf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2dfZmxvYXRfZnJhZ194dmFyeTAxLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibG9nX2Zsb2F0X2ZyYWdfeHZhcnkwMS50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZ192ZWMyX2Zy
YWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2dfdmVjMl9mcmFnX3h2
YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibG9nX3ZlYzJfZnJhZ194dmFyeS50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZ192ZWMy
X2ZyYWdfeHZhcnkwMV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZ192ZWMyX2Zy
YWdfeHZhcnkwMS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxvZ192ZWMyX2ZyYWdf
eHZhcnkwMS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImxvZ192ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2df
dmVjM19mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibG9nX3ZlYzNf
ZnJhZ194dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogImxvZ192ZWMzX2ZyYWdfeHZhcnkwMV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImxvZ192ZWMzX2ZyYWdfeHZhcnkwMS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxv
Z192ZWMzX2ZyYWdfeHZhcnkwMS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogImxvZ19mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJsb2dfZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogImxvZ19mbG9hdF92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibG9nX2Zsb2F0X3ZlcnRfeHZhcnkwMV9yZWYudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibG9nX2Zsb2F0X3ZlcnRfeHZhcnkwMS52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogImxvZ19mbG9hdF92ZXJ0X3h2YXJ5MDEudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sb2cvbG9nXzAwOV90b18wMTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfMDA5X3RvXzAxMi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY0ZDRjMDI2OGVjMjU1NGU1N2M2NjJmZWUwMzEwMmY0ODRlYTJkMTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nXzAwOV90b18wMTIuaHRtbApAQCAt
MCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogbG9nXzAwOV90b18wMTIuaHRtbDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
b2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWln
aHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09w
ZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibG9nX3ZlYzJfdmVydF94
dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibG9nX3ZlYzJfdmVydF94dmFy
eS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxvZ192ZWMyX3ZlcnRfeHZhcnkudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsb2dfdmVjMl92
ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxvZ192ZWMyX3Zl
cnRfeHZhcnkwMS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxvZ192ZWMyX3ZlcnRfeHZh
cnkwMS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
ImxvZ192ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxv
Z192ZWMzX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsb2dfdmVjM192
ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAibG9nX3ZlYzNfdmVydF94dmFyeTAxX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJsb2dfdmVjM192ZXJ0X3h2YXJ5MDEudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJs
b2dfdmVjM192ZXJ0X3h2YXJ5MDEudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X2ZyYWdf
eHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfZmxvYXRfZnJhZ194dmFyeS5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMwZTg0YjJkMzYzNzAxNTM5MDFiNjM0ZTE2MGJkYWNlYzczMDkzNWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCww
ICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMzEuMCAqIGNv
bG9yLnIgKyAxLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChsb2coYykgLyAzLjQ2NiwgMC4wLCAw
LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X2ZyYWdfeHZh
cnkwMS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF9mcmFnX3h2YXJ5MDEuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYTA4ZDM1NTc5YTAxNTE3YjUxYWI1MDNiYWYxMWFmODMwMTAyN2QyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF9mcmFnX3h2YXJ5MDEuZnJhZwpAQCAt
MCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gKGNvbG9y
LnIgKyAwLjAxKSAvIDEuMDE7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChsb2coYykgLyAtNC42MSwg
MC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X2Zy
YWdfeHZhcnkwMV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfZmxvYXRfZnJhZ194dmFyeTAx
X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNmIyNWE0MTBlMjk3YTJiZmQzMWVlN2I0MTZmYTcyNTFh
MmM2NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X2ZyYWdfeHZh
cnkwMV9yZWYuZnJhZwpAQCAtMCwwICsxLDM2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlmbG9hdCB4ID0gKGNvbG9yLnIgKyAwLjAxKSAvIDEuMDE7CisJZmxvYXQgeSA9IDAuMDsKKwlm
bG9hdCB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9IDJbeC0x
ICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAgICAgICBb
eCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCS8vIE5vdGU6IHogd2lsbCBhbHdh
eXMgYmUgbmVnYXRpdmUgYmV0d2VlbiAwLjAxIGFuZCAxLjAgYW5kCisJLy8gc28gd2lsbCB5IHNp
bmNlIGl0IGlzIHJhaXNlZCB0byBhbiBvZGQgcG93ZXIsIGFuZCB0aGUgc2hhZGVyIHNwZWMKKwkv
LyBkb2VzIG5vdCBzdXBwb3J0IHBvdygteCwgeSkgd2hlcmUgeSBpcyBub3QgYSBjb21waWxlIHRp
bWUgY29uc3RhbnQKKwl6ID0gYWJzKCh4IC0gMS4wKSAvICh4ICsgMS4wKSk7CisJZmxvYXQgcCA9
IHo7CisJZm9yKGludCBpID0gMTsgaSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZs
b2F0KGkpOworCQlwICo9IHogKiB6OworCX0KKwl5ICo9IC0yLjA7CisKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHkgLyAtNC42MSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sb2cvbG9nX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zs
b2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1YjMzY2JhMzMzNTE1MTRmYWRh
YTdmNjljMjc5NmExN2JjNDZmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2df
ZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDMzIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlmbG9hdCB4ID0gMzEuMCAqIGNvbG9yLnIgKyAxLjA7CisJZmxvYXQgeSA9
IDAuMDsKKwlmbG9hdCB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4
KSA9IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAg
ICAgICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCXogPSAoeCAtIDEu
MCkgLyAoeCArIDEuMCk7CisJZmxvYXQgcCA9IHo7CisJZm9yKGludCBpID0gMTsgaSA8PSAxMDE7
IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHogKiB6OworCX0KKwl5
ICo9IDIuMDsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoeSAvIDMuNDY2LCAwLjAsIDAuMCwgMS4w
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfZmxvYXRfdmVydF94dmFyeS52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4
NWZiOTliOGQ4NTU2YWRkNjY3ZDZiNWE4ODY3ZGJjNzc3MWIzNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2xvZy9sb2dfZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMzEuMCAqIGd0Zl9Db2xvci5yICsgMS4w
OworCWNvbG9yID0gdmVjNChsb2coYykgLyAzLjQ2NiwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X3ZlcnRfeHZhcnkwMS52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5MDEudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzY1MDAz
Y2YxZWY5NmEwYTk4MGRiOGJhZTFjYTlkY2FiNTRjN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5MDEudmVydApAQCAtMCwwICsxLDE5IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IChndGZfQ29sb3IuciArIDAuMDEpIC8gMS4w
MTsKKwljb2xvciA9IHZlYzQobG9nKGMpIC8gLTQuNjEsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9sb2cvbG9nX2Zsb2F0X3ZlcnRfeHZhcnkwMV9yZWYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTk1NjZlN2VlNDBmZmE0YzQ3NDE2YWZlMTIyZjI1Yzk0NzI0NmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQKQEAgLTAs
MCArMSwzNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHggPSAoZ3RmX0NvbG9yLnIg
KyAwLjAxKSAvIDEuMDE7CisJZmxvYXQgeSA9IDAuMDsKKwlmbG9hdCB6OyAgIC8vIHgtMSAvIHgr
MQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0x
KV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAgICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAo
eCsxKSAgICAgICAgXQorCS8vIE5vdGU6IHogd2lsbCBhbHdheXMgYmUgbmVnYXRpdmUgYmV0d2Vl
biAwLjAxIGFuZCAxLjAgYW5kCisJLy8gc28gd2lsbCB5IHNpbmNlIGl0IGlzIHJhaXNlZCB0byBh
biBvZGQgcG93ZXIsIGFuZCB0aGUgc2hhZGVyIHNwZWMKKwkvLyBkb2VzIG5vdCBzdXBwb3J0IHBv
dygteCwgeSkgd2hlcmUgeSBpcyBub3QgYSBjb21waWxlIHRpbWUgY29uc3RhbnQKKwl6ID0gYWJz
KCh4IC0gMS4wKSAvICh4ICsgMS4wKSk7CisJZmxvYXQgcCA9IHo7CisJZm9yKGludCBpID0gMTsg
aSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHogKiB6
OworCX0KKwl5ICo9IC0yLjA7CisKKwljb2xvciA9IHZlYzQoeSAvIC00LjYxLCAwLjAsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfZmxvYXRfdmVydF94dmFy
eV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZmJmYjNlYmY5MGVkYjY2NDhkYmQwZGJmMjk4MTVmNDI5ZTQyMzI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ19mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
CkBAIC0wLDAgKzEsMzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4ID0gMzEuMCAq
IGd0Zl9Db2xvci5yICsgMS4wOworCWZsb2F0IHkgPSAwLjA7CisJZmxvYXQgejsgICAvLyB4LTEg
LyB4KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4oeCkgPSAyW3gtMSArIDEgKHgtMSleMyArIDEg
KHgtMSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8gICAgICAgICAgW3grMSAgIDMgKHgrMSkgICAg
IDUgKHgrMSkgICAgICAgIF0KKwl6ID0gKHggLSAxLjApIC8gKHggKyAxLjApOworCWZsb2F0IHAg
PSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBm
bG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAyLjA7CisKKwljb2xvciA9IHZlYzQo
eSAvIDMuNDY2LCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
Zy9sb2dfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzJfZnJhZ194
dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYWRjMjk0NTdjNDQ0MjJjODQzOGYzZDMxMDkzOWY5ZjEw
Zjg2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzJfZnJhZ194dmFy
eS5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIg
YyA9IDMxLjAgKiBjb2xvci5yZyArIDEuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGxvZyhjKSAv
IDMuNDY2LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzJf
ZnJhZ194dmFyeTAxLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzJfZnJhZ194dmFyeTAxLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGQ0NzU2Nzg3NDg3ZjFjZmM0N2M5Mzc1NGZjMGEyNmRjOGViYTJkNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjMl9mcmFnX3h2YXJ5MDEuZnJh
ZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAo
Y29sb3IucmcgKyAwLjAxKSAvIDEuMDE7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChsb2coYykgLyAt
NC42MSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMyX2Zy
YWdfeHZhcnkwMV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjMl9mcmFnX3h2YXJ5MDFf
cmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzY2MxYzgwNTNkYTdhMTk3OWJjMjk3Y2I1NGJhMTJhOGM4
M2Y2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjMl9mcmFnX3h2YXJ5
MDFfcmVmLmZyYWcKQEAgLTAsMCArMSwzNiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMiB4ID0gKGNvbG9yLnJnICsgMC4wMSkgLyAxLjAxOworCXZlYzIgeSA9IHZlYzIoMC4wKTsK
Kwl2ZWMyIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1MDsKKworCS8vIGxuKHgpID0gMlt4
LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZvciB4ID4gMAorCS8vICAgICAgICAg
IFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBdCisJLy8gTm90ZTogeiB3aWxsIGFs
d2F5cyBiZSBuZWdhdGl2ZSBiZXR3ZWVuIDAuMDEgYW5kIDEuMCBhbmQKKwkvLyBzbyB3aWxsIHkg
c2luY2UgaXQgaXMgcmFpc2VkIHRvIGFuIG9kZCBwb3dlciwgYW5kIHRoZSBzaGFkZXIgc3BlYwor
CS8vIGRvZXMgbm90IHN1cHBvcnQgcG93KC14LCB5KSB3aGVyZSB5IGlzIG5vdCBhIGNvbXBpbGUg
dGltZSBjb25zdGFudAorCXogPSBhYnMoKHggLSAxLjApIC8gKHggKyAxLjApKTsKKwl2ZWMyIHAg
PSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBm
bG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAtMi4wOworCisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCh5IC8gLTQuNjEsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
Zy9sb2dfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMyX2Zy
YWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NWQ2ODkyMDVlY2M5NGY0ZGVkM2I4NDhj
OGVhZDdhYWY0ZjM0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjMl9m
cmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzIgeCA9IDMxLjAgKiBjb2xvci5yZyArIDEuMDsKKwl2ZWMyIHkgPSB2ZWMyKDAu
MCk7CisJdmVjMiB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9
IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAg
ICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCXogPSAoeCAtIDEuMCkg
LyAoeCArIDEuMCk7CisJdmVjMiBwID0gejsKKwlmb3IoaW50IGkgPSAxOyBpIDw9IDEwMTsgaSAr
PSAyKQorCXsKKwkJeSArPSBwIC8gZmxvYXQoaSk7CisJCXAgKj0geiAqIHo7CisJfQorCXkgKj0g
Mi4wOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh5IC8gMy40NjYsIDAuMCwgMS4wKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sb2cvbG9nX3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZmU5ZThlMWYyODg0
YzNiOWJkMjQ4YmMwMDZiZTAyZTBkOWQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
b2cvbG9nX3ZlYzJfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9D
b2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMyIGMgPSAzMS4wICogZ3RmX0NvbG9yLnJnICsgMS4wOworCWNvbG9yID0g
dmVjNChsb2coYykgLyAzLjQ2NiwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbG9nL2xvZ192ZWMyX3ZlcnRfeHZhcnkwMS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMy
X3ZlcnRfeHZhcnkwMS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMzkyNzlmMWY5ZjE3MWIzNDBmMmM5NmNi
ZTllN2ZiOTAzZGNiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzJf
dmVydF94dmFyeTAxLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CXZlYzIgYyA9IChndGZfQ29sb3IucmcgKyAwLjAxKSAvIDEuMDE7CisJY29sb3IgPSB2ZWM0KGxv
ZyhjKSAvIC00LjYxLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cv
bG9nX3ZlYzJfdmVydF94dmFyeTAxX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMyX3Zl
cnRfeHZhcnkwMV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTE5N2IxNzgzZjJkOGNmODlmNzkzMWEx
Nzg1MmMyZDhiZWQwZjVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMy
X3ZlcnRfeHZhcnkwMV9yZWYudmVydApAQCAtMCwwICsxLDM3IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjMiB4ID0gKGd0Zl9Db2xvci5yZyArIDAuMDEpIC8gMS4wMTsKKwl2ZWMyIHkgPSB2
ZWMyKDAuMCk7CisJdmVjMiB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBs
bih4KSA9IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkv
LyAgICAgICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCS8vIE5vdGU6
IHogd2lsbCBhbHdheXMgYmUgbmVnYXRpdmUgYmV0d2VlbiAwLjAxIGFuZCAxLjAgYW5kCisJLy8g
c28gd2lsbCB5IHNpbmNlIGl0IGlzIHJhaXNlZCB0byBhbiBvZGQgcG93ZXIsIGFuZCB0aGUgc2hh
ZGVyIHNwZWMKKwkvLyBkb2VzIG5vdCBzdXBwb3J0IHBvdygteCwgeSkgd2hlcmUgeSBpcyBub3Qg
YSBjb21waWxlIHRpbWUgY29uc3RhbnQKKwl6ID0gYWJzKCh4IC0gMS4wKSAvICh4ICsgMS4wKSk7
CisJdmVjMiBwID0gejsKKwlmb3IoaW50IGkgPSAxOyBpIDw9IDEwMTsgaSArPSAyKQorCXsKKwkJ
eSArPSBwIC8gZmxvYXQoaSk7CisJCXAgKj0geiAqIHo7CisJfQorCXkgKj0gLTIuMDsKKworCWNv
bG9yID0gdmVjNCh5IC8gLTQuNjEsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML2xvZy9sb2dfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192
ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg2NjA2YTcxY2IxZTJkNTI0Mzdj
NDg0Y2I3MGEyMTQ4NGFmNzFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2df
dmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzQgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMyIHggPSAzMS4wICogZ3RmX0NvbG9yLnJnICsgMS4wOworCXZlYzIgeSA9IHZl
YzIoMC4wKTsKKwl2ZWMyIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1MDsKKworCS8vIGxu
KHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZvciB4ID4gMAorCS8v
ICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBdCisJeiA9ICh4IC0g
MS4wKSAvICh4ICsgMS4wKTsKKwl2ZWMyIHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAx
OyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJ
eSAqPSAyLjA7CisKKwljb2xvciA9IHZlYzQoeSAvIDMuNDY2LCAwLjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3ZlYzNfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbG9nL2xvZ192ZWMzX2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDI0ZTNhNmM1ZDdm
ZWIxMTUwYmM1NmQyY2U3ZDc3NmM5NjIyYmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bG9nL2xvZ192ZWMzX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAzMS4wICogY29sb3IucmdiICsgMS4wOworCWdsX0Zy
YWdDb2xvciA9IHZlYzQobG9nKGMpIC8gMy40NjYsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sb2cvbG9nX3ZlYzNfZnJhZ194dmFyeTAxLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3Zl
YzNfZnJhZ194dmFyeTAxLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5ZGU1NTYxZWFlYmE0MDhjZmYzZWNl
NTEyYWM3MjI3ZmM3YmI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVj
M19mcmFnX3h2YXJ5MDEuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMzIGMgPSAoY29sb3IucmdiICsgMC4wMSkgLyAxLjAxOworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQobG9nKGMpIC8gLTQuNjEsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
b2cvbG9nX3ZlYzNfZnJhZ194dmFyeTAxX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMz
X2ZyYWdfeHZhcnkwMV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjdmODA3ZGI2ZTc5NDE0ZGUyNDVk
YmEyMTk0OGQ2Y2UzNjAzNWJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192
ZWMzX2ZyYWdfeHZhcnkwMV9yZWYuZnJhZwpAQCAtMCwwICsxLDM2IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWMzIHggPSAoY29sb3IucmdiICsgMC4wMSkgLyAxLjAxOworCXZlYzMg
eSA9IHZlYzMoMC4wKTsKKwl2ZWMzIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1MDsKKwor
CS8vIGxuKHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZvciB4ID4g
MAorCS8vICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBdCisJLy8g
Tm90ZTogeiB3aWxsIGFsd2F5cyBiZSBuZWdhdGl2ZSBiZXR3ZWVuIDAuMDEgYW5kIDEuMCBhbmQK
KwkvLyBzbyB3aWxsIHkgc2luY2UgaXQgaXMgcmFpc2VkIHRvIGFuIG9kZCBwb3dlciwgYW5kIHRo
ZSBzaGFkZXIgc3BlYworCS8vIGRvZXMgbm90IHN1cHBvcnQgcG93KC14LCB5KSB3aGVyZSB5IGlz
IG5vdCBhIGNvbXBpbGUgdGltZSBjb25zdGFudAorCXogPSBhYnMoKHggLSAxLjApIC8gKHggKyAx
LjApKTsKKwl2ZWMzIHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJ
eworCQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAtMi4wOwor
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh5IC8gLTQuNjEsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cvbG9nX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9s
b2dfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZDIxZjZmMzUxMTgxODNh
ZjQ5YTEwOTBkZjIwNWM1OTU3YTMwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cv
bG9nX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDMzIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMzIHggPSAzMS4wICogY29sb3IucmdiICsgMS4wOworCXZlYzMg
eSA9IHZlYzMoMC4wKTsKKwl2ZWMzIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1MDsKKwor
CS8vIGxuKHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZvciB4ID4g
MAorCS8vICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBdCisJeiA9
ICh4IC0gMS4wKSAvICh4ICsgMS4wKTsKKwl2ZWMzIHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkg
PD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsK
Kwl9CisJeSAqPSAyLjA7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyAzLjQ2NiwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cvbG9nX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlM2I3N2I1
M2VlZThkZTc3ZjRlMGVlMTg2ZTc4YTVhNGQ0ZGIyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sb2cvbG9nX3ZlYzNfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAzMS4wICogZ3RmX0NvbG9yLnJnYiArIDEuMDsKKwlj
b2xvciA9IHZlYzQobG9nKGMpIC8gMy40NjYsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9sb2cvbG9nX3ZlYzNfdmVydF94dmFyeTAxLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cvbG9nX3Zl
YzNfdmVydF94dmFyeTAxLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFlMDZkYzM1OGM2MGEyYzdmNWRhNmQy
ODQyMzZmOTc1MjYxMTc0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVj
M192ZXJ0X3h2YXJ5MDEudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMyBjID0gKGd0Zl9Db2xvci5yZ2IgKyAwLjAxKSAvIDEuMDE7CisJY29sb3IgPSB2ZWM0
KGxvZyhjKSAvIC00LjYxLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xv
Z192ZWMzX3ZlcnRfeHZhcnkwMV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjM192ZXJ0
X3h2YXJ5MDFfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVjNjdhY2RlM2M1MWNjYWM5MzA4YjdlMTEz
NTE0NGJhZTEwNjY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjM192
ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQKQEAgLTAsMCArMSwzNyBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzMgeCA9IChndGZfQ29sb3IucmdiICsgMC4wMSkgLyAxLjAxOworCXZlYzMgeSA9IHZl
YzMoMC4wKTsKKwl2ZWMzIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1MDsKKworCS8vIGxu
KHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZvciB4ID4gMAorCS8v
ICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBdCisJLy8gTm90ZTog
eiB3aWxsIGFsd2F5cyBiZSBuZWdhdGl2ZSBiZXR3ZWVuIDAuMDEgYW5kIDEuMCBhbmQKKwkvLyBz
byB3aWxsIHkgc2luY2UgaXQgaXMgcmFpc2VkIHRvIGFuIG9kZCBwb3dlciwgYW5kIHRoZSBzaGFk
ZXIgc3BlYworCS8vIGRvZXMgbm90IHN1cHBvcnQgcG93KC14LCB5KSB3aGVyZSB5IGlzIG5vdCBh
IGNvbXBpbGUgdGltZSBjb25zdGFudAorCXogPSBhYnMoKHggLSAxLjApIC8gKHggKyAxLjApKTsK
Kwl2ZWMzIHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5
ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAtMi4wOworCisJY29s
b3IgPSB2ZWM0KHkgLyAtNC42MSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
Zy9sb2dfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nL2xvZ192ZWMzX3Zl
cnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA0YzZkYWI5YTYyY2E4NDUxNDE1ZGIxYzll
NjUxZmExODIxNzYxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZy9sb2dfdmVjM192
ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzQgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWMzIHggPSAzMS4wICogZ3RmX0NvbG9yLnJnYiArIDEuMDsKKwl2ZWMzIHkgPSB2ZWMzKDAu
MCk7CisJdmVjMyB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9
IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAg
ICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCXogPSAoeCAtIDEuMCkg
LyAoeCArIDEuMCk7CisJdmVjMyBwID0gejsKKwlmb3IoaW50IGkgPSAxOyBpIDw9IDEwMTsgaSAr
PSAyKQorCXsKKwkJeSArPSBwIC8gZmxvYXQoaSk7CisJCXAgKj0geiAqIHo7CisJfQorCXkgKj0g
Mi4wOworCisJY29sb3IgPSB2ZWM0KHkgLyAzLjQ2NiwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML2xvZzIvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvaW5wdXQucnVuLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MjA1YmYxN2NhMzk1NDJhYzkwMjM1Yjc0YTI5ZTAxM2Q2MjVkNWYzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEs
MyBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorbG9nMl8w
MDFfdG9fMDA4Lmh0bWwKK2xvZzJfMDA5X3RvXzAxMi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sb2cyL2xvZzJfMDAxX3RvXzAwOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyXzAwMV90b18w
MDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41M2RjM2UwZjhmM2MwODllN2U0YWU4ZTk3NjM5MTMzNmFkODFl
NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyXzAwMV90b18wMDguaHRt
bApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGxvZzJfMDAxX3RvXzAwOC5o
dG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2
cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2cyX2Zsb2F0
X2ZyYWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2cyX2Zsb2F0X2Zy
YWdfeHZhcnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsb2cyX2Zsb2F0X2ZyYWdf
eHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJs
b2cyX2Zsb2F0X2ZyYWdfeHZhcnkwMV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxv
ZzJfZmxvYXRfZnJhZ194dmFyeTAxLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibG9n
Ml9mbG9hdF9mcmFnX3h2YXJ5MDEudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJsb2cyX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogImxvZzJfdmVjMl9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAibG9nMl92ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJsb2cyX3ZlYzJfZnJhZ194dmFyeTAxX3JlZi5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAibG9nMl92ZWMyX2ZyYWdfeHZhcnkwMS5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogImxvZzJfdmVjMl9mcmFnX3h2YXJ5MDEudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2cyX3ZlYzNfZnJhZ194dmFyeV9yZWYu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImxvZzJfdmVjM19mcmFnX3h2YXJ5LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAibG9nMl92ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJsb2cyX3ZlYzNfZnJhZ194dmFy
eTAxX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibG9nMl92ZWMzX2ZyYWdfeHZhcnkw
MS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxvZzJfdmVjM19mcmFnX3h2YXJ5MDEu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsb2cy
X2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxvZzJf
ZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImxvZzJfZmxvYXRf
dmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogImxvZzJfZmxvYXRfdmVydF94dmFyeTAxX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJsb2cyX2Zsb2F0X3ZlcnRfeHZhcnkwMS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogImxvZzJfZmxvYXRfdmVydF94dmFyeTAxLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyXzAw
OV90b18wMTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl8wMDlfdG9fMDEyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTc2NDRiMzc5MmQ5YjExYjAyMzIzZGE4YTRjN2E5Yzg4MWFhY2Q5OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl8wMDlfdG9fMDEyLmh0bWwKQEAgLTAsMCArMSw4
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4g
RE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IGxvZzJfMDA5X3RvXzAxMi5odG1sPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNU
ZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsb2cyX3ZlYzJfdmVydF94dmFyeV9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibG9nMl92ZWMyX3ZlcnRfeHZhcnkudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsb2cyX3ZlYzJfdmVydF94dmFyeS50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxvZzJfdmVjMl92ZXJ0
X3h2YXJ5MDFfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxvZzJfdmVjMl92ZXJ0
X3h2YXJ5MDEudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJsb2cyX3ZlYzJfdmVydF94dmFy
eTAxLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
bG9nMl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImxv
ZzJfdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibG9nMl92ZWMz
X3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJsb2cyX3ZlYzNfdmVydF94dmFyeTAxX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJsb2cyX3ZlYzNfdmVydF94dmFyeTAxLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAibG9nMl92ZWMzX3ZlcnRfeHZhcnkwMS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl9mbG9h
dF9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfZnJhZ194dmFyeS5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFkODE2OWU5OGI2OTIzZGRkMTcxNzBlMDEzMmY1YjNiYWRhNDAwM2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfZnJhZ194dmFyeS5m
cmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMg
PSAzMS4wICogY29sb3IuciArIDEuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGxvZzIoYykgLyA1
LjAsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zs
b2F0X2ZyYWdfeHZhcnkwMS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0X2ZyYWdfeHZh
cnkwMS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYmRjODcxNzc3YzZiYjJlNzgzNTdiODZjOWExMDkzNjhj
OWFjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfZnJhZ194
dmFyeTAxLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
ZmxvYXQgYyA9IChjb2xvci5yICsgMC4wMSkgLyAxLjAxOworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
bG9nMihjKSAvIC04LjAsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bG9nMi9sb2cyX2Zsb2F0X2ZyYWdfeHZhcnkwMV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9n
Ml9mbG9hdF9mcmFnX3h2YXJ5MDFfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY5ZWRhZWU0MDlkMDE5
NTcxMGVmZDAwMGM4ZmQxNGFiNGFiNWFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl9mbG9hdF9mcmFnX3h2YXJ5MDFfcmVmLmZyYWcKQEAgLTAsMCArMSwzOSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Y29uc3QgZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxODsKKwor
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4ID0gKGNvbG9yLnIgKyAwLjAxKSAvIDEu
MDE7CisJZmxvYXQgeSA9IDAuMDsKKwlmbG9hdCB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0g
NTA7CisKKwkvLyBsbih4KSA9IDJbeC0xICsgMSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBm
b3IgeCA+IDAKKwkvLyAgICAgICAgICBbeCsxICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAg
XQorCS8vIE5vdGU6IHogd2lsbCBhbHdheXMgYmUgbmVnYXRpdmUgYmV0d2VlbiAwLjAxIGFuZCAx
LjAgYW5kCisJLy8gc28gd2lsbCB5IHNpbmNlIGl0IGlzIHJhaXNlZCB0byBhbiBvZGQgcG93ZXIs
IGFuZCB0aGUgc2hhZGVyIHNwZWMKKwkvLyBkb2VzIG5vdCBzdXBwb3J0IHBvdygteCwgeSkgd2hl
cmUgeSBpcyBub3QgYSBjb21waWxlIHRpbWUgY29uc3RhbnQKKwl6ID0gYWJzKCh4IC0gMS4wKSAv
ICh4ICsgMS4wKSk7CisJZmxvYXQgcCA9IHo7CisJZm9yKGludCBpID0gMTsgaSA8PSAxMDE7IGkg
Kz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHogKiB6OworCX0KKwl5ICo9
IC0yLjAgLyBsbjI7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyAtOC4wLCAwLjAsIDAuMCwg
MS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl9mbG9hdF9mcmFnX3h2YXJ5
X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzc4Y2RjZDE0YWI4OTcyZDAyYTZkMjhmMjk2NWIyYTQzZTUxMTg2OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5m
cmFnCkBAIC0wLDAgKzEsMzYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK2NvbnN0IGZsb2F0IGxuMiA9IDAuNjkzMTQ3MTgwNTU5
OTQ1MzA5NDE3MjMyMTIxNDU4MTg7CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQg
eCA9IDMxLjAgKiBjb2xvci5yICsgMS4wOworCWZsb2F0IHkgPSAwLjA7CisJZmxvYXQgejsgICAv
LyB4LTEgLyB4KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4oeCkgPSAyW3gtMSArIDEgKHgtMSle
MyArIDEgKHgtMSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8gICAgICAgICAgW3grMSAgIDMgKHgr
MSkgICAgIDUgKHgrMSkgICAgICAgIF0KKwl6ID0gKHggLSAxLjApIC8gKHggKyAxLjApOworCWZs
b2F0IHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9
IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAyLjAgLyBsbjI7CisKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyA1LjAsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxNTYxM2QyZjlkMmU5
ZmJmMGY5MmRlZGU5Nzc2NTZmZmI3N2MyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCWZsb2F0IGMgPSAzMS4wICogZ3RmX0NvbG9yLnIgKyAxLjA7CisJY29sb3Ig
PSB2ZWM0KGxvZzIoYykgLyA1LjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0X3ZlcnRfeHZhcnkwMS52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9n
Mi9sb2cyX2Zsb2F0X3ZlcnRfeHZhcnkwMS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjYwZjg5Yzc1ZGRi
YjA3NzEwMzhkY2Q2NjQ2OTRlZGQ3ODM0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
b2cyL2xvZzJfZmxvYXRfdmVydF94dmFyeTAxLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWZsb2F0IGMgPSAoZ3RmX0NvbG9yLnIgKyAwLjAxKSAvIDEuMDE7CisJ
Y29sb3IgPSB2ZWM0KGxvZzIoYykgLyAtOC4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl9mbG9hdF92ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfdmVydF94dmFyeTAxX3JlZi52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg1ODlhNWViMzU4ZDkyZjM5ZTMwZTQ3NDI1MzA2MWVlZTBjMDljZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfdmVydF94dmFyeTAxX3JlZi52ZXJ0CkBAIC0w
LDAgKzEsNDAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7Citjb25zdCBmbG9hdCBsbjIgPSAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEy
MTQ1ODE4OworCisKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHggPSAoZ3RmX0NvbG9y
LnIgKyAwLjAxKSAvIDEuMDE7CisJZmxvYXQgeSA9IDAuMDsKKwlmbG9hdCB6OyAgIC8vIHgtMSAv
IHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9IDJbeC0xICsgMSAoeC0xKV4zICsgMSAo
eC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAgICAgICBbeCsxICAgMyAoeCsxKSAgICAg
NSAoeCsxKSAgICAgICAgXQorCS8vIE5vdGU6IHogd2lsbCBhbHdheXMgYmUgbmVnYXRpdmUgYmV0
d2VlbiAwLjAxIGFuZCAxLjAgYW5kCisJLy8gc28gd2lsbCB5IHNpbmNlIGl0IGlzIHJhaXNlZCB0
byBhbiBvZGQgcG93ZXIsIGFuZCB0aGUgc2hhZGVyIHNwZWMKKwkvLyBkb2VzIG5vdCBzdXBwb3J0
IHBvdygteCwgeSkgd2hlcmUgeSBpcyBub3QgYSBjb21waWxlIHRpbWUgY29uc3RhbnQKKwl6ID0g
YWJzKCh4IC0gMS4wKSAvICh4ICsgMS4wKSk7CisJZmxvYXQgcCA9IHo7CisJZm9yKGludCBpID0g
MTsgaSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHog
KiB6OworCX0KKwl5ICo9IC0yLjAgLyBsbjI7CisKKwljb2xvciA9IHZlYzQoeSAvIC04LjAsIDAu
MCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0
X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfZmxvYXRfdmVydF94dmFy
eV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDJkMGZlYjQ1M2JhYTNmNmYwNDcxNmMxMDA5NDBkYTNh
MWJkMDhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX2Zsb2F0X3ZlcnRf
eHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwzNSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK2NvbnN0IGZsb2F0IGxuMiA9IDAuNjkzMTQ3
MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTg7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9h
dCB4ID0gMzEuMCAqIGd0Zl9Db2xvci5yICsgMS4wOworCWZsb2F0IHkgPSAwLjA7CisJZmxvYXQg
ejsgICAvLyB4LTEgLyB4KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4oeCkgPSAyW3gtMSArIDEg
KHgtMSleMyArIDEgKHgtMSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8gICAgICAgICAgW3grMSAg
IDMgKHgrMSkgICAgIDUgKHgrMSkgICAgICAgIF0KKwl6ID0gKHggLSAxLjApIC8gKHggKyAxLjAp
OworCWZsb2F0IHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJewor
CQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAyLjAgLyBsbjI7
CisKKwljb2xvciA9IHZlYzQoeSAvIDUuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
b2cyL2xvZzJfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVlNjhkNTkwY2E5N2Fh
ZmE4YWE0YmFlYWE2MDViMTEyMTgzZDIwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAzMS4wICogY29sb3IucmcgKyAxLjA7CisJZ2xfRnJh
Z0NvbG9yID0gdmVjNChsb2cyKGMpIC8gNS4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cyL2xvZzJfdmVjMl9mcmFnX3h2YXJ5MDEuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIv
bG9nMl92ZWMyX2ZyYWdfeHZhcnkwMS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZDg0ODRiYzgyYTc5MmYw
NzNhMTdiYTYwMGNlOWQxZjczYzY3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cy
L2xvZzJfdmVjMl9mcmFnX3h2YXJ5MDEuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAoY29sb3IucmcgKyAwLjAxKSAvIDEuMDE7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChsb2cyKGMpIC8gLTguMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzJfZnJhZ194dmFyeTAxX3JlZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbG9nMi9sb2cyX3ZlYzJfZnJhZ194dmFyeTAxX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMzA3
ZmFkYzU4NGU5MWEwYTZiODFlMmMxNzRiOWQ5ZDg0OGJhMjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cyL2xvZzJfdmVjMl9mcmFnX3h2YXJ5MDFfcmVmLmZyYWcKQEAgLTAsMCArMSwz
OSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworY29uc3QgZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0
NTgxODsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIHggPSAoY29sb3IucmcgKyAw
LjAxKSAvIDEuMDE7CisJdmVjMiB5ID0gdmVjMigwLjApOworCXZlYzIgejsgICAvLyB4LTEgLyB4
KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4oeCkgPSAyW3gtMSArIDEgKHgtMSleMyArIDEgKHgt
MSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8gICAgICAgICAgW3grMSAgIDMgKHgrMSkgICAgIDUg
KHgrMSkgICAgICAgIF0KKwkvLyBOb3RlOiB6IHdpbGwgYWx3YXlzIGJlIG5lZ2F0aXZlIGJldHdl
ZW4gMC4wMSBhbmQgMS4wIGFuZAorCS8vIHNvIHdpbGwgeSBzaW5jZSBpdCBpcyByYWlzZWQgdG8g
YW4gb2RkIHBvd2VyLCBhbmQgdGhlIHNoYWRlciBzcGVjCisJLy8gZG9lcyBub3Qgc3VwcG9ydCBw
b3coLXgsIHkpIHdoZXJlIHkgaXMgbm90IGEgY29tcGlsZSB0aW1lIGNvbnN0YW50CisJeiA9IGFi
cygoeCAtIDEuMCkgLyAoeCArIDEuMCkpOworCXZlYzIgcCA9IHo7CisJZm9yKGludCBpID0gMTsg
aSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHogKiB6
OworCX0KKwl5ICo9IC0yLjAgLyBsbjI7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyAtOC4w
LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjMl9mcmFn
X3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzJfZnJhZ194dmFyeV9yZWYu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZjU0ZGUyYTJiMTRmNzQ0ZWU3NGI0MjFlMjQ3NGRiZjI2MDVhMDdi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzJfZnJhZ194dmFyeV9y
ZWYuZnJhZwpAQCAtMCwwICsxLDM2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Citjb25zdCBmbG9hdCBsbjIgPSAwLjY5MzE0NzE4
MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE4OworCisKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzIgeCA9IDMxLjAgKiBjb2xvci5yZyArIDEuMDsKKwl2ZWMyIHkgPSB2ZWMyKDAuMCk7CisJdmVj
MiB6OyAgIC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9IDJbeC0xICsg
MSAoeC0xKV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAgICAgICBbeCsx
ICAgMyAoeCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCXogPSAoeCAtIDEuMCkgLyAoeCArIDEu
MCk7CisJdmVjMiBwID0gejsKKwlmb3IoaW50IGkgPSAxOyBpIDw9IDEwMTsgaSArPSAyKQorCXsK
KwkJeSArPSBwIC8gZmxvYXQoaSk7CisJCXAgKj0geiAqIHo7CisJfQorCXkgKj0gMi4wIC8gbG4y
OworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh5IC8gNS4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9s
b2cyL2xvZzJfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwN2RhYWE0MjllZGI4
ZWRhMzAzNjUzZTUyZGZjMGRiM2E1Y2ZiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl92ZWMyX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
Q29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMiBjID0gMzEuMCAqIGd0Zl9Db2xvci5yZyArIDEuMDsKKwljb2xvciA9
IHZlYzQobG9nMihjKSAvIDUuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbG9nMi9sb2cyX3ZlYzJfdmVydF94dmFyeTAxLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJf
dmVjMl92ZXJ0X3h2YXJ5MDEudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDMxMmFjOGQ2MDI3N2Y1NjdjYTFk
NTkwMTkwNDk5NjNlMGU2OTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cy
X3ZlYzJfdmVydF94dmFyeTAxLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9y
OworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzIgYyA9IChndGZfQ29sb3IucmcgKyAwLjAxKSAvIDEuMDE7CisJY29sb3IgPSB2
ZWM0KGxvZzIoYykgLyAtOC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9sb2cyL2xvZzJfdmVjMl92ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xv
ZzJfdmVjMl92ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhOGNmMzQxOTMwYjdj
YmNiNDI2M2Q1MGZjN2JjZjNjNGJkOTY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl92ZWMyX3ZlcnRfeHZhcnkwMV9yZWYudmVydApAQCAtMCwwICsxLDQwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworY29uc3Qg
ZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxODsKKworCisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIHggPSAoZ3RmX0NvbG9yLnJnICsgMC4wMSkgLyAxLjAx
OworCXZlYzIgeSA9IHZlYzIoMC4wKTsKKwl2ZWMyIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4g
PSA1MDsKKworCS8vIGxuKHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5d
IGZvciB4ID4gMAorCS8vICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAg
ICBdCisJLy8gTm90ZTogeiB3aWxsIGFsd2F5cyBiZSBuZWdhdGl2ZSBiZXR3ZWVuIDAuMDEgYW5k
IDEuMCBhbmQKKwkvLyBzbyB3aWxsIHkgc2luY2UgaXQgaXMgcmFpc2VkIHRvIGFuIG9kZCBwb3dl
ciwgYW5kIHRoZSBzaGFkZXIgc3BlYworCS8vIGRvZXMgbm90IHN1cHBvcnQgcG93KC14LCB5KSB3
aGVyZSB5IGlzIG5vdCBhIGNvbXBpbGUgdGltZSBjb25zdGFudAorCXogPSBhYnMoKHggLSAxLjAp
IC8gKHggKyAxLjApKTsKKwl2ZWMyIHAgPSB6OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBp
ICs9IDIpCisJeworCQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAq
PSAtMi4wIC8gbG4yOworCisJY29sb3IgPSB2ZWM0KHkgLyAtOC4wLCAwLjAsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NDRkZmRhNDNmNGI0NmNjYjY0YjNmN2I3MDQ4YmNjOTQ0NDgzNGFkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCww
ICsxLDM3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworY29uc3QgZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0
NTgxODsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIHggPSAzMS4wICogZ3RmX0Nv
bG9yLnJnICsgMS4wOworCXZlYzIgeSA9IHZlYzIoMC4wKTsKKwl2ZWMyIHo7ICAgLy8geC0xIC8g
eCsxCisJaW50IG4gPSA1MDsKKworCS8vIGxuKHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4
LTEpXjUgKyAuLi5dIGZvciB4ID4gMAorCS8vICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1
ICh4KzEpICAgICAgICBdCisJeiA9ICh4IC0gMS4wKSAvICh4ICsgMS4wKTsKKwl2ZWMyIHAgPSB6
OworCWZvcihpbnQgaSA9IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBmbG9h
dChpKTsKKwkJcCAqPSB6ICogejsKKwl9CisJeSAqPSAyLjAgLyBsbjI7CisKKwljb2xvciA9IHZl
YzQoeSAvIDUuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9s
b2cyX3ZlYzNfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzNfZnJhZ194
dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZWNmMTIxMDIyMGYyMzFiMTk1MTM3ZjE0YTFhZjViZmNi
NDBmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM19mcmFnX3h2
YXJ5LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MyBjID0gMzEuMCAqIGNvbG9yLnJnYiArIDEuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGxvZzIo
YykgLyA1LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM19m
cmFnX3h2YXJ5MDEuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl92ZWMzX2ZyYWdfeHZhcnkwMS5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA5OGUyZjk1NTVjODdkYzcxYjNhODZjNGRjZDlmMTIxYjVkNDEzZDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM19mcmFnX3h2YXJ5MDEu
ZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMg
PSAoY29sb3IucmdiICsgMC4wMSkgLyAxLjAxOworCWdsX0ZyYWdDb2xvciA9IHZlYzQobG9nMihj
KSAvIC04LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM19m
cmFnX3h2YXJ5MDFfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM19mcmFnX3h2YXJ5
MDFfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNkZjZhZjljYWJhZTdjMDg5ZDFhNWZjODM4NjI2OWEw
NTk3MWIxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl92ZWMzX2ZyYWdf
eHZhcnkwMV9yZWYuZnJhZwpAQCAtMCwwICsxLDM5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Citjb25zdCBmbG9hdCBsbjIgPSAw
LjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE4OworCisKKwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzMgeCA9IChjb2xvci5yZ2IgKyAwLjAxKSAvIDEuMDE7CisJdmVjMyB5ID0gdmVj
MygwLjApOworCXZlYzMgejsgICAvLyB4LTEgLyB4KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4o
eCkgPSAyW3gtMSArIDEgKHgtMSleMyArIDEgKHgtMSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8g
ICAgICAgICAgW3grMSAgIDMgKHgrMSkgICAgIDUgKHgrMSkgICAgICAgIF0KKwkvLyBOb3RlOiB6
IHdpbGwgYWx3YXlzIGJlIG5lZ2F0aXZlIGJldHdlZW4gMC4wMSBhbmQgMS4wIGFuZAorCS8vIHNv
IHdpbGwgeSBzaW5jZSBpdCBpcyByYWlzZWQgdG8gYW4gb2RkIHBvd2VyLCBhbmQgdGhlIHNoYWRl
ciBzcGVjCisJLy8gZG9lcyBub3Qgc3VwcG9ydCBwb3coLXgsIHkpIHdoZXJlIHkgaXMgbm90IGEg
Y29tcGlsZSB0aW1lIGNvbnN0YW50CisJeiA9IGFicygoeCAtIDEuMCkgLyAoeCArIDEuMCkpOwor
CXZlYzMgcCA9IHo7CisJZm9yKGludCBpID0gMTsgaSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkg
Kz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHogKiB6OworCX0KKwl5ICo9IC0yLjAgLyBsbjI7CisK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyAtOC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbG9nMi9sb2cyX3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xvZzIv
bG9nMl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDczMDNlZjY3N2ZiN2E5
YzA4NjMyMDA5NmZlYWVhYmI2MzA4NWU3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML2xv
ZzIvbG9nMl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwzNiBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworY29u
c3QgZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxODsKKworCisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIHggPSAzMS4wICogY29sb3IucmdiICsgMS4wOwor
CXZlYzMgeSA9IHZlYzMoMC4wKTsKKwl2ZWMzIHo7ICAgLy8geC0xIC8geCsxCisJaW50IG4gPSA1
MDsKKworCS8vIGxuKHgpID0gMlt4LTEgKyAxICh4LTEpXjMgKyAxICh4LTEpXjUgKyAuLi5dIGZv
ciB4ID4gMAorCS8vICAgICAgICAgIFt4KzEgICAzICh4KzEpICAgICA1ICh4KzEpICAgICAgICBd
CisJeiA9ICh4IC0gMS4wKSAvICh4ICsgMS4wKTsKKwl2ZWMzIHAgPSB6OworCWZvcihpbnQgaSA9
IDE7IGkgPD0gMTAxOyBpICs9IDIpCisJeworCQl5ICs9IHAgLyBmbG9hdChpKTsKKwkJcCAqPSB6
ICogejsKKwl9CisJeSAqPSAyLjAgLyBsbjI7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHkgLyA1
LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2
YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjZhMjcwYjgwZGJiMTU3Nzg3MDg1NDIzY2Q3ZjM3YjUxZDA4MTc2NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML2xvZzIvbG9nMl92ZWMzX3ZlcnRfeHZhcnkudmVydApAQCAtMCww
ICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMzEuMCAqIGd0Zl9Db2xv
ci5yZ2IgKyAxLjA7CisJY29sb3IgPSB2ZWM0KGxvZzIoYykgLyA1LjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2YXJ5MDEudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML2xvZzIvbG9nMl92ZWMzX3ZlcnRfeHZhcnkwMS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOGM0
NjRmMzFhMThiYjM0ZTU4NmE5NWM5MWIwMWI5ZTU5NGUzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2YXJ5MDEudmVydApAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gKGd0Zl9Db2xvci5yZ2IgKyAwLjAxKSAv
IDEuMDE7CisJY29sb3IgPSB2ZWM0KGxvZzIoYykgLyAtOC4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzNfdmVydF94dmFyeTAxX3JlZi52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbG9nMi9sb2cyX3ZlYzNfdmVydF94dmFyeTAxX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
YmZlNzc3NWQxZDBlNmRiZWEwMjhiMjFhYzkzNDdiMmNkODc5YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2YXJ5MDFfcmVmLnZlcnQKQEAgLTAsMCAr
MSw0MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKK2NvbnN0IGZsb2F0IGxuMiA9IDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4
MTg7CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyB4ID0gKGd0Zl9Db2xvci5yZ2Ig
KyAwLjAxKSAvIDEuMDE7CisJdmVjMyB5ID0gdmVjMygwLjApOworCXZlYzMgejsgICAvLyB4LTEg
LyB4KzEKKwlpbnQgbiA9IDUwOworCisJLy8gbG4oeCkgPSAyW3gtMSArIDEgKHgtMSleMyArIDEg
KHgtMSleNSArIC4uLl0gZm9yIHggPiAwCisJLy8gICAgICAgICAgW3grMSAgIDMgKHgrMSkgICAg
IDUgKHgrMSkgICAgICAgIF0KKwkvLyBOb3RlOiB6IHdpbGwgYWx3YXlzIGJlIG5lZ2F0aXZlIGJl
dHdlZW4gMC4wMSBhbmQgMS4wIGFuZAorCS8vIHNvIHdpbGwgeSBzaW5jZSBpdCBpcyByYWlzZWQg
dG8gYW4gb2RkIHBvd2VyLCBhbmQgdGhlIHNoYWRlciBzcGVjCisJLy8gZG9lcyBub3Qgc3VwcG9y
dCBwb3coLXgsIHkpIHdoZXJlIHkgaXMgbm90IGEgY29tcGlsZSB0aW1lIGNvbnN0YW50CisJeiA9
IGFicygoeCAtIDEuMCkgLyAoeCArIDEuMCkpOworCXZlYzMgcCA9IHo7CisJZm9yKGludCBpID0g
MTsgaSA8PSAxMDE7IGkgKz0gMikKKwl7CisJCXkgKz0gcCAvIGZsb2F0KGkpOworCQlwICo9IHog
KiB6OworCX0KKwl5ICo9IC0yLjAgLyBsbjI7CisKKwljb2xvciA9IHZlYzQoeSAvIC04LjAsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9sb2cyL2xvZzJfdmVjM192ZXJ0X3h2YXJ5
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZTIzMzk0ZmYwMjM4ZTg2YWQwNTk2NDk5NWQ0YTgwZTIzOGQyODAyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbG9nMi9sb2cyX3ZlYzNfdmVydF94dmFyeV9yZWYudmVy
dApAQCAtMCwwICsxLDM3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworY29uc3QgZmxvYXQgbG4yID0gMC42OTMxNDcxODA1NTk5NDUzMDk0
MTcyMzIxMjE0NTgxODsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIHggPSAzMS4w
ICogZ3RmX0NvbG9yLnJnYiArIDEuMDsKKwl2ZWMzIHkgPSB2ZWMzKDAuMCk7CisJdmVjMyB6OyAg
IC8vIHgtMSAvIHgrMQorCWludCBuID0gNTA7CisKKwkvLyBsbih4KSA9IDJbeC0xICsgMSAoeC0x
KV4zICsgMSAoeC0xKV41ICsgLi4uXSBmb3IgeCA+IDAKKwkvLyAgICAgICAgICBbeCsxICAgMyAo
eCsxKSAgICAgNSAoeCsxKSAgICAgICAgXQorCXogPSAoeCAtIDEuMCkgLyAoeCArIDEuMCk7CisJ
dmVjMyBwID0gejsKKwlmb3IoaW50IGkgPSAxOyBpIDw9IDEwMTsgaSArPSAyKQorCXsKKwkJeSAr
PSBwIC8gZmxvYXQoaSk7CisJCXAgKj0geiAqIHo7CisJfQorCXkgKj0gMi4wIC8gbG4yOworCisJ
Y29sb3IgPSB2ZWM0KHkgLyA1LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
YXQvYXJyYXlfY29uc3RfbWF0Ml9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3Rf
bWF0Ml9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZlYTMxY2Y4ZjY1MzUxN2E4OTc2NTIwZDY1MzM3
ZWMwMWMwMjkwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9hcnJheV9jb25zdF9t
YXQyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDMzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2NvbnN0IGludCBhcnJheV9zaXpl
ID0gMjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IG1hdDIgYSA9IG1hdDIoMS4wLCAy
LjAsIDMuMCwgNC4wKTsKKwljb25zdCBtYXQyIGIgPSBtYXQyKDUuMCwgNi4wLCA3LjAsIDguMCk7
CisJbWF0MiBhcnJheVthcnJheV9zaXplXTsKKwlmbG9hdCBncmF5OworCisJYXJyYXlbMF0gPSBh
OworCWFycmF5WzFdID0gYjsKKworCWlmKChhcnJheVswXSA9PSBhKSAmJiAoYXJyYXlbMV0gPT0g
YikpCisJCWdyYXkgPSAxLjA7CisJZWxzZQorCQlncmF5ID0gMC4wOworCisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9tYXQvYXJyYXlfY29uc3RfbWF0Ml92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29u
c3RfbWF0Ml92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM4NDVlNjZhYzFjMTNjYTQzMTBmYTYwNzli
Njg4NGNjZmFkYjNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9hcnJheV9jb25z
dF9tYXQyX3ZlcnQudmVydApAQCAtMCwwICsxLDMzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCitjb25zdCBpbnQgYXJyYXlfc2l6ZSA9IDI7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwljb25zdCBtYXQyIGEgPSBtYXQyKDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJY29uc3QgbWF0MiBi
ID0gbWF0Mig1LjAsIDYuMCwgNy4wLCA4LjApOworCW1hdDIgYXJyYXlbYXJyYXlfc2l6ZV07CisJ
ZmxvYXQgZ3JheTsKKworCWFycmF5WzBdID0gYTsKKwlhcnJheVsxXSA9IGI7CisKKwlpZigoYXJy
YXlbMF0gPT0gYSkgJiYgKGFycmF5WzFdID09IGIpKQorCQlncmF5ID0gMS4wOworCWVsc2UKKwkJ
Z3JheSA9IDAuMDsKKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0M19mcmFnLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0M19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQw
Y2RmMjgyNGM5NTlkZTllZWUzMWFkNzhhMmY2ZWZjNGVhOWRiOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML21hdC9hcnJheV9jb25zdF9tYXQzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDM3IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK2NvbnN0IGludCBhcnJheV9zaXplID0gMjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IG1hdDMgYSA9IG1hdDMoMS4wLCAyLjAsIDMuMCwKKwkJICAgICAgICAgICAgNC4wLCA1
LjAsIDYuMCwKKwkJCSAgICA3LjAsIDguMCwgOS4wKTsKKwljb25zdCBtYXQzIGIgPSBtYXQzKDEw
LjAsIDExLjAsIDEyLjAsCisJCSAgICAgICAgICAgIDEzLjAsIDE0LjAsIDE1LjAsCisJCQkgICAg
MTYuMCwgMTcuMCwgMTguMCk7CisJbWF0MyBhcnJheVthcnJheV9zaXplXTsKKwlmbG9hdCBncmF5
OworCisJYXJyYXlbMF0gPSBhOworCWFycmF5WzFdID0gYjsKKworCWlmKChhcnJheVswXSA9PSBh
KSAmJiAoYXJyYXlbMV0gPT0gYikpCisJCWdyYXkgPSAxLjA7CisJZWxzZQorCQlncmF5ID0gMC4w
OworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0M192ZXJ0LnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0M192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAyMzdkNjNj
ODI3YzVlNDBiOWY4ZDk4OWVkMDhkYTQ5ZGVkNWQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdC9hcnJheV9jb25zdF9tYXQzX3ZlcnQudmVydApAQCAtMCwwICsxLDM3IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitjb25zdCBpbnQgYXJyYXlfc2l6ZSA9IDI7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBtYXQzIGEgPSBtYXQzKDEuMCwgMi4wLCAzLjAsCisJ
CSAgICAgICAgICAgIDQuMCwgNS4wLCA2LjAsCisJCQkgICAgNy4wLCA4LjAsIDkuMCk7CisJY29u
c3QgbWF0MyBiID0gbWF0MygxMC4wLCAxMS4wLCAxMi4wLAorCQkgICAgICAgICAgICAxMy4wLCAx
NC4wLCAxNS4wLAorCQkJICAgIDE2LjAsIDE3LjAsIDE4LjApOworCW1hdDMgYXJyYXlbYXJyYXlf
c2l6ZV07CisJZmxvYXQgZ3JheTsKKworCWFycmF5WzBdID0gYTsKKwlhcnJheVsxXSA9IGI7CisK
KwlpZigoYXJyYXlbMF0gPT0gYSkgJiYgKGFycmF5WzFdID09IGIpKQorCQlncmF5ID0gMS4wOwor
CWVsc2UKKwkJZ3JheSA9IDAuMDsKKworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0NF9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0NF9mcmFnLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjgyNjJjMmZhMGVhZjYwZWFiYTFmMmU1NGY1MjUzOTEwMGNjOTc0MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21hdC9hcnJheV9jb25zdF9tYXQ0X2ZyYWcuZnJhZwpAQCAtMCww
ICsxLDM5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK2NvbnN0IGludCBhcnJheV9zaXplID0gMjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWNvbnN0IG1hdDQgYSA9IG1hdDQoIDEuMCwgIDIuMCwgIDMuMCwgIDQuMCwKKwkJ
ICAgICAgICAgICAgIDUuMCwgIDYuMCwgIDcuMCwgIDguMCwKKwkJCSAgICAgOS4wLCAxMC4wLCAx
MS4wLCAxMi4wLAorCQkJICAgIDEzLjAsIDE0LjAsIDE1LjAsIDE2LjApOworCWNvbnN0IG1hdDQg
YiA9IG1hdDQoMTcuMCwgMTguMCwgMTkuMCwgMjAuMCwKKwkJICAgICAgICAgICAgMjEuMCwgMjIu
MCwgMjMuMCwgMjQuMCwKKwkJCSAgICAyNS4wLCAyNi4wLCAyNy4wLCAyOC4wLAorCQkJICAgIDI5
LjAsIDMwLjAsIDMxLjAsIDMyLjApOworCW1hdDQgYXJyYXlbYXJyYXlfc2l6ZV07CisJZmxvYXQg
Z3JheTsKKworCWFycmF5WzBdID0gYTsKKwlhcnJheVsxXSA9IGI7CisKKwlpZigoYXJyYXlbMF0g
PT0gYSkgJiYgKGFycmF5WzFdID09IGIpKQorCQlncmF5ID0gMS4wOworCWVsc2UKKwkJZ3JheSA9
IDAuMDsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2FycmF5X2NvbnN0X21hdDRfdmVydC52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWF0L2FycmF5X2NvbnN0X21hdDRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYzgw
OTMxZTgyYzIxYjIwMTcwYTkzYzZhODcwZjYxZWU3NTZlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9tYXQvYXJyYXlfY29uc3RfbWF0NF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzOSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworY29uc3QgaW50IGFycmF5X3NpemUgPSAyOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgbWF0NCBhID0gbWF0NCggMS4wLCAgMi4wLCAg
My4wLCAgNC4wLAorCQkgICAgICAgICAgICAgNS4wLCAgNi4wLCAgNy4wLCAgOC4wLAorCQkJICAg
ICA5LjAsIDEwLjAsIDExLjAsIDEyLjAsCisJCQkgICAgMTMuMCwgMTQuMCwgMTUuMCwgMTYuMCk7
CisJY29uc3QgbWF0NCBiID0gbWF0NCgxNy4wLCAxOC4wLCAxOS4wLCAyMC4wLAorCQkgICAgICAg
ICAgICAyMS4wLCAyMi4wLCAyMy4wLCAyNC4wLAorCQkJICAgIDI1LjAsIDI2LjAsIDI3LjAsIDI4
LjAsCisJCQkgICAgMjkuMCwgMzAuMCwgMzEuMCwgMzIuMCk7CisJbWF0NCBhcnJheVthcnJheV9z
aXplXTsKKwlmbG9hdCBncmF5OworCisJYXJyYXlbMF0gPSBhOworCWFycmF5WzFdID0gYjsKKwor
CWlmKChhcnJheVswXSA9PSBhKSAmJiAoYXJyYXlbMV0gPT0gYikpCisJCWdyYXkgPSAxLjA7CisJ
ZWxzZQorCQlncmF5ID0gMC4wOworCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQyX2NvcHlfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDJfY29weV9mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWY4ODU5NjczMzNjNjEwYzliYzM5ZjE3ZWEyN2Y2NzI1MzgxZDY2NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQyX2NvcHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEs
NTYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLyogVGhpcyBl
cHNpbG9uIHdpbGwgd29yayBhcyBsb25nIGFzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGZsb2F0IGlz
IDwgMTI4LgorICogVGhpcyBjYW4gYmUgc2VlbiBieSB0YWtpbmcgdGhlIHNwZWMgcmVsYXRpdmUg
bWVkaXVtcCBwcmVjaXNpb24gb2YgMl4tMTA6CisgKiAwLjEyNSAvIDJeLTEwID0gMTI4CisgKi8K
KyNkZWZpbmUgRVJST1JfRVBTSUxPTiAoMC4xMjUpCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlm
bG9hdCB4OworCS8vIERlY2xhcmUgYSBjb25zdGFudCAyIGJ5IDIgbWF0cml4IHdpdGggdW5pcXVl
IGVsZW1lbnRzLgorCWNvbnN0IG1hdDIgYSA9IG1hdDIoMS4wLCAyLjAsICAgLy8gMS4wIDQuMAor
CSAgICAgICAgICAgICAgICAgICAgNC4wLCA4LjApOyAgLy8gMi4wIDguMAorCisJLy8gQ29weSB0
aGUgY29uc3RhbnQgbWF0cml4IHRvIGFub3RoZXIgbm9uLWNvbnN0IG1hdHJpeC4KKwltYXQyIGIg
PSBhOworCisJLy8gQ2hlY2sgZWFjaCBlbGVtZW50IG9mIHRoZSBjb3B5LgorCWJvb2wgZWxtcyA9
IHRydWU7CisJaWYoYlswXVswXSAhPSAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzFdICE9
IDIuMCkgZWxtcyA9IGZhbHNlOworCWlmKGJbMV1bMF0gIT0gNC4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYlsxXVsxXSAhPSA4LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdyBv
ZiB0aGUgY29weS4KKwlib29sIHJvd3MgPSB0cnVlOworCXggPSBiWzBdWzBdICsgYlsxXVswXTsK
KwlpZih4IDwgNS4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDUuMCtFUlJPUl9FUFNJTE9OKSByb3dz
ID0gZmFsc2U7CisJeCA9IGJbMF1bMV0gKyBiWzFdWzFdOworCWlmKHggPCAxMC4wLUVSUk9SX0VQ
U0lMT04gfHwgeCA+IDEwLjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCisJLy8gQWRk
IHVwIGVhY2ggY29sdW1uIG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9IGJb
MF1bMF0gKyBiWzBdWzFdOworCWlmKHggPCAzLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMy4wK0VS
Uk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsxXVswXSArIGJbMV1bMV07CisJaWYo
eCA8IDEyLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTIuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0g
ZmFsc2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNz
ZnVsLgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKwor
CS8vIEFzc2lnbiB0aGUgZnJhZ21lbnQgY29sb3IuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5
LCBncmF5LCBncmF5LCAxLjApOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3Rf
bWF0Ml9jb3B5X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQyX2NvcHlfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFhODdlNWU0ZjI0MmFhMGEyZmU5OGI2M2YyMzNhZWY2ZjAxMzJmYzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0Ml9jb3B5X3ZlcnQudmVy
dApAQCAtMCwwICsxLDU1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5l
IEVSUk9SX0VQU0lMT04gMC4xCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8v
IERlY2xhcmUgYSBjb25zdGFudCAyIGJ5IDIgbWF0cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgor
CWNvbnN0IG1hdDIgYSA9IG1hdDIoMS4wLCAyLjAsICAgLy8gMS4wIDQuMAorCSAgICAgICAgICAg
ICAgICAgICAgNC4wLCA4LjApOyAgLy8gMi4wIDguMAorCisJLy8gQ29weSB0aGUgY29uc3RhbnQg
bWF0cml4IHRvIGFub3RoZXIgbm9uLWNvbnN0IG1hdHJpeC4KKwltYXQyIGIgPSBhOworCisJLy8g
Q2hlY2sgZWFjaCBlbGVtZW50IG9mIHRoZSBjb3B5LgorCWJvb2wgZWxtcyA9IHRydWU7CisJaWYo
YlswXVswXSAhPSAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzFdICE9IDIuMCkgZWxtcyA9
IGZhbHNlOworCWlmKGJbMV1bMF0gIT0gNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVsxXSAh
PSA4LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdyBvZiB0aGUgY29weS4K
Kwlib29sIHJvd3MgPSB0cnVlOworCXggPSBiWzBdWzBdICsgYlsxXVswXTsKKwlpZih4IDwgNS4w
LUVSUk9SX0VQU0lMT04gfHwgeCA+IDUuMCtFUlJPUl9FUFNJTE9OKSByb3dzID0gZmFsc2U7CisJ
eCA9IGJbMF1bMV0gKyBiWzFdWzFdOworCWlmKHggPCAxMC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+
IDEwLjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggY29s
dW1uIG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9IGJbMF1bMF0gKyBiWzBd
WzFdOworCWlmKHggPCAzLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMy4wK0VSUk9SX0VQU0lMT04p
IGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsxXVswXSArIGJbMV1bMV07CisJaWYoeCA8IDEyLjAtRVJS
T1JfRVBTSUxPTiB8fCB4ID4gMTIuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisKKwkv
LyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVsLgorCWZsb2F0
IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8vIEFzc2lnbiB0
aGUgdmFyeWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4IHBvc2l0aW9uLgorCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0Ml9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
YXQvY29uc3RfbWF0Ml9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgyN2YyYTY2Njk1YjE0MWY3NmUx
OWY0ZTViNmQzZjA0OTk3MmNiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25z
dF9tYXQyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDUzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCisKKy8qIFRoaXMgZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0
aGUgbWFnbml0dWRlIG9mIHRoZSBmbG9hdCBpcyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4g
YnkgdGFraW5nIHRoZSBzcGVjIHJlbGF0aXZlIG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgor
ICogMC4xMjUgLyAyXi0xMCA9IDEyOAorICovCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1
KQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3Rh
bnQgMiBieSAyIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwljb25zdCBtYXQyIGEgPSBt
YXQyKDEuMCwgMi4wLCAgIC8vIDEuMCA0LjAKKwkgICAgICAgICAgICAgICAgICAgIDQuMCwgOC4w
KTsgIC8vIDIuMCA4LjAKKworCS8vIENoZWNrIGVhY2ggZWxlbWVudC4KKwlib29sIGVsbXMgPSB0
cnVlOworCWlmKGFbMF1bMF0gIT0gMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAhPSAy
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzBdICE9IDQuMCkgZWxtcyA9IGZhbHNlOworCWlm
KGFbMV1bMV0gIT0gOC4wKSBlbG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cuCisJ
Ym9vbCByb3dzID0gdHJ1ZTsKKwl4ID0gYVswXVswXSArIGFbMV1bMF07CisJaWYoeCA8IDUuMC1F
UlJPUl9FUFNJTE9OIHx8IHggPiA1LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXgg
PSBhWzBdWzFdICsgYVsxXVsxXTsKKwlpZih4IDwgMTAuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAx
MC4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNvbHVt
bi4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXTsKKwlpZih4IDwg
My4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDMuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7
CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFdOworCWlmKHggPCAxMi4wLUVSUk9SX0VQU0lMT04gfHwg
eCA+IDEyLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYgYWxs
IG9mIHRoZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxtcyAm
JiByb3dzICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBBc3NpZ24gdGhlIGZyYWdtZW50IGNv
bG9yLgorCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDJfdmVydC52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWF0L2NvbnN0X21hdDJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNjg0NjBlZDIwZmQ4YzZlN2Qw
MDc2MWE2YzhlZGMyZjEyMDRhODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29u
c3RfbWF0Ml92ZXJ0LnZlcnQKQEAgLTAsMCArMSw1MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworI2RlZmluZSBFUlJPUl9FUFNJTE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7
CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3RhbnQgMiBieSAyIG1hdHJpeCB3aXRoIHVu
aXF1ZSBlbGVtZW50cy4KKwljb25zdCBtYXQyIGEgPSBtYXQyKDEuMCwgMi4wLCAgIC8vIDEuMCA0
LjAKKwkgICAgICAgICAgICAgICAgICAgIDQuMCwgOC4wKTsgIC8vIDIuMCA4LjAKKworCS8vIENo
ZWNrIGVhY2ggZWxlbWVudC4KKwlib29sIGVsbXMgPSB0cnVlOworCWlmKGFbMF1bMF0gIT0gMS4w
KSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAhPSAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihh
WzFdWzBdICE9IDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMV1bMV0gIT0gOC4wKSBlbG1zID0g
ZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cuCisJYm9vbCByb3dzID0gdHJ1ZTsKKwl4ID0g
YVswXVswXSArIGFbMV1bMF07CisJaWYoeCA8IDUuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA1LjAr
RVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBhWzBdWzFdICsgYVsxXVsxXTsKKwlp
Zih4IDwgMTAuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxMC4wK0VSUk9SX0VQU0lMT04pIHJvd3Mg
PSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNvbHVtbi4KKwlib29sIGNvbHMgPSB0cnVlOwor
CXggPSBhWzBdWzBdICsgYVswXVsxXTsKKwlpZih4IDwgMy4wLUVSUk9SX0VQU0lMT04gfHwgeCA+
IDMuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFd
OworCWlmKHggPCAxMi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDEyLjArRVJST1JfRVBTSUxPTikg
Y29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYgYWxsIG9mIHRoZSBvcGVyYXRpb25zIHdlcmUg
c3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxtcyAmJiByb3dzICYmIGNvbHMgPyAxLjAgOiAw
LjA7CisKKwkvLyBBc3NpZ24gdGhlIHZhcnlpbmcgdmFyaWFibGUgY29sb3IuCisJY29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisKKwkvLyBUcmFuc2Zvcm0gdGhlIHZlcnRleCBw
b3NpdGlvbi4KKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICog
Z3RmX1ZlcnRleDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDNfY29w
eV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0M19jb3B5X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODc2NDE0NWFjODJjNmJkZmIzOGExNWE2YjExYzY3ZGE3NGQ0MDJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDNfY29weV9mcmFnLmZyYWcKQEAgLTAs
MCArMSw2NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCisvKiBU
aGlzIGVwc2lsb24gd2lsbCB3b3JrIGFzIGxvbmcgYXMgdGhlIG1hZ25pdHVkZSBvZiB0aGUgZmxv
YXQgaXMgPCAxMjguCisgKiBUaGlzIGNhbiBiZSBzZWVuIGJ5IHRha2luZyB0aGUgc3BlYyByZWxh
dGl2ZSBtZWRpdW1wIHByZWNpc2lvbiBvZiAyXi0xMDoKKyAqIDAuMTI1IC8gMl4tMTAgPSAxMjgK
KyAqLworI2RlZmluZSBFUlJPUl9FUFNJTE9OICgwLjEyNSkKKwordm9pZCBtYWluICh2b2lkKQor
eworCWZsb2F0IHg7CisJLy8gRGVjbGFyZSBhIGNvbnN0YW50IDMgYnkgMyBtYXRyaXggd2l0aCB1
bmlxdWUgZWxlbWVudHMuCisJY29uc3QgbWF0MyBhID0gbWF0MyggMS4wLCAyLjAsIDMuMCwKKwkg
ICAgICAgICAgICAgICAgICAgICA0LjAsIDUuMCwgNi4wLAorCSAgICAgICAgICAgICAgICAgICAg
IDcuMCwgOC4wLCA5LjApOworCisJLy8gQ29weSB0aGUgY29uc3RhbnQgbWF0cml4IHRvIGFub3Ro
ZXIgbm9uLWNvbnN0IG1hdHJpeC4KKwltYXQzIGIgPSBhOworCisJLy8gQ2hlY2sgZWFjaCBlbGVt
ZW50IG9mIHRoZSBjb3B5LgorCWJvb2wgZWxtcyA9IHRydWU7CisJaWYoYlswXVswXSAhPSAxLjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzFdICE9IDIuMCkgZWxtcyA9IGZhbHNlOworCWlmKGJb
MF1bMl0gIT0gMy4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVswXSAhPSA0LjApIGVsbXMgPSBm
YWxzZTsKKwlpZihiWzFdWzFdICE9IDUuMCkgZWxtcyA9IGZhbHNlOworCWlmKGJbMV1bMl0gIT0g
Ni4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVswXSAhPSA3LjApIGVsbXMgPSBmYWxzZTsKKwlp
ZihiWzJdWzFdICE9IDguMCkgZWxtcyA9IGZhbHNlOworCWlmKGJbMl1bMl0gIT0gOS4wKSBlbG1z
ID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cgb2YgdGhlIGNvcHkuCisJYm9vbCByb3dz
ID0gdHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMV1bMF0gKyBiWzJdWzBdOworCWlmKCB4IDwgMTIu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxMi4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFsc2U7
CisJeCA9IGJbMF1bMV0gKyBiWzFdWzFdICsgYlsyXVsxXTsKKwlpZih4IDwgMTUuMC1FUlJPUl9F
UFNJTE9OIHx8IHggPiAxNS4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFsc2U7CisJeCA9IGJb
MF1bMl0gKyBiWzFdWzJdICsgYlsyXVsyXTsKKwlpZih4IDwgMTguMC1FUlJPUl9FUFNJTE9OIHx8
IHggPiAxOC4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFj
aCBjb2x1bW4gb2YgdGhlIGNvcHkuCisJYm9vbCBjb2xzID0gdHJ1ZTsKKwl4ID0gYlswXVswXSAr
IGJbMF1bMV0gKyBiWzBdWzJdOworCWlmKCB4IDwgNi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDYu
MCtFUlJPUl9FUFNJTE9OICkgY29scyA9IGZhbHNlOworCXggPSBiWzFdWzBdICsgYlsxXVsxXSAr
IGJbMV1bMl07CisJaWYoeCA8IDE1LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTUuMCtFUlJPUl9F
UFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGJbMl1bMF0gKyBiWzJdWzFdICsgYlsyXVsyXTsK
KwlpZih4IDwgMjQuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAyNC4wK0VSUk9SX0VQU0lMT04pIGNv
bHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyB3ZXJlIHN1
Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMgJiYgcm93cyAmJiBjb2xzID8gMS4wIDogMC4w
OworCisJLy8gQXNzaWduIHRoZSBmcmFnbWVudCBjb2xvci4KKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9j
b25zdF9tYXQzX2NvcHlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDNfY29weV92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiNWRiYzg0ZDk5YzdlMzdkNGE1Mzc2ZjNmMzFkZTA3ZDRm
NDFhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQzX2NvcHlfdmVy
dC52ZXJ0CkBAIC0wLDAgKzEsNjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKyNk
ZWZpbmUgRVJST1JfRVBTSUxPTiAwLjEKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHg7
CisJLy8gRGVjbGFyZSBhIGNvbnN0YW50IDMgYnkgMyBtYXRyaXggd2l0aCB1bmlxdWUgZWxlbWVu
dHMuCisJY29uc3QgbWF0MyBhID0gbWF0MyggMS4wLCAgIDIuMCwgICA0LjAsICAgLy8gMS4wICA4
LjAgIDY0LjAKKwkgICAgICAgICAgICAgICAgICAgICA4LjAsICAxNi4wLCAgMzIuMCwgICAvLyAy
LjAgMTYuMCAxMjguMAorCSAgICAgICAgICAgICAgICAgICAgNjQuMCwgMTI4LjAsIDI1Ni4wKTsg
IC8vIDQuMCAzMi4wIDI1Ni4wCisKKwkvLyBDb3B5IHRoZSBjb25zdGFudCBtYXRyaXggdG8gYW5v
dGhlciBub24tY29uc3QgbWF0cml4LgorCW1hdDMgYiA9IGE7CisKKwkvLyBDaGVjayBlYWNoIGVs
ZW1lbnQgb2YgdGhlIGNvcHkuCisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihiWzBdWzBdICE9ICAg
MS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlswXVsxXSAhPSAgIDIuMCkgZWxtcyA9IGZhbHNlOwor
CWlmKGJbMF1bMl0gIT0gICA0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzBdICE9ICAgOC4w
KSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVsxXSAhPSAgMTYuMCkgZWxtcyA9IGZhbHNlOworCWlm
KGJbMV1bMl0gIT0gIDMyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzBdICE9ICA2NC4wKSBl
bG1zID0gZmFsc2U7CisJaWYoYlsyXVsxXSAhPSAxMjguMCkgZWxtcyA9IGZhbHNlOworCWlmKGJb
Ml1bMl0gIT0gMjU2LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdyBvZiB0
aGUgY29weS4KKwlib29sIHJvd3MgPSB0cnVlOworCXggPSBiWzBdWzBdICsgYlsxXVswXSArIGJb
Ml1bMF07CisJeCA9IGJbMF1bMF0gKyBiWzFdWzBdICsgYlsyXVswXTsKKwlpZiggeCA8IDczLjAt
RVJST1JfRVBTSUxPTiB8fCB4ID4gNzMuMCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNlOwor
CXggPSBiWzBdWzFdICsgYlsxXVsxXSArIGJbMl1bMV07CisJaWYoeCA8IDE0Ni4wLUVSUk9SX0VQ
U0lMT04gfHwgeCA+IDE0Ni4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFsc2U7CisJeCA9IGJb
MF1bMl0gKyBiWzFdWzJdICsgYlsyXVsyXTsKKwlpZih4IDwgMjkyLjAtRVJST1JfRVBTSUxPTiB8
fCB4ID4gMjkyLjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBl
YWNoIGNvbHVtbiBvZiB0aGUgY29weS4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBiWzBdWzBd
ICsgYlswXVsxXSArIGJbMF1bMl07CisJaWYoIHggPCA3LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4g
Ny4wK0VSUk9SX0VQU0lMT04gKSBjb2xzID0gZmFsc2U7CisJeCA9IGJbMV1bMF0gKyBiWzFdWzFd
ICsgYlsxXVsyXTsKKwlpZih4IDwgNTYuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA1Ni4wK0VSUk9S
X0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsyXVswXSArIGJbMl1bMV0gKyBiWzJdWzJd
OworCWlmKHggPCA0NDguMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA0NDguMCtFUlJPUl9FUFNJTE9O
KSBjb2xzID0gZmFsc2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2Vy
ZSBzdWNjZXNzZnVsLgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6
IDAuMDsKKworCS8vIEFzc2lnbiB0aGUgdmFyeWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9
IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4
IHBvc2l0aW9uLgorCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0M19m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0M19mcmFnLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjA1ZGMzOTI5ODVkOGFkYmU1ODBkZTY3NGVkZjQ0ZWIxZWJjNGFhYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDYzIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisKKy8qIFRoaXMgZXBzaWxvbiB3
aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBmbG9hdCBpcyA8IDEyOC4K
KyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJlbGF0aXZlIG1lZGl1bXAg
cHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEyOAorICovCisjZGVmaW5l
IEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsK
KwkvLyBEZWNsYXJlIGEgY29uc3RhbnQgMyBieSAzIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50
cy4KKwljb25zdCBtYXQzIGEgPSBtYXQzKCAxLjAsIDIuMCwgMy4wLAorCSAgICAgICAgICAgICAg
ICAgICAgIDQuMCwgNS4wLCA2LjAsCisJICAgICAgICAgICAgICAgICAgICAgNy4wLCA4LjAsIDku
MCk7CisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQuCisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihh
WzBdWzBdICE9IDEuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMF1bMV0gIT0gMi4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYVswXVsyXSAhPSAzLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzBdICE9
IDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMV1bMV0gIT0gNS4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYVsxXVsyXSAhPSA2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzBdICE9IDcuMCkgZWxt
cyA9IGZhbHNlOworCWlmKGFbMl1bMV0gIT0gOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVsy
XSAhPSA5LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdy4KKwlib29sIHJv
d3MgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVsxXVswXSArIGFbMl1bMF07CisJaWYoIHggPCAx
Mi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDEyLjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxz
ZTsKKwl4ID0gYVswXVsxXSArIGFbMV1bMV0gKyBhWzJdWzFdOworCWlmKHggPCAxNS4wLUVSUk9S
X0VQU0lMT04gfHwgeCA+IDE1LjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsKKwl4ID0g
YVswXVsyXSArIGFbMV1bMl0gKyBhWzJdWzJdOworCWlmKHggPCAxOC4wLUVSUk9SX0VQU0lMT04g
fHwgeCA+IDE4LjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBl
YWNoIGNvbHVtbi4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXSAr
IGFbMF1bMl07CisJaWYoIHggPCA2LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNi4wK0VSUk9SX0VQ
U0lMT04gKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFdICsgYVsxXVsyXTsK
KwlpZih4IDwgMTUuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxNS4wK0VSUk9SX0VQU0lMT04pIGNv
bHMgPSBmYWxzZTsKKwl4ID0gYVsyXVswXSArIGFbMl1bMV0gKyBhWzJdWzJdOworCWlmKHggPCAy
NC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDI0LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCisJLy8gQ2hlY2sgaWYgYWxsIG9mIHRoZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4K
KwlmbG9hdCBncmF5ID0gZWxtcyAmJiByb3dzICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBB
c3NpZ24gdGhlIGZyYWdtZW50IGNvbG9yLgorCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3Jh
eSwgZ3JheSwgMS4wKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDNf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjViNjZhNGZmMjQ1NGNmZTYyODFkMzJiZDg4ZWZmZGJhNDZjYTllZDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0M192ZXJ0LnZlcnQKQEAgLTAsMCArMSw2MiBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmluZSBFUlJPUl9FUFNJTE9OIDAuMQor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3RhbnQg
MyBieSAzIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwljb25zdCBtYXQzIGEgPSBtYXQz
KCAxLjAsICAgMi4wLCAgIDQuMCwgICAvLyAxLjAgIDguMCAgNjQuMAorCSAgICAgICAgICAgICAg
ICAgICAgIDguMCwgIDE2LjAsICAzMi4wLCAgIC8vIDIuMCAxNi4wIDEyOC4wCisJICAgICAgICAg
ICAgICAgICAgICA2NC4wLCAxMjguMCwgMjU2LjApOyAgLy8gNC4wIDMyLjAgMjU2LjAKKworCS8v
IENoZWNrIGVhY2ggZWxlbWVudC4KKwlib29sIGVsbXMgPSB0cnVlOworCWlmKGFbMF1bMF0gIT0g
ICAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzBdWzFdICE9ICAgMi4wKSBlbG1zID0gZmFsc2U7
CisJaWYoYVswXVsyXSAhPSAgIDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMV1bMF0gIT0gICA4
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzFdICE9ICAxNi4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYVsxXVsyXSAhPSAgMzIuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMl1bMF0gIT0gIDY0LjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzFdICE9IDEyOC4wKSBlbG1zID0gZmFsc2U7CisJaWYo
YVsyXVsyXSAhPSAyNTYuMCkgZWxtcyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggcm93Lgor
CWJvb2wgcm93cyA9IHRydWU7CisJeCA9IGFbMF1bMF0gKyBhWzFdWzBdICsgYVsyXVswXTsKKwlp
ZiggeCA8IDczLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNzMuMCtFUlJPUl9FUFNJTE9OICkgcm93
cyA9IGZhbHNlOworCXggPSBhWzBdWzFdICsgYVsxXVsxXSArIGFbMl1bMV07CisJaWYoeCA8IDE0
Ni4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDE0Ni4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFs
c2U7CisJeCA9IGFbMF1bMl0gKyBhWzFdWzJdICsgYVsyXVsyXTsKKwlpZih4IDwgMjkyLjAtRVJS
T1JfRVBTSUxPTiB8fCB4ID4gMjkyLjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsKKwor
CS8vIEFkZCB1cCBlYWNoIGNvbHVtbi4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBd
ICsgYVswXVsxXSArIGFbMF1bMl07CisJaWYoIHggPCA3LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4g
Ny4wK0VSUk9SX0VQU0lMT04gKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFd
ICsgYVsxXVsyXTsKKwlpZih4IDwgNTYuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA1Ni4wK0VSUk9S
X0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYVsyXVswXSArIGFbMl1bMV0gKyBhWzJdWzJd
OworCWlmKHggPCA0NDguMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA0NDguMCtFUlJPUl9FUFNJTE9O
KSBjb2xzID0gZmFsc2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2Vy
ZSBzdWNjZXNzZnVsLgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6
IDAuMDsKKworCS8vIEFzc2lnbiB0aGUgdmFyeWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9
IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4
IHBvc2l0aW9uLgorCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0NF9j
b3B5X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQ0X2NvcHlfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5ZmM5MjIyYTY5ODRhMmY0NzU2YWJiM2UyOTkyOTc5MjYyNGI3YmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0NF9jb3B5X2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDc4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisKKy8q
IFRoaXMgZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBm
bG9hdCBpcyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJl
bGF0aXZlIG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEy
OAorICovCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3RhbnQgNCBieSA0IG1hdHJpeCB3aXRo
IHVuaXF1ZSBlbGVtZW50cy4KKwljb25zdCBtYXQ0IGEgPSBtYXQ0KCAxLjAsICAyLjAsICAzLjAs
ICA0LjAsCisJICAgICAgICAgICAgICAgICAgICAgNS4wLCAgNi4wLCAgNy4wLCAgOC4wLAorCSAg
ICAgICAgICAgICAgICAgICAgIDkuMCwgMTAuMCwgMTEuMCwgMTIuMCwKKwkgICAgICAgICAgICAg
ICAgICAgIDEzLjAsIDE0LjAsIDE1LjAsIDE2LjApOworCisJLy8gQ29weSB0aGUgY29uc3RhbnQg
bWF0cml4IHRvIGFub3RoZXIgbm9uLWNvbnN0IG1hdHJpeC4KKwltYXQ0IGIgPSBhOworCisJLy8g
Q2hlY2sgZWFjaCBlbGVtZW50IG9mIHRoZSBjb3B5LgorCWJvb2wgZWxtcyA9IHRydWU7CisJaWYo
YlswXVswXSAhPSAgMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlswXVsxXSAhPSAgMi4wKSBlbG1z
ID0gZmFsc2U7CisJaWYoYlswXVsyXSAhPSAgMy4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlswXVsz
XSAhPSAgNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVswXSAhPSAgNS4wKSBlbG1zID0gZmFs
c2U7CisJaWYoYlsxXVsxXSAhPSAgNi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVsyXSAhPSAg
Ny4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVszXSAhPSAgOC4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYlsyXVswXSAhPSAgOS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVsxXSAhPSAxMC4wKSBl
bG1zID0gZmFsc2U7CisJaWYoYlsyXVsyXSAhPSAxMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsy
XVszXSAhPSAxMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlszXVswXSAhPSAxMy4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYlszXVsxXSAhPSAxNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlszXVsyXSAh
PSAxNS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlszXVszXSAhPSAxNi4wKSBlbG1zID0gZmFsc2U7
CisKKwkvLyBBZGQgdXAgZWFjaCByb3cgb2YgdGhlIGNvcHkuCisJYm9vbCByb3dzID0gdHJ1ZTsK
Kwl4ID0gYlswXVswXSArIGJbMV1bMF0gKyBiWzJdWzBdICsgYlszXVswXTsKKwlpZih4IDwgMjgu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAyOC4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsK
Kwl4ID0gYlswXVsxXSArIGJbMV1bMV0gKyBiWzJdWzFdICsgYlszXVsxXTsKKwlpZih4IDwgMzIu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAzMi4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsK
Kwl4ID0gYlswXVsyXSArIGJbMV1bMl0gKyBiWzJdWzJdICsgYlszXVsyXTsKKwlpZih4IDwgMzYu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAzNi4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsK
Kwl4ID0gYlswXVszXSArIGJbMV1bM10gKyBiWzJdWzNdICsgYlszXVszXTsKKwlpZih4IDwgNDAu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiA0MC4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsK
KworCS8vIEFkZCB1cCBlYWNoIGNvbHVtbiBvZiB0aGUgY29weS4KKwlib29sIGNvbHMgPSB0cnVl
OworCXggPSBiWzBdWzBdICsgYlswXVsxXSArIGJbMF1bMl0gKyBiWzBdWzNdOworCWlmKHggPCAx
MC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDEwLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCXggPSBiWzFdWzBdICsgYlsxXVsxXSArIGJbMV1bMl0gKyBiWzFdWzNdOworCWlmKHggPCAy
Ni4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDI2LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCXggPSBiWzJdWzBdICsgYlsyXVsxXSArIGJbMl1bMl0gKyBiWzJdWzNdOworCWlmKHggPCA0
Mi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDQyLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCXggPSBiWzNdWzBdICsgYlszXVsxXSArIGJbM11bMl0gKyBiWzNdWzNdOworCWlmKHggPCA1
OC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDU4LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCisJLy8gQ2hlY2sgaWYgYWxsIG9mIHRoZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4K
KwlmbG9hdCBncmF5ID0gZWxtcyAmJiByb3dzICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBB
c3NpZ24gdGhlIGZyYWdtZW50IGNvbG9yLgorCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3Jh
eSwgZ3JheSwgMS4wKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDRf
Y29weV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0NF9jb3B5X3ZlcnQudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wODNmNjI2YjhkMDNkYTkyNmY0OWFjYWRkN2M1MWRjMGFiMTE0ZWM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDRfY29weV92ZXJ0LnZlcnQKQEAg
LTAsMCArMSw3NyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmluZSBFUlJP
Ul9FUFNJTE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNs
YXJlIGEgY29uc3RhbnQgNCBieSA0IG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwljb25z
dCBtYXQ0IGEgPSBtYXQ0KCAgIDEuMCwgICAgMi4wLCAgICAgNC4wLCAgICAgOC4wLCAgIC8vIDEu
MCAgMTYuMCAgMjU2LjAgIDQwOTYuMAorCSAgICAgICAgICAgICAgICAgICAgICAxNi4wLCAgIDMy
LjAsICAgIDY0LjAsICAgMTI4LjAsICAgLy8gMi4wICAzMi4wICA1MTIuMCAgODE5Mi4wCisJICAg
ICAgICAgICAgICAgICAgICAgMjU2LjAsICA1MTIuMCwgIDEwMjQuMCwgIDIwNDguMCwgICAvLyA0
LjAgIDY0LjAgMTAyNC4wIDE2Mzg0LjAKKwkgICAgICAgICAgICAgICAgICAgIDQwOTYuMCwgODE5
Mi4wLCAxNjM4NC4wLCAzMjc2OC4wKTsgIC8vIDguMCAxMjguMCAyMDQ4LjAgMzI3NjguMAorCisJ
Ly8gQ29weSB0aGUgY29uc3RhbnQgbWF0cml4IHRvIGFub3RoZXIgbm9uLWNvbnN0IG1hdHJpeC4K
KwltYXQ0IGIgPSBhOworCisJLy8gQ2hlY2sgZWFjaCBlbGVtZW50IG9mIHRoZSBjb3B5LgorCWJv
b2wgZWxtcyA9IHRydWU7CisJaWYoYlswXVswXSAhPSAgICAgMS4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYlswXVsxXSAhPSAgICAgMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlswXVsyXSAhPSAgICAg
NC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlswXVszXSAhPSAgICAgOC4wKSBlbG1zID0gZmFsc2U7
CisJaWYoYlsxXVswXSAhPSAgICAxNi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVsxXSAhPSAg
ICAzMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVsyXSAhPSAgICA2NC4wKSBlbG1zID0gZmFs
c2U7CisJaWYoYlsxXVszXSAhPSAgIDEyOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVswXSAh
PSAgIDI1Ni4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVsxXSAhPSAgIDUxMi4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYlsyXVsyXSAhPSAgMTAyNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVsz
XSAhPSAgMjA0OC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlszXVswXSAhPSAgNDA5Ni4wKSBlbG1z
ID0gZmFsc2U7CisJaWYoYlszXVsxXSAhPSAgODE5Mi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsz
XVsyXSAhPSAxNjM4NC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlszXVszXSAhPSAzMjc2OC4wKSBl
bG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cgb2YgdGhlIGNvcHkuCisJYm9vbCBy
b3dzID0gdHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMV1bMF0gKyBiWzJdWzBdICsgYlszXVswXTsK
KwlpZih4IDwgNDM2OS4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDQzNjkuMCtFUlJPUl9FUFNJTE9O
KSByb3dzID0gZmFsc2U7CisJeCA9IGJbMF1bMV0gKyBiWzFdWzFdICsgYlsyXVsxXSArIGJbM11b
MV07CisJaWYoeCA8IDg3MzguMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA4NzM4LjArRVJST1JfRVBT
SUxPTikgcm93cyA9IGZhbHNlOworCXggPSBiWzBdWzJdICsgYlsxXVsyXSArIGJbMl1bMl0gKyBi
WzNdWzJdOworCWlmKHggPCAxNzQ3Ni4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDE3NDc2LjArRVJS
T1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBiWzBdWzNdICsgYlsxXVszXSArIGJbMl1b
M10gKyBiWzNdWzNdOworCWlmKHggPCAzNDk1Mi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDM0OTUy
LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggY29sdW1u
IG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9IGJbMF1bMF0gKyBiWzBdWzFd
ICsgYlswXVsyXSArIGJbMF1bM107CisJaWYoeCA8IDE1LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4g
MTUuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGJbMV1bMF0gKyBiWzFdWzFd
ICsgYlsxXVsyXSArIGJbMV1bM107CisJaWYoeCA8IDI0MC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+
IDI0MC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsyXVswXSArIGJbMl1b
MV0gKyBiWzJdWzJdICsgYlsyXVszXTsKKwlpZih4IDwgMzg0MC4wLUVSUk9SX0VQU0lMT04gfHwg
eCA+IDM4NDAuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGJbM11bMF0gKyBi
WzNdWzFdICsgYlszXVsyXSArIGJbM11bM107CisJaWYoeCA8IDYxNDQwLjAtRVJST1JfRVBTSUxP
TiB8fCB4ID4gNjE0NDAuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisKKwkvLyBDaGVj
ayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVsLgorCWZsb2F0IGdyYXkg
PSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8vIEFzc2lnbiB0aGUgdmFy
eWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4w
KTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4IHBvc2l0aW9uLgorCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0NF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29u
c3RfbWF0NF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNhMTJkYmJlZDY2YmMxNWE1NjExYjdiZjAy
MzY4MTM3ODMyYTQ5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9jb25zdF9tYXQ0
X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDc1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCisKKy8qIFRoaXMgZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFn
bml0dWRlIG9mIHRoZSBmbG9hdCBpcyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFr
aW5nIHRoZSBzcGVjIHJlbGF0aXZlIG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4x
MjUgLyAyXi0xMCA9IDEyOAorICovCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2
b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3RhbnQgNCBi
eSA0IG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwljb25zdCBtYXQ0IGEgPSBtYXQ0KCAx
LjAsICAyLjAsICAzLjAsICA0LjAsCisJICAgICAgICAgICAgICAgICAgICAgNS4wLCAgNi4wLCAg
Ny4wLCAgOC4wLAorCSAgICAgICAgICAgICAgICAgICAgIDkuMCwgMTAuMCwgMTEuMCwgMTIuMCwK
KwkgICAgICAgICAgICAgICAgICAgIDEzLjAsIDE0LjAsIDE1LjAsIDE2LjApOworCisJLy8gQ2hl
Y2sgZWFjaCBlbGVtZW50LgorCWJvb2wgZWxtcyA9IHRydWU7CisJaWYoYVswXVswXSAhPSAgMS4w
KSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAhPSAgMi4wKSBlbG1zID0gZmFsc2U7CisJaWYo
YVswXVsyXSAhPSAgMy4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVszXSAhPSAgNC4wKSBlbG1z
ID0gZmFsc2U7CisJaWYoYVsxXVswXSAhPSAgNS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVsx
XSAhPSAgNi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVsyXSAhPSAgNy4wKSBlbG1zID0gZmFs
c2U7CisJaWYoYVsxXVszXSAhPSAgOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVswXSAhPSAg
OS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVsxXSAhPSAxMC4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYVsyXVsyXSAhPSAxMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVszXSAhPSAxMi4wKSBl
bG1zID0gZmFsc2U7CisJaWYoYVszXVswXSAhPSAxMy4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsz
XVsxXSAhPSAxNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVszXVsyXSAhPSAxNS4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYVszXVszXSAhPSAxNi4wKSBlbG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAg
ZWFjaCByb3cuCisJYm9vbCByb3dzID0gdHJ1ZTsKKwl4ID0gYVswXVswXSArIGFbMV1bMF0gKyBh
WzJdWzBdICsgYVszXVswXTsKKwlpZih4IDwgMjguMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAyOC4w
K0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0gYVswXVsxXSArIGFbMV1bMV0gKyBh
WzJdWzFdICsgYVszXVsxXTsKKwlpZih4IDwgMzIuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAzMi4w
K0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0gYVswXVsyXSArIGFbMV1bMl0gKyBh
WzJdWzJdICsgYVszXVsyXTsKKwlpZih4IDwgMzYuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAzNi4w
K0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0gYVswXVszXSArIGFbMV1bM10gKyBh
WzJdWzNdICsgYVszXVszXTsKKwlpZih4IDwgNDAuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA0MC4w
K0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNvbHVtbiBv
ZiB0aGUgY29weS4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXSAr
IGFbMF1bMl0gKyBhWzBdWzNdOworCWlmKHggPCAxMC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDEw
LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBhWzFdWzBdICsgYVsxXVsxXSAr
IGFbMV1bMl0gKyBhWzFdWzNdOworCWlmKHggPCAyNi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDI2
LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBhWzJdWzBdICsgYVsyXVsxXSAr
IGFbMl1bMl0gKyBhWzJdWzNdOworCWlmKHggPCA0Mi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDQy
LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBhWzNdWzBdICsgYVszXVsxXSAr
IGFbM11bMl0gKyBhWzNdWzNdOworCWlmKHggPCA1OC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDU4
LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYgYWxsIG9mIHRo
ZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxtcyAmJiByb3dz
ICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBBc3NpZ24gdGhlIGZyYWdtZW50IGNvbG9yLgor
CWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbWF0L2NvbnN0X21hdDRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L2Nv
bnN0X21hdDRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMTBhYjc3NTI1Mjc3MTFiMmM3MTE3NmI4
NTBhOWQ3MTY5MDdiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvY29uc3RfbWF0
NF92ZXJ0LnZlcnQKQEAgLTAsMCArMSw3NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
KworI2RlZmluZSBFUlJPUl9FUFNJTE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxv
YXQgeDsKKwkvLyBEZWNsYXJlIGEgY29uc3RhbnQgNCBieSA0IG1hdHJpeCB3aXRoIHVuaXF1ZSBl
bGVtZW50cy4KKwljb25zdCBtYXQ0IGEgPSBtYXQ0KCAgIDEuMCwgICAgMi4wLCAgICAgNC4wLCAg
ICAgOC4wLCAgIC8vIDEuMCAgMTYuMCAgMjU2LjAgIDQwOTYuMAorCSAgICAgICAgICAgICAgICAg
ICAgICAxNi4wLCAgIDMyLjAsICAgIDY0LjAsICAgMTI4LjAsICAgLy8gMi4wICAzMi4wICA1MTIu
MCAgODE5Mi4wCisJICAgICAgICAgICAgICAgICAgICAgMjU2LjAsICA1MTIuMCwgIDEwMjQuMCwg
IDIwNDguMCwgICAvLyA0LjAgIDY0LjAgMTAyNC4wIDE2Mzg0LjAKKwkgICAgICAgICAgICAgICAg
ICAgIDQwOTYuMCwgODE5Mi4wLCAxNjM4NC4wLCAzMjc2OC4wKTsgIC8vIDguMCAxMjguMCAyMDQ4
LjAgMzI3NjguMAorCisJLy8gQ2hlY2sgZWFjaCBlbGVtZW50LgorCWJvb2wgZWxtcyA9IHRydWU7
CisJaWYoYVswXVswXSAhPSAgICAgMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAhPSAg
ICAgMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsyXSAhPSAgICAgNC4wKSBlbG1zID0gZmFs
c2U7CisJaWYoYVswXVszXSAhPSAgICAgOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVswXSAh
PSAgICAxNi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVsxXSAhPSAgICAzMi4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYVsxXVsyXSAhPSAgICA2NC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVsz
XSAhPSAgIDEyOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVswXSAhPSAgIDI1Ni4wKSBlbG1z
ID0gZmFsc2U7CisJaWYoYVsyXVsxXSAhPSAgIDUxMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsy
XVsyXSAhPSAgMTAyNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVszXSAhPSAgMjA0OC4wKSBl
bG1zID0gZmFsc2U7CisJaWYoYVszXVswXSAhPSAgNDA5Ni4wKSBlbG1zID0gZmFsc2U7CisJaWYo
YVszXVsxXSAhPSAgODE5Mi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVszXVsyXSAhPSAxNjM4NC4w
KSBlbG1zID0gZmFsc2U7CisJaWYoYVszXVszXSAhPSAzMjc2OC4wKSBlbG1zID0gZmFsc2U7CisK
KwkvLyBBZGQgdXAgZWFjaCByb3cuCisJYm9vbCByb3dzID0gdHJ1ZTsKKwl4ID0gYVswXVswXSAr
IGFbMV1bMF0gKyBhWzJdWzBdICsgYVszXVswXTsKKwlpZih4IDwgNDM2OS4wLUVSUk9SX0VQU0lM
T04gfHwgeCA+IDQzNjkuMCtFUlJPUl9FUFNJTE9OKSByb3dzID0gZmFsc2U7CisJeCA9IGFbMF1b
MV0gKyBhWzFdWzFdICsgYVsyXVsxXSArIGFbM11bMV07CisJaWYoeCA8IDg3MzguMC1FUlJPUl9F
UFNJTE9OIHx8IHggPiA4NzM4LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBh
WzBdWzJdICsgYVsxXVsyXSArIGFbMl1bMl0gKyBhWzNdWzJdOworCWlmKHggPCAxNzQ3Ni4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDE3NDc2LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOwor
CXggPSBhWzBdWzNdICsgYVsxXVszXSArIGFbMl1bM10gKyBhWzNdWzNdOworCWlmKHggPCAzNDk1
Mi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDM0OTUyLjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZh
bHNlOworCisJLy8gQWRkIHVwIGVhY2ggY29sdW1uLgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9
IGFbMF1bMF0gKyBhWzBdWzFdICsgYVswXVsyXSArIGFbMF1bM107CisJaWYoeCA8IDE1LjAtRVJS
T1JfRVBTSUxPTiB8fCB4ID4gMTUuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9
IGFbMV1bMF0gKyBhWzFdWzFdICsgYVsxXVsyXSArIGFbMV1bM107CisJaWYoeCA8IDI0MC4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDI0MC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4
ID0gYVsyXVswXSArIGFbMl1bMV0gKyBhWzJdWzJdICsgYVsyXVszXTsKKwlpZih4IDwgMzg0MC4w
LUVSUk9SX0VQU0lMT04gfHwgeCA+IDM4NDAuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7
CisJeCA9IGFbM11bMF0gKyBhWzNdWzFdICsgYVszXVsyXSArIGFbM11bM107CisJaWYoeCA8IDYx
NDQwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNjE0NDAuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0g
ZmFsc2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNz
ZnVsLgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKwor
CS8vIEFzc2lnbiB0aGUgdmFyeWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9IHZlYzQoZ3Jh
eSwgZ3JheSwgZ3JheSwgMS4wKTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4IHBvc2l0aW9u
LgorCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvaW5wdXQucnVuLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMDk5OWQ4OGRjZjkyOGY5ZDc4NTQ5
MTFiNTgwMDg4MjIyNTRjNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvaW5wdXQu
cnVuLnR4dApAQCAtMCwwICsxLDcgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBE
TyBOT1QgRURJVC4KK21hdF8wMDFfdG9fMDA4Lmh0bWwKK21hdF8wMDlfdG9fMDE2Lmh0bWwKK21h
dF8wMTdfdG9fMDI0Lmh0bWwKK21hdF8wMjVfdG9fMDMyLmh0bWwKK21hdF8wMzNfdG9fMDQwLmh0
bWwKK21hdF8wNDFfdG9fMDQ2Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyXzJ2
ZWMyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyXzJ2ZWMyX2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNGMzNWQzODdkNmVhNGFiMzFhMzM4OTIwYWZlYzMwNzNlMzVlZTdiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfMnZlYzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjYg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDIgbSA9IG1hdDIoY29sb3IucmcsIGNv
bG9yLmJhKTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQg
cmVzdWx0ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCisJaWYobVswXVswXSAhPSBjb2xv
ci5yKSByZXN1bHQgPSBibGFjazsKKwlpZihtWzBdWzFdICE9IGNvbG9yLmcpIHJlc3VsdCA9IGJs
YWNrOworCWlmKG1bMV1bMF0gIT0gY29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsx
XSAhPSBjb2xvci5hKSByZXN1bHQgPSBibGFjazsKKworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyXzJ2ZWMyX3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdC9tYXQyXzJ2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGJjMWNjMWIzYjkxZmVj
ZGRjZTQ2NWIzOGU0NDYyZDhiMjYzZWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0
L21hdDJfMnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwltYXQyIG0gPSBtYXQyKGd0Zl9Db2xvci5yZywgZ3RmX0NvbG9yLmJhKTsKKwl2ZWM0IGJs
YWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgxLjAs
IDEuMCwgMS4wLCAxLjApOworCisKKwlpZihtWzBdWzBdICE9IGd0Zl9Db2xvci5yKSByZXN1bHQg
PSBibGFjazsKKwlpZihtWzBdWzFdICE9IGd0Zl9Db2xvci5nKSByZXN1bHQgPSBibGFjazsKKwlp
ZihtWzFdWzBdICE9IGd0Zl9Db2xvci5iKSByZXN1bHQgPSBibGFjazsKKwlpZihtWzFdWzFdICE9
IGd0Zl9Db2xvci5hKSByZXN1bHQgPSBibGFjazsKKworCWNvbG9yID0gcmVzdWx0OworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfNGZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXQyXzRmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRkMDNkM2ExOGRiZThlMThl
YzJhMWM5MjVjM2Q4ZDQzYTlmNjI0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9t
YXQyXzRmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyNiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJbWF0MiBtID0gbWF0Mihjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5h
KTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVzdWx0
ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCisJaWYobVswXVswXSAhPSBjb2xvci5yKSBy
ZXN1bHQgPSBibGFjazsKKwlpZihtWzBdWzFdICE9IGNvbG9yLmcpIHJlc3VsdCA9IGJsYWNrOwor
CWlmKG1bMV1bMF0gIT0gY29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsxXSAhPSBj
b2xvci5hKSByZXN1bHQgPSBibGFjazsKKworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyXzRmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
YXQvbWF0Ml80ZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNDUxMWU3M2M1OThhYzJiNDli
ZGI3ODYyOWZkZGIyODU4YmM4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0
Ml80ZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjggQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwltYXQyIG0gPSBtYXQyKGd0Zl9Db2xvci5yLCBndGZfQ29sb3IuZywgZ3RmX0NvbG9yLmIsIGd0
Zl9Db2xvci5hKTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZl
YzQgcmVzdWx0ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCisKKwlpZihtWzBdWzBdICE9
IGd0Zl9Db2xvci5yKSByZXN1bHQgPSBibGFjazsKKwlpZihtWzBdWzFdICE9IGd0Zl9Db2xvci5n
KSByZXN1bHQgPSBibGFjazsKKwlpZihtWzFdWzBdICE9IGd0Zl9Db2xvci5iKSByZXN1bHQgPSBi
bGFjazsKKwlpZihtWzFdWzFdICE9IGd0Zl9Db2xvci5hKSByZXN1bHQgPSBibGFjazsKKworCWNv
bG9yID0gcmVzdWx0OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfY29weV9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0Ml9jb3B5X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ZTk0MWFlNjBjNjFhNDZiNmEwZDIzODI3YmZhN2YyZGM1NGFjZjljCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWF0L21hdDJfY29weV9mcmFnLmZyYWcKQEAgLTAsMCArMSw1NiBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCisvKiBUaGlzIGVwc2lsb24gd2ls
bCB3b3JrIGFzIGxvbmcgYXMgdGhlIG1hZ25pdHVkZSBvZiB0aGUgZmxvYXQgaXMgPCAxMjguCisg
KiBUaGlzIGNhbiBiZSBzZWVuIGJ5IHRha2luZyB0aGUgc3BlYyByZWxhdGl2ZSBtZWRpdW1wIHBy
ZWNpc2lvbiBvZiAyXi0xMDoKKyAqIDAuMTI1IC8gMl4tMTAgPSAxMjgKKyAqLworI2RlZmluZSBF
UlJPUl9FUFNJTE9OICgwLjEyNSkKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHg7CisJ
Ly8gRGVjbGFyZSBhIDIgYnkgMiBtYXRyaXggd2l0aCB1bmlxdWUgZWxlbWVudHMuCisJbWF0MiBh
ID0gbWF0MigxLjAsIDIuMCwgICAvLyAxLjAgNC4wCisJICAgICAgICAgICAgICA0LjAsIDguMCk7
ICAvLyAyLjAgOC4wCisKKwkvLyBDb3B5IHRoZSBtYXRyaXggdG8gYW5vdGhlciBub24tY29uc3Qg
bWF0cml4LgorCW1hdDIgYiA9IGE7CisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQgb2YgdGhlIGNv
cHkuCisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihiWzBdWzBdICE9IDEuMCkgZWxtcyA9IGZhbHNl
OworCWlmKGJbMF1bMV0gIT0gMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVswXSAhPSA0LjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzFdICE9IDguMCkgZWxtcyA9IGZhbHNlOworCisJLy8g
QWRkIHVwIGVhY2ggcm93IG9mIHRoZSBjb3B5LgorCWJvb2wgcm93cyA9IHRydWU7CisJeCA9IGJb
MF1bMF0gKyBiWzFdWzBdOworCWlmKHggPCA1LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNS4wK0VS
Uk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0gYlswXVsxXSArIGJbMV1bMV07CisJaWYo
eCA8IDEwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTAuMCtFUlJPUl9FUFNJTE9OKSByb3dzID0g
ZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCBjb2x1bW4gb2YgdGhlIGNvcHkuCisJYm9vbCBjb2xz
ID0gdHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMF1bMV07CisJaWYoeCA8IDMuMC1FUlJPUl9FUFNJ
TE9OIHx8IHggPiAzLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBiWzFdWzBd
ICsgYlsxXVsxXTsKKwlpZih4IDwgMTIuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxMi4wK0VSUk9S
X0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFsbCBvZiB0aGUgb3BlcmF0
aW9ucyB3ZXJlIHN1Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMgJiYgcm93cyAmJiBjb2xz
ID8gMS4wIDogMC4wOworCisJLy8gQXNzaWduIHRoZSBmcmFnbWVudCBjb2xvci4KKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdC9tYXQyX2NvcHlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfY29weV92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY1OTM1OGQ0ZWM1MGE2N2JmMTY2Yjg2MmM5ZDkzMjE0OWEw
MzQyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyX2NvcHlfdmVydC52ZXJ0
CkBAIC0wLDAgKzEsNTUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKyNkZWZpbmUg
RVJST1JfRVBTSUxPTiAwLjEKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IHg7CisJLy8g
RGVjbGFyZSBhIDIgYnkgMiBtYXRyaXggd2l0aCB1bmlxdWUgZWxlbWVudHMuCisJbWF0MiBhID0g
bWF0MigxLjAsIDIuMCwgICAvLyAxLjAgNC4wCisJICAgICAgICAgICAgICA0LjAsIDguMCk7ICAv
LyAyLjAgOC4wCisKKwkvLyBDb3B5IHRoZSBtYXRyaXggdG8gYW5vdGhlciBub24tY29uc3QgbWF0
cml4LgorCW1hdDIgYiA9IGE7CisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQgb2YgdGhlIGNvcHku
CisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihiWzBdWzBdICE9IDEuMCkgZWxtcyA9IGZhbHNlOwor
CWlmKGJbMF1bMV0gIT0gMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVswXSAhPSA0LjApIGVs
bXMgPSBmYWxzZTsKKwlpZihiWzFdWzFdICE9IDguMCkgZWxtcyA9IGZhbHNlOworCisJLy8gQWRk
IHVwIGVhY2ggcm93IG9mIHRoZSBjb3B5LgorCWJvb2wgcm93cyA9IHRydWU7CisJeCA9IGJbMF1b
MF0gKyBiWzFdWzBdOworCWlmKHggPCA1LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNS4wK0VSUk9S
X0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0gYlswXVsxXSArIGJbMV1bMV07CisJaWYoeCA8
IDEwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTAuMCtFUlJPUl9FUFNJTE9OKSByb3dzID0gZmFs
c2U7CisKKwkvLyBBZGQgdXAgZWFjaCBjb2x1bW4gb2YgdGhlIGNvcHkuCisJYm9vbCBjb2xzID0g
dHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMF1bMV07CisJaWYoeCA8IDMuMC1FUlJPUl9FUFNJTE9O
IHx8IHggPiAzLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBiWzFdWzBdICsg
YlsxXVsxXTsKKwlpZih4IDwgMTIuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxMi4wK0VSUk9SX0VQ
U0lMT04pIGNvbHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFsbCBvZiB0aGUgb3BlcmF0aW9u
cyB3ZXJlIHN1Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMgJiYgcm93cyAmJiBjb2xzID8g
MS4wIDogMC4wOworCisJLy8gQXNzaWduIHRoZSB2YXJ5aW5nIHZhcmlhYmxlIGNvbG9yLgorCWNv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCisJLy8gVHJhbnNmb3JtIHRoZSB2
ZXJ0ZXggcG9zaXRpb24uCisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyX2Zs
b2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyX2Zsb2F0X2ZyYWcuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNTYzMGFmOWNiNzU0NGNlZTllZDYwYmMwYWIyOWIwM2JjNjViM2MxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzEg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDIgbSA9IG1hdDIoMC41KTsKKwl2ZWM0
IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgx
LjAsIDEuMCwgMS4wLCAxLjApOworCisJaWYoKG1bMF1bMF0gIT0gMC41KSkKKwkJcmVzdWx0ID0g
YmxhY2s7CisJaWYoKG1bMF1bMV0gIT0gMC4wKSkKKwkJcmVzdWx0ID0gYmxhY2s7CisKKwlpZigo
bVsxXVswXSAhPSAwLjApKQorCQlyZXN1bHQgPSBibGFjazsKKwlpZigobVsxXVsxXSAhPSAwLjUp
KQorCQlyZXN1bHQgPSBibGFjazsKKworCWdsX0ZyYWdDb2xvciA9IHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML21hdC9tYXQyX2Zsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9t
YXQyX2Zsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWNlYjM2OTcwNzlmMjJmMmQ0ODRjMDZk
ZTMzMzg4Mjk1MWY5NDVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfZmxv
YXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQyIG0gPSBtYXQyKDAuNSk7CisJdmVjNCBibGFj
ayA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwl2ZWM0IHJlc3VsdCA9IHZlYzQoMS4wLCAx
LjAsIDEuMCwgMS4wKTsKKworCWlmKChtWzBdWzBdICE9IDAuNSkpCisJCXJlc3VsdCA9IGJsYWNr
OworCWlmKChtWzBdWzFdICE9IDAuMCkpCisJCXJlc3VsdCA9IGJsYWNrOworCWlmKChtWzFdWzBd
ICE9IDAuMCkpCisJCXJlc3VsdCA9IGJsYWNrOworCWlmKChtWzFdWzFdICE9IDAuNSkpCisJCXJl
c3VsdCA9IGJsYWNrOworCisJY29sb3IgPSByZXN1bHQ7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9tYXQvbWF0Ml9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0Ml9mcmFnLmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY1OTQ5ZDk0MjkxYWI1YjI0NzY0ZDNkZjA0ODA0MjE2MzM4NDI5MwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDUzIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisKKy8qIFRoaXMgZXBzaWxv
biB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBmbG9hdCBpcyA8IDEy
OC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJlbGF0aXZlIG1lZGl1
bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEyOAorICovCisjZGVm
aW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQg
eDsKKwkvLyBEZWNsYXJlIGEgMiBieSAyIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwlt
YXQyIGEgPSBtYXQyKDEuMCwgMi4wLCAgIC8vIDEuMCA0LjAKKwkgICAgICAgICAgICAgIDQuMCwg
OC4wKTsgIC8vIDIuMCA4LjAKKworCS8vIENoZWNrIGVhY2ggZWxlbWVudC4KKwlib29sIGVsbXMg
PSB0cnVlOworCWlmKGFbMF1bMF0gIT0gMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAh
PSAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzBdICE9IDQuMCkgZWxtcyA9IGZhbHNlOwor
CWlmKGFbMV1bMV0gIT0gOC4wKSBlbG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cu
CisJYm9vbCByb3dzID0gdHJ1ZTsKKwl4ID0gYVswXVswXSArIGFbMV1bMF07CisJaWYoeCA8IDUu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiA1LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOwor
CXggPSBhWzBdWzFdICsgYVsxXVsxXTsKKwlpZih4IDwgMTAuMC1FUlJPUl9FUFNJTE9OIHx8IHgg
PiAxMC4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNv
bHVtbi4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXTsKKwlpZih4
IDwgMy4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDMuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFs
c2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFdOworCWlmKHggPCAxMi4wLUVSUk9SX0VQU0lMT04g
fHwgeCA+IDEyLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYg
YWxsIG9mIHRoZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxt
cyAmJiByb3dzICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBBc3NpZ24gdGhlIGZyYWdtZW50
IGNvbG9yLgorCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0
L21hdDJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMmI0NmZkMmUwZjM4YjA3MGMzY2I0OWY3ZDZj
MGQwMjgxZjRlYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0Ml92ZXJ0LnZl
cnQKQEAgLTAsMCArMSw1MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmlu
ZSBFUlJPUl9FUFNJTE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkv
LyBEZWNsYXJlIGEgMiBieSAyIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwltYXQyIGEg
PSBtYXQyKDEuMCwgMi4wLCAgIC8vIDEuMCA0LjAKKwkgICAgICAgICAgICAgIDQuMCwgOC4wKTsg
IC8vIDIuMCA4LjAKKworCS8vIENoZWNrIGVhY2ggZWxlbWVudC4KKwlib29sIGVsbXMgPSB0cnVl
OworCWlmKGFbMF1bMF0gIT0gMS4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsxXSAhPSAyLjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzBdICE9IDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFb
MV1bMV0gIT0gOC4wKSBlbG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cuCisJYm9v
bCByb3dzID0gdHJ1ZTsKKwl4ID0gYVswXVswXSArIGFbMV1bMF07CisJaWYoeCA8IDUuMC1FUlJP
Ul9FUFNJTE9OIHx8IHggPiA1LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBh
WzBdWzFdICsgYVsxXVsxXTsKKwlpZih4IDwgMTAuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxMC4w
K0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNvbHVtbi4K
Kwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXTsKKwlpZih4IDwgMy4w
LUVSUk9SX0VQU0lMT04gfHwgeCA+IDMuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJ
eCA9IGFbMV1bMF0gKyBhWzFdWzFdOworCWlmKHggPCAxMi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+
IDEyLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYgYWxsIG9m
IHRoZSBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxtcyAmJiBy
b3dzICYmIGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBBc3NpZ24gdGhlIHZhcnlpbmcgdmFyaWFi
bGUgY29sb3IuCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisKKwkvLyBU
cmFuc2Zvcm0gdGhlIHZlcnRleCBwb3NpdGlvbi4KKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbWF0L21hdDNfM3ZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDNfM3ZlYzNfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIwNDBlMGIyZTVkODVmNmIzMjQyNDVmYjM4YmU2NTdhY2Y0ODdi
OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M18zdmVjM19mcmFnLmZyYWcK
QEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWF0MyBtID0gbWF0
Myhjb2xvci5yZ2IsIGNvbG9yLnJnYiwgY29sb3IucmdiKTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgw
LjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAx
LjApOworCisJaWYobVswXVswXSAhPSBjb2xvci5yKSByZXN1bHQgPSBibGFjazsKKwlpZihtWzBd
WzFdICE9IGNvbG9yLmcpIHJlc3VsdCA9IGJsYWNrOworCWlmKG1bMF1bMl0gIT0gY29sb3IuYikg
cmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVswXSAhPSBjb2xvci5yKSByZXN1bHQgPSBibGFjazsK
KwlpZihtWzFdWzFdICE9IGNvbG9yLmcpIHJlc3VsdCA9IGJsYWNrOworCWlmKG1bMV1bMl0gIT0g
Y29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsyXVswXSAhPSBjb2xvci5yKSByZXN1bHQg
PSBibGFjazsKKwlpZihtWzJdWzFdICE9IGNvbG9yLmcpIHJlc3VsdCA9IGJsYWNrOworCWlmKG1b
Ml1bMl0gIT0gY29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisKKwlnbF9GcmFnQ29sb3IgPSByZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M18zdmVjM192ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9tYXQvbWF0M18zdmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlNzlkMGMzYmIx
Mzc3N2U2MzVkMzc0YjUzYmIzNzlhNDE0ZWU0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXQzXzN2ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDMyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29s
b3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJbWF0MyBtID0gbWF0MyhndGZfQ29sb3IucmdiLCBndGZfQ29sb3IucmdiLCBndGZf
Q29sb3IucmdiKTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZl
YzQgcmVzdWx0ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCisJaWYobVswXVswXSAhPSBn
dGZfQ29sb3IucikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVswXVsxXSAhPSBndGZfQ29sb3IuZykg
cmVzdWx0ID0gYmxhY2s7CisJaWYobVswXVsyXSAhPSBndGZfQ29sb3IuYikgcmVzdWx0ID0gYmxh
Y2s7CisJaWYobVsxXVswXSAhPSBndGZfQ29sb3IucikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsx
XVsxXSAhPSBndGZfQ29sb3IuZykgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsyXSAhPSBndGZf
Q29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsyXVswXSAhPSBndGZfQ29sb3IucikgcmVz
dWx0ID0gYmxhY2s7CisJaWYobVsyXVsxXSAhPSBndGZfQ29sb3IuZykgcmVzdWx0ID0gYmxhY2s7
CisJaWYobVsyXVsyXSAhPSBndGZfQ29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisKKwljb2xvciA9
IHJlc3VsdDsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICog
Z3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzXzlmbG9hdF9mcmFn
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M185ZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFj
NTRmNjE2MmRjNDYzNzZkY2NhNDYzZmE0N2EwYmE4YzZlM2MzYWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9tYXQvbWF0M185ZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDMgbSA9IG1hdDMoY29sb3IuciwgY29sb3IuZywg
Y29sb3IuYiwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuciwgY29sb3IuZywgY29s
b3IuYik7CisJdmVjNCBibGFjayA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwl2ZWM0IHJl
c3VsdCA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKworCWlmKG1bMF1bMF0gIT0gY29sb3Iu
cikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVswXVsxXSAhPSBjb2xvci5nKSByZXN1bHQgPSBibGFj
azsKKwlpZihtWzBdWzJdICE9IGNvbG9yLmIpIHJlc3VsdCA9IGJsYWNrOworCWlmKG1bMV1bMF0g
IT0gY29sb3IucikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsxXSAhPSBjb2xvci5nKSByZXN1
bHQgPSBibGFjazsKKwlpZihtWzFdWzJdICE9IGNvbG9yLmIpIHJlc3VsdCA9IGJsYWNrOworCWlm
KG1bMl1bMF0gIT0gY29sb3IucikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsyXVsxXSAhPSBjb2xv
ci5nKSByZXN1bHQgPSBibGFjazsKKwlpZihtWzJdWzJdICE9IGNvbG9yLmIpIHJlc3VsdCA9IGJs
YWNrOworCisJZ2xfRnJhZ0NvbG9yID0gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWF0L21hdDNfOWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzXzlmbG9hdF92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTc1MmU1Nzk5ZGVlYzZjNjdlYTI3ZmNkY2FhODA2NWIzZWJkMTQ4
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzXzlmbG9hdF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwzMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDMgbSA9IG1hdDMoZ3Rm
X0NvbG9yLnIsIGd0Zl9Db2xvci5nLCBndGZfQ29sb3IuYiwgZ3RmX0NvbG9yLnIsIGd0Zl9Db2xv
ci5nLCBndGZfQ29sb3IuYiwgZ3RmX0NvbG9yLnIsIGd0Zl9Db2xvci5nLCBndGZfQ29sb3IuYik7
CisJdmVjNCBibGFjayA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKwl2ZWM0IHJlc3VsdCA9
IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKworCisJaWYobVswXVswXSAhPSBndGZfQ29sb3Iu
cikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVswXVsxXSAhPSBndGZfQ29sb3IuZykgcmVzdWx0ID0g
YmxhY2s7CisJaWYobVswXVsyXSAhPSBndGZfQ29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisJaWYo
bVsxXVswXSAhPSBndGZfQ29sb3IucikgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsxXSAhPSBn
dGZfQ29sb3IuZykgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsxXVsyXSAhPSBndGZfQ29sb3IuYikg
cmVzdWx0ID0gYmxhY2s7CisJaWYobVsyXVswXSAhPSBndGZfQ29sb3IucikgcmVzdWx0ID0gYmxh
Y2s7CisJaWYobVsyXVsxXSAhPSBndGZfQ29sb3IuZykgcmVzdWx0ID0gYmxhY2s7CisJaWYobVsy
XVsyXSAhPSBndGZfQ29sb3IuYikgcmVzdWx0ID0gYmxhY2s7CisKKwljb2xvciA9IHJlc3VsdDsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzX2NvcHlfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF0L21hdDNfY29weV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VhZDFlN2EyMDAzMzA4
OTBjZDZkYjMyYzJmMWU1NTNhNWNkZTk5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21h
dC9tYXQzX2NvcHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNjYgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLyogVGhpcyBlcHNpbG9uIHdpbGwgd29yayBhcyBsb25n
IGFzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGZsb2F0IGlzIDwgMTI4LgorICogVGhpcyBjYW4gYmUg
c2VlbiBieSB0YWtpbmcgdGhlIHNwZWMgcmVsYXRpdmUgbWVkaXVtcCBwcmVjaXNpb24gb2YgMl4t
MTA6CisgKiAwLjEyNSAvIDJeLTEwID0gMTI4CisgKi8KKyNkZWZpbmUgRVJST1JfRVBTSUxPTiAo
MC4xMjUpCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8vIERlY2xhcmUgYSAz
IGJ5IDMgbWF0cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgorCW1hdDMgYSA9IG1hdDMoIDEuMCwg
Mi4wLCAzLjAsCisJICAgICAgICAgICAgICAgNC4wLCA1LjAsIDYuMCwKKwkgICAgICAgICAgICAg
ICA3LjAsIDguMCwgOS4wKTsKKworCS8vIENvcHkgdGhlIG1hdHJpeCB0byBhbm90aGVyIG5vbi1j
b25zdCBtYXRyaXguCisJbWF0MyBiID0gYTsKKworCS8vIENoZWNrIGVhY2ggZWxlbWVudCBvZiB0
aGUgY29weS4KKwlib29sIGVsbXMgPSB0cnVlOworCWlmKGJbMF1bMF0gIT0gMS4wKSBlbG1zID0g
ZmFsc2U7CisJaWYoYlswXVsxXSAhPSAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzJdICE9
IDMuMCkgZWxtcyA9IGZhbHNlOworCWlmKGJbMV1bMF0gIT0gNC4wKSBlbG1zID0gZmFsc2U7CisJ
aWYoYlsxXVsxXSAhPSA1LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzJdICE9IDYuMCkgZWxt
cyA9IGZhbHNlOworCWlmKGJbMl1bMF0gIT0gNy4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVsx
XSAhPSA4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzJdICE9IDkuMCkgZWxtcyA9IGZhbHNl
OworCisJLy8gQWRkIHVwIGVhY2ggcm93IG9mIHRoZSBjb3B5LgorCWJvb2wgcm93cyA9IHRydWU7
CisJeCA9IGJbMF1bMF0gKyBiWzFdWzBdICsgYlsyXVswXTsKKwlpZiggeCA8IDEyLjAtRVJST1Jf
RVBTSUxPTiB8fCB4ID4gMTIuMCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNlOworCXggPSBi
WzBdWzFdICsgYlsxXVsxXSArIGJbMl1bMV07CisJaWYoeCA8IDE1LjAtRVJST1JfRVBTSUxPTiB8
fCB4ID4gMTUuMCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNlOworCXggPSBiWzBdWzJdICsg
YlsxXVsyXSArIGJbMl1bMl07CisJaWYoeCA8IDE4LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTgu
MCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggY29sdW1u
IG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9IGJbMF1bMF0gKyBiWzBdWzFd
ICsgYlswXVsyXTsKKwlpZiggeCA8IDYuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA2LjArRVJST1Jf
RVBTSUxPTiApIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsxXVswXSArIGJbMV1bMV0gKyBiWzFdWzJd
OworCWlmKHggPCAxNS4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDE1LjArRVJST1JfRVBTSUxPTikg
Y29scyA9IGZhbHNlOworCXggPSBiWzJdWzBdICsgYlsyXVsxXSArIGJbMl1bMl07CisJaWYoeCA8
IDI0LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMjQuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFs
c2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVs
LgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8v
IEFzc2lnbiB0aGUgZnJhZ21lbnQgY29sb3IuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBn
cmF5LCBncmF5LCAxLjApOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M19jb3B5
X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzX2NvcHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0MzJhYmE1MDRkNDUwOTBiNWM5MGEwZTkxNzE4NjhkOWMwN2E1ZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvbWF0M19jb3B5X3ZlcnQudmVydApAQCAtMCwwICsxLDY1IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gMC4xCisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8vIERlY2xhcmUgYSAzIGJ5IDMgbWF0
cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgorCW1hdDMgYSA9IG1hdDMoIDEuMCwgICAyLjAsICAg
NC4wLCAgIC8vIDEuMCAgOC4wICA2NC4wCisJICAgICAgICAgICAgICAgOC4wLCAgMTYuMCwgIDMy
LjAsICAgLy8gMi4wIDE2LjAgMTI4LjAKKwkgICAgICAgICAgICAgIDY0LjAsIDEyOC4wLCAyNTYu
MCk7ICAvLyA0LjAgMzIuMCAyNTYuMAorCisJLy8gQ29weSB0aGUgbWF0cml4IHRvIGFub3RoZXIg
bm9uLWNvbnN0IG1hdHJpeC4KKwltYXQzIGIgPSBhOworCisJLy8gQ2hlY2sgZWFjaCBlbGVtZW50
IG9mIHRoZSBjb3B5LgorCWJvb2wgZWxtcyA9IHRydWU7CisJaWYoYlswXVswXSAhPSAgIDEuMCkg
ZWxtcyA9IGZhbHNlOworCWlmKGJbMF1bMV0gIT0gICAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihi
WzBdWzJdICE9ICAgNC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsxXVswXSAhPSAgIDguMCkgZWxt
cyA9IGZhbHNlOworCWlmKGJbMV1bMV0gIT0gIDE2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFd
WzJdICE9ICAzMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYlsyXVswXSAhPSAgNjQuMCkgZWxtcyA9
IGZhbHNlOworCWlmKGJbMl1bMV0gIT0gMTI4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzJd
ICE9IDI1Ni4wKSBlbG1zID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCByb3cgb2YgdGhlIGNv
cHkuCisJYm9vbCByb3dzID0gdHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMV1bMF0gKyBiWzJdWzBd
OworCWlmKCB4IDwgNzMuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA3My4wK0VSUk9SX0VQU0lMT04g
KSByb3dzID0gZmFsc2U7CisJeCA9IGJbMF1bMV0gKyBiWzFdWzFdICsgYlsyXVsxXTsKKwlpZih4
IDwgMTQ2LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTQ2LjArRVJST1JfRVBTSUxPTiApIHJvd3Mg
PSBmYWxzZTsKKwl4ID0gYlswXVsyXSArIGJbMV1bMl0gKyBiWzJdWzJdOworCWlmKHggPCAyOTIu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAyOTIuMCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNl
OworCisJLy8gQWRkIHVwIGVhY2ggY29sdW1uIG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRy
dWU7CisJeCA9IGJbMF1bMF0gKyBiWzBdWzFdICsgYlswXVsyXTsKKwlpZiggeCA8IDcuMC1FUlJP
Ul9FUFNJTE9OIHx8IHggPiA3LjArRVJST1JfRVBTSUxPTiApIGNvbHMgPSBmYWxzZTsKKwl4ID0g
YlsxXVswXSArIGJbMV1bMV0gKyBiWzFdWzJdOworCWlmKHggPCA1Ni4wLUVSUk9SX0VQU0lMT04g
fHwgeCA+IDU2LjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBiWzJdWzBdICsg
YlsyXVsxXSArIGJbMl1bMl07CisJaWYoeCA8IDQ0OC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDQ0
OC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFsbCBvZiB0
aGUgb3BlcmF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMgJiYgcm93
cyAmJiBjb2xzID8gMS4wIDogMC4wOworCisJLy8gQXNzaWduIHRoZSB2YXJ5aW5nIHZhcmlhYmxl
IGNvbG9yLgorCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCisJLy8gVHJh
bnNmb3JtIHRoZSB2ZXJ0ZXggcG9zaXRpb24uCisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXQzX2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQzX2Zsb2F0X2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNmQ5NjYyYmM4NjE0YTE4MTQ0YTgwMTk0YjhkMWNiOTJjNjliYWU1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDNfZmxvYXRfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsNDIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCW1hdDMgbSA9IG1hdDMo
MC41KTsKKwl2ZWM0IGJsYWNrID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVz
dWx0ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworCisJaWYoKG1bMF1bMF0gIT0gMC41KSkK
KwkJcmVzdWx0ID0gYmxhY2s7CisJaWYoKG1bMF1bMV0gIT0gMC4wKSkKKwkJcmVzdWx0ID0gYmxh
Y2s7CisJaWYoKG1bMF1bMl0gIT0gMC4wKSkKKwkJcmVzdWx0ID0gYmxhY2s7CisKKwlpZigobVsx
XVswXSAhPSAwLjApKQorCQlyZXN1bHQgPSBibGFjazsKKwlpZigobVsxXVsxXSAhPSAwLjUpKQor
CQlyZXN1bHQgPSBibGFjazsKKwlpZigobVsxXVsyXSAhPSAwLjApKQorCQlyZXN1bHQgPSBibGFj
azsKKworCWlmKChtWzJdWzBdICE9IDAuMCkpCisJCXJlc3VsdCA9IGJsYWNrOworCWlmKChtWzJd
WzFdICE9IDAuMCkpCisJCXJlc3VsdCA9IGJsYWNrOworCWlmKChtWzJdWzJdICE9IDAuNSkpCisJ
CXJlc3VsdCA9IGJsYWNrOworCisJZ2xfRnJhZ0NvbG9yID0gcmVzdWx0OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWF0L21hdDNfZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDNf
ZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZTg0NmQxYjcxOTBiZjkwMGI5M2FjMzc4NTRi
OWViNjNlMjg2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M19mbG9hdF92
ZXJ0LnZlcnQKQEAgLTAsMCArMSw0MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCW1hdDMgbSA9IG1hdDMoMC41KTsKKwl2ZWM0IGJsYWNrID0g
dmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworCXZlYzQgcmVzdWx0ID0gdmVjNCgxLjAsIDEuMCwg
MS4wLCAxLjApOworCisJaWYoKG1bMF1bMF0gIT0gMC41KSkKKwkJcmVzdWx0ID0gYmxhY2s7CisJ
aWYoKG1bMF1bMV0gIT0gMC4wKSkKKwkJcmVzdWx0ID0gYmxhY2s7CisJaWYoKG1bMF1bMl0gIT0g
MC4wKSkKKwkJcmVzdWx0ID0gYmxhY2s7CisKKwlpZigobVsxXVswXSAhPSAwLjApKQorCQlyZXN1
bHQgPSBibGFjazsKKwlpZigobVsxXVsxXSAhPSAwLjUpKQorCQlyZXN1bHQgPSBibGFjazsKKwlp
ZigobVsxXVsyXSAhPSAwLjApKQorCQlyZXN1bHQgPSBibGFjazsKKworCWlmKChtWzJdWzBdICE9
IDAuMCkpCisJCXJlc3VsdCA9IGJsYWNrOworCWlmKChtWzJdWzFdICE9IDAuMCkpCisJCXJlc3Vs
dCA9IGJsYWNrOworCWlmKChtWzJdWzJdICE9IDAuNSkpCisJCXJlc3VsdCA9IGJsYWNrOworCisJ
Y29sb3IgPSByZXN1bHQ7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M19mcmFn
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiYzNlMGI4
ZjA1ZjZmYjczODQxZTAwYjk1NTU5ZTQ5ZjM0ZmE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdC9tYXQzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDYzIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCisKKy8qIFRoaXMgZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9u
ZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBmbG9hdCBpcyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJl
IHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJlbGF0aXZlIG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJe
LTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEyOAorICovCisjZGVmaW5lIEVSUk9SX0VQU0lMT04g
KDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEg
MyBieSAzIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwltYXQzIGEgPSBtYXQzKCAxLjAs
IDIuMCwgMy4wLAorCSAgICAgICAgICAgICAgIDQuMCwgNS4wLCA2LjAsCisJICAgICAgICAgICAg
ICAgNy4wLCA4LjAsIDkuMCk7CisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQuCisJYm9vbCBlbG1z
ID0gdHJ1ZTsKKwlpZihhWzBdWzBdICE9IDEuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMF1bMV0g
IT0gMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsyXSAhPSAzLjApIGVsbXMgPSBmYWxzZTsK
KwlpZihhWzFdWzBdICE9IDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMV1bMV0gIT0gNS4wKSBl
bG1zID0gZmFsc2U7CisJaWYoYVsxXVsyXSAhPSA2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJd
WzBdICE9IDcuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMl1bMV0gIT0gOC4wKSBlbG1zID0gZmFs
c2U7CisJaWYoYVsyXVsyXSAhPSA5LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNo
IHJvdy4KKwlib29sIHJvd3MgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVsxXVswXSArIGFbMl1b
MF07CisJaWYoIHggPCAxMi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDEyLjArRVJST1JfRVBTSUxP
TiApIHJvd3MgPSBmYWxzZTsKKwl4ID0gYVswXVsxXSArIGFbMV1bMV0gKyBhWzJdWzFdOworCWlm
KHggPCAxNS4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDE1LjArRVJST1JfRVBTSUxPTiApIHJvd3Mg
PSBmYWxzZTsKKwl4ID0gYVswXVsyXSArIGFbMV1bMl0gKyBhWzJdWzJdOworCWlmKHggPCAxOC4w
LUVSUk9SX0VQU0lMT04gfHwgeCA+IDE4LjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsK
KworCS8vIEFkZCB1cCBlYWNoIGNvbHVtbiBvZiB0aGUgY29weS4KKwlib29sIGNvbHMgPSB0cnVl
OworCXggPSBhWzBdWzBdICsgYVswXVsxXSArIGFbMF1bMl07CisJaWYoIHggPCA2LjAtRVJST1Jf
RVBTSUxPTiB8fCB4ID4gNi4wK0VSUk9SX0VQU0lMT04gKSBjb2xzID0gZmFsc2U7CisJeCA9IGFb
MV1bMF0gKyBhWzFdWzFdICsgYVsxXVsyXTsKKwlpZih4IDwgMTUuMC1FUlJPUl9FUFNJTE9OIHx8
IHggPiAxNS4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYVsyXVswXSArIGFb
Ml1bMV0gKyBhWzJdWzJdOworCWlmKHggPCAyNC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDI0LjAr
RVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCisJLy8gQ2hlY2sgaWYgYWxsIG9mIHRoZSBv
cGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC4KKwlmbG9hdCBncmF5ID0gZWxtcyAmJiByb3dzICYm
IGNvbHMgPyAxLjAgOiAwLjA7CisKKwkvLyBBc3NpZ24gdGhlIGZyYWdtZW50IGNvbG9yLgorCWds
X0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWF0L21hdDNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDNfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZmZWU3M2I5NTlkZTVjM2E3YjdmMzkwN2YxZWM2OWE2YjVmOWQ4NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0M192ZXJ0LnZlcnQKQEAgLTAsMCAr
MSw2MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmluZSBFUlJPUl9FUFNJ
TE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgeDsKKwkvLyBEZWNsYXJlIGEg
MyBieSAzIG1hdHJpeCB3aXRoIHVuaXF1ZSBlbGVtZW50cy4KKwltYXQzIGEgPSBtYXQzKCAxLjAs
ICAgMi4wLCAgIDQuMCwgICAvLyAxLjAgIDguMCAgNjQuMAorCSAgICAgICAgICAgICAgIDguMCwg
IDE2LjAsICAzMi4wLCAgIC8vIDIuMCAxNi4wIDEyOC4wCisJICAgICAgICAgICAgICA2NC4wLCAx
MjguMCwgMjU2LjApOyAgLy8gNC4wIDMyLjAgMjU2LjAKKworCS8vIENoZWNrIGVhY2ggZWxlbWVu
dC4KKwlib29sIGVsbXMgPSB0cnVlOworCWlmKGFbMF1bMF0gIT0gICAxLjApIGVsbXMgPSBmYWxz
ZTsKKwlpZihhWzBdWzFdICE9ICAgMi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVswXVsyXSAhPSAg
IDQuMCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMV1bMF0gIT0gICA4LjApIGVsbXMgPSBmYWxzZTsK
KwlpZihhWzFdWzFdICE9ICAxNi4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsxXVsyXSAhPSAgMzIu
MCkgZWxtcyA9IGZhbHNlOworCWlmKGFbMl1bMF0gIT0gIDY0LjApIGVsbXMgPSBmYWxzZTsKKwlp
ZihhWzJdWzFdICE9IDEyOC4wKSBlbG1zID0gZmFsc2U7CisJaWYoYVsyXVsyXSAhPSAyNTYuMCkg
ZWxtcyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggcm93LgorCWJvb2wgcm93cyA9IHRydWU7
CisJeCA9IGFbMF1bMF0gKyBhWzFdWzBdICsgYVsyXVswXTsKKwlpZiggeCA8IDczLjAtRVJST1Jf
RVBTSUxPTiB8fCB4ID4gNzMuMCtFUlJPUl9FUFNJTE9OICkgcm93cyA9IGZhbHNlOworCXggPSBh
WzBdWzFdICsgYVsxXVsxXSArIGFbMl1bMV07CisJaWYoeCA8IDE0Ni4wLUVSUk9SX0VQU0lMT04g
fHwgeCA+IDE0Ni4wK0VSUk9SX0VQU0lMT04gKSByb3dzID0gZmFsc2U7CisJeCA9IGFbMF1bMl0g
KyBhWzFdWzJdICsgYVsyXVsyXTsKKwlpZih4IDwgMjkyLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4g
MjkyLjArRVJST1JfRVBTSUxPTiApIHJvd3MgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIGNv
bHVtbi4KKwlib29sIGNvbHMgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVswXVsxXSArIGFbMF1b
Ml07CisJaWYoIHggPCA3LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNy4wK0VSUk9SX0VQU0lMT04g
KSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFdICsgYVsxXVsyXTsKKwlpZih4
IDwgNTYuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA1Ni4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBm
YWxzZTsKKwl4ID0gYVsyXVswXSArIGFbMl1bMV0gKyBhWzJdWzJdOworCWlmKHggPCA0NDguMC1F
UlJPUl9FUFNJTE9OIHx8IHggPiA0NDguMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisK
KwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVsLgorCWZs
b2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8vIEFzc2ln
biB0aGUgdmFyeWluZyB2YXJpYWJsZSBjb2xvci4KKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwg
Z3JheSwgMS4wKTsKKworCS8vIFRyYW5zZm9ybSB0aGUgdmVydGV4IHBvc2l0aW9uLgorCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF8xNmZsb2F0X2ZyYWcuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdC9tYXQ0XzE2ZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YTgwNzY5OTk3MWVm
YThlNzZkMzczNGVlM2M4MzllOGZkNWY3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
YXQvbWF0NF8xNmZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDU3IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8qIFRoaXMg
ZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBmbG9hdCBp
cyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJlbGF0aXZl
IG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEyOAorICov
CisjZGVmaW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
bWF0NCBhID0gbWF0NCggMS4wLCAyLjAsIDMuMCwgNC4wLAorCQkJCSAgIDUuMCwgNi4wLCA3LjAs
IDguMCwKKyAgICAgICAgICAgICAgICAgICA5LjAsIDEwLjAsIDExLjAsIDEyLjAsCisgICAgICAg
ICAgICAgICAgICAxMy4wLCAxNC4wLCAxNS4wLCAxNi4wKTsKKwlmbG9hdCBncmF5LHN1bTE9MC4w
LHN1bTI9MC4wLHN1bTM9MC4wLHN1bTQ9MC4wOworCWludCBpOworCisKKwlzdW0xICs9IGFbMF1b
MF07CisJc3VtMiArPSBhWzFdWzBdOworCXN1bTMgKz0gYVsyXVswXTsKKwlzdW00ICs9IGFbM11b
MF07CisKKwlzdW0xICs9IGFbMF1bMV07CisJc3VtMiArPSBhWzFdWzFdOworCXN1bTMgKz0gYVsy
XVsxXTsKKwlzdW00ICs9IGFbM11bMV07CisKKwlzdW0xICs9IGFbMF1bMl07CisJc3VtMiArPSBh
WzFdWzJdOworCXN1bTMgKz0gYVsyXVsyXTsKKwlzdW00ICs9IGFbM11bMl07CisKKwlzdW0xICs9
IGFbMF1bM107CisJc3VtMiArPSBhWzFdWzNdOworCXN1bTMgKz0gYVsyXVszXTsKKwlzdW00ICs9
IGFbM11bM107CisKKwlpZiggKCBzdW0xID4gMTAuMC1FUlJPUl9FUFNJTE9OICYmIHN1bTEgPCAx
MC4wK0VSUk9SX0VQU0lMT04gICkgJiYKKwkJKCBzdW0yID4gMjYuMC1FUlJPUl9FUFNJTE9OICYm
IHN1bTIgPCAyNi4wK0VSUk9SX0VQU0lMT04pICYmCisJCSggc3VtMyA+IDQyLjAtRVJST1JfRVBT
SUxPTiAmJiBzdW0zIDwgNDIuMCtFUlJPUl9FUFNJTE9OKSAmJgorCQkoIHN1bTQgPiA1OC4wLUVS
Uk9SX0VQU0lMT04gJiYgc3VtNCA8IDU4LjArRVJST1JfRVBTSUxPTikgKQorCWdyYXk9MS4wOwor
CWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDRfMTZmbG9hdF92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9tYXQvbWF0NF8xNmZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTM2MjJm
Njc5YTliNjJiNTk4MDk2MzE0OWIyYzc3OGM2NmU5ZTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF0L21hdDRfMTZmbG9hdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSw1NCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmluZSBFUlJPUl9FUFNJTE9OIDAuMQorCit2b2lk
IG1haW4gKHZvaWQpCit7CisJbWF0NCBhID0gbWF0NCgxLjAsIDIuMCwgMy4wLCA0LjAsCisJCSAg
ICAgIDUuMCwgNi4wLCA3LjAsIDguMCwKKyAgICAgICAgICAgICAgICAgICAgICA5LjAsIDEwLjAs
IDExLjAsIDEyLjAsCisgICAgICAgICAgICAgICAgICAgICAgMTMuMCwgMTQuMCwgMTUuMCwgMTYu
MCk7CisKKwlmbG9hdCBncmF5LHN1bTE9MC4wLHN1bTI9MC4wLHN1bTM9MC4wLHN1bTQ9MC4wOwor
CWludCBpOworCisJc3VtMSA9IHN1bTEgKyBhWzBdWzBdOworCXN1bTIgPSBzdW0yICsgYVsxXVsw
XTsKKwlzdW0zID0gc3VtMyArIGFbMl1bMF07CisJc3VtNCA9IHN1bTQgKyBhWzNdWzBdOworCisJ
c3VtMSA9IHN1bTEgKyBhWzBdWzFdOworCXN1bTIgPSBzdW0yICsgYVsxXVsxXTsKKwlzdW0zID0g
c3VtMyArIGFbMl1bMV07CisJc3VtNCA9IHN1bTQgKyBhWzNdWzFdOworCisJc3VtMSA9IHN1bTEg
KyBhWzBdWzJdOworCXN1bTIgPSBzdW0yICsgYVsxXVsyXTsKKwlzdW0zID0gc3VtMyArIGFbMl1b
Ml07CisJc3VtNCA9IHN1bTQgKyBhWzNdWzJdOworCisJc3VtMSA9IHN1bTEgKyBhWzBdWzNdOwor
CXN1bTIgPSBzdW0yICsgYVsxXVszXTsKKwlzdW0zID0gc3VtMyArIGFbMl1bM107CisJc3VtNCA9
IHN1bTQgKyBhWzNdWzNdOworCisJaWYoICggc3VtMSA+IDEwLjAtRVJST1JfRVBTSUxPTiAmJiBz
dW0xIDwgMTAuMCtFUlJPUl9FUFNJTE9OICApICYmCisJCSggc3VtMiA+IDI2LjAtRVJST1JfRVBT
SUxPTiAmJiBzdW0yIDwgMjYuMCtFUlJPUl9FUFNJTE9OKSAmJgorCQkoIHN1bTMgPiA0Mi4wLUVS
Uk9SX0VQU0lMT04gJiYgc3VtMyA8IDQyLjArRVJST1JfRVBTSUxPTikgJiYKKwkJKCBzdW00ID4g
NTguMC1FUlJPUl9FUFNJTE9OICYmIHN1bTQgPCA1OC4wK0VSUk9SX0VQU0lMT04pICkKKwlncmF5
PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF80dmVjNF9mcmFnLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF80dmVjNF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzYTU3
MzliMzQzNzIxZmY3YmY0NmUzNTc5ZjVjMWIwYmE2MmQ3MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdC9tYXQ0XzR2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDU5IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKKy8q
IFRoaXMgZXBzaWxvbiB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgbWFnbml0dWRlIG9mIHRoZSBm
bG9hdCBpcyA8IDEyOC4KKyAqIFRoaXMgY2FuIGJlIHNlZW4gYnkgdGFraW5nIHRoZSBzcGVjIHJl
bGF0aXZlIG1lZGl1bXAgcHJlY2lzaW9uIG9mIDJeLTEwOgorICogMC4xMjUgLyAyXi0xMCA9IDEy
OAorICovCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gKDAuMTI1KQorCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjNCBMMSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKwl2ZWM0IEwyID0gdmVj
NCg1LjAsIDYuMCwgNy4wLCA4LjApOworCXZlYzQgTDMgPSB2ZWM0KDkuMCwgMTAuMCwgMTEuMCwg
MTIuMCk7CisJdmVjNCBMNCA9IHZlYzQoMTMuMCwgMTQuMCwgMTUuMCwgMTYuMCk7CisKKwltYXQ0
IGEgPSBtYXQ0KEwxLEwyLEwzLEw0KTsKKworCWZsb2F0IGdyYXksc3VtMT0wLjAsc3VtMj0wLjAs
c3VtMz0wLjAsc3VtND0wLjA7CisJaW50IGk7CisKKwlzdW0xID0gc3VtMSArIGFbMF1bMF07CisJ
c3VtMiA9IHN1bTIgKyBhWzFdWzBdOworCXN1bTMgPSBzdW0zICsgYVsyXVswXTsKKwlzdW00ID0g
c3VtNCArIGFbM11bMF07CisKKwlzdW0xID0gc3VtMSArIGFbMF1bMV07CisJc3VtMiA9IHN1bTIg
KyBhWzFdWzFdOworCXN1bTMgPSBzdW0zICsgYVsyXVsxXTsKKwlzdW00ID0gc3VtNCArIGFbM11b
MV07CisKKwlzdW0xID0gc3VtMSArIGFbMF1bMl07CisJc3VtMiA9IHN1bTIgKyBhWzFdWzJdOwor
CXN1bTMgPSBzdW0zICsgYVsyXVsyXTsKKwlzdW00ID0gc3VtNCArIGFbM11bMl07CisKKwlzdW0x
ID0gc3VtMSArIGFbMF1bM107CisJc3VtMiA9IHN1bTIgKyBhWzFdWzNdOworCXN1bTMgPSBzdW0z
ICsgYVsyXVszXTsKKwlzdW00ID0gc3VtNCArIGFbM11bM107CisKKwlpZiggKCBzdW0xID4gMTAu
MC1FUlJPUl9FUFNJTE9OICYmIHN1bTEgPCAxMC4wK0VSUk9SX0VQU0lMT04gICkgJiYKKwkJKCBz
dW0yID4gMjYuMC1FUlJPUl9FUFNJTE9OICYmIHN1bTIgPCAyNi4wK0VSUk9SX0VQU0lMT04pICYm
CisJCSggc3VtMyA+IDQyLjAtRVJST1JfRVBTSUxPTiAmJiBzdW0zIDwgNDIuMCtFUlJPUl9FUFNJ
TE9OKSAmJgorCQkoIHN1bTQgPiA1OC4wLUVSUk9SX0VQU0lMT04gJiYgc3VtNCA8IDU4LjArRVJS
T1JfRVBTSUxPTikgKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWF0L21hdDRfNHZlYzRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDRfNHZlYzRfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyMzhjZGNkMTVjYWMyOGZmZjQwY2UzY2Q1M2VkZTIwMDVmZTQ1NzYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF80dmVjNF92ZXJ0LnZlcnQKQEAg
LTAsMCArMSw1NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworI2RlZmluZSBFUlJP
Ul9FUFNJTE9OIDAuMQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBMMSA9IHZlYzQoMS4w
LCAyLjAsIDMuMCwgNC4wKTsKKwl2ZWM0IEwyID0gdmVjNCg1LjAsIDYuMCwgNy4wLCA4LjApOwor
CXZlYzQgTDMgPSB2ZWM0KDkuMCwgMTAuMCwgMTEuMCwgMTIuMCk7CisJdmVjNCBMNCA9IHZlYzQo
MTMuMCwgMTQuMCwgMTUuMCwgMTYuMCk7CisKKwltYXQ0IGEgPSBtYXQ0KEwxLEwyLEwzLEw0KTsK
KworCWZsb2F0IGdyYXksc3VtMT0wLjAsc3VtMj0wLjAsc3VtMz0wLjAsc3VtND0wLjA7CisJaW50
IGk7CisKKwlzdW0xID0gc3VtMSArIGFbMF1bMF07CisJc3VtMiA9IHN1bTIgKyBhWzFdWzBdOwor
CXN1bTMgPSBzdW0zICsgYVsyXVswXTsKKwlzdW00ID0gc3VtNCArIGFbM11bMF07CisKKwlzdW0x
ID0gc3VtMSArIGFbMF1bMV07CisJc3VtMiA9IHN1bTIgKyBhWzFdWzFdOworCXN1bTMgPSBzdW0z
ICsgYVsyXVsxXTsKKwlzdW00ID0gc3VtNCArIGFbM11bMV07CisKKwlzdW0xID0gc3VtMSArIGFb
MF1bMl07CisJc3VtMiA9IHN1bTIgKyBhWzFdWzJdOworCXN1bTMgPSBzdW0zICsgYVsyXVsyXTsK
KwlzdW00ID0gc3VtNCArIGFbM11bMl07CisKKwlzdW0xID0gc3VtMSArIGFbMF1bM107CisJc3Vt
MiA9IHN1bTIgKyBhWzFdWzNdOworCXN1bTMgPSBzdW0zICsgYVsyXVszXTsKKwlzdW00ID0gc3Vt
NCArIGFbM11bM107CisKKwlpZiggKCBzdW0xID4gMTAuMC1FUlJPUl9FUFNJTE9OICYmIHN1bTEg
PCAxMC4wK0VSUk9SX0VQU0lMT04gICkgJiYKKwkJKCBzdW0yID4gMjYuMC1FUlJPUl9FUFNJTE9O
ICYmIHN1bTIgPCAyNi4wK0VSUk9SX0VQU0lMT04pICYmCisJCSggc3VtMyA+IDQyLjAtRVJST1Jf
RVBTSUxPTiAmJiBzdW0zIDwgNDIuMCtFUlJPUl9FUFNJTE9OKSAmJgorCQkoIHN1bTQgPiA1OC4w
LUVSUk9SX0VQU0lMT04gJiYgc3VtNCA8IDU4LjArRVJST1JfRVBTSUxPTikgKQorCWdyYXk9MS4w
OworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQ0X2NvcHlfZnJhZy5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWF0L21hdDRfY29weV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM2MzEzNDI1ZjQz
OWVmNzRkNjkxYjYwM2JjNWY1YTEyYmNhMDNlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXQ0X2NvcHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNzggQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLyogVGhpcyBlcHNpbG9uIHdpbGwgd29yayBhcyBs
b25nIGFzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGZsb2F0IGlzIDwgMTI4LgorICogVGhpcyBjYW4g
YmUgc2VlbiBieSB0YWtpbmcgdGhlIHNwZWMgcmVsYXRpdmUgbWVkaXVtcCBwcmVjaXNpb24gb2Yg
Ml4tMTA6CisgKiAwLjEyNSAvIDJeLTEwID0gMTI4CisgKi8KKyNkZWZpbmUgRVJST1JfRVBTSUxP
TiAoMC4xMjUpCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8vIERlY2xhcmUg
YSBjb25zdGFudCA0IGJ5IDQgbWF0cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgorCW1hdDQgYSA9
IG1hdDQoIDEuMCwgIDIuMCwgIDMuMCwgIDQuMCwKKwkgICAgICAgICAgICAgICA1LjAsICA2LjAs
ICA3LjAsICA4LjAsCisJICAgICAgICAgICAgICAgOS4wLCAxMC4wLCAxMS4wLCAxMi4wLAorCSAg
ICAgICAgICAgICAgMTMuMCwgMTQuMCwgMTUuMCwgMTYuMCk7CisKKwkvLyBDb3B5IHRoZSBtYXRy
aXggdG8gYW5vdGhlciBub24tY29uc3QgbWF0cml4LgorCW1hdDQgYiA9IGE7CisKKwkvLyBDaGVj
ayBlYWNoIGVsZW1lbnQgb2YgdGhlIGNvcHkuCisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihiWzBd
WzBdICE9ICAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzFdICE9ICAyLjApIGVsbXMgPSBm
YWxzZTsKKwlpZihiWzBdWzJdICE9ICAzLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzNdICE9
ICA0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzBdICE9ICA1LjApIGVsbXMgPSBmYWxzZTsK
KwlpZihiWzFdWzFdICE9ICA2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzJdICE9ICA3LjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzNdICE9ICA4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihi
WzJdWzBdICE9ICA5LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzFdICE9IDEwLjApIGVsbXMg
PSBmYWxzZTsKKwlpZihiWzJdWzJdICE9IDExLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzNd
ICE9IDEyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzBdICE9IDEzLjApIGVsbXMgPSBmYWxz
ZTsKKwlpZihiWzNdWzFdICE9IDE0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzJdICE9IDE1
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzNdICE9IDE2LjApIGVsbXMgPSBmYWxzZTsKKwor
CS8vIEFkZCB1cCBlYWNoIHJvdyBvZiB0aGUgY29weS4KKwlib29sIHJvd3MgPSB0cnVlOworCXgg
PSBiWzBdWzBdICsgYlsxXVswXSArIGJbMl1bMF0gKyBiWzNdWzBdOworCWlmKHggPCAyOC4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDI4LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXgg
PSBiWzBdWzFdICsgYlsxXVsxXSArIGJbMl1bMV0gKyBiWzNdWzFdOworCWlmKHggPCAzMi4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDMyLjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXgg
PSBiWzBdWzJdICsgYlsxXVsyXSArIGJbMl1bMl0gKyBiWzNdWzJdOworCWlmKHggPCAzNi4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDM2LjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXgg
PSBiWzBdWzNdICsgYlsxXVszXSArIGJbMl1bM10gKyBiWzNdWzNdOworCWlmKHggPCA0MC4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDQwLjArRVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCisJ
Ly8gQWRkIHVwIGVhY2ggY29sdW1uIG9mIHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJ
eCA9IGJbMF1bMF0gKyBiWzBdWzFdICsgYlswXVsyXSArIGJbMF1bM107CisJaWYoeCA8IDEwLjAt
RVJST1JfRVBTSUxPTiB8fCB4ID4gMTAuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJ
eCA9IGJbMV1bMF0gKyBiWzFdWzFdICsgYlsxXVsyXSArIGJbMV1bM107CisJaWYoeCA8IDI2LjAt
RVJST1JfRVBTSUxPTiB8fCB4ID4gMjYuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJ
eCA9IGJbMl1bMF0gKyBiWzJdWzFdICsgYlsyXVsyXSArIGJbMl1bM107CisJaWYoeCA8IDQyLjAt
RVJST1JfRVBTSUxPTiB8fCB4ID4gNDIuMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJ
eCA9IGJbM11bMF0gKyBiWzNdWzFdICsgYlszXVsyXSArIGJbM11bM107CisJaWYoeCA8IDU4LjAt
RVJST1JfRVBTSUxPTiB8fCB4ID4gNTguMCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisK
KwkvLyBDaGVjayBpZiBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVsLgorCWZs
b2F0IGdyYXkgPSBlbG1zICYmIHJvd3MgJiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8vIEFzc2ln
biB0aGUgZnJhZ21lbnQgY29sb3IuCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBn
cmF5LCAxLjApOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF9jb3B5X3ZlcnQu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML21hdC9tYXQ0X2NvcHlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDZm
MzI1OGQ5YWNjMjUxN2RjNjQ4ZmU2NDNhYzQxMjE4MDI5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9tYXQvbWF0NF9jb3B5X3ZlcnQudmVydApAQCAtMCwwICsxLDc3IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gMC4xCisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8vIERlY2xhcmUgYSA0IGJ5IDQgbWF0cml4IHdp
dGggdW5pcXVlIGVsZW1lbnRzLgorCW1hdDQgYSA9IG1hdDQoICAgMS4wLCAgICAyLjAsICAgICA0
LjAsICAgICA4LjAsICAgLy8gMS4wICAxNi4wICAyNTYuMCAgNDA5Ni4wCisJICAgICAgICAgICAg
ICAgIDE2LjAsICAgMzIuMCwgICAgNjQuMCwgICAxMjguMCwgICAvLyAyLjAgIDMyLjAgIDUxMi4w
ICA4MTkyLjAKKwkgICAgICAgICAgICAgICAyNTYuMCwgIDUxMi4wLCAgMTAyNC4wLCAgMjA0OC4w
LCAgIC8vIDQuMCAgNjQuMCAxMDI0LjAgMTYzODQuMAorCSAgICAgICAgICAgICAgNDA5Ni4wLCA4
MTkyLjAsIDE2Mzg0LjAsIDMyNzY4LjApOyAgLy8gOC4wIDEyOC4wIDIwNDguMCAzMjc2OC4wCisK
KwkvLyBDb3B5IHRoZSBtYXRyaXggdG8gYW5vdGhlciBub24tY29uc3QgbWF0cml4LgorCW1hdDQg
YiA9IGE7CisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQgb2YgdGhlIGNvcHkuCisJYm9vbCBlbG1z
ID0gdHJ1ZTsKKwlpZihiWzBdWzBdICE9ICAgICAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBd
WzFdICE9ICAgICAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzBdWzJdICE9ICAgICA0LjApIGVs
bXMgPSBmYWxzZTsKKwlpZihiWzBdWzNdICE9ICAgICA4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihi
WzFdWzBdICE9ICAgIDE2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzFdICE9ICAgIDMyLjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihiWzFdWzJdICE9ICAgIDY0LjApIGVsbXMgPSBmYWxzZTsKKwlp
ZihiWzFdWzNdICE9ICAgMTI4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzBdICE9ICAgMjU2
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzFdICE9ICAgNTEyLjApIGVsbXMgPSBmYWxzZTsK
KwlpZihiWzJdWzJdICE9ICAxMDI0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzJdWzNdICE9ICAy
MDQ4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzBdICE9ICA0MDk2LjApIGVsbXMgPSBmYWxz
ZTsKKwlpZihiWzNdWzFdICE9ICA4MTkyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzJdICE9
IDE2Mzg0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihiWzNdWzNdICE9IDMyNzY4LjApIGVsbXMgPSBm
YWxzZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdyBvZiB0aGUgY29weS4KKwlib29sIHJvd3MgPSB0
cnVlOworCXggPSBiWzBdWzBdICsgYlsxXVswXSArIGJbMl1bMF0gKyBiWzNdWzBdOworCWlmKHgg
PCA0MzY5LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNDM2OS4wK0VSUk9SX0VQU0lMT04pIHJvd3Mg
PSBmYWxzZTsKKwl4ID0gYlswXVsxXSArIGJbMV1bMV0gKyBiWzJdWzFdICsgYlszXVsxXTsKKwlp
Zih4IDwgODczOC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDg3MzguMCtFUlJPUl9FUFNJTE9OKSBy
b3dzID0gZmFsc2U7CisJeCA9IGJbMF1bMl0gKyBiWzFdWzJdICsgYlsyXVsyXSArIGJbM11bMl07
CisJaWYoeCA8IDE3NDc2LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTc0NzYuMCtFUlJPUl9FUFNJ
TE9OKSByb3dzID0gZmFsc2U7CisJeCA9IGJbMF1bM10gKyBiWzFdWzNdICsgYlsyXVszXSArIGJb
M11bM107CisJaWYoeCA8IDM0OTUyLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMzQ5NTIuMCtFUlJP
Ul9FUFNJTE9OKSByb3dzID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCBjb2x1bW4gb2YgdGhl
IGNvcHkuCisJYm9vbCBjb2xzID0gdHJ1ZTsKKwl4ID0gYlswXVswXSArIGJbMF1bMV0gKyBiWzBd
WzJdICsgYlswXVszXTsKKwlpZih4IDwgMTUuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxNS4wK0VS
Uk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlsxXVswXSArIGJbMV1bMV0gKyBiWzFd
WzJdICsgYlsxXVszXTsKKwlpZih4IDwgMjQwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMjQwLjAr
RVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNlOworCXggPSBiWzJdWzBdICsgYlsyXVsxXSArIGJb
Ml1bMl0gKyBiWzJdWzNdOworCWlmKHggPCAzODQwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMzg0
MC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKwl4ID0gYlszXVswXSArIGJbM11bMV0g
KyBiWzNdWzJdICsgYlszXVszXTsKKwlpZih4IDwgNjE0NDAuMC1FUlJPUl9FUFNJTE9OIHx8IHgg
PiA2MTQ0MC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFs
bCBvZiB0aGUgb3BlcmF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMg
JiYgcm93cyAmJiBjb2xzID8gMS4wIDogMC4wOworCisJLy8gQXNzaWduIHRoZSB2YXJ5aW5nIHZh
cmlhYmxlIGNvbG9yLgorCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCisJ
Ly8gVHJhbnNmb3JtIHRoZSB2ZXJ0ZXggcG9zaXRpb24uCisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdC9tYXQ0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQ0X2ZyYWcuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MmMzZjdjODkwZjdjZGRiYWM0Zjg5NTcyMzg2OWU3ZTc5MTU5M2Q0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdDRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNzUg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLyogVGhpcyBlcHNp
bG9uIHdpbGwgd29yayBhcyBsb25nIGFzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGZsb2F0IGlzIDwg
MTI4LgorICogVGhpcyBjYW4gYmUgc2VlbiBieSB0YWtpbmcgdGhlIHNwZWMgcmVsYXRpdmUgbWVk
aXVtcCBwcmVjaXNpb24gb2YgMl4tMTA6CisgKiAwLjEyNSAvIDJeLTEwID0gMTI4CisgKi8KKyNk
ZWZpbmUgRVJST1JfRVBTSUxPTiAoMC4xMjUpCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9h
dCB4OworCS8vIERlY2xhcmUgYSA0IGJ5IDQgbWF0cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgor
CW1hdDQgYSA9IG1hdDQoIDEuMCwgIDIuMCwgIDMuMCwgIDQuMCwKKwkgICAgICAgICAgICAgICA1
LjAsICA2LjAsICA3LjAsICA4LjAsCisJICAgICAgICAgICAgICAgOS4wLCAxMC4wLCAxMS4wLCAx
Mi4wLAorCSAgICAgICAgICAgICAgMTMuMCwgMTQuMCwgMTUuMCwgMTYuMCk7CisKKwkvLyBDaGVj
ayBlYWNoIGVsZW1lbnQuCisJYm9vbCBlbG1zID0gdHJ1ZTsKKwlpZihhWzBdWzBdICE9ICAxLjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihhWzBdWzFdICE9ICAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihh
WzBdWzJdICE9ICAzLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzBdWzNdICE9ICA0LjApIGVsbXMg
PSBmYWxzZTsKKwlpZihhWzFdWzBdICE9ICA1LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzFd
ICE9ICA2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzJdICE9ICA3LjApIGVsbXMgPSBmYWxz
ZTsKKwlpZihhWzFdWzNdICE9ICA4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzBdICE9ICA5
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzFdICE9IDEwLjApIGVsbXMgPSBmYWxzZTsKKwlp
ZihhWzJdWzJdICE9IDExLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzNdICE9IDEyLjApIGVs
bXMgPSBmYWxzZTsKKwlpZihhWzNdWzBdICE9IDEzLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzNd
WzFdICE9IDE0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzNdWzJdICE9IDE1LjApIGVsbXMgPSBm
YWxzZTsKKwlpZihhWzNdWzNdICE9IDE2LjApIGVsbXMgPSBmYWxzZTsKKworCS8vIEFkZCB1cCBl
YWNoIHJvdy4KKwlib29sIHJvd3MgPSB0cnVlOworCXggPSBhWzBdWzBdICsgYVsxXVswXSArIGFb
Ml1bMF0gKyBhWzNdWzBdOworCWlmKHggPCAyOC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDI4LjAr
RVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBhWzBdWzFdICsgYVsxXVsxXSArIGFb
Ml1bMV0gKyBhWzNdWzFdOworCWlmKHggPCAzMi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDMyLjAr
RVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBhWzBdWzJdICsgYVsxXVsyXSArIGFb
Ml1bMl0gKyBhWzNdWzJdOworCWlmKHggPCAzNi4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDM2LjAr
RVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCXggPSBhWzBdWzNdICsgYVsxXVszXSArIGFb
Ml1bM10gKyBhWzNdWzNdOworCWlmKHggPCA0MC4wLUVSUk9SX0VQU0lMT04gfHwgeCA+IDQwLjAr
RVJST1JfRVBTSUxPTikgcm93cyA9IGZhbHNlOworCisJLy8gQWRkIHVwIGVhY2ggY29sdW1uIG9m
IHRoZSBjb3B5LgorCWJvb2wgY29scyA9IHRydWU7CisJeCA9IGFbMF1bMF0gKyBhWzBdWzFdICsg
YVswXVsyXSArIGFbMF1bM107CisJaWYoeCA8IDEwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTAu
MCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMV1bMF0gKyBhWzFdWzFdICsg
YVsxXVsyXSArIGFbMV1bM107CisJaWYoeCA8IDI2LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMjYu
MCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbMl1bMF0gKyBhWzJdWzFdICsg
YVsyXVsyXSArIGFbMl1bM107CisJaWYoeCA8IDQyLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNDIu
MCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisJeCA9IGFbM11bMF0gKyBhWzNdWzFdICsg
YVszXVsyXSArIGFbM11bM107CisJaWYoeCA8IDU4LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gNTgu
MCtFUlJPUl9FUFNJTE9OKSBjb2xzID0gZmFsc2U7CisKKwkvLyBDaGVjayBpZiBhbGwgb2YgdGhl
IG9wZXJhdGlvbnMgd2VyZSBzdWNjZXNzZnVsLgorCWZsb2F0IGdyYXkgPSBlbG1zICYmIHJvd3Mg
JiYgY29scyA/IDEuMCA6IDAuMDsKKworCS8vIEFzc2lnbiB0aGUgZnJhZ21lbnQgY29sb3IuCisJ
Z2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0NF92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDA5NTMxNThhNmIwZGM0ODM3YjMwM2FiNTFjMDJiMzk0ZmYzNGU0
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXQ0X3ZlcnQudmVydApAQCAtMCww
ICsxLDc0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5lIEVSUk9SX0VQ
U0lMT04gMC4xCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCB4OworCS8vIERlY2xhcmUg
YSA0IGJ5IDQgbWF0cml4IHdpdGggdW5pcXVlIGVsZW1lbnRzLgorCW1hdDQgYSA9IG1hdDQoICAg
MS4wLCAgICAyLjAsICAgICA0LjAsICAgICA4LjAsICAgLy8gMS4wICAxNi4wICAyNTYuMCAgNDA5
Ni4wCisJICAgICAgICAgICAgICAgIDE2LjAsICAgMzIuMCwgICAgNjQuMCwgICAxMjguMCwgICAv
LyAyLjAgIDMyLjAgIDUxMi4wICA4MTkyLjAKKwkgICAgICAgICAgICAgICAyNTYuMCwgIDUxMi4w
LCAgMTAyNC4wLCAgMjA0OC4wLCAgIC8vIDQuMCAgNjQuMCAxMDI0LjAgMTYzODQuMAorCSAgICAg
ICAgICAgICAgNDA5Ni4wLCA4MTkyLjAsIDE2Mzg0LjAsIDMyNzY4LjApOyAgLy8gOC4wIDEyOC4w
IDIwNDguMCAzMjc2OC4wCisKKwkvLyBDaGVjayBlYWNoIGVsZW1lbnQuCisJYm9vbCBlbG1zID0g
dHJ1ZTsKKwlpZihhWzBdWzBdICE9ICAgICAxLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzBdWzFd
ICE9ICAgICAyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzBdWzJdICE9ICAgICA0LjApIGVsbXMg
PSBmYWxzZTsKKwlpZihhWzBdWzNdICE9ICAgICA4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFd
WzBdICE9ICAgIDE2LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzFdWzFdICE9ICAgIDMyLjApIGVs
bXMgPSBmYWxzZTsKKwlpZihhWzFdWzJdICE9ICAgIDY0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihh
WzFdWzNdICE9ICAgMTI4LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzBdICE9ICAgMjU2LjAp
IGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzFdICE9ICAgNTEyLjApIGVsbXMgPSBmYWxzZTsKKwlp
ZihhWzJdWzJdICE9ICAxMDI0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzJdWzNdICE9ICAyMDQ4
LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzNdWzBdICE9ICA0MDk2LjApIGVsbXMgPSBmYWxzZTsK
KwlpZihhWzNdWzFdICE9ICA4MTkyLjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzNdWzJdICE9IDE2
Mzg0LjApIGVsbXMgPSBmYWxzZTsKKwlpZihhWzNdWzNdICE9IDMyNzY4LjApIGVsbXMgPSBmYWxz
ZTsKKworCS8vIEFkZCB1cCBlYWNoIHJvdy4KKwlib29sIHJvd3MgPSB0cnVlOworCXggPSBhWzBd
WzBdICsgYVsxXVswXSArIGFbMl1bMF0gKyBhWzNdWzBdOworCWlmKHggPCA0MzY5LjAtRVJST1Jf
RVBTSUxPTiB8fCB4ID4gNDM2OS4wK0VSUk9SX0VQU0lMT04pIHJvd3MgPSBmYWxzZTsKKwl4ID0g
YVswXVsxXSArIGFbMV1bMV0gKyBhWzJdWzFdICsgYVszXVsxXTsKKwlpZih4IDwgODczOC4wLUVS
Uk9SX0VQU0lMT04gfHwgeCA+IDg3MzguMCtFUlJPUl9FUFNJTE9OKSByb3dzID0gZmFsc2U7CisJ
eCA9IGFbMF1bMl0gKyBhWzFdWzJdICsgYVsyXVsyXSArIGFbM11bMl07CisJaWYoeCA8IDE3NDc2
LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMTc0NzYuMCtFUlJPUl9FUFNJTE9OKSByb3dzID0gZmFs
c2U7CisJeCA9IGFbMF1bM10gKyBhWzFdWzNdICsgYVsyXVszXSArIGFbM11bM107CisJaWYoeCA8
IDM0OTUyLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMzQ5NTIuMCtFUlJPUl9FUFNJTE9OKSByb3dz
ID0gZmFsc2U7CisKKwkvLyBBZGQgdXAgZWFjaCBjb2x1bW4uCisJYm9vbCBjb2xzID0gdHJ1ZTsK
Kwl4ID0gYVswXVswXSArIGFbMF1bMV0gKyBhWzBdWzJdICsgYVswXVszXTsKKwlpZih4IDwgMTUu
MC1FUlJPUl9FUFNJTE9OIHx8IHggPiAxNS4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBmYWxzZTsK
Kwl4ID0gYVsxXVswXSArIGFbMV1bMV0gKyBhWzFdWzJdICsgYVsxXVszXTsKKwlpZih4IDwgMjQw
LjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMjQwLjArRVJST1JfRVBTSUxPTikgY29scyA9IGZhbHNl
OworCXggPSBhWzJdWzBdICsgYVsyXVsxXSArIGFbMl1bMl0gKyBhWzJdWzNdOworCWlmKHggPCAz
ODQwLjAtRVJST1JfRVBTSUxPTiB8fCB4ID4gMzg0MC4wK0VSUk9SX0VQU0lMT04pIGNvbHMgPSBm
YWxzZTsKKwl4ID0gYVszXVswXSArIGFbM11bMV0gKyBhWzNdWzJdICsgYVszXVszXTsKKwlpZih4
IDwgNjE0NDAuMC1FUlJPUl9FUFNJTE9OIHx8IHggPiA2MTQ0MC4wK0VSUk9SX0VQU0lMT04pIGNv
bHMgPSBmYWxzZTsKKworCS8vIENoZWNrIGlmIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyB3ZXJlIHN1
Y2Nlc3NmdWwuCisJZmxvYXQgZ3JheSA9IGVsbXMgJiYgcm93cyAmJiBjb2xzID8gMS4wIDogMC4w
OworCisJLy8gQXNzaWduIHRoZSB2YXJ5aW5nIHZhcmlhYmxlIGNvbG9yLgorCWNvbG9yID0gdmVj
NChncmF5LCBncmF5LCBncmF5LCAxLjApOworCisJLy8gVHJhbnNmb3JtIHRoZSB2ZXJ0ZXggcG9z
aXRpb24uCisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXRfMDAxX3RvXzAwOC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbWF0L21hdF8wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUzYjI3
ODBhMDgyNTViZTVlMGRkOTI3NGMwMmM4NDNjNjBmNWRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdC9tYXRfMDAxX3RvXzAwOC5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4g
LS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9y
bWFuY2UgdGVzdDogbWF0XzAwMV90b18wMDguaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVz
LXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBo
ZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4o
eworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
dW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6
IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1
ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3Rl
ZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiY29uc3RfbWF0Ml9mcmFnLmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0Ml9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiY29uc3RfbWF0Ml92
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0Ml92ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiY29u
c3RfbWF0M19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0M19m
cmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiY29uc3RfbWF0M192ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
Y29uc3RfbWF0M192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiY29uc3RfbWF0NF9mcmFnLmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAiY29uc3RfbWF0NF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3Vu
dCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2
YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBl
Y3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiY29uc3RfbWF0NF92ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0NF92ZXJ0LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiY29uc3RfbWF0Ml9j
b3B5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJjb25zdF9tYXQyX2NvcHlf
ZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAg
ICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5
cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogImNvbnN0X21hdDJfY29weV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAiY29uc3RfbWF0Ml9jb3B5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0XzAwOV90
b18wMTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXRfMDA5X3RvXzAxNi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBhM2U1YzE5MTYxOTE1N2NhYzRkMDEwY2JmZmNkMTA0OGJiYzNmOTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQvbWF0XzAwOV90b18wMTYuaHRtbApAQCAtMCwwICsxLDIzMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9U
IEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IGNvbmZvcm1hbmNlIHRlc3Q6IG1hdF8wMDlfdG9fMDE2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5u
ZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImNvbnN0X21hdDNfY29weV9mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0M19jb3B5X2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVz
dWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVu
aWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJjb25zdF9tYXQzX2NvcHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImNv
bnN0X21hdDNfY29weV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiY29uc3RfbWF0NF9jb3B5X2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJjb25zdF9tYXQ0X2NvcHlfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImNvbnN0X21h
dDRfY29weV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiY29uc3RfbWF0NF9jb3B5
X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJtYXQyX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQy
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJtYXQyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQy
X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJtYXQzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQz
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJtYXQzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQz
X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBd
Cit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0XzAxN190b18wMjQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXRfMDE3X3RvXzAyNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmMGVmNjBkZDljZTlhOWZmNTQz
NmFlZjhiMjk5YmY2Zjc2YTU4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQvbWF0
XzAxN190b18wMjQuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
IHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IG1h
dF8wMTdfdG9fMDI0Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0
eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjog
WworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIm1hdDRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im1hdDRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIm1hdDRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im1hdDRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIm1hdDJfY29weV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAibWF0Ml9jb3B5X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXQyX2NvcHlfdmVydC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogIm1hdDJfY29weV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWF0M19jb3B5X2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQzX2NvcHlfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDNfY29w
eV92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0M19jb3B5X3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0
IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZv
cm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJt
YXQ0X2NvcHlfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfY29weV9m
cmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAibWF0NF9jb3B5X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJt
YXQ0X2NvcHlfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdC9tYXRfMDI1X3RvXzAzMi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWF0L21hdF8wMjVfdG9fMDMyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThhYzcxZjk5YWU1
YmQwM2YyYmY5MWMyMzAxYjk0ZmM3Yjk5MWQ2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21hdC9tYXRfMDI1X3RvXzAzMi5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2Ug
dGVzdDogbWF0XzAyNV90b18wMzIuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3Rz
LmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9
IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAi
dGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9y
bXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisg
ICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWF0Ml9mbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAibWF0Ml9mbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXQyX2Zsb2F0X3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQyX2Zsb2F0X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQyXzRm
bG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0Ml80ZmxvYXRfZnJh
Zy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAibWF0Ml80ZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im1hdDJfNGZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQyXzJ2ZWMyX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJtYXQyXzJ2ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNv
dW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAg
InZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4
cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDJfMnZlYzJfdmVydC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDJfMnZlYzJfdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDNfZmxv
YXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDNfZmxvYXRfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAibWF0M19mbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0
M19mbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdF8wMzNfdG9fMDQwLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9tYXQvbWF0XzAzM190b18wNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzI0NWQyNWYxMWIx
YjM2Y2E0NDZlN2JjMTMxYmQzZjc4OWE3Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWF0L21hdF8wMzNfdG9fMDQwLmh0bWwKQEAgLTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0
ZXN0OiBtYXRfMDMzX3RvXzA0MC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMu
Y3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0i
NTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0
ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQzXzlmbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAibWF0M185ZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibWF0M185ZmxvYXRfdmVy
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDNfOWZsb2F0X3ZlcnQudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijog
eworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00
ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQz
XzN2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQzXzN2ZWMzX2Zy
YWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAg
ICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIm1hdDNfM3ZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im1hdDNfM3ZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDRfNHZlYzRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogIm1hdDRfNHZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDRfNHZlYzRfdmVydC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDRfNHZlYzRfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDRfMTZmbG9h
dF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0NF8xNmZsb2F0X2ZyYWcu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAi
cmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjog
InVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJtYXQ0XzE2ZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1h
dDRfMTZmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0L21hdF8wNDFfdG9fMDQ2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9tYXQvbWF0XzA0MV90b18wNDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGI5MzU3NGEz
M2VjZDg3N2U1ZmFmZmE4NmE2NjJjMGNlMGIxYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbWF0L21hdF8wNDFfdG9fMDQ2Lmh0bWwKQEAgLTAsMCArMSwxODEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5j
ZSB0ZXN0OiBtYXRfMDQxX3RvXzA0Ni5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVz
dHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdo
dD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7Cisg
ICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhcnJheV9jb25zdF9tYXQyX2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJhcnJheV9jb25zdF9tYXQyX2ZyYWcudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhcnJh
eV9jb25zdF9tYXQyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhcnJheV9jb25z
dF9tYXQyX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsK
KyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJhcnJheV9jb25zdF9tYXQzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJhcnJheV9jb25zdF9tYXQzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAg
ICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAg
ICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhcnJheV9jb25zdF9t
YXQzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhcnJheV9jb25zdF9tYXQzX3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAg
ICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJhcnJheV9jb25zdF9tYXQ0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJhcnJheV9jb25zdF9tYXQ0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJhcnJheV9jb25zdF9tYXQ0X3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhcnJheV9jb25zdF9tYXQ0X3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9tYXQzL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQzL2lucHV0LnJ1bi50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjc5ZTEyN2MyNzZiMTg1ZmJmYjVjYzIyNDA3NmVkYjEyNzQwMWMxMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdDMvaW5wdXQucnVuLnR4dApAQCAtMCwwICsx
LDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK21hdDNf
MDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQzL21hdDNfMDAxX3RvXzAw
Ni5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWF0My9tYXQzXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZDMzMmZhODA1NTllNmYwNTk2YzRmYmNiOTM5NDFkZjIzMGNiYmEyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWF0My9tYXQzXzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsxLDM0MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9U
IEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IGNvbmZvcm1hbmNlIHRlc3Q6IG1hdDNfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVu
bmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgIDAuMjUsCisg
ICAgICAgICAgICAgIDAuMTI1LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXQzYXJyYXlzaW1w
bGVfdmVydC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJ0ZXN0bWF0
MyI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDIsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtTWF0cml4M2Z2IiwKKyAgICAgICAgICAgICJ0cmFuc3Bvc2UiOiBmYWxzZSwKKyAgICAgICAg
ICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAwLjAsCisg
ICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAw
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAwLjI1LAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAg
ICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAg
ICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4yNQorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDNhcnJheXNpbXBsZV92
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAwLjc1LAorICAgICAgICAgICAgICAwLjYyNSwKKyAgICAgICAg
ICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAibWF0M2FycmF5aW5kaXJlY3QwX3ZlcnQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAidGVzdG1hdDMiOiB7CisgICAgICAgICAgICAiY291bnQi
OiAyLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybU1hdHJpeDNmdiIsCisgICAgICAgICAg
ICAidHJhbnNwb3NlIjogZmFsc2UsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAg
ICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAwLjAsCisgICAg
ICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC4w
LAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAg
IDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAg
ICAgIDAuMjUKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJtYXQzYXJyYXlpbmRpcmVjdDBfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMC4y
NSwKKyAgICAgICAgICAgICAgMC4xMjUsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdDNhcnJh
eWluZGlyZWN0MV92ZXJ0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InRlc3RtYXQzIjogeworICAgICAgICAgICAgImNvdW50IjogMiwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm1NYXRyaXgzZnYiLAorICAgICAgICAgICAgInRyYW5zcG9zZSI6IGZhbHNlLAor
ICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAg
ICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAor
ICAgICAgICAgICAgICAwLjI1LAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAu
MCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjI1CisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0M2FycmF5
aW5kaXJlY3QxX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6
IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAg
ICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAg
ICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDAuMTI1
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAidGVzdG1hdDMiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAyLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybU1hdHJpeDNmdiIsCisgICAg
ICAgICAgICAidHJhbnNwb3NlIjogZmFsc2UsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisg
ICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAwLjAs
CisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAg
ICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAg
ICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAg
ICAgICAgICAgIDAuMjUKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXQzYXJyYXlzaW1wbGVfZnJhZy5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogIm1hdDNhcnJheXNpbXBsZV9mcmFnLnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAg
ICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwK
KyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAwLjc1LAorICAgICAgICAgICAgICAwLjYyNSwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InRlc3RtYXQzIjogeworICAgICAgICAgICAgImNvdW50IjogMiwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm1NYXRyaXgzZnYiLAorICAgICAgICAgICAgInRyYW5zcG9zZSI6IGZhbHNlLAor
ICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAg
ICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAor
ICAgICAgICAgICAgICAwLjI1LAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAu
MCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjI1CisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWF0
M2FycmF5aW5kaXJlY3QwX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXQz
YXJyYXlpbmRpcmVjdDBfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAg
MC4xMjUsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJ0ZXN0bWF0MyI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDIsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtTWF0cml4M2Z2IiwK
KyAgICAgICAgICAgICJ0cmFuc3Bvc2UiOiBmYWxzZSwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAu
MCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAwLjI1LAorICAgICAg
ICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4yNSwKKyAg
ICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgIDAuMCwK
KyAgICAgICAgICAgICAgMC4yNQorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1hdDNhcnJheWluZGlyZWN0MV9mcmFnLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0M2FycmF5aW5kaXJlY3QxX2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXQzL21hdDNhcnJheWluZGlyZWN0MF9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9tYXQzL21hdDNhcnJheWluZGlyZWN0MF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFhYmE4YTkx
OTcyYWIyNzYxYzcxM2EzNzZmYmRjZTJiZGY3NTk0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdDMvbWF0M2FycmF5aW5kaXJlY3QwX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDM2IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisvLworLy8gbWF0M2FycmF5aW5k
aXJlY3QwX2ZyYWcuZnJhZzogRnJhZ21lbnQgc2hhZGVyIHNvbGlkIGNvbG9yCisvLyBUaGUgdmVj
MyB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVudGltZS4KKy8vCisvLworCit1bmlmb3JtIG1h
dDMgdGVzdG1hdDNbMl07Cit2YXJ5aW5nIHZlYzQgIGNvbG9yOworCit2b2lkIG1haW4odm9pZCkK
K3sKKyAgICAgdmVjMyByZXN1bHQgPSB2ZWMzKDAuMCwgMC4wLCAwLjApOworCisgIC8qCisJLy8g
Tm8gaW5kaXJlY3QgaW5kZXhpbmcgaW4gZnJhZ21lbnQgc2hhZGVycworICAgICBmb3IoaW50IGog
PSAwOyBqIDwgMzsgaisrKQorICAgICB7CisJcmVzdWx0ICs9IHRlc3RtYXQzWzBdW2pdICsgdGVz
dG1hdDNbMV1bal07CisgICAgIH0KKwkqLworCXJlc3VsdCArPSB0ZXN0bWF0M1swXVswXSArIHRl
c3RtYXQzWzFdWzBdOworCXJlc3VsdCArPSB0ZXN0bWF0M1swXVsxXSArIHRlc3RtYXQzWzFdWzFd
OworCXJlc3VsdCArPSB0ZXN0bWF0M1swXVsyXSArIHRlc3RtYXQzWzFdWzJdOworICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHJlc3VsdC8yLjAsIDAuNSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9tYXQzL21hdDNhcnJheWluZGlyZWN0MF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQzL21hdDNh
cnJheWluZGlyZWN0MF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJmMzM5NmQyNjg2N2M2MGE4NmUx
YjRmNzVhYTdjYzdlNjU0NzFmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdDMvbWF0
M2FycmF5aW5kaXJlY3QwX3ZlcnQudmVydApAQCAtMCwwICsxLDM1IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworLy8KKy8v
IG1hdDNhcnJheWluZGlyZWN0MF92ZXJ0LnZlcnQ6IFZlcnRleCBzaGFkZXIgc29saWQgY29sb3IK
Ky8vIFRoZSB2ZWMzIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgorLy8KKy8vCisK
K3VuaWZvcm0gbWF0MyB0ZXN0bWF0M1syXTsKK3ZhcnlpbmcgdmVjNCAgY29sb3I7CisKKwordm9p
ZCBtYWluKHZvaWQpCit7CisgICAgIHZlYzMgcmVzdWx0ID0gdmVjMygwLjAsIDAuMCwgMC4wKTsK
KworICAgICBmb3IoaW50IGogPSAwOyBqIDwgMzsgaisrKQorICAgICB7CisJcmVzdWx0ICs9IHRl
c3RtYXQzWzBdW2pdICsgdGVzdG1hdDNbMV1bal07CisgICAgIH0KKworICAgICBjb2xvciA9IHZl
YzQocmVzdWx0LzIuMCwgMC41KTsKKworICAgICBnbF9Qb3NpdGlvbiAgICAgPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7CisKKworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF0My9tYXQzYXJyYXlpbmRpcmVjdDFfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0My9t
YXQzYXJyYXlpbmRpcmVjdDFfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YTdiZjcwNzVlMjA3OTE1
NjczZDc0NGY1ZmNmZWYzMTQ4YTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQz
L21hdDNhcnJheWluZGlyZWN0MV9mcmFnLmZyYWcKQEAgLTAsMCArMSwzNiBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorLy8KKy8vIG1hdDNhcnJheWluZGlyZWN0MV9m
cmFnLmZyYWc6IEZyYWdtZW50IHNoYWRlciBzb2xpZCBjb2xvciAgdGVzdGluZyBpbmRpcmVjdCBy
ZWZlcmVuY2luZyBpbnRvIHVuaWZvcm1zCisvLyBUaGUgdmVjMyB2YWx1ZXMgYXJlIGRldGVybWlu
ZWQgYXQgcnVudGltZS4KKy8vCisvLworCit1bmlmb3JtIG1hdDMgdGVzdG1hdDNbMl07Cit2YXJ5
aW5nIHZlYzQgIGNvbG9yOworCit2b2lkIG1haW4odm9pZCkKK3sKKwl2ZWMzIHJlc3VsdCA9IHZl
YzMoMC4wLCAwLjAsIDAuMCk7CisKKyAgLyoKKwkvLyBObyBpbmRpcmVjdCBpbmRleGluZyBpbiBm
cmFnbWVudCBzaGFkZXJzCisJZm9yKGludCBqID0gMDsgaiA8IDM7IGorKykKKwl7CisJCXJlc3Vs
dCArPSB0ZXN0bWF0M1sxXVtqXTsKKwl9CisqLworCXJlc3VsdCArPSB0ZXN0bWF0M1sxXVswXTsK
KwlyZXN1bHQgKz0gdGVzdG1hdDNbMV1bMV07CisJcmVzdWx0ICs9IHRlc3RtYXQzWzFdWzJdOwor
CWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LzIuMCwgMC41KTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdDMvbWF0M2FycmF5aW5kaXJlY3QxX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdDMv
bWF0M2FycmF5aW5kaXJlY3QxX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjY2NjU2NjI2MmM3Y2Mz
NjMyY2MzMWRiYjVkMmY2Mjg3NmY0ZjY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0
My9tYXQzYXJyYXlpbmRpcmVjdDFfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzYgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cisv
LworLy8gbWF0M2FycmF5aW5kaXJlY3QxX3ZlcnQudmVydDogVmVydGV4IHNoYWRlciBzb2xpZCBj
b2xvciAgdGVzdGluZyBpbmRpcmVjdCByZWZlcmVuY2luZyBpbnRvIHVuaWZvcm1zCisvLyBUaGUg
dmVjMyB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVudGltZS4KKy8vCisvLworCit1bmlmb3Jt
IG1hdDMgdGVzdG1hdDNbMl07Cit2YXJ5aW5nIHZlYzQgIGNvbG9yOworCisKK3ZvaWQgbWFpbih2
b2lkKQoreworICAgICB2ZWMzIHJlc3VsdCA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7CisKKyAgICAg
Zm9yKGludCBqID0gMDsgaiA8IDM7IGorKykKKyAgICAgeworCXJlc3VsdCArPSB0ZXN0bWF0M1sx
XVtqXTsKKyAgICAgfQorCisKKyAgICAgY29sb3IgPSB2ZWM0KHJlc3VsdC8yLjAsIDAuNSk7CisK
KyAgICAgZ2xfUG9zaXRpb24gICAgID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworCisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdDMvbWF0M2FycmF5c2lt
cGxlX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdDMvbWF0M2FycmF5c2ltcGxlX2ZyYWcuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZTBlZTM5N2VkMmI4MjI5ODU5NzEyOWI2YzE2ZTIwZDBhNWIzOGE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0My9tYXQzYXJyYXlzaW1wbGVfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsMjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKy8v
IG1hdDNhcnJheXNpbXBsZV9mcmFnLmZyYWc6IEZyYWdtZW50IHNoYWRlciBzb2xpZCBjb2xvciAg
dGVzdGluZyBpbmRpcmVjdCByZWZlcmVuY2luZyBpbnRvIHVuaWZvcm1zCisvLyBUaGUgdmVjMyB2
YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVudGltZS4KKy8vCisvLworCit1bmlmb3JtIG1hdDMg
dGVzdG1hdDNbMl07Cit2YXJ5aW5nIHZlYzQgIGNvbG9yOworCit2b2lkIG1haW4odm9pZCkKK3sK
KyAgICAgdmVjMyByZXN1bHQgPSB2ZWMzKDAuMCwgMC4wLCAwLjApOworCisgICAgIHJlc3VsdCA9
IHRlc3RtYXQzWzFdWzBdICsgdGVzdG1hdDNbMV1bMV0gKyB0ZXN0bWF0M1sxXVsyXTsKKyAgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQvMi4wLCAwLjUpOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF0My9tYXQzYXJyYXlzaW1wbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0My9tYXQz
YXJyYXlzaW1wbGVfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNWU1MmE5YTQ4OTg0ZjNjZWFkOTdk
ZjQyMTM1MDhhNDY5MDVhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXQzL21hdDNh
cnJheXNpbXBsZV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKy8vCisvLyBtYXQz
YXJyYXlzaW1wbGVfdmVydC52ZXJ0OiBWZXJ0ZXggc2hhZGVyIHNvbGlkIGNvbG9yICB0ZXN0aW5n
IGluZGlyZWN0IHJlZmVyZW5jaW5nIGludG8gdW5pZm9ybXMKKy8vIFRoZSB2ZWMzIHZhbHVlcyBh
cmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgorLy8KKy8vCisKK3VuaWZvcm0gbWF0MyB0ZXN0bWF0
M1syXTsKK3ZhcnlpbmcgdmVjNCAgY29sb3I7CisKKwordm9pZCBtYWluKHZvaWQpCit7CisgICAg
IHZlYzMgcmVzdWx0ID0gdmVjMygwLjAsIDAuMCwgMC4wKTsKKworICAgICByZXN1bHQgPSB0ZXN0
bWF0M1sxXVswXSArIHRlc3RtYXQzWzFdWzFdICsgdGVzdG1hdDNbMV1bMl07CisKKyAgICAgY29s
b3IgPSB2ZWM0KHJlc3VsdC8yLjAsIDAuNSk7CisKKyAgICAgZ2xfUG9zaXRpb24gICAgID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworCisKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRy
aXhDb21wTXVsdC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZDIwYzg2ZWI4MmRiYmIzOTc2
OTNhMTNmZmFhYTllODE4ZGQ3MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhD
b21wTXVsdC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorbWF0cml4Q29tcE11bHRfMDAxX3RvXzAwNC5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhDb21wTXVsdF8wMDFf
dG9fMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhDb21wTXVsdF8wMDFf
dG9fMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2YzFkM2NkZGI1YjVjZDZiYzE5OGUwNWMxOTA0ODRl
OGM5NmM1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJp
eENvbXBNdWx0XzAwMV90b18wMDQuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2Ug
dGVzdDogbWF0cml4Q29tcE11bHRfMDAxX3RvXzAwNC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
IiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
b2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1
MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVy
LnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWdfcmVmLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWcuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJtYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWcudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXRyaXhNdWx0Q29t
cF9tYXQyX3ZlcnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdHJpeE11bHRD
b21wX21hdDJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1hdHJpeE11bHRDb21w
X21hdDJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIm1hdHJpeE11bHRDb21wX21hdDNfZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIm1hdHJpeE11bHRDb21wX21hdDNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogIm1hdHJpeE11bHRDb21wX21hdDNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIm1hdHJpeE11bHRDb21wX21hdDNfdmVydF9yZWYudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibWF0cml4TXVsdENvbXBfbWF0M192ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAibWF0cml4TXVsdENvbXBfbWF0M192ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWF0cml4Q29tcE11bHQvbWF0cml4TXVsdENvbXBfbWF0Ml9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOGU2YjY5MmJjOTkyMGUyZTQ2YmM3MWJkZmU1ZWU1Y2UxOTQyODQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29tcE11bHQvbWF0cml4TXVsdENvbXBfbWF0Ml9m
cmFnLmZyYWcKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWF0
MiBtMSA9IG1hdDIoY29sb3IucmcsIGNvbG9yLmJhKTsKKwltYXQyIG0yID0gbWF0MigxLjAsIDAu
NSwgMC41LCAxLjApOworCW1hdDIgbTMgPSBtYXQyKDAuMCk7CisKKwltMyA9IG1hdHJpeENvbXBN
dWx0KG0xLCBtMik7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChtM1swXVswXSwgbTNbMV1bMF0sIG0z
WzBdWzFdLCBtM1sxXVsxXSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVs
dC9tYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21w
TXVsdC9tYXRyaXhNdWx0Q29tcF9tYXQyX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM0ODJj
MzU0YzdhMmRlZGIzZmQzOTNmMjRmODg0MmQ4YjllYWMyNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11bHRDb21wX21hdDJfZnJhZ19yZWYuZnJhZwpA
QCAtMCwwICsxLDI2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQyIG0xID0gbWF0
Mihjb2xvci5yZywgY29sb3IuYmEpOworCW1hdDIgbTIgPSBtYXQyKDEuMCwgMC41LCAwLjUsIDEu
MCk7CisJbWF0MiBtMyA9IG1hdDIoMC4wKTsKKworCW0zWzBdWzBdID0gbTFbMF1bMF0gKiBtMlsw
XVswXTsKKwltM1swXVsxXSA9IG0xWzBdWzFdICogbTJbMF1bMV07CisJbTNbMV1bMF0gPSBtMVsx
XVswXSAqIG0yWzFdWzBdOworCW0zWzFdWzFdID0gbTFbMV1bMV0gKiBtMlsxXVsxXTsKKworCWds
X0ZyYWdDb2xvciA9IHZlYzQobTNbMF1bMF0sIG0zWzFdWzBdLCBtM1swXVsxXSwgbTNbMV1bMV0p
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29tcE11bHQvbWF0cml4TXVsdENvbXBf
bWF0Ml92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhNdWx0Q29tcF9t
YXQyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGNiMzIzZGY5MDI0ODRmYzI5MTA2ZGU3NmY5Nzk1
ZTdiZDBlYzk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29tcE11bHQvbWF0
cml4TXVsdENvbXBfbWF0Ml92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCW1hdDIgbTEgPSBtYXQyKGd0Zl9Db2xvci5yLCBndGZfQ29sb3IuZywgZ3RmX0Nv
bG9yLmIsIGd0Zl9Db2xvci5hKTsKKwltYXQyIG0yID0gbWF0MigxLjAsIDAuNSwgMC41LCAxLjAp
OworCW1hdDIgbTMgPSBtYXQyKDAuMCk7CisKKwltMyA9IG1hdHJpeENvbXBNdWx0KG0xLCBtMik7
CisJY29sb3IgPSB2ZWM0KG0zWzBdWzBdLCBtM1sxXVswXSwgbTNbMF1bMV0sIG0zWzFdWzFdKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11bHRDb21w
X21hdDJfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11bHRD
b21wX21hdDJfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDkxODFhMTgwNjE1YjNhYzAyMjU3
YTlhYjkzODFiYWJiZGU0OWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29t
cE11bHQvbWF0cml4TXVsdENvbXBfbWF0Ml92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjcgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQyIG0xID0gbWF0MihndGZfQ29sb3IuciwgZ3RmX0Nv
bG9yLmcsIGd0Zl9Db2xvci5iLCBndGZfQ29sb3IuYSk7CisJbWF0MiBtMiA9IG1hdDIoMS4wLCAw
LjUsIDAuNSwgMS4wKTsKKwltYXQyIG0zID0gbWF0MigwLjApOworCisJbTNbMF1bMF0gPSBtMVsw
XVswXSAqIG0yWzBdWzBdOworCW0zWzBdWzFdID0gbTFbMF1bMV0gKiBtMlswXVsxXTsKKwltM1sx
XVswXSA9IG0xWzFdWzBdICogbTJbMV1bMF07CisJbTNbMV1bMV0gPSBtMVsxXVsxXSAqIG0yWzFd
WzFdOworCisJY29sb3IgPSB2ZWM0KG0zWzBdWzBdLCBtM1sxXVswXSwgbTNbMF1bMV0sIG0zWzFd
WzFdKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11
bHRDb21wX21hdDNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29tcE11bHQvbWF0cml4TXVs
dENvbXBfbWF0M19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIzNDc4YzJjMzVlYzA2ODkyMjQzMWI1
ZDQ1MGE5OGU1MjVmNGM2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBN
dWx0L21hdHJpeE11bHRDb21wX21hdDNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzYgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCW1hdDMgbTEgPSBtYXQzKGNvbG9yLnJnYiwgY29sb3Iucmdi
LCBjb2xvci5yZ2IpOworCW1hdDMgbTIgPSBtYXQzKDEuMCwgMC41LCAwLjUsIDAuNSwgMS4wLCAw
LjUsIDAuNSwgMC41LCAxLjApOworCW1hdDMgbTMgPSBtYXQzKDAuMCk7CisJdmVjMyByZXN1bHQg
PSB2ZWMzKDAuMCwgMC4wLCAwLjApOworCisJbTMgPSBtYXRyaXhDb21wTXVsdChtMSwgbTIpOwor
CisJcmVzdWx0WzBdICs9IG0zWzBdWzBdOworCXJlc3VsdFswXSArPSBtM1swXVsxXTsKKwlyZXN1
bHRbMF0gKz0gbTNbMF1bMl07CisKKwlyZXN1bHRbMV0gKz0gbTNbMV1bMF07CisJcmVzdWx0WzFd
ICs9IG0zWzFdWzFdOworCXJlc3VsdFsxXSArPSBtM1sxXVsyXTsKKworCXJlc3VsdFsyXSArPSBt
M1syXVswXTsKKwlyZXN1bHRbMl0gKz0gbTNbMl1bMV07CisJcmVzdWx0WzJdICs9IG0zWzJdWzJd
OworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQgLyAyLjAsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhNdWx0Q29tcF9tYXQzX2ZyYWdfcmVm
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhNdWx0Q29tcF9tYXQzX2ZyYWdf
cmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIxMDQxODYyMWZmZWQ5ZmY1NmU1ZTJiYzNjN2VhZmIwNTUy
ZGY2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11
bHRDb21wX21hdDNfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDQyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwltYXQzIG0xID0gbWF0Myhjb2xvci5yZ2IsIGNvbG9yLnJnYiwgY29sb3Iu
cmdiKTsKKwltYXQzIG0yID0gbWF0MygxLjAsIDAuNSwgMC41LCAwLjUsIDEuMCwgMC41LCAwLjUs
IDAuNSwgMS4wKTsKKwltYXQzIG0zID0gbWF0MygwLjApOworCXZlYzMgcmVzdWx0ID0gdmVjMygw
LjAsIDAuMCwgMC4wKTsKKworCW0zWzBdWzBdID0gbTFbMF1bMF0gKiBtMlswXVswXTsKKwltM1sw
XVsxXSA9IG0xWzBdWzFdICogbTJbMF1bMV07CisJbTNbMF1bMl0gPSBtMVswXVsyXSAqIG0yWzBd
WzJdOworCW0zWzFdWzBdID0gbTFbMV1bMF0gKiBtMlsxXVswXTsKKwltM1sxXVsxXSA9IG0xWzFd
WzFdICogbTJbMV1bMV07CisJbTNbMV1bMl0gPSBtMVsxXVsyXSAqIG0yWzFdWzJdOworCW0zWzJd
WzBdID0gbTFbMl1bMF0gKiBtMlsyXVswXTsKKwltM1syXVsxXSA9IG0xWzJdWzFdICogbTJbMl1b
MV07CisJbTNbMl1bMl0gPSBtMVsyXVsyXSAqIG0yWzJdWzJdOworCisJcmVzdWx0WzBdICs9IG0z
WzBdWzBdOworCXJlc3VsdFswXSArPSBtM1swXVsxXTsKKwlyZXN1bHRbMF0gKz0gbTNbMF1bMl07
CisJcmVzdWx0WzFdICs9IG0zWzFdWzBdOworCXJlc3VsdFsxXSArPSBtM1sxXVsxXTsKKwlyZXN1
bHRbMV0gKz0gbTNbMV1bMl07CisJcmVzdWx0WzJdICs9IG0zWzJdWzBdOworCXJlc3VsdFsyXSAr
PSBtM1syXVsxXTsKKwlyZXN1bHRbMl0gKz0gbTNbMl1bMl07CisKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KHJlc3VsdCAvIDIuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJpeENv
bXBNdWx0L21hdHJpeE11bHRDb21wX21hdDNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF0cml4Q29t
cE11bHQvbWF0cml4TXVsdENvbXBfbWF0M192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI4MjVhMzAz
MDdjOGY4MDIwNGE2NjY0MWJkMGQ4ZmNiZjk2ZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21hdHJpeENvbXBNdWx0L21hdHJpeE11bHRDb21wX21hdDNfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMzcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwltYXQzIG0xID0gbWF0MyhndGZfQ29sb3Iu
cmdiLCBndGZfQ29sb3IucmdiLCBndGZfQ29sb3IucmdiKTsKKwltYXQzIG0yID0gbWF0MygxLjAs
IDAuNSwgMC41LCAwLjUsIDEuMCwgMC41LCAwLjUsIDAuNSwgMS4wKTsKKwltYXQzIG0zID0gbWF0
MygwLjApOworCXZlYzMgcmVzdWx0ID0gdmVjMygwLjAsIDAuMCwgMC4wKTsKKworCW0zID0gbWF0
cml4Q29tcE11bHQobTEsIG0yKTsKKworCXJlc3VsdFswXSArPSBtM1swXVswXTsKKwlyZXN1bHRb
MF0gKz0gbTNbMF1bMV07CisJcmVzdWx0WzBdICs9IG0zWzBdWzJdOworCisJcmVzdWx0WzFdICs9
IG0zWzFdWzBdOworCXJlc3VsdFsxXSArPSBtM1sxXVsxXTsKKwlyZXN1bHRbMV0gKz0gbTNbMV1b
Ml07CisKKwlyZXN1bHRbMl0gKz0gbTNbMl1bMF07CisJcmVzdWx0WzJdICs9IG0zWzJdWzFdOwor
CXJlc3VsdFsyXSArPSBtM1syXVsyXTsKKworCWNvbG9yID0gdmVjNChyZXN1bHQgLyAyLjAsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhNdWx0
Q29tcF9tYXQzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXRyaXhDb21wTXVsdC9tYXRyaXhN
dWx0Q29tcF9tYXQzX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ0YzY4Y2QzNGIyMjA1M2Uy
NDIwZDJiMDNmNDhkN2U2MGE1NTEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21hdHJp
eENvbXBNdWx0L21hdHJpeE11bHRDb21wX21hdDNfdmVydF9yZWYudmVydApAQCAtMCwwICsxLDQ3
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWF0MyBtMSA9IG1hdDMoZ3RmX0NvbG9yLnJnYiwg
Z3RmX0NvbG9yLnJnYiwgZ3RmX0NvbG9yLnJnYik7CisJbWF0MyBtMiA9IG1hdDMoMS4wLCAwLjUs
IDAuNSwgMC41LCAxLjAsIDAuNSwgMC41LCAwLjUsIDEuMCk7CisJbWF0MyBtMyA9IG1hdDMoMC4w
KTsKKwl2ZWMzIHJlc3VsdCA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7CisKKwltM1swXVswXSA9IG0x
WzBdWzBdICogbTJbMF1bMF07CisJbTNbMF1bMV0gPSBtMVswXVsxXSAqIG0yWzBdWzFdOworCW0z
WzBdWzJdID0gbTFbMF1bMl0gKiBtMlswXVsyXTsKKworCW0zWzFdWzBdID0gbTFbMV1bMF0gKiBt
MlsxXVswXTsKKwltM1sxXVsxXSA9IG0xWzFdWzFdICogbTJbMV1bMV07CisJbTNbMV1bMl0gPSBt
MVsxXVsyXSAqIG0yWzFdWzJdOworCisJbTNbMl1bMF0gPSBtMVsyXVswXSAqIG0yWzJdWzBdOwor
CW0zWzJdWzFdID0gbTFbMl1bMV0gKiBtMlsyXVsxXTsKKwltM1syXVsyXSA9IG0xWzJdWzJdICog
bTJbMl1bMl07CisKKwlyZXN1bHRbMF0gKz0gbTNbMF1bMF07CisJcmVzdWx0WzBdICs9IG0zWzBd
WzFdOworCXJlc3VsdFswXSArPSBtM1swXVsyXTsKKworCXJlc3VsdFsxXSArPSBtM1sxXVswXTsK
KwlyZXN1bHRbMV0gKz0gbTNbMV1bMV07CisJcmVzdWx0WzFdICs9IG0zWzFdWzJdOworCisJcmVz
dWx0WzJdICs9IG0zWzJdWzBdOworCXJlc3VsdFsyXSArPSBtM1syXVsxXTsKKwlyZXN1bHRbMl0g
Kz0gbTNbMl1bMl07CisKKwljb2xvciA9IHZlYzQocmVzdWx0IC8gMi4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvaW5w
dXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTI2OTJkNjc4MWE2Yjg2MzRmYjgzZmZiYzQ3Yzc2NmUy
MjI1MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L2lucHV0LnJ1bi50eHQKQEAg
LTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQu
CittYXhfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4XzAwMV90
b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfMDAxX3RvXzAwNi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmMzZkMjJjZGUyNjc1N2ExYWZkZWY1ZmUyNDYxMzhiMjQ0ODZmOTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXgvbWF4XzAwMV90b18wMDYuaHRtbApAQCAtMCwwICsxLDEwOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9U
IEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNM
IGNvbmZvcm1hbmNlIHRlc3Q6IG1heF8wMDFfdG9fMDA2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5u
ZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1heF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGZf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtYXhfZmxvYXRfZnJhZ194dmFyeV95Y29u
c3RoYWxmLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWF4X2Zsb2F0X2ZyYWdfeHZh
cnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIm1heF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIm1heF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogIm1heF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1heF92ZWMzX2ZyYWdf
eHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1heF92ZWMz
X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1h
eF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIm1heF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZf
cmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1heF9mbG9hdF92ZXJ0X3h2YXJ5X3lj
b25zdGhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtYXhfZmxvYXRfdmVydF94dmFy
eV95Y29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAibWF4X3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJtYXhfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJtYXhfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtYXhfdmVjM192
ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1h
eF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
Im1heF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhf
ZmxvYXRfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X2Zsb2F0
X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2N2IwYjRiZjc2ZjM3Njc1
ODRiZTM0OGQyMmY3Nzc5OGNiZGFlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgv
bWF4X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IG1heF9jID0gMC41OworCWZsb2F0
IGMgPSBjb2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQobWF4KGMsIG1heF9jKSwgMC4wLCAw
LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X2Zsb2F0X2ZyYWdfeHZh
cnlfeWNvbnN0aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfZmxvYXRfZnJhZ194dmFy
eV95Y29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYWRlZGIwMjMwMzU4ODAyZGVlZTli
ZTIyZjMxNzJlNWZjMTM2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X2Zs
b2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsxLDIxIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtYXhfYyA9IDAuNTsKKwlmbG9hdCBj
ID0gY29sb3IucjsKKwlpZihjIDwgbWF4X2MpIGMgPSBtYXhfYzsKKworCWdsX0ZyYWdDb2xvciA9
IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4
X2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF9mbG9h
dF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTYyNGUxM2ZhNzI0YWY4
ZTQ5OWU0Zjc3MjBjMzBjZGUyM2U1MjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4
L21heF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydApAQCAtMCwwICsxLDIwIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgbWF4X2MgPSAwLjU7CisJZmxvYXQgYyA9
IGd0Zl9Db2xvci5yOworCWNvbG9yID0gdmVjNChtYXgoYywgbWF4X2MpLCAwLjAsIDAuMCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfZmxvYXRfdmVydF94dmFyeV95
Y29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF9mbG9hdF92ZXJ0X3h2YXJ5X3lj
b25zdGhhbGZfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlNTA1NGIyZGFjZjdiZDBhYTI0N2Q2ZDA2
YzU5MWQ2YWE3NGZjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfZmxvYXRf
dmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtYXhfYyA9IDAuNTsKKwlmbG9hdCBjID0gZ3RmX0Nv
bG9yLnI7CisJaWYoYyA8IG1heF9jKSBjID0gbWF4X2M7CisKKwljb2xvciA9IHZlYzQoYywgMC4w
LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzJfZnJh
Z194dmFyeV95Y29uc3RoYWxmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzJfZnJhZ194dmFy
eV95Y29uc3RoYWxmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNmOGYwYmY3MDhlNTVkYjgyYmY4MDJjYWU1
OWQzNGUxMzdmODEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjMl9m
cmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCB2ZWMyIG1heF9jID0gdmVjMigwLjUsIDAuNSk7CisJdmVjMiBj
ID0gY29sb3Iucmc7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChtYXgoYywgbWF4X2MpLCAwLjAsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzJfZnJhZ194dmFyeV95Y29u
c3RoYWxmX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0
aGFsZl9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTM1ZGJkMGM1NTZhYmExYTcwOGM1ZWIzMjg0ZDU3
OGQyMmI4NTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMyX2ZyYWdf
eHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCB2ZWMyIG1heF9jID0gdmVjMigwLjUsIDAuNSk7CisJdmVjMiBj
ID0gY29sb3Iucmc7CisJaWYoY1swXSA8IG1heF9jWzBdKSBjWzBdID0gbWF4X2NbMF07CisJaWYo
Y1sxXSA8IG1heF9jWzFdKSBjWzFdID0gbWF4X2NbMV07CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KGMsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjMl92ZXJ0
X3h2YXJ5X3ljb25zdGhhbGYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjMl92ZXJ0X3h2YXJ5
X3ljb25zdGhhbGYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDA4OWM3NjI4MjkzY2M3ZTRhODhiMzFlN2Zl
YjI1NjNkYmJmOTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMyX3Zl
cnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwljb25zdCB2ZWMyIG1heF9jID0gdmVjMigwLjUsIDAuNSk7CisJdmVjMiBjID0gZ3Rm
X0NvbG9yLnJnOworCWNvbG9yID0gdmVjNChtYXgoYywgbWF4X2MpLCAwLjAsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxm
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NzA1YTk0MzhmYjJlNzkyMTk5MjQ3YjJhMzZmMTVhMjU0YzZk
MTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMyX3ZlcnRfeHZhcnlf
eWNvbnN0aGFsZl9yZWYudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgdmVjMiBtYXhfYyA9IHZlYzIoMC41LCAwLjUpOworCXZlYzIgYyA9IGd0Zl9Db2xv
ci5yZzsKKwlpZihjWzBdIDwgbWF4X2NbMF0pIGNbMF0gPSBtYXhfY1swXTsKKwlpZihjWzFdIDwg
bWF4X2NbMV0pIGNbMV0gPSBtYXhfY1sxXTsKKworCWNvbG9yID0gdmVjNChjLCAwLjAsIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzNfZnJhZ194dmFyeV95Y29u
c3RoYWxmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzNfZnJhZ194dmFyeV95Y29uc3RoYWxm
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA3MDljOTQ3NzcxNzAxYTFkYTVkOWFjNWI1NmQyNjYzMzAyYjA2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjM19mcmFnX3h2YXJ5X3lj
b25zdGhhbGYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwljb25zdCB2ZWMzIG1heF9jID0gdmVjMygwLjUsIDAuNSwgMC41KTsKKwl2ZWMzIGMgPSBjb2xv
ci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChtYXgoYywgbWF4X2MpLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21heF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGZfcmVmLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmUxYzU5MTE5Y2FiYjgxOWMwM2U4YjlkNWE4NDJlOWQwMDI2ZjA0Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21heC9tYXhfdmVjM19mcmFnX3h2YXJ5X3ljb25z
dGhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgdmVjMyBtYXhfYyA9IHZlYzMoMC41LCAwLjUsIDAuNSk7CisJdmVjMyBjID0gY29s
b3IucmdiOworCWlmKGNbMF0gPCBtYXhfY1swXSkgY1swXSA9IG1heF9jWzBdOworCWlmKGNbMV0g
PCBtYXhfY1sxXSkgY1sxXSA9IG1heF9jWzFdOworCWlmKGNbMl0gPCBtYXhfY1syXSkgY1syXSA9
IG1heF9jWzJdOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWF4L21heF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF4L21heF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE3Mzg5NzMyMTM5NjQ1YzNlYzUwMGQ3OTU1MDZlNmVhMTI2NGM2YWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tYXgvbWF4X3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxmLnZlcnQKQEAg
LTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzMgbWF4X2MgPSB2
ZWMzKDAuNSwgMC41LCAwLjUpOworCXZlYzMgYyA9IGd0Zl9Db2xvci5yZ2I7CisJY29sb3IgPSB2
ZWM0KG1heChjLCBtYXhfYyksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tYXgv
bWF4X3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWF4L21h
eF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA5ZGVk
ZTBiN2YzMmJjODMwZmM0YzYyYzg3YzE1NzM1Mzc0MzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWF4L21heF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydApAQCAtMCww
ICsxLDI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgdmVjMyBtYXhfYyA9IHZlYzMo
MC41LCAwLjUsIDAuNSk7CisJdmVjMyBjID0gZ3RmX0NvbG9yLnJnYjsKKwlpZihjWzBdIDwgbWF4
X2NbMF0pIGNbMF0gPSBtYXhfY1swXTsKKwlpZihjWzFdIDwgbWF4X2NbMV0pIGNbMV0gPSBtYXhf
Y1sxXTsKKwlpZihjWzJdIDwgbWF4X2NbMl0pIGNbMl0gPSBtYXhfY1syXTsKKworCWNvbG9yID0g
dmVjNChjLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWluL2lucHV0LnJ1bi50
eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9taW4vaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzY3NWRlYWU2ZGEx
ZGZkMjM2ODVlY2YzNzlmMGU2M2IwMTk5ZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWluL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZC4gRE8gTk9UIEVESVQuCittaW5fMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9taW4vbWluXzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9taW5fMDAxX3Rv
XzAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOTA3MWY4OTE1NTRlOGE4NmVkNTkxYzA2ODFkZjk1MGU0
MTllYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluXzAwMV90b18wMDYuaHRt
bApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IG1pbl8wMDFfdG9fMDA2Lmh0
bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZw
eDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1pbl9mbG9hdF9m
cmFnX3h2YXJ5X3ljb25zdGhhbGZfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtaW5f
ZmxvYXRfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAibWluX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1pbl92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFs
Zl9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm1pbl92ZWMyX2ZyYWdfeHZhcnlfeWNv
bnN0aGFsZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm1pbl92ZWMyX2ZyYWdfeHZh
cnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIm1pbl92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIm1pbl92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogIm1pbl92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1pbl9mbG9hdF92
ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1p
bl9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJtaW5fZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibWluX3ZlYzJfdmVydF94dmFyeV95Y29uc3Ro
YWxmX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtaW5fdmVjMl92ZXJ0X3h2YXJ5
X3ljb25zdGhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtaW5fdmVjMl92ZXJ0X3h2
YXJ5X3ljb25zdGhhbGYudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJtaW5fdmVjM192ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIm1pbl92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogIm1pbl92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML21pbi9taW5fZmxvYXRfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9taW4vbWluX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzM2NiODk3NjBiOTMyN2UwZmRhNjEwMTQwMGEzYjQ0NmQyNDUxZmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFn
CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0
IG1pbl9jID0gMC41OworCWZsb2F0IGMgPSBjb2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
bWluKGMsIG1pbl9jKSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
aW4vbWluX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21p
bi9taW5fZmxvYXRfZnJhZ194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5
OGI1MzQxZDdmYWU0ZjVlMWZkNTgzZjU5Nzc3NzA2OTFmMjg5ZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9taW4vbWluX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpA
QCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBt
aW5fYyA9IDAuNTsKKwlmbG9hdCBjID0gY29sb3IucjsKKwlpZihjID4gbWluX2MpIGMgPSBtaW5f
YzsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9taW4vbWluX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWluL21pbl9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYWRjMTg1ZjJhNjEzZTlhOTJhODFiYzVjNDU5ZWVhN2I4YThiNTA1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbWluL21pbl9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVy
dApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgbWlu
X2MgPSAwLjU7CisJZmxvYXQgYyA9IGd0Zl9Db2xvci5yOworCWNvbG9yID0gdmVjNChtaW4oYywg
bWluX2MpLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9t
aW5fZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWluL21p
bl9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQwY2Uy
OGUyMDNiODMxNTAxMjUxZmFiZTJmZjI0MGQ3ZmRiYzVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21pbi9taW5fZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0CkBAIC0w
LDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBtaW5fYyA9IDAu
NTsKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisJaWYoYyA+IG1pbl9jKSBjID0gbWluX2M7CisK
Kwljb2xvciA9IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9taW4vbWluX3ZlYzJfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
aW4vbWluX3ZlYzJfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcwN2U4
OTQ2Y2NkODAyNzYwN2MzOTkxOGYyZWNhYjNkNGU1MTE5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML21pbi9taW5fdmVjMl9mcmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZwpAQCAtMCwwICsx
LDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMyIG1pbl9jID0gdmVj
MigwLjUsIDAuNSk7CisJdmVjMiBjID0gY29sb3Iucmc7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCht
aW4oYywgbWluX2MpLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWlu
X3ZlYzJfZnJhZ194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWluL21pbl92
ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzkwYThlYTFh
YTQwYTExNzc5MmQ1YzY3ZDU3YWZjZDYxM2Y1Y2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbWluL21pbl92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsx
LDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgbWluX2MgPSB2
ZWMyKDAuNSwgMC41KTsKKwl2ZWMyIGMgPSBjb2xvci5yZzsKKwlpZihjWzBdID4gbWluX2NbMF0p
IGNbMF0gPSBtaW5fY1swXTsKKwlpZihjWzFdID4gbWluX2NbMV0pIGNbMV0gPSBtaW5fY1sxXTsK
KworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYywgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWluL21pbl92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWluL21pbl92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NjVk
NTg2YzFlZDkwNzdhNmUxYmZjN2FhMDJiNjEwM2QzMzViNTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9taW4vbWluX3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmLnZlcnQKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgbWluX2MgPSB2ZWMyKDAu
NSwgMC41KTsKKwl2ZWMyIGMgPSBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0KG1pbihjLCBt
aW5fYyksIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9taW5fdmVj
Ml92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzJf
dmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNzI5ODUyYjA3NjM5
ZDUxYzA5MTZhNGYwZmVjODhlNmM3NzE3OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
aW4vbWluX3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjMg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMyIG1pbl9jID0gdmVjMigwLjUsIDAu
NSk7CisJdmVjMiBjID0gZ3RmX0NvbG9yLnJnOworCWlmKGNbMF0gPiBtaW5fY1swXSkgY1swXSA9
IG1pbl9jWzBdOworCWlmKGNbMV0gPiBtaW5fY1sxXSkgY1sxXSA9IG1pbl9jWzFdOworCisJY29s
b3IgPSB2ZWM0KGMsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9t
aW5fdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9taW5fdmVj
M19mcmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmVmNmJiYmIwM2Q2YmQy
YWQxMjUxNjhlYzdjMTE4MDcyMTk0MmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWlu
L21pbl92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzMgbWluX2MgPSB2ZWMzKDAuNSwgMC41
LCAwLjUpOworCXZlYzMgYyA9IGNvbG9yLnJnYjsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KG1pbihj
LCBtaW5fYyksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzNfZnJh
Z194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWluL21pbl92ZWMzX2ZyYWdf
eHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDQ1NjQxNjUyYTA1NzY0ZTU1
NGZlYjdiODMxNTIxMTAzNTk0MDFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWluL21p
bl92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsxLDIzIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMzIG1pbl9jID0gdmVjMygwLjUsIDAu
NSwgMC41KTsKKwl2ZWMzIGMgPSBjb2xvci5yZ2I7CisJaWYoY1swXSA+IG1pbl9jWzBdKSBjWzBd
ID0gbWluX2NbMF07CisJaWYoY1sxXSA+IG1pbl9jWzFdKSBjWzFdID0gbWluX2NbMV07CisJaWYo
Y1syXSA+IG1pbl9jWzJdKSBjWzJdID0gbWluX2NbMl07CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0
KGMsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzNfdmVydF94dmFy
eV95Y29uc3RoYWxmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzNfdmVydF94dmFyeV95Y29u
c3RoYWxmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM0MzY4MDEwZDM0YjExNGQ3OTAyMzRjZjg2MWI4MzQw
ZmMxZjMyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21pbi9taW5fdmVjM192ZXJ0X3h2
YXJ5X3ljb25zdGhhbGYudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgdmVjMyBtaW5fYyA9IHZlYzMoMC41LCAwLjUsIDAuNSk7CisJdmVjMyBjID0gZ3Rm
X0NvbG9yLnJnYjsKKwljb2xvciA9IHZlYzQobWluKGMsIG1pbl9jKSwgMS4wKTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21pbi9taW5fdmVjM192ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0YTE1OGQzOTlmODkwMjQ2NjYxNmZkYTNmZTg4ZGQwZWJmM2NhOTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taW4vbWluX3ZlYzNfdmVydF94dmFyeV95Y29u
c3RoYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCB2ZWMzIG1pbl9jID0gdmVjMygwLjUsIDAuNSwgMC41KTsKKwl2ZWMzIGMgPSBndGZfQ29s
b3IucmdiOworCWlmKGNbMF0gPiBtaW5fY1swXSkgY1swXSA9IG1pbl9jWzBdOworCWlmKGNbMV0g
PiBtaW5fY1sxXSkgY1sxXSA9IG1pbl9jWzFdOworCWlmKGNbMl0gPiBtaW5fY1syXSkgY1syXSA9
IG1pbl9jWzJdOworCisJY29sb3IgPSB2ZWM0KGMsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9taXgvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9pbnB1dC5ydW4udHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxYzdlYWQ5ODA1YmVkZWUzZWJlOGM3MmEwODY4ZTIyNmQxMmU1NDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taXgvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAK
KyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK21peF8wMDFfdG9f
MDA2Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfMDAxX3RvXzAwNi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbWl4L21peF8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdlZTAwNWQ5YmQx
ZTA5ZmQxYWU2YjE0NmU0N2ZlMDM2YjI1NzA3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L21peC9taXhfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2Ug
dGVzdDogbWl4XzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3Rz
LmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9
IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAi
dGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAibWl4X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3Jl
Zi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWl4X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0
aGFsZl9hY29uc3RoYWxmLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibWl4X2Zsb2F0
X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWl4X3ZlYzJfZnJhZ194dmFyeV95Y29uc3RoYWxm
X2Fjb25zdGhhbGZfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtaXhfdmVjMl9mcmFn
X3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogIm1peF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibWl4X3ZlYzNfZnJhZ194dmFy
eV95Y29uc3RoYWxmX2Fjb25zdGhhbGZfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJt
aXhfdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogIm1peF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxm
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibWl4
X2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJtaXhfZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhh
bGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtaXhfZmxvYXRfdmVydF94dmFyeV95Y29u
c3RoYWxmX2Fjb25zdGhhbGYudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICJtaXhfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZl9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibWl4X3ZlYzJfdmVydF94dmFyeV95Y29u
c3RoYWxmX2Fjb25zdGhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtaXhfdmVjMl92
ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIm1peF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFs
Zl9hY29uc3RoYWxmX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtaXhfdmVjM192
ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogIm1peF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWl4L21peF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWl4L21peF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFs
Zi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5MjFiNTc1MmFhMTg0YTgwOTM4YjdmYTVmZTAwYWM0OWZiYzk4
ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taXgvbWl4X2Zsb2F0X2ZyYWdfeHZhcnlf
eWNvbnN0aGFsZl9hY29uc3RoYWxmLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgeSA9IDAuNTsKKwljb25zdCBmbG9hdCBhID0gMC41
OworCWZsb2F0IGMgPSBjb2xvci5yOworCWdsX0ZyYWdDb2xvciA9IHZlYzQobWl4KGMsIHksIGEp
LCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfZmxvYXRf
ZnJhZ194dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGZfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taXgv
bWl4X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY5YWVjOTFiZGUzOTQ4ZTAyNjdkYzhhMDQxOTc4NGU3NDc2ZTdhMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9taXgvbWl4X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9h
Y29uc3RoYWxmX3JlZi5mcmFnCkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWNvbnN0IGZsb2F0IHkgPSAwLjU7CisJY29uc3QgZmxvYXQgYSA9IDAuNTsKKwlmbG9h
dCBjID0gY29sb3IucjsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoYyAqICgxLjAgLSBhKSArIHkg
KiBhLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfZmxv
YXRfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGYudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9t
aXhfZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZGQxMDk4M2ZkMDAzNjE0ODJjMWE2MTQzY2MzN2Q1MDQ4OWYyZTM2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbWl4L21peF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0
aGFsZi52ZXJ0CkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBm
bG9hdCB5ID0gMC41OworCWNvbnN0IGZsb2F0IGEgPSAwLjU7CisJZmxvYXQgYyA9IGd0Zl9Db2xv
ci5yOworCWNvbG9yID0gdmVjNChtaXgoYywgeSwgYSksIDAuMCwgMC4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGZf
YWNvbnN0aGFsZl9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfZmxvYXRfdmVydF94dmFyeV95
Y29uc3RoYWxmX2Fjb25zdGhhbGZfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM3OWExZWIwZTM0ZWU5
NWE4ODYyY2Q0Y2FhMDQwNzgwMGM4Yjk4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21p
eC9taXhfZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGZfcmVmLnZlcnQKQEAg
LTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IHkgPSAwLjU7
CisJY29uc3QgZmxvYXQgYSA9IDAuNTsKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisKKwljb2xv
ciA9IHZlYzQoYyAqICgxLjAgLSBhKSArIHkgKiBhLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNv
bnN0aGFsZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFs
Zl9hY29uc3RoYWxmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5MmExNjdkZjE2M2Q3NmUxZTc3OTY1MWRm
MDgyZDNjMDFkMDkwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfdmVjMl9m
cmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgeSA9IHZlYzIoMC41LCAwLjUpOwor
CWNvbnN0IHZlYzIgYSA9IHZlYzIoMC41LCAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQobWl4
KGNvbG9yLnJnLCB5LCBhKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4
L21peF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbWl4L21peF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBiODE0YjgxMjc4MzE1MjU4MDEyZWVkYjMwY2RjNGI3OTBkNTFmYTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9taXgvbWl4X3ZlYzJfZnJhZ194dmFyeV95Y29u
c3RoYWxmX2Fjb25zdGhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJY29uc3QgdmVjMiB5ID0gdmVjMigwLjUsIDAuNSk7CisJY29uc3QgdmVj
MiBhID0gdmVjMigwLjUsIDAuNSk7CisJdmVjMiBjID0gY29sb3Iucmc7CisKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KGMgKiAoMS4wIC0gYSkgKyB5ICogYSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbWl4L21peF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9taXgvbWl4X3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25z
dGhhbGYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGIzNTdhZjMzNWQ0MTdiOTUxMjg4MDMyYmI4NTM2N2Ew
ODgwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMyX3ZlcnRfeHZh
cnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCWNvbnN0IHZlYzIgeSA9IHZlYzIoMC41LCAwLjUpOworCWNvbnN0IHZlYzIg
YSA9IHZlYzIoMC41LCAwLjUpOworCWNvbG9yID0gdmVjNChtaXgoZ3RmX0NvbG9yLnJnLCB5LCBh
KSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMyX3Zl
cnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21p
eF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE5YWY4ZDEwMjg1YzMxZTIxNWM2NTNjYTdkYzVlMWU5MjU1NjUwYWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9taXgvbWl4X3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25z
dGhhbGZfcmVmLnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bnN0IHZlYzIgeSA9IHZlYzIoMC41LCAwLjUpOworCWNvbnN0IHZlYzIgYSA9IHZlYzIoMC41LCAw
LjUpOworCXZlYzIgYyA9IGd0Zl9Db2xvci5yZzsKKworCWNvbG9yID0gdmVjNChjICogKDEuMCAt
IGEpICsgeSAqIGEsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21peC9t
aXhfdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNvbnN0aGFsZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWl4L21peF92ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWE1NWQzZmYwOTg1YzMxODFlMTQwYmI5ZGY2NGYxMzM3ZTFlMWJhMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21peC9taXhfdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGZfYWNv
bnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IHZlYzMgeSA9IHZlYzMoMC41LCAwLjUsIDAuNSk7CisJY29uc3QgdmVjMyBhID0gdmVj
MygwLjUsIDAuNSwgMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KG1peChjb2xvci5yZ2IsIHks
IGEpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMzX2ZyYWdfeHZh
cnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMz
X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4
ZTQ0YWFlOWU2NTJlODQzYWVlYWU5OTJhZjA5YmZkOWQzZWMxZTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9taXgvbWl4X3ZlYzNfZnJhZ194dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGZf
cmVmLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29u
c3QgdmVjMyB5ID0gdmVjMygwLjUsIDAuNSwgMC41KTsKKwljb25zdCB2ZWMzIGEgPSB2ZWMzKDAu
NSwgMC41LCAwLjUpOworCXZlYzMgYyA9IGNvbG9yLnJnYjsKKworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoYyAqICgxLjAgLSBhKSArIHkgKiBhLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bWl4L21peF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmLnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9taXgvbWl4X3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hN2FiYmQ2NTNkYjQ2MmZkY2NjZTA0ODM0NmU5ZWM5ZWU5MzgzMTc3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFs
Zl9hY29uc3RoYWxmLnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IHZlYzMgeSA9IHZlYzMoMC41LCAwLjUsIDAuNSk7CisJY29uc3QgdmVjMyBhID0gdmVj
MygwLjUsIDAuNSwgMC41KTsKKwljb2xvciA9IHZlYzQobWl4KGd0Zl9Db2xvci5yZ2IsIHksIGEp
LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMzX3ZlcnRfeHZh
cnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbWl4L21peF92ZWMz
X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9hY29uc3RoYWxmX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0
YWJhMmE5YTEwMmRkNDE0NTAzNjNhNmJhNGJhNWQxY2U2Y2U4NjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9taXgvbWl4X3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxmX2Fjb25zdGhhbGZf
cmVmLnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZl
YzMgeSA9IHZlYzMoMC41LCAwLjUsIDAuNSk7CisJY29uc3QgdmVjMyBhID0gdmVjMygwLjUsIDAu
NSwgMC41KTsKKwl2ZWMzIGMgPSBndGZfQ29sb3IucmdiOworCisJY29sb3IgPSB2ZWM0KGMgKiAo
MS4wIC0gYSkgKyB5ICogYSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9p
bnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM2
OWU1NzZmODQ2ZjkzYjIzYmY2M2IwYjgzYjRjMGFkYWIxZjVhOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML21vZC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorbW9kXzAwMV90b18wMDguaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF8wMDFfdG9fMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tb2Qv
bW9kXzAwMV90b18wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzU3NzMwNGUyYzA2M2I1YjQ4MzUzNDkz
NmM3MDQ4ZjVkNmE4Mjg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF8wMDFf
dG9fMDA4Lmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBtb2RfMDAx
X3RvXzAwOC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJt
b2RfZmxvYXRfZnJhZ194dmFyeV95Y29uc3QxX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAibW9kX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0MS5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogIm1vZF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdDEudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtb2RfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdDFf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJtb2RfdmVjMl9mcmFnX3h2YXJ5X3ljb25z
dDEuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtb2RfdmVjMl9mcmFnX3h2YXJ5X3lj
b25zdDEudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJt
b2RfdmVjM19mcmFnX3h2YXJ5X3ljb25zdDFfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJtb2RfdmVjM19mcmFnX3h2YXJ5X3ljb25zdDEuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJtb2RfdmVjM19mcmFnX3h2YXJ5X3ljb25zdDEudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtb2RfZmxvYXRfdmVydF94dmFyeV95Y29uc3Qx
X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtb2RfZmxvYXRfdmVydF94dmFyeV95
Y29uc3QxLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibW9kX2Zsb2F0X3ZlcnRfeHZhcnlf
eWNvbnN0MS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIm1vZF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0MV9yZWYudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAibW9kX3ZlYzJfdmVydF94dmFyeV95Y29uc3QxLnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAibW9kX3ZlYzJfdmVydF94dmFyeV95Y29uc3QxLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibW9kX3ZlYzNfdmVydF94dmFyeV95Y29u
c3QxX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJtb2RfdmVjM192ZXJ0X3h2YXJ5
X3ljb25zdDEudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtb2RfdmVjM192ZXJ0X3h2YXJ5
X3ljb25zdDEudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAg
ICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAg
ICJ0eXBlIjogInVuaWZvcm00ZiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDAuMCwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIm1vZF94X2xhcmdlX3lfbGFyZ2VfdmVydC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogIm1vZF94X2xhcmdlX3lfbGFyZ2VfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmIiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjAs
CisgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibW9kX3hfbGFyZ2VfeV9s
YXJnZV9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibW9kX3hfbGFyZ2VfeV9s
YXJnZV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0K
KyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF9mbG9hdF9mcmFnX3h2YXJ5X3ljb25z
dDEuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfZmxvYXRfZnJhZ194dmFyeV95Y29uc3QxLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzNlYzU5YjllOTEyMjk0NmYxN2VhNGY2NTE2ZWIyMmU0NDhkYjdkYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfZmxvYXRfZnJhZ194dmFyeV95Y29uc3Qx
LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQg
YyA9IDEwLjAgKiAyLjAgKiAoY29sb3IuciAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCht
b2QoYywgMS4wKSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tb2Qv
bW9kX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0MV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2Rf
ZmxvYXRfZnJhZ194dmFyeV95Y29uc3QxX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNmU5MDdmMzQ1
OTI5ZDU3YzMxYzNhYzdlNWJjMTBhMmNmOTU3MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9tb2QvbW9kX2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0MV9yZWYuZnJhZwpAQCAtMCwwICsxLDE5
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTAuMCAqIDIuMCAqIChj
b2xvci5yIC0gMC41KTsKKwljID0gYyAtIDEuMCAqIGZsb29yKGMgLyAxLjApOworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoYywgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9t
b2QvbW9kX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0MS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF9m
bG9hdF92ZXJ0X3h2YXJ5X3ljb25zdDEudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWY0YTk3MDA4Zjk5NTFk
OWIyZDE4YzdiZDFkZTFlNzQyYjY2MTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9k
L21vZF9mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdDEudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAw
LjUpOworCWNvbG9yID0gdmVjNChtb2QoYywgMS4wKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9tb2QvbW9kX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0MV9yZWYu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML21vZC9tb2RfZmxvYXRfdmVydF94dmFyeV95Y29uc3QxX3JlZi52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZhNzA5YTkxYTQ0NjMwNmNhNTg3MTI4MTQ5NTI3NzZjY2MwMjM1M2UKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tb2QvbW9kX2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0
MV9yZWYudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQg
YyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWMgPSBjIC0gMS4wICogZmxv
b3IoYyAvIDEuMCk7CisJY29sb3IgPSB2ZWM0KGMsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0MS5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbW9kL21vZF92ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0MS5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2NWI2MDU0ZDgzYTJlNDBjM2NjYjUwMjVjMjgxY2ZjOWRjZWVjYjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tb2QvbW9kX3ZlYzJfZnJhZ194dmFyeV95Y29uc3QxLmZyYWcKQEAgLTAs
MCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTAuMCAqIDIu
MCAqIChjb2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChtb2QoYywgMS4wKSwg
MC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMyX2ZyYWdfeHZh
cnlfeWNvbnN0MV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjMl9mcmFnX3h2YXJ5X3lj
b25zdDFfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ5MGQ2NDU2OWE0ZDU3OTZjZDhhYjFmNTRiMWMw
MTE4YzA2YzYxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjMl9mcmFn
X3h2YXJ5X3ljb25zdDFfcmVmLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMiBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisJYyA9
IGMgLSAxLjAgKiBmbG9vcihjIC8gMS4wKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMsIDAuMCwg
MS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjMl92ZXJ0X3h2YXJ5X3lj
b25zdDEudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdDEudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNjIyYjlhMzU5MmQ3NGFkMzExZjM2M2U1OTAwODQyYTU0ZjhjMDhkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0
MS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAx
MC4wICogMi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KG1vZChjLCAx
LjApLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tb2QvbW9kX3ZlYzJf
dmVydF94dmFyeV95Y29uc3QxX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMyX3ZlcnRf
eHZhcnlfeWNvbnN0MV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmY5YzQ2YjAwNTFhNmYxYWYzNmIy
N2U2ZWE1NTU5YzVhOTQxMTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92
ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0MV9yZWYudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTAuMCAqIDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUp
OworCWMgPSBjIC0gMS4wICogZmxvb3IoYyAvIDEuMCk7CisJY29sb3IgPSB2ZWM0KGMsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjM19mcmFnX3h2YXJ5
X3ljb25zdDEuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjM19mcmFnX3h2YXJ5X3ljb25zdDEu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWNkNDIzZGQ4NTczNjIxODIzNWM1NjA4M2Q1Njg4MWFlNzUwNjUy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMzX2ZyYWdfeHZhcnlfeWNv
bnN0MS5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IDEwLjAgKiAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KG1vZChjLCAxLjApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92
ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0MV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjM19m
cmFnX3h2YXJ5X3ljb25zdDFfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljYmZmYjdlZjllOWYxNzc5
NWQ5NTQyZmEzYzhiNGM2ZDM0YjZiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9t
b2RfdmVjM19mcmFnX3h2YXJ5X3ljb25zdDFfcmVmLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMTAuMCAqIDIuMCAqIChjb2xvci5yZ2Ig
LSAwLjUpOworCWMgPSBjIC0gMS4wICogZmxvb3IoYyAvIDEuMCk7CisJZ2xfRnJhZ0NvbG9yID0g
dmVjNChjLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMzX3ZlcnRf
eHZhcnlfeWNvbnN0MS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92ZWMzX3ZlcnRfeHZhcnlfeWNv
bnN0MS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMTRiZWNmOGYyMDQzMzU0YmVlOTM1MThhODc3NDc0ZGE0
NDVkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9tb2QvbW9kX3ZlYzNfdmVydF94dmFy
eV95Y29uc3QxLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzMgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3IgPSB2ZWM0
KG1vZChjLCAxLjApLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF92
ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0MV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfdmVjM192
ZXJ0X3h2YXJ5X3ljb25zdDFfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyZmNmMDdiMDJhYTA3M2M1
MDBhNzk3MTBhM2E3NzQyMjM1Y2ZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9t
b2RfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdDFfcmVmLnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDEwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAt
IDAuNSk7CisJYyA9IGMgLSAxLjAgKiBmbG9vcihjIC8gMS4wKTsKKwljb2xvciA9IHZlYzQoYywg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfeF9sYXJnZV95X2xhcmdl
X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML21vZC9tb2RfeF9sYXJnZV95X2xhcmdlX2ZyYWcuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTcxMjhlYzI3ZjE0N2Y3ZTE4ZWIxMTQwY2EzNjQwOTg3Zjk5N2YxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbW9kL21vZF94X2xhcmdlX3lfbGFyZ2VfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQobW9kKDMwMC4wLCAxMDAuMCksIDAuMCwgMC4wLCAxLjApOworfQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9tb2QvbW9kX3hfbGFyZ2VfeV9sYXJnZV92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9tb2QvbW9kX3hfbGFyZ2VfeV9sYXJnZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxNjgzMDhi
NjNkNmYxMDdjZTUwNTZmYjQwMzFiMTk3ZjMyMjc2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML21vZC9tb2RfeF9sYXJnZV95X2xhcmdlX3ZlcnQudmVydApAQCAtMCwwICsxLDE3IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3Ig
PSB2ZWM0KG1vZCgzMDAuMCwgMTAwLjApLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vcm1hbGl6ZS9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXpl
L2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZjZTZkY2JlNzNkNzIzZmFjMjNlMmFhNTQwZDNm
NzIyMGZmN2VkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9pbnB1dC5y
dW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERP
IE5PVCBFRElULgorbm9ybWFsaXplXzAwMV90b18wMDYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbm9ybWFsaXplL25vcm1hbGl6ZV8wMDFfdG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxp
emUvbm9ybWFsaXplXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmI5ZDIzOWQ3NTNhMmRl
MWQyNzllYzM4MzkxMjdkYTM5NGExNzkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9y
bWFsaXplL25vcm1hbGl6ZV8wMDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElU
LiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25m
b3JtYW5jZSB0ZXN0OiBub3JtYWxpemVfMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVu
bmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3JtYWxpemVfZmxvYXRfZnJhZ194dmFyeV9yZWYu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vcm1hbGl6ZV9mbG9hdF9mcmFnX3h2YXJ5LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibm9ybWFsaXplX2Zsb2F0X2ZyYWdfeHZhcnku
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3JtYWxp
emVfdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibm9ybWFs
aXplX3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vcm1h
bGl6ZV92ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJub3JtYWxpemVfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAibm9ybWFsaXplX3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogIm5vcm1hbGl6ZV92ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJub3JtYWxpemVfZmxvYXRfdmVy
dF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm9ybWFsaXplX2Zsb2F0
X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJub3JtYWxpemVfZmxvYXRf
dmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIm5vcm1hbGl6ZV92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIm5vcm1hbGl6ZV92ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJub3JtYWxpemVfdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm9ybWFsaXplX3ZlYzNfdmVydF94dmFyeV9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm9ybWFsaXplX3ZlYzNfdmVydF94dmFy
eS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vcm1hbGl6ZV92ZWMzX3ZlcnRfeHZhcnku
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X2ZyYWdfeHZhcnkuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfZmxvYXRfZnJhZ194dmFyeS5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwNWYwNTc1M2VlNTc2OGJiYzE1Y2ZkNDYwNmFjNjZkZWM0MmU2YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0
IHRtcF9Db2xvciA9IGNvbG9yICsgdmVjNCgwLjI1KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KG5v
cm1hbGl6ZSh0bXBfQ29sb3IuciksIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2Y2JhMzcyZmQ2MDk5ZDg4YjM0NmYwNTcxNDdiZWQzMmE0NzhiMjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X2ZyYWdfeHZhcnlf
cmVmLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
NCB0bXBfQ29sb3IgPSBjb2xvciArIHZlYzQoMC4yNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh0
bXBfQ29sb3IuciAvIGxlbmd0aCh0bXBfQ29sb3IuciksIDAuMCwgMC4wLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV9mbG9hdF92ZXJ0X3h2YXJ5LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X3ZlcnRfeHZhcnkudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ODhjN2E2MDY0ZDJlYjcyMTFkZDVlZTdiNjNhOTVhOTAwOTk0YWIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV9mbG9hdF92ZXJ0X3h2
YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgdG1w
X0NvbG9yID0gZ3RmX0NvbG9yICsgdmVjNCgwLjI1KTsKKwljb2xvciA9IHZlYzQobm9ybWFsaXpl
KHRtcF9Db2xvci5yKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3JtYWxpemUvbm9ybWFsaXplX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2UzMGNmZDg0ZDQ4ZmViZTExOTQ4ZThjYmFmNDEwYWJjMzliOWZhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfZmxvYXRfdmVydF94dmFyeV9yZWYu
dmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCB0bXBfQ29s
b3IgPSBndGZfQ29sb3IgKyB2ZWM0KDAuMjUpOworCWNvbG9yID0gdmVjNCh0bXBfQ29sb3IuciAv
IGxlbmd0aCh0bXBfQ29sb3IuciksIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV92ZWMyX2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzlkZjVlY2M2NTEzMzM1MjMxODUyMTRjMDk0YzViYTYxNTM2OGNiNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKQEAg
LTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCB0bXBfQ29sb3Ig
PSBjb2xvciArIHZlYzQoMC4yNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChub3JtYWxpemUodG1w
X0NvbG9yLnJnKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXpl
L25vcm1hbGl6ZV92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUv
bm9ybWFsaXplX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzI5ODgxMDYy
MWQ4ODY5MWNkNTBkMzA4YzY4MjRhY2JhMjRiYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbm9ybWFsaXplL25vcm1hbGl6ZV92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCAr
MSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCB0bXBfQ29sb3IgPSBjb2xv
ciArIHZlYzQoMC4yNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh0bXBfQ29sb3IucmcgLyBsZW5n
dGgodG1wX0NvbG9yLnJnKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9y
bWFsaXplL25vcm1hbGl6ZV92ZWMyX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6
ZS9ub3JtYWxpemVfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM3YjE0OTQ2ODQw
NGI1OGIwMTJhY2IxOTAwMWQ4MDcwNzMzNWM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjMl92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgdG1wX0NvbG9yID0gZ3RmX0NvbG9yICsgdmVj
NCgwLjI1KTsKKwljb2xvciA9IHZlYzQobm9ybWFsaXplKHRtcF9Db2xvci5yZyksIDAuMCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjMl92
ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV92ZWMyX3Zl
cnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNmZGZiYmM4Nzg3NDMyZjkwODRhNWQyYzhh
NDY1OTUwMDNlMGJiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3Jt
YWxpemVfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWM0IHRtcF9Db2xvciA9IGd0Zl9Db2xvciArIHZlYzQoMC4yNSk7CisJ
Y29sb3IgPSB2ZWM0KHRtcF9Db2xvci5yZyAvIGxlbmd0aCh0bXBfQ29sb3IucmcpLCAwLjAsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX3ZlYzNf
ZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV92ZWMzX2ZyYWdf
eHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODExNWQ3ZThiMjlkOWE1ZDJmMDliYjE1ODUyMjkxMjIx
MjgwYzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV92
ZWMzX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWM0IHRtcF9Db2xvciA9IGNvbG9yICsgdmVjNCgwLjI1KTsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KG5vcm1hbGl6ZSh0bXBfQ29sb3IucmdiKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbm9ybWFsaXplL25vcm1hbGl6ZV92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWE4OWI1MjU4MzUyOTlmMzhiY2Y3YjhlNTVhMTEwZTE1ZDE0OGIwOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjM19mcmFnX3h2YXJ5
X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzQgdG1wX0NvbG9yID0gY29sb3IgKyB2ZWM0KDAuMjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
dG1wX0NvbG9yLnJnYiAvIGxlbmd0aCh0bXBfQ29sb3IucmdiKSwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3JtYWxpemVfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc0N2I4NzkyMDNkMWUwNTFhYzc3YzVlMmZkYmQzYjI2NDFhMDY2MmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9ub3JtYWxpemUvbm9ybWFsaXplX3ZlYzNfdmVydF94dmFyeS52ZXJ0
CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHRtcF9Db2xvciA9
IGd0Zl9Db2xvciArIHZlYzQoMC4yNSk7CisJY29sb3IgPSB2ZWM0KG5vcm1hbGl6ZSh0bXBfQ29s
b3IucmdiKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vcm1hbGl6ZS9ub3Jt
YWxpemVfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm9ybWFsaXplL25vcm1h
bGl6ZV92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiMDZlOTliYWZjYTFi
ZTUyNjU3Yjc4ODE5Yjc5NWUxZGJlNTFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25v
cm1hbGl6ZS9ub3JtYWxpemVfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHRtcF9Db2xvciA9IGd0Zl9Db2xvciArIHZl
YzQoMC4yNSk7CisJY29sb3IgPSB2ZWM0KHRtcF9Db2xvci5yZ2IgLyBsZW5ndGgodG1wX0NvbG9y
LnJnYiksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3QvaW5wdXQucnVuLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vdC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDM4Yjc0NDU0N2Nl
M2ZkYTc5MDdiNWVjNzFhMGNiZGJmOTRiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9u
b3QvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkLiBETyBOT1QgRURJVC4KK25vdF8wMDFfdG9fMDA0Lmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML25vdC9ub3RfMDAxX3RvXzAwNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25vdF8wMDFfdG9f
MDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUwNWEyZjYwMWFkOTY5ZDM4ODE0MzA1Mjg3Mjg4MWRiMTRk
YWJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdC9ub3RfMDAxX3RvXzAwNC5odG1s
CkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBub3RfMDAxX3RvXzAwNC5odG1s
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7
IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3RfYnZlYzJfZnJh
Z19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdF9idmVjMl9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAibm90X2J2ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJub3RfYnZlYzJfdmVydF9yZWYudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90X2J2ZWMyX3ZlcnQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJub3RfYnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIm5vdF9idmVjM19mcmFnX3JlZi5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAibm90X2J2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJub3RfYnZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIm5vdF9idmVjM192ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJub3RfYnZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vdF9idmVj
M192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAg
XQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25vdF9idmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3Qvbm90X2J2ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTg5ZDdiYTg0YmU5ZjNjYmQ4
ZDk3NjQ4MTYyZjIyYjVjMTkyZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25v
dF9idmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01F
TlRfUFJFQ0lTSU9OX0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxLjUgKiBjb2xvci5yZyk7ICAg
Ly8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMihub3QoYnZl
YzIoYykpKSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25vdF9idmVj
Ml9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25vdF9idmVjMl9mcmFnX3JlZi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiZDI2MTc1ZjA3ZDU3ZWE2NWJjMWUzMmZhYWEyMTc3NzgwZmQzYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMyX2ZyYWdfcmVmLmZyYWcKQEAgLTAs
MCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKK3ByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgorI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIF9ub3QoaW4gYnZlYzIgYSkK
K3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSkgcmVzdWx0WzBdID0gZmFsc2U7CisJZWxzZSBy
ZXN1bHRbMF0gPSB0cnVlOworCWlmKGFbMV0pIHJlc3VsdFsxXSA9IGZhbHNlOworCWVsc2UgcmVz
dWx0WzFdID0gdHJ1ZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMiBjID0gZmxvb3IoMS41ICogY29sb3IucmcpOyAgIC8vIDEvMyB0cnVlLCAyLzMgZmFs
c2UKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzIoX25vdChidmVjMihjKSkpLCAwLjAsIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMyX3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML25vdC9ub3RfYnZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDZlNDgwZDA5NjI2ZDcx
ZmRlMDAwNGY2N2VlNmVhNjU3MTM5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qv
bm90X2J2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjMiBjID0gZmxvb3IoMS41ICogZ3RmX0NvbG9yLnJnKTsgICAvLyAxLzMgdHJ1ZSwgMi8z
IGZhbHNlCisJY29sb3IgPSB2ZWM0KHZlYzIobm90KGJ2ZWMyKGMpKSksIDAuMCwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdC9ub3RfYnZlYzJfdmVydF9yZWYudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML25vdC9ub3RfYnZlYzJfdmVydF9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDM1MjhmYTk0
YTc0YWNiYTUzMTMwZjE1MDhjNzAzYzE4NDJiOTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbm90L25vdF9idmVjMl92ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIF9u
b3QoaW4gYnZlYzIgYSkKK3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSkgcmVzdWx0WzBdID0g
ZmFsc2U7CisJZWxzZSByZXN1bHRbMF0gPSB0cnVlOworCWlmKGFbMV0pIHJlc3VsdFsxXSA9IGZh
bHNlOworCWVsc2UgcmVzdWx0WzFdID0gdHJ1ZTsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMS41ICogZ3RmX0NvbG9yLnJnKTsgICAv
LyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJY29sb3IgPSB2ZWM0KHZlYzIoX25vdChidmVjMihjKSkp
LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML25vdC9ub3RfYnZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEw
ZDZiZWFmOTFiOGNkOWI4MmZmOGJkMjNiZDRmNjgzNGJhMjY3ZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigxLjUgKiBjb2xvci5yZ2IpOyAg
IC8vIDEvMyB0cnVlLCAyLzMgZmFsc2UKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMobm90KGJ2
ZWMzKGMpKSksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX2Zy
YWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX2ZyYWdfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWNmYzEyN2M2M2U2ZGE0OWVhZmY5OGZmMzMyNjhkOTc1YzQxMjE2YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML25vdC9ub3RfYnZlYzNfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsx
LDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK2J2ZWMzIF9ub3QoaW4gYnZlYzMgYSkKK3sKKwlidmVjMyByZXN1bHQ7CisJ
aWYoYVswXSkgcmVzdWx0WzBdID0gZmFsc2U7CisJZWxzZSByZXN1bHRbMF0gPSB0cnVlOworCWlm
KGFbMV0pIHJlc3VsdFsxXSA9IGZhbHNlOworCWVsc2UgcmVzdWx0WzFdID0gdHJ1ZTsKKwlpZihh
WzJdKSByZXN1bHRbMl0gPSBmYWxzZTsKKwllbHNlIHJlc3VsdFsyXSA9IHRydWU7CisJcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEuNSAq
IGNvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWdsX0ZyYWdDb2xvciA9IHZl
YzQodmVjMyhfbm90KGJ2ZWMzKGMpKSksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9u
b3Qvbm90X2J2ZWMzX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdC9ub3RfYnZlYzNfdmVydC52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ4ZDk5MTEyYmU3YmVhMzQxY2YzM2JiMmU0NDU5YzFmYzg3NWQzOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX3ZlcnQudmVydApAQCAtMCww
ICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMS41ICogZ3Rm
X0NvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWNvbG9yID0gdmVjNCh2ZWMz
KG5vdChidmVjMyhjKSkpLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25v
dF9idmVjM192ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90L25vdF9idmVjM192ZXJ0X3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkNTRlYzJjZmMzNjI3NDc0ZDE2MDZlYjFjNzY2OTI4YTBlZjFmZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3Qvbm90X2J2ZWMzX3ZlcnRfcmVmLnZlcnQK
QEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworYnZlYzMgX25vdChpbiBidmVjMyBhKQoreworCWJ2ZWMzIHJlc3Vs
dDsKKwlpZihhWzBdKSByZXN1bHRbMF0gPSBmYWxzZTsKKwllbHNlIHJlc3VsdFswXSA9IHRydWU7
CisJaWYoYVsxXSkgcmVzdWx0WzFdID0gZmFsc2U7CisJZWxzZSByZXN1bHRbMV0gPSB0cnVlOwor
CWlmKGFbMl0pIHJlc3VsdFsyXSA9IGZhbHNlOworCWVsc2UgcmVzdWx0WzJdID0gdHJ1ZTsKKwly
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3Io
MS41ICogZ3RmX0NvbG9yLnJnYik7ICAgLy8gMS8zIHRydWUsIDIvMyBmYWxzZQorCWNvbG9yID0g
dmVjNCh2ZWMzKF9ub3QoYnZlYzMoYykpKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML25vdEVxdWFsL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9pbnB1dC5ydW4u
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjliYzIzNzY4ZWFhNDJkOTMzODQxM2UwMDNhMzVlYjk5NTUxMzRiNWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9pbnB1dC5ydW4udHh0CkBAIC0w
LDAgKzEsMyBAQAorIyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgor
bm90RXF1YWxfMDAxX3RvXzAwOC5odG1sCitub3RFcXVhbF8wMDlfdG9fMDEyLmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsXzAwMV90b18wMDguaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML25vdEVxdWFsL25vdEVxdWFsXzAwMV90b18wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQ1YTZi
Y2MwM2Y3OGQxNjYyMjg2YTAzOTE4Mjc1YjIwOGZjOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfMDAxX3RvXzAwOC5odG1sCkBAIC0wLDAgKzEsMTM1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgY29uZm9ybWFuY2UgdGVzdDogbm90RXF1YWxfMDAxX3RvXzAwOC5odG1sPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNU
ZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3RFcXVhbF92ZWMyX2ZyYWdfcmVmLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3RFcXVhbF92ZWMyX2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJub3RFcXVhbF92ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJub3RFcXVhbF92ZWMyX3ZlcnRfcmVm
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm5vdEVxdWFsX3ZlYzJfdmVydC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogIm5vdEVxdWFsX3ZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdEVxdWFsX3ZlYzNfZnJhZ19yZWYu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdEVxdWFsX3ZlYzNfZnJhZy5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogIm5vdEVxdWFsX3ZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm5vdEVxdWFsX3ZlYzNfdmVydF9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90RXF1YWxfdmVjM192ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAibm90RXF1YWxfdmVjM192ZXJ0LnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibm90RXF1YWxfaXZlYzJfZnJhZ19y
ZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdEVxdWFsX2l2ZWMyX2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJub3RFcXVhbF9pdmVjMl9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90RXF1YWxfaXZlYzJf
dmVydF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90RXF1YWxfaXZlYzJfdmVy
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vdEVxdWFsX2l2ZWMyX3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3RFcXVhbF9pdmVj
M19mcmFnX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibm90RXF1YWxfaXZlYzNfZnJh
Zy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vdEVxdWFsX2l2ZWMzX2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJub3RFcXVh
bF9pdmVjM192ZXJ0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJub3RFcXVhbF9p
dmVjM192ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAibm90RXF1YWxfaXZlYzNfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30p
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsXzAwOV90b18wMTIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML25vdEVxdWFsL25vdEVxdWFsXzAwOV90b18wMTIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjY5
M2U3ZmVjZmQ3ODg0NzdjNzRhMTA5MjcwNmYxYjZlMzI3MjliCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfMDA5X3RvXzAxMi5odG1sCkBAIC0wLDAgKzEsODMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERP
IE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
R0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBub3RFcXVhbF8wMDlfdG9fMDEyLmh0bWw8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAx
NnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xF
U1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdEVxdWFsX2J2ZWMyX2ZyYWdfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJub3RFcXVhbF9idmVjMl9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAibm90RXF1YWxfYnZlYzJfZnJhZy50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm5vdEVxdWFsX2J2ZWMyX3Zl
cnRfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm5vdEVxdWFsX2J2ZWMyX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJub3RFcXVhbF9idmVjMl92ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAibm90RXF1YWxfYnZlYzNf
ZnJhZ19yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIm5vdEVxdWFsX2J2ZWMzX2ZyYWcu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJub3RFcXVhbF9idmVjM19mcmFnLnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90RXF1YWxf
YnZlYzNfdmVydF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAibm90RXF1YWxfYnZl
YzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogIm5vdEVxdWFsX2J2ZWMzX3ZlcnQu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjMl9mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlkZjU5
ZGZiNzBlZDE2YzVhOWY3ODg1ZmFmZGVhYjdlNWI3YzZkOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2J2ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIzIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKKyNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSAorcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworI2Vsc2UKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZs
b29yKDEuNSAqIGNvbG9yLnJnKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMiByZXN1
bHQgPSB2ZWMyKG5vdEVxdWFsKGJ2ZWMyKGMpLCBidmVjMih0cnVlKSkpOworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RF
cXVhbC9ub3RFcXVhbF9idmVjMl9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90
RXF1YWxfYnZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDM2YTc2Y2UyMGQ5M2I2NzE5
OGFiNjcyZTA0MTcxMDhlY2YwMDBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1
YWwvbm90RXF1YWxfYnZlYzJfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDMzIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNp
ZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSAorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
I2Vsc2UKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKworYnZlYzIgbmUoaW4gYnZlYzIgYSwgaW4gYnZlYzIgYikKK3sKKwlidmVj
MiByZXN1bHQ7CisJaWYoYVswXSAhPSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVz
dWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSAhPSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVs
c2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEuNSAqIGNvbG9yLnJnKTsgICAvLyAxLzMgdHJ1ZSwg
Mi8zIGZhbHNlCisJdmVjMiByZXN1bHQgPSB2ZWMyKG5lKGJ2ZWMyKGMpLCBidmVjMih0cnVlKSkp
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9u
b3RFcXVhbC9ub3RFcXVhbF9idmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc0MTExY2RhZDNk
ZDI1YmQ2YjIzMzliZDYzY2VkNjE1OTA5NThmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L25vdEVxdWFsL25vdEVxdWFsX2J2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gZmxvb3IoMS41ICogZ3RmX0NvbG9yLnJnKTsgICAv
LyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMiByZXN1bHQgPSB2ZWMyKG5vdEVxdWFsKGJ2ZWMy
KGMpLCBidmVjMih0cnVlKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2J2ZWMyX3ZlcnRfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjMl92ZXJ0X3JlZi52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAyMmQzYjIxODYwZTYwZDU2Y2Q0NmYxYWQ1MDBhYTgyNmY0MWFiYzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjMl92ZXJ0X3JlZi52
ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMyIG5lKGluIGJ2ZWMyIGEsIGluIGJ2ZWMyIGIpCit7
CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gIT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwll
bHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gIT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1
ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxLjUgKiBndGZfQ29sb3IucmcpOyAgIC8v
IDEvMyB0cnVlLCAyLzMgZmFsc2UKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobmUoYnZlYzIoYyksIGJ2
ZWMyKHRydWUpKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfYnZlYzNfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfYnZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTdi
ODI0YTRlM2MxMTI3ZGM1ZGIyYzJmY2MxYmIyMDExNTNkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjM19mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMS41ICogY29sb3Iu
cmdiKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMyByZXN1bHQgPSB2ZWMzKG5vdEVx
dWFsKGJ2ZWMzKGMpLCBidmVjMyh0cnVlKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0
LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfYnZlYzNf
ZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2J2ZWMzX2ZyYWdfcmVm
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODY2MDdlODQ0OTE0MzY1MGU4MWEzZDk0MWNhZTA5MTM3MDQ3ZDJl
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2J2ZWMzX2Zy
YWdfcmVmLmZyYWcKQEAgLTAsMCArMSwzMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitidmVjMyBuZShpbiBidmVjMyBhLCBp
biBidmVjMyBiKQoreworCWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdICE9IGJbMF0pIHJlc3VsdFsw
XSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdICE9IGJbMV0pIHJl
c3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihhWzJdICE9IGJb
Ml0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsKKwlyZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMS41ICog
Y29sb3IucmdiKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMyByZXN1bHQgPSB2ZWMz
KG5lKGJ2ZWMzKGMpLCBidmVjMyh0cnVlKSkpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0
LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfYnZlYzNf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfYnZlYzNfdmVydC52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJlZWQwMzE5YjgwNDFlMjk4NTM5ODU1NDM0YjM1ODk0MmNkYmIyNjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVjM192ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEu
NSAqIGd0Zl9Db2xvci5yZ2IpOyAgIC8vIDEvMyB0cnVlLCAyLzMgZmFsc2UKKwl2ZWMzIHJlc3Vs
dCA9IHZlYzMobm90RXF1YWwoYnZlYzMoYyksIGJ2ZWMzKHRydWUpKSk7CisJY29sb3IgPSB2ZWM0
KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVx
dWFsX2J2ZWMzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9idmVj
M192ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhOWE2MGI3N2I2MmEzMGU2OTRiZTMyMTJkNjMx
ZTgwNzkxNjJiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVh
bF9idmVjM192ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIG5lKGluIGJ2ZWMz
IGEsIGluIGJ2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0OworCWlmKGFbMF0gIT0gYlswXSkgcmVz
dWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gIT0gYlsx
XSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCWlmKGFbMl0g
IT0gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsyXSA9IGZhbHNlOworCXJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSBmbG9vcigx
LjUgKiBndGZfQ29sb3IucmdiKTsgICAvLyAxLzMgdHJ1ZSwgMi8zIGZhbHNlCisJdmVjMyByZXN1
bHQgPSB2ZWMzKG5lKGJ2ZWMzKGMpLCBidmVjMyh0cnVlKSkpOworCWNvbG9yID0gdmVjNChyZXN1
bHQsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9p
dmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjMl9mcmFnLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjk5NmRlMDUzMGM0ZTZjOWNlZGQyZjViMzQxYmMyYWM3Y2U2YTIwYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2l2ZWMyX2ZyYWcu
ZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMg
PSBmbG9vcigxMC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0
IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobm90RXF1YWwoaXZlYzIoYyksIGl2ZWMyKDAp
KSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2l2ZWMyX2ZyYWdfcmVmLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjMl9mcmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
MTVkMzk0MWJjOGY0ZGRlNDY1M2ExNWQzOGQ5NTM4OWMxZTYzNGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjMl9mcmFnX3JlZi5mcmFnCkBAIC0wLDAg
KzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKworYnZlYzIgbmUoaW4gaXZlYzIgYSwgaW4gaXZlYzIgYikKK3sKKwlidmVj
MiByZXN1bHQ7CisJaWYoYVswXSAhPSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVz
dWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSAhPSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVs
c2UgcmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZyAtIDQuNSk7ICAgLy8gcm91
bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihuZShpdmVjMihj
KSwgaXZlYzIoMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfaXZlYzJfdmVydC52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfaXZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczMDVmZjE1OTljMGJhYzM1YjdkMzVlOGQ5NTcxYmZkNTFiNzNmYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjMl92ZXJ0LnZlcnQKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBndGZf
Q29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMy
IHJlc3VsdCA9IHZlYzIobm90RXF1YWwoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJY29sb3IgPSB2
ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1
YWwvbm90RXF1YWxfaXZlYzJfdmVydF9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVx
dWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0Yjg3MGRiODUyOTgzZWZkMjZl
N2YyZWIzOWU0NjIyMDIwZWIxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFs
L25vdEVxdWFsX2l2ZWMyX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzIgbmUo
aW4gaXZlYzIgYSwgaW4gaXZlYzIgYikKK3sKKwlidmVjMiByZXN1bHQ7CisJaWYoYVswXSAhPSBi
WzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsx
XSAhPSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJ
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29y
KDEwLjAgKiBndGZfQ29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGlu
dGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZlYzIobmUoaXZlYzIoYyksIGl2ZWMyKDApKSk7CisJY29s
b3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
bm90RXF1YWwvbm90RXF1YWxfaXZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90
RXF1YWxfaXZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4YWRhNWY3YjQwZWUxMjc1M2UzOTAy
OGFlN2EwNTAxYzM0ZTM4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9u
b3RFcXVhbF9pdmVjM19mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMyBjID0gZmxvb3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAgLy8g
cm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhub3RFcXVh
bChpdmVjMyhjKSwgaXZlYzMoMCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4w
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2l2ZWMzX2ZyYWdf
cmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjM19mcmFnX3JlZi5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0MDFiMWQ3OThlMzY2ODdjZmZhNzBhN2RmZDU2M2RlZmNhN2YzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjM19mcmFnX3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsMzEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzMgbmUoaW4gaXZlYzMgYSwgaW4gaXZl
YzMgYikKK3sKKwlidmVjMyByZXN1bHQ7CisJaWYoYVswXSAhPSBiWzBdKSByZXN1bHRbMF0gPSB0
cnVlOworCWVsc2UgcmVzdWx0WzBdID0gZmFsc2U7CisJaWYoYVsxXSAhPSBiWzFdKSByZXN1bHRb
MV0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzFdID0gZmFsc2U7CisJaWYoYVsyXSAhPSBiWzJdKSBy
ZXN1bHRbMl0gPSB0cnVlOworCWVsc2UgcmVzdWx0WzJdID0gZmFsc2U7CisJcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAgKiBjb2xv
ci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMzIHJl
c3VsdCA9IHZlYzMobmUoaXZlYzMoYyksIGl2ZWMzKDApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVh
bF9pdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjM192ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGFhMmUzNGNjMmVjN2I3MDc0Zjg4OGIyMDRhMTI1Y2Y2OWFmZDdk
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2l2ZWMzX3Zl
cnQudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0g
Zmxvb3IoMTAuMCAqIGd0Zl9Db2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIKKwl2ZWMzIHJlc3VsdCA9IHZlYzMobm90RXF1YWwoaXZlYzMoYyksIGl2ZWMz
KDApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML25vdEVxdWFsL25vdEVxdWFsX2l2ZWMzX3ZlcnRfcmVmLnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9u
b3RFcXVhbC9ub3RFcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMDdhYmNm
NjQyOGQ4MDhmODkzMzgwMzQ4YjM0NjM2M2Q4MWI4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9ub3RFcXVhbC9ub3RFcXVhbF9pdmVjM192ZXJ0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzIg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK2J2ZWMzIG5lKGluIGl2ZWMzIGEsIGluIGl2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0Owor
CWlmKGFbMF0gIT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZh
bHNlOworCWlmKGFbMV0gIT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsx
XSA9IGZhbHNlOworCWlmKGFbMl0gIT0gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJl
c3VsdFsyXSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWMzIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91
bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhuZShpdmVjMyhj
KSwgaXZlYzMoMCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3RFcXVhbC9ub3RFcXVhbF92ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjFiNDk2MTE5
ODViMDZhNTNiZjc2ZjFjNTc4Yjk3MmM3YmIxNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CisjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKK3ByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyNlbHNlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigx
MC4wICogY29sb3IucmcgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIK
Kwl2ZWMyIHJlc3VsdCA9IHZlYzIobm90RXF1YWwoYywgdmVjMigwLjApKSk7CisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25v
dEVxdWFsL25vdEVxdWFsX3ZlYzJfZnJhZ19yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25v
dEVxdWFsX3ZlYzJfZnJhZ19yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTMyMGU2N2MxOGYxZDE2ZjAx
YTUxYTRiOGYxMzY1MWY1MmQ5YmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1
YWwvbm90RXF1YWxfdmVjMl9mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2lm
ZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Cisj
ZWxzZQorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCitidmVjMiBuZShpbiB2ZWMyIGEsIGluIHZlYzIgYikKK3sKKwlidmVjMiBy
ZXN1bHQ7CisJaWYoYVswXSAhPSBiWzBdKSByZXN1bHRbMF0gPSB0cnVlOworCWVsc2UgcmVzdWx0
WzBdID0gZmFsc2U7CisJaWYoYVsxXSAhPSBiWzFdKSByZXN1bHRbMV0gPSB0cnVlOworCWVsc2Ug
cmVzdWx0WzFdID0gZmFsc2U7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBjb2xvci5yZyAtIDQuNSk7ICAgLy8gcm91bmQg
dG8gdGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzIgcmVzdWx0ID0gdmVjMihuZShjLCB2ZWMyKDAu
MCkpKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3RFcXVhbC9ub3RFcXVhbF92ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzkzMWM3ODdi
ZDg4YTQwMzEwMWFiZDQ4Yzg4MDVhMDE5MzAzYmVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IGZsb29yKDEwLjAgKiBndGZfQ29sb3IucmcgLSA0
LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2ZWMyIHJlc3VsdCA9IHZl
YzIobm90RXF1YWwoYywgdmVjMigwLjApKSk7CisJY29sb3IgPSB2ZWM0KHJlc3VsdCwgMC4wLCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl92
ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjMl92ZXJ0X3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4OTJkM2FkODkzNzZmOWMyZDA1YWExZDJmMzAzNWU5NGI5M2M3MmEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF92ZWMyX3ZlcnRf
cmVmLnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworYnZlYzIgbmUoaW4gdmVjMiBhLCBpbiB2ZWMyIGIp
Cit7CisJYnZlYzIgcmVzdWx0OworCWlmKGFbMF0gIT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsK
KwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOworCWlmKGFbMV0gIT0gYlsxXSkgcmVzdWx0WzFdID0g
dHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnIC0g
NC41KTsgICAvLyByb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyCisJdmVjMiByZXN1bHQgPSB2
ZWMyKG5lKGMsIHZlYzIoMC4wKSkpOworCWNvbG9yID0gdmVjNChyZXN1bHQsIDAuMCwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX3ZlYzNfZnJhZy5m
cmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjM19mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmU3ZDdhMTE1MzU0ZWU2YjZjNDM1YTk0NDVjODA5NzJkZTNiNjA3OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX3ZlYzNfZnJhZy5mcmFnCkBAIC0wLDAg
KzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IGZsb29yKDEwLjAg
KiBjb2xvci5yZ2IgLSA0LjUpOyAgIC8vIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIKKwl2
ZWMzIHJlc3VsdCA9IHZlYzMobm90RXF1YWwoYywgdmVjMygwLjApKSk7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChyZXN1bHQsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9u
b3RFcXVhbF92ZWMzX2ZyYWdfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9ub3RFcXVhbC9ub3RFcXVhbF92
ZWMzX2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExOGVhMDMyN2NiN2EwZmY2ZmQ2MjEzYjI5
Y2JjNmNhYTEzMjQ0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVx
dWFsX3ZlYzNfZnJhZ19yZWYuZnJhZwpAQCAtMCwwICsxLDMxIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK2J2ZWMzIG5lKGlu
IHZlYzMgYSwgaW4gdmVjMyBiKQoreworCWJ2ZWMzIHJlc3VsdDsKKwlpZihhWzBdICE9IGJbMF0p
IHJlc3VsdFswXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMF0gPSBmYWxzZTsKKwlpZihhWzFdICE9
IGJbMV0pIHJlc3VsdFsxXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMV0gPSBmYWxzZTsKKwlpZihh
WzJdICE9IGJbMl0pIHJlc3VsdFsyXSA9IHRydWU7CisJZWxzZSByZXN1bHRbMl0gPSBmYWxzZTsK
KwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gZmxv
b3IoMTAuMCAqIGNvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50
ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhuZShjLCB2ZWMzKDAuMCkpKTsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KHJlc3VsdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFs
L25vdEVxdWFsX3ZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVj
M192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk3MDgxOTczYTZjY2ZmMTk0NWE1YmU2ODZjOTFkZGI4
MDg2MjIzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML25vdEVxdWFsL25vdEVxdWFsX3Zl
YzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMz
IGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQgdG8gdGhl
IG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhub3RFcXVhbChjLCB2ZWMzKDAu
MCkpKTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvbm90RXF1YWwvbm90RXF1YWxfdmVjM192ZXJ0X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvbm90
RXF1YWwvbm90RXF1YWxfdmVjM192ZXJ0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YzU2ODdlMjRh
ZTZjZTFjMjZjZWQ1MzE1YjE3ZDI0YjUwNzM1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9ub3RFcXVhbC9ub3RFcXVhbF92ZWMzX3ZlcnRfcmVmLnZlcnQKQEAgLTAsMCArMSwzMiBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
YnZlYzMgbmUoaW4gdmVjMyBhLCBpbiB2ZWMzIGIpCit7CisJYnZlYzMgcmVzdWx0OworCWlmKGFb
MF0gIT0gYlswXSkgcmVzdWx0WzBdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFswXSA9IGZhbHNlOwor
CWlmKGFbMV0gIT0gYlsxXSkgcmVzdWx0WzFdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsxXSA9IGZh
bHNlOworCWlmKGFbMl0gIT0gYlsyXSkgcmVzdWx0WzJdID0gdHJ1ZTsKKwllbHNlIHJlc3VsdFsy
XSA9IGZhbHNlOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMzIGMgPSBmbG9vcigxMC4wICogZ3RmX0NvbG9yLnJnYiAtIDQuNSk7ICAgLy8gcm91bmQgdG8g
dGhlIG5lYXJlc3QgaW50ZWdlcgorCXZlYzMgcmVzdWx0ID0gdmVjMyhuZShjLCB2ZWMzKDAuMCkp
KTsKKwljb2xvciA9IHZlYzQocmVzdWx0LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvb3BlcmF0b3JzL2FkZHN1YnRyYWN0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9h
ZGRzdWJ0cmFjdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZiNjk1MDM5MjIyZTFhMTYyMjFhMDA2
NTVhNTIyOWVkNjBiMDNhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9h
ZGRzdWJ0cmFjdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyNSBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJaW50IG0gPSAxMDI7CisJaW50IGsgPSAxMjsKKwlpbnQgcmVzdWx0YWRkID0gbSAr
IGs7CisJaW50IHJlc3VsdHN1YnRyYWN0ID0gbSAtIGs7CisJZmxvYXQgZ3JheTsKKwlpZiggKCBy
ZXN1bHRhZGQgPT0gMTE0ICkgJiYgKCByZXN1bHRzdWJ0cmFjdCA9PSA5MCApICkKKwlncmF5PTEu
MDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9hZGRzdWJ0cmFjdF92
ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvYWRkc3VidHJhY3RfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjMmI4Y2E4MzdjYTVkMWQ3MDMxNWI5YTNhMjEzNTQ1ZGU2Zjg3ZTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvYWRkc3VidHJhY3RfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsMjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlpbnQgbSA9IDEwMjsKKwlpbnQgayA9IDEyOworCWludCByZXN1bHRhZGQgPSBtICsg
azsKKwlpbnQgcmVzdWx0c3VidHJhY3QgPSBtIC0gazsKKwlmbG9hdCBncmF5OworCWlmKCAoIHJl
c3VsdGFkZCA9PSAxMTQgKSAmJiAoIHJlc3VsdHN1YnRyYWN0ID09IDkwICkgKQorCWdyYXk9MS4w
OworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvYXNzaWdubWVudHNfZnJhZy5m
cmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2Fzc2lnbm1lbnRzX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNzc1N2E4NzMzMDBmZjNkMmUwYjdlMjU2Y2NkMDUyZTVjMTQ3YzgxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2Fzc2lnbm1lbnRzX2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDYxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpbnQgbSA9IDEyOworCWludCBuID0g
MTAyOworCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKKwlpbnQgciA9IG07CisKKwlpZiggcj09MTIgKQor
CQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBm
YWxzZTsKKworCXIgKz0gbTsKKworCWlmKCByID09IDI0ICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYm
IHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlyLT0gbTsKKwor
CWlmKCByID09IDEyICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1
bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlyKj0gbTsKKworCWlmICggciA9PSAxNDQgKQorCQly
ZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxz
ZTsKKworCXIvPSBtOworCisJLy8gSW50ZWdlciBkaXZpZGUgY2FuIGJlIGltcGxlbWVudGVkIHZp
YSBmbG9hdCByZWNpcHJvY2FsLAorCS8vIHNvIHRoZSByZXN1bHQgbmVlZCBub3QgYmUgZXhhY3QK
KwlpZiggciA+PSAxMSAmJiByIDw9IDEzICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJ
ZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlmbG9hdCBncmF5OworCWlmKCBy
ZXN1bHQgKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0
b3JzL2Fzc2lnbm1lbnRzX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9hc3NpZ25tZW50
c192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNlOGJlYTliNTA2ZDI4MTQzOTNmOTlkMTVhYjk5OGJl
NzQ5ZGVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9hc3NpZ25tZW50
c192ZXJ0LnZlcnQKQEAgLTAsMCArMSw2MSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWludCBtID0gMTI7CisJaW50IG4gPSAxMDI7CisJYm9v
bCByZXN1bHQgPSB0cnVlOworCWludCByID0gbTsKKworCWlmKCByPT0xMiApCisJCXJlc3VsdCA9
IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJ
ciArPSBtOworCisJaWYoIHIgPT0gMjQgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwll
bHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCXItPSBtOworCisJaWYoIHIgPT0g
MTIgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3Vs
dCAmJiBmYWxzZTsKKworCXIqPSBtOworCisJaWYgKCByID09IDE0NCApCisJCXJlc3VsdCA9IHJl
c3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJci89
IG07CisKKwkvLyBJbnRlZ2VyIGRpdmlkZSBjYW4gYmUgaW1wbGVtZW50ZWQgdmlhIGZsb2F0IHJl
Y2lwcm9jYWwsCisJLy8gc28gdGhlIHJlc3VsdCBuZWVkIG5vdCBiZSBleGFjdAorCWlmKCByID49
IDExICYmIHIgPD0gMTMgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJl
c3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCWZsb2F0IGdyYXk7CisJaWYoIHJlc3VsdCApCisJ
Z3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICog
Z3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9kaXZpc2lvbl9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvZGl2aXNpb25fZnJhZy5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU0NmNhNGVhOWI5YjJkZTJhNDZhYzE4MmRhZTVjYzBhZTgwNjBlNmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvZGl2aXNpb25fZnJhZy5mcmFnCkBAIC0wLDAgKzEs
MjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWludCBtID0gMTAyOworCWludCBrID0g
MTI7CisJaW50IHJlc3VsdCA9IG0vazsKKwlmbG9hdCBncmF5OworCS8vIFRoZSByb3VuZGluZyBt
b2RlIGZvciBpbnRlZ2VyIGRpdmlkZSBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQKKwlpZigg
KCByZXN1bHQgPT0gOCApIHx8ICggcmVzdWx0ID09IDkgKSApCisJZ3JheT0xLjA7CisJZWxzZSBn
cmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvZGl2aXNpb25fdmVydC52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvb3BlcmF0b3JzL2RpdmlzaW9uX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2MyZDM5YmY0
MzVmN2I2YWU3ODAxNjBiNzBlZTViZmRkMjRkOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvb3BlcmF0b3JzL2RpdmlzaW9uX3ZlcnQudmVydApAQCAtMCwwICsxLDI1IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSAxMDI7
CisJaW50IGsgPSAxMjsKKwlpbnQgcmVzdWx0ID0gbS9rOworCWZsb2F0IGdyYXk7CisJLy8gVGhl
IHJvdW5kaW5nIG1vZGUgZm9yIGludGVnZXIgZGl2aWRlIGlzIGltcGxlbWVudGF0aW9uLWRlcGVu
ZGVudAorCWlmKCAoIHJlc3VsdCA9PSA4ICkgfHwgKCByZXN1bHQgPT0gOSApICkKKwlncmF5PTEu
MDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2VxdWFsaXR5X2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML29wZXJhdG9ycy9lcXVhbGl0eV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNi
ZDAwMjRhNWM0ZmEyMGY5MGQxYWM2ZDY4M2QwYWUyYjMxZGY4OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML29wZXJhdG9ycy9lcXVhbGl0eV9mcmFnLmZyYWcKQEAgLTAsMCArMSwyNiBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSAxMDI7CisJaW50IGsgPSAxMjsKKwli
b29sIGVxdWFsdG8gPSAobSA9PSAxMDIpOworCWJvb2wgbm90ZXF1YWx0byA9IChrICE9IDEwMik7
CisKKwlmbG9hdCBncmF5OworCWlmKCBlcXVhbHRvICYmIG5vdGVxdWFsdG8gKQorCWdyYXk9MS4w
OworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5
LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2VxdWFsaXR5X3ZlcnQu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9lcXVhbGl0eV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjMzNTk2NTYyYWFjYmU1NmZmNTA3ZjU4NjkyN2FkZjFkMmIzZjg3NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML29wZXJhdG9ycy9lcXVhbGl0eV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyNiBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWlu
dCBtID0gMTAyOworCWludCBrID0gMTI7CisJYm9vbCBlcXVhbHRvID0gKG0gPT0gMTAyKTsKKwli
b29sIG5vdGVxdWFsdG8gPSAoayAhPSAxMDIpOworCisJZmxvYXQgZ3JheTsKKwlpZiggZXF1YWx0
byAmJiBub3RlcXVhbHRvICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0g
dmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
b3BlcmF0b3JzL2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvaW5wdXQucnVuLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNmUxNzY1ODhiZjg2ODZkY2RiODQ2ODhmMzFiMzU4NjQ4YmQ5OGNjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2lucHV0LnJ1bi50eHQKQEAgLTAs
MCArMSw1IEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitv
cGVyYXRvcnNfMDAxX3RvXzAwOC5odG1sCitvcGVyYXRvcnNfMDA5X3RvXzAxNi5odG1sCitvcGVy
YXRvcnNfMDE3X3RvXzAyNC5odG1sCitvcGVyYXRvcnNfMDI1X3RvXzAyNi5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvbG9naWNhbF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVy
YXRvcnMvbG9naWNhbF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY3NDkwOTJkMTViYTg5Y2Y2MzMy
YTcyNjEwNGJjZmNkMDBiZjVkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9y
cy9sb2dpY2FsX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDk0IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKK2Jvb2wgcmVzdWx0ID0gdHJ1ZTsKKwlib29sIGEgPSB0cnVlOworCWJvb2wgYiA9IHRy
dWU7CisKKwlpZiggKGEmJmIpICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQor
CQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlpZiggKGF8fGIpICkKKwkJcmVzdWx0ID0g
cmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlp
ZiggIShhXl5iKSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0
ID0gcmVzdWx0ICYmIGZhbHNlOworCisJYSA9IHRydWU7CisJYiA9IGZhbHNlOworCisJaWYoICEo
YSYmYikgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJl
c3VsdCAmJiBmYWxzZTsKKworCWlmKCAoYXx8YikgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1
ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCWlmKCAoYV5eYikgKQor
CQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBm
YWxzZTsKKworCWEgPSBmYWxzZTsKKwliID0gdHJ1ZTsKKworCWlmKCAhKGEmJmIpICkKKwkJcmVz
dWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7
CisKKwlpZiggKGF8fGIpICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQly
ZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlpZiggKGFeXmIpICkKKwkJcmVzdWx0ID0gcmVz
dWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlhID0g
ZmFsc2U7CisJYiA9IGZhbHNlOworCisJaWYoICEoYSYmYikgKQorCQlyZXN1bHQgPSByZXN1bHQg
JiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCWlmKCAhKGF8
fGIpICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1
bHQgJiYgZmFsc2U7CisKKwlpZiggIShhXl5iKSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVl
OworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJZmxvYXQgZ3JheTsKKwlp
ZiggcmVzdWx0ICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29w
ZXJhdG9ycy9sb2dpY2FsX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9sb2dpY2FsX3Zl
cnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZDVkZWIyYzkyOTkzZTFmYTYxOTkxMjZmZWYwYmJlYzA2YTQ2
YWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL2xvZ2ljYWxfdmVydC52
ZXJ0CkBAIC0wLDAgKzEsOTQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlib29sIHJlc3VsdCA9IHRydWU7CisJYm9vbCBhID0gdHJ1ZTsKKwli
b29sIGIgPSB0cnVlOworCisJaWYoIChhJiZiKSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVl
OworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJaWYoIChhfHxiKSApCisJ
CXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZh
bHNlOworCisJaWYoICEoYV5eYikgKQorCQlyZXN1bHQgPSByZXN1bHQgJiYgdHJ1ZTsKKwllbHNl
CisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCWEgPSB0cnVlOworCWIgPSBmYWxzZTsK
KworCWlmKCAhKGEmJmIpICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQly
ZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlpZiggKGF8fGIpICkKKwkJcmVzdWx0ID0gcmVz
dWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisKKwlpZigg
KGFeXmIpICkKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSBy
ZXN1bHQgJiYgZmFsc2U7CisKKwlhID0gZmFsc2U7CisJYiA9IHRydWU7CisKKwlpZiggIShhJiZi
KSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0
ICYmIGZhbHNlOworCisJaWYoIChhfHxiKSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVlOwor
CWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJaWYoIChhXl5iKSApCisJCXJl
c3VsdCA9IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gcmVzdWx0ICYmIGZhbHNl
OworCisJYSA9IGZhbHNlOworCWIgPSBmYWxzZTsKKworCWlmKCAhKGEmJmIpICkKKwkJcmVzdWx0
ID0gcmVzdWx0ICYmIHRydWU7CisJZWxzZQorCQlyZXN1bHQgPSByZXN1bHQgJiYgZmFsc2U7CisK
KwlpZiggIShhfHxiKSApCisJCXJlc3VsdCA9IHJlc3VsdCAmJiB0cnVlOworCWVsc2UKKwkJcmVz
dWx0ID0gcmVzdWx0ICYmIGZhbHNlOworCisJaWYoICEoYV5eYikgKQorCQlyZXN1bHQgPSByZXN1
bHQgJiYgdHJ1ZTsKKwllbHNlCisJCXJlc3VsdCA9IHJlc3VsdCAmJiBmYWxzZTsKKworCWZsb2F0
IGdyYXk7CisJaWYoIHJlc3VsdCApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML29wZXJhdG9ycy9tdWx0aXBsaWNhdGl2ZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRv
cnMvbXVsdGlwbGljYXRpdmVfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMWI1NmFjYjY0Y2YzMDBl
YTY1ZDE0YjE2N2E5ZDllNjNmNzAxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVy
YXRvcnMvbXVsdGlwbGljYXRpdmVfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWludCBtID0gMTAyOworCWludCBrID0gMTI7CisJaW50IHJlc3Vs
dCA9IG0qazsKKwlmbG9hdCBncmF5OworCWlmKCAoIHJlc3VsdCA9PSAxMjI0ICkgKQorCWdyYXk9
MS4wOworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBn
cmF5LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL211bHRpcGxpY2F0
aXZlX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9tdWx0aXBsaWNhdGl2ZV92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTIxNDZjODAxNjMzYTU0MTk3MDI0ZjVkODMwYWMzZjg1M2Q0NzVjNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9tdWx0aXBsaWNhdGl2ZV92ZXJ0
LnZlcnQKQEAgLTAsMCArMSwyNCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWludCBtID0gMTAyOworCWludCBrID0gMTI7CisJaW50IHJlc3Vs
dCA9IG0qazsKKwlmbG9hdCBncmF5OworCWlmKCAoIHJlc3VsdCA9PSAxMjI0ICkgKQorCWdyYXk9
MS4wOworCWVsc2UgZ3JheT0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwMV90
b18wMDguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9vcGVyYXRvcnNfMDAxX3RvXzAwOC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxZjBhMGQ0MDhlZWFhOGNiZjliNmNkM2Q0MDBkNWZjZTIyY2YyOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwMV90b18wMDgu
aHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IG9wZXJhdG9yc18wMDFf
dG9fMDA4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3
aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAg
ICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5
cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogInBvc3RmaXhpbmNyZW1lbnRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInBvc3RmaXhpbmNyZW1lbnRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvc3RmaXhpbmNyZW1lbnRfdmVy
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBvc3RmaXhpbmNyZW1lbnRfdmVydC50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
InBvc3RmaXhkZWNyZW1lbnRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBv
c3RmaXhkZWNyZW1lbnRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvc3RmaXhkZWNyZW1lbnRfdmVydC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInBvc3RmaXhkZWNyZW1lbnRfdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInByZWZpeGlu
Y3JlbWVudF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicHJlZml4aW5jcmVt
ZW50X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAg
ICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAg
ICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJwcmVmaXhpbmNyZW1lbnRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInByZWZpeGluY3JlbWVudF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicHJlZml4ZGVjcmVtZW50X2ZyYWcu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwcmVmaXhkZWNyZW1lbnRfZnJhZy50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogInByZWZpeGRlY3JlbWVudF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicHJl
Zml4ZGVjcmVtZW50X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAw
OV90b18wMTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9vcGVyYXRvcnNfMDA5X3RvXzAxNi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI0NzU5MmNlNmRkZGY2NzdkYjJmYjA4ZWE2ZDEzOWU5MWVjOThlZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwOV90b18w
MTYuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IG9wZXJhdG9yc18w
MDlfdG9fMDE2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxl
PSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWwor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogInVuYXJ5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ1
bmFyeV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAidW5hcnlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InVuYXJ5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsK
KyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJtdWx0aXBsaWNhdGl2ZV9mcmFnLmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAibXVsdGlwbGljYXRpdmVfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIm11bHRpcGxpY2F0aXZlX3Zl
cnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJtdWx0aXBsaWNhdGl2ZV92ZXJ0LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3Vs
dCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlm
b3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
ZGl2aXNpb25fZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImRpdmlzaW9uX2Zy
YWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAg
ICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJkaXZpc2lvbl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiZGl2
aXNpb25fdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogImFkZHN1YnRyYWN0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJhZGRzdWJ0cmFjdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
dW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6
IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1
ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3Rl
ZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiYWRkc3VidHJhY3RfdmVydC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogImFkZHN1YnRyYWN0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9v
cGVyYXRvcnMvb3BlcmF0b3JzXzAxN190b18wMjQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9v
cGVyYXRvcnNfMDE3X3RvXzAyNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZWUyM2MzYzg3ZjBhNTFkMDY5
MWNlZWYzMzYzMTg5YjM0OGUyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRv
cnMvb3BlcmF0b3JzXzAxN190b18wMjQuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0t
PgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1h
bmNlIHRlc3Q6IG9wZXJhdG9yc18wMTdfdG9fMDI0Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
IC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9v
Z2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUw
MCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIu
cnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInJlbGF0aW9uYWxfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInJlbGF0aW9uYWxfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInJlbGF0aW9u
YWxfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInJlbGF0aW9uYWxfdmVydC50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1
bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5p
Zm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAor
ICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
ImVxdWFsaXR5X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJlcXVhbGl0eV9m
cmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiZXF1YWxpdHlfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogImVx
dWFsaXR5X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsK
KyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJsb2dpY2FsX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJsb2dpY2FsX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAg
ICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWwor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJsb2dpY2FsX3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJsb2dpY2FsX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50Ijog
MSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVl
IjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzZWxlY3Rpb25fZnJhZy5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInNlbGVjdGlvbl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0
dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAg
ICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAg
ICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2VsZWN0aW9uX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzZWxlY3Rpb25fdmVydC50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML29wZXJhdG9ycy9vcGVyYXRvcnNfMDI1X3RvXzAyNi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0
b3JzL29wZXJhdG9yc18wMjVfdG9fMDI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAzMjlkYjJlYmIyMGY1
MjVlZGY0ZGU0NmIyMmQxOTcyMDc0MmJiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29w
ZXJhdG9ycy9vcGVyYXRvcnNfMDI1X3RvXzAyNi5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElU
LiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25m
b3JtYW5jZSB0ZXN0OiBvcGVyYXRvcnNfMDI1X3RvXzAyNi5odG1sPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVu
bmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJhc3NpZ25tZW50c19mcmFnLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAiYXNzaWdubWVudHNfZnJhZy50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7
CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRm
diIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAg
ICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBu
dWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogImFz
c2lnbm1lbnRzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJhc3NpZ25tZW50c192
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQor
fSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3Bvc3RmaXhkZWNyZW1lbnRfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3Bvc3RmaXhkZWNyZW1lbnRfZnJhZy5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY3YjVjYjQyNzQxNzA2ZDU3Njg5NjJmOGY0YzkyNzVlYWJjM2VlZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcG9zdGZpeGRlY3JlbWVudF9mcmFnLmZyYWcKQEAg
LTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSAyMzsKKwlp
bnQgayA9IG0tLTsKKwlmbG9hdCBncmF5OworCWlmKCAoIGsgPT0gMjMgKSAmJiAoIG0gPT0gMjIg
KSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdy
YXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMv
cG9zdGZpeGRlY3JlbWVudF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcG9zdGZpeGRl
Y3JlbWVudF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJmMzliZWQxMDdhMWI2OGVjMGFhNjIyNDQ2
MzE5M2IxNGY4MjkwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9wb3N0
Zml4ZGVjcmVtZW50X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG09MjM7CisJaW50IGsgPSBt
LS07CisJZmxvYXQgZ3JheTsKKwlpZiggKGs9PTIzKSAmJiAobT09MjIpICkKKwlncmF5PTEuMDsK
KwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3Bvc3RmaXhpbmNyZW1lbnRfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3Bvc3RmaXhpbmNyZW1lbnRfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkODFmOTA4YzZkMjRiZDk1MTdiMzMyNDI1MDE1Nzk1NjFiZWI3OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcG9zdGZpeGluY3JlbWVudF9mcmFnLmZy
YWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSAy
MzsKKwlpbnQgayA9IG0rKzsKKwlmbG9hdCBncmF5OworCWlmKCAoIGsgPT0gMjMgKSAmJiAoIG0g
PT0gMjQgKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVy
YXRvcnMvcG9zdGZpeGluY3JlbWVudF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcG9z
dGZpeGluY3JlbWVudF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwNzRmMWU5MThlYmJmODcxMWEx
ODRjMTY4MjUxNjc1YzNhYWQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9y
cy9wb3N0Zml4aW5jcmVtZW50X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG09MjM7CisJaW50
IGsgPSBtKys7CisJZmxvYXQgZ3JheTsKKwlpZiggKGs9PTIzKSAmJiAobT09MjQpICkKKwlncmF5
PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3ByZWZpeGRlY3JlbWVu
dF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcHJlZml4ZGVjcmVtZW50X2ZyYWcuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTU1OGUyOTQ0ZjExYzc4MDY0OWY0YzBjZGQzY2IxYzc4N2ZlOWE4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3ByZWZpeGRlY3JlbWVudF9mcmFn
LmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0g
PSAyMzsKKwlpbnQgayA9IC0tbTsKKwlmbG9hdCBncmF5OworCWlmKCAoIGsgPT0gMjIgKSAmJiAo
IG0gPT0gMjIgKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9v
cGVyYXRvcnMvcHJlZml4ZGVjcmVtZW50X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9w
cmVmaXhkZWNyZW1lbnRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMmI3ZjE4ZGIyNjk1YWJhYWZk
N2MzNWFhMmJkNzAxZjEzMjEwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRv
cnMvcHJlZml4ZGVjcmVtZW50X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG09MjM7CisJaW50
IGsgPSAtLW07CisJZmxvYXQgZ3JheTsKKwlpZiggKGs9PTIyKSAmJiAobT09MjIpICkKKwlncmF5
PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3ByZWZpeGluY3JlbWVu
dF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcHJlZml4aW5jcmVtZW50X2ZyYWcuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzY5Y2QwZTI2YjJmM2Y4ZjVlYTkzOWVhYzU1ZGQ5MWIyMGRkODhlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3ByZWZpeGluY3JlbWVudF9mcmFn
LmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0g
PSAyMzsKKwlpbnQgayA9ICsrbTsKKwlmbG9hdCBncmF5OworCWlmKCAoIGsgPT0gMjQgKSAmJiAo
IG0gPT0gMjQgKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9v
cGVyYXRvcnMvcHJlZml4aW5jcmVtZW50X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9w
cmVmaXhpbmNyZW1lbnRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZjQ0OTRiNTkyNDBlZTJmOTQ3
ZjQ4OTA2ZTRiY2Y3ZGVjMWQ1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRv
cnMvcHJlZml4aW5jcmVtZW50X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG09MjM7CisJaW50
IGsgPSArK207CisJZmxvYXQgZ3JheTsKKwlpZiggKGs9PTI0KSAmJiAobT09MjQpICkKKwlncmF5
PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3JlbGF0aW9uYWxfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3JlbGF0aW9uYWxfZnJhZy5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxNTYzMzcyN2VlZmZjMjJmNTdlMTQ1YTc1NTJhNmFlM2VkYTBhZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvcmVsYXRpb25hbF9mcmFnLmZyYWcKQEAgLTAsMCAr
MSwyNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSAxMDI7CisJaW50IGsg
PSAxMjsKKwlib29sIGxlc3N0aGFuICA9IChtPGspOworCWJvb2wgZ3JlYXRlcnRoYW4gPSAobT5r
KTsKKwlib29sIGxlc3N0aGFub3JlcXVhbHRvID0gKG0gPD0gMTAyKTsKKwlib29sIGdyZWF0ZXJ0
aGFub3JlcXVhbHRvID0gKGsgPj0xMik7CisJZmxvYXQgZ3JheTsKKwlpZiggIWxlc3N0aGFuICYm
IGdyZWF0ZXJ0aGFuICYmIGxlc3N0aGFub3JlcXVhbHRvICYmIGdyZWF0ZXJ0aGFub3JlcXVhbHRv
ICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3Jh
eSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9y
ZWxhdGlvbmFsX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9yZWxhdGlvbmFsX3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OWE1OGIxNDE0OGM3ZGJkYjYwMDhiMWRhNzgzMGUzMGIwMmViOWI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3JlbGF0aW9uYWxfdmVydC52
ZXJ0CkBAIC0wLDAgKzEsMjggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlpbnQgbSA9IDEwMjsKKwlpbnQgayA9IDEyOworCWJvb2wgbGVzc3Ro
YW4gID0gKG08ayk7CisJYm9vbCBncmVhdGVydGhhbiA9IChtPmspOworCWJvb2wgbGVzc3RoYW5v
cmVxdWFsdG8gPSAobSA8PSAxMDIpOworCWJvb2wgZ3JlYXRlcnRoYW5vcmVxdWFsdG8gPSAoayA+
PTEyKTsKKworCWZsb2F0IGdyYXk7CisJaWYoICFsZXNzdGhhbiAmJiBncmVhdGVydGhhbiAmJiBs
ZXNzdGhhbm9yZXF1YWx0byAmJiBncmVhdGVydGhhbm9yZXF1YWx0byApCisJZ3JheT0xLjA7CisJ
ZWxzZSBncmF5PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9zZWxlY3Rpb25fZnJhZy5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvb3BlcmF0b3JzL3NlbGVjdGlvbl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY5ZjU2
YjdjOTc2NzYyMWZlODExZDY1NzBiMGIxNzY2YmVlNWQwMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML29wZXJhdG9ycy9zZWxlY3Rpb25fZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWludCBqID0gMzA7CisJaW50IGsgPSAzNzsKKwlpbnQg
eSA9IDEwOworCWludCBuID0gMTI7CisJYm9vbCByZXN1bHQxID0gZmFsc2U7CisJYm9vbCByZXN1
bHQyID0gZmFsc2U7CisJKGo+ayk/KCByZXN1bHQxID0gdHJ1ZSApOiggcmVzdWx0MSA9IGZhbHNl
ICk7CisJKHk8bik/KCByZXN1bHQyID0gdHJ1ZSApOiggcmVzdWx0MiA9IGZhbHNlICk7CisJZmxv
YXQgZ3JheTsKKwlpZiggIXJlc3VsdDEgJiYgcmVzdWx0MiApCisJZ3JheT0xLjA7CisJZWxzZSBn
cmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvc2VsZWN0aW9uX3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML29wZXJhdG9ycy9zZWxlY3Rpb25fdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmMDM4YTFi
YzdiMTljYTMxYmE0YTQ2ZjI5MDQxMTM0ZDQ4ZThmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9vcGVyYXRvcnMvc2VsZWN0aW9uX3ZlcnQudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IGogPSAz
MDsKKwlpbnQgayA9IDM3OworCWludCB5ID0gMTA7CisJaW50IG4gPSAxMjsKKwlib29sIHJlc3Vs
dDEgPSBmYWxzZTsKKwlib29sIHJlc3VsdDIgPSBmYWxzZTsKKwkoaj5rKT8oIHJlc3VsdDEgPSB0
cnVlICk6KCByZXN1bHQxID0gZmFsc2UgKTsKKwkoeTxuKT8oIHJlc3VsdDIgPSB0cnVlICk6KCBy
ZXN1bHQyID0gZmFsc2UgKTsKKwlmbG9hdCBncmF5OworCWlmKCAhcmVzdWx0MSAmJiByZXN1bHQy
ICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5
LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3VuYXJ5
X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy91bmFyeV9mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmE1OWIyNzhlMzFhZmZmMDBjYzBmMzUzZDJjODU0ZGVhNzM0MTU3MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy91bmFyeV9mcmFnLmZyYWcKQEAgLTAsMCArMSwyNSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSArMjM7CisJaW50IGsgPSAtbTsK
Kwlib29sIGEgPSBmYWxzZTsKKwlib29sIGIgPSAhYTsKKwlmbG9hdCBncmF5OworCWlmKCAobT09
MjMpICYmIChrPT0tMjMpICYmIChiKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9vcGVyYXRvcnMvdW5hcnlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3Jz
L3VuYXJ5X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjEwNDA5Nzk0MDBjYmFhMTUxZGQ3ZTI5NjI5
Y2VhN2RhZWQxMmViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL3VuYXJ5
X3ZlcnQudmVydApAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJaW50IG0gPSArMjM7CisJaW50IGsgPSAtbTsKKwlib29s
IGEgPSBmYWxzZTsKKwlib29sIGIgPSAhYTsKKwlmbG9hdCBncmF5OworCWlmKCAobT09MjMpICYm
IChrPT0tMjMpICYmIChiKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xvciA9
IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3Bvdy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L2lucHV0LnJ1bi50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzliZmVkYTc3OWRiN2Y5N2Q1NmRmMTViMzQxODAyYjk2NzAwNmRlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Bvdy9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsNCBAQAorIyB0aGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorcG93XzAwMV90b18wMDguaHRt
bAorcG93XzAwOV90b18wMTYuaHRtbAorcG93XzAxN190b18wMjQuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd18wMDFfdG9fMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93XzAwMV90
b18wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTBkNTkwMWRiYTQ2NzBmMjViZGE1Yzg3OTUwOGM4MDE4
NTM4ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd18wMDFfdG9fMDA4Lmh0
bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBwb3dfMDAxX3RvXzAwOC5o
dG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2
cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfZmxvYXRf
ZnJhZ194dmFyeV95Y29uc3QyX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicG93X2Zs
b2F0X2ZyYWdfeHZhcnlfeWNvbnN0Mi5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBv
d19mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdDIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdDJfcmVmLmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdDIuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdDIudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjM19m
cmFnX3h2YXJ5X3ljb25zdDJfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVj
M19mcmFnX3h2YXJ5X3ljb25zdDIuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3df
dmVjM19mcmFnX3h2YXJ5X3ljb25zdDIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJwb3dfZmxvYXRfZnJhZ194Y29uc3QyX3l2YXJ5X3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAicG93X2Zsb2F0X2ZyYWdfeGNvbnN0Ml95dmFyeS5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInBvd19mbG9hdF9mcmFnX3hjb25zdDJfeXZhcnkudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjMl9m
cmFnX3hjb25zdDJfeXZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVj
Ml9mcmFnX3hjb25zdDJfeXZhcnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3df
dmVjMl9mcmFnX3hjb25zdDJfeXZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJwb3dfdmVjM19mcmFnX3hjb25zdDJfeXZhcnlfcmVmLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjM19mcmFnX3hjb25zdDJfeXZhcnkuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJwb3dfdmVjM19mcmFnX3hjb25zdDJfeXZhcnkudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfZmxvYXRfZnJh
Z194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicG93X2Zs
b2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InBvd19mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGYudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25zdGhhbGZf
cmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25z
dGhhbGYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3dfdmVjMl9mcmFnX3h2YXJ5
X3ljb25zdGhhbGYudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93XzAwOV90b18wMTYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Bvdy9wb3dfMDA5X3RvXzAxNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYjZkM2QwMDg0ZmZl
Y2M2NWZjMDY3ZDllOWRlMTQxNWNkZDU3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9w
b3cvcG93XzAwOV90b18wMTYuaHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRl
c3Q6IHBvd18wMDlfdG9fMDE2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5j
c3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRl
c3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogInBvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogInBvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInBvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInBvd19mbG9hdF9m
cmFnX3hjb25zdGhhbGZfeXZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJwb3df
ZmxvYXRfZnJhZ194Y29uc3RoYWxmX3l2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAicG93X2Zsb2F0X2ZyYWdfeGNvbnN0aGFsZl95dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInBvd192ZWMyX2ZyYWdfeGNvbnN0aGFsZl95dmFy
eV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInBvd192ZWMyX2ZyYWdfeGNvbnN0aGFs
Zl95dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBvd192ZWMyX2ZyYWdfeGNv
bnN0aGFsZl95dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInBvd192ZWMzX2ZyYWdfeGNvbnN0aGFsZl95dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogInBvd192ZWMzX2ZyYWdfeGNvbnN0aGFsZl95dmFyeS5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInBvd192ZWMzX2ZyYWdfeGNvbnN0aGFsZl95dmFyeS50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd19mbG9hdF92
ZXJ0X3h2YXJ5X3ljb25zdDJfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd19m
bG9hdF92ZXJ0X3h2YXJ5X3ljb25zdDIudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3df
ZmxvYXRfdmVydF94dmFyeV95Y29uc3QyLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicG93X3ZlYzJfdmVydF94dmFyeV95Y29uc3QyX3JlZi52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJwb3dfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdDIudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3dfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdDIudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJwb3dfdmVj
M192ZXJ0X3h2YXJ5X3ljb25zdDJfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBv
d192ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0Mi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBv
d192ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0Mi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogInBvd19mbG9hdF92ZXJ0X3hjb25zdDJfeXZhcnlfcmVmLnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd19mbG9hdF92ZXJ0X3hjb25zdDJfeXZhcnku
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJwb3dfZmxvYXRfdmVydF94Y29uc3QyX3l2YXJ5
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd18wMTdfdG9fMDI0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cv
cG93XzAxN190b18wMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzdhMGNhM2U1NjBmNGNlMzkzOTFkMzAy
YzJlNTk5ZjcwZjVlMmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd18wMTdf
dG9fMDI0Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBwb3dfMDE3
X3RvXzAyNC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJwb3dfdmVjMl92ZXJ0X3hjb25zdDJfeXZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInBvd192ZWMyX3ZlcnRfeGNvbnN0Ml95dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInBvd192ZWMyX3ZlcnRfeGNvbnN0Ml95dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd192ZWMzX3ZlcnRfeGNvbnN0Ml95dmFy
eV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicG93X3ZlYzNfdmVydF94Y29uc3Qy
X3l2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicG93X3ZlYzNfdmVydF94Y29uc3Qy
X3l2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAicG93X2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAicG93X2Zsb2F0X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogInBvd19mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJwb3dfdmVjMl92ZXJ0
X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd192
ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInBv
d192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd192ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicG93X3ZlYzNfdmVydF94dmFyeV95Y29u
c3RoYWxmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicG93X3ZlYzNfdmVydF94dmFyeV95
Y29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAicG93X2Zsb2F0X3ZlcnRfeGNvbnN0aGFsZl95dmFyeV9yZWYudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAicG93X2Zsb2F0X3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInBvd19mbG9hdF92ZXJ0X3hjb25zdGhhbGZfeXZhcnkudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJwb3dfdmVjMl92
ZXJ0X3hjb25zdGhhbGZfeXZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInBv
d192ZWMyX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InBvd192ZWMyX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogInBvd192ZWMzX3ZlcnRfeGNvbnN0aGFsZl95dmFy
eV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicG93X3ZlYzNfdmVydF94Y29uc3Ro
YWxmX3l2YXJ5LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicG93X3ZlYzNfdmVydF94Y29u
c3RoYWxmX3l2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF9mcmFnX3hjb25zdDJf
eXZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194Y29uc3QyX3l2YXJ5LmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTQ4M2FmNTAxNGQ3Nzk0ZjExNTI2NzQ2MDhhNTE1MGMyMDI1MjY5OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194Y29uc3QyX3l2
YXJ5LmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxv
YXQgYyA9IDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHBvdygy
LjAsIDIuMCAqIGMpIC8gNC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194Y29uc3QyX3l2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cG93L3Bvd19mbG9hdF9mcmFnX3hjb25zdDJfeXZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFh
YjhmZWUzNzg5Mzk3NTdjMjIyMWQxOGRkNTM1MWZiNTUzZWI2MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194Y29uc3QyX3l2YXJ5X3JlZi5mcmFnCkBAIC0w
LDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAgKiAo
Y29sb3IuciAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChleHAyKDIuMCAqIGMpIC8gNC4w
LCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRf
ZnJhZ194Y29uc3RoYWxmX3l2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X2ZyYWdf
eGNvbnN0aGFsZl95dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNDgwMjNiM2NmMmI2OWFjNDIwMjc0
ODI5MDY2N2Q3NTI5OTY4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zs
b2F0X2ZyYWdfeGNvbnN0aGFsZl95dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAgKiAoY29sb3IuciAtIDAuNSk7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChwb3coMC41LCAyLjAgKiBjKSAvIDQuMCwgMC4wLCAwLjAsIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X2ZyYWdfeGNvbnN0aGFsZl95
dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194Y29uc3RoYWxmX3l2
YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMWQ4ZmY4MTUwMjc0OWU1ODFmYTkwY2I0Yzc1Yzc5
MGE5Nzk5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X2ZyYWdf
eGNvbnN0aGFsZl95dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlmbG9hdCBjID0gLTIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KGV4cDIoMi4wICogYykgLyA0LjAsIDAuMCwgMC4wLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdDIuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194dmFyeV95Y29uc3QyLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTNiOTFlOThmNzc2NDU1ZTQ1ODU2NDViYTg2MDAxOWU3M2FmZTliMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194dmFyeV95Y29uc3QyLmZyYWcKQEAg
LTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDQuMCAq
IChjb2xvci5yKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHBvdyhjLCAyLjApIC8gNC4wLCAwLjAs
IDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194
dmFyeV95Y29uc3QyX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF9mcmFnX3h2YXJ5
X3ljb25zdDJfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZiMmEwY2Y3NGM5MzNmYWY2NzRkM2U4NDJk
ZGMxMDM0MmM3Y2NkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRf
ZnJhZ194dmFyeV95Y29uc3QyX3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWZsb2F0IGMgPSA0LjAgKiAoY29sb3Iucik7CisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNChjICogYyAvIDQuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9wb3cvcG93X2Zsb2F0X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cG93L3Bvd19mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWVh
N2I1MGNkMDg4N2U4ZTYzODI4N2Q4ZjVhMzU2NjQxYTg0ZDNkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd19mbG9hdF9mcmFnX3h2YXJ5X3ljb25zdGhhbGYuZnJhZwpAQCAtMCww
ICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTYuMCAqIGNv
bG9yLnI7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChwb3coYywgMC41KSAvIDQuMCwgMC4wLCAwLjAs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X2ZyYWdfeHZhcnlf
eWNvbnN0aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfZnJhZ194dmFyeV95
Y29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWIxYjcyMmJhMWYzZGQwNTlhZjE1MTg1
ZmNmZWM0YzcyZGZiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0
X2ZyYWdfeHZhcnlfeWNvbnN0aGFsZl9yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTYuMCAqIGNvbG9yLnI7CisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChzcXJ0KGMpIC8gNC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfdmVydF94Y29uc3QyX3l2YXJ5LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9wb3cvcG93X2Zsb2F0X3ZlcnRfeGNvbnN0Ml95dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzU0
ZWJiNzMyYTI5MDQ3NDJjOWMyZWVlN2VkMjJiM2RmZmZkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9wb3cvcG93X2Zsb2F0X3ZlcnRfeGNvbnN0Ml95dmFyeS52ZXJ0CkBAIC0wLDAgKzEs
MTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMi4wICogKGd0Zl9Db2xvci5y
IC0gMC41KTsKKwljb2xvciA9IHZlYzQocG93KDIuMCwgMi4wICogYykgLyA0LjAsIDAuMCwgMC4w
LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92ZXJ0X3hj
b25zdDJfeXZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X3ZlcnRfeGNvbnN0
Ml95dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGZiYTBmNWI2ZWMxZmY5YzQyZGE5M2FhMTY0
YzBkNjMwYWY3ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92
ZXJ0X3hjb25zdDJfeXZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWZsb2F0IGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWNvbG9yID0g
dmVjNChleHAyKDIuMCAqIGMpIC8gNC4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfdmVydF94Y29uc3RoYWxmX3l2YXJ5LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9wb3cvcG93X2Zsb2F0X3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM0YjBmZmMzYzk4OGNhNGRhODM5YTcwZDllZjMzZTE4YmQ1ZjM4OGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0
CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMi4wICog
KGd0Zl9Db2xvci5yIC0gMC41KTsKKwljb2xvciA9IHZlYzQocG93KDAuNSwgMi4wICogYykgLyA0
LjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19m
bG9hdF92ZXJ0X3hjb25zdGhhbGZfeXZhcnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zs
b2F0X3ZlcnRfeGNvbnN0aGFsZl95dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2M3MWZlNjA2
YTNiODU3MThlNDFmOTFlZjZjZDFiZTIyYjM0MjFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvcG93L3Bvd19mbG9hdF92ZXJ0X3hjb25zdGhhbGZfeXZhcnlfcmVmLnZlcnQKQEAgLTAsMCAr
MSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAtMi4wICogKGd0Zl9Db2xv
ci5yIC0gMC41KTsKKwljb2xvciA9IHZlYzQoZXhwMigyLjAgKiBjKSAvIDQuMCwgMC4wLCAwLjAs
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X2Zsb2F0X3ZlcnRfeHZh
cnlfeWNvbnN0Mi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92ZXJ0X3h2YXJ5X3ljb25z
dDIudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTdkYTEzN2FjMjc1MzEyOWM5M2FlMWMyYzE1Yzc0NzZkZGIy
MjFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92ZXJ0X3h2YXJ5
X3ljb25zdDIudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxv
YXQgYyA9IDQuMCAqIChndGZfQ29sb3Iucik7CisJY29sb3IgPSB2ZWM0KHBvdyhjLCAyLjApIC8g
NC4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3df
ZmxvYXRfdmVydF94dmFyeV95Y29uc3QyX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9h
dF92ZXJ0X3h2YXJ5X3ljb25zdDJfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRhZWE0N2RkNDA4Njhm
MmU5ODYwODg5N2RmMjdmZGQyMGFhNDU3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bv
dy9wb3dfZmxvYXRfdmVydF94dmFyeV95Y29uc3QyX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gNC4wICogKGd0Zl9Db2xvci5yKTsKKwlj
b2xvciA9IHZlYzQoYyAqIGMgLyA0LjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92ZXJ0X3h2YXJ5X3ljb25zdGhhbGYudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Bvdy9wb3dfZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmLnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzVkZGUyMGVlM2ZlNmRiNmE3YzU1ZmM3YTg3YWNlZDc3NTczNmNlZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfdmVydF94dmFyeV95Y29uc3RoYWxmLnZlcnQK
QEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAxNi4wICog
Z3RmX0NvbG9yLnI7CisJY29sb3IgPSB2ZWM0KHBvdyhjLCAwLjUpIC8gNC4wLCAwLjAsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxvYXRfdmVydF94dmFy
eV95Y29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd19mbG9hdF92ZXJ0X3h2YXJ5
X3ljb25zdGhhbGZfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4OTJiNjlkMjAxYTA5YTM4YmQxNmVm
MmYzMzE5YmMzYmNiNjQ5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfZmxv
YXRfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTYuMCAqIGd0Zl9Db2xvci5yOworCWNvbG9yID0g
dmVjNChzcXJ0KGMpIC8gNC4wLCAwLjAsIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFnX3hjb25zdDJfeXZhcnkuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bv
dy9wb3dfdmVjMl9mcmFnX3hjb25zdDJfeXZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjE4NjM5OWM4
ZDIyMjA4YTUxMGM3ODEwYTk2YWE2NDVlYmQyZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvcG93L3Bvd192ZWMyX2ZyYWdfeGNvbnN0Ml95dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTggQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDIuMCAqIChjb2xvci5yZyAtIDAu
NSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChwb3codmVjMigyLjApLCAyLjAgKiBjKSAvIDQuMCwg
MC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX2ZyYWdfeGNv
bnN0Ml95dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFnX3hjb25zdDJf
eXZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhZmE5MTA1OGYxNDE5ZGU2Y2Y2OTRhNzI3NGNm
YTg1MGY4MTA4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFn
X3hjb25zdDJfeXZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjMiBjID0gMi4wICogKGNvbG9yLnJnIC0gMC41KTsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KGV4cDIoMi4wICogYykgLyA0LjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFnX3hjb25zdGhhbGZfeXZhcnkuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Bvdy9wb3dfdmVjMl9mcmFnX3hjb25zdGhhbGZfeXZhcnkuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MWRlNGE3YzgxNThlYzYzMjZjZjU3OWY0MjMzMzg5MDU1ODFjZjJjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX2ZyYWdfeGNvbnN0aGFsZl95dmFyeS5mcmFnCkBAIC0w
LDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDIuMCAqIChj
b2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChwb3codmVjMigwLjUpLCAyLjAg
KiBjKSAvIDQuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192
ZWMyX2ZyYWdfeGNvbnN0aGFsZl95dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVj
Ml9mcmFnX3hjb25zdGhhbGZfeXZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1MTUyNGQ5Y2Jk
NzMzZDIyYjVmMTY5ZTM5N2NhYzJmZGYwZjkwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3Bvdy9wb3dfdmVjMl9mcmFnX3hjb25zdGhhbGZfeXZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwx
OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gLTIuMCAqIChjb2xvci5y
ZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChleHAyKDIuMCAqIGMpIC8gNC4wLCAwLjAs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfZnJhZ194dmFyeV95
Y29uc3QyLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfZnJhZ194dmFyeV95Y29uc3QyLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGIyYjJkMmRlYTc2NGEzOTBiNmNlMTNkNjM0YjEzYWYyYjk4ZmFkOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFnX3h2YXJ5X3ljb25z
dDIuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMy
IGMgPSA0LjAgKiAoY29sb3IucmcpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocG93KGMsIHZlYzIo
Mi4wKSkgLyA0LjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3df
dmVjMl9mcmFnX3h2YXJ5X3ljb25zdDJfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJf
ZnJhZ194dmFyeV95Y29uc3QyX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNTVjNzc4OWRjNGJmMDk4
YjIxMzA1YmVjOTM4YmU4YmU3MmIxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cv
cG93X3ZlYzJfZnJhZ194dmFyeV95Y29uc3QyX3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDQuMCAqIChjb2xvci5yZyk7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNChjICogYyAvIDQuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd192ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvcG93L3Bvd192ZWMyX2ZyYWdfeHZhcnlfeWNvbnN0aGFsZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEz
ZDE4YzQ2ZWI3MTAxN2QzNGYyMTU5NTFhMzgwY2IwNWFiOWY0YTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfZnJhZ194dmFyeV95Y29uc3RoYWxmLmZyYWcKQEAgLTAs
MCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTYuMCAqIGNv
bG9yLnJnOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocG93KGMsIHZlYzIoMC41KSkgLyA0LjAsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl9mcmFnX3h2YXJ5
X3ljb25zdGhhbGZfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfZnJhZ194dmFyeV95
Y29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1OGI3YzMyZjkxYjRmMDcxMDM3YTgxMmJi
N2M0YjdhN2RhYmZkYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJf
ZnJhZ194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDE2LjAgKiBjb2xvci5yZzsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KHNxcnQoYykgLyA0LjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Bvdy9wb3dfdmVjMl92ZXJ0X3hjb25zdDJfeXZhcnkudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9w
b3dfdmVjMl92ZXJ0X3hjb25zdDJfeXZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODE2NzNlNWI2NDE4
NWJjMzE4ZGMxNTBjZTNlODk5NTQ1YzA1YWVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cG93L3Bvd192ZWMyX3ZlcnRfeGNvbnN0Ml95dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsK
Kwljb2xvciA9IHZlYzQocG93KHZlYzIoMi4wKSwgMi4wICogYykgLyA0LjAsIDAuMCwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl92ZXJ0X3hjb25zdDJfeXZh
cnlfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfdmVydF94Y29uc3QyX3l2YXJ5X3Jl
Zi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYzZTk1ZGM0YTQyODM2OWQyOGYyMzM0YTI4NDFmNjFkZjJmYmZh
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfdmVydF94Y29uc3Qy
X3l2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWMyIGMgPSAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwljb2xvciA9IHZlYzQoZXhwMigy
LjAgKiBjKSAvIDQuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93
L3Bvd192ZWMyX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192
ZWMyX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYTNhNTFhMDgyNzRm
YTJmMjEyZDhkOGIxZjgyNzkxODc4MjI2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9w
b3cvcG93X3ZlYzJfdmVydF94Y29uc3RoYWxmX3l2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDIuMCAqIChndGZfQ29sb3IucmcgLSAwLjUp
OworCWNvbG9yID0gdmVjNChwb3codmVjMigwLjUpLCAyLjAgKiBjKSAvIDQuMCwgMC4wLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeGNvbnN0aGFs
Zl95dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl92ZXJ0X3hjb25zdGhhbGZf
eXZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ3NmI3Njg5ZWY3ZTM3ZTA0NDY1ZmY4YjE1MjEy
MDI5OTJlYTczNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl92ZXJ0
X3hjb25zdGhhbGZfeXZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzIgYyA9IC0yLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwljb2xvciA9
IHZlYzQoZXhwMigyLjAgKiBjKSAvIDQuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0Mi52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0Mi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZDJjMjI5
MDc0ZWEyYmQwYmRhZDExY2Y4Mjg4YWE2ZWZjYTAyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9wb3cvcG93X3ZlYzJfdmVydF94dmFyeV95Y29uc3QyLnZlcnQKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDQuMCAqIChndGZfQ29sb3IucmcpOwor
CWNvbG9yID0gdmVjNChwb3coYywgdmVjMigyLjApKSAvIDQuMCwgMC4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0Ml9yZWYu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdDJfcmVmLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDU5NjhlNDhiNGRiZDhmZjhmNDhmNDA3NmQxZmRmY2EyOTU2MDYzZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjMl92ZXJ0X3h2YXJ5X3ljb25zdDJf
cmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9
IDQuMCAqIChndGZfQ29sb3IucmcpOworCWNvbG9yID0gdmVjNChjICogYyAvIDQuMCwgMC4wLCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlf
eWNvbnN0aGFsZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0
aGFsZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YmQ0ZjJiZDYxZjQ2NTFhODdlNjVkNmIyZTIwMzBhYjU0
YzI5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzJfdmVydF94dmFy
eV95Y29uc3RoYWxmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CXZlYzIgYyA9IDE2LjAgKiBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0KHBvdyhjLCB2ZWMy
KDAuNSkpIC8gNC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cv
cG93X3ZlYzJfdmVydF94dmFyeV95Y29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bv
d192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODMwYzRl
OWE4NzliZmQ4NTQwNmJjOTE3MDk1N2U2N2FmNmNiZjViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvcG93L3Bvd192ZWMyX3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydApAQCAtMCww
ICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTYuMCAqIGd0Zl9Db2xv
ci5yZzsKKwljb2xvciA9IHZlYzQoc3FydChjKSAvIDQuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeGNvbnN0Ml95dmFyeS5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeGNvbnN0Ml95dmFyeS5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkMGU4OTNmMGE1YTgzYzRmYmJjYjVhNWVkYjhhZDNkMDNiNmYxOTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfZnJhZ194Y29uc3QyX3l2YXJ5LmZyYWcKQEAgLTAs
MCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMi4wICogKGNv
bG9yLnJnYiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChwb3codmVjMygyLjApLCAyLjAg
KiBjKSAvIDQuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM19m
cmFnX3hjb25zdDJfeXZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfZnJhZ194
Y29uc3QyX3l2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMzdhNjJiYzJkMDdjOGU4ZjYwNzM0
YWVkNDU4OWQyOGI1YzdjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3Zl
YzNfZnJhZ194Y29uc3QyX3l2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDIuMCAqIChjb2xvci5yZ2IgLSAwLjUpOworCWds
X0ZyYWdDb2xvciA9IHZlYzQoZXhwMigyLjAgKiBjKSAvIDQuMCwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM19mcmFnX3hjb25zdGhhbGZfeXZhcnkuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Bvdy9wb3dfdmVjM19mcmFnX3hjb25zdGhhbGZfeXZhcnkuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45OTFjOWI4MDRkNmVmM2Y3NzVlMDJlMTVkMzU5YWMxZjE1MjgyODRkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeGNvbnN0aGFsZl95dmFyeS5mcmFnCkBA
IC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDIuMCAq
IChjb2xvci5yZ2IgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocG93KHZlYzMoMC41KSwg
Mi4wICogYykgLyA0LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3Zl
YzNfZnJhZ194Y29uc3RoYWxmX3l2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMz
X2ZyYWdfeGNvbnN0aGFsZl95dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmExOGFmZGJhY2Jh
OGVjZmJmZjcyYWUzMGJmMDg2YjQ1MjI3NjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cG93L3Bvd192ZWMzX2ZyYWdfeGNvbnN0aGFsZl95dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE4
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSAtMi4wICogKGNvbG9yLnJn
YiAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChleHAyKDIuMCAqIGMpIC8gNC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0
Mi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0Mi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1NDY5ODQ2OGJiYTdlN2QwYjQ5MTc2NWU2YjEwNWQyMGQ0ZGZjNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfZnJhZ194dmFyeV95Y29uc3QyLmZy
YWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0g
Y29sb3IucmdiOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocG93KGMsIHZlYzMoMi4wKSkgLyA0LjAs
IDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfZnJhZ194dmFyeV95
Y29uc3QyX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeHZhcnlfeWNvbnN0
Ml9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjYzNjI1NjY1NWI5NTY3MzlhNjdkNGQ1MjY0ZDY5ZTE5
YmNlNTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdfeHZh
cnlfeWNvbnN0Ml9yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMzIGMgPSBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjICogYyAv
IDQuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM19mcmFnX3h2
YXJ5X3ljb25zdGhhbGYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM19mcmFnX3h2YXJ5X3lj
b25zdGhhbGYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDA1N2VkNzI3YjQyMWQ4YjdjMGE2ODI4MTBjM2I5
MDcwOTJlYmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX2ZyYWdf
eHZhcnlfeWNvbnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzMgYyA9IDE2LjAgKiBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChwb3coYywgdmVjMygwLjUpKSAvIDQuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3Bvdy9wb3dfdmVjM19mcmFnX3h2YXJ5X3ljb25zdGhhbGZfcmVmLmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9w
b3cvcG93X3ZlYzNfZnJhZ194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
YWFkZDlmYjY1NjMzN2YzMDY3OGJhNDNhZjkzMmNjMDRkYmRmYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfZnJhZ194dmFyeV95Y29uc3RoYWxmX3JlZi5mcmFnCkBA
IC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDE2LjAg
KiBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChzcXJ0KGMpIC8gNC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeGNvbnN0Ml95dmFyeS52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeGNvbnN0Ml95dmFyeS52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJlZGE1MDFiYjcxMmM1OTdlMGEyZjkxMzg4Y2VmMzYzZGNlNmYxMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfdmVydF94Y29uc3QyX3l2YXJ5LnZlcnQK
QEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDIuMCAqIChn
dGZfQ29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZlYzQocG93KHZlYzMoMi4wKSwgMi4wICog
YykgLyA0LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNf
dmVydF94Y29uc3QyX3l2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRf
eGNvbnN0Ml95dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQzNzdkODg5NGUyNmE3MzRlZDE0
ZWRlNDY5ZDg5ZmUzMGQxN2FiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192
ZWMzX3ZlcnRfeGNvbnN0Ml95dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMyBjID0gMi4wICogKGd0Zl9Db2xvci5yZ2IgLSAwLjUpOworCWNv
bG9yID0gdmVjNChleHAyKDIuMCAqIGMpIC8gNC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvcG93L3Bvd192ZWMzX3ZlcnRfeGNvbnN0aGFsZl95dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5
ZGZhMjllNDZkYjQyMGMwOTY5NTgxZDEzYmRlYjU3YzAzOTJjNDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfdmVydF94Y29uc3RoYWxmX3l2YXJ5LnZlcnQKQEAgLTAs
MCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDIuMCAqIChndGZfQ29s
b3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZlYzQocG93KHZlYzMoMC41KSwgMi4wICogYykgLyA0
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfdmVydF94
Y29uc3RoYWxmX3l2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeGNv
bnN0aGFsZl95dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGMzM2ZhY2U1MDhiNmRkNThjODQ3
YTNlODcyZWIzMzgwOTUyYjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192
ZWMzX3ZlcnRfeGNvbnN0aGFsZl95dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gLTIuMCAqIChndGZfQ29sb3IucmdiIC0gMC41KTsK
Kwljb2xvciA9IHZlYzQoZXhwMigyLjAgKiBjKSAvIDQuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdDIudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Bvdy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdDIudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Njdi
YWIwZmZlYjNiZTJjNjUyZDJkYzI0ZDYzZWVhYjE4MjgwMjQ3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0Mi52ZXJ0CkBAIC0wLDAgKzEs
MTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGMgPSA0LjAgKiAoZ3RmX0NvbG9yLnJn
Yik7CisJY29sb3IgPSB2ZWM0KHBvdyhjLCB2ZWMzKDIuMCkpIC8gNC4wLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMzX3ZlcnRfeHZhcnlfeWNvbnN0Ml9yZWYu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdDJfcmVmLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDQ5YzYzM2U1YTAwYTY3OTNhZGI5ODYzNjAxNjEyMGUxODdkNzAzNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdDJf
cmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9
IDQuMCAqIChndGZfQ29sb3IucmdiKTsKKwljb2xvciA9IHZlYzQoYyAqIGMgLyA0LjAsIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfdmVydF94dmFyeV95Y29u
c3RoYWxmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9wb3cvcG93X3ZlYzNfdmVydF94dmFyeV95Y29uc3RoYWxm
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWIzMThkOTlkYmMzYjRiZmJiYjAwMTQwNjQ3OTcwMjQ3N2JmYzJh
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3lj
b25zdGhhbGYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MyBjID0gMTYuMCAqIGd0Zl9Db2xvci5yZ2I7CisJY29sb3IgPSB2ZWM0KHBvdyhjLCB2ZWMzKDAu
NSkpIC8gNC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcG93L3Bvd192ZWMz
X3ZlcnRfeHZhcnlfeWNvbnN0aGFsZl9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bvdy9wb3dfdmVjM192
ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU3N2I3Y2U3MmE2ZjRl
YTU3OGZhY2FlZGFiMGI5MTNhYWRiZDI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Bv
dy9wb3dfdmVjM192ZXJ0X3h2YXJ5X3ljb25zdGhhbGZfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDE2LjAgKiBndGZfQ29sb3IucmdiOwor
CWNvbG9yID0gdmVjNChzcXJ0KGMpIC8gNC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvcmFkaWFucy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9pbnB1dC5ydW4u
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5MWE4Mjc0NWY5OGUyNjQ4OTBhMTBiOTExOTZjZDIwMGVjYzUwYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL2lucHV0LnJ1bi50eHQKQEAgLTAs
MCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCity
YWRpYW5zXzAwMV90b18wMDYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRp
YW5zXzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc18wMDFfdG9fMDA2
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmJkYmY1OTNlNzA2NmNiNDY0OTg4NWQ2ZDYyNGExMTQ2NDExYjRi
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc18wMDFfdG9fMDA2
Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiByYWRpYW5zXzAwMV90
b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9Indp
ZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicmFk
aWFuc19mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicmFk
aWFuc19mbG9hdF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicmFk
aWFuc19mbG9hdF9mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAicmFkaWFuc192ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJyYWRpYW5zX3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInJhZGlhbnNfdmVjMl9mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicmFkaWFuc192ZWMzX2ZyYWdfeHZhcnlfcmVm
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJyYWRpYW5zX3ZlYzNfZnJhZ194dmFyeS5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInJhZGlhbnNfdmVjM19mcmFnX3h2YXJ5LnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicmFkaWFuc19m
bG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJyYWRpYW5z
X2Zsb2F0X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJyYWRpYW5zX2Zs
b2F0X3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJyYWRpYW5zX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAicmFkaWFuc192ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJyYWRpYW5zX3ZlYzJfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogInJhZGlhbnNfdmVjM192ZXJ0X3h2YXJ5X3JlZi52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJyYWRpYW5zX3ZlYzNfdmVydF94dmFyeS52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInJhZGlhbnNfdmVjM192ZXJ0X3h2YXJ5LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3JhZGlhbnMvcmFkaWFuc19mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY4Nzhm
MzQwOTg3YWE3YjA4NDZmZTRlNzQ0ODQ4MDA3ODcwMDNkZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3JhZGlhbnMvcmFkaWFuc19mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCArMSwx
OSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQx
NTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDM2MC4wICogMi4wICogKGNvbG9yLnIgLSAw
LjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmFkaWFucyhjKSAvICg0LjAgKiBNX1BJKSArIDAu
NSwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlh
bnNfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc19m
bG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliODRmMjYwMWQyNTFkNjZlYzRl
NTgzYzY3NGU5NTU3NTc5ZjA0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5z
L3JhZGlhbnNfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3
OTMyMzg0NjsKKwlmbG9hdCBjID0gMzYwLjAgKiAyLjAgKiAoY29sb3IuciAtIDAuNSk7CisJZ2xf
RnJhZ0NvbG9yID0gdmVjNCgoYyAqIE1fUEkgLyAxODAuMCkgLyAoNC4wICogTV9QSSkgKyAwLjUs
IDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5z
X2Zsb2F0X3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc19mbG9hdF92
ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY0ZWExYzJkNjkyYjRkNjM5OGJjNWEyZGVhNjk4
MmI0YTk3MzUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc19m
bG9hdF92ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMg
PSAzNjAuMCAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KHJhZGlh
bnMoYykgLyAoNC4wICogTV9QSSkgKyAwLjUsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODE5N2UxM2RhM2JhNGYxNDdjYWMxNzBkZGEyZTA4MWU2M2E2NzQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX2Zsb2F0X3ZlcnRfeHZhcnlfcmVm
LnZlcnQKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0
IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGMgPSAzNjAuMCAqIDIuMCAq
IChndGZfQ29sb3IuciAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KChjICogTV9QSSAvIDE4MC4wKSAv
ICg0LjAgKiBNX1BJKSArIDAuNSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9y
YWRpYW5zL3JhZGlhbnNfdmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5ZjJjMzRj
NmI0MmExZmJlZjUzMjQzZTc2M2EyM2ZlODkwYWVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3JhZGlhbnMvcmFkaWFuc192ZWMyX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAzNjAuMCAqIDIuMCAqIChjb2xvci5yZyAtIDAuNSk7
CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChyYWRpYW5zKGMpIC8gKDQuMCAqIE1fUEkpICsgMC41LCAw
LjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfdmVjMl9m
cmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX3ZlYzJfZnJhZ194
dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzRjMDMzZGQzYzI0MGU3Yjk0MDY3N2ZmZTM2YTgy
MWUyNTcyZDgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX3Zl
YzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2
ZWMyIGMgPSAzNjAuMCAqIDIuMCAqIChjb2xvci5yZyAtIDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0g
dmVjNCgoYyAqIE1fUEkgLyAxODAuMCkgLyAoNC4wICogTV9QSSkgKyAwLjUsIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc192ZWMyX3ZlcnRfeHZhcnku
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc192ZWMyX3ZlcnRfeHZhcnkudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hODk0YWIzMThhMGE4ZWNmMjhlYjk0MjFjZTE0ZjllY2I4YmRiYmI4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5zX3ZlYzJfdmVydF94dmFyeS52ZXJ0
CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJ
ID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAzNjAuMCAqIDIuMCAqIChndGZf
Q29sb3IucmcgLSAwLjUpOworCWNvbG9yID0gdmVjNChyYWRpYW5zKGMpIC8gKDQuMCAqIE1fUEkp
ICsgMC41LCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3Jh
ZGlhbnNfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFucy9yYWRpYW5z
X3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDdiNjZkNDA4N2I4MWE4N2Ji
NzcyMTFhM2FiYWJiOTczZTIzNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFkaWFu
cy9yYWRpYW5zX3ZlYzJfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4
NDY7CisJdmVjMiBjID0gMzYwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnIC0gMC41KTsKKwljb2xv
ciA9IHZlYzQoKGMgKiBNX1BJIC8gMTgwLjApIC8gKDQuMCAqIE1fUEkpICsgMC41LCAwLjAsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfdmVjM19mcmFn
X3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfdmVjM19mcmFnX3h2YXJ5LmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGQ2OTgzYzcyYTc1OTA0OGZmMzYzNGUwMDU4ZGJlMjA3MTBkNjRmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc192ZWMzX2ZyYWdfeHZh
cnkuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMgPSAzNjAuMCAq
IDIuMCAqIChjb2xvci5yZ2IgLSAwLjUpOworCWdsX0ZyYWdDb2xvciA9IHZlYzQocmFkaWFucyhj
KSAvICg0LjAgKiBNX1BJKSArIDAuNSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Jh
ZGlhbnMvcmFkaWFuc192ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5z
L3JhZGlhbnNfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjODM0NDk2ZjRm
ZmRmNGM5ZjNkOTc4ZGExYzljODk4NWYxZmQ0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9yYWRpYW5zL3JhZGlhbnNfdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMTkg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5
MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgYyA9IDM2MC4wICogMi4wICogKGNvbG9yLnJnYiAtIDAu
NSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCgoYyAqIE1fUEkgLyAxODAuMCkgLyAoNC4wICogTV9Q
SSkgKyAwLjUsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNf
dmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yYWRpYW5zL3JhZGlhbnNfdmVjM192ZXJ0
X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFiNDZiZmY1MDI3Y2Y3ZTlmNjNmODZmOTRjZTEwMjRm
N2Y5NmJiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JhZGlhbnMvcmFkaWFuc192ZWMz
X3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Y29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJdmVjMyBjID0gMzYw
LjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KHJhZGlhbnMo
YykgLyAoNC4wICogTV9QSSkgKyAwLjUsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9yYWRpYW5zL3JhZGlhbnNfdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmFk
aWFucy9yYWRpYW5zX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDAzZTMy
YWY2ZmQxNDlkYmQwNWIzMzg1NGI1YjNlMTY2N2I1OGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvcmFkaWFucy9yYWRpYW5zX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsx
LDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTky
NjUzNTg5NzkzMjM4NDY7CisJdmVjMyBjID0gMzYwLjAgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAt
IDAuNSk7CisJY29sb3IgPSB2ZWM0KChjICogTV9QSSAvIDE4MC4wKSAvICg0LjAgKiBNX1BJKSAr
IDAuNSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvaW5wdXQucnVu
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3JlZmxlY3QvaW5wdXQucnVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzJjOTYw
ZTZjOWNjZmM2OTk5YmJjMjRjYjRhYTY0YWQ3NzI0YmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvcmVmbGVjdC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorcmVmbGVjdF8wMDFfdG9fMDA2Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF8wMDFfdG9fMDA2Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfMDAxX3RvXzAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1Mjcz
YzQxYmY1NGVkMDlhNDczOTZiYmRlNTkxZDY2YWRhYzQxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfMDAxX3RvXzAwNi5odG1sCkBAIC0wLDAgKzEsMTA5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdM
U0wgY29uZm9ybWFuY2UgdGVzdDogcmVmbGVjdF8wMDFfdG9fMDA2Lmh0bWw8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4
OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rl
c3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInJlZmxlY3RfZmxvYXRfZnJhZ19pdmFyeW5j
b25zdF9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInJlZmxlY3RfZmxvYXRfZnJhZ19p
dmFyeW5jb25zdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInJlZmxlY3RfZmxvYXRf
ZnJhZ19pdmFyeW5jb25zdC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogInJlZmxlY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdF9yZWYudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicmVmbGVjdF9mbG9hdF92ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAicmVmbGVjdF9mbG9hdF92ZXJ0X2l2YXJ5bmNvbnN0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicmVmbGVjdF92
ZWMyX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
bnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJyZWZs
ZWN0X3ZlYzJfZnJhZ19pdmFyeW5jb25zdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InJlZmxlY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicmVmbGVjdF92ZWMyX3ZlcnRfaXZhcnluY29uc3Rf
cmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInJlZmxlY3RfdmVjMl92ZXJ0X2l2YXJ5
bmNvbnN0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicmVmbGVjdF92ZWMyX3ZlcnRfaXZh
cnluY29uc3QudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJyZWZsZWN0X3ZlYzNfZnJhZ19pdmFyeW5jb25zdF9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInJlZmxlY3RfdmVjM19mcmFnX2l2YXJ5bmNvbnN0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAicmVmbGVjdF92ZWMzX2ZyYWdfaXZhcnluY29uc3QudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJyZWZsZWN0X3ZlYzNfdmVydF9p
dmFyeW5jb25zdF9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicmVmbGVjdF92ZWMz
X3ZlcnRfaXZhcnluY29uc3QudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJyZWZsZWN0X3Zl
YzNfdmVydF9pdmFyeW5jb25zdC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF9mbG9h
dF9mcmFnX2l2YXJ5bmNvbnN0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfZmxvYXRf
ZnJhZ19pdmFyeW5jb25zdC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYTIwODA1ZWNiMTc2YzYzZWQ5NmRi
OTI0NTFiZTFlYTkxZDg1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3Jl
ZmxlY3RfZmxvYXRfZnJhZ19pdmFyeW5jb25zdC5mcmFnCkBAIC0wLDAgKzEsMjMgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5
MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJZmxvYXQgdjEgPSAoY29sb3Iu
ZyArIDEuMCkgLyAyLjA7CisJZmxvYXQgdjIgPSAoY29sb3IuYiArIDEuMCkgLyAyLjA7CisKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KChyZWZsZWN0KHYxLCB2MikgKyAxLjApIC8gMi4wLCAwLjAsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF9mbG9hdF9m
cmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmbGVjdC9yZWZsZWN0X2Zsb2F0
X2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2YzkxYmQyNDA3YWRlOTAy
MTBhMDEyYWY1NTRiYzI2MjJhMGJiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxl
Y3QvcmVmbGVjdF9mbG9hdF9mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjMg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5
MjY1MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJZmxvYXQgdjEg
PSAoY29sb3IuZyArIDEuMCkgLyAyLjA7CisJZmxvYXQgdjIgPSAoY29sb3IuYiArIDEuMCkgLyAy
LjA7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KCh2MSAtIDIuMCAqIGRvdCh2MiwgdjEpICogdjIg
KyAxLjApIC8gMi4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Jl
ZmxlY3QvcmVmbGVjdF9mbG9hdF92ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZs
ZWN0L3JlZmxlY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZmM3
NjE0MGM3MTMzNWU2ZGI1NTEzN2ZjMGQ1MjM3MDBmMmFmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdC52ZXJ0CkBAIC0w
LDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4x
NDE1OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVuaXQgdmVjdG9ycworCWZsb2F0
IHYxID0gKGd0Zl9Db2xvci5nICsgMS4wKSAvIDIuMDsKKwlmbG9hdCB2MiA9IChndGZfQ29sb3Iu
YiArIDEuMCkgLyAyLjA7CisKKwljb2xvciA9IHZlYzQoKHJlZmxlY3QodjEsIHYyKSArIDEuMCkg
LyAyLjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmbGVj
dC9yZWZsZWN0X2Zsb2F0X3ZlcnRfaXZhcnluY29uc3RfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZs
ZWN0L3JlZmxlY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdF9yZWYudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OWI5OTA4NjM2NTNjYzU2ZGE5NTlmN2Y0NmQ4OTcyYTI3MTNkODAxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvcmVmbGVjdC9yZWZsZWN0X2Zsb2F0X3ZlcnRfaXZhcnluY29uc3RfcmVmLnZl
cnQKQEAgLTAsMCArMSwyNCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1f
UEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3Jz
CisJZmxvYXQgdjEgPSAoZ3RmX0NvbG9yLmcgKyAxLjApIC8gMi4wOworCWZsb2F0IHYyID0gKGd0
Zl9Db2xvci5iICsgMS4wKSAvIDIuMDsKKworCWNvbG9yID0gdmVjNCgodjEgLSAyLjAgKiBkb3Qo
djIsIHYxKSAqIHYyICsgMS4wKSAvIDIuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0LmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0LmZyYWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWU4NTJkZDdmODFkYmY0MGM5YjNjMmZhZjJhNGY3ODY1NjlmMmEwOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMyX2ZyYWdfaXZhcnluY29u
c3QuZnJhZwpAQCAtMCwwICsxLDI4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVu
aXQgdmVjdG9ycworCXZlYzIgdjE7CisJdmVjMiB2MiA9IG5vcm1hbGl6ZSh2ZWMyKDEuMCwgMS4w
KSk7CisKKwlmbG9hdCB0aGV0YSA9IGNvbG9yLmcgKiAyLjAgKiBNX1BJOworCWZsb2F0IHBoaSA9
IGNvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7CisJ
djEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKHJl
ZmxlY3QodjEsIHYyKSArIDEuMCkgLyAyLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMyX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhODMyYTYyZTgwYjJjMTcwMzE0NDE3NTk0N2IwNGM4YWExNjBhZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl9mcmFnX2l2YXJ5bmNv
bnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEsMjkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQorewor
CWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBh
cmUgdW5pdCB2ZWN0b3JzCisJdmVjMiB2MTsKKwl2ZWMyIHYyID0gbm9ybWFsaXplKHZlYzIoMS4w
LCAxLjApKTsKKworCisJZmxvYXQgdGhldGEgPSBjb2xvci5nICogMi4wICogTV9QSTsKKwlmbG9h
dCBwaGkgPSBjb2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRoZXRhKSAqIHNpbihw
aGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisKKwlnbF9GcmFnQ29sb3IgPSB2
ZWM0KCh2MSAtIDIuMCAqIGRvdCh2MiwgdjEpICogdjIgKyAxLjApIC8gMi4wLCAwLjAsIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl92ZXJ0X2l2YXJ5
bmNvbnN0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjMl92ZXJ0X2l2YXJ5bmNv
bnN0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQ0MDI0ZmVjODY3OWRhZWJlZWExOWJlMzY5M2M4MGJlZmNm
MmM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMyX3Zl
cnRfaXZhcnluY29uc3QudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3Ro
IGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMyIHYxOworCXZlYzIgdjIgPSBub3JtYWxpemUodmVjMigx
LjAsIDEuMCkpOworCisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJ
ZmxvYXQgcGhpID0gZ3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEp
ICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKworCWNvbG9yID0g
dmVjNCgocmVmbGVjdCh2MSwgdjIpICsgMS4wKSAvIDIuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvcmVmbGVjdC9yZWZsZWN0X3ZlYzJfdmVydF9pdmFyeW5jb25zdF9y
ZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMyX3ZlcnRfaXZhcnluY29uc3Rf
cmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMzM2VkNWRhMDdmY2YxY2RlYjY2OTQzNWYwNjkyNGM0MGY2
ZWY0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMyX3Zl
cnRfaXZhcnluY29uc3RfcmVmLnZlcnQKQEAgLTAsMCArMSwyOSBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9y
OworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8g
Qm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMiB2MTsKKwl2ZWMyIHYyID0gbm9ybWFsaXplKHZl
YzIoMS4wLCAxLjApKTsKKworCWZsb2F0IHRoZXRhID0gZ3RmX0NvbG9yLmcgKiAyLjAgKiBNX1BJ
OworCWZsb2F0IHBoaSA9IGd0Zl9Db2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRo
ZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisKKwljb2xv
ciA9IHZlYzQoKHYxIC0gMi4wICogZG90KHYyLCB2MSkgKiB2MiArIDEuMCkgLyAyLjAsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMzX2Zy
YWdfaXZhcnluY29uc3QuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMzX2ZyYWdf
aXZhcnluY29uc3QuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzZkYmNhZWRiZjczZTJmNGUyYjY2NGIzNTQ3
MDdlZGM2M2JiYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmbGVjdC9yZWZsZWN0
X3ZlYzNfZnJhZ19pdmFyeW5jb25zdC5mcmFnCkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2
OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2ZWMzIHYyID0gbm9y
bWFsaXplKHZlYzMoMS4wLCAxLjAsIDEuMCkpOworCisKKwlmbG9hdCB0aGV0YSA9IGNvbG9yLmcg
KiAyLjAgKiBNX1BJOworCWZsb2F0IHBoaSA9IGNvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLngg
PSBjb3ModGhldGEpICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsK
Kwl2MS56ID0gY29zKHBoaSk7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KChyZWZsZWN0KHYxLCB2
MikgKyAxLjApIC8gMi4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmbGVjdC9y
ZWZsZWN0X3ZlYzNfZnJhZ19pdmFyeW5jb25zdF9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3Qv
cmVmbGVjdF92ZWMzX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ3NDFj
ZDI5YmU2NDIzMzBiZjk3MTA2ODQyNTJhMThkNmUzZWE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMzX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcKQEAg
LTAsMCArMSwzMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9Q
SSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMK
Kwl2ZWMzIHYxOworCXZlYzMgdjIgPSBub3JtYWxpemUodmVjMygxLjAsIDEuMCwgMS4wKSk7CisK
KworCWZsb2F0IHRoZXRhID0gY29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gY29s
b3IuYiAqIDIuMCAqIE1fUEk7CisJdjEueCA9IGNvcyh0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS55
ID0gc2luKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnogPSBjb3MocGhpKTsKKworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoKHYxIC0gMi4wICogZG90KHYyLCB2MSkgKiB2MiArIDEuMCkgLyAyLjAsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjM192ZXJ0X2l2
YXJ5bmNvbnN0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3RfdmVjM192ZXJ0X2l2YXJ5
bmNvbnN0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM5MTM4ODZjYTA3NzdmMTYxNTMyNDZjYjBmMzVkYTE4
YTNhZGFiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92ZWMz
X3ZlcnRfaXZhcnluY29uc3QudmVydApAQCAtMCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBC
b3RoIGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMzIHYxOworCXZlYzMgdjIgPSBub3JtYWxpemUodmVj
MygxLjAsIDEuMCwgMS4wKSk7CisKKwlmbG9hdCB0aGV0YSA9IGd0Zl9Db2xvci5nICogMi4wICog
TV9QSTsKKwlmbG9hdCBwaGkgPSBndGZfQ29sb3IuYiAqIDIuMCAqIE1fUEk7CisJdjEueCA9IGNv
cyh0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS55ID0gc2luKHRoZXRhKSAqIHNpbihwaGkpOworCXYx
LnogPSBjb3MocGhpKTsKKworCWNvbG9yID0gdmVjNCgocmVmbGVjdCh2MSwgdjIpICsgMS4wKSAv
IDIuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZmxlY3QvcmVmbGVjdF92
ZWMzX3ZlcnRfaXZhcnluY29uc3RfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZsZWN0L3JlZmxlY3Rf
dmVjM192ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZGJjOGE3YmRjZDU2
MTY2NDJmNDIxY2Q4ZTYxOTBkOTEyYzk1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9y
ZWZsZWN0L3JlZmxlY3RfdmVjM192ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52ZXJ0CkBAIC0wLDAgKzEs
MzAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJlIHVuaXQgdmVjdG9ycworCXZlYzMgdjE7CisJ
dmVjMyB2MiA9IG5vcm1hbGl6ZSh2ZWMzKDEuMCwgMS4wLCAxLjApKTsKKworCWZsb2F0IHRoZXRh
ID0gZ3RmX0NvbG9yLmcgKiAyLjAgKiBNX1BJOworCWZsb2F0IHBoaSA9IGd0Zl9Db2xvci5iICog
Mi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4o
dGhldGEpICogc2luKHBoaSk7CisJdjEueiA9IGNvcyhwaGkpOworCisJY29sb3IgPSB2ZWM0KCh2
MSAtIDIuMCAqIGRvdCh2MiwgdjEpICogdjIgKyB2ZWMzKDEuMCkpIC8gMi4wLCAxLjApOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
cmVmcmFjdC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZGVlZGQ1NGM4OTNmNmJkZDU0ZDMz
MDg1NjcwYmQzODgyYjhiMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L2lu
cHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZC4gRE8gTk9UIEVESVQuCityZWZyYWN0XzAwMV90b18wMDYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvcmVmcmFjdC9yZWZyYWN0XzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3Qv
cmVmcmFjdF8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMzZWM2OTQzYzczNTVhOTJiZjc5
ZjAxZDVkYzU1YjZiMDlmNGY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3Qv
cmVmcmFjdF8wMDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0
ZXN0OiByZWZyYWN0XzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRl
c3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWln
aHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oewor
ICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAicmVmcmFjdF9mbG9hdF9mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAicmVmcmFjdF9mbG9hdF9mcmFnX2l2YXJ5bmNvbnN0LmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAicmVmcmFjdF9mbG9hdF9mcmFnX2l2YXJ5bmNvbnN0
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAicmVm
cmFjdF9mbG9hdF92ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJyZWZyYWN0X2Zsb2F0X3ZlcnRfaXZhcnluY29uc3QudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJyZWZyYWN0X2Zsb2F0X3ZlcnRfaXZhcnluY29uc3QudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJyZWZyYWN0X3ZlYzJfZnJhZ19pdmFyeW5j
b25zdF9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInJlZnJhY3RfdmVjMl9mcmFnX2l2
YXJ5bmNvbnN0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAicmVmcmFjdF92ZWMyX2Zy
YWdfaXZhcnluY29uc3QudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJyZWZyYWN0X3ZlYzJfdmVydF9pdmFyeW5jb25zdF9yZWYudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAicmVmcmFjdF92ZWMyX3ZlcnRfaXZhcnluY29uc3QudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJyZWZyYWN0X3ZlYzJfdmVydF9pdmFyeW5jb25zdC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInJlZnJhY3RfdmVjM19m
cmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAicmVmcmFjdF92
ZWMzX2ZyYWdfaXZhcnluY29uc3QuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJyZWZy
YWN0X3ZlYzNfZnJhZ19pdmFyeW5jb25zdC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogInJlZnJhY3RfdmVjM192ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJyZWZyYWN0X3ZlYzNfdmVydF9pdmFyeW5jb25z
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInJlZnJhY3RfdmVjM192ZXJ0X2l2YXJ5bmNv
bnN0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQor
fSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X2Zsb2F0X2ZyYWdfaXZhcnluY29u
c3QuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF9mbG9hdF9mcmFnX2l2YXJ5bmNvbnN0
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWEyNzFiMGJhNTMxZjMyNGNkOGUwMmI3NDIxNzU0MTVlN2EzZDIy
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF9mbG9hdF9mcmFn
X2l2YXJ5bmNvbnN0LmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBC
b3RoIGFyZSB1bml0IHZlY3RvcnMKKwlmbG9hdCB2MSA9IChjb2xvci5nICsgMS4wKSAvIDIuMDsK
KwlmbG9hdCB2MiA9IChjb2xvci5iICsgMS4wKSAvIDIuMDsKKworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoKHJlZnJhY3QodjEsIHYyLCAwLjUpICsgMS4wKSAvIDIuMCwgMC4wLCAwLjAsIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfZmxvYXRfZnJhZ19pdmFyeW5j
b25zdF9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF9mbG9hdF9mcmFnX2l2YXJ5
bmNvbnN0X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlYzVmMTBkYzE4ZTMyM2NhY2FhZDEzNjU1MjJk
MWNhYmUxY2QxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3Rf
ZmxvYXRfZnJhZ19pdmFyeW5jb25zdF9yZWYuZnJhZwpAQCAtMCwwICsxLDI5IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwlmbG9hdCB2MSA9
IChjb2xvci5nICsgMS4wKSAvIDIuMDsKKwlmbG9hdCB2MiA9IChjb2xvci5iICsgMS4wKSAvIDIu
MDsKKworCWZsb2F0IHJlc3VsdDsKKwlmbG9hdCBldGEgPSAwLjU7CisJZmxvYXQgayA9IDEuMCAt
IGV0YSAqIGV0YSAqICgxLjAgLSBkb3QodjEsIHYyKSAqIGRvdCh2MSwgdjIpKTsKKwlpZihrIDwg
MC4wKQorCQlyZXN1bHQgPSAwLjA7CisJZWxzZQorCQlyZXN1bHQgPSBldGEgKiB2MSAtIChldGEg
KiBkb3QodjEsIHYyKSArIHNxcnQoaykpICogdjI7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KChy
ZXN1bHQgKyAxLjApIC8gMi4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3JlZnJhY3QvcmVmcmFjdF9mbG9hdF92ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9yZWZyYWN0L3JlZnJhY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNhYmFlOGIzMWNjY2VlZmE1MDIwMWUyZjE5NThmOTFlMmEzMGU5YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdC52ZXJ0
CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwkvLyBCb3RoIGFyZSB1bml0
IHZlY3RvcnMKKwlmbG9hdCB2MSA9IChndGZfQ29sb3IuZyArIDEuMCkgLyAyLjA7CisJZmxvYXQg
djIgPSAoZ3RmX0NvbG9yLmIgKyAxLjApIC8gMi4wOworCisJY29sb3IgPSB2ZWM0KChyZWZyYWN0
KHYxLCB2MiwgMC41KSArIDEuMCkgLyAyLjAsIDAuMCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X2Zsb2F0X3ZlcnRfaXZhcnluY29uc3RfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfZmxvYXRfdmVydF9pdmFyeW5jb25zdF9y
ZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YWRjMTc3Y2Y1Y2IxNzczNDFjZGI3N2U4NGYyYzkwYTI0OGI2
M2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X2Zsb2F0X3Zl
cnRfaXZhcnluY29uc3RfcmVmLnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9y
OworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8g
Qm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJZmxvYXQgdjEgPSAoZ3RmX0NvbG9yLmcgKyAxLjApIC8g
Mi4wOworCWZsb2F0IHYyID0gKGd0Zl9Db2xvci5iICsgMS4wKSAvIDIuMDsKKworCWZsb2F0IHJl
c3VsdDsKKwlmbG9hdCBldGEgPSAwLjU7CisJZmxvYXQgayA9IDEuMCAtIGV0YSAqIGV0YSAqICgx
LjAgLSBkb3QodjEsIHYyKSAqIGRvdCh2MSwgdjIpKTsKKwlpZihrIDwgMC4wKQorCQlyZXN1bHQg
PSAwLjA7CisJZWxzZQorCQlyZXN1bHQgPSBldGEgKiB2MSAtIChldGEgKiBkb3QodjEsIHYyKSAr
IHNxcnQoaykpICogdjI7CisKKwljb2xvciA9IHZlYzQoKHJlc3VsdCArIDEuMCkgLyAyLjAsIDAu
MCwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0
X3ZlYzJfZnJhZ19pdmFyeW5jb25zdC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X3Zl
YzJfZnJhZ19pdmFyeW5jb25zdC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMDVlOGZlMmYyODViYWFmMmZj
YTA4NGRjNjY0ZGVlN2ZhYzAxOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0
L3JlZnJhY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0LmZyYWcKQEAgLTAsMCArMSwyOCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5
NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMyIHYxOworCXZlYzIg
djIgPSBub3JtYWxpemUodmVjMigxLjAsIDEuMCkpOworCisJZmxvYXQgdGhldGEgPSBjb2xvci5n
ICogMi4wICogTV9QSTsKKwlmbG9hdCBwaGkgPSBjb2xvci5iICogMi4wICogTV9QSTsKKwl2MS54
ID0gY29zKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7
CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KChyZWZyYWN0KHYxLCB2MiwgMC41KSArIDEuMCkgLyAy
LjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF92
ZWMyX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3Rf
dmVjMl9mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MDE5MWM0NzcwYjdl
MzQxMzkyMTAzOGNkYmExYTQyNmNjYTAwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9y
ZWZyYWN0L3JlZnJhY3RfdmVjMl9mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnCkBAIC0wLDAgKzEs
MzcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0
MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMiB2
MTsKKwl2ZWMyIHYyID0gbm9ybWFsaXplKHZlYzIoMS4wLCAxLjApKTsKKworCisJZmxvYXQgdGhl
dGEgPSBjb2xvci5nICogMi4wICogTV9QSTsKKwlmbG9hdCBwaGkgPSBjb2xvci5iICogMi4wICog
TV9QSTsKKwl2MS54ID0gY29zKHRoZXRhKSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEp
ICogc2luKHBoaSk7CisKKwl2ZWMyIHJlc3VsdDsKKwlmbG9hdCBldGEgPSAwLjU7CisJZmxvYXQg
ayA9IDEuMCAtIGV0YSAqIGV0YSAqICgxLjAgLSBkb3QodjEsIHYyKSAqIGRvdCh2MSwgdjIpKTsK
KwlpZihrIDwgMC4wKQorCQlyZXN1bHQgPSB2ZWMyKDAuMCk7CisJZWxzZQorCQlyZXN1bHQgPSBl
dGEgKiB2MSAtIChldGEgKiBkb3QodjEsIHYyKSArIHNxcnQoaykpICogdjI7CisKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KChyZXN1bHQgKyAxLjApIC8gMi4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjMl92ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjMl92ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGM1ZmU1MDUzYWY3MDQwNWJkZWIwZDM4Yzk5ZDM2NzAyZDUyZjY1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF92ZWMyX3ZlcnRfaXZhcnluY29u
c3QudmVydApAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZl
Y3RvcnMKKwl2ZWMyIHYxOworCXZlYzIgdjIgPSBub3JtYWxpemUodmVjMigxLjAsIDEuMCkpOwor
CisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0g
Z3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7
CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKworCWNvbG9yID0gdmVjNCgocmVmcmFj
dCh2MSwgdjIsIDAuNSkgKyAxLjApIC8gMi4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjMl92ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X3ZlYzJfdmVydF9pdmFyeW5jb25zdF9yZWYudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41OTAyY2VhOWI5MzFkMTQyZDBmN2NmZThjNTI3OTRiNzdlMzkxZGY2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X3ZlYzJfdmVydF9pdmFy
eW5jb25zdF9yZWYudmVydApAQCAtMCwwICsxLDM3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Y29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisKKwkvLyBCb3RoIGFy
ZSB1bml0IHZlY3RvcnMKKwl2ZWMyIHYxOworCXZlYzIgdjIgPSBub3JtYWxpemUodmVjMigxLjAs
IDEuMCkpOworCisJZmxvYXQgdGhldGEgPSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxv
YXQgcGhpID0gZ3RmX0NvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICog
c2luKHBoaSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKworCXZlYzIgcmVzdWx0
OworCWZsb2F0IGV0YSA9IDAuNTsKKwlmbG9hdCBrID0gMS4wIC0gZXRhICogZXRhICogKDEuMCAt
IGRvdCh2MSwgdjIpICogZG90KHYxLCB2MikpOworCWlmKGsgPCAwLjApCisJCXJlc3VsdCA9IHZl
YzIoMC4wKTsKKwllbHNlCisJCXJlc3VsdCA9IGV0YSAqIHYxIC0gKGV0YSAqIGRvdCh2MSwgdjIp
ICsgc3FydChrKSkgKiB2MjsKKworCWNvbG9yID0gdmVjNCgocmVzdWx0ICsgMS4wKSAvIDIuMCwg
MC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X3Zl
YzNfZnJhZ19pdmFyeW5jb25zdC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9yZWZyYWN0X3ZlYzNf
ZnJhZ19pdmFyeW5jb25zdC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZGY4ZmQ4YWEwZTZjNzQwMzc5Yjc5
Zjg5MWU1OGNiZWRjMmVhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3Jl
ZnJhY3RfdmVjM19mcmFnX2l2YXJ5bmNvbnN0LmZyYWcKQEAgLTAsMCArMSwzMCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5Nzkz
MjM4NDY7CisKKwkvLyBCb3RoIGFyZSB1bml0IHZlY3RvcnMKKwl2ZWMzIHYxOworCXZlYzMgdjIg
PSBub3JtYWxpemUodmVjMygxLjAsIDEuMCwgMS4wKSk7CisKKworCWZsb2F0IHRoZXRhID0gY29s
b3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gY29sb3IuYiAqIDIuMCAqIE1fUEk7CisJ
djEueCA9IGNvcyh0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS55ID0gc2luKHRoZXRhKSAqIHNpbihw
aGkpOworCXYxLnogPSBjb3MocGhpKTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoKHJlZnJhY3Qo
djEsIHYyLCAwLjUpICsgMS4wKSAvIDIuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3JlZnJhY3QvcmVmcmFjdF92ZWMzX2ZyYWdfaXZhcnluY29uc3RfcmVmLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9yZWZyYWN0L3JlZnJhY3RfdmVjM19mcmFnX2l2YXJ5bmNvbnN0X3JlZi5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwMDY0YTJiNzkwOTNjMDBkZGQ5NTdhMTgwMDA1ODE3NzFlMjVkZTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjM19mcmFnX2l2YXJ5bmNvbnN0X3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsMzggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0
IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5p
dCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2ZWMzIHYyID0gbm9ybWFsaXplKHZlYzMoMS4wLCAxLjAs
IDEuMCkpOworCisKKwlmbG9hdCB0aGV0YSA9IGNvbG9yLmcgKiAyLjAgKiBNX1BJOworCWZsb2F0
IHBoaSA9IGNvbG9yLmIgKiAyLjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBo
aSk7CisJdjEueSA9IHNpbih0aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS56ID0gY29zKHBoaSk7CisK
Kwl2ZWMzIHJlc3VsdDsKKwlmbG9hdCBldGEgPSAwLjU7CisJZmxvYXQgayA9IDEuMCAtIGV0YSAq
IGV0YSAqICgxLjAgLSBkb3QodjEsIHYyKSAqIGRvdCh2MSwgdjIpKTsKKwlpZihrIDwgMC4wKQor
CQlyZXN1bHQgPSB2ZWMzKDAuMCk7CisJZWxzZQorCQlyZXN1bHQgPSBldGEgKiB2MSAtIChldGEg
KiBkb3QodjEsIHYyKSArIHNxcnQoaykpICogdjI7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KChy
ZXN1bHQgKyAxLjApIC8gMi4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFj
dC9yZWZyYWN0X3ZlYzNfdmVydF9pdmFyeW5jb25zdC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvcmVmcmFjdC9y
ZWZyYWN0X3ZlYzNfdmVydF9pdmFyeW5jb25zdC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YjM4ZDIzZjlm
ZDNmZGM1MWIwOTdlODQxNGU4MTk2OWQ4OTExYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9yZWZyYWN0L3JlZnJhY3RfdmVjM192ZXJ0X2l2YXJ5bmNvbnN0LnZlcnQKQEAgLTAsMCArMSwz
MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0
cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1
MzU4OTc5MzIzODQ2OworCisJLy8gQm90aCBhcmUgdW5pdCB2ZWN0b3JzCisJdmVjMyB2MTsKKwl2
ZWMzIHYyID0gbm9ybWFsaXplKHZlYzMoMS4wLCAxLjAsIDEuMCkpOworCisJZmxvYXQgdGhldGEg
PSBndGZfQ29sb3IuZyAqIDIuMCAqIE1fUEk7CisJZmxvYXQgcGhpID0gZ3RmX0NvbG9yLmIgKiAy
LjAgKiBNX1BJOworCXYxLnggPSBjb3ModGhldGEpICogc2luKHBoaSk7CisJdjEueSA9IHNpbih0
aGV0YSkgKiBzaW4ocGhpKTsKKwl2MS56ID0gY29zKHBoaSk7CisKKwljb2xvciA9IHZlYzQoKHJl
ZnJhY3QodjEsIHYyLCAwLjUpICsgMS4wKSAvIDIuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3JlZnJhY3QvcmVmcmFjdF92ZWMzX3ZlcnRfaXZhcnluY29uc3RfcmVmLnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjM192ZXJ0X2l2YXJ5bmNvbnN0X3JlZi52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkMTg3MmZhNzQ0MTBjYTQ1M2QxMTZhN2ViNTQ0ZTZhODJlMTg0NjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9yZWZyYWN0L3JlZnJhY3RfdmVjM192ZXJ0X2l2YXJ5
bmNvbnN0X3JlZi52ZXJ0CkBAIC0wLDAgKzEsMzggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKworCS8vIEJvdGggYXJl
IHVuaXQgdmVjdG9ycworCXZlYzMgdjE7CisJdmVjMyB2MiA9IG5vcm1hbGl6ZSh2ZWMzKDEuMCwg
MS4wLCAxLjApKTsKKworCWZsb2F0IHRoZXRhID0gZ3RmX0NvbG9yLmcgKiAyLjAgKiBNX1BJOwor
CWZsb2F0IHBoaSA9IGd0Zl9Db2xvci5iICogMi4wICogTV9QSTsKKwl2MS54ID0gY29zKHRoZXRh
KSAqIHNpbihwaGkpOworCXYxLnkgPSBzaW4odGhldGEpICogc2luKHBoaSk7CisJdjEueiA9IGNv
cyhwaGkpOworCisJdmVjMyByZXN1bHQ7CisJZmxvYXQgZXRhID0gMC41OworCWZsb2F0IGsgPSAx
LjAgLSBldGEgKiBldGEgKiAoMS4wIC0gZG90KHYxLCB2MikgKiBkb3QodjEsIHYyKSk7CisJaWYo
ayA8IDAuMCkKKwkJcmVzdWx0ID0gdmVjMygwLjApOworCWVsc2UKKwkJcmVzdWx0ID0gZXRhICog
djEgLSAoZXRhICogZG90KHYxLCB2MikgKyBzcXJ0KGspKSAqIHYyOworCisJY29sb3IgPSB2ZWM0
KChyZXN1bHQgKyAxLjApIC8gMi4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c2lnbi9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9pbnB1dC5ydW4udHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIyMmJmOWQ2OGUyN2IwNWEzZWMxNjUwOWEyYWMyY2I0YjZiYTdlN2QKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zaWduL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRo
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitzaWduXzAwMV90b18wMDYu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduXzAwMV90b18wMDYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3NpZ24vc2lnbl8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY0ODZkZTIwNjE2
MWViMDFkZWNhZjc1YTIxNzNhNTRjMTc2YTE0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3NpZ24vc2lnbl8wMDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5j
ZSB0ZXN0OiBzaWduXzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRl
c3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWln
aHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oewor
ICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAic2lnbl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAic2lnbl9mbG9hdF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAic2lnbl9mbG9hdF9mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic2lnbl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJzaWduX3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogInNpZ25fdmVjMl9mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic2lnbl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzaWduX3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInNpZ25fdmVjM19mcmFnX3h2YXJ5LnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2lnbl9mbG9hdF92ZXJ0X3h2
YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzaWduX2Zsb2F0X3ZlcnRfeHZh
cnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzaWduX2Zsb2F0X3ZlcnRfeHZhcnkudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzaWduX3Zl
YzJfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2lnbl92ZWMy
X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzaWduX3ZlYzJfdmVydF94
dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
InNpZ25fdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJn
cmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJz
aWduX3ZlYzNfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInNpZ25fdmVj
M192ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX2Zsb2F0X2ZyYWdfeHZhcnku
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODUzMmQxMWEwNzZkZTE1NTk3MDQwZjUwMmM5M2I2ODI4MTY3NzY0NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl9mbG9hdF9mcmFnX3h2YXJ5LmZyYWcKQEAgLTAsMCAr
MSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDIuMCAqIChjb2xv
ci5yIC0gMC41KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMgKiBzaWduKGMpLCAwLjAsIDAuMCwg
MS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl9mbG9hdF9mcmFnX3h2YXJ5
X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDY3MDMxMGFjNDFhY2RlOWY5MTEyODhjMTJmOGU2NzI4MTFhNzI4MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5m
cmFnCkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMg
PSAyLjAgKiAoY29sb3IuciAtIDAuNSk7CisJaWYoYyA+IDAuMCkgYyA9IDEuMCAqIGM7CisJaWYo
YyA8IDAuMCkgYyA9IC0xLjAgKiBjOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAwLjAsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl9mbG9hdF92ZXJ0X3h2
YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiYzg1ZTNkNmFmMDY5MmFlYmYyYTY0YTFkMzBlZTc1NDYxNWVkODQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0w
LDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMi4wICogKGd0Zl9D
b2xvci5yIC0gMC41KTsKKwljb2xvciA9IHZlYzQoYyAqIHNpZ24oYyksIDAuMCwgMC4wLCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX2Zsb2F0X3ZlcnRfeHZhcnlf
cmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MWJkOWU3MGNiYjYyZGEwMTdhYjNhNDZmNTcxNTc2NTcwZjY0MDAzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZl
cnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWZsb2F0IGMgPSAyLjAg
KiAoZ3RmX0NvbG9yLnIgLSAwLjUpOworCWlmKGMgPiAwLjApIGMgPSAxLjAgKiBjOworCWlmKGMg
PCAwLjApIGMgPSAtMS4wICogYzsKKworCWNvbG9yID0gdmVjNChjLCAwLjAsIDAuMCwgMS4wKTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl92ZWMyX2ZyYWdfeHZhcnkuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3NpZ24vc2lnbl92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
Yzk4YmM2Mzk1MzA1NTBiNWZiNzRmMDFjOWRkZWQ1NWQwNGFhYjVlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzJfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTgg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYyA9IDIuMCAqIChjb2xvci5yZyAt
IDAuNSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjICogc2lnbihjKSwgMC4wLCAxLjApOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3NpZ24vc2lnbl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjM1MmRiNjQwMDIxOTVmM2I3MGY1MDY1YWU3ODA1NjA1NzIxMTMxNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3NpZ24vc2lnbl92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCAr
MSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0gMi4wICogKGNvbG9y
LnJnIC0gMC41KTsKKwlpZihjWzBdID4gMC4wKSBjWzBdID0gMS4wICogY1swXTsKKwlpZihjWzBd
IDwgMC4wKSBjWzBdID0gLTEuMCAqIGNbMF07CisJaWYoY1sxXSA+IDAuMCkgY1sxXSA9IDEuMCAq
IGNbMV07CisJaWYoY1sxXSA8IDAuMCkgY1sxXSA9IC0xLjAgKiBjWzFdOworCisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChjLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3Np
Z25fdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fdmVjMl92ZXJ0X3h2
YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ1NzJmYjRjODcwMzUwZjhhOTM1NGIwZGE4ZDVjN2Q0ZTU2
NGU0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl92ZWMyX3ZlcnRfeHZh
cnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
Mi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJY29sb3IgPSB2ZWM0KGMgKiBzaWduKGMpLCAw
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fdmVjMl92ZXJ0
X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzJfdmVydF94dmFyeV9yZWYu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNDcwNmUyNDk4NjM0ZGJjYjBjYmViMjg1MzNiY2JlN2MyOTQyM2Nm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzJfdmVydF94dmFyeV9y
ZWYudmVydApAQCAtMCwwICsxLDI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMiBjID0g
Mi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJaWYoY1swXSA+IDAuMCkgY1swXSA9IDEuMCAq
IGNbMF07CisJaWYoY1swXSA8IDAuMCkgY1swXSA9IC0xLjAgKiBjWzBdOworCWlmKGNbMV0gPiAw
LjApIGNbMV0gPSAxLjAgKiBjWzFdOworCWlmKGNbMV0gPCAwLjApIGNbMV0gPSAtMS4wICogY1sx
XTsKKworCWNvbG9yID0gdmVjNChjLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zaWduL3NpZ25fdmVjM19mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25f
dmVjM19mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJhMzhhMTU5Njc4MzA5OGI2YzAyZWUx
NjhkYTdhZTdhNjQ1N2RjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NpZ24vc2lnbl92
ZWMzX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMzIGMgPSAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGMgKiAoc2lnbihjKSksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWdu
L3NpZ25fdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzNf
ZnJhZ194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDk3YmFjOWEyYmZkNzI5OWVmODk1Nzhm
OTNkMGIwZjU1YTEyMWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3Zl
YzNfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDI2IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMzIGMgPSAyLjAgKiAoY29sb3IucmdiIC0gMC41KTsKKworCWlmKGNbMF0g
PiAwLjApIGNbMF0gPSAxLjAgKiBjWzBdOworCWlmKGNbMF0gPCAwLjApIGNbMF0gPSAtMS4wICog
Y1swXTsKKwlpZihjWzFdID4gMC4wKSBjWzFdID0gMS4wICogY1sxXTsKKwlpZihjWzFdIDwgMC4w
KSBjWzFdID0gLTEuMCAqIGNbMV07CisJaWYoY1syXSA+IDAuMCkgY1syXSA9IDEuMCAqIGNbMl07
CisJaWYoY1syXSA8IDAuMCkgY1syXSA9IC0xLjAgKiBjWzJdOworCisJZ2xfRnJhZ0NvbG9yID0g
dmVjNChjLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzNfdmVy
dF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzNfdmVydF94dmFyeS52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2ZGVjOWE1MWY1YTAyZTNlODRhYzZiZDExNjc0ODZkYWZlNTBkODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAg
LTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgYyA9IDIuMCAqIChndGZf
Q29sb3IucmdiIC0gMC41KTsKKwljb2xvciA9IHZlYzQoYyAqIHNpZ24oYyksIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaWduL3NpZ25fdmVjM192ZXJ0X3h2YXJ5X3JlZi52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45OGJkYzdmYWM5NzdmNmI4ZmJiNjk0MTkxMWYwNjFlNGEyMzhjMzc2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc2lnbi9zaWduX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCww
ICsxLDI3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMi4wICogKGd0Zl9Db2xv
ci5yZ2IgLSAwLjUpOworCisJaWYoY1swXSA+IDAuMCkgY1swXSA9IDEuMCAqIGNbMF07CisJaWYo
Y1swXSA8IDAuMCkgY1swXSA9IC0xLjAgKiBjWzBdOworCWlmKGNbMV0gPiAwLjApIGNbMV0gPSAx
LjAgKiBjWzFdOworCWlmKGNbMV0gPCAwLjApIGNbMV0gPSAtMS4wICogY1sxXTsKKwlpZihjWzJd
ID4gMC4wKSBjWzJdID0gMS4wICogY1syXTsKKwlpZihjWzJdIDwgMC4wKSBjWzJdID0gLTEuMCAq
IGNbMl07CisKKwljb2xvciA9IHZlYzQoYywgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Npbi9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL2lucHV0LnJ1bi50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjk5NWM1NjU4ODU2MGExOTIxYjM0YWQ3N2Q3NDIzODUxZTkxNDJhOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3Npbi9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorc2luXzAwMV90b18wMDYu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl8wMDFfdG9fMDA2Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zaW4vc2luXzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmU1MDM5ODAwYjQxYjBi
YzNmMjZiZTExNzc5OWU2ZWRhYTUyZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lu
L3Npbl8wMDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0
OiBzaW5fMDAxX3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3Nz
IiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAw
IiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0
cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJzaW5fZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogInNpbl9mbG9hdF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
c2luX2Zsb2F0X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICJzaW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAic2luX3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogInNpbl92ZWMyX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICJzaW5fdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAic2luX3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInNpbl92ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJzaW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2luX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJzaW5fZmxvYXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInNpbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWci
CisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogInNpbl92ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJzaW5fdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2luX3ZlYzNfdmVydF94dmFyeV9y
ZWYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic2luX3ZlYzNfdmVydF94dmFyeS52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInNpbl92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zaW4vc2luX2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fZmxv
YXRfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZWI0Yzg3MDI4Njg2YmZhY2FmODkzOTdm
ZjAxMjhlNGRlNjI3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX2Zsb2F0
X2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0KDAuNSAqIHNpbigyLjAgKiBNX1BJICogY29sb3IucikgKyAwLjUsIDAuMCwg
MC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl9mbG9hdF9mcmFnX3h2
YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4ZjY2MTMwMDRiYjFjYmVmYjU5M2FlYjQ1MjUzODY3YjRmNDlkYjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZy
YWcKQEAgLTAsMCArMSw4NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitmbG9hdCBsZXJwKGZsb2F0IGEsIGZsb2F0IGIsIGZs
b2F0IHMpCit7CisJcmV0dXJuIGEgKyAoYiAtIGEpICogczsKK30KKwordm9pZCBtYWluICh2b2lk
KQoreworCWZsb2F0IHNpblZhbHVlc1sxN107CisJc2luVmFsdWVzWzBdID0gMC4wOworCXNpblZh
bHVlc1sxXSA9IDAuMzgyNjgzOworCXNpblZhbHVlc1syXSA9IDAuNzA3MTA3OworCXNpblZhbHVl
c1szXSA9IDAuOTIzODg7CisJc2luVmFsdWVzWzRdID0gMS4wOworCXNpblZhbHVlc1s1XSA9IDAu
OTIzODg7CisJc2luVmFsdWVzWzZdID0gMC43MDcxMDc7CisJc2luVmFsdWVzWzddID0gMC4zODI2
ODM7CisJc2luVmFsdWVzWzhdID0gMC4wOworCXNpblZhbHVlc1s5XSA9IC0wLjM4MjY4MzsKKwlz
aW5WYWx1ZXNbMTBdID0gLTAuNzA3MTA3OworCXNpblZhbHVlc1sxMV0gPSAtMC45MjM4ODsKKwlz
aW5WYWx1ZXNbMTJdID0gLTEuMDsKKwlzaW5WYWx1ZXNbMTNdID0gLTAuOTIzODc5OworCXNpblZh
bHVlc1sxNF0gPSAtMC43MDcxMDc7CisJc2luVmFsdWVzWzE1XSA9IC0wLjM4MjY4MzsKKwlzaW5W
YWx1ZXNbMTZdID0gMC4wOworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5Nzkz
MjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIE1fUEkgKiBjb2xvci5yOworCisJZmxvYXQgYXJyVmFs
ID0gYyAqIDIuNTQ2NDc4OTcxOworCWludCBhcnIwID0gaW50KGZsb29yKGFyclZhbCkpOworCWZs
b2F0IHdlaWdodCA9IGFyclZhbCAtIGZsb29yKGFyclZhbCk7CisJZmxvYXQgc2luX2MgPSAwLjA7
CisKKwlpZiAoYXJyMCA9PSAwKQorCQlzaW5fYyA9IGxlcnAoc2luVmFsdWVzWzBdLCBzaW5WYWx1
ZXNbMV0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAxKQorCQlzaW5fYyA9IGxlcnAoc2lu
VmFsdWVzWzFdLCBzaW5WYWx1ZXNbMl0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSAyKQor
CQlzaW5fYyA9IGxlcnAoc2luVmFsdWVzWzJdLCBzaW5WYWx1ZXNbM10sIHdlaWdodCk7CisJZWxz
ZSBpZiAoYXJyMCA9PSAzKQorCQlzaW5fYyA9IGxlcnAoc2luVmFsdWVzWzNdLCBzaW5WYWx1ZXNb
NF0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSA0KQorCQlzaW5fYyA9IGxlcnAoc2luVmFs
dWVzWzRdLCBzaW5WYWx1ZXNbNV0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSA1KQorCQlz
aW5fYyA9IGxlcnAoc2luVmFsdWVzWzVdLCBzaW5WYWx1ZXNbNl0sIHdlaWdodCk7CisJZWxzZSBp
ZiAoYXJyMCA9PSA2KQorCQlzaW5fYyA9IGxlcnAoc2luVmFsdWVzWzZdLCBzaW5WYWx1ZXNbN10s
IHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSA3KQorCQlzaW5fYyA9IGxlcnAoc2luVmFsdWVz
WzddLCBzaW5WYWx1ZXNbOF0sIHdlaWdodCk7CisJZWxzZSBpZiAoYXJyMCA9PSA4KQorCQlzaW5f
YyA9IGxlcnAoc2luVmFsdWVzWzhdLCBzaW5WYWx1ZXNbOV0sIHdlaWdodCk7CisJZWxzZSBpZiAo
YXJyMCA9PSA5KQorCQlzaW5fYyA9IGxlcnAoc2luVmFsdWVzWzldLCBzaW5WYWx1ZXNbMTBdLCB3
ZWlnaHQpOworCWVsc2UgaWYgKGFycjAgPT0gMTApCisJCXNpbl9jID0gbGVycChzaW5WYWx1ZXNb
MTBdLCBzaW5WYWx1ZXNbMTFdLCB3ZWlnaHQpOworCWVsc2UgaWYgKGFycjAgPT0gMTEpCisJCXNp
bl9jID0gbGVycChzaW5WYWx1ZXNbMTFdLCBzaW5WYWx1ZXNbMTJdLCB3ZWlnaHQpOworCWVsc2Ug
aWYgKGFycjAgPT0gMTIpCisJCXNpbl9jID0gbGVycChzaW5WYWx1ZXNbMTJdLCBzaW5WYWx1ZXNb
MTNdLCB3ZWlnaHQpOworCWVsc2UgaWYgKGFycjAgPT0gMTMpCisJCXNpbl9jID0gbGVycChzaW5W
YWx1ZXNbMTNdLCBzaW5WYWx1ZXNbMTRdLCB3ZWlnaHQpOworCWVsc2UgaWYgKGFycjAgPT0gMTQp
CisJCXNpbl9jID0gbGVycChzaW5WYWx1ZXNbMTRdLCBzaW5WYWx1ZXNbMTVdLCB3ZWlnaHQpOwor
CWVsc2UgaWYgKGFycjAgPT0gMTUpCisJCXNpbl9jID0gbGVycChzaW5WYWx1ZXNbMTVdLCBzaW5W
YWx1ZXNbMTZdLCB3ZWlnaHQpOworICAgICAgICBlbHNlIGlmIChhcnIwID09IDE2KQorICAgICAg
ICAgICAgICAgIHNpbl9jID0gc2luVmFsdWVzWzE2XTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQo
MC41ICogc2luX2MgKyAwLjUsIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc2luL3Npbl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX2Zsb2F0
X3ZlcnRfeHZhcnkudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTM5Mzk1Y2NlMDA1Yjg0ZWY3NTViZjM4ZGVl
NDIwM2I5NmRkYjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl9mbG9hdF92
ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWNvbG9yID0gdmVjNCgw
LjUgKiBzaW4oMi4wICogTV9QSSAqIGd0Zl9Db2xvci5yKSArIDAuNSwgMC4wLCAwLjAsIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX2Zsb2F0X3ZlcnRfeHZhcnlfcmVm
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjgyOTI0NTVkYjQ4YzExMjgzOTgzM2JjNDQ0ZTg0YjA0MjYzNzk2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApAQCAt
MCwwICsxLDM4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDIuMCAqIE1fUEkgKiBndGZfQ29sb3Iu
cjsKKwlmbG9hdCBzaWduID0gMS4wOworCisJZmxvYXQgc2luX2MgPSAwLjA7CisJZmxvYXQgZmFj
dDsKKwlmbG9hdCBmYWN0X29mOworCisJLy8gVGF5bG9ycyBzZXJpZXMgZXhwYW5zaW9uIGZvciBz
aW4KKwlmb3IoaW50IGkgPSAwOyBpIDwgMTI7IGkrKykKKwl7CisJCWZhY3QgPSAxLjA7CisJCWZv
cihpbnQgaiA9IDI7IGogPD0gMjM7IGorKykKKwkJCWlmIChqIDw9IDIgKiBpICsgMSkKKwkJCQlm
YWN0ICo9IGZsb2F0KGopOworCisJCXNpbl9jICs9IHNpZ24gKiBwb3coYywgMi4wICogZmxvYXQo
aSkgKyAxLjApIC8gZmFjdDsKKwkJc2lnbiAqPSAtMS4wOworCX0KKworCWNvbG9yID0gdmVjNCgw
LjUgKiBzaW5fYyArIDAuNSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zaW4vc2luX3ZlYzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMy
X2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmI5YzU0M2I0MjNiMmJjOTAzZDZiNDBjZTE1
OTdlMjg1ZjRmN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMyX2Zy
YWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuNSAqIHNpbigyLjAgKiBNX1BJICogY29sb3IucmcpICsgMC41LCAwLjAsIDEu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzJfZnJhZ194dmFyeV9yZWYu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Npbi9zaW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwNGU4Yjk4YjkxN2E5YWM4MTI2Yjg2NmEzYjZlY2QzY2IzYTBlZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCww
ICsxLDEyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCitmbG9hdCBsZXJwKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHMpCit7
CisJcmV0dXJuIGEgKyAoYiAtIGEpICogczsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCWZs
b2F0IHNpblZhbHVlc1sxN107CisJc2luVmFsdWVzWzBdID0gMC4wOworCXNpblZhbHVlc1sxXSA9
IDAuMzgyNjgzOworCXNpblZhbHVlc1syXSA9IDAuNzA3MTA3OworCXNpblZhbHVlc1szXSA9IDAu
OTIzODg7CisJc2luVmFsdWVzWzRdID0gMS4wOworCXNpblZhbHVlc1s1XSA9IDAuOTIzODg7CisJ
c2luVmFsdWVzWzZdID0gMC43MDcxMDc7CisJc2luVmFsdWVzWzddID0gMC4zODI2ODM7CisJc2lu
VmFsdWVzWzhdID0gMC4wOworCXNpblZhbHVlc1s5XSA9IC0wLjM4MjY4MzsKKwlzaW5WYWx1ZXNb
MTBdID0gLTAuNzA3MTA3OworCXNpblZhbHVlc1sxMV0gPSAtMC45MjM4ODsKKwlzaW5WYWx1ZXNb
MTJdID0gLTEuMDsKKwlzaW5WYWx1ZXNbMTNdID0gLTAuOTIzODc5OworCXNpblZhbHVlc1sxNF0g
PSAtMC43MDcxMDc7CisJc2luVmFsdWVzWzE1XSA9IC0wLjM4MjY4MzsKKwlzaW5WYWx1ZXNbMTZd
ID0gMC4wOworCisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJ
dmVjMiBjID0gMi4wICogTV9QSSAqIGNvbG9yLnJnOworCisJdmVjMiBhcnJWYWwgPSBjICogMi41
NDY0Nzg5NzE7CisJaW50IGFycjB4ID0gaW50KGZsb29yKGFyclZhbC54KSk7CisJaW50IGFycjB5
ID0gaW50KGZsb29yKGFyclZhbC55KSk7CisJdmVjMiB3ZWlnaHQgPSBhcnJWYWwgLSBmbG9vcihh
cnJWYWwpOworCXZlYzIgc2luX2MgPSB2ZWMyKDAuMCwgMC4wKTsKKworCWlmIChhcnIweCA9PSAw
KQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1ZXNbMF0sIHNpblZhbHVlc1sxXSwgd2VpZ2h0Lngp
OworCWVsc2UgaWYgKGFycjB4ID09IDEpCisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1sxXSwg
c2luVmFsdWVzWzJdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMikKKwkJc2luX2Mu
eCA9IGxlcnAoc2luVmFsdWVzWzJdLCBzaW5WYWx1ZXNbM10sIHdlaWdodC54KTsKKwllbHNlIGlm
IChhcnIweCA9PSAzKQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1ZXNbM10sIHNpblZhbHVlc1s0
XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDQpCisJCXNpbl9jLnggPSBsZXJwKHNp
blZhbHVlc1s0XSwgc2luVmFsdWVzWzVdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0g
NSkKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzVdLCBzaW5WYWx1ZXNbNl0sIHdlaWdodC54
KTsKKwllbHNlIGlmIChhcnIweCA9PSA2KQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1ZXNbNl0s
IHNpblZhbHVlc1s3XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDcpCisJCXNpbl9j
LnggPSBsZXJwKHNpblZhbHVlc1s3XSwgc2luVmFsdWVzWzhdLCB3ZWlnaHQueCk7CisJZWxzZSBp
ZiAoYXJyMHggPT0gOCkKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzhdLCBzaW5WYWx1ZXNb
OV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA5KQorCQlzaW5fYy54ID0gbGVycChz
aW5WYWx1ZXNbOV0sIHNpblZhbHVlc1sxMF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9
PSAxMCkKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzEwXSwgc2luVmFsdWVzWzExXSwgd2Vp
Z2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDExKQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1
ZXNbMTFdLCBzaW5WYWx1ZXNbMTJdLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTIp
CisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1sxMl0sIHNpblZhbHVlc1sxM10sIHdlaWdodC54
KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMykKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzEz
XSwgc2luVmFsdWVzWzE0XSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDE0KQorCQlz
aW5fYy54ID0gbGVycChzaW5WYWx1ZXNbMTRdLCBzaW5WYWx1ZXNbMTVdLCB3ZWlnaHQueCk7CisJ
ZWxzZSBpZiAoYXJyMHggPT0gMTUpCisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1sxNV0sIHNp
blZhbHVlc1sxNl0sIHdlaWdodC54KTsKKyAgICAgICAgZWxzZSBpZiAoYXJyMHggPT0gMTYpCisg
ICAgICAgICAgICAgICAgc2luX2MueCA9IHNpblZhbHVlc1sxNl07CisKKwlpZiAoYXJyMHkgPT0g
MCkKKwkJc2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzBdLCBzaW5WYWx1ZXNbMV0sIHdlaWdodC55
KTsKKwllbHNlIGlmIChhcnIweSA9PSAxKQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbMV0s
IHNpblZhbHVlc1syXSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDIpCisJCXNpbl9j
LnkgPSBsZXJwKHNpblZhbHVlc1syXSwgc2luVmFsdWVzWzNdLCB3ZWlnaHQueSk7CisJZWxzZSBp
ZiAoYXJyMHkgPT0gMykKKwkJc2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzNdLCBzaW5WYWx1ZXNb
NF0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA0KQorCQlzaW5fYy55ID0gbGVycChz
aW5WYWx1ZXNbNF0sIHNpblZhbHVlc1s1XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09
IDUpCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1s1XSwgc2luVmFsdWVzWzZdLCB3ZWlnaHQu
eSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNikKKwkJc2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzZd
LCBzaW5WYWx1ZXNbN10sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSA3KQorCQlzaW5f
Yy55ID0gbGVycChzaW5WYWx1ZXNbN10sIHNpblZhbHVlc1s4XSwgd2VpZ2h0LnkpOworCWVsc2Ug
aWYgKGFycjB5ID09IDgpCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1s4XSwgc2luVmFsdWVz
WzldLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gOSkKKwkJc2luX2MueSA9IGxlcnAo
c2luVmFsdWVzWzldLCBzaW5WYWx1ZXNbMTBdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkg
PT0gMTApCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1sxMF0sIHNpblZhbHVlc1sxMV0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxMSkKKwkJc2luX2MueSA9IGxlcnAoc2luVmFs
dWVzWzExXSwgc2luVmFsdWVzWzEyXSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEy
KQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbMTJdLCBzaW5WYWx1ZXNbMTNdLCB3ZWlnaHQu
eSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTMpCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1sx
M10sIHNpblZhbHVlc1sxNF0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxNCkKKwkJ
c2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzE0XSwgc2luVmFsdWVzWzE1XSwgd2VpZ2h0LnkpOwor
CWVsc2UgaWYgKGFycjB5ID09IDE1KQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbMTVdLCBz
aW5WYWx1ZXNbMTZdLCB3ZWlnaHQueSk7CisgICAgICAgIGVsc2UgaWYgKGFycjB5ID09IDE2KQor
ICAgICAgICAgICAgICAgIHNpbl9jLnkgPSBzaW5WYWx1ZXNbMTZdOworCisJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjUgKiBzaW5fYyArIDAuNSwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc2luL3Npbl92ZWMyX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fdmVj
Ml92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEwZjA5MGNlNjg1MWZiNmRkYmJkZDA0Mzdi
OGZmNWU5YmNlZjg5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fdmVjMl92
ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWNvbG9yID0gdmVjNCgw
LjUgKiBzaW4oMi4wICogTV9QSSAqIGd0Zl9Db2xvci5yZykgKyAwLjUsIDAuMCwgMS4wKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2QxNTY3ZTE0MmVjYTgxNzMzNzU1MzJjZDQ4ZjllZDBjMGRiOGEwYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3Npbi9zaW5fdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBAIC0wLDAgKzEs
NjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK2Zsb2F0IGxlcnAoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcykKK3sKKwlyZXR1cm4g
YSArIChiIC0gYSkgKiBzOworfQorCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgc2luVmFs
dWVzWzE3XTsKKwlzaW5WYWx1ZXNbMF0gPSAwLjA7CisJc2luVmFsdWVzWzFdID0gMC4zODI2ODM7
CisJc2luVmFsdWVzWzJdID0gMC43MDcxMDc7CisJc2luVmFsdWVzWzNdID0gMC45MjM4ODsKKwlz
aW5WYWx1ZXNbNF0gPSAxLjA7CisJc2luVmFsdWVzWzVdID0gMC45MjM4ODsKKwlzaW5WYWx1ZXNb
Nl0gPSAwLjcwNzEwNzsKKwlzaW5WYWx1ZXNbN10gPSAwLjM4MjY4MzsKKwlzaW5WYWx1ZXNbOF0g
PSAwLjA7CisJc2luVmFsdWVzWzldID0gLTAuMzgyNjgzOworCXNpblZhbHVlc1sxMF0gPSAtMC43
MDcxMDc7CisJc2luVmFsdWVzWzExXSA9IC0wLjkyMzg4OworCXNpblZhbHVlc1sxMl0gPSAtMS4w
OworCXNpblZhbHVlc1sxM10gPSAtMC45MjM4Nzk7CisJc2luVmFsdWVzWzE0XSA9IC0wLjcwNzEw
NzsKKwlzaW5WYWx1ZXNbMTVdID0gLTAuMzgyNjgzOworCXNpblZhbHVlc1sxNl0gPSAwLjA7CisK
Kwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAy
LjAgKiBNX1BJICogZ3RmX0NvbG9yLnJnOworCWZsb2F0IHNpZ24gPSAxLjA7CisKKwl2ZWMyIHNp
bl9jID0gdmVjMigwLjApOworCWZsb2F0IGZhY3Q7CisJZmxvYXQgZmFjdF9vZjsKKworCS8vIFRh
eWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3Igc2luCisJZm9yKGludCBpID0gMDsgaSA8IDEyOyBp
KyspCisJeworCQlmYWN0ID0gMS4wOworCQlmb3IoaW50IGogPSAyOyBqIDw9IDIzOyBqKyspCisJ
CQlpZiAoaiA8PSAyICogaSArIDEpCisJCQkJZmFjdCAqPSBmbG9hdChqKTsKKworCQlzaW5fYyAr
PSBzaWduICogcG93KGMsIHZlYzIoMi4wICogZmxvYXQoaSkgKyAxLjApKSAvIGZhY3Q7CisJCXNp
Z24gKj0gLTEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoMC41ICogc2luX2MgKyAwLjUsIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5fdmVjM19mcmFnX3h2YXJ5
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzNfZnJhZ194dmFyeS5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIxZjYxMjRlNDFhYmU0OTBkNjc2NGY2YWQ0ZDA5MTQ0OGZlYWJmMTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzNfZnJhZ194dmFyeS5mcmFnCkBAIC0wLDAgKzEsMTgg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5
MjY1MzU4OTc5MzIzODQ2OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoMC41ICogc2luKDIuMCAqIE1f
UEkgKiBjb2xvci5yZ2IpICsgMC41LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2lu
L3Npbl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzNfZnJh
Z194dmFyeV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmFhZGE1YWY3NjBkMjZmZmQ4YTE3NDkwNjNm
ZjQ3NzhmZTkxZjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMzX2Zy
YWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwxNTYgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworZmxvYXQgbGVycChmbG9h
dCBhLCBmbG9hdCBiLCBmbG9hdCBzKQoreworCXJldHVybiBhICsgKGIgLSBhKSAqIHM7Cit9CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBzaW5WYWx1ZXNbMTddOworCXNpblZhbHVlc1sw
XSA9IDAuMDsKKwlzaW5WYWx1ZXNbMV0gPSAwLjM4MjY4MzsKKwlzaW5WYWx1ZXNbMl0gPSAwLjcw
NzEwNzsKKwlzaW5WYWx1ZXNbM10gPSAwLjkyMzg4OworCXNpblZhbHVlc1s0XSA9IDEuMDsKKwlz
aW5WYWx1ZXNbNV0gPSAwLjkyMzg4OworCXNpblZhbHVlc1s2XSA9IDAuNzA3MTA3OworCXNpblZh
bHVlc1s3XSA9IDAuMzgyNjgzOworCXNpblZhbHVlc1s4XSA9IDAuMDsKKwlzaW5WYWx1ZXNbOV0g
PSAtMC4zODI2ODM7CisJc2luVmFsdWVzWzEwXSA9IC0wLjcwNzEwNzsKKwlzaW5WYWx1ZXNbMTFd
ID0gLTAuOTIzODg7CisJc2luVmFsdWVzWzEyXSA9IC0xLjA7CisJc2luVmFsdWVzWzEzXSA9IC0w
LjkyMzg3OTsKKwlzaW5WYWx1ZXNbMTRdID0gLTAuNzA3MTA3OworCXNpblZhbHVlc1sxNV0gPSAt
MC4zODI2ODM7CisJc2luVmFsdWVzWzE2XSA9IDAuMDsKKworCWNvbnN0IGZsb2F0IE1fUEkgPSAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgYyA9IDIuMCAqIE1fUEkgKiBjb2xvci5yZ2I7
CisKKwl2ZWMzIGFyclZhbCA9IGMgKiAyLjU0NjQ3ODk3MTsKKwlpbnQgYXJyMHggPSBpbnQoZmxv
b3IoYXJyVmFsLngpKTsKKwlpbnQgYXJyMHkgPSBpbnQoZmxvb3IoYXJyVmFsLnkpKTsKKwlpbnQg
YXJyMHogPSBpbnQoZmxvb3IoYXJyVmFsLnopKTsKKwl2ZWMzIHdlaWdodCA9IGFyclZhbCAtIGZs
b29yKGFyclZhbCk7CisJdmVjMyBzaW5fYyA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7CisKKwlpZiAo
YXJyMHggPT0gMCkKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzBdLCBzaW5WYWx1ZXNbMV0s
IHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxKQorCQlzaW5fYy54ID0gbGVycChzaW5W
YWx1ZXNbMV0sIHNpblZhbHVlc1syXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDIp
CisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1syXSwgc2luVmFsdWVzWzNdLCB3ZWlnaHQueCk7
CisJZWxzZSBpZiAoYXJyMHggPT0gMykKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzNdLCBz
aW5WYWx1ZXNbNF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA0KQorCQlzaW5fYy54
ID0gbGVycChzaW5WYWx1ZXNbNF0sIHNpblZhbHVlc1s1XSwgd2VpZ2h0LngpOworCWVsc2UgaWYg
KGFycjB4ID09IDUpCisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1s1XSwgc2luVmFsdWVzWzZd
LCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gNikKKwkJc2luX2MueCA9IGxlcnAoc2lu
VmFsdWVzWzZdLCBzaW5WYWx1ZXNbN10sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSA3
KQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1ZXNbN10sIHNpblZhbHVlc1s4XSwgd2VpZ2h0Lngp
OworCWVsc2UgaWYgKGFycjB4ID09IDgpCisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1s4XSwg
c2luVmFsdWVzWzldLCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gOSkKKwkJc2luX2Mu
eCA9IGxlcnAoc2luVmFsdWVzWzldLCBzaW5WYWx1ZXNbMTBdLCB3ZWlnaHQueCk7CisJZWxzZSBp
ZiAoYXJyMHggPT0gMTApCisJCXNpbl9jLnggPSBsZXJwKHNpblZhbHVlc1sxMF0sIHNpblZhbHVl
c1sxMV0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9PSAxMSkKKwkJc2luX2MueCA9IGxl
cnAoc2luVmFsdWVzWzExXSwgc2luVmFsdWVzWzEyXSwgd2VpZ2h0LngpOworCWVsc2UgaWYgKGFy
cjB4ID09IDEyKQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1ZXNbMTJdLCBzaW5WYWx1ZXNbMTNd
LCB3ZWlnaHQueCk7CisJZWxzZSBpZiAoYXJyMHggPT0gMTMpCisJCXNpbl9jLnggPSBsZXJwKHNp
blZhbHVlc1sxM10sIHNpblZhbHVlc1sxNF0sIHdlaWdodC54KTsKKwllbHNlIGlmIChhcnIweCA9
PSAxNCkKKwkJc2luX2MueCA9IGxlcnAoc2luVmFsdWVzWzE0XSwgc2luVmFsdWVzWzE1XSwgd2Vp
Z2h0LngpOworCWVsc2UgaWYgKGFycjB4ID09IDE1KQorCQlzaW5fYy54ID0gbGVycChzaW5WYWx1
ZXNbMTVdLCBzaW5WYWx1ZXNbMTZdLCB3ZWlnaHQueCk7CisgICAgICAgIGVsc2UgaWYgKGFycjB4
ID09IDE2KQorICAgICAgICAgICAgICAgIHNpbl9jLnggPSBzaW5WYWx1ZXNbMTZdOworCisJaWYg
KGFycjB5ID09IDApCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1swXSwgc2luVmFsdWVzWzFd
LCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMSkKKwkJc2luX2MueSA9IGxlcnAoc2lu
VmFsdWVzWzFdLCBzaW5WYWx1ZXNbMl0sIHdlaWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAy
KQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbMl0sIHNpblZhbHVlc1szXSwgd2VpZ2h0Lnkp
OworCWVsc2UgaWYgKGFycjB5ID09IDMpCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1szXSwg
c2luVmFsdWVzWzRdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gNCkKKwkJc2luX2Mu
eSA9IGxlcnAoc2luVmFsdWVzWzRdLCBzaW5WYWx1ZXNbNV0sIHdlaWdodC55KTsKKwllbHNlIGlm
IChhcnIweSA9PSA1KQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbNV0sIHNpblZhbHVlc1s2
XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDYpCisJCXNpbl9jLnkgPSBsZXJwKHNp
blZhbHVlc1s2XSwgc2luVmFsdWVzWzddLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0g
NykKKwkJc2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzddLCBzaW5WYWx1ZXNbOF0sIHdlaWdodC55
KTsKKwllbHNlIGlmIChhcnIweSA9PSA4KQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbOF0s
IHNpblZhbHVlc1s5XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDkpCisJCXNpbl9j
LnkgPSBsZXJwKHNpblZhbHVlc1s5XSwgc2luVmFsdWVzWzEwXSwgd2VpZ2h0LnkpOworCWVsc2Ug
aWYgKGFycjB5ID09IDEwKQorCQlzaW5fYy55ID0gbGVycChzaW5WYWx1ZXNbMTBdLCBzaW5WYWx1
ZXNbMTFdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkgPT0gMTEpCisJCXNpbl9jLnkgPSBs
ZXJwKHNpblZhbHVlc1sxMV0sIHNpblZhbHVlc1sxMl0sIHdlaWdodC55KTsKKwllbHNlIGlmIChh
cnIweSA9PSAxMikKKwkJc2luX2MueSA9IGxlcnAoc2luVmFsdWVzWzEyXSwgc2luVmFsdWVzWzEz
XSwgd2VpZ2h0LnkpOworCWVsc2UgaWYgKGFycjB5ID09IDEzKQorCQlzaW5fYy55ID0gbGVycChz
aW5WYWx1ZXNbMTNdLCBzaW5WYWx1ZXNbMTRdLCB3ZWlnaHQueSk7CisJZWxzZSBpZiAoYXJyMHkg
PT0gMTQpCisJCXNpbl9jLnkgPSBsZXJwKHNpblZhbHVlc1sxNF0sIHNpblZhbHVlc1sxNV0sIHdl
aWdodC55KTsKKwllbHNlIGlmIChhcnIweSA9PSAxNSkKKwkJc2luX2MueSA9IGxlcnAoc2luVmFs
dWVzWzE1XSwgc2luVmFsdWVzWzE2XSwgd2VpZ2h0LnkpOworICAgICAgICBlbHNlIGlmIChhcnIw
eSA9PSAxNikKKyAgICAgICAgICAgICAgICBzaW5fYy55ID0gc2luVmFsdWVzWzE2XTsKKworCWlm
IChhcnIweiA9PSAwKQorCQlzaW5fYy56ID0gbGVycChzaW5WYWx1ZXNbMF0sIHNpblZhbHVlc1sx
XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDEpCisJCXNpbl9jLnogPSBsZXJwKHNp
blZhbHVlc1sxXSwgc2luVmFsdWVzWzJdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0g
MikKKwkJc2luX2MueiA9IGxlcnAoc2luVmFsdWVzWzJdLCBzaW5WYWx1ZXNbM10sIHdlaWdodC56
KTsKKwllbHNlIGlmIChhcnIweiA9PSAzKQorCQlzaW5fYy56ID0gbGVycChzaW5WYWx1ZXNbM10s
IHNpblZhbHVlc1s0XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDQpCisJCXNpbl9j
LnogPSBsZXJwKHNpblZhbHVlc1s0XSwgc2luVmFsdWVzWzVdLCB3ZWlnaHQueik7CisJZWxzZSBp
ZiAoYXJyMHogPT0gNSkKKwkJc2luX2MueiA9IGxlcnAoc2luVmFsdWVzWzVdLCBzaW5WYWx1ZXNb
Nl0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSA2KQorCQlzaW5fYy56ID0gbGVycChz
aW5WYWx1ZXNbNl0sIHNpblZhbHVlc1s3XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09
IDcpCisJCXNpbl9jLnogPSBsZXJwKHNpblZhbHVlc1s3XSwgc2luVmFsdWVzWzhdLCB3ZWlnaHQu
eik7CisJZWxzZSBpZiAoYXJyMHogPT0gOCkKKwkJc2luX2MueiA9IGxlcnAoc2luVmFsdWVzWzhd
LCBzaW5WYWx1ZXNbOV0sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSA5KQorCQlzaW5f
Yy56ID0gbGVycChzaW5WYWx1ZXNbOV0sIHNpblZhbHVlc1sxMF0sIHdlaWdodC56KTsKKwllbHNl
IGlmIChhcnIweiA9PSAxMCkKKwkJc2luX2MueiA9IGxlcnAoc2luVmFsdWVzWzEwXSwgc2luVmFs
dWVzWzExXSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6ID09IDExKQorCQlzaW5fYy56ID0g
bGVycChzaW5WYWx1ZXNbMTFdLCBzaW5WYWx1ZXNbMTJdLCB3ZWlnaHQueik7CisJZWxzZSBpZiAo
YXJyMHogPT0gMTIpCisJCXNpbl9jLnogPSBsZXJwKHNpblZhbHVlc1sxMl0sIHNpblZhbHVlc1sx
M10sIHdlaWdodC56KTsKKwllbHNlIGlmIChhcnIweiA9PSAxMykKKwkJc2luX2MueiA9IGxlcnAo
c2luVmFsdWVzWzEzXSwgc2luVmFsdWVzWzE0XSwgd2VpZ2h0LnopOworCWVsc2UgaWYgKGFycjB6
ID09IDE0KQorCQlzaW5fYy56ID0gbGVycChzaW5WYWx1ZXNbMTRdLCBzaW5WYWx1ZXNbMTVdLCB3
ZWlnaHQueik7CisJZWxzZSBpZiAoYXJyMHogPT0gMTUpCisJCXNpbl9jLnogPSBsZXJwKHNpblZh
bHVlc1sxNV0sIHNpblZhbHVlc1sxNl0sIHdlaWdodC56KTsKKyAgICAgICAgZWxzZSBpZiAoYXJy
MHogPT0gMTYpCisgICAgICAgICAgICAgICAgc2luX2MueiA9IHNpblZhbHVlc1sxNl07CisKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KDAuNSAqIHNpbl9jICsgMC41LCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9z
aW5fdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVlYTNhNmE0OThlNDBiMmJjZGYy
ODVhNWEyZjhiMzk1YzM2NDBlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Npbi9zaW5f
dmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWNvbG9yID0g
dmVjNCgwLjUgKiBzaW4oMi4wICogTV9QSSAqIGd0Zl9Db2xvci5yZ2IpICsgMC41LCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zaW4vc2luX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NjJmMWQ4ZTliZjYwZDk2N2UyNDkxMWRjMTlmM2NkM2JmZjhhZTAwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc2luL3Npbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCAr
MSw2MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworZmxvYXQgbGVycChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBzKQoreworCXJldHVy
biBhICsgKGIgLSBhKSAqIHM7Cit9CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBzaW5W
YWx1ZXNbMTddOworCXNpblZhbHVlc1swXSA9IDAuMDsKKwlzaW5WYWx1ZXNbMV0gPSAwLjM4MjY4
MzsKKwlzaW5WYWx1ZXNbMl0gPSAwLjcwNzEwNzsKKwlzaW5WYWx1ZXNbM10gPSAwLjkyMzg4Owor
CXNpblZhbHVlc1s0XSA9IDEuMDsKKwlzaW5WYWx1ZXNbNV0gPSAwLjkyMzg4OworCXNpblZhbHVl
c1s2XSA9IDAuNzA3MTA3OworCXNpblZhbHVlc1s3XSA9IDAuMzgyNjgzOworCXNpblZhbHVlc1s4
XSA9IDAuMDsKKwlzaW5WYWx1ZXNbOV0gPSAtMC4zODI2ODM7CisJc2luVmFsdWVzWzEwXSA9IC0w
LjcwNzEwNzsKKwlzaW5WYWx1ZXNbMTFdID0gLTAuOTIzODg7CisJc2luVmFsdWVzWzEyXSA9IC0x
LjA7CisJc2luVmFsdWVzWzEzXSA9IC0wLjkyMzg3OTsKKwlzaW5WYWx1ZXNbMTRdID0gLTAuNzA3
MTA3OworCXNpblZhbHVlc1sxNV0gPSAtMC4zODI2ODM7CisJc2luVmFsdWVzWzE2XSA9IDAuMDsK
KworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgYyA9
IDIuMCAqIE1fUEkgKiBndGZfQ29sb3IucmdiOworCWZsb2F0IHNpZ24gPSAxLjA7CisKKwl2ZWMz
IHNpbl9jID0gdmVjMygwLjApOworCWZsb2F0IGZhY3Q7CisJZmxvYXQgZmFjdF9vZjsKKworCS8v
IFRheWxvcnMgc2VyaWVzIGV4cGFuc2lvbiBmb3Igc2luCisJZm9yKGludCBpID0gMDsgaSA8IDEy
OyBpKyspCisJeworCQlmYWN0ID0gMS4wOworCQlmb3IoaW50IGogPSAyOyBqIDw9IDIzOyBqKysp
CisJCQlpZiAoaiA8PSAyICogaSArIDEpCisJCQkJZmFjdCAqPSBmbG9hdChqKTsKKworCQlzaW5f
YyArPSBzaWduICogcG93KGMsIHZlYzMoMi4wICogZmxvYXQoaSkgKyAxLjApKSAvIGZhY3Q7CisJ
CXNpZ24gKj0gLTEuMDsKKwl9CisKKwljb2xvciA9IHZlYzQoMC41ICogc2luX2MgKyAwLjUsIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL2lucHV0LnJ1bi50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyMWRkNWY4
Y2ZhYWYzM2ZhNTgyNDE2NzEyODFkNTIyNjdhMmY5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Ntb290aHN0ZXAvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK3Ntb290aHN0ZXBfMDAxX3RvXzAwNi5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfMDAxX3RvXzAw
Ni5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwXzAwMV90b18wMDYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZWM4YjY2ZTQxN2NiMDEyMmM0ODdiZjI4NTI3MmEyNDQzYWNhZDllCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwXzAwMV90b18wMDYu
aHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHNtb290aHN0ZXBfMDAx
X3RvXzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJz
bW9vdGhzdGVwX2Zsb2F0X2ZyYWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogInNtb290aHN0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdlY29uc3Rx
dWFydGVyLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic21vb3Roc3RlcF9mbG9hdF9m
cmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJzbW9vdGhzdGVwX3ZlYzJfZnJhZ194dmFyeV9lZGdlY29uc3Rx
dWFydGVyX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic21vb3Roc3RlcF92ZWMyX2Zy
YWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InNtb290aHN0ZXBfdmVjMl9mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzbW9vdGhzdGVwX3ZlYzNfZnJh
Z194dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
c21vb3Roc3RlcF92ZWMzX2ZyYWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInNtb290aHN0ZXBfdmVjM19mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1
YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJzbW9vdGhzdGVwX2Zsb2F0X3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic21vb3Roc3RlcF9mbG9hdF92ZXJ0X3h2YXJ5X2VkZ2Vj
b25zdHF1YXJ0ZXIudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzbW9vdGhzdGVwX2Zsb2F0
X3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogInNtb290aHN0ZXBfdmVjMl92ZXJ0X3h2YXJ5X2VkZ2Vj
b25zdHF1YXJ0ZXJfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInNtb290aHN0ZXBf
dmVjMl92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJzbW9vdGhzdGVwX3ZlYzJfdmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic21vb3Roc3RlcF92
ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAic21vb3Roc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInNtb290aHN0ZXBfdmVjM192ZXJ0X3h2YXJ5X2VkZ2Vj
b25zdHF1YXJ0ZXIudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfZmxvYXRf
ZnJhZ194dmFyeV9lZGdlY29uc3RxdWFydGVyLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Nt
b290aHN0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdlY29uc3RxdWFydGVyLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDUxMjk0Yzg0MTA3MTlmNGFjNTgwMTljZjcyMjA2M2YwNWIwZjIyOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF9mbG9hdF9mcmFnX3h2YXJ5X2Vk
Z2Vjb25zdHF1YXJ0ZXIuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwljb25zdCBmbG9hdCBlZGdlMCA9IDAuMjU7CisJY29uc3QgZmxvYXQgZWRnZTEgPSAw
Ljc1OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoc21vb3Roc3RlcChlZGdlMCwgZWRnZTEsIGNvbG9y
LnIpLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAv
c21vb3Roc3RlcF9mbG9hdF9mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXJfcmVmLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdlY29uc3Rx
dWFydGVyX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMWRjZGQ5NDIyY2RhOTkxMDJkNzVmZmM0MjA1
NjQ2YzgwNzUzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290
aHN0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi5mcmFnCkBAIC0wLDAg
KzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IGVkZ2UwID0g
MC4yNTsKKwljb25zdCBmbG9hdCBlZGdlMSA9IDAuNzU7CisJZmxvYXQgYyA9IGNsYW1wKChjb2xv
ci5yIC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjAsIDEuMCk7CisKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0KGMgKiBjICogKDMuMCAtIDIuMCAqIGMpLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF9mbG9hdF92ZXJ0X3h2YXJ5
X2VkZ2Vjb25zdHF1YXJ0ZXIudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF9m
bG9hdF92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDJjYTM3
OWRkZTU4OWE2MzhiNzkzNjZjMzZlOTYyODJiNWM2NTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX2Zsb2F0X3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVh
cnRlci52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBm
bG9hdCBlZGdlMCA9IDAuMjU7CisJY29uc3QgZmxvYXQgZWRnZTEgPSAwLjc1OworCWNvbG9yID0g
dmVjNChzbW9vdGhzdGVwKGVkZ2UwLCBlZGdlMSwgZ3RmX0NvbG9yLnIpLCAwLjAsIDAuMCwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF9mbG9h
dF92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXJfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhz
dGVwL3Ntb290aHN0ZXBfZmxvYXRfdmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi52ZXJ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhiZDY5ZjNiNjI5YWI5OTJhYjM3OGI4ODc5OTE4OWY0NjdmZTIyMWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfZmxvYXRfdmVy
dF94dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBlZGdlMCA9IDAuMjU7CisJY29uc3QgZmxvYXQg
ZWRnZTEgPSAwLjc1OworCWZsb2F0IGMgPSBjbGFtcCgoZ3RmX0NvbG9yLnIgLSBlZGdlMCkgLyAo
ZWRnZTEgLSBlZGdlMCksIDAuMCwgMS4wKTsKKworCWNvbG9yID0gdmVjNChjICogYyAqICgzLjAg
LSAyLjAgKiBjKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
bW9vdGhzdGVwL3Ntb290aHN0ZXBfdmVjMl9mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMyX2ZyYWdfeHZhcnlfZWRnZWNv
bnN0cXVhcnRlci5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMzJjM2Q0Yjk1NjY2OGRmNTM4N2JhNmY3MjQ2
ZDlhYmQwNGRmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290
aHN0ZXBfdmVjMl9mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIuZnJhZwpAQCAtMCwwICsxLDE5
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMyIGVkZ2UwID0gdmVjMigw
LjI1LCAwLjI1KTsKKwljb25zdCB2ZWMyIGVkZ2UxID0gdmVjMigwLjc1LCAwLjc1KTsKKwlnbF9G
cmFnQ29sb3IgPSB2ZWM0KHNtb290aHN0ZXAoZWRnZTAsIGVkZ2UxLCBjb2xvci5yZyksIDAuMCwg
MS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMy
X2ZyYWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0
ZXAvc21vb3Roc3RlcF92ZWMyX2ZyYWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZmIzNjUwMDJmMDMxNmQ1ZWU2MWIxN2QzNmVlMmNiMTRiYTFjMjk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzJfZnJhZ194
dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgZWRnZTAgPSB2ZWMyKDAuMjUsIDAuMjUpOwor
CWNvbnN0IHZlYzIgZWRnZTEgPSB2ZWMyKDAuNzUsIDAuNzUpOworCXZlYzIgYyA9IGNsYW1wKChj
b2xvci5yZyAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMC4wLCAxLjApOworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoYyAqIGMgKiAoMy4wIC0gMi4wICogYyksIDAuMCwgMS4wKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRn
ZWNvbnN0cXVhcnRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzJf
dmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM1NTQ3NjM3MmVi
OWFiMjMxZTk0ZWEzMmVlYjA0ODc5OTU0MGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci52
ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMyIGVk
Z2UwID0gdmVjMigwLjI1LCAwLjI1KTsKKwljb25zdCB2ZWMyIGVkZ2UxID0gdmVjMigwLjc1LCAw
Ljc1KTsKKwljb2xvciA9IHZlYzQoc21vb3Roc3RlcChlZGdlMCwgZWRnZTEsIGd0Zl9Db2xvci5y
ZyksIDAuMCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21v
b3Roc3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlcl9yZWYudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRl
cl9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODY0YTNhZjliZWJhNzc3ODIxZjUzNWNiNDAzNjBjNmRm
MGE1MGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVw
X3ZlYzJfdmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMjEg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMyIGVkZ2UwID0gdmVjMigwLjI1LCAw
LjI1KTsKKwljb25zdCB2ZWMyIGVkZ2UxID0gdmVjMigwLjc1LCAwLjc1KTsKKwl2ZWMyIGMgPSBj
bGFtcCgoZ3RmX0NvbG9yLnJnIC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjAsIDEuMCk7
CisJY29sb3IgPSB2ZWM0KGMgKiBjICogKDMuMCAtIDIuMCAqIGMpLCAwLjAsIDEuMCk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfdmVjM19mcmFnX3h2
YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXIuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21vb3Roc3Rl
cF92ZWMzX2ZyYWdfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhY2Ez
YzFmOTVhZjVkMWQ3ZjNlMjk0YTUwNzEzNzNkOTcwMjAzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfdmVjM19mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1
YXJ0ZXIuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b25zdCB2ZWMzIGVkZ2UwID0gdmVjMygwLjI1LCAwLjI1LCAwLjI1KTsKKwljb25zdCB2ZWMzIGVk
Z2UxID0gdmVjMygwLjc1LCAwLjc1LCAwLjc1KTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHNtb290
aHN0ZXAoZWRnZTAsIGVkZ2UxLCBjb2xvci5yZ2IpLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzNfZnJhZ194dmFyeV9lZGdlY29uc3RxdWFy
dGVyX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzNfZnJhZ194
dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWE1MmFkNjQyNTYz
Zjk5YjZlNTlkNGJmOGM3NzVkZGFiNDUyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
bW9vdGhzdGVwL3Ntb290aHN0ZXBfdmVjM19mcmFnX3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXJfcmVm
LmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3Qg
dmVjMyBlZGdlMCA9IHZlYzMoMC4yNSwgMC4yNSwgMC4yNSk7CisJY29uc3QgdmVjMyBlZGdlMSA9
IHZlYzMoMC43NSwgMC43NSwgMC43NSk7CisJdmVjMyBjID0gY2xhbXAoKGNvbG9yLnJnYiAtIGVk
Z2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMC4wLCAxLjApOworCisJZ2xfRnJhZ0NvbG9yID0gdmVj
NChjICogYyAqICgzLjAgLSAyLjAgKiBjKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3Ntb290aHN0ZXAvc21vb3Roc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzNfdmVydF94dmFyeV9lZGdl
Y29uc3RxdWFydGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFhOGQ4YzNlNDllMjE3MGRlODk4YWFiMThi
ZDQ4OWIxZDljZTgxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Ntb290aHN0ZXAvc21v
b3Roc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0cXVhcnRlci52ZXJ0CkBAIC0wLDAgKzEs
MjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCB2ZWMzIGVkZ2UwID0gdmVjMygwLjI1
LCAwLjI1LCAwLjI1KTsKKwljb25zdCB2ZWMzIGVkZ2UxID0gdmVjMygwLjc1LCAwLjc1LCAwLjc1
KTsKKwljb2xvciA9IHZlYzQoc21vb3Roc3RlcChlZGdlMCwgZWRnZTEsIGd0Zl9Db2xvci5yZ2Ip
LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21vb3Roc3RlcC9zbW9vdGhzdGVw
X3ZlYzNfdmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc21v
b3Roc3RlcC9zbW9vdGhzdGVwX3ZlYzNfdmVydF94dmFyeV9lZGdlY29uc3RxdWFydGVyX3JlZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmMTI5OTNiMGYwYmEyZDBjN2MxNjg5YzVhZTRhNmVhODg1Njk3OGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zbW9vdGhzdGVwL3Ntb290aHN0ZXBfdmVjM192
ZXJ0X3h2YXJ5X2VkZ2Vjb25zdHF1YXJ0ZXJfcmVmLnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzMgZWRnZTAgPSB2ZWMzKDAuMjUsIDAuMjUsIDAu
MjUpOworCWNvbnN0IHZlYzMgZWRnZTEgPSB2ZWMzKDAuNzUsIDAuNzUsIDAuNzUpOworCXZlYzMg
YyA9IGNsYW1wKChndGZfQ29sb3IucmdiIC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjAs
IDEuMCk7CisKKwljb2xvciA9IHZlYzQoYyAqIGMgKiAoMy4wIC0gMi4wICogYyksIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L2lucHV0LnJ1bi50eHQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
cXJ0L2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE1MWVlNjQ0OGI5NjQ3OGY5ZmExZWUyYjlh
MGNkYTA2MzM5NzNhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQvaW5wdXQucnVu
LnR4dApAQCAtMCwwICsxLDIgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBO
T1QgRURJVC4KK3NxcnRfMDAxX3RvXzAwNi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0
L3NxcnRfMDAxX3RvXzAwNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0XzAwMV90b18wMDYuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OGYzNjg2MDRlNjEwZmVkZDhiNjFkYjc3NTY2MDFlMzNkNTcwMmQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0XzAwMV90b18wMDYuaHRtbApAQCAt
MCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHNxcnRfMDAxX3RvXzAwNi5odG1sPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhl
aWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
T3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzcXJ0X2Zsb2F0X2ZyYWdf
eHZhcnlfcmVmLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzcXJ0X2Zsb2F0X2ZyYWdfeHZh
cnkuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzcXJ0X2Zsb2F0X2ZyYWdfeHZhcnku
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzcXJ0X3Zl
YzJfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInNxcnRfdmVjMl9m
cmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3FydF92ZWMyX2ZyYWdf
eHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJz
cXJ0X3ZlYzNfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBu
dWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInNxcnRf
dmVjM19mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3FydF92ZWMz
X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJzcXJ0X2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInNxcnRfZmxvYXRfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InNxcnRfZmxvYXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogInNxcnRfdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJzcXJ0X3ZlYzJfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInNxcnRfdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3FydF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogInNxcnRfdmVjM192ZXJ0X3h2YXJ5LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAic3FydF92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
cXJ0L3NxcnRfZmxvYXRfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X2Zsb2F0
X2ZyYWdfeHZhcnkuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDYxYzA4YWRiYjAyMDg0YTFmNzFiODY2MTFh
ODU3NmMzODk4MjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X2Zsb2F0
X2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwlmbG9hdCBjID0gc3FydCgxMDAuMCAqIGNvbG9yLnIpOworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoYyAqIGMgLyAxMDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zcXJ0L3NxcnRfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQvc3Fy
dF9mbG9hdF9mcmFnX3h2YXJ5X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZTYyYTY4OWEyZDVkYmE5
Zjg4MWQ3ZmNiNGRhODY2Zjc0MTFiOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0
L3NxcnRfZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlmbG9hdCBjID0gMTAwLjAgKiBjb2xvci5yOworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoYyAvIDEwMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3NxcnQvc3FydF9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3Nx
cnRfZmxvYXRfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ODBlMGFlNTRlMjNhMjIwNjkw
ZWM0NGE4ODM5NjY4NGMwOTY0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3Nx
cnRfZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlmbG9hdCBjID0gc3FydCgxMDAuMCAqIGd0Zl9Db2xvci5yKTsKKwljb2xvciA9IHZl
YzQoYyAqIGMgLyAxMDAuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zcXJ0L3NxcnRfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQv
c3FydF9mbG9hdF92ZXJ0X3h2YXJ5X3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMDdjZjcxOWI3NzIy
NGM3ZTNhNzY5ZDkzNGJkMTg5Y2Q1ZWViODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
cXJ0L3NxcnRfZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJZmxvYXQgYyA9IDEwMC4wICogZ3RmX0NvbG9yLnI7CisJY29sb3Ig
PSB2ZWM0KGMgLyAxMDAuMCwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zcXJ0L3NxcnRfdmVjMl9mcmFnX3h2YXJ5LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3NxcnRf
dmVjMl9mcmFnX3h2YXJ5LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRlOThkOGNlZGUzMWM0MDA1NTZhZTBm
N2M2OTU0YWY5NzNhZDY2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQvc3FydF92
ZWMyX2ZyYWdfeHZhcnkuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwl2ZWMyIGMgPSBzcXJ0KDEwMC4wICogY29sb3IucmcpOworCWdsX0ZyYWdDb2xvciA9
IHZlYzQoYyAqIGMgLyAxMDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3FydC9zcXJ0X3ZlYzJfZnJhZ194dmFyeV9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQvc3FydF92
ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTczNWYyNGFlZWY3MDI4NjBhYTRk
ZWM5ODIxYmYwYjdiNDU0ZjQxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQvc3Fy
dF92ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjMiBjID0gMTAwLjAgKiBjb2xvci5yZzsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGMgLyAxMDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3Fy
dC9zcXJ0X3ZlYzJfdmVydF94dmFyeS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzJfdmVy
dF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYmVkYjE3MjBjN2Y3MGQ1NGEzYzU5YWE0NTA1MGUx
ZDk4MTI3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3NxcnRfdmVjMl92ZXJ0
X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIg
YyA9IHNxcnQoMTAwLjAgKiBndGZfQ29sb3IucmcpOworCWNvbG9yID0gdmVjNChjICogYyAvIDEw
MC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3NxcnRfdmVj
Ml92ZXJ0X3h2YXJ5X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzJfdmVydF94dmFy
eV9yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjc1MzEzYzE4MzQ2NDk4MThhMDUxNWE4NTIyZDAzMDY0
NzczNDgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzJfdmVydF94
dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
MiBjID0gMTAwLjAgKiBndGZfQ29sb3Iucmc7CisJY29sb3IgPSB2ZWM0KGMgLyAxMDAuMCwgMC4w
LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzNfZnJhZ194
dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzNfZnJhZ194dmFyeS5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJjNTM4MjliNjRjMjk4MzY3Mzg3MzgwYjJlMjU2NWFlYWU0MzY4YjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3NxcnRfdmVjM19mcmFnX3h2YXJ5LmZyYWcKQEAgLTAs
MCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gc3FydCgxMDAu
MCAqIGNvbG9yLnJnYik7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjICogYyAvIDEwMC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3FydC9zcXJ0X3ZlYzNfZnJhZ194dmFyeV9yZWYu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3NxcnQvc3FydF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjIzYjVmODdjZTc0ZGZiOWYzOTA5Mzk3NDE4YTBhODMzMjg5ZjUwZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3NxcnQvc3FydF92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKQEAg
LTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gMTAwLjAg
KiBjb2xvci5yZ2I7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjIC8gMTAwLjAsIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zcXJ0L3NxcnRfdmVjM192ZXJ0X3h2YXJ5LnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zcXJ0L3NxcnRfdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlZDg3NjNm
MDUxYTExZGE5YTgwY2ZlM2Q2OGIxOWI3Yzk0MWVjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3NxcnQvc3FydF92ZWMzX3ZlcnRfeHZhcnkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjMyBjID0gc3FydCgxMDAuMCAqIGd0Zl9Db2xvci5yZ2IpOwor
CWNvbG9yID0gdmVjNChjICogYyAvIDEwMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3FydC9zcXJ0X3ZlYzNfdmVydF94dmFyeV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3NxcnQv
c3FydF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk5ODNjMzA3OWQ1MTc0
YzU0NTU3ZTAwNzA2ZGM3NzE1MjIwYmIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Nx
cnQvc3FydF92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzMgYyA9IDEwMC4wICogZ3RmX0NvbG9yLnJnYjsKKwljb2xvciA9
IHZlYzQoYyAvIDEwMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9p
bnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9pbnB1dC5ydW4udHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZi
OGFjMDA1ZGM1Zjk1MzJlNmJiYzJmYWEyMjY2ZDIwZDg5Zjk5MTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zdGVwL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBACisjIHRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCitzdGVwXzAwMV90b18wMDYuaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwXzAwMV90b18wMDYuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0ZXAvc3RlcF8wMDFfdG9fMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE0Mjk3YTQxNTkxNWExMTdl
NDY5MWNkYTRjN2ZhMjFmZDQ4MmRlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAv
c3RlcF8wMDFfdG9fMDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0
OiBzdGVwXzAwMV90b18wMDYuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNz
cyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUw
MCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVz
dHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAic3RlcF9mbG9hdF9mcmFnX3h2YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJzdGVwX2Zsb2F0X2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZi5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdl
Y29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAic3RlcF92ZWMyX2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogInN0ZXBfdmVjMl9mcmFnX3h2YXJ5X2VkZ2Vjb25zdGhhbGYuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJzdGVwX3ZlYzJfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxm
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic3RlcF92
ZWMzX2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZl9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogInN0ZXBfdmVjM19mcmFnX3h2YXJ5X2VkZ2Vjb25zdGhhbGYuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJzdGVwX3ZlYzNfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxmLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RlcF9mbG9hdF92
ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
ImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
InN0ZXBfZmxvYXRfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmLnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAic3RlcF9mbG9hdF92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGYudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdGVwX3ZlYzJfdmVydF94
dmFyeV9lZGdlY29uc3RoYWxmX3JlZi52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlk
IiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdGVw
X3ZlYzJfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAic3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZi50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInN0ZXBfdmVjM192ZXJ0X3h2YXJ5X2Vk
Z2Vjb25zdGhhbGZfcmVmLnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInN0ZXBfdmVjM192
ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGYudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdGVw
X3ZlYzNfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVw
X2Zsb2F0X2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVw
X2Zsb2F0X2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OWZhYjll
NzExNGM5NTM1Njk4NTg4MWJlODU3MGY2OWU0ZDc0YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zdGVwL3N0ZXBfZmxvYXRfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxmLmZyYWcKQEAgLTAs
MCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgZWRnZSA9
IDAuNTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHN0ZXAoZWRnZSwgY29sb3IuciksIDAuMCwgMC4w
LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX2Zsb2F0X2ZyYWdfeHZh
cnlfZWRnZWNvbnN0aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF9mbG9hdF9mcmFn
X3h2YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVhYzk2NDhlNDhkZmM1
ZWM2MjRkZjA3NTQ1YjgyYWFjYmY3ZDgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
ZXAvc3RlcF9mbG9hdF9mcmFnX3h2YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLmZyYWcKQEAgLTAsMCAr
MSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgZWRnZSA9IDAu
NTsKKwlmbG9hdCBjID0gY29sb3IucjsKKwlpZihjID49IGVkZ2UpIGMgPSAxLjA7CisJZWxzZSBj
ID0gMC4wOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAwLjAsIDAuMCwgMS4wKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF9mbG9hdF92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhh
bGYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF9mbG9hdF92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhh
bGYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iN2NmOGM3YzJkZmZmYzRhY2Y5MWQ3ZmYyNGVkNDQxNzcyNmE0
MDk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX2Zsb2F0X3ZlcnRfeHZh
cnlfZWRnZWNvbnN0aGFsZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBlZGdlID0gMC41OworCWNvbG9yID0gdmVjNChzdGVwKGVkZ2UsIGd0
Zl9Db2xvci5yKSwgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dGVwL3N0ZXBfZmxvYXRfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3RlcC9zdGVwX2Zsb2F0X3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZl9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTI5OGQ0YzY4Yjg0NmUwZmMwMjIxYTQ3NGU5M2FmZGQwOTBmMTQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX2Zsb2F0X3ZlcnRfeHZhcnlfZWRnZWNvbnN0
aGFsZl9yZWYudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29u
c3QgZmxvYXQgZWRnZSA9IDAuNTsKKwlmbG9hdCBjID0gZ3RmX0NvbG9yLnI7CisJaWYoYyA+PSBl
ZGdlKSBjID0gMS4wOworCWVsc2UgYyA9IDAuMDsKKworCWNvbG9yID0gdmVjNChjLCAwLjAsIDAu
MCwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICog
Z3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF92ZWMyX2ZyYWdf
eHZhcnlfZWRnZWNvbnN0aGFsZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX3ZlYzJfZnJhZ194
dmFyeV9lZGdlY29uc3RoYWxmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg4MmRmMWI3ZThiMjIzMDEyZDk2
ZGNlN2QwMGVlN2YyMWZmZTFjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3Rl
cF92ZWMyX2ZyYWdfeHZhcnlfZWRnZWNvbnN0aGFsZi5mcmFnCkBAIC0wLDAgKzEsMTggQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgZWRnZSA9IHZlYzIoMC41LCAwLjUp
OworCWdsX0ZyYWdDb2xvciA9IHZlYzQoc3RlcChlZGdlLCBjb2xvci5yZyksIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF92ZWMyX2ZyYWdfeHZhcnlfZWRnZWNv
bnN0aGFsZl9yZWYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF92ZWMyX2ZyYWdfeHZhcnlfZWRn
ZWNvbnN0aGFsZl9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjQzZTQ4ZDhlMTcyM2IyZDBmOWYzZGY3
NDc3YTMyZDgwZmUyOTIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX3Zl
YzJfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxmX3JlZi5mcmFnCkBAIC0wLDAgKzEsMzYgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgZWRnZSA9IHZlYzIoMC41LCAwLjUp
OworCXZlYzIgYyA9IGNvbG9yLnJnOworCWlmKGNbMF0gPj0gZWRnZVswXSkKKwl7CisJCWNbMF0g
PSAxLjA7CisJfQorCWVsc2UKKwl7CisJCWNbMF0gPSAwLjA7CisJfQorCWlmKGNbMV0gPj0gZWRn
ZVsxXSkKKwl7CisJCWNbMV0gPSAxLjA7CisJfQorCWVsc2UKKwl7CisJCWNbMV0gPSAwLjA7CisJ
fQorCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zdGVwL3N0ZXBfdmVjMl92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGYudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N0ZXAvc3RlcF92ZWMyX3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZi52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2YzQ0ZmYwYjVjMmNjMGNiZDQ0YzA4NGJiMmQxM2M0YzJkNzcxNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjMl92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhh
bGYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgdmVj
MiBlZGdlID0gdmVjMigwLjUsIDAuNSk7CisJY29sb3IgPSB2ZWM0KHN0ZXAoZWRnZSwgZ3RmX0Nv
bG9yLnJnKSwgMC4wLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVw
X3ZlYzJfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmX3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9z
dGVwX3ZlYzJfdmVydF94dmFyeV9lZGdlY29uc3RoYWxmX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
N2U5ZDNjNWUxNjNiZjJiMGNlYTkyYTc0OGRhZTMwNTJlOWE0ZjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjMl92ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLnZl
cnQKQEAgLTAsMCArMSwzNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IHZlYzIgZWRn
ZSA9IHZlYzIoMC41LCAwLjUpOworCXZlYzIgYyA9IGd0Zl9Db2xvci5yZzsKKwlpZihjWzBdID49
IGVkZ2VbMF0pCisJeworCQljWzBdID0gMS4wOworCX0KKwllbHNlCisJeworCQljWzBdID0gMC4w
OworCX0KKwlpZihjWzFdID49IGVkZ2VbMV0pCisJeworCQljWzFdID0gMS4wOworCX0KKwllbHNl
CisJeworCQljWzFdID0gMC4wOworCX0KKworCWNvbG9yID0gdmVjNChjLCAwLjAsIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjM19mcmFnX3h2YXJ5X2VkZ2Vj
b25zdGhhbGYuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF92ZWMzX2ZyYWdfeHZhcnlfZWRnZWNv
bnN0aGFsZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyN2QxNjNjNDZkYjM1NDMzNDZjMDAyMmYzNTMxNjhj
MGY3OTcxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjM19mcmFn
X3h2YXJ5X2VkZ2Vjb25zdGhhbGYuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwljb25zdCB2ZWMzIGVkZ2UgPSB2ZWMzKDAuNSwgMC41LCAwLjUpOworCWds
X0ZyYWdDb2xvciA9IHZlYzQoc3RlcChlZGdlLCBjb2xvci5yZ2IpLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX3ZlYzNfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxmX3Jl
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX3ZlYzNfZnJhZ194dmFyeV9lZGdlY29uc3RoYWxm
X3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZmMzMjZjY2JhY2IyZDI1NTJmN2U5MDBiODk3MWY4Y2Ix
NDI1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjM19mcmFnX3h2
YXJ5X2VkZ2Vjb25zdGhhbGZfcmVmLmZyYWcKQEAgLTAsMCArMSw0NCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJY29uc3QgdmVjMyBlZGdlID0gdmVjMygwLjUsIDAuNSwgMC41KTsKKwl2
ZWMzIGMgPSBjb2xvci5yZ2I7CisJaWYoY1swXSA+PSBlZGdlWzBdKQorCXsKKwkJY1swXSA9IDEu
MDsKKwl9CisJZWxzZQorCXsKKwkJY1swXSA9IDAuMDsKKwl9CisJaWYoY1sxXSA+PSBlZGdlWzFd
KQorCXsKKwkJY1sxXSA9IDEuMDsKKwl9CisJZWxzZQorCXsKKwkJY1sxXSA9IDAuMDsKKwl9CisJ
aWYoY1syXSA+PSBlZGdlWzJdKQorCXsKKwkJY1syXSA9IDEuMDsKKwl9CisJZWxzZQorCXsKKwkJ
Y1syXSA9IDAuMDsKKwl9CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGMsIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjM192ZXJ0X3h2YXJ5X2VkZ2Vjb25zdGhhbGYu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N0ZXAvc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZi52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5NDNiMDIyMDFhMzEwODIxMWJkOTZkMTNiMTIwMWFjMTU1OGZjMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdGVwL3N0ZXBfdmVjM192ZXJ0X3h2YXJ5X2Vk
Z2Vjb25zdGhhbGYudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Y29uc3QgdmVjMyBlZGdlID0gdmVjMygwLjUsIDAuNSwgMC41KTsKKwljb2xvciA9IHZlYzQoc3Rl
cChlZGdlLCBndGZfQ29sb3IucmdiKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0ZXAvc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZl9yZWYudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N0ZXAvc3RlcF92ZWMzX3ZlcnRfeHZhcnlfZWRnZWNvbnN0aGFsZl9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOGQyNDQyZmE2YzlmNmM5MGFmYTg4MDcxNzBlODRlMTcxMTM1NjgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RlcC9zdGVwX3ZlYzNfdmVydF94dmFyeV9lZGdlY29uc3Ro
YWxmX3JlZi52ZXJ0CkBAIC0wLDAgKzEsNDUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25z
dCB2ZWMzIGVkZ2UgPSB2ZWMzKDAuNSwgMC41LCAwLjUpOworCXZlYzMgYyA9IGd0Zl9Db2xvci5y
Z2I7CisJaWYoY1swXSA+PSBlZGdlWzBdKQorCXsKKwkJY1swXSA9IDEuMDsKKwl9CisJZWxzZQor
CXsKKwkJY1swXSA9IDAuMDsKKwl9CisJaWYoY1sxXSA+PSBlZGdlWzFdKQorCXsKKwkJY1sxXSA9
IDEuMDsKKwl9CisJZWxzZQorCXsKKwkJY1sxXSA9IDAuMDsKKwl9CisJaWYoY1syXSA+PSBlZGdl
WzJdKQorCXsKKwkJY1syXSA9IDEuMDsKKwl9CisJZWxzZQorCXsKKwkJY1syXSA9IDAuMDsKKwl9
CisKKwljb2xvciA9IHZlYzQoYywgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
cnVjdC9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L2lucHV0LnJ1bi50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODljM2RhMTZlYzA4MTY3ZDc4ZjBmYzU1NjUwZjkwMjM4ZWZjYmY3YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsOCBAQAor
IyB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorc3RydWN0XzAwMV90
b18wMDguaHRtbAorc3RydWN0XzAwOV90b18wMTYuaHRtbAorc3RydWN0XzAxN190b18wMjQuaHRt
bAorc3RydWN0XzAyNV90b18wMzIuaHRtbAorc3RydWN0XzAzM190b18wNDAuaHRtbAorc3RydWN0
XzA0MV90b18wNDguaHRtbAorc3RydWN0XzA0OV90b18wNTYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3RydWN0L25lc3RlZHN0cnVjdGNvbWJfdmFyaW91c19mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3QvbmVzdGVkc3RydWN0Y29tYl92YXJpb3VzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YzBmZGQwMWE4MDZhYTJiNzdhZDRlYWY3MTYxYjM4NGQ2ZGRjNDg2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3RydWN0L25lc3RlZHN0cnVjdGNvbWJfdmFyaW91c19mcmFnLmZyYWcKQEAg
LTAsMCArMSw5OSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5lIEVSUk9SX0VQU0lMT04gMC4xMjUKKwordm9pZCBt
YWluICh2b2lkKXsKKyAgCXN0cnVjdCBzZWNvbmRfbmVzdAorCXsKKwkgICBmbG9hdCBzY19udDsK
KwkgICBtYXQyIHNjX210MjsKKwkgICB2ZWM0IHNjX3ZjNDsKKwl9OworCisJc3RydWN0IG5lc3QK
Kwl7CisJICAgaXZlYzMgbnRfaXZjMzsKKwkgICBidmVjNCBudF9idmM0OworCSAgIHNlY29uZF9u
ZXN0IG50X3NjbmU7CisJfTsKKworCXN0cnVjdCB0ZXN0X3QKKwl7CisJICAgZmxvYXQgdF9mbDsK
KwkgICB2ZWMyIHRfdmMyOworCSAgIHZlYzMgdF92YzM7CisJICAgbWF0NCB0X210NDsKKyAgICAg
ICAgICAgbmVzdCB0X25lc3RlZDsKKwkgICBmbG9hdCB0XzJmbDsKKwl9OworCisJdmVjNCBtdDEg
PSB2ZWM0KDMxLjAsIDMyLjAsIDMzLjAsIDM0LjApOworCXZlYzQgbXQyID0gdmVjNCgzNS4wLCAz
Ni4wLCAzNy4wLCAzOC4wKTsKKwl2ZWM0IG10MyA9IHZlYzQoMzkuMCwgNDAuMCwgNDEuMCwgNDIu
MCk7CisJdmVjNCBtdDQgPSB2ZWM0KDQzLjAsIDQ0LjAsIDQ1LjAsIDQ2LjApOworCWludCBpPTA7
CisJZmxvYXQgc3VtMT0wLjAsIHN1bTI9MC4wLCBzdW0zPTAuMCwgc3VtND0wLjA7CisKKwl0ZXN0
X3QgYSA9IHRlc3RfdCgyMy4wLCB2ZWMyKDEyLjAsIDEzLjApLAorCisJICAgICAgICAgICAgICAg
ICAgdmVjMygxNjMuMCwgMTczLjAsIDE4My4wKSwKKworCQkgICAgICAgICAgbWF0NChtdDEsIG10
MiwgbXQzLCBtdDQpLAorCisJCSAgICAgICAgICAgICAgICBuZXN0KCBpdmVjMyg3MywgNzQsIDc1
KSwKKworCQkJICAgICAgICBidmVjNCgxMiwgMCwgMTcuMCwgMTkzLjAgKSwKKworCQkJICAgICAg
ICAgICAgc2Vjb25kX25lc3QoMTQ0LjAsICBtYXQyKDIyLjAsIDIzLjAsIDI0LjAsIDI1LjApLCAg
dmVjNCg1Ny4wLCA1OC4wLCA1OS4wLCA2MC4wICkKKwkJCQkgICAgKQorCQkJCSksCisKKwkJCSAg
MjAzLjAKKwkJICAgICk7CisKKwlzdW0xID0gIGEudF9tdDRbMF1bMF0gKyBhLnRfbXQ0WzBdWzFd
ICsgYS50X210NFswXVsyXSArIGEudF9tdDRbMF1bM107CisJc3VtMiA9ICBhLnRfbXQ0WzFdWzBd
ICsgYS50X210NFsxXVsxXSArIGEudF9tdDRbMV1bMl0gKyBhLnRfbXQ0WzFdWzNdOworCXN1bTMg
PSAgYS50X210NFsyXVswXSArIGEudF9tdDRbMl1bMV0gKyBhLnRfbXQ0WzJdWzJdICsgYS50X210
NFsyXVszXTsKKwlzdW00ID0gIGEudF9tdDRbM11bMF0gKyBhLnRfbXQ0WzNdWzFdICsgYS50X210
NFszXVsyXSArIGEudF9tdDRbM11bM107CisKKwlmbG9hdCBncmF5OworCWlmKCAoIGEudF9mbCA9
PSAyMy4wICkgJiYKKworCSAgICAoYS50X3ZjMlswXSA9PSAxMi4wKSAmJiAoYS50X3ZjMlsxXSA9
PSAxMy4wKSAmJgorCisJICAgIChhLnRfdmMzWzBdID09IDE2My4wKSAgJiYgKGEudF92YzNbMV0g
PT0gMTczLjApICAmJiAoYS50X3ZjM1syXSA9PSAxODMuMCkgJiYKKworICAgICAgICAgICAgKHN1
bTEgPiAxMzAuMC1FUlJPUl9FUFNJTE9OICYmIHN1bTEgPCAxMzAuMCtFUlJPUl9FUFNJTE9OICkg
ICYmIChzdW0yID4gMTQ2LjAtRVJST1JfRVBTSUxPTiAmJiBzdW0yIDwgMTQ2LjArRVJST1JfRVBT
SUxPTiAgKSAgJiYgKHN1bTMgPjE2Mi4wLUVSUk9SX0VQU0lMT04gJiYgc3VtMyA8IDE2Mi4wK0VS
Uk9SX0VQU0lMT04gKSAmJiAoc3VtNCA+IDE3OC4wLUVSUk9SX0VQU0lMT04gJiYgc3VtNCA8IDE3
OC4wK0VSUk9SX0VQU0lMT04gKSAmJgorICAgICAgICAgICAgICAgIChhLnRfbmVzdGVkLm50X2l2
YzNbMF0gPT0gNzMgKSAmJiAoYS50X25lc3RlZC5udF9pdmMzWzFdID09IDc0ICkgJiYgKGEudF9u
ZXN0ZWQubnRfaXZjM1syXSA9PSA3NSApICYmCisKKwkgICAgICAgIChhLnRfbmVzdGVkLm50X2J2
YzRbMF0gPT0gdHJ1ZSkgJiYgKGEudF9uZXN0ZWQubnRfYnZjNFsxXSA9PSBmYWxzZSkgJiYKKwor
ICAgICAgICAgICAgICAgIChhLnRfbmVzdGVkLm50X2J2YzRbMl0gPT0gdHJ1ZSApICYmIChhLnRf
bmVzdGVkLm50X2J2YzRbMF0gPT0gdHJ1ZSkgJiYKKworICAgICAgICAgICAgICAgICAgICAgKGEu
dF9uZXN0ZWQubnRfc2NuZS5zY19udCA9PSAxNDQuMCkgJiYKKworICAgICAgICAgICAgICAgICAg
ICAgKGEudF9uZXN0ZWQubnRfc2NuZS5zY19tdDJbMF1bMF0gPT0gMjIuMCApICYmIChhLnRfbmVz
dGVkLm50X3NjbmUuc2NfbXQyWzBdWzFdID09IDIzLjAgKSAmJgorCisgICAgICAgICAgICAgICAg
ICAgICAoYS50X25lc3RlZC5udF9zY25lLnNjX210MlsxXVswXSA9PSAyNC4wICkgJiYgKGEudF9u
ZXN0ZWQubnRfc2NuZS5zY19tdDJbMV1bMV0gPT0gMjUuMCApICYmCisKKyAgICAgICAgICAgICAg
ICAgICAgIChhLnRfbmVzdGVkLm50X3NjbmUuc2NfdmM0WzBdID09IDU3LjAgKSAmJiAoYS50X25l
c3RlZC5udF9zY25lLnNjX3ZjNFsxXSA9PSA1OC4wICkgJiYKKworICAgICAgICAgICAgICAgICAg
ICAgKGEudF9uZXN0ZWQubnRfc2NuZS5zY192YzRbMl0gPT0gNTkuMCApICYmIChhLnRfbmVzdGVk
Lm50X3NjbmUuc2NfdmM0WzNdID09IDYwLjApICYmCisKKyAgICAgICAgICAgIChhLnRfMmZsID09
IDIwMy4wKQorICAgICAgICAgICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0Zy
YWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N0cnVjdC9uZXN0ZWRzdHJ1Y3Rjb21iX3ZhcmlvdXNfdmVydC52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3RydWN0L25lc3RlZHN0cnVjdGNvbWJfdmFyaW91c192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzJjZjUyNTJmMjExN2ZhMTJmM2EyZDBhYTc2NWVlYzA1MzcyODcwYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N0cnVjdC9uZXN0ZWRzdHJ1Y3Rjb21iX3ZhcmlvdXNfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsMTAyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisjZGVmaW5lIEVS
Uk9SX0VQU0lMT04gMC4xMjUKKwordm9pZCBtYWluICh2b2lkKQoreworCXN0cnVjdCBzZWNvbmRf
bmVzdAorCXsKKwkgICBmbG9hdCBzY19udDsKKwkgICBtYXQyIHNjX210MjsKKwkgICB2ZWM0IHNj
X3ZjNDsKKwl9OworCisJc3RydWN0IG5lc3QKKwl7CisJICAgaXZlYzMgbnRfaXZjMzsKKwkgICBi
dmVjNCBudF9idmM0OworCSAgIHNlY29uZF9uZXN0IG50X3NjbmU7CisJfTsKKworCXN0cnVjdCB0
ZXN0X3QKKwl7CisJICAgZmxvYXQgdF9mbDsKKwkgICB2ZWMyIHRfdmMyOworCSAgIHZlYzMgdF92
YzM7CisJICAgbWF0NCB0X210NDsKKyAgICAgICAgICAgbmVzdCB0X25lc3RlZDsKKwkgICBmbG9h
dCB0XzJmbDsKKwl9OworCisJdmVjNCBtdDEgPSB2ZWM0KDMxLjAsIDMyLjAsIDMzLjAsIDM0LjAp
OworCXZlYzQgbXQyID0gdmVjNCgzNS4wLCAzNi4wLCAzNy4wLCAzOC4wKTsKKwl2ZWM0IG10MyA9
IHZlYzQoMzkuMCwgNDAuMCwgNDEuMCwgNDIuMCk7CisJdmVjNCBtdDQgPSB2ZWM0KDQzLjAsIDQ0
LjAsIDQ1LjAsIDQ2LjApOworCWludCBpPTA7CisJZmxvYXQgc3VtMT0wLjAsIHN1bTI9MC4wLCBz
dW0zPTAuMCwgc3VtND0wLjA7CisKKwl0ZXN0X3QgYSA9IHRlc3RfdCgyMy4wLCB2ZWMyKDEyLjAs
IDEzLjApLAorCisJICAgICAgICAgICAgICAgICAgdmVjMygxNjMuMCwgMTczLjAsIDE4My4wKSwK
KworCQkgICAgICAgICAgbWF0NChtdDEsIG10MiwgbXQzLCBtdDQpLAorCisJCSAgICAgICAgICAg
ICAgICBuZXN0KCBpdmVjMyg3MywgNzQsIDc1KSwKKworCQkJICAgICAgICBidmVjNCgxMiwgMCwg
MTcuMCwgMTkzLjAgKSwKKworCQkJICAgICAgICAgICAgc2Vjb25kX25lc3QoMTQ0LjAsICBtYXQy
KDIyLjAsIDIzLjAsIDI0LjAsIDI1LjApLCAgdmVjNCg1Ny4wLCA1OC4wLCA1OS4wLCA2MC4wICkK
KwkJCQkgICAgKQorCQkJCSksCisKKwkJCSAgMjAzLjAKKwkJICAgICk7CisKKwlzdW0xID0gIGEu
dF9tdDRbMF1bMF0gKyBhLnRfbXQ0WzBdWzFdICsgYS50X210NFswXVsyXSArIGEudF9tdDRbMF1b
M107CisJc3VtMiA9ICBhLnRfbXQ0WzFdWzBdICsgYS50X210NFsxXVsxXSArIGEudF9tdDRbMV1b
Ml0gKyBhLnRfbXQ0WzFdWzNdOworCXN1bTMgPSAgYS50X210NFsyXVswXSArIGEudF9tdDRbMl1b
MV0gKyBhLnRfbXQ0WzJdWzJdICsgYS50X210NFsyXVszXTsKKwlzdW00ID0gIGEudF9tdDRbM11b
MF0gKyBhLnRfbXQ0WzNdWzFdICsgYS50X210NFszXVsyXSArIGEudF9tdDRbM11bM107CisKKwlm
bG9hdCBncmF5OworCWlmKCAoIGEudF9mbCA9PSAyMy4wICkgJiYKKworCSAgICAoYS50X3ZjMlsw
XSA9PSAxMi4wKSAmJiAoYS50X3ZjMlsxXSA9PSAxMy4wKSAmJgorCisJICAgIChhLnRfdmMzWzBd
ID09IDE2My4wKSAgJiYgKGEudF92YzNbMV0gPT0gMTczLjApICAmJiAoYS50X3ZjM1syXSA9PSAx
ODMuMCkgJiYKKworICAgICAgICAgICAgKHN1bTEgPiAxMzAuMC1FUlJPUl9FUFNJTE9OICYmIHN1
bTEgPCAxMzAuMCtFUlJPUl9FUFNJTE9OICkgICYmIChzdW0yID4gMTQ2LjAtRVJST1JfRVBTSUxP
TiAmJiBzdW0yIDwgMTQ2LjArRVJST1JfRVBTSUxPTiAgKSAgJiYgKHN1bTMgPjE2Mi4wLUVSUk9S
X0VQU0lMT04gJiYgc3VtMyA8IDE2Mi4wK0VSUk9SX0VQU0lMT04gKSAmJiAoc3VtNCA+IDE3OC4w
LUVSUk9SX0VQU0lMT04gJiYgc3VtNCA8IDE3OC4wK0VSUk9SX0VQU0lMT04gKSAmJgorICAgICAg
ICAgICAgICAgIChhLnRfbmVzdGVkLm50X2l2YzNbMF0gPT0gNzMgKSAmJiAoYS50X25lc3RlZC5u
dF9pdmMzWzFdID09IDc0ICkgJiYgKGEudF9uZXN0ZWQubnRfaXZjM1syXSA9PSA3NSApICYmCisK
KwkgICAgICAgIChhLnRfbmVzdGVkLm50X2J2YzRbMF0gPT0gdHJ1ZSkgJiYgKGEudF9uZXN0ZWQu
bnRfYnZjNFsxXSA9PSBmYWxzZSkgJiYKKworICAgICAgICAgICAgICAgIChhLnRfbmVzdGVkLm50
X2J2YzRbMl0gPT0gdHJ1ZSApICYmIChhLnRfbmVzdGVkLm50X2J2YzRbMF0gPT0gdHJ1ZSkgJiYK
KworICAgICAgICAgICAgICAgICAgICAgKGEudF9uZXN0ZWQubnRfc2NuZS5zY19udCA9PSAxNDQu
MCkgJiYKKworICAgICAgICAgICAgICAgICAgICAgKGEudF9uZXN0ZWQubnRfc2NuZS5zY19tdDJb
MF1bMF0gPT0gMjIuMCApICYmIChhLnRfbmVzdGVkLm50X3NjbmUuc2NfbXQyWzBdWzFdID09IDIz
LjAgKSAmJgorCisgICAgICAgICAgICAgICAgICAgICAoYS50X25lc3RlZC5udF9zY25lLnNjX210
MlsxXVswXSA9PSAyNC4wICkgJiYgKGEudF9uZXN0ZWQubnRfc2NuZS5zY19tdDJbMV1bMV0gPT0g
MjUuMCApICYmCisKKyAgICAgICAgICAgICAgICAgICAgIChhLnRfbmVzdGVkLm50X3NjbmUuc2Nf
dmM0WzBdID09IDU3LjAgKSAmJiAoYS50X25lc3RlZC5udF9zY25lLnNjX3ZjNFsxXSA9PSA1OC4w
ICkgJiYKKworICAgICAgICAgICAgICAgICAgICAgKGEudF9uZXN0ZWQubnRfc2NuZS5zY192YzRb
Ml0gPT0gNTkuMCApICYmIChhLnRfbmVzdGVkLm50X3NjbmUuc2NfdmM0WzNdID09IDYwLjApICYm
CisKKyAgICAgICAgICAgIChhLnRfMmZsID09IDIwMy4wKQorICAgICAgICAgICkKKwlncmF5PTEu
MDsKKwllbHNlIGdyYXk9MC4wOworCisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfMDAxX3RvXzAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjI2ZTE1MmRhODY4NzdiNzZjMGNlM2U5NjI2MjBlOGU5MjU5Yjg1YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfMDAxX3RvXzAwOC5odG1sCkBAIC0wLDAgKzEs
MjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
LiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogc3RydWN0XzAwMV90b18wMDguaHRtbDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2ds
ZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6
IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5H
TEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAg
ICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwK
KyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAg
ICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0X2Zs
b2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3RfZmxvYXRfZnJh
Zy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAic3RydWN0X2Zsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJzdHJ1Y3RfZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogInN0cnVjdGNvcHlfZmxvYXRfZnJhZy5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdGNvcHlfZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAor
ICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVu
Y2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7Cisg
ICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIs
CisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAg
ICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3Jp
ZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3Ry
dWN0Y29weV9mbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0Y29w
eV9mbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0bmVzdF9mbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAic3RydWN0bmVzdF9mbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAg
ICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdHJ1Y3RuZXN0
X2Zsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3RuZXN0X2Zsb2F0
X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAg
ICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0
eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAg
ICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICJzdHJ1Y3RfYm9vbF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAic3RydWN0X2Jvb2xfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZv
cm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAor
ICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBb
CisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0X2Jvb2xfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInN0cnVjdF9ib29sX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1
Y3Qvc3RydWN0XzAwOV90b18wMTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfMDA5X3Rv
XzAxNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhY2Q0NTI2ZTJjNmMyN2FhMjY4ZjBiN2UwMmRhZjA4Yjhm
ZTI2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0XzAwOV90b18w
MTYuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN0cnVjdF8wMDlf
dG9fMDE2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3
aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAg
ICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5
cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogInN0cnVjdGNvcHlfYm9vbF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAic3RydWN0Y29weV9ib29sX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInN0cnVjdGNvcHlfYm9vbF92ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0Y29weV9ib29sX3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0
IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZv
cm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJz
dHJ1Y3RuZXN0X2Jvb2xfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVj
dG5lc3RfYm9vbF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdHJ1Y3RuZXN0X2Jvb2xfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInN0cnVjdG5lc3RfYm9vbF92ZXJ0LnRlc3QuaHRtbCIsCisgICAg
ICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAg
ICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAg
ICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBd
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0X3ZlYzJf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdF92ZWMyX2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVz
dWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVu
aWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInN0cnVjdF92ZWMyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1
Y3RfdmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0Y29weV92ZWMyX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJzdHJ1Y3Rjb3B5X3ZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAg
ICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAg
ICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0Y29weV92
ZWMyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3Rjb3B5X3ZlYzJfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30p
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfMDE3X3RvXzAyNC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3RydWN0L3N0cnVjdF8wMTdfdG9fMDI0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0Y2ExNjU2M2Q5
N2Q3YTVhZGI1NTE0ZWIzZDk1ZDU2ZWY0MmVkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3RfMDE3X3RvXzAyNC5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4g
LS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9y
bWFuY2UgdGVzdDogc3RydWN0XzAxN190b18wMjQuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIg
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29n
bGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAw
IiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5y
dW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3Vu
dCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2
YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBl
Y3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0bmVzdF92ZWMyX2ZyYWcuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3RuZXN0X3ZlYzJfZnJhZy50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQi
OiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9y
bTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAg
ICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAic3RydWN0bmVzdF92ZWMyX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1
Y3RuZXN0X3ZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogInN0cnVjdF92ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJzdHJ1Y3RfdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdHJ1Y3RfdmVjM192ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0X3ZlYzNfdmVydC50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7
CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRm
diIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAg
ICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBu
dWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInN0cnVj
dGNvcHlfdmVjM19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0Y29w
eV92ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsK
KyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAg
ICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogInN0cnVjdGNvcHlfdmVjM192ZXJ0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAic3RydWN0Y29weV92ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAg
ICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAg
ICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3RuZXN0X3ZlYzNf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdG5lc3RfdmVjM19mcmFn
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
InJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6
ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJzdHJ1Y3RuZXN0X3ZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogInN0cnVjdG5lc3RfdmVjM192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8w
MjVfdG9fMDMyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0XzAyNV90b18wMzIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYmJjNDIxODFiZTYyMGQ3NjM4YzI3YTViYTc1YWQ2YTM0YmNkNzUyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wMjVfdG9fMDMyLmh0bWwKQEAg
LTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBzdHJ1Y3RfMDI1X3RvXzAzMi5odG1s
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7
IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0
IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZv
cm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJz
dHJ1Y3RfdmVjNF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0X3Zl
YzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0X3ZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInN0cnVjdF92ZWM0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50Ijog
MSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVl
IjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3Rjb3B5X3ZlYzRfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdGNvcHlfdmVjNF9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJn
cmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJz
dHJ1Y3Rjb3B5X3ZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdGNv
cHlfdmVjNF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7
CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAg
ICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0bmVzdF92ZWM0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJzdHJ1Y3RuZXN0X3ZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAg
ICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAg
ICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0bmVzdF92
ZWM0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3RuZXN0X3ZlYzRfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInN0cnVjdF9idmVjMmJ2ZWMzYnZlYzRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInN0cnVjdF9idmVjMmJ2ZWMzYnZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0X2J2
ZWMyYnZlYzNidmVjNF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0X2J2
ZWMyYnZlYzNidmVjNF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wMzNfdG9f
MDQwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0XzAzM190b18wNDAuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZmE1NzE2OWY0Y2NlYWE0ODFmYTQ3MjFjMDc1ZTcwZmYxNDJlNzA0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wMzNfdG9fMDQwLmh0bWwKQEAgLTAsMCAr
MSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBzdHJ1Y3RfMDMzX3RvXzA0MC5odG1sPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9v
Z2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdo
dDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3Bl
bkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3Rj
b3B5X2J2ZWMyYnZlYzNidmVjNF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
c3RydWN0Y29weV9idmVjMmJ2ZWMzYnZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRl
cm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjog
eworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAg
ICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAi
Y291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAg
ICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0Y29weV9idmVj
MmJ2ZWMzYnZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdGNvcHlf
YnZlYzJidmVjM2J2ZWM0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlm
b3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3RuZXN0X2J2ZWMyYnZlYzNidmVjNF9mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0bmVzdF9idmVjMmJ2ZWMzYnZl
YzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0bmVzdF9idmVjMmJ2ZWMzYnZlYzRfdmVydC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdG5lc3RfYnZlYzJidmVjM2J2ZWM0X3ZlcnQudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVz
dWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVu
aWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJzdHJ1Y3RfbWF0Ml9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0
X21hdDJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0X21hdDJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInN0cnVjdF9tYXQyX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3Rjb3B5X21hdDJfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdGNvcHlfbWF0Ml9mcmFnLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJzdHJ1Y3Rjb3B5X21hdDJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVj
dGNvcHlfbWF0Ml92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wNDFfdG9fMDQ4
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0XzA0MV90b18wNDguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43Y2M4N2UyZjU3YmM5ZGQwMmQ4MDA3YzI2NTdkMjg0Y2VjMTI5YTU1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF8wNDFfdG9fMDQ4Lmh0bWwKQEAgLTAsMCArMSwy
MzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQu
IERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBzdHJ1Y3RfMDQxX3RvXzA0OC5odG1sPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xl
cy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDog
MTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdM
RVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAg
ICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAor
ICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwK
KyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3RuZXN0
X21hdDJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdG5lc3RfbWF0
Ml9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAg
ICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAi
dHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJzdHJ1Y3RuZXN0X21hdDJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInN0cnVjdG5lc3RfbWF0Ml92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9l
eHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAic3RydWN0X21hdDNfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdF9tYXQzX2ZyYWcudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0Ijogewor
ICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYi
LAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdy
aWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInN0
cnVjdF9tYXQzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3RfbWF0M192
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAic3RydWN0Y29weV9tYXQzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJzdHJ1Y3Rjb3B5X21hdDNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
InVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQi
OiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFs
dWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0
ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAic3RydWN0Y29weV9tYXQzX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJzdHJ1Y3Rjb3B5X21hdDNfdmVydC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQi
OiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9y
bTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAg
ICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInN0
cnVjdG5lc3RfbWF0M19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0
bmVzdF9tYXQzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6
IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAg
ICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAg
ICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAor
ICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogInN0cnVjdG5lc3RfbWF0M192ZXJ0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAic3RydWN0bmVzdF9tYXQzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dHJ1Y3Qvc3RydWN0XzA0OV90b18wNTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfMDQ5
X3RvXzA1Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzNTYzNDBlNGQ0NDRmOTAzYjg4MzdjYjVjZDQ2NWRl
YjQ2YmMwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0XzA0OV90
b18wNTYuaHRtbApAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN0cnVjdF8w
NDlfdG9fMDU2Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxl
PSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWwor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAg
ICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogInN0cnVjdF9tYXQ0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJzdHJ1Y3RfbWF0NF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJzdHJ1Y3RfbWF0NF92ZXJ0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0X21hdDRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAg
ICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAg
ICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4w
LAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInN0cnVjdGNvcHlfbWF0
NF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAic3RydWN0Y29weV9tYXQ0X2Zy
YWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAg
ICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAx
LjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAg
ICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogInN0cnVjdGNvcHlfbWF0NF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5h
bWUiOiAic3RydWN0Y29weV9tYXQ0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50
IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZh
bHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVj
dGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJzdHJ1Y3RuZXN0X21hdDRfZnJhZy5mcmFn
IgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVjdG5lc3RfbWF0NF9mcmFnLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
NGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJzdHJ1Y3RuZXN0X21hdDRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInN0cnVj
dG5lc3RfbWF0NF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMi
OiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAg
ICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAibmVzdGVkc3RydWN0Y29tYl92YXJpb3VzX2ZyYWcuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJuZXN0ZWRzdHJ1Y3Rjb21iX3ZhcmlvdXNfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJy
ZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAi
dW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIm5lc3RlZHN0cnVjdGNvbWJfdmFyaW91c192ZXJ0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAibmVzdGVkc3RydWN0Y29tYl92YXJpb3VzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dHJ1Y3Qvc3RydWN0X2Jvb2xfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9ib29s
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGFmZmQ5NzY3MTYyYTE3NzIyYmVlMmQ5MzJhZTZhNGRj
NTI3NTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9ib29sX2Zy
YWcuZnJhZwpAQCAtMCwwICsxLDMyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwlib29sIGE7CisJYm9vbCBiOworCWJvb2wgYzsKKwli
b29sIGQ7Cit9OworCisKKwordm9pZCBtYWluICh2b2lkKQoreworCXNhYmNkIHMgPSBzYWJjZChi
b29sKDEyKSwgYm9vbCgwKSwgYm9vbCgyNS41KSwgYm9vbCgwLjApKTsKKwlmbG9hdCBncmF5ID0g
MC4wOworCWlmKCAocy5hPT10cnVlKSAmJiAocy5iPT1mYWxzZSkgJiYgKHMuYyA9PSB0cnVlKSAm
JiAocy5kPT1mYWxzZSkpCisJICBncmF5PTEuMDsKKwllbHNlCisgICAgICAgICAgZ3JheSA9MC4w
OworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9ib29sX3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3RfYm9vbF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEzYjgxYjQ2ZDc2ZWJl
YThiNGU1MWYyMmUwMDQwZDlmOTcyMjM2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
cnVjdC9zdHJ1Y3RfYm9vbF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzNSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworCisKK3N0cnVjdCBzYWJjZAoreworCWJvb2wgYTsKKwlib29sIGI7
CisJYm9vbCBjOworCWJvb2wgZDsKK307CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2Fi
Y2QgcyA9IHNhYmNkKGJvb2woMTIpLCBib29sKDApLCBib29sKDI1LjUpLCBib29sKDAuMCkpOwor
CWZsb2F0IGdyYXkgPSAwLjA7CisJaWYoIChzLmE9PXRydWUpICYmIChzLmI9PWZhbHNlKSAmJiAo
cy5jID09IHRydWUpICYmIChzLmQ9PWZhbHNlKSkKKwkgIGdyYXk9MS4wOworCWVsc2UKKyAgICAg
ICAgICBncmF5ID0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X2J2ZWMyYnZlYzNidmVjNF9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X2J2ZWMyYnZlYzNidmVjNF9mcmFnLmZy
YWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWY4YzdjZmI2YWZhMzRkNjJkNTMzYTZkYzFmZThlYTBhMWVhYmE4Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfYnZlYzJidmVjM2J2ZWM0
X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDI5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworI2VuZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwlidmVjMiBhOworCWJ2ZWMzIGI7CisJYnZlYzQg
YzsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QoIGJ2ZWMyKDEy
LCAxMyksIGJ2ZWMzKDE0LjAsIDAuMCwgMTM5LjApLCBidmVjNCgyNS41LCAxNy4wLCAxNDUsIDE2
MyApICk7CisJZmxvYXQgZ3JheSA9IDAuMDsKKwlpZiggKHMuYVswXSkgJiYgKHMuYVsxXSkgJiYg
KHMuYlswXSkgJiYgKCFzLmJbMV0pICYmIChzLmJbMl0pICYmIChzLmNbMF0pICYmIChzLmNbMV0p
ICYmIChzLmNbMl0pICkKKwkgIGdyYXk9MS4wOworCWVsc2UKKyAgICAgICAgICBncmF5ID0wLjA7
CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X2J2ZWMyYnZlYzNidmVjNF92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X2J2ZWMyYnZlYzNidmVjNF92ZXJ0LnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjgyNjEyNDc3ZDBlNGVlYmU2YmFhNjk2YmRmZjk2N2U5NjUyYmRlOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfYnZlYzJidmVjM2J2ZWM0X3ZlcnQudmVy
dApAQCAtMCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitzdHJ1Y3Qg
c2FiY2QKK3sKKwlidmVjMiBhOworCWJ2ZWMzIGI7CisJYnZlYzQgYzsKK307CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QoIGJ2ZWMyKDEyLCAxMyksIGJ2ZWMzKDE0LjAs
IDAuMCwgMTM5LjApLCBidmVjNCgyNS41LCAxNy4wLCAxNDUsIDE2MyApICk7CisJZmxvYXQgZ3Jh
eSA9IDAuMDsKKwlpZiggKHMuYVswXSkgJiYgKHMuYVsxXSkgJiYgKHMuYlswXSkgJiYgKCFzLmJb
MV0pICYmIChzLmJbMl0pICYmIChzLmNbMF0pICYmIChzLmNbMV0pICYmIChzLmNbMl0pICkKKwkg
IGdyYXk9MS4wOworCWVsc2UKKyAgICAgICAgICBncmF5ID0wLjA7CisJY29sb3IgPSB2ZWM0KGdy
YXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qv
c3RydWN0X2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfZmxvYXRfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUwYzI5YmY1NzUwMzk3NGI4YzYyZGViZmJhN2VjMGUyNjMyYTU1
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X2Zsb2F0X2ZyYWcu
ZnJhZwpAQCAtMCwwICsxLDI2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwlmbG9hdCBhOworCWZsb2F0IGI7CisJZmxvYXQgYzsKKwlm
bG9hdCBkOworfTsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2Qo
MS4wLCAyLjAsIDQuMCwgOC4wKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMoKHMuYSArIHMu
YiArIHMuYyArIHMuZCkgLyAxNS4wKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
cnVjdC9zdHJ1Y3RfZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9mbG9h
dF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdhZDhjMGZkZTM3NGFmNTZlMDAyOGU4MTUwZDQxZjYy
ODMwMTljNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfZmxvYXRf
dmVydC52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
KworCitzdHJ1Y3Qgc2FiY2QKK3sKKwlmbG9hdCBhOworCWZsb2F0IGI7CisJZmxvYXQgYzsKKwlm
bG9hdCBkOworfTsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2Qo
MS4wLCAyLjAsIDQuMCwgOC4wKTsKKwljb2xvciA9IHZlYzQodmVjMygocy5hICsgcy5iICsgcy5j
ICsgcy5kKSAvIDE1LjApLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0
L3N0cnVjdF9tYXQyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfbWF0Ml9mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQzYzk0OGY0ZGY1MTIxNjIyYTk1ZjBmYzg3MzMwY2NhNzFhYjdi
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfbWF0Ml9mcmFnLmZy
YWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbG9yOworCitzdHJ1Y3Qgc2FiY2QKK3sKKyBtYXQyIGE7Cit9Owor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJc2FiY2QgcyA9IHNhYmNkKG1hdDIoMTIuMCwgMjkuMCwg
MTMuMCwgMjYuMCkgKTsKKwlnbF9GcmFnQ29sb3IgPSAgdmVjNCggdmVjMyggIChzLmFbMF1bMF0g
KyBzLmFbMF1bMV0gKyBzLmFbMV1bMF0gKyBzLmFbMV1bMV0pIC8gODAuMCAgKSwgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfbWF0Ml92ZXJ0LnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zdHJ1Y3Qvc3RydWN0X21hdDJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyOTg2MzBkMDcy
NTVkMmU0N2Y2YjViYzFkNjliZWEwNjZmZThmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0X21hdDJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjMgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBzYWJjZAoreworIG1hdDIgYTsKK307CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QobWF0MigxMi4wLCAyOS4wLCAxMy4w
LCAyNi4wKSApOworCWNvbG9yID0gdmVjNCggdmVjMyggIChzLmFbMF1bMF0gKyBzLmFbMF1bMV0g
KyBzLmFbMV1bMF0gKyBzLmFbMV1bMV0pIC8gODAuMCAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfbWF0M19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1
Y3Qvc3RydWN0X21hdDNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYWEyMmFhN2I3MzUyZTQzNTc3
NmM0NzFhMWE4MzIwYTRiYzFlNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qv
c3RydWN0X21hdDNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzYgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworc3RydWN0IHNhYmNk
Cit7CisgbWF0MyBhOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXNhYmNkIHMgPSBzYWJj
ZChtYXQzKDEyLjAsIDI5LjAsIDEzLjAsIDI2LjAsIDcxLjAsIDYzLjAsIDkwLjAsIDExOC4wLCAx
MjguMCkgKTsKKwlmbG9hdCBzdW09MC4wOworCWludCBpLGo7CisKKwlzdW0gPSBzdW0gKyBzLmFb
MF1bMF07CisJc3VtID0gc3VtICsgcy5hWzBdWzFdOworCXN1bSA9IHN1bSArIHMuYVswXVsyXTsK
KwlzdW0gPSBzdW0gKyBzLmFbMV1bMF07CisJc3VtID0gc3VtICsgcy5hWzFdWzFdOworCXN1bSA9
IHN1bSArIHMuYVsxXVsyXTsKKwlzdW0gPSBzdW0gKyBzLmFbMl1bMF07CisJc3VtID0gc3VtICsg
cy5hWzJdWzFdOworCXN1bSA9IHN1bSArIHMuYVsyXVsyXTsKKworCWdsX0ZyYWdDb2xvciA9ICB2
ZWM0KCB2ZWMzKCAgc3VtIC8gNTUwLjAgICksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0X21hdDNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9t
YXQzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjg4MGRjMjlkNTVkYjk2NTRlYjBmNmM4M2ExZjA4
YjY4MzYzYmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9tYXQz
X3ZlcnQudmVydApAQCAtMCwwICsxLDM3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
CitzdHJ1Y3Qgc2FiY2QKK3sKKyBtYXQzIGE7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
c2FiY2QgcyA9IHNhYmNkKG1hdDMoMTIuMCwgMjkuMCwgMTMuMCwgMjYuMCwgNzEuMCwgNjMuMCwg
OTAuMCwgMTE4LjAsIDEyOC4wKSApOworCWZsb2F0IHN1bT0wLjA7CisKKwlzdW0gPSBzdW0gKyBz
LmFbMF1bMF07CisJc3VtID0gc3VtICsgcy5hWzBdWzFdOworCXN1bSA9IHN1bSArIHMuYVswXVsy
XTsKKworCXN1bSA9IHN1bSArIHMuYVsxXVswXTsKKwlzdW0gPSBzdW0gKyBzLmFbMV1bMV07CisJ
c3VtID0gc3VtICsgcy5hWzFdWzJdOworCisJc3VtID0gc3VtICsgcy5hWzJdWzBdOworCXN1bSA9
IHN1bSArIHMuYVsyXVsxXTsKKwlzdW0gPSBzdW0gKyBzLmFbMl1bMl07CisKKwljb2xvciA9IHZl
YzQoIHZlYzMoICBzdW0gLyA1NTAuMCAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N0cnVjdC9zdHJ1Y3RfbWF0NF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0
X21hdDRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmYjZmZTE5MTg3ZGMxNjk2N2QyNzU0ZmFkMjgz
ODAyMzkwYWE0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X21h
dDRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworc3RydWN0IHNhYmNkCit7CisgbWF0
NCBhOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXNhYmNkIHMgPSBzYWJjZChtYXQ0KDEy
LjAsIDI5LjAsIDEzLjAsIDI2LjAsCisJCQkgICAgIDcxLjAsIDYzLjAsIDkwLjAsIDExOC4wLAor
CQkJICAgICAxMjguMCwgNDQuMCwgNTcuMCwgMTQzLjAsCisJCQkgICAgIDE1MS4wLCAxNC4wLCAx
NS4wLCAyMS4wICkgKTsKKwlmbG9hdCBzdW09MC4wOworCWludCBpLGo7CisKKwlzdW0gPSBzdW0g
KyBzLmFbMF1bMF07CisJc3VtID0gc3VtICsgcy5hWzBdWzFdOworCXN1bSA9IHN1bSArIHMuYVsw
XVsyXTsKKwlzdW0gPSBzdW0gKyBzLmFbMF1bM107CisJc3VtID0gc3VtICsgcy5hWzFdWzBdOwor
CXN1bSA9IHN1bSArIHMuYVsxXVsxXTsKKwlzdW0gPSBzdW0gKyBzLmFbMV1bMl07CisJc3VtID0g
c3VtICsgcy5hWzFdWzNdOworCXN1bSA9IHN1bSArIHMuYVsyXVswXTsKKwlzdW0gPSBzdW0gKyBz
LmFbMl1bMV07CisJc3VtID0gc3VtICsgcy5hWzJdWzJdOworCXN1bSA9IHN1bSArIHMuYVsyXVsz
XTsKKwlzdW0gPSBzdW0gKyBzLmFbM11bMF07CisJc3VtID0gc3VtICsgcy5hWzNdWzFdOworCXN1
bSA9IHN1bSArIHMuYVszXVsyXTsKKwlzdW0gPSBzdW0gKyBzLmFbM11bM107CisKKwlnbF9GcmFn
Q29sb3IgPSAgdmVjNCggdmVjMyggIHN1bSAvIDk5NS4wICApLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF9tYXQ0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVj
dC9zdHJ1Y3RfbWF0NF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMWRlYTEzMTVhM2JlNTBmMjBk
MjNkMmMxOTBiMzExNDVhMzJkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9z
dHJ1Y3RfbWF0NF92ZXJ0LnZlcnQKQEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKworc3RydWN0IHNhYmNkCit7CisgbWF0NCBhOworfTsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXNhYmNkIHMgPSBzYWJjZChtYXQ0KDEyLjAsIDI5LjAsIDEzLjAsIDI2LjAsCisJ
CQkgICAgIDcxLjAsIDYzLjAsIDkwLjAsIDExOC4wLAorCQkJICAgICAxMjguMCwgNDQuMCwgNTcu
MCwgMTQzLjAsCisJCQkgICAgIDE1MS4wLCAxNC4wLCAxNS4wLCAyMS4wICkgKTsKKwlmbG9hdCBz
dW09MC4wOworCisJc3VtID0gc3VtICsgcy5hWzBdWzBdOworCXN1bSA9IHN1bSArIHMuYVswXVsx
XTsKKwlzdW0gPSBzdW0gKyBzLmFbMF1bMl07CisJc3VtID0gc3VtICsgcy5hWzBdWzNdOworCisJ
c3VtID0gc3VtICsgcy5hWzFdWzBdOworCXN1bSA9IHN1bSArIHMuYVsxXVsxXTsKKwlzdW0gPSBz
dW0gKyBzLmFbMV1bMl07CisJc3VtID0gc3VtICsgcy5hWzFdWzNdOworCisJc3VtID0gc3VtICsg
cy5hWzJdWzBdOworCXN1bSA9IHN1bSArIHMuYVsyXVsxXTsKKwlzdW0gPSBzdW0gKyBzLmFbMl1b
Ml07CisJc3VtID0gc3VtICsgcy5hWzJdWzNdOworCisJc3VtID0gc3VtICsgcy5hWzNdWzBdOwor
CXN1bSA9IHN1bSArIHMuYVszXVsxXTsKKwlzdW0gPSBzdW0gKyBzLmFbM11bMl07CisJc3VtID0g
c3VtICsgcy5hWzNdWzNdOworCisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgc3VtIC8gOTk1LjAgICks
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X3ZlYzJfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF92ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZThlNTQzNjBkYjc4N2Y1MmQxYTgwZDU1MzlhMmI4YmVhMmQ3NDZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF92ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDI0
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3Qgc2FiY2QK
K3sKKwl2ZWMyIGE7CisJdmVjMiBiOworfTsKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2Fi
Y2QgcyA9IHNhYmNkKHZlYzIoMTIuMCwgMjkuMCksIHZlYzIoMTMuMCwgMjYuMCkgKTsKKworCWds
X0ZyYWdDb2xvciA9ICB2ZWM0KCB2ZWMzKCAgKHMuYVswXSArIHMuYVsxXSArIHMuYlswXSArIHMu
YlsxXSkgLyA4MC4wICApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0
cnVjdF92ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfdmVjMl92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjdjNzU4ODc2NzFiNjY2ZTM5ODE2NTcxNDFmOGIzMzlmMGUyMGVlMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfdmVjMl92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworCisKK3N0cnVj
dCBzYWJjZAoreworCXZlYzIgYTsKKwl2ZWMyIGI7Cit9OworCisKKwordm9pZCBtYWluICh2b2lk
KQoreworCXNhYmNkIHMgPSBzYWJjZCh2ZWMyKDEyLjAsIDI5LjApLCB2ZWMyKDEzLjAsIDI2LjAp
ICk7CisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMuYVswXSArIHMuYVsxXSArIHMuYlswXSArIHMu
YlsxXSkgLyA4MC4wICApLCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0
L3N0cnVjdF92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfdmVjM19mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWJhODUxNmE5NDYxMTRkZDk1OWQ2NzM2OTNjNDNhZjI2MjYyZTJl
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfdmVjM19mcmFnLmZy
YWcKQEAgLTAsMCArMSwyNCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
Zgorc3RydWN0IHNhYmNkCit7CisJdmVjMyBhOworCXZlYzMgYjsKK307CisKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXNhYmNkIHMgPSBzYWJjZCh2ZWMzKDEyLjAsIDI5LjAsIDMyLjApLCB2ZWMz
KDEzLjAsIDI2LjAsIDM4LjAgKSApOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggIChz
LmFbMF0gKyBzLmFbMV0gKyBzLmFbMl0gKyBzLmJbMF0gKyBzLmJbMV0gKyBzLmJbMl0pIC8gMTUw
LjAgICksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X3ZlYzNf
dmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF92ZWMzX3ZlcnQudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOWM1YmI1NGMyYTVhOTgxNzFkNjQ3MDYwZGQzYmIwNzliMzdlZGU5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdF92ZWMzX3ZlcnQudmVydApAQCAtMCwwICsx
LDI4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisKKworc3RydWN0IHNhYmNkCit7
CisJdmVjMyBhOworCXZlYzMgYjsKK307CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2Fi
Y2QgcyA9IHNhYmNkKHZlYzMoMTIuMCwgMjkuMCwgMzIuMCksIHZlYzMoMTMuMCwgMjYuMCwgMzgu
MCApICk7CisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMuYVswXSArIHMuYVsxXSArIHMuYVsyXSAr
IHMuYlswXSArIHMuYlsxXSArIHMuYlsyXSkgLyAxNTAuMCAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RfdmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dHJ1Y3Qvc3RydWN0X3ZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMDMxNjg5NTU5ZjFkNWY5
MGU4ZWU2NTY5NmRkN2RmMzA5ODhiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1
Y3Qvc3RydWN0X3ZlYzRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworc3RydWN0IHNh
YmNkCit7CisJdmVjNCBhOworCXZlYzQgYjsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlz
YWJjZCBzID0gc2FiY2QodmVjNCgxMi4wLCAyOS4wLCAzMi4wLCA0Ny4wKSwgdmVjNCgxMy4wLCAy
Ni4wLCAzOC4wLCA1My4wICkgKTsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMuYVsw
XSArIHMuYVsxXSArIHMuYVsyXSArIHMuYVszXSArIHMuYlswXSArIHMuYlsxXSArIHMuYlsyXSAr
IHMuYlszXSkgLyAyNTAuMCAgKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVj
dC9zdHJ1Y3RfdmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X3ZlYzRfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNjZDdkMzcwNDdhZDIzYTEzZjQyNGNlNDY2OTJjMjE0NWVhOTUz
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0X3ZlYzRfdmVydC52
ZXJ0CkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVj
dCBzYWJjZAoreworCXZlYzQgYTsKKwl2ZWM0IGI7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJc2FiY2QgcyA9IHNhYmNkKHZlYzQoMTIuMCwgMjkuMCwgMzIuMCwgNDcuMCksIHZlYzQoMTMu
MCwgMjYuMCwgMzguMCwgNTMuMCApICk7CisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMuYVswXSAr
IHMuYVsxXSArIHMuYVsyXSArIHMuYVszXSArIHMuYlswXSArIHMuYlsxXSArIHMuYlsyXSArIHMu
YlszXSkgLyAyNTAuMCAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVj
dC9zdHJ1Y3Rjb3B5X2Jvb2xfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlf
Ym9vbF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzllMmExMDU0YjFlMGNmOWI3YzY2NzM5NzViNDM2
NmFjNDA2ZTc3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5
X2Jvb2xfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3N0cnVjdCBzYWJjZAoreworCWJvb2wgYTsKKwlib29sIGI7CisJYm9v
bCBjOworCWJvb2wgZDsKK307CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2FiY2QgczEg
PSBzYWJjZChib29sKDEyKSwgYm9vbCgwKSwgYm9vbCgyNS41KSwgYm9vbCgwLjApKTsKKwlzYWJj
ZCBzMiA9IHNhYmNkKGJvb2woMC4wKSwgYm9vbCgwLjApLCBib29sKDAuMCksIGJvb2woMC4wKSk7
CisJczIgPSBzMTsKKwlmbG9hdCBncmF5ID0gMC4wOworCWlmKCAoczIuYT09dHJ1ZSkgJiYgKHMy
LmI9PWZhbHNlKSAmJiAoczIuYyA9PSB0cnVlKSAmJiAoczIuZD09ZmFsc2UpKQorCSAgZ3JheT0x
LjA7CisJZWxzZQorICAgICAgICAgIGdyYXkgPTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdy
YXksZ3JheSxncmF5LDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0
Y29weV9ib29sX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X2Jvb2xfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcxNDlmODg0OGMyNzJlNjAyOTUwMDc4N2UxN2QxMzNhOWJjNzhl
MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9ib29sX3Zl
cnQudmVydApAQCAtMCwwICsxLDM4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisK
Kworc3RydWN0IHNhYmNkCit7CisJYm9vbCBhOworCWJvb2wgYjsKKwlib29sIGM7CisJYm9vbCBk
OworfTsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzMSA9IHNhYmNkKGJvb2wo
MTIpLCBib29sKDApLCBib29sKDI1LjUpLCBib29sKDAuMCkpOworCXNhYmNkIHMyID0gc2FiY2Qo
Ym9vbCgwLjApLCBib29sKDAuMCksIGJvb2woMC4wKSwgYm9vbCgwLjApKTsKKwlzMiA9IHMxOwor
CWZsb2F0IGdyYXkgPSAwLjA7CisJaWYoIChzMi5hPT10cnVlKSAmJiAoczIuYj09ZmFsc2UpICYm
IChzMi5jID09IHRydWUpICYmIChzMi5kPT1mYWxzZSkpCisJICBncmF5PTEuMDsKKwllbHNlCisg
ICAgICAgICAgZ3JheSA9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjAp
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVy
dGV4OworCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9idmVjMmJ2
ZWMzYnZlYzRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfYnZlYzJidmVj
M2J2ZWM0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzBkMzkwYzgxZWM2MjE1YzM3MGQ0OWFhNTgz
NmYwYzk1OGU1NTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNv
cHlfYnZlYzJidmVjM2J2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDMxIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwlidmVjMiBhOwor
CWJ2ZWMzIGI7CisJYnZlYzQgYzsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBz
ID0gc2FiY2QoIGJ2ZWMyKDEyLCAxMyksIGJ2ZWMzKDE0LjAsIDAuMCwgMTM5LjApLCBidmVjNCgy
NS41LCAxNy4wLCAxNDUsIDE2MyApICk7CisJc2FiY2QgczIgPSBzYWJjZCggYnZlYzIoMCwgMCks
IGJ2ZWMzKDAuMCwgMC4wLCAwLjApLCBidmVjNCgwLjAsIDAuMCwgMC4wLCAwLjAgKSApOworCXMy
ID0gczsKKwlmbG9hdCBncmF5ID0gMC4wOworCWlmKCAoczIuYVswXSkgJiYgKHMyLmFbMV0pICYm
IChzMi5iWzBdKSAmJiAoIXMyLmJbMV0pICYmIChzMi5iWzJdKSAmJiAoczIuY1swXSkgJiYgKHMy
LmNbMV0pICYmIChzMi5jWzJdKSApCisJICBncmF5PTEuMDsKKwllbHNlCisgICAgICAgICAgZ3Jh
eSA9MC4wOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfYnZlYzJidmVjM2J2ZWM0
X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X2J2ZWMyYnZlYzNidmVjNF92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRmMzk4MWQwMzFlZDY2YmY1MWEwYWU1NGYyMTAwNDBkM2U2
MzYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X2J2ZWMy
YnZlYzNidmVjNF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKworc3RydWN0IHNhYmNkCit7CisJYnZlYzIgYTsKKwlidmVjMyBiOworCWJ2ZWM0
IGM7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2FiY2QgcyA9IHNhYmNkKCBidmVjMigx
MiwgMTMpLCBidmVjMygxNC4wLCAwLjAsIDEzOS4wKSwgYnZlYzQoMjUuNSwgMTcuMCwgMTQ1LCAx
NjMgKSApOworCXNhYmNkIHMyID0gc2FiY2QoIGJ2ZWMyKDAsIDApLCBidmVjMygwLjAsIDAuMCwg
MC4wKSwgYnZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wICkgKTsKKwlzMiA9IHM7CisJZmxvYXQgZ3Jh
eSA9IDAuMDsKKwlpZiggKHMyLmFbMF0pICYmIChzMi5hWzFdKSAmJiAoczIuYlswXSkgJiYgKCFz
Mi5iWzFdKSAmJiAoczIuYlsyXSkgJiYgKHMyLmNbMF0pICYmIChzMi5jWzFdKSAmJiAoczIuY1sy
XSkgJiYgKHMyLmNbM10pICkKKwkgIGdyYXk9MS4wOworCWVsc2UKKyAgICAgICAgICBncmF5ID0w
LjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9mbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0Y29weV9mbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzNGQzOGU0
ODhmNWUwNmMwZTU5MTBhNDk5Y2ZhZGFhN2Q3ZjVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X2Zsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDI4IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwlm
bG9hdCBhOworCWZsb2F0IGI7CisJZmxvYXQgYzsKKwlmbG9hdCBkOworfTsKKworCisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QoMS4wLCAyLjAsIDQuMCwgOC4wKTsKKwlz
YWJjZCBzMiA9IHNhYmNkKDAuMCwgMC4wLCAwLjAsIDAuMCk7CisJczIgPSBzOworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoKHMuYSArIHMuYiArIHMuYyArIHMuZCkgLyAxNS4wLCAoczIuYSArIHMyLmIg
KyBzMi5jICsgczIuZCkgLyAxNS4wLCAxLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0Y29weV9mbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3Ry
dWN0Y29weV9mbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFmMmM3YWZlNzNjM2JjOWNjNWU3
NDUxOGMzNjYzZjI0NDZhNDM3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9z
dHJ1Y3Rjb3B5X2Zsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDMyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCisKKworc3RydWN0IHNhYmNkCit7CisJZmxvYXQgYTsKKwlmbG9hdCBi
OworCWZsb2F0IGM7CisJZmxvYXQgZDsKK307CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
c2FiY2QgcyA9IHNhYmNkKDEuMCwgMi4wLCA0LjAsIDguMCk7CisJc2FiY2QgczIgPSBzYWJjZCgw
LjAsIDAuMCwgMC4wLCAwLjApOworCXMyID0gczsKKwljb2xvciA9IHZlYzQoKHMuYSArIHMuYiAr
IHMuYyArIHMuZCkgLyAxNS4wLCAoczIuYSArIHMyLmIgKyBzMi5jICsgczIuZCkgLyAxNS4wLCAx
LjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9t
YXQyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDJfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4ZGU5OWQ5OWJiNDk5OGY3NDNhMjlkZmY2YjBiNmNkNzA2YWM1YzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9tYXQyX2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBzYWJjZAoreworIG1hdDIgYTsKK307CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QobWF0MigxMi4wLCAyOS4wLCAx
My4wLCAyNi4wKSApOworCXNhYmNkIHMyID0gc2FiY2QobWF0MigwLjAsIDAuMCwgMC4wLCAwLjAp
ICk7CisJczIgPSBzOworCWdsX0ZyYWdDb2xvciA9ICB2ZWM0KCB2ZWMzKCAgKHMyLmFbMF1bMF0g
KyBzMi5hWzBdWzFdICsgczIuYVsxXVswXSArIHMyLmFbMV1bMV0pIC8gODAuMCAgKSwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDJfdmVydC52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfbWF0Ml92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWY3MjIyMTc4YThiY2RhYTQ3MDNhMWM0YjA5Y2ExYjZmYzE1Nzk2OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDJfdmVydC52ZXJ0CkBAIC0wLDAgKzEs
MjUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBzYWJjZAoreworIG1h
dDIgYTsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QobWF0Migx
Mi4wLCAyOS4wLCAxMy4wLCAyNi4wKSApOworCXNhYmNkIHMyID0gc2FiY2QobWF0MigwLjAsIDAu
MCwgMC4wLCAwLjApICk7CisJczIgPSBzOworCWNvbG9yID0gdmVjNCggdmVjMyggIChzMi5hWzBd
WzBdICsgczIuYVswXVsxXSArIHMyLmFbMV1bMF0gKyBzMi5hWzFdWzFdKSAvIDgwLjAgICksIDEu
MCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9tYXQzX2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDNfZnJhZy5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlN2M1NGYyZTJlNzg2OTBhNzRlNDk3NWZmNTNlYWM4YTVhYjEwOWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9tYXQzX2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDM4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBzYWJjZAoreworIG1hdDMgYTsKK307CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QobWF0MygxMi4wLCAyOS4wLCAxMy4wLCAy
Ni4wLCA3MS4wLCA2My4wLCA5MC4wLCAxMTguMCwgMTI4LjApICk7CisJc2FiY2QgczIgPSBzYWJj
ZChtYXQzKDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApICk7CisJ
czIgPSBzOworCWZsb2F0IHN1bT0wLjA7CisJaW50IGksajsKKworCXN1bSA9IHN1bSArIHMyLmFb
MF1bMF07CisJc3VtID0gc3VtICsgczIuYVswXVsxXTsKKwlzdW0gPSBzdW0gKyBzMi5hWzBdWzJd
OworCXN1bSA9IHN1bSArIHMyLmFbMV1bMF07CisJc3VtID0gc3VtICsgczIuYVsxXVsxXTsKKwlz
dW0gPSBzdW0gKyBzMi5hWzFdWzJdOworCXN1bSA9IHN1bSArIHMyLmFbMl1bMF07CisJc3VtID0g
c3VtICsgczIuYVsyXVsxXTsKKwlzdW0gPSBzdW0gKyBzMi5hWzJdWzJdOworCisJZ2xfRnJhZ0Nv
bG9yID0gIHZlYzQoIHZlYzMoICBzdW0gLyA1NTAuMCAgKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3Ry
dWN0L3N0cnVjdGNvcHlfbWF0M192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzNmRjNzVlYmM4MmNm
N2E1NmYzNTY2ZGQxMTkyMGQwYzI0ZDcwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
cnVjdC9zdHJ1Y3Rjb3B5X21hdDNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBzYWJjZAoreworIG1hdDMgYTsKK307CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QobWF0MygxMi4wLCAyOS4wLCAxMy4w
LCAyNi4wLCA3MS4wLCA2My4wLCA5MC4wLCAxMTguMCwgMTI4LjApICk7CisJc2FiY2QgczIgPSBz
YWJjZChtYXQzKDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApICk7
CisJczIgPSBzOworCWZsb2F0IHN1bT0wLjA7CisKKwlzdW0gPSBzdW0gKyBzMi5hWzBdWzBdOwor
CXN1bSA9IHN1bSArIHMyLmFbMF1bMV07CisJc3VtID0gc3VtICsgczIuYVswXVsyXTsKKworCXN1
bSA9IHN1bSArIHMyLmFbMV1bMF07CisJc3VtID0gc3VtICsgczIuYVsxXVsxXTsKKwlzdW0gPSBz
dW0gKyBzMi5hWzFdWzJdOworCisJc3VtID0gc3VtICsgczIuYVsyXVswXTsKKwlzdW0gPSBzdW0g
KyBzMi5hWzJdWzFdOworCXN1bSA9IHN1bSArIHMyLmFbMl1bMl07CisKKwljb2xvciA9IHZlYzQo
IHZlYzMoICBzdW0gLyA1NTAuMCAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3Rjb3B5X21hdDRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVj
dGNvcHlfbWF0NF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIzYzkyNWZhOTE0NmFhOTRhNzY0YmVl
NDczMWQ2ODYwMDA0MWRhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1
Y3Rjb3B5X21hdDRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNTEgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKworc3RydWN0IHNhYmNk
Cit7CisgbWF0NCBhOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXNhYmNkIHMgPSBzYWJj
ZChtYXQ0KDEyLjAsIDI5LjAsIDEzLjAsIDI2LjAsCisJCQkgICAgIDcxLjAsIDYzLjAsIDkwLjAs
IDExOC4wLAorCQkJICAgICAxMjguMCwgNDQuMCwgNTcuMCwgMTQzLjAsCisJCQkgICAgIDE1MS4w
LCAxNC4wLCAxNS4wLCAyMS4wICkgKTsKKwlzYWJjZCBzMiA9IHNhYmNkKG1hdDQoMC4wLCAwLjAs
IDAuMCwgMC4wLAorCQkJICAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgIDAuMCwgMC4w
LCAwLjAsIDAuMCwKKwkJCSAgICAgMC4wLCAwLjAsIDAuMCwgMC4wICkgKTsKKwlzMiA9IHM7CisJ
ZmxvYXQgc3VtPTAuMDsKKwlpbnQgaSxqOworCisJc3VtID0gc3VtICsgczIuYVswXVswXTsKKwlz
dW0gPSBzdW0gKyBzMi5hWzBdWzFdOworCXN1bSA9IHN1bSArIHMyLmFbMF1bMl07CisJc3VtID0g
c3VtICsgczIuYVswXVszXTsKKwlzdW0gPSBzdW0gKyBzMi5hWzFdWzBdOworCXN1bSA9IHN1bSAr
IHMyLmFbMV1bMV07CisJc3VtID0gc3VtICsgczIuYVsxXVsyXTsKKwlzdW0gPSBzdW0gKyBzMi5h
WzFdWzNdOworCXN1bSA9IHN1bSArIHMyLmFbMl1bMF07CisJc3VtID0gc3VtICsgczIuYVsyXVsx
XTsKKwlzdW0gPSBzdW0gKyBzMi5hWzJdWzJdOworCXN1bSA9IHN1bSArIHMyLmFbMl1bM107CisJ
c3VtID0gc3VtICsgczIuYVszXVswXTsKKwlzdW0gPSBzdW0gKyBzMi5hWzNdWzFdOworCXN1bSA9
IHN1bSArIHMyLmFbM11bMl07CisJc3VtID0gc3VtICsgczIuYVszXVszXTsKKworCWdsX0ZyYWdD
b2xvciA9ICB2ZWM0KCB2ZWMzKCAgc3VtIC8gOTk1LjAgICksIDEuMCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV9tYXQ0X3ZlcnQudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0
cnVjdC9zdHJ1Y3Rjb3B5X21hdDRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkYjVhODg5ZmQwODRl
NmYyODU2ZTBjNmNkZGIwNDI1YTNiYjhhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dHJ1Y3Qvc3RydWN0Y29weV9tYXQ0X3ZlcnQudmVydApAQCAtMCwwICsxLDUzIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCitzdHJ1Y3Qgc2FiY2QKK3sKKyBtYXQ0IGE7Cit9OworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJc2FiY2QgcyA9IHNhYmNkKG1hdDQoMTIuMCwgMjkuMCwgMTMu
MCwgMjYuMCwKKwkJCSAgICAgNzEuMCwgNjMuMCwgOTAuMCwgMTE4LjAsCisJCQkgICAgIDEyOC4w
LCA0NC4wLCA1Ny4wLCAxNDMuMCwKKwkJCSAgICAgMTUxLjAsIDE0LjAsIDE1LjAsIDIxLjAgKSAp
OworCXNhYmNkIHMyID0gc2FiY2QobWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsCisJCQkgICAgIDAu
MCwgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorCQkJICAgICAw
LjAsIDAuMCwgMC4wLCAwLjAgKSApOworCXMyID0gczsKKwlmbG9hdCBzdW09MC4wOworCisJc3Vt
ID0gc3VtICsgczIuYVswXVswXTsKKwlzdW0gPSBzdW0gKyBzMi5hWzBdWzFdOworCXN1bSA9IHN1
bSArIHMyLmFbMF1bMl07CisJc3VtID0gc3VtICsgczIuYVswXVszXTsKKworCXN1bSA9IHN1bSAr
IHMyLmFbMV1bMF07CisJc3VtID0gc3VtICsgczIuYVsxXVsxXTsKKwlzdW0gPSBzdW0gKyBzMi5h
WzFdWzJdOworCXN1bSA9IHN1bSArIHMyLmFbMV1bM107CisKKwlzdW0gPSBzdW0gKyBzMi5hWzJd
WzBdOworCXN1bSA9IHN1bSArIHMyLmFbMl1bMV07CisJc3VtID0gc3VtICsgczIuYVsyXVsyXTsK
KwlzdW0gPSBzdW0gKyBzMi5hWzJdWzNdOworCisJc3VtID0gc3VtICsgczIuYVszXVswXTsKKwlz
dW0gPSBzdW0gKyBzMi5hWzNdWzFdOworCXN1bSA9IHN1bSArIHMyLmFbM11bMl07CisJc3VtID0g
c3VtICsgczIuYVszXVszXTsKKworCWNvbG9yID0gdmVjNCggdmVjMyggIHN1bSAvIDk5NS4wICAp
LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfdmVj
Ml9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV92ZWMyX2ZyYWcuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YWNhZWFhMjNmN2QwY2Q2OTExNDIzMTc1ZGM5ZWI3M2E0NjkzMzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfdmVjMl9mcmFnLmZyYWcK
QEAgLTAsMCArMSwyNSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
c3RydWN0IHNhYmNkCit7CisJdmVjMiBhOworCXZlYzIgYjsKK307CisKKwordm9pZCBtYWluICh2
b2lkKQoreworCXNhYmNkIHMxID0gc2FiY2QodmVjMigxMi4wLCAyOS4wKSwgdmVjMigxMy4wLCAy
Ni4wKSApOworCXNhYmNkIHMyID0gc2FiY2QodmVjMigwLjAsIDAuMCksIHZlYzIoMC4wLCAwLjAp
ICk7CisJczIgPSBzMTsKKwlnbF9GcmFnQ29sb3IgPSAgdmVjNCggdmVjMyggIChzMi5hWzBdICsg
czIuYVsxXSArIHMyLmJbMF0gKyBzMi5iWzFdKSAvIDgwLjAgICksIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV92ZWMyX3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3Rjb3B5X3ZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZjdkZTViNWUx
MjQ5NjQyZDg1MTY1NTdkYTJlOThkOTJkYjY3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0Y29weV92ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDMwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OwordmFyeWluZyB2ZWM0IGNvbG9yOworCisKKworc3RydWN0IHNhYmNkCit7CisJdmVjMiBhOwor
CXZlYzIgYjsKK307CisKKworCit2b2lkIG1haW4gKHZvaWQpCit7CisJc2FiY2QgczEgPSBzYWJj
ZCh2ZWMyKDEyLjAsIDI5LjApLCB2ZWMyKDEzLjAsIDI2LjApICk7CisJc2FiY2QgczIgPSBzYWJj
ZCh2ZWMyKDAuMCwgMC4wKSwgdmVjMigwLjAsIDAuMCkgKTsKKwlzMiA9IHMxOworCWNvbG9yID0g
dmVjNCggdmVjMyggIChzMi5hWzBdICsgczIuYVsxXSArIHMyLmJbMF0gKyBzMi5iWzFdKSAvIDgw
LjAgICksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29w
eV92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X3ZlYzNfZnJhZy5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkM2YxMmNjYjE3ZDM1YTUxYWFlMDE3NjBhOTcwYzlhNDU0YzY2Y2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV92ZWMzX2ZyYWcu
ZnJhZwpAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCitzdHJ1Y3Qgc2FiY2QKK3sKKwl2ZWMzIGE7CisJdmVjMyBiOworfTsKKworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJc2FiY2QgcyA9IHNhYmNkKHZlYzMoMTIuMCwgMjkuMCwgMzIuMCksIHZl
YzMoMTMuMCwgMjYuMCwgMzguMCApICk7CisJc2FiY2QgczIgPSBzYWJjZCh2ZWMzKDAuMCwgMC4w
LCAwLjApLCB2ZWMzKDAuMCwgMC4wLCAwLjAgKSApOworCXMyID0gczsKKwlnbF9GcmFnQ29sb3Ig
PSB2ZWM0KCB2ZWMzKCAgKHMyLmFbMF0gKyBzMi5hWzFdICsgczIuYVsyXSArIHMyLmJbMF0gKyBz
Mi5iWzFdICsgczIuYlsyXSkgLyAxNTAuMCAgKSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X3ZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0
cnVjdGNvcHlfdmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVkZGViZTJjYWIxZWZhNTMyMDIw
MTE5NzE0NjE4MWJiOTkwNTIxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9z
dHJ1Y3Rjb3B5X3ZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKKworCitzdHJ1Y3Qgc2FiY2QKK3sKKwl2ZWMzIGE7CisJdmVjMyBiOwor
fTsKKworCisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlzYWJjZCBzMSA9IHNhYmNkKHZlYzMoMTIu
MCwgMjkuMCwgMzIuMCksIHZlYzMoMTMuMCwgMjYuMCwgMzguMCApICk7CisJc2FiY2QgczIgPSBz
YWJjZCh2ZWMzKDAuMCwgMC4wLCAwLjApLCB2ZWMzKDAuMCwgMC4wLCAwLjAgKSApOworCXMyID0g
czE7CisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMyLmFbMF0gKyBzMi5hWzFdICsgczIuYVsyXSAr
IHMyLmJbMF0gKyBzMi5iWzFdICsgczIuYlsyXSkgLyAxNTAuMCAgKSwgMS4wKTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X3ZlYzRfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfdmVjNF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYwMmU2
Y2Q2MTlhZGYxNDgyZDQ0YmE0ZjhiNDA2NjEwMjY4YjBiNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N0cnVjdC9zdHJ1Y3Rjb3B5X3ZlYzRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjYgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKKworc3RydWN0IHNhYmNkCit7CisJdmVjNCBhOworCXZlYzQgYjsKK307CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QodmVjNCgxMi4wLCAyOS4wLCAzMi4wLCA0Ny4w
KSwgdmVjNCgxMy4wLCAyNi4wLCAzOC4wLCA1My4wICkgKTsKKwlzYWJjZCBzMiA9IHNhYmNkKHZl
YzQoMC4wLCAwLjAsIDAuMCwgMC4wKSwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjAgKSApOworCXMy
ID0gczsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMyLmFbMF0gKyBzMi5hWzFdICsg
czIuYVsyXSArIHMyLmFbM10gKyBzMi5iWzBdICsgczIuYlsxXSArIHMyLmJbMl0gKyBzMi5iWzNd
KSAvIDI1MC4wICApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVj
dGNvcHlfdmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0Y29weV92ZWM0X3Zl
cnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjMwNTI0ZWQyY2UxOTUxZmZiOTcwMjViZjg4MDI4MDc2OGQ2
NzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdGNvcHlfdmVjNF92
ZXJ0LnZlcnQKQEAgLTAsMCArMSwyNiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
c3RydWN0IHNhYmNkCit7CisJdmVjNCBhOworCXZlYzQgYjsKK307CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlzYWJjZCBzID0gc2FiY2QodmVjNCgxMi4wLCAyOS4wLCAzMi4wLCA0Ny4wKSwgdmVj
NCgxMy4wLCAyNi4wLCAzOC4wLCA1My4wICkgKTsKKwlzYWJjZCBzMiA9IHNhYmNkKHZlYzQoMC4w
LCAwLjAsIDAuMCwgMC4wKSwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjAgKSApOworCXMyID0gczsK
Kwljb2xvciA9IHZlYzQoIHZlYzMoICAoczIuYVswXSArIHMyLmFbMV0gKyBzMi5hWzJdICsgczIu
YVszXSArIHMyLmJbMF0gKyBzMi5iWzFdICsgczIuYlsyXSArIHMyLmJbM10pIC8gMjUwLjAgICks
IDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9ib29s
X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X2Jvb2xfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc0YzMwZTUxMDMwZTRjMDY2MDQyNmJjNDJkMTBkY2I5ZjZmZjQzNTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9ib29sX2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDM4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitz
dHJ1Y3QgbmVzdGIKK3sKKwlib29sIGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwlib29sIGE7
CisJbmVzdGIgbmVzdF9iOworfTsKKworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbmVzdCBzID0gbmVzdChuZXN0YShib29sKDEuMCks
IG5lc3RiKGJvb2woMC4wKSkpKTsKKwlmbG9hdCBncmF5ID0gMC4wOworCisJaWYoIChzLm5lc3Rf
YS5hID09IHRydWUpICYmIChzLm5lc3RfYS5uZXN0X2IuYiA9PSBmYWxzZSkpCisJICBncmF5PTEu
MDsKKwllbHNlCisgICAgICAgICAgZ3JheSA9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3Jh
eSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1
Y3RuZXN0X2Jvb2xfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfYm9vbF92
ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmYzJjZjcyMjE0ZjkwYzBmMTUyN2RmZGM1M2EwYmJkYjA0
MGE1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X2Jvb2xf
dmVydC52ZXJ0CkBAIC0wLDAgKzEsNDEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3N0cnVjdCBuZXN0YgoreworCWJvb2wgYjsKK307CisKK3N0cnVjdCBuZXN0YQoreworCWJvb2wg
YTsKKwluZXN0YiBuZXN0X2I7Cit9OworCitzdHJ1Y3QgbmVzdAoreworCW5lc3RhIG5lc3RfYTsK
K307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwluZXN0IHMgPSBuZXN0KG5lc3RhKGJvb2woMS4w
KSwgbmVzdGIoYm9vbCgwLjApKSkpOworCWZsb2F0IGdyYXkgPSAwLjA7CisKKwlpZiggKHMubmVz
dF9hLmEgPT0gdHJ1ZSkgJiYgKHMubmVzdF9hLm5lc3RfYi5iID09IGZhbHNlKSkKKwkgIGdyYXk9
MS4wOworCWVsc2UKKyAgICAgICAgICBncmF5ID0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXksIGdy
YXksIGdyYXksIDEuMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1
Y3RuZXN0X2J2ZWMyYnZlYzNidmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0
bmVzdF9idmVjMmJ2ZWMzYnZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NTE1ZGJkMmY3OGY0
YzJiZGJiMTA5MWE1Nzg1NjJmNmRiYTA4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
dHJ1Y3Qvc3RydWN0bmVzdF9idmVjMmJ2ZWMzYnZlYzRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNTQg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworc3RydWN0IG5lc3RiCit7CisJYnZlYzIgYTI7CisJYnZlYzMgYjI7CisJYnZlYzQg
YzI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwlidmVjMiBhMTsKKwlidmVjMyBiMTsKKwlidmVj
NCBjMTsKKwluZXN0YiBuZXN0X2I7Cit9OworCitzdHJ1Y3QgbmVzdAoreworCW5lc3RhIG5lc3Rf
YTsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwluZXN0IHMgPSBuZXN0KCBuZXN0YSggYnZl
YzIoMTIsIDEzKSwgYnZlYzMoMTQuMCwgMC4wLCAxMzkuMCksIGJ2ZWM0KDI1LjUsIDE3LjAsIDE0
NSwgMTYzICksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RiKCBidmVjMigyOCwgMCksIGJ2
ZWMzKDAuMCwgMC4wLCAxLjApLCBidmVjNCgwLjAsIDE3LjAsIDE0NSwgMCApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgICApOworCWZsb2F0IGdyYXkgPSAwLjA7CisJaWYoICggcy5uZXN0X2Eu
YTFbMF0gKSAmJiAoIHMubmVzdF9hLmExWzFdICkgJiYKKyAgICAgICAgICAgICggcy5uZXN0X2Eu
YjFbMF0gKSAmJiAoISAocy5uZXN0X2EuYjFbMV0pICkgJiYgKCBzLm5lc3RfYS5iMVsyXSApICYm
CisgICAgICAgICAgICAoIHMubmVzdF9hLmMxWzBdICkgJiYgKCBzLm5lc3RfYS5jMVsxXSApICYm
ICggcy5uZXN0X2EuYzFbMl0gKSAmJiAoIHMubmVzdF9hLmMxWzNdICkgJiYKKyAgICAgICAgICAg
ICggcy5uZXN0X2EubmVzdF9iLmEyWzBdICkgJiYgKCAhKCBzLm5lc3RfYS5uZXN0X2IuYTJbMV0g
KSApICYmCisgICAgICAgICAgICAoISAoIHMubmVzdF9hLm5lc3RfYi5iMlswXSApICkgJiYgKCEg
KCBzLm5lc3RfYS5uZXN0X2IuYjJbMV0gKSApICYmIChzLm5lc3RfYS5uZXN0X2IuYjJbMl0pICYm
CisgICAgICAgICAgICAoISAoIHMubmVzdF9hLm5lc3RfYi5jMlswXSApICkgJiYgKHMubmVzdF9h
Lm5lc3RfYi5jMlsxXSkgJiYgKHMubmVzdF9hLm5lc3RfYi5jMlsyXSkgJiYgKCEgKCBzLm5lc3Rf
YS5uZXN0X2IuYzJbM10gKSApCisgICAgICAgICAgKQorCSAgZ3JheT0xLjA7CisJZWxzZQorICAg
ICAgICAgIGdyYXkgPTAuMDsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3Jh
eSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X2J2ZWMy
YnZlYzNidmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9idmVjMmJ2
ZWMzYnZlYzRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwY2ExMGZjMDgyMDdmNGUzMDExM2NhOWM1
OWY1OWYyNjBiOWZlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0
bmVzdF9idmVjMmJ2ZWMzYnZlYzRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNTcgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBuZXN0YgoreworCWJ2ZWMyIGEyOworCWJ2ZWMz
IGIyOworCWJ2ZWM0IGMyOworfTsKKworc3RydWN0IG5lc3RhCit7CisJYnZlYzIgYTE7CisJYnZl
YzMgYjE7CisJYnZlYzQgYzE7CisJbmVzdGIgbmVzdF9iOworfTsKKworc3RydWN0IG5lc3QKK3sK
KwluZXN0YSBuZXN0X2E7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7CisKKwluZXN0IHMgPSBu
ZXN0KCBuZXN0YSggYnZlYzIoMTIsIDEzKSwgYnZlYzMoMTQuMCwgMC4wLCAxMzkuMCksIGJ2ZWM0
KDI1LjUsIDE3LjAsIDE0NSwgMTYzICksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RiKCBi
dmVjMigyOCwgMCksIGJ2ZWMzKDAuMCwgMC4wLCAxLjApLCBidmVjNCgwLjAsIDE3LjAsIDE0NSwg
MCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICApOworCisJZmxvYXQgZ3JheSA9IDAuMDsK
KworCWlmKCAoIHMubmVzdF9hLmExWzBdICkgJiYgKCBzLm5lc3RfYS5hMVsxXSApICYmCisgICAg
ICAgICAgICAoIHMubmVzdF9hLmIxWzBdICkgJiYgKCEgKHMubmVzdF9hLmIxWzFdKSApICYmICgg
cy5uZXN0X2EuYjFbMl0gKSAmJgorICAgICAgICAgICAgKCBzLm5lc3RfYS5jMVswXSApICYmICgg
cy5uZXN0X2EuYzFbMV0gKSAmJiAoIHMubmVzdF9hLmMxWzJdICkgJiYgKCBzLm5lc3RfYS5jMVsz
XSApICYmCisgICAgICAgICAgICAoIHMubmVzdF9hLm5lc3RfYi5hMlswXSApICYmICggISggcy5u
ZXN0X2EubmVzdF9iLmEyWzFdICkgKSAmJgorICAgICAgICAgICAgKCEgKCBzLm5lc3RfYS5uZXN0
X2IuYjJbMF0gKSApICYmICghICggcy5uZXN0X2EubmVzdF9iLmIyWzFdICkgKSAmJiAocy5uZXN0
X2EubmVzdF9iLmIyWzJdKSAmJgorICAgICAgICAgICAgKCEgKCBzLm5lc3RfYS5uZXN0X2IuYzJb
MF0gKSApICYmIChzLm5lc3RfYS5uZXN0X2IuYzJbMV0pICYmIChzLm5lc3RfYS5uZXN0X2IuYzJb
Ml0pICYmICghICggcy5uZXN0X2EubmVzdF9iLmMyWzNdICkgKQorICAgICAgICAgICkKKwkgIGdy
YXk9MS4wOworCWVsc2UKKyAgICAgICAgICBncmF5ID0wLjA7CisJY29sb3IgPSB2ZWM0KGdyYXks
IGdyYXksIGdyYXksIDEuMCk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9z
dHJ1Y3RuZXN0X2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X2Zs
b2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTE0MTkzYWExMGEyYmRhMDY4NDYxM2U5Y2I4ODlj
ZGU4ODE1MDdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3Rf
ZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3N0cnVjdCBuZXN0YgoreworCWZsb2F0IGI7Cit9OworCitzdHJ1Y3Qg
bmVzdGEKK3sKKwlmbG9hdCBhOworCW5lc3RiIG5lc3RfYjsKK307CisKK3N0cnVjdCBuZXN0Cit7
CisJbmVzdGEgbmVzdF9hOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW5lc3QgcyA9IG5l
c3QobmVzdGEoMS4wLCBuZXN0YigyLjApKSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMzKChz
Lm5lc3RfYS5hICsgcy5uZXN0X2EubmVzdF9iLmIpIC8gMy4wKSwgMS4wKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X2Zsb2F0X3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3RuZXN0X2Zsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODQzNmVhMjEy
ZGI3OGEyNzU0ODgwYWVkNTJmZWY3YTJlNTEyMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3RydWN0L3N0cnVjdG5lc3RfZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMzQgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3N0cnVjdCBuZXN0YgoreworCWZsb2F0IGI7Cit9
OworCitzdHJ1Y3QgbmVzdGEKK3sKKwlmbG9hdCBhOworCW5lc3RiIG5lc3RfYjsKK307CisKK3N0
cnVjdCBuZXN0Cit7CisJbmVzdGEgbmVzdF9hOworfTsKKwordm9pZCBtYWluICh2b2lkKQorewor
CW5lc3QgcyA9IG5lc3QobmVzdGEoMS4wLCBuZXN0YigyLjApKSk7CisJY29sb3IgPSB2ZWM0KHZl
YzMoKHMubmVzdF9hLmEgKyBzLm5lc3RfYS5uZXN0X2IuYikgLyAzLjApLCAxLjApOworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfbWF0Ml9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjE2
MTc1MjcxMDhjZTAwZjkzZGViMTNlZjk0NGQxMzAxM2U4OTBmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfbWF0Ml9mcmFnLmZyYWcKQEAgLTAsMCArMSwzNCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorc3RydWN0IG5lc3RiCit7
CisJbWF0MiBiOworfTsKKworc3RydWN0IG5lc3RhCit7CisJbWF0MiBhOworCW5lc3RiIG5lc3Rf
YjsKK307CisKK3N0cnVjdCBuZXN0Cit7CisJbmVzdGEgbmVzdF9hOworfTsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCW5lc3QgcyA9IG5lc3QobmVzdGEoIG1hdDIoMTEsIDEzLCAyOSwgMzMpLCBu
ZXN0YiggbWF0MigxMiwgMTksIDc5LCA4MSkgKSApICk7CisKKworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoIHZlYzMoICAocy5uZXN0X2EuYVswXVswXSArIHMubmVzdF9hLmFbMF1bMV0gKyBzLm5lc3Rf
YS5hWzFdWzBdICsgcy5uZXN0X2EuYVsxXVsxXSArIHMubmVzdF9hLm5lc3RfYi5iWzBdWzBdICsg
cy5uZXN0X2EubmVzdF9iLmJbMF1bMV0gKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVswXSArIHMubmVz
dF9hLm5lc3RfYi5iWzFdWzFdICkgLyAyNzcuMCApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfbWF0Ml92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qv
c3RydWN0bmVzdF9tYXQyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWFlOTIyMzZkZjFkOTFiODdl
ZjA3MGQ4MGRhZmFjN2U0MTFiMDI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0
L3N0cnVjdG5lc3RfbWF0Ml92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzNCBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKworc3RydWN0IG5lc3RiCit7CisJbWF0MiBiOworfTsKKworc3RydWN0
IG5lc3RhCit7CisJbWF0MiBhOworCW5lc3RiIG5lc3RfYjsKK307CisKK3N0cnVjdCBuZXN0Cit7
CisJbmVzdGEgbmVzdF9hOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW5lc3QgcyA9IG5l
c3QobmVzdGEoIG1hdDIoMTEsIDEzLCAyOSwgMzMpLCBuZXN0YiggbWF0MigxMiwgMTksIDc5LCA4
MSkgKSApICk7CisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMubmVzdF9hLmFbMF1bMF0gKyBzLm5l
c3RfYS5hWzBdWzFdICsgcy5uZXN0X2EuYVsxXVswXSArIHMubmVzdF9hLmFbMV1bMV0gKyBzLm5l
c3RfYS5uZXN0X2IuYlswXVswXSArIHMubmVzdF9hLm5lc3RfYi5iWzBdWzFdICsgcy5uZXN0X2Eu
bmVzdF9iLmJbMV1bMF0gKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsxXSApIC8gMjc3LjAgKSwgMS4w
KTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X21hdDNfZnJh
Zy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfbWF0M19mcmFnLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDA3OTgxNDk5YzZhYWRmYjA0ZWI5MmNkYTkyYThjZGQ2NGU2OTFjNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X21hdDNfZnJhZy5mcmFnCkBAIC0w
LDAgKzEsNjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3N0cnVj
dCBuZXN0YgoreworCW1hdDMgYjsKK307CisKK3N0cnVjdCBuZXN0YQoreworCW1hdDMgYTsKKwlu
ZXN0YiBuZXN0X2I7Cit9OworCitzdHJ1Y3QgbmVzdAoreworCW5lc3RhIG5lc3RfYTsKK307CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwluZXN0IHMgPSBuZXN0KG5lc3RhKCBtYXQzKDExLCAxMywg
MjksIDMzLCA2MywgMTMsIDQ5LCA1NywgNzEpLCBuZXN0YiggbWF0MygxMiwgMTksIDc5LCA4MSwg
MzUsIDUxLCA3MywgNjYsIDIzKSApICkgKTsKKwlmbG9hdCBzdW0xPTAuMCxzdW0yPTAuMDsKKwlp
bnQgaSxqOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzBdOworCXN1bTIgPSBzdW0y
ICsgcy5uZXN0X2EubmVzdF9iLmJbMF1bMF07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFb
MF1bMV07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlswXVsxXTsKKworCXN1bTEg
PSBzdW0xICsgcy5uZXN0X2EuYVswXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3Rf
Yi5iWzBdWzJdOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzFdWzBdOworCXN1bTIgPSBz
dW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMV1bMF07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9h
LmFbMV1bMV07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsxXTsKKworCXN1
bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsxXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5l
c3RfYi5iWzFdWzJdOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzJdWzBdOworCXN1bTIg
PSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMl1bMF07CisKKwlzdW0xID0gc3VtMSArIHMubmVz
dF9hLmFbMl1bMV07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsyXVsxXTsKKwor
CXN1bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9h
Lm5lc3RfYi5iWzJdWzJdOworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggKCBzdW0xICsg
c3VtMiApLyA3NzguMCApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0
cnVjdG5lc3RfbWF0M192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQz
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODcwODAxYjdkNmY1MjJmZTUzYjhlNzRiNzViYzRhYWUx
MTIxYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfbWF0
M192ZXJ0LnZlcnQKQEAgLTAsMCArMSw1NyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kworc3RydWN0IG5lc3RiCit7CisJbWF0MyBiOworfTsKKworc3RydWN0IG5lc3RhCit7CisJbWF0
MyBhOworCW5lc3RiIG5lc3RfYjsKK307CisKK3N0cnVjdCBuZXN0Cit7CisJbmVzdGEgbmVzdF9h
OworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW5lc3QgcyA9IG5lc3QobmVzdGEoIG1hdDMo
MTEsIDEzLCAyOSwgMzMsIDYzLCAxMywgNDksIDU3LCA3MSksIG5lc3RiKCBtYXQzKDEyLCAxOSwg
NzksIDgxLCAzNSwgNTEsIDczLCA2NiwgMjMpICkgKSApOworCWZsb2F0IHN1bTE9MC4wLHN1bTI9
MC4wOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzBdOworCXN1bTIgPSBzdW0yICsg
cy5uZXN0X2EubmVzdF9iLmJbMF1bMF07CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzFd
OworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMF1bMV07CisJc3VtMSA9IHN1bTEg
KyBzLm5lc3RfYS5hWzBdWzJdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMF1b
Ml07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bMF07CisJc3VtMiA9IHN1bTIgKyBz
Lm5lc3RfYS5uZXN0X2IuYlsxXVswXTsKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bMV07
CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsxXTsKKwlzdW0xID0gc3VtMSAr
IHMubmVzdF9hLmFbMV1bMl07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsy
XTsKKworCXN1bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVswXTsKKwlzdW0yID0gc3VtMiArIHMu
bmVzdF9hLm5lc3RfYi5iWzJdWzBdOworCXN1bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVsxXTsK
KwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzFdOworCXN1bTEgPSBzdW0xICsg
cy5uZXN0X2EuYVsyXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzJd
OworCisJY29sb3IgPSB2ZWM0KCB2ZWMzKCAoIHN1bTEgKyBzdW0yICkvIDc3OC4wICksIDEuMCk7
CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0
ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQ0X2ZyYWcu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X21hdDRfZnJhZy5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0N2I4YzViYTRlMzY2NGJlZGI2OWM0ZjY5MjMwZTViNTQzZTcxYjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQ0X2ZyYWcuZnJhZwpAQCAtMCww
ICsxLDgzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3Qg
bmVzdGIKK3sKKwltYXQ0IGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwltYXQ0IGE7CisJbmVz
dGIgbmVzdF9iOworfTsKKworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9OworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJbmVzdCBzID0gbmVzdChuZXN0YSggbWF0NCgxMSwgMTMsIDI5
LCAzMywgNjMsIDEzLCA0OSwgNTcsIDcxLCA0NywgOTEsIDEwMSwgMTY3LCAyMSwgMzksIDQxKSwg
bmVzdGIoIG1hdDQoMTIsIDE5LCA3OSwgODEsIDM1LCA1MSwgNzMsIDY2LCAyMywgMTM0LCAxMjEs
IDE1NiwgNzYsIDIzLCAyNCwgNzgpICkgKSApOworCWZsb2F0IHN1bTE9MC4wLHN1bTI9MC4wOwor
CWludCBpLGo7CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMF1bMF07CisJc3VtMiA9IHN1
bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlswXVswXTsKKworCXN1bTEgPSBzdW0xICsgcy5uZXN0X2Eu
YVswXVsxXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzBdWzFdOworCisJc3Vt
MSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzJdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVz
dF9iLmJbMF1bMl07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMF1bM107CisJc3VtMiA9
IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlswXVszXTsKKworCXN1bTEgPSBzdW0xICsgcy5uZXN0
X2EuYVsxXVswXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzFdWzBdOworCisJ
c3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzFdWzFdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2Eu
bmVzdF9iLmJbMV1bMV07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bMl07CisJc3Vt
MiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsyXTsKKworCXN1bTEgPSBzdW0xICsgcy5u
ZXN0X2EuYVsxXVszXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzFdWzNdOwor
CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzJdWzBdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0
X2EubmVzdF9iLmJbMl1bMF07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMl1bMV07CisJ
c3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsyXVsxXTsKKworCXN1bTEgPSBzdW0xICsg
cy5uZXN0X2EuYVsyXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzJd
OworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzJdWzNdOworCXN1bTIgPSBzdW0yICsgcy5u
ZXN0X2EubmVzdF9iLmJbMl1bM107CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbM11bMF07
CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlszXVswXTsKKworCXN1bTEgPSBzdW0x
ICsgcy5uZXN0X2EuYVszXVsxXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzNd
WzFdOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzNdWzJdOworCXN1bTIgPSBzdW0yICsg
cy5uZXN0X2EubmVzdF9iLmJbM11bMl07CisKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbM11b
M107CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlszXVszXTsKKworCWdsX0ZyYWdD
b2xvciA9IHZlYzQoIHZlYzMoICggc3VtMSArIHN1bTIgKS8gMTg5Ny4wICksIDEuMCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQ0X3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X21hdDRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YmQ0
YTIxZDAwMmJmNjBiNjBmMzE3OThhOTFjODY3NGE2NDYzMjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF9tYXQ0X3ZlcnQudmVydApAQCAtMCwwICsxLDcyIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitzdHJ1Y3QgbmVzdGIKK3sKKwltYXQ0IGI7
Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwltYXQ0IGE7CisJbmVzdGIgbmVzdF9iOworfTsKKwor
c3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJbmVzdCBzID0gbmVzdChuZXN0YSggbWF0NCgxMSwgMTMsIDI5LCAzMywgNjMsIDEzLCA0OSwg
NTcsIDcxLCA0NywgOTEsIDEwMSwgMTY3LCAyMSwgMzksIDQxKSwgbmVzdGIoIG1hdDQoMTIsIDE5
LCA3OSwgODEsIDM1LCA1MSwgNzMsIDY2LCAyMywgMTM0LCAxMjEsIDE1NiwgNzYsIDIzLCAyNCwg
NzgpICkgKSApOworCWZsb2F0IHN1bTE9MC4wLHN1bTI9MC4wOworCisJc3VtMSA9IHN1bTEgKyBz
Lm5lc3RfYS5hWzBdWzBdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMF1bMF07
CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzFdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0
X2EubmVzdF9iLmJbMF1bMV07CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzBdWzJdOworCXN1
bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMF1bMl07CisJc3VtMSA9IHN1bTEgKyBzLm5l
c3RfYS5hWzBdWzNdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbMF1bM107CisK
KwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bMF07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3Rf
YS5uZXN0X2IuYlsxXVswXTsKKwlzdW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bMV07CisJc3Vt
MiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsxXTsKKwlzdW0xID0gc3VtMSArIHMubmVz
dF9hLmFbMV1bMl07CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5uZXN0X2IuYlsxXVsyXTsKKwlz
dW0xID0gc3VtMSArIHMubmVzdF9hLmFbMV1bM107CisJc3VtMiA9IHN1bTIgKyBzLm5lc3RfYS5u
ZXN0X2IuYlsxXVszXTsKKworCXN1bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVswXTsKKwlzdW0y
ID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzBdOworCXN1bTEgPSBzdW0xICsgcy5uZXN0
X2EuYVsyXVsxXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzFdOworCXN1
bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVsyXTsKKwlzdW0yID0gc3VtMiArIHMubmVzdF9hLm5l
c3RfYi5iWzJdWzJdOworCXN1bTEgPSBzdW0xICsgcy5uZXN0X2EuYVsyXVszXTsKKwlzdW0yID0g
c3VtMiArIHMubmVzdF9hLm5lc3RfYi5iWzJdWzNdOworCisJc3VtMSA9IHN1bTEgKyBzLm5lc3Rf
YS5hWzNdWzBdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbM11bMF07CisJc3Vt
MSA9IHN1bTEgKyBzLm5lc3RfYS5hWzNdWzFdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVz
dF9iLmJbM11bMV07CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5hWzNdWzJdOworCXN1bTIgPSBz
dW0yICsgcy5uZXN0X2EubmVzdF9iLmJbM11bMl07CisJc3VtMSA9IHN1bTEgKyBzLm5lc3RfYS5h
WzNdWzNdOworCXN1bTIgPSBzdW0yICsgcy5uZXN0X2EubmVzdF9iLmJbM11bM107CisKKwljb2xv
ciA9IHZlYzQoIHZlYzMoICggc3VtMSArIHN1bTIgKS8gMTg5Ny4wICksIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMyX2ZyYWcuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X3ZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1OTkx
MWZlYzlmNmEwZjJmZWNiZGE4ZWRkOTk5NTYwNWIzMjdiOWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDMzIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3QgbmVzdGIKK3sK
Kwl2ZWMyIGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwl2ZWMyIGE7CisJbmVzdGIgbmVzdF9i
OworfTsKKworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9OworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJbmVzdCBzID0gbmVzdChuZXN0YSh2ZWMyKDExLCAxMyksIG5lc3RiKHZlYzIo
MTIsIDE5KSApICkgKTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoICAocy5uZXN0X2Eu
YVswXSArIHMubmVzdF9hLmFbMV0gKyBzLm5lc3RfYS5uZXN0X2IuYlswXSArIHMubmVzdF9hLm5l
c3RfYi5iWzFdICkgLyA1NS4wICksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1
Y3Qvc3RydWN0bmVzdF92ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0
X3ZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YTZiZmQ4OGNjZThjMGViOGQzNGI4MWRhODI4
NzY0NjJhYmM0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVz
dF92ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDM0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCitzdHJ1Y3QgbmVzdGIKK3sKKwl2ZWMyIGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sK
Kwl2ZWMyIGE7CisJbmVzdGIgbmVzdF9iOworfTsKKworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBu
ZXN0X2E7Cit9OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbmVzdCBzID0gbmVzdChuZXN0YSh2
ZWMyKDExLCAxMyksIG5lc3RiKHZlYzIoMTIsIDE5KSApICkgKTsKKwljb2xvciA9IHZlYzQoIHZl
YzMoICAocy5uZXN0X2EuYVswXSArIHMubmVzdF9hLmFbMV0gKyBzLm5lc3RfYS5uZXN0X2IuYlsw
XSArIHMubmVzdF9hLm5lc3RfYi5iWzFdICkgLyA1NS4wICksIDEuMCk7CisJZ2xfUG9zaXRpb24g
PSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N0cnVjdC9zdHJ1Y3RuZXN0X3ZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNjUwYWMyY2Ew
NzQ4MGE1ZGJhZDY1YTQzOTliZmE5NDk1ZGFiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDMyIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCitzdHJ1Y3QgbmVzdGIKK3sKKwl2ZWMz
IGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwl2ZWMzIGE7CisJbmVzdGIgbmVzdF9iOworfTsK
Kworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9OworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJbmVzdCBzID0gbmVzdChuZXN0YSh2ZWMzKDExLCAxMywgMTcpLCBuZXN0Yih2ZWMzKDEy
LCAxOSwgMjkpICkgKSApOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoICAocy5uZXN0X2Eu
YVswXSArIHMubmVzdF9hLmFbMV0gKyBzLm5lc3RfYS5hWzJdICsgcy5uZXN0X2EubmVzdF9iLmJb
MF0gKyBzLm5lc3RfYS5uZXN0X2IuYlsxXSArIHMubmVzdF9hLm5lc3RfYi5iWzJdKSAvIDEwMS4w
ICksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMz
X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X3ZlYzNfdmVydC52ZXJ0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZkOTI0NzYzOWQ2ZWJlMGM1ZDM0MzlkYjMzNTE0ZjAzZTk4ZTE3NWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVzdF92ZWMzX3ZlcnQudmVydApA
QCAtMCwwICsxLDM0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCitzdHJ1Y3QgbmVz
dGIKK3sKKwl2ZWMzIGI7Cit9OworCitzdHJ1Y3QgbmVzdGEKK3sKKwl2ZWMzIGE7CisJbmVzdGIg
bmVzdF9iOworfTsKKworc3RydWN0IG5lc3QKK3sKKwluZXN0YSBuZXN0X2E7Cit9OworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJbmVzdCBzID0gbmVzdChuZXN0YSh2ZWMzKDExLCAxMywgMTcpLCBu
ZXN0Yih2ZWMzKDEyLCAxOSwgMjkpICkgKSApOworCWNvbG9yID0gdmVjNCggdmVjMyggIChzLm5l
c3RfYS5hWzBdICsgcy5uZXN0X2EuYVsxXSArIHMubmVzdF9hLmFbMl0gKyBzLm5lc3RfYS5uZXN0
X2IuYlswXSArIHMubmVzdF9hLm5lc3RfYi5iWzFdICsgcy5uZXN0X2EubmVzdF9iLmJbMl0pIC8g
MTAxLjAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3Ru
ZXN0X3ZlYzRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5lc3RfdmVjNF9mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmRkNTk1NDI0YjIwZGU5NGZiNmI0NmJmMThkOTNiZmE3YWE2ODUy
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N0cnVjdC9zdHJ1Y3RuZXN0X3ZlYzRfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsMzIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3N0cnVjdCBuZXN0YgoreworCXZlYzQgYjsKK307CisKK3N0cnVjdCBuZXN0YQorewor
CXZlYzQgYTsKKwluZXN0YiBuZXN0X2I7Cit9OworCitzdHJ1Y3QgbmVzdAoreworCW5lc3RhIG5l
c3RfYTsKK307CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwluZXN0IHMgPSBuZXN0KG5lc3RhKHZl
YzQoMTEsIDEzLCAxNywgMzEpLCBuZXN0Yih2ZWM0KDEyLCAxOSwgMjksIDY5KSApICkgKTsKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAgKHMubmVzdF9hLmFbMF0gKyBzLm5lc3RfYS5hWzFd
ICsgcy5uZXN0X2EuYVsyXSArIHMubmVzdF9hLmFbM10gKyBzLm5lc3RfYS5uZXN0X2IuYlswXSAr
IHMubmVzdF9hLm5lc3RfYi5iWzFdICsgcy5uZXN0X2EubmVzdF9iLmJbMl0gKyBzLm5lc3RfYS5u
ZXN0X2IuYlszXSkgLyAyMDEuMCApLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3Ry
dWN0L3N0cnVjdG5lc3RfdmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zdHJ1Y3Qvc3RydWN0bmVz
dF92ZWM0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmZhZDA5YTgzOTM3ZWMwNDVkMjhmZWRkODA5
NGExOGMyM2U5ZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3RydWN0L3N0cnVjdG5l
c3RfdmVjNF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzNCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKworc3RydWN0IG5lc3RiCit7CisJdmVjNCBiOworfTsKKworc3RydWN0IG5lc3RhCit7
CisJdmVjNCBhOworCW5lc3RiIG5lc3RfYjsKK307CisKK3N0cnVjdCBuZXN0Cit7CisJbmVzdGEg
bmVzdF9hOworfTsKKwordm9pZCBtYWluICh2b2lkKQoreworCW5lc3QgcyA9IG5lc3QobmVzdGEo
dmVjNCgxMSwgMTMsIDE3LCAzMSksIG5lc3RiKHZlYzQoMTIsIDE5LCAyOSwgNjkpICkgKSApOwor
CWNvbG9yID0gdmVjNCggdmVjMyggIChzLm5lc3RfYS5hWzBdICsgcy5uZXN0X2EuYVsxXSArIHMu
bmVzdF9hLmFbMl0gKyBzLm5lc3RfYS5hWzNdICsgcy5uZXN0X2EubmVzdF9iLmJbMF0gKyBzLm5l
c3RfYS5uZXN0X2IuYlsxXSArIHMubmVzdF9hLm5lc3RfYi5iWzJdICsgcy5uZXN0X2EubmVzdF9i
LmJbM10pIC8gMjAxLjAgKSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL2lucHV0LnJ1bi50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTFmZTQ1NTY2YWE2M2UxODk0NjVlOTQwOWM5YzcxNzg0NzY0MzliMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEs
MTYgQEAKKyMgdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK3N3aXp6
bGVyc18wMDFfdG9fMDA4Lmh0bWwKK3N3aXp6bGVyc18wMDlfdG9fMDE2Lmh0bWwKK3N3aXp6bGVy
c18wMTdfdG9fMDI0Lmh0bWwKK3N3aXp6bGVyc18wMjVfdG9fMDMyLmh0bWwKK3N3aXp6bGVyc18w
MzNfdG9fMDQwLmh0bWwKK3N3aXp6bGVyc18wNDFfdG9fMDQ4Lmh0bWwKK3N3aXp6bGVyc18wNDlf
dG9fMDU2Lmh0bWwKK3N3aXp6bGVyc18wNTdfdG9fMDY0Lmh0bWwKK3N3aXp6bGVyc18wNjVfdG9f
MDcyLmh0bWwKK3N3aXp6bGVyc18wNzNfdG9fMDgwLmh0bWwKK3N3aXp6bGVyc18wODFfdG9fMDg4
Lmh0bWwKK3N3aXp6bGVyc18wODlfdG9fMDk2Lmh0bWwKK3N3aXp6bGVyc18wOTdfdG9fMTA0Lmh0
bWwKK3N3aXp6bGVyc18xMDVfdG9fMTEyLmh0bWwKK3N3aXp6bGVyc18xMTNfdG9fMTIwLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDAxX3RvXzAwOC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzMzMWM2YTZjYmY1YzBhNmJjODVjNzI1YmJhOGMwNGJhNDYzYTkyMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDAxX3RvXzAwOC5odG1sCkBAIC0w
LDAgKzEsMTM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogc3dpenpsZXJzXzAwMV90b18wMDguaHRt
bDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4
OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3h5endfMXZlYzRfZnJhZy5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfeHl6d18xdmVjNF9mcmFnLnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRfeHl6d18xdmVjNF92
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF94eXp3XzF2ZWM0X3ZlcnQudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfend4eV8xdmVjNF9mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF96d3h5XzF2ZWM0X2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF96d3h5XzF2ZWM0
X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3p3eHlfMXZlYzRfdmVydC50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF95eHd6XzF2ZWM0X2Zy
YWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3l4d3pfMXZlYzRfZnJhZy50
ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X3l4d3pfMXZl
YzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfeXh3el8xdmVjNF92ZXJ0
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3d4enlfMXZlYzRf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfd3h6eV8xdmVjNF9mcmFn
LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgewor
ICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRfd3h6eV8x
dmVjNF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF93eHp5XzF2ZWM0X3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzAwOV90b18wMTYuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDA5X3RvXzAxNi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc0Njc3ZWE5NjkzZmZlZmY2MTI1Y2JhOWJmNTdlNjE3MjE1MTA1OWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzAwOV90b18wMTYuaHRtbApAQCAtMCww
ICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN3aXp6bGVyc18wMDlfdG9fMDE2Lmh0bWw8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsg
aGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFBy
b2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZl
cnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF94eXpfd18xdmVjM18xZmxvYXRf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfeHl6X3dfMXZlYzNfMWZs
b2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3Jp
ZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVj
NF94eXpfd18xdmVjM18xZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzRfeHl6X3dfMXZlYzNfMWZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogInZlYzRfend4X3lfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibmFtZSI6ICJ2ZWM0X3p3eF95XzF2ZWMzXzFmbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRfend4X3lfMXZlYzNfMWZsb2F0X3Zl
cnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3p3eF95XzF2ZWMzXzFmbG9hdF92
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3l4d196XzF2
ZWMzXzFmbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF95eHdf
el8xdmVjM18xZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJ2ZWM0X3l4d196XzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAidmVjNF95eHdfel8xdmVjM18xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF93eHpfeV8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfd3h6X3lfMXZlYzNfMWZsb2F0X2ZyYWcudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAi
dGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF93eHpfeV8xdmVj
M18xZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfd3h6X3lfMXZl
YzNfMWZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzAxN190
b18wMjQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDE3X3RvXzAyNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxMmM0NGVhNDgwMTM4NTE1Mjg4NTc3MWMwM2NkMGI1NzQ0ZDQwNDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzAxN190b18wMjQu
aHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN3aXp6bGVyc18wMTdf
dG9fMDI0Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3
aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF94eV96d18y
dmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF94eV96d18ydmVj
Ml9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRf
eHlfendfMnZlYzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfeHlfendf
MnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF96
eF93eV8ydmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF96eF93
eV8ydmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAg
IH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjog
ImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
InZlYzRfenhfd3lfMnZlYzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRf
enhfd3lfMnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
dmVjNF95eF93el8ydmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVj
NF95eF93el8ydmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInZlYzRfeXhfd3pfMnZlYzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InZlYzRfeXhfd3pfMnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAidmVjNF93eF96eV8ydmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAidmVjNF93eF96eV8ydmVjMl9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogInZlYzRfd3hfenlfMnZlYzJfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInZlYzRfd3hfenlfMnZlYzJfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9z
d2l6emxlcnNfMDI1X3RvXzAzMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18w
MjVfdG9fMDMyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkNjFmOGY2MWQ5MGQ3ZTYwM2VkNGYwMWExMmMz
YWYxNjUwMDJiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxl
cnNfMDI1X3RvXzAzMi5odG1sCkBAIC0wLDAgKzEsMTM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDog
c3dpenpsZXJzXzAyNV90b18wMzIuaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3Rz
LmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9
IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAi
dGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJ2ZWM0X3hfeV96X3dfNGZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWM0X3hfeV96X3dfNGZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAidmVjNF94X3lfel93XzRmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAidmVjNF94X3lfel93XzRmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzX3h5el8xdmVjM19mcmFnLmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAidmVjM194eXpfMXZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzX3h5el8xdmVjM192ZXJ0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm5hbWUiOiAidmVjM194eXpfMXZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAidmVjM195eHpfMXZlYzNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInZlYzNfeXh6XzF2ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM195eHpfMXZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInZlYzNfeXh6XzF2ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogInZlYzNfenl4XzF2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJ2ZWMzX3p5eF8xdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogInZlYzNfenl4XzF2ZWMzX3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJ2ZWMzX3p5eF8xdmVjM192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3N3aXp6bGVyc18wMzNfdG9fMDQwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJz
XzAzM190b18wNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzUyNTg0YmZkYzFmYzM0ZTY5ZjM5M2JlNDdh
NTM3MWJlZDdjNDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6
bGVyc18wMzNfdG9fMDQwLmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0
OiBzd2l6emxlcnNfMDMzX3RvXzA0MC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVz
dHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdo
dD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7Cisg
ICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogInZlYzNfeHlfel8xdmVjMl8xZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInZlYzNfeHlfel8xdmVjMl8xZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzX3h5X3pfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX3h5X3pfMXZlYzJfMWZsb2F0X3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzNfeHpfeV8xdmVjMl8xZmxvYXRf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfeHpfeV8xdmVjMl8xZmxv
YXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlk
IiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMz
X3h6X3lfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMz
X3h6X3lfMXZlYzJfMWZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInZlYzNfeXpfeF8xdmVjMl8xZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInZlYzNfeXpfeF8xdmVjMl8xZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzX3l6X3hfMXZlYzJfMWZsb2F0X3ZlcnQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX3l6X3hfMXZlYzJfMWZsb2F0X3ZlcnQudGVz
dC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAg
ICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzNfenhfeV8xdmVjMl8xZmxv
YXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfenhfeV8xdmVjMl8x
ZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJn
cmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2
ZWMzX3p4X3lfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2
ZWMzX3p4X3lfMXZlYzJfMWZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjog
ImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dp
enpsZXJzXzA0MV90b18wNDguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDQx
X3RvXzA0OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNmFlNmUxM2IxYzQ1MTFhZmI3NzQyMGNjN2UxNjM2
MDdkNzhhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJz
XzA0MV90b18wNDguaHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
IHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN3
aXp6bGVyc18wNDFfdG9fMDQ4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5j
c3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRl
c3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
dmVjNF9yZ2JhXzF2ZWM0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0
X3JnYmFfMXZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJ2ZWM0X3JnYmFfMXZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzRfcmdiYV8xdmVjNF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJ2ZWM0X2JhcmdfMXZlYzRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzRfYmFyZ18xdmVjNF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInZlYzRfYmFyZ18xdmVjNF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
dmVjNF9iYXJnXzF2ZWM0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogInZlYzRfZ3JhYl8xdmVjNF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
dmVjNF9ncmFiXzF2ZWM0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBh
cmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAidmVjNF9ncmFiXzF2ZWM0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWM0X2dyYWJfMXZlYzRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAidmVjNF9hcmJnXzF2ZWM0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWM0X2FyYmdfMXZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJ2ZWM0X2FyYmdfMXZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1l
IjogInZlYzRfYXJiZ18xdmVjNF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6
bGVyc18wNDlfdG9fMDU2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzA0OV90
b18wNTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBjNWZiNDc3NTUyMzllYzllOWI5NTBjNmQ5MzllNTJj
ZDdkMzdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18w
NDlfdG9fMDU2Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBzd2l6
emxlcnNfMDQ5X3RvXzA1Ni5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3Nz
IiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAw
IiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0
cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZl
YzRfcmdiX2FfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWM0X3JnYl9hXzF2ZWMzXzFmbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogInZlYzRfcmdiX2FfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3JnYl9hXzF2ZWMzXzFmbG9hdF92ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X2Jhcl9nXzF2ZWMzXzFmbG9hdF9m
cmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9iYXJfZ18xdmVjM18xZmxv
YXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlk
IiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0
X2Jhcl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVj
NF9iYXJfZ18xdmVjM18xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAi
Y29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAidmVjNF9ncmFfYl8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInZlYzRfZ3JhX2JfMXZlYzNfMWZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAg
ICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNl
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9ncmFfYl8xdmVjM18xZmxvYXRfdmVy
dC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfZ3JhX2JfMXZlYzNfMWZsb2F0X3Zl
cnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAg
ICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfYXJiX2dfMXZl
YzNfMWZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2FyYl9n
XzF2ZWMzXzFmbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogInZlYzRfYXJiX2dfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJ2ZWM0X2FyYl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAi
cGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3N3aXp6bGVyc18wNTdfdG9fMDY0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dp
enpsZXJzXzA1N190b18wNjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDE4MjUwMDA3YjkxNzU4NWZiODYy
MGEzNjJiNmU4NGE4MDI3YjhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3N3aXp6bGVyc18wNTdfdG9fMDY0Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4K
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5j
ZSB0ZXN0OiBzd2l6emxlcnNfMDU3X3RvXzA2NC5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2ds
ZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAi
IGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1
bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50
U2hhZGVyIjogInZlYzRfcmdfYmFfMnZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInZlYzRfcmdfYmFfMnZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAg
InZlcnRleFNoYWRlciI6ICJ2ZWM0X3JnX2JhXzJ2ZWMyX3ZlcnQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibmFtZSI6ICJ2ZWM0X3JnX2JhXzJ2ZWMyX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogInZlYzRfYnJfYWdfMnZlYzJfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInZlYzRfYnJfYWdfMnZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBh
dHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X2JyX2FnXzJ2ZWMyX3ZlcnQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibmFtZSI6ICJ2ZWM0X2JyX2FnXzJ2ZWMyX3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfZ3JfYWJfMnZlYzJfZnJhZy5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInZlYzRfZ3JfYWJfMnZlYzJfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X2dyX2FiXzJ2ZWMyX3ZlcnQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2dyX2FiXzJ2ZWMyX3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfYXJfYmdfMnZlYzJfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfYXJfYmdfMnZlYzJfZnJhZy50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZl
cmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X2FyX2JnXzJ2ZWMyX3ZlcnQu
dmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X2FyX2JnXzJ2ZWMyX3ZlcnQudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzA2NV90b18wNzIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy9zd2l6emxlcnNfMDY1X3RvXzA3Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZDgwZDQw
MDkyYTBiODllNTFmNjdhZTE4ODBmYmIwNWRkNjA4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzA2NV90b18wNzIuaHRtbApAQCAtMCwwICsxLDEzNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8g
Tk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBH
TFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN3aXp6bGVyc18wNjVfdG9fMDcyLmh0bWw8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAx
NnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xF
U1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF9yX2dfYl9hXzRmbG9hdF9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9yX2dfYl9hXzRmbG9hdF9mcmFnLnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRfcl9nX2JfYV80ZmxvYXRf
dmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfcl9nX2JfYV80ZmxvYXRfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM19yZ2JfMXZlYzNf
ZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfcmdiXzF2ZWMzX2ZyYWcu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM19yZ2JfMXZl
YzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfcmdiXzF2ZWMzX3ZlcnQu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVm
YXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzNfZ3JiXzF2ZWMzX2Zy
YWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX2dyYl8xdmVjM19mcmFnLnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzNfZ3JiXzF2ZWMz
X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX2dyYl8xdmVjM192ZXJ0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzX2Jncl8xdmVjM19mcmFn
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19iZ3JfMXZlYzNfZnJhZy50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzX2Jncl8xdmVjM192
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19iZ3JfMXZlYzNfdmVydC50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDczX3RvXzA4MC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3N3aXp6bGVyc18wNzNfdG9fMDgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyM2Vm
NmYxOWQyZmQ1YTViM2JjNTkxMGQ2NjJiMGUzNzZmM2ExMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDczX3RvXzA4MC5odG1sCkBAIC0wLDAgKzEsMTM1
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBE
TyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IEdMU0wgY29uZm9ybWFuY2UgdGVzdDogc3dpenpsZXJzXzA3M190b18wODAuaHRtbDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2ds
ZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6
IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5H
TEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzX3JnX2JfMXZlYzJfMWZsb2F0X2ZyYWcuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX3JnX2JfMXZlYzJfMWZsb2F0X2ZyYWcu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM19yZ19iXzF2
ZWMyXzFmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19yZ19iXzF2
ZWMyXzFmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2
ZWMzX3JiX2dfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWMzX3JiX2dfMXZlYzJfMWZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM19yYl9nXzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAidmVjM19yYl9nXzF2ZWMyXzFmbG9hdF92ZXJ0LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzX2diX3JfMXZlYzJfMWZsb2F0X2ZyYWcu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX2diX3JfMXZlYzJfMWZsb2F0X2Zy
YWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisg
ICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM19nYl9y
XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19nYl9y
XzF2ZWMyXzFmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJ2ZWMzX2JyX2dfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFt
ZSI6ICJ2ZWMzX2JyX2dfMXZlYzJfMWZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjM19icl9nXzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAg
ICB9LAorICAgICAgIm5hbWUiOiAidmVjM19icl9nXzF2ZWMyXzFmbG9hdF92ZXJ0LnRlc3QuaHRt
bCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18wODFfdG9fMDg4Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvc3dpenpsZXJzXzA4MV90b18wODguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWQ4ODhjOGQ2
NDM3YWI1NzY4MWIwNzc4NWE4YzQzZGRlY2IyNWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3N3aXp6bGVyc18wODFfdG9fMDg4Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5P
VCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xT
TCBjb25mb3JtYW5jZSB0ZXN0OiBzd2l6emxlcnNfMDgxX3RvXzA4OC5odG1sPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lkdGg6IDE2cHg7IGhlaWdodDogMTZw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworT3BlbkdMRVNU
ZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfc3RwcV8xdmVjNF9mcmFnLmZyYWciCisgICAgICB9
LAorICAgICAgIm5hbWUiOiAidmVjNF9zdHBxXzF2ZWM0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9zdHBxXzF2ZWM0X3ZlcnQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3N0cHFfMXZlYzRfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjNF9wcXN0XzF2ZWM0X2ZyYWcuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3Bxc3RfMXZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X3Bxc3RfMXZlYzRfdmVydC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfcHFzdF8xdmVjNF92ZXJ0LnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3RzcXBfMXZlYzRfZnJhZy5mcmFnIgorICAg
ICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfdHNxcF8xdmVjNF9mcmFnLnRlc3QuaHRtbCIsCisg
ICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5j
ZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRfdHNxcF8xdmVjNF92ZXJ0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF90c3FwXzF2ZWM0X3ZlcnQudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFt
IjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfcXNwdF8xdmVjNF9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9xc3B0XzF2ZWM0X2ZyYWcudGVzdC5odG1sIiwK
KyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJl
bmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
ZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9xc3B0XzF2ZWM0X3ZlcnQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3FzcHRfMXZlYzRfdmVydC50ZXN0Lmh0bWwi
LAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30pOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDg5X3RvXzA5Ni5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3N3aXp6bGVyc18wODlfdG9fMDk2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRhMTZiYTdkNzRk
YmI5ZGEyMGFhOTIzODEzMGM0NjE0ZWYwOWZhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy9zd2l6emxlcnNfMDg5X3RvXzA5Ni5odG1sCkBAIC0wLDAgKzEsMTM1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1Qg
RURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wg
Y29uZm9ybWFuY2UgdGVzdDogc3dpenpsZXJzXzA4OV90b18wOTYuaHRtbDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVz
dFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dy
YW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQi
LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisg
ICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAg
ICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAg
ICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3N0cF9xXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9zdHBfcV8xdmVjM18xZmxvYXRfZnJhZy50ZXN0
Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAg
ICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X3N0cF9xXzF2ZWMz
XzFmbG9hdF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9zdHBfcV8xdmVj
M18xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVj
NF9wcXNfdF8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InZlYzRfcHFzX3RfMXZlYzNfMWZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0s
CisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9wcXNfdF8xdmVjM18xZmxvYXRfdmVydC52ZXJ0IiwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInZlYzRfcHFzX3RfMXZlYzNfMWZsb2F0X3ZlcnQudGVzdC5odG1s
IiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVm
ZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfdHNxX3BfMXZlYzNfMWZsb2F0X2Zy
YWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3RzcV9wXzF2ZWMzXzFmbG9h
dF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisg
ICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQi
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzRf
dHNxX3BfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0
X3RzcV9wXzF2ZWMzXzFmbG9hdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICJ2ZWM0X3FzcF90XzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAidmVjNF9xc3BfdF8xdmVjM18xZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X3FzcF90XzF2ZWMzXzFmbG9hdF92ZXJ0
LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9xc3BfdF8xdmVjM18xZmxvYXRfdmVy
dC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9CisgIF0KK30p
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDk3X3RvXzEwNC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18wOTdfdG9fMTA0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2QyOWZjYTRiOTAyODE5Nzc4OGQ1ZjNlMWZkZjg0YzA5YjM0MzEwYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMDk3X3RvXzEwNC5odG1sCkBAIC0wLDAg
KzEsMTM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkLiBETyBOT1QgRURJVC4gLS0+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIEdMU0wgY29uZm9ybWFuY2UgdGVzdDogc3dpenpsZXJzXzA5N190b18xMDQuaHRtbDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBo
ZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJl
ZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3N0X3BxXzJ2ZWMyX2ZyYWcuZnJh
ZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3N0X3BxXzJ2ZWMyX2ZyYWcudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2Rl
ZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVz
dFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9zdF9wcV8ydmVjMl92
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9zdF9wcV8ydmVjMl92ZXJ0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1
bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3BzX3F0XzJ2ZWMyX2Zy
YWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3BzX3F0XzJ2ZWMyX2ZyYWcu
dGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7Cisg
ICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAg
ICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF9wc19xdF8y
dmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9wc19xdF8ydmVjMl92
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3RzX3FwXzJ2
ZWMyX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3RzX3FwXzJ2ZWMy
X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIs
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVjNF90
c19xcF8ydmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF90c19xcF8y
dmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVs
bCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWM0X3Fz
X3B0XzJ2ZWMyX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWM0X3FzX3B0
XzJ2ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiAi
Z3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
dmVjNF9xc19wdF8ydmVjMl92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjNF9x
c19wdF8ydmVjMl92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgor
ICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18xMDVf
dG9fMTEyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzEwNV90b18xMTIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOGQ5NWY2MjMyYjY1NjdkNjhlNGFmNTVjNDQ2OTY5YWI5YWEyMWJjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3N3aXp6bGVyc18xMDVfdG9fMTEy
Lmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiBzd2l6emxlcnNfMTA1
X3RvXzExMi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0i
d2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAg
ICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzRfc190X3Bf
cV80ZmxvYXRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfc190X3Bf
cV80ZmxvYXRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJ2ZWM0X3NfdF9wX3FfNGZsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2
ZWM0X3NfdF9wX3FfNGZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJm
cmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInZlYzNfc3RwXzF2ZWMzX2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWMzX3N0cF8xdmVjM19mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogInZlYzNfc3RwXzF2ZWMzX3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ2ZWMzX3N0cF8xdmVjM192ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICJ2ZWMzX3RzcF8xdmVjM19mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
dmVjM190c3BfMXZlYzNfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6ICJncmlkIiwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICJ2ZWMzX3RzcF8xdmVjM192ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAi
dmVjM190c3BfMXZlYzNfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFy
ZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAidmVjM19wdHNfMXZlYzNfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzNfcHRzXzF2ZWMzX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVu
dFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9k
ZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAidmVjM19wdHNfMXZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzNfcHRzXzF2ZWMzX3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUi
CisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzEx
M190b18xMjAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy9zd2l6emxlcnNfMTEzX3RvXzEyMC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2MmFiMzgwMGY0NGNiNmE2ZTE5ZmZmMGVjYzRhMzY5Y2I3MjlmZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvc3dpenpsZXJzXzExM190b18x
MjAuaHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHN3aXp6bGVyc18x
MTNfdG9fMTIwLmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxl
PSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWwor
ICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGws
CisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM19zdF9w
XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19z
dF9wXzF2ZWMyXzFmbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogInZlYzNfc3RfcF8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAg
ICJuYW1lIjogInZlYzNfc3RfcF8xdmVjMl8xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAg
InBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9n
cmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM19zcF90XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWciCisg
ICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19zcF90XzF2ZWMyXzFmbG9hdF9mcmFnLnRlc3Qu
aHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAg
InJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRl
c3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzNfc3BfdF8xdmVjMl8x
ZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfc3BfdF8xdmVjMl8x
ZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM190
cF9zXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVj
M190cF9zXzF2ZWMyXzFmbG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJj
b21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAg
ICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogInZlYzNfdHBfc18xdmVjMl8xZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInZlYzNfdHBfc18xdmVjMl8xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFn
IgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM19wc190XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWci
CisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM19wc190XzF2ZWMyXzFmbG9hdF9mcmFnLnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVs
dC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAg
InRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogInZlYzNfcHNfdF8xdmVj
Ml8xZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfcHNfdF8xdmVj
Ml8xZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9CisgIF0KK30pOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX2Jncl8xdmVjM19m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19iZ3JfMXZlYzNfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEyNzc2ZDk0MzAxODdiM2YyNjFkYWY0N2IwZDEwYTBjMzgwNzVlY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19iZ3JfMXZlYzNfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29s
b3I7CisJdmVjMyBtID0gYWwucmdiOworCXZlYzMgdCA9IG0uYmdyOworCXZlYzQgYSA9IHZlYzQo
dC5iLCB0LmcsIHQuciAsYWwuYSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWMzX2Jncl8xdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjM19iZ3JfMXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiZjYwOWU5MmE5
NjU2Y2YzOWRhMTY2ZTk0NDAwOWUwYTNkODIwMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjM19iZ3JfMXZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0g
PSBsaWdodGxvYy5yZ2I7CisJdmVjMyB0ID0gbS5iZ3I7CisJdmVjNCBhID0gdmVjNCh0LmIsIHQu
ZywgdC5yLCBsaWdodGxvYy5hKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N3aXp6bGVycy92ZWMzX2JyX2dfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWMzX2JyX2dfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MzdkYTI4Zjg1ZDZiNjhkNGM5YjU3ZmI5NjIzMjlkNDk5YjhkNDhlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfYnJfZ18xdmVjMl8xZmxvYXRfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7
CisJdmVjMyBtID0gYWwucmdiOworCWZsb2F0IGsgPSBtLmc7CisJdmVjMiBuID0gbS5icjsKKwl2
ZWM0IGEgPSB2ZWM0KG4uZywgaywgbi5yLCBhbC5hKTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfYnJfZ18xdmVjMl8xZmxvYXRfdmVy
dC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfYnJfZ18xdmVjMl8xZmxvYXRfdmVydC52
ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmNjM4ZmQyMzkzZjM0ZTY5YzljYjMyYWFjMmEwMTNiM2M3YjhkZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19icl9nXzF2ZWMyXzFm
bG9hdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0bG9jLnJnYjsKKwl2ZWMy
IHQgPSBtLmJyOworCWZsb2F0IGsgPSBtLmc7CisJdmVjNCBhID0gdmVjNCh0LmcsIGssIHQuciwg
bGlnaHRsb2MuYSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjM19nYl9yXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxl
cnMvdmVjM19nYl9yXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyZDcyMmNm
NDdhNDNjYTNlYTVhYjdmNzhjYWNlODlhY2U4YWIzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N3aXp6bGVycy92ZWMzX2diX3JfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMg
bSA9IGFsLnJnYjsKKwlmbG9hdCBrID0gbS5yOworCXZlYzIgbiA9IG0uZ2I7CisJdmVjNCBhID0g
dmVjNChrLCBuLnIsIG4uZywgYWwuYSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX2diX3JfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWMzX2diX3JfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNDk3YWIzY2IzNjc1YmU3YjdiNDk4MTVmNGY3YTUyNDI4MWEzNzI3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfZ2Jfcl8xdmVjMl8xZmxvYXRfdmVy
dC52ZXJ0CkBAIC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0
bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5yZ2I7CisJdmVjMiB0ID0gbS5n
YjsKKwlmbG9hdCBrID0gbS5yOworCXZlYzQgYSA9IHZlYzQoaywgdC5yLCB0LmcsICBsaWdodGxv
Yy5hKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWMzX2dyYl8xdmVjM19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19ncmJfMXZl
YzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMjM2YWFkZDRmYTM2YTYyNDZkYzhkOTc4MWNiOWEw
N2I0NDc2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19ncmJf
MXZlYzNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMyBtID0gYWwucmdiOworCXZlYzMgdCA9IG0uZ3JiOwor
CXZlYzQgYSA9IHZlYzQodC5nLCB0LnIsIHQuYiAsYWwuYSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX2dyYl8xdmVjM192ZXJ0LnZl
cnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19ncmJfMXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExYWQ5ZGFlNTZiMGQ2NzI1MWRkMTM4NGMzZDI2MzBiMDE5ZjcyYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19ncmJfMXZlYzNfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1Zl
cnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5yZ2I7CisJdmVjMyB0ID0gbS5ncmI7CisJdmVjNCBh
ID0gdmVjNCh0LmcsIHQuciwgdC5iLCBsaWdodGxvYy5hKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3BzX3RfMXZlYzJfMWZsb2F0X2ZyYWcu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3BzX3RfMXZlYzJfMWZsb2F0X2ZyYWcuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZDIwN2EyNmFkMDJkYTIzYzE1NTZjZjZhNzQ0NWM2Yjg4YTRjNzc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcHNfdF8xdmVjMl8xZmxv
YXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWM0IGFsID0gY29sb3I7CisJdmVjMyBtID0gYWwuc3RwOworCWZsb2F0IGsgPSBtLnQ7CisJdmVj
MiBuID0gbS5wczsKKwl2ZWM0IGEgPSB2ZWM0KG4udCwgaywgbi5zLCBhbC5xKTsKKwlnbF9GcmFn
Q29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcHNfdF8x
dmVjMl8xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcHNfdF8xdmVj
Ml8xZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTdmMDYwMmI5ZmE0ZjJjZjA3ZDJiMmE4
ODNmMzc3ZDNmMjc2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
M19wc190XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3Rm
X0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0
bG9jLnN0cDsKKwl2ZWMyIHQgPSBtLnBzOworCWZsb2F0IGsgPSBtLnQ7CisJdmVjNCBhID0gdmVj
NCh0LnQsIGssIHQucywgbGlnaHRsb2MucSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19wdHNfMXZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzNfcHRzXzF2ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDhiYmFkMDQ1
NmVlZWVhMjQ4NDA2ODQ1ODljN2U2YjA2MDk5NjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzNfcHRzXzF2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnN0
cDsKKwl2ZWMzIHQgPSBtLnB0czsKKwl2ZWM0IGEgPSB2ZWM0KHQucCwgdC50LCB0LnMgLGFsLnEp
OworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjM19wdHNfMXZlYzNfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcHRzXzF2
ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDFiMWYxYmYxMDJiZGI2MThmNWZmZDZlYWZkNzM1
YmUzYjEzYWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcHRz
XzF2ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2Muc3RwOworCXZl
YzMgdCA9IG0ucHRzOworCXZlYzQgYSA9IHZlYzQodC5wLCB0LnQsIHQucywgbGlnaHRsb2MucSk7
CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19y
Yl9nXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19yYl9n
XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI0OTg5NGEyNjg1MDFjNTA0M2Mx
ZGJmMGNiY2Y3OTM3Yjk0OWY2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWMzX3JiX2dfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIxIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnJnYjsK
KwlmbG9hdCBrID0gbS5nOworCXZlYzIgbiA9IG0ucmI7CisJdmVjNCBhID0gdmVjNChuLnIsIGss
IG4uZywgYWwuYSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWMzX3JiX2dfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWMzX3JiX2dfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWQz
YjlhZmQ4OTg0YzhiZmIxMTBhZjJkZDdjN2E0ODIzYzYxYmE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcmJfZ18xdmVjMl8xZmxvYXRfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1Zl
cnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5yZ2I7CisJdmVjMiB0ID0gbS5yYjsKKwlmbG9hdCBr
ID0gbS5nOworCXZlYzQgYSA9IHZlYzQodC5yLCBrLCB0LmcsIGxpZ2h0bG9jLmEpOworCWNvbG9y
ID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcmdfYl8xdmVj
Ml8xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcmdfYl8xdmVjMl8x
ZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NTEwNTZiOTEzNGZkZDE1YTUwZTQwZGMzODI5
NjM2NmU3MzEwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19y
Z19iXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC5yZ2I7CisJZmxvYXQg
ayA9IG0uYjsKKwl2ZWMyIG4gPSBtLnJnOworCXZlYzQgYSA9IHZlYzQobiwgaywgYWwuYSk7CisJ
Z2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMz
X3JnX2JfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3Jn
X2JfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTUzODZhZDY3MjZhYzI3MzNh
MjY4ZTE0NGU3NjEyMTk2OTQ5MWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzNfcmdfYl8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjMgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0g
PSBsaWdodGxvYy5yZ2I7CisJdmVjMiB0ID0gbS5yZzsKKwlmbG9hdCBrID0gbS5iOworCXZlYzQg
YSA9IHZlYzQodCwgaywgbGlnaHRsb2MuYSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19yZ2JfMXZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzNfcmdiXzF2ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGRmMWZlOTgy
MDEwYTU2ZmM5NTMyMWVjZTkzNDBjNjk5NzNhZDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzNfcmdiXzF2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnJn
YjsKKwl2ZWM0IGEgPSB2ZWM0KG0ucmdiLGFsLmEpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19yZ2JfMXZlYzNfdmVydC52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcmdiXzF2ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YjhhYjEwOGQ5MjczZWMyYjg0ZDgwZWQzZTIwZDdhMjhhMGYzMTg4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfcmdiXzF2ZWMzX3ZlcnQudmVydApAQCAtMCwwICsx
LDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCith
dHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7
CisJdmVjMyBtID0gbGlnaHRsb2MucmdiOworCXZlYzQgYSA9IHZlYzQobS5yZ2IsbGlnaHRsb2Mu
YSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
M19zcF90XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19z
cF90XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE3YTk1ZDU2ZDc2YjgyYjFm
NzYyNDhjMGUwN2VhZGM2NTE3MzczOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWMzX3NwX3RfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIxIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnN0
cDsKKwlmbG9hdCBrID0gbS50OworCXZlYzIgbiA9IG0uc3A7CisJdmVjNCBhID0gdmVjNChuLnMs
IGssIG4udCwgYWwucSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N3aXp6bGVycy92ZWMzX3NwX3RfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWMzX3NwX3RfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OTcyZTkyNzQ1N2U1NDQzOGEwNDFjOTk3YWU2OTIyZGU2ZGY0YjAxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3BfdF8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3Rm
X1ZlcnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5zdHA7CisJdmVjMiB0ID0gbS5zcDsKKwlmbG9h
dCBrID0gbS50OworCXZlYzQgYSA9IHZlYzQodC5zLCBrLCB0LnQsIGxpZ2h0bG9jLnEpOworCWNv
bG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3RfcF8x
dmVjMl8xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3RfcF8xdmVj
Ml8xZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MjU5YjBkYWZkNzAzNTA0MmU1NmQ3ZmI3
YTEwNjI5YzM0MTk5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
M19zdF9wXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC5zdHA7CisJZmxv
YXQgayA9IG0ucDsKKwl2ZWMyIG4gPSBtLnN0OworCXZlYzQgYSA9IHZlYzQobiwgaywgYWwucSk7
CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWMzX3N0X3BfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMz
X3N0X3BfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWZmMDMyZWU3MTMyMDRh
YTRiNGQ5ZTk3YmVkY2FlMTU4YTkwZTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzNfc3RfcF8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjMgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMz
IG0gPSBsaWdodGxvYy5zdHA7CisJdmVjMiB0ID0gbS5zdDsKKwlmbG9hdCBrID0gbS5wOworCXZl
YzQgYSA9IHZlYzQodCwgaywgbGlnaHRsb2MucSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19zdHBfMXZlYzNfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzNfc3RwXzF2ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDAxMGUy
ZWUxZTBmNTc0Y2Q0Njk0NDk3NGYyMDEyMGVlZDU4ZDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3RwXzF2ZWMzX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFs
LnN0cDsKKwl2ZWM0IGEgPSB2ZWM0KG0uc3RwLGFsLnEpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM19zdHBfMXZlYzNfdmVydC52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3RwXzF2ZWMzX3ZlcnQudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzM5ODZmNWM0MDZhNTZlZTQzMTQ0YjA1MzdjZTBhN2M2MTZkMGE1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfc3RwXzF2ZWMzX3ZlcnQudmVydApAQCAtMCww
ICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0
ZXg7CisJdmVjMyBtID0gbGlnaHRsb2Muc3RwOworCXZlYzQgYSA9IHZlYzQobS5zdHAsbGlnaHRs
b2MucSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjM190cF9zXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
M190cF9zXzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZmZGI1NmZkNWZhZTY3
M2QzMDI4NWM3NWVkMjJhMjY0MzFmOTVmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWMzX3RwX3NfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIxIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29s
b3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFs
LnN0cDsKKwlmbG9hdCBrID0gbS5zOworCXZlYzIgbiA9IG0udHA7CisJdmVjNCBhID0gdmVjNChr
LCBuLnMsIG4udCwgYWwucSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWMzX3RwX3NfMXZlYzJfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N3aXp6bGVycy92ZWMzX3RwX3NfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45N2YzODE0YmJmZDU0OWYxNWY5YWJlMjRhMGUzMzFjMTcxNTE5MjZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfdHBfc18xdmVjMl8xZmxvYXRfdmVydC52ZXJ0
CkBAIC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0g
Z3RmX1ZlcnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5zdHA7CisJdmVjMiB0ID0gbS50cDsKKwlm
bG9hdCBrID0gbS5zOworCXZlYzQgYSA9IHZlYzQoaywgdC5zLCB0LnQsICBsaWdodGxvYy5xKTsK
Kwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3Rz
cF8xdmVjM19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM190c3BfMXZlYzNfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhNzJlOThkYTc3ZDljNTViMWIwNDFiZTU0NWVkYzg4NmQ0ODRl
M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM190c3BfMXZlYzNf
ZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0
IGFsID0gY29sb3I7CisJdmVjMyBtID0gYWwuc3RwOworCXZlYzMgdCA9IG0udHNwOworCXZlYzQg
YSA9IHZlYzQodC50LCB0LnMsIHQucCAsYWwucSk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3RzcF8xdmVjM192ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zd2l6emxlcnMvdmVjM190c3BfMXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAx
MGZkMzc1ODQ5YTVhYTU4MDg3NTE4YWNkMmI3ZTAwMGI3NzUwY2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM190c3BfMXZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEs
MjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsK
Kwl2ZWMzIG0gPSBsaWdodGxvYy5zdHA7CisJdmVjMyB0ID0gbS50c3A7CisJdmVjNCBhID0gdmVj
NCh0LnQsIHQucywgdC5wLCBsaWdodGxvYy5xKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3h5X3pfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3h5X3pfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wOWYyZTkxYzU0MDNmOTRkMTJmNjFiZmYxOTliYzBkYjlkMzQ2NGFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfeHlfel8xdmVjMl8xZmxvYXRfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFs
ID0gY29sb3I7CisJdmVjMyBtID0gYWwueHl6OworCWZsb2F0IGsgPSBtLno7CisJdmVjMiBuID0g
bS54eTsKKwl2ZWM0IGEgPSB2ZWM0KG4sIGssIGFsLncpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM194eV96XzF2ZWMyXzFmbG9hdF92
ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM194eV96XzF2ZWMyXzFmbG9hdF92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWY1NWFhNzg2NTlmNWU1MGE0ZTRiYjk5NTM1ZjRhYjYxY2QyYjg1
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3h5X3pfMXZlYzJf
MWZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2MueHl6OworCXZl
YzIgdCA9IG0ueHk7CisJZmxvYXQgayA9IG0uejsKKwl2ZWM0IGEgPSB2ZWM0KHQsIGssIGxpZ2h0
bG9jLncpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3ZlYzNfeHl6XzF2ZWMzX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3h5el8x
dmVjM19mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcxMmI5MTE1YzlkMDU1OTNlOGZlNzk1MGEyZWZh
NzVjNjg0OTNkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3h5
el8xdmVjM19mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC54eXo7CisJdmVjNCBhID0gdmVjNCht
Lnh5eixhbC53KTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzNfeHl6XzF2ZWMzX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWMzX3h5el8xdmVjM192ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5YjFiMTI3OWEyNTg2NzY4OTkw
MjUyNWUxZmI4MDY1NjRkNTA1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWMzX3h5el8xdmVjM192ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0bG9j
Lnh5ejsKKwl2ZWM0IGEgPSB2ZWM0KG0ueHl6LGxpZ2h0bG9jLncpOworCWNvbG9yID0gZ3RmX0Nv
bG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfeHpfeV8xdmVjMl8xZmxvYXRf
ZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfeHpfeV8xdmVjMl8xZmxvYXRfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFhZDEyMDE5OTkzNzQ1Nzc1MWM1NGU5MDJmM2Y3MTkwODllMGI4
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM194el95XzF2ZWMy
XzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQor
eworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC54eXo7CisJZmxvYXQgayA9IG0ueTsK
Kwl2ZWMyIG4gPSBtLnh6OworCXZlYzQgYSA9IHZlYzQobi54LCBrLCBuLnksIGFsLncpOworCWds
X0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM194
el95XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM194el95
XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMxNmViMjg4MzgzNmM4NjEzOGYy
ZWQ5YTA3MDM5ZWZlNTA1MGNjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWMzX3h6X3lfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBtID0g
bGlnaHRsb2MueHl6OworCXZlYzIgdCA9IG0ueHo7CisJZmxvYXQgayA9IG0ueTsKKwl2ZWM0IGEg
PSB2ZWM0KHQueCwgaywgdC55LCBsaWdodGxvYy53KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3l4el8xdmVjM19mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvdmVjM195eHpfMXZlYzNfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMGM0
Yzg5MDkzMmY4MGNkNWQzNGVhZDYxMTE4NmQxZWE1YzEyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9zd2l6emxlcnMvdmVjM195eHpfMXZlYzNfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMyBtID0g
YWwueHl6OworCXZlYzMgdCA9IG0ueXh6OworCXZlYzQgYSA9IHZlYzQodC55LCB0LngsIHQueiAs
YWwudyk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWMzX3l4el8xdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM195
eHpfMXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlODIxMzAxZTA2MjRkNTM1YjdkZGNlYjlj
ZjZkNjYxZGQ4MTY4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
M195eHpfMXZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0gPSBsaWdodGxvYy54eXo7
CisJdmVjMyB0ID0gbS55eHo7CisJdmVjNCBhID0gdmVjNCh0LnksIHQueCwgdC56LCBsaWdodGxv
Yy53KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWMzX3l6X3hfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMz
X3l6X3hfMXZlYzJfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmEzNmEzYzdjM2Y0YTIw
ZDM5YTI5ZmNjMDYwY2I1YjZiMmFkZDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzNfeXpfeF8xdmVjMl8xZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjEgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMyBtID0gYWwu
eHl6OworCWZsb2F0IGsgPSBtLng7CisJdmVjMiBuID0gbS55ejsKKwl2ZWM0IGEgPSB2ZWM0KGss
IG4ueCwgbi55LCBhbC53KTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzNfeXpfeF8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzNfeXpfeF8xdmVjMl8xZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYzY2ZmYjlmMDA1YjFhZDY3ZWE3NTJjZDg4ZjhjN2U4YTcyMGI0Y2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM195el94XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBn
dGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0bG9jLnh5ejsKKwl2ZWMyIHQgPSBtLnl6OworCWZs
b2F0IGsgPSBtLng7CisJdmVjNCBhID0gdmVjNChrLCB0LngsIHQueSwgIGxpZ2h0bG9jLncpOwor
CWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfenhf
eV8xdmVjMl8xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzNfenhfeV8x
dmVjMl8xZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYTVlN2EyOWQ0NDAzYzQ3Y2M2MmVj
OTFlOGJiZTczMTRiZTU1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjM196eF95XzF2ZWMyXzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC54eXo7CisJ
ZmxvYXQgayA9IG0ueTsKKwl2ZWMyIG4gPSBtLnp4OworCXZlYzQgYSA9IHZlYzQobi55LCBrLCBu
LngsIGFsLncpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjM196eF95XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjM196eF95XzF2ZWMyXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmZmZm
OTU0YjQ4YjIwZjY3YWQzZWI4NDMxZTZhOTdlY2JiM2U3NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWMzX3p4X3lfMXZlYzJfMWZsb2F0X3ZlcnQudmVydApAQCAtMCww
ICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0
ZXg7CisJdmVjMyBtID0gbGlnaHRsb2MueHl6OworCXZlYzIgdCA9IG0ueng7CisJZmxvYXQgayA9
IG0ueTsKKwl2ZWM0IGEgPSB2ZWM0KHQueSwgaywgdC54LCBsaWdodGxvYy53KTsKKwljb2xvciA9
IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3p5eF8xdmVjM19m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM196eXhfMXZlYzNfZnJhZy5mcmFnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVjYjFhODI2YTAxYjRiMDA3NDI0YmZiM2U3OTgzNDU5ZWM4NzY4Y2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjM196eXhfMXZlYzNfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29s
b3I7CisJdmVjMyBtID0gYWwueHl6OworCXZlYzMgdCA9IG0uenl4OworCXZlYzQgYSA9IHZlYzQo
dC56LCB0LnksIHQueCAsYWwudyk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWMzX3p5eF8xdmVjM192ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjM196eXhfMXZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OTkwOGYzZDI3
MDk5NDBjZjI4ZDZhMDA3YjcyMjU1NTE5NDg3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjM196eXhfMXZlYzNfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0g
PSBsaWdodGxvYy54eXo7CisJdmVjMyB0ID0gbS56eXg7CisJdmVjNCBhID0gdmVjNCh0LnosIHQu
eSwgdC54LCBsaWdodGxvYy53KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3N3aXp6bGVycy92ZWM0X2FyX2JnXzJ2ZWMyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWM0X2FyX2JnXzJ2ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjY5MDI5Njc4NDk1
OGI4MjI1ZDYwZTRkZTgwM2YzYjM4ZjZhODhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfYXJfYmdfMnZlYzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMiBtID0gYWwuYXI7
CisJdmVjMiBuID0gYWwuYmc7CisJdmVjNCBhID0gdmVjNChtLmcsIG4uZywgbi5yLCBtLnIpOwor
CWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
NF9hcl9iZ18ydmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9hcl9iZ18y
dmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE2NDBhMzJjYWQ1NzgzOTkwOWU4MzRhZGU1NGVh
YWI3ZWE1YTRiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2Fy
X2JnXzJ2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cith
dHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMiBtID0gbGlnaHRsb2MuYXI7CisJ
dmVjMiBuID0gbGlnaHRsb2MuYmc7CisJdmVjNCBhID0gdmVjNChtLmcsIG4uZywgbi5yLCBtLnIp
OworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRf
YXJiX2dfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2Fy
Yl9nXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2YjBlNjRjOTY4ZjAyY2Q5
NDkxMTk5OWUwYzU2NDRjZjdiNmYxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWM0X2FyYl9nXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdM
X0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9y
Owordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBhbC5h
cmI7CisJZmxvYXQgZyA9IGFsLmc7CisJdmVjNCBhID0gdmVjNChtLmcsIGcsIG0uYiwgbS5yKTsK
KwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3Zl
YzRfYXJiX2dfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X2FyYl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg5NDE4YTIwNDlmNGQ1
Mjc2YmU4NWQwNjRjNWVlOGZkZGNhODg5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X2FyYl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMiBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZl
YzMgbSA9IGxpZ2h0bG9jLmFyYjsKKwlmbG9hdCBnID0gbGlnaHRsb2MuZzsKKwl2ZWM0IGEgPSB2
ZWM0KG0uZywgZywgbS5iLCBtLnIpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzRfYXJiZ18xdmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF9hcmJnXzF2ZWM0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2JjZWQ1MjdmMTNj
ZTljNTQ4NDM3YzZhNjA3ZGU0YWY0ZGJmZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfYXJiZ18xdmVjNF9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VT
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwor
dm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWM0IG0gPSBhbC5hcmJn
OworCXZlYzQgYSA9IHZlYzQobS5nLCBtLmEsIG0uYiwgbS5yKTsKKwlnbF9GcmFnQ29sb3IgPSBh
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYXJiZ18xdmVjNF92ZXJ0
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9hcmJnXzF2ZWM0X3ZlcnQudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZGEzMzhlYjgwMDRkYzI1MjE3ODE1M2FiZDA5OWVlOTRkMGM5ZGM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYXJiZ18xdmVjNF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBn
dGZfVmVydGV4OworCXZlYzQgbSA9IGxpZ2h0bG9jLmFyYmc7CisJdmVjNCBhID0gdmVjNChtLmcs
IG0uYSwgbS5iLCBtLnIpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfYmFyX2dfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X2Jhcl9nXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM2
ZGRiOGQ4NmZjN2I1ZDc1YjY4NGZhMDc4ZGZkMDMzYjg0OWM5MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2Jhcl9nXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKQEAg
LTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsK
Kwl2ZWMzIG0gPSBhbC5iYXI7CisJZmxvYXQgZyA9IGFsLmc7CisJdmVjNCBhID0gdmVjNChtLmIs
IGcsIG0uciwgbS5nKTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzRfYmFyX2dfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X2Jhcl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWQzMTlhNjkzMjJiYjE5MDBhN2ZiYjg0ZjU3MTU1ZTc5MGIyYjY4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2Jhcl9nXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBn
dGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0bG9jLmJhcjsKKwlmbG9hdCBnID0gbGlnaHRsb2Mu
ZzsKKwl2ZWM0IGEgPSB2ZWM0KG0uYiwgZywgbS5yLCBtLmcpOworCWNvbG9yID0gZ3RmX0NvbG9y
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYmFyZ18xdmVjNF9mcmFnLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9iYXJnXzF2ZWM0X2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNDcyYmIxYTIwY2IzMjgwMThkZWMzMGVkMDNkYTU5YjQyZjEzNzU2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYmFyZ18xdmVjNF9mcmFnLmZyYWcKQEAgLTAs
MCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2
ZWM0IG0gPSBhbC5iYXJnOworCXZlYzQgYSA9IHZlYzQobS5iLCBtLmEsIG0uciwgbS5nKTsKKwln
bF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRf
YmFyZ18xdmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9iYXJnXzF2ZWM0
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjlmYjhjYjNjZmU5ZThiYjQ1ODk5MDUzN2M1OGU2YjI1
NWQ2YzlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYmFyZ18x
dmVjNF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzQgbSA9IGxpZ2h0bG9jLmJhcmc7CisJdmVj
NCBhID0gdmVjNChtLmIsIG0uYSwgbS5yLCBtLmcpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfYnJfYWdfMnZlYzJfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzRfYnJfYWdfMnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4
NGRkN2JmMmExY2YyYWJhMDEzOWNhMzA4NzE0MTRkMWIzZTc4NjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9icl9hZ18ydmVjMl9mcmFnLmZyYWcKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMy
IG0gPSBhbC5icjsKKwl2ZWMyIG4gPSBhbC5hZzsKKwl2ZWM0IGEgPSB2ZWM0KG0uZywgbi5nLCBt
LnIsIG4ucik7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X2JyX2FnXzJ2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWM0X2JyX2FnXzJ2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTlhZWViZGE4NmQ3YjQ1MGJj
OTIyNDY3MTI3ZDFiMDM3YTMzZTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfYnJfYWdfMnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMyIG0gPSBsaWdo
dGxvYy5icjsKKwl2ZWMyIG4gPSBsaWdodGxvYy5hZzsKKwl2ZWM0IGEgPSB2ZWM0KG0uZywgbi5n
LCBtLnIsIG4ucik7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF9ncl9hYl8ydmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
NF9ncl9hYl8ydmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUzMDBjNmQ4ZGE5MzhiNDhjMWQ3
ZDkyYzBhMDYxY2MwOTE2YmRhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWM0X2dyX2FiXzJ2ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzIgbSA9IGFsLmdyOworCXZlYzIg
biA9IGFsLmFiOworCXZlYzQgYSA9IHZlYzQobS5nLCBtLnIsIG4uZywgbi5yKTsKKwlnbF9GcmFn
Q29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfZ3JfYWJf
MnZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfZ3JfYWJfMnZlYzJfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhMzI5YTcyMTNkODMxYjRhYTRiODEwZGM5NWExOThlNGEwMGU4
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9ncl9hYl8ydmVj
Ml92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQg
bGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzIgbSA9IGxpZ2h0bG9jLmdyOworCXZlYzIgbiA9
IGxpZ2h0bG9jLmFiOworCXZlYzQgYSA9IHZlYzQobS5nLCBtLnIsIG4uZywgbi5yKTsKKwljb2xv
ciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2dyYV9iXzF2
ZWMzXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9ncmFfYl8xdmVj
M18xZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxN2E1Nzc2MjcyYjk0NDRlMjA2MTNkZDZi
NTAxMGJiZjM0ZTE5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
NF9ncmFfYl8xdmVjM18xZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMyBtID0gYWwuZ3JhOworCWZs
b2F0IGIgPSBhbC5iOworCXZlYzQgYSA9IHZlYzQobS5nLCBtLnIsIGIsIG0uYik7CisJZ2xfRnJh
Z0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2dyYV9i
XzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9ncmFfYl8x
dmVjM18xZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMjM3ZDFhYWQwMDJjODU3ZDM2MzJi
MTNlYjhjMzA1NjkxNTYwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9ncmFfYl8xdmVjM18xZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMzIG0gPSBs
aWdodGxvYy5ncmE7CisJZmxvYXQgYiA9IGxpZ2h0bG9jLmI7CisJdmVjNCBhID0gdmVjNChtLmcs
IG0uciwgYiwgbS5iKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X2dyYWJfMXZlYzRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3Zl
YzRfZ3JhYl8xdmVjNF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZmNzEyZDQ4MWU5MzNjYTU2MjNj
OWE3YTMxMWViNjkwZWVlMmY3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWM0X2dyYWJfMXZlYzRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjNCBtID0gYWwuZ3JhYjsKKwl2ZWM0
IGEgPSB2ZWM0KG0uZywgbS5yLCBtLmEsIG0uYik7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2dyYWJfMXZlYzRfdmVydC52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfZ3JhYl8xdmVjNF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDdiZjYzMmYzYzlhOGFiOGE4MTJkNGNhMzc2ODdlZmFhNjZlYTg2NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X2dyYWJfMXZlYzRfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRl
eDsKKwl2ZWM0IG0gPSBsaWdodGxvYy5ncmFiOworCXZlYzQgYSA9IHZlYzQobS5nLCBtLnIsIG0u
YSwgbS5iKTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWM0X3Bxc190XzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9wcXNfdF8xdmVjM18xZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmZmM1YzhhMzZk
NDBmNTI0OGNlZTkwYmQzYzcwZTQ0YjQ1ZTlmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjNF9wcXNfdF8xdmVjM18xZmxvYXRfZnJhZy5mcmFnCkBAIC0wLDAgKzEs
MjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMyBt
ID0gYWwucHFzOworCWZsb2F0IHQgPSBhbC50OworCXZlYzQgYSA9IHZlYzQobS5wLCB0LCBtLnMs
IG0udCk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWM0X3Bxc190XzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxl
cnMvdmVjNF9wcXNfdF8xdmVjM18xZmxvYXRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMjE5ZWU5
NjViOTc1NjkxYTZlZjZkMzhiZTYwMzQyYzk5ZGM4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvdmVjNF9wcXNfdF8xdmVjM18xZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRl
eDsKKwl2ZWMzIG0gPSBsaWdodGxvYy5wcXM7CisJZmxvYXQgdCA9IGxpZ2h0bG9jLnQ7CisJdmVj
NCBhID0gdmVjNChtLnAsIHQsIG0ucywgbS50KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3Bxc3RfMXZlYzRfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzRfcHFzdF8xdmVjNF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc2NzFh
ZDE1OGJjOWIyYWI0ODhhYjA2NDYzMDA2Yzg4NjAyYzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3Bxc3RfMXZlYzRfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRl
ZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjNCBtID0g
YWwucHFzdDsKKwl2ZWM0IGEgPSB2ZWM0KG0ucCwgbS5xLCBtLnMsIG0udCk7CisJZ2xfRnJhZ0Nv
bG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3Bxc3RfMXZl
YzRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcHFzdF8xdmVjNF92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDgzYWRhOGUzYjhiMTA4MzM1YTNiYTM1YjM0NWYzYjhjMTlhYmQxNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3Bxc3RfMXZlYzRfdmVy
dC52ZXJ0CkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0
bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWM0IG0gPSBsaWdodGxvYy5wcXN0OworCXZlYzQgYSA9IHZl
YzQobS5wLCBtLnEsIG0ucywgbS50KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3BzX3F0XzJ2ZWMyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X3BzX3F0XzJ2ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzdmZjkxZjc2
NjFlMzY1YzAyZTIxYjU0N2JhZTRmNDQ3NjQ0MjUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzRfcHNfcXRfMnZlYzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xv
cjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJdmVjMiBtID0gYWwu
cHM7CisJdmVjMiBuID0gYWwucXQ7CisJdmVjNCBhID0gdmVjNChtLnQsIG4udCwgbS5zLCBuLnMp
OworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9wc19xdF8ydmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9wc19x
dF8ydmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY2MTYzMGE4YTcwOWU3MjUzMDAzY2RlMzM4
NTUzOGNlZjVmZWJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X3BzX3F0XzJ2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMiBtID0gbGlnaHRsb2MucHM7
CisJdmVjMiBuID0gbGlnaHRsb2MucXQ7CisJdmVjNCBhID0gdmVjNChtLnQsIG4udCwgbS5zLCBu
LnMpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3Zl
YzRfcXNfcHRfMnZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNfcHRf
MnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYTFiNzA1OWJjYTc2ODMzOGNlMWE3NjA0Zjhh
MjQ5ZTBmYmY0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9x
c19wdF8ydmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lk
KQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMyIG0gPSBhbC5xczsKKwl2ZWMyIG4gPSBhbC5w
dDsKKwl2ZWM0IGEgPSB2ZWM0KG0udCwgbi50LCBuLnMsIG0ucyk7CisJZ2xfRnJhZ0NvbG9yID0g
YTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3FzX3B0XzJ2ZWMyX3Zl
cnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3FzX3B0XzJ2ZWMyX3ZlcnQudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNjQzMWVjYzdjMTk4MTFkMTc3MTI5MWZiNmU5MDA2NmYzYjZkNmViCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNfcHRfMnZlYzJfdmVydC52
ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9j
ID0gZ3RmX1ZlcnRleDsKKwl2ZWMyIG0gPSBsaWdodGxvYy5xczsKKwl2ZWMyIG4gPSBsaWdodGxv
Yy5wdDsKKwl2ZWM0IGEgPSB2ZWM0KG0udCwgbi50LCBuLnMsIG0ucyk7CisJY29sb3IgPSBndGZf
Q29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9xc3BfdF8xdmVjM18xZmxv
YXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNwX3RfMXZlYzNfMWZsb2F0
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWNhNmEwNTZmMDFkYjJiYzE3MjhiNTg3YjEyNmY5YzA0
NTk0NGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNwX3Rf
MXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnFzcDsKKwlmbG9hdCB0ID0g
YWwudDsKKwl2ZWM0IGEgPSB2ZWM0KG0udCwgdCwgbS5wLCBtLnMpOworCWdsX0ZyYWdDb2xvciA9
IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9xc3BfdF8xdmVjM18x
ZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNwX3RfMXZlYzNfMWZs
b2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDkwMzBjYmZiYjlmNmY0ZWY5Mzg0OWY2YjFiZmQz
NTU0NDlkZTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcXNw
X3RfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29s
b3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2Mu
cXNwOworCWZsb2F0IHQgPSBsaWdodGxvYy50OworCXZlYzQgYSA9IHZlYzQobS50LCB0LCBtLnAs
IG0ucyk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9xc3B0XzF2ZWM0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3FzcHRf
MXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NzMxNjIyNjE2ZDhkMjYyYjdkNGU3ZGJkMGI3
ZjM0Yzc2Mzg4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9x
c3B0XzF2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQp
Cit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzQgbSA9IGFsLnFzcHQ7CisJdmVjNCBhID0gdmVj
NChtLnQsIG0ucSwgbS5wLCBtLnMpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9xc3B0XzF2ZWM0X3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X3FzcHRfMXZlYzRfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNmMyNjEx
NTE2OWM2OWQ4MjkyY2JlZWRkZTA5Mzg3OWNkZjVhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvdmVjNF9xc3B0XzF2ZWM0X3ZlcnQudmVydApAQCAtMCwwICsxLDIxIEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOwor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVj
NCBtID0gbGlnaHRsb2MucXNwdDsKKwl2ZWM0IGEgPSB2ZWM0KG0udCwgbS5xLCBtLnAsIG0ucyk7
CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9y
X2dfYl9hXzRmbG9hdF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9yX2dfYl9h
XzRmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJmZTAzMTY3MzgwMTEyMDQyNTE5ODU1NDlk
YjMxMDc1YjYxYzI4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X3JfZ19iX2FfNGZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCWZsb2F0IHIgPSBhbC5yOworCWZsb2F0IGcg
PSBhbC5nOworCWZsb2F0IGIgPSBhbC5iOworCWZsb2F0IGEgPSBhbC5hOworCXZlYzQgbSA9IHZl
YzQocixnLGIsYSk7CisJZ2xfRnJhZ0NvbG9yID0gbTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X3JfZ19iX2FfNGZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6
bGVycy92ZWM0X3JfZ19iX2FfNGZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0ODY2OTY4
MDMzOTc0YTIzMDc0ODMwZTBjNTFhOGY2ZGM4NjFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzRfcl9nX2JfYV80ZmxvYXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjQg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwlm
bG9hdCByID0gbGlnaHRsb2MucjsKKwlmbG9hdCBnID0gbGlnaHRsb2MuZzsKKwlmbG9hdCBiID0g
bGlnaHRsb2MuYjsKKwlmbG9hdCBhID0gbGlnaHRsb2MuYTsKKwl2ZWM0IG0gPSB2ZWM0KHIsIGcs
IGIsIGEpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXggKiBtOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3ZlYzRfcmdfYmFfMnZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcmdf
YmFfMnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMThmN2RkZjEzZDZlNzQ0NDUyYWExNjA4
MGYyOWVlN2VlNGI3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVj
NF9yZ19iYV8ydmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMyIG0gPSBhbC5yZzsKKwl2ZWMyIG4gPSBh
bC5iYTsKKwl2ZWM0IGEgPSB2ZWM0KG0sbik7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3JnX2JhXzJ2ZWMyX3ZlcnQudmVydCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3JnX2JhXzJ2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
Yzk1NGRlYmZmMTljY2QyMmJhYjcwYjgyYmFiZWJkMDJjZTU2NjZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcmdfYmFfMnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAg
KzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRl
eDsKKwl2ZWMyIG0gPSBsaWdodGxvYy5yZzsKKwl2ZWMyIG4gPSBsaWdodGxvYy5iYTsKKwl2ZWM0
IGEgPSB2ZWM0KG0sbik7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjNF9yZ2JfYV8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzRfcmdiX2FfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjYy
MmFmNjZhMzM2Y2NmN2IwYWRlODYyMGM0ZTZhNzMzODA2Y2UzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcmdiX2FfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOwor
CXZlYzMgbSA9IGFsLnJnYjsKKwlmbG9hdCBhID0gYWwuYTsKKwl2ZWM0IGIgPSB2ZWM0KG0sIGEp
OworCWdsX0ZyYWdDb2xvciA9IGI7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9yZ2JfYV8xdmVjM18xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3Zl
YzRfcmdiX2FfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTVmYjlmYzg3MWE4
NWI3ZDM3Mzk3NGI0ZjA1OTkzOTRkYmFhMjU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfcmdiX2FfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIy
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJ
dmVjMyBtID0gbGlnaHRsb2MucmdiOworCWZsb2F0IGEgPSBsaWdodGxvYy5hOworCXZlYzQgYiA9
IHZlYzQobSwgYSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGI7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF9yZ2JhXzF2ZWM0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X3JnYmFfMXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZjUxOGYzMjQzM2IyYTZhODEzZDRl
MjM3OTFlZGViOGIwYjBlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9yZ2JhXzF2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzQgbSA9IGFsLnJnYmE7CisJZ2xfRnJh
Z0NvbG9yID0gbTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3JnYmFf
MXZlYzRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfcmdiYV8xdmVjNF92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjI0MjgzOTkxOTI1ZjAyNDRhODBhMzNjZWM4MmQ3NDVhYWZmOGYw
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3JnYmFfMXZlYzRf
dmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxp
Z2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWM0IG0gPSBsaWdodGxvYy5yZ2JhOworCWNvbG9yID0g
Z3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBtOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfc190X3BfcV80Zmxv
YXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfc190X3BfcV80ZmxvYXRfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc4ODE5YzkwNTQwYTQyNzFhNjljNDY4OTQ3ZDk1OWE4YTFhMWNl
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9zX3RfcF9xXzRm
bG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQorewor
CXZlYzQgYWwgPSBjb2xvcjsKKwlmbG9hdCBzID0gYWwuczsKKwlmbG9hdCB0ID0gYWwudDsKKwlm
bG9hdCBwID0gYWwucDsKKwlmbG9hdCBxID0gYWwucTsKKwl2ZWM0IG0gPSB2ZWM0KHMsdCxwLHEp
OworCWdsX0ZyYWdDb2xvciA9IG07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF9zX3RfcF9xXzRmbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9z
X3RfcF9xXzRmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY5MzVlMDliMjQ2YWI3ZTRkYmFi
ZGE5NTUzMmNlNTFlNDQ2M2M4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWM0X3NfdF9wX3FfNGZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDI0IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJZmxvYXQgcyA9IGxp
Z2h0bG9jLnM7CisJZmxvYXQgdCA9IGxpZ2h0bG9jLnQ7CisJZmxvYXQgcCA9IGxpZ2h0bG9jLnA7
CisJZmxvYXQgcSA9IGxpZ2h0bG9jLnE7CisJdmVjNCBtID0gdmVjNChzLCB0LCBwLCBxKTsKKwlj
b2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4ICogbTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3N0X3Bx
XzJ2ZWMyX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3N0X3BxXzJ2ZWMyX2Zy
YWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTVmODYyOTc2MTY1ZTI0Y2VkYTk3NGZjNDVkMDRiNjY5ZmJi
ZThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfc3RfcHFfMnZl
YzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWM0IGFsID0gY29sb3I7CisJdmVjMiBtID0gYWwuc3Q7CisJdmVjMiBuID0gYWwucHE7CisJdmVj
NCBhID0gdmVjNChtLG4pOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvdmVjNF9zdF9wcV8ydmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF9zdF9wcV8ydmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwOTIyMGQ1MWZk
OWY2MjYyZmE5NTI4NDUwMjFhZTRiZWRmYWNhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X3N0X3BxXzJ2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMiBt
ID0gbGlnaHRsb2Muc3Q7CisJdmVjMiBuID0gbGlnaHRsb2MucHE7CisJdmVjNCBhID0gdmVjNCht
LG4pOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3Zl
YzRfc3RwX3FfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X3N0cF9xXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiOTA2ZDU2YmZhYzdj
MmU4NzdiOTg1NTc0MmRlYjY3NDY4Y2JlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X3N0cF9xXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMzIG0gPSBh
bC5zdHA7CisJZmxvYXQgcSA9IGFsLnE7CisJdmVjNCBhID0gdmVjNChtLCBxKTsKKwlnbF9GcmFn
Q29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfc3RwX3Ff
MXZlYzNfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3N0cF9xXzF2
ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZmOTU1ZTU1YTRiOTI0NDZlYTYxMzky
YjAzOGI2NTY4YThlYWU1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWM0X3N0cF9xXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzMgbSA9IGxp
Z2h0bG9jLnN0cDsKKwlmbG9hdCBxID0gbGlnaHRsb2MucTsKKwl2ZWM0IGEgPSB2ZWM0KG0sIHEp
OworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRf
c3RwcV8xdmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9zdHBxXzF2ZWM0
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTNkMDUyYzg5ZGQ0MjAxMGNkMDVmNmJlMmQ2NWRmNTJm
MjkzYjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfc3RwcV8x
dmVjNF9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQorewor
CXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWM0IG0gPSBhbC5zdHBxOworCWdsX0ZyYWdDb2xvciA9IG07
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9zdHBxXzF2ZWM0X3ZlcnQu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3N0cHFfMXZlYzRfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZmOTA3ZmRkNzUwMjZhNzlkNjUxZWU4NzQ0YzEyMzhkOTc4NThlYWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF9zdHBxXzF2ZWM0X3ZlcnQudmVydApA
QCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0
Zl9WZXJ0ZXg7CisJdmVjNCBtID0gbGlnaHRsb2Muc3RwcTsKKwljb2xvciA9IGd0Zl9Db2xvcjsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogbTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3RzX3FwXzJ2ZWMyX2ZyYWcuZnJhZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3RzX3FwXzJ2ZWMyX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZDU0MmU2OTk4YTcyNGE1MjdkNDFhZGY4NWUzZWY3MTFhZTk2ODQyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfdHNfcXBfMnZlYzJfZnJhZy5mcmFnCkBAIC0w
LDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGFsID0gY29sb3I7CisJ
dmVjMiBtID0gYWwudHM7CisJdmVjMiBuID0gYWwucXA7CisJdmVjNCBhID0gdmVjNChtLnQsIG0u
cywgbi50LCBuLnMpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjNF90c19xcF8ydmVjMl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxl
cnMvdmVjNF90c19xcF8ydmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMzZmE1NTUyM2QzODUy
MDk4MmY3ZDY0ZTRkNDRhYjk2NWQ2NGE5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X3RzX3FwXzJ2ZWMyX3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
NCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMiBtID0g
bGlnaHRsb2MudHM7CisJdmVjMiBuID0gbGlnaHRsb2MucXA7CisJdmVjNCBhID0gdmVjNChtLnQs
IG0ucywgbi50LCBuLnMpOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfdHNxX3BfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X3RzcV9wXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRl
NTUxZGQxMzJiNzE2ZDdmZmFlMmJjYWZiMzhiNDBiMTExNzI0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3RzcV9wXzF2ZWMzXzFmbG9hdF9mcmFnLmZyYWcKQEAg
LTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsK
Kwl2ZWMzIG0gPSBhbC50c3E7CisJZmxvYXQgcCA9IGFsLnA7CisJdmVjNCBhID0gdmVjNChtLnQs
IG0ucywgcCwgbS5wKTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvc3dpenpsZXJzL3ZlYzRfdHNxX3BfMXZlYzNfMWZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X3RzcV9wXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWEwY2YwZTk1M2IzYjZmMGRlMDI5YmFjNTAyZjVlNzIyNTY1OGE4YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3RzcV9wXzF2ZWMzXzFmbG9hdF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlp
bmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBn
dGZfVmVydGV4OworCXZlYzMgbSA9IGxpZ2h0bG9jLnRzcTsKKwlmbG9hdCBwID0gbGlnaHRsb2Mu
cDsKKwl2ZWM0IGEgPSB2ZWM0KG0udCwgbS5zLCBwLCBtLnApOworCWNvbG9yID0gZ3RmX0NvbG9y
OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfdHNxcF8xdmVjNF9mcmFnLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF90c3FwXzF2ZWM0X2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNWJmODhmNzE3ZjQ3M2ViOTU4NDI1YmVmMGI2MmNiMTUwMjcwYjI2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfdHNxcF8xdmVjNF9mcmFnLmZyYWcKQEAgLTAs
MCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2
ZWM0IG0gPSBhbC50c3FwOworCXZlYzQgYSA9IHZlYzQobS50LCBtLnMsIG0ucSwgbS5wKTsKKwln
bF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRf
dHNxcF8xdmVjNF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF90c3FwXzF2ZWM0
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWM1MjYzNDFlMTIzNjczOTY2NzkzNDFlNDRlNzViMzNh
N2NkNGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfdHNxcF8x
dmVjNF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZl
YzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzQgbSA9IGxpZ2h0bG9jLnRzcXA7CisJdmVj
NCBhID0gdmVjNChtLnQsIG0ucywgbS5xLCBtLnApOworCWNvbG9yID0gZ3RmX0NvbG9yOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBhOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfd3hfenlfMnZlYzJfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzRfd3hfenlfMnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZh
YThjMGZiZjJmYjUzMTUwNTI1NmNhYWI0NTkyZTljODM4Y2E2ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF93eF96eV8ydmVjMl9mcmFnLmZyYWcKQEAgLTAsMCAr
MSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMy
IG0gPSBhbC53eDsKKwl2ZWMyIG4gPSBhbC56eTsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbi55LCBu
LngsIG0ueCk7CisJZ2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3
aXp6bGVycy92ZWM0X3d4X3p5XzJ2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92
ZWM0X3d4X3p5XzJ2ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTRlYWYxNTNkZWQzM2ZhNTRh
MDE0MzI4MjM2OThlMDhiMmIyZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfd3hfenlfMnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMyIG0gPSBsaWdo
dGxvYy53eDsKKwl2ZWMyIG4gPSBsaWdodGxvYy56eTsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbi55
LCBuLngsIG0ueCk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF93eHpfeV8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfd3h6X3lfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWZhZDAy
YjhkY2M0NjEyYTA4OTQyMzQ0OGRmYmQ4NTdkN2U1YWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzRfd3h6X3lfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCww
ICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZl
YzMgbSA9IGFsLnd4ejsKKwlmbG9hdCB5ID0gYWwueTsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgeSwg
bS56LCBtLngpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjNF93eHpfeV8xdmVjM18xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzRfd3h6X3lfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODRm
M2Q0YTFkMjgwMzhhYTg3MzRkYzIzZjJjZjI0ZmY1YTljYTZiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfd3h6X3lfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApAQCAt
MCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9W
ZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2Mud3h6OworCWZsb2F0IHkgPSBsaWdodGxvYy55Owor
CXZlYzQgYSA9IHZlYzQobS55LCB5LCBtLnosIG0ueCk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF93eHp5XzF2ZWM0X2ZyYWcuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3d4enlfMXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFi
YWFhMWFhNzc1YzI4NmFjOTkyMjdkZDI2OTJjMDIzN2E0ODZkZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF93eHp5XzF2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzQg
bSA9IGFsLnd4enk7CisJdmVjNCBhID0gdmVjNChtLnksIG0udywgbS56LCBtLngpOworCWdsX0Zy
YWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF93eHp5
XzF2ZWM0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3d4enlfMXZlYzRfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhmMmIwMzdiMDY5M2JkOWZiMWU4Nzc0YWVkYTYyY2FmNmVlZjAz
NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF93eHp5XzF2ZWM0
X3ZlcnQudmVydApAQCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBs
aWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjNCBtID0gbGlnaHRsb2Mud3h6eTsKKwl2ZWM0IGEg
PSB2ZWM0KG0ueSwgbS53LCBtLnosIG0ueCk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94X3lfel93XzRmbG9hdF9mcmFnLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9zd2l6emxlcnMvdmVjNF94X3lfel93XzRmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTk0ZGEzY2UwYWNjYjBjNmQxMmNiNTMyMzc1NWRkYzU1YzgxZjExZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3hfeV96X3dfNGZsb2F0X2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOwor
CWZsb2F0IHggPSBhbC54OworCWZsb2F0IHkgPSBhbC55OworCWZsb2F0IHogPSBhbC56OworCWZs
b2F0IHcgPSBhbC53OworCXZlYzQgbSA9IHZlYzQoeCx5LHosdyk7CisJZ2xfRnJhZ0NvbG9yID0g
bTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3hfeV96X3dfNGZsb2F0
X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3hfeV96X3dfNGZsb2F0X3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZTdmNDFlMzk0MzFhMGU0NDZhN2M1ZWMyNjIwY2FlMjdmYTRhNjE5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeF95X3pfd180Zmxv
YXRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0
IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwlmbG9hdCB4ID0gbGlnaHRsb2MueDsKKwlmbG9hdCB5
ID0gbGlnaHRsb2MueTsKKwlmbG9hdCB6ID0gbGlnaHRsb2MuejsKKwlmbG9hdCB3ID0gbGlnaHRs
b2MudzsKKwl2ZWM0IG0gPSB2ZWM0KHgsIHksIHosIHcpOworCWNvbG9yID0gZ3RmX0NvbG9yOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBtOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHlfendfMnZlYzJfZnJhZy5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHlfendfMnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcxMWRhNGNmNzU5OTZkZDAxNGFjYjY4Yzc3ODdmMTcyNGJkYzhkYTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94eV96d18ydmVjMl9mcmFnLmZyYWcKQEAgLTAs
MCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWlu
ZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2
ZWMyIG0gPSBhbC54eTsKKwl2ZWMyIG4gPSBhbC56dzsKKwl2ZWM0IGEgPSB2ZWM0KG0sbik7CisJ
Z2xfRnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0
X3h5X3p3XzJ2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3h5X3p3XzJ2
ZWMyX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzQ4ZTRjYjU0NDg3OWFjMmY0MjkwY2U2MDJlMWNi
MTY5ODcyN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHlf
endfMnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMyIG0gPSBsaWdodGxvYy54eTsKKwl2
ZWMyIG4gPSBsaWdodGxvYy56dzsKKwl2ZWM0IGEgPSB2ZWM0KG0sbik7CisJY29sb3IgPSBndGZf
Q29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94eXpfd18xdmVjM18xZmxv
YXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHl6X3dfMXZlYzNfMWZsb2F0
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWYwODlkMTM1ZWM2MGFmODlmNThhZGUzNDhjYzI3ZjY0
MzllZmRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHl6X3df
MXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnh5ejsKKwlmbG9hdCB3ID0g
YWwudzsKKwl2ZWM0IGEgPSB2ZWM0KG0sIHcpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94eXpfd18xdmVjM18xZmxvYXRfdmVydC52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHl6X3dfMXZlYzNfMWZsb2F0X3ZlcnQudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYTI1MDE3MDkyOGFlZmQ4ZGJjZDZkY2IwNmMxNWU1MDYwMjEwZWZjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeHl6X3dfMXZlYzNfMWZs
b2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVj
NCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2MueHl6OworCWZsb2F0
IHcgPSBsaWdodGxvYy53OworCXZlYzQgYSA9IHZlYzQobSwgdyk7CisJY29sb3IgPSBndGZfQ29s
b3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94eXp3XzF2ZWM0X2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3h5endfMXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZkZmYxZWE3ZjJkNDllMDExMDI1OTU3NjI2OGVhNjRhM2Q0ZTczMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF94eXp3XzF2ZWM0X2ZyYWcuZnJhZwpAQCAt
MCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOwor
CXZlYzQgbSA9IGFsLnh5enc7CisJZ2xfRnJhZ0NvbG9yID0gbTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3h5endfMXZlYzRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzRfeHl6d18xdmVjNF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBiNmNkZDQwZDE2
OTNjOTFlMDdkMWM5MDhlNzUwYWMyNjkwNjczMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3N3aXp6bGVycy92ZWM0X3h5endfMXZlYzRfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWM0IG0g
PSBsaWdodGxvYy54eXp3OworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBtOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
c3dpenpsZXJzL3ZlYzRfeXhfd3pfMnZlYzJfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3ZlYzRfeXhfd3pfMnZlYzJfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NWQ2ODQyODU5NTI3MGRj
MTNlYWEwODgyNDBiMjk2ODM4ODFkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF95eF93el8ydmVjMl9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9p
ZCBtYWluICh2b2lkKQoreworCXZlYzQgYWwgPSBjb2xvcjsKKwl2ZWMyIG0gPSBhbC55eDsKKwl2
ZWMyIG4gPSBhbC53ejsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbS54LCBuLnksIG4ueCk7CisJZ2xf
RnJhZ0NvbG9yID0gYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3l4
X3d6XzJ2ZWMyX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3l4X3d6XzJ2ZWMy
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjY3NjkxODQ1NzEwZjQyZGIyYTM0OTQ4ZTg1MTlkZjE4
OTYwYWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeXhfd3pf
MnZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJp
YnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2
ZWM0IGxpZ2h0bG9jID0gZ3RmX1ZlcnRleDsKKwl2ZWMyIG0gPSBsaWdodGxvYy55eDsKKwl2ZWMy
IG4gPSBsaWdodGxvYy53ejsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbS54LCBuLnksIG4ueCk7CisJ
Y29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF95eHdf
el8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeXh3X3pf
MXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmFiYTM3ZDRlYWY5OGY3OTMyYTUy
ZWUzYWU2MjlhZTYzYjljY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJz
L3ZlYzRfeXh3X3pfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzMgbSA9IGFsLnl4dzsK
KwlmbG9hdCB6ID0gYWwuejsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbS54LCB6LCBtLnopOworCWds
X0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF95
eHdfel8xdmVjM18xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfeXh3
X3pfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0ZGYyNWZkYTY3N2VhYTFi
MWQ1NWUwYmVjYjc5MTlmZTU4NjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfeXh3X3pfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApAQCAtMCwwICsxLDIyIEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjMyBt
ID0gbGlnaHRsb2MueXh3OworCWZsb2F0IHogPSBsaWdodGxvYy56OworCXZlYzQgYSA9IHZlYzQo
bS55LCBtLngsIHosIG0ueik7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBn
dGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjNF95eHd6XzF2ZWM0X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVy
cy92ZWM0X3l4d3pfMXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MzEwMTk3YWM4MzY4Mjg5
MTFkZGRkZTkyZDVlNzllMjg0Mzk3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF95eHd6XzF2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lk
IG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzQgbSA9IGFsLnl4d3o7CisJ
dmVjNCBhID0gdmVjNChtLnksIG0ueCwgbS53LCBtLnopOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF95eHd6XzF2ZWM0X3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3l4d3pfMXZlYzRfdmVydC52ZXJ0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2N2RiMDM3ODFiNzlmZTlmNjJhMmQzMzIyYzU4NDdiNGVmODY2MmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF95eHd6XzF2ZWM0X3ZlcnQudmVydApAQCAt
MCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9W
ZXJ0ZXg7CisJdmVjNCBtID0gbGlnaHRsb2MueXh3ejsKKwl2ZWM0IGEgPSB2ZWM0KG0ueSwgbS54
LCBtLncsIG0ueik7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6
emxlcnMvdmVjNF96d3hfeV8xdmVjM18xZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfend4X3lfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjk3NzJl
N2I4OTUwYTA4ZTA5NWQ3M2MzNzQyMzA5ODE1NTdiNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvc3dpenpsZXJzL3ZlYzRfend4X3lfMXZlYzNfMWZsb2F0X2ZyYWcuZnJhZwpAQCAtMCww
ICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5n
IHZlYzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZl
YzMgbSA9IGFsLnp3eDsKKwlmbG9hdCB5ID0gYWwueTsKKwl2ZWM0IGEgPSB2ZWM0KG0ueiwgeSwg
bS54LCBtLnkpOworCWdsX0ZyYWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9z
d2l6emxlcnMvdmVjNF96d3hfeV8xdmVjM18xZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dp
enpsZXJzL3ZlYzRfend4X3lfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDZi
NzMyMzNhZmNiN2U0MDZlNDg5ODBiNGMxMGZkMTEyNWI0MDBlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRfend4X3lfMXZlYzNfMWZsb2F0X3ZlcnQudmVydApAQCAt
MCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBsaWdodGxvYyA9IGd0Zl9W
ZXJ0ZXg7CisJdmVjMyBtID0gbGlnaHRsb2Muend4OworCWZsb2F0IHkgPSBsaWdodGxvYy55Owor
CXZlYzQgYSA9IHZlYzQobS56LCB5LCBtLngsIG0ueSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJ
Z2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF96d3h5XzF2ZWM0X2ZyYWcuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3p3eHlfMXZlYzRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFj
NzAxMzc0NTg3ZWNlYjJkYjdjZTNkOTlmODk0MTJmYjdiYjZkZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF96d3h5XzF2ZWM0X2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzQgY29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzQg
bSA9IGFsLnp3eHk7CisJdmVjNCBhID0gdmVjNChtLnosIG0udywgbS54LCBtLnkpOworCWdsX0Zy
YWdDb2xvciA9IGE7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF96d3h5
XzF2ZWM0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3N3aXp6bGVycy92ZWM0X3p3eHlfMXZlYzRfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRkM2RjNTViNjk0YTk3MTMxMjU5NjU4MjRmMWQ4ZTlkOTYxNjU1
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF96d3h5XzF2ZWM0
X3ZlcnQudmVydApAQCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUg
dmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBs
aWdodGxvYyA9IGd0Zl9WZXJ0ZXg7CisJdmVjNCBtID0gbGlnaHRsb2Muend4eTsKKwl2ZWM0IGEg
PSB2ZWM0KG0ueiwgbS53LCBtLngsIG0ueSk7CisJY29sb3IgPSBndGZfQ29sb3I7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGE7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9zd2l6emxlcnMvdmVjNF96eF93eV8ydmVjMl9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC9zd2l6emxlcnMvdmVjNF96eF93eV8ydmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEyMzM1
NmJkNWQ4MGUyZmZlMWM5MGM5OTlkOTlmZjcyMDYzNzg2OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3N3aXp6bGVycy92ZWM0X3p4X3d5XzJ2ZWMyX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIw
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZk
ZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQg
Y29sb3I7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBhbCA9IGNvbG9yOworCXZlYzIgbSA9
IGFsLnp4OworCXZlYzIgbiA9IGFsLnd5OworCXZlYzQgYSA9IHZlYzQobS55LCBuLnksIG0ueCwg
bi54KTsKKwlnbF9GcmFnQ29sb3IgPSBhOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenps
ZXJzL3ZlYzRfenhfd3lfMnZlYzJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvc3dpenpsZXJzL3ZlYzRf
enhfd3lfMnZlYzJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYWQ4MTE5ODdmMWIyYzkyYjkzZGZk
OTJiMzlhY2UzNWE3YjU4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC9zd2l6emxlcnMv
dmVjNF96eF93eV8ydmVjMl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0Nv
bG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzQgbGlnaHRsb2MgPSBndGZfVmVydGV4OworCXZlYzIgbSA9IGxpZ2h0bG9j
Lnp4OworCXZlYzIgbiA9IGxpZ2h0bG9jLnd5OworCXZlYzQgYSA9IHZlYzQobS55LCBuLnksIG0u
eCwgbi54KTsKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogYTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi9pbnB1
dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL2lucHV0LnJ1bi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzYTAw
ZjcwMDE5OGE5YzdiM2YyMWIzZjc5NjU4YmY5NDVlNjYyOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Rhbi9pbnB1dC5ydW4udHh0CkBAIC0wLDAgKzEsMiBAQAorIyB0aGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgordGFuXzAwMV90b18wMDYuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl8wMDFfdG9fMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFu
XzAwMV90b18wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTQ1MWJmYzVjMzJjYWYyZDEzNmVhMjYwZDZm
YTg5MzEzMjMzZGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl8wMDFfdG9f
MDA2Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB0aGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULiAtLT4KKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25mb3JtYW5jZSB0ZXN0OiB0YW5fMDAxX3Rv
XzAwNi5odG1sPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvb2dsZXMtdGVzdHMuY3NzIiAvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9vZ2xlcy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiBzdHlsZT0id2lk
dGg6IDE2cHg7IGhlaWdodDogMTZweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworT3BlbkdMRVNUZXN0UnVubmVyLnJ1bih7CisgICJ0ZXN0cyI6IFsKKyAgICB7
CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIu
Li9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ0YW5f
ZmxvYXRfZnJhZ194dmFyeV9yZWYuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxs
LAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInRhbl9mbG9h
dF9mcmFnX3h2YXJ5LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidGFuX2Zsb2F0X2Zy
YWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwK
KyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6
ICJ0YW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6
IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidGFu
X3ZlYzJfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInRhbl92ZWMy
X2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAg
fSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRl
ciI6ICJ0YW5fdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2Rl
bCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIi
OiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAi
dGFuX3ZlYzNfZnJhZ194dmFyeS5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInRhbl92
ZWMzX2ZyYWdfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisg
ICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRl
eFNoYWRlciI6ICJ0YW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhT
aGFkZXIiOiAidGFuX2Zsb2F0X3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6
ICJ0YW5fZmxvYXRfdmVydF94dmFyeS50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29t
cGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogInRhbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogImdyaWQiLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAi
dmVydGV4U2hhZGVyIjogInRhbl92ZWMyX3ZlcnRfeHZhcnkudmVydCIsCisgICAgICAgICJmcmFn
bWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAi
bmFtZSI6ICJ0YW5fdmVjMl92ZXJ0X3h2YXJ5LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6
ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidGFuX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydCIsCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiAiZ3JpZCIsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAg
ICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidGFuX3ZlYzNfdmVydF94dmFyeS52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogInRhbl92ZWMzX3ZlcnRfeHZhcnkudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFu
X2Zsb2F0X2ZyYWdfeHZhcnkuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fZmxvYXRfZnJhZ194dmFy
eS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYyMzVkMDVkMDg5MGU1ZWVlMThkZDQ4ZTNjYzA1OGU2M2U4Mzdj
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFuX2Zsb2F0X2ZyYWdfeHZhcnku
ZnJhZwpAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2Vu
ZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBm
bG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjID0gMC41ICogTV9Q
SSAqIDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlmbG9hdCBvOworCisJaWYoYWJzKGMpIDwgMC41
KSAgIC8vIC00NS4uNDUKKwkJbyA9IDAuNSAqIHRhbihjKSArIDAuNTsKKwllbHNlICAgLy8gNDUu
LjkwLCAtNDUuLi05MAorCQlvID0gMC41IC8gdGFuKGMpICsgMC41OworCWdsX0ZyYWdDb2xvciA9
IHZlYzQobywgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFu
X2Zsb2F0X2ZyYWdfeHZhcnlfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFuX2Zsb2F0X2ZyYWdf
eHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4ZTM5OTY4NThiNjk0NjJmZDU5MjU1ODMwYjA4
NjMyMWEzMDU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fZmxvYXRfZnJh
Z194dmFyeV9yZWYuZnJhZwpAQCAtMCwwICsxLDI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBj
ID0gMC41ICogTV9QSSAqIDIuMCAqIChjb2xvci5yIC0gMC41KTsKKwlmbG9hdCBvOworCWlmKGFi
cyhjKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJCW8gPSAwLjUgKiAoc2luKGMpIC8gY29zKGMpKSAr
IDAuNTsKKwllbHNlICAgLy8gNDUuLjkwLCAtNDUuLi05MAorCQlvID0gMC41ICogKGNvcyhjKSAv
IHNpbihjKSkgKyAwLjU7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChvLCAwLjAsIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fZmxvYXRfdmVydF94dmFyeS52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wvdGFuL3Rhbl9mbG9hdF92ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2EyYmZj
MDk2ODViZDQ1N2JjZjRkNDE0ZmMzNzJhM2NlNWY0NmY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3Rhbi90YW5fZmxvYXRfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMjYgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMy
Mzg0NjsKKwlmbG9hdCBjID0gMC41ICogTV9QSSAqIDIuMCAqIChndGZfQ29sb3IuciAtIDAuNSk7
CisJZmxvYXQgbzsKKworCWlmKGFicyhjKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJCW8gPSAwLjUg
KiB0YW4oYykgKyAwLjU7CisJZWxzZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJbyA9IDAuNSAv
IHRhbihjKSArIDAuNTsKKwljb2xvciA9IHZlYzQobywgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFuX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC90YW4vdGFuX2Zsb2F0X3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc0
NTAyZjYxZDEwNGExOWQzZjFjOWEwZDU1ZmJlMWYyMzA2MTAzNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dML3Rhbi90YW5fZmxvYXRfdmVydF94dmFyeV9yZWYudmVydApAQCAtMCwwICsxLDI1
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0IGNvbG9y
OworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUz
NTg5NzkzMjM4NDY7CisJZmxvYXQgYyA9IDAuNSAqIE1fUEkgKiAyLjAgKiAoZ3RmX0NvbG9yLnIg
LSAwLjUpOworCWZsb2F0IG87CisJaWYoYWJzKGMpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJbyA9
IDAuNSAqIChzaW4oYykgLyBjb3MoYykpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4u
LTkwCisJCW8gPSAwLjUgKiAoY29zKGMpIC8gc2luKGMpKSArIDAuNTsKKwljb2xvciA9IHZlYzQo
bywgMC4wLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFuX3Zl
YzJfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMyX2ZyYWdfeHZhcnkuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MjNhNjYyMDhiNWYzZTY3OGNjYmI4ZTJmZDAzYzhjM2FmOGZiYjkwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMyX2ZyYWdfeHZhcnkuZnJhZwpA
QCAtMCwwICsxLDMwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBN
X1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAwLjUgKiBNX1BJICogMi4w
ICogKGNvbG9yLnJnIC0gMC41KTsKKwl2ZWMyIG87CisJaWYoYWJzKGMucikgPCAwLjUpICAgLy8g
LTQ1Li40NQorCQlvLnIgPSAwLjUgKiB0YW4oYy5yKSArIDAuNTsKKwllbHNlICAgLy8gNDUuLjkw
LCAtNDUuLi05MAorCQlvLnIgPSAwLjUgLyB0YW4oYy5yKSArIDAuNTsKKworCWlmKGFicyhjLmcp
IDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5nID0gMC41ICogdGFuKGMuZykgKyAwLjU7CisJZWxz
ZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJby5nID0gMC41IC8gdGFuKGMuZykgKyAwLjU7CisK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0KG8sIDAuMCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Rhbi90YW5fdmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92
ZWMyX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNmMzU3ZGEzNGIxN2ZlZGNjZDI2
NTQ5YTQ3Y2ExYTZhOGVjNzExMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5f
dmVjMl9mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMzAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2Owor
CXZlYzIgYyA9IDAuNSAqIE1fUEkgKiAyLjAgKiAoY29sb3IucmcgLSAwLjUpOworCXZlYzIgbzsK
KwlpZihhYnMoYy5yKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJCW8uciA9IDAuNSAqIChzaW4oYy5y
KSAvIGNvcyhjLnIpKSArIDAuNTsKKwllbHNlICAgLy8gNDUuLjkwLCAtNDUuLi05MAorCQlvLnIg
PSAwLjUgKiAoY29zKGMucikgLyBzaW4oYy5yKSkgKyAwLjU7CisKKwlpZihhYnMoYy5nKSA8IDAu
NSkgICAvLyAtNDUuLjQ1CisJCW8uZyA9IDAuNSAqIChzaW4oYy5nKSAvIGNvcyhjLmcpKSArIDAu
NTsKKwllbHNlICAgLy8gNDUuLjkwLCAtNDUuLi05MAorCQlvLmcgPSAwLjUgKiAoY29zKGMuZykg
LyBzaW4oYy5nKSkgKyAwLjU7CisKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KG8sIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fdmVjMl92ZXJ0X3h2YXJ5LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC90YW4vdGFuX3ZlYzJfdmVydF94dmFyeS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMDQxNzEz
MDI2MTBjYmI2NDExY2M1MTMxNmMyNWFhYTk4ODIyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC90YW4vdGFuX3ZlYzJfdmVydF94dmFyeS52ZXJ0CkBAIC0wLDAgKzEsMzEgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0
NjsKKwl2ZWMyIGMgPSAwLjUgKiBNX1BJICogMi4wICogKGd0Zl9Db2xvci5yZyAtIDAuNSk7CisJ
dmVjMiBvOworCWlmKGFicyhjLnIpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5yID0gMC41ICog
dGFuKGMucikgKyAwLjU7CisJZWxzZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJby5yID0gMC41
IC8gdGFuKGMucikgKyAwLjU7CisKKwlpZihhYnMoYy5nKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJ
CW8uZyA9IDAuNSAqIHRhbihjLmcpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4uLTkw
CisJCW8uZyA9IDAuNSAvIHRhbihjLmcpICsgMC41OworCisJY29sb3IgPSB2ZWM0KG8sIDAuMCwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fdmVjMl92ZXJ0X3h2YXJ5
X3JlZi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMyX3ZlcnRfeHZhcnlfcmVmLnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDFiMDA3OTkxN2ZiZWI3NmM3ZTZlNGYwODYzZmQ4YmM3ZWY0YWU0MgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90YW5fdmVjMl92ZXJ0X3h2YXJ5X3JlZi52ZXJ0CkBA
IC0wLDAgKzEsMzEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5n
IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0g
My4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMyIGMgPSAwLjUgKiBNX1BJICogMi4wICogKGd0
Zl9Db2xvci5yZyAtIDAuNSk7CisJdmVjMiBvOworCWlmKGFicyhjLnIpIDwgMC41KSAgIC8vIC00
NS4uNDUKKwkJby5yID0gMC41ICogKHNpbihjLnIpIC8gY29zKGMucikpICsgMC41OworCWVsc2Ug
ICAvLyA0NS4uOTAsIC00NS4uLTkwCisJCW8uciA9IDAuNSAqIChjb3MoYy5yKSAvIHNpbihjLnIp
KSArIDAuNTsKKworCWlmKGFicyhjLmcpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5nID0gMC41
ICogKHNpbihjLmcpIC8gY29zKGMuZykpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4u
LTkwCisJCW8uZyA9IDAuNSAqIChjb3MoYy5nKSAvIHNpbihjLmcpKSArIDAuNTsKKworCWNvbG9y
ID0gdmVjNChvLCAwLjAsIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFu
X3ZlYzNfZnJhZ194dmFyeS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMzX2ZyYWdfeHZhcnku
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZjFjNWNkYWQ3MDBlMzc5NmFkNGI0NWJmMTE1ZTY1NGRkOWM2MzUw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMzX2ZyYWdfeHZhcnkuZnJh
ZwpAQCAtMCwwICsxLDM1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9h
dCBNX1BJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKKwl2ZWMzIGMgPSAwLjUgKiBNX1BJICog
Mi4wICogKGNvbG9yLnJnYiAtIDAuNSk7CisJdmVjMyBvOworCWlmKGFicyhjLnIpIDwgMC41KSAg
IC8vIC00NS4uNDUKKwkJby5yID0gMC41ICogdGFuKGMucikgKyAwLjU7CisJZWxzZSAgIC8vIDQ1
Li45MCwgLTQ1Li4tOTAKKwkJby5yID0gMC41IC8gdGFuKGMucikgKyAwLjU7CisKKwlpZihhYnMo
Yy5nKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJCW8uZyA9IDAuNSAqIHRhbihjLmcpICsgMC41Owor
CWVsc2UgICAvLyA0NS4uOTAsIC00NS4uLTkwCisJCW8uZyA9IDAuNSAvIHRhbihjLmcpICsgMC41
OworCisJaWYoYWJzKGMuYikgPCAwLjUpICAgLy8gLTQ1Li40NQorCQlvLmIgPSAwLjUgKiB0YW4o
Yy5iKSArIDAuNTsKKwllbHNlICAgLy8gNDUuLjkwLCAtNDUuLi05MAorCQlvLmIgPSAwLjUgLyB0
YW4oYy5iKSArIDAuNTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQobywgMS4wKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3Rhbi90YW5fdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvdGFuL3Rhbl92ZWMzX2ZyYWdfeHZhcnlfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUzZjdiZDc5
MjJmODRiYWRjZjE3YTA2OGNkYmE1ZTBjMDVkODhiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3Rhbi90YW5fdmVjM19mcmFnX3h2YXJ5X3JlZi5mcmFnCkBAIC0wLDAgKzEsMzUgQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsK
Kwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4
OTc5MzIzODQ2OworCXZlYzMgYyA9IDAuNSAqIE1fUEkgKiAyLjAgKiAoY29sb3IucmdiIC0gMC41
KTsKKwl2ZWMzIG87CisJaWYoYWJzKGMucikgPCAwLjUpICAgLy8gLTQ1Li40NQorCQlvLnIgPSAw
LjUgKiAoc2luKGMucikgLyBjb3MoYy5yKSkgKyAwLjU7CisJZWxzZSAgIC8vIDQ1Li45MCwgLTQ1
Li4tOTAKKwkJby5yID0gMC41ICogKGNvcyhjLnIpIC8gc2luKGMucikpICsgMC41OworCisJaWYo
YWJzKGMuZykgPCAwLjUpICAgLy8gLTQ1Li40NQorCQlvLmcgPSAwLjUgKiAoc2luKGMuZykgLyBj
b3MoYy5nKSkgKyAwLjU7CisJZWxzZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJby5nID0gMC41
ICogKGNvcyhjLmcpIC8gc2luKGMuZykpICsgMC41OworCisJaWYoYWJzKGMuYikgPCAwLjUpICAg
Ly8gLTQ1Li40NQorCQlvLmIgPSAwLjUgKiAoc2luKGMuYikgLyBjb3MoYy5iKSkgKyAwLjU7CisJ
ZWxzZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJby5iID0gMC41ICogKGNvcyhjLmIpIC8gc2lu
KGMuYikpICsgMC41OworCisJZ2xfRnJhZ0NvbG9yID0gdmVjNChvLCAxLjApOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMzX3ZlcnRfeHZhcnkudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rh
bi90YW5fdmVjM192ZXJ0X3h2YXJ5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZkZWNkZTE2ZDFjODFhNGVj
OThmYWE1NjExZjdkZjM2MTk0ZjBjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3Rhbi90
YW5fdmVjM192ZXJ0X3h2YXJ5LnZlcnQKQEAgLTAsMCArMSwzNiBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9y
OworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMg
YyA9IDAuNSAqIE1fUEkgKiAyLjAgKiAoZ3RmX0NvbG9yLnJnYiAtIDAuNSk7CisJdmVjMyBvOwor
CWlmKGFicyhjLnIpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5yID0gMC41ICogdGFuKGMucikg
KyAwLjU7CisJZWxzZSAgIC8vIDQ1Li45MCwgLTQ1Li4tOTAKKwkJby5yID0gMC41IC8gdGFuKGMu
cikgKyAwLjU7CisKKwlpZihhYnMoYy5nKSA8IDAuNSkgICAvLyAtNDUuLjQ1CisJCW8uZyA9IDAu
NSAqIHRhbihjLmcpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4uLTkwCisJCW8uZyA9
IDAuNSAvIHRhbihjLmcpICsgMC41OworCisJaWYoYWJzKGMuYikgPCAwLjUpICAgLy8gLTQ1Li40
NQorCQlvLmIgPSAwLjUgKiB0YW4oYy5iKSArIDAuNTsKKwllbHNlICAgLy8gNDUuLjkwLCAtNDUu
Li05MAorCQlvLmIgPSAwLjUgLyB0YW4oYy5iKSArIDAuNTsKKworCWNvbG9yID0gdmVjNChvLCAx
LjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMzX3ZlcnRfeHZhcnlf
cmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC90YW4vdGFuX3ZlYzNfdmVydF94dmFyeV9yZWYudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZjM4YjMwZjg3ZGE1ZGI3YzJkM2E2N2YwYzRhNTMzNzFhYzM1ZjM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvdGFuL3Rhbl92ZWMzX3ZlcnRfeHZhcnlfcmVmLnZlcnQKQEAg
LTAsMCArMSwzNiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
dmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCXZlYzMgYyA9IDAuNSAqIE1fUEkgKiAyLjAgKiAoZ3Rm
X0NvbG9yLnJnYiAtIDAuNSk7CisJdmVjMyBvOworCWlmKGFicyhjLnIpIDwgMC41KSAgIC8vIC00
NS4uNDUKKwkJby5yID0gMC41ICogKHNpbihjLnIpIC8gY29zKGMucikpICsgMC41OworCWVsc2Ug
ICAvLyA0NS4uOTAsIC00NS4uLTkwCisJCW8uciA9IDAuNSAqIChjb3MoYy5yKSAvIHNpbihjLnIp
KSArIDAuNTsKKworCWlmKGFicyhjLmcpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5nID0gMC41
ICogKHNpbihjLmcpIC8gY29zKGMuZykpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4u
LTkwCisJCW8uZyA9IDAuNSAqIChjb3MoYy5nKSAvIHNpbihjLmcpKSArIDAuNTsKKworCWlmKGFi
cyhjLmIpIDwgMC41KSAgIC8vIC00NS4uNDUKKwkJby5iID0gMC41ICogKHNpbihjLmIpIC8gY29z
KGMuYikpICsgMC41OworCWVsc2UgICAvLyA0NS4uOTAsIC00NS4uLTkwCisJCW8uYiA9IDAuNSAq
IChjb3MoYy5iKSAvIHNpbihjLmIpKSArIDAuNTsKKworCWNvbG9yID0gdmVjNChvLCAxLjApOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL2J2ZWM0XzJpbnRfMmZsb2F0X2ZyYWcuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3ZlYy9idmVjNF8yaW50XzJmbG9hdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmNkZDRjMDBiZjk0NGE4ZjIwZTkxM2FhOTkzMzk0ODFkMThhNjY3NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3ZlYy9idmVjNF8yaW50XzJmbG9hdF9mcmFnLmZyYWcKQEAgLTAsMCArMSwy
MiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJYnZlYzQgYSA9IGJ2ZWM0KDAsIDIzLCAw
LjAsIDIzLjApOworCWZsb2F0IGdyYXk7CisJaWYoIChhWzBdID09IGZhbHNlKSAmJiAoYVsxXSA9
PSB0cnVlKSAmJiAoYVsyXSA9PSBmYWxzZSkgJiYgKGFbM10gPT0gdHJ1ZSkgKQorCWdyYXk9MS4w
OworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5
LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL2J2ZWM0XzJpbnRfMmZsb2F0X3Zl
cnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3ZlYy9idmVjNF8yaW50XzJmbG9hdF92ZXJ0LnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDFjMWU5ZTlkZWRkOGZlYWU3Mzg0ODgwOTRmNzk1NDRjNjYyY2MzMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dML3ZlYy9idmVjNF8yaW50XzJmbG9hdF92ZXJ0LnZlcnQKQEAgLTAs
MCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWJ2ZWM0IGEgPSBidmVjNCgwLCAyMywgMC4wLCAyMy4wKTsKKwlmbG9hdCBncmF5Owor
CWlmKCAoYVswXSA9PSBmYWxzZSkgJiYgKGFbMV0gPT0gdHJ1ZSkgJiYgKGFbMl0gPT0gZmFsc2Up
ICYmIChhWzNdID09IHRydWUpICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9y
ID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC92ZWMvaW5wdXQucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy9pbnB1dC5ydW4udHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU1YmEwN2YxMmM1MDMzMzQ5MDVmNjkxZmNlMGQwMDVmMWMzZTQzNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvaW5wdXQucnVuLnR4dApAQCAtMCwwICsxLDQgQEAKKyMg
dGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4KK3ZlY18wMDFfdG9fMDA4
Lmh0bWwKK3ZlY18wMDlfdG9fMDE2Lmh0bWwKK3ZlY18wMTdfdG9fMDE4Lmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3ZlYy9pdmVjM18zaW50X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy9pdmVj
M18zaW50X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmJiOTBjZjI2MGFjMGUxMWVjOTdjMTRhMGE5
ZTI4YjdmN2U5NDMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL2l2ZWMzXzNpbnRf
ZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWl2
ZWMzIGEgPSBpdmVjMygyMCwgMTMsIDE3KTsKKwlmbG9hdCBncmF5OworCWlmKCAoYVswXSA9PSAy
MCkgJiYgKGFbMV0gPT0gMTMpICYmIChhWzJdID09IDE3KSApCisJZ3JheT0xLjA7CisJZWxzZSBn
cmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvaXZlYzNfM2ludF92ZXJ0LnZlcnQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC92ZWMvaXZlYzNfM2ludF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAwMDBmODVmODNiMTNmNWVm
OTk2Mzg4OTgyYjY0YTVjZGQxZDBlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy9p
dmVjM18zaW50X3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4Owor
dW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaXZlYzMgYSA9IGl2ZWMzKDIwLCAxMywg
MTcpOworCWZsb2F0IGdyYXk7CisJaWYoIChhWzBdID09IDIwKSAmJiAoYVsxXSA9PSAxMykgJiYg
KGFbMl0gPT0gMTcpICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNvbG9yID0gdmVj
NChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1By
b2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92
ZWMvdmVjMl8yZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzJfMmZsb2F0X2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNGFhMTUwYTgzYTlmNWVhYWE5MDNhNzMyMzc4YmU4YWNkMzM3ZTBh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzJfMmZsb2F0X2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGEgPSB2ZWMy
KDEzLjAsNTMuMCk7CisJZmxvYXQgZ3JheTsKKwlpZiggKGFbMF0gPT0gMTMuMCkgJiYgKGFbMV0g
PT0gNTMuMCkgKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0g
dmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVj
L3ZlYzJfMmZsb2F0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMyXzJmbG9hdF92ZXJ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDQwODBiZjhkMjQwZWU0NmFiMDYwNzkyNjk2NWFiMzE4ODEyNTVlNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMyXzJmbG9hdF92ZXJ0LnZlcnQKQEAg
LTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2
b2lkKQoreworCXZlYzIgYSA9IHZlYzIoMTMuMCw1My4wKTsKKwlmbG9hdCBncmF5OworCWlmKCAo
YVswXSA9PSAxMy4wKSAmJiAoYVsxXSA9PSA1My4wKSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5
PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzJfdmVjM19mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMv
dmVjMl92ZWMzX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjcwMmVjNTk5ZTUxYWFkMWZiNWI0YTU2
NmYxYTRjOTEwMDk5NGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzJfdmVj
M19mcmFnLmZyYWcKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVjMyBiID0gdmVjMygxMy4wLCA1My4wLCAxMzkuMCk7CisJdmVjMiBhID0gdmVjMihiKTsKKwlm
bG9hdCBncmF5OworCWlmKCAoYVswXSA9PSAxMy4wKSAmJiAoYVsxXSA9PSA1My4wKSApCisJZ3Jh
eT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0KGdyYXksIGdyYXks
IGdyYXksIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjMl92ZWMzX3ZlcnQu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3ZlYy92ZWMyX3ZlYzNfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwM2U1
NzMxNDEzMWU1ZjU2N2ZlMWI4NDNkNzdiYWI3ZTIxMTFkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTC92ZWMvdmVjMl92ZWMzX3ZlcnQudmVydApAQCAtMCwwICsxLDIzIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBiID0gdmVj
MygxMy4wLCA1My4wLCAxMzkuMCk7CisJdmVjMiBhID0gdmVjMihiKTsKKwlmbG9hdCBncmF5Owor
CWlmKCAoYVswXSA9PSAxMy4wKSAmJiAoYVsxXSA9PSA1My4wKSApCisJZ3JheT0xLjA7CisJZWxz
ZSBncmF5PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX2Zsb2F0X3ZlYzJfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvdmVjL3ZlYzNfZmxvYXRfdmVjMl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU1ZDExNmE3
ZTIyM2Y2NTA0ZmU2MmI3MjgwMTQ3OThlMzM2N2VjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3ZlYy92ZWMzX2Zsb2F0X3ZlYzJfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMjMgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYiA9IHZlYzIoNTMuMCwgMTM5LjApOworCXZlYzMg
YSA9IHZlYzMoMTMuMCwgYik7CisJZmxvYXQgZ3JheTsKKwlpZiggKGFbMF0gPT0gMTMuMCkgJiYg
KGFbMV0gPT0gNTMuMCkgJiYgKGFbMl0gPT0gMTM5LjApICkKKwlncmF5PTEuMDsKKwllbHNlIGdy
YXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX2Zsb2F0X3ZlYzJfdmVydC52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvdmVjL3ZlYzNfZmxvYXRfdmVjMl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FhMTlkMGM5
ZWNlMjBjOThjYzllZDRhYTliZjkxMTM2NWE1NmY0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3ZlYy92ZWMzX2Zsb2F0X3ZlYzJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjMgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMyIGIgPSB2
ZWMyKDUzLjAsIDEzOS4wKTsKKwl2ZWMzIGEgPSB2ZWMzKDEzLjAsIGIpOworCWZsb2F0IGdyYXk7
CisJaWYoIChhWzBdID09IDEzLjApICYmIChhWzFdID09IDUzLjApICYmIChhWzJdID09IDEzOS4w
KSApCisJZ3JheT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3Jh
eSwgZ3JheSwgMS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX3ZlYzJf
ZmxvYXRfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzNfdmVjMl9mbG9hdF9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjZlZmE2MDcyNDYyN2FhODhhMGNjZWE1Mjk0YTY5OGYzZTdjOWVhNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX3ZlYzJfZmxvYXRfZnJhZy5mcmFnCkBA
IC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzIgYiA9IHZlYzIo
MTMuMCwgNTMuMCk7CisJdmVjMyBhID0gdmVjMyhiLCAxMzkuMCk7CisJZmxvYXQgZ3JheTsKKwlp
ZiggKGFbMF0gPT0gMTMuMCkgJiYgKGFbMV0gPT0gNTMuMCkgJiYgKGFbMl0gPT0gMTM5LjApICkK
KwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZlYzQoZ3JheSwg
Z3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX3ZlYzJf
ZmxvYXRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzNfdmVjMl9mbG9hdF92ZXJ0LnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWNkYmYxZDkxOWE3ZjQ3NmI2YWJiN2M0ZDVmNjEwZGMyYmJmNmM2ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX3ZlYzJfZmxvYXRfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsMjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWMyIGIgPSB2ZWMyKDEzLjAsIDUzLjApOworCXZlYzMgYSA9IHZlYzMoYiwx
MzkuMCk7CisJZmxvYXQgZ3JheTsKKwlpZiggKGFbMF0gPT0gMTMuMCkgJiYgKGFbMV0gPT0gNTMu
MCkgJiYgKGFbMl0gPT0gMTM5LjApICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWNv
bG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvdmVjL3ZlYzNfdmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjM192ZWM0X2Zy
YWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMWUwNzJkNWZiZWJlMjMxYjk5Nzc5Y2VmZDY1MDY5NGY4ZTY3
OTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzNfdmVjNF9mcmFnLmZyYWcK
QEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCBiID0gdmVj
NCgxMy4wLCA1My4wLCAxMzkuMCwgMjE3LjApOworCXZlYzMgYSA9IHZlYzMoYik7CisJZmxvYXQg
Z3JheTsKKwlpZiggKGFbMF0gPT0gMTMuMCkgJiYgKGFbMV0gPT0gNTMuMCkgJiYgKGFbMl0gPT0g
MTM5LjApICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xvciA9IHZl
YzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92
ZWMzX3ZlYzRfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzNfdmVjNF92ZXJ0LnZlcnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTEyM2Q2ZDRmZGQyMDU2N2Y4NTM3OWE3NmVkN2YzZmYwOGJiYTZlYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWMzX3ZlYzRfdmVydC52ZXJ0CkBAIC0wLDAgKzEs
MjMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwl2ZWM0IGIgPSB2ZWM0KDEzLjAsIDUzLjAsIDEzOS4wLCAyMTcuMCk7CisJdmVjMyBhID0gdmVj
MyhiKTsKKwlmbG9hdCBncmF5OworCWlmKCAoYVswXSA9PSAxMy4wKSAmJiAoYVsxXSA9PSA1My4w
KSAmJiAoYVsyXSA9PSAxMzkuMCkgKQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJY29s
b3IgPSB2ZWM0KGdyYXksIGdyYXksIGdyYXksIDEuMCk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTC92ZWMvdmVjNF9pdmVjNF9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjNF9pdmVjNF9m
cmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU5MzU2NDM4MWJkNTdhNTFhNjM2Yzc1NzY3Mzc3MzVkZmRi
M2Q5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWM0X2l2ZWM0X2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlpdmVjNCBpbml0
ID0gaXZlYzQoMiwzLDUsOSk7CisJdmVjNCBhID0gdmVjNChpbml0KTsKKwlmbG9hdCBncmF5Owor
CWlmKCAoYVswXSA9PSAyLjApICYmIChhWzFdID09IDMuMCkgJiYgKGFbMl0gPT0gNS4wKSAmJiAo
YVszXSA9PSA5LjApICkKKwlncmF5PTEuMDsKKwllbHNlIGdyYXk9MC4wOworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3ZlYy92ZWM0X2l2ZWM0X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWM0X2l2ZWM0X3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTU2ZjM5OGQ3ZjQ0NWRmNTA5N2UwMGNhZTYwOWFhMjFlNTM2N2I3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzRfaXZlYzRfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsMjQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwlpdmVjNCBpbml0ID0gaXZlYzQoMiwzLDUsOSk7CisJdmVjNCBhID0gdmVjNChp
bml0KTsKKwlmbG9hdCBncmF5OworCWlmKCAoYVswXSA9PSAyLjApICYmIChhWzFdID09IDMuMCkg
JiYgKGFbMl0gPT0gNS4wKSAmJiAoYVszXSA9PSA5LjApICkKKwlncmF5PTEuMDsKKwllbHNlIGdy
YXk9MC4wOworCWNvbG9yID0gdmVjNChncmF5LCBncmF5LCBncmF5LCAxLjApOworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjNF92ZWMzX2Zsb2F0X2ZyYWcuZnJhZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3ZlYy92ZWM0X3ZlYzNfZmxvYXRfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYjlmNTg1ZWQ4
ZjlkY2E4MDRkY2QwYTJiMjdhMzhlYjU5ZWQ0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC92ZWMvdmVjNF92ZWMzX2Zsb2F0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIzIEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwl2ZWMzIGIgPSB2ZWMzKDEzLjAsIDUzLjAsIDEzOS4wKTsKKwl2
ZWM0IGEgPSB2ZWM0KGIsIDIxNy4wKTsKKwlmbG9hdCBncmF5OworCWlmKCAoYVswXSA9PSAxMy4w
KSAmJiAoYVsxXSA9PSA1My4wKSAmJiAoYVsyXSA9PSAxMzkuMCkgJiYgKGFbM10gPT0gMjE3LjAp
KQorCWdyYXk9MS4wOworCWVsc2UgZ3JheT0wLjA7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNChncmF5
LCBncmF5LCBncmF5LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzRfdmVj
M19mbG9hdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjNF92ZWMzX2Zsb2F0X3ZlcnQudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTFiNDIyYTUxOGVkNGNhMWUyYTVlYzhjNzgxNjAyOGIxYjk5M2IyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlYzRfdmVjM19mbG9hdF92ZXJ0LnZlcnQK
QEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCXZlYzMgYiA9IHZlYzMoMTMuMCwgNTMuMCwgMTM5LjApOworCXZlYzQgYSA9
IHZlYzQoYiwgMjE3LjApOworCWZsb2F0IGdyYXk7CisJaWYoIChhWzBdID09IDEzLjApICYmIChh
WzFdID09IDUzLjApICYmIChhWzJdID09IDEzOS4wKSAmJiAoYVszXSA9PSAyMTcuMCkpCisJZ3Jh
eT0xLjA7CisJZWxzZSBncmF5PTAuMDsKKwljb2xvciA9IHZlYzQoZ3JheSwgZ3JheSwgZ3JheSwg
MS4wKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3Rm
X1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWNfMDAxX3RvXzAwOC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvdmVjL3ZlY18wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUxZWZkNWU4
NDI2ZDNmMjg2NTI2NWE1ZDRlYWIzYmM3NzUwODE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3ZlYy92ZWNfMDAxX3RvXzAwOC5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0gdGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBETyBOT1QgRURJVC4gLS0+
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgY29uZm9ybWFu
Y2UgdGVzdDogdmVjXzAwMV90b18wMDguaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29nbGVzLXRl
c3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAwIiBoZWln
aHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5ydW4oewor
ICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5m
cmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0i
OiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAor
ICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjMl8yZmxvYXRfZnJhZy5mcmFnIgorICAgICAg
fSwKKyAgICAgICJuYW1lIjogInZlYzJfMmZsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAg
ICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAg
ICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwK
KyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZh
dWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAg
ICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMyXzJmbG9hdF92
ZXJ0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0
LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjMl8yZmxvYXRfdmVydC50ZXN0Lmh0
bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJy
ZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQv
ZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQi
OiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9y
bTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAg
ICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwi
OiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZl
YzRfaXZlYzRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfaXZlYzRf
ZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAg
IHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjog
Ii4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAg
ICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5
cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAg
IDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAg
ICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisg
ICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogInZlYzRfaXZlYzRfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjog
InZlYzRfaXZlYzRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVy
dGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1z
IjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAg
ICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIK
KyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIml2ZWMzXzNpbnRfZnJhZy5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogIml2ZWMzXzNpbnRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4i
OiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogewor
ICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAg
ICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291
bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAi
dmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAg
ICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhw
ZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIml2ZWMzXzNpbnRfdmVydC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogIml2ZWMzXzNpbnRfdmVydC50ZXN0Lmh0bWwiLAorICAg
ICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogImJ2ZWM0XzJpbnRf
MmZsb2F0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJidmVjNF8yaW50XzJm
bG9hdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0s
CisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7Cisg
ICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAg
ICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAg
ICAgICAgICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAg
fSwKKyAgICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiYnZlYzRfMmludF8yZmxvYXRfdmVydC52ZXJ0IiwKKyAgICAgICAg
ImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJuYW1lIjogImJ2ZWM0XzJpbnRfMmZsb2F0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJw
YXR0ZXJuIjogImNvbXBhcmUiCisgICAgfQorICBdCit9KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMv
dmVjXzAwOV90b18wMTYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYy92ZWNfMDA5X3RvXzAxNi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI4NDZjZmIxOTVkMTNmM2MwNzkzNjkyZWJjOWZiZDcwOTRhYzU4YmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVjXzAwOV90b18wMTYuaHRtbApAQCAtMCwwICsx
LDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHZlY18wMDlfdG9fMDE2Lmh0bWw8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL29nbGVz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0aDogMTZweDsgaGVpZ2h0OiAx
NnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitPcGVuR0xF
U1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsKKyAgICAgICJyZWZlcmVuY2VQ
cm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52
ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAg
ICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisg
ICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAg
XQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4u
L2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAor
ICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1
bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogInZlYzJfdmVjM19m
cmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjMl92ZWMzX2ZyYWcudGVzdC5o
dG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAi
cmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0
L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0
IjogeworICAgICAgICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZv
cm00ZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNo
YWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVs
IjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6
ICJ2ZWMyX3ZlYzNfdmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2Rl
ZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzJfdmVjM192
ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAg
eworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAi
Li4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAg
ICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlw
ZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAg
MS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wCisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAg
ICAgICJtb2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0
ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAidmVjM192ZWM0X2ZyYWcuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2
ZWMzX3ZlYzRfZnJhZy50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjog
eworICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAg
ICAgICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAg
ICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisg
ICAgICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAg
ICAgIH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAg
ICAgICAidmVydGV4U2hhZGVyIjogInZlYzNfdmVjNF92ZXJ0LnZlcnQiLAorICAgICAgICAiZnJh
Z21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAg
Im5hbWUiOiAidmVjM192ZWM0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50Ijog
MSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVl
IjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzX3ZlYzJfZmxvYXRfZnJhZy5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfdmVjMl9mbG9hdF9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAg
ICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAidmVj
M192ZWMyX2Zsb2F0X3ZlcnQudmVydCIsCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2RlZmF1bHQuZnJhZyIKKyAgICAgIH0sCisgICAgICAibmFtZSI6ICJ2ZWMzX3ZlYzJf
ZmxvYXRfdmVydC50ZXN0Lmh0bWwiLAorICAgICAgInBhdHRlcm4iOiAiY29tcGFyZSIKKyAgICB9
LAorICAgIHsKKyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hh
ZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogewor
ICAgICAgICAgICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAg
ICAgInR5cGUiOiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAg
ICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAg
ICAgICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAg
IH0sCisgICAgICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAg
ICAidmVydGV4U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogInZlYzNfZmxvYXRfdmVjMl9mcmFnLmZyYWciCisgICAgICB9LAorICAg
ICAgIm5hbWUiOiAidmVjM19mbG9hdF92ZWMyX2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0
ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6
IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisg
ICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAg
ImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAg
ICAgInZhbHVlIjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAg
ICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzX2Zsb2F0X3ZlYzJf
dmVydC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVs
dC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNfZmxvYXRfdmVjMl92ZXJ0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvdmVjL3ZlY18wMTdfdG9fMDE4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMvdmVj
XzAxN190b18wMTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODI2Mzk1MjJkN2MwZTA5ZDhhMDJiZjk0MjA0
ZmQ4MGZjY2RhY2RjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjL3ZlY18wMTdfdG9f
MDE4Lmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuIC0tPgorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBHTFNMIGNvbmZvcm1hbmNlIHRlc3Q6IHZlY18wMTdfdG9f
MDE4Lmh0bWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9vZ2xlcy10ZXN0cy5jc3MiIC8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL29nbGVzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIHN0eWxlPSJ3aWR0
aDogMTZweDsgaGVpZ2h0OiAxNnB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitPcGVuR0xFU1Rlc3RSdW5uZXIucnVuKHsKKyAgInRlc3RzIjogWworICAgIHsK
KyAgICAgICJyZWZlcmVuY2VQcm9ncmFtIjogeworICAgICAgICAidmVydGV4U2hhZGVyIjogIi4u
L2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAg
ICJyZXN1bHQiOiB7CisgICAgICAgICAgICAiY291bnQiOiAxLAorICAgICAgICAgICAgInR5cGUi
OiAidW5pZm9ybTRmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAgICAgIDEu
MCwKKyAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAg
IDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZy
YWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZXhwZWN0ZWQuZnJhZyIKKyAgICAgIH0sCisgICAg
ICAibW9kZWwiOiBudWxsLAorICAgICAgInRlc3RQcm9ncmFtIjogeworICAgICAgICAidmVydGV4
U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC52ZXJ0IiwKKyAgICAgICAgImZyYWdtZW50U2hh
ZGVyIjogInZlYzRfdmVjM19mbG9hdF9mcmFnLmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUi
OiAidmVjNF92ZWMzX2Zsb2F0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJuIjogImNv
bXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsKKyAgICAg
ICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1
bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNvdW50Ijog
MSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAgInZhbHVl
IjogWworICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAg
ICAgMS4wLAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWM0X3ZlYzNfZmxvYXRfdmVydC52ZXJ0
IiwKKyAgICAgICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgor
ICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzRfdmVjM19mbG9hdF92ZXJ0LnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0KKyAgXQorfSk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvdmVjMy9pbnB1dC5ydW4udHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy9pbnB1dC5ydW4udHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFkMWY5MTg5ZDdmOWRiYTYxZDAxOThmNjgyNTQ2ODQxMzcxYTA5OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMzL2lucHV0LnJ1bi50eHQKQEAgLTAsMCArMSwyIEBA
CisjIHRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRE8gTk9UIEVESVQuCit2ZWMzXzAwMV90
b18wMDguaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzXzAwMV90b18wMDguaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dML3ZlYzMvdmVjM18wMDFfdG9fMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM0YzY0
MjM4ODkwMDZiN2I4ODZiNmRlMzFiZTU5ZTBiZDRjM2Q4MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dML3ZlYzMvdmVjM18wMDFfdG9fMDA4Lmh0bWwKQEAgLTAsMCArMSwzMTMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLSB0aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElU
LiAtLT4KKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBjb25m
b3JtYW5jZSB0ZXN0OiB2ZWMzXzAwMV90b18wMDguaHRtbDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIg
Lz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL29n
bGVzLXRlc3RzLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vb2dsZXMtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAw
IiBoZWlnaHQ9IjUwMCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPC9ib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK09wZW5HTEVTVGVzdFJ1bm5lci5y
dW4oeworICAidGVzdHMiOiBbCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7Cisg
ICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAg
ICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAor
ICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZl
cnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAgICAgICJ1bmlmb3Jt
cyI6IHsKKyAgICAgICAgICAibGlnaHRQb3NpdGlvbiI6IHsKKyAgICAgICAgICAgICJjb3VudCI6
IDIsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtM2Z2IiwKKyAgICAgICAgICAgICJ2YWx1
ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC43NSwKKyAgICAgICAg
ICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjc1LAorICAgICAgICAgICAgICAwLjI1LAorICAg
ICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzYXJyYXlfZnJhZy5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogInZlYzNhcnJheV9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVy
biI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7
CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAg
ICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJj
b3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAg
ICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC43NSwKKyAg
ICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0
L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0
ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzc2luZ2xlX3ZlcnQu
dmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAibGlnaHRQb3NpdGlvbiI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
M2Z2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAg
ICAgICAgICAgMC43NSwKKyAgICAgICAgICAgICAgMC41CisgICAgICAgICAgICBdCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9k
ZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM3NpbmdsZV92ZXJ0LnRl
c3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAg
ICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVm
YXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJl
c3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1
bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC41LAor
ICAgICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMS4w
CisgICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJt
b2RlbCI6IG51bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFk
ZXIiOiAidmVjM2FycmF5aW5kaXJlY3RfdmVydC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjog
eworICAgICAgICAgICJsaWdodFBvc2l0aW9uIjogeworICAgICAgICAgICAgImNvdW50IjogMiwK
KyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm0zZnYiLAorICAgICAgICAgICAgInZhbHVlIjog
WworICAgICAgICAgICAgICAwLjI1LAorICAgICAgICAgICAgICAwLjc1LAorICAgICAgICAgICAg
ICAwLjAsCisgICAgICAgICAgICAgIDAuNzUsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAg
ICAgICAgIDEuMAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImZyYWdtZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwK
KyAgICAgICJuYW1lIjogInZlYzNhcnJheWluZGlyZWN0X3ZlcnQudGVzdC5odG1sIiwKKyAgICAg
ICJwYXR0ZXJuIjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJv
Z3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVy
dCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAg
ICAgICAgImNvdW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAg
ICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgIDAu
NSwKKyAgICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0K
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9k
ZWZhdWx0L2V4cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAg
ICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICJ2ZWMzYXJyYXlk
aXJlY3RfdmVydC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAgICAgICJsaWdo
dFBvc2l0aW9uIjogeworICAgICAgICAgICAgImNvdW50IjogMiwKKyAgICAgICAgICAgICJ0eXBl
IjogInVuaWZvcm0zZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAgICAgICAgICAw
LjI1LAorICAgICAgICAgICAgICAwLjc1LAorICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAg
ICAgIDAuNzUsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDEuMAorICAgICAg
ICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdtZW50U2hhZGVy
IjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZl
YzNhcnJheWRpcmVjdF92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJl
IgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2
ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAiZnJhZ21l
bnRTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LmZyYWciCisgICAgICB9LAorICAgICAgIm1v
ZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRl
ciI6ICJ2ZWMzYXJyYXlfdmVydC52ZXJ0IiwKKyAgICAgICAgInVuaWZvcm1zIjogeworICAgICAg
ICAgICJsaWdodFBvc2l0aW9uIjogeworICAgICAgICAgICAgImNvdW50IjogMiwKKyAgICAgICAg
ICAgICJ0eXBlIjogInVuaWZvcm0zZnYiLAorICAgICAgICAgICAgInZhbHVlIjogWworICAgICAg
ICAgICAgICAwLjI1LAorICAgICAgICAgICAgICAwLjc1LAorICAgICAgICAgICAgICAwLjAsCisg
ICAgICAgICAgICAgIDAuNzUsCisgICAgICAgICAgICAgIDAuMjUsCisgICAgICAgICAgICAgIDEu
MAorICAgICAgICAgICAgXQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZyYWdt
ZW50U2hhZGVyIjogIi4uL2RlZmF1bHQvZGVmYXVsdC5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInZlYzNhcnJheV92ZXJ0LnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21w
YXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVyZW5jZVByb2dyYW0iOiB7CisgICAgICAg
ICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5p
Zm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsKKyAgICAgICAgICAgICJjb3VudCI6IDEs
CisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6
IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMC43NSwKKyAgICAgICAgICAg
ICAgMC41LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4cGVjdGVk
LmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0UHJvZ3Jh
bSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIs
CisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAibGlnaHRQb3NpdGlvbiI6IHsKKyAg
ICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtM2Z2IiwK
KyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAg
ICAgMC43NSwKKyAgICAgICAgICAgICAgMC41CisgICAgICAgICAgICBdCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIiOiAidmVjM3NpbmdsZV9mcmFnLmZy
YWciCisgICAgICB9LAorICAgICAgIm5hbWUiOiAidmVjM3NpbmdsZV9mcmFnLnRlc3QuaHRtbCIs
CisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0sCisgICAgeworICAgICAgInJlZmVy
ZW5jZVByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4vZGVmYXVsdC9kZWZh
dWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAgInJlc3VsdCI6IHsK
KyAgICAgICAgICAgICJjb3VudCI6IDEsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3JtNGZ2
IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC41LAorICAgICAgICAg
ICAgICAwLjUsCisgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgMS4wCisgICAgICAg
ICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRTaGFkZXIi
OiAiLi4vZGVmYXVsdC9leHBlY3RlZC5mcmFnIgorICAgICAgfSwKKyAgICAgICJtb2RlbCI6IG51
bGwsCisgICAgICAidGVzdFByb2dyYW0iOiB7CisgICAgICAgICJ2ZXJ0ZXhTaGFkZXIiOiAiLi4v
ZGVmYXVsdC9kZWZhdWx0LnZlcnQiLAorICAgICAgICAidW5pZm9ybXMiOiB7CisgICAgICAgICAg
ImxpZ2h0UG9zaXRpb24iOiB7CisgICAgICAgICAgICAiY291bnQiOiAyLAorICAgICAgICAgICAg
InR5cGUiOiAidW5pZm9ybTNmdiIsCisgICAgICAgICAgICAidmFsdWUiOiBbCisgICAgICAgICAg
ICAgIDAuMjUsCisgICAgICAgICAgICAgIDAuNzUsCisgICAgICAgICAgICAgIDAuMCwKKyAgICAg
ICAgICAgICAgMC43NSwKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAgICAgICAgICAgMS4wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZnJhZ21lbnRT
aGFkZXIiOiAidmVjM2FycmF5aW5kaXJlY3RfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJu
YW1lIjogInZlYzNhcnJheWluZGlyZWN0X2ZyYWcudGVzdC5odG1sIiwKKyAgICAgICJwYXR0ZXJu
IjogImNvbXBhcmUiCisgICAgfSwKKyAgICB7CisgICAgICAicmVmZXJlbmNlUHJvZ3JhbSI6IHsK
KyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQudmVydCIsCisgICAg
ICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAicmVzdWx0IjogeworICAgICAgICAgICAgImNv
dW50IjogMSwKKyAgICAgICAgICAgICJ0eXBlIjogInVuaWZvcm00ZnYiLAorICAgICAgICAgICAg
InZhbHVlIjogWworICAgICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgIDAuNSwKKyAgICAg
ICAgICAgICAgMC41LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICIuLi9kZWZhdWx0L2V4
cGVjdGVkLmZyYWciCisgICAgICB9LAorICAgICAgIm1vZGVsIjogbnVsbCwKKyAgICAgICJ0ZXN0
UHJvZ3JhbSI6IHsKKyAgICAgICAgInZlcnRleFNoYWRlciI6ICIuLi9kZWZhdWx0L2RlZmF1bHQu
dmVydCIsCisgICAgICAgICJ1bmlmb3JtcyI6IHsKKyAgICAgICAgICAibGlnaHRQb3NpdGlvbiI6
IHsKKyAgICAgICAgICAgICJjb3VudCI6IDIsCisgICAgICAgICAgICAidHlwZSI6ICJ1bmlmb3Jt
M2Z2IiwKKyAgICAgICAgICAgICJ2YWx1ZSI6IFsKKyAgICAgICAgICAgICAgMC4yNSwKKyAgICAg
ICAgICAgICAgMC43NSwKKyAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAwLjc1LAor
ICAgICAgICAgICAgICAwLjI1LAorICAgICAgICAgICAgICAxLjAKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcmFnbWVudFNoYWRlciI6ICJ2ZWMzYXJy
YXlkaXJlY3RfZnJhZy5mcmFnIgorICAgICAgfSwKKyAgICAgICJuYW1lIjogInZlYzNhcnJheWRp
cmVjdF9mcmFnLnRlc3QuaHRtbCIsCisgICAgICAicGF0dGVybiI6ICJjb21wYXJlIgorICAgIH0K
KyAgXQorfSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzYXJyYXlfZnJhZy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wvdmVjMy92ZWMzYXJyYXlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMTNlZWU2OWRmYzNi
ZmE4ZThmMjgzYWM3NWMxMDk0NDZmOTY4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92
ZWMzL3ZlYzNhcnJheV9mcmFnLmZyYWcKQEAgLTAsMCArMSwzMiBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorLy8KKy8vIHZlYzNhcnJheV9mcmFnLmZyYWc6IFNpbXBs
ZSBGcmFnbWVudCBzaGFkZXIgdXNpbmcgdmVjMyB0byBnZXQgY29sb3JzLgorLy8KKy8vCisKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKKwordW5pZm9ybSB2ZWMzIGxpZ2h0UG9zaXRpb25bMl07CisKK3Zv
aWQgbWFpbih2b2lkKQoreworICAgIHZlYzMgdlsyXTsKKworICAgIHZbMV0gPSB2ZWMzKGNvbG9y
LnIsIGNvbG9yLmcsIGNvbG9yLmIpOworCisKKyAgICB2WzBdID0gbGlnaHRQb3NpdGlvblsxXTsK
KworCisgICAgZ2xfRnJhZ0NvbG9yID0gIHZlYzQodlsxXSArIHZbMV0sIDAuMCkvMi4wOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzYXJyYXlfdmVydC52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
dmVjMy92ZWMzYXJyYXlfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNjUxYmNjZWU4NzEyNjQzZjRi
MDAwMmQzODk0MTY5ZDFlYjk2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMzL3Zl
YzNhcnJheV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwzMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKKy8vCisvLyB2ZWMzYXJyYXlfdmVydC52ZXJ0OiBTaW1wbGUgdmVydGV4IHNo
YWRlciB1c2luZyB2ZWMzIHRvIGdldCBjb2xvcnMuCisvLworLy8KKwordmFyeWluZyB2ZWM0IGNv
bG9yOwordW5pZm9ybSB2ZWMzIGxpZ2h0UG9zaXRpb25bMl07CisKK3ZvaWQgbWFpbih2b2lkKQor
eworICAgIHZlYzMgdlsyXTsKKworICAgIHZbMV0gPSB2ZWMzKGd0Zl9Db2xvci5yLCBndGZfQ29s
b3IuZywgZ3RmX0NvbG9yLmIpOworCisgICAgdlswXSA9IGxpZ2h0UG9zaXRpb25bMV07CisKKyAg
ICBjb2xvciA9ICB2ZWM0KHZbMV0gKyB2WzFdLCAwLjApLzIuMDsKKyAgICBnbF9Qb3NpdGlvbiAg
ICAgPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTC92ZWMzL3ZlYzNhcnJheWRpcmVjdF9mcmFnLmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TC92ZWMzL3ZlYzNhcnJheWRpcmVjdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQyYWYzMjMzZDA5
OWI3NDBhNGM1M2YwYjE3MzQ3NDU2YTc4Y2MzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
L3ZlYzMvdmVjM2FycmF5ZGlyZWN0X2ZyYWcuZnJhZwpAQCAtMCwwICsxLDI0IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisvLworLy8gdmVjM2FycmF5ZGlyZWN0X2Zy
YWcuZnJhZzogRnJhZ21lbnQgc2hhZGVyIHNvbGlkIGNvbG9yCisvLworLy8KKy8vCisKK3VuaWZv
cm0gdmVjMyBsaWdodFBvc2l0aW9uWzJdOwordmFyeWluZyB2ZWM0ICBjb2xvcjsKKwordm9pZCBt
YWluKHZvaWQpCit7CisgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobGlnaHRQb3NpdGlvblswXSAr
IGxpZ2h0UG9zaXRpb25bMV0sIDAuMCkgKiAwLjU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92
ZWMzL3ZlYzNhcnJheWRpcmVjdF92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMzL3ZlYzNhcnJheWRp
cmVjdF92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MDA5ZjVlMzZmMzY4ZTI0NDk1NjU5M2Q4OTMy
Y2QwYTY5ZDIyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dML3ZlYzMvdmVjM2FycmF5ZGly
ZWN0X3ZlcnQudmVydApAQCAtMCwwICsxLDI4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworLy8KKy8vIHZlYzNhcnJheWRp
cmVjdF92ZXJ0LnZlcnQ6IFZlcnRleCBzaGFkZXIgc29saWQgY29sb3IKKy8vCisvLworLy8KKwor
dW5pZm9ybSB2ZWMzIGxpZ2h0UG9zaXRpb25bMl07Cit2YXJ5aW5nIHZlYzQgIGNvbG9yOworCit2
b2lkIG1haW4odm9pZCkKK3sKKworICAgICBjb2xvciA9IHZlYzQobGlnaHRQb3NpdGlvblswXSAr
IGxpZ2h0UG9zaXRpb25bMV0sIDAuMCkgKiAwLjU7CisKKyAgICAgZ2xfUG9zaXRpb24gICAgID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworCisKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dML3ZlYzMvdmVjM2FycmF5aW5kaXJlY3RfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wvdmVjMy92ZWMzYXJyYXlpbmRpcmVjdF9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEyNTJhOTI1
Mzk0MmM3NDFlNTUzZjFhYjk1YmE1ODE4NWUxMTYxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dML3ZlYzMvdmVjM2FycmF5aW5kaXJlY3RfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMzggQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKy8vCisvLyB2ZWMzYXJyYXlpbmRp
cmVjdF9mcmFnLmZyYWc6IEZyYWdtZW50IHNoYWRlciBzb2xpZCBjb2xvcgorLy8gVGhlIHZlYzMg
dmFsdWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCisvLworLy8KKwordW5pZm9ybSB2ZWMz
IGxpZ2h0UG9zaXRpb25bMl07Cit2YXJ5aW5nIHZlYzQgIGNvbG9yOworCit2b2lkIG1haW4odm9p
ZCkKK3sKKyAgICAgaW50IGk7CisKKyAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApOworCisJ
IC8qCisJCS8vIE5vIGluZGlyZWN0IGluZGV4aW5nIGluIGZyYWdtZW50IHNoYWRlcnMKKyAgICAg
Zm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAgICAgeworICAgICAgICAgIGdsX0ZyYWdDb2xvciAr
PSB2ZWM0KGxpZ2h0UG9zaXRpb25baV0sIDAuMCk7CisgICAgIH0KKwkgKi8KKwkgZ2xfRnJhZ0Nv
bG9yICs9IHZlYzQobGlnaHRQb3NpdGlvblswXSwgMC4wKTsKKwkgZ2xfRnJhZ0NvbG9yICs9IHZl
YzQobGlnaHRQb3NpdGlvblsxXSwgMC4wKTsKKworICAgICBnbF9GcmFnQ29sb3IgLz0gMi4wOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzYXJyYXlpbmRpcmVjdF92ZXJ0LnZlcnQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC92ZWMzL3ZlYzNhcnJheWluZGlyZWN0X3ZlcnQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZGE0MDYzMTlmMTk5MzEyYzU5YzQ0MzhkYWQ3YmYzODQ0YzUyNTAwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvdmVjMy92ZWMzYXJyYXlpbmRpcmVjdF92ZXJ0LnZlcnQKQEAgLTAsMCArMSwz
NCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKKy8vCisvLyB2ZWMzYXJyYXlpbmRpcmVjdF92ZXJ0LnZlcnQ6IFZlcnRleCBz
aGFkZXIgc29saWQgY29sb3IKKy8vIFRoZSB2ZWMzIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBhdCBy
dW50aW1lLgorLy8KKy8vCisKK3VuaWZvcm0gdmVjMyBsaWdodFBvc2l0aW9uWzJdOwordmFyeWlu
ZyB2ZWM0ICBjb2xvcjsKKwordm9pZCBtYWluKHZvaWQpCit7CisgICAgIGNvbG9yID0gdmVjNCgw
LjApOworCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQorICAgICB7CisgICAgICAg
ICAgY29sb3IgKz0gdmVjNChsaWdodFBvc2l0aW9uW2ldLCAwLjApOworICAgICB9CisKKyAgICAg
Y29sb3IgLz0gMi4wOworCisgICAgIGdsX1Bvc2l0aW9uICAgICA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKworCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92
ZWMzL3ZlYzNzaW5nbGVfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzc2luZ2xlX2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MzE0OGM0MGVjN2YwODljYWM5YzllZWY0ZWFjODhlMTkyODBjMTVl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzc2luZ2xlX2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisv
LworLy8gdmVjM01hdHJpeF9mcmFnLmZyYWc6IEZyYWdtZW50IHNoYWRlciBzb2xpZCBjb2xvcgor
Ly8KKy8vCisvLworCit1bmlmb3JtIHZlYzMgbGlnaHRQb3NpdGlvbjsKK3ZhcnlpbmcgdmVjNCAg
Y29sb3I7CisKK3ZvaWQgbWFpbih2b2lkKQoreworICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGxp
Z2h0UG9zaXRpb24sIDAuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTC92ZWMzL3ZlYzNzaW5n
bGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzc2luZ2xlX3ZlcnQudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zODZhYWFjZGU1NTliNGQwZjE1MDM2MGEzZjllYTMzZmRmZTFkN2I5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wvdmVjMy92ZWMzc2luZ2xlX3ZlcnQudmVydApAQCAtMCwwICsxLDI4
IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRy
aWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4OworLy8KKy8vIHZlYzNNYXRyaXhfdmVydC52ZXJ0OiBWZXJ0ZXggc2hhZGVyIHNv
bGlkIGNvbG9yCisvLworLy8KKy8vCisKK3VuaWZvcm0gdmVjMyBsaWdodFBvc2l0aW9uOwordmFy
eWluZyB2ZWM0ICBjb2xvcjsKKwordm9pZCBtYWluKHZvaWQpCit7CisKKyAgICAgY29sb3IgICAg
ICAgICAgICAgID0gdmVjNChsaWdodFBvc2l0aW9uLCAwLjApOworCisgICAgIGdsX1Bvc2l0aW9u
ICAgICA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKworCit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9jb21wcmVzc2VkX3BhbGV0dGVk
X3RleHR1cmUvY29tcHJlc3NlZF9wYWxldHRlZF90ZXh0dXJlLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRl
bnNpb25UZXN0cy9jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUvY29tcHJlc3NlZF9wYWxldHRl
ZF90ZXh0dXJlLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2YjYwMjQxYTQ0NzNhMjY1NjNhZWJjMjc4Nzc5
MjZiN2M1MDMwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2Nv
bXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZS9jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUuZnJh
ZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit1bmlmb3JtIHNhbXBsZXIyRCBndGZfVGV4dHVyZTA7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2
YXJ5aW5nIHZlYzQgZ3RmX1RleENvb3JkWzFdOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xf
RnJhZ0NvbG9yID0gY29sb3IgKiB0ZXh0dXJlMkQoZ3RmX1RleHR1cmUwLCBndGZfVGV4Q29vcmRb
MF0ueHkpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvY29tcHJlc3Nl
ZF9wYWxldHRlZF90ZXh0dXJlL2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZS52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyRXh0ZW5zaW9uVGVzdHMvY29tcHJlc3NlZF9wYWxldHRlZF90ZXh0dXJlL2NvbXByZXNz
ZWRfcGFsZXR0ZWRfdGV4dHVyZS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmJhMzEzMDQ2MTQ3ZGQxNWZj
MWIzYTkxOGIwMjNlNzI2OTFiYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNp
b25UZXN0cy9jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUvY29tcHJlc3NlZF9wYWxldHRlZF90
ZXh0dXJlLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjNCBndGZfVGV4Q29vcmRbMV07CithdHRyaWJ1dGUgdmVjNCBndGZf
TXVsdGlUZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlndGZfVGV4Q29vcmRbMF0gPSBndGZfTXVsdGlUZXhD
b29yZDA7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0
Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9kRmR4L2RG
ZHhfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZEZkeC9kRmR4X2ZyYWcuZnJh
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MzcxZjlhN2ZjMTNlNGFmM2M0ODZhZDIyYTU1MzI5Y2VkZGIxZDBmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZEZkeC9kRmR4X2ZyYWcu
ZnJhZwpAQCAtMCwwICsxLDUxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIDogZW5hYmxlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCisv
LyBzZXR0aW5nIGEgYm91bmRhcnkgZm9yIGNhc2VzIHdoZXJlIHNjcmVlbiBzaXplcyBtYXkgZXhj
ZWVkIHRoZSBwcmVjaXNpb24KKy8vIG9mIHRoZSBhcml0aG1ldGljIHVzZWQuCisjZGVmaW5lIFNB
RkVUWV9CT1VORCA1MDAuMAorCisvLyBNYWNybyB0byBzY2FsZS9iaWFzIHRoZSByYW5nZSBvZiBv
dXRwdXQuICBJZiBpbnB1dCBpcyBbLTEuMCwgMS4wXSwgbWFwcyB0byBbMC41LCAxLjBdLi4gIAor
Ly8gQWNjb3VudHMgZm9yIHByZWNpc2lvbiBlcnJvcnMgbWFnbmlmaWVkIGJ5IGRlcml2YXRpdmUg
b3BlcmF0aW9uLgorI2RlZmluZSBSRURVQ0VfUkFOR0UoQSkgKChBKSArIDMuMCkgLyA0LjAKKwor
Ly8gVGhpcyBmcmFnbWVudCBzaGFkZXIgY29tcHV0ZXMgYW4gaW1hZ2UgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGRlcml2YXRpdmUgb2YKKy8vIHNpbmUuICBUaGUgZGVyaXZhdGl2ZSBvZiBzaW5lIGlz
IGNvc2luZS4gIFRoaXMgc2hhZGVyJ3Mgb3V0cHV0IGlzIGNvbXBhcmVkIHRvCisvLyB0aGUgcmVm
ZXJlbmNlIHNoYWRlciB0aGF0IGNvbXB1dGVzIGFuIGltYWdlIHJlcHJlc2VudGF0aW9uIG9mIGNv
c2luZQorLy8gZGlyZWN0bHkuICAKKwordW5pZm9ybSBmbG9hdCB2aWV3cG9ydHdpZHRoOwordW5p
Zm9ybSBmbG9hdCB2aWV3cG9ydGhlaWdodDsKKwordmFyeWluZyB2ZWMyIHZlcnRYWTsKKwordm9p
ZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIz
ODQ2OworCWZsb2F0IHNpbmU7CisJZmxvYXQgY29zaW5lOworCisjaWZkZWYgR0xfT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzCisJc2luZSA9IHNpbihmcmFjdChnbF9GcmFnQ29vcmQueCAvIDEyOC4w
KSAqICgyLjAgKiBNX1BJKSk7CisJY29zaW5lID0gUkVEVUNFX1JBTkdFKCgxMjguMCAvICgyLjAg
KiBNX1BJKSkgKiBkRmR4KHNpbmUpKTsKKyNlbHNlCisJY29zaW5lID0gMC41OworI2VuZGlmCisK
KwlpZiggZ2xfRnJhZ0Nvb3JkLnggPCBTQUZFVFlfQk9VTkQgKQorCXsKKyAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvc2luZSwgY29zaW5lLCBjb3NpbmUsIDEuMCk7CisJfQor
CWVsc2UgZGlzY2FyZDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMv
ZEZkeC9kRmR4X2ZyYWcudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHgvZEZkeF9m
cmFnLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdlYmY4NjdlYzEzODljNjdlZjJhM2E2MmVmNGJhZDU1ZDQ0
NDY1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHgvZEZk
eF9mcmFnLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKwordmFyeWluZyB2ZWMyIHZlcnRY
WTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlcnRYWSA9IGd0Zl9WZXJ0ZXgueHk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHgvZEZkeF9mcmFnX3Jl
Zi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZEZkeC9kRmR4X2ZyYWdfcmVmLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjYzYjViN2YzYzFjZmM1NTE3N2ZmYWRhODExOGVkZGFiNmM3ZDM2ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHgvZEZkeF9mcmFnX3Jl
Zi5mcmFnCkBAIC0wLDAgKzEsNDQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMgOiBlbmFibGUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisK
Ky8vIHNldHRpbmcgYSBib3VuZGFyeSBmb3IgY2FzZXMgd2hlcmUgc2NyZWVuIHNpemVzIG1heSBl
eGNlZWQgdGhlIHByZWNpc2lvbgorLy8gb2YgdGhlIGFyaXRobWV0aWMgdXNlZC4KKyNkZWZpbmUg
U0FGRVRZX0JPVU5EIDUwMC4wCisKKy8vIE1hY3JvIHRvIHNjYWxlL2JpYXMgdGhlIHJhbmdlIG9m
IG91dHB1dC4gIElmIGlucHV0IGlzIFstMS4wLCAxLjBdLCBtYXBzIHRvIFswLjUsIDEuMF0uLiAg
CisvLyBBY2NvdW50cyBmb3IgcHJlY2lzaW9uIGVycm9ycyBtYWduaWZpZWQgYnkgZGVyaXZhdGl2
ZSBvcGVyYXRpb24uCisjZGVmaW5lIFJFRFVDRV9SQU5HRShBKSAoKEEpICsgMy4wKSAvIDQuMAor
Cit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0d2lkdGg7Cit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0aGVp
Z2h0OworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29u
c3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgY29zaW5lOwor
CisJaWYoIGdsX0ZyYWdDb29yZC54IDwgU0FGRVRZX0JPVU5EICkKKwl7CisJCS8vIGhvcml6b250
YWwgY29zaW5lIHdhdmUgd2l0aCBhIHBlcmlvZCBvZiAxMjggcGl4ZWxzCisjaWZkZWYgR0xfT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzCisJCWNvc2luZSA9IFJFRFVDRV9SQU5HRShjb3MoZnJhY3Qo
Z2xfRnJhZ0Nvb3JkLnggLyAxMjguMCkgKiAoMi4wICogTV9QSSkpKTsKKyNlbHNlCisJCWNvc2lu
ZSA9IDAuNTsKKyNlbmRpZgorCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvc2luZSwgY29zaW5lLCBj
b3NpbmUsIDEuMCk7CisJfQorCWVsc2UgZGlzY2FyZDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyRXh0ZW5zaW9uVGVzdHMvZEZkeC9kRmR4X2ZyYWdfcmVmLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRl
bnNpb25UZXN0cy9kRmR4L2RGZHhfZnJhZ19yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2ViZjg2N2Vj
MTM4OWM2N2VmMmEzYTYyZWY0YmFkNTVkNDQ0NjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyRXh0ZW5zaW9uVGVzdHMvZEZkeC9kRmR4X2ZyYWdfcmVmLnZlcnQKQEAgLTAsMCArMSwxOSBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmli
dXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeDsKKwordmFyeWluZyB2ZWMyIHZlcnRYWTsKKwordm9pZCBtYWluICh2b2lkKQorewor
CXZlcnRYWSA9IGd0Zl9WZXJ0ZXgueHk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4
dGVuc2lvblRlc3RzL2RGZHkvZEZkeV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0
cy9kRmR5L2RGZHlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NTZmNTk2MjA0ZWY1Y2QxOWUyZmMw
ZjQyZmVmNWVlMGQ4Njk0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25U
ZXN0cy9kRmR5L2RGZHlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNTEgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2V4dGVuc2lv
biBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCisKKy8vIHNldHRpbmcgYSBib3VuZGFyeSBmb3IgY2FzZXMgd2hlcmUg
c2NyZWVuIHNpemVzIG1heSBleGNlZWQgdGhlIHByZWNpc2lvbgorLy8gb2YgdGhlIGFyaXRobWV0
aWMgdXNlZC4KKyNkZWZpbmUgU0FGRVRZX0JPVU5EIDUwMC4wCisKKy8vIE1hY3JvIHRvIHNjYWxl
L2JpYXMgdGhlIHJhbmdlIG9mIG91dHB1dC4gIElmIGlucHV0IGlzIFstMS4wLCAxLjBdLCBtYXBz
IHRvIFswLjUsIDEuMF0uLiAgCisvLyBBY2NvdW50cyBmb3IgcHJlY2lzaW9uIGVycm9ycyBtYWdu
aWZpZWQgYnkgZGVyaXZhdGl2ZSBvcGVyYXRpb24uCisjZGVmaW5lIFJFRFVDRV9SQU5HRShBKSAo
KEEpICsgMy4wKSAvIDQuMAorCisvLyBUaGlzIGZyYWdtZW50IHNoYWRlciBjb21wdXRlcyBhbiBp
bWFnZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVyaXZhdGl2ZSBvZgorLy8gc2luZS4gIFRoZSBk
ZXJpdmF0aXZlIG9mIHNpbmUgaXMgY29zaW5lLiAgVGhpcyBzaGFkZXIncyBvdXRwdXQgaXMgY29t
cGFyZWQgdG8KKy8vIHRoZSByZWZlcmVuY2Ugc2hhZGVyIHRoYXQgY29tcHV0ZXMgYW4gaW1hZ2Ug
cmVwcmVzZW50YXRpb24gb2YgY29zaW5lCisvLyBkaXJlY3RseS4gIAorCit1bmlmb3JtIGZsb2F0
IHZpZXdwb3J0d2lkdGg7Cit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0aGVpZ2h0OworCit2YXJ5aW5n
IHZlYzIgdmVydFhZOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9
IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgc2luZTsKKwlmbG9hdCBjb3NpbmU7CisK
KyNpZmRlZiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKKwlzaW5lID0gc2luKGZyYWN0KGds
X0ZyYWdDb29yZC55IC8gMTI4LjApICogKDIuMCAqIE1fUEkpKTsKKwljb3NpbmUgPSBSRURVQ0Vf
UkFOR0UoKDEyOC4wIC8gKDIuMCAqIE1fUEkpKSAqIGRGZHkoc2luZSkpOworI2Vsc2UKKyAgICAg
ICAgY29zaW5lID0gMC41OworI2VuZGlmCisKKwlpZiggZ2xfRnJhZ0Nvb3JkLnkgPCBTQUZFVFlf
Qk9VTkQgKQorCXsKKwkJZ2xfRnJhZ0NvbG9yID0gdmVjNChjb3NpbmUsIGNvc2luZSwgY29zaW5l
LCAxLjApOworCX0KKwllbHNlIGRpc2NhcmQ7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4
dGVuc2lvblRlc3RzL2RGZHkvZEZkeV9mcmFnLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0
cy9kRmR5L2RGZHlfZnJhZy52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0MmM2NWY5NTg5YzUzNGQxZWZmMWI1
NWE4YWQwYmY1ZGI4ODA5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25U
ZXN0cy9kRmR5L2RGZHlfZnJhZy52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0
ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3Zhcnlp
bmcgdmVjMiB2ZXJ0WFk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZXJ0WFkgPSBndGZfVmVy
dGV4Lnh5OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RG
ZHkvZEZkeV9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZEZkeS9kRmR5
X2ZyYWdfcmVmLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0NTU1YTQ3YTVjNGE1NTNjMTgzNDk4ODkzMDc3
NTg3MGE5NzA2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RG
ZHkvZEZkeV9mcmFnX3JlZi5mcmFnCkBAIC0wLDAgKzEsNDcgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworI2V4dGVuc2lvbiBH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCisKKy8vIHNldHRpbmcgYSBib3VuZGFyeSBmb3IgY2FzZXMgd2hlcmUgc2Ny
ZWVuIHNpemVzIG1heSBleGNlZWQgdGhlIHByZWNpc2lvbgorLy8gb2YgdGhlIGFyaXRobWV0aWMg
dXNlZC4KKyNkZWZpbmUgU0FGRVRZX0JPVU5EIDUwMC4wCisKKy8vIE1hY3JvIHRvIHNjYWxlL2Jp
YXMgdGhlIHJhbmdlIG9mIG91dHB1dC4gIElmIGlucHV0IGlzIFstMS4wLCAxLjBdLCBtYXBzIHRv
IFswLjUsIDEuMF0uLiAgCisvLyBBY2NvdW50cyBmb3IgcHJlY2lzaW9uIGVycm9ycyBtYWduaWZp
ZWQgYnkgZGVyaXZhdGl2ZSBvcGVyYXRpb24uCisjZGVmaW5lIFJFRFVDRV9SQU5HRShBKSAoKEEp
ICsgMy4wKSAvIDQuMAorCit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0d2lkdGg7Cit1bmlmb3JtIGZs
b2F0IHZpZXdwb3J0aGVpZ2h0OworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJ
ZmxvYXQgY29zaW5lOworCisJaWYoIGdsX0ZyYWdDb29yZC55IDwgU0FGRVRZX0JPVU5EICkKKwl7
CisJCS8vIHZlcnRpY2FsIGNvc2luZSB3YXZlIHdpdGggYSBwZXJpb2Qgb2YgMTI4IHBpeGVscwor
CisjaWZkZWYgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisJCWNvc2luZSA9IFJFRFVDRV9S
QU5HRShjb3MoZnJhY3QoZ2xfRnJhZ0Nvb3JkLnkgLyAxMjguMCkgKiAoMi4wICogTV9QSSkpKTsK
KyNlbHNlCisgICAgY29zaW5lID0gMC41OworI2VuZGlmCisKKwkJZ2xfRnJhZ0NvbG9yID0gdmVj
NChjb3NpbmUsIGNvc2luZSwgY29zaW5lLCAxLjApOworCX0KKwllbHNlIGRpc2NhcmQ7CQorfQor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHkvZEZkeV9mcmFnX3Jl
Zi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZEZkeS9kRmR5X2ZyYWdfcmVmLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQyYzY1Zjk1ODljNTM0ZDFlZmYxYjU1YThhZDBiZjVkYjg4MDkxMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RGZHkvZEZkeV9mcmFnX3Jl
Zi52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQg
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZhcnlpbmcgdmVjMiB2ZXJ0WFk7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZXJ0WFkgPSBndGZfVmVydGV4Lnh5OworCWdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZh
dWx0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9kZWZhdWx0X3NoYWRlcnMvZGVmYXVs
dC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ4MTc1Y2QwN2VkZTg4ZTU4YWZmZWY1ODg4MTRmOGI3MGQ3OGRi
ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9kZWZhdWx0X3No
YWRlcnMvZGVmYXVsdC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0
ZW5zaW9uVGVzdHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVu
c2lvblRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzMTQ5
OWI5MDg2NTRjMWVkNWMwODRiNjUzNDc1MTc4OWFkNzhmYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMkV4dGVuc2lvblRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0LnZlcnQKQEAgLTAs
MCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVj
NCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gZ3RmX0NvbG9yOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
CWdsX1BvaW50U2l6ZSA9IDEuMDsKKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9u
VGVzdHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHRfdGV4dHVyZWQuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4
dGVuc2lvblRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0X3RleHR1cmVkLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDhjZDIyNTY3NTc4Y2VjNGM4ZjI4MTVhOGYzMDljMTNjYTE0OWVlNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0
X3RleHR1cmVkLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordW5pZm9ybSBzYW1wbGVyMkQgZ3RmX1RleHR1cmUwOwordmFyeWluZyB2
ZWM0IGNvbG9yOwordmFyeWluZyB2ZWM0IGd0Zl9UZXhDb29yZFsxXTsKKwordm9pZCBtYWluICh2
b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChndGZfVGV4dHVyZTAsIGd0Zl9UZXhD
b29yZFswXS54eSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9kZWZh
dWx0X3NoYWRlcnMvZGVmYXVsdF90ZXh0dXJlZC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVz
dHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHRfdGV4dHVyZWQudmVydApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDg4
YTYyMTQ3MjBmMzdhNmE3NmMzNWFkMjVjNzY4Nzg2ZWRjN2U2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHRfdGV4dHVyZWQu
dmVydApAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Owor
dmFyeWluZyB2ZWM0IGd0Zl9UZXhDb29yZFsxXTsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9NdWx0aVRl
eENvb3JkMDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNv
bG9yID0gZ3RmX0NvbG9yOworCWd0Zl9UZXhDb29yZFswXSA9IGd0Zl9NdWx0aVRleENvb3JkMDsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKKwlnbF9Qb2ludFNpemUgPSAxLjA7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNp
b25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3Rz
L2Z3aWR0aC9md2lkdGhfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZTg0NjE1MzM1NWFlYThkYTRl
ZGFlNzUzOTM1OGM3ZDFlNzMyN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNp
b25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDQ4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKKyNl
eHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCisvLyBzZXR0aW5nIGEgYm91bmRhcnkgZm9yIGNhc2Vz
IHdoZXJlIHNjcmVlbiBzaXplcyBtYXkgZXhjZWVkIHRoZSBwcmVjaXNpb24KKy8vIG9mIHRoZSBh
cml0aG1ldGljIHVzZWQuCisjZGVmaW5lIFNBRkVUWV9CT1VORCA1MDAuMAorCisvLyBNYWNybyB0
byBzY2FsZS9iaWFzIHRoZSByYW5nZSBvZiBvdXRwdXQuICBJZiBpbnB1dCBpcyBbLTEuMCwgMS4w
XSwgbWFwcyB0byBbMC41LCAxLjBdLi4gIAorLy8gQWNjb3VudHMgZm9yIHByZWNpc2lvbiBlcnJv
cnMgbWFnbmlmaWVkIGJ5IGRlcml2YXRpdmUgb3BlcmF0aW9uLgorI2RlZmluZSBSRURVQ0VfUkFO
R0UoQSkgKChBKSArIDMuMCkgLyA0LjAKKworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit1bmlm
b3JtIGZsb2F0IHZpZXdwb3J0d2lkdGg7Cit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0aGVpZ2h0Owor
Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxvYXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5
NzkzMjM4NDY7CisJZmxvYXQgZnVuYzsKKwlmbG9hdCBmdW5jZndpZHRoOworCisjaWZkZWYgR0xf
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisJLy8gZndpZHRoIG9mIGF2ZXJhZ2Ugb2YgaG9yaXpv
bnRhbCBhbmQgdmVydGljYWwgc2luZSB3YXZlcyB3aXRoIHBlcmlvZHMgb2YgMTI4IHBpeGVscywg
c2NhbGVkIHRvIGdvIGZyb20gLTEgdG8gKzEKKwlmdW5jID0gMC41ICogKHNpbihmcmFjdChnbF9G
cmFnQ29vcmQueCAvIDEyOC4wKSAqICgyLjAgKiBNX1BJKSkgKyBzaW4oZnJhY3QoZ2xfRnJhZ0Nv
b3JkLnkgLyAxMjguMCkgKiAoMi4wICogTV9QSSkpKTsKKwlmdW5jZndpZHRoID0gUkVEVUNFX1JB
TkdFKCgxMjguMCAvICgyLjAgKiBNX1BJKSkgKiBmd2lkdGgoZnVuYykpOworI2Vsc2UKKyAgICAg
ICAgZnVuY2Z3aWR0aCA9IDAuNTsKKyNlbmRpZgorCisJaWYoIChnbF9GcmFnQ29vcmQueCA8IFNB
RkVUWV9CT1VORCkgJiYgKGdsX0ZyYWdDb29yZC55IDwgU0FGRVRZX0JPVU5EKSApCisJeworCQln
bF9GcmFnQ29sb3IgPSB2ZWM0KGZ1bmNmd2lkdGgsIGZ1bmNmd2lkdGgsIGZ1bmNmd2lkdGgsIDEu
MCk7CisJfQorCWVsc2UgZGlzY2FyZDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5z
aW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0
cy9md2lkdGgvZndpZHRoX2ZyYWcudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2ViZjg2N2VjMTM4OWM2N2Vm
MmEzYTYyZWY0YmFkNTVkNDQ0NjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5z
aW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnLnZlcnQKQEAgLTAsMCArMSwxOSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
KwordmFyeWluZyB2ZWMyIHZlcnRYWTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlcnRYWSA9
IGd0Zl9WZXJ0ZXgueHk7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRl
c3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19keC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMv
ZndpZHRoL2Z3aWR0aF9mcmFnX2R4LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M1YmU0MzdkMzZhMjUyNzZj
OTU5YjNmOTQzZmY1MzFkYzU1ZjJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVu
c2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19keC5mcmFnCkBAIC0wLDAgKzEsNDggQEAKKwor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9F
UworI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCisKKy8vIHNldHRpbmcgYSBib3VuZGFyeSBmb3Ig
Y2FzZXMgd2hlcmUgc2NyZWVuIHNpemVzIG1heSBleGNlZWQgdGhlIHByZWNpc2lvbgorLy8gb2Yg
dGhlIGFyaXRobWV0aWMgdXNlZC4KKyNkZWZpbmUgU0FGRVRZX0JPVU5EIDUwMC4wCisKKworLy8g
TWFjcm8gdG8gc2NhbGUvYmlhcyB0aGUgcmFuZ2Ugb2Ygb3V0cHV0LiAgSWYgaW5wdXQgaXMgWy0x
LjAsIDEuMF0sIG1hcHMgdG8gWzAuNSwgMS4wXS4uICAKKy8vIEFjY291bnRzIGZvciBwcmVjaXNp
b24gZXJyb3JzIG1hZ25pZmllZCBieSBkZXJpdmF0aXZlIG9wZXJhdGlvbi4KKyNkZWZpbmUgUkVE
VUNFX1JBTkdFKEEpICgoQSkgKyAzLjApIC8gNC4wCisKK3ZhcnlpbmcgdmVjMiB2ZXJ0WFk7CisK
K3VuaWZvcm0gZmxvYXQgdmlld3BvcnR3aWR0aDsKK3VuaWZvcm0gZmxvYXQgdmlld3BvcnRoZWln
aHQ7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb25zdCBmbG9hdCBNX1BJID0gMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjsKKwlmbG9hdCBjb3NpbmU7CisJZmxvYXQgc2luZTsKKworI2lmZGVmIEdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworCS8vIGZ3aWR0aCBvZiBob3Jpem9udGFsIHNpbmUg
d2F2ZSB3aXRoIGEgcGVyaW9kIG9mIDEyOCBwaXhlbHMsIHNjYWxlZCB0byBnbyBmcm9tIC0xIHRv
ICsxCisJc2luZSA9IHNpbihmcmFjdChnbF9GcmFnQ29vcmQueCAvIDEyOC4wKSAqICgyLjAgKiBN
X1BJKSk7CisJY29zaW5lID0gUkVEVUNFX1JBTkdFKCgxMjguMCAvICgyLjAgKiBNX1BJKSkgKiBm
d2lkdGgoc2luZSkpOworI2Vsc2UKKyAgICAgICAgY29zaW5lID0gMC41OworI2VuZGlmCisKKwlp
ZiggKGdsX0ZyYWdDb29yZC54IDwgU0FGRVRZX0JPVU5EKSAmJiAoZ2xfRnJhZ0Nvb3JkLnkgPCBT
QUZFVFlfQk9VTkQpICkKKwl7CisJCWdsX0ZyYWdDb2xvciA9IHZlYzQoY29zaW5lLCBjb3NpbmUs
IGNvc2luZSwgMS4wKTsKKwl9CisJZWxzZSBkaXNjYXJkOworfQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfZHgudmVydCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
MkV4dGVuc2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19keC52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
ZWJmODY3ZWMxMzg5YzY3ZWYyYTNhNjJlZjRiYWQ1NWQ0NDQ2NTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfZHgudmVydApAQCAt
MCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4OworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJdmVydFhZID0gZ3RmX1ZlcnRleC54eTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnX2R5LmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfZHkuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZDU1NWY2MjNlYjZjN2RkYjI2Mzk2MmY1ZTAxMWYzZmMyMTgxNDMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnX2R5LmZyYWcK
QEAgLTAsMCArMSw0OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCisjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyA6IGVuYWJsZQorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLy8gc2V0
dGluZyBhIGJvdW5kYXJ5IGZvciBjYXNlcyB3aGVyZSBzY3JlZW4gc2l6ZXMgbWF5IGV4Y2VlZCB0
aGUgcHJlY2lzaW9uCisvLyBvZiB0aGUgYXJpdGhtZXRpYyB1c2VkLgorI2RlZmluZSBTQUZFVFlf
Qk9VTkQgNTAwLjAKKworLy8gTWFjcm8gdG8gc2NhbGUvYmlhcyB0aGUgcmFuZ2Ugb2Ygb3V0cHV0
LiAgSWYgaW5wdXQgaXMgWy0xLjAsIDEuMF0sIG1hcHMgdG8gWzAuNSwgMS4wXS4uICAKKy8vIEFj
Y291bnRzIGZvciBwcmVjaXNpb24gZXJyb3JzIG1hZ25pZmllZCBieSBkZXJpdmF0aXZlIG9wZXJh
dGlvbi4KKyNkZWZpbmUgUkVEVUNFX1JBTkdFKEEpICgoQSkgKyAzLjApIC8gNC4wCisKKwordmFy
eWluZyB2ZWMyIHZlcnRYWTsKKwordW5pZm9ybSBmbG9hdCB2aWV3cG9ydHdpZHRoOwordW5pZm9y
bSBmbG9hdCB2aWV3cG9ydGhlaWdodDsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZs
b2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGNvc2luZTsKKwlmbG9h
dCBzaW5lOworCisjaWZkZWYgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisJLy8gZndpZHRo
IG9mIHZlcnRpY2FsIHNpbmUgd2F2ZSB3aXRoIGEgcGVyaW9kIG9mIDEyOCBwaXhlbHMsIHNjYWxl
ZCB0byBnbyBmcm9tIC0xIHRvICsxCisJc2luZSA9IHNpbihmcmFjdChnbF9GcmFnQ29vcmQueSAv
IDEyOC4wKSAqICgyLjAgKiBNX1BJKSk7CisJY29zaW5lID0gUkVEVUNFX1JBTkdFKCgxMjguMCAv
ICgyLjAgKiBNX1BJKSkgKiBmd2lkdGgoc2luZSkpOworI2Vsc2UKKyAgICAgICAgY29zaW5lID0g
MC41OworI2VuZGlmCisKKwlpZiggKGdsX0ZyYWdDb29yZC54IDwgU0FGRVRZX0JPVU5EKSAmJiAo
Z2xfRnJhZ0Nvb3JkLnkgPCBTQUZFVFlfQk9VTkQpICkKKwl7CisJICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoY29zaW5lLCBjb3NpbmUsIGNvc2luZSwgMS4wKTsKKwl9CisJZWxzZSBkaXNjYXJkOwor
fQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndpZHRoX2Zy
YWdfZHkudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19k
eS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU3ZWJmODY3ZWMxMzg5YzY3ZWYyYTNhNjJlZjRiYWQ1NWQ0NDQ2
NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndp
ZHRoX2ZyYWdfZHkudmVydApAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworCit2YXJ5aW5nIHZlYzIg
dmVydFhZOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVydFhZID0gZ3RmX1ZlcnRleC54eTsK
KwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0
aF9mcmFnX3JlZi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9m
cmFnX3JlZi5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MGIwMDA3ZDE0NGFiMzlhZjYyZGJmYjQ4MDNlMWIy
ZGRhNzU2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lk
dGgvZndpZHRoX2ZyYWdfcmVmLmZyYWcKQEAgLTAsMCArMSw0NyBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCisjZXh0ZW5zaW9u
IEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZQorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKKworLy8gc2V0dGluZyBhIGJvdW5kYXJ5IGZvciBjYXNlcyB3aGVyZSBz
Y3JlZW4gc2l6ZXMgbWF5IGV4Y2VlZCB0aGUgcHJlY2lzaW9uCisvLyBvZiB0aGUgYXJpdGhtZXRp
YyB1c2VkLgorI2RlZmluZSBTQUZFVFlfQk9VTkQgNTAwLjAKKworLy8gTWFjcm8gdG8gc2NhbGUv
YmlhcyB0aGUgcmFuZ2Ugb2Ygb3V0cHV0LiAgSWYgaW5wdXQgaXMgWy0xLjAsIDEuMF0sIG1hcHMg
dG8gWzAuNSwgMS4wXS4uICAKKy8vIEFjY291bnRzIGZvciBwcmVjaXNpb24gZXJyb3JzIG1hZ25p
ZmllZCBieSBkZXJpdmF0aXZlIG9wZXJhdGlvbi4KKyNkZWZpbmUgUkVEVUNFX1JBTkdFKEEpICgo
QSkgKyAzLjApIC8gNC4wCisKKwordW5pZm9ybSBmbG9hdCB2aWV3cG9ydHdpZHRoOwordW5pZm9y
bSBmbG9hdCB2aWV3cG9ydGhlaWdodDsKKwordmFyeWluZyB2ZWMyIHZlcnRYWTsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2
OworCWZsb2F0IGZ1bmM7CisKKwlpZiggKGdsX0ZyYWdDb29yZC54IDwgU0FGRVRZX0JPVU5EKSAm
JiAoZ2xfRnJhZ0Nvb3JkLnkgPCBTQUZFVFlfQk9VTkQpICkKKwl7CisJCS8vIGF2ZXJhZ2Ugb2Yg
aG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWJzIGNvc2luZSB3YXZlcyB3aXRoIHBlcmlvZHMgb2Yg
MTI4IHBpeGVscworCisjaWZkZWYgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisJCWZ1bmMg
PSBSRURVQ0VfUkFOR0UoMC41ICogKGFicyhjb3MoZnJhY3QoZ2xfRnJhZ0Nvb3JkLnggLyAxMjgu
MCkgKiAoMi4wICogTV9QSSkpKSArIGFicyhjb3MoZnJhY3QoZ2xfRnJhZ0Nvb3JkLnkgLyAxMjgu
MCkgKiAoMi4wICogTV9QSSkpKSkpOworI2Vsc2UKKyAgICBmdW5jID0gMC41OworI2VuZGlmCisK
KwkJZ2xfRnJhZ0NvbG9yID0gdmVjNChmdW5jLCBmdW5jLCBmdW5jLCAxLjApOworCX0KKwllbHNl
IGRpc2NhcmQ7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2Z3aWR0
aC9md2lkdGhfZnJhZ19yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVuc2lvblRlc3RzL2Z3aWR0aC9m
d2lkdGhfZnJhZ19yZWYudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2ViZjg2N2VjMTM4OWM2N2VmMmEzYTYy
ZWY0YmFkNTVkNDQ0NjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0ZW5zaW9uVGVz
dHMvZndpZHRoL2Z3aWR0aF9mcmFnX3JlZi52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisK
K3ZhcnlpbmcgdmVjMiB2ZXJ0WFk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZXJ0WFkgPSBn
dGZfVmVydGV4Lnh5OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0
cy9md2lkdGgvZndpZHRoX2ZyYWdfcmVmX2R4LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0
cy9md2lkdGgvZndpZHRoX2ZyYWdfcmVmX2R4LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1NTkxMjA4ZTIy
NjFjYjNhYWU0OWVhNzE5MjIzYjUyZTRhODI5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
MkV4dGVuc2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19yZWZfZHguZnJhZwpAQCAtMCwwICsx
LDQ2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKKyNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5h
YmxlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCisvLyBzZXR0aW5nIGEgYm91
bmRhcnkgZm9yIGNhc2VzIHdoZXJlIHNjcmVlbiBzaXplcyBtYXkgZXhjZWVkIHRoZSBwcmVjaXNp
b24KKy8vIG9mIHRoZSBhcml0aG1ldGljIHVzZWQuCisjZGVmaW5lIFNBRkVUWV9CT1VORCA1MDAu
MAorCisvLyBNYWNybyB0byBzY2FsZS9iaWFzIHRoZSByYW5nZSBvZiBvdXRwdXQuICBJZiBpbnB1
dCBpcyBbLTEuMCwgMS4wXSwgbWFwcyB0byBbMC41LCAxLjBdLi4gIAorLy8gQWNjb3VudHMgZm9y
IHByZWNpc2lvbiBlcnJvcnMgbWFnbmlmaWVkIGJ5IGRlcml2YXRpdmUgb3BlcmF0aW9uLgorI2Rl
ZmluZSBSRURVQ0VfUkFOR0UoQSkgKChBKSArIDMuMCkgLyA0LjAKKwordW5pZm9ybSBmbG9hdCB2
aWV3cG9ydHdpZHRoOwordW5pZm9ybSBmbG9hdCB2aWV3cG9ydGhlaWdodDsKKwordmFyeWluZyB2
ZWMyIHZlcnRYWTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbnN0IGZsb2F0IE1fUEkgPSAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2OworCWZsb2F0IGNvc2luZTsKKworCWlmKCAoZ2xfRnJhZ0Nv
b3JkLnggPCBTQUZFVFlfQk9VTkQpICYmIChnbF9GcmFnQ29vcmQueSA8IFNBRkVUWV9CT1VORCkg
KQorCXsKKwkJLy8gaG9yaXpvbnRhbCBhYnMgY29zaW5lIHdhdmUgd2l0aCBhIHBlcmlvZCBvZiAx
MjggcGl4ZWxzCisKKyNpZmRlZiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKKwkJY29zaW5l
ID0gUkVEVUNFX1JBTkdFKGFicyhjb3MoZnJhY3QoZ2xfRnJhZ0Nvb3JkLnggLyAxMjguMCkgKiAo
Mi4wICogTV9QSSkpKSk7CisjZWxzZQorICAgIGNvc2luZSA9IDAuNTsKKyNlbmRpZgorCisJCWds
X0ZyYWdDb2xvciA9IHZlYzQoY29zaW5lLCBjb3NpbmUsIGNvc2luZSwgMS4wKTsKKwl9CisJZWxz
ZSBkaXNjYXJkOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lk
dGgvZndpZHRoX2ZyYWdfcmVmX2R4LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lk
dGgvZndpZHRoX2ZyYWdfcmVmX2R4LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdlYmY4NjdlYzEzODljNjdl
ZjJhM2E2MmVmNGJhZDU1ZDQ0NDY1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkV4dGVu
c2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19yZWZfZHgudmVydApAQCAtMCwwICsxLDE5IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9u
TWF0cml4OworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
dmVydFhZID0gZ3RmX1ZlcnRleC54eTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0
ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnX3JlZl9keS5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRXh0
ZW5zaW9uVGVzdHMvZndpZHRoL2Z3aWR0aF9mcmFnX3JlZl9keS5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQx
ODdjZjhkZTA1ZGE5NmM3MGE3ZGEwNDBhNzA0Mjc3NTY3NzUyYmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJFeHRlbnNpb25UZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfcmVmX2R5LmZyYWcK
QEAgLTAsMCArMSw0NyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCisjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyA6IGVuYWJsZQorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKworLy8gc2V0
dGluZyBhIGJvdW5kYXJ5IGZvciBjYXNlcyB3aGVyZSBzY3JlZW4gc2l6ZXMgbWF5IGV4Y2VlZCB0
aGUgcHJlY2lzaW9uCisvLyBvZiB0aGUgYXJpdGhtZXRpYyB1c2VkLgorI2RlZmluZSBTQUZFVFlf
Qk9VTkQgNTAwLjAKKworLy8gTWFjcm8gdG8gc2NhbGUvYmlhcyB0aGUgcmFuZ2Ugb2Ygb3V0cHV0
LiAgSWYgaW5wdXQgaXMgWy0xLjAsIDEuMF0sIG1hcHMgdG8gWzAuNSwgMS4wXS4gIAorLy8gQWNj
b3VudHMgZm9yIHByZWNpc2lvbiBlcnJvcnMgbWFnbmlmaWVkIGJ5IGRlcml2YXRpdmUgb3BlcmF0
aW9uLgorI2RlZmluZSBSRURVQ0VfUkFOR0UoQSkgKChBKSArIDMuMCkgLyA0LjAKKworCit1bmlm
b3JtIGZsb2F0IHZpZXdwb3J0d2lkdGg7Cit1bmlmb3JtIGZsb2F0IHZpZXdwb3J0aGVpZ2h0Owor
Cit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29uc3QgZmxv
YXQgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisJZmxvYXQgY29zaW5lOworCisJaWYo
IChnbF9GcmFnQ29vcmQueCA8IFNBRkVUWV9CT1VORCkgJiYgKGdsX0ZyYWdDb29yZC55IDwgU0FG
RVRZX0JPVU5EKSApCisJeworCQkvLyB2ZXJ0aWNhbCBhYnMgY29zaW5lIHdhdmUgd2l0aCBhIHBl
cmlvZCBvZiAxMjggcGl4ZWxzCisKKyNpZmRlZiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMK
KwkJY29zaW5lID0gUkVEVUNFX1JBTkdFKGFicyhjb3MoZnJhY3QoZ2xfRnJhZ0Nvb3JkLnkgLyAx
MjguMCkgKiAoMi4wICogTV9QSSkpKSk7CisjZWxzZQorICAgIGNvc2luZSA9IDAuNTsKKyNlbmRp
ZgorCisJCWdsX0ZyYWdDb2xvciA9IHZlYzQoY29zaW5lLCBjb3NpbmUsIGNvc2luZSwgMS4wKTsK
Kwl9CisJZWxzZSBkaXNjYXJkOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25U
ZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfcmVmX2R5LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJFeHRlbnNpb25U
ZXN0cy9md2lkdGgvZndpZHRoX2ZyYWdfcmVmX2R5LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdlYmY4Njdl
YzEzODljNjdlZjJhM2E2MmVmNGJhZDU1ZDQ0NDY1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMkV4dGVuc2lvblRlc3RzL2Z3aWR0aC9md2lkdGhfZnJhZ19yZWZfZHkudmVydApAQCAtMCww
ICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4OworCit2YXJ5aW5nIHZlYzIgdmVydFhZOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJdmVydFhZID0gZ3RmX1ZlcnRleC54eTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyRml4ZWRUZXN0cy9idWZmZXJfb2JqZWN0cy9idWZmZXJfb2JqZWN0cy5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyRml4ZWRUZXN0cy9idWZmZXJfb2JqZWN0cy9idWZmZXJfb2JqZWN0cy5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZmM2VmODJiOTg1ZjM1NjEwODNiOTc4NWNhOTE3MDBlNTM0NWIwZjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2J1ZmZlcl9vYmplY3RzL2J1ZmZlcl9vYmpl
Y3RzLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordW5pZm9ybSBzYW1wbGVyMkQgZ3RmX1RleHR1cmUwOwordmFyeWluZyB2ZWM0IGNv
bG9yOwordmFyeWluZyB2ZWM0IGd0Zl9UZXhDb29yZFsxXTsKKwordm9pZCBtYWluICh2b2lkKQor
eworCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChndGZfVGV4dHVyZTAsIGd0Zl9UZXhDb29yZFsw
XS5zdCwgMS4wKSAqIGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9i
dWZmZXJfb2JqZWN0cy9idWZmZXJfb2JqZWN0cy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9i
dWZmZXJfb2JqZWN0cy9idWZmZXJfb2JqZWN0cy52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliOGY3NTNkNTgz
MGE3YTc1ZGRlZTI4YjRlYmJjZjFkNjQ1ZTU1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TDJGaXhlZFRlc3RzL2J1ZmZlcl9vYmplY3RzL2J1ZmZlcl9vYmplY3RzLnZlcnQKQEAgLTAsMCAr
MSwxNDQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
K2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cith
dHRyaWJ1dGUgdmVjMyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3RmX011bHRpVGV4Q29v
cmQwOworCit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit1bmlm
b3JtIG1hdDMgZ3RmX05vcm1hbE1hdHJpeDsKKwordmFyeWluZyB2ZWM0IGd0Zl9UZXhDb29yZFsx
XTsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordmVjNCBBbWJpZW50OwordmVjNCBEaWZmdXNlOwor
dmVjNCBTcGVjdWxhcjsKKworY29uc3QgdmVjMyBsaWdodFBvc2l0aW9uID0gdmVjMygwLjAsIDAu
MCwgMS4wKTsKK2NvbnN0IHZlYzMgc3BvdERpcmVjdGlvbiA9IHZlYzMoMC4wLCAwLjAsIC0xLjAp
OworY29uc3QgZmxvYXQgc3BvdEN1dG9mZiA9IDE4MC4wOworY29uc3QgZmxvYXQgc3BvdEV4cG9u
ZW50ID0gMC4wOworCitjb25zdCBmbG9hdCBsaWdodEF0dGVudWF0aW9uQ29uc3RhbnQgPSAxLjA7
Citjb25zdCBmbG9hdCBsaWdodEF0dGVudWF0aW9uTGluZWFyID0gMC4wOworY29uc3QgZmxvYXQg
bGlnaHRBdHRlbnVhdGlvblF1YWRyYXRpYyA9IDAuMDsKKworY29uc3QgdmVjNCBsaWdodEFtYmll
bnQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7Cit2ZWM0IGxpZ2h0RGlmZnVzZSA9IHZlYzQo
MS4wLCAxLjAsIDEuMCwgMS4wKTsKK3ZlYzQgbGlnaHRTcGVjdWxhciA9IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKKworY29uc3QgZmxvYXQgbWF0ZXJpYWxTaGluaW5lc3MgPSAwLjA7CisKK2Nv
bnN0IHZlYzQgc2NlbmVDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKwordm9pZCBz
cG90TGlnaHQoaW4gaW50IGksCisgICAgICAgICAgICAgICBpbiB2ZWMzIG5vcm1hbCwKKyAgICAg
ICAgICAgICAgIGluIHZlYzMgZXllLAorICAgICAgICAgICAgICAgaW4gdmVjMyBlY1Bvc2l0aW9u
MworICAgICAgICAgICAgICAgKQoreworICAgIGZsb2F0IG5Eb3RWUDsgICAgICAgICAgIC8vIG5v
cm1hbCAuIGxpZ2h0IGRpcmVjdGlvbgorICAgIGZsb2F0IG5Eb3RIVjsgICAgICAgICAgIC8vIG5v
cm1hbCAuIGxpZ2h0IGhhbGYgdmVjdG9yCisgICAgZmxvYXQgcGY7ICAgICAgICAgICAgICAgLy8g
cG93ZXIgZmFjdG9yCisgICAgZmxvYXQgc3BvdERvdDsgICAgICAgICAgLy8gY29zaW5lIG9mIGFu
Z2xlIGJldHdlZW4gc3BvdGxpZ2h0CisgICAgZmxvYXQgc3BvdEF0dGVudWF0aW9uOyAgLy8gc3Bv
dGxpZ2h0IGF0dGVudWF0aW9uIGZhY3RvcgorICAgIGZsb2F0IGF0dGVudWF0aW9uOyAgICAgIC8v
IGNvbXB1dGVkIGF0dGVudWF0aW9uIGZhY3RvcgorICAgIGZsb2F0IGQ7ICAgICAgICAgICAgICAg
IC8vIGRpc3RhbmNlIGZyb20gc3VyZmFjZSB0byBsaWdodCBzb3VyY2UKKyAgICB2ZWMzIFZQOyAg
ICAgICAgICAgICAgICAvLyBkaXJlY3Rpb24gZnJvbSBzdXJmYWNlIHRvIGxpZ2h0IHBvc2l0aW9u
CisgICAgdmVjMyBoYWxmVmVjdG9yOyAgICAgICAgLy8gZGlyZWN0aW9uIG9mIG1heGltdW0gaGln
aGxpZ2h0cworCisgICAgLy8gQ29tcHV0ZSB2ZWN0b3IgZnJvbSBzdXJmYWNlIHRvIGxpZ2h0IHBv
c2l0aW9uCisgICAgVlAgPSBsaWdodFBvc2l0aW9uIC0gZWNQb3NpdGlvbjM7CisKKyAgICAvLyBD
b21wdXRlIGRpc3RhbmNlIGJldHdlZW4gc3VyZmFjZSBhbmQgbGlnaHQgcG9zaXRpb24KKyAgICBk
ID0gbGVuZ3RoKFZQKTsKKworICAgIC8vIE5vcm1hbGl6ZSB0aGUgdmVjdG9yIGZyb20gc3VyZmFj
ZSB0byBsaWdodCBwb3NpdGlvbgorICAgIFZQID0gbm9ybWFsaXplKFZQKTsKKworICAgIC8vIENv
bXB1dGUgYXR0ZW51YXRpb24KKyAgICBhdHRlbnVhdGlvbiA9IDEuMCAvIChsaWdodEF0dGVudWF0
aW9uQ29uc3RhbnQgKworICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0QXR0ZW51YXRpb25M
aW5lYXIgKiBkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodEF0dGVudWF0aW9uUXVh
ZHJhdGljICogZCAqIGQpOworCisgICAgLy8gU2VlIGlmIHBvaW50IG9uIHN1cmZhY2UgaXMgaW5z
aWRlIGNvbmUgb2YgaWxsdW1pbmF0aW9uCisgICAgc3BvdERvdCA9IGRvdCgtVlAsIG5vcm1hbGl6
ZShzcG90RGlyZWN0aW9uKSk7CisKKyAgICBpZiAoc3BvdERvdCA8IGNvcyhyYWRpYW5zKHNwb3RD
dXRvZmYpKSkKKyAgICAgICAgc3BvdEF0dGVudWF0aW9uID0gMC4wOyAvLyBsaWdodCBhZGRzIG5v
IGNvbnRyaWJ1dGlvbgorICAgIGVsc2UKKyAgICAgICAgc3BvdEF0dGVudWF0aW9uID0gcG93KHNw
b3REb3QsIHNwb3RFeHBvbmVudCk7CisKKyAgICAvLyBDb21iaW5lIHRoZSBzcG90bGlnaHQgYW5k
IGRpc3RhbmNlIGF0dGVudWF0aW9uLgorICAgIGF0dGVudWF0aW9uICo9IHNwb3RBdHRlbnVhdGlv
bjsKKworICAgIGhhbGZWZWN0b3IgPSBub3JtYWxpemUoVlAgKyBleWUpOworCisgICAgbkRvdFZQ
ID0gbWF4KDAuMCwgZG90KG5vcm1hbCwgVlApKTsKKyAgICBuRG90SFYgPSBtYXgoMC4wLCBkb3Qo
bm9ybWFsLCBoYWxmVmVjdG9yKSk7CisKKyAgICBpZiAobkRvdFZQID09IDAuMCkKKyAgICAgICAg
cGYgPSAwLjA7CisgICAgZWxzZQorICAgICAgICBwZiA9IHBvdyhuRG90SFYsIG1hdGVyaWFsU2hp
bmluZXNzKTsKKworICAgIEFtYmllbnQgICs9IGxpZ2h0QW1iaWVudCAqIGF0dGVudWF0aW9uOwor
ICAgIERpZmZ1c2UgICs9IGxpZ2h0RGlmZnVzZSAqIG5Eb3RWUCAqIGF0dGVudWF0aW9uOworICAg
IFNwZWN1bGFyICs9IGxpZ2h0U3BlY3VsYXIgKiBwZiAqIGF0dGVudWF0aW9uOworfQorCit2ZWMz
IGZub3JtYWwodm9pZCkKK3sKKyAgICAvL0NvbXB1dGUgdGhlIG5vcm1hbCAKKyAgICB2ZWMzIG5v
cm1hbCA9IGd0Zl9Ob3JtYWxNYXRyaXggKiBndGZfTm9ybWFsOworICAgIG5vcm1hbCA9IG5vcm1h
bGl6ZShub3JtYWwpOworICAgIAorCXJldHVybiBub3JtYWw7Cit9CisKK3ZvaWQgZmxpZ2h0KGlu
IHZlYzMgbm9ybWFsLCBpbiB2ZWM0IGVjUG9zaXRpb24sIGZsb2F0IGFscGhhRmFkZSkKK3sKKyAg
ICB2ZWMzIGVjUG9zaXRpb24zOworICAgIHZlYzMgZXllOworCisgICAgZWNQb3NpdGlvbjMgPSAo
dmVjMyAoZWNQb3NpdGlvbikpIC8gZWNQb3NpdGlvbi53OworICAgIGV5ZSA9IHZlYzMgKDAuMCwg
MC4wLCAxLjApOworCisgICAgLy8gQ2xlYXIgdGhlIGxpZ2h0IGludGVuc2l0eSBhY2N1bXVsYXRv
cnMKKyAgICBBbWJpZW50ICA9IHZlYzQgKDAuMCk7CisgICAgRGlmZnVzZSAgPSB2ZWM0ICgwLjAp
OworICAgIFNwZWN1bGFyID0gdmVjNCAoMC4wKTsKKyAgIAorICAgLy9saWdodFNwZWN1bGFyID0g
Z3RmX0NvbG9yOworCisgICAgc3BvdExpZ2h0KDAsIG5vcm1hbCwgZXllLCBlY1Bvc2l0aW9uMyk7
CisKKyAgICBjb2xvciA9IHNjZW5lQ29sb3IgKworICAgICAgQW1iaWVudCAgKiBndGZfQ29sb3Ig
KworICAgICAgRGlmZnVzZSAgKiBndGZfQ29sb3I7CisgICAgY29sb3IgKz0gU3BlY3VsYXIgKiBn
dGZfQ29sb3I7CisgICAgY29sb3IgPSBjbGFtcCggY29sb3IsIDAuMCwgMS4wICk7CisKKyAgICBj
b2xvci5hICo9IGFscGhhRmFkZTsKK30KKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgIHRy
YW5zZm9ybWVkTm9ybWFsOworICAgIGZsb2F0IGFscGhhRmFkZSA9IDEuMDsKKwkKKwl2ZWM0IGVj
UG9zaXRpb24gPSBndGZfVmVydGV4OworCQorCWNvbG9yID0gZ3RmX0NvbG9yOworCWd0Zl9UZXhD
b29yZFswXSA9IGd0Zl9NdWx0aVRleENvb3JkMDsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKwl0cmFuc2Zvcm1lZE5vcm1hbCA9IGZu
b3JtYWwoKTsKKyAgICBmbGlnaHQodHJhbnNmb3JtZWROb3JtYWwsIGVjUG9zaXRpb24sIGFscGhh
RmFkZSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2J1ZmZlcl9vYmplY3Rz
L2J1ZmZlcl9vYmplY3RzX211bHRpdGV4dHVyaW5nLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3Rz
L2J1ZmZlcl9vYmplY3RzL2J1ZmZlcl9vYmplY3RzX211bHRpdGV4dHVyaW5nLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTA5YzdjMWY0MjMyOWI3Yjg0NDY4MWRkNjYwYTFmZTliYjgzMWUxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvYnVmZmVyX29iamVjdHMvYnVmZmVyX29iamVj
dHNfbXVsdGl0ZXh0dXJpbmcuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIHNhbXBsZXIyRCBndGZfVGV4dHVyZTA7Cit1
bmlmb3JtIHNhbXBsZXIyRCBndGZfVGV4dHVyZTE7CisKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3Zh
cnlpbmcgdmVjNCBndGZfVGV4Q29vcmRbMl07CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQoZ3RmX1RleHR1cmUwLCBndGZfVGV4Q29vcmRbMF0uc3QsIDEu
MCk7CisJZ2xfRnJhZ0NvbG9yICs9IHRleHR1cmUyRChndGZfVGV4dHVyZTEsIGd0Zl9UZXhDb29y
ZFsxXS5zdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvYnVmZmVy
X29iamVjdHMvYnVmZmVyX29iamVjdHNfbXVsdGl0ZXh0dXJpbmcudmVydCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZp
eGVkVGVzdHMvYnVmZmVyX29iamVjdHMvYnVmZmVyX29iamVjdHNfbXVsdGl0ZXh0dXJpbmcudmVy
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lOThhODVjYTE0M2E4ODcxNTFlZDk5ZGFkYWMxODgxZjA0YTE5ODRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9idWZmZXJfb2JqZWN0cy9idWZm
ZXJfb2JqZWN0c19tdWx0aXRleHR1cmluZy52ZXJ0CkBAIC0wLDAgKzEsMjUgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9NdWx0aVRleENv
b3JkMDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9NdWx0aVRleENvb3JkMTsKKwordmFyeWluZyB2ZWM0
IGNvbG9yOwordmFyeWluZyB2ZWM0IGd0Zl9UZXhDb29yZFsyXTsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWNvbG9yID0gZ3RmX0NvbG9yOworCWd0Zl9UZXhDb29yZFswXSA9IGd0Zl9NdWx0aVRl
eENvb3JkMDsKKwlndGZfVGV4Q29vcmRbMV0gPSBndGZfTXVsdGlUZXhDb29yZDE7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2J1ZmZlcl9vYmplY3RzL2J1ZmZlcl9vYmpl
Y3RzX3BvaW50U2l6ZS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9idWZmZXJfb2JqZWN0cy9i
dWZmZXJfb2JqZWN0c19wb2ludFNpemUuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODE3NWNkMDdlZGU4OGU1
OGFmZmVmNTg4ODE0ZjhiNzBkNzhkYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4
ZWRUZXN0cy9idWZmZXJfb2JqZWN0cy9idWZmZXJfb2JqZWN0c19wb2ludFNpemUuZnJhZwpAQCAt
MCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5
aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSBj
b2xvcjsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvYnVmZmVyX29iamVjdHMv
YnVmZmVyX29iamVjdHNfcG9pbnRTaXplLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2J1ZmZl
cl9vYmplY3RzL2J1ZmZlcl9vYmplY3RzX3BvaW50U2l6ZS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzZmZh
NGJmMTgwOTc5Y2FkOTNiYjZhZTQ4OTIzOTAxZDFlY2FiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJGaXhlZFRlc3RzL2J1ZmZlcl9vYmplY3RzL2J1ZmZlcl9vYmplY3RzX3BvaW50U2l6
ZS52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgZmxvYXQgZ3RmX1BvaW50U2l6ZTsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0gZ3RmX0NvbG9yOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworCWdsX1BvaW50U2l6
ZSA9IGd0Zl9Qb2ludFNpemU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2Nv
cHlfdGV4dHVyZS9jb3B5X3RleHR1cmUuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvY29weV90
ZXh0dXJlL2NvcHlfdGV4dHVyZS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZjU5YTQxYTA5ZTdjOGNlMzQ5
MWM3MTVjMzJjMjNjY2MxMTdiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRl
c3RzL2NvcHlfdGV4dHVyZS9jb3B5X3RleHR1cmUuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIHNhbXBsZXIyRCBndGZf
VGV4dHVyZTA7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2YXJ5aW5nIHZlYzQgZ3RmX1RleENvb3Jk
WzFdOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJaWYgKGd0Zl9UZXhDb29yZFswXS5zID09IDEu
MCkKKwkJZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisJZWxzZQorCQlnbF9GcmFnQ29sb3IgPSB0ZXh0
dXJlMkQoZ3RmX1RleHR1cmUwLCBndGZfVGV4Q29vcmRbMF0uc3QsIDEuMCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0LmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJGaXhlZFRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0LmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDgxNzVjZDA3ZWRlODhlNThhZmZlZjU4ODgxNGY4YjcwZDc4ZGJkOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHQuZnJhZwpA
QCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2
YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3Ig
PSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvZGVmYXVsdF9zaGFk
ZXJzL2RlZmF1bHQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvZGVmYXVsdF9zaGFkZXJzL2Rl
ZmF1bHQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTk5OTljYjkzOTcwMjMzZmY3MzFiMmU4Mzc3M2M1YjUx
YzQ4ZmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9kZWZhdWx0X3No
YWRlcnMvZGVmYXVsdC52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
Kwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0
aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKwlnbF9Qb2ludFNpemUgPSAxLjA7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0X3RleHR1cmVk
LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2RlZmF1bHRfc2hhZGVycy9kZWZhdWx0X3RleHR1
cmVkLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjZDIyNTY3NTc4Y2VjNGM4ZjI4MTVhOGYzMDljMTNjYTE0
OWVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvZGVmYXVsdF9zaGFk
ZXJzL2RlZmF1bHRfdGV4dHVyZWQuZnJhZwpAQCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIHNhbXBsZXIyRCBndGZfVGV4dHVyZTA7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2YXJ5aW5nIHZlYzQgZ3RmX1RleENvb3JkWzFdOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKGd0Zl9UZXh0dXJl
MCwgZ3RmX1RleENvb3JkWzBdLnh5KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVz
dHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHRfdGV4dHVyZWQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVk
VGVzdHMvZGVmYXVsdF9zaGFkZXJzL2RlZmF1bHRfdGV4dHVyZWQudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDg4YTYyMTQ3MjBmMzdhNmE3NmMzNWFkMjVjNzY4Nzg2ZWRjN2U2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9kZWZhdWx0X3NoYWRlcnMvZGVmYXVsdF90ZXh0dXJlZC52
ZXJ0CkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0
Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIHZlYzQgZ3RmX1RleENvb3JkWzFdOworYXR0cmlidXRlIHZlYzQgZ3RmX011bHRpVGV4
Q29vcmQwOwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29s
b3IgPSBndGZfQ29sb3I7CisJZ3RmX1RleENvb3JkWzBdID0gZ3RmX011bHRpVGV4Q29vcmQwOwor
CWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4
OworCWdsX1BvaW50U2l6ZSA9IDEuMDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVz
dHMvbGlnaHRpbmdfZGlmZnVzZS9saWdodGluZ19kaWZmdXNlLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhl
ZFRlc3RzL2xpZ2h0aW5nX2RpZmZ1c2UvbGlnaHRpbmdfZGlmZnVzZS5mcmFnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU1ZWM2OTNjMjA3YTAwODMzOTRkYWY0OGNkYWUyYWEzZTMxOWQzYTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2xpZ2h0aW5nX2RpZmZ1c2UvbGlnaHRpbmdfZGlmZnVz
ZS5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKSAKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMv
bGlnaHRpbmdfZGlmZnVzZS9saWdodGluZ19kaWZmdXNlLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRl
c3RzL2xpZ2h0aW5nX2RpZmZ1c2UvbGlnaHRpbmdfZGlmZnVzZS52ZXJ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
Y2NmNzA2ZWNmNjQxODY5MTUxYWZmZWQ5NGVmNjZiOTNlOTViYmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2xpZ2h0aW5nX2RpZmZ1c2UvbGlnaHRpbmdfZGlmZnVzZS52
ZXJ0CkBAIC0wLDAgKzEsMTMyIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworCit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gbWF0MyBndGZfTm9y
bWFsTWF0cml4OworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsKKwordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2ZWM0IEFtYmllbnQ7Cit2ZWM0IERpZmZ1c2U7Cit2ZWM0IFNwZWN1bGFyOworCitj
b25zdCB2ZWMzIGxpZ2h0UG9zaXRpb24gPSB2ZWMzKDAuMCwgMC4wLCAxMC4wKTsKK2NvbnN0IGZs
b2F0IGxpZ2h0QXR0ZW51YXRpb25Db25zdGFudCA9IDEuMDsKK2NvbnN0IGZsb2F0IGxpZ2h0QXR0
ZW51YXRpb25MaW5lYXIgPSAwLjA7Citjb25zdCBmbG9hdCBsaWdodEF0dGVudWF0aW9uUXVhZHJh
dGljID0gMC4wOworCitjb25zdCB2ZWM0IGxpZ2h0QW1iaWVudCA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMC4wKTsKK3ZlYzQgbGlnaHREaWZmdXNlID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwor
Citjb25zdCB2ZWM0IG1hdGVyaWFsQW1iaWVudCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsK
K2NvbnN0IHZlYzQgbWF0ZXJpYWxEaWZmdXNlID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOwor
Y29uc3QgdmVjNCBtYXRlcmlhbFNwZWN1bGFyID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOwor
Y29uc3QgZmxvYXQgbWF0ZXJpYWxTaGluaW5lc3MgPSAyMC4wOworCitjb25zdCB2ZWM0IHNjZW5l
Q29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKwordm9pZCBwb2ludExpZ2h0KGlu
IGludCBpLCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBleWUsIGluIHZlYzMgZWNQb3NpdGlvbjMp
Cit7CisgICBmbG9hdCBuRG90VlA7ICAgICAgIC8vIG5vcm1hbCAuIGxpZ2h0IGRpcmVjdGlvbgor
ICAgZmxvYXQgbkRvdEhWOyAgICAgICAvLyBub3JtYWwgLiBsaWdodCBoYWxmIHZlY3RvcgorICAg
ZmxvYXQgcGY7ICAgICAgICAgICAvLyBwb3dlciBmYWN0b3IKKyAgIGZsb2F0IGF0dGVudWF0aW9u
OyAgLy8gY29tcHV0ZWQgYXR0ZW51YXRpb24gZmFjdG9yCisgICBmbG9hdCBkOyAgICAgICAgICAg
IC8vIGRpc3RhbmNlIGZyb20gc3VyZmFjZSB0byBsaWdodCBzb3VyY2UKKyAgIHZlYzMgIFZQOyAg
ICAgICAgICAgLy8gZGlyZWN0aW9uIGZyb20gc3VyZmFjZSB0byBsaWdodCBwb3NpdGlvbgorICAg
dmVjMyAgaGFsZlZlY3RvcjsgICAvLyBkaXJlY3Rpb24gb2YgbWF4aW11bSBoaWdobGlnaHRzCisK
KyAgIC8vIENvbXB1dGUgdmVjdG9yIGZyb20gc3VyZmFjZSB0byBsaWdodCBwb3NpdGlvbgorICAg
VlAgPSBsaWdodFBvc2l0aW9uIC0gZWNQb3NpdGlvbjM7CisKKyAgIC8vIENvbXB1dGUgZGlzdGFu
Y2UgYmV0d2VlbiBzdXJmYWNlIGFuZCBsaWdodCBwb3NpdGlvbgorICAgZCA9IGxlbmd0aChWUCk7
CisKKyAgIC8vIE5vcm1hbGl6ZSB0aGUgdmVjdG9yIGZyb20gc3VyZmFjZSB0byBsaWdodCBwb3Np
dGlvbgorICAgVlAgPSBub3JtYWxpemUoVlApOworCisgICAvLyBDb21wdXRlIGF0dGVudWF0aW9u
CisgICBhdHRlbnVhdGlvbiA9IDEuMCAvIChsaWdodEF0dGVudWF0aW9uQ29uc3RhbnQgKworICAg
ICAgIGxpZ2h0QXR0ZW51YXRpb25MaW5lYXIgKiBkICsKKyAgICAgICBsaWdodEF0dGVudWF0aW9u
UXVhZHJhdGljICogZCAqIGQpOworCisgICBoYWxmVmVjdG9yID0gbm9ybWFsaXplKFZQICsgZXll
KTsKKworICAgbkRvdFZQID0gbWF4KDAuMCwgZG90KG5vcm1hbCwgVlApKTsKKyAgIG5Eb3RIViA9
IG1heCgwLjAsIGRvdChub3JtYWwsIGhhbGZWZWN0b3IpKTsKKworICAgaWYgKG5Eb3RWUCA9PSAw
LjApCisgICB7CisgICAgICAgcGYgPSAwLjA7CisgICB9CisgICBlbHNlCisgICB7CisgICAgICAg
cGYgPSBwb3cobkRvdEhWLCBtYXRlcmlhbFNoaW5pbmVzcyk7CisKKyAgIH0KKyAgIEFtYmllbnQg
ICs9IGxpZ2h0QW1iaWVudCAqIGF0dGVudWF0aW9uOworICAgRGlmZnVzZSAgKz0gbGlnaHREaWZm
dXNlICogbkRvdFZQICogYXR0ZW51YXRpb247CisvLyAgIFNwZWN1bGFyICs9IGxpZ2h0U3BlY3Vs
YXIgKiBwZiAqIGF0dGVudWF0aW9uOworfQorCit2ZWMzIGZub3JtYWwodm9pZCkKK3sKKyAgICAv
L0NvbXB1dGUgdGhlIG5vcm1hbCAKKyAgICB2ZWMzIG5vcm1hbCA9IGd0Zl9Ob3JtYWwgKiBndGZf
Tm9ybWFsTWF0cml4OworICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShub3JtYWwpOworCQorCS8vIFRo
aXMgc2hvdWxkIGNoYW5nZSB0byAicmV0dXJuIG5vcm1hbCIgYnV0IGZvciB0aGlzIHRlc3QsIHdl
IGZvcmNlIGEgbm9ybWFsIHBvaW50aW5nIHRvd2FyZHMgdGhlIGxpZ2h0CisJLy8gcmV0dXJuIG5v
cm1hbAorICAgIHJldHVybiB2ZWMzKDAuMCwgMC4wLCAxLjApOworfQorCit2b2lkIGZsaWdodChp
biB2ZWMzIG5vcm1hbCwgaW4gdmVjNCBlY1Bvc2l0aW9uLCBmbG9hdCBhbHBoYUZhZGUpCit7Cisg
ICAgdmVjMyBlY1Bvc2l0aW9uMzsKKyAgICB2ZWMzIGV5ZTsKKworICAgIGVjUG9zaXRpb24zID0g
KHZlYzMgKGVjUG9zaXRpb24pKSAvIGVjUG9zaXRpb24udzsKKyAgICBleWUgPSB2ZWMzICgwLjAs
IDAuMCwgMS4wKTsKKworICAgIC8vIENsZWFyIHRoZSBsaWdodCBpbnRlbnNpdHkgYWNjdW11bGF0
b3JzCisgICAgQW1iaWVudCAgPSB2ZWM0ICgwLjApOworICAgIERpZmZ1c2UgID0gdmVjNCAoMC4w
KTsKKyAgICBTcGVjdWxhciA9IHZlYzQgKDAuMCk7CisJCisJbGlnaHREaWZmdXNlID0gZ3RmX0Nv
bG9yOworCisgICAgcG9pbnRMaWdodCgwLCBub3JtYWwsIGV5ZSwgZWNQb3NpdGlvbjMpOworCisg
ICAgY29sb3IgPSBzY2VuZUNvbG9yICsKKyAgICAgIEFtYmllbnQgICogbWF0ZXJpYWxBbWJpZW50
ICsKKyAgICAgIERpZmZ1c2UgICogbWF0ZXJpYWxEaWZmdXNlOworICAgIGNvbG9yICs9IFNwZWN1
bGFyICogbWF0ZXJpYWxTcGVjdWxhcjsKKyAgICBjb2xvciA9IGNsYW1wKCBjb2xvciwgMC4wLCAx
LjAgKTsKKworICAgIGNvbG9yLmEgKj0gYWxwaGFGYWRlOworfQorCisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKyAgICB2ZWMzICB0cmFuc2Zvcm1lZE5vcm1hbDsKKyAgICBmbG9hdCBhbHBoYUZhZGUg
PSAxLjA7CisKKyAgICAvLyBFeWUtY29vcmRpbmF0ZSBwb3NpdGlvbiBvZiB2ZXJ0ZXgsIG5lZWRl
ZCBpbiB2YXJpb3VzIGNhbGN1bGF0aW9ucworICAgIHZlYzQgZWNQb3NpdGlvbiA9IGd0Zl9Nb2Rl
bFZpZXdNYXRyaXggKiBndGZfVmVydGV4OworCisgICAgLy8gRG8gZml4ZWQgZnVuY3Rpb25hbGl0
eSB2ZXJ0ZXggdHJhbnNmb3JtCisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7CisgICAgdHJhbnNmb3JtZWROb3JtYWwgPSBmbm9ybWFs
KCk7CisgICAgZmxpZ2h0KHRyYW5zZm9ybWVkTm9ybWFsLCBlY1Bvc2l0aW9uLCBhbHBoYUZhZGUp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9saWdodGluZ19kaWZmdXNlL2xp
Z2h0aW5nX2RpZmZ1c2VfcmVmLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2xpZ2h0aW5nX2Rp
ZmZ1c2UvbGlnaHRpbmdfZGlmZnVzZV9yZWYuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODE3NWNkMDdlZGU4
OGU1OGFmZmVmNTg4ODE0ZjhiNzBkNzhkYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
Rml4ZWRUZXN0cy9saWdodGluZ19kaWZmdXNlL2xpZ2h0aW5nX2RpZmZ1c2VfcmVmLmZyYWcKQEAg
LTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0g
Y29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL2xpZ2h0aW5nX2RpZmZ1
c2UvbGlnaHRpbmdfZGlmZnVzZV9yZWYudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvbGlnaHRp
bmdfZGlmZnVzZS9saWdodGluZ19kaWZmdXNlX3JlZi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNTgzMTI3
MTQ1OGY0NDc0ZGRlZDY0ODQwNTU3MDRjMTE4MGEyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJGaXhlZFRlc3RzL2xpZ2h0aW5nX2RpZmZ1c2UvbGlnaHRpbmdfZGlmZnVzZV9yZWYudmVy
dApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7CithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSBndGZfQ29s
b3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL3BvaW50X3Jhc3Rlcml6
YXRpb24vcG9pbnRfcmFzdGVyaXphdGlvbi5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9wb2lu
dF9yYXN0ZXJpemF0aW9uL3BvaW50X3Jhc3Rlcml6YXRpb24uZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODE3
NWNkMDdlZGU4OGU1OGFmZmVmNTg4ODE0ZjhiNzBkNzhkYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyRml4ZWRUZXN0cy9wb2ludF9yYXN0ZXJpemF0aW9uL3BvaW50X3Jhc3Rlcml6YXRp
b24uZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9G
cmFnQ29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvcG9p
bnRfcmFzdGVyaXphdGlvbi9wb2ludF9yYXN0ZXJpemF0aW9uLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhl
ZFRlc3RzL3BvaW50X3Jhc3Rlcml6YXRpb24vcG9pbnRfcmFzdGVyaXphdGlvbi52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI0ZTIxYzdkNTBjN2U4ZDQxYjY1Nzk2YTAxMTMwMzMyODNkMjhkMGEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL3BvaW50X3Jhc3Rlcml6YXRpb24vcG9pbnRf
cmFzdGVyaXphdGlvbi52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0
dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7Cit1bmlmb3JtIGZsb2F0IGd0Zl9Qb2ludFNpemU7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Q
b3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKwln
bF9Qb2ludFNpemUgPSBndGZfUG9pbnRTaXplOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4
ZWRUZXN0cy9wb2ludF9zcHJpdGVzL3BvaW50X3Nwcml0ZXMuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVk
VGVzdHMvcG9pbnRfc3ByaXRlcy9wb2ludF9zcHJpdGVzLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVkYTc4
M2Y0NTM4YTMxNzAyZWJhNTc0ZWNkZmUyYjQxZGZjNDI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMkZpeGVkVGVzdHMvcG9pbnRfc3ByaXRlcy9wb2ludF9zcHJpdGVzLmZyYWcKQEAgLTAs
MCArMSwxNCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KwordW5pZm9ybSBzYW1wbGVyMkQgZ3RmX1RleHR1cmUwOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKGd0Zl9UZXh0dXJlMCwgZ2xfUG9pbnRDb29yZC5z
dCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL3BvaW50X3Nwcml0ZXMvcG9p
bnRfc3ByaXRlcy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9wb2ludF9zcHJpdGVzL3BvaW50
X3Nwcml0ZXMudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTIzYmY4MjlmNTQ4OTYyMTc1Y2QyYmNkMmFkMzE5
NzU2ZjIzZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRUZXN0cy9wb2ludF9z
cHJpdGVzL3BvaW50X3Nwcml0ZXMudmVydApAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OworYXR0cmlidXRlIGZsb2F0IGd0Zl9Qb2ludFNpemU7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKwlnbF9Q
b2ludFNpemUgPSBndGZfUG9pbnRTaXplOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyRml4ZWRU
ZXN0cy91c2VyX2NsaXBfcGxhbmVzL3VzZXJfY2xpcF9wbGFuZXMuZnJhZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZp
eGVkVGVzdHMvdXNlcl9jbGlwX3BsYW5lcy91c2VyX2NsaXBfcGxhbmVzLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDMzMjIwNzgzOWYyN2JlZjU1YjFkY2ZmMTZhNmIyN2MwMTIxYzgyOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvdXNlcl9jbGlwX3BsYW5lcy91c2VyX2NsaXBfcGxh
bmVzLmZyYWcKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgorCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2YXJ5aW5nIGZsb2F0IGRvdENsaXBbMl07
CisKK3ZvaWQgbWFpbiAodm9pZCkgCit7CisJaWYgKGRvdENsaXBbMF0gPj0gMC4wIHx8IGRvdENs
aXBbMV0gPj0gMC4wKQorCQlkaXNjYXJkOworCQkKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMkZpeGVkVGVzdHMvdXNlcl9jbGlwX3BsYW5lcy91c2Vy
X2NsaXBfcGxhbmVzLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3RzL3VzZXJfY2xpcF9wbGFuZXMv
dXNlcl9jbGlwX3BsYW5lcy52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZDEzZDNkOGFkZDVlOGYzNzc2Njg5
ZjQ4MDAxNzNmOWIxOTQ3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJGaXhlZFRlc3Rz
L3VzZXJfY2xpcF9wbGFuZXMvdXNlcl9jbGlwX3BsYW5lcy52ZXJ0CkBAIC0wLDAgKzEsMjcgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9Db2xvcjsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZhcnlpbmcgZmxvYXQgZG90Q2xpcFsyXTsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzQg
dXNlckNsaXBQbGFuZXNbMl07CisgCXVzZXJDbGlwUGxhbmVzWzBdID0gdmVjNCgwLjAsIDEuMCwg
MC4wLCAwLjApOworIAl1c2VyQ2xpcFBsYW5lc1sxXSA9IHZlYzQoLTEuMCwgMC4wLCAwLjAsIDAu
MCk7CisKKwljb2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKKwkKKwlkb3RDbGlwWzBdID0gZG90KHVzZXJD
bGlwUGxhbmVzWzBdLCBnbF9Qb3NpdGlvbik7CisJZG90Q2xpcFsxXSA9IGRvdCh1c2VyQ2xpcFBs
YW5lc1sxXSwgZ2xfUG9zaXRpb24pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvYXR0
YWNoX3NoYWRlci9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9h
dHRhY2hfc2hhZGVyL3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjUx
YjA3ZjAzZTdmNTQ4YTQwZjc4N2E1ODA4NjRkNjFhYTcyOTgzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvYXR0YWNoX3NoYWRlci9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcK
QEAgLTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlmb3JtIHZlYzMJYnJpY2tDb2xvcjsK
K3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhcldp
ZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdodDsKK3VuaWZvcm0gZmxvYXQJbXdm
OwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVjMyAgUG9zaXRpb247Cit2YXJ5aW5n
IGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4gKHZvaWQpCit7CisgICAgdmVjMwlj
dDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2ZWMzIHBvcyA9IFBvc2l0aW9uOwor
ICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldpZHRoOworICAgIHR0ID0gcG9zLnog
LyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFjdCAodHQgKiAwLjUpID4gMC41KQor
ICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0IChzcyk7CisgICAgdHQgPSBmcmFj
dCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0gc3RlcCAoMS4wIC0gbXdmLCBzcyk7
CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4wIC0gbWhmLCB0dCk7CisKKyAgICBj
dCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29sb3IsIHcgKiBoKSAqIGxpZ2h0SW50
ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0IChjdCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2F0dGFjaF9zaGFkZXIvc3VjY2Vzc2Z1bGNv
bXBpbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvYXR0YWNoX3NoYWRlci9zdWNjZXNzZnVs
Y29tcGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmYWY4Njk4YmM2MmZmZTRlOGY5ZWY1MzY0
NjQ1MWFhOGUzYmJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2F0dGFjaF9z
aGFkZXIvc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjYgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWMz
IGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQzIGd0
Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKwordmFyeWluZyBmbG9hdCBs
aWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyBMaWdo
dFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBTY2FsZTsKKwordm9pZCBtYWluKHZvaWQpIHsKKwl2
ZWM0IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4OworCVBvc2l0aW9uID0g
dmVjMyhndGZfVmVydGV4KSAqIFNjYWxlOworCXZlYzMgdG5vcm0gPSBub3JtYWxpemUoZ3RmX05v
cm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworCWxpZ2h0SW50ZW5zaXR5ID0gZG90KG5vcm1hbGl6
ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKSwgdG5vcm0pICogMS41OworCWdsX1Bvc2l0aW9u
ID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyVGVzdHMvYXR0YWNoX3NoYWRlci91bnN1Y2Nlc3NmdWxjb21waWxlX2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2F0dGFjaF9zaGFkZXIvdW5zdWNjZXNzZnVsY29tcGls
ZV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzZmU3OTdiMmRhN2RlMDk3MzM3MTZmM2NiNjQ2ODc5
YmRiNGI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2F0dGFjaF9zaGFkZXIv
dW5zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKQEAgLTAsMCArMSw2NiBAQAorCisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9hdCBHcmFpblNpemU7Cit1
bmlmb3JtIHZlYzMgIERhcmtDb2xvcjsKK3VuaWZvcm0gdmVjMyAgY29sb3JTcHJlYWQ7CisKK3Zh
cnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7IAordmFyeWluZyB2ZWMzIFBvc2l0aW9uOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisgICAgLy8KKyAgICAvLyBjaGVhcCBub2lzZQorICAgIC8vCisg
ICAgdmVjMyBsb2NhdGlvbiA9IFBvc2l0aW9uOworCisgICAgdmVjMyBmbG9vcnZlYyA9IHZlYzMo
Zmxvb3IoUG9zaXRpb24ueCAqIDEwLjApLCAwLjAsIGZsb29yKFBvc2l0aW9uLnogKiAxMC4wKSk7
CisgICAgdmVjMyBub2lzZSA9IFBvc2l0aW9uICogMTAuMCAtIGZsb29ydmVjIC0gMC41OworICAg
IG5vaXNlICo9IG5vaXNlOworICAgIGxvY2F0aW9uICs9IG5vaXNlICogMC4xMjsKKworICAgIC8v
CisgICAgLy8gZGlzdGFuY2UgZnJvbSBheGlzCisgICAgLy8KKyAgICBmbG9hdCBkaXN0ID0gbG9j
YXRpb24ueCAqIGxvY2F0aW9uLnggKyBsb2NhdGlvbi56ICogbG9jYXRpb24uejsKKyAgICBmbG9h
dCBncmFpbiA9IGRpc3QgLyBHcmFpblNpemU7CisKKyAgICAvLworICAgIC8vIGdyYWluIGVmZmVj
dHMgYXMgZnVuY3Rpb24gb2YgZGlzdGFuY2UKKyAgICAvLworICAgIGZsb2F0IGJyaWdodG5lc3Mg
PSBmcmFjdChncmFpbik7CisgICAgaWYgKGJyaWdodG5lc3MgPiAwLjUpIAorICAgICAgICBicmln
aHRuZXNzID0gKDEuMCAtIGJyaWdodG5lc3MpOworICAgIHZlYzMgY29sb3IgPSBEYXJrQ29sb3Ig
KyAwLjUgKiBicmlnaHRuZXNzICogKGNvbG9yU3ByZWFkKTsKKyAgICAKKyAgICBicmlnaHRuZXNz
ID0gZnJhY3QoZ3JhaW4qNy4wKTsgICAgCisgICAgaWYgKGJyaWdodG5lc3MgPiAwLjUpIAorICAg
ICAgICBicmlnaHRuZXNzID0gMS4wIC0gYnJpZ2h0bmVzczsKKyAgICBjb2xvciAtPSAwLjUgKiBi
cmlnaHRuZXNzICogY29sb3JTcHJlYWQ7CisKKyAgICAvLworICAgIC8vIGFsc28gYXMgYSBmdW5j
dGlvbiBvZiBsaW5lcyBwYXJhbGxlbCB0byB0aGUgYXhpcworICAgIC8vCisgICAgYnJpZ2h0bmVz
cyA9IGZyYWN0KGdyYWluKjQ3LjApOworICAgIGZsb2F0IGxpbmUgPSBmcmFjdChQb3NpdGlvbi56
ICsgUG9zaXRpb24ueCk7CisgICAgZmxvYXQgc25hcCA9IGZsb29yKGxpbmUgKiAzMC4wKSAqICgx
LjAvMzAuMCk7CisgICAgaWYgKGxpbmUgPCBzbmFwICsgMC4wMDQpCisgICAgICAgIGNvbG9yIC09
IDAuNSAqIGJyaWdodG5lc3MgKiBjb2xvclNwcmVhZDsKKworICAgIC8vCisgICAgLy8gYXBwbHkg
bGlnaHRpbmcgZWZmZWN0cyBmcm9tIHZlcnRleCBwcm9jZXNzb3IKKyAgICAvLworICAgIGNvbG9y
ICo9IGxpZ2h0SW50ZW5zaXR5OworICAgIGNvbG9yID0gY2xhbXAoY29sb3IsIDAuMCwgMS4wKTsg
CisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAwLjEpCit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9hdHRhY2hfc2hhZGVyL3Vuc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvYXR0YWNoX3NoYWRlci91bnN1Y2Nlc3NmdWxjb21waWxlX3ZlcnQu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMDRjMjFlZmUzMzVjMmQ4MTVhNDVkMDQ2ZTU5OTVkZTY2MmU3ODA5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvYXR0YWNoX3NoYWRlci91bnN1Y2Nl
c3NmdWxjb21waWxlX3ZlcnQudmVydApAQCAtMCwwICsxLDQzIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjMyBndGZfTm9ybWFs
OworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0
cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5
OwordmFyeWluZyB2ZWMzICBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTGlnaHRQb3NpdGlvbjsK
K3VuaWZvcm0gdmVjMyAgTm90QWN0aXZlT25lOworYXR0cmlidXRlIGZsb2F0IG15QXR0cmlidXRl
MTsKK2F0dHJpYnV0ZSBmbG9hdCBteUF0dHJpYnV0ZTI7CisKK2NvbnN0IGZsb2F0IHNwZWN1bGFy
Q29udHJpYnV0aW9uID0gMC43OworY29uc3QgZmxvYXQgZGlmZnVzZUNvbnRyaWJ1dGlvbiAgPSAo
MS4wIC0gc3BlY3VsYXJDb250cmlidXRpb24pOworCit2b2lkIG1haW4odm9pZCkgeworICAgIHZl
YzQgcG9zICAgICAgICA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4X0NvbG9yOwor
ICAgIFBvc2l0aW9uICAgICAgICA9IHZlYzMoZ3RmX1ZlcnRleCk7CisgICAgdmVjMyB0bm9ybSAg
ICAgID0gbm9ybWFsaXplKGd0Zl9Ob3JtYWxNYXRyaXggKiBndGZfTm9ybWFsKTsKKyAgICB2ZWMz
IGxpZ2h0VmVjICAgPSBub3JtYWxpemUoTGlnaHRQb3NpdGlvbiAtIHZlYzMocG9zKSk7CisgICAg
dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdChsaWdodFZlYywgdG5vcm0pOworICAgIHZlYzMgdmll
d1ZlYyAgICA9IG5vcm1hbGl6ZSh2ZWMzKHBvcykpOworCisJLy9mbG9hdCBzcGVjID0gY2xhbXAo
ZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCAwLjAsIDEuMCk7CisJZmxvYXQgc3BlYyA9IGNsYW1w
KGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgbXlBdHRyaWJ1dGUxLCBteUF0dHJpYnV0ZTIpOwor
ICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3Bl
YyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKworICAgIGxpZ2h0SW50
ZW5zaXR5ID0gZGlmZnVzZUNvbnRyaWJ1dGlvbiAqIGRvdChsaWdodFZlYywgdG5vcm0pICsKKyAg
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyQ29udHJpYnV0aW9uICogc3BlYzsKKyAgICAKKyAg
ICBnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRl
eDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2JpbmRfYXR0cmlidXRlX2xvY2F0aW9u
L2JyaWNrLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbi9icmlj
ay5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkODk1YzhjOGNlMTdkNDRkZDUxN2MxODFkMzFlYmYwNDEwZDVj
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9iaW5kX2F0dHJpYnV0ZV9sb2Nh
dGlvbi9icmljay5mcmFnCkBAIC0wLDAgKzEsNDcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisjZW5kaWYKKwordW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlmb3Jt
IHZlYzMJYnJpY2tDb2xvcjsKK3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9ybSBm
bG9hdAlicmlja01vcnRhcldpZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdodDsK
K3VuaWZvcm0gZmxvYXQJbXdmOwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVjMyAg
UG9zaXRpb247Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4gKHZv
aWQpCit7CisgICAgdmVjMwljdDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2ZWMz
IHBvcyA9IFBvc2l0aW9uOworICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldpZHRo
OworICAgIHR0ID0gcG9zLnogLyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFjdCAo
dHQgKiAwLjUpID4gMC41KQorICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0IChz
cyk7CisgICAgdHQgPSBmcmFjdCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0gc3Rl
cCAoMS4wIC0gbXdmLCBzcyk7CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4wIC0g
bWhmLCB0dCk7CisKKyAgICBjdCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29sb3Is
IHcgKiBoKSAqIGxpZ2h0SW50ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0IChjdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2JpbmRfYXR0
cmlidXRlX2xvY2F0aW9uL2JyaWNrLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9iaW5kX2F0dHJpYnV0
ZV9sb2NhdGlvbi9icmljay52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NTY0Y2U3Y2Q4MDM4N2RmYTEwOWRl
ODJmNmYwMTkxMmFmOTk3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9iaW5k
X2F0dHJpYnV0ZV9sb2NhdGlvbi9icmljay52ZXJ0CkBAIC0wLDAgKzEsNDMgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWMzIGd0
Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQzIGd0Zl9O
b3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJ
bnRlbnNpdHk7Cit2YXJ5aW5nIHZlYzMgIFBvc2l0aW9uOwordW5pZm9ybSB2ZWMzICBMaWdodFBv
c2l0aW9uOwordW5pZm9ybSB2ZWMzICBOb3RBY3RpdmVPbmU7CithdHRyaWJ1dGUgZmxvYXQgbXlB
dHRyaWJ1dGUxOworYXR0cmlidXRlIHZlYzMgbXlBdHRyaWJ1dGUyOworCitjb25zdCBmbG9hdCBz
cGVjdWxhckNvbnRyaWJ1dGlvbiA9IDAuNzsKK2NvbnN0IGZsb2F0IGRpZmZ1c2VDb250cmlidXRp
b24gID0gKDEuMCAtIHNwZWN1bGFyQ29udHJpYnV0aW9uKTsKKwordm9pZCBtYWluKHZvaWQpIHsK
KyAgICB2ZWM0IHBvcyAgICAgICAgPSBndGZfTW9kZWxWaWV3TWF0cml4ICogZ3RmX1ZlcnRleDsK
KyAgICBQb3NpdGlvbiAgICAgICAgPSB2ZWMzKGd0Zl9WZXJ0ZXgpOworICAgIHZlYzMgdG5vcm0g
ICAgICA9IG5vcm1hbGl6ZShndGZfTm9ybWFsTWF0cml4ICogZ3RmX05vcm1hbCk7CisgICAgdmVj
MyBsaWdodFZlYyAgID0gbm9ybWFsaXplKExpZ2h0UG9zaXRpb24gLSB2ZWMzKHBvcykpOworICAg
IHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QobGlnaHRWZWMsIHRub3JtKTsKKyAgICB2ZWMzIHZp
ZXdWZWMgICAgPSBub3JtYWxpemUodmVjMyhwb3MpKTsKKworCS8vZmxvYXQgc3BlYyA9IGNsYW1w
KGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgMC4wLCAxLjApOworCWZsb2F0IHNwZWMgPSBjbGFt
cChkb3QocmVmbGVjdFZlYywgdmlld1ZlYyksIG15QXR0cmlidXRlMSwgbXlBdHRyaWJ1dGUyWzFd
KTsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAg
IHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisKKyAgICBsaWdo
dEludGVuc2l0eSA9IGRpZmZ1c2VDb250cmlidXRpb24gKiBkb3QobGlnaHRWZWMsIHRub3JtKSAr
CisgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckNvbnRyaWJ1dGlvbiAqIHNwZWM7CisgICAg
CisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9W
ZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9jb21waWxlX3NoYWRlci9icmlj
ay52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvY29tcGlsZV9zaGFkZXIvYnJpY2sudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMDRjMjFlZmUzMzVjMmQ4MTVhNDVkMDQ2ZTU5OTVkZTY2MmU3ODA5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvY29tcGlsZV9zaGFkZXIvYnJpY2sudmVydApAQCAtMCww
ICsxLDQzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjMyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZp
ZXdNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2
YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWluZyB2ZWMzICBQb3NpdGlvbjsKK3Vu
aWZvcm0gdmVjMyAgTGlnaHRQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTm90QWN0aXZlT25lOwor
YXR0cmlidXRlIGZsb2F0IG15QXR0cmlidXRlMTsKK2F0dHJpYnV0ZSBmbG9hdCBteUF0dHJpYnV0
ZTI7CisKK2NvbnN0IGZsb2F0IHNwZWN1bGFyQ29udHJpYnV0aW9uID0gMC43OworY29uc3QgZmxv
YXQgZGlmZnVzZUNvbnRyaWJ1dGlvbiAgPSAoMS4wIC0gc3BlY3VsYXJDb250cmlidXRpb24pOwor
Cit2b2lkIG1haW4odm9pZCkgeworICAgIHZlYzQgcG9zICAgICAgICA9IGd0Zl9Nb2RlbFZpZXdN
YXRyaXggKiBndGZfVmVydGV4X0NvbG9yOworICAgIFBvc2l0aW9uICAgICAgICA9IHZlYzMoZ3Rm
X1ZlcnRleCk7CisgICAgdmVjMyB0bm9ybSAgICAgID0gbm9ybWFsaXplKGd0Zl9Ob3JtYWxNYXRy
aXggKiBndGZfTm9ybWFsKTsKKyAgICB2ZWMzIGxpZ2h0VmVjICAgPSBub3JtYWxpemUoTGlnaHRQ
b3NpdGlvbiAtIHZlYzMocG9zKSk7CisgICAgdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdChsaWdo
dFZlYywgdG5vcm0pOworICAgIHZlYzMgdmlld1ZlYyAgICA9IG5vcm1hbGl6ZSh2ZWMzKHBvcykp
OworCisJLy9mbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCAwLjAs
IDEuMCk7CisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgbXlB
dHRyaWJ1dGUxLCBteUF0dHJpYnV0ZTIpOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBz
cGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBz
cGVjICogc3BlYzsKKworICAgIGxpZ2h0SW50ZW5zaXR5ID0gZGlmZnVzZUNvbnRyaWJ1dGlvbiAq
IGRvdChsaWdodFZlYywgdG5vcm0pICsKKyAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyQ29u
dHJpYnV0aW9uICogc3BlYzsKKyAgICAKKyAgICBnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQ
cm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRl
c3RzL2NvbXBpbGVfc2hhZGVyL3RleHR1cmUuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2NvbXBpbGVf
c2hhZGVyL3RleHR1cmUuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGFiMTNhY2UxYTE0ZjRiY2M2ZTQ5OTUy
NmVhOWFhYTllYjQzZDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvY29tcGls
ZV9zaGFkZXIvdGV4dHVyZS5mcmFnCkBAIC0wLDAgKzEsMzUgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisjZW5kaWYKKy8vCisvLyB3b2JibGUuZnJhZzogRnJhZ21lbnQgc2hhZGVy
IGZvciB3b2JibGluZyBhIHRleHR1cmUKKy8vCisvLyBhdXRob3I6IEFudG9uaW8gVGVqYWRhCisv
LworLy8KKwordmFyeWluZyB2ZWMzICBQb3NpdGlvbjsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRl
bnNpdHk7CisKKy8qIENvbnN0YW50cyAqLworCit1bmlmb3JtIHNhbXBsZXIyRCBzYW1wbGVyMmQ7
IC8vIHZhbHVlIG9mIHNhbXBsZXIyZCA9IDAKK3ZhcnlpbmcgdmVjNCBndGZfVGV4Q29vcmRbMV07
CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKyAgICB2ZWMzIGxpZ2h0Q29sb3IgPSB2ZWMzKHRleHR1
cmUyRChzYW1wbGVyMmQsICB2ZWMyKGd0Zl9UZXhDb29yZFswXSkpKSAqIGxpZ2h0SW50ZW5zaXR5
OworCisgICAgdmVjMyBjdCA9IGNsYW1wKGxpZ2h0Q29sb3IsIDAuMCwgMS4wKTsKKworICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQgKGN0LCAxLjApOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJU
ZXN0cy9jb21waWxlX3NoYWRlci93b29kLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9jb21waWxlX3No
YWRlci93b29kLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzZmU3OTdiMmRhN2RlMDk3MzM3MTZmM2NiNjQ2
ODc5YmRiNGI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2NvbXBpbGVfc2hh
ZGVyL3dvb2QuZnJhZwpAQCAtMCwwICsxLDY2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworI2VuZGlmCit1bmlmb3JtIGZsb2F0IEdyYWluU2l6ZTsKK3VuaWZvcm0gdmVjMyAgRGFy
a0NvbG9yOwordW5pZm9ybSB2ZWMzICBjb2xvclNwcmVhZDsKKwordmFyeWluZyBmbG9hdCBsaWdo
dEludGVuc2l0eTsgCit2YXJ5aW5nIHZlYzMgUG9zaXRpb247CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKyAgICAvLworICAgIC8vIGNoZWFwIG5vaXNlCisgICAgLy8KKyAgICB2ZWMzIGxvY2F0aW9u
ID0gUG9zaXRpb247CisKKyAgICB2ZWMzIGZsb29ydmVjID0gdmVjMyhmbG9vcihQb3NpdGlvbi54
ICogMTAuMCksIDAuMCwgZmxvb3IoUG9zaXRpb24ueiAqIDEwLjApKTsKKyAgICB2ZWMzIG5vaXNl
ID0gUG9zaXRpb24gKiAxMC4wIC0gZmxvb3J2ZWMgLSAwLjU7CisgICAgbm9pc2UgKj0gbm9pc2U7
CisgICAgbG9jYXRpb24gKz0gbm9pc2UgKiAwLjEyOworCisgICAgLy8KKyAgICAvLyBkaXN0YW5j
ZSBmcm9tIGF4aXMKKyAgICAvLworICAgIGZsb2F0IGRpc3QgPSBsb2NhdGlvbi54ICogbG9jYXRp
b24ueCArIGxvY2F0aW9uLnogKiBsb2NhdGlvbi56OworICAgIGZsb2F0IGdyYWluID0gZGlzdCAv
IEdyYWluU2l6ZTsKKworICAgIC8vCisgICAgLy8gZ3JhaW4gZWZmZWN0cyBhcyBmdW5jdGlvbiBv
ZiBkaXN0YW5jZQorICAgIC8vCisgICAgZmxvYXQgYnJpZ2h0bmVzcyA9IGZyYWN0KGdyYWluKTsK
KyAgICBpZiAoYnJpZ2h0bmVzcyA+IDAuNSkgCisgICAgICAgIGJyaWdodG5lc3MgPSAoMS4wIC0g
YnJpZ2h0bmVzcyk7CisgICAgdmVjMyBjb2xvciA9IERhcmtDb2xvciArIDAuNSAqIGJyaWdodG5l
c3MgKiAoY29sb3JTcHJlYWQpOworICAgIAorICAgIGJyaWdodG5lc3MgPSBmcmFjdChncmFpbio3
LjApOyAgICAKKyAgICBpZiAoYnJpZ2h0bmVzcyA+IDAuNSkgCisgICAgICAgIGJyaWdodG5lc3Mg
PSAxLjAgLSBicmlnaHRuZXNzOworICAgIGNvbG9yIC09IDAuNSAqIGJyaWdodG5lc3MgKiBjb2xv
clNwcmVhZDsKKworICAgIC8vCisgICAgLy8gYWxzbyBhcyBhIGZ1bmN0aW9uIG9mIGxpbmVzIHBh
cmFsbGVsIHRvIHRoZSBheGlzCisgICAgLy8KKyAgICBicmlnaHRuZXNzID0gZnJhY3QoZ3JhaW4q
NDcuMCk7CisgICAgZmxvYXQgbGluZSA9IGZyYWN0KFBvc2l0aW9uLnogKyBQb3NpdGlvbi54KTsK
KyAgICBmbG9hdCBzbmFwID0gZmxvb3IobGluZSAqIDMwLjApICogKDEuMC8zMC4wKTsKKyAgICBp
ZiAobGluZSA8IHNuYXAgKyAwLjAwNCkKKyAgICAgICAgY29sb3IgLT0gMC41ICogYnJpZ2h0bmVz
cyAqIGNvbG9yU3ByZWFkOworCisgICAgLy8KKyAgICAvLyBhcHBseSBsaWdodGluZyBlZmZlY3Rz
IGZyb20gdmVydGV4IHByb2Nlc3NvcgorICAgIC8vCisgICAgY29sb3IgKj0gbGlnaHRJbnRlbnNp
dHk7CisgICAgY29sb3IgPSBjbGFtcChjb2xvciwgMC4wLCAxLjApOyAKKworICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoY29sb3IsIDAuMSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2Nv
bXBpbGVfc2hhZGVyL3dvb2QudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2NvbXBpbGVfc2hhZGVyL3dv
b2QudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOWZhZjg2OThiYzYyZmZlNGU4ZjllZjUzNjQ2NDUxYWE4ZTNi
YmRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvY29tcGlsZV9zaGFkZXIvd29v
ZC52ZXJ0CkBAIC0wLDAgKzEsMjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVj
NCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1h
dDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKKwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVj
MyBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyBMaWdodFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBT
Y2FsZTsKKwordm9pZCBtYWluKHZvaWQpIHsKKwl2ZWM0IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRy
aXggKiBndGZfVmVydGV4OworCVBvc2l0aW9uID0gdmVjMyhndGZfVmVydGV4KSAqIFNjYWxlOwor
CXZlYzMgdG5vcm0gPSBub3JtYWxpemUoZ3RmX05vcm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOwor
CWxpZ2h0SW50ZW5zaXR5ID0gZG90KG5vcm1hbGl6ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3Mp
KSwgdG5vcm0pICogMS41OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZGVsZXRl
X29iamVjdC9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9kZWxl
dGVfb2JqZWN0L3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjUxYjA3
ZjAzZTdmNTQ4YTQwZjc4N2E1ODA4NjRkNjFhYTcyOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvZGVsZXRlX29iamVjdC9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKQEAg
LTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5p
Zm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlmb3JtIHZlYzMJYnJpY2tDb2xvcjsKK3Vu
aWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhcldpZHRo
OwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdodDsKK3VuaWZvcm0gZmxvYXQJbXdmOwor
dW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVjMyAgUG9zaXRpb247Cit2YXJ5aW5nIGZs
b2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4gKHZvaWQpCit7CisgICAgdmVjMwljdDsK
KyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2ZWMzIHBvcyA9IFBvc2l0aW9uOworICAg
IAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldpZHRoOworICAgIHR0ID0gcG9zLnogLyBi
cmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFjdCAodHQgKiAwLjUpID4gMC41KQorICAg
ICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0IChzcyk7CisgICAgdHQgPSBmcmFjdCAo
dHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0gc3RlcCAoMS4wIC0gbXdmLCBzcyk7Cisg
ICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4wIC0gbWhmLCB0dCk7CisKKyAgICBjdCA9
IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29sb3IsIHcgKiBoKSAqIGxpZ2h0SW50ZW5z
aXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0IChjdCwgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2RlbGV0ZV9vYmplY3Qvc3VjY2Vzc2Z1bGNvbXBp
bGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZGVsZXRlX29iamVjdC9zdWNjZXNzZnVsY29t
cGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmYWY4Njk4YmM2MmZmZTRlOGY5ZWY1MzY0NjQ1
MWFhOGUzYmJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2RlbGV0ZV9vYmpl
Y3Qvc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMjYgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWMzIGd0
Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQzIGd0Zl9O
b3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKwordmFyeWluZyBmbG9hdCBsaWdo
dEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyBMaWdodFBv
c2l0aW9uOwordW5pZm9ybSBmbG9hdCBTY2FsZTsKKwordm9pZCBtYWluKHZvaWQpIHsKKwl2ZWM0
IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4OworCVBvc2l0aW9uID0gdmVj
MyhndGZfVmVydGV4KSAqIFNjYWxlOworCXZlYzMgdG5vcm0gPSBub3JtYWxpemUoZ3RmX05vcm1h
bE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworCWxpZ2h0SW50ZW5zaXR5ID0gZG90KG5vcm1hbGl6ZShM
aWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKSwgdG5vcm0pICogMS41OworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZGV0YWNoX3NoYWRlci9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZy
YWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTDJUZXN0cy9kZXRhY2hfc2hhZGVyL3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjUxYjA3ZjAzZTdmNTQ4YTQwZjc4N2E1ODA4NjRkNjFhYTcyOTgz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZGV0YWNoX3NoYWRlci9zdWNjZXNz
ZnVsY29tcGlsZV9mcmFnLmZyYWcKQEAgLTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlm
b3JtIHZlYzMJYnJpY2tDb2xvcjsKK3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9y
bSBmbG9hdAlicmlja01vcnRhcldpZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdo
dDsKK3VuaWZvcm0gZmxvYXQJbXdmOwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVj
MyAgUG9zaXRpb247Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4g
KHZvaWQpCit7CisgICAgdmVjMwljdDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2
ZWMzIHBvcyA9IFBvc2l0aW9uOworICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldp
ZHRoOworICAgIHR0ID0gcG9zLnogLyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFj
dCAodHQgKiAwLjUpID4gMC41KQorICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0
IChzcyk7CisgICAgdHQgPSBmcmFjdCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0g
c3RlcCAoMS4wIC0gbXdmLCBzcyk7CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4w
IC0gbWhmLCB0dCk7CisKKyAgICBjdCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29s
b3IsIHcgKiBoKSAqIGxpZ2h0SW50ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0IChjdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2RldGFj
aF9zaGFkZXIvc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZGV0
YWNoX3NoYWRlci9zdWNjZXNzZnVsY29tcGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmYWY4
Njk4YmM2MmZmZTRlOGY5ZWY1MzY0NjQ1MWFhOGUzYmJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL2RldGFjaF9zaGFkZXIvc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBA
IC0wLDAgKzEsMjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKK2F0dHJpYnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01v
ZGVsVmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKKwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyBQb3NpdGlv
bjsKK3VuaWZvcm0gdmVjMyBMaWdodFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBTY2FsZTsKKwor
dm9pZCBtYWluKHZvaWQpIHsKKwl2ZWM0IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZf
VmVydGV4OworCVBvc2l0aW9uID0gdmVjMyhndGZfVmVydGV4KSAqIFNjYWxlOworCXZlYzMgdG5v
cm0gPSBub3JtYWxpemUoZ3RmX05vcm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworCWxpZ2h0SW50
ZW5zaXR5ID0gZG90KG5vcm1hbGl6ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKSwgdG5vcm0p
ICogMS41OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZnJhbWVidWZmZXJfb2Jq
ZWN0cy9mYm9TaGFkZXIwLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9mcmFtZWJ1ZmZlcl9vYmplY3Rz
L2Zib1NoYWRlcjAuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2EwYWE4NzAzN2YyMTYzOGE1MDA0NjZiZTM2
MzE2NzUyMjgwNTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZnJhbWVidWZm
ZXJfb2JqZWN0cy9mYm9TaGFkZXIwLmZyYWcKQEAgLTAsMCArMSwyOSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgorCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2YXJ5aW5n
IHZlYzQgdGV4Q29vcmRbMV07CisKK3VuaWZvcm0gc2FtcGxlcjJEIGd0Zl9UZXh0dXJlMDsKK3Vu
aWZvcm0gaW50IGd0Zl9Vc2VUZXh0dXJlOworCit2b2lkIG1haW4gKHZvaWQpCit7CisgICAgaWYg
KCBndGZfVXNlVGV4dHVyZSA9PSAxICkKKyAgICB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRl
eHR1cmUyRChndGZfVGV4dHVyZTAsIHRleENvb3JkWzBdLnh5KTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZnJhbWVidWZmZXJfb2JqZWN0cy9mYm9TaGFkZXIwLnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9mcmFtZWJ1ZmZlcl9vYmplY3RzL2Zib1NoYWRlcjAudmVydApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMWVkZjgxMDExNjQzYjVkYzJiZDM0YTk4OTlmMmU0Y2Q3NjYxNDU5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZnJhbWVidWZmZXJfb2JqZWN0cy9mYm9TaGFkZXIwLnZl
cnQKQEAgLTAsMCArMSwyMyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9NdWx0aVRleENvb3JkMDsKKwordmFyeWluZyB2
ZWM0IHRleENvb3JkWzFdOwordmFyeWluZyB2ZWM0IGNvbG9yOworCit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKyAgICBj
b2xvciA9IGd0Zl9Db2xvcjsKKyAgICB0ZXhDb29yZFswXSA9IGd0Zl9NdWx0aVRleENvb3JkMDsK
KyAgICBnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1Zl
cnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfYXR0cmlidXRl
L2JyaWNrLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9icmljay5m
cmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIyNTFiMDdmMDNlN2Y1NDhhNDBmNzg3YTU4MDg2NGQ2MWFhNzI5ODMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9i
cmljay5mcmFnCkBAIC0wLDAgKzEsNDYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisjZW5kaWYKK3VuaWZvcm0gZmxvYXQJbW9ydGFyVGhpY2tuZXNzOwordW5pZm9ybSB2ZWMzCWJy
aWNrQ29sb3I7Cit1bmlmb3JtIHZlYzMJbW9ydGFyQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQJYnJp
Y2tNb3J0YXJXaWR0aDsKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJIZWlnaHQ7Cit1bmlmb3Jt
IGZsb2F0CW13ZjsKK3VuaWZvcm0gZmxvYXQJbWhmOworCit2YXJ5aW5nIHZlYzMgIFBvc2l0aW9u
OwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKKwordm9pZCBtYWluICh2b2lkKQorewor
ICAgIHZlYzMJY3Q7CisgICAgZmxvYXQJc3MsIHR0LCB3LCBoOworCisgICAgdmVjMyBwb3MgPSBQ
b3NpdGlvbjsKKyAgICAKKyAgICBzcyA9IHBvcy54IC8gYnJpY2tNb3J0YXJXaWR0aDsKKyAgICB0
dCA9IHBvcy56IC8gYnJpY2tNb3J0YXJIZWlnaHQ7CisKKyAgICBpZiAoZnJhY3QgKHR0ICogMC41
KSA+IDAuNSkKKyAgICAgICAgc3MgKz0gMC41OworCisgICAgc3MgPSBmcmFjdCAoc3MpOworICAg
IHR0ID0gZnJhY3QgKHR0KTsKKworICAgIHcgPSBzdGVwIChtd2YsIHNzKSAtIHN0ZXAgKDEuMCAt
IG13Ziwgc3MpOworICAgIGggPSBzdGVwIChtaGYsIHR0KSAtIHN0ZXAgKDEuMCAtIG1oZiwgdHQp
OworCisgICAgY3QgPSBjbGFtcChtaXggKG1vcnRhckNvbG9yLCBicmlja0NvbG9yLCB3ICogaCkg
KiBsaWdodEludGVuc2l0eSwgMC4wLCAxLjApOworCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAo
Y3QsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJp
YnV0ZS9icmlja19tYXQyLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0
ZS9icmlja19tYXQyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcxMDJhMDFjNWMwYjU1MzBjNjc3Yjg4ZjJm
YzA4Mzc5ZWM5MmIyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hY3Rp
dmVfYXR0cmlidXRlL2JyaWNrX21hdDIudmVydApAQCAtMCwwICsxLDQ1IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZf
VmVydGV4OworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsKK2F0dHJpYnV0ZSBtYXQyIG15QXR0
cmliMm07CisKK3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0cml4OwordmFyeWluZyBmbG9hdCBs
aWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyAgUG9zaXRpb247Cit1bmlmb3JtIHZlYzMgIExp
Z2h0UG9zaXRpb247CisKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3TWF0cml4OwordW5pZm9y
bSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworCitjb25zdCBmbG9hdCBzcGVj
dWxhckNvbnRyaWJ1dGlvbiA9IDAuNzsKK2NvbnN0IGZsb2F0IGRpZmZ1c2VDb250cmlidXRpb24g
ID0gKDEuMCAtIHNwZWN1bGFyQ29udHJpYnV0aW9uKTsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAg
ICB2ZWM0IHBvcyAgICAgICAgPSBndGZfTW9kZWxWaWV3TWF0cml4ICogZ3RmX1ZlcnRleDsKKyAg
ICBQb3NpdGlvbiAgICAgICAgPSB2ZWMzKGd0Zl9WZXJ0ZXgpOworICAgIHZlYzMgdG5vcm0gICAg
ICA9IG5vcm1hbGl6ZShndGZfTm9ybWFsTWF0cml4ICogZ3RmX05vcm1hbCk7CisgICAgdmVjMyBs
aWdodFZlYyAgID0gbm9ybWFsaXplKExpZ2h0UG9zaXRpb24gLSB2ZWMzKHBvcykpOworICAgIHZl
YzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QobGlnaHRWZWMsIHRub3JtKTsKKyAgICB2ZWMzIHZpZXdW
ZWMgICAgPSBub3JtYWxpemUodmVjMyhwb3MpKTsKKworCWZsb2F0IGYgPSBteUF0dHJpYjJtWzBd
WzBdOworCisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgZiwg
MS4wKTsKKwkvL2Zsb2F0IHNwZWMgPSBjbGFtcChkb3QocmVmbGVjdFZlYywgdmlld1ZlYyksIG15
QXR0cmlidXRlMSwgbXlBdHRyaWJ1dGUyKTsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAg
c3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0g
c3BlYyAqIHNwZWM7CisKKyAgICBsaWdodEludGVuc2l0eSA9IGRpZmZ1c2VDb250cmlidXRpb24g
KiBkb3QobGlnaHRWZWMsIHRub3JtKSArCisgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckNv
bnRyaWJ1dGlvbiAqIHNwZWM7CisgICAgCisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJU
ZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9icmlja19tYXQzLnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0
cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9icmlja19tYXQzLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmZWEx
MTI1YjdiYTg3M2ZjNmQwZjEyODE5YzY2OTQxZDgwOWI0OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfYXR0cmlidXRlL2JyaWNrX21hdDMudmVydApAQCAtMCww
ICsxLDQ1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsK
K2F0dHJpYnV0ZSBtYXQzIG15QXR0cmliM207CisKK3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0
cml4OwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyAgUG9zaXRp
b247Cit1bmlmb3JtIHZlYzMgIExpZ2h0UG9zaXRpb247CisKK3VuaWZvcm0gbWF0NCBndGZfTW9k
ZWxWaWV3TWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
OworCitjb25zdCBmbG9hdCBzcGVjdWxhckNvbnRyaWJ1dGlvbiA9IDAuNzsKK2NvbnN0IGZsb2F0
IGRpZmZ1c2VDb250cmlidXRpb24gID0gKDEuMCAtIHNwZWN1bGFyQ29udHJpYnV0aW9uKTsKKwor
dm9pZCBtYWluKHZvaWQpIHsKKyAgICB2ZWM0IHBvcyAgICAgICAgPSBndGZfTW9kZWxWaWV3TWF0
cml4ICogZ3RmX1ZlcnRleDsKKyAgICBQb3NpdGlvbiAgICAgICAgPSB2ZWMzKGd0Zl9WZXJ0ZXgp
OworICAgIHZlYzMgdG5vcm0gICAgICA9IG5vcm1hbGl6ZShndGZfTm9ybWFsTWF0cml4ICogZ3Rm
X05vcm1hbCk7CisgICAgdmVjMyBsaWdodFZlYyAgID0gbm9ybWFsaXplKExpZ2h0UG9zaXRpb24g
LSB2ZWMzKHBvcykpOworICAgIHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QobGlnaHRWZWMsIHRu
b3JtKTsKKyAgICB2ZWMzIHZpZXdWZWMgICAgPSBub3JtYWxpemUodmVjMyhwb3MpKTsKKworCWZs
b2F0IGYgPSBteUF0dHJpYjNtWzBdWzBdOworCisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZs
ZWN0VmVjLCB2aWV3VmVjKSwgZiwgMS4wKTsKKwkvL2Zsb2F0IHNwZWMgPSBjbGFtcChkb3QocmVm
bGVjdFZlYywgdmlld1ZlYyksIG15QXR0cmlidXRlMSwgbXlBdHRyaWJ1dGUyKTsKKyAgICBzcGVj
ID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBzcGVj
ICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisKKyAgICBsaWdodEludGVuc2l0eSA9
IGRpZmZ1c2VDb250cmlidXRpb24gKiBkb3QobGlnaHRWZWMsIHRub3JtKSArCisgICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhckNvbnRyaWJ1dGlvbiAqIHNwZWM7CisgICAgCisgICAgZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9icmlja19tYXQ0
LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX2F0dHJpYnV0ZS9icmlja19tYXQ0LnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWMyOGQ3OGFhZjVjNjMwZGZhZWRmYTQ5Y2M5YjU4NTRjNTEzNGIwMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfYXR0cmlidXRlL2Jy
aWNrX21hdDQudmVydApAQCAtMCwwICsxLDQ1IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OworYXR0cmli
dXRlIHZlYzMgZ3RmX05vcm1hbDsKK2F0dHJpYnV0ZSBtYXQ0IG15QXR0cmliNG07CisKK3VuaWZv
cm0gbWF0MyBndGZfTm9ybWFsTWF0cml4OwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsK
K3ZhcnlpbmcgdmVjMyAgUG9zaXRpb247Cit1bmlmb3JtIHZlYzMgIExpZ2h0UG9zaXRpb247CisK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3TWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdQcm9qZWN0aW9uTWF0cml4OworCitjb25zdCBmbG9hdCBzcGVjdWxhckNvbnRyaWJ1dGlv
biA9IDAuNzsKK2NvbnN0IGZsb2F0IGRpZmZ1c2VDb250cmlidXRpb24gID0gKDEuMCAtIHNwZWN1
bGFyQ29udHJpYnV0aW9uKTsKKwordm9pZCBtYWluKHZvaWQpIHsKKyAgICB2ZWM0IHBvcyAgICAg
ICAgPSBndGZfTW9kZWxWaWV3TWF0cml4ICogZ3RmX1ZlcnRleDsKKyAgICBQb3NpdGlvbiAgICAg
ICAgPSB2ZWMzKGd0Zl9WZXJ0ZXgpOworICAgIHZlYzMgdG5vcm0gICAgICA9IG5vcm1hbGl6ZShn
dGZfTm9ybWFsTWF0cml4ICogZ3RmX05vcm1hbCk7CisgICAgdmVjMyBsaWdodFZlYyAgID0gbm9y
bWFsaXplKExpZ2h0UG9zaXRpb24gLSB2ZWMzKHBvcykpOworICAgIHZlYzMgcmVmbGVjdFZlYyA9
IHJlZmxlY3QobGlnaHRWZWMsIHRub3JtKTsKKyAgICB2ZWMzIHZpZXdWZWMgICAgPSBub3JtYWxp
emUodmVjMyhwb3MpKTsKKworCWZsb2F0IGYgPSBteUF0dHJpYjRtWzBdWzBdOworCisJZmxvYXQg
c3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgZiwgMS4wKTsKKwkvL2Zsb2F0
IHNwZWMgPSBjbGFtcChkb3QocmVmbGVjdFZlYywgdmlld1ZlYyksIG15QXR0cmlidXRlMSwgbXlB
dHRyaWJ1dGUyKTsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBz
cGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisK
KyAgICBsaWdodEludGVuc2l0eSA9IGRpZmZ1c2VDb250cmlidXRpb24gKiBkb3QobGlnaHRWZWMs
IHRub3JtKSArCisgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckNvbnRyaWJ1dGlvbiAqIHNw
ZWM7CisgICAgCisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZl
X2F0dHJpYnV0ZS9icmlja192ZWMudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfYXR0
cmlidXRlL2JyaWNrX3ZlYy52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNmE0ZTExMzNkN2EyNzYzZGYzM2M1
Mzc1N2ViMjNlN2RjNjk5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRf
YWN0aXZlX2F0dHJpYnV0ZS9icmlja192ZWMudmVydApAQCAtMCwwICsxLDQ4IEBACisKKy8qCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBn
dGZfVmVydGV4OworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsKK2F0dHJpYnV0ZSBmbG9hdCBt
eUF0dHJpYjFmOworYXR0cmlidXRlIHZlYzIgbXlBdHRyaWIyZjsKK2F0dHJpYnV0ZSB2ZWMzICBt
eUF0dHJpYjNmOworYXR0cmlidXRlIHZlYzQgbXlBdHRyaWI0ZjsKKwordW5pZm9ybSBtYXQzIGd0
Zl9Ob3JtYWxNYXRyaXg7Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWluZyB2
ZWMzICBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTGlnaHRQb3NpdGlvbjsKKwordW5pZm9ybSBt
YXQ0IGd0Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXg7CisKK2NvbnN0IGZsb2F0IHNwZWN1bGFyQ29udHJpYnV0aW9uID0gMC43Owor
Y29uc3QgZmxvYXQgZGlmZnVzZUNvbnRyaWJ1dGlvbiAgPSAoMS4wIC0gc3BlY3VsYXJDb250cmli
dXRpb24pOworCit2b2lkIG1haW4odm9pZCkgeworICAgIHZlYzQgcG9zICAgICAgICA9IGd0Zl9N
b2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4OworICAgIFBvc2l0aW9uICAgICAgICA9IHZlYzMo
Z3RmX1ZlcnRleCk7CisgICAgdmVjMyB0bm9ybSAgICAgID0gbm9ybWFsaXplKGd0Zl9Ob3JtYWxN
YXRyaXggKiBndGZfTm9ybWFsKTsKKyAgICB2ZWMzIGxpZ2h0VmVjICAgPSBub3JtYWxpemUoTGln
aHRQb3NpdGlvbiAtIHZlYzMocG9zKSk7CisgICAgdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdChs
aWdodFZlYywgdG5vcm0pOworICAgIHZlYzMgdmlld1ZlYyAgICA9IG5vcm1hbGl6ZSh2ZWMzKHBv
cykpOworCisJZmxvYXQgZiA9IG15QXR0cmliMWYgKyBteUF0dHJpYjJmWzBdICsgbXlBdHRyaWIz
ZlswXSArIG15QXR0cmliNGZbMF07CisKKwlmbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RW
ZWMsIHZpZXdWZWMpLCBmLCAxLjApOworCS8vZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0
VmVjLCB2aWV3VmVjKSwgbXlBdHRyaWJ1dGUxLCBteUF0dHJpYnV0ZTIpOworICAgIHNwZWMgPSBz
cGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBz
cGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKworICAgIGxpZ2h0SW50ZW5zaXR5ID0gZGlm
ZnVzZUNvbnRyaWJ1dGlvbiAqIGRvdChsaWdodFZlYywgdG5vcm0pICsKKyAgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGFyQ29udHJpYnV0aW9uICogc3BlYzsKKyAgICAKKyAgICBnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfdW5pZm9ybS9icmljay5mcmFnIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvZ2V0X2FjdGl2ZV91bmlmb3JtL2JyaWNrLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q5
MjZjNTNlYWY0MWMwZTI2NGNiODA5Y2U3YjBiM2M4NDY0MmRjNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dldF9hY3RpdmVfdW5pZm9ybS9icmljay5mcmFnCkBAIC0wLDAgKzEs
NDUgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNp
ZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKKwordW5pZm9ybSB2
ZWMzCWJyaWNrQ29sb3I7Cit1bmlmb3JtIHZlYzMJbW9ydGFyQ29sb3I7Cit1bmlmb3JtIGZsb2F0
CWJyaWNrTW9ydGFyV2lkdGg7Cit1bmlmb3JtIGZsb2F0CWJyaWNrTW9ydGFySGVpZ2h0OwordW5p
Zm9ybSBmbG9hdAltd2Y7Cit1bmlmb3JtIGZsb2F0CW1oZjsKKwordmFyeWluZyB2ZWMzICBQb3Np
dGlvbjsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKyAgICB2ZWMzCWN0OworICAgIGZsb2F0CXNzLCB0dCwgdywgaDsKKworICAgIHZlYzMgcG9z
ID0gUG9zaXRpb247CisgICAgCisgICAgc3MgPSBwb3MueCAvIGJyaWNrTW9ydGFyV2lkdGg7Cisg
ICAgdHQgPSBwb3MueiAvIGJyaWNrTW9ydGFySGVpZ2h0OworCisgICAgaWYgKGZyYWN0ICh0dCAq
IDAuNSkgPiAwLjUpCisgICAgICAgIHNzICs9IDAuNTsKKworICAgIHNzID0gZnJhY3QgKHNzKTsK
KyAgICB0dCA9IGZyYWN0ICh0dCk7CisKKyAgICB3ID0gc3RlcCAobXdmLCBzcykgLSBzdGVwICgx
LjAgLSBtd2YsIHNzKTsKKyAgICBoID0gc3RlcCAobWhmLCB0dCkgLSBzdGVwICgxLjAgLSBtaGYs
IHR0KTsKKworICAgIGN0ID0gY2xhbXAobWl4IChtb3J0YXJDb2xvciwgYnJpY2tDb2xvciwgdyAq
IGgpICogbGlnaHRJbnRlbnNpdHksIDAuMCwgMS4wKTsKKworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQgKGN0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X2FjdGl2ZV91
bmlmb3JtL2JyaWNrLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYWN0aXZlX3VuaWZvcm0vYnJp
Y2sudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NjI5NzgyYTQ1YWZmYWNhYTU5MGMwNDhiNTVmNWIwMzE0ZDNh
ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X2FjdGl2ZV91bmlmb3Jt
L2JyaWNrLnZlcnQKQEAgLTAsMCArMSw3MSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsKK2F0dHJpYnV0
ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWlu
ZyB2ZWMzICBQb3NpdGlvbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVXNlZCBpbiB0aGUgdmVydGV4IHNoYWRlci4KK3VuaWZvcm0gbWF0MyBndGZf
Tm9ybWFsTWF0cml4OyAgICAgICAgICAgICAgIC8vPCAgMQordW5pZm9ybSBtYXQ0IGd0Zl9Nb2Rl
bFZpZXdNYXRyaXg7ICAgICAgICAgICAgLy88ICAyCit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmll
d1Byb2plY3Rpb25NYXRyaXg7ICAvLzwgIDMKK3VuaWZvcm0gZmxvYXQgbXlBdHRyaWIxZjsgICAg
ICAgICAgICAgICAgICAgIC8vPCAgNAordW5pZm9ybSB2ZWMyIG15QXR0cmliMmY7ICAgICAgICAg
ICAgICAgICAgICAgLy88ICA1Cit1bmlmb3JtIHZlYzMgIExpZ2h0UG9zaXRpb247ICAgICAgICAg
ICAgICAgICAvLzwgIDYKK3VuaWZvcm0gdmVjNCBteUF0dHJpYjRmOyAgICAgICAgICAgICAgICAg
ICAgIC8vPCAgNwordW5pZm9ybSBpbnQgbXlBdHRyaWIxaTsgICAgICAgICAgICAgICAgICAgICAg
Ly88ICA4Cit1bmlmb3JtIGl2ZWMyIG15QXR0cmliMmk7ICAgICAgICAgICAgICAgICAgICAvLzwg
IDkKK3VuaWZvcm0gaXZlYzMgbXlBdHRyaWIzaTsgICAgICAgICAgICAgICAgICAgIC8vPCAxMAor
dW5pZm9ybSBpdmVjNCBteUF0dHJpYjRpOyAgICAgICAgICAgICAgICAgICAgLy88IDExCit1bmlm
b3JtIGJvb2wgbXlBdHRyaWIxYjsgICAgICAgICAgICAgICAgICAgICAvLzwgMTIKK3VuaWZvcm0g
YnZlYzIgbXlBdHRyaWIyYjsgICAgICAgICAgICAgICAgICAgIC8vPCAxMwordW5pZm9ybSBidmVj
MyBteUF0dHJpYjNiOyAgICAgICAgICAgICAgICAgICAgLy88IDE0Cit1bmlmb3JtIGJ2ZWM0IG15
QXR0cmliNGI7ICAgICAgICAgICAgICAgICAgICAvLzwgMTUKK3VuaWZvcm0gbWF0MiBteUF0dHJp
YjJtOyAgICAgICAgICAgICAgICAgICAgIC8vPCAxNgordW5pZm9ybSBtYXQzIG15QXR0cmliM207
ICAgICAgICAgICAgICAgICAgICAgLy88IDE3Cit1bmlmb3JtIG1hdDQgbXlBdHRyaWI0bTsgICAg
ICAgICAgICAgICAgICAgICAvLzwgMTgKK3VuaWZvcm0gZmxvYXQgbXlVbmlmb3JtZnZbNV07ICAg
ICAgICAgICAgICAgIC8vPCAxOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVXNlZCBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyLgordW5pZm9ybSB2ZWMzCWJy
aWNrQ29sb3I7ICAgICAgICAgICAgICAgICAgLy88IDIwCit1bmlmb3JtIHZlYzMJbW9ydGFyQ29s
b3I7ICAgICAgICAgICAgICAgICAvLzwgMjEKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJXaWR0
aDsgICAgICAgICAgICAvLzwgMjIKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJIZWlnaHQ7ICAg
ICAgICAgICAvLzwgMjMKK3VuaWZvcm0gZmxvYXQJbXdmOyAgICAgICAgICAgICAgICAgICAgICAg
ICAvLzwgMjQKK3VuaWZvcm0gZmxvYXQJbWhmOyAgICAgICAgICAgICAgICAgICAgICAgICAvLzwg
MjUKKworCitjb25zdCBmbG9hdCBzcGVjdWxhckNvbnRyaWJ1dGlvbiA9IDAuNzsKK2NvbnN0IGZs
b2F0IGRpZmZ1c2VDb250cmlidXRpb24gID0gKDEuMCAtIHNwZWN1bGFyQ29udHJpYnV0aW9uKTsK
Kwordm9pZCBtYWluKHZvaWQpIHsKKyAgICB2ZWM0IHBvcyAgICAgICAgPSBndGZfTW9kZWxWaWV3
TWF0cml4ICogZ3RmX1ZlcnRleDsKKyAgICBQb3NpdGlvbiAgICAgICAgPSB2ZWMzKGd0Zl9WZXJ0
ZXgpOworICAgIHZlYzMgdG5vcm0gICAgICA9IG5vcm1hbGl6ZShndGZfTm9ybWFsTWF0cml4ICog
Z3RmX05vcm1hbCk7CisgICAgdmVjMyBsaWdodFZlYyAgID0gbm9ybWFsaXplKExpZ2h0UG9zaXRp
b24gLSB2ZWMzKHBvcykpOworICAgIHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QobGlnaHRWZWMs
IHRub3JtKTsKKyAgICB2ZWMzIHZpZXdWZWMgICAgPSBub3JtYWxpemUodmVjMyhwb3MpKTsKKwor
CWZsb2F0IGYgPSBteUF0dHJpYjFmICsgbXlBdHRyaWIyZlswXSArIG15QXR0cmliNGZbMF0gCisJ
CQkgICsgZmxvYXQobXlBdHRyaWIxaSkgKyBmbG9hdChteUF0dHJpYjJpWzBdKSArIGZsb2F0KG15
QXR0cmliM2lbMF0pICsgZmxvYXQobXlBdHRyaWI0aVswXSkKKwkJCSAgKyBmbG9hdChteUF0dHJp
YjFiKSArIGZsb2F0KG15QXR0cmliMmJbMF0pICsgZmxvYXQobXlBdHRyaWIzYlswXSkgKyBmbG9h
dChteUF0dHJpYjRiWzBdKQkJICAKKwkJCSAgKyBteUF0dHJpYjJtWzBdWzBdICsgbXlBdHRyaWIz
bVswXVswXSArIG15QXR0cmliNG1bMF1bMF0KKwkJCSAgKyBteVVuaWZvcm1mdlswXSArIG15VW5p
Zm9ybWZ2WzFdICsgbXlVbmlmb3JtZnZbMl0gKyBteVVuaWZvcm1mdlszXSArIG15VW5pZm9ybWZ2
WzRdOworCisJLy9mbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCAw
LjAsIDEuMCk7CisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwg
ZiwgMS4wKTsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVj
OworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisKKyAg
ICBsaWdodEludGVuc2l0eSA9IGRpZmZ1c2VDb250cmlidXRpb24gKiBkb3QobGlnaHRWZWMsIHRu
b3JtKSArCisgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckNvbnRyaWJ1dGlvbiAqIHNwZWM7
CisgICAgCisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYXR0cmlidXRl
X2xvY2F0aW9uL2JyaWNrLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYXR0cmlidXRlX2xvY2F0
aW9uL2JyaWNrLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4MzAyNjFjYWVkN2IzYjU0MzI2NWNkYTNhZDZh
OWEzNDkyYmVkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9hdHRyaWJ1
dGVfbG9jYXRpb24vYnJpY2suZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzMgY29sb3JzOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sb3JzLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbi9icmljay52ZXJ0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbi9icmljay52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNiMGMwYmE2ZjUzM2RiNWJlZDJkODFlMjgxZjQyYTk5YzkyZDI0YzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfYXR0cmlidXRlX2xvY2F0aW9uL2JyaWNrLnZl
cnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSBmbG9hdCBteUF0dHJpYnV0ZTE7
CithdHRyaWJ1dGUgZmxvYXQgbXlBdHRyaWJ1dGUyOworYXR0cmlidXRlIGZsb2F0IG15QXR0cmli
dXRlMzsKKwordmFyeWluZyB2ZWMzIGNvbG9yczsKKwordm9pZCBtYWluKHZvaWQpIAoreworCWNv
bG9ycyA9IHZlYzMobXlBdHRyaWJ1dGUxLCAwLCAwKTsKKyAgICAKKyAgICBnbF9Qb3NpdGlvbiA9
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dMMlRlc3RzL2dldF9oYW5kbGUvc3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X2hhbmRsZS9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjI1MWIwN2YwM2U3ZjU0OGE0MGY3ODdhNTgwODY0ZDYxYWE3Mjk4MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9oYW5kbGUvc3VjY2Vzc2Z1bGNvbXBp
bGVfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNDYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3VuaWZvcm0gZmxvYXQJbW9ydGFyVGhpY2tuZXNzOwordW5pZm9ybSB2ZWMz
CWJyaWNrQ29sb3I7Cit1bmlmb3JtIHZlYzMJbW9ydGFyQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQJ
YnJpY2tNb3J0YXJXaWR0aDsKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJIZWlnaHQ7Cit1bmlm
b3JtIGZsb2F0CW13ZjsKK3VuaWZvcm0gZmxvYXQJbWhmOworCit2YXJ5aW5nIHZlYzMgIFBvc2l0
aW9uOwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKKwordm9pZCBtYWluICh2b2lkKQor
eworICAgIHZlYzMJY3Q7CisgICAgZmxvYXQJc3MsIHR0LCB3LCBoOworCisgICAgdmVjMyBwb3Mg
PSBQb3NpdGlvbjsKKyAgICAKKyAgICBzcyA9IHBvcy54IC8gYnJpY2tNb3J0YXJXaWR0aDsKKyAg
ICB0dCA9IHBvcy56IC8gYnJpY2tNb3J0YXJIZWlnaHQ7CisKKyAgICBpZiAoZnJhY3QgKHR0ICog
MC41KSA+IDAuNSkKKyAgICAgICAgc3MgKz0gMC41OworCisgICAgc3MgPSBmcmFjdCAoc3MpOwor
ICAgIHR0ID0gZnJhY3QgKHR0KTsKKworICAgIHcgPSBzdGVwIChtd2YsIHNzKSAtIHN0ZXAgKDEu
MCAtIG13Ziwgc3MpOworICAgIGggPSBzdGVwIChtaGYsIHR0KSAtIHN0ZXAgKDEuMCAtIG1oZiwg
dHQpOworCisgICAgY3QgPSBjbGFtcChtaXggKG1vcnRhckNvbG9yLCBicmlja0NvbG9yLCB3ICog
aCkgKiBsaWdodEludGVuc2l0eSwgMC4wLCAxLjApOworCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCAoY3QsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfaGFuZGxlL3N1
Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF9oYW5kbGUvc3Vj
Y2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZmFmODY5OGJjNjJmZmU0ZThm
OWVmNTM2NDY0NTFhYThlM2JiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
ZXRfaGFuZGxlL3N1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVydApAQCAtMCwwICsxLDI2IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUg
dmVjMyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
MyBndGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1
bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZhcnlpbmcgZmxv
YXQgbGlnaHRJbnRlbnNpdHk7Cit2YXJ5aW5nIHZlYzMgUG9zaXRpb247Cit1bmlmb3JtIHZlYzMg
TGlnaHRQb3NpdGlvbjsKK3VuaWZvcm0gZmxvYXQgU2NhbGU7CisKK3ZvaWQgbWFpbih2b2lkKSB7
CisJdmVjNCBwb3MgPSBndGZfTW9kZWxWaWV3TWF0cml4ICogZ3RmX1ZlcnRleDsKKwlQb3NpdGlv
biA9IHZlYzMoZ3RmX1ZlcnRleCkgKiBTY2FsZTsKKwl2ZWMzIHRub3JtID0gbm9ybWFsaXplKGd0
Zl9Ob3JtYWxNYXRyaXggKiBndGZfTm9ybWFsKTsKKwlsaWdodEludGVuc2l0eSA9IGRvdChub3Jt
YWxpemUoTGlnaHRQb3NpdGlvbiAtIHZlYzMocG9zKSksIHRub3JtKSAqIDEuNTsKKwlnbF9Qb3Np
dGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dldF91bmlmb3JtX2xvY2F0aW9uL2JyaWNrLmZyYWcg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJUZXN0cy9nZXRfdW5pZm9ybV9sb2NhdGlvbi9icmljay5mcmFnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIyNTFiMDdmMDNlN2Y1NDhhNDBmNzg3YTU4MDg2NGQ2MWFhNzI5ODMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfdW5pZm9ybV9sb2NhdGlvbi9icmljay5mcmFnCkBA
IC0wLDAgKzEsNDYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Vu
aWZvcm0gZmxvYXQJbW9ydGFyVGhpY2tuZXNzOwordW5pZm9ybSB2ZWMzCWJyaWNrQ29sb3I7Cit1
bmlmb3JtIHZlYzMJbW9ydGFyQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJXaWR0
aDsKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJIZWlnaHQ7Cit1bmlmb3JtIGZsb2F0CW13ZjsK
K3VuaWZvcm0gZmxvYXQJbWhmOworCit2YXJ5aW5nIHZlYzMgIFBvc2l0aW9uOwordmFyeWluZyBm
bG9hdCBsaWdodEludGVuc2l0eTsKKwordm9pZCBtYWluICh2b2lkKQoreworICAgIHZlYzMJY3Q7
CisgICAgZmxvYXQJc3MsIHR0LCB3LCBoOworCisgICAgdmVjMyBwb3MgPSBQb3NpdGlvbjsKKyAg
ICAKKyAgICBzcyA9IHBvcy54IC8gYnJpY2tNb3J0YXJXaWR0aDsKKyAgICB0dCA9IHBvcy56IC8g
YnJpY2tNb3J0YXJIZWlnaHQ7CisKKyAgICBpZiAoZnJhY3QgKHR0ICogMC41KSA+IDAuNSkKKyAg
ICAgICAgc3MgKz0gMC41OworCisgICAgc3MgPSBmcmFjdCAoc3MpOworICAgIHR0ID0gZnJhY3Qg
KHR0KTsKKworICAgIHcgPSBzdGVwIChtd2YsIHNzKSAtIHN0ZXAgKDEuMCAtIG13Ziwgc3MpOwor
ICAgIGggPSBzdGVwIChtaGYsIHR0KSAtIHN0ZXAgKDEuMCAtIG1oZiwgdHQpOworCisgICAgY3Qg
PSBjbGFtcChtaXggKG1vcnRhckNvbG9yLCBicmlja0NvbG9yLCB3ICogaCkgKiBsaWdodEludGVu
c2l0eSwgMC4wLCAxLjApOworCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY3QsIDEuMCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nZXRfdW5pZm9ybV9sb2NhdGlvbi9icmljay52
ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X3VuaWZvcm1fbG9jYXRpb24vYnJpY2sudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNWI4ZWNiYWZjOTU3NTc2Yzk2NTYxZWFkZDU0ZGM1NTUwZGIzNGM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2V0X3VuaWZvcm1fbG9jYXRpb24vYnJpY2sudmVy
dApAQCAtMCwwICsxLDQzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjMyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWluZyB2ZWMzICBQb3Np
dGlvbjsKK3VuaWZvcm0gdmVjMyAgTGlnaHRQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTm90QWN0
aXZlT25lOworYXR0cmlidXRlIGZsb2F0IG15QXR0cmlidXRlMTsKK2F0dHJpYnV0ZSBmbG9hdCBt
eUF0dHJpYnV0ZTI7CisKK2NvbnN0IGZsb2F0IHNwZWN1bGFyQ29udHJpYnV0aW9uID0gMC43Owor
Y29uc3QgZmxvYXQgZGlmZnVzZUNvbnRyaWJ1dGlvbiAgPSAoMS4wIC0gc3BlY3VsYXJDb250cmli
dXRpb24pOworCit2b2lkIG1haW4odm9pZCkgeworICAgIHZlYzQgcG9zICAgICAgICA9IGd0Zl9N
b2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4OworICAgIFBvc2l0aW9uICAgICAgICA9IHZlYzMo
Z3RmX1ZlcnRleCk7CisgICAgdmVjMyB0bm9ybSAgICAgID0gbm9ybWFsaXplKGd0Zl9Ob3JtYWxN
YXRyaXggKiBndGZfTm9ybWFsKTsKKyAgICB2ZWMzIGxpZ2h0VmVjICAgPSBub3JtYWxpemUoTGln
aHRQb3NpdGlvbiAtIHZlYzMocG9zKSk7CisgICAgdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdChs
aWdodFZlYywgdG5vcm0pOworICAgIHZlYzMgdmlld1ZlYyAgICA9IG5vcm1hbGl6ZSh2ZWMzKHBv
cykpOworCisJLy9mbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCAw
LjAsIDEuMCk7CisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwg
bXlBdHRyaWJ1dGUxLCBteUF0dHJpYnV0ZTIpOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAg
ICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMg
PSBzcGVjICogc3BlYzsKKworICAgIGxpZ2h0SW50ZW5zaXR5ID0gZGlmZnVzZUNvbnRyaWJ1dGlv
biAqIGRvdChsaWdodFZlYywgdG5vcm0pICsKKyAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFy
Q29udHJpYnV0aW9uICogc3BlYzsKKyAgICAKKyAgICBnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
MlRlc3RzL2dsR2V0UHJvZ3JhbUluZm9Mb2dfMi4wL3NpbXBsZS5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVz
dHMvZ2xHZXRQcm9ncmFtSW5mb0xvZ18yLjAvc2ltcGxlLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2VlMTk4
ODQ2NWVmNmE4ZjMzMjI2NDQ5OGU2NGViMzBhYWQzOWI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL2dsR2V0UHJvZ3JhbUluZm9Mb2dfMi4wL3NpbXBsZS5mcmFnCkBAIC0wLDAg
KzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisK
KyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3Zhcnlpbmcg
dmVjMyB0YzsKKwordm9pZCBtYWluICh2b2lkKQoreworCXZlYzMgZm9vID0gdGM7CisJZ2xfRnJh
Z0NvbG9yID0gdmVjNCAoZm9vLCAxLjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0UHJvZ3JhbUluZm9Mb2dfMi4wL3NpbXBs
ZS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRQcm9ncmFtSW5mb0xvZ18yLjAvc2ltcGxlLnZl
cnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDM2NjY3MTNkYmFmMjYyMGJiZGZjYTdlODk4MjQ4YzZmMDRmYTM0Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0UHJvZ3JhbUluZm9Mb2dfMi4w
L3NpbXBsZS52ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3Jt
IG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit1bmlmb3JtIHZlYzMgdHJpYW5n
bGVDb2xvcjsKK3ZhcnlpbmcgdmVjMyB0YzsKKwordm9pZCBtYWluKHZvaWQpCit7CisJdGMgPSB0
cmlhbmdsZUNvbG9yOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRQcm9n
cmFtaXZfMi4wL2JyaWNrLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdldFByb2dyYW1pdl8yLjAv
YnJpY2suZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjUxYjA3ZjAzZTdmNTQ4YTQwZjc4N2E1ODA4NjRkNjFh
YTcyOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRQcm9ncmFtaXZf
Mi4wL2JyaWNrLmZyYWcKQEAgLTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlmb3JtIHZl
YzMJYnJpY2tDb2xvcjsKK3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9ybSBmbG9h
dAlicmlja01vcnRhcldpZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdodDsKK3Vu
aWZvcm0gZmxvYXQJbXdmOwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVjMyAgUG9z
aXRpb247Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4gKHZvaWQp
Cit7CisgICAgdmVjMwljdDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2ZWMzIHBv
cyA9IFBvc2l0aW9uOworICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldpZHRoOwor
ICAgIHR0ID0gcG9zLnogLyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFjdCAodHQg
KiAwLjUpID4gMC41KQorICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0IChzcyk7
CisgICAgdHQgPSBmcmFjdCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0gc3RlcCAo
MS4wIC0gbXdmLCBzcyk7CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4wIC0gbWhm
LCB0dCk7CisKKyAgICBjdCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29sb3IsIHcg
KiBoKSAqIGxpZ2h0SW50ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0IChjdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0UHJvZ3Jh
bWl2XzIuMC9icmljay52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRQcm9ncmFtaXZfMi4wL2Jy
aWNrLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzViOGVjYmFmYzk1NzU3NmM5NjU2MWVhZGQ1NGRjNTU1MGRi
MzRjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0UHJvZ3JhbWl2XzIu
MC9icmljay52ZXJ0CkBAIC0wLDAgKzEsNDMgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1
dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7Cit2YXJ5aW5n
IHZlYzMgIFBvc2l0aW9uOwordW5pZm9ybSB2ZWMzICBMaWdodFBvc2l0aW9uOwordW5pZm9ybSB2
ZWMzICBOb3RBY3RpdmVPbmU7CithdHRyaWJ1dGUgZmxvYXQgbXlBdHRyaWJ1dGUxOworYXR0cmli
dXRlIGZsb2F0IG15QXR0cmlidXRlMjsKKworY29uc3QgZmxvYXQgc3BlY3VsYXJDb250cmlidXRp
b24gPSAwLjc7Citjb25zdCBmbG9hdCBkaWZmdXNlQ29udHJpYnV0aW9uICA9ICgxLjAgLSBzcGVj
dWxhckNvbnRyaWJ1dGlvbik7CisKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgdmVjNCBwb3MgICAg
ICAgID0gZ3RmX01vZGVsVmlld01hdHJpeCAqIGd0Zl9WZXJ0ZXg7CisgICAgUG9zaXRpb24gICAg
ICAgID0gdmVjMyhndGZfVmVydGV4KTsKKyAgICB2ZWMzIHRub3JtICAgICAgPSBub3JtYWxpemUo
Z3RmX05vcm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworICAgIHZlYzMgbGlnaHRWZWMgICA9IG5v
cm1hbGl6ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKTsKKyAgICB2ZWMzIHJlZmxlY3RWZWMg
PSByZWZsZWN0KGxpZ2h0VmVjLCB0bm9ybSk7CisgICAgdmVjMyB2aWV3VmVjICAgID0gbm9ybWFs
aXplKHZlYzMocG9zKSk7CisKKwkvL2Zsb2F0IHNwZWMgPSBjbGFtcChkb3QocmVmbGVjdFZlYywg
dmlld1ZlYyksIDAuMCwgMS4wKTsKKwlmbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMs
IHZpZXdWZWMpLCBteUF0dHJpYnV0ZTEsIG15QXR0cmlidXRlMik7CisgICAgc3BlYyA9IHNwZWMg
KiBzcGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7
CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworCisgICAgbGlnaHRJbnRlbnNpdHkgPSBkaWZmdXNl
Q29udHJpYnV0aW9uICogZG90KGxpZ2h0VmVjLCB0bm9ybSkgKworICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXJDb250cmlidXRpb24gKiBzcGVjOworICAgIAorICAgIGdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRTaGFkZXJJbmZvTG9nXzIuMC9zaW1wbGUuZnJhZyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL2dsR2V0U2hhZGVySW5mb0xvZ18yLjAvc2ltcGxlLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2VlMTk4ODQ2NWVmNmE4ZjMzMjI2NDQ5OGU2NGViMzBhYWQzOWI5ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0U2hhZGVySW5mb0xvZ18yLjAvc2ltcGxlLmZyYWcK
QEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dmFyeWluZyB2ZWMzIHRjOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJdmVjMyBmb28gPSB0YzsK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChmb28sIDEuMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRTaGFkZXJJbmZvTG9nXzIu
MC9zaW1wbGUudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0U2hhZGVySW5mb0xvZ18yLjAvc2lt
cGxlLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM2NjY3MTNkYmFmMjYyMGJiZGZjYTdlODk4MjQ4YzZmMDRm
YTM0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0U2hhZGVySW5mb0xv
Z18yLjAvc2ltcGxlLnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3Vu
aWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gdmVjMyB0
cmlhbmdsZUNvbG9yOwordmFyeWluZyB2ZWMzIHRjOworCit2b2lkIG1haW4odm9pZCkKK3sKKwl0
YyA9IHRyaWFuZ2xlQ29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdl
dFVuaWZvcm0vYnZlY190ZXN0cy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlmb3JtL2J2
ZWNfdGVzdHMuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzBmYzllMmM2MTU4OTU4NDFhOWQ0ZTdiMWMzMWZk
ZGExY2ZmNTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlmb3Jt
L2J2ZWNfdGVzdHMuZnJhZwpAQCAtMCwwICsxLDI0IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGJvb2wgZnVuaTE7Cit1bmlmb3JtIGJ2ZWMyIGZ1bmky
OwordW5pZm9ybSBidmVjMyBmdW5pMzsKK3VuaWZvcm0gYnZlYzQgZnVuaTQ7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHRlbXAgPSB2ZWM0KDAuMCwg
MC4wLCAwLjAsIDAuMCk7CisJaWYoZnVuaTEgfHwgZnVuaTJbMF0gJiYgZnVuaTJbMV0gJiYgZnVu
aTNbMF0gJiYgZnVuaTNbMV0gJiYgZnVuaTNbMl0gfHwgZnVuaTRbMF0gJiYgZnVuaTRbMV0gJiYg
ZnVuaTRbMl0gJiYgZnVuaTRbM10pCisJCXRlbXAgPSB2ZWM0KDEuMCwgMC4wLCAwLjUsIDEuMCk7
CisJZ2xfRnJhZ0NvbG9yID0gdGVtcCArIGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xHZXRVbmlmb3JtL2J2ZWNfdGVzdHMudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0
VW5pZm9ybS9idmVjX3Rlc3RzLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNiY2YwNmE5YjExYjRhYTUyNTNm
N2M5NGJlZmE4ZTBlNmU4YTg4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
R2V0VW5pZm9ybS9idmVjX3Rlc3RzLnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1Zl
cnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZv
cm0gYm9vbCB2dW5pMTsKK3VuaWZvcm0gYnZlYzIgdnVuaTI7Cit1bmlmb3JtIGJ2ZWMzIHZ1bmkz
OwordW5pZm9ybSBidmVjNCB2dW5pNDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
ICh2b2lkKQoreworCWlmKHZ1bmkxIHx8IHZ1bmkyWzBdICYmIHZ1bmkyWzFdICYmIHZ1bmkzWzBd
ICYmIHZ1bmkzWzFdICYmIHZ1bmkzWzJdIHx8IHZ1bmk0WzBdICYmIHZ1bmk0WzFdICYmIHZ1bmk0
WzJdICYmIHZ1bmk0WzNdKQorCWNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC41LCAxLjApOworCWds
X1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlmb3JtL2l2ZWNfdGVzdHMuZnJh
ZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9ybS9pdmVjX3Rlc3RzLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwY2FiZTU4ZGNiMTJmYjg5OGJkNTdjOTdlYjE2MTc2N2VjYWNmMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9ybS9pdmVjX3Rlc3RzLmZyYWcKQEAgLTAs
MCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9y
bSBpbnQgZnVuaTE7Cit1bmlmb3JtIGl2ZWMyIGZ1bmkyOwordW5pZm9ybSBpdmVjMyBmdW5pMzsK
K3VuaWZvcm0gaXZlYzQgZnVuaTQ7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl2ZWM0IHRlbXAgPSB2ZWM0KGZsb2F0KGZ1bmkxKSwgZmxvYXQoZnVuaTJbMF0g
KyBmdW5pMlsxXSksIGZsb2F0KGZ1bmkzWzBdICsgZnVuaTNbMV0gKyBmdW5pM1syXSksIGZsb2F0
KGZ1bmk0WzBdICsgZnVuaTRbMV0gKyBmdW5pNFsyXSArIGZ1bmk0WzNdKSk7CisJZ2xfRnJhZ0Nv
bG9yID0gdGVtcCArIGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRV
bmlmb3JtL2l2ZWNfdGVzdHMudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9ybS9pdmVj
X3Rlc3RzLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U3MTU5YzM4NjY5ZWExODljYzk3ZTNlODY4Y2Y3YjJh
ZGQxYzk2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9ybS9p
dmVjX3Rlc3RzLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZv
cm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gaW50IHZ1bmkx
OwordW5pZm9ybSBpdmVjMiB2dW5pMjsKK3VuaWZvcm0gaXZlYzMgdnVuaTM7Cit1bmlmb3JtIGl2
ZWM0IHZ1bmk0OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJ
Y29sb3IgPSB2ZWM0KGZsb2F0KHZ1bmkxKSwgZmxvYXQodnVuaTJbMF0gKyB2dW5pMlsxXSksIGZs
b2F0KHZ1bmkzWzBdICsgdnVuaTNbMV0gKyB2dW5pM1syXSksIGZsb2F0KHZ1bmk0WzBdICsgdnVu
aTRbMV0gKyB2dW5pNFsyXSArIHZ1bmk0WzNdKSApOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVs
Vmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyVGVzdHMvZ2xHZXRVbmlmb3JtL21hdF90ZXN0cy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xH
ZXRVbmlmb3JtL21hdF90ZXN0cy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NjNmOTZmMzZlZDI5YjJjNTE5
MzgyOWIyMmI2YzY5MWYwNDc1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bEdldFVuaWZvcm0vbWF0X3Rlc3RzLmZyYWcKQEAgLTAsMCArMSwyNSBAQAorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBtYXQyIGZ1bmkyOwordW5pZm9ybSBt
YXQzIGZ1bmkzOwordW5pZm9ybSBtYXQ0IGZ1bmk0OwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJdmVjNCB0ZW1wID0gdmVjNCggZnVuaTJbMF1bMF0gKyBmdW5p
MlswXVsxXSArIGZ1bmkyWzFdWzBdICsgZnVuaTJbMV1bMV0sIAorCisJCSAgICAgIGZ1bmkzWzBd
WzBdICsgZnVuaTNbMF1bMV0gKyBmdW5pM1swXVsyXSArIGZ1bmkzWzFdWzBdICsgZnVuaTNbMV1b
MV0gKyBmdW5pM1sxXVsyXSArIGZ1bmkzWzJdWzBdICsgZnVuaTNbMl1bMV0gKyBmdW5pM1syXVsy
XSwgIAorCisgICAgICAgICAgICAgICAgICAgICBmdW5pNFswXVswXSArIGZ1bmk0WzBdWzFdICsg
ZnVuaTRbMF1bMl0gKyBmdW5pNFswXVszXSArIGZ1bmk0WzFdWzBdICsgZnVuaTRbMV1bMV0gKyBm
dW5pNFsxXVsyXSArIGZ1bmk0WzFdWzNdICsgZnVuaTRbMl1bMF0gKyBmdW5pNFsyXVsxXSArIGZ1
bmk0WzJdWzJdICsgZnVuaTRbMl1bM10gKyBmdW5pNFszXVswXSArIGZ1bmk0WzNdWzFdICsgZnVu
aTRbM11bMl0gKyBmdW5pNFszXVszXSwgMS4wICk7CisJZ2xfRnJhZ0NvbG9yID0gdGVtcCArIGNv
bG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlmb3JtL21hdF90ZXN0
cy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlmb3JtL21hdF90ZXN0cy52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk0NzlkYzkxOWI3ZWZhZTQ3NTFhNDc0NGNhMTQ1ZDZiZDQ2YzQ4MTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdldFVuaWZvcm0vbWF0X3Rlc3RzLnZlcnQKQEAg
LTAsMCArMSwyNSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxW
aWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gbWF0MiB2dW5pMjsKK3VuaWZvcm0gbWF0MyB2
dW5pMzsKK3VuaWZvcm0gbWF0NCB2dW5pNDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBt
YWluICh2b2lkKQoreworCWNvbG9yID0gdmVjNCggdnVuaTJbMF1bMF0gKyB2dW5pMlswXVsxXSAr
IHZ1bmkyWzFdWzBdICsgdnVuaTJbMV1bMV0sIAorCisJCSAgICAgIHZ1bmkzWzBdWzBdICsgdnVu
aTNbMF1bMV0gKyB2dW5pM1swXVsyXSArIHZ1bmkzWzFdWzBdICsgdnVuaTNbMV1bMV0gKyB2dW5p
M1sxXVsyXSArIHZ1bmkzWzJdWzBdICsgdnVuaTNbMl1bMV0gKyB2dW5pM1syXVsyXSwgIAorCisg
ICAgICAgICAgICAgICAgICAgICB2dW5pNFswXVswXSArIHZ1bmk0WzBdWzFdICsgdnVuaTRbMF1b
Ml0gKyB2dW5pNFswXVszXSArIHZ1bmk0WzFdWzBdICsgdnVuaTRbMV1bMV0gKyB2dW5pNFsxXVsy
XSArIHZ1bmk0WzFdWzNdICsgdnVuaTRbMl1bMF0gKyB2dW5pNFsyXVsxXSArIHZ1bmk0WzJdWzJd
ICsgdnVuaTRbMl1bM10gKyB2dW5pNFszXVswXSArIHZ1bmk0WzNdWzFdICsgdnVuaTRbM11bMl0g
KyB2dW5pNFszXVszXSwgMS4wICk7CisKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsR2V0VW5pZm9ybS92ZWNfdGVzdHMuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9y
bS92ZWNfdGVzdHMuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGYzZTM0OWE0ZTg4MDVkZThiMjg5ZDY1MzFj
ODI3YzY5NGY5MzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRVbmlm
b3JtL3ZlY190ZXN0cy5mcmFnCkBAIC0wLDAgKzEsMjIgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gZmxvYXQgZnVuaTE7Cit1bmlmb3JtIHZlYzIgZnVu
aTI7Cit1bmlmb3JtIHZlYzMgZnVuaTM7Cit1bmlmb3JtIHZlYzQgZnVuaTQ7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwl2ZWM0IHRlbXAgPSB2ZWM0KGZ1bmkx
LCBmdW5pMlswXSArIGZ1bmkyWzFdLCBmdW5pM1swXSArIGZ1bmkzWzFdICsgZnVuaTNbMl0sIGZ1
bmk0WzBdICsgZnVuaTRbMV0gKyBmdW5pNFsyXSArIGZ1bmk0WzNdKTsKKwlnbF9GcmFnQ29sb3Ig
PSB0ZW1wICsgY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdldFVuaWZv
cm0vdmVjX3Rlc3RzLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdldFVuaWZvcm0vdmVjX3Rlc3Rz
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjVmOTZmNDQ2NGM2MjgyMWRiZjdkODAyNDI3OTM3ZWM1ZWExNGM1
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsR2V0VW5pZm9ybS92ZWNfdGVz
dHMudmVydApAQCAtMCwwICsxLDIxIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordW5pZm9ybSBmbG9hdCB2dW5pMTsKK3Vu
aWZvcm0gdmVjMiB2dW5pMjsKK3VuaWZvcm0gdmVjMyB2dW5pMzsKK3VuaWZvcm0gdmVjNCB2dW5p
NDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWNvbG9yID0g
dmVjNCh2dW5pMSwgdnVuaTJbMF0gKyB2dW5pMlsxXSwgdnVuaTNbMF0gKyB2dW5pM1sxXSArIHZ1
bmkzWzJdLCB2dW5pNFswXSArIHZ1bmk0WzFdICsgdnVuaTRbMl0gKyB2dW5pNFszXSk7CisJZ2xf
UG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
Z2xHZXRWZXJ0ZXhBdHRyaWIvbWF0X3Rlc3RzLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbEdldFZl
cnRleEF0dHJpYi9tYXRfdGVzdHMudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWJhMTJlMjEzNTQ1MzlhZjQ3
YTRjYjk2MjljOGUxMzkzZjEyODRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
Z2xHZXRWZXJ0ZXhBdHRyaWIvbWF0X3Rlc3RzLnZlcnQKQEAgLTAsMCArMSwyNCBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
K2F0dHJpYnV0ZSBtYXQzIGF0dDM7CithdHRyaWJ1dGUgbWF0NCBhdHQ0OwordmFyeWluZyB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSB2ZWM0KCAxLjAsIAorCisJ
CSAgICAgIGF0dDNbMF1bMF0gKyBhdHQzWzBdWzFdICsgYXR0M1swXVsyXSArIGF0dDNbMV1bMF0g
KyBhdHQzWzFdWzFdICsgYXR0M1sxXVsyXSArIGF0dDNbMl1bMF0gKyBhdHQzWzJdWzFdICsgYXR0
M1syXVsyXSwgIAorCisgICAgICAgICAgICAgICAgICAgICBhdHQ0WzBdWzBdICsgYXR0NFswXVsx
XSArIGF0dDRbMF1bMl0gKyBhdHQ0WzBdWzNdICsgYXR0NFsxXVswXSArIGF0dDRbMV1bMV0gKyBh
dHQ0WzFdWzJdICsgYXR0NFsxXVszXSArIGF0dDRbMl1bMF0gKyBhdHQ0WzJdWzFdICsgYXR0NFsy
XVsyXSArIGF0dDRbMl1bM10gKyBhdHQ0WzNdWzBdICsgYXR0NFszXVsxXSArIGF0dDRbM11bMl0g
KyBhdHQ0WzNdWzNdLCAxLjAgKTsKKworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
Z2xHZXRWZXJ0ZXhBdHRyaWIvbWF0X3Rlc3RzMi52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRW
ZXJ0ZXhBdHRyaWIvbWF0X3Rlc3RzMi52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YmJhNjNhZTYzMjBiZDBh
ZjdhNTJjZDU1ZWIwOTgzMTdkYzc2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0
cy9nbEdldFZlcnRleEF0dHJpYi9tYXRfdGVzdHMyLnZlcnQKQEAgLTAsMCArMSwyNCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK2F0dHJpYnV0ZSBtYXQyIGF0dDI7CithdHRyaWJ1dGUgbWF0MyBhdHQzOwordmFyeWluZyB2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSB2ZWM0KCBhdHQyWzBd
WzBdICsgYXR0MlswXVsxXSArIGF0dDJbMV1bMF0gKyBhdHQyWzFdWzFdLCAKKworCQkgICAgICBh
dHQzWzBdWzBdICsgYXR0M1swXVsxXSArIGF0dDNbMF1bMl0gKyBhdHQzWzFdWzBdICsgYXR0M1sx
XVsxXSArIGF0dDNbMV1bMl0gKyBhdHQzWzJdWzBdICsgYXR0M1syXVsxXSArIGF0dDNbMl1bMl0s
ICAKKworICAgICAgICAgICAgICAgICAgICAgMS4wLCAxLjAgKTsKKworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRWZXJ0ZXhBdHRyaWIvdmVjX3Rlc3RzLnZlcnQgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbEdldFZlcnRleEF0dHJpYi92ZWNfdGVzdHMudmVydApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MjE4ZTlhNzNmMjQ0M2MzMTQ0MzdlNTY0ZTIyZTY4N2I0OTliMjE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xHZXRWZXJ0ZXhBdHRyaWIvdmVjX3Rlc3RzLnZlcnQKQEAgLTAs
MCArMSwyMSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSBmbG9hdCBhdHQxOworYXR0cmlidXRlIHZlYzIg
YXR0MjsKK2F0dHJpYnV0ZSB2ZWMzIGF0dDM7CithdHRyaWJ1dGUgdmVjNCBhdHQ0OwordmFyeWlu
ZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sb3IgPSB2ZWM0KGF0dDEs
IGF0dDIueCArIGF0dDIueSwgYXR0My54ICsgYXR0My55ICsgYXR0My56LCBhdHQ0LnggKyBhdHQ0
LnkgKyBhdHQ0LnogKyBhdHQ0LncpOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2pl
Y3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
Z2xVbmlmb3JtLzFiX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xYl9mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjI4MTM2MDRjODYzNjU5ZGFkODc4YmYyMGUxZmIyODMxMzU1OWNh
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xYl9mcmFnLmZy
YWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordW5pZm9ybSBib29sIGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNCAoZmxvYXQoY29sb3IpLCAwLjAsIDAuMCwgMS4wKTsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMWJf
dmVydC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFiX3ZlcnQuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mY2QxZDJlMGQ0OGM5NmJlNDA1ZTMxZmY3Y2UxMDA0NmJiMmU2YWM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFiX3ZlcnQuZnJhZwpAQCAtMCwwICsx
LDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIGZs
b2F0IGNvbDsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQgKGNv
bCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMWJfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFiX3ZlcnQudmVydApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZmNkOGMxYmQyOWM1YTNhYzE1OGQ3ODNmNjZlMDI4NDczZTI1ZThmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFiX3ZlcnQudmVydApAQCAt
MCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZp
ZXdQcm9qZWN0aW9uTWF0cml4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSBi
b29sIGNvbG9yOwordmFyeWluZyBmbG9hdCBjb2w7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29s
ID0gZmxvYXQoY29sb3IpOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlm
b3JtLzFmX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xZl9mcmFnLmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODQ5NGYzMGMzN2M0NDhkOTg4YzJiMWJiOTVlM2E3MzY4YjJhYTRmZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xZl9mcmFnLmZyYWcKQEAg
LTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5p
Zm9ybSBmbG9hdCBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9
IHZlYzQgKGNvbG9yLCAwLjAsIDAuMCwgMS4wKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMWZfdmVydC5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFmX3ZlcnQuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGQ5MzU3
YTlkMDhlNWEyMGM0ZDhmYzExMDdjNjhhZGM0OTcwZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFmX3ZlcnQuZnJhZwpAQCAtMCwwICsxLDE2IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIGZsb2F0IGNvbDsKK3Zv
aWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChjb2wsIDAuMCwgMC4wLCAx
LjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzFmX3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xZl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNl
OWVlNWU4NDRkZmVmZTZkZGEzMzNmMWNmNTg4YzNjOWY2MDg5YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xZl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwxOCBAQAor
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRl
IHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gZmxvYXQgY29sb3I7Cit2
YXJ5aW5nIGZsb2F0IGNvbDsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2wgPSBjb2xvcjsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8xaV9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMWlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MzNkNDNk
NDgyNzU2ZTRmN2ViMTdiYTRiZmI2MDgyZTY3YjBjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vMWlfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gaW50IGNvbG9yOworCit2
b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sb3IsIDAuMCwgMC4w
LCAxLjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMlRlc3RzL2dsVW5pZm9ybS8xaV92ZXJ0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMWlfdmVydC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZDkzNTdhOWQwOGU1YTIwYzRkOGZjMTEwN2M2
OGFkYzQ5NzBmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0v
MWlfdmVydC5mcmFnCkBAIC0wLDAgKzEsMTYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgZmxvYXQgY29sOwordm9pZCBtYWluICh2b2lkKQoreworCWds
X0ZyYWdDb2xvciA9IHZlYzQgKGNvbCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMWlfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xV
bmlmb3JtLzFpX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDcwMTc1YmFmNzQ5ZGU1NDY5MmRkMjU3
ZWZmYTk5M2M5OGZiZGYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlm
b3JtLzFpX3ZlcnQudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5p
Zm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworYXR0cmlidXRlIHZlYzQg
Z3RmX0NvbG9yOwordW5pZm9ybSBpbnQgY29sb3I7Cit2YXJ5aW5nIGZsb2F0IGNvbDsKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwljb2wgPSBmbG9hdChjb2xvcik7CisJZ2xfUG9zaXRpb24gPSBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMjFmX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS8yMWZfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYTcyYzcxOWU2YzU5ZDI3ODY0ZGIy
YzRiY2FmZmJhNWJjOTRmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVu
aWZvcm0vMjFmX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGZsb2F0IGNvbG9yWzJdOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sb3JbMF0sIGNvbG9yWzFdLCAwLjAs
IDEuMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyVGVzdHMvZ2xVbmlmb3JtLzIxaV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMjFpX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjIyZWQxOGNmYzgwZWY2OTQwYjE1OTA1ZTA0
ZGEwZDJkMTMwNjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3Jt
LzIxaV9mcmFnLmZyYWcKQEAgLTAsMCArMSwxOSBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordW5pZm9ybSBpbnQgY29sb3JbMl07CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwlmbG9hdCByID0gZmxvYXQoY29sb3JbMF0pOworCWZsb2F0IGcgPSBmbG9hdChjb2xvclsx
XSk7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoci8yNTYuMCwgZy8yNTYuMCwgMC4wLCAxLjApOwor
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS8yMmZfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzIyZl9m
cmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YTkzNWNmNGFiMzNjZjUxMWI5MjgwY2JlYTZkODE4NDBk
Y2IwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yMmZfZnJh
Zy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3VuaWZvcm0gdmVjMiBjb2xvclsyXTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWds
X0ZyYWdDb2xvciA9IHZlYzQgKGNvbG9yWzBdWzBdLCBjb2xvclswXVsxXSwgY29sb3JbMV1bMF0s
IGNvbG9yWzFdWzFdKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMjJpX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS8yMmlfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYjBhZTFiM2U1YjNiYjNhY2Rk
YWI2YmYzMTFjYTY3MGU5M2M0ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bFVuaWZvcm0vMjJpX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGl2ZWMyIGNvbG9yWzJdOworCit2b2lkIG1h
aW4gKHZvaWQpCit7CisJZmxvYXQgciA9IGZsb2F0KGNvbG9yWzBdWzBdKTsKKwlmbG9hdCBnID0g
ZmxvYXQoY29sb3JbMF1bMV0pOworCWZsb2F0IGIgPSBmbG9hdChjb2xvclsxXVswXSk7CisJZmxv
YXQgYSA9IGZsb2F0KGNvbG9yWzFdWzFdKTsKKworCWdsX0ZyYWdDb2xvciA9IHZlYzQgKHIvMjU2
LjAsIGcvMjU2LjAsIGIvMjU2LjAsIGEvMjU2LjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yM2ZfZnJhZy5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzIzZl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg5
NTAyZjI5MzE3OTFkYmJlZGRkNGQ3MzMwZTEyY2U1Y2M4NmUzZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yM2ZfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTkgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gdmVjMyBjb2xv
clsyXTsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQgKGNvbG9y
WzBdWzBdICsgY29sb3JbMF1bMV0gKyBjb2xvclswXVsyXSwgCisJCQkJCQkgY29sb3JbMV1bMF0g
KyBjb2xvclsxXVsxXSArIGNvbG9yWzFdWzJdLAorCQkJCQkJIDAuMCwgMS4wKTsKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMjNpX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yM2lfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyZmIwOWYyYzg1ZjljYjM0MWYyYWM1ZmE3MDkwZTRjNGM1YWQ5ODMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMjNpX2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1
bmlmb3JtIGl2ZWMzIGNvbG9yWzJdOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZmxvYXQgciA9
IGZsb2F0KGNvbG9yWzBdWzBdICsgY29sb3JbMF1bMV0gKyBjb2xvclswXVsyXSk7CisJZmxvYXQg
ZyA9IGZsb2F0KGNvbG9yWzFdWzBdICsgY29sb3JbMV1bMV0gKyBjb2xvclsxXVsyXSk7CisKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0KHIvMjU2LjAsIGcvMjU2LjAsIDAuMCwgMS4wKTsKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMjRmX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yNGZfZnJhZy5mcmFn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4N2VjYmEzODk5NjliZWU2MDQ4MmE2OGU3NTAzODY1ZGYwYTBkZTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMjRmX2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDE5IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1
bmlmb3JtIHZlYzQgY29sb3JbMl07CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29s
b3IgPSB2ZWM0IChjb2xvclswXVswXSArIGNvbG9yWzBdWzFdICsgY29sb3JbMF1bMl0gKyBjb2xv
clswXVszXSwgCisJCQkJCQkgY29sb3JbMV1bMF0gKyBjb2xvclsxXVsxXSArIGNvbG9yWzFdWzJd
ICsgY29sb3JbMV1bM10sCisJCQkJCQkgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyVGVzdHMvZ2xVbmlmb3JtLzI0aV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vMjRpX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWY0YTg0ODljMmIwNGIxM2E0YzA4Y2Y2MGEw
NjI5NjMyZmQ2NWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3Jt
LzI0aV9mcmFnLmZyYWcKQEAgLTAsMCArMSwyMCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyNlbmRpZgordW5pZm9ybSBpdmVjNCBjb2xvclsyXTsKKwordm9pZCBtYWluICh2b2lk
KQoreworCWZsb2F0IHIgPSBmbG9hdChjb2xvclswXVswXSArIGNvbG9yWzBdWzFdICsgY29sb3Jb
MF1bMl0gKyBjb2xvclswXVszXSk7CisJZmxvYXQgZyA9IGZsb2F0KGNvbG9yWzFdWzBdICsgY29s
b3JbMV1bMV0gKyBjb2xvclsxXVsyXSArIGNvbG9yWzFdWzNdKTsKKworCWdsX0ZyYWdDb2xvciA9
IHZlYzQgKHIvMjU2LjAsIGcvMjU2LjAsIDAuMCwgMS4wKTsKK30KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMmJfZnJhZy5m
cmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJiX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YjZlYjNmMmIxMWJlOWVmZTQ4MmYzZWRhNDJkYWNjODIxMzZiNWQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJiX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE3IEBA
CisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYg
R0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGJ2ZWMyIGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAodmVjMihj
b2xvciksIDAuMCwgMS4wKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMmJfdmVydC5mcmFnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVz
dHMvZ2xVbmlmb3JtLzJiX3ZlcnQuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2JmM2U2NTM5OTQwMmMwZjk0
MDZhMDE3OGUzZTk2ZjA3MWMxYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
Z2xVbmlmb3JtLzJiX3ZlcnQuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzIgY29sOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sWzBdLCBjb2xbMV0sIDAuMCwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yYl92ZXJ0LnZlcnQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMmJfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyODVhMGVi
ODc0NDk5NjJlOTZhNDA1OWVjMzg5Mzk0ODNkNWUzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vMmJfdmVydC52ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0
IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7
CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIGJ2ZWMyIGNvbG9yOwordmFyeWlu
ZyB2ZWMyIGNvbDsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2wgPSB2ZWMyKGNvbG9yKTsKKwln
bF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yZl9mcmFnLmZyYWcgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vMmZfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzlhODg3
YTIxNTA5MWQwNjFjMDYwN2I0MGUyMmE1OTIxZDZhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vMmZfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoK
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gdmVjMiBjb2xvcjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQgKGNvbG9yLCAwLjAsIDEu
MCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtLzJmX3ZlcnQuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8y
Zl92ZXJ0LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkYWM3OWM4MmIxY2I5MjIzYzM2N2RiYjI3N2I4NDU1
YTI5MDY2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yZl92
ZXJ0LmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordmFyeWluZyB2ZWMyIGNvbDsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0Zy
YWdDb2xvciA9IHZlYzQgKGNvbCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtLzJmX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8y
Zl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU5ZDY2Yzc5NWQ5MjBmMDc3YzA5Njg5YmY0MTZlMjZm
Yjg3YTRjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yZl92
ZXJ0LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0
NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xv
cjsKK3VuaWZvcm0gdmVjMiBjb2xvcjsKK3ZhcnlpbmcgdmVjMiBjb2w7Cit2b2lkIG1haW4gKHZv
aWQpCit7CisJY29sID0gY29sb3I7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bFVuaWZvcm0vMmlfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJpX2ZyYWcu
ZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NDk0MDE0ODIyNjYwOTZjMWUxMGM3NGE0NGMxM2Q3NDY2NmYxZmZh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJpX2ZyYWcuZnJh
ZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlm
Cit1bmlmb3JtIGl2ZWMyIGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0Nv
bG9yID0gdmVjNCAoY29sb3JbMF0sIGNvbG9yWzFdLCAwLjAsIDEuMCk7Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJp
X3ZlcnQuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yaV92ZXJ0LmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDRkYWM3OWM4MmIxY2I5MjIzYzM2N2RiYjI3N2I4NDU1YTI5MDY2YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yaV92ZXJ0LmZyYWcKQEAgLTAsMCAr
MSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2
ZWMyIGNvbDsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xvciA9IHZlYzQgKGNv
bCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJp
X3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yaV92ZXJ0LnZlcnQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQxNGYyMGM1YWU2YThiMWNkMWVkYmZjMjIyMjUyNDlhYzkxNzcxYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8yaV92ZXJ0LnZlcnQKQEAgLTAsMCAr
MSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
YXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJv
amVjdGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gaXZlYzIg
Y29sb3I7Cit2YXJ5aW5nIHZlYzIgY29sOwordm9pZCBtYWluICh2b2lkKQoreworCWNvbCA9IHZl
YzIoY29sb3IpOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgg
KiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzJt
X2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8ybV9mcmFnLmZyYWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU1NjJlNjNkMGYzMTgzMDNlNjU2NWQxZmJmY2Y3NzRkNjJiNzdhMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8ybV9mcmFnLmZyYWcKQEAgLTAsMCAr
MSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKwor
I2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBt
YXQyIGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAo
Y29sb3JbMF1bMF0gKyBjb2xvclswXVsxXSwgY29sb3JbMV1bMF0gKyBjb2xvclsxXVsxXSwgMC4w
LCAxLjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMlRlc3RzL2dsVW5pZm9ybS8zYl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vM2JfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkOTc1MDY0NTkzZGY4ZTg0NTg5ZDlhYjc0Njcz
MWIzNDc1MzQxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0v
M2JfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3VuaWZvcm0gYnZlYzMgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sK
KwlnbF9GcmFnQ29sb3IgPSB2ZWM0ICh2ZWMzKGNvbG9yKSwgMS4wKTsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2Jf
dmVydC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNiX3ZlcnQuZnJhZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTdiOWExNDgwMjMzYzEwNTIwODYzNmVjMDE1ODhkZGNiY2ZlOTcyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNiX3ZlcnQuZnJhZwpAQCAtMCwwICsx
LDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZl
YzMgY29sOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29s
WzBdLCBjb2xbMV0sIGNvbFsyXSwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS8zYl92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2JfdmVy
dC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5YjhmZDQ4OTM2MTQ3YzBjZGU0NDFkOWQ3ODM2ZDMwMjU4NjBi
MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2JfdmVydC52
ZXJ0CkBAIC0wLDAgKzEsMTggQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CithdHRyaWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1
bmlmb3JtIGJ2ZWMzIGNvbG9yOwordmFyeWluZyB2ZWMzIGNvbDsKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwljb2wgPSB2ZWMzKGNvbG9yKTsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS8zZl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2ZfZnJh
Zy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYwZmE2ODUzYzdkYWEzYTRjZjIzYWQzYmExYWU2ZDFmYjk3NjYw
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2ZfZnJhZy5m
cmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5k
aWYKK3VuaWZvcm0gdmVjMyBjb2xvcjsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdD
b2xvciA9IHZlYzQgKGNvbG9yLCAxLjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8zZl92ZXJ0LmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vM2ZfdmVydC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOThhODY2MGM3
ZDMwMTkwYjg2OTE4NTYzNzZhNGYxYzBhMzNmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TDJUZXN0cy9nbFVuaWZvcm0vM2ZfdmVydC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjMyBjb2w7CisKK3ZvaWQg
bWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChjb2wsIDEuMCk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vM2ZfdmVydC52ZXJ0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtLzNmX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTU2MmYwNGIyZDEyNjA4
MGNmMmNlZTdkMjgyYjhhOGM2YWMzNDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVz
dHMvZ2xVbmlmb3JtLzNmX3ZlcnQudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVy
dGV4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworYXR0cmli
dXRlIHZlYzQgZ3RmX0NvbG9yOwordW5pZm9ybSB2ZWMzIGNvbG9yOwordmFyeWluZyB2ZWMzIGNv
bDsKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwljb2wgPSBjb2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS8zaV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bFVuaWZvcm0vM2lfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNzQwMmI2ZGFhN2E0NmE2Mjc2ZTU4
NjA4ZDU5NmEzZmE4ZWFhMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVu
aWZvcm0vM2lfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gaXZlYzMgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9p
ZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJd
LCAxLjApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMlRlc3RzL2dsVW5pZm9ybS8zaV92ZXJ0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZv
cm0vM2lfdmVydC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOThhODY2MGM3ZDMwMTkwYjg2OTE4NTYzNzZh
NGYxYzBhMzNmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0v
M2lfdmVydC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjMyBjb2w7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwln
bF9GcmFnQ29sb3IgPSB2ZWM0IChjb2wsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJU
ZXN0cy9nbFVuaWZvcm0vM2lfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNp
X3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjJhYTRiYjI1MGQ0NWMwNWY1OGI5ODA0YzMzYzRjYTdi
YzdhZGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNpX3Zl
cnQudmVydApAQCAtMCwwICsxLDE4IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBtYXQ0
IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OworYXR0cmlidXRlIHZlYzQgZ3RmX0NvbG9y
OwordW5pZm9ybSBpdmVjMyBjb2xvcjsKK3ZhcnlpbmcgdmVjMyBjb2w7Cit2b2lkIG1haW4gKHZv
aWQpCit7CisJY29sID0gdmVjMyhjb2xvcik7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJU
ZXN0cy9nbFVuaWZvcm0vM21fZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNt
X2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2M4ZjRhNWE4MzJlYjg0NGY0ODkxZGNlMTI4Yjc0Yzc4
OTYwZWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzNtX2Zy
YWcuZnJhZwpAQCAtMCwwICsxLDIwIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
I2VuZGlmCit1bmlmb3JtIG1hdDMgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9G
cmFnQ29sb3IgPSB2ZWM0IChjb2xvclswXVswXSArIGNvbG9yWzBdWzFdICsgY29sb3JbMF1bMl0s
IAorCQkJCQkJIGNvbG9yWzFdWzBdICsgY29sb3JbMV1bMV0gKyBjb2xvclsxXVsyXSwgCisJCQkJ
CQkgY29sb3JbMl1bMF0gKyBjb2xvclsyXVsxXSArIGNvbG9yWzJdWzJdLCAKKwkJCQkJCSAxLjAp
OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRl
c3RzL2dsVW5pZm9ybS80Yl9maXJzdHRocmVlX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS80Yl9maXJzdHRocmVlX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTlhYmQ3NWJmMGQ0
NGNlNzQ5M2U1MGMxMzJhNGQ4MWFiNzgyNDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtLzRiX2ZpcnN0dGhyZWVfZnJhZy5mcmFnCkBAIC0wLDAgKzEsMTcgQEAK
KworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBH
TF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gYnZlYzQgY29s
b3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChmbG9hdChj
b2xvclswXSksIGZsb2F0KGNvbG9yWzFdKSwgZmxvYXQoY29sb3JbMl0pLCAxLjApOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRiX2ZpcnN0dGhyZWVfdmVydC5mcmFn
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRiX2ZpcnN0dGhyZWVfdmVydC5mcmFnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2YzAxNDY4YTdiZWQ3ZWU3MDlhNjg1MTFmYmM2MWMzMDFiZDkwOGEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vNGJfZmlyc3R0aHJlZV92ZXJ0LmZy
YWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRp
ZgordmFyeWluZyB2ZWM0IGNvbDsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdDb2xv
ciA9IHZlYzQgKGNvbFswXSwgY29sWzFdLCBjb2xbMl0sIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vNGJfbGFzdHRocmVlX2ZyYWcuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
MlRlc3RzL2dsVW5pZm9ybS80Yl9sYXN0dGhyZWVfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkODQ3
MzEzMTVlMzc0YjRmNzUyOTJhMWViYjFkMmQ3ZmIwNzIxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vNGJfbGFzdHRocmVlX2ZyYWcuZnJhZwpAQCAtMCwwICsx
LDE3IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisj
aWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGJ2
ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAo
ZmxvYXQoY29sb3JbMV0pLCBmbG9hdChjb2xvclsyXSksIGZsb2F0KGNvbG9yWzNdKSwgMS4wKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80Yl9sYXN0dGhyZWVfdmVy
dC5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRiX2xhc3R0aHJlZV92ZXJ0LmZyYWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODY5ZDE4M2UwNjBlYzc0YjdhNWRjMDYxODM3NmQ3ODI5NzgzZTE2YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80Yl9sYXN0dGhyZWVfdmVy
dC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2w7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFn
Q29sb3IgPSB2ZWM0IChjb2xbMV0sIGNvbFsyXSwgY29sWzNdLCAxLjApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRiX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS80Yl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5Y2U4OTQ5MTZhZjNhNmM1ODc1
NjhkNjVjNzAwMDE0NzA3ODhjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS80Yl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsK
K3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gYnZlYzQgY29sb3I7Cit2YXJ5aW5nIHZlYzQgY29sOwor
dm9pZCBtYWluICh2b2lkKQoreworCWNvbCA9IHZlYzQoY29sb3IpOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRmX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L2dsVW5pZm9ybS80Zl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IwNzFjMDM0Nzg2NjA0Y2Y4MmM0
NmE0NWQ0N2U5MzMwYTdiOTNlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS80Zl9mcmFnLmZyYWcKQEAgLTAsMCArMSwxNyBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4gKHZv
aWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsy
XSwgY29sb3JbM10pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80Zl92ZXJ0LmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bFVuaWZvcm0vNGZfdmVydC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YjA2ZTA3ODZjMDRiZjNmNTRlNGY5
YzZmODMwNmE2OTY3MmMwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVu
aWZvcm0vNGZfdmVydC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2w7CisKK3ZvaWQgbWFpbiAodm9pZCkK
K3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChjb2xbMF0sIGNvbFsxXSwgY29sWzJdLCBjb2xbM10p
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRmX3ZlcnQudmVydCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80Zl92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFkODhk
OTYxMDQ3OGFmYWVhOWUyMWM5NjNhNzAxMWU0ZTkwZTdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80Zl92ZXJ0LnZlcnQKQEAgLTAsMCArMSwxOCBAQAorCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZl
YzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJp
eDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gdmVjNCBjb2xvcjsKK3Zhcnlp
bmcgdmVjNCBjb2w7Cit2b2lkIG1haW4gKHZvaWQpCit7CisJY29sID0gY29sb3I7CisJZ2xfUG9z
aXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vNGlfZnJhZy5mcmFnIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyVGVzdHMvZ2xVbmlmb3JtLzRpX2ZyYWcuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWQ5MDUzYzUyMGMx
MWZiZjM3ZTYwOTZjOGUyZGY3NDJhZjBhMTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtLzRpX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGl2ZWM0IGNvbG9yOworCit2b2lk
IG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29sb3JbMF0sIGNvbG9yWzFd
LCBjb2xvclsyXSwgY29sb3JbM10pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80aV92ZXJ0LmZyYWcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TDJUZXN0cy9nbFVuaWZvcm0vNGlfdmVydC5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YjA2ZTA3ODZjMDRi
ZjNmNTRlNGY5YzZmODMwNmE2OTY3MmMwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJU
ZXN0cy9nbFVuaWZvcm0vNGlfdmVydC5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3ZhcnlpbmcgdmVjNCBjb2w7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSB2ZWM0IChjb2xbMF0sIGNvbFsxXSwgY29sWzJd
LCBjb2xbM10pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRpX3Zl
cnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80aV92ZXJ0LnZlcnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDJjZGZhYTRlMzE0YmUzN2VkMzZkMjBhZjM2OGQzMjg4ZGY0YmMwOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80aV92ZXJ0LnZlcnQKQEAgLTAsMCArMSwx
OCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0
cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVj
dGlvbk1hdHJpeDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gaXZlYzQgY29s
b3I7Cit2YXJ5aW5nIHZlYzQgY29sOwordm9pZCBtYWluICh2b2lkKQoreworCWNvbCA9IHZlYzQo
Y29sb3IpOworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBn
dGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtLzRtX2Zy
YWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80bV9mcmFnLmZyYWcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDA2MDAwNDliY2ExMzc4NzIwNTI2ZTEzNTFlYmQ1MGY5YjViMDkzMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS80bV9mcmFnLmZyYWcKQEAgLTAsMCArMSwy
MCBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBtYXQ0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY29s
b3JbMF1bMF0gKyBjb2xvclswXVsxXSArIGNvbG9yWzBdWzJdICsgY29sb3JbMF1bM10sIAorCQkJ
CQkJIGNvbG9yWzFdWzBdICsgY29sb3JbMV1bMV0gKyBjb2xvclsxXVsyXSArIGNvbG9yWzFdWzNd
LCAKKwkJCQkJCSBjb2xvclsyXVswXSArIGNvbG9yWzJdWzFdICsgY29sb3JbMl1bMl0gKyBjb2xv
clsyXVszXSwgCisJCQkJCQkgY29sb3JbM11bMF0gKyBjb2xvclszXVsxXSArIGNvbG9yWzNdWzJd
ICsgY29sb3JbM11bM10pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS9kZWZhdWx0LnZlcnQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0
cy9nbFVuaWZvcm0vZGVmYXVsdC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MmM1N2RmOTJiNWE4ZTJhNGNm
OWRjYTAwNGYwZjU5NDE1NWRhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9n
bFVuaWZvcm0vZGVmYXVsdC52ZXJ0CkBAIC0wLDAgKzEsMTYgQEAKKworLyoKK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7
Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZvaWQgbWFp
biAodm9pZCkKK3sKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKKwlnbF9Qb2ludFNpemUgPSAxLjA7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vbWF0cml4MlZTVS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xV
bmlmb3JtL21hdHJpeDJWU1UuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDg2ODhiNWE4Mjg1ZmRkMmI3Y2Zl
OTlkMmU5NzVhNmRkMDcwZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xV
bmlmb3JtL21hdHJpeDJWU1UuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSBjb2xvcjsgLy8gQXBwbHkgaXQgb24gYSBwZXIgdmVy
dGV4IGxldmVsCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvZ2xVbmlmb3JtL21hdHJpeDJWU1UudmVydCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS9tYXRyaXgyVlNVLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJlZGQ3MDU1Njk3ZWI3YjEzMWI1
MzkxNTYzNjE1NzUzNTJiNjRjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2ds
VW5pZm9ybS9tYXRyaXgyVlNVLnZlcnQKQEAgLTAsMCArMSwyMiBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRl
eDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3
UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gbWF0NCB0cmFuc2Zvcm1zOwordW5pZm9ybSBtYXQ0
IGFub3RoZXJNYXRyaXg7CisKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluKHZvaWQp
Cit7CisgIGNvbG9yID0gZ3RmX0NvbG9yOyAvLyBjb2xvciBpcyBwZXIgdmVydGV4IGFuZCBtYXRj
aGVzIGdsQ29sb3IgYWxyZWFkeSB1c2VkIGJ5IFZlcnRleAorCisgICBnbF9Qb3NpdGlvbiA9IGd0
Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4KiB0cmFuc2Zvcm1zICogYW5vdGhlck1hdHJpeCAq
IGd0Zl9WZXJ0ZXg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtL21hdHJpeDJhcnJheVZTVS5mcmFnIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wy
VGVzdHMvZ2xVbmlmb3JtL21hdHJpeDJhcnJheVZTVS5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwODY4OGI1
YTgyODVmZGQyYjdjZmU5OWQyZTk3NWE2ZGQwNzBkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vbWF0cml4MmFycmF5VlNVLmZyYWcKQEAgLTAsMCArMSwxNyBA
QAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVm
IEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordmFyeWluZyB2ZWM0IGNv
bG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7IC8vIEFw
cGx5IGl0IG9uIGEgcGVyIHZlcnRleCBsZXZlbAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS9tYXRyaXgyYXJyYXlWU1Uu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2dsVW5pZm9ybS9tYXRyaXgyYXJyYXlWU1UudmVydApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OWU2NDk3Mzg3ZmIxNmI1NDI4OWJhZmVhZDRjOWI5MGYyODNlODczCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtL21hdHJpeDJhcnJheVZTVS52ZXJ0
CkBAIC0wLDAgKzEsMjEgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZf
Q29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit1bmlm
b3JtIG1hdDQgdHJhbnNmb3Jtc1syXTsKKwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1h
aW4odm9pZCkKK3sKKyAgY29sb3IgPSBndGZfQ29sb3I7IC8vIGNvbG9yIGlzIHBlciB2ZXJ0ZXgg
YW5kIG1hdGNoZXMgZ2xDb2xvciBhbHJlYWR5IHVzZWQgYnkgVmVydGV4CisKKyAgIGdsX1Bvc2l0
aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgqIHRyYW5zZm9ybXNbMF0gKiB0cmFu
c2Zvcm1zWzFdICogZ3RmX1ZlcnRleDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9nbFVuaWZvcm0vbWF0cml4VlNVLmZyYWcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9nbFVuaWZvcm0vbWF0cml4VlNVLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA4Njg4YjVh
ODI4NWZkZDJiN2NmZTk5ZDJlOTc1YTZkZDA3MGQ0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMlRlc3RzL2dsVW5pZm9ybS9tYXRyaXhWU1UuZnJhZwpAQCAtMCwwICsxLDE3IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit2YXJ5aW5nIHZlYzQgY29sb3I7CisK
K3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlnbF9GcmFnQ29sb3IgPSBjb2xvcjsgLy8gQXBwbHkgaXQg
b24gYSBwZXIgdmVydGV4IGxldmVsCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvZ2xVbmlmb3JtL21hdHJpeFZTVS52ZXJ0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMv
R0wyVGVzdHMvZ2xVbmlmb3JtL21hdHJpeFZTVS52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDNhMTViZWM1
MzMxYWUxMDgxYTI0NGFlNmI2MTFhYzM1M2JmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TDJUZXN0cy9nbFVuaWZvcm0vbWF0cml4VlNVLnZlcnQKQEAgLTAsMCArMSwyMSBAQAorCisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzQg
Z3RmX1ZlcnRleDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9Db2xvcjsKK3VuaWZvcm0gbWF0NCBndGZf
TW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3VuaWZvcm0gbWF0NCB0cmFuc2Zvcm1zOwordmFy
eWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4odm9pZCkKK3sKKyAgY29sb3IgPSBndGZfQ29s
b3I7IC8vIGNvbG9yIGlzIHBlciB2ZXJ0ZXggYW5kIG1hdGNoZXMgZ2xDb2xvciB1c2VkCisgIAor
ICAgZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCogdHJhbnNmb3Jt
cyAqIGd0Zl9WZXJ0ZXg7CisgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyVGVzdHMvbGlua19wcm9ncmFtL3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcu
ZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL2xpbmtfcHJvZ3JhbS9zdWNjZXNzZnVsY29tcGlsZV9mcmFn
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjI1MWIwN2YwM2U3ZjU0OGE0MGY3ODdhNTgwODY0ZDYxYWE3Mjk4
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2xpbmtfcHJvZ3JhbS9zdWNjZXNz
ZnVsY29tcGlsZV9mcmFnLmZyYWcKQEAgLTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlm
b3JtIHZlYzMJYnJpY2tDb2xvcjsKK3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9y
bSBmbG9hdAlicmlja01vcnRhcldpZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdo
dDsKK3VuaWZvcm0gZmxvYXQJbXdmOwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVj
MyAgUG9zaXRpb247Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4g
KHZvaWQpCit7CisgICAgdmVjMwljdDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2
ZWMzIHBvcyA9IFBvc2l0aW9uOworICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldp
ZHRoOworICAgIHR0ID0gcG9zLnogLyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFj
dCAodHQgKiAwLjUpID4gMC41KQorICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0
IChzcyk7CisgICAgdHQgPSBmcmFjdCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0g
c3RlcCAoMS4wIC0gbXdmLCBzcyk7CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4w
IC0gbWhmLCB0dCk7CisKKyAgICBjdCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29s
b3IsIHcgKiBoKSAqIGxpZ2h0SW50ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0IChjdCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2xpbmtf
cHJvZ3JhbS9zdWNjZXNzZnVsY29tcGlsZV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9saW5r
X3Byb2dyYW0vc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZmFmODY5
OGJjNjJmZmU0ZThmOWVmNTM2NDY0NTFhYThlM2JiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy9saW5rX3Byb2dyYW0vc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsMjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
KwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyBQb3NpdGlvbjsK
K3VuaWZvcm0gdmVjMyBMaWdodFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBTY2FsZTsKKwordm9p
ZCBtYWluKHZvaWQpIHsKKwl2ZWM0IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVy
dGV4OworCVBvc2l0aW9uID0gdmVjMyhndGZfVmVydGV4KSAqIFNjYWxlOworCXZlYzMgdG5vcm0g
PSBub3JtYWxpemUoZ3RmX05vcm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworCWxpZ2h0SW50ZW5z
aXR5ID0gZG90KG5vcm1hbGl6ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKSwgdG5vcm0pICog
MS41OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvbGlua19wcm9ncmFtL3Vuc3Vj
Y2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvbGlua19wcm9ncmFtL3Vu
c3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmM2ZlNzk3YjJkYTdkZTA5
NzMzNzE2ZjNjYjY0Njg3OWJkYjRiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0
cy9saW5rX3Byb2dyYW0vdW5zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKQEAgLTAsMCArMSw2
NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworI2lm
ZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgordW5pZm9ybSBmbG9h
dCBHcmFpblNpemU7Cit1bmlmb3JtIHZlYzMgIERhcmtDb2xvcjsKK3VuaWZvcm0gdmVjMyAgY29s
b3JTcHJlYWQ7CisKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7IAordmFyeWluZyB2ZWMz
IFBvc2l0aW9uOworCit2b2lkIG1haW4gKHZvaWQpCit7CisgICAgLy8KKyAgICAvLyBjaGVhcCBu
b2lzZQorICAgIC8vCisgICAgdmVjMyBsb2NhdGlvbiA9IFBvc2l0aW9uOworCisgICAgdmVjMyBm
bG9vcnZlYyA9IHZlYzMoZmxvb3IoUG9zaXRpb24ueCAqIDEwLjApLCAwLjAsIGZsb29yKFBvc2l0
aW9uLnogKiAxMC4wKSk7CisgICAgdmVjMyBub2lzZSA9IFBvc2l0aW9uICogMTAuMCAtIGZsb29y
dmVjIC0gMC41OworICAgIG5vaXNlICo9IG5vaXNlOworICAgIGxvY2F0aW9uICs9IG5vaXNlICog
MC4xMjsKKworICAgIC8vCisgICAgLy8gZGlzdGFuY2UgZnJvbSBheGlzCisgICAgLy8KKyAgICBm
bG9hdCBkaXN0ID0gbG9jYXRpb24ueCAqIGxvY2F0aW9uLnggKyBsb2NhdGlvbi56ICogbG9jYXRp
b24uejsKKyAgICBmbG9hdCBncmFpbiA9IGRpc3QgLyBHcmFpblNpemU7CisKKyAgICAvLworICAg
IC8vIGdyYWluIGVmZmVjdHMgYXMgZnVuY3Rpb24gb2YgZGlzdGFuY2UKKyAgICAvLworICAgIGZs
b2F0IGJyaWdodG5lc3MgPSBmcmFjdChncmFpbik7CisgICAgaWYgKGJyaWdodG5lc3MgPiAwLjUp
IAorICAgICAgICBicmlnaHRuZXNzID0gKDEuMCAtIGJyaWdodG5lc3MpOworICAgIHZlYzMgY29s
b3IgPSBEYXJrQ29sb3IgKyAwLjUgKiBicmlnaHRuZXNzICogKGNvbG9yU3ByZWFkKTsKKyAgICAK
KyAgICBicmlnaHRuZXNzID0gZnJhY3QoZ3JhaW4qNy4wKTsgICAgCisgICAgaWYgKGJyaWdodG5l
c3MgPiAwLjUpIAorICAgICAgICBicmlnaHRuZXNzID0gMS4wIC0gYnJpZ2h0bmVzczsKKyAgICBj
b2xvciAtPSAwLjUgKiBicmlnaHRuZXNzICogY29sb3JTcHJlYWQ7CisKKyAgICAvLworICAgIC8v
IGFsc28gYXMgYSBmdW5jdGlvbiBvZiBsaW5lcyBwYXJhbGxlbCB0byB0aGUgYXhpcworICAgIC8v
CisgICAgYnJpZ2h0bmVzcyA9IGZyYWN0KGdyYWluKjQ3LjApOworICAgIGZsb2F0IGxpbmUgPSBm
cmFjdChQb3NpdGlvbi56ICsgUG9zaXRpb24ueCk7CisgICAgZmxvYXQgc25hcCA9IGZsb29yKGxp
bmUgKiAzMC4wKSAqICgxLjAvMzAuMCk7CisgICAgaWYgKGxpbmUgPCBzbmFwICsgMC4wMDQpCisg
ICAgICAgIGNvbG9yIC09IDAuNSAqIGJyaWdodG5lc3MgKiBjb2xvclNwcmVhZDsKKworICAgIC8v
CisgICAgLy8gYXBwbHkgbGlnaHRpbmcgZWZmZWN0cyBmcm9tIHZlcnRleCBwcm9jZXNzb3IKKyAg
ICAvLworICAgIGNvbG9yICo9IGxpZ2h0SW50ZW5zaXR5OworICAgIGNvbG9yID0gY2xhbXAoY29s
b3IsIDAuMCwgMS4wKTsgCisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAwLjEpCit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9saW5rX3Byb2dyYW0vdW5zdWNjZXNzZnVsY29t
cGlsZV92ZXJ0LnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9saW5rX3Byb2dyYW0vdW5zdWNjZXNzZnVs
Y29tcGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA0YzIxZWZlMzM1YzJkODE1YTQ1ZDA0NmU1
OTk1ZGU2NjJlNzgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL2xpbmtfcHJv
Z3JhbS91bnN1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVydApAQCAtMCwwICsxLDQzIEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
MyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0MyBn
dGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIGZsb2F0IGxp
Z2h0SW50ZW5zaXR5OwordmFyeWluZyB2ZWMzICBQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTGln
aHRQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTm90QWN0aXZlT25lOworYXR0cmlidXRlIGZsb2F0
IG15QXR0cmlidXRlMTsKK2F0dHJpYnV0ZSBmbG9hdCBteUF0dHJpYnV0ZTI7CisKK2NvbnN0IGZs
b2F0IHNwZWN1bGFyQ29udHJpYnV0aW9uID0gMC43OworY29uc3QgZmxvYXQgZGlmZnVzZUNvbnRy
aWJ1dGlvbiAgPSAoMS4wIC0gc3BlY3VsYXJDb250cmlidXRpb24pOworCit2b2lkIG1haW4odm9p
ZCkgeworICAgIHZlYzQgcG9zICAgICAgICA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVy
dGV4X0NvbG9yOworICAgIFBvc2l0aW9uICAgICAgICA9IHZlYzMoZ3RmX1ZlcnRleCk7CisgICAg
dmVjMyB0bm9ybSAgICAgID0gbm9ybWFsaXplKGd0Zl9Ob3JtYWxNYXRyaXggKiBndGZfTm9ybWFs
KTsKKyAgICB2ZWMzIGxpZ2h0VmVjICAgPSBub3JtYWxpemUoTGlnaHRQb3NpdGlvbiAtIHZlYzMo
cG9zKSk7CisgICAgdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdChsaWdodFZlYywgdG5vcm0pOwor
ICAgIHZlYzMgdmlld1ZlYyAgICA9IG5vcm1hbGl6ZSh2ZWMzKHBvcykpOworCisJLy9mbG9hdCBz
cGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCAwLjAsIDEuMCk7CisJZmxvYXQg
c3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVjKSwgbXlBdHRyaWJ1dGUxLCBteUF0
dHJpYnV0ZTIpOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNw
ZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKwor
ICAgIGxpZ2h0SW50ZW5zaXR5ID0gZGlmZnVzZUNvbnRyaWJ1dGlvbiAqIGRvdChsaWdodFZlYywg
dG5vcm0pICsKKyAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyQ29udHJpYnV0aW9uICogc3Bl
YzsKKyAgICAKKyAgICBnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4
ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3ByZWNpc2lvbl9z
cGVjaWZpZXJzL3ByZWNpc2lvbl9zcGVjaWZpZXJzLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9wcmVj
aXNpb25fc3BlY2lmaWVycy9wcmVjaXNpb25fc3BlY2lmaWVycy5mcmFnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAx
ZmFlNWIyNWZhNzUyZTFkMzg3NzFiZDhkOWVjYjJmMDdkNGJlNmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9vZ2xlcy9HTDJUZXN0cy9wcmVjaXNpb25fc3BlY2lmaWVycy9wcmVjaXNpb25fc3BlY2lmaWVy
cy5mcmFnCkBAIC0wLDAgKzEsMTQgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK3ZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4g
KHZvaWQpCit7CisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9H
TDJUZXN0cy9wcmVjaXNpb25fc3BlY2lmaWVycy9wcmVjaXNpb25fc3BlY2lmaWVycy52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvcHJlY2lzaW9uX3NwZWNpZmllcnMvcHJlY2lzaW9uX3NwZWNpZmllcnMu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYzY4ZmMzODgxMzRmNTIzYzhmNWU0YmZkMzc4ZTVmMGIwZWNiYWUz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvcHJlY2lzaW9uX3NwZWNpZmllcnMv
cHJlY2lzaW9uX3NwZWNpZmllcnMudmVydApAQCAtMCwwICsxLDI1IEBACisKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgaGlnaHAgdmVjNCBn
dGZfQ29sb3I7CithdHRyaWJ1dGUgaGlnaHAgdmVjNCBndGZfVmVydGV4OwordW5pZm9ybSBoaWdo
cCBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4OwordmFyeWluZyBoaWdocCB2ZWM0
IGNvbG9yOworCit2b2lkIG1haW4gKHZvaWQpCit7CisJbWVkaXVtcCBpbnQgeCA9IDU7CisJbG93
cCBpbnQgeSA9IDM7CisJbWVkaXVtcCBmbG9hdCB4MiA9IDUuMDsKKwlsb3dwIGZsb2F0IHkyID0g
MS4wOworCQorCWNvbG9yID0gdmVjNCh4ICsgeSwgeDIgKiB5MiwgeCwgMS4wKTsKKwkKKwljb2xv
ciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb3NpdGlvbiA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0
cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3JlbGlua19w
cm9ncmFtL3NpbXBsZS5mcmFnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvcmVsaW5rX3Byb2dyYW0vc2ltcGxl
LmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODYzYWNmMTc3NjVhZDQzMTAxNmQ4ZDg1YTFkOGU3NjhmMGM0MDdh
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3JlbGlua19wcm9ncmFtL3NpbXBs
ZS5mcmFnCkBAIC0wLDAgKzEsMTcgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisj
ZW5kaWYKK3ZhcnlpbmcgdmVjNCB0YzsKKwordm9pZCBtYWluICh2b2lkKQoreworCWdsX0ZyYWdD
b2xvciA9IHRjOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL3JlbGlua19wcm9ncmFtL3NpbXBsZS52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
cmVsaW5rX3Byb2dyYW0vc2ltcGxlLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUzY2ZlYjRkZGQ1NjBmYjAy
OWEzNDM4Mjg4OGRjMTBmOTg3OGJiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L3JlbGlua19wcm9ncmFtL3NpbXBsZS52ZXJ0CkBAIC0wLDAgKzEsMjAgQEAKKworLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9W
ZXJ0ZXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CithdHRy
aWJ1dGUgZmxvYXQgZ3RmX0NvbG9yOworCit2YXJ5aW5nIHZlYzQgdGM7CisKK3ZvaWQgbWFpbiAo
dm9pZCkKK3sKKwl0YyA9IHZlYzQoZ3RmX0NvbG9yLCAwLjAsIDAuMCwgMS4wKTsKKworCWdsX1Bv
c2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3No
YWRlcl9zb3VyY2Uvc3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFnIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMv
c2hhZGVyX3NvdXJjZS9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1
MWIwN2YwM2U3ZjU0OGE0MGY3ODdhNTgwODY0ZDYxYWE3Mjk4MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L29nbGVzL0dMMlRlc3RzL3NoYWRlcl9zb3VyY2Uvc3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFn
CkBAIC0wLDAgKzEsNDYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCisKKyNpZmRlZiBHTF9FUworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYK
K3VuaWZvcm0gZmxvYXQJbW9ydGFyVGhpY2tuZXNzOwordW5pZm9ybSB2ZWMzCWJyaWNrQ29sb3I7
Cit1bmlmb3JtIHZlYzMJbW9ydGFyQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJX
aWR0aDsKK3VuaWZvcm0gZmxvYXQJYnJpY2tNb3J0YXJIZWlnaHQ7Cit1bmlmb3JtIGZsb2F0CW13
ZjsKK3VuaWZvcm0gZmxvYXQJbWhmOworCit2YXJ5aW5nIHZlYzMgIFBvc2l0aW9uOwordmFyeWlu
ZyBmbG9hdCBsaWdodEludGVuc2l0eTsKKwordm9pZCBtYWluICh2b2lkKQoreworICAgIHZlYzMJ
Y3Q7CisgICAgZmxvYXQJc3MsIHR0LCB3LCBoOworCisgICAgdmVjMyBwb3MgPSBQb3NpdGlvbjsK
KyAgICAKKyAgICBzcyA9IHBvcy54IC8gYnJpY2tNb3J0YXJXaWR0aDsKKyAgICB0dCA9IHBvcy56
IC8gYnJpY2tNb3J0YXJIZWlnaHQ7CisKKyAgICBpZiAoZnJhY3QgKHR0ICogMC41KSA+IDAuNSkK
KyAgICAgICAgc3MgKz0gMC41OworCisgICAgc3MgPSBmcmFjdCAoc3MpOworICAgIHR0ID0gZnJh
Y3QgKHR0KTsKKworICAgIHcgPSBzdGVwIChtd2YsIHNzKSAtIHN0ZXAgKDEuMCAtIG13Ziwgc3Mp
OworICAgIGggPSBzdGVwIChtaGYsIHR0KSAtIHN0ZXAgKDEuMCAtIG1oZiwgdHQpOworCisgICAg
Y3QgPSBjbGFtcChtaXggKG1vcnRhckNvbG9yLCBicmlja0NvbG9yLCB3ICogaCkgKiBsaWdodElu
dGVuc2l0eSwgMC4wLCAxLjApOworCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAoY3QsIDEuMCk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9zaGFkZXJfc291cmNlL3N1Y2Nlc3NmdWxj
b21waWxlX3ZlcnQudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3NoYWRlcl9zb3VyY2Uvc3VjY2Vzc2Z1
bGNvbXBpbGVfdmVydC52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZmFmODY5OGJjNjJmZmU0ZThmOWVmNTM2
NDY0NTFhYThlM2JiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9zaGFkZXJf
c291cmNlL3N1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVydApAQCAtMCwwICsxLDI2IEBACisKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCithdHRyaWJ1dGUgdmVj
MyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3RmX1ZlcnRleDsKK3VuaWZvcm0gbWF0MyBn
dGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlm
b3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXg7CisKK3ZhcnlpbmcgZmxvYXQg
bGlnaHRJbnRlbnNpdHk7Cit2YXJ5aW5nIHZlYzMgUG9zaXRpb247Cit1bmlmb3JtIHZlYzMgTGln
aHRQb3NpdGlvbjsKK3VuaWZvcm0gZmxvYXQgU2NhbGU7CisKK3ZvaWQgbWFpbih2b2lkKSB7CisJ
dmVjNCBwb3MgPSBndGZfTW9kZWxWaWV3TWF0cml4ICogZ3RmX1ZlcnRleDsKKwlQb3NpdGlvbiA9
IHZlYzMoZ3RmX1ZlcnRleCkgKiBTY2FsZTsKKwl2ZWMzIHRub3JtID0gbm9ybWFsaXplKGd0Zl9O
b3JtYWxNYXRyaXggKiBndGZfTm9ybWFsKTsKKwlsaWdodEludGVuc2l0eSA9IGRvdChub3JtYWxp
emUoTGlnaHRQb3NpdGlvbiAtIHZlYzMocG9zKSksIHRub3JtKSAqIDEuNTsKKwlnbF9Qb3NpdGlv
biA9IGd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL29nbGVzL0dMMlRlc3RzL3NoYWRlcl9zb3VyY2UvdW5zdWNjZXNzZnVsY29tcGlsZV9m
cmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9zaGFkZXJfc291cmNlL3Vuc3VjY2Vzc2Z1bGNvbXBp
bGVfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmM2ZlNzk3YjJkYTdkZTA5NzMzNzE2ZjNjYjY0Njg3
OWJkYjRiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy9zaGFkZXJfc291cmNl
L3Vuc3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFnCkBAIC0wLDAgKzEsNjYgQEAKKworLyoKK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKKyNpZmRlZiBHTF9FUworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisjZW5kaWYKK3VuaWZvcm0gZmxvYXQgR3JhaW5TaXplOwor
dW5pZm9ybSB2ZWMzICBEYXJrQ29sb3I7Cit1bmlmb3JtIHZlYzMgIGNvbG9yU3ByZWFkOworCit2
YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OyAKK3ZhcnlpbmcgdmVjMyBQb3NpdGlvbjsKKwor
dm9pZCBtYWluICh2b2lkKQoreworICAgIC8vCisgICAgLy8gY2hlYXAgbm9pc2UKKyAgICAvLwor
ICAgIHZlYzMgbG9jYXRpb24gPSBQb3NpdGlvbjsKKworICAgIHZlYzMgZmxvb3J2ZWMgPSB2ZWMz
KGZsb29yKFBvc2l0aW9uLnggKiAxMC4wKSwgMC4wLCBmbG9vcihQb3NpdGlvbi56ICogMTAuMCkp
OworICAgIHZlYzMgbm9pc2UgPSBQb3NpdGlvbiAqIDEwLjAgLSBmbG9vcnZlYyAtIDAuNTsKKyAg
ICBub2lzZSAqPSBub2lzZTsKKyAgICBsb2NhdGlvbiArPSBub2lzZSAqIDAuMTI7CisKKyAgICAv
LworICAgIC8vIGRpc3RhbmNlIGZyb20gYXhpcworICAgIC8vCisgICAgZmxvYXQgZGlzdCA9IGxv
Y2F0aW9uLnggKiBsb2NhdGlvbi54ICsgbG9jYXRpb24ueiAqIGxvY2F0aW9uLno7CisgICAgZmxv
YXQgZ3JhaW4gPSBkaXN0IC8gR3JhaW5TaXplOworCisgICAgLy8KKyAgICAvLyBncmFpbiBlZmZl
Y3RzIGFzIGZ1bmN0aW9uIG9mIGRpc3RhbmNlCisgICAgLy8KKyAgICBmbG9hdCBicmlnaHRuZXNz
ID0gZnJhY3QoZ3JhaW4pOworICAgIGlmIChicmlnaHRuZXNzID4gMC41KSAKKyAgICAgICAgYnJp
Z2h0bmVzcyA9ICgxLjAgLSBicmlnaHRuZXNzKTsKKyAgICB2ZWMzIGNvbG9yID0gRGFya0NvbG9y
ICsgMC41ICogYnJpZ2h0bmVzcyAqIChjb2xvclNwcmVhZCk7CisgICAgCisgICAgYnJpZ2h0bmVz
cyA9IGZyYWN0KGdyYWluKjcuMCk7ICAgIAorICAgIGlmIChicmlnaHRuZXNzID4gMC41KSAKKyAg
ICAgICAgYnJpZ2h0bmVzcyA9IDEuMCAtIGJyaWdodG5lc3M7CisgICAgY29sb3IgLT0gMC41ICog
YnJpZ2h0bmVzcyAqIGNvbG9yU3ByZWFkOworCisgICAgLy8KKyAgICAvLyBhbHNvIGFzIGEgZnVu
Y3Rpb24gb2YgbGluZXMgcGFyYWxsZWwgdG8gdGhlIGF4aXMKKyAgICAvLworICAgIGJyaWdodG5l
c3MgPSBmcmFjdChncmFpbio0Ny4wKTsKKyAgICBmbG9hdCBsaW5lID0gZnJhY3QoUG9zaXRpb24u
eiArIFBvc2l0aW9uLngpOworICAgIGZsb2F0IHNuYXAgPSBmbG9vcihsaW5lICogMzAuMCkgKiAo
MS4wLzMwLjApOworICAgIGlmIChsaW5lIDwgc25hcCArIDAuMDA0KQorICAgICAgICBjb2xvciAt
PSAwLjUgKiBicmlnaHRuZXNzICogY29sb3JTcHJlYWQ7CisKKyAgICAvLworICAgIC8vIGFwcGx5
IGxpZ2h0aW5nIGVmZmVjdHMgZnJvbSB2ZXJ0ZXggcHJvY2Vzc29yCisgICAgLy8KKyAgICBjb2xv
ciAqPSBsaWdodEludGVuc2l0eTsKKyAgICBjb2xvciA9IGNsYW1wKGNvbG9yLCAwLjAsIDEuMCk7
IAorCisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgMC4xKQorfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvc2hhZGVyX3NvdXJjZS91bnN1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVy
dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL29nbGVzL0dMMlRlc3RzL3NoYWRlcl9zb3VyY2UvdW5zdWNjZXNzZnVsY29tcGlsZV92ZXJ0
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTE0MDQyYmQ4Zjg2ZThjNDdjNTBmNzAxZjk1MmNlNDYzNDE1YmU0
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3NoYWRlcl9zb3VyY2UvdW5zdWNj
ZXNzZnVsY29tcGlsZV92ZXJ0LnZlcnQKQEAgLTAsMCArMSw0NCBAQAorCisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1h
bDsKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
X0NvbG9yOwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3Rm
X01vZGVsVmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7Cit2YXJ5aW5nIHZlYzMgIFBvc2l0
aW9uOwordW5pZm9ybSB2ZWMzICBMaWdodFBvc2l0aW9uOwordW5pZm9ybSB2ZWMzICBOb3RBY3Rp
dmVPbmU7CithdHRyaWJ1dGUgZmxvYXQgbXlBdHRyaWJ1dGUxOworYXR0cmlidXRlIGZsb2F0IG15
QXR0cmlidXRlMjsKKworY29uc3QgZmxvYXQgc3BlY3VsYXJDb250cmlidXRpb24gPSAwLjc7Citj
b25zdCBmbG9hdCBkaWZmdXNlQ29udHJpYnV0aW9uICA9ICgxLjAgLSBzcGVjdWxhckNvbnRyaWJ1
dGlvbik7CisKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgdmVjNCBwb3MgICAgICAgID0gZ3RmX01v
ZGVsVmlld01hdHJpeCAqIGd0Zl9WZXJ0ZXhfQ29sb3I7CisgICAgUG9zaXRpb24gICAgICAgID0g
dmVjMyhndGZfVmVydGV4KTsKKyAgICB2ZWMzIHRub3JtICAgICAgPSBub3JtYWxpemUoZ3RmX05v
cm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworICAgIHZlYzMgbGlnaHRWZWMgICA9IG5vcm1hbGl6
ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpOworICAgIHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxl
Y3QobGlnaHRWZWMsIHRub3JtKTsKKyAgICB2ZWMzIHZpZXdWZWMgICAgPSBub3JtYWxpemUodmVj
Myhwb3MpKTsKKworCS8vZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3VmVj
KSwgMC4wLCAxLjApOworCWZsb2F0IHNwZWMgPSBjbGFtcChkb3QocmVmbGVjdFZlYywgdmlld1Zl
YyksIG15QXR0cmlidXRlMSwgbXlBdHRyaWJ1dGUyKTsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7
CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBzcGVjICogc3BlYzsKKyAgICBz
cGVjID0gc3BlYyAqIHNwZWM7CisKKyAgICBsaWdodEludGVuc2l0eSA9IGRpZmZ1c2VDb250cmli
dXRpb24gKiBkb3QobGlnaHRWZWMsIHRub3JtKSArCisgICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhckNvbnRyaWJ1dGlvbiAqIHNwZWM7CisgICAgCisgICAgZ2xfUG9zaXRpb24gPSBndGZfTW9k
ZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xl
cy9HTDJUZXN0cy90aHJlZV91bmlmb3Jtcy80Zl9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy90
aHJlZV91bmlmb3Jtcy80Zl9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA0OTNlOTE1ODQ0ZDgzYjY4
NzU2OGU3YjU3MDY3NDY5NjAyY2ViNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L3RocmVlX3VuaWZvcm1zLzRmX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDIyIEBACisKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIHZlYzQgY29sb3I7Cit1bmlmb3Jt
IGl2ZWM0IGljb2xvcjsKK3VuaWZvcm0gYm9vbCBmbGFnOworCit2b2lkIG1haW4gKHZvaWQpCit7
CisJaWYoZmxhZykKKwkJZ2xfRnJhZ0NvbG9yID0gdmVjNCAoaWNvbG9yWzBdLCBpY29sb3JbMV0s
IGljb2xvclsyXSwgaWNvbG9yWzNdKTsKKwllbHNlCisJCWdsX0ZyYWdDb2xvciA9IHZlYzQgKGNv
bG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdKTsKK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy91c2VfcHJvZ3JhbS9zdWNj
ZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy91c2VfcHJvZ3JhbS9zdWNj
ZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1MWIwN2YwM2U3ZjU0OGE0MGY3
ODdhNTgwODY0ZDYxYWE3Mjk4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3Vz
ZV9wcm9ncmFtL3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZwpAQCAtMCwwICsxLDQ2IEBACisK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworCisjaWZkZWYgR0xf
RVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1bmlmb3JtIGZsb2F0CW1vcnRh
clRoaWNrbmVzczsKK3VuaWZvcm0gdmVjMwlicmlja0NvbG9yOwordW5pZm9ybSB2ZWMzCW1vcnRh
ckNvbG9yOworCit1bmlmb3JtIGZsb2F0CWJyaWNrTW9ydGFyV2lkdGg7Cit1bmlmb3JtIGZsb2F0
CWJyaWNrTW9ydGFySGVpZ2h0OwordW5pZm9ybSBmbG9hdAltd2Y7Cit1bmlmb3JtIGZsb2F0CW1o
ZjsKKwordmFyeWluZyB2ZWMzICBQb3NpdGlvbjsKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNp
dHk7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKyAgICB2ZWMzCWN0OworICAgIGZsb2F0CXNzLCB0
dCwgdywgaDsKKworICAgIHZlYzMgcG9zID0gUG9zaXRpb247CisgICAgCisgICAgc3MgPSBwb3Mu
eCAvIGJyaWNrTW9ydGFyV2lkdGg7CisgICAgdHQgPSBwb3MueiAvIGJyaWNrTW9ydGFySGVpZ2h0
OworCisgICAgaWYgKGZyYWN0ICh0dCAqIDAuNSkgPiAwLjUpCisgICAgICAgIHNzICs9IDAuNTsK
KworICAgIHNzID0gZnJhY3QgKHNzKTsKKyAgICB0dCA9IGZyYWN0ICh0dCk7CisKKyAgICB3ID0g
c3RlcCAobXdmLCBzcykgLSBzdGVwICgxLjAgLSBtd2YsIHNzKTsKKyAgICBoID0gc3RlcCAobWhm
LCB0dCkgLSBzdGVwICgxLjAgLSBtaGYsIHR0KTsKKworICAgIGN0ID0gY2xhbXAobWl4IChtb3J0
YXJDb2xvciwgYnJpY2tDb2xvciwgdyAqIGgpICogbGlnaHRJbnRlbnNpdHksIDAuMCwgMS4wKTsK
KworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQgKGN0LCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvdXNlX3Byb2dyYW0vc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvdXNlX3Byb2dyYW0vc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5ZmFmODY5OGJjNjJmZmU0ZThmOWVmNTM2NDY0NTFhYThlM2JiZGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy91c2VfcHJvZ3JhbS9zdWNjZXNzZnVsY29tcGlsZV92
ZXJ0LnZlcnQKQEAgLTAsMCArMSwyNiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworYXR0cmlidXRlIHZlYzMgZ3RmX05vcm1hbDsKK2F0dHJpYnV0ZSB2
ZWM0IGd0Zl9WZXJ0ZXg7Cit1bmlmb3JtIG1hdDMgZ3RmX05vcm1hbE1hdHJpeDsKK3VuaWZvcm0g
bWF0NCBndGZfTW9kZWxWaWV3TWF0cml4OwordW5pZm9ybSBtYXQ0IGd0Zl9Nb2RlbFZpZXdQcm9q
ZWN0aW9uTWF0cml4OworCit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWluZyB2
ZWMzIFBvc2l0aW9uOwordW5pZm9ybSB2ZWMzIExpZ2h0UG9zaXRpb247Cit1bmlmb3JtIGZsb2F0
IFNjYWxlOworCit2b2lkIG1haW4odm9pZCkgeworCXZlYzQgcG9zID0gZ3RmX01vZGVsVmlld01h
dHJpeCAqIGd0Zl9WZXJ0ZXg7CisJUG9zaXRpb24gPSB2ZWMzKGd0Zl9WZXJ0ZXgpICogU2NhbGU7
CisJdmVjMyB0bm9ybSA9IG5vcm1hbGl6ZShndGZfTm9ybWFsTWF0cml4ICogZ3RmX05vcm1hbCk7
CisJbGlnaHRJbnRlbnNpdHkgPSBkb3Qobm9ybWFsaXplKExpZ2h0UG9zaXRpb24gLSB2ZWMzKHBv
cykpLCB0bm9ybSkgKiAxLjU7CisJZ2xfUG9zaXRpb24gPSBndGZfTW9kZWxWaWV3UHJvamVjdGlv
bk1hdHJpeCAqIGd0Zl9WZXJ0ZXg7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy91c2Vf
cHJvZ3JhbS91bnN1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3Vz
ZV9wcm9ncmFtL3Vuc3VjY2Vzc2Z1bGNvbXBpbGVfZnJhZy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmM2Zl
Nzk3YjJkYTdkZTA5NzMzNzE2ZjNjYjY0Njg3OWJkYjRiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9v
Z2xlcy9HTDJUZXN0cy91c2VfcHJvZ3JhbS91bnN1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZwpA
QCAtMCwwICsxLDY2IEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworCisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworI2VuZGlmCit1
bmlmb3JtIGZsb2F0IEdyYWluU2l6ZTsKK3VuaWZvcm0gdmVjMyAgRGFya0NvbG9yOwordW5pZm9y
bSB2ZWMzICBjb2xvclNwcmVhZDsKKwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsgCit2
YXJ5aW5nIHZlYzMgUG9zaXRpb247CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKyAgICAvLworICAg
IC8vIGNoZWFwIG5vaXNlCisgICAgLy8KKyAgICB2ZWMzIGxvY2F0aW9uID0gUG9zaXRpb247CisK
KyAgICB2ZWMzIGZsb29ydmVjID0gdmVjMyhmbG9vcihQb3NpdGlvbi54ICogMTAuMCksIDAuMCwg
Zmxvb3IoUG9zaXRpb24ueiAqIDEwLjApKTsKKyAgICB2ZWMzIG5vaXNlID0gUG9zaXRpb24gKiAx
MC4wIC0gZmxvb3J2ZWMgLSAwLjU7CisgICAgbm9pc2UgKj0gbm9pc2U7CisgICAgbG9jYXRpb24g
Kz0gbm9pc2UgKiAwLjEyOworCisgICAgLy8KKyAgICAvLyBkaXN0YW5jZSBmcm9tIGF4aXMKKyAg
ICAvLworICAgIGZsb2F0IGRpc3QgPSBsb2NhdGlvbi54ICogbG9jYXRpb24ueCArIGxvY2F0aW9u
LnogKiBsb2NhdGlvbi56OworICAgIGZsb2F0IGdyYWluID0gZGlzdCAvIEdyYWluU2l6ZTsKKwor
ICAgIC8vCisgICAgLy8gZ3JhaW4gZWZmZWN0cyBhcyBmdW5jdGlvbiBvZiBkaXN0YW5jZQorICAg
IC8vCisgICAgZmxvYXQgYnJpZ2h0bmVzcyA9IGZyYWN0KGdyYWluKTsKKyAgICBpZiAoYnJpZ2h0
bmVzcyA+IDAuNSkgCisgICAgICAgIGJyaWdodG5lc3MgPSAoMS4wIC0gYnJpZ2h0bmVzcyk7Cisg
ICAgdmVjMyBjb2xvciA9IERhcmtDb2xvciArIDAuNSAqIGJyaWdodG5lc3MgKiAoY29sb3JTcHJl
YWQpOworICAgIAorICAgIGJyaWdodG5lc3MgPSBmcmFjdChncmFpbio3LjApOyAgICAKKyAgICBp
ZiAoYnJpZ2h0bmVzcyA+IDAuNSkgCisgICAgICAgIGJyaWdodG5lc3MgPSAxLjAgLSBicmlnaHRu
ZXNzOworICAgIGNvbG9yIC09IDAuNSAqIGJyaWdodG5lc3MgKiBjb2xvclNwcmVhZDsKKworICAg
IC8vCisgICAgLy8gYWxzbyBhcyBhIGZ1bmN0aW9uIG9mIGxpbmVzIHBhcmFsbGVsIHRvIHRoZSBh
eGlzCisgICAgLy8KKyAgICBicmlnaHRuZXNzID0gZnJhY3QoZ3JhaW4qNDcuMCk7CisgICAgZmxv
YXQgbGluZSA9IGZyYWN0KFBvc2l0aW9uLnogKyBQb3NpdGlvbi54KTsKKyAgICBmbG9hdCBzbmFw
ID0gZmxvb3IobGluZSAqIDMwLjApICogKDEuMC8zMC4wKTsKKyAgICBpZiAobGluZSA8IHNuYXAg
KyAwLjAwNCkKKyAgICAgICAgY29sb3IgLT0gMC41ICogYnJpZ2h0bmVzcyAqIGNvbG9yU3ByZWFk
OworCisgICAgLy8KKyAgICAvLyBhcHBseSBsaWdodGluZyBlZmZlY3RzIGZyb20gdmVydGV4IHBy
b2Nlc3NvcgorICAgIC8vCisgICAgY29sb3IgKj0gbGlnaHRJbnRlbnNpdHk7CisgICAgY29sb3Ig
PSBjbGFtcChjb2xvciwgMC4wLCAxLjApOyAKKworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29s
b3IsIDAuMSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3VzZV9wcm9ncmFtL3Vuc3Vj
Y2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvdXNlX3Byb2dyYW0vdW5z
dWNjZXNzZnVsY29tcGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA0YzIxZWZlMzM1YzJkODE1
YTQ1ZDA0NmU1OTk1ZGU2NjJlNzgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3Rz
L3VzZV9wcm9ncmFtL3Vuc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBAIC0wLDAgKzEsNDMg
QEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJp
YnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4OwordW5pZm9y
bSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld01hdHJp
eDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKK3Zhcnlpbmcg
ZmxvYXQgbGlnaHRJbnRlbnNpdHk7Cit2YXJ5aW5nIHZlYzMgIFBvc2l0aW9uOwordW5pZm9ybSB2
ZWMzICBMaWdodFBvc2l0aW9uOwordW5pZm9ybSB2ZWMzICBOb3RBY3RpdmVPbmU7CithdHRyaWJ1
dGUgZmxvYXQgbXlBdHRyaWJ1dGUxOworYXR0cmlidXRlIGZsb2F0IG15QXR0cmlidXRlMjsKKwor
Y29uc3QgZmxvYXQgc3BlY3VsYXJDb250cmlidXRpb24gPSAwLjc7Citjb25zdCBmbG9hdCBkaWZm
dXNlQ29udHJpYnV0aW9uICA9ICgxLjAgLSBzcGVjdWxhckNvbnRyaWJ1dGlvbik7CisKK3ZvaWQg
bWFpbih2b2lkKSB7CisgICAgdmVjNCBwb3MgICAgICAgID0gZ3RmX01vZGVsVmlld01hdHJpeCAq
IGd0Zl9WZXJ0ZXhfQ29sb3I7CisgICAgUG9zaXRpb24gICAgICAgID0gdmVjMyhndGZfVmVydGV4
KTsKKyAgICB2ZWMzIHRub3JtICAgICAgPSBub3JtYWxpemUoZ3RmX05vcm1hbE1hdHJpeCAqIGd0
Zl9Ob3JtYWwpOworICAgIHZlYzMgbGlnaHRWZWMgICA9IG5vcm1hbGl6ZShMaWdodFBvc2l0aW9u
IC0gdmVjMyhwb3MpKTsKKyAgICB2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KGxpZ2h0VmVjLCB0
bm9ybSk7CisgICAgdmVjMyB2aWV3VmVjICAgID0gbm9ybWFsaXplKHZlYzMocG9zKSk7CisKKwkv
L2Zsb2F0IHNwZWMgPSBjbGFtcChkb3QocmVmbGVjdFZlYywgdmlld1ZlYyksIDAuMCwgMS4wKTsK
KwlmbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdWZWMpLCBteUF0dHJpYnV0
ZTEsIG15QXR0cmlidXRlMik7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAgIHNwZWMgPSBz
cGVjICogc3BlYzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBz
cGVjOworCisgICAgbGlnaHRJbnRlbnNpdHkgPSBkaWZmdXNlQ29udHJpYnV0aW9uICogZG90KGxp
Z2h0VmVjLCB0bm9ybSkgKworICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJDb250cmlidXRp
b24gKiBzcGVjOworICAgIAorICAgIGdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvdmFs
aWRhdGVfcHJvZ3JhbS9zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0
cy92YWxpZGF0ZV9wcm9ncmFtL3N1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMjUxYjA3ZjAzZTdmNTQ4YTQwZjc4N2E1ODA4NjRkNjFhYTcyOTgzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvb2dsZXMvR0wyVGVzdHMvdmFsaWRhdGVfcHJvZ3JhbS9zdWNjZXNzZnVsY29tcGlsZV9m
cmFnLmZyYWcKQEAgLTAsMCArMSw0NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyNlbmRpZgordW5pZm9ybSBmbG9hdAltb3J0YXJUaGlja25lc3M7Cit1bmlmb3JtIHZlYzMJYnJp
Y2tDb2xvcjsKK3VuaWZvcm0gdmVjMwltb3J0YXJDb2xvcjsKKwordW5pZm9ybSBmbG9hdAlicmlj
a01vcnRhcldpZHRoOwordW5pZm9ybSBmbG9hdAlicmlja01vcnRhckhlaWdodDsKK3VuaWZvcm0g
ZmxvYXQJbXdmOwordW5pZm9ybSBmbG9hdAltaGY7CisKK3ZhcnlpbmcgdmVjMyAgUG9zaXRpb247
Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OworCit2b2lkIG1haW4gKHZvaWQpCit7Cisg
ICAgdmVjMwljdDsKKyAgICBmbG9hdAlzcywgdHQsIHcsIGg7CisKKyAgICB2ZWMzIHBvcyA9IFBv
c2l0aW9uOworICAgIAorICAgIHNzID0gcG9zLnggLyBicmlja01vcnRhcldpZHRoOworICAgIHR0
ID0gcG9zLnogLyBicmlja01vcnRhckhlaWdodDsKKworICAgIGlmIChmcmFjdCAodHQgKiAwLjUp
ID4gMC41KQorICAgICAgICBzcyArPSAwLjU7CisKKyAgICBzcyA9IGZyYWN0IChzcyk7CisgICAg
dHQgPSBmcmFjdCAodHQpOworCisgICAgdyA9IHN0ZXAgKG13Ziwgc3MpIC0gc3RlcCAoMS4wIC0g
bXdmLCBzcyk7CisgICAgaCA9IHN0ZXAgKG1oZiwgdHQpIC0gc3RlcCAoMS4wIC0gbWhmLCB0dCk7
CisKKyAgICBjdCA9IGNsYW1wKG1peCAobW9ydGFyQ29sb3IsIGJyaWNrQ29sb3IsIHcgKiBoKSAq
IGxpZ2h0SW50ZW5zaXR5LCAwLjAsIDEuMCk7CisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0IChj
dCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3ZhbGlkYXRlX3Byb2dyYW0v
c3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvdmFsaWRhdGVfcHJv
Z3JhbS9zdWNjZXNzZnVsY29tcGlsZV92ZXJ0LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmYWY4Njk4YmM2
MmZmZTRlOGY5ZWY1MzY0NjQ1MWFhOGUzYmJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dM
MlRlc3RzL3ZhbGlkYXRlX3Byb2dyYW0vc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0CkBAIC0w
LDAgKzEsMjYgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisKK2F0dHJpYnV0ZSB2ZWMzIGd0Zl9Ob3JtYWw7CithdHRyaWJ1dGUgdmVjNCBndGZfVmVydGV4
OwordW5pZm9ybSBtYXQzIGd0Zl9Ob3JtYWxNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVs
Vmlld01hdHJpeDsKK3VuaWZvcm0gbWF0NCBndGZfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsK
KwordmFyeWluZyBmbG9hdCBsaWdodEludGVuc2l0eTsKK3ZhcnlpbmcgdmVjMyBQb3NpdGlvbjsK
K3VuaWZvcm0gdmVjMyBMaWdodFBvc2l0aW9uOwordW5pZm9ybSBmbG9hdCBTY2FsZTsKKwordm9p
ZCBtYWluKHZvaWQpIHsKKwl2ZWM0IHBvcyA9IGd0Zl9Nb2RlbFZpZXdNYXRyaXggKiBndGZfVmVy
dGV4OworCVBvc2l0aW9uID0gdmVjMyhndGZfVmVydGV4KSAqIFNjYWxlOworCXZlYzMgdG5vcm0g
PSBub3JtYWxpemUoZ3RmX05vcm1hbE1hdHJpeCAqIGd0Zl9Ob3JtYWwpOworCWxpZ2h0SW50ZW5z
aXR5ID0gZG90KG5vcm1hbGl6ZShMaWdodFBvc2l0aW9uIC0gdmVjMyhwb3MpKSwgdG5vcm0pICog
MS41OworCWdsX1Bvc2l0aW9uID0gZ3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZf
VmVydGV4OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvdmFsaWRhdGVfcHJvZ3JhbS91
bnN1Y2Nlc3NmdWxjb21waWxlX2ZyYWcuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3ZhbGlkYXRlX3By
b2dyYW0vdW5zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzZmU3OTdi
MmRhN2RlMDk3MzM3MTZmM2NiNjQ2ODc5YmRiNGI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVz
L0dMMlRlc3RzL3ZhbGlkYXRlX3Byb2dyYW0vdW5zdWNjZXNzZnVsY29tcGlsZV9mcmFnLmZyYWcK
QEAgLTAsMCArMSw2NiBAQAorCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKworI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyNlbmRpZgor
dW5pZm9ybSBmbG9hdCBHcmFpblNpemU7Cit1bmlmb3JtIHZlYzMgIERhcmtDb2xvcjsKK3VuaWZv
cm0gdmVjMyAgY29sb3JTcHJlYWQ7CisKK3ZhcnlpbmcgZmxvYXQgbGlnaHRJbnRlbnNpdHk7IAor
dmFyeWluZyB2ZWMzIFBvc2l0aW9uOworCit2b2lkIG1haW4gKHZvaWQpCit7CisgICAgLy8KKyAg
ICAvLyBjaGVhcCBub2lzZQorICAgIC8vCisgICAgdmVjMyBsb2NhdGlvbiA9IFBvc2l0aW9uOwor
CisgICAgdmVjMyBmbG9vcnZlYyA9IHZlYzMoZmxvb3IoUG9zaXRpb24ueCAqIDEwLjApLCAwLjAs
IGZsb29yKFBvc2l0aW9uLnogKiAxMC4wKSk7CisgICAgdmVjMyBub2lzZSA9IFBvc2l0aW9uICog
MTAuMCAtIGZsb29ydmVjIC0gMC41OworICAgIG5vaXNlICo9IG5vaXNlOworICAgIGxvY2F0aW9u
ICs9IG5vaXNlICogMC4xMjsKKworICAgIC8vCisgICAgLy8gZGlzdGFuY2UgZnJvbSBheGlzCisg
ICAgLy8KKyAgICBmbG9hdCBkaXN0ID0gbG9jYXRpb24ueCAqIGxvY2F0aW9uLnggKyBsb2NhdGlv
bi56ICogbG9jYXRpb24uejsKKyAgICBmbG9hdCBncmFpbiA9IGRpc3QgLyBHcmFpblNpemU7CisK
KyAgICAvLworICAgIC8vIGdyYWluIGVmZmVjdHMgYXMgZnVuY3Rpb24gb2YgZGlzdGFuY2UKKyAg
ICAvLworICAgIGZsb2F0IGJyaWdodG5lc3MgPSBmcmFjdChncmFpbik7CisgICAgaWYgKGJyaWdo
dG5lc3MgPiAwLjUpIAorICAgICAgICBicmlnaHRuZXNzID0gKDEuMCAtIGJyaWdodG5lc3MpOwor
ICAgIHZlYzMgY29sb3IgPSBEYXJrQ29sb3IgKyAwLjUgKiBicmlnaHRuZXNzICogKGNvbG9yU3By
ZWFkKTsKKyAgICAKKyAgICBicmlnaHRuZXNzID0gZnJhY3QoZ3JhaW4qNy4wKTsgICAgCisgICAg
aWYgKGJyaWdodG5lc3MgPiAwLjUpIAorICAgICAgICBicmlnaHRuZXNzID0gMS4wIC0gYnJpZ2h0
bmVzczsKKyAgICBjb2xvciAtPSAwLjUgKiBicmlnaHRuZXNzICogY29sb3JTcHJlYWQ7CisKKyAg
ICAvLworICAgIC8vIGFsc28gYXMgYSBmdW5jdGlvbiBvZiBsaW5lcyBwYXJhbGxlbCB0byB0aGUg
YXhpcworICAgIC8vCisgICAgYnJpZ2h0bmVzcyA9IGZyYWN0KGdyYWluKjQ3LjApOworICAgIGZs
b2F0IGxpbmUgPSBmcmFjdChQb3NpdGlvbi56ICsgUG9zaXRpb24ueCk7CisgICAgZmxvYXQgc25h
cCA9IGZsb29yKGxpbmUgKiAzMC4wKSAqICgxLjAvMzAuMCk7CisgICAgaWYgKGxpbmUgPCBzbmFw
ICsgMC4wMDQpCisgICAgICAgIGNvbG9yIC09IDAuNSAqIGJyaWdodG5lc3MgKiBjb2xvclNwcmVh
ZDsKKworICAgIC8vCisgICAgLy8gYXBwbHkgbGlnaHRpbmcgZWZmZWN0cyBmcm9tIHZlcnRleCBw
cm9jZXNzb3IKKyAgICAvLworICAgIGNvbG9yICo9IGxpZ2h0SW50ZW5zaXR5OworICAgIGNvbG9y
ID0gY2xhbXAoY29sb3IsIDAuMCwgMS4wKTsgCisKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNv
bG9yLCAwLjEpCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9HTDJUZXN0cy92YWxpZGF0ZV9wcm9ncmFt
L3Vuc3VjY2Vzc2Z1bGNvbXBpbGVfdmVydC52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2dsZXMvR0wyVGVzdHMvdmFsaWRhdGVf
cHJvZ3JhbS91bnN1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVydApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDRjMjFl
ZmUzMzVjMmQ4MTVhNDVkMDQ2ZTU5OTVkZTY2MmU3ODA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvb2ds
ZXMvR0wyVGVzdHMvdmFsaWRhdGVfcHJvZ3JhbS91bnN1Y2Nlc3NmdWxjb21waWxlX3ZlcnQudmVy
dApAQCAtMCwwICsxLDQzIEBACisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworCithdHRyaWJ1dGUgdmVjMyBndGZfTm9ybWFsOworYXR0cmlidXRlIHZlYzQgZ3Rm
X1ZlcnRleDsKK3VuaWZvcm0gbWF0MyBndGZfTm9ybWFsTWF0cml4OwordW5pZm9ybSBtYXQ0IGd0
Zl9Nb2RlbFZpZXdNYXRyaXg7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rpb25N
YXRyaXg7Cit2YXJ5aW5nIGZsb2F0IGxpZ2h0SW50ZW5zaXR5OwordmFyeWluZyB2ZWMzICBQb3Np
dGlvbjsKK3VuaWZvcm0gdmVjMyAgTGlnaHRQb3NpdGlvbjsKK3VuaWZvcm0gdmVjMyAgTm90QWN0
aXZlT25lOworYXR0cmlidXRlIGZsb2F0IG15QXR0cmlidXRlMTsKK2F0dHJpYnV0ZSBmbG9hdCBt
eUF0dHJpYnV0ZTI7CisKK2NvbnN0IGZsb2F0IHNwZWN1bGFyQ29udHJpYnV0aW9uID0gMC43Owor
Y29uc3QgZmxvYXQgZGlmZnVzZUNvbnRyaWJ1dGlvbiAgPSAoMS4wIC0gc3BlY3VsYXJDb250cmli
dXRpb24pOworCit2b2lkIG1haW4odm9pZCkgeworICAgIHZlYzQgcG9zICAgICAgICA9IGd0Zl9N
b2RlbFZpZXdNYXRyaXggKiBndGZfVmVydGV4X0NvbG9yOworICAgIFBvc2l0aW9uICAgICAgICA9
IHZlYzMoZ3RmX1ZlcnRleCk7CisgICAgdmVjMyB0bm9ybSAgICAgID0gbm9ybWFsaXplKGd0Zl9O
b3JtYWxNYXRyaXggKiBndGZfTm9ybWFsKTsKKyAgICB2ZWMzIGxpZ2h0VmVjICAgPSBub3JtYWxp
emUoTGlnaHRQb3NpdGlvbiAtIHZlYzMocG9zKSk7CisgICAgdmVjMyByZWZsZWN0VmVjID0gcmVm
bGVjdChsaWdodFZlYywgdG5vcm0pOworICAgIHZlYzMgdmlld1ZlYyAgICA9IG5vcm1hbGl6ZSh2
ZWMzKHBvcykpOworCisJLy9mbG9hdCBzcGVjID0gY2xhbXAoZG90KHJlZmxlY3RWZWMsIHZpZXdW
ZWMpLCAwLjAsIDEuMCk7CisJZmxvYXQgc3BlYyA9IGNsYW1wKGRvdChyZWZsZWN0VmVjLCB2aWV3
VmVjKSwgbXlBdHRyaWJ1dGUxLCBteUF0dHJpYnV0ZTIpOworICAgIHNwZWMgPSBzcGVjICogc3Bl
YzsKKyAgICBzcGVjID0gc3BlYyAqIHNwZWM7CisgICAgc3BlYyA9IHNwZWMgKiBzcGVjOworICAg
IHNwZWMgPSBzcGVjICogc3BlYzsKKworICAgIGxpZ2h0SW50ZW5zaXR5ID0gZGlmZnVzZUNvbnRy
aWJ1dGlvbiAqIGRvdChsaWdodFZlYywgdG5vcm0pICsKKyAgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGFyQ29udHJpYnV0aW9uICogc3BlYzsKKyAgICAKKyAgICBnbF9Qb3NpdGlvbiA9IGd0Zl9N
b2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4ICogZ3RmX1ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29n
bGVzL0dMMlRlc3RzL3ZlcnRleF9wcm9ncmFtX3BvaW50X3NpemUvcG9pbnRfc2l6ZS52ZXJ0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
b2dsZXMvR0wyVGVzdHMvdmVydGV4X3Byb2dyYW1fcG9pbnRfc2l6ZS9wb2ludF9zaXplLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTYzMmEwZWU4ODNlOTlkOTJmMDY1OTJlNDgyMDcyM2QyZTMyNjEyYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL29nbGVzL0dMMlRlc3RzL3ZlcnRleF9wcm9ncmFtX3BvaW50X3NpemUv
cG9pbnRfc2l6ZS52ZXJ0CkBAIC0wLDAgKzEsMTkgQEAKKworLyoKK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCisqLworCisKK2F0dHJpYnV0ZSB2ZWM0IGd0Zl9WZXJ0ZXg7CithdHRy
aWJ1dGUgdmVjNCBndGZfQ29sb3I7Cit1bmlmb3JtIG1hdDQgZ3RmX01vZGVsVmlld1Byb2plY3Rp
b25NYXRyaXg7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbiAodm9pZCkKK3sKKwlj
b2xvciA9IGd0Zl9Db2xvcjsKKwlnbF9Qb2ludFNpemUgPSAyMC4wOworCWdsX1Bvc2l0aW9uID0g
Z3RmX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBndGZfVmVydGV4OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvb2dsZXMvbXVzdHBhc3MucnVuLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL211c3RwYXNzLnJ1bi50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTZiODdkYjkzYWY0NWM0MDJlNThhZjQ2YzA2Yjg1ZDc4OTkzMDZlMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL29nbGVzL211c3RwYXNzLnJ1bi50eHQKQEAgLTAsMCArMSw2NCBAQAorIyB0aGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERPIE5PVCBFRElULgorR0wvYWJzL2lucHV0LnJ1bi50
eHQKK0dML2Fjb3MvaW5wdXQucnVuLnR4dAorR0wvYWxsL2lucHV0LnJ1bi50eHQKK0dML2FueS9p
bnB1dC5ydW4udHh0CitHTC9hcnJheS9pbnB1dC5ydW4udHh0CitHTC9hc2luL2lucHV0LnJ1bi50
eHQKK0dML2F0YW4vaW5wdXQucnVuLnR4dAorR0wvYmlDb25zdGFudHMvaW5wdXQucnVuLnR4dAor
R0wvYml1RGVwdGhSYW5nZS9pbnB1dC5ydW4udHh0CitHTC9idWlsZC9pbnB1dC5ydW4udHh0CitH
TC9idWlsdF9pbl92YXJ5aW5nX2FycmF5X291dF9vZl9ib3VuZHMvaW5wdXQucnVuLnR4dAorR0wv
Y2VpbC9pbnB1dC5ydW4udHh0CitHTC9jbGFtcC9pbnB1dC5ydW4udHh0CitHTC9jb250cm9sX2Zs
b3cvaW5wdXQucnVuLnR4dAorR0wvY29zL2lucHV0LnJ1bi50eHQKK0dML2Nyb3NzL2lucHV0LnJ1
bi50eHQKK0dML2RlZmF1bHQvaW5wdXQucnVuLnR4dAorR0wvZGVncmVlcy9pbnB1dC5ydW4udHh0
CitHTC9kaXNjYXJkL2lucHV0LnJ1bi50eHQKK0dML2Rpc3RhbmNlL2lucHV0LnJ1bi50eHQKK0dM
L2RvdC9pbnB1dC5ydW4udHh0CitHTC9lcXVhbC9pbnB1dC5ydW4udHh0CitHTC9leHAvaW5wdXQu
cnVuLnR4dAorR0wvZXhwMi9pbnB1dC5ydW4udHh0CitHTC9mYWNlZm9yd2FyZC9pbnB1dC5ydW4u
dHh0CitHTC9mbG9vci9pbnB1dC5ydW4udHh0CitHTC9mcmFjdC9pbnB1dC5ydW4udHh0CitHTC9m
dW5jdGlvbnMvaW5wdXQucnVuLnR4dAorR0wvZ2xfRnJhZ0Nvb3JkL2lucHV0LnJ1bi50eHQKK0dM
L2dsX0Zyb250RmFjaW5nL2lucHV0LnJ1bi50eHQKK0dML2dyZWF0ZXJUaGFuL2lucHV0LnJ1bi50
eHQKK0dML2dyZWF0ZXJUaGFuRXF1YWwvaW5wdXQucnVuLnR4dAorR0wvaW52ZXJzZXNxcnQvaW5w
dXQucnVuLnR4dAorR0wvbGVuZ3RoL2lucHV0LnJ1bi50eHQKK0dML2xlc3NUaGFuL2lucHV0LnJ1
bi50eHQKK0dML2xlc3NUaGFuRXF1YWwvaW5wdXQucnVuLnR4dAorR0wvbG9nL2lucHV0LnJ1bi50
eHQKK0dML2xvZzIvaW5wdXQucnVuLnR4dAorR0wvbWF0L2lucHV0LnJ1bi50eHQKK0dML21hdDMv
aW5wdXQucnVuLnR4dAorR0wvbWF0cml4Q29tcE11bHQvaW5wdXQucnVuLnR4dAorR0wvbWF4L2lu
cHV0LnJ1bi50eHQKK0dML21pbi9pbnB1dC5ydW4udHh0CitHTC9taXgvaW5wdXQucnVuLnR4dAor
R0wvbW9kL2lucHV0LnJ1bi50eHQKK0dML25vcm1hbGl6ZS9pbnB1dC5ydW4udHh0CitHTC9ub3Qv
aW5wdXQucnVuLnR4dAorR0wvbm90RXF1YWwvaW5wdXQucnVuLnR4dAorR0wvb3BlcmF0b3JzL2lu
cHV0LnJ1bi50eHQKK0dML3Bvdy9pbnB1dC5ydW4udHh0CitHTC9yYWRpYW5zL2lucHV0LnJ1bi50
eHQKK0dML3JlZmxlY3QvaW5wdXQucnVuLnR4dAorR0wvcmVmcmFjdC9pbnB1dC5ydW4udHh0CitH
TC9zaWduL2lucHV0LnJ1bi50eHQKK0dML3Npbi9pbnB1dC5ydW4udHh0CitHTC9zbW9vdGhzdGVw
L2lucHV0LnJ1bi50eHQKK0dML3NxcnQvaW5wdXQucnVuLnR4dAorR0wvc3RlcC9pbnB1dC5ydW4u
dHh0CitHTC9zdHJ1Y3QvaW5wdXQucnVuLnR4dAorR0wvc3dpenpsZXJzL2lucHV0LnJ1bi50eHQK
K0dML3Rhbi9pbnB1dC5ydW4udHh0CitHTC92ZWMvaW5wdXQucnVuLnR4dAorR0wvdmVjMy9pbnB1
dC5ydW4udHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9vZ2xlcy11dGlscy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL29nbGVzL29nbGVz
LXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYTE1MDA0OTYzNmI3ZGQxNWZiMzQ5OGZmNTEwMjZhYTE4
OWUzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9vZ2xlcy9vZ2xlcy11dGlscy5qcwpAQCAtMCwwICsx
LDc5MSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworT3BlbkdM
RVNUZXN0UnVubmVyID0gKGZ1bmN0aW9uKCl7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2w7CisKK3ZhciBIQUxGX0dSSURfTUFYX1NJWkUgPSAzMjsKK3ZhciBLTk9XTl9BVFRSSUJT
ID0gWworICAiZ3RmX1ZlcnRleCIsCisgICJndGZfQ29sb3IiCitdOworCit2YXIgR1RGUElYRUxU
T0xFUkFOQ0UgPSAyNDsKK3ZhciBHVEZBQ0NFUFRBQkxFRkFJTFVSRUNPTlQgPSAxMDsKK3ZhciBH
VEZBTURQSVhFTFRPTEVSQU5DRSA9IDEyOwordmFyIEdURlNDT1JFVE9MRVJBTkNFID0gMC42NTsK
K3ZhciBHVEZOQ0NUT0xBUkFOQ0VaRVJPID0gMC4yNTsKK3ZhciBHVEZLRVJOQUxTSVpFID0gNTsK
KworZnVuY3Rpb24gbG9nKG1zZykgeworICAvLyBkZWJ1Zyhtc2cpOworfQorCitmdW5jdGlvbiBj
b21wYXJlSW1hZ2VzKHJlZkRhdGEsIHRzdERhdGEsIHdpZHRoLCBoZWlnaHQsIGRpZmYpIHsKKyAg
ZnVuY3Rpb24gaXNQaXhlbFNhbWUob2Zmc2V0KSB7CisgICAgLy8gRmlyc3QgZG8gc2ltcGxlIGNo
ZWNrCisgICAgaWYgKE1hdGguYWJzKHJlZkRhdGFbb2Zmc2V0ICsgMF0gLSB0c3REYXRhW29mZnNl
dCArIDBdKSA8PSBHVEZQSVhFTFRPTEVSQU5DRSAmJgorICAgICAgICBNYXRoLmFicyhyZWZEYXRh
W29mZnNldCArIDFdIC0gdHN0RGF0YVtvZmZzZXQgKyAxXSkgPD0gR1RGUElYRUxUT0xFUkFOQ0Ug
JiYKKyAgICAgICAgTWF0aC5hYnMocmVmRGF0YVtvZmZzZXQgKyAyXSAtIHRzdERhdGFbb2Zmc2V0
ICsgMl0pIDw9IEdURlBJWEVMVE9MRVJBTkNFKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY3JhenkgY2hlY2sgdGhhdCdzIHVzZWQgaW4gT3Bl
bkdMIEVTIDIuMCBjb25mb3JtYW5jZSB0ZXN0cy4KKyAgICAvLyBOT1RFOiBvbiBEZXNrdG9wIHRo
aW5ncyBzZWVtIHRvIGJlIHdvcmtpbmcuIE1heWJlIHRoZSBtb3JlIGNvbXBsZXggY2hlY2sKKyAg
ICAvLyBpcyBuZWVkZWQgZm9yIGVtYmVkZGVkIHN5c3RlbXM/CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisKKyAgdmFyIHNhbWUgPSB0cnVlOworICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaGVpZ2h0
OyArK3l5KSB7CisgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHdpZHRoOyArK3h4KSB7CisgICAg
ICB2YXIgb2Zmc2V0ID0gKHl5ICogd2lkdGggKyB4eCkgKiA0OworICAgICAgdmFyIGRpZmZPZmZz
ZXQgPSAoKGhlaWdodCAtIHl5IC0gMSkgKiB3aWR0aCArIHh4KSAqIDQ7CisgICAgICBkaWZmW2Rp
ZmZPZmZzZXQgKyAwXSA9IDA7CisgICAgICBkaWZmW2RpZmZPZmZzZXQgKyAxXSA9IDA7CisgICAg
ICBkaWZmW2RpZmZPZmZzZXQgKyAyXSA9IDA7CisgICAgICBkaWZmW2RpZmZPZmZzZXQgKyAzXSA9
IDI1NTsKKyAgICAgIGlmICghaXNQaXhlbFNhbWUob2Zmc2V0KSkgeworICAgICAgICBkaWZmW2Rp
ZmZPZmZzZXRdID0gMjU1OworICAgICAgICBpZiAoc2FtZSkgeworICAgICAgICAgIHNhbWUgPSBm
YWxzZTsKKyAgICAgICAgICB0ZXN0RmFpbGVkKCJwaXhlbCBAICgiICsgeHggKyAiLCAiICsgeXkg
KyAiIHdhcyBbIiArCisgICAgICAgICAgICAgICAgICAgICB0c3REYXRhW29mZnNldCArIDBdICsg
IiwiICsKKyAgICAgICAgICAgICAgICAgICAgIHRzdERhdGFbb2Zmc2V0ICsgMV0gKyAiLCIgKwor
ICAgICAgICAgICAgICAgICAgICAgdHN0RGF0YVtvZmZzZXQgKyAyXSArICIsIiArCisgICAgICAg
ICAgICAgICAgICAgICB0c3REYXRhW29mZnNldCArIDNdICsgIl0gZXhwZWN0ZWQgWyIgKworICAg
ICAgICAgICAgICAgICAgICAgcmVmRGF0YVtvZmZzZXQgKyAwXSArICIsIiArCisgICAgICAgICAg
ICAgICAgICAgICByZWZEYXRhW29mZnNldCArIDFdICsgIiwiICsKKyAgICAgICAgICAgICAgICAg
ICAgIHJlZkRhdGFbb2Zmc2V0ICsgMl0gKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgcmVm
RGF0YVtvZmZzZXQgKyAzXSArICJdIikKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQor
ICByZXR1cm4gc2FtZTsKK30KKworZnVuY3Rpb24gcGVyc3AoZm92eSwgYXNwZWN0LCBuLCBmKSB7
CisgIHZhciBkeiA9IGYgLSBuOworICB2YXIgcmFkID0gZm92eSAvIDIuMCAqIDMuMTQxNTkyNjUg
LyAxODA7CisKKyAgdmFyIHMgPSBNYXRoLnNpbihyYWQpOworICBpZiAoZHogPT0gMCB8fCBzID09
IDAgfHwgYXNwZWN0ID09IDApCisgICAgcmV0dXJuOworCisgIHZhciBjb3QgPSBNYXRoLmNvcyhy
YWQpIC8gczsKKworICByZXR1cm4gWworICAgIGNvdCAvIGFzcGVjdCwKKyAgICAwLjAsCisgICAg
MC4wLAorICAgIDAuMCwKKworICAgIDAuMCwKKyAgICBjb3QsCisgICAgMC4wLAorICAgIDAuMCwK
KworICAgIDAuMCwKKyAgICAwLjAsCisgICAgLShmICsgbikgLyBkeiwKKyAgICAtMS4wLAorCisg
ICAgMC4wLAorICAgIDAuMCwKKyAgICAtMi4wICogZiAqIG4gLyBkeiwKKyAgICAwLjAKKyAgXTsK
K30KKworZnVuY3Rpb24gc2V0QXR0cmlicyhhdHRyaWJzLCBidWZmZXJzKSB7CisgIGZvciAodmFy
IG5hbWUgaW4gYXR0cmlicykgeworICAgIHZhciBidWZmZXIgPSBidWZmZXJzW25hbWVdOworICAg
IGlmICghYnVmZmVyKSB7CisgICAgICB0ZXN0RmFpbGVkKCJubyBidWZmZXIgZm9yIGF0dHJpYjoi
ICsgbmFtZSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGxvYyA9IGF0dHJpYnNb
bmFtZV07CisgICAgbG9nKCJzZXR1cCBhdHRyaWI6ICIgKyBsb2MgKyAiIGFzICIgKyBuYW1lKTsK
KyAgICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIGJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoYnVmZmVyLmRhdGEpLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkobG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGxv
YywgYnVmZmVyLm51bUNvbXBvbmVudHMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIH0KK30K
KworZnVuY3Rpb24gZHJhd1NxdWFyZShhdHRyaWJzKSB7CisgIHZhciBidWZmZXJzID0geworICAg
ICJndGZfVmVydGV4IjogeworICAgICAgZGF0YTogWworICAgICAgICAxLjAsIC0xLjAsIC0yLjAs
CisgICAgICAgIDEuMCwgMS4wLCAtMi4wLAorICAgICAgICAtMS4wLCAtMS4wLCAtMi4wLAorICAg
ICAgICAtMS4wLCAxLjAsIC0yLjAKKyAgICAgIF0sCisgICAgICBudW1Db21wb25lbnRzOiAzCisg
ICAgfSwKKyAgICAiZ3RmX0NvbG9yIjogeworICAgICAgZGF0YTogWworICAgICAgICAwLjUsIDEu
MCwgMC4wLAorICAgICAgICAwLjAsIDEuMCwgMS4wLAorICAgICAgICAxLjAsIDAuMCwgMC4wLAor
ICAgICAgICAwLjUsIDAuMCwgMS4wCisgICAgICBdLAorICAgICAgbnVtQ29tcG9uZW50czogMywK
KyAgICB9LAorICAgICJndGZfU2Vjb25kYXJ5Q29sb3IiOiB7CisgICAgICBkYXRhOiBbCisgICAg
ICAgIDAuNSwgMC4wLCAxLjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsCisgICAgICAgIDAuMCwg
MS4wLCAxLjAsCisgICAgICAgIDAuNSwgMS4wLCAwLjAKKyAgICAgIF0sCisgICAgICBudW1Db21w
b25lbnRzOiAzLAorICAgIH0sCisgICAgImd0Zl9Ob3JtYWwiOiB7CisgICAgICBkYXRhOiBbCisg
ICAgICAgIDAuNSwgMC4wLCAxLjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsCisgICAgICAgIDAu
MCwgMS4wLCAxLjAsCisgICAgICAgIDAuNSwgMS4wLCAwLjAKKyAgICAgIF0sCisgICAgICBudW1D
b21wb25lbnRzOiAzLAorICAgIH0sCisgICAgImd0Zl9NdWx0aVRleENvb3JkMCI6IHsKKyAgICAg
IGRhdGE6IFsKKyAgICAgICAgMS4wLCAwLjAsCisgICAgICAgIDEuMCwgMS4wLAorICAgICAgICAw
LjAsIDAuMCwKKyAgICAgICAgMC4wLCAxLjAKKyAgICAgIF0sCisgICAgICBudW1Db21wb25lbnRz
OiAyLAorICAgIH0sCisgICAgImd0Zl9Gb2dDb29yZCI6IHsKKyAgICAgIGRhdGE6IFsKKyAgICAg
ICAgMC4wLAorICAgICAgICAxLjAsCisgICAgICAgIDAuMCwKKyAgICAgICAgMS4wCisgICAgICBd
LAorICAgICAgbnVtQ29tcG9uZW50czogMSwKKyAgICB9CisgIH07CisgIHNldEF0dHJpYnMoYXR0
cmlicywgYnVmZmVycyk7CisgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVfU1RSSVAsIDAsIDQp
OworfQorCitmdW5jdGlvbiBkcmF3RnJvbnRCYWNrU3F1YXJlKGF0dHJpYnMpIHsKKyAgdmFyIGZy
b250ID0geworICAgICJndGZfVmVydGV4IjogeworICAgICAgZGF0YTogWworICAgICAgICAxLjAs
IC0xLjAsIC0yLjAsCisgICAgICAgIDEuMCwgMC4wLCAtMi4wLAorICAgICAgICAtMS4wLCAtMS4w
LCAtMi4wLAorICAgICAgICAtMS4wLCAwLjAsIC0yLjAKKyAgICAgIF0sCisgICAgICBudW1Db21w
b25lbnRzOiAzCisgICAgfSwKKyAgICAiZ3RmX0NvbG9yIjogeworICAgICAgZGF0YTogWworICAg
ICAgICAwLjAsIDEuMCwgMC4wLAorICAgICAgICAwLjAsIDEuMCwgMC4wLAorICAgICAgICAwLjAs
IDEuMCwgMC4wLAorICAgICAgICAwLjAsIDEuMCwgMC4wCisgICAgICBdLAorICAgICAgbnVtQ29t
cG9uZW50czogMywKKyAgICB9LAorICAgICJndGZfTXVsdGlUZXhDb29yZDAiOiB7CisgICAgICBk
YXRhOiBbCisgICAgICAgIDEuMCwgMC4wLAorICAgICAgICAxLjAsIDAuNSwKKyAgICAgICAgMC4w
LCAwLjAsCisgICAgICAgIDAuMCwgMC41CisgICAgICBdLAorICAgICAgbnVtQ29tcG9uZW50czog
MiwKKyAgICB9CisgIH07CisgIHNldEF0dHJpYnMoYXR0cmlicywgZnJvbnQpOworICBnbC5kcmF3
QXJyYXlzKGdsLlRSSUFOR0xFX1NUUklQLCAwLCA0KTsKKworICB2YXIgYmFjayA9IHsKKyAgICAi
Z3RmX1ZlcnRleCI6IHsKKyAgICAgIGRhdGE6IFsKKyAgICAgICAgMS4wLCAxLjAsIC0yLjAsCisg
ICAgICAgIDEuMCwgMC4wLCAtMi4wLAorICAgICAgICAtMS4wLCAxLjAsIC0yLjAsCisgICAgICAg
IC0xLjAsIDAuMCwgLTIuMAorICAgICAgXSwKKyAgICAgIG51bUNvbXBvbmVudHM6IDMKKyAgICB9
LAorICAgICJndGZfQ29sb3IiOiB7CisgICAgICBkYXRhOiBbCisgICAgICAgIDEuMCwgMC4wLCAw
LjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsCisgICAgICAgIDEuMCwgMC4wLCAwLjAsCisgICAg
ICAgIDEuMCwgMC4wLCAwLjAKKyAgICAgIF0sCisgICAgICBudW1Db21wb25lbnRzOiAzLAorICAg
IH0sCisgICAgImd0Zl9NdWx0aVRleENvb3JkMCI6IHsKKyAgICAgIGRhdGE6IFsKKyAgICAgICAg
MS4wLCAwLjEsCisgICAgICAgIDEuMCwgMC41LAorICAgICAgICAwLjAsIDAuMSwKKyAgICAgICAg
MC4wLCAwLjUKKyAgICAgIF0sCisgICAgICBudW1Db21wb25lbnRzOiAyLAorICAgIH0KKyAgfTsK
KyAgc2V0QXR0cmlicyhhdHRyaWJzLCBiYWNrKTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdM
RV9TVFJJUCwgMCwgNCk7Cit9CisKK2Z1bmN0aW9uIGRyYXdHcmlkKGF0dHJpYnMsIHdpZHRoLCBo
ZWlnaHQpIHsKKyAgdmFyIG4gPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubWF4KHdpZHRoLCBo
ZWlnaHQpIC8gNCksIEhBTEZfR1JJRF9NQVhfU0laRSk7CisKKyAgdmFyIG51bVZlcnRpY2VzID0g
KG4gKyBuKSAqIChuICsgbikgKiA2OworCisgIHZhciBncmlkVmVydGljZXMgICA9IFtdOworICB2
YXIgZ3JpZENvbG9ycyAgICAgPSBbXTsKKyAgdmFyIGdyaWRTZWNDb2xvcnMgID0gW107CisgIHZh
ciBncmlkTm9ybWFscyAgICA9IFtdOworICB2YXIgZ3JpZEZvZ0Nvb3JkcyAgPSBbXTsKKyAgdmFy
IGdyaWRUZXhDb29yZHMwID0gW107CisKKyAgdmFyIGN1cnJlbnRWZXJ0ZXggICAgPSAwOworICB2
YXIgY3VycmVudENvbG9yICAgICA9IDA7CisgIHZhciBjdXJyZW50U2VjQ29sb3IgID0gMDsKKyAg
dmFyIGN1cnJlbnRUZXhDb29yZDAgPSAwOworICB2YXIgY3VycmVudE5vcm1hbCAgICA9IDA7Cisg
IHZhciBjdXJyZW50Rm9nQ29vcmQgID0gMDsKKworICB2YXIgeiA9IC0yLjA7CisgIGZvcih2YXIg
aSA9IC1uOyBpIDwgbjsgKytpKQorICB7CisgICAgICB2YXIgeDEgPSBpIC8gbjsKKyAgICAgIHZh
ciB4MiA9IChpICsgMSkgLyBuOworICAgICAgZm9yKHZhciBqID0gLW47IGogPCBuOyArK2opCisg
ICAgICB7CisgICAgICAgICAgdmFyIHkxID0gaiAvIG47CisgICAgICAgICAgdmFyIHkyID0gKGog
KyAxKSAvIG47CisKKyAgICAgICAgICAvLyBWRVJURVggMAorICAgICAgICAgIGdyaWRWZXJ0aWNl
c1tjdXJyZW50VmVydGV4KytdID0geDE7CisgICAgICAgICAgZ3JpZFZlcnRpY2VzW2N1cnJlbnRW
ZXJ0ZXgrK10gPSB5MTsKKyAgICAgICAgICBncmlkVmVydGljZXNbY3VycmVudFZlcnRleCsrXSA9
IHo7CisgICAgICAgICAgZ3JpZENvbG9yc1tjdXJyZW50Q29sb3IrK10gPSAxLjAgLSAoeDEgKyB5
MSArIDIuMCkgLyA0LjA7CisgICAgICAgICAgZ3JpZENvbG9yc1tjdXJyZW50Q29sb3IrK10gPSAo
eDEgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRDb2xvcnNbY3VycmVudENvbG9yKytdID0g
KHkxICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkU2VjQ29sb3JzW2N1cnJlbnRTZWNDb2xv
cisrXSA9IDEuMCAtICh4MiArIHkyICsgMi4wKSAvIDQuMDsKKyAgICAgICAgICBncmlkU2VjQ29s
b3JzW2N1cnJlbnRTZWNDb2xvcisrXSA9ICh4MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3Jp
ZFNlY0NvbG9yc1tjdXJyZW50U2VjQ29sb3IrK10gPSAoeTIgKyAxLjApIC8gMi4wOworICAgICAg
ICAgIGdyaWRUZXhDb29yZHMwW2N1cnJlbnRUZXhDb29yZDArK10gPSAoeDEgKyAxLjApIC8gMi4w
OworICAgICAgICAgIGdyaWRUZXhDb29yZHMwW2N1cnJlbnRUZXhDb29yZDArK10gPSAoeTEgKyAx
LjApIC8gMi4wOworICAgICAgICAgIGdyaWROb3JtYWxzW2N1cnJlbnROb3JtYWwrK10gPSAxLjAg
LSAoeDIgKyB5MiArIDIuMCkgLyA0LjA7CisgICAgICAgICAgZ3JpZE5vcm1hbHNbY3VycmVudE5v
cm1hbCsrXSA9ICh4MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZE5vcm1hbHNbY3VycmVu
dE5vcm1hbCsrXSA9ICh5MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZEZvZ0Nvb3Jkc1tj
dXJyZW50Rm9nQ29vcmQrK10gPSAoeTEgKyAxLjApIC8gMi4wOworCisgICAgICAgICAgLy8gVkVS
VEVYIDEKKyAgICAgICAgICBncmlkVmVydGljZXNbY3VycmVudFZlcnRleCsrXSA9IHgyOworICAg
ICAgICAgIGdyaWRWZXJ0aWNlc1tjdXJyZW50VmVydGV4KytdID0geTE7CisgICAgICAgICAgZ3Jp
ZFZlcnRpY2VzW2N1cnJlbnRWZXJ0ZXgrK10gPSB6OworICAgICAgICAgIGdyaWRDb2xvcnNbY3Vy
cmVudENvbG9yKytdID0gMS4wIC0gKHgyICsgeTEgKyAyLjApIC8gNC4wOworICAgICAgICAgIGdy
aWRDb2xvcnNbY3VycmVudENvbG9yKytdID0gKHgyICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBn
cmlkQ29sb3JzW2N1cnJlbnRDb2xvcisrXSA9ICh5MSArIDEuMCkgLyAyLjA7CisgICAgICAgICAg
Z3JpZFNlY0NvbG9yc1tjdXJyZW50U2VjQ29sb3IrK10gPSAxLjAgLSAoeDEgKyB5MiArIDIuMCkg
LyA0LjA7CisgICAgICAgICAgZ3JpZFNlY0NvbG9yc1tjdXJyZW50U2VjQ29sb3IrK10gPSAoeDEg
KyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRTZWNDb2xvcnNbY3VycmVudFNlY0NvbG9yKytd
ID0gKHkyICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkVGV4Q29vcmRzMFtjdXJyZW50VGV4
Q29vcmQwKytdID0gKHgyICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkVGV4Q29vcmRzMFtj
dXJyZW50VGV4Q29vcmQwKytdID0gKHkxICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkTm9y
bWFsc1tjdXJyZW50Tm9ybWFsKytdID0gMS4wIC0gKHgxICsgeTIgKyAyLjApIC8gNC4wOworICAg
ICAgICAgIGdyaWROb3JtYWxzW2N1cnJlbnROb3JtYWwrK10gPSAoeDEgKyAxLjApIC8gMi4wOwor
ICAgICAgICAgIGdyaWROb3JtYWxzW2N1cnJlbnROb3JtYWwrK10gPSAoeTIgKyAxLjApIC8gMi4w
OworICAgICAgICAgIGdyaWRGb2dDb29yZHNbY3VycmVudEZvZ0Nvb3JkKytdID0gKHkxICsgMS4w
KSAvIDIuMDsKKworICAgICAgICAgIC8vIFZFUlRFWCAyCisgICAgICAgICAgZ3JpZFZlcnRpY2Vz
W2N1cnJlbnRWZXJ0ZXgrK10gPSB4MjsKKyAgICAgICAgICBncmlkVmVydGljZXNbY3VycmVudFZl
cnRleCsrXSA9IHkyOworICAgICAgICAgIGdyaWRWZXJ0aWNlc1tjdXJyZW50VmVydGV4KytdID0g
ejsKKyAgICAgICAgICBncmlkQ29sb3JzW2N1cnJlbnRDb2xvcisrXSA9IDEuMCAtICh4MiArIHky
ICsgMi4wKSAvIDQuMDsKKyAgICAgICAgICBncmlkQ29sb3JzW2N1cnJlbnRDb2xvcisrXSA9ICh4
MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZENvbG9yc1tjdXJyZW50Q29sb3IrK10gPSAo
eTIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRTZWNDb2xvcnNbY3VycmVudFNlY0NvbG9y
KytdID0gMS4wIC0gKHgxICsgeTEgKyAyLjApIC8gNC4wOworICAgICAgICAgIGdyaWRTZWNDb2xv
cnNbY3VycmVudFNlY0NvbG9yKytdID0gKHgxICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlk
U2VjQ29sb3JzW2N1cnJlbnRTZWNDb2xvcisrXSA9ICh5MSArIDEuMCkgLyAyLjA7CisgICAgICAg
ICAgZ3JpZFRleENvb3JkczBbY3VycmVudFRleENvb3JkMCsrXSA9ICh4MiArIDEuMCkgLyAyLjA7
CisgICAgICAgICAgZ3JpZFRleENvb3JkczBbY3VycmVudFRleENvb3JkMCsrXSA9ICh5MiArIDEu
MCkgLyAyLjA7CisgICAgICAgICAgZ3JpZE5vcm1hbHNbY3VycmVudE5vcm1hbCsrXSA9IDEuMCAt
ICh4MSArIHkxICsgMi4wKSAvIDQuMDsKKyAgICAgICAgICBncmlkTm9ybWFsc1tjdXJyZW50Tm9y
bWFsKytdID0gKHgxICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkTm9ybWFsc1tjdXJyZW50
Tm9ybWFsKytdID0gKHkxICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkRm9nQ29vcmRzW2N1
cnJlbnRGb2dDb29yZCsrXSA9ICh5MiArIDEuMCkgLyAyLjA7CisKKyAgICAgICAgICAvLyBWRVJU
RVggMgorICAgICAgICAgIGdyaWRWZXJ0aWNlc1tjdXJyZW50VmVydGV4KytdID0geDI7CisgICAg
ICAgICAgZ3JpZFZlcnRpY2VzW2N1cnJlbnRWZXJ0ZXgrK10gPSB5MjsKKyAgICAgICAgICBncmlk
VmVydGljZXNbY3VycmVudFZlcnRleCsrXSA9IHo7CisgICAgICAgICAgZ3JpZENvbG9yc1tjdXJy
ZW50Q29sb3IrK10gPSAxLjAgLSAoeDIgKyB5MiArIDIuMCkgLyA0LjA7CisgICAgICAgICAgZ3Jp
ZENvbG9yc1tjdXJyZW50Q29sb3IrK10gPSAoeDIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdy
aWRDb2xvcnNbY3VycmVudENvbG9yKytdID0gKHkyICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBn
cmlkU2VjQ29sb3JzW2N1cnJlbnRTZWNDb2xvcisrXSA9IDEuMCAtICh4MSArIHkxICsgMi4wKSAv
IDQuMDsKKyAgICAgICAgICBncmlkU2VjQ29sb3JzW2N1cnJlbnRTZWNDb2xvcisrXSA9ICh4MSAr
IDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZFNlY0NvbG9yc1tjdXJyZW50U2VjQ29sb3IrK10g
PSAoeTEgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRUZXhDb29yZHMwW2N1cnJlbnRUZXhD
b29yZDArK10gPSAoeDIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRUZXhDb29yZHMwW2N1
cnJlbnRUZXhDb29yZDArK10gPSAoeTIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWROb3Jt
YWxzW2N1cnJlbnROb3JtYWwrK10gPSAxLjAgLSAoeDEgKyB5MSArIDIuMCkgLyA0LjA7CisgICAg
ICAgICAgZ3JpZE5vcm1hbHNbY3VycmVudE5vcm1hbCsrXSA9ICh4MSArIDEuMCkgLyAyLjA7Cisg
ICAgICAgICAgZ3JpZE5vcm1hbHNbY3VycmVudE5vcm1hbCsrXSA9ICh5MSArIDEuMCkgLyAyLjA7
CisgICAgICAgICAgZ3JpZEZvZ0Nvb3Jkc1tjdXJyZW50Rm9nQ29vcmQrK10gPSAoeTIgKyAxLjAp
IC8gMi4wOworCisgICAgICAgICAgLy8gVkVSVEVYIDMKKyAgICAgICAgICBncmlkVmVydGljZXNb
Y3VycmVudFZlcnRleCsrXSA9IHgxOworICAgICAgICAgIGdyaWRWZXJ0aWNlc1tjdXJyZW50VmVy
dGV4KytdID0geTI7CisgICAgICAgICAgZ3JpZFZlcnRpY2VzW2N1cnJlbnRWZXJ0ZXgrK10gPSB6
OworICAgICAgICAgIGdyaWRDb2xvcnNbY3VycmVudENvbG9yKytdID0gMS4wIC0gKHgxICsgeTIg
KyAyLjApIC8gNC4wOworICAgICAgICAgIGdyaWRDb2xvcnNbY3VycmVudENvbG9yKytdID0gKHgx
ICsgMS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkQ29sb3JzW2N1cnJlbnRDb2xvcisrXSA9ICh5
MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZFNlY0NvbG9yc1tjdXJyZW50U2VjQ29sb3Ir
K10gPSAxLjAgLSAoeDIgKyB5MSArIDIuMCkgLyA0LjA7CisgICAgICAgICAgZ3JpZFNlY0NvbG9y
c1tjdXJyZW50U2VjQ29sb3IrK10gPSAoeDIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRT
ZWNDb2xvcnNbY3VycmVudFNlY0NvbG9yKytdID0gKHkxICsgMS4wKSAvIDIuMDsKKyAgICAgICAg
ICBncmlkVGV4Q29vcmRzMFtjdXJyZW50VGV4Q29vcmQwKytdID0gKHgxICsgMS4wKSAvIDIuMDsK
KyAgICAgICAgICBncmlkVGV4Q29vcmRzMFtjdXJyZW50VGV4Q29vcmQwKytdID0gKHkyICsgMS4w
KSAvIDIuMDsKKyAgICAgICAgICBncmlkTm9ybWFsc1tjdXJyZW50Tm9ybWFsKytdID0gMS4wIC0g
KHgyICsgeTEgKyAyLjApIC8gNC4wOworICAgICAgICAgIGdyaWROb3JtYWxzW2N1cnJlbnROb3Jt
YWwrK10gPSAoeDIgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWROb3JtYWxzW2N1cnJlbnRO
b3JtYWwrK10gPSAoeTEgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdyaWRGb2dDb29yZHNbY3Vy
cmVudEZvZ0Nvb3JkKytdID0gKHkyICsgMS4wKSAvIDIuMDsKKworICAgICAgICAgIC8vIFZFUlRF
WCAwCisgICAgICAgICAgZ3JpZFZlcnRpY2VzW2N1cnJlbnRWZXJ0ZXgrK10gPSB4MTsKKyAgICAg
ICAgICBncmlkVmVydGljZXNbY3VycmVudFZlcnRleCsrXSA9IHkxOworICAgICAgICAgIGdyaWRW
ZXJ0aWNlc1tjdXJyZW50VmVydGV4KytdID0gejsKKyAgICAgICAgICBncmlkQ29sb3JzW2N1cnJl
bnRDb2xvcisrXSA9IDEuMCAtICh4MSArIHkxICsgMi4wKSAvIDQuMDsKKyAgICAgICAgICBncmlk
Q29sb3JzW2N1cnJlbnRDb2xvcisrXSA9ICh4MSArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3Jp
ZENvbG9yc1tjdXJyZW50Q29sb3IrK10gPSAoeTEgKyAxLjApIC8gMi4wOworICAgICAgICAgIGdy
aWRTZWNDb2xvcnNbY3VycmVudFNlY0NvbG9yKytdID0gMS4wIC0gKHgyICsgeTIgKyAyLjApIC8g
NC4wOworICAgICAgICAgIGdyaWRTZWNDb2xvcnNbY3VycmVudFNlY0NvbG9yKytdID0gKHgyICsg
MS4wKSAvIDIuMDsKKyAgICAgICAgICBncmlkU2VjQ29sb3JzW2N1cnJlbnRTZWNDb2xvcisrXSA9
ICh5MiArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZFRleENvb3JkczBbY3VycmVudFRleENv
b3JkMCsrXSA9ICh4MSArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZFRleENvb3JkczBbY3Vy
cmVudFRleENvb3JkMCsrXSA9ICh5MSArIDEuMCkgLyAyLjA7CisgICAgICAgICAgZ3JpZE5vcm1h
bHNbY3VycmVudE5vcm1hbCsrXSA9IDEuMCAtICh4MiArIHkyICsgMi4wKSAvIDQuMDsKKyAgICAg
ICAgICBncmlkTm9ybWFsc1tjdXJyZW50Tm9ybWFsKytdID0gKHgyICsgMS4wKSAvIDIuMDsKKyAg
ICAgICAgICBncmlkTm9ybWFsc1tjdXJyZW50Tm9ybWFsKytdID0gKHkyICsgMS4wKSAvIDIuMDsK
KyAgICAgICAgICBncmlkRm9nQ29vcmRzW2N1cnJlbnRGb2dDb29yZCsrXSA9ICh5MSArIDEuMCkg
LyAyLjA7CisgICAgICB9CisgIH0KKworICB2YXIgYnVmZmVycyA9IHsKKyAgICAiZ3RmX1ZlcnRl
eCI6ICAgICAgICAgeyBkYXRhOiBncmlkVmVydGljZXMsICAgbnVtQ29tcG9uZW50czogMyB9LAor
ICAgICJndGZfQ29sb3IiOiAgICAgICAgICB7IGRhdGE6IGdyaWRDb2xvcnMsICAgICBudW1Db21w
b25lbnRzOiAzIH0sCisgICAgImd0Zl9TZWNvbmRhcnlDb2xvciI6IHsgZGF0YTogZ3JpZFNlY0Nv
bG9ycywgIG51bUNvbXBvbmVudHM6IDMgfSwKKyAgICAiZ3RmX05vcm1hbCI6ICAgICAgICAgeyBk
YXRhOiBncmlkTm9ybWFscywgICAgbnVtQ29tcG9uZW50czogMyB9LAorICAgICJndGZfRm9nQ29v
cmQiOiAgICAgICB7IGRhdGE6IGdyaWRGb2dDb29yZHMsICBudW1Db21wb25lbnRzOiAxIH0sCisg
ICAgImd0Zl9NdWx0aVRleENvb3JkMCI6IHsgZGF0YTogZ3JpZFRleENvb3JkczAsIG51bUNvbXBv
bmVudHM6IDIgfQorICB9OworICBzZXRBdHRyaWJzKGF0dHJpYnMsIGJ1ZmZlcnMpOworICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgbnVtVmVydGljZXMpOworfQorCit2YXIgTU9ERUxf
RlVOQ1MgPSB7CisgIHNxdWFyZTogICAgICAgICAgZHJhd1NxdWFyZSwKKyAgZnJvbnRiYWNrc3F1
YXJlOiBkcmF3RnJvbnRCYWNrU3F1YXJlLAorICBncmlkOiAgICAgICAgICAgIGRyYXdHcmlkCit9
OworCitmdW5jdGlvbiBkcmF3V2l0aFByb2dyYW0ocHJvZ3JhbSwgcHJvZ3JhbUluZm8sIHRlc3Qp
IHsKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgdmFyIGF0dHJpYnMgPSB7IH07CisKKyAg
dmFyIG51bUF0dHJpYnMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElW
RV9BVFRSSUJVVEVTKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG51bUF0dHJpYnM7ICsraWkp
IHsKKyAgICB2YXIgaW5mbyA9IGdsLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpaSk7CisgICAg
dmFyIG5hbWUgPSBpbmZvLm5hbWU7CisgICAgdmFyIGxvY2F0aW9uID0gZ2wuZ2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgYXR0cmlic1tuYW1lXSA9IGxvY2F0aW9uOworCisg
ICAgaWYgKEtOT1dOX0FUVFJJQlMuaW5kZXhPZihuYW1lKSA8IDApIHsKKyAgICAgIHRlc3RGYWls
ZWQoInVua25vd24gYXR0cmliOiIgKyBuYW1lKQorICAgIH0KKyAgfQorCisgIHZhciB1bmlmb3Jt
cyA9IHsgfTsKKyAgdmFyIG51bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9n
cmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtVW5p
Zm9ybXM7ICsraWkpIHsKKyAgICB2YXIgaW5mbyA9IGdsLmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgaWkpOworICAgIHZhciBuYW1lID0gaW5mby5uYW1lOworICAgIGlmIChuYW1lLm1hdGNoKC9c
WzBcXSQvKSkgeworICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMyk7
CisgICAgfQorICAgIHZhciBsb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBuYW1lKTsKKyAgICB1bmlmb3Jtc1tuYW1lXSA9IHtsb2NhdGlvbjogbG9jYXRpb259OworICB9
CisKKyAgdmFyIGdldFVuaWZvcm1Mb2NhdGlvbiA9IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICB2YXIg
dW5pZm9ybSA9IHVuaWZvcm1zW25hbWVdOworICAgIGlmICh1bmlmb3JtKSB7CisgICAgICB1bmlm
b3JtLnVzZWQgPSB0cnVlOworICAgICAgcmV0dXJuIHVuaWZvcm0ubG9jYXRpb247CisgICAgfQor
ICAgIHJldHVybiBudWxsOworICB9CisKKyAgLy8gU2V0IGtub3duIHVuaWZvcm1zCisgIHZhciBs
b2MgPSBnZXRVbmlmb3JtTG9jYXRpb24oImd0Zl9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Iik7
CisgIGlmIChsb2MpICB7CisgICAgZ2wudW5pZm9ybU1hdHJpeDRmdigKKyAgICAgIGxvYywKKyAg
ICAgIGZhbHNlLAorICAgICAgcGVyc3AoNjAsIDEsIDEsIDMwKSk7CisgIH0KKyAgdmFyIGxvYyA9
IGdldFVuaWZvcm1Mb2NhdGlvbigidmlld3BvcnR3aWR0aCIpOworICBpZiAobG9jKSB7CisgICAg
Z2wudW5pZm9ybTFmKGxvYywgZ2wuY2FudmFzLndpZHRoKTsKKyAgfQorICB2YXIgbG9jID0gZ2V0
VW5pZm9ybUxvY2F0aW9uKCJ2aWV3cG9ydGhlaWdodCIpOworICBpZiAobG9jKSB7CisgICAgZ2wu
dW5pZm9ybTFmKGxvYywgZ2wuY2FudmFzLmhlaWdodCk7CisgIH0KKworICAvLyBTZXQgdGVzdCBz
cGVjaWZpYyB1bmlmb3JtcworICBmb3IgKHZhciBuYW1lIGluIHByb2dyYW1JbmZvLnVuaWZvcm1z
KSB7CisgICAgdmFyIGxvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOworICAgIGlm
ICghbG9jYXRpb24pIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB2YXIgdW5pZm9ybSA9
IHByb2dyYW1JbmZvLnVuaWZvcm1zW25hbWVdOworICAgIHZhciB0eXBlID0gdW5pZm9ybS50eXBl
OworICAgIHZhciB2YWx1ZSA9IHVuaWZvcm0udmFsdWU7CisgICAgdmFyIHRyYW5zcG9zZSA9IHVu
aWZvcm0udHJhbnNwb3NlOworICAgIGlmICh0cmFuc3Bvc2UgIT09IHVuZGVmaW5lZCkgeworICAg
ICAgbG9nKCJnbC4iICsgdHlwZSArICcoIicgKyBuYW1lICsgJyIsICcgKyB0cmFuc3Bvc2UgKyAi
LCAiICsgdmFsdWUgKyAiKSIpOworICAgICAgZ2xbdHlwZV0obG9jYXRpb24sIHRyYW5zcG9zZSwg
dmFsdWUpOworICAgIH0gZWxzZSBpZiAoIXR5cGUubWF0Y2goInYkIikpIHsKKyAgICAgIHZhciBh
cmdzID0gW2xvY2F0aW9uXTsKKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB2YWx1ZS5sZW5n
dGg7ICsraWkpIHsKKyAgICAgICAgYXJncy5wdXNoKHZhbHVlW2lpXSk7CisgICAgICB9CisgICAg
ICBnbFt0eXBlXS5hcHBseShnbCwgYXJncyk7CisgICAgICBsb2coImdsLiIgKyB0eXBlICsgJygi
JyArIG5hbWUgKyAnIiwgJyArIGFyZ3Muc2xpY2UoMSkgKyAiKSIpOworICAgIH0gZWxzZSB7Cisg
ICAgICBsb2coImdsLiIgKyB0eXBlICsgJygiJyArIG5hbWUgKyAnIiwgJyArIHZhbHVlICsgIiki
KTsKKyAgICAgIGdsW3R5cGVdKGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgfQorICAgIHZhciBlcnIg
PSBnbC5nZXRFcnJvcigpOworICAgIGlmIChlcnIgIT0gZ2wuTk9fRVJST1IpIHsKKyAgICAgIHRl
c3RGYWlsZWQod3R1LmdsRW51bVRvU3RyaW5nKGdsLCBlcnIpICsgIiBnZW5lcmF0ZWQgc2V0dGlu
ZyB1bmlmb3JtOiAiICsgbmFtZSk7CisgICAgfQorICB9CisKKyAgLy8gRmlsdGVyIG91dCBzcGVj
aWZpZWQgYnVpbHQtaW4gdW5pZm9ybXMKKyAgaWYgKHByb2dyYW1JbmZvLmJ1aWx0aW5fdW5pZm9y
bXMpIHsKKyAgICB2YXIgbnVtX2J1aWx0aW5zX2ZvdW5kID0gMDsKKyAgICB2YXIgdmFsaWRfdmFs
dWVzID0gcHJvZ3JhbUluZm8uYnVpbHRpbl91bmlmb3Jtcy52YWxpZF92YWx1ZXM7CisgICAgZm9y
ICh2YXIgaW5kZXggaW4gdmFsaWRfdmFsdWVzKSB7CisgICAgICB2YXIgdW5pZm9ybSA9IHVuaWZv
cm1zW3ZhbGlkX3ZhbHVlc1tpbmRleF1dOworICAgICAgaWYgKHVuaWZvcm0pIHsKKyAgICAgICAg
KytudW1fYnVpbHRpbnNfZm91bmQ7CisgICAgICAgIHVuaWZvcm0uYnVpbHRpbiA9IHRydWU7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIG1pbl9yZXF1aXJlZCA9IHByb2dyYW1JbmZvLmJ1aWx0
aW5fdW5pZm9ybXMubWluX3JlcXVpcmVkOworICAgIGlmIChudW1fYnVpbHRpbnNfZm91bmQgPCBt
aW5fcmVxdWlyZWQpIHsKKyAgICAgIHRlc3RGYWlsZWQoIm9ubHkgZm91bmQgIiArIG51bV9idWls
dGluc19mb3VuZCArICIgb2YgIiArIG1pbl9yZXF1aXJlZCArCisgICAgICAgICAgICAgICAgICIg
cmVxdWlyZWQgYnVpbHQtaW4gdW5pZm9ybXM6ICIgKyB2YWxpZF92YWx1ZXMpOworICAgIH0KKyAg
fQorCisgIC8vIENoZWNrIGZvciB1bnNldCB1bmlmb3JtcworICBmb3IgKHZhciBuYW1lIGluIHVu
aWZvcm1zKSB7CisgICAgdmFyIHVuaWZvcm0gPSB1bmlmb3Jtc1tuYW1lXTsKKyAgICBpZiAoIXVu
aWZvcm0udXNlZCAmJiAhdW5pZm9ybS5idWlsdGluKSB7CisgICAgICB0ZXN0RmFpbGVkKCJ1bmlm
b3JtICIgKyBuYW1lICsgIiBuZXZlciBzZXQiKTsKKyAgICB9CisgIH0KKworCisgIGZvciAodmFy
IHN0YXRlIGluIHRlc3Quc3RhdGUpIHsKKyAgICB2YXIgZmllbGRzID0gdGVzdC5zdGF0ZVtzdGF0
ZV07CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgJ2RlcHRocmFuZ2UnOgorICAgICAg
Z2wuZGVwdGhSYW5nZShmaWVsZHMubmVhciwgZmllbGRzLmZhcik7CisgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgdGVzdEZhaWxlZCgidW5rbm93biBzdGF0ZTogIiArIHN0YXRlKQor
ICAgIH0KKyAgfQorCisgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICB2YXIgbW9kZWwg
PSB0ZXN0Lm1vZGVsIHx8ICJzcXVhcmUiOworICB2YXIgZm4gPSBNT0RFTF9GVU5DU1ttb2RlbF07
CisgIGlmICghZm4pIHsKKyAgICB0ZXN0RmFpbGVkKCJ1bmtub3duIG1vZGVsIHR5cGU6ICIgKyBt
b2RlbCkKKyAgfSBlbHNlIHsKKyAgICBsb2coImRyYXcgYXM6ICIgKyBtb2RlbCkKKyAgICBmbihh
dHRyaWJzLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQpOworICB9CisKKyAgdmFy
IHBpeGVscyA9IG5ldyBVaW50OEFycmF5KGdsLmNhbnZhcy53aWR0aCAqIGdsLmNhbnZhcy5oZWln
aHQgKiA0KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZh
cy5oZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgIHJldHVybiB7
CisgICAgd2lkdGg6IGdsLmNhbnZhcy53aWR0aCwKKyAgICBoZWlnaHQ6IGdsLmNhbnZhcy5oZWln
aHQsCisgICAgcGl4ZWxzOiBwaXhlbHMsCisgICAgaW1nOiB3dHUubWFrZUltYWdlRnJvbUNhbnZh
cyhnbC5jYW52YXMpCisgIH07Cit9CisKK2Z1bmN0aW9uIHJ1blByb2dyYW0ocHJvZ3JhbUluZm8s
IHRlc3QsIGxhYmVsLCBjYWxsYmFjaykgeworICB2YXIgc2hhZGVycyA9IFtdOworICB2YXIgc291
cmNlID0gW107CisgIHZhciBjb3VudCA9IDA7CisKKyAgZnVuY3Rpb24gbG9hZFNoYWRlcihwYXRo
LCB0eXBlLCBpbmRleCkgeworICAgIHd0dS5sb2FkVGV4dEZpbGVBc3luYyhwYXRoLCBmdW5jdGlv
bihzdWNjZXNzLCB0ZXh0KSB7CisgICAgICBhZGRTaGFkZXIoc3VjY2VzcywgdGV4dCwgdHlwZSwg
cGF0aCwgaW5kZXgpOworICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gYWRkU2hhZGVyKHN1Y2Nl
c3MsIHRleHQsIHR5cGUsIHBhdGgsIGluZGV4KSB7CisgICAgKytjb3VudDsKKyAgICBpZiAoIXN1
Y2Nlc3MpIHsKKyAgICAgIHRlc3RGYWlsZWQoImNvdWxkIG5vdCBsb2FkOiAiICsgcGF0aCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHZhciBzaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdGV4dCwg
dHlwZSk7CisgICAgICBzaGFkZXJzLnB1c2goc2hhZGVyKTsKKyAgICAgIHNvdXJjZVtpbmRleF0g
PSB0ZXh0OworICAgIH0KKyAgICBpZiAoY291bnQgPT0gMikgeworICAgICAgdmFyIHJlc3VsdDsK
KyAgICAgIGlmIChzaGFkZXJzLmxlbmd0aCA9PSAyKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgaWYgKCFxdWlldE1vZGUoKSkgeworICAgICAgICB2YXIgY29uc29sZURpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgd3R1LmFkZFNoYWRlclNv
dXJjZXMoCisgICAgICAgICAgICAgIGdsLCBjb25zb2xlRGl2LCBsYWJlbCArICIgdmVydGV4IHNo
YWRlciIsIHNoYWRlcnNbMF0sIHNvdXJjZVswXSwKKyAgICAgICAgICAgICAgcHJvZ3JhbUluZm8u
dmVydGV4U2hhZGVyKTsKKyAgICAgICAgICB3dHUuYWRkU2hhZGVyU291cmNlcygKKyAgICAgICAg
ICAgICAgZ2wsIGNvbnNvbGVEaXYsIGxhYmVsICsgIiBmcmFnbWVudCBzaGFkZXIiLCBzaGFkZXJz
WzFdLCBzb3VyY2VbMV0sCisgICAgICAgICAgICAgIHByb2dyYW1JbmZvLmZyYWdtZW50U2hhZGVy
KTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcHJvZ3JhbSA9IHd0dS5jcmVhdGVQcm9ncmFtKGds
LCBzaGFkZXJzWzBdLCBzaGFkZXJzWzFdKTsKKyAgICAgICAgcmVzdWx0ID0gZHJhd1dpdGhQcm9n
cmFtKHByb2dyYW0sIHByb2dyYW1JbmZvLCB0ZXN0KTsKKyAgICAgIH0KKyAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7CisgICAgfQorICB9CisKKyAgbG9hZFNoYWRlcihwcm9ncmFtSW5mby52ZXJ0ZXhT
aGFkZXIsIGdsLlZFUlRFWF9TSEFERVIsIDApOworICBsb2FkU2hhZGVyKHByb2dyYW1JbmZvLmZy
YWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIsIDEpOworfQorCitmdW5jdGlvbiBjb21w
YXJlUmVzdWx0cyhleHBlY3RlZCwgYWN0dWFsKSB7CisgIHZhciB3aWR0aCA9IGV4cGVjdGVkLndp
ZHRoOworICB2YXIgaGVpZ2h0ID0gZXhwZWN0ZWQuaGVpZ2h0OworICB2YXIgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgIGNhbnZhcy53aWR0aCA9IHdpZHRoOwor
ICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
IjJkIik7CisgIHZhciBpbWdEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVp
Z2h0KTsKKyAgdmFyIHRvbGVyYW5jZSA9IDA7CisKKyAgdmFyIGV4cERhdGEgPSBleHBlY3RlZC5w
aXhlbHM7CisgIHZhciBhY3REYXRhID0gYWN0dWFsLnBpeGVsczsKKworICB2YXIgc2FtZSA9IGNv
bXBhcmVJbWFnZXMoZXhwRGF0YSwgYWN0RGF0YSwgd2lkdGgsIGhlaWdodCwgaW1nRGF0YS5kYXRh
KTsKKworICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7
CisgIHZhciBkaWZmSW1nID0gbnVsbDsKKyAgaWYgKCFzYW1lKSB7CisgICAgY3R4LnB1dEltYWdl
RGF0YShpbWdEYXRhLCAwLCAwKTsKKyAgICBkaWZmSW1nID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52
YXMoY2FudmFzKTsKKyAgfQorCisgIGlmICghcXVpZXRNb2RlKCkpIHsKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmNsYXNzTmFtZSA9ICJ0ZXN0
aW1hZ2VzIjsKKyAgICB3dHUuaW5zZXJ0SW1hZ2UoZGl2LCAicmVmZXJlbmNlIiwgZXhwZWN0ZWQu
aW1nKTsKKyAgICB3dHUuaW5zZXJ0SW1hZ2UoZGl2LCAidGVzdCIsIGFjdHVhbC5pbWcpOworICAg
IGlmIChkaWZmSW1nKSB7CisgICAgICB3dHUuaW5zZXJ0SW1hZ2UoZGl2LCAiZGlmZiIsIGRpZmZJ
bWcpOworICAgIH0KKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YnInKSk7CisKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRpdik7CisgIH0KKworICBpZiAoIXNh
bWUpIHsKKyAgICB0ZXN0RmFpbGVkKCJpbWFnZXMgYXJlIGRpZmZlcmVudCIpOworICB9IGVsc2Ug
eworICAgIHRlc3RQYXNzZWQoImltYWdlcyBhcmUgdGhlIHNhbWUiKTsKKyAgfQorCisgIGlmICgh
cXVpZXRNb2RlKCkpCisgICAgY29uc29sZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdocicpKTsKK30KKworZnVuY3Rpb24gcnVuQ29tcGFyZVRlc3QodGVzdCwgY2FsbGJhY2sp
IHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdDogIiArIHRlc3QubmFtZSk7CisgIHZhciBy
ZXN1bHRzID0gW107CisgIHZhciBjb3VudCA9IDA7CisKKyAgZnVuY3Rpb24gc3RvcmVSZXN1bHRz
KGluZGV4KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgcmVzdWx0c1tp
bmRleF0gPSByZXN1bHQ7CisgICAgICArK2NvdW50OworICAgICAgaWYgKGNvdW50ID09IDIpIHsK
KyAgICAgICAgY29tcGFyZVJlc3VsdHMocmVzdWx0c1swXSwgcmVzdWx0c1sxXSk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5v
IGVycm9ycyIpOworICAgICAgICBjYWxsYmFjaygpOworICAgICAgfQorICAgIH0KKyAgfQorCisg
IHJ1blByb2dyYW0odGVzdC5yZWZlcmVuY2VQcm9ncmFtLCB0ZXN0LCAicmVmZXJlbmNlIiwgc3Rv
cmVSZXN1bHRzKDApKTsKKyAgcnVuUHJvZ3JhbSh0ZXN0LnRlc3RQcm9ncmFtLCB0ZXN0LCAidGVz
dCIsIHN0b3JlUmVzdWx0cygxKSk7Cit9CisKK2Z1bmN0aW9uIHJ1bkJ1aWxkVGVzdCh0ZXN0LCBj
YWxsYmFjaykgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0OiAiICsgdGVzdC5uYW1lKTsK
KworICB2YXIgc2hhZGVycyA9IFtudWxsLCBudWxsXTsKKyAgdmFyIHNvdXJjZSA9IFsiIiwiIl07
CisgIHZhciBzdWNjZXNzID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTsKKyAgdmFyIGNvdW50ID0g
MDsKKworICBmdW5jdGlvbiBsb2FkU2hhZGVyKHBhdGgsIHR5cGUsIGluZGV4KSB7CisgICAgaWYg
KHBhdGggPT0gImVtcHR5IikgeworICAgICAgc2hhZGVyc1tpbmRleF0gPSBnbC5jcmVhdGVTaGFk
ZXIoKTsKKyAgICAgIHN1Y2Nlc3NbaW5kZXhdID0gdHJ1ZTsKKyAgICAgIHNvdXJjZVtpbmRleF0g
PSAiLyogZW1wdHkgKi8iOworICAgICAgYXR0YWNoQW5kTGluaygpOworICAgIH0gZWxzZSB7Cisg
ICAgICB3dHUubG9hZFRleHRGaWxlQXN5bmMocGF0aCwgZnVuY3Rpb24obG9hZFN1Y2Nlc3MsIHRl
eHQpIHsKKyAgICAgICAgaWYgKCFsb2FkU3VjY2VzcykgeworICAgICAgICAgIHN1Y2Nlc3NbaW5k
ZXhdID0gZmFsc2U7CisgICAgICAgICAgc291cmNlW2luZGV4XSA9ICIvKiBjb3VsZCBub3QgbG9h
ZCAqLyI7CisgICAgICAgICAgdGVzdEZhaWxlZCgiY291bGQgbm90IGxvYWQ6IiArIHBhdGgpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNvdXJjZVtpbmRleF0gPSB0ZXh0OworICAgICAg
ICAgIHNoYWRlcnNbaW5kZXhdID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRleHQsIHR5cGUsIGZ1bmN0
aW9uKGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obXNnKSB7CisgICAgICAg
ICAgICAgIHN1Y2Nlc3NbaW5kZXhdID0gZmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
KGluZGV4KSk7CisgICAgICAgICAgaWYgKHN1Y2Nlc3NbaW5kZXhdID09PSB1bmRlZmluZWQpIHsK
KyAgICAgICAgICAgIHN1Y2Nlc3NbaW5kZXhdID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgYXR0YWNoQW5kTGluaygpOworICAgICAgfSk7CisgICAgfQorICB9CisKKyAg
ZnVuY3Rpb24gYXR0YWNoQW5kTGluaygpIHsKKyAgICArK2NvdW50OworICAgIGlmIChjb3VudCA9
PSAyKSB7CisgICAgICBpZiAoIXF1aWV0TW9kZSgpKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICB3dHUuYWRkU2hhZGVyU291cmNlKAorICAgICAgICAgICAgYywgInZlcnRleCBzaGFkZXIiLCBz
b3VyY2VbMF0sIHRlc3QudGVzdFByb2dyYW0udmVydGV4U2hhZGVyKTsKKyAgICAgICAgZGVidWco
ImNvbXBpbGU6ICIgKyAoc3VjY2Vzc1swXSA/ICJzdWNjZXNzIiA6ICJmYWlsIikpOworICAgICAg
ICB3dHUuYWRkU2hhZGVyU291cmNlKAorICAgICAgICAgICAgYywgImZyYWdtZW50IHNoYWRlciIs
IHNvdXJjZVsxXSwgdGVzdC50ZXN0UHJvZ3JhbS5mcmFnbWVudFNoYWRlcik7CisgICAgICAgIGRl
YnVnKCJjb21waWxlOiAiICsgKHN1Y2Nlc3NbMV0gPyAic3VjY2VzcyIgOiAiZmFpbCIpKTsKKyAg
ICAgIH0KKyAgICAgIGNvbXBpbGVTdWNjZXNzID0gKHN1Y2Nlc3NbMF0gJiYgc3VjY2Vzc1sxXSk7
CisgICAgICBpZiAoIXRlc3QuY29tcHN0YXQpIHsKKyAgICAgICAgaWYgKGNvbXBpbGVTdWNjZXNz
KSB7CisgICAgICAgICAgdGVzdEZhaWxlZCgiZXhwZWN0ZWQgY29tcGlsZSBmYWlsdXJlIGJ1dCB3
YXMgc3VjY2Vzc2Z1bCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRlc3RQYXNzZWQo
ImV4cGVjdGVkIGNvbXBpbGUgZmFpbHVyZSBhbmQgaXQgZmFpbGVkIik7CisgICAgICAgIH0KKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjb21waWxlU3VjY2VzcykgeworICAgICAgICAgIHRl
c3RQYXNzZWQoImV4cGVjdGVkIGNvbXBpbGUgc3VjY2VzcyBhbmQgaXQgd2FzIHN1Y2Nlc3NmdWwi
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0ZXN0RmFpbGVkKCJleHBlY3RlZCBjb21w
aWxlIHN1Y2Nlc3MgYnV0IGl0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIHZhciBsaW5r
U3VjY2VzcyA9IHRydWU7CisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LmNyZWF0ZVByb2dyYW0o
Z2wsIHNoYWRlcnNbMF0sIHNoYWRlcnNbMV0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGxpbmtT
dWNjZXNzID0gZmFsc2U7CisgICAgICAgIH0pOworICAgICAgICBpZiAobGlua1N1Y2Nlc3MgIT09
IHRlc3QubGlua3N0YXQpIHsKKyAgICAgICAgICB0ZXN0RmFpbGVkKCJleHBlY3RlZCBsaW5rIHRv
ICIgKyAodGVzdC5saW5rc3RhdCA/ICJzdWNjZWVkIiA6ICJmYWlsIikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIHRlc3RQYXNzZWQoInNoYWRlcnMgY29tcGlsZWQgYW5kIGxpbmtlZCBh
cyBleHBlY3RlZC4iKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgY2FsbGJhY2soKTsKKyAg
ICB9CisgIH0KKworICBsb2FkU2hhZGVyKHRlc3QudGVzdFByb2dyYW0udmVydGV4U2hhZGVyLCBn
bC5WRVJURVhfU0hBREVSLCAwKTsKKyAgbG9hZFNoYWRlcih0ZXN0LnRlc3RQcm9ncmFtLmZyYWdt
ZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIsIDEpOworfQorCit2YXIgdGVzdFBhdHRlcm5z
ID0geworICBjb21wYXJlOiBydW5Db21wYXJlVGVzdCwKKyAgYnVpbGQ6IHJ1bkJ1aWxkVGVzdCwK
KworICBkdW1teTogbnVsbCAgLy8ganVzdCBoZXJlIHRvIG1hcmsgdGhlIGVuZAorfTsKKworZnVu
Y3Rpb24gTG9nR0xDYWxsKGZ1bmN0aW9uTmFtZSwgYXJncykgeworICBjb25zb2xlLmxvZygiZ2wu
IiArIGZ1bmN0aW9uTmFtZSArICIoIiArCisgICAgICAgICAgICBXZWJHTERlYnVnVXRpbHMuZ2xG
dW5jdGlvbkFyZ3NUb1N0cmluZyhmdW5jdGlvbk5hbWUsIGFyZ3MpICsgIikiKTsKK30KKworLy8g
UnVucyB0aGUgdGVzdHMgYXN5bmMgc2luY2UgdGhleSB3aWxsIGxvYWQgc2hhZGVycy4KK2Z1bmN0
aW9uIHJ1bihvYmopIHsKKyAgZGVzY3JpcHRpb24oKTsKKworICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKKyAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KGNhbnZhcyk7CisgIGlmICh3aW5kb3cuV2ViR0xEZWJ1Z1V0aWxzKSB7CisgICAgZ2wgPSBXZWJH
TERlYnVnVXRpbHMubWFrZURlYnVnQ29udGV4dChnbCwgdW5kZWZpbmVkLCBMb2dHTENhbGwpOwor
ICB9CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7CisgICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChnbC5jYW52
YXMud2lkdGggIT0gNTAwIHx8IGdsLmNhbnZhcy5oZWlnaHQgIT0gNTAwKSB7CisgICAgdGVzdEZh
aWxlZCgiY2FudmFzIG11c3QgYmUgNTAweDUwMCBwaXhlbHM6IFNldmVyYWwgc2hhZGVycyBhcmUg
aGFyZCBjb2RlZCB0byB0aGlzIHNpemUuIik7CisgIH0KKworICB2YXIgdGVzdHMgPSBvYmoudGVz
dHM7CisgIHZhciBuZHggPSAwOworCisgIGZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIGlm
IChuZHggPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICAgIHZhciB0ZXN0ID0gdGVzdHNbbmR4KytdOwor
ICAgICAgdmFyIGZuID0gdGVzdFBhdHRlcm5zW3Rlc3QucGF0dGVybl07CisgICAgICBpZiAoIWZu
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoInRlc3QgcGF0dGVybjogIiArIHRlc3QucGF0dGVybiAr
ICIgbm90IHN1cG9wcnRlZCIpCisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBmbih0ZXN0LCBydW5OZXh0VGVzdCk7CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9CisgIH0KKyAgcnVuTmV4dFRlc3QoKTsKK30KKwor
cmV0dXJuIHsKKyAgcnVuOiBydW4sCit9OworfSgpKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMv
Z2V0LWFjdGl2ZS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9wcm9ncmFtcy9nZXQtYWN0aXZlLXRlc3QuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZTJiNGY5YjFhYmYxMDFhMzlhOTFmNGIwNGY4ZGNmNTBlOGI5Y2I4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2V0LWFjdGl2ZS10ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMTkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3Qgb2Yg
Z2V0QWN0aXZlQXR0cmliIGFuZCBnZXRBY3RpdmVVbmlmb3JtIik7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBjb250ZXh0ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNv
bnRleHQyID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0
YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKK3ZhciBwcm9ncmFtMiA9IHd0dS5sb2FkUHJvZ3JhbUZy
b21GaWxlKGNvbnRleHQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4uLy4uL3Jlc291
cmNlcy9pbnRBcnJheVVuaWZvcm1TaGFkZXIudmVydCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLi4vLi4vcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKKword3R1Lmds
RXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SKTsKK3Nob3VsZEJlKCJjb250
ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkubmFtZSIsICIndV9tb2RlbFZpZXdQcm9q
TWF0cml4JyIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAw
KS50eXBlIiwgImNvbnRleHQuRkxPQVRfTUFUNCIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCAwKS5zaXplIiwgIjEiKTsKK3Nob3VsZEJlTnVsbCgiY29udGV4
dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDEpIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNv
bnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAtMSkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmdldEFjdGl2
ZVVuaWZvcm0obnVsbCwgMCkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4
dC5OT19FUlJPUik7CisKKy8vIHdlIGRvbid0IGtub3cgdGhlIG9yZGVyIHRoZSBhdHRyaWJzIHdp
bGwgYXBwZWFyLgordmFyIGluZm8gPSBbCisgIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIDApLAorICBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKQorXTsKK2ZvciAo
dmFyIGlpID0gMDsgaWkgPCBpbmZvLmxlbmd0aDsgKytpaSkKKyAgICBzaG91bGRCZU5vbk51bGwo
ImluZm9baWldIik7CisKK3ZhciBleHBlY3RlZCA9IFsKKyAgeyBuYW1lOiAnYV9ub3JtYWwnLCB0
eXBlOiBjb250ZXh0LkZMT0FUX1ZFQzMsIHNpemU6IDEgfSwKKyAgeyBuYW1lOiAnYV92ZXJ0ZXgn
LCB0eXBlOiBjb250ZXh0LkZMT0FUX1ZFQzQsIHNpemU6IDEgfQorXTsKKworaWYgKGluZm9bMF0u
bmFtZSAhPSBleHBlY3RlZFswXS5uYW1lKSB7CisgIHZhciB0ID0gaW5mb1swXTsKKyAgaW5mb1sw
XSA9IGluZm9bMV07CisgIGluZm9bMV0gPSB0OworfQorCitmb3IgKHZhciBpaSA9IDA7IGlpIDwg
aW5mby5sZW5ndGg7ICsraWkpIHsKKyAgc2hvdWxkQmUoImluZm9baWldLm5hbWUiLCAiZXhwZWN0
ZWRbaWldLm5hbWUiKTsKKyAgc2hvdWxkQmUoImluZm9baWldLnR5cGUiLCAiZXhwZWN0ZWRbaWld
LnR5cGUiKTsKKyAgc2hvdWxkQmUoImluZm9baWldLnNpemUiLCAiZXhwZWN0ZWRbaWldLnNpemUi
KTsKK30KKworLy8gd2UgZG9uJ3Qga25vdyB0aGUgb3JkZXIgdGhlIHVuaWZvcm1zIHdpbGwgYXBw
ZWFyLgordmFyIGluZm8yID0gWworICAgIGNvbnRleHQyLmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bTIsIDApLAorICAgIGNvbnRleHQyLmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbTIsIDEpCitdOwor
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IGluZm8yLmxlbmd0aDsgKytpaSkKKyAgICBzaG91bGRCZU5v
bk51bGwoImluZm8yW2lpXSIpOworCit2YXIgZXhwZWN0ZWQyID0gWworICAgIHsgbmFtZTogJ2l2
YWwnLCB0eXBlOiBjb250ZXh0Mi5JTlQsIHNpemU6IDEgfSwKKyAgICB7IG5hbWU6ICdpdmFsMlsw
XScsIHR5cGU6IGNvbnRleHQyLklOVCwgc2l6ZTogMiB9CitdOworCitpZiAoaW5mbzJbMF0ubmFt
ZSAhPSBleHBlY3RlZDJbMF0ubmFtZSkgeworICAgIHQgPSBpbmZvMlswXTsKKyAgICBpbmZvMlsw
XSA9IGluZm8yWzFdOworICAgIGluZm8yWzFdID0gdDsKK30KKworZm9yICh2YXIgaWkgPSAwOyBp
aSA8IGluZm8yLmxlbmd0aDsgKytpaSkgeworICAgIHNob3VsZEJlKCJpbmZvMltpaV0ubmFtZSIs
ICJleHBlY3RlZDJbaWldLm5hbWUiKTsKKyAgICBzaG91bGRCZSgiaW5mbzJbaWldLnR5cGUiLCAi
ZXhwZWN0ZWQyW2lpXS50eXBlIik7CisgICAgc2hvdWxkQmUoImluZm8yW2lpXS5zaXplIiwgImV4
cGVjdGVkMltpaV0uc2l6ZSIpOworfQorCitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIDIpIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRl
eHQuSU5WQUxJRF9WQUxVRSk7CitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIC0xKSIpOword3R1LmdsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklO
VkFMSURfVkFMVUUpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGws
IDApIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwor
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQyLCBjb250ZXh0Lk5PX0VSUk9SKTsKKworZGVi
dWcoIkNoZWNrIHRyeWluZyB0byBnZXQgYXR0cmlicyBmcm9tIGRpZmZlcmVudCBjb250ZXh0Iik7
CitzaG91bGRCZU51bGwoImNvbnRleHQyLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSIpOwor
d3R1LmdsRXJyb3JTaG91bGRCZShjb250ZXh0MiwgY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04p
Oworc2hvdWxkQmVOdWxsKCJjb250ZXh0Mi5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIik7
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNvbnRleHQyLCBjb250ZXh0Mi5JTlZBTElEX09QRVJBVElP
Tik7CisKK2RlYnVnKCJDaGVjayB0cnlpbmcgdG8gZ2V0IGF0dHJpYnMgZnJvbSBkZWxldGVkIHBy
b2dyYW0iKTsKK2NvbnRleHQuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK3Nob3VsZEJlTnVsbCgi
Y29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIik7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CitzaG91bGRCZU51bGwoImNvbnRl
eHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGNv
bnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wt
YmluZC1hdHRyaWItbG9jYXRpb24tbG9uZy1uYW1lcy10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9wcm9ncmFtcy9nbC1i
aW5kLWF0dHJpYi1sb2NhdGlvbi1sb25nLW5hbWVzLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDMy
OGJlZTQ1YjE1ZGVjZTBhOWE3MGNiOWRkZmE4M2YzMTdjMjYxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
cHJvZ3JhbXMvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tbG9uZy1uYW1lcy10ZXN0Lmh0bWwKQEAg
LTAsMCArMSwxNTMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEJpbmRBdHRyaWJMb2NhdGlvbiBMb25nIE5hbWVzIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOyIgaWQ9ImNhbnZhcyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2Nh
bnZhcz4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbiQoc3VmZml4KTsKK2F0dHJpYnV0ZSB2
ZWM0IHZDb2xvciQoc3VmZml4KTsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpCit7
CisgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uJChzdWZmaXgpOworICBjb2xvciA9IHZDb2xvciQo
c3VmZml4KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3Zh
cnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IGNvbG9y
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdXNpbmcgbG9uZyBuYW1lcyB3aXRoIGJpbmRBdHRyaWJMb2NhdGlvbiB3
b3JrLiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2Fu
dmFzIik7CitzaG91bGRCZU5vbk51bGwoImdsIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVj
a2luZyBnbC5iaW5kQXR0cmliTG9jYXRpb24gd2l0aCBsb25nIG5hbWVzLiIpOworCit2YXIgcHJv
Z3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKwordmFyIHN1ZmZpeCA9ICJsb25nIjsKK2ZvciAo
dmFyIGlpID0gMDsgaWkgPCA1OyArK2lpKSB7CisgIHN1ZmZpeCA9IHN1ZmZpeCArIHN1ZmZpeDsK
K30KK3ZhciByZXBsYWNlbWVudHMgPSB7CisgIHN1ZmZpeDogc3VmZml4Cit9OworCit2YXIgdnNy
YyA9IHd0dS5yZXBsYWNlUGFyYW1zKHd0dS5nZXRTY3JpcHQoInZzaGFkZXIiKSwgcmVwbGFjZW1l
bnRzKTsKK3ZhciBmc3JjID0gd3R1LnJlcGxhY2VQYXJhbXMod3R1LmdldFNjcmlwdCgiZnNoYWRl
ciIpLCByZXBsYWNlbWVudHMpOworCit2YXIgdnMgPSB3dHUubG9hZFNoYWRlcihnbCwgdnNyYywg
Z2wuVkVSVEVYX1NIQURFUik7Cit2YXIgZnMgPSB3dHUubG9hZFNoYWRlcihnbCwgZnNyYywgZ2wu
RlJBR01FTlRfU0hBREVSKTsKKwordmFyIGF0dHJpYnMgPSB7CisgIHZQb3NpdGlvbjogInZQb3Np
dGlvbiIgKyBzdWZmaXgsCisgIHZDb2xvcjogInZDb2xvciIgKyBzdWZmaXgKK307CisKK2dsLmF0
dGFjaFNoYWRlcihwcm9ncmFtLCB2cyk7CitnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnMpOwor
Cit2YXIgcG9zaXRpb25zID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgcG9zaXRpb25zKTsKK2dsLmJ1ZmZlckRhdGEoCisgIGdsLkFSUkFZX0JVRkZF
UiwKKyAgbmV3IEZsb2F0MzJBcnJheSgKKyAgICAgIFsgMS4wLCAgMS4wLCAwLjAsCisgICAgICAg
LTEuMCwgIDEuMCwgMC4wLAorICAgICAgIC0xLjAsIC0xLjAsIDAuMCwKKyAgICAgICAgMS4wLCAg
MS4wLCAwLjAsCisgICAgICAgLTEuMCwgLTEuMCwgMC4wLAorICAgICAgICAxLjAsIC0xLjAsIDAu
MF0pLAorICBnbC5TVEFUSUNfRFJBVyk7CisKK3ZhciBjb2xvcnMgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMpOworZ2wuYnVmZmVyRGF0
YSgKKyAgZ2wuQVJSQVlfQlVGRkVSLAorICBuZXcgRmxvYXQzMkFycmF5KAorICAgICAgWyAwLDEs
MCwxLAorICAgICAgICAwLDEsMCwxLAorICAgICAgICAwLDEsMCwxLAorICAgICAgICAwLDEsMCwx
LAorICAgICAgICAwLDEsMCwxLAorICAgICAgICAwLDEsMCwxXSksCisgIGdsLlNUQVRJQ19EUkFX
KTsKKworZnVuY3Rpb24gc2V0QmluZExvY2F0aW9ucyhjb2xvckxvY2F0aW9uLCBwb3NpdGlvbkxv
Y2F0aW9uKSB7CisgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBwb3NpdGlvbkxvY2F0
aW9uLCBhdHRyaWJzLnZQb3NpdGlvbik7CisgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBjb2xvckxvY2F0aW9uLCBhdHRyaWJzLnZDb2xvcik7CisgIGdsLmxpbmtQcm9ncmFtKHByb2dy
YW0pOworICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICB2YXIgbGlua2VkID0gKGdsLmdldFBy
b2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpICE9IDApOworICBhc3NlcnRN
c2cobGlua2VkLCAicHJvZ3JhbSBsaW5rZWQgc3VjY2Vzc2Z1bGx5Iik7CisKKyAgZGVidWcoInZQ
b3NpdGlvbjoiICsgZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmlicy52UG9zaXRp
b24pKQorICBkZWJ1ZygidkNvbG9yICAgOiIgKyBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBhdHRyaWJzLnZDb2xvcikpCisgIGFzc2VydE1zZyhnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCBhdHRyaWJzLnZQb3NpdGlvbikgPT0gcG9zaXRpb25Mb2NhdGlvbiwKKyAgICAgICAgICAg
ICJsb2NhdGlvbiBvZiB2UG9zaXRpb24gc2hvdWxkIGJlICIgKyBwb3NpdGlvbkxvY2F0aW9uKTsK
KyAgYXNzZXJ0TXNnKGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0dHJpYnMudkNvbG9y
KSA9PSBjb2xvckxvY2F0aW9uLAorICAgICAgICAgICAgImxvY2F0aW9uIG9mIHZDb2xvciBzaG91
bGQgYmUgIiArIGNvbG9yTG9jYXRpb24pOworCisgIHZhciBwbG9jID0gZ2wuZ2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgYXR0cmlicy52UG9zaXRpb24pOworICB2YXIgY2xvYyA9IGdsLmdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0dHJpYnMudkNvbG9yKTsKKyAgZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9ucyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHBvc2l0aW9uTG9jYXRpb24pOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9j
YXRpb24sIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCBjb2xvcnMpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxv
Y2F0aW9uKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCA0LCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworfQorCitmdW5jdGlvbiBjaGVja0RyYXcoY29sb3JMb2NhdGlv
biwgcG9zaXRpb25Mb2NhdGlvbiwgciwgZywgYiwgYSkgeworICB3dHUuY2xlYXJBbmREcmF3VW5p
dFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFtyLCBnLCBiLCBhXSwgInNob3VsZCBi
ZSBncmVlbiIpOworCisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0
aW9uKTsKKyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOworfQor
CitzZXRCaW5kTG9jYXRpb25zKDIsIDMpOworY2hlY2tEcmF3KDIsIDMsIDAsIDI1NSwgMCwgMjU1
KTsKKworc2V0QmluZExvY2F0aW9ucygwLCAzKTsKK2dsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eSgwKTsKK2dsLnZlcnRleEF0dHJpYjRmKDAsIDEsIDAsIDAsIDEpOworY2hlY2tEcmF3KDAsIDMs
IDI1NSwgMCwgMCwgMjU1KTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Ip
OworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wtYmluZC1hdHRyaWItbG9j
YXRpb24tdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tdGVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5MDljNjQ0OTE1YTQ5NTYxMmNmYzc3OWUwN2JkOWJjMDhlNTI1N2EK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9wcm9ncmFtcy9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0
Lmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEJpbmRBdHRyaWJMb2NhdGlvbiBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIHN0eWxlPSJib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsiIGlkPSJjYW52YXMiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52
YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNj
cmlwdCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjNCB2Q29sb3I7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlvbiA9IHZQ
b3NpdGlvbjsKKyAgY29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICBn
bF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXBsZW1lbnRhdGlvbnMg
ZG9uJ3QgYWxsb3cgbmFtZXMgdGhhdCBzdGFydCB3aXRoICdnbF8nIHdoZW4gY2FsbGluZyBiaW5k
QXR0cmliTG9jYXRpb24uIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4
dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCJjYW52YXMiKTsKK3Nob3VsZEJlTm9uTnVsbCgiZ2wiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIkNoZWNraW5nIGdsLmJpbmRBdHRyaWJMb2NhdGlvbi4iKTsKKwordmFyIHByb2dyYW0g
PSBnbC5jcmVhdGVQcm9ncmFtKCk7CitnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMCwg
ImdsX2ZvbyIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgImJpbmRBdHRyaWJMb2NhdGlvbiBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9O
IGlmIG5hbWUgc3RhcnRzIHdpdGggJ2dsXyciKTsKK2dsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCAwLCAiZ2xfVGV4Q29vcmQwIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwKKyAgICAiYmluZEF0dHJpYkxvY2F0aW9uIHNob3VsZCByZXR1cm4gSU5W
QUxJRF9PUEVSQVRJT04gaWYgbmFtZSBzdGFydHMgd2l0aCAnZ2xfJyIpOworCit2YXIgdnMgPSB3
dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICd2c2hhZGVyJywgZ2wuVkVSVEVYX1NIQURFUik7
Cit2YXIgZnMgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICdmc2hhZGVyJywgZ2wuRlJB
R01FTlRfU0hBREVSKTsKK2dsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2cyk7CitnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgZnMpOworCit2YXIgcG9zaXRpb25zID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25zKTsKK2dsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLjUsMCwgLTAuNSwtMC41
LDAsIDAuNSwtMC41LDAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKwordmFyIGNvbG9ycyA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9ycyk7Citn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgMCwx
LDAsMSwKKyAgICAwLDEsMCwxLAorICAgIDAsMSwwLDFdKSwgZ2wuU1RBVElDX0RSQVcpOworCitm
dW5jdGlvbiBzZXRCaW5kTG9jYXRpb25zKGNvbG9yTG9jYXRpb24sIHBvc2l0aW9uTG9jYXRpb24p
IHsKKyAgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHBvc2l0aW9uTG9jYXRpb24sICJ2
UG9zaXRpb24iKTsKKyAgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGNvbG9yTG9jYXRp
b24sICJ2Q29sb3IiKTsKKyAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgIGdsLnVzZVByb2dy
YW0ocHJvZ3JhbSk7CisgIHZhciBsaW5rZWQgPSAoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUykgIT0gMCk7CisgIGFzc2VydE1zZyhsaW5rZWQsICJwcm9ncmFt
IGxpbmtlZCBzdWNjZXNzZnVsbHkiKTsKKworICBkZWJ1ZygidlBvc2l0aW9uOiIgKyBnbC5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAidlBvc2l0aW9uIikpCisgIGRlYnVnKCJ2Q29sb3IgICA6
IiArIGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJ2Q29sb3IiKSkKKyAgYXNzZXJ0TXNn
KGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJ2UG9zaXRpb24iKSA9PSBwb3NpdGlvbkxv
Y2F0aW9uLAorICAgICAgICAgICAgImxvY2F0aW9uIG9mIHZQb3NpdGlvbiBzaG91bGQgYmUgIiAr
IHBvc2l0aW9uTG9jYXRpb24pOworICBhc3NlcnRNc2coZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJv
Z3JhbSwgInZDb2xvciIpID09IGNvbG9yTG9jYXRpb24sCisgICAgICAgICAgICAibG9jYXRpb24g
b2YgdkNvbG9yIHNob3VsZCBiZSAiICsgY29sb3JMb2NhdGlvbik7CisKKyAgdmFyIHBsb2MgPSBn
bC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAidlBvc2l0aW9uIik7CisgIHZhciBjbG9jID0g
Z2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgInZDb2xvciIpOworICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25zKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25M
b2NhdGlvbiwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIGNvbG9ycyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9y
TG9jYXRpb24pOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jYXRpb24sIDQsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRHJhdyhjb2xvckxvY2F0
aW9uLCBwb3NpdGlvbkxvY2F0aW9uLCByLCBnLCBiLCBhKSB7CisgIGdsLmNsZWFyQ29sb3IoMCwg
MCwgMCwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZG
RVJfQklUKTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworCisgIHZhciB3
aWR0aCA9IDUwOworICB2YXIgaGVpZ2h0ID0gNTA7CisKKyAgLy8gVGVzdCBzZXZlcmFsIGxvY2F0
aW9ucworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgMSwgWzAsIDAsIDAs
IDI1NV0sCisgICAgICAiRmlyc3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrIik7CisgIHd0dS5j
aGVja0NhbnZhc1JlY3QoZ2wsIDIwLCAxNSwgMTAsIDEsIFtyLCBnLCBiLCBhXSwKKyAgICAgICJM
aW5lIDE1IHNob3VsZCBiZSByZWQgZm9yIGF0IGxlYXN0IDEwIHJnYmEgcGl4ZWxzIHN0YXJ0aW5n
IDIwIHBpeGVscyBpbiIpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCBoZWlnaHQgLSAx
LCB3aWR0aCwgMCwgWzAsIDAsIDAsIDI1NV0sCisgICAgICAiTGFzdCBsaW5lIHNob3VsZCBiZSBh
bGwgYmxhY2siKTsKKworICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2Nh
dGlvbik7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9uKTsKK30K
Kworc2V0QmluZExvY2F0aW9ucygyLCAzKTsKK2NoZWNrRHJhdygyLCAzLCAwLCAyNTUsIDAsIDI1
NSk7CisKK3NldEJpbmRMb2NhdGlvbnMoMCwgMyk7CitnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoMCk7CitnbC52ZXJ0ZXhBdHRyaWI0ZigwLCAxLCAwLCAwLCAxKTsKK2NoZWNrRHJhdygwLCAz
LCAyNTUsIDAsIDAsIDI1NSk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL2dsLWdldC1hY3RpdmUtYXR0
cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9wcm9ncmFtcy9nbC1nZXQtYWN0aXZlLWF0dHJpYnV0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2ZGM0MjJlYWViYjA1NWI2YjIyMmU0NTFjNTk3MWU0NWY1MWVmYWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9wcm9ncmFtcy9nbC1nZXQtYWN0aXZlLWF0dHJpYnV0ZS5odG1sCkBAIC0wLDAg
KzEsODUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIGdldEFjdGl2ZUF0dHJpYiBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxNiIgaGVpZ2h0PSIx
NiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KK2F0dHJpYnV0ZSAkdHlwZSBhdHRyMDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KDAsIDAsIDAsIGF0dHIwJGFjY2Vzcyk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsMSwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3RzIGdldEFjdGl2ZUF0dHJpYiBmb3Ig
dmFyaW91cyB0eXBlcyIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK3ZhciB0ZXN0cyA9IFsKK3sgZ2xUeXBl
OiBnbC5GTE9BVCwgICAgICBzaXplOiAxLCB0eXBlOiAnZmxvYXQnLCBhY2Nlc3M6ICcnfSwKK3sg
Z2xUeXBlOiBnbC5GTE9BVF9WRUMyLCBzaXplOiAxLCB0eXBlOiAndmVjMicsICBhY2Nlc3M6ICdb
MV0nfSwKK3sgZ2xUeXBlOiBnbC5GTE9BVF9WRUMzLCBzaXplOiAxLCB0eXBlOiAndmVjMycsICBh
Y2Nlc3M6ICdbMl0nfSwKK3sgZ2xUeXBlOiBnbC5GTE9BVF9WRUM0LCBzaXplOiAxLCB0eXBlOiAn
dmVjNCcsICBhY2Nlc3M6ICdbM10nfSwKK3sgZ2xUeXBlOiBnbC5GTE9BVF9NQVQyLCBzaXplOiAx
LCB0eXBlOiAnbWF0MicsICBhY2Nlc3M6ICdbMV1bMV0nfSwKK3sgZ2xUeXBlOiBnbC5GTE9BVF9N
QVQzLCBzaXplOiAxLCB0eXBlOiAnbWF0MycsICBhY2Nlc3M6ICdbMl1bMl0nfSwKK3sgZ2xUeXBl
OiBnbC5GTE9BVF9NQVQ0LCBzaXplOiAxLCB0eXBlOiAnbWF0NCcsICBhY2Nlc3M6ICdbM11bM10n
fSwKK107CisKK3ZhciBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndnNoYWRlcicp
LnRleHQ7Cit2YXIgZnMgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICdmc2hhZGVyJywg
Z2wuRlJBR01FTlRfU0hBREVSKTsKK2ZvciAodmFyIHR0ID0gMDsgdHQgPCB0ZXN0cy5sZW5ndGg7
ICsrdHQpIHsKKyAgdmFyIHQgPSB0ZXN0c1t0dF07CisgIHZhciB2cyA9IHd0dS5sb2FkU2hhZGVy
KAorICAgICAgZ2wsCisgICAgICBzb3VyY2UucmVwbGFjZSgnJHR5cGUnLCB0LnR5cGUpLnJlcGxh
Y2UoJyRhY2Nlc3MnLCB0LmFjY2VzcyksCisgICAgICBnbC5WRVJURVhfU0hBREVSKTsKKyAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbdnMsIGZzXSk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAgdmFy
IG51bUF0dHJpYnMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9B
VFRSSUJVVEVTKTsKKyAgdmFyIGZvdW5kID0gZmFsc2U7CisgIGZvciAodmFyIGlpID0gMDsgaWkg
PCBudW1BdHRyaWJzOyArK2lpKSB7CisgICAgdmFyIGluZm8gPSBnbC5nZXRBY3RpdmVBdHRyaWIo
cHJvZ3JhbSwgaWkpOworICAgIGlmIChpbmZvLm5hbWUgPT0gJ2F0dHIwJykgeworICAgICAgZm91
bmQgPSB0cnVlOworICAgICAgYXNzZXJ0TXNnKGluZm8udHlwZSA9PSB0LmdsVHlwZSwKKyAgICAg
ICAgICAgICAgICAidHlwZSBtdXN0IGJlICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHQuZ2xU
eXBlKSArICIgd2FzICIgKworICAgICAgICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwg
aW5mby50eXBlKSk7CisgICAgICBhc3NlcnRNc2coaW5mby5zaXplID09IHQuc2l6ZSwKKyAgICAg
ICAgICAgICAgICAic2l6ZSBtdXN0IGJlICIgKyB0LnNpemUgKyAnIHdhcyAnICsgaW5mby5zaXpl
KTsKKyAgICB9CisgIH0KKyAgaWYgKCFmb3VuZCkgeworICAgIHRlc3RGYWlsZWQoImF0dHJpYiAn
YXR0cjAnIG5vdCBmb3VuZCIpOworICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL2ds
LWdldC1hY3RpdmUtdW5pZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wtZ2V0LWFjdGl2ZS11bmlmb3Jt
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjk1YjU5ODdjYzRhNGI2MjYxYjg2Y2YyYTk3YzI0N2FiNGIyYjg5
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL2dsLWdldC1hY3RpdmUtdW5pZm9ybS5odG1s
CkBAIC0wLDAgKzEsMTM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBnZXRBY3RpdmVVbmlmb3JtIGNvbmZvcm1hbmNlIHRlc3Qu
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjE2
IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwg
MCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtICR0eXBl
IHVuaWZvcm0wOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsJGFj
Y2VzcywwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQSIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxv
YXQgdW5pZm9ybTA7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCx1
bmlmb3JtMCwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQiIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0g
ZmxvYXQgdW5pZm9ybTA7Cit1bmlmb3JtIGZsb2F0IHVuaWZvcm0xOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsdW5pZm9ybTAsdW5pZm9ybTEsMSk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdHMgZ2V0QWN0
aXZlVW5pZm9ybSBmb3IgdmFyaW91cyB0eXBlcyIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK3ZhciB0ZXN0
cyA9IFsKKyAgeyBnbFR5cGU6IGdsLkZMT0FULCAgICAgICAgc2l6ZTogMSwgdHlwZTogJ2Zsb2F0
JywgICAgICAgYWNjZXNzOiAndW5pZm9ybTAnfSwKKyAgeyBnbFR5cGU6IGdsLkZMT0FUX1ZFQzIs
ICAgc2l6ZTogMSwgdHlwZTogJ3ZlYzInLCAgICAgICAgYWNjZXNzOiAndW5pZm9ybTBbMV0nfSwK
KyAgeyBnbFR5cGU6IGdsLkZMT0FUX1ZFQzMsICAgc2l6ZTogMSwgdHlwZTogJ3ZlYzMnLCAgICAg
ICAgYWNjZXNzOiAndW5pZm9ybTBbMl0nfSwKKyAgeyBnbFR5cGU6IGdsLkZMT0FUX1ZFQzQsICAg
c2l6ZTogMSwgdHlwZTogJ3ZlYzQnLCAgICAgICAgYWNjZXNzOiAndW5pZm9ybTBbM10nfSwKKyAg
eyBnbFR5cGU6IGdsLkZMT0FUX01BVDIsICAgc2l6ZTogMSwgdHlwZTogJ21hdDInLCAgICAgICAg
YWNjZXNzOiAndW5pZm9ybTBbMV1bMV0nfSwKKyAgeyBnbFR5cGU6IGdsLkZMT0FUX01BVDMsICAg
c2l6ZTogMSwgdHlwZTogJ21hdDMnLCAgICAgICAgYWNjZXNzOiAndW5pZm9ybTBbMl1bMl0nfSwK
KyAgeyBnbFR5cGU6IGdsLkZMT0FUX01BVDMsICAgc2l6ZTogMSwgdHlwZTogJ21hdDMnLCAgICAg
ICAgYWNjZXNzOiAndW5pZm9ybTBbMl1bMl0nfSwKKyAgeyBnbFR5cGU6IGdsLkZMT0FUX01BVDQs
ICAgc2l6ZTogMSwgdHlwZTogJ21hdDQnLCAgICAgICAgYWNjZXNzOiAndW5pZm9ybTBbM11bM10n
fSwKKyAgeyBnbFR5cGU6IGdsLklOVCwgICAgICAgICAgc2l6ZTogMSwgdHlwZTogJ2ludCcsICAg
ICAgICAgYWNjZXNzOiAnZmxvYXQodW5pZm9ybTApJ30sCisgIHsgZ2xUeXBlOiBnbC5JTlRfVkVD
MiwgICAgIHNpemU6IDEsIHR5cGU6ICdpdmVjMicsICAgICAgIGFjY2VzczogJ2Zsb2F0KHVuaWZv
cm0wWzFdKSd9LAorICB7IGdsVHlwZTogZ2wuSU5UX1ZFQzMsICAgICBzaXplOiAxLCB0eXBlOiAn
aXZlYzMnLCAgICAgICBhY2Nlc3M6ICdmbG9hdCh1bmlmb3JtMFsyXSknfSwKKyAgeyBnbFR5cGU6
IGdsLklOVF9WRUM0LCAgICAgc2l6ZTogMSwgdHlwZTogJ2l2ZWM0JywgICAgICAgYWNjZXNzOiAn
ZmxvYXQodW5pZm9ybTBbM10pJ30sCisgIHsgZ2xUeXBlOiBnbC5CT09MLCAgICAgICAgIHNpemU6
IDEsIHR5cGU6ICdib29sJywgICAgICAgIGFjY2VzczogJ2Zsb2F0KHVuaWZvcm0wKSd9LAorICB7
IGdsVHlwZTogZ2wuQk9PTF9WRUMyLCAgICBzaXplOiAxLCB0eXBlOiAnYnZlYzInLCAgICAgICBh
Y2Nlc3M6ICdmbG9hdCh1bmlmb3JtMFsxXSknfSwKKyAgeyBnbFR5cGU6IGdsLkJPT0xfVkVDMywg
ICAgc2l6ZTogMSwgdHlwZTogJ2J2ZWMzJywgICAgICAgYWNjZXNzOiAnZmxvYXQodW5pZm9ybTBb
Ml0pJ30sCisgIHsgZ2xUeXBlOiBnbC5CT09MX1ZFQzQsICAgIHNpemU6IDEsIHR5cGU6ICdidmVj
NCcsICAgICAgIGFjY2VzczogJ2Zsb2F0KHVuaWZvcm0wWzNdKSd9LAorICB7IGdsVHlwZTogZ2wu
U0FNUExFUl8yRCwgICBzaXplOiAxLCB0eXBlOiAnc2FtcGxlcjJEJywgICBhY2Nlc3M6ICd0ZXh0
dXJlMkQodW5pZm9ybTAsIHZlYzIoMCwwKSkueCd9LAorICB7IGdsVHlwZTogZ2wuU0FNUExFUl9D
VUJFLCBzaXplOiAxLCB0eXBlOiAnc2FtcGxlckN1YmUnLCBhY2Nlc3M6ICd0ZXh0dXJlQ3ViZSh1
bmlmb3JtMCwgdmVjMygwLDEsMCkpLngnfQorXTsKKwordmFyIHZzID0gd3R1LmxvYWRTaGFkZXJG
cm9tU2NyaXB0KGdsLCAndnNoYWRlcicsIGdsLlZFUlRFWF9TSEFERVIpOwordmFyIHNvdXJjZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmc2hhZGVyJykudGV4dDsKKworZnVuY3Rpb24gY3Jl
YXRlUHJvZ3JhbSh0eXBlLCBhY2Nlc3MpIHsKKyAgdmFyIGZzID0gd3R1LmxvYWRTaGFkZXIoCisg
ICAgICBnbCwKKyAgICAgIHNvdXJjZS5yZXBsYWNlKCckdHlwZScsIHR5cGUpLnJlcGxhY2UoJyRh
Y2Nlc3MnLCBhY2Nlc3MpLAorICAgICAgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgdmFyIHByb2dy
YW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbdnMsIGZzXSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAgcmV0dXJuIHBy
b2dyYW07Cit9CisKK2ZvciAodmFyIHR0ID0gMDsgdHQgPCB0ZXN0cy5sZW5ndGg7ICsrdHQpIHsK
KyAgdmFyIHQgPSB0ZXN0c1t0dF07CisgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSh0LnR5
cGUsIHQuYWNjZXNzKTsKKyAgdmFyIG51bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihwcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpOworICB2YXIgZm91bmQgPSBmYWxzZTsKKyAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IG51bVVuaWZvcm1zOyArK2lpKSB7CisgICAgdmFyIGluZm8g
PSBnbC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGlpKTsKKyAgICBpZiAoaW5mby5uYW1lID09
ICd1bmlmb3JtMCcpIHsKKyAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgIGFzc2VydE1zZyhpbmZv
LnR5cGUgPT0gdC5nbFR5cGUsCisgICAgICAgICAgICAgICAgInR5cGUgbXVzdCBiZSAiICsgd3R1
LmdsRW51bVRvU3RyaW5nKGdsLCB0LmdsVHlwZSkgKyAiIHdhcyAiICsKKyAgICAgICAgICAgICAg
ICB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGluZm8udHlwZSkpOworICAgICAgYXNzZXJ0TXNnKGlu
Zm8uc2l6ZSA9PSB0LnNpemUsCisgICAgICAgICAgICAgICAgInNpemUgbXVzdCBiZSAiICsgdC5z
aXplICsgJyB3YXMgJyArIGluZm8uc2l6ZSk7CisgICAgfQorICB9CisgIGlmICghZm91bmQpIHsK
KyAgICB0ZXN0RmFpbGVkKCJ1bmlmb3JtICd1bmlmb3JtMCcgbm90IGZvdW5kIik7CisgIH0KK30K
KwordmFyIHAxID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3ZzLCAnZnNoYWRlckEnXSk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9ycyBmcm9tIHByb2dyYW0g
QSIpOwordmFyIHAyID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3ZzLCAnZnNoYWRlckInXSk7Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9ycyBmcm9tIHByb2dy
YW0gQiIpOwordmFyIGwxID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHAxLCAndW5pZm9ybTAnKTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGdldHRpbmcg
bG9jYXRpb24gb2YgdW5pZm9ybTAgcDEiKTsKK3ZhciBsMiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwMiwgJ3VuaWZvcm0wJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
Im5vIGVycm9ycyBnZXR0aW5nIGxvY2F0aW9uIG9mIHVuaWZvcm0wIHAyIik7CisKK2dsLnVzZVBy
b2dyYW0ocDIpOworZ2wudW5pZm9ybTFmKGwyLCAxKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIHNldHRpbmcgdW5pZm9ybSAwIik7CitnbC51bmlmb3Jt
MWYobDEsIDIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIGEgdW5pZm9ybSB1c2luZyBhIGxvY2F0aW9u
IGZyb20gYW5vdGhlciBwcm9ncmFtIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL2dsLWdl
dHNoYWRlcnNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wtZ2V0c2hhZGVyc291cmNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzQ2MTUzN2Q0YjcwNzY0MDE3NGI4OTM0NzYzYTg0Y2RhNTliNGY1ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3Byb2dyYW1zL2dsLWdldHNoYWRlcnNvdXJjZS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgPHRpdGxlPldlYkdMIGdldFNoYWRlclNvdXJjZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9
IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij5hYmMvL2RlZu+8ru+8r++8tO+8
oe+8s++8o++8qe+8qTwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHRoZSBzb3VyY2UgdGhhdCBnb2VzIGludG8gYSBzaGFkZXIgaXMgd2hh
dCBjb21lcyBvdXQuIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgb3JpZ2luYWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidnNoYWRlciIpLnRleHQ7Cit2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVy
KGdsLlZFUlRFWF9TSEFERVIpOworZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgb3JpZ2luYWwpOwor
dmFyIHNvdXJjZSA9IGdsLmdldFNoYWRlclNvdXJjZShzaGFkZXIpOworc2hvdWxkQmUoInNvdXJj
ZSIsICJvcmlnaW5hbCIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJT
aG91bGQgYmUgbm8gZXJyb3JzLiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvZ2wtc2hhZGVy
LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3Byb2dyYW1zL2dsLXNoYWRlci10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU2
NmY3NzMwMzVkY2NmOGMyZWYyMDJlMjJhZmViNTZkYWM3YTA4MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3Byb2dyYW1zL2dsLXNoYWRlci10ZXN0Lmh0bWwKQEAgLTAsMCArMSw5NCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVy
TCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgaWQ9
InZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlv
bjsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlv
biA9IHZQb3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IHZQb3NpdGlvbi54eSAqIDAuNSArIDAuNTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnMtZ3JlZW4iIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xf
RnJhZ0RhdGFbMF0gPSB2ZWM0KDAsIDEsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmcy1yZWQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEsIDAsIDAs
IDEpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgY2hlY2tzIGEgZmV3IHRoaW5ncyBhYm91dCBXZWJHTCBTaGFkZXJzLiIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CitpZiAoIWds
KSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
IHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIiIpOworICBkZWJ1Zygi
Q2hlY2tpbmcgc2hhZGVycy4iKTsKKworICAvLyBDcmVhdGUgdGhlIHNoYWRlciBvYmplY3QKKyAg
dmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihkZXNrdG9wR0xbJ0dFT01FVFJZX1NIQURFUl9B
UkInXSk7CisgIGFzc2VydE1zZyhzaGFkZXIgPT0gbnVsbCwKKyAgICAgICAgICAgICJzaG91bGQg
bm90IGJlIGFibGUgdG8gY3JlYXRlIEdFT01FVFJZIHNoYWRlciIpOworCisgIGNoZWNrRGVmZXJy
ZWRDb21wbGlhdGlvbigpCit9CisKK2Z1bmN0aW9uIGNoZWNrRGVmZXJyZWRDb21wbGlhdGlvbigp
IHsKKyAgdmFyIHZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICBnbC5z
aGFkZXJTb3VyY2UodnMsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2cyIpLnRleHQpOworICBn
bC5jb21waWxlU2hhZGVyKHZzKTsKKyAgdmFyIGZzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdN
RU5UX1NIQURFUik7CisgIC8vIENvbXBpbGUgdGhlIGdyZWVuIHNoYWRlcgorICBnbC5zaGFkZXJT
b3VyY2UoZnMsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcy1ncmVlbiIpLnRleHQpOworICBn
bC5jb21waWxlU2hhZGVyKGZzKTsKKyAgLy8gTG9hZCB0aGUgcmVkIHNoYWRlciBzb3VyY2UgYnV0
IGRvIE5PVCBjb21waWxlIGl0CisgIGdsLnNoYWRlclNvdXJjZShmcywgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZzLXJlZCIpLnRleHQpOworICB2YXIgcCA9IGdsLmNyZWF0ZVByb2dyYW0oKTsK
KyAgZ2wuYXR0YWNoU2hhZGVyKHAsIHZzKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKHAsIGZzKTsKKyAg
Z2wuYmluZEF0dHJpYkxvY2F0aW9uKHAsIDAsICJ2UG9zaXRpb24iKTsKKyAgZ2wubGlua1Byb2dy
YW0ocCk7CisgIGdsLnVzZVByb2dyYW0ocCk7CisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAx
KTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGds
LCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK2RlYnVnKCIiKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9wcm9ncmFtcy9pbnZhbGlkLVVURi0xNi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvaW52
YWxpZC1VVEYtMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzg1NTJhNWU2YjI3NzExMTg4MmE1OGNlMjY0
ZGQ0ZGEyODE0ZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvaW52YWxpZC1VVEYtMTYu
aHRtbApAQCAtMCwwICsxLDQ4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oJ1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBpbnRlcm5hbCBjb252ZXJzaW9uIGZyb20g
VVRGMTYgdG8gVVRGOCBpcyByb2J1c3QgdG8gaW52YWxpZCBpbnB1dHMuIEFueSBET00gZW50cnkg
cG9pbnQgd2hpY2ggY29udmVydHMgYW4gaW5jb21pbmcgc3RyaW5nIHRvIFVURjggY291bGQgYmUg
dXNlZCBmb3IgdGhpcyB0ZXN0LicpOworCit2YXIgYXJyYXkgPSBbXTsKK2FycmF5LnB1c2goU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDQ4KSk7IC8vIEgKK2FycmF5LnB1c2goU3RyaW5nLmZyb21DaGFy
Q29kZSgweDY5KSk7IC8vIGkKK2FycmF5LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ4N2Up
KTsgLy8gQm9ndXMKK3ZhciBzdHJpbmcgPSBhcnJheS5qb2luKCcnKTsKKworLy8gSW4gb3JkZXIg
dG8gbWFrZSB0aGlzIHRlc3Qgbm90IGRlcGVuZCBvbiBXZWJHTCwgdGhlIGZvbGxvd2luZyB3ZXJl
CisvLyBhdHRlbXB0ZWQ6CisvLyAgLSBTZW5kIGEgc3RyaW5nIHRvIGNvbnNvbGUubG9nCisvLyAg
LSBTdWJtaXQgYSBtYWlsdG86IGZvcm0gY29udGFpbmluZyBhIHRleHQgaW5wdXQgd2l0aCB0aGUg
Ym9ndXMKKy8vICAgIHN0cmluZworLy8gVGhlIGZpcnN0IGNvZGUgcGF0aCBkb2VzIG5vdCBwZXJm
b3JtIGEgdXRmOCBjb252ZXJzaW9uIG9mIHRoZQorLy8gaW5jb21pbmcgc3RyaW5nIHVubGVzcyBD
b25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSByZXR1cm5zCisvLyB0cnVlLiBUaGUgc2Vj
b25kIHNlZW1zIHRvIHNhbml0aXplIHRoZSBmb3JtJ3MgaW5wdXQgYmVmb3JlCisvLyBjb252ZXJ0
aW5nIGl0IHRvIGEgVVRGOCBzdHJpbmcuCisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJv
Z3JhbSgpOworZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDAsIHN0cmluZyk7Cit0ZXN0
UGFzc2VkKCJiaW5kQXR0cmliTG9jYXRpb24gd2l0aCBpbnZhbGlkIFVURi0xNiBkaWQgbm90IGNy
YXNoIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL3Byb2dyYW0taGFuZGxpbmcuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dy
YW1zL3Byb2dyYW0taGFuZGxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmMzMDIwOTVhZGY5YWNjZWY1
MjJmODJhNDQ5ODllY2NlN2Q5NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvcHJvZ3Jh
bS1oYW5kbGluZy5odG1sCkBAIC0wLDAgKzEsMTIyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgUHJvZ3JhbSBIYW5kbGluZyBDb25m
b3JtYW5jZSBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wt
Y29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247CisgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7
CisgICAgdm9pZCBtYWluKCkKKyAgICB7CisgICAgICAgIHZfY29sb3IgPSB1X2NvbG9yOworICAg
ICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyAgICB2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKKyAgICB2b2lkIG1haW4o
KQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjsKKyAgICB9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItbm90LWxpbmsiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHZhcnlpbmcgdmVjNCBmb287
CisgICAgdm9pZCBtYWluKCkKKyAgICB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IGZvbzsKKyAg
ICB9Cis8L3NjcmlwdD4KKworPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjb21w
aWxlKGdsLCBzaGFkZXIsIHNyYykgeworICAgIHZhciBzaGFkZXJTb3VyY2UgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzcmMpLnRleHQ7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgc2hh
ZGVyU291cmNlKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7Cit9CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsKK2lmICghZ2wpIHsK
KyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9CisKK3ZhciB2cyA9
IHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgInZzaGFkZXIiKTsKK3ZhciBmcyA9IHd0dS5s
b2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgImZzaGFkZXIiKTsKK3ZhciBwcmcgPSB3dHUuY3JlYXRl
UHJvZ3JhbShnbCwgdnMsIGZzKTsKK2dsLnVzZVByb2dyYW0ocHJnKTsKK2NvbnN0IHBvc2l0aW9u
TG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJnLCAnYV9wb3NpdGlvbicpOworY29uc3QgY29s
b3JMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJnLCAndV9jb2xvcicpOworCit3dHUuc2V0
dXBVbml0UXVhZChnbCwgcG9zaXRpb25Mb2MpOworCitkZWJ1ZygiRHJhdyByZWQgd2l0aCB2YWxp
ZCBwcm9ncmFtIik7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBbMSwgMCwgMCwgMV0pOword3R1
LmRyYXdVbml0UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0s
ICJzaG91bGQgYmUgcmVkIik7CisKK2RlYnVnKCJDaGFuZ2UgZnJhZ21lbnQgc2hhZGVyIHRvIG9u
ZSB0aGF0IHdpbGwgbm90IGxpbmsiKTsKK2NvbXBpbGUoZ2wsIGZzLCAiZnNoYWRlci1ub3QtbGlu
ayIpOworZGVidWcoIkRyYXcgb3JhbmdlIik7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBbMSwg
MTI3LzI1NSwgMCwgMV0pOword3R1LmRyYXdVbml0UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMo
Z2wsIFsyNTUsIDEyNywgMCwgMjU1XSwgInNob3VsZCBiZSBvcmFuZ2UiKTsKKworZGVidWcoIlRy
eSBsaW5raW5nIik7CitnbC5saW5rUHJvZ3JhbShwcmcpOworYXNzZXJ0TXNnKGdsLmdldFByb2dy
YW1QYXJhbWV0ZXIocHJnLCBnbC5MSU5LX1NUQVRVUykgPT0gZmFsc2UsICJsaW5rIHNob3VsZCBm
YWlsIik7CitkZWJ1ZygiRHJhdyBncmVlbiB0byBzaG93IGV2ZW4gdGhvdWdoIGxpbmsgZmFpbGVk
IG9sZCBwcm9ncmFtIGlzIHN0aWxsIHZhbGlkIik7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBb
MCwgMSwgMCwgMV0pOword3R1LmRyYXdVbml0UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKworZGVidWcoIkRldGFjaCBh
bmQgZGVsZXRlIHNoYWRlcnMiKTsKK2dsLmRldGFjaFNoYWRlcihwcmcsIHZzKTsKK2dsLmRldGFj
aFNoYWRlcihwcmcsIGZzKTsKK2dsLmRlbGV0ZVNoYWRlcih2cyk7CitnbC5kZWxldGVTaGFkZXIo
ZnMpOworCitkZWJ1ZygiRHJhdyBibHVlIHRvIHNob3cgZXZlbiB0aG91Z2ggc2hhZGVycyBhcmUg
Z29uZSBwcm9ncmFtIGlzIHN0aWxsIHZhbGlkIik7CitnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBb
MCwgMCwgMSwgMV0pOword3R1LmRyYXdVbml0UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAwLCAyNTUsIDI1NV0sICJzaG91bGQgYmUgYmx1ZSIpOworCitkZWJ1ZygiQ2FsbCB1c2VQ
cm9ncmFtIHRvIHNob3cgb2xkIHByb2dyYW0gY2FuIG5vdCBiZSBtYWRlIGN1cnJlbnQgYWdhaW4i
KTsKK2dsLnVzZVByb2dyYW0ocHJnKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAic2hvdWxkIGJlIGludmFsaWQiKTsKKworZGVidWcoIkRyYXcgcHVycGxl
IHRvIHNob3cgdGhlIG9yaWdpbmFsIHByb2dyYW0gaXMgc3RpbGwgdXNhYmxlIik7CitnbC51bmlm
b3JtNGZ2KGNvbG9yTG9jLCBbMSwgMCwgMSwgMV0pOword3R1LmRyYXdVbml0UXVhZChnbCk7Cit3
dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDI1NSwgMjU1XSwgInNob3VsZCBiZSBwdXJwbGUi
KTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8g
ZXJyb3JzIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvcHJvZ3JhbS1pbmZvbG9nLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9w
cm9ncmFtcy9wcm9ncmFtLWluZm9sb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmZhMTlkOTEyNDc1NDFj
YTRlMjYzYTM2NTQ2YTc4ZWE0MDYwNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvcHJv
Z3JhbS1pbmZvbG9nLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgUHJvZ3JhbSBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgbGFu
Z3VhZ2U9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ZvaWQgbWFpbigpCit7CisgIGdsX1Bvc2l0aW9u
ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
cmFnbWVudFNoYWRlciIgbGFuZ3VhZ2U9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQoreworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitkZXNjcmlwdGlvbignZ2V0UHJvZ3JhbUluZm9Mb2cgc2hvdWxkIG5vdCByZXR1cm4gXFwwJyk7
CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNv
bnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQg
ZXhpc3RzIik7Cit9CisKK2RlYnVnKCIiKTsKKwordmFyIHByb2dyYW0gPSB3dHUubG9hZFByb2dy
YW1Gcm9tU2NyaXB0KGdsLCAndmVydGV4U2hhZGVyJywgJ2ZyYWdtZW50U2hhZGVyJyk7Cit2YXIg
aW5mb2xvZyA9IGdsLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0pOworaWYgKGluZm9sb2cgPT09
ICdcMCcpIHsKKyAgdGVzdEZhaWxlZCgiZ2V0UHJvZ3JhbUluZm9Mb2cgc2hvdWxkIG5vdCByZXR1
cm4gJ1xcMCciKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoImdldFByb2dyYW1JbmZvTG9nIGRp
ZG4ndCByZXR1cm4gJ1xcMCciKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9wcm9ncmFtcy9wcm9ncmFtLXRl
c3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3Byb2dyYW1zL3Byb2dyYW0tdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZDViNTkx
ZDUxMmQ5NTljZmZkNGMwNzk2Yzc3YmRlNzU4NzFlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9wcm9n
cmFtcy9wcm9ncmFtLXRlc3QuaHRtbApAQCAtMCwwICsxLDQwNiBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFByb2dyYW0gQ29tcGls
aW5nL0xpbmtpbmcgQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKyAgICBhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBnbF9Q
b3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hh
ZGVyLXJlZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisgICAgdm9pZCBtYWluKCkKKyAg
ICB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWdyZWVuIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KKyAgICB2b2lkIG1haW4oKQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgwLCAxLCAwLCAxKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItc2V0
dGFibGUiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgIHZvaWQgbWFpbigpCisgICAg
eworICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yOworICAgIH0KKzwvc2NyaXB0PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQg
dHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
CitsZXQgZ2w7CitmdW5jdGlvbiBnbygpIHsKKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBw
cm9ncmFtIGNvbXBpbGluZy9saW5raW5nL3VzaW5nIHdvcmtzIGNvcnJlY3RseS4iKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKworICAgIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CisgICAgaWYgKCFnbCkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgICAgZ2wuY2xlYXJD
b2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgIGZ1bmN0aW9uIGRvQXJyYXlzSGF2ZVNh
bWVDb250ZW50cyhhLCBiKSB7CisgICAgICAgIHZhciBmbGFncyA9IFtdOworICAgICAgICBmdW5j
dGlvbiBoYXNVbnVzZWRWYWx1ZShhLCB2YWx1ZSkgeworICAgICAgICAgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IGEubGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFbaWldID09
PSB2YWx1ZSAmJiAhZmxhZ3NbaWldKSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzW2lpXSA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGEubGVuZ3RoOyBpaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFoYXNVbnVzZWRWYWx1ZShiLCBhW2lpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKy8vLy8vLy8gQ2hlY2sgY29tcGlsZVNoYWRlcigp
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICB2YXIgdnMgPSBnbC5jcmVhdGVT
aGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKHZzLCAiYXR0cmli
dXRlIHZlYzQgYVZlcnRleDsgYXR0cmlidXRlIHZlYzQgYUNvbG9yOyB2YXJ5aW5nIHZlYzQgdkNv
bG9yOyB2b2lkIG1haW4oKSB7IHZDb2xvciA9IGFDb2xvcjsgZ2xfUG9zaXRpb24gPSBhVmVydGV4
OyB9Iik7CisgICAgZ2wuY29tcGlsZVNoYWRlcih2cyk7CisKKyAgICBhc3NlcnRNc2coZ2wuZ2V0
U2hhZGVyUGFyYW1ldGVyKHZzLCBnbC5DT01QSUxFX1NUQVRVUykgPT0gdHJ1ZSwKKyAgICAgICAg
ICAgICAgImdvb2QgdmVydGV4IHNoYWRlciBzaG91bGQgY29tcGlsZSIpOworCisgICAgLy8gVmVy
aWZ5IHRoYXQgY29uc3RhbnRzIHJlbW92ZWQgZnJvbSB0aGUgV2ViR0wgc3BlYyBnZW5lcmF0ZSBJ
TlZBTElEX0VOVU0gZXJyb3JzCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGF0IHRoaXMgcG9pbnQiKTsKKyAgICBhc3NlcnRNc2co
Z2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHZzLCBkZXNrdG9wR0xbJ0lORk9fTE9HX0xFTkdUSCddKSA9
PT0gbnVsbCwgImludmFsaWQgY2FsbCB0byBnZXRTaGFkZXJQYXJhbWV0ZXIgc2hvdWxkIHJldHVy
biBudWxsIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAi
SU5GT19MT0dfTEVOR1RIIGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IHRvIGdldFNoYWRlclBhcmFt
ZXRlciBpbiBXZWJHTCIpOworICAgIGFzc2VydE1zZyhnbC5nZXRTaGFkZXJQYXJhbWV0ZXIodnMs
IGRlc2t0b3BHTFsnU0hBREVSX1NPVVJDRV9MRU5HVEgnXSkgPT09IG51bGwsICJpbnZhbGlkIGNh
bGwgdG8gZ2V0U2hhZGVyUGFyYW1ldGVyIHNob3VsZCByZXR1cm4gbnVsbCIpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIlNIQURFUl9TT1VSQ0VfTEVOR1RI
IGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IHRvIGdldFNoYWRlclBhcmFtZXRlciBpbiBXZWJHTCIp
OworCisgICAgdmFyIHZzMiA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAg
ICBnbC5zaGFkZXJTb3VyY2UodnMyLCAiYXR0cmlidXRlIHZlYzQgYVZlcnRleDsgYXR0cmlidXRl
IHZlYzQgYUNvbG9yOyB2YXJ5aW5nIHZlYzQgdkNvbG9yOyB2b2lkIG1haW4oKSB7IHZDb2xvciA9
IGFDb2xvcjsgZ2xfUG9zaXRpb24gPSBhVmVydGV4ICogMC41OyB9Iik7CisgICAgZ2wuY29tcGls
ZVNoYWRlcih2czIpOworCisgICAgYXNzZXJ0TXNnKGdsLmdldFNoYWRlclBhcmFtZXRlcih2czIs
IGdsLkNPTVBJTEVfU1RBVFVTKSA9PSB0cnVlLAorICAgICAgICAgICAgICAiZ29vZCB2ZXJ0ZXgg
c2hhZGVyICMyIHNob3VsZCBjb21waWxlIik7CisKKyAgICB2YXIgdnNCYWQgPSBnbC5jcmVhdGVT
aGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKHZzQmFkLCAiV0lM
TCBOT1QgQ09NUElMRTsiKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHZzQmFkKTsKKworICAgIC8v
IEdMU0wgMS4wLjE3IHNlY3Rpb24gMTAuMjcuIGNvbXBpbGUgc2hhZGVyIGRvZXMgbm90IGhhdmUg
dG8gcmV0dXJuIGZhaWx1cmUuCisgICAgLy9hc3NlcnRNc2coZ2wuZ2V0U2hhZGVyUGFyYW1ldGVy
KHZzQmFkLCBnbC5DT01QSUxFX1NUQVRVUykgPT0gZmFsc2UsCisgICAgLy8gICAgICAgICAgImJh
ZCB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBmYWlsIHRvIGNvbXBpbGUiKTsKKworICAgIHZhciBmcyA9
IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGdsLnNoYWRlclNvdXJj
ZShmcywgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyB2YXJ5aW5nIHZlYzQgdkNvbG9yOyB2b2lk
IG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZDb2xvcjsgfSIpOworICAgIGdsLmNvbXBpbGVTaGFk
ZXIoZnMpOworCisgICAgYXNzZXJ0TXNnKGdsLmdldFNoYWRlclBhcmFtZXRlcihmcywgZ2wuQ09N
UElMRV9TVEFUVVMpID09IHRydWUsCisgICAgICAgICAgICAgICJnb29kIGZyYWdtZW50IHNoYWRl
ciBzaG91bGQgY29tcGlsZSIpOworCisgICAgdmFyIGZzMiA9IGdsLmNyZWF0ZVNoYWRlcihnbC5G
UkFHTUVOVF9TSEFERVIpOworICAgIGdsLnNoYWRlclNvdXJjZShmczIsICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsgdmFyeWluZyB2ZWM0IHZDb2xvcjsgdm9pZCBtYWluKCkgeyBnbF9GcmFnQ29s
b3IgPSB2Q29sb3IgKiAwLjU7IH0iKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKGZzMik7CisKKyAg
ICBhc3NlcnRNc2coZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZzMiwgZ2wuQ09NUElMRV9TVEFUVVMp
ID09IHRydWUsCisgICAgICAgICAgICAgICJnb29kIGZyYWdtZW50IHNoYWRlciAjMiBzaG91bGQg
Y29tcGlsZSIpOworCisgICAgdmFyIGZzQmFkID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5U
X1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKGZzQmFkLCAiV0lMTCBOT1QgQ09NUElMRTsi
KTsKKyAgICBnbC5jb21waWxlU2hhZGVyKGZzQmFkKTsKKworICAgIC8vIEdMU0wgMS4wLjE3IHNl
Y3Rpb24gMTAuMjcuIGNvbXBpbGUgc2hhZGVyIGRvZXMgbm90IGhhdmUgdG8gcmV0dXJuIGZhaWx1
cmUuCisgICAgLy9hc3NlcnRNc2coZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZzQmFkLCBnbC5DT01Q
SUxFX1NUQVRVUykgPT0gZmFsc2UsCisgICAgLy8gICAgICAgICAgImJhZCBmcmFnbWVudCBzaGFk
ZXIgc2hvdWxkIGZhaWwgdG8gY29tcGlsZSIpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGF0IHRoaXMgcG9pbnQiKTsKKwor
Ly8vLy8vLyBDaGVjayBhdHRhY2hTaGFkZXIoKSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworCisgICAgZnVuY3Rpb24gY2hlY2tBdHRhY2hTaGFkZXIoYWxyZWFkeV9hdHRhY2hlZF9zaGFk
ZXJzLCBzaGFkZXIsIGV4cGVjdGVkX2Vycm9yX2NvZGUsIGVycm1zZykgeworICAgICAgICB2YXIg
cHJvZyA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
bHJlYWR5X2F0dGFjaGVkX3NoYWRlcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBnbC5hdHRh
Y2hTaGFkZXIocHJvZywgYWxyZWFkeV9hdHRhY2hlZF9zaGFkZXJzW2ldKTsKKyAgICAgICAgaWYo
Z2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgIGFzc2VydE1zZyhmYWxz
ZSwgInVuZXhwZWN0ZWQgZXJyb3IgaW4gYXR0YWNoU2hhZGVyKCkiKTsKKyAgICAgICAgZ2wuYXR0
YWNoU2hhZGVyKHByb2csIHNoYWRlcik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGV4cGVjdGVkX2Vycm9yX2NvZGUsIGVycm1zZyk7CisgICAgfQorCisgICAgY2hlY2tBdHRhY2hT
aGFkZXIoW10sIHZzLCBnbC5OT19FUlJPUiwgImF0dGFjaGluZyBhIHZlcnRleCBzaGFkZXIgc2hv
dWxkIHN1Y2NlZWQiKTsKKyAgICBjaGVja0F0dGFjaFNoYWRlcihbdnNdLCB2cywgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgImF0dGFjaGluZyBhbiBhbHJlYWR5
IGF0dGFjaGVkIHZlcnRleCBzaGFkZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9O
Iik7CisgICAgY2hlY2tBdHRhY2hTaGFkZXIoW10sIGZzLCBnbC5OT19FUlJPUiwgImF0dGFjaGlu
ZyBhIGZyYWdtZW50IHNoYWRlciBzaG91bGQgc3VjY2VlZCIpOworICAgIGNoZWNrQXR0YWNoU2hh
ZGVyKFtmc10sIGZzLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAiYXR0YWNoaW5nIGFuIGFscmVhZHkgYXR0YWNoZWQgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBn
ZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiIpOworICAgIGNoZWNrQXR0YWNoU2hhZGVyKFt2c10s
IHZzMiwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgImF0dGFj
aGluZyBzaGFkZXJzIG9mIHRoZSBzYW1lIHR5cGUgdG8gYSBwcm9ncmFtIHNob3VsZCBnZW5lcmF0
ZSBJTlZBTElEX09QRVJBVElPTiIpOworICAgIGNoZWNrQXR0YWNoU2hhZGVyKFtmc10sIGZzMiwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgImF0dGFjaGluZyBz
aGFkZXJzIG9mIHRoZSBzYW1lIHR5cGUgdG8gYSBwcm9ncmFtIHNob3VsZCBnZW5lcmF0ZSBJTlZB
TElEX09QRVJBVElPTiIpOworCisvLy8vLy8vIENoZWNrIGRldGFjaFNoYWRlcigpIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBmdW5jdGlvbiBjaGVja0RldGFjaFNoYWRlcihh
bHJlYWR5X2F0dGFjaGVkX3NoYWRlcnMsIHNoYWRlciwgZXhwZWN0ZWRfZXJyb3JfY29kZSwgZXJy
bXNnKSB7CisgICAgICAgIHZhciBwcm9nID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFscmVhZHlfYXR0YWNoZWRfc2hhZGVycy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9nLCBhbHJlYWR5X2F0dGFjaGVkX3NoYWRl
cnNbaV0pOworICAgICAgICBpZihnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKQorICAgICAg
ICAgICAgYXNzZXJ0TXNnKGZhbHNlLCAidW5leHBlY3RlZCBlcnJvciBpbiBhdHRhY2hTaGFkZXIo
KSIpOworICAgICAgICBnbC5kZXRhY2hTaGFkZXIocHJvZywgc2hhZGVyKTsKKyAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZXhwZWN0ZWRfZXJyb3JfY29kZSwgZXJybXNnKTsKKyAgICB9
CisKKyAgICBjaGVja0RldGFjaFNoYWRlcihbdnNdLCB2cywgZ2wuTk9fRVJST1IsICJkZXRhY2hp
bmcgYSB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBzdWNjZWVkIik7CisgICAgY2hlY2tEZXRhY2hTaGFk
ZXIoW2ZzXSwgdnMsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICJkZXRhY2hpbmcgYSBub3QgYWxyZWFkeSBhdHRhY2hlZCB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBn
ZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiIpOworICAgIGNoZWNrRGV0YWNoU2hhZGVyKFtmc10s
IGZzLCBnbC5OT19FUlJPUiwgImRldGFjaGluZyBhIGZyYWdtZW50IHNoYWRlciBzaG91bGQgc3Vj
Y2VlZCIpOworICAgIGNoZWNrRGV0YWNoU2hhZGVyKFt2c10sIGZzLCBnbC5JTlZBTElEX09QRVJB
VElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAiZGV0YWNoaW5nIGEgbm90IGFscmVhZHkgYXR0
YWNoZWQgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiIp
OworCisvLy8vLy8vIENoZWNrIGdldEF0dGFjaGVkU2hhZGVycygpIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisKKyAgICBmdW5jdGlvbiBjaGVja0dldEF0dGFjaGVkU2hhZGVycyhzaGFk
ZXJzX3RvX2F0dGFjaCwgc2hhZGVyc190b19kZXRhY2gsIGV4cGVjdGVkX3NoYWRlcnMsIGVycm1z
ZykgeworICAgICAgICBwcm9nID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNoYWRlcnNfdG9fYXR0YWNoLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
Z2wuYXR0YWNoU2hhZGVyKHByb2csIHNoYWRlcnNfdG9fYXR0YWNoW2ldKTsKKyAgICAgICAgaWYo
Z2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgIGFzc2VydE1zZyhmYWxz
ZSwgInVuZXhwZWN0ZWQgZXJyb3IgaW4gYXR0YWNoU2hhZGVyKCkiKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzaGFkZXJzX3RvX2RldGFjaC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IGdsLmRldGFjaFNoYWRlcihwcm9nLCBzaGFkZXJzX3RvX2RldGFjaFtpXSk7CisgICAgICAgIGlm
KGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICBhc3NlcnRNc2coZmFs
c2UsICJ1bmV4cGVjdGVkIGVycm9yIGluIGRldGFjaFNoYWRlcigpIik7CisgICAgICAgIGFzc2Vy
dE1zZyhkb0FycmF5c0hhdmVTYW1lQ29udGVudHMoZ2wuZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2cp
LCBleHBlY3RlZF9zaGFkZXJzKSwgZXJybXNnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2dsLmdldFBy
b2dyYW1QYXJhbWV0ZXIocHJvZywgZ2wuQVRUQUNIRURfU0hBREVSUyknLCBgJHtleHBlY3RlZF9z
aGFkZXJzLmxlbmd0aH1gKTsKKyAgICB9CisgICAgY2hlY2tHZXRBdHRhY2hlZFNoYWRlcnMoW10s
IFtdLCBbXSwgImdldEF0dGFjaGVkU2hhZGVycyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGxpc3Qg
YnkgZGVmYXVsdCIpOworICAgIGNoZWNrR2V0QXR0YWNoZWRTaGFkZXJzKFtmc10sIFtdLCBbZnNd
LCAiYXR0YWNoaW5nIGEgc2luZ2xlIHNoYWRlciBzaG91bGQgZ2l2ZSB0aGUgZXhwZWN0ZWQgbGlz
dCIpOworICAgIGNoZWNrR2V0QXR0YWNoZWRTaGFkZXJzKFtmcywgdnNdLCBbXSwgW2ZzLCB2c10s
CisgICAgICAgICJhdHRhY2hpbmcgc29tZSBzaGFkZXJzIHNob3VsZCBnaXZlIHRoZSBleHBlY3Rl
ZCBsaXN0Iik7CisgICAgY2hlY2tHZXRBdHRhY2hlZFNoYWRlcnMoW2ZzXSwgW2ZzXSwgW10sICJh
dHRhY2hpbmcgYSBzaGFkZXIgYW5kIGRldGFjaGluZyBpdCBzaG91bGQgbGVhdmUgYW4gZW1wdHkg
bGlzdCIpOworICAgIGNoZWNrR2V0QXR0YWNoZWRTaGFkZXJzKFtmcywgdnNdLCBbZnMsIHZzXSwg
W10sCisgICAgICAgICJhdHRhY2hpbmcgc29tZSBzaGFkZXJzIGFuZCBkZXRhY2hpbmcgdGhlbSBp
biBzYW1lIG9yZGVyIHNob3VsZCBsZWF2ZSBhbiBlbXB0eSBsaXN0Iik7CisgICAgY2hlY2tHZXRB
dHRhY2hlZFNoYWRlcnMoW2ZzLCB2c10sIFt2cywgZnNdLCBbXSwKKyAgICAgICAgImF0dGFjaGlu
ZyBzb21lIHNoYWRlcnMgYW5kIGRldGFjaGluZyB0aGVtIGluIHJhbmRvbSBvcmRlciBzaG91bGQg
bGVhdmUgYW4gZW1wdHkgbGlzdCIpOworICAgIGNoZWNrR2V0QXR0YWNoZWRTaGFkZXJzKFtmcywg
dnNdLCBbdnNdLCBbZnNdLAorICAgICAgICAiYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgc29tZSBz
aGFkZXJzIHNob3VsZCBsZWF2ZSB0aGUgZGlmZmVyZW5jZSBsaXN0Iik7CisgICAgY2hlY2tHZXRB
dHRhY2hlZFNoYWRlcnMoW2ZzLCB2c10sIFtmc10sIFt2c10sCisgICAgICAgICJhdHRhY2hpbmcg
YW5kIGRldGFjaGluZyBzb21lIHNoYWRlcnMgc2hvdWxkIGxlYXZlIHRoZSBkaWZmZXJlbmNlIGxp
c3QiKTsKKyAgICBjaGVja0dldEF0dGFjaGVkU2hhZGVycyhbZnNCYWRdLCBbXSwgW2ZzQmFkXSwK
KyAgICAgICAgImF0dGFjaGluZyBhIHNoYWRlciB0aGF0IGZhaWxlZCB0byBjb21waWxlIHNob3Vs
ZCBzdGlsbCBzaG93IGl0IGluIHRoZSBsaXN0Iik7CisgICAgY2hlY2tHZXRBdHRhY2hlZFNoYWRl
cnMoW2ZzLCB2c0JhZF0sIFtdLCBbZnMsIHZzQmFkXSwKKyAgICAgICAgImF0dGFjaGluZyBzaGFk
ZXJzLCBpbmNsdWRpbmcgb25lIHRoYXQgZmFpbGVkIHRvIGNvbXBpbGUsIHNob3VsZCBzdGlsbCBz
aG93IHRoZSBpdCBpbiB0aGUgbGlzdCIpOworCisvLy8vLy8vIENoZWNrIGxpbmtQcm9ncmFtKCkg
YW5kIHVzZVByb2dyYW0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIGZ1bmN0
aW9uIGNoZWNrTGlua0FuZFVzZShzaGFkZXJzLCBkZWxldGVTaGFkZXJBZnRlckF0dGFjaCwgZXhw
ZWN0ZWRfc3RhdHVzLCB0ZXN0SW52YWxpZEVudW1zLCBlcnJtc2cpIHsKKyAgICAgICAgdmFyIHBy
b2cgPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hh
ZGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2csIHNo
YWRlcnNbaV0pOworICAgICAgICAgICAgaWYgKGRlbGV0ZVNoYWRlckFmdGVyQXR0YWNoKQorICAg
ICAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJzW2ldKTsKKyAgICAgICAgfQorICAg
ICAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZywgMCwgImFWZXJ0ZXgiKTsKKyAgICAgICAg
Z2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2csIDEsICJhQ29sb3IiKTsKKyAgICAgICAgZ2wubGlu
a1Byb2dyYW0ocHJvZyk7CisgICAgICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9S
KQorICAgICAgICAgICAgYXNzZXJ0TXNnKGZhbHNlLCAidW5leHBlY3RlZCBlcnJvciBpbiBsaW5r
UHJvZ3JhbSgpIik7CisgICAgICAgIGFzc2VydE1zZyhnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2csIGdsLkxJTktfU1RBVFVTKSA9PSBleHBlY3RlZF9zdGF0dXMsIGVycm1zZyk7CisgICAgICAg
IHZhciBpbmZvbG9nID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZyk7CisgICAgICAgIGlmIChn
bC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgYXNzZXJ0TXNnKGZhbHNl
LCAidW5leHBlY3RlZCBlcnJvciBpbiBnZXRQcm9ncmFtSW5mb0xvZygpIik7CisgICAgICAgIGlm
ICh0eXBlb2YoaW5mb2xvZykgIT0gInN0cmluZyIpCisgICAgICAgICAgICBhc3NlcnRNc2coZmFs
c2UsICJnZXRQcm9ncmFtSW5mb0xvZygpIGRpZCBub3QgcmV0dXJuIGEgc3RyaW5nIik7CisgICAg
ICAgIGlmIChleHBlY3RlZF9zdGF0dXMgPT0gdHJ1ZSAmJiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHByb2csIGdsLkxJTktfU1RBVFVTKSA9PSBmYWxzZSkKKyAgICAgICAgICAgIGRlYnVnKGluZm9s
b2cpOworICAgICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikKKyAgICAgICAg
ICAgIGFzc2VydE1zZyhmYWxzZSwgInVuZXhwZWN0ZWQgZXJyb3IgaW4gZ2V0UHJvZ3JhbVBhcmFt
ZXRlcigpIik7CisKKyAgICAgICAgaWYgKHRlc3RJbnZhbGlkRW51bXMpIHsKKyAgICAgICAgICAg
IC8vIFZlcmlmeSB0aGF0IGNvbnN0YW50cyByZW1vdmVkIGZyb20gdGhlIFdlYkdMIHNwZWMgZ2Vu
ZXJhdGUgSU5WQUxJRF9FTlVNIGVycm9ycworICAgICAgICAgICAgYXNzZXJ0TXNnKGdsLmdldFBy
b2dyYW1QYXJhbWV0ZXIocHJvZywgZGVza3RvcEdMWydJTkZPX0xPR19MRU5HVEgnXSkgPT09IG51
bGwsICJpbnZhbGlkIGNhbGwgdG8gZ2V0UHJvZ3JhbVBhcmFtZXRlciBzaG91bGQgcmV0dXJuIG51
bGwiKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5V
TSwgIklORk9fTE9HX0xFTkdUSCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCB0byBnZXRQcm9ncmFt
UGFyYW1ldGVyIGluIFdlYkdMIik7CisgICAgICAgICAgICBhc3NlcnRNc2coZ2wuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihwcm9nLCBkZXNrdG9wR0xbJ0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCdd
KSA9PT0gbnVsbCwgImludmFsaWQgY2FsbCB0byBnZXRQcm9ncmFtUGFyYW1ldGVyIHNob3VsZCBy
ZXR1cm4gbnVsbCIpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9FTlVNLCAiQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGlzIG5vdCBhIHZhbGlkIGFy
Z3VtZW50IHRvIGdldFByb2dyYW1QYXJhbWV0ZXIgaW4gV2ViR0wiKTsKKyAgICAgICAgICAgIGFz
c2VydE1zZyhnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2csIGRlc2t0b3BHTFsnQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCddKSA9PT0gbnVsbCwgImludmFsaWQgY2FsbCB0byBnZXRQcm9ncmFt
UGFyYW1ldGVyIHNob3VsZCByZXR1cm4gbnVsbCIpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBp
cyBub3QgYSB2YWxpZCBhcmd1bWVudCB0byBnZXRQcm9ncmFtUGFyYW1ldGVyIGluIFdlYkdMIik7
CisgICAgICAgIH0KKworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2cpOworICAgICAgICBpZiAo
ZXhwZWN0ZWRfc3RhdHVzID09IHRydWUpCisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInVzaW5nIGEgdmFsaWQgcHJvZ3JhbSBzaG91bGQgc3VjY2VlZCIp
OworICAgICAgICBpZiAoZXhwZWN0ZWRfc3RhdHVzID09IGZhbHNlKQorICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ1c2luZyBhbiBpbnZh
bGlkIHByb2dyYW0gc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIik7CisgICAgICAg
IHJldHVybiBwcm9nOworICAgIH0KKworICAgIHZhciBwcm9nR29vZDEgPSBjaGVja0xpbmtBbmRV
c2UoW3ZzLCBmc10sIGZhbHNlLCB0cnVlLCB0cnVlLCAidmFsaWQgcHJvZ3JhbSBzaG91bGQgbGlu
ayIpOworICAgIHZhciBwcm9nR29vZDIgPSBjaGVja0xpbmtBbmRVc2UoW3ZzLCBmczJdLCBmYWxz
ZSwgdHJ1ZSwgZmFsc2UsICJ2YWxpZCBwcm9ncmFtICMyIHNob3VsZCBsaW5rIik7CisgICAgdmFy
IHByb2dCYWQxID0gY2hlY2tMaW5rQW5kVXNlKFt2c10sIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJw
cm9ncmFtIHdpdGggbm8gZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBmYWlsIHRvIGxpbmsiKTsKKyAg
ICB2YXIgcHJvZ0JhZDIgPSBjaGVja0xpbmtBbmRVc2UoW2ZzXSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgInByb2dyYW0gd2l0aCBubyB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBmYWlsIHRvIGxpbmsiKTsK
KyAgICB2YXIgcHJvZ0JhZDMgPSBjaGVja0xpbmtBbmRVc2UoW3ZzQmFkLCBmc10sIGZhbHNlLCBm
YWxzZSwgZmFsc2UsICJwcm9ncmFtIHdpdGggYmFkIHZlcnRleCBzaGFkZXIgc2hvdWxkIGZhaWwg
dG8gbGluayIpOworICAgIHZhciBwcm9nQmFkNCA9IGNoZWNrTGlua0FuZFVzZShbdnMsIGZzQmFk
XSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgInByb2dyYW0gd2l0aCBiYWQgZnJhZ21lbnQgc2hhZGVy
IHNob3VsZCBmYWlsIHRvIGxpbmsiKTsKKyAgICB2YXIgcHJvZ0JhZDUgPSBjaGVja0xpbmtBbmRV
c2UoW3ZzQmFkLCBmc0JhZF0sIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJwcm9ncmFtIHdpdGggYmFk
IHNoYWRlcnMgc2hvdWxkIGZhaWwgdG8gbGluayIpOworCisgICAgZ2wudXNlUHJvZ3JhbShwcm9n
R29vZDEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXNpbmcg
YSB2YWxpZCBwcm9ncmFtIHNob3VsZG4ndCBnZW5lcmF0ZSBhIEdMIGVycm9yIik7CisKKyAgICB2
YXIgdmJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2YnVmKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwKKyAgICAg
ICAgICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgICAgICAgICAgICAgIDAu
MCwgMC4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAxLjAsIDAuMCwgMC4wLCAx
LjAsCisgICAgICAgICAgICAgICAgICAgICAgMS4wLCAxLjAsIDAuMCwgMS4wLAorICAgICAgICAg
ICAgICAgICAgICAgIDAuMCwgMS4wLCAwLjAsIDEuMF0pLAorICAgICAgICAgICAgICAgICAgZ2wu
U1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQs
IGZhbHNlLCAwLCAwKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWIzZigxLCAxLjAsIDAuMCwgMC4wKTsKKworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBhdCB0aGlzIHBvaW50
ICMyIik7CisKKyAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgIGdsLmRyYXdBcnJheXMoZ2wu
VFJJQU5HTEVTLCAwLCAzKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgImRyYXdpbmcgd2l0aCBhIG51bGwgcHJvZ3JhbSBzaG91bGQgZ2VuZXJhdGUg
SU5WQUxJRF9PUEVSQVRJT04iKTsKKworICAgIGdsLnVzZVByb2dyYW0ocHJvZ0dvb2QxKTsKKyAg
ICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHdpdGggYSB2YWxpZCBwcm9ncmFtIHNob3Vs
ZG4ndCBnZW5lcmF0ZSBhIEdMIGVycm9yIik7CisKKyAgICBnbC51c2VQcm9ncmFtKHByb2dCYWQx
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInVz
aW5nIGFuIGludmFsaWQgcHJvZ3JhbSBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04i
KTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJUcnkgdG8gdXNlIGFuIGludmFsaWQgcHJvZ3Jh
bSBzaG91bGQgbm90IGNoYW5nZSB0aGUgY3VycmVudCByZW5kZXJpbmcgc3RhdGUiKTsKKworICAg
IGdsLnVzZVByb2dyYW0ocHJvZ0dvb2QyKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xF
UywgMCwgMyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3
aW5nIHdpdGggYSB2YWxpZCBwcm9ncmFtIHNob3VsZG4ndCBnZW5lcmF0ZSBhIEdMIGVycm9yIik7
CisgICAgZ2wuZGV0YWNoU2hhZGVyKHByb2dHb29kMiwgZnMyKTsKKyAgICBnbC5hdHRhY2hTaGFk
ZXIocHJvZ0dvb2QyLCBmc0JhZCk7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ0dvb2QyKTsKKyAg
ICBhc3NlcnRNc2coZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9nR29vZDIsIGdsLkxJTktfU1RB
VFVTKSA9PSBmYWxzZSwKKyAgICAgICAgICAgICAgImxpbmtpbmcgc2hvdWxkIGZhaWwgd2l0aCBp
bi11c2UgZm9ybWVybHkgZ29vZCBwcm9ncmFtLCB3aXRoIG5ldyBiYWQgc2hhZGVyIGF0dGFjaGVk
Iik7CisKKyAgICAvLyBJbnZhbGlkIGxpbmsgbGVhdmVzIHByZXZpb3VzIHZhbGlkIHByb2dyYW0g
aW50YWN0LgorICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgd2l0aCBhIHZhbGlkIHBy
b2dyYW0gc2hvdWxkbid0IGdlbmVyYXRlIGEgR0wgZXJyb3IiKTsKKworICAgIGdsLnVzZVByb2dy
YW0ocHJvZ0dvb2QxKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHdpdGggYSB2
YWxpZCB3aGVuIGxhc3QgdXNlZCBwcm9ncmFtIHNob3VsZG4ndCBnZW5lcmF0ZSBhIEdMIGVycm9y
Iik7CisKKyAgICB2YXIgcHJvZ0dvb2QxID0gY2hlY2tMaW5rQW5kVXNlKFt2cywgZnNdLCB0cnVl
LCB0cnVlLCBmYWxzZSwgImRlbGV0ZSBzaGFkZXJzIGFmdGVyIGF0dGFjaGluZyB0aGVtIGFuZCBi
ZWZvcmUgbGlua2luZyBwcm9ncmFtIHNob3VsZCBub3QgYWZmZWN0IGxpbmtQcm9ncmFtIik7Cisg
ICAgZ2wudXNlUHJvZ3JhbShwcm9nR29vZDEpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5H
TEVTLCAwLCA0KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRy
YXdpbmcgd2l0aCBhIHZhbGlkIHdoZW4gbGFzdCB1c2VkIHByb2dyYW0gc2hvdWxkbid0IGdlbmVy
YXRlIGEgR0wgZXJyb3IiKTsKKworLy8vLy8vLyBDaGVjayBkZWxldGVQcm9ncmFtKCkgYW5kIGRl
bGV0ZVNoYWRlcigpIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBnbC51c2VQ
cm9ncmFtKHByb2dHb29kMSk7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9nR29vZDEpOworICAg
IGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA0KTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImRlbGV0ZSB0aGUgY3VycmVudCBwcm9ncmFtIHNob3VsZG4n
dCBjaGFuZ2UgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIHN0YXRlIik7CisKKyAgICBnbC5saW5rUHJv
Z3JhbShwcm9nR29vZDEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiVGhlIGN1cnJlbnQgcHJvZ3JhbSBzaG91bGRuJ3QgYmUgZGVsZXRlZCIpOworCisgICAgdmFy
IGZzMyA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGdsLnNoYWRl
clNvdXJjZShmczMsICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgdmFyeWluZyB2ZWM0IHZDb2xv
cjsgdm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7IH0iKTsKKyAgICBnbC5jb21w
aWxlU2hhZGVyKGZzMyk7CisKKyAgICBhc3NlcnRNc2coZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZz
MywgZ2wuQ09NUElMRV9TVEFUVVMpID09IHRydWUsCisgICAgICAgICAgICAgICJnb29kIGZyYWdt
ZW50IHNoYWRlciBzaG91bGQgY29tcGlsZSIpOworCisgICAgZ2wuZGVsZXRlU2hhZGVyKGZzMyk7
CisgICAgZ2wuY29tcGlsZVNoYWRlcihmczMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfVkFMVUUsICJhbiB1bmF0dGFjaGVkIHNoYWRlciBzaG91bGQgYmUgZGVsZXRl
ZCBpbW1lZGlhdGVseSIpOworCisgICAgZnMzID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5U
X1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKGZzMywgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OyB2YXJ5aW5nIHZlYzQgdkNvbG9yOyB2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZD
b2xvcjsgfSIpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoZnMzKTsKKworICAgIGFzc2VydE1zZyhn
bC5nZXRTaGFkZXJQYXJhbWV0ZXIoZnMzLCBnbC5DT01QSUxFX1NUQVRVUykgPT0gdHJ1ZSwKKyAg
ICAgICAgICAgICAgImdvb2QgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBjb21waWxlIik7CisKKyAg
ICBnbC5kZXRhY2hTaGFkZXIocHJvZ0dvb2QxLCBmcyk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHBy
b2dHb29kMSwgZnMzKTsKKworICAgIGdsLmRlbGV0ZVNoYWRlcihmczMpOworICAgIGdsLmNvbXBp
bGVTaGFkZXIoZnMzKTsKKyAgICBhc3NlcnRNc2coZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZzMywg
Z2wuQ09NUElMRV9TVEFUVVMpID09IHRydWUsCisgICAgICAgICAgICAgICJhbiBhdHRhY2hlZCBz
aGFkZXIgc2hvdWxkbid0IGJlIGRlbGV0ZWQiKTsKKworICAgIGdsLnVzZVByb2dyYW0obnVsbCk7
CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ0dvb2QxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiYSBkZWxldGUtbWFya2VkIHByb2dyYW0gc2hvdWxkIGJl
IGRlbGV0ZWQgb25jZSBpdCdzIG5vIGxvbmdlciB0aGUgY3VycmVudCBwcm9ncmFtIik7CisKKyAg
ICBnbC5jb21waWxlU2hhZGVyKGZzMyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgImEgZGVsZXRlLW1hcmtlZCBzaGFkZXIgc2hvdWxkIGJlIGRlbGV0ZWQg
b25jZSBhbGwgaXRzIGF0dGFjaG1lbnRzIGFyZSByZW1vdmVkIik7CisKKy8vLy8vLy8vIENoZWNr
IGxpbmtQcm9ncmFtKCkgd2l0aCByZWxpbmtlZCBwcm9ncmFtIC8vLy8vLy8vLy8KKyAgICB2YXIg
dnMgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICJ2c2hhZGVyIik7CisgICAgdmFyIGZz
ID0gd3R1LmxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCAiZnNoYWRlci1yZWQiKTsKKyAgICB2YXIg
cHJnID0gd3R1LmNyZWF0ZVByb2dyYW0oZ2wsIHZzLCBmcyk7CisgICAgZ2wudXNlUHJvZ3JhbShw
cmcpOworICAgIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcmcsICJhX3Bvc2l0
aW9uIik7CisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIHBvc0xvYyk7CisgICAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAs
IDI1NV0sICJzaG91bGQgYmUgcmVkIik7CisgICAgZ2wuc2hhZGVyU291cmNlKGZzLCB3dHUuZ2V0
U2NyaXB0KCJmc2hhZGVyLWdyZWVuIikpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoZnMpOworICAg
IGdsLmxpbmtQcm9ncmFtKHByZyk7CisgICAgLy8gUHJvZ3JhbSBzaG91bGQgYmUgbmV3IHByb2dy
YW0gYXQgdGhpcyBwb2ludCB3aXRob3V0IGNhbGxpbmcgdXNlUHJvZ3JhbQorICAgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAw
LCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisgICAgdmFyIHByZyA9IHd0dS5zZXR1cFByb2dy
YW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyLXNldHRhYmxlIl0sIFsiYV9wb3NpdGlvbiJdKTsK
KyAgICB2YXIgY29sb3JMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJnLCAidV9jb2xvciIp
OworICAgIGdsLnVuaWZvcm00Zihjb2xvckxvYywgMSwgMCwgMCwgMSk7CisgICAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAs
IDI1NV0sICJzaG91bGQgYmUgcmVkIik7CisgICAgZ2wubGlua1Byb2dyYW0ocHJnKTsKKyAgICAv
LyBQcm9ncmFtJ3MgdW5pZm9ybXMgc2hvdWxkIGJlIGNsZWFyZWQgYXQgdGhpcyBwb2ludCB3aXRo
b3V0IGNhbGxpbmcgdXNlUHJvZ3JhbQorICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwg
WzAsIDI1NSwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMF0s
ICJzaG91bGQgYmUgdHJhbnBhcmVudCBibGFjayIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitkZWJ1ZygiIik7
CitnbygpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL3VzZS1wcm9ncmFtLWNyYXNoLXdpdGgtZGlz
Y2FyZC1pbi1mcmFnbWVudC1zaGFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL3VzZS1wcm9ncmFtLWNyYXNo
LXdpdGgtZGlzY2FyZC1pbi1mcmFnbWVudC1zaGFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2RhYzlh
OWFlMTlmYzI0NGUzOGMzMDEwYzA0ZTQ3NDRmMTZhZGFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcHJv
Z3JhbXMvdXNlLXByb2dyYW0tY3Jhc2gtd2l0aC1kaXNjYXJkLWluLWZyYWdtZW50LXNoYWRlci5o
dG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFByb2dyYW0gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIy
Ij4gPC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIGxhbmd1YWdlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBBVFRSMDsKK3ZvaWQgbWFpbigpCit7CisgIGds
X1Bvc2l0aW9uID0gQVRUUjA7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hh
ZGVyIiBsYW5ndWFnZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3ZvaWQgbWFpbigpCit7CisgIGZsb2F0IF9JbnRlbnNpdHkgPSBleHAyKGdsX0ZyYWdD
b29yZC53KTsKKyAgaWYgKF9JbnRlbnNpdHkgPCAwLjUpIHsKKyAgICBkaXNjYXJkOworICB9Cisg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRlc3QgZm9y
IGNyYXNoIGluIE1hYyBPUyBBTUQgT3BlbkdMIGRyaXZlciByZWxhdGVkIHRvIHVzZSBvZiBkaXNj
YXJkIGluIGZyYWdtZW50IHNoYWRlci48YnI+PGJyPk1vcmUgc3BlY2lmaWNhbGx5LCB0cmlnZ2Vy
aW5nIHRoZSBjcmFzaCBzZWVtcyB0byByZXF1aXJlIGV4YW1pbmF0aW9uIG9mIGdsX0ZyYWdDb29y
ZC53LCB1c2Ugb2YgZXhwMiwgYW5kIGEgY2FsbCB0byBkaXNjYXJkIGluIHRoZSBmcmFnbWVudCBz
aGFkZXIuIFRoYW5rcyB0byBTaGVoZXJ5YXIgWmFrYXJpYSBhbmQgTWljaGFlbCBCcmFpdGh3YWl0
ZSBhdCBUdXJidWxlbnogZm9yIHRoZSBvcmlnaW5hbCB0ZXN0IGNhc2UuPGJyPjxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkzMiI+V2ViS2l0IGJ1ZyA3
MzkzMjwvYT48YnI+Jyk7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CitpZiAoIWdsKSB7Cisg
IHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgIHRlc3RQ
YXNzZWQoImNvbnRleHQgZXhpc3RzIik7Cit9CisKK2RlYnVnKCIiKTsKKwordmFyIHByb2dyYW0g
PSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0KGdsLCAndmVydGV4U2hhZGVyJywgJ2ZyYWdtZW50
U2hhZGVyJyk7CitpZiAocHJvZ3JhbSkgeworICB0ZXN0UGFzc2VkKCJQcm9ncmFtIGxpbmtlZCBz
dWNjZXNzZnVsbHkiKTsKK30gZWxzZSB7CisgIHRlc3RGYWlsZWQoIlByb2dyYW0gZmFpbGVkIHRv
IGxpbmsiKTsKK30KKworLy8gQ3Jhc2ggb2NjdXJzIGhlcmUgb24gYWZmZWN0ZWQgbWFjaGluZXMK
K2dsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKy8vIEluIHNvbWUgYnJvd3NlcnMsIHN1Y2ggYXMg
Q2hyb21lLCB0aGUgYWJvdmUgY3Jhc2ggb25seSBjYXVzZXMgYQorLy8gbG9zdCBjb250ZXh0IGV2
ZW50IHRvIGJlIGRpc3BhdGNoZWQsIGFuZCBub3Qgc3luY2hyb25vdXNseS4gVG8gdmVyaWZ5Cisv
LyB0aGF0IGV2ZXJ5dGhpbmcgd29ya2VkLCBjbGVhciBhbmQgcmVhZCBiYWNrIHRoZSBmcmFtZSBi
dWZmZXIuCitnbC5jbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CitnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsy
NTUsIDAsIDAsIDI1NV0sCisgICAgIkNvbG9yIHNob3VsZCBiZSByZWQiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9yZWFkaW5nL2Ziby1yZW1haW5zLXVuY2hhbmdlZC1hZnRlci1yZWFkLXBpeGVscy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
cmVhZGluZy9mYm8tcmVtYWlucy11bmNoYW5nZWQtYWZ0ZXItcmVhZC1waXhlbHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMGU4ZGNkOWEwM2RhMWFmNDE0YzA3ODU2MzcwODQ1YzRhYTg2MWM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvcmVhZGluZy9mYm8tcmVtYWlucy11bmNoYW5nZWQtYWZ0ZXItcmVhZC1waXhl
bHMuaHRtbApAQCAtMCwwICsxLDEwNSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0IiBoZWlnaHQ9IjQiPjwvY2FudmFzPgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgYV9wb3M7CithdHRyaWJ1dGUgdmVjNCBh
X2NvbG9yOwordmFyeWluZyB2ZWM0IHZfY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgdl9j
b2xvciA9IGFfY29sb3I7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zLnh5eiwgMS4wKTsK
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZlYzQgdl9jb2xv
cjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCJ3aGVuIGFu
dGlhbGlhcyBpcyBlbmFibGVkLCB2ZXJpZnkgZGVmYXVsdCBmYm8gcGl4ZWxzIHdvdWxkIG5vdCBi
ZSBjaGFuZ2VkIGJldHdlZW4gdHdvIHJlYWRQaXhlbHMgd2l0aG91dCBkcmF3aW5nIG9wZXJhdGlv
bnMiKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBOID0gNDsKKwordmFyIHZlcnRp
Y2VzID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgICAxLjAsIDEuMCwgMC4wLAorICAgICAg
ICAtMS4wLCAtMS4wLCAwLjBdKTsKK3ZhciBjb2xvcnMgPSBuZXcgVWludDhBcnJheShbCisgICAg
ICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOworCit2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6IHRydWV9KTsKKworaWYgKCFnbCkgewor
ICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0
UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJhX3BvcyIsICJhX2NvbG9yIl0pOwor
ICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKworICB2YXIgY29sb3JPZmZzZXQgPSB2ZXJ0aWNlcy5ieXRlTGVuZ3RoOworICB2YXIg
dmJvID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCB2Ym8pOworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JPZmZzZXQgKyBj
b2xvcnMuYnl0ZUxlbmd0aCwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5idWZmZXJTdWJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgMCwgdmVydGljZXMpOworICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgY29sb3JPZmZzZXQsIGNvbG9ycyk7CisKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRl
cigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRF
LCB0cnVlLCAwLCBjb2xvck9mZnNldCk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEp
OworICBnbC5kcmF3QXJyYXlzKGdsLkxJTkVTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAzKTsKKwor
ICB2YXIgcmVzdWx0XzEgPSBuZXcgVWludDhBcnJheShOICogTiAqIDQpOworICB2YXIgcmVzdWx0
XzIgPSBuZXcgVWludDhBcnJheShOICogTiAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIE4s
IE4sIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlc3VsdF8xKTsKKyAgZ2wucmVhZFBpeGVs
cygwLCAwLCBOLCBOLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCByZXN1bHRfMik7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICB2YXIgdG9sZXJhbmNlID0g
MDsKKyAgdmFyIGRpZmYgPSBuZXcgVWludDhBcnJheShOICogTiAqIDQpOworICB2YXIgZmFpbGVk
ID0gd3R1LmNvbXBhcmVQaXhlbHMocmVzdWx0XzEsIHJlc3VsdF8yLCB0b2xlcmFuY2UsIGRpZmYp
OworCisgIGlmIChmYWlsZWQpIHsKKyAgICB0ZXN0RmFpbGVkKCJkZWZhdWx0IGZibyBwaXhlbHMg
aGFkIGJlIGNoYW5nZWQgYmV0d2VlbiB0d28gcmVhZFBpeGVscyB3aXRob3V0IGRyYXdpbmcgb3Bl
cmF0aW9ucyIpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImRlZmF1bHQgZmJvIHBpeGVs
cyBoYWQgbm90IGJlIGNoYW5nZWQgYmV0d2VlbiB0d28gcmVhZFBpeGVscyB3aXRob3V0IGRyYXdp
bmcgb3BlcmF0aW9ucy4iKTsKKyAgfQorCisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBudWxsKTsKKyAgZ2wuZGVsZXRlQnVmZmVyKHZibyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlYWRpbmcv
cmVhZC1waXhlbHMtcGFjay1hbGlnbm1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlYWRpbmcvcmVhZC1waXhlbHMtcGFj
ay1hbGlnbm1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDkwMjg0YjA1Y2RmOGNiMzliNjg0NTVmNGY0
MTZiZGRkNTJiNmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVhZGluZy9yZWFkLXBpeGVscy1wYWNr
LWFsaWdubWVudC5odG1sCkBAIC0wLDAgKzEsMjUxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgcG9zOworYXR0cmlidXRlIHZlYzQgY29sb3JJ
bjsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBjb2xvciA9IGNv
bG9ySW47CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcy54eXosIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Citw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKKwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZTIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKKy8vIFRoZSBiZWxvdyBkZWNsYXJhdGlvbnMg
bmVlZCB0byBiZSBnbG9iYWwgZm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IG51bGw7Cit2YXIgYXJyYXkgPSBudWxsOwordmFyIHBp
eGVsID0gWyAwLCAwLCAwLCAwIF07Cit2YXIgZXhwZWN0ZWRDb2xvciA9IFsgMCwgMCwgMCwgMCBd
OworCitmdW5jdGlvbiBjYWxjdWxhdGVQaXhlbEJ5dGVzKGZvcm1hdCwgdHlwZSkKK3sKKyAgICB2
YXIgc2l6ZSA9IDA7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIGdsLkFMUEhBOgor
ICAgICAgICBzaXplID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5SR0I6CisgICAg
ICAgIHNpemUgPSAzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGdsLlJHQkE6CisgICAgICAg
IHNpemUgPSA0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
LTE7CisgICAgfQorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgZ2wuVU5TSUdORURfQllU
RToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNToKKyAg
ICAgICAgaWYgKGZvcm1hdCAhPSBnbC5SR0IpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgIHNpemUgPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JU
XzRfNF80XzQ6CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICBp
ZiAoZm9ybWF0ICE9IGdsLlJHQkEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHNp
emUgPSAyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorICAgIHJldHVybiBzaXplOworfQorCitmdW5jdGlvbiBjYWxjdWxhdGVQYWRkaW5n
Qnl0ZXMoYnl0ZXNQZXJQaXhlbCwgcGFja0FsaWdubWVudCwgd2lkdGgpCit7CisgICAgdmFyIHBh
ZGRpbmcgPSAwOworICAgIHN3aXRjaCAocGFja0FsaWdubWVudCkgeworICAgIGNhc2UgMToKKyAg
ICBjYXNlIDI6CisgICAgY2FzZSA0OgorICAgIGNhc2UgODoKKyAgICAgICAgcGFkZGluZyA9IChi
eXRlc1BlclBpeGVsICogd2lkdGgpICUgcGFja0FsaWdubWVudDsKKyAgICAgICAgaWYgKHBhZGRp
bmcgPiAwKQorICAgICAgICAgICAgcGFkZGluZyA9IHBhY2tBbGlnbm1lbnQgLSBwYWRkaW5nOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQor
ICAgIHJldHVybiBwYWRkaW5nOworfQorCitmdW5jdGlvbiBwYWNrQ29sb3IoZm9ybWF0LCB0eXBl
LCByLCBnLCBiLCBhKQoreworICAgIC8vIEZJWE1FOiBub3Qgc3VyZSBpZiB0aGUgY29sb3IgcGFj
a2luZyBpcyBjb3JyZWN0IGZvciBVTlNJR05FRF9TSE9SVF8qLgorICAgIHZhciBjb2xvciA9IFsg
MCwgMCwgMCwgMCBdOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgZ2wuVU5TSUdORURf
QllURToKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBnbC5BTFBIQToK
KyAgICAgICAgICAgIGNvbG9yWzBdID0gYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIGdsLlJHQjoKKyAgICAgICAgICAgIGNvbG9yWzBdID0gcjsKKyAgICAgICAgICAgIGNvbG9y
WzFdID0gZzsKKyAgICAgICAgICAgIGNvbG9yWzJdID0gYjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIGdsLlJHQkE6CisgICAgICAgICAgICBjb2xvclswXSA9IHI7CisgICAgICAg
ICAgICBjb2xvclsxXSA9IGc7CisgICAgICAgICAgICBjb2xvclsyXSA9IGI7CisgICAgICAgICAg
ICBjb2xvclszXSA9IGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgZ2wuVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgIGlmIChmb3JtYXQgIT0gZ2wuUkdC
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHIgPj49IDM7CisgICAgICAgIGcg
Pj49IDI7CisgICAgICAgIGIgPj49IDM7CisgICAgICAgIGNvbG9yWzBdID0gKHIgPDwgMTEpICsg
KGcgPDwgNSkgKyBiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JU
XzRfNF80XzQ6CisgICAgICAgIGlmIChmb3JtYXQgIT0gZ2wuUkdCQSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICByID4+PSA0OworICAgICAgICBnID4+PSA0OworICAgICAgICBi
ID4+PSA0OworICAgICAgICBhID4+PSA0OworICAgICAgICBjb2xvclswXSA9IChyIDw8IDEyKSAr
IChnIDw8IDgpICsgKGIgPDwgNCkgKyBhOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGdsLlVO
U0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgIGlmIChmb3JtYXQgIT0gZ2wuUkdCQSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByID4+PSAzOworICAgICAgICBnID4+PSAz
OworICAgICAgICBiID4+PSAzOworICAgICAgICBhID4+PSA3OworICAgICAgICBjb2xvclswXSA9
IChyIDw8IDExKSArIChnIDw8IDYpICsgKGIgPDwgMSkgKyBhOworICAgICAgICBicmVhazsKKyAg
ICBEZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGNvbG9y
OworfQorCitmdW5jdGlvbiBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgdHlwZSwgcGFja0FsaWdu
bWVudCwgd2lkdGgsIGhlaWdodCkKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBQQUNLX0FMSUdOTUVO
VCA9ICIgKyBwYWNrQWxpZ25tZW50ICsgIiwgd2lkdGggPSAiICsgd2lkdGggKyAiLCBoZWlnaHQg
PSAiICsgaGVpZ2h0KTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAuNCwgMCwgMSk7CisgICAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19B
TElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKKyAgICB2YXIgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZVBpeGVsQnl0ZXMo
Zm9ybWF0LCB0eXBlKTsKKyAgICB2YXIgcGFkZGluZyA9IGNhbGN1bGF0ZVBhZGRpbmdCeXRlcyhi
eXRlc1BlclBpeGVsLCBwYWNrQWxpZ25tZW50LCB3aWR0aCk7CisgICAgdmFyIHNpemUgPSBieXRl
c1BlclBpeGVsICogd2lkdGggKiBoZWlnaHQgKyBwYWRkaW5nICogKGhlaWdodCAtIDEpOworICAg
IGlmICh0eXBlICE9IGdsLlVOU0lHTkVEX0JZVEUpIHsKKyAgICAgICAgdGhyb3cgInRlc3QgZXJy
b3I6IG9ubHkgVU5TSUdORURfQllURSBpcyB2YWxpZCB0byBSZWFkUGl4ZWxzIjsKKyAgICB9Cisg
ICAgaWYgKHNpemUgPCAwKQorICAgICAgICBzaXplID0gMDsKKyAgICBhcnJheSA9IG5ldyBVaW50
OEFycmF5KHNpemUpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBhcnJheSk7CisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7Cisg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworICAgIGlmICghYXJyYXkubGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBD
aGVjayB0aGUgbGFzdCBwaXhlbCBvZiB0aGUgbGFzdCByb3cuCisgICAgdmFyIGJ5dGVzUGVyUm93
ID0gd2lkdGggKiBieXRlc1BlclBpeGVsICsgcGFkZGluZzsKKyAgICB2YXIgcG9zID0gYnl0ZXNQ
ZXJSb3cgKiAoaGVpZ2h0IC0gMSkgKyAod2lkdGggLSAxKSAqIGJ5dGVzUGVyUGl4ZWw7CisgICAg
dmFyIG51bUNvbXBvbmVudHMgPSBieXRlc1BlclBpeGVsOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbnVtQ29tcG9uZW50czsgKytpKQorICAgICAgICBwaXhlbFtpXSA9IGFycmF5W3BvcyArIGld
OworICAgIGZvciAodmFyIGkgPSBudW1Db21wb25lbnRzOyBpIDwgNDsgKytpKQorICAgICAgICBw
aXhlbFtpXSA9IDA7CisgICAgZXhwZWN0ZWRDb2xvciA9IHBhY2tDb2xvcihmb3JtYXQsIHR5cGUs
IDI1NSwgMTAyLCAwLCAyNTUpOworICAgIHNob3VsZEJlTm9uTnVsbCgiZXhwZWN0ZWRDb2xvciIp
OworICAgIHNob3VsZEJlKCJwaXhlbCIsICJleHBlY3RlZENvbG9yIik7Cit9CisKK2Rlc2NyaXB0
aW9uKCdWZXJpZnkgcmVhZFBpeGVscygpIHdvcmtzIGZpbmUgd2l0aCB2YXJpb3VzIFBBQ0tfQUxJ
R05NRU5UIHZhbHVlcy4nKTsKKworCitkZWJ1ZygiPGgxPmFudGlhbGlhcyA9IGZhbHNlPC9oMT4i
KTsKK3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdleGFtcGxlJywg
e2FudGlhbGlhczogZmFsc2V9KSIpCit2YXIgZm9ybWF0cyA9IFsgZ2wuUkdCQSBdOwordmFyIGZv
cm1hdE5hbWVzID0gWyAiUkdCQSIgXTsKK3J1bkFsbEl0ZXJhdGlvbnMoKTsKK2RlYnVnKCI8aDE+
YW50aWFsaWFzID0gdHJ1ZTwvaDE+Iik7CitzaG91bGRCZU5vbk51bGwoImdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnZXhhbXBsZTInLCB7YW50aWFsaWFzOiB0cnVlfSkiKQorcnVuQWxsSXRlcmF0
aW9ucygpOworCitmdW5jdGlvbiBydW5BbGxJdGVyYXRpb25zKCkgeworICAgIHNob3VsZEJlTm9u
TnVsbCgicHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVy
J10sIFsncG9zJywgJ2NvbG9ySW4nXSkiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9y
bWF0cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgZm9ybWF0ID0gZm9ybWF0c1tpXTsKKwor
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBmb3JtYXQgPSAiICsgZm9ybWF0TmFtZXNbaV0gKyAiIGFu
ZCB0eXBlID0gVU5TSUdORURfQllURSIpOworICAgICAgICBydW5UZXN0SXRlcmF0aW9uKGZvcm1h
dCwgZ2wuVU5TSUdORURfQllURSwgMSwgMSwgMik7CisgICAgICAgIHJ1blRlc3RJdGVyYXRpb24o
Zm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFLCAyLCAxLCAyKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJh
dGlvbihmb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIDQsIDEsIDIpOworICAgICAgICBydW5UZXN0
SXRlcmF0aW9uKGZvcm1hdCwgZ2wuVU5TSUdORURfQllURSwgOCwgMSwgMik7CisgICAgICAgIHJ1
blRlc3RJdGVyYXRpb24oZm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFLCA0LCAyLCAyKTsKKyAgICAg
ICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIDgsIDIsIDIpOwor
ICAgICAgICBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgZ2wuVU5TSUdORURfQllURSwgNCwgMywg
Mik7CisgICAgICAgIHJ1blRlc3RJdGVyYXRpb24oZm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFLCA4
LCAzLCAyKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQsIGdsLlVOU0lHTkVEX0JZ
VEUsIDQsIDQsIDIpOworICAgICAgICBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgZ2wuVU5TSUdO
RURfQllURSwgOCwgNCwgMik7CisgICAgICAgIHJ1blRlc3RJdGVyYXRpb24oZm9ybWF0LCBnbC5V
TlNJR05FRF9CWVRFLCA4LCA1LCAxKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQs
IGdsLlVOU0lHTkVEX0JZVEUsIDQsIDUsIDIpOworICAgICAgICBydW5UZXN0SXRlcmF0aW9uKGZv
cm1hdCwgZ2wuVU5TSUdORURfQllURSwgOCwgNSwgMik7CisgICAgICAgIHJ1blRlc3RJdGVyYXRp
b24oZm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFLCA4LCA2LCAyKTsKKyAgICAgICAgcnVuVGVzdEl0
ZXJhdGlvbihmb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIDgsIDcsIDIpOworICAgICAgICBydW5U
ZXN0SXRlcmF0aW9uKGZvcm1hdCwgZ2wuVU5TSUdORURfQllURSwgOCwgOCwgMik7CisgICAgICAg
IHJ1blRlc3RJdGVyYXRpb24oZm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFLCAxLCAwLCAwKTsKKyAg
ICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIDIsIDAsIDAp
OworICAgICAgICBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgZ2wuVU5TSUdORURfQllURSwgNCwg
MCwgMCk7CisgICAgICAgIHJ1blRlc3RJdGVyYXRpb24oZm9ybWF0LCBnbC5VTlNJR05FRF9CWVRF
LCA4LCAwLCAwKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQsIGdsLlVOU0lHTkVE
X0JZVEUsIDEsIC0xLCAxKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQsIGdsLlVO
U0lHTkVEX0JZVEUsIDIsIDEsIC0xKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihmb3JtYXQs
IGdsLlVOU0lHTkVEX0JZVEUsIDQsIDAsIC0xKTsKKyAgICAgICAgcnVuVGVzdEl0ZXJhdGlvbihm
b3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIDgsIC0xLCAtMSk7CisgICAgfQorfQordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlYWRpbmcvcmVhZC1waXhlbHMtdGVz
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3OGI0MzY0MjcxMmVkZmM5MDM0Y2RjMmU5NjVmN2FhOWEwMjAy
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbApAQCAt
MCwwICsxLDQyOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgUmVhZFBpeGVscyBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCIgc3R5bGU9IndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHgiPjwvY2FudmFzPgorPGNhbnZh
cyBpZD0iZXhhbXBsZTIiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBzdHlsZT0id2lkdGg6IDIw
cHg7IGhlaWdodDogMjBweCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiQ2hlY2tzIHRoYXQgUmVhZFBpeGVscyB3b3JrcyBhcyBleHBlY3RlZC4iKTsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworbGV0IGdsOworCitkZWJ1ZygiPGgxPmFudGlhbGlh
cyA9IGZhbHNlPC9oMT4iKQorcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBs
ZSIpLCBmYWxzZSk7CitkZWJ1ZygiPGgxPmFudGlhbGlhcyA9IHRydWU8L2gxPiIpCitydW5UZXN0
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlMiIpLCB0cnVlKTsKK2ZpbmlzaFRlc3Qo
KTsKKwordmFyIGFjdHVhbDsKK3ZhciBleHBlY3RlZDsKKworZnVuY3Rpb24gcnVuVGVzdChjYW52
YXMsIGFudGlhbGlhcykgeworICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7YW50
aWFsaWFzOiBhbnRpYWxpYXN9KTsKKyAgdmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1
bHQzRENvbnRleHRWZXJzaW9uKCk7CisKKyAgdmFyIHdpZHRoID0gMjsKKyAgdmFyIGhlaWdodCA9
IDI7CisgIHZhciBjb250aW51ZVRlc3RGdW5jID0gY29udGludWVUZXN0UGFydDE7CisKKyAgZ2wu
Y2xlYXJDb2xvcigxLCAxLCAxLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisKKyAgLy8gUmVzaXplIHRoZSBjYW52YXMgdG8gMngyLiBUaGlzIGlzIGFuIGF0dGVtcHQgdG8g
Z2V0IHN0dWZmIGluIHRoZSBiYWNrYnVmZmVyLgorICAvLyB0aGF0IHNob3VsZG4ndCBiZSB0aGVy
ZS4KKyAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCBmdW5jdGlv
bihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgfSwgZmFsc2UpOworICBjYW52YXMuYWRkRXZlbnRM
aXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCBjb250aW51ZVRlc3RBZnRlckNvbnRleHRS
ZXN0b3JlZCwgZmFsc2UpOworICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgY2FudmFzLmhlaWdo
dCA9IGhlaWdodDsKKyAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuQ09OVEVYVF9MT1NUX1dFQkdM
KSB7CisgICAgY29udGludWVUZXN0UGFydDEoKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbnRpbnVl
VGVzdEFmdGVyQ29udGV4dFJlc3RvcmVkKCkgeworICAgIHdpbmRvdy5nbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzKTsKKyAgICB2YXIgZnVuYyA9IGNvbnRpbnVlVGVzdEZ1bmM7CisgICAg
d2luZG93LmNvbnRpbnVlVGVzdEZ1bmMgPSBmdW5jdGlvbigpIHsgdGVzdEZhaWxlZCgic2hvdWxk
IG5vdCBiZSBoZXJlIik7IH07CisgICAgZnVuYygpOworICB9CisKKyAgZnVuY3Rpb24gY29udGlu
dWVUZXN0UGFydDEoKSB7CisgICAgZ2wuY2xlYXJDb2xvcigwLjIsIDAuNiwgMC40LCAxKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIHZhciBpbm5lckNvbG9yID0g
WzUxLCAxNTMsIDEwMiwgMjU1XTsgLy8gKDAuMiwgMC42LCAwLjQsIDEpCisgICAgdmFyIG91dGVy
Q29sb3IgPSBbMTksIDcyLCAwLCAxOThdOyAvLyBSYW5kb20gY29sb3Igb3RoZXIgdGhhbiBbMCwg
MCwgMCwgMF0KKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgIHsgbXNnOiAnaW4gcmFuZ2UnLCBj
aGVja0NvbG9yOiBpbm5lckNvbG9yLCB4OiAgMCwgeTogIDAsCisgICAgICAgIG9uZUNvbG9yOiBp
bm5lckNvbG9yLCBvbmVYOiAwLCBvbmVZOiAwfSwKKyAgICAgIHsgbXNnOiAnb2ZmIHRvcCBsZWZ0
JywgY2hlY2tDb2xvcjogb3V0ZXJDb2xvciwgeDogLTEsIHk6IC0xLAorICAgICAgICBvbmVDb2xv
cjogaW5uZXJDb2xvciwgb25lWDogMSwgb25lWTogMX0sCisgICAgICB7IG1zZzogJ29mZiBib3R0
b20gcmlnaHQnLCBjaGVja0NvbG9yOiBvdXRlckNvbG9yLCB4OiAgMSwgeTogIDEsCisgICAgICAg
IG9uZUNvbG9yOiBpbm5lckNvbG9yLCBvbmVYOiAwLCBvbmVZOiAwfSwKKyAgICAgIHsgbXNnOiAn
Y29tcGxldGVseSBvZmYgdG9wICcsIGNoZWNrQ29sb3I6IG91dGVyQ29sb3IsIHg6ICAwLCB5OiAt
MiwKKyAgICAgICAgb25lQ29sb3I6IG91dGVyQ29sb3IsIG9uZVg6IDAsIG9uZVk6IDB9LAorICAg
ICAgeyBtc2c6ICdjb21wbGV0ZWx5IG9mZiBib3R0b20nLCBjaGVja0NvbG9yOiBvdXRlckNvbG9y
LCB4OiAgMCwgeTogIDIsCisgICAgICAgIG9uZUNvbG9yOiBvdXRlckNvbG9yLCBvbmVYOiAwLCBv
bmVZOiAwfSwKKyAgICAgIHsgbXNnOiAnY29tcGxldGVseSBvZmYgbGVmdCcsIGNoZWNrQ29sb3I6
IG91dGVyQ29sb3IsIHg6IC0yLCB5OiAgMCwKKyAgICAgICAgb25lQ29sb3I6IG91dGVyQ29sb3Is
IG9uZVg6IDAsIG9uZVk6IDB9LAorICAgICAgeyBtc2c6ICdjb21wbGV0ZWxleSBvZmYgcmlnaHQn
LCBjaGVja0NvbG9yOiBvdXRlckNvbG9yLCB4OiAgMiwgeTogIDAsCisgICAgICAgIG9uZUNvbG9y
OiBvdXRlckNvbG9yLCBvbmVYOiAwLCBvbmVZOiAwfQorICAgIF07CisKKyAgICBmb3IgKHZhciB0
dCA9IDA7IHR0IDwgdGVzdHMubGVuZ3RoOyArK3R0KSB7CisgICAgICB2YXIgdGVzdCA9IHRlc3Rz
W3R0XTsKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIGRlYnVnKCJjaGVja2luZzogIiArIHRlc3Qu
bXNnKTsKKyAgICAgIGNoZWNrQnVmZmVyKHRlc3QuY2hlY2tDb2xvciwgdGVzdC54LCB0ZXN0Lnks
CisgICAgICAgICAgICAgICAgICB0ZXN0Lm9uZUNvbG9yLCB0ZXN0Lm9uZVgsIHRlc3Qub25lWSk7
CisgICAgfQorCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVy
ZSBzaG91bGQgYmUgbm8gR0wgZXJyb3JzIik7CisKKyAgICBmdW5jdGlvbiBjaGVja0J1ZmZlcihj
aGVja0NvbG9yLCB4LCB5LCBvbmVDb2xvciwgb25lWCwgb25lWSkgeworICAgICAgdmFyIGJ1ZiA9
IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgICAvLyBJbml0aWFsaXpl
IGJ1Zi4KKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB3aWR0aCAqIGhlaWdodDsgKytpaSkg
eworICAgICAgICBidWZbaWkgKiA0XSA9IG91dGVyQ29sb3JbMF07CisgICAgICAgIGJ1ZltpaSAq
IDQgKyAxXSA9IG91dGVyQ29sb3JbMV07CisgICAgICAgIGJ1ZltpaSAqIDQgKyAyXSA9IG91dGVy
Q29sb3JbMl07CisgICAgICAgIGJ1ZltpaSAqIDQgKyAzXSA9IG91dGVyQ29sb3JbM107CisgICAg
ICB9CisgICAgICBnbC5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaGVpZ2h0
OyArK3l5KSB7CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCB3aWR0aDsgKyt4eCkgewor
ICAgICAgICAgIHZhciBvZmZzZXQgPSAoeXkgKiB3aWR0aCArIHh4KSAqIDQ7CisgICAgICAgICAg
dmFyIGV4cGVjdGVkQ29sb3JzID0gKG9uZVggPT0geHggJiYgb25lWSA9PSB5eSkgPyBvbmVDb2xv
ciA6IGNoZWNrQ29sb3I7CisgICAgICAgICAgdmFyIG1pc21hdGNoID0gZmFsc2U7CisgICAgICAg
ICAgZm9yICh2YXIgY2MgPSAwOyBjYyA8IDQ7ICsrY2MpIHsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZENvbG9yID0gZXhwZWN0ZWRDb2xvcnNbY2NdOworICAgICAgICAgICAgdmFyIGNvbG9yID0g
YnVmW29mZnNldCArIGNjXTsKKyAgICAgICAgICAgIHZhciBkaWZmID0gTWF0aC5hYnMoZXhwZWN0
ZWRDb2xvciAtIGNvbG9yKTsKKyAgICAgICAgICAgIGlmIChkaWZmID49IDMpIHsKKyAgICAgICAg
ICAgICAgbWlzbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgYXNzZXJ0TXNnKCFtaXNtYXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgImNvbG9yIHBpeGVsIGF0ICIgKyB4eCArICIsICIgKyB5eSArICIgc2hvdWxk
IGJlIGFib3V0ICIgKyBleHBlY3RlZENvbG9ycyArCisgICAgICAgICAgICAgICAgICAgICIsIHdh
cyA9ICIgKyBbYnVmW29mZnNldF0sIGJ1ZltvZmZzZXQgKyAxXSwgYnVmW29mZnNldCArIDJdLCBi
dWZbb2Zmc2V0ICsgM11dKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGNvbnRp
bnVlVGVzdFBhcnQyKCk7CisgIH0KKworICBmdW5jdGlvbiBjb250aW51ZVRlc3RQYXJ0MigpIHsK
KyAgICBsZXQgbmV2ZXJWYWxpZEZvcm1hdHMgPSBbZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5ERVBU
SF9TVEVOQ0lMLCBkZXNrdG9wR0wuUjgsIGdsLlJHQkE0XTsKKyAgICBsZXQgbWF5YmVWYWxpZEZv
cm1hdHMgPSBbZ2wuTFVNSU5BTkNFLCBnbC5MVU1JTkFOQ0VfQUxQSEFdOworICAgIGlmIChjb250
ZXh0VmVyc2lvbiA8IDIpIHsKKyAgICAvLyBUaGV5IGFyZSB2YWxpZCBpbiBXZWJHTCAyIG9yIGhp
Z2hlcgorICAgICAgbWF5YmVWYWxpZEZvcm1hdHMgPSBtYXliZVZhbGlkRm9ybWF0cy5jb25jYXQo
W2Rlc2t0b3BHTC5SRUQsIGRlc2t0b3BHTC5SR19JTlRFR0VSLCBkZXNrdG9wR0wuUkdCQV9JTlRF
R0VSXSk7CisgICAgfQorCisgICAgbGV0IG5ldmVyVmFsaWRUeXBlSW5mbyA9IFsKKyAgICAgIHt0
eXBlOiBkZXNrdG9wR0wuVU5TSUdORURfSU5UXzI0XzgsICAgICAgIGRlc3Q6IG5ldyBVaW50MzJB
cnJheSg0KX0KKyAgICBdOworICAgIGxldCBtYXliZVZhbGlkVHlwZUluZm8gPSBbXTsKKyAgICBp
ZiAoY29udGV4dFZlcnNpb24gPCAyKSB7CisgICAgLy8gVGhleSBhcmUgdmFsaWQgaW4gV2ViR0wg
MiBvciBIaWdoZXIKKyAgICAgIG1heWJlVmFsaWRUeXBlSW5mbyA9IG1heWJlVmFsaWRUeXBlSW5m
by5jb25jYXQoWworICAgICAgICB7dHlwZTogZ2wuVU5TSUdORURfU0hPUlQsICAgICAgICAgICAg
ICAgICAgICAgZGVzdDogbmV3IFVpbnQxNkFycmF5KDQpfSwKKyAgICAgICAge3R5cGU6IGdsLlNI
T1JULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q6IG5ldyBJbnQxNkFycmF5KDQp
fSwKKyAgICAgICAge3R5cGU6IGdsLkJZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q6IG5ldyBJbnQ4QXJyYXkoNCl9LAorICAgICAgICB7dHlwZTogZ2wuVU5TSUdORURfSU5U
LCAgICAgICAgICAgICAgICAgICAgICAgZGVzdDogbmV3IFVpbnQzMkFycmF5KDQpfSwKKyAgICAg
ICAge3R5cGU6IGRlc2t0b3BHTC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIGRlc3Q6IG5l
dyBVaW50MzJBcnJheSg0KX0KKyAgICAgIF0pOworICAgIH0KKworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiY2hlY2sgbm9uLWRlZmF1bHQgZm9ybWF0IG9yIHR5cGUiKTsKKyAgICBmb3IgKGxl
dCBmb3JtYXQgb2YgbmV2ZXJWYWxpZEZvcm1hdHMpIHsKKyAgICAgIHZhciBidWYgPSBuZXcgVWlu
dDhBcnJheSg0KTsKKyAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZm9ybWF0LCBnbC5V
TlNJR05FRF9CWVRFLCBidWYpOworICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9FTlVNLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlYWQgYXMgIiArIHd0dS5nbEVudW1U
b1N0cmluZyhnbCwgZm9ybWF0KSk7CisgICAgfQorICAgIGZvciAobGV0IGZvcm1hdCBvZiBtYXli
ZVZhbGlkRm9ybWF0cykgeworICAgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KDQpOworICAg
ICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBmb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1
Zik7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBbZ2wuSU5WQUxJRF9FTlVNLCBnbC5J
TlZBTElEX09QRVJBVElPTl0sICJTaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBhcyAiICsgd3R1
LmdsRW51bVRvU3RyaW5nKGdsLCBmb3JtYXQpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpbmZv
IG9mIG5ldmVyVmFsaWRUeXBlSW5mbykgeworICAgICAgdmFyIHR5cGUgPSBpbmZvLnR5cGU7Cisg
ICAgICB2YXIgZGVzdCA9IGluZm8uZGVzdDsKKyAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwg
MSwgZ2wuUkdCQSwgdHlwZSwgZGVzdCk7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX0VOVU0sICJTaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBhcyAiICsgd3R1Lmds
RW51bVRvU3RyaW5nKGdsLCB0eXBlKSk7CisgICAgfQorICAgIGZvciAobGV0IGluZm8gb2YgbWF5
YmVWYWxpZFR5cGVJbmZvKSB7CisgICAgICB2YXIgdHlwZSA9IGluZm8udHlwZTsKKyAgICAgIHZh
ciBkZXN0ID0gaW5mby5kZXN0OworICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5S
R0JBLCB0eXBlLCBkZXN0KTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZB
TElEX0VOVU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgIlNob3VsZCBub3QgYmUgYWJsZSB0byBy
ZWFkIGFzICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5cGUpKTsKKyAgICB9CisKKworICAg
IC8vIC0KKworICAgIGNvbnN0IGNvbWJpbmF0aW9ucyA9IFsKKyAgICAgIHsKKyAgICAgICAgZm9y
bWF0OiBnbC5SR0IsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81LAorICAg
ICAgICBkZXN0OiBuZXcgVWludDhBcnJheSgzKSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAg
IGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNV81XzVf
MSwKKyAgICAgICAgZGVzdDogbmV3IFVpbnQxNkFycmF5KDEpLAorICAgICAgfSwKKyAgICAgIHsK
KyAgICAgICAgZm9ybWF0OiBnbC5SR0JBLAorICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9TSE9S
VF80XzRfNF80LAorICAgICAgICBkZXN0OiBuZXcgVWludDE2QXJyYXkoMSksCisgICAgICB9LAor
ICAgIF07CisKKyAgICBjb25zdCBGT1JNQVRTID0gWworICAgICAgeworICAgICAgICBmb3JtYXQ6
IGdsLlJHQkEsCisgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgfSwgeworICAgICAgICBmb3Jt
YXQ6IGdsLlJHQiwKKyAgICAgICAgY2hhbm5lbHM6IDMsCisgICAgICB9LCB7CisgICAgICAgIGZv
cm1hdDogZ2wuTFVNSU5BTkNFX0FMUEhBLAorICAgICAgICBjaGFubmVsczogMiwKKyAgICAgIH0s
IHsKKyAgICAgICAgZm9ybWF0OiBnbC5BTFBIQSwKKyAgICAgICAgY2hhbm5lbHM6IDEsCisgICAg
ICB9LCB7CisgICAgICAgIGZvcm1hdDogZ2wuTFVNSU5BTkNFLAorICAgICAgICBjaGFubmVsczog
MywKKyAgICAgIH0sCisgICAgXTsKKyAgICBpZiAoY29udGV4dFZlcnNpb24gPj0gMikgeworICAg
ICAgRk9STUFUUy5wdXNoKAorICAgICAgICB7CisgICAgICAgICAgZm9ybWF0OiBnbC5SRUQsCisg
ICAgICAgICAgY2hhbm5lbHM6IDEsCisgICAgICAgIH0sIHsKKyAgICAgICAgICBmb3JtYXQ6IGds
LlJHLAorICAgICAgICAgIGNoYW5uZWxzOiAxLAorICAgICAgICB9LCB7CisgICAgICAgICAgZm9y
bWF0OiBnbC5SR0JBX0lOVEVHRVIsCisgICAgICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgIH0s
IHsKKyAgICAgICAgICBmb3JtYXQ6IGdsLlJHQl9JTlRFR0VSLAorICAgICAgICAgIGNoYW5uZWxz
OiAzLAorICAgICAgICB9LCB7CisgICAgICAgICAgZm9ybWF0OiBnbC5SR19JTlRFR0VSLAorICAg
ICAgICAgIGNoYW5uZWxzOiAyLAorICAgICAgICB9LCB7CisgICAgICAgICAgZm9ybWF0OiBnbC5S
RURfSU5URUdFUiwKKyAgICAgICAgICBjaGFubmVsczogMSwKKyAgICAgICAgfQorICAgICAgKTsK
KyAgICB9CisKKyAgICAvLyAtCisKKyAgICBjb25zdCBUWVBFUyA9IFsKKyAgICAgIHsKKyAgICAg
ICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgY3RvcjogVWludDhBcnJheSwKKyAg
ICAgIH0sIHsKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgICAgY3RvcjogSW50OEFycmF5
LAorICAgICAgfSwgeworICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVCwKKyAgICAgICAg
Y3RvcjogVWludDE2QXJyYXksCisgICAgICB9LCB7CisgICAgICAgIHR5cGU6IGdsLlNIT1JULAor
ICAgICAgICBjdG9yOiBJbnQxNkFycmF5LAorICAgICAgfSwgeworICAgICAgICB0eXBlOiBnbC5V
TlNJR05FRF9JTlQsCisgICAgICAgIGN0b3I6IFVpbnQzMkFycmF5LAorICAgICAgfSwgeworICAg
ICAgICB0eXBlOiBnbC5JTlQsCisgICAgICAgIGN0b3I6IEludDMyQXJyYXksCisgICAgICB9LCB7
CisgICAgICAgIHR5cGU6IGdsLkZMT0FULAorICAgICAgICBjdG9yOiBGbG9hdDMyQXJyYXksCisg
ICAgICB9CisgICAgXTsKKworICAgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgICBU
WVBFUy5wdXNoKAorICAgICAgICB7CisgICAgICAgICAgdHlwZTogZ2wuSEFMRl9GTE9BVCwKKyAg
ICAgICAgICBjdG9yOiBVaW50MTZBcnJheSwKKyAgICAgICAgfQorICAgICAgKTsKKyAgICB9CisK
KyAgICBjb25zdCBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQn
KTsKKyAgICBpZiAoZXh0KSB7CisgICAgICBUWVBFUy5wdXNoKAorICAgICAgICB7CisgICAgICAg
ICAgdHlwZTogZXh0LkhBTEZfRkxPQVRfT0VTLAorICAgICAgICAgIGN0b3I6IFVpbnQxNkFycmF5
LAorICAgICAgICB9CisgICAgICApOworICAgIH0KKworICAgIGZvciAoY29uc3QgdCBvZiBUWVBF
UykgeworICAgICAgZm9yIChjb25zdCBmIG9mIEZPUk1BVFMpIHsKKyAgICAgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5hc3NpZ24oe30sIGYsIHQpOworICAgICAgICBkZXNjLmRlc3QgPSBuZXcgZGVz
Yy5jdG9yKGRlc2MuY2hhbm5lbHMpOworICAgICAgICBjb21iaW5hdGlvbnMucHVzaChkZXNjKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICAvLyAtCisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
ImNoZWNrIGludmFsaWQgY29tYmluYXRpb25zIG9mIGZvcm1hdC90eXBlIik7CisKKyAgICB2YXIg
aW1wbEZvcm1hdCA9IGdsLmdldFBhcmFtZXRlcihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFE
X0ZPUk1BVCk7CisgICAgdmFyIGltcGxUeXBlID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLklNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfVFlQRSk7CisgICAgZGVidWcoIklNUExFTUVOVEFUSU9OX0NPTE9S
X1JFQURfRk9STUFUOiAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBpbXBsRm9ybWF0KSk7Cisg
ICAgZGVidWcoIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRTogIiArIHd0dS5nbEVudW1U
b1N0cmluZyhnbCwgaW1wbFR5cGUpKTsKKworICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCBjb21i
aW5hdGlvbnMubGVuZ3RoOyArKyB0dCkgeworICAgICAgdmFyIGluZm8gPSBjb21iaW5hdGlvbnNb
dHRdOworICAgICAgdmFyIGZvcm1hdCA9IGluZm8uZm9ybWF0OworICAgICAgdmFyIHR5cGUgPSBp
bmZvLnR5cGU7CisgICAgICB2YXIgZGVzdCA9IGluZm8uZGVzdDsKKyAgICAgIGdsLnJlYWRQaXhl
bHMoMCwgMCwgMSwgMSwgZm9ybWF0LCB0eXBlLCBkZXN0KTsKKyAgICAgIC8vIE9ubHkgdHdvIGZv
cm1hdC90eXBlIHBhcmFtZXRlciBwYWlycyBhcmUgYWNjZXB0ZWQuIEdMX1JHQkEvR0xfVU5TSUdO
RURfQllURSBpcyBhbHdheXMKKyAgICAgIC8vIGFjY2VwdGVkIG9uIGRlZmF1bHQgcmVhZGJ1ZmZl
ci4gVGhlIG90aGVyIGFjY2VwdGFibGUgcGFpciBjYW4gYmUgZGlzY292ZXJlZCBieSBxdWVyeWlu
ZworICAgICAgLy8gR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQgYW5kIEdMX0lN
UExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRS4KKyAgICAgIGlmICgoZm9ybWF0ID09IGdsLlJH
QkEgJiYgdHlwZSA9PSBnbC5VTlNJR05FRF9CWVRFKSB8fCAoZm9ybWF0ID09IGltcGxGb3JtYXQg
JiYgdHlwZSA9PSBpbXBsVHlwZSkpIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZSgKKyAg
ICAgICAgICAgIGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICJTaG91bGQgYmUgYWJsZSB0
byByZWFkIGFzICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZvcm1hdCkgKworICAgICAgICAg
ICAgIiAvICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5cGUpKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoCisgICAgICAgICAgICBnbCwgW2dsLklOVkFM
SURfT1BFUkFUSU9OLCBnbC5JTlZBTElEX0VOVU1dLAorICAgICAgICAgICAgIlNob3VsZCBub3Qg
YmUgYWJsZSB0byByZWFkIGFzICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZvcm1hdCkgKwor
ICAgICAgICAgICAgIiAvICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5cGUpKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrIHJlYWRpbmcgd2l0
aCBsb3RzIG9mIGRyYXdpbmciKTsKKyAgICBjb250aW51ZVRlc3RGdW5jID0gY29udGludWVUZXN0
UGFydDM7CisgICAgd2lkdGggPSAxMDI0OworICAgIGhlaWdodCA9IDEwMjQ7CisgICAgY2FudmFz
LndpZHRoID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICBpZiAoZ2wu
Z2V0RXJyb3IoKSAhPSBnbC5DT05URVhUX0xPU1RfV0VCR0wpIHsKKyAgICAgIGNvbnRpbnVlVGVz
dFBhcnQzKCk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gY29udGludWVUZXN0UGFydDMoKSB7
CisgICAgZ2wudmlld3BvcnQoMCwgMCwgMTAyNCwgMTAyNCk7CisgICAgdmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworICAgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInRleCIpOworICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOworICAgIGds
LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgdmFyIGNvbG9ycyA9IFtbMjU1LCAwLCAwLCAy
NTVdLCBbMCwgMjU1LCAwLCAyNTVdLCBbMCwgMCwgMjU1LCAyNTVdXTsKKyAgICB2YXIgdGV4dHVy
ZXMgPSBbXTsKKyAgICB2YXIgcmVzdWx0cyA9IFtdOworICAgIGZvciAodmFyIGlpID0gMDsgaWkg
PCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRV
UkUwICsgaWkpOworICAgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgIHd0
dS5maWxsVGV4dHVyZShnbCwgdGV4LCAxLCAxLCBjb2xvcnNbaWldKTsKKyAgICAgIHRleHR1cmVz
LnB1c2godGV4KTsKKyAgICB9CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9ycy5sZW5n
dGg7ICsraWkpIHsKKyAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCAzMDAgKyBpaSArIDE7ICsr
amopIHsKKyAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgamogJSAzKTsKKyAgICAgICAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgICAgfQorICAgICAgdmFyIGJ1ZiA9IG5l
dyBVaW50OEFycmF5KDQpOworICAgICAgZ2wucmVhZFBpeGVscyg1MTIsIDUxMiwgMSwgMSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICAgIHJlc3VsdHMucHVzaChidWYpOwor
ICAgICAgZm9yICh2YXIga2sgPSAwOyBrayA8IDk5OyArK2trKSB7CisgICAgICAgIGdsLnVuaWZv
cm0xaShsb2MsIChqaiArIGtrKSAlIDMpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFO
R0xFUywgMCwgNik7CisgICAgICB9CisgICAgfQorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBj
b2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICB2YXIgYnVmID0gcmVzdWx0c1tpaV07CisgICAg
ICB2YXIgY29sb3IgPSBjb2xvcnNbaWldOworICAgICAgYWN0dWFsID0gW2J1ZlswXSwgYnVmWzFd
LCBidWZbMl0sIGJ1ZlszXV07CisgICAgICBleHBlY3RlZCA9IFtjb2xvclswXSwgY29sb3JbMV0s
IGNvbG9yWzJdLCBjb2xvclszXV07CisgICAgICBzaG91bGRCZSgiYWN0dWFsIiwgImV4cGVjdGVk
Iik7CisgICAgfQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhl
cmUgc2hvdWxkIGJlIG5vIEdMIGVycm9ycyIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJjaGVjayByZWFkYmFjayBpbnRvIFVpbnQ4Q2xhbXBlZEFycmF5Iik7CisgICAgY29udGludWVU
ZXN0RnVuYyA9IGNvbnRpbnVlVGVzdFBhcnQ0OworICAgIGNvbnN0IGtTaXplID0gMzI7CisgICAg
Y2FudmFzLndpZHRoID0ga1NpemU7CisgICAgY2FudmFzLmhlaWdodCA9IGtTaXplOworICAgIGlm
IChnbC5nZXRFcnJvcigpICE9IGdsLkNPTlRFWFRfTE9TVF9XRUJHTCkgeworICAgICAgY29udGlu
dWVUZXN0UGFydDQoKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBjb250aW51ZVRlc3RQYXJ0
NCgpIHsKKyAgICBjb25zdCBrU2l6ZSA9IDMyOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGtTaXpl
LCBrU2l6ZSk7CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OENs
YW1wZWRBcnJheSg0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gR0wgZXJyb3JzIHJlYWRpbmcgYmFjayBpbnRvIGEg
VWludDhDbGFtcGVkQXJyYXkiKTsKKyAgICBpZiAoYnVmWzBdID09IDAgJiYgYnVmWzFdID09IDI1
NSAmJiBidWZbMl0gPT0gMCAmJiBidWZbM10gPT0gMjU1KSB7CisgICAgICB0ZXN0UGFzc2VkKCJS
ZWFkYmFjayBpbnRvIFVpbnQ4Q2xhbXBlZEFycmF5IHdvcmtlZCBzdWNjZXNzZnVsbHkiKTsKKyAg
ICB9IGVsc2UgeworICAgICAgYXNzZXJ0TXNnKGZhbHNlLAorICAgICAgICAgICAgICAgICJjb2xv
ciBwaXhlbCBhdCAwLCAwIHNob3VsZCBiZSBbMCwgMjU1LCAwLCAyNTVdLCB3YXMgIiArCisgICAg
ICAgICAgICAgICAgW2J1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlszXV0pOworICAgIH0KKwor
ICAgIGNvbnN0IHZhbGlkRGF0YXMgPSBbCisgICAgICBgbmV3IFVpbnQ4QXJyYXkoNClgLAorICAg
ICAgYG5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcig0KSlgLAorICAgICAgYG5ldyBVaW50
OENsYW1wZWRBcnJheSg0KWAsCisgICAgICBgbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG5ldyBBcnJh
eUJ1ZmZlcig0KSlgLAorICAgIF07CisgICAgaWYgKHdpbmRvdy5TaGFyZWRBcnJheUJ1ZmZlcikg
eworICAgICAgdmFsaWREYXRhcy5wdXNoKAorICAgICAgICBgbmV3IFVpbnQ4QXJyYXkobmV3IFNo
YXJlZEFycmF5QnVmZmVyKDQpKWAsCisgICAgICAgIGBuZXcgVWludDhDbGFtcGVkQXJyYXkobmV3
IFNoYXJlZEFycmF5QnVmZmVyKDQpKWAKKyAgICAgICk7CisgICAgfQorICAgIGZvciAoY29uc3Qg
eCBvZiB2YWxpZERhdGFzKSB7CisgICAgICBzaG91bGROb3RUaHJvdyhgZ2wucmVhZFBpeGVscygw
LCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAke3h9KTtgKTsKKyAgICB9Cisg
IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyYnVm
ZmVycy9kZXB0aC1yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZl
cnMvZGVwdGgtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Uz
ZTRiODlhYTRmZjA4Mjc2NmVlMDFiOTBkNzk3NjM0ZGFhNzU5YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3JlbmRlcmJ1ZmZlcnMvZGVwdGgtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMzIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RiZWQiIHdpZHRoPSI0MCIgaGVp
Z2h0PSI0MCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0
aW9uKCdWZXJpZnkgZGVwdGggcmVuZGVyYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQgdG8gMS4wIGJl
Zm9yZSBiZWluZyByZWFkIGluIFdlYkdMJyk7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoInRlc3RiZWQiKTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoJ2NhbnZhcy5nZXRD
b250ZXh0KCkgZmFpbGVkJyk7Cit9IGVsc2UgeworICAgIC8vIFNldCB0aGUgY2xlYXIgY29sb3Ig
dG8gZ3JlZW4uIEl0IHNob3VsZCBuZXZlciBzaG93IHVwLgorICAgIGdsLmNsZWFyQ29sb3IoMCwg
MSwgMCwgMSk7CisgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBnbC5kaXNhYmxl
KGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICBsZXQgYyA9IGdsLmNhbnZhczsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiB7dzog
Yy53aWR0aCwgaDogYy5oZWlnaHR9LCBhbGxvYzI6IG51bGx9KTsKKyAgICAgICAgcnVuVGVzdChn
bCwge2FsbG9jMTogbnVsbCwgYWxsb2MyOiB7dzogYy53aWR0aCwgaDogYy5oZWlnaHR9fSk7Cisg
ICAgICAgIC8vIFRlc3RzIGZvciBpbml0aWFsbHkgYWxsb2NhdGluZyBhdCB0aGUgd3Jvbmcgc2l6
ZS4KKyAgICAgICAgcnVuVGVzdChnbCwge2FsbG9jMToge3c6IDUsIGg6IDV9LCBhbGxvYzI6IHt3
OiBjLndpZHRoLCBoOiBjLmhlaWdodH19KTsKKyAgICB9CisKKyAgICAvLyBUZXN0aW5nIGJ1ZmZl
ciBjbGVhcmluZyB3b24ndCBjaGFuZ2UgdGhlIGNsZWFyIHZhbHVlcy4KKyAgICB2YXIgY2xlYXJD
b2xvciA9IGdsLmdldFBhcmFtZXRlcihnbC5DT0xPUl9DTEVBUl9WQUxVRSk7CisgICAgc2hvdWxk
QmUoImNsZWFyQ29sb3IiLCAiWzAsIDEsIDAsIDFdIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICdzaG91bGQgYmUgbm8gZXJyb3JzJyk7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoZ2wsIHBhcmFtcykgeworICAgIGRlYnVnKCJUZXN0IGZvciBkZXB0aCBidWZmZXI6
ICIgKyBKU09OLnN0cmluZ2lmeShwYXJhbXMpKTsKKyAgICBsZXQgZmluYWwgPSBwYXJhbXMuYWxs
b2MyID8gcGFyYW1zLmFsbG9jMiA6IHBhcmFtcy5hbGxvYzE7CisgICAgZ2wudmlld3BvcnQoMCwg
MCwgZmluYWwudywgZmluYWwuaCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwg
ZmluYWwudywgZmluYWwuaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBidWZmZXJzIGhhdmUgYmVlbiBpbml0
aWFsaXplZCB0byAwIik7CisKKyAgICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworCisgICAg
Ly8gZmlsbCB0aGUgYmFjayBidWZmZXIgc28gd2Uga25vdyB0aGF0IHJlYWRpbmcgYmVsb3cgaGFw
cGVucyBmcm9tCisgICAgLy8gdGhlIHJlbmRlcmJ1ZmZlci4KKyAgICBnbC5jbGVhckRlcHRoKDAp
OworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklU
KTsKKworICAgIC8vIFNldCB1cCAoY29sb3IrZGVwdGgpIHRlc3QgYnVmZmVyLgorICAgIHZhciBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCk7CisgICAgdmFyIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAg
ICBpZiAocGFyYW1zLmFsbG9jMSkgeworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJF
TkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICAgICAgYWxsb2NTdG9yYWdlKGdsLlJHQkE0LCBwYXJh
bXMuYWxsb2MxLncsIHBhcmFtcy5hbGxvYzEuaCk7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7CisgICAgICAgIGFsbG9jU3RvcmFnZShn
bC5ERVBUSF9DT01QT05FTlQxNiwgcGFyYW1zLmFsbG9jMS53LCBwYXJhbXMuYWxsb2MxLmgpOwor
ICAgIH0KKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsK
KyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5E
RVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICBpZiAocGFyYW1zLmFsbG9jMikgeworICAgICAg
ICBpZiAocGFyYW1zLmFsbG9jMSkgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIEZCTyBpbiBv
cmRlciB0byBtYWtlIHN1cmUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgaXMKKyAgICAgICAgICAg
IC8vIGNvbW1pdHRlZC4KKyAgICAgICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJTa2lwOiBmcmFtZWJ1ZmZlciBpcyBhbGxvd2VkIHRvIGJlIGluY29tcGxl
dGUuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwor
ICAgICAgICB9CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBi
dWZmZXIpOworICAgICAgICBhbGxvY1N0b3JhZ2UoZ2wuUkdCQTQsIHBhcmFtcy5hbGxvYzIudywg
cGFyYW1zLmFsbG9jMi5oKTsKKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICAgICAgYWxsb2NTdG9yYWdlKGdsLkRFUFRIX0NPTVBP
TkVOVDE2LCBwYXJhbXMuYWxsb2MyLncsIHBhcmFtcy5hbGxvYzIuaCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYWxsb2NTdG9yYWdlKGZvcm1hdCwgd2lkdGgsIGhlaWdodCkgeworICAgICAgICBn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAg
ICAgICAgICAic2hvdWxkIGJlIG5vIGVycm9yIGFmdGVyIHJlbmRlcmJ1ZmZlclN0b3JhZ2UuIik7
CisgICAgfQorCisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIGRlYnVnKCJTa2lwOiBm
cmFtZWJ1ZmZlciBpcyBhbGxvd2VkIHRvIGJlIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICdzaG91
bGQgYmUgbm8gZXJyb3JzJyk7CisKKyAgICAvLyBmYm8gZGVwdGggc2hvdWxkIG5vdyBiZSB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiAxLjAuCisKKyAgICAvLyBEcmF3IGEgYmx1ZSBxdWFkIChhdCBjbGlw
IHogPSAwLjAsIHNvIGRlcHRoID0gMC41KSAoc2hvdWxkIHBhc3MgdGhlIGRlcHRoIHRlc3Q6IDAu
NSA8IDEuMCkKKyAgICBnbC5kZXB0aEZ1bmMoZ2wuTEVTUyk7CisgICAgZ2wuZW5hYmxlKGdsLkRF
UFRIX1RFU1QpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAgd3R1LnNldEZsb2F0
RHJhd0NvbG9yKGdsLCBbMCwgMCwgMSwgMV0pOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOwor
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGZpbmFsLncsIGZpbmFsLmgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMjU1LCAyNTVdKTsKKworICAgIGdsLmRlbGV0ZUZy
YW1lYnVmZmVyKGZibyk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGJ1ZmZlcik7CisKKyAg
ICBnbC5jYW52YXMud2lkdGggKz0gMTsKKyAgICBnbC5jYW52YXMuaGVpZ2h0ICs9IDE7CisKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgJ3Nob3VsZCBiZSBubyBlcnJv
cnMnKTsKKyAgICBkZWJ1ZygnJyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZmVlZGJh
Y2stbG9vcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mZWVkYmFjay1sb29wLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2ZGI3NDg1NzNkZjkyNWY2NWQ5NjA5ZmFmNDgxZTUyYjc4YWY1ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZmVlZGJhY2stbG9vcC5odG1sCkBAIC0wLDAgKzEsMTA0IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAg
ICA8dGl0bGU+V2ViR0wgUmVuZGVyaW5nIEZlZWRiYWNrIExvb3A8L3RpdGxlPgorICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0
PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIx
IiBoZWlnaHQ9IjEiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+
CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCisgICAgPHNjcmlwdCBpZD0idnMiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1q
YXZhc2NyaXB0Ij4KKyAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgIGF0dHJpYnV0
ZSB2ZWMyIGFfdGV4Q29vcmQ7CisgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgdm9p
ZCBtYWluKCkgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgICAgIHZf
dGV4Q29vcmQgPSBhX3RleENvb3JkOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0
IGlkPSJmcyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTsKKyAgICB2b2lkIG1haW4oKSB7CisgICAgICAgIC8v
IFNoYWRlciBzd2l6emxlcyBjb2xvciBjaGFubmVscyBzbyB3ZSBjYW4gdGVsbCBpZiB0aGUgZHJh
dyBzdWNjZWVkZWQuCisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUs
IHZfdGV4Q29vcmQpLmdicmE7CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgInVzZSBzdHJpY3QiOworICAgIGRlc2NyaXB0aW9uKCJDaGVja3MgdGhhdCByZW5kZXJpbmcg
ZmVlZGJhY2sgbG9vcHMgZmFpbCBjb3JyZWN0bHkuIik7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKwor
ICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KFsyNTUsIDAsIDAsIDI1NV0pKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01B
R19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0Up
OworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBjcmVh
dGluZyB0ZXh0dXJlIik7CisKKyAgICB2YXIgZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZm
ZXIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAgICBhc3NlcnRN
c2coZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVC
VUZGRVJfQ09NUExFVEUsCisgICAgICAgICJmcmFtZWJ1ZmZlciBzaG91bGQgYmUgRlJBTUVCVUZG
RVJfQ09NUExFVEUuIik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2ws
IFsidnMiLCAiZnMiXSwgWyJhX3Bvc2l0aW9uIiwgImFfdGV4Q29vcmQiXSk7CisgICAgZ2wudW5p
Zm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV90ZXh0dXJlIiksIDApOwor
ICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOworICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBpbml0V2Vi
R0wiKTsKKworICAgIC8vIERyYXdpbmcgd2l0aCBhIHRleHR1cmUgdGhhdCBpcyBhbHNvIGJvdW5k
IHRvIHRoZSBjdXJyZW50IGZyYW1lYnVmZmVyIHNob3VsZCBmYWlsCisgICAgdmFyIGJ1ZmZlck9i
amVjdHMgPSB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJhZnRlciBkcmF3
IHdpdGggaW52YWxpZCBmZWVkYmFjayBsb29wIik7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUg
dGV4dHVyZSBjb250ZW50cyBkaWQgbm90IGNoYW5nZSBhZnRlciB0aGUgcHJldmlvdXMgcmVuZGVy
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICB3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiYWZ0ZXIgZHJhd2luZyIpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAs
IDAsIDI1NSwgMjU1XSwgIlNob3VsZCBiZSBibHVlLiIpOworCisgICAgLy8gRHJhd2luZyB3aGVu
IHRleHR1cmUgaXMgYm91bmQgdG8gYW4gaW5hY3RpdmUgdW5pZm9ybSBzaG91bGQgc3VjY2VlZAor
ICAgIHZhciB0ZXh0dXJlMiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMik7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWzAsIDI1NSwgMCwgMjU1XSkpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURH
RSk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVy
KTsKKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGRyYXcgd2hlcmUg
ZnJhbWVidWZmZXIgdGV4dHVyZSBpcyBib3VuZCB0byBpbmFjdGl2ZSB0ZXh0dXJlIHVuaXQiKTsK
KyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJTaG91bGQgYmUgcmVk
LiIpOworCisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+
CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZyYW1lYnVm
ZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLW9i
amVjdC1hdHRhY2htZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE1ZTEzODZjN2UzYjc1YTY4YWUwODgy
NGM4MzgyMjkyM2RhYTJiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZnJhbWVi
dWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbApAQCAtMCwwICsxLDY3OCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7
Cit2YXIgZmJvOwordmFyIGRlcHRoQnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVw
dGhTdGVuY2lsQnVmZmVyOwordmFyIGNvbG9yQnVmZmVyOwordmFyIHdpZHRoOwordmFyIGhlaWdo
dDsKKwordmFyIEFMTE9XX0NPTVBMRVRFICAgICAgICAgICAgICA9IDB4MDE7Cit2YXIgQUxMT1df
VU5TVVBQT1JURUQgICAgICAgICAgID0gMHgwMjsKK3ZhciBBTExPV19JTkNPTVBMRVRFX0FUVEFD
SE1FTlQgPSAweDA0OworCitmdW5jdGlvbiBjaGVja0ZyYW1lYnVmZmVyRm9yQWxsb3dlZFN0YXR1
c2VzKGFsbG93ZWRTdGF0dXNlcykKK3sKKyAgICAvLyBJZiB0aGUgZnJhbWVidWZmZXIgaXMgaW4g
YW4gZXJyb3Igc3RhdGUgZm9yIG11bHRpcGxlIHJlYXNvbnMsCisgICAgLy8gd2UgY2FuJ3QgZ3Vh
cmFudGVlIHdoaWNoIG9uZSB3aWxsIGJlIHJlcG9ydGVkLgorICAgIHZhciBzdGF0dXMgPSBnbC5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICB2YXIgc3RhdHVzQWxs
b3dlZCA9ICgoYWxsb3dlZFN0YXR1c2VzICYgQUxMT1dfQ09NUExFVEUpICYmIChzdGF0dXMgPT0g
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgKChh
bGxvd2VkU3RhdHVzZXMgJiBBTExPV19VTlNVUFBPUlRFRCkgJiYgKHN0YXR1cyA9PSBnbC5GUkFN
RUJVRkZFUl9VTlNVUFBPUlRFRCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAoKGFsbG93
ZWRTdGF0dXNlcyAmIEFMTE9XX0lOQ09NUExFVEVfQVRUQUNITUVOVCkgJiYgKHN0YXR1cyA9PSBn
bC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQpKTsKKyAgICB2YXIgbXNnID0gImds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkICIgKyBzdGF0
dXM7CisgICAgaWYgKHN0YXR1c0FsbG93ZWQpCisgICAgICAgIHRlc3RQYXNzZWQobXNnKTsKKyAg
ICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQobXNnKTsKK30KKworZnVuY3Rpb24gY2hlY2tCdWZm
ZXJCaXRzKGF0dGFjaG1lbnQwLCBhdHRhY2htZW50MSkKK3sKKyAgICBpZiAoZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUp
CisgICAgICByZXR1cm47CisKKyAgICB2YXIgaGF2ZURlcHRoQnVmZmVyID0gYXR0YWNobWVudDAg
PT0gZ2wuREVQVEhfQVRUQUNITUVOVCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRh
Y2htZW50MCA9PSBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0YWNobWVudDEgPT0gZ2wuREVQVEhfQVRUQUNITUVOVCB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50MSA9PSBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQ7CisgICAgdmFyIGhhdmVTdGVuY2lsQnVmZmVyID0gYXR0YWNobWVudDAgPT0gZ2wuU1RF
TkNJTF9BVFRBQ0hNRU5UIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVu
dDAgPT0gZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudDEgPT0gZ2wuU1RFTkNJTF9BVFRBQ0hNRU5UIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudDEgPT0gZ2wuREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UOworCisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMp
ICsgZ2wuZ2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpICsgZ2wuZ2V0UGFyYW1ldGVyKGdsLkJM
VUVfQklUUykgKyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gMTYiKTsKKworICAg
IGlmIChoYXZlRGVwdGhCdWZmZXIpCisgICAgICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRl
cihnbC5ERVBUSF9CSVRTKSA+PSAxNiIpOworICAgIGVsc2UKKyAgICAgIHNob3VsZEJlVHJ1ZSgi
Z2wuZ2V0UGFyYW1ldGVyKGdsLkRFUFRIX0JJVFMpID09IDAiKTsKKworICAgIGlmIChoYXZlU3Rl
bmNpbEJ1ZmZlcikKKyAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5D
SUxfQklUUykgPj0gOCIpOworICAgIGVsc2UKKyAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFy
YW1ldGVyKGdsLlNURU5DSUxfQklUUykgPT0gMCIpOworfQorCitmdW5jdGlvbiB0ZXN0QXR0YWNo
bWVudChhdHRhY2htZW50LCBidWZmZXIsIGFsbG93ZWRTdGF0dXNlcykKK3sKKyAgICBzaG91bGRC
ZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZG
RVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyRm9y
QWxsb3dlZFN0YXR1c2VzKGFsbG93ZWRTdGF0dXNlcyk7CisgICAgaWYgKChhbGxvd2VkU3RhdHVz
ZXMgJiBBTExPV19DT01QTEVURSkgPT0gMCkgeworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9G
UkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRo
LCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KHdpZHRo
ICogaGVpZ2h0ICogNCkpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgfQorICAgIGNoZWNrQnVmZmVyQml0cyhh
dHRhY2htZW50KTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworfQorCitmdW5jdGlv
biB0ZXN0QXR0YWNobWVudHMoYXR0YWNobWVudDAsIGJ1ZmZlcjAsIGF0dGFjaG1lbnQxLCBidWZm
ZXIxLCBhbGxvd2VkU3RhdHVzZXMpCit7CisgICAgc2hvdWxkQmVOb25OdWxsKCJmYm8gPSBnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpIik7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7Cisg
ICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQw
LCBnbC5SRU5ERVJCVUZGRVIsIGJ1ZmZlcjApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgYXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGNoZWNrRnJhbWVidWZmZXJGb3JB
bGxvd2VkU3RhdHVzZXMoYWxsb3dlZFN0YXR1c2VzKTsKKyAgICBjaGVja0J1ZmZlckJpdHMoYXR0
YWNobWVudDAsIGF0dGFjaG1lbnQxKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOwor
fQorCitmdW5jdGlvbiB0ZXN0Q29sb3JSZW5kZXJidWZmZXIoaW50ZXJuYWxmb3JtYXQsIGFsbG93
ZWRTdGF0dXNlcykKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoImNvbG9yQnVmZmVyID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHRlc3RBdHRhY2htZW50KGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBjb2xvckJ1ZmZlciwgYWxsb3dlZFN0YXR1c2VzKTsKK30KKworZnVuY3Rpb24g
dGVzdERlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcihhbGxvd2VkU3RhdHVzZXMpCit7CisgICAgc2hv
dWxkQmVOb25OdWxsKCJkZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSIpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5j
aWxCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBn
bC5ERVBUSF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7CisKKyAgICAvLyBPcGVuR0wgaXRzZWxmIGRvZXNuJ3Qgc2VlbSB0
byBndWFyYW50ZWUgdGhhdCBlLmcuIGEgMiB4IDAKKyAgICAvLyByZW5kZXJidWZmZXIgd2lsbCBy
ZXBvcnQgMiBmb3IgaXRzIHdpZHRoIHdoZW4gcXVlcmllZC4KKyAgICBpZiAoIShoZWlnaHQgPT0g
MCAmJiB3aWR0aCA+IDApKQorICAgICAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKSIsICJ3aWR0aCIp
OworICAgIGlmICghKHdpZHRoID09IDAgJiYgaGVpZ2h0ID4gMCkpCisgICAgICAgIHNob3VsZEJl
KCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJC
VUZGRVJfSEVJR0hUKSIsICJoZWlnaHQiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZP
Uk1BVCkiLCAiZ2wuREVQVEhfU1RFTkNJTCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfUkVEX1NJWkUp
IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJF
TkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUpIiwgIjAiKTsKKyAgICBzaG91
bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVO
REVSQlVGRkVSX0JMVUVfU0laRSkiLCAiMCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQUxQSEFfU0la
RSkiLCAiMCIpOworICAgIC8vIEF2b2lkIHZlcmlmeWluZyB0aGVzZSBmb3IgemVyby1zaXplZCBy
ZW5kZXJidWZmZXJzIGZvciB0aGUgdGltZQorICAgIC8vIGJlaW5nIHNpbmNlIGl0IGFwcGVhcnMg
dGhhdCBldmVuIE9wZW5HTCBkb2Vzbid0IGd1YXJhbnRlZSB0aGVtLgorICAgIGlmICh3aWR0aCA+
IDAgJiYgaGVpZ2h0ID4gMCkgeworICAgICAgICBzaG91bGRCZVRydWUoImdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpF
KSA+IDAiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFKSA+IDAiKTsK
KyAgICB9CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHRl
c3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVm
ZmVyLCBhbGxvd2VkU3RhdHVzZXMpOworICAgIHRlc3REZXB0aFN0ZW5jaWxEZXB0aFN0ZW5jaWwo
KTsKK30KKworZnVuY3Rpb24gdGVzdERlcHRoU3RlbmNpbERlcHRoU3RlbmNpbCgpCit7CisgICAg
aWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2
YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICBmaXJzdEZvcm1hdDogZ2wuREVQVEhfQ09NUE9ORU5U
MTYsCisgICAgICAgICAgICBmaXJzdEF0dGFjaDogZ2wuREVQVEhfQVRUQUNITUVOVCwKKyAgICAg
ICAgICAgIHNlY29uZEZvcm1hdDogZ2wuREVQVEhfU1RFTkNJTCwKKyAgICAgICAgICAgIHNlY29u
ZEF0dGFjaDogZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCisgICAgICAgIH0sCisgICAgICAg
IHsgICBmaXJzdEZvcm1hdDogZ2wuREVQVEhfU1RFTkNJTCwKKyAgICAgICAgICAgIGZpcnN0QXR0
YWNoOiBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAgICAgICBzZWNvbmRGb3Jt
YXQ6IGdsLkRFUFRIX0NPTVBPTkVOVDE2LAorICAgICAgICAgICAgc2Vjb25kQXR0YWNoOiBnbC5E
RVBUSF9BVFRBQ0hNRU5UCisgICAgICAgIH0KKyAgICBdOworICAgIGZvciAodmFyIGlpID0gMDsg
aWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1tpaV07
CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCAyOyArK2pqKSB7CisgICAgICAgICAgICB2
YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIHZhciB0ZXggPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB2YXIgZmlyc3RSYiA9IGdsLmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1
ZygidGVzdDogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGVzdC5maXJzdEZvcm1hdCkgKyAi
IHZzICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHRlc3Quc2Vjb25kRm9ybWF0KSArICIgd2l0
aCAiICsgKGpqID8gInVuYmluZCIgOiAiZGVsZXRlIikpOworCisgICAgICAgICAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICAvLyBhdHRhY2gg
dGV4dHVyZSBhcyBjb2xvcgorICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4KTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisKKyAgICAgICAgICAg
IC8vIGF0dGFjaCBmaXJzdAorICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIGZpcnN0UmIpOworICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIHRlc3QuZmlyc3RGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRlc3QuZmly
c3RBdHRhY2gsIGdsLlJFTkRFUkJVRkZFUiwgZmlyc3RSYik7CisKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFN
RUJVRkZFUl9DT01QTEVURScpOworICAgICAgICAgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1Qp
OworICAgICAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBDb2xvclF1YWQoZ2wpOworICAg
ICAgICAgICAgLy8gVGVzdCBpdCB3b3JrcworICAgICAgICAgICAgd3R1LmRyYXdVQnl0ZUNvbG9y
UXVhZChnbCwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgICAgICAgICB3dHUuZHJhd1VCeXRlQ29s
b3JRdWFkKGdsLCBbMjU1LCAwLCAwLCAyNTVdKTsgIC8vIHNob3VsZCBub3QgZHJhdyBzaW5jZSBE
RVBUSF9GVU5DID09IExFU1MKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAs
IDAsIHdpZHRoLCBoZWlnaHQsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsK
KworICAgICAgICAgICAgdmFyIHNlY29uZFJiID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisK
KyAgICAgICAgICAgIC8vIGF0dGFjaCBzZWNvbmQKKyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBzZWNvbmRSYik7CisgICAgICAgICAgICBnbC5yZW5kZXJi
dWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgdGVzdC5zZWNvbmRGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIHRlc3Quc2Vjb25kQXR0YWNoLCBnbC5SRU5ERVJCVUZGRVIsIHNlY29uZFJiKTsKKwor
ICAgICAgICAgICAgaWYgKGpqID09IDApIHsKKyAgICAgICAgICAgICAgLy8gbm93IGRlbGV0ZSBp
dAorICAgICAgICAgICAgICBkZWJ1ZygidGVzdCBkZWxldGluZyBzZWNvbmQgcmVuZGVyYnVmZmVy
Iik7CisgICAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihzZWNvbmRSYik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAvLyB1bmJpbmQgaXQKKyAgICAgICAgICAg
ICAgZGVidWcoInRlc3QgdW5iaW5kaW5nIHNlY29uZCByZW5kZXJidWZmZXIiKTsKKyAgICAgICAg
ICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRlc3Quc2Vj
b25kQXR0YWNoLCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYXR0YWNobWVudCBpcyBub3QgcmVzdG9yZWQgdGhpcyBt
YXkgZmFpbAorICAgICAgICAgICAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisgICAgICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIC8v
IElmIHRoZSBmaXJzdCBhdHRhY2htZW50IGlzIG5vdCByZXN0b3JlZCB0aGlzIG1heSBmYWlsLgor
ICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICB3
dHUuZHJhd1VCeXRlQ29sb3JRdWFkKGdsLCBbMCwgMjU1LCAwLCAyNTVdKTsKKyAgICAgICAgICAg
IHd0dS5kcmF3VUJ5dGVDb2xvclF1YWQoZ2wsIFsyNTUsIDAsIDAsIDI1NV0pOyAgLy8gc2hvdWxk
IG5vdCBkcmF3IHNpbmNlIERFUFRIX0ZVTkMgPT0gTEVTUworICAgICAgICAgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgWzAsIDI1NSwgMCwgMjU1XSwgInNo
b3VsZCBiZSBncmVlbiIpOworICAgICAgICAgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsK
KworICAgICAgICAgICAgaWYgKGpqID09IDEpIHsKKyAgICAgICAgICAgICAgZ2wuZGVsZXRlUmVu
ZGVyYnVmZmVyKHNlY29uZFJiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wuZGVs
ZXRlUmVuZGVyYnVmZmVyKHNlY29uZFJiKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVm
ZmVyKGZibyk7CisgICAgICAgIH0KKyAgICB9CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmcmFtZWJ1ZmZlciBvYmplY3Qg
YXR0YWNobWVudCBiZWhhdmlvcnMiKTsKKworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoKSIpOworCitmdW5jdGlvbiB0ZXN0RnJhbWVidWZmZXJSZXF1aXJlZENvbWJp
bmF0aW9ucygpIHsKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgY29tYmluYXRpb25zIG9mIGZyYW1lYnVm
ZmVyIGF0dGFjaG1lbnRzIHJlcXVpcmVkIHRvIGJlIHZhbGlkIik7CisKKyAgICAvLyBQZXIgZGlz
Y3Vzc2lvbiB3aXRoIHRoZSBPcGVuR0wgRVMgd29ya2luZyBncm91cCwgdGhlIGZvbGxvd2luZyBm
cmFtZWJ1ZmZlciBhdHRhY2htZW50CisgICAgLy8gY29tYmluYXRpb25zIGFyZSByZXF1aXJlZCB0
byB3b3JrIGluIGFsbCBXZWJHTCBpbXBsZW1lbnRhdGlvbnM6CisgICAgLy8gMS4gQ09MT1JfQVRU
QUNITUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZVEUgdGV4dHVyZQorICAgIC8vIDIuIENPTE9SX0FU
VEFDSE1FTlQwID0gUkdCQS9VTlNJR05FRF9CWVRFIHRleHR1cmUgKyBERVBUSF9BVFRBQ0hNRU5U
ID0gREVQVEhfQ09NUE9ORU5UMTYgcmVuZGVyYnVmZmVyCisgICAgLy8gMy4gQ09MT1JfQVRUQUNI
TUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZVEUgdGV4dHVyZSArIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IERFUFRIX1NURU5DSUwgcmVuZGVyYnVmZmVyCisKKyAgICB2YXIgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibyk7CisKKyAgICB2YXIgd2lkdGggPSA2NDsKKyAgICB2YXIgaGVpZ2h0ID0gNjQ7CisKKyAg
ICAvLyAxLiBDT0xPUl9BVFRBQ0hNRU5UMCA9IFJHQkEvVU5TSUdORURfQllURSB0ZXh0dXJlCisg
ICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7
CisgICAgY2hlY2tGcmFtZWJ1ZmZlckZvckFsbG93ZWRTdGF0dXNlcyhBTExPV19DT01QTEVURSk7
CisgICAgY2hlY2tCdWZmZXJCaXRzKCk7CisKKyAgICAvLyAyLiBDT0xPUl9BVFRBQ0hNRU5UMCA9
IFJHQkEvVU5TSUdORURfQllURSB0ZXh0dXJlICsgREVQVEhfQVRUQUNITUVOVCA9IERFUFRIX0NP
TVBPTkVOVDE2IHJlbmRlcmJ1ZmZlcgorICAgIHZhciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwg
cmVuZGVyYnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5S
RU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgY2hlY2tGcmFtZWJ1ZmZlckZvckFsbG93
ZWRTdGF0dXNlcyhBTExPV19DT01QTEVURSk7CisgICAgY2hlY2tCdWZmZXJCaXRzKGdsLkRFUFRI
X0FUVEFDSE1FTlQpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworCisgICAg
Ly8gMy4gQ09MT1JfQVRUQUNITUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZVEUgdGV4dHVyZSArIERF
UFRIX1NURU5DSUxfQVRUQUNITUVOVCA9IERFUFRIX1NURU5DSUwgcmVuZGVyYnVmZmVyCisgICAg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUws
IHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmZmVyKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyRm9yQWxsb3dlZFN0YXR1c2VzKEFMTE9X
X0NPTVBMRVRFKTsKKyAgICBjaGVja0J1ZmZlckJpdHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYm8pOworfQorCit0ZXN0RnJhbWVidWZmZXJSZXF1aXJlZENvbWJpbmF0aW9u
cygpOworCitmb3IgKHdpZHRoID0gMDsgd2lkdGggPD0gMjsgd2lkdGggKz0gMikKK3sKKyAgICBm
b3IgKGhlaWdodCA9IDA7IGhlaWdodCA8PSAyOyBoZWlnaHQgKz0gMikKKyAgICB7CisgICAgICAg
IGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkRpbWVuc2lvbnMgIiArIHdpZHRoICsgIiB4ICIg
KyBoZWlnaHQpOworCisgICAgICAgIGRlYnVnKCJDcmVhdGUgcmVuZGVyYnVmZmVycyIpOworICAg
ICAgICBzaG91bGRCZU5vbk51bGwoImNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCkiKTsKKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9y
QnVmZmVyKTsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIs
IGdsLlJHQkE0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOworICAgICAgICBzaG91bGRCZU5vbk51bGwoImRlcHRoQnVmZmVyID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgICAg
ICBzaG91bGRCZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSIpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNp
bEJ1ZmZlcik7CisgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVS
LCBnbC5TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJkZXB0
aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworICAgICAgICBnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAg
ICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX1NU
RU5DSUwsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUik7CisKKyAgICAgICAgdmFyIGFsbG93ZWRTdGF0dXNGb3JHb29kQ2FzZQorICAg
ICAgICAgICAgPSAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkgPyBBTExPV19JTkNPTVBMRVRF
X0FUVEFDSE1FTlQgOiBBTExPV19DT01QTEVURTsKKworICAgICAgICAvLyBzb21lIGNhc2VzIGlu
dm9sdmluZyBzdGVuY2lsIHNlZW0gdG8gYmUgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50CisgICAg
ICAgIHZhciBhbGxvd2VkU3RhdHVzRm9ySW1wbERlcGVuZGVudENhc2UgPSBhbGxvd2VkU3RhdHVz
Rm9yR29vZENhc2UgfCBBTExPV19VTlNVUFBPUlRFRDsKKworICAgICAgICBkZWJ1ZygiQXR0YWNo
IGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKKyAgICAgICAgdGVzdEF0dGFjaG1lbnQo
Z2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGFsbG93ZWRTdGF0dXNGb3JHb29kQ2Fz
ZSk7CisgICAgICAgIGRlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
Iik7CisgICAgICAgIHRlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhC
dWZmZXIsIEFMTE9XX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7CisgICAgICAgIGRlYnVnKCJBdHRh
Y2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7CisgICAgICAgIHRlc3RB
dHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIEFMTE9X
X0lOQ09NUExFVEVfQVRUQUNITUVOVCk7CisgICAgICAgIGRlYnVnKCJBdHRhY2ggc3RlbmNpbCB1
c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKKyAgICAgICAgdGVzdEF0dGFjaG1lbnQoZ2wuU1RF
TkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCBhbGxvd2VkU3RhdHVzRm9ySW1wbERlcGVu
ZGVudENhc2UpOworICAgICAgICBkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfQVRU
QUNITUVOVCIpOworICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBz
dGVuY2lsQnVmZmVyLCBBTExPV19JTkNPTVBMRVRFX0FUVEFDSE1FTlQpOworICAgICAgICBkZWJ1
ZygiQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7CisgICAg
ICAgIHRlc3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1
ZmZlciwgQUxMT1dfSU5DT01QTEVURV9BVFRBQ0hNRU5UKTsKKyAgICAgICAgZGVidWcoIkF0dGFj
aCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7CisgICAgICAg
IHRlc3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2ls
QnVmZmVyLCBhbGxvd2VkU3RhdHVzRm9yR29vZENhc2UpOworICAgICAgICBkZWJ1ZygiQXR0YWNo
IGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7CisgICAgICAgIHRlc3RBdHRh
Y2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgQUxMT1dfSU5D
T01QTEVURV9BVFRBQ0hNRU5UKTsKKyAgICAgICAgZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwg
dXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7CisgICAgICAgIHRlc3RBdHRhY2htZW50KGdsLlNU
RU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCBBTExPV19JTkNPTVBMRVRFX0FU
VEFDSE1FTlQpOworCisgICAgICAgIHZhciBhbGxvd2VkU3RhdHVzRm9yQ29uZmxpY3RlZEF0dGFj
aG1lbnQKKyAgICAgICAgICAgID0gKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApID8gQUxMT1df
VU5TVVBQT1JURUQgfCBBTExPV19JTkNPTVBMRVRFX0FUVEFDSE1FTlQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQUxMT1dfVU5TVVBQT1JURUQ7CisKKyAgICAg
ICAgZGVidWcoIkF0dGFjaCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7
CisgICAgICAgIHRlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZl
ciwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCBhbGxvd2VkU3RhdHVzRm9y
Q29uZmxpY3RlZEF0dGFjaG1lbnQpOworICAgICAgICBkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKKyAgICAgICAgdGVzdEF0dGFjaG1lbnRzKGds
LlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZ2wuREVQVEhfQVRUQUNITUVOVCwg
ZGVwdGhCdWZmZXIsIGFsbG93ZWRTdGF0dXNGb3JDb25mbGljdGVkQXR0YWNobWVudCk7CisgICAg
ICAgIGRlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZs
aWN0Iik7CisgICAgICAgIHRlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0
aEJ1ZmZlciwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIs
IGFsbG93ZWRTdGF0dXNGb3JDb25mbGljdGVkQXR0YWNobWVudCk7CisgICAgICAgIGRlYnVnKCJB
dHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0Iik7CisgICAg
ICAgIHRlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3Rl
bmNpbEJ1ZmZlciwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGFsbG93ZWRTdGF0
dXNGb3JDb25mbGljdGVkQXR0YWNobWVudCk7CisgICAgICAgIGRlYnVnKCJBdHRhY2ggc3RlbmNp
bCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKKyAgICAgICAgdGVzdEF0
dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgYWxsb3dlZFN0YXR1c0ZvckNvbmZs
aWN0ZWRBdHRhY2htZW50KTsKKyAgICAgICAgZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOworICAgICAgICB0ZXN0QXR0YWNobWVudHMo
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgYWxsb3dlZFN0YXR1c0ZvckNvbmZsaWN0ZWRB
dHRhY2htZW50KTsKKworICAgICAgICBkZWJ1ZygiQXR0YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3
aXRoIGludGVybmFsZm9ybWF0ID09IFJHQkE0Iik7CisgICAgICAgIHRlc3RDb2xvclJlbmRlcmJ1
ZmZlcihnbC5SR0JBNCwgYWxsb3dlZFN0YXR1c0Zvckdvb2RDYXNlKTsKKworICAgICAgICBkZWJ1
ZygiQXR0YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09IFJHQjVf
QTEiKTsKKyAgICAgICAgdGVzdENvbG9yUmVuZGVyYnVmZmVyKGdsLlJHQjVfQTEsIGFsbG93ZWRT
dGF0dXNGb3JHb29kQ2FzZSk7CisKKyAgICAgICAgZGVidWcoIkF0dGFjaCBjb2xvciByZW5kZXJi
dWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0I1NjUiKTsKKyAgICAgICAgdGVzdENvbG9y
UmVuZGVyYnVmZmVyKGdsLlJHQjU2NSwgYWxsb3dlZFN0YXR1c0Zvckdvb2RDYXNlKTsKKworICAg
ICAgICBkZWJ1ZygiQ3JlYXRlIGFuZCBhdHRhY2ggZGVwdGhTdGVuY2lsIHJlbmRlcmJ1ZmZlciIp
OworICAgICAgICB0ZXN0RGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKGFsbG93ZWRTdGF0dXNGb3JH
b29kQ2FzZSk7CisgICAgfQorfQorCisvLyBEZXRlcm1pbmUgaWYgd2UgY2FuIGF0dGFjaCBib3Ro
IGNvbG9yIGFuZCBkZXB0aCBvciBjb2xvciBhbmQgZGVwdGhfc3RlbmNpbAordmFyIGRlcHRoRm9y
bWF0OwordmFyIGRlcHRoQXR0YWNobWVudDsKKworZnVuY3Rpb24gY2hlY2tWYWxpZENvbG9yRGVw
dGhDb21iaW5hdGlvbigpIHsKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
byk7CisgICAgc2hvdWxkQmVOb25OdWxsKCJjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpIik7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9y
QnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVm
ZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdC
QTQsIDE2LCAxNik7CisKKyAgICBzaG91bGRCZU5vbk51bGwoImRlcHRoQnVmZmVyID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgZGVwdGhCdWZmZXIpOworCisgICAgcmV0dXJuIHRyeURlcHRoKGdsLkRFUFRIX0NPTVBP
TkVOVDE2LCBnbC5ERVBUSF9BVFRBQ0hNRU5UKSB8fCB0cnlEZXB0aChnbC5ERVBUSF9TVEVOQ0lM
LCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpOworCisgICAgZnVuY3Rpb24gdHJ5RGVwdGgo
dHJ5X2Zvcm1hdCwgdHJ5X2F0dGFjaG1lbnQpIHsKKyAgICAgICAgaWYgKGRlcHRoQXR0YWNobWVu
dCkgeworICAgICAgICAgICAgLy8gSWYgd2UndmUgdHJpZWQgb25jZSB1bmF0dGFjaCB0aGUgb2xk
IG9uZS4KKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICAg
ICAgICAgIGdsLkZSQU1FQlVGRkVSLCBkZXB0aEF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwg
bnVsbCk7CisgICAgICAgIH0KKyAgICAgICAgZGVwdGhGb3JtYXQgPSB0cnlfZm9ybWF0OworICAg
ICAgICBkZXB0aEF0dGFjaG1lbnQgPSB0cnlfYXR0YWNobWVudDsKKyAgICAgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZGVwdGhBdHRh
Y2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2wucmVuZGVy
YnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGRlcHRoRm9ybWF0LCAxNiwgMTYpOworICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgICAgICAgIHJldHVy
biBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURTsKKyAgICB9Cit9CisKK2lmIChjaGVja1ZhbGlkQ29sb3JEZXB0aENvbWJp
bmF0aW9uKCkpIHsKKyAgICB0ZXN0RnJhbWVidWZmZXJJbmNvbXBsZXRlRGltZW5zaW9ucygpOwor
ICAgIHRlc3RGcmFtZWJ1ZmZlckluY29tcGxldGVBdHRhY2htZW50KCk7CisgICAgdGVzdEZyYW1l
YnVmZmVySW5jb21wbGV0ZU1pc3NpbmdBdHRhY2htZW50KCk7CisgICAgdGVzdFVzaW5nSW5jb21w
bGV0ZUZyYW1lYnVmZmVyKCk7CisgICAgdGVzdFJlYWRpbmdGcm9tTWlzc2luZ0F0dGFjaG1lbnQo
KTsKKyAgICB0ZXN0QmluZFJlbmRlcmJ1ZmZlckJlZm9yZUZyYW1lYnVmZmVyQXR0YWNoKCk7Cit9
CisKK2Z1bmN0aW9uIGNoZWNrRnJhbWVidWZmZXIoZXhwZWN0ZWQpIHsKKyAgICB2YXIgYWN0dWFs
ID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgdmFyIG1z
ZyA9ICJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBzaG91bGQgYmUg
IiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZXhwZWN0ZWQpICsgIiB3YXMgIiArIHd0dS5nbEVu
dW1Ub1N0cmluZyhnbCwgYWN0dWFsKTsKKyAgICBpZiAoZXhwZWN0ZWQgIT0gZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKKyAgICAgICAgbXNnICs9ICIgb3IgRlJBTUVCVUZGRVJfVU5TVVBQT1JU
RUQiOworICAgIH0KKyAgICBpZiAoYWN0dWFsID09IGV4cGVjdGVkIHx8CisgICAgICAgIChleHBl
Y3RlZCAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSAmJgorICAgICAgICAgYWN0dWFsID09IGds
LkZSQU1CVUZGRVJfVU5TVVBQT1JURUQpKSB7CisgICAgICAgIHRlc3RQYXNzZWQobXNnKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0VXNpbmdJbmNvbXBsZXRlRnJhbWVidWZmZXIoKSB7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJUZXN0IGRyYXdpbmcgb3IgcmVhZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVi
dWZmZXIiKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cisg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2ws
IHRleCwgMSwgMSwgWzAsMjU1LDAsMjU1XSk7CisKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgc2hvdWxkQmVOb25OdWxsKCJjb2xvckJ1ZmZlciA9IGdsLmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAg
ICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZG
RVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJV
RkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7CisKKyAgICBzaG91bGRCZU5vbk51bGwoImRlcHRoQnVm
ZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZGVwdGhBdHRhY2htZW50LCBnbC5SRU5E
RVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJF
TkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIDE2LCAxNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJf
Q09NUExFVEUpOworCisgICAgLy8gV2UgcGljayB0aGlzIGNvbWJpbmF0aW9uIGJlY2F1c2UgaXQg
d29ya3Mgb24gZGVza3RvcCBPcGVuR0wgYnV0IHNob3VsZCBub3Qgd29yayBvbiBPcGVuR0wgRVMg
Mi4wCisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGRlcHRoRm9y
bWF0LCAzMiwgMTYpOworICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9ESU1FTlNJT05TKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkRyYXdpbmcgb3Ig
cmVhZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIik7CisgICAgdGVzdFJlbmRlcmluZ0FuZFJlYWRp
bmcoKTsKKworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVy
KCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibzIpOworICAg
IGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFD
SE1FTlQpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiRHJhd2luZyBvciByZWFkaW5nIGZy
b20gYW4gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9GUkFN
RUJVRkZFUl9PUEVSQVRJT04iKTsKKyAgICB0ZXN0UmVuZGVyaW5nQW5kUmVhZGluZygpOworCisg
ICAgc2hvdWxkQmVOb25OdWxsKCJjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
Iik7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVy
KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsK
KyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDAs
IDApOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiRHJhd2luZyBvciByZWFkaW5nIGZyb20g
YW4gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04iKTsKKyAgICB0ZXN0UmVuZGVyaW5nQW5kUmVhZGluZygpOworCisgICAg
ZnVuY3Rpb24gdGVzdFJlbmRlcmluZ0FuZFJlYWRpbmcoKSB7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRR
dWFkKGdsKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9GUkFN
RUJVRkZFUl9PUEVSQVRJT04sICJkcmF3QXJyYXlzIHdpdGggaW5jb21wbGV0ZSBmcmFtZWJ1ZmZl
ciIpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KDQpKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJyZWFkUGl4ZWxzIGZyb20g
aW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciIpOworICAgICAgICAvLyBjb3B5VGV4SW1hZ2UgYW5kIGNv
cHlUZXhTdWJJbWFnZSBjYW4gYmUgZWl0aGVyIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
IGJlY2F1c2UKKyAgICAgICAgLy8gdGhlIGZyYW1lYnVmZmVyIGlzIGludmFsaWQgT1IgSU5WQUxJ
RF9PUEVSQVRJT04gYmVjYXVzZSBpbiB0aGUgY2FzZSBvZiBubyBhdHRhY2htZW50cworICAgICAg
ICAvLyB0aGUgZnJhbWVidWZmZXIgaXMgbm90IG9mIGEgY29tcGF0aWJsZSB0eXBlLgorICAgICAg
ICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxLCAx
KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgW2dsLklOVkFMSURfRlJBTUVCVUZG
RVJfT1BFUkFUSU9OLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICJjb3B5VGV4SW1hZ2UyRCBmcm9t
IGluY29tcGxldGUgZnJhbWVidWZmZXIiKTsKKyAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwgMCwgMSwgMSwgMCk7CisgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgZ2wuSU5W
QUxJRF9PUEVSQVRJT05dLCAiY29weVRleFN1YkltYWdlMkQgZnJvbSBpbmNvbXBsZXRlIGZyYW1l
YnVmZmVyIik7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJjbGVhciB3aXRoIGluY29tcGxldGUgZnJhbWVidWZm
ZXIiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RGcmFtZWJ1ZmZlckluY29tcGxldGVBdHRh
Y2htZW50KCkgeworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSIpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAg
ICBzaG91bGRCZU5vbk51bGwoImNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCki
KTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIp
OworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwor
ICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYs
IDE2KTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiV3Jvbmcgc3RvcmFnZSB0eXBlIGZvciB0eXBlIG9m
IGF0dGFjaG1lbnQgYmUgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIChPcGVuR0wg
RVMgMi4wIDQuNC41KSIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVG
RkVSLCBkZXB0aEZvcm1hdCwgMTYsIDE2KTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7CisKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9y
YWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7CisgICAgY2hlY2tGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIjAgc2l6ZSBhdHRhY2htZW50IHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQgKE9wZW5HTCBFUyAyLjAgNC40LjUpIik7CisgICAgZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAwLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7CisKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Cit9CisKK2Z1bmN0aW9uIHRlc3RGcmFtZWJ1
ZmZlckluY29tcGxldGVNaXNzaW5nQXR0YWNobWVudCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIk5vIGF0dGFjaG1lbnRzIHNob3VsZCBiZSBJTkNPTVBMRVRFX0ZSQU1FQlVGRkVSX01J
U1NJTkdfQVRUQUNITUVOVCAoT3BlbkdMIEVTIDIuMCA0LjQuNSkiKTsKKyAgICBzaG91bGRCZU5v
bk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCk7CisKKyAgICBzaG91bGRCZU5v
bk51bGwoImNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICBnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLnJlbmRl
cmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYsIDE2KTsKKyAgICBj
aGVja0ZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKKworICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCk7CisKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Cit9CisKK2Z1bmN0aW9uIHRlc3RGcmFt
ZWJ1ZmZlckluY29tcGxldGVEaW1lbnNpb25zKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiQXR0YWNobWVudHMgb2YgZGlmZmVyZW50IHNpemVzIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0RJTUVOU0lPTlMgKE9wZW5HTCBFUyAyLjAgNC40LjUpIik7CisKKyAgICBzaG91
bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgc2hvdWxkQmVOb25OdWxsKCJj
b2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CisgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1F
TlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7CisKKyAgICBzaG91bGRC
ZU5vbk51bGwoImRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKKyAgICBn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZGVwdGhB
dHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJi
dWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIDE2LCAxNik7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGNoZWNrRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpOworCisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFn
ZShnbC5SRU5ERVJCVUZGRVIsIGRlcHRoRm9ybWF0LCAzMiwgMTYpOworICAgIGNoZWNrRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TKTsKKyAgICBnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIDE2LCAxNik7Cisg
ICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7CisgICAgZ2wuYmlu
ZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAzMik7CisgICAg
Y2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMpOwor
ICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYs
IDE2KTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgICB2YXIgdGV4ID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNiwgMTYs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVS
RV8yRCwgdGV4LCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDMyLCAxNiwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMTYsIDE2LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsK
KworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK30KKworZnVuY3Rp
b24gdGVzdFJlYWRpbmdGcm9tTWlzc2luZ0F0dGFjaG1lbnQoKSB7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJUZXN0IGRyYXdpbmcgb3IgcmVhZGluZyBmcm9tIGEgbWlzc2luZyBmcmFtZWJ1
ZmZlciBhdHRhY2htZW50Iik7CisKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0
ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibyk7CisKKyAgICB2YXIgc2l6ZSA9IDE2OworCisgICAgLy8gVGhlIG9ubHkgc2NlbmFyaW8g
d2UgY2FuIHZlcmlmeSBpcyBhbiBhdHRlbXB0IHRvIHJlYWQgb3IgY29weQorICAgIC8vIGZyb20g
YSBtaXNzaW5nIGNvbG9yIGF0dGFjaG1lbnQgd2hpbGUgdGhlIGZyYW1lYnVmZmVyIGlzIHN0aWxs
CisgICAgLy8gY29tcGxldGUuCisgICAgc2hvdWxkQmVOb25OdWxsKCJkZXB0aEJ1ZmZlciA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigK
KyAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJV
RkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgc2l6ZSwgc2l6ZSk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJBZnRlciBkZXB0aCByZW5kZXJidWZmZXIgc2V0
dXAiKTsKKyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikg
IT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgZGVidWcoIlVuYWJsZSB0byBh
bGxvY2F0ZSBhIGZyYW1lYnVmZmVyIHdpdGgganVzdCBhIGRlcHRoIGF0dGFjaG1lbnQ7IHRoaXMg
aXMgbGVnYWwiKTsKKyAgICAgICAgLy8gVHJ5IGp1c3QgYSBkZXB0aC9zdGVuY2lsIHJlbmRlcmJ1
ZmZlcgorICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgICAgICAgIGds
LkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIG51bGwp
OworICAgICAgICBzaG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpIik7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVS
QlVGRkVSLCBkZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcigKKyAgICAgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUws
IHNpemUsIHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgIkFmdGVyIGRlcHRoK3N0ZW5jaWwgcmVuZGVyYnVmZmVyIHNldHVwIik7CisgICAgICAgIGlm
IChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgZGVidWcoIlVuYWJsZSB0byBhbGxvY2F0ZSBh
IGZyYW1lYnVmZmVyIHdpdGgganVzdCBhIGRlcHRoK3N0ZW5jaWwgYXR0YWNobWVudDsgdGhpcyBp
cyBsZWdhbCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gVGhlIEZCTyBoYXMgbm8gY29sb3IgYXR0YWNobWVudC4gUmVhZFBpeGVscywgQ29weVRleElt
YWdlMkQsCisgICAgLy8gYW5kIENvcHlUZXhTdWJJbWFnZTJEIHNob3VsZCBhbGwgZ2VuZXJhdGUg
SU5WQUxJRF9PUEVSQVRJT04uCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJCZWZvcmUgUmVhZFBpeGVscyBmcm9tIG1pc3NpbmcgYXR0YWNobWVudCIpOworICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbmV3IFVp
bnQ4QXJyYXkoNCkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiQWZ0ZXIgUmVhZFBpeGVscyBmcm9tIG1pc3NpbmcgYXR0YWNobWVudCIpOworCisg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiQmVmb3JlIENvcHlUZXhJbWFnZTJEIGZyb20gbWlzc2luZyBhdHRhY2htZW50Iik7CisgICAg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwgMCwgc2l6ZSwg
c2l6ZSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJBZnRlciBDb3B5VGV4SW1hZ2UyRCBmcm9tIG1pc3NpbmcgYXR0YWNobWVudCIpOworCisg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBzaXplLCBzaXplLCAw
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgIkJlZm9yZSBDb3B5VGV4U3ViSW1hZ2UyRCBmcm9tIG1pc3Np
bmcgYXR0YWNobWVudCIpOworICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsIDAsIDAsIDAsIHNpemUsIHNpemUpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQWZ0ZXIgQ29weVRleFN1YkltYWdlMkQgZnJvbSBtaXNz
aW5nIGF0dGFjaG1lbnQiKTsKK30KKworLy8gW09wZW5HTCBFUyAyLjAuMjVdIFNlY3Rpb24gNC40
LjMgcGFnZSAxMTIKKy8vIFtPcGVuR0wgRVMgMy4wLjJdIFNlY3Rpb24gNC40LjIgcGFnZSAyMDEK
Ky8vICdyZW5kZXJidWZmZXInIG11c3QgYmUgZWl0aGVyIHplcm8gb3IgdGhlIG5hbWUgb2YgYW4g
ZXhpc3RpbmcgcmVuZGVyYnVmZmVyIG9iamVjdCBvZgorLy8gdHlwZSAncmVuZGVyYnVmZmVydGFy
Z2V0Jywgb3RoZXJ3aXNlIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4K
K2Z1bmN0aW9uIHRlc3RCaW5kUmVuZGVyYnVmZmVyQmVmb3JlRnJhbWVidWZmZXJBdHRhY2goKSB7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGNhbGxpbmcgZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIgYmVmb3JlIGJpbmRSZW5kZXJidWZmZXIuIik7CisKKyAgICBsZXQgZmJvID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZibyk7CisKKyAgICBsZXQgYXR0YWNobWVudFR5cGVzID0gWworICAgICAgICBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwKKyAgICAgICAgZ2wuREVQVEhfQVRUQUNITUVOVCwKKyAgICAgICAgZ2wu
U1RFTkNJTF9BVFRBQ0hNRU5ULAorICAgICAgICBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQK
KyAgICBdOworCisgICAgYXR0YWNobWVudFR5cGVzLmZvckVhY2goZnVuY3Rpb24oYXR0YWNobWVu
dFR5cGUpIHsKKyAgICAgICAgbGV0IHN0ckF0dGFjaG1lbnRUeXBlID0gd3R1LmdsRW51bVRvU3Ry
aW5nKGdsLCBhdHRhY2htZW50VHlwZSk7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVi
dWcoIlRlc3RpbmcgIiArIHN0ckF0dGFjaG1lbnRUeXBlKTsKKyAgICAgICAgbGV0IHJibyA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudFR5cGUsIGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsK
KyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJi
aW5kUmVuZGVyYnVmZmVyIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhdHRhY2htZW50IHRvICIgKyBz
dHJBdHRhY2htZW50VHlwZSk7CisgICAgICAgIHNob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLiIgKyBzdHJBdHRhY2htZW50VHlw
ZSArICIsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIiwgImdsLk5PTkUi
KTsKKyAgICAgICAgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1F
QlVGRkVSLCBhdHRhY2htZW50VHlwZSwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
TkFNRSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwg
Ik9ubHkgT0JKRUNUX1RZUEUgY2FuIGJlIHF1ZXJpZWQgd2hlbiBubyBpbWFnZSBpcyBhdHRhY2hl
ZCIpOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudFR5cGUsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmRlbGV0
ZVJlbmRlcmJ1ZmZlcihyYm8pOworICAgIH0pOworCisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIo
ZmJvKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLXN0YXRlLXJl
c3RvcmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLXN0YXRlLXJlc3RvcmF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA1YTExNzJjMjVkZTBmODJkYTcyZWRiYzMzZmEzZjUwNTU4
YTBhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZnJhbWVidWZmZXItc3RhdGUt
cmVzdG9yYXRpb24uaHRtbApAQCAtMCwwICsxLDExMiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgc3RhdGUg
cmVzdG9yYXRpb24gVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+Cis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCk7CisKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUi
LCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0
RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgZmluaXNoVGVzdCgpOworICAg
IHJldHVybjsKKyAgfQorICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cENvbG9yUXVhZChnbCk7Cisg
IHZhciBjb2xvckxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9jb2xvciIp
OworICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgIGdsLmRlcHRoRnVuYyhnbC5MRVNTKTsK
KworICB2YXIgdGVzdERyYXdUb0JhY2tCdWZmZXIgPSBmdW5jdGlvbihsYWJlbCkgeworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiZHJhd2luZyB0byBiYWNrYnVmZmVyICIgKyBsYWJlbCk7Cisg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwor
ICAgIC8vIERyYXcgaW4gZ3JlZW4KKyAgICBnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBbMCwgMSwg
MCwgMV0pOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKyAg
ICAvLyBEcmF3IGluIHJlZCwgc2hvdWxkIG5vdCBkcmF3IGJlY2F1c2Ugb2YgZGVwdGggdGVzdC4K
KyAgICBnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBbMSwgMCwgMCwgMV0pOworICAgIGdsLmRyYXdB
cnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAy
NTUsIDAsIDI1NV0sICJzaG91bGQgc3RpbGwgYmUgZ3JlZW4iKTsKKyAgfQorCisgIHZhciB0ZXN0
RHJhd1RvRkJPID0gZnVuY3Rpb24obGFiZWwgKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJkcmF3aW5nIHRvIGZyYW1lYnVmZmVyICIgKyBsYWJlbCk7CisgICAgLy8gRHJhdyBpbiBncmVl
bgorICAgIGdsLnVuaWZvcm00ZnYoY29sb3JMb2MsIFswLCAxLCAwLCAxXSk7CisgICAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAs
IDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIpOworICAgIC8vIERyYXcgaW4gcmVkIGFz
IHRoZXJlIGlzIG5vdCBkZXB0aCBidWZmZXIuCisgICAgZ2wudW5pZm9ybTRmdihjb2xvckxvYywg
WzEsIDAsIDAsIDFdKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cisg
ICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIp
OworICB9CisKKyAgdGVzdERyYXdUb0JhY2tCdWZmZXIoInN0YXJ0Iik7CisKKyAgdmFyIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgNTAsIDUwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0Up
OworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBm
Ym8pOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgIGlmIChnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB3dHUuY2hlY2tDYW52
YXMoZ2wsIFswLCAwLCAwLCAwXSwgInNob3VsZCBiZSB6ZXJvIik7CisgIHRlc3REcmF3VG9GQk8o
InN0YXJ0Iik7CisKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsK
KyAgdGVzdERyYXdUb0JhY2tCdWZmZXIoImFmdGVyIGRyYXdpbmcgdG8gZnJhbWVidWZmZXIiKTsK
KworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgIHRlc3REcmF3
VG9GQk8oImFmdGVyIGRyYXdpbmcgdG8gYmFja2J1ZmZlciIpOworCisgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIHd0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0
aW9uKCkgeworICAgIHRlc3REcmF3VG9CYWNrQnVmZmVyKCJhZnRlciBjb21wb3NpdGUiKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgdGVzdERyYXdU
b0ZCTygiYWZ0ZXIgZHJhd2luZyB0byBiYWNrYnVmZmVyIGFmdGVyIGNvbXBvc2l0ZSIpOworICAg
IHd0dS53YWl0Rm9yQ29tcG9zaXRlKGZ1bmN0aW9uKCkgeworICAgICAgdGVzdERyYXdUb0ZCTygi
YWZ0ZXIgY29tcG9zaXRlIik7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICAgICAgdGVzdERyYXdUb0JhY2tCdWZmZXIoImFmdGVyIGRyYXdpbmcgdG8g
ZnJhbWVidWZmZXIgYWZ0ZXIgY29tcG9zaXRlIik7CisKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgICAgZmluaXNo
VGVzdCgpOworICAgIH0pOworICB9KTsKK30KK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
cmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZlci10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZyYW1l
YnVmZmVyLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY0ODc4Y2FiN2Q5NjY4MmZmMmY5NDI1M2Rj
YzdkMWViODc0OTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZl
ci10ZXN0Lmh0bWwKQEAgLTAsMCArMSwxNzYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFRlc3Q8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIGZyYW1lYnVmZmVyL3JlbmRlcmJ1ZmZlci1yZWxhdGVkIGZ1bmN0aW9ucyIpOworCitk
ZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2lmICghZ2wpIHsKKyAg
dGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBh
c3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2lu
ZyBmcmFtZWJ1ZmZlci9yZW5kZXJidWZmZXIgc3R1ZmYuIik7CisKKyAgZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKAorICAgICBnbC5GUkFNRUJVRkZFUiwKKyAgICAgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsCisgICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZ
UEUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAg
ICAgICAgICAgICJjYWxsaW5nIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciBvbiB0
aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04u
Iik7CisKKyAgYXNzZXJ0TXNnKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpID09IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFLAorICAgICAgICAgICAgImNhbGxpbmcgY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgZ2Vu
ZXJhdGUgRlJBTUVCVUZGRVJfQ09NUExFVEUuIik7CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJF
U1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAg
ICAgICAvLyBsZXZlbAorICAgICAgICAgICAgICAgIGdsLlJHQkEsICAgICAgICAgICAvLyBpbnRl
cm5hbEZvcm1hdAorICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCwgICAgICAvLyB3aWR0aAor
ICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQsICAgICAvLyBoZWlnaHQKKyAgICAgICAgICAg
ICAgICAwLCAgICAgICAgICAgICAgICAgLy8gYm9yZGVyCisgICAgICAgICAgICAgICAgZ2wuUkdC
QSwgICAgICAgICAgIC8vIGZvcm1hdAorICAgICAgICAgICAgICAgIGdsLlVOU0lHTkVEX0JZVEUs
ICAvLyB0eXBlCisgICAgICAgICAgICAgICAgbnVsbCk7ICAgICAgICAgICAgIC8vIGRhdGEKKyAg
Z2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoCisgICAgICBnbC5GUkFNRUJVRkZFUiwKKyAgICAgIGds
LkNPTE9SX0FUVEFDSE1FTlQwLAorICAgICAgZ2wuVEVYVFVSRV8yRCwKKyAgICAgIHRleCwKKyAg
ICAgIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwK
KyAgICAgICAgICAgICJ0cnlpbmcgdG8gYXR0YWNoIGEgdGV4dHVyZSB0byBkZWZhdWx0IGZyYW1l
YnVmZmVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTi4iKTsKKworICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgIGdsLkZSQU1FQlVGRkVSLAorICAgICAgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsCisgICAgICBnbC5SRU5ERVJCVUZGRVIsCisgICAgICBudWxsKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAg
ICAidHJ5aW5nIHRvIGRldGFjaCBkZWZhdWx0IHJlbmRlcmJ1ZmZlciBmcm9tIGRlZmF1bHQgZnJh
bWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OLiIpOworCisgIHZhciBy
YiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJF
TkRFUkJVRkZFUiwgcmIpOworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkdCQTQsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgImFsbG9jYXRpbmcgcmVuZGVy
YnVmZmVyIHN0b3JhZ2Ugb2YgYSBuZXdseSBjcmVhdGVkIHJlbmRlcmJ1ZmZlciBzaG91bGQgc3Vj
Y2VlZC4iKTsKKworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgIGdsLkZSQU1F
QlVGRkVSLAorICAgICAgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICBnbC5SRU5ERVJCVUZG
RVIsCisgICAgICByYik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLAorICAgICAgICAgICAgInRyeWluZyB0byBhdHRhY2ggYSByZW5kZXJidWZmZXIgdG8g
dGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9O
LiIpOworCisgIHZhciBmYnRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgZmJ0ZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgbnVsbCk7CisgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgImJpbmRpbmcgYSBuZXds
eSBjcmVhdGVkIGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLiIpOworCisgIHZhciB0YXJnZXQg
PSBkZXNrdG9wR0wuUkVBRF9GUkFNRUJVRkZFUgorICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoCisgICAgIHRhcmdldCwKKyAgICAgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisg
ICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAiY2FsbGluZyBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgd2l0aCB0YXJnZXQgPSBSRUFEX0ZSQU1FQlVG
RkVSIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0uIik7CisgIGFzc2VydE1zZyhnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCkgPT0gMCwKKyAgICAgICAgICAgICJjYWxsaW5nIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMgd2l0aCB0YXJnZXQgPSBSRUFEX0ZSQU1FQlVGRkVSIHNob3Vs
ZCByZXR1cm4gMC4iKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVN
LAorICAgICAgICAgICAgImNhbGxpbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyB3aXRoIHRhcmdl
dCA9IFJFQURfRlJBTUVCVUZGRVIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRU5VTS4iKTsKKyAg
Z2wuYmluZEZyYW1lYnVmZmVyKHRhcmdldCwgZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICJjYWxs
aW5nIGJpbmRGcmFtZWJ1ZmZlciB3aXRoIHRhcmdldCA9IFJFQURfRlJBTUVCVUZGRVIgc2hvdWxk
IGdlbmVyYXRlIElOVkFMSURfRU5VTS4iKTsKKyAgYXNzZXJ0TXNnKGZiID09IGdsLmdldFBhcmFt
ZXRlcihnbC5GUkFNRUJVRkZFUl9CSU5ESU5HKSwKKyAgICAgICAgICAgICJjYWxsaW5nIGJpbmRG
cmFtZWJ1ZmZlciB3aXRoIHRhcmdldCA9IFJFQURfRlJBTUVCVUZGRVIgc2hvdWxkIG5vdCBjaGFu
Z2UgRlJBTUVCVUZGRVJfQklORElORy4iKTsKKyAgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKHRhcmdldCwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX1RZUEUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX0VOVU0sCisgICAgICAgICAgICAiY2FsbGluZyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIgd2l0aCB0YXJnZXQgPSBSRUFEX0ZSQU1FQlVGRkVSIHNob3VsZCBnZW5lcmF0ZSBJ
TlZBTElEX0VOVU0uIik7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIGZidGV4LCAwKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgImNhbGxpbmcgZnJhbWVi
dWZmZXJUZXhJbWFnZTJEIHdpdGggdGFyZ2V0ID0gUkVBRF9GUkFNRUJVRkZFUiBzaG91bGQgZ2Vu
ZXJhdGUgSU5WQUxJRF9FTlVNLiIpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgImNhbGxpbmcg
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgd2l0aCB0YXJnZXQgPSBSRUFEX0ZSQU1FQlVGRkVSIHNo
b3VsZCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0uIik7CisKKyAgdmFyIGF0dGFjaG1lbnQgPSBkZXNr
dG9wR0wuQ09MT1JfQVRUQUNITUVOVDEKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlRFWFRVUkVfMkQsIGZidGV4LCAwKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgImNhbGxpbmcg
ZnJhbWVidWZmZXJUZXhJbWFnZTJEIHdpdGggYXR0YWNobWVudCA9IENPTE9SX0FUVEFDSE1FTlQx
IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0uIik7CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAg
ImNhbGxpbmcgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgd2l0aCBhdHRhY2htZW50ID0gQ09MT1Jf
QVRUQUNITUVOVDEgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRU5VTS4iKTsKKworICBnbC5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BHTC5GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgImNhbGxpbmcgZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyIHdpdGggcG5hbWUgPSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9S
X0VOQ09ESU5HIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0uIik7CisKKyAgZ2wuZnJhbWVi
dWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5U
RVhUVVJFXzJELCBmYnRleCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLAorICAgICAgICAgICAgImF0dGFjaGluZyBhIHRleHR1cmUgdG8gYSBmcmFtZWJ1ZmZlciBz
aG91bGQgc3VjY2VlZC4iKTsKKworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICJkZXRhY2hp
bmcgYSB0ZXh0dXJlIGZyb20gYSBmcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIGZidGV4LCAxKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICJjYWxsaW5nIGZyYW1lYnVmZmVyVGV4dHVy
ZTJEIHdpdGggbm9uLXplcm8gbWlwbWFwIGxldmVsIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZB
TFVFLiIpOworCisgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYik7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgImF0dGFjaGluZyBhIHJlbmRl
cmJ1ZmZlciB0byBhIGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLiIpOworCisgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsCisgICAgICAgICAgICAiZGV0YWNoaW5nIGEgcmVuZGVyYnVmZmVyIGZyb20gYSBmcmFt
ZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG51bGwpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwK
KyAgICAgICAgICAgICJiaW5kaW5nIGRlZmF1bHQgKG51bGwpIGZyYW1lYnVmZmVyIHNob3VsZCBz
dWNjZWVkLiIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9y
ZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvcmVuZGVyYnVm
ZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0MDY1NTJiYzcwMzhmYmZjNWRj
YWZiZWE1YTYwMGU5ZWZhNjg3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvcmVu
ZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0idGVzdGJlZCIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiIHN0eWxlPSJ3aWR0aDog
NDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbignVmVyaWZ5IHJlbmRlcmJ1ZmZl
cnMgYXJlIGluaXRpYWxpemVkIHRvIDAgYmVmb3JlIGJlaW5nIHJlYWQgaW4gV2ViR0wnKTsKKwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgidGVzdGJlZCIpOworaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoJ2NhbnZhcy5nZXRDb250ZXh0KCkgZmFpbGVkJyk7Cit9IGVsc2UgeworICAg
IC8vIFNldCB0aGUgY2xlYXIgY29sb3IgdG8gZ3JlZW4uIEl0IHNob3VsZCBuZXZlciBzaG93IHVw
LgorICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwgMCwgMSk7CisKKyAgICBydW5UZXN0KGdsLCBnbC5j
YW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQsIDApOworICAgIHJ1blRlc3QoZ2wsIGdsLmNh
bnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCwgMSk7CisgICAgcnVuVGVzdChnbCwgZ2wuY2Fu
dmFzLndpZHRoLCBnbC5jYW52YXMuaGVpZ2h0LCAwKTsKKyAgICBydW5UZXN0KGdsLCBnbC5jYW52
YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQsIDEpOworCisgICAgLy8gVGVzdGluZyBidWZmZXIg
Y2xlYXJpbmcgd29uJ3QgY2hhbmdlIHRoZSBjbGVhciB2YWx1ZXMuCisgICAgdmFyIGNsZWFyQ29s
b3IgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIHNob3VsZEJl
KCJjbGVhckNvbG9yIiwgIlswLCAxLCAwLCAxXSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KGdsLCB3aWR0aCwgaGVpZ2h0LCBvcmRlcikKK3sKKyAgICB3dHUuY2hlY2tDYW52YXNS
ZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBbMCwwLDAsMF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAiaW50ZXJuYWwgYnVmZmVycyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gMCIpOwor
CisgICAgLy8gZmlsbCB0aGUgYmFjayBidWZmZXIgc28gd2Uga25vdyB0aGF0IHJlYWRpbmcgYmVs
b3cgaGFwcGVucyBmcm9tCisgICAgLy8gdGhlIHJlbmRlcmJ1ZmZlci4KKyAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICB2
YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JidWZmZXIpOworICAgIHN3aXRjaCAob3Jk
ZXIpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgYWxsb2NTdG9yYWdlKHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBhdHRhY2hCdWZmZXIoY29sb3JidWZmZXIpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMToKKyAgICAgICAgYXR0YWNoQnVmZmVyKGNvbG9yYnVmZmVyKTsKKyAgICAgICAg
YWxsb2NTdG9yYWdlKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhbGxvY1N0b3JhZ2Uod2lkdGgsIGhlaWdodCkgeworICAgICAgZ2wucmVuZGVy
YnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5v
IGVycm9yIGFmdGVyIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoaW50ZXJuYWxmb3JtYXQgPSBSR0JBNCku
Jyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXR0YWNoQnVmZmVyKGNvbG9yYnVmZmVyKSB7Cisg
ICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgY29sb3JidWZmZXIpOworICAgIH0KKworICAg
IGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFN
RUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCdGcmFtZWJ1ZmZlciBpbmNv
bXBsZXRlLicpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgWzAsMCwwLDBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgInVzZXIgYnVmZmVycyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gMCIpOworCisg
ICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIo
Y29sb3JidWZmZXIpOworCisgICAgLy8gdGhpcyBjbGVhciBzaG91bGQgbm90IG1hdHRlciB3ZSBh
cmUgYWJvdXQgdG8gcmVzaXplCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBnbC5jYW52YXMud2lkdGggKz0gMTsKKyAgICBnbC5jYW52YXMuaGVpZ2h0ICs9IDE7CisK
KyAgICBkZWJ1ZygnJyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvc3RlbmNpbC1yZW5k
ZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvc3RlbmNpbC1yZW5k
ZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmRlYzFmY2JmOTZhZTE1
NDljZjZhZDZmNmEzOGI2ZWQyZjZjZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVy
cy9zdGVuY2lsLXJlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMy
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHN0
eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbignVmVyaWZ5
IHN0ZW5jaWwgcmVuZGVyYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQgdG8gMCBiZWZvcmUgYmVpbmcg
cmVhZCBpbiBXZWJHTCcpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJ0ZXN0YmVk
Iik7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4dCgpIGZh
aWxlZCcpOworfSBlbHNlIHsKKyAgICAvLyBTZXQgdGhlIGNsZWFyIGNvbG9yIHRvIGdyZWVuLiBJ
dCBzaG91bGQgbmV2ZXIgc2hvdyB1cC4KKyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOwor
ICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgZ2wuZGlzYWJsZShnbC5TVEVOQ0lM
X1RFU1QpOworCisgICAgbGV0IGMgPSBnbC5jYW52YXM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAyOyArK2kpIHsKKyAgICAgICAgcnVuVGVzdChnbCwge2FsbG9jMToge3c6IGMud2lkdGgsIGg6
IGMuaGVpZ2h0fSwgYWxsb2MyOiBudWxsfSk7CisgICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6
IG51bGwsIGFsbG9jMjoge3c6IGMud2lkdGgsIGg6IGMuaGVpZ2h0fX0pOworICAgICAgICAvLyBU
ZXN0cyBmb3IgaW5pdGlhbGx5IGFsbG9jYXRpbmcgYXQgdGhlIHdyb25nIHNpemUuCisgICAgICAg
IHJ1blRlc3QoZ2wsIHthbGxvYzE6IHt3OiA1LCBoOiA1fSwgYWxsb2MyOiB7dzogYy53aWR0aCwg
aDogYy5oZWlnaHR9fSk7CisgICAgfQorCisgICAgLy8gVGVzdGluZyBidWZmZXIgY2xlYXJpbmcg
d29uJ3QgY2hhbmdlIHRoZSBjbGVhciB2YWx1ZXMuCisgICAgdmFyIGNsZWFyQ29sb3IgPSBnbC5n
ZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIHNob3VsZEJlKCJjbGVhckNv
bG9yIiwgIlswLCAxLCAwLCAxXSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworfQorCitmdW5jdGlvbiBydW5UZXN0KGds
LCBwYXJhbXMpIHsKKyAgICBkZWJ1ZygiVGVzdCBmb3Igc3RlbmNpbCBidWZmZXI6ICIgKyBKU09O
LnN0cmluZ2lmeShwYXJhbXMpKTsKKyAgICBsZXQgZmluYWwgPSBwYXJhbXMuYWxsb2MyID8gcGFy
YW1zLmFsbG9jMiA6IHBhcmFtcy5hbGxvYzE7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgZmluYWwu
dywgZmluYWwuaCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgZmluYWwudywg
ZmluYWwuaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJpbnRlcm5hbCBidWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0
byAwIik7CisKKyAgICBnbC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAvLyBmaWxs
IHRoZSBiYWNrIGJ1ZmZlciBzbyB3ZSBrbm93IHRoYXQgcmVhZGluZyBiZWxvdyBoYXBwZW5zIGZy
b20KKyAgICAvLyB0aGUgcmVuZGVyYnVmZmVyLgorICAgIGdsLmNsZWFyU3RlbmNpbCgyKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsK
KworICAgIC8vIFNldCB1cCAoY29sb3Irc3RlbmNpbCkgdGVzdCBidWZmZXIuCisgICAgdmFyIGZi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYm8pOworICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KTsKKyAgICB2YXIgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisg
ICAgaWYgKHBhcmFtcy5hbGxvYzEpIHsKKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIGJ1ZmZlcik7CisgICAgICAgIGFsbG9jU3RvcmFnZShnbC5SR0JBNCwgcGFy
YW1zLmFsbG9jMS53LCBwYXJhbXMuYWxsb2MxLmgpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGFsbG9jU3RvcmFn
ZShnbC5TVEVOQ0lMX0lOREVYOCwgcGFyYW1zLmFsbG9jMS53LCBwYXJhbXMuYWxsb2MxLmgpOwor
ICAgIH0KKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsK
KyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1ZmZlcik7CisgICAgZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wu
UkVOREVSQlVGRkVSLCBzdGVuY2lsQnVmZmVyKTsKKyAgICBpZiAocGFyYW1zLmFsbG9jMikgewor
ICAgICAgICBpZiAocGFyYW1zLmFsbG9jMSkgeworICAgICAgICAgICAgaWYgKGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRF
KSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlNraXA6IGZyYW1lYnVmZmVyIGlzIGFsbG93ZWQg
dG8gYmUgaW5jb21wbGV0ZS4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgRkJPIGluIG9yZGVyIHRvIG1ha2Ugc3VyZSBm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciBpcworICAgICAgICAgICAgLy8gY29tbWl0dGVkLgorICAg
ICAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVS
X0JJVCk7CisgICAgICAgIH0KKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIGJ1ZmZlcik7CisgICAgICAgIGFsbG9jU3RvcmFnZShnbC5SR0JBNCwgcGFyYW1zLmFs
bG9jMi53LCBwYXJhbXMuYWxsb2MyLmgpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGFsbG9jU3RvcmFnZShnbC5T
VEVOQ0lMX0lOREVYOCwgcGFyYW1zLmFsbG9jMi53LCBwYXJhbXMuYWxsb2MyLmgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFsbG9jU3RvcmFnZShmb3JtYXQsIHdpZHRoLCBoZWlnaHQpIHsKKyAg
ICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LAorICAgICAgICAgICAgInNob3VsZCBiZSBubyBlcnJvciBhZnRlciByZW5kZXJidWZmZXJTdG9y
YWdlLiIpOworICAgIH0KKworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICBkZWJ1Zygi
U2tpcDogZnJhbWVidWZmZXIgaXMgYWxsb3dlZCB0byBiZSBpbmNvbXBsZXRlLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworCisgICAgLy8gZmJvIGRlcHRoIHNob3VsZCBub3cg
YmUgdGhlIGRlZmF1bHQgdmFsdWUgb2YgMC4KKworICAgIC8vIERyYXcgYSBibHVlIHF1YWQgKHN0
ZW5jaWwgPSAxKSAoc2hvdWxkIHBhc3MgdGhlIHN0ZW5jaWwgdGVzdDogMSA+IDApCisgICAgZ2wu
c3RlbmNpbEZ1bmMoZ2wuR1JFQVRFUiwgMSwgMHhmZmZmZmZmZik7CisgICAgZ2wuZW5hYmxlKGds
LlNURU5DSUxfVEVTVCk7CisgICAgd3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKyAgICB3dHUuc2V0
RmxvYXREcmF3Q29sb3IoZ2wsIFswLCAwLCAxLCAxXSk7CisgICAgd3R1LmRyYXdVbml0UXVhZChn
bCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgZmluYWwudywgZmluYWwuaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAyNTUsIDI1NV0pOworCisgICAgZ2wuZGVs
ZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIoYnVmZmVyKTsK
KworICAgIGdsLmNhbnZhcy53aWR0aCArPSAxOworICAgIGdsLmNhbnZhcy5oZWlnaHQgKz0gMTsK
KworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5v
IGVycm9ycycpOworICAgIGRlYnVnKCcnKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2JpbmQt
ZnJhbWVidWZmZXItZmx1c2gtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvYmluZC1mcmFtZWJ1ZmZlci1m
bHVzaC1idWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTdhZjEzMmEzOThkY2M1ZjAwNmNlZWQ2ZmYxNDZm
ZDRkNzdjNWNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2JpbmQtZnJhbWVidWZmZXIt
Zmx1c2gtYnVnLmh0bWwKQEAgLTAsMCArMSwxNDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAy
MCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworY29uc3Qgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgbGV0IGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICBjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzKTsKKyAgICBpZiAoIWdsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ2NvdWxkIG5vdCBj
cmVhdGUgY29udGV4dCcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IHNpemUg
PSAxMDA7CisKKyAgICBkZWJ1ZygnU2V0dXAnKTsKKyAgICBjYW52YXMud2lkdGggPSBzaXplOwor
ICAgIGNhbnZhcy5oZWlnaHQgPSBzaXplOworCisgICAgY29uc3QgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOwor
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgc2l6ZSwgc2l6ZSwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICBjb25zdCBiYWNrYnVm
ZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGJhY2tidWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSwgMCk7CisKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgICBnbC5i
dWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wu
YnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIG5ldyBGbG9hdDMyQXJyYXkoWworICAg
ICAgICAxLCAxLAorICAgICAgICAxLCAtMSwKKyAgICAgICAgLTEsIDEsCisgICAgICAgIC0xLCAt
MSwKKyAgICBdKSk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwg
ZmFsc2UsIDgsIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAg
Y29uc3QgYmxpdFRleHR1cmVQcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGNvbnN0
IGJsaXRUZXh0dXJlVmVydGV4ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOwor
ICAgIGdsLnNoYWRlclNvdXJjZShibGl0VGV4dHVyZVZlcnRleCwgYAorICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgcG9zOworICAgICAgICB2
YXJ5aW5nIHZlYzIgdXY7CisgICAgICAgIHZvaWQgbWFpbigpeworICAgICAgICAgICAgdXYgPSAo
cG9zICsgdmVjMigxLjApKSAvIDIuMDsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uPXZlYzQocG9z
KjIuLTEuLDAuLDEuKTsKKyAgICAgICAgfQorICAgIGApOworICAgIGdsLmNvbXBpbGVTaGFkZXIo
YmxpdFRleHR1cmVWZXJ0ZXgpOworICAgIGdsLmF0dGFjaFNoYWRlcihibGl0VGV4dHVyZVByb2dy
YW0sIGJsaXRUZXh0dXJlVmVydGV4KTsKKyAgICBjb25zdCBibGl0VGV4dHVyZUZyYWdtZW50ID0g
Z2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNl
KGJsaXRUZXh0dXJlRnJhZ21lbnQsIGAKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7CisgICAgICAgIHZhcnlpbmcgdmVj
MiB1djsKKyAgICAgICAgdm9pZCBtYWluKCl7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3I9dGV4
dHVyZTJEKHRleHR1cmUsIHV2KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGdsLmNvbXBpbGVT
aGFkZXIoYmxpdFRleHR1cmVGcmFnbWVudCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKGJsaXRUZXh0
dXJlUHJvZ3JhbSwgYmxpdFRleHR1cmVGcmFnbWVudCk7CisgICAgZ2wubGlua1Byb2dyYW0oYmxp
dFRleHR1cmVQcm9ncmFtKTsKKworICAgIGNvbnN0IHNvbGlkQ29sb3JQcm9ncmFtID0gZ2wuY3Jl
YXRlUHJvZ3JhbSgpOworICAgIGNvbnN0IHNvbGlkQ29sb3JWZXJ0ZXggPSBnbC5jcmVhdGVTaGFk
ZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKHNvbGlkQ29sb3JWZXJ0
ZXgsIGAKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIGF0dHJpYnV0
ZSB2ZWMyIHBvczsKKyAgICAgICAgdm9pZCBtYWluKCl7CisgICAgICAgICAgICBnbF9Qb3NpdGlv
bj12ZWM0KHBvcywwLiwxLik7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBnbC5jb21waWxlU2hh
ZGVyKHNvbGlkQ29sb3JWZXJ0ZXgpOworICAgIGdsLmF0dGFjaFNoYWRlcihzb2xpZENvbG9yUHJv
Z3JhbSwgc29saWRDb2xvclZlcnRleCk7CisgICAgY29uc3Qgc29saWRDb2xvckZyYWdtZW50ID0g
Z2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNl
KHNvbGlkQ29sb3JGcmFnbWVudCwgYAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgICAgICAgdm9pZCBtYWluKCl7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3I9dmVjNCgwLiww
LiwxLiwxLik7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNvbGlk
Q29sb3JGcmFnbWVudCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHNvbGlkQ29sb3JQcm9ncmFtLCBz
b2xpZENvbG9yRnJhZ21lbnQpOworICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihzb2xpZENvbG9y
UHJvZ3JhbSwgMCwgInBvcyIpOworICAgIGdsLmxpbmtQcm9ncmFtKHNvbGlkQ29sb3JQcm9ncmFt
KTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworCisgICAgZGVidWcoJ0RyYXdpbmcn
KTsKKyAgICAvLyBEcmF3IGJsdWUgcmVjdGFuZ2xlIHRvIGJhY2tidWZmZXIgdGV4dHVyZQorICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYmFja2J1ZmZlcik7CisgICAgZ2wu
dXNlUHJvZ3JhbShzb2xpZENvbG9yUHJvZ3JhbSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklB
TkdMRV9TVFJJUCwgMCwgNCk7CisKKyAgICAvLyBCbGl0IGJhY2tidWZmZXIgdGV4dHVyZSB0byBz
Y3JlZW4KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAg
IGdsLnVzZVByb2dyYW0oYmxpdFRleHR1cmVQcm9ncmFtKTsKKyAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFX1NUUklQLCAwLCA0KTsKKworICAgIC8vIENsZWFyIGJhY2tidWZmZXIgdGV4dHVy
ZSB0byByZWQKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGJhY2tidWZm
ZXIpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gQmxpdCBi
YWNrYnVmZmVyIHRleHR1cmUgdG8gc2NyZWVuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC51c2VQcm9ncmFtKGJsaXRUZXh0dXJlUHJvZ3JhbSk7
CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNCk7CisKKyAgICBkZWJ1
ZygnRXhwZWN0ZWQ6IGNhbnZhcyBzaG91bGQgYmUgcmVkJyk7CisgICAgZGVidWcoJ0J1Z2d5OiBj
YW52YXMgaXMgYmx1ZScpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEs
IFsyNTUsIDAsIDBdLCAnc2hvdWxkIGJlIHJlZCcpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdWZXJpZmllcyB3b3Jr
YXJvdW5kIGZvciBidWcgaW4gSW50ZWwgZHJpdmVycyB3aGVyZSBjbGVhciBhbmQgZHJhd0FycmF5
cyBjYWxscyBhcmUgcmVvcmRlcmVkIGFjcm9zcyBiaW5kRnJhbWVidWZmZXIuJyk7CitkZWJ1Zygn
UmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vY3JidWcuY29tLzEwMTgwMjgiPmh0
dHA6Ly9jcmJ1Zy5jb20vMTAxODAyODwvYT4nKTsKK3J1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVu
ZGVyaW5nL2JsZW5kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvYmxlbmRpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kN2JlY2M1MmM2ZWFhYWYwODEzMzFiZmIzNTcwYjdlNDg1NDc1MThmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvcmVuZGVyaW5nL2JsZW5kaW5nLmh0bWwKQEAgLTAsMCArMSwyMTYgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImVWc1Ny
YyIgdHlwZT0idGV4dC9wbGFpbiI+Cit2b2lkIG1haW4oKQoreworICAgIGdsX1BvaW50U2l6ZSA9
IDEuMDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4K
KworPHNjcmlwdCBpZD0iZUZzU3JjIiB0eXBlPSJ0ZXh0L3BsYWluIj4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwordW5pZm9ybSB2ZWM0IHVDb2xvcjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSB1Q29sb3I7Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignQmxlbmRpbmcgdGVzdHMnKTsKKwor
Y29uc3Qgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0aW9uIENyZWF0ZUNvbnRleHQoKSB7
CisgICAgY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CisgICAgZ2wudmlld3BvcnQo
MCwgMCwgMSwgMSk7CisKKyAgICBnbC5wcm9nID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW2VWc1Ny
Yy5pbm5lckhUTUwsIGVGc1NyYy5pbm5lckhUTUxdKTsKKyAgICBnbC5wcm9nLnVDb2xvciA9ICgo
KSA9PiB7CisgICAgICAgIGNvbnN0IGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihnbC5wcm9n
LCAndUNvbG9yJyk7CisgICAgICAgIHJldHVybiB4ID0+IGdsLnVuaWZvcm00ZnYobG9jLCB4KTsK
KyAgICB9KSgpOworICAgIGdsLnVzZVByb2dyYW0oZ2wucHJvZyk7CisgICAgZ2wucHJvZy51Q29s
b3IoWzEgLyAyNTUsIDIgLyAyNTUsIDMgLyAyNTUsIDQgLyAyNTVdKTsKKworICAgIGdsLmRyYXdB
bmRSZWFkID0gdHlwZSA9PiB7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAx
KTsKKyAgICAgICAgbGV0IHJldDsKKyAgICAgICAgaWYgKHR5cGUgPT0gZ2wuVU5TSUdORURfQllU
RSkgeworICAgICAgICAgICAgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoNCk7CisgICAgICAgIH0gZWxz
ZSBpZiAodHlwZSA9PSBnbC5GTE9BVCkgeworICAgICAgICAgICAgcmV0ID0gbmV3IEZsb2F0MzJB
cnJheSg0KTsKKyAgICAgICAgfQorICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGds
LlJHQkEsIHR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIGds
LmVuYWJsZShnbC5CTEVORCk7CisgICAgZ2wuYmxlbmRGdW5jKGdsLkNPTlNUQU5UX0NPTE9SLCBn
bC5aRVJPKTsKKyAgICBnbC5ibGVuZENvbG9yKDEwLCAxLCAxLCAxKTsKKworICAgIHJldHVybiBn
bDsKK30KKworZnVuY3Rpb24gQ3JlYXRlVmFsaWRGYihnbCwgZm9ybWF0cykgeworICAgIGNvbnN0
IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZiKTsKKworICAgIGZvciAobGV0IGkgaW4gZm9ybWF0cykgeworICAgICAg
ICBpID0gaXwwOyAvLyBPdGhlcndpc2UgaSBpcyBhIHN0cmluZy4gOigKKyAgICAgICAgY29uc3Qg
ZiA9IGZvcm1hdHNbaV07CisgICAgICAgIGlmICghZikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoZi5sZW5ndGggPT0gMSkgeworICAgICAgICAgICAgY29uc3QgcmIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCByYik7CisgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZlswXSwgMSwgMSk7CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAraSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgcmIpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGYubGVuZ3RoID09
IDMpIHsKKyAgICAgICAgICAgIGxldCBpbnRlcm5hbEZvcm1hdCA9IGZbMF07CisgICAgICAgICAg
ICBpZiAoaW50ZXJuYWxGb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIGlu
dGVybmFsRm9ybWF0ID0gZlsxXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3Qg
dGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgaW50ZXJuYWxGb3JtYXQsIDEsMSwwLCBmWzFdLGZbMl0sIG51bGwpOworICAgICAgICAg
ICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwK2ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJF
XzJELCB0ZXgsIDApOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZvcm1hdCBsZW5ndGg6ICcgKyBmKTsKKyAgICB9CisK
KyAgICBjb25zdCBzdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVG
RkVSKTsKKyAgICBpZiAoc3RhdHVzICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAg
ICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorICAgIHJldHVybiBmYjsKK30KKworbGV0IHdhcywgZmI7CisKK2NvbnN0IFRFU1RTID0gWwor
ICAgICgpID0+IHsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBkZWJ1ZygiU3RhdGUgcXVl
cmllcyBkb24ndCBjbGFtcC4iKTsKKworICAgICAgICBjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoKTsKKyAgICAgICAgZ2wuYmxlbmRDb2xvcigxMDAwLCAxLCAxLCAxKTsKKyAgICAgICAg
Y29uc3Qgd2FzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0NPTE9SKTsKKyAgICAgICAgZXhw
ZWN0QXJyYXkod2FzLCBbMTAwMCwgMSwgMSwgMV0pOworICAgIH0sCisgICAgKCkgPT4geworICAg
ICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGRlYnVnKCdCbGVuZGluZyBmb3IgUkdCQTg6Jyk7CisK
KyAgICAgICAgY29uc3QgZ2wgPSBDcmVhdGVDb250ZXh0KCk7CisgICAgICAgIGZiID0gQ3JlYXRl
VmFsaWRGYihnbCwgW1tnbC5SR0JBOCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURV1dKTsKKyAg
ICAgICAgc2hvdWxkQmVOb25OdWxsKCdmYicpOworCisgICAgICAgIGNvbnN0IHdhcyA9IGdsLmRy
YXdBbmRSZWFkKGdsLlVOU0lHTkVEX0JZVEUpOworICAgICAgICBleHBlY3RBcnJheSh3YXMsIFsx
LCAyLCAzLCA0XSk7CisKKyAgICAgICAgaWYgKGdsLmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1
ZmZlcl9mbG9hdCcpIHx8CisgICAgICAgICAgICBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9i
dWZmZXJfaGFsZl9mbG9hdCcpKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygnRW5hYmxl
IGNvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IGFuZCByZXRlc3QnKTsKKyAgICAgICAgICAgIGdsLmJs
ZW5kQ29sb3IoMTAwMCwgMSwgMSwgMSk7CisgICAgICAgICAgICBjb25zdCB3YXMgPSBnbC5kcmF3
QW5kUmVhZChnbC5VTlNJR05FRF9CWVRFKTsKKyAgICAgICAgICAgIGV4cGVjdEFycmF5KHdhcywg
WzEsIDIsIDMsIDRdKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgKCkgPT4geworICAgICAgICBk
ZWJ1ZygnJyk7CisgICAgICAgIGRlYnVnKCdCbGVuZGluZyBmb3IgUkdCQTE2RjonKTsKKworICAg
ICAgICBjb25zdCBnbCA9IENyZWF0ZUNvbnRleHQoKTsKKyAgICAgICAgaWYgKGdsLmJsaXRGcmFt
ZWJ1ZmZlcikgeworICAgICAgICAgICAgaWYgKCFnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9i
dWZmZXJfZmxvYXQnKSkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ01pc3NpbmcgZXh0
IEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgaXMgb3B0aW9uYWwsIHNraXBwaW5nLicpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmICghZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQn
KSkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ01pc3NpbmcgZXh0IEVYVF9jb2xvcl9i
dWZmZXJfaGFsZl9mbG9hdCBpcyBvcHRpb25hbCwgc2tpcHBpbmcuJyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgZXh0ID0gZ2wuZ2V0
RXh0ZW5zaW9uKCdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Jyk7CisgICAgICAgICAgICBnbC5IQUxG
X0ZMT0FUID0gZXh0LkhBTEZfRkxPQVRfT0VTOyAvLyBUaGVzZSBhcmVuJ3QgdGhlIHNhbWUgdmFs
dWUsIGJ1dCB0aGlzJ2xsIHdvcmsuCisgICAgICAgIH0KKworICAgICAgICBmYiA9IENyZWF0ZVZh
bGlkRmIoZ2wsIFtbZ2wuUkdCQTE2RiwgZ2wuUkdCQSwgZ2wuSEFMRl9GTE9BVF1dKTsKKyAgICAg
ICAgc2hvdWxkQmVOb25OdWxsKCdmYicpOworICAgICAgICBnbC5wcm9nLnVDb2xvcihbMSwgMiwg
MywgNF0pOworICAgICAgICBjb25zdCB3YXMgPSBnbC5kcmF3QW5kUmVhZChnbC5GTE9BVCk7Cisg
ICAgICAgIGV4cGVjdEFycmF5KHdhcywgWzEwLCAyLCAzLCA0XSk7CisgICAgfSwKKyAgICAoKSA9
PiB7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZGVidWcoJ0JsZW5kaW5nIGZvciBSR0JB
MzJGOicpOworCisgICAgICAgIGNvbnN0IGdsID0gQ3JlYXRlQ29udGV4dCgpOworICAgICAgICBp
ZiAoZ2wuYmxpdEZyYW1lYnVmZmVyKSB7CisgICAgICAgICAgICBpZiAoIWdsLmdldEV4dGVuc2lv
bignRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgnTWlzc2luZyBleHQgRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCBpcyBvcHRpb25hbCwgc2tpcHBp
bmcuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKCFnbC5nZXRFeHRlbnNpb24oJ1dFQkdMX2NvbG9yX2J1
ZmZlcl9mbG9hdCcpKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnTWlzc2luZyBleHQg
V0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IGlzIG9wdGlvbmFsLCBza2lwcGluZy4nKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnbC5nZXRFeHRl
bnNpb24oJ09FU190ZXh0dXJlX2Zsb2F0Jyk7CisgICAgICAgIH0KKyAgICAgICAgZmIgPSBDcmVh
dGVWYWxpZEZiKGdsLCBbW2dsLlJHQkEzMkYsIGdsLlJHQkEsIGdsLkZMT0FUXV0pOworICAgICAg
ICBzaG91bGRCZU5vbk51bGwoJ2ZiJyk7CisgICAgICAgIGdsLnByb2cudUNvbG9yKFsxLCAyLCAz
LCA0XSk7CisgICAgICAgIGNvbnN0IHdhcyA9IGdsLmRyYXdBbmRSZWFkKGdsLkZMT0FUKTsKKwor
ICAgICAgICBpZiAoIWdsLmdldEV4dGVuc2lvbignRVhUX2Zsb2F0X2JsZW5kJykpIHsKKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIGJsZW5kIDMyRiBmb3JtYXRzLicpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdTaG91
bGQgYmUgYWJsZSB0byBibGVuZCAzMkYgZm9ybWF0cy4nKTsKKyAgICAgICAgZXhwZWN0QXJyYXko
d2FzLCBbMTAsIDIsIDMsIDRdKTsKKyAgICB9LAorXTsKKworYXN5bmMgZnVuY3Rpb24gVGVzdCgp
IHsKKyAgICBmb3IgKGNvbnN0IGZuIG9mIFRFU1RTKSB7CisgICAgICAgIGF3YWl0IHd0dS5kaXNw
YXRjaFByb21pc2UoZm4pOworICAgIH0KKyAgICB3dHUuZGVzdHJveUFsbENvbnRleHRzKCk7Cisg
ICAgZmluaXNoVGVzdCgpOworfQorCitUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJp
bmcvY2FudmFzLWFscGhhLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2NhbnZhcy1hbHBoYS1idWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNjIyNWZmYWUyZDJiN2NkZjQ4MTA5ZGZhOWY1NjUwOGVmNWUwNTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2NhbnZhcy1hbHBoYS1idWcuaHRtbApAQCAtMCww
ICsxLDExNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+QWxwaGEgYmxlbmRpbmcgYnVnIG9uIFdlYkdMIGNhbnZhczwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij4g
PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KK2F0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247Cit2YXJ5aW5nIHZlYzIgdl91djsKK3ZvaWQg
bWFpbigpCit7CisgICAgdl91diA9IGFfcG9zaXRpb24ueHkgKiB2ZWMyKDAuNSwgMC41KSArIHZl
YzIoMC41LCAwLjUpOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLnh5LCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2
X3V2OwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOwordW5pZm9ybSB2ZWM0IHVfY29sb3I7
Cit2b2lkIG1haW4oKQoreworICAgIHZlYzQgdGV4ID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl91
dik7CisgICAgZ2xfRnJhZ0NvbG9yID0gdGV4ICogdV9jb2xvcjsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworLy8gVGhpcyB0ZXN0IGV4cG9zZXMgYW4gSW50ZWwgZHJp
dmVyIGlzc3VlIG9uIG1hY09TLgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CisKK3ZhciBwcm9ncmFtOwordmFyIG9mZnNj
cmVlbl90ZXg7Cit2YXIgZmJvOworCitmdW5jdGlvbiBpbml0KCkKK3sKKyAgICAvLyBJbml0IHBy
b2dyYW0KKyAgICBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZz
aGFkZXIiXSwgWyJhX3Bvc2l0aW9uIl0pOworCisgICAgLy8gSW5pdCBvZmZzY3JlZW4gcmVuZGVy
IHRhcmdldHMgYW5kIHNwZWNpZnkgdGhlIGZvcm1hdCBvZiBvZmZzY3JlZW4gdGV4dHVyZSB0byBi
ZSBSR0IuCisgICAgb2Zmc2NyZWVuX3RleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5h
Y3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCBvZmZzY3JlZW5fdGV4KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIG9mZnNjcmVlbl90ZXgs
IDApOworCisgICAgLy8gSW5pdCBibGVuZCBzdGF0ZQorICAgIGdsLmJsZW5kRnVuYyhnbC5TUkNf
QUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpOworfQorCitmdW5jdGlvbiBkcmF3X3JlY3Qo
KQoreworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBvZmZzY3JlZW5fdGV4KTsKKyAgICB2YXIgdV90ZXhfbG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X3RleHR1cmUnKTsKKyAgICBnbC51bmlmb3JtMWko
dV90ZXhfbG9jLCAwKTsKKworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgICB3dHUuZHJh
d0Zsb2F0Q29sb3JRdWFkKGdsLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RfY2FudmFzX2FscGhhKCkgeworICAgIGluaXQoKTsKKworICAgIC8vIENsZWFyIG9mZnNj
cmVlbiB0ZXh0dXJlIHRvIEdyZWVuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYm8pOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCk7CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gQ2xlYXIgZGVmYXVsdCBmcmFtZWJ1
ZmZlcgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAg
Z2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBnbC5j
bGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisKKyAgICAvLyBFbmFibGUgYWxwaGEgYmxlbmRpbmcgYW5kIHJlbmRlciB0byBk
ZWZhdWx0IGZyYW1lYnVmZmVyCisgICAgZ2wuZW5hYmxlKGdsLkJMRU5EKTsKKyAgICBkcmF3X3Jl
Y3QoKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBnbC5kcmF3aW5nQnVmZmVy
V2lkdGgsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsIFswLCAyNTUsIDAsIDI1NV0pOworfQorCit0
ZXN0X2NhbnZhc19hbHBoYSgpOworCitkZXNjcmlwdGlvbigiRXhwb3NlcyBhbHBoYSBibGVuZGlu
ZyBidWcgaW4gSW50ZWwgZHJpdmVycyBvbiBtYWNPUyAtIHNlZSBodHRwczovL2NyYnVnLmNvbS84
ODY5NzAiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvY2xlYXItYWZ0ZXItY29weVRleEltYWdl
MkQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy9jbGVhci1hZnRlci1jb3B5VGV4SW1hZ2UyRC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU3NmIwY2M2Y2ViZTNjYzg5NGM5ZDg4Y2M0NGNiZWYxN2Q4MzMwYTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9yZW5kZXJpbmcvY2xlYXItYWZ0ZXItY29weVRleEltYWdlMkQuaHRtbApAQCAt
MCwwICsxLDY0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBjbGVhciBhZnRlciBjb3B5VGV4SW1hZ2UyRCB3aXRoIGEgbm9uLXB1
cmUgY29sb3I8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMTI4IiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
Ky8vIFRoaXMgdGVzdCB2ZXJpZmllcyBhIEludGVsIEQzRCBkcml2ZXIgYnVnLgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIiwg
eyJhbnRpYWxpYXMiIDogInRydWUifSk7CisKK2Z1bmN0aW9uIHRlc3RDbGVhckFmdGVyQ29weVRl
eEltYWdlMkRXaXRob3V0UHVyZU9uZU9yWmVybyhjbGVhckNvbG9yLCBleHBlY3RlZENvbG9yKQor
eworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICBnbC5jbGVh
ckNvbG9yKDAsIDAsIDAsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKwor
ICB2YXIgd2lkdGggPSAxNjsKKyAgdmFyIGhlaWdodCA9IDE2OworICB2YXIgdGV4dHVyZSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7CisgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIDApOworICBnbC5jbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFy
Q29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKKworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBnbC5k
cmF3aW5nQnVmZmVyV2lkdGgsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsIGV4cGVjdGVkQ29sb3Ip
OworCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICBnbC5kZWxldGVU
ZXh0dXJlKHRleHR1cmUpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGlmIGNsZWFyIHdp
dGggYSBjb2xvciB0aGF0IGhhcyBub24tMC8xIFJHQiBjb21wb25lbnRzIGFmdGVyIGNvcHlUZXhJ
bWFnZTJELCB0aGUgZmluYWwgcmVuZGVyIGNvbG9yIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGgg
dGhlIGNsZWFyIGNvbG9yLiIpOworCitmb3IodmFyIGluZGV4ID0gMDsgaW5kZXggPCAzOyBpbmRl
eCsrKQoreworICB2YXIgY2xlYXJDb2xvciA9IFswLCAwLCAwLCAxXTsKKyAgdmFyIGV4cGVjdGVk
Q29sb3IgPSBbMCwgMCwgMCwgMjU1XTsKKyAgY2xlYXJDb2xvcltpbmRleF0gPSAwLjg7CisgIGV4
cGVjdGVkQ29sb3JbaW5kZXhdID0gMjU1ICogY2xlYXJDb2xvcltpbmRleF07CisgIHRlc3RDbGVh
ckFmdGVyQ29weVRleEltYWdlMkRXaXRob3V0UHVyZU9uZU9yWmVybyhjbGVhckNvbG9yLCBleHBl
Y3RlZENvbG9yKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9jbGlw
cGluZy13aWRlLXBvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2NsaXBwaW5nLXdpZGUtcG9pbnRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjM4YWEwYzRkNWJlOTRkZWI5ZmI0M2ZkNTY3MzMwODlmNTA4MzFhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9jbGlwcGluZy13aWRlLXBvaW50cy5odG1sCkBA
IC0wLDAgKzEsMjYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNsaXBwaW5nIHdp
ZGUgcG9pbnRzIHRlc3Q8L3RpdGxlPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RiZWQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIGNvbnRleHRWZXJzaW9uID0gMTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Rlc3RzL2NsaXBwaW5nLXdpZGUtcG9pbnRzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2NvbG9yLW1hc2stcHJlc2VydmVkLWR1cmlu
Zy1pbXBsaWNpdC1jbGVhcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9jb2xvci1tYXNrLXByZXNlcnZlZC1k
dXJpbmctaW1wbGljaXQtY2xlYXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjNjY0Nzc2NDU0ZTY0ZTdm
NDI5NDFhMjc0YzNjMzdjNzA0OWVmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9jb2xv
ci1tYXNrLXByZXNlcnZlZC1kdXJpbmctaW1wbGljaXQtY2xlYXJzLmh0bWwKQEAgLTAsMCArMSwx
MTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPkNvbG9yTWFzayBNdXN0IEJlIFByZXNlcnZlZCBEdXJpbmcgSW1wbGljaXQgQ2xlYXJzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworY29uc3Qgc3ogPSAxMjg7CitsZXQgZnJhbWVzOworbGV0IGdsOworbGV0IHRlc3RzID0gWwor
ICB7IGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSwgcHJlbXVsdGlwbGllZEFscGhhOiBm
YWxzZSB9LAorICB7IGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSwgcHJlbXVsdGlwbGll
ZEFscGhhOiB0cnVlICB9LAorICB7IGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0cnVlLCAgcHJl
bXVsdGlwbGllZEFscGhhOiBmYWxzZSB9LAorICB7IGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0
cnVlLCAgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlICB9LAorXTsKK2xldCBjdXJyZW50VGVzdDsK
K2xldCB0ZXN0SW5kZXggPSAwOworCitmdW5jdGlvbiBpbml0VGVzdCgpIHsKKyAgZGVzY3JpcHRp
b24oKTsKKyAgZGVidWcoJ0NvbG9yTWFzayBtdXN0IGJlIHByZXNlcnZlZCBkdXJpbmcgaW1wbGlj
aXQgY2xlYXJzIG9mIHRleHR1cmVzLicpOworICBkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8
YSBocmVmPSJodHRwOi8vY3JidWcuY29tLzkxMTkxOCI+aHR0cDovL2NyYnVnLmNvbS85MTE5MTg8
L2E+Jyk7CisKKyAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG5leHRUZXN0KTsKK30KKworZnVuY3Rp
b24gbmV4dFRlc3QoKSB7CisgIGlmICh0ZXN0SW5kZXggPj0gdGVzdHMubGVuZ3RoKSB7CisgICAg
ZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisgIGZyYW1lcyA9IDIwOworICBsZXQg
Y2FudmFzZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzZXMnKTsKKyAgbGV0IGNh
bnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52YXMud2lkdGgg
PSBzejsKKyAgY2FudmFzLmhlaWdodCA9IHN6OworICBjYW52YXNlcy5hcHBlbmRDaGlsZChjYW52
YXMpOworICBjdXJyZW50VGVzdCA9IHRlc3RzW3Rlc3RJbmRleF07CisgICsrdGVzdEluZGV4Owor
ICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBjdXJyZW50VGVzdCk7CisgIHJlcXVl
c3RBbmltYXRpb25GcmFtZShydW5UZXN0KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
Ly8gQ3JlYXRlIGEgdXNlci1kZWZpbmVkIGZyYW1lYnVmZmVyIHdoaWNoIGhhcyBhbiBhbHBoYSBj
aGFubmVsLgorICBsZXQgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgLy8gU2V0IGNvbG9yIG1hc2sgdG8gZGlz
YWJsZSBhbHBoYSB3cml0ZXMuIFRoaXMgaXMgaW1wb3J0YW50OyBzZWUgYmVsb3cuCisgIGdsLmNv
bG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgIGxldCB0ZXggPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgc3osIHN6LCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIC8v
IFVwbG9hZCBhIHN1Yi1yZWN0YW5nbGUuIEluIENocm9tZSwgdGhpcyB3YXMgbGF6aWx5IGNsZWFy
aW5nIGxldmVsIDAgb2YgdGhlCisgIC8vIHRleHR1cmUgdXNpbmcgT3BlbkdMLCBzZXR0aW5nIHRo
ZSBkcml2ZXIncyBjb2xvciBtYXNrIHRvICh0cnVlLCB0cnVlLCB0cnVlLAorICAvLyB0cnVlKSBp
biB0aGUgcHJvY2Vzcy4gQmVjYXVzZSB0aGUgdXNlcidzIGNvbG9yIG1hc2sgd2FzIHNldCB0byAo
dHJ1ZSwgdHJ1ZSwKKyAgLy8gdHJ1ZSwgZmFsc2UpIGFib3ZlLCBpbmNvcnJlY3QgY2FjaGluZyBj
b2RlIHdhcyBmYWlsaW5nIHRvIHJlc2V0IHRoZQorICAvLyBkcml2ZXIncyBjb2xvciBtYXNrIGxh
dGVyLiBPbiBtYWNPUywgQ2hyb21lIGltcGxlbWVudHMgYWxwaGE6ZmFsc2UgV2ViR0wKKyAgLy8g
Y29udGV4dHMgb24gdG9wIG9mIFJHQkEgdGV4dHVyZXMgd2hvc2UgYWxwaGEgY2hhbm5lbCBpcyBj
bGVhcmVkIHRvIDEuMCBhbmQKKyAgLy8gd2hlcmUgdGhlIGNvbG9yIG1hc2sgaXMgc2V0IHRvICh0
cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkgZHVyaW5nIGFsbCB3cml0ZXMuCisgIC8vIFRoaXMgYnVn
IHdhcyBhbGxvd2luZyB0aGF0IHRleHR1cmUncyBhbHBoYSBjaGFubmVsIHRvIGJlIGRlc3Ryb3ll
ZC4KKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheSg0KSk7CisgIGdsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVY
VFVSRV8yRCwgdGV4LCAwKTsKKyAgLy8gV2UgaGF2ZSB0byBpc3N1ZSBvbmUgY2xlYXIgdG8gdGhp
cyBmcmFtZWJ1ZmZlciB0byBnZXQgdGhlIGNvbG9yIG1hc2sKKyAgLy8gbGF0Y2hlZCBpbnRvIHRo
ZSBpbnRlcm5hbCBjYWNoaW5nIGNvZGUuCisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworCisgIC8vIFN3aXRjaCBiYWNrIHRvIGRlZmF1bHQgZnJhbWVidWZmZXIuCisgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIC8vIFNldCBjbGVhciBjb2xvciB0
byB0cmFuc3BhcmVudCBncmVlbi4KKyAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAwKTsKKyAgLy8g
Q2xlYXIuIFJlc3VsdCBzaG91bGQgYmUgb3BhcXVlIGdyZWVuLiBXYXMgdHJhbnNwYXJlbnQgZ3Jl
ZW4gd2hlbgorICAvLyBidWcgd2FzIGVuY291bnRlcmVkLgorICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgc3osIHN6LAorICAg
ICAgICAgICAgICAgICAgICAgIFsgMCwgMjU1LCAwLCAyNTUgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAiZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUgb3BhcXVlIGdyZWVuIGZvciAiICsg
SlNPTi5zdHJpbmdpZnkoY3VycmVudFRlc3QpKTsKKworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihm
Yik7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKworICAtLWZyYW1lczsKKyAgaWYgKGZyYW1l
cyA9PSAwKSB7CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG5leHRUZXN0KTsKKyAgfSBlbHNl
IHsKKyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuVGVzdCk7CisgIH0KK30KKworcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGluaXRUZXN0KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjYW52YXNlcyI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Jl
bmRlcmluZy9jdWxsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvY3VsbGluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc0MzIxZjVjZGQ1M2VhOTJhZmQ2YjEzYTc4ODhhMjI0YWYyOGJiNWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9yZW5kZXJpbmcvY3VsbGluZy5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzIgcG9zOworCit2b2lkIG1h
aW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOworfQorPC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgY29sOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX0ZyYWdDb2xvciA9IGNvbDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCitmdW5jdGlvbiBkcmF3KGds
LCBhcnIsIGNvbExvYywgY29sKSB7CisgICAgdmFyIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJh
eShhcnIpOworICAgIHZhciB2ZXJ0QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCB2ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0
dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBnbC51bmlmb3Jt
NGZ2KGNvbExvYywgY29sKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFX1NUUklQLCAw
LCB2ZXJ0aWNlcy5sZW5ndGggLyAyKTsKK30KKworZnVuY3Rpb24gY2xlYXIoZ2wsIGNvbCkgewor
ICAgIGdsLmNsZWFyQ29sb3IoY29sWzBdLCBjb2xbMV0sIGNvbFsyXSwgY29sWzNdKTsKKyAgICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrKGdsLCB3aW5kaW5nLCBzaG91bGRkcmF3KSB7CisgICAgdmFyIG1zZyA9
IHdpbmRpbmcgKyAnIGZhY2Ugd2FzICcgKyAoc2hvdWxkZHJhdyA/ICcnIDogJ25vdCAnKSArICdk
cmF3bi4nOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAyNTUs
IDAsIDI1NV0sIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIGN3VmVy
dGljZXMgPSBbLTEsIC0xLCAtMSwgMSwgMSwgLTEsIDEsIDFdOworICAgIHZhciBjY3dWZXJ0aWNl
cyA9IFstMSwgMSwgLTEsIC0xLCAxLCAxLCAxLCAtMV07CisgICAgdmFyIHJlZCA9IFsxLCAwLCAw
LCAxXTsKKyAgICB2YXIgZ3JlZW4gPSBbMCwgMSwgMCwgMV07CisgICAgdmFyIG9rOworCisgICAg
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgndGVzdGJlZCcsIHsgYW50aWFsaWFzOiBmYWxz
ZSB9KTsKKyAgICBpZiAoIWdsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ2NvdWxkIG5vdCBjcmVh
dGUgY29udGV4dCcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBwcm9ncmFtID0g
d3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydwb3MnXSk7Cisg
ICAgdmFyIGNvbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnY29sJyk7CisK
KyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgIGRlYnVnKCdDVUxMX0ZB
Q0Ugc2hvdWxkIGJlIG9mZiBieSBkZWZhdWx0Jyk7CisgICAgY2xlYXIoZ2wsIHJlZCk7CisgICAg
ZHJhdyhnbCwgY2N3VmVydGljZXMsIGNvbExvYywgZ3JlZW4pOworICAgIGNoZWNrKGdsLCAnQ0NX
JywgdHJ1ZSk7CisgICAgY2xlYXIoZ2wsIHJlZCk7CisgICAgZHJhdyhnbCwgY3dWZXJ0aWNlcywg
Y29sTG9jLCBncmVlbik7CisgICAgY2hlY2soZ2wsICdDVycsIHRydWUpOworCisgICAgZGVidWco
J0VuYWJsaW5nIENVTExfRkFDRScpOworICAgIGdsLmVuYWJsZShnbC5DVUxMX0ZBQ0UpOworCisg
ICAgZGVidWcoJ0JBQ0sgYW5kIENDVyBzaG91bGQgYmUgc2V0IGJ5IGRlZmF1bHQnKTsKKyAgICBj
bGVhcihnbCwgcmVkKTsKKyAgICBkcmF3KGdsLCBjY3dWZXJ0aWNlcywgY29sTG9jLCBncmVlbik7
CisgICAgY2hlY2soZ2wsICdDQ1cnLCB0cnVlKTsKKyAgICBjbGVhcihnbCwgZ3JlZW4pOworICAg
IGRyYXcoZ2wsIGN3VmVydGljZXMsIGNvbExvYywgcmVkKTsKKyAgICBjaGVjayhnbCwgJ0NXJywg
ZmFsc2UpOworCisgICAgdmFyIHRlc3RzID0gW3sgY3VsbEZhY2UgOiAnQkFDSycsIGZyb250RmFj
ZSA6ICdDQ1cnLCBkcmF3Q0NXIDogdHJ1ZSwgZHJhd0NXIDogZmFsc2V9LAorICAgICAgICAgICAg
ICAgICB7IGN1bGxGYWNlIDogJ0JBQ0snLCBmcm9udEZhY2UgOiAnQ1cnLCBkcmF3Q0NXIDogZmFs
c2UsIGRyYXdDVyA6IHRydWV9LAorICAgICAgICAgICAgICAgICB7IGN1bGxGYWNlIDogJ0ZST05U
JywgZnJvbnRGYWNlIDogJ0NDVycsIGRyYXdDQ1cgOiBmYWxzZSwgZHJhd0NXIDogdHJ1ZSB9LAor
ICAgICAgICAgICAgICAgICB7IGN1bGxGYWNlIDogJ0ZST05UJywgZnJvbnRGYWNlIDogJ0NXJywg
ZHJhd0NDVyA6IHRydWUsIGRyYXdDVyA6IGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgeyBjdWxs
RmFjZSA6ICdGUk9OVF9BTkRfQkFDSycsIGZyb250RmFjZSA6ICdDQ1cnLCBkcmF3Q0NXIDogZmFs
c2UsIGRyYXdDVyA6IGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgeyBjdWxsRmFjZSA6ICdGUk9O
VF9BTkRfQkFDSycsIGZyb250RmFjZSA6ICdDVycsIGRyYXdDQ1cgOiBmYWxzZSwgZHJhd0NXIDog
ZmFsc2V9XTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdmFyIHQgPSB0ZXN0c1tpXTsKKyAgICAgICAgZGVidWcoJ1NldHRpbmcgJyArIHQu
Y3VsbEZhY2UgKyAnIGFuZCAnICsgdC5mcm9udEZhY2UpOworICAgICAgICBnbC5jdWxsRmFjZShn
bFt0LmN1bGxGYWNlXSk7CisgICAgICAgIGdsLmZyb250RmFjZShnbFt0LmZyb250RmFjZV0pOwor
ICAgICAgICBjbGVhcihnbCwgdC5kcmF3Q0NXID8gcmVkIDogZ3JlZW4pOworICAgICAgICBkcmF3
KGdsLCBjY3dWZXJ0aWNlcywgY29sTG9jLCB0LmRyYXdDQ1cgPyBncmVlbiA6IHJlZCk7CisgICAg
ICAgIGNoZWNrKGdsLCAnQ0NXJywgdC5kcmF3Q0NXKTsKKyAgICAgICAgY2xlYXIoZ2wsIHQuZHJh
d0NXID8gcmVkIDogZ3JlZW4pOworICAgICAgICBkcmF3KGdsLCBjd1ZlcnRpY2VzLCBjb2xMb2Ms
IHQuZHJhd0NXID8gZ3JlZW4gOiByZWQpOworICAgICAgICBjaGVjayhnbCwgJ0NXJywgdC5kcmF3
Q1cpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0
ZXN0YmVkIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0eWxlPSJ3aWR0aDo1MHB4OyBoZWlnaHQ6
NTBweCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVy
aWZ5IHRoYXQgY3VsbGluZyB3b3JrcycpOworcnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5n
L2RlZmF1bHQtdGV4dHVyZS1kcmF3LWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2RlZmF1bHQtdGV4dHVy
ZS1kcmF3LWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNzFhMGFhYTUyY2Y5MTNlNjMyOGMzN2M4YTEw
MGFiYjllMmMxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZGVmYXVsdC10ZXh0dXJl
LWRyYXctYnVnLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIERlZmF1bHQgVGV4dHVyZSBEcmF3IEJ1ZyBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgYXR0ZW1wdHMg
dG8gcHJvdm9rZSBhIENocm9tZSBidWcgdGhhdCBvY2N1cmVkIHdoZW4gZHJhd2luZyB3aXRoIHRl
eHR1cmVzIHdoZW4gb25lIHdhcyBuZXZlciBib3VuZC4gPGEgaHJlZj0naHR0cDovL2NyYnVnLmNv
bS81MjQxNDQnPmNyYnVnLmNvbS81MjQxNDQ8L2E+Iik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiYyIpOwor
dmFyIGNhbnZhcyA9IGdsLmNhbnZhczsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldl
YkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgi
V2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIHJ1bkRyYXdUZXN0cygpOworCisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJy
b3JzIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkRyYXdUZXN0cyhkcmF3VHlwZSkgeworICAgIGRlYnVn
KCJUZXN0IHRoYXQgZHJhd2luZyB3aXRoIGEgdGV4dHVyZSB3aGVuIG5vIHRleHR1cmVzIGhhdmUg
YmVlbiBib3VuZCBnaXZlcyB0aGUgZXhwZWN0ZWQgYmxhY2sgb3V0cHV0Iik7CisgICAgY2FudmFz
LndpZHRoID0gNTA7IGNhbnZhcy5oZWlnaHQgPSA1MDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBj
YW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgLy8gU2V0IHVwIGEgcHJvZ3JhbSB0
aGF0IHdpbGwgZHJhdyB3aXRoIGEgdGV4dHVyZQorICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
Tm9UZXhDb29yZFRleHR1cmVQcm9ncmFtKGdsKTsKKworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFk
KGdsKTsKKyAgICBmb3IgKHZhciBpID0gMCA7IGkgPCAxMDAgJiYgX2J1ZmZlcmVkQ29uc29sZUxv
Z3MgIT0gbnVsbDsgKytpKSB7CisgICAgICAgIC8vIENsZWFyIHRvIHdoaXRlLgorICAgICAgICBn
bC5jbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICAvLyBEcmF3
IHdpdGhvdXQgYmluZGluZyBhbnkgdGV4dHVyZXMuCisgICAgICAgIGdsLmRyYXdFbGVtZW50cyhn
bC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKworICAgICAgICAvLyBDaGVj
ayB0byBlbnN1cmUgdGhlIGVudGlyZSBjYW52YXMgaXMgYmxhY2suCisgICAgICAgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAuMCwgMC4wLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsCisg
ICAgICAgICAgICAgICAgWzAuMCwgMC4wLCAwLjBdLCAiRHJhdyBzaG91bGQgcGFzcyIsIDIpOwor
ICAgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZHJhdy1hcnJheXMt
b3V0LW9mLWJvdW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2RyYXctYXJyYXlzLW91dC1vZi1ib3VuZHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NTc3ZmEwYjBhZGEwNjI3N2IzNzNhYmI3NTBiMDcyYmJkYmNjYmEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2RyYXctYXJyYXlzLW91dC1vZi1ib3VuZHMu
aHRtbApAQCAtMCwwICsxLDMzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL291dC1vZi1ib3VuZHMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oIlRlc3Qgb2YgZHJhd0FycmF5cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFy
YW1ldGVycyIpOworCitPdXRPZkJvdW5kc1Rlc3QucnVuRHJhd0FycmF5c1Rlc3QoJ2dsLmRyYXdB
cnJheXMoZ2wuVFJJQU5HTEVTLCAkKG9mZnNldCksICQoY291bnQpKScsCisgICAgV2ViR0xUZXN0
VXRpbHMuY3JlYXRlM0RDb250ZXh0KCksIFdlYkdMVGVzdFV0aWxzKTsKKworZGVidWcoIiIpCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Jl
bmRlcmluZy9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGY3
ZjhlYWY1MzY1OWI5ZDBkZDIxNmIwNDVkYzdiOTBjNDJlMTNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
cmVuZGVyaW5nL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvdGVzdHMvb3V0LW9mLWJvdW5kcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVz
dCBvZiBkcmF3RWxlbWVudHMgd2l0aCBvdXQtb2YtYm91bmRzIHBhcmFtZXRlcnMiKTsKKworT3V0
T2ZCb3VuZHNUZXN0LnJ1bkRyYXdFbGVtZW50c1Rlc3QoImdsLmRyYXdFbGVtZW50cyhnbC5UUklB
TkdMRVMsICQoY291bnQpLCAkKHR5cGUpLCAkKG9mZnNldCkpIiwKKyAgICBXZWJHTFRlc3RVdGls
cy5jcmVhdGUzRENvbnRleHQoKSwgV2ViR0xUZXN0VXRpbHMpOworCitkZWJ1ZygiIik7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3JlbmRlcmluZy9kcmF3LXdlYmdsLXRvLWNhbnZhcy0yZC1yZXBlYXRlZGx5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9yZW5kZXJpbmcvZHJhdy13ZWJnbC10by1jYW52YXMtMmQtcmVwZWF0ZWRseS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdlYTNmZjk1N2RiM2NlNzM4MmM1NWU4M2QxNGE0ZTE2MDQ2NGI0NGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9yZW5kZXJpbmcvZHJhdy13ZWJnbC10by1jYW52YXMtMmQtcmVwZWF0ZWRseS5o
dG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPkRyYXcgV2ViR0wgdG8gQ2FudmFzMkQgUmVwZWF0ZWRseTwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
KworY29uc3Qgc3ogPSAyNTY7CisKK2Z1bmN0aW9uIGRyYXdUbzJEQ2FudmFzKGMyLCB3ZWJHTENh
bnZhcykgeworICAvLyBBbHdheXMgY2xlYXIgMkQgY2FudmFzIHRvIHNvbGlkIGdyZWVuIGZpcnN0
LgorICBjMi5jbGVhclJlY3QoMCwgMCwgc3osIHN6KTsKKyAgYzIuZmlsbFN0eWxlID0gJ3JnYigw
LDI1NSwwKSc7CisgIGMyLmZpbGxSZWN0KDAsIDAsIHN6LCBzeik7CisgIC8vIERyYXcgV2ViR0wg
Y2FudmFzIHRvIHRoaXMgY2FudmFzLgorICBjMi5kcmF3SW1hZ2Uod2ViR0xDYW52YXMsIDAsIDAp
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBkZXNjcmlwdGlvbigpOworICBkZWJ1Zygn
UmVwZWF0ZWRseSBkcmF3aW5nIGEgV2ViR0wgY2FudmFzIHRvIGEgMkQgY2FudmFzIHNob3VsZCBv
bmx5IGRyYXcgdGhlIG1vc3QgcmVjZW50bHkgcmVuZGVyZWQgV2ViR0wgY29udGVudC4nKTsKKyAg
ZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2NyYnVnLmNvbS84OTQw
MjEiPmh0dHA6Ly9jcmJ1Zy5jb20vODk0MDIxPC9hPicpOworCisgIGxldCBjMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjYW52YXMtMmQnKS5nZXRDb250ZXh0KCcyZCcpOworICBsZXQgd2Vi
R0xDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzLXdlYmdsJyk7CisgIGxl
dCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQod2ViR0xDYW52YXMsIHsgYWxwaGE6IHRydWUsIGFu
dGlhbGlhczogZmFsc2UsIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSB9KTsKKyAgbGV0IHRvbGVy
YW5jZSA9IDI7CisKKyAgLy8gQ2xlYXIgbGVmdCBoYWxmIG9mIFdlYkdMIGNhbnZhcyB0byByZWQg
YW5kIHJpZ2h0IGhhbGYgdG8KKyAgLy8gdHJhbnNwYXJlbnQgYmxhY2suCisgIGdsLmRpc2FibGUo
Z2wuU0NJU1NPUl9URVNUKTsKKyAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwor
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgZ2wuc2Npc3NvcigwLCAwLCBzeiAv
IDIsIHN6KTsKKyAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgIGdsLmNsZWFyQ29sb3Io
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cisg
IC8vIERyYXcgdG8gMkQgY2FudmFzLgorICBkcmF3VG8yRENhbnZhcyhjMiwgd2ViR0xDYW52YXMp
OworCisgIC8vIENsZWFyIHJpZ2h0IGhhbGYgb2YgV2ViR0wgY2FudmFzIHRvIHJlZCBhbmQgbGVm
dCBoYWxmIHRvCisgIC8vIHRyYW5zcGFyZW50IGJsYWNrLgorICBnbC5kaXNhYmxlKGdsLlNDSVNT
T1JfVEVTVCk7CisgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIGdsLnNjaXNzb3Ioc3ogLyAyLCAwLCBzeiAvIDIs
IHN6KTsKKyAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgIGdsLmNsZWFyQ29sb3IoMS4w
LCAwLjAsIDAuMCwgMS4wKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIC8v
IERyYXcgdG8gMkQgY2FudmFzLgorICBkcmF3VG8yRENhbnZhcyhjMiwgd2ViR0xDYW52YXMpOwor
CisgIC8vIENsZWFyIFdlYkdMIGNhbnZhcyB0byB0cmFuc3BhcmVudCBibGFjay4KKyAgZ2wuZGlz
YWJsZShnbC5TQ0lTU09SX1RFU1QpOworICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAu
MCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAvLyBEcmF3IHRvIDJEIGNh
bnZhcy4KKyAgZHJhd1RvMkRDYW52YXMoYzIsIHdlYkdMQ2FudmFzKTsKKworICAvLyAyRCBjYW52
YXMgc2hvdWxkIGJlIGdyZWVuLgorICAvLyBJbiB0aGUgZXJyb3IgY2FzZSwgdGhlIHJlbmRlcmlu
ZyByZXN1bHRzIGZyb20gZWFybGllciBkcmF3cyB3ZXJlCisgIC8vIGJlaW5nIGFjY3VtdWxhdGVk
LCBzbyB0aGUgMkQgY2FudmFzIHdhcyB1bHRpbWF0ZWx5IHJlZC4KKyAgd3R1LmNoZWNrQ2FudmFz
UmVjdChjMiwgMCwgMCwgc3osIHN6LAorICAgICAgICAgICAgICAgICAgICAgIFsgMCwgMjU1LCAw
LCAyNTUgXSwKKyAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGdyZWVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICB0b2xlcmFuY2UpOworCisgIGZpbmlzaFRlc3QoKTsKK30KKworcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKHJ1blRlc3QpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzLXdlYmdsIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+PC9jYW52
YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMtMmQiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48L2Nh
bnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9kcmF3LXdpdGgt
Y2hhbmdpbmctc3RhcnQtdmVydGV4LWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2RyYXctd2l0aC1jaGFu
Z2luZy1zdGFydC12ZXJ0ZXgtYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI4ZGM3MWY1OWJkM2FkZjE0
YzJiZDRhNTQ0NjRkNzRhZTQzOWU1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9kcmF3
LXdpdGgtY2hhbmdpbmctc3RhcnQtdmVydGV4LWJ1Zy5odG1sCkBAIC0wLDAgKzEsMTE0IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KK1RoaXMg
YnVnIHdvdWxkIG9jY3VyIGFmdGVyIHRoZSBhcHAgd291bGQgcmVuZGVyIHNldmVyYWwgdGltZXMg
d2l0aCB0aGUKK3NhbWUgdmVydGV4IGF0dHJpYnV0ZXMgYW5kIGJ1ZmZlcnMsIGJ1dCB1c2luZyBh
IGRpZmZlcmVudCBzdGFydCBvZmZzZXQuCitPbmUgb2YgdGhlIGJ1ZmZlcnMgd291bGQgbGlrZWx5
IGhhdmUgdG8gYmUgRFlOQU1JQy4KKworU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTMyNyBhbmQg
aHR0cDovL2NyYnVnLmNvbS81OTQ1MDkKKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RHJhdyB3aXRoIGNoYW5naW5n
IHN0YXJ0IHZlcnRleCB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHBv
c2l0aW9uOworYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB0ZXN0OworYXR0cmlidXRlIG1lZGl1bXAg
dmVjNCBleHBlY3RlZDsKK3ZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOwordm9pZCBtYWluKHZv
aWQpCit7CisgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICB2ZWM0IHRocmVzaG9sZCA9
IG1heChhYnMoZXhwZWN0ZWQpICogMC4wMSwgMS4wIC8gNjQuMCk7CisgICAgY29sb3IgPSB2ZWM0
KGxlc3NUaGFuRXF1YWwoYWJzKHRlc3QgLSBleHBlY3RlZCksIHRocmVzaG9sZCkpOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PgordmFyeWluZyBtZWRpdW1wIHZlYzQgY29sb3I7Cit2b2lkIG1haW4odm9pZCkKK3sKKyAgICBn
bF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oIlRlc3QgY2FsbGluZyBkcmF3QXJyYXlzIHdpdGggcmVwZWF0ZWRs
eSB3aXRoIGEgZGlmZmVyZW50IHN0YXJ0IHZlcnRleCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczEiKTsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKKwordmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInBvc2l0aW9uIiwg
InRlc3QiLCAiZXhwZWN0ZWQiXSk7CisKK3ZhciB2ZXJ0ZXhDb3VudCA9IDI0OwordmFyIHRlc3RE
YXRhID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhDb3VudCk7CisKK2ZvciAodmFyIGluZGV4ID0g
MDsgaW5kZXggPCB2ZXJ0ZXhDb3VudDsgKytpbmRleCkgeworICAgIHRlc3REYXRhW2luZGV4XSA9
IGluZGV4OworfQorCit2YXIgcXVhZERhdGEgPSBuZXcgRmxvYXQzMkFycmF5KDE0KQorcXVhZERh
dGFbMF0gPSAtMS4wOyBxdWFkRGF0YVsxXSA9IDEuMDsKK3F1YWREYXRhWzJdID0gLTEuMDsgcXVh
ZERhdGFbM10gPSAtMS4wOworcXVhZERhdGFbNF0gPSAxLjA7ICBxdWFkRGF0YVs1XSA9IC0xLjA7
CitxdWFkRGF0YVs2XSA9IC0xLjA7IHF1YWREYXRhWzddID0gMS4wOworcXVhZERhdGFbOF0gPSAx
LjA7ICBxdWFkRGF0YVs5XSA9IC0xLjA7CitxdWFkRGF0YVsxMF0gPSAxLjA7IHF1YWREYXRhWzEx
XSA9IDEuMDsKK3F1YWREYXRhWzEyXSA9IDAuMDsgcXVhZERhdGFbMTNdID0gMC4wOworCit2YXIg
cXVhZEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIHF1YWRCdWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHF1YWRE
YXRhLCBnbC5TVEFUSUNfRFJBVyk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7CitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworLy8g
TXVzdCBiZSBTVEFUSUMgdG8gdHJpZ2dlciB0aGUgYnVnLgordmFyIHRlc3RCdWZmZXIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0ZXN0QnVmZmVy
KTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB0ZXN0RGF0YSwgZ2wuU1RBVElDX0RS
QVcpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAxLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDAp
OworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKy8vIE11c3QgYmUgRFlOQU1JQyB0
byB0cmlnZ2VyIHRoZSBidWcuCit2YXIgZXhwZWN0ZWRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBleHBlY3RlZEJ1ZmZlcik7CitnbC5i
dWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdGVzdERhdGEsIGdsLkRZTkFNSUNfRFJBVyk7Citn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDIsIDEsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CitnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgyKTsKKworZnVuY3Rpb24gY2hlY2soKSB7CisgICAgd3R1
LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAyNTUsIDI1NSwgMjU1XSwgInNob3VsZCBiZSB3aGl0ZSIp
OworfQorCitnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CitjaGVjaygpCisKK2ds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKK2NoZWNrKCkKKworZ2wuZHJhd0FycmF5
cyhnbC5UUklBTkdMRVMsIDEsIDYpOworY2hlY2soKQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1zd2l0Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9mcmFtZWJ1ZmZl
ci1zd2l0Y2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjJhOWVmNTVlYzU0NjMzNTgxNzZkZTZkZGUxYzg0
Yzc5MzBjY2E5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXN3aXRj
aC5odG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGZyYW1lYnVmZmVyIHN3aXRjaGluZyBjb25mb3Jt
YW5jZSB0ZXN0LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIHN3aXRjaGluZy4gVGhlIHRlc3Qgc3dpdGNo
ZXMgYmV0d2VlbiB0d28gZnJhbWVidWZmZXJzLCBjb3B5aW5nIHJlbmRlcmluZyByZXN1bHRzIGZy
b20gb25lIHRvIHRoZSBvdGhlci4iKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0
dXJlZFF1YWQoZ2wpOworCit2YXIgdGV4MSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIDAsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwordmFyIGZiMSA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZiMSk7CitnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDEsIDApOworCit2YXIgdGV4MiA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDIpOwor
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJF
U1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxU
RVIsIGdsLk5FQVJFU1QpOwordmFyIGZiMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7CitnbC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQs
IHRleDIsIDApOworCitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgxKTsKK2dsLmNs
ZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK3ZhciBp
dGVyYXRlID0gZnVuY3Rpb24oY2hlY2tGQk9zLCBpdGVyYXRpb25zKSB7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgZGVidWcoIkNsZWFyaW5nIGZy
YW1lYnVmZmVyIDEgdG8gd2hpdGUiKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYjEpOworICAgICAgICBpZiAoY2hlY2tGQk9zKQorICAgICAgICAgICAgc2hv
dWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworCisgICAgICAgIGRlYnVnKCJDb3B5aW5nIGZyYW1lYnVmZmVyIDEgdG8gZnJhbWVidWZm
ZXIgMiIpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7
CisgICAgICAgIGlmIChjaGVja0ZCT3MpCisgICAgICAgICAgICBzaG91bGRCZSgiZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUiKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIH0K
KyAgICAvLyBSZWFkIHdoYXQgaXMgaW4gZmIyCisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1
LDI1NSwyNTUsMjU1XSwgIkZyYW1lYnVmZmVyIDIgc2hvdWxkIGJlIHdoaXRlIik7Cit9OworCitk
ZWJ1ZygiIik7CitkZWJ1ZygiV2FybS11cCBpdGVyYXRpb24iKTsKK2l0ZXJhdGUodHJ1ZSwgMSk7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJJdGVyYXRpbmcgdGhlIHRlc3QgYSBmZXcgdGltZXMgc2lu
Y2UgYXQgbGVhc3Qgb25lIGJ1ZyBpdCBoYXMgZXhwb3NlZCBpcyBzb21ld2hhdCBmbGFreS4iKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJJdGVyYXRpb24gIiArIChpICsgMSkpOworICAgIGl0ZXJhdGUoZmFsc2UsIDIpOworfQorCitk
ZWJ1ZygiIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBi
ZSBubyBlcnJvcnMgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4iKTsKKworZmluaXNoVGVzdCgpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZnJhbWVidWZmZXItdGV4dHVyZS1jbGVhci5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXRleHR1cmUtY2xlYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYzVkNjBkZWY4NTBhMWFiMTk0YzhhMjk4NjZiM2IyZmI4N2FhN2FkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXRleHR1cmUtY2xlYXIuaHRtbApAQCAtMCwwICsx
LDk3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBmcmFtZWJ1ZmZlciBjbGVhckNvbG9yIHdpdGggcHVyZSAwLzE8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworLy8gVGhpcyB0ZXN0IHZlcmlmaWVz
IGEgTWFjIEludGVsIEhEIDYwMDAvNjEwMCBkcml2ZXIgYnVnLiBTZWUgY3JidWcuY29tLzcxMDQ0
My4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImNhbnZhcyIpOworCitmdW5jdGlvbiBJbml0aWFsaXplUkdCQURhdGEod2lkdGgsIGhlaWdo
dCkKK3sKKyAgdmFyIHNpemUgPSA0ICogd2lkdGggKiBoZWlnaHQ7CisgIHZhciBkYXRhID0gbmV3
IFVpbnQ4QXJyYXkoc2l6ZSk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Cisg
ICAgZGF0YVtpXSA9IDEyODsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gdGVz
dEZyYW1lYnVmZmVyVGV4dHVyZUNsZWFyV2l0aFB1cmVaZXJvT3JPbmUoY2xlYXJDb2xvciwgZXhw
ZWN0ZWRDb2xvcikgeworICB2YXIgd2lkdGggPSAzMjsKKyAgdmFyIGhlaWdodCA9IDMyOworICB2
YXIgdGV4dHVyZTAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleHR1cmUwKTsKKyAgLy8gSXQgc2VlbXMgdGhhdCBpZiB3ZSBhZGQgdGV4UGFy
YW1ldGVyaSBoZXJlLCBhbGwgY2FzZXMgY2FuIHBhc3Mgbm8gbWF0dGVyCisgIC8vIHlvdSB1c2Ug
dGV4UGFyYW1ldGVyaSBvciBub3QgaW4gTGluZSA4NS4KKyAgLy8gZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICB2YXIg
dGV4RGF0YSA9IEluaXRpYWxpemVSR0JBRGF0YSh3aWR0aCwgaGVpZ2h0KTsKKyAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKKworICB2YXIgZmJvMCA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvMCk7
CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZTAsIDApOworICBnbC52aWV3cG9ydCgwLCAw
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgZ2wuY2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNv
bG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKKyAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisKKyAgdmFyIHRleHR1cmUxID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMSk7CisgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgIHZhciBmYm8xID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8xKTsKKyAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlMSwgMCk7CisKKyAgd3R1LnNldHVwVGV4dHVyZWRRdWFk
KGdsKTsKKworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMCk7CisgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8xKTsKKyAg
Z2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgIGdsLmRyYXdBcnJheXMoZ2wuVFJJ
QU5HTEVTLCAwLCA2KTsKKworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBl
eHBlY3RlZENvbG9yKTsKKworICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUwKTsKKyAgZ2wuZGVs
ZXRlRnJhbWVidWZmZXIoZmJvMCk7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZTEpOworICBn
bC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8xKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBp
ZiBjbGVhciBmYm8gdGV4dHVyZSBjb2xvciB3aXRoIHB1cmUgMC8xIGFuZCBzYW1wbGUgdGhpcyB0
ZXh0dXJlIHRvIGRyYXcgdG8gYW5vdGhlciBmYm8sIHRoZSBmaW5hbCByZW5kZXIgY29sb3Igc2hv
dWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgY2xlYXIgY29sb3IuIik7CisKK2Zvcih2YXIgaW5k
ZXggPSAwOyBpbmRleCA8IDE2OyBpbmRleCsrKQoreworICB2YXIgciA9IChpbmRleCAmIDgpIC8g
ODsKKyAgdmFyIGcgPSAoaW5kZXggJiA0KSAvIDQ7CisgIHZhciBiID0gKGluZGV4ICYgMikgLyAy
OworICB2YXIgYSA9IGluZGV4ICYgMTsKKyAgdmFyIGNsZWFyQ29sb3IgPSBbciwgZywgYiwgYV07
CisgIHZhciBleHBlY3RlZENvbG9yID0gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTUsIGEgKiAy
NTVdOworICB0ZXN0RnJhbWVidWZmZXJUZXh0dXJlQ2xlYXJXaXRoUHVyZVplcm9Pck9uZShjbGVh
ckNvbG9yLCBleHBlY3RlZENvbG9yKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Jl
bmRlcmluZy9mcmFtZWJ1ZmZlci10ZXh0dXJlLXN3aXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2ZyYW1l
YnVmZmVyLXRleHR1cmUtc3dpdGNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0M2JjNzRkZWMyYTYyNjMw
NTkzMWE5MzU0NmRmM2UzOTU5NmQyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9mcmFt
ZWJ1ZmZlci10ZXh0dXJlLXN3aXRjaC5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGZyYW1lYnVm
ZmVyIHRleHR1cmUgYXR0YWNobWVudCBzd2l0Y2hpbmcgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0
PSI2NCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVz
dCBmcmFtZWJ1ZmZlciB0ZXh0dXJlIGF0dGFjaG1lbnQgc3dpdGNoaW5nLiBUaGUgdGVzdCB1c2Vz
IG9uZSBmcmFtZWJ1ZmZlciBvYmplY3QgYW5kIHN3aXRjaGVzIGl0cyBjb2xvciBhdHRhY2htZW50
LiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgi
Y2FudmFzIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKK3Zh
ciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZiKTsKKwordmFyIHRleDIgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgyKTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKwordmFyIHRl
eDEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgxKTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsK
K2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBn
bC5ORUFSRVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
SU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKworZ2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAx
LjApOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKwordmFyIGl0ZXJhdGUgPSBmdW5jdGlvbihjaGVja0ZC
T3MsIGl0ZXJhdGlvbnMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7ICsr
aSkgeworICAgICAgICBkZWJ1ZygiQ2xlYXJpbmcgdGV4MSB0byB3aGl0ZSIpOworICAgICAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIHRleDEsIDApOworICAgICAgICBpZiAoY2hlY2tGQk9zKQorICAg
ICAgICAgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIGRlYnVnKCJDb3B5aW5nIHRleDEgdG8gdGV4MiIp
OworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOworICAgICAgICBpZiAoY2hl
Y2tGQk9zKQorICAgICAgICAgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgICAgIGds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB9CisgICAgLy8gUmVhZCB3aGF0
IGlzIGluIHRleDIKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsMjU1LDI1NSwyNTVdLCAi
dGV4MiBzaG91bGQgYmUgd2hpdGUiKTsKK307CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJXYXJtLXVw
IGl0ZXJhdGlvbiIpOworaXRlcmF0ZSh0cnVlLCAxKTsKKworZGVidWcoIiIpOworZGVidWcoIkl0
ZXJhdGluZyB0aGUgdGVzdCBhIGZldyB0aW1lcyBzaW5jZSBhdCBsZWFzdCBvbmUgYnVnIGl0IGhh
cyBleHBvc2VkIGlzIHNvbWV3aGF0IGZsYWt5LiIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAzOyAr
K2kpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkl0ZXJhdGlvbiAiICsgKGkgKyAxKSk7
CisgICAgaXRlcmF0ZShmYWxzZSwgMik7Cit9CisKK2RlYnVnKCIiKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBhdCB0aGUgZW5kIG9m
IHRoZSB0ZXN0LiIpOworCitmaW5pc2hUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRl
cmluZy9nbC1jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLWNsZWFyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTljNzIxMGU4MWJiMTNlNmIxODNlYmI2MTUxZDI1ZmJkNjg5MTZmMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3JlbmRlcmluZy9nbC1jbGVhci5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGNsZWFyIGNv
bmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3R5bGU9IndpZHRoOiAyNTZweDsgaGVpZ2h0OiA0
OHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+PGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3Qg
Y2xlYXIuIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVh
ZChnbCk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJl
IG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwwLDAsMF0s
ICJzaG91bGQgYmUgMCwwLDAsMCIpOworCitnbC5jbGVhckNvbG9yKDEsMSwxLDEpOworZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cit3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsMjU1LDI1
NSwyNTVdLCAic2hvdWxkIGJlIDI1NSwyNTUsMjU1LDI1NSIpOworCitnbC5jbGVhckNvbG9yKDAs
MCwwLDApOworZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cit3dHUuY2hlY2tDYW52YXMo
Z2wsIFswLDAsMCwwXSwgInNob3VsZCBiZSAwLDAsMCwwIik7CisKK2dsLmNvbG9yTWFzayhmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKK2dsLmNsZWFyQ29sb3IoMSwxLDEsMSk7CitnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKTsKK3d0dS5jaGVja0NhbnZhcyhnbCwgWzAsMCwwLDI1NV0s
ICJzaG91bGQgYmUgMCwwLDAsMjU1Iik7CisKK3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQo
CisgICAgICBnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLAorICAgICAgbmV3IFVpbnQ4QXJyYXkoWzEyOCwgMTI4LCAxMjgsIDE5Ml0p
KTsKKworZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKK2dsLmRpc2FibGUoZ2wuQkxFTkQpOwor
Z2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOworZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIDYpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMTI4LDEyOCwxMjgsMTkyXSwg
InNob3VsZCBiZSAxMjgsMTI4LDEyOCwxOTIiKTsKKworZ2wuY29sb3JNYXNrKGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpOworZ2wuY2xlYXJDb2xvcigxLDEsMSwxKTsKK2dsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMTI4LDEyOCwxMjgsMjU1XSwg
InNob3VsZCBiZSAxMjgsMTI4LDEyOCwyNTUiKTsKKworLy8gVE9ETzogVGVzdCBkZXB0aCBhbmQg
c3RlbmNpbCBjbGVhcmluZy4KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZ2wt
ZHJhd2FycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLWRyYXdhcnJheXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZDA2ZTk5ODk3ODA4MmJjMjYxM2M2NjVhNjY5MWI0OGM0MzViMTEzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvcmVuZGVyaW5nL2dsLWRyYXdhcnJheXMuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBk
cmF3QXJyYXlzIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9k
ZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwor
dm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0
PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3Zv
aWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjApOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBpbml0KCkK
K3sKKyAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CisKKyAgICBmdW5jdGlvbiBjaGVj
a0RyYXdBcnJheXMobW9kZSwgY291bnQsIGV4cGVjdCwgbXNnKSB7CisgICAgICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2wu
ZHJhd0FycmF5cyhtb2RlLCAwLCBjb3VudCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGV4cGVjdCwgbXNnKTsKKyAgICB9CisKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
CisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworICAgIHZhciBw
cm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2
UG9zaXRpb24iXSk7CisKKyAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAg
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSww
LCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgY2hlY2tEcmF3QXJyYXlzKGdsLlRSSUFO
R0xFUywgMywKKyAgICAgICAgICAgICAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5E
cmF3QXJyYXlzIHdpdGggbm8gYnVmZmVyIGF0dGFjaGVkIHRvIFZBTyBzaG91bGQgcmV0dXJuIElO
VkFMSURfT1BFUkFUSU9OIik7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICBjaGVja0RyYXdBcnJheXMoZ2wuVFJJQU5HTEVT
LCAzLAorICAgICAgICAgICAgICAgICAgICBnbC5OT19FUlJPUiwgImNhbiBjYWxsIGdsLkRyYXdB
cnJheXMgd2l0aCBnbC5UUklBTkdMRVMiKTsKKworICAgIGNoZWNrRHJhd0FycmF5cygKKyAgICAg
ICAgZGVza3RvcEdMWydRVUFEX1NUUklQJ10sIDQsCisgICAgICAgIGdsLklOVkFMSURfRU5VTSwg
ImdsLkRyYXdBcnJheXMgd2l0aCBRVUFEX1NUUklQIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVN
Iik7CisgICAgY2hlY2tEcmF3QXJyYXlzKAorICAgICAgICBkZXNrdG9wR0xbJ1FVQURTJ10sIDQs
CisgICAgICAgIGdsLklOVkFMSURfRU5VTSwgImdsLkRyYXdBcnJheXMgd2l0aCBRVUFEUyBzaG91
bGQgcmV0dXJuIElOVkFMSURfRU5VTSIpOworICAgIGNoZWNrRHJhd0FycmF5cygKKyAgICAgICAg
ZGVza3RvcEdMWydQT0xZR09OJ10sIDQsCisgICAgICAgIGdsLklOVkFMSURfRU5VTSwgImdsLkRy
YXdBcnJheXMgd2l0aCBQT0xZR09OIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVNIik7Cit9CisK
K2luaXQoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLWRyYXdlbGVtZW50cy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVu
ZGVyaW5nL2dsLWRyYXdlbGVtZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0N2Q1MzlkYmM5NzkwZGU1
NmZlM2RhOTIzOGNmNjliZjYyNjI2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZ2wt
ZHJhd2VsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSw5NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgZHJhd0VsZW1lbnRzIFRlc3Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9kZXNrdG9wLWdsLWNvbnN0
YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlk
PSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjApOworfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQ+InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJl
eGFtcGxlIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIs
ICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0pOworCitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwg
Z2wuU1RBVElDX0RSQVcpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CitnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKK2dsLmJpbmRC
dWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGdsLmNyZWF0ZUJ1ZmZlcigpKTsKK2dsLmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShbIDAsIDEs
IDJdKSwgZ2wuU1RBVElDX0RSQVcpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
Tk9fRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJnbC5kcmF3RWxlbWVudHMoZ2wu
VFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9SVCwgMCkiKTsKKworZ2wuYnVmZmVyRGF0YShn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWyAwLCAxLCAyLCAwXSksIGds
LlNUQVRJQ19EUkFXKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xF
UywgMywgZ2wuVU5TSUdORURfQllURSwgMCkiKTsKKword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2wuZHJh
d0VsZW1lbnRzKGRlc2t0b3BHTC5RVUFEX1NUUklQLCA0LCBnbC5VTlNJR05FRF9CWVRFLCAwKSIp
Oword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZ2wuZHJhd0VsZW1lbnRzKGRlc2t0b3BHTC5RVUFEUywgNCwg
Z2wuVU5TSUdORURfQllURSwgMCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
LklOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImdsLmRyYXdFbGVtZW50
cyhkZXNrdG9wR0wuUE9MWUdPTiwgNCwgZ2wuVU5TSUdORURfQllURSwgMCkiKTsKKworZ2wuYnVm
ZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQzMkFycmF5KFsgMCwgMSwg
Ml0pLCBnbC5TVEFUSUNfRFJBVyk7CisKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigp
ID4gMSA/IGdsLk5PX0VSUk9SIDogZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5U
LCAwKSIpOworCit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX0VOVU0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVT
LCAzLCBnbC5GTE9BVCwgMCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklO
VkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImdsLmRyYXdFbGVtZW50cyhn
bC5UUklBTkdMRVMsIDMsIGdsLlNIT1JULCAwKSIpOworCisvLyBJbmRleCB2YWxpZGF0aW9uCitn
bC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoWzAs
MSwyLDIwMDAsIDQwODAyLCA1ODg3OTkyXSksIGdsLlNUQVRJQ19EUkFXKTsKK3d0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURf
U0hPUlQsIDEpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgImdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMs
IDIsIGdsLlVOU0lHTkVEX1NIT1JULCAyKSIpOwordmFyIGluZGV4VmFsaWRhdGlvbkVycm9yID0g
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURfT1BFUkFUSU9OLCBnbC5O
T19FUlJPUl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJnbC5kcmF3RWxlbWVudHMoZ2wu
VFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9SVCwgMikiKTsKK3d0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfU0hPUlQs
IDMpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBpbmRleFZhbGlkYXRpb25FcnJv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdM
RVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJn
bC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA3LCBnbC5VTlNJR05FRF9TSE9SVCwgMCkiKTsK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwg
Z2wuVU5TSUdORURfU0hPUlQsIDIpIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLXNjaXNz
b3ItY2FudmFzLWRpbWVuc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9nbC1zY2lzc29yLWNhbnZhcy1k
aW1lbnNpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyZjJiYWYzMDA5N2RiZmUzYTViZGFiZjUyNDFk
NWRlZGJkNzNiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9nbC1zY2lzc29yLWNhbnZh
cy1kaW1lbnNpb25zLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2Npc3NvciBDYW52YXMgRGlt
ZW5zaW9ucyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorY2FudmFzIHsKKyAgICBib3JkZXI6IDFweCBz
b2xpZCAjMDAwOworICAgIHdpZHRoOiA2NHB4OworICAgIGhlaWdodDogNjRweDsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhczEiIHdpZHRoPSIxNiIgaGVp
Z2h0PSIxNiI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMiIgd2lkdGg9IjE2IiBoZWln
aHQ9IjE2Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigi
Q2hlY2sgdGhhdCBzY2lzc29yaW5nIGlzIGluaXRpYWxseSBkaXNhYmxlZCBhbmQgdGhhdCB0aGUg
c2Npc3NvciByZWN0IGRvZXMgbm90IGNoYW5nZSB3aGVuIGNhbnZhcyBzaXplIGNoYW5nZXMuIik7
CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKworZnVuY3Rpb24gdGVzdEluaXQoY2FudmFz
LCBhdHRyaWJzKSB7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBhdHRy
aWJzKTsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhp
c3QiKTsKKyAgICByZXR1cm47CisgIH0KKyAgZGVidWcoIlRlc3RpbmcgdGhhdCBzY2lzc29yIHRl
c3QgaXMgaW5pdGlhbGx5IGRpc2FibGVkIik7CisgIC8vIFNldHRpbmcgdGhlIHNjaXNzb3IgcmVj
dCBzaG91bGQgaGF2ZSBubyBlZmZlY3Qgb24gZHJhd2luZy4KKyAgZ2wuc2Npc3NvcigwLCAwLCAx
LCAxKTsKKyAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhl
cmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAw
LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIFswLCAyNTUsIDAsIDI1NV0sICJ3aG9sZSBj
YW52YXMgc2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYW52YXNTaXplQ2hh
bmdlKGNhbnZhcywgYXR0cmlicykgeworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNh
bnZhcywgYXR0cmlicyk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRv
ZXMgbm90IGV4aXN0Iik7CisgICAgcmV0dXJuOworICB9CisgIGRlYnVnKCJUZXN0aW5nIHRoYXQg
c2Npc3NvciByZWN0IGRpbWVuc2lvbnMgZG8gbm90IGNoYW5nZSBpZiB0aGUgY2FudmFzIGlzIHJl
c2l6ZWQuIik7CisgIGNhbnZhcy53aWR0aCA9IDMyOworICBjYW52YXMuaGVpZ2h0ID0gMzI7Cisg
IGdsLnZpZXdwb3J0KDAsIDAsIDMyLCAzMik7CisgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1Qp
OworICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBz
aG91bGQgYmUgbm8gZXJyb3JzIik7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDE2
LCAxNiwgWzAsIDI1NSwgMCwgMjU1XSwgImFyZWEgaW5zaWRlIHNjaXNzb3Igc2hvdWxkIGJlIGdy
ZWVuIik7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDE2LCAzMiwgMTYsIFswLCAwLCAw
LCAwXSwgImFyZWEgb3V0c2lkZSBzY2lzc29yIHNob3VsZCBiZSBibGFjayIpOworICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCAxNiwgMCwgMTYsIDE2LCBbMCwgMCwgMCwgMF0sICJhcmVhIG91dHNp
ZGUgc2Npc3NvciBzaG91bGQgYmUgYmxhY2siKTsKK30KKwordGVzdEluaXQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhczEiKSwge2FudGlhbGlhczogZmFsc2V9KTsKK2RlYnVnKCIiKTsK
K3Rlc3RDYW52YXNTaXplQ2hhbmdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMyIiks
IHthbnRpYWxpYXM6IGZhbHNlfSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZ2wtc2Npc3Nv
ci1mYm8tdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLXNjaXNzb3ItZmJvLXRlc3QuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYmUyYjE2ODliNmZhZDM0YmM4MmM4YTQ1NmZhYjY2YjhlYTczZDg0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLXNjaXNzb3ItZmJvLXRlc3QuaHRtbApAQCAtMCwwICsx
LDExMCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgU2Npc3NvciBGQk8gVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0eWxlPSJ3aWR0aDogNDBw
eDsgaGVpZ2h0OiA0MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oIkNoZWNrcyB0aGUgc2Npc3NvciBkb2VzIG5vdCBjaGFuZ2Ugd2hlbiBzd2l0Y2hp
bmcgZnJhbWVidWZmZXJzLiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0
aW9uIG1ha2VGcmFtZWJ1ZmZlcih3aWR0aCwgaGVpZ2h0KSB7CisgIHZhciB0ZXggPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIHZhciBmYiA9IGdsLmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIp
OworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgIHNob3VsZEJlKCdnbC5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01QTEVU
RScpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICByZXR1
cm4gZmI7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ2FudmFzUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBjb2xvciwgbXNnKSB7CisgIGRlYnVnKCJjaGVja2luZzogIiArIHggKyAiLCAiICsgeSArICIs
ICIgKyB3aWR0aCArICIsICIgKyBoZWlnaHQpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwgbXNnKTsKK30KKwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgiY2FudmFzIiwge2FudGlhbGlhczogZmFsc2V9KTsKK2lmICghZ2wpIHsKKyAg
dGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBh
c3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICB2YXIgZmI4eDggPSBtYWtlRnJhbWVidWZmZXIo
OCwgOCk7CisgIHZhciBmYjMyeDMyID0gbWFrZUZyYW1lYnVmZmVyKDMyLCAzMik7CisKKyAgdmFy
IHRlc3RTY2lzc29yID0gZnVuY3Rpb24oc2Npc3NvclgsIHNjaXNzb3JZLCBzY2lzc29yV2lkdGgs
IHNjaXNzb3JIZWlnaHQsIG1zZykgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zyhtc2cpOwor
CisgICAgdmFyIHRlc3QgPSBmdW5jdGlvbihmYiwgc2l6ZSkgeworICAgICAgZGVidWcoIiIpOwor
ICAgICAgZGVidWcoImNoZWNraW5nIHNpemU6ICIgKyBzaXplKTsKKyAgICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAgICAgZ2wuY2xlYXJDb2xvcigwLCAxLCAw
LCAxKTsKKyAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgdmFyIHNj
aXNzb3JSaWdodCA9IE1hdGgubWluKHNjaXNzb3JYICsgc2Npc3NvcldpZHRoLCBzaXplKTsKKyAg
ICAgIHZhciBzY2lzc29yVG9wID0gTWF0aC5taW4oc2Npc3NvclkgKyBzY2lzc29ySGVpZ2h0LCBz
aXplKTsKKyAgICAgIHZhciBzY1dpZHRoID0gc2Npc3NvclJpZ2h0IC0gc2Npc3Nvclg7CisgICAg
ICB2YXIgc2NIZWlnaHQgPSBzY2lzc29yVG9wIC0gc2Npc3Nvclk7CisgICAgICB2YXIgcmlnaHRX
aWR0aCA9IE1hdGgubWluKHNpemUgLSBzY2lzc29yUmlnaHQsIDApOworICAgICAgdmFyIHRvcEhl
aWdodCA9IE1hdGgubWF4KHNpemUgLSBzY2lzc29yVG9wLCAwKTsKKyAgICAgIGNoZWNrQ2FudmFz
UmVjdChzY2lzc29yWCwgc2Npc3NvclksIHNjV2lkdGgsIHNjSGVpZ2h0LCBbMCwgMjU1LCAwLCAy
NTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisgICAgICBjaGVja0NhbnZhc1JlY3QoMCwgMCwgc2l6
ZSwgc2Npc3NvclksIFsyNTUsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgcmVkIik7CisgICAgICBj
aGVja0NhbnZhc1JlY3QoMCwgc2Npc3NvclRvcCwgc2l6ZSwgdG9wSGVpZ2h0LCBbMjU1LCAwLCAw
LCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworICAgICAgY2hlY2tDYW52YXNSZWN0KDAsIDAsIHNj
aXNzb3JYLCBzaXplLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworICAgICAg
Y2hlY2tDYW52YXNSZWN0KHNjaXNzb3JSaWdodCwgMCwgc2Npc3NvclgsIHJpZ2h0V2lkdGgsIFsy
NTUsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgcmVkIik7CisgICAgfTsKKworICAgIGdsLmRpc2Fi
bGUoZ2wuU0NJU1NPUl9URVNUKTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYjh4OCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjMyeDMyKTsKKyAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmIzMngzMik7CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgZ2wu
c2Npc3NvcihzY2lzc29yWCwgc2Npc3NvclksIHNjaXNzb3JXaWR0aCwgc2Npc3NvckhlaWdodCk7
CisgICAgdGVzdChudWxsLCAxNik7CisgICAgdGVzdChmYjh4OCwgOCk7CisgICAgdGVzdChmYjMy
eDMyLCAzMik7CisgICAgdGVzdChudWxsLCAxNik7CisgIH07CisKKyAgdGVzdFNjaXNzb3IoMiwg
NCwgMTIsIDEwLCAidGVzdCBzY2lzc29yIGluIG1pZGRsZSIpOworICB0ZXN0U2Npc3NvcigwLCAw
LCAxMiwgMTAsICJ0ZXN0IHNjaXNzb3IgYXQgMCwwIik7CisgIHRlc3RTY2lzc29yKDAsIDAsIDE2
LCAxNiwgInRlc3Qgc2Npc3NvciB3aXRoIHNpemUgdGhhdCBtYXRjaGVzIGRyYXdpbmdidWZmZXIi
KTsKKworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3Vs
ZCBiZSBubyBlcnJvcnMiKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcv
Z2wtc2Npc3Nvci10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvZ2wtc2Npc3Nvci10ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmU3OGUwNDUyZTNmOWVhNGYyMGIzYWY1MTZhZDRlZTEzNmE0NmY0OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3JlbmRlcmluZy9nbC1zY2lzc29yLXRlc3QuaHRtbApAQCAtMCwwICsxLDk1
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBTY2lzc29yIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitjYW52YXMgeworICAgIGJvcmRl
cjogMXB4IHNvbGlkICMwMDA7CisgICAgd2lkdGg6IDY0cHg7CisgICAgaGVpZ2h0OiA2NHB4Owor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzMSIgd2lkdGg9
IjE2IiBoZWlnaHQ9IjE2Ij4gPC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyIiB3aWR0aD0i
MTYiIGhlaWdodD0iMTYiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCJDaGVjayBpZiBnbFNjaXNzb3Igc2V0dGluZyB3b3Jrcy4iKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworCitmdW5jdGlvbiB0ZXN0KGNhbnZhcywgYXR0cmlicykgeworICB2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgYXR0cmlicyk7CisKKyAgZnVuY3Rp
b24gdGVzdChmdW5jKSB7CisgICAgZ2wuZGlzYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgIGds
LmNsZWFyQ29sb3IoMCwwLDAsMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICB2YXIgc2l6ZSA9IDE2Owor
ICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzaXplOyArK2lpKSB7CisgICAgICAvLyBjbGVhciBh
IHBvcnRpb24gb2YgdGhlIFdlYkdMIGRyYXdpbmcgYnVmZmVyCisgICAgICBnbC5zY2lzc29yKGlp
LCBpaSwgMSwgMSk7CisgICAgICBmdW5jKCk7CisgICAgfQorCisgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IHNpemU7ICsraWkpIHsKKyAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIGlp
LCBpaSwgMSwgWzAsIDAsIDAsIDBdLCAic2hvdWxkIGJlIGJsYWNrIik7CisgICAgICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCBpaSwgaWksIDEsIDEsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQg
YmUgZ3JlZW4iKTsKKyAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGlpICsgMSwgaWksIHNp
emUgLSBpaSAtIDEsIDEsIFswLCAwLCAwLCAwXSwgInNob3VsZCBiZSBibGFjayIpOworICAgIH0K
KyAgfQorCisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdCB3aXRoIGNsZWFyIik7CisgICAgdGVzdChm
dW5jdGlvbigpIHsKKyAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwgMCwgMSk7CisgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9KTsKKworICAgIHd0dS5zZXR1cENvbG9y
UXVhZChnbCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3Qgd2l0aCBkcmF3Iik7
CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgIHd0dS5kcmF3RmxvYXRDb2xvclF1YWQoZ2ws
IFswLCAxLCAwLCAxXSk7CisgICAgfSk7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgfQorfQorCitkZWJ1
ZygidGVzdCBhbnRpYWxpYXM6IGZhbHNlIik7Cit0ZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMxIiksIHthbnRpYWxpYXM6IGZhbHNlfSk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJ0
ZXN0IGFudGlhbGlhczogdHJ1ZSIpOwordGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzMiIpLCB7YW50aWFsaWFzOiB0cnVlfSk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9y
ZW5kZXJpbmcvZ2wtdmlld3BvcnQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLXZpZXdwb3J0LXRl
c3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNTY1ODgwOThmN2Y3YWNiYjg1NmM2MDhmYmM3OTE3MzA2ZDZh
YzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2dsLXZpZXdwb3J0LXRlc3QuaHRtbApA
QCAtMCwwICsxLDExMiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmlld3BvcnQgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2NhbnZh
cyB7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhczEiIHdpZHRoPSI2NCIgaGVpZ2h0PSIxMjgiPiA8L2Nh
bnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczIiIHdpZHRoPSI2NCIgaGVpZ2h0PSIxMjgiPiA8L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0aW9uIHRlc3QoY2FudmFzLCBhdHRyaWJzKSB7CisgIHZh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBhdHRyaWJzKTsKKworICBpZiAoIWds
KSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICB9IGVsc2Ug
eworICAgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgICB2YXIgYmx1ZSA9IFsw
LCAwLCAyNTUsIDI1NV07CisgICAgdmFyIGJsYWNrID0gWzAsIDAsIDAsIDBdOworCisgICAgdmFy
IGRyYXcgPSBmdW5jdGlvbih2aWV3cG9ydFgsIHZpZXdwb3J0WSwgdmlld3BvcnRXaWR0aCwgdmll
d3BvcnRIZWlnaHQpIHsKKyAgICAgIGdsLnZpZXdwb3J0KHZpZXdwb3J0WCwgdmlld3BvcnRZLCB2
aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKKyAgICAgIHd0dS5kcmF3VUJ5dGVDb2xvclF1YWQoZ2wsIGJsdWUpOworICAg
IH07CisKKyAgICB2YXIgZHJhd0FuZENoZWNrID0gZnVuY3Rpb24odmlld3BvcnRYLCB2aWV3cG9y
dFksIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSB7CisgICAgICB2YXIgY2xpcFNwYWNl
VG9QaXhlbFNwYWNlID0gZnVuY3Rpb24oY2xpcCwgdmlld3BvcnRPZmZzZXQsIHZpZXdwb3J0U2l6
ZSwgbWF4KSB7CisgICAgICAgIHZhciBwaXhlbCA9IHZpZXdwb3J0U2l6ZSAvIDIgKiBjbGlwICsg
dmlld3BvcnRPZmZzZXQgKyB2aWV3cG9ydFNpemUgLyAyOworICAgICAgICByZXR1cm4gTWF0aC5t
aW4obWF4LCBNYXRoLm1heCgwLCBwaXhlbCkpOworICAgICAgfTsKKworICAgICAgdmFyIHgxID0g
Y2xpcFNwYWNlVG9QaXhlbFNwYWNlKC0wLjUsIHZpZXdwb3J0WCwgdmlld3BvcnRXaWR0aCwgZ2wu
Y2FudmFzLndpZHRoKTsKKyAgICAgIHZhciB4MiA9IGNsaXBTcGFjZVRvUGl4ZWxTcGFjZSggMC41
LCB2aWV3cG9ydFgsIHZpZXdwb3J0V2lkdGgsIGdsLmNhbnZhcy53aWR0aCk7CisgICAgICB2YXIg
eTEgPSBjbGlwU3BhY2VUb1BpeGVsU3BhY2UoLTAuNSwgdmlld3BvcnRZLCB2aWV3cG9ydEhlaWdo
dCwgZ2wuY2FudmFzLmhlaWdodCk7CisgICAgICB2YXIgeTIgPSBjbGlwU3BhY2VUb1BpeGVsU3Bh
Y2UoIDAuNSwgdmlld3BvcnRZLCB2aWV3cG9ydEhlaWdodCwgZ2wuY2FudmFzLmhlaWdodCk7Cisg
ICAgICB2YXIgd2lkdGggPSB4MiAtIHgxOworICAgICAgdmFyIGhlaWdodCA9IHkyIC0geTE7CisK
KyAgICAgIGRlYnVnKCJjaGVja2luZyB2aWV3cG9ydDogIiArIHZpZXdwb3J0WCArICIsICIgKyB2
aWV3cG9ydFkgKyAiLCAiICsgdmlld3BvcnRXaWR0aCArICIsICIgKyB2aWV3cG9ydEhlaWdodCk7
CisgICAgICBkZWJ1ZygicmVjdDogIiArIHgxICsgIiwgIiArIHkxICsgIiwgIiArIHdpZHRoICsg
IiwgIiArIGhlaWdodCk7CisgICAgICBkcmF3KHZpZXdwb3J0WCwgdmlld3BvcnRZLCB2aWV3cG9y
dFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgICB3dHUuY2hlY2tBcmVhSW5BbmRPdXQoZ2ws
IHgxLCB5MSwgd2lkdGgsIGhlaWdodCwgYmx1ZSwgYmxhY2spOworICAgIH07CisKKyAgICB2YXIg
cHJvZ3JhbSA9IHd0dS5zZXR1cFNpbXBsZUNvbG9yUHJvZ3JhbShnbCk7CisgICAgd3R1LnNldHVw
UXVhZChnbCwge3NjYWxlOiAwLjV9KTsKKworICAgIHZhciB3ID0gZ2wuY2FudmFzLndpZHRoOwor
ICAgIHZhciBoID0gZ2wuY2FudmFzLmhlaWdodDsKKworICAgIGRyYXdBbmRDaGVjaygwLCAwLCB3
LCBoKTsKKyAgICBkcmF3QW5kQ2hlY2soMCwgMCwgdy8yLCBoLzQpOworICAgIGRyYXdBbmRDaGVj
aygwLCAwLCB3LzQsIGgvMik7CisgICAgZHJhd0FuZENoZWNrKDAsIDAsIHcqMiwgaCoyKTsKKwor
ICAgIGRyYXdBbmRDaGVjaygtdywgMCwgdywgaCk7CisgICAgZHJhd0FuZENoZWNrKDAsIC1oLCB3
LCBoKTsKKyAgICBkcmF3QW5kQ2hlY2sodywgMCwgdywgaCk7CisgICAgZHJhd0FuZENoZWNrKDAs
IGgsIHcsIGgpOworCisgICAgZHJhd0FuZENoZWNrKHcvNCwgaC8yLCB3LCBoKTsKKyAgICBkcmF3
QW5kQ2hlY2sody80LCBoLzIsIHcvMiwgaC80KTsKKyAgICBkcmF3QW5kQ2hlY2sody8yLCBoLzQs
IHcvNCwgaC8yKTsKKyAgICBkcmF3QW5kQ2hlY2sody8yLCBoLzQsIHcsIGgqMik7CisKKyAgICBk
cmF3QW5kQ2hlY2soLXcsIDAsIHcqMiwgaCk7CisgICAgZHJhd0FuZENoZWNrKDAsIC1oLzQsIHcv
MiwgaCk7CisgICAgZHJhd0FuZENoZWNrKC13LzQsIDAsIHcsIGgvMik7CisgICAgZHJhd0FuZENo
ZWNrKDAsIC1oLCB3KjIsIGgqMik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cisg
IH0KK30KKworZGVidWcoInRlc3QgYW50aWFsaWFzOiBmYWxzZSIpOwordGVzdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpLCB7YW50aWFsaWFzOiBmYWxzZX0pOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygidGVzdCBhbnRpYWxpYXM6IHRydWUiKTsKK3Rlc3QoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhczIiKSwge2FudGlhbGlhczogdHJ1ZX0pOworCitkZWJ1ZygiIik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvcmVuZGVyaW5nL2xpbmUtbG9vcC10cmktZmFuLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcv
bGluZS1sb29wLXRyaS1mYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDI0MTU3ZmM5ZWI3ZTg1NTM2ZjBi
ZTVmZDM4NTRiY2Q2NzRiZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2xpbmUtbG9v
cC10cmktZmFuLmh0bWwKQEAgLTAsMCArMSwyMjkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMiBwb3M7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBp
ZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEs
IDAsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7CisKKy8vIENoZWNrIGEgc2luZ2xlIDMyLWJpdCBSR0JBIHBpeGVs
LgorZnVuY3Rpb24gY2hlY2tQaXhlbChidWYsIGluZGV4LCBjb3JyZWN0KSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKGJ1ZltpbmRleCArIGldICE9IGNv
cnJlY3RbaV0pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQ2hlY2sgdGhlIGxpbmUgbG9vcCBieSByZWFkaW5n
IHRoZSBwaXhlbHMgYW5kIG1ha2luZyBzdXJlIGp1c3QgdGhlIGVkZ2UKKy8vIHBpeGVscyBhcmUg
Z3JlZW4gYW5kIHRoZSByZXN0IGFyZSBibGFjay4KK2Z1bmN0aW9uIGNoZWNrTGluZUxvb3AoZ2ws
IHcpIHsKKyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodyAqIHcgKiA0KTsKKyAgICBnbC5y
ZWFkUGl4ZWxzKDAsIDAsIHcsIHcsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7Cisg
ICAgdmFyIGdyZWVuID0gWzAsMjU1LDAsMjU1XTsKKyAgICB2YXIgYmxhY2sgPSBbMCwwLDAsMjU1
XTsKKyAgICB2YXIgaXNDb3JyZWN0ID0gdHJ1ZTsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IHcg
KiB3ICogNDsgaiArPSA0KSB7CisgICAgICAgIHZhciBjb3JyZWN0ID0gYmxhY2s7CisgICAgICAg
IGlmIChqIDwgdyAqIDQgfHwgaiA+IHcgKiAodyAtIDEpICogNCB8fCBqICUgKHcgKiA0KSA9PSAw
IHx8IGogJSAodyAqIDQpID09ICh3IC0gMSkgKiA0KSB7CisgICAgICAgICAgICBjb3JyZWN0ID0g
Z3JlZW47CisgICAgICAgIH0KKyAgICAgICAgLy8gaWdub3JlIGNvcm5lciBwaXhlbHMKKyAgICAg
ICAgaWYgKChqID09IDApIHx8IChqID09IDQqKHctMSkpIHx8IChqID09IDQqdyoody0xKSkgfHwg
KGo9PSA0Kih3KncgLSAxKSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICghY2hlY2tQaXhlbChidWYsIGosIGNvcnJlY3QpKSB7CisgICAgICAgICAgICBp
c0NvcnJlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIGlmIChpc0NvcnJlY3QpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTGluZSBsb29wIHdhcyBk
cmF3biBjb3JyZWN0bHkuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTGlu
ZSBsb29wIHdhcyBkcmF3biBpbmNvcnJlY3RseS4iKTsKKyAgICB9Cit9CisKKy8vIENoZWNrIHRo
ZSB0cmkgZmFuIGJ5IHJlYWRpbmcgdGhlIHBpeGVscyBhbmQgbWFraW5nIHN1cmUgdGhleSBhcmUg
YWxsIGdyZWVuLgorZnVuY3Rpb24gY2hlY2tUcmlGYW4oZ2wsIHcpIHsKKyAgICB2YXIgYnVmID0g
bmV3IFVpbnQ4QXJyYXkodyAqIHcgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHcsIHcs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgdmFyIGZpbGxlZCA9IHRydWU7
CisgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3ICogdyAqIDQ7IGogKz0gNCkgeworICAgICAgICBp
ZiAoIWNoZWNrUGl4ZWwoYnVmLCBqLCBbMCwyNTUsMCwyNTVdKSkgeworICAgICAgICAgICAgZmls
bGVkID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoZmlsbGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlRyaWFuZ2xlIGZhbiB3YXMgZHJhd24g
Y29ycmVjdGx5LiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRyaWFuZ2xl
IGZhbiB3YXMgZHJhd24gaW5jb3JyZWN0bHkuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ3Rlc3RiZWQnLCB7IGFu
dGlhbGlhczogZmFsc2UgfSk7CisgICAgaWYgKCFnbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCdj
b3VsZCBub3QgY3JlYXRlIGNvbnRleHQnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBn
bC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydwb3MnXSkKKyAgICB2YXIgdyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0YmVkJykud2lkdGg7CisKKyAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgIC8vLS0tLS0tLS0tLSBMSU5FX0xPT1AtLS0tLS0t
LS0tCisgICAgdmFyIGQgPSAxL3c7CisgICAgdmFyIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJh
eShbLTErZCwgLTErZCwgMS1kLCAtMStkLCAxLWQsIDEtZCwgLTErZCwgMS1kXSk7CisgICAgdmFy
IHZlcnRCdWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZ
X0JVRkZFUiwgdmVydEJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZl
cnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAy
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIHZhciBpbmRCdWYgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShbMCwgMSwgMiwgM10pOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZEJ1Zik7CisgICAg
Z2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElD
X0RSQVcpOworCisgICAgZGVidWcoJ0RyYXcgYSBzcXVhcmUgdXNpbmcgYSBsaW5lIGxvb3AgYW5k
IHZlcmlmeSB0aGF0IGl0IGRyYXdzIGFsbCBmb3VyIHNpZGVzIGFuZCBub3RoaW5nIGVsc2UuJyk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgIGdsLmRyYXdBcnJheXMoZ2wuTElORV9MT09QLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAy
KTsKKyAgICBjaGVja0xpbmVMb29wKGdsLCB3KTsKKworICAgIGRlYnVnKCdEcmF3IGEgc3F1YXJl
IHVzaW5nIGFuIGluZGV4ZWQgbGluZSBsb29wIGFuZCB2ZXJpZnkgdGhhdCBpdCBkcmF3cyBhbGwg
Zm91ciBzaWRlcyBhbmQgbm90aGluZyBlbHNlLicpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wu
TElORV9MT09QLCBpbmRpY2VzLmxlbmd0aCwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIGNo
ZWNrTGluZUxvb3AoZ2wsIHcpOworCisgICAgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KFsw
LCAwLCAwLCAwLCAwLCAwLCAtMStkLCAtMStkLCAxLWQsIC0xK2QsIDEtZCwgMS1kLCAtMStkLCAx
LWRdKTsKKyAgICB2ZXJ0QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZlcnRCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBpbmRCdWYgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKKyAgICBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyLCAzLCA0
LCA1LCA2XSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5k
QnVmKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2Vz
LCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIHNxdWFyZSB1c2luZyBhIGxp
bmUgbG9vcCB3aXRoIGEgdmVydGV4IGJ1ZmZlciBvZmZzZXQgYW5kIHZlcmlmeSB0aGF0IGl0IGRy
YXdzIGFsbCBmb3VyIHNpZGVzIGFuZCBub3RoaW5nIGVsc2UuJyk7CisgICAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJh
eXMoZ2wuTElORV9MT09QLCAzLCB2ZXJ0aWNlcy5sZW5ndGggLyAyIC0gMyk7CisgICAgY2hlY2tM
aW5lTG9vcChnbCwgdyk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIHNxdWFyZSB1c2luZyBhbiBpbmRl
eGVkIGxpbmUgbG9vcCB3aXRoIGFuIGluZGV4IGJ1ZmZlciBvZmZzZXQgYW5kIHZlcmlmeSB0aGF0
IGl0IGRyYXdzIGFsbCBmb3VyIHNpZGVzIGFuZCBub3RoaW5nIGVsc2UuJyk7CisgICAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRy
YXdFbGVtZW50cyhnbC5MSU5FX0xPT1AsIGluZGljZXMubGVuZ3RoIC0gMywgZ2wuVU5TSUdORURf
U0hPUlQsIDMgKiAyKTsKKyAgICBjaGVja0xpbmVMb29wKGdsLCB3KTsKKworICAgIC8vLS0tLS0t
LS0tLSBMSU5FX0xPT1AgVUJZVEUgLS0tLS0tLS0tLQorICAgIHZhciBkZWdlblZlcnRzID0gbmV3
IEFycmF5KDI1MiAqIDIpOworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMjUyICogMjsgKytqKSB7
CisgICAgICAgIGRlZ2VuVmVydHNbal0gPSAtMStkOworICAgIH0KKyAgICBkZWdlblZlcnRzID0g
ZGVnZW5WZXJ0cy5jb25jYXQoWy0xK2QsIC0xK2QsIDEtZCwgLTErZCwgMS1kLCAxLWQsIC0xK2Qs
IDEtZF0pOworICAgIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShkZWdlblZlcnRzKTsKKyAg
ICB2ZXJ0QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIHZlcnRCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwg
MiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBpbmRCdWYgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKKyAgICB2YXIgZGVnZW5JbmQgPSBuZXcgQXJyYXkoMjUyKTsKKyAgICBmb3IgKHZhciBqID0g
MDsgaiA8IDI1MjsgKytqKSB7CisgICAgICAgIGRlZ2VuSW5kW2pdID0gajsKKyAgICB9CisgICAg
ZGVnZW5JbmQgPSBkZWdlbkluZC5jb25jYXQoWzI1MiwgMjUzLCAyNTQsIDI1NV0pOworICAgIGlu
ZGljZXMgPSBuZXcgVWludDE2QXJyYXkoZGVnZW5JbmQpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZEJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOworCisgICAgZGVidWco
J0RyYXcgYSBzcXVhcmUgdXNpbmcgYW4gdWJ5dGUgaW5kZXhlZCBsaW5lIGxvb3Agd2l0aCAyNTYg
aW5kaWNlcyBhbmQgdmVyaWZ5IHRoYXQgaXQgZHJhd3MgYWxsIGZvdXIgc2lkZXMgYW5kIG5vdGhp
bmcgZWxzZS4nKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLkxJTkVfTE9PUCwgaW5kaWNlcy5s
ZW5ndGgsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICBjaGVja0xpbmVMb29wKGdsLCB3KTsK
KworICAgIC8vLS0tLS0tLS0tLSBUUklBTkdMRV9GQU4gLS0tLS0tLS0tLQorICAgIHZlcnRpY2Vz
ID0gbmV3IEZsb2F0MzJBcnJheShbMCwgMCwgLTEsIC0xLCAxLCAtMSwgMSwgMSwgLTEsIDEsIC0x
LCAtMV0pOworICAgIHZlcnRCdWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydEJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGluZGljZXMgPSBuZXcg
VWludDE2QXJyYXkoWzAsMSwyLDMsNCw1XSk7CisgICAgaW5kQnVmID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kQnVmKTsK
KyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIGZpbGxlZCBzcXVhcmUgdXNpbmcgYSB0
cmlhbmdsZSBmYW4gYW5kIHZlcmlmeSB0aGF0IGl0IGZpbGxzIHRoZSBlbnRpcmUgY2FudmFzLicp
OworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklU
KTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFX0ZBTiwgMCwgdmVydGljZXMubGVuZ3Ro
IC8gMik7CisgICAgY2hlY2tUcmlGYW4oZ2wsIHcpOworCisgICAgZGVidWcoJ0RyYXcgYSBmaWxs
ZWQgc3F1YXJlIHVzaW5nIGFuIGluZGV4ZWQgdHJpYW5nbGUgZmFuIGFuZCB2ZXJpZnkgdGhhdCBp
dCBmaWxscyB0aGUgZW50aXJlIGNhbnZhcy4nKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFX0ZBTiwgaW5kaWNlcy5sZW5ndGgsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICBj
aGVja1RyaUZhbihnbCwgdyk7CisKKyAgICB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWzEs
IDEsIDEsIDEsIDEsIDEsIDAsIDAsIC0xLCAtMSwgMSwgLTEsIDEsIDEsIC0xLCAxLCAtMSwgLTFd
KTsKKyAgICB2ZXJ0QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIHZlcnRCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCB2ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50
ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBpbmRpY2VzID0gbmV3IFVpbnQx
NkFycmF5KFswLDEsMiwzLDQsNSw2LDcsOF0pOworICAgIGluZEJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZEJ1Zik7
CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgZGVidWcoJ0RyYXcgYSBmaWxsZWQgc3F1YXJlIHVzaW5nIGEg
dHJpYW5nbGUgZmFuIHdpdGggYSB2ZXJ0ZXggYnVmZmVyIG9mZnNldCBhbmQgdmVyaWZ5IHRoYXQg
aXQgZmlsbHMgdGhlIGVudGlyZSBjYW52YXMuJyk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJ
QU5HTEVfRkFOLCAzLCB2ZXJ0aWNlcy5sZW5ndGggLyAyIC0gMyk7CisgICAgY2hlY2tUcmlGYW4o
Z2wsIHcpOworCisgICAgZGVidWcoJ0RyYXcgYSBmaWxsZWQgc3F1YXJlIHVzaW5nIGFuIGluZGV4
ZWQgdHJpYW5nbGUgZmFuIHdpdGggYW4gaW5kZXggYnVmZmVyIG9mZnNldCBhbmQgdmVyaWZ5IHRo
YXQgaXQgZmlsbHMgdGhlIGVudGlyZSBjYW52YXMuJyk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdFbGVtZW50cyhn
bC5UUklBTkdMRV9GQU4sIGluZGljZXMubGVuZ3RoIC0gMywgZ2wuVU5TSUdORURfU0hPUlQsIDMg
KiAyKTsKKyAgICBjaGVja1RyaUZhbihnbCwgdyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0idGVzdGJlZCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBzdHlsZT0i
d2lkdGg6NTBweDsgaGVpZ2h0OjUwcHgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oJ1ZlcmlmeSB0aGF0IExJTkVfTE9PUCBhbmQgVFJJQU5HTEVfRkFOIHdv
cmtzIGNvcnJlY3RseS4nKTsKK3J1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2xpbmUt
cmVuZGVyaW5nLXF1YWxpdHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9saW5lLXJlbmRlcmluZy1xdWFsaXR5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTVmYWEwMmMyYjg1ZTNhMWNlNDZkMTdmYmU4YmRlOThjZDMzOWY3
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9saW5lLXJlbmRlcmluZy1xdWFsaXR5Lmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+TGluZSBy
ZW5kZXJpbmcgcXVhbGl0eSB0ZXN0PC90aXRsZT4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkMiIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNvbnRleHRWZXJzaW9uID0gMTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2xpbmUtcmVuZGVyaW5nLXF1YWxpdHkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNh
bGxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMw
YTIyMzJjZWEyOGE5NDM1NTZkZmRlYWFiZTk4Y2MzZjk2OTNiMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbApAQCAtMCwwICsxLDEzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgordW5pZm9ybSBt
YXQ0IHRyYW5zZm9ybU1hdHJpeDsKK3VuaWZvcm0gdmVjMyBwb3NpdGlvbk9mZnNldDsKK2F0dHJp
YnV0ZSB2ZWMyIGFQb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB0cmFu
c2Zvcm1NYXRyaXggKiB2ZWM0KGFQb3NpdGlvbiwgMC4wLCAxLjApICsgdmVjNChwb3NpdGlvbk9m
ZnNldCwgMC4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+Cit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitlbmFibGVKU1Rlc3RQcmVWZXJib3NlTG9nZ2luZygpOworZGVzY3JpcHRpb24oIlRlc3QgbWFu
eSBkcmF3IGNhbGxzIGFuZCB1bmlmb3JtIHVwZGF0ZXMgcGVyIGZyYW1lIik7CisKK2RlYnVnKCdS
ZWdyZXNzaW9uIHRlc3QgZm9yIENocm9taXVtIDxhIGhyZWY9Imh0dHA6Ly9jcmJ1Zy5jb20vMzIw
NzI0Ij5Jc3N1ZSAzMjA3MjQ8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vY3JidWcuY29tLzMyMjcy
NiI+SXNzdWUgMzIyNzI2PC9hPicpOworZGVidWcoJycpOworCit2YXIgY29udGV4dFdhc0xvc3Qg
PSBmYWxzZTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoY2FudmFzKTsKK2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCd3ZWJnbGNvbnRleHRsb3N0Jywg
ZnVuY3Rpb24oZXZlbnQpIHsgY29udGV4dFdhc0xvc3QgPSB0cnVlOyB9LCBmYWxzZSk7Cit2YXIg
cHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsg
ImFQb3NpdGlvbiIgXSk7CitpZiAoIXByb2dyYW0pIHsKKyAgdGVzdEZhaWxlZCgiZmFpbGVkIHRv
IGNyZWF0ZSB0ZXN0IHByb2dyYW0iKTsKK30KKworZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKK3Zh
ciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7
CisKKy8vIEluaXRpYWxpemUgdmVydGljZXMKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgIC0xLjAsICAxLjAsCisgICAgMS4wLCAtMS4wLAorICAg
IDEuMCwgIDEuMCwKKyAgIC0xLjAsICAxLjAsCisgICAtMS4wLCAtMS4wLAorICAgIDEuMCwgLTEu
MCBdKSwgZ2wuU1RBVElDX0RSQVcpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworCitnbC5jbGVhckNvbG9yKDAuMywgMC4zLCAwLjMsIDEuMCk7
CisKKy8vIEluaXRpYWxpemUgdW5pZm9ybXMKK3ZhciB0cmFuc2Zvcm1Mb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3RyYW5zZm9ybU1hdHJpeCcpOwordmFyIG9mZnNldExvYyA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAncG9zaXRpb25PZmZzZXQnKTsKKworLy8g
VGhpcyBtYW55IGRyYXcgY2FsbHMgYXBwZWFyIHRvIGJlIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHRo
ZSBvcmlnaW5hbCBidWcgcmVsaWFibHkuCit2YXIgdGlsZXNQZXJTaWRlID0gMTAwOwordmFyIG51
bURyYXdzVGhpc0ZyYW1lID0gMDsKKwordmFyIGRvTmV4dERyYXcgPSBmdW5jdGlvbigpIHsKKyAg
Ly8gU29tZXRpbWVzLCB0aGUgb3JpZ2luYWwgYnVnIGNhbid0IGJlIGNhdWdodCBjb29wZXJhdGl2
ZWx5LCBhbmQgaXQKKyAgLy8gY2F1c2VzIHRoZSBlbnRpcmUgdGFiIHRvIGhhbmcgaXJyZXZvY2Fi
bHkuCisgIGlmIChjb250ZXh0V2FzTG9zdCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRl
eHQgd2FzIGxvc3Qgd2hpbGUgcnVubmluZyB0aGUgdGVzdCIpOworICAgIGZpbmlzaFRlc3QoKTsK
KyAgICByZXR1cm47CisgIH0KKworICB2YXIgdG90YWxEcmF3cyA9IHRpbGVzUGVyU2lkZSAqIHRp
bGVzUGVyU2lkZTsKKyAgaWYgKG51bURyYXdzVGhpc0ZyYW1lID49IHRvdGFsRHJhd3MpIHsKKyAg
ICB0ZXN0UGFzc2VkKCJBbGwgZHJhdyBjYWxscyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Iik7Cisg
ICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisgIG51bURyYXdzVGhpc0ZyYW1l
ICs9IHRpbGVzUGVyU2lkZTsKKworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKwor
ICB2YXIgdHJhbnNmb3JtTWF0cml4ID0gbmV3IEZsb2F0MzJBcnJheSgxNik7CisgIHRyYW5zZm9y
bU1hdHJpeFsxNV0gPSAxLjA7CisgIHZhciBzY2FsZUZhY3RvciA9IDEuMCAvIHRpbGVzUGVyU2lk
ZTsKKyAgdHJhbnNmb3JtTWF0cml4WzBdID0gc2NhbGVGYWN0b3I7CisgIHRyYW5zZm9ybU1hdHJp
eFs1XSA9IHNjYWxlRmFjdG9yOworICB0cmFuc2Zvcm1NYXRyaXhbMTBdID0gc2NhbGVGYWN0b3I7
CisKKyAgdmFyIG9mZnNldCA9IG5ldyBGbG9hdDMyQXJyYXkoMyk7CisKKyAgdmFyIGRyYXdzRG9u
ZVRoaXNGcmFtZSA9IDA7CisgIGZvciAodmFyIHl5ID0gMDsgeXkgPCB0aWxlc1BlclNpZGU7ICsr
eXkpIHsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgdGlsZXNQZXJTaWRlOyArK3h4KSB7Cisg
ICAgICBpZiAoZHJhd3NEb25lVGhpc0ZyYW1lID49IG51bURyYXdzVGhpc0ZyYW1lKQorICAgICAg
ICBicmVhazsKKworICAgICAgZ2wudW5pZm9ybU1hdHJpeDRmdih0cmFuc2Zvcm1Mb2MsIGZhbHNl
LCB0cmFuc2Zvcm1NYXRyaXgpOworCisgICAgICBvZmZzZXRbMF0gPSAyLjAgKiAoKDAuNSArIHh4
KSAvIHRpbGVzUGVyU2lkZSkgLSAxLjA7CisgICAgICBvZmZzZXRbMV0gPSAyLjAgKiAoKDAuNSAr
IHl5KSAvIHRpbGVzUGVyU2lkZSkgLSAxLjA7CisgICAgICBnbC51bmlmb3JtM2Yob2Zmc2V0TG9j
LCBvZmZzZXRbMF0sIG9mZnNldFsxXSwgb2Zmc2V0WzJdKTsKKworICAgICAgZ2wuZHJhd0FycmF5
cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgICAgKytkcmF3c0RvbmVUaGlzRnJhbWU7CisgICAg
fQorCisgICAgaWYgKGRyYXdzRG9uZVRoaXNGcmFtZSA+PSBudW1EcmF3c1RoaXNGcmFtZSkKKyAg
ICAgIGJyZWFrOworICB9CisKKyAgdmFyIGl0ZXJhdGlvbnMgPSBudW1EcmF3c1RoaXNGcmFtZSAv
IHRpbGVzUGVyU2lkZTsKKyAgaWYgKGl0ZXJhdGlvbnMgJSAxMCA9PT0gMCkgeworICAgIC8vIE5l
ZWRlZCB0byBhdm9pZCB0ZXN0IHRpbWVvdXQgd2l0aGluIHRoZSBoYXJuZXNzIG9uIHNvbWUgc2xv
d2VyIHBsYXRmb3JtcworICAgIHRlc3RQYXNzZWQoIkNvbXBsZXRlZCAiICsgaXRlcmF0aW9ucyAr
ICIgaXRlcmF0aW9ucyIpOworICB9CisKKyAgd3R1LnJlcXVlc3RBbmltRnJhbWUoZG9OZXh0RHJh
dyk7Cit9CisKK3d0dS5yZXF1ZXN0QW5pbUZyYW1lKGRvTmV4dERyYXcpOwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3JlbmRlcmluZy9tb3JlLXRoYW4tNjU1MzYtaW5kaWNlcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21v
cmUtdGhhbi02NTUzNi1pbmRpY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJhMGZlNTk0ZWM2ZGQ4NDUx
NzE5ZDljZjcyMTQ1M2YwYjkwOTliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tb3Jl
LXRoYW4tNjU1MzYtaW5kaWNlcy5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBNb3JlIHRoYW4g
NjU1MzYgaW5kaWNlcy48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2cyIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworYXR0cmlidXRlIHZlYzQgdkNv
bG9yOwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9u
ID0gdlBvc2l0aW9uOworICAgIGdsX1BvaW50U2l6ZSA9IDEuMDsKKyAgICBjb2xvciA9IHZDb2xv
cjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnMiIHR5cGU9InRleHQvc29tZXRoaW5nLW5v
dC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IGNv
bG9yOwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oImNoZWNrcyB0aGF0IHJl
bmRlcmluZyB3aXRoIG1vcmUgdGhhbiA2NTUzNiBpbmRpY2VzIHdvcmtzLiIpOwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIp
OwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0sIFsidlBv
c2l0aW9uIiwgInZDb2xvciJdKTsKK3ZhciBidWZmZXJPYmplY3RzID0gd3R1LnNldHVwVW5pdFF1
YWQoZ2wsIDAsIDEpOworCitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyT2Jq
ZWN0c1swXSk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJh
eShbCisgICAgICAtMSwgIDEsCisgICAgICAgMSwgIDEsCisgICAgICAtMSwgLTEsCisgICAgICAg
MSwgLTEsCisgICAgICAtMSwgIDEsCisgICAgICAgMSwgIDEsCisgICAgICAtMSwgLTEsCisgICAg
ICAgMSwgLTFdKSwgZ2wuU1RBVElDX0RSQVcpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAy
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IGJ1ZmZlck9iamVjdHNbMV0pOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBV
aW50OEFycmF5KFsKKyAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgMjU1LCAwLCAwLCAyNTUs
CisgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgMCwg
MjU1LCAwLCAyNTUsCisgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgIDAsIDI1NSwgMCwgMjU1
LAorICAgICAgMCwgMjU1LCAwLCAyNTVdKSwgZ2wuU1RBVElDX0RSQVcpOworZ2wudmVydGV4QXR0
cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCAwKTsKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgcHJvZ3JhbSBzZXR1cCIpOworCit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGNyZWF0aW5nIHRleHR1
cmUiKTsKK3ZhciBudW1RdWFkcyA9IE1hdGguZmxvb3IoNjU1MzYgLyA2KSArIDQ7Cit2YXIgbnVt
UG9pbnRzID0gbnVtUXVhZHMgKiA2OworZGVidWcoIm51bVF1YWRzOiAiICsgbnVtUXVhZHMpOwor
ZGVidWcoIm51bVBvaW50czogIiArIG51bVBvaW50cyk7Cit2YXIgaW5kZXhCdWYgPSBuZXcgQXJy
YXlCdWZmZXIobnVtUG9pbnRzKTsKK3ZhciBpbmRpY2VzID0gbmV3IFVpbnQ4QXJyYXkoaW5kZXhC
dWYpOwordmFyIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVy
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIHNldHRpbmcgdXAgaW5kaWNlcyIpOworCit2YXIg
bW9kZXMgPSBbCisgIHttb2RlOiAnUE9JTlRTJywgICAgICAgICBvZmZzZXRzOiBbMCwgMSwgMiwg
MywgMiwgMV0sIHNraXA6IDB9LAorICB7bW9kZTogJ0xJTkVTJywgICAgICAgICAgb2Zmc2V0czog
WzAsIDEsIDIsIDMsIDIsIDFdLCBza2lwOiAwfSwKKyAge21vZGU6ICdMSU5FX0xPT1AnLCAgICAg
IG9mZnNldHM6IFswLCAxLCAyLCAzLCAyLCAxXSwgc2tpcDogMX0sCisgIHttb2RlOiAnTElORV9T
VFJJUCcsICAgICBvZmZzZXRzOiBbMCwgMSwgMiwgMywgMiwgMV0sIHNraXA6IDB9LAorICB7bW9k
ZTogJ1RSSUFOR0xFUycsICAgICAgb2Zmc2V0czogWzAsIDEsIDIsIDMsIDIsIDFdLCBza2lwOiAw
fSwKKyAge21vZGU6ICdUUklBTkdMRV9TVFJJUCcsIG9mZnNldHM6IFswLCAxLCAyLCAzLCAyLCAx
XSwgc2tpcDogMH0sCisgIHttb2RlOiAnVFJJQU5HTEVfRkFOJywgICBvZmZzZXRzOiBbMCwgMSwg
MywgMiwgMiwgMV0sIHNraXA6IDF9CitdOworCitmb3IgKHZhciBtbSA9IDA7IG1tIDwgbW9kZXMu
bGVuZ3RoOyArK21tKSB7CisgIHZhciBtb2RlSW5mbyA9IG1vZGVzW21tXTsKKyAgdmFyIG1vZGUg
PSBtb2RlSW5mby5tb2RlOworICB2YXIgb2Zmc2V0cyA9IG1vZGVJbmZvLm9mZnNldHM7CisgIHZh
ciBza2lwID0gbW9kZUluZm8uc2tpcDsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtUXVh
ZHM7ICsraWkpIHsKKyAgICB2YXIgb2Zmc2V0ID0gaWkgKiA2OworICAgIHZhciBxdWFkID0gKGlp
ID09IDAgfHwgaWkgPT0gKG51bVF1YWRzIC0gMSkpID8gNCA6IDA7CisgICAgZm9yICh2YXIgamog
PSAwOyBqaiA8IDY7ICsramopIHsKKyAgICAgIGluZGljZXNbb2Zmc2V0ICsgampdID0gcXVhZCAr
IG9mZnNldHNbampdOworICAgIH0KKyAgfQorICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBpbmRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgZGVidWcoIiIpOworICBk
ZWJ1ZygidGVzdGluZzogIiArIG1vZGUpOworICAvLyBEcmF3IHdpdGhvdXQgbGFzdCA2IHBvaW50
cy4KKyAgZ2wuZHJhd0VsZW1lbnRzKGdsW21vZGVdLCBudW1Qb2ludHMgLSAoc2tpcCArIDEpICog
NiwgZ2wuVU5TSUdORURfQllURSwgc2tpcCAqIDYpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsy
NTUsIDAsIDAsIDI1NV0sICJTaG91bGQgYmUgcmVkLiIpOworICAvLyBEcmF3IHdpdGggbGFzdCA2
IHBvaW50cy4KKyAgZ2wuZHJhd0VsZW1lbnRzKGdsW21vZGVdLCBudW1Qb2ludHMsIGdsLlVOU0lH
TkVEX0JZVEUsIDApOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJT
aG91bGQgYmUgZ3JlZW4uIik7Cit9Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImFmdGVyIGRyYXdpbmciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL211bHRpc2Ft
cGxlLWNvcnJ1cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tdWx0aXNhbXBsZS1jb3JydXB0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzgzNjk0OWU2YjNmNzEzMDUzNDA4NzZmODhlMjk5MjEwNGQwNjA0Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tdWx0aXNhbXBsZS1jb3JydXB0aW9uLmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgTXVsdGlzYW1wbGUgUmVuZGVyYnVmZmVyIENvcnJ1cHRpb24g
VGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvaXRlcmFibGUtdGVzdC5q
cyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMjA0OCIgaGVpZ2h0PSIyMDQ4IiBzdHlsZT0id2lkdGg6IDEyOHB4OyBoZWlnaHQ6IDEyOHB4
OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2VuYWJsZUpTVGVzdFByZVZl
cmJvc2VMb2dnaW5nKCk7CitkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CitkZWJ1ZygnUmVn
cmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9t
aXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTM3MzAzIj5DaHJvbWl1bSBidWcgMTM3MzAzPC9hPicpOwor
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImV4YW1wbGUiLCB7YW50aWFsaWFzOiB0cnVlLCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRy
dWV9KTsKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7CisgICAgZmluaXNoVGVzdCgpOworfSBlbHNlIHsKKyAgICB2YXIgdGVzdCA9IEl0ZXJhYmxl
VGVzdC5jcmVhdGVNdWx0aXNhbXBsZUNvcnJ1cHRpb25UZXN0KGdsKTsKKyAgICB2YXIgaXRlcmF0
aW9ucyA9IHBhcnNlSW50KHd0dS5nZXRVcmxPcHRpb25zKCkuaXRlcmF0aW9ucywgMTApIHx8IDI1
OworICAgIEl0ZXJhYmxlVGVzdC5ydW4odGVzdCwgaXRlcmF0aW9ucyk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy9uZWdhdGl2ZS1vbmUtaW5kZXguaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9u
ZWdhdGl2ZS1vbmUtaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWE1OTk0MGE4ZTM4MjE4NGJhZTZj
NjAzMTMxMmNmZDc0MTEwOWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL25lZ2F0aXZl
LW9uZS1pbmRleC5odG1sCkBAIC0wLDAgKzEsOTggQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPi0xIEluZGV4IFJlbmRlcmluZyBUZXN0
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIj4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2b2lkIG1haW4oKQor
eworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwxLjAsMC4wLDEuMCk7Cit9Cis8L3NjcmlwdD4K
KworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIGluaXQoKQoreworICAgIGRlc2Ny
aXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKKworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
KyAgICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisgICAgdmFyIGNv
bnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7CisgICAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBb
InZQb3NpdGlvbiJdKTsKKworICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAg
ICB2YXIgdmVydGV4RGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoNjU1MzYgKiAzKTsKKyAgICB2ZXJ0
ZXhEYXRhWzAgKiAzICsgMF0gPSAwLjA7CisgICAgdmVydGV4RGF0YVswICogMyArIDFdID0gMC41
OworICAgIHZlcnRleERhdGFbMCAqIDMgKyAyXSA9IDAuMDsKKyAgICB2ZXJ0ZXhEYXRhWzEgKiAz
ICsgMF0gPSAtMC41OworICAgIHZlcnRleERhdGFbMSAqIDMgKyAxXSA9IC0wLjU7CisgICAgdmVy
dGV4RGF0YVsxICogMyArIDJdID0gMC4wOworICAgIHZlcnRleERhdGFbNjU1MzUgKiAzICsgMF0g
PSAwLjU7CisgICAgdmVydGV4RGF0YVs2NTUzNSAqIDMgKyAxXSA9IC0wLjU7CisgICAgdmVydGV4
RGF0YVs2NTUzNSAqIDMgKyAyXSA9IDAuMDsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgdmVydGV4RGF0YSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQs
IGZhbHNlLCAwLCAwKTsKKworICAgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAx
LCAtMV0pOworICAgIHZhciBpbmRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKyAgICBn
bC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBnbC5TVEFUSUNf
RFJBVyk7CisKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVG
RkVSX0JJVCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdO
RURfU0hPUlQsIDApOworCisgICAgaWYgKGNvbnRleHRWZXJzaW9uIDw9IDEpIHsKKyAgICAgICAg
Ly8gVGhpcyBzaG91bGQgcmVuZGVyIGEgZ3JlZW4gdHJpYW5nbGUgaW4gdGhlIG1pZGRsZSBvZiB0
aGUgY2FudmFzLgorICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBtYXkgaW5jb3JyZWN0
bHkgaW50ZXJwcmV0IHRoZSAtMSBpbmRleCBhcworICAgICAgICAvLyBhIHByaW1pdGl2ZSByZXN0
YXJ0IGFuZCBub3QgcmVuZGVyIGFueXRoaW5nLgorCisgICAgICAgIC8vIFRlc3Qgc2V2ZXJhbCBs
b2NhdGlvbnMKKyAgICAgICAgLy8gRmlyc3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCisgICAg
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDUwLCAxLCBbMCwgMCwgMCwgMF0pOwor
CisgICAgICAgIC8vIExpbmUgMTUgc2hvdWxkIGJlIGdyZWVuIGZvciBhdCBsZWFzdCAxMCBwaXhl
bHMgc3RhcnRpbmcgZnJvbSByb3cgMjAKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MjAsIDE1LCAxMCwgMSwgWzAsIDI1NSwgMCwgMjU1XSk7CisKKyAgICAgICAgLy8gTGFzdCBsaW5l
IHNob3VsZCBiZSBhbGwgYmxhY2sKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwg
NDksIDUwLCAxLCBbMCwgMCwgMCwgMF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZvciBX
ZWJHTCAyLCBQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCBpcyBhbHdheXMgZW5hYmxlZC4K
KyAgICAgICAgLy8gTm90aGluZyBzaG91bGQgYmUgZHJhd24gb24gdGhlIGNhbnZhcy4KKyAgICAg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgNTAsIDUwLCBbMCwgMCwgMCwgMF0pOwor
ICAgIH0KK30KKworaW5pdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvb3V0LW9mLWJvdW5kcy1h
cnJheS1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvb3V0LW9mLWJvdW5kcy1hcnJheS1idWZmZXJz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDRkNGQ1NWFmMTUzN2MxZmE5ODY3YTI4MmVlZTc3Mzc2ZmIwMWM2
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9vdXQtb2YtYm91bmRzLWFycmF5LWJ1ZmZl
cnMuaHRtbApAQCAtMCwwICsxLDEyNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgT3V0LW9mLUJvdW5kcyBBcnJheSBCdWZmZXIgQ29u
Zm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBw
eDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c0NoZWNrT3V0T2ZCb3VuZHMiIHR5cGU9Ingtc2hh
ZGVyL3gtdmVydGV4Ij4KKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICBhdHRyaWJ1
dGUgdmVjMiBwb3NpdGlvbjsKKyAgICBhdHRyaWJ1dGUgdmVjNCB2ZWNSYW5kb207CisgICAgdmFy
eWluZyB2ZWM0IHZfY29sb3I7CisKKyAgICAvLyBQZXIgdGhlIHNwZWMsIGVhY2ggY29tcG9uZW50
IGNhbiBlaXRoZXIgY29udGFpbiBleGlzdGluZyBjb250ZW50cworICAgIC8vIG9mIHRoZSBidWZm
ZXIgb3IgMC4KKyAgICBib29sIHRlc3RGbG9hdENvbXBvbmVudChmbG9hdCBjb21wb25lbnQpIHsK
KyAgICAgICAgcmV0dXJuIChjb21wb25lbnQgPT0gMC4yIHx8IGNvbXBvbmVudCA9PSAwLjApOwor
ICAgIH0KKyAgICAvLyBUaGUgbGFzdCBjb21wb25lbnQgaXMgYWRkaXRpb25hbGx5IGFsbG93ZWQg
dG8gYmUgMS4wLgorICAgIGJvb2wgdGVzdExhc3RGbG9hdENvbXBvbmVudChmbG9hdCBjb21wb25l
bnQpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RGbG9hdENvbXBvbmVudChjb21wb25lbnQpIHx8IGNv
bXBvbmVudCA9PSAxLjA7CisgICAgfQorCisgICAgdm9pZCBtYWluKCkgeworICAgICAgICBpZiAo
dGVzdEZsb2F0Q29tcG9uZW50KHZlY1JhbmRvbS54KSAmJgorICAgICAgICAgICAgdGVzdEZsb2F0
Q29tcG9uZW50KHZlY1JhbmRvbS55KSAmJgorICAgICAgICAgICAgdGVzdEZsb2F0Q29tcG9uZW50
KHZlY1JhbmRvbS56KSAmJgorICAgICAgICAgICAgdGVzdExhc3RGbG9hdENvbXBvbmVudCh2ZWNS
YW5kb20udykpIHsKKyAgICAgICAgICAgIHZfY29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEu
MCk7IC8vIGdyZWVuIC0tIFdlJ3JlIGdvb2QKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZfY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IC8vIHJlZCAtLSBVbmV4cGVjdGVk
IHZhbHVlCisgICAgICAgIH0KKyAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAw
LjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IG91dC1vZi1ib3VuZHMgYXJyYXkgYnVm
ZmVycyBiZWhhdmUgYWNjb3JkaW5nIHRvIHNwZWMuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9KTsK
KwordmFyIG51bWJlck9mUXVhZHMgPSAyMDA7CisKKy8vIERyYXcgb3V0LW9mLWJvdW5kcyBiZWdp
bm5pbmcgd2l0aCB0aGUgc3RhcnQgb2Zmc2V0IHBhc3NlZCBpbi4KKy8vIEVuc3VyZSB0aGF0IGRy
YXdBcnJheXMgZmxhZ3MgZWl0aGVyIG5vIGVycm9yIG9yIElOVkFMSURfT1BFUkFUSU9OLiBJbiB0
aGUgY2FzZSBvZiBJTlZBTElEX09QRVJBVElPTiwKKy8vIG5vIGNhbnZhcyBwaXhlbHMgY2FuIGJl
IHRvdWNoZWQuICBJbiB0aGUgY2FzZSBvZiBOT19FUlJPUiwgYWxsIHdyaXR0ZW4gdmFsdWVzIG11
c3QgZWl0aGVyIGJlIHRoZQorLy8gemVybyB2ZXJ0ZXggb3IgYSB2YWx1ZSBpbiB0aGUgdmVydGV4
IGJ1ZmZlci4gIFNlZSB2c0NoZWNrT3V0T2ZCb3VuZHMgc2hhZGVyLgorZnVuY3Rpb24gZHJhd0Fu
ZFZlcmlmeU91dE9mQm91bmRzQXJyYXlzKGdsLCBmaXJzdCwgY291bnQpIHsKKyAgICBnbC5jbGVh
ckNvbG9yKDAuMCwgMC4wLCAxLjAsIDEuMCk7ICAvLyBTdGFydCB3aXRoIGJsdWUgdG8gaW5kaWNh
dGUgbm8gcGl4ZWxzIHRvdWNoZWQuCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8
IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMs
IGZpcnN0LCBjb3VudCk7CisgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICBpZiAo
ZXJyb3IgPT09IGdsLklOVkFMSURfT1BFUkFUSU9OKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImRy
YXdBcnJheXMgZmxhZ2dlZCBJTlZBTElEX09QRVJBVElPTiwgd2hpY2ggaXMgdmFsaWQgc28gbG9u
ZyBhcyBhbGwgY2FudmFzIHBpeGVscyB3ZXJlIG5vdCB0b3VjaGVkLiIpOworICAgICAgICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIFswLCAwLCAyNTUsIDI1NV0pOworICAgIH0gZWxzZSBpZiAoZXJyb3Ig
PT09IGdsLk5PX0VSUk9SKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImRyYXdBcnJheXMgZmxhZ2dl
ZCBOT19FUlJPUiwgd2hpY2ggaXMgdmFsaWQgc28gbG9uZyBhcyBhbGwgY2FudmFzIHBpeGVscyBh
cmUgZ3JlZW4uIik7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1
XSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiSW52YWxpZCBlcnJvciBmbGFn
Z2VkIGJ5IGRyYXdBcnJheXMuIFNob3VsZCBiZSBJTlZBTElEX09QRVJBVElPTiBvciBOT19FUlJP
UiIpOworICAgIH0KK30KKworLy8gQ3JlYXRlIGEgdmVydGV4IGJ1ZmZlciB3aXRoIDIwMCBwcm9w
ZXJseSBmb3JtZWQgdHJpYW5nbGUgcXVhZHMuIFRoZXNlIHF1YWRzIHdpbGwgY292ZXIgdGhlCisv
LyBjYW52YXMgdGV4dHVyZSBzdWNoIHRoYXQgZXZlcnkgc2luZ2xlIHBpeGVsIGlzIHRvdWNoZWQg
YnkgdGhlIGZyYWdtZW50IHNoYWRlci4KK3ZhciBnbFF1YWRCdWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbFF1YWRCdWZmZXIpOwordmFy
IHF1YWRQb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KG51bWJlck9mUXVhZHMgKiAvKkNvbXBv
bmVudHNQZXJRdWFkKi8yICogLypWZXJ0aWNlc1BlclF1YWQqLzYpOworZm9yICh2YXIgaSA9IDA7
IGkgPCBxdWFkUG9zaXRpb25zLmxlbmd0aDsgaSArPSAvKkNvbXBvbmVudHNQZXJRdWFkKi8yICog
LypWZXJ0aWNlc1BlclF1YWQqLzYpIHsKKyAgICBxdWFkUG9zaXRpb25zW2krMF0gPSAtMS4wOyAg
Ly8gdXBwZXIgbGVmdAorICAgIHF1YWRQb3NpdGlvbnNbaSsxXSA9ICAxLjA7CisgICAgcXVhZFBv
c2l0aW9uc1tpKzJdID0gIDEuMDsgIC8vIHVwcGVyIHJpZ2h0CisgICAgcXVhZFBvc2l0aW9uc1tp
KzNdID0gIDEuMDsKKyAgICBxdWFkUG9zaXRpb25zW2krNF0gPSAtMS4wOyAgLy8gbG93ZXIgbGVm
dAorICAgIHF1YWRQb3NpdGlvbnNbaSs1XSA9IC0xLjA7CisgICAgcXVhZFBvc2l0aW9uc1tpKzZd
ID0gIDEuMDsgIC8vIHVwcGVyIHJpZ2h0CisgICAgcXVhZFBvc2l0aW9uc1tpKzddID0gIDEuMDsK
KyAgICBxdWFkUG9zaXRpb25zW2krOF0gPSAgMS4wOyAgLy8gbG93ZXIgcmlnaHQKKyAgICBxdWFk
UG9zaXRpb25zW2krOV0gPSAtMS4wOworICAgIHF1YWRQb3NpdGlvbnNbaSsxMF0gPSAtMS4wOyAg
Ly8gbG93ZXIgbGVmdAorICAgIHF1YWRQb3NpdGlvbnNbaSsxMV0gPSAtMS4wOworfQorZ2wuYnVm
ZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHF1YWRQb3NpdGlvbnMsIGdsLlNUQVRJQ19EUkFXKTsK
K2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigw
LCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisKKy8vIENyZWF0ZSBhIHNtYWxsIHZlcnRl
eCBidWZmZXIgd2l0aCBkZXRlcm1pbmVkLWFoZWFkLW9mLXRpbWUgInJhbmRvbSIgdmFsdWVzICgw
LjIpLiBUaGlzIGJ1ZmZlciB3aWxsIGJlCisvLyB0aGUgb25lIHJlYWQgcGFzdCB0aGUgZW5kLgor
dmFyIGdsVmVydGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgZ2xWZXJ0ZXhCdWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzAuMiwgMC4yLCAwLjIsIDAuMiwgMC4yLCAwLjJdKSwg
Z2wuU1RBVElDX0RSQVcpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CitnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKy8vIFNldHVw
IHRoZSB2ZXJpZmljYXRpb24gcHJvZ3JhbS4KK3ZhciBnbFByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbInZzQ2hlY2tPdXRPZkJvdW5kcyIsIHd0dS5zaW1wbGVWZXJ0ZXhDb2xvckZyYWdt
ZW50U2hhZGVyXSwgWyJwb3NpdGlvbiIsICJ2ZWNSYW5kb20iXSk7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNoYWRlciBhbmQgYnVmZmVyIHNldHVwIHNob3VsZCBub3Qg
Z2VuZXJhdGUgZXJyb3JzIik7CisKK2RlYnVnKCJUZXN0IC0tIERyYXcgb2ZmIHRoZSBlbmQgb2Yg
dGhlIHZlcnRleCBidWZmZXIgbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvdXQgb2YgYm91bmRz
IGFyZWEuIik7CitkcmF3QW5kVmVyaWZ5T3V0T2ZCb3VuZHNBcnJheXMoZ2wsIC8qZmlyc3QqLzYs
IC8qY291bnQqLzYpOworCitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IC0tIERyYXcgb2ZmIHRo
ZSBlbmQgb2YgdGhlIHZlcnRleCBidWZmZXIgbmVhciB0aGUgZW5kIG9mIHRoZSBvdXQgb2YgYm91
bmRzIGFyZWEuIikKK2RyYXdBbmRWZXJpZnlPdXRPZkJvdW5kc0FycmF5cyhnbCwgLypmaXJzdCov
KG51bWJlck9mUXVhZHMgLSAxKSAqIDYsIC8qY291bnQqLzYpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJp
bmcvb3V0LW9mLWJvdW5kcy1pbmRleC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvb3V0LW9mLWJv
dW5kcy1pbmRleC1idWZmZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGViMmJmZWJmYWVkZWJiNGRlMzEz
NDhkMmRhMjU1YTY1ZTY5ZjRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9vdXQtb2Yt
Ym91bmRzLWluZGV4LWJ1ZmZlcnMuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgT3V0LW9mLUJvdW5k
cyBJbmRleCBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRoOiAx
MDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c0NoZWNrT3V0T2ZC
b3VuZHMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KKyAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyAgICBhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKKyAgICBhdHRyaWJ1dGUgdmVjNCB2
ZWNSYW5kb207CisgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7CisKKyAgICAvLyBQZXIgdGhlIHNw
ZWMsIGVhY2ggY29tcG9uZW50IGNhbiBlaXRoZXIgY29udGFpbiBleGlzdGluZyBjb250ZW50cwor
ICAgIC8vIG9mIHRoZSBidWZmZXIgb3IgMC4KKyAgICBib29sIHRlc3RGbG9hdENvbXBvbmVudChm
bG9hdCBjb21wb25lbnQpIHsKKyAgICAgICAgcmV0dXJuIChjb21wb25lbnQgPT0gMC4yIHx8IGNv
bXBvbmVudCA9PSAwLjApOworICAgIH0KKyAgICAvLyBUaGUgbGFzdCBjb21wb25lbnQgaXMgYWRk
aXRpb25hbGx5IGFsbG93ZWQgdG8gYmUgMS4wLgorICAgIGJvb2wgdGVzdExhc3RGbG9hdENvbXBv
bmVudChmbG9hdCBjb21wb25lbnQpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RGbG9hdENvbXBvbmVu
dChjb21wb25lbnQpIHx8IGNvbXBvbmVudCA9PSAxLjA7CisgICAgfQorCisgICAgdm9pZCBtYWlu
KCkgeworICAgICAgICBpZiAodGVzdEZsb2F0Q29tcG9uZW50KHZlY1JhbmRvbS54KSAmJgorICAg
ICAgICAgICAgdGVzdEZsb2F0Q29tcG9uZW50KHZlY1JhbmRvbS55KSAmJgorICAgICAgICAgICAg
dGVzdEZsb2F0Q29tcG9uZW50KHZlY1JhbmRvbS56KSAmJgorICAgICAgICAgICAgdGVzdExhc3RG
bG9hdENvbXBvbmVudCh2ZWNSYW5kb20udykpIHsKKyAgICAgICAgICAgIHZfY29sb3IgPSB2ZWM0
KDAuMCwgMS4wLCAwLjAsIDEuMCk7IC8vIGdyZWVuIC0tIFdlJ3JlIGdvb2QKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHZfY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IC8v
IHJlZCAtLSBVbmV4cGVjdGVkIHZhbHVlCisgICAgICAgIH0KKyAgICAgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IG91dC1v
Zi1ib3VuZHMgaW5kZXggYnVmZmVycyBiZWhhdmUgYWNjb3JkaW5nIHRvIHNwZWMuIik7CisKKy8v
IFByZXBhcmUgYW4gZWxlbWVudCBhcnJheSBidWZmZXIgdGhhdCBpbmRleGVzIG91dC1vZi1ib3Vu
ZHMgYmVnaW5uaW5nIHdpdGggdGhlIHN0YXJ0IGluZGV4IHBhc3NlZCBpbi4KKy8vIEVuc3VyZSB0
aGF0IGRyYXdFbGVtZW50cyBmbGFncyBlaXRoZXIgbm8gZXJyb3Igb3IgSU5WQUxJRF9PUEVSQVRJ
T04uIEluIHRoZSBjYXNlIG9mIElOVkFMSURfT1BFUkFUSU9OLAorLy8gbm8gY2FudmFzIHBpeGVs
cyBjYW4gYmUgdG91Y2hlZC4gIEluIHRoZSBjYXNlIG9mIE5PX0VSUk9SLCBhbGwgd3JpdHRlbiB2
YWx1ZXMgbXVzdCBlaXRoZXIgYmUgdGhlCisvLyB6ZXJvIHZlcnRleCBvciBhIHZhbHVlIGluIHRo
ZSB2ZXJ0ZXggYnVmZmVyLiAgU2VlIHZzQ2hlY2tPdXRPZkJvdW5kcyBzaGFkZXIuCitmdW5jdGlv
biBkcmF3QW5kVmVyaWZ5T3V0T2ZCb3VuZHNJbmRleChnbCwgc3RhcnRJbmRleCkgeworICAgIGds
LmNsZWFyQ29sb3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsgIC8vIFN0YXJ0IHdpdGggYmx1ZSB0byBp
bmRpY2F0ZSBubyBwaXhlbHMgdG91Y2hlZC4KKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICBwcmVwYXJlRWxlbWVudEFycmF5QnVm
ZmVyKGdsLCAvKlN0YXJ0SW5kZXgqL3N0YXJ0SW5kZXgpOworCisgICAgZ2wuZHJhd0VsZW1lbnRz
KGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05FRF9TSE9SVCwgLypvZmZzZXQqLzApOwor
ICAgIHZhciBlcnJvciA9IGdsLmdldEVycm9yKCk7CisgICAgaWYgKGVycm9yID09PSBnbC5JTlZB
TElEX09QRVJBVElPTikgeworICAgICAgICB0ZXN0UGFzc2VkKCJkcmF3RWxlbWVudHMgZmxhZ2dl
ZCBJTlZBTElEX09QRVJBVElPTiwgd2hpY2ggaXMgdmFsaWQgc28gbG9uZyBhcyBhbGwgY2FudmFz
IHBpeGVscyB3ZXJlIG5vdCB0b3VjaGVkLiIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAwLCAyNTUsIDI1NV0pOworICAgIH0gZWxzZSBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9S
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoImRyYXdFbGVtZW50cyBmbGFnZ2VkIE5PX0VSUk9SLCB3
aGljaCBpcyB2YWxpZCBzbyBsb25nIGFzIGFsbCBjYW52YXMgcGl4ZWxzIGFyZSBncmVlbi4iKTsK
KyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdKTsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIGVycm9yIGZsYWdnZWQgYnkgZHJhd0Vs
ZW1lbnRzLiBTaG91bGQgYmUgSU5WQUxJRF9PUEVSQVRJT04gb3IgTk9fRVJST1IiKTsKKyAgICB9
Cit9CisKKy8vIENyZWF0ZSBhbiBlbGVtZW50IGFycmF5IGJ1ZmZlciB3aXRoIGEgdHJpLXN0cmlw
IHRoYXQgc3RhcnRzIGF0IHN0YXJ0SW5kZXggYW5kIG1ha2UKKy8vIGl0IHRoZSBhY3RpdmUgZWxl
bWVudCBhcnJheSBidWZmZXIuCitmdW5jdGlvbiBwcmVwYXJlRWxlbWVudEFycmF5QnVmZmVyKGds
LCBzdGFydEluZGV4KSB7CisgICAgdmFyIGdsRWxlbWVudEFycmF5QnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2xF
bGVtZW50QXJyYXlCdWZmZXIpOworICAgIHZhciBxdWFkSW5kaWNlcyA9IG5ldyBVaW50MTZBcnJh
eSg0KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1YWRJbmRpY2VzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHF1YWRJbmRpY2VzW2ldID0gc3RhcnRJbmRleCArIGk7CisgICAgfQorICAgIGds
LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHF1YWRJbmRpY2VzLCBnbC5TVEFU
SUNfRFJBVyk7Cit9CisKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzLCB7YW50aWFsaWFzOiBmYWxzZX0pOworCit2YXIgbnVtYmVyT2ZRdWFk
cyA9IDIwMDsKKworLy8gQ3JlYXRlIGEgdmVydGV4IGJ1ZmZlciB3aXRoIDIwMCBwcm9wZXJseSBm
b3JtZWQgdHJpLXN0cmlwIHF1YWRzLiBUaGVzZSBxdWFkcyB3aWxsIGNvdmVyIHRoZSBjYW52YXMg
dGV4dHVyZQorLy8gc3VjaCB0aGF0IGV2ZXJ5IHNpbmdsZSBwaXhlbCBpcyB0b3VjaGVkIGJ5IHRo
ZSBmcmFnbWVudCBzaGFkZXIuCit2YXIgZ2xRdWFkQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgZ2xRdWFkQnVmZmVyKTsKK3ZhciBxdWFk
UG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShudW1iZXJPZlF1YWRzICogLypDb21wb25lbnRz
UGVyUXVhZCovMiAqIC8qVmVydGljZXNQZXJRdWFkKi80KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
cXVhZFBvc2l0aW9ucy5sZW5ndGg7IGkgKz0gLypDb21wb25lbnRzUGVyUXVhZCovMiAqIC8qVmVy
dGljZXNQZXJRdWFkKi80KSB7CisgICAgcXVhZFBvc2l0aW9uc1tpKzBdID0gLTEuMDsgIC8vIHVw
cGVyIGxlZnQKKyAgICBxdWFkUG9zaXRpb25zW2krMV0gPSAgMS4wOworICAgIHF1YWRQb3NpdGlv
bnNbaSsyXSA9ICAxLjA7ICAvLyB1cHBlciByaWdodAorICAgIHF1YWRQb3NpdGlvbnNbaSszXSA9
ICAxLjA7CisgICAgcXVhZFBvc2l0aW9uc1tpKzRdID0gLTEuMDsgIC8vIGxvd2VyIGxlZnQKKyAg
ICBxdWFkUG9zaXRpb25zW2krNV0gPSAtMS4wOworICAgIHF1YWRQb3NpdGlvbnNbaSs2XSA9ICAx
LjA7ICAvLyBsb3dlciByaWdodAorICAgIHF1YWRQb3NpdGlvbnNbaSs3XSA9IC0xLjA7Cit9Citn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgcXVhZFBvc2l0aW9ucywgZ2wuU1RBVElDX0RS
QVcpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CitnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKy8vIENyZWF0ZSBhIHNtYWxsIHZl
cnRleCBidWZmZXIgd2l0aCBkZXRlcm1pbmVkLWFoZWFkLW9mLXRpbWUgInJhbmRvbSIgdmFsdWVz
ICgwLjIpLiBUaGlzIGJ1ZmZlciB3aWxsIGJlCisvLyB0aGUgb25lIGluZGV4ZWQgb2ZmIHRoZSBl
bmQuCit2YXIgZ2xWZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbFZlcnRleEJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMC4yLCAwLjIsIDAuMiwgMC4yXSksIGdsLlNU
QVRJQ19EUkFXKTsKK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworZ2wudmVydGV4QXR0
cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisvLyBTZXR1cCB0aGUg
dmVyaWZpY2F0aW9uIHByb2dyYW0uCit2YXIgZ2xQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2c0NoZWNrT3V0T2ZCb3VuZHMiLCB3dHUuc2ltcGxlVmVydGV4Q29sb3JGcmFnbWVudFNo
YWRlcl0sIFsicG9zaXRpb24iLCAidmVjUmFuZG9tIl0pOword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTaGFkZXIgYW5kIGJ1ZmZlciBzZXR1cCBzaG91bGQgbm90IGdlbmVy
YXRlIGVycm9ycyIpOworCitkZWJ1ZygiVGVzdCAtLSBJbmRleCBvZmYgdGhlIGVuZCBvZiB0aGUg
dmVydGV4IGJ1ZmZlciBuZWFyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG91dCBvZiBib3VuZHMgYXJl
YS4iKTsKK2RyYXdBbmRWZXJpZnlPdXRPZkJvdW5kc0luZGV4KGdsLCAvKlN0YXJ0SW5kZXgqLzQp
OworCitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IC0tIEluZGV4IG9mZiB0aGUgZW5kIG9mIHRo
ZSB2ZXJ0ZXggYnVmZmVyIG5lYXIgdGhlIGVuZCBvZiB0aGUgb3V0IG9mIGJvdW5kcyBhcmVhLiIp
CitkcmF3QW5kVmVyaWZ5T3V0T2ZCb3VuZHNJbmRleChnbCwgLypTdGFydEluZGV4Ki9udW1iZXJP
ZlF1YWRzIC0gNCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1uby1hdHRyaWJ1dGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9yZW5kZXJpbmcvcG9pbnQtbm8tYXR0cmlidXRlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjdm
MzQ5NDIwNDY4YzE3YmE2MDgxZGE3ZGMzNmE2YjQ5ZjVjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9y
ZW5kZXJpbmcvcG9pbnQtbm8tYXR0cmlidXRlcy5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bv
aW50U2l6ZSA9IDEuMDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4w
KTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKQorewor
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iMSIgaGVpZ2h0
PSIxIiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IHRoYXQgZHJhd2luZyBhIHBv
aW50IHdpdGhvdXQgZW5hYmxpbmcgYW55IGF0dHJpYnV0ZXMgc3VjY2VlZHMnKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgndGVzdGJl
ZCcpOworCit2YXIgcHJvZ3JhbTEgPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAn
ZnNoYWRlciddKTsKKworZGVidWcoJ0RyYXcgYSBwb2ludCB3aXRoIGEgc2hhZGVyIHRoYXQgdGFr
ZXMgbm8gYXR0cmlidXRlcyBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSB3aG9sZSBjYW52YXMuJyk7
CisKK2dsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKK3d0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LXNpemUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2lu
dC1zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ1ODQyODIyMWViZTMxZjA2MzVkZDQ0YWQ4YTgxYWY0
MGYwM2Q3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1zaXplLmh0bWwKQEAg
LTAsMCArMSwxMjkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRy
aWJ1dGUgdmVjMyBwb3M7CithdHRyaWJ1dGUgdmVjNCBjb2xvckluOwordW5pZm9ybSBmbG9hdCBw
b2ludFNpemU7Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
UG9pbnRTaXplID0gcG9pbnRTaXplOworICAgIGNvbG9yID0gY29sb3JJbjsKKyAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQocG9zLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFk
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit2YXJ5aW5nIHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGVz
dGJlZCIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMg
ZW5hYmxlZCBpbiBXZWJHTCcpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCd0ZXN0YmVkJywgeyBhbnRpYWxpYXM6IGZhbHNlIH0pOwor
c2hvdWxkQmVOb25OdWxsKCJnbCIpOworCitnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKworLy8gVGhl
IGNob2ljZSBvZiAoMC40LCAwLjQpIGVuc3VyZXMgdGhhdCB0aGUgY2VudGVycyBvZiB0aGUgc3Vy
cm91bmRpbmcKKy8vIHBpeGVscyBhcmUgbm90IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBvaW50IHdo
ZW4gaXQgaXMgb2Ygc2l6ZSAxLCBidXQKKy8vIHRoYXQgdGhleSBkZWZpbml0ZWx5IGFyZSB3aGVu
IGl0IGlzIG9mIHNpemUgMi4KK3ZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAg
IDAuNCwgMC40LCAwLjBdKTsKK3ZhciBjb2xvcnMgPSBuZXcgVWludDhBcnJheShbCisgICAgMjU1
LCAwLCAwLCAyNTVdKTsKKwordmFyIGNvbG9yT2Zmc2V0ID0gdmVydGljZXMuYnl0ZUxlbmd0aDsK
KwordmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KDIgKiAyICogNCk7Cit2YXIgaW5kZXggPSAwOwor
Cit2YXIgdmJvID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdmJvKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvck9mZnNldCAr
IGNvbG9ycy5ieXRlTGVuZ3RoLCBnbC5TVEFUSUNfRFJBVyk7CitnbC5idWZmZXJTdWJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgMCwgdmVydGljZXMpOworZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9C
VUZGRVIsIGNvbG9yT2Zmc2V0LCBjb2xvcnMpOworCitmdW5jdGlvbiB0ZXN0KHByb2dyYW0pIHsK
KyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7
CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwg
MCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCBjb2xvck9mZnNldCk7
CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKyAgICB2YXIgbG9jUG9pbnRT
aXplID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdwb2ludFNpemUnKTsKKworICAg
IHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisKKyAgICBkZWJ1Zygn
RHJhdyBhIHBvaW50IG9mIHNpemUgMSBhbmQgdmVyaWZ5IGl0IGRvZXMgbm90IHRvdWNoIGFueSBv
dGhlciBwaXhlbHMuJyk7CisKKyAgICBnbC51bmlmb3JtMWYobG9jUG9pbnRTaXplLCAxLjApOwor
ICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAzKTsKKwor
ICAgIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisKKyAgICBmb3Ig
KHZhciB5ID0gMDsgeSA8IDI7ICsreSkgeworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDI7
ICsreCkgeworICAgICAgICAgICAgdmFyIGNvcnJlY3RDb2xvciA9ICh4ID09IDEgJiYgeSA9PSAx
KSA/IFsyNTUsIDAsIDBdIDogWzAsIDAsIDBdOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgeCwgeSwgMSwgMSwgY29ycmVjdENvbG9yKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisK
KyAgICBkZWJ1ZygnRHJhdyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRo
ZSBhcHByb3ByaWF0ZSByZWdpb24uJyk7CisKKyAgICB2YXIgcG9pbnRTaXplUmFuZ2UgPSBnbC5n
ZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKTsKKyAgICBpZiAocG9pbnRT
aXplUmFuZ2VbMV0gPj0gMi4wKSB7CisgICAgICAgIGdsLnVuaWZvcm0xZihsb2NQb2ludFNpemUs
IDIuMCk7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5n
dGggLyAzKTsKKyAgICAgICAgc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnZ2wuTk9fRVJST1In
KTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMiwgMiwgWzI1NSwgMCwg
MF0pOworICAgIH0KK30KKworZGVidWcoJycpOworZGVidWcoJ1Bhc3MgMScpOwordmFyIHByb2dy
YW0xID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydwb3Mn
LCAnY29sb3JJbiddKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7
Cit0ZXN0KHByb2dyYW0xKTsKKworLy8gVW5kZXIgc29tZSB2ZXJzaW9ucyBvZiBBTkdMRSBwb2lu
dCBzcHJpdGUgc2hhZGVyIHByb2dyYW1zIHdlcmUKKy8vIGluY29ycmVjdGx5IHJlbG9hZGVkIGZy
b20gY2FjaGUuIFJlYnVpbGRpbmcgdGhlIHNoYWRlciBwcm9ncmFtIGFuZAorLy8gcmVwZWF0aW5n
IHRoZSB0ZXN0IHNpbXVsYXRlcyB0aGUgY29uZGl0aW9ucyB0aGF0IGNhdXNlZCBpdCB0byBmYWls
CitkZWJ1ZygnJyk7CitkZWJ1ZygnUGFzcyAyJyk7Cit2YXIgcHJvZ3JhbTIgPSB3dHUuc2V0dXBQ
cm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBbJ3BvcycsICdjb2xvckluJ10pOwor
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnZ2wuTk9fRVJST1InKTsKK3Rlc3QocHJvZ3JhbTIp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1zcGVjaWZpYy1zaGFkZXItdmFyaWFibGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtc3BlY2lmaWMtc2hhZGVyLXZhcmlhYmxlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxZjBiY2FkNTAyZmE3OGEzMDYwZDk1YWMyMDU5MzIzYTIyYzg1ZDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtc3BlY2lmaWMtc2hhZGVyLXZhcmlhYmxlcy5o
dG1sCkBAIC0wLDAgKzEsMTY2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5Qb2ludC1zcGVjaWZpYyBzaGFkZXIgdmFyaWFibGVzIHRlc3Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjIiB3aWR0aD0iNjQiIGhlaWdo
dD0iNjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9InZzLWFzc2lnbiIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uOworCit2YXJ5aW5nIHZlYzIgdlBv
czsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAw
LCAxKTsKKyAgICB2UG9zID0gYVBvc2l0aW9uOworCisgICAgZ2xfUG9pbnRTaXplID0gMS4wOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzLWNvbmRpdGlvbmFsIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+Cit1bmlmb3JtIGZsb2F0IHJlbmRlcmluZ1BvaW50czsgLy8gbm90IGFzc2ln
bmVkLCBlcXVhbCB0byAwLjAKK2F0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlvbjsKKwordmFyeWluZyB2
ZWMyIHZQb3M7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3Np
dGlvbiwgMCwgMSk7CisgICAgdlBvcyA9IGFQb3NpdGlvbjsKKworICAgIGlmIChyZW5kZXJpbmdQ
b2ludHMgPiAwLjApIHsKKyAgICAgICAgZ2xfUG9pbnRTaXplID0gMS4wOworICAgIH0KK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0IGlkPSJmcy1vdmVyd3JpdGUiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPgordmFyeWluZyBtZWRpdW1wIHZlYzIgdlBvczsKKwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGdsX1BvaW50Q29vcmQueHksIDAsIDEpOworICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQodlBvcyAqIC0yLjAsIDAsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImZzLXVudXNlZC1icmFuY2giIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordmFy
eWluZyBtZWRpdW1wIHZlYzIgdlBvczsKK3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1RGVmYXVsdHNU
b1plcm87CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2UG9zICog
LTIuMCwgMCwgMSk7CisgICAgaWYgKHVEZWZhdWx0c1RvWmVybyA9PSAxLjApIHsKKyAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChnbF9Qb2ludENvb3JkLnh5LCAwLCAxKTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRvY3VtZW50
LnRpdGxlKTsKKworZGVidWcoJ1RoaXMgdGVzdCB2ZXJpZmllcyByZW5kZXJpbmcgd2l0aCBwcm9n
cmFtcyByZWZlcmVuY2luZyBzaGFkZXIgdmFyaWFibGVzIHNwZWNpZmljIHRvIHJlbmRlcmluZyBv
ZiBQT0lOVFMgcHJpbWl0aXZlcy4nKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiYyIsIHtkZXB0aDogZmFsc2V9KTsKKwordmFyIHBy
b2dfb3ZlcndyaXRlID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2cy1hc3NpZ24iLCAiZnMtb3Zl
cndyaXRlIl0sIFsiYVBvc2l0aW9uIl0pOwordmFyIHByb2dfYnJhbmNoID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2cy1hc3NpZ24iLCAiZnMtdW51c2VkLWJyYW5jaCJdLCBbImFQb3NpdGlvbiJd
KTsKK3ZhciBwcm9nX2NvbmRfb3ZlcndyaXRlID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2cy1j
b25kaXRpb25hbCIsICJmcy1vdmVyd3JpdGUiXSwgWyJhUG9zaXRpb24iXSk7Cit2YXIgcHJvZ19j
b25kX2JyYW5jaCA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnMtY29uZGl0aW9uYWwiLCAiZnMt
dW51c2VkLWJyYW5jaCJdLCBbImFQb3NpdGlvbiJdKTsKKwordmFyIHZlcnREYXRhID0gbmV3IEZs
b2F0MzJBcnJheShbCisgICAgLTEsIC0xLAorICAgICsxLCAtMSwKKyAgICAtMSwgKzEsCitdKTsK
KwordmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgdmVydERhdGEsIGdsLlNUQVRJQ19EUkFXKTsKKworZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisKKy8vLy8vLy8vLy8KKworZGVidWcoIiIpOworZGVidWcoInByb2ctb3ZlcndyaXRl
Iik7CisKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOword3R1LmNoZWNrQ2FudmFzUmVj
dChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDAsIDBdKTsgLy8gQm90dG9tLWxlZnQKKworZ2wudXNl
UHJvZ3JhbShwcm9nX292ZXJ3cml0ZSk7CitnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Myk7CisKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsyNTUsIDI1NSwgMCwg
MjU1XSk7IC8vIEJvdHRvbS1sZWZ0Cit3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA2MywgNjMsIDEs
IDEsIFswLCAwLCAwLCAwXSk7IC8vIFRvcC1yaWdodAorCisKKy8vLy8vLy8vLy8KKworZGVidWco
IiIpOworZGVidWcoInByb2ctYnJhbmNoIik7CisKK2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOword3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDAsIDBdKTsg
Ly8gQm90dG9tLWxlZnQKKworZ2wudXNlUHJvZ3JhbShwcm9nX2JyYW5jaCk7CitnbC5kcmF3QXJy
YXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAs
IDEsIDEsIFsyNTUsIDI1NSwgMCwgMjU1XSk7IC8vIEJvdHRvbS1sZWZ0Cit3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCA2MywgNjMsIDEsIDEsIFswLCAwLCAwLCAwXSk7IC8vIFRvcC1yaWdodAorCisv
Ly8vLy8vLy8vCisKK2RlYnVnKCIiKTsKK2RlYnVnKCJwcm9nLWNvbmQtb3ZlcndyaXRlIik7CisK
K2dsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOword3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgMSwgMSwgWzAsIDAsIDAsIDBdKTsgLy8gQm90dG9tLWxlZnQKKworZ2wudXNlUHJvZ3Jh
bShwcm9nX2NvbmRfb3ZlcndyaXRlKTsKK2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAz
KTsKKword3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzI1NSwgMjU1LCAwLCAy
NTVdKTsgLy8gQm90dG9tLWxlZnQKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDYzLCA2MywgMSwg
MSwgWzAsIDAsIDAsIDBdKTsgLy8gVG9wLXJpZ2h0CisKKworLy8vLy8vLy8vLworCitkZWJ1Zygi
Iik7CitkZWJ1ZygicHJvZy1jb25kLWJyYW5jaCIpOworCitnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKK3d0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAwLCAwLCAw
XSk7IC8vIEJvdHRvbS1sZWZ0CisKK2dsLnVzZVByb2dyYW0ocHJvZ19jb25kX2JyYW5jaCk7Citn
bC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisKK3d0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIDEsIDEsIFsyNTUsIDI1NSwgMCwgMjU1XSk7IC8vIEJvdHRvbS1sZWZ0Cit3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCA2MywgNjMsIDEsIDEsIFswLCAwLCAwLCAwXSk7IC8vIFRvcC1y
aWdodAorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LXdpdGgtZ2wtcG9pbnRjb29yZC1p
bi1mcmFnbWVudC1zaGFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC13aXRoLWdsLXBvaW50Y29v
cmQtaW4tZnJhZ21lbnQtc2hhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAyZDVmMTE3MjhjMTAyNjNm
MDljYmJjYmM1ZmEwZTljNWZjYmVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2lu
dC13aXRoLWdsLXBvaW50Y29vcmQtaW4tZnJhZ21lbnQtc2hhZGVyLmh0bWwKQEAgLTAsMCArMSwx
MTkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIFBvaW50IHdpdGggZ2xfUG9pbnRDb29yZCBpbiBGcmFnbWVudCBTaGFkZXIgVGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPiA8L2NhbnZhcz4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KK3ZhcnlpbmcgdmVjNCB2X2NvbG9yOworCisvLyBUaGUgWCBhbmQgWSBjb29yZGlu
YXRlcyBvZiB0aGUgY2VudGVyIG9mIHRoZSBwb2ludC4KK2F0dHJpYnV0ZSB2ZWMyIGFfdmVydGV4
OworCit1bmlmb3JtIGZsb2F0IHVfcG9pbnRTaXplOworCit2b2lkIG1haW4odm9pZCkgeworICBn
bF9Qb2ludFNpemUgPSB1X3BvaW50U2l6ZTsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfdmVydGV4
LCAwLjAsIDEuMCk7CisKKyAgLy8gVGhlIGNvbG9yIG9mIHRoZSBwb2ludC4KKyAgdl9jb2xvciA9
IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwordmFyeWluZyB2ZWM0IHZfY29sb3I7CisKK3ZvaWQgbWFpbih2b2lkKSB7CisgIC8vIEl0IHNl
ZW1zIGFzIGxvbmcgYXMgdGhpcyBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbiByZWZlcmVuY2VzCisg
IC8vIGdsX1BvaW50Q29vcmQsIHRoZSBmcmFnbWVudCdzIGNvbG9yIGlzIGluY29ycmVjdC4KKyAg
dmVjMiBkaWZmID0gZ2xfUG9pbnRDb29yZCAtIHZlYzIoLjUsIC41KTsKKyAgaWYgKGxlbmd0aChk
aWZmKSA+IDAuNSkKKyAgICBkaXNjYXJkOworCisgIC8vIFRoZSBwb2ludCBzaG91bGQgYmUgYSBz
b2xpZCBjb2xvci4KKyAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKy8vIFJhZGFyIDEzMjM5MzE0CitkZXNjcmlwdGlvbigiVGhp
cyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBncmFwaGljcyBkcml2ZXIgYnVnIGFmZmVjdGlu
ZyBlbmQgY2FwcyBvbiByb2FkcyBpbiBNYXBzR0wuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKK3ZhciBjYW52YXNXaWR0aCA9IGNhbnZhcy53aWR0aDsKK3ZhciBjYW52YXNI
ZWlnaHQgPSBjYW52YXMuaGVpZ2h0OwordmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIHZhciBwb2ludFNpemVSYW5nZSA9IGdsLmdldFBhcmFt
ZXRlcihnbC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpOworICAvLyBUaGlzIHRlc3QgY2FuJ3Qg
cmVhbGx5IHJ1biB3aXRob3V0IGEgbWF4aW11bSBwb2ludCBzaXplIG9mIGF0IGxlYXN0IDIKKyAg
aWYgKHBvaW50U2l6ZVJhbmdlWzFdIDwgMi4wKSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCBuZWVk
cyBhIG1heGltdW0gQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFIG9mIGF0IGxlYXN0IDIiKTsKKyAg
ICByZXR1cm47CisgIH0KKworICB2YXIgdnMgPSB3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2ws
ICJ2cyIsIGdsLlZFUlRFWF9TSEFERVIpOworICB2YXIgZnMgPSB3dHUubG9hZFNoYWRlckZyb21T
Y3JpcHQoZ2wsICJmcyIsIGdsLkZSQUdNRU5UX1NIQURFUik7CisgIGlmICghdnMgfHwgIWZzKSB7
CisgICAgdGVzdEZhaWxlZCgiTG9hZGluZyBzaGFkZXJzIGZhaWxlZCIpOworICAgIHJldHVybjsK
KyAgfQorCisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3ZzLCBmc10sIFsn
YV92ZXJ0ZXgnXSk7CisgIGlmICghcHJvZ3JhbSkgeworICAgIHRlc3RGYWlsZWQoIkxvYWRpbmcg
cHJvZ3JhbSBmYWlsZWQiKTsKKyAgICByZXR1cm47CisgIH0KKworICBnbC51c2VQcm9ncmFtKHBy
b2dyYW0pOworICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEuMCk7CisgIGdsLmRpc2FibGUoZ2wu
REVQVEhfVEVTVCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgIC8vIHVu
aWZvcm0gZmxvYXQgdV9wb2ludFNpemU7CisgIHZhciB1bmkgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgJ3VfcG9pbnRTaXplJyk7CisgIGdsLnVuaWZvcm0xZih1bmksIE1hdGgubWlu
KDIwLjAsIHBvaW50U2l6ZVJhbmdlWzFdKSk7CisKKyAgLy8gdmVydGV4CisgIHZhciBidWZmZXIg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcik7CisgIHZhciB2ZXJ0ZXhEYXRhID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgMCwgMCwK
KyAgXSk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhEYXRhLCBnbC5T
VEFUSUNfRFJBVyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICBnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgZ2wuZHJh
d0FycmF5cyhnbC5QT0lOVFMsIDAsIDEpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBjYW52
YXNXaWR0aCAvIDIsIGNhbnZhc0hlaWdodCAvIDIsIDEsIDEsCisgICAgICBbMCwgMjU1LCAwLCAy
NTVdLCAiQ2VudGVyIHBpeGVsIHNob3VsZCBiZSBncmVlbiIsIDIpOworfQorCitydW5UZXN0KCk7
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2x5Z29uLW9mZnNldC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
cmVuZGVyaW5nL3BvbHlnb24tb2Zmc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZjMGEwY2NhOWYzZWRh
YjAyYmNlYTY4NTc0ZjYwY2YwOThmOWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9w
b2x5Z29uLW9mZnNldC5odG1sCkBAIC0wLDAgKzEsMTczIEBACivvu788IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzMgcG9zOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHZlYzQgY29sOworCit2b2lkIG1haW4oKQoreworICAgIGds
X0ZyYWdDb2xvciA9IGNvbDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCitmdW5jdGlvbiBkcmF3KGdsLCBhcnIsIGNv
bExvYywgY29sKQoreworICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyKTsK
KyAgICB2YXIgdmVydEJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCB2ZXJ0QnVmKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgdmVydGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgZ2wudW5pZm9ybTRmdihjb2xM
b2MsIGNvbCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgdmVydGlj
ZXMubGVuZ3RoIC8gMyk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyKGdsLCBjb2wsIHopCit7CisgICAg
Z2wuY2xlYXJDb2xvcihjb2xbMF0sIGNvbFsxXSwgY29sWzJdLCBjb2xbM10pOworICAgIGdsLmNs
ZWFyRGVwdGgoeik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRI
X0JVRkZFUl9CSVQpOworfQorCitmdW5jdGlvbiBjaGVjayhnbCkKK3sKKyAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCAwLCAxNiwgMTYsIFswLCAyNTUsIDAsIDI1NV0sICdyZXN1bHQgc2hv
dWxkIGJlIGdyZWVuJyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBmbGF0
U3F1YXJlID0gWy0xLCAtMSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAtMSwgMSwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgMSwgLTEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIDEs
IDEsIDBdOworICAgIHZhciBzbGFudGVkU3F1YXJlID0gWy0xLCAtMSwgLTAuNSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAtMSwgIDEsIC0wLjUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIC0xLCAwLjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAxLCAwLjVdOworICAg
IHZhciByZWQgPSBbMSwgMCwgMCwgMV07CisgICAgdmFyIGdyZWVuID0gWzAsIDEsIDAsIDFdOwor
ICAgIHZhciBibHVlID0gWzAsIDAsIDEsIDFdOworCisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgndGVzdGJlZCcsIHsgYW50aWFsaWFzOiBmYWxzZSB9KTsKKyAgICBpZiAoIWdsKQor
ICAgIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnY291bGQgbm90IGNyZWF0ZSBjb250ZXh0Jyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFt
KGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBbJ3BvcyddKTsKKyAgICB2YXIgY29sTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdjb2wnKTsKKworICAgIGdsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworCisgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAg
IGdsLmRlcHRoRnVuYyhnbC5MRVFVQUwpOworCisgICAgZGVidWcoJ1BvbHlnb24gb2Zmc2V0IGZp
bGwgc2hvdWxkIGJlIG9mZiBieSBkZWZhdWx0Jyk7CisgICAgY2xlYXIoZ2wsIHJlZCwgMS4wKTsK
KyAgICBkcmF3KGdsLCBzbGFudGVkU3F1YXJlLCBjb2xMb2MsIGJsdWUpOworICAgIGRyYXcoZ2ws
IHNsYW50ZWRTcXVhcmUsIGNvbExvYywgZ3JlZW4pOworICAgIGNoZWNrKGdsKTsKKworICAgIGRl
YnVnKCdQb2x5Z29uIG9mZnNldCB1bml0cyBzaG91bGQgaGF2ZSBubyBlZmZlY3Qgd2hlbiBmaWxs
IGlzIG9mZicpOworICAgIGNsZWFyKGdsLCByZWQsIDEuMCk7CisgICAgZHJhdyhnbCwgc2xhbnRl
ZFNxdWFyZSwgY29sTG9jLCBibHVlKTsKKyAgICBnbC5wb2x5Z29uT2Zmc2V0KDAsIDEwKTsKKyAg
ICBkcmF3KGdsLCBzbGFudGVkU3F1YXJlLCBjb2xMb2MsIGdyZWVuKTsKKyAgICBjaGVjayhnbCk7
CisKKyAgICBkZWJ1ZygnUG9seWdvbiBvZmZzZXQgZmFjdG9yIHNob3VsZCBoYXZlIG5vIGVmZmVj
dCB3aGVuIGZpbGwgaXMgb2ZmJyk7CisgICAgY2xlYXIoZ2wsIHJlZCwgMS4wKTsKKyAgICBnbC5w
b2x5Z29uT2Zmc2V0KDAsIDApOworICAgIGRyYXcoZ2wsIHNsYW50ZWRTcXVhcmUsIGNvbExvYywg
Ymx1ZSk7CisgICAgZ2wucG9seWdvbk9mZnNldCgxLjAsIDApOworICAgIGRyYXcoZ2wsIHNsYW50
ZWRTcXVhcmUsIGNvbExvYywgZ3JlZW4pOworICAgIGNoZWNrKGdsKTsKKworICAgIGRlYnVnKCda
ZXJvIHBvbHlnb24gb2Zmc2V0IHVuaXRzIGFuZCBmYWN0b3Igc2hvdWxkIGhhdmUgbm8gZWZmZWN0
Jyk7CisgICAgY2xlYXIoZ2wsIHJlZCwgMS4wKTsKKyAgICBnbC5lbmFibGUoZ2wuUE9MWUdPTl9P
RkZTRVRfRklMTCk7CisgICAgZ2wucG9seWdvbk9mZnNldCgwLCAwKTsKKyAgICBkcmF3KGdsLCBz
bGFudGVkU3F1YXJlLCBjb2xMb2MsIGJsdWUpOworICAgIGRyYXcoZ2wsIHNsYW50ZWRTcXVhcmUs
IGNvbExvYywgZ3JlZW4pOworICAgIGNoZWNrKGdsKTsKKworICAgIC8vIEl0IGFwcGVhcnMgdG8g
YmUgVkVSWSBjb21tb24gZm9yIGRyaXZlcnMgdG8gaW1wbGVtZW50IHRoZSB1bml0cyBvZmZzZXQg
aW4KKyAgICAvLyBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljLCB3aGljaCByZXN1bHRzIGluIHJv
dW50LXRvLW5lYXJlc3QtZXZlbiB0byBjYXVzZQorICAgIC8vIGFuIG9mZnNldCBvZiAxIHRvIHNv
bWV0aW1lcyBub3QgYWx0ZXIgdGhlIG9yZGVyIGJldHdlZW4gdGhlc2UgcG9seWdvbnMuCisgICAg
ZGVidWcoJ1BvbHlnb24gb2Zmc2V0IHVuaXRzIG9mIDIgc2hvdWxkIGFsdGVyIG9yZGVyIG9mIGZs
YXQgcG9seWdvbnMnKTsKKyAgICBjbGVhcihnbCwgcmVkLCAxLjApOworICAgIGRyYXcoZ2wsIGZs
YXRTcXVhcmUsIGNvbExvYywgZ3JlZW4pOworICAgIGdsLnBvbHlnb25PZmZzZXQoMCwgMik7Cisg
ICAgZHJhdyhnbCwgZmxhdFNxdWFyZSwgY29sTG9jLCBibHVlKTsKKyAgICBjaGVjayhnbCk7CisK
KyAgICBkZWJ1ZygnUG9seWdvbiBvZmZzZXQgZmFjdG9yIG9mIDAuMSBzaG91bGQgYWx0ZXIgb3Jk
ZXIgb2Ygc2xhbnRlZCBwb2x5Z29ucycpOworICAgIGNsZWFyKGdsLCByZWQsIDEuMCk7CisgICAg
Z2wucG9seWdvbk9mZnNldCgwLCAwKTsKKyAgICBkcmF3KGdsLCBzbGFudGVkU3F1YXJlLCBjb2xM
b2MsIGdyZWVuKTsKKyAgICBnbC5wb2x5Z29uT2Zmc2V0KDAuMSwgMCk7CisgICAgZHJhdyhnbCwg
c2xhbnRlZFNxdWFyZSwgY29sTG9jLCBibHVlKTsKKyAgICBjaGVjayhnbCk7CisKKyAgICBkZWJ1
ZygnUG9seWdvbiBvZmZzZXQgZmFjdG9yIG9mIDAuMSBzaG91bGQgbm90IGFsdGVyIG9yZGVyIG9m
IGZsYXQgcG9seWdvbnMnKTsKKyAgICBjbGVhcihnbCwgcmVkLCAxLjApOworICAgIGdsLnBvbHln
b25PZmZzZXQoMCwgMCk7CisgICAgZHJhdyhnbCwgZmxhdFNxdWFyZSwgY29sTG9jLCBibHVlKTsK
KyAgICBnbC5wb2x5Z29uT2Zmc2V0KDAuMSwgMCk7CisgICAgZHJhdyhnbCwgZmxhdFNxdWFyZSwg
Y29sTG9jLCBncmVlbik7CisgICAgY2hlY2soZ2wpOworCisgICAgZGVidWcoJ0Rpc2FibGluZyBw
b2x5Z29uIG9mZnNldCBmaWxsIHNob3VsZCBsZWF2ZSBvcmRlciB1bmFmZmVjdGVkJyk7CisgICAg
Y2xlYXIoZ2wsIHJlZCwgMS4wKTsKKyAgICBnbC5wb2x5Z29uT2Zmc2V0KDAuMSwgMSk7CisgICAg
Z2wuZGlzYWJsZShnbC5QT0xZR09OX09GRlNFVF9GSUxMKTsKKyAgICBkcmF3KGdsLCBzbGFudGVk
U3F1YXJlLCBjb2xMb2MsIGJsdWUpOworICAgIGRyYXcoZ2wsIHNsYW50ZWRTcXVhcmUsIGNvbExv
YywgZ3JlZW4pOworICAgIGNoZWNrKGdsKTsKKworICAgIGRlYnVnKCdFbmFibGluZyBwb2x5Z29u
IG9mZnNldCBmaWxsIHNob3VsZCBhZmZlY3Qgb3JkZXIgYWdhaW4nKTsKKyAgICBjbGVhcihnbCwg
cmVkLCAxLjApOworICAgIGRyYXcoZ2wsIHNsYW50ZWRTcXVhcmUsIGNvbExvYywgZ3JlZW4pOwor
ICAgIGdsLmVuYWJsZShnbC5QT0xZR09OX09GRlNFVF9GSUxMKTsKKyAgICBkcmF3KGdsLCBzbGFu
dGVkU3F1YXJlLCBjb2xMb2MsIGJsdWUpOworICAgIGNoZWNrKGdsKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiIHN0eWxlPSJ3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IHRoYXQgcG9seWdvbiBvZmZzZXQgd29y
a3MnKTsKK3J1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3ByZXNlcnZlZHJhd2luZ2J1
ZmZlci1sZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcHJlc2VydmVkcmF3aW5nYnVmZmVyLWxlYWsuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMDAyZGIxODM2MmQ4NmU0NDUzZWM0Y2YwNzUyYmE4NDYyMjE1M2I3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3ByZXNlcnZlZHJhd2luZ2J1ZmZlci1sZWFrLmh0
bWwKQEAgLTAsMCArMSw0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgUHJlc2VydmVEcmF3aW5nQnVmZmVyIExlYWsgVGVzdDwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvaXRlcmFibGUtdGVzdC5qcyI+IDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNDA5
NiIgaGVpZ2h0PSI0MDk2IiBzdHlsZT0id2lkdGg6IDEyOHB4OyBoZWlnaHQ6IDEyOHB4OyI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2VuYWJsZUpTVGVzdFByZVZlcmJvc2VM
b2dnaW5nKCk7CitkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CitkZWJ1ZygnUmVncmVzc2lv
biB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lz
c3Vlcy9kZXRhaWw/aWQ9NjgyNDgyIj5DaHJvbWl1bSBidWcgNjgyNDgyPC9hPicpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSk7CitpZiAoIWdsKSB7CisgICAg
dGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIGZpbmlzaFRlc3QoKTsK
K30gZWxzZSB7CisgICAgdmFyIHRlc3QgPSBJdGVyYWJsZVRlc3QuY3JlYXRlUHJlc2VydmVEcmF3
aW5nQnVmZmVyTGVha1Rlc3QoZ2wpOworICAgIHZhciBpdGVyYXRpb25zID0gcGFyc2VJbnQod3R1
LmdldFVybE9wdGlvbnMoKS5pdGVyYXRpb25zLCAxMCkgfHwgNTA7CisgICAgSXRlcmFibGVUZXN0
LnJ1bih0ZXN0LCBpdGVyYXRpb25zKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5n
L3JlbmRlcmluZy1zYW1wbGluZy1mZWVkYmFjay1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcmVuZGVy
aW5nLXNhbXBsaW5nLWZlZWRiYWNrLWxvb3AuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODhlZTk5YWVjZWFm
Yjc2MTgxZDVmYzk3ZDZhZjk2MWE5OTcxMTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5n
L3JlbmRlcmluZy1zYW1wbGluZy1mZWVkYmFjay1sb29wLmh0bWwKQEAgLTAsMCArMSwxODMgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIFJlbmRlcmluZyBhbmQgU2FtcGxpbmcgRmVlZGJhY2sgTG9vcCBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjgiIGhlaWdodD0iOCI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0idnMxMDAiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K2F0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIGFUZXhDb29yZDsKK3Zh
cnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQ
b3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IGFUZXhDb29yZDsKK30KKzwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJmczEwMCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZXh0ZW5zaW9uIEdM
X0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3Vu
aWZvcm0gc2FtcGxlcjJEIHRleDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigp
IHsKKyAgICBnbF9GcmFnRGF0YVswXSA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKTsKKyAgICBn
bF9GcmFnRGF0YVsxXSA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKTsKK30KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IGlkPSJmczEwMC1uby1leHQtZHJhdy1idWZmZXJzIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQg
dGV4OwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdE
YXRhWzBdID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpOworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9InZzMzAwIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitp
biBoaWdocCB2ZWM0IGFQb3NpdGlvbjsKK2luIHZlYzIgYVRleENvb3JkOworb3V0IHZlYzIgdGV4
Q29vcmQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247CisgICAg
dGV4Q29vcmQgPSBhVGV4Q29vcmQ7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnMzMDAi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CitpbiB2ZWMyIHRleENvb3JkOwor
b3V0IHZlYzQgb0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIG9Db2xvciA9IHRleHR1cmUodGV4
LCB0ZXhDb29yZCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwor
Y29uc3Qgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHJlbmRlcmluZyB0byB0aGUgc2FtZSB0ZXh0dXJlIHdo
ZXJlIGl0IHNhbXBsZXMgZnJvbS4iKTsKKworY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJleGFtcGxlIik7CisKK2NvbnN0IHdpZHRoID0gODsKK2NvbnN0IGhlaWdodCA9IDg7CitsZXQg
dGV4OworbGV0IGZibzsKK2xldCBkcmF3QnVmZmVycyA9IG51bGw7CisKK2lmICghZ2wpIHsKKyAg
ICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBpZiAoZ2wuZHJh
d0J1ZmZlcnMpIHsKKyAgICAgICAgZGVidWcoIlVzaW5nIHdlYmdsMi5kcmF3QnVmZmVycy4iKTsK
KyAgICAgICAgZHJhd0J1ZmZlcnMgPSAoeCkgPT4gZ2wuZHJhd0J1ZmZlcnMoeCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgY29uc3QgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kcmF3X2J1
ZmZlcnMiKTsKKyAgICAgICAgaWYgKGV4dCkgeworICAgICAgICAgICAgZGVidWcoIlVzaW5nIFdF
QkdMX2RyYXdfYnVmZmVycy5kcmF3QnVmZmVyc1dFQkdMLiIpOworICAgICAgICAgICAgZHJhd0J1
ZmZlcnMgPSAoeCkgPT4gZXh0LmRyYXdCdWZmZXJzV0VCR0woeCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpbml0KCk7CisKKyAgICAvLyBUaGUgc2FtcGxpbmcgdGV4dHVyZSBpcyBib3VuZCB0
byBDT0xPUl9BVFRBQ0hNRU5UMSBkdXJpbmcgcmVzb3VyY2UgYWxsb2NhdGlvbgorICAgIGFsbG9j
YXRlX3Jlc291cmNlKCk7CisKKyAgICByZW5kZXJpbmdfc2FtcGxpbmdfZmVlZGJhY2tfbG9vcChu
dWxsKTsKKyAgICBpZiAoZHJhd0J1ZmZlcnMpIHsKKyAgICAgICAgcmVuZGVyaW5nX3NhbXBsaW5n
X2ZlZWRiYWNrX2xvb3AoW2dsLk5PTkVdKTsKKyAgICAgICAgcmVuZGVyaW5nX3NhbXBsaW5nX2Zl
ZWRiYWNrX2xvb3AoW2dsLkNPTE9SX0FUVEFDSE1FTlQwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2wuQ09MT1JfQVRUQUNITUVOVDArMV0pOworICAgICAgICBy
ZW5kZXJpbmdfc2FtcGxpbmdfZmVlZGJhY2tfbG9vcChbZ2wuTk9ORSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLkNPTE9SX0FUVEFDSE1FTlQwKzFdKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7CisgICAgbGV0IHNoYWRlcnMgPSBbInZzMTAwIiwg
ImZzMTAwIl07CisgICAgaWYgKGdsLnRleFN0b3JhZ2UyRCkgeworICAgICAgICBzaGFkZXJzID0g
WyJ2czMwMCIsICJmczMwMCJdOworICAgIH0gZWxzZSBpZiAoIWRyYXdCdWZmZXJzKSB7CisgICAg
ICAgIHNoYWRlcnMgPSBbInZzMTAwIiwgImZzMTAwLW5vLWV4dC1kcmF3LWJ1ZmZlcnMiXTsKKyAg
ICB9CisgICAgY29uc3QgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIHNoYWRlcnMsIFsi
YVBvc2l0aW9uIiwgImFUZXhDb29yZCJdLCBbMCwgMV0pOworICAgIGNvbnN0IHBvc2l0aW9uTG9j
ID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFQb3NpdGlvbiIpOworICAgIGNvbnN0
IHRleENvb3JkTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFUZXhDb29yZCIp
OworICAgIGlmICghcHJvZ3JhbSB8fCBwb3NpdGlvbkxvYyA8IDAgfHwgdGV4Q29vcmRMb2MgPCAw
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldCB1cCBwcm9ncmFtIGZhaWxlZCIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IHRleExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidGV4Iik7CisgICAgZ2wudW5pZm9ybTFpKHRleExvYywgMCk7CisgICAgdGVz
dFBhc3NlZCgiU2V0IHVwIHByb2dyYW0gc3VjY2VlZGVkIik7CisKKyAgICB3dHUuc2V0dXBVbml0
UXVhZChnbCwgMCwgMSk7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cit9
CisKK2Z1bmN0aW9uIGFsbG9jYXRlX3Jlc291cmNlKCkgeworICAgIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwgMiwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7Cit9CisKK2Z1bmN0aW9uIHJlbmRlcmluZ19zYW1w
bGluZ19mZWVkYmFja19sb29wKGRyYXdfYnVmZmVycykgeworICAgIGRlYnVnKCJkcmF3X2J1ZmZl
cnM6ICIgKyBKU09OLnN0cmluZ2lmeShkcmF3X2J1ZmZlcnMpKTsKKworICAgIGlmIChkcmF3X2J1
ZmZlcnMpIHsKKyAgICAgICAgZHJhd0J1ZmZlcnMoZHJhd19idWZmZXJzKTsKKyAgICB9CisKKyAg
ICAvLyBNYWtlIHN1cmUgZnJhbWVidWZmZXIgaXMgY29tcGxldGUgYmVmb3JlIGZlZWRiYWNrIGxv
b3AgZGV0ZWN0aW9uCisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IkZyYW1lYnVmZmVyIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
Z2wuTkVBUkVTVCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkZlZWRiYWNrIGxvb3Ag
ZGV0ZWN0aW9uIHNob3VsZCBpZ25vcmUgZHJhd0J1ZmZlcnMgc2V0dGluZ3MuIik7CisKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wu
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCk7CisgICAgLy8gVGhlIHRleHR1cmUgd2lsbCBiZSBtaXBt
YXAgaW5jb21wbGV0ZSwgc28gZmVlZGJhY2sgY2Fubm90IG9jY3VyIG5vciBiZSBjb25zaXN0ZW50
bHkgZXZhbHVhdGVkLgorICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJGZWVkYmFjayBsb29wIGRldGVjdGlv
biBzaG91bGQgaWdub3JlIHNhbXBsZWQgaW5jb21wbGV0ZSB0ZXh0dXJlcy4iKTsKKworICAgIGlm
IChkcmF3X2J1ZmZlcnMpIHsKKyAgICAgICAgZHJhd0J1ZmZlcnMoW2dsLkNPTE9SX0FUVEFDSE1F
TlQwXSk7CisgICAgfQorfQorCitnbC5kZWxldGVUZXh0dXJlKHRleCk7CitnbC5kZWxldGVGcmFt
ZWJ1ZmZlcihmYm8pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9yZW5kZXJpbmctc3RlbmNpbC1s
YXJnZS12aWV3cG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3JlbmRlcmluZy1zdGVuY2lsLWxhcmdlLXZp
ZXdwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIwMjEwNmMxMzcyYTAyOWY1OGY1NjYwY2ExYmQ4NzU3
NDE4YTc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9yZW5kZXJpbmctc3RlbmNpbC1s
YXJnZS12aWV3cG9ydC5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFJlbmRlcmluZyBTdGVuY2ls
IGxhcmdlIHZpZXdwb3J0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2cyIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9Qb3NpdGlvbjsKK3ZvaWQgbWFpbigp
Cit7CisgIGdsX1Bvc2l0aW9uID0gYV9Qb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0iZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit1bmlmb3JtIHZlYzQgdV9kcmF3X2NvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJh
Z0NvbG9yID0gdV9kcmF3X2NvbG9yOworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCByZXByb2R1Y2VzIGEgZHJpdmVyIGJ1ZyBvbiBJbnRlbCB3aW5kb3dz
IHBsYXRmb3JtcyBodHRwOi8vY3JidWcuY29tLzc4MjMxNy4iKTsKKwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHtzdGVuY2lsOiB0cnVlfSk7CisKK3ZhciBwcm9ncmFt
LCBjb2xvckxvYzsKKworLy8gUmVuZGVyaW5nIHdpdGggbGFyZ2Ugdmlld3BvcnQgYW5kIHN0ZW5j
aWwgYnVmZmVyIGVuYWJsZWQgd2lsbCBsZWFkIHRvCisvLyBtZW1vcnkgbGVhayBhbmQgZHJpdmVy
IGNyYXNoIG9uIGQzZDExIGRyaXZlciBvbiBJbnRlbCBwbGF0Zm9ybXMuCitmdW5jdGlvbiByZW5k
ZXJfc3RlbmNpbCgpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
eGFtcGxlIik7CisgIGdsLnVuaWZvcm00Zihjb2xvckxvYywgMS4wLCAwLjAsIDAuMCwgMS4wKTsK
KworICBjYW52YXMud2lkdGggPSAzMjc2NzsKKyAgY2FudmFzLmhlaWdodCA9IDMyNzY3OworICBn
bC52aWV3cG9ydCgwLCAwLCAzMjc2NywgMzI3NjcpOworCisgIGdsLmVuYWJsZShnbC5TVEVOQ0lM
X1RFU1QpOworCisgIHZhciBrU3RlbmNpbFJlZiA9IDQ7CisgIGdsLnN0ZW5jaWxPcChnbC5SRVBM
QUNFLCBnbC5SRVBMQUNFLCBnbC5SRVBMQUNFKTsKKyAgZ2wuc3RlbmNpbEZ1bmMoZ2wuQUxXQVlT
LCBrU3RlbmNpbFJlZiwgMHhGRik7CisKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDYpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsyNTUsIDAsIDAsIDI1NV0sCisgICAgICAgICAg
ICAgICAgICAgICAgInN0ZW5jaWwgdGVzdCBzaG91bGQgYmUgcmVkIik7Cit9CisKK2lmICghZ2wp
IHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVs
c2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBwcm9n
cmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2cyIsICJmcyJdLCBbImFfUG9zaXRpb24iXSk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBwcm9ncmFt
IGluaXRpYWxpemF0aW9uIik7CisgICAgc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIo
cHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKKworICAgIGNvbG9yTG9jID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2RyYXdfY29sb3IiKQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicXVlcnkgdW5pZm9ybSBsb2NhdGlvbiIpOwor
ICAgIHNob3VsZEJlTm9uTnVsbCgnY29sb3JMb2MnKTsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChn
bCwgMCk7CisKKyAgICByZW5kZXJfc3RlbmNpbCgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmlu
Zy9zY2lzc29yLXJlY3QtcmVwZWF0ZWQtcmVuZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvc2Npc3Nv
ci1yZWN0LXJlcGVhdGVkLXJlbmRlcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NmRhMTYxNGFlMGUx
N2I0ZThiOWFmNjk3NWI5ODQxNmJiZjAwNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcv
c2Npc3Nvci1yZWN0LXJlcGVhdGVkLXJlbmRlcmluZy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlNjaXNz
b3IgUmVjdGFuZ2xlIFJlcGVhdGVkIFJlbmRlcmluZyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitkZXNjcmlwdGlvbigpOworZGVidWcoJ1Jl
Z3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJv
bWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTc3ODc3MCI+Q2hyb21pdW0gYnVnIDc3ODc3MDwvYT4nKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisvLyBUaGVzZSBjb250ZXh0IGNyZWF0aW9u
IGF0dHJpYnV0ZXMgYXJlIHNpZ25pZmljYW50IHRvIHJlcHJvZHVjZSB0aGUgYnVnLgordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHthbHBoYTogZmFsc2UsIGFudGlhbGlh
czogZmFsc2V9KTsKKworLy8gRHJhdyBpbnRvIHRoZSB1cHBlciByaWdodCBxdWFkcmFudC4KK3Zh
ciB4ICAgICAgPSA2NDsKK3ZhciB5ICAgICAgPSA2NDsKK3ZhciB3aWR0aCAgPSA2NDsKK3ZhciBo
ZWlnaHQgPSA2NDsKKwordmFyIG51bVJlbmRlcnMgPSAxMDsKKworZnVuY3Rpb24gcmVuZGVyKCkg
eworICAgIGdsLnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLnNjaXNzb3Io
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7Cisg
ICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gSWYgYW55dGhpbmcgYnV0IGJsYWNrIGlzIGV2ZXIg
c2VlbiBpbiB0aGUgdW4tZHJhd24gcmVnaW9uIG9mCisgICAgLy8gdGhlIGNhbnZhcywgdGhlIHRl
c3QgZmFpbHMuCisgICAgdmFyIGJsYWNrID0gWzAsIDAsIDAsIDI1NV07CisgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMTAsIDEwLCAxMCwgMTAsIGJsYWNrLCAic2hvdWxkIGJlIGJsYWNrIiwg
MSk7CisKKyAgICBpZiAoLS1udW1SZW5kZXJzID4gMCkgeworICAgICAgICB3aW5kb3cucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoVGVz
dCgpOworICAgIH0KK30KKword2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3NpbXBsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3NpbXBs
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMwMWQyMTM1Nzc5MzVhYzJkZmY2NmFlMmNhNTNmZTk2ZjE5NDUz
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvc2ltcGxlLmh0bWwKQEAgLTAsMCArMSw3
NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+U2ltcGxlIFJlbmRlcmluZyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KK1RoZXJlIGlzIHN1cHBvc2Vk
IHRvIGJlIGFuIGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQncyBub3QgaW1wb3J0YW50Lgor
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K2F0dHJpYnV0ZSB2ZWM0IGFfUG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlv
biA9IGFfUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2b2lkIG1haW4oKQoreworICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAsMSwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZnVuY3Rpb24gaW5pdCgpCit7CisgIGRlc2NyaXB0
aW9uKCk7CisKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworICB2
YXIgcHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHQoZ2wsICJ2c2hhZGVyIiwgImZz
aGFkZXIiKTsKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgdmFyIGxvYyA9IGdsLmdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX1Bvc2l0aW9uIik7CisKKyAgdmFyIHZlcnRleE9iamVj
dCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVyRGF0YSgKKyAgICBnbC5BUlJBWV9CVUZGRVIsCisg
ICAgbmV3IEZsb2F0MzJBcnJheSgKKyAgICBbICAxLCAgMSwKKyAgICAgIC0xLCAgMSwKKyAgICAg
IC0xLCAtMSwKKyAgICAgICAxLCAgMSwKKyAgICAgIC0xLCAtMSwKKyAgICAgICAxLCAtMV0pLAor
ICAgIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9jKTsK
KyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihsb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLDAsMCwwXSwgInNob3VsZCBiZSBibGFjayIsIDAp
OworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgIHd0dS5jaGVja0NhbnZh
cyhnbCwgWzAsMjU1LDAsMjU1XSwgInNob3VsZCBiZSBncmVlbiIsIDApOworCisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIp
OworfQorCitpbml0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy90ZXh0dXJlLXN3aXRjaC1wZXJm
b3JtYW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3RleHR1cmUtc3dpdGNoLXBlcmZvcm1hbmNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmRjOTA5OWE2YjAzMGVlOTQ3YjgzM2YyZGZjZDIyZGQ4MTNjZTM2OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy90ZXh0dXJlLXN3aXRjaC1wZXJmb3JtYW5jZS5odG1s
CkBAIC0wLDAgKzEsMTAxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFN3aXRjaCBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oIkVuc3VyZXMgdGhhdCBzd2l0Y2hpbmcgdGhlIHRleHR1cmUgcmVmZXJlbmNlZCBieSBhIHNh
bXBsZXIgdW5pZm9ybSBwZXJmb3JtcyByZWFzb25hYmx5IHdlbGwuIik7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7CitjYW52YXMud2lkdGggPSAzMjsKK2NhbnZhcy5oZWlnaHQgPSAzMjsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworICBmaW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICB2YXIg
cHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisgIHZhciB0ZXggPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwp
OworCisgIHZhciB0ZXgyID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5hY3RpdmVUZXh0dXJl
KGdsLlRFWFRVUkUxKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworICB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ0ZXgiKTsKKworICB2YXIgUlVOVElNRSA9IDIwMDA7CisgIHZhciBU
SFJFU0hPTEQgPSAwLjg7CisgIHZhciBiYXNlU3RhcnRUaW1lID0gMDsKKyAgdmFyIGJhc2VGcmFt
ZUNvdW50ID0gMDsKKyAgdmFyIHRlc3RTdGFydFRpbWUgPSAwOworICB2YXIgdGVzdEZyYW1lQ291
bnQgPSAwOworCisgIGJhc2VTdGFydFRpbWUgPSBEYXRlLm5vdygpOworICBmdW5jdGlvbiBkcmF3
QmFzZWxpbmUoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0MDA7ICsraSkgeworICAgICAg
Z2wudW5pZm9ybTFpKGxvYywgMCk7CisgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisgICAgICBnbC51bmlmb3JtMWkobG9jLCAwKTsKKyAgICAgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB9CisKKyAgICArK2Jhc2VGcmFtZUNvdW50OworCisg
ICAgaWYgKERhdGUubm93KCkgLSBiYXNlU3RhcnRUaW1lID4gUlVOVElNRSkgeworICAgICAgdGVz
dFN0YXJ0VGltZSA9IERhdGUubm93KCk7CisgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJh
d1Rlc3QpOworICAgIH0gZWxzZSB7CisgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJhd0Jh
c2VsaW5lKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBkcmF3VGVzdCgpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDQwMDsgKytpKSB7CisgICAgICBnbC51bmlmb3JtMWkobG9jLCAwKTsK
KyAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICAgIGdsLnVuaWZv
cm0xaShsb2MsIDEpOworICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwor
ICAgIH0KKworICAgICsrdGVzdEZyYW1lQ291bnQ7CisKKyAgICBpZiAoRGF0ZS5ub3coKSAtIHRl
c3RTdGFydFRpbWUgPiBSVU5USU1FKSB7CisgICAgICB2YXIgcGVyZlN0cmluZyA9ICIgLSBhY2hp
ZXZlZCAiICsgdGVzdEZyYW1lQ291bnQgKyAiIGZyYW1lcyBpbiAiICsgKChEYXRlLm5vdygpIC0g
dGVzdFN0YXJ0VGltZSkgLyAxMDAwLjApICsKKyAgICAgICAgIiBzZWNvbmRzICgiICsgKHRlc3RG
cmFtZUNvdW50IC8gYmFzZUZyYW1lQ291bnQpLnRvRml4ZWQoMikgKyAiIHRpbWVzIGJhc2VsaW5l
IHBlcmZvcm1hbmNlKSI7CisgICAgICBpZiAodGVzdEZyYW1lQ291bnQgPiBiYXNlRnJhbWVDb3Vu
dCAqIFRIUkVTSE9MRCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJUZXh0dXJlIHN3aXRjaGluZyBk
aWQgbm90IHNpZ25pZmljYW50bHkgaHVydCBwZXJmb3JtYW5jZSIgKyBwZXJmU3RyaW5nKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRleHR1cmUgc3dpdGNoaW5nIHNpZ25p
ZmljYW50bHkgaHVydCBwZXJmb3JtYW5jZSIgKyBwZXJmU3RyaW5nKTsKKyAgICAgIH0KKyAgICAg
IGNvbnNvbGUubG9nKHRlc3RGcmFtZUNvdW50KTsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9
IGVsc2UgeworICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRyYXdUZXN0KTsKKyAgICB9Cisg
IH0KKworICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJhd0Jhc2VsaW5lKTsKK30KK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy90cmlhbmdsZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3RyaWFuZ2xlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOThhMDRjOTA1MDgxOTEyOTg0N2NkZTJkYmYxYjkwNmI2YzE0ZDM4NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy90cmlhbmdsZS5odG1sCkBAIC0wLDAgKzEsNzMg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PlJlbmRlcmluZyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KK1RoZXJlIGlzIHN1cHBvc2VkIHRvIGJlIGFu
IGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQncyBub3QgaW1wb3J0YW50LgorPC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0
ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9z
aXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLDAuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gaW5pdCgpCit7CisgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwor
CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoImV4YW1wbGUiKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0pOworCisgICAgdmFyIHZl
cnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLjUsMCwgLTAuNSwtMC41LDAsIDAuNSwtMC41LDAg
XSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsK
KyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJ
VCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworCisgICAgLy8gVGVz
dCBzZXZlcmFsIGxvY2F0aW9ucworICAgIC8vIEZpcnN0IGxpbmUgc2hvdWxkIGJlIGFsbCBibGFj
aworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDUwLCAxLCBbMCwgMCwgMCwgMF0p
OworCisgICAgLy8gTGluZSAxNSBzaG91bGQgYmUgcmVkIGZvciBhdCBsZWFzdCAxMCByZWQgcGl4
ZWxzIHN0YXJ0aW5nIDIwIHBpeGVscyBpbgorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDIw
LCAxNSwgMTAsIDEsIFsyNTUsIDAsIDAsIDI1NV0pOworCisgICAgLy8gTGFzdCBsaW5lIHNob3Vs
ZCBiZSBhbGwgYmxhY2sKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCA0OSwgNTAsIDEs
IFswLCAwLCAwLCAwXSk7Cit9CisKK2luaXQoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3ZlcnRl
eC10ZXh0dXJlLWZldGNoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvdmVydGV4LXRleHR1cmUtZmV0Y2guaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YjAxNGUxZDY2Y2FmZmYzYjBhNzQ4ZmFmNDk3NGE5ZTc4NjE5OTlmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3ZlcnRleC10ZXh0dXJlLWZldGNoLmh0bWwKQEAg
LTAsMCArMSw5MSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IFRleHR1cmUgRmV0Y2guPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3R5bGU9
IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnMiIHR5
cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9z
aXRpb247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwordW5pZm9ybSBzYW1wbGVyMkQgdV90
ZXh0dXJlOwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjsKKyAgICBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIGFfdGV4
Q29vcmQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcyIgdHlwZT0idGV4dC9zb21ldGhp
bmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZl
YzQgY29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiY2hlY2tzIHRo
YXQgdmVydGV4IHRleHR1cmUgZmV0Y2gsIGlmIHN1cHBvcnRlZCwgb3BlcmF0ZXMgY29ycmVjdGx5
LiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgiZXhhbXBsZSIpOworaWYgKCFnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTKSkgeworICB0ZXN0UGFzc2VkKCJObyB2ZXJ0ZXggdGV4dHVyZSBpbWFn
ZSB1bml0cyAodmVydGV4IHRleHR1cmUgZmV0Y2ggbm90IHN1cHBvcnRlZCkgLS0gdGhpcyBpcyBs
ZWdhbCIpOworfSBlbHNlIHsKKyAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsCisgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWworICAgICAgICAgICAgICAg
ICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAwLCAyNTUs
CisgICAgICAgICAgICAgICAgICAgIDAsIDAsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAg
ICAyNTUsIDI1NSwgMCwgMjU1XSkpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgImFmdGVyIGNyZWF0aW5nIHRleHR1cmUiKTsKKworICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFsidnMiLCAiZnMiXSwgWyJ2UG9zaXRpb24iLCAidlRleENvb3Jk
Il0pOworICBnbC51bmlmb3JtMWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3Rl
eHR1cmUiKSwgMCk7CisgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOworICBnbC5kaXNhYmxlKGdsLkRF
UFRIX1RFU1QpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVy
IGluaXRXZWJHTCIpOworICB2YXIgYnVmZmVyT2JqZWN0cyA9IHd0dS5zZXR1cFVuaXRRdWFkKGds
LCAwKTsKKyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworCisgIGdsLnZlcnRleEF0
dHJpYjJmKDEsIDAsIDApOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJTaG91bGQgYmUgcmVkLiIpOworCisg
IGdsLnZlcnRleEF0dHJpYjJmKDEsIDEsIDApOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJTaG91bGQgYmUg
Z3JlZW4uIik7CisKKyAgZ2wudmVydGV4QXR0cmliMmYoMSwgMCwgMSk7CisgIHd0dS5jbGVhckFu
ZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAsIDI1NSwgMjU1
XSwgIlNob3VsZCBiZSBibHVlLiIpOworCisgIGdsLnZlcnRleEF0dHJpYjJmKDEsIDEsIDEpOwor
ICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsy
NTUsIDI1NSwgMCwgMjU1XSwgIlNob3VsZCBiZSB5ZWxsb3cuIik7CisKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBkcmF3aW5nIik7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvc3RhdGUvZmItYXR0YWNoLWltcGxpY2l0LXRhcmdldC1hc3NpZ25tZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0
ZS9mYi1hdHRhY2gtaW1wbGljaXQtdGFyZ2V0LWFzc2lnbm1lbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MjQ3YzFmODU2OTNiNTg1OWM2ZjUwMmFmYWExNTIxMmY0NTRlYTE5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2Uvc3RhdGUvZmItYXR0YWNoLWltcGxpY2l0LXRhcmdldC1hc3NpZ25tZW50Lmh0bWwKQEAgLTAs
MCArMSw5NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSd1dGYtOCc+
Cis8dGl0bGU+V2ViR0wgZ2wgY2FsbHMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mn
Lz4KKzxzY3JpcHQgc3JjPScuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0nLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9J2Rlc2NyaXB0aW9uJz48L2Rpdj4KKzxkaXYgaWQ9J2NvbnNvbGUn
PjwvZGl2PgorPGNhbnZhcyBpZD0nY2FudmFzJyB3aWR0aD0nMicgaGVpZ2h0PScyJz4gPC9jYW52
YXM+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworZGVzY3JpcHRpb24oJ1Rlc3QgaW1wbGljaXQg
dGFyZ2V0IGFzc2lnbm1lbnQgZHVyaW5nIEZCIGF0dGFjaG1lbnQnKTsKKworY29uc3Qgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Citjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycp
OworbGV0IGZiLCByYiwgdGV4OworCisoKCkgPT4geworICAgIGlmICghZ2wpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgnY29udGV4dCBkb2VzIG5vdCBleGlzdCcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgMCwgJ05vIGVycm9ycycpOworCisgICAgLy8gLQorCisgICAgZGVidWcoJycpOworICAgIGRl
YnVnKCdmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcicpOworCisgICAgcmIgPSBnbC5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKKyAgICBzaG91bGRCZSgnZ2wuaXNSZW5kZXJidWZmZXIocmIpJywgJ2ZhbHNl
Jyk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgICBz
aG91bGRCZSgnZ2wuaXNSZW5kZXJidWZmZXIocmIpJywgJ3RydWUnKTsKKworICAgIHJiID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgc2hvdWxkQmUoJ2dsLmlzUmVuZGVyYnVmZmVyKHJi
KScsICdmYWxzZScpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYik7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlciBtdXN0IGJlIHByZWNlZWRlZCBieSBzb21lIGJpbmRSZW5kZXJidWZmZXInKTsK
KyAgICBzaG91bGRCZSgnZ2wuaXNSZW5kZXJidWZmZXIocmIpJywgJ2ZhbHNlJyk7CisKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnTm8gZXJyb3JzJyk7CisKKyAgICAvLyAtCisKKyAg
ICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ2ZyYW1lYnVmZmVyVGV4dHVyZTJEJyk7CisKKyAgICB0
ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgc2hvdWxkQmUoJ2dsLmlzVGV4dHVyZSh0ZXgp
JywgJ2ZhbHNlJyk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAg
ICBzaG91bGRCZSgnZ2wuaXNUZXh0dXJlKHRleCknLCAndHJ1ZScpOworCisgICAgdGV4ID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIHNob3VsZEJlKCdnbC5pc1RleHR1cmUodGV4KScsICdmYWxz
ZScpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgICAvLyBodHRwczovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTI0IDoKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2ZyYW1lYnVmZmVyVGV4dHVy
ZTJEIG11c3QgYmUgcHJlY2VlZGVkIGJ5IHNvbWUgYmluZFRleHR1cmUnKTsKKyAgICBzaG91bGRC
ZSgnZ2wuaXNUZXh0dXJlKHRleCknLCAnZmFsc2UnKTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgMCwg
J05vIGVycm9ycyBhZnRlciBiaW5kVGV4dHVyZScpOworCisgICAgdGV4ID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgIHNob3VsZEJlKCdnbC5pc1RleHR1cmUodGV4KScsICdmYWxzZScpOworICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCB0ZXgsIDApOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZnJhbWVidWZmZXJUZXh0
dXJlMkQgbXVzdCBiZSBwcmVjZWVkZWQgYnkgc29tZSBiaW5kVGV4dHVyZScpOworICAgIHNob3Vs
ZEJlKCdnbC5pc1RleHR1cmUodGV4KScsICdmYWxzZScpOworCisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnTm8g
ZXJyb3JzIGFmdGVyIGJpbmRUZXh0dXJlJyk7Cit9KSgpOworCitkZWJ1ZygnJyk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2Uvc3RhdGUvZ2wtZW5hYmxlLWVudW0tdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtZW5hYmxlLWVu
dW0tdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWZjOTQyMDliZjA0M2I4OGQ2NmFlN2U4MTcwZGM5
ZWRlZmY1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1lbmFibGUtZW51bS10ZXN0Lmh0
bWwKQEAgLTAsMCArMSwxNzEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGdsLkVOQUJMRSBlbnVtcyBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29u
c3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgYWxsb3cgT3Bl
bkdMIEVTIDIuMCBmZWF0dXJlcyB0byBiZSB0dXJuZWQgb24gYnV0IG5vdCBub24gT3BlbkdMIEVT
IDIuMCBmZWF0dXJlcy4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgaW52
YWxpZEVudW1zID0gWworICAnQUxQSEFfVEVTVCcsCisgICdBVVRPX05PUk1BTCcsCisgICdDTElQ
X1BMQU5FMCcsCisgICdDTElQX1BMQU5FMScsCisgICdDT0xPUl9MT0dJQ19PUCcsCisgICdDT0xP
Ul9NQVRFUklBTCcsCisgICdDT0xPUl9TVU0nLAorICAnQ09MT1JfVEFCTEUnLAorICAvLydDT05W
T0xVVElPTl8xRCcsCisgIC8vJ0NPTlZPTFVUSU9OXzJEJywKKyAgJ0ZPRycsCisgICdISVNUT0dS
QU0nLAorICAnSU5ERVhfTE9HSUNfT1AnLAorICAnTElHSFQwJywKKyAgJ0xJR0hUMScsCisgICdM
SUdIVElORycsCisgICdMSU5FX1NNT09USCcsCisgICdMSU5FX1NUSVBQTEUnLAorICAnTUFQMV9D
T0xPUl80JywKKyAgJ01BUDFfSU5ERVgnLAorICAnTUFQMV9OT1JNQUwnLAorICAnTUFQMV9URVhU
VVJFX0NPT1JEXzEnLAorICAnTUFQMV9URVhUVVJFX0NPT1JEXzInLAorICAnTUFQMV9URVhUVVJF
X0NPT1JEXzMnLAorICAnTUFQMV9URVhUVVJFX0NPT1JEXzQnLAorICAnTUFQMV9WRVJURVhfMycs
CisgICdNQVAxX1ZFUlRFWF80JywKKyAgJ01BUDJfQ09MT1JfNCcsCisgICdNQVAyX0lOREVYJywK
KyAgJ01BUDJfTk9STUFMJywKKyAgJ01BUDJfVEVYVFVSRV9DT09SRF8xJywKKyAgJ01BUDJfVEVY
VFVSRV9DT09SRF8yJywKKyAgJ01BUDJfVEVYVFVSRV9DT09SRF8zJywKKyAgJ01BUDJfVEVYVFVS
RV9DT09SRF80JywKKyAgJ01BUDJfVkVSVEVYXzMnLAorICAnTUFQMl9WRVJURVhfNCcsCisgICdN
SU5NQVgnLAorICAnTVVMVElTQU1QTEUnLAorICAnTk9STUFMSVpFJywKKyAgJ1BPSU5UX1NNT09U
SCcsCisgICdQT0lOVF9TUFJJVEUnLAorICAnUE9MWUdPTl9PRkZTRVRfTElORScsCisgICdQT0xZ
R09OX09GRlNFVF9QT0lOVCcsCisgICdQT0xZR09OX1NNT09USCcsCisgICdQT0xZR09OX1NUSVBQ
TEUnLAorICAnUE9TVF9DT0xPUl9NQVRSSVhfQ09MT1JfVEFCTEUnLAorICAnUE9TVF9DT05WT0xV
VElPTl9DT0xPUl9UQUJMRScsCisgICdSRVNDQUxFX05PUk1BTCcsCisgICdTQU1QTEVfQUxQSEFf
VE9fT05FJywKKyAgLy8nU0VQQVJBQkxFXzJEJywKKyAgJ1RFWFRVUkVfMUQnLAorICAnVEVYVFVS
RV8yRCcsCisgICdURVhUVVJFXzNEJywKKyAgJ1RFWFRVUkVfQ1VCRV9NQVAnLAorICAnVEVYVFVS
RV9HRU5fUScsCisgICdURVhUVVJFX0dFTl9SJywKKyAgJ1RFWFRVUkVfR0VOX1MnLAorICAnVEVY
VFVSRV9HRU5fVCcsCisgICdWRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFJywKKyAgJ1ZFUlRFWF9Q
Uk9HUkFNX1RXT19TSURFJworXTsKK3ZhciB2YWxpZEVudW1zID0gWworICAnQkxFTkQnLAorICAn
Q1VMTF9GQUNFJywKKyAgJ0RFUFRIX1RFU1QnLAorICAnRElUSEVSJywKKyAgJ1BPTFlHT05fT0ZG
U0VUX0ZJTEwnLAorICAnU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFJywKKyAgJ1NBTVBMRV9DT1ZF
UkFHRScsCisgICdTQ0lTU09SX1RFU1QnLAorICAnU1RFTkNJTF9URVNUJworXTsKKwordmFyIGds
OworCitmdW5jdGlvbiBydW5OZWdhdGl2ZVRlc3RzKCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVn
KCJSdW5uaW5nIG5lZ2F0aXZlIHRlc3RzIik7CisKKyAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7CisgICAgcmV0dXJuOworICB9CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisK
KyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGludmFsaWRFbnVtcy5sZW5ndGg7ICsraWkpIHsKKyAg
ICB2YXIgbmFtZSA9IGludmFsaWRFbnVtc1tpaV07CisgICAgZ2wuZW5hYmxlKGRlc2t0b3BHTFtu
YW1lXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAg
ICAgICAgICAgICAiZ2wuZW5hYmxlIG11c3Qgc2V0IElOVkFMSURfRU5VTSB3aGVuIHBhc3NlZCBH
TF8iICsgbmFtZSApOworICB9Cit9CisKK2Z1bmN0aW9uIHJ1blBvc2l0aXZlVGVzdHNXaXRoUGFy
YW1ldGVycyhwYXJhbXMpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiUnVubmluZyBwb3NpdGl2
ZSB0ZXN0cyB3aXRoIHBhcmFtZXRlcnM6ICIgKyBKU09OLnN0cmluZ2lmeShwYXJhbXMpKTsKKwor
ICAvLyBQYXNzIG51bGwgZm9yIHRoZSBjYW52YXMsIHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgYSBu
ZXcgY29udGV4dCBlYWNoIHRpbWUuCisgIHZhciBuZXdnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
bnVsbCwgcGFyYW1zKTsKKyAgaWYgKGdsID09IG5ld2dsKSB7CisgICAgdGVzdEZhaWxlZCgiZ290
IGFuIG9sZCBjb250ZXh0Iik7CisgICAgcmV0dXJuOworICB9CisgIGdsID0gbmV3Z2w7CisgIGlm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAg
cmV0dXJuOworICB9CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWco
IkNoZWNraW5nIGdsLkVOQUJMRSBlbnVtcy4iKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
dmFsaWRFbnVtcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgbmFtZSA9IHZhbGlkRW51bXNbaWld
OworICAgIGdsLmVuYWJsZShnbFtuYW1lXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsCisgICAgICAgICAgICAgICJnbC5lbmFibGUgbXVzdCBzdWNjZWVkIHdoZW4g
cGFzc2VkIGdsLiIgKyBuYW1lICk7CisgICAgc2hvdWxkQmUoJ2dsLmlzRW5hYmxlZChnbC4nICsg
bmFtZSArICcpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLicg
KyBuYW1lICsgJyknLCAndHJ1ZScpOworICAgIGdsLmRpc2FibGUoZ2xbbmFtZV0pOworICAgIHNo
b3VsZEJlKCdnbC5pc0VuYWJsZWQoZ2wuJyArIG5hbWUgKyAnKScsICdmYWxzZScpOworICAgIHNo
b3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuJyArIG5hbWUgKyAnKScsICdmYWxzZScpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgICAiZ2wu
aXNFbmFibGVkIGFuZCBnbC5HZXRQYXJhbWV0ZXIgbXVzdCBub3Qgc2V0IGVycm9ycyB3aGVuIHBh
c3NlZCBHTF8iICsgbmFtZSApOworICB9CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKK3J1bk5lZ2F0aXZl
VGVzdHMoKTsKK3J1blBvc2l0aXZlVGVzdHNXaXRoUGFyYW1ldGVycyh7YWxwaGE6IHRydWUsIGFu
dGlhbGlhczogdHJ1ZSwgc3RlbmNpbDogdHJ1ZSwgZGVwdGg6IHRydWV9KTsKK3J1blBvc2l0aXZl
VGVzdHNXaXRoUGFyYW1ldGVycyh7YWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IHRydWUsIHN0ZW5j
aWw6IHRydWUsIGRlcHRoOiB0cnVlfSk7CitydW5Qb3NpdGl2ZVRlc3RzV2l0aFBhcmFtZXRlcnMo
e2FscGhhOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlLCBzdGVuY2lsOiB0cnVlLCBkZXB0aDogdHJ1
ZX0pOworcnVuUG9zaXRpdmVUZXN0c1dpdGhQYXJhbWV0ZXJzKHthbHBoYTogdHJ1ZSwgYW50aWFs
aWFzOiB0cnVlLCBzdGVuY2lsOiBmYWxzZSwgZGVwdGg6IHRydWV9KTsKK3J1blBvc2l0aXZlVGVz
dHNXaXRoUGFyYW1ldGVycyh7YWxwaGE6IHRydWUsIGFudGlhbGlhczogdHJ1ZSwgc3RlbmNpbDog
dHJ1ZSwgZGVwdGg6IGZhbHNlfSk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1lbnVtLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1lbnVtLXRlc3RzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWMzZDI0NGQ3OWI4OWYwZTBhNzE5ZWNkYjVhYmZhM2E1NjNjOTZmOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3N0YXRlL2dsLWVudW0tdGVzdHMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBnbCBlbnVt
cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdC1l
dmFsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY29udGV4dFZlcnNp
b24gPSAxOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvZ2wtZW51bS10
ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtZ2V0
LWNhbGxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1nZXQtY2FsbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWEyN2Q4
ZTZjNTg2YWU2MGUwMTkyNTU2NTAyNzcwYzlhZDk3MDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvc3Rh
dGUvZ2wtZ2V0LWNhbGxzLmh0bWwKQEAgLTAsMCArMSwxOTggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGdsIGNhbGxzIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRo
ZSB1bmRlcmx5aW5nIGdyYXBoaWNzIGxpYnJhcnkiKTsKKworZGVidWcoIiIpOworZGVidWcoIkNh
bnZhcy5nZXRDb250ZXh0Iik7CisKK3ZhciBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzayA9IDA7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY29udGV4dCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImNhbnZhcyIpOworaWYgKCFjb250ZXh0KQorICAgIHRlc3RGYWlsZWQoImNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKK2Vsc2UgeworICAgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3Rz
Iik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNvbnRleHQgY29udGFpbnMgZ2V0RXJy
b3IiKTsKKyAgICBpZiAoImdldEVycm9yIiBpbiBjb250ZXh0KQorICAgICAgdGVzdFBhc3NlZCgi
Y29udGV4dCBjb250YWlucyBnZXRFcnJvciIpOworICAgIGVsc2UKKyAgICAgIHRlc3RGYWlsZWQo
ImNvbnRleHQgZG9lcyBub3QgY29udGFpbnMgZ2V0RXJyb3IiKTsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiQ2hlY2sgZGVmYXVsdCB2YWx1ZXMiKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSknLCAnY29udGV4dC5URVhUVVJF
MCcpOworICAgIHNob3VsZEJlKCcoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VE
X0xJTkVfV0lEVEhfUkFOR0UpWzBdIDw9IDEpICYmIChjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlbMF0gPiAwKSAmJiAoY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzFdID49IDEpJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9Q
T0lOVF9TSVpFX1JBTkdFKVswXSA8PSAxKSAmJiAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzBdID4gMCkgJiYgKGNvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKVsxXSA+PSAxKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURf
TElORV9XSURUSF9SQU5HRSknLCAnRmxvYXQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSknLCAn
RmxvYXQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUiknLCAnWzAsIDAsIDAsIDBd
Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5E
X0NPTE9SKScsICdGbG9hdDMyQXJyYXknKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5CTEVORF9EU1RfQUxQSEEpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9EU1RfUkdCKScsICcwJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEp
JywgJ2NvbnRleHQuRlVOQ19BREQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9SR0IpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9TUkNfQUxQSEEp
JywgJzEnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVO
RF9TUkNfUkdCKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuQ09MT1JfQ0xFQVJfVkFMVUUpJywgJ1swLCAwLCAwLCAwXScpOworICAgIHNob3VsZEJl
VHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSknLCAn
RmxvYXQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuQ09MT1JfV1JJVEVNQVNLKScsICdbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0nKTsKKyAgICBz
aG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09NUFJFU1NFRF9URVhU
VVJFX0ZPUk1BVFMpJywgJ1VpbnQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRV9NT0RFKScsICdjb250ZXh0LkJB
Q0snKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVVJSRU5U
X1BST0dSQU0pJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5ERVBUSF9DTEVBUl9WQUxVRSknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0ZVTkMpJywgJ2NvbnRleHQuTEVTUycpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1JBTkdFKScsICdb
MCwgMV0nKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
REVQVEhfUkFOR0UpJywgJ0Zsb2F0MzJBcnJheScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVO
VF9BUlJBWV9CVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJ
TlQpJywgJ2NvbnRleHQuRE9OVF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTElORV9XSURUSCknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlBBQ0tfQUxJR05NRU5UKScsICc0Jyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRkFDVE9SKScs
ICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdP
Tl9PRkZTRVRfRklMTCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9VTklUUyknLCAnMCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9CSU5ESU5HKScsICdu
dWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExF
X0NPVkVSQUdFX0lOVkVSVCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUpJywgJzEnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMF0nLCAnMCcp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9Y
KVsxXScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U0NJU1NPUl9CT1gpWzJdJywgJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQp
WzJdJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NP
Ul9CT1gpWzNdJywgJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpWzNdJyk7
CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1Jf
Qk9YKScsIEludDMyQXJyYXkpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNDSVNTT1JfVEVTVCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNL
X0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5L
RUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRiknLCAnMCcpOwor
CisgICAgLy8gV2ViR0wgMS4wLjIgLSA1LjE0LjMgdHlwZXMgLyBFUyAyLjAuMjUgLSA2LjIgU3Rh
dGUgdGFibGVzIC0gNi4xOCBwYWdlIDE1MgorICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVUJQSVhFTF9CSVRTKScsICdOdW1iZXInKTsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVUJQSVhF
TF9CSVRTKScsICc0Jyk7CisKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU0FNUExFX0JVRkZFUlMpJywgJ051bWJlcicpOworICAgIHNob3VsZEJlR3JlYXRl
clRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9CVUZGRVJT
KScsICcwJyk7CisKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU0FNUExFUyknLCAnTnVtYmVyJyk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExFUyknLCAnMCcpOworCisgICAgc2hv
dWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0JJVFMpJywgJ051
bWJlcicpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LkRFUFRIX0JJVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkVEX0JJVFMpJywgJ051bWJlcicpOworICAgIHNob3Vs
ZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlJFRF9C
SVRTKScsICcwJyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkdSRUVOX0JJVFMpJywgJ051bWJlcicpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkdSRUVOX0JJVFMpJywgJzAnKTsKKyAg
ICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxVRV9CSVRTKScs
ICdOdW1iZXInKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5CTFVFX0JJVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxQSEFfQklUUyknLCAnTnVtYmVyJyk7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
QUxQSEFfQklUUyknLCAnMCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpJywgJ051bWJlcicpOworCisgICAgdmFyIHN0ZW5jaWxC
aXRzID0gY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpOworICAgIG1p
bmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrID0gKDEgPDwgc3RlbmNpbEJpdHMpIC0gMTsKKworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxV
RV9NQVNLKSAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrJywgJ21pbmltdW1SZXF1aXJlZFN0
ZW5jaWxNYXNrJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX1dSSVRFTUFTSykgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaycsICdt
aW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaycpOworCisgICAgLy8gSWYgRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIGlzIHN1cHBvcnRlZCwgU1RFTkNJTF9CSVRTID4gMDsgb3RoZXJ3aXNlLCBTVEVO
Q0lMX0JJVFMgPT0gMC4KKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JJVFMpID49IDAnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRl
eHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5L
RUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdmYWxzZScp
OworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9W
QUxVRV9NQVNLKSAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrJywgJ21pbmltdW1SZXF1aXJl
ZFN0ZW5jaWxNYXNrJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9XUklURU1BU0spICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2snLCAnbWlu
aW11bVJlcXVpcmVkU3RlbmNpbE1hc2snKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCknLCAnbnVsbCcpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19DVUJFX01B
UCknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlVOUEFDS19BTElHTk1FTlQpJywgJzQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5VTlBBQ0tfRkxJUF9ZX1dFQkdMKScsICdmYWxzZScpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlVOUEFDS19QUkVNVUxUSVBMWV9BTFBI
QV9XRUJHTCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5WSUVXUE9SVCknLCAnWzAsIDAsIDIsIDJdJyk7CisgICAgc2hvdWxkQmVUeXBlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQT1JUKScsICdJbnQzMkFycmF5Jyk7CisK
KyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyknLCAnOCcpOworICAgIHNob3Vs
ZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkUpJywgJzE2Jyk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUyknLCAnMTYnKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfUkVOREVSQlVGRkVSX1NJWkUpJywgJzEnKTsKKyAg
ICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyknLCAnOCcpOworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9URVhUVVJFX1NJWkUp
JywgJzY0Jyk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTUFYX1ZBUllJTkdfVkVDVE9SUyknLCAnOCcpOworICAgIHNob3VsZEJl
R3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJU
RVhfQVRUUklCUyknLCAnOCcpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUykn
LCAnMCcpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKScsICcxMjgnKTsKKyAgICAv
LyBOb3RlOiBUaGlzIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIHNwZWMg
SU1PLiBNYW55IGltcGVsZW1lbnRhdGlvbnMKKyAgICAvLyB3aWxsIGJlIGJhc2VkIG9uIEZCT3Mg
YW5kIEZCT3MgbWlnaHQgaGF2ZSBhIHJlc3RyaWN0aW9uIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVu
dCBzY3JlZW4gc2l6ZS4KKyAgICAvLyBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBz
Y3JlZW5zLgorICAgIHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5N
QVhfVklFV1BPUlRfRElNUylbMF0gPj0gd2luZG93LnNjcmVlbi53aWR0aCcpOworICAgIHNob3Vs
ZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVklFV1BPUlRfRElNUylb
MV0gPj0gd2luZG93LnNjcmVlbi5oZWlnaHQnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZJRVdQT1JUX0RJTVMpJywgJ0ludDMyQXJyYXknKTsK
KworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2hlY2sgdGV4dHVyZSB2YWx1ZXMiKTsKKyAg
ICB2YXIgbWF4VGV4dHVyZXMgPSBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9URVhU
VVJFX0lNQUdFX1VOSVRTKTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbWF4VGV4dHVyZXM7
ICsraWkpIHsKKyAgICAgIGNvbnRleHQuYWN0aXZlVGV4dHVyZShjb250ZXh0LlRFWFRVUkUwICsg
aWkpOworICAgICAgZGVidWcoImNoZWNrIHRleHR1cmUgdW5pdDogIiArIGlpKTsKKyAgICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkn
LCAnbnVsbCcpOworICAgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
VEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKScsICdudWxsJyk7CisgICAgfQorCisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJjaGVjayBhdHRyaWIgdmFsdWVzIik7CisgICAgdmFyIG1heEF0dHJp
YnMgPSBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfQVRUUklCUyk7Cisg
ICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG1heEF0dHJpYnM7ICsraWkpIHsKKyAgICAgIGRlYnVn
KCJjaGVjayBhdHRyaWI6ICIgKyBpaSk7CisgICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRWZXJ0
ZXhBdHRyaWIoaWksIGNvbnRleHQuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORykn
LCAnbnVsbCcpOworICAgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0VmVydGV4QXR0cmliKGlpLCBj
b250ZXh0LlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCknLCAnZmFsc2UnKTsKKyAgICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFZlcnRleEF0dHJpYihpaSwgY29udGV4dC5WRVJURVhfQVRUUklC
X0FSUkFZX1NJWkUpJywgJzQnKTsKKyAgICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFZlcnRleEF0
dHJpYihpaSwgY29udGV4dC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSknLCAnMCcpOworICAg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0VmVydGV4QXR0cmliKGlpLCBjb250ZXh0LlZFUlRFWF9B
VFRSSUJfQVJSQVlfVFlQRSknLCAnY29udGV4dC5GTE9BVCcpOworICAgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0VmVydGV4QXR0cmliKGlpLCBjb250ZXh0LlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9S
TUFMSVpFRCknLCAnZmFsc2UnKTsKKyAgICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFZlcnRleEF0
dHJpYihpaSwgY29udGV4dC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1swLCAwLCAwLCAxXScp
OworICAgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFZlcnRleEF0dHJpYihpaSwgY29udGV4
dC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ0Zsb2F0MzJBcnJheScpOworICAgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0VmVydGV4QXR0cmliT2Zmc2V0KGlpLCBjb250ZXh0LlZFUlRFWF9BVFRS
SUJfQVJSQVlfUE9JTlRFUiknLCAnMCcpOworICAgIH0KKworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEVycm9yKCknLCAnY29udGV4dC5OT19FUlJPUicpOworfQorCitkZWJ1ZygiIik7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2Uvc3RhdGUvZ2wtZ2V0ZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3N0YXRlL2dsLWdldGVycm9yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWQ1YzE4ZTI2N2NlMDVlODJmM2U4YTRmYmVmNzU4NmQxNDg4MDc0MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3N0YXRlL2dsLWdldGVycm9yLmh0bWwKQEAgLTAsMCArMSw3OCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgZ2V0IGVycm9yIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHN0eWxlPSJ3aWR0aDog
MjU2cHg7IGhlaWdodDogNDhweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PjxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rl
c2NyaXB0aW9uKCJUZXN0IGdldEVycm9yLiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKK2ds
LmVuYWJsZShkZXNrdG9wR0wuQUxQSEFfVEVTVCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX0VOVU0sICJzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9FTlVNIik7CitnbC52aWV3
cG9ydCgtMSwgLTEsIC0xLCAtMSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X1ZBTFVFLCAic2hvdWxkIGdlbmVyYXRlIElOVkFMSURfVkFMVUUiKTsKK2dsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAic2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIik7CisKKy8vIEdlbmVyYXRlIDIg
ZXJyb3JzIG9mIGVhY2ggdHlwZSBmb3IgNiB0b3RhbCBwb3NzaWJsZSBlcnJvcnMuCisvLyBUaGUg
T3BlbkdMIEVTIDIuMCBzcGVjIHNlY3Rpb24gMi41IHNheXMgdGhlIGltcGxlbWVudGF0aW9uIGlz
IGFsbG93ZWQgdG8KKy8vIGVpdGhlciByZXR1cm4gdGhlIGZpcnN0IGVycm9yIG9yIG1hbnkgZXJy
b3JzIGluIGFuIHVuc3BlY2llZCBvcmRlci4KK2dsLnZpZXdwb3J0KC0xLCAtMSwgLTEsIC0xKTsK
K2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKK2dsLmVuYWJsZShkZXNrdG9wR0wuQUxQSEFfVEVT
VCk7CitnbC52aWV3cG9ydCgtMSwgLTEsIC0xLCAtMSk7CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQiwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVs
bCk7CisvLyBOb3RlOiBUaGlzIGVycm9yIGlzIHNwZWNpZmljYWxseSBsYXN0IGJlY2F1c2Ugd2Ug
a25vdyBpdCB3aWxsIGJlIHN5bnRoYXNpemVkCisvLyBieSBXZWJHTCBhdCBsZWFzdCB3aGVuIGlt
cGxlbWVudGVkIG9uIHRvcCBvZiBEZXNrdG9wIE9wZW5HTAorZ2wuZW5hYmxlKGRlc2t0b3BHTC5B
TFBIQV9URVNUKTsKKwordmFyIGVycjEgPSBnbC5nZXRFcnJvcigpOwordmFyIGVycjIgPSBnbC5n
ZXRFcnJvcigpOwordmFyIGVycjMgPSBnbC5nZXRFcnJvcigpOwordmFyIGVycjQgPSBnbC5nZXRF
cnJvcigpOwordmFyIGVycjUgPSBnbC5nZXRFcnJvcigpOwordmFyIGVycjYgPSBnbC5nZXRFcnJv
cigpOworCitkZWJ1ZygiIik7CitpZiAoZXJyMiA9PSBnbC5OT19FUlJPUikgeworICBkZWJ1Zygi
VGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBsb29rcyBsaWtlIGl0IHVzZXMgdGhlICdmaXJzdCBl
cnJvcicgbWV0aG9kIik7CisgIGRlYnVnKCJUaGVyZSBzaG91bGQgYmUgMSBlcnJvciwgdGhlIGZp
cnN0IG9uZSBnZW5lcmF0ZWQiKTsKKyAgc2hvdWxkQmVUcnVlKCdlcnIxID09IGdsLklOVkFMSURf
VkFMVUUgJiYgZXJyMiA9PSBnbC5OT19FUlJPUiAmJiBlcnIzID09IGdsLk5PX0VSUk9SJyk7Cit9
IGVsc2UgeworICBkZWJ1ZygiVGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBsb29rcyBsaWtlIGl0
IHVzZXMgdGhlIG1hbnkgZXJyb3IgbWV0aG9kIik7CisgIGRlYnVnKCJDaGVjayBpcyB0aGF0IGF0
IGxlYXN0IG9uZSBvZiB0aGUgZXJyb3JzIGlzIHRoZSBmaXJzdCBlcnJvciIpOworICBzaG91bGRC
ZVRydWUoJ2VycjEgPT0gZ2wuSU5WQUxJRF9WQUxVRSB8fCAnICsKKyAgICAgICAgICAgICAgICdl
cnIyID09IGdsLklOVkFMSURfVkFMVUUgfHwgJyArCisgICAgICAgICAgICAgICAnZXJyMyA9PSBn
bC5JTlZBTElEX1ZBTFVFIHx8ICcgKworICAgICAgICAgICAgICAgJ2VycjQgPT0gZ2wuSU5WQUxJ
RF9WQUxVRSB8fCAnICsKKyAgICAgICAgICAgICAgICdlcnI1ID09IGdsLklOVkFMSURfVkFMVUUg
fHwgJyArCisgICAgICAgICAgICAgICAnZXJyNiA9PSBnbC5JTlZBTElEX1ZBTFVFJyk7CisgIHNo
b3VsZEJlVHJ1ZSgnZ2wuZ2V0RXJyb3IoKSA9PSBnbC5OT19FUlJPUicpOworfQorCitkZWJ1Zygi
Iik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtZ2V0c3RyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1nZXRz
dHJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTk0Y2M2NzhlMjU5NjNjM2QxMDNiN2E5M2FjN2VjMDA4
YjFmZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtZ2V0c3RyaW5nLmh0bWwKQEAgLTAs
MCArMSw2MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgZ2wuZ2V0UGFyYW1ldGVyIFN0cmluZ3MgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVp
Z2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjaGVja3MgZ2V0UGFyYW1ldGVyIHJldHVybnMgc3RyaW5ncyBpbiB0aGUgY29y
cmVjdCBmb3JtYXQiKTsKKworZGVidWcoIiIpOworZGVidWcoIkNhbnZhcy5nZXRDb250ZXh0Iik7
CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImNhbnZhcyIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisg
IGRlYnVnKCIiKTsKKyAgY2hlY2tQcmVmaXgoIldlYkdMIDEuMCIsICJWRVJTSU9OIik7CisgIGNo
ZWNrUHJlZml4KCJXZWJHTCBHTFNMIEVTIDEuMCIsICJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04i
KTsKKyAgc2hvdWxkQmVOb25OdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVORE9SKSIpOworICBz
aG91bGRCZU5vbk51bGwoImdsLmdldFBhcmFtZXRlcihnbC5SRU5ERVJFUikiKTsKKyAgc2hvdWxk
QmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gY2hlY2tQ
cmVmaXgoZXhwZWN0ZWQsIGVudW1fdmFsKSB7CisgIHZhciBzID0gZ2wuZ2V0UGFyYW1ldGVyKGds
W2VudW1fdmFsXSk7CisgIGlmIChzICE9IG51bGwgJiYKKyAgICAgIHMubGVuZ3RoID49IGV4cGVj
dGVkLmxlbmd0aCAmJgorICAgICAgcy5zdWJzdHJpbmcoMCwgZXhwZWN0ZWQubGVuZ3RoKSA9PSBl
eHBlY3RlZCkgeworICAgIHRlc3RQYXNzZWQoImdldFBhcmFtZXRlcihnbC4iICsgZW51bV92YWwg
KyAiKSBjb3JyZWN0bHkgc3RhcnRlZCB3aXRoICIgKyBleHBlY3RlZCk7CisgIH0gZWxzZSB7Cisg
ICAgdGVzdEZhaWxlZCgiZ2V0UGFyYW1ldGVyKGdsLiIgKyBlbnVtX3ZhbCArICIpIGRpZCBub3Qg
c3RhcnQgd2l0aCAiICsgZXhwZWN0ZWQpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9zdGF0ZS9nbC1pbml0aWFsLXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1pbml0aWFsLXN0YXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDI0ZWFhMTA5YjRhNTU0MzA2ZmU4MWI5YjdjODM4YTJjMzk2NTE1
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3N0YXRlL2dsLWluaXRpYWwtc3RhdGUuaHRtbApAQCAtMCww
ICsxLDU4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBnbC5nZXRQYXJhbWV0ZXIgaW5pdGlhbCB2YWx1ZXMgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIy
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBjaGVja3MgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIE9wZW5HTCBzdGF0ZSIpOworCitk
ZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CitpZiAo
IWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIiIpOworICBjaGVj
a1BhcmFtZXRlckluaXRpYWxWYWx1ZSgiT05FIiwgIkJMRU5EX1NSQ19SR0IiKTsKKyAgY2hlY2tQ
YXJhbWV0ZXJJbml0aWFsVmFsdWUoIk9ORSIsICJCTEVORF9TUkNfQUxQSEEiKTsKKyAgY2hlY2tQ
YXJhbWV0ZXJJbml0aWFsVmFsdWUoIlpFUk8iLCAiQkxFTkRfRFNUX1JHQiIpOworICBjaGVja1Bh
cmFtZXRlckluaXRpYWxWYWx1ZSgiWkVSTyIsICJCTEVORF9EU1RfQUxQSEEiKTsKKyAgc2hvdWxk
QmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gY2hlY2tQ
YXJhbWV0ZXJJbml0aWFsVmFsdWUoZXhwZWN0ZWQsIGVudW1fdmFsKSB7CisgIHZhciBzID0gZ2wu
Z2V0UGFyYW1ldGVyKGdsW2VudW1fdmFsXSk7CisgIGlmIChzID09PSBnbFtleHBlY3RlZF0pIHsK
KyAgICB0ZXN0UGFzc2VkKCJnZXRQYXJhbWV0ZXIoZ2wuIiArIGVudW1fdmFsICsgIikgcmV0dXJu
ZWQgIiArIGV4cGVjdGVkICsgIiB3aGljaCBpcyAiICsgZ2xbZXhwZWN0ZWRdKTsKKyAgfSBlbHNl
IHsKKyAgICB0ZXN0RmFpbGVkKCJnZXRQYXJhbWV0ZXIoZ2wuIiArIGVudW1fdmFsICsgIikgcmV0
dXJuZWQgIiArIHMgKyAiIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIHdoaWNoIGlzICIgKyBn
bFtleHBlY3RlZF0pOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTMwYTRiNDMxM2FmZTAxNDQyNzQ4MWNmYjFjNDZiNWMzMWU2MTMxYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbApAQCAtMCwwICsx
LDI2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBjb250ZXh0VmVyc2lvbiA9IDE7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9zdGF0ZS11bmVmZmVjdGVk
LWFmdGVyLWNvbXBvc2l0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9zdGF0ZS9zdGF0ZS11bmVmZmVjdGVkLWFmdGVyLWNv
bXBvc2l0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQyODE1NmMxNzVkMDUyNTYyMTY2ZDk0Y2RjZTNi
NTA0MGM3MjE0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3N0YXRlL3N0YXRlLXVuZWZmZWN0ZWQtYWZ0
ZXItY29tcG9zaXRpbmcuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDogQ2hlY2sgdGhhdCBzdGF0
ZSBpcyBub3QgbG9zdCBieSBjb21wb3NpdGluZzwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0idGVzdGJlZCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHlsZT0id2lkdGg6NTBw
eDsgaGVpZ2h0OjUwcHgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ3Rlc3RiZWQnLCB7IGFudGlhbGlh
czogZmFsc2UgfSk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCdjb3VsZCBub3QgY3Jl
YXRlIGNvbnRleHQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFRleHR1cmVkUXVhZChnbCk7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
IHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgdmFyIHN0ZXAxID0gZnVuY3Rp
b24oKSB7CisgICAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDEsIDEsIFswLCAyNTUsIDAsIDI1
NV0pOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAiZHJhd2luZyB3aXRoIHRleHR1cmUgc2hvdWxkIGJl
IGdyZWVuIik7CisgIH07CisKKyAgdmFyIHN0ZXAyID0gZnVuY3Rpb24oKSB7CisgICAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUs
IDAsIDI1NV0sICJkcmF3aW5nIHdpdGggdGV4dHVyZSBhZnRlciBjb21wb3NpdGUgd2l0aG91dCBy
ZWJpbmRpbmcgc2hvdWxkIGJlIGdyZWVuIik7CisKKyAgICAvLyBDbGVhciBiYWNrZ3JvdW5kIHRv
IHJlZAorICAgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBCaW5kIGZyYW1lYnVmZmVyIHdpdGggZ3JlZW4gdGV4
dHVyZS4KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgMSwgMSwgWzAsIDI1NSwgMCwgMjU1XSwgInJlYWRpbmcgZnJvbSBmYm8gd2l0aCBhdHRh
Y2hlZCB0ZXh0dXJlIHNob3VsZCBiZSBncmVlbiIpOworICB9OworCisgIHZhciBzdGVwMyA9IGZ1
bmN0aW9uKCkgeworICAgIC8vIFNob3VsZCBzdGlsbCBoYXZlIGZiIGJvdW5kIGFuZCByZWFkaW5n
IHNob3VsZCBiZSBncmVlbgorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEs
IFswLCAyNTUsIDAsIDI1NV0sICJyZWFkaW5nIGZyb20gZmJvIGFmdGVyIGNvbXBvc2l0ZSB3aXRo
b3V0IHJlYmluZGluZyBzaG91bGQgYmUgZ3JlZW4iKTsKKyAgfTsKKworICB2YXIgc3RlcHMgPSBb
CisgICAgc3RlcDEsCisgICAgc3RlcDIsCisgICAgc3RlcDMsCisgIF07CisKKyAgdmFyIHN0ZXBJ
bmRleCA9IDA7CisgIHZhciBydW5OZXh0U3RlcCA9IGZ1bmN0aW9uKCkgeworICAgIHN0ZXBzW3N0
ZXBJbmRleCsrXSgpOworICAgIGlmIChzdGVwSW5kZXggPT0gc3RlcHMubGVuZ3RoKSB7CisgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgd3R1LndhaXRGb3JDb21wb3NpdGUocnVuTmV4dFN0ZXApOworICB9OworICBydW5OZXh0U3Rl
cCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMv
dGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkOWU5MGE4
OWE5N2VkYmQ1MjgxOTQxNjc3NjdkODhjZDk1YjZlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9jYW52YXMvdGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVOU0lHTkVE
X0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0y
ZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZh
cy90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTU1ZWM5ZjdiZDAyZjZhZWNiYmJmYTZkMzAzODMyZjgxYWM1MmUwNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFO
Q0UiLCAiTFVNSU5BTkNFIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1sdW1pbmFuY2VfYWxwaGEtbHVtaW5hbmNlX2Fs
cGhhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtbHVtaW5hbmNl
X2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Uy
ZGQ1MzNmMzE4ZjkzNzFlMzk2YmI3OGIwZjhjMDk3MWVhM2FhMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11
bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJM
VU1JTkFOQ0VfQUxQSEEiLCAiTFVNSU5BTkNFX0FMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwNDhhYmE0ZjRjMzRlZDZlMDM3YzBjMGE0NjhkZjNk
YjdmODRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJn
Yi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NTE3N2Y0NjU3MjRkOTUxZjA0N2IzNWM1N2U3MTAyZjEzNmRhOTRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2ln
bmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZGI2MWVmNDkyYWMxMWJlOGZmOGE2YmVmMzZhMWQ4ODJmNGI1MjAwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIs
ICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRf
NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2ZGFmYTlhNTE5YzhiOTRhZTkxZTY2MTUzNjJjN2I1ODExNzJj
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11
bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZh
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYmEtcmdi
YS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0YWQ4ZjdkMzViMjYz
NWZlYjBmNWMwMmFhZDNhMDlkODZiYjdiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2Nh
bnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9T
SE9SVF81XzVfNV8xIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYjI1ZGJlNDU4NmJjYmEwMzFkMzk2NGNiMmRmYTUyOWJj
YWI2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90
ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJBTFBIQSIsICJBTFBIQSIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhc19zdWJf
cmVjdGFuZ2xlL3RleC0yZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1sdW1pbmFuY2UtbHVtaW5hbmNl
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDNiYmVlZTg1NjBjN2I3MzQyNWMyMTkw
ZTU3OGRjODYxYzdjNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1Yl9y
ZWN0YW5nbGUvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFO
Q0UiLCAiTFVNSU5BTkNFIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLWx1bWluYW5jZV9hbHBo
YS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1
Yl9yZWN0YW5nbGUvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzZDZhZmY5YjBkYjQxNTQ3MmQyNTYyNTA2MTJiNWQ1
YzdhN2RjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxV
TUlOQU5DRV9BTFBIQSIsICJMVU1JTkFOQ0VfQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
MmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rh
bmdsZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNkMmRj
YjFlODk2MTQ2ZDAwNDk4NjYwNmJmYzcyNTE2NTlkZWEyZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCIiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3No
b3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdi
LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NDFjZDhiM2JmM2I2
M2I2OTY1Njg2MjQ2ZWU5MDUzNjA0YzBkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2JhLXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJn
YmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQxZWRiOGYzMTM4OWNhZjY3
MWFiNjZmMDk0NjQyOGVlYTdmZjI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJH
QkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRf
NF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2JhLXJn
YmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzMxMDRkMzA5MjJi
NWE4N2E0OGVlNDhiYWRjYjI3ZDExNzM2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80
XzQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCQSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmEt
cmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZTM5NGM2YWUzNTZkY2UyMmMwN2YzYzEyYWVkNDViMmNiM2YzODQxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmEtcmdi
YS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNh
bnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81
XzVfNV8xIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3RleC0y
ZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZS90ZXgtMmQt
YWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YTZkMGFjYTA3MGY1
YjVmYTU3MDgxMzAxOTk0Y2IwZTRlNzkzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9p
bWFnZS90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzgg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJBTFBIQSIsICJBTFBIQSIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3RleC0yZC1sdW1pbmFu
Y2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3RleC0yZC1s
dW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDRjNGQy
MzM0NzA4ZTg5Yjc5MjcwMDk5MjdkNTIzMzcwYzMzZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvaW1hZ2UvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0UiLCAiTFVNSU5B
TkNFIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFu
Y2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZWIwNGU3ZjFjZjYyNzcz
NmRiOTdhNmMxODI1ZWFlZWM3ZWZmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFn
ZS90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRV9BTFBIQSIs
ICJMVU1JTkFOQ0VfQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWY2ZjBmZmJmMzcyOWI4OTVkMzkzZjRlMjYxYzZkMDRlMTMyM2JlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3Rl
eC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZS90
ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZjZh
ZGJkN2ZkYTZlNDhhZjdmYTU2ZGI2NzdjN2I1N2Y1YjM1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVE
X1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdl
L3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2UvdGV4
LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU5ZmNmYjMyM2Y5
YzhmNDUwMjg3OTQ5NjYzMzc5MWQ5Nzg3Y2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L2ltYWdlL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzgg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2Jh
LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDMzYmU0NmQy
NDQ3NTYxZWEzYzZmN2QyZWQ4YWFjMWNkMDk3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9pbWFnZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIlVOU0lHTkVE
X1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1h
Z2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9pbWFnZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41N2I1YTMwNzViOTUxOGNhNmQxZjE2ZjI2Y2YxZjhmNDBlYTA5YTcyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9y
dF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEi
LCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLWFscGhhLWFscGhh
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4
LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTBmMzU5ZDU4
NjcxODE5Njc3Nzk2ODRiNDZiMzFiNjUyMmQ1ZWNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0
ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJBTFBIQSIsICJBTFBIQSIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtbHVtaW5h
bmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMxMzdmMGMxMjgz
YWMwYTE3NjVkZDZhODYwNTk3MzZmMjZhNzdjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0Ui
LCAiTFVNSU5BTkNFIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtbHVtaW5hbmNlX2FscGhh
LWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9ibG9iL3RleC0yZC1sdW1pbmFuY2VfYWxwaGEtbHVtaW5hbmNlX2FscGhhLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGI2OGJiMmM1NzYzMDUyNTk5MDA4MDBjYmVlMzJk
Yjg3ZThmMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
YmxvYi90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRl
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRV9BTFBIQSIs
ICJMVU1JTkFOQ0VfQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2ItcmdiLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJk
LXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NzEyY2MyMjZiMzhmY2Fi
ZjYwOTcxODhiZDNkNzY1Nzc1ZGY0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82
XzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jN2Y1NDA2ZDhiNzk2OGE0ZTQwZjZhMGI3ZGIxN2U2ZWY4ODk4
YThmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90
ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2Iv
dGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhOTQ3OTM1NjFiZjIzMDBmZmVlMTIzM2I4MGRlMjk5Y2I2YjhkMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhLXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JB
IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRf
c2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgt
MmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTE3
MTY3NjBjYTQxYWJhNzYyMjdjYzA1NTNhZDQ4OTZjZGVmNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVk
X3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
QSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODRlYTk1ZWMzNDAzZmNhNDM1MmRjMDBlY2FjNDMwMGVlMzBhZWFkZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYmEtcmdi
YS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9i
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fY2FudmFzL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjBiYzhjOTZjYWY2MzEzNTQ5Yzc3MTk5ZWFhM2ZmN2M4NjM3ZDI5MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtYWxwaGEt
YWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1sdW1pbmFu
Y2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2NhbnZhcy90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDY5ZmJjMWZmMzBjNjU5Y2MxYzUwZThkZDE0YjdkMjMyZGQwMWYzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQt
bHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiTFVNSU5BTkNFIiwgIkxVTUlOQU5DRSIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2NhbnZhcy90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLWx1bWlu
YW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMxNDFlY2Q5NmVkMTM1Y2NlNTgyMTNiZDg0N2MxZjExMDU1MzUyODEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLWx1bWluYW5jZV9h
bHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRV9BTFBIQSIsICJMVU1JTkFOQ0VfQUxQSEEiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDJmMTIwYzlmZTVkMGExNzMwZGJlZTAwOTQ1NzJlZWZj
NDY0MWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2Fu
dmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0y
ZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iODlkMTBjYzYyZWI0NGNiZmMxYTk3ZmFiOWNmNDE3YjlmZjcwODFkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1y
Z2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1j
YW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTZkNmUxMDVhZTY0NTFiNzllNWVlYjY3YzRiYTlmY2IyOGE0ZGU4MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0JBIiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52
YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2M5NTY0YTMxY2Q5ZDc0NDYwM2VmNGY3NDQ1NGYyZTdjNDE5MWNmYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZh
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVf
NV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhZTE0NGIzOTljYjUxNzhjNjAyZjQ4YzMzMGU0YmI0YzMz
MDAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZh
cy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRf
NV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZS90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDM3MWU3YTdkNWMwYzVhOWIxOWQyMzEzYTc1MWIyZTQy
NTViYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2UvdGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Uv
dGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNTlkMDVlN2UzYjE2YWJhNzRkMDdkZTE1N2QxNDNj
NjgxMjUzODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZS90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0UiLCAiTFVNSU5BTkNFIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEt
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3YTljZTRmOWI1ZmMxZWRjMzU3MDM4YmFmYzlmMGQ0MjVlMDkyMGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtbHVt
aW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0VfQUxQSEEiLCAiTFVNSU5BTkNFX0FM
UEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYi1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MWY2ZWJmOGVhOThiYmVlZmZmNzkwMzU2Mjlk
ZmVhYmYzMTZkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTNlZWVlOGE5ZDJlMmU0MWZjYWQ1MmJkNDZiZDY0NTBjZjQwMGY0YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1y
Z2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1p
bWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0y
ZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjgxOGFkYWE4YWRlY2NmNTk4MDA2ZGJjMWYzMDJiOGMxMjc0MzQ2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhLXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIs
ICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9z
aG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgt
MmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjc4
ZjkxOGUwNmFmYmM5OTllOGIyYzc2YTJhNjEzNWJhOWY0MWRjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25l
ZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiYS1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYzMTRiNTgzMTk1NzMzMTJlNjRiYjdhOTk0OGM3MzZiN2IzZjQ1OTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdi
YS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2JpdG1hcC90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25l
ZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRmNjYyNGM5M2EyZjk0NDQwODA2ZDlhMDhiNmNjMWNh
NDA0OTE5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2JpdG1hcC90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVOU0lH
TkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgt
MmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgw
MmQxMTEwNjVjYWYzYTBiMGYxNzA5MTAzMWNlMWVlMjE1MWI4YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtbHVtaW5hbmNl
LWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiTFVNSU5BTkNFIiwgIkxVTUlOQU5DRSIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2JpdG1hcC90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4
LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4ZWM1MThhYmIzNWZjZDE0YTJmODZjYTlkYjc5Zjc3YzhjMWRiMjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4
LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRV9BTFBIQSIs
ICJMVU1JTkFOQ0VfQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJn
Yi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfYml0bWFwL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NWIxZTNiYjg1YzliZTFjOTZmYzg1MzAzNDJiNWVmNmVlYzE1MzM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2Itcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2It
cmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YzU1ZDUzNmM5N2JhZjhiMWIzOTQ4ZDQ2ZmE1NjQ1MGZhZTFkZTgyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3Rl
eC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZf
NSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjljYmMzN2Q5NTkxNTVmMDk4ZDhmYWVkZTA1YmY0
MzBkZmIyZDg3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRf
NF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJk
LXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFlMDc0
ZjU1ZjNkY2ExYmE0NGViNjEyMmU0ZGYzZTc4NGVmZTJiZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYS1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJp
dG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9i
aXRtYXAvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3MDIyNzViMjQ0NjI4NTcwM2Jm
OWE3Yjc2ZmUwNzJhNzIxNjUyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVf
NV81XzEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JB
IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1hbHBo
YS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWVhZDA4OTk4ZDBlNTZmY2UzNGMzMjQyOTVmYWZhOGM4ZjA4Y2M5OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLWFscGhh
LWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRh
dGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiQUxQSEEiLCAiQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0y
ZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmODFhMjljMDcwNmQ5ZDBlYzM4NjU3NmMyNDQwNmQ0
ZDU4OTZiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0yZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiTFVNSU5BTkNFIiwgIkxVTUlO
QU5DRSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1s
dW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViMWQ1MmVjZGU1ZWRkZGZiN2E0MTYwNjUy
OTZjNmQzMjRlNTI4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2RhdGEvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJM
VU1JTkFOQ0VfQUxQSEEiLCAiTFVNSU5BTkNFX0FMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
ZGF0YS90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NmVmOWI4NDc1MDJjODU5MmJmMzY1ZGMxNTU3M2JiMTVlMTkzOTI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQiIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0y
ZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJjYTM1OGIzZTlkNDdiOWZmMTRiNzUwMTU5NjNhMTA2ZGRiMGIyNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEv
dGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZf
NSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWRjOGUyNWM1MDM4NWNmMTlkODFjOWRmZjIzNzMwZTk3
YTM2NDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEtcmdiYS11
bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM1MTllMmU2ZTJjZWQyMmM2
MTQ0NTM5NzQyMzI5MWViYTcxZTYzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80
XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEi
LCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEt
cmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzNTliOTFiNTkwYjlmYzQ1NDQ5Mzk3YjQ3YzU3NmY2NGYyZDg5MTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRh
L3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hP
UlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV92aWRlby90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLWFscGhhLWFscGhhLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTkyODI1ODZkZWU1NDUwMzI4OGE5YjdhZDg5YjI4
M2JkYTYyODU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlk
ZW8vdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NzEzMjNiNGUyNGE0ZTFjNmRlYjBiNDkxZGZi
OTgxOGU5NzI4NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV92aWRlby90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0UiLCAiTFVNSU5BTkNFIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxw
aGEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3MDAyNTdiOTkyNWIxOGNjZjExODI3ZTk5ZjIzZTY0ZTU0YjgwYWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQt
bHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJMVU1JTkFOQ0VfQUxQSEEiLCAiTFVNSU5BTkNF
X0FMUEhBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYi1yZ2It
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NWRkNzdiYzE1MDdjY2ZiNmIzMjdmYjg3
MzBjYTVjMDJkNTY0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV92aWRlby90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmYxMTI1MTMyYWQxOTdkNTU1NWIzZmIwMWIyYzZkOGE5ZGE2ZGU1Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0y
ZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3Rl
eC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTU4YzE2MTJkYzA0MjViNmQ2ZWM3YTkwNWJjNGZlMDBiNTlkY2IwYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
QSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25l
ZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90
ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDljMDM5ODg1OWRmZTZjOWNkM2Q2NTBiNDgxNTM4OTgzOWRmYzExCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdi
YS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1ZWVlYjNiMGYxNzVlMmQ2MWI4NGRlMmZlOGRjMTA0YTNkZjg1YWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQt
cmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLWFs
cGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJk
LWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjFiMWViZDZhZjc5
ZmI4M2U0M2U5ZGNmMzU4M2U1OGU3Y2RiOWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJBTFBIQSIsICJBTFBIQSIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODhjZWFjMTA3MjljMjIwMmQ0OWNlZDMyMGZiNzgzMTc1ZDUzNTYxMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLWx1bWluYW5jZS1sdW1p
bmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1k
YXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFz
IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJMVU1JTkFOQ0UiLCAiTFVNSU5BTkNFIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtbHVtaW5hbmNl
X2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFn
ZV9kYXRhL3RleC0yZC1sdW1pbmFuY2VfYWxwaGEtbHVtaW5hbmNlX2FscGhhLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTUzYzhiZTkxMTBjYjIxMzg5MGI2ZDNmMDNjYWYwMDZiMjNl
YTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtbHVtaW5h
bmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRV9BTFBIQSIsICJMVU1JTkFOQ0Vf
QUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ2NTA1OTQ5NDVjZDg2ZTI3OWYyOGVkZDYyYzQ2ZTNmZGViMmRiYWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OTc0NGY2NWY4MmViOGVlMTJmNzk0YzFkMTQ2N2VkYTI4OTc1Mjk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiLXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YmQ5Njg2YzllNjIxNzZhMmQ3MjhlOWQ4OWRmZDQ1NjNi
NTkzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2Jh
LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1k
YXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFz
IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRf
c2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDgwY2Y2OTI3YTczODU0
YWM5Y2RhOGJiODU3MGZkNTNhNzM4NzMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvaW1h
Z2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52
YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIlVOU0lH
TkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVf
NV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdhNTI5ZjRlYzZiNTlmZTdjZjI3N2I1OWY4MGU4MTJiMDlj
MDk0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYmEt
cmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0
ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY2FudmFzLXRleGltYWdl
LWFmdGVyLW11bHRpcGxlLWRyYXdpbWFnZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY2FudmFzLXRl
eGltYWdlLWFmdGVyLW11bHRpcGxlLWRyYXdpbWFnZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzVkNDVi
N2IwMTg2YWFjYjJmNjJjODc2MjYwYWRiMmQ2ZjMxM2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy9jYW52YXMtdGV4aW1hZ2UtYWZ0ZXItbXVsdGlwbGUtZHJhd2ltYWdlcy5odG1s
CkBAIC0wLDAgKzEsMTAwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5UZXhJbWFnZTJEIG9mIDJEIENhbnZhcyBhZnRlciBtdWx0aXBsZSBk
cmF3SW1hZ2VzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2NvbnN0
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCitjb25zdCBzeiA9IDUxMjsKK2xldCBncmVlbkltYWdl
ID0gbnVsbDsKKworZnVuY3Rpb24gbG9hZEltYWdlQW5kU3RhcnQoc3RhcnRGdW5jKSB7CisgIGxl
dCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgIGMud2lkdGggPSBzejsK
KyAgYy5oZWlnaHQgPSBzejsKKyAgbGV0IGN0eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgY3R4
LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICBjdHguZmlsbFJlY3QoMCwgMCwgc3osIHN6
KTsKKyAgZ3JlZW5JbWFnZSA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGMsIHN0YXJ0RnVuYyk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIGRlc2NyaXB0aW9uKCk7CisgIGRlYnVnKCdS
ZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9jcmJ1Zy5jb20vODc4NTQ1Ij5odHRw
Oi8vY3JidWcuY29tLzg3ODU0NTwvYT4nKTsKKyAgLy8gTWltaWNzIHRoZSBpbWFnZS10by10ZXh0
dXJlIHVwbG9hZCBwYXRoIGZyb20gdGhlIG9sZCBKYXZhU2NyaXB0CisgIC8vIHBvcnQgb2YgTzNE
LCBzYWx2YWdlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJzb250L28zZCAuCisKKyAgLy8g
Q3JlYXRlIGEgY2FudmFzIGFuZCBkcmF3IHRoZSBlbnRpcmUgaW1hZ2UgaW50byBpdC4KKyAgbGV0
IGJpZ0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBiaWdDYW52
YXMud2lkdGggPSBncmVlbkltYWdlLm5hdHVyYWxXaWR0aDsKKyAgYmlnQ2FudmFzLmhlaWdodCA9
IGdyZWVuSW1hZ2UubmF0dXJhbEhlaWdodDsKKyAgbGV0IGJjID0gYmlnQ2FudmFzLmdldENvbnRl
eHQoJzJkJyk7CisgIGJjLmRyYXdJbWFnZShncmVlbkltYWdlLCAwLCAwLCBiaWdDYW52YXMud2lk
dGgsIGJpZ0NhbnZhcy5oZWlnaHQpOworICAvLyBDcmVhdGUgYSB0ZW1wIGNhbnZhcyB0byBmbGlw
IHZlcnRpY2FsbHkuCisgIGxldCB0ZW1wQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Y2FudmFzJyk7CisgIHRlbXBDYW52YXMud2lkdGggPSBiaWdDYW52YXMud2lkdGg7CisgIHRlbXBD
YW52YXMuaGVpZ2h0ID0gYmlnQ2FudmFzLmhlaWdodDsKKyAgbGV0IHRjID0gdGVtcENhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpOworICB0Yy50cmFuc2xhdGUoMCwgdGVtcENhbnZhcy5oZWlnaHQpOwor
ICB0Yy5zY2FsZSgxLCAtMSk7CisgIHRjLmRyYXdJbWFnZShiaWdDYW52YXMsIDAsIDAsIHRlbXBD
YW52YXMud2lkdGgsIHRlbXBDYW52YXMuaGVpZ2h0KTsKKyAgLy8gU2V0IHVwIHRvIGRyYXcgdmlh
IFdlYkdMLgorICBsZXQgYzNkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwor
ICBsZXQgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGMzZCk7CisgIGxldCBwcm9nID0gd3R1LnNl
dHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgZ2wudW5pZm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9nLCAndGV4JyksIDApOworICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAv
LyBJdGVyYXRlIHRocm91Z2ggdGhlIGxhcmdlIGNhbnZhcywgZHJhd2luZyBwaWVjZXMgb2YgaXQg
dG8gYQorICAvLyBzY3JhdGNoIGNhbnZhcy4KKyAgbGV0IHNjcmF0Y2hDYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgY29uc3Qgd2lkdGggPSB0ZW1wQ2FudmFzLndp
ZHRoIC8gMjsKKyAgY29uc3QgaGVpZ2h0ID0gdGVtcENhbnZhcy5oZWlnaHQgLyAyOworICBsZXQg
YmIgPSBuZXcgVWludDhBcnJheSg0ICogYzNkLndpZHRoICogYzNkLmhlaWdodCk7CisgIGZvciAo
bGV0IGpqID0gMDsgamogPCAyOyArK2pqKSB7CisgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IDI7
ICsraWkpIHsKKyAgICAgIC8vIFByZXBhcmUgdGV4dHVyZS4KKyAgICAgIHNjcmF0Y2hDYW52YXMu
d2lkdGggPSB3aWR0aDsKKyAgICAgIHNjcmF0Y2hDYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAg
ICAgbGV0IGN0eCA9IHNjcmF0Y2hDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICAgIGN0eC5z
YXZlKCk7CisgICAgICBjdHgudHJhbnNsYXRlKC0oaWkgKiB3aWR0aCksIC0oamogKiBoZWlnaHQp
KTsKKyAgICAgIGN0eC5zY2FsZSgxLjAsIDEuMCk7CisgICAgICBjdHguZHJhd0ltYWdlKHRlbXBD
YW52YXMsIDAsIDAsIHRlbXBDYW52YXMud2lkdGgsIHRlbXBDYW52YXMuaGVpZ2h0KTsKKyAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hDYW52YXMpOworICAgICAgY3R4LnJlc3RvcmUoKTsK
KyAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgICAgLy8gRHJhdyBh
bmQgY2hlY2sgdGhhdCByZW5kZXJpbmcgb2NjdXJyZWQgcHJvcGVybHkuCisgICAgICBnbC51bmlm
b3JtMWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2csICd0ZXgnKSwgMCk7CisgICAgICB3dHUu
ZHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgIGxldCB0b2xlcmFuY2UgPSAyOworICAgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgMSwgMSwgYzNkLndpZHRoIC0gMiwgYzNkLmhlaWdodCAtIDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsgMCwgMjU1LCAwLCAyNTUgXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNob3VsZCBiZSBncmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvbGVyYW5jZSk7CisKKyAgICB9CisgIH0KKworICBmaW5pc2hUZXN0KCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZEltYWdlQW5kU3RhcnQocnVuVGVzdCki
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+PC9jYW52YXM+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2NvbXByZXNzZWQtdGV4
LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2NvbXByZXNzZWQtdGV4LWltYWdlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDAxOWE2NTI1NGU5ODU4OThhNWU5MDk2YWE5YWVjYjQ0NmU1NDEwMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY29tcHJlc3NlZC10ZXgtaW1hZ2UuaHRtbApAQCAt
MCwwICsxLDI0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citjb25zdCBjb250ZXh0VmVyc2lv
biA9IDE7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy9jb21wcmVz
c2VkLXRleC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL21pc2MvY29weS10ZXgtaW1hZ2UtMmQtZm9ybWF0cy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy9jb3B5LXRleC1pbWFnZS0yZC1mb3JtYXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ0NGY5Y2M3M2Yx
MTMxOTdmNGFkYWMwZDhmNTBjMzMxYTYwNGMwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L21pc2MvY29weS10ZXgtaW1hZ2UtMmQtZm9ybWF0cy5odG1sCkBAIC0wLDAgKzEsMTczIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5WZXJpZnkgY29weVRleEltYWdlMkQgZm9sbG93
cyBmb3JtYXQgcmVzdGljdGlvbnM8L3RpdGxlPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlk
PSJjYW52YXNOb0FscGhhIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZ2V0
Q2hhbm5lbHNGcm9tRm9ybWF0KGZvcm1hdCkgeworICBzd2l0Y2ggKGdsW2Zvcm1hdF0pIHsKKyAg
Y2FzZSBnbC5BTFBIQToKKyAgICByZXR1cm4gMHgwMDAxOworICBjYXNlIGdsLkxVTUlOQU5DRToK
KyAgY2FzZSBnbC5SR0I6CisgICAgcmV0dXJuIDB4MTExMDsKKyAgY2FzZSBnbC5MVU1JTkFOQ0Vf
QUxQSEE6CisgIGNhc2UgZ2wuUkdCQToKKyAgICByZXR1cm4gMHgxMTExOworICBkZWZhdWx0Ogor
ICAgIHJldHVybiAwOworICB9Cit9CisKK3ZhciBmb3JtYXRzID0gWworICAnQUxQSEEnLAorICAn
TFVNSU5BTkNFJywKKyAgJ0xVTUlOQU5DRV9BTFBIQScsCisgICdSR0InLAorICAnUkdCQScKK107
CisKK3ZhciBpc1JlbmRlcmFibGUgPSB7CisgICdBTFBIQSc6IGZhbHNlLAorICAnTFVNSU5BTkNF
JzogZmFsc2UsCisgICdMVU1JTkFOQ0VfQUxQSEEnOiBmYWxzZSwKKyAgJ1JHQic6IHRydWUsCisg
ICdSR0JBJzogdHJ1ZQorfTsKKwordmFyIGdsID0gbnVsbDsKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKKworZGVzY3JpcHRpb24oKTsKKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKK3ZhciBjYW52YXNOb0FscGhhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhc05vQWxwaGEiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2Fu
dmFzLCB7YWxwaGE6dHJ1ZX0pOwordmFyIGdsTm9BbHBoYSA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzTm9BbHBoYSwge2FscGhhOmZhbHNlfSk7CisKK2RlYnVnKCJ0ZXN0IHdpdGggYW4gUkdC
QSBiYWNrYnVmZmVyIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkR1cmluZyBJbml0aWFsaXph
dGlvbiIpOwordGVzdEZvcm1hdHMoJ1JHQkEnKTsKKwordGVzdEJhY2tidWZmZXJGb3JtYXRzKCk7
CisKK2RlYnVnKCJ0ZXN0IHdpdGggYW4gUkdCIGJhY2tidWZmZXIiKTsKK3ZhciBnbCA9IGdsTm9B
bHBoYTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKK3d0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRHVyaW5nIEluaXRpYWxpemF0aW9uIik7Cit0
ZXN0Rm9ybWF0cygnUkdCJyk7CisKK2Z1bmN0aW9uIHRlc3RCYWNrYnVmZmVyRm9ybWF0cygpIHsK
KyAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZm9ybWF0
cy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgYmFja0Zvcm1hdCA9IGZvcm1hdHNbaWldOworCisg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2xb
YmFja0Zvcm1hdF0sIDIsIDIsIDAsIGdsW2JhY2tGb3JtYXRdLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworCisgICAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCB0ZXgsIDApOworICAgIHZhciBzdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBpZiAoc3RhdHVzID09
IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICBpZiAoIWlzUmVuZGVyYWJsZVtiYWNr
Rm9ybWF0XSkgeworICAgICAgICB0ZXN0RmFpbGVkKCdDcmVhdGluZyBmcmFtZWJ1ZmZlciBmcm9t
ICcgKyBiYWNrRm9ybWF0ICsgJyB0ZXh0dXJlIHN1Y2NlZWRlZCBldmVuIHRob3VnaCBpdCBpcyBu
b3QgYSByZW5kZXJhYmxlIGZvcm1hdCcpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWco
J3Rlc3Qgd2l0aCAnICsgYmFja0Zvcm1hdCArICcgZmJvJyk7CisgICAgICAgIHRlc3RGb3JtYXRz
KGJhY2tGb3JtYXQpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBkZWJ1ZyhiYWNrRm9y
bWF0ICsgJyBub3Qgc3VwcG9ydGVkIGFzIGEgcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnQnKTsKKyAg
ICB9CisgIH0KK30KKworZnVuY3Rpb24gdGVzdEZvcm1hdHMoYmFja0Zvcm1hdCkgeworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgZm9ybWF0cy5sZW5ndGg7ICsraWkpIHsKKyAgICB0ZXN0Q29weVRl
eEltYWdlMkQoYmFja0Zvcm1hdCwgZm9ybWF0c1tpaV0pOworICB9Cit9CisKK2Z1bmN0aW9uIHRv
Q2hhbm5lbHModmFsdWUpIHsKKyAgcmV0dXJuICgodmFsdWUgJiAweDEwMDApID8gJ1InIDogJ18n
KSArCisgICAgICAgICAoKHZhbHVlICYgMHgwMTAwKSA/ICdHJyA6ICdfJykgKworICAgICAgICAg
KCh2YWx1ZSAmIDB4MDAxMCkgPyAnQicgOiAnXycpICsKKyAgICAgICAgICgodmFsdWUgJiAweDAw
MDEpID8gJ0EnIDogJ18nKTsKK30KKworZnVuY3Rpb24gdGVzdENvcHlUZXhJbWFnZTJEKGJhY2tG
b3JtYXQsIHRleEZvcm1hdCkgeworICB2YXIgbmVlZCA9IGdldENoYW5uZWxzRnJvbUZvcm1hdCh0
ZXhGb3JtYXQpOworICB2YXIgaGF2ZSA9IGdldENoYW5uZWxzRnJvbUZvcm1hdChiYWNrRm9ybWF0
KTsKKyAgdmFyIHNob3VsZFBhc3MgPSAobmVlZCAmIGhhdmUpID09IG5lZWQ7CisKKyAgLy9kZWJ1
ZygibmVlZDogIiArIHRvQ2hhbm5lbHMobmVlZCkpOworICAvL2RlYnVnKCJoYXZlOiAiICsgdG9D
aGFubmVscyhoYXZlKSk7CisgIC8vZGVidWcoImJvdGg6ICIgKyB0b0NoYW5uZWxzKGhhdmUgJiBu
ZWVkKSk7CisKKyAgLy8gY2xlYXIgYmFja2J1ZmZlcgorICBnbC5jbGVhckNvbG9yKDAuMjUsIDEs
IDAuNzUsIDAuNSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgIHZhciB0
ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRl
eHR1cmUgdW5pdCAwCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOwor
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
Z2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBnbFt0ZXhGb3JtYXRdLCAwLCAwLCAyLCAyLCAwKTsKKyAgaWYgKCFzaG91bGRQ
YXNzKSB7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZSgKKyAgICAgICAgZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLAorICAgICAgICAic2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNvcHlUZXhJbWFnZTJE
ICIgKyB0ZXhGb3JtYXQgKyAiIGZyb20gIiArIGJhY2tGb3JtYXQpOworICAgIHJldHVybjsKKyAg
fQorCisgIHd0dS5nbEVycm9yU2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsCisgICAg
ICAic2hvdWxkIGJlIGFibGUgdG8gY29weVRleEltYWdlMkQgIiArIHRleEZvcm1hdCArICIgZnJv
bSAiICsgYmFja0Zvcm1hdCk7CisKKyAgLy8gRHJhdworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1
YWQoZ2wpOworCisgIHZhciBleHBlY3RlZENvbG9ycyA9IHsKKyAgICAnQUxQSEEnOiBbMCwgMCwg
MCwgMTI3XSwKKyAgICAnTFVNSU5BTkNFJzogWzY0LCA2NCwgNjQsIDI1NV0sCisgICAgJ0xVTUlO
QU5DRV9BTFBIQSc6IFs2NCwgNjQsIDY0LCAxMjddLAorICAgICdSR0InOiBbNjQsIDI1NSwgMTkx
LCAyNTVdLAorICAgICdSR0JBJzogWzY0LCAyNTUsIDE5MSwgMTI3XQorICB9OworCisgIHZhciBj
b2xvciA9IGV4cGVjdGVkQ29sb3JzW3RleEZvcm1hdF07CisKKyAgd3R1LmNoZWNrQ2FudmFzKGds
LCBjb2xvciwgInNob3VsZCBiZSAiICsgY29sb3IsIDE2KTsKKworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3RleHR1cmVzL21pc2MvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy9jb3B5LXRleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTc1MTU4MjQ3MjI3YzlhYWE2YzYyYTlhODVhODQxMzAzZDcxZDVmNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5o
dG1sCkBAIC0wLDAgKzEsMTM3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IGZhbHNlOworCitmdW5jdGlvbiBpbml0KCkKK3sKKyAgICBkZXNjcmlw
dGlvbignVmVyaWZ5IGNvcHlUZXhJbWFnZTJEIGFuZCBjb3B5VGV4U3ViSW1hZ2UyRCcpOworCisg
ICAgcnVuVGVzdCgpOworfQorCit2YXIgZ2wgPSBudWxsOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOworCitmdW5jdGlvbiBydW5UZXN0SXRlcmF0aW9uKGFudGlhbGlhcykKK3sKKyAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoCisgICAgICAgIGFudGlhbGlhcyA/ICJh
bnRpYWxpYXNPbiIgOiAiYW50aWFsaWFzT2ZmIik7CisgICAgdmFyIGF0dHJpYnMgPSBhbnRpYWxp
YXMgPyB7IGFudGlhbGlhczogdHJ1ZSB9IDogeyBhbnRpYWxpYXM6IGZhbHNlIH07CisgICAgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgYXR0cmlicyk7CisgICAgdmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworICAgIHZhciB0ZXh0dXJlTG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIkR1cmluZyBJbml0aWFsaXphdGlvbiIpOworCisgICAgZ2wuY29s
b3JNYXNrKDEsIDEsIDEsIDEpOworICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOworICAgIGRlYnVn
KCdUZXN0aW5nIGNvcHlUZXhJbWFnZTJEJyk7CisKKyAgICAvLyBSZWQgY2FudmFzCisgICAgZ2wu
Y2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
IHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCisgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgLy8gU2V0IHVwIHRl
eHR1cmUKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwg
Z2wuTkVBUkVTVCk7CisgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOworCisgICAgdmFy
IGNvbG9ycyA9IFsKKyAgICAgIFsxLCAwLCAwLCAxXSwKKyAgICAgIFswLCAxLCAwLCAxXSwKKyAg
ICAgIFswLCAwLCAxLCAxXSwKKyAgICAgIFswLjUsIDAuNSwgMC41LCAwLjVdLAorICAgIF07Cisg
ICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheSgyICogMiAqIDQpOworICAgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCAyICogMiAqIDQ7ICsraWkpCisgICAgICBkYXRhW2lpXSA9IDEzNjsgLy8gQSBy
YW5kb20gbnVtYmVyIG90aGVyIHRoYW4gMC4KKyAgICB2YXIgY291bnQgPSAwOworICAgIGZvciAo
dmFyIHl5ID0gLTI7IHl5IDw9IDI7ICsreXkpIHsKKyAgICAgIGZvciAodmFyIHh4ID0gLTI7IHh4
IDw9IDI7ICsreHgpIHsKKyAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDI7ICsraWkpIHsK
KyAgICAgICAgICB2YXIgdGV4Q29sb3IgPSBjb2xvcnNbY291bnRdOworICAgICAgICAgIHZhciBj
bGVhckNvbG9yID0gY29sb3JzWyhjb3VudCArIDEpICUgY29sb3JzLmxlbmd0aF07CisgICAgICAg
ICAgLy8gY2xlYXIgdG8gc29tZSBjb2xvcgorICAgICAgICAgIGdsLmNsZWFyQ29sb3IodGV4Q29s
b3JbMF0sIHRleENvbG9yWzFdLCB0ZXhDb2xvclsyXSwgdGV4Q29sb3JbM10pOworICAgICAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKwor
ICAgICAgICAgIC8vIGNvcHkgdGhhdCBjb2xvciB0byB0aGUgdGV4dHVyZS4KKyAgICAgICAgICBz
d2l0Y2ggKGlpKSB7CisgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgZ2wuY29weVRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgeHgsIHl5LCAyLCAyLCAwKTsKKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAg
ICAgICJ1c2luZyBjb3B5VGV4SW1hZ2UyRDogeCA9ICIgKyB4eCArICIsIHkgPSAiICsgeXkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIHh4LCB5eSwgMiwgMik7CisgICAgICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAidXNpbmcgY29w
eVRleFN1YkltYWdlMkQ6IHggPSAiICsgeHggKyAiLCB5ID0gIiArIHl5KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIGNsZWFyIHRvIHNvbWUgb3RoZXIg
Y29sb3IuCisgICAgICAgICAgZ2wuY2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9y
WzFdLCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKKyAgICAgICAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgICAv
LyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wpOworCisgICAgICAgICAgLy8gY2hlY2sgdGhlIHJlbmRlcmluZyByZXN1bHRzCisgICAgICAg
ICAgZm9yICh2YXIgaXkgPSAwOyBpeSA8IDI7ICsraXkpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGl4ID0gMDsgaXggPCAyOyArK2l4KSB7CisgICAgICAgICAgICAgIHZhciB4ID0geHggKyBpeDsK
KyAgICAgICAgICAgICAgdmFyIHkgPSB5eSArIGl5OworICAgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRDb2xvciA9ICh4IDwgMCB8fCB5IDwgMCB8fCB4ID49IDIgfHwgeSA+PSAyKSA/CisgICAgICAg
ICAgICAgICAgICAoaWkgPT0gMCA/IFswLCAwLCAwLCAwXSA6IFsxMzYsIDEzNiwgMTM2LCAxMzZd
KSA6CisgICAgICAgICAgICAgICAgICBbTWF0aC5mbG9vcigyNTUgKiB0ZXhDb2xvclswXSksCisg
ICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgKiB0ZXhDb2xvclsxXSksCisgICAgICAg
ICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgKiB0ZXhDb2xvclsyXSksCisgICAgICAgICAgICAg
ICAgICAgTWF0aC5mbG9vcigyNTUgKiB0ZXhDb2xvclszXSldOworICAgICAgICAgICAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCBpeCwgaXksIDEsIDEsIGV4cGVjdGVkQ29sb3IsCisgICAgICAg
ICAgICAgICAgICAiIiArIGl4ICsgIiwgIiArIGl5ICsgIiBzaG91bGQgcmVuZGVyICIgKyBleHBl
Y3RlZENvbG9yICsgIiAoKy8tMSkiLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGNvbG9ycy5sZW5ndGg7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
YW50aWFsaWFzKQoreworICAgIGRlYnVnKCJUZXN0aW5nIHdpdGggYW50aWFsaWFzIG9uIik7Cisg
ICAgcnVuVGVzdEl0ZXJhdGlvbih0cnVlKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB3aXRoIGFudGlh
bGlhcyBvZmYiKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKGZhbHNlKTsKKworICAgIGZpbmlzaFRl
c3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGNh
bnZhcyBpZD0iYW50aWFsaWFzT24iIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNh
bnZhcyBpZD0iYW50aWFsaWFzT2ZmIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9jb3B5LXRleC1pbWFnZS1j
cmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9jb3B5LXRleC1pbWFnZS1jcmFzaC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5NDA1MTY3MmE4Y2ZhNjExNDAzYTc4YmFmMzFlNmZlNDIxN2NjMTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2NvcHktdGV4LWltYWdlLWNyYXNoLmh0bWwKQEAgLTAs
MCArMSw2OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+Y29weVRleEltYWdlMkQgc2hvdWxkIG5vdCBjcmFzaDwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkRyYXcgaW50byBzb3VyY2Ugb2YgY29weVRl
eFN1YkltYWdlMkQgc2hvdWxkbid0IGNyYXNoOiByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8v
Y3JidWcuY29tLzcwNzQ0NSIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworY2FudmFzLndpZHRoID0g
MTY7CitjYW52YXMuaGVpZ2h0ID0gMTY7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNh
bnZhcyk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgLy8gU2V0dXAvY2xlYXIgc291cmNl
IHRleHR1cmUKKyAgICBsZXQgdGV4MSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgxKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgbGV0IGZiMSA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjEpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4
dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8y
RCwgdGV4MSwgMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAv
LyBTZXR1cC9jbGVhciBkZXN0aW5hdGlvbiB0ZXh0dXJlCisgICAgbGV0IHRleDIgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4Mik7Cisg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNiwgMTYsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGxldCBmYjIgPSBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIy
KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gQ29weSBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlv
biB0ZXh0dXJlCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjEpOwor
ICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDIpOworICAgIGdsLmNvcHlUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsIDAsIDE2LCAxNiwgMCk7CisKKyAg
ICAvLyBEcmF3IGludG8gc291cmNlIHRleHR1cmUKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZiMik7CisgICAgbGV0IHByb2dyYW0gPSB3dHUuc2V0dXBDb2xvclF1YWQo
Z2wpOyAvLyBVc2VkIGFzIGEgdHJpdmlhbCBzaGFkZXI7IGFueSBzaGFkZXIgd2lsbCB3b3JrLgor
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdM
RVMsIDAsIDMpOworfQorCitydW5UZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy9jb3B5dGV4c3ViaW1hZ2UyZC1sYXJnZS1wYXJ0aWFsLWNvcHktY29ycnVwdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy9jb3B5dGV4c3ViaW1hZ2UyZC1sYXJnZS1wYXJ0aWFsLWNvcHktY29ycnVw
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZmU0NzAwOGZhOWU4ODlmMTQ0OWRkMzU4NjM4YzdmMDQx
ZDkzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2NvcHl0ZXhzdWJpbWFnZTJk
LWxhcmdlLXBhcnRpYWwtY29weS1jb3JydXB0aW9uLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q29weVRl
eFN1YkltYWdlMkQgcGFydGlhbCBkZXN0aW5hdGlvbiB0ZXh0dXJlIHRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IGNvcHlUZXhT
dWJJbWFnZTJEIHJlZGVmaW5pbmcgcGFydCBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSB3b3Jr
cyBhcyBleHBlY3RlZC4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSAyNTY7CisgICAgY2FudmFzLmhlaWdodCA9
IDI1NjsKKyAgICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgLy8g
VHJ5IHRoaXMgdGVzdCBtdWx0aXBsZSB0aW1lcy4KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
MTA7ICsraWkpIHsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOwor
ICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgdmFyIHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4KTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAv
LyBBbGxvY2F0ZSBhIHRleHR1cmUgdHdpY2UgYXMgdGFsbCBhcyB0aGUgY2FudmFzLgorICAgICAg
ICAvLyBDb25jZXB0dWFsbHksIGl0IGlzIGZpbGxlZCB3aXRoIHplcm9zLgorICAgICAgICBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGNhbnZhcy53aWR0aCwgMiAqIGNh
bnZhcy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgICAgIC8vIENvcHkgdGhlIGVudGlyZSBmcmFtZWJ1ZmZlciBp
bnRvIHRoZSB0b3AgcGFydCBvZiB0aGlzIHRleHR1cmUuCisgICAgICAgIGdsLmNvcHlUZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFz
LmhlaWdodCk7CisgICAgICAgIC8vIERyYXcgdGhlIHRleHR1cmUgYmFjayBpbnRvIHRoZSBjYW52
YXMuCisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAg
ICAgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgICAgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0IC8gMiwgWzAs
IDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGdy
ZWVuIik7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIGNhbnZhcy5oZWlnaHQg
LyAyLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQgLyAyLCBbMCwgMCwgMCwgMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjayIpOwor
ICAgIH0KK30KKworcnVuVGVzdCgpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvY29weXRleHN1YmltYWdlMmQtc3VicmVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
Y29weXRleHN1YmltYWdlMmQtc3VicmVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGExNzkxNzkwMWYw
ZTVhZmQwMWM1ODY5Y2Y2MDE0NmMxNTY0YzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
bWlzYy9jb3B5dGV4c3ViaW1hZ2UyZC1zdWJyZWN0cy5odG1sCkBAIC0wLDAgKzEsMTcwIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Db3B5
VGV4U3ViSW1hZ2UyRCBwYXJ0aWFsIGRlc3RpbmF0aW9uIHRleHR1cmUgdGVzdDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlZlcmlmaWVzIHRoYXQgY29weVRl
eFN1YkltYWdlMkQgcmVkZWZpbmluZyBwYXJ0IG9mIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIHdv
cmtzIGFzIGV4cGVjdGVkLiIpOworCisvLy8vCisKK3ZhciBrV2lkdGggPSAxNjsKK3ZhciBrSGVp
Z2h0ID0gMTY7CisKKy8vLy8KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKworY2FudmFzLndpZHRoID0g
a1dpZHRoOworY2FudmFzLmhlaWdodCA9IGtIZWlnaHQ7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcyk7CisKKy8vLy8KKworZnVuY3Rpb24gY2xlYXJUbyhjb2xvcikgeworICAg
IGdsLmNsZWFyQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3JbM10pOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworfQorCitmdW5jdGlvbiByZWFkSW50
byh2aWV3KSB7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCBrV2lkdGgsIGtIZWlnaHQsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICBuZXcgVWludDhBcnJheSh2
aWV3LmJ1ZmZlcikpOworfQorCisvLy8vCisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICBnbC5zY2lzc29yKDAsIDAsIGtXaWR0aC8y
LCBrSGVpZ2h0LzIpOworICAgIGNsZWFyVG8oWzEsMCwwLDFdKTsKKyAgICBnbC5zY2lzc29yKGtX
aWR0aC8yLCAwLCBrV2lkdGgvMiwga0hlaWdodC8yKTsKKyAgICBjbGVhclRvKFswLDEsMCwxXSk7
CisgICAgZ2wuc2Npc3NvcigwLCBrSGVpZ2h0LzIsIGtXaWR0aC8yLCBrSGVpZ2h0LzIpOworICAg
IGNsZWFyVG8oWzAsMCwxLDFdKTsKKyAgICBnbC5zY2lzc29yKGtXaWR0aC8yLCBrSGVpZ2h0LzIs
IGtXaWR0aC8yLCBrSGVpZ2h0LzIpOworICAgIGNsZWFyVG8oWzAsMSwxLDFdKTsKKworICAgIHZh
ciBzcmNEYXRhID0gbmV3IFVpbnQzMkFycmF5KGtXaWR0aCAqIGtIZWlnaHQpOworICAgIHJlYWRJ
bnRvKHNyY0RhdGEpOworICAgIGNvbnNvbGUubG9nKCcweCcgKyBzcmNEYXRhWzBdLnRvU3RyaW5n
KDE2KSk7CisKKyAgICAvLy8vCisKKyAgICB2YXIgZHN0VGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGRzdFRleCk7CisgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBrV2lkdGgsIGtIZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsgLy8gVXBs
b2FkcyB6ZXJvcy4KKyAgICB2YXIgZHN0UmVmRGF0YSA9IG5ldyBVaW50MzJBcnJheShrV2lkdGgg
KiBrSGVpZ2h0KTsgLy8gQWxzbyBjbGVhcmVkIHRvIHplcm9zIQorICAgIHZhciBkc3RUZXN0RGF0
YSA9IG5ldyBVaW50MzJBcnJheShrV2lkdGggKiBrSGVpZ2h0KTsKKworICAgIHZhciBkc3RGQiA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBkc3RGQik7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfMkQsIGRzdFRleCwgMCk7CisKKyAgICAvLy8vCisKKyAgICBmdW5jdGlvbiBwaXhl
bFBvcyh4LCB5KSB7CisgICAgICAgIHJldHVybiB5ICoga1dpZHRoICsgeDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0Q21kKHR1cGxlKSB7CisgICAgICAgIHZhciBkc3RYMCwgZHN0WTAsIHNy
Y1gwLCBzcmNZMCwgd2lkdGgsIGhlaWdodDsKKyAgICAgICAgW2RzdFgwLCBkc3RZMCwgc3JjWDAs
IHNyY1kwLCB3aWR0aCwgaGVpZ2h0XSA9IHR1cGxlCisgICAgICAgIGRlYnVnKCJjb3B5VGV4U3Vi
SW1hZ2UyRCgiICsKKyAgICAgICAgICAgICAgW2RzdFgwKycsJytkc3RZMCwgc3JjWDArJywnK3Ny
Y1kwLCB3aWR0aCsnLCcraGVpZ2h0XS5qb2luKCcsICcpICsKKyAgICAgICAgICAgICAgIikiKTsK
KworICAgICAgICAvLyBUZXN0CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFgwLCBkc3RZMCwgc3JjWDAsIHNy
Y1kwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBFbXVsYXRlIGZvciByZWZlcmVuY2UK
KyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICB2
YXIgc3JjWCA9IHNyY1gwICsgeDsKKyAgICAgICAgICAgIHZhciBkc3RYID0gZHN0WDAgKyB4Owor
ICAgICAgICAgICAgaWYgKHNyY1ggPCAwIHx8IHNyY1ggPj0ga1dpZHRoIHx8CisgICAgICAgICAg
ICAgICAgZHN0WCA8IDAgfHwgZHN0WCA+PSBrV2lkdGgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFy
IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgc3JjWSA9IHNy
Y1kwICsgeTsKKyAgICAgICAgICAgICAgICB2YXIgZHN0WSA9IGRzdFkwICsgeTsKKyAgICAgICAg
ICAgICAgICBpZiAoc3JjWSA8IDAgfHwgc3JjWSA+PSBrSGVpZ2h0IHx8CisgICAgICAgICAgICAg
ICAgICAgIGRzdFkgPCAwIHx8IGRzdFkgPj0ga0hlaWdodCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworCisgICAg
ICAgICAgICAgICAgdmFyIHNyY1BvcyA9IHBpeGVsUG9zKHNyY1gsIHNyY1kpOworICAgICAgICAg
ICAgICAgIHZhciBkc3RQb3MgPSBwaXhlbFBvcyhkc3RYLCBkc3RZKTsKKyAgICAgICAgICAgICAg
ICBkc3RSZWZEYXRhW2RzdFBvc10gPSBzcmNEYXRhW3NyY1Bvc107CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBDb21wYXJlCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZHN0RkIpOworICAgICAgICByZWFkSW50byhkc3RUZXN0RGF0YSk7
CisKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBrV2lkdGg7IHgrKykgeworICAgICAgICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCBrSGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgICAgICB2
YXIgcG9zID0gcGl4ZWxQb3MoeCwgeSk7CisgICAgICAgICAgICAgICAgdmFyIHJlZlBpeGVsID0g
ZHN0UmVmRGF0YVtwb3NdOworICAgICAgICAgICAgICAgIHZhciB0ZXN0UGl4ZWwgPSBkc3RUZXN0
RGF0YVtwb3NdOworCisgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhbeCwgeV0uam9pbigi
LCIpICsgIjoiLAorICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgdGVzdFBpeGVsLnRvU3Ry
aW5nKDE2KSwgcmVmUGl4ZWwudG9TdHJpbmcoMTYpKQorICAgICAgICAgICAgICAgIGlmICh0ZXN0
UGl4ZWwgPT0gcmVmUGl4ZWwpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTWlzbWF0Y2ggYXQgKCIgKyBbeCwgeV0uam9pbigiLCAi
KSArICIpOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgU2hvdWxkIGJlIDB4IiAr
IHJlZlBpeGVsLnRvU3RyaW5nKDE2KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB3
YXMgMHgiICsgdGVzdFBpeGVsLnRvU3RyaW5nKDE2KSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICBbMCwwLCAwLDAsIDIsM10sCisg
ICAgICAgIFswLDAsIDUsOCwgMiwzXSwKKyAgICAgICAgWzEsMCwgMCwwLCAyLDNdLAorICAgICAg
ICBbMSw3LCAwLDAsIDIsM10sCisgICAgXTsKKworICAgIHRlc3RzLmV2ZXJ5KHggPT4gdGVzdENt
ZCh4KSk7Cit9CisKK3J1blRlc3QoKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9taXNjL2N1YmUtaW5jb21wbGV0ZS1mYm8uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY3ViZS1p
bmNvbXBsZXRlLWZiby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwODgwMWYwODU2ZTdlYzY3YzQ4NDFlNzA1
M2RhNzUwN2FhMzZkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2N1YmUtaW5j
b21wbGV0ZS1mYm8uaHRtbApAQCAtMCwwICsxLDcyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5UZXN0IHRoYXQgY3ViZSBpbmNvbXBsZXRl
IHRleHR1cmVzIGNhbiBub3QgYmUgdXNlZCBhcyBGQk8gYXR0YWNobWVudHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyNCIgaGVp
Z2h0PSIyNCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCk7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImV4YW1wbGUiKTsKKwordmFyIHRlc3RJbmNvbXBsZXRlQ3ViZW1hcEZhY2VJbkZCTyA9
IGZ1bmN0aW9uKCkgeworICAgIC8vIENyZWF0ZSBhIGN1YmUgbWFwIHRleHR1cmUgdGhhdCdzIG5v
dCBjdWJlIGNvbXBsZXRlLgorICAgIHZhciB0ZXgyID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleDIpOworICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisKKyAgICB2YXIgY3ViZV9tYXBfZmFjZXMg
PSBbCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgICAgZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ksCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAg
ICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICBnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1oKKyAgICBdOworICAgIC8vIEZpbGwgaW4gYWxsIGJ1dCAxIGN1
YmUgbWFwIGZhY2UKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1YmVfbWFwX2ZhY2VzLmxlbmd0
aCAtIDE7ICsraSkgeworICAgICAgICBnbC50ZXhJbWFnZTJEKGN1YmVfbWFwX2ZhY2VzW2ldLCAw
LCBnbC5SR0JBLCAzMiwgMzIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwor
ICAgIH0KKworICAgIHZhciBmYjIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRl
eHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWCwgdGV4MiwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGFmdGVyIGF0dGFjaGluZyBjdWJl
IG1hcCBmYWNlLiIpOworICAgIGRlYnVnKCJDdWJlbWFwIGhhcyAxIG1pc3NpbmcgZmFjZSwgc28g
ZnJhbWVidWZmZXIgc2hvdWxkIG5vdCBiZSBjb21wbGV0ZS4iKTsKKyAgICBzaG91bGRCZSgiZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJf
SU5DT01QTEVURV9BVFRBQ0hNRU5UIik7CisKKyAgICBkZWJ1ZygiIik7CisKKyAgICAvLyBGaWxs
IGluIG1pc3NpbmcgY3ViZSBtYXAgZmFjZQorICAgIGdsLnRleEltYWdlMkQoY3ViZV9tYXBfZmFj
ZXNbNV0sIDAsIGdsLlJHQkEsIDMyLCAzMiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgZGVidWcoIk1pc3NpbmcgZmFjZSBpcyBhZGRlZCwgc28gZnJhbWVidWZmZXIg
c2hvdWxkIGJlY29tZSBjb21wbGV0ZS4iKTsKKyAgICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsK
K30KKwordGVzdEluY29tcGxldGVDdWJlbWFwRmFjZUluRkJPKCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworZmluaXNoVGVzdCgpOworCis8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2N1YmUtbWFwLXVwbG9hZHMtb3V0
LW9mLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2N1YmUtbWFwLXVwbG9hZHMtb3V0LW9mLW9y
ZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODhlYTgzZTMyNWNhZjQ2OTViMmE4ZGEwMTRkZmU0MmFhY2Nh
NTQ1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY3ViZS1tYXAtdXBsb2Fkcy1v
dXQtb2Ytb3JkZXIuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBjdWJlIG1hcCBvdXQgb2Ygb3Jk
ZXIgdXBsb2FkIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+Cis8L2NhbnZhcz4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCBvdXQgb2Ygb3JkZXIgY3ViZSBtYXAg
dXBsb2Fkcy4iKTsKK2RlYnVnKCJSZWdyZXNzaW9uIHRlc3QgZm9yIGNyYnVnLmNvbS80NzM3Mzkg
LyBBcHBsZSBSYWRhciAyMDQ0NDA3Mi4iKTsKKworPCEtLSBUaGFua3MgdG8gR3JlZ2cgVGF2YXJl
cyBmb3IgdGhlIG9yaWdpbmFsIHJlcG9ydCBhbmQgdGVzdCBjYXNlLiAtLT4KKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImV4YW1wbGUiKTsKK2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCd3ZWJnbGNvbnRleHRsb3N0Jywg
Y29udGV4dExvc3QsIGZhbHNlKTsKKwordmFyIGNvbnRleHRXYXNMb3N0ID0gZmFsc2U7CisKK2Z1
bmN0aW9uIGNvbnRleHRMb3N0KGUpIHsKKyAgZS5wcmV2ZW50RGVmYXVsdCgpOworICBjb250ZXh0
V2FzTG9zdCA9IHRydWU7CisgIGRlYnVnKCIqKipjb250ZXh0IGxvc3QgLS0gc2hvdWxkIG5vdCBo
YXBwZW4qKioiKTsKK30KKwordmFyIGRhdGFXaWR0aCA9IDI1NjsKK3ZhciBkYXRhSGVpZ2h0ID0g
MjU2OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwordmFyIHRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKy8vIHN0YXJ0IHdpdGggMXgxIHBpeGVsIGN1YmVtYXAKK2dsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7Cit2YXIgY29sb3IgPSBuZXcgVWlu
dDhBcnJheShbMTI4LCAxOTIsIDI1NSwgMjU1XSk7Citmb3IgKHZhciBpaSA9IDA7IGlpIDwgNjsg
KytpaSkgeworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICsgaWksIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNv
bG9yKTsKK30KK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7CitnbC5n
ZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsgLy8gdGhlcmUncyBubyBuZWVkIHRv
IGNhbGwgdGhpcyBidXQgdGhlIGNvZGUgZG9lc24ndCBjaGVjayB0aGUgc2l6ZS4KKwordmFyIHRl
eHR1cmVEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGF0YVdpZHRoICogZGF0YUhlaWdodCAqIDQpOwor
CisvLyBUaGUgZmlyc3QgdGV4dHVyZSBoYXMgZG93bmxvYWRlZAordmFyIGZpcnN0ID0gMTsKK2ds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7CitnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZpcnN0LCAwLCBnbC5SR0JBLCBkYXRhV2lk
dGgsIGRhdGFIZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHRleHR1cmVEYXRh
KTsKKworLy8gTm93IGJlY2F1c2UgdGhlIGZpcnN0IGZhY2UgZG93bmxvYWRlZCBkb2Vzbid0IG1h
dGNoIHRoZSBvdGhlciA1IGZhY2VzIHVwbG9hZCB0aGUgc2FtZSBpbWFnZSB0byB0aGUgb3RoZXIg
NQorLy8gMXgxIGZhY2VzCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgNjsgKytpaSkgeworICAgIGlm
IChpaSAhPT0gZmlyc3QpIHsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJF
X01BUCwgdGV4KTsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1ggKyBpaSwgMCwgZ2wuUkdCQSwgZGF0YVdpZHRoLCBkYXRhSGVpZ2h0LCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCB0ZXh0dXJlRGF0YSk7CisgICAgfQorfQorZ2wuZ2VuZXJh
dGVNaXBtYXAoZ2wuVEVYVFVSRV9DVUJFX01BUCk7CisKKy8vIE5vdyBhcyBlYWNoIG5ldyBmYWNl
IGNvbWVzIGluIGFkZCBpdAorZm9yICh2YXIgaWkgPSAwOyBpaSA8IDY7ICsraWkpIHsKKyAgICBp
ZiAoaWkgIT09IGZpcnN0KSB7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VC
RV9NQVAsIHRleCk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YICsgaWksIDAsIGdsLlJHQkEsIGRhdGFXaWR0aCwgZGF0YUhlaWdodCwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgdGV4dHVyZURhdGEpOworICAgICAgICBnbC5nZW5lcmF0
ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICB9Cit9CisKK2dsLmZsdXNoKCk7CisK
K3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgIHNob3VsZEJlKCJjb250ZXh0V2FzTG9zdCIsICJm
YWxzZSIpOworICBmaW5pc2hUZXN0KCk7Cit9LCAxMDAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL21pc2MvZGVmYXVsdC10ZXh0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2RlZmF1bHQt
dGV4dHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmOGNkMjFjZjY5M2ZmNzQwODUwYzM2ZjBmZmQ2NWU4
OGI5NGVjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2RlZmF1bHQtdGV4dHVy
ZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3RzIHRleHR1cmUgYWNjZXNzIHdpdGggbm8gdGV4dHVy
ZSBib3VuZDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCk7CisKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1
LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDYpOworCisvLyBXaGVuIG5vIHRleHR1cmUgaXMgYm91bmQsIGl0IGlzIGNvbnNpZGVyZWQgYW4g
aW5jb21wbGV0ZSB0ZXh0dXJlLAorLy8gdGhlcmVmb3JlLCBbMCwgMCwgMCwgMV0gc2hvdWxkIGJl
IHJldHVybmVkLgorLy8gU2VlIE9wZW5HTCBFUyBzcGVjIDIuMC4yNSwgc2VjdGlvbiBGLjMuNS4K
K3d0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAsIDAsIDI1NV0pOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy9leGlmLW9yaWVudGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2V4aWYt
b3JpZW50YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmQ1OTZkNDQ1NjQ5ZDU4ZTA0NjdkZDZhYjA3
OGQ3NzA3ZWUxMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9leGlmLW9yaWVu
dGF0aW9uLmh0bWwKQEAgLTAsMCArMSwxNjcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAyMCBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlZlcmlmaWVzIEVYSUYgb3JpZW50YXRpb24gaXMg
cmVzcGVjdGVkIHdoZW4gdXBsb2FkaW5nIGltYWdlcyB0byBXZWJHTCB0ZXh0dXJlczwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1bigp
Ij4KKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitsZXQgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7CitsZXQgdGl1ID0gVGV4SW1hZ2VVdGlsczsKK2xldCBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYyIpOworbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMp
OworbGV0IHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wsIGdsLlJHQkEpOworY29u
c3QgcmVzb3VyY2VQYXRoID0gIi4uLy4uLy4uL3Jlc291cmNlcy8iOworY29uc3QgdG9sZXJhbmNl
ID0gNTsKKworLy8gVGhlIGxvY2F0aW9ucyBhcmUgd3JpdHRlbiBhc3N1bWluZyBmbGlwWSA9IGZh
bHNlLiBGb3IgZmxpcFkgPSB0cnVlLCB5ID0gMS4wLXkuCitjb25zdCBleHBlY3RlZENvbG9ycyA9
IHsKKyAgICB0b3A6ICAgIHsgbG9jYXRpb246IFsgMC41LCAwLjI1IF0sIGNvbG9yOiBbIDI1NSwg
ICAwLCAgIDAgXSB9LAorICAgIGxlZnQ6ICAgeyBsb2NhdGlvbjogWyAwLjQsIDAuNSAgXSwgY29s
b3I6IFsgICAwLCAgIDAsIDI1NSBdIH0sCisgICAgcmlnaHQ6ICB7IGxvY2F0aW9uOiBbIDAuNiwg
MC41ICBdLCBjb2xvcjogWyAyNTUsIDI1NSwgICAwIF0gfSwKKyAgICBib3R0b206IHsgbG9jYXRp
b246IFsgMC41LCAwLjc1IF0sIGNvbG9yOiBbICAgMCwgMjU1LCAgIDAgXSB9LAorfQorCitmdW5j
dGlvbiBvdXRwdXQoc3RyKQoreworICAgIGRlYnVnKHN0cik7CisgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoc3RyKTsKK30KKworZnVuY3Rpb24gY2hlY2tQaXhlbHMoZmxpcFkpCit7CisgICAgZm9y
IChsZXQgcGxhY2UgaW4gZXhwZWN0ZWRDb2xvcnMpIHsKKyAgICAgICAgbGV0IGNvbG9yID0gZXhw
ZWN0ZWRDb2xvcnNbcGxhY2VdOworICAgICAgICBsZXQgbG9jID0gY29sb3IubG9jYXRpb247Cisg
ICAgICAgIGxldCB4ID0gbG9jWzBdOworICAgICAgICBsZXQgeSA9IChmbGlwWSA/IDEuMCAtIGxv
Y1sxXSA6IGxvY1sxXSk7CisgICAgICAgIG91dHB1dCgiICBDaGVja2luZyAiICsgcGxhY2UpOwor
ICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBNYXRoLmZsb29yKGNhbnZhcy53aWR0aCAq
IHgpLCBNYXRoLmZsb29yKGNhbnZhcy5oZWlnaHQgKiB5KSwgMSwgMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvci5jb2xvciwgInNob3VsZEJlICIgKyBjb2xvci5jb2xvciArICIg
Ky8tIiArIHRvbGVyYW5jZSwgdG9sZXJhbmNlKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IHRlc3RJbWFnZUJpdG1hcEZyb21CbG9iV2l0aEZsaXBZKGJsb2IsIGZsaXBZKQoreworICAgIGxl
dCBiaXRtYXA7CisgICAgLy8gQXMgYSBjb25jZXNzaW9uIHRvIEZpcmVmb3gsIHdoaWNoIGRvZXNu
J3QgeWV0IGltcGxlbWVudAorICAgIC8vIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggY3JlYXRpb24g
b3B0aW9ucywgc2tpcCB0aGUgdGVzdHMKKyAgICAvLyBpbnZvbHZpbmcgZmxpcFk9dHJ1ZSBpZiBJ
bWFnZUJpdG1hcCBjcmVhdGlvbiB0aHJvd3MgYW4KKyAgICAvLyBleGNlcHRpb24sIGFuZCB1c2Ug
dGhlIHNpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvciBmb3IgdGhlCisgICAgLy8gZmxpcFk9ZmFs
c2UgY2FzZS4KKyAgICBpZiAoZmxpcFkpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJp
dG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKGJsb2IsIHtpbWFnZU9yaWVudGF0aW9uOiBm
bGlwWX0pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBvdXRwdXQoIiAgKGNy
ZWF0ZUltYWdlQml0bWFwIG9wdGlvbnMgbm90IHN1cHBvcnRlZCAtIHNraXBwaW5nIGZsaXBZPXRy
dWUgY2FzZSkiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKGJsb2IpOworICAgIH0K
KworICAgIG91dHB1dCgiICBUZXN0aW5nIHRleEltYWdlMkQsIGZsaXBZID0gIiArIGZsaXBZKTsK
KyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGJpdG1hcCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
LCBbMCwgMCwgMCwgMjU1XSk7CisgICAgY2hlY2tQaXhlbHMoZmxpcFkpOworCisgICAgb3V0cHV0
KCIgIFRlc3RpbmcgdGV4U3ViSW1hZ2UyRCwgZmxpcFkgPSAiICsgZmxpcFkpOworICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgYml0bWFwLndpZHRoLCBiaXRtYXAu
aGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC50ZXhT
dWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGJpdG1hcCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwg
MjU1XSk7CisgICAgY2hlY2tQaXhlbHMoZmxpcFkpOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0
SW1hZ2VCaXRtYXBGcm9tQmxvYihmaWxlbmFtZSkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2Fp
dCBmZXRjaChyZXNvdXJjZVBhdGggKyBmaWxlbmFtZSk7CisgICAgbGV0IGJsb2IgPSBhd2FpdCBy
ZXNwb25zZS5ibG9iKCk7CisgICAgb3V0cHV0KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgb3V0cHV0KCJUZXN0
aW5nICIgKyBmaWxlbmFtZSArICIgdmlhIEltYWdlQml0bWFwIGZyb20gQmxvYiIpOworICAgIGF3
YWl0IHRlc3RJbWFnZUJpdG1hcEZyb21CbG9iV2l0aEZsaXBZKGJsb2IsIHRydWUpOworICAgIGF3
YWl0IHRlc3RJbWFnZUJpdG1hcEZyb21CbG9iV2l0aEZsaXBZKGJsb2IsIGZhbHNlKTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gdGVzdEltYWdlRWxlbWVudFdpdGhGbGlwWShpbWFnZSwgZmxpcFkpCit7
CisgICAgb3V0cHV0KCIgIFRlc3RpbmcgdGV4SW1hZ2UyRCwgZmxpcFkgPSAiICsgZmxpcFkpOwor
ICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIGltYWdlKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAw
LCAwLCAyNTVdKTsKKyAgICBjaGVja1BpeGVscyhmbGlwWSk7CisKKyAgICBvdXRwdXQoIiAgVGVz
dGluZyB0ZXhTdWJJbWFnZTJELCBmbGlwWSA9ICIgKyBmbGlwWSk7CisgICAgZ2wucGl4ZWxTdG9y
ZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgZmxpcFkpOworICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWFnZSk7Cisg
ICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgICAgY2hl
Y2tQaXhlbHMoZmxpcFkpOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0SW1hZ2VFbGVtZW50KGZp
bGVuYW1lKQoreworICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZSgpOworICAgIGltYWdlLnNyYyA9
IHJlc291cmNlUGF0aCArIGZpbGVuYW1lOworICAgIGF3YWl0IGltYWdlLmRlY29kZSgpOworCisg
ICAgb3V0cHV0KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgb3V0cHV0KCJUZXN0aW5nICIgKyBmaWxlbmFtZSAr
ICIgdmlhIEhUTUxJbWFnZUVsZW1lbnQiKTsKKworICAgIGF3YWl0IHRlc3RJbWFnZUVsZW1lbnRX
aXRoRmxpcFkoaW1hZ2UsIHRydWUpOworICAgIGF3YWl0IHRlc3RJbWFnZUVsZW1lbnRXaXRoRmxp
cFkoaW1hZ2UsIGZhbHNlKTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFNpbmdsZUltYWdlKGZp
bGVuYW1lKQoreworICAgIGF3YWl0IHRlc3RJbWFnZUJpdG1hcEZyb21CbG9iKGZpbGVuYW1lKTsK
KyAgICBhd2FpdCB0ZXN0SW1hZ2VFbGVtZW50KGZpbGVuYW1lKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gcnVuKCkKK3sKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIC8vIEJp
bmQgdGhlIHRleHR1cmUgdG8gdGhlIGRlZmF1bHQgdGV4dHVyZSB1bml0IDAKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFt
ZXRlcnMKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOwor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGds
LkNMQU1QX1RPX0VER0UpOworCisgICAgY29uc3QgZmlsZW5hbWVzID0gWworICAgICAgICAiZXhp
Zi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyIsCisgICAgICAgICJleGlmLW9yaWVudGF0
aW9uLXRlc3QtMi1taXJyb3ItaG9yaXpvbnRhbC5qcGciLAorICAgICAgICAiZXhpZi1vcmllbnRh
dGlvbi10ZXN0LTMtcm90YXRlLTE4MC5qcGciLAorICAgICAgICAiZXhpZi1vcmllbnRhdGlvbi10
ZXN0LTQtbWlycm9yLXZlcnRpY2FsLmpwZyIsCisgICAgICAgICJleGlmLW9yaWVudGF0aW9uLXRl
c3QtNS1taXJyb3ItaG9yaXpvbnRhbC05MC1jY3cuanBnIiwKKyAgICAgICAgImV4aWYtb3JpZW50
YXRpb24tdGVzdC02LTkwLWNjdy5qcGciLAorICAgICAgICAiZXhpZi1vcmllbnRhdGlvbi10ZXN0
LTctbWlycm9yLWhvcml6b250YWwtOTAtY3cuanBnIiwKKyAgICAgICAgImV4aWYtb3JpZW50YXRp
b24tdGVzdC04LTkwLWN3LmpwZyIsCisgICAgXTsKKworICAgIGZvciAobGV0IGZuIG9mIGZpbGVu
YW1lcykgeworICAgICAgICBhd2FpdCB0ZXN0U2luZ2xlSW1hZ2UoZm4pOworICAgIH0KKworICAg
IGZpbmlzaFRlc3QoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvZ2wtZ2V0
LXRleC1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvZ2wtZ2V0LXRleC1wYXJhbWV0ZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmZjMmM1MTBhNDg4NDM4Y2YyMGUzYzljYmRjZjM3MzcwYTIwMDdj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9nbC1nZXQtdGV4LXBhcmFtZXRlci5o
dG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGdldFRleFBhcmFtZXRlciB0ZXN0PC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVp
Z2h0PSI0IiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogMzBweDsiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgordmFyIGNvbnRleHRWZXJzaW9uID0gMTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL2dsLWdldC10ZXgtcGFyYW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2dsLXBpeGVsc3RvcmVpLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9taXNjL2dsLXBpeGVsc3RvcmVpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYxYTQ1Mjcx
YjZhN2E1M2EzNjU1YzU1ZTc3ODZiYjk3NTcxZDMyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvZ2wtcGl4ZWxzdG9yZWkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBwaXhlbFN0
b3JlaSBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iMmQw
MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9IjJkMDEiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSIyZDAyIiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iMmQwMyIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkgeworICBn
bF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBpbml0KCkgeworICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IGRyYXdJbWFnZSBhbmQgcmVhZFBpeGVscyBhcmUgbm90IGVmZmVjdGVk
IGJ5IGdsLlBpeGVsc3RvcmVpKGdsLlBBQ0tfQUxJR05NRU5UKSBhbmQgdmlzYSB2ZXJzYSIpOwor
CisgIGRlYnVnKCJUaGVyZSBzaG91bGQgYmUgNSByZWQgdHJpYW5nbGVzIG9uIDUgYmxhY2sgc3F1
YXJlcyBhYm92ZSIpOworICBkZWJ1ZygiIik7CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworICB2YXIgY2FudmFzM2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwor
ICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisgIHZhciBwcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRp
b24iXSk7CisKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUs
MCwgMC41LC0wLjUsMCBdKSwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9C
VUZGRVJfQklUKTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworCisgIGZ1
bmN0aW9uIGNoZWNrRGF0YShjdHgsIG5hbWUpIHsKKyAgICAvLyBUZXN0IHNldmVyYWwgbG9jYXRp
b25zCisgICAgLy8gRmlyc3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCisgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChjdHgsIDAsIDAsIDUwLCAxLCBbMCwgMCwgMCwgMF0pOworCisgICAgLy8gTGlu
ZSAyNSBzaG91bGQgYmUgcmVkIGZvciBhdCBsZWFzdCA2IHJlZCBwaXhlbHMgc3RhcnRpbmcgMjIg
cGl4ZWxzIGluCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChjdHgsIDIyLCAyNSwgNiwgMSwgWzI1
NSwgMCwgMCwgMjU1XSk7CisKKyAgICAvLyBMYXN0IGxpbmUgc2hvdWxkIGJlIGFsbCBibGFjawor
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoY3R4LCAwLCA0OSwgNTAsIDEsIFswLCAwLCAwLCAwXSk7
CisgIH0KKworICB2YXIgY3R4MmQ7CisKKyAgZnVuY3Rpb24gY2hlY2tDb2xvcnMoKSB7CisgICAg
Y2hlY2tEYXRhKGdsLCAiM2QgY29udGV4dCIpOworICAgIGNoZWNrRGF0YShjdHgyZCwgIjJkIGNv
bnRleHQiKTsKKyAgfQorCisgIHZhciB0YWJsZSA9IFsxLCAyLCA0LCA4XTsKKyAgZm9yICh2YXIg
aWkgPSAwOyBpaSA8IHRhYmxlLmxlbmd0aDsgKytpaSkgeworICAgIGdsLnBpeGVsU3RvcmVpKGds
LlBBQ0tfQUxJR05NRU5ULCB0YWJsZVtpaV0pOworICAgIGN0eDJkID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIjJkMCIgKyBpaSkuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHgyZC5nbG9iYWxD
b21wb3NpdGVPcGVyYXRpb24gPSAnY29weSc7CisgICAgY3R4MmQuZHJhd0ltYWdlKGNhbnZhczNk
LCAwLCAwKTsKKyAgICBjaGVja0NvbG9ycygpOworICAgIGFzc2VydE1zZyhnbC5nZXRQYXJhbWV0
ZXIoZ2wuUEFDS19BTElHTk1FTlQpID09IHRhYmxlW2lpXSwKKyAgICAgICAgIlBBQ0tfQUxJR05N
RU5UIGlzICIgKyB0YWJsZVtpaV0pOworICB9Cit9CisKK2luaXQoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy9nbC10ZXhpbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9nbC10ZXhpbWFn
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5NzM3NzUzNGNlNGRjOWZlZmEzODNiNGZmMjAzYzI5YmU2Nzhi
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2dsLXRleGltYWdlLmh0bWwKQEAg
LTAsMCArMSw0MDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIHRleEltYWdlMkQgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjE2IiBzdHlsZT0id2lkdGg6IDI1NnB4OyBoZWlnaHQ6IDQ4cHg7Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2VuYWJsZUpTVGVzdFByZVZlcmJvc2VMb2dnaW5n
KCk7CitkZXNjcmlwdGlvbigiVGVzdCB0ZXhJbWFnZTJEIGNvbnZlcnNpb25zLiIpOwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBs
ZSIpOworZ2wuZGlzYWJsZShnbC5ESVRIRVIpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0
dXJlZFF1YWQoZ2wpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZDsKKword3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7
CisKK3ZhciBpbWdVUkxzID0gWworICAnLi4vLi4vLi4vcmVzb3VyY2VzLzEtY2hhbm5lbC5qcGcn
LAorICAnLi4vLi4vLi4vcmVzb3VyY2VzL2dyYXktcmFtcC0yNTYtd2l0aC0xMjgtYWxwaGEucG5n
JywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAtMjU2LnBuZycsCisgICcuLi8uLi8u
Li9yZXNvdXJjZXMvZ3JheS1yYW1wLWRlZmF1bHQtZ2FtbWEucG5nJywKKyAgJy4uLy4uLy4uL3Jl
c291cmNlcy9ncmF5LXJhbXAtZ2FtbWEwLjEucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9n
cmF5LXJhbXAtZ2FtbWExLjAucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAt
Z2FtbWEyLjAucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2FtbWE0LjAu
cG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2FtbWE5LjAucG5nJywKKyAg
Jy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNl
cy96ZXJvLWFscGhhLnBuZycsCisgICcuLi8uLi8uLi9yZXNvdXJjZXMvM3gzLnBuZycsCisgICcu
Li8uLi8uLi9yZXNvdXJjZXMvYmx1ZS0xeDEuanBnJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9y
ZWQtaW5kZXhlZC5wbmcnLAorICAnLi4vLi4vLi4vcmVzb3VyY2VzL3RyYW5zcGFyZW50LW9uLWxl
ZnQtaW5kZXhlZC5wbmcnLAorICAnLi4vLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTJ4Mi0xNmJpdC5w
bmcnLAorICAnLi4vLi4vLi4vcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNvbG9yc3Bpbi1w
cm9maWxlLmpwZycsCisgICcuLi8uLi8uLi9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29s
b3JzcGluLXByb2ZpbGUucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUt
d2l0aC1jaWUtcmdiLXByb2ZpbGUucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNlcy9zbWFsbC1z
cXVhcmUtd2l0aC1jb2xvcm1hdGNoLXByb2ZpbGUucG5nJywKKyAgJy4uLy4uLy4uL3Jlc291cmNl
cy9zbWFsbC1zcXVhcmUtd2l0aC1lLXNyZ2ItcHJvZmlsZS5wbmcnLAorICAnLi4vLi4vLi4vcmVz
b3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNtcHRlLWMtcHJvZmlsZS5wbmcnLAorICAnLi4vLi4v
Li4vcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNyZ2ItaWVjNjE5NjYtMi4xLXByb2ZpbGUu
cG5nJ107CisKKword3R1LmxvYWRJbWFnZXNBc3luYyhpbWdVUkxzLCBydW5UZXN0cyk7CisKK2Z1
bmN0aW9uIHJ1blRlc3RzKGltZ3MpIHsKKyAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidGV4Iik7CisgIGdsLnVuaWZvcm0xaShsb2MsIDApOworCisgIGdsLmRpc2Fi
bGUoZ2wuQkxFTkQpOworICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworCisgIHZhciB3aWR0
aCA9IGdsLmNhbnZhcy53aWR0aDsKKyAgdmFyIGhlaWdodCA9IGdsLmNhbnZhcy5oZWlnaHQ7CisK
KyAgZnVuY3Rpb24gY2hlY2tQaXhlbCh4LCB5LCBjb2xvcikgeworICAgIHd0dS5jaGVja0NhbnZh
c1JlY3QoZ2wsIHgsIHksIDEsIDEsIGNvbG9yKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNoZWNrUGl4
ZWxSYW5nZSh4LCB5LCBjb2xvciwgYWxsb3dlZFJhbmdlKSB7CisgICAgdmFyIG1zZyA9ICJwaXhl
bCAiICsgeCArICIsICIgKyB5ICsgIiBzaG91bGQgYmUgd2l0aGluICIgKworICAgICAgICAgICAg
ICBhbGxvd2VkUmFuZ2UgKyAiIHVuaXRzIG9mICIgKworICAgICAgICAgICAgICBjb2xvclswXSAr
ICIsICIgKworICAgICAgICAgICAgICBjb2xvclsxXSArICIsICIgKworICAgICAgICAgICAgICBj
b2xvclsyXSArICIsICIgKworICAgICAgICAgICAgICBjb2xvclszXTsKKyAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCB4LCB5LCAxLCAxLCBjb2xvciwgbXNnLCBhbGxvd2VkUmFuZ2UpOworICB9
CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5ORUFSRVNUKTsKKworICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkod2lkdGgg
KiBoZWlnaHQgKiA0KTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJjaGVjayBwaXhlbHMgYXJl
IE5PVCBwcmUtbXVsdGlwbGllZCIpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgIGltZ3Nb
Jy4uLy4uLy4uL3Jlc291cmNlcy96ZXJvLWFscGhhLnBuZyddKTsKKyAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAiKTsK
KyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICB2YXIgbGVmdCA9IDA7CisgIHZh
ciBtaWRkbGUgPSBNYXRoLmZsb29yKHdpZHRoIC8gMik7CisgIHZhciByaWdodCA9IHdpZHRoIC0g
MTsKKyAgdmFyIGJvdHRvbSA9IDA7CisgIHZhciBjZW50ZXIgPSBNYXRoLmZsb29yKGhlaWdodCAv
IDIpOworICB2YXIgdG9wID0gaGVpZ2h0IC0gMTsKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIHRvcCwg
ICAgWyAgMCwgICAwLCAgIDAsIDI1NV0pOworICBjaGVja1BpeGVsKG1pZGRsZSwgdG9wLCAgICBb
MjU1LCAgIDAsIDI1NSwgMjU1XSk7CisgIGNoZWNrUGl4ZWwocmlnaHQsICB0b3AsICAgIFsgIDAs
ICAgMCwgMjU1LCAyNTVdKTsKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIGNlbnRlciwgWzEyOCwgMTI4
LCAxMjgsIDI1NV0pOworICBjaGVja1BpeGVsKG1pZGRsZSwgY2VudGVyLCBbMjU1LCAyNTUsIDI1
NSwgMjU1XSk7CisgIGNoZWNrUGl4ZWwocmlnaHQsICBjZW50ZXIsIFsgIDAsIDI1NSwgMjU1LCAy
NTVdKTsKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIGJvdHRvbSwgWzI1NSwgICAwLCAgIDAsIDI1NV0p
OworICBjaGVja1BpeGVsKG1pZGRsZSwgYm90dG9tLCBbMjU1LCAyNTUsICAgMCwgMjU1XSk7Cisg
IGNoZWNrUGl4ZWwocmlnaHQsICBib3R0b20sIFsgIDAsIDI1NSwgICAwLCAyNTVdKTsKKworICBk
ZWJ1ZygiIik7CisgIGRlYnVnKCJjaGVjayBxdWFudGl6YXRpb24iKTsKKyAgdmFyIHF1YW50SW5m
byA9IFsKKyAgICB7Zm9ybWF0OiBnbC5SR0JBLCB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLCAgICAg
ICAgICBjb3VudHM6IFsyNTYsIDI1NiwgMjU2LCAyNTZdfSwKKyAgICB7Zm9ybWF0OiBnbC5SR0JB
LCB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCBjb3VudHM6IFsgMTYsICAxNiwgIDE2
LCAgMTZdfSwKKyAgICB7Zm9ybWF0OiBnbC5SR0IsICB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVF81
XzZfNSwgICBjb3VudHM6IFsgMzIsICA2NCwgIDMyLCAgIDFdfSwKKyAgICB7Zm9ybWF0OiBnbC5S
R0JBLCB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xLCBjb3VudHM6IFsgMzIsICAzMiwg
IDMyLCAgIDJdfV07CisgIGZvciAodmFyIHFxID0gMDsgcXEgPCBxdWFudEluZm8ubGVuZ3RoOyAr
K3FxKSB7CisgICAgdmFyIGluZm8gPSBxdWFudEluZm9bcXFdOworICAgIGdsLnRleEltYWdlMkQo
CisgICAgICAgIGdsLlRFWFRVUkVfMkQsIDAsIGluZm8uZm9ybWF0LCBpbmZvLmZvcm1hdCwgaW5m
by50eXBlLAorICAgICAgICBpbWdzWycuLi8uLi8uLi9yZXNvdXJjZXMvZ3JheS1yYW1wLTI1Ni5w
bmcnXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgdmFyIGNvdW50cyA9IFt7IH0sIHsgfSwgeyB9LCB7
IH1dOworICAgIHZhciBudW1VbmlxdWVWYWx1ZXMgPSBbMCwgMCwgMCwgMF07CisgICAgLy8gQ291
bnQgdGhlIG51bWJlciBvZiB1bmlxdWUgdmFsdWVzIGluIGVhY2ggY2hhbm5lbC4KKyAgICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgd2lkdGggKiBoZWlnaHQgKiA0OyBpaSArPSA0KSB7CisgICAgICBm
b3IgKHZhciBqaiA9IDA7IGpqIDwgNDsgKytqaikgeworICAgICAgICB2YXIgdiA9IGJ1ZltpaSAr
IGpqXTsKKyAgICAgICAgaWYgKCFjb3VudHNbampdW3ZdKSB7CisgICAgICAgICAgY291bnRzW2pq
XVt2XSA9IDE7CisgICAgICAgICAgKytudW1VbmlxdWVWYWx1ZXNbampdOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICsrY291bnRzW2pqXVt2XTsKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgNDsgKytpaSkgeworICAgICAgYXNzZXJ0TXNn
KG51bVVuaXF1ZVZhbHVlc1tpaV0gPT0gaW5mby5jb3VudHNbaWldLAorICAgICAgICAgICAgICAg
ICJUaGVyZSBzaG91bGQgYmUgIiArIGluZm8uY291bnRzW2lpXSArCisgICAgICAgICAgICAgICAg
IiB1bmlxdWUgdmFsdWVzIGluIGNoYW5uZWwgIiArIGlpICsgIi4gRm91bmQgIiArCisgICAgICAg
ICAgICAgICAgbnVtVW5pcXVlVmFsdWVzW2lpXSk7CisgICAgfQorICB9CisKKyAgZGVidWcoIiIp
OworICBkZWJ1ZygiQ2hlY2sgdGhhdCBnYW1tYSBzZXR0aW5ncyBkb24ndCBlZmZlY3QgOGJpdCBw
bmdzIik7CisgIHd0dS5mYWlsSWZHTEVycm9yKGdsLCAnZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7Jyk7CisgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsCisg
ICAgICAgICAgICAgICAgaW1nc1snLi4vLi4vLi4vcmVzb3VyY2VzL2dyYXktcmFtcC1kZWZhdWx0
LWdhbW1hLnBuZyddKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCk7CisgIHZhciByZWYgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQp
OworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIHJlZik7CisKKyAgdmFyIGdhbW1hSW1hZ2VzID0gWworICAgICcuLi8uLi8uLi9y
ZXNvdXJjZXMvZ3JheS1yYW1wLWdhbW1hMC4xLnBuZycsCisgICAgJy4uLy4uLy4uL3Jlc291cmNl
cy9ncmF5LXJhbXAtZ2FtbWExLjAucG5nJywKKyAgICAnLi4vLi4vLi4vcmVzb3VyY2VzL2dyYXkt
cmFtcC1nYW1tYTIuMC5wbmcnLAorICAgICcuLi8uLi8uLi9yZXNvdXJjZXMvZ3JheS1yYW1wLWdh
bW1hNC4wLnBuZycsCisgICAgJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2FtbWE5LjAu
cG5nJ107CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBnYW1tYUltYWdlcy5sZW5ndGg7ICsraWkp
IHsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgZ2wuUkdCLCBn
bC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgaW1nc1tnYW1tYUltYWdlc1tpaV1d
KTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIGdsLnJlYWRQaXhlbHMo
MCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAg
ICB2YXIgc2FtZSA9IHRydWU7CisgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IHdpZHRoICogaGVp
Z2h0ICogNDsgKytqaikgeworICAgICAgaWYgKGJ1Zltqal0gIT0gcmVmW2pqXSkgeworICAgICAg
ICBzYW1lID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBhc3Nl
cnRNc2coc2FtZSwgInBpeGVscyBzaG91bGQgYmUgc2FtZSByZWdhcmRsZXNzIG9mIGdhbW1hIHNl
dHRpbmdzLiIpOworICB9CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiY2hlY2sgcGl4ZWxzIGFy
ZSBVTiBwcmUtbXVsdGlwbGllZCIpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgMjsgKytpaSkg
eworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgaWYgKGlpID09IDApIHsKKyAg
ICAgIHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAg
ICAgY2FudmFzMmQud2lkdGggPSAyNTY7CisgICAgICBjYW52YXMyZC5oZWlnaHQgPSAxOworICAg
ICAgdmFyIGN0eCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CisgICAgICBjdHguZHJhd0lt
YWdlKGltZ3NbJy4uLy4uLy4uL3Jlc291cmNlcy9ncmF5LXJhbXAtMjU2LXdpdGgtMTI4LWFscGhh
LnBuZyddLCAwLCAwKTsKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhczJkKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGdsLlJHQiwgZ2wu
VU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgaW1nc1snLi4vLi4vLi4vcmVzb3Vy
Y2VzL2dyYXktcmFtcC0yNTYtd2l0aC0xMjgtYWxwaGEucG5nJ10pOworICAgIH0KKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJv
bSBzZXR1cC4iKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHZhciBi
dWYgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIGdsLnJlYWRQaXhl
bHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsK
KyAgICB2YXIgbHQxMjhDb3VudCA9IFswLCAwLCAwXTsKKyAgICB2YXIgZ2UxMjhDb3VudCA9IFsw
LCAwLCAwXTsKKyAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgd2lkdGg7ICsramopIHsKKyAgICAg
IHZhciBvZmYgPSBqaiAqIDQ7CisgICAgICBmb3IgKHZhciBjYyA9IDA7IGNjIDwgMzsgKytjYykg
eworICAgICAgICBpZiAoYnVmW29mZiArIGNjXSA8IDEyOCkgeworICAgICAgICAgICsrbHQxMjhD
b3VudFtjY107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgKytnZTEyOENvdW50W2NjXTsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICAvLyBOb3Qgc3VyZSB0aGUgZXhhY3QgY291
bnQgaGVyZSBiZWNhdXNlIGdhbW1hIGRvZXMgZWZmZWN0IGRyYXdpbmcgaW50byB0aGUKKyAgICAv
LyBjYW52YXMgYnV0IGl0IHNob3VsZCBiZSBjbG9zZSB0byA1MCUgc28gSSdsbCBwYXNzIDQ1JQor
ICAgIGZvciAodmFyIGpqID0gMDsgamogPCAzOyArK2pqKSB7CisgICAgICBhc3NlcnRNc2coZ2Ux
MjhDb3VudFtqal0gPiAyNTYgKiAwLjQ1LAorICAgICAgICAgICAgICAgICJIYWxmIHRoZSBwaXhl
bHMgaW4gY2hhbm5lbCAiICsgamogKworICAgICAgICAgICAgICAgICIgc2hvdWxkIGJlID49IDEy
OCwxMjgsMTI4LiBmb3VuZCAiICsKKyAgICAgICAgICAgICAgICAoKGdlMTI4Q291bnRbampdIC8g
MjU2KSAqIDEwMCkudG9GaXhlZCgpICsgIiUiKTsKKyAgICAgIGFzc2VydE1zZyhsdDEyOENvdW50
W2pqXSA+IDI1NiAqIDAuNDUsCisgICAgICAgICAgICAgICAgIkhhbGYgdGhlIHBpeGVscyBpbiBj
aGFubmVsICIgKyBqaiArCisgICAgICAgICAgICAgICAgIiBzaG91bGQgYmUgPCAxMjgsMTI4LDEy
OC4gZm91bmQgIiArCisgICAgICAgICAgICAgICAgKChsdDEyOENvdW50W2pqXSAvIDI1NikgKiAx
MDApLnRvRml4ZWQoKSArICIlIik7CisgICAgfQorICB9CisKKyAgZGVidWcoIiIpOworICBkZWJ1
ZygiY2hlY2sgY2FudmFzIHBpeGVscyBhcmUgVU4gcHJlLW11bHRpcGxpZWQiKTsKKyAgdmFyIGNh
bnZhczJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgIGNhbnZhczJkLndp
ZHRoID0gMTsKKyAgY2FudmFzMmQuaGVpZ2h0ID0gMTsKKyAgdmFyIGN0eCA9IGNhbnZhczJkLmdl
dENvbnRleHQoIjJkIik7CisgIGN0eC5maWxsU3R5bGUgPSJyZ2JhKDI1NSwyNTUsMjU1LDAuNSki
OworICBjdHguZmlsbFJlY3QoMCwgMCwgMjU2LCAxKTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjYW52YXMyZCk7
CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworICBj
aGVja1BpeGVsUmFuZ2UoMCwgMCwgWzI1NSwgMjU1LCAyNTUsIDEyN10sIDQpOworCisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoImNoZWNrIGNhbnZhcyBwaXhlbHMgYXJlIHByZS1tdWx0aXBsaWVkIik7
CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgdHJ1
ZSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgY2FudmFzMmQpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKyAgY2hlY2tQaXhlbFJhbmdlKDAsIDAsIFsxMjcsIDEy
NywgMTI3LCAxMjddLCA0KTsKKworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoImNoZWNrIHBpeGVs
cyBhcmUgcHJlLW11bHRpcGxpZWQiKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1V
TFRJUExZX0FMUEhBX1dFQkdMLCB0cnVlKTsKKyAgLy8gVE9ETyhnbWFuKTogdXNlIGRpZmZlcmVu
dCB0ZXh0dXJlIHRoYXQgd29uJ3QgcGFzcyBvbiBmYWlsdXJlCisgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICBpbWdzWycuLi8uLi8uLi9yZXNvdXJjZXMvemVyby1hbHBoYS5wbmcnXSk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9y
cyBmcm9tIHNldHVwIik7CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIGdsLnJl
YWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
YnVmKTsKKworICB2YXIgc2FtZSA9IHRydWU7CisgIGZvciAodmFyIGpqID0gMDsgamogPCB3aWR0
aCAqIGhlaWdodCAqIDQ7ICsramopIHsKKyAgICBpZiAoYnVmW2pqXSAhPSAwKSB7CisgICAgICBz
YW1lID0gZmFsc2U7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgYXNzZXJ0TXNnKHNhbWUs
ICJwaXhlbHMgc2hvdWxkIGFsbCBiZSAwLiIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoImNo
ZWNrIHBpeGVscyBhcmUgZmxpcHBlZCIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJF
TVVMVElQTFlfQUxQSEFfV0VCR0wsIGZhbHNlKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X0ZMSVBfWV9XRUJHTCwgdHJ1ZSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Z2wuUkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgaW1nc1sn
Li4vLi4vLi4vcmVzb3VyY2VzLzN4My5wbmcnXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwIik7CisgIHd0dS5j
bGVhckFuZERyYXdVbml0UXVhZChnbCk7CisKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIHRvcCwgICAg
WzI1NSwgICAwLCAgIDAsIDI1NV0pOworICBjaGVja1BpeGVsKG1pZGRsZSwgdG9wLCAgICBbMjU1
LCAyNTUsICAgMCwgMjU1XSk7CisgIGNoZWNrUGl4ZWwocmlnaHQsICB0b3AsICAgIFsyNTUsICAg
MCwgICAwLCAyNTVdKTsKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIGNlbnRlciwgWzI1NSwgICAwLCAy
NTUsIDI1NV0pOworICBjaGVja1BpeGVsKG1pZGRsZSwgY2VudGVyLCBbMjU1LCAgIDAsICAgMCwg
MjU1XSk7CisgIGNoZWNrUGl4ZWwocmlnaHQsICBjZW50ZXIsIFsgIDAsIDI1NSwgICAwLCAyNTVd
KTsKKyAgY2hlY2tQaXhlbChsZWZ0LCAgIGJvdHRvbSwgWyAgMCwgICAwLCAgIDAsIDI1NV0pOwor
ICBjaGVja1BpeGVsKG1pZGRsZSwgYm90dG9tLCBbICAwLCAgIDAsIDI1NSwgMjU1XSk7CisgIGNo
ZWNrUGl4ZWwocmlnaHQsICBib3R0b20sIFsyNTUsICAgMCwgICAwLCAyNTVdKTsKKworICBkZWJ1
ZygiIik7CisgIGRlYnVnKCJjaGVjayB1cGxvYWRpbmcgb2YgaW1hZ2VzIHdpdGggbm8gYWxwaGEg
Y2hhbm5lbCB3b3JrcyIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlf
QUxQSEFfV0VCR0wsIGZhbHNlKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9X
RUJHTCwgZmFsc2UpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwg
Z2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgIGltZ3NbJy4uLy4uLy4u
L3Jlc291cmNlcy9ibHVlLTF4MS5qcGcnXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwIik7CisgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCk7CisgIGNoZWNrUGl4ZWxSYW5nZShtaWRkbGUsIGNlbnRlciwg
WyAgIDAsICAgMCwgMjU1LCAyNTVdLCAxMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVi
dWcoImNoZWNrIHVwbG9hZGluZyBvZiAxNi1iaXQgaW1hZ2VzIik7CisgIGdsLnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgZmFsc2UpOworICBnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmYWxzZSk7CisgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAg
ICAgICAgICAgaW1nc1snLi4vLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTJ4Mi0xNmJpdC5wbmcnXSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVy
cm9ycyBmcm9tIHNldHVwIik7CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIGNo
ZWNrUGl4ZWxSYW5nZShtaWRkbGUsIGNlbnRlciwgWyAgIDE1LCAxMjEsICAgMCwgMjU1XSwgMTAp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBl
cnJvcnMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJjaGVjayB1cGxvYWRpbmcgb2YgaW1h
Z2VzIHdpdGggSUNDIHByb2ZpbGVzIik7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19QUkVN
VUxUSVBMWV9BTFBIQV9XRUJHTCwgZmFsc2UpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tf
RkxJUF9ZX1dFQkdMLCBmYWxzZSk7CisgIHd0dS5mYWlsSWZHTEVycm9yKGdsLCAnZ2wucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7Jyk7
CisKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGdsLlJHQiwgZ2wu
VU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICBpbWdzWycuLi8uLi8uLi9yZXNvdXJjZXMv
c21hbGwtc3F1YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUuanBnJ10pOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1
cCIpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAvLyBUaGUgaW1hZ2UgaXMg
cmVkLiAgSG93ZXZlciwgaWYgd2UgaWdub3JlIHRoZSBjb2xvciBwcm9maWxlLCBpdCBpcyBibHVl
LgorICBjaGVja1BpeGVsUmFuZ2UobWlkZGxlLCBjZW50ZXIsIFsgMCwgMCwgMjU1LCAyNTVdLCAx
MCk7CisKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGdsLlJHQiwg
Z2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICBpbWdzWycuLi8uLi8uLi9yZXNvdXJj
ZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUucG5nJ10pOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBz
ZXR1cCIpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAvLyBUaGUgaW1hZ2Ug
aXMgcmVkLiAgSG93ZXZlciwgaWYgd2UgaWdub3JlIHRoZSBjb2xvciBwcm9maWxlLCBpdCBpcyBi
bHVlLgorICBjaGVja1BpeGVsUmFuZ2UobWlkZGxlLCBjZW50ZXIsIFsgMCwgMCwgMjU1LCAyNTVd
LCAxMCk7CisKKyAgdmFyIGljY1BOR3MgPSBbCisgICAgJy4uLy4uLy4uL3Jlc291cmNlcy9zbWFs
bC1zcXVhcmUtd2l0aC1jaWUtcmdiLXByb2ZpbGUucG5nJywKKyAgICAnLi4vLi4vLi4vcmVzb3Vy
Y2VzL3NtYWxsLXNxdWFyZS13aXRoLWNvbG9ybWF0Y2gtcHJvZmlsZS5wbmcnLAorICAgICcuLi8u
Li8uLi9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtZS1zcmdiLXByb2ZpbGUucG5nJywKKyAg
ICAnLi4vLi4vLi4vcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNtcHRlLWMtcHJvZmlsZS5w
bmcnLAorICAgICcuLi8uLi8uLi9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtc3JnYi1pZWM2
MTk2Ni0yLjEtcHJvZmlsZS5wbmcnXTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVp
Z2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgaWNjUE5Hcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgYnVmMiA9IG5ldyBVaW50OEFy
cmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0IsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
IGltZ3NbaWNjUE5Hc1tpaV1dKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cCIpOworICAgIHd0dS5jbGVhckFu
ZERyYXdVbml0UXVhZChnbCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYyKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICB2YXIgc2Ft
ZSA9IHRydWU7CisgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IGJ1Zi5sZW5ndGg7ICsramopIHsK
KyAgICAgIGlmIChidWZbampdICE9IGJ1ZjJbampdKSB7CisgICAgICAgIHNhbWUgPSBmYWxzZTsK
KyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGFzc2VydE1zZyhzYW1lLCAidXBs
b2FkaW5nIFBOR3Mgd2l0aCBzYW1lIGRhdGEgYnV0IHZhcmlvdXMgSUNDIHByb2ZpbGVzIHNob3Vs
ZCBnZW5lcmF0ZSB0aGUgc2FtZSByZXN1bHRzIik7CisgIH0KKworICBkZWJ1ZygiIik7CisgIGRl
YnVnKCJjaGVjayB1cGxvYWRpbmcgb2YgaW5kZXhlZCBQTkcgaW1hZ2VzIik7CisgIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUs
CisgICAgICAgICAgICAgICAgaW1nc1snLi4vLi4vLi4vcmVzb3VyY2VzL3JlZC1pbmRleGVkLnBu
ZyddKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUg
bm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsK
KyAgLy8gVGhlIGltYWdlIHNob3VsZCBiZSByZWQuCisgIGNoZWNrUGl4ZWxSYW5nZShtaWRkbGUs
IGNlbnRlciwgWyAyNTUsIDAsIDAsIDI1NSBdLCAxMCk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLAorICAgICAgICAgICAgICAgIGltZ3NbJy4uLy4uLy4uL3Jlc291cmNlcy90cmFu
c3BhcmVudC1vbi1sZWZ0LWluZGV4ZWQucG5nJ10pOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1
YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxMjgsIDE2LCBbMjU1LCAw
LCAyNTUsIDBdLCAic2hvdWxkIGJlIHRyYW5zcGFyZW50IHB1cnBsZSIpOworICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAxMjgsIDAsMTI4LCAxNiwgWzI1NSwgMjU1LCAwLCAyNTVdLCAic2hvdWxk
IGJlIHllbGxvdyIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoImNoZWNrIHVwbG9hZGluZyBv
ZiAxLWNoYW5uZWwgSlBHIGltYWdlcyIpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgIGlt
Z3NbJy4uLy4uLy4uL3Jlc291cmNlcy8xLWNoYW5uZWwuanBnJ10pOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cCIp
OworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAvLyBUaGUgaW1hZ2Ugc2hvdWxk
IGJlIGdyYXkuCisgIGNoZWNrUGl4ZWxSYW5nZShtaWRkbGUsIGNlbnRlciwgWyAxMjgsIDEyOCwg
MTI4LCAyNTUgXSwgMjgpOworCisgIGRlYnVnKCIiKQorICBkZWJ1ZygiY2hlY2sgY2FsbGluZyB0
ZXhJbWFnZTJEIHdpdGggTlVMTCBjbGVhcnMgdGhlIHRleHR1cmUiKTsKKyAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsCisgICAgICAgICAgICAgICAgaW1nc1snLi4vLi4v
Li4vcmVzb3VyY2VzL3JlZC1pbmRleGVkLnBuZyddLndpZHRoLAorICAgICAgICAgICAgICAgIGlt
Z3NbJy4uLy4uLy4uL3Jlc291cmNlcy9yZWQtaW5kZXhlZC5wbmcnXS5oZWlnaHQsCisgICAgICAg
ICAgICAgICAgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0
dXAiKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgLy8gVGhlIGltYWdlIHNo
b3VsZCBiZSB3aGl0ZS4KKyAgY2hlY2tQaXhlbFJhbmdlKG1pZGRsZSwgY2VudGVyLCBbIDAsIDAs
IDAsIDI1NSBdLCAxMCk7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiY2hlY2sgemVybyBzaXpl
IGNhc2VzIik7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuTFVNSU5BTkNF
LCAyLCAwLCAwLCBnbC5MVU1JTkFOQ0UsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5
KCkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSB6ZXJvIHNpemVkIHRleHR1cmVzIik7CisKKyAgZGVidWcoIiIpOworICBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICBzaG91bGRCZVRydWUoInN1Y2Nlc3NmdWxseVBh
cnNlZCIpOworICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8
L3NwYW4+Jyk7CisgIG5vdGlmeUZpbmlzaGVkVG9IYXJuZXNzKCk7Cit9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9taXBtYXAtZmJvLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9taXNjL21pcG1hcC1mYm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmU4NTFkNzM4
OWRjMGY1NmNiZWZmMDIxMDZkYmM1MDRkNzU4NTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvbWlzYy9taXBtYXAtZmJvLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgaWYgbWlwbWFwIGlu
Y29tcGxldGUgdGV4dHVyZXMgY2FuIGJlIHVzZWQgYXMgRkJPIGF0dGFjaG1lbnRzLCBhbmQgbWlw
bWFwIGdlbmVyYXRpb24gb24gYSB0ZXh0dXJlIGZpbGxlZCBieSBhbiBGQk8gd29ya3MgY29ycmVj
dGx5PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbigpOworCit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKK2Z1bmN0aW9uIHRlc3RNaXBtYXBH
ZW5lcmF0aW9uKCkgeworICAgIC8vIHNldHVwIHJlbmRlciB0YXJnZXQgdGV4dHVyZSAvLworICAg
IHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJfTUlQTUFQ
X0xJTkVBUik7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAz
MiwgMzIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgLy8gc2V0dXAgZnJhbWVidWZmZXIg
Ly8KKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJl
MkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0
ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworCisgICAgLy8gZmlsbCB0aGUgZnJhbWVidWZmZXIgLy8KKyAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgMzIsIDMyKTsK
KyAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDEsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7
CisKKyAgICAvLyBnZW5lcmF0ZSBtaXBtYXAgLy8KKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsK
KworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgICBnbC52
aWV3cG9ydCgwLCAwLCBnbC5jYW52YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQpOworICAgIGds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKworICAgIC8vIHJlYWRiYWNrIC8vCisg
ICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAyNTUsIDI1NV0pOworfQorCit2YXIgdGVz
dEN1YmVtYXBGYWNlV2l0aEluY29tcGxldGVNaXBtYXBJbkZCTyA9IGZ1bmN0aW9uKCkgeworICAg
IC8vIENyZWF0ZSBhIGN1YmUgbWFwIHRleHR1cmUgdGhhdCdzIG5vdCBtaXBtYXAgY29tcGxldGUu
CisgICAgdmFyIHRleDIgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4Mik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIs
IGdsLkxJTkVBUl9NSVBNQVBfTElORUFSKTsKKworICAgIHZhciBjdWJlX21hcF9mYWNlcyA9IFsK
KyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgICAgICBnbC5URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWSwKKyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWgorICAgIF07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdWJlX21h
cF9mYWNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICBnbC50ZXhJbWFnZTJEKGN1YmVfbWFwX2Zh
Y2VzW2ldLCAwLCBnbC5SR0JBLCAzMiwgMzIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IG51bGwpOworICAgIH0KKworICAgIHZhciBmYjIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIyKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgdGV4MiwgMCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGFmdGVyIGF0dGFj
aGluZyBjdWJlIG1hcCBmYWNlLiIpOworICAgIHNob3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZFUl9DT01QTEVURSIpOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOworCisgICAgdmFyIGNv
bG9yUHJvZ3JhbSA9IHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAgdmFyIGNvbG9yTG9jYXRp
b24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oY29sb3JQcm9ncmFtLCAndV9jb2xvcicpOworICAg
IGdsLnVuaWZvcm00Zihjb2xvckxvY2F0aW9uLCAwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGds
LnZpZXdwb3J0KDAsIDAsIDMyLCAzMik7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAg
Ly8gUmVhZCB3aGF0J3MgaW4gdGhlIGZyYW1lYnVmZmVyIC0gbm90ZSB0aGF0IHdlIG5lZWQgdG8g
dXNlIGNoZWNrQ2FudmFzUmVjdCBzaW5jZSB0aGUKKyAgICAvLyBGQiBkaW1lbnNpb25zIGFyZSBk
aWZmZXJlbnQgZnJvbSBjYW52YXMgZGltZW5zaW9ucy4KKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0
KGdsLCAwLCAwLCAzMiwgMzIsIFswLCAyNTUsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAiRnJhbWVidWZmZXIgd2l0aCBhIG5vbi1taXBtYXAgY29tcGxldGUgY3ViZSBtYXAgYXR0
YWNobWVudCBzaG91bGQgYmUgZ3JlZW4iKTsKK30KKwordGVzdE1pcG1hcEdlbmVyYXRpb24oKTsK
K2RlYnVnKCIiKTsKK3Rlc3RDdWJlbWFwRmFjZVdpdGhJbmNvbXBsZXRlTWlwbWFwSW5GQk8oKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNl
LW9mZnNjcmVlbmNhbnZhcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9vcmlnaW4tY2xlYW4tY29uZm9y
bWFuY2Utb2Zmc2NyZWVuY2FudmFzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA4Njk2ZTk4YThlY2ZlZDQ5
ZjNiNmFlN2NmOWU4N2NlZWZmYTVhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
b3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLW9mZnNjcmVlbmNhbnZhcy5odG1sCkBAIC0wLDAgKzEs
MTI1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBPcmlnaW4gUmVzdHJpY3Rpb25zIENvbmZvcm1hbmNlIFRlc3RzIGZvciBPZmZz
Y3JlZW5DYW52YXM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIj48L2NhbnZhcz4KKzxpbWcgaWQ9ImltZyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKworLy8g
Q2hlY2tzIGlmIGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCitmdW5jdGlvbiBjYXVzZWRF
eGNlcHRpb24oZnVuYykgeworICB2YXIgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgIHRyeSB7Cisg
ICAgZnVuYygpOworICB9IGNhdGNoKGUpIHsKKyAgICBoYWRFeGNlcHRpb24gPSB0cnVlOworICB9
CisgIHJldHVybiBoYWRFeGNlcHRpb247Cit9CisKK3ZhciBkZWZhdWx0SW1nVXJsID0gImh0dHBz
Oi8vZ2V0LndlYmdsLm9yZy9jb25mb3JtYW5jZS1yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsK
K3ZhciBsb2NhbEltZ1VybCA9ICIuLi8uLi8uLi9yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsK
KwordmFyIGltZ0RvbWFpbjsKK3ZhciBwYWdlRG9tYWluOworCitmdW5jdGlvbiBpbWFnZUxvYWRl
ZChpbWcpIHsKKyAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIFdlYkdMIGltcGxlbWVu
dGF0aW9ucyBmb3IgT2Zmc2NyZWVuQ2FudmFzIGZvbGxvdyBwcm9wZXIgc2FtZS1vcmlnaW4gcmVz
dHJpY3Rpb25zLiIpOworCisgIGlmICghd2luZG93Lk9mZnNjcmVlbkNhbnZhcykgeworICAgIHRl
c3RQYXNzZWQoIk5vIE9mZnNjcmVlbkNhbnZhcyBzdXBwb3J0Iik7CisgICAgZmluaXNoVGVzdCgp
OworICAgIHJldHVybjsKKyAgfQorCisgIGFzc2VydE1zZyhpbWcud2lkdGggPiAwICYmIGltZy5o
ZWlnaHQgPiAwLCAiaW1nIHdhcyBsb2FkZWQiKTsKKyAgaW1nRG9tYWluID0gd3R1LmdldEJhc2VE
b21haW4od3R1LmdldEhvc3QoaW1nLnNyYykpOworICBwYWdlRG9tYWluID0gd3R1LmdldEJhc2VE
b21haW4od2luZG93LmxvY2F0aW9uLmhvc3QpOworICBhc3NlcnRNc2coaW1nRG9tYWluICE9IHBh
Z2VEb21haW4sCisgICAgICAgICAgICAiaW1nIGRvbWFpbiAoIiArIGltZ0RvbWFpbiArICIpIGFu
ZCBwYWdlIGRvbWFpbiAoIiArIHBhZ2VEb21haW4gKyAiKSBhcmUgbm90IHRoZSBzYW1lLiIpOwor
CisgIGZ1bmN0aW9uIG1ha2VUZXhJbWFnZTJEKGdsLCBzcmMpIHsKKyAgICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHNyYyk7CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9u
IG1ha2VUZXhTdWJJbWFnZTJEKGdsLCBzcmMpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIHNyYyk7CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIG1ha2VSZWFk
UGl4ZWxzKGdsKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGJ1ZiA9IG5l
dyBVaW50OEFycmF5KDQpOworICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIH07CisgIH0KKworICB2YXIgb2Zmc2NyZWVu
Y2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcygxMCwgMTApOworICB2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KG9mZnNjcmVlbmNhbnZhcyk7CisKKyAgZGVidWcoIiIpOworICBkZWJ1Zygi
Y2hlY2sgdGhhdCBhbiBhdHRlbXB0IHRvIHVwbG9hZCBhbiBpbWFnZSBmcm9tIGFub3RoZXIgb3Jp
Z2luIHRocm93cyBhbiBleGNlcHRpb24uIik7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMjU2LCAyNTYsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICBhc3NlcnRNc2coY2F1c2VkRXhjZXB0aW9uKG1ha2VUZXhJ
bWFnZTJEKGdsLCBpbWcpKSwKKyAgICAgICAgICAgICJ0ZXhJbWFnZTJEIHdpdGggY3Jvc3Mtb3Jp
Z2luIGltYWdlIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7CisgIGFzc2VydE1zZyhjYXVzZWRF
eGNlcHRpb24obWFrZVRleFN1YkltYWdlMkQoZ2wsIGltZykpLAorICAgICAgICAgICAgInRleFN1
YkltYWdlMkQgd2l0aCBjcm9zcy1vcmlnaW4gaW1hZ2Ugc2hvdWxkIHRocm93IGV4Y2VwdGlvbi4i
KTsKKworICBkZWJ1ZygiY2hlY2sgdGhhdCByZWFkUGl4ZWxzIGNvbnRpbnVlcyB0byB3b3JrIGFn
YWluc3QgdGhpcyBvZmZzY3JlZW5jYW52YXMuIik7CisgIGFzc2VydE1zZyghY2F1c2VkRXhjZXB0
aW9uKG1ha2VSZWFkUGl4ZWxzKGdsKSksCisgICAgICAgICAgICAicmVhZFBpeGVscyBzaG91bGQg
bmV2ZXIgdGhyb3cgZXhjZXB0aW9uIC0tIG5vdCBwb3NzaWJsZSB0byBkaXJ0eSBvcmlnaW4gb2Yg
V2ViR0wgY2FudmFzLiIpOworCisgIGRlYnVnKCJjaGVjayB0aGF0IGFuIGF0dGVtcHQgdG8gdXBs
b2FkIGEgdGFpbnRlZCBjYW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlvbi4iKTsKKyAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgdmFyIGN0eDJkID0gY2Fu
dmFzLmdldENvbnRleHQoIjJkIik7CisgIGN0eDJkLmRyYXdJbWFnZShpbWcsIDAsIDApOworICBh
c3NlcnRNc2coY2F1c2VkRXhjZXB0aW9uKG1ha2VUZXhJbWFnZTJEKGdsLCBjYW52YXMpKSwKKyAg
ICAgICAgICAgICJ0ZXhJbWFnZTJEIHdpdGggTk9OIG9yaWdpbiBjbGVhbiBjYW52YXMgc2hvdWxk
IHRocm93IGV4Y2VwdGlvbi4iKTsKKyAgYXNzZXJ0TXNnKGNhdXNlZEV4Y2VwdGlvbihtYWtlVGV4
U3ViSW1hZ2UyRChnbCwgY2FudmFzKSksCisgICAgICAgICAgICAidGV4U3ViSW1hZ2UyRCB3aXRo
IE5PTiBvcmlnaW4gY2xlYW4gY2FudmFzIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7CisKKyAg
ZGVidWcoImNoZWNrIHRoYXQgcmVhZFBpeGVscyBjb250aW51ZXMgdG8gd29yayBhZ2FpbnN0IHRo
aXMgb2Zmc2NyZWVuY2FudmFzLiIpOworICBhc3NlcnRNc2coIWNhdXNlZEV4Y2VwdGlvbihtYWtl
UmVhZFBpeGVscyhnbCkpLAorICAgICAgICAgICAgInJlYWRQaXhlbHMgc2hvdWxkIG5ldmVyIHRo
cm93IGV4Y2VwdGlvbiAtLSBub3QgcG9zc2libGUgdG8gZGlydHkgb3JpZ2luIG9mIFdlYkdMIGNh
bnZhcy4iKTsKKworICAvLyBUT0RPOiBTaG91bGQgY2hlY2sgdmlkZW8uCisgIC8vIFRPRE86IFNo
b3VsZCBjaGVjayBDT1JTIHN1cHBvcnQuCisKKyAgZmluaXNoVGVzdCgpOworfQorCisoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgIGNvbnN0IGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWcn
KTsKKyAgdHJ5IHsKKyAgICBhd2FpdCB3dHUuYXdhaXRPclRpbWVvdXQod3R1LmxvYWRDcm9zc09y
aWdpbkltYWdlKGltZywgZGVmYXVsdEltZ1VybCwgbG9jYWxJbWdVcmwpKTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgIHRlc3RGYWlsZWQoYEltYWdlIHNldHVwIGZhaWxlZCAoJHtlfSkuYCk7CisgICAg
ZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorICBpbWFnZUxvYWRlZChpbWcpOworfSko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mvb3JpZ2luLWNs
ZWFuLWNvbmZvcm1hbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3ZjU3MjE3MzVmMDE3MzRhN2UxZDZi
ZTM5M2NlMDdhNjEyYWYwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mvb3JpZ2lu
LWNsZWFuLWNvbmZvcm1hbmNlLmh0bWwKQEAgLTAsMCArMSwxMzcgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIE9yaWdpbiBSZXN0
cmljdGlvbnMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzMSI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyIj48
L2NhbnZhcz4KKzxpbWcgaWQ9ImltZyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKworLy8gQ2hlY2tzIGlm
IGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCitmdW5jdGlvbiBjYXVzZWRFeGNlcHRpb24o
ZnVuYykgeworICB2YXIgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygp
OworICB9IGNhdGNoKGUpIHsKKyAgICBoYWRFeGNlcHRpb24gPSB0cnVlOworICB9CisgIHJldHVy
biBoYWRFeGNlcHRpb247Cit9CisKK3ZhciBkZWZhdWx0SW1nVXJsID0gImh0dHBzOi8vZ2V0Lndl
YmdsLm9yZy9jb25mb3JtYW5jZS1yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsKK3ZhciBsb2Nh
bEltZ1VybCA9ICIuLi8uLi8uLi9yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnIjsKKwordmFyIGlt
Z0RvbWFpbjsKK3ZhciBwYWdlRG9tYWluOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZDsKKworZnVu
Y3Rpb24gaW1hZ2VMb2FkZWQoaW1nKSB7CisgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJl
cyBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IHByb3BlciBzYW1lLW9yaWdpbiByZXN0cmlj
dGlvbnMuIik7CisKKyAgYXNzZXJ0TXNnKGltZy53aWR0aCA+IDAgJiYgaW1nLmhlaWdodCA+IDAs
ICJpbWcgd2FzIGxvYWRlZCIpOworICBpbWdEb21haW4gPSB3dHUuZ2V0QmFzZURvbWFpbih3dHUu
Z2V0SG9zdChpbWcuc3JjKSk7CisgIHBhZ2VEb21haW4gPSB3dHUuZ2V0QmFzZURvbWFpbih3aW5k
b3cubG9jYXRpb24uaG9zdCk7CisgIGFzc2VydE1zZyhpbWdEb21haW4gIT0gcGFnZURvbWFpbiwK
KyAgICAgICAgICAgICJpbWcgZG9tYWluICgiICsgaW1nRG9tYWluICsgIikgYW5kIHBhZ2UgZG9t
YWluICgiICsgcGFnZURvbWFpbiArICIpIGFyZSBub3QgdGhlIHNhbWUuIik7CisKKyAgZnVuY3Rp
b24gbWFrZVRleEltYWdlMkQoZ2wsIHNyYykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgc3JjKTsKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gbWFrZVRleFN1
YkltYWdlMkQoZ2wsIHNyYykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIGdsLnRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgc3JjKTsKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gbWFrZVJlYWRQaXhlbHMoZ2wp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJy
YXkoNCk7CisgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIGJ1Zik7CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIG1ha2VUb0RhdGFVUkwo
Y2FudmFzKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGRhdGEgPSBjYW52
YXMudG9EYXRhVVJMKCk7CisgICAgfQorICB9CisKKyAgdmFyIGNhbnZhczEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KGNhbnZhczEpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoImNoZWNrIHRoYXQgYW4gYXR0ZW1w
dCB0byB1cGxvYWQgYW4gaW1hZ2UgZnJvbSBhbm90aGVyIG9yaWdpbiB0aHJvd3MgYW4gZXhjZXB0
aW9uLiIpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDI1NiwgMjU2LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsK
KyAgYXNzZXJ0TXNnKGNhdXNlZEV4Y2VwdGlvbihtYWtlVGV4SW1hZ2UyRChnbCwgaW1nKSksCisg
ICAgICAgICAgICAidGV4SW1hZ2UyRCB3aXRoIGNyb3NzLW9yaWdpbiBpbWFnZSBzaG91bGQgdGhy
b3cgZXhjZXB0aW9uLiIpOworICBhc3NlcnRNc2coY2F1c2VkRXhjZXB0aW9uKG1ha2VUZXhTdWJJ
bWFnZTJEKGdsLCBpbWcpKSwKKyAgICAgICAgICAgICJ0ZXhTdWJJbWFnZTJEIHdpdGggY3Jvc3Mt
b3JpZ2luIGltYWdlIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7CisKKyAgZGVidWcoImNoZWNr
IHRoYXQgcmVhZFBpeGVscyBhbmQgdG9EYXRhVVJMIGNvbnRpbnVlIHRvIHdvcmsgYWdhaW5zdCB0
aGlzIGNhbnZhcy4iKTsKKyAgYXNzZXJ0TXNnKCFjYXVzZWRFeGNlcHRpb24obWFrZVJlYWRQaXhl
bHMoZ2wpKSwKKyAgICAgICAgICAgICJyZWFkUGl4ZWxzIHNob3VsZCBuZXZlciB0aHJvdyBleGNl
cHRpb24gLS0gbm90IHBvc3NpYmxlIHRvIGRpcnR5IG9yaWdpbiBvZiBXZWJHTCBjYW52YXMuIik7
CisgIGFzc2VydE1zZyghY2F1c2VkRXhjZXB0aW9uKG1ha2VUb0RhdGFVUkwoY2FudmFzMSkpLAor
ICAgICAgICAgICAgInNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uIGJ5IHRvRGF0YVVSTCBmb3Ig
V2ViR0wgY2FudmFzLCB3aGljaCBzaG91bGQgc3RheSBvcmlnaW4gY2xlYW4uIik7CisKKyAgZGVi
dWcoImNoZWNrIHRoYXQgYW4gYXR0ZW1wdCB0byB1cGxvYWQgYSB0YWludGVkIGNhbnZhcyB0aHJv
d3MgYW4gZXhjZXB0aW9uLiIpOworICB2YXIgY2FudmFzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMyIik7CisgIHZhciBjdHgyZCA9IGNhbnZhczIuZ2V0Q29udGV4dCgiMmQiKTsK
KyAgY3R4MmQuZHJhd0ltYWdlKGltZywgMCwgMCk7CisgIGFzc2VydE1zZyhjYXVzZWRFeGNlcHRp
b24obWFrZVRvRGF0YVVSTChjYW52YXMyKSksCisgICAgICAgICAgICAic2hvdWxkIHRocm93IGV4
Y2VwdGlvbiBieSB0b0RhdGFVUkwgZm9yIE5PTiBvcmlnaW4gY2xlYW4gY2FudmFzLiIpOworICBh
c3NlcnRNc2coY2F1c2VkRXhjZXB0aW9uKG1ha2VUZXhJbWFnZTJEKGdsLCBjYW52YXMyKSksCisg
ICAgICAgICAgICAidGV4SW1hZ2UyRCB3aXRoIE5PTiBvcmlnaW4gY2xlYW4gY2FudmFzIHNob3Vs
ZCB0aHJvdyBleGNlcHRpb24uIik7CisgIGFzc2VydE1zZyhjYXVzZWRFeGNlcHRpb24obWFrZVRl
eFN1YkltYWdlMkQoZ2wsIGNhbnZhczIpKSwKKyAgICAgICAgICAgICJ0ZXhTdWJJbWFnZTJEIHdp
dGggTk9OIG9yaWdpbiBjbGVhbiBjYW52YXMgc2hvdWxkIHRocm93IGV4Y2VwdGlvbi4iKTsKKwor
ICBkZWJ1ZygiY2hlY2sgdGhhdCByZWFkUGl4ZWxzIGFuZCB0b0RhdGFVUkwgY29udGludWUgdG8g
d29yayBhZ2FpbnN0IHRoaXMgY2FudmFzLiIpOworICBhc3NlcnRNc2coIWNhdXNlZEV4Y2VwdGlv
bihtYWtlUmVhZFBpeGVscyhnbCkpLAorICAgICAgICAgICAgInJlYWRQaXhlbHMgc2hvdWxkIG5l
dmVyIHRocm93IGV4Y2VwdGlvbiAtLSBub3QgcG9zc2libGUgdG8gZGlydHkgb3JpZ2luIG9mIFdl
YkdMIGNhbnZhcy4iKTsKKyAgYXNzZXJ0TXNnKCFjYXVzZWRFeGNlcHRpb24obWFrZVRvRGF0YVVS
TChjYW52YXMxKSksCisgICAgICAgICAgICAic2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24gYnkg
dG9EYXRhVVJMIGZvciBXZWJHTCBjYW52YXMsIHdoaWNoIHNob3VsZCBzdGF5IG9yaWdpbiBjbGVh
bi4iKTsKKworICAvLyBUT0RPOiBTaG91bGQgY2hlY2sgdmlkZW8uCisgIC8vIFRPRE86IFNob3Vs
ZCBjaGVjayBDT1JTIHN1cHBvcnQuCisKKyAgZGVidWcoIiIpOworICBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICBzaG91bGRCZVRydWUoInN1Y2Nlc3NmdWxseVBhcnNlZCIpOworICBkZWJ1
ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgIG5v
dGlmeUZpbmlzaGVkVG9IYXJuZXNzKCk7Cit9CisKKyhhc3luYyBmdW5jdGlvbigpIHsKKyAgY29u
c3QgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZycpOworICB0cnkgeworICAgIGF3
YWl0IHd0dS5hd2FpdE9yVGltZW91dCh3dHUubG9hZENyb3NzT3JpZ2luSW1hZ2UoaW1nLCBkZWZh
dWx0SW1nVXJsLCBsb2NhbEltZ1VybCkpOworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxl
ZChgSW1hZ2Ugc2V0dXAgZmFpbGVkICgke2V9KS5gKTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAg
cmV0dXJuOworICB9CisgIGltYWdlTG9hZGVkKGltZyk7Cit9KSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtYXJyYXktYnVmZmVyLXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0Yzk0YTY4YTcxZTg2YmQ2OTk5YWFkZDM3MWQzZDc0Y2JmNjlkNmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
YXJyYXktYnVmZmVyLXZpZXcuaHRtbApAQCAtMCwwICsxLDMwNCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdWZXJpZmllcyB0ZXhJbWFnZTJEIGFu
ZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIEFycmF5QnVmZmVyVmlldycpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Z1bmN0aW9uIHJvdW5kVXBUb0FsaWdubWVudCh2
YWx1ZSwgYWxpZ25tZW50KSB7CisgIHJldHVybiBNYXRoLmZsb29yKCh2YWx1ZSArIGFsaWdubWVu
dCAtIDEpIC8gYWxpZ25tZW50KSAqIGFsaWdubWVudDsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVS
R0JBRGF0YSh0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHNvdXJjZURhdGEsIHdpZHRoLCBoZWlnaHQp
Cit7CisgICAgdmFyIG51bUNvbG9ycyA9IHNvdXJjZURhdGEubGVuZ3RoIC8gNDsKKyAgICB2YXIg
Y29sb3JPZmZzZXQgPSBmdW5jdGlvbih5KSB7CisgICAgICByZXR1cm4gNCAqIE1hdGguZmxvb3Io
eSAqIG51bUNvbG9ycyAvIGhlaWdodCk7CisgICAgfTsKKworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgZ2wuVU5TSUdORURfQllURTogeworICAgICAgICB2YXIgcm93V2lkdGggPSByb3Vu
ZFVwVG9BbGlnbm1lbnQod2lkdGggKiA0LCB1bnBhY2tBbGlnbm1lbnQpOworICAgICAgICB2YXIg
ZGF0YSA9IG5ldyBVaW50OEFycmF5KGhlaWdodCAqIHJvd1dpZHRoKTsKKyAgICAgICAgZm9yICh2
YXIgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICAgICAgdmFyIGluZGV4ID0geSAq
IHJvd1dpZHRoOworICAgICAgICAgICAgdmFyIG9mZnNldCA9IGNvbG9yT2Zmc2V0KHkpOworICAg
ICAgICAgICAgZm9yICh2YXIgZWxlbWVudCA9IDA7IGVsZW1lbnQgPCB3aWR0aCAqIDQ7ICsrZWxl
bWVudCkgeworICAgICAgICAgICAgICAgIGRhdGFbaW5kZXggKyBlbGVtZW50XSA9IHNvdXJjZURh
dGFbb2Zmc2V0ICsgZWxlbWVudCAlIDRdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBkYXRhOworICAgIH0KKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80
XzQ6IHsKKyAgICAgICAgdmFyIHJvd1dpZHRoID0gcm91bmRVcFRvQWxpZ25tZW50KHdpZHRoICog
MiwgdW5wYWNrQWxpZ25tZW50KSAvIDI7CisgICAgICAgIHZhciBkYXRhID0gbmV3IFVpbnQxNkFy
cmF5KGhlaWdodCAqIHJvd1dpZHRoKTsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWln
aHQ7ICsreSkgeworICAgICAgICAgICAgdmFyIG9mZnNldCA9IGNvbG9yT2Zmc2V0KHkpOworICAg
ICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGluZGV4ID0geSAqIHJvd1dpZHRoICsgeDsKKyAgICAgICAgICAgICAgICBkYXRhW2lu
ZGV4XSA9ICgoKHNvdXJjZURhdGFbb2Zmc2V0ICsgMF0gJiAweEYwKSA8PCA4KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRGF0YVtvZmZzZXQgKyAxXSAmIDB4RjApIDw8
IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VEYXRhW29mZnNldCAr
IDJdICYgMHhGMCkgPj4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJj
ZURhdGFbb2Zmc2V0ICsgM10gJiAweEYwKSA+PiA0KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorICAgIGNhc2UgZ2wuVU5TSUdORURfU0hP
UlRfNV81XzVfMTogeworICAgICAgICB2YXIgcm93V2lkdGggPSByb3VuZFVwVG9BbGlnbm1lbnQo
d2lkdGggKiAyLCB1bnBhY2tBbGlnbm1lbnQpIC8gMjsKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcg
VWludDE2QXJyYXkoaGVpZ2h0ICogcm93V2lkdGgpOworICAgICAgICBmb3IgKHZhciB5ID0gMDsg
eSA8IGhlaWdodDsgKyt5KSB7CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gY29sb3JPZmZzZXQo
eSk7CisgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgaW5kZXggPSB5ICogcm93V2lkdGggKyB4OworICAgICAgICAgICAgICAg
IGRhdGFbaW5kZXhdID0gKCgoc291cmNlRGF0YVtvZmZzZXQgKyAwXSAmIDB4RjgpIDw8IDgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VEYXRhW29mZnNldCArIDFdICYg
MHhGOCkgPDwgMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZURhdGFb
b2Zmc2V0ICsgMl0gJiAweEY4KSA+PiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICgoc291cmNlRGF0YVtvZmZzZXQgKyAzXSAmIDB4ODApID4+IDcpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisgICAgfQorfQorCitmdW5j
dGlvbiB0eXBlVG9TdHJpbmcodHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IGdsLlVOU0lHTkVEX0JZVEU6ICAgICAgICAgICByZXR1cm4gJ1VOU0lHTkVEX0JZVEUnOworICAg
IGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMTogIHJldHVybiAnVU5TSUdORURfU0hPUlRf
NV81XzVfMSc7CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80OiAgcmV0dXJuICdV
TlNJR05FRF9TSE9SVF80XzRfNF80JzsKKyAgICB9CisgICAgcmV0dXJuICdVbmtub3duIHR5cGUg
JyArIHR5cGU7Cit9CisKK2Z1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbih1c2VUZXhTdWJJbWFnZTJE
LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvcENvbG9yLCBib3R0b21Db2xvciwgZXh0cmFDb2xvciwgYmlu
ZGluZ1RhcmdldCwgcHJvZ3JhbSkKK3sKKyAgICBkZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRleFN1
YkltYWdlMkQgPyAndGV4U3ViSW1hZ2UyRCcgOiAndGV4SW1hZ2UyRCcpICsKKyAgICAgICAgICAn
IHdpdGggdHlwZT0nICsgdHlwZVRvU3RyaW5nKHR5cGUpICsKKyAgICAgICAgICAnLCB1bnBhY2tB
bGlnbm1lbnQ9JyArIHVucGFja0FsaWdubWVudCArCisgICAgICAgICAgJywgZmxpcFk9JyArIGZs
aXBZICsgJywgcHJlbXVsdGlwbHlBbHBoYT0nICsgcHJlbXVsdGlwbHlBbHBoYSArCisgICAgICAg
ICAgJywgYmluZGluZ1RhcmdldD0nICsgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCA/
ICdURVhUVVJFXzJEJyA6ICdURVhUVVJFX0NVQkVfTUFQJykpOworICAgIGdsLmNvbG9yTWFzayh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEuMCk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgIC8vIEVuYWJsZSB3cml0ZXMgdG8gdGhlIFJHQiBjaGFubmVscworICAgIGdsLmNvbG9y
TWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0dXJlIHVuaXQgMAor
ICAgIGdsLmJpbmRUZXh0dXJlKGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgIC8vIFNldCB1
cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVy
aShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAg
IGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNM
QU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVY
VFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIC8vIFNldCB1cCBwaXhlbCBzdG9y
ZSBwYXJhbWV0ZXJzCisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgdW5w
YWNrQWxpZ25tZW50KTsKKyAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdM
LCBmbGlwWSk7CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhB
X1dFQkdMLCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAvLyBHZW5lcmF0ZSB0aGUgZGF0YQorICAg
IHZhciBzb3VyY2VEYXRhID0gWyAyNTUsICAgMCwgICAwLCAyNTUsCisgICAgICAgICAgICAgICAg
ICAgICAgIDAsICAgMjU1LCAgIDAsICAgMCBdOworICAgIHZhciB0ZXhXaWR0aCA9IDU7ICAgLy8g
dGhpcyBtdXN0IGJlIG1vZCA0ICsgMSB0byB0ZXN0IHVucGFja0FsaWdubWVudAorICAgIC8vIGN1
YmUgbWFwIHRleHR1cmUgbXVzdCBiZSBzcXVhcmUuCisgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0g
Z2wuVEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgdGV4V2lkdGggPSAxNjsKKyAgICB2YXIgdGV4
SGVpZ2h0ID0gMTY7CisgICAgdmFyIGRhdGEgPSBnZW5lcmF0ZVJHQkFEYXRhKHR5cGUsIHVucGFj
a0FsaWdubWVudCwgc291cmNlRGF0YSwgdGV4V2lkdGgsIHRleEhlaWdodCk7CisgICAgaWYgKGds
LmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpCisgICAgICAgIHRlc3RGYWlsZWQoIkdMIGVycm9y
IGJlZm9yZSB0ZXh0dXJlIHVwbG9hZCIpOworICAgIHZhciB0YXJnZXRzID0gW2dsLlRFWFRVUkVf
MkRdOworICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAg
ICAgICAgdGFyZ2V0cyA9IFtnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsCisgICAgICAg
ICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICAgICAg
ICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAgICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICAgICAgICAgICAgIGdsLlRFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgfQorICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2Ug
aW50byB0aGUgdGV4dHVyZQorICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJnZXRzLmxlbmd0
aDsgKyt0dCkgeworICAgICAgICBpZiAodXNlVGV4U3ViSW1hZ2UyRCkgeworICAgICAgICAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBibGFjayBmaXJzdAorICAgICAgICAgICAgZ2wu
dGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2wuUkdCQSwgdGV4V2lkdGgsIHRleEhlaWdodCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgdHlwZSwgbnVsbCk7CisgICAg
ICAgICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJHTCBlcnJvciBhZnRlciB0ZXhJbWFnZTJEKG51bGwpIik7CisgICAgICAg
ICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAwLCB0ZXhXaWR0aCwgdGV4
SGVpZ2h0LCBnbC5SR0JBLCB0eXBlLCBkYXRhKTsKKyAgICAgICAgICAgIGlmIChnbC5nZXRFcnJv
cigpICE9IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkdMIGVycm9y
IGFmdGVyIHRleFN1YkltYWdlMkQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGds
LnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsLlJHQkEsIHRleFdpZHRoLCB0ZXhIZWlnaHQs
IDAsIGdsLlJHQkEsIHR5cGUsIGRhdGEpOworICAgICAgICAgICAgaWYgKGdsLmdldEVycm9yKCkg
IT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiR0wgZXJyb3IgYWZ0
ZXIgdGV4SW1hZ2UyRCIpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIHRlc3RXaWR0aCAg
PSBnbC5kcmF3aW5nQnVmZmVyV2lkdGg7CisgICAgdmFyIHRlc3RIZWlnaHQgPSBnbC5kcmF3aW5n
QnVmZmVySGVpZ2h0IC8gMjsKKworICAgIHZhciBsb2M7CisgICAgaWYgKGJpbmRpbmdUYXJnZXQg
PT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICBsb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgImZhY2UiKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0
IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0g
Z2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFy
Z2V0c1t0dF0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisg
ICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworCisg
ICAgICAgIC8vIENoZWNrIHRoZSB0b3AgcGl4ZWwgYW5kIGJvdHRvbSBwaXhlbCBhbmQgbWFrZSBz
dXJlIHRoZXkgaGF2ZQorICAgICAgICAvLyB0aGUgcmlnaHQgY29sb3IuCisgICAgICAgIHZhciBy
ZWN0cyA9IFt3dHUubWFrZUNoZWNrUmVjdCgwLCAwLCB0ZXN0V2lkdGgsIHRlc3RIZWlnaHQsIGJv
dHRvbUNvbG9yLCAiYm90dG9tIHBpeGVsIHNob3VsZCBiZSAiICsgYm90dG9tQ29sb3IsIDApLAor
ICAgICAgICAgICAgICAgICAgICAgd3R1Lm1ha2VDaGVja1JlY3QoMCwgdGVzdEhlaWdodCwgdGVz
dFdpZHRoLCB0ZXN0SGVpZ2h0LCB0b3BDb2xvciwgInRvcCBwaXhlbCBzaG91bGQgYmUgIiArIHRv
cENvbG9yLCAwKV07CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3RzKGdsLCByZWN0cyk7Cisg
ICAgICB9CisKKyAgICAvLyBDaGFuZ2UgcGFydCBvZiB0aGUgdGV4dHVyZS4KKyAgICB2YXIgcGFy
dFdpZHRoID0gMTY7CisgICAgdmFyIHBhcnRIZWlnaHQgPSAxNjsKKyAgICAvLyBtYWtlIHRleHR1
cmUgZG91YmxlIHJlcyBvZiBwYXJ0LgorICAgIHZhciBkYXRhID0gZ2VuZXJhdGVSR0JBRGF0YSh0
eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHNvdXJjZURhdGEsIHBhcnRXaWR0aCAqIDIsIHBhcnRIZWln
aHQgKiAyKTsKKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQp
IHsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2wuUkdCQSwgcGFydFdp
ZHRoICogMiwgcGFydEhlaWdodCAqIDIsIDAsIGdsLlJHQkEsIHR5cGUsIGRhdGEpOworICAgIH0K
KyAgICAvLyBzZXQgcGFydC4KKyAgICB2YXIgZXh0cmFEYXRhID0gWworICAgICAgMjU1LCAgIDAs
ICAgMCwgMjU1LAorICAgICAgICAwLCAgIDAsIDI1NSwgICAwCisgICAgXTsKKyAgICB2YXIgZGF0
YSA9IGdlbmVyYXRlUkdCQURhdGEodHlwZSwgdW5wYWNrQWxpZ25tZW50LCBleHRyYURhdGEsIHBh
cnRXaWR0aCwgcGFydEhlaWdodCk7CisgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMu
bGVuZ3RoOyArK3R0KSB7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQodGFyZ2V0c1t0dF0sIDAs
IDAsIDAsIHBhcnRXaWR0aCwgcGFydEhlaWdodCwgZ2wuUkdCQSwgdHlwZSwgZGF0YSk7CisgICAg
fQorICAgIHZhciBoYWxmV2lkdGggID0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIC8gMjsKKyAgICB2
YXIgaGFsZkhlaWdodCA9IGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQgLyAyOworICAgIHZhciBxdWFy
dGVySGVpZ2h0ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCAvIDQ7CisgICAgdmFyIHJlZCA9IFsy
NTUsIDAsIDAsIDI1NV07CisgICAgdmFyIHRjb2xvcjAgPSBmbGlwWSA/IGV4dHJhQ29sb3IgOiBy
ZWQ7CisgICAgdmFyIHRjb2xvcjEgPSBmbGlwWSA/IHJlZCA6IGV4dHJhQ29sb3I7CisKKyAgICBm
b3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgaWYg
KGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgZ2wu
dW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAgICB9CisKKyAgICAgICAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworICAgICAgICB2YXIgcmVjdHMg
PSBbd3R1Lm1ha2VDaGVja1JlY3QoMCwgMCwgaGFsZldpZHRoLCBxdWFydGVySGVpZ2h0LCB0Y29s
b3IwLCAiYm90dG9tIGxlZnQgYm90dG9tIHBpeGVscyBzaG91bGQgYmUgIiArIHRjb2xvcjAsIDAp
LAorICAgICAgICAgICAgICAgICAgICAgd3R1Lm1ha2VDaGVja1JlY3QoMCwgcXVhcnRlckhlaWdo
dCwgaGFsZldpZHRoLCBxdWFydGVySGVpZ2h0LCB0Y29sb3IxLCAiYm90dG9tIGxlZnQgdG9wIHBp
eGVscyBzaG91bGQgYmUgIiArIHRjb2xvcjEsIDApLAorICAgICAgICAgICAgICAgICAgICAgd3R1
Lm1ha2VDaGVja1JlY3QoaGFsZldpZHRoLCAwLCBoYWxmV2lkdGgsIGhhbGZIZWlnaHQsIGJvdHRv
bUNvbG9yLCAiYm90dG9tIHJpZ2h0IHBpeGVscyBzaG91bGQgYmUgIiArIGJvdHRvbUNvbG9yLCAw
KSwKKyAgICAgICAgICAgICAgICAgICAgIHd0dS5tYWtlQ2hlY2tSZWN0KDAsIGhhbGZIZWlnaHQs
IHRlc3RXaWR0aCwgaGFsZkhlaWdodCwgdG9wQ29sb3IsICJ0b3AgcGl4ZWxzIHNob3VsZCBiZSAi
ICsgdG9wQ29sb3IsIDApXTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdHMoZ2wsIHJlY3Rz
KTsKKyAgICAgIH0KKworICAgIC8vIHNldCBmYXIgY29ybmVyLgorICAgIGZvciAodmFyIHR0ID0g
MDsgdHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICBnbC50ZXhTdWJJbWFnZTJE
KHRhcmdldHNbdHRdLCAwLCBwYXJ0V2lkdGgsIHBhcnRIZWlnaHQsIHBhcnRXaWR0aCwgcGFydEhl
aWdodCwgZ2wuUkdCQSwgdHlwZSwgZGF0YSk7CisgICAgfQorICAgIGZvciAodmFyIHR0ID0gMDsg
dHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9
PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICBnbC51bmlmb3JtMWkobG9jLCB0
YXJnZXRzW3R0XSk7CisgICAgICAgIH0KKworICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1
YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKyAgICAgICAgdmFyIHJlY3RzID0gW3d0dS5tYWtlQ2hl
Y2tSZWN0KDAsIDAsIGhhbGZXaWR0aCwgcXVhcnRlckhlaWdodCwgdGNvbG9yMCwgImJvdHRvbSBs
ZWZ0IGJvdHRvbSBwaXhlbHMgc2hvdWxkIGJlICIgKyB0Y29sb3IwLCAwKSwKKyAgICAgICAgICAg
ICAgICAgICAgIHd0dS5tYWtlQ2hlY2tSZWN0KDAsIHF1YXJ0ZXJIZWlnaHQsIGhhbGZXaWR0aCwg
cXVhcnRlckhlaWdodCwgdGNvbG9yMSwgImJvdHRvbSBsZWZ0IHRvcCBwaXhlbHMgc2hvdWxkIGJl
ICIgKyB0Y29sb3IxLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgIHd0dS5tYWtlQ2hlY2tSZWN0
KGhhbGZXaWR0aCwgMCwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0LCBib3R0b21Db2xvciwgImJvdHRv
bSBsZWZ0IHBpeGVscyBzaG91bGQgYmUgIiArIGJvdHRvbUNvbG9yLCAwKSwKKyAgICAgICAgICAg
ICAgICAgICAgIHd0dS5tYWtlQ2hlY2tSZWN0KDAsIGhhbGZIZWlnaHQsIGhhbGZXaWR0aCwgaGFs
ZkhlaWdodCwgdG9wQ29sb3IsICJ0b3AgcmlnaHQgcGl4ZWxzIHNob3VsZCBiZSAiICsgdG9wQ29s
b3IsIDApLAorICAgICAgICAgICAgICAgICAgICAgd3R1Lm1ha2VDaGVja1JlY3QoaGFsZldpZHRo
LCBoYWxmSGVpZ2h0LCBoYWxmV2lkdGgsIHF1YXJ0ZXJIZWlnaHQsIHRjb2xvcjAsICJ0b3Agcmln
aHQgYm90dG9tIHBpeGVscyBzaG91bGQgYmUgIiArIHRjb2xvcjAsIDApLAorICAgICAgICAgICAg
ICAgICAgICAgd3R1Lm1ha2VDaGVja1JlY3QoaGFsZldpZHRoLCBoYWxmSGVpZ2h0ICsgcXVhcnRl
ckhlaWdodCwgaGFsZldpZHRoLCBxdWFydGVySGVpZ2h0LCB0Y29sb3IxLCAidG9wIHJpZ2h0IHRv
cCBwaXhlbHMgc2hvdWxkIGJlICIgKyB0Y29sb3IxLCAwKV07CisgICAgICAgIHd0dS5jaGVja0Nh
bnZhc1JlY3RzKGdsLCByZWN0cyk7CisgICAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoYmlu
ZGluZ1RhcmdldCwgcHJvZ3JhbSkKK3sKKyAgICB2YXIgcmVkID0gWzI1NSwgMCwgMCwgMjU1XTsK
KyAgICB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICAgIHZhciBibHVlID0gWzAsIDAs
IDI1NSwgMjU1XTsKKyAgICB2YXIgcmVkUHJlbXVsdGlwbHlBbHBoYSA9IFsyNTUsIDAsIDAsIDI1
NV07CisgICAgdmFyIGdyZWVuUHJlbXVsdGlwbHlBbHBoYSA9IFswLCAwLCAwLCAyNTVdOworICAg
IHZhciBibHVlUHJlbXVsdGlwbHlBbHBoYSA9IFswLCAwLCAwLCAyNTVdOworCisgICAgdmFyIHR5
cGVzID0gWyBnbC5VTlNJR05FRF9CWVRFLCBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xLCBnbC5V
TlNJR05FRF9TSE9SVF80XzRfNF80IF07CisgICAgdmFyIHVucGFja0FsaWdubWVudHMgPSBbIDEs
IDIsIDQsIDggXTsKKworICAgIHZhciBjYXNlcyA9IFsKKyAgICAgICAgeyBzdWI6IGZhbHNlLCBm
bGlwWTogdHJ1ZSwgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsIHRvcENvbG9yOiByZWQsIGJvdHRv
bUNvbG9yOiBncmVlbiwgZXh0cmFDb2xvcjogYmx1ZSB9LAorICAgICAgICB7IHN1YjogZmFsc2Us
IGZsaXBZOiBmYWxzZSwgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsIHRvcENvbG9yOiBncmVlbiwg
Ym90dG9tQ29sb3I6IHJlZCwgZXh0cmFDb2xvcjogYmx1ZSB9LAorICAgICAgICB7IHN1YjogZmFs
c2UsIGZsaXBZOiB0cnVlLCBwcmVtdWx0aXBseUFscGhhOiB0cnVlLCB0b3BDb2xvcjogcmVkUHJl
bXVsdGlwbHlBbHBoYSwgYm90dG9tQ29sb3I6IGdyZWVuUHJlbXVsdGlwbHlBbHBoYSwgZXh0cmFD
b2xvcjogYmx1ZVByZW11bHRpcGx5QWxwaGEgfSwKKyAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlw
WTogZmFsc2UsIHByZW11bHRpcGx5QWxwaGE6IHRydWUsIHRvcENvbG9yOiBncmVlblByZW11bHRp
cGx5QWxwaGEsIGJvdHRvbUNvbG9yOiByZWRQcmVtdWx0aXBseUFscGhhLCBleHRyYUNvbG9yOiBi
bHVlUHJlbXVsdGlwbHlBbHBoYSB9LAorICAgICAgICB7IHN1YjogdHJ1ZSwgZmxpcFk6IHRydWUs
IHByZW11bHRpcGx5QWxwaGE6IGZhbHNlLCB0b3BDb2xvcjogcmVkLCBib3R0b21Db2xvcjogZ3Jl
ZW4sIGV4dHJhQ29sb3I6IGJsdWUgfSwKKyAgICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiBmYWxz
ZSwgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsIHRvcENvbG9yOiBncmVlbiwgYm90dG9tQ29sb3I6
IHJlZCwgZXh0cmFDb2xvcjogYmx1ZSB9LAorICAgICAgICB7IHN1YjogdHJ1ZSwgZmxpcFk6IHRy
dWUsIHByZW11bHRpcGx5QWxwaGE6IHRydWUsIHRvcENvbG9yOiByZWRQcmVtdWx0aXBseUFscGhh
LCBib3R0b21Db2xvcjogZ3JlZW5QcmVtdWx0aXBseUFscGhhLCBleHRyYUNvbG9yOiBibHVlUHJl
bXVsdGlwbHlBbHBoYSB9LAorICAgICAgICB7IHN1YjogdHJ1ZSwgZmxpcFk6IGZhbHNlLCBwcmVt
dWx0aXBseUFscGhhOiB0cnVlLCB0b3BDb2xvcjogZ3JlZW5QcmVtdWx0aXBseUFscGhhLCBib3R0
b21Db2xvcjogcmVkUHJlbXVsdGlwbHlBbHBoYSwgZXh0cmFDb2xvcjogYmx1ZVByZW11bHRpcGx5
QWxwaGEgfSwKKyAgICBdOworCisgICAgZm9yICh2YXIgaSBpbiB0eXBlcykgeworICAgICAgICBm
b3IgKHZhciBqIGluIHVucGFja0FsaWdubWVudHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGsg
aW4gY2FzZXMpIHsKKyAgICAgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oY2FzZXNba10uc3Vi
LCB0eXBlc1tpXSwgdW5wYWNrQWxpZ25tZW50c1tqXSwgY2FzZXNba10uZmxpcFksIGNhc2VzW2td
LnByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Vz
W2tdLnRvcENvbG9yLCBjYXNlc1trXS5ib3R0b21Db2xvciwgY2FzZXNba10uZXh0cmFDb2xvciwg
YmluZGluZ1RhcmdldCwgcHJvZ3JhbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKwordmFyIHBy
b2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworcnVuVGVzdChnbC5URVhUVVJFXzJE
LCBwcm9ncmFtKTsKK3Byb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWRXaXRoQ3ViZU1hcChn
bCk7CitydW5UZXN0KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHByb2dyYW0pOworCit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKworY29u
c3QgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4KTsKKworY29uc3QgdmFsaWREYXRhcyA9IFsKKyAgYG5ldyBVaW50OEFycmF5KDQpYCwK
KyAgYG5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcig0KSlgLAorICBgbmV3IFVpbnQ4Q2xh
bXBlZEFycmF5KDQpYCwKKyAgYG5ldyBVaW50OENsYW1wZWRBcnJheShuZXcgQXJyYXlCdWZmZXIo
NCkpYCwKK107CitpZiAod2luZG93LlNoYXJlZEFycmF5QnVmZmVyKSB7CisgIHZhbGlkRGF0YXMu
cHVzaCgKKyAgICBgbmV3IFVpbnQ4QXJyYXkobmV3IFNoYXJlZEFycmF5QnVmZmVyKDQpKWAsCisg
ICAgYG5ldyBVaW50OENsYW1wZWRBcnJheShuZXcgU2hhcmVkQXJyYXlCdWZmZXIoNCkpYAorICAp
OworfQorZm9yIChjb25zdCB4IG9mIHZhbGlkRGF0YXMpIHsKKyAgc2hvdWxkTm90VGhyb3coYGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwxLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCAke3h9KTtgKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgIHNob3VsZE5vdFRocm93KGBnbC50
ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgMSwxLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCAke3h9KTtgKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21p
c2MvdGV4LWltYWdlLWFuZC11bmlmb3JtLWJpbmRpbmctYnVncy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy90ZXgtaW1hZ2UtYW5kLXVuaWZvcm0tYmluZGluZy1idWdzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjky
Zjk0YThiOGRiYzMxNzNmNmE0YzcwNTc1NzlhNjk0ZWQwNjAxOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL21pc2MvdGV4LWltYWdlLWFuZC11bmlmb3JtLWJpbmRpbmctYnVncy5odG1sCkBA
IC0wLDAgKzEsNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwor
ZGVzY3JpcHRpb24oJ1Rlc3RzIHBhc3NpbmcgYSB2ZWM0IHRvIGEgdW5pZm9ybSBhbmQgYSBjYW52
YXMgdG8gdGV4SW1hZ2UyRCcpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgZmxvYXRQcm9ncmFtID0gd3R1LmxvYWRQcm9n
cmFtRnJvbUZpbGUoZ2wsICIuLi8uLi8uLi9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZl
cnQiLCAiLi4vLi4vLi4vcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3Vs
ZEJlVW5kZWZpbmVkKCJnbC51c2VQcm9ncmFtKGZsb2F0UHJvZ3JhbSkiKTsKK3ZhciBmdmFsNExv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsNCIpOword3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworc2hvdWxkQmVVbmRlZmluZWQoImdsLnVu
aWZvcm00ZnYoZnZhbDRMb2MsIG5ldyBGbG9hdDMyQXJyYXkoWzAuMSwgMC4yLCAwLjQsIDEuMF0p
KTsiKTsKKwordmFyIHRtcGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OwordG1wY2FudmFzLndpZHRoID0gMjsKK3RtcGNhbnZhcy5oZWlnaHQgPSAyOwordmFyIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitzaG91bGRCZVVuZGVmaW5lZCgiZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSkiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIHRtcGNhbnZhcykiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWlt
YWdlLWNhbnZhcy1jb3JydXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS1jYW52
YXMtY29ycnVwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNzc5MTc2NDQ2NDM2NjI5N2U5ZmIzMjlj
ZGUyNzVlMTZmZjQ2NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFn
ZS1jYW52YXMtY29ycnVwdGlvbi5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3RpbmcgM0QgY2FudmFz
IGlzIHVzYWJsZSBhZnRlciBiZWluZyB1c2VkIGFzIHRleEltYWdlMkQgc291cmNlPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTEy
IiBoZWlnaHQ9IjUxMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisvLyBSZWdy
ZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9jcmJ1Zy5jb20vMzY4NTgyCitkZXNjcmlwdGlvbigpOwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJleGFtcGxlIik7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciB0ZXh0dXJlID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworCit2YXIgaW1hZ2UgPSB3dHUubWFrZUltYWdlKCcuLi8uLi8uLi9yZXNvdXJj
ZXMvYmx1ZS0xeDEuanBnJywgZnVuY3Rpb24oKSB7CisgIHJlbmRlclRvQ2FudmFzKCk7CisgIHJl
bmRlclRvQ2FudmFzKCk7CisgIHd0dS5jaGVja0NhbnZhcyhjdHgsIFswLCAwLCAyNTUsIDI1NV0s
ICJBbGwgcGl4ZWxzIHNob3VsZCBiZSBibHVlIiwgMik7CisgIGZpbmlzaFRlc3QoKTsKK30pOwor
CitmdW5jdGlvbiByZW5kZXJUb0NhbnZhcygpIHsKKyAgLy8gQ2xlYXIgdGhlIDJkIGNhbnZhcyB0
aGVuIGRyYXcgdGhlIGltYWdlIHRvIGl0IChhIGJsdWUgcGl4ZWwpCisgIGN0eC5jbGVhclJlY3Qo
MCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgY3R4LmRyYXdJbWFnZShpbWFn
ZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAvLyBVcGxvYWQgdGhl
IHJlc3VsdHMgdG8gYSBXZWJHTCB0ZXh0dXJlCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleHR1cmUpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhcyk7Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS13ZWJnbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgt
aW1hZ2Utd2ViZ2wuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTNmOGQ5ODIwMWIxNTBjZGJjMWNhODhjNWFj
YjM1ODRkYzc4MjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2Ut
d2ViZ2wuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXhJbWFnZTJEIGZyb20gV2ViR0wgY29u
Zm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjE2IiBzdHlsZT0id2lkdGg6IDI1NnB4
OyBoZWlnaHQ6IDQ4cHg7Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9InNvdXJjZSIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIxNiIgc3R5bGU9IndpZHRoOiAyNTZweDsgaGVpZ2h0OiA0OHB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCB0ZXhJbWFnZTJE
IGZyb20gYSB3ZWJnbCBjYW52YXMuIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CitnbC5kaXNhYmxlKGdsLkRJVEhF
Uik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cit2YXIgZ2wxID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgic291cmNlIik7CitnbDEuZGlzYWJsZShnbC5ESVRIRVIpOwor
Z2wxLmRpc2FibGUoZ2wuQkxFTkQpOworZ2wxLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBm
cm9tIHNldHVwLiIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbDEsIGdsMS5OT19FUlJPUiwgIlNo
b3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKworZ2wuZGlzYWJsZShnbC5CTEVORCk7
CitnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworCitnbDEuY2xlYXJDb2xvcigxLjAsIDAuMCwg
MC4wLCAxLjApOworZ2wxLmNsZWFyKGdsMS5DT0xPUl9CVUZGRVJfQklUKTsKKwordmFyIHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7
CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJ
R05FRF9CWVRFLCBnbDEuY2FudmFzKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElO
RUFSKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBnbC5MSU5FQVIpOword3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKword3R1LmNo
ZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiQ2FudmFzIHNob3VsZCBiZSByZWQiKTsK
KworZ2wxLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK2dsMS5jbGVhcihnbDEuQ09M
T1JfQlVGRkVSX0JJVCk7CisKK3ZhciBwcm9ncmFtMSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChn
bDEpOwordmFyIHRleDEgPSBnbDEuY3JlYXRlVGV4dHVyZSgpOworZ2wxLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleDEpOworZ2wxLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFsw
LCAwLCAyNTVdKSk7CisKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBn
bC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIGdsMS5jYW52YXMpOword3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsKTsKKword3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAiQ2Fu
dmFzIHNob3VsZCBiZSBncmVlbiIpOworCisvLyBUZXN0IGEgc2NlbmFyaW8gZnJvbSBDaHJvbWUg
d2hlcmUgYSBXZWJHTCBjb250ZXh0IHdvdWxkIGxvc2UgaXRzIGFjdGl2ZSB0ZXh0dXJlIGJpbmRp
bmcgd2hlbiBpdHMKKy8vIGNhbnZhcyB3YXMgdXNlZCBhcyB0aGUgdGV4dHVyZSBzb3VyY2UgZm9y
IGFub3RoZXIgV2ViR0wgY29udGV4dC4KK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbDEpOwor
Cit3dHUuY2hlY2tDYW52YXMoZ2wxLCBbMCwgMCwgMjU1LCAyNTVdLCAiQ2FudmFzIHNob3VsZCBi
ZSBibHVlIik7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgt
aW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdl
LXdpdGgtZm9ybWF0LWFuZC10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZiZjRjNmNjYjBhNjZmNzY0
NmE3ODJmY2U3NGNlNjgwYTRmZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dGV4LWltYWdlLXdpdGgtZm9ybWF0LWFuZC10eXBlLmh0bWwKQEAgLTAsMCArMSw3MjIgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvcG5nbGliLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IG51bGw7Cit2
YXIgdGV4dHVyZUxvYyA9IG51bGw7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gSGFybmVzcworCit2YXIgdGVzdENhc2VzID0gW107CisKK3Zh
ciBEYXRhTW9kZSA9IHsKKyAgICBJTUFHRTogMCwKKyAgICBJTUFHRV9EQVRBOiAxLAorCisgICAg
TlVNX0hUTUxfTU9ERVM6IDIsCisKKyAgICBSQVdfREFUQTogMiwKKworICAgIC8vIFRoaXMgbXVz
dCByZW1haW4gdGhlIGxhc3QgbW9kZS4KKyAgICBOVU1fTU9ERVM6IDMKK307CisKK2Z1bmN0aW9u
IGluaXQoKQoreworICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3Vi
SW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBib3RoIEhUTUwgYW5kIHVzZXItc3BlY2lmaWVkIGRh
dGEgd2l0aCBhbGwgZm9ybWF0L3R5cGUgY29tYmluYXRpb25zJyk7CisKKyAgICB2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKKyAgICBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoY2FudmFzKTsKKyAgICBnbC5kaXNhYmxlKGdsLkRJVEhFUik7CisgICAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworCisgICAgZ2wuY2xlYXJDb2xv
cigwLDAsMCwxKTsKKyAgICBnbC5jbGVhckRlcHRoKDEpOworICAgIGdsLmRpc2FibGUoZ2wuQkxF
TkQpOworCisgICAgdGV4dHVyZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
dGV4Iik7CisKKyAgICBpbml0aWFsaXplVGVzdHMoKTsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6
ZVRlc3RzKCkKK3sKKyAgICAvLyBWZXJpZnkgdGhhdCB1cGxvYWRpbmcgdG8gcGFja2VkIHBpeGVs
IGZvcm1hdHMgcGVyZm9ybXMgdGhlCisgICAgLy8gcmVxdWlyZWQgY29udmVyc2lvbiBhbmQgYXNz
b2NpYXRlZCBsb3NzIG9mIHByZWNpc2lvbi4KKyAgICBmb3IgKHZhciBkYXRhTW9kZSA9IDA7IGRh
dGFNb2RlIDwgRGF0YU1vZGUuTlVNX0hUTUxfTU9ERVM7ICsrZGF0YU1vZGUpIHsKKyAgICAgICAg
Zm9yICh2YXIgdXNlVGV4U3ViSW1hZ2UyRCA9IDA7IHVzZVRleFN1YkltYWdlMkQgPCAyOyArK3Vz
ZVRleFN1YkltYWdlMkQpIHsKKyAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAgICAgICAg
ICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAgICAgdXNlVGV4U3ViSW1h
Z2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAgIHdpZHRoOiAyNTYsCisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2Vu
ZXJhdGVPcGFxdWVHcmF5c2NhbGVSYW1wLAorICAgICAgICAgICAgICAgIHByZW11bHRpcGx5QWxw
aGE6IGZhbHNlLAorICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgICAg
ICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgIHZlcmlmaWVyOiBh
bGxDaGFubmVsc0luY3JlYXNlQnlOb01vcmVUaGFuLAorICAgICAgICAgICAgICAgIHRocmVzaG9s
ZDogMSwKKyAgICAgICAgICAgICAgICBudW1PY2N1cnJlbmNlczogMSwKKyAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogIlJHQkEvVU5TSUdORURfQllURSBzaG91bGQgbWFpbnRhaW4gZnVsbCBw
cmVjaXNpb24gb2YgZGF0YSIKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdGVzdENhc2Vz
LnB1c2goeworICAgICAgICAgICAgICAgIGRhdGFNb2RlOiBkYXRhTW9kZSwKKyAgICAgICAgICAg
ICAgICB1c2VUZXhTdWJJbWFnZTJEOiAhIXVzZVRleFN1YkltYWdlMkQsCisgICAgICAgICAgICAg
ICAgd2lkdGg6IDI1NiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEsCisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yOiBnZW5lcmF0ZU9wYXF1ZUdyYXlzY2FsZVJhbXAsCisgICAgICAgICAgICAg
ICAgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsCisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5S
R0JBLAorICAgICAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQsCisg
ICAgICAgICAgICAgICAgdmVyaWZpZXI6IGFsbENoYW5uZWxzSW5jcmVhc2VCeUF0TGVhc3QsCisg
ICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxNSwKKyAgICAgICAgICAgICAgICBudW1PY2N1cnJl
bmNlczogMTAsCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJSR0JBL1VOU0lHTkVEX1NI
T1JUXzRfNF80XzQgbXVzdCBkcm9wIGxvdyBmb3VyIGJpdHMgb2YgcHJlY2lzaW9uIgorICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB0ZXN0Q2FzZXMucHVzaCh7CisgICAgICAgICAgICAgICAg
ZGF0YU1vZGU6IGRhdGFNb2RlLAorICAgICAgICAgICAgICAgIHVzZVRleFN1YkltYWdlMkQ6ICEh
dXNlVGV4U3ViSW1hZ2UyRCwKKyAgICAgICAgICAgICAgICB3aWR0aDogMjU2LAorICAgICAgICAg
ICAgICAgIGhlaWdodDogMSwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGdlbmVyYXRlT3Bh
cXVlR3JheXNjYWxlUmFtcCwKKyAgICAgICAgICAgICAgICBwcmVtdWx0aXBseUFscGhhOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgICAgICAgICAgICAgdHlw
ZTogZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwKKyAgICAgICAgICAgICAgICB2ZXJpZmllcjog
YWxsQ2hhbm5lbHNJbmNyZWFzZUJ5QXRMZWFzdCwKKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6
IDcsCisgICAgICAgICAgICAgICAgbnVtT2NjdXJyZW5jZXM6IDIwLAorICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiAiUkdCQS9VTlNJR05FRF9TSE9SVF81XzVfNV8xIG11c3QgZHJvcCBsb3cg
dGhyZWUgYml0cyBvZiBwcmVjaXNpb24iCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRl
c3RDYXNlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAg
ICAgICAgICAgICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAg
ICAgICAgICAgIHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvcjogZ2VuZXJhdGVPcGFxdWVHcmF5c2NhbGVSYW1wLAorICAgICAg
ICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IGZhbHNlLAorICAgICAgICAgICAgICAgIGZvcm1h
dDogZ2wuUkdCLAorICAgICAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICAgICAgdmVyaWZpZXI6IGFsbENoYW5uZWxzSW5jcmVhc2VCeU5vTW9yZVRoYW4sCisg
ICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLAorICAgICAgICAgICAgICAgIG51bU9jY3VycmVu
Y2VzOiAxLAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiUkdCL1VOU0lHTkVEX0JZVEUg
c2hvdWxkIG1haW50YWluIGZ1bGwgcHJlY2lzaW9uIG9mIGRhdGEiCisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICBkYXRhTW9kZTog
ZGF0YU1vZGUsCisgICAgICAgICAgICAgICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJ
bWFnZTJELAorICAgICAgICAgICAgICAgIHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAxLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2VuZXJhdGVPcGFxdWVHcmF5c2Nh
bGVSYW1wLAorICAgICAgICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IGZhbHNlLAorICAgICAg
ICAgICAgICAgIGZvcm1hdDogZ2wuUkdCLAorICAgICAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lH
TkVEX1NIT1JUXzVfNl81LAorICAgICAgICAgICAgICAgIHZlcmlmaWVyOiBhbGxDaGFubmVsc0lu
Y3JlYXNlQnlBdExlYXN0LAorICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMywKKyAgICAgICAg
ICAgICAgICBudW1PY2N1cnJlbmNlczogMjAsCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246
ICJSR0IvVU5TSUdORURfU0hPUlRfNV82XzUgbXVzdCBkcm9wIGxvdyB0d28gb3IgdGhyZWUgYml0
cyBvZiBwcmVjaXNpb24iCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRlc3RDYXNlcy5w
dXNoKHsKKyAgICAgICAgICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAg
ICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAg
IHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAg
IGdlbmVyYXRvcjogZ2VuZXJhdGVUcmFuc2x1Y2VudEdyYXlzY2FsZVJhbXAsCisgICAgICAgICAg
ICAgICAgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsCisgICAgICAgICAgICAgICAgZm9ybWF0OiBn
bC5BTFBIQSwKKyAgICAgICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAg
ICAgICAgICAgIHZlcmlmaWVyOiBhbHBoYUNoYW5uZWxJbmNyZWFzZXNCeU5vTW9yZVRoYW4sCisg
ICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLAorICAgICAgICAgICAgICAgIG51bU9jY3VycmVu
Y2VzOiAxLAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQUxQSEEvVU5TSUdORURfQllU
RSBzaG91bGQgbWFpbnRhaW4gZnVsbCBwcmVjaXNpb24gb2YgZGF0YSIKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgdGVzdENhc2VzLnB1c2goeworICAgICAgICAgICAgICAgIGRhdGFNb2Rl
OiBkYXRhTW9kZSwKKyAgICAgICAgICAgICAgICB1c2VUZXhTdWJJbWFnZTJEOiAhIXVzZVRleFN1
YkltYWdlMkQsCisgICAgICAgICAgICAgICAgd2lkdGg6IDI1NiwKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDEsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBnZW5lcmF0ZU9wYXF1ZUdyYXlz
Y2FsZVJhbXAsCisgICAgICAgICAgICAgICAgcHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsCisgICAg
ICAgICAgICAgICAgZm9ybWF0OiBnbC5MVU1JTkFOQ0UsCisgICAgICAgICAgICAgICAgdHlwZTog
Z2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICB2ZXJpZmllcjogYWxsQ2hhbm5lbHNJ
bmNyZWFzZUJ5Tm9Nb3JlVGhhbiwKKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDEsCisgICAg
ICAgICAgICAgICAgbnVtT2NjdXJyZW5jZXM6IDEsCisgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b246ICJMVU1JTkFOQ0UvVU5TSUdORURfQllURSBzaG91bGQgbWFpbnRhaW4gZnVsbCBwcmVjaXNp
b24gb2YgZGF0YSIKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdGVzdENhc2VzLnB1c2go
eworICAgICAgICAgICAgICAgIGRhdGFNb2RlOiBkYXRhTW9kZSwKKyAgICAgICAgICAgICAgICB1
c2VUZXhTdWJJbWFnZTJEOiAhIXVzZVRleFN1YkltYWdlMkQsCisgICAgICAgICAgICAgICAgd2lk
dGg6IDI1NiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEsCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yOiBnZW5lcmF0ZU9wYXF1ZUdyYXlzY2FsZVJhbXAsCisgICAgICAgICAgICAgICAgcHJl
bXVsdGlwbHlBbHBoYTogZmFsc2UsCisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5MVU1JTkFO
Q0VfQUxQSEEsCisgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICB2ZXJpZmllcjogYWxsQ2hhbm5lbHNJbmNyZWFzZUJ5Tm9Nb3JlVGhhbiwKKyAg
ICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDEsCisgICAgICAgICAgICAgICAgbnVtT2NjdXJyZW5j
ZXM6IDEsCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJMVU1JTkFOQ0VfQUxQSEEvVU5T
SUdORURfQllURSBzaG91bGQgbWFpbnRhaW4gZnVsbCBwcmVjaXNpb24gb2YgZGF0YSIKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVmVyaWZ5IHRoYXQgc2V0dGlu
ZyB0aGUgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIHBpeGVsCisgICAgLy8gc3RvcmUg
cGFyYW1ldGVyIGFuZCBzZW5kaW5nIGRvd24gYSB6ZXJvIGFscGhhIGNhdXNlcyB0aGUgY29sb3IK
KyAgICAvLyBjaGFubmVscyB0byBnbyB0byB6ZXJvLgorICAgIGZvciAodmFyIGRhdGFNb2RlID0g
MDsgZGF0YU1vZGUgPCBEYXRhTW9kZS5OVU1fTU9ERVM7ICsrZGF0YU1vZGUpIHsKKyAgICAgICAg
Zm9yICh2YXIgdXNlVGV4U3ViSW1hZ2UyRCA9IDA7IHVzZVRleFN1YkltYWdlMkQgPCAyOyArK3Vz
ZVRleFN1YkltYWdlMkQpIHsKKyAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAgICAgICAg
ICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAgICAgdXNlVGV4U3ViSW1h
Z2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAgIHdpZHRoOiAyNTYsCisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2Vu
ZXJhdGVUcmFuc3BhcmVudEdyYXlzY2FsZVJhbXAsCisgICAgICAgICAgICAgICAgcHJlbXVsdGlw
bHlBbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgICAg
ICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICB2ZXJpZmll
cjogY29sb3JDaGFubmVsc0FyZVplcm8sCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJV
TlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBSR0JBL1VOU0lHTkVEX0JZVEUiCisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAgICAgICAgICAg
ICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAgICAgdXNlVGV4U3ViSW1hZ2Uy
RDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAgIHdpZHRoOiAyNTYsCisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2VuZXJh
dGVUcmFuc3BhcmVudEdyYXlzY2FsZVJhbXAsCisgICAgICAgICAgICAgICAgcHJlbXVsdGlwbHlB
bHBoYTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgICAgICAg
ICAgICAgdHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNCwKKyAgICAgICAgICAgICAgICB2
ZXJpZmllcjogY29sb3JDaGFubmVsc0FyZVplcm8sCisgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b246ICJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBSR0JBL1VOU0lHTkVEX1NI
T1JUXzRfNF80XzQiCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNo
KHsKKyAgICAgICAgICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAgICAg
dXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAgIHdp
ZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAgIGdl
bmVyYXRvcjogZ2VuZXJhdGVUcmFuc3BhcmVudEdyYXlzY2FsZVJhbXAsCisgICAgICAgICAgICAg
ICAgcHJlbXVsdGlwbHlBbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJH
QkEsCisgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwKKyAg
ICAgICAgICAgICAgICB2ZXJpZmllcjogY29sb3JDaGFubmVsc0FyZVplcm8sCisgICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb246ICJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBS
R0JBL1VOU0lHTkVEX1NIT1JUXzVfNV81XzEiCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IC8vIFRoZSBmb2xsb3dpbmcgZmV3IHRlc3RzIGFyZSBpbnZhbGlkIGZvciB0aGUgcmF3IGRhdGEK
KyAgICAgICAgICAgIC8vIG1vZGUgYmVjYXVzZSB0aGVyZSBpcyBlaXRoZXIgbm8gYWxwaGEgY2hh
bm5lbCBvciBubworICAgICAgICAgICAgLy8gc2VwYXJhdGUgYWxwaGEgY2hhbm5lbC4KKyAgICAg
ICAgICAgIGlmIChkYXRhTW9kZSAhPSBEYXRhTW9kZS5SQVdfREFUQSkgeworICAgICAgICAgICAg
ICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YU1vZGU6IGRhdGFN
b2RlLAorICAgICAgICAgICAgICAgICAgICB1c2VUZXhTdWJJbWFnZTJEOiAhIXVzZVRleFN1Yklt
YWdlMkQsCisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAg
ICAgIGhlaWdodDogMSwKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBnZW5lcmF0ZVRy
YW5zcGFyZW50R3JheXNjYWxlUmFtcCwKKyAgICAgICAgICAgICAgICAgICAgcHJlbXVsdGlwbHlB
bHBoYTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0IsCisgICAgICAg
ICAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAg
IHZlcmlmaWVyOiBjb2xvckNoYW5uZWxzQXJlWmVybywKKyAgICAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb246ICJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBSR0IvVU5TSUdO
RURfQllURSIKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FzZXMu
cHVzaCh7CisgICAgICAgICAgICAgICAgICAgIGRhdGFNb2RlOiBkYXRhTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAg
ICAgICAgICAgICAgICB3aWR0aDogMjU2LAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEs
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2VuZXJhdGVUcmFuc3BhcmVudEdyYXlz
Y2FsZVJhbXAsCisgICAgICAgICAgICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCLAorICAgICAgICAgICAgICAgICAgICB0
eXBlOiBnbC5VTlNJR05FRF9TSE9SVF81XzZfNSwKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZp
ZXI6IGNvbG9yQ2hhbm5lbHNBcmVaZXJvLAorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bjogIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCB3aXRoIFJHQi9VTlNJR05FRF9TSE9S
VF81XzZfNSIKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FzZXMu
cHVzaCh7CisgICAgICAgICAgICAgICAgICAgIGRhdGFNb2RlOiBkYXRhTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAg
ICAgICAgICAgICAgICB3aWR0aDogMjU2LAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEs
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2VuZXJhdGVUcmFuc3BhcmVudEdyYXlz
Y2FsZVJhbXAsCisgICAgICAgICAgICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuQUxQSEEsCisgICAgICAgICAgICAgICAgICAg
IHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgIHZlcmlmaWVyOiBj
b2xvckNoYW5uZWxzQXJlWmVybywKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJV
TlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBBTFBIQS9VTlNJR05FRF9CWVRFIgor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHRlc3RDYXNlcy5wdXNoKHsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YU1vZGU6IGRhdGFNb2RlLAorICAgICAgICAgICAgICAgICAg
ICB1c2VUZXhTdWJJbWFnZTJEOiAhIXVzZVRleFN1YkltYWdlMkQsCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMSwKKyAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yOiBnZW5lcmF0ZVRyYW5zcGFyZW50R3JheXNjYWxlUmFtcCwK
KyAgICAgICAgICAgICAgICAgICAgcHJlbXVsdGlwbHlBbHBoYTogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0OiBnbC5MVU1JTkFOQ0UsCisgICAgICAgICAgICAgICAgICAgIHR5cGU6
IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgIHZlcmlmaWVyOiBjb2xvckNo
YW5uZWxzQXJlWmVybywKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJVTlBBQ0tf
UFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgd2l0aCBMVU1JTkFOQ0UvVU5TSUdORURfQllURSIKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRlc3RDYXNlcy5w
dXNoKHsKKyAgICAgICAgICAgICAgICBkYXRhTW9kZTogZGF0YU1vZGUsCisgICAgICAgICAgICAg
ICAgdXNlVGV4U3ViSW1hZ2UyRDogISF1c2VUZXhTdWJJbWFnZTJELAorICAgICAgICAgICAgICAg
IHdpZHRoOiAyNTYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAorICAgICAgICAgICAgICAg
IGdlbmVyYXRvcjogZ2VuZXJhdGVUcmFuc3BhcmVudEdyYXlzY2FsZVJhbXAsCisgICAgICAgICAg
ICAgICAgcHJlbXVsdGlwbHlBbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGds
LkxVTUlOQU5DRV9BTFBIQSwKKyAgICAgICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRF
LAorICAgICAgICAgICAgICAgIHZlcmlmaWVyOiBjb2xvckNoYW5uZWxzQXJlWmVybywKKyAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbjogIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCB3
aXRoIExVTUlOQU5DRV9BTFBIQS9VTlNJR05FRF9CWVRFIgorICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBQcm9kdWNlIGRhdGEgZm9yIGFsbCB0ZXN0Y2FzZXMuIEJl
Y2F1c2Ugd2UgbG9hZCBpbWFnZXMsIHNvbWUgb2YKKyAgICAvLyB0aGVzZSBtYXkgZ2VuZXJhdGUg
dGhlaXIgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICBnZW5lcmF0ZVRlc3REYXRhKCk7Cit9CisK
K2Z1bmN0aW9uIGdlbmVyYXRlVGVzdERhdGEoKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdENhc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB0ZXN0Q2FzZSA9IHRlc3RDYXNl
c1tpXTsKKyAgICAgICAgdmFyIHdyYXBwZXIgPSBudWxsOworICAgICAgICBzd2l0Y2ggKHRlc3RD
YXNlLmRhdGFNb2RlKSB7CisgICAgICAgIGNhc2UgRGF0YU1vZGUuSU1BR0U6CisgICAgICAgICAg
ICB3cmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcih0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVp
Z2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFNb2RlLklNQUdFX0RB
VEE6CisgICAgICAgICAgICB3cmFwcGVyID0gbmV3IEltYWdlRGF0YVdyYXBwZXIodGVzdENhc2Uu
d2lkdGgsIHRlc3RDYXNlLmhlaWdodCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBEYXRhTW9kZS5SQVdfREFUQToKKyAgICAgICAgICAgIHN3aXRjaCAodGVzdENhc2UudHlwZSkg
eworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHN3
aXRjaCAodGVzdENhc2UuZm9ybWF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5SR0JBOgor
ICAgICAgICAgICAgICAgICAgICB3cmFwcGVyID0gbmV3IFJHQkE4RGF0YVdyYXBwZXIodGVzdENh
c2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgZ2wuUkdCOgorICAgICAgICAgICAgICAgICAgICB3cmFwcGVy
ID0gbmV3IFJHQjhEYXRhV3JhcHBlcih0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5BTFBI
QToKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlciA9IG5ldyBBOERhdGFXcmFwcGVyKHRlc3RD
YXNlLndpZHRoLCB0ZXN0Q2FzZS5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRToKKyAgICAgICAgICAgICAgICAgICAg
d3JhcHBlciA9IG5ldyBMOERhdGFXcmFwcGVyKHRlc3RDYXNlLndpZHRoLCB0ZXN0Q2FzZS5oZWln
aHQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGds
LkxVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlciA9IG5ldyBMQThE
YXRhV3JhcHBlcih0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAg
ICAgICAgIHdyYXBwZXIgPSBuZXcgUkdCQTQ0NDREYXRhV3JhcHBlcih0ZXN0Q2FzZS53aWR0aCwg
dGVzdENhc2UuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICAgICAgICB3cmFwcGVyID0g
bmV3IFJHQkE1NTUxRGF0YVdyYXBwZXIodGVzdENhc2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NI
T1JUXzVfNl81OgorICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBuZXcgUkdCNTY1RGF0YVdyYXBw
ZXIodGVzdENhc2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGVzdENhc2Uud3JhcHBlciA9
IHdyYXBwZXI7CisgICAgICAgIHRlc3RDYXNlLmdlbmVyYXRvcih3cmFwcGVyKTsKKyAgICAgICAg
dGVzdENhc2Uud3JhcHBlci5nZW5lcmF0ZURhdGEoKTsKKyAgICB9CisKKyAgICAvLyBTZWUgd2hl
dGhlciB3ZSBuZWVkIHRvIHJ1biB0aGUgdGVzdHMsIGluIGNhc2UgYWxsIG9mIHRoZW0KKyAgICAv
LyBnZW5lcmF0ZWQgdGhlaXIgcmVzdWx0cyBzeW5jaHJvbm91c2x5LgorICAgIG1heWJlUnVuVGVz
dHMoKTsKK30KKwordmFyIHJhblRlc3RzID0gZmFsc2U7CisKK2Z1bmN0aW9uIG1heWJlUnVuVGVz
dHMoKQoreworICAgIGlmICghcmFuVGVzdHMpCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdENhc2VzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgaWYgKCF0ZXN0Q2FzZXNbaV0ud3Jh
cHBlciB8fCAhdGVzdENhc2VzW2ldLndyYXBwZXIuZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICByYW5UZXN0cyA9IHRydWU7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RDYXNlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgcnVuT25lVGVzdCh0ZXN0Q2FzZXNbaV0pOwor
CisgICAgZmluaXNoVGVzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0Q2FzZVRvU3RyaW5nKHRlc3RD
YXNlKQoreworICAgIHZhciBtb2RlOworICAgIHN3aXRjaCAodGVzdENhc2UuZGF0YU1vZGUpIHsK
KyAgICBjYXNlIERhdGFNb2RlLklNQUdFOgorICAgICAgICBtb2RlID0gIkltYWdlIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEYXRhTW9kZS5JTUFHRV9EQVRBOgorICAgICAgICBtb2RlID0g
IkltYWdlRGF0YSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGF0YU1vZGUuUkFXX0RBVEE6
CisgICAgICAgIG1vZGUgPSAicmF3IGRhdGEiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuICh0ZXN0Q2FzZS51c2VUZXhTdWJJbWFnZTJEID8gInRleFN1YkltYWdlMkQiIDogInRl
eEltYWdlMkQiKSArCisgICAgICAgICAgICAiIHdpdGggIiArIG1vZGUgKyAgIiBhdCAiICsgdGVz
dENhc2Uud2lkdGggKyAieCIgKyB0ZXN0Q2FzZS5oZWlnaHQ7Cit9CisKK2Z1bmN0aW9uIHJ1bk9u
ZVRlc3QodGVzdENhc2UpCit7CisgICAgZGVidWcoIlRlc3RpbmcgIiArIHRlc3RDYXNlVG9TdHJp
bmcodGVzdENhc2UpKTsKKyAgICB2YXIgZGF0YSA9IHRlc3RDYXNlLndyYXBwZXIuZGF0YTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7Cisg
ICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgLy8gQmluZCB0aGUgdGV4
dHVyZSB0byB0ZXh0dXJlIHVuaXQgMC4KKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlKTsKKyAgICAvLyBTZXQgdXAgdGV4dHVyZSBwYXJhbWV0ZXJzLgorICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFS
RVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFH
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFtZXRl
cnMuCisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdM
LCB0ZXN0Q2FzZS5wcmVtdWx0aXBseUFscGhhKTsKKyAgICAvLyBVcGxvYWQgdGhlIGltYWdlIGlu
dG8gdGhlIHRleHR1cmUuCisgICAgaWYgKHRlc3RDYXNlLnVzZVRleFN1YkltYWdlMkQpIHsKKyAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBibGFjayBmaXJzdC4KKyAgICAgICAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB0ZXN0Q2FzZS5mb3JtYXQsIHRlc3RDYXNl
LndpZHRoLCB0ZXN0Q2FzZS5oZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgdGVzdENh
c2UuZm9ybWF0LCB0ZXN0Q2FzZS50eXBlLCBudWxsKTsKKyAgICB9CisgICAgc3dpdGNoICh0ZXN0
Q2FzZS5kYXRhTW9kZSkgeworICAgIGNhc2UgRGF0YU1vZGUuSU1BR0U6CisgICAgY2FzZSBEYXRh
TW9kZS5JTUFHRV9EQVRBOgorICAgICAgICBpZiAodGVzdENhc2UudXNlVGV4U3ViSW1hZ2UyRCkK
KyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgdGVz
dENhc2UuZm9ybWF0LCB0ZXN0Q2FzZS50eXBlLCBkYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB0ZXN0Q2FzZS5mb3JtYXQsIHRl
c3RDYXNlLmZvcm1hdCwgdGVzdENhc2UudHlwZSwgZGF0YSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRGF0YU1vZGUuUkFXX0RBVEE6CisgICAgICAgIGlmICh0ZXN0Q2FzZS51c2VUZXhTdWJJ
bWFnZTJEKQorICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCB0ZXN0Q2FzZS5mb3JtYXQsIHRl
c3RDYXNlLnR5cGUsIGRhdGEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHRlc3RDYXNlLmZvcm1hdCwgdGVzdENhc2Uud2lkdGgsIHRl
c3RDYXNlLmhlaWdodCwgMCwgdGVzdENhc2UuZm9ybWF0LCB0ZXN0Q2FzZS50eXBlLCBkYXRhKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFBvaW50IHRoZSB1bmlmb3JtIHNhbXBsZXIg
dG8gdGV4dHVyZSB1bml0IDAuCisgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOworICAg
IC8vIERyYXcgdGhlIHRyaWFuZ2xlcy4KKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisgICAgLy8gQ2xlYW4gdXAgdGhlIHRleHR1cmUuCisgICAgZ2wuZGVsZXRlVGV4dHVy
ZSh0ZXh0dXJlKTsKKworICAgIC8vIFJlYWQgYmFjayB0aGUgcmVuZGVyaW5nIHJlc3VsdHMuCisg
ICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHRlc3RDYXNlLndpZHRoICogdGVzdENhc2UuaGVp
Z2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENh
c2UuaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIC8vIFJ1biB0
aGUgdmVyaWZpY2F0aW9uIHJvdXRpbmUuCisgICAgaWYgKHRlc3RDYXNlLnZlcmlmaWVyKGJ1Ziwg
dGVzdENhc2UudGhyZXNob2xkLCB0ZXN0Q2FzZS5udW1PY2N1cnJlbmNlcykpCisgICAgICAgIHRl
c3RQYXNzZWQodGVzdENhc2UuZGVzY3JpcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZh
aWxlZCh0ZXN0Q2FzZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gV3Jh
cHBlcnMgZm9yIHByb2dyYW1tYXRpYyBjb25zdHJ1Y3Rpb24gb2YgSW1hZ2UsIEltYWdlRGF0YSBh
bmQgcmF3IHRleHR1cmUgZGF0YQorLy8KKworZnVuY3Rpb24gSW1hZ2VXcmFwcGVyKHdpZHRoLCBo
ZWlnaHQpCit7CisgICAgdGhpcy5wbmdCdWlsZGVyXyA9IG5ldyBQTkdsaWIod2lkdGgsIGhlaWdo
dCwgMjU2KTsKK30KKworSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB0aGlzLnBuZ0J1aWxkZXJfLndpZHRoOworfTsKKworSW1hZ2VXcmFw
cGVyLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5w
bmdCdWlsZGVyXy5oZWlnaHQ7Cit9OworCitJbWFnZVdyYXBwZXIucHJvdG90eXBlLnNldFBpeGVs
ID0gZnVuY3Rpb24oeCwgeSwgciwgZywgYiwgYSkgeworICAgIHRoaXMucG5nQnVpbGRlcl8uYnVm
ZmVyW3RoaXMucG5nQnVpbGRlcl8uaW5kZXgoeCwgeSldID0gdGhpcy5wbmdCdWlsZGVyXy5jb2xv
cihyLCBnLCBiLCBhKTsKK307CisKKy8vIEdlbmVyYXRlcyBkYXRhIGludG8gImRhdGEiIHByb3Bl
cnR5LCBwb3NzaWJseSBhc3luY2hyb25vdXNseS4KK0ltYWdlV3JhcHBlci5wcm90b3R5cGUuZ2Vu
ZXJhdGVEYXRhID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRoYXQgPSB0aGlzOworICAgIHZhciB1
cmwgPSAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LCIgKyB0aGlzLnBuZ0J1aWxkZXJfLmdldEJhc2U2
NCgpOworICAgIHZhciBpbWcgPSB3dHUubWFrZUltYWdlKHVybCwgZnVuY3Rpb24oKSB7CisgICAg
ICB0aGF0LmRhdGEgPSBpbWc7CisgICAgICBtYXliZVJ1blRlc3RzKCk7CisgICAgfSk7Cit9Owor
CitmdW5jdGlvbiBJbWFnZURhdGFXcmFwcGVyKHdpZHRoLCBoZWlnaHQpCit7CisgICAgaWYgKCFJ
bWFnZURhdGFXcmFwcGVyLnRlbXBDYW52YXMpIHsKKyAgICAgICAgSW1hZ2VEYXRhV3JhcHBlci50
ZW1wQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgfQorICAg
IHRoaXMuaW1hZ2VEYXRhXyA9IEltYWdlRGF0YVdyYXBwZXIudGVtcENhbnZhcy5nZXRDb250ZXh0
KCIyZCIpLmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KTsKK30KKworSW1hZ2VEYXRhV3Jh
cHBlci50ZW1wQ2FudmFzID0gbnVsbDsKKworSW1hZ2VEYXRhV3JhcHBlci5wcm90b3R5cGUuZ2V0
V2lkdGggPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5pbWFnZURhdGFfLndpZHRoOwor
fTsKKworSW1hZ2VEYXRhV3JhcHBlci5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHRoaXMuaW1hZ2VEYXRhXy5oZWlnaHQ7Cit9OworCitJbWFnZURhdGFXcmFw
cGVyLnByb3RvdHlwZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgsIHksIHIsIGcsIGIsIGEpIHsKKyAg
ICB2YXIgaW5kZXggPSA0ICogKHRoaXMuaW1hZ2VEYXRhXy53aWR0aCAqIHkgKyB4KTsKKyAgICB0
aGlzLmltYWdlRGF0YV8uZGF0YVtpbmRleF0gPSByOworICAgIHRoaXMuaW1hZ2VEYXRhXy5kYXRh
W2luZGV4ICsgMV0gPSBnOworICAgIHRoaXMuaW1hZ2VEYXRhXy5kYXRhW2luZGV4ICsgMl0gPSBi
OworICAgIHRoaXMuaW1hZ2VEYXRhXy5kYXRhW2luZGV4ICsgM10gPSBhOworfTsKKworSW1hZ2VE
YXRhV3JhcHBlci5wcm90b3R5cGUuZ2VuZXJhdGVEYXRhID0gZnVuY3Rpb24oKSB7CisgICAgdGhp
cy5kYXRhID0gdGhpcy5pbWFnZURhdGFfOworICAgIG1heWJlUnVuVGVzdHMoKTsKK307CisKK2Z1
bmN0aW9uIFRleHR1cmVEYXRhV3JhcHBlcih3aWR0aCwgaGVpZ2h0KQoreworICAgIHRoaXMud2lk
dGhfID0gd2lkdGg7CisgICAgdGhpcy5oZWlnaHRfID0gaGVpZ2h0OworfQorCitUZXh0dXJlRGF0
YVdyYXBwZXIucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRo
aXMud2lkdGhfOworfTsKKworVGV4dHVyZURhdGFXcmFwcGVyLnByb3RvdHlwZS5nZXRIZWlnaHQg
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5oZWlnaHRfOworfTsKKworVGV4dHVyZURh
dGFXcmFwcGVyLnByb3RvdHlwZS5nZW5lcmF0ZURhdGEgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlz
LmRhdGEgPSB0aGlzLmRhdGFfOworICAgIG1heWJlUnVuVGVzdHMoKTsKK307CisKK2Z1bmN0aW9u
IFJHQkE4RGF0YVdyYXBwZXIod2lkdGgsIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlRGF0YVdyYXBw
ZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB0aGlzLmRhdGFfID0gbmV3IFVpbnQ4
QXJyYXkoNCAqIHdpZHRoICogaGVpZ2h0KTsKK30KKworUkdCQThEYXRhV3JhcHBlci5wcm90b3R5
cGUgPSBuZXcgVGV4dHVyZURhdGFXcmFwcGVyOworCitSR0JBOERhdGFXcmFwcGVyLnByb3RvdHlw
ZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgsIHksIHIsIGcsIGIsIGEpIHsKKyAgICB2YXIgaW5kZXgg
PSA0ICogKHRoaXMud2lkdGhfICogeSArIHgpOworICAgIHRoaXMuZGF0YV9baW5kZXhdID0gcjsK
KyAgICB0aGlzLmRhdGFfW2luZGV4ICsgMV0gPSBnOworICAgIHRoaXMuZGF0YV9baW5kZXggKyAy
XSA9IGI7CisgICAgdGhpcy5kYXRhX1tpbmRleCArIDNdID0gYTsKK307CisKK2Z1bmN0aW9uIFJH
QkE1NTUxRGF0YVdyYXBwZXIod2lkdGgsIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlRGF0YVdyYXBw
ZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB0aGlzLmRhdGFfID0gbmV3IFVpbnQx
NkFycmF5KHdpZHRoICogaGVpZ2h0KTsKK30KKworUkdCQTU1NTFEYXRhV3JhcHBlci5wcm90b3R5
cGUgPSBuZXcgVGV4dHVyZURhdGFXcmFwcGVyOworCitSR0JBNTU1MURhdGFXcmFwcGVyLnByb3Rv
dHlwZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgsIHksIHIsIGcsIGIsIGEpIHsKKyAgICB2YXIgdmFs
dWUgPSAoKChyICYgMHhGOCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgfCAoKGcgJiAweEY4KSA8
PCAzKQorICAgICAgICAgICAgICAgICB8ICgoYiAmIDB4RjgpID4+IDIpCisgICAgICAgICAgICAg
ICAgIHwgKGEgPj4gNykpOworICAgIHRoaXMuZGF0YV9bdGhpcy53aWR0aF8gKiB5ICsgeF0gPSB2
YWx1ZTsKK307CisKK2Z1bmN0aW9uIFJHQkE0NDQ0RGF0YVdyYXBwZXIod2lkdGgsIGhlaWdodCkK
K3sKKyAgICBUZXh0dXJlRGF0YVdyYXBwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB0aGlzLmRhdGFfID0gbmV3IFVpbnQxNkFycmF5KHdpZHRoICogaGVpZ2h0KTsKK30KKworUkdC
QTQ0NDREYXRhV3JhcHBlci5wcm90b3R5cGUgPSBuZXcgVGV4dHVyZURhdGFXcmFwcGVyOworCitS
R0JBNDQ0NERhdGFXcmFwcGVyLnByb3RvdHlwZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgsIHksIHIs
IGcsIGIsIGEpIHsKKyAgICB2YXIgdmFsdWUgPSAoKChyICYgMHhGMCkgPDwgOCkKKyAgICAgICAg
ICAgICAgICAgfCAoKGcgJiAweEYwKSA8PCA0KQorICAgICAgICAgICAgICAgICB8IChiICYgMHhG
MCkKKyAgICAgICAgICAgICAgICAgfCAoYSA+PiA0KSk7CisgICAgdGhpcy5kYXRhX1t0aGlzLndp
ZHRoXyAqIHkgKyB4XSA9IHZhbHVlOworfTsKKworZnVuY3Rpb24gUkdCOERhdGFXcmFwcGVyKHdp
ZHRoLCBoZWlnaHQpCit7CisgICAgVGV4dHVyZURhdGFXcmFwcGVyLmNhbGwodGhpcywgd2lkdGgs
IGhlaWdodCk7CisgICAgdGhpcy5kYXRhXyA9IG5ldyBVaW50OEFycmF5KDMgKiB3aWR0aCAqIGhl
aWdodCk7Cit9CisKK1JHQjhEYXRhV3JhcHBlci5wcm90b3R5cGUgPSBuZXcgVGV4dHVyZURhdGFX
cmFwcGVyOworCitSR0I4RGF0YVdyYXBwZXIucHJvdG90eXBlLnNldFBpeGVsID0gZnVuY3Rpb24o
eCwgeSwgciwgZywgYiwgYSkgeworICAgIHZhciBpbmRleCA9IDMgKiAodGhpcy53aWR0aF8gKiB5
ICsgeCk7CisgICAgdGhpcy5kYXRhX1tpbmRleF0gPSByOworICAgIHRoaXMuZGF0YV9baW5kZXgg
KyAxXSA9IGc7CisgICAgdGhpcy5kYXRhX1tpbmRleCArIDJdID0gYjsKK307CisKK2Z1bmN0aW9u
IFJHQjU2NURhdGFXcmFwcGVyKHdpZHRoLCBoZWlnaHQpCit7CisgICAgVGV4dHVyZURhdGFXcmFw
cGVyLmNhbGwodGhpcywgd2lkdGgsIGhlaWdodCk7CisgICAgdGhpcy5kYXRhXyA9IG5ldyBVaW50
MTZBcnJheSh3aWR0aCAqIGhlaWdodCk7Cit9CisKK1JHQjU2NURhdGFXcmFwcGVyLnByb3RvdHlw
ZSA9IG5ldyBUZXh0dXJlRGF0YVdyYXBwZXI7CisKK1JHQjU2NURhdGFXcmFwcGVyLnByb3RvdHlw
ZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgsIHksIHIsIGcsIGIsIGEpIHsKKyAgICB2YXIgdmFsdWUg
PSAoKChyICYgMHhGOCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgfCAoKGcgJiAweEZDKSA8PCAz
KQorICAgICAgICAgICAgICAgICB8ICgoYiAmIDB4RjgpID4+IDMpKTsKKyAgICB0aGlzLmRhdGFf
W3RoaXMud2lkdGhfICogeSArIHhdID0gdmFsdWU7Cit9OworCitmdW5jdGlvbiBBOERhdGFXcmFw
cGVyKHdpZHRoLCBoZWlnaHQpCit7CisgICAgVGV4dHVyZURhdGFXcmFwcGVyLmNhbGwodGhpcywg
d2lkdGgsIGhlaWdodCk7CisgICAgdGhpcy5kYXRhXyA9IG5ldyBVaW50OEFycmF5KHdpZHRoICog
aGVpZ2h0KTsKK30KKworQThEYXRhV3JhcHBlci5wcm90b3R5cGUgPSBuZXcgVGV4dHVyZURhdGFX
cmFwcGVyOworCitBOERhdGFXcmFwcGVyLnByb3RvdHlwZS5zZXRQaXhlbCA9IGZ1bmN0aW9uKHgs
IHksIHIsIGcsIGIsIGEpIHsKKyAgICB0aGlzLmRhdGFfW3RoaXMud2lkdGhfICogeSArIHhdID0g
YTsKK307CisKK2Z1bmN0aW9uIEw4RGF0YVdyYXBwZXIod2lkdGgsIGhlaWdodCkKK3sKKyAgICBU
ZXh0dXJlRGF0YVdyYXBwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB0aGlzLmRh
dGFfID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQpOworfQorCitMOERhdGFXcmFwcGVy
LnByb3RvdHlwZSA9IG5ldyBUZXh0dXJlRGF0YVdyYXBwZXI7CisKK0w4RGF0YVdyYXBwZXIucHJv
dG90eXBlLnNldFBpeGVsID0gZnVuY3Rpb24oeCwgeSwgciwgZywgYiwgYSkgeworICAgIHRoaXMu
ZGF0YV9bdGhpcy53aWR0aF8gKiB5ICsgeF0gPSByOworfTsKKworZnVuY3Rpb24gTEE4RGF0YVdy
YXBwZXIod2lkdGgsIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlRGF0YVdyYXBwZXIuY2FsbCh0aGlz
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB0aGlzLmRhdGFfID0gbmV3IFVpbnQ4QXJyYXkoMiAqIHdp
ZHRoICogaGVpZ2h0KTsKK30KKworTEE4RGF0YVdyYXBwZXIucHJvdG90eXBlID0gbmV3IFRleHR1
cmVEYXRhV3JhcHBlcjsKKworTEE4RGF0YVdyYXBwZXIucHJvdG90eXBlLnNldFBpeGVsID0gZnVu
Y3Rpb24oeCwgeSwgciwgZywgYiwgYSkgeworICAgIHZhciBpbmRleCA9IDIgKiAodGhpcy53aWR0
aF8gKiB5ICsgeCk7CisgICAgdGhpcy5kYXRhX1tpbmRleF0gPSByOworICAgIHRoaXMuZGF0YV9b
aW5kZXggKyAxXSA9IGE7Cit9OworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbG9yIHJhbXAgZ2Vu
ZXJhdGlvbiBmdW5jdGlvbnMKKy8vCisKK2Z1bmN0aW9uIGdlbmVyYXRlT3BhcXVlR3JheXNjYWxl
UmFtcCh3cmFwcGVyKQoreworICAgIHZhciB3aWR0aCA9IHdyYXBwZXIuZ2V0V2lkdGgoKTsKKyAg
ICB2YXIgaGVpZ2h0ID0gd3JhcHBlci5nZXRIZWlnaHQoKTsKKyAgICBmb3IgKHZhciB4ID0gMDsg
eCA8IHdpZHRoOyArK3gpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gTWF0aC5yb3VuZCgyNTUuMCAq
IHggLyB3aWR0aCk7CisgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpCisg
ICAgICAgICAgICB3cmFwcGVyLnNldFBpeGVsKHgsIHksIHZhbHVlLCB2YWx1ZSwgdmFsdWUsIDI1
NSk7CisgICAgfQorfQorCitmdW5jdGlvbiBnZW5lcmF0ZVRyYW5zbHVjZW50R3JheXNjYWxlUmFt
cCh3cmFwcGVyKQoreworICAgIHZhciB3aWR0aCA9IHdyYXBwZXIuZ2V0V2lkdGgoKTsKKyAgICB2
YXIgaGVpZ2h0ID0gd3JhcHBlci5nZXRIZWlnaHQoKTsKKyAgICBmb3IgKHZhciB4ID0gMDsgeCA8
IHdpZHRoOyArK3gpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gTWF0aC5yb3VuZCgyNTUuMCAqIHgg
LyB3aWR0aCk7CisgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpCisgICAg
ICAgICAgICB3cmFwcGVyLnNldFBpeGVsKHgsIHksIHZhbHVlLCB2YWx1ZSwgdmFsdWUsIHZhbHVl
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlVHJhbnNwYXJlbnRHcmF5c2NhbGVSYW1w
KHdyYXBwZXIpCit7CisgICAgdmFyIHdpZHRoID0gd3JhcHBlci5nZXRXaWR0aCgpOworICAgIHZh
ciBoZWlnaHQgPSB3cmFwcGVyLmdldEhlaWdodCgpOworICAgIGZvciAodmFyIHggPSAwOyB4IDwg
d2lkdGg7ICsreCkgeworICAgICAgICB2YXIgdmFsdWUgPSBNYXRoLnJvdW5kKDI1NS4wICogeCAv
IHdpZHRoKTsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKKyAgICAg
ICAgICAgIHdyYXBwZXIuc2V0UGl4ZWwoeCwgeSwgdmFsdWUsIHZhbHVlLCB2YWx1ZSwgMCk7Cisg
ICAgfQorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFZlcmlmaWNhdGlvbiByb3V0aW5lcworLy8K
KworZnVuY3Rpb24gYWxsQ2hhbm5lbHNJbmNyZWFzZUJ5Tm9Nb3JlVGhhbihhcnJheSwgdGhyZXNo
b2xkLCBudW1PY2N1cnJlbmNlcykgeworICAgIHZhciBudW1Gb3VuZCA9IDA7CisgICAgZm9yICh2
YXIgaSA9IDQ7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gNCkKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCA0OyBqKyspCisgICAgICAgICAgICBpZiAoYXJyYXlbaSArIGpdIC0gYXJyYXlbaSAr
IGogLSA0XSA+IHRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICArK251bUZvdW5kOworCisgICAg
cmV0dXJuIG51bUZvdW5kIDwgbnVtT2NjdXJyZW5jZXM7Cit9CisKK2Z1bmN0aW9uIGFscGhhQ2hh
bm5lbEluY3JlYXNlc0J5Tm9Nb3JlVGhhbihhcnJheSwgdGhyZXNob2xkLCBudW1PY2N1cnJlbmNl
cykgeworICAgIHZhciBudW1Gb3VuZCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDc7IGkgPCBhcnJh
eS5sZW5ndGg7IGkgKz0gNCkKKyAgICAgICAgaWYgKGFycmF5W2ldIC0gYXJyYXlbaSAtIDRdID4g
dGhyZXNob2xkKQorICAgICAgICAgICAgKytudW1Gb3VuZDsKKworICAgIHJldHVybiBudW1Gb3Vu
ZCA8IG51bU9jY3VycmVuY2VzOworfQorCitmdW5jdGlvbiBhbGxDaGFubmVsc0luY3JlYXNlQnlB
dExlYXN0KGFycmF5LCB0aHJlc2hvbGQsIG51bU9jY3VycmVuY2VzKSB7CisgICAgdmFyIG51bUZv
dW5kID0gMDsKKyAgICBmb3IgKHZhciBpID0gNDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSA0KQor
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7ICsraikKKyAgICAgICAgICAgIGlmIChhcnJh
eVtpICsgal0gLSBhcnJheVtpICsgaiAtIDRdID4gdGhyZXNob2xkKQorICAgICAgICAgICAgICAg
ICsrbnVtRm91bmQ7CisKKyAgICByZXR1cm4gbnVtRm91bmQgPiBudW1PY2N1cnJlbmNlczsKK30K
KworZnVuY3Rpb24gY29sb3JDaGFubmVsc0FyZVplcm8oYXJyYXksIHRocmVzaG9sZCwgbnVtT2Nj
dXJyZW5jZXMpIHsKKyAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICB2YXIgbnVtRmFpbHVyZXMg
PSAwOworCisgICAgZm9yICh2YXIgaSA9IDQ7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gNCkKKyAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAzOyArK2opCisgICAgICAgICAgICBpZiAoYXJyYXlb
aSArIGpdICE9IDApIHsKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBpZiAoKytudW1GYWlsdXJlcyA8PSA1KQorICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICBhcnJheVsiICsgKGkgKyBqKSArICJdIHNob3VsZCBoYXZlIGJlZW4gMCwgd2FzICIgKyBh
cnJheVtpICsgal0pOworICAgICAgICAgICAgfQorCisgICAgcmV0dXJuIHBhc3NlZDsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS13aXRoLWludmFsaWQtZGF0YS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2Utd2l0aC1pbnZhbGlkLWRhdGEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NTAwNjI0YzgxM2Y2NGZkMTExMDdjYzJlYzcyMDBhYzg2MDU1MTE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2Utd2l0aC1pbnZhbGlkLWRhdGEuaHRt
bApAQCAtMCwwICsxLDE1OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorICAgIDx0aXRsZT50ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIHRlc3RzIHdp
dGggaW52YWxpZCBkYXRhPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlw
dCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJ0ZXhJbWFnZTJE
IGFuZCB0ZXhTdWJJbWFnZTJEIHRlc3RzIHdpdGggaW52YWxpZCBkYXRhIik7CisKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Cit2YXIgY29udGV4dFZlcnNpb24gPSB3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZl
cnNpb24oKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2lmICghZ2wp
CisgIHRlc3RGYWlsZWQoIkNvbnRleHQgY3JlYXRlZC4iKTsKK2Vsc2UKKyAgdGVzdFBhc3NlZCgi
Q29udGV4dCBjcmVhdGVkLiIpOworCit2YXIgdGV4OworCitmdW5jdGlvbiBzZXR1cCgpIHsKKyAg
ICB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEs
IDY0LCA2NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7Cit9CisKK2Z1bmN0
aW9uIHRlYXJkb3duKCkgeworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKworZnVuY3Rp
b24gdGVzdChkZXNjLCBmdW5jLCBleHBlY3RlZCkgeworICAgIGRlYnVnKGRlc2MpOworCisgICAg
dmFyIGV4YyA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KHgpIHsKKyAgICAgICAgZXhjID0geDsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWQgPT0gZ2wu
SU5WQUxJRF9PUEVSQVRJT04pIHsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGV4cGVj
dGVkKTsKKyAgICB9IGVsc2UgaWYgKGV4cGVjdGVkID09ICJleGNlcHRpb24iKSB7CisgICAgICAg
IGlmIChleGMpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoInRocmV3IGV4Y2VwdGlvbiIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24iKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgiQ2FsbGluZyB0ZXhJbWFn
ZTJEIHdpdGggbm8gV2ViR0xUZXh0dXJlIGJvdW5kIGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElP
TiIsCisgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCA2NCwgNjQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworICAgICB9LAorICAgICBnbC5JTlZBTElEX09QRVJBVElPTik7CisKK3Rlc3QoIkNhbGxp
bmcgdGV4U3ViSW1hZ2UyRCB3aXRoIG5vIFdlYkdMVGV4dHVyZSBib3VuZCBnZW5lcmF0ZXMgSU5W
QUxJRF9PUEVSQVRJT04iLAorICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBidWZmZXIg
PSBuZXcgVWludDhBcnJheSg0KTsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWZmZXIpOwor
ICAgICB9LAorICAgICBnbC5JTlZBTElEX09QRVJBVElPTik7CisKK3NldHVwKCk7CisKK3Rlc3Qo
IlBhc3NpbmcgYSBidWZmZXIgbm90IGxhcmdlIGVub3VnaCB0byB0ZXhJbWFnZTJEIHNob3VsZCBn
ZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiIsCisgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
dmFyIHRvb1NtYWxsID0gbmV3IFVpbnQ4QXJyYXkoNjQpOworICAgICAgICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDY0LCA2NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgdG9vU21hbGwpOworICAgICB9LAorICAgICBnbC5JTlZBTElEX09QRVJBVElPTik7
CisKK2lmIChjb250ZXh0VmVyc2lvbiA8IDIpIHsKKyAgICB0ZXN0KCJQYXNzaW5nIHRleEltYWdl
MkQgcGFyYW1ldGVyIGRhdGEgb2YgTnVtYmVyIHR5cGUgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlv
biIsCisgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDY0LCA2NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgNDIpOworICAgICAgICAgfSwKKyAgICAgICAgICJleGNlcHRpb24iKTsKK30gZWxzZSB7
CisgICAgdGVzdCgiUGFzc2luZyB0ZXhJbWFnZTJEIHBhcmFtZXRlciBkYXRhIG9mIE51bWJlciB0
eXBlIHNob3VsZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiIsCisgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LlJHQkEsIDY0LCA2NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgNDIpOworICAgICAg
ICAgfSwKKyAgICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKK30KKworaWYgKGNvbnRleHRW
ZXJzaW9uIDwgMikgeworICAgIHRlc3QoIlBhc3NpbmcgdGV4SW1hZ2UyRCBwYXJhbWV0ZXIgZGF0
YSBvZiBTdHJpbmcgdHlwZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiLAorICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCA2NCwgNjQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsICJub3QgYSBidWZm
ZXIiKTsKKyAgICAgICAgIH0sCisgICAgICAgICAiZXhjZXB0aW9uIik7Cit9IGVsc2UgeworICAg
IHRlc3QoIlBhc3NpbmcgdGV4SW1hZ2UyRCBwYXJhbWV0ZXIgZGF0YSBvZiBTdHJpbmcgdHlwZSBz
aG91bGQgZ2VuZXJhdGUgYW4gSU5WQUxJRF9PUEVSQVRJT04iLAorICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JB
LCA2NCwgNjQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsICJub3QgYSBidWZmZXIiKTsK
KyAgICAgICAgIH0sCisgICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3Rlc3Qo
IlBhc3NpbmcgYSBidWZmZXIgbm90IGxhcmdlIGVub3VnaCB0byB0ZXhTdWJJbWFnZTJEIHNob3Vs
ZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiIsCisgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdmFyIHRvb1NtYWxsID0gbmV3IFVpbnQ4QXJyYXkoNjQpOworICAgICAgICBnbC50ZXhT
dWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDY0LCA2NCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgdG9vU21hbGwpOworICAgICB9LAorICAgICBnbC5JTlZBTElEX09QRVJBVElP
Tik7CisKK2lmIChjb250ZXh0VmVyc2lvbiA8IDIpIHsKKyAgICB0ZXN0KCJQYXNzaW5nIHRleFN1
YkltYWdlMkQgcGFyYW1ldGVyIGRhdGEgb2YgTnVtYmVyIHR5cGUgc2hvdWxkIHRocm93IGEgVHlw
ZUVycm9yIiwKKyAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGdsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNjQsIDY0LCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCA0Mik7CisgICAgICAgICB9LAorICAgICAgICAgImV4Y2VwdGlvbiIpOworfSBlbHNl
IHsKKyAgICB0ZXN0KCJQYXNzaW5nIHRleFN1YkltYWdlMkQgcGFyYW1ldGVyIGRhdGEgb2YgTnVt
YmVyIHR5cGUgc2hvdWxkIGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9OIiwKKyAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgMCwgMCwgNjQsIDY0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCA0Mik7CisgICAg
ICAgICB9LAorICAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitpZiAoY29udGV4
dFZlcnNpb24gPCAyKSB7CisgICAgdGVzdCgiUGFzc2luZyB0ZXhTdWJJbWFnZTJEIHBhcmFtZXRl
ciBkYXRhIG9mIFN0cmluZyB0eXBlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIsCisgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIDY0LCA2NCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgIm5vdCBhIGJ1
ZmZlciIpOworICAgICAgICAgfSwKKyAgICAgICAgICJleGNlcHRpb24iKTsKK30gZWxzZSB7Cisg
ICAgdGVzdCgiUGFzc2luZyB0ZXhTdWJJbWFnZTJEIHBhcmFtZXRlciBkYXRhIG9mIFN0cmluZyB0
eXBlIHNob3VsZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiIsCisgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIDY0LCA2NCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgIm5vdCBhIGJ1ZmZlciIp
OworICAgICAgICAgfSwKKyAgICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKK30KKwordGVh
cmRvd24oKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
LWlucHV0LXZhbGlkYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWlucHV0LXZhbGlkYXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMDkxMDQyMmY1ZTUzMWRhNzgxOTg0ZjAyNWNkNzhlNGI2NjBh
NGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW5wdXQtdmFsaWRhdGlv
bi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb250
ZXh0VmVyc2lvbiA9IDE7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW5wdXQtdmFsaWRhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LXN1Yi1pbWFnZS0yZC1iYWQtYXJncy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy90ZXgtc3ViLWltYWdlLTJkLWJhZC1hcmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNi
ZDAwY2NlOWU0MDhmODkyNjJmZjI3NzJmNDM2Mjk3ZjhkNTk3MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL21pc2MvdGV4LXN1Yi1pbWFnZS0yZC1iYWQtYXJncy5odG1sCkBAIC0wLDAgKzEs
MTMzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGVzdGJlZCIgd2lkdGg9IjE2IiBoZWln
aHQ9IjE2Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVGVzdHMgdGV4
U3ViSW1hZ2UyRCB3aXRoIGJhZCBhcmd1bWVudHMnKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9u
KCk7Cit2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7CisKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoInRlc3RiZWQiKTsKK3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7Cit2YXIgbWF4VGV4dHVyZVNpemUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVf
U0laRSk7Cit2YXIgbWF4VGV4dHVyZUxldmVsID0gTWF0aC5mbG9vcihNYXRoLmxvZzIobWF4VGV4
dHVyZVNpemUpKSArIDE7CisKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Citn
bC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDEsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIGMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJubyBwcmV2aW91c2x5IGRlZmluZWQgdGV4dHVyZSBpbWFnZSIpOworZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBj
KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dXAgc2hvdWxkIHN1
Y2NlZWQiKTsKKworZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAxLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfVkFMVUUsICJ5ICsgaGVpZ2h0ID4gdGV4dHVyZSBoZWlnaHQiKTsKK2dsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
Yyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAieCArIHdpZHRo
ID4gdGV4dHVyZSB3aWR0aCIpOworZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAt
MSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibmVnYXRpdmUgeCIpOworZ2wudGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCAwLCAtMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibmVnYXRpdmUgeSIpOwor
Z2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAtMSwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LCAibmVnYXRpdmUgbGV2ZWwiKTsKK3Nob3VsZFRocm93KCJnbC50ZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpIik7Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIm51bGwgcGl4
ZWxzIik7CisKKy8vIEdMX0lOVkFMSURfVkFMVUUgbWF5IGJlIGdlbmVyYXRlZCBpZiBsZXZlbCBp
cyBncmVhdGVyIHRoYW4gbG9nIDIgbWF4LCB3aGVyZSBtYXggaXMgdGhlIHJldHVybmVkIHZhbHVl
IG9mIEdMX01BWF9URVhUVVJFX1NJWkUuCisvLyBHTF9JTlZBTElEX09QRVJBVElPTiBpcyBnZW5l
cmF0ZWQgaWYgdGhlIHRleHR1cmUgYXJyYXkgaGFzIG5vdCBiZWVuIGRlZmluZWQgYnkgYSBwcmV2
aW91cyAgZ2xUZXhJbWFnZTJEIG9yIGdsQ29weVRleEltYWdlMkQgb3BlcmF0aW9uIHdob3NlIGlu
dGVybmFsZm9ybWF0IG1hdGNoZXMgdGhlIGZvcm1hdCBvZiBnbFRleFN1YkltYWdlMkQuCitnbC50
ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIG1heFRleHR1cmVMZXZlbCArIDEsIDAsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgW2ds
LklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgInRvbyBoaWdoIGxldmVsIik7
CisKK2dsLnRleFN1YkltYWdlMkQoZ2wuRkxPQVQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIGMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAi
YmFkIHRhcmdldCIpOworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICAgIGdsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
Yyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiYmFkIHRh
cmdldCIpOworfQorZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiZ29vZCBhcmdzIik7CitnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBvcmlnaW5hbCIp
OworaWYgKGNvbnRleHRWZXJzaW9uIDwgMikgeworICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNCwgYyk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBl
IG5vdCBzYW1lIGFzIG9yaWdpbmFsIik7Cit9CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBjKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibWFrZSB0ZXh0dXJlIFJHQiIpOworZ2wudGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIGMp
Oword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJmb3JtYXQgc2FtZSBhcyBv
cmlnaW5hbCBSR0IiKTsKK2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBvcmlnaW5hbCBSR0IiKTsK
K2lmIChjb250ZXh0VmVyc2lvbiA8IDIpIHsKKyAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV82XzUsIGMpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBub3Qg
c2FtZSBhcyBvcmlnaW5hbCBSR0IiKTsKK30KK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm1ha2UgdGV4dHVyZSBSR0JBIFVOU0lHTkVEX0JZVEUi
KTsKK2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
ImZvcm1hdCBzYW1lIGFzIG9yaWdpbmFsIik7CitnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBvcmln
aW5hbCIpOworaWYgKGNvbnRleHRWZXJzaW9uIDwgMikgeworICAgIGdsLnRleFN1YkltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRf
NCwgYyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJ0eXBlIG5vdCBzYW1lIGFzIG9yaWdpbmFsIik7Cit9CisKKy8vIExhcmdlIGNhbnZhcyB3aWxs
IHRyaWdnZXIgR1BVLXRvLUdQVSBmYXN0IHBhdGggaW4gY2hyb21lLAorLy8gd2hpbGUgc21hbGwg
Y2FudmFzIHdpbGwgZ28gaW50byBub3JtYWwgcGF0aCwgaS5lLiByZWFkIHBpeGxlcyBmcm9tIGNh
bnZhcyB0aGVuIHVwbG9hZCB0byB0ZXh0dXJlLgordmFyIGxhcmdlQ2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitsYXJnZUNhbnZhcy53aWR0aCA9IDI1NzsKK2xhcmdl
Q2FudmFzLmhlaWdodCA9IDI1NzsKK3ZhciBsYXJnZUNhbnZhc0NvbnRleHQgPSBsYXJnZUNhbnZh
cy5nZXRDb250ZXh0KCIyZCIpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBsYXJnZUNhbnZhcyk7Cit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm1ha2UgdGV4dHVyZSBSR0JBIFVOU0lHTkVEX0JZ
VEUiKTsKK2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImZvcm1hdCBzYW1lIGFzIG9yaWdpbmFsIik7CitnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgYyk7Cit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBv
cmlnaW5hbCIpOworaWYgKGNvbnRleHRWZXJzaW9uIDwgMikgeworICAgIGdsLnRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfU0hPUlRfNF80
XzRfNCwgYyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJ0eXBlIG5vdCBzYW1lIGFzIG9yaWdpbmFsIik7Cit9CitnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGxhcmdlQ2Fu
dmFzKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZm9ybWF0IHNhbWUg
YXMgb3JpZ2luYWwiKTsKK2dsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwg
Z2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBsYXJnZUNhbnZhcyk7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZvcm1hdCBub3Qgc2FtZSBhcyBvcmlnaW5h
bCIpOworaWYgKGNvbnRleHRWZXJzaW9uIDwgMikgeworICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNCwg
bGFyZ2VDYW52YXMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAidHlwZSBub3Qgc2FtZSBhcyBvcmlnaW5hbCIpOworfQorCit2YXIgbWF4Q3ViZU1h
cFRleHR1cmVTaXplID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJ
WkUpOwordmFyIG1heEN1YmVNYXBUZXh0dXJlTGV2ZWwgPSBNYXRoLmZsb29yKE1hdGgubG9nMiht
YXhDdWJlTWFwVGV4dHVyZVNpemUpKSArIDE7Citmb3IgKHZhciBmID0gMDsgZiA8IDY7IGYrKykg
eworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9C
WVRFLCBjKTsKKyAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWCArIGYsIG1heEN1YmVNYXBUZXh0dXJlTGV2ZWwgKyAxLCAwLCAwLCBnbC5SR0IsIGdsLlVO
U0lHTkVEX0JZVEUsIGMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElE
X1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICJ0b28gaGlnaCBsZXZlbCIpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgt
c3ViLWltYWdlLTJkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1zdWItaW1hZ2UtMmQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZDcyOTQ2NjEzZDMyY2E5Y2VlZjA4ODk2OGJmMjlkMmY1NWNhYzRjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtc3ViLWltYWdlLTJkLmh0bWwKQEAgLTAs
MCArMSwxMDEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7Cit2
YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZmxvYXQgaW50ZW5z
aXR5ID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpLmE7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChpbnRlbnNpdHksIGludGVuc2l0eSwgaW50ZW5zaXR5LCAxLjApOworfQorPC9zY3JpcHQ+CisK
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIxIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdUZXN0
cyB0ZXhTdWJJbWFnZTJEIHVwbG9hZCBwYXRoIGZyb20gVWludDhBcnJheScpOworCit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImV4YW1wbGUiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK2dsLmRp
c2FibGUoZ2wuRElUSEVSKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICBn
bCwKKyAgICBbd3R1LnNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIsICJmc2hhZGVyIl0sCisgICAg
Wyd2UG9zaXRpb24nLCAndGV4Q29vcmQwJ10pOword3R1LnNldHVwVW5pdFF1YWQoZ2wpOwordmFy
IHRleHR1cmVXaWR0aCA9IDI1NjsKK3ZhciB0ZXh0dXJlSGVpZ2h0ID0gMTsKKwordmFyIHRleHR1
cmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworCit2YXIgdGV4
dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmUpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKKy8vIEFsbG9jYXRlIHRoZSB0ZXh0dXJlIG9iamVjdAorZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5BTFBIQSwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0LCAwLCBn
bC5BTFBIQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisvLyBQcmVwYXJlIHRoZSBpbWFnZSBk
YXRhCit2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJlV2lkdGgpOworZm9yICh2YXIg
aSA9IDA7IGkgPCB0ZXh0dXJlV2lkdGg7IGkrKykKKyAgICBhcnJheVtpXSA9IGk7CisvLyBGaWxs
IHRoZSB0ZXh0dXJlIG9iamVjdCB3aXRoIGRhdGEgLS0gdGhpcyBpcyBhY3R1YWxseSB0aGUgY29k
ZSBwYXRoIGJlaW5nIHRlc3RlZAorZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIGdsLkFMUEhBLCBnbC5VTlNJR05FRF9C
WVRFLCBhcnJheSk7CisKKy8vIENsZWFyIGFuZCBzZXQgdXAKK2dsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleHR1cmUpOworZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKK2dsLnVuaWZvcm0xaSh0
ZXh0dXJlTG9jLCAwKTsKKy8vIERyYXcgdGhlIHRleHR1cmUgdG8gdGhlIGZyYW1lIGJ1ZmZlcgor
Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworCisvLyBSZWFkIGJhY2sgdGhlIGZy
YW1lIGJ1ZmZlcgordmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVXaWR0aCAqIHRleHR1
cmVIZWlnaHQgKiA0KTsKK2dsLnJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJl
SGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworCisvLyBWZXJpZnkgdGhl
IGZyYW1lIGJ1ZmZlcidzIGNvbnRlbnRzCit2YXIgcGFzc2VkID0gdHJ1ZTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgdGV4dHVyZVdpZHRoOyBpKyspIHsKKyAgICB2YXIgdmFsID0gaTsKKyAgICBpZiAo
YnVmWzQgKiBpICsgMF0gIT0gdmFsIHx8CisgICAgICAgIGJ1Zls0ICogaSArIDFdICE9IHZhbCB8
fAorICAgICAgICBidWZbNCAqIGkgKyAyXSAhPSB2YWwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
cGl4ZWwgYXQgKCIgKyBpICsgIiwgMCkgd2FzICgiICsKKyAgICAgICAgICAgICAgICAgICBidWZb
NCAqIGkgKyAwXSArICIsICIgKworICAgICAgICAgICAgICAgICAgIGJ1Zls0ICogaSArIDFdICsg
IiwgIiArCisgICAgICAgICAgICAgICAgICAgYnVmWzQgKiBpICsgMl0gKyAiKSwgc2hvdWxkIGJl
ICgiICsKKyAgICAgICAgICAgICAgICAgICB2YWwgKyAiLCAiICsgdmFsICsgIiwgIiArIHZhbCAr
ICIpIik7CisgICAgICAgIHBhc3NlZCA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK2lmIChwYXNzZWQpCisgICAgdGVzdFBhc3NlZCgiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdGV4LXZpZGVvLXVzaW5nLXRleC11bml0LW5vbi16ZXJvLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9taXNjL3RleC12aWRlby11c2luZy10ZXgtdW5pdC1ub24temVyby5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlOWJhZDQzNDE0ZjJkZjg4MGU2NWQ5ZjI2MTRlYTFhNWZmOWI4ZWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9taXNjL3RleC12aWRlby11c2luZy10ZXgtdW5pdC1ub24temVyby5odG1s
CkBAIC0wLDAgKzEsMTkxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5UZXh0dXJlIHVwbG9hZGluZyBmcm9tIHZpZGVvIHRocm91Z2ggdGV4
IHVuaXQgMSBidWc8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGltZyBpZD0ic3Jj
LWltYWdlIj4KKzxzY3JpcHQgaWQ9InNoYWRlci1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICB1bmlmb3JtIHNhbXBsZXIy
RCB1VGV4dHVyZTA7CisgICAgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmUxOworCisgICAgdmFy
eWluZyB2ZWMyIHZVVjsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIHZlYzQgdGV4
dHVyZTBDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZTAsIHZVVik7CisgICAgICAgIHZlYzQgdGV4
dHVyZTFDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZTEsIHZVVik7CisKKyAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gbWl4KHRleHR1cmUwQ29sb3IsIHRleHR1cmUxQ29sb3IsIDAuNSk7CisgICAgfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJzaGFkZXItdnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KKyAgICBhdHRyaWJ1dGUgdmVjMyBhVmVydGV4UG9zaXRpb247CisgICAgYXR0cmlidXRlIHZl
YzIgYVRleHR1cmVDb29yZDsKKworICAgIHZhcnlpbmcgdmVjMiB2VVY7CisKKyAgICB2b2lkIG1h
aW4odm9pZCkgeworICAgICAgICB2VVYgPSBhVGV4dHVyZUNvb3JkOworICAgICAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoYVZlcnRleFBvc2l0aW9uLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorCis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworCisoYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgdmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICBkZXNjcmlwdGlvbigiUmVncmVzc2lvbiB0ZXN0IGZv
ciBjcmJ1Zy5jb20vNjc2NzE5Iik7CisKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgi
ZXhhbXBsZSIsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9KTsKKworICBpZiAoIWdsKSB7
CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIGZpbmlzaFRl
c3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dy
YW0oZ2wsIFsic2hhZGVyLXZzIiwgInNoYWRlci1mcyJdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbImFWZXJ0ZXhQb3NpdGlvbiIsICJhVGV4dHVyZUNvb3JkIl0sIFswLCAxXSk7
CisKKyAgaWYgKCFwcm9ncmFtKSB7CisgICAgdGVzdEZhaWxlZCgicHJvZ3JhbSBkb2VzIG5vdCBl
eGlzdCIpOworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgbG9j
MCA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVRleHR1cmUwIik7CisgIHZhciBs
b2MxID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1VGV4dHVyZTEiKTsKKyAgaWYg
KCFsb2MwIHx8ICFsb2MxKSB7CisgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIHF1ZXJ5IHVuaWZv
cm0gbG9jYXRpb25zIik7CisgICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorICBn
bC51bmlmb3JtMWkobG9jMCwgMCk7CisgIGdsLnVuaWZvcm0xaShsb2MxLCAxKTsKKworICB3dHUu
c2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAgLy8gTG9hZCB0ZXh0dXJlcworICB2YXIgaW1h
Z2VTcmMgPSAiZGF0YTp0eXBlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWdB
QUFBSUFDQVlBQUFEMGVOVDZBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNU
QUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEF3VkV4NFFyekhKSEFBQUFCbDBSVmgwUTI5dGJXVnVk
QUJEY21WaGRHVmtJSGRwZEdnZ1IwbE5VRmVCRGhjQUFCbTRTVVJCVkhqYTdkMTVlTjExbmVqeFQz
S1NuR3hOMnFicGt1NUpXd3Bka0lJc3p1Q3dXV3hsRXhGeDdrVmxlVVlGMU9IcVBNZ3ozQXN5ekFW
Um1hc2lpanJPUlIyZHVWNFoyZ0xLVXVnSWMxa0tMV2hadXFUUXRFMjZwbTNTN052OVE2Y1BlNXZm
U2RxMDUvVjZIdjZnN2U4c3YzUE85N3pQYi9uK2NxcHVmYm92QUlDc2ttc1ZBSUFBQUFBRUFBQWdB
QUFBQVFBQUNBQUFRQUFBQUFJQUFCQUFBSUFBQUFBRUFBQWdBQUFBQVFBQUNBQUFRQUFBQUFJQUFC
QUFBSUFBQUFBQkFBQUlBQUJBQUFBQUFnQUFFQUFBZ0FBQUFBUUFBQ0FBQUFBQkFBQUlBQUJBQUFB
QUFnQUFFQUFBZ0FBQUFBUUFBQ0FBQUFBQkFBQUNBQUFRQUFDQUFBQUFCQUFBSUFBQUFBRUFBQWdB
QUVBQUFBQUNBQUFRQUFDQUFBQUFCQUFBSUFBQUFBRUFBQWdBQUVBQUFBQUNBQUFFQUFBZ0FBQUFB
UUFBQ0FBQVFBQUFBQUlBQUJBQUFJQUFBQUFFQUFBZ0FBQUFBUUFBQ0FBQVFBQUFBQUlBQUJBQUFJ
QUFBQUFFQUFBSUFBQkFBQUFBQWdBQUVBQUFnQUFBQUFRQUFDQUFBQUFCQUFBSUFBQkFBQUFBQWdB
QUVBQUFnQUFBQUFRQUFDQUFBQUFCQUFBSUFBQVFBRllCQUFnQUFFQUFBQUFDQUFBUUFBQ0FBQUFB
QkFBQUlBQUFBQUVBQUFnQUFFQUFBQUFDQUFBUUFBQ0FBQUFBQkFBQUlBQUFBQUVBQUFnQUFCQUFB
SUFBQUFBRUFBQWdBQUFBQVFBQUNBQUFRQUFBQUFJQUFCQUFBSUFBQUFBRUFBQWdBQUFBQVFBQUNB
QUFRQUFBQUFJQUFCQUFBQ0FBQUFBQkFBQUlBQUJBQUFBQUFnQUFFQUFBZ0FBQUFBUUFBQ0FBQUFB
QkFBQUlBQUJBQUFBQUFnQUFFQUFBZ0FBQUFBUUFBQ0FBQUVBQUFBQUNBQUFRQUFDQUFBQUFCQUFB
SUFBQUFBRUFBQWdBQUVBQUFBQUNBQUFRQUFDQUFBQUFCQUFBSUFBQUFBRUFBQWdBQUVBQUFJQUFB
QUFFQUFBZ0FBQUFBUUFBQ0FBQVFBQUFBQUlBQUJBQUFJQUFBQUFFQUFBZ0FBQUFBUUFBQ0FBQVFB
QUFBQUlBQUJBQUFJQUFBQUFCWUJVQWdBQUFBQVFBQUNBQUFBQUJBQUFJQUFCQUFBQUFBZ0FBRUFB
QWdBQUFBQVFBQUNBQUFBQUJBQUFJQUFCQUFBQUFBZ0FBRUFBQWdBQUFBQUVBQUFnQUFFQUFBQUFD
QUFBUUFBQ0FBQUFBQkFBQUlBQUFBQUVBQUFnQUFFQUFBQUFDQUFBUUFBQ0FBQUFBQkFBQUlBQUFB
QUVBQU5rcTcwaDRFcHUvZWxKV3ZGampiM3ZHT3hiSWVrVjVPVEYzYkVuTXF5cU40LzcwWDFWWjJ0
aWFqUUVBd0pFcEovcGl4cWlpZlYvMjd4dFhHa2VOS29xOGxBM1lBZ0FPQTVsc3BiTGxoMnd5cGlR
djNsZFZ1dThMLzlpeEpWR2E5bFVsQUFBNG9xMzR3dkZXd2tGaUd3b0FDQUFBUUFBQUFBSUFBQkFB
QUlBQUFBQUVBQUF3WkprSEFJRER5dDZPN3ZqOWxwWllXZDhTSytxYlkyWDlYdk1IWkdzQURNWk1h
WmxlWDhEc2JRQ1o2KzdwalRVNzIySmwvZDQvL2RjU3EzZTBSbC9rV0RrQ0FJQWpSVU5UUjZ4czJC
c3IvdlJsLzJMRDNtanI3bnZMdi9MbEx3QUFPS0tjY05jTFZvSUFJS21SUmFtWU83WWtabzhwaWVt
amltTGNzSUlZVzFvUTVZV3BLTXpMamNLODNPanA2NHUycnQ1bzZleU5odWJPMk56VUVXdmZzSmx0
VDBldkZRa0pEU3ZJalROcmhzZTg4YVZ4MUtqaW1EdzhIYVhwVkpRV3BLS250eTlhdTNxaXNiVTc2
dloweEtXL1dtTU1RQUNRM0ZHakN1UDhZMGJGbWRYbE1YdHM2UUc5OE9tOFZBd3ZpaGhmbm80VFl0
aSt2K3Z1NlkzbG01dmp3ZFc3NHRlcnRnL29RUEMvUGxJZEg1OVRtV2paMnAydE1mOG5xNks5cHkr
angxQ1lseE1QWHpZbmFpcUtFaTMvZi82d1BhNTlZUDNiL2p6VDQwYmV6V0JmU2ZCUVg2bndVTnov
WU4zbjhWVWxjZlhKVlhGNmRYa1U1S1hlOGQva3B5SUs4MU14c3JnZ3hnMHJ5TG94QUFIQUFNaUp2
amovNklxNC9JU3hjZno0WVFQM3Bramx4aW1UeXVPVVNlVngvVjlNakh0ZjJoSGYvbitibzc2NUsr
UGJ2djZoMTJKZVZVblVWQlQzZTltYWl1SzQ0WXhKY2NNakd6SjZERGVlTVRueGwvL2FIYTF4L1VP
dmVmUHhKbU5LOHVMMkJkVngxclFSL2ZzTTUyVGZHTURRWVI2QXc5VHBVOHZqMGN2bnhQZk9uejZn
SC95M0tpNUl4WDg5Ymt6ODdxK09qZXMrT0NFS01uekh0SFgzeGVmdVd4ZnRYVDJKbHYvMGNhUGp6
eWNuZjc1blZKZkhwK2FOU2ZiWXUzcisrTmk3Kzd3QjJlZXNtdko0N01xNS9mN3kvOCt2OEd3YkF4
QUFKRlNlem8xdm4xTWRQLy9FekpnNXV1U2czVzlSZmlxKytJSHg4ZHZMNXNUUmxVVVozZGJMMjl2
aTVzZnFrcjFoYzNQampvVTFNU3pCS0RTaU1CWGZXbGlkK0hIZnRIUkR2THFqelp1UWZUNDVkMVQ4
NDRVelluaFJmckpmOERuWk9RWWdBT2luNlJXRjhadlB6SW1MWmxjZXNzZHdWR1Z4TEw1MFZzeWZO
anlqMjdsbjViWjRjUFhPUk11T0wwL0gzOCtmMHUvbHZyR2dPa2FYSnR2bnV1U1ZuZkh6RjdaN0U3
TFBSNDhaR2Q5Y1dCTjVxZVREYUU0V2p3RUlBQTdRU1JOS1kvR2xzMkx5aU1KRC9saUtDMUx4NHd1
bnh5VnpSbVYwTzE5K2NIMXMzTjJlYU5tUHphNk1oVE1PZkpQckorYU1pZ1ZIalV4MFg2L3Zhb3V2
L0dhOU55SDduRGloTktPdFNjWUFCQUFIWk42NGt2anB4NCtLc3NLaGM4eG1LamMzYmw4d05SYk1T
UDRyb0ttak42NWF0QzY2ZXBJZFlmejFEMCtKVWNYN1h5Y1R5d3ZpYTJkT1RuUWZuZDA5OGZsRjYy
SnZwNk9nMzZxM056dlhTVms2Tis0NmIxcWszK1VvLzM1dEFjako3akVBQWNCN3FCcVdIL2Q4L0tn
b1RRKzlFelpTdWJseDU3blRZczZZNHNTM3NhS2hKYjcrdTQySmxoMVpYQkRmM00rdnNKem9pKytj
VXhQREVnNmMvM1BaeHZqOWxsWnZ4SGVRcllkQzNuYjIxQmhYbGg2UTI4b3hCaUFBZUNkNU9SRS8v
T2owR0ZtY1AyUWZZMkYrS3U0NmYxb1U1eWMvbXZuN1R6ZkVzdlc3RXkzN29Xa2o0cE56MzMwejVO
VW5WOFdKRThzUzNmWWpheHZqUjg5dDlVWjh0d0RJMGdJNC81aUIyK3lkczU5TkFOa3lCbkNJdm1P
c2dxSHI2cFBIeFhGVm1aM2UwOXZiRzh0ZTJ4T1AxZTZPNXpidmpZYm16dGpkMWgzcHZOeW9LTTZM
NDZwSzQ0eWE0WEhlekpIdk9uSEovbFNQTElyclBqZ3hibHlhN01qK3lNbUpMeXhaRjQ5ZVBpZkdE
T3YvTDZ1Ynpwd2NUMjVvaW8xN090LzA1N05HRjhXWC8zeDhvb2UwZVU5SC9QVUQ5dnZiQWpDNGNv
d0JDQURlcW1wWWZseHp5dmlNYm1QWit0MXh3OE92eDJ1N085NzJkOTFkdmRHeXB6UHE5alRHb2xj
YTQvYmZiWXJienA0U1o5U01TSFJmbjU0M0puNjZjbXZVTm5Za1dyNnhyU2Urc0tRMmZubkp6RWps
OW0vRFZHazZMNzU5VGsxODdKOWYzbmVGc0hRcUorNDhkMXFpQWEyN3B6ZXVYcnd1ZHJmM2VDTys1
eFlBQ1pENUZnQmpBQUtBdC9qaUI4WkhjVUh5ZzR4dVhWWVhkejdkY09DL2VKczY0MU8vV2gxZk8y
dHlYSEhDdUg3ZlgzNHFONjc5c3dseHpaTGF4SS81UCtxYTQ4Nm42dU5MZnphaDM4dWVOTEVzUG5m
aXVQaitzMXNpSXVKdlQ1OFlNeXFUN1pmODFwT2JZdm5tdmYxZTdyMm1pRDNVMCswT2hsN2YvMi9T
MDlzYnl6ZnRqY2ZYNzQ2bjY1cGlXMHRYN0dqdGlzN3V2aWd2ekl1cXNvS1lQYVk0VHBsVUZtZldE
SS9oUmZudnVRVWdHOGNBQkVEV0cxbVVpb3RtSjkvUGVNZVRtL3Ixd2QvM2l5NXk0c1pITjhURThu
VE1uOTcvVStiT21Ua3libm04THJic1RUNWQ2RGVlMkJRblR5cUxreExzdC8vS3FSUGlzZlc3WTB4
cFFWeVdjTGEvSjE3YkhkOTlxajVjYmxRQTlNZGp0YnZpbHNmcll2V09kejZ0ZFdkYmQreHM2NDQv
YkcyTlgvNStSNlJ5SXM2ZVBpSStlK0pZWXdDSGpJTUFoNkNQelJvVlJmbkp5bi9GNXVhNDQ4bE5p
ZSs3TDNMaStvZGVUelJWYjM0cU55N084THpndnNpSnF4ZXRpOGJXL2c4Z2hmbXB1UE84YVhISHd1
ckl6ZTMvVzN2YjNzNjRlbkh0dnQwSTdPZTFzZ3NnZW5wNzQ3cmZybzlMZjdYbVhiLzgzM0c1dm9n
SDEreUs4My8raWpFQUFjQWJLN29pOGJJM1AxYVg4UmZZbHIxZGNlOUx5V2JwVzVod3NwMDNhdGpi
RmYvdGdXU2JFWThaWFpMb0ZLMmUzdDc0NHBMYTJOblc3UTFvQzhDQlBmL2Uzcmg2Y2UyZ3pCQ1o3
V01BQWlBcmpTaE14YnlxWlBON3Y3S3RKZEcrNjNleXRIWlhvdVhtakMyTk1TV1o3MWw2cEhaUC9H
aDV3MEZiNzNjKzNSQlBiR2p5QnV6WEw4WHM5by9QYjQwbHJ6WWFBd1pwREVBQVpKMFR4cGNtMm53
ZEVmSHcybDBEOWpqK3NEWDU1RGZ6eHBjT3lHTzQ1Ykc2ZUxGaDc2Q3Y4MmMzTnNVM245amt6ZGZ2
TFFEWm13Q3ZOYmJGcmNzMkdnTUdlUXhBQUdTVjR6SzRyT2V6bTVvSDdISHNiRTErRU0rOHFvRzVO
R2wzWDhUbkY2Mk41dmJCMnl6ZjJOb1ZWeTFhNTRBMld3RDY5K3YvdVMzUjBkTm5EQmprTVlEQlpU
dk5FRk16TXZtRlB2NzVFMGNQaWVjd2RRQXZWckpoZDJkODlhSFg0bnZuVHgrVXgzcnRBN1hSNElq
bFpBR1FwUVhRMnRrZC8zZlZEbVBBUVJvRHNBVWdhMHdzVHgvMnoyRkNlY0dBM3Q1OXJ6VEdMMS9j
TnVDUDg0ZlBOc1NqdFh1ODZXd0Q2SmYvMk5BVXpZTjRjU2hqQUFJZ1M0MHB6VC9zbjhQb2tvRi9E
amM4L0hxczJUNXdGK1Y1b2I0NS92NXgwNWJTZnl2cjl4b0REc0VZZ0FBNDRwWGtwdzc3NTFBOENN
K2h2YWN2UG52ZjJtanR6SHg2M3FiMjd2ajhvblhSYmI4L1NRS2dvY1VZY0FqR0FBVEFFYTh3Ly9C
L1NZb0c2VG1zMmRrZS8vWnk1dnRlSDFqZEdIVnZ1WEFRU1dUbmhFbWI5blFZQXc3UkdJQUFZSWpM
U3czTzIrcllzY1h4OGRtWnp6SjI4WnhSY2NwRVJ5bG4vUFUvQU4vL1JYbUhYMFEwZGJoSTFLRWFB
eEFBUjdTMnJsNHI0UjJVcFhQakJ4ZE1UM3k1MGpkSzVlYkduZWZWeE1naW15a3pHdVFIb0FESzBv
ZmZhOUE4eUFGZ0RFQUFaS25XTHI4dTNza2RDMnRpMHZDQk83Vm83TEIwZlBmY2FkbDdMdHNBS0Jp
QVgrOWxoWWZmbWNpRGRmNi9NUUFCa09XMk9TZjliUzQvZmt3c0dJVDV4VStySGg3WG5GSmxCU2VV
emt0RlRvYW5BczRZVldSRkdnTTRSRXdFTk1SczNOTVJjOGNsbTBiejJPODhIenRhajZ5TDJjd1pV
eHczbkQ1eDBHNy9iMDZkRU05c2JCNncrZE96VFZGK2JyUjJKWStBMldOS3JFUmpBTFlBRUJHeGZs
ZDc0bVZualNrK290WkZhVUZ1M0gzQjlFam5EZDUrNHJ4VWJ0eDEvclFZWHBpOXh3UDA5Q2JmNTF5
ZXp1dzN4SWtUSEl4cERFQUFFQkVSS3pMNEpYcWtEYWJmV2xnZGt3L0NsS0pWWmVuNDlqazFXWHM4
UUVjR0V5S016bURTbXZGbEJYSGlCQmVOTVFZZ0FJaUlpT2N6K1BCZk5IdFV4dnRraDRyUEhEYzZv
MnVpOTlkWjAwYkU1MDRhTjJpMzM5V1QvRmQyWVdwd1Q1WEw1S0N6bW9yaysvQS9PYmN5OFZYdmpB
RkgvaGlBQU1nNk85dTZZMlY5c2l0NlRTZ3ZqQVV6Umg2U3h6MXJkRkg4NHVLakJ1eTIvdnNaa3hJ
dCsxcGpXelMySnB2azU3b1BUb2pqeGczT1B1bk83dVFCTUc3WTRNNnJ2cjBsK1VGblNYOXhWZzNM
ajgrZU9OWUgzaGlBQU9DTmxyelNtSGpadi92UTVCaFdjUEJlMWhrVmhmRzljMnZpdDUrWkhYOVJQ
VHpqMnl2Si8rTisvOElFVTRsMjlmVEdOVXRxNDhzUHZwYm92Z3Z5VXZIOTg2ZEZXWHJnMTkrZURN
NGQvOERrc2tGOURSdWFrOCtLdUhER2lDanM1K21BT2RFWHQ1MDlOWW9MSElOc0RFQUE4Q2EvZm1s
SHRDZmNMRHQyV0RwKzlOSHBnNzdaK1AzalMrTW5GMDZQcFZmTWlRdG1qUnF3VGJuZlhEQTFwbzVN
dGxuNUg1N2NGQzgwdE1URDYzYkh6MVp1VFhRYkU0Y1h4ajk4cEdiQTE5ZU9ESDVsWDNYeXVDaFBE
OTVIZGUzTzVBZWRWWlFVeEsxblR6M3dCZnI2NG82RjFYSG10QkUrNk1ZQUJBQnYrN0pvN1k1N1g5
cVplUGxUcHc2UGY3bGtab3d2RzloTnh5TUtVM0hadk5HeDlQTFpjZCtscytMc0dTTUg5RU4vNmZz
cTQ3eGprazMxdTN4alUzem5xZnA5LzMvVG94dGkzWTVrVncvODhJeVJjZm54WXdaMDNkVmxNSC84
bEJGRnNmU0t1WEhOeWVQaStLcVNxQ2pLaTRIOGdmZnkxc3d1Ym5QeG5NcTQ1VU9UWTMvVHYwOHNM
NGhmWGpJekxwNDcyb2ZjR01BUVlCdmNFUFhkcHpiSGhiTXFFbTBLajRoNC84U3lXSGJsM1BqK013
M3hzNVZiWTN2Q2M0T3JSNlRqMUNubHNXREdpRGhsVXRtZ3pmRjlUR1ZSM0hUbTVFVExOcmQzeHpW
TGFxUHZEUmVuYWUvcGk2c1dyNHNsbjVxVjZEVENHMDZmR01zM05jY2Z0ZzdNSllqWDdtakxhUGx4
WmVtNC9yVCtIUmN4L3JabkR1amZQYld4T2VQbmQ5bnhZK09EVThyajV5OXNqY2RxOTBSOWMwZjA5
VVdNS1MySW1aVkZjZTdNaXBnL2ZVUVVGNWgrMlJqdzNqWi85YVNEdnE2VDN1ZUJmc1lFQVAzOHhk
Z1pkejVkSDE4NU5ma2tPTVVGcWZqeXFSUGlTeCtvaWljM05NWFRkVTJ4YW10cnJOL1ZGazN0UGJH
M3N5ZDYraUtLOG5LanRDQTN4cFdsWTN4WlFjd1lWUlN6UnBmRXNlTktvcW9zUGVqUHRUZy9KMzZR
Y0w5L1JNVGZQdko2YkdwNiszN3NsN2ExeGRmL2ZWUDhqd1Joa2M1THhROHVtQmJ6ZjdJcVdnWmdi
dmJsbTV1SDdIdHRjMU5uck5uZUdqTXFNenVIdkthaUtHNDhjMHJjZUtiUHJ6RUFBVUJHN255cVB1
WlBHNUY0VnJCOUwzSXFOMDZySGg2bkRkRURkRzcvY0hYaTA4a1d2N3dqZnYwZW0wcnZmclloVHFz
dWp3OU83Zjl6bnpLaUtMNjFzRG8rdDJoZHhzL3htWTNOMGRyWk0yUi9BUzk2WldmOFRhVkpaSXdC
WkJNN2I0YXdydDZJSys1ZGsvaTB0c1BCWHg1YkdSK2RsV3kvLytZOUhYSGRRL3M1NGo4bko3NTBm
MjNpZFhqdTBSWHhxZU15MzJmZDN0MFhqNjdiTldSZmgxKzh1QzA2dWwyRXhoaUFBR0RJcUcvdWlr
Ly9hazAwdHg5NTgzdlBIRlVVTjUrVmJMOS9UMjl2Zk9uKzJtanEyUC9tK1cwdDNZbFBEWXlJdVBH
TVNYRk1aZVlYcmZueGMxdUc3R3V4cmFVNy91WDMydy82L2Q3OVRMMFBlUmFQQVFnQTltTkZRMHY4
NWIrK0dydmJqcHlyaEJYbDVjVGRGMHlMb29UNy9lOStka3UvRGw1N2VOM3UrT21LWkYvQWhmbXAr
TUVGMDZNb3c4dmZQbC9mRXI5WjNUaGtYNVBiZjdmcG9QN1N2TytsSFhIelkzVSs0Rms2QmlBQTZN
Y0E4SkY3WG9yVjIxdVBpT2R6MjRlbnhyUlJ5Zlk1cjlxeU43Nys3eHY3dmR4TlMrdGlUY0wxVjFO
UkZMY3ZtSnJ4ODc3K29kZWl2cWxqU0w0bXU5dDc0cS92WHgrOXZiMkRmbC8zdnJROXZuQi9iVVJP
amc5M2xvNEJDQUQ2NGZYZEhmR1JlMWJGUHoyL0phTXJ1QTIwcnA3ZVdQVHlqampubmxVSDlPOHZt
VE1xTHBwZG1laStXanQ3NHFyRjZ5TEo5V3M2ZXZyaTZzWHJFdS9ydm5CV1pYeHk3cWlNMXRYMjF1
NzRMLy82NnBDTmdLWHI5OFRYQnZsWCtZK1hOOFFYbDlSR3J5bnJzM1lNUUFDUVFGdDNYOXp3eUlZ
NDk2Y3Z4Vk4xZXc3cFkxbmYyQmEzTGF1TGsrNWFHVmN0cm8yVkRmdWZVR1pHUldIODNZZW1KTDdQ
V3g2dmk5ckc1RitlTDI5dmkxdVhiVXk4L00xblRZa1pGWmxkb1hETnp2WlkrTDlYRGRuZEFUOSti
bXQ4OWJmcm8zT0FEd3JjMjlFZFZ5MWFHemN1clh2VG5BMWsxeGpBME9FMHdNUFVpMXRhNDZKZnZC
b25UU2lOdnpweFhKeFJYUjRGZVlOL2lsbmQ3dmI0emVyR3VQL1Z4bGpSenc5N1lWNU8zSDNCOU1T
bndpMWR0eXZ1V2JrdDQrZndvK1ZiNHZUcTRZbm1MUzh1U01YZEYweVBCZmVzaXZZTUxxTzd2YlU3
cnZ5M3RYRjhWVWxjZWNMWU9HdmEwSm9rNTJjdmJJOVZXMXZqR3d1bXh0R2pNNzlBMHYydjdveXZM
ZDBROWMzMllXZnpHSUFBWUFBOXMybHZQTE5wYll3b1RNVzVSMWZFR2RYbGNjcWtzaWhORDh4THU2
T2xNMWJVNzQwblgyK0tKMTdmRTJzeW1EZisxdmxURWs4MnM2T2xNNjU5WVAzQXJMUS9uUnE0OUlv
NVVWSFMvNmxTWjFRV3g2M3pwOFMxR1p4WjhKK2VyMitKNXhmWFJtRmVUcHc0WVZpOGY4S3dtRjVS
RkpPR3A2T3lKRC9LMDZrb3lNdU4vTlRCMzFpM3NxRWw1di9UcXJqd21JcTQ4djFqWTg3WS9wMkwz
dG5kRXcrdTNoVS9YTjRRTDI2eDM5b1l3RkNUVTNYcjAvYkVIV0ZTT1JFeksvODRrOWZNMGNVeHFU
d2RZMHJ6WTNScGZwUVVwQ0tkeW8xMFhrNzA5a1YwZFBkR1cxZHY3R2p0aWgwdFhiRzVxVFBXTjda
SGJXTmJyTnJhK280ejdKR2RwZzVQeDJuVjVURnZmR2xVanlpTXFySjBsQmFrSXAyWEUyMWR2Ykdu
dlNmcTlyVEhxOXZiNHFtNnBsaTJmcytBektLSU1RQUJBQUFNRUFjQkFvQUFBQUFFQUFBZ0FBQUFB
UUFBQ0FBQVFBQUFBQUlBQUJBQUFJQUFBQUFFQUFBZ0FBQUFBUUFBQ0FBQVFBQUFBQUlBQUJBQUFJ
QUFBQUFCQUFBSUFBQkFBQUFBQWdBQUVBQUFnQUFBQUFRQUFDQUFBQUFCQUFBSUFBQkFBQUFBQWdB
QUVBQUFnQUFBQUFRQUFDQUFBQUFCQUFBQ0FBQVFBQUNBQUFBQUJBQUFJQUFBQUFFQUFBZ0FBRUFB
QUFBQ0FBQVFBQUNBQUFBQUJBQUFJQUFBQUFFQUFBZ0FBRUFBQUFBQ0FBQUVBQUFnQUFBQUFRQUFD
QUFBUUFBQUFBSUFBQkFBQUlBQUFBQUVBQUFnQUFBQUFRQUFDQUFBUUFBQUFBSUFBQkFBQUlBQUFB
QUVBQUFJQUFCQUFBQUFBZ0FBRUFBQWdBQUFBQVFBQUNBQUFBQUJBQUFJQUFCQUFBQUFBZ0FBRUFB
QWdBQUFBQVFBQUNBQUFBQUJBQUFJQUFCQUFBQ0FBQUFBQkFBQUlBQUFBQUVBQUFnQUFFQUFBQUFD
QUFBUUFBQ0FBQUFBQkFBQUlBQUFBQUVBQUFnQUFFQUFBQUFDQUFBUUFBQ0FBQUFBQVFBQUNBQUFR
QUFBQUFJQUFCQUFBSUFBQUFBRUFBQWdBQUFBQVFBQUNBQUFRQUFBQUFJQUFCQUFBSUFBQUFBRUFB
QWdBQUFBQVFBQUFnQUFFQUFBZ0FBQUFBUUFBQ0FBQUFBQkFBQUlBQUJBQUFBQUFnQUFFQUFBZ0FB
QUFBUUFBQ0FBQUFBQkFBQUlBQUJBQUFBQUFnQUFCQUFBSUFBQUFBRUFBQWdBQUVBQUFBQUNBQUFR
QUFDQUFBQUFCQUFBSUFBQUFBRUFBQWdBQUVBQUFBQUNBQUFRQUFDQUFBQUFCQUFBQ0FBQVFBQUFB
QUlBQUJBQUFJQUFBQUFFQUFBZ0FBQUFBUUFBQ0FBQVFBQUFBQUlBQUJBQUFJQUFBQUFFQUFBZ0FB
QUFBUUFBQ0FBQVFBQUFnQUFBQUFRQUFDQUFBQUFCQUFBSUFBQkFBQUFBQWdBQUVBQUFnQUFBQUFR
QUFDQUFBQUFCQUFBSUFBQkFBQUFBQWdBQUVBQUFnQUFBQUFFQUFBZ0FBRUFBQUFBQ0FBQVFBQUNB
QUFBQUJBQUFJQUFBQUFFQUFBZ0FBRUFBQUFBQ0FBQVFBQUNBQUFBQUJBQUFJQUFBQUFFQUFBSUFB
QkFBQUlBQUFBQUVBQUFnQUFBQUFRQUFDQUFBUUFBQUFBSUFBQkFBQUlBQUFBQUVBQUFnQUFBQUFR
QUFDQUFBUUFBQUFBSUFBQVFBQUNBQUFBQUJBQUFJQUFCQUFBQUFBZ0FBRUFBQWdBQUFBQVFBQUNB
QUFBQUJBQUFJQUFCQUFBQUFBZ0FBRUFBQWdBQUFBTjdvL3dNUEtJOUxXT1ZnaWdBQUFBQkpSVTVF
cmtKZ2dnPT0iOworICB2YXIgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNyYy1pbWFnZSIpOworICBpbWFnZUVsZW1lbnQuc3JjID0gaW1hZ2VTcmM7CisgIGF3YWl0IGlt
YWdlRWxlbWVudC5kZWNvZGUoKTsKKworICB2YXIgcmVzb3VyY2VQYXRoID0gIi4uLy4uLy4uL3Jl
c291cmNlcy8iOworCisgIHZhciB2aWRlb3MgPSBbCisgICAgeyBzcmM6IHJlc291cmNlUGF0aCAr
ICJyZWQtZ3JlZW4ubXA0IiwKKyAgICAgIHR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40
MkUwMUUsIG1wNGEuNDAuMiInIH0sCisgICAgeyBzcmM6IHJlc291cmNlUGF0aCArICJyZWQtZ3Jl
ZW4ud2VibXZwOC53ZWJtIiwKKyAgICAgIHR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwg
dm9yYmlzIicgfSwKKyAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi5idDYwMS52
cDkud2VibSIsCisgICAgICB0eXBlOiAndmlkZW8vd2VibTsgY29kZWNzPSJ2cDkiJyB9LAorICAg
IHsgc3JjOiByZXNvdXJjZVBhdGggKyAicmVkLWdyZWVuLnRoZW9yYS5vZ3YiLAorICAgICAgdHlw
ZTogJ3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInIH0sCisgIF07CisgIHZhciBj
dXJyZW50VmlkZW8gPSBudWxsOworCisgIGZvciAoY29uc3QgaW5mbyBvZiB2aWRlb3MpIHsKKyAg
ICBjdXJyZW50VmlkZW8gPSBpbmZvOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGlu
ZzogIiArIGluZm8udHlwZSk7CisgICAgY29uc3QgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ2aWRlbyIpOworICAgIHZpZGVvLm11dGVkID0gdHJ1ZTsKKyAgICB2YXIgY2FuUGxheSA9
IHRydWU7CisgICAgaWYgKCF2aWRlby5jYW5QbGF5VHlwZSkgeworICAgICAgdGVzdEZhaWxlZCgi
dmlkZW8uY2FuUGxheVR5cGUgcmVxdWlyZWQgbWV0aG9kIG1pc3NpbmciKTsKKyAgICAgIGNvbnRp
bnVlOworICAgIH0KKyAgICBpZighdmlkZW8uY2FuUGxheVR5cGUoaW5mby50eXBlKS5yZXBsYWNl
KC9uby8sICcnKSkgeworICAgICAgZGVidWcoaW5mby50eXBlICsgIiB1bnN1cHBvcnRlZCIpOwor
ICAgICAgY29udGludWU7CisgICAgfQorICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlk
ZW8pOworICAgIHZpZGVvLnR5cGUgPSBpbmZvLnR5cGU7CisgICAgdmlkZW8uc3JjID0gaW5mby5z
cmM7CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzID0+IHsKKyAgICAgIHd0dS5zdGFydFBsYXlp
bmdBbmRXYWl0Rm9yVmlkZW8odmlkZW8sIHJlcyk7CisgICAgfSk7CisgICAgdmlkZW8ucGF1c2Uo
KTsKKworICAgIHZhciB0ZXh0dXJlMCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbyk7
CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxU
RVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisKKyAg
ICB2YXIgdGV4dHVyZTEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZTEpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1hZ2VFbGVtZW50KTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKworICAg
IC8vIDwtLSBCZWdpbiBPYnNlcnZlZCAtLT4KKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRV
UkUxKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMSk7CisKKyAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlMCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbyk7CisKKyAgICB3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFsyNTUsIDAsIDI1NSwgMjU1XSk7CisKKyAgICB2YXIg
b2JzZXJ2ZWRQaXhlbHMgPSBuZXcgVWludDhBcnJheSg2NDAgKiA0ODAgKiA0KTsKKyAgICBnbC5y
ZWFkUGl4ZWxzKDAsIDAsIDY0MCwgNDgwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBvYnNl
cnZlZFBpeGVscyk7CisgICAgLy8gPC0tIEVuZCBPYnNlcnZlZCAtLT4KKworICAgIC8vIDwtLSBC
ZWdpbiBFeHBlY3RlZCAtLT4KKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMCk7CisgICAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCB2aWRlbyk7CisKKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMSk7CisKKyAgICB3dHUuY2xlYXJBbmRE
cmF3VW5pdFF1YWQoZ2wsIFsyNTUsIDAsIDI1NSwgMjU1XSk7CisKKyAgICB2YXIgZXhwZWN0ZWRQ
aXhlbHMgPSBuZXcgVWludDhBcnJheSg2NDAgKiA0ODAgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIDY0MCwgNDgwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBleHBlY3RlZFBpeGVs
cyk7CisgICAgLy8gPC0tIEVuZCBFeHBlY3RlZCAtLT4KKworICAgIC8vIENvbXBhcmUgcmVzdWx0
cworICAgIGNvbnN0IHRvbGVyYW5jZSA9IDE7CisgICAgdmFyIG51bURpZmZlcmVudFBpeGVscyA9
IHd0dS5jb21wYXJlUGl4ZWxzKG9ic2VydmVkUGl4ZWxzLCBleHBlY3RlZFBpeGVscywgdG9sZXJh
bmNlLCB1bmRlZmluZWQpOworICAgIGlmIChudW1EaWZmZXJlbnRQaXhlbHMpIHsKKyAgICAgIHRl
c3RGYWlsZWQoIlRleHR1cmUgc3RhdGVzIHdlcmUgaW5jb3JyZWN0IGZvciAiICsgY3VycmVudFZp
ZGVvLnR5cGUgKworICAgICAgICAgICAgICAgICIsIHJlbmRlcmluZyB3YXMgd3Jvbmc6IGZvdW5k
ICIgKyBudW1EaWZmZXJlbnRQaXhlbHMgKyAiIGRpZmZlcmluZyBwaXhlbHMiKTsKKyAgICB9IGVs
c2UgeworICAgICAgdGVzdFBhc3NlZChgVGV4dHVyZSBzdGF0ZXMgd2VyZSBjb3JyZWN0ICsvLSR7
dG9sZXJhbmNlfSwgcmVuZGVyaW5nIGFzIGV4cGVjdGVkYCk7CisgICAgfQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgfQorCisgIGRlYnVnKCIiKTsKKyAgZmlu
aXNoVGVzdCgpOworfSkoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9taXNjL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNj
L3RleHBhcmFtZXRlci10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZlMzM4NzRjZjY5Nzg3NTA0Njhi
M2UzYTAxNjNjZDQ2OTc3OTI2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
cGFyYW1ldGVyLXRlc3QuaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4UGFyYW1ldGVyIGNv
bmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJjYW52YXNfZHJhd2luZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj48L2NhbnZhcz4KKzxj
YW52YXMgaWQ9ImNhbnZhc190ZXh0dXJlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0cyBUZXhQYXJhbWV0ZXIg
d29ya3MgYXMgZXhwZWN0ZWQiKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzX2RyYXdpbmciKTsKK3Zh
ciBjYW52YXNfdGV4dHVyZSA9IG51bGw7Cit2YXIgdGV4UGFyYW0gPSBbCisgICAgZ2wuUkVQRUFU
LAorICAgIGdsLkNMQU1QX1RPX0VER0UsCisgICAgZ2wuTUlSUk9SRURfUkVQRUFULAorXTsKK3Zh
ciBjb2xvciA9IFsyMDAsIDAsIDI1NCwgMjU1XTsKK3ZhciB0ZXh0dXJlcyA9IFtdOworCitpZiAo
IWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwor
fSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAg
d3R1LnNldHVwVGV4dHVyZWRRdWFkV2l0aFRleENvb3JkcyhnbCwgWy0yLjUsIC0yLjVdLCBbMy41
LCAzLjVdKTsKKworICAgIHNldHVwQ2FudmFzVGV4dHVyZSgpOworICAgIHNldHVwVGV4dHVyZXMo
KTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGV4UGFyYW0ubGVuZ3RoOyArK2lpKSB7Cisg
ICAgICAgIHJ1bkRyYXdpbmdUZXN0KHRleHR1cmVzW2lpXSwgdGV4UGFyYW1baWldKTsKKyAgICB9
CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3Vs
ZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gc2V0dXBDYW52YXNUZXh0dXJlKCkgewor
ICAgIGNhbnZhc190ZXh0dXJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhc190ZXh0
dXJlIik7CisgICAgdmFyIGN0eDJkID0gY2FudmFzX3RleHR1cmUuZ2V0Q29udGV4dCgiMmQiKTsK
KyAgICBjdHgyZC5maWxsU3R5bGUgPSAicmdiYSgiICsgY29sb3JbMF0gKyAiLCIgKyBjb2xvclsx
XSArICIsIiArIGNvbG9yWzJdICsgIiwiICsgY29sb3JbM10gKyAiKSI7CisgICAgY3R4MmQuZmls
bFJlY3QoMCwgMCwgMSwgMSk7Cit9CisKK2Z1bmN0aW9uIHNldHVwVGV4dHVyZXMoKSB7CisgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IHRleFBhcmFtLmxlbmd0aDsgKytpaSkgeworICAgICAgICB2
YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgY2FudmFzX3RleHR1
cmUpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgdGV4UGFyYW1b
aWldKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X1dSQVBfVCwgdGV4UGFyYW1baWldKTsKKyAgICAgICAgdGV4dHVyZXNbaWldID0gdGV4dHVyZTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkRyYXdpbmdUZXN0KHRleHR1cmUsIHBhcmFtKSB7Cisg
ICAgZ2wuY2xlYXJDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Nik7CisKKyAgICBjaGVja1BpeGVscyhwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUGl4ZWxz
KHBhcmFtKSB7CisgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KDEyICogMTIgKiA0KTsKKyAg
ICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEyLCAxMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
YnVmKTsKKyAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwg
MTI7ICsreXkpIHsKKyAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IDEyOyArK3h4KSB7Cisg
ICAgICAgICAgICB2YXIgZWMgPSBbMCwgMCwgMCwgMF07CisgICAgICAgICAgICBzd2l0Y2ggKHBh
cmFtKSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5SRVBFQVQ6CisgICAgICAgICAgICAgICAg
ICAgIGlmICh4eCAlIDIgPT0gMSAmJiB5eSAlIDIgPT0gMSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZWMgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLkNMQU1QX1RPX0VER0U6CisgICAg
ICAgICAgICAgICAgICAgIGlmICh4eCA8IDYgJiYgeXkgPCA2KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlYyA9IGNvbG9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuTUlSUk9SRURfUkVQRUFUOgor
ICAgICAgICAgICAgICAgICAgICBpZiAoeHggJSA0IDwgMiAmJiB5eSAlIDQgPCAyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlYyA9IGNvbG9yOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFy
IG9mZiA9ICh5eSAqIDEyICsgeHgpICogNDsKKyAgICAgICAgICAgIGlmIChidWZbb2ZmICsgMF0g
IT0gZWNbMF0gfHwgYnVmW29mZiArIDFdICE9IGVjWzFdIHx8CisgICAgICAgICAgICAgICAgYnVm
W29mZiArIDJdICE9IGVjWzJdIHx8IGJ1ZltvZmYgKyAzXSAhPSBlY1szXSkgeworICAgICAgICAg
ICAgICAgIHZhciBtc2cgPSAnYXQgKCcgKyB4eCArICcsICcgKyB5eSArICcpIGV4cGVjdGVkOiAn
ICsKKyAgICAgICAgICAgICAgICAgICAgZWNbMF0gKyAnLCAnICsgZWNbMV0gKyAnLCAnICsgZWNb
Ml0gKyAnLCAnICsgZWNbM10gKyAnIGZvdW5kOiAnICsKKyAgICAgICAgICAgICAgICAgICAgYnVm
W29mZiArIDBdICsgJywgJyArIGJ1ZltvZmYgKyAxXSArICcsICcgKyBidWZbb2ZmICsgMl0gKyAn
LCAnICsgYnVmW29mZiArIDNdOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnKTsKKyAg
ICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAocGFzc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkRyYXdpbmcgd2l0
aCB3cmFwICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHBhcmFtKSArICIgYXMgZXhwZWN0ZWQi
KTsKKyAgICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtYWN0
aXZlLWJpbmQtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNDU5OTI0YWQxYmQzMDFjMjY5ZmE4Yzg3ZmU5MmFjZGI4NWI2ZDRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRt
bApAQCAtMCwwICsxLDIxMCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQWN0aXZlVGV4dHVyZSBCaW5kVGV4dHVyZSBjb25mb3Jt
YW5jZSB0ZXN0ICMyPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWln
aHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczJkIiB3aWR0aD0iMSIgaGVp
Z2h0PSIxIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit1bmlmb3JtIG1hdDQg
d29ybGQ7CithdHRyaWJ1dGUgdmVjMyB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29y
ZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICBnbF9Qb3NpdGlv
biA9IHdvcmxkICogdmVjNCh2UG9zaXRpb24sIDEpOworICB0ZXhDb29yZCA9IHRleENvb3JkMDsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjJkIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB0
ZXgyZDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh0ZXgyZCwgdGV4Q29vcmQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyQ3ViZSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwordW5pZm9ybSBzYW1wbGVyQ3ViZSB0ZXhDdWJlOwordm9pZCBtYWlu
KCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZUN1YmUodGV4Q3ViZSwgdmVjMygwLDEsMCkp
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBpbml0
KCkKK3sKKyAgZGVzY3JpcHRpb24oCisgICAgICAiVGVzdHMgdGhhdCBiaW5kaW5nIGJvdGggVEVY
VFVSRV8yRCBhbmQgVEVYVFVSRV9DVUJFX01BUCB0byB0aGUgc2FtZSAiICsKKyAgICAgICJhY3Rp
dmUgdGV4dHVyZSB1bml0IHdvcmtzIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IHVzZWQgIiArCisg
ICAgICAic2ltdWx0YW5lb3VzbHkgaW4gdGhlIHNhbWUgc2hhZGVyIHByb2dyYW0uIik7CisKKyAg
dmFyIGNhbnZhczJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczJkIik7CisgIHZh
ciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CisgIGN0eDJkLmdsb2JhbENvbXBv
c2l0ZU9wZXJhdGlvbiA9ICJjb3B5IjsKKworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cisg
IHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKyAgdmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyMmQiXSwg
WyJ2UG9zaXRpb24iLCAidGV4Q29vcmQwIl0pOworCisgIHZhciBwcm9ncmFtMmQgPSBwcm9ncmFt
OworICB2YXIgcHJvZ3JhbUN1YmUgPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsIFsidnNo
YWRlciIsICJmc2hhZGVyQ3ViZSJdLCBbInZQb3NpdGlvbiIsICJ0ZXhDb29yZDAiXSk7CisKKyAg
dmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wuYnVmZmVyRGF0YSgKKyAgICAgIGds
LkFSUkFZX0JVRkZFUiwKKyAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWy0xLCAxLDAsIDEsMSwwLCAt
MSwtMSwwLAorICAgICAgICAgICAgICAgICAgICAgICAgLTEsLTEsMCwgMSwxLDAsICAxLC0xLDBd
KSwKKyAgICAgIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MCk7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAw
KTsKKworICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICBnbC5idWZmZXJEYXRhKAor
ICAgICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgbmV3IEZsb2F0MzJBcnJheShbIDAsMCwgMSww
LCAwLDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwxLCAxLDAsIDEsMV0pLAorICAgICAg
Z2wuU1RBVElDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgIC8v
IE1ha2UgdGV4dHVyZSB1bml0IDEgYWN0aXZlLgorICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRV
UkUxKTsKKworICAvLyBNYWtlIGEgMmQgdGV4dHVyZQorICB2YXIgdGV4MmQgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDJkKTsKKyAgY3R4
MmQuZmlsbFN0eWxlID0gInJnYmEoMCwgMCwgMjU1LCAyNTUpIjsKKyAgY3R4MmQuZmlsbFJlY3Qo
MCwgMCwgMSwgMSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgY2FudmFzMmQpOworCisgIC8vIG1ha2UgYSBjdWJl
IHRleHR1cmUKKyAgdmFyIHRleEN1YmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmUpOworICBjdHgyZC5maWxsU3R5bGUg
PSAicmdiYSgyNTUsIDAsIDI1NSwgMjU1KSI7CisgIGN0eDJkLmZpbGxSZWN0KDAsIDAsIDEsIDEp
OworICB2YXIgdGFyZ2V0cyA9IFsKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
CisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWl07CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0YXJnZXRzLmxlbmd0aDsg
KytpaSkgeworICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1tpaV0sIDAsIGdsLlJHQkEsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhczJkKTsKKyAgfQorCisgIC8vIFNldHVwIHByb2dy
YW0yZCBhbmQgcHJvZ3JhbUN1YmUKKyAgdmFyIHRleDJkTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0yZCwgInRleDJkIik7CisgIHZhciB3b3JsZDJkTG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0yZCwgIndvcmxkIik7CisgIHZhciB0ZXhDdWJlTG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1DdWJlLCAidGV4Q3ViZSIpOworICB2YXIgd29ybGRDdWJl
TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1DdWJlLCAid29ybGQiKTsKKworICBn
bC51c2VQcm9ncmFtKHByb2dyYW0yZCk7CisgIGdsLnVuaWZvcm0xaSh0ZXgyZExvYywgMSk7Cisg
IGdsLnVzZVByb2dyYW0ocHJvZ3JhbUN1YmUpOworICBnbC51bmlmb3JtMWkodGV4Q3ViZUxvYywg
MSk7CisKKyAgZ2wuY2xlYXJDb2xvcigxLDAsMCwxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgIHZhciBwcm9ncmFtcyA9IFtwcm9n
cmFtMmQsIHByb2dyYW1DdWJlXTsKKyAgdmFyIHdvcmxkTG9jcyA9IFt3b3JsZDJkTG9jLCB3b3Js
ZEN1YmVMb2NdOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgNDsgKytpaSkgeworICAgIHZhciB4
ID0gaWkgJSAyOworICAgIHZhciB5ID0gTWF0aC5mbG9vcihpaSAvIDIpOworICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbXNbeF0pOworICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYoCisgICAgICAgIHdv
cmxkTG9jc1t4XSwgZmFsc2UsCisgICAgICAgIFswLjUsIDAsIDAsIDAsCisgICAgICAgICAwLCAw
LjUsIDAsIDAsCisgICAgICAgICAwLCAwLCAxLCAwLAorICAgICAgICAgLTAuNSArIHgsIC0wLjUg
KyB5LCAwLCAxXSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICB9
CisKKyAgdmFyIGNvbG9ycyA9IFsKKyAgICAgIFswLDAsMjU1LDI1NV0sCisgICAgICBbMjU1LDAs
MjU1LDI1NV0sCisgICAgICBbMCwwLDI1NSwyNTVdLAorICAgICAgWzI1NSwwLDI1NSwyNTVdXTsK
KworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29sb3JzLmxlbmd0aDsgKytpaSkgeworICAgIHZh
ciBjID0gY29sb3JzW2lpXTsKKyAgICB2YXIgeCA9IGlpICUgMjsKKyAgICB2YXIgeSA9IE1hdGgu
Zmxvb3IoaWkgLyAyKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCB4LCB5LCAxLCAxLCBj
KTsKKyAgfQorCisgIC8vIFRlc3QgdGhhdCBiaW5kaW5nIHRvIG9uZSB0YXJnZXQgZG9lcyBub3Qg
YWZmZWN0IHRoZSBvdGhlcgorICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIHRleHR1cmUg
dGFyZ2V0IGJpbmRpbmcvdW5iaW5kaW5nIik7CisKKyAgdmFyIHdvcmxkTWF0cml4ID0gWworICAg
ICAgMSwgMCwgMCwgMCwKKyAgICAgIDAsIDEsIDAsIDAsCisgICAgICAwLCAwLCAxLCAwLAorICAg
ICAgMCwgMCwgMCwgMV07CisKKyAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMik7CisKKyAg
Ly8gVW5iaW5kaW5nIHRoZSBURVhUVVJFX0NVQkVfTUFQIHRhcmdldCBzaG91bGQgbm90IGFmZmVj
dCB0aGUgVEVYVFVSRV8yRCB0YXJnZXQKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8
IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleDJkKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4Q3ViZSk7
CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIG51bGwpOworCisgIGdsLnVz
ZVByb2dyYW0ocHJvZ3JhbTJkKTsKKyAgZ2wudW5pZm9ybTFpKHRleDJkTG9jLCAyKTsKKyAgZ2wu
dW5pZm9ybU1hdHJpeDRmdih3b3JsZDJkTG9jLCBmYWxzZSwgd29ybGRNYXRyaXgpOworICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChn
bCwgMCwgMCwgMiwgMiwgWzAsMCwyNTUsMjU1XSk7CisKKyAgLy8gVW5iaW5kaW5nIHRoZSBURVhU
VVJFXzJEIHRhcmdldCBzaG91bGQgbm90IGFmZmVjdCB0aGUgVEVYVFVSRV9DVUJFX01BUCB0YXJn
ZXQKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmUpOworICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgyZCk7CisgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIG51bGwpOworCisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbUN1YmUpOworICBn
bC51bmlmb3JtMWkodGV4Q3ViZUxvYywgMik7CisgIGdsLnVuaWZvcm1NYXRyaXg0ZnYod29ybGRD
dWJlTG9jLCBmYWxzZSwgd29ybGRNYXRyaXgpOworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xF
UywgMCwgNik7CisKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMiwgMiwgWzI1NSww
LDI1NSwyNTVdKTsKK30KKworaW5pdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWFjdGl2ZS1i
aW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0YmQ5YjFmMzM1ZTZmOTJlY2U4ZGQ3ZDE3OWZlYzQ0OWU1
YWZmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1hY3RpdmUtYmlu
ZC5odG1sCkBAIC0wLDAgKzEsMTc5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBBY3RpdmVUZXh0dXJlIEJpbmRUZXh0dXJlIGNv
bmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhl
aWdodDogNDBweDsiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMmQiIHdpZHRoPSIxIiBo
ZWlnaHQ9IjEiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3VuaWZvcm0gbWF0
NCB3b3JsZDsKK2F0dHJpYnV0ZSB2ZWMzIHZQb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIHRleENv
b3JkMDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgIGdsX1Bvc2l0
aW9uID0gd29ybGQgKiB2ZWM0KHZQb3NpdGlvbiwgMSk7CisgIHRleENvb3JkID0gdGV4Q29vcmQw
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ0cml2aWFsLXZzIiB0eXBlPSJ0ZXh0L3BsYWlu
Ij4KK3ZvaWQgbWFpbigpCit7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwxKTsKKyAgZ2xf
UG9pbnRTaXplID0gMS4wOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ0ZXgtcG9pbnQtZnMi
IHR5cGU9InRleHQvcGxhaW4iPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNh
bXBsZXIyRCB1U2FtcGxlcjsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHRleHR1
cmUyRCh1U2FtcGxlciwgdmVjMigwKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7Cit2YXIgZ2w7CisKK2Z1bmN0aW9uIGluaXQoKQoreworICBkZXNjcmlwdGlvbigKKyAg
ICAgICJUZXN0cyB0aGF0IGdsQWN0aXZlVGV4dHVyZSBhbmQgZ2xCaW5kVGV4dHVyZSB3b3JrIGFz
IGV4cGVjdGVkIiArCisgICAgICAiU3BlY2lmaWNhbGx5IHRleHR1cmUgdGFyZ2V0cyBhcmUgcGVy
IGFjdGl2ZSB0ZXh0dXJlIHVuaXQuIik7CisKKyAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhczJkIik7CisgIHZhciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRl
eHQoIjJkIik7CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoImV4YW1wbGUiKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFt
KAorICAgICAgZ2wsCisgICAgICBbInZzaGFkZXIiLCB3dHUuc2ltcGxlVGV4dHVyZUZyYWdtZW50
U2hhZGVyXSwKKyAgICAgIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddKTsKKyAgd3R1LnNldHVw
VW5pdFF1YWQoZ2wpOworICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworICBnbC5kaXNhYmxl
KGdsLkJMRU5EKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisg
IHZhciBjb2xvcnMgPSBbCisgICAgICBbMCwxOTIsMTI4LDI1NV0sCisgICAgICBbMTI4LDY0LDI1
NSwyNTVdLAorICAgICAgWzE5MiwyNTUsNjQsMjU1XSwKKyAgICAgIFsyMDAsMCwyNTUsMjU1XV07
CisKKyAgLy8gTWFrZSA0IHRleHR1cmVzIGJ5IHVzaW5nIDQgYWN0aXZlIHRleHR1cmUgdW5pdHMg
aWYgYXZhaWxhYmxlLgorICB2YXIgdGV4dW5pdHMgPSBNYXRoLm1pbihjb2xvcnMubGVuZ3RoLCBn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMpKQorICB2
YXIgdGV4dHVyZXMgPSBbXTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRleHVuaXRzOyArK2lp
KSB7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5hY3RpdmVUZXh0
dXJlKGdsLlRFWFRVUkUwICsgaWkpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7CisgICAgdGV4dHVyZXNbaWldID0gdGV4OworICB9CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAvLyBub3cgdXNlIGVhY2ggdGV4dHVyZSB1bml0IHRv
IHdyaXRlIGludG8gdGhlIHRleHR1cmVzLAorICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGV4dW5p
dHM7ICsraWkpIHsKKyAgICB2YXIgYyA9IGNvbG9yc1tpaV07CisgICAgY3R4MmQuZmlsbFN0eWxl
ID0KKyAgICAgICAgInJnYmEoIiArIGNbMF0gKyAiLCIgKyBjWzFdICsgIiwiICsgY1syXSArICIs
IiArIGNbM10gKyAiKSI7CisgICAgY3R4MmQuZmlsbFJlY3QoMCwgMCwgMSwgMSk7CisgICAgZ2wu
YWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCArIGlpKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhczJk
KTsKKyAgfQorICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgdmFy
IHRleHR1cmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworICB2
YXIgd29ybGRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIndvcmxkIik7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICBnbC5jbGVhckNvbG9y
KDEsMCwwLDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVG
RkVSX0JJVCk7CisKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRleHVuaXRzOyArK2lpKSB7Cisg
ICAgdmFyIHggPSBpaSAlIDI7CisgICAgdmFyIHkgPSBNYXRoLmZsb29yKGlpIC8gMik7CisgICAg
Z2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIGlpKTsKKyAgICBnbC51bmlmb3JtTWF0cml4NGZ2KAor
ICAgICAgICB3b3JsZExvYywgZmFsc2UsCisgICAgICAgIFswLjUsIDAsIDAsIDAsCisgICAgICAg
ICAwLCAwLjUsIDAsIDAsCisgICAgICAgICAwLCAwLCAxLCAwLAorICAgICAgICAgLTAuNSArIHgs
IC0wLjUgKyB5LCAwLCAxXSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYp
OworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgdGV4dW5pdHM7ICsraWkpIHsKKyAgICB2YXIgeCA9IGlpICUgMjsK
KyAgICB2YXIgeSA9IE1hdGguZmxvb3IoaWkgLyAyKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0
KGdsLCB4LCB5LCAxLCAxLCBjb2xvcnNbaWldKTsKKyAgfQorCisgIGRlYnVnKCIiKTsKKyAgZGVi
dWcoIlN3aXp6bGUgYXBwbGllZCB0byBjb3JyZWN0IEFjdGl2ZVRleHR1cmUgaW5kZXgiKTsKKwor
ICB7CisgICAgY29uc3QgcHJvZyA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgICAgIGdsLAorICAg
ICAgICBbInRyaXZpYWwtdnMiLCAidGV4LXBvaW50LWZzIl0pOworICAgIHByb2cudVNhbXBsZXIg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZywgInVTYW1wbGVyIik7CisgICAgZ2wudXNlUHJv
Z3JhbShwcm9nKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCAxLCAxKTsKKyAgICBnbC5hY3RpdmVU
ZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKKyAgICBjb25zdCB0ZXgwX3JnYmE4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDBfcmdiYTgpOworICAgIGNvbnN0IHRl
eDBfcmdiYThfZGF0YSA9IG5ldyBVaW50OEFycmF5KFsxMCwgMjAsIDMwLCA0MF0pOworICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgdGV4MF9yZ2JhOF9kYXRhKTsKKworICAgIGNvbnN0IHRleDJfYTgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4Ml9hOCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5BTFBIQSwg
MSwgMSwgMCwgZ2wuQUxQSEEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgICAgd2luZG93
LmNvbnRyb2wgPSBuZXcgVWludDhBcnJheSg0KTsKKyAgICB3aW5kb3cuYWZ0ZXJfc3dpenpsZV9h
cHBsaWVkID0gbmV3IFVpbnQ4QXJyYXkoNCk7CisKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgwX3JnYmE4KTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMSk7
CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCB3aW5kb3cuY29udHJvbCk7CisgICAgc2hvdWxkQmVTdHJpbmcoIndpbmRvdy5jb250cm9sIiwg
dGV4MF9yZ2JhOF9kYXRhLnRvU3RyaW5nKCkpOworCisgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5U
RVhUVVJFMik7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4Ml9hOCk7Cisg
ICAgZ2wudW5pZm9ybTFpKHByb2cudVNhbXBsZXIsIDIpOworICAgIGdsLmFjdGl2ZVRleHR1cmUo
Z2wuVEVYVFVSRTApOworICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKyAgICAv
LyBGaXJlZm94IHdvdWxkIGFwcGx5IHRoZSBBOC1vbi1SOCBzd2l6emxlIHRvIHdoYXRldmVyIHRl
eC11bml0IHdhcyBhY3RpdmUuCisKKyAgICBnbC51bmlmb3JtMWkocHJvZy51U2FtcGxlciwgMCk7
CisgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDEpOworICAgIGdsLnJlYWRQaXhlbHMo
MCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgd2luZG93LmFmdGVyX3N3aXp6
bGVfYXBwbGllZCk7CisgICAgc2hvdWxkQmVTdHJpbmcoIndpbmRvdy5hZnRlcl9zd2l6emxlX2Fw
cGxpZWQiLCB0ZXgwX3JnYmE4X2RhdGEudG9TdHJpbmcoKSk7CisgICAgLy8gRmlyZWZveCB3b3Vs
ZCB0aGVuIGdldCAwLDAsMCwxMCBoZXJlLCBhcyB0aGUgW1pFUk8sWkVSTyxaRVJPLFJFRF0gc3dp
enpsZSB3YXMgYXBwbGllZCB0byBvdXIKKyAgICAvLyAxMCwyMCwzMCw0MCB0ZXh0dXJlLgorICB9
Cit9CisKK2luaXQoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtYXR0
YWNobWVudC1mb3JtYXRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtYXR0YWNobWVudC1m
b3JtYXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2OWNhMDYxZGY5ZWY4M2NmMTBkY2JhZjkwYWQ2MDkw
MWIxOGU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1hdHRhY2ht
ZW50LWZvcm1hdHMuaHRtbApAQCAtMCwwICsxLDE3NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBBdHRhY2htZW50
IEZvcm1hdCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDog
MTAwcHg7IGhlaWdodDoxMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7Citp
ZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxz
ZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIiIpOworICBk
ZWJ1ZygiQ2hlY2tpbmcgdGV4dHVyZSBmb3JtYXRzLiIpOworCisgIHZhciBudW1WYWxpZEZvcm1h
dHMgPSAwOworICB2YXIgY2xlYXJDb2xvciA9IFswLjI1LCAwLjUsIDAuNzUsIDAuMjVdOworCisg
IHZhciBmbG9hdFRvQml0cyA9IGZ1bmN0aW9uKHZhbHVlLCBiaXRzKSB7CisgICAgdmFyIHJhbmdl
ID0gKDEgPDwgYml0cykgLSAxOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGlmIChyYW5nZSA+
IDApIHsKKyAgICAgIHJlc3VsdCA9IE1hdGguZmxvb3IoTWF0aC5mbG9vcih2YWx1ZSAqIHJhbmdl
KSAqIDI1NSAvIHJhbmdlKTsKKyAgICB9CisKKyAgICAvL2RlYnVnKCJ2ID0gIiArIHZhbHVlICsg
IiwgYml0cyA9ICIgKyBiaXRzICsgIiwgcmFuZ2UgPSAiICsgcmFuZ2UgICsgIiwgcmVzdWx0ID0g
IiArIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIHZhciB0ZXN0Rm9ybWF0
ID0gZnVuY3Rpb24oaW5mbykgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGluZzog
IiArIGluZm8uZm9ybWF0ICsgIiwgIiArIGluZm8udHlwZSk7CisKKyAgICB2YXIgZm9ybWF0ID0g
Z2xbaW5mby5mb3JtYXRdOworICAgIHZhciB0eXBlID0gZ2xbaW5mby50eXBlXTsKKworICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAvLyBsZXZlbAorICAgICAgICAgICAgICAgICAgZm9ybWF0LCAgICAgICAgICAgIC8v
IGludGVybmFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAxNiwgICAgICAgICAgICAgICAgLy8g
d2lkdGgKKyAgICAgICAgICAgICAgICAgIDE2LCAgICAgICAgICAgICAgICAvLyBoZWlnaHQKKyAg
ICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAvLyBib3JkZXIKKyAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgICAgICAgICAgICAvLyBmb3JtYXQKKyAgICAgICAgICAgICAgICAgIHR5
cGUsICAgICAgICAgICAgICAvLyB0eXBlCisgICAgICAgICAgICAgICAgICBudWxsKTsgICAgICAg
ICAgICAgLy8gZGF0YQorICAgIHZhciBmYlN0YXR1cyA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGRlYnVnKHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZmJT
dGF0dXMpKTsKKyAgICBpZiAoZmJTdGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsK
KyAgICAgIGRlYnVnKCJmb3JtYXQgdW5zdXBwb3J0ZWQiKTsKKyAgICAgIGlmIChpbmZvLm11c3RC
ZUZyYW1lYnVmZmVyQ29tcGxldGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZChpbmZvLmZvcm1hdCAr
ICIgbXVzdCBiZSBGUkFNRUJVRkZFUl9DT01QTEVURSIpOworICAgICAgfQorICAgICAgcmV0dXJu
OworICAgIH0KKworICAgICsrbnVtVmFsaWRGb3JtYXRzOworCisgICAgdmFyIHN0YXJ0RXhwZWN0
ZWQgPSBbMCwgMCwgMCwgaW5mby5jaGFubmVsc1szXSA8IDAgPyAyNTUgOiAwXTsKKworICAgIHZh
ciBleHBlY3RlZCA9IFtdOworICAgIHZhciB0b2xlcmFuY2UgPSBbXTsKKyAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgNDsgKytpaSkgeworICAgICAgdmFyIGNvbG9yID0gMDsKKyAgICAgIHZhciBj
aGFubmVsID0gaW5mby5jaGFubmVsc1tpaV07CisgICAgICBpZiAoY2hhbm5lbCA8IDApIHsKKyAg
ICAgICAgY29sb3IgPSBpaSA8IDMgPyAwIDogMjU1CisgICAgICB9IGVsc2UgeworICAgICAgICBj
b2xvciA9IGZsb2F0VG9CaXRzKGNsZWFyQ29sb3JbY2hhbm5lbF0sIGluZm8uYml0c1tpaV0pOwor
ICAgICAgfQorICAgICAgZXhwZWN0ZWQucHVzaChjb2xvcik7CisgICAgICB0b2xlcmFuY2UucHVz
aChjaGFubmVsIDwgMCA/IDAgOiAoMSArICgxIDw8ICg4IC0gaW5mby5iaXRzW2lpXSkpKSk7Cisg
ICAgfQorCisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBzdGFydEV4cGVjdGVkLCAic2hvdWxkIGJl
ICIgKyBzdGFydEV4cGVjdGVkKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIGV4cGVjdGVkLCAic2hvdWxkIGJlICIgKyBleHBlY3Rl
ZCArICIgd2l0aCB0b2xlcmFuY2UgIiArIHRvbGVyYW5jZSwgdG9sZXJhbmNlKTsKKyAgfQorCisg
IHZhciB2YWxpZEZvcm1hdHMgPSBbCisgICAgeyBmb3JtYXQ6ICdSR0JBJywKKyAgICAgIHR5cGU6
ICAnVU5TSUdORURfQllURScsCisgICAgICBjaGFubmVsczogWzAsIDEsIDIsIDNdLAorICAgICAg
Yml0czogWzgsIDgsIDgsIDhdLAorICAgICAgbXVzdEJlRnJhbWVidWZmZXJDb21wbGV0ZTogdHJ1
ZQorICAgIH0sCisgICAgeyBmb3JtYXQ6ICdBTFBIQScsCisgICAgICB0eXBlOiAgJ1VOU0lHTkVE
X0JZVEUnLAorICAgICAgY2hhbm5lbHM6IFstMSwgLTEsIC0xLCAzXSwKKyAgICAgIGJpdHM6IFsw
LCAwLCAwLCA4XSwKKyAgICAgIG11c3RCZUZyYW1lYnVmZmVyQ29tcGxldGU6IGZhbHNlCisgICAg
fSwKKyAgICB7IGZvcm1hdDogJ1JHQicsCisgICAgICB0eXBlOiAgJ1VOU0lHTkVEX0JZVEUnLAor
ICAgICAgY2hhbm5lbHM6IFswLCAxLCAyLCAtMV0sCisgICAgICBiaXRzOiBbOCwgOCwgOCwgMF0s
CisgICAgICBtdXN0QmVGcmFtZWJ1ZmZlckNvbXBsZXRlOiBmYWxzZQorICAgIH0sCisgICAgeyBm
b3JtYXQ6ICdSR0InLAorICAgICAgdHlwZTogICdVTlNJR05FRF9TSE9SVF81XzZfNScsCisgICAg
ICBjaGFubmVsczogWzAsIDEsIDIsIC0xXSwKKyAgICAgIGJpdHM6IFs1LCA2LCA1LCAwXSwKKyAg
ICAgIG11c3RCZUZyYW1lYnVmZmVyQ29tcGxldGU6IGZhbHNlCisgICAgfSwKKyAgICB7IGZvcm1h
dDogJ1JHQkEnLAorICAgICAgdHlwZTogICdVTlNJR05FRF9TSE9SVF81XzVfNV8xJywKKyAgICAg
IGNoYW5uZWxzOiBbMCwgMSwgMiwgM10sCisgICAgICBiaXRzOiBbNSwgNSwgNSwgMV0sCisgICAg
ICBtdXN0QmVGcmFtZWJ1ZmZlckNvbXBsZXRlOiBmYWxzZQorICAgIH0sCisgICAgeyBmb3JtYXQ6
ICdSR0JBJywKKyAgICAgIHR5cGU6ICAnVU5TSUdORURfU0hPUlRfNF80XzRfNCcsCisgICAgICBj
aGFubmVsczogWzAsIDEsIDIsIDNdLAorICAgICAgYml0czogWzQsIDQsIDQsIDRdLAorICAgICAg
bXVzdEJlRnJhbWVidWZmZXJDb21wbGV0ZTogZmFsc2UKKyAgICB9LAorICAgIHsgZm9ybWF0OiAn
TFVNSU5BTkNFJywKKyAgICAgIHR5cGU6ICAnVU5TSUdORURfQllURScsCisgICAgICBjaGFubmVs
czogWzAsIDAsIDAsIC0xXSwKKyAgICAgIGJpdHM6IFs4LCA4LCA4LCAtMV0sCisgICAgICBtdXN0
QmVGcmFtZWJ1ZmZlckNvbXBsZXRlOiBmYWxzZQorICAgIH0sCisgICAgeyBmb3JtYXQ6ICdMVU1J
TkFOQ0VfQUxQSEEnLAorICAgICAgdHlwZTogICdVTlNJR05FRF9CWVRFJywKKyAgICAgIGNoYW5u
ZWxzOiBbMCwgMCwgMCwgM10sCisgICAgICBiaXRzOiBbOCwgOCwgOCwgOF0sCisgICAgICBtdXN0
QmVGcmFtZWJ1ZmZlckNvbXBsZXRlOiBmYWxzZQorICAgIH0KKyAgXTsKKworICBnbC5jbGVhckNv
bG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29s
b3JbM10pOworICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoCisgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHZhbGlkRm9ybWF0cy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgaW5mbyA9IHZhbGlkRm9ybWF0
c1tpaV07CisgICAgdGVzdEZvcm1hdChpbmZvKTsKKyAgfQorCisgIGRlYnVnKCIiKTsKKyAgc2hv
dWxkQmVUcnVlKCJudW1WYWxpZEZvcm1hdHMgPiAwIik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitkZWJ1
ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1jbGVhci5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy90ZXh0dXJlLWNsZWFyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU2NThmNWI0ZTIw
OWFhNDQ1NDE2N2YxYmRhNDQ4YzNjNjExZWViNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L21pc2MvdGV4dHVyZS1jbGVhci5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHRleHR1cmUgY2xl
YXIgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBw
eDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbihkb2N1bWVudC50aXRsZSk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFRleHR1cmVkUXVhZChnbCk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCit2YXIgdGV4ID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKK2ds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFy
cmF5KFswLDI1NSwwLDI1NV0pKTsKK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cit3dHUu
Y2hlY2tDYW52YXMoCisgICAgZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4i
KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVy
cm9ycyBmcm9tIHNldHVwLiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVy
ZS1jb21wbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWNvbXBsZXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzcwZjZkNWZhMjEyOTZlZjZjNzllOGZiYmE4YTJiNmJkOWExOTAyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1jb21wbGV0ZS5odG1sCkBAIC0wLDAg
KzEsNjMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMICJUZXh0dXJlIENvbXBsZXRlIiB0ZXh0dXJlIGNvbmZvcm1hbmNlIHRlc3Qu
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iNDAiIGhlaWdodD0iNDAiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+
PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyZCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBz
dHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gaW5pdCgpCit7CisgIGRlc2NyaXB0aW9uKAorICAgICAgIkNo
ZWNrcyB0aGF0IGEgdGV4dHVyZSB0aGF0IGlzIG5vdCAtdGV4dHVyZS1jb21wbGV0ZS0gZG9lcyBu
b3QgZHJhdyBpZiIrCisgICAgICAiIGZpbHRlcmluZyBuZWVkcyBtaXBzIik7CisKKyAgdmFyIGNh
bnZhczJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczJkIik7CisgIHZhciBjdHgy
ZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CisgIGN0eDJkLmZpbGxTdHlsZSA9ICJyZ2Jh
KDAsMTkyLDEyOCwxKSI7CisgIGN0eDJkLmZpbGxSZWN0KDAsIDAsIDE2LCAxNik7CisKKyAgdmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImV4YW1wbGUiKTsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMp
OworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKKyAgZ2wuZGlz
YWJsZShnbC5ERVBUSF9URVNUKTsKKyAgZ2wuZGlzYWJsZShnbC5CTEVORCk7CisKKyAgdmFyIHRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4KTsKKyAgLy8gMTZ4MTYgdGV4dHVyZSBubyBtaXBzCisgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgY2FudmFzMmQp
OworCisgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOwor
ICBnbC51bmlmb3JtMWkobG9jLCAwKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLDAsMCwyNTVdLAorICAgICAgInRleHR1cmUgdGhh
dCBpcyBub3QgLXRleHR1cmUtY29tcGxldGUtIHdoZW4gIiArCisgICAgICAiVEVYVFVSRV9NSU5f
RklMVEVSIG5vdCBORUFSRVNUIG9yIExJTkVBUiBzaG91bGQgZHJhdyB3aXRoIDAsMCwwLDI1NSIp
OworfQorCitpbml0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWNv
cHlpbmctYW5kLWRlbGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtY29weWluZy1h
bmQtZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2FmZjNkMjI0MWMzYzc0MDUxZGU5NDU0NGE2
NjE1ZDg2ZjBhMWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWNv
cHlpbmctYW5kLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDIwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBDb3B5
aW5nIGFuZCBEZWxldGlvbiBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzdHlsZT0id2lkdGg6IDQw
cHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbignQ2hlY2tzIHRoYXQgdGV4dHVyZSBjb3B5aW5nIGFuZCBkZWxldGlvbiB3b3Jr
IGNvcnJlY3RseSB0b2dldGhlci4nKTsKK2RlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhy
ZWY9Imh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDI2NyI+aHR0cDovL2FuZ2xlYnVnLmNvbS80MjY3PC9h
PicpOworY29uc3Qgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Citjb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ3dl
YmdsY29udGV4dGxvc3QnLCBjb250ZXh0TG9zdCwgZmFsc2UpOworCitsZXQgY29udGV4dFdhc0xv
c3QgPSBmYWxzZTsKK2Z1bmN0aW9uIGNvbnRleHRMb3N0KGUpIHsKKyAgZS5wcmV2ZW50RGVmYXVs
dCgpOworICBjb250ZXh0V2FzTG9zdCA9IHRydWU7CisgIGRlYnVnKCIqKipjb250ZXh0IGxvc3Qg
LS0gc2hvdWxkIG5vdCBoYXBwZW4qKioiKTsKK30KKworY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcyk7CisKK2NvbnN0IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Citn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKK2dsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwgMiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VE
R0UpOworCitjb25zdCB0ZXh0dXJlMiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUyKTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgMiwgMiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
Z2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworCitj
b25zdCBmcmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKK2dsLmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwg
dGV4dHVyZSwgMCk7Cithc3NlcnRNc2coZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUsCisgICAgImZyYW1lYnVmZmVyIHNo
b3VsZCBiZSBGUkFNRUJVRkZFUl9DT01QTEVURS4iKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiYWZ0ZXIgc2V0dXAiKTsKKworLy8gVGhpcyB0ZXN0IGRvZXMgbm90IGNh
bGwgZ2V0RXJyb3IsIGJlY2F1c2UgZG9pbmcgc28gc2VlbXMgdG8gY2F1c2UKKy8vIGFuIGltcGxp
Y2l0IGZsdXNoIHdoaWNoIGludGVybWl0dGVudGx5IG1hc2tzIHRoZSBidWcuCisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJ0ZXN0aW5nIGNvcHlUZXhJbWFnZTJEIik7CitnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlKTsKK2dsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEs
IGdsLlJHQkEsIDAsIDAsIDIsIDIsIDApOworLy8gTm90IG5lY2Vzc2FyeSB0byBkbyBhbnkgQ29w
eVRleEltYWdlMkQgb3BlcmF0aW9ucyB0byB0ZXh0dXJlMi4KKworZGVidWcoIiIpOworZGVidWco
InRlc3RpbmcgY29weVRleFN1YkltYWdlMkQiKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleHR1cmUpOworZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgMCwg
MCwgMCwgMCwgMSwgMSk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMik7
CitnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxLCAx
KTsKKworZGVidWcoJ2RlbGV0aW5nIGZyYW1lYnVmZmVyJyk7CitnbC5kZWxldGVGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlcik7CitkZWJ1ZygnZGVsZXRpbmcgdGV4dHVyZScpOworZ2wuZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlKTsKK2RlYnVnKCdkZWxldGluZyB0ZXh0dXJlMicpOworLy8gT24gYnVnZ3kg
ZHJpdmVyLCBjcmFzaGVzIGR1cmluZyB0aGlzIGRlbGV0ZVRleHR1cmUgY2FsbC4KK2dsLmRlbGV0
ZVRleHR1cmUodGV4dHVyZTIpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICBzaG91bGRC
ZSgiY29udGV4dFdhc0xvc3QiLCAiZmFsc2UiKTsKKyAgZmluaXNoVGVzdCgpOworfSwgMTAwMCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dGV4dHVyZS1jb3B5aW5nLWZlZWRiYWNrLWxvb3BzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1
cmUtY29weWluZy1mZWVkYmFjay1sb29wcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZjRlMGVjNGM0ZmYy
NDAyMzVlNWVhMDI2OGJhN2UwZGZkZTQwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL3RleHR1cmUtY29weWluZy1mZWVkYmFjay1sb29wcy5odG1sCkBAIC0wLDAgKzEsODIgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgQ29weWluZyBGZWVkYmFjayBMb29wcyBUZXN0PC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMSIgaGVpZ2h0PSIx
IiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHRoYXQgdGV4dHVyZSBjb3B5aW5n
IGZlZWRiYWNrIGxvb3BzIGZhaWwgY29ycmVjdGx5LiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCit2YXIgdGV4
dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmUpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAy
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKK2dsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1Ms
IGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisKK3ZhciB0ZXh0dXJlMiA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUyKTsK
K2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwgMiwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQ
X1QsIGdsLkNMQU1QX1RPX0VER0UpOworCit2YXIgZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZl
cik7CitnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworYXNzZXJ0TXNnKGdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpID09IGdsLkZSQU1FQlVGRkVSX0NPTVBM
RVRFLAorICAgICJmcmFtZWJ1ZmZlciBzaG91bGQgYmUgRlJBTUVCVUZGRVJfQ09NUExFVEUuIik7
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIHNldHVwIik7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJ0ZXN0aW5nIGNvcHlUZXhJbWFnZTJEIik7CitnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKK2dsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDEsIGdsLlJHQkEsIDAsIDAsIDIsIDIsIDApOword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsCisgICAgImFmdGVyIGNvcHlUZXhJbWFnZTJEIHRvIHNhbWUgdGV4dHVy
ZSBidXQgZGlmZmVyZW50IGxldmVsIik7CitnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCAwLCAwLCAyLCAyLCAwKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICJhZnRlciBjb3B5VGV4SW1hZ2UyRCB0byBzYW1lIHRl
eHR1cmUgc2FtZSBsZXZlbCwgaW52YWxpZCBmZWVkYmFjayBsb29wIik7CitnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMik7CitnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAwLCAwLCAyLCAyLCAwKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLAorICAgICJhZnRlciBjb3B5VGV4SW1hZ2UyRCB0byBkaWZmZXJlbnQgdGV4
dHVyZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygidGVzdGluZyBjb3B5VGV4U3ViSW1hZ2UyRCIp
OworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CitnbC5jb3B5VGV4U3Vi
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCAwLCAwLCAwLCAwLCAxLCAxKTsKK3d0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICJhZnRlciBjb3B5VGV4U3ViSW1hZ2UyRCB0
byBzYW1lIHRleHR1cmUgYnV0IGRpZmZlcmVudCBsZXZlbCIpOworZ2wuY29weVRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7Cit3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiYWZ0ZXIgY29weVRleFN1YkltYWdl
MkQgdG8gc2FtZSB0ZXh0dXJlIHNhbWUgbGV2ZWwsIGludmFsaWQgZmVlZGJhY2sgbG9vcCIpOwor
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZTIpOworZ2wuY29weVRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7Cit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAiYWZ0ZXIgY29weVRleFN1YkltYWdlMkQgdG8g
ZGlmZmVyZW50IHRleHR1cmUiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJl
LWNvcm5lci1jYXNlLXZpZGVvcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWNvcm5lci1j
YXNlLXZpZGVvcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNzA2MWM4M2Y2MWRiYzE2MzRjZWUwZDI4MTNm
NjZiMWUwMzQ0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtY29y
bmVyLWNhc2UtdmlkZW9zLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4dHVyZS1jb3JuZXItY2FzZS12aWRlb3Mu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iYzJkIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgK
KyAgICAnVmVyaWZ5IHVwbG9hZGluZyB2YXJpb3VzIGNvcm5lci1jYXNlIHZpZGVvcyB0byAyRCB0
ZXh0dXJlcycsCisgICAgIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xv
Z3VlLCAiIiwgMSwKKyAgICBbCisgICAgICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDov
L2NyYnVnLmNvbS83MDEwNjAuCisgICAgICAgIC8vIEdlbmVyYXRlZCB3aXRoIHRoZSBmb2xsb3dp
bmcgY29tbWFuZCBsaW5lOgorICAgICAgICAvLyBmZm1wZWcgLXIgMjUgLWkgcmVkLWdyZWVuLTQ4
MC0yNzIucG5nIC12ZnJhbWVzIDEwIC12Y29kZWMgaDI2NCAtdmYgc2V0c2FyPTEzNjoxMzUsc2V0
ZGFyPTE2OjkgLXBpeF9mbXQgeXV2NDIwcCAuLi4KKyAgICAgICAgeworICAgICAgICAgICAgY29t
bWVudDogIlZpZGVvIHdob3NlIG5hdHVyYWwgc2l6ZSBpcyBsYXJnZXIgdGhhbiBjb2RlZCBzaXpl
IGR1ZSB0byB1bmNvbW1vbiBwaXhlbCBzaGFwZSAoU2FtcGxlIEFzcGVjdCBSYXRpbykiLAorICAg
ICAgICAgICAgc3JjOiAiLi4vLi4vLi4vcmVzb3VyY2VzL3JlZC1ncmVlbi00ODB4MjcyLXNhci0x
MzZ4MTM1LWRhci0xNng5Lm1wNCIsCisgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0OyBjb2Rl
Y3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywKKyAgICAgICAgICAgIC8vIEEgZmFpcmx5IGhp
Z2ggdG9sZXJhbmNlIGlzIHVzZWQgYmVjYXVzZSBjb2xvcnNwYWNlIGNvbnZlcnNpb24gc2VlbXMg
dG8gZGlmZmVyIHdpZGVseSBiZXR3ZWVuCisgICAgICAgICAgICAvLyBoYXJkd2FyZS1hY2NlbGVy
YXRlZCB2aWRlbyBkZWNvZGVycy4gQXQgbGVhc3Qgb24gV2luZG93cyAvIE5WSURJQSwgdGhpcyB0
ZXN0IHdhcyBzZWVuIHRvIGNvbnZlcnQKKyAgICAgICAgICAgIC8vICgwLDI1NSwwKSB0byAoMTMs
MjM4LDE0KSwgYW5kICgyNTUsMCwwKSB0byAoMjM4LDE0LDE0KS4KKyAgICAgICAgICAgIHRvbGVy
YW5jZTogMTgsCisgICAgICAgIH0KKyAgICBdKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtY3ViZS1hcy1mYm8tYXR0YWNo
bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWN1YmUtYXMtZmJvLWF0dGFjaG1lbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZTA5ZDMyNDBmYjVhN2JiMTk2OGI0NDNlOWM3MDRhYzU1MjdlYjI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWN1YmUtYXMtZmJvLWF0
dGFjaG1lbnQuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIGN1YmUgYXMgRkJPIGNv
bG9yIGF0dGFjaG1lbnQ8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVp
Z2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgZ2w7CisK
K2Z1bmN0aW9uIHJ1bigpCit7CisgIGRlc2NyaXB0aW9uKAorICAgICAgIlRlc3RzIHVzaW5nIGEg
Y3ViZSBtYXAgZmFjZSBhcyB0aGUgY29sb3IgYXR0YWNobWVudCBvZiBhIGZyYW1lYnVmZmVyIG9i
amVjdC4gIiArCisgICAgICAiVGhpcyB0ZXN0IGNvdmVycyBhbiBBTkdMRSB2YWxpZGF0aW9uIGJ1
Zy4gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRh
aWw/aWQ9ODQ5IC4iKTsKKworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworICB2YXIgdGV4dHVyZUN1YmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1
cmVDdWJlKTsKKyAgdmFyIGZhY2VzID0gWworICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWCwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9ZLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgZ2wuVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9aCisgIF07CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9D
VUJFX01BUCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5F
QVJFU1QpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZmFjZXMubGVuZ3RoOyArK2lpKSB7Cisg
ICAgZ2wudGV4SW1hZ2UyRChmYWNlc1tpaV0sIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwIik7CisKKyAgdmFy
IGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZmFjZXMubGVuZ3Ro
OyArK2lpKSB7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBmYWNlc1tpaV0sIHRleHR1cmVDdWJlLCAwKTsKKyAgICBzaG91
bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUnKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZm9yIGZhY2UgIiArIHd0dS5nbEVudW1Ub1N0cmlu
ZyhnbCwgZmFjZXNbaWldKSk7CisgIH0KK30KKworcnVuKCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdGV4dHVyZS1kcmF3LXdpdGgtMmQtYW5kLWN1YmUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21p
c2MvdGV4dHVyZS1kcmF3LXdpdGgtMmQtYW5kLWN1YmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTA1YzU1
OTVhODU3MTllZTc4YzMxNGU3MzVjYTMwZWI4NmY0NzY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy90ZXh0dXJlLWRyYXctd2l0aC0yZC1hbmQtY3ViZS5odG1sCkBAIC0wLDAgKzEs
MTAzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBBY3RpdmVUZXh0dXJlIEJpbmRUZXh0dXJlIGNvbmZvcm1hbmNlIHRlc3QuPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2Fu
dmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMmQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHN0eWxlPSJ3
aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIHZQb3NpdGlvbjsKK2F0
dHJpYnV0ZSB2ZWMyIHRleENvb3JkMDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFp
bigpCit7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24sIDEpOworICB0ZXhDb29yZCA9
IHRleENvb3JkMDsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVj
MiB0ZXhDb29yZDsKK3VuaWZvcm0gc2FtcGxlcjJEIHRleDJEOwordW5pZm9ybSBzYW1wbGVyQ3Vi
ZSB0ZXhDdWJlOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRl
eDJELCB0ZXhDb29yZCk7CisgIGdsX0ZyYWdDb2xvciArPSB0ZXh0dXJlQ3ViZSh0ZXhDdWJlLCB2
ZWMzKHRleENvb3JkLCAwKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
Cit2YXIgZ2w7CisKK2Z1bmN0aW9uIGluaXQoKQoreworICBkZXNjcmlwdGlvbigKKyAgICAgICJU
ZXN0cyBkcmF3aW5nIHdpdGggdHdvIHRleHR1cmVzIG9mIGRpZmZlcmVudCB0eXBlLiAiICsKKyAg
ICAgICJUaGlzIHRlc3QgY292ZXJzIGFuIEFOR0xFIHZhbGlkYXRpb24gYnVnLiBTZWUgaHR0cDov
L2NyYnVnLmNvbS8zOTA0MTIuIik7CisKKyAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhczJkIik7CisgIHZhciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQo
IjJkIik7CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoImV4YW1wbGUiKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAor
ICAgICAgZ2wsCisgICAgICBbInZzaGFkZXIiLCAiZnNoYWRlciJdLAorICAgICAgWyd2UG9zaXRp
b24nLCAndGV4Q29vcmQwJ10pOworICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgIGdsLmRpc2Fi
bGUoZ2wuREVQVEhfVEVTVCk7CisgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgdmFyIHRleHR1cmUyRCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7CisgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUyRCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICB2YXIg
dGV4dHVyZUN1YmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wu
VEVYVFVSRTEpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJl
Q3ViZSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAw
LCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLlJHQkEs
IDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1osIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWiwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVs
bCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICB2YXIgdGV4
dHVyZTJETG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgyRCIpOworICB2
YXIgdGV4dHVyZUN1YmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleEN1
YmUiKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgIGdsLmNs
ZWFyQ29sb3IoMSwwLDAsMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5E
RVBUSF9CVUZGRVJfQklUKTsKKworICBnbC51bmlmb3JtMWkodGV4dHVyZTJETG9jLCAwKTsKKyAg
Z2wudW5pZm9ybTFpKHRleHR1cmVDdWJlTG9jLCAxKTsKKyAgZ2wuZHJhd0FycmF5cyhnbC5UUklB
TkdMRVMsIDAsIDYpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Cit9
CisKK2luaXQoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtZmFrZWJs
YWNrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtZmFrZWJsYWNrLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWNkMWQ0MGNhNWRmZDlhY2MwMzdhOTllNzk5NTNmMTc0ZGZlOWY3MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1mYWtlYmxhY2suaHRtbApAQCAtMCwwICsxLDk0
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5UZXN0cyBpZiBmYWtlIGJsYWNrIHRleHR1cmVzIGFyZSBjb3JlY3RseSBpbXBsZW1lbnRlZCBv
biBkZXNrdG9wczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKKworZnVuY3Rpb24gY3JlYXRlVGV4dHVyZShnbCxyLGcsYixhKSB7CisgICAgLy8g
c2V0dXAgcmVuZGVyIHRhcmdldCB0ZXh0dXJlIC8vCisKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJl
KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFN
UF9UT19FREdFKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEs
IDMsIDMsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgLy8gc2V0dXAgZnJhbWVidWZmZXIg
Ly8KKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJl
MkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0
ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworCisgICAgLy8gZmlsbCB0aGUgZnJhbWVidWZmZXIgLy8KKyAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuY2xlYXJDb2xvcihyLCBnLCBiLCBhKTsK
KyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworCisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJv
KTsKKworICAgIHJldHVybiB0ZXh0dXJlOworfQorCitmdW5jdGlvbiBpbml0KCkgeworICAgIC8q
CisgICAgICogVGhpcyB0ZXN0IGhhcyBiZWVuIHdyaXR0ZW4gZHVlIHRvIGEgYnVnIGZvdW5kIGlu
IGZpcmVmb3gncyBjb2RlCisgICAgICogYW5kIGZpeGVkIGluIHRoZSBmb2xsb3dpbmcgcGF0Y2gg
OgorICAgICAqIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg3
OTk1MiNjNQorICAgICAqLworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICBkZXNj
cmlwdGlvbigpOworCisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIp
OworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworICAgIHZh
ciB0ZXh0dXJlMCA9IGNyZWF0ZVRleHR1cmUoZ2wsMSwwLDAsMSk7CisgICAgdmFyIHRleHR1cmUx
ID0gY3JlYXRlVGV4dHVyZShnbCwwLDEsMCwxKTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleHR1cmUwKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Nik7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdKTsKKworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLlJFUEVB
VCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuUkVQRUFUKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cisg
ICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0
dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdM
RVMsIDAsIDYpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAsIDAsIDI1NV0pOworfQor
Citpbml0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWZvcm1hdHMt
dGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWZvcm1hdHMtdGVzdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2M2FiNTNhMGI5MTY1NjBlMGIyN2Q3ZDdkNGU1YzZlNzUxMmQ5OTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtZm9ybWF0cy10ZXN0Lmh0bWwKQEAgLTAs
MCArMSwyNzQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIFRleHR1cmUgRm9ybWF0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFu
dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMyZCIgd2lkdGg9
IjIiIGhlaWdodD0iMiIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOyI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
IiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDoxMDBweDsgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Ij48L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIGFsbG93IHRo
ZSBPcGVuR0wgRVMgMi4wIHRleHR1cmUgZm9ybWF0cyBhbmQgZG8gbm90IGFsbG93IERlc2t0b3BH
TCB0ZXh0dXJlIGZvcm1hdHMuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29u
dGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJjYW52YXMiKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMi
KTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyB0ZXh0dXJlIGZvcm1hdHMuIik7
CisKKyAgdmFyIGNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbihpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCBvcHRfYm9yZGVyKSB7CisgICAgICB2YXIgYm9yZGVyID0gKG9wdF9ib3JkZXIgPT09IHVuZGVm
aW5lZCkgPyAwIDogb3B0X2JvcmRlcjsKKyAgICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAg
ICAgICAgICAgLy8gbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsICAg
IC8vIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAgIDE2LCAgICAgICAgICAgICAg
ICAvLyB3aWR0aAorICAgICAgICAgICAgICAgICAgICAxNiwgICAgICAgICAgICAgICAgLy8gaGVp
Z2h0CisgICAgICAgICAgICAgICAgICAgIGJvcmRlciwgICAgICAgICAgICAvLyBib3JkZXIKKyAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0LCAgICAgICAgICAgIC8vIGZvcm1hdAorICAgICAgICAg
ICAgICAgICAgICBnbC5VTlNJR05FRF9CWVRFLCAgLy8gdHlwZQorICAgICAgICAgICAgICAgICAg
ICBudWxsKTsgICAgICAgICAgICAgLy8gZGF0YQorICB9CisKKyAgdmFyIHRlc3RWYWxpZEZvcm1h
dCA9IGZ1bmN0aW9uKGludGVybmFsRm9ybWF0LCBmb3JtYXROYW1lKSB7CisgICAgICBjcmVhdGVU
ZXh0dXJlKGludGVybmFsRm9ybWF0LCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAid2FzIGFibGUgdG8g
Y3JlYXRlIHRleHR1cmUgb2YgIiArIGZvcm1hdE5hbWUpOworICB9CisKKyAgdmFyIHRlc3RJbnZh
bGlkRm9ybWF0ID0gZnVuY3Rpb24oaW50ZXJuYWxGb3JtYXQsIGZvcm1hdE5hbWUpIHsKKyAgICAg
IGNyZWF0ZVRleHR1cmUoaW50ZXJuYWxGb3JtYXQsIGludGVybmFsRm9ybWF0KTsKKyAgICAgIHZh
ciBlcnIgPSBnbC5nZXRFcnJvcigpOworICAgICAgaWYgKGVyciA9PSBnbC5OT19FUlJPUikgewor
ICAgICAgICAgIHRlc3RGYWlsZWQoInNob3VsZCBOT1QgYmUgYWJsZSB0byBjcmVhdGUgdGV4dHVy
ZSBvZiB0eXBlICIgKyBmb3JtYXROYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAoZXJyID09IGdsLklO
VkFMSURfRU5VTSB8fCBlcnIgPT0gZ2wuSU5WQUxJRF9WQUxVRSkgeworICAgICAgICAgIHRlc3RQ
YXNzZWQoIm5vdCBhYmxlIHRvIGNyZWF0ZSBpbnZhbGlkIGZvcm1hdDogIiArIGZvcm1hdE5hbWUp
OworICAgICAgfQorICB9CisKKyAgdmFyIGludmFsaWRFbnVtcyA9IFsKKyAgICAnMScsCisgICAg
JzInLAorICAgICczJywKKyAgICAnNCcsCisgICAgJ1JHQjQnLAorICAgICdSR0I1JywKKyAgICAn
UkdCOCcsCisgICAgJ1JHQjEwJywKKyAgICAnUkdCMTInLAorICAgICdSR0IxNicsCisgICAgJ1JH
QkEyJywKKyAgICAnUkdCQTQnLAorICAgICdSR0I1X0ExJywKKyAgICAnUkdCQTgnLAorICAgICdS
R0IxMF9BMicsCisgICAgJ1JHQkExMicsCisgICAgJ1JHQkExNicsCisgICAgJ0JHUicsCisgICAg
J0JHUkEnLAorICAgICdBTFBIQTRfRVhUJywKKyAgICAnQUxQSEE4X0VYVCcsCisgICAgJ0FMUEhB
MTJfRVhUJywKKyAgICAnQUxQSEExNl9FWFQnLAorICAgICdDT01QUkVTU0VEX0FMUEhBJywKKyAg
ICAnQ09NUFJFU1NFRF9MVU1JTkFOQ0UnLAorICAgICdDT01QUkVTU0VEX0xVTUlOQU5DRV9BTFBI
QScsCisgICAgJ0NPTVBSRVNTRURfSU5URU5TSVRZJywKKyAgICAnQ09NUFJFU1NFRF9SR0InLAor
ICAgICdDT01QUkVTU0VEX1JHQkEnLAorICAgICdERVBUSF9DT01QT05FTlQxNicsCisgICAgJ0RF
UFRIX0NPTVBPTkVOVDI0JywKKyAgICAnREVQVEhfQ09NUE9ORU5UMzInLAorICAgICdMVU1JTkFO
Q0U0X0VYVCcsCisgICAgJ0xVTUlOQU5DRThfRVhUJywKKyAgICAnTFVNSU5BTkNFMTJfRVhUJywK
KyAgICAnTFVNSU5BTkNFMTZfRVhUJywKKyAgICAnTFVNSU5BTkNFNF9BTFBIQTRfRVhUJywKKyAg
ICAnTFVNSU5BTkNFNl9BTFBIQTJfRVhUJywKKyAgICAnTFVNSU5BTkNFOF9BTFBIQThfRVhUJywK
KyAgICAnTFVNSU5BTkNFMTJfQUxQSEE0X0VYVCcsCisgICAgJ0xVTUlOQU5DRTEyX0FMUEhBMTJf
RVhUJywKKyAgICAnTFVNSU5BTkNFMTZfQUxQSEExNl9FWFQnLAorICAgICdJTlRFTlNJVFlfRVhU
JywKKyAgICAnSU5URU5TSVRZNF9FWFQnLAorICAgICdJTlRFTlNJVFk4X0VYVCcsCisgICAgJ0lO
VEVOU0lUWTEyX0VYVCcsCisgICAgJ0lOVEVOU0lUWTE2X0VYVCcsCisgICAgJ1JHQjRfRVhUJywK
KyAgICAnUkdCNV9FWFQnLAorICAgICdSR0I4X0VYVCcsCisgICAgJ1JHQjEwX0VYVCcsCisgICAg
J1JHQjEyX0VYVCcsCisgICAgJ1JHQjE2X0VYVCcsCisgICAgJ1JHQkEyX0VYVCcsCisgICAgJ1JH
QkE0X0VYVCcsCisgICAgJ1JHQjVfQTFfRVhUJywKKyAgICAnUkdCQThfRVhUJywKKyAgICAnUkdC
MTBfQTJfRVhUJywKKyAgICAnUkdCQTEyX0VYVCcsCisgICAgJ1JHQkExNl9FWFQnLAorICAgICdT
TFVNSU5BTkNFX0VYVCcsCisgICAgJ1NMVU1JTkFOQ0U4X0VYVCcsCisgICAgJ1NMVU1JTkFOQ0Vf
QUxQSEFfRVhUJywKKyAgICAnU0xVTUlOQU5DRThfQUxQSEE4X0VYVCcsCisgICAgJ1NSR0JfRVhU
JywKKyAgICAnU1JHQjhfRVhUJywKKyAgICAnU1JHQl9BTFBIQV9FWFQnLAorICAgICdTUkdCOF9B
TFBIQTgnCisgIF07CisKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGludmFsaWRFbnVtcy5sZW5n
dGg7ICsraWkpIHsKKyAgICB2YXIgZm9ybWF0TmFtZSA9IGludmFsaWRFbnVtc1tpaV0KKyAgICBp
ZiAoZGVza3RvcEdMW2Zvcm1hdE5hbWVdID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGRlYnVnKCJi
YWQgZm9ybWF0IiArIGZvcm1hdE5hbWUpCisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RJbnZhbGlk
Rm9ybWF0KGRlc2t0b3BHTFtmb3JtYXROYW1lXSwgIkdMXyIgKyBmb3JtYXROYW1lKTsKKyAgICB9
CisgIH0KKworICB2YXIgdmFsaWRFbnVtcyA9IFsKKyAgICAnQUxQSEEnLAorICAgICdSR0InLAor
ICAgICdSR0JBJywKKyAgICAnTFVNSU5BTkNFJywKKyAgICAnTFVNSU5BTkNFX0FMUEhBJworICBd
OworCisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB2YWxpZEVudW1zLmxlbmd0aDsgKytpaSkgewor
ICAgIHZhciBmb3JtYXROYW1lID0gdmFsaWRFbnVtc1tpaV0KKyAgICB0ZXN0VmFsaWRGb3JtYXQo
Z2xbZm9ybWF0TmFtZV0sICJnbC4iICsgZm9ybWF0TmFtZSk7CisgIH0KKworICBkZWJ1ZygiIik7
CisgIGRlYnVnKCJjaGVja2luZyBub24gMCBib3JkZXIgcGFyYW1ldGVyIHRvIGdsLlRleEltYWdl
MkQiKTsKKyAgY3JlYXRlVGV4dHVyZShnbFsnUkdCQSddLCBnbFsnUkdCQSddLCAxKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICJub24g
MCBib3JkZXIgdG8gZ2wuVGV4SW1hZ2UyRCBzaG91bGQgcmV0dXJuIElOVkFMSURfVkFMVUUiKTsK
KworCisgIHZhciBjaGVja1R5cGVzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworCisgICAg
dmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisgICAgZ2wu
dW5pZm9ybTFpKGxvYywgMCk7CisKKyAgICB2YXIgY2hlY2tUeXBlID0gZnVuY3Rpb24ociwgZywg
YiwgYSwgdHlwZSwgZm9ybWF0LCBidWYpIHsKKyAgICAgIHZhciB0eXBlTmFtZSA9IHd0dS5nbEVu
dW1Ub1N0cmluZyhnbCwgdHlwZSk7CisgICAgICB2YXIgZm9ybWF0TmFtZSA9IHd0dS5nbEVudW1U
b1N0cmluZyhnbCwgZm9ybWF0KTsKKyAgICAgIHZhciBkZXNjID0gImZvcm1hdDogIiArIGZvcm1h
dE5hbWUgKyAiLCB0eXBlOiAiICsgdHlwZU5hbWU7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBk
ZWJ1ZygiY2hlY2tpbmcgZ2wudGV4SW1hZ2UyRCB3aXRoICIgKyBkZXNjICsgIiBhbmQgYnVmZmVy
IHR5cGUgIiArCisgICAgICAgICAgICBidWYuY29uc3RydWN0b3IubmFtZSk7CisgICAgICBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAvLyBsZXZlbAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQsICAgICAgICAgICAg
Ly8gaW50ZXJuYWxGb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgMiwgICAgICAgICAgICAgICAg
IC8vIHdpZHRoCisgICAgICAgICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAvLyBoZWln
aHQKKyAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgIC8vIGJvcmRlcgorICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQsICAgICAgICAgICAgLy8gZm9ybWF0CisgICAgICAgICAg
ICAgICAgICAgIHR5cGUsICAgICAgICAgICAgICAvLyB0eXBlCisgICAgICAgICAgICAgICAgICAg
IGJ1Zik7ICAgICAgICAgICAgICAvLyBkYXRhCisKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgICAgICJnbC50ZXhJbWFnZTJEIHdpdGggIiAr
IGRlc2MgKyAiIHNob3VsZCBnZW5lcmF0ZSBOT19FUlJPUiIpOworCisgICAgICB3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbcixnLGIsYV0sCisgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmUgIiArIGRl
c2MgKyAiIHNob3VsZCBkcmF3IHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAgciArICIs
ICIgKyBnICsgIiwgIiArIGIgKyAiLCAiICsgYSk7CisKKyAgIH0KKyAgIGNoZWNrVHlwZSgKKyAg
ICAgICAwLCAyNTUsIDAsIDI1NSwgZ2wuVU5TSUdORURfQllURSwgZ2wuUkdCQSwKKyAgICAgICBu
ZXcgVWludDhBcnJheSgKKyAgICAgICAgIFsgMCwgMjU1LCAwLCAyNTUsCisgICAgICAgICAgIDAs
IDI1NSwgMCwgMjU1LAorICAgICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgICAgMCwg
MjU1LCAwLCAyNTVdKSk7CisgICBjaGVja1R5cGUoCisgICAgICAgMCwgMjU1LCAwLCAyNTUsIGds
LlVOU0lHTkVEX0JZVEUsIGdsLlJHQkEsCisgICAgICAgbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KAor
ICAgICAgICAgWyAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisg
ICAgICAgICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAgICAwLCAyNTUsIDAsIDI1NV0pKTsK
KyAgIGNoZWNrVHlwZSgKKyAgICAgICAwLCAwLCAyNTUsIDI1NSwgZ2wuVU5TSUdORURfU0hPUlRf
NF80XzRfNCwgZ2wuUkdCQSwKKyAgICAgICBuZXcgVWludDE2QXJyYXkoCisgICAgICAgICBbIDI1
NSwgMjU1LAorICAgICAgICAgICAyNTUsIDI1NSwKKyAgICAgICAgICAgMjU1LCAyNTUsCisgICAg
ICAgICAgIDI1NSwgMjU1XSkpOworICAgY2hlY2tUeXBlKAorICAgICAgIDAsIDI1NSwgMCwgMjU1
LCBnbC5VTlNJR05FRF9TSE9SVF81XzZfNSwgZ2wuUkdCLAorICAgICAgIG5ldyBVaW50MTZBcnJh
eSgKKyAgICAgICAgIFsgMjAxNiwgMjAxNiwKKyAgICAgICAgICAgMjAxNiwgMjAxNiwKKyAgICAg
ICAgICAgMjAxNiwgMjAxNiwKKyAgICAgICAgICAgMjAxNiwgMjAxNl0pKTsKKyAgIGNoZWNrVHlw
ZSgKKyAgICAgICAwLCAwLCAyNTUsIDI1NSwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgZ2wu
UkdCQSwKKyAgICAgICBuZXcgVWludDE2QXJyYXkoCisgICAgICAgICBbIDYzLCA2MywKKyAgICAg
ICAgICAgNjMsIDYzLAorICAgICAgICAgICA2MywgNjMsCisgICAgICAgICAgIDYzLCA2M10pKTsK
KyAgIGNoZWNrVHlwZSgKKyAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIGdsLlVOU0lHTkVEX0JZ
VEUsIGdsLkxVTUlOQU5DRSwKKyAgICAgICBuZXcgVWludDhBcnJheShbCisgICAgICAgICAgIDI1
NSwKKyAgICAgICAgICAgMjU1LAorICAgICAgICAgICAyNTUsCisgICAgICAgICAgIDI1NV0pKTsK
KyAgIGNoZWNrVHlwZSgKKyAgICAgICAwLCAwLCAwLCAxMjgsIGdsLlVOU0lHTkVEX0JZVEUsIGds
LkFMUEhBLAorICAgICAgIG5ldyBVaW50OEFycmF5KFsKKyAgICAgICAgICAgMTI4LAorICAgICAg
ICAgICAxMjgsCisgICAgICAgICAgIDEyOCwKKyAgICAgICAgICAgMTI4XSkpOworICAgY2hlY2tU
eXBlKAorICAgICAgIDEyOCwgMTI4LCAxMjgsIDE5MiwgZ2wuVU5TSUdORURfQllURSwgZ2wuTFVN
SU5BTkNFX0FMUEhBLAorICAgICAgIG5ldyBVaW50OEFycmF5KFsKKyAgICAgICAgICAgMTI4LCAx
OTIsCisgICAgICAgICAgIDEyOCwgMTkyLAorICAgICAgICAgICAxMjgsIDE5MiwKKyAgICAgICAg
ICAgMTI4LCAxOTJdKSk7CisgIH0KKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1
YWQoZ2wpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKyAgY2hl
Y2tUeXBlcygpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dGV4dHVyZS1oZC1kcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1oZC1kcGkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MTI2ZmFkOWY3NTE3ODdmOWMyMzM5MzAzYjJjYzNkMjQyZTg2YzE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLWhkLWRwaS5odG1sCkBAIC0wLDAg
KzEsMTE3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBIRC1EUEkgaXNzdWVzIHRleHR1cmUgY29uZm9ybWFuY2UgdGVzdC48L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwor
dmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworCitmdW5jdGlvbiBmaWxs
SW5NaXBzKGdsLCBzaXplKSB7CisgIC8vIGZpbGwgaW4gdGhlIG1pcHMKKyAgdmFyIGxldmVsID0g
MTsKKyAgZm9yICg7OykgeworICAgIHNpemUgLz0gMjsKKyAgICBpZiAoc2l6ZSA8IDEpIHsKKyAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB2YXIgbnVtQnl0ZXMgPSBzaXplICogc2l6ZSAqIDQ7Cisg
ICAgdmFyIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KG51bUJ5dGVzKTsKKyAgICBmb3IgKHZhciBq
aiA9IDA7IGpqIDwgbnVtQnl0ZXM7IGpqICs9IDQpIHsKKyAgICAgIHBpeGVsc1tqaiArIDBdID0g
MDsKKyAgICAgIHBpeGVsc1tqaiArIDFdID0gMjU1OworICAgICAgcGl4ZWxzW2pqICsgMl0gPSAw
OworICAgICAgcGl4ZWxzW2pqICsgM10gPSAyNTU7CisgICAgfQorICAgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgc2l6ZSwgc2l6ZSwgMCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgcGl4ZWxzKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q2FudmFzKHNpemUp
IHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdGluZyAyRCBjYW52YXMgc2l6ZSAiICsgc2l6
ZSArICIsICIgKyBzaXplKTsKKworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CisgIGNhbnZhcy53aWR0aCA9IHNpemU7CisgIGNhbnZhcy5oZWlnaHQgPSBz
aXplOworICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgIGN0eC5maWxsU3R5
bGUgPSAicmdiKDAsMjU1LDApIjsKKyAgY3R4LmZpbGxSZWN0KDAsIDAsIHNpemUsIHNpemUpOwor
CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgY2FudmFzKTsKKworICBmaWxsSW5NaXBzKGds
LCBzaXplKTsKKworICAvLyBEcmF3LiBJZiB0aGlzIGFuIEhELURQSSBkZXZpY2UgYW5kIHRoZSAy
ZCBjYW52YXMgaXMgZG91YmxlIHJlcyBvciBsYXJnZXIKKyAgLy8gdGhlIGltcGxlbWVudGF0aW9u
IG11c3Qgc2NhbGUgdG8gQ1NTIHBpeGVscyAoaWUsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCkoCisgIC8vIHdoZW4gZG9pbmcgdGhlIGNvcHkgaW4gdGV4SW1hZ2UyRC4gSWYgaXQgaGFzIG5v
dCBzY2FsZWQgYW5kIGluc3RlYWQgZG9uZQorICAvLyBhIGRpcmVjdCBjb3B5IG9mIHRoZSBsYXJn
ZXIgdGV4dHVyZSB0aGlzIHRlc3Qgd2lsbCBub3QgaGF2ZSBjcmVhdGVkIGVub3VnaCBtaXBzCisg
IC8vIGFuZCB3aWxsIHRoZXJlZm9yZSBub3QgYmUgInRleHR1cmUgY29tcGxldGUiIGFuZCB3aWxs
IHJlbmRlciBpbiBibGFjay4KKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1
LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RXZWJHTChzaXplKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoInRl
c3RpbmcgV2ViR0wgY2FudmFzIHNpemUgIiArIHNpemUgKyAiLCAiICsgc2l6ZSk7CisKKyAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICBjYW52YXMud2lk
dGggPSBzaXplOworICBjYW52YXMuaGVpZ2h0ID0gc2l6ZTsKKyAgdmFyIGdsMiA9IHd0dS5jcmVh
dGUzRENvbnRleHQoY2FudmFzKTsKKyAgZ2wyLmNsZWFyQ29sb3IoMCwxLDAsMSk7CisgIGdsMi5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGNhbnZhcyk7CisKKyAgZmlsbEluTWlwcyhnbCwgc2l6ZSk7CisKKyAgLy8gRHJhdy4gSWYgdGhp
cyBhbiBIRC1EUEkgZGV2aWNlIGNoZWNrIGZvciAyIHBvc3NpYmxlIGJ1Z3MuCisgIC8vCisgIC8v
IDEpIHRoZSBXZWJHTCBjYW52YXMgaXMgZG91YmxlIHJlcyBvciBsYXJnZXIuIFRoYXQncyBqdXN0
IGEgYnVnIHBlcmlvZCBhbmQKKyAgLy8gICAgaXMgY2hlY2tlZCBmb3IgaW4gYW5vdGhlciB0ZXN0
IGJ1dCB3b3VsZCBhbHNvIGZhaWwgaGVyZS4KKyAgLy8KKyAgLy8gMikgdGhlIFdlYkdMIGNhbnZh
cyBpcyBzaW5nbGUgcmVzIGJ1dCB0aGUgY29kZSB0aGUgc2NhbGVzIGEgZG91YmxlIHJlcworICAv
LyAgICAyZCBjYW52YXMgYWxzbyBtaXN0YWtlbmx5IHNjYWxlcyBhIHNpbmdsZSByZXMgV2ViR0wg
Y2FudmFzLgorICAvLworICAvLyBJZiBpdCBoYXMgYmVlbiBzY2FsZWQgdGhlbiB3ZSdsbCBoYXZl
IHRoZSB3cm9uZyBraW5kIG9mIG1pcHMgY2hhaW4gaGVyZS4KKyAgLy8gTGV2ZWwgMCB3aWxsIGJl
IGhhbGYgcmVzb2x1dGlvbi4gTGV2ZWwgMSB3aWxsIGJlIHRoZSBzYW1lIHJlc29sdXRpb24KKyAg
Ly8gYW5kIHdpbGwgdGhlcmVmb3JlIG5vdCBiZSAidGV4dHVyZSBjb21wbGV0ZSIgYW5kIHdpbGwg
cmVuZGVyIGluIGJsYWNrLgorICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30K
KwordGVzdENhbnZhcyg0KTsKK3Rlc3RDYW52YXMoNTEyKTsKK3Rlc3RXZWJHTCg0KTsKK3Rlc3RX
ZWJHTCg1MTIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUt
bWlwcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW1pcHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjAzOGI4NDc1NGEwM2NjYzc0MDgzMDM4OWJkNWI5ZjY0YWY2MDU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW1pcHMuaHRtbApAQCAtMCwwICsxLDI5NyBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
dGV4dHVyZSBtaXBzIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBzdHlsZT0i
d2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit1bmlmb3JtIHZlYzQgdU11bHQ7CithdHRyaWJ1
dGUgdmVjNCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZl
YzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9u
ICogdU11bHQ7CisgICAgdGV4Q29vcmQgPSB0ZXhDb29yZDA7Cit9Cis8L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHRleDsKK3ZhcnlpbmcgdmVjMiB0ZXhD
b29yZDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwg
dGV4Q29vcmQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIGNh
bnZhczsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Z1bmN0aW9uIGluaXQoKQoreworICBk
ZXNjcmlwdGlvbigiQ2hlY2tzIG1pcCBpc3N1ZXMiKTsKKworICBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworICBzaG91bGRCZSgiY2FudmFzLndpZHRoIiwgIjIi
KTsKKyAgc2hvdWxkQmUoImNhbnZhcy5oZWlnaHQiLCAiMiIpOworCisgIHZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoY2FudmFzKTsKKworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC5nZW5lcmF0ZU1p
cG1hcChnbC5URVhUVVJFXzJEKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJmb3IgZ2VuZXJhdGVNaXBtYXAgd2l0aCBtaXAgMCBpcyAweDAiKTsKKyAg
Z2wudGV4SW1hZ2UyRCgKKyAgICAgIGdsLlRFWFRVUkVfMkQsIDEsIGdsLlJHQkEsIDEsIDEsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICBuZXcgVWludDhBcnJheSg0KSk7Cisg
IGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImZvciBnZW5lcmF0ZU1pcG1hcCB3aXRoIG1pcCAw
IGlzIDB4MCIpOworCisgIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsKKyAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVY
VFVSRV9DVUJFX01BUCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiZm9yIGdlbmVyYXRlTWlwbWFwIHdpdGggbWlwIDAgaXMgMHgwIik7CisKKyAgdmFy
IGZhY2VzID0gWworICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICBnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9ZLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgICBnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aCisgIF07CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBmYWNlcy5sZW5ndGg7ICsraWkpIHsK
KyAgICBnbC50ZXhJbWFnZTJEKAorICAgICAgICBmYWNlc1tpaV0sIDAsIGdsLlJHQkEsIDIsIDIs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIG5ldyBVaW50OEFycmF5KDQg
KiAyICogMikpOworICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfQ1VCRV9NQVApOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGlpID09IDUgPyBnbC5OT19FUlJPUiA6IGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiZm9yIGdlbmVyYXRlTWlwbWFwIHdpdGggIiArIChpaSArIDEpICsg
IiBmYWNlcyIpOworICB9CisKKyAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworICB2YXIg
cHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgICBnbCwgWyd2c2hhZGVyJywgJ2ZzaGFk
ZXInXSwgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQwJ10sIFswLCAxXSk7CisKKyAgZ2wuZGlzYWJs
ZShnbC5ERVBUSF9URVNUKTsKKyAgZ2wuZGlzYWJsZShnbC5CTEVORCk7CisKKyAgdmFyIGNvbG9y
cyA9IHsKKyAgICBibHVlOiBbMCwgMCwgMjU1LCAyNTVdLAorICAgIHJlZDogWzI1NSwgMCwgMCwg
MjU1XSwKKyAgICBncmVlbjogIFswLCAyNTUsIDAsIDI1NV0sCisgICAgY3lhbjogWzEyOCwgMjU1
LCAyNTUsIDI1NV0sCisgICAgYmxhY2s6IFswLCAwLCAwLCAyNTVdLAorICAgIGJsYW5rOiBbMCwg
MCwgMCwgMF0KKyAgfTsKKworICB2YXIgbWlwcyA9IFsKKyAgXTsKKworICB2YXIgdGV4TG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgiKTsKKyAgZ2wudW5pZm9ybTFpKHRl
eExvYywgMCk7CisgIHZhciBtdWx0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJ1TXVsdCIpOworCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgdmFyIGNsZWFyVGV4ID0gY3JlYXRlVGV4dHVyZSgpOworICBnbC51
bmlmb3JtNGYobXVsdExvYywgMSwgMSwgMSwgMSk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIGNsZWFyVGV4KTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCAxNiwgMTYsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICBkZWJ1
ZygnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNiwgMTYsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOycpOworICBzZXRNaXBEYXRhKDAsIDE2LCAn
YmxhbmsnKTsKKyAgbWFrZURpdk1pcENoYWluKCk7CisgIGdlbmVyYXRlTWlwbWFwKCk7CisgIGNo
ZWNrKCdibGFuaycsICJ0ZXh0dXJlIGNyZWF0ZWQgd2l0aCBudWxsIHRoYXQgaGFzIGFsbCBtaXBz
Iik7CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICB2YXIgdGV4ID0gY3JlYXRlVGV4dHVyZSgpOworICBnbC51bmlmb3JtNGYobXVs
dExvYywgMSwgMSwgMSwgMSk7CisKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
KTsKKyAgLy8gMTZ4MTYgdGV4dHVyZSBubyBtaXBzCisgIGZpbGxMZXZlbCh0ZXgsIDAsIDE2LCAn
Y3lhbicpOworCisgIGNoZWNrKCdibGFjaycsCisgICAgICAgICJ0ZXh0dXJlIHRoYXQgaXMgbWlz
c2luZyBtaXBzIHdoZW4gVEVYVFVSRV9NSU5fRklMVEVSIG5vdCBORUFSRVNUIG9yIExJTkVBUiIp
OworCisgIGdlbmVyYXRlTWlwbWFwKCk7CisKKyAgY2hlY2soJ2N5YW4nLCAidGV4dHVyZSB0aGF0
IGhhcyBhbGwgbWlwcyIpOworCisgIC8vIEZpbGwgaW4gdGhlIGJvdHRvbSAyIG1pcHMgd2l0aCBh
IGRpZmZlcmVudCBjb2xvci4KKyAgZmlsbExldmVsKHRleCwgNCwgMSwgJ2dyZWVuJyk7CisgIGZp
bGxMZXZlbCh0ZXgsIDMsIDIsICdncmVlbicpOworCisgIC8vIENob29zZSB0aGUgbmVhcmVzdCBt
aXAKKyAgdGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIs
IGdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisKKyAgY2hlY2soJ2dyZWVuJywgInRleHR1cmUg
dGhhdCBpcyBvbmx5IHVzaW5nIHRoZSBzbWFsbGVzdCAyIG1pcHMiKTsKKworICBnbC51bmlmb3Jt
NGYobXVsdExvYywgMTYsIDE2LCAxLCAxKTsKKworICBjaGVjaygnY3lhbicsICJ0ZXh0dXJlIHRo
YXQgaXMgdXNpbmcgb25seSB0aGUgbGFyZ2VzdCAyIG1pcHMiKTsKKworICAvLyBTZXQgdGhlIHRv
cCBsZXZlbAorICBmaWxsTGV2ZWwodGV4LCAwLCAxLCAncmVkJyk7CisgIGNoZWNrKCdyZWQnLAor
ICAgICAgICAidGV4dHVyZSB0aGF0IGlzIG9ubHkgdXNpbmcgdGhlIHRvcCBsZXZlbCBldmVuIHRo
b3VnaCBvdGhlciBsZXZlbHMgYXJlIGRlZmluZWQiKTsKKworICAvLyBTZXQgdGhlIHRvcCAyIGxl
dmVscyB1c2luZyBnZW5lcmF0ZU1pcG1hcAorICBmaWxsTGV2ZWwodGV4LCAwLCAyLCAnYmx1ZScp
OworICBnZW5lcmF0ZU1pcG1hcCgpOworCisgIGNoZWNrKCdibHVlJywKKyAgICAgICAgInRleHR1
cmUgdGhhdCBpcyBvbmx5IHVzaW5nIHRoZSB0b3AgMiBsZXZlbHMgZXZlbiB0aG91Z2ggb3RoZXIg
bGV2ZWxzIGFyZSBkZWZpbmVkIik7CisKKyAgLy8gU2V0IHRoZSB0b3AgMiBsZXZlbHMgYmFjayB0
byBzaXplcyB0aGF0IGVuZCB1cCB1c2luZyBsZXZlbHMgMiwgMywgYW5kIDQgYWdhaW4uCisgIGZp
bGxMZXZlbCh0ZXgsIDAsIDE2LCAnYmx1ZScpOworICBmaWxsTGV2ZWwodGV4LCAxLCA4LCAnYmx1
ZScpOworICBjaGVjaygnYmx1ZScsICJ0ZXh0dXJlIHRoYXQgaXMgb25seSB1c2luZyB0aGUgbGFy
Z2VzdCAyIG1pcHMiKTsKKyAgZ2wudW5pZm9ybTRmKG11bHRMb2MsIDEsIDEsIDEsIDEpOworICBj
aGVjaygnZ3JlZW4nLCAidGV4dHVyZSB0aGF0IGlzIG9ubHkgdXNpbmcgdGhlIHNtYWxsZXN0IDIg
bWlwcyIpOworCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgdmFyIHRleCA9IGNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wudW5pZm9ybTRm
KG11bHRMb2MsIDEsIDEsIDEsIDEpOworICBmaWxsTGV2ZWwodGV4LCAwLCA4LCAnY3lhbicpOwor
ICBnZW5lcmF0ZU1pcG1hcCgpOworICBjaGVjaygnY3lhbicsICJ0ZXh0dXJlIHRoYXQgaGFzIDMg
bWlwcyIpOworCisgIGZpbGxMZXZlbCh0ZXgsIDAsIDE2LCAnYmx1ZScpOworICB0ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAg
Y2hlY2soJ2JsdWUnLCAidGV4dHVyZSB0aGF0IGlzIG9ubHkgdXNpbmcgdG9wIG1pcHMiKTsKKwor
ICBmaWxsTGV2ZWwodGV4LCAwLCA4LCAncmVkJyk7CisgIHRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QpOwor
ICBjaGVjaygnY3lhbicsICJ0ZXh0dXJlIHRoYXQgaXMgb25seSB1c2luZyBzbWFsbGVzdCBtaXBz
Iik7CisKKyAgZ2wudW5pZm9ybTRmKG11bHRMb2MsIDE2LCAxNiwgMSwgMSk7CisgIGNoZWNrKCdy
ZWQnLCAidGV4dHVyZSB0aGF0IGlzIHVzaW5nIG9ubHkgdGhlIGxhcmdlc3QgbWlwIik7CisKKyAg
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICB2YXIgdGV4ID0gY3JlYXRlVGV4dHVyZSgpOworICBnbC51bmlmb3JtNGYobXVsdExvYywgMSwg
MSwgMSwgMSk7CisgIGZpbGxMZXZlbCh0ZXgsIDIsIDEsICdncmVlbicpOworICBmaWxsTGV2ZWwo
dGV4LCAxLCAyLCAnZ3JlZW4nKTsKKyAgZmlsbExldmVsKHRleCwgMCwgNCwgJ2dyZWVuJyk7Cisg
IGNoZWNrKCdncmVlbicsICJ0ZXh0dXJlIHRoYXQgd2FzIGJ1aWx0IHNtYWxsZXN0IG1pcCBmaXJz
dCIpOworCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgdmFyIHRleCA9IGNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wudW5pZm9ybTRmKG11
bHRMb2MsIDEsIDEsIDEsIDEpOworICBmaWxsTGV2ZWwodGV4LCAwLCAxNiwgJ3JlZCcpOworICBn
ZW5lcmF0ZU1pcG1hcCgpOworICBjaGVjaygncmVkJywgInRleHR1cmUgd2l0aCAxIGdlbm1pcG1h
cHMiKTsKKyAgZmlsbExldmVsKHRleCwgMCwgMTYsICdibHVlJyk7CisgIGdlbmVyYXRlTWlwbWFw
KCk7CisgIGZpbGxMZXZlbCh0ZXgsIDAsIDE2LCAnZ3JlZW4nKTsKKyAgZ2VuZXJhdGVNaXBtYXAo
KTsKKyAgY2hlY2soJ2dyZWVuJywgInRleHR1cmUgd2l0aCAyIGdlbm1pcG1hcHMiKTsKKworICAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9y
cy4iKTsKKworICBmdW5jdGlvbiBjcmVhdGVUZXh0dXJlKCkgeworICAgIGRlYnVnKCI8aHIvPmds
LmNyZWF0ZVRleHR1cmUoKSIpOworICAgIG1pcHMgPSBbXTsKKyAgICBtYWtlRGl2TWlwQ2hhaW4o
KTsKKyAgICByZXR1cm4gZ2wuY3JlYXRlVGV4dHVyZSgpOworICB9CisKKyAgZnVuY3Rpb24gdGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCB2YWx1ZSkgeworICAgIGRlYnVnKCJnbC50ZXhQYXJh
bWV0ZXJpKCIgKworICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGFyZ2V0KSArICIs
ICIgKworICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgcG5hbWUpICsgIiwgIiArCisg
ICAgICAgICAgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB2YWx1ZSkgKyAiKSIpCisgICAgZ2wudGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgIH0KKworICBmdW5jdGlvbiBnZW5l
cmF0ZU1pcG1hcCgpIHsKKyAgICBkZWJ1ZygiZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8y
RCkiKTsKKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKyAgICB2YXIgbWlw
MCA9IG1pcHNbMF07CisgICAgdmFyIHNpemUgPSBtaXAwLnNpemU7CisgICAgdmFyIGxldmVsID0g
MTsKKyAgICBmb3IoOzspIHsKKyAgICAgIHNpemUgPSBNYXRoLmZsb29yKHNpemUgLyAyKTsKKyAg
ICAgIGlmICghc2l6ZSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHNldE1pcERh
dGEobGV2ZWwsIHNpemUsIG1pcDAuY29sb3IpOworICAgICAgKytsZXZlbDsKKyAgICB9CisgICAg
bWFrZURpdk1pcENoYWluKCk7CisgIH0KKworICBmdW5jdGlvbiBjaGVjayhjb2xvciwgbXNnKSB7
CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMo
Z2wsIGNvbG9yc1tjb2xvcl0sIG1zZyArICIgc2hvdWxkIGRyYXcgd2l0aCAiICsgY29sb3IpOwor
ICB9CisKKyAgZnVuY3Rpb24gZmlsbExldmVsKHRleCwgbGV2ZWwsIHNpemUsIGNvbG9yKSB7Cisg
ICAgc2V0TWlwRGF0YShsZXZlbCwgc2l6ZSwgY29sb3IpOworICAgIGRlYnVnKCJnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsICIgKyBsZXZlbCArICIsIGdsLlJHQkEsICIgKyBzaXplICsgIiwg
IiArIHNpemUgKworICAgICAgICAgICIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsICIg
KyBjb2xvciArICIpOyIpOworICAgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4LCBzaXplLCBzaXpl
LCBjb2xvcnNbY29sb3JdLCBsZXZlbCk7CisgICAgbWFrZURpdk1pcENoYWluKCk7CisgIH0KKwor
ICBmdW5jdGlvbiBzZXRNaXBEYXRhKGxldmVsLCBzaXplLCBjb2xvcikgeworICAgIG1pcHNbbGV2
ZWxdID0geworICAgICAgc2l6ZTogc2l6ZSwKKyAgICAgIGNvbG9yOiBjb2xvcgorICAgIH07Cisg
IH0KKworICBmdW5jdGlvbiBtYWtlRGl2TWlwQ2hhaW4oY29sb3IpIHsKKyAgICB2YXIgaHRtbCA9
IFsKKyAgICAgICc8ZGl2IHN0eWxlPSJoZWlnaHQ6IDY4cHg7IG1hcmdpbi10b3A6IDVweCI+JywK
KyAgICAgICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+bWlwczogPC9kaXY+J107CisgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IDU7ICsraWkpIHsKKyAgICAgIHZhciBtaXAgPSBtaXBzW2lpXTsK
KyAgICAgIGlmIChtaXApIHsKKyAgICAgICAgaHRtbC5wdXNoKG1ha2VEaXZTcXVhcmUobWlwLnNp
emUsIG1pcC5jb2xvcikpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaHRtbC5wdXNoKG1ha2VE
aXZTcXVhcmUoMTYsIHVuZGVmaW5lZCkpOworICAgICAgfQorICAgIH0KKyAgICBodG1sLnB1c2go
IjwvZGl2PiIpOworICAgIGRlYnVnKGh0bWwuam9pbigiIikpOworICB9CisKKyAgZnVuY3Rpb24g
bWFrZURpdlNxdWFyZShzaXplLCBjb2xvcikgeworICAgIHNpemUgKj0gNDsKKyAgICB2YXIgYyA9
IGNvbG9yID8gY29sb3JzW2NvbG9yXSA6IFsyNTUsMjU1LDI1NV07CisgICAgdmFyIGJvcmRlciA9
IGNvbG9yID8gJ3NvbGlkJyA6ICdkYXNoZWQnOworICAgIHJldHVybiAnPGRpdiBzdHlsZT0iZmxv
YXQ6bGVmdDsgd2lkdGg6ICcgKyBzaXplICsgJ3B4OyBoZWlnaHQ6ICcgKyBzaXplICsKKyAgICAg
ICAgICAgJ3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAnICsgcmdiKGMpICsKKyAgICAgICAgICAgJzsg
Ym9yZGVyOiAxcHggJyArIGJvcmRlciArICcgYmxhY2s7IG1hcmdpbi1yaWdodDogM3B4OyI+PC9k
aXY+JzsKKyAgfQorCisgIGZ1bmN0aW9uIHJnYihjKSB7CisgICAgcmV0dXJuICdyZ2IoJyArIGNb
MF0gKyAnLCcgKyBjWzFdICsgJywnICsgY1syXSArJyknOworICB9Cit9CisKK2luaXQoKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtbnBvdC12aWRlby5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGUwN2ZiMmJm
MWJhNmIxM2Y2NmIzNWM1NTM3NjU4ZjM4MmQyNDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvbWlzYy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbApAQCAtMCwwICsxLDE0MCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gbnVsbDsK
K3ZhciB0ZXh0dXJlTG9jID0gbnVsbDsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsK
KworaW5pdFRlc3RpbmdIYXJuZXNzKCk7CisKK2Z1bmN0aW9uIGluaXQoKQoreworICAgIGRlc2Ny
aXB0aW9uKCdWZXJpZnkgbnBvdCB2aWRlbycpOworCisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlIik7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KGNhbnZhcyk7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOwor
CisgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICBnbC5jbGVhckRlcHRoKDEpOworICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAg
ICAvLyBEaXNhYmxlIGFueSB3cml0ZXMgdG8gdGhlIGFscGhhIGNoYW5uZWwKKyAgICBnbC5jb2xv
ck1hc2soMSwgMSwgMSwgMCk7CisKKyAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ0ZXgiKTsKKworICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWQiKTsKKyAgICB3dHUuc3RhcnRQbGF5aW5nQW5kV2FpdEZvclZpZGVvKHZpZGVv
LCBydW5UZXN0KTsKK30KKworZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uKHZpZGVvRWxlbWVudCwg
dXNlVGV4U3ViSW1hZ2UyRCwgZmxpcFksIHRvcENvbG9yLCBib3R0b21Db2xvciwgYmFkTWluRmls
dGVyLCBiYWRDbGFtcCwgZ2VuTWlwcykKK3sKKyAgICBkZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRl
eFN1YkltYWdlMkQgPyAndGV4U3ViSW1hZ2UyRCcgOiAndGV4SW1hZ2UyRCcpICsKKyAgICAgICAg
ICAnIHdpdGggZmxpcFk9JyArIGZsaXBZKTsKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCisgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgLy8gU2V0IHVwIHBp
eGVsIHN0b3JlIHBhcmFtZXRlcnMKKyAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9Z
X1dFQkdMLCBmbGlwWSk7CisgICAgLy8gVXBsb2FkIHRoZSB2aWRlb0VsZW1lbnQgaW50byB0aGUg
dGV4dHVyZQorICAgIGRlYnVnKCJzaXplOiAiICsgdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggKyAi
eCIgKyB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpOworICAgIGlmICh1c2VUZXhTdWJJbWFnZTJE
KSB7CisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAg
ICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLAorICAgICAgICAg
ICAgICAgICAgICAgIHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9I
ZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdmlkZW9FbGVtZW50KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIHZpZGVvRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gU2V0
IHVwIHRleHR1cmUgcGFyYW1ldGVycworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGlmIChiYWRNaW5GaWx0
ZXIpIHsKKyAgICAgICAgZGVidWcoImJhZCBtaW4gZmlsdGVyIik7CisgICAgICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJf
TUlQTUFQX05FQVJFU1QpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJnb29kIG1pbiBm
aWx0ZXIiKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgfQorICAgIGlmIChiYWRDbGFtcCkgewor
ICAgICAgICBkZWJ1ZygiYmFkIGNsYW1wIik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLlJFUEVBVCk7CisgICAgICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdvb2QgY2xhbXAiKTsKKyAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIH0KKyAgICBpZiAoZ2VuTWlwcykg
eworICAgICAgICBkZWJ1ZygiZ2VuZXJhdGUgbWlwcyIpOworICAgICAgICBnbC5nZW5lcmF0ZU1p
cG1hcChnbC5URVhUVVJFXzJEKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJzaG91bGQgYmUgSU5WQUxJRF9PUEVSQVRJT04iKTsKKyAgICB9
CisKKy8vICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisvLyAg
ICBjLndpZHRoID0gMTY7CisvLyAgICBjLmhlaWdodCA9IDE2OworLy8gICAgYy5zdHlsZS5ib3Jk
ZXIgPSAiMXB4IHNvbGlkIGJsYWNrIjsKKy8vICAgIHZhciBjdHggPSBjLmdldENvbnRleHQoIjJk
Iik7CisvLyAgICBjdHguZHJhd0ltYWdlKHZpZGVvRWxlbWVudCwgMCwgMCwgMTYsIDE2KTsKKy8v
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyk7CisKKyAgICAvLyBQb2ludCB0aGUgdW5p
Zm9ybSBzYW1wbGVyIHRvIHRleHR1cmUgdW5pdCAwCisgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVM
b2MsIDApOworICAgIC8vIERyYXcgdGhlIHRyaWFuZ2xlcworICAgIHd0dS5jbGVhckFuZERyYXdV
bml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworICAgIC8vIENoZWNrIGEgZmV3IHBpeGVscyBu
ZWFyIHRoZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZQorICAgIC8vIHRo
ZSByaWdodCBjb2xvci4KKyAgICB2YXIgdG9sZXJhbmNlID0gNTsKKyAgICBkZWJ1ZygiQ2hlY2tp
bmcgbG93ZXIgbGVmdCBjb3JuZXIiKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCA0
LCAyLCAyLCBib3R0b21Db2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRCZSAi
ICsgYm90dG9tQ29sb3IsIHRvbGVyYW5jZSk7CisgICAgZGVidWcoIkNoZWNraW5nIHVwcGVyIGxl
ZnQgY29ybmVyIik7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgZ2wuY2FudmFzLmhl
aWdodCAtIDgsIDIsIDIsIHRvcENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNob3Vs
ZEJlICIgKyB0b3BDb2xvciwgdG9sZXJhbmNlKTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QodmlkZW9FbGVtZW50KQoreworICAgIHZhciByZWQgPSBbMjU1LCAwLCAwXTsK
KyAgICB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwXTsKKyAgICB2YXIgYmxhY2sgPSBbMCwgMCwgMF07
CisgICAgcnVuT25lSXRlcmF0aW9uKHZpZGVvRWxlbWVudCwgZmFsc2UsIHRydWUsIGJsYWNrLCBi
bGFjaywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgcnVuT25lSXRlcmF0aW9uKHZpZGVvRWxlbWVu
dCwgZmFsc2UsIHRydWUsIGJsYWNrLCBibGFjaywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBy
dW5PbmVJdGVyYXRpb24odmlkZW9FbGVtZW50LCBmYWxzZSwgdHJ1ZSwgYmxhY2ssIGJsYWNrLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJ1bk9uZUl0ZXJhdGlvbih2aWRlb0VsZW1lbnQsIGZh
bHNlLCB0cnVlLCBibGFjaywgYmxhY2ssIHRydWUsIHRydWUsIGZhbHNlKTsKKyAgICBydW5PbmVJ
dGVyYXRpb24odmlkZW9FbGVtZW50LCBmYWxzZSwgdHJ1ZSwgZ3JlZW4sIHJlZCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CisgICAgcnVuT25lSXRlcmF0aW9uKHZpZGVvRWxlbWVudCwgZmFsc2UsIGZh
bHNlLCByZWQsIGdyZWVuLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBydW5PbmVJdGVyYXRp
b24odmlkZW9FbGVtZW50LCB0cnVlLCB0cnVlLCBncmVlbiwgcmVkLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICBydW5PbmVJdGVyYXRpb24odmlkZW9FbGVtZW50LCB0cnVlLCBmYWxzZSwgcmVk
LCBncmVlbiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICBmaW5pc2hUZXN0
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI2NCIgaGVpZ2h0PSI0OCI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzx2aWRlbyBp
ZD0idmlkIiBzdHlsZT0iZGlzcGxheTpub25lOyIgbXV0ZWQ+CisgIDxzb3VyY2Ugc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvbnBvdC12aWRlby5tcDQiICB0eXBlPSd2aWRlby9tcDQ7IGNvZGVjcz0i
YXZjMS40MkUwMUUiJyAvPgorICA8c291cmNlIHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL25wb3Qt
dmlkZW8ud2VibXZwOC53ZWJtIiB0eXBlPSd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCInIC8+Cisg
IDxzb3VyY2Ugc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvbnBvdC12aWRlby50aGVvcmEub2d2IiAg
dHlwZT0ndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSInIC8+Cis8L3ZpZGVvPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW5wb3QuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL21pc2MvdGV4dHVyZS1ucG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNlYTQwMTFmMTk2OTQ3
ZjA3ZDc1NmJiMDY1ZGMzYTg5NGQyMDYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21p
c2MvdGV4dHVyZS1ucG90Lmh0bWwKQEAgLTAsMCArMSwzMDUgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIE5vbi1Qb3dlciBvZiAy
IHRleHR1cmUgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBzdHlsZT0id2lk
dGg6IDQwcHg7IGhlaWdodDogMzBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0
eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CithdHRy
aWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4o
KQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIHRleENvb3JkID0gdGV4Q29v
cmQwOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXJD
dWJlIHRleDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdGV4dHVyZUN1YmUodGV4LCBub3JtYWxpemUodmVjMyh0ZXhDb29yZCwgMSkp
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRv
Y3VtZW50LnRpdGxlKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVy
ZWRRdWFkKGdsKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91
bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK3ZhciB0ZXN0cyA9IFsKKyAgeyBmb3Jt
YXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBjb2xvcjogWzE5
MiwgMCwgMTI4LCA2NF0sCisgICAgZXhwZWN0ZWQ6IFsxOTIsIDAsIDEyOCwgNjRdLAorICAgIHRv
bGVyYW5jZTogMCwKKyAgfSwKKyAgeyBmb3JtYXQ6IGdsLlJHQiwKKyAgICB0eXBlOiBnbC5VTlNJ
R05FRF9CWVRFLAorICAgIGNvbG9yOiBbMTkyLCAwLCAxMjhdLAorICAgIGV4cGVjdGVkOiBbMTky
LCAwLCAxMjgsIDI1NV0sCisgICAgdG9sZXJhbmNlOiAwLAorICB9LAorICB7IGZvcm1hdDogZ2wu
TFVNSU5BTkNFLAorICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgY29sb3I6IFsxOTJd
LAorICAgIGV4cGVjdGVkOiBbMTkyLCAxOTIsIDE5MiwgMjU1XSwKKyAgICB0b2xlcmFuY2U6IDAs
CisgIH0sCisgIHsgZm9ybWF0OiBnbC5BTFBIQSwKKyAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRF
LAorICAgIGNvbG9yOiBbNjRdLAorICAgIGV4cGVjdGVkOiBbMCwgMCwgMCwgNjRdLAorICAgIHRv
bGVyYW5jZTogMCwKKyAgfSwKKyAgeyBmb3JtYXQ6IGdsLkxVTUlOQU5DRV9BTFBIQSwKKyAgICB0
eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgIGNvbG9yOiBbMTkyLCA2NF0sCisgICAgZXhwZWN0
ZWQ6IFsxOTIsIDE5MiwgMTkyLCA2NF0sCisgICAgdG9sZXJhbmNlOiAwLAorICB9LAorICAvLyB7
IGZvcm1hdDogZ2wuUkdCQSwKKyAgLy8gICB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80
LAorICAvLyAgIGNvbG9yOiBbMHg0OEZDXSwKKyAgLy8gICBleHBlY3RlZDogWzB4NDQsIDB4ODgs
IDB4RkYsIDB4Q0NdLAorICAvLyAgIHRvbGVyYW5jZTogMTYsCisgIC8vIH0sCisgIC8vIHsgZm9y
bWF0OiBnbC5SR0JBLAorICAvLyAgIHR5cGU6IGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzEsCisg
IC8vICAgY29sb3I6IFsweDgzMDldLCAgLy8gMTAwMDAgMDEwMDAgMDAxMDAgMQorICAvLyAgIGV4
cGVjdGVkOiBbMTI4LCA2NCwgMzIsIDI1NV0sCisgIC8vICAgdG9sZXJhbmNlOiAxNiwKKyAgLy8g
fSwKKyAgLy8geyBmb3JtYXQ6IGdsLlJHQiwKKyAgLy8gICB0eXBlOiBnbC5VTlNJR05FRF9TSE9S
VF81XzZfNSwKKyAgLy8gICBjb2xvcjogWzB4ODQwNF0sICAvLyAxMDAwMCAwMTAwMDAgMDAxMDAK
KyAgLy8gICBleHBlY3RlZDogWzEyOCwgNjQsIDMyXSwKKyAgLy8gICB0b2xlcmFuY2U6IDE2LAor
ICAvLyB9LAorXTsKKwordGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0KSB7CisgIGRlYnVnKCIi
KTsKKyAgZGVidWcoInRlc3QgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGVzdC5mb3JtYXQp
ICsgIi8iICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0ZXN0LnR5cGUpKTsKKyAgdmFyIHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKworICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBu
b3Qgb24gbGV2ZWwgMCBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRQorICB3dHUuZmlsbFRleHR1cmUo
Z2wsIHRleCwgNSwgMywgdGVzdC5jb2xvciwgMSwgdGVzdC5mb3JtYXQsIHRlc3QudHlwZSk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsCisgICAgICAiZ2wudGV4
SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSB3aXRoIGxldmVsID4gMCBzaG91bGQgcmV0dXJuIElO
VkFMSURfVkFMVUUiKTsKKworICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBvbiBsZXZl
bCAwIHN1Y2NlZWRzCisgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4LCA1LCAzLCB0ZXN0LmNvbG9y
LCAwLCB0ZXN0LmZvcm1hdCwgdGVzdC50eXBlKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsCisgICAgICAiZ2wudGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSBhdCBs
ZXZlbCAwIHNob3VsZCBzdWNjZWVkIik7CisKKyAgLy8gQ2hlY2sgdGhhdCBnZW5lcmF0ZU1pcG1h
cCBmYWlscyBvbiBOUE9UCisgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICJnbC5n
ZW5lcmF0ZU1pcG1hcCB3aXRoIE5QT1QgdGV4dHVyZSBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BF
UkFUSU9OIik7CisKKyAgLy8gQ2hlY2sgdGhhdCBub3RoaW5nIGlzIGRyYXduIGlmIGZpbHRlcmlu
ZyBpcyBub3QgY29ycmVjdCBmb3IgTlBPVAorICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQ
RUFUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuUkVQRUFUKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUu
Y2hlY2tDYW52YXMoCisgICAgICBnbCwgWzAsIDAsIDAsIDI1NV0sCisgICAgICAiTlBPVCB0ZXh0
dXJlIHdpdGggVEVYVFVSRV9XUkFQIHNldCB0byBSRVBFQVQgc2hvdWxkIGRyYXcgd2l0aCAwLDAs
MCwyNTUiKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VE
R0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5p
dFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgWzAsIDAsIDAsIDI1NV0s
CisgICAgICAiTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIG5vdCBORUFSRVNU
IG9yIExJTkVBUiBzaG91bGQgZHJhdyB3aXRoIDAsMCwwLDI1NSIpOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4i
KTsKKworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTElORUFSKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3
dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgdGVzdC5leHBlY3RlZCwKKyAgICAgICJOUE9UIHRl
eHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJTkVBUiBzaG91bGQgZHJhdy4i
KTsKKworICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCB0ZXN0LmZvcm1hdCwg
MCwgMCwgNSwgMywgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFM
VUUsCisgICAgICAiY29weVRleEltYWdlMkQgd2l0aCBOUE9UIHRleHR1cmUgd2l0aCBsZXZlbCA+
IDAgc2hvdWxkIHJldHVybiBJTlZBTElEX1ZBTFVFLiIpOworCisgIC8vIENoZWNrIHRoYXQgZ2Vu
ZXJhdGVNaXBtYXAgZm9yIGFuIFBPVCB0ZXh0dXJlIHN1Y2NlZWRzCisgIHd0dS5maWxsVGV4dHVy
ZShnbCwgdGV4LCA0LCA0LCB0ZXN0LmNvbG9yLCAwLCB0ZXN0LmZvcm1hdCk7CisgIGdsLmdlbmVy
YXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwKKyAgICAgICJnbC50ZXhJbWFnZTJEIGFuZCBnbC5nZW5lcmF0ZU1pcG1hcCB3aXRo
IFBPVCB0ZXh0dXJlIGF0IGxldmVsIDAgc2hvdWxkIHN1Y2NlZWQiKTsKKworICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSX01J
UE1BUF9MSU5FQVIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQRUFUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuUkVQRUFUKTsKKworICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgdGVz
dC5leHBlY3RlZCwKKyAgICAgICJQT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBz
ZXQgdG8gTElORUFSX01JUE1BUF9MSU5FQVIgc2hvdWxkIGRyYXcuIik7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVw
LiIpOworfSk7CisKK3ZhciB0ZXN0Q3ViZW1hcCA9IGZ1bmN0aW9uKHN3aXRjaFRleHR1cmVVbml0
QmVmb3JlRHJhdykgeworICBkZWJ1ZygiIik7CisgIHZhciB0aXRsZSA9ICJjaGVjayB1c2luZyBj
dWJlbWFwIjsKKyAgaWYgKHN3aXRjaFRleHR1cmVVbml0QmVmb3JlRHJhdykgeworICAgIHRpdGxl
ICs9ICIgYW5kIHN3aXRjaCB0ZXh0dXJlIHVuaXQgYmVmb3JlIGRyYXcgdG8gY2hlY2sgZm9yIENo
cm9taXVtIGJ1ZyI7CisgIH0KKyAgZGVidWcodGl0bGUpOworICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFByb2dyYW0oCisgICAgICBnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWyd2UG9zaXRp
b24nLCAndGV4Q29vcmQwJ10sIFswLCAxXSk7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisKKyAgLy8gQ2hlY2sgdGhhdCBhbiBOUE9UIHRleHR1cmUgbm90IG9uIGxldmVsIDAgZ2Vu
ZXJhdGVzIElOVkFMSURfVkFMVUUKKyAgZmlsbEN1YmVUZXh0dXJlKGdsLCB0ZXgsIDUsIDMsIFsw
LCAxOTIsIDEyOCwgMjU1XSwgMSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsCisgICAgICAiZ2wudGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSB3aXRoIGxl
dmVsID4gMCBzaG91bGQgcmV0dXJuIElOVkFMSURfVkFMVUUiKTsKKworICAvLyBDaGVjayB0aGF0
IGFuIE5QT1QgdGV4dHVyZSBvbiBsZXZlbCAwIHN1Y2NlZWRzCisgIGZpbGxDdWJlVGV4dHVyZShn
bCwgdGV4LCA1LCA1LCBbMCwgMTkyLCAxMjgsIDI1NV0pOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICJnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJl
IGF0IGxldmVsIDAgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAvLyBDaGVjayB0aGF0IGdlbmVyYXRl
TWlwbWFwIGZhaWxzIG9uIE5QT1QKKyAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV9DVUJF
X01BUCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAor
ICAgICAgImdsLmdlbmVyYXRlTWlwbWFwIHdpdGggTlBPVCB0ZXh0dXJlIHNob3VsZCByZXR1cm4g
SU5WQUxJRF9PUEVSQVRJT04iKTsKKworICB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ0ZXgiKTsKKyAgZ2wudW5pZm9ybTFpKGxvYywgMCk7CisKKyAgLy8gQ2hlY2sg
dGhhdCBub3RoaW5nIGlzIGRyYXduIGlmIGZpbHRlcmluZyBpcyBub3QgY29ycmVjdCBmb3IgTlBP
VAorICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJF
X01BUCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQRUFUKTsK
KyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuUkVQRUFUKTsKKworICBpZiAoc3dpdGNoVGV4dHVyZVVuaXRCZWZvcmVEcmF3KSB7Cisg
ICAgZGVidWcoIlN3aXRjaGluZyBhY3RpdmUgdGV4dHVyZSB1bml0IHRvIGdsLlRFWFRVUkUxIik7
CisgICAgLy8gVGVzdCBmb3IgaHR0cDovL2NyYnVnLmNvbS8zOTA1MTQKKyAgICBnbC5hY3RpdmVU
ZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgfQorCisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCk7CisgIHd0dS5jaGVja0NhbnZhcygKKyAgICAgIGdsLCBbMCwgMCwgMCwgMjU1XSwKKyAgICAg
ICJOUE9UIGN1YmVtYXAgd2l0aCBURVhUVVJFX1dSQVAgc2V0IHRvIFJFUEVBVCBzaG91bGQgZHJh
dyB3aXRoIDAsMCwwLDI1NSIpOworCisgIGlmIChzd2l0Y2hUZXh0dXJlVW5pdEJlZm9yZURyYXcp
IHsKKyAgICB2YXIgZXJyb3IgPSBnbC5nZXRFcnJvcigpOworICAgIGlmIChlcnJvciA9PT0gZ2wu
Tk9fRVJST1IpIHsKKyAgICAgIHRlc3RQYXNzZWQoImdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gZHJhdy4iKTsKKyAgICB9IGVs
c2UgaWYgKGVycm9yID09PSBnbC5JTlZBTElEX0VOVU0pIHsKKyAgICAgIHRlc3RGYWlsZWQoImdl
dEVycm9yIHJldHVybmVkIElOVkFMSURfRU5VTS4gUG9zc2libHkgQ2hyb21pdW0gYnVnIHdoZXJl
IHRleHR1cmUgdW5pdCBpcyBzZXQgdG8gMCBpbnN0ZWFkIG9mIEdMX1RFWFRVUkUwLiIpOworICAg
IH0gZWxzZSB7CisgICAgICB0ZXN0RmFpbGVkKCJEcmF3aW5nIHJlc3VsdGVkIGluIGVycm9yOiAi
ICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBlcnJvcikpOworICAgIH0KKyAgICBnbC5hY3RpdmVU
ZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBkcmF3LiIpOworICB9
CisKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dS
QVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9D
VUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wu
TkVBUkVTVF9NSVBNQVBfTElORUFSKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICB3dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgWzAsIDAsIDAsIDI1NV0sCisgICAgICAi
TlBPVCBjdWJlbWFwIHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIG5vdCBORUFSRVNUIG9yIExJTkVB
UiBzaG91bGQgZHJhdyB3aXRoIDAsMCwwLDI1NSIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKworICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTElORUFSKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUu
Y2hlY2tDYW52YXMoCisgICAgICBnbCwgWzAsIDE5MiwgMTI4LCAyNTVdLAorICAgICAgIk5QT1Qg
Y3ViZW1hcCB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFSIHNob3VsZCBkcmF3
LiIpOworCisgIC8vIENoZWNrIHRoYXQgYW4gUE9UIHRleHR1cmUgb24gbGV2ZWwgMCBzdWNjZWVk
cworICBmaWxsQ3ViZVRleHR1cmUoZ2wsIHRleCwgNCwgNCwgWzAsIDE5MiwgMTI4LCAyNTVdKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiZ2wudGV4SW1h
Z2UyRCB3aXRoIFBPVCB0ZXh0dXJlIGF0IGxldmVsIDAgc2hvdWxkIHN1Y2NlZWQiKTsKKworICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQ
RUFUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJF
X1dSQVBfVCwgZ2wuUkVQRUFUKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICB3dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgWzAsIDAsIDAsIDI1NV0sCisgICAgICAiUE9U
IGN1YmVtYXAgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJTkVBUl9NSVBNQVBfTElO
RUFSIGJ1dCBubyBtaXBzIGRyYXcgd2l0aCAwLDAsMCwyNTUiKTsKKworICAvLyBDaGVjayB0aGF0
IGdlbmVyYXRlTWlwbWFwIHN1Y2NlZWRzIG9uIFBPVAorICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5U
RVhUVVJFX0NVQkVfTUFQKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
CisgICAgICAiZ2wuZ2VuZXJhdGVNaXBtYXAgd2l0aCBQT1QgdGV4dHVyZSBzaG91bGQgcmV0dXJu
IHN1Y2NlZWQiKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hl
Y2tDYW52YXMoCisgICAgICBnbCwgWzAsIDE5MiwgMTI4LCAyNTVdLAorICAgICAgIlBPVCBjdWJl
bWFwIHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIHNldCB0byBMSU5FQVJfTUlQTUFQX0xJTkVBUiBz
aG91bGQgZHJhdy4iKTsKK307CisKK3Rlc3RDdWJlbWFwKGZhbHNlKTsKK3Rlc3RDdWJlbWFwKHRy
dWUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworZnVuY3Rpb24gZmlsbEN1
YmVUZXh0dXJlKGdsLCB0ZXgsIHdpZHRoLCBoZWlnaHQsIGNvbG9yLCBvcHRfbGV2ZWwpIHsKKyAg
b3B0X2xldmVsID0gb3B0X2xldmVsIHx8IDA7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdjYW52YXMnKTsKKyAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgIGNhbnZhcy5o
ZWlnaHQgPSBoZWlnaHQ7CisgIHZhciBjdHgyZCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwor
ICBjdHgyZC5maWxsU3R5bGUgPSAicmdiYSgiICsgY29sb3JbMF0gKyAiLCIgKyBjb2xvclsxXSAr
ICIsIiArIGNvbG9yWzJdICsgIiwiICsgY29sb3JbM10gKyAiKSI7CisgIGN0eDJkLmZpbGxSZWN0
KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCB0ZXgpOworICB2YXIgdGFyZ2V0cyA9IFsKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1gsCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgIGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1ksCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgIGdsLlRFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJnZXRz
Lmxlbmd0aDsgKyt0dCkgeworICAgIGdsLnRleEltYWdlMkQoCisgICAgICAgIHRhcmdldHNbdHRd
LCBvcHRfbGV2ZWwsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZhcyk7
CisgIH0KK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdGV4dHVyZS1zaXplLWN1YmUtbWFwcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0
dXJlLXNpemUtY3ViZS1tYXBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM4ZDg5N2UxODRhMDNlY2JiODQy
ZjA3MmRlMDM1Yjg5M2RjNmFjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
dHVyZS1zaXplLWN1YmUtbWFwcy5odG1sCkBAIC0wLDAgKzEsMzMxIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIHNp
emUgY3ViZSBtYXAgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBzdHls
ZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247
Cit1bmlmb3JtIG1hdDQgcm90YXRpb247Cit2YXJ5aW5nIHZlYzMgdGV4Q29vcmQ7Cit2b2lkIG1h
aW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIHZlYzQgZGlyZWN0aW9u
ID0gdmVjNCh2UG9zaXRpb24ueCAqIDAuNSwgdlBvc2l0aW9uLnkgKiAwLjUsIDEsIDEpOworICAg
IHRleENvb3JkID0gbm9ybWFsaXplKChyb3RhdGlvbiAqIGRpcmVjdGlvbikueHl6KTsKK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyQ3ViZSB0ZXg7Cit2
YXJ5aW5nIHZlYzMgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9
IHRleHR1cmVDdWJlKHRleCwgbm9ybWFsaXplKHRleENvb3JkKSk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgY2FudmFzOworZGVzY3JpcHRpb24oIkNoZWNrcyBp
c3N1ZXMgd2l0aCBzaXplIG9mIGN1YmUgbWFwIHRleHR1cmVzIik7CitkZWJ1ZygiIik7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZXhhbXBsZSIpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7
Cit3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFBy
b2dyYW0oCisgICAgZ2wsCisgICAgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwKKyAgICBbJ3ZQb3Np
dGlvbicsICd0ZXhDb29yZDAnXSwgWzAsIDFdKTsKK3ZhciByb3RMb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInJvdGF0aW9uIik7CisKK2dsLmRpc2FibGUoZ2wuREVQVEhfVEVT
VCk7CitnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKwordmFyIG1heFNpemUgPSBnbC5nZXRQYXJhbWV0
ZXIoZ2wuTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSk7CitkZWJ1ZygibWF4IGN1YmUgbWFwIHNp
emU6ICIgKyBtYXhTaXplKTsKK21heFNpemUgPSBNYXRoLm1pbig1MTIsIG1heFNpemUpOworCisv
LyBhIGN1YmUgbWFwIG9mIDUxMng1MTIgdGFrZXMgNm1lZy4gSSdtIGFzc3VtaW5nIGl0J3Mgbm90
CisvLyB1bnJlYXNvbmFibGUgdG8gZXhwZWN0IHRvIGJlIGFibGUgdG8gYWxsb2NhdGUgYSA2bWVn
IHRleHR1cmUKKwordmFyIGNvbG9ycyA9IFsKKyAge25hbWU6ICdyZWQnLCAgICAgY29sb3I6IFsy
NTUsICAgMCwgICAwLCAyNTVdfSwKKyAge25hbWU6ICdncmVlbicsICAgY29sb3I6IFsgIDAsIDI1
NSwgICAwLCAyNTVdfSwKKyAge25hbWU6ICdibHVlJywgICAgY29sb3I6IFsgIDAsICAgMCwgMjU1
LCAyNTVdfSwKKyAge25hbWU6ICd5ZWxsb3cnLCAgY29sb3I6IFsyNTUsIDI1NSwgICAwLCAyNTVd
fSwKKyAge25hbWU6ICdjeWFuJywgICAgY29sb3I6IFsgIDAsIDI1NSwgMjU1LCAyNTVdfSwKKyAg
e25hbWU6ICdtYWdlbnRhJywgY29sb3I6IFsyNTUsICAgMCwgMjU1LCAyNTVdfQorXTsKKwordmFy
IHRhcmdldHMgPSBbCisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1ksCisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9aLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pdOworCit2
YXIgcm90YXRpb25zID0gWworICB7YXhpczogWzAsIDEsIDBdLCBhbmdsZTogIE1hdGguUEkgLyAy
fSwKKyAge2F4aXM6IFswLCAxLCAwXSwgYW5nbGU6IC1NYXRoLlBJIC8gMn0sCisgIHtheGlzOiBb
MSwgMCwgMF0sIGFuZ2xlOiAtTWF0aC5QSSAvIDJ9LAorICB7YXhpczogWzEsIDAsIDBdLCBhbmds
ZTogIE1hdGguUEkgLyAyfSwKKyAge2F4aXM6IFswLCAxLCAwXSwgYW5nbGU6ICAwfSwKKyAge2F4
aXM6IFswLCAxLCAwXSwgYW5nbGU6ICBNYXRoLlBJfSwKK107CisKK3ZhciBoYWxmUm90YXRpb25z
ID0gWworICB7Y29sb3JzOiBbMywgNF0sIHJvdGF0aW9uczogW3theGlzOiBbMSwgMCwgMF0sIGFu
Z2xlOiAgTWF0aC5QSSAvIDR9XX0sCisgIHtjb2xvcnM6IFs0LCAyXSwgcm90YXRpb25zOiBbe2F4
aXM6IFsxLCAwLCAwXSwgYW5nbGU6IC1NYXRoLlBJIC8gNH1dfSwKKyAge2NvbG9yczogWzUsIDNd
LCByb3RhdGlvbnM6IFt7YXhpczogWzEsIDAsIDBdLCBhbmdsZTogIE1hdGguUEkgLyA0ICogM31d
fSwKKyAge2NvbG9yczogWzIsIDVdLCByb3RhdGlvbnM6IFt7YXhpczogWzEsIDAsIDBdLCBhbmds
ZTogLU1hdGguUEkgLyA0ICogM31dfSwKKyAge2NvbG9yczogWzMsIDBdLCByb3RhdGlvbnM6IFt7
YXhpczogWzAsIDEsIDBdLCBhbmdsZTogIE1hdGguUEkgLyAyfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7YXhpczogWzEsIDAsIDBdLCBhbmdsZTogIE1hdGguUEkgLyA0fV19LAor
ICB7Y29sb3JzOiBbMCwgMl0sIHJvdGF0aW9uczogW3theGlzOiBbMCwgMSwgMF0sIGFuZ2xlOiAg
TWF0aC5QSSAvIDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtheGlzOiBbMSwg
MCwgMF0sIGFuZ2xlOiAtTWF0aC5QSSAvIDR9XX0sCitdOworCit2YXIgY291bnQgPSAwOwordmFy
IHNpemVDb3VudCA9IDA7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgdmFyIHNp
emUgPSBNYXRoLnBvdygyLCBzaXplQ291bnQpOworICBpZiAoc2l6ZSA+IG1heFNpemUgfHwgIXRl
c3RTaXplKHNpemUpKSB7CisgICAgZmluaXNoVGVzdCgpOworICB9IGVsc2UgeworICAgICsrc2l6
ZUNvdW50OworICAgIHNldFRpbWVvdXQodGVzdCwgMCk7CisgIH0KK30KKworZnVuY3Rpb24gdGVz
dFNpemUoc2l6ZSkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0aW5nIHNpemU6ICIgKyBz
aXplKTsKKyAgdmFyIGNhbnZhc1NpemUgPSBNYXRoLm1heChzaXplIC8gNCwgMik7CisgIGNhbnZh
cy53aWR0aCA9IGNhbnZhc1NpemU7CisgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNTaXplOworICBn
bC52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLCBjYW52YXNTaXplKTsKKyAgdmFyIHRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwg
dGV4KTsKKworICAvLyBTZWVtcyBsaWtlIEkgc2hvdWxkIGJlIHVzaW5nIExJTkVBUiBoZXJlIHdp
dGggc29tZSBvdGhlciBtYXRoCisgIC8vIHRvIG1ha2Ugc3VyZSBJIGdldCBtb3JlIG1pcCBjb3Zl
cmFnZSBidXQgdGhhdCdzIGVhc2llciBzYWlkCisgIC8vIHRoYW4gZG9uZS4KKworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wu
TkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVY
VFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICBmb3IgKHZhciBqaiA9IDA7IGpqIDwg
MjsgKytqaikgeworICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0
dCkgeworICAgICAgdmFyIGNvbG9yID0gY29sb3JzWyh0dCArIGNvdW50KSAlIGNvbG9ycy5sZW5n
dGhdOworICAgICAgZmlsbExldmVsKHRhcmdldHNbdHRdLCAwLCBzaXplLCBjb2xvci5jb2xvcik7
CisgICAgfQorICAgIGlmIChqaiA9PSAxKSB7CisgICAgICBkZWJ1ZygidXNlIG1pcG1hcCIpOwor
ICAgICAgZ2wudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQLCBn
bC5URVhUVVJFX01JTl9GSUxURVIsCisgICAgICAgICAgZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VCk7CisgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICB9
CisKKyAgICB2YXIgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICBpZiAoZXJyID09IGdsLk9VVF9P
Rl9NRU1PUlkpIHsKKyAgICAgIGRlYnVnKCJvdXQgb2YgbWVtb3J5Iik7CisgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGlmIChlcnIgIT0gZ2wuTk9fRVJST1IpIHsKKyAgICAgIHRlc3RG
YWlsZWQoInVuZXhwZWN0ZWQgZ2wgZXJyb3I6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGVy
cikpOworICAgIH0KKworCisgICAgZm9yICh2YXIgcnIgPSAwOyByciA8IHJvdGF0aW9ucy5sZW5n
dGg7ICsrcnIpIHsKKyAgICAgIHZhciByb3QgPSByb3RhdGlvbnNbcnJdOworICAgICAgdmFyIGNv
bG9yID0gY29sb3JzWyhyciArIGNvdW50KSAlIGNvbG9ycy5sZW5ndGhdOworICAgICAgdmFyIHJv
dE1hdCA9IGF4aXNSb3RhdGlvbihyb3QuYXhpcywgcm90LmFuZ2xlKTsKKyAgICAgIGdsLnVuaWZv
cm1NYXRyaXg0ZnYocm90TG9jLCBmYWxzZSwgcm90TWF0KTsKKyAgICAgIHd0dS5jbGVhckFuZERy
YXdVbml0UXVhZChnbCk7CisgICAgICB3dHUuY2hlY2tDYW52YXMoCisgICAgICAgICAgZ2wsIGNv
bG9yLmNvbG9yLAorICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGFyZ2V0c1tycl0p
ICsgIiBzaG91bGQgYmUgIiArIGNvbG9yLm5hbWUpOworICAgIH0KKworICAgIGZvciAodmFyIHJy
ID0gMDsgcnIgPCBoYWxmUm90YXRpb25zLmxlbmd0aDsgKytycikgeworICAgICAgdmFyIGggPSBo
YWxmUm90YXRpb25zW3JyXTsKKyAgICAgIHZhciByb3RzID0gaC5yb3RhdGlvbnM7CisgICAgICB2
YXIgcm90TWF0ID0gYXhpc1JvdGF0aW9uKHJvdHNbMF0uYXhpcywgcm90c1swXS5hbmdsZSk7Cisg
ICAgICBmb3IgKHZhciBpaSA9IDE7IGlpIDwgcm90cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAg
dmFyIHRtcE1hdCA9IGF4aXNSb3RhdGlvbihyb3RzW2lpXS5heGlzLCByb3RzW2lpXS5hbmdsZSk7
CisgICAgICAgIHZhciByb3RNYXQgPSBtdWxNYXRyaXgodG1wTWF0LCByb3RNYXQpOworICAgICAg
fQorICAgICAgZ2wudW5pZm9ybU1hdHJpeDRmdihyb3RMb2MsIGZhbHNlLCByb3RNYXQpOworICAg
ICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICAgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IDI7ICsraWkpIHsKKyAgICAgICAgY2hlY2tSZWN0KAorICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgIGNhbnZhc1NpemUgLyAyICogaWksCisgICAgICAgICAgICBjYW52YXNTaXplLAor
ICAgICAgICAgICAgY2FudmFzU2l6ZSAvIDIsCisgICAgICAgICAgICBjb2xvcnNbKGguY29sb3Jz
W2lpXSArIGNvdW50KSAlIGNvbG9ycy5sZW5ndGhdKTsKKyAgICAgIH0KKyAgICB9CisgICAgKytj
b3VudDsKKyAgfQorCisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVy
cm9ycy4iKTsKKworZnVuY3Rpb24gY2hlY2tSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGNvbG9y
KSB7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoCisgICAgICAgZ2wsCisgICAgICAgeCwKKyAgICAg
ICB5LAorICAgICAgIHdpZHRoLAorICAgICAgIGhlaWdodCwKKyAgICAgICBjb2xvci5jb2xvciwK
KyAgICAgICAiIiArIHggKyAiLCAiICsgeSArICIsICIgKyB3aWR0aCArICIsICIgKyBoZWlnaHQg
KworICAgICAgICIgc2hvdWxkIGJlICIgKyBjb2xvci5uYW1lKTsKK30KKworZnVuY3Rpb24gZmls
bExldmVsKHRhcmdldCwgbGV2ZWwsIHNpemUsIGNvbG9yKSB7CisgIHZhciBudW1QaXhlbHMgPSBz
aXplICogc2l6ZTsKKyAgdmFyIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KG51bVBpeGVscyAqIDQp
OworICB2YXIgcGl4ZWxSb3cgPSBuZXcgVWludDhBcnJheShzaXplICogNCk7CisgIGZvciAodmFy
IGpqID0gMDsgamogPCBzaXplOyArK2pqKSB7CisgICAgdmFyIG9mZiA9IGpqICogNDsKKyAgICBw
aXhlbFJvd1tvZmYgKyAwXSA9IGNvbG9yWzBdOworICAgIHBpeGVsUm93W29mZiArIDFdID0gY29s
b3JbMV07CisgICAgcGl4ZWxSb3dbb2ZmICsgMl0gPSBjb2xvclsyXTsKKyAgICBwaXhlbFJvd1tv
ZmYgKyAzXSA9IGNvbG9yWzNdOworICB9CisgIGZvciAodmFyIGpqID0gMDsgamogPCBzaXplOyAr
K2pqKSB7CisgICAgdmFyIG9mZiA9IGpqICogc2l6ZSAqIDQ7CisgICAgcGl4ZWxzLnNldChwaXhl
bFJvdywgb2ZmKTsKKyAgfQorICBnbC50ZXhJbWFnZTJEKAorICAgICAgdGFyZ2V0LCBsZXZlbCwg
Z2wuUkdCQSwgc2l6ZSwgc2l6ZSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAg
IHBpeGVscyk7Cit9CisKK2Z1bmN0aW9uIHByaW50TWF0KG1hdCkgeworICBkZWJ1ZygiIiArIG1h
dFswXSArICIsICIgKyBtYXRbMV0gKyAiLCAiICsgbWF0WzJdICsgIiwgIiArIG1hdFszXSArICIs
ICIpOworICBkZWJ1ZygiIiArIG1hdFs0XSArICIsICIgKyBtYXRbNV0gKyAiLCAiICsgbWF0WzZd
ICsgIiwgIiArIG1hdFs3XSArICIsICIpOworICBkZWJ1ZygiIiArIG1hdFs4XSArICIsICIgKyBt
YXRbOV0gKyAiLCAiICsgbWF0WzEwXSArICIsICIgKyBtYXRbMTFdICsgIiwgIik7CisgIGRlYnVn
KCIiICsgbWF0WzEyXSArICIsICIgKyBtYXRbMTNdICsgIiwgIiArIG1hdFsxNF0gKyAiLCAiICsg
bWF0WzE1XSArICIsICIpOworfQorCitmdW5jdGlvbiBheGlzUm90YXRpb24oYXhpcywgYW5nbGUp
IHsKKyAgdmFyIGRzdCA9IG5ldyBGbG9hdDMyQXJyYXkoMTYpOworICB2YXIgeCA9IGF4aXNbMF07
CisgIHZhciB5ID0gYXhpc1sxXTsKKyAgdmFyIHogPSBheGlzWzJdOworICB2YXIgbiA9IE1hdGgu
c3FydCh4ICogeCArIHkgKiB5ICsgeiAqIHopOworICB4IC89IG47CisgIHkgLz0gbjsKKyAgeiAv
PSBuOworICB2YXIgeHggPSB4ICogeDsKKyAgdmFyIHl5ID0geSAqIHk7CisgIHZhciB6eiA9IHog
KiB6OworICB2YXIgYyA9IE1hdGguY29zKGFuZ2xlKTsKKyAgdmFyIHMgPSBNYXRoLnNpbihhbmds
ZSk7CisgIHZhciBvbmVNaW51c0Nvc2luZSA9IDEgLSBjOworCisgIGRzdFsgMF0gPSB4eCArICgx
IC0geHgpICogYzsKKyAgZHN0WyAxXSA9IHggKiB5ICogb25lTWludXNDb3NpbmUgKyB6ICogczsK
KyAgZHN0WyAyXSA9IHggKiB6ICogb25lTWludXNDb3NpbmUgLSB5ICogczsKKyAgZHN0WyAzXSA9
IDA7CisgIGRzdFsgNF0gPSB4ICogeSAqIG9uZU1pbnVzQ29zaW5lIC0geiAqIHM7CisgIGRzdFsg
NV0gPSB5eSArICgxIC0geXkpICogYzsKKyAgZHN0WyA2XSA9IHkgKiB6ICogb25lTWludXNDb3Np
bmUgKyB4ICogczsKKyAgZHN0WyA3XSA9IDA7CisgIGRzdFsgOF0gPSB4ICogeiAqIG9uZU1pbnVz
Q29zaW5lICsgeSAqIHM7CisgIGRzdFsgOV0gPSB5ICogeiAqIG9uZU1pbnVzQ29zaW5lIC0geCAq
IHM7CisgIGRzdFsxMF0gPSB6eiArICgxIC0genopICogYzsKKyAgZHN0WzExXSA9IDA7CisgIGRz
dFsxMl0gPSAwOworICBkc3RbMTNdID0gMDsKKyAgZHN0WzE0XSA9IDA7CisgIGRzdFsxNV0gPSAx
OworCisgIHJldHVybiBkc3Q7Cit9OworCitmdW5jdGlvbiBtdWxNYXRyaXgoYSwgYikgeworICB2
YXIgZHN0ID0gbmV3IEZsb2F0MzJBcnJheSgxNik7CisgIHZhciBhMDAgPSBhWzBdOworICB2YXIg
YTAxID0gYVsxXTsKKyAgdmFyIGEwMiA9IGFbMl07CisgIHZhciBhMDMgPSBhWzNdOworICB2YXIg
YTEwID0gYVsgNCArIDBdOworICB2YXIgYTExID0gYVsgNCArIDFdOworICB2YXIgYTEyID0gYVsg
NCArIDJdOworICB2YXIgYTEzID0gYVsgNCArIDNdOworICB2YXIgYTIwID0gYVsgOCArIDBdOwor
ICB2YXIgYTIxID0gYVsgOCArIDFdOworICB2YXIgYTIyID0gYVsgOCArIDJdOworICB2YXIgYTIz
ID0gYVsgOCArIDNdOworICB2YXIgYTMwID0gYVsxMiArIDBdOworICB2YXIgYTMxID0gYVsxMiAr
IDFdOworICB2YXIgYTMyID0gYVsxMiArIDJdOworICB2YXIgYTMzID0gYVsxMiArIDNdOworICB2
YXIgYjAwID0gYlswXTsKKyAgdmFyIGIwMSA9IGJbMV07CisgIHZhciBiMDIgPSBiWzJdOworICB2
YXIgYjAzID0gYlszXTsKKyAgdmFyIGIxMCA9IGJbIDQgKyAwXTsKKyAgdmFyIGIxMSA9IGJbIDQg
KyAxXTsKKyAgdmFyIGIxMiA9IGJbIDQgKyAyXTsKKyAgdmFyIGIxMyA9IGJbIDQgKyAzXTsKKyAg
dmFyIGIyMCA9IGJbIDggKyAwXTsKKyAgdmFyIGIyMSA9IGJbIDggKyAxXTsKKyAgdmFyIGIyMiA9
IGJbIDggKyAyXTsKKyAgdmFyIGIyMyA9IGJbIDggKyAzXTsKKyAgdmFyIGIzMCA9IGJbMTIgKyAw
XTsKKyAgdmFyIGIzMSA9IGJbMTIgKyAxXTsKKyAgdmFyIGIzMiA9IGJbMTIgKyAyXTsKKyAgdmFy
IGIzMyA9IGJbMTIgKyAzXTsKKyAgZHN0WyAwXSA9IGEwMCAqIGIwMCArIGEwMSAqIGIxMCArIGEw
MiAqIGIyMCArIGEwMyAqIGIzMDsKKyAgZHN0WyAxXSA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSAr
IGEwMiAqIGIyMSArIGEwMyAqIGIzMTsKKyAgZHN0WyAyXSA9IGEwMCAqIGIwMiArIGEwMSAqIGIx
MiArIGEwMiAqIGIyMiArIGEwMyAqIGIzMjsKKyAgZHN0WyAzXSA9IGEwMCAqIGIwMyArIGEwMSAq
IGIxMyArIGEwMiAqIGIyMyArIGEwMyAqIGIzMzsKKyAgZHN0WyA0XSA9IGExMCAqIGIwMCArIGEx
MSAqIGIxMCArIGExMiAqIGIyMCArIGExMyAqIGIzMDsKKyAgZHN0WyA1XSA9IGExMCAqIGIwMSAr
IGExMSAqIGIxMSArIGExMiAqIGIyMSArIGExMyAqIGIzMTsKKyAgZHN0WyA2XSA9IGExMCAqIGIw
MiArIGExMSAqIGIxMiArIGExMiAqIGIyMiArIGExMyAqIGIzMjsKKyAgZHN0WyA3XSA9IGExMCAq
IGIwMyArIGExMSAqIGIxMyArIGExMiAqIGIyMyArIGExMyAqIGIzMzsKKyAgZHN0WyA4XSA9IGEy
MCAqIGIwMCArIGEyMSAqIGIxMCArIGEyMiAqIGIyMCArIGEyMyAqIGIzMDsKKyAgZHN0WyA5XSA9
IGEyMCAqIGIwMSArIGEyMSAqIGIxMSArIGEyMiAqIGIyMSArIGEyMyAqIGIzMTsKKyAgZHN0WzEw
XSA9IGEyMCAqIGIwMiArIGEyMSAqIGIxMiArIGEyMiAqIGIyMiArIGEyMyAqIGIzMjsKKyAgZHN0
WzExXSA9IGEyMCAqIGIwMyArIGEyMSAqIGIxMyArIGEyMiAqIGIyMyArIGEyMyAqIGIzMzsKKyAg
ZHN0WzEyXSA9IGEzMCAqIGIwMCArIGEzMSAqIGIxMCArIGEzMiAqIGIyMCArIGEzMyAqIGIzMDsK
KyAgZHN0WzEzXSA9IGEzMCAqIGIwMSArIGEzMSAqIGIxMSArIGEzMiAqIGIyMSArIGEzMyAqIGIz
MTsKKyAgZHN0WzE0XSA9IGEzMCAqIGIwMiArIGEzMSAqIGIxMiArIGEzMiAqIGIyMiArIGEzMyAq
IGIzMjsKKyAgZHN0WzE1XSA9IGEzMCAqIGIwMyArIGEzMSAqIGIxMyArIGEzMiAqIGIyMyArIGEz
MyAqIGIzMzsKKyAgcmV0dXJuIGRzdDsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtc2l6ZS1saW1pdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy90ZXh0dXJlLXNpemUtbGltaXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTA5M2Iz
YTUzZWU5ZTkwY2E2ZGQxYmVmM2EzODZhNWEzN2NmMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy90ZXh0dXJlLXNpemUtbGltaXQuaHRtbApAQCAtMCwwICsxLDE2NyBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
dGV4dHVyZSBzaXplIGxpbWl0IGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
IHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHZhcmlvdXMgc2l6ZSBsaW1pdHMgb2Yg
dGV4dHVyZXMiKQordmFyIGNhbnZhczsKKworZnVuY3Rpb24gbnVtTGV2ZWxzRnJvbVNpemUoc2l6
ZSkgeworICB2YXIgbGV2ZWxzID0gMDsKKyAgd2hpbGUgKChzaXplID4+IGxldmVscykgPiAwKSB7
CisgICAgKytsZXZlbHM7CisgIH0KKyAgcmV0dXJuIGxldmVsczsKK30KKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwor
dmFyIHRlc3RzID0gWworICB7IGZvcm1hdDogZ2wuQUxQSEEsICAgICAgICAgICB0eXBlOiBnbC5V
TlNJR05FRF9CWVRFLCAgICAgICAgICBzaXplOiAxLCBkYXRhVHlwZTogVWludDhBcnJheSAgfSwK
KyAgeyBmb3JtYXQ6IGdsLkxVTUlOQU5DRSwgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwg
ICAgICAgICAgc2l6ZTogMSwgZGF0YVR5cGU6IFVpbnQ4QXJyYXkgIH0sCisgIHsgZm9ybWF0OiBn
bC5MVU1JTkFOQ0VfQUxQSEEsIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsICAgICAgICAgIHNpemU6
IDIsIGRhdGFUeXBlOiBVaW50OEFycmF5ICB9LAorICB7IGZvcm1hdDogZ2wuUkdCLCAgICAgICAg
ICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLCAgICAgICAgICBzaXplOiAzLCBkYXRhVHlwZTog
VWludDhBcnJheSAgfSwKKyAgeyBmb3JtYXQ6IGdsLlJHQiwgICAgICAgICAgICAgdHlwZTogZ2wu
VU5TSUdORURfU0hPUlRfNV82XzUsICAgc2l6ZTogMSwgZGF0YVR5cGU6IFVpbnQxNkFycmF5IH0s
CisgIHsgZm9ybWF0OiBnbC5SR0JBLCAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUs
ICAgICAgICAgIHNpemU6IDQsIGRhdGFUeXBlOiBVaW50OEFycmF5ICB9LAorICB7IGZvcm1hdDog
Z2wuUkdCQSwgICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCBzaXpl
OiAxLCBkYXRhVHlwZTogVWludDE2QXJyYXkgfSwKKyAgeyBmb3JtYXQ6IGdsLlJHQkEsICAgICAg
ICAgICAgdHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgc2l6ZTogMSwgZGF0YVR5cGU6
IFVpbnQxNkFycmF5IH0KK107CisKKy8vIE5vdGU6IFdlIGV4cHJlc3NseSBvbmx5IHVzZSAyIHRl
eHR1cmVzIGJlY2F1c2UgZmlyc3QgYSB0ZXh0dXJlIHdpbGwgYmUgZGVmaW5lZAorLy8gdXNpbmcg
YWxsIG1pcCBsZXZlbHMgb2YgMSBmb3JtYXQsIHRoZW4gZm9yIGEgbW9tZW50IGl0IHdpbGwgaGF2
ZSBtaXhlZCBmb3JtYXRzIHdoaWNoCisvLyBtYXkgdW5jb3ZlciBidWdzLgordmFyIHRhcmdldHMg
PSBbCisgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzJELAorICAgIG1heFNpemU6IGdsLmdldFBhcmFt
ZXRlcihnbC5NQVhfVEVYVFVSRV9TSVpFKSwKKyAgICBtYXhMZXZlbDogMTAwMCwKKyAgICB0YXJn
ZXRzOiBbZ2wuVEVYVFVSRV8yRF0KKyAgfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfQ1VCRV9N
QVAsCisgICAgbWF4U2l6ZTogZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9URVhUVVJF
X1NJWkUpLAorICAgIG1heExldmVsOiA1LAorICAgIHRhcmdldHM6IFsKKyAgICAgIGdsLlRFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWCwKKyAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgIGdsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWiwKKyAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWgorICAgIF0KKyAg
fQorXTsKKworZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKK3ZhciB0
cmcgPSAwOwordmFyIHR0ID0gMDsKK3ZhciB0ZXggPSBudWxsOworcnVuTmV4dFRlc3QoKTsKKwor
ZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgIHZhciB0ID0gdGFyZ2V0c1t0cmddOworCisgIGlm
ICh0dCA9PSAwKSB7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworICAgIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZSh0LnRhcmdldCwgdGV4KTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygibWF4IHNpemUgZm9yICIgKyB3dHUuZ2xFbnVtVG9TdHJp
bmcoZ2wsIHQudGFyZ2V0KSArICI6ICIgKyB0Lm1heFNpemUpOworICAgIHZhciBudW1MZXZlbHMg
PSBudW1MZXZlbHNGcm9tU2l6ZSh0Lm1heFNpemUpOworICAgIGRlYnVnKCJudW0gbGV2ZWxzICIg
KyBudW1MZXZlbHMpOworICB9CisKKyAgdmFyIHRlc3QgPSB0ZXN0c1t0dF07CisgIHRlc3RGb3Jt
YXRUeXBlKHQsIHRlc3QpOworICArK3R0OworICBpZiAodHQgPT0gdGVzdHMubGVuZ3RoKSB7Cisg
ICAgdHQgPSAwOworICAgICsrdHJnOworICAgIGlmICh0cmcgPT0gdGFyZ2V0cy5sZW5ndGgpIHsK
KyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKyAgd3R1LmRp
c3BhdGNoUHJvbWlzZShydW5OZXh0VGVzdCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGb3JtYXRUeXBl
KHQsIHRlc3QpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdGluZzogIiArIHd0dS5nbEVu
dW1Ub1N0cmluZyhnbCwgdGVzdC5mb3JtYXQpICsgIiwgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgdGVzdC50eXBlKSk7CisKKyAgZm9yICh2YXIgaiA9IDA7IGogPCB0LnRhcmdldHMubGVuZ3Ro
OyArK2opIHsKKyAgICB2YXIgdGFyZ2V0ID0gdC50YXJnZXRzW2pdOworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zyh3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHRhcmdldCkpOworICAgIHZhciBudW1M
ZXZlbHMgPSBudW1MZXZlbHNGcm9tU2l6ZSh0Lm1heFNpemUpOworCisgICAgLy8gb3V0IG9mIGJv
dW5kcyB0ZXN0cworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTGV2ZWxzOyBpKyspIHsKKyAg
ICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgb3V0IG9mIGJvdW5kcworICAgICAgdmFyIHNpemUgPSB0
Lm1heFNpemUgPj4gaTsKKyAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCBpLCB0ZXN0LmZvcm1h
dCwgc2l6ZSArIDEsIHNpemUgKyAxLCAwLCB0ZXN0LmZvcm1hdCwgdGVzdC50eXBlLCBudWxsKTsK
KyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ3aWR0aCBv
ciBoZWlnaHQgb3V0IG9mIGJvdW5kczogc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfVkFMVUU6IGxl
dmVsIGlzICIgKyBpICsgIiwgc2l6ZSBpcyAiCisgICAgICAgICsgKHNpemUgKyAxKSArICJ4IiAr
IChzaXplICsgMSkpOworICAgIH0KKyAgICAvLyBsZXZlbCBvdXQgb2YgYm91bmRzCisgICAgZ2wu
dGV4SW1hZ2UyRCh0YXJnZXQsIG51bUxldmVscywgdGVzdC5mb3JtYXQsIDEsIDEsIDAsIHRlc3Qu
Zm9ybWF0LCB0ZXN0LnR5cGUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUsICJsZXZlbCBvdXQgb2YgYm91bmRzOiBzaG91bGQgZ2VuZXJhdGUgSU5W
QUxJRF9WQUxVRTogbGV2ZWwgaXM6ICIKKyAgICAgICAgKyBudW1MZXZlbHMgKyAiLCBzaXplIGlz
IDF4MS4iKTsKKworICAgIC8vIFByb2JlIHRvIGRpc2NvdmVyIHRoZSBtYXggbm9uLU9PTSBsZXZl
bC4KKyAgICAvLyBGb3IgaW5zdGFuY2UsIG9uIHNvbWUgZHJpdmVycyAoYXQgbGVhc3QgSW50ZWwr
TWVzYSkgd2UgY2FuIGNyZWF0ZQorICAgIC8vIGEgbWF4TGV2ZWwgTDggdGV4dHVyZSwgYnV0IG9u
bHkgYSBtYXhMZXZlbC0xIFJHQjggdGV4dHVyZS4KKyAgICB2YXIgbWF4TGV2ZWxzRm9yRm9ybWF0
ID0gbnVtTGV2ZWxzOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBnbC50ZXhJbWFnZTJEKHRh
cmdldCwgbWF4TGV2ZWxzRm9yRm9ybWF0LTEsIHRlc3QuZm9ybWF0LCAxLCAxLCAwLCB0ZXN0LmZv
cm1hdCwgdGVzdC50eXBlLCBudWxsKTsKKyAgICAgIHZhciBlcnIgPSBnbC5nZXRFcnJvcigpOwor
ICAgICAgaWYgKGVyciA9PSBnbC5PVVRfT0ZfTUVNT1JZKSB7CisgICAgICAgIGRlYnVnKCJQcm9i
ZSBmYWlsZWQgZm9yIGxldmVsPSIgKyAobWF4TGV2ZWxzRm9yRm9ybWF0LTEpICsgIiwgcmVkdWNp
bmcuLi4iKTsKKyAgICAgICAgbWF4TGV2ZWxzRm9yRm9ybWF0IC09IDE7CisgICAgICAgIGlmICgh
bWF4TGV2ZWxzRm9yRm9ybWF0KSB7CisgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIGFs
bG9jYXRlIGFueSBsZXZlbHMgZm9yIGZvcm1hdCAiICsgdGVzdC5mb3JtYXQpOworICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIG5vdCBoaXQgbm9uLU9PTSBlcnJv
cnMgZHVyaW5nIG1heCBsZXZlbCBwcm9iaW5nLiIpOworICAgICAgICByZXR1cm47CisgICAgICB9
CisgICAgICBicmVhazsKKyAgICB9CisgICAgdmFyIG51bVRlc3RMZXZlbHMgPSBNYXRoLm1pbiht
YXhMZXZlbHNGb3JGb3JtYXQsIHQubWF4TGV2ZWwpOworICAgIGZvciAodmFyIGwgPSAwOyBsIDwg
bnVtVGVzdExldmVsczsgKytsKSB7CisgICAgICAvLyBEbyBib3R0b20gbGV2ZWxzIGZpcnN0Owor
ICAgICAgdmFyIHNpemUgPSAxIDw8IGw7CisgICAgICB2YXIgbGV2ZWwgPSBtYXhMZXZlbHNGb3JG
b3JtYXQgLSBsIC0gMTsKKyAgICAgIHZhciBvdGhlckRpbWVuc2lvbiA9IHQudGFyZ2V0ID09IGds
LlRFWFRVUkVfMkQgPyAxIDogc2l6ZTsKKyAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgdGVzdC5mb3JtYXQsIHNpemUsIG90aGVyRGltZW5zaW9uLCAwLCB0ZXN0LmZvcm1hdCwgdGVz
dC50eXBlLCBudWxsKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9yIGZvciBsZXZlbDogIiArIGxldmVsICsgIiAiICsg
c2l6ZSArICJ4IiArIG90aGVyRGltZW5zaW9uKTsKKyAgICAgIGlmIChvdGhlckRpbWVuc2lvbiAh
PSBzaXplKSB7CisgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgdGVzdC5mb3Jt
YXQsIG90aGVyRGltZW5zaW9uLCBzaXplLCAwLCB0ZXN0LmZvcm1hdCwgdGVzdC50eXBlLCBudWxs
KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBz
aG91bGQgYmUgbm8gZXJyb3IgZm9yIGxldmVsOiAiICsgbGV2ZWwgKyAiICIgKyBvdGhlckRpbWVu
c2lvbiArICJ4IiArIHNpemUpOworICAgICAgfQorICAgIH0KKyAgfQorfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1zaXpl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZDk5
YWM4OWYyZmVhYjcwZmYzOWYxMThmZTc2OGNkNWIzY2RiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy9taXNjL3RleHR1cmUtc2l6ZS5odG1sCkBAIC0wLDAgKzEsMjE3IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0
dXJlIHNpemUgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgc3R5bGU9Indp
ZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworYXR0
cmlidXRlIHZlYzMgdGV4Q29vcmQwOwordmFyeWluZyB2ZWMzIHRleENvb3JkOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IHRleENv
b3JkMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVy
Q3ViZSB0ZXg7Cit2YXJ5aW5nIHZlYzMgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlKHRleCwgbm9ybWFsaXplKHRleENvb3JkKSk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHRo
YXQgdmFyaW91cyBzaXplcyBvZiB0ZXh0dXJlcyByZW5kZXIiKQorCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIg
cHJvZ3JhbTJEID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKK3ZhciBwcm9ncmFtQ3ViZU1h
cCA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10sIFsn
dlBvc2l0aW9uJywgJ3RleENvb3JkMCddLCBbMCwgMV0pOworZ2wuZGlzYWJsZShnbC5ERVBUSF9U
RVNUKTsKK2dsLmRpc2FibGUoZ2wuQkxFTkQpOwordmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKK3ZhciBtYXgyRFNpemUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSk7
Cit2YXIgbWF4Q3ViZU1hcFNpemUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0NVQkVfTUFQX1RF
WFRVUkVfU0laRSk7CitkZWJ1ZygiTUFYX1RFWFRVUkVfU0laRToiICsgbWF4MkRTaXplKTsKK2Rl
YnVnKCJNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOiIgKyBtYXhDdWJlTWFwU2l6ZSk7CisvLyBB
c3N1bWluZyAyMDQ4eDIwNDh4UkdCQSAoMjJtZWcgd2l0aCBtaXBzKSB3aWxsIHJ1biBvbiBhbGwg
V2ViR0wgcGxhdGZvcm1zCit2YXIgbWF4MkRTcXVhcmVTaXplID0gTWF0aC5taW4obWF4MkRTaXpl
LCAyMDQ4KTsKKy8vIEknZCBwcmVmZXIgdGhpcyB0byBiZSAyMDQ4IGJ1dCB0aGF0J3MgMTZtZWcg
eCA2IGZhY2VzIG9yIDEyOG1lZyAod2l0aCBtaXBzKQorLy8gMTAyNCBpcyAzMy41IG1lZyAod2l0
aCBtaXBzKQordmFyIG1heEN1YmVNYXBTaXplID0gTWF0aC5taW4obWF4Q3ViZU1hcFNpemUsIDEw
MjQpOworCit2YXIgY29sb3JzID0gWworICB7IG5hbWU6ICJncmVlbiIsIHJnYmE6IFswLCAwLCAy
NTUsIDI1NV0gfSwKKyAgeyBuYW1lOiAicmVkIiwgcmdiYTogWzI1NSwgMCwgMCwgMjU1XSB9LAor
ICB7IG5hbWU6ICJibHVlIiwgcmdiYTogWzAsIDI1NSwgMCwgMjU1XSB9LAorICB7IG5hbWU6ICJ5
ZWxsb3ciLCByZ2JhOiBbMjU1LCAyNTUsIDAsIDI1NV0gfSwKKyAgeyBuYW1lOiAibWFnZW50YSIs
IHJnYmE6IFsyNTUsIDAsIDI1NSwgMjU1XSB9LAorICB7IG5hbWU6ICJjeWFuIiwgcmdiYTogWzAs
IDI1NSwgMjU1LCAyNTVdIH0KK107CisKK3ZhciBjb3VudCA9IDA7Cit2YXIgcG93ZXIgPSAwOwor
cnVuVGVzdCgpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBmdW5jdGlvbiBkb1Rlc3QoKSB7
CisgICAgdmFyIHNpemUgPSBNYXRoLnBvdygyLCBwb3dlcik7CisgICAgaWYgKHNpemUgPiBtYXgy
RFNpemUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZ2wudXNlUHJvZ3JhbShw
cm9ncmFtMkQpOworICAgIGlmICghY2hlY2tUZXh0dXJlKHNpemUsIDEsIGZhbHNlKSkgcmV0dXJu
IGZhbHNlOworICAgIGlmICghY2hlY2tUZXh0dXJlKDEsIHNpemUsIGZhbHNlKSkgcmV0dXJuIGZh
bHNlOworICAgIGlmIChzaXplIDw9IG1heDJEU3F1YXJlU2l6ZSkgeworICAgICAgaWYgKCFjaGVj
a1RleHR1cmUoc2l6ZSwgc2l6ZSwgZmFsc2UpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIH0KKyAgICB9CisgICAgaWYgKHNpemUgPD0gbWF4Q3ViZU1hcFNpemUpIHsKKyAgICAgIGds
LnVzZVByb2dyYW0ocHJvZ3JhbUN1YmVNYXApOworICAgICAgaWYgKCFjaGVja1RleHR1cmUoc2l6
ZSwgc2l6ZSwgdHJ1ZSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGlmIChkb1Rlc3QoKSkgeworICAgICsrcG93ZXI7
CisgICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKKyAgfSBlbHNlIHsKKyAgICBmaW5pc2hUZXN0
KCk7CisgIH0KK30KKworZnVuY3Rpb24gY2hlY2tUZXh0dXJlKHdpZHRoLCBoZWlnaHQsIGN1YmVN
YXApIHsKKyAgZGVidWcoIiIpOworICBjb3VudCA9IChjb3VudCArIDEpICUgY29sb3JzLmxlbmd0
aDsKKyAgdmFyIGNvbG9yID0gY29sb3JzW2NvdW50XTsKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgdmFyIHRhcmdldCA9IGN1YmVNYXAgPyBnbC5URVhUVVJFX0NVQkVfTUFQIDog
Z2wuVEVYVFVSRV8yRDsKKyAgdmFyIHR5cGUgPSBjdWJlTWFwID8gImN1YmUgbWFwIiA6ICIyRCB0
ZXh0dXJlIjsKKyAgZGVidWcoImNoZWNrICIgKyB3aWR0aCArICIsICIgKyBoZWlnaHQgKyAiICIg
KyB0eXBlKTsKKyAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCB0ZXgpOworICBnbC50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOwor
ICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RP
X0VER0UpOworICBmaWxsTGV2ZWwoMCwgd2lkdGgsIGhlaWdodCwgY29sb3IucmdiYSwgY3ViZU1h
cCk7CisgIHZhciBlcnIgPSBnbC5nZXRFcnJvcigpOworICBpZiAoZXJyID09IGdsLk9VVF9PRl9N
RU1PUlkpIHsKKyAgICBkZWJ1Zygib3V0IG9mIG1lbW9yeSIpOworICAgIHJldHVybiBmYWxzZTsK
KyAgfQorICBpZiAoZXJyICE9IGdsLk5PX0VSUk9SKSB7CisgICAgdGVzdEZhaWxlZCgidW5leHBl
Y3RlZCBnbCBlcnJvcjogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZXJyKSk7CisgIH0KKyAg
d3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgdmFyIHRvbGVyYW5jZSA9IDM7CisgIHd0
dS5jaGVja0NhbnZhcyhnbCwgY29sb3IucmdiYSwKKyAgICAgIHR5cGUgKyAiIG9mIHNpemUgIiAr
IHdpZHRoICsgIngiICsgaGVpZ2h0ICsgIiB3aXRoIG5vIG1pcHMgc2hvdWxkIGRyYXcgd2l0aCAi
ICsgY29sb3IubmFtZSwKKyAgICAgIHRvbGVyYW5jZSk7CisgIGNvdW50ID0gKGNvdW50ICsgMSkg
JSBjb2xvcnMubGVuZ3RoOworICBjb2xvciA9IGNvbG9yc1tjb3VudF07CisgIGZpbGxMZXZlbCgw
LCB3aWR0aCwgaGVpZ2h0LCBjb2xvci5yZ2JhLCBjdWJlTWFwKTsKKyAgZ2wuZ2VuZXJhdGVNaXBt
YXAodGFyZ2V0KTsKKyAgdmFyIGVyciA9IGdsLmdldEVycm9yKCk7CisgIGlmIChlcnIgPT0gZ2wu
T1VUX09GX01FTU9SWSkgeworICAgIGRlYnVnKCJvdXQgb2YgbWVtb3J5Iik7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIGlmIChlcnIgIT0gZ2wuTk9fRVJST1IpIHsKKyAgICB0ZXN0RmFpbGVk
KCJ1bmV4cGVjdGVkIGdsIGVycm9yOiAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBlcnIpKTsK
KyAgfQorICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5MSU5FQVJfTUlQTUFQX05FQVJFU1QpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICB3dHUuY2hlY2tDYW52YXMoZ2wsIGNvbG9yLnJnYmEsCisgICAgICB0eXBlICsgIiBvZiBz
aXplICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCArICIgd2l0aCBtaXBzIHNob3VsZCBkcmF3IHdp
dGggIiArIGNvbG9yLm5hbWUsCisgICAgICB0b2xlcmFuY2UpOworCisgIGNvdW50ID0gKGNvdW50
ICsgMSkgJSBjb2xvcnMubGVuZ3RoOworICBjb2xvciA9IGNvbG9yc1tjb3VudF07CisgIGZpbGxM
ZXZlbCgwLCB3aWR0aCwgaGVpZ2h0LCBjb2xvci5yZ2JhLCBjdWJlTWFwLCB0cnVlKTsKKyAgZ2wu
Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICB3dHUuY2hlY2tDYW52YXMoZ2wsIGNvbG9yLnJnYmEsCisgICAgICB0eXBlICsgIiBvZiBz
aXplICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCArICIgd2l0aCBtaXBzIHNob3VsZCBkcmF3IHdp
dGggIiArIGNvbG9yLm5hbWUsCisgICAgICB0b2xlcmFuY2UpOworCisgIGdsLmRlbGV0ZVRleHR1
cmUodGV4KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzLiIpOworICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZmlsbExldmVs
KGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwgb3B0X2N1YmVtYXAsIG9wdF9zdWJUZXgpIHsK
KyAgdmFyIG51bVBpeGVscyA9IHdpZHRoICogaGVpZ2h0OworICB2YXIgcGl4ZWxzID0gbnVsbDsK
KyAgdmFyIGxhcmdlRGltID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7CisgIHZhciBzbWFsbERp
bSA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpOworCisgIHZhciBwaXhlbFJvdyA9IG5ldyBVaW50
OEFycmF5KGxhcmdlRGltICogNCk7CisgIGZvciAodmFyIGpqID0gMDsgamogPCBsYXJnZURpbTsg
KytqaikgeworICAgIHZhciBvZmYgPSBqaiAqIDQ7CisgICAgcGl4ZWxSb3dbb2ZmICsgMF0gPSBj
b2xvclswXTsKKyAgICBwaXhlbFJvd1tvZmYgKyAxXSA9IGNvbG9yWzFdOworICAgIHBpeGVsUm93
W29mZiArIDJdID0gY29sb3JbMl07CisgICAgcGl4ZWxSb3dbb2ZmICsgM10gPSBjb2xvclszXTsK
KyAgfQorCisgIGlmIChsYXJnZURpbSA9PSBudW1QaXhlbHMpIHsKKyAgICBwaXhlbHMgPSBwaXhl
bFJvdzsKKyAgfSBlbHNlIHsKKyAgICB2YXIgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkobnVtUGl4
ZWxzICogNCk7CisgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IHNtYWxsRGltOyArK2pqKSB7Cisg
ICAgICB2YXIgb2ZmID0gamogKiBsYXJnZURpbSAqIDQ7CisgICAgICBwaXhlbHMuc2V0KHBpeGVs
Um93LCBvZmYpOworICAgIH0KKyAgfQorCisgIHZhciB0YXJnZXRzID0gb3B0X2N1YmVtYXAgPyBb
CisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWiwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pdIDoKKyAg
ICBbZ2wuVEVYVFVSRV8yRF07CisKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRhcmdldHMubGVu
Z3RoOyArK2lpKSB7CisgICAgLy8gZGVidWcod3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0YXJnZXRz
W2lpXSkpOworICAgIHZhciBpbmRleCA9IChpaSArIHBvd2VyKSAlIHRhcmdldHMubGVuZ3RoOwor
ICAgIHZhciB0YXJnZXQgPSB0YXJnZXRzW2luZGV4XTsKKyAgICBpZiAob3B0X3N1YlRleCkgewor
ICAgICAgZ2wudGV4U3ViSW1hZ2UyRCgKKyAgICAgICAgICB0YXJnZXQsIGxldmVsLCAwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgIHBpeGVs
cyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGdsLnRleEltYWdlMkQoCisgICAgICAgICAgdGFyZ2V0
LCBsZXZlbCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwKKyAgICAgICAgICBwaXhlbHMpOworICAgIH0KKyAgfQorfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1zdWItaW1h
Z2UtY3ViZS1tYXBzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtc3ViLWltYWdlLWN1YmUt
bWFwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTc0MDc2NmFiNzQ1YWQxODgxYjJhNTZjMDE4YzcxYzc4
Yzc1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtc3ViLWltYWdl
LWN1YmUtbWFwcy5odG1sCkBAIC0wLDAgKzEsMzE2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIHRleFN1YkltYWdl
MkRzIGN1YmUgbWFwIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgc3R5
bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNo
YWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9u
OwordW5pZm9ybSBtYXQ0IHJvdGF0aW9uOwordmFyeWluZyB2ZWMzIHRleENvb3JkOwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB2ZWM0IGRpcmVjdGlv
biA9IHZlYzQodlBvc2l0aW9uLnggKiAwLjUsIHZQb3NpdGlvbi55ICogMC41LCAxLCAxKTsKKyAg
ICB0ZXhDb29yZCA9IG5vcm1hbGl6ZSgocm90YXRpb24gKiBkaXJlY3Rpb24pLnh5eik7Cit9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlckN1YmUgdGV4Owor
dmFyeWluZyB2ZWMzIHRleENvb3JkOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3Ig
PSB0ZXh0dXJlQ3ViZSh0ZXgsIG5vcm1hbGl6ZSh0ZXhDb29yZCkpOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIGNhbnZhczsKK2Rlc2NyaXB0aW9uKCJDaGVja3Mg
aXNzdWVzIHdpdGggc2l6ZSBvZiBjdWJlIG1hcCB0ZXh0dXJlcyIpOworZGVidWcoIiIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImV4YW1wbGUiKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMp
Oword3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQ
cm9ncmFtKAorICAgIGdsLAorICAgIFsndnNoYWRlcicsICdmc2hhZGVyJ10sCisgICAgWyd2UG9z
aXRpb24nLCAndGV4Q29vcmQwJ10sIFswLCAxXSk7Cit2YXIgcm90TG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJyb3RhdGlvbiIpOworCit2YXIgc2l6ZSA9IDE2OworCit2YXIg
Y29sb3JzID0gWworICB7bmFtZTogJ3JlZCcsICAgICBjb2xvcjogWzI1NSwgICAwLCAgIDAsIDI1
NV19LAorICB7bmFtZTogJ2dyZWVuJywgICBjb2xvcjogWyAgMCwgMjU1LCAgIDAsIDI1NV19LAor
ICB7bmFtZTogJ2JsdWUnLCAgICBjb2xvcjogWyAgMCwgICAwLCAyNTUsIDI1NV19LAorICB7bmFt
ZTogJ3llbGxvdycsICBjb2xvcjogWzI1NSwgMjU1LCAgIDAsIDI1NV19LAorICB7bmFtZTogJ2N5
YW4nLCAgICBjb2xvcjogWyAgMCwgMjU1LCAyNTUsIDI1NV19LAorICB7bmFtZTogJ21hZ2VudGEn
LCBjb2xvcjogWzI1NSwgICAwLCAyNTUsIDI1NV19CitdOworCit2YXIgdGFyZ2V0cyA9IFsKKyAg
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1gsCisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgZ2wuVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1os
CisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisKK3ZhciByb3RhdGlvbnMgPSBb
CisgIHtheGlzOiBbMCwgMSwgMF0sIGFuZ2xlOiAgTWF0aC5QSSAvIDJ9LAorICB7YXhpczogWzAs
IDEsIDBdLCBhbmdsZTogLU1hdGguUEkgLyAyfSwKKyAge2F4aXM6IFsxLCAwLCAwXSwgYW5nbGU6
IC1NYXRoLlBJIC8gMn0sCisgIHtheGlzOiBbMSwgMCwgMF0sIGFuZ2xlOiAgTWF0aC5QSSAvIDJ9
LAorICB7YXhpczogWzAsIDEsIDBdLCBhbmdsZTogIDB9LAorICB7YXhpczogWzAsIDEsIDBdLCBh
bmdsZTogIE1hdGguUEl9LAorXTsKKwordmFyIGhhbGZSb3RhdGlvbnMgPSBbCisgIHtjb2xvcnM6
IFszLCA0XSwgcm90YXRpb25zOiBbe2F4aXM6IFsxLCAwLCAwXSwgYW5nbGU6ICBNYXRoLlBJIC8g
NH1dfSwKKyAge2NvbG9yczogWzQsIDJdLCByb3RhdGlvbnM6IFt7YXhpczogWzEsIDAsIDBdLCBh
bmdsZTogLU1hdGguUEkgLyA0fV19LAorICB7Y29sb3JzOiBbNSwgM10sIHJvdGF0aW9uczogW3th
eGlzOiBbMSwgMCwgMF0sIGFuZ2xlOiAgTWF0aC5QSSAvIDQgKiAzfV19LAorICB7Y29sb3JzOiBb
MiwgNV0sIHJvdGF0aW9uczogW3theGlzOiBbMSwgMCwgMF0sIGFuZ2xlOiAtTWF0aC5QSSAvIDQg
KiAzfV19LAorICB7Y29sb3JzOiBbMywgMF0sIHJvdGF0aW9uczogW3theGlzOiBbMCwgMSwgMF0s
IGFuZ2xlOiAgTWF0aC5QSSAvIDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHth
eGlzOiBbMSwgMCwgMF0sIGFuZ2xlOiAgTWF0aC5QSSAvIDR9XX0sCisgIHtjb2xvcnM6IFswLCAy
XSwgcm90YXRpb25zOiBbe2F4aXM6IFswLCAxLCAwXSwgYW5nbGU6ICBNYXRoLlBJIC8gMn0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2F4aXM6IFsxLCAwLCAwXSwgYW5nbGU6IC1N
YXRoLlBJIC8gNH1dfSwKK107CisKK3ZhciBjb3VudCA9IDA7Cit0ZXN0U2l6ZShzaXplKTsKKwor
ZnVuY3Rpb24gdGVzdFNpemUoc2l6ZSkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0aW5n
IHNpemU6ICIgKyBzaXplKTsKKyAgdmFyIGNhbnZhc1NpemUgPSBNYXRoLm1heChzaXplIC8gNCwg
Mik7CisgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1NpemU7CisgIGNhbnZhcy5oZWlnaHQgPSBjYW52
YXNTaXplOworICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLCBjYW52YXNTaXplKTsKKyAg
dmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV9DVUJFX01BUCwgdGV4KTsKKworICAvLyBTZWVtcyBsaWtlIEkgc2hvdWxkIGJlIHVzaW5nIExJ
TkVBUiBoZXJlIHdpdGggc29tZSBvdGhlciBtYXRoCisgIC8vIHRvIG1ha2Ugc3VyZSBJIGdldCBt
b3JlIG1pcCBjb3ZlcmFnZSBidXQgdGhhdCdzIGVhc2llciBzYWlkCisgIC8vIHRoYW4gZG9uZS4K
KworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJF
X01BUCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICBmb3IgKHZhciBq
aiA9IDA7IGpqIDwgMjsgKytqaikgeworICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJnZXRz
Lmxlbmd0aDsgKyt0dCkgeworICAgICAgdmFyIGNvbG9yID0gY29sb3JzWyh0dCArIGNvdW50KSAl
IGNvbG9ycy5sZW5ndGhdOworICAgICAgZmlsbExldmVsKHRhcmdldHNbdHRdLCAwLCBzaXplLCBj
b2xvci5jb2xvcik7CisgICAgfQorICAgIGlmIChqaiA9PSAxKSB7CisgICAgICBkZWJ1ZygidXNl
IG1pcG1hcCIpOworICAgICAgZ2wudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICBnbC5URVhUVVJF
X0NVQkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIsCisgICAgICAgICAgZ2wuTkVBUkVTVF9N
SVBNQVBfTkVBUkVTVCk7CisgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVf
TUFQKTsKKyAgICB9CisKKyAgICB2YXIgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICBpZiAoZXJy
ID09IGdsLk9VVF9PRl9NRU1PUlkpIHsKKyAgICAgIGRlYnVnKCJvdXQgb2YgbWVtb3J5Iik7Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChlcnIgIT0gZ2wuTk9fRVJST1IpIHsK
KyAgICAgIHRlc3RGYWlsZWQoInVuZXhwZWN0ZWQgZ2wgZXJyb3I6ICIgKyB3dHUuZ2xFbnVtVG9T
dHJpbmcoZ2wsIGVycikpOworICAgIH0KKworCisgICAgZm9yICh2YXIgcnIgPSAwOyByciA8IHJv
dGF0aW9ucy5sZW5ndGg7ICsrcnIpIHsKKyAgICAgIHZhciByb3QgPSByb3RhdGlvbnNbcnJdOwor
ICAgICAgdmFyIGNvbG9yID0gY29sb3JzWyhyciArIGNvdW50KSAlIGNvbG9ycy5sZW5ndGhdOwor
ICAgICAgdmFyIHJvdE1hdCA9IGF4aXNSb3RhdGlvbihyb3QuYXhpcywgcm90LmFuZ2xlKTsKKyAg
ICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYocm90TG9jLCBmYWxzZSwgcm90TWF0KTsKKyAgICAgIHd0
dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICB3dHUuY2hlY2tDYW52YXMoCisgICAg
ICAgICAgZ2wsIGNvbG9yLmNvbG9yLAorICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwg
dGFyZ2V0c1tycl0pICsgIiBzaG91bGQgYmUgIiArIGNvbG9yLm5hbWUpOworICAgIH0KKworICAg
IGZvciAodmFyIHJyID0gMDsgcnIgPCBoYWxmUm90YXRpb25zLmxlbmd0aDsgKytycikgeworICAg
ICAgdmFyIGggPSBoYWxmUm90YXRpb25zW3JyXTsKKyAgICAgIHZhciByb3RzID0gaC5yb3RhdGlv
bnM7CisgICAgICB2YXIgcm90TWF0ID0gYXhpc1JvdGF0aW9uKHJvdHNbMF0uYXhpcywgcm90c1sw
XS5hbmdsZSk7CisgICAgICBmb3IgKHZhciBpaSA9IDE7IGlpIDwgcm90cy5sZW5ndGg7ICsraWkp
IHsKKyAgICAgICAgdmFyIHRtcE1hdCA9IGF4aXNSb3RhdGlvbihyb3RzW2lpXS5heGlzLCByb3Rz
W2lpXS5hbmdsZSk7CisgICAgICAgIHZhciByb3RNYXQgPSBtdWxNYXRyaXgodG1wTWF0LCByb3RN
YXQpOworICAgICAgfQorICAgICAgZ2wudW5pZm9ybU1hdHJpeDRmdihyb3RMb2MsIGZhbHNlLCBy
b3RNYXQpOworICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICAgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IDI7ICsraWkpIHsKKyAgICAgICAgY2hlY2tSZWN0KAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIGNhbnZhc1NpemUgLyAyICogaWksCisgICAgICAgICAgICBj
YW52YXNTaXplLAorICAgICAgICAgICAgY2FudmFzU2l6ZSAvIDIsCisgICAgICAgICAgICBjb2xv
cnNbKGguY29sb3JzW2lpXSArIGNvdW50KSAlIGNvbG9ycy5sZW5ndGhdKTsKKyAgICAgIH0KKyAg
ICB9CisgICAgKytjb3VudDsKKyAgfQorCisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKyAgcmV0
dXJuIHRydWU7Cit9CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hv
dWxkIGJlIG5vIGVycm9ycy4iKTsKKworZnVuY3Rpb24gY2hlY2tSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGNvbG9yKSB7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoCisgICAgICAgZ2wsCisgICAg
ICAgeCwKKyAgICAgICB5LAorICAgICAgIHdpZHRoLAorICAgICAgIGhlaWdodCwKKyAgICAgICBj
b2xvci5jb2xvciwKKyAgICAgICAiIiArIHggKyAiLCAiICsgeSArICIsICIgKyB3aWR0aCArICIs
ICIgKyBoZWlnaHQgKworICAgICAgICIgc2hvdWxkIGJlICIgKyBjb2xvci5uYW1lKTsKK30KKwor
ZnVuY3Rpb24gZmlsbExldmVsKHRhcmdldCwgbGV2ZWwsIHNpemUsIGNvbG9yKSB7CisgIHZhciBu
dW1QaXhlbHMgPSBzaXplICogc2l6ZTsKKyAgdmFyIGhhbGZQaXhlbFJvdyA9IG5ldyBVaW50OEFy
cmF5KHNpemUgKiAyKTsKKyAgZm9yICh2YXIgamogPSAwOyBqaiA8IHNpemU7ICsramopIHsKKyAg
ICB2YXIgb2ZmID0gamogKiA0OworICAgIGhhbGZQaXhlbFJvd1tvZmYgKyAwXSA9IGNvbG9yWzBd
OworICAgIGhhbGZQaXhlbFJvd1tvZmYgKyAxXSA9IGNvbG9yWzFdOworICAgIGhhbGZQaXhlbFJv
d1tvZmYgKyAyXSA9IGNvbG9yWzJdOworICAgIGhhbGZQaXhlbFJvd1tvZmYgKyAzXSA9IGNvbG9y
WzNdOworICB9CisgIGdsLnRleEltYWdlMkQoCisgICAgICB0YXJnZXQsIGxldmVsLCBnbC5SR0JB
LCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgbnVsbCk7
CisgIGZvciAodmFyIGpqID0gMDsgamogPCBzaXplOyArK2pqKSB7CisgICAgICBnbC50ZXhTdWJJ
bWFnZTJEKAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIDAsIGpqLCBzaXplIC8gMiwgMSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgaGFsZlBpeGVsUm93KTsKKyAgICAgIGdsLnRleFN1Yklt
YWdlMkQoCisgICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgc2l6ZSAvIDIsIGpqLCBzaXplIC8gMiwg
MSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaGFsZlBpeGVsUm93KTsKKyAgfQorfQorCitm
dW5jdGlvbiBwcmludE1hdChtYXQpIHsKKyAgZGVidWcoIiIgKyBtYXRbMF0gKyAiLCAiICsgbWF0
WzFdICsgIiwgIiArIG1hdFsyXSArICIsICIgKyBtYXRbM10gKyAiLCAiKTsKKyAgZGVidWcoIiIg
KyBtYXRbNF0gKyAiLCAiICsgbWF0WzVdICsgIiwgIiArIG1hdFs2XSArICIsICIgKyBtYXRbN10g
KyAiLCAiKTsKKyAgZGVidWcoIiIgKyBtYXRbOF0gKyAiLCAiICsgbWF0WzldICsgIiwgIiArIG1h
dFsxMF0gKyAiLCAiICsgbWF0WzExXSArICIsICIpOworICBkZWJ1ZygiIiArIG1hdFsxMl0gKyAi
LCAiICsgbWF0WzEzXSArICIsICIgKyBtYXRbMTRdICsgIiwgIiArIG1hdFsxNV0gKyAiLCAiKTsK
K30KKworZnVuY3Rpb24gYXhpc1JvdGF0aW9uKGF4aXMsIGFuZ2xlKSB7CisgIHZhciBkc3QgPSBu
ZXcgRmxvYXQzMkFycmF5KDE2KTsKKyAgdmFyIHggPSBheGlzWzBdOworICB2YXIgeSA9IGF4aXNb
MV07CisgIHZhciB6ID0gYXhpc1syXTsKKyAgdmFyIG4gPSBNYXRoLnNxcnQoeCAqIHggKyB5ICog
eSArIHogKiB6KTsKKyAgeCAvPSBuOworICB5IC89IG47CisgIHogLz0gbjsKKyAgdmFyIHh4ID0g
eCAqIHg7CisgIHZhciB5eSA9IHkgKiB5OworICB2YXIgenogPSB6ICogejsKKyAgdmFyIGMgPSBN
YXRoLmNvcyhhbmdsZSk7CisgIHZhciBzID0gTWF0aC5zaW4oYW5nbGUpOworICB2YXIgb25lTWlu
dXNDb3NpbmUgPSAxIC0gYzsKKworICBkc3RbIDBdID0geHggKyAoMSAtIHh4KSAqIGM7CisgIGRz
dFsgMV0gPSB4ICogeSAqIG9uZU1pbnVzQ29zaW5lICsgeiAqIHM7CisgIGRzdFsgMl0gPSB4ICog
eiAqIG9uZU1pbnVzQ29zaW5lIC0geSAqIHM7CisgIGRzdFsgM10gPSAwOworICBkc3RbIDRdID0g
eCAqIHkgKiBvbmVNaW51c0Nvc2luZSAtIHogKiBzOworICBkc3RbIDVdID0geXkgKyAoMSAtIHl5
KSAqIGM7CisgIGRzdFsgNl0gPSB5ICogeiAqIG9uZU1pbnVzQ29zaW5lICsgeCAqIHM7CisgIGRz
dFsgN10gPSAwOworICBkc3RbIDhdID0geCAqIHogKiBvbmVNaW51c0Nvc2luZSArIHkgKiBzOwor
ICBkc3RbIDldID0geSAqIHogKiBvbmVNaW51c0Nvc2luZSAtIHggKiBzOworICBkc3RbMTBdID0g
enogKyAoMSAtIHp6KSAqIGM7CisgIGRzdFsxMV0gPSAwOworICBkc3RbMTJdID0gMDsKKyAgZHN0
WzEzXSA9IDA7CisgIGRzdFsxNF0gPSAwOworICBkc3RbMTVdID0gMTsKKworICByZXR1cm4gZHN0
OworfTsKKworZnVuY3Rpb24gbXVsTWF0cml4KGEsIGIpIHsKKyAgdmFyIGRzdCA9IG5ldyBGbG9h
dDMyQXJyYXkoMTYpOworICB2YXIgYTAwID0gYVswXTsKKyAgdmFyIGEwMSA9IGFbMV07CisgIHZh
ciBhMDIgPSBhWzJdOworICB2YXIgYTAzID0gYVszXTsKKyAgdmFyIGExMCA9IGFbIDQgKyAwXTsK
KyAgdmFyIGExMSA9IGFbIDQgKyAxXTsKKyAgdmFyIGExMiA9IGFbIDQgKyAyXTsKKyAgdmFyIGEx
MyA9IGFbIDQgKyAzXTsKKyAgdmFyIGEyMCA9IGFbIDggKyAwXTsKKyAgdmFyIGEyMSA9IGFbIDgg
KyAxXTsKKyAgdmFyIGEyMiA9IGFbIDggKyAyXTsKKyAgdmFyIGEyMyA9IGFbIDggKyAzXTsKKyAg
dmFyIGEzMCA9IGFbMTIgKyAwXTsKKyAgdmFyIGEzMSA9IGFbMTIgKyAxXTsKKyAgdmFyIGEzMiA9
IGFbMTIgKyAyXTsKKyAgdmFyIGEzMyA9IGFbMTIgKyAzXTsKKyAgdmFyIGIwMCA9IGJbMF07Cisg
IHZhciBiMDEgPSBiWzFdOworICB2YXIgYjAyID0gYlsyXTsKKyAgdmFyIGIwMyA9IGJbM107Cisg
IHZhciBiMTAgPSBiWyA0ICsgMF07CisgIHZhciBiMTEgPSBiWyA0ICsgMV07CisgIHZhciBiMTIg
PSBiWyA0ICsgMl07CisgIHZhciBiMTMgPSBiWyA0ICsgM107CisgIHZhciBiMjAgPSBiWyA4ICsg
MF07CisgIHZhciBiMjEgPSBiWyA4ICsgMV07CisgIHZhciBiMjIgPSBiWyA4ICsgMl07CisgIHZh
ciBiMjMgPSBiWyA4ICsgM107CisgIHZhciBiMzAgPSBiWzEyICsgMF07CisgIHZhciBiMzEgPSBi
WzEyICsgMV07CisgIHZhciBiMzIgPSBiWzEyICsgMl07CisgIHZhciBiMzMgPSBiWzEyICsgM107
CisgIGRzdFsgMF0gPSBhMDAgKiBiMDAgKyBhMDEgKiBiMTAgKyBhMDIgKiBiMjAgKyBhMDMgKiBi
MzA7CisgIGRzdFsgMV0gPSBhMDAgKiBiMDEgKyBhMDEgKiBiMTEgKyBhMDIgKiBiMjEgKyBhMDMg
KiBiMzE7CisgIGRzdFsgMl0gPSBhMDAgKiBiMDIgKyBhMDEgKiBiMTIgKyBhMDIgKiBiMjIgKyBh
MDMgKiBiMzI7CisgIGRzdFsgM10gPSBhMDAgKiBiMDMgKyBhMDEgKiBiMTMgKyBhMDIgKiBiMjMg
KyBhMDMgKiBiMzM7CisgIGRzdFsgNF0gPSBhMTAgKiBiMDAgKyBhMTEgKiBiMTAgKyBhMTIgKiBi
MjAgKyBhMTMgKiBiMzA7CisgIGRzdFsgNV0gPSBhMTAgKiBiMDEgKyBhMTEgKiBiMTEgKyBhMTIg
KiBiMjEgKyBhMTMgKiBiMzE7CisgIGRzdFsgNl0gPSBhMTAgKiBiMDIgKyBhMTEgKiBiMTIgKyBh
MTIgKiBiMjIgKyBhMTMgKiBiMzI7CisgIGRzdFsgN10gPSBhMTAgKiBiMDMgKyBhMTEgKiBiMTMg
KyBhMTIgKiBiMjMgKyBhMTMgKiBiMzM7CisgIGRzdFsgOF0gPSBhMjAgKiBiMDAgKyBhMjEgKiBi
MTAgKyBhMjIgKiBiMjAgKyBhMjMgKiBiMzA7CisgIGRzdFsgOV0gPSBhMjAgKiBiMDEgKyBhMjEg
KiBiMTEgKyBhMjIgKiBiMjEgKyBhMjMgKiBiMzE7CisgIGRzdFsxMF0gPSBhMjAgKiBiMDIgKyBh
MjEgKiBiMTIgKyBhMjIgKiBiMjIgKyBhMjMgKiBiMzI7CisgIGRzdFsxMV0gPSBhMjAgKiBiMDMg
KyBhMjEgKiBiMTMgKyBhMjIgKiBiMjMgKyBhMjMgKiBiMzM7CisgIGRzdFsxMl0gPSBhMzAgKiBi
MDAgKyBhMzEgKiBiMTAgKyBhMzIgKiBiMjAgKyBhMzMgKiBiMzA7CisgIGRzdFsxM10gPSBhMzAg
KiBiMDEgKyBhMzEgKiBiMTEgKyBhMzIgKiBiMjEgKyBhMzMgKiBiMzE7CisgIGRzdFsxNF0gPSBh
MzAgKiBiMDIgKyBhMzEgKiBiMTIgKyBhMzIgKiBiMjIgKyBhMzMgKiBiMzI7CisgIGRzdFsxNV0g
PSBhMzAgKiBiMDMgKyBhMzEgKiBiMTMgKyBhMzIgKiBiMjMgKyBhMzMgKiBiMzM7CisgIHJldHVy
biBkc3Q7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtdHJh
bnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUt
dHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZjZjM4NGVk
Y2EzODI4OTdlMzBmYTVjZWE3Yzk0OGI5ODkwNjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQuaHRtbApAQCAt
MCwwICsxLDg3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSBudWxsOwordmFyIHRleHR1cmU7Cit2YXIgdGV4dHVyZUxvYyA9IG51bGw7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGluaXQoKQorewor
ICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGVyZSBpcyBubyBnYXJiYWdlIGluIHRyYW5zcGFyZW50
IHJlZ2lvbnMgb2YgaW1hZ2VzIHVwbG9hZGVkIGFzIHRleHR1cmVzJyk7CisKKyAgICB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKKyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsK
KyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisgICAgZ2wuY2xl
YXJDb2xvcigwLjUsMC41LDAuNSwxKTsKKyAgICBnbC5jbGVhckRlcHRoKDEpOworCisgICAgdGV4
dHVyZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisKKyAgICAv
LyBUaGUgaW5wdXQgdGV4dHVyZSBoYXMgOCBjaGFyYWN0ZXJzOyB0YWtlIHRoZSBsZWZ0bW9zdCBv
bmUKKyAgICB2YXIgY29lZmYgPSAxLjAgLyA4LjA7CisgICAgdmFyIHRleENvb3JkcyA9IG5ldyBG
bG9hdDMyQXJyYXkoWworICAgICAgICBjb2VmZiwgMS4wLAorICAgICAgICAwLjAsIDEuMCwKKyAg
ICAgICAgMC4wLCAwLjAsCisgICAgICAgIGNvZWZmLCAxLjAsCisgICAgICAgIDAuMCwgMC4wLAor
ICAgICAgICBjb2VmZiwgMC4wXSk7CisKKyAgICB2YXIgdmJvID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZibyk7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIHRleENvb3JkcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGds
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHRleHR1cmUgPSB3dHUubG9hZFRl
eHR1cmUoZ2wsICIuLi8uLi8uLi9yZXNvdXJjZXMvYnVnLTMyODg4LXRleHR1cmUucG5nIiwgcnVu
VGVzdCk7Cit9CisKKy8vIFRoZXNlIHR3byBkZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBnbG9iYWwg
Zm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0KK3ZhciBidWYgPSBudWxsOwordmFyIGlkeCA9IDA7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBnbC5lbmFibGUoZ2wuQkxFTkQpOworICAg
IGdsLmJsZW5kRnVuYyhnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpOworICAg
IC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAvLyBQb2ludCB0aGUgdW5pZm9ybSBzYW1w
bGVyIHRvIHRleHR1cmUgdW5pdCAwCisgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOwor
ICAgIC8vIERyYXcgdGhlIHRyaWFuZ2xlcworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCwgWzAsIDAsIDAsIDI1NV0pOworCisgICAgLy8gU3BvdCBjaGVjayBhIGNvdXBsZSBvZiAyeDIg
cmVnaW9ucyBpbiB0aGUgdXBwZXIgYW5kIGxvd2VyIGxlZnQKKyAgICAvLyBjb3JuZXJzOyB0aGV5
IHNob3VsZCBiZSB0aGUgcmdiIHZhbHVlcyBpbiB0aGUgdGV4dHVyZS4KKyAgICB2YXIgY29sb3Ig
PSBbMCwgMCwgMF07CisgICAgZGVidWcoIkNoZWNraW5nIGxvd2VyIGxlZnQgY29ybmVyIik7Cisg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMSwgZ2wuY2FudmFzLmhlaWdodCAtIDMsIDIsIDIs
IGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyBjb2xvcik7Cisg
ICAgZGVidWcoIkNoZWNraW5nIHVwcGVyIGxlZnQgY29ybmVyIik7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgMSwgMSwgMiwgMiwgY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAi
c2hvdWxkQmUgIiArIGNvbG9yKTsKKworICAgIGZpbmlzaFRlc3QoKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLXVwbG9hZC1jdWJlLW1hcHMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L21pc2MvdGV4dHVyZS11cGxvYWQtY3ViZS1tYXBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxMDRmZTEy
NzYyNjhjMzQyM2M2NDJhNDM1MTYwNWJlOWFmODU4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdGV4dHVyZS11cGxvYWQtY3ViZS1tYXBzLmh0bWwKQEAgLTAsMCArMSw1MiBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVGVzdHMgdGV4
SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCB1cGxvYWQgcGF0aCBmb3IgVEVYVFVSRV9DVUJFX01B
UCcpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJl
IG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCitmdW5jdGlvbiB0ZXN0T25lVGFyZ2V0KHRhcmdl
dCwgd2lkdGgsIGhlaWdodCkgeworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXgpOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBiaW5kVGV4
dHVyZShURVhUVVJFX0NVQkVfTUFQKS4iKTsKKworICBnbC50ZXhJbWFnZTJEKHRhcmdldCwgMCwg
Z2wuUkdCLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBl
cnJvcnMgZnJvbSB0ZXhJbWFnZTJELiIpOworCisgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSh3
aWR0aCAqIGhlaWdodCAqIDMpOworICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldCwgMCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSB0
ZXhTdWJJbWFnZTJELiIpOworfQorCit0ZXN0T25lVGFyZ2V0KGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCwgMTYsIDE2KTsKK3Rlc3RPbmVUYXJnZXQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZLCAxNiwgMTYpOwordGVzdE9uZVRhcmdldChnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1osIDE2LCAxNik7Cit0ZXN0T25lVGFyZ2V0KGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWCwgMTYsIDE2KTsKK3Rlc3RPbmVUYXJnZXQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9ZLCAxNiwgMTYpOwordGVzdE9uZVRhcmdldChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1osIDE2LCAxNik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS11cGxv
YWQtc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLXVwbG9hZC1zaXplLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTBmMzBkYzg5ZmNjODk5YmNlY2UxOWVlM2VmZjdmNDZhYzFhYzg2NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS11cGxvYWQtc2l6ZS5odG1sCkBAIC0w
LDAgKzEsMTUxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIHVwbG9hZCBzaXplIGNvbmZvcm1hbmNlIHRlc3Q8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitlbmFibGVKU1Rlc3RQcmVWZXJib3NlTG9nZ2lu
ZygpOworZGVzY3JpcHRpb24oIkNoZWNrcyB0aGF0IHRoZSBzaXplIG9mIGEgdGV4dHVyZSB1cGxv
YWRlZCBmcm9tIGFuIGVsZW1lbnQgaXMgc2V0IGNvcnJlY3RseS4iKTsKKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIik7CisK
K3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXgpOworCit2YXIgdGVzdFVwbG9hZCA9IGZ1bmN0aW9uKHVwbG9hZCwgZXhwZWN0ZWRX
aWR0aCwgZXhwZWN0ZWRIZWlnaHQpIHsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1cGxvYWQpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIndoZW4gY2FsbGluZyB0ZXhJbWFnZTJEIik7
CisgIHd0dS5jaGVja1RleHR1cmVTaXplKGdsLCBleHBlY3RlZFdpZHRoLCBleHBlY3RlZEhlaWdo
dCk7CisgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgdXBsb2FkKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJ3aGVuIGNhbGxpbmcgdGV4U3ViSW1hZ2UyRCB3aXRoIHRoZSBzYW1lIHRleHR1
cmUgdXBsb2FkIik7CisgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwgMSwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdXBsb2FkKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIndoZW4gY2FsbGluZyB0ZXhTdWJJbWFnZTJEIHdpdGgg
dGhlIHNhbWUgdGV4dHVyZSB1cGxvYWQgd2l0aCBvZmZzZXQgMSwgMSIpOworfTsKKwordmFyIHRl
c3RJbWFnZSA9IGZ1bmN0aW9uKHRlc3QsIGltZykgeworICB2YXIgd2lkdGggPSBpbWcud2lkdGg7
CisgIHZhciBoZWlnaHQgPSBpbWcuaGVpZ2h0OworICB0ZXN0VXBsb2FkKGltZywgd2lkdGgsIGhl
aWdodCk7CisKKyAgZGVidWcoIlRlc3RpbmcgY2hhbmdpbmcgdGhlIHdpZHRoIGFuZCBoZWlnaHQg
YXR0cmlidXRlcyBvZiB0aGUgaW1hZ2UiKTsKKyAgaW1nLndpZHRoICo9IDI7CisgIGltZy5oZWln
aHQgKj0gMjsKKyAgaWYgKHRlc3QuaXNTVkcpIHsKKyAgICB0ZXN0VXBsb2FkKGltZywgaW1nLndp
ZHRoLCBpbWcuaGVpZ2h0KTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0VXBsb2FkKGltZywgd2lkdGgs
IGhlaWdodCk7CisgIH0KK307CisKK3ZhciB0ZXN0VmlkZW8gPSBmdW5jdGlvbih0ZXN0LCB2aWRl
bykgeworICAvLyBBc3N1bWluZyB0aGF0IHRoZSB2aWRlbyBpcyBub3QgYW5hbW9ycGhpYywgbm9y
IGhhcyBjbGVhbiBhcGVydHVyZSBkYXRhCisgIC8vIHRoYXQgd291bGQgbWFrZSB0aGUgZnJhbWUg
c2l6ZSBpbiBwaXhlbHMgZGlmZmVyZW50LgorICB2YXIgd2lkdGggPSB2aWRlby52aWRlb1dpZHRo
OworICB2YXIgaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisgIHRlc3RVcGxvYWQodmlkZW8s
IHdpZHRoLCBoZWlnaHQpOworCisgIGRlYnVnKCJUZXN0aW5nIGNoYW5naW5nIHRoZSB3aWR0aCBh
bmQgaGVpZ2h0IGF0dHJpYnV0ZXMgb2YgdGhlIHZpZGVvIik7CisgIHZpZGVvLndpZHRoICo9IDI7
CisgIHZpZGVvLmhlaWdodCAqPSAyOworICB0ZXN0VXBsb2FkKHZpZGVvLCB3aWR0aCwgaGVpZ2h0
KTsKK307CisKK3ZhciBjcmVhdGVDYW52YXMyRENvbnRleHQgPSBmdW5jdGlvbih3aWR0aCwgaGVp
Z2h0KSB7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
KyAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CisgIHZh
ciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgY3R4LmZpbGxSZWN0KDAsIDAsIHdp
ZHRoLCBoZWlnaHQpOworICByZXR1cm4gY3R4OworfTsKKwordmFyIHRlc3RJbWFnZURhdGEgPSBm
dW5jdGlvbih0ZXN0KSB7CisgIHZhciBjdHggPSBjcmVhdGVDYW52YXMyRENvbnRleHQodGVzdC53
aWR0aCwgdGVzdC5oZWlnaHQpOworICB2YXIgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgw
LCAwLCB0ZXN0LndpZHRoLCB0ZXN0LmhlaWdodCk7CisgIHRlc3RVcGxvYWQoaW1hZ2VEYXRhLCB0
ZXN0LndpZHRoLCB0ZXN0LmhlaWdodCk7Cit9OworCit2YXIgdGVzdENhbnZhcyA9IGZ1bmN0aW9u
KHRlc3QpIHsKKyAgdmFyIGN0eCA9IGNyZWF0ZUNhbnZhczJEQ29udGV4dCh0ZXN0LndpZHRoLCB0
ZXN0LmhlaWdodCk7CisgIHRlc3RVcGxvYWQoY3R4LmNhbnZhcywgdGVzdC53aWR0aCwgdGVzdC5o
ZWlnaHQpOworCisgIGRlYnVnKCJUZXN0aW5nIGNoYW5naW5nIHRoZSBkaW1lbnNpb25zIG9mIHRo
ZSBzYW1lIGNhbnZhcyIpOworICBjdHguY2FudmFzLndpZHRoID0gdGVzdC53aWR0aCArIDE7Cisg
IGN0eC5jYW52YXMuaGVpZ2h0ID0gdGVzdC5oZWlnaHQgKyAxOworICB0ZXN0VXBsb2FkKGN0eC5j
YW52YXMsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKK307CisKK3ZhciB0
ZXN0cyA9IFsKKyAge3R5cGU6ICJJbWFnZURhdGEiLCB3aWR0aDogMTIzLCBoZWlnaHQ6IDQ1Nn0s
CisgIHt0eXBlOiAiY2FudmFzIiwgd2lkdGg6IDEyMywgaGVpZ2h0OiA0NTZ9LAorICB7dHlwZTog
ImltZyIsIGlzU1ZHOiBmYWxzZSwgc3JjOiAiLi4vLi4vLi4vcmVzb3VyY2VzL3JlZC1ncmVlbi5w
bmcifSwKKyAge3R5cGU6ICJpbWciLCBpc1NWRzogdHJ1ZSwgc3JjOiAiLi4vLi4vLi4vcmVzb3Vy
Y2VzL3JlZC1ncmVlbi5zdmcifSwKKyAge3R5cGU6ICJ2aWRlbyIsIHNyYzogIi4uLy4uLy4uL3Jl
c291cmNlcy9yZWQtZ3JlZW4ubXA0IiwgdmlkZW9UeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2
YzEuNDJFMDFFLCBtcDRhLjQwLjIiJ30sCisgIHt0eXBlOiAidmlkZW8iLCBzcmM6ICIuLi8uLi8u
Li9yZXNvdXJjZXMvcmVkLWdyZWVuLmJ0NjAxLnZwOS53ZWJtIiwgdmlkZW9UeXBlOiAndmlkZW8v
d2VibTsgY29kZWNzPSJ2cDkiJ30sCisgIHt0eXBlOiAidmlkZW8iLCBzcmM6ICIuLi8uLi8uLi9y
ZXNvdXJjZXMvcmVkLWdyZWVuLndlYm12cDgud2VibSIsIHZpZGVvVHlwZTogJ3ZpZGVvL3dlYm07
IGNvZGVjcz0idnA4LCB2b3JiaXMiJ30sCisgIHt0eXBlOiAidmlkZW8iLCBzcmM6ICIuLi8uLi8u
Li9yZXNvdXJjZXMvcmVkLWdyZWVuLnRoZW9yYS5vZ3YiLCB2aWRlb1R5cGU6ICd2aWRlby9vZ2c7
IGNvZGVjcz0idGhlb3JhLCB2b3JiaXMiJ30sCitdOworCit2YXIgdGVzdEluZGV4ID0gMDsKKwor
dmFyIHJ1bk5leHRUZXN0ID0gZnVuY3Rpb24oKSB7CisgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5s
ZW5ndGgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhd
OworICAgICsrdGVzdEluZGV4OworICAgIGlmICh0ZXN0LnR5cGUgPT0gImltZyIpIHsKKyAgICAg
IGRlYnVnKCJIVE1MSW1hZ2VFbGVtZW50IiArICh0ZXN0LmlzU1ZHID8gIiAoU1ZHKSIgOiAiIikp
OworICAgICAgdmFyIGltZyA9IHd0dS5tYWtlSW1hZ2UodGVzdC5zcmMsIGZ1bmN0aW9uKCkgewor
ICAgICAgICB0ZXN0SW1hZ2UodGVzdCwgaW1nKTsKKyAgICAgICAgc2V0VGltZW91dChydW5OZXh0
VGVzdCwgMCk7CisgICAgICB9LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImNv
dWxkIG5vdCBjcmVhdGUgaW1hZ2UiICsgKHRlc3QuaXNTVkcgPyAiIChTVkcpIiA6ICIiKSk7Cisg
ICAgICAgIHNldFRpbWVvdXQocnVuTmV4dFRlc3QsIDApOworICAgICAgfSk7CisgICAgfSBlbHNl
IGlmICh0ZXN0LnR5cGUgPT0gInZpZGVvIikgeworICAgICAgZGVidWcoIkhUTUxWaWRlb0VsZW1l
bnQgKCIgKyB0ZXN0LnZpZGVvVHlwZSArICIpIik7CisgICAgICB2YXIgdmlkZW8gPSB3dHUubWFr
ZVZpZGVvKHRlc3Quc3JjKTsKKyAgICAgIGlmKCF2aWRlby5jYW5QbGF5VHlwZSh0ZXN0LnZpZGVv
VHlwZSkucmVwbGFjZSgvbm8vLCAnJykpIHsKKyAgICAgICAgZGVidWcodGVzdC52aWRlb1R5cGUg
KyAiIHVuc3VwcG9ydGVkIik7CisgICAgICAgIHNldFRpbWVvdXQocnVuTmV4dFRlc3QsIDApOwor
ICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICB3dHUuc3RhcnRQbGF5aW5nQW5kV2FpdEZv
clZpZGVvKHZpZGVvLCBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFZpZGVvKHRlc3QsIHZpZGVv
KTsKKyAgICAgICAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7CisgICAgICB9KTsKKyAgICB9
IGVsc2UgaWYgKHRlc3QudHlwZSA9PSAiSW1hZ2VEYXRhIikgeworICAgICAgZGVidWcoIkltYWdl
RGF0YSIpOworICAgICAgdGVzdEltYWdlRGF0YSh0ZXN0KTsKKyAgICAgIHNldFRpbWVvdXQocnVu
TmV4dFRlc3QsIDApOworICAgIH0gZWxzZSBpZiAodGVzdC50eXBlID09ICJjYW52YXMiKSB7Cisg
ICAgICBkZWJ1ZygiSFRNTENhbnZhc0VsZW1lbnQiKTsKKyAgICAgIHRlc3RDYW52YXModGVzdCk7
CisgICAgICBzZXRUaW1lb3V0KHJ1bk5leHRUZXN0LCAwKTsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgZmluaXNoVGVzdCgpOworICB9Cit9OworCitydW5OZXh0VGVzdCgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS12aWRl
by10cmFuc3BhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLXZpZGVvLXRyYW5zcGFy
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNjOTAyZjEwZDNlMTZhZWFjMzM1ZmFkYWNhMGRjMTExYTRm
NDE5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS12aWRlby10cmFu
c3BhcmVudC5odG1sCkBAIC0wLDAgKzEsMTQxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VXBsb2FkIHRleHR1cmUgZnJvbSBhbmltYXRpbmcg
dHJhbnNwYXJlbnQgV2ViTTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
Citjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2xldCBnbDsKK2xldCBzdWNjZXNzZnVsbHlQ
YXJzZWQ7CitsZXQgdmlkZW87CisKK2luaXRUZXN0aW5nSGFybmVzcygpOworCitmdW5jdGlvbiBp
bml0KCkKK3sKKyAgICBkZXNjcmlwdGlvbigiVXBsb2FkIHRleHR1cmUgZnJvbSBhbmltYXRpbmcg
dHJhbnNwYXJlbnQgV2ViTSIpOworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImV4YW1wbGUiKTsKKyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
KTsKKworICAgIGNvbnN0IHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworICAg
IGNvbnN0IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgLy8gQmluZCB0aGUgdGV4
dHVyZSB0byB0ZXh0dXJlIHVuaXQgMAorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmUpOworICAgIGNvbnN0IHRleHR1cmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInRleCIpOworICAgIGdsLnVuaWZvcm0xaSh0ZXh0dXJlTG9jLCAwKTsKKworICAg
IGdsLmVuYWJsZShnbC5CTEVORCk7CisgICAgZ2wuYmxlbmRGdW5jKGdsLlNSQ19BTFBIQSwgZ2wu
T05FX01JTlVTX1NSQ19BTFBIQSk7CisKKyAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ2aWQiKTsKKyAgICBjb25zdCB0eXBlID0gJ3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4Iic7
CisgICAgaWYgKCF2aWRlby5jYW5QbGF5VHlwZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJ2aWRl
by5jYW5QbGF5VHlwZSByZXF1aXJlZCBtZXRob2QgbWlzc2luZyIpOworICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2aWRlby5jYW5QbGF5VHlw
ZSh0eXBlKS5yZXBsYWNlKC9uby8sICcnKSkgeworICAgICAgICBkZWJ1ZyhpbmZvLnR5cGUgKyAi
IHVuc3VwcG9ydGVkIik7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH07CisgICAgd3R1LnN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRlbywgcnVuVGVz
dCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodmlkZW9FbGVtZW50KQoreworICAgIGxldCBpID0g
MDsKKyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gZnJhbWUoKSB7CisgICAgICAg
IHJ1bk9uZUl0ZXJhdGlvbih2aWRlb0VsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAgcnVuT25lSXRl
cmF0aW9uKHZpZGVvRWxlbWVudCwgdHJ1ZSk7CisKKyAgICAgICAgKytpOworICAgICAgICBpZiAo
aSA8IDEyMCkgeworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICB9CisgICAgfSk7CisKK30KKworZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uKHZp
ZGVvRWxlbWVudCwgdXNlVGV4U3ViSW1hZ2UyRCkKK3sKKyAgICAvLyBVcGxvYWQgdGhlIHZpZGVv
RWxlbWVudCBpbnRvIHRoZSB0ZXh0dXJlCisgICAgaWYgKHVzZVRleFN1YkltYWdlMkQpIHsKKyAg
ICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCB2aWRlb0VsZW1lbnQpOworICAgICAgICBnbC50ZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHZpZGVv
RWxlbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlb0VsZW1lbnQp
OworICAgIH0KKworICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFS
KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKwor
ICAgIC8vIERyYXcgdGhlIHRyaWFuZ2xlcworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCwgWzI1NSwgMCwgMCwgMjU1XSk7CisKKyAgICBjb25zdCB0b2xlcmFuY2UgPSA1OworICAgIGNv
bnN0IHJlZCA9IFsyNTUsIDAsIDBdOworICAgIGNvbnN0IGdyZWVuID0gWzAsIDI1NSwgMF07Cisg
ICAgY29uc3QgYmx1ZSA9IFswLCAwLCAyNTVdOworCisgICAgLy8gQ2hlY2sgdGhlIGxlZnQgYW5k
IHJpZ2h0IHNpZGVzLiBNYWtlIHN1cmUgdGhhdCBFSVRIRVI6CisKKyAgICAvLyAtIExlZnQgaXMg
Z3JlZW4gYW5kIHJpZ2h0IGlzIHRyYW5zcGFyZW50LWJsZW5kZWQtd2l0aC1yZWQKKyAgICBsZXQg
bGVmdElzR3JlZW4gPSBmYWxzZSwgbGVmdElzUmVkID0gZmFsc2UsIHJpZ2h0SXNCbHVlID0gZmFs
c2UsIHJpZ2h0SXNSZWQgPSBmYWxzZTsKKyAgICBsZXQgZ3JlZW5SZWRFcnJvciA9ICIiLCByZWRC
bHVlRXJyb3IgPSAiIjsKKyAgICBsZXQgbGVmdEdyZWVuRXJyb3IgPSAiIiwgcmlnaHRCbHVlRXJy
b3IgPSAiIjsKKyAgICBsZXQgYnVmTGVmdCwgYnVmUmlnaHQ7CisgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdENvbG9yKGdsLCA0LCA0LCA4LCAyNCwgZ3JlZW4sIHRvbGVyYW5jZSwKKyAgICAgICAgLyog
c2FtZUZuICovICgpID0+IHsgbGVmdElzR3JlZW4gPSB0cnVlOyB9LCAvKiBkaWZmZXJlbnRGbiAq
LyAobSwgYikgPT4geyBsZWZ0R3JlZW5FcnJvciA9IG07IGJ1ZkxlZnQgPSBiO30sIGRlYnVnKTsK
KyAgICB3dHUuY2hlY2tDYW52YXNSZWN0Q29sb3IoZ2wsIDIwLCA0LCA4LCAyNCwgcmVkLCB0b2xl
cmFuY2UsCisgICAgICAgIC8qIHNhbWVGbiAqLyAoKSA9PiB7IHJpZ2h0SXNSZWQgPSB0cnVlOyB9
LCAvKiBkaWZmZXJlbnRGbiAqLyAobSwgYikgPT4geyBncmVlblJlZEVycm9yID0gbTsgYnVmUmln
aHQgPSBiO30sIGRlYnVnKTsKKworICAgIC8vIC0gUmlnaHQgaXMgYmx1ZSBhbmQgbGVmdCBpcyB0
cmFuc3BhcmVudC1ibGVuZGVkLXdpdGgtcmVkCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdENvbG9y
KGdsLCAyMCwgNCwgOCwgMjQsIGJsdWUsIHRvbGVyYW5jZSwKKyAgICAgICAgLyogc2FtZUZuICov
ICgpID0+IHsgcmlnaHRJc0JsdWUgPSB0cnVlOyB9LCAvKiBkaWZmZXJlbnRGbiAqLyAobSwgYikg
PT4geyByaWdodEJsdWVFcnJvciA9IG07IGJ1ZlJpZ2h0ID0gYjt9LCBkZWJ1Zyk7CisgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdENvbG9yKGdsLCA0LCA0LCA4LCAyNCwgcmVkLCB0b2xlcmFuY2UsCisg
ICAgICAgIC8qIHNhbWVGbiAqLyAoKSA9PiB7IGxlZnRJc1JlZCA9IHRydWU7IH0sIC8qIGRpZmZl
cmVudEZuICovIChtLCBiKSA9PiB7IHJlZEJsdWVFcnJvciA9IG07IGJ1ZkxlZnQgPSBiO30sIGRl
YnVnKTsKKworICAgIGlmIChsZWZ0SXNHcmVlbikgeworICAgICAgICBpZiAocmlnaHRJc1JlZCkg
eworICAgICAgICAgICAgdGVzdFBhc3NlZCgibGVmdCBpcyBncmVlbiwgcmlnaHQgaXMgdHJhbnNw
YXJlbnQtYmxlbmRlZC13aXRoLXJlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgibGVmdCBpcyBncmVlbiwgYnV0OiAiICsgZ3JlZW5SZWRFcnJvciArICJcbiIg
KyBidWZSaWdodCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJpZ2h0SXNCbHVlKSB7Cisg
ICAgICAgIGlmIChsZWZ0SXNSZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoInJpZ2h0IGlz
IGJsdWUsIGxlZnQgaXMgdHJhbnNwYXJlbnQtYmxlbmRlZC13aXRoLXJlZCIpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgicmlnaHQgaXMgYmx1ZSwgYnV0OiAiICsg
cmVkQmx1ZUVycm9yICsgIlxuIiArIGJ1ZkxlZnQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgibmVpdGhlciBsZWZ0IGlzIGdyZWVuIG5vciByaWdodCBpcyBi
bHVlIFxuIiArIGxlZnRHcmVlbkVycm9yICsgIlxuIiArIHJpZ2h0Qmx1ZUVycm9yICsgIlxuIiAr
IGJ1ZkxlZnQgKyAiXG4iICsgYnVmUmlnaHQpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHZpZGVvIGlkPSJ2aWQiIHN0eWxlPSJkaXNwbGF5Om5v
bmU7Ij4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90cmFuc3BhcmVudC0yZnJh
bWVzLndlYm0iIHR5cGU9J3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4IicgLz4KKzwvdmlkZW8+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUtd2l0aC1m
bGlwLXktYW5kLXByZW11bHRpcGx5LWFscGhhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleHR1cmUt
d2l0aC1mbGlwLXktYW5kLXByZW11bHRpcGx5LWFscGhhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYwODBm
MGVlYTliYjJkNmE0MWFkOWQ5MDgwMWZjZmUyYTcxYmQyNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL21pc2MvdGV4dHVyZS13aXRoLWZsaXAteS1hbmQtcHJlbXVsdGlwbHktYWxwaGEuaHRt
bApAQCAtMCwwICsxLDcyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIHVwbG9hZCB3aXRoIEZsaXBZIGFuZCBQcmVt
dWx0aXBseUFscGhhLjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhl
aWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBj
cmJ1Zy5jb20vNzY1NDY5CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHVwbG9h
ZGluZyB0ZXh0dXJlcyB3aXRoIEZsaXBZIGFuZCBQcmVtdWx0aXBseUFscGhhIGdlbmVyYXRlcyBJ
TlZBTElEX09QRVJBVElPTiB3aXRoIGludmFsaWQgZm9ybWF0L3R5cGUiKTsKKwordmFyIGNhbnZh
czsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImV4YW1wbGUiKTsKKwordmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKK2Z1bmN0aW9uIHRlc3RVcGxvYWQoKSB7Cisg
IC8vIEJlY2F1c2UgV0VCR0xfZGVwdGhfdGV4dHVyZSBpcyBlbmFibGVkLCBVTlNJR05FRF9TSE9S
VCBiZWNvbWVzIGEgdmFsaWQgdHlwZSwgYnV0IFJHQkEvVU5TSUdORURfU0hPUlQgaXMgaW52YWxp
ZC4KKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9TSE9SVCwgbmV3IFVpbnQxNkFycmF5KDIqMio0KSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4SW1hZ2UyRCgp
IHdpdGggaW52YWxpZCBmb3JtYXQvdHlwZSBjb21iaW5hdGlvbiIpOworfQorCit2YXIgZXh0ID0g
Z2wuZ2V0RXh0ZW5zaW9uKCdXRUJHTF9kZXB0aF90ZXh0dXJlJyk7CitpZiAoZXh0KSB7CisgIGRl
YnVnKCIiKTsKKyAgZGVidWcoIlRlc3Rpbmcgd2l0aCBGbGlwWSA9IGZhbHNlLCBQcmVtdWx0aXBs
eUFscGhhID0gZmFsc2UiKTsKKyAgdGVzdFVwbG9hZCgpOworCisgIGRlYnVnKCIiKTsKKyAgZGVi
dWcoIlRlc3Rpbmcgd2l0aCBGbGlwWSA9IHRydWUsIFByZW11bHRpcGx5QWxwaGEgPSBmYWxzZSIp
OworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCAxKTsKKyAgZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCAwKTsKKyAgdGVzdFVw
bG9hZCgpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRlc3Rpbmcgd2l0aCBGbGlwWSA9IGZh
bHNlLCBQcmVtdWx0aXBseUFscGhhID0gdHJ1ZSIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfRkxJUF9ZX1dFQkdMLCAwKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJ
UExZX0FMUEhBX1dFQkdMLCAxKTsKKyAgdGVzdFVwbG9hZCgpOworCisgIGRlYnVnKCIiKTsKKyAg
ZGVidWcoIlRlc3Rpbmcgd2l0aCBGbGlwWSA9IHRydWUsIFByZW11bHRpcGx5QWxwaGEgPSB0cnVl
Iik7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIDEpOworICBnbC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIDEpOworICB0ZXN0
VXBsb2FkKCk7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXRUJHTF9kZXB0aF90ZXh0dXJlIG5v
dCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3RzLiIpOworfQorCitnbC5kZWxldGVUZXh0dXJlKHRl
eCk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdXBsb2FkLWZyb20t
c3Jjc2V0LXdpdGgtZW1wdHktZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy91cGxvYWQtZnJvbS1z
cmNzZXQtd2l0aC1lbXB0eS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5OWUzMTMzNDJhYTBiMWJk
MzUyZThjYWFmNTA3ZDg1MDY0MmZlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dXBsb2FkLWZyb20tc3Jjc2V0LXdpdGgtZW1wdHktZGF0YS5odG1sCkBAIC0wLDAgKzEsNDQgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAyMCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzx0aXRsZT5VcGxvYWQgRnJvbSBTcmNzZXQgV2l0aCBFbXB0eSBEYXRhPC90aXRsZT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGltZyBzcmNzZXQ9ImRhdGE6LGEgMXgsIGRhdGE6LGIgMXciIGlkPSJpIj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQ7CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJH
TCBpbXBsZW1lbnRhdGlvbnMgaGFuZGxlIHNyY3NldHMgd2l0aCBlbXB0eSBkYXRhLiIpOworZGVi
dWcoIlJlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0naHR0cDovL2NyYnVnLmNvbS8xMDg1MDQ0
Jz5odHRwOi8vY3JidWcuY29tLzEwODUwNDQ8L2E+Iik7CisKK2xldCBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoKTsKKworLy8gTm90ZSB3ZSBydW4gdGhpcyB0ZXN0IHN5bmNocm9ub3VzbHksIHJh
dGhlciB0aGFuIHJ1bm5pbmcgaXQgaW4gYW4gYXN5bmMKKy8vIGZ1bmN0aW9uIGNhbGxlZCBhZnRl
ciAid3R1LmF3YWl0T3JUaW1lb3V0KGltZy5kZWNvZGUoKSk7Ii4gVGhpcyByZXByb2R1Y2VzCisv
LyB0aGUgYnVnIG1vcmUgcmVsaWFibHkuCitsZXQgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImkiKTsKK2xldCB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXgpOworLy8gSW1wbGVtZW50YXRpb25zIGNhbiBkZWNpZGUgaG93IHRv
IHJlc3BvbmQgdG8gdGhlc2Uga2luZHMgb2YgYmFkCisvLyBpbnB1dHMsIGFzIGxvbmcgYXMgdGhl
eSBkb24ndCBjcmFzaC4KK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1nKTsKKworZmluaXNoVGVzdCgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3ZpZGVvLXJv
dGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3ZpZGVvLXJvdGF0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzIyYzI3OGY0ODkyZDRkMzRkMjZkMzhiNjk3M2E3MmFmZjdkZDA1ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL21pc2MvdmlkZW8tcm90YXRpb24uaHRtbApAQCAtMCwwICsxLDE0MCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorCis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPHRpdGxlPlZlcmlmaWVzIHJvdGF0aW9uIG1ldGFkYXRhIHRhZyBpcyByZXNwZWN0ZWQgd2hl
biB1cGxvYWRpbmcgdmlkZW9zIHRvIFdlYkdMIHRleHR1cmVzLjwvdGl0bGU+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIC8+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2Fk
PSJydW4oKSI+CisgICAgPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPjwv
Y2FudmFzPgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICAidXNlIHN0cmljdCI7CisgICAg
ICAgIGRlc2NyaXB0aW9uKCk7CisgICAgICAgIGxldCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAg
ICAgICAgbGV0IHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgICAgIGxldCBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYyIpOworICAgICAgICBsZXQgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcyk7CisgICAgICAgIGxldCBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRR
dWFkKGdsLCBnbC5SR0JBKTsKKyAgICAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi4uLy4uLy4u
L3Jlc291cmNlcy8iOworICAgICAgICBjb25zdCB0b2xlcmFuY2UgPSA1OworCisgICAgICAgIGNv
bnN0IGV4cGVjdGVkQ29sb3JzID0geworICAgICAgICAgICAgdG9wOiB7IGxvY2F0aW9uOiBbMC41
LCAwLjI1XSwgY29sb3I6IFsyNTUsIDAsIDBdIH0sCisgICAgICAgICAgICBsZWZ0OiB7IGxvY2F0
aW9uOiBbMC40LCAwLjVdLCBjb2xvcjogWzAsIDAsIDI1NV0gfSwKKyAgICAgICAgICAgIHJpZ2h0
OiB7IGxvY2F0aW9uOiBbMC42LCAwLjVdLCBjb2xvcjogWzI1NSwgMjU1LCAwXSB9LAorICAgICAg
ICAgICAgYm90dG9tOiB7IGxvY2F0aW9uOiBbMC41LCAwLjc1XSwgY29sb3I6IFswLCAyNTUsIDBd
IH0sCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvdXRwdXQoc3RyKSB7CisgICAgICAg
ICAgICBkZWJ1ZyhzdHIpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoc3RyKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrUGl4ZWxzKCkgeworICAgICAgICAg
ICAgZm9yIChsZXQgcGxhY2UgaW4gZXhwZWN0ZWRDb2xvcnMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgY29sb3IgPSBleHBlY3RlZENvbG9yc1twbGFjZV07CisgICAgICAgICAgICAgICAgbGV0IGxv
YyA9IGNvbG9yLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIGxldCB4ID0gbG9jWzBdOworICAg
ICAgICAgICAgICAgIGxldCB5ID0gbG9jWzFdOworICAgICAgICAgICAgICAgIG91dHB1dCgiICBD
aGVja2luZyAiICsgcGxhY2UpOworICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIE1hdGguZmxvb3IoY2FudmFzLndpZHRoICogeCksIE1hdGguZmxvb3IoY2FudmFzLmhlaWdo
dCAqIHkpLCAxLCAxLAorICAgICAgICAgICAgICAgICAgICBjb2xvci5jb2xvciwgInNob3VsZEJl
ICIgKyBjb2xvci5jb2xvciArICIgKy8tIiArIHRvbGVyYW5jZSwgdG9sZXJhbmNlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRWaWRlb0VsZW1lbnQo
ZmlsZW5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
eworICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dmlkZW8nKTsKKyAgICAgICAgICAgICAgICB2aWRlby5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMn
OworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IHJlc291cmNlUGF0aCArIGZpbGVuYW1lOwor
ICAgICAgICAgICAgICAgIHd0dS5zdGFydFBsYXlpbmdBbmRXYWl0Rm9yVmlkZW8odmlkZW8sIHJl
c29sdmUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBmdW5j
dGlvbiB0ZXN0VmlkZW9FbGVtZW50KGZpbGVuYW1lKSB7CisgICAgICAgICAgICBjb25zdCB2aWRl
byA9IGF3YWl0IGxvYWRWaWRlb0VsZW1lbnQoZmlsZW5hbWUpOworCisgICAgICAgICAgICBvdXRw
dXQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIG91dHB1dCgiVGVzdGluZyAiICsgZmlsZW5hbWUg
KyAiIHZpYSBIVE1MVmlkZW9FbGVtZW50Iik7CisKKyAgICAgICAgICAgIG91dHB1dCgiICBUZXN0
aW5nIHRleEltYWdlMkQiKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdmlkZW8pOworICAgICAg
ICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgICAg
ICAgICAgICBjaGVja1BpeGVscygpOworCisgICAgICAgICAgICBvdXRwdXQoIiAgVGVzdGluZyB0
ZXhTdWJJbWFnZTJEIik7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIHZpZGVvLnZpZGVvV2lkdGgsIHZpZGVvLnZpZGVvSGVpZ2h0LCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLnRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdmlk
ZW8pOworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwg
MjU1XSk7CisgICAgICAgICAgICBjaGVja1BpeGVscygpOworICAgICAgICB9CisKKyAgICAgICAg
YXN5bmMgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICAgICAgY29uc3QgdmlkZW8gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd2aWRlbycpOworICAgICAgICAgICAgaWYgKCF2aWRlby5jYW5QbGF5
VHlwZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInZpZGVvLmNhblBsYXlUeXBlIHJl
cXVpcmVkIG1ldGhvZCBtaXNzaW5nIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBjb25zdCB0eXBlID0gJ3ZpZGVvL21wNDsgY29kZWNzPSJh
dmMxLjQyRTAxRSwgbXA0YS40MC4yIic7CisgICAgICAgICAgICBpZiAoIXZpZGVvLmNhblBsYXlU
eXBlKHR5cGUpLnJlcGxhY2UoL25vLywgJycpKSB7CisgICAgICAgICAgICAgICAgZGVidWcodHlw
ZSArICIgdW5zdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICAgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0aGUgZGVmYXVsdCB0ZXh0dXJlIHVuaXQgMAor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAg
ICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAg
ICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwg
Z2wuQ0xBTVBfVE9fRURHRSk7CisKKyAgICAgICAgICAgIC8vIFRoZXNlIGZpbGVzIHdlcmUgY3Jl
YXRlZCBieSBjb252ZXJ0aW5nIGV4aWYtb3JpZW50YXRpb24tdGVzdC0xLW5vcm1hbC5qcGcgdG8g
bXA0CisgICAgICAgICAgICAvLyBmaWxlcywgcm90YXRpbmcgdGhlbSB1c2luZyB0aGUgdHJhbnNw
b3NlIGZpbHRlciwgYW5kIGFkZGluZyByb3RhdGUgbWV0YWRhdGEsIGFsbAorICAgICAgICAgICAg
Ly8gdXNpbmcgdGhlIGZmbXBlZyBjb21tYW5kLWxpbmUgdG9vbC4KKyAgICAgICAgICAgIC8vIDA6
CisgICAgICAgICAgICAvLyBmZm1wZWcgLW5vYXV0b3JvdGF0ZSAtaSBzZGsvdGVzdHMvcmVzb3Vy
Y2VzL2V4aWYtb3JpZW50YXRpb24tdGVzdC0xLW5vcm1hbC5qcGcgLXBpeF9mbXQgeXV2NDIwcCB0
ZW1wLm1wNCAmJgorICAgICAgICAgICAgLy8gZmZtcGVnIC1pIHRlbXAubXA0IC1jIGNvcHkgLW1l
dGFkYXRhOnM6djowIHJvdGF0ZT0wIHNkay90ZXN0cy9yZXNvdXJjZXMvdmlkZW8tcm90YXRpb24t
MC5tcAorICAgICAgICAgICAgLy8gOTA6CisgICAgICAgICAgICAvLyBmZm1wZWcgLW5vYXV0b3Jv
dGF0ZSAtaSBzZGsvdGVzdHMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24tdGVzdC0xLW5vcm1h
bC5qcGcgLXZmICJ0cmFuc3Bvc2U9MiIgLXBpeF9mbXQgeXV2NDIwcCB0ZW1wLm1wNCAmJgorICAg
ICAgICAgICAgLy8gZmZtcGVnIC1pIHRlbXAubXA0IC1jIGNvcHkgLW1ldGFkYXRhOnM6djowIHJv
dGF0ZT0yNzAgc2RrL3Rlc3RzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi05MC5tcDQKKyAgICAg
ICAgICAgIC8vIDE4MDoKKyAgICAgICAgICAgIC8vIGZmbXBlZyAtbm9hdXRvcm90YXRlIC1pIHNk
ay90ZXN0cy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyAtdmYg
InRyYW5zcG9zZT0yLHRyYW5zcG9zZT0yIiAtcGl4X2ZtdCB5dXY0MjBwIHRlbXAubXA0ICYmCisg
ICAgICAgICAgICAvLyBmZm1wZWcgLWkgdGVtcC5tcDQgLWMgY29weSAtbWV0YWRhdGE6czp2OjAg
cm90YXRlPTE4MCBzZGsvdGVzdHMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTE4MC5tcDQKKyAg
ICAgICAgICAgIC8vIDI3MDoKKyAgICAgICAgICAgIC8vIGZmbXBlZyAtbm9hdXRvcm90YXRlIC1p
IHNkay90ZXN0cy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyAt
dmYgInRyYW5zcG9zZT0xIiAtcGl4X2ZtdCB5dXY0MjBwIHRlbXAubXA0ICYmCisgICAgICAgICAg
ICAvLyBmZm1wZWcgLWkgdGVtcC5tcDQgLWMgY29weSAtbWV0YWRhdGE6czp2OjAgcm90YXRlPTkw
IHNkay90ZXN0cy9yZXNvdXJjZXMvdmlkZW8tcm90YXRpb24tMjcwLm1wNAorICAgICAgICAgICAg
Y29uc3QgZmlsZW5hbWVzID0gWworICAgICAgICAgICAgICAgICJ2aWRlby1yb3RhdGlvbi0wLm1w
NCIsCisgICAgICAgICAgICAgICAgInZpZGVvLXJvdGF0aW9uLTkwLm1wNCIsCisgICAgICAgICAg
ICAgICAgInZpZGVvLXJvdGF0aW9uLTE4MC5tcDQiLAorICAgICAgICAgICAgICAgICJ2aWRlby1y
b3RhdGlvbi0yNzAubXA0IiwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGZvciAobGV0
IGZuIG9mIGZpbGVuYW1lcykgeworICAgICAgICAgICAgICAgIGF3YWl0IHRlc3RWaWRlb0VsZW1l
bnQoZm4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4KKworPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtYWxwaGEtYWxwaGEtdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25l
ZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ5ZTA4MDhhYzAyMDk4Zjk4MGU1NGRkZmQzNmYwYzc5
ZTVmNjE1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtYWxw
aGEtYWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmct
aW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiQUxQSEEiLCAiQUxQSEEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLWx1bWluYW5jZS1sdW1p
bmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1sdW1p
bmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmRkMzExYmRl
Nzg4NjkwNzY0ZDVkZWM4NjAzOTliMWEyODBiNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvc3ZnX2ltYWdlL3RleC0yZC1sdW1pbmFuY2UtbHVtaW5hbmNlLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlOQU5DRSIsICJM
VU1JTkFOQ0UiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEt
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1sdW1pbmFuY2Vf
YWxwaGEtbHVtaW5hbmNlX2FscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Fj
ZTg4NmZlOTQzODQ2ODNlMGQ1YzZhZTU0M2IzOTA3MDZmYjY2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1sdW1pbmFuY2VfYWxwaGEtbHVtaW5hbmNlX2FscGhh
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIkxVTUlOQU5DRV9BTFBIQSIsICJMVU1JTkFOQ0VfQUxQSEEiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJn
Yi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2It
cmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGIzN2M4NDIyZWNhZGIwNTU1NjNm
NGYzZWQ0NDBmMWY5ZGRlMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdl
L3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQiIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYi1yZ2ItdW5z
aWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiLXJn
Yi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkODdmZDIwNTNjMDRkZGI0
Y2E1MjJlMjAyNTJmNjQ2MmIzNDZlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQiIsICJSR0IiLCAiVU5TSUdORURfU0hP
UlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdl
L3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvc3ZnX2ltYWdl
L3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OTU1Yzg5
MWQ1ZTY3YzM2ODU4YmJhMzNhYTQwMzYzNTIwN2M3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9z
dmdfaW1hZ2UvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjk0OTEyMzJjYjRjOGNiODE3MWU5OTk2MDhmYzRlY2E5ZGJiMjliNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVk
X3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYS1yZ2JhLXVuc2ln
bmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYS1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWUwMDBlNDI2OWE5
M2FjZjY2NzExYzUwZjU5NmQxNzQ1MmUzZjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
c3ZnX2ltYWdlL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIlVO
U0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdmlkZW8vdGV4LTJkLWFscGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVz
L3ZpZGVvL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzJmMWM3MmU3ZTg0MzIzMDRjYWU3MGM5ODViN2VlMTk5Y2U5ZDQ3MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkFMUEhBIiwgIkFMUEhBIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8v
dGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
dmlkZW8vdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5ODVmMzg3NWQxNmUzMmM2YjE0ZmVmZjA1MGMzYzcwZjljYTNjMzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNp
Z25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIkxVTUlO
QU5DRSIsICJMVU1JTkFOQ0UiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9h
bHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtbHVtaW5hbmNl
X2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM2
ZTI2MzQ3NGJjODcxZTU3OGEzZjVlYzMxY2JkMmI5OTc1ZTcwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL3ZpZGVvL3RleC0yZC1sdW1pbmFuY2VfYWxwaGEtbHVtaW5hbmNlX2FscGhhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiTFVN
SU5BTkNFX0FMUEhBIiwgIkxVTUlOQU5DRV9BTFBIQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2ItcmdiLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZWFmMjA2NWQ1ZThmNmJjNzcwMzhkZDdjNzZjMTUzOTI4OTEw
Yzk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0Ii
LCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTQ2NzU1OTllZTg1MmE4NWVlYTc4YzMyN2FkMzhjZDJmNGQxNjg0NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0
XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQiIsICJS
R0IiLCAiVU5TSUdORURfU0hPUlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy92aWRlby90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMDdkOTExZTFmNDI1ZTEwMWM4MGZmNzVmOGM1NzAxMGVmM2IwYTUxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3ZpZGVvL3Rl
eC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlk
ZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGYyN2ZkOTkzMjAyOTAyNTZhZDU1YTUzNzQ2YThhNjY2ODI0NDgxYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80
XzRfNC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJH
QkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81
XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMzVhN2IzNTUzMWE0NGZiMDdlMzdiMzQxNDFhMjZiMjQx
ZTVjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlk
ZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCQSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1hbHBoYS1h
bHBoYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLWFs
cGhhLWFscGhhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODcwZWJhYmE3Y2M5ZDNj
NWZkODlmZjUxZThjNTQ1ZDhjNDM5NzNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0yZC1hbHBoYS1hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJBTFBIQSIsICJBTFBIQSIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2Nh
bnZhcy90ZXgtMmQtbHVtaW5hbmNlLWx1bWluYW5jZS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLWx1bWluYW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjljNTUxZDAyMzJlZjlhZDYyYjgwZTIxYWVmNjE0MzM2ZDU4YjJh
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLWx1bWlu
YW5jZS1sdW1pbmFuY2UtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiTFVNSU5BTkNFIiwgIkxVTUlOQU5DRSIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90
ZXgtMmQtbHVtaW5hbmNlX2FscGhhLWx1bWluYW5jZV9hbHBoYS11bnNpZ25lZF9ieXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2Vf
YWxwaGEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNTIxNmNiODc1NDQzMDc2Zjk3
MmI0NWQ3ZmExN2FjNzJjMGY2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTJkLWx1bWluYW5jZV9hbHBoYS1sdW1pbmFuY2VfYWxwaGEtdW5zaWduZWRfYnl0
ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiTFVNSU5B
TkNFX0FMUEhBIiwgIkxVTUlOQU5DRV9BTFBIQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11
bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYi1yZ2It
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OWI1ZjFmZTU1NzFhYTlkMTVhZGFmZjAw
ZDAyNThiYjY2YzBkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMv
dGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJn
Yi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0y
ZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViMGYwOWZm
OTZhMzY5MjM2NGRkZmFlZjdjMDFlYTkwNGY4N2EwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCIiwgIlJHQiIs
ICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAxKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90
ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjA3MTFjNDZkYzgwZjA2MDIxMGRjMGQ1NTc4MzA0OGExNjVlMjU1YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQkEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDEpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3No
b3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWJmODNjZDAxOWJhYjli
NGNkMzA3YWMzNzlmZGUxNjFkYzY3ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQSIsICJSR0JBIiwg
IlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVf
MS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRf
c2hvcnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNDQ4MDA5ZWJlOTQwZjliMzBmMTg1NTA4
MTFhZmM1MTZmODVmMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMv
dGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBIiwgIlJHQkEiLCAiVU5TSUdORURf
U0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAxKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9h
cnJheS1idWZmZXItY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWJ1ZmZlci1jcmFzaC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU5MzQ4NzI3ZTE4NzhlMWQzYjQxZjVkM2NlNjM1Mjg5MTFhODk4ZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItY3Jhc2guaHRtbApA
QCAtMCwwICsxLDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworZGVz
Y3JpcHRpb24oJ1Rlc3QgQXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCcpOworCisvLyBUaGUgZm9sbG93
aW5nIHVzZWQgdG8gY2F1c2UgYSBjcmFzaCBpbiBDaHJvbWUuCisKKy8vIE5vdGUgdGhhdCBiZWNh
dXNlIHRoZSBhcmd1bWVudCB0byBBcnJheUJ1ZmZlcidzIGNvbnN0cnVjdG9yIGlzIG5vdAorLy8g
b3B0aW9uYWwsIGFuIGltcGxlbWVudGF0aW9uIG1pZ2h0IHRocm93IGFuIGV4Y2VwdGlvbiBvbiB0
aGUgZXhwcmVzc2lvbgorLy8gYmVsb3cgcmF0aGVyIHRoYW4gaW1wbGljaXRseSBwYXNzaW5nIHVu
ZGVmaW5lZC4gRWl0aGVyIHdheSBpcyBhY2NlcHRhYmxlCisvLyBmcm9tIHRoZSBwb2ludCBvZiB2
aWV3IG9mIHRoaXMgdGVzdCwgYnV0IGltcGxlbWVudGF0aW9ucyBtdXN0IG5vdCBjcmFzaC4KK3Ry
eSB7CisgIG5ldyBBcnJheUJ1ZmZlcigpLmJ5dGVMZW5ndGg7Cit9IGNhdGNoIChlKSB7Cit9CisK
K3Rlc3RQYXNzZWQoIm5ldyBBcnJheUJ1ZmZlcigpLmJ5dGVMZW5ndGggZGlkIG5vdCBjcmFzaCIp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1idWZmZXItdmlldy1jcmFzaC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWNi
ODEzOGM1NzlkM2UyODk2OThhYmNkMDIxZjhlYTEzN2M5ZGYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dHlwZWRhcnJheXMvYXJyYXktYnVmZmVyLXZpZXctY3Jhc2guaHRtbApAQCAtMCwwICsxLDQxIEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCdWZXJpZnkg
dGhhdCBjb25zdHJ1Y3RpbmcgYSB0eXBlZCBhcnJheSB2aWV3IHdpdGggbm8gYXJndW1lbnRzIGFu
ZCBmZXRjaGluZyBpdHMgbGVuZ3RoIGRvZXMgbm90IGNyYXNoJyk7CisKKworLy8gVGhlIGZvbGxv
d2luZyB1c2VkIHRvIGNhdXNlIGEgY3Jhc2ggaW4gYm90aCBTYWZhcmkgYW5kIENocm9tZS4KKwor
Ly8gTm90ZSB0aGF0IGJlY2F1c2UgdGhlIGFyZ3VtZW50IHRvIEFycmF5QnVmZmVyJ3MgY29uc3Ry
dWN0b3IgaXMgbm90CisvLyBvcHRpb25hbCwgYW4gaW1wbGVtZW50YXRpb24gbWlnaHQgdGhyb3cg
YW4gZXhjZXB0aW9uIG9uIHRoZSBleHByZXNzaW9uCisvLyBiZWxvdyByYXRoZXIgdGhhbiBpbXBs
aWNpdGx5IHBhc3NpbmcgdW5kZWZpbmVkLiBFaXRoZXIgd2F5IGlzIGFjY2VwdGFibGUKKy8vIGZy
b20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhpcyB0ZXN0LCBidXQgaW1wbGVtZW50YXRpb25zIG11
c3Qgbm90IGNyYXNoLgordHJ5IHsKKyAgbmV3IFVpbnQzMkFycmF5KCkubGVuZ3RoOworfSBjYXRj
aCAoZSkgeworfQorCit0ZXN0UGFzc2VkKCJuZXcgVWludDMyQXJyYXkoKS5sZW5ndGggZGlkIG5v
dCBjcmFzaCIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LWxhcmdlLWFycmF5LXRl
c3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1sYXJnZS1hcnJheS10ZXN0cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhhZjc2MTM2YWE1M2Y2OWU5YjQ4Yzg3MGQ4MDA2MTA4MjRkYjU3OWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS1sYXJnZS1hcnJheS10ZXN0cy5odG1sCkBAIC0w
LDAgKzEsMTAyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy90eXBlZC1hcnJheS10
ZXN0LWNhc2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyBhbGxvY2F0aW9uIG9mIGxhcmdlIGFy
cmF5IGJ1ZmZlcnMiKTsKKwordmFyIGN1cnJlbnRseVJ1bm5pbmcgPSAnJzsKK3ZhciBhbGxQYXNz
ZWQgPSB0cnVlOworZnVuY3Rpb24gcnVubmluZyhzdHIpIHsKKyAgY3VycmVudGx5UnVubmluZyA9
IHN0cjsKK30KKworZnVuY3Rpb24gb3V0cHV0KHN0cikgeworICBkZWJ1ZyhzdHIpOworfQorCitm
dW5jdGlvbiBwYXNzKCkgeworICB0ZXN0UGFzc2VkKGN1cnJlbnRseVJ1bm5pbmcpOworfQorCitm
dW5jdGlvbiBmYWlsKHN0cikgeworICBhbGxQYXNzZWQgPSBmYWxzZTsKKyAgdmFyIGV4YzsKKyAg
aWYgKHN0cikKKyAgICBleGMgPSBjdXJyZW50bHlSdW5uaW5nICsgJzogJyArIHN0cjsKKyAgZWxz
ZQorICAgIGV4YyA9IGN1cnJlbnRseVJ1bm5pbmc7CisgIHRlc3RGYWlsZWQoZXhjKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0RXEocHJlZml4LCBleHBlY3RlZCwgdmFsKSB7CisgIGlmIChleHBlY3Rl
ZCAhPSB2YWwpIHsKKyAgICB2YXIgc3RyID0gcHJlZml4ICsgJzogZXhwZWN0ZWQgJyArIGV4cGVj
dGVkICsgJywgZ290ICcgKyB2YWw7CisgICAgdGhyb3cgc3RyOworICB9Cit9CisKK2Z1bmN0aW9u
IGFzc2VydChwcmVmaXgsIGV4cGVjdGVkKSB7CisgIGlmICghZXhwZWN0ZWQpIHsKKyAgICB2YXIg
c3RyID0gcHJlZml4ICsgJzogZXhwZWN0ZWQgdmFsdWUgLyB0cnVlJzsKKyAgICB0aHJvdyBzdHI7
CisgIH0KK30KKworZnVuY3Rpb24gcHJpbnRTdW1tYXJ5KCkgeworICBpZiAoYWxsUGFzc2VkKSB7
CisgICAgZGVidWcoIlRlc3QgcGFzc2VkLiIpOworICB9IGVsc2UgeworICAgIGRlYnVnKCJURVNU
IEZBSUxFRCIpOworICB9Cit9CisKKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbk9mSHVnZUFy
cmF5KHR5cGUsIG5hbWUsIHN6KSB7CisgICAgaWYgKHN6ID09IDEpCisgICAgICAgIHJldHVybjsK
KyAgICB0cnkgeworICAgICAgICAvLyBDb25zdHJ1Y3Rpb24gb2YgaHVnZSBhcnJheXMgbXVzdCBm
YWlsIGJlY2F1c2UgYnl0ZUxlbmd0aCBpcworICAgICAgICAvLyBhbiB1bnNpZ25lZCBsb25nCisg
ICAgICAgIGFycmF5ID0gbmV3IHR5cGUoMzAwMDAwMDAwMCk7CisgICAgICAgIHRlc3RGYWlsZWQo
IkNvbnN0cnVjdGlvbiBvZiBodWdlICIgKyBuYW1lICsgIiBzaG91bGQgdGhyb3cgZXhjZXB0aW9u
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24g
b2YgaHVnZSAiICsgbmFtZSArICIgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5j
dGlvbiBydW5UZXN0cygpIHsKKyAgYWxsUGFzc2VkID0gdHJ1ZTsKKworICBmb3IgKHZhciBpID0g
MDsgaSA8IHRlc3RDYXNlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciB0ZXN0Q2FzZSA9IHRlc3RD
YXNlc1tpXTsKKyAgICBydW5uaW5nKHRlc3RDYXNlLm5hbWUpOworICAgIGlmICghKHRlc3RDYXNl
Lm5hbWUgaW4gd2luZG93KSkgeworICAgICAgICBmYWlsKCJkb2VzIG5vdCBleGlzdCIpOworICAg
ICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIHR5cGUgPSB3aW5kb3dbdGVzdENhc2UubmFt
ZV07CisgICAgdmFyIG5hbWUgPSB0ZXN0Q2FzZS5uYW1lOworICAgIHRlc3RDb25zdHJ1Y3Rpb25P
Zkh1Z2VBcnJheSh0eXBlLCBuYW1lLCB0ZXN0Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMpOworICB9
Cit9CisKK3J1blRlc3RzKCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS11bml0
LXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9hcnJheS11bml0LXRlc3RzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjJmMGU0NTJlZDA3MmMzMWUyOGRlMDhhYmIzYmJjYTMwNGRhYTZjYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3R5cGVkYXJyYXlzL2FycmF5LXVuaXQtdGVzdHMuaHRtbApAQCAtMCwwICsxLDExMDMg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvdGVzdC1ldmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy90ZXN0cy90eXBlZC1hcnJheS10ZXN0LWNhc2VzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9uKCJWZXJp
ZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgbmV3IGFycmF5LWxpa2Ugb2JqZWN0cyBpbiB0
aGUgVHlwZWRBcnJheSBzcGVjIik7CisKK3ZhciBjdXJyZW50bHlSdW5uaW5nID0gJyc7Cit2YXIg
YWxsUGFzc2VkID0gdHJ1ZTsKK2Z1bmN0aW9uIHJ1bm5pbmcoc3RyKSB7CisgIGN1cnJlbnRseVJ1
bm5pbmcgPSBzdHI7Cit9CisKK2Z1bmN0aW9uIG91dHB1dChzdHIpIHsKKyAgZGVidWcoc3RyKTsK
K30KKworZnVuY3Rpb24gcGFzcygpIHsKKyAgdGVzdFBhc3NlZChjdXJyZW50bHlSdW5uaW5nKTsK
K30KKworZnVuY3Rpb24gZmFpbChzdHIpIHsKKyAgYWxsUGFzc2VkID0gZmFsc2U7CisgIHZhciBl
eGM7CisgIGlmIChzdHIpCisgICAgZXhjID0gY3VycmVudGx5UnVubmluZyArICc6ICcgKyBzdHI7
CisgIGVsc2UKKyAgICBleGMgPSBjdXJyZW50bHlSdW5uaW5nOworICB0ZXN0RmFpbGVkKGV4Yyk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydEVxKHByZWZpeCwgZXhwZWN0ZWQsIHZhbCkgeworICBpZiAo
ZXhwZWN0ZWQgIT0gdmFsKSB7CisgICAgdmFyIHN0ciA9IHByZWZpeCArICc6IGV4cGVjdGVkICcg
KyBleHBlY3RlZCArICcsIGdvdCAnICsgdmFsOworICAgIHRocm93IHN0cjsKKyAgfQorfQorCitm
dW5jdGlvbiBhc3NlcnQocHJlZml4LCBleHBlY3RlZCkgeworICBpZiAoIWV4cGVjdGVkKSB7Cisg
ICAgdmFyIHN0ciA9IHByZWZpeCArICc6IGV4cGVjdGVkIHZhbHVlIC8gdHJ1ZSc7CisgICAgdGhy
b3cgc3RyOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3VtbWFyeSgpIHsKKyAgaWYgKGFsbFBh
c3NlZCkgeworICAgIGRlYnVnKCJUZXN0IHBhc3NlZC4iKTsKKyAgfSBlbHNlIHsKKyAgICBkZWJ1
ZygiVEVTVCBGQUlMRUQiKTsKKyAgfQorfQorCit2YXIgYnVmZmVyOwordmFyIGJ5dGVMZW5ndGg7
Cit2YXIgc3ViQnVmZmVyOwordmFyIHN1YkFycmF5OworZnVuY3Rpb24gdGVzdFNsaWNlKCkgewor
ICBmdW5jdGlvbiB0ZXN0KHN1YkJ1Ziwgc3RhcnRzLCBzaXplKSB7CisgICAgYnl0ZUxlbmd0aCA9
IHNpemU7CisgICAgc3ViQnVmZmVyID0gVGVzdEV2YWwoc3ViQnVmKTsKKyAgICBzdWJBcnJheSA9
IG5ldyBJbnQ4QXJyYXkoc3ViQnVmZmVyKTsKKyAgICBhc3NlcnRFcShzdWJCdWYsIHN1YkJ1ZmZl
ci5ieXRlTGVuZ3RoLCBieXRlTGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCBzdGFydHMgKyBpLCBzdWJBcnJh
eVtpXSk7CisgIH0KKworICB0cnkgeworICAgIHJ1bm5pbmcoJ3Rlc3RTbGljZScpOworICAgIGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigzMik7CisgICAgdmFyIGFycmF5ID0gbmV3IEludDhBcnJh
eShidWZmZXIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7ICsraSkKKyAgICAgIGFycmF5
W2ldID0gaTsKKworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgwKSIsIDAsIDMyKTsKKyAgICB0ZXN0
KCJidWZmZXIuc2xpY2UoMTYpIiwgMTYsIDE2KTsKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMjQp
IiwgMjQsIDgpOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgzMikiLCAzMiwgMCk7CisgICAgdGVz
dCgiYnVmZmVyLnNsaWNlKDQwKSIsIDMyLCAwKTsKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoODAp
IiwgMzIsIDApOworCisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC04KSIsIDI0LCA4KTsKKyAgICB0
ZXN0KCJidWZmZXIuc2xpY2UoLTE2KSIsIDE2LCAxNik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNl
KC0yNCkiLCA4LCAyNCk7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC0zMikiLCAwLCAzMik7Cisg
ICAgdGVzdCgiYnVmZmVyLnNsaWNlKC00MCkiLCAwLCAzMik7CisgICAgdGVzdCgiYnVmZmVyLnNs
aWNlKC04MCkiLCAwLCAzMik7CisKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMCwgMzIpIiwgMCwg
MzIpOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgwLCAxNikiLCAwLCAxNik7CisgICAgdGVzdCgi
YnVmZmVyLnNsaWNlKDgsIDI0KSIsIDgsIDE2KTsKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMTYs
IDMyKSIsIDE2LCAxNik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKDI0LCAxNikiLCAyNCwgMCk7
CisKKyAgICB0ZXN0KCJidWZmZXIuc2xpY2UoMTYsIC04KSIsIDE2LCA4KTsKKyAgICB0ZXN0KCJi
dWZmZXIuc2xpY2UoLTIwLCAzMCkiLCAxMiwgMTgpOworCisgICAgdGVzdCgiYnVmZmVyLnNsaWNl
KC04LCAtMjApIiwgMjQsIDApOworICAgIHRlc3QoImJ1ZmZlci5zbGljZSgtMjAsIC04KSIsIDEy
LCAxMik7CisgICAgdGVzdCgiYnVmZmVyLnNsaWNlKC00MCwgMTYpIiwgMCwgMTYpOworICAgIHRl
c3QoImJ1ZmZlci5zbGljZSgtNDAsIDQwKSIsIDAsIDMyKTsKKyAgICBwYXNzKCk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RBcnJheUJ1ZmZl
cklzVmlld01ldGhvZCgpIHsKKyAgZGVidWcoJ3Rlc3QgQXJyYXlCdWZmZXIuaXNWaWV3KCkgd2l0
aCB2YXJpb3VzIHZhbHVlcycpOworCisgIHRyeSB7CisgICAgaWYgKCFBcnJheUJ1ZmZlci5pc1Zp
ZXcpIHsKKyAgICAgIHRlc3RGYWlsZWQoJ0FycmF5QnVmZmVyLmlzVmlldygpIG1ldGhvZCBkb2Vz
IG5vdCBleGlzdCcpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKCdBcnJheUJ1ZmZl
ci5pc1ZpZXcoKSBtZXRob2QgZXhpc3RzJyk7CisKKyAgICAgIHNob3VsZEJlKCdBcnJheUJ1ZmZl
ci5pc1ZpZXcobmV3IEludDhBcnJheSgxKSknLCAndHJ1ZScpOworICAgICAgc2hvdWxkQmUoJ0Fy
cmF5QnVmZmVyLmlzVmlldyhuZXcgVWludDhBcnJheSgxKSknLCAndHJ1ZScpOworICAgICAgc2hv
dWxkQmUoJ0FycmF5QnVmZmVyLmlzVmlldyhuZXcgVWludDhDbGFtcGVkQXJyYXkoMSkpJywgJ3Ry
dWUnKTsKKyAgICAgIHNob3VsZEJlKCdBcnJheUJ1ZmZlci5pc1ZpZXcobmV3IEludDE2QXJyYXko
MSkpJywgJ3RydWUnKTsKKyAgICAgIHNob3VsZEJlKCdBcnJheUJ1ZmZlci5pc1ZpZXcobmV3IFVp
bnQxNkFycmF5KDEpKScsICd0cnVlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlCdWZmZXIuaXNW
aWV3KG5ldyBJbnQzMkFycmF5KDEpKScsICd0cnVlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlC
dWZmZXIuaXNWaWV3KG5ldyBVaW50MzJBcnJheSgxKSknLCAndHJ1ZScpOworICAgICAgc2hvdWxk
QmUoJ0FycmF5QnVmZmVyLmlzVmlldyhuZXcgRmxvYXQzMkFycmF5KDEpKScsICd0cnVlJyk7Cisg
ICAgICBzaG91bGRCZSgnQXJyYXlCdWZmZXIuaXNWaWV3KG5ldyBGbG9hdDY0QXJyYXkoMSkpJywg
J3RydWUnKTsKKyAgICAgIHNob3VsZEJlKCdBcnJheUJ1ZmZlci5pc1ZpZXcobmV3IERhdGFWaWV3
KG5ldyBBcnJheUJ1ZmZlcig4KSkpJywgJ3RydWUnKTsKKworICAgICAgc2hvdWxkQmUoJ0FycmF5
QnVmZmVyLmlzVmlldyh1bmRlZmluZWQpJywgJ2ZhbHNlJyk7CisgICAgICBzaG91bGRCZSgnQXJy
YXlCdWZmZXIuaXNWaWV3KG51bGwpJywgJ2ZhbHNlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlC
dWZmZXIuaXNWaWV3KHRydWUpJywgJ2ZhbHNlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlCdWZm
ZXIuaXNWaWV3KGZhbHNlKScsICdmYWxzZScpOworICAgICAgc2hvdWxkQmUoJ0FycmF5QnVmZmVy
LmlzVmlldygwKScsICdmYWxzZScpOworICAgICAgc2hvdWxkQmUoJ0FycmF5QnVmZmVyLmlzVmll
dygxKScsICdmYWxzZScpOworICAgICAgc2hvdWxkQmUoJ0FycmF5QnVmZmVyLmlzVmlldygxLjAp
JywgJ2ZhbHNlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlCdWZmZXIuaXNWaWV3KCJoZWxsbyIp
JywgJ2ZhbHNlJyk7CisgICAgICBzaG91bGRCZSgnQXJyYXlCdWZmZXIuaXNWaWV3KHt9KScsICdm
YWxzZScpOworICAgICAgc2hvdWxkQmUoJ0FycmF5QnVmZmVyLmlzVmlldyhmdW5jdGlvbigpIHt9
KScsICdmYWxzZScpOworICAgICAgc2hvdWxkQmUoJ0FycmF5QnVmZmVyLmlzVmlldyhuZXcgQXJy
YXkoMSkpJywgJ2ZhbHNlJyk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxl
ZCgnRXhjZXB0aW9uIHRocm93biB3aGlsZSB0ZXN0aW5nIEFycmF5QnVmZmVyLmlzVmlldyBtZXRo
b2Q6ICcgKyBlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0SW5oZXJpdGFuY2VIaWVyYXJjaHko
KSB7CisgIGRlYnVnKCd0ZXN0IGluaGVyaXRhbmNlIGhpZXJhcmNoeSBvZiB0eXBlZCBhcnJheSB2
aWV3cycpOworCisgIHRyeSB7CisgICAgdmFyIGZvbyA9IEFycmF5QnVmZmVyVmlldzsKKyAgICB0
ZXN0RmFpbGVkKCdBcnJheUJ1ZmZlclZpZXcgaXMgYSB0eXBlZGVmIGFuZCBzaG91bGQgbm90IGJl
IGRlZmluZWQnKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIHRlc3RQYXNzZWQoJ0FycmF5QnVmZmVy
VmlldyBpcyBhIHR5cGVkZWYgYW5kIHdhcyAoY29ycmVjdGx5KSBub3QgZGVmaW5lZCcpOworICB9
CisKKyAgLy8gVWludDhDbGFtcGVkQXJyYXkgaW5oZXJpdGVkIGZyb20gVWludDhBcnJheSBpbiBl
YXJsaWVyIHZlcnNpb25zCisgIC8vIG9mIHRoZSB0eXBlZCBhcnJheSBzcGVjaWZpY2F0aW9uLiBT
aW5jZSB0aGlzIGlzIG5vIGxvbmdlciB0aGUKKyAgLy8gY2FzZSwgYXNzZXJ0IHRoZSBuZXcgYmVo
YXZpb3IuCisgIHNob3VsZEJlKCduZXcgVWludDhDbGFtcGVkQXJyYXkoMSkgaW5zdGFuY2VvZiBV
aW50OEFycmF5JywgJ2ZhbHNlJyk7CisKKyAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihJbnQ4
QXJyYXkucHJvdG90eXBlKSA9PSBPYmplY3QucHJvdG90eXBlKSB7CisgICAgLy8gRVM1IGJlaGF2
aW9yLgorICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5LnByb3Rv
dHlwZSknLCAnT2JqZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJv
dG90eXBlT2YoVWludDhBcnJheS5wcm90b3R5cGUpJywgJ09iamVjdC5wcm90b3R5cGUnKTsKKyAg
ICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQ4Q2xhbXBlZEFycmF5LnByb3Rv
dHlwZSknLCAnT2JqZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJv
dG90eXBlT2YoSW50MTZBcnJheS5wcm90b3R5cGUpJywgJ09iamVjdC5wcm90b3R5cGUnKTsKKyAg
ICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQxNkFycmF5LnByb3RvdHlwZSkn
LCAnT2JqZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBl
T2YoSW50MzJBcnJheS5wcm90b3R5cGUpJywgJ09iamVjdC5wcm90b3R5cGUnKTsKKyAgICBzaG91
bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQzMkFycmF5LnByb3RvdHlwZSknLCAnT2Jq
ZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YoRmxv
YXQzMkFycmF5LnByb3RvdHlwZSknLCAnT2JqZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJl
KCdPYmplY3QuZ2V0UHJvdG90eXBlT2YoRmxvYXQ2NEFycmF5LnByb3RvdHlwZSknLCAnT2JqZWN0
LnByb3RvdHlwZScpOworICB9IGVsc2UgeworICAgIC8vIEFzIG9mIEVTNiwgdGhlIHByb3RvdHlw
ZXMgZm9yIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9ycyBwb2ludCB0byBhbiBpbnRyaW5zaWMgb2Jq
ZWN0IHdob3NlIGludGVybmFsCisgICAgLy8gcHJvdG90eXBlIGlzIE9iamVjdC5wcm90b3R5cGUu
IFJlbGV2YW50IHNwZWMgc2VjdGlvbiBpcyAyMi4yLjUuMjogVHlwZWRBcnJheS5wcm90b3R5cGUu
CisgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBl
T2YoSW50OEFycmF5LnByb3RvdHlwZSkpJywgJ09iamVjdC5wcm90b3R5cGUnKTsKKyAgICBzaG91
bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFy
cmF5LnByb3RvdHlwZSkpJywgJ09iamVjdC5wcm90b3R5cGUnKTsKKyAgICBzaG91bGRCZSgnT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OENsYW1wZWRBcnJh
eS5wcm90b3R5cGUpKScsICdPYmplY3QucHJvdG90eXBlJyk7CisgICAgc2hvdWxkQmUoJ09iamVj
dC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50MTZBcnJheS5wcm90b3R5
cGUpKScsICdPYmplY3QucHJvdG90eXBlJyk7CisgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90
b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoVWludDE2QXJyYXkucHJvdG90eXBlKSknLCAn
T2JqZWN0LnByb3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
T2JqZWN0LmdldFByb3RvdHlwZU9mKEludDMyQXJyYXkucHJvdG90eXBlKSknLCAnT2JqZWN0LnBy
b3RvdHlwZScpOworICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKFVpbnQzMkFycmF5LnByb3RvdHlwZSkpJywgJ09iamVjdC5wcm90b3R5cGUn
KTsKKyAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5
cGVPZihGbG9hdDMyQXJyYXkucHJvdG90eXBlKSknLCAnT2JqZWN0LnByb3RvdHlwZScpOworICAg
IHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKEZs
b2F0NjRBcnJheS5wcm90b3R5cGUpKScsICdPYmplY3QucHJvdG90eXBlJyk7CisgIH0KKworICBz
aG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKERhdGFWaWV3LnByb3RvdHlwZSknLCAnT2Jq
ZWN0LnByb3RvdHlwZScpOworfQorCisvLworLy8gVGVzdHMgZm9yIHVuc2lnbmVkIGFycmF5IHZh
cmlhbnRzCisvLworCitmdW5jdGlvbiB0ZXN0U2V0QW5kR2V0MTBUbzEodHlwZSwgbmFtZSkgewor
ICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBTZXRBbmRHZXQxMFRvMScpOworICB0cnkgewor
ICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKDEwKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyBpKyspIHsKKyAgICAgIGFycmF5W2ldID0gMTAgLSBpOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCAxMCAt
IGksIGFycmF5W2ldKTsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAg
ZmFpbChlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0V2l0aEFycmF5T2ZVbnNp
Z25lZFZhbHVlcyh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAnIENv
bnN0cnVjdFdpdGhBcnJheU9mVW5zaWduZWRWYWx1ZXMnKTsKKyAgdHJ5IHsKKyAgICB2YXIgYXJy
YXkgPSBuZXcgdHlwZShbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdKTsKKyAgICBhc3Nl
cnRFcSgnQXJyYXkgbGVuZ3RoJywgMTAsIGFycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICBhc3NlcnRFcSgnRWxlbWVudCAnICsgaSwgMTAgLSBp
LCBhcnJheVtpXSk7CisgICAgfQorICAgIHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZh
aWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdFdpdGhUeXBlZEFycmF5T2ZV
bnNpZ25lZFZhbHVlcyh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAn
IENvbnN0cnVjdFdpdGhUeXBlZEFycmF5T2ZVbnNpZ25lZFZhbHVlcycpOworICB0cnkgeworICAg
IHZhciB0bXAgPSBuZXcgdHlwZShbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdKTsKKyAg
ICB2YXIgYXJyYXkgPSBuZXcgdHlwZSh0bXApOworICAgIGFzc2VydEVxKCdBcnJheSBsZW5ndGgn
LCAxMCwgYXJyYXkubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsK
KyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCAxMCAtIGksIGFycmF5W2ldKTsKKyAgICB9
CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAgfQorfQorCisv
LworLy8gVGVzdHMgZm9yIHNpZ25lZCBhcnJheSB2YXJpYW50cworLy8KKworZnVuY3Rpb24gdGVz
dFNldEFuZEdldFBvczEwVG9OZWcxMCh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyAr
IG5hbWUgKyAnIFNldEFuZEdldFBvczEwVG9OZWcxMCcpOworICB0cnkgeworICAgIHZhciBhcnJh
eSA9IG5ldyB0eXBlKDIxKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIxOyBpKyspIHsKKyAg
ICAgIGFycmF5W2ldID0gMTAgLSBpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIx
OyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyBpLCAxMCAtIGksIGFycmF5W2ld
KTsKKyAgICB9CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAg
fQorfQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0V2l0aEFycmF5T2ZTaWduZWRWYWx1ZXModHlw
ZSwgbmFtZSkgeworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBDb25zdHJ1Y3RXaXRoQXJy
YXlPZlNpZ25lZFZhbHVlcycpOworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKFsx
MCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwg
LTcsIC04LCAtOSwgLTEwXSk7CisgICAgYXNzZXJ0RXEoJ0FycmF5IGxlbmd0aCcsIDIxLCBhcnJh
eS5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjE7IGkrKykgeworICAgICAgYXNz
ZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDEwIC0gaSwgYXJyYXlbaV0pOworICAgIH0KKyAgICBwYXNz
KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3RDb25zdHJ1Y3RXaXRoVHlwZWRBcnJheU9mU2lnbmVkVmFsdWVzKHR5cGUsIG5hbWUpIHsKKyAg
cnVubmluZygndGVzdCAnICsgbmFtZSArICcgQ29uc3RydWN0V2l0aFR5cGVkQXJyYXlPZlNpZ25l
ZFZhbHVlcycpOworICB0cnkgeworICAgIHZhciB0bXAgPSBuZXcgdHlwZShbMTAsIDksIDgsIDcs
IDYsIDUsIDQsIDMsIDIsIDEsIDAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTks
IC0xMF0pOworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKHRtcCk7CisgICAgYXNzZXJ0RXEoJ0Fy
cmF5IGxlbmd0aCcsIDIxLCBhcnJheS5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjE7IGkrKykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDEwIC0gaSwgYXJyYXlb
aV0pOworICAgIH0KKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOwor
ICB9Cit9CisKKy8vCisvLyBUZXN0IGNhc2VzIGZvciBpbnRlZ3JhbCB0eXBlcy4KKy8vIFNvbWUg
SmF2YVNjcmlwdCBlbmdpbmVzIG5lZWQgc2VwYXJhdGUgY29waWVzIG9mIHRoaXMgY29kZSBpbiBv
cmRlcgorLy8gdG8gZXhlcmNpc2UgYWxsIG9mIHRoZWlyIG9wdGltaXplZCBjb2RlIHBhdGhzLgor
Ly8KKworZnVuY3Rpb24gdGVzdEludGVncmFsQXJyYXlUcnVuY2F0aW9uQmVoYXZpb3IodHlwZSwg
bmFtZSwgdW5zaWduZWQpIHsKKyAgcnVubmluZygndGVzdCBpbnRlZ3JhbCBhcnJheSB0cnVuY2F0
aW9uIGJlaGF2aW9yIGZvciAnICsgbmFtZSk7CisKKyAgdmFyIHNvdXJjZURhdGE7CisgIHZhciBl
eHBlY3RlZFJlc3VsdHM7CisKKyAgaWYgKHVuc2lnbmVkKSB7CisgICAgc291cmNlRGF0YSA9IFsw
LjYsIDEwLjYsIDAuMiwgMTAuMiwgMTAuNSwgMTEuNV07CisgICAgaWYgKHR5cGUgPT09IFVpbnQ4
Q2xhbXBlZEFycmF5KSB7CisgICAgICBleHBlY3RlZFJlc3VsdHMgPSBbMSwgMTEsIDAsIDEwLCAx
MCwgMTJdOworICAgIH0gZWxzZSB7CisgICAgICBleHBlY3RlZFJlc3VsdHMgPSBbMCwgMTAsIDAs
IDEwLCAxMCwgMTFdOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBzb3VyY2VEYXRhID0gWzAuNiwg
MTAuNiwgLTAuNiwgLTEwLjZdOworICAgIGV4cGVjdGVkUmVzdWx0cyA9IFswLCAxMCwgMCwgLTEw
XTsKKyAgfQorCisgIHZhciBudW1JdGVyYXRpb25zID0gMTA7CisgIHZhciBhcnJheSA9IG5ldyB0
eXBlKG51bUl0ZXJhdGlvbnMpOworCisgIC8vIFRoZSBjb2RlIGJsb2NrIGluIGVhY2ggb2YgdGhl
IGNhc2Ugc3RhdGVtZW50cyBiZWxvdyBpcyBpZGVudGljYWwsIGJ1dCBzb21lCisgIC8vIEphdmFT
Y3JpcHQgZW5naW5lcyBuZWVkIHNlcGFyYXRlIGNvcGllcyBpbiBvcmRlciB0byBleGVyY2lzZSBh
bGwgb2YKKyAgLy8gdGhlaXIgb3B0aW1pemVkIGNvZGUgcGF0aHMuCisKKyAgdHJ5IHsKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEludDhBcnJheToKKyAgICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytpaSkgeworICAgICAgICBmb3IgKHZhciBqaiA9
IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikgeworICAgICAgICAgIGFycmF5W2pqXSA9IHNv
dXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2VydEVxKCdTdG9yaW5nICcgKyBzb3VyY2VEYXRh
W2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJyYXlbampdKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQxNkFycmF5OgorICAgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHNvdXJjZURhdGEubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGZvciAodmFyIGpq
ID0gMDsgamogPCBudW1JdGVyYXRpb25zOyArK2pqKSB7CisgICAgICAgICAgYXJyYXlbampdID0g
c291cmNlRGF0YVtpaV07CisgICAgICAgICAgYXNzZXJ0RXEoJ1N0b3JpbmcgJyArIHNvdXJjZURh
dGFbaWldLCBleHBlY3RlZFJlc3VsdHNbaWldLCBhcnJheVtqal0pOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEludDMyQXJyYXk6CisgICAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgc291cmNlRGF0YS5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgZm9yICh2YXIg
amogPSAwOyBqaiA8IG51bUl0ZXJhdGlvbnM7ICsramopIHsKKyAgICAgICAgICBhcnJheVtqal0g
PSBzb3VyY2VEYXRhW2lpXTsKKyAgICAgICAgICBhc3NlcnRFcSgnU3RvcmluZyAnICsgc291cmNl
RGF0YVtpaV0sIGV4cGVjdGVkUmVzdWx0c1tpaV0sIGFycmF5W2pqXSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgVWludDhBcnJheToKKyAgICAgIGZvciAodmFy
IGlpID0gMDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytpaSkgeworICAgICAgICBmb3IgKHZh
ciBqaiA9IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikgeworICAgICAgICAgIGFycmF5W2pq
XSA9IHNvdXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2VydEVxKCdTdG9yaW5nICcgKyBzb3Vy
Y2VEYXRhW2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJyYXlbampdKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheToKKyAgICAg
IGZvciAodmFyIGlpID0gMDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytpaSkgeworICAgICAg
ICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikgeworICAgICAgICAg
IGFycmF5W2pqXSA9IHNvdXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2VydEVxKCdTdG9yaW5n
ICcgKyBzb3VyY2VEYXRhW2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJyYXlbampdKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBVaW50MTZBcnJheToKKyAg
ICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytpaSkgeworICAg
ICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikgeworICAgICAg
ICAgIGFycmF5W2pqXSA9IHNvdXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2VydEVxKCdTdG9y
aW5nICcgKyBzb3VyY2VEYXRhW2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJyYXlbampdKTsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBVaW50MzJBcnJheToK
KyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzb3VyY2VEYXRhLmxlbmd0aDsgKytpaSkgewor
ICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgbnVtSXRlcmF0aW9uczsgKytqaikgeworICAg
ICAgICAgIGFycmF5W2pqXSA9IHNvdXJjZURhdGFbaWldOworICAgICAgICAgIGFzc2VydEVxKCdT
dG9yaW5nICcgKyBzb3VyY2VEYXRhW2lpXSwgZXhwZWN0ZWRSZXN1bHRzW2lpXSwgYXJyYXlbampd
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
IGZhaWwoIlVuaGFuZGxlZCB0eXBlIik7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBwYXNz
KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKKworLy8KKy8vIFRl
c3QgY2FzZXMgZm9yIGJvdGggc2lnbmVkIGFuZCB1bnNpZ25lZCB0eXBlcworLy8KKworZnVuY3Rp
b24gdGVzdEdldFdpdGhPdXRPZlJhbmdlSW5kaWNlcyh0eXBlLCBuYW1lKSB7CisgICAgZGVidWco
J1Rlc3RpbmcgJyArIG5hbWUgKyAnIEdldFdpdGhPdXRPZlJhbmdlSW5kaWNlcycpOworICAgIC8v
IFNlZSBiZWxvdyBmb3IgZGVjbGFyYXRpb24gb2YgdGhpcyBnbG9iYWwgdmFyaWFibGUKKyAgICBh
cnJheSA9IG5ldyB0eXBlKFsyLCAzXSk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImFycmF5WzJd
Iik7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImFycmF5Wy0xXSIpOworICAgIHNob3VsZEJlVW5k
ZWZpbmVkKCJhcnJheVsweDIwMDAwMDAwXSIpOworfQorCitmdW5jdGlvbiB0ZXN0T2Zmc2V0c0Fu
ZFNpemVzKHR5cGUsIG5hbWUsIGVsZW1lbnRTaXplSW5CeXRlcykgeworICBydW5uaW5nKCd0ZXN0
ICcgKyBuYW1lICsgJyBPZmZzZXRzQW5kU2l6ZXMnKTsKKyAgdHJ5IHsKKyAgICB2YXIgbGVuID0g
MTA7CisgICAgYXNzZXJ0RXEoJ3R5cGUuQllURVNfUEVSX0VMRU1FTlQnLCBlbGVtZW50U2l6ZUlu
Qnl0ZXMsIHR5cGUuQllURVNfUEVSX0VMRU1FTlQpOworICAgIHZhciBhcnJheSA9IG5ldyB0eXBl
KGxlbik7CisgICAgYXNzZXJ0KCdhcnJheS5idWZmZXInLCBhcnJheS5idWZmZXIpOworICAgIGFz
c2VydEVxKCdhcnJheS5ieXRlT2Zmc2V0JywgMCwgYXJyYXkuYnl0ZU9mZnNldCk7CisgICAgYXNz
ZXJ0RXEoJ2FycmF5Lmxlbmd0aCcsIGxlbiwgYXJyYXkubGVuZ3RoKTsKKyAgICBhc3NlcnRFcSgn
YXJyYXkuYnl0ZUxlbmd0aCcsIGxlbiAqIGVsZW1lbnRTaXplSW5CeXRlcywgYXJyYXkuYnl0ZUxl
bmd0aCk7CisgICAgYXJyYXkgPSBuZXcgdHlwZShhcnJheS5idWZmZXIsIGVsZW1lbnRTaXplSW5C
eXRlcywgbGVuIC0gMSk7CisgICAgYXNzZXJ0KCdhcnJheS5idWZmZXInLCBhcnJheS5idWZmZXIp
OworICAgIGFzc2VydEVxKCdhcnJheS5ieXRlT2Zmc2V0JywgZWxlbWVudFNpemVJbkJ5dGVzLCBh
cnJheS5ieXRlT2Zmc2V0KTsKKyAgICBhc3NlcnRFcSgnYXJyYXkubGVuZ3RoJywgbGVuIC0gMSwg
YXJyYXkubGVuZ3RoKTsKKyAgICBhc3NlcnRFcSgnYXJyYXkuYnl0ZUxlbmd0aCcsIChsZW4gLSAx
KSAqIGVsZW1lbnRTaXplSW5CeXRlcywgYXJyYXkuYnl0ZUxlbmd0aCk7CisgICAgcGFzcygpOwor
ICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2V0
RnJvbVR5cGVkQXJyYXkodHlwZSwgbmFtZSkgeworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsg
JyBTZXRGcm9tVHlwZWRBcnJheScpOworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBl
KDEwKTsKKyAgICB2YXIgYXJyYXkyID0gbmV3IHR5cGUoNSk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgaSsrKSB7CisgICAgICBhc3NlcnRFcSgnRWxlbWVudCAnICsgaSwgMCwgYXJyYXlb
aV0pOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Mi5sZW5ndGg7IGkrKykg
eworICAgICAgYXJyYXkyW2ldID0gaTsKKyAgICB9CisgICAgYXJyYXkuc2V0KGFycmF5Mik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheTIubGVuZ3RoOyBpKyspIHsKKyAgICAgIGFzc2Vy
dEVxKCdFbGVtZW50ICcgKyBpLCBpLCBhcnJheVtpXSk7CisgICAgfQorICAgIGFycmF5LnNldChh
cnJheTIsIDUpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgaSsrKSB7
CisgICAgICBhc3NlcnRFcSgnRWxlbWVudCAnICsgaSwgaSwgYXJyYXlbNSArIGldKTsKKyAgICB9
CisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgZmFpbChlKTsKKyAgfQorfQorCitm
dW5jdGlvbiBuZWdhdGl2ZVRlc3RTZXRGcm9tVHlwZWRBcnJheSh0eXBlLCBuYW1lKSB7CisgIHJ1
bm5pbmcoJ25lZ2F0aXZlVGVzdCAnICsgbmFtZSArICcgU2V0RnJvbVR5cGVkQXJyYXknKTsKKyAg
dHJ5IHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZSg1KTsKKyAgICB2YXIgYXJyYXkyID0gbmV3
IHR5cGUoNik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIGFzc2Vy
dEVxKCdFbGVtZW50ICcgKyBpLCAwLCBhcnJheVtpXSk7CisgICAgfQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgaSsrKSB7CisgICAgICBhcnJheTJbaV0gPSBpOworICAg
IH0KKyAgICB0cnkgeworICAgICAgYXJyYXkuc2V0KGFycmF5Mik7CisgICAgICBmYWlsKCdFeHBl
Y3RlZCBleGNlcHRpb24gZnJvbSBhcnJheS5zZXQoYXJyYXkyKScpOworICAgICAgcmV0dXJuOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgIGFycmF5Mi5zZXQoYXJy
YXksIDIpOworICAgICAgZmFpbCgnRXhwZWN0ZWQgZXhjZXB0aW9uIGZyb20gYXJyYXkyLnNldChh
cnJheSwgMiknKTsKKyAgICAgIHJldHVybjsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorICAg
IHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworZnVuY3Rp
b24gdGVzdFNldEZyb21BcnJheSh0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5h
bWUgKyAnIFNldEZyb21BcnJheScpOworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBl
KDEwKTsKKyAgICB2YXIgYXJyYXkyID0gWzEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxXTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGFzc2VydEVxKCdFbGVt
ZW50ICcgKyBpLCAwLCBhcnJheVtpXSk7CisgICAgfQorICAgIGFycmF5LnNldChhcnJheTIsIDAp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgaSsrKSB7CisgICAgICBh
c3NlcnRFcSgnRWxlbWVudCAnICsgaSwgMTAgLSBpLCBhcnJheVtpXSk7CisgICAgfQorICAgIHBh
c3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24g
bmVnYXRpdmVUZXN0U2V0RnJvbUFycmF5KHR5cGUsIG5hbWUpIHsKKyAgcnVubmluZygnbmVnYXRp
dmVUZXN0ICcgKyBuYW1lICsgJyBTZXRGcm9tQXJyYXknKTsKKyAgdHJ5IHsKKyAgICB2YXIgYXJy
YXkgPSBuZXcgdHlwZShbMiwgM10pOworICAgIHRyeSB7CisgICAgICBhcnJheS5zZXQoWzQsIDVd
LCAxKTsKKyAgICAgIGZhaWwoKTsKKyAgICAgIHJldHVybjsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgfQorICAgIHRyeSB7CisgICAgICBhcnJheS5zZXQoWzQsIDUsIDZdKTsKKyAgICAgIGZhaWwo
KTsKKyAgICAgIHJldHVybjsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorICAgIHBhc3MoKTsK
KyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKwordmFyIHN1YmFycmF5Owor
ZnVuY3Rpb24gdGVzdFN1YmFycmF5KHR5cGUsIG5hbWUpIHsKKyAgcnVubmluZygndGVzdCAnICsg
bmFtZSArICcgU3ViYXJyYXknKTsKKyAgdHJ5IHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShb
MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0pOworICAgIHZhciBzdWJhcnJheSA9IGFycmF5
LnN1YmFycmF5KDAsIDUpOworICAgIGFzc2VydEVxKCdzdWJhcnJheS5sZW5ndGgnLCA1LCBzdWJh
cnJheS5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICBh
c3NlcnRFcSgnRWxlbWVudCAnICsgaSwgaSwgc3ViYXJyYXlbaV0pOworICAgIH0KKyAgICBzdWJh
cnJheSA9IGFycmF5LnN1YmFycmF5KDQsIDEwKTsKKyAgICBhc3NlcnRFcSgnc3ViYXJyYXkubGVu
Z3RoJywgNiwgc3ViYXJyYXkubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkr
KykgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGksIDQgKyBpLCBzdWJhcnJheVtpXSk7
CisgICAgfQorICAgIHBhc3MoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0K
K30KKworZnVuY3Rpb24gdGVzdFN1YmFycmF5T2Zmc2V0QW5kTGVuZ3RoQ2xhbXBpbmcodHlwZSwg
bmFtZSkgeworICBydW5uaW5nKCd0ZXN0ICcgKyBuYW1lICsgJyBTdWJhcnJheSBvZmZzZXQgYW5k
IGxlbmd0aCBjbGFtcGluZycpOworICB0cnkgeworICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKFsw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSk7CisgICAgdmFyIHN1YmFycmF5MSA9IGFycmF5
LnN1YmFycmF5KDAsIDUpOworICAgIHZhciBzdWJhcnJheTIgPSBzdWJhcnJheTEuc3ViYXJyYXko
LTIsIDEwKTsKKyAgICBhc3NlcnRFcSgnc3ViYXJyYXkyLmxlbmd0aCcsIDIsIHN1YmFycmF5Mi5s
ZW5ndGgpOworICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyAwLCAzLCBzdWJhcnJheTJbMF0pOwor
ICAgIGFzc2VydEVxKCdFbGVtZW50ICcgKyAxLCA0LCBzdWJhcnJheTJbMV0pOworICAgIHBhc3Mo
KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24gbmVn
YXRpdmVUZXN0U3ViYXJyYXkodHlwZSwgbmFtZSkgeworICBydW5uaW5nKCduZWdhdGl2ZVRlc3Qg
JyArIG5hbWUgKyAnIFN1YmFycmF5Jyk7CisgIHRyeSB7CisgICAgdmFyIGFycmF5ID0gbmV3IHR5
cGUoWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldKTsKKyAgICBzdWJhcnJheSA9IGFycmF5
LnN1YmFycmF5KDUsIDExKTsKKyAgICBpZiAoc3ViYXJyYXkubGVuZ3RoICE9IDUpIHsKKyAgICAg
IGZhaWwoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3ViYXJyYXkgPSBhcnJheS5zdWJh
cnJheSgxMCwgMTApOworICAgIGlmIChzdWJhcnJheS5sZW5ndGggIT0gMCkgeworICAgICAgZmFp
bCgpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsK
KyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRCb3VuZGFyeUNvbmRpdGlv
bnModHlwZSwgbmFtZSwgdGVzdFZhbHVlcywgZXhwZWN0ZWRWYWx1ZXMpIHsKKyAgcnVubmluZygn
dGVzdCAnICsgbmFtZSArICcgU2V0Qm91bmRhcnlDb25kaXRpb25zJyk7CisgIHRyeSB7CisgICAg
dmFyIGFycmF5ID0gbmV3IHR5cGUoMSk7CisgICAgYXNzZXJ0RXEoJ0FycmF5IGxlbmd0aCcsIDEs
IGFycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RWYWx1ZXMubGVu
Z3RoOyArK2lpKSB7CisgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgMTA7ICsramopIHsKKyAg
ICAgICAgYXJyYXlbMF0gPSB0ZXN0VmFsdWVzW2lpXTsKKyAgICAgICAgYXNzZXJ0RXEoJ0VsZW1l
bnQgMCcsIGV4cGVjdGVkVmFsdWVzW2lpXSwgYXJyYXlbMF0pOworICAgICAgfQorICAgIH0KKyAg
ICBwYXNzKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBmYWlsKGUpOworICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RDb25zdHJ1Y3Rpb25Cb3VuZGFyeUNvbmRpdGlvbnModHlwZSwgbmFtZSwgdGVzdFZh
bHVlcywgZXhwZWN0ZWRWYWx1ZXMpIHsKKyAgcnVubmluZygndGVzdCAnICsgbmFtZSArICcgQ29u
c3RydWN0aW9uQm91bmRhcnlDb25kaXRpb25zJyk7CisgIHRyeSB7CisgICAgdmFyIGFycmF5ID0g
bmV3IHR5cGUodGVzdFZhbHVlcyk7CisgICAgYXNzZXJ0RXEoJ0FycmF5IGxlbmd0aCcsIHRlc3RW
YWx1ZXMubGVuZ3RoLCBhcnJheS5sZW5ndGgpOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0
ZXN0VmFsdWVzLmxlbmd0aDsgKytpaSkgeworICAgICAgYXNzZXJ0RXEoJ0VsZW1lbnQgJyArIGlp
LCBleHBlY3RlZFZhbHVlc1tpaV0sIGFycmF5W2lpXSk7CisgICAgfQorICAgIHBhc3MoKTsKKyAg
fSBjYXRjaCAoZSkgeworICAgIGZhaWwoZSk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnN0
cnVjdGlvbldpdGhOdWxsQnVmZmVyKHR5cGUsIG5hbWUpIHsKKyAgICB2YXIgYXJyYXk7CisgICAg
dHJ5IHsKKyAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShudWxsKTsKKyAgICAgICAgYXNzZXJ0RXEo
Ikxlbmd0aCBvZiAiICsgbmFtZSArICIgY29uc3RydWN0ZWQgd2l0aCBudWxsIiwgMCwgYXJyYXku
bGVuZ3RoKTsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsg
IiB3aXRoIG51bGwgcHJvZHVjZWQgYSAiICsgbmFtZSArICIgb2YgbGVuZ3RoIDAiKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIC8vIFRoaXMgdXNlZCB0byBiZSBjb3JyZWN0LCBidXQgVEMz
OSBoYXMgY2hhbmdlZCB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgY29uc3RydWN0b3JzLgorICAgICAg
ICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbnVsbCB0aHJl
dyBleGNlcHRpb24iKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgYXJyYXkgPSBuZXcgdHlw
ZShudWxsLCAwKTsKKyAgICAgICAgYXNzZXJ0RXEoIkxlbmd0aCBvZiAiICsgbmFtZSArICIgY29u
c3RydWN0ZWQgd2l0aCBudWxsIiwgMCwgYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG51bGwgcHJvZHVjZWQgYSAiICsg
bmFtZSArICIgb2YgbGVuZ3RoIDAiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIC8vIFRo
aXMgdXNlZCB0byBiZSBjb3JyZWN0LCBidXQgVEMzOSBoYXMgY2hhbmdlZCB0aGUgYmVoYXZpb3Ig
b2YgdGhlc2UgY29uc3RydWN0b3JzLgorICAgICAgICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24g
b2YgIiArIG5hbWUgKyAiIHdpdGggKG51bGwsIDApIHRocmV3IGV4Y2VwdGlvbiIpOworICAgIH0K
KyAgICB0cnkgeworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51bGwsIDAsIDApOworICAgICAg
ICBhc3NlcnRFcSgiTGVuZ3RoIG9mICIgKyBuYW1lICsgIiBjb25zdHJ1Y3RlZCB3aXRoIG51bGwi
LCAwLCBhcnJheS5sZW5ndGgpOworICAgICAgICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24gb2Yg
IiArIG5hbWUgKyAiIHdpdGggbnVsbCBwcm9kdWNlZCBhICIgKyBuYW1lICsgIiBvZiBsZW5ndGgg
MCIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgLy8gVGhpcyB1c2VkIHRvIGJlIGNvcnJl
Y3QsIGJ1dCBUQzM5IGhhcyBjaGFuZ2VkIHRoZSBiZWhhdmlvciBvZiB0aGVzZSBjb25zdHJ1Y3Rv
cnMuCisgICAgICAgIHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0
aCAobnVsbCwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0Q29uc3RydWN0aW9uV2l0aEV4Y2VwdGlvblRocm93aW5nT2JqZWN0KHR5cGUsIG5hbWUpIHsK
KyAgICB2YXIgbyA9IHt9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCAibGVuZ3RoIiwg
eyBnZXQ6IGZ1bmN0aW9uKCkgeyB0aHJvdyAiYmFpbDsiIH19KTsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgYXJyYXkgPSBuZXcgdHlwZShvKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorICAg
IHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0aCBleGNlcHRpb24t
dGhyb3dpbmcgYXJyYXktbGlrZSBvYmplY3QgZGlkbid0IGNyYXNoIHVuZXhwZWN0ZWRseSIpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5jLCB0ZXh0KSB7CisgICAg
dmFyIGVycm9yVGV4dCA9IHRleHQgKyAiIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24iOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgdGVzdEZhaWxlZChlcnJvclRleHQpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCh0ZXh0ICsgIiB0aHJldyBhbiBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93VHlwZUVycm9yKGZ1
bmMsIHRleHQpIHsKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJv
cikgeworICAgICAgICAgICAgb2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChv
aykgeworICAgICAgICB0ZXN0UGFzc2VkKHRleHQgKyAiIHRocmV3IFR5cGVFcnJvciIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQodGV4dCArICIgc2hvdWxkIHRocm93IFR5cGVF
cnJvciIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhPdXRPZlJh
bmdlVmFsdWVzKHR5cGUsIG5hbWUpIHsKKyAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCA0LCAweDNGRkZGRkZGKTsKKyAgICB9LCAi
Q29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG91dC1vZi1yYW5nZSBudW1iZXIgb2Yg
ZWxlbWVudHMiKTsKKyAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAgICAgdmFyIGFycmF5
ID0gbmV3IHR5cGUoYnVmZmVyLCA4KTsKKyAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1l
ICsgIiB3aXRoIG91dC1vZi1yYW5nZSBvZmZzZXQiKTsKK30KKworZnVuY3Rpb24gdGVzdENvbnN0
cnVjdGlvbldpdGhOZWdhdGl2ZU91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFtZSkgeworICAgIHRy
eSB7CisgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoLTEpOworICAgICAgICB0
ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2ZSBzaXpl
IHNob3VsZCB0aHJvdyBleGNlcHRpb24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0aXZlIHNpemUg
dGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhciBhcnJheSA9
IG5ldyB0eXBlKC0xKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBu
YW1lICsgIiB3aXRoIG5lZ2F0aXZlIHNpemUgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBu
YW1lICsgIiB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorICAg
IHNob3VsZFRocm93SW5kZXhTaXplRXJyKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgYnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgICAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShidWZm
ZXIsIDQsIC0yMTQ3NDgzNjQ4KTsKKyAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsg
IiB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMiKTsKK30KKworZnVuY3Rpb24gdGVz
dENvbnN0cnVjdGlvbldpdGhVbmFsaWduZWRPZmZzZXQodHlwZSwgbmFtZSwgZWxlbWVudFNpemVJ
bkJ5dGVzKSB7CisgICAgaWYgKGVsZW1lbnRTaXplSW5CeXRlcyA+IDEpIHsKKyAgICAgICAgc2hv
dWxkVGhyb3dJbmRleFNpemVFcnIoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgYnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKDMyKTsKKyAgICAgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBl
KGJ1ZmZlciwgMSwgZWxlbWVudFNpemVJbkJ5dGVzKTsKKyAgICAgICAgfSwgIkNvbnN0cnVjdGlv
biBvZiAiICsgbmFtZSArICIgd2l0aCB1bmFsaWduZWQgb2Zmc2V0Iik7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aFVuYWxpZ25lZExlbmd0aCh0eXBlLCBuYW1lLCBl
bGVtZW50U2l6ZUluQnl0ZXMpIHsKKyAgICBpZiAoZWxlbWVudFNpemVJbkJ5dGVzID4gMSkgewor
ICAgICAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZWxlbWVudFNpemVJbkJ5dGVzICsgMSk7Cisg
ICAgICAgICAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShidWZmZXIsIDApOworICAgICAgICB9LCAi
Q29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIHVuYWxpZ25lZCBsZW5ndGgiKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RDb25zdHJ1Y3Rpb25XaXRoQm90aEFycmF5QnVmZmVyQW5k
TGVuZ3RoKHR5cGUsIG5hbWUsIGVsZW1lbnRTaXplSW5CeXRlcykgeworICAgIHZhciBidWZCeXRl
TGVuZ3RoID0gMTAwMCAqIGVsZW1lbnRTaXplSW5CeXRlczsKKyAgICB2YXIgYnVmID0gbmV3IEFy
cmF5QnVmZmVyKGJ1ZkJ5dGVMZW5ndGgpOworICAgIHZhciBhcnJheTEgPSBuZXcgdHlwZShidWYp
OworICAgIHZhciBhcnJheTIgPSBuZXcgdHlwZShidWZCeXRlTGVuZ3RoIC8gZWxlbWVudFNpemVJ
bkJ5dGVzKTsKKyAgICBpZiAoYXJyYXkxLmxlbmd0aCA9PSBhcnJheTIubGVuZ3RoKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkFycmF5IGxlbmd0aHMgbWF0Y2hlZCB3aXRoIGV4cGxpY2l0IGFuZCBp
bXBsaWNpdCBjcmVhdGlvbiBvZiBBcnJheUJ1ZmZlciIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIkFycmF5IGxlbmd0aHMgRElEIE5PVCBNQVRDSCB3aXRoIGV4cGxpY2l0IGFu
ZCBpbXBsaWNpdCBjcmVhdGlvbiBvZiBBcnJheUJ1ZmZlciIpOworICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdENvbnN0cnVjdGlvbldpdGhTdWJQb3J0aW9uT2ZBcnJheUJ1ZmZlcih0eXBlLCBuYW1l
LCBlbGVtZW50U2l6ZUluQnl0ZXMpIHsKKyAgICBpZiAoZWxlbWVudFNpemVJbkJ5dGVzID4gMSkg
eworICAgICAgICAvLyBUZXN0IGNvbnN0cnVjdGlvbiB3aXRoIGEgdmFsaWQgc3ViLXBvcnRpb24g
b2YgYW4gYXJyYXkgYnVmZmVyCisgICAgICAgIC8vICh3aG9zZSBzaXplIGlzIG5vdCBhbiBpbnRl
Z3JhbCBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplKS4KKyAgICAgICAgdmFyIHNpemUgPSA0
ICogZWxlbWVudFNpemVJbkJ5dGVzICsgKGVsZW1lbnRTaXplSW5CeXRlcyAvIDIpOworICAgICAg
ICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoYnVmLCAwLCAyKTsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIm5ldyAiICsgbmFtZSArICIobmV3IEFycmF5QnVmZmVyKCIgKyBzaXplICsgIiksIDAs
IDIpIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJuZXcgIiArIG5hbWUgKyAiKG5ldyBBcnJheUJ1ZmZlcigiICsgc2l6ZSArICIpLCAw
LCAyKSBmYWlsZWQ6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVGhlc2UgbmVl
ZCB0byBiZSBnbG9iYWwgZm9yIHNob3VsZEJlIHRvIHNlZSB0aGVtCit2YXIgYXJyYXk7Cit2YXIg
dHlwZVNpemU7CisKK2Z1bmN0aW9uIHRlc3RTdWJhcnJheVdpdGhPdXRPZlJhbmdlVmFsdWVzKHR5
cGUsIG5hbWUsIHN6KSB7CisgICAgZGVidWcoIlRlc3Rpbmcgc3ViYXJyYXkgb2YgIiArIG5hbWUp
OworICAgIHRyeSB7CisgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMzIpOwor
ICAgICAgICBhcnJheSA9IG5ldyB0eXBlKGJ1ZmZlcik7CisgICAgICAgIHR5cGVTaXplID0gc3o7
CisgICAgICAgIHNob3VsZEJlKCJhcnJheS5sZW5ndGgiLCAiMzIgLyB0eXBlU2l6ZSIpOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoImFycmF5LnN1YmFycmF5KDQsIDB4M0ZG
RkZGRkYpLmxlbmd0aCIsICIoMzIgLyB0eXBlU2l6ZSkgLSA0Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiYXJyYXkuc3ViYXJyYXkoNCwgLTIxNDc0ODM2NDgpLmxlbmd0aCIsICIwIik7CisgICAg
ICAgICAgICAvLyBUZXN0IHN1YmFycmF5KCkgYWdhaW5zdCBvdmVyZmxvd3MuCisgICAgICAgICAg
ICBhcnJheSA9IGFycmF5LnN1YmFycmF5KDIpOworICAgICAgICAgICAgaWYgKHN6ID4gMSkgewor
ICAgICAgICAgICAgICAgIC8vIEZ1bGwgYnl0ZSBvZmZzZXQgaXMgKzEgbGFyZ2VyIHRoYW4gdGhl
IG1heGltdW0gdW5zaWduZWQgbG9uZyBpbnQuCisgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHN1YmFycmF5KCkgc3RpbGwgaGFuZGxlcyBpdCBjb3JyZWN0bHkuICBPdGhlcndpc2Ugb3ZlcmZs
b3cgd291bGQgaGFwcGVuIGFuZAorICAgICAgICAgICAgICAgIC8vIG9mZnNldCB3b3VsZCBiZSAw
LCBhbmQgYXJyYXkubGVuZ3RoIGFycmF5Lmxlbmd0aCB3b3VsZCBpbmNvcnJlY3RseSBiZSAxLgor
ICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IDQyOTQ5NjcyOTYgLyBzeiAtIDI7CisgICAgICAg
ICAgICAgICAgYXJyYXkgPSBhcnJheS5zdWJhcnJheShzdGFydCwgc3RhcnQgKyAxKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiYXJyYXkubGVuZ3RoIiwgIjAiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3ViYXJyYXkg
b2YgIiArIG5hbWUgKyAiIHRocmV3IGV4Y2VwdGlvbiIpOworICAgICAgICB9CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNlcHRpb246ICIgKyBlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RTdWJhcnJheVdpdGhEZWZhdWx0VmFsdWVzKHR5cGUsIG5hbWUsIHN6
KSB7CisgICAgZGVidWcoIlRlc3Rpbmcgc3ViYXJyYXkgd2l0aCBkZWZhdWx0IGlucHV0cyBvZiAi
ICsgbmFtZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZl
cigzMik7CisgICAgICAgIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyKTsKKyAgICAgICAgdHlwZVNp
emUgPSBzejsKKyAgICAgICAgc2hvdWxkQmUoImFycmF5Lmxlbmd0aCIsICIzMiAvIHR5cGVTaXpl
Iik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzaG91bGRCZSgiYXJyYXkuc3ViYXJyYXko
MCkubGVuZ3RoIiwgIigzMiAvIHR5cGVTaXplKSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFy
cmF5LnN1YmFycmF5KDIpLmxlbmd0aCIsICIoMzIgLyB0eXBlU2l6ZSkgLSAyIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiYXJyYXkuc3ViYXJyYXkoLTIpLmxlbmd0aCIsICIyIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiYXJyYXkuc3ViYXJyYXkoLTIxNDc0ODM2NDgpLmxlbmd0aCIsICIoMzIg
LyB0eXBlU2l6ZSkiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiU3ViYXJyYXkgb2YgIiArIG5hbWUgKyAiIHRocmV3IGV4Y2VwdGlvbiIpOworICAgICAg
ICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNlcHRpb246ICIg
KyBlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldFdpdGhJbnZhbGlkT2Zmc2V0KHR5cGUsIG5h
bWUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVR5cGUsIHNv
dXJjZU5hbWUsIHNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCwgb2Zmc2V0RGVzY3JpcHRpb24pIHsKKyAgICB2YXIgd2ViZ2xBcnJheSA9IG5ldyB0eXBl
KGxlbmd0aCk7CisgICAgdmFyIHNvdXJjZUFycmF5ID0gbmV3IHNvdXJjZVR5cGUoc291cmNlTGVu
Z3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgaSsrKQorICAgICAg
ICBzb3VyY2VBcnJheVtpXSA9IDQyICsgaTsKKyAgICB0cnkgeworICAgICAgICB3ZWJnbEFycmF5
LnNldChzb3VyY2VBcnJheSwgb2Zmc2V0KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2V0dGluZyAi
ICsgbmFtZSArICIgZnJvbSAiICsgc291cmNlTmFtZSArICIgd2l0aCAiICsKKyAgICAgICAgICAg
ICAgICAgICBvZmZzZXREZXNjcmlwdGlvbiArICIgb2Zmc2V0IHdhcyBub3QgY2F1Z2h0Iik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJTZXR0aW5nICIgKyBuYW1lICsg
IiBmcm9tICIgKyBzb3VyY2VOYW1lICsgIiB3aXRoICIgKworICAgICAgICAgICAgICAgICAgIG9m
ZnNldERlc2NyaXB0aW9uICsgIiBvZmZzZXQgd2FzIGNhdWdodCIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gc2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIGxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VUeXBlLCBzb3VyY2VOYW1lLCBzb3VyY2VMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBvZmZzZXREZXNjcmlwdGlvbikgewor
ICAgIHJ1bm5pbmcoIlNldHRpbmcgIiArIG5hbWUgKyAiIGZyb20gIiArIHNvdXJjZU5hbWUgKyAi
IHdpdGggIiArCisgICAgICAgICAgICBvZmZzZXREZXNjcmlwdGlvbiArICIgb2Zmc2V0Iik7Cisg
ICAgdmFyIHdlYmdsQXJyYXkgPSBuZXcgdHlwZShsZW5ndGgpOworICAgIHZhciBzb3VyY2VBcnJh
eSA9IG5ldyBzb3VyY2VUeXBlKHNvdXJjZUxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzb3VyY2VMZW5ndGg7IGkrKykKKyAgICAgICAgc291cmNlQXJyYXlbaV0gPSA0MiArIGk7Cisg
ICAgdHJ5IHsKKyAgICAgICAgd2ViZ2xBcnJheS5zZXQoc291cmNlQXJyYXksIG9mZnNldCk7Cisg
ICAgICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0KTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzb3VyY2VMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYXNzZXJ0RXEoIkVsZW1l
bnQgIiArIGkgKyBvZmZzZXQsIHNvdXJjZUFycmF5W2ldLCB3ZWJnbEFycmF5W2kgKyBvZmZzZXRd
KTsKKyAgICAgICAgfQorICAgICAgICBwYXNzKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBmYWlsKGUpOworICAgIH0KK30KKworCitmdW5jdGlvbiB0ZXN0U2V0dGluZ0Zyb21BcnJheVdp
dGhPdXRPZlJhbmdlT2Zmc2V0KHR5cGUsIG5hbWUpIHsKKyAgICBzZXRXaXRoSW52YWxpZE9mZnNl
dCh0eXBlLCBuYW1lLCAzMiwgQXJyYXksICJhcnJheSIsIDE2LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4N0ZGRkZGRjgsICJvdXQtb2YtcmFuZ2UiKTsKK30KKworZnVuY3Rpb24gdGVzdFNl
dHRpbmdGcm9tVHlwZWRBcnJheVdpdGhPdXRPZlJhbmdlT2Zmc2V0KHR5cGUsIG5hbWUpIHsKKyAg
ICBzZXRXaXRoSW52YWxpZE9mZnNldCh0eXBlLCBuYW1lLCAzMiwgdHlwZSwgbmFtZSwgMTYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg3RkZGRkZGOCwgIm91dC1vZi1yYW5nZSIpOworfQor
CitmdW5jdGlvbiB0ZXN0U2V0dGluZ0Zyb21BcnJheVdpdGhOZWdhdGl2ZU9mZnNldCh0eXBlLCBu
YW1lKSB7CisgICAgc2V0V2l0aEludmFsaWRPZmZzZXQodHlwZSwgbmFtZSwgMzIsIEFycmF5LCAi
YXJyYXkiLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgIm5lZ2F0aXZlIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZXR0aW5nRnJvbVR5cGVkQXJyYXlXaXRoTmVnYXRpdmVPZmZzZXQo
dHlwZSwgbmFtZSkgeworICAgIHNldFdpdGhJbnZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCB0
eXBlLCBuYW1lLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgIm5lZ2F0aXZlIik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0aE1pbnVzWmVyb09mZnNldCh0
eXBlLCBuYW1lKSB7CisgICAgc2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCBBcnJh
eSwgImFycmF5IiwgMTYsCisgICAgICAgICAgICAgICAgICAgICAgIC0wLCAiLTAiKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFNldHRpbmdGcm9tVHlwZWRBcnJheVdpdGhNaW51c1plcm9PZmZzZXQodHlw
ZSwgbmFtZSkgeworICAgIHNldFdpdGhWYWxpZE9mZnNldCh0eXBlLCBuYW1lLCAzMiwgdHlwZSwg
bmFtZSwgMTYsCisgICAgICAgICAgICAgICAgICAgICAgIC0wLCAiLTAiKTsKK30KKworZnVuY3Rp
b24gdGVzdFNldHRpbmdGcm9tQXJyYXlXaXRoQm91bmRhcnlPZmZzZXQodHlwZSwgbmFtZSkgewor
ICAgIHNldFdpdGhWYWxpZE9mZnNldCh0eXBlLCBuYW1lLCAzMiwgQXJyYXksICJhcnJheSIsIDE2
LAorICAgICAgICAgICAgICAgICAgICAgICAxNiwgImJvdW5kYXJ5Iik7Cit9CisKK2Z1bmN0aW9u
IHRlc3RTZXR0aW5nRnJvbVR5cGVkQXJyYXlXaXRoQm91bmRhcnlPZmZzZXQodHlwZSwgbmFtZSkg
eworICAgIHNldFdpdGhWYWxpZE9mZnNldCh0eXBlLCBuYW1lLCAzMiwgdHlwZSwgbmFtZSwgMTYs
CisgICAgICAgICAgICAgICAgICAgICAgIDE2LCAiYm91bmRhcnkiKTsKK30KKworZnVuY3Rpb24g
dGVzdFNldHRpbmdGcm9tQXJyYXlXaXRoTm9uSW50ZWdlck9mZnNldCh0eXBlLCBuYW1lKSB7Cisg
ICAgc2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCBBcnJheSwgImFycmF5IiwgMTYs
CisgICAgICAgICAgICAgICAgICAgICAgIDE2Ljk5OSwgIm5vbi1pbnRlZ2VyIik7Cit9CisKK2Z1
bmN0aW9uIHRlc3RTZXR0aW5nRnJvbVR5cGVkQXJyYXlXaXRoTm9uSW50ZWdlck9mZnNldCh0eXBl
LCBuYW1lKSB7CisgICAgc2V0V2l0aFZhbGlkT2Zmc2V0KHR5cGUsIG5hbWUsIDMyLCB0eXBlLCBu
YW1lLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgMTYuOTk5LCAibm9uLWludGVnZXIiKTsK
K30KKworZnVuY3Rpb24gdGVzdFNldHRpbmdGcm9tRmFrZUFycmF5V2l0aE91dE9mUmFuZ2VMZW5n
dGgodHlwZSwgbmFtZSkgeworICAgIHZhciB3ZWJnbEFycmF5ID0gbmV3IHR5cGUoMzIpOworICAg
IHZhciBhcnJheSA9IHt9OworICAgIGFycmF5Lmxlbmd0aCA9IDB4ODAwMDAwMDA7CisgICAgdHJ5
IHsKKyAgICAgICAgd2ViZ2xBcnJheS5zZXQoYXJyYXksIDgpOworICAgICAgICB0ZXN0RmFpbGVk
KCJTZXR0aW5nICIgKyBuYW1lICsgIiBmcm9tIGZha2UgYXJyYXkgd2l0aCBpbnZhbGlkIGxlbmd0
aCB3YXMgbm90IGNhdWdodCIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU2V0dGluZyAiICsgbmFtZSArICIgZnJvbSBmYWtlIGFycmF5IHdpdGggaW52YWxpZCBsZW5n
dGggd2FzIGNhdWdodCIpOworICAgIH0KK30KKworCitmdW5jdGlvbiBuZWdhdGl2ZVRlc3RHZXRB
bmRTZXRNZXRob2RzKHR5cGUsIG5hbWUpIHsKKyAgICBhcnJheSA9IG5ldyB0eXBlKFsyLCAzXSk7
CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImFycmF5LmdldCIpOworICAgIHZhciBleGNlcHRpb25U
aHJvd24gPSBmYWxzZTsKKyAgICAvLyBXZSBkZWxpYmVyYXRlbHkgY2hlY2sgZm9yIGFuIGV4Y2Vw
dGlvbiBoZXJlIHJhdGhlciB0aGFuIHVzaW5nCisgICAgLy8gc2hvdWxkVGhyb3cgaGVyZSBiZWNh
dXNlIHRoZSBwcmVjaXNlIGNvbnRlbnRzIG9mIHRoZSBzeW50YXgKKyAgICAvLyBlcnJvciBhcmUg
bm90IHNwZWNpZmllZC4KKyAgICB0cnkgeworICAgICAgICB3ZWJHTEFycmF5LnNldCgwLCAxKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGV4Y2VwdGlvblRocm93biA9IHRydWU7CisgICAg
fQorICAgIHZhciBvdXRwdXQgPSAiYXJyYXkuc2V0KDAsIDEpICI7CisgICAgaWYgKGV4Y2VwdGlv
blRocm93bikgeworICAgICAgICB0ZXN0UGFzc2VkKG91dHB1dCArICJ0aHJldyBleGNlcHRpb24u
Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChvdXRwdXQgKyAiZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0TmFOQ29udmVyc2lv
bih0eXBlLCBuYW1lKSB7CisgIHJ1bm5pbmcoJ3Rlc3Qgc3RvcmluZyBOYU4gaW4gJyArIG5hbWUp
OworCisgIHZhciBhcnJheSA9IG5ldyB0eXBlKFsxLCAxXSk7CisgIHZhciByZXN1bHRzID0gW107
CisKKyAgLy8gVGhlIGNvZGUgYmxvY2sgaW4gZWFjaCBvZiB0aGUgY2FzZSBzdGF0ZW1lbnRzIGJl
bG93IGlzIGlkZW50aWNhbCwgYnV0IHNvbWUKKyAgLy8gSmF2YVNjcmlwdCBlbmdpbmVzIG5lZWQg
c2VwYXJhdGUgY29waWVzIGluIG9yZGVyIHRvIGV4ZXJjaXNlIGFsbCBvZgorICAvLyB0aGVpciBv
cHRpbWl6ZWQgY29kZSBwYXRocy4KKyAgdHJ5IHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIEZsb2F0MzJBcnJheToKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgYXJyYXlbaV0gPSBOYU47CisgICAgICAgIHJlc3VsdHNbaV0gPSBh
cnJheVtpXTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvYXQ2NEFycmF5Ogor
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBh
cnJheVtpXSA9IE5hTjsKKyAgICAgICAgcmVzdWx0c1tpXSA9IGFycmF5W2ldOworICAgICAgfQor
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ4QXJyYXk6CisgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycmF5W2ldID0gTmFOOworICAgICAg
ICByZXN1bHRzW2ldID0gYXJyYXlbaV07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNl
IEludDE2QXJyYXk6CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytp
KSB7CisgICAgICAgIGFycmF5W2ldID0gTmFOOworICAgICAgICByZXN1bHRzW2ldID0gYXJyYXlb
aV07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEludDMyQXJyYXk6CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycmF5W2ld
ID0gTmFOOworICAgICAgICByZXN1bHRzW2ldID0gYXJyYXlbaV07CisgICAgICB9CisgICAgICBi
cmVhazsKKyAgICBjYXNlIFVpbnQ4QXJyYXk6CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycmF5W2ldID0gTmFOOworICAgICAgICByZXN1
bHRzW2ldID0gYXJyYXlbaV07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFVpbnQ4
Q2xhbXBlZEFycmF5OgorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsr
aSkgeworICAgICAgICBhcnJheVtpXSA9IE5hTjsKKyAgICAgICAgcmVzdWx0c1tpXSA9IGFycmF5
W2ldOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBVaW50MTZBcnJheToKKyAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXJyYXlb
aV0gPSBOYU47CisgICAgICAgIHJlc3VsdHNbaV0gPSBhcnJheVtpXTsKKyAgICAgIH0KKyAgICAg
IGJyZWFrOworICAgIGNhc2UgVWludDMyQXJyYXk6CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycmF5W2ldID0gTmFOOworICAgICAgICBy
ZXN1bHRzW2ldID0gYXJyYXlbaV07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgZmFpbCgiVW5oYW5kbGVkIHR5cGUiKTsKKyAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIC8vIFNvbWUgdHlwZXMgcHJlc2VydmUgTmFOIHZhbHVlczsgYWxsIG90aGVyIHR5cGVzIGNv
bnZlcnQgTmFOIHRvIHplcm8uCisgICAgaWYgKHR5cGUgPT09IEZsb2F0MzJBcnJheSB8fCB0eXBl
ID09PSBGbG9hdDY0QXJyYXkpIHsKKyAgICAgIGFzc2VydCgnaW5pdGlhbCBOYU4gcHJlc2VydmVk
JywgaXNOYU4obmV3IHR5cGUoW05hTl0pWzBdKSk7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICBhc3NlcnQoJ05hTiBwcmVzZXJ2ZWQgdmlhIHNl
dHRlcicsIGlzTmFOKHJlc3VsdHNbaV0pKTsKKyAgICB9IGVsc2UgeworICAgICAgYXNzZXJ0RXEo
J2luaXRpYWwgTmFOIGNvbnZlcnRlZCB0byB6ZXJvJywgMCwgbmV3IHR5cGUoW05hTl0pWzBdKTsK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpCisgICAgICAgIGFz
c2VydEVxKCdOYU4gY29udmVydGVkIHRvIHplcm8gYnkgc2V0dGVyJywgMCwgcmVzdWx0c1tpXSk7
CisgICAgfQorCisgICAgcGFzcygpOworICB9IGNhdGNoIChlKSB7CisgICAgICBmYWlsKGUpOwor
ICB9Cit9CisKKy8vCisvLyBUZXN0IGRyaXZlcgorLy8KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7
CisgIGFsbFBhc3NlZCA9IHRydWU7CisKKyAgdGVzdFNsaWNlKCk7CisgIHRlc3RBcnJheUJ1ZmZl
cklzVmlld01ldGhvZCgpOworICB0ZXN0SW5oZXJpdGFuY2VIaWVyYXJjaHkoKTsKKworICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3RDYXNlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciB0ZXN0Q2Fz
ZSA9IHRlc3RDYXNlc1tpXTsKKyAgICBydW5uaW5nKHRlc3RDYXNlLm5hbWUpOworICAgIGlmICgh
KHRlc3RDYXNlLm5hbWUgaW4gd2luZG93KSkgeworICAgICAgICBmYWlsKCJkb2VzIG5vdCBleGlz
dCIpOworICAgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIHR5cGUgPSB3aW5kb3dbdGVz
dENhc2UubmFtZV07CisgICAgdmFyIG5hbWUgPSB0ZXN0Q2FzZS5uYW1lOworICAgIGlmICh0ZXN0
Q2FzZS51bnNpZ25lZCkgeworICAgICAgdGVzdFNldEFuZEdldDEwVG8xKHR5cGUsIG5hbWUpOwor
ICAgICAgdGVzdENvbnN0cnVjdFdpdGhBcnJheU9mVW5zaWduZWRWYWx1ZXModHlwZSwgbmFtZSk7
CisgICAgICB0ZXN0Q29uc3RydWN0V2l0aFR5cGVkQXJyYXlPZlVuc2lnbmVkVmFsdWVzKHR5cGUs
IG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0U2V0QW5kR2V0UG9zMTBUb05lZzEwKHR5
cGUsIG5hbWUpOworICAgICAgdGVzdENvbnN0cnVjdFdpdGhBcnJheU9mU2lnbmVkVmFsdWVzKHR5
cGUsIG5hbWUpOworICAgICAgdGVzdENvbnN0cnVjdFdpdGhUeXBlZEFycmF5T2ZTaWduZWRWYWx1
ZXModHlwZSwgbmFtZSk7CisgICAgfQorICAgIGlmICh0ZXN0Q2FzZS5pbnRlZ3JhbCkgeworICAg
ICAgdGVzdEludGVncmFsQXJyYXlUcnVuY2F0aW9uQmVoYXZpb3IodHlwZSwgbmFtZSwgdGVzdENh
c2UudW5zaWduZWQpOworICAgIH0KKyAgICB0ZXN0R2V0V2l0aE91dE9mUmFuZ2VJbmRpY2VzKHR5
cGUsIG5hbWUpOworICAgIHRlc3RPZmZzZXRzQW5kU2l6ZXModHlwZSwgbmFtZSwgdGVzdENhc2Uu
ZWxlbWVudFNpemVJbkJ5dGVzKTsKKyAgICB0ZXN0U2V0RnJvbVR5cGVkQXJyYXkodHlwZSwgbmFt
ZSk7CisgICAgbmVnYXRpdmVUZXN0U2V0RnJvbVR5cGVkQXJyYXkodHlwZSwgbmFtZSk7CisgICAg
dGVzdFNldEZyb21BcnJheSh0eXBlLCBuYW1lKTsKKyAgICBuZWdhdGl2ZVRlc3RTZXRGcm9tQXJy
YXkodHlwZSwgbmFtZSk7CisgICAgdGVzdFN1YmFycmF5KHR5cGUsIG5hbWUpOworICAgIHRlc3RT
dWJhcnJheU9mZnNldEFuZExlbmd0aENsYW1waW5nKHR5cGUsIG5hbWUpOworICAgIG5lZ2F0aXZl
VGVzdFN1YmFycmF5KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXRCb3VuZGFyeUNvbmRpdGlvbnMo
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0Q2FzZS50ZXN0VmFsdWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdENhc2UuZXhwZWN0ZWRWYWx1ZXMpOworICAgIHRlc3RDb25zdHJ1Y3Rp
b25Cb3VuZGFyeUNvbmRpdGlvbnModHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0Q2FzZS50ZXN0VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdENhc2UuZXhwZWN0ZWRWYWx1ZXMpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoTnVs
bEJ1ZmZlcih0eXBlLCBuYW1lKTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aEV4Y2VwdGlvblRo
cm93aW5nT2JqZWN0KHR5cGUsIG5hbWUpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoT3V0T2ZS
YW5nZVZhbHVlcyh0eXBlLCBuYW1lKTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aE5lZ2F0aXZl
T3V0T2ZSYW5nZVZhbHVlcyh0eXBlLCBuYW1lKTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aFVu
YWxpZ25lZE9mZnNldCh0eXBlLCBuYW1lLCB0ZXN0Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMpOwor
ICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoVW5hbGlnbmVkTGVuZ3RoKHR5cGUsIG5hbWUsIHRlc3RD
YXNlLmVsZW1lbnRTaXplSW5CeXRlcyk7CisgICAgdGVzdENvbnN0cnVjdGlvbldpdGhCb3RoQXJy
YXlCdWZmZXJBbmRMZW5ndGgodHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVz
KTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aFN1YlBvcnRpb25PZkFycmF5QnVmZmVyKHR5cGUs
IG5hbWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRlcyk7CisgICAgdGVzdFN1YmFycmF5V2l0
aE91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVz
KTsKKyAgICB0ZXN0U3ViYXJyYXlXaXRoRGVmYXVsdFZhbHVlcyh0eXBlLCBuYW1lLCB0ZXN0Q2Fz
ZS5lbGVtZW50U2l6ZUluQnl0ZXMpOworICAgIHRlc3RTZXR0aW5nRnJvbUFycmF5V2l0aE91dE9m
UmFuZ2VPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVzdFNldHRpbmdGcm9tVHlwZWRBcnJheVdp
dGhPdXRPZlJhbmdlT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJvbUFycmF5
V2l0aE5lZ2F0aXZlT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJvbVR5cGVk
QXJyYXlXaXRoTmVnYXRpdmVPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVzdFNldHRpbmdGcm9t
QXJyYXlXaXRoTWludXNaZXJvT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0aW5nRnJv
bVR5cGVkQXJyYXlXaXRoTWludXNaZXJvT2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0
aW5nRnJvbUFycmF5V2l0aEJvdW5kYXJ5T2Zmc2V0KHR5cGUsIG5hbWUpOworICAgIHRlc3RTZXR0
aW5nRnJvbVR5cGVkQXJyYXlXaXRoQm91bmRhcnlPZmZzZXQodHlwZSwgbmFtZSk7CisgICAgdGVz
dFNldHRpbmdGcm9tQXJyYXlXaXRoTm9uSW50ZWdlck9mZnNldCh0eXBlLCBuYW1lKTsKKyAgICB0
ZXN0U2V0dGluZ0Zyb21UeXBlZEFycmF5V2l0aE5vbkludGVnZXJPZmZzZXQodHlwZSwgbmFtZSk7
CisgICAgdGVzdFNldHRpbmdGcm9tRmFrZUFycmF5V2l0aE91dE9mUmFuZ2VMZW5ndGgodHlwZSwg
bmFtZSk7CisgICAgbmVnYXRpdmVUZXN0R2V0QW5kU2V0TWV0aG9kcyh0eXBlLCBuYW1lKTsKKyAg
ICB0ZXN0TmFOQ29udmVyc2lvbih0eXBlLCBuYW1lKTsKKyAgfQorCisgIHByaW50U3VtbWFyeSgp
OworfQorCitydW5UZXN0cygpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy1j
cmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjYzNDY2MDE4MTk1ZDg4MWIxNTNmN2I1YmQ5ZjcyYjc5MGM0YjFhMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3R5cGVkYXJyYXlzL2RhdGEtdmlldy1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBE
YXRhVmlldyBkb2VzIG5vdCBjcmFzaCB3aXRoIGJhZCBvZmZzZXQgb3IgbGVuZ3RoLiIpOworCit2
YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShbMTY0LCAxMTIsIDE1NywgNjNdKTsKK3ZhciB2aWV3
Oworc2hvdWxkVGhyb3coInZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXkuYnVmZmVyLCAtNDUwMDAw
MDAwMCkiKTsKK3Nob3VsZFRocm93KCJ2aWV3ID0gbmV3IERhdGFWaWV3KGFycmF5LmJ1ZmZlciwg
LTQ1MDAwMDAwMDAsIDQ1MDAwMDAwMDApIik7Cit2YXIgdmFsdWUgPSB2aWV3ID8gdmlldy5nZXRG
bG9hdDMyKDAsIHRydWUpIDogMDsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9kYXRhLXZpZXct
dGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NDEzMjI3NTc4MjE3MGNkMjA3MDcwYmQzYWNhODRjNzUyY2U2MTY1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvdHlwZWRhcnJheXMvZGF0YS12aWV3LXRlc3QuaHRtbApAQCAtMCwwICsxLDQyMSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy90ZXN0LWV2YWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IERhdGFWaWV3LiIpOworCit2
YXIgaW50QXJyYXkxID0gWzAsIDEsIDIsIDMsIDEwMCwgMTAxLCAxMDIsIDEwMywgMTI4LCAxMjks
IDEzMCwgMTMxLCAyNTIsIDI1MywgMjU0LCAyNTVdOwordmFyIGludEFycmF5MiA9IFszMSwgMzIs
IDMzLCAwLCAxLCAyLCAzLCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEyOCwgMTI5LCAxMzAsIDEzMSwg
MjUyLCAyNTMsIDI1NCwgMjU1XTsKK3ZhciBlbXB0eUFycmF5ID0gWzIwNCwgMjA0LCAyMDQsIDIw
NCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQs
IDIwNF07CisKK3ZhciBhcnJheUJ1ZmZlciA9IG51bGw7Cit2YXIgdmlldyA9IG51bGw7Cit2YXIg
dmlld1N0YXJ0ID0gMDsKK3ZhciB2aWV3TGVuZ3RoID0gMDsKKworZnVuY3Rpb24gZ2V0RWxlbWVu
dFNpemUoZnVuYykKK3sKKyAgICBzd2l0Y2ggKGZ1bmMpIHsKKyAgICBjYXNlICJJbnQ4IjoKKyAg
ICBjYXNlICJVaW50OCI6CisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgIkludDE2IjoKKyAg
ICBjYXNlICJVaW50MTYiOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlICJJbnQzMiI6Cisg
ICAgY2FzZSAiVWludDMyIjoKKyAgICBjYXNlICJGbG9hdDMyIjoKKyAgICAgICAgcmV0dXJuIDQ7
CisgICAgY2FzZSAiRmxvYXQ2NCI6CisgICAgICAgIHJldHVybiA4OworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGRlYnVnKCJTaG91bGQgbm90IHJlYWNoZWQiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNoZWNrR2V0KGZ1bmMsIGluZGV4LCBleHBlY3RlZCwgbGl0dGxlRW5kaWFuKQoreworICAgIHZh
ciBleHByID0gInZpZXcuZ2V0IiArIGZ1bmMgKyAiKCIgKyBpbmRleDsKKyAgICBpZiAobGl0dGxl
RW5kaWFuICE9IHVuZGVmaW5lZCkgeworICAgICAgICBleHByICs9ICIsICI7CisgICAgICAgIGV4
cHIgKz0gbGl0dGxlRW5kaWFuID8gInRydWUiIDogImZhbHNlIjsKKyAgICB9CisgICAgZXhwciAr
PSAiKSI7CisgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggKyBnZXRFbGVtZW50U2l6ZShmdW5j
KSAtIDEgPCB2aWV3LmJ5dGVMZW5ndGgpCisgICAgICAgIHNob3VsZEJlKGV4cHIsIGV4cGVjdGVk
KTsKKyAgICBlbHNlCisgICAgICAgIHNob3VsZFRocm93KGV4cHIpOworfQorCitmdW5jdGlvbiBj
aGVja1NldChmdW5jLCBpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbikKK3sKKyAgICB2YXIgZXhw
ciA9ICJ2aWV3LnNldCIgKyBmdW5jICsgIigiICsgaW5kZXggKyAiLCAiICsgdmFsdWU7CisgICAg
aWYgKGxpdHRsZUVuZGlhbiAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgZXhwciArPSAiLCAiOwor
ICAgICAgICBleHByICs9IGxpdHRsZUVuZGlhbiA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgfQor
ICAgIGV4cHIgKz0gIikiOworICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4ICsgZ2V0RWxlbWVu
dFNpemUoZnVuYykgLSAxIDwgdmlldy5ieXRlTGVuZ3RoKSB7CisgICAgICAgIHNob3VsZEJlVW5k
ZWZpbmVkKGV4cHIpOworICAgICAgICBjaGVja0dldChmdW5jLCBpbmRleCwgdmFsdWUsIGxpdHRs
ZUVuZGlhbik7CisgICAgfSBlbHNlCisgICAgICAgIHNob3VsZFRocm93KGV4cHIpOworfQorCitm
dW5jdGlvbiBjaGVja0dldFdpdGhvdXRBcmd1bWVudChmdW5jLCBleHBlY3RlZCkKK3sKKyAgICB2
YXIgdGhyZXcgPSBmYWxzZTsKKyAgICB2YXIgdmFsdWU7CisgICAgdHJ5IHsKKyAgICAgICAgdmFs
dWUgPSB2aWV3WyJnZXQiICsgZnVuY10oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRo
cmV3ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodGhyZXcpIHsKKyAgICAgICAgLy8gVGhpcyB1
c2VkIHRvIGJlIGNvcnJlY3QsIGJ1dCBUQzM5IGhhcyBjaGFuZ2VkIHRoZSBiZWhhdmlvciBvZiB0
aGVzZSBtZXRob2RzLgorICAgICAgICB0ZXN0UGFzc2VkKCJ2aWV3LmdldCIgKyBmdW5jICsgIiB3
aXRoIG5vIGFyZ3VtZW50cyB0aHJvd3MuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZh
bHVlID09PSBleHBlY3RlZCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgidmlldy5nZXQiICsg
ZnVuYyArICIgdHJlYXRzIG1pc3NpbmcgYXJndW1lbnQgYXMgMC4iKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInZpZXcuZ2V0IiArIGZ1bmMgKyAiIGFjY2VwdHMg
YSBtaXNzaW5nIGFyZ3VtZW50IGJ1dCBkb2VzIG5vdCBjYXN0IGl0IHRvIDAuIik7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrU2V0V2l0aG91dFNlY29uZEFyZ3VtZW50KGZ1
bmMsIGluZGV4LCBpc0Zsb2F0KQoreworICAgIHZhciBleHBlY3RlZCA9IGlzRmxvYXQgPyBOYU4g
OiAwOworICAgIHZhciB0aHJldyA9IGZhbHNlOworICAgIHZhciB2YWx1ZTsKKyAgICB0cnkgewor
ICAgICAgICB2YWx1ZSA9IHZpZXdbInNldCIgKyBmdW5jXShpbmRleCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHRocmV3KSB7Cisg
ICAgICAgIC8vIFRoaXMgdXNlZCB0byBiZSBjb3JyZWN0LCBidXQgVEMzOSBoYXMgY2hhbmdlZCB0
aGUgYmVoYXZpb3Igb2YgdGhlc2UgbWV0aG9kcy4KKyAgICAgICAgdGVzdFBhc3NlZCgidmlldy5z
ZXQiICsgZnVuYyArICIgd2l0aCBtaXNzaW5nIHNlY29uZCBhcmd1bWVudCB0aHJvd3MuIik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHN0b3JlZCA9IHZpZXdbImdldCIgKyBmdW5jXShpbmRl
eCk7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlzRmxvYXQgPyBpc05hTihz
dG9yZWQpIDogc3RvcmVkID09PSBleHBlY3RlZCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgi
dmlldy5zZXQiICsgZnVuYyArICIgdHJlYXRzIG1pc3Npbmcgc2Vjb25kIGFyZ3VtZW50IGFzICIg
KyBleHBlY3RlZCArICIuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJ2aWV3LnNldCIgKyBmdW5jICsgIiBhY2NlcHRzIGEgbWlzc2luZyBzZWNvbmQgYXJndW1l
bnQgYnV0IGRvZXMgbm90IGNhc3QgaXQgdG8gIiArIGV4cGVjdGVkICsgIi4iKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworZnVuY3Rpb24gY2hlY2tTZXRXaXRob3V0QXJndW1lbnRzKGZ1bmMsIGlz
RmxvYXQpCit7CisgICAgdmFyIGV4cGVjdGVkID0gaXNGbG9hdCA/IE5hTiA6IDA7CisgICAgdmFy
IHRocmV3ID0gZmFsc2U7CisgICAgdmFyIHZhbHVlOworICAgIHRyeSB7CisgICAgICAgIHZhbHVl
ID0gdmlld1sic2V0IiArIGZ1bmNdKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHRocmV3KSB7CisgICAgICAgIC8vIFRoaXMgdXNl
ZCB0byBiZSBjb3JyZWN0LCBidXQgVEMzOSBoYXMgY2hhbmdlZCB0aGUgYmVoYXZpb3Igb2YgdGhl
c2UgbWV0aG9kcy4KKyAgICAgICAgdGVzdFBhc3NlZCgidmlldy5zZXQiICsgZnVuYyArICIgd2l0
aCBubyBhcmd1bWVudHMgdGhyb3dzLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBzdG9y
ZWQgPSB2aWV3WyJnZXQiICsgZnVuY10oMCk7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZp
bmVkICYmIGlzRmxvYXQgPyBpc05hTihzdG9yZWQpIDogc3RvcmVkID09PSBleHBlY3RlZCkgewor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgidmlldy5zZXQiICsgZnVuYyArICIgdHJlYXRzIG1pc3Np
bmcgZmlyc3QgYXJndW1lbnQgYXMgMC4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoInZpZXcuc2V0IiArIGZ1bmMgKyAiIGFjY2VwdHMgYSBtaXNzaW5nIGZpcnN0
IGFyZ3VtZW50IGJ1dCBkb2VzIG5vdCBjYXN0IGl0IHRvIDAuIik7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RNaXNzaW5nQXJndW1lbnRzKGZ1bmMsIGNvbnN0cnVjdG9yLCBp
c0Zsb2F0KQoreworICAgIHZpZXcgPSBuZXcgRGF0YVZpZXcoKG5ldyBjb25zdHJ1Y3RvcigzKSku
YnVmZmVyKTsKKyAgICB2aWV3WyJzZXQiICsgZnVuY10oMCwgMSk7CisgICAgdmlld1sic2V0IiAr
IGZ1bmNdKGdldEVsZW1lbnRTaXplKGZ1bmMpLCAyKTsKKyAgICBjaGVja0dldFdpdGhvdXRBcmd1
bWVudChmdW5jLCAxKTsKKyAgICBjaGVja1NldFdpdGhvdXRTZWNvbmRBcmd1bWVudChmdW5jLCBn
ZXRFbGVtZW50U2l6ZShmdW5jKSwgaXNGbG9hdCk7CisgICAgdmlldyA9IG5ldyBEYXRhVmlldygo
bmV3IGNvbnN0cnVjdG9yKDMpKS5idWZmZXIpOworICAgIHZpZXdbInNldCIgKyBmdW5jXSgwLCAx
KTsKKyAgICBjaGVja1NldFdpdGhvdXRBcmd1bWVudHMoZnVuYywgaXNGbG9hdCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCBpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlh
bikKK3sKKyAgICBpZiAoaXNUZXN0aW5nR2V0KQorICAgICAgICBjaGVja0dldChmdW5jLCBpbmRl
eCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgIGVsc2UKKyAgICAgICAgY2hlY2tTZXQoZnVu
YywgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pOworfQorCitmdW5jdGlvbiBjcmVhdGVEYXRh
VmlldyhhcnJheSwgZnJvbnRQYWRkaW5nTnVtLCBsaXR0bGVFbmRpYW4sIHN0YXJ0LCBsZW5ndGgp
Cit7CisgICAgaWYgKCFsaXR0bGVFbmRpYW4pCisgICAgICAgIGFycmF5LnJldmVyc2UoKTsKKyAg
ICB2YXIgcGFkZGluZ0FycmF5ID0gbmV3IEFycmF5KGZyb250UGFkZGluZ051bSk7CisgICAgYXJy
YXlCdWZmZXIgPSAobmV3IFVpbnQ4QXJyYXkocGFkZGluZ0FycmF5LmNvbmNhdChhcnJheSkpKS5i
dWZmZXI7CisgICAgdmlld1N0YXJ0ID0gKHN0YXJ0ICE9IHVuZGVmaW5lZCkgPyBzdGFydCA6IDA7
CisgICAgdmlld0xlbmd0aCA9IChsZW5ndGggIT0gdW5kZWZpbmVkKSA/IGxlbmd0aCA6IGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGggLSB2aWV3U3RhcnQ7CisgICAgdmlldyA9IG5ldyBEYXRhVmlldyhh
cnJheUJ1ZmZlciwgdmlld1N0YXJ0LCB2aWV3TGVuZ3RoKTsKKyAgICBpZiAoIWxpdHRsZUVuZGlh
bikKKyAgICAgICAgYXJyYXkucmV2ZXJzZSgpOyAvLyByZXN0b3JlIHRoZSBhcnJheS4KK30KKwor
ZnVuY3Rpb24gcnVuSW50ZWdlclRlc3RDYXNlcyhpc1Rlc3RpbmdHZXQsIGFycmF5LCBzdGFydCwg
bGVuZ3RoKQoreworICAgIGNyZWF0ZURhdGFWaWV3KGFycmF5LCAwLCB0cnVlLCBzdGFydCwgbGVu
Z3RoKTsKKworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50OCIsIDAsICIwIik7CisgICAgdGVz
dChpc1Rlc3RpbmdHZXQsICJJbnQ4IiwgOCwgIi0xMjgiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIkludDgiLCAxNSwgIi0xIik7CisKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQ4Iiwg
MCwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQ4IiwgOCwgIjEyOCIpOworICAg
IHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDgiLCAxNSwgIjI1NSIpOworCisgICAgLy8gTGl0dGxl
IGVuZGlhbi4KKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDE2IiwgMCwgIjI1NiIsIHRydWUp
OworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCA1LCAiMjYyMTMiLCB0cnVlKTsKKyAg
ICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDE2IiwgOSwgIi0zMjEyNyIsIHRydWUpOworICAgIHRl
c3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAxNCwgIi0yIiwgdHJ1ZSk7CisKKyAgICAvLyBCaWcg
ZW5kaWFuLgorICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAwLCAiMSIpOworICAgIHRl
c3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCA1LCAiMjU5NTgiKTsKKyAgICB0ZXN0KGlzVGVzdGlu
Z0dldCwgIkludDE2IiwgOSwgIi0zMjM4MiIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50
MTYiLCAxNCwgIi0yNTciKTsKKworICAgIC8vIExpdHRsZSBlbmRpYW4uCisgICAgdGVzdChpc1Rl
c3RpbmdHZXQsICJVaW50MTYiLCAwLCAiMjU2IiwgdHJ1ZSk7CisgICAgdGVzdChpc1Rlc3RpbmdH
ZXQsICJVaW50MTYiLCA1LCAiMjYyMTMiLCB0cnVlKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwg
IlVpbnQxNiIsIDksICIzMzQwOSIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWlu
dDE2IiwgMTQsICI2NTUzNCIsIHRydWUpOworCisgICAgLy8gQmlnIGVuZGlhbi4KKyAgICB0ZXN0
KGlzVGVzdGluZ0dldCwgIlVpbnQxNiIsIDAsICIxIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQs
ICJVaW50MTYiLCA1LCAiMjU5NTgiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQxNiIs
IDksICIzMzE1NCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDE2IiwgMTQsICI2NTI3
OSIpOworCisgICAgLy8gTGl0dGxlIGVuZGlhbi4KKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIklu
dDMyIiwgMCwgIjUwNDYyOTc2IiwgdHJ1ZSk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQz
MiIsIDMsICIxNzE3OTIwNzcxIiwgdHJ1ZSk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQz
MiIsIDYsICItMjEyMjI5MTM1NCIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50
MzIiLCA5LCAiLTU4NDkwMjM5IiwgdHJ1ZSk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQz
MiIsIDEyLCAiLTY2MDUyIiwgdHJ1ZSk7CisKKyAgICAvLyBCaWcgZW5kaWFuLgorICAgIHRlc3Qo
aXNUZXN0aW5nR2V0LCAiSW50MzIiLCAwLCAiNjYwNTEiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIkludDMyIiwgMywgIjU2OTExMjA2Iik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQz
MiIsIDYsICIxNzE4MDU5MTM3Iik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIDks
ICItMjEyMjE1Mjk2NCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MzIiLCAxMiwgIi01
MDQ2Mjk3NyIpOworCisgICAgLy8gTGl0dGxlIGVuZGlhbi4KKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIlVpbnQzMiIsIDAsICI1MDQ2Mjk3NiIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0
LCAiVWludDMyIiwgMywgIjE3MTc5MjA3NzEiLCB0cnVlKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgIlVpbnQzMiIsIDYsICIyMTcyNjc1OTQyIiwgdHJ1ZSk7CisgICAgdGVzdChpc1Rlc3RpbmdH
ZXQsICJVaW50MzIiLCA5LCAiNDIzNjQ3NzA1NyIsIHRydWUpOworICAgIHRlc3QoaXNUZXN0aW5n
R2V0LCAiVWludDMyIiwgMTIsICI0Mjk0OTAxMjQ0IiwgdHJ1ZSk7CisKKyAgICAvLyBCaWcgZW5k
aWFuLgorICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMyIiwgMCwgIjY2MDUxIik7CisgICAg
dGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCAzLCAiNTY5MTEyMDYiKTsKKyAgICB0ZXN0KGlz
VGVzdGluZ0dldCwgIlVpbnQzMiIsIDYsICIxNzE4MDU5MTM3Iik7CisgICAgdGVzdChpc1Rlc3Rp
bmdHZXQsICJVaW50MzIiLCA5LCAiMjE3MjgxNDMzMiIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0
LCAiVWludDMyIiwgMTIsICI0MjQ0NTA0MzE5Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RGbG9hdChp
c1Rlc3RpbmdHZXQsIGZ1bmMsIGFycmF5LCBzdGFydCwgZXhwZWN0ZWQpCit7CisgICAgLy8gTGl0
dGxlIGVuZGlhbi4KKyAgICBjcmVhdGVEYXRhVmlldyhhcnJheSwgMCwgdHJ1ZSwgc3RhcnQpOwor
ICAgIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCAwLCBleHBlY3RlZCwgdHJ1ZSk7CisgICAgY3Jl
YXRlRGF0YVZpZXcoYXJyYXksIDMsIHRydWUsIHN0YXJ0KTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dl
dCwgZnVuYywgMywgZXhwZWN0ZWQsIHRydWUpOworICAgIGNyZWF0ZURhdGFWaWV3KGFycmF5LCA3
LCB0cnVlLCBzdGFydCk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsIGZ1bmMsIDcsIGV4cGVjdGVk
LCB0cnVlKTsKKyAgICBjcmVhdGVEYXRhVmlldyhhcnJheSwgMTAsIHRydWUsIHN0YXJ0KTsKKyAg
ICB0ZXN0KGlzVGVzdGluZ0dldCwgZnVuYywgMTAsIGV4cGVjdGVkLCB0cnVlKTsKKworICAgIC8v
IEJpZyBlbmRpYW4uCisgICAgY3JlYXRlRGF0YVZpZXcoYXJyYXksIDAsIGZhbHNlKTsKKyAgICB0
ZXN0KGlzVGVzdGluZ0dldCwgZnVuYywgMCwgZXhwZWN0ZWQsIGZhbHNlKTsKKyAgICBjcmVhdGVE
YXRhVmlldyhhcnJheSwgMywgZmFsc2UpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCBmdW5jLCAz
LCBleHBlY3RlZCwgZmFsc2UpOworICAgIGNyZWF0ZURhdGFWaWV3KGFycmF5LCA3LCBmYWxzZSk7
CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsIGZ1bmMsIDcsIGV4cGVjdGVkLCBmYWxzZSk7CisgICAg
Y3JlYXRlRGF0YVZpZXcoYXJyYXksIDEwLCBmYWxzZSk7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQs
IGZ1bmMsIDEwLCBleHBlY3RlZCwgZmFsc2UpOworfQorCitmdW5jdGlvbiBydW5GbG9hdFRlc3RD
YXNlcyhpc1Rlc3RpbmdHZXQsIHN0YXJ0KQoreworICAgIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQs
ICJGbG9hdDMyIiwgaXNUZXN0aW5nR2V0ID8gWzAsIDAsIDMyLCA2NV0gOiBlbXB0eUFycmF5LCBz
dGFydCwgIjEwIik7CisgICAgdGVzdEZsb2F0KGlzVGVzdGluZ0dldCwgIkZsb2F0MzIiLCBpc1Rl
c3RpbmdHZXQgPyBbMTY0LCAxMTIsIDE1NywgNjNdIDogZW1wdHlBcnJheSwgc3RhcnQsICIxLjIz
MDAwMDAxOTA3MzQ4NjMiKTsKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIs
IGlzVGVzdGluZ0dldCA/IFs5NSwgNTMsIDUwLCAxOTldIDogZW1wdHlBcnJheSwgc3RhcnQsICIt
NDU2MjEuMzcxMDkzNzUiKTsKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIs
IGlzVGVzdGluZ0dldCA/IFsyNTUsIDI1NSwgMjU1LCAxMjddIDogZW1wdHlBcnJheSwgc3RhcnQs
ICJOYU4iKTsKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIsIGlzVGVzdGlu
Z0dldCA/IFsyNTUsIDI1NSwgMjU1LCAyNTVdIDogZW1wdHlBcnJheSwgc3RhcnQsICItTmFOIik7
CisKKyAgICB0ZXN0RmxvYXQoaXNUZXN0aW5nR2V0LCAiRmxvYXQ2NCIsIGlzVGVzdGluZ0dldCA/
IFswLCAwLCAwLCAwLCAwLCAwLCAzNiwgNjRdIDogZW1wdHlBcnJheSwgc3RhcnQsICIxMCIpOwor
ICAgIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQsICJGbG9hdDY0IiwgaXNUZXN0aW5nR2V0ID8gWzE3
NCwgNzEsIDIyNSwgMTIyLCAyMCwgMTc0LCAyNDMsIDYzXSA6IGVtcHR5QXJyYXksIHN0YXJ0LCAi
MS4yMyIpOworICAgIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQsICJGbG9hdDY0IiwgaXNUZXN0aW5n
R2V0ID8gWzE4MSwgNTUsIDI0OCwgMzAsIDI0MiwgMTc5LCA4NywgMTkzXSA6IGVtcHR5QXJyYXks
IHN0YXJ0LCAiLTYyMTM1NzYuNDgzOSIpOworICAgIHRlc3RGbG9hdChpc1Rlc3RpbmdHZXQsICJG
bG9hdDY0IiwgaXNUZXN0aW5nR2V0ID8gWzI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1
NSwgMTI3XSA6IGVtcHR5QXJyYXksIHN0YXJ0LCAiTmFOIik7CisgICAgdGVzdEZsb2F0KGlzVGVz
dGluZ0dldCwgIkZsb2F0NjQiLCBpc1Rlc3RpbmdHZXQgPyBbMjU1LCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgMjU1LCAyNTVdIDogZW1wdHlBcnJheSwgc3RhcnQsICItTmFOIik7Cit9CisKK2Z1
bmN0aW9uIHJ1bk5lZ2F0aXZlSW5kZXhUZXN0cyhpc1Rlc3RpbmdHZXQpCit7CisgICAgY3JlYXRl
RGF0YVZpZXcoaW50QXJyYXkxLCAwLCB0cnVlLCAwLCAxNik7CisKKyAgICB0ZXN0KGlzVGVzdGlu
Z0dldCwgIkludDgiLCAtMSwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDgiLCAt
MiwgIjAiKTsKKworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDgiLCAtMSwgIjAiKTsKKyAg
ICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQ4IiwgLTIsICIwIik7CisKKyAgICB0ZXN0KGlzVGVz
dGluZ0dldCwgIkludDE2IiwgLTEsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQx
NiIsIC0yLCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MTYiLCAtMywgIjAiKTsK
KworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDE2IiwgLTEsICIwIik7CisgICAgdGVzdChp
c1Rlc3RpbmdHZXQsICJVaW50MTYiLCAtMiwgIjAiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwg
IlVpbnQxNiIsIC0zLCAiMCIpOworCisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQzMiIsIC0x
LCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiSW50MzIiLCAtMywgIjAiKTsKKyAgICB0
ZXN0KGlzVGVzdGluZ0dldCwgIkludDMyIiwgLTUsICIwIik7CisKKyAgICB0ZXN0KGlzVGVzdGlu
Z0dldCwgIlVpbnQzMiIsIC0xLCAiMCIpOworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiVWludDMy
IiwgLTMsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50MzIiLCAtNSwgIjAiKTsK
KworICAgIGNyZWF0ZURhdGFWaWV3KFswLCAwLCAwLCAwLCAwLCAwLCAzNiwgNjRdLCAwLCB0cnVl
LCAwLCA4KTsKKworICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIsIC0xLCAiMCIpOwor
ICAgIHRlc3QoaXNUZXN0aW5nR2V0LCAiRmxvYXQzMiIsIC0zLCAiMCIpOworICAgIHRlc3QoaXNU
ZXN0aW5nR2V0LCAiRmxvYXQzMiIsIC01LCAiMCIpOworCisgICAgdGVzdChpc1Rlc3RpbmdHZXQs
ICJGbG9hdDY0IiwgLTEsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJGbG9hdDY0Iiwg
LTUsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJGbG9hdDY0IiwgLTksICIwIik7Cit9
CisKK2Z1bmN0aW9uIHJ1bkNvbnN0cnVjdG9yVGVzdHMoKQoreworICAgIGFycmF5QnVmZmVyID0g
KG5ldyBVaW50OEFycmF5KFsxLCAyXSkpLmJ1ZmZlcjsKKworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVGVzdCBmb3IgY29uc3RydWN0b3IgdGFraW5nIDEgYXJndW1lbnQiKTsKKyAgICBzaG91
bGRCZURlZmluZWQoInZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIpIik7CisgICAgc2hv
dWxkQmUoInZpZXcuYnl0ZU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoInZpZXcuYnl0ZUxl
bmd0aCIsICIyIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZm9yIGNvbnN0
cnVjdG9yIHRha2luZyAyIGFyZ3VtZW50cyIpOworICAgIHNob3VsZEJlRGVmaW5lZCgidmlldyA9
IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlciwgMSkiKTsKKyAgICBzaG91bGRCZSgidmlldy5ieXRl
T2Zmc2V0IiwgIjEiKTsKKyAgICBzaG91bGRCZSgidmlldy5ieXRlTGVuZ3RoIiwgIjEiKTsKKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3IgY29uc3RydWN0b3IgdGFraW5nIDMg
YXJndW1lbnRzIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3ID0gbmV3IERhdGFWaWV3KGFy
cmF5QnVmZmVyLCAwLCAxKSIpOworICAgIHNob3VsZEJlKCJ2aWV3LmJ5dGVPZmZzZXQiLCAiMCIp
OworICAgIHNob3VsZEJlKCJ2aWV3LmJ5dGVMZW5ndGgiLCAiMSIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJUZXN0IGZvciBjb25zdHJ1Y3RvciB0aHJvd2luZyBleGNlcHRpb24iKTsK
KyAgICBzaG91bGRUaHJvdygidmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlciwgMCwgMyki
KTsKKyAgICBzaG91bGRUaHJvdygidmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlciwgMSwg
MikiKTsKKyAgICBzaG91bGRUaHJvdygidmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlciwg
MiwgMSkiKTsKK30KKworZnVuY3Rpb24gcnVuR2V0VGVzdHMoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiVGVzdCBmb3IgZ2V0IG1ldGhvZHMgdGhhdCB3b3JrIik7CisgICAgcnVuSW50
ZWdlclRlc3RDYXNlcyh0cnVlLCBpbnRBcnJheTEsIDAsIDE2KTsKKyAgICBydW5GbG9hdFRlc3RD
YXNlcyh0cnVlLCAwKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3IgZ2V0
IG1ldGhvZHMgdGhhdCBtaWdodCByZWFkIGJleW9uZCByYW5nZSIpOworICAgIHJ1bkludGVnZXJU
ZXN0Q2FzZXModHJ1ZSwgaW50QXJyYXkyLCAzLCAyKTsKKyAgICBydW5GbG9hdFRlc3RDYXNlcyh0
cnVlLCAzKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3IgZ2V0IG1ldGhv
ZHMgdGhhdCByZWFkIGZyb20gbmVnYXRpdmUgaW5kZXgiKTsKKyAgICBydW5OZWdhdGl2ZUluZGV4
VGVzdHModHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHJ1blNldFRlc3RzKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIlRlc3QgZm9yIHNldCBtZXRob2RzIHRoYXQgd29yayIpOworICAgIHJ1
bkludGVnZXJUZXN0Q2FzZXMoZmFsc2UsIGVtcHR5QXJyYXksIDAsIDE2KTsKKyAgICBydW5GbG9h
dFRlc3RDYXNlcyhmYWxzZSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZm9y
IHNldCBtZXRob2RzIHRoYXQgbWlnaHQgd3JpdGUgYmV5b25kIHRoZSByYW5nZSIpOworICAgIHJ1
bkludGVnZXJUZXN0Q2FzZXMoZmFsc2UsIGVtcHR5QXJyYXksIDMsIDIpOworICAgIHJ1bkZsb2F0
VGVzdENhc2VzKGZhbHNlLCA3KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBm
b3Igc2V0IG1ldGhvZHMgdGhhdCB3cml0ZSB0byBuZWdhdGl2ZSBpbmRleCIpOworICAgIHJ1bk5l
Z2F0aXZlSW5kZXhUZXN0cyhmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHJ1bk1pc3NpbmdBcmd1bWVu
dFRlc3RzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZm9yIGdldCBhbmQg
c2V0IG1ldGhvZHMgbWlzc2luZyBhcmd1bWVudHMiKTsKKyAgICB0ZXN0TWlzc2luZ0FyZ3VtZW50
cygiSW50OCIsIEludDhBcnJheSk7CisgICAgdGVzdE1pc3NpbmdBcmd1bWVudHMoIlVpbnQ4Iiwg
VWludDhBcnJheSk7CisgICAgdGVzdE1pc3NpbmdBcmd1bWVudHMoIkludDE2IiwgSW50MTZBcnJh
eSk7CisgICAgdGVzdE1pc3NpbmdBcmd1bWVudHMoIlVpbnQxNiIsIFVpbnQxNkFycmF5KTsKKyAg
ICB0ZXN0TWlzc2luZ0FyZ3VtZW50cygiSW50MzIiLCBJbnQzMkFycmF5KTsKKyAgICB0ZXN0TWlz
c2luZ0FyZ3VtZW50cygiVWludDMyIiwgVWludDMyQXJyYXkpOworICAgIHRlc3RNaXNzaW5nQXJn
dW1lbnRzKCJGbG9hdDMyIiwgRmxvYXQzMkFycmF5LCB0cnVlKTsKKyAgICB0ZXN0TWlzc2luZ0Fy
Z3VtZW50cygiRmxvYXQ2NCIsIEZsb2F0NjRBcnJheSwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHJ1
bkluZGV4aW5nVGVzdHMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBmb3Ig
aW5kZXhpbmcgdGhhdCBzaG91bGQgbm90IHdvcmsiKTsKKyAgICB2aWV3ID0gbmV3IERhdGFWaWV3
KChuZXcgVWludDhBcnJheShbMSwgMl0pKS5idWZmZXIpOworICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJ2aWV3WzBdIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3WzBdID0gMyIpOworICAgIHNo
b3VsZEJlKCJ2aWV3LmdldFVpbnQ4KDApIiwgIjEiKTsKK30KKworcnVuQ29uc3RydWN0b3JUZXN0
cygpOworcnVuR2V0VGVzdHMoKTsKK3J1blNldFRlc3RzKCk7CitydW5NaXNzaW5nQXJndW1lbnRU
ZXN0cygpOworcnVuSW5kZXhpbmdUZXN0cygpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy90eXBl
ZC1hcnJheXMtaW4td29ya2Vycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvdHlwZWQtYXJyYXlzLWluLXdv
cmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWViMDU3NTg5N2QyZDk5NDIyYzdlZjEyNjU0MTk0MTU4
YWZkYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvdHlwZWQtYXJyYXlzLWluLXdv
cmtlcnMuaHRtbApAQCAtMCwwICsxLDI1NyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0LWV2YWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL3R5cGVkLWFycmF5LXRlc3Qt
Y2FzZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKKwordmFyIHRlc3RRdWV1ZSA9IFtdOwordmFyIHRyYW5zZmVyU3VwcG9ydGVkID0gdHJ1
ZTsKKworZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgIGlmICh0ZXN0UXVldWVbMF0uc3ViVGVzdHMu
bGVuZ3RoID4gMCkgeworICAgIHRlc3RRdWV1ZVswXS5zdWJUZXN0cy5zaGlmdCgpOworICB9CisK
KyAgd2hpbGUgKHRlc3RRdWV1ZS5sZW5ndGggPiAwICYmIHRlc3RRdWV1ZVswXS5zdWJUZXN0cy5s
ZW5ndGggPT0gMCkgeworICAgIHRlc3RRdWV1ZS5zaGlmdCgpOworICB9CisKKyAgaWYgKHRlc3RR
dWV1ZS5sZW5ndGggPT0gMCkgeworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0K
KworICB0ZXN0UXVldWVbMF0uc3ViVGVzdHNbMF0ucnVubmVyKCk7Cit9CisKK2Z1bmN0aW9uIGhh
bmRsZU1lc3NhZ2UoZXZlbnQpIHsKKyAgaWYgKHRlc3RRdWV1ZS5sZW5ndGggPT0gMCkKKyAgICBy
ZXR1cm47CisKKyAgaWYgKHRlc3RRdWV1ZVswXS5zdWJUZXN0cy5sZW5ndGggPT0gMCkKKyAgICBy
ZXR1cm47CisKKyAgdGVzdFF1ZXVlWzBdLnN1YlRlc3RzWzBdLmNoZWNrZXIoZXZlbnQpOworICBu
ZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiBzZXR1cFRlc3QodGVzdENhc2UsIHJ1bm5lciwgY2hl
Y2tlcikgeworICB0ZXN0Q2FzZS5zdWJUZXN0cy5wdXNoKHsgcnVubmVyOiBydW5uZXIuYmluZChu
dWxsLCB0ZXN0Q2FzZSksIGNoZWNrZXI6IGNoZWNrZXIuYmluZChudWxsLCB0ZXN0Q2FzZSkgfSk7
Cit9CisKK2Z1bmN0aW9uIGFycmF5VG9TdHJpbmcoYXJyKSB7CisgIHZhciByZXN1bHQgPSAiWyAi
OworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYXJyLmxlbmd0aDsgKytpaSkgeworICAgIGlmIChp
aSA+IDApCisgICAgICByZXN1bHQgKz0gIiwgIjsKKyAgICByZXN1bHQgKz0gYXJyW2lpXTsKKyAg
fQorICByZXR1cm4gcmVzdWx0ICsgIiBdIjsKK30KKworZnVuY3Rpb24gY29uc3RydWN0VHlwZWRB
cnJheSh0eXBlLCBkYXRhKSB7CisgIGlmICh0eXBlID09ICdJbnQ4QXJyYXknKSB7CisgICAgcmV0
dXJuIG5ldyBJbnQ4QXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlwZSA9PSAnVWludDhBcnJh
eScpIHsKKyAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlw
ZSA9PSAnVWludDhDbGFtcGVkQXJyYXknKSB7CisgICAgcmV0dXJuIG5ldyBVaW50OENsYW1wZWRB
cnJheShkYXRhKTsKKyAgfSBlbHNlIGlmICh0eXBlID09ICdJbnQxNkFycmF5JykgeworICAgIHJl
dHVybiBuZXcgSW50MTZBcnJheShkYXRhKTsKKyAgfSBlbHNlIGlmICh0eXBlID09ICdVaW50MTZB
cnJheScpIHsKKyAgICByZXR1cm4gbmV3IFVpbnQxNkFycmF5KGRhdGEpOworICB9IGVsc2UgaWYg
KHR5cGUgPT0gJ0ludDMyQXJyYXknKSB7CisgICAgcmV0dXJuIG5ldyBJbnQzMkFycmF5KGRhdGEp
OworICB9IGVsc2UgaWYgKHR5cGUgPT0gJ1VpbnQzMkFycmF5JykgeworICAgIHJldHVybiBuZXcg
VWludDMyQXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlwZSA9PSAnRmxvYXQzMkFycmF5Jykg
eworICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KGRhdGEpOworICB9IGVsc2UgaWYgKHR5cGUg
PT0gJ0Zsb2F0NjRBcnJheScpIHsKKyAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShkYXRhKTsK
KyAgfQorfQorCisvLyBUZXN0IHJ1bm5lciAvIGNoZWNrZXIgcGFpcnMKK2Z1bmN0aW9uIHJ1blRl
c3RXaXRoRGF0YShjb21tYW5kLCB0ZXN0Q2FzZSkgeworICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2Nv
bW1hbmQ6IGNvbW1hbmQsIHR5cGU6IHRlc3RDYXNlLm5hbWUsIHN1YlR5cGU6IHRlc3RDYXNlLnN1
YlR5cGUsIGVsZW1lbnRTaXplSW5CeXRlczogdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzLCBk
YXRhOiB0ZXN0Q2FzZS50ZXN0VmFsdWVzfSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQXJyYXlzRXF1
YWwodGVzdEtpbmQsIHRlc3RDYXNlLCBldmVudCkgeworICB2YXIgYXJyYXkgPSBldmVudC5kYXRh
OworICB2YXIgdGVzdE5hbWUgPSB0ZXN0S2luZCArICIgIiArIHRlc3RDYXNlLm5hbWUgKyAiIGZy
b20gd29ya2VyIHRvIG1haW4gdGhyZWFkIjsKKyAgaWYgKGFyZUFycmF5c0VxdWFsKGFycmF5LCB0
ZXN0Q2FzZS5leHBlY3RlZFZhbHVlcykpIHsKKyAgICB0ZXN0UGFzc2VkKHRlc3ROYW1lKTsKKyAg
fSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogZXhwZWN0ZWQgIiArIGFycmF5
VG9TdHJpbmcodGVzdENhc2UuZXhwZWN0ZWRWYWx1ZXMpICsgIiwgcmVjZWl2ZWQgIiArIGFycmF5
VG9TdHJpbmcoYXJyYXkpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjaGVja0J1ZmZlckNvbnRlbnRz
RXF1YWwodGVzdEtpbmQsIHRlc3RDYXNlLCBldmVudCkgeworICB2YXIgYXJyYXkgPSBjb25zdHJ1
Y3RUeXBlZEFycmF5KHRlc3RDYXNlLm5hbWUsIGV2ZW50LmRhdGEpOworICB2YXIgdGVzdE5hbWUg
PSB0ZXN0S2luZCArICIgY29udGFpbmluZyAiICsgdGVzdENhc2UubmFtZSArICIgdmFsdWVzIGZy
b20gd29ya2VyIHRvIG1haW4gdGhyZWFkIjsKKyAgaWYgKGFyZUFycmF5c0VxdWFsKGFycmF5LCB0
ZXN0Q2FzZS5leHBlY3RlZFZhbHVlcykpIHsKKyAgICB0ZXN0UGFzc2VkKHRlc3ROYW1lKTsKKyAg
fSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogZXhwZWN0ZWQgIiArIGFycmF5
VG9TdHJpbmcodGVzdENhc2UuZXhwZWN0ZWRWYWx1ZXMpICsgIiwgcmVjZWl2ZWQgIiArIGFycmF5
VG9TdHJpbmcoYXJyYXkpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjaGVja0RhdGFWaWV3Q29udGVu
dHModGVzdEtpbmQsIHRlc3RDYXNlLCBldmVudCkgeworICB2YXIgZGF0YVZpZXcgPSBldmVudC5k
YXRhOworICB2YXIgdGVzdE5hbWUgPSB0ZXN0S2luZCArICIgIiArIHRlc3RDYXNlLm5hbWUgKyAi
IGNvbnRhaW5pbmcgIiArIHRlc3RDYXNlLnN1YlR5cGUgKyAiIGZyb20gd29ya2VyIHRvIG1haW4g
dGhyZWFkIjsKKyAgdmFyIGJ5dGVPZmZzZXQgPSAwOworICB2YXIgYWxsUGFzc2VkID0gdHJ1ZTsK
KyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlLmV4cGVjdGVkVmFsdWVzLmxlbmd0aDsg
KytpaSkgeworICAgIHZhciBleHBlY3RlZCA9IHRlc3RDYXNlLmV4cGVjdGVkVmFsdWVzW2lpXTsK
KyAgICB2YXIgcmVjZWl2ZWQgPSBkYXRhVmlld1snZ2V0JyArIHRlc3RDYXNlLnN1YlR5cGVdKGJ5
dGVPZmZzZXQpOworICAgIGlmIChyZWNlaXZlZCAhPSBleHBlY3RlZCkgeworICAgICAgYWxsUGFz
c2VkID0gZmFsc2U7CisgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogYXQgYnl0ZSBvZmZz
ZXQgIiArIGJ5dGVPZmZzZXQgKyAiOiBleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiLCByZWNlaXZl
ZCAiICsgcmVjZWl2ZWQpOworICAgIH0KKyAgICBieXRlT2Zmc2V0ICs9IHRlc3RDYXNlLmVsZW1l
bnRTaXplSW5CeXRlczsKKyAgfQorICBpZiAoYWxsUGFzc2VkKSB7CisgICAgdGVzdFBhc3NlZCh0
ZXN0TmFtZSk7CisgIH0KK30KKworLy8gTWlzc2luZyB0ZXN0OiBjb3B5IG9yIHRyYW5zZmVyIEFy
cmF5QnVmZmVyLCB3cmFwIGluIERhdGFWaWV3IG9uIHRoaXMgZW5kLCB2ZXJpZnkgY29udGVudHMu
CisKK2Z1bmN0aW9uIG5vb3AoKSB7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQXJyYXlzRXF1YWxBbmRQ
aW5nUG9uZyh0ZXN0S2luZCwgdHJhbnNmZXIsIHRlc3RDYXNlLCBldmVudCkgeworICBjaGVja0Fy
cmF5c0VxdWFsKHRlc3RLaW5kLCB0ZXN0Q2FzZSwgZXZlbnQpOworICB2YXIgdHJhbnNmZXJhYmxl
cyA9IFtdOworICBpZiAodHJhbnNmZXIpIHsKKyAgICB0cmFuc2ZlcmFibGVzLnB1c2goZXZlbnQu
ZGF0YS5idWZmZXIpOworICB9CisgIHRyeSB7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgY29t
bWFuZDogJ3BvbmcnLCBkYXRhOiBldmVudC5kYXRhLCB0cmFuc2ZlcmFibGVzOiB0cmFuc2ZlcmFi
bGVzIH0sIHRyYW5zZmVyYWJsZXMpOworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxlZCgi
dW5leHBlY3RlZCBleGNlcHRpb246ICIgKyBlKTsKKyAgfQorfQorCitmdW5jdGlvbiBjaGVja0J1
ZmZlckNvbnRlbnRzRXF1YWxBbmRQaW5nUG9uZyh0ZXN0S2luZCwgdHJhbnNmZXIsIHRlc3RDYXNl
LCBldmVudCkgeworICBjaGVja0J1ZmZlckNvbnRlbnRzRXF1YWwodGVzdEtpbmQsIHRlc3RDYXNl
LCBldmVudCk7CisgIHZhciB0cmFuc2ZlcmFibGVzID0gW107CisgIGlmICh0cmFuc2Zlcikgewor
ICAgIHRyYW5zZmVyYWJsZXMucHVzaChldmVudC5kYXRhKTsKKyAgfQorICB0cnkgeworICAgIHdv
cmtlci5wb3N0TWVzc2FnZSh7IGNvbW1hbmQ6ICdwb25nJywgZGF0YTogZXZlbnQuZGF0YSwgdHJh
bnNmZXJhYmxlczogdHJhbnNmZXJhYmxlcyB9LCB0cmFuc2ZlcmFibGVzKTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgIHRlc3RGYWlsZWQoInVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAiICsgZSk7CisgIH0K
K30KKworZnVuY3Rpb24gY2hlY2tEYXRhVmlld0NvbnRlbnRzQW5kUGluZ1BvbmcodGVzdEtpbmQs
IHRyYW5zZmVyLCB0ZXN0Q2FzZSwgZXZlbnQpIHsKKyAgY2hlY2tEYXRhVmlld0NvbnRlbnRzKHRl
c3RLaW5kLCB0ZXN0Q2FzZSwgZXZlbnQpOworICB2YXIgdHJhbnNmZXJhYmxlcyA9IFtdOworICBp
ZiAodHJhbnNmZXIpIHsKKyAgICB0cmFuc2ZlcmFibGVzLnB1c2goZXZlbnQuZGF0YS5idWZmZXIp
OworICB9CisgIHRyeSB7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgY29tbWFuZDogJ3Bvbmcn
LCBkYXRhOiBldmVudC5kYXRhLCB0cmFuc2ZlcmFibGVzOiB0cmFuc2ZlcmFibGVzIH0sIHRyYW5z
ZmVyYWJsZXMpOworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxlZCgidW5leHBlY3RlZCBl
eGNlcHRpb246ICIgKyBlKTsKKyAgfQorfQorCitkZXNjcmlwdGlvbigiVGVzdHMgY29weWluZyBh
bmQgdHJhbnNmZXJyaW5nIHR5cGVkIGFycmF5cyBhbmQgQXJyYXlCdWZmZXJzIHRvIGFuZCBmcm9t
IHdvcmtlcnMiKTsKKworLy8gU2VlIHdoZXRoZXIgd29ya2VycyBhcmUgc3VwcG9ydGVkIGF0IGFs
bAoraWYgKHdpbmRvdy5Xb3JrZXIpIHsKKyAgLy8gU3RhcnQgdXAgdGhlIHdvcmtlcgorICB2YXIg
d29ya2VyID0gbmV3IFdvcmtlcignLi4vLi4vanMvdGVzdHMvdHlwZWQtYXJyYXktd29ya2VyLmpz
Jyk7CisgIHdvcmtlci5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOworCisgIC8vIFNlZSB3aGV0
aGVyIHRyYW5zZmVyYWJsZXMgYXJlIHN1cHBvcnRlZAorICB2YXIgYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKDE2KTsKKyAgdHJ5IHsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoeyBjb21tYW5kOiAn
aWdub3JlJywgZGF0YTogYnVmZmVyIH0sIFtidWZmZXJdKTsKKyAgICBpZiAoYnVmZmVyLmJ5dGVM
ZW5ndGggPiAwKQorICAgICAgdHJhbnNmZXJTdXBwb3J0ZWQgPSBmYWxzZTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgIHRyYW5zZmVyU3VwcG9ydGVkID0gZmFsc2U7CisgIH0KKworICAvLyBJdGVyYXRl
IGRvd24gdGhlIHRlc3RzLCBxdWV1ZWluZyB0aGVtIHVwCisgIGZvciAodmFyIGlpID0gMDsgaWkg
PCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHRlc3RDYXNlID0gdGVzdENhc2Vz
W2lpXTsKKyAgICB0ZXN0Q2FzZS5zdWJUZXN0cyA9IFtdOworICAgIHNldHVwVGVzdCh0ZXN0Q2Fz
ZSwgcnVuVGVzdFdpdGhEYXRhLmJpbmQobnVsbCwgJ2NvcHknKSwgY2hlY2tBcnJheXNFcXVhbC5i
aW5kKG51bGwsICdjb3B5JykpOworICAgIHNldHVwVGVzdCh0ZXN0Q2FzZSwgcnVuVGVzdFdpdGhE
YXRhLmJpbmQobnVsbCwgJ2NvcHlCdWZmZXInKSwgY2hlY2tCdWZmZXJDb250ZW50c0VxdWFsLmJp
bmQobnVsbCwgJ2NvcHkgQXJyYXlCdWZmZXInKSk7CisgICAgc2V0dXBUZXN0KHRlc3RDYXNlLCBy
dW5UZXN0V2l0aERhdGEuYmluZChudWxsLCAndHJhbnNmZXInKSwgY2hlY2tBcnJheXNFcXVhbC5i
aW5kKG51bGwsICd0cmFuc2ZlcicpKTsKKyAgICBzZXR1cFRlc3QodGVzdENhc2UsIHJ1blRlc3RX
aXRoRGF0YS5iaW5kKG51bGwsICd0cmFuc2ZlckJ1ZmZlcicpLCBjaGVja0J1ZmZlckNvbnRlbnRz
RXF1YWwuYmluZChudWxsLCAndHJhbnNmZXIgQXJyYXlCdWZmZXInKSk7CisKKyAgICAvLyBUaGVz
ZSB0d28gbXVzdCBydW4gYmFjay10by1iYWNrCisgICAgc2V0dXBUZXN0KHRlc3RDYXNlLCBydW5U
ZXN0V2l0aERhdGEuYmluZChudWxsLCAnY29weScpLCBjaGVja0FycmF5c0VxdWFsQW5kUGluZ1Bv
bmcuYmluZChudWxsLCAnY29weScsIGZhbHNlKSk7CisgICAgc2V0dXBUZXN0KHRlc3RDYXNlLCBu
b29wLCBjaGVja0FycmF5c0VxdWFsLmJpbmQobnVsbCwgJ3BpbmctcG9uZyB3aXRoIGNvcHknKSk7
CisKKyAgICAvLyBUaGVzZSB0d28gbXVzdCBydW4gYmFjay10by1iYWNrCisgICAgc2V0dXBUZXN0
KHRlc3RDYXNlLCBydW5UZXN0V2l0aERhdGEuYmluZChudWxsLCAnY29weUJ1ZmZlcicpLCBjaGVj
a0J1ZmZlckNvbnRlbnRzRXF1YWxBbmRQaW5nUG9uZy5iaW5kKG51bGwsICdjb3B5IEFycmF5QnVm
ZmVyJywgZmFsc2UpKTsKKyAgICBzZXR1cFRlc3QodGVzdENhc2UsIG5vb3AsIGNoZWNrQnVmZmVy
Q29udGVudHNFcXVhbC5iaW5kKG51bGwsICdwaW5nLXBvbmcgd2l0aCBjb3B5JykpOworCisgICAg
Ly8gVGhlc2UgdHdvIG11c3QgcnVuIGJhY2stdG8tYmFjaworICAgIHNldHVwVGVzdCh0ZXN0Q2Fz
ZSwgcnVuVGVzdFdpdGhEYXRhLmJpbmQobnVsbCwgJ3RyYW5zZmVyJyksIGNoZWNrQXJyYXlzRXF1
YWxBbmRQaW5nUG9uZy5iaW5kKG51bGwsICd0cmFuc2ZlcicsIHRydWUpKTsKKyAgICBzZXR1cFRl
c3QodGVzdENhc2UsIG5vb3AsIGNoZWNrQXJyYXlzRXF1YWwuYmluZChudWxsLCAncGluZy1wb25n
IHdpdGggdHJhbnNmZXInKSk7CisKKyAgICAvLyBUaGVzZSB0d28gbXVzdCBydW4gYmFjay10by1i
YWNrCisgICAgc2V0dXBUZXN0KHRlc3RDYXNlLCBydW5UZXN0V2l0aERhdGEuYmluZChudWxsLCAn
dHJhbnNmZXJCdWZmZXInKSwgY2hlY2tCdWZmZXJDb250ZW50c0VxdWFsQW5kUGluZ1BvbmcuYmlu
ZChudWxsLCAndHJhbnNmZXIgQXJyYXlCdWZmZXInLCBmYWxzZSkpOworICAgIHNldHVwVGVzdCh0
ZXN0Q2FzZSwgbm9vcCwgY2hlY2tCdWZmZXJDb250ZW50c0VxdWFsLmJpbmQobnVsbCwgJ3Bpbmct
cG9uZyB3aXRoIHRyYW5zZmVyJykpOworCisgICAgdGVzdFF1ZXVlLnB1c2godGVzdENhc2UpOwor
CisgICAgLy8gQWRkIGp1c3QgYSBjb3VwbGUgb2YgRGF0YVZpZXcgdGVzdHM7IHRoZSBiZWhhdmlv
ciBvZiB0aGF0IHZpZXcgdHlwZSBpcyB0aG9yb3VnaGx5IHRlc3RlZCBlbHNld2hlcmUKKyAgICBp
ZiAodGVzdENhc2UubmFtZSA9PSAiRmxvYXQzMkFycmF5IiB8fCB0ZXN0Q2FzZS5uYW1lID09ICJJ
bnQzMkFycmF5IikgeworICAgICAgdmFyIHN1YlR5cGVOYW1lID0gKHRlc3RDYXNlLm5hbWUgPT0g
IkZsb2F0MzJBcnJheSIgPyAiRmxvYXQzMiIgOiAiSW50MzIiKTsKKyAgICAgIHZhciBkYXRhVmll
d1Rlc3RDYXNlID0geyBuYW1lOiAiRGF0YVZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YlR5cGU6IHN1YlR5cGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnRTaXplSW5CeXRlczogdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RWYWx1ZXM6IHRlc3RDYXNlLnRlc3RWYWx1
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRWYWx1ZXM6IHRlc3RD
YXNlLmV4cGVjdGVkVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRl
c3RzOiBbXSB9OworICAgICAgc2V0dXBUZXN0KGRhdGFWaWV3VGVzdENhc2UsIHJ1blRlc3RXaXRo
RGF0YS5iaW5kKG51bGwsICdjb3B5JyksIGNoZWNrRGF0YVZpZXdDb250ZW50cy5iaW5kKG51bGws
ICdjb3B5JykpOworICAgICAgc2V0dXBUZXN0KGRhdGFWaWV3VGVzdENhc2UsIHJ1blRlc3RXaXRo
RGF0YS5iaW5kKG51bGwsICd0cmFuc2ZlcicpLCBjaGVja0RhdGFWaWV3Q29udGVudHMuYmluZChu
dWxsLCAndHJhbnNmZXInKSk7CisKKyAgICAgIC8vIFRoZXNlIHR3byBtdXN0IHJ1biBiYWNrLXRv
LWJhY2sKKyAgICAgIHNldHVwVGVzdChkYXRhVmlld1Rlc3RDYXNlLCBydW5UZXN0V2l0aERhdGEu
YmluZChudWxsLCAnY29weScpLCBjaGVja0RhdGFWaWV3Q29udGVudHNBbmRQaW5nUG9uZy5iaW5k
KG51bGwsICdjb3B5JywgZmFsc2UpKTsKKyAgICAgIHNldHVwVGVzdChkYXRhVmlld1Rlc3RDYXNl
LCBub29wLCBjaGVja0RhdGFWaWV3Q29udGVudHMuYmluZChudWxsLCAncGluZy1wb25nIHdpdGgg
Y29weScpKTsKKworICAgICAgLy8gVGhlc2UgdHdvIG11c3QgcnVuIGJhY2stdG8tYmFjaworICAg
ICAgc2V0dXBUZXN0KGRhdGFWaWV3VGVzdENhc2UsIHJ1blRlc3RXaXRoRGF0YS5iaW5kKG51bGws
ICd0cmFuc2ZlcicpLCBjaGVja0RhdGFWaWV3Q29udGVudHNBbmRQaW5nUG9uZy5iaW5kKG51bGws
ICd0cmFuc2ZlcicsIGZhbHNlKSk7CisgICAgICBzZXR1cFRlc3QoZGF0YVZpZXdUZXN0Q2FzZSwg
bm9vcCwgY2hlY2tEYXRhVmlld0NvbnRlbnRzLmJpbmQobnVsbCwgJ3BpbmctcG9uZyB3aXRoIHRy
YW5zZmVyJykpOworCisgICAgICB0ZXN0UXVldWUucHVzaChkYXRhVmlld1Rlc3RDYXNlKTsKKyAg
ICB9CisgIH0KKworICAvLyBLaWNrIHRoaW5ncyBvZmYKKyAgdGVzdFF1ZXVlWzBdLnN1YlRlc3Rz
WzBdLnJ1bm5lcigpOworfSBlbHNlIHsKKyAgZGVidWcoIldvcmtlcnMgbm90IHN1cHBvcnRlZCAt
LSBza2lwcGluZyB0ZXN0Iik7CisgIGZpbmlzaFRlc3QoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3VuaWZvcm1zL2dsLXVuaWZvcm0tYXJyYXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9nbC11bmlmb3JtLWFy
cmF5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZmRlOTZkODRmYTM3ZmZmZjNhMGZkOWM4MTA5NmM3MmNk
M2IxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9nbC11bmlmb3JtLWFycmF5cy5odG1s
CkBAIC0wLDAgKzEsNzM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWln
aHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KKyAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgIHZvaWQgbWFpbigp
CisgICAgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgfQorPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHVuaWZvcm0gJCh0eXBlKSBjb2xvclsz
XTsKKyAgICB2b2lkIG1haW4oKQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChj
b2xvclswXSQoZWxlbSksIGNvbG9yWzFdJChlbGVtKSwgY29sb3JbMl0kKGVsZW0pLCAxKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIzMDAiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4KKyAgICAjdmVyc2lvbiAzMDAgZXMKKyAgICBpbiB2ZWM0IGFfcG9zaXRpb247Cisg
ICAgdm9pZCBtYWluKCkKKyAgICB7CisgICAgICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsK
KyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlcjMwMCIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CisgICAgI3ZlcnNpb24gMzAwIGVzCisgICAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisgICAgdW5pZm9ybSAkKHR5cGUpIGNvbG9yWzNdOworICAgIG91dCB2ZWM0IG9f
RnJhZ0NvbG9yOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBvX0ZyYWdDb2xvciA9
IHZlYzQoY29sb3JbMF0kKGVsZW0pLCBjb2xvclsxXSQoZWxlbSksIGNvbG9yWzJdJChlbGVtKSwg
MSk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oKTsKK2RlYnVnKCIiKTsKKy8vIE1heEludDMyIGlzIDJeMzItMS4gV2UgbmVlZCArMSBvZiB0
aGF0IHRvIHRlc3Qgb3ZlcmZsb3cgY29uZGl0aW9ucy4KK3ZhciBNYXhJbnQzMlBsdXNPbmUgPSA0
Mjk0OTY3Mjk2OwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCitjb25zdCBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXRE
ZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOworCitsZXQgW3ZFbGVtSWQsIGZFbGVtSWRdID0gWyJ2
c2hhZGVyIiwgImZzaGFkZXIiXTsKK2lmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgIFt2RWxl
bUlkLCBmRWxlbUlkXSA9IFsidnNoYWRlcjMwMCIsICJmc2hhZGVyMzAwIl07Cit9CisKK3ZhciB2
U3JjID0gd3R1LmdldFNjcmlwdCh2RWxlbUlkKS50cmltKCk7Cit2YXIgZlRlbXBsYXRlID0gd3R1
LmdldFNjcmlwdChmRWxlbUlkKS50cmltKCk7CisKK2NvbnN0IHR5cGVJbmZvcyA9IFsKKyAgeyB0
eXBlOiAnZmxvYXQnLAorICAgIGpzVHlwZU9mOiAnbnVtYmVyJywKKyAgICBzZXR0ZXI6ICd1bmlm
b3JtMWZ2JywKKyAgICBlbGVtOiAnJywKKyAgICBudW1TcmNWYWx1ZXM6IDMsCisgICAgaW52YWxp
ZFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICBnbC51bmlmb3JtMmZ2KGxvYywgWzEsIDJdKTsK
KyAgICB9LAorICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1ZXMp
IHsKKyAgICAgIHJldHVybiBzcmNWYWx1ZXNbaW5kZXhdLnRvU3RyaW5nKCk7CisgICAgfSwKKyAg
ICByZXR1cm5WYWx1ZUFzU3RyaW5nOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcmV0dXJuIHZh
bHVlID09PSBudWxsID8gJ251bGwnIDogdmFsdWUudG9TdHJpbmcoKTsKKyAgICB9LAorICAgIGNo
ZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09
ICdudW1iZXInOworICAgIH0sCisgICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24odHlwZUluZm8sIGlu
ZGV4LCB2YWx1ZSkgeworICAgICAgcmV0dXJuIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleF0gPT0g
dmFsdWU7CisgICAgfSwKKyAgICBzcmNWYWx1ZXM6IFsxNiwgMTUsIDE0XSwKKyAgICBzcmNWYWx1
ZXNMZXNzOiBbXSwKKyAgICBzcmNWYWx1ZXNMZXNzTXVsdGlwbGU6IFsxNl0sCisgICAgc3JjVmFs
dWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTNdLAorICAgIHNyY1ZhbHVlc05vbk11bHRp
cGxlOiBudWxsLAorICB9LAorICB7IHR5cGU6ICd2ZWMyJywKKyAgICBqc1R5cGVPZjogJ0Zsb2F0
MzJBcnJheScsCisgICAgc2V0dGVyOiAndW5pZm9ybTJmdicsCisgICAgZWxlbTogJ1sxXScsCisg
ICAgbnVtU3JjVmFsdWVzOiAzLAorICAgIGludmFsaWRTZXQ6IGZ1bmN0aW9uKGxvYykgeworICAg
ICAgZ2wudW5pZm9ybTFmdihsb2MsIFsyXSk7CisgICAgfSwKKyAgICBpbGxlZ2FsU2V0OiBmdW5j
dGlvbihsb2MpIHsKKyAgICAgIGdsLnVuaWZvcm0xZnYobG9jLCAyKTsKKyAgICB9LAorICAgIHNy
Y1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgIHJldHVy
biAiWyIgKyBzcmNWYWx1ZXNbaW5kZXggKiAyICsgMF0udG9TdHJpbmcoKSArICIsICIgKworICAg
ICAgICAgICAgICAgICAgIHNyY1ZhbHVlc1tpbmRleCAqIDIgKyAxXS50b1N0cmluZygpICsgIl0i
OworICAgIH0sCisgICAgcmV0dXJuVmFsdWVBc1N0cmluZzogZnVuY3Rpb24odmFsdWUpIHsKKyAg
ICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6ICgiWyIgKyB2YWx1ZVswXSArICIs
ICIgKyB2YWx1ZVsxXSArICJdIik7CisgICAgfSwKKyAgICBjaGVja1R5cGU6IGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgICByZXR1cm4gdmFsdWUgJiYKKyAgICAgICAgICAgICB0eXBlb2YgdmFsdWUu
bGVuZ3RoID09PSAnbnVtYmVyJyAmJgorICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PSAyOwor
ICAgIH0sCisgICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24odHlwZUluZm8sIGluZGV4LCB2YWx1ZSkg
eworICAgICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmCisgICAgICAgICAgICAgdHlwZUluZm8u
c3JjVmFsdWVzW2luZGV4ICogMiArIDBdID09IHZhbHVlWzBdICYmCisgICAgICAgICAgICAgdHlw
ZUluZm8uc3JjVmFsdWVzW2luZGV4ICogMiArIDFdID09IHZhbHVlWzFdOworICAgIH0sCisgICAg
c3JjVmFsdWVzOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMV0sCisgICAgc3JjVmFsdWVzTGVzczog
WzE2XSwKKyAgICBzcmNWYWx1ZXNMZXNzTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxM10sCisgICAg
c3JjVmFsdWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDldLAor
ICAgIHNyY1ZhbHVlc05vbk11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTBdLAor
ICB9LAorICB7IHR5cGU6ICd2ZWMzJywKKyAgICBqc1R5cGVPZjogJ0Zsb2F0MzJBcnJheScsCisg
ICAgc2V0dGVyOiAndW5pZm9ybTNmdicsCisgICAgZWxlbTogJ1syXScsCisgICAgbnVtU3JjVmFs
dWVzOiAzLAorICAgIGludmFsaWRTZXQ6IGZ1bmN0aW9uKGxvYykgeworICAgICAgZ2wudW5pZm9y
bTFmdihsb2MsIFsyXSk7CisgICAgfSwKKyAgICBpbGxlZ2FsU2V0OiBmdW5jdGlvbihsb2MpIHsK
KyAgICAgIGdsLnVuaWZvcm0xZnYobG9jLCAyKTsKKyAgICB9LAorICAgIHNyY1ZhbHVlQXNTdHJp
bmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgIHJldHVybiAiWyIgKyBzcmNW
YWx1ZXNbaW5kZXggKiAzICsgMF0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAgICAg
ICAgIHNyY1ZhbHVlc1tpbmRleCAqIDMgKyAxXS50b1N0cmluZygpICsgIiwgIiArCisgICAgICAg
ICAgICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogMyArIDJdLnRvU3RyaW5nKCkgKyAiXSI7Cisg
ICAgfSwKKyAgICByZXR1cm5WYWx1ZUFzU3RyaW5nOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAg
cmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDoKKyAgICAgICAgICAoIlsiICsgdmFsdWVb
MF0gKyAiLCAiICsgdmFsdWVbMV0gKyAiLCAiICsgdmFsdWVbMl0gKyAiXSIpOworICAgIH0sCisg
ICAgY2hlY2tUeXBlOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcmV0dXJuIHZhbHVlICYmCisg
ICAgICAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiYKKyAgICAgICAg
ICAgICB2YWx1ZS5sZW5ndGggPT0gMzsKKyAgICB9LAorICAgIGNoZWNrVmFsdWU6IGZ1bmN0aW9u
KHR5cGVJbmZvLCBpbmRleCwgdmFsdWUpIHsKKyAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAm
JgorICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDMgKyAwXSA9PSB2YWx1
ZVswXSAmJgorICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDMgKyAxXSA9
PSB2YWx1ZVsxXSAmJgorICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDMg
KyAyXSA9PSB2YWx1ZVsyXTsKKyAgICB9LAorICAgIHNyY1ZhbHVlczogWzE2LCAxNSwgMTQsIDEz
LCAxMiwgMTEsIDEwLCA5LCA4XSwKKyAgICBzcmNWYWx1ZXNMZXNzOiBbMTYsIDE1XSwKKyAgICBz
cmNWYWx1ZXNMZXNzTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExXSwKKyAgICBzcmNW
YWx1ZXNNb3JlTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywg
NiwgNSwgNCwgMywgMl0sCisgICAgc3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAx
MywgMTIsIDExLCAxMCwgOSwgOCwgN10sCisgIH0sCisgIHsgdHlwZTogJ3ZlYzQnLAorICAgIGpz
VHlwZU9mOiAnRmxvYXQzMkFycmF5JywKKyAgICBzZXR0ZXI6ICd1bmlmb3JtNGZ2JywKKyAgICBl
bGVtOiAnWzNdJywKKyAgICBudW1TcmNWYWx1ZXM6IDMsCisgICAgaW52YWxpZFNldDogZnVuY3Rp
b24obG9jKSB7CisgICAgICBnbC51bmlmb3JtMWZ2KGxvYywgWzJdKTsKKyAgICB9LAorICAgIGls
bGVnYWxTZXQ6IGZ1bmN0aW9uKGxvYykgeworICAgICAgZ2wudW5pZm9ybTFmdihsb2MsIDIpOwor
ICAgIH0sCisgICAgc3JjVmFsdWVBc1N0cmluZzogZnVuY3Rpb24oaW5kZXgsIHNyY1ZhbHVlcykg
eworICAgICAgcmV0dXJuICJbIiArIHNyY1ZhbHVlc1tpbmRleCAqIDQgKyAwXS50b1N0cmluZygp
ICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogNCArIDFdLnRv
U3RyaW5nKCkgKyAiLCAiICsKKyAgICAgICAgICAgICAgICAgICBzcmNWYWx1ZXNbaW5kZXggKiA0
ICsgMl0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAgICAgICAgIHNyY1ZhbHVlc1tp
bmRleCAqIDQgKyAzXS50b1N0cmluZygpICsgIl0iOworICAgIH0sCisgICAgcmV0dXJuVmFsdWVB
c1N0cmluZzogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/
ICdudWxsJyA6CisgICAgICAgICAgKCJbIiArIHZhbHVlWzBdICsgIiwgIiArIHZhbHVlWzFdICsK
KyAgICAgICAgICAgIiwgIiArIHZhbHVlWzJdICsgIiwgIiArIHZhbHVlWzNdICsgIl0iKTsKKyAg
ICB9LAorICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgIHJldHVybiB2YWx1
ZSAmJgorICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmCisg
ICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09IDQ7CisgICAgfSwKKyAgICBjaGVja1ZhbHVlOiBm
dW5jdGlvbih0eXBlSW5mbywgaW5kZXgsIHZhbHVlKSB7CisgICAgICByZXR1cm4gdmFsdWUgIT09
IG51bGwgJiYKKyAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiA0ICsgMF0g
PT0gdmFsdWVbMF0gJiYKKyAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiA0
ICsgMV0gPT0gdmFsdWVbMV0gJiYKKyAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5k
ZXggKiA0ICsgMl0gPT0gdmFsdWVbMl0gJiYKKyAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1
ZXNbaW5kZXggKiA0ICsgM10gPT0gdmFsdWVbM107CisgICAgfSwKKyAgICBzcmNWYWx1ZXM6IFsx
NiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNV0sCisgICAgc3JjVmFsdWVz
TGVzczogWzE2LCAxNSwgMTRdLAorICAgIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2LCAxNSwg
MTQsIDEzLCAxMiwgMTEsIDEwLCA5XSwKKyAgICBzcmNWYWx1ZXNNb3JlTXVsdGlwbGU6IFsxNiwg
MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMV0sCisgICAg
c3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwg
NywgNiwgNSwgNF0sCisgIH0KK107CisKK2lmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgIGNv
bnN0IG1vcmUgPSBbCisgICAgeyB0eXBlOiAnaW50JywKKyAgICAgIGpzVHlwZU9mOiAnbnVtYmVy
JywKKyAgICAgIHNldHRlcjogJ3VuaWZvcm0xaXYnLAorICAgICAgZWxlbTogJycsCisgICAgICBu
dW1TcmNWYWx1ZXM6IDMsCisgICAgICBpbnZhbGlkU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAg
ICAgZ2wudW5pZm9ybTJpdihsb2MsIFsxLCAyXSk7CisgICAgICB9LAorICAgICAgc3JjVmFsdWVB
c1N0cmluZzogZnVuY3Rpb24oaW5kZXgsIHNyY1ZhbHVlcykgeworICAgICAgICByZXR1cm4gc3Jj
VmFsdWVzW2luZGV4XS50b1N0cmluZygpOworICAgICAgfSwKKyAgICAgIHJldHVyblZhbHVlQXNT
dHJpbmc6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/
ICdudWxsJyA6IHZhbHVlLnRvU3RyaW5nKCk7CisgICAgICB9LAorICAgICAgY2hlY2tUeXBlOiBm
dW5jdGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVy
JzsKKyAgICAgIH0sCisgICAgICBjaGVja1ZhbHVlOiBmdW5jdGlvbih0eXBlSW5mbywgaW5kZXgs
IHZhbHVlKSB7CisgICAgICAgIHJldHVybiB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXhdID09IHZh
bHVlOworICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlczogWzE2LCAxNSwgMTRdLAorICAgICAgc3Jj
VmFsdWVzTGVzczogW10sCisgICAgICBzcmNWYWx1ZXNMZXNzTXVsdGlwbGU6IFsxNl0sCisgICAg
ICBzcmNWYWx1ZXNNb3JlTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxM10sCisgICAgICBzcmNWYWx1
ZXNOb25NdWx0aXBsZTogbnVsbCwKKyAgICB9LAorICAgIHsgdHlwZTogJ2l2ZWMyJywKKyAgICAg
IGpzVHlwZU9mOiAnSW50MzJBcnJheScsCisgICAgICBzZXR0ZXI6ICd1bmlmb3JtMml2JywKKyAg
ICAgIGVsZW06ICdbMV0nLAorICAgICAgbnVtU3JjVmFsdWVzOiAzLAorICAgICAgaW52YWxpZFNl
dDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaXYobG9jLCBbMl0pOworICAg
ICAgfSwKKyAgICAgIGlsbGVnYWxTZXQ6IGZ1bmN0aW9uKGxvYykgeworICAgICAgICBnbC51bmlm
b3JtMWl2KGxvYywgMik7CisgICAgICB9LAorICAgICAgc3JjVmFsdWVBc1N0cmluZzogZnVuY3Rp
b24oaW5kZXgsIHNyY1ZhbHVlcykgeworICAgICAgICByZXR1cm4gIlsiICsgc3JjVmFsdWVzW2lu
ZGV4ICogMiArIDBdLnRvU3RyaW5nKCkgKyAiLCAiICsKKyAgICAgICAgICAgICAgICAgICAgIHNy
Y1ZhbHVlc1tpbmRleCAqIDIgKyAxXS50b1N0cmluZygpICsgIl0iOworICAgICAgfSwKKyAgICAg
IHJldHVyblZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2
YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6ICgiWyIgKyB2YWx1ZVswXSArICIsICIgKyB2YWx1ZVsx
XSArICJdIik7CisgICAgICB9LAorICAgICAgY2hlY2tUeXBlOiBmdW5jdGlvbih2YWx1ZSkgewor
ICAgICAgICByZXR1cm4gdmFsdWUgJiYKKyAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5sZW5n
dGggPT09ICdudW1iZXInICYmCisgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT0gMjsKKyAg
ICAgIH0sCisgICAgICBjaGVja1ZhbHVlOiBmdW5jdGlvbih0eXBlSW5mbywgaW5kZXgsIHZhbHVl
KSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJgorICAgICAgICAgICAgICAgdHlw
ZUluZm8uc3JjVmFsdWVzW2luZGV4ICogMiArIDBdID09IHZhbHVlWzBdICYmCisgICAgICAgICAg
ICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiAyICsgMV0gPT0gdmFsdWVbMV07CisgICAg
ICB9LAorICAgICAgc3JjVmFsdWVzOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMV0sCisgICAgICBz
cmNWYWx1ZXNMZXNzOiBbMTZdLAorICAgICAgc3JjVmFsdWVzTGVzc011bHRpcGxlOiBbMTYsIDE1
LCAxNCwgMTNdLAorICAgICAgc3JjVmFsdWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMs
IDEyLCAxMSwgMTAsIDldLAorICAgICAgc3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUsIDE0
LCAxMywgMTIsIDExLCAxMF0sCisgICAgfSwKKyAgICB7IHR5cGU6ICdpdmVjMycsCisgICAgICBq
c1R5cGVPZjogJ0ludDMyQXJyYXknLAorICAgICAgc2V0dGVyOiAndW5pZm9ybTNpdicsCisgICAg
ICBlbGVtOiAnWzJdJywKKyAgICAgIG51bVNyY1ZhbHVlczogMywKKyAgICAgIGludmFsaWRTZXQ6
IGZ1bmN0aW9uKGxvYykgeworICAgICAgICBnbC51bmlmb3JtMWl2KGxvYywgWzJdKTsKKyAgICAg
IH0sCisgICAgICBpbGxlZ2FsU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9y
bTFpdihsb2MsIDIpOworICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9u
KGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuICJbIiArIHNyY1ZhbHVlc1tpbmRl
eCAqIDMgKyAwXS50b1N0cmluZygpICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICBzcmNW
YWx1ZXNbaW5kZXggKiAzICsgMV0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAgICAg
ICAgICAgc3JjVmFsdWVzW2luZGV4ICogMyArIDJdLnRvU3RyaW5nKCkgKyAiXSI7CisgICAgICB9
LAorICAgICAgcmV0dXJuVmFsdWVBc1N0cmluZzogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAg
cmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDoKKyAgICAgICAgICAgICgiWyIgKyB2YWx1
ZVswXSArICIsICIgKyB2YWx1ZVsxXSArICIsICIgKyB2YWx1ZVsyXSArICJdIik7CisgICAgICB9
LAorICAgICAgY2hlY2tUeXBlOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFs
dWUgJiYKKyAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYm
CisgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT0gMzsKKyAgICAgIH0sCisgICAgICBjaGVj
a1ZhbHVlOiBmdW5jdGlvbih0eXBlSW5mbywgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZSAhPT0gbnVsbCAmJgorICAgICAgICAgICAgICAgdHlwZUluZm8uc3JjVmFsdWVzW2lu
ZGV4ICogMyArIDBdID09IHZhbHVlWzBdICYmCisgICAgICAgICAgICAgICB0eXBlSW5mby5zcmNW
YWx1ZXNbaW5kZXggKiAzICsgMV0gPT0gdmFsdWVbMV0gJiYKKyAgICAgICAgICAgICAgIHR5cGVJ
bmZvLnNyY1ZhbHVlc1tpbmRleCAqIDMgKyAyXSA9PSB2YWx1ZVsyXTsKKyAgICAgIH0sCisgICAg
ICBzcmNWYWx1ZXM6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOF0sCisgICAgICBz
cmNWYWx1ZXNMZXNzOiBbMTYsIDE1XSwKKyAgICAgIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2
LCAxNSwgMTQsIDEzLCAxMiwgMTFdLAorICAgICAgc3JjVmFsdWVzTW9yZU11bHRpcGxlOiBbMTYs
IDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDJdLAorICAgICAg
c3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwg
N10sCisgICAgfSwKKyAgICB7IHR5cGU6ICdpdmVjNCcsCisgICAgICBqc1R5cGVPZjogJ0ludDMy
QXJyYXknLAorICAgICAgc2V0dGVyOiAndW5pZm9ybTRpdicsCisgICAgICBlbGVtOiAnWzNdJywK
KyAgICAgIG51bVNyY1ZhbHVlczogMywKKyAgICAgIGludmFsaWRTZXQ6IGZ1bmN0aW9uKGxvYykg
eworICAgICAgICBnbC51bmlmb3JtMWl2KGxvYywgWzJdKTsKKyAgICAgIH0sCisgICAgICBpbGxl
Z2FsU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFpdihsb2MsIDIpOwor
ICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1
ZXMpIHsKKyAgICAgICAgcmV0dXJuICJbIiArIHNyY1ZhbHVlc1tpbmRleCAqIDQgKyAwXS50b1N0
cmluZygpICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICBzcmNWYWx1ZXNbaW5kZXggKiA0
ICsgMV0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAgICAgICAgICAgc3JjVmFsdWVz
W2luZGV4ICogNCArIDJdLnRvU3RyaW5nKCkgKyAiLCAiICsKKyAgICAgICAgICAgICAgICAgICAg
IHNyY1ZhbHVlc1tpbmRleCAqIDQgKyAzXS50b1N0cmluZygpICsgIl0iOworICAgICAgfSwKKyAg
ICAgIHJldHVyblZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6CisgICAgICAgICAgICAoIlsiICsgdmFsdWVbMF0g
KyAiLCAiICsgdmFsdWVbMV0gKworICAgICAgICAgICAgICIsICIgKyB2YWx1ZVsyXSArICIsICIg
KyB2YWx1ZVszXSArICJdIik7CisgICAgICB9LAorICAgICAgY2hlY2tUeXBlOiBmdW5jdGlvbih2
YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgJiYKKyAgICAgICAgICAgICAgIHR5cGVvZiB2
YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmCisgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGgg
PT0gNDsKKyAgICAgIH0sCisgICAgICBjaGVja1ZhbHVlOiBmdW5jdGlvbih0eXBlSW5mbywgaW5k
ZXgsIHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJgorICAgICAgICAg
ICAgICAgdHlwZUluZm8uc3JjVmFsdWVzW2luZGV4ICogNCArIDBdID09IHZhbHVlWzBdICYmCisg
ICAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiA0ICsgMV0gPT0gdmFsdWVb
MV0gJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDQgKyAyXSA9
PSB2YWx1ZVsyXSAmJgorICAgICAgICAgICAgICAgdHlwZUluZm8uc3JjVmFsdWVzW2luZGV4ICog
NCArIDNdID09IHZhbHVlWzNdOworICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlczogWzE2LCAxNSwg
MTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1XSwKKyAgICAgIHNyY1ZhbHVlc0xlc3M6
IFsxNiwgMTUsIDE0XSwKKyAgICAgIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2LCAxNSwgMTQs
IDEzLCAxMiwgMTEsIDEwLCA5XSwKKyAgICAgIHNyY1ZhbHVlc01vcmVNdWx0aXBsZTogWzE2LCAx
NSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxXSwKKyAgICAg
IHNyY1ZhbHVlc05vbk11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgs
IDcsIDYsIDUsIDRdLAorICAgIH0sCisKKworICAgIHsgdHlwZTogJ3VpbnQnLAorICAgICAganNU
eXBlT2Y6ICdudW1iZXInLAorICAgICAgc2V0dGVyOiAndW5pZm9ybTF1aXYnLAorICAgICAgZWxl
bTogJycsCisgICAgICBudW1TcmNWYWx1ZXM6IDMsCisgICAgICBpbnZhbGlkU2V0OiBmdW5jdGlv
bihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9ybTJ1aXYobG9jLCBbMSwgMl0pOworICAgICAgfSwK
KyAgICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAg
ICAgICAgcmV0dXJuIHNyY1ZhbHVlc1tpbmRleF0udG9TdHJpbmcoKTsKKyAgICAgIH0sCisgICAg
ICByZXR1cm5WYWx1ZUFzU3RyaW5nOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4g
dmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB2YWx1ZS50b1N0cmluZygpOworICAgICAgfSwKKyAg
ICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiB2
YWx1ZSA9PT0gJ251bWJlcic7CisgICAgICB9LAorICAgICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24o
dHlwZUluZm8sIGluZGV4LCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdHlwZUluZm8uc3JjVmFs
dWVzW2luZGV4XSA9PSB2YWx1ZTsKKyAgICAgIH0sCisgICAgICBzcmNWYWx1ZXM6IFsxNiwgMTUs
IDE0XSwKKyAgICAgIHNyY1ZhbHVlc0xlc3M6IFtdLAorICAgICAgc3JjVmFsdWVzTGVzc011bHRp
cGxlOiBbMTZdLAorICAgICAgc3JjVmFsdWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTNd
LAorICAgICAgc3JjVmFsdWVzTm9uTXVsdGlwbGU6IG51bGwsCisgICAgfSwKKyAgICB7IHR5cGU6
ICd1dmVjMicsCisgICAgICBqc1R5cGVPZjogJ1VpbnQzMkFycmF5JywKKyAgICAgIHNldHRlcjog
J3VuaWZvcm0ydWl2JywKKyAgICAgIGVsZW06ICdbMV0nLAorICAgICAgbnVtU3JjVmFsdWVzOiAz
LAorICAgICAgaW52YWxpZFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGdsLnVuaWZvcm0x
dWl2KGxvYywgWzJdKTsKKyAgICAgIH0sCisgICAgICBpbGxlZ2FsU2V0OiBmdW5jdGlvbihsb2Mp
IHsKKyAgICAgICAgZ2wudW5pZm9ybTF1aXYobG9jLCAyKTsKKyAgICAgIH0sCisgICAgICBzcmNW
YWx1ZUFzU3RyaW5nOiBmdW5jdGlvbihpbmRleCwgc3JjVmFsdWVzKSB7CisgICAgICAgIHJldHVy
biAiWyIgKyBzcmNWYWx1ZXNbaW5kZXggKiAyICsgMF0udG9TdHJpbmcoKSArICIsICIgKworICAg
ICAgICAgICAgICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogMiArIDFdLnRvU3RyaW5nKCkgKyAi
XSI7CisgICAgICB9LAorICAgICAgcmV0dXJuVmFsdWVBc1N0cmluZzogZnVuY3Rpb24odmFsdWUp
IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDogKCJbIiArIHZhbHVl
WzBdICsgIiwgIiArIHZhbHVlWzFdICsgIl0iKTsKKyAgICAgIH0sCisgICAgICBjaGVja1R5cGU6
IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAmJgorICAgICAgICAgICAg
ICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiYKKyAgICAgICAgICAgICAgIHZh
bHVlLmxlbmd0aCA9PSAyOworICAgICAgfSwKKyAgICAgIGNoZWNrVmFsdWU6IGZ1bmN0aW9uKHR5
cGVJbmZvLCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYm
CisgICAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiAyICsgMF0gPT0gdmFs
dWVbMF0gJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDIgKyAx
XSA9PSB2YWx1ZVsxXTsKKyAgICAgIH0sCisgICAgICBzcmNWYWx1ZXM6IFsxNiwgMTUsIDE0LCAx
MywgMTIsIDExXSwKKyAgICAgIHNyY1ZhbHVlc0xlc3M6IFsxNl0sCisgICAgICBzcmNWYWx1ZXNM
ZXNzTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxM10sCisgICAgICBzcmNWYWx1ZXNNb3JlTXVsdGlw
bGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOV0sCisgICAgICBzcmNWYWx1ZXNOb25N
dWx0aXBsZTogWzE2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwXSwKKyAgICB9LAorICAgIHsgdHlw
ZTogJ3V2ZWMzJywKKyAgICAgIGpzVHlwZU9mOiAnVWludDMyQXJyYXknLAorICAgICAgc2V0dGVy
OiAndW5pZm9ybTN1aXYnLAorICAgICAgZWxlbTogJ1syXScsCisgICAgICBudW1TcmNWYWx1ZXM6
IDMsCisgICAgICBpbnZhbGlkU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9y
bTF1aXYobG9jLCBbMl0pOworICAgICAgfSwKKyAgICAgIGlsbGVnYWxTZXQ6IGZ1bmN0aW9uKGxv
YykgeworICAgICAgICBnbC51bmlmb3JtMXVpdihsb2MsIDIpOworICAgICAgfSwKKyAgICAgIHNy
Y1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgICAgcmV0
dXJuICJbIiArIHNyY1ZhbHVlc1tpbmRleCAqIDMgKyAwXS50b1N0cmluZygpICsgIiwgIiArCisg
ICAgICAgICAgICAgICAgICAgICBzcmNWYWx1ZXNbaW5kZXggKiAzICsgMV0udG9TdHJpbmcoKSAr
ICIsICIgKworICAgICAgICAgICAgICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogMyArIDJdLnRv
U3RyaW5nKCkgKyAiXSI7CisgICAgICB9LAorICAgICAgcmV0dXJuVmFsdWVBc1N0cmluZzogZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDoK
KyAgICAgICAgICAgICgiWyIgKyB2YWx1ZVswXSArICIsICIgKyB2YWx1ZVsxXSArICIsICIgKyB2
YWx1ZVsyXSArICJdIik7CisgICAgICB9LAorICAgICAgY2hlY2tUeXBlOiBmdW5jdGlvbih2YWx1
ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgJiYKKyAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1
ZS5sZW5ndGggPT09ICdudW1iZXInICYmCisgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT0g
MzsKKyAgICAgIH0sCisgICAgICBjaGVja1ZhbHVlOiBmdW5jdGlvbih0eXBlSW5mbywgaW5kZXgs
IHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJgorICAgICAgICAgICAg
ICAgdHlwZUluZm8uc3JjVmFsdWVzW2luZGV4ICogMyArIDBdID09IHZhbHVlWzBdICYmCisgICAg
ICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiAzICsgMV0gPT0gdmFsdWVbMV0g
JiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDMgKyAyXSA9PSB2
YWx1ZVsyXTsKKyAgICAgIH0sCisgICAgICBzcmNWYWx1ZXM6IFsxNiwgMTUsIDE0LCAxMywgMTIs
IDExLCAxMCwgOSwgOF0sCisgICAgICBzcmNWYWx1ZXNMZXNzOiBbMTYsIDE1XSwKKyAgICAgIHNy
Y1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2LCAxNSwgMTQsIDEzLCAxMiwgMTFdLAorICAgICAgc3Jj
VmFsdWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcs
IDYsIDUsIDQsIDMsIDJdLAorICAgICAgc3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUsIDE0
LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgN10sCisgICAgfSwKKyAgICB7IHR5cGU6ICd1dmVjNCcs
CisgICAgICBqc1R5cGVPZjogJ1VpbnQzMkFycmF5JywKKyAgICAgIHNldHRlcjogJ3VuaWZvcm00
dWl2JywKKyAgICAgIGVsZW06ICdbM10nLAorICAgICAgbnVtU3JjVmFsdWVzOiAzLAorICAgICAg
aW52YWxpZFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGdsLnVuaWZvcm0xdWl2KGxvYywg
WzJdKTsKKyAgICAgIH0sCisgICAgICBpbGxlZ2FsU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAg
ICAgZ2wudW5pZm9ybTF1aXYobG9jLCAyKTsKKyAgICAgIH0sCisgICAgICBzcmNWYWx1ZUFzU3Ry
aW5nOiBmdW5jdGlvbihpbmRleCwgc3JjVmFsdWVzKSB7CisgICAgICAgIHJldHVybiAiWyIgKyBz
cmNWYWx1ZXNbaW5kZXggKiA0ICsgMF0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAg
ICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogNCArIDFdLnRvU3RyaW5nKCkgKyAiLCAiICsKKyAg
ICAgICAgICAgICAgICAgICAgIHNyY1ZhbHVlc1tpbmRleCAqIDQgKyAyXS50b1N0cmluZygpICsg
IiwgIiArCisgICAgICAgICAgICAgICAgICAgICBzcmNWYWx1ZXNbaW5kZXggKiA0ICsgM10udG9T
dHJpbmcoKSArICJdIjsKKyAgICAgIH0sCisgICAgICByZXR1cm5WYWx1ZUFzU3RyaW5nOiBmdW5j
dGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOgor
ICAgICAgICAgICAgKCJbIiArIHZhbHVlWzBdICsgIiwgIiArIHZhbHVlWzFdICsKKyAgICAgICAg
ICAgICAiLCAiICsgdmFsdWVbMl0gKyAiLCAiICsgdmFsdWVbM10gKyAiXSIpOworICAgICAgfSwK
KyAgICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
ICYmCisgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAnbnVtYmVyJyAmJgor
ICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09IDQ7CisgICAgICB9LAorICAgICAgY2hlY2tW
YWx1ZTogZnVuY3Rpb24odHlwZUluZm8sIGluZGV4LCB2YWx1ZSkgeworICAgICAgICByZXR1cm4g
dmFsdWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRl
eCAqIDQgKyAwXSA9PSB2YWx1ZVswXSAmJgorICAgICAgICAgICAgICAgdHlwZUluZm8uc3JjVmFs
dWVzW2luZGV4ICogNCArIDFdID09IHZhbHVlWzFdICYmCisgICAgICAgICAgICAgICB0eXBlSW5m
by5zcmNWYWx1ZXNbaW5kZXggKiA0ICsgMl0gPT0gdmFsdWVbMl0gJiYKKyAgICAgICAgICAgICAg
IHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleCAqIDQgKyAzXSA9PSB2YWx1ZVszXTsKKyAgICAgIH0s
CisgICAgICBzcmNWYWx1ZXM6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywg
NiwgNV0sCisgICAgICBzcmNWYWx1ZXNMZXNzOiBbMTYsIDE1LCAxNF0sCisgICAgICBzcmNWYWx1
ZXNMZXNzTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOV0sCisgICAgICBz
cmNWYWx1ZXNNb3JlTXVsdGlwbGU6IFsxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwg
NywgNiwgNSwgNCwgMywgMiwgMV0sCisgICAgICBzcmNWYWx1ZXNOb25NdWx0aXBsZTogWzE2LCAx
NSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0XSwKKyAgICB9LAorCisKKyAg
ICB7IHR5cGU6ICdib29sJywKKyAgICAgIGpzVHlwZU9mOiAnYm9vbGVhbicsCisgICAgICBzZXR0
ZXI6ICd1bmlmb3JtMWl2JywKKyAgICAgIGVsZW06ICcnLAorICAgICAgbnVtU3JjVmFsdWVzOiAz
LAorICAgICAgaW52YWxpZFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGdsLnVuaWZvcm0y
aXYobG9jLCBbMSwgMl0pOworICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0
aW9uKGluZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuIHNyY1ZhbHVlc1tpbmRleF0u
dG9TdHJpbmcoKTsKKyAgICAgIH0sCisgICAgICByZXR1cm5WYWx1ZUFzU3RyaW5nOiBmdW5jdGlv
bih2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiB2YWx1
ZS50b1N0cmluZygpOworICAgICAgfSwKKyAgICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUp
IHsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nOworICAgICAgfSwK
KyAgICAgIGNoZWNrVmFsdWU6IGZ1bmN0aW9uKHR5cGVJbmZvLCBpbmRleCwgdmFsdWUpIHsKKyAg
ICAgICAgcmV0dXJuIHR5cGVJbmZvLnNyY1ZhbHVlc1tpbmRleF0gPT0gdmFsdWU7CisgICAgICB9
LAorICAgICAgc3JjVmFsdWVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sCisgICAgICBzcmNWYWx1ZXNM
ZXNzOiBbXSwKKyAgICAgIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2XSwKKyAgICAgIHNyY1Zh
bHVlc01vcmVNdWx0aXBsZTogWzE2LCAxNSwgMTQsIDEzXSwKKyAgICAgIHNyY1ZhbHVlc05vbk11
bHRpcGxlOiBudWxsLAorICAgIH0sCisgICAgeyB0eXBlOiAnYnZlYzInLAorICAgICAganNUeXBl
T2Y6ICdGbG9hdDMyQXJyYXknLAorICAgICAgc2V0dGVyOiAndW5pZm9ybTJmdicsCisgICAgICBl
bGVtOiAnWzFdJywKKyAgICAgIG51bVNyY1ZhbHVlczogMywKKyAgICAgIGludmFsaWRTZXQ6IGZ1
bmN0aW9uKGxvYykgeworICAgICAgICBnbC51bmlmb3JtMWl2KGxvYywgWzJdKTsKKyAgICAgIH0s
CisgICAgICBpbGxlZ2FsU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFp
dihsb2MsIDIpOworICAgICAgfSwKKyAgICAgIHNyY1ZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKGlu
ZGV4LCBzcmNWYWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuICJbIiArIHNyY1ZhbHVlc1tpbmRleCAq
IDIgKyAwXS50b1N0cmluZygpICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICBzcmNWYWx1
ZXNbaW5kZXggKiAyICsgMV0udG9TdHJpbmcoKSArICJdIjsKKyAgICAgIH0sCisgICAgICByZXR1
cm5WYWx1ZUFzU3RyaW5nOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUg
PT09IG51bGwgPyAnbnVsbCcgOiAoIlsiICsgdmFsdWVbMF0gKyAiLCAiICsgdmFsdWVbMV0gKyAi
XSIpOworICAgICAgfSwKKyAgICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlICYmCisgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUubGVuZ3RoID09
PSAnbnVtYmVyJyAmJgorICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09IDI7CisgICAgICB9
LAorICAgICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24odHlwZUluZm8sIGluZGV4LCB2YWx1ZSkgewor
ICAgICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZv
LnNyY1ZhbHVlc1tpbmRleCAqIDIgKyAwXSA9PSB2YWx1ZVswXSAmJgorICAgICAgICAgICAgICAg
dHlwZUluZm8uc3JjVmFsdWVzW2luZGV4ICogMiArIDFdID09IHZhbHVlWzFdOworICAgICAgfSwK
KyAgICAgIHNyY1ZhbHVlczogW3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWVdLAor
ICAgICAgc3JjVmFsdWVzTGVzczogWzE2XSwKKyAgICAgIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTog
WzE2LCAxNSwgMTQsIDEzXSwKKyAgICAgIHNyY1ZhbHVlc01vcmVNdWx0aXBsZTogWzE2LCAxNSwg
MTQsIDEzLCAxMiwgMTEsIDEwLCA5XSwKKyAgICAgIHNyY1ZhbHVlc05vbk11bHRpcGxlOiBbMTYs
IDE1LCAxNCwgMTMsIDEyLCAxMSwgMTBdLAorICAgIH0sCisgICAgeyB0eXBlOiAnYnZlYzMnLAor
ICAgICAganNUeXBlT2Y6ICdJbnQzMkFycmF5JywKKyAgICAgIHNldHRlcjogJ3VuaWZvcm0zaXYn
LAorICAgICAgZWxlbTogJ1syXScsCisgICAgICBudW1TcmNWYWx1ZXM6IDMsCisgICAgICBpbnZh
bGlkU2V0OiBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFpdihsb2MsIFsyXSk7
CisgICAgICB9LAorICAgICAgaWxsZWdhbFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGds
LnVuaWZvcm0xaXYobG9jLCAyKTsKKyAgICAgIH0sCisgICAgICBzcmNWYWx1ZUFzU3RyaW5nOiBm
dW5jdGlvbihpbmRleCwgc3JjVmFsdWVzKSB7CisgICAgICAgIHJldHVybiAiWyIgKyBzcmNWYWx1
ZXNbaW5kZXggKiAzICsgMF0udG9TdHJpbmcoKSArICIsICIgKworICAgICAgICAgICAgICAgICAg
ICAgc3JjVmFsdWVzW2luZGV4ICogMyArIDFdLnRvU3RyaW5nKCkgKyAiLCAiICsKKyAgICAgICAg
ICAgICAgICAgICAgIHNyY1ZhbHVlc1tpbmRleCAqIDMgKyAyXS50b1N0cmluZygpICsgIl0iOwor
ICAgICAgfSwKKyAgICAgIHJldHVyblZhbHVlQXNTdHJpbmc6IGZ1bmN0aW9uKHZhbHVlKSB7Cisg
ICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6CisgICAgICAgICAgICAoIlsi
ICsgdmFsdWVbMF0gKyAiLCAiICsgdmFsdWVbMV0gKyAiLCAiICsgdmFsdWVbMl0gKyAiXSIpOwor
ICAgICAgfSwKKyAgICAgIGNoZWNrVHlwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuIHZhbHVlICYmCisgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAnbnVt
YmVyJyAmJgorICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09IDM7CisgICAgICB9LAorICAg
ICAgY2hlY2tWYWx1ZTogZnVuY3Rpb24odHlwZUluZm8sIGluZGV4LCB2YWx1ZSkgeworICAgICAg
ICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1Zh
bHVlc1tpbmRleCAqIDMgKyAwXSA9PSB2YWx1ZVswXSAmJgorICAgICAgICAgICAgICAgdHlwZUlu
Zm8uc3JjVmFsdWVzW2luZGV4ICogMyArIDFdID09IHZhbHVlWzFdICYmCisgICAgICAgICAgICAg
ICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiAzICsgMl0gPT0gdmFsdWVbMl07CisgICAgICB9
LAorICAgICAgc3JjVmFsdWVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZV0sCisgICAgICBzcmNWYWx1ZXNMZXNzOiBbMTYsIDE1XSwKKyAgICAg
IHNyY1ZhbHVlc0xlc3NNdWx0aXBsZTogWzE2LCAxNSwgMTQsIDEzLCAxMiwgMTFdLAorICAgICAg
c3JjVmFsdWVzTW9yZU11bHRpcGxlOiBbMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgs
IDcsIDYsIDUsIDQsIDMsIDJdLAorICAgICAgc3JjVmFsdWVzTm9uTXVsdGlwbGU6IFsxNiwgMTUs
IDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgN10sCisgICAgfSwKKyAgICB7IHR5cGU6ICdidmVj
NCcsCisgICAgICBqc1R5cGVPZjogJ1VpbnQzMkFycmF5JywKKyAgICAgIHNldHRlcjogJ3VuaWZv
cm00dWl2JywKKyAgICAgIGVsZW06ICdbM10nLAorICAgICAgbnVtU3JjVmFsdWVzOiAzLAorICAg
ICAgaW52YWxpZFNldDogZnVuY3Rpb24obG9jKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaXYobG9j
LCBbMl0pOworICAgICAgfSwKKyAgICAgIGlsbGVnYWxTZXQ6IGZ1bmN0aW9uKGxvYykgeworICAg
ICAgICBnbC51bmlmb3JtMWl2KGxvYywgMik7CisgICAgICB9LAorICAgICAgc3JjVmFsdWVBc1N0
cmluZzogZnVuY3Rpb24oaW5kZXgsIHNyY1ZhbHVlcykgeworICAgICAgICByZXR1cm4gIlsiICsg
c3JjVmFsdWVzW2luZGV4ICogNCArIDBdLnRvU3RyaW5nKCkgKyAiLCAiICsKKyAgICAgICAgICAg
ICAgICAgICAgIHNyY1ZhbHVlc1tpbmRleCAqIDQgKyAxXS50b1N0cmluZygpICsgIiwgIiArCisg
ICAgICAgICAgICAgICAgICAgICBzcmNWYWx1ZXNbaW5kZXggKiA0ICsgMl0udG9TdHJpbmcoKSAr
ICIsICIgKworICAgICAgICAgICAgICAgICAgICAgc3JjVmFsdWVzW2luZGV4ICogNCArIDNdLnRv
U3RyaW5nKCkgKyAiXSI7CisgICAgICB9LAorICAgICAgcmV0dXJuVmFsdWVBc1N0cmluZzogZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDoK
KyAgICAgICAgICAgICgiWyIgKyB2YWx1ZVswXSArICIsICIgKyB2YWx1ZVsxXSArCisgICAgICAg
ICAgICAgIiwgIiArIHZhbHVlWzJdICsgIiwgIiArIHZhbHVlWzNdICsgIl0iKTsKKyAgICAgIH0s
CisgICAgICBjaGVja1R5cGU6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1
ZSAmJgorICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiYK
KyAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PSA0OworICAgICAgfSwKKyAgICAgIGNoZWNr
VmFsdWU6IGZ1bmN0aW9uKHR5cGVJbmZvLCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJu
IHZhbHVlICE9PSBudWxsICYmCisgICAgICAgICAgICAgICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5k
ZXggKiA0ICsgMF0gPT0gdmFsdWVbMF0gJiYKKyAgICAgICAgICAgICAgIHR5cGVJbmZvLnNyY1Zh
bHVlc1tpbmRleCAqIDQgKyAxXSA9PSB2YWx1ZVsxXSAmJgorICAgICAgICAgICAgICAgdHlwZUlu
Zm8uc3JjVmFsdWVzW2luZGV4ICogNCArIDJdID09IHZhbHVlWzJdICYmCisgICAgICAgICAgICAg
ICB0eXBlSW5mby5zcmNWYWx1ZXNbaW5kZXggKiA0ICsgM10gPT0gdmFsdWVbM107CisgICAgICB9
LAorICAgICAgc3JjVmFsdWVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sCisgICAgICBzcmNWYWx1ZXNMZXNz
OiBbMTYsIDE1LCAxNF0sCisgICAgICBzcmNWYWx1ZXNMZXNzTXVsdGlwbGU6IFsxNiwgMTUsIDE0
LCAxMywgMTIsIDExLCAxMCwgOV0sCisgICAgICBzcmNWYWx1ZXNNb3JlTXVsdGlwbGU6IFsxNiwg
MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMV0sCisgICAg
ICBzcmNWYWx1ZXNOb25NdWx0aXBsZTogWzE2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4
LCA3LCA2LCA1LCA0XSwKKyAgICB9CisgIF07CisgIHR5cGVJbmZvcy5wdXNoKC4uLm1vcmUpOwor
fQorCitsZXQgbG9jOworZm9yICh2YXIgdHQgPSAwOyB0dCA8IHR5cGVJbmZvcy5sZW5ndGg7ICsr
dHQpIHsKKyAgdmFyIHR5cGVJbmZvID0gdHlwZUluZm9zW3R0XTsKKyAgZGVidWcoIiIpOworICBk
ZWJ1ZygiY2hlY2sgIiArIHR5cGVJbmZvLnR5cGUpOworICB2YXIgZlNyYyA9IHd0dS5yZXBsYWNl
UGFyYW1zKGZUZW1wbGF0ZSwgdHlwZUluZm8pOworICAvL2RlYnVnKCJmU3JjOiAiICsgZlNyYyk7
CisgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtKGdsLCB2U3JjLCBmU3JjKTsKKworICB2
YXIgbnVtVW5pZm9ybXMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElW
RV9VTklGT1JNUyk7CisgIGFzc2VydE1zZyhudW1Vbmlmb3JtcyA9PSAxLCAiMSB1bmlmb3JtIGZv
dW5kIik7CisgIHZhciBpbmZvID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKTsKKyAg
YXNzZXJ0TXNnKGluZm8ubmFtZSA9PSAiY29sb3JbMF0iLAorICAgICAgICAgICAgInVuaWZvcm0g
bmFtZSBpcyAnY29sb3JbMF0nIG5vdCAnY29sb3InIGFzIHBlciBPcGVuR0wgRVMgMi4wLjI0IHNl
Y3Rpb24gMi4xMCIpOworICBzaG91bGRCZU51bGwoImdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAnY29sb3JbIiArIE1heEludDMyUGx1c09uZSArICJdJyk7Iik7CisgIGxvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY29sb3JbMF0iKTsKKyAgaWYgKCFsb2MpIHRocm93
ICdNaXNzaW5nIGxvYyc7CisgIHZhciBzcmNWYWx1ZXMgPSB0eXBlSW5mby5zcmNWYWx1ZXM7Cisg
IHZhciBzcmNWYWx1ZXNMZXNzID0gdHlwZUluZm8uc3JjVmFsdWVzTGVzczsKKyAgdmFyIHNyY1Zh
bHVlc0xlc3NNdWx0aXBsZSA9IHR5cGVJbmZvLnNyY1ZhbHVlc0xlc3NNdWx0aXBsZTsKKyAgdmFy
IHNyY1ZhbHVlc01vcmVNdWx0aXBsZSA9IHR5cGVJbmZvLnNyY1ZhbHVlc01vcmVNdWx0aXBsZTsK
KyAgdmFyIHNyY1ZhbHVlc05vbk11bHRpcGxlID0gdHlwZUluZm8uc3JjVmFsdWVzTm9uTXVsdGlw
bGU7CisKKyAgLy8gVHJ5IHNldHRpbmcgdGhlIHZhbHVlIGJlZm9yZSB1c2luZyB0aGUgcHJvZ3Jh
bQorICBnbFt0eXBlSW5mby5zZXR0ZXJdKGxvYywgc3JjVmFsdWVzKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAic2hv
dWxkIGZhaWwgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBwcm9ncmFtIik7CisKKyAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgZ2xbdHlwZUluZm8uc2V0dGVyXShsb2MsIHNyY1ZhbHVlc0xlc3Mp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAg
ICAgICAgICAgInNob3VsZCBmYWlsIHdpdGggaW5zdWZmaWNpZW50IGFycmF5IHNpemUgd2l0aCBn
bC4iICsgdHlwZUluZm8uc2V0dGVyKTsKKyAgaWYgKHNyY1ZhbHVlc05vbk11bHRpcGxlKSB7Cisg
ICAgZ2xbdHlwZUluZm8uc2V0dGVyXShsb2MsIHNyY1ZhbHVlc05vbk11bHRpcGxlKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAg
ICAgICAic2hvdWxkIGZhaWwgd2l0aCBub24tbXVsdGlwbGUgYXJyYXkgc2l6ZSB3aXRoIGdsLiIg
KyB0eXBlSW5mby5zZXR0ZXIpOworICB9CisKKyAgY29uc3QgdmFsaWREYXRhcyA9IFsKKyAgICBg
bmV3IEZsb2F0MzJBcnJheSgke3NyY1ZhbHVlcy5sZW5ndGh9KWAsCisgICAgYG5ldyBGbG9hdDMy
QXJyYXkobmV3IEFycmF5QnVmZmVyKDQqJHtzcmNWYWx1ZXMubGVuZ3RofSkpYCwKKyAgXTsKKyAg
aWYgKHdpbmRvdy5TaGFyZWRBcnJheUJ1ZmZlcikgeworICAgIHZhbGlkRGF0YXMucHVzaCgKKyAg
ICAgIGBuZXcgRmxvYXQzMkFycmF5KG5ldyBTaGFyZWRBcnJheUJ1ZmZlcig0KiR7c3JjVmFsdWVz
Lmxlbmd0aH0pKWAKKyAgICApOworICB9CisgIGZvciAoY29uc3QgeCBvZiB2YWxpZERhdGFzKSB7
CisgICAgc2hvdWxkTm90VGhyb3coYGdsLiR7dHlwZUluZm8uc2V0dGVyfShsb2MsICR7eH0pO2Ap
OworICB9CisKKyAgZ2xbdHlwZUluZm8uc2V0dGVyXShsb2MsIHNyY1ZhbHVlcyk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgICAgICAgImNhbiBz
ZXQgYW4gYXJyYXkgb2YgdW5pZm9ybXMgd2l0aCBnbC4iICsgdHlwZUluZm8uc2V0dGVyKTsKKyAg
Z2xbdHlwZUluZm8uc2V0dGVyXShsb2MsIHNyY1ZhbHVlc0xlc3NNdWx0aXBsZSk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgICAgICAgImNhbiBw
YXJ0aWFsbHkgc2V0IGFuIGFycmF5IG9mIHVuaWZvcm1zIHdpdGggZ2wuIiArIHR5cGVJbmZvLnNl
dHRlciArICIgd2l0aCBhIHNtYWxsZXIgYXJyYXkiKTsKKyAgZ2xbdHlwZUluZm8uc2V0dGVyXShs
b2MsIHNyY1ZhbHVlc01vcmVNdWx0aXBsZSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLAorICAgICAgICAgICAgICAgICAgImNhbiBzZXQgYW4gYXJyYXkgb2YgdW5pZm9y
bXMgd2l0aCBnbC4iICsgdHlwZUluZm8uc2V0dGVyICsgIiB3aXRoIGEgbGFyZ2VyIGFycmF5Iik7
CisKKyAgdmFyIHZhbHVlcyA9IGdsLmdldFVuaWZvcm0ocHJvZ3JhbSwgbG9jKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAgICAgICAgICAgICAiY2FuIGNh
bGwgZ2wuZ2V0VW5pZm9ybSIpOworICBhc3NlcnRNc2codHlwZUluZm8uY2hlY2tUeXBlKHZhbHVl
cyksCisgICAgICAgICAgICAiZ2wuZ2V0VW5pZm9ybSByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUu
ICIgKyBgKHdhcyAke3ZhbHVlcy5jb25zdHJ1Y3Rvci5uYW1lfSlgKTsKKyAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHR5cGVJbmZvLm51bVNyY1ZhbHVlczsgKytpaSkgeworICAgIHNob3VsZEJlTnVs
bCgiZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdjb2xvclsiICsgKE1heEludDMyUGx1
c09uZSArIGlpKSArICJdJykiKTsKKyAgICB2YXIgZWxlbUxvYyA9IGdsLmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAiY29sb3JbIiArIGlpICsgIl0iKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgImNhbiBnZXQgbG9jYXRp
b24gb2YgZWxlbWVudCAiICsgaWkgKworICAgICAgICAgICAgICAgICAgICAiIG9mIGFycmF5IGZy
b20gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uIik7CisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0VW5pZm9y
bShwcm9ncmFtLCBlbGVtTG9jKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgImNhbiBnZXQgdmFsdWUgb2YgZWxlbWVudCAiICsg
aWkgKyAiIG9mIGFycmF5IGZyb20gZ2wuZ2V0VW5pZm9ybSIpOworICAgIGFzc2VydE1zZyh0eXBl
SW5mby5jaGVja1ZhbHVlKHR5cGVJbmZvLCBpaSwgdmFsdWUpLAorICAgICAgICAgICAgICAidmFs
dWUgcHV0IGluICgiICsgdHlwZUluZm8uc3JjVmFsdWVBc1N0cmluZyhpaSwgc3JjVmFsdWVzKSAr
CisgICAgICAgICAgICAgICIpIG1hdGNoZXMgdmFsdWUgcHVsbGVkIG91dCAoIiArCisgICAgICAg
ICAgICAgIHR5cGVJbmZvLnJldHVyblZhbHVlQXNTdHJpbmcodmFsdWUpICsgIikiKTsKKyAgfQor
ICB0eXBlSW5mby5pbnZhbGlkU2V0KGxvYyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgInVzaW5nIHRoZSB3cm9uZyBz
aXplIG9mIGdsLlVuaWZvcm0gZmFpbHMiKTsKKyAgdmFyIGV4Y2VwdGlvbkNhdWdodCA9IGZhbHNl
OworICBpZiAodHlwZUluZm8uaWxsZWdhbFNldCkgeworICAgIHRyeSB7CisgICAgICB0eXBlSW5m
by5pbGxlZ2FsU2V0KGxvYyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgZXhjZXB0aW9uQ2F1
Z2h0ID0gdHJ1ZTsKKyAgICB9CisgICAgYXNzZXJ0TXNnKGV4Y2VwdGlvbkNhdWdodCwgInBhc3Np
bmcgbm9uLWFycmF5IHRvIGdsVW5pZm9ybSpmdiBzaG91bGQgdGhyb3cgVHlwZUVycm9yIik7Cisg
IH0KKworICBnbC51c2VQcm9ncmFtKG51bGwpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICJjYW4gY2FsbCBnbC51c2VQcm9ncmFtKG51
bGwpIik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvZ2wtdW5pZm9ybS1ib29sLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91
bmlmb3Jtcy9nbC11bmlmb3JtLWJvb2wuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjIzY2I0Y2Y0ZDMwNmZm
Y2E5NTRkMWU2M2UyODAyYjkwNzhhNmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvZ2wt
dW5pZm9ybS1ib29sLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9ybU1hdHJpeCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+CisgICAgPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAgICAgICBhdHRyaWJ1dGUgdmVjNCB2UG9z
aXRpb247CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gdlBvc2l0aW9uOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2Ny
aXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICAgICAgdW5p
Zm9ybSBib29sIGNvbG9yOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZsb2F0KGNvbG9yKSwwLjAsMC4wLDEuMCk7CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIGhhbmRsZSBib29sIHVu
aWZvcm1zIGluIGEgT3BlbkdMIEVTIDIuMCBzcGVjIGNvbXBsaWFudCB3YXkiKTsKKworZGVidWco
IiIpOworZGVidWcoIk5PVEU6IFNvbWUgT3BlbkdMIGRyaXZlcnMgZG8gbm90IGhhbmRsZSB0aGlz
IGNvcnJlY3RseSIpOworZGVidWcoIiIpOworZGVidWcoIkNoZWNraW5nIGdsLnVuaWZvcm0xZiB3
aXRoIGJvb2wuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7Cit2YXIgbG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOworZ2wudW5pZm9ybTFmKGxv
YywgMSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAg
ICAgICAic2hvdWxkIGJlIGFibGUgdG8gc2V0IGJvb2wgd2l0aCBnbC51bmlmb3JtMWYiKTsKKwor
ZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL2dsLXVuaWZvcm0tc3RydWN0LXVudXNl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvZ2wtdW5pZm9ybS1zdHJ1Y3QtdW51c2VkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjc1NWU1OWVlMjU1ZTJkN2ZjNDJjYTU5ZTkwMDZhNGUwNzYzMTczMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3VuaWZvcm1zL2dsLXVuaWZvcm0tc3RydWN0LXVudXNlZC5odG1sCkBAIC0wLDAgKzEs
ODMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIHVuaWZvcm0gc3RydWN0IENvbmZvcm1hbmNlIFRlc3Q8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2Fu
dmFzPgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit1bmlmb3JtIHZlYzQgdTA7CitzdHJ1Y3QgTXlTdHJ1
Y3QgeworICB2ZWM0IHZhcjE7CisgIHZlYzQgdmFyMjsKKyAgdmVjNCB2YXIzOworICB2ZWM0IHZh
cjQ7Cit9OwordW5pZm9ybSBNeVN0cnVjdCB1MTsKK3VuaWZvcm0gdmVjNCB1MjsKK3Zhcnlpbmcg
dmVjNCB2X2NvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247
CisgIHZfY29sb3IgPSAodTAgKyB1MiArIHUxLnZhcjEpIC0gdmVjNCgyLjApOworfQorPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFp
bigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBp
bXBsZW1lbnRhdGlvbnMgaGFuZGxlIHVudXNlZCBtZW1iZXJzIGF0IHRoZSBlbmQgb2Ygc3RydWN0
cyBjb3JyZWN0bHkuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKTsKK3Byb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNo
YWRlciJdLCBbICJ2UG9zaXRpb24iXSk7CisKK3d0dS5zZXR1cFVuaXRRdWFkKGdsLCBbMCwgMV0p
OwordmFyIHdoaXRlID0gWzEuMCwgMS4wLCAxLjAsIDEuMF07Cit2YXIgYmxhY2sgPSBbMC4wLCAw
LjAsIDAuMCwgMC4wXTsKK2dsLnVuaWZvcm00ZnYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJ1MCIpLCB3aGl0ZSk7CitnbC51bmlmb3JtNGZ2KGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidTEudmFyMSIpLCB3aGl0ZSk7CitnbC51bmlmb3JtNGZ2KGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidTEudmFyMiIpLCBibGFjayk7CitnbC51bmlmb3JtNGZ2KGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidTEudmFyMyIpLCBibGFjayk7CitnbC51bmlmb3Jt
NGZ2KGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidTEudmFyNCIpLCBibGFjayk7Citn
bC51bmlmb3JtNGZ2KGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidTIiKSwgd2hpdGUp
Oword3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKK3d0dS5jaGVja0NhbnZhcyhnbCwgWzI1
NSwgMjU1LCAyNTUsIDI1NV0sICJzaG91bGQgYmUgd2hpdGUiLCAwKTsKK2dsLnVuaWZvcm00ZnYo
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1MS52YXIyIiksIGJsYWNrKTsKK2dsLnVu
aWZvcm00ZnYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1MS52YXIzIiksIGJsYWNr
KTsKK2dsLnVuaWZvcm00ZnYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1MS52YXI0
IiksIGJsYWNrKTsKK3d0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDBdKTsK
K3d0dS5jaGVja0NhbnZhcyhnbCwgWzI1NSwgMjU1LCAyNTUsIDI1NV0sICJzaG91bGQgc3RpbGwg
YmUgd2hpdGUiLCAwKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJz
aG91bGQgYmUgbm8gR0wgZXJyb3JzIik7CitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9y
bXMvZ2wtdW5pZm9ybS11bnVzZWQtYXJyYXktZWxlbWVudHMtZ2V0LXRydW5jYXRlZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dW5pZm9ybXMvZ2wtdW5pZm9ybS11bnVzZWQtYXJyYXktZWxlbWVudHMtZ2V0LXRydW5jYXRlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4MzIyY2NhMDE4NjIxODRiN2JmOTE5MmNkYzBmZWM1MDQ0NWY5YjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9nbC11bmlmb3JtLXVudXNlZC1hcnJheS1lbGVt
ZW50cy1nZXQtdHJ1bmNhdGVkLmh0bWwKQEAgLTAsMCArMSwxMTQgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHVuaWZvcm0gdW51
c2VkIGFycmF5IGVsZW1lbnRzIGdldCB0cnVuY2F0ZWQgQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIy
Ij4gPC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRl
eCI+CisgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICB2b2lkIG1haW4oKQorICAg
IHsKKyAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIH0KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iZnNoYWRlci1tYXgiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHVuaWZvcm0gdmVjNCBjb2xvcmFbJChudW1V
bmlmb3JtVmVjdG9ycyldOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KGNvbG9yYVskKHVzZWRVbmlmb3JtVmVjdG9yKV0pOworICAgIH0KKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiIik7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJleGFtcGxlIik7Cit2YXIgdlNyYyA9IHd0dS5nZXRTY3JpcHQoInZzaGFkZXIiKTsKK3ZhciB1
bmlmb3JtczsKKy8vIFRoaXMgdGVzdCBpcyB0byB0ZXN0IGRyaXZlcnMgdGhlIGhhdmUgYnVncyBy
ZWxhdGVkIHRvIG9wdGltaXppbmcKKy8vIGFuIGFycmF5IG9mIHVuaWZvcm1zIHdoZW4gb25seSAx
IG9mIHRob3NlIHVuaWZvcm1zIGlzIHVzZWQuCitkZWJ1ZygiIik7Cit2YXIgbWF4VW5pZm9ybVZl
Y3RvcnMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyk7
Cit2YXIgdGVzdHMgPSBbCisgeyBkZXNjOiAidXNpbmcgNXRoIGVsZW1lbnQiLAorICAgbWF4VW5p
Zm9ybVZlY3RvcnM6IG1heFVuaWZvcm1WZWN0b3JzLAorICAgbnVtVW5pZm9ybVZlY3RvcnM6IG1h
eFVuaWZvcm1WZWN0b3JzICogMiwKKyAgIHVzZWRVbmlmb3JtVmVjdG9yOiA1LAorICAgc2hhZGVy
OiAiZnNoYWRlci1tYXgiLAorICAgY29sb3I6IFswLCAxLCAwLCAxXSwKKyAgIGFycmF5TmFtZTog
ImNvbG9yYSIsCisgfSwKK107CisKKy8vIEFjY29yZGluZyB0byB0aGUgc3BlYyB1bnVzZWQgYXJy
YXkgZWxlbWVudHMgbXVzdCBiZSB0cnVuY2F0ZWQuCit2YXIgcmVxdWlyZWRVbmlmb3JtTG9jYXRp
b25zRXhpc3Q7CitmdW5jdGlvbiB0ZXN0VW5pZm9ybUlzc3Vlcyh0ZXN0SW5kZXgpIHsKKyAgdmFy
IHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOworICBkZWJ1ZygiIik7CisgIGRlYnVnKHRlc3QuZGVz
Yyk7CisgIHZhciBmU3JjID0gdGVzdC5zb3VyY2U7CisgIGlmICghZlNyYykgeworICAgIGZTcmMg
PSB3dHUucmVwbGFjZVBhcmFtcyh3dHUuZ2V0U2NyaXB0KHRlc3Quc2hhZGVyKSwgdGVzdCk7Cisg
IH0KKworICB2YXIgY29uc29sZUVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpOworICB3dHUuYWRkU2hhZGVyU291cmNlKAorICAgICAgY29uc29sZUVsZW0sICJ2ZXJ0ZXgg
c2hhZGVyIiwgdlNyYyk7CisgIHd0dS5hZGRTaGFkZXJTb3VyY2UoCisgICAgICBjb25zb2xlRWxl
bSwgImZyYWdtZW50IHNoYWRlciIsIGZTcmMpOworCisgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRQ
cm9ncmFtKGdsLCB2U3JjLCBmU3JjKTsKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgdW5p
Zm9ybXMgPSB3dHUuZ2V0VW5pZm9ybU1hcChnbCwgcHJvZ3JhbSk7CisgIHNob3VsZEJlKCd1bmlm
b3Jtc1siJyArIHRlc3QuYXJyYXlOYW1lICsgJ1swXSJdLnNpemUnLCAodGVzdC51c2VkVW5pZm9y
bVZlY3RvciArIDEpLnRvU3RyaW5nKCkpOworCisgIHJlcXVpcmVkVW5pZm9ybUxvY2F0aW9uc0V4
aXN0ID0gdHJ1ZTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8PSB0ZXN0LnVzZWRVbmlmb3JtVmVj
dG9yICsgMTsgKytpaSkgeworICAgIHZhciBuYW1lID0gdGVzdC5hcnJheU5hbWUgKyAiWyIgKyBp
aSArICJdIjsKKyAgICB2YXIgY29sb3JMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCBuYW1lKTsKKyAgICBpZiAoaWkgPD0gdGVzdC51c2VkVW5pZm9ybVZlY3Rvcikgewor
ICAgICAgaWYgKCFjb2xvckxvY2F0aW9uKSB7CisgICAgICAgIHJlcXVpcmVkVW5pZm9ybUxvY2F0
aW9uc0V4aXN0ID0gZmFsc2UKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaWYgKGNvbG9y
TG9jYXRpb24pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgidW5pZm9ybSBhcnJheSB3YXMgbm90IHRy
dW5jYXRlZCBhcyBzcGVjaWZpZWQgaW4gT3BlbkdMIEVTIDIuMC4yNSBzZWN0aW9uIDIuMTAuNCIp
OworICAgICAgfQorICAgIH0KKyAgfQorICBzaG91bGRCZVRydWUoInJlcXVpcmVkVW5pZm9ybUxv
Y2F0aW9uc0V4aXN0Iik7Cit9CisKK3ZhciB0ZXN0SW5kZXggPSAwOworZnVuY3Rpb24gcnVuTmV4
dFRlc3QoKSB7CisgIHRlc3RVbmlmb3JtSXNzdWVzKHRlc3RJbmRleCsrKTsKKyAgaWYgKHRlc3RJ
bmRleCA8IHRlc3RzLmxlbmd0aCkgeworICAgIHNldFRpbWVvdXQocnVuTmV4dFRlc3QsIDApOwor
ICB9IGVsc2UgeworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhl
cmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmaW5pc2hUZXN0
KCk7CisgIH0KK30KK3J1bk5leHRUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1z
L2dsLXVuaWZvcm1tYXRyaXg0ZnYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL2dsLXVuaWZvcm1tYXRyaXg0ZnYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYjQ5NzdhNmZkZjcwYjRmMTUxYTRhYWYxMTIxZDVkMWFiYzdmYmEy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvZ2wtdW5pZm9ybW1hdHJpeDRmdi5odG1sCkBA
IC0wLDAgKzEsMTQ5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtTWF0cml4IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9
IjIiPiA8L2NhbnZhcz4KKworPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12
ZXJ0ZXgiPgordW5pZm9ybSBtYXQyIHdvcmxkMngyOwordW5pZm9ybSBtYXQzIHdvcmxkM3gzOwor
dW5pZm9ybSBtYXQ0IHdvcmxkNHg0Owordm9pZCBtYWluKCkgeworICBnbF9Qb3NpdGlvbi54ICs9
IHdvcmxkMngyWzBdWzBdOworICBnbF9Qb3NpdGlvbi54ICs9IHdvcmxkM3gzWzBdWzBdOworICBn
bF9Qb3NpdGlvbi54ICs9IHdvcmxkNHg0WzBdWzBdOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkge30K
Kzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyMzAwIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CisjdmVyc2lvbiAzMDAgZXMKK3VuaWZvcm0gbWF0MiAgIHdvcmxkMngyOwordW5pZm9y
bSBtYXQyeDMgd29ybGQyeDM7Cit1bmlmb3JtIG1hdDJ4NCB3b3JsZDJ4NDsKK3VuaWZvcm0gbWF0
M3gyIHdvcmxkM3gyOwordW5pZm9ybSBtYXQzICAgd29ybGQzeDM7Cit1bmlmb3JtIG1hdDN4NCB3
b3JsZDN4NDsKK3VuaWZvcm0gbWF0NHgyIHdvcmxkNHgyOwordW5pZm9ybSBtYXQ0eDMgd29ybGQ0
eDM7Cit1bmlmb3JtIG1hdDQgICB3b3JsZDR4NDsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRp
b24ueCArPSB3b3JsZDJ4MlswXVswXTsKKyAgZ2xfUG9zaXRpb24ueCArPSB3b3JsZDJ4M1swXVsw
XTsKKyAgZ2xfUG9zaXRpb24ueCArPSB3b3JsZDJ4NFswXVswXTsKKyAgZ2xfUG9zaXRpb24ueCAr
PSB3b3JsZDN4MlswXVswXTsKKyAgZ2xfUG9zaXRpb24ueCArPSB3b3JsZDN4M1swXVswXTsKKyAg
Z2xfUG9zaXRpb24ueCArPSB3b3JsZDN4NFswXVswXTsKKyAgZ2xfUG9zaXRpb24ueCArPSB3b3Js
ZDR4MlswXVswXTsKKyAgZ2xfUG9zaXRpb24ueCArPSB3b3JsZDR4M1swXVswXTsKKyAgZ2xfUG9z
aXRpb24ueCArPSB3b3JsZDR4NFswXVswXTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJm
c2hhZGVyMzAwIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyN2ZXJzaW9uIDMwMCBlcwor
dm9pZCBtYWluKCkge30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIFdlYkdMIGltcGxlbWVudGF0aW9ucyBoYW5kbGUg
dW5pZm9ybU1hdHJpeCBpbiBhIE9wZW5HTCBFUyAyLjAgc3BlYyBjb21wbGlhbnQgd2F5Iik7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVja2luZyBnbC51bmlmb3JtTWF0cml4LiIpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIik7Cit2YXIgY29udGV4dFZlcnNpb24gPSB3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZlcnNp
b24oKTsKKworbGV0IHNoYWRlcnMgPSBbInZzaGFkZXIiLCAiZnNoYWRlciJdOworY29uc3QgZGlt
cyA9IFsKKyAgWzIsIDIsICd1bmlmb3JtTWF0cml4MmZ2J10sCisgIFszLCAzLCAndW5pZm9ybU1h
dHJpeDNmdiddLAorICBbNCwgNCwgJ3VuaWZvcm1NYXRyaXg0ZnYnXSwKK107CisKK2lmIChjb250
ZXh0VmVyc2lvbiA+PSAyKSB7CisgIHNoYWRlcnMgPSBbInZzaGFkZXIzMDAiLCAiZnNoYWRlcjMw
MCJdOworICBkaW1zLnB1c2goCisgICAgWzIsIDMsICd1bmlmb3JtTWF0cml4MngzZnYnXSwKKyAg
ICBbMiwgNCwgJ3VuaWZvcm1NYXRyaXgyeDRmdiddLAorICAgIFszLCAyLCAndW5pZm9ybU1hdHJp
eDN4MmZ2J10sCisgICAgWzMsIDQsICd1bmlmb3JtTWF0cml4M3g0ZnYnXSwKKyAgICBbNCwgMiwg
J3VuaWZvcm1NYXRyaXg0eDJmdiddLAorICAgIFs0LCAzLCAndW5pZm9ybU1hdHJpeDR4M2Z2J10K
KyAgKTsKK30KKworY29uc3QgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIHNoYWRlcnMp
OworbGV0IGxvYzsKKworZm9yIChjb25zdCBbQSwgQiwgbmFtZV0gb2YgZGltcykgeworICBsb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgYHdvcmxkJHtBfXgke0J9YCk7CisgIGlm
ICghbG9jKSB0aHJvdyAnbWlzc2luZyBsb2MnOworCisgIGNvbnN0IG1hdCA9IFtdOworICBmb3Ig
KGxldCBhID0gMDsgYSA8IEE7ICsrYSkgeworICAgIGZvciAobGV0IGIgPSAwOyBiIDwgQjsgKyti
KSB7CisgICAgICBtYXQucHVzaCgoYSA9PSBiKSA/IDEgOiAwKTsKKyAgICB9CisgIH0KKyAgY29u
c3QgbWF0TGVzcyA9IG1hdC5zbGljZSgwLCBtYXQubGVuZ3RoLTIpOworICBjb25zdCBtYXRNb3Jl
ID0gbWF0LmNvbmNhdChbMV0pOworCisgIGdsW25hbWVdKGxvYywgZmFsc2UsIG1hdExlc3MpOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAic2hvdWxkIGZhaWwg
d2l0aCBpbnN1ZmZpY2llbnQgYXJyYXkgc2l6ZSBmb3IgIiArIG5hbWUpOworICBnbFtuYW1lXShs
b2MsIGZhbHNlLCBtYXQpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InNob3VsZCBzdWNjZWVkIHdpdGggY29ycmVjdCBhcnJheSBzaXplIGZvciAiICsgbmFtZSk7Cisg
IGdsW25hbWVdKGxvYywgZmFsc2UsIG1hdE1vcmUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLCAic2hvdWxkIGZhaWwgd2l0aCBtb3JlIHRoYW4gMSBhcnJheSBz
aXplIGZvciAiICsgbmFtZSk7CisKKyAgY29uc3QgdmFsaWREYXRhcyA9IFsKKyAgICBgbmV3IEZs
b2F0MzJBcnJheSgke21hdC5sZW5ndGh9KWAsCisgICAgYG5ldyBGbG9hdDMyQXJyYXkobmV3IEFy
cmF5QnVmZmVyKDQqJHttYXQubGVuZ3RofSkpYCwKKyAgXTsKKyAgaWYgKHdpbmRvdy5TaGFyZWRB
cnJheUJ1ZmZlcikgeworICAgIHZhbGlkRGF0YXMucHVzaCgKKyAgICAgIGBuZXcgRmxvYXQzMkFy
cmF5KG5ldyBTaGFyZWRBcnJheUJ1ZmZlcig0KiR7bWF0Lmxlbmd0aH0pKWAKKyAgICApOworICB9
CisgIGZvciAoY29uc3QgeCBvZiB2YWxpZERhdGFzKSB7CisgICAgc2hvdWxkTm90VGhyb3coYGds
LiR7bmFtZX0obG9jLCBmYWxzZSwgJHt4fSk7YCk7CisgIH0KKworICBnbFtuYW1lXShsb2MsIGZh
bHNlLCBtYXQpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNhbiBj
YWxsICIgKyBuYW1lICsgIndpdGggdHJhbnNwb3NlID0gZmFsc2UiKTsKKyAgaWYgKGNvbnRleHRW
ZXJzaW9uIDw9IDEpIHsKKyAgICBnbFtuYW1lXShsb2MsIHRydWUsIG1hdCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgbmFtZSArICIgc2hvdWxkIHJldHVy
biBJTlZBTElEX1ZBTFVFIHdpdGggdHJhbnNwb3NlID0gdHJ1ZSIpOworICB9IGVsc2UgeworICAg
IGdsW25hbWVdKGxvYywgdHJ1ZSwgbWF0KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImNhbiBjYWxsICIgKyBuYW1lICsgIndpdGggdHJhbnNwb3NlID0gdHJ1ZSIp
OworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9nbC11bmtub3du
LXVuaWZvcm0uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL2dsLXVua25vd24tdW5pZm9ybS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyNWZkMjM4MzE2YWZjMjY5OTc4Yjk4YTdiMDhiYTgyY2Q0NzQwYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS91bmlmb3Jtcy9nbC11bmtub3duLXVuaWZvcm0uaHRtbApAQCAtMCwwICsxLDY3IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBVbmtub3duIFVuaWZvcm0gQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4K
KzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0
ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9z
aXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLDAuMCwwLjAsMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHVua25vd24gdW5pZm9ybXMgZG9uJ3QgY2F1c2UgZXJy
b3JzLiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2Fu
dmFzIik7CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWco
IiIpOworCisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwg
ImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iXSk7CisgIC8vIEdldCB0aGUgbG9jYXRpb24gb2YgYW4g
dW5rbm93biB1bmlmb3JtLgorICB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJzb21lVW5rbm93blVuaWZvcm0iKTsKKyAgYXNzZXJ0TXNnKGxvYyA9PT0gbnVsbCwgImxv
Y2F0aW9uIG9mIHVua25vd24gdW5pZm9ybSBzaG91bGQgYmUgbnVsbCIpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJy
b3IgZnJvbSBnZXR0aW5nIGFuIHVua25vd24gdW5pZm9ybSIpOworICBnbC51bmlmb3JtMWYobG9j
LCAxKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAidGhl
cmUgc2hvdWxkIGJlIG5vIGVycm9yIGZyb20gdHJ5aW5nIHRvIHNldCBhbiB1bmtub3duIHVuaWZv
cm0iKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGlt
aXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTAwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGlt
aXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMzMWZhOTI5OWVk
YjMzNTRiYTdhMGI4ODg0Yjc3OWU3MjZlNmZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1z
L25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDAuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFy
cmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9
IDA7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0
dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05v
T3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5v
IGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11
bmlmb3JtLWFycmF5LTAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11
bmlmb3JtLWFycmF5LTAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYwYzFhZjQ3MzQ0NzhkZjNmMDYzY2My
MTFhYTdjMGIzN2Q0Zjg5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0
aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1
bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVp
Z2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
KTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDE7Cit2YXIgdGVz
dFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7
Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXpl
T25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5
LTAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5
LTAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcwZDU1MzgwMjNmM2YxNmZmNGU1ZWNjOWE2ZTZjMmY2ZjUy
ZjY3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9u
LXVuaWZvcm0tYXJyYXktMDIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25v
LW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIi
KTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDI7Cit2YXIgdGVzdFNldCA9IE5vT3Zl
ck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENh
c2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJy
YXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91
bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTAzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91
bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTAzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTcwMmI3ODAzMzkyMTcxZTFkMjJkOGEwYzYwMmIzNThhMDlkODliYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJy
YXktMDMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1p
emF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBs
ZSIpOwordmFyIHRlc3RJbmRleCA9IDM7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25V
bmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RT
ZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVu
VGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1v
dmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1v
dmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ2
ZTg5MTVlMTI5YTM4MmE4ZTdiYmE2NDZhNjI3YmEwNWFhNjQxNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11
bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRl
c3RJbmRleCA9IDQ7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlU
ZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4
XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRl
c3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hv
dWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXph
dGlvbi1vbi11bmlmb3JtLWFycmF5LTA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXph
dGlvbi1vbi11bmlmb3JtLWFycmF5LTA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNjYWNhNmM5ZjhhMDI0
NmQ5YmFmMDRmYjgwOGZkYWRjNzBhMTgyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25v
LW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVz
Y3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDU7
Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBU
ZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zl
ck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVy
cm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlm
b3JtLWFycmF5LTA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlm
b3JtLWFycmF5LTA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE4YjY5ZWE1ZTM1ZmMzMmM4NDU3MjU2Njlm
NzNhMDcwZTIxZjJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1p
emF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlm
b3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsK
K2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDY7Cit2YXIgdGVzdFNl
dCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2
YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25V
bmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA3
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA3
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzY1ODkwZGM5MDcxN2ZlNjcyOWZjYzY3MGJjYWQ4ZDhhODk1ZmU0
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVu
aWZvcm0tYXJyYXktMDcuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92
ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDc7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9w
dGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2Vz
ID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlU
ZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlm
b3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA4Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlm
b3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA4Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDQyY2VhNmJlZGYzMDAxY2M5ZDA4MjhiYjZjMTQyZmE2OTA3MGNiNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXkt
MDguaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0
aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIp
OwordmFyIHRlc3RJbmRleCA9IDg7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlm
b3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRb
dGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVz
dHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
dGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVy
LW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVy
LW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTA5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU0MzQz
NGU3N2QyN2I2NDBlMTM4YzllN2I1ZjczMDg3ZjE3ZGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Vu
aWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMDkuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlm
b3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJ
bmRleCA9IDk7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0
ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07
CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RD
YXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxk
IGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlv
bi1vbi11bmlmb3JtLWFycmF5LTEwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlv
bi1vbi11bmlmb3JtLWFycmF5LTEwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ0ODI3ZjVmOWRjOThkOGYw
MzdmOWE0ODQ1NWZhYmYzODUzOTU5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92
ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMTAuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDEwOwor
dmFyIHRlc3RTZXQgPSBOb092ZXJPcHRpbWl6ZU9uVW5pZm9ybUFycmF5VGVzdGVyLnNldHVwVGVz
dHMoZ2wpOwordmFyIHRlc3RDYXNlcyA9IFt0ZXN0U2V0W3Rlc3RJbmRleF1dOworCitOb092ZXJP
cHRpbWl6ZU9uVW5pZm9ybUFycmF5VGVzdGVyLnJ1blRlc3RzKGdsLCB0ZXN0Q2FzZXMpCit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJv
cnMiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zlci1vcHRpbWl6YXRpb24tb24tdW5pZm9y
bS1hcnJheS0xMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zlci1vcHRpbWl6YXRpb24tb24tdW5pZm9y
bS1hcnJheS0xMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYjM0YjkwNmI4NTc4NGZjNTViMDdmMGE1MTk3
YjI4MmQ5MWUyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXph
dGlvbi1vbi11bmlmb3JtLWFycmF5LTExLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9y
bSBhcnJheSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90
ZXN0cy9uby1vdmVyLW9wdGltaXphdGlvbnMtb24tdW5pZm9ybS1hcnJheS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7Citk
ZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciB0ZXN0SW5kZXggPSAxMTsKK3ZhciB0ZXN0U2V0
ID0gTm9PdmVyT3B0aW1pemVPblVuaWZvcm1BcnJheVRlc3Rlci5zZXR1cFRlc3RzKGdsKTsKK3Zh
ciB0ZXN0Q2FzZXMgPSBbdGVzdFNldFt0ZXN0SW5kZXhdXTsKKworTm9PdmVyT3B0aW1pemVPblVu
aWZvcm1BcnJheVRlc3Rlci5ydW5UZXN0cyhnbCwgdGVzdENhc2VzKQord3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMTIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lODAyNjAwNzQxMmMzYTlmODEzMGQ5YjkxOGQ1OGI1M2E3MDk5ZThm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zlci1vcHRpbWl6YXRpb24tb24tdW5p
Zm9ybS1hcnJheS0xMi5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHVuaWZvcm0gYXJyYXkgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvbm8tb3Zl
ci1vcHRpbWl6YXRpb25zLW9uLXVuaWZvcm0tYXJyYXkuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworZGVidWcoIiIpOwor
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJleGFtcGxlIik7Cit2YXIgdGVzdEluZGV4ID0gMTI7Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9w
dGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBUZXN0cyhnbCk7Cit2YXIgdGVzdENhc2Vz
ID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlU
ZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlm
b3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTEzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlm
b3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTEzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDYwNmVmNWEyODI2YjcyZmVjNmI4MzRmZTJiODNjYmRhOGE3Y2IyMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0aW9uLW9uLXVuaWZvcm0tYXJyYXkt
MTMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3JtIGFycmF5IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0
aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIp
OwordmFyIHRlc3RJbmRleCA9IDEzOwordmFyIHRlc3RTZXQgPSBOb092ZXJPcHRpbWl6ZU9uVW5p
Zm9ybUFycmF5VGVzdGVyLnNldHVwVGVzdHMoZ2wpOwordmFyIHRlc3RDYXNlcyA9IFt0ZXN0U2V0
W3Rlc3RJbmRleF1dOworCitOb092ZXJPcHRpbWl6ZU9uVW5pZm9ybUFycmF5VGVzdGVyLnJ1blRl
c3RzKGdsLCB0ZXN0Q2FzZXMpCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zl
ci1vcHRpbWl6YXRpb24tb24tdW5pZm9ybS1hcnJheS0xNC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zl
ci1vcHRpbWl6YXRpb24tb24tdW5pZm9ybS1hcnJheS0xNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMzNh
ZGNlNGY2YjAyMGMxMjM5MDI5NTBkMzFjYzYxNGYzZjNkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91
bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlmb3JtLWFycmF5LTE0Lmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9ybSBhcnJheSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9uby1vdmVyLW9wdGltaXphdGlvbnMtb24tdW5p
Zm9ybS1hcnJheS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKK3ZhciB0ZXN0
SW5kZXggPSAxNDsKK3ZhciB0ZXN0U2V0ID0gTm9PdmVyT3B0aW1pemVPblVuaWZvcm1BcnJheVRl
c3Rlci5zZXR1cFRlc3RzKGdsKTsKK3ZhciB0ZXN0Q2FzZXMgPSBbdGVzdFNldFt0ZXN0SW5kZXhd
XTsKKworTm9PdmVyT3B0aW1pemVPblVuaWZvcm1BcnJheVRlc3Rlci5ydW5UZXN0cyhnbCwgdGVz
dENhc2VzKQord3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91
bGQgYmUgbm8gZXJyb3JzIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0
aW9uLW9uLXVuaWZvcm0tYXJyYXktMTUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1pemF0
aW9uLW9uLXVuaWZvcm0tYXJyYXktMTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmI1MDY3OWI3ODJiNWRk
NjdmMmI4MjgyMTBkMWRmNDk4ZmVkYzgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbm8t
b3Zlci1vcHRpbWl6YXRpb24tb24tdW5pZm9ybS1hcnJheS0xNS5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIHVuaWZvcm0gYXJyYXkgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvdGVzdHMvbm8tb3Zlci1vcHRpbWl6YXRpb25zLW9uLXVuaWZvcm0tYXJyYXku
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigpOworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7Cit2YXIgdGVzdEluZGV4ID0gMTU7
Cit2YXIgdGVzdFNldCA9IE5vT3Zlck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIuc2V0dXBU
ZXN0cyhnbCk7Cit2YXIgdGVzdENhc2VzID0gW3Rlc3RTZXRbdGVzdEluZGV4XV07CisKK05vT3Zl
ck9wdGltaXplT25Vbmlmb3JtQXJyYXlUZXN0ZXIucnVuVGVzdHMoZ2wsIHRlc3RDYXNlcykKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVy
cm9ycyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlm
b3JtLWFycmF5LTE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11bmlm
b3JtLWFycmF5LTE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgxYjc2YjU2MDYwMzcyMDQ3MjEwYjQ0MDNk
YzVmODRlNmNkYzQ5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL25vLW92ZXItb3B0aW1p
emF0aW9uLW9uLXVuaWZvcm0tYXJyYXktMTYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlm
b3JtIGFycmF5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj4gPC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsK
K2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOwordmFyIHRlc3RJbmRleCA9IDE2OwordmFyIHRlc3RT
ZXQgPSBOb092ZXJPcHRpbWl6ZU9uVW5pZm9ybUFycmF5VGVzdGVyLnNldHVwVGVzdHMoZ2wpOwor
dmFyIHRlc3RDYXNlcyA9IFt0ZXN0U2V0W3Rlc3RJbmRleF1dOworCitOb092ZXJPcHRpbWl6ZU9u
VW5pZm9ybUFycmF5VGVzdGVyLnJ1blRlc3RzKGdsLCB0ZXN0Q2FzZXMpCit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zlci1vcHRpbWl6YXRpb24tb24tdW5pZm9ybS1hcnJheS0x
Ny5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvbm8tb3Zlci1vcHRpbWl6YXRpb24tb24tdW5pZm9ybS1hcnJheS0x
Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlkY2I4YWU5YjhmMGJjNTdmMWFlNTE2ZWFjMTgyOWE2NmY2NDNi
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy9uby1vdmVyLW9wdGltaXphdGlvbi1vbi11
bmlmb3JtLWFycmF5LTE3Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9ybSBhcnJheSBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9uby1v
dmVyLW9wdGltaXphdGlvbnMtb24tdW5pZm9ybS1hcnJheS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiIik7
CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImV4YW1wbGUiKTsKK3ZhciB0ZXN0SW5kZXggPSAxNzsKK3ZhciB0ZXN0U2V0ID0gTm9PdmVy
T3B0aW1pemVPblVuaWZvcm1BcnJheVRlc3Rlci5zZXR1cFRlc3RzKGdsKTsKK3ZhciB0ZXN0Q2Fz
ZXMgPSBbdGVzdFNldFt0ZXN0SW5kZXhdXTsKKworTm9PdmVyT3B0aW1pemVPblVuaWZvcm1BcnJh
eVRlc3Rlci5ydW5UZXN0cyhnbCwgdGVzdENhc2VzKQord3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Vu
aWZvcm1zL251bGwtdW5pZm9ybS1sb2NhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvbnVsbC11bmlmb3Jt
LWxvY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0OWJkYjJmMDg5ODZkZWZmMGIwMTA1NzMzZmI3
ODdiMDgzMTBkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL251bGwtdW5pZm9ybS1sb2Nh
dGlvbi5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oIlRlc3RzIGNhbGxpbmcgdGhlIHZhcmlvdXMgdW5pZm9ybVtNYXRyaXhd
KiBBUElzIHdpdGggYSBudWxsIHVuaWZvcm0gbG9jYXRpb24iKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIHByb2dyYW0g
PSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShnbCk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJnbC51c2VQcm9ncmFtKHByb2dyYW0p
Iik7Cit2YXIgZmxvYXRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIsIDMsIDRdKTsKK3Zh
ciBpbnRBcnJheSA9IG5ldyBJbnQzMkFycmF5KFsxLCAyLCAzLCA0XSk7CisKK2Z1bmN0aW9uIGNh
bGxVbmlmb3JtRnVuY3Rpb24obmFtZSkgeworICB2YXIgaXNBcnJheVZhcmlhbnQgPSAobmFtZS5j
aGFyQXQobmFtZS5sZW5ndGggLSAxKSA9PSAndicpOworICB2YXIgaXNNYXRyaXggPSAobmFtZS5p
bmRleE9mKCJNYXRyaXgiKSAhPSAtMSk7CisgIHZhciBpc0Zsb2F0ID0KKyAgICAgIChuYW1lLmNo
YXJBdChuYW1lLmxlbmd0aCAtIDEpID09ICdmJyB8fAorICAgICAgIG5hbWUuY2hhckF0KG5hbWUu
bGVuZ3RoIC0gMikgPT0gJ2YnKTsKKyAgdmFyIHNpemVJbmRleCA9IChpc0FycmF5VmFyaWFudCA/
IG5hbWUubGVuZ3RoIC0gMyA6IG5hbWUubGVuZ3RoIC0gMik7CisgIHZhciBzaXplID0gcGFyc2VJ
bnQobmFtZS5zdWJzdHJpbmcoc2l6ZUluZGV4LCBzaXplSW5kZXggKyAxKSk7CisgIC8vIEluaXRp
YWxpemUgYXJndW1lbnQgbGlzdCB3aXRoIG51bGwgdW5pZm9ybSBsb2NhdGlvbgorICB2YXIgYXJn
cyA9IFsgbnVsbCBdOworICBpZiAoaXNBcnJheVZhcmlhbnQpIHsKKyAgICAvLyBDYWxsIHZhcmlh
bnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIGFycmF5CisgICAgaWYgKGlzTWF0cml4KSB7CisgICAg
ICBzaXplID0gc2l6ZSAqIHNpemU7CisgICAgICBhcmdzLnB1c2goZmFsc2UpOworICAgIH0KKyAg
ICB2YXIgYXJyYXkgPSAoaXNGbG9hdCA/IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSkgOiBuZXcgSW50
MzJBcnJheShzaXplKSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAg
ICAgIGFycmF5W2ldID0gaTsKKyAgICB9CisgICAgYXJncy5wdXNoKGFycmF5KTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBDYWxsIHZhcmlhbnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIHBhcmFtZXRlcnMK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgYXJncy5wdXNoKGkp
OworICAgIH0KKyAgfQorICB2YXIgZnVuYyA9IGdsW25hbWVdOworICByZXR1cm4gZnVuYy5hcHBs
eShnbCwgYXJncyk7Cit9CisKK3ZhciBmdW5jcyA9IFsgInVuaWZvcm0xZiIsICJ1bmlmb3JtMWZ2
IiwgInVuaWZvcm0xaSIsICJ1bmlmb3JtMWl2IiwKKyAgICAgICAgICAgICAgInVuaWZvcm0yZiIs
ICJ1bmlmb3JtMmZ2IiwgInVuaWZvcm0yaSIsICJ1bmlmb3JtMml2IiwKKyAgICAgICAgICAgICAg
InVuaWZvcm0zZiIsICJ1bmlmb3JtM2Z2IiwgInVuaWZvcm0zaSIsICJ1bmlmb3JtM2l2IiwKKyAg
ICAgICAgICAgICAgInVuaWZvcm00ZiIsICJ1bmlmb3JtNGZ2IiwgInVuaWZvcm00aSIsICJ1bmlm
b3JtNGl2IiwKKyAgICAgICAgICAgICAgInVuaWZvcm1NYXRyaXgyZnYiLCAidW5pZm9ybU1hdHJp
eDNmdiIsICJ1bmlmb3JtTWF0cml4NGZ2IiBdOwordmFyIGNhbGxTdHJpbmc7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgZnVuY3MubGVuZ3RoOyBpKyspIHsKKyAgY2FsbFN0cmluZyA9ICJjYWxsVW5p
Zm9ybUZ1bmN0aW9uKCciICsgZnVuY3NbaV0gKyAiJykiOworICBzaG91bGRCZVVuZGVmaW5lZChj
YWxsU3RyaW5nKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3VuaWZvcm1zL291dC1vZi1ib3VuZHMtdW5pZm9ybS1hcnJheS1hY2Nlc3Mu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3VuaWZvcm1zL291dC1vZi1ib3VuZHMtdW5pZm9ybS1hcnJheS1hY2Nlc3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZGVmYzhlZTBlM2Y0YzljZjIyNzkyMWZiZThlZjZhYTg3OTBjNjAyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvb3V0LW9mLWJvdW5kcy11bmlmb3JtLWFycmF5LWFjY2Vz
cy5odG1sCkBAIC0wLDAgKzEsMTY4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBvdXQgb2YgYm91bmRzIHVuaWZvcm0gYXJyYXkg
YWNjZXNzLjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiBzdHls
ZT0iYmFja2dyb3VuZDogYmxhY2s7Ij4KKzwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRy
aWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3VuaWZvcm0gZmxv
YXQgbGluZVdpZHRoOwordW5pZm9ybSBpbnQgZWxlbU11bHQ7Cit1bmlmb3JtIHZlYzQgY29sb3JB
cnJheVs2XTsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMiB0ZXhjb29yZCA9IHZlYzIodlBvc2l0
aW9uLnh5ICogMC41ICsgdmVjMigwLjUsIDAuNSkpOworICAgIGludCBpbmRleCA9IGludCh0ZXhj
b29yZC54ICsgdGV4Y29vcmQueSAqIGxpbmVXaWR0aCkgKiBlbGVtTXVsdDsKKyAgICB2X2NvbG9y
ID0gY29sb3JBcnJheVtpbmRleF07CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAg
Z2xfUG9pbnRTaXplID0gMS4wOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2
YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IHZf
Y29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZWJ1ZygiVGVz
dHMgYSBXZWJHTCBwcm9ncmFtIHRoYXQgYWNjZXNzZXMgb3V0IG9mIGJvdW5kcyB1bmlmb3JtIGFy
cmF5IGVsZW1lbnRzIik7CisKK3ZhciBnbDsKK3ZhciBncmlkUmVzID0gMTI3OwordmFyIGxpbmVX
aWR0aExvYzsKK3ZhciBlbGVtTXVsdExvYzsKK3ZhciB3aWR0aCA9IDEyODsKK3ZhciBoZWlnaHQg
PSAxMjg7Cit2YXIgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsK
KwordmFyIGxpbmVXaWR0aCA9IDA7Cit2YXIgZWxlbU11bHQgPSAwOworCit2YXIga25vd25Db2xv
cnMgPSBbCisgIDEuMCwgMC4wLCAwLjAsIDEuMCwgIC8vIFJlZAorICAwLjAsIDEuMCwgMC4wLCAx
LjAsICAvLyBHcmVlbgorICAwLjAsIDAuMCwgMS4wLCAxLjAsICAvLyBCbHVlCisgIDAuMCwgMS4w
LCAxLjAsIDEuMCwgIC8vIEN5YW4KKyAgMS4wLCAwLjAsIDEuMCwgMS4wLCAgLy8gTWFnZW50YQor
ICAxLjAsIDEuMCwgMC4wLCAxLjAgICAvLyBZZWxsb3cKK107CisKK2Z1bmN0aW9uIG1haW4oKSB7
CisgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJleGFtcGxlIik7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgIGds
LAorICAgICAgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwKKyAgICAgIFsndlBvc2l0aW9uJ10sIFsw
XSk7CisKKyAgLy8gc2V0dXBRdWFkIHByb2R1Y2VzIHRoZSBnZW9tZXRyeSB3ZSB3YW50IGZvciBh
IGdyaWRSZXMgeCBncmlkUmVzIGdyaWQKKyAgLy8gb2YgcG9pbnRzLiBObyBpbnRlcnBvbGF0aW9u
IHdpbGwgYmUgcGVyZm9ybWVkIGFjcm9zcyB0aGUgcG9pbnRzLCBzbworICAvLyBhY2NvcmRpbmcg
dG8gdGhlIFdlYkdMIHNwZWNpZmljYXRpb24gZm9yIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNz
ZXMsCisgIC8vIHdlIHdpbGwgZ2V0IGV4YWN0bHkgdGhlIGlucHV0IGNvbG9ycyBmcm9tIHRoZSB1
bmlmb3JtIGNvbG9yQXJyYXksIG9yCisgIC8vIHplcm8sIGZvciBlYWNoIHBpeGVsIG9uIHRoZSBj
YW52YXMuCisgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlkUmVzLCAwKTsKKyAgdmFyIGNv
bG9yQXJyYXlMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yQXJyYXlb
MF0iKTsKKyAgYXNzZXJ0TXNnKGNvbG9yQXJyYXlMb2MgIT0gbnVsbCwgImNvbG9yIGFycmF5IHVu
aWZvcm0gc2hvdWxkIGJlIGZvdW5kIik7CisgIHZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5
KGtub3duQ29sb3JzKTsKKyAgZ2wudW5pZm9ybTRmdihjb2xvckFycmF5TG9jLCBjb2xvcnMpOwor
ICBsaW5lV2lkdGhMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImxpbmVXaWR0
aCIpOworICBlbGVtTXVsdExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWxl
bU11bHQiKTsKKyAgYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IsICJTaG91
bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisgIHJ1bk9uZUl0ZXJhdGlvbigpOworfQor
CitmdW5jdGlvbiB3aXRoaW5FcHNpbG9uKHZhbDEsIHZhbDIpIHsKKyAgcmV0dXJuIE1hdGguYWJz
KHZhbDEgLSB2YWwyKSA8IDAuMDAwMTsKK30KKworZnVuY3Rpb24gaXNLbm93bkNvbG9yKHIsIGcs
IGIpIHsKKyAgaWYgKHIgPT0gMCAmJiBnID09IDAgJiYgYiA9PSAwKQorICAgIHJldHVybiB0cnVl
OworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwga25vd25Db2xvcnMubGVuZ3RoOyBpaSArPSA0KSB7
CisgICAgaWYgKHdpdGhpbkVwc2lsb24ociAvIDI1NS4wLCBrbm93bkNvbG9yc1tpaSArIDBdKSAm
JgorICAgICAgICB3aXRoaW5FcHNpbG9uKGcgLyAyNTUuMCwga25vd25Db2xvcnNbaWkgKyAxXSkg
JiYKKyAgICAgICAgd2l0aGluRXBzaWxvbihiIC8gMjU1LjAsIGtub3duQ29sb3JzW2lpICsgMl0p
KQorICAgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlv
biBydW5PbmVJdGVyYXRpb24oKSB7CisgIGlmIChlbGVtTXVsdCA8IDIwNDgpIHsKKyAgICB2YXIg
b2sgPSB0cnVlOworICAgIHZhciBzdGFydGluZ0xpbmVXaWR0aCA9IGxpbmVXaWR0aDsKKyAgICB2
YXIgZmlyc3RGYWlsaW5nUGl4ZWwgPSBudWxsOworICAgIHZhciBmaXJzdEZhaWxpbmdWYWx1ZSA9
IG51bGw7CisgICAgZm9yICg7IGxpbmVXaWR0aCA8IDI1NDA7IGxpbmVXaWR0aCArPSAzMSkgewor
ICAgICAgLy8gRHJhdworICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgICAgZ2wudW5pZm9ybTFmKGxpbmVXaWR0aExvYywgbGluZVdp
ZHRoKTsKKyAgICAgIGdsLnVuaWZvcm0xaShlbGVtTXVsdExvYywgZWxlbU11bHQpOworICAgICAg
Z2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIGdyaWRSZXMgKiBncmlkUmVzKTsKKworICAgICAg
Ly8gUmVhZCBiYWNrCisgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisKKyAgICAgIC8vIFZlcmlmeQorICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKKyAgICAgICAgICBpZiAoIWlzS25vd25Db2xvcihwaXhl
bHNbNCAqICh3aWR0aCAqIHkgKyB4KSArIDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpeGVsc1s0ICogKHdpZHRoICogeSArIHgpICsgMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxzWzQgKiAod2lkdGggKiB5ICsgeCkgKyAyXSkpIHsKKyAgICAgICAgICAgIG9r
ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoZmlyc3RGYWlsaW5nUGl4ZWwgPT0gbnVsbCkgewor
ICAgICAgICAgICAgICBmaXJzdEZhaWxpbmdQaXhlbCA9IFt4LCB5XTsKKyAgICAgICAgICAgICAg
Zmlyc3RGYWlsaW5nVmFsdWUgPSBbcGl4ZWxzWzQgKiAod2lkdGggKiB5ICsgeCkgKyAwXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzWzQgKiAod2lkdGggKiB5ICsg
eCkgKyAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzWzQgKiAo
d2lkdGggKiB5ICsgeCkgKyAyXV07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICAgIHZhciBlbmRpbmdMaW5lV2lkdGggPSBsaW5lV2lkdGgg
LSAzMTsKKyAgICBsaW5lV2lkdGggLT0gMjU0MDsKKyAgICBpZiAob2spIHsKKyAgICAgIHRlc3RQ
YXNzZWQoIkdvb2QgcmVuZGVyaW5nIHJlc3VsdHMgZm9yIGxpbmVXaWR0aHMgIiArCisgICAgICAg
ICAgICAgICAgIHN0YXJ0aW5nTGluZVdpZHRoICsgIi4uLiIgKyBlbmRpbmdMaW5lV2lkdGggKwor
ICAgICAgICAgICAgICAgICAiIGF0IGVsZW1NdWx0PSIgKyBlbGVtTXVsdCk7CisgICAgfSBlbHNl
IHsKKyAgICAgIHRlc3RGYWlsZWQoImZvciBsaW5lV2lkdGg9IiArIGxpbmVXaWR0aCArICIsIGVs
ZW1NdWx0PSIgKyBlbGVtTXVsdCArCisgICAgICAgICAgICAgICAgICI6IGZpcnN0IGZhaWxpbmcg
cGl4ZWwgKCIgKyBmaXJzdEZhaWxpbmdQaXhlbFswXSArICIsICIgKyBmaXJzdEZhaWxpbmdQaXhl
bFsxXSArICIpIHdhcyAoIiArCisgICAgICAgICAgICAgICAgIGZpcnN0RmFpbGluZ1ZhbHVlWzBd
ICsgIiwgIiArCisgICAgICAgICAgICAgICAgIGZpcnN0RmFpbGluZ1ZhbHVlWzFdICsgIiwgIiAr
CisgICAgICAgICAgICAgICAgIGZpcnN0RmFpbGluZ1ZhbHVlWzJdICsgIiksIHNob3VsZCBiZSAo
MCwgMCwgMCkgb3Igb25lIG9mIGtub3duIGNvbG9ycyIpOworICAgIH0KKyAgICBlbGVtTXVsdCAr
PSA3MzsKKyAgICBzZXRUaW1lb3V0KHJ1bk9uZUl0ZXJhdGlvbiwgMCk7CisgIH0gZWxzZSB7Cisg
ICAgZmluaXNoVGVzdCgpOworICB9Cit9CisKK21haW4oKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dW5pZm9ybXMvdW5pZm9ybS1kZWZhdWx0LXZhbHVlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1k
ZWZhdWx0LXZhbHVlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MjE4MmMyNzJjZTcxNDdhYzhiNjgwODNh
YjRkZGQ3YzQ4M2M4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLWRlZmF1
bHQtdmFsdWVzLmh0bWwKQEAgLTAsMCArMSwzMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIHVuaWZvcm0gZGVmYXVsdCB2YWx1
ZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdC1ldmFsLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIy
Ij4gPC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyMCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjAi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1
bmlmb3JtICQodHlwZSkgdV91bmlmb3JtOworCitib29sIGlzWmVybygkKHR5cGUpIHZhbHVlKSB7
CisgJChjaGVjayk7Cit9CisKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdDb2xvciA9IGlzWmVy
byh1X3VuaWZvcm0pID8gdmVjNCgwLDEsMCwxKSA6IHZlYzQoMSwwLDAsMSk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIxIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRy
aWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3VuaWZvcm0gJCh0
eXBlKSB1X3VuaWZvcm07CisKK2Jvb2wgaXNaZXJvKCQodHlwZSkgdmFsdWUpIHsKKyAgICQoY2hl
Y2spOworfQorCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOwor
ICAgIHZfY29sb3IgPSBpc1plcm8odV91bmlmb3JtKSA/IHZlYzQoMCwxLDAsMSkgOiB2ZWM0KDEs
MCwwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyMSIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2
X2NvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyMiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgi
PgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlm
b3JtICQodHlwZSkgdV91bmlmb3JtWzJdOworCitib29sIGlzWmVybygkKHR5cGUpIHZhbHVlKSB7
CisgICQoY2hlY2spOworfQorCit2b2lkIG1haW4oKQoreworICBnbF9GcmFnQ29sb3IgPSBpc1pl
cm8odV91bmlmb3JtWzFdKSA/IHZlYzQoMCwxLDAsMSkgOiB2ZWM0KDEsMCwwLDEpOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyMyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgor
YXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordmFyeWluZyB2ZWM0IHZfY29sb3I7Cit1bmlmb3Jt
ICQodHlwZSkgdV91bmlmb3JtWzJdOworCitib29sIGlzWmVybygkKHR5cGUpIHZhbHVlKSB7Cisg
ICAkKGNoZWNrKTsKK30KKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3Np
dGlvbjsKKyAgICB2X2NvbG9yID0gaXNaZXJvKHVfdW5pZm9ybVsxXSkgPyB2ZWM0KDAsMSwwLDEp
IDogdmVjNCgxLDAsMCwxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlcjMiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5
aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdl9j
b2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9u
KCk7CisKK3ZhciB0ZXN0cyA9IFsKK3sgdHlwZTogJ2Zsb2F0JywKKyAgY2hlY2s6ICJyZXR1cm4g
dmFsdWUgPT0gMC4wIiwKKyAgc2V0Rm46IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9ybTFm
KGxvYywgMy4wKTsgfQorfSwKK3sgdHlwZTogJ2ludCcsCisgIGNoZWNrOiAicmV0dXJuIHZhbHVl
ID09IDAiLAorICBzZXRGbjogZnVuY3Rpb24oZ2wsIGxvYykgeyBnbC51bmlmb3JtMWkobG9jLCAz
LjApOyB9Cit9LAoreyB0eXBlOiAnYm9vbCcsCisgIGNoZWNrOiAicmV0dXJuIHZhbHVlID09IGZh
bHNlIiwKKyAgc2V0Rm46IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9ybTFpKGxvYywgMSk7
IH0KK30sCit7IHR5cGU6ICd2ZWMyJywKKyAgY2hlY2s6ICJyZXR1cm4gdmFsdWVbMF0gPT0gMC4w
ICYmIHZhbHVlWzFdID09IDAuMCIsCisgIHNldEZuOiBmdW5jdGlvbihnbCwgbG9jKSB7IGdsLnVu
aWZvcm0yZihsb2MsIDMuMCwgMy4wKTsgfQorfSwKK3sgdHlwZTogJ3ZlYzMnLAorICBjaGVjazog
InJldHVybiB2YWx1ZVswXSA9PSAwLjAgJiYgdmFsdWVbMV0gPT0gMC4wICYmIHZhbHVlWzJdID09
IDAuMCIsCisgIHNldEZuOiBmdW5jdGlvbihnbCwgbG9jKSB7IGdsLnVuaWZvcm0zZihsb2MsIDMu
MCwgMy4wLCAzLjApOyB9Cit9LAoreyB0eXBlOiAndmVjNCcsCisgIGNoZWNrOiAicmV0dXJuIHZh
bHVlWzBdID09IDAuMCAmJiB2YWx1ZVsxXSA9PSAwLjAgJiYgdmFsdWVbMl0gPT0gMC4wICYmIHZh
bHVlWzNdID09IDAuMCIsCisgIHNldEZuOiBmdW5jdGlvbihnbCwgbG9jKSB7IGdsLnVuaWZvcm00
Zihsb2MsIDMuMCwgMy4wLCAzLjAsIDMuMCk7IH0KK30sCit7IHR5cGU6ICdpdmVjMicsCisgIGNo
ZWNrOiAicmV0dXJuIHZhbHVlWzBdID09IDAgJiYgdmFsdWVbMV0gPT0gMCIsCisgIHNldEZuOiBm
dW5jdGlvbihnbCwgbG9jKSB7IGdsLnVuaWZvcm0yaShsb2MsIDMsIDMpOyB9Cit9LAoreyB0eXBl
OiAnaXZlYzMnLAorICBjaGVjazogInJldHVybiB2YWx1ZVswXSA9PSAwICYmIHZhbHVlWzFdID09
IDAgJiYgdmFsdWVbMl0gPT0gMCIsCisgIHNldEZuOiBmdW5jdGlvbihnbCwgbG9jKSB7IGdsLnVu
aWZvcm0zaShsb2MsIDMsIDMsIDMpOyB9Cit9LAoreyB0eXBlOiAnaXZlYzQnLAorICBjaGVjazog
InJldHVybiB2YWx1ZVswXSA9PSAwICYmIHZhbHVlWzFdID09IDAgJiYgdmFsdWVbMl0gPT0gMCAm
JiB2YWx1ZVszXSA9PSAwIiwKKyAgc2V0Rm46IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9y
bTRpKGxvYywgMywgMywgMywgMyk7IH0KK30sCit7IHR5cGU6ICdidmVjMicsCisgIGNoZWNrOiAi
cmV0dXJuIHZhbHVlWzBdID09IGZhbHNlICYmIHZhbHVlWzFdID09IGZhbHNlIiwKKyAgc2V0Rm46
IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9ybTJpKGxvYywgMSwgMSk7IH0KK30sCit7IHR5
cGU6ICdidmVjMycsCisgIGNoZWNrOiAicmV0dXJuIHZhbHVlWzBdID09IGZhbHNlICYmIHZhbHVl
WzFdID09IGZhbHNlICYmIHZhbHVlWzJdID09IGZhbHNlIiwKKyAgc2V0Rm46IGZ1bmN0aW9uKGds
LCBsb2MpIHsgZ2wudW5pZm9ybTNpKGxvYywgMSwgMSwgMSk7IH0KK30sCit7IHR5cGU6ICdidmVj
NCcsCisgIGNoZWNrOiAicmV0dXJuIHZhbHVlWzBdID09IGZhbHNlICYmIHZhbHVlWzFdID09IGZh
bHNlICYmIHZhbHVlWzJdID09IGZhbHNlICYmIHZhbHVlWzNdID09IGZhbHNlIiwKKyAgc2V0Rm46
IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9ybTRpKGxvYywgMSwgMSwgMSwgMSk7IH0KK30s
Cit7IHR5cGU6ICdtYXQyJywKKyAgY2hlY2s6CisgICAgInJldHVybiAiICsKKyAgICAidmFsdWVb
MF1bMF0gPT0gMC4wICYmIHZhbHVlWzBdWzFdID09IDAuMCAmJiAiICsKKyAgICAidmFsdWVbMV1b
MF0gPT0gMC4wICYmIHZhbHVlWzFdWzBdID09IDAuMCIsCisgIHZhbHVlQ2hlY2s6CisgICAgInJl
dHVybiAiICsKKyAgICAidmFsdWVbMF0gPT0gMC4wICYmIHZhbHVlWzFdID09IDAuMCAmJiAiICsK
KyAgICAidmFsdWVbMl0gPT0gMC4wICYmIHZhbHVlWzNdID09IDAuMCIsCisgIHNldEZuOiBmdW5j
dGlvbihnbCwgbG9jKSB7IGdsLnVuaWZvcm1NYXRyaXgyZnYobG9jLCBmYWxzZSwgWzEsIDEsIDEs
IDFdKTsgfQorfSwKK3sgdHlwZTogJ21hdDMnLAorICBjaGVjazoKKyAgICAicmV0dXJuICIgKwor
ICAgICJ2YWx1ZVswXVswXSA9PSAwLjAgJiYgdmFsdWVbMV1bMF0gPT0gMC4wICYmIHZhbHVlWzJd
WzBdID09IDAuMCAmJiAiICsKKyAgICAidmFsdWVbMF1bMV0gPT0gMC4wICYmIHZhbHVlWzFdWzFd
ID09IDAuMCAmJiB2YWx1ZVsyXVsxXSA9PSAwLjAgJiYgIiArCisgICAgInZhbHVlWzBdWzJdID09
IDAuMCAmJiB2YWx1ZVsxXVsyXSA9PSAwLjAgJiYgdmFsdWVbMl1bMl0gPT0gMC4wIiwKKyAgdmFs
dWVDaGVjazoKKyAgICAicmV0dXJuICIgKworICAgICJ2YWx1ZVswXSA9PSAwLjAgJiYgdmFsdWVb
MV0gPT0gMC4wICYmIHZhbHVlWzJdID09IDAuMCAmJiAiICsKKyAgICAidmFsdWVbM10gPT0gMC4w
ICYmIHZhbHVlWzRdID09IDAuMCAmJiB2YWx1ZVs1XSA9PSAwLjAgJiYgIiArCisgICAgInZhbHVl
WzZdID09IDAuMCAmJiB2YWx1ZVs3XSA9PSAwLjAgJiYgdmFsdWVbOF0gPT0gMC4wIiwKKyAgc2V0
Rm46IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5pZm9ybU1hdHJpeDNmdihsb2MsIGZhbHNlLCBb
MSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMV0pOyB9Cit9LAoreyB0eXBlOiAnbWF0NCcsCisgIGNo
ZWNrOgorICAgICJyZXR1cm4gIiArCisgICAgInZhbHVlWzBdWzBdID09IDAuMCAmJiB2YWx1ZVsx
XVswXSA9PSAwLjAgJiYgdmFsdWVbMl1bMF0gPT0gMC4wICYmIHZhbHVlWzNdWzBdID09IDAuMCAm
JiAiICsKKyAgICAidmFsdWVbMF1bMV0gPT0gMC4wICYmIHZhbHVlWzFdWzFdID09IDAuMCAmJiB2
YWx1ZVsyXVsxXSA9PSAwLjAgJiYgdmFsdWVbM11bMV0gPT0gMC4wICYmICIgKworICAgICJ2YWx1
ZVswXVsyXSA9PSAwLjAgJiYgdmFsdWVbMV1bMl0gPT0gMC4wICYmIHZhbHVlWzJdWzJdID09IDAu
MCAmJiB2YWx1ZVszXVsyXSA9PSAwLjAgJiYgIiArCisgICAgInZhbHVlWzBdWzNdID09IDAuMCAm
JiB2YWx1ZVsxXVszXSA9PSAwLjAgJiYgdmFsdWVbMl1bM10gPT0gMC4wICYmIHZhbHVlWzNdWzNd
ID09IDAuMCIsCisgIHZhbHVlQ2hlY2s6CisgICAgInJldHVybiAiICsKKyAgICAidmFsdWVbIDBd
ID09IDAuMCAmJiB2YWx1ZVsgMV0gPT0gMC4wICYmIHZhbHVlWyAyXSA9PSAwLjAgJiYgdmFsdWVb
IDNdID09IDAuMCAmJiAiICsKKyAgICAidmFsdWVbIDRdID09IDAuMCAmJiB2YWx1ZVsgNV0gPT0g
MC4wICYmIHZhbHVlWyA2XSA9PSAwLjAgJiYgdmFsdWVbIDddID09IDAuMCAmJiAiICsKKyAgICAi
dmFsdWVbIDhdID09IDAuMCAmJiB2YWx1ZVsgOV0gPT0gMC4wICYmIHZhbHVlWzEwXSA9PSAwLjAg
JiYgdmFsdWVbMTFdID09IDAuMCAmJiAiICsKKyAgICAidmFsdWVbMTJdID09IDAuMCAmJiB2YWx1
ZVsxM10gPT0gMC4wICYmIHZhbHVlWzE0XSA9PSAwLjAgJiYgdmFsdWVbMTVdID09IDAuMCIsCisg
IHNldEZuOiBmdW5jdGlvbihnbCwgbG9jKSB7IGdsLnVuaWZvcm1NYXRyaXg0ZnYobG9jLCBmYWxz
ZSwgWzEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDFdKTsgfQor
fSwKK3sgdHlwZTogJ3NhbXBsZXIyRCcsCisgIGNoZWNrOgorICAgICJ2ZWM0IHYgPSB0ZXh0dXJl
MkQodmFsdWUsIHZlYzIoMCwgMCkpOyIgKworICAgICJyZXR1cm4gdi54ID09IDEuMCAmJiB2Lnkg
PT0gMS4wICYmIHYueiA9PSAxLjAgJiYgdi53ID09IDEuMCIsCisgIHZhbHVlQ2hlY2s6CisgICAg
InJldHVybiB2YWx1ZSA9PSAwIiwKKyAgc2V0Rm46IGZ1bmN0aW9uKGdsLCBsb2MpIHsgZ2wudW5p
Zm9ybTFpKGxvYywgMSk7IH0KK30sCit7IHR5cGU6ICdzYW1wbGVyQ3ViZScsCisgIGNoZWNrOgor
ICAgICJ2ZWM0IHYgPSB0ZXh0dXJlQ3ViZSh2YWx1ZSwgdmVjMygwLCAwLCAwKSk7IiArCisgICAg
InJldHVybiB2LnggPT0gMS4wICYmIHYueSA9PSAxLjAgJiYgdi56ID09IDEuMCAmJiB2LncgPT0g
MS4wIiwKKyAgdmFsdWVDaGVjazoKKyAgICAicmV0dXJuIHZhbHVlID09IDAiLAorICBzZXRGbjog
ZnVuY3Rpb24oZ2wsIGxvYykgeyBnbC51bmlmb3JtMWkobG9jLCAxKTsgfQorfSwKK107CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsK
K3ZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKK3ZhciBjaGVja0Zu
OworCit3dHUuc2V0dXBVbml0UXVhZChnbCwgWzAsIDFdKTsKKworLy8gU2V0IHVuaXQgMCB0byBh
IG5vbi0wIHRleHR1cmUuCit2YXIgaGF2ZVZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0KKyAgICBn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKSA+PSAyOwor
dmFyIHRleDJEID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwordmFyIHRleEN1YmUgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgyRCk7CitnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXhDdWJlKTsKKwordmFyIHBpeGVsID0gbmV3
IFVpbnQ4QXJyYXkoWzI1NSwgMjU1LCAyNTUsIDI1NV0pOwordmFyIHRhcmdldHMgPSBbCisgIGds
LlRFWFRVUkVfMkQsCisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1ksCisgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9aLAorICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oKK107Citm
b3IgKHZhciBpaSA9IDA7IGlpIDwgdGFyZ2V0cy5sZW5ndGg7ICsraWkpIHsKKyAgICBnbC50ZXhJ
bWFnZTJEKAorICAgICAgICB0YXJnZXRzW2lpXSwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgcGl4ZWwpOworfQorCit2YXIgc2hhZGVyVGVtcGxhdGVzID0g
WworeyB2czogInZzaGFkZXIwIiwgZnM6ICJmc2hhZGVyMCIsIHR5cGU6ICdmJyB9LAoreyB2czog
InZzaGFkZXIxIiwgZnM6ICJmc2hhZGVyMSIsIHR5cGU6ICd2JyB9LAoreyB2czogInZzaGFkZXIy
IiwgZnM6ICJmc2hhZGVyMiIsIHR5cGU6ICdmJyB9LAoreyB2czogInZzaGFkZXIzIiwgZnM6ICJm
c2hhZGVyMyIsIHR5cGU6ICd2JyB9LAorXTsKKworLy8gR2V0IHNoYWRlciB0ZW1wbGF0ZXMKK2Zv
ciAodmFyIGlpID0gMDsgaWkgPCBzaGFkZXJUZW1wbGF0ZXMubGVuZ3RoOyArK2lpKSB7CisgIHZh
ciB0ZW1wbGF0ZSA9IHNoYWRlclRlbXBsYXRlc1tpaV07CisgIHRlbXBsYXRlLnZzID0gd3R1Lmdl
dFNjcmlwdCh0ZW1wbGF0ZS52cyk7CisgIHRlbXBsYXRlLmZzID0gd3R1LmdldFNjcmlwdCh0ZW1w
bGF0ZS5mcyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RUeXBlKHRlc3QpIHsKKyAgZGVidWcoIiIpOwor
ICBkZWJ1ZygidGVzdGluZzogIiArIHRlc3QudHlwZSk7CisKKyAgZm9yICh2YXIgaWkgPSAwOyBp
aSA8IHNoYWRlclRlbXBsYXRlcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgdGVtcGxhdGUgPSBz
aGFkZXJUZW1wbGF0ZXNbaWldOworCisgICAgaWYgKHRlc3QudHlwZS5zdWJzdHJpbmcoMCwgNykg
PT0gInNhbXBsZXIiICYmCisgICAgICAgIHRlbXBsYXRlLnR5cGUgPT0gJ3YnICYmCisgICAgICAg
ICFoYXZlVmVydGV4VGV4dHVyZUltYWdlVW5pdHMpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0K
KworICAgIHZhciB2cyA9IHd0dS5yZXBsYWNlUGFyYW1zKHRlbXBsYXRlLnZzLCB0ZXN0KTsKKyAg
ICB2YXIgZnMgPSB3dHUucmVwbGFjZVBhcmFtcyh0ZW1wbGF0ZS5mcywgdGVzdCk7CisKKyAgICB3
dHUuYWRkU2hhZGVyU291cmNlKGMsICJ2ZXJ0ZXggc2hhZGVyIiwgdnMpOworICAgIHd0dS5hZGRT
aGFkZXJTb3VyY2UoYywgImZyYWdtZW50IHNoYWRlciIsIGZzKTsKKworICAgIHZhciB2cyA9IHd0
dS5sb2FkU2hhZGVyKGdsLCB2cywgZ2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIGZzID0gd3R1
LmxvYWRTaGFkZXIoZ2wsIGZzLCBnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIHZhciBwcm9ncmFt
ID0gd3R1LmNyZWF0ZVByb2dyYW0oZ2wsIHZzLCBmcyk7CisKKyAgICBnbC51c2VQcm9ncmFtKHBy
b2dyYW0pOworCisgICAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
dV91bmlmb3JtWzFdIik7CisgICAgaWYgKCFsb2MpIHsKKyAgICAgICAgdmFyIGxvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV91bmlmb3JtIik7CisgICAgfQorCisgICAgdmFy
IHZhbHVlID0gZ2wuZ2V0VW5pZm9ybShwcm9ncmFtLCBsb2MpOworICAgIFRlc3RFdmFsKCJjaGVj
a0ZuID0gZnVuY3Rpb24odmFsdWUpIHsiICsgKHRlc3QudmFsdWVDaGVjayA/IHRlc3QudmFsdWVD
aGVjayA6IHRlc3QuY2hlY2spICsgIjt9Iik7CisgICAgaWYgKGNoZWNrRm4odmFsdWUpKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoInVuaWZvcm0gaXMgemVybyIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRlc3RGYWlsZWQoInVuaWZvcm0gaXMgbm90IHplcm8iKTsKKyAgICB9CisKKyAgICBkZWJ1
ZygiZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgemVybyIpOworICAgIHd0dS5jbGVhckFuZERyYXdV
bml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAi
c2hvdWxkIGJlIGdyZWVuIiwgMCk7CisKKyAgICBkZWJ1ZygidGVzdCB0ZXN0IGJ5IHNldHRpbmcg
dmFsdWUiKTsKKyAgICB0ZXN0LnNldEZuKGdsLCBsb2MpOworCisgICAgd3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0s
ICJzaG91bGQgYmUgcmVkIiwgMCk7CisKKyAgICBkZWJ1ZygicmUtbGlua2luZyBzaG91bGQgcmVz
ZXQgdG8gZGVmYXVsdHMiKTsKKyAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIHd0
dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwg
MjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIiwgMCk7CisKKyAgICBnbC5kZWxldGVQcm9n
cmFtKHByb2dyYW0pOworICAgIGdsLmRlbGV0ZVNoYWRlcih2cyk7CisgICAgZ2wuZGVsZXRlU2hh
ZGVyKGZzKTsKKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hv
dWxkIGJlIG5vIEdMIGVycm9ycyIpOworICB9Cit9CisKK3ZhciB0ZXN0TmR4ID0gMDsKK2Z1bmN0
aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIHRlc3RUeXBlKHRlc3RzW3Rlc3ROZHgrK10pOworICAg
IGlmICh0ZXN0TmR4ID49IHRlc3RzLmxlbmd0aCkgeworICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7CisgICAgfQor
fQorCitydW5OZXh0VGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3Jt
LWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLWxvY2F0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2IxYzE4NWNhZmI1MGE3ZGVkNzA4ZWU1NTg4YjBiZDU3ZGE5YzMyOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDk2IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIFdlYkdM
VW5pZm9ybUxvY2F0aW9uIEFQSSIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Y29udGV4dEEgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgY29udGV4dEIgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbUExID0gd3R1LmxvYWRTdGFuZGFyZFByb2dyYW0o
Y29udGV4dEEpOwordmFyIHByb2dyYW1BMiA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRl
eHRBKTsKK3ZhciBwcm9ncmFtQiA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHRCKTsK
K3ZhciBwcm9ncmFtUyA9IHd0dS5sb2FkUHJvZ3JhbUZyb21GaWxlKGNvbnRleHRBLCAiLi4vLi4v
cmVzb3VyY2VzL3N0cnVjdFVuaWZvcm1TaGFkZXIudmVydCIsICIuLi8uLi9yZXNvdXJjZXMvZnJh
Z21lbnRTaGFkZXIuZnJhZyIpOwordmFyIHByb2dyYW1WID0gd3R1LmxvYWRQcm9ncmFtRnJvbUZp
bGUoY29udGV4dEEsICIuLi8uLi9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQiLCAi
Li4vLi4vcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3ZhciBsb2NhdGlvbkEg
PSBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUExLCAndV9tb2RlbFZpZXdQcm9q
TWF0cml4Jyk7Cit2YXIgbG9jYXRpb25CID0gY29udGV4dEIuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4Jyk7Cit2YXIgbG9jYXRpb25TeCA9IGNvbnRl
eHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUywgInVfc3RydWN0LngiKTsKK3ZhciBsb2Nh
dGlvblN4MjsKK3ZhciBsb2NhdGlvbkFycmF5MCA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtUywgInVfYXJyYXlbMF0iKTsKK3ZhciBsb2NhdGlvbkFycmF5MSA9IGNvbnRleHRB
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUywgInVfYXJyYXlbMV0iKTsKK3ZhciBsb2NhdGlv
blZlYzQgPSBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVYsICJmdmFsNCIpOwor
Cit2YXIgdmVjID0gWzEsIDIsIDMsIDRdOwordmFyIG1hdCA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl07CisKK3d0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEudXNlUHJvZ3Jh
bShwcm9ncmFtQTIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250
ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b25BLCBmYWxzZSwgbWF0KSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwg
Y29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMSkiKTsKK3d0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29u
dGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRB
LnVuaWZvcm1NYXRyaXg0ZnYobnVsbCwgZmFsc2UsIG1hdCkiKTsKKword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51c2VQcm9n
cmFtKHByb2dyYW1TKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29u
dGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMzMzKSIpOwor
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJj
b250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJheTAsIDQuMCkiKTsKK3d0dS5zaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEudW5pZm9y
bTFmKGxvY2F0aW9uQXJyYXkxLCA1LjApIik7CisKK3Nob3VsZEJlKCJjb250ZXh0QS5nZXRVbmlm
b3JtKHByb2dyYW1TLCBsb2NhdGlvblN4KSIsICIzMzMiKTsKK3Nob3VsZEJlKCJjb250ZXh0QS5n
ZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvbkFycmF5MCkiLCAiNC4wIik7CitzaG91bGRCZSgi
Y29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25BcnJheTEpIiwgIjUuMCIpOwor
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwg
ImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVYpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm00ZnYobG9j
YXRpb25WZWM0LCB2ZWMpIik7CitzaG91bGRCZSgiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFt
ViwgbG9jYXRpb25WZWM0KSIsICJ2ZWMiKTsKKworc2hvdWxkQmVOdWxsKCJjb250ZXh0QS5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbVYsIFwiSURvbnRFeGlzdFwiKSIpOword3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5saW5r
UHJvZ3JhbShwcm9ncmFtQTEpIik7CisvLyBBZnRlciBsaW5raW5nIGFsbCBib3hlcyBhcmUgYmFk
Lgord3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9P
UEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1h
dCkiKTsKKworLy8gYWZ0ZXIgcmUtbGlua2luZyB0aGUgc2FtZSBwcm9ncmFtLCBhbGwgdW5pZm9y
bSBsb2NhdGlvbnMgYmVjb21lIGludmFsaWQuCit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNv
bnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMp
Iik7Citjb250ZXh0QS5zdGVuY2lsTWFzaygxKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEubGlua1Byb2dyYW0ocHJvZ3Jh
bVMpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSIpOword3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvblN4KSIpOworCisvLyBS
ZXRyaWV2ZSB0aGUgbG9jYXRpb25zIGFnYWluLCBhbmQgdGhleSBzaG91bGQgYmUgZ29vZC4KK2xv
Y2F0aW9uU3ggPSBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVMsICJ1X3N0cnVj
dC54Iik7Citsb2NhdGlvbkFycmF5MCA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtUywgInVfYXJyYXlbMF0iKTsKK2RlYnVnKCJoZXJlIik7Citjb250ZXh0QS5zdGVuY2lsTWFz
aygwKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VS
Uk9SLCAiY29udGV4dEEudW5pZm9ybTFpKGxvY2F0aW9uU3gsIDMpIik7Cit3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZv
cm0xZihsb2NhdGlvbkFycmF5MCwgMTIzKSIpOworc2hvdWxkQmUoImNvbnRleHRBLmdldFVuaWZv
cm0ocHJvZ3JhbVMsIGxvY2F0aW9uU3gpIiwgIjMiKTsKK3Nob3VsZEJlKCJjb250ZXh0QS5nZXRV
bmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvbkFycmF5MCkiLCAiMTIzIik7CisKKy8vIGdldFVuaWZv
cm1Mb2NhdGlvbiBzaG91bGQgcmV0dXJuIGEgZGlmZmVyZW50IG9iamVjdCBldmVyeXRpbWUsIHNo
b3VsZCBub3QgY2FjaGUgYW5kIHJldHVybiB0aGUgc2FtZSBvYmplY3QKK2RlYnVnKCJUZXN0aW5n
IHRoYXQgZ2V0VW5pZm9ybUxvY2F0aW9uIHJldHVybnMgYSBkaWZmZXJlbnQgb2JqZWN0IGV2ZXJ5
dGltZSIpOworbG9jYXRpb25TeCAgPSBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bVMsICJ1X3N0cnVjdC54Iik7Citsb2NhdGlvblN4MiA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtUywgInVfc3RydWN0LngiKTsKK3Nob3VsZEJlRmFsc2UoImxvY2F0aW9uU3gg
PT09IGxvY2F0aW9uU3gyIik7Citsb2NhdGlvblN4LmZvbyAgPSB7fTsKK2xvY2F0aW9uU3gyLmZv
byA9IHt9Oworc2hvdWxkQmVGYWxzZSgibG9jYXRpb25TeC5mb28gPT09IGxvY2F0aW9uU3gyLmZv
byIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2ODBjMGVh
YWU5MGMyYWU1N2QxY2U5NTlkNzhiODQ4Y2U3YTljYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3VuaWZv
cm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sCkBAIC0wLDAgKzEsMTExIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBzYW1w
bGVyIHVuaWZvcm1zIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBzdHlsZT0id2lkdGg6IDQw
cHg7IGhlaWdodDogNDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiBpbml0KCkKK3sKKyAgZGVzY3JpcHRpb24oCisgICAgICAiVGVzdHMgdGhhdCBvbmx5
IFVuaWZvcm0xaSBhbmQgVW5pZm9ybTFpdiBjYW4gYmUgdXNlZCB0byBzZXQiICsKKyAgICAgICJz
YW1wbGVyIHVuaWZvcm1zLiIpOworCisgIHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMyZCIpOworCisgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgdmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKKyAgdmFyIHRleHR1cmVMb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworCisgIGdsLnVuaWZvcm0xaSh0ZXh0dXJlTG9j
LCAxKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAidW5p
Zm9ybTFpIGNhbiBzZXQgYSBzYW1wbGVyIHVuaWZvcm0iKTsKKyAgZ2wudW5pZm9ybTFpdih0ZXh0
dXJlTG9jLCBbMV0pOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAg
ICAgICJ1bmlmb3JtMWl2IGNhbiBzZXQgYSBzYW1wbGVyIHVuaWZvcm0iKTsKKyAgZ2wudW5pZm9y
bTFmKHRleHR1cmVMb2MsIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICJ1bmlmb3JtMWYgcmV0dXJucyBJTlZBTElEX09QRVJBVElPTiBp
ZiBhdHRlbXB0aW5nIHRvIHNldCBhIHNhbXBsZXIgdW5pZm9ybSIpOworICBnbC51bmlmb3JtMWZ2
KHRleHR1cmVMb2MsIFsxXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLAorICAgICAgInVuaWZvcm0xZnYgcmV0dXJucyBJTlZBTElEX09QRVJBVElPTiBp
ZiBhdHRlbXB0aW5nIHRvIHNldCBhIHNhbXBsZXIgdW5pZm9ybSIpOworCisgIHZhciBtYXhUZXh0
dXJlVW5pdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0Vf
VU5JVFMpOworCisgIHZhciB0ZXN0VW5pZm9ybWkgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3Vj
Y2VzcyA9IHRydWU7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG1heFRleHR1cmVVbml0czsg
KytpaSkgeworICAgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIGlpKTsKKyAgICAgIHN1Y2Nl
c3MgPSBzdWNjZXNzICYmIChnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SKTsKKyAgICB9Cisg
ICAgZXhwZWN0VHJ1ZShzdWNjZXNzLCAidW5pZm9ybTFpIHdvcmtzIGZvciBhbnkgdmFsaWQgdGV4
dHVyZSB1bml0Iik7CisgIH07CisKKyAgdmFyIHRlc3RVbmlmb3JtaXYgPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgc3VjY2VzcyA9IHRydWU7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG1heFRl
eHR1cmVVbml0czsgKytpaSkgeworICAgICAgZ2wudW5pZm9ybTFpdih0ZXh0dXJlTG9jLCBbaWld
KTsKKyAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIChnbC5nZXRFcnJvcigpID09IGdsLk5PX0VS
Uk9SKTsKKyAgICB9CisgICAgZXhwZWN0VHJ1ZShzdWNjZXNzLCAidW5pZm9ybTFpdiB3b3JrcyBm
b3IgYW55IHZhbGlkIHRleHR1cmUgdW5pdCIpOworICB9OworCisgIHZhciBzdGVwcyA9IFsKKyAg
ICB0ZXN0VW5pZm9ybWksCisgICAgdGVzdFVuaWZvcm1pdiwKKyAgXTsKKworICB2YXIgZ2VuZXJh
dGVJbnZhbGlkVW5pZm9ybWlUZXN0cyA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHsKKyAgICByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc3VjY2VzcyA9IHRydWU7CisgICAgICBmb3IgKHZh
ciBpaSA9IHN0YXJ0OyBpaSA8IGVuZDsgKytpaSkgeworICAgICAgICBnbC51bmlmb3JtMWkodGV4
dHVyZUxvYywgaWkpOworICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAoZ2wuZ2V0RXJyb3Io
KSA9PSBnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgIH0KKyAgICAgIGV4cGVjdFRydWUoc3VjY2Vz
cywgInVuaWZvcm0xaSBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRSBmb3IgaW52YWxpZCB0ZXh0dXJl
IHVuaXRzIDB4IiArIHN0YXJ0LnRvU3RyaW5nKDE2KSArICIgdG8gMHgiICsgZW5kLnRvU3RyaW5n
KDE2KSk7CisgICAgfTsKKyAgfTsKKworICB2YXIgZ2VuZXJhdGVJbnZhbGlkVW5pZm9ybWl2VGVz
dHMgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgdmFyIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgZm9yICh2YXIgaWkgPSBzdGFydDsgaWkgPCBl
bmQ7ICsraWkpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFpdih0ZXh0dXJlTG9jLCBbaWldKTsKKyAg
ICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgKGdsLmdldEVycm9yKCkgPT0gZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICB9CisgICAgICBleHBlY3RUcnVlKHN1Y2Nlc3MsICJ1bmlmb3JtMWl2IGdl
bmVyYXRlcyBJTlZBTElEX1ZBTFVFIGZvciBpbnZhbGlkIHRleHR1cmUgdW5pdHMgMHgiICsgc3Rh
cnQudG9TdHJpbmcoMTYpICsgIiB0byAweCIgKyBlbmQudG9TdHJpbmcoMTYpKTsKKyAgICB9Owor
ICB9OworCisgIHZhciBzdGVwID0gMHgxMDAwOworICBmb3IgKHZhciBpaSA9IG1heFRleHR1cmVV
bml0czsgaWkgPCAweDEwMDAwOyBpaSArPSBzdGVwKSB7CisgICAgc3RlcHMucHVzaChnZW5lcmF0
ZUludmFsaWRVbmlmb3JtaVRlc3RzKGlpLCBpaSArIHN0ZXApKTsKKyAgICBzdGVwcy5wdXNoKGdl
bmVyYXRlSW52YWxpZFVuaWZvcm1pdlRlc3RzKGlpLCBpaSArIHN0ZXApKTsKKyAgfQorCisgIHN0
ZXBzLnB1c2goZmluaXNoVGVzdCk7CisgIHd0dS5ydW5TdGVwcyhzdGVwcyk7Cit9CisKK2luaXQo
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXZhbHVlcy1wZXItcHJvZ3JhbS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdW5pZm9ybXMvdW5pZm9ybS12YWx1ZXMtcGVyLXByb2dyYW0uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZmY2OTNmMzQ3YTAyOTQ5YjI4ZDIzMDk3YjA2YWI4ZmU4ZmE3MmJkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdW5pZm9ybXMvdW5pZm9ybS12YWx1ZXMtcGVyLXByb2dyYW0uaHRtbApAQCAtMCwwICsx
LDE3OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgdW5pZm9ybSB2YWx1ZXMgYXJlIHBlciBwcm9ncmFtIGNvbmZvcm1hbmNlIHRl
c3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWlu
KCkgeworICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJh
Z0NvbG9yID0gdl9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlclRlc3Qi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit1
bmlmb3JtICQodHlwZSkgJChuYW1lMSk7Cit1bmlmb3JtICQodHlwZSkgJChuYW1lMik7Cit1bmlm
b3JtIGJvb2wgdV9zZWxlY3Q7Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbigpIHsK
KyAgJCh0eXBlKSB2YWx1ZSA9IHVfc2VsZWN0ID8gJChuYW1lMikgOiAkKG5hbWUxKTsKKyAgdl9j
b2xvciA9ICQoY29udmVyc2lvbik7CisgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclRlc3QiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtICQodHlwZSkgJChuYW1lMSk7
Cit1bmlmb3JtICQodHlwZSkgJChuYW1lMik7Cit1bmlmb3JtIGJvb2wgdV9zZWxlY3Q7Cit2b2lk
IG1haW4oKSB7CisgICQodHlwZSkgdmFsdWUgPSB1X3NlbGVjdCA/ICQobmFtZTIpIDogJChuYW1l
MSk7CisgIGdsX0ZyYWdDb2xvciA9ICQoY29udmVyc2lvbik7Cit9Cis8L3NjcmlwdD4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBweDsg
aGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biBpbml0KCkgeworICBkZXNjcmlwdGlvbigpOworCisgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
ICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisgIHd0dS5zZXR1cFVu
aXRRdWFkKGdsKTsKKyAgdmFyIHZ0ZW1wbGF0ZSA9IHd0dS5nZXRTY3JpcHQoInZzaGFkZXIiKTsK
KyAgdmFyIGZ0ZW1wbGF0ZSA9IHd0dS5nZXRTY3JpcHQoImZzaGFkZXIiKTsKKyAgdmFyIHZ0ZW1w
bGF0ZVRlc3QgPSB3dHUuZ2V0U2NyaXB0KCJ2c2hhZGVyVGVzdCIpOworICB2YXIgZnRlbXBsYXRl
VGVzdCA9IHd0dS5nZXRTY3JpcHQoImZzaGFkZXJUZXN0Iik7CisKKyAgdmFyIHNoYWRlcnMgPSBb
CisgICAgW3Z0ZW1wbGF0ZSwgZnRlbXBsYXRlVGVzdF0sCisgICAgW3Z0ZW1wbGF0ZVRlc3QsIGZ0
ZW1wbGF0ZV0sCisgIF07CisKKyAgdmFyIG5hbWVzID0gWworICAgIFsidV92YWx1ZTEiLCAidV92
YWx1ZTIiXSwKKyAgICBbImEiLCAiYiJdLAorICAgIFsieCIsICJ5Il0sCisgICAgWyJ5IiwgInoi
XSwKKyAgICBbInkiLCAidSJdLAorICAgIFsiYTAwMDAwIiwgImEwMDAwMSJdLAorICBdOworICB2
YXIgdGVzdExpc3QgPSBbCisgICAgeyB0eXBlOiAiZmxvYXQiLAorICAgICAgY29udmVyc2lvbjog
InZlYzQodmFsdWUsIDAsIDAsIDApIiwKKyAgICAgIHZhbHVlczogW1s2NF0sIFsxMjhdXSwKKyAg
ICAgIGZ1bmM6ICd1bmlmb3JtMWZ2JywKKyAgICB9LAorICAgIHsgdHlwZTogInZlYzIiLAorICAg
ICAgY29udmVyc2lvbjogInZlYzQodmFsdWUsIDAsIDApIiwKKyAgICAgIHZhbHVlczogW1s2NCwg
MTI4XSwgWzEyOCwgNjRdXSwKKyAgICAgIGZ1bmM6ICd1bmlmb3JtMmZ2JywKKyAgICB9LAorICAg
IHsgdHlwZTogInZlYzMiLAorICAgICAgY29udmVyc2lvbjogInZlYzQodmFsdWUsIDApIiwKKyAg
ICAgIHZhbHVlczogW1s2NCwgMTI4LCAxOTJdLCBbMTkyLCAxMjgsIDY0XV0sCisgICAgICBmdW5j
OiAndW5pZm9ybTNmdicsCisgICAgfSwKKyAgICB7IHR5cGU6ICJ2ZWM0IiwKKyAgICAgIGNvbnZl
cnNpb246ICJ2ZWM0KHZhbHVlKSIsCisgICAgICB2YWx1ZXM6IFtbNjQsIDEyOCwgMTkyLCAyNTVd
LCBbMjU1LCAxOTIsIDEyOCwgNjRdXSwKKyAgICAgIGZ1bmM6ICd1bmlmb3JtNGZ2JywKKyAgICB9
LAorICBdOworCisgIHZhciBjbG9uZSA9IGZ1bmN0aW9uKG9iaikgeworICAgIHZhciBuID0geyB9
OworICAgIGZvciAodmFyICRrZXkgaW4gb2JqKSB7CisgICAgICBuWyRrZXldID0gb2JqWyRrZXld
OworICAgIH0KKyAgICByZXR1cm4gbjsKKyAgfTsKKworICB2YXIgdGVzdHMgPSBbXTsKKyAgbmFt
ZXMuZm9yRWFjaChmdW5jdGlvbihuYW1lUGFpcikgeworICAgIHRlc3RMaXN0LmZvckVhY2goZnVu
Y3Rpb24odGVzdCkgeworICAgICAgdmFyIHQgPSBjbG9uZSh0ZXN0KTsKKyAgICAgIHQubmFtZTEg
PSBuYW1lUGFpclswXTsKKyAgICAgIHQubmFtZTIgPSBuYW1lUGFpclsxXTsKKyAgICAgIHRlc3Rz
LnB1c2godCk7CisgICAgfSk7CisgIH0pOworCisgIHZhciBydW5UZXN0ID0gZnVuY3Rpb24odGVz
dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdGluZzogIiArIHRlc3QudHlwZSk7
CisgICAgc2hhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHNoYWRlclBhaXIpIHsKKyAgICAgIHZhciBw
cm9ncyA9IFtdOworICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDI7ICsraWkpIHsKKyAgICAg
ICAgdmFyIHZzb3VyY2UgPSB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJQYWlyWzBdLCB0ZXN0KTsK
KyAgICAgICAgdmFyIGZzb3VyY2UgPSB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJQYWlyWzFdLCB0
ZXN0KTsKKyAgICAgICAgaWYgKCFpaSkgeworICAgICAgICAgIHd0dS5hZGRTaGFkZXJTb3VyY2Uo
Y29uc29sZSwgInZlcnRleCBzaGFkZXI6IHR5cGUgPSAiICsgdGVzdC50eXBlICsgIiB3aXRoIG5h
bWVzICIgKyB0ZXN0Lm5hbWUxICsgIiwgIiArIHRlc3QubmFtZTIsIHZzb3VyY2UpOworICAgICAg
ICAgIHd0dS5hZGRTaGFkZXJTb3VyY2UoY29uc29sZSwgImZyYWdtZW50IHNoYWRlcjogdHlwZSA9
ICIgKyB0ZXN0LnR5cGUgKyAiIHdpdGggbmFtZXMgIiArIHRlc3QubmFtZTEgKyAiLCAiICsgdGVz
dC5uYW1lMiwgZnNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsLCBbdnNvdXJjZSwgZnNvdXJjZV0sIFsiYV9wb3NpdGlvbiJdKTsKKyAg
ICAgICAgdmFyIGluZm8gPSB7CisgICAgICAgICAgcHJvZ3JhbTogcHJvZ3JhbSwKKyAgICAgICAg
ICB2YWx1ZUxvY3M6IFtnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgdGVzdC5uYW1lMSks
CisgICAgICAgICAgICAgICAgICAgICAgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIHRl
c3QubmFtZTIpXSwKKyAgICAgICAgICBzZWxlY3RMb2M6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidV9zZWxlY3QiKSwKKyAgICAgICAgfTsKKyAgICAgICAgdmFyIHYxID0gdGVzdC52
YWx1ZXNbMF07CisgICAgICAgIHZhciB2MiA9IHRlc3QudmFsdWVzWzFdOworICAgICAgICBpZiAo
aWkpIHsKKyAgICAgICAgICB2YXIgdCA9IHYxOworICAgICAgICAgIHYxID0gdjI7CisgICAgICAg
ICAgdjIgPSB0OworICAgICAgICB9CisgICAgICAgIGluZm8uZXhwZWN0ID0gW3YxLCB2Ml07Cisg
ICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCAyOyArK2pqKSB7CisgICAgICAgICAgdmFyIGlu
cHV0ID0gaW5mby5leHBlY3RbampdLm1hcChmdW5jdGlvbih2KSB7IHJldHVybiB2IC8gMjU1OyB9
KTsKKyAgICAgICAgICBnbFt0ZXN0LmZ1bmNdKGluZm8udmFsdWVMb2NzW2pqXSwgaW5wdXQpOwor
ICAgICAgICB9CisgICAgICAgIHByb2dzLnB1c2goaW5mbyk7CisgICAgICB9CisgICAgICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgMjsgKytpaSkgeworICAgICAgICBwcm9ncy5mb3JFYWNoKGZ1bmN0
aW9uKGluZm8pIHsKKyAgICAgICAgICBnbC51c2VQcm9ncmFtKGluZm8ucHJvZ3JhbSk7CisgICAg
ICAgICAgZ2wudW5pZm9ybTFpKGluZm8uc2VsZWN0TG9jLCBpaSk7CisgICAgICAgICAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIGlu
Zm8uZXhwZWN0W2lpXSwgdW5kZWZpbmVkLCAxKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAg
ICBwcm9ncy5mb3JFYWNoKGZ1bmN0aW9uKGluZm8pIHsKKyAgICAgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShpbmZvLnByb2dyYW0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0KKyAgdGVzdHMuZm9yRWFj
aChmdW5jdGlvbih0ZXN0KXsKKyAgICBydW5UZXN0KHRlc3QpOworICB9KTsKK30KK2luaXQoKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL2F0dHJpYnMvZ2wtYmluZEF0dHJpYkxvY2F0aW9uLWFsaWFzaW5nLWluYWN0
aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvYXR0cmlicy9nbC1iaW5kQXR0cmliTG9jYXRpb24tYWxpYXNpbmctaW5hY3Rp
dmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYmJiYzQzZDZhZTBkMGIxNTE4NmUzYWJjYWQ1Nzk5ZTQ1MDE0
OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2F0dHJpYnMvZ2wtYmluZEF0dHJpYkxvY2F0aW9uLWFs
aWFzaW5nLWluYWN0aXZlLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvZ2wt
YmluZGF0dHJpYmxvY2F0aW9uLWFsaWFzaW5nLmpzIj48L3NjcmlwdD4KKzx0aXRsZT5iaW5kQXR0
cmliTG9jYXRpb24gd2l0aCBhbGlhc2luZyAtIGluYWN0aXZlIGF0dHJpYnV0ZXM8L3RpdGxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCIg
c3R5bGU9IndpZHRoOiA4cHg7IGhlaWdodDogOHB4OyI+PC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2
ZXJ0ZXhTaGFkZXJTdGF0aWNhbGx5VXNlZEJ1dEluYWN0aXZlIiB0eXBlPSJ0ZXh0L3NvbWV0aGlu
Zy1ub3QtamF2YXNjcmlwdCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKK2luICQodHlwZV8xKSBhXzE7CitpbiAkKHR5cGVfMikgYV8yOwordm9pZCBtYWluKCkgewor
ICAgIGdsX1Bvc2l0aW9uID0gdHJ1ZSA/ICQoZ2xfUG9zaXRpb25fMSkgOiAkKGdsX1Bvc2l0aW9u
XzIpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJVbnVzZWQiIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworaW4gJCh0eXBlXzEpIGFfMTsKK2luICQodHlwZV8yKSBhXzI7Cit2
b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVz
IGNvbWJpbmF0aW9ucyBvZiB2YWxpZCBpbmFjdGl2ZSBhdHRyaWJ1dGVzIGNhbm5vdCBiZSBib3Vu
ZCB0byB0aGUgc2FtZSBsb2NhdGlvbiB3aXRoIGJpbmRBdHRyaWJMb2NhdGlvbi4gR0xTTCBFUyAz
LjAwLjYgc2VjdGlvbiAxMi40Ni4iKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9LCAyKTsKK3ZhciBnbEZy
YWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHd0dS5zaW1wbGVDb2xvckZyYWdtZW50
U2hhZGVyRVNTTDMwMCwgZ2wuRlJBR01FTlRfU0hBREVSKTsKKworZGVidWcoIlRlc3Rpbmcgd2l0
aCBzaGFkZXIgdGhhdCBoYXMgc3RhdGljYWxseSB1c2VkIGJ1dCBpbmFjdGl2ZSBhdHRyaWJ1dGVz
LiIpOworcnVuQmluZEF0dHJpYkxvY2F0aW9uQWxpYXNpbmdUZXN0KHd0dSwgZ2wsIGdsRnJhZ21l
bnRTaGFkZXIsIHd0dS5nZXRTY3JpcHQoJ3ZlcnRleFNoYWRlclN0YXRpY2FsbHlVc2VkQnV0SW5h
Y3RpdmUnKSk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIHdpdGggc2hhZGVyIHRoYXQg
aGFzIGVudGlyZWx5IHVudXNlZCBhdHRyaWJ1dGVzLiIpOworcnVuQmluZEF0dHJpYkxvY2F0aW9u
QWxpYXNpbmdUZXN0KHd0dSwgZ2wsIGdsRnJhZ21lbnRTaGFkZXIsIHd0dS5nZXRTY3JpcHQoJ3Zl
cnRleFNoYWRlclVudXNlZCcpKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJp
Yi1pLXJlbmRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi1pLXJlbmRlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVmY2JjNzg2ZmVlMDc1Y2E4NDNiODJmY2QyMjExYjg0ZTUwMmExYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvYXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLWktcmVuZGVyLmh0bWwK
QEAgLTAsMCArMSwxMDggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSd2c2hhZGVyJyB0eXBlPSd4LXNoYWRlci94LXZlcnRleCc+I3Zl
cnNpb24gMzAwIGVzCitsYXlvdXQobG9jYXRpb249MCkgaW4gaXZlYzIgcDsKK2xheW91dChsb2Nh
dGlvbj0xKSBpbiBpdmVjNCBhOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocC54ICsgYS54ICsgYS55ICsgYS56ICsgYS53LCBwLnksIDAuMCwgMTAuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9J3ZzaGFkZXJfdW5zaWduZWQnIHR5cGU9J3gtc2hhZGVyL3gtdmVy
dGV4Jz4jdmVyc2lvbiAzMDAgZXMKK2xheW91dChsb2NhdGlvbj0wKSBpbiBpdmVjMiBwOworbGF5
b3V0KGxvY2F0aW9uPTEpIGluIHV2ZWM0IGE7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0
aW9uID0gdmVjNChwLnggKyBpbnQoYS54ICsgYS55ICsgYS56ICsgYS53KSwgcC55LCAwLjAsIDEw
LjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSdmc2hhZGVyJyB0eXBlPSd4LXNoYWRlci94
LWZyYWdtZW50Jz4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworbGF5
b3V0KGxvY2F0aW9uPTApIG91dCB2ZWM0IG9Db2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgb0Nv
bG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gY2hlY2tSZWRQb3J0aW9uKGdsLCB3LCBsb3csIGhpZ2gp
IHsKKyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodyAqIHcgKiA0KTsKKyAgICBnbC5yZWFk
UGl4ZWxzKDAsIDAsIHcsIHcsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAg
dmFyIGkgPSAwOworICAgIGZvciAoOyBpIDwgdzsgKytpKSB7CisgICAgICAgIGlmIChidWZbaSAq
IDQgKyAwXSA9PSAyNTUgJiYgYnVmW2kgKiA0ICsgMV0gPT0gMCAmJiBidWZbaSAqIDQgKyAyXSA9
PSAwICYmIGJ1ZltpICogNCArIDNdID09IDI1NSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvdyA8PSBpICYmIGkgPD0gaGlnaDsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgndGVzdGJlZCcsIHsgcHJlc2VydmVEcmF3aW5nQnVm
ZmVyIDogdHJ1ZSB9LCAyKTsKKyAgICBpZiAoIWdsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ2Nv
dWxkIG5vdCBjcmVhdGUgY29udGV4dCcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZh
ciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSk7
CisgICAgdmFyIHByb2dyYW1fdW5zaWduZWQgPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFk
ZXJfdW5zaWduZWQnLCAnZnNoYWRlciddKTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICAgIHZhciBwb3MgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgbmV3IEludDMyQXJyYXkoWy0xMCwgLTEwLCAxMCwgLTEwLCAtMTAsIDEwLCAxMCwgMTBd
KSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIoMCwgMiwg
Z2wuSU5ULCA0ICogMiwgMCk7CisKKyAgICBkZWJ1ZygnVGVzdCB2ZXJ0ZXhBdHRyaWJJNFt1aV1b
dl0gYnkgc2V0dGluZyBkaWZmZXJlbnQgY29tYmluYXRpb25zIHRoYXQgYWRkIHVwIHRvIDE1IGFu
ZCB1c2UgdGhhdCB3aGVuIHJlbmRlcmluZy4nKTsKKyAgICB2YXIgdmFscyA9IFtbMiwgLTMsIDYs
IDEwXSwgWzEsIDMsIDEsIDEwXSwgWy0xMCwgMywgMiwgMjBdLCBbNSwgNiwgMiwgMl1dOworICAg
IHZhciB0ZXN0cyA9IFsndmVydGV4QXR0cmliSTRpJywgJ3ZlcnRleEF0dHJpYkk0dWknLCAndmVy
dGV4QXR0cmliSTRpdicsICd2ZXJ0ZXhBdHRyaWJJNHVpdiddOworCisgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IDQ7ICsraWkpIHsKKyAgICAgICAgaWYgKGlpICUgMiA9PSAwKSB7CisgICAgICAg
ICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtX3Vuc2lnbmVkKTsKKyAgICAgICAgfQorICAgICAgICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAg
ICAgIGlmIChpaSA8IDIpIHsKKyAgICAgICAgICAgIGdsW3Rlc3RzW2lpXV0oMSwgdmFsc1tpaV1b
MF0sIHZhbHNbaWldWzFdLCB2YWxzW2lpXVsyXSwgdmFsc1tpaV1bM10pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZ2xbdGVzdHNbaWldXSgxLCB2YWxzW2lpXSk7CisgICAgICAgIH0K
KyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNCk7CisKKyAgICAg
ICAgaWYgKGNoZWNrUmVkUG9ydGlvbihnbCwgNTAsIDUwICogMC43LCA1MCAqIDAuOCkpIHsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoJ0F0dHJpYnV0ZSBvZiAnICsgdGVzdHNbaWldICsgJyB3YXMg
c2V0IGNvcnJlY3RseScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgnQXR0cmlidXRlIG9mICcgKyB0ZXN0c1tpaV0gKyAnIHdhcyBub3Qgc2V0IGNvcnJlY3RseScp
OworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9InRlc3RiZWQiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbignVmVyaWZ5IHRoYXQgdXNpbmcgY29uc3RhbnQg
YXR0cmlidXRlcyBmb3IgdmVydGV4QXR0cmliSSogd29ya3MuJyk7CitydW5UZXN0KCk7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvYXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLW5vcm1hbGl6ZWQtaW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYXR0
cmlicy9nbC12ZXJ0ZXgtYXR0cmliLW5vcm1hbGl6ZWQtaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFl
MjRiZTYwOGEwNzE2YmJjMTRjOTljMTc2NjE4ZjQ3NDVlZTY3YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9hdHRyaWJzL2dsLXZlcnRleC1hdHRyaWItbm9ybWFsaXplZC1pbnQuaHRtbApAQCAtMCwwICsx
LDgwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPldlYkdMIDIgTm9ybWFsaXpl
ZCBWZXJ0ZXggQXR0cmlidXRlcyBDb25mb3JtYW5jZSBUZXN0PC90aXRsZT4KKyAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52
YXMgd2lkdGg9MSBoZWlnaHQ9MT48L2NhbnZhcz4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBpZD0idmVy
dGV4LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworICAg
ICAgICBsYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMzIHZlcnRleDsKKworICAgICAgICBvdXQg
ZmxvYXQgbm9ybUF0dHJpYjsKKworICAgICAgICB2b2lkIG1haW4odm9pZCkgeworICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZlcnRleC54eSwgMCwgMSk7CisgICAgICAgICAgICBub3Jt
QXR0cmliID0gdmVydGV4Lno7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0
IGlkPSJmcmFnbWVudC1zaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9u
IDMwMCBlcworICAgICAgICBpbiBsb3dwIGZsb2F0IG5vcm1BdHRyaWI7CisKKyAgICAgICAgbGF5
b3V0KGxvY2F0aW9uPTApIG91dCBsb3dwIHZlYzQgZnJhZ0NvbG9yOworCisgICAgICAgIHZvaWQg
bWFpbih2b2lkKSB7CisgICAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHZlYzMobm9ybUF0dHJp
YiA9PSAtMS4wID8gMS4wIDogMC4wKSwgMSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgICAgICAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgJ3VzZSBzdHJpY3Qn
OworCisgICAgICAgICAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKKyAgICAgICAgICAg
IHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignY2Fu
dmFzJyksIG51bGwsIDIpOworCisgICAgICAgICAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFBy
b2dyYW0oZ2wsIFsndmVydGV4LXNoYWRlcicsICdmcmFnbWVudC1zaGFkZXInXSk7CisKKyAgICAg
ICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIHZhciBidWZmZXIg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBidWZmZXIpOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIG5ldyBJbnQ4QXJyYXkoWworICAgICAgICAgICAgICAgIC8vIEhlcmUgd2Ugc2V0IHRoZSB0
aGlyZCBjb21wb25lbnQgKHRoZSBvbmUgdGhhdCdzIGFjdHVhbGx5IHRlc3RlZCkKKyAgICAgICAg
ICAgICAgICAvLyB0byAoTUlOX0lOVCArIDEpLiBJZiBub24temVyby1wcmVzZXJ2aW5nIHJ1bGVz
IGFyZSB1c2VkLCBpdCdsbCBiZQorICAgICAgICAgICAgICAgIC8vIGNvbnZlcnRlZCB0byBhIGZs
b2F0IHRoYXQncyBzbGlnaHRseSBncmVhdGVyIHRoYW4gLTEuIElmIHplcm8tcHJlc2VydmluZwor
ICAgICAgICAgICAgICAgIC8vIHJ1bGVzIGFyZSB1c2VkLCBhcyB0aGUgR0xFUyAzIHNwZWMgcmVx
dWlyZXMsIHJlc3VsdCBvZiBjb252ZXJzaW9uCisgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGJl
IGV4YWN0bHkgLTEuCisgICAgICAgICAgICAgICAgLTB4ODAsICAweDdmLCAtMHg3ZiwKKyAgICAg
ICAgICAgICAgICAgMHg3ZiwgIDB4N2YsIC0weDdmLAorICAgICAgICAgICAgICAgIC0weDgwLCAt
MHg3ZiwgLTB4N2YsCisgICAgICAgICAgICAgICAgLTB4ODAsIC0weDdmLCAtMHg3ZiwKKyAgICAg
ICAgICAgICAgICAgMHg3ZiwgIDB4N2YsIC0weDdmLAorICAgICAgICAgICAgICAgICAweDdmLCAt
MHg4MCwgLTB4N2YKKyAgICAgICAgICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAg
ICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgICAgICAgICAgZ2wudmVydGV4
QXR0cmliUG9pbnRlcigwLCAzLCBnbC5CWVRFLCB0cnVlLCAwLCAwKTsKKworICAgICAgICAgICAg
Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNik7CisKKyAgICAgICAgICAgIHd0
dS5jaGVja0NhbnZhcyhnbCwgWzI1NSwgMjU1LCAyNTUsIDI1NV0sICJzaG91bGQgYmUgb3BhcXVl
IHdoaXRlIik7CisgICAgICAgIH0oKSk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0aGF0IGNvbnZlcnNpb24gb2Ygbm9ybWFsaXplZCBz
aWduZWQgaW50IGF0dHJpYnV0ZXMgdG8gZmxvYXRzIHVzZXMgemVyby1wcmVzZXJ2aW5nIHJ1bGUu
Jyk7CisgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJp
Yi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4LWF0dHJpYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMTJm
MDg4ZDFjZWEwNTRlMWI3ZmU2MTUxOGMxNTllNDBlMWUyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
YXR0cmlicy9nbC12ZXJ0ZXgtYXR0cmliLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdmVydGV4
QXR0cmliIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorCis8c2NyaXB0Pgor
dmFyIGNvbnRleHRWZXJzaW9uID0gMjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Rlc3RzL2dsLXZlcnRleC1hdHRyaWIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9hdHRyaWJzL2dsLXZlcnRleGF0dHJpYmlwb2ludGVyLW9mZnNldHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9h
dHRyaWJzL2dsLXZlcnRleGF0dHJpYmlwb2ludGVyLW9mZnNldHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
N2Y2NTU0NjQ3ZmJkOTc2OTIyYzZlZWE0ODYzOGZmZmQ1NGMxOWMyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmliaXBvaW50ZXItb2Zmc2V0cy5odG1sCkBAIC0wLDAg
KzEsMTU0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT52ZXJ0ZXhBdHRyaWJJUG9pbnRlciBvZmZzZXRzIHRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4K
K1RoZXJlIGlzIHN1cHBvc2VkIHRvIGJlIGFuIGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQn
cyBub3QgaW1wb3J0YW50LgorPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2xheW91dChsb2NhdGlvbj0wKSBpbiBp
dmVjNCBhUG9zaXRpb247CitsYXlvdXQobG9jYXRpb249MSkgaW4gdmVjNCBhQ29sb3I7CitvdXQg
dmVjNCB2Q29sb3I7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9z
aXRpb24pOworICAgIHZDb2xvciA9IGFDb2xvcjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlk
PSJ2c2hhZGVyX3Vuc2lnbmVkIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCitsYXlvdXQobG9jYXRpb249MCkgaW4gdXZlYzQgYVBvc2l0aW9uOworbGF5b3V0KGxvY2F0
aW9uPTEpIGluIHZlYzQgYUNvbG9yOworb3V0IHZlYzQgdkNvbG9yOwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uKTsKKyAgICB2Q29sb3IgPSBhQ29sb3I7
Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZl
YzQgdkNvbG9yOworbGF5b3V0KGxvY2F0aW9uPTApIG91dCB2ZWM0IG9Db2xvcjsKK3ZvaWQgbWFp
bigpCit7CisgICAgb0NvbG9yID0gdkNvbG9yOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiBpbml0KCkKK3sKKyAgICBkZXNjcmlwdGlvbigidGVzdCB2
ZXJ0ZXhBdHRyaWJJUG9pbnRlciBvZmZzZXRzIHdvcmsiKTsKKworICAgIHZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKKyAgICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwg
dW5kZWZpbmVkLCAyKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsi
dnNoYWRlciIsICJmc2hhZGVyIl0pOworICAgIHZhciBwcm9ncmFtX3Vuc2lnbmVkID0gd3R1LnNl
dHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyX3Vuc2lnbmVkIiwgImZzaGFkZXIiXSk7CisKKyAgICB2
YXIgdGVzdHMgPSBbCisgICAgICB7IGRhdGE6IG5ldyBJbnQzMkFycmF5KFsgMCwgMSwgMCwgMSwg
MCwgMCwgMCwgMCwgMCBdKSwKKyAgICAgICAgdHlwZTogZ2wuSU5ULAorICAgICAgICBjb21wb25l
bnRTaXplOiA0LAorICAgICAgfSwKKyAgICAgIHsgZGF0YTogbmV3IFVpbnQzMkFycmF5KFsgMCwg
MSwgMCwgMSwgMCwgMCwgMCwgMCwgMCBdKSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5U
LAorICAgICAgICBjb21wb25lbnRTaXplOiA0LAorICAgICAgfSwKKyAgICAgIHsgZGF0YTogbmV3
IFVpbnQxNkFycmF5KFsgMCwgMzI3NjcsIDAsIDMyNzY3LCAwLCAwLCAwLCAwLCAwIF0pLAorICAg
ICAgICB0eXBlOiBnbC5TSE9SVCwKKyAgICAgICAgY29tcG9uZW50U2l6ZTogMiwKKyAgICAgIH0s
CisgICAgICB7IGRhdGE6IG5ldyBVaW50MTZBcnJheShbIDAsIDY1NTM1LCAwLCA2NTUzNSwgMCwg
MCwgMCwgMCwgMCBdKSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfU0hPUlQsCisgICAgICAg
IGNvbXBvbmVudFNpemU6IDIsCisgICAgICB9LAorICAgICAgeyBkYXRhOiBuZXcgVWludDhBcnJh
eShbIDAsIDEyNywgMCwgMTI3LCAwLCAwLCAwLCAwLCAwIF0pLAorICAgICAgICB0eXBlOiBnbC5C
WVRFLAorICAgICAgICBjb21wb25lbnRTaXplOiAxLAorICAgICAgfSwKKyAgICAgIHsgZGF0YTog
bmV3IFVpbnQ4QXJyYXkoWyAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAwIF0pLAorICAgICAgICB0
eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICBjb21wb25lbnRTaXplOiAxLAorICAgICAg
fQorICAgIF07CisKKyAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDEwMjQsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgIHZhciBrTnVtVmVydHMgPSAzOwor
ICAgIHZhciBrTnVtQ29tcG9uZW50cyA9IDM7CisKKyAgICB2YXIgY291bnQgPSAwOworICAgIGZv
ciAodmFyIHR0ID0gMDsgdHQgPCB0ZXN0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgdmFyIHRl
c3QgPSB0ZXN0c1t0dF07CisgICAgICAgIGZvciAodmFyIG9vID0gMDsgb28gPCAzOyArK29vKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBzcyA9IDA7IHNzIDwgMzsgKytzcykgeworICAgICAgICAg
ICAgICAgIHZhciBvZmZzZXQgPSAob28gKyAxKSAqIHRlc3QuY29tcG9uZW50U2l6ZTsKKyAgICAg
ICAgICAgICAgICB2YXIgY29sb3IgPSAoY291bnQgJSAyKSA/IFsxLCAwLCAwLCAxXSA6IFswLCAx
LCAwLCAxXTsKKyAgICAgICAgICAgICAgICB2YXIgc3RyaWRlID0gdGVzdC5jb21wb25lbnRTaXpl
ICoga051bUNvbXBvbmVudHMgKyB0ZXN0LmNvbXBvbmVudFNpemUgKiBzczsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNrIHdpdGggIiArIHd0
dS5nbEVudW1Ub1N0cmluZyhnbCwgdGVzdC50eXBlKSArICIgYXQgb2Zmc2V0OiAiICsgb2Zmc2V0
ICsgIiB3aXRoIHN0cmlkZToiICsgc3RyaWRlKTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdC50
eXBlID09IGdsLklOVCB8fCB0ZXN0LnR5cGUgPT0gZ2wuU0hPUlQgfHwgdGVzdC50eXBlID09IGds
LkJZVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFt
KHByb2dyYW1fdW5zaWduZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBn
bC52ZXJ0ZXhBdHRyaWI0ZnYoMSwgY29sb3IpOworICAgICAgICAgICAgICAgIHZhciBkYXRhID0g
bmV3IFVpbnQ4QXJyYXkodGVzdC5jb21wb25lbnRTaXplICoga051bVZlcnRzICoga051bUNvbXBv
bmVudHMgKyBzdHJpZGUgKiAoa051bVZlcnRzIC0gMSkpOworICAgICAgICAgICAgICAgIHZhciB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkodGVzdC5kYXRhLmJ1ZmZlcik7CisgICAgICAgICAgICAgICAg
dmFyIHNpemUgPSB0ZXN0LmNvbXBvbmVudFNpemUgKiBrTnVtQ29tcG9uZW50czsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwga051bVZlcnRzOyArK2pqKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBvZmYxID0gamogKiBzaXplOworICAgICAgICAgICAgICAgICAgICB2
YXIgb2ZmMiA9IGpqICogc3RyaWRlOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB6eiA9
IDA7IHp6IDwgc2l6ZTsgKyt6eikgeworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmYy
ICsgenpdID0gdmlld1tvZmYxICsgenpdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBvZmZzZXQsIGRhdGEpOworICAgICAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYklQb2lu
dGVyKDAsIDMsIHRlc3QudHlwZSwgc3RyaWRlLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAg
ICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisKKyAgICAgICAg
ICAgICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNTAgKiA1MCAqIDQpOworICAgICAgICAg
ICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgNTAsIDUwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBidWYpOworCisgICAgICAgICAgICAgICAgdmFyIGJsYWNrID0gWzAsIDAsIDAsIDBdOwor
ICAgICAgICAgICAgICAgIHZhciBvdGhlciA9IFtjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAy
NTUsIGNvbG9yWzJdICogMjU1LCBjb2xvclszXSAqIDI1NV07CisgICAgICAgICAgICAgICAgdmFy
IG90aGVyTXNnID0gInNob3VsZCBiZSAiICsgKChjb3VudCAlIDIpID8gInJlZCIgOiAiZ3JlZW4i
KQorICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIGJs
YWNrLCAic2hvdWxkIGJlIGJsYWNrIiwgMCk7CisgICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgMCwgNDksIDEsIDEsIGJsYWNrLCAic2hvdWxkIGJlIGJsYWNrIiwgMCk7Cisg
ICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMjYsIDQwLCAxLCAxLCBvdGhl
ciwgb3RoZXJNc2csIDApOworICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDI2LCAyNywgMSwgMSwgb3RoZXIsIG90aGVyTXNnLCAwKTsKKyAgICAgICAgICAgICAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCA0MCwgMjcsIDEsIDEsIG90aGVyLCBvdGhlck1zZywgMCk7Cisg
ICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKworaW5pdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJpcG9pbnRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmliaXBvaW50ZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lY2VmYzZkNGUwN2YyYTQ1NmIwYjBlY2QwNmFjMzI3YjM3ZmYzOGNiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmliaXBvaW50ZXIuaHRtbApAQCAtMCwwICsxLDEy
NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgdmVydGV4QXR0cmliSVBvaW50ZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBjaGVja3MgdmVydGV4QXR0cmliSVBvaW50ZXIgYmVoYXZpb3JzIGluIFdlYkdMIDIuIik7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiLCB1bmRl
ZmluZWQsIDIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgIGRl
YnVnKCIiKTsKKyAgZGVidWcoIkNoZWNraW5nIGdsLnZlcnRleEF0dHJpYklQb2ludGVyLiIpOwor
CisgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKDAsIDMsIGdsLklOVCwgMCwgMCk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgInZlcnRleEF0dHJpYklQb2lu
dGVyIHNob3VsZCBzdWNjZWVkIGlmIG5vIGJ1ZmZlciBpcyBib3VuZCBhbmQgb2Zmc2V0IGlzIHpl
cm8iKTsKKworICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigwLCAzLCBnbC5JTlQsIDAsIDEyKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAi
dmVydGV4QXR0cmliSVBvaW50ZXIgc2hvdWxkIGZhaWwgaWYgbm8gYnVmZmVyIGlzIGJvdW5kIGFu
ZCBvZmZzZXQgaXMgbm9uLXplcm8iKTsKKworICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3Qp
OworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEludDMyQXJyYXkoMCksIGds
LlNUQVRJQ19EUkFXKTsKKworICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigwLCAxLCBnbC5GTE9B
VCwgMCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwKKyAg
ICAgICJ2ZXJ0ZXhBdHRyaWJJUG9pbnRlciBzaG91bGQgbm90IHN1cHBvcnQgRkxPQVQiKTsKKwor
ICB2YXIgY2hlY2tWZXJ0ZXhBdHRyaWJJUG9pbnRlciA9IGZ1bmN0aW9uKAorICAgICAgZ2wsIGVy
ciwgcmVhc29uLCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNldCkgeworICAgIGdsLnZlcnRleEF0
dHJpYklQb2ludGVyKDAsIHNpemUsIHR5cGUsIHN0cmlkZSwgb2Zmc2V0KTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBlcnIsCisgICAgICAgICJnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigw
LCAiICsgc2l6ZSArCisgICAgICAgICIsIGdsLiIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHR5
cGUpICsKKyAgICAgICAgIiwgIiArIHN0cmlkZSArCisgICAgICAgICIsICIgKyBvZmZzZXQgKwor
ICAgICAgICAiKSBzaG91bGQgIiArIChlcnIgPT0gZ2wuTk9fRVJST1IgPyAic3VjY2VlZCAiIDog
ImZhaWwgIikgKyByZWFzb24pOworICB9CisKKyAgdmFyIHR5cGVzID0gWworICAgIHsgdHlwZTpn
bC5CWVRFLCAgICAgICAgICAgYnl0ZXNQZXJDb21wb25lbnQ6IDEgfSwKKyAgICB7IHR5cGU6Z2wu
VU5TSUdORURfQllURSwgIGJ5dGVzUGVyQ29tcG9uZW50OiAxIH0sCisgICAgeyB0eXBlOmdsLlNI
T1JULCAgICAgICAgICBieXRlc1BlckNvbXBvbmVudDogMiB9LAorICAgIHsgdHlwZTpnbC5VTlNJ
R05FRF9TSE9SVCwgYnl0ZXNQZXJDb21wb25lbnQ6IDIgfSwKKyAgICB7IHR5cGU6Z2wuSU5ULCAg
ICAgICAgICAgIGJ5dGVzUGVyQ29tcG9uZW50OiA0IH0sCisgICAgeyB0eXBlOmdsLlVOU0lHTkVE
X0lOVCwgICBieXRlc1BlckNvbXBvbmVudDogNCB9LAorICBdOworCisgIGZvciAodmFyIGlpID0g
MDsgaWkgPCB0eXBlcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgaW5mbyA9IHR5cGVzW2lpXTsK
KyAgICBkZWJ1ZygiIik7CisgICAgZm9yICh2YXIgc2l6ZSA9IDE7IHNpemUgPD0gNDsgKytzaXpl
KSB7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBkZWJ1ZygiY2hlY2tpbmc6ICIgKyB3dHUuZ2xF
bnVtVG9TdHJpbmcoZ2wsIGluZm8udHlwZSkgKyAiIHdpdGggc2l6ZSAiICsgc2l6ZSk7CisgICAg
ICB2YXIgYnl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIGluZm8uYnl0ZXNQZXJDb21wb25lbnQ7Cisg
ICAgICB2YXIgb2Zmc2V0U2V0ID0gWworICAgICAgICAgIDAsCisgICAgICAgICAgMSwKKyAgICAg
ICAgICBpbmZvLmJ5dGVzUGVyQ29tcG9uZW50IC0gMSwKKyAgICAgICAgICBpbmZvLmJ5dGVzUGVy
Q29tcG9uZW50LAorICAgICAgICAgIGluZm8uYnl0ZXNQZXJDb21wb25lbnQgKyAxLAorICAgICAg
ICAgIGluZm8uYnl0ZXNQZXJDb21wb25lbnQgKiAyXTsKKyAgICAgIGZvciAodmFyIGpqID0gMDsg
amogPCBvZmZzZXRTZXQubGVuZ3RoOyArK2pqKSB7CisgICAgICAgIHZhciBvZmZzZXQgPSBvZmZz
ZXRTZXRbampdOworICAgICAgICBmb3IgKHZhciBrayA9IDA7IGtrIDwgb2Zmc2V0U2V0Lmxlbmd0
aDsgKytraykgeworICAgICAgICAgIHZhciBzdHJpZGUgPSBvZmZzZXRTZXRba2tdOworICAgICAg
ICAgIHZhciBlcnIgPSBnbC5OT19FUlJPUjsKKyAgICAgICAgICB2YXIgcmVhc29uID0gIiIKKyAg
ICAgICAgICBpZiAob2Zmc2V0ICUgaW5mby5ieXRlc1BlckNvbXBvbmVudCAhPSAwKSB7CisgICAg
ICAgICAgICByZWFzb24gPSAiYmVjYXVzZSBvZmZzZXQgaXMgYmFkIjsKKyAgICAgICAgICAgIGVy
ciA9IGdsLklOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoc3Ry
aWRlICUgaW5mby5ieXRlc1BlckNvbXBvbmVudCAhPSAwKSB7CisgICAgICAgICAgICByZWFzb24g
PSAiYmVjYXVzZSBzdHJpZGUgaXMgYmFkIjsKKyAgICAgICAgICAgIGVyciA9IGdsLklOVkFMSURf
T1BFUkFUSU9OOworICAgICAgICAgIH0KKyAgICAgICAgICBjaGVja1ZlcnRleEF0dHJpYklQb2lu
dGVyKAorICAgICAgICAgICAgICBnbCwgZXJyLCByZWFzb24sIHNpemUsIGluZm8udHlwZSwgc3Ry
aWRlLCBvZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHZhciBzdHJpZGUgPSBNYXRoLmZsb29y
KDI1NSAvIGluZm8uYnl0ZXNQZXJDb21wb25lbnQpICogaW5mby5ieXRlc1BlckNvbXBvbmVudDsK
KworICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsKKyAgICAgICAgICBjaGVja1ZlcnRleEF0dHJp
YklQb2ludGVyKAorICAgICAgICAgICAgICBnbCwgZ2wuTk9fRVJST1IsICJhdCBzdHJpZGUgbGlt
aXQiLAorICAgICAgICAgICAgICBzaXplLCBpbmZvLnR5cGUsIHN0cmlkZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICBjaGVja1ZlcnRleEF0dHJpYklQb2ludGVyKAorICAgICAgICAgICAgICBnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgIm92ZXIgc3RyaWRlIGxpbWl0IiwKKyAgICAgICAgICAgICAgc2l6ZSwg
aW5mby50eXBlLCBzdHJpZGUgKyBpbmZvLmJ5dGVzUGVyQ29tcG9uZW50LCBvZmZzZXQpOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvYXR0cmlicy9yZW5kZXItbm8tZW5hYmxlZC1hdHRyaWItYXJyYXlzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYXR0cmli
cy9yZW5kZXItbm8tZW5hYmxlZC1hdHRyaWItYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQxMTE5
ZmVjYmY1YjZlZWZjMDhmZmY0YTA0NjY2OGFmODUyZjM5NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9h
dHRyaWJzL3JlbmRlci1uby1lbmFibGVkLWF0dHJpYi1hcnJheXMuaHRtbApAQCAtMCwwICsxLDY2
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5WZXJpZnkgZHJhd2luZyB3aXRob3V0
IGFueSBlbmFibGVkIHZlcnRleCBhdHRyaWJ1dGUgYXJyYXlzPC90aXRsZT4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ndnNoYWRlcicgdHlwZT0neC1zaGFkZXIveC12ZXJ0ZXgn
PiN2ZXJzaW9uIDMwMCBlcworbGF5b3V0KGxvY2F0aW9uPTApIGluIHZlYzQgaW5Db2xvcjsKK291
dCB2ZWM0IHZhcnlpbmdDb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgdmFyeWluZ0NvbG9yID0g
aW5Db2xvcjsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAg
ICBnbF9Qb2ludFNpemUgPSAxLjA7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFkZXIn
IHR5cGU9J3gtc2hhZGVyL3gtZnJhZ21lbnQnPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CitpbiB2ZWM0IHZhcnlpbmdDb2xvcjsKK2xheW91dChsb2NhdGlvbj0wKSBv
dXQgdmVjNCBvQ29sb3I7Cit2b2lkIG1haW4oKQoreworICAgIG9Db2xvciA9IHZhcnlpbmdDb2xv
cjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgidGVzdENhbnZhcyIsIHVuZGVmaW5lZCwgMik7CisgICAgaWYgKCFn
bCkgeworICAgICAgICB0ZXN0RmFpbGVkKCdjb3VsZCBub3QgY3JlYXRlIGNvbnRleHQnKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10pOworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0ZigwLCAwLjAsIDEuMCwgMC4wLCAxLjApOwor
ICAgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9J
TlRTLCAwLCAxKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsgMCwgMjU1LCAwLCAyNTUgXSwg
IkNhbnZhcyBzaG91bGQgYmUgY292ZXJlZCBieSBhIHNpbmdsZSBncmVlbiBwb2ludCIpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RDYW52YXMiIHdpZHRo
PSIxIiBoZWlnaHQ9IjEiIHN0eWxlPSJ3aWR0aDogMzJweDsgaGVpZ2h0OiAzMnB4OyI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworcnVuVGVzdCgpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2J1ZmZlcnMvYm91bmQtYnVmZmVyLXNpemUtY2hhbmdlLXRlc3QuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9i
dWZmZXJzL2JvdW5kLWJ1ZmZlci1zaXplLWNoYW5nZS10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYx
ZDE1NGViMTk4OGE5YWU5ZjMzOTcyNjZiMTUxMTJmNDUwMjNhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9idWZmZXJzL2JvdW5kLWJ1ZmZlci1zaXplLWNoYW5nZS10ZXN0Lmh0bWwKQEAgLTAsMCArMSwx
MTkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIGJ1ZmZlciBzaXplIGNoYW5nZSB0ZXN0IGZvciBiaW5kQnVmZmVyQmFzZS9iaW5k
QnVmZmVyUmFuZ2U8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJXZWJHTCBidWZmZXIgc2l6ZSBjaGFuZ2UgZm9yIGJpbmRpbmdzIHRo
cm91Z2ggYmluZEJ1ZmZlckJhc2UvYmluZEJ1ZmZlclJhbmdlIik7CisKKy8vIFRoaXMgdGVzdCB2
ZXJpZmllcyB0aGUgRVMzIGJlaGF2aW9yLCB0aGF0IHRoZSBib3VuZCBidWZmZXIgcmFuZ2UgKG9m
ZnNldCwgc2l6ZSkgaXMgbm90CisvLyBsaW1pdGVkIGJ5IHRoZSBhY3R1YWwgYnVmZmVyIHNpemUs
IGFuZCB0aGUgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIHRoYXQgbm8gb3V0LW9mLXJhbmdlCisvLyBh
Y2Nlc3MgbWF5IGhhcHBlbi4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAyKTsKKworZGVidWco
IiIpOworZGVidWcoImJpbmRCdWZmZXJCYXNlIHdpdGggVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiB0YXJnZXQiKTsKK3ZhciBidWZmZXIxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVm
ZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWZmZXIxKTsKK3d0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICJDYWxsaW5nIGJpbmRCdWZmZXJC
YXNlIG9uIGEgYnVmZmVyIHdoZXJlIG5vIHN0b3JhZ2UgaXMgYWxsb2NhdGVkIHNob3VsZCBzdWNj
ZWVkLiIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX0JJTkRJTkcpIiwgImJ1ZmZlcjEiKTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywgMCkiLCAiYnVmZmVy
MSIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9TSVpFLCAwKSIsICIwIik7CitzaG91bGRCZSgiZ2wuZ2V0SW5kZXhlZFBhcmFt
ZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJULCAwKSIsICIwIik7CisKK2ds
LmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNCwgZ2wuU1RBVElDX0RS
QVcpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9CSU5ESU5HLCAwKSIsICJidWZmZXIxIik7CitzaG91bGRCZSgiZ2wuZ2V0SW5k
ZXhlZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUsIDApIiwgIjAi
KTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVJfU1RBUlQsIDApIiwgIjAiKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiYmluZEJ1ZmZlckJhc2Ugd2l0aCBVTklG
T1JNX0JVRkZFUiB0YXJnZXQiKTsKK3ZhciBidWZmZXIyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Citn
bC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMSwgYnVmZmVyMik7Cit3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAiQ2FsbGluZyBiaW5kQnVmZmVyQmFz
ZSBvbiBhIGJ1ZmZlciB3aGVyZSBubyBzdG9yYWdlIGlzIGFsbG9jYXRlZCBzaG91bGQgc3VjY2Vl
ZC4iKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfQklORElO
RykiLCAiYnVmZmVyMiIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5J
Rk9STV9CVUZGRVJfQklORElORywgMSkiLCAiYnVmZmVyMiIpOworc2hvdWxkQmUoImdsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU0laRSwgMSkiLCAiMCIpOworc2hvdWxk
QmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU1RBUlQsIDEpIiwg
IjAiKTsKKworZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgOCwgZ2wuU1RBVElDX0RS
QVcpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJf
QklORElORywgMSkiLCAiYnVmZmVyMiIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0
ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU0laRSwgMSkiLCAiMCIpOworc2hvdWxkQmUoImdsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU1RBUlQsIDEpIiwgIjAiKTsKKword3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
YmluZEJ1ZmZlclJhbmdlIHdpdGggVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiB0YXJnZXQiKTsK
K3ZhciBidWZmZXIzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmZmVyMywgNCwgOCk7Cit3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAiQ2FsbGluZyBiaW5kQnVmZmVyUmFuZ2Ug
b24gYSBidWZmZXIgd2hlcmUgbm8gc3RvcmFnZSBpcyBhbGxvY2F0ZWQgc2hvdWxkIHN1Y2NlZWQu
Iik7CitzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVJfQklORElORykiLCAiYnVmZmVyMyIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0
ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAwKSIsICJidWZmZXIzIik7
CitzaG91bGRCZSgiZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX1NJWkUsIDApIiwgIjgiKTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQsIDApIiwgIjQiKTsKKworZ2wuYnVm
ZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0LCBnbC5TVEFUSUNfRFJBVyk7
CitzaG91bGRCZSgiZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX0JJTkRJTkcsIDApIiwgImJ1ZmZlcjMiKTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVk
UGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSwgMCkiLCAiOCIpOwor
c2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TVEFSVCwgMCkiLCAiNCIpOworCitnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDEyLCBnbC5TVEFUSUNfRFJBVyk7CitzaG91bGRCZSgiZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsIDApIiwgImJ1
ZmZlcjMiKTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVJfU0laRSwgMCkiLCAiOCIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQ
YXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVCwgMCkiLCAiNCIpOwor
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJiaW5kQnVmZmVyUmFuZ2Ugd2l0aCBVTklGT1JNX0JVRkZFUiB0YXJnZXQiKTsKK3ZhciBi
dWZmZXI0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cit2YXIgb2Zmc2V0ID0gZ2wuZ2V0UGFyYW1ldGVy
KGdsLlVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQpOworZ2wuYmluZEJ1ZmZlclJhbmdl
KGdsLlVOSUZPUk1fQlVGRkVSLCAxLCBidWZmZXI0LCBvZmZzZXQsIDEyKTsKK3d0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICJDYWxsaW5nIGJpbmRCdWZmZXJSYW5nZSBv
biBhIGJ1ZmZlciB3aGVyZSBubyBzdG9yYWdlIGlzIGFsbG9jYXRlZCBzaG91bGQgc3VjY2VlZC4i
KTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfQklORElORyki
LCAiYnVmZmVyNCIpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9S
TV9CVUZGRVJfQklORElORywgMSkiLCAiYnVmZmVyNCIpOworc2hvdWxkQmUoImdsLmdldEluZGV4
ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU0laRSwgMSkiLCAiMTIiKTsKK3Nob3VsZEJl
KCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX1NUQVJULCAxKSIsICJv
ZmZzZXQiKTsKKworZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgb2Zmc2V0ICsgOCwg
Z2wuU1RBVElDX0RSQVcpOworc2hvdWxkQmUoImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5J
Rk9STV9CVUZGRVJfQklORElORywgMSkiLCAiYnVmZmVyNCIpOworc2hvdWxkQmUoImdsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU0laRSwgMSkiLCAiMTIiKTsKK3Nob3Vs
ZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX1NUQVJULCAxKSIs
ICJvZmZzZXQiKTsKKworZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgb2Zmc2V0ICsg
MTIsIGdsLlNUQVRJQ19EUkFXKTsKK3Nob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGds
LlVOSUZPUk1fQlVGRkVSX0JJTkRJTkcsIDEpIiwgImJ1ZmZlcjQiKTsKK3Nob3VsZEJlKCJnbC5n
ZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX1NJWkUsIDEpIiwgIjEyIik7Citz
aG91bGRCZSgiZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9TVEFSVCwg
MSkiLCAib2Zmc2V0Iik7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsK
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2J1ZmZlcnMvYnVmZmVyLWNvcHlpbmctY29udGVudHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9idWZmZXJzL2J1ZmZlci1jb3B5aW5nLWNvbnRlbnRzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDdkMTEwOTNiMjg4ZjM4MTMxOGE1YzhkODliNzRmZjA1NTQ3YzE1ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9idWZmZXJzL2J1ZmZlci1jb3B5aW5nLWNvbnRlbnRzLmh0bWwKQEAgLTAsMCArMSwxNzYg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIGJ1ZmZlciBjb3B5aW5nIGNvbnRlbnRzIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCBjb3B5aW5nIGEg
YnVmZmVyJ3MgY29udGVudHMgdG8gYW5vdGhlciBidWZmZXIgZ292ZXJuZWQgYnkgdGhlIFdlYkdM
IDIgc3BlYy4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAyKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIp
OworCit2YXIgdmVydGljZXMgPSBbCisgICAgIDEuMSwgIDEuMCwgIDEuMywKKyAgICAtMS4wLCAt
MS4wLCAgLTUuMCwKKyAgICAgNS4zLCAtMS4wLCAgMS4wCitdOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBjb3B5aW5nIGJldHdlZW4gYnVmZmVycyByZXR1cm5zIGNvcnJlY3QgZGF0YSIpOwor
CitmdW5jdGlvbiB0ZXN0Q29weUJ1ZmZlcnMoc3JjVGFyZ2V0LCBkc3RUYXJnZXQsIGNvcHlSZWFk
LCBjb3B5V3JpdGUpIHsKKyAgdmFyIG1zZyA9ICJDb3B5aW5nIGZyb20gIiArIHRhcmdldFRvU3Ry
aW5nKGdsLCBzcmNUYXJnZXQpICsKKyAgICAgICIgdG8gIiArIHRhcmdldFRvU3RyaW5nKGdsLCBk
c3RUYXJnZXQpCisgIGlmIChjb3B5UmVhZCAmJiBjb3B5V3JpdGUpCisgICAgbXNnICs9ICIgdmlh
IENPUFlfUkVBRF9CVUZGRVIgYW5kIENPUFlfV1JJVEVfQlVGRkVSIgorICBlbHNlIGlmIChjb3B5
UmVhZCkKKyAgICBtc2cgKz0gIiB2aWEgQ09QWV9SRUFEX0JVRkZFUiIKKyAgZWxzZSBpZiAoY29w
eVdyaXRlKQorICAgIG1zZyArPSAiIHZpYSBDT1BZX1dSSVRFX0JVRkZFUiIKKyAgZWxzZQorICAg
IG1zZyArPSAiIGRpcmVjdGx5IgorICBkZWJ1ZygiIikKKyAgZGVidWcobXNnKQorCisgIHZhciBz
cmNCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKSwgZHN0QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgIHZhciBvcmlnaW5hbERhdGEgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKTsKKyAg
dmFyIGxlbmd0aCA9IHZlcnRpY2VzLmxlbmd0aCAqIDQ7CisKKyAgZ2wuYmluZEJ1ZmZlcihzcmNU
YXJnZXQsIHNyY0J1ZmZlcik7CisgIGdsLmJ1ZmZlckRhdGEoc3JjVGFyZ2V0LCBvcmlnaW5hbERh
dGEsIGdsLlNUQVRJQ19EUkFXKTsKKyAgaWYgKGNvcHlSZWFkKQorICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQ09QWV9SRUFEX0JVRkZFUiwgc3JjQnVmZmVyKTsKKworICBnbC5iaW5kQnVmZmVyKGRzdFRh
cmdldCwgZHN0QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShkc3RUYXJnZXQsIG5ldyBGbG9hdDMy
QXJyYXkobGVuZ3RoKSwgZ2wuU1RBVElDX0RSQVcpOworICBpZiAoY29weVdyaXRlKQorICAgIGds
LmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklURV9CVUZGRVIsIGRzdEJ1ZmZlcik7CisKKyAgdmFyIGV4
cGVjdGVkR0xFcnJvciA9IGdsLk5PX0VSUk9SOworCisgIGlmIChzcmNUYXJnZXQgPT0gZHN0VGFy
Z2V0KSB7CisgICAgaWYgKCFjb3B5UmVhZCAmJiBjb3B5V3JpdGUpIHsKKyAgICAgIC8vIHNyY0J1
ZmZlciBpc24ndCBib3VuZCB0byBhbnkgdGFyZ2V0cyBiZWNhdXNlIG9mIHNldHRpbmcgdXAgZHN0
QnVmZmVyLgorICAgICAgZ2wuYmluZEJ1ZmZlcihzcmNUYXJnZXQsIHNyY0J1ZmZlcik7CisgICAg
fQorICAgIGlmICghY29weVJlYWQgJiYgIWNvcHlXcml0ZSkgeworICAgICAgLy8gU2FtZSBidWZm
ZXIgb2JqZWN0LCBvdmVybGFwcGluZyByYW5nZS4KKyAgICAgIGV4cGVjdGVkR0xFcnJvciA9IGds
LklOVkFMSURfVkFMVUU7CisgICAgfQorICB9CisgIGlmICgoc3JjVGFyZ2V0ID09IGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSICYmCisgICAgICAgZHN0VGFyZ2V0ICE9IGdsLkVMRU1FTlRfQVJSQVlf
QlVGRkVSKSB8fAorICAgICAgKHNyY1RhcmdldCAhPSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiAm
JgorICAgICAgIGRzdFRhcmdldCA9PSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUikpIHsKKyAgICBl
eHBlY3RlZEdMRXJyb3IgPSBnbC5JTlZBTElEX09QRVJBVElPTjsKKyAgfQorCisgIGdsLmNvcHlC
dWZmZXJTdWJEYXRhKGNvcHlSZWFkID8gZ2wuQ09QWV9SRUFEX0JVRkZFUiA6IHNyY1RhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29weVdyaXRlID8gZ2wuQ09QWV9XUklURV9CVUZGRVIg
OiBkc3RUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGxlbmd0aCk7CisgIGlm
IChleHBlY3RlZEdMRXJyb3IgPT0gZ2wuTk9fRVJST1IpIHsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgIkNvcHlpbmcgc2hvdWxkIHdvcmsiKTsKKworICAgIHZhciBy
ZXRCdWZmZXIgPSBuZXcgVWludDhBcnJheShsZW5ndGgpOworICAgIGdsLmdldEJ1ZmZlclN1YkRh
dGEoZHN0VGFyZ2V0LCAwLCByZXRCdWZmZXIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLAorICAgICAgICAiZ2wuZ2V0QnVmZmVyU3ViRGF0YSgiICsgdGFyZ2V0VG9T
dHJpbmcoZ2wsIGRzdFRhcmdldCkgKworICAgICAgICAiLCAwLCByZXRCdWZmZXIpIHNob3VsZCB3
b3JrIik7CisKKyAgICB2YXIgZmFpbGVkID0gZmFsc2U7CisgICAgdmFyIHJldEFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShyZXRCdWZmZXIuYnVmZmVyKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHZlcnRpY2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAob3JpZ2luYWxEYXRhW2ldICE9IHJl
dEFycmF5W2ldKSB7CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAoZmFpbGVkKQorICAgICAgdGVzdEZhaWxlZCgiVGhlIHJldHVy
bmVkIGFycmF5IGJ1ZmZlciBmYWlscyB0byBtYXRjaCBvcmlnaW5hbCBkYXRhIik7CisgICAgZWxz
ZQorICAgICAgdGVzdFBhc3NlZCgiVGhlIHJldHVybmVkIGFycmF5IGJ1ZmZlciBtYXRjaGVzIG9y
aWdpbmFsIGRhdGEiKTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBl
eHBlY3RlZEdMRXJyb3IsICJDb3B5aW5nIHNob3VsZCBmYWlsIik7CisgIH0KKworICBnbC5kZWxl
dGVCdWZmZXIoc3JjQnVmZmVyKTsKKyAgZ2wuZGVsZXRlQnVmZmVyKGRzdEJ1ZmZlcik7CisgIHNo
b3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUl9CSU5ESU5HKSIpOwor
ICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5DT1BZX1JFQURfQlVGRkVSX0JJTkRJ
TkcpIik7CisgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPUFlfV1JJVEVfQlVG
RkVSX0JJTkRJTkcpIik7CisgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIik7CisgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1l
dGVyKGdsLlBJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkcpIik7CisgIHNob3VsZEJlTnVsbCgiZ2wu
Z2V0UGFyYW1ldGVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORykiKTsKKyAgc2hvdWxk
QmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5E
SU5HKSIpOworICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZF
Ul9CSU5ESU5HKSIpOworfQorCitmdW5jdGlvbiB0YXJnZXRUb1N0cmluZyhnbCwgdGFyZ2V0KSB7
CisgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBnbC5BUlJBWV9CVUZGRVI6CisgICAgICBy
ZXR1cm4gIkFSUkFZX0JVRkZFUiI7CisgICAgY2FzZSBnbC5DT1BZX1JFQURfQlVGRkVSOgorICAg
ICAgcmV0dXJuICJDT1BZX1JFQURfQlVGRkVSIjsKKyAgICBjYXNlIGdsLkNPUFlfV1JJVEVfQlVG
RkVSOgorICAgICAgcmV0dXJuICJDT1BZX1dSSVRFX0JVRkZFUiI7CisgICAgY2FzZSBnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUjoKKyAgICAgIHJldHVybiAiRUxFTUVOVF9BUlJBWV9CVUZGRVIiOwor
ICAgIGNhc2UgZ2wuUElYRUxfUEFDS19CVUZGRVI6CisgICAgICByZXR1cm4gIlBJWEVMX1BBQ0tf
QlVGRkVSIjsKKyAgICBjYXNlIGdsLlBJWEVMX1VOUEFDS19CVUZGRVI6CisgICAgICByZXR1cm4g
IlBJWEVMX1VOUEFDS19CVUZGRVIiOworICAgIGNhc2UgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUjoKKyAgICAgIHJldHVybiAiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiI7CisgICAgY2Fz
ZSBnbC5VTklGT1JNX0JVRkZFUjoKKyAgICAgIHJldHVybiAiVU5JRk9STV9CVUZGRVIiOworICAg
IGRlZmF1bHQ6CisgICAgICByZXR1cm4gIlVOS05PV04gQlVGRkVSIjsKKyAgfQorfQorCit2YXIg
dGFyZ2V0cyA9IFsKKyAgZ2wuQVJSQVlfQlVGRkVSLAorICBnbC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwKKyAgZ2wuUElYRUxfUEFDS19CVUZGRVIsCisgIGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsCisg
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsCisgIGdsLlVOSUZPUk1fQlVGRkVSLAorXQor
Citmb3IgKHZhciBzcmNJbmRleCBpbiB0YXJnZXRzKSB7CisgIGZvciAodmFyIGRzdEluZGV4IGlu
IHRhcmdldHMpIHsKKyAgICBpZiAodGFyZ2V0c1tzcmNJbmRleF0gIT0gZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiAmJgorICAgICAgICB0YXJnZXRzW2RzdEluZGV4XSAhPSBnbC5UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSKSB7CisgICAgICB0ZXN0Q29weUJ1ZmZlcnModGFyZ2V0c1tzcmNJ
bmRleF0sIHRhcmdldHNbZHN0SW5kZXhdLCB0cnVlLCB0cnVlKTsKKyAgICB9CisgICAgaWYgKHRh
cmdldHNbc3JjSW5kZXhdICE9IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIpIHsKKyAgICAg
IHRlc3RDb3B5QnVmZmVycyh0YXJnZXRzW3NyY0luZGV4XSwgdGFyZ2V0c1tkc3RJbmRleF0sIHRy
dWUsIGZhbHNlKTsKKyAgICB9CisgICAgaWYgKHRhcmdldHNbZHN0SW5kZXhdICE9IGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIpIHsKKyAgICAgIHRlc3RDb3B5QnVmZmVycyh0YXJnZXRzW3Ny
Y0luZGV4XSwgdGFyZ2V0c1tkc3RJbmRleF0sIGZhbHNlLCB0cnVlKTsKKyAgICB9CisgICAgdGVz
dENvcHlCdWZmZXJzKHRhcmdldHNbc3JjSW5kZXhdLCB0YXJnZXRzW2RzdEluZGV4XSwgZmFsc2Us
IGZhbHNlKTsKKyAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9idWZmZXItY29weWluZy1yZXN0
cmljdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2J1ZmZlci1jb3B5aW5nLXJlc3RyaWN0aW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNiZmUwZTNlODA3MmU5MGUxNGExNzA0ZjcyMGQxZjVhZTAzMWYwOGEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9idWZmZXItY29weWluZy1yZXN0cmljdGlvbnMuaHRt
bApAQCAtMCwwICsxLDEwMiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgYnVmZmVyIGNvcHlpbmcgcmVzdHJpY3Rpb25zIHRlc3Qu
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlw
dGlvbigiVGVzdCBidWZmZXIgY29weWluZyByZXN0cmljdGlvbnMgZ292ZXJuZWQgYnkgdGhlIFdl
YkdMIDIgc3BlYy4gVGhlIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGNvcHlCdWZmZXJTdWJEYXRhIGFj
dHMgYXMgZXhwZWN0ZWQuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgMik7CisKK3ZhciB2
YWxpZFRhcmdldHMgPSBbZ2wuQVJSQVlfQlVGRkVSLCBnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5D
T1BZX1dSSVRFX0JVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgZ2wuRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIGdsLlBJWEVMX1BBQ0tfQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICBnbC5QSVhF
TF9VTlBBQ0tfQlVGRkVSLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLAorICAgICAgICAg
ICAgICAgICAgICBnbC5VTklGT1JNX0JVRkZFUl07CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCit2YXIg
dGVzdENvcHlCdWZmZXIgPSBmdW5jdGlvbihzcmNUYXJnZXQsIGRzdFRhcmdldCkgeworICB2YXIg
c3JjVGFyZ2V0U3RyID0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBzcmNUYXJnZXQpLAorICAgIGRz
dFRhcmdldFN0ciA9IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZHN0VGFyZ2V0KTsKKyAgdmFyIHNy
Y0J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpLAorICAgIGRzdEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICB2YXIgdGVzdENvcHlTdHIgPSAiY29weWluZyBmcm9tIGEgZ2wuIiArIHd0dS5n
bEVudW1Ub1N0cmluZyhnbCwgc3JjVGFyZ2V0KSArICIgYnVmZmVyIHRvIGEgZ2wuIgorICAgICsg
d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBkc3RUYXJnZXQpICsgIiBidWZmZXIiCisKKyAgZ2wuYmlu
ZEJ1ZmZlcihzcmNUYXJnZXQsIHNyY0J1ZmZlcik7CisgIGdsLmJ1ZmZlckRhdGEoc3JjVGFyZ2V0
LCBuZXcgRmxvYXQzMkFycmF5KDMyKSwgZ2wuU1RBVElDX0RSQVcpOworICBnbC5iaW5kQnVmZmVy
KGRzdFRhcmdldCwgZHN0QnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShkc3RUYXJnZXQsIG5ldyBG
bG9hdDMyQXJyYXkoMzIpLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmNvcHlCdWZmZXJTdWJEYXRh
KHNyY1RhcmdldCwgZHN0VGFyZ2V0LCA4LCAwLCA0KTsKKyAgaWYgKHNyY1RhcmdldCA9PSBkc3RU
YXJnZXQpCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIHRlc3RDb3B5
U3RyICsgIiBzaG91bGQgd29yay4iKTsKKyAgZWxzZSBpZiAoc3JjVGFyZ2V0ID09IGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSIHx8IGRzdFRhcmdldCA9PSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiAp
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sIHRlc3RD
b3B5U3RyICsgIiBzaG91bGQgZmFpbC4iKTsKKyAgZWxzZQorICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCB0ZXN0Q29weVN0ciArICIgc2hvdWxkIHdvcmsuIik7CisKKyAg
Ly8gU3BlY2lhbCBjYXNlOiBDT1BZX1JFQURfQlVGRkVSIGFuZCBDT1BZX1dSSVRFX0JVRkZFUiBh
cmUgY29tcGF0aWJsZSB3aXRoIEVMRU1FTlRfQVJSQVlfQlVGRkVSCisgIC8vIG9ubHkgaWYgdGhl
IGJ1ZmZlciBoYWQgYmVlbiBpbml0aWFsbHkgYm91bmQgdG8gYW4gRUxFTUVOVF9BUlJBWV9CVUZG
RVIKKyAgaWYgKHNyY1RhcmdldCA9PSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiAmJgorICAgICAg
KGRzdFRhcmdldCA9PSBnbC5DT1BZX1JFQURfQlVGRkVSIHx8IGRzdFRhcmdldCA9PSBnbC5DT1BZ
X1dSSVRFX0JVRkZFUikpIHsKKyAgICBkc3RCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBkc3RCdWZmZXIpOworICB9
IGVsc2UgaWYgKGRzdFRhcmdldCA9PSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiAmJgorICAgICAg
KHNyY1RhcmdldCA9PSBnbC5DT1BZX1JFQURfQlVGRkVSIHx8IHNyY1RhcmdldCA9PSBnbC5DT1BZ
X1dSSVRFX0JVRkZFUikpIHsKKyAgICBzcmNCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBzcmNCdWZmZXIpOworICB9
IGVsc2UgeworICAgIHJldHVybjsKKyAgfQorCisgIGdsLmJpbmRCdWZmZXIoc3JjVGFyZ2V0LCBz
cmNCdWZmZXIpOworICBnbC5idWZmZXJEYXRhKHNyY1RhcmdldCwgbmV3IEZsb2F0MzJBcnJheSgz
MiksIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wuYmluZEJ1ZmZlcihkc3RUYXJnZXQsIGRzdEJ1ZmZl
cik7CisgIGdsLmJ1ZmZlckRhdGEoZHN0VGFyZ2V0LCBuZXcgRmxvYXQzMkFycmF5KDMyKSwgZ2wu
U1RBVElDX0RSQVcpOworICBnbC5jb3B5QnVmZmVyU3ViRGF0YShzcmNUYXJnZXQsIGRzdFRhcmdl
dCwgOCwgMCwgNCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCB0ZXN0
Q29weVN0ciArICIgc2hvdWxkIHdvcmsgaWYgYWxsIGJ1ZmZlcnMgd2VyZSBpbml0aWFsbHkgYm91
bmQgdG8gRUxFTUVOVF9BUlJBWV9CVUZGRVIuIik7Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8
IHZhbGlkVGFyZ2V0cy5sZW5ndGg7IGkrKykgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDb3B5
aW5nIGRhdGEgZnJvbSBhICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbGlkVGFyZ2V0c1tp
XSkKKyAgICArICIgYnVmZmVyIHRvIGFub3RoZXIgdGFyZ2V0Iik7CisgIGZvciAodmFyIGogPSAw
OyBqIDwgdmFsaWRUYXJnZXRzLmxlbmd0aDsgaisrKQorICAgIHRlc3RDb3B5QnVmZmVyKHZhbGlk
VGFyZ2V0c1tpXSwgdmFsaWRUYXJnZXRzW2pdKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIlRl
c3QgY29weWluZyBhIGJ1ZmZlciBvZiBvdGhlciBkYXRhIChnbC5BUlJBWV9CVUZGRVIpIGJvdW5k
IHRvIGdsLkNPUFlfUkVBRF9CVUZGRVIgdG8gYSAiCisgICsgImJ1ZmZlciBib3VuZCB0byBnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiIpOwordmFyIHNyY0J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigp
LCBkc3RCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBzcmNCdWZmZXIpOworZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgZHN0QnVmZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoMzIpLCBnbC5TVEFUSUNfRFJBVyk7CitnbC5idWZmZXJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgzMiksIGdsLlNUQVRJQ19EUkFXKTsKK2dsLmJp
bmRCdWZmZXIoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgc3JjQnVmZmVyKTsKK2dsLmNvcHlCdWZmZXJT
dWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAwLCAw
LCA0KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQ29w
eWluZyBnbC5BUlJBWV9CVUZGRVIgYm91bmQgdG8gIgorICArICJnbC5DT1BZX1JFQURfQlVGRkVS
IHRvIGEgYnVmZmVyIGJvdW5kIHRvIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSIHNob3VsZCBmYWls
LiIpOworCitmaW5pc2hUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9idWZmZXIt
ZGF0YS1hbmQtYnVmZmVyLXN1Yi1kYXRhLXN1Yi1zb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2J1ZmZl
ci1kYXRhLWFuZC1idWZmZXItc3ViLWRhdGEtc3ViLXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVk
OWExMzFmNzc3ZjczN2UxMWViZjE1YjNkOTc3MjFmMTAzYmYxMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvYnVmZmVycy9idWZmZXItZGF0YS1hbmQtYnVmZmVyLXN1Yi1kYXRhLXN1Yi1zb3VyY2UuaHRt
bApAQCAtMCwwICsxLDE4MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGVzdCBidWZmZXJEYXRhL2J1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1ZmZlclZp
ZXcgc3ViIHNvdXJjZSBpbnB1dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAyKTsKKworZnVu
Y3Rpb24gdmVyaWZ5QnVmZmVyRGF0YSh0ZXN0Q2FzZSwgc291cmNlQnl0ZU9mZnNldCwgc2l6ZSwg
ZGF0YSkgeworICAgIHZhciByZWFkYmFja0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcih0ZXN0Q2Fz
ZS5zaXplICogc2l6ZSk7CisgICAgdmFyIHJlYWRiYWNrVmlldyA9IG5ldyB3aW5kb3dbdGVzdENh
c2UudHlwZV0ocmVhZGJhY2tCdWZmZXIpOworICAgIGdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBzb3VyY2VCeXRlT2Zmc2V0LCByZWFkYmFja1ZpZXcpOworICAgIHZhciBwYXNz
ID0gdHJ1ZTsKKyAgICB2YXIgb2Zmc2V0ID0gc291cmNlQnl0ZU9mZnNldCAvIHRlc3RDYXNlLnNp
emU7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNpemU7ICsraWkpIHsKKyAgICAgICAgaWYg
KHJlYWRiYWNrVmlld1tpaV0gIT0gZGF0YVtpaV0pIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImV4cGVjdGVkIGRhdGEgYXQgIiArIGlpICsgIjogIiArIGRhdGFbaWldICsgIiwgZ290ICIgKyBy
ZWFkYmFja1ZpZXdbaWldKTsKKyAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAocGFzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCJidWZmZXIgZGF0YSB1
cGxvYWRlZCBjb3JyZWN0bHkiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlckRhdGFUZXN0
KHRlc3RDYXNlcykgeworICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHRlc3RDYXNlcy5sZW5n
dGg7ICsraWR4KSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdENhc2VzW2lkeF07CisgICAgICAg
IGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIlRlc3QgYnVmZmVyRGF0YSB3aXRoICIgKyB0ZXN0
LnR5cGUpOworCisgICAgICAgIHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
c2hvdWxkQmVOb25OdWxsKGJ1Zik7CisKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIGJ1Zik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKKworICAgICAgICB2YXIgY291bnQgPSA0OworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIodGVzdC5zaXplICogY291bnQpOworICAgICAgICB2YXIgdmlldyA9IG5l
dyB3aW5kb3dbdGVzdC50eXBlXShhcnJheUJ1ZmZlcik7CisgICAgICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBjb3VudDsgKytpaSkgeworICAgICAgICAgICAgdmlld1tpaV0gPSBpaTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2aWV3LCBnbC5T
VEFUSUNfRFJBVywgMCwgY291bnQgKyAxKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICJjYWxsaW5nIGJ1ZmZlckRhdGEgd2hl
biBzcmNPZmZzZXQgKyBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gc291cmNlIHNpemUiKTsKKworICAg
ICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmlldywgZ2wuU1RBVElDX0RSQVcs
IGNvdW50ICsgMSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
VkFMVUUsCisgICAgICAgICAgICAiY2FsbGluZyBidWZmZXJEYXRhIHdoZW4gc3JjT2Zmc2V0ICsg
bGVuZ3RoIGlzIGxhcmdlciB0aGFuIHNvdXJjZSBzaXplIik7CisKKyAgICAgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIHZpZXcsIGdsLlNUQVRJQ19EUkFXLCBjb3VudCAtIDEsIDIp
OworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLAorICAg
ICAgICAgICAgImNhbGxpbmcgYnVmZmVyRGF0YSB3aGVuIHNyY09mZnNldCArIGxlbmd0aCBpcyBs
YXJnZXIgdGhhbiBzb3VyY2Ugc2l6ZSIpOworCisgICAgICAgIHZhciBvZmZzZXQgPSAyOworICAg
ICAgICB2YXIgc2l6ZSA9IGNvdW50IC0gb2Zmc2V0OworICAgICAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgdmlldywgZ2wuU1RBVElDX0RSQVcsIG9mZnNldCk7CisgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgImNhbGxpbmcg
YnVmZmVyRGF0YSB3aXRoIHZhbGlkIHN1YiBzb3VyY2Ugc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAg
ICAgdmVyaWZ5QnVmZmVyRGF0YSh0ZXN0LCAwLCBzaXplLCB2aWV3LnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgc2l6ZSkpOworCisgICAgICAgIG9mZnNldCA9IDE7CisgICAgICAgIHNpemUgPSAxOwor
ICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmlldywgZ2wuU1RBVElDX0RS
QVcsIG9mZnNldCwgc2l6ZSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLAorICAgICAgICAgICAgImNhbGxpbmcgYnVmZmVyRGF0YSB3aXRoIHZhbGlkIHN1YiBz
b3VyY2Ugc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgdmVyaWZ5QnVmZmVyRGF0YSh0ZXN0LCAw
LCBzaXplLCB2aWV3LnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2l6ZSkpOworCisgICAgICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2aWV3LCBnbC5TVEFUSUNfRFJBVywgY291bnQp
OworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAg
ICAgICJjYWxsaW5nIGJ1ZmZlckRhdGEgd2l0aCB2YWxpZCBzdWIgc291cmNlIG9mIHNpemUgMCBz
aG91bGQgc3VjY2VlZCIpOworCisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJubyBHTCBlcnJvciIpOworICAgIH0KK30K
KworZnVuY3Rpb24gYnVmZmVyU3ViRGF0YVRlc3QodGVzdENhc2VzKSB7CisgICAgZm9yICh2YXIg
aWR4ID0gMDsgaWR4IDwgdGVzdENhc2VzLmxlbmd0aDsgKytpZHgpIHsKKyAgICAgICAgdmFyIHRl
c3QgPSB0ZXN0Q2FzZXNbaWR4XTsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygi
VGVzdCBidWZmZXJTdWJEYXRhIHdpdGggIiArIHRlc3QudHlwZSk7CisKKyAgICAgICAgdmFyIGNv
dW50ID0gNDsKKyAgICAgICAgdmFyIHRvdGFsQnVmZmVyQnl0ZXMgPSB0ZXN0LnNpemUgKiBjb3Vu
dCAqIDI7CisgICAgICAgIHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgc2hv
dWxkQmVOb25OdWxsKGJ1Zik7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBidWYpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdG90YWxCdWZm
ZXJCeXRlcywgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUik7CisKKyAgICAgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVm
ZmVyKHRlc3Quc2l6ZSAqIGNvdW50KTsKKyAgICAgICAgdmFyIHZpZXcgPSBuZXcgd2luZG93W3Rl
c3QudHlwZV0oYXJyYXlCdWZmZXIpOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY291
bnQ7ICsraWkpIHsKKyAgICAgICAgICAgIHZpZXdbaWldID0gaWk7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgc291cmNlQnl0ZU9mZnNldCA9IHRlc3Quc2l6ZSAqIDI7CisKKyAgICAgICAgZ2wu
YnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIHNvdXJjZUJ5dGVPZmZzZXQsIHZpZXcsIDAs
IGNvdW50ICsgMSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
VkFMVUUsCisgICAgICAgICAgICAiY2FsbGluZyBidWZmZXJTdWJEYXRhIHdoZW4gc3JjT2Zmc2V0
ICsgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHNvdXJjZSBzaXplIik7CisKKyAgICAgICAgZ2wuYnVm
ZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIHNvdXJjZUJ5dGVPZmZzZXQsIHZpZXcsIGNvdW50
ICsgMSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUs
CisgICAgICAgICAgICAiY2FsbGluZyBidWZmZXJTdWJEYXRhIHdoZW4gc3JjT2Zmc2V0ICsgbGVu
Z3RoIGlzIGxhcmdlciB0aGFuIHNvdXJjZSBzaXplIik7CisKKyAgICAgICAgZ2wuYnVmZmVyU3Vi
RGF0YShnbC5BUlJBWV9CVUZGRVIsIHNvdXJjZUJ5dGVPZmZzZXQsIHZpZXcsIGNvdW50IC0gMSwg
Mik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsCisg
ICAgICAgICAgICAiY2FsbGluZyBidWZmZXJTdWJEYXRhIHdoZW4gc3JjT2Zmc2V0ICsgbGVuZ3Ro
IGlzIGxhcmdlciB0aGFuIHNvdXJjZSBzaXplIik7CisKKyAgICAgICAgdmFyIG9mZnNldCA9IDI7
CisgICAgICAgIHZhciBzaXplID0gY291bnQgLSBvZmZzZXQ7CisgICAgICAgIGdsLmJ1ZmZlclN1
YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBzb3VyY2VCeXRlT2Zmc2V0LCB2aWV3LCBvZmZzZXQpOwor
ICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAg
ICJjYWxsaW5nIGJ1ZmZlclN1YkRhdGEgd2l0aCB2YWxpZCBzdWIgc291cmNlIHNob3VsZCBzdWNj
ZWVkIik7CisgICAgICAgIHZlcmlmeUJ1ZmZlckRhdGEodGVzdCwgc291cmNlQnl0ZU9mZnNldCwg
c2l6ZSwgdmlldy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNpemUpKTsKKworICAgICAgICBvZmZz
ZXQgPSAxOworICAgICAgICBzaXplID0gMTsKKyAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5B
UlJBWV9CVUZGRVIsIHNvdXJjZUJ5dGVPZmZzZXQsIHZpZXcsIG9mZnNldCwgc2l6ZSk7CisgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgImNh
bGxpbmcgYnVmZmVyU3ViRGF0YSB3aXRoIHZhbGlkIHN1YiBzb3VyY2Ugc2hvdWxkIHN1Y2NlZWQi
KTsKKyAgICAgICAgdmVyaWZ5QnVmZmVyRGF0YSh0ZXN0LCBzb3VyY2VCeXRlT2Zmc2V0LCBzaXpl
LCB2aWV3LnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2l6ZSkpOworCisgICAgICAgIGdsLmJ1ZmZl
clN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBzb3VyY2VCeXRlT2Zmc2V0LCB2aWV3LCBjb3VudCk7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAg
ICAgImNhbGxpbmcgYnVmZmVyU3ViRGF0YSB3aXRoIHZhbGlkIHN1YiBzb3VyY2Ugb2Ygc2l6ZSAw
IHNob3VsZCBzdWNjZWVkIik7CisKKyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKworICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIEdMIGVycm9yIik7CisgICAgfQor
fQorCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBl
eGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIp
OworCisgICAgdmFyIHRlc3RDYXNlcyA9IFsKKyAgICAgICAge3R5cGU6ICJVaW50OEFycmF5Iiwg
ICBzaXplOiAxfSwKKyAgICAgICAge3R5cGU6ICJJbnQ4QXJyYXkiLCAgICBzaXplOiAxfSwKKyAg
ICAgICAge3R5cGU6ICJJbnQxNkFycmF5IiwgICBzaXplOiAyfSwKKyAgICAgICAge3R5cGU6ICJV
aW50MTZBcnJheSIsICBzaXplOiAyfSwKKyAgICAgICAge3R5cGU6ICJVaW50MzJBcnJheSIsICBz
aXplOiA0fSwKKyAgICAgICAge3R5cGU6ICJJbnQzMkFycmF5IiwgICBzaXplOiA0fSwKKyAgICAg
ICAge3R5cGU6ICJGbG9hdDMyQXJyYXkiLCBzaXplOiA0fSwKKyAgICAgICAge3R5cGU6ICJGbG9h
dDY0QXJyYXkiLCBzaXplOiA4fQorICAgIF07CisKKyAgICBidWZmZXJEYXRhVGVzdCh0ZXN0Q2Fz
ZXMpOworICAgIGJ1ZmZlclN1YkRhdGFUZXN0KHRlc3RDYXNlcyk7Cit9CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2J1ZmZlcnMvYnVmZmVyLW92ZXJmbG93LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2J1ZmZlci1vdmVy
Zmxvdy10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMzNGJhNWNiNmNiMjgyNGQwZDMxZGY4NzkyNzA2
NGUxNzQ2NDJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2J1ZmZlci1vdmVyZmxvdy10
ZXN0Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgYnVmZmVyIG92ZXJmbG93IHRlc3QgZm9yIGJp
bmRCdWZmZXJSYW5nZTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oIldlYkdMIGJ1ZmZlciBvdmVyZmxvdyB0ZXN0OiBidWZmZXIgb3Zl
cmZsb3cgd2lsbCBub3QgbGVhZCB0byBmYWlsdXJlIGluIGJpbmRCdWZmZXJSYW5nZSIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
dW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpOworCitkZWJ1ZygiIik7Cit2YXIgYnVmZmVyMSA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIDAsIGJ1ZmZlcjEsIDAsIDQpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsCisgICAgIkNhbGxpbmcgYmluZEJ1ZmZlclJhbmdlIG9uIGEgYnVmZmVyIHdoZXJl
IG5vIHN0b3JhZ2UgaXMgYWxsb2NhdGVkIHNob3VsZCBzdWNjZWVkLiIpOworc2hvdWxkQmUoImJ1
ZmZlcjEiLCAiZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSX0JJTkRJTkcsIDApIik7CitzaG91bGRCZSgiNCIsICJnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSwgMCkiKTsKK3Nob3VsZEJlKCIwIiwg
ImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFS
VCwgMCkiKTsKKwordmFyIGJ1ZmZlcjIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZm
ZXIoZ2wuVU5JRk9STV9CVUZGRVIsIGJ1ZmZlcjIpOworZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JN
X0JVRkZFUiwgNCwgZ2wuU1RBVElDX0RSQVcpOworZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlVOSUZP
Uk1fQlVGRkVSLCAxLCBidWZmZXIyLCAwLCA4KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLAorICAgICJDYWxsaW5nIGJpbmRCdWZmZXJSYW5nZSBvbiBhIGJ1ZmZlciB3aGVy
ZSB0aGUgc3RvcmFnZSBpcyBub3QgYmlnIGVub3VnaCBzaG91bGQgc3VjY2VlZC4iKTsKK3Nob3Vs
ZEJlKCJidWZmZXIyIiwgImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJf
QklORElORywgMSkiKTsKK3Nob3VsZEJlKCI4IiwgImdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wu
VU5JRk9STV9CVUZGRVJfU0laRSwgMSkiKTsKK3Nob3VsZEJlKCIwIiwgImdsLmdldEluZGV4ZWRQ
YXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU1RBUlQsIDEpIik7CisKK2RlYnVnKCIiKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9idWZmZXJzL2J1ZmZlci10eXBlLXJlc3RyaWN0aW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2J1ZmZlcnMv
YnVmZmVyLXR5cGUtcmVzdHJpY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YjY2ZGYwMjBkZDgw
MDRkZDNhNjdlOTEzYmIyNzkxOGM5Yjc1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2J1
ZmZlci10eXBlLXJlc3RyaWN0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTEwIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBidWZmZXIg
YmluZGluZyByZXN0cmljdGlvbnMgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IGJpbmRpbmcgcmVzdHJpY3Rpb25z
IGdvdmVybmVkIGJ5IHRoZSBXZWJHTCAyIHNwZWMuIFRoZSB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBi
aW5kQnVmZmVyLCIKKyAgKyAiYmluZEJ1ZmZlclJhbmdlLCBhbmQgYmluZEJ1ZmZlckJhc2UgYWN0
cyBhcyBleHBlY3RlZCB3aXRoIGV2ZXJ5IHRhcmdldCBjb21iaW5hdGlvbi4iKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCAyKTsKKwordmFyIHZhbGlkVGFyZ2V0cyA9IFtnbC5BUlJBWV9CVUZG
RVIsIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBnbC5DT1BZX1JFQURfQlVGRkVSLAorICAgICAg
ICAgICAgICAgICAgICBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgZ2wuUElYRUxfUEFDS19CVUZGRVIs
IGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsCisgICAgICAgICAgICAgICAgICAgIGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIGdsLlVOSUZPUk1fQlVGRkVSXTsKKwordmFyIGJpbmRGdW5jdGlv
bnMgPSBbImJpbmRCdWZmZXIiLCAiYmluZEJ1ZmZlclJhbmdlIiwgImJpbmRCdWZmZXJCYXNlIl07
CisKK3ZhciBpc0NvcHlUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgcmV0dXJuIHRhcmdl
dCA9PSBnbC5DT1BZX1JFQURfQlVGRkVSIHx8IHRhcmdldCA9PSBnbC5DT1BZX1dSSVRFX0JVRkZF
UjsKK30KKwordmFyIG5vRWxlbWVudEFycmF5VnNPdGhlckRhdGFDb25mbGljdHMgPSBmdW5jdGlv
bihmaXJzdCwgc2Vjb25kKSB7CisgIHJldHVybiBpc0NvcHlUYXJnZXQoc2Vjb25kKSB8fCAoKGZp
cnN0ID09IGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSKSA9PSAoc2Vjb25kID09IGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSKSk7Cit9OworCisKK3ZhciBiaW5kID0gZnVuY3Rpb24oYmluZEZuLCB0YXJn
ZXQsIGJ1ZmZlcikgeworICBpZiAoYmluZEZuID09ICJiaW5kQnVmZmVyIikKKyAgICBnbC5iaW5k
QnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgZWxzZSBpZiAoYmluZEZuID09ICJiaW5kQnVmZmVy
UmFuZ2UiKQorICAgIGdsLmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIDAsIGJ1ZmZlciwgMCwgNCk7
CisgIGVsc2UgaWYgKGJpbmRGbiA9PSAiYmluZEJ1ZmZlckJhc2UiKQorICAgIGdsLmJpbmRCdWZm
ZXJCYXNlKHRhcmdldCwgMCwgYnVmZmVyKTsKKyAgZWxzZQorICAgIHRocm93IG5ldyBFcnJvcigi
Q2Fubm90IGJpbmQgdW5rbm93biBmdW5jdGlvbjogIiArIGJpbmRGbik7Cit9CisKK3ZhciB0ZXN0
QmluZGluZ0ZuID0gZnVuY3Rpb24oZmlyc3RCaW5kRm4sIHNlY29uZEJpbmRGbiwgZmlyc3RUYXJn
ZXQsIHNlY29uZFRhcmdldCkgeworICB2YXIgZmlyc3RUYXJnZXRTdHIgPSB3dHUuZ2xFbnVtVG9T
dHJpbmcoZ2wsIGZpcnN0VGFyZ2V0KSwKKyAgICBzZWNvbmRUYXJnZXRTdHIgPSB3dHUuZ2xFbnVt
VG9TdHJpbmcoZ2wsIHNlY29uZFRhcmdldCk7CisgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKworICBiaW5kKGZpcnN0QmluZEZuLCBmaXJzdFRhcmdldCwgYnVmZmVyKTsKKyAgYmlu
ZChmaXJzdEJpbmRGbiwgZmlyc3RUYXJnZXQsIG51bGwpOworICBiaW5kKHNlY29uZEJpbmRGbiwg
c2Vjb25kVGFyZ2V0LCBidWZmZXIpOworICBiaW5kKHNlY29uZEJpbmRGbiwgc2Vjb25kVGFyZ2V0
LCBudWxsKTsKKworICB2YXIgbWVzc2FnZVByZWZpeCA9ICJCaW5kaW5nIGJ1ZmZlciBmaXJzdCB3
aXRoICIgKyBmaXJzdEJpbmRGbiArICIgdG8gZ2wuIiArIGZpcnN0VGFyZ2V0U3RyCisgICAgKyAi
IGFuZCB0aGVuIGJpbmRpbmcgYnVmZmVyIHdpdGggIiArIHNlY29uZEJpbmRGbiArICIgdG8gZ2wu
IiArIHNlY29uZFRhcmdldFN0ciArICIgc2hvdWxkICI7CisgIGlmIChmaXJzdFRhcmdldCA9PSBz
ZWNvbmRUYXJnZXQgfHwgbm9FbGVtZW50QXJyYXlWc090aGVyRGF0YUNvbmZsaWN0cyhmaXJzdFRh
cmdldCwgc2Vjb25kVGFyZ2V0KSkKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgbWVzc2FnZVByZWZpeCArICJXT1JLIik7CisgIGVsc2UKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVzc2FnZVByZWZpeCArICJGQUlMIik7
Cit9CisKK3ZhciB0ZXN0QmluZGluZyA9IGZ1bmN0aW9uKGZpcnN0VGFyZ2V0LCBzZWNvbmRUYXJn
ZXQpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5kRnVuY3Rpb25zLmxlbmd0aDsgaSsrKQor
ICAgIGlmIChpID09IDAgfHwgZmlyc3RUYXJnZXQgPT0gZ2wuVU5JRk9STV9CVUZGRVIgfHwgZmly
c3RUYXJnZXQgPT0gZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUikKKyAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgYmluZEZ1bmN0aW9ucy5sZW5ndGg7IGorKykKKyAgICAgICAgaWYgKGogPT0g
MCB8fCBzZWNvbmRUYXJnZXQgPT0gZ2wuVU5JRk9STV9CVUZGRVIgfHwgc2Vjb25kVGFyZ2V0ID09
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIpCisgICAgICAgICAgdGVzdEJpbmRpbmdGbihi
aW5kRnVuY3Rpb25zW2ldLCBiaW5kRnVuY3Rpb25zW2pdLCBmaXJzdFRhcmdldCwgc2Vjb25kVGFy
Z2V0KTsKK307CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxk
IGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGlu
ZyBlYWNoIGJpbmRpbmcgZnVuY3Rpb24iKTsKKwordmFyIGJ1ZmZlcjEgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKK2JpbmQoImJpbmRCdWZmZXIiLCBnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcjEpOword3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJiaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgYnVmZmVyMSkgc2hvdWxkIFdPUksiKTsKKwordmFyIGJ1ZmZlcjIgPSBnbC5jcmVhdGVC
dWZmZXIoKTsKK2JpbmQoImJpbmRCdWZmZXJSYW5nZSIsIGdsLlVOSUZPUk1fQlVGRkVSLCBidWZm
ZXIyKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYmluZEJ1ZmZlclJh
bmdlKGdsLlVOSUZPUk1fQlVGRkVSLCAwLCBidWZmZXIyLCAwLCA0KSBzaG91bGQgV09SSyIpOwor
Cit2YXIgYnVmZmVyMyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworYmluZCgiYmluZEJ1ZmZlckJhc2Ui
LCBnbC5VTklGT1JNX0JVRkZFUiwgYnVmZmVyMyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImJpbmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVSLCAwLCBidWZmZXIz
KSBzaG91bGQgV09SSyIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IHZhbGlkVGFyZ2V0cy5sZW5n
dGg7IGkrKykgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgYSBidWZm
ZXIgZmlyc3QgdG8gIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdmFsaWRUYXJnZXRzW2ldKQor
ICAgICsgIiBhbmQgdGhlbiB0byBhbm90aGVyIHRhcmdldCIpOworICBmb3IgKHZhciBqID0gMDsg
aiA8IHZhbGlkVGFyZ2V0cy5sZW5ndGg7IGorKykKKyAgICB0ZXN0QmluZGluZyh2YWxpZFRhcmdl
dHNbaV0sIHZhbGlkVGFyZ2V0c1tqXSk7Cit9CisKK2ZpbmlzaFRlc3QoKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9idWZmZXJzL2RlbGV0ZS1idWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2RlbGV0ZS1idWZm
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNDM4ZDY1NTIxNmQ2NDlhMmQ1YmIzM2M0MDY4MzcyMjhkZTI2
NDUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2J1ZmZlcnMvZGVsZXRlLWJ1ZmZlci5odG1sCkBAIC0w
LDAgKzEsODAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIGJ1ZmZlciBkZWxldGlvbiBiZWhhdmlvciB0ZXN0LjwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3Qg
YnVmZmVyIGRlbGV0aW9uIGJlaGF2aW9yLiIpOworLy8gVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVz
dCBmb3IgaHR0cHM6Ly9jcmJ1Zy5jb20vODIyOTc2CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVuZGVmaW5lZCwg
Mik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBl
cnJvcnMgZnJvbSBzZXR1cC4iKTsKKworZnVuY3Rpb24gcnVuVGV4SW1hZ2VUZXN0KGdsKSB7Cisg
IGRlYnVnKCIiKTsKKyAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5k
QnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZlcik7CisgIGdsLmJ1ZmZlckRhdGEo
Z2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgNCwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgZ2wuYmluZEJ1
ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIDAsIGJ1ZmZlcik7CisgIGdsLmRlbGV0ZUJ1ZmZl
cihidWZmZXIpOworICAvLyBJbmRleGVkIHVuaWZvcm0gYnVmZmVyIGJpbmRpbmdzIHNob3VsZCBu
b3QgcHJldmVudCBhIGJ1ZmZlciBmcm9tIGJlaW5nCisgIC8vIGRlbGV0ZWQuIFRoZXJlZm9yZSwg
UElYRUxfVU5QQUNLX0JVRkZFUiBiaW5kaW5nIHNob3VsZCBhbHNvIGJlIDAuCisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3IiKTsKKworICB2YXIgdGV4ID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KDEwMjQpOworICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCAxNiwgMTYsIDAsCisgICAgICAgICAgICAgICAgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgZGF0YSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidGV4SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCIpOworCisgIC8vIENsZWFu
IHVwIGJpbmRpbmdzIGp1c3QgaW4gY2FzZSBhbiBpbXBsZW1lbnRhdGlvbiBnZXRzIGl0IHdyb25n
LgorICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOworICBnbC5i
aW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMCwgbnVsbCk7Cit9CisKK2Z1bmN0aW9u
IHJ1blJlYWRQaXhlbHNUZXN0KGdsKSB7CisgIGRlYnVnKCIiKTsKKyAgdmFyIGJ1ZmZlciA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1BBQ0tfQlVGRkVSLCBi
dWZmZXIpOworICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1BBQ0tfQlVGRkVSLCA0LCBnbC5EWU5B
TUlDX0RSQVcpOworICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMCwgYnVm
ZmVyKTsKKyAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcik7CisgIC8vIEluZGV4ZWQgdHJhbnNmb3Jt
IGZlZWRiYWNrIGJ1ZmZlciBiaW5kaW5ncyBzaG91bGQgbm90IHByZXZlbnQgYSBidWZmZXIKKyAg
Ly8gZnJvbSBiZWluZyBkZWxldGVkLiBUaGVyZWZvcmUsIFBJWEVMX1BBQ0tfQlVGRkVSIGJpbmRp
bmcgc2hvdWxkIGFsc28gYmUgMC4KKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJubyBlcnJvciIpOworCisgIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSgxMDI0KTsK
KyAgZ2wucmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGJ1ZmZlcik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZFBp
eGVscyBzaG91bGQgc3VjY2VlZCIpOworCisgIC8vIENsZWFuIHVwIGJpbmRpbmdzIGp1c3QgaW4g
Y2FzZSBhbiBpbXBsZW1lbnRhdGlvbiBnZXRzIGl0IHdyb25nLgorICBnbC5iaW5kQnVmZmVyKGds
LlBJWEVMX1BBQ0tfQlVGRkVSLCBudWxsKTsKKyAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9S
TV9CVUZGRVIsIDAsIG51bGwpOworfQorCitydW5UZXhJbWFnZVRlc3QoZ2wpOworcnVuUmVhZFBp
eGVsc1Rlc3QoZ2wpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9nZXQtYnVmZmVy
LXN1Yi1kYXRhLXZhbGlkaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9nZXQtYnVmZmVyLXN1Yi1kYXRhLXZh
bGlkaXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlOWI1MzQ3YTQ0ZGU3MmZhYjVhZWQ1NDAxODkwZTQw
ZThjMzIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2dldC1idWZmZXItc3ViLWRhdGEt
dmFsaWRpdHkuaHRtbApAQCAtMCwwICsxLDI1MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wyIGdldEJ1ZmZlclN1YkRhdGEgdmFs
aWRpdHkgdGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdWludCBpbl9k
YXRhOworZmxhdCBvdXQgdWludCBvdXRfZGF0YTsKK3ZvaWQgbWFpbigpIHsKKyAgICBvdXRfZGF0
YSA9IGluX2RhdGE7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwordm9pZCBtYWluKCkge30KKzwvc2Ny
aXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBn
ZXRCdWZmZXJTdWJEYXRhIHJldHVybnMgdmFsaWQgZGF0YSBpbiBlZGdlIGNhc2VzIik7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1
bmRlZmluZWQsIHVuZGVmaW5lZCwgMik7CisKK2NvbnN0IHNyY0RhdGEgPSBuZXcgVWludDhBcnJh
eShbIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggXSk7Citjb25zdCBub0RhdGEgPSBuZXcgVWludDhB
cnJheSg4KTsKKworY29uc3Qgc3JjQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5k
QnVmZmVyKGdsLkNPUFlfUkVBRF9CVUZGRVIsIHNyY0J1ZmZlcik7CitnbC5idWZmZXJEYXRhKGds
LkNPUFlfUkVBRF9CVUZGRVIsIHNyY0RhdGEsIGdsLlNUQVRJQ19EUkFXKTsKKworY29uc3QgYmFk
QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgYmFkQnVmZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCA4LCBnbC5TVEFU
SUNfRFJBVyk7CisKK2xldCByZWFkYmFja0J1ZmZlcjsKK2Z1bmN0aW9uIGRlbGV0ZVJlYWRiYWNr
QnVmZmVyKCkgeworICAgIGdsLmRlbGV0ZUJ1ZmZlcihyZWFkYmFja0J1ZmZlcik7Cit9CitmdW5j
dGlvbiByZWNyZWF0ZVJlYWRiYWNrQnVmZmVyKCkgeworICAgIHJlYWRiYWNrQnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JVRkZFUiwg
cmVhZGJhY2tCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQ09QWV9XUklURV9CVUZGRVIs
IDgsIGdsLlNUUkVBTV9SRUFEKTsKK30KK3JlY3JlYXRlUmVhZGJhY2tCdWZmZXIoKTsKKworY29u
c3QgZGVzdCA9IG5ldyBVaW50OEFycmF5KDgpOworCisvLyBNYWtlcyBhIG5ldyAicmVzb2x2YWJs
ZSIgUHJvbWlzZQorZnVuY3Rpb24gcmVzb2x2YWJsZSgpIHsKKyAgICBsZXQgcmVzb2x2ZTsKKyAg
ICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzID0+IHsgcmVzb2x2ZSA9IHJlczsgfSk7
CisgICAgcHJvbWlzZS5yZXNvbHZlID0gcmVzb2x2ZTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30K
KworZnVuY3Rpb24gd2FpdCgpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzID0+IHsKKyAg
ICAgICAgc2V0VGltZW91dChyZXMsIDApOworICAgIH0pOworfQorCithc3luYyBmdW5jdGlvbiBm
ZW5jZSgpIHsKKyAgICBjb25zdCBzeW5jID0gZ2wuZmVuY2VTeW5jKGdsLlNZTkNfR1BVX0NPTU1B
TkRTX0NPTVBMRVRFLCAwKTsKKyAgICBnbC5mbHVzaCgpOworCisgICAgbGV0IHN0YXR1czsKKyAg
ICBkbyB7CisgICAgICAgIGF3YWl0IHdhaXQoKTsKKyAgICAgICAgc3RhdHVzID0gZ2wuY2xpZW50
V2FpdFN5bmMoc3luYywgMCwgMCk7CisgICAgfSB3aGlsZSAoc3RhdHVzICE9IGdsLkFMUkVBRFlf
U0lHTkFMRUQgJiYgc3RhdHVzICE9IGdsLkNPTkRJVElPTl9TQVRJU0lGSUVEKTsKKyAgICBnbC5k
ZWxldGVTeW5jKHN5bmMpOworfQorCitmdW5jdGlvbiBjaGVja0dldEJ1ZmZlclN1YkRhdGEoZXJy
LCBkYXRhKSB7CisgICAgZGVzdC5maWxsKDApOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGVyciwgImdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAs
IGRlc3QpIik7CisgICAgaWYgKCFlcnIpIHsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBhcmVBcnJh
eXNFcXVhbChkZXN0LCAke2RhdGF9KWApOworICAgIH0KK30KKworY29uc3QgdGZQcm9ncmFtID0g
d3R1LnNldHVwVHJhbnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRl
ciJdLAorICAgICAgICBbIm91dF9kYXRhIl0sIGdsLlNFUEFSQVRFX0FUVFJJQlMsCisgICAgICAg
IFsiaW5fZGF0YSJdKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibGlu
a2luZyB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hhZGVyIHNob3VsZCBub3Qgc2V0IGFuIGVycm9yIik7
CitzaG91bGRCZU5vbk51bGwoInRmUHJvZ3JhbSIpOworY29uc3QgdGYgPSBnbC5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpOworCitmdW5jdGlvbiBjb3B5QnVmZmVyVXNpbmdUcmFuc2Zvcm1GZWVk
YmFjayhzcmMsIGRzdCkgeworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcmMpOworICAgIGdsLnZlcnRleEF0dHJp
YklQb2ludGVyKDAsIDEsIGdsLlVOU0lHTkVEX0lOVCwgMCwgMCk7CisKKyAgICBnbC5iaW5kVHJh
bnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgZ2wuYmluZEJ1
ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgZHN0KTsKKworICAgIGds
LmRyYXdCdWZmZXJzKFtnbC5OT05FXSk7CisKKyAgICBnbC5lbmFibGUoZ2wuUkFTVEVSSVpFUl9E
SVNDQVJEKTsKKyAgICBnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7CisgICAg
Ly8gdHJlYXRzIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgYXMgdHdvIHVpbnQzMnMKKyAgICBn
bC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMik7CisgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICBnbC5kaXNhYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYmFkQnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBudWxsKTsKKyAgICBnbC5iaW5k
VHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBudWxsKTsKK30KKworKGFz
eW5jICgpID0+IHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIndyaXRlLXJlYWQiKTsKKyAg
ICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5DT1BZX1dSSVRF
X0JVRkZFUiwgMCwgMCwgOCk7CisgICAgY2hlY2tHZXRCdWZmZXJTdWJEYXRhKGdsLk5PX0VSUk9S
LCAic3JjRGF0YSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmZW5jZS13YWl0LXdy
aXRlLXJlYWQiKTsKKyAgICBhd2FpdCBmZW5jZSgpOworICAgIGdsLmNvcHlCdWZmZXJTdWJEYXRh
KGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAwLCAwLCA4KTsKKyAg
ICBjaGVja0dldEJ1ZmZlclN1YkRhdGEoZ2wuTk9fRVJST1IsICJzcmNEYXRhIik7CisKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIndyaXRlLXJlYWQtZmVuY2Utd2FpdCIpOworICAgIGdsLmNv
cHlCdWZmZXJTdWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVS
LCAwLCAwLCA4KTsKKyAgICBjaGVja0dldEJ1ZmZlclN1YkRhdGEoZ2wuTk9fRVJST1IsICJzcmNE
YXRhIik7CisgICAgYXdhaXQgZmVuY2UoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
d3JpdGUtZmVuY2UtZmVuY2Utd2FpdC1yZWFkIik7CisgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEo
Z2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDAsIDgpOworICAg
IGZlbmNlKCk7IC8vIG5vIGF3YWl0CisgICAgYXdhaXQgZmVuY2UoKTsKKyAgICBjaGVja0dldEJ1
ZmZlclN1YkRhdGEoZ2wuTk9fRVJST1IsICJzcmNEYXRhIik7CisKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIndyaXRlLWZlbmNlLXdhaXQtcmVhZCIpOworICAgIGdsLmNvcHlCdWZmZXJTdWJE
YXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAwLCAwLCA4KTsK
KyAgICBhd2FpdCBmZW5jZSgpOworICAgIGNoZWNrR2V0QnVmZmVyU3ViRGF0YShnbC5OT19FUlJP
UiwgInNyY0RhdGEiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygid3JpdGUtZmVuY2Ut
d2FpdC13cml0ZS1yZWFkIik7CisgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgOCk7CisgICAgYXdhaXQgZmVuY2UoKTsK
KyAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5DT1BZX1dS
SVRFX0JVRkZFUiwgMCwgMCwgOCk7CisgICAgY2hlY2tHZXRCdWZmZXJTdWJEYXRhKGdsLk5PX0VS
Uk9SLCAic3JjRGF0YSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ3cml0ZS1mZW5j
ZS13cml0ZS13YWl0LXJlYWQiKTsKKyAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5BUlJBWV9C
VUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAwLCAwLCA4KTsKKyAgICB7CisgICAgICAgIGNv
bnN0IHAgPSBmZW5jZSgpOworICAgICAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JF
QURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgOCk7CisgICAgICAgIGF3YWl0
IHA7CisgICAgfQorICAgIGNoZWNrR2V0QnVmZmVyU3ViRGF0YShnbC5OT19FUlJPUiwgInNyY0Rh
dGEiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygid3JpdGUtZmVuY2UtdHJhbnNmb3Jt
ZmVlZGJhY2std2FpdC1yZWFkIik7CisgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgOCk7CisgICAgeworICAgICAgICBj
b25zdCBwID0gZmVuY2UoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JV
RkZFUiwgbnVsbCk7CisgICAgICAgIGNvcHlCdWZmZXJVc2luZ1RyYW5zZm9ybUZlZWRiYWNrKHNy
Y0J1ZmZlciwgcmVhZGJhY2tCdWZmZXIpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkNPUFlf
V1JJVEVfQlVGRkVSLCByZWFkYmFja0J1ZmZlcik7CisgICAgICAgIGF3YWl0IHA7CisgICAgfQor
ICAgIGNoZWNrR2V0QnVmZmVyU3ViRGF0YShnbC5OT19FUlJPUiwgInNyY0RhdGEiKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygid3JpdGUtdW5iaW5kLWZlbmNlLXdhaXQtYmluZC1yZWFk
Iik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JVRkZFUiwgbnVsbCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHJlYWRiYWNrQnVmZmVyKTsKKyAgICBnbC5j
b3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5BUlJBWV9CVUZGRVIsIDAs
IDAsIDgpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBiYWRCdWZmZXIpOwor
ICAgIGF3YWl0IGZlbmNlKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JVRkZF
UiwgcmVhZGJhY2tCdWZmZXIpOworICAgIGNoZWNrR2V0QnVmZmVyU3ViRGF0YShnbC5OT19FUlJP
UiwgInNyY0RhdGEiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygid3JpdGUtZmVuY2Ut
d2FpdC1kZWxldGUtcmVhZCIpOworICAgIGdsLmNvcHlCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDAsIDgpOworICAgIGF3YWl0IGZlbmNlKCk7
CisgICAgZGVsZXRlUmVhZGJhY2tCdWZmZXIoKTsKKyAgICBjaGVja0dldEJ1ZmZlclN1YkRhdGEo
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJub0RhdGEiKTsKKyAgICByZWNyZWF0ZVJlYWRiYWNrQnVm
ZmVyKCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIndyaXRlLWZlbmNlLWRlbGV0ZS13
YWl0LXJlYWQiKTsKKyAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIGds
LkNPUFlfV1JJVEVfQlVGRkVSLCAwLCAwLCA4KTsKKyAgICB7CisgICAgICAgIGNvbnN0IHAgPSBm
ZW5jZSgpOworICAgICAgICBkZWxldGVSZWFkYmFja0J1ZmZlcigpOworICAgICAgICBhd2FpdCBw
OworICAgIH0KKyAgICBjaGVja0dldEJ1ZmZlclN1YkRhdGEoZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJub0RhdGEiKTsKKyAgICByZWNyZWF0ZVJlYWRiYWNrQnVmZmVyKCk7CisKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIndyaXRlLWZlbmNlLWRlbGV0ZS13YWl0LXJlYWQiKTsKKyAgICBnbC5j
b3B5QnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAw
LCAwLCA4KTsKKyAgICBkZWxldGVSZWFkYmFja0J1ZmZlcigpOworICAgIGF3YWl0IGZlbmNlKCk7
CisgICAgY2hlY2tHZXRCdWZmZXJTdWJEYXRhKGdsLklOVkFMSURfT1BFUkFUSU9OLCAibm9EYXRh
Iik7CisgICAgcmVjcmVhdGVSZWFkYmFja0J1ZmZlcigpOworCisgICAgLy8gY3JidWcuY29tLzk0
MTkzMAorICAgIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygid3JpdGUtZGVs
ZXRlLXJlY3JlYXRlLWZlbmNlLXdhaXQtcmVhZCIpOworICAgICAgICBnbC5jb3B5QnVmZmVyU3Vi
RGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgOCk7
CisgICAgICAgIGRlbGV0ZVJlYWRiYWNrQnVmZmVyKCk7CisgICAgICAgIHJlY3JlYXRlUmVhZGJh
Y2tCdWZmZXIoKTsKKyAgICAgICAgYXdhaXQgZmVuY2UoKTsKKyAgICAgICAgY2hlY2tHZXRCdWZm
ZXJTdWJEYXRhKGdsLk5PX0VSUk9SLCAibm9EYXRhIik7CisKKyAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICBkZWJ1Zygid3JpdGUtZGVsZXRlLWZlbmNlLXdhaXQtcmVhZCIpOworICAgICAgICBn
bC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JV
RkZFUiwgMCwgMCwgOCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHAgPSBmZW5jZSgp
OworICAgICAgICAgICAgZGVsZXRlUmVhZGJhY2tCdWZmZXIoKTsKKyAgICAgICAgICAgIGF3YWl0
IHA7CisgICAgICAgIH0KKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworICAgIH0KKworICAgIGZpbmlzaFRlc3QoKTsKK30pKCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvYnVmZmVycy9nZXQtYnVmZmVyLXN1Yi1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy9nZXQtYnVmZmVy
LXN1Yi1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkwN2JjNjk1ZGQ0NDJmMWUwNjhhYTE0MTMyZWE4
YWVkMjlhOWQ1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL2dldC1idWZmZXItc3ViLWRh
dGEuaHRtbApAQCAtMCwwICsxLDE1NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgZ2V0QnVmZmVyU3ViRGF0YSB0ZXN0LjwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSBhY3RzIGFzIGV4cGVj
dGVkIGdvdmVybmVkIGJ5IFdlYkdMIDIuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
KwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgMik7
CisKK3ZhciB2ZXJ0aWNlcyA9IFsKKyAgICAgMS4xLCAgMS4wLCAgMS4zLAorICAgIC0xLjAsIC0x
LjAsICAtNS4wLAorICAgICA1LjMsIC0xLjAsICAxLjAKK107Cit2YXIgZmxvYXRBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkodmVydGljZXMpOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKwordmFyIGJ1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgZmxvYXRBcnJheSwgZ2wuU1RB
VElDX0RSQVcpOworCit2YXIgdW5pbml0aWFsaXplZEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHVuaW5pdGlhbGl6ZWRCdWZmZXIpOwor
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDM2LCBnbC5TVEFUSUNfRFJBVyk7CitnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGJ1ZmZlciBzZXR1cC4i
KTsKKworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJUZXN0IHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSBzdWNjZXNzZnVsbHkgd29ya3Mg
cmVhZGluZyBidWZmZXIgZGF0YSBmcm9tIGdsLkFSUkFZX0JVRkZFUiIpOwordmFyIHJldEFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlcy5sZW5ndGgpOword3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgMCwgcmV0QXJyYXkpIik7CisKK2RlYnVnKCJBcmd1bWVudCBtdXN0IGJlIEFycmF5QnVm
ZmVyVmlldywgbm90IEFycmF5QnVmZmVyIikKK3Nob3VsZFRocm93KCJnbC5nZXRCdWZmZXJTdWJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgbmV3IEFycmF5QnVmZmVyKDQpKSIpOword3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgbm90IGdlbmVyYXRlIEdMIGVycm9y
Iik7CitkZWJ1ZygiQXJndW1lbnQgbXVzdCBiZSBBcnJheUJ1ZmZlclZpZXcsIG5vdCBudWxsIikK
K3Nob3VsZFRocm93KCJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgbnVs
bCkiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIG5vdCBn
ZW5lcmF0ZSBHTCBlcnJvciIpOworCitkZWJ1ZygiQ2hlY2sgYXJyYXkgZGF0YSB0byBtYXRjaCBv
cmlnaW5hbCBkYXRhIHNldCBieSB0aGUgYnVmZmVyIik7Cit2YXIgZmFpbGVkID0gZmFsc2U7Citm
b3IgKHZhciBpID0gMDsgaSA8IHZlcnRpY2VzLmxlbmd0aDsgaSsrKSB7CisgIGlmIChmbG9hdEFy
cmF5W2ldICE9IHJldEFycmF5W2ldKSB7CisgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICBicmVhazsK
KyAgfQorfQoraWYgKGZhaWxlZCkKKyAgdGVzdEZhaWxlZCgiVGhlIHJldHVybmVkIGFycmF5IGJ1
ZmZlciBmYWlscyB0byBtYXRjaCBvcmlnaW5hbCBkYXRhIik7CitlbHNlCisgIHRlc3RQYXNzZWQo
IlRoZSByZXR1cm5lZCBhcnJheSBidWZmZXIgbWF0Y2hlcyBvcmlnaW5hbCBkYXRhIik7CisKK2Rl
YnVnKCJUZXN0IHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSBzdWNjZXNzZnVsbHkgd29ya3Mgd2l0aCBk
c3RPZmZzZXQiKTsKK3JldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlcy5sZW5ndGgp
Oword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5nZXRCdWZm
ZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgcmV0QXJyYXksIDIpIik7CitzaG91bGRCZVRy
dWUoImFyZUFycmF5c0VxdWFsKHJldEFycmF5LnNsaWNlKDAsIDIpLCBbMCwgMF0pIik7CitzaG91
bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHJldEFycmF5LnNsaWNlKDIpLCBmbG9hdEFycmF5LnNs
aWNlKDAsIGZsb2F0QXJyYXkubGVuZ3RoIC0gMikpIik7CisKK3JldEFycmF5ID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0aWNlcy5sZW5ndGgpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgcmV0
QXJyYXksIHJldEFycmF5Lmxlbmd0aCkiKTsKK3Nob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwo
cmV0QXJyYXksIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSkiKTsKKworZGVidWcoIlRlc3Qg
dGhhdCBnZXRCdWZmZXJTdWJEYXRhIGZhaWxzIHdoZW4gZ2l2ZW4gYSBkc3RPZmZzZXQgYmV5b25k
IHRoZSBlbmQgb2YgcmV0QXJyYXkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
LklOVkFMSURfVkFMVUUsICJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwg
cmV0QXJyYXksIHJldEFycmF5Lmxlbmd0aCArIDEpIik7CisKK2RlYnVnKCJUZXN0IHRoYXQgZ2V0
QnVmZmVyU3ViRGF0YSBzdWNjZXNzZnVsbHkgd29ya3Mgd2l0aCBkc3RPZmZzZXQgYW5kIGxlbmd0
aCIpOworcmV0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzLmxlbmd0aCk7Cit3dHUu
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmdldEJ1ZmZlclN1YkRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCByZXRBcnJheSwgMiwgMikiKTsKK3Nob3VsZEJlVHJ1ZSgi
YXJlQXJyYXlzRXF1YWwocmV0QXJyYXkuc2xpY2UoMCwgMiksIFswLCAwXSkiKTsKK3Nob3VsZEJl
VHJ1ZSgiYXJlQXJyYXlzRXF1YWwocmV0QXJyYXkuc2xpY2UoMiwgNCksIGZsb2F0QXJyYXkuc2xp
Y2UoMCwgMikpIik7CitzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHJldEFycmF5LnNsaWNl
KDQpLCBbMCwgMCwgMCwgMCwgMF0pIik7CisKK3JldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0aWNlcy5sZW5ndGgpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsICJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgcmV0QXJyYXksIHJl
dEFycmF5Lmxlbmd0aCAtIDEsIDEpIik7CitzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHJl
dEFycmF5LnNsaWNlKDAsIDgpLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pIik7CitzaG91bGRC
ZVRydWUoImFyZUFycmF5c0VxdWFsKHJldEFycmF5LnNsaWNlKDgpLCBmbG9hdEFycmF5LnNsaWNl
KDAsIDEpKSIpOworCitkZWJ1ZygiVGVzdCB0aGF0IGdldEJ1ZmZlclN1YkRhdGEgZmFpbHMgd2hl
biBnaXZlbiBhIGRzdE9mZnNldCtsZW5ndGggYmV5b25kIHRoZSBlbmQgb2YgcmV0QXJyYXkiKTsK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJnbC5nZXRC
dWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgcmV0QXJyYXksIHJldEFycmF5Lmxlbmd0
aCAtIDEsIDIpIik7CisKK2RlYnVnKCJUZXN0IHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSBmYWlscyB3
aGVuIGdpdmVuIGEgYnVmZmVyIHdpdGggaXRzIHNpemUgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFs
IGRhdGEiKTsKK3ZhciBleHRyYUxhcmdlQnVmZmVyID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNl
cy5sZW5ndGggKyAxKTsKK2dsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCBl
eHRyYUxhcmdlQnVmZmVyKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFM
SURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJnbC5nZXRCdWZmZXJTdWJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgMCwgZXh0cmFMYXJnZUJ1ZmZlcikiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXh0cmEgbGVuZ3RoIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFLiIp
OworCitkZWJ1ZygiVGVzdCB0aGF0IGdldEJ1ZmZlclN1YkRhdGEgZmFpbHMgd2hlbiBvZmZzZXQg
c3VtbWVkIHdpdGggYnVmZmVyIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUg
b3JpZ2luYWwgZGF0YSBzaXplIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5J
TlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2wuZ2V0QnVmZmVyU3Vi
RGF0YShnbC5BUlJBWV9CVUZGRVIsIHJldEFycmF5LmJ5dGVMZW5ndGggKyAxLCByZXRBcnJheSki
KTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJnbC5n
ZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMSwgcmV0QXJyYXkpIik7CisKK2RlYnVn
KCJUZXN0IHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSBmYWlscyB3aGVuIDAgaXMgYm91bmQgdG8gdGhl
IHRhcmdldCIpOworZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIDAsIHJldEFycmF5KSIpOworCitkZWJ1ZygiVGVzdCB0aGF0IGdldEJ1ZmZl
clN1YkRhdGEgZmFpbHMgd2hlbiBvZmZzZXQgaXMgbGVzcyB0aGFuIDAiKTsKK3d0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJnbC5nZXRCdWZmZXJTdWJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgLTEsIHJldEFycmF5KSIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdCB0aGF0IGdldEJ1ZmZlclN1YkRhdGEgc3VjY2Vzc2Z1bGx5IHdvcmtzIHdpdGggdW5pbml0
aWFsaXplZCBidWZmZXJzIik7CityZXRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDldKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB1bmlu
aXRpYWxpemVkQnVmZmVyKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VS
Uk9SLAorICAgICJnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMCwgcmV0QXJy
YXkpIik7CitzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHJldEFycmF5LCBbMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMF0pIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHRoYXQgZ2V0
QnVmZmVyU3ViRGF0YSB3b3JrcyB3aGVuIGEgYnVmZmVyIGlzIGltbWVkaWF0ZWx5IHJlc2l6ZWQg
dG8gYmUgdG9vIHNtYWxsIik7CisKK3JldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOV0pOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwKKyAgICAi
Z2wuZ2V0QnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIHJldEFycmF5KSIpOworZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDQsIGdsLlNUQVRJQ19EUkFXKTsKK3Nob3VsZEJl
VHJ1ZSgiYXJlQXJyYXlzRXF1YWwocmV0QXJyYXksIGZsb2F0QXJyYXkpIik7CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJUZXN0IHRoYXQgZ2V0QnVmZmVyU3ViRGF0YSB3b3JrcyB3aGVuIGEgYnVmZmVy
IGlzIGltbWVkaWF0ZWx5IGRlbGV0ZWQiKTsKK3JldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShb
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0pOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIGJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgZmxvYXRBcnJheSwg
Z2wuU1RBVElDX0RSQVcpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsCisgICAgImdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCByZXRBcnJh
eSkiKTsKK2dsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNF
cXVhbChyZXRBcnJheSwgZmxvYXRBcnJheSkiKTsKKworZmluaXNoVGVzdCgpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2J1ZmZlcnMvb25lLWxhcmdlLXVuaWZvcm0tYnVmZmVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVy
cy9vbmUtbGFyZ2UtdW5pZm9ybS1idWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmJkZGNlMDRjZmQz
NjgzMTQyNzBjODEzNjc2M2JmNzM5NmZhMjViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2J1ZmZlcnMv
b25lLWxhcmdlLXVuaWZvcm0tYnVmZmVyLmh0bWwKQEAgLTAsMCArMSwxOTUgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFVuaWZv
cm0gQnVmZmVycyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lk
dGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJz
aW9uIDMwMCBlcworaW4gdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKK3VuaWZvcm0gdW5pIHsKKyAgICB2ZWM0IGNvbG9yOworfTsKKworb3V0IHZlYzQg
ZnJhZ0NvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIGZyYWdDb2xvciA9IGNvbG9yOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBjb3ZlcnMgQU5HTEUgYnVncyB3aGVuIHVzaW5nIGEgbGFyZ2UgdW5pZm9ybSBibG9ja3MuIEFO
R0xFIHdvdWxkIGNvbmZ1c2UgYW4gaW50ZXJuYWwgY2xpcHBlZCB1bmlmb3JtIGJ1ZmZlciBzaXpl
IGFuZCBwcm9kdWNlIGFuIGFzc2VydCBvciBlcnJvci4gQWxzbyB0aGVyZSB3ZXJlIGlzc3VlcyB3
aXRoIHJlYWRiYWNrIG9mIGxhcmdlIFVCT3MuIFNlZSBodHRwOi8vY3JidWcuY29tLzY2MDY3MC4i
KTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIHF1YWRWQjsKKworaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyB1bmlmb3JtIGJsb2NrIHdpdGggbGFyZ2UgZGF0YSBzdG9y
ZSIpOworICAgIHJ1blRlc3QoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyByZWFkYmFjayBvbiB1bmlmb3JtIGJsb2NrIHdpdGggbGFyZ2UgZGF0YSBzdG9yZSIpOworICAg
IHJ1blJlYWRiYWNrVGVzdCgpOworfQorCitmdW5jdGlvbiBnZXRRdWFkVmVydHMoZGVwdGgpIHsK
KyAgdmFyIHF1YWRWZXJ0cyA9IG5ldyBGbG9hdDMyQXJyYXkoMyAqIDYpOworICBxdWFkVmVydHNb
MF0gPSAtMS4wOyBxdWFkVmVydHNbMV0gPSAgIDEuMDsgcXVhZFZlcnRzWzJdID0gZGVwdGg7Cisg
IHF1YWRWZXJ0c1szXSA9IC0xLjA7IHF1YWRWZXJ0c1s0XSA9ICAtMS4wOyBxdWFkVmVydHNbNV0g
PSBkZXB0aDsKKyAgcXVhZFZlcnRzWzZdID0gIDEuMDsgcXVhZFZlcnRzWzddID0gIC0xLjA7IHF1
YWRWZXJ0c1s4XSA9IGRlcHRoOworICBxdWFkVmVydHNbOV0gPSAtMS4wOyBxdWFkVmVydHNbMTBd
ID0gIDEuMDsgcXVhZFZlcnRzWzExXSA9IGRlcHRoOworICBxdWFkVmVydHNbMTJdID0gMS4wOyBx
dWFkVmVydHNbMTNdID0gLTEuMDsgcXVhZFZlcnRzWzE0XSA9IGRlcHRoOworICBxdWFkVmVydHNb
MTVdID0gMS4wOyBxdWFkVmVydHNbMTZdID0gIDEuMDsgcXVhZFZlcnRzWzE3XSA9IGRlcHRoOwor
ICByZXR1cm4gcXVhZFZlcnRzOworfQorCitmdW5jdGlvbiBkcmF3UXVhZChkZXB0aCkgeworICBp
ZiAoIXF1YWRWQikgeworICAgIHF1YWRWQiA9IGdsLmNyZWF0ZUJ1ZmZlcigpCisgIH0KKworICB2
YXIgcXVhZFZlcnRzID0gZ2V0UXVhZFZlcnRzKGRlcHRoKTsKKworICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgcXVhZFZCKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IHF1YWRWZXJ0cywgZ2wuU1RBVElDX0RSQVcpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAs
IDMsIGdsLkZMT0FULCBnbC5GQUxTRSwgMCwgMCk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisKKyAgICAvLyBDcmVhdGUgdGhlIHByb2dyYW0KKyAgICB2YXIgcHJv
Z3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsicG9z
aXRpb24iXSk7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWxl
ZCB0byBzZXQgdXAgdGhlIHByb2dyYW0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIEluaXQgdW5pZm9ybSBidWZmZXIuIFRvIHRyaWdnZXIgdGhlIGJ1ZywgaXQncyBuZWNlc3Nh
cnkgdG8gdXNlIHRoZQorICAgIC8vIERZTkFNSUNfRFJBVyB1c2FnZS4gVGhpcyBtYWtlcyBBTkdM
RSBhdHRlbXB0IHRvIG1hcCB0aGUgYnVmZmVyIGludGVybmFsbHkKKyAgICAvLyB3aXRoIGFuIGlu
Y29ycmVjdCBjb3B5IHNpemUuCisgICAgdmFyIHVibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
IHZhciBiaWdfc2l6ZSA9IDQwOTYgKiA2NDsKKyAgICB2YXIgZGF0YSA9IG5ldyBGbG9hdDMyQXJy
YXkoWzAuNSwgMC43NSwgMC4yNSwgMS4wXSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5VTklGT1JN
X0JVRkZFUiwgdWJvKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCBiaWdf
c2l6ZSwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLlVOSUZPUk1f
QlVGRkVSLCAwLCBkYXRhKTsKKworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVG
RkVSLCAwLCB1Ym8pOworICAgIHZhciBidWZmZXJfaW5kZXggPSBnbC5nZXRVbmlmb3JtQmxvY2tJ
bmRleChwcm9ncmFtLCAidW5pIik7CisgICAgaWYgKGJ1ZmZlcl9pbmRleCA9PSAtMSkgeworICAg
ICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIGdldCB1bmlmb3JtIGJsb2NrIGluZGV4Iik7CisgICAg
ICByZXR1cm47CisgICAgfQorICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgYnVm
ZmVyX2luZGV4LCAwKTsKKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiU2V0dGluZyB1cCB1bmlmb3JtIGJsb2NrIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICAvLyBE
cmF3IHRoZSBxdWFkCisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBkcmF3UXVhZCgw
LjUpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRHJhdyB3aXRo
IHVuaWZvcm0gYmxvY2sgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIFZlcmlmeSB0aGUgb3V0
cHV0IGNvbG9yCisgICAgdmFyIGNvbG9yID0gWzEyNywgMTkxLCA2NCwgMjU1XTsKKyAgICB3dHUu
Y2hlY2tDYW52YXMoZ2wsIGNvbG9yLCAiY2FudmFzIHNob3VsZCBiZSBzYW1lIGFzIGlucHV0IHVu
aWZvcm0iLCAxKTsKK30KKworZnVuY3Rpb24gcnVuUmVhZGJhY2tUZXN0KCkgeworCisgICAgLy8g
Q3JlYXRlIHRoZSBwcm9ncmFtCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGds
LCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbInBvc2l0aW9uIl0pOworICAgIGlmICghcHJvZ3Jh
bSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gc2V0IHVwIHRoZSBwcm9ncmFtIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbml0IHVuaWZvcm0gYnVmZmVyLiBU
byB0cmlnZ2VyIHRoZSBidWcsIGl0J3MgbmVjZXNzYXJ5IHRvIHVzZSB0aGUKKyAgICAvLyBEWU5B
TUlDX0RSQVcgdXNhZ2UuIFRoaXMgbWFrZXMgQU5HTEUgYXR0ZW1wdCB0byBtYXAgdGhlIGJ1ZmZl
ciBpbnRlcm5hbGx5CisgICAgLy8gd2l0aCBhbiBpbmNvcnJlY3QgY29weSBzaXplLgorICAgIHZh
ciB1Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICB2YXIgbnVtX2Zsb2F0cyA9IDQwOTYgKiAx
NjsKKyAgICB2YXIgZXhwZWN0ZWRfZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkobnVtX2Zsb2F0cyk7
CisgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG51bV9mbG9hdHM7ICsraW5kZXgpIHsK
KyAgICAgICAgZXhwZWN0ZWRfZGF0YVtpbmRleF0gPSBpbmRleDsKKyAgICB9CisKKyAgICBleHBl
Y3RlZF9kYXRhWzBdID0gMC41OworICAgIGV4cGVjdGVkX2RhdGFbMV0gPSAwLjc1OworICAgIGV4
cGVjdGVkX2RhdGFbMl0gPSAwLjI1OworICAgIGV4cGVjdGVkX2RhdGFbM10gPSAxLjA7CisKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym8pOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuVU5JRk9STV9CVUZGRVIsIGV4cGVjdGVkX2RhdGEsIGdsLkRZTkFNSUNfRFJBVyk7Cisg
ICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgMCwgZXhwZWN0ZWRfZGF0YSk7
CisKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMCwgdWJvKTsKKyAg
ICB2YXIgYnVmZmVyX2luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgInVu
aSIpOworICAgIGlmIChidWZmZXJfaW5kZXggPT0gLTEpIHsKKyAgICAgIHRlc3RGYWlsZWQoIkZh
aWxlZCB0byBnZXQgdW5pZm9ybSBibG9jayBpbmRleCIpOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBnbC51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIGJ1ZmZlcl9pbmRleCwgMCk7CisK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldHRpbmcgdXAgdW5p
Zm9ybSBibG9jayBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8gRHJhdyB0aGUgcXVhZAorICAg
IGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZHJhd1F1YWQoMC41KTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkRyYXcgd2l0aCB1bmlmb3JtIGJsb2NrIHNo
b3VsZCBzdWNjZWVkIik7CisKKyAgICAvLyBWZXJpZnkgdGhlIG91dHB1dCBjb2xvcgorICAgIHZh
ciBjb2xvciA9IFsxMjcsIDE5MSwgNjQsIDI1NV07CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBj
b2xvciwgImNhbnZhcyBzaG91bGQgYmUgc2FtZSBhcyBpbnB1dCB1bmlmb3JtIiwgMSk7CisKKyAg
ICAvLyBWZXJpZnkgcmVhZGJhY2sKKyAgICB2YXIgYWN0dWFsX2RhdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KG51bV9mbG9hdHMpOworICAgIGdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuVU5JRk9STV9CVUZG
RVIsIDAsIGFjdHVhbF9kYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlJlYWRiYWNrIGZyb20gdW5pZm9ybSBibG9jayBzaG91bGQgc3VjY2VlZCIpOworCisg
ICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG51bV9mbG9hdHM7ICsraW5kZXgpIHsKKyAg
ICAgICAgaWYgKGFjdHVhbF9kYXRhW2luZGV4XSAhPSBleHBlY3RlZF9kYXRhW2luZGV4XSkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgYW5kIGFjdHVhbCBidWZmZXIgZGF0YSBk
byBub3QgbWF0Y2giKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30K
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy91bmlmb3JtLWJ1ZmZlcnMtc2Vjb25k
LWNvbXBpbGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL3VuaWZvcm0tYnVmZmVycy1zZWNvbmQtY29tcGlsZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzNjEyNjg1NmVjNzI2NWI3NWRjZmVmZTcyZjEzMTk0ODA5Njc5MTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvYnVmZmVycy91bmlmb3JtLWJ1ZmZlcnMtc2Vjb25kLWNvbXBp
bGUuaHRtbApAQCAtMCwwICsxLDEwNCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybSBCdWZmZXJzIHNob3VsZCB3b3Jr
IG9uIHNlY29uZCBjb21waWxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ndnNoYWRlcicgdHlwZT0neC1z
aGFkZXIveC12ZXJ0ZXgnPgorI3ZlcnNpb24gMzAwIGVzCisKK2xheW91dChsb2NhdGlvbj0wKSBp
biB2ZWM0IHBvc2l0aW9uOworbGF5b3V0KHN0ZDE0MCwgY29sdW1uX21ham9yKSB1bmlmb3JtIFVu
aWZvcm1zMSB7CisgICAgbWF0NCB0cmFuc2Zvcm07Cit9Oworb3V0IHZlYzMgdkNvbG9yOworCit2
b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB0cmFuc2Zvcm0gKiBwb3NpdGlvbjsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0nZnNoYWRlcicgdHlwZT0neC1zaGFkZXIveC1mcmFnbWVu
dCc+CisjdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKworbGF5b3V0KHN0
ZDE0MCkgdW5pZm9ybSBVbmlmb3JtczIgeworICAgIHZlYzQgY29sb3I7Cit9Oworb3V0IHZlYzQg
ZnJhZ0NvbG9yOworCit2b2lkIG1haW4oKXsKKyAgICBmcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwv
Y2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGdldFVuaWZvcm1CbG9ja0lu
ZGV4IGlzbid0IGJyb2tlbiBvbiBzZWNvbmQgY29tcGlsZS4iKTsKKworZGVidWcoIlRoaXMgaXMg
YSByZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9J2h0dHA6Ly9jcmJ1Zy5jb20vNzE2MDE4Jz5o
dHRwOi8vY3JidWcuY29tLzcxNjAxODwvYT4iKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKwor
Ly8gSW5pdGlhbGl6ZQorZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKK3ZhciB2c1NvdXJjZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2c2hhZGVyIikudGV4dC50cmltKCk7Cit2YXIgZnNT
b3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnNoYWRlciIpLnRleHQudHJpbSgpOwor
CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIC8vIFJ1biB0d2ljZSB0byBtYWtlIHN1cmUgdGhh
dCB0aGUgc2Vjb25kIGJ1aWxkIGRvZXMgbm90IGNhdXNlIGVycm9ycworICAgIC8vIChpLmUuIGR1
ZSB0byBjYWNoaW5nKS4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAg
ICBkZWJ1ZygiQ29tcGlsZS90ZXN0IGl0ZXJhdGlvbiAiICsgaSk7CisKKyAgICAgICAgdmFyIHZl
cnRleFNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAg
Z2wuc2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgdnNTb3VyY2UpOworICAgICAgICBnbC5jb21w
aWxlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgICAgIC8vIE5vdGU6IGlmIENPTVBJTEVfU1RB
VFVTIGlzIHJldHJpZXZlZCBoZXJlLCBpdCBoaWRlcyB0aGUgYnVnLgorCisgICAgICAgIHZhciBm
cmFnbWVudFNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAg
ICAgICBnbC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGZzU291cmNlKTsKKyAgICAgICAg
Z2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgICAgIC8vIE5vdGU6IGlmIENP
TVBJTEVfU1RBVFVTIGlzIHJldHJpZXZlZCBoZXJlLCBpdCBoaWRlcyB0aGUgYnVnLgorCisgICAg
ICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKKyAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHBy
b2dyYW0sIGZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICB2YXIgdW5pZm9y
bXMxTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCAiVW5pZm9ybXMx
Iik7CisgICAgICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybXMxTG9j
YXRpb24sIDApOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InVuaWZvcm1zMUxvY2F0aW9uIHdhcyAiICsgdW5pZm9ybXMxTG9jYXRpb24pOworCisgICAgICAg
IHZhciB1bmlmb3JtczJMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0s
ICJVbmlmb3JtczIiKTsKKyAgICAgICAgZ2wudW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1
bmlmb3JtczJMb2NhdGlvbiwgMSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidW5pZm9ybXMyTG9jYXRpb24gd2FzICIgKyB1bmlmb3JtczJMb2NhdGlvbik7
CisKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KK30KKworcnVuVGVzdCgpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9idWZmZXJzL3VuaWZvcm0tYnVmZmVycy1zdGF0ZS1yZXN0b3JhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2J1
ZmZlcnMvdW5pZm9ybS1idWZmZXJzLXN0YXRlLXJlc3RvcmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTFlZGQ2ZWMwNzI2ZDQxNzI4MzBjZjczNDdjN2NiMmQ1MTVkOWJmZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9idWZmZXJzL3VuaWZvcm0tYnVmZmVycy1zdGF0ZS1yZXN0b3JhdGlvbi5odG1sCkBAIC0w
LDAgKzEsMTAxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJ1ZmZlcnMgU3RhdGUgUmVzdG9yYXRpb24gQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSd2c2hhZGVyJyB0eXBlPSd4LXNoYWRlci94
LXZlcnRleCc+I3ZlcnNpb24gMzAwIGVzCitsYXlvdXQobG9jYXRpb249MCkgaW4gdmVjMyBwOwor
dm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocC54eXosIDEuMCk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFkZXInIHR5cGU9J3gtc2hhZGVyL3gtZnJhZ21lbnQn
PiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitsYXlvdXQobG9jYXRp
b249MCkgb3V0IHZlYzQgb0NvbG9yOworCit1bmlmb3JtIFVCT0RhdGEgeworICAgIHZlYzQgdWJv
Q29sb3I7Cit9OworCit2b2lkIG1haW4oKQoreworICAgIG9Db2xvciA9IHVib0NvbG9yOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4g
PC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCB2ZXJpZnlpbmcgdGhh
dCB1bmlmb3JtIGJ1ZmZlciBiaW5kaW5ncyBwZXJzaXN0IGNvcnJlY3RseSBhY3Jvc3MgZnJhbWVz
OiA8YSBocmVmPSdodHRwOi8vY3JidWcuY29tLzcyMjA2MCc+Y3JidWcuY29tLzcyMjA2MDwvYT4i
KTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIGdyZWVuQnVmID0gbnVsbDsKK3ZhciB0
aHJvd2F3YXlCdWYgPSBudWxsOwordmFyIHJlZCA9IG5ldyBGbG9hdDMyQXJyYXkoWzEsIDAsIDAs
IDFdKTsKK3ZhciBncmVlbiA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDEsIDAsIDFdKTsKK3ZhciBm
cmFtZSA9IDA7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRv
ZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQg
ZXhpc3RzIik7CisKKyAgICBpbml0VGVzdCgpOworICAgIHd0dS53YWl0Rm9yQ29tcG9zaXRlKHJ1
blRlc3QpOworfQorCitmdW5jdGlvbiBpbml0VGVzdCgpIHsKKyAgICB3dHUuc2V0dXBVbml0UXVh
ZChnbCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRl
cicsICdmc2hhZGVyJ10pOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJDb3VsZCBub3QgY29tcGlsZSBzaGFkZXIgd2l0aCB1bmlmb3JtIGJsb2NrcyB3aXRob3V0IGVy
cm9yIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIHVib0xvY2F0aW9uID0gZ2wu
Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgIlVCT0RhdGEiKTsKKyAgICBnbC51bmlmb3Jt
QmxvY2tCaW5kaW5nKHByb2dyYW0sIHVib0xvY2F0aW9uLCAwKTsKKworICAgIGdyZWVuQnVmID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgdGhyb3dhd2F5QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJjcmVhdGVCdWZmZXIg
c2hvdWxkIG5vdCBzZXQgYW4gZXJyb3IiKTsKKworICAgIC8vIEJpbmQgdW5pZm9ybSBidWZmZXIg
KGJvdGggaW5kZXggMCBBTkQgZ2VuZXJpYyBiaW5kaW5nIHBvaW50cykgdG8gZ3JlZW5CdWYKKyAg
ICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMCwgZ3JlZW5CdWYpOworICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIGdyZWVuLCBnbC5TVEFUSUNfRFJBVyk7
CisgICAgLy8gQmluZCB0aHJvd2FyYXkgdW5pZm9ybSBidWZmZXIgKGZyb20gb25seSB0aGUgZ2Vu
ZXJpYyBiaW5kaW5nIHBvaW50KQorICAgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIs
IHRocm93YXdheUJ1Zik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgLy8gT05MWSB0
aGUgYmluZGluZyBwb2ludCBhdCBpbmRleCAwIChub3QgdGhlIGdlbmVyaWMgYmluZGluZyBwb2lu
dCkgc2hvdWxkIGJlIGdyZWVuQnVmLgorICAgIC8vIChUaGUgZ2VuZXJpYyBiaW5kaW5nIHBvaW50
IHNob3VsZCBwb2ludCBhdCB0aHJvd2F3YXlCdWYuKQorICAgIC8vIFNvIHRoaXMgYnVmZmVyRGF0
YSBzaG91bGQgZ28gaW50byB0aHJvd2F3YXlCdWYuCisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklG
T1JNX0JVRkZFUiwgcmVkLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJk
cmF3IGNhbGwgc2hvdWxkIHNldCBjYW52YXMgdG8gZ3JlZW4iLCAyKTsKKyAgICBmaW5pc2hUZXN0
KCk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9idWZmZXJzL3VuaWZvcm0t
YnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2J1ZmZlcnMvdW5pZm9ybS1idWZmZXJzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTZiZDFiNGJjOWU1OTg3ZDY4MjU0YThkYzQxZmYwMjBkMzI1NmNjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9idWZmZXJzL3VuaWZvcm0tYnVmZmVycy5odG1sCkBAIC0wLDAgKzEsNTc2IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBV
bmlmb3JtIEJ1ZmZlcnMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSd2c2hh
ZGVyJyB0eXBlPSd4LXNoYWRlci94LXZlcnRleCc+I3ZlcnNpb24gMzAwIGVzCitsYXlvdXQobG9j
YXRpb249MCkgaW4gdmVjMyBwOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocC54eXosIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZiYWRzaGFkZXInIHR5
cGU9J3gtc2hhZGVyL3gtZnJhZ21lbnQnPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CitsYXlvdXQobG9jYXRpb249MCkgb3V0IHZlYzQgb0NvbG9yOworCit1bmlmb3Jt
IFVCT0RhdGEgeworICAgIGZsb2F0IFVCT1JlZDsKKyAgICBmbG9hdCBVQk9HcmVlbjsKKyAgICBm
bG9hdCBVQk9CbHVlOworfTsKKwordW5pZm9ybSBDb2xvciB7CisgICAgZmxvYXQgUmVkOworICAg
IGZsb2F0IFVCT0dyZWVuOworICAgIGZsb2F0IEJsdWU7Cit9OworCit2b2lkIG1haW4oKQorewor
ICAgIG9Db2xvciA9IHZlYzQoVUJPUmVkICogUmVkLCBVQk9HcmVlbiAqIFVCT0dyZWVuLCBVQk9C
bHVlICogQmx1ZSwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0nZnNoYWRlcicgdHlw
ZT0neC1zaGFkZXIveC1mcmFnbWVudCc+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKK2xheW91dChsb2NhdGlvbj0wKSBvdXQgdmVjNCBvQ29sb3I7CisKK3VuaWZvcm0g
VUJPRGF0YSB7CisgICAgZmxvYXQgVUJPUmVkOworICAgIGZsb2F0IFVCT0dyZWVuOworICAgIGZs
b2F0IFVCT0JsdWU7Cit9OworCit1bmlmb3JtIFVCT0QgeworICAgIGZsb2F0IFVCT1I7CisgICAg
ZmxvYXQgVUJPRzsKKyAgICBmbG9hdCBVQk9COworfTsKKwordm9pZCBtYWluKCkKK3sKKyAgICBv
Q29sb3IgPSB2ZWM0KFVCT1JlZCAqIFVCT1IsIFVCT0dyZWVuICogVUJPRywgVUJPQmx1ZSAqIFVC
T0IsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFkZXJuYW1lZCcgdHlwZT0n
eC1zaGFkZXIveC1mcmFnbWVudCc+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK2xheW91dChsb2NhdGlvbj0wKSBvdXQgdmVjNCBvQ29sb3I7CisKK3VuaWZvcm0gVUJP
RGF0YSB7CisgICAgZmxvYXQgUmVkOworICAgIGZsb2F0IEdyZWVuOworICAgIGZsb2F0IEJsdWU7
Cit9IFVCT0E7CisKK3ZvaWQgbWFpbigpCit7CisgICAgb0NvbG9yID0gdmVjNChVQk9BLlJlZCwg
VUJPQS5HcmVlbiwgVUJPQS5CbHVlLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSdm
c2hhZGVybmFtZWRhcnJheScgdHlwZT0neC1zaGFkZXIveC1mcmFnbWVudCc+I3ZlcnNpb24gMzAw
IGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2xheW91dChsb2NhdGlvbj0wKSBvdXQgdmVj
NCBvQ29sb3I7CisKK3VuaWZvcm0gVUJPRGF0YSB7CisgICAgZmxvYXQgUmVkOworICAgIGZsb2F0
IEdyZWVuOworICAgIGZsb2F0IEJsdWU7Cit9IFVCT0FbMl07CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgb0NvbG9yID0gdmVjNCgoVUJPQVswXS5SZWQgKyBVQk9BWzFdLlJlZCkgLyAyLjAsCisgICAg
ICAgICAgICAgICAgICAoVUJPQVswXS5HcmVlbiArIFVCT0FbMV0uR3JlZW4pIC8gMi4wLAorICAg
ICAgICAgICAgICAgICAgKFVCT0FbMF0uQmx1ZSArIFVCT0FbMV0uQmx1ZSkgLyAyLjAsIDEuMCk7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J2ZzaGFkZXJuZXN0ZWRzdHJ1Y3QnIHR5cGU9J3gt
c2hhZGVyL3gtZnJhZ21lbnQnPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CitsYXlvdXQobG9jYXRpb249MCkgb3V0IHZlYzQgb0NvbG9yOworCitzdHJ1Y3QgY29sb3Jf
dCB7CisgICAgZmxvYXQgcmVkOworICAgIGZsb2F0IGdyZWVuOworICAgIGZsb2F0IGJsdWU7Cit9
OworCitzdHJ1Y3Qgd3JhcHBlcl90IHsKKyAgICBjb2xvcl90IGNvbG9yOworfTsKKwordW5pZm9y
bSBVQk9EYXRhIHsKKyAgICB3cmFwcGVyX3QgVUJPU3RydWN0OworfTsKKworLy8gVGhpcyBpcyBp
bnRlbmRlZCB0byByZXByb2R1Y2UgYSBzcGVjaWZpYyBBTkdMRSBidWcgdGhhdCB0cmlnZ2VycyB3
aGVuIHRoZSB3cmFwcGVyIHN0cnVjdCBpcyBwYXNzZWQgdG8gYSBmdW5jdGlvbi4KKy8vIGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD0yMDg0
Cit2b2lkIHByb2Nlc3NDb2xvcih3cmFwcGVyX3Qgd3JhcHBlcikgeworICAgIG9Db2xvciA9IHZl
YzQod3JhcHBlci5jb2xvci5yZWQsIHdyYXBwZXIuY29sb3IuZ3JlZW4sIHdyYXBwZXIuY29sb3Iu
Ymx1ZSwgMS4wKTsKK30KKwordm9pZCBtYWluKCkKK3sKKyAgICBwcm9jZXNzQ29sb3IoVUJPU3Ry
dWN0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0nZnNoYWRlcmFycmF5b2ZzdHJ1Y3RzJyB0
eXBlPSd4LXNoYWRlci94LWZyYWdtZW50Jz4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworbGF5b3V0KGxvY2F0aW9uPTApIG91dCB2ZWM0IG9Db2xvcjsKKworc3RydWN0
IGNvbG9yX3QgeworICAgIGZsb2F0IHJlZDsKKyAgICBmbG9hdCBncmVlbjsKKyAgICBmbG9hdCBi
bHVlOworfTsKKwordW5pZm9ybSBVQk9EYXRhIHsKKyAgICBjb2xvcl90IFVCT0NvbG9yc1syXTsK
K307CisKKy8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gcmVwcm9kdWNlIGEgc3BlY2lmaWMgQU5HTEUg
YnVnIHRoYXQgdHJpZ2dlcnMgd2hlbiBhIHN0cnVjdCBmcm9tIGFuIGFycmF5IG9mIHN0cnVjdHMg
aW4gYW4gaW50ZXJmYWNlIGJsb2NrIGlzIHBhc3NlZCB0byBhIGZ1bmN0aW9uLgorLy8gaHR0cHM6
Ly9idWdzLmNocm9taXVtLm9yZy9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTIwODQK
K3ZlYzMgcHJvY2Vzc0NvbG9yKGNvbG9yX3QgY29sb3IpIHsKKyAgICByZXR1cm4gdmVjMyhjb2xv
ci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsKK30KKwordm9pZCBtYWluKCkKK3sKKyAg
ICBvQ29sb3IgPSB2ZWM0KHByb2Nlc3NDb2xvcihVQk9Db2xvcnNbMF0pICsgcHJvY2Vzc0NvbG9y
KFVCT0NvbG9yc1sxXSksIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lk
dGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVy
aWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFVuaWZvcm0gQnVmZmVyIG9iamVjdHMiKTsK
KworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIGIxID0gbnVsbDsKK3ZhciBiMiA9IG51bGw7
CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7
CisKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKKyAgICBydW5CaW5kaW5nVGVzdCgpOwor
ICAgIHJ1bkJhZFNoYWRlclRlc3QoKTsKKyAgICBydW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25t
ZW50VGVzdCgpOworICAgIHJ1bkRyYXdUZXN0KCk7CisgICAgcnVuTmFtZWREcmF3VGVzdCgpOwor
ICAgIHJ1bk5hbWVkQXJyYXlEcmF3VGVzdCgpOworICAgIHJ1bk5lc3RlZFN0cnVjdHNEcmF3VGVz
dCgpOworICAgIHJ1bkFycmF5T2ZTdHJ1Y3RzRHJhd1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVu
QmluZGluZ1Rlc3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHVuaWZv
cm0gYnVmZmVyIGJpbmRpbmcgYmVoYXZpb3IiKTsKKyAgICBzaG91bGRCZU51bGwoImdsLmdldFBh
cmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9CSU5ESU5HKSIpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVU5JRk9STV9CVUZGRVJfQklORElORyBxdWVyeSBzaG91
bGQgc3VjY2VlZCIpOworCisgICAgZGVidWcoIlRlc3RpbmcgYmFzaWMgdW5pZm9ybSBidWZmZXIg
YmluZGluZyBhbmQgdW5iaW5kaW5nIik7CisgICAgYjEgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICBiMiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiY3JlYXRlQnVmZmVyIHNob3VsZCBub3Qgc2V0IGFuIGVycm9yIik7CisgICAg
c2hvdWxkQmVOb25OdWxsKCJiMSIpOworICAgIHNob3VsZEJlTm9uTnVsbCgiYjIiKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCBiMSk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBiaW5kIHVuaWZvcm0gYnVm
ZmVyIik7CisgICAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9C
SU5ESU5HKSIsICJiMSIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIsIGIy
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBh
YmxlIHRvIHVwZGF0ZSB1bmlmb3JtIGJ1ZmZlciBiaW5kaW5nIik7CisgICAgc2hvdWxkQmUoImds
LmdldFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9CSU5ESU5HKSIsICJiMiIpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gdW5iaW5kIHVuaWZvcm0g
YnVmZmVyIik7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBkZWxldGluZyB1bmlmb3JtIGJ1ZmZlcnMi
KTsKKyAgICBnbC5kZWxldGVCdWZmZXIoYjEpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihiMik7Cisg
ICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfQklORElO
RykiKTsKKworICAgIC8vIFNob3VsZG4ndCBiZSBhYmxlIHRvIGJpbmQgYSBkZWxldGVkIGJ1ZmZl
ci4KKyAgICBnbC5iaW5kQnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCBiMik7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJiaW5kaW5nIGEgZGVsZXRl
ZCBidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIik7CisgICAgc2hvdWxk
QmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfQklORElORykiKTsKK30K
KworZnVuY3Rpb24gcnVuQmFkU2hhZGVyVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgdmFy
IHRlc3RQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZiYWRzaGFk
ZXInXSk7CisgICAgaWYgKHRlc3RQcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRvIGRl
ZmluZSB0aGUgc2FtZSB1bmlmb3JtIGluIHR3byB1bmlmb3JtIGJsb2NrcyBzaG91bGQgZmFpbCIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlRvIGRlZmluZSB0aGUgc2FtZSB1
bmlmb3JtIGluIHR3byB1bmlmb3JtIGJsb2NrcyBzaG91bGQgZmFpbCIpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gcnVuVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudFRlc3QoKSB7CisgICAgZGVi
dWcoIiIpOworICAgIHZhciBvZmZzZXRBbGlnbm1lbnQgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5J
Rk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCk7CisKKyAgICBpZiAob2Zmc2V0QWxpZ25tZW50
ICUgNCAhPSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgVU5JRk9STV9CVUZG
RVJfT0ZGU0VUX0FMSUdOTUVOVCAtIHNob3VsZCBiZSBhbGlnbmVkIG9uIGEgNC1ieXRlIGJvdW5k
YXJ5Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiVU5JRk9STV9CVUZGRVJf
T0ZGU0VUX0FMSUdOTUVOVCBpcyBkaXZpc2libGUgYnkgZm91ciIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gc2V0UkdCVmFsdWVzVG9GbG9hdDMyQXJyYXkoZmxvYXRWaWV3LCByZWQsIGdyZWVuLCBi
bHVlKSB7CisgICAgZmxvYXRWaWV3WzBdID0gcmVkOworICAgIGZsb2F0Vmlld1sxXSA9IGdyZWVu
OworICAgIGZsb2F0Vmlld1syXSA9IGJsdWU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRmxvYXQzMlVu
aWZvcm1PZmZzZXRzSW5TdGQxNDBMYXlvdXQodW5pZm9ybU9mZnNldHMsIGV4cGVjdGVkSW5pdGlh
bE9mZnNldCkgeworICAgIGlmIChleHBlY3RlZEluaXRpYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkK
KyAgICB7CisgICAgICAgIGV4cGVjdGVkSW5pdGlhbE9mZnNldCA9IDA7CisgICAgfQorICAgIC8v
IFZlcmlmeSB0aGF0IHRoZSB1bmlmb3JtIG9mZnNldHMgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhl
IHN0ZDE0MCBsYXlvdXQsIHdoaWNoIFdlYkdMIGVuZm9yY2VzLgorICAgIC8vIFRoaXMgZnVuY3Rp
b24gY2hlY2tzIHRoaXMgZm9yIDMyLWJpdCBmbG9hdCB2YWx1ZXMsIHdoaWNoIGFyZSBleHBlY3Rl
ZCB0byBiZSB0aWdodGx5IHBhY2tlZC4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaWZvcm1P
ZmZzZXRzLmxlbmd0aDsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKHVuaWZvcm1PZmZzZXRzW2ld
ICE9IGV4cGVjdGVkSW5pdGlhbE9mZnNldCArIGkgKiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVuaWZvcm0gb2Zmc2V0
cyBhcmUgbm90IGFjY29yZGluZyB0byBzdGQxNDAgbGF5b3V0Iik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0
aW9uIHJ1bkRyYXdUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBk
cmF3aW5nIHdpdGggdW5pZm9ybSBidWZmZXJzIik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5z
ZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10pOworICAgIGlmICghcHJvZ3Jh
bSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY29tcGlsZSBzaGFkZXIgd2l0aCB1
bmlmb3JtIGJsb2NrcyB3aXRob3V0IGVycm9yIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB2YXIgYmxvY2tJbmRleF8xID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwg
IlVCT0RhdGEiKTsKKyAgICB2YXIgYmxvY2tTaXplXzEgPSBnbC5nZXRBY3RpdmVVbmlmb3JtQmxv
Y2tQYXJhbWV0ZXIocHJvZ3JhbSwgYmxvY2tJbmRleF8xLCBnbC5VTklGT1JNX0JMT0NLX0RBVEFf
U0laRSk7CisgICAgdmFyIHVuaWZvcm1JbmRpY2VzXzEgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhw
cm9ncmFtLCBbIlVCT1JlZCIsICJVQk9HcmVlbiIsICJVQk9CbHVlIl0pOworICAgIHZhciB1bmlm
b3JtT2Zmc2V0c18xID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGlj
ZXNfMSwgZ2wuVU5JRk9STV9PRkZTRVQpOworICAgIHZhciBibG9ja0luZGV4XzIgPSBnbC5nZXRV
bmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCAiVUJPRCIpOworICAgIHZhciBibG9ja1NpemVfMiA9
IGdsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9ncmFtLCBibG9ja0luZGV4XzIs
IGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFKTsKKyAgICB2YXIgdW5pZm9ybUluZGljZXNfMiA9
IGdsLmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIFsiVUJPUiIsICJVQk9HIiwgIlVCT0IiXSk7
CisgICAgdmFyIHVuaWZvcm1PZmZzZXRzXzIgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
LCB1bmlmb3JtSW5kaWNlc18yLCBnbC5VTklGT1JNX09GRlNFVCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBxdWVyeSB1bmlmb3Jt
IGJsb2NrIGluZm9ybWF0aW9uIHdpdGhvdXQgZXJyb3IiKTsKKworICAgIGlmICh1bmlmb3JtT2Zm
c2V0c18xLmxlbmd0aCA8IDMgfHwgdW5pZm9ybU9mZnNldHNfMi5sZW5ndGggPCAzKSB7CisgICAg
ICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBxdWVyeSB1bmlmb3JtIG9mZnNldHMiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY2hlY2tGbG9hdDMyVW5pZm9ybU9mZnNldHNJ
blN0ZDE0MExheW91dCh1bmlmb3JtT2Zmc2V0c18xKSB8fCAhY2hlY2tGbG9hdDMyVW5pZm9ybU9m
ZnNldHNJblN0ZDE0MExheW91dCh1bmlmb3JtT2Zmc2V0c18yKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB2YXIgdWJvQXJyYXlfMSA9IG5ldyBBcnJheUJ1ZmZlcihibG9j
a1NpemVfMSk7CisgICAgdmFyIHVib0Zsb2F0Vmlld18xID0gbmV3IEZsb2F0MzJBcnJheSh1Ym9B
cnJheV8xKTsKKyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXdfMSwg
MS4wLCAwLjAsIDAuMCk7IC8vIFVCT1JlZCwgVUJPR3JlZW4sIFVCT0JsdWUKKyAgICB2YXIgdWJv
QXJyYXlfMiA9IG5ldyBBcnJheUJ1ZmZlcihibG9ja1NpemVfMik7CisgICAgdmFyIHVib0Zsb2F0
Vmlld18yID0gbmV3IEZsb2F0MzJBcnJheSh1Ym9BcnJheV8yKTsKKyAgICBzZXRSR0JWYWx1ZXNU
b0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXdfMiwgMS4wLCAxLjAsIDEuMCk7IC8vIFVCT1IsIFVC
T0csIFVCT0IKKworICAgIHZhciBiXzEgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCBiXzEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5J
Rk9STV9CVUZGRVIsIHVib0Zsb2F0Vmlld18xLCBnbC5EWU5BTUlDX0RSQVcpOworICAgIHZhciBi
XzIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlVOSUZPUk1fQlVG
RkVSLCBiXzIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIHVib0Zsb2F0
Vmlld18yLCBnbC5EWU5BTUlDX0RSQVcpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gc2V0IFVCTyBkYXRhIHdpdGggbm8gZXJyb3Jz
Iik7CisKKyAgICB2YXIgYmluZGluZ3MgPSBbMSwgMl07CisgICAgZ2wudW5pZm9ybUJsb2NrQmlu
ZGluZyhwcm9ncmFtLCBibG9ja0luZGV4XzEsIGJpbmRpbmdzWzBdKTsKKyAgICBnbC5iaW5kQnVm
ZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgYmluZGluZ3NbMF0sIGJfMSk7CisgICAgZ2wudW5p
Zm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCBibG9ja0luZGV4XzIsIGJpbmRpbmdzWzFdKTsKKyAg
ICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgYmluZGluZ3NbMV0sIGJfMik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJs
ZSB0byBjYWxsIGJpbmRCdWZmZXJCYXNlIHdpdGhvdXQgZXJyb3JzIik7CisKKyAgICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzI1NSwgMCwg
MCwgMjU1XSwgImRyYXcgY2FsbCBzaG91bGQgc2V0IGNhbnZhcyB0byByZWQiLCAyKTsKKworICAg
IGRlYnVnKCJDaGFuZ2luZyB0aGUgZGF0YSBpbiB0aGUgdW5pZm9ybSBidWZmZXIgc2hvdWxkIGF1
dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSB1bmlmb3JtcyBleHBvc2VkIHRvIHRoZSBkcmF3IGNhbGwi
KTsKKyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXdfMSwgMC4wLCAw
LjAsIDEuMCk7IC8vIFVCT1JlZCwgVUJPR3JlZW4sIFVCT0JsdWUKKyAgICBnbC5iaW5kQnVmZmVy
KGdsLlVOSUZPUk1fQlVGRkVSLCBiXzEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9C
VUZGRVIsIHVib0Zsb2F0Vmlld18xLCBnbC5EWU5BTUlDX0RSQVcpOworCisgICAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAwLCAyNTUs
IDI1NV0sICJkcmF3IGNhbGwgc2hvdWxkIHNldCBjYW52YXMgdG8gYmx1ZSIsIDIpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVy
cm9ycyIpOworfQorCitmdW5jdGlvbiBydW5OYW1lZERyYXdUZXN0KCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdGluZyBkcmF3aW5nIHdpdGggbmFtZWQgdW5pZm9ybSBidWZmZXJz
Iik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcics
ICdmc2hhZGVybmFtZWQnXSk7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIkNvdWxkIG5vdCBjb21waWxlIHNoYWRlciB3aXRoIG5hbWVkIHVuaWZvcm0gYmxvY2tzIHdp
dGhvdXQgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBibG9ja0lu
ZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgIlVCT0RhdGEiKTsKKyAgICB2
YXIgYmxvY2tTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKHByb2dyYW0s
IGJsb2NrSW5kZXgsIGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFKTsKKyAgICB2YXIgdW5pZm9y
bUluZGljZXMgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCBbIlVCT0RhdGEuUmVkIiwg
IlVCT0RhdGEuR3JlZW4iLCAiVUJPRGF0YS5CbHVlIl0pOworICAgIHZhciB1bmlmb3JtT2Zmc2V0
cyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBnbC5VTklG
T1JNX09GRlNFVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJz
aG91bGQgYmUgYWJsZSB0byBxdWVyeSB1bmlmb3JtIGJsb2NrIGluZm9ybWF0aW9uIHdpdGhvdXQg
ZXJyb3IiKTsKKworICAgIGlmICh1bmlmb3JtT2Zmc2V0cy5sZW5ndGggPCAzKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBxdWVyeSB1bmlmb3JtIG9mZnNldHMiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghY2hlY2tGbG9hdDMyVW5pZm9ybU9mZnNldHNJblN0
ZDE0MExheW91dCh1bmlmb3JtT2Zmc2V0cykpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdmFyIHVib0FycmF5ID0gbmV3IEFycmF5QnVmZmVyKGJsb2NrU2l6ZSk7CisgICAg
dmFyIHVib0Zsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkodWJvQXJyYXkpOworICAgIHNldFJH
QlZhbHVlc1RvRmxvYXQzMkFycmF5KHVib0Zsb2F0VmlldywgMS4wLCAwLjAsIDAuMCk7CisKKyAg
ICBiMSA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9C
VUZGRVIsIGIxKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym9BcnJh
eSwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInNob3VsZCBiZSBhYmxlIHRvIHNldCBVQk8gZGF0YSB3aXRoIG5vIGVycm9ycyIpOwor
CisgICAgdmFyIGJpbmRpbmcgPSAzOworICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3Jh
bSwgYmxvY2tJbmRleCwgYmluZGluZyk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9S
TV9CVUZGRVIsIGJpbmRpbmcsIGIxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgInNob3VsZCBiZSBhYmxlIHRvIGNhbGwgYmluZEJ1ZmZlckJhc2Ugd2l0aG91dCBl
cnJvcnMiKTsKKworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNo
ZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiZHJhdyBjYWxsIHNob3VsZCBzZXQgY2Fu
dmFzIHRvIHJlZCIsIDIpOworCisgICAgZGVidWcoIkNoYW5naW5nIHRoZSBkYXRhIGluIHRoZSB1
bmlmb3JtIGJ1ZmZlciBzaG91bGQgYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIHVuaWZvcm1zIGV4
cG9zZWQgdG8gdGhlIGRyYXcgY2FsbCIpOworICAgIHNldFJHQlZhbHVlc1RvRmxvYXQzMkFycmF5
KHVib0Zsb2F0VmlldywgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklG
T1JNX0JVRkZFUiwgdWJvQXJyYXksIGdsLkRZTkFNSUNfRFJBVyk7CisKKyAgICB3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAsIDI1NSwg
MjU1XSwgImRyYXcgY2FsbCBzaG91bGQgc2V0IGNhbnZhcyB0byBibHVlIiwgMik7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJy
b3JzIik7Cit9CisKK2Z1bmN0aW9uIHJ1bk5hbWVkQXJyYXlEcmF3VGVzdCgpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZHJhd2luZyB3aXRoIG5hbWVkIHVuaWZvcm0gYnVm
ZmVyIGFycmF5cyIpOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBb
J3ZzaGFkZXInLCAnZnNoYWRlcm5hbWVkYXJyYXknXSk7CisgICAgaWYgKCFwcm9ncmFtKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoImNvdWxkIG5vdCBjb21waWxlIHNoYWRlciB3aXRoIG5hbWVkIHVu
aWZvcm0gYmxvY2sgYXJyYXlzIHdpdGhvdXQgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHZhciBibG9ja0luZGV4ID0gW2dsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dy
YW0sICJVQk9EYXRhWzBdIiksCisgICAgICAgICAgICAgICAgICAgICAgZ2wuZ2V0VW5pZm9ybUJs
b2NrSW5kZXgocHJvZ3JhbSwgIlVCT0RhdGFbMV0iKV07CisgICAgaWYgKGJsb2NrSW5kZXhbMF0g
PT0gZ2wuSU5WQUxJRF9JTkRFWCB8fAorICAgICAgICBibG9ja0luZGV4WzFdID09IGdsLklOVkFM
SURfSU5ERVgpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IHF1ZXJ5IHVuaWZvcm0g
YmxvY2sgaW5kZXgiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBhYmxlIHRvIHF1ZXJ5IHVuaWZvcm0g
YmxvY2sgaW5kaWNlcyB3aXRob3V0IGVycm9yIik7CisgICAgdmFyIGJsb2NrU2l6ZSA9IFtnbC5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIocHJvZ3JhbSwgYmxvY2tJbmRleFswXSwgZ2wu
VU5JRk9STV9CTE9DS19EQVRBX1NJWkUpLAorICAgICAgICAgICAgICAgICAgICAgZ2wuZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKHByb2dyYW0sIGJsb2NrSW5kZXhbMV0sIGdsLlVOSUZP
Uk1fQkxPQ0tfREFUQV9TSVpFKV07CisgICAgaWYgKGJsb2NrU2l6ZVswXSAhPSBibG9ja1NpemVb
MV0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgidW5pZm9ybSBibG9jayBpbnN0YW5jZSBhcnJheSB3
aXRoIGRpZmZlcmVudCBibG9jayBzaXplcyIpOworICAgIH0KKyAgICB2YXIgdW5pZm9ybUluZGlj
ZXMgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCBbIlVCT0RhdGEuUmVkIiwgIlVCT0Rh
dGEuR3JlZW4iLCAiVUJPRGF0YS5CbHVlIl0pOworICAgIGlmICh1bmlmb3JtSW5kaWNlcyA8IDMg
fHwKKyAgICAgICAgdW5pZm9ybUluZGljZXNbMF0gPT0gZ2wuSU5WQUxJRF9JTkRFWCB8fAorICAg
ICAgICB1bmlmb3JtSW5kaWNlc1sxXSA9PSBnbC5JTlZBTElEX0lOREVYIHx8CisgICAgICAgIHVu
aWZvcm1JbmRpY2VzWzJdID09IGdsLklOVkFMSURfSU5ERVgpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiQ291bGQgbm90IHF1ZXJ5IHVuaWZvcm0gaW5kaWNlcyIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIHZhciB1bmlmb3JtT2Zmc2V0cyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLCBnbC5VTklGT1JNX09GRlNFVCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBxdWVyeSB1bmlmb3Jt
IGJsb2NrIGluZm9ybWF0aW9uIHdpdGhvdXQgZXJyb3IiKTsKKyAgICBpZiAodW5pZm9ybU9mZnNl
dHMubGVuZ3RoIDwgMykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgcXVlcnkgdW5p
Zm9ybSBvZmZzZXRzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNoZWNr
RmxvYXQzMlVuaWZvcm1PZmZzZXRzSW5TdGQxNDBMYXlvdXQodW5pZm9ybU9mZnNldHMpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBvZmZzZXRBbGlnbm1lbnQgPSBn
bC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCk7CisgICAg
dmFyIG9mZnNldCA9IE1hdGguY2VpbChibG9ja1NpemVbMF0gLyBvZmZzZXRBbGlnbm1lbnQpICog
b2Zmc2V0QWxpZ25tZW50OworCisgICAgdmFyIGJ1ZmZlclNpemUgPSBvZmZzZXQgKyBibG9ja1Np
emVbMV07CisgICAgdmFyIHVib0FycmF5ID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlclNpemUpOwor
ICAgIHZhciB1Ym9GbG9hdFZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KHVib0FycmF5KTsKKyAgICBz
ZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXcsIDEuMCwgMC4wLCAwLjApOwor
ICAgIHZhciB1Ym9GbG9hdFZpZXcyID0gbmV3IEZsb2F0MzJBcnJheSh1Ym9BcnJheSwgb2Zmc2V0
KTsKKyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXcyLCAwLjAsIDAu
MCwgMS4wKTsKKworICAgIGIxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZl
cihnbC5VTklGT1JNX0JVRkZFUiwgYjEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9C
VUZGRVIsIHVib0FycmF5LCBnbC5EWU5BTUlDX0RSQVcpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gc2V0IFVCTyBkYXRhIHdpdGgg
bm8gZXJyb3JzIik7CisKKyAgICB2YXIgYmluZGluZ3MgPSBbNCwgNV07CisgICAgZ2wudW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtLCBibG9ja0luZGV4WzBdLCBiaW5kaW5nc1swXSk7CisgICAg
Z2wuYmluZEJ1ZmZlclJhbmdlKGdsLlVOSUZPUk1fQlVGRkVSLCBiaW5kaW5nc1swXSwgYjEsIDAs
IGJsb2NrU2l6ZVswXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJzaG91bGQgYmUgYWJsZSB0byBjYWxsIGJpbmRCdWZmZXJSYW5nZSB3aXRob3V0IGVycm9ycyIp
OworICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgYmxvY2tJbmRleFsxXSwgYmlu
ZGluZ3NbMV0pOworICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5VTklGT1JNX0JVRkZFUiwgYmlu
ZGluZ3NbMV0sIGIxLCBvZmZzZXQsIGJsb2NrU2l6ZVsxXSk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBjYWxsIGJpbmRCdWZmZXJS
YW5nZSB3aXRob3V0IGVycm9ycyIpOworCisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
KTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsxMjcsIDAsIDEyNywgMjU1XSwgImRyYXcgY2Fs
bCBzaG91bGQgc2V0IGNhbnZhcyB0byAoMC41LCAwLCAwLjUpIiwgMik7CisKKyAgICBkZWJ1Zygi
Q2hhbmdpbmcgdGhlIGRhdGEgaW4gdGhlIHVuaWZvcm0gYnVmZmVyIHNob3VsZCBhdXRvbWF0aWNh
bGx5IHVwZGF0ZSB0aGUgdW5pZm9ybXMgZXhwb3NlZCB0byB0aGUgZHJhdyBjYWxsIik7CisgICAg
c2V0UkdCVmFsdWVzVG9GbG9hdDMyQXJyYXkodWJvRmxvYXRWaWV3LCAwLjAsIDEuMCwgMS4wKTsK
KyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZpZXcyLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym9BcnJheSwgZ2wu
RFlOQU1JQ19EUkFXKTsKKworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAg
d3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMTI3LCAyNTUsIDI1NV0sICJkcmF3IGNhbGwgc2hvdWxk
IHNldCBjYW52YXMgdG8gKDAsIDAuNSwgMSkiLCAyKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVu
Y3Rpb24gcnVuTmVzdGVkU3RydWN0c0RyYXdUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVGVzdGluZyBkcmF3aW5nIHdpdGggbmVzdGVkIHN0cnVjdCBpbnNpZGUgdW5pZm9ybSBi
bG9jay4gVGhlIHdyYXBwZXIgc3RydWN0IGlzIHBhc3NlZCB0byBhIGZ1bmN0aW9uLiIpOworCisg
ICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRl
cm5lc3RlZHN0cnVjdCddLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjb21waWxlIHNoYWRlciB3
aXRoIG5lc3RlZCBzdHJ1Y3RzIHdpdGhvdXQgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHZhciBibG9ja0luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3Jh
bSwgIlVCT0RhdGEiKTsKKyAgICB2YXIgYmxvY2tTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyKHByb2dyYW0sIGJsb2NrSW5kZXgsIGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9T
SVpFKTsKKyAgICB2YXIgdW5pZm9ybUluZGljZXMgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhwcm9n
cmFtLCBbIlVCT1N0cnVjdC5jb2xvci5yZWQiLCAiVUJPU3RydWN0LmNvbG9yLmdyZWVuIiwgIlVC
T1N0cnVjdC5jb2xvci5ibHVlIl0pOworICAgIHZhciB1bmlmb3JtT2Zmc2V0cyA9IGdsLmdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBnbC5VTklGT1JNX09GRlNFVCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJs
ZSB0byBxdWVyeSB1bmlmb3JtIGJsb2NrIGluZm9ybWF0aW9uIHdpdGhvdXQgZXJyb3IiKTsKKwor
ICAgIGlmICh1bmlmb3JtT2Zmc2V0cy5sZW5ndGggPCAzKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IkNvdWxkIG5vdCBxdWVyeSB1bmlmb3JtIG9mZnNldHMiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghY2hlY2tGbG9hdDMyVW5pZm9ybU9mZnNldHNJblN0ZDE0MExheW91dCh1
bmlmb3JtT2Zmc2V0cykpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFy
IHVib0FycmF5ID0gbmV3IEFycmF5QnVmZmVyKGJsb2NrU2l6ZSk7CisgICAgdmFyIHVib0Zsb2F0
VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkodWJvQXJyYXkpOworICAgIHNldFJHQlZhbHVlc1RvRmxv
YXQzMkFycmF5KHVib0Zsb2F0VmlldywgMC4wLCAxLjAsIDAuMCk7CisKKyAgICBiMSA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIsIGIxKTsK
KyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym9BcnJheSwgZ2wuRFlOQU1J
Q19EUkFXKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3Vs
ZCBiZSBhYmxlIHRvIHNldCBVQk8gZGF0YSB3aXRoIG5vIGVycm9ycyIpOworCisgICAgdmFyIGJp
bmRpbmcgPSAzOworICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgYmxvY2tJbmRl
eCwgYmluZGluZyk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIGJp
bmRpbmcsIGIxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNo
b3VsZCBiZSBhYmxlIHRvIGNhbGwgYmluZEJ1ZmZlckJhc2Ugd2l0aG91dCBlcnJvcnMiKTsKKwor
ICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGds
LCBbMCwgMjU1LCAwLCAyNTVdLCAiZHJhdyBjYWxsIHNob3VsZCBzZXQgY2FudmFzIHRvIGdyZWVu
IiwgMik7CisKKyAgICBkZWJ1ZygiQ2hhbmdpbmcgdGhlIGRhdGEgaW4gdGhlIHVuaWZvcm0gYnVm
ZmVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGUgdW5pZm9ybXMgZXhwb3NlZCB0byB0
aGUgZHJhdyBjYWxsIik7CisgICAgc2V0UkdCVmFsdWVzVG9GbG9hdDMyQXJyYXkodWJvRmxvYXRW
aWV3LCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVS
LCB1Ym9BcnJheSwgZ2wuRFlOQU1JQ19EUkFXKTsKKworICAgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMjU1LCAyNTVdLCAiZHJh
dyBjYWxsIHNob3VsZCBzZXQgY2FudmFzIHRvIGJsdWUiLCAyKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30K
KworZnVuY3Rpb24gcnVuQXJyYXlPZlN0cnVjdHNEcmF3VGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRlc3RpbmcgZHJhd2luZyB3aXRoIGFycmF5IG9mIHN0cnVjdHMgaW5zaWRl
IHVuaWZvcm0gYmxvY2suIEEgc3RydWN0IGluIHRoZSBibG9jayBpcyBwYXNzZWQgdG8gYSBmdW5j
dGlvbi4iKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hh
ZGVyJywgJ2ZzaGFkZXJhcnJheW9mc3RydWN0cyddLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1
ZSk7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBj
b21waWxlIHNoYWRlciB3aXRoIGFuIGFycmF5IG9mIHN0cnVjdHMgaW4gYW4gaW50ZXJmYWNlIGJs
b2NrIHdpdGhvdXQgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBi
bG9ja0luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgIlVCT0RhdGEiKTsK
KyAgICB2YXIgYmxvY2tTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKHBy
b2dyYW0sIGJsb2NrSW5kZXgsIGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFKTsKKyAgICB2YXIg
dW5pZm9ybUluZGljZXMgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCBbIlVCT0NvbG9y
c1swXS5yZWQiLCAiVUJPQ29sb3JzWzBdLmdyZWVuIiwgIlVCT0NvbG9yc1swXS5ibHVlIl0pOwor
ICAgIHZhciB1bmlmb3JtT2Zmc2V0cyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLCBnbC5VTklGT1JNX09GRlNFVCk7CisgICAgdmFyIHVuaWZvcm1JbmRpY2Vz
XzIgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCBbIlVCT0NvbG9yc1sxXS5yZWQiLCAi
VUJPQ29sb3JzWzFdLmdyZWVuIiwgIlVCT0NvbG9yc1sxXS5ibHVlIl0pOworICAgIHZhciB1bmlm
b3JtT2Zmc2V0c18yID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGlj
ZXNfMiwgZ2wuVU5JRk9STV9PRkZTRVQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gcXVlcnkgdW5pZm9ybSBibG9jayBpbmZvcm1h
dGlvbiB3aXRob3V0IGVycm9yIik7CisKKyAgICBpZiAodW5pZm9ybU9mZnNldHMubGVuZ3RoIDwg
MykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgcXVlcnkgdW5pZm9ybSBvZmZzZXRz
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNoZWNrRmxvYXQzMlVuaWZv
cm1PZmZzZXRzSW5TdGQxNDBMYXlvdXQodW5pZm9ybU9mZnNldHMpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoIWNoZWNrRmxvYXQzMlVuaWZvcm1PZmZzZXRzSW5TdGQx
NDBMYXlvdXQodW5pZm9ybU9mZnNldHNfMiwgdW5pZm9ybU9mZnNldHNfMlswXSkpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHVib0FycmF5ID0gbmV3IEFycmF5QnVm
ZmVyKGJsb2NrU2l6ZSk7CisgICAgdmFyIHVib0Zsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXko
dWJvQXJyYXkpOworICAgIHNldFJHQlZhbHVlc1RvRmxvYXQzMkFycmF5KHVib0Zsb2F0Vmlldywg
MC4wLCAwLjUsIDAuMCk7CisgICAgdmFyIHVib0Zsb2F0VmlldzIgPSBuZXcgRmxvYXQzMkFycmF5
KHVib0FycmF5LCB1bmlmb3JtT2Zmc2V0c18yWzBdKTsKKyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0
MzJBcnJheSh1Ym9GbG9hdFZpZXcyLCAwLjAsIDAuNSwgMC4wKTsKKworICAgIGIxID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5VTklGT1JNX0JVRkZFUiwgYjEpOwor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIHVib0FycmF5LCBnbC5EWU5BTUlD
X0RSQVcpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxk
IGJlIGFibGUgdG8gc2V0IFVCTyBkYXRhIHdpdGggbm8gZXJyb3JzIik7CisKKyAgICB2YXIgYmlu
ZGluZyA9IDM7CisgICAgZ2wudW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCBibG9ja0luZGV4
LCBiaW5kaW5nKTsKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgYmlu
ZGluZywgYjEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hv
dWxkIGJlIGFibGUgdG8gY2FsbCBiaW5kQnVmZmVyQmFzZSB3aXRob3V0IGVycm9ycyIpOworCisg
ICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJkcmF3IGNhbGwgc2hvdWxkIHNldCBjYW52YXMgdG8gZ3JlZW4i
LCAyKTsKKworICAgIGRlYnVnKCJDaGFuZ2luZyB0aGUgZGF0YSBpbiB0aGUgdW5pZm9ybSBidWZm
ZXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSB1bmlmb3JtcyBleHBvc2VkIHRvIHRo
ZSBkcmF3IGNhbGwiKTsKKyAgICBzZXRSR0JWYWx1ZXNUb0Zsb2F0MzJBcnJheSh1Ym9GbG9hdFZp
ZXcsIDEuMCwgMC4wLCAwLjApOworICAgIHNldFJHQlZhbHVlc1RvRmxvYXQzMkFycmF5KHVib0Zs
b2F0VmlldzIsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9C
VUZGRVIsIHVib0FycmF5LCBnbC5EWU5BTUlDX0RSQVcpOworCisgICAgd3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDI1NSwgMjU1
XSwgImRyYXcgY2FsbCBzaG91bGQgc2V0IGNhbnZhcyB0byBwdXJwbGUiLCAyKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJv
cnMiKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY2FudmFzL3RvLWRhdGEtdXJsLXdp
dGgtcGFjay1wYXJhbXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jYW52YXMvdG8tZGF0YS11cmwtd2l0aC1wYWNrLXBhcmFt
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1NGFjMjY0MmZiYzZiYzkyODcxM2U0NmQyMzMxNDhiNTk1NWZk
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY2FudmFzL3RvLWRhdGEtdXJsLXdpdGgtcGFjay1wYXJh
bXMuaHRtbApAQCAtMCwwICsxLDczIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT50b0RhdGFVUkwoKSBydW5zIGZpbmUgd2l0aCBXZWJHTDIg
UElYRUwgUEFDSyBwYXJhbWV0ZXJzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
InRlc3QiPjwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdmVyaWZpZXMgdG9EYXRhVVJMKCkgcnVucyBmaW5lIHdpdGggV2ViR0wyIFBJWEVM
IFBBQ0sgcGFyYW1ldGVycyIpOworLy8gVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgY3Ji
dWcuY29tLzc0MDYwMworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoY2FudmFzLCBudWxsLCAyKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4
dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlz
dHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIFBBQ0tfU0tJUF9ST1dTIik7
CisgIGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfU0tJUF9ST1dTLCAxMDApOworICB2YXIgaW1nID0g
bmV3IEltYWdlKCk7CisgIGltZy5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7ICAvLyBUaGlzIHNo
b3VsZCBub3QgY3Jhc2ggaW4gQVNBTgorICBnbC5waXhlbFN0b3JlaShnbC5QQUNLX1NLSVBfUk9X
UywgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGVzdCBzaG91
bGQgbm90IGdlbmVyYXRlIEdMIGVycm9yIik7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGVz
dGluZyBQQUNLX1NLSVBfUElYRUxTIik7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfU0tJUF9Q
SVhFTFMsIDEwMDAwKTsKKyAgaW1nID0gbmV3IEltYWdlKCk7CisgIGltZy5zcmMgPSBjYW52YXMu
dG9EYXRhVVJMKCk7ICAvLyBUaGlzIHNob3VsZCBub3QgY3Jhc2ggaW4gQVNBTgorICBnbC5waXhl
bFN0b3JlaShnbC5QQUNLX1NLSVBfUElYRUxTLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJUZXN0IHNob3VsZCBub3QgZ2VuZXJhdGUgR0wgZXJyb3IiKTsKKwor
ICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nIFBBQ0tfUk9XX0xFTkdUSCIpOworICBnbC5w
aXhlbFN0b3JlaShnbC5QQUNLX1JPV19MRU5HVEgsIDIwNDgpOworICBpbWcgPSBuZXcgSW1hZ2Uo
KTsKKyAgaW1nLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsgIC8vIFRoaXMgc2hvdWxkIG5vdCBj
cmFzaCBpbiBBU0FOCisgIGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfUk9XX0xFTkdUSCwgMCk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGVzdCBzaG91bGQgbm90IGdl
bmVyYXRlIEdMIGVycm9yIik7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGVzdGluZyBQSVhF
TF9QQUNLX0JVRkZFUiIpOworICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGds
LmJpbmRCdWZmZXIoZ2wuUElYRUxfUEFDS19CVUZGRVIsIGJ1ZmZlcik7CisgIGltZyA9IG5ldyBJ
bWFnZSgpOworICBpbWcuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgpOyAgLy8gVGhpcyBzaG91bGQg
bm90IGNyYXNoIGluIEFTQU4KKyAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9QQUNLX0JVRkZFUiwg
bnVsbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGVzdCBzaG91
bGQgbm90IGdlbmVyYXRlIEdMIGVycm9yIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2NvbnRleHQvY29uc3RhbnRzLWFuZC1wcm9wZXJ0aWVzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L2NvbnN0
YW50cy1hbmQtcHJvcGVydGllcy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZlOWE4ZTBlNWQ3NzQ4Y2Uw
MmI1YzEwNmIwNzc5ODA4ZDRjYTU5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L2NvbnN0
YW50cy1hbmQtcHJvcGVydGllcy0yLmh0bWwKQEAgLTAsMCArMSw4MzMgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgQ29uc3RhbnRz
IGFuZCBQcm9wZXJ0aWVzIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhh
dCB0aGUgV2ViR0wgY29udGV4dCBoYXMgYWxsIHRoZSBjb25zdGFudHMgYW5kIChub24tZnVuY3Rp
b24pIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb24uIik7CisKK3ZhciBjb25zdGFudHMg
PSB7CisgICAgLyogQ2xlYXJCdWZmZXJNYXNrICovCitERVBUSF9CVUZGRVJfQklUICAgICAgICAg
ICAgICAgOiAweDAwMDAwMTAwLAorU1RFTkNJTF9CVUZGRVJfQklUICAgICAgICAgICAgIDogMHgw
MDAwMDQwMCwKK0NPTE9SX0JVRkZFUl9CSVQgICAgICAgICAgICAgICA6IDB4MDAwMDQwMDAsCisK
KyAgICAvKiBCZWdpbk1vZGUgKi8KK1BPSU5UUyAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
MDAwMCwKK0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMSwKK0xJTkVfTE9P
UCAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMiwKK0xJTkVfU1RSSVAgICAgICAgICAgICAg
ICAgICAgICA6IDB4MDAwMywKK1RSSUFOR0xFUyAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAw
NCwKK1RSSUFOR0xFX1NUUklQICAgICAgICAgICAgICAgICA6IDB4MDAwNSwKK1RSSUFOR0xFX0ZB
TiAgICAgICAgICAgICAgICAgICA6IDB4MDAwNiwKKworICAgIC8qIEFscGhhRnVuY3Rpb24gKG5v
dCBzdXBwb3J0ZWQgaW4gRVMyMCkgKi8KKyAgICAvKiAgICAgIE5FVkVSICovCisgICAgLyogICAg
ICBMRVNTICovCisgICAgLyogICAgICBFUVVBTCAqLworICAgIC8qICAgICAgTEVRVUFMICovCisg
ICAgLyogICAgICBHUkVBVEVSICovCisgICAgLyogICAgICBOT1RFUVVBTCAqLworICAgIC8qICAg
ICAgR0VRVUFMICovCisgICAgLyogICAgICBBTFdBWVMgKi8KKworICAgIC8qIEJsZW5kaW5nRmFj
dG9yRGVzdCAqLworWkVSTyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCwKK09ORSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IDEsCitTUkNfQ09MT1IgICAgICAgICAgICAgICAgICAg
ICAgOiAweDAzMDAsCitPTkVfTUlOVVNfU1JDX0NPTE9SICAgICAgICAgICAgOiAweDAzMDEsCitT
UkNfQUxQSEEgICAgICAgICAgICAgICAgICAgICAgOiAweDAzMDIsCitPTkVfTUlOVVNfU1JDX0FM
UEhBICAgICAgICAgICAgOiAweDAzMDMsCitEU1RfQUxQSEEgICAgICAgICAgICAgICAgICAgICAg
OiAweDAzMDQsCitPTkVfTUlOVVNfRFNUX0FMUEhBICAgICAgICAgICAgOiAweDAzMDUsCisKKyAg
ICAvKiBCbGVuZGluZ0ZhY3RvclNyYyAqLworICAgIC8qICAgICAgWkVSTyAqLworICAgIC8qICAg
ICAgT05FICovCitEU1RfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgOiAweDAzMDYsCitPTkVf
TUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAgOiAweDAzMDcsCitTUkNfQUxQSEFfU0FUVVJBVEUg
ICAgICAgICAgICAgOiAweDAzMDgsCisgICAgLyogICAgICBTUkNfQUxQSEEgKi8KKyAgICAvKiAg
ICAgIE9ORV9NSU5VU19TUkNfQUxQSEEgKi8KKyAgICAvKiAgICAgIERTVF9BTFBIQSAqLworICAg
IC8qICAgICAgT05FX01JTlVTX0RTVF9BTFBIQSAqLworCisgICAgLyogQmxlbmRFcXVhdGlvblNl
cGFyYXRlICovCitGVU5DX0FERCAgICAgICAgICAgICAgICAgICAgICAgOiAweDgwMDYsCitCTEVO
RF9FUVVBVElPTiAgICAgICAgICAgICAgICAgOiAweDgwMDksCitCTEVORF9FUVVBVElPTl9SR0Ig
ICAgICAgICAgICAgOiAweDgwMDksICAgLyogc2FtZSBhcyBCTEVORF9FUVVBVElPTiAqLworQkxF
TkRfRVFVQVRJT05fQUxQSEEgICAgICAgICAgIDogMHg4ODNELAorCisgICAgLyogQmxlbmRTdWJ0
cmFjdCAqLworRlVOQ19TVUJUUkFDVCAgICAgICAgICAgICAgICAgIDogMHg4MDBBLAorRlVOQ19S
RVZFUlNFX1NVQlRSQUNUICAgICAgICAgIDogMHg4MDBCLAorCisgICAgLyogU2VwYXJhdGUgQmxl
bmQgRnVuY3Rpb25zICovCitCTEVORF9EU1RfUkdCICAgICAgICAgICAgICAgICAgOiAweDgwQzgs
CitCTEVORF9TUkNfUkdCICAgICAgICAgICAgICAgICAgOiAweDgwQzksCitCTEVORF9EU1RfQUxQ
SEEgICAgICAgICAgICAgICAgOiAweDgwQ0EsCitCTEVORF9TUkNfQUxQSEEgICAgICAgICAgICAg
ICAgOiAweDgwQ0IsCitDT05TVEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgOiAweDgwMDEsCitP
TkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgICAgICAgOiAweDgwMDIsCitDT05TVEFOVF9BTFBIQSAg
ICAgICAgICAgICAgICAgOiAweDgwMDMsCitPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgICAgICAg
OiAweDgwMDQsCitCTEVORF9DT0xPUiAgICAgICAgICAgICAgICAgICAgOiAweDgwMDUsCisKKyAg
ICAvKiBCdWZmZXIgT2JqZWN0cyAqLworQVJSQVlfQlVGRkVSICAgICAgICAgICAgICAgICAgIDog
MHg4ODkyLAorRUxFTUVOVF9BUlJBWV9CVUZGRVIgICAgICAgICAgIDogMHg4ODkzLAorQVJSQVlf
QlVGRkVSX0JJTkRJTkcgICAgICAgICAgIDogMHg4ODk0LAorRUxFTUVOVF9BUlJBWV9CVUZGRVJf
QklORElORyAgIDogMHg4ODk1LAorCitTVFJFQU1fRFJBVyAgICAgICAgICAgICAgICAgICAgOiAw
eDg4RTAsCitTVEFUSUNfRFJBVyAgICAgICAgICAgICAgICAgICAgOiAweDg4RTQsCitEWU5BTUlD
X0RSQVcgICAgICAgICAgICAgICAgICAgOiAweDg4RTgsCisKK0JVRkZFUl9TSVpFICAgICAgICAg
ICAgICAgICAgICA6IDB4ODc2NCwKK0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICA6IDB4
ODc2NSwKKworQ1VSUkVOVF9WRVJURVhfQVRUUklCICAgICAgICAgIDogMHg4NjI2LAorCisgICAg
LyogQ3VsbEZhY2VNb2RlICovCitGUk9OVCAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDA0
MDQsCitCQUNLICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDA0MDUsCitGUk9OVF9BTkRf
QkFDSyAgICAgICAgICAgICAgICAgOiAweDA0MDgsCisKKyAgICAvKiBEZXB0aEZ1bmN0aW9uICov
CisgICAgLyogICAgICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAgIC8qICAgICAg
RVFVQUwgKi8KKyAgICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JFQVRFUiAqLwor
ICAgIC8qICAgICAgTk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLworICAgIC8qICAg
ICAgQUxXQVlTICovCisKKyAgICAvKiBFbmFibGVDYXAgKi8KKyAgICAvKiBURVhUVVJFXzJEICov
CitDVUxMX0ZBQ0UgICAgICAgICAgICAgICAgICAgICAgOiAweDBCNDQsCitCTEVORCAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDBCRTIsCitESVRIRVIgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAweDBCRDAsCitTVEVOQ0lMX1RFU1QgICAgICAgICAgICAgICAgICAgOiAweDBCOTAsCitE
RVBUSF9URVNUICAgICAgICAgICAgICAgICAgICAgOiAweDBCNzEsCitTQ0lTU09SX1RFU1QgICAg
ICAgICAgICAgICAgICAgOiAweDBDMTEsCitQT0xZR09OX09GRlNFVF9GSUxMICAgICAgICAgICAg
OiAweDgwMzcsCitTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgICAgICAgOiAweDgwOUUsCitTQU1Q
TEVfQ09WRVJBR0UgICAgICAgICAgICAgICAgOiAweDgwQTAsCisKKyAgICAvKiBFcnJvckNvZGUg
Ki8KK05PX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICA6IDAsCitJTlZBTElEX0VOVU0gICAg
ICAgICAgICAgICAgICAgOiAweDA1MDAsCitJTlZBTElEX1ZBTFVFICAgICAgICAgICAgICAgICAg
OiAweDA1MDEsCitJTlZBTElEX09QRVJBVElPTiAgICAgICAgICAgICAgOiAweDA1MDIsCitPVVRf
T0ZfTUVNT1JZICAgICAgICAgICAgICAgICAgOiAweDA1MDUsCisKKyAgICAvKiBGcm9udEZhY2VE
aXJlY3Rpb24gKi8KK0NXICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDkwMCwKK0ND
VyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDkwMSwKKworICAgIC8qIEdldFBOYW1l
ICovCitMSU5FX1dJRFRIICAgICAgICAgICAgICAgICAgICAgOiAweDBCMjEsCitBTElBU0VEX1BP
SU5UX1NJWkVfUkFOR0UgICAgICAgOiAweDg0NkQsCitBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0Ug
ICAgICAgOiAweDg0NkUsCitDVUxMX0ZBQ0VfTU9ERSAgICAgICAgICAgICAgICAgOiAweDBCNDUs
CitGUk9OVF9GQUNFICAgICAgICAgICAgICAgICAgICAgOiAweDBCNDYsCitERVBUSF9SQU5HRSAg
ICAgICAgICAgICAgICAgICAgOiAweDBCNzAsCitERVBUSF9XUklURU1BU0sgICAgICAgICAgICAg
ICAgOiAweDBCNzIsCitERVBUSF9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgOiAweDBCNzMsCitE
RVBUSF9GVU5DICAgICAgICAgICAgICAgICAgICAgOiAweDBCNzQsCitTVEVOQ0lMX0NMRUFSX1ZB
TFVFICAgICAgICAgICAgOiAweDBCOTEsCitTVEVOQ0lMX0ZVTkMgICAgICAgICAgICAgICAgICAg
OiAweDBCOTIsCitTVEVOQ0lMX0ZBSUwgICAgICAgICAgICAgICAgICAgOiAweDBCOTQsCitTVEVO
Q0lMX1BBU1NfREVQVEhfRkFJTCAgICAgICAgOiAweDBCOTUsCitTVEVOQ0lMX1BBU1NfREVQVEhf
UEFTUyAgICAgICAgOiAweDBCOTYsCitTVEVOQ0lMX1JFRiAgICAgICAgICAgICAgICAgICAgOiAw
eDBCOTcsCitTVEVOQ0lMX1ZBTFVFX01BU0sgICAgICAgICAgICAgOiAweDBCOTMsCitTVEVOQ0lM
X1dSSVRFTUFTSyAgICAgICAgICAgICAgOiAweDBCOTgsCitTVEVOQ0lMX0JBQ0tfRlVOQyAgICAg
ICAgICAgICAgOiAweDg4MDAsCitTVEVOQ0lMX0JBQ0tfRkFJTCAgICAgICAgICAgICAgOiAweDg4
MDEsCitTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMICAgOiAweDg4MDIsCitTVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9QQVNTICAgOiAweDg4MDMsCitTVEVOQ0lMX0JBQ0tfUkVGICAgICAgICAg
ICAgICAgOiAweDhDQTMsCitTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyAgICAgICAgOiAweDhDQTQs
CitTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLICAgICAgICAgOiAweDhDQTUsCitWSUVXUE9SVCAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDBCQTIsCitTQ0lTU09SX0JPWCAgICAgICAgICAgICAgICAg
ICAgOiAweDBDMTAsCisgICAgLyogICAgICBTQ0lTU09SX1RFU1QgKi8KK0NPTE9SX0NMRUFSX1ZB
TFVFICAgICAgICAgICAgICA6IDB4MEMyMiwKK0NPTE9SX1dSSVRFTUFTSyAgICAgICAgICAgICAg
ICA6IDB4MEMyMywKK1VOUEFDS19BTElHTk1FTlQgICAgICAgICAgICAgICA6IDB4MENGNSwKK1BB
Q0tfQUxJR05NRU5UICAgICAgICAgICAgICAgICA6IDB4MEQwNSwKK01BWF9URVhUVVJFX1NJWkUg
ICAgICAgICAgICAgICA6IDB4MEQzMywKK01BWF9WSUVXUE9SVF9ESU1TICAgICAgICAgICAgICA6
IDB4MEQzQSwKK1NVQlBJWEVMX0JJVFMgICAgICAgICAgICAgICAgICA6IDB4MEQ1MCwKK1JFRF9C
SVRTICAgICAgICAgICAgICAgICAgICAgICA6IDB4MEQ1MiwKK0dSRUVOX0JJVFMgICAgICAgICAg
ICAgICAgICAgICA6IDB4MEQ1MywKK0JMVUVfQklUUyAgICAgICAgICAgICAgICAgICAgICA6IDB4
MEQ1NCwKK0FMUEhBX0JJVFMgICAgICAgICAgICAgICAgICAgICA6IDB4MEQ1NSwKK0RFUFRIX0JJ
VFMgICAgICAgICAgICAgICAgICAgICA6IDB4MEQ1NiwKK1NURU5DSUxfQklUUyAgICAgICAgICAg
ICAgICAgICA6IDB4MEQ1NywKK1BPTFlHT05fT0ZGU0VUX1VOSVRTICAgICAgICAgICA6IDB4MkEw
MCwKKyAgICAvKiAgICAgIFBPTFlHT05fT0ZGU0VUX0ZJTEwgKi8KK1BPTFlHT05fT0ZGU0VUX0ZB
Q1RPUiAgICAgICAgICA6IDB4ODAzOCwKK1RFWFRVUkVfQklORElOR18yRCAgICAgICAgICAgICA6
IDB4ODA2OSwKK1NBTVBMRV9CVUZGRVJTICAgICAgICAgICAgICAgICA6IDB4ODBBOCwKK1NBTVBM
RVMgICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODBBOSwKK1NBTVBMRV9DT1ZFUkFHRV9WQUxV
RSAgICAgICAgICA6IDB4ODBBQSwKK1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgICAgICAgICA6IDB4
ODBBQiwKKworICAgIC8qIEdldFRleHR1cmVQYXJhbWV0ZXIgKi8KKyAgICAvKiAgICAgIFRFWFRV
UkVfTUFHX0ZJTFRFUiAqLworICAgIC8qICAgICAgVEVYVFVSRV9NSU5fRklMVEVSICovCisgICAg
LyogICAgICBURVhUVVJFX1dSQVBfUyAqLworICAgIC8qICAgICAgVEVYVFVSRV9XUkFQX1QgKi8K
KworQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgICAgIDogMHg4NkEzLAorCisgICAgLyogSGlu
dE1vZGUgKi8KK0RPTlRfQ0FSRSAgICAgICAgICAgICAgICAgICAgICA6IDB4MTEwMCwKK0ZBU1RF
U1QgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTEwMSwKK05JQ0VTVCAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4MTEwMiwKKworICAgIC8qIEhpbnRUYXJnZXQgKi8KK0dFTkVSQVRFX01J
UE1BUF9ISU5UICAgICAgICAgICAgOiAweDgxOTIsCisKKyAgICAvKiBEYXRhVHlwZSAqLworQllU
RSAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDAwLAorVU5TSUdORURfQllURSAgICAg
ICAgICAgICAgICAgIDogMHgxNDAxLAorU0hPUlQgICAgICAgICAgICAgICAgICAgICAgICAgIDog
MHgxNDAyLAorVU5TSUdORURfU0hPUlQgICAgICAgICAgICAgICAgIDogMHgxNDAzLAorSU5UICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDA0LAorVU5TSUdORURfSU5UICAgICAgICAg
ICAgICAgICAgIDogMHgxNDA1LAorRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgx
NDA2LAorCisgICAgLyogUGl4ZWxGb3JtYXQgKi8KK0RFUFRIX0NPTVBPTkVOVCAgICAgICAgICAg
ICAgICA6IDB4MTkwMiwKK0FMUEhBICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTkwNiwK
K1JHQiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTkwNywKK1JHQkEgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IDB4MTkwOCwKK0xVTUlOQU5DRSAgICAgICAgICAgICAgICAgICAg
ICA6IDB4MTkwOSwKK0xVTUlOQU5DRV9BTFBIQSAgICAgICAgICAgICAgICA6IDB4MTkwQSwKKwor
ICAgIC8qIFBpeGVsVHlwZSAqLworICAgIC8qICAgICAgVU5TSUdORURfQllURSAqLworVU5TSUdO
RURfU0hPUlRfNF80XzRfNCAgICAgICAgIDogMHg4MDMzLAorVU5TSUdORURfU0hPUlRfNV81XzVf
MSAgICAgICAgIDogMHg4MDM0LAorVU5TSUdORURfU0hPUlRfNV82XzUgICAgICAgICAgIDogMHg4
MzYzLAorCisgICAgLyogU2hhZGVycyAqLworRlJBR01FTlRfU0hBREVSICAgICAgICAgICAgICAg
ICAgOiAweDhCMzAsCitWRVJURVhfU0hBREVSICAgICAgICAgICAgICAgICAgICA6IDB4OEIzMSwK
K01BWF9WRVJURVhfQVRUUklCUyAgICAgICAgICAgICAgIDogMHg4ODY5LAorTUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlMgICAgICAgOiAweDhERkIsCitNQVhfVkFSWUlOR19WRUNUT1JTICAgICAg
ICAgICAgICA6IDB4OERGQywKK01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTIDogMHg4
QjRELAorTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTICAgOiAweDhCNEMsCitNQVhfVEVY
VFVSRV9JTUFHRV9VTklUUyAgICAgICAgICA6IDB4ODg3MiwKK01BWF9GUkFHTUVOVF9VTklGT1JN
X1ZFQ1RPUlMgICAgIDogMHg4REZELAorU0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgICAg
OiAweDhCNEYsCitERUxFVEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICA6IDB4OEI4MCwKK0xJ
TktfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjgyLAorVkFMSURBVEVfU1RBVFVT
ICAgICAgICAgICAgICAgICAgOiAweDhCODMsCitBVFRBQ0hFRF9TSEFERVJTICAgICAgICAgICAg
ICAgICA6IDB4OEI4NSwKK0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICAgICAgIDogMHg4Qjg2
LAorQUNUSVZFX0FUVFJJQlVURVMgICAgICAgICAgICAgICAgOiAweDhCODksCitTSEFESU5HX0xB
TkdVQUdFX1ZFUlNJT04gICAgICAgICA6IDB4OEI4QywKK0NVUlJFTlRfUFJPR1JBTSAgICAgICAg
ICAgICAgICAgIDogMHg4QjhELAorCisgICAgLyogU3RlbmNpbEZ1bmN0aW9uICovCitORVZFUiAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAyMDAsCitMRVNTICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDAyMDEsCitFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAy
MDIsCitMRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAyMDMsCitHUkVBVEVSICAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDAyMDQsCitOT1RFUVVBTCAgICAgICAgICAgICAgICAg
ICAgICAgOiAweDAyMDUsCitHRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAyMDYs
CitBTFdBWVMgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAyMDcsCisKKyAgICAvKiBTdGVu
Y2lsT3AgKi8KKyAgICAvKiAgICAgIFpFUk8gKi8KK0tFRVAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IDB4MUUwMCwKK1JFUExBQ0UgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMSwK
K0lOQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMiwKK0RFQ1IgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IDB4MUUwMywKK0lOVkVSVCAgICAgICAgICAgICAgICAgICAgICAg
ICA6IDB4MTUwQSwKK0lOQ1JfV1JBUCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODUwNywKK0RF
Q1JfV1JBUCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODUwOCwKKworICAgIC8qIFN0cmluZ05h
bWUgKi8KK1ZFTkRPUiAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUYwMCwKK1JFTkRFUkVS
ICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUYwMSwKK1ZFUlNJT04gICAgICAgICAgICAgICAg
ICAgICAgICA6IDB4MUYwMiwKKworICAgIC8qIFRleHR1cmVNYWdGaWx0ZXIgKi8KK05FQVJFU1Qg
ICAgICAgICAgICAgICAgICAgICAgICA6IDB4MjYwMCwKK0xJTkVBUiAgICAgICAgICAgICAgICAg
ICAgICAgICA6IDB4MjYwMSwKKworICAgIC8qIFRleHR1cmVNaW5GaWx0ZXIgKi8KKyAgICAvKiAg
ICAgIE5FQVJFU1QgKi8KKyAgICAvKiAgICAgIExJTkVBUiAqLworTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVCAgICAgICAgIDogMHgyNzAwLAorTElORUFSX01JUE1BUF9ORUFSRVNUICAgICAgICAgIDog
MHgyNzAxLAorTkVBUkVTVF9NSVBNQVBfTElORUFSICAgICAgICAgIDogMHgyNzAyLAorTElORUFS
X01JUE1BUF9MSU5FQVIgICAgICAgICAgIDogMHgyNzAzLAorCisgICAgLyogVGV4dHVyZVBhcmFt
ZXRlck5hbWUgKi8KK1RFWFRVUkVfTUFHX0ZJTFRFUiAgICAgICAgICAgICA6IDB4MjgwMCwKK1RF
WFRVUkVfTUlOX0ZJTFRFUiAgICAgICAgICAgICA6IDB4MjgwMSwKK1RFWFRVUkVfV1JBUF9TICAg
ICAgICAgICAgICAgICA6IDB4MjgwMiwKK1RFWFRVUkVfV1JBUF9UICAgICAgICAgICAgICAgICA6
IDB4MjgwMywKKworICAgIC8qIFRleHR1cmVUYXJnZXQgKi8KK1RFWFRVUkVfMkQgICAgICAgICAg
ICAgICAgICAgICA6IDB4MERFMSwKK1RFWFRVUkUgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
MTcwMiwKKworVEVYVFVSRV9DVUJFX01BUCAgICAgICAgICAgICAgIDogMHg4NTEzLAorVEVYVFVS
RV9CSU5ESU5HX0NVQkVfTUFQICAgICAgIDogMHg4NTE0LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YICAgIDogMHg4NTE1LAorVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YICAgIDogMHg4
NTE2LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZICAgIDogMHg4NTE3LAorVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9ZICAgIDogMHg4NTE4LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9aICAgIDogMHg4NTE5LAorVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAgIDogMHg4NTFB
LAorTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSAgICAgIDogMHg4NTFDLAorCisgICAgLyogVGV4
dHVyZVVuaXQgKi8KK1RFWFRVUkUwICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDMCwKK1RF
WFRVUkUxICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDMSwKK1RFWFRVUkUyICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4ODRDMiwKK1RFWFRVUkUzICAgICAgICAgICAgICAgICAgICAgICA6
IDB4ODRDMywKK1RFWFRVUkU0ICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDNCwKK1RFWFRV
UkU1ICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDNSwKK1RFWFRVUkU2ICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4ODRDNiwKK1RFWFRVUkU3ICAgICAgICAgICAgICAgICAgICAgICA6IDB4
ODRDNywKK1RFWFRVUkU4ICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDOCwKK1RFWFRVUkU5
ICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDOSwKK1RFWFRVUkUxMCAgICAgICAgICAgICAg
ICAgICAgICA6IDB4ODRDQSwKK1RFWFRVUkUxMSAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRD
QiwKK1RFWFRVUkUxMiAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDQywKK1RFWFRVUkUxMyAg
ICAgICAgICAgICAgICAgICAgICA6IDB4ODRDRCwKK1RFWFRVUkUxNCAgICAgICAgICAgICAgICAg
ICAgICA6IDB4ODRDRSwKK1RFWFRVUkUxNSAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRDRiwK
K1RFWFRVUkUxNiAgICAgICAgICAgICAgICAgICAgICA6IDB4ODREMCwKK1RFWFRVUkUxNyAgICAg
ICAgICAgICAgICAgICAgICA6IDB4ODREMSwKK1RFWFRVUkUxOCAgICAgICAgICAgICAgICAgICAg
ICA6IDB4ODREMiwKK1RFWFRVUkUxOSAgICAgICAgICAgICAgICAgICAgICA6IDB4ODREMywKK1RF
WFRVUkUyMCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRENCwKK1RFWFRVUkUyMSAgICAgICAg
ICAgICAgICAgICAgICA6IDB4ODRENSwKK1RFWFRVUkUyMiAgICAgICAgICAgICAgICAgICAgICA6
IDB4ODRENiwKK1RFWFRVUkUyMyAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRENywKK1RFWFRV
UkUyNCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODREOCwKK1RFWFRVUkUyNSAgICAgICAgICAg
ICAgICAgICAgICA6IDB4ODREOSwKK1RFWFRVUkUyNiAgICAgICAgICAgICAgICAgICAgICA6IDB4
ODREQSwKK1RFWFRVUkUyNyAgICAgICAgICAgICAgICAgICAgICA6IDB4ODREQiwKK1RFWFRVUkUy
OCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODREQywKK1RFWFRVUkUyOSAgICAgICAgICAgICAg
ICAgICAgICA6IDB4ODRERCwKK1RFWFRVUkUzMCAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRE
RSwKK1RFWFRVUkUzMSAgICAgICAgICAgICAgICAgICAgICA6IDB4ODRERiwKK0FDVElWRV9URVhU
VVJFICAgICAgICAgICAgICAgICA6IDB4ODRFMCwKKworICAgIC8qIFRleHR1cmVXcmFwTW9kZSAq
LworUkVQRUFUICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgyOTAxLAorQ0xBTVBfVE9fRURH
RSAgICAgICAgICAgICAgICAgIDogMHg4MTJGLAorTUlSUk9SRURfUkVQRUFUICAgICAgICAgICAg
ICAgIDogMHg4MzcwLAorCisgICAgLyogVW5pZm9ybSBUeXBlcyAqLworRkxPQVRfVkVDMiAgICAg
ICAgICAgICAgICAgICAgIDogMHg4QjUwLAorRkxPQVRfVkVDMyAgICAgICAgICAgICAgICAgICAg
IDogMHg4QjUxLAorRkxPQVRfVkVDNCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUyLAorSU5U
X1ZFQzIgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUzLAorSU5UX1ZFQzMgICAgICAgICAg
ICAgICAgICAgICAgIDogMHg4QjU0LAorSU5UX1ZFQzQgICAgICAgICAgICAgICAgICAgICAgIDog
MHg4QjU1LAorQk9PTCAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU2LAorQk9PTF9W
RUMyICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU3LAorQk9PTF9WRUMzICAgICAgICAgICAg
ICAgICAgICAgIDogMHg4QjU4LAorQk9PTF9WRUM0ICAgICAgICAgICAgICAgICAgICAgIDogMHg4
QjU5LAorRkxPQVRfTUFUMiAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVBLAorRkxPQVRfTUFU
MyAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVCLAorRkxPQVRfTUFUNCAgICAgICAgICAgICAg
ICAgICAgIDogMHg4QjVDLAorU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVF
LAorU0FNUExFUl9DVUJFICAgICAgICAgICAgICAgICAgIDogMHg4QjYwLAorCisgICAgLyogVmVy
dGV4IEFycmF5cyAqLworVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEICAgICAgICA6IDB4ODYy
MiwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSAgICAgICAgICAgOiAweDg2MjMsCitWRVJURVhf
QVRUUklCX0FSUkFZX1NUUklERSAgICAgICAgIDogMHg4NjI0LAorVkVSVEVYX0FUVFJJQl9BUlJB
WV9UWVBFICAgICAgICAgICA6IDB4ODYyNSwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpF
RCAgICAgOiAweDg4NkEsCitWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgICAgICAgIDogMHg4
NjQ1LAorVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyA6IDB4ODg5RiwKKworICAg
IC8qIFNoYWRlciBTb3VyY2UgKi8KK0NPTVBJTEVfU1RBVFVTICAgICAgICAgICAgICAgICA6IDB4
OEI4MSwKKworICAgIC8qIFNoYWRlciBQcmVjaXNpb24tU3BlY2lmaWVkIFR5cGVzICovCitMT1df
RkxPQVQgICAgICAgICAgICAgICAgICAgICAgOiAweDhERjAsCitNRURJVU1fRkxPQVQgICAgICAg
ICAgICAgICAgICAgOiAweDhERjEsCitISUdIX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgOiAw
eDhERjIsCitMT1dfSU5UICAgICAgICAgICAgICAgICAgICAgICAgOiAweDhERjMsCitNRURJVU1f
SU5UICAgICAgICAgICAgICAgICAgICAgOiAweDhERjQsCitISUdIX0lOVCAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDhERjUsCisKKyAgICAvKiBGcmFtZWJ1ZmZlciBPYmplY3QuICovCitGUkFN
RUJVRkZFUiAgICAgICAgICAgICAgICAgICAgOiAweDhENDAsCitSRU5ERVJCVUZGRVIgICAgICAg
ICAgICAgICAgICAgOiAweDhENDEsCisKK1JHQkE0ICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4ODA1NiwKK1JHQjVfQTEgICAgICAgICAgICAgICAgICAgICAgICA6IDB4ODA1NywKK1JHQjU2
NSAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4OEQ2MiwKK0RFUFRIX0NPTVBPTkVOVDE2ICAg
ICAgICAgICAgICA6IDB4ODFBNSwKK1NURU5DSUxfSU5ERVg4ICAgICAgICAgICAgICAgICA6IDB4
OEQ0OCwKK0RFUFRIX1NURU5DSUwgICAgICAgICAgICAgICAgICA6IDB4ODRGOSwKKworUkVOREVS
QlVGRkVSX1dJRFRIICAgICAgICAgICAgIDogMHg4RDQyLAorUkVOREVSQlVGRkVSX0hFSUdIVCAg
ICAgICAgICAgIDogMHg4RDQzLAorUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCAgIDogMHg4
RDQ0LAorUkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgIDogMHg4RDUwLAorUkVOREVSQlVG
RkVSX0dSRUVOX1NJWkUgICAgICAgIDogMHg4RDUxLAorUkVOREVSQlVGRkVSX0JMVUVfU0laRSAg
ICAgICAgIDogMHg4RDUyLAorUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAgICAgIDogMHg4RDUz
LAorUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAgICAgIDogMHg4RDU0LAorUkVOREVSQlVGRkVS
X1NURU5DSUxfU0laRSAgICAgIDogMHg4RDU1LAorCitGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFICAgICAgICAgICA6IDB4OENEMCwKK0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX05BTUUgICAgICAgICAgIDogMHg4Q0QxLAorRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0xFVkVMICAgICAgICAgOiAweDhDRDIsCitGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfQ1VCRV9NQVBfRkFDRSA6IDB4OENEMywKKworQ09MT1JfQVRUQUNITUVOVDAgICAgICAgICAg
ICAgIDogMHg4Q0UwLAorREVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgIDogMHg4RDAwLAor
U1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgIDogMHg4RDIwLAorREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5UICAgICAgIDogMHg4MjFBLAorCitOT05FICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAwLAorCitGUkFNRUJVRkZFUl9DT01QTEVURSAgICAgICAgICAgICAgICAgICAgICA6IDB4
OENENSwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCAgICAgICAgIDogMHg4Q0Q2
LAorRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQgOiAweDhDRDcsCitG
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMgICAgICAgICA6IDB4OENEOSwKK0ZSQU1F
QlVGRkVSX1VOU1VQUE9SVEVEICAgICAgICAgICAgICAgICAgIDogMHg4Q0RELAorCitGUkFNRUJV
RkZFUl9CSU5ESU5HICAgICAgICAgICAgOiAweDhDQTYsCitSRU5ERVJCVUZGRVJfQklORElORyAg
ICAgICAgICAgOiAweDhDQTcsCitNQVhfUkVOREVSQlVGRkVSX1NJWkUgICAgICAgICAgOiAweDg0
RTgsCisKK0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OICA6IDB4MDUwNiwKKworSU1QTEVN
RU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFIDogMHg4QjlBLAorSU1QTEVNRU5UQVRJT05fQ09MT1Jf
UkVBRF9GT1JNQVQgOiAweDhCOUIsCisKKy8qIFdlYkdMLXNwZWNpZmljIGVudW1zICovCitVTlBB
Q0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgIDogMHg5MjQwLAorVU5QQUNLX1BSRU1VTFRJ
UExZX0FMUEhBX1dFQkdMICAgICA6IDB4OTI0MSwKK0NPTlRFWFRfTE9TVF9XRUJHTCAgICAgICAg
ICAgICAgICAgOiAweDkyNDIsCitVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIDog
MHg5MjQzLAorQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA6IDB4OTI0NCwKKwor
LyogV2ViR0wyIGVudW1zICovCitSRUFEX0JVRkZFUiA6IDB4MEMwMiwKK1VOUEFDS19ST1dfTEVO
R1RIIDogMHgwQ0YyLAorVU5QQUNLX1NLSVBfUk9XUyA6IDB4MENGMywKK1VOUEFDS19TS0lQX1BJ
WEVMUyA6IDB4MENGNCwKK1BBQ0tfUk9XX0xFTkdUSCA6IDB4MEQwMiwKK1BBQ0tfU0tJUF9ST1dT
IDogMHgwRDAzLAorUEFDS19TS0lQX1BJWEVMUyA6IDB4MEQwNCwKK0NPTE9SIDogMHgxODAwLAor
REVQVEggOiAweDE4MDEsCitTVEVOQ0lMIDogMHgxODAyLAorUkVEIDogMHgxOTAzLAorUkdCOCA6
IDB4ODA1MSwKK1JHQkE4IDogMHg4MDU4LAorUkdCMTBfQTIgOiAweDgwNTksCitURVhUVVJFX0JJ
TkRJTkdfM0QgOiAweDgwNkEsCitVTlBBQ0tfU0tJUF9JTUFHRVMgOiAweDgwNkQsCitVTlBBQ0tf
SU1BR0VfSEVJR0hUIDogMHg4MDZFLAorVEVYVFVSRV8zRCA6IDB4ODA2RiwKK1RFWFRVUkVfV1JB
UF9SIDogMHg4MDcyLAorTUFYXzNEX1RFWFRVUkVfU0laRSA6IDB4ODA3MywKK1VOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFViA6IDB4ODM2OCwKK01BWF9FTEVNRU5UU19WRVJUSUNFUyA6IDB4ODBF
OCwKK01BWF9FTEVNRU5UU19JTkRJQ0VTIDogMHg4MEU5LAorVEVYVFVSRV9NSU5fTE9EIDogMHg4
MTNBLAorVEVYVFVSRV9NQVhfTE9EIDogMHg4MTNCLAorVEVYVFVSRV9CQVNFX0xFVkVMIDogMHg4
MTNDLAorVEVYVFVSRV9NQVhfTEVWRUwgOiAweDgxM0QsCitNSU4gOiAweDgwMDcsCitNQVggOiAw
eDgwMDgsCitERVBUSF9DT01QT05FTlQyNCA6IDB4ODFBNiwKK01BWF9URVhUVVJFX0xPRF9CSUFT
IDogMHg4NEZELAorVEVYVFVSRV9DT01QQVJFX01PREUgOiAweDg4NEMsCitURVhUVVJFX0NPTVBB
UkVfRlVOQyA6IDB4ODg0RCwKK0NVUlJFTlRfUVVFUlkgOiAweDg4NjUsCitRVUVSWV9SRVNVTFQg
OiAweDg4NjYsCitRVUVSWV9SRVNVTFRfQVZBSUxBQkxFIDogMHg4ODY3LAorU1RSRUFNX1JFQUQg
OiAweDg4RTEsCitTVFJFQU1fQ09QWSA6IDB4ODhFMiwKK1NUQVRJQ19SRUFEIDogMHg4OEU1LAor
U1RBVElDX0NPUFkgOiAweDg4RTYsCitEWU5BTUlDX1JFQUQgOiAweDg4RTksCitEWU5BTUlDX0NP
UFkgOiAweDg4RUEsCitNQVhfRFJBV19CVUZGRVJTIDogMHg4ODI0LAorRFJBV19CVUZGRVIwIDog
MHg4ODI1LAorRFJBV19CVUZGRVIxIDogMHg4ODI2LAorRFJBV19CVUZGRVIyIDogMHg4ODI3LAor
RFJBV19CVUZGRVIzIDogMHg4ODI4LAorRFJBV19CVUZGRVI0IDogMHg4ODI5LAorRFJBV19CVUZG
RVI1IDogMHg4ODJBLAorRFJBV19CVUZGRVI2IDogMHg4ODJCLAorRFJBV19CVUZGRVI3IDogMHg4
ODJDLAorRFJBV19CVUZGRVI4IDogMHg4ODJELAorRFJBV19CVUZGRVI5IDogMHg4ODJFLAorRFJB
V19CVUZGRVIxMCA6IDB4ODgyRiwKK0RSQVdfQlVGRkVSMTEgOiAweDg4MzAsCitEUkFXX0JVRkZF
UjEyIDogMHg4ODMxLAorRFJBV19CVUZGRVIxMyA6IDB4ODgzMiwKK0RSQVdfQlVGRkVSMTQgOiAw
eDg4MzMsCitEUkFXX0JVRkZFUjE1IDogMHg4ODM0LAorTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09N
UE9ORU5UUyA6IDB4OEI0OSwKK01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTIDogMHg4QjRB
LAorU0FNUExFUl8zRCA6IDB4OEI1RiwKK1NBTVBMRVJfMkRfU0hBRE9XIDogMHg4QjYyLAorRlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVCA6IDB4OEI4QiwKK1BJWEVMX1BBQ0tfQlVGRkVS
IDogMHg4OEVCLAorUElYRUxfVU5QQUNLX0JVRkZFUiA6IDB4ODhFQywKK1BJWEVMX1BBQ0tfQlVG
RkVSX0JJTkRJTkcgOiAweDg4RUQsCitQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcgOiAweDg4
RUYsCitGTE9BVF9NQVQyeDMgOiAweDhCNjUsCitGTE9BVF9NQVQyeDQgOiAweDhCNjYsCitGTE9B
VF9NQVQzeDIgOiAweDhCNjcsCitGTE9BVF9NQVQzeDQgOiAweDhCNjgsCitGTE9BVF9NQVQ0eDIg
OiAweDhCNjksCitGTE9BVF9NQVQ0eDMgOiAweDhCNkEsCitTUkdCIDogMHg4QzQwLAorU1JHQjgg
OiAweDhDNDEsCitTUkdCOF9BTFBIQTggOiAweDhDNDMsCitDT01QQVJFX1JFRl9UT19URVhUVVJF
IDogMHg4ODRFLAorUkdCQTMyRiA6IDB4ODgxNCwKK1JHQjMyRiA6IDB4ODgxNSwKK1JHQkExNkYg
OiAweDg4MUEsCitSR0IxNkYgOiAweDg4MUIsCitWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIg
OiAweDg4RkQsCitNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMgOiAweDg4RkYsCitNSU5fUFJPR1JB
TV9URVhFTF9PRkZTRVQgOiAweDg5MDQsCitNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQgOiAweDg5
MDUsCitNQVhfVkFSWUlOR19DT01QT05FTlRTIDogMHg4QjRCLAorVEVYVFVSRV8yRF9BUlJBWSA6
IDB4OEMxQSwKK1RFWFRVUkVfQklORElOR18yRF9BUlJBWSA6IDB4OEMxRCwKK1IxMUZfRzExRl9C
MTBGIDogMHg4QzNBLAorVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViA6IDB4OEMzQiwKK1JH
QjlfRTUgOiAweDhDM0QsCitVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYgOiAweDhDM0UsCitUUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREUgOiAweDhDN0YsCitNQVhfVFJBTlNGT1JNX0ZFRURC
QUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMgOiAweDhDODAsCitUUkFOU0ZPUk1fRkVFREJBQ0tfVkFS
WUlOR1MgOiAweDhDODMsCitUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUIDogMHg4Qzg0
LAorVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIDogMHg4Qzg1LAorVFJBTlNGT1JNX0ZF
RURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiA6IDB4OEM4OCwKK1JBU1RFUklaRVJfRElTQ0FSRCA6
IDB4OEM4OSwKK01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUyA6
IDB4OEM4QSwKK01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyA6IDB4OEM4
QiwKK0lOVEVSTEVBVkVEX0FUVFJJQlMgOiAweDhDOEMsCitTRVBBUkFURV9BVFRSSUJTIDogMHg4
QzhELAorVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiA6IDB4OEM4RSwKK1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfQklORElORyA6IDB4OEM4RiwKK1JHQkEzMlVJIDogMHg4RDcwLAorUkdCMzJV
SSA6IDB4OEQ3MSwKK1JHQkExNlVJIDogMHg4RDc2LAorUkdCMTZVSSA6IDB4OEQ3NywKK1JHQkE4
VUkgOiAweDhEN0MsCitSR0I4VUkgOiAweDhEN0QsCitSR0JBMzJJIDogMHg4RDgyLAorUkdCMzJJ
IDogMHg4RDgzLAorUkdCQTE2SSA6IDB4OEQ4OCwKK1JHQjE2SSA6IDB4OEQ4OSwKK1JHQkE4SSA6
IDB4OEQ4RSwKK1JHQjhJIDogMHg4RDhGLAorUkVEX0lOVEVHRVIgOiAweDhEOTQsCitSR0JfSU5U
RUdFUiA6IDB4OEQ5OCwKK1JHQkFfSU5URUdFUiA6IDB4OEQ5OSwKK1NBTVBMRVJfMkRfQVJSQVkg
OiAweDhEQzEsCitTQU1QTEVSXzJEX0FSUkFZX1NIQURPVyA6IDB4OERDNCwKK1NBTVBMRVJfQ1VC
RV9TSEFET1cgOiAweDhEQzUsCitVTlNJR05FRF9JTlRfVkVDMiA6IDB4OERDNiwKK1VOU0lHTkVE
X0lOVF9WRUMzIDogMHg4REM3LAorVU5TSUdORURfSU5UX1ZFQzQgOiAweDhEQzgsCitJTlRfU0FN
UExFUl8yRCA6IDB4OERDQSwKK0lOVF9TQU1QTEVSXzNEIDogMHg4RENCLAorSU5UX1NBTVBMRVJf
Q1VCRSA6IDB4OERDQywKK0lOVF9TQU1QTEVSXzJEX0FSUkFZIDogMHg4RENGLAorVU5TSUdORURf
SU5UX1NBTVBMRVJfMkQgOiAweDhERDIsCitVTlNJR05FRF9JTlRfU0FNUExFUl8zRCA6IDB4OERE
MywKK1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUgOiAweDhERDQsCitVTlNJR05FRF9JTlRfU0FN
UExFUl8yRF9BUlJBWSA6IDB4OERENywKK0RFUFRIX0NPTVBPTkVOVDMyRiA6IDB4OENBQywKK0RF
UFRIMzJGX1NURU5DSUw4IDogMHg4Q0FELAorRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVW
IDogMHg4REFELAorRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyA6IDB4ODIx
MCwKK0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUgOiAweDgyMTEsCitGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFIDogMHg4MjEyLAorRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9HUkVFTl9TSVpFIDogMHg4MjEzLAorRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJ
WkUgOiAweDgyMTQsCitGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkUgOiAweDgyMTUs
CitGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkUgOiAweDgyMTYsCitGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRSA6IDB4ODIxNywKK0ZSQU1FQlVGRkVSX0RFRkFVTFQg
OiAweDgyMTgsCitVTlNJR05FRF9JTlRfMjRfOCA6IDB4ODRGQSwKK0RFUFRIMjRfU1RFTkNJTDgg
OiAweDg4RjAsCitVTlNJR05FRF9OT1JNQUxJWkVEIDogMHg4QzE3LAorRFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HIDogMHg4Q0E2LAorUkVBRF9GUkFNRUJVRkZFUiA6IDB4OENBOCwKK0RSQVdfRlJB
TUVCVUZGRVIgOiAweDhDQTksCitSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgOiAweDhDQUEsCitS
RU5ERVJCVUZGRVJfU0FNUExFUyA6IDB4OENBQiwKK0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9MQVlFUiA6IDB4OENENCwKK01BWF9DT0xPUl9BVFRBQ0hNRU5UUyA6IDB4OENERiwKK0NP
TE9SX0FUVEFDSE1FTlQxIDogMHg4Q0UxLAorQ09MT1JfQVRUQUNITUVOVDIgOiAweDhDRTIsCitD
T0xPUl9BVFRBQ0hNRU5UMyA6IDB4OENFMywKK0NPTE9SX0FUVEFDSE1FTlQ0IDogMHg4Q0U0LAor
Q09MT1JfQVRUQUNITUVOVDUgOiAweDhDRTUsCitDT0xPUl9BVFRBQ0hNRU5UNiA6IDB4OENFNiwK
K0NPTE9SX0FUVEFDSE1FTlQ3IDogMHg4Q0U3LAorQ09MT1JfQVRUQUNITUVOVDggOiAweDhDRTgs
CitDT0xPUl9BVFRBQ0hNRU5UOSA6IDB4OENFOSwKK0NPTE9SX0FUVEFDSE1FTlQxMCA6IDB4OENF
QSwKK0NPTE9SX0FUVEFDSE1FTlQxMSA6IDB4OENFQiwKK0NPTE9SX0FUVEFDSE1FTlQxMiA6IDB4
OENFQywKK0NPTE9SX0FUVEFDSE1FTlQxMyA6IDB4OENFRCwKK0NPTE9SX0FUVEFDSE1FTlQxNCA6
IDB4OENFRSwKK0NPTE9SX0FUVEFDSE1FTlQxNSA6IDB4OENFRiwKK0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTVVMVElTQU1QTEUgOiAweDhENTYsCitNQVhfU0FNUExFUyA6IDB4OEQ1NywKK0hBTEZf
RkxPQVQgOiAweDE0MEIsCitSRyA6IDB4ODIyNywKK1JHX0lOVEVHRVIgOiAweDgyMjgsCitSOCA6
IDB4ODIyOSwKK1JHOCA6IDB4ODIyQiwKK1IxNkYgOiAweDgyMkQsCitSMzJGIDogMHg4MjJFLAor
UkcxNkYgOiAweDgyMkYsCitSRzMyRiA6IDB4ODIzMCwKK1I4SSA6IDB4ODIzMSwKK1I4VUkgOiAw
eDgyMzIsCitSMTZJIDogMHg4MjMzLAorUjE2VUkgOiAweDgyMzQsCitSMzJJIDogMHg4MjM1LAor
UjMyVUkgOiAweDgyMzYsCitSRzhJIDogMHg4MjM3LAorUkc4VUkgOiAweDgyMzgsCitSRzE2SSA6
IDB4ODIzOSwKK1JHMTZVSSA6IDB4ODIzQSwKK1JHMzJJIDogMHg4MjNCLAorUkczMlVJIDogMHg4
MjNDLAorVkVSVEVYX0FSUkFZX0JJTkRJTkcgOiAweDg1QjUsCitSOF9TTk9STSA6IDB4OEY5NCwK
K1JHOF9TTk9STSA6IDB4OEY5NSwKK1JHQjhfU05PUk0gOiAweDhGOTYsCitSR0JBOF9TTk9STSA6
IDB4OEY5NywKK1NJR05FRF9OT1JNQUxJWkVEIDogMHg4RjlDLAorQ09QWV9SRUFEX0JVRkZFUiA6
IDB4OEYzNiwKK0NPUFlfV1JJVEVfQlVGRkVSIDogMHg4RjM3LAorQ09QWV9SRUFEX0JVRkZFUl9C
SU5ESU5HIDogMHg4RjM2LAorQ09QWV9XUklURV9CVUZGRVJfQklORElORyA6IDB4OEYzNywKK1VO
SUZPUk1fQlVGRkVSIDogMHg4QTExLAorVU5JRk9STV9CVUZGRVJfQklORElORyA6IDB4OEEyOCwK
K1VOSUZPUk1fQlVGRkVSX1NUQVJUIDogMHg4QTI5LAorVU5JRk9STV9CVUZGRVJfU0laRSA6IDB4
OEEyQSwKK01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgOiAweDhBMkIsCitNQVhfRlJBR01FTlRf
VU5JRk9STV9CTE9DS1MgOiAweDhBMkQsCitNQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MgOiAw
eDhBMkUsCitNQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MgOiAweDhBMkYsCitNQVhfVU5JRk9S
TV9CTE9DS19TSVpFIDogMHg4QTMwLAorTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBP
TkVOVFMgOiAweDhBMzEsCitNQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRT
IDogMHg4QTMzLAorVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCA6IDB4OEEzNCwKK0FD
VElWRV9VTklGT1JNX0JMT0NLUyA6IDB4OEEzNiwKK1VOSUZPUk1fVFlQRSA6IDB4OEEzNywKK1VO
SUZPUk1fU0laRSA6IDB4OEEzOCwKK1VOSUZPUk1fQkxPQ0tfSU5ERVggOiAweDhBM0EsCitVTklG
T1JNX09GRlNFVCA6IDB4OEEzQiwKK1VOSUZPUk1fQVJSQVlfU1RSSURFIDogMHg4QTNDLAorVU5J
Rk9STV9NQVRSSVhfU1RSSURFIDogMHg4QTNELAorVU5JRk9STV9JU19ST1dfTUFKT1IgOiAweDhB
M0UsCitVTklGT1JNX0JMT0NLX0JJTkRJTkcgOiAweDhBM0YsCitVTklGT1JNX0JMT0NLX0RBVEFf
U0laRSA6IDB4OEE0MCwKK1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TIDogMHg4QTQyLAor
VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTIDogMHg4QTQzLAorVU5JRk9STV9C
TE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVIgOiAweDhBNDQsCitVTklGT1JNX0JMT0NL
X1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSIDogMHg4QTQ2LAorSU5WQUxJRF9JTkRFWCA6
IDB4RkZGRkZGRkYsCitNQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTIDogMHg5MTIyLAorTUFY
X0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMgOiAweDkxMjUsCitNQVhfU0VSVkVSX1dBSVRfVElN
RU9VVCA6IDB4OTExMSwKK09CSkVDVF9UWVBFIDogMHg5MTEyLAorU1lOQ19DT05ESVRJT04gOiAw
eDkxMTMsCitTWU5DX1NUQVRVUyA6IDB4OTExNCwKK1NZTkNfRkxBR1MgOiAweDkxMTUsCitTWU5D
X0ZFTkNFIDogMHg5MTE2LAorU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUgOiAweDkxMTcsCitV
TlNJR05BTEVEIDogMHg5MTE4LAorU0lHTkFMRUQgOiAweDkxMTksCitBTFJFQURZX1NJR05BTEVE
IDogMHg5MTFBLAorVElNRU9VVF9FWFBJUkVEIDogMHg5MTFCLAorQ09ORElUSU9OX1NBVElTRklF
RCA6IDB4OTExQywKK1dBSVRfRkFJTEVEIDogMHg5MTFELAorU1lOQ19GTFVTSF9DT01NQU5EU19C
SVQgOiAweDAwMDAwMDAxLAorVElNRU9VVF9JR05PUkVEIDogLTEsCitWRVJURVhfQVRUUklCX0FS
UkFZX0RJVklTT1IgOiAweDg4RkUsCitBTllfU0FNUExFU19QQVNTRUQgOiAweDhDMkYsCitBTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFIDogMHg4RDZBLAorU0FNUExFUl9CSU5ESU5HIDog
MHg4OTE5LAorUkdCMTBfQTJVSSA6IDB4OTA2RiwKK0lOVF8yXzEwXzEwXzEwX1JFViA6IDB4OEQ5
RiwKK1RSQU5TRk9STV9GRUVEQkFDSyA6IDB4OEUyMiwKK1RSQU5TRk9STV9GRUVEQkFDS19QQVVT
RUQgOiAweDhFMjMsCitUUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFIDogMHg4RTI0LAorVFJBTlNG
T1JNX0ZFRURCQUNLX0JJTkRJTkcgOiAweDhFMjUsCitURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQg
OiAweDkxMkYsCitNQVhfRUxFTUVOVF9JTkRFWCA6IDB4OEQ2QiwKK1RFWFRVUkVfSU1NVVRBQkxF
X0xFVkVMUyA6IDB4ODJERiwKKworLyogV2ViR0wtc3BlY2lmaWMgZW51bXMgKi8KK01BWF9DTElF
TlRfV0FJVF9USU1FT1VUX1dFQkdMOiAweDkyNDcKK307CisKKy8vIE90aGVyIG5vbi1mdW5jdGlv
biBwcm9wZXJ0aWVzIG9uIHRoZSBXZWJHTCBvYmplY3QKK3ZhciBvdGhlclByb3BlcnRpZXMgPSB7
CitkcmF3aW5nQnVmZmVyV2lkdGggIDogIm51bWJlciIsCitkcmF3aW5nQnVmZmVySGVpZ2h0IDog
Im51bWJlciIsCitjYW52YXMgICAgICAgICAgICAgIDogImltcGxlbWVudGF0aW9uLWRlcGVuZGVu
dCIKK307CisKKy8vIFByb3BlcnRpZXMgdG8gYmUgaWdub3JlZCAoYXMgYSBsaXN0IG9mIHN0cmlu
Z3MpIGJlY2F1c2UgdGhleSB3ZXJlCisvLyBhZGRlZCBpbiB2ZXJzaW9ucyBvZiB0aGUgc3BlYyB0
aGF0IGFyZSBiYWNrd2FyZC1jb21wYXRpYmxlIHdpdGgKKy8vIHRoaXMgdmVyc2lvbgordmFyIGln
bm9yZWRQcm9wZXJ0aWVzID0gWworXTsKKworLy8gQ29uc3RhbnRzIHJlbW92ZWQgZnJvbSB0aGUg
V2ViR0wgc3BlYyBjb21wYXJlZCB0byBFUyAzLjAKK3ZhciByZW1vdmVkQ29uc3RhbnRzID0gewor
QlVGRkVSX0FDQ0VTU19GTEFHUyAgICAgICAgICAgICAgICAgICA6IDB4OTExRiwKK0JVRkZFUl9N
QVBfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgOiAweDkxMjAsCitCVUZGRVJfTUFQX09GRlNF
VCAgICAgICAgICAgICAgICAgICAgIDogMHg5MTIxLAorTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9G
T1JNQVRTICAgICAgICA6IDB4ODZBMiwKK0ZJWEVEICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAweDE0MEMsCitBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIICAgICAgICAgICAgIDog
MHg4Qjg3LAorQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIICA6IDB4OEEzNSwK
K0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCAgICAgICAgICAgOiAweDhCOEEsCitFWFRFTlNJ
T05TICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxRjAzLAorVU5JRk9STV9OQU1FX0xF
TkdUSCAgICAgICAgICAgICAgICAgICA6IDB4OEEzOSwKK1VOSUZPUk1fQkxPQ0tfTkFNRV9MRU5H
VEggICAgICAgICAgICAgOiAweDhBNDEsCitJTkZPX0xPR19MRU5HVEggICAgICAgICAgICAgICAg
ICAgICAgIDogMHg4Qjg0LAorTUFQX1JFQURfQklUICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDAwMSwKK01BUF9XUklURV9CSVQgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDAwMDIs
CitNQVBfSU5WQUxJREFURV9SQU5HRV9CSVQgICAgICAgICAgICAgIDogMHgwMDA0LAorTUFQX0lO
VkFMSURBVEVfQlVGRkVSX0JJVCAgICAgICAgICAgICA6IDB4MDAwOCwKK01BUF9GTFVTSF9FWFBM
SUNJVF9CSVQgICAgICAgICAgICAgICAgOiAweDAwMTAsCitNQVBfVU5TWU5DSFJPTklaRURfQklU
ICAgICAgICAgICAgICAgIDogMHgwMDIwLAorU0hBREVSX1NPVVJDRV9MRU5HVEggICAgICAgICAg
ICAgICAgICA6IDB4OEI4OCwKK1NIQURFUl9DT01QSUxFUiAgICAgICAgICAgICAgICAgICAgICAg
OiAweDhERkEsCitTSEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICAgICAgICAgICAgIDogMHg4REY4
LAorTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUyAgICAgICAgICAgICA6IDB4OERGOSwKK1RSQU5T
Rk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEggOiAweDhDNzYsCitGUkFNRUJVRkZFUl9V
TkRFRklORUQgICAgICAgICAgICAgICAgIDogMHg4MjE5LAorUFJPR1JBTV9CSU5BUllfUkVUUklF
VkFCTEVfSElOVCAgICAgICA6IDB4ODI1NywKK1BST0dSQU1fQklOQVJZX0xFTkdUSCAgICAgICAg
ICAgICAgICAgOiAweDg3NDEsCitQUk9HUkFNX0JJTkFSWV9GT1JNQVRTICAgICAgICAgICAgICAg
IDogMHg4N0ZFLAorTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMgICAgICAgICAgICA6IDB4ODdG
RiwKK1RFWFRVUkVfU1dJWlpMRV9BICAgICAgICAgICAgICAgICAgICAgOiAweDhFNDUsCitURVhU
VVJFX1NXSVpaTEVfQiAgICAgICAgICAgICAgICAgICAgIDogMHg4RTQ0LAorVEVYVFVSRV9TV0la
WkxFX0cgICAgICAgICAgICAgICAgICAgICA6IDB4OEU0MywKK1RFWFRVUkVfU1dJWlpMRV9SICAg
ICAgICAgICAgICAgICAgICAgOiAweDhFNDIsCitQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRF
WCAgICAgICAgIDogMHg4RDY5LAorfTsKKworZnVuY3Rpb24gYXNzZXJ0UHJvcGVydHkodiwgcCkg
eworICBpZiAocCBpbiB2KSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSB7CisgICAgdGVz
dEZhaWxlZCgiUHJvcGVydHkgZG9lcyBub3QgZXhpc3Q6ICIgKyBwKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorfQorCitmdW5jdGlvbiBhc3NlcnROb1Byb3BlcnR5KHYsIHApIHsKKyAgaWYgKHAg
aW4gdikgeworICAgIHRlc3RGYWlsZWQoIlByb3BlcnR5IGlzIGRlZmluZWQgYW5kIHNob3VsZCBu
b3QgYmU6ICIgKyBwKQorICAgIHJldHVybiBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRNc2dfKGJvb2wsIG1zZykgeworICBpZiAo
IWJvb2wpIC8vIHNob3cgb25seSBmYWlsdXJlcyB0byBhdm9pZCBzcGFtbWluZyByZXN1bHQgbGlz
dAorICAgIGFzc2VydE1zZyhib29sLCBtc2cpOworICByZXR1cm4gYm9vbDsKK30KKworZGVidWco
IiIpOworZGVidWcoIkNhbnZhcy5nZXRDb250ZXh0Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2YXIgcGFzc2Vk
ID0gdHJ1ZTsKK2ZvciAodmFyIGkgaW4gY29uc3RhbnRzKSB7CisgIHZhciByID0gYXNzZXJ0UHJv
cGVydHkoZ2wsIGkpICYmIGFzc2VydE1zZ18oZ2xbaV0gPT0gY29uc3RhbnRzW2ldLCAiUHJvcGVy
dHkgIitpKyIgdmFsdWUgdGVzdCAiK2dsW2ldKyIgPT0gIitjb25zdGFudHNbaV0pOworICBwYXNz
ZWQgPSBwYXNzZWQgJiYgcjsKK30KK2lmIChwYXNzZWQpIHsKKyAgdGVzdFBhc3NlZCgiQWxsIFdl
YkdMIGNvbnN0YW50cyBmb3VuZCB0byBoYXZlIGNvcnJlY3QgdmFsdWVzLiIpOworfQorcGFzc2Vk
ID0gdHJ1ZTsKK2ZvciAodmFyIGkgaW4gcmVtb3ZlZENvbnN0YW50cykgeworICB2YXIgciA9IGFz
c2VydE5vUHJvcGVydHkoZ2wsIGkpOworICBwYXNzZWQgPSBwYXNzZWQgJiYgcjsKK30KK2lmIChw
YXNzZWQpIHsKKyAgdGVzdFBhc3NlZCgiQWxsIGNvbnN0YW50cyByZW1vdmVkIGZyb20gV2ViR0wg
c3BlYyB3ZXJlIGFic2VudCBmcm9tIFdlYkdMIGNvbnRleHQuIik7Cit9Cit2YXIgZXh0ZW5kZWQg
PSBmYWxzZTsKK2ZvciAodmFyIGkgaW4gZ2wpIHsKKyAgaWYgKGNvbnN0YW50c1tpXSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgLy8gT0s7IGtub3duIGNvbnN0YW50CisgIH0gZWxzZSBpZiAoaWdub3Jl
ZFByb3BlcnRpZXMuaW5kZXhPZihpKSAhPSAtMSkgeworICAgIC8vIE9LOyBjb25zdGFudCB0aGF0
IHNob3VsZCBiZSBpZ25vcmVkIGJlY2F1c2UgaXQgd2FzIGFkZGVkIGluIGEgbGF0ZXIgdmVyc2lv
biBvZiB0aGUgc3BlYworICB9IGVsc2UgaWYgKG90aGVyUHJvcGVydGllc1tpXSAhPT0gdW5kZWZp
bmVkICYmCisgICAgICAgICAgICAgKG90aGVyUHJvcGVydGllc1tpXSA9PSAiaW1wbGVtZW50YXRp
b24tZGVwZW5kZW50IiB8fCB0eXBlb2YgZ2xbaV0gPT0gb3RoZXJQcm9wZXJ0aWVzW2ldKSkgewor
ICAgIC8vIE9LOyBrbm93biBwcm9wZXJ0eSBvZiBrbm93biB0eXBlCisgIH0gZWxzZSBpZiAodHlw
ZW9mIGdsW2ldICE9ICJmdW5jdGlvbiIgJiYgcmVtb3ZlZENvbnN0YW50c1tpXSA9PT0gdW5kZWZp
bmVkKSB7CisgICAgaWYgKCFleHRlbmRlZCkgeworICAgICAgZXh0ZW5kZWQgPSB0cnVlOworICAg
ICAgdGVzdEZhaWxlZCgiQWxzbyBmb3VuZCB0aGUgZm9sbG93aW5nIGV4dHJhIHByb3BlcnRpZXM6
Iik7CisgICAgfQorICAgIHRlc3RGYWlsZWQoaSk7CisgIH0KK30KKworaWYgKCFleHRlbmRlZCkg
eworICB0ZXN0UGFzc2VkKCJObyBleHRyYSBwcm9wZXJ0aWVzIGZvdW5kIG9uIFdlYkdMIGNvbnRl
eHQuIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvY29udGV4dC1hdHRy
aWJ1dGVzLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLW9iZXllZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvY29u
dGV4dC1hdHRyaWJ1dGVzLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLW9iZXllZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdjZDkxOTU5ZjA1Mzc5MDE3MTJhZWE1ZWY2NzFkZDYwZTllMTE4MTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvY29udGV4dC9jb250ZXh0LWF0dHJpYnV0ZXMtZGVwdGgtc3RlbmNpbC1hbnRp
YWxpYXMtb2JleWVkLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworCitmdW5jdGlvbiBnZXRXZWJHTChhdHRyaWJzKSB7CisgIHZhciBjYW52YXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgaWYgKCFjYW52YXMpCisgICAg
cmV0dXJuIG51bGw7CisKKyAgLy8gV2UgY2FuJ3QgdXNlIHd0dS5jcmVhdGUzRENvbnRleHQgYmVj
YXVzZSBpdCBkZWZhdWx0cyB0byBhbnRpYWxpYXM9ZmFsc2UuCisgIHZhciBuYW1lcyA9IFsid2Vi
Z2wyIl07CisgIHZhciBnbCA9IG51bGw7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVu
Z3RoOyArK2kpIHsKKyAgICB0cnkgeworICAgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dChuYW1l
c1tpXSwgYXR0cmlicyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KKyAgICBpZiAoZ2wpIHsK
KyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBpZiAoIWdsKQorICAgIHJldHVybiBudWxsOwor
ICByZXR1cm4gZ2w7Cit9CisKK2Z1bmN0aW9uIHRlc3RBdHRyaWJzKGF0dHJpYnMpIHsKKyAgdmFy
IGFudGlhbGlhcywgZGVwdGgsIHN0ZW5jaWw7CisgIGlmICghYXR0cmlicykgeworICAgIGFudGlh
bGlhcyA9IHRydWU7CisgICAgZGVwdGggPSB0cnVlOworICAgIHN0ZW5jaWwgPSBmYWxzZTsKKyAg
ICBkZWJ1ZygiVGVzdGluZyBkZWZhdWx0IGF0dHJpYnV0ZXM6IHsgYW50aWFsaWFzOiB0cnVlLCBk
ZXB0aDogdHJ1ZSwgc3RlbmNpbDpmYWxzZSB9Iik7CisgIH0gZWxzZSB7CisgICAgYW50aWFsaWFz
ID0gYXR0cmlicy5hbnRpYWxpYXM7CisgICAgZGVwdGggPSBhdHRyaWJzLmRlcHRoOworICAgIHN0
ZW5jaWwgPSBhdHRyaWJzLnN0ZW5jaWw7CisgICAgZGVidWcoIlRlc3Rpbmcgc3BlY2lmaWVkIGF0
dHJpYnV0ZXM6IHsgYW50aWFsaWFzOiAiICsgYW50aWFsaWFzICsgIiwgZGVwdGg6ICIgKyBkZXB0
aCArICIsIHN0ZW5jaWw6ICIgKyBzdGVuY2lsICsgIiB9Iik7CisgIH0KKyAgdmFyIGdsID0gZ2V0
V2ViR0woYXR0cmlicyk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJGYWlsIHRvIGNy
ZWF0ZSBhIGNvbnRleHQiKTsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGFjdHVhbF9hdHRyaWJz
ID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgaWYgKGFudGlhbGlhcyAhPSBhY3R1YWxf
YXR0cmlicy5hbnRpYWxpYXMpCisgICAgdGVzdEZhaWxlZCgiYW50aWFsaWFzID0gIiArIGFudGlh
bGlhcyArICIgaXMgbm90IG9iZXllZCIpCisgIGlmIChkZXB0aCAhPSBhY3R1YWxfYXR0cmlicy5k
ZXB0aCkKKyAgICB0ZXN0RmFpbGVkKCJkZXB0aCA9ICIgKyBkZXB0aCArICIgaXMgbm90IG9iZXll
ZCIpCisgIGlmIChzdGVuY2lsICE9IGFjdHVhbF9hdHRyaWJzLnN0ZW5jaWwpCisgICAgdGVzdEZh
aWxlZCgic3RlbmNpbCA9ICIgKyBzdGVuY2lsICsgIiBpcyBub3Qgb2JleWVkIikKKyAgaWYgKGFu
dGlhbGlhcyA9PSBhY3R1YWxfYXR0cmlicy5hbnRpYWxpYXMgJiYKKyAgICAgIGRlcHRoID09IGFj
dHVhbF9hdHRyaWJzLmRlcHRoICYmCisgICAgICBzdGVuY2lsID09IGFjdHVhbF9hdHRyaWJzLnN0
ZW5jaWwpIHsKKyAgICB0ZXN0UGFzc2VkKCJDb250ZXh0IGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVj
dCBhbnRpYWxpYXMsIGRlcHRoLCBhbmQgc3RlbmNpbC4iKTsKKyAgfQorfQorCitkZXNjcmlwdGlv
bignVmVyaWZ5IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXJlIHdvcmtpbmcgYXMgc3BlY2lmaWVk
LCBpbmNsdWRpbmcgZGVwdGgsIHN0ZW5jaWwsIGFudGlhbGlhcycpOwordGVzdEF0dHJpYnMobnVs
bCk7ICAvLyBEZWZhdWx0IGF0dHJpYnMKK3Rlc3RBdHRyaWJzKHthbnRpYWxpYXM6IHRydWUsIGRl
cHRoOiB0cnVlLCBzdGVuY2lsOiB0cnVlfSk7Cit0ZXN0QXR0cmlicyh7YW50aWFsaWFzOiBmYWxz
ZSwgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IHRydWV9KTsKK3Rlc3RBdHRyaWJzKHthbnRpYWxpYXM6
IHRydWUsIGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZX0pOwordGVzdEF0dHJpYnMoe2FudGlh
bGlhczogZmFsc2UsIGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZX0pOwordGVzdEF0dHJpYnMo
e2FudGlhbGlhczogdHJ1ZSwgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNlfSk7Cit0ZXN0QXR0
cmlicyh7YW50aWFsaWFzOiBmYWxzZSwgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNlfSk7Cit0
ZXN0QXR0cmlicyh7YW50aWFsaWFzOiB0cnVlLCBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNl
fSk7Cit0ZXN0QXR0cmlicyh7YW50aWFsaWFzOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2ls
OiBmYWxzZX0pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29udGV4dC9jb250ZXh0LW1vZGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250
ZXh0L2NvbnRleHQtbW9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTY2MDRjNTA5NWVlN2Q1ZGE1YTU0
MThjYzFkZjI5YjQzZGM1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29udGV4dC9jb250ZXh0LW1v
ZGUuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgQ2FudmFzIENvbnRleHQgTW9kZSBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIFdlYkdMIDIuMCBpbXBsZW1lbnRhdGlv
bnMgcmVzcGVjdCB0aGUgY2FudmFzJ3MgY29udGV4dCBtb2RlLiIpOworCitkZWJ1ZygiIik7CisK
K2Fzc2VydE1zZyh3aW5kb3cuV2ViR0xSZW5kZXJpbmdDb250ZXh0LAorICAgICAgICAgICJXZWJH
TDJSZW5kZXJpbmdDb250ZXh0IHNob3VsZCBiZSBhIG1lbWJlciBvZiB3aW5kb3ciKTsKK2Fzc2Vy
dE1zZygnV2ViR0wyUmVuZGVyaW5nQ29udGV4dCcgaW4gd2luZG93LAorICAgICAgICAgICJXZWJH
TDJSZW5kZXJpbmdDb250ZXh0IHNob3VsZCBiZSAnaW4nIHdpbmRvdyIpOworCitmdW5jdGlvbiB0
ZXN0Q29udGV4dE1vZGUobW9kZSwgYWx0TW9kZSkgeworICBkZWJ1ZygiVGVzdGluZyAiICsgbW9k
ZSArICIgY29udGV4dCB0eXBlIik7CisKKyAgbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjYW52YXMnKTsKKyAgYy53aWR0aCA9IDI7CisgIGMuaGVpZ2h0ID0gMjsKKyAgbGV0IGdsID0g
Yy5nZXRDb250ZXh0KG1vZGUpOworICBhc3NlcnRNc2coYy5nZXRDb250ZXh0KG1vZGUpID09IGds
LAorICAgICAgICAgICAgIkNhbnZhcy5nZXRDb250ZXh0KCciICsgbW9kZSArICInKSBzaG91bGQg
cmV0dXJuIHRoZSBzYW1lIHZhbHVlIGV2ZXJ5IHRpbWUiKTsKKyAgdHJ5IHsKKyAgICBhc3NlcnRN
c2coYy5nZXRDb250ZXh0KGFsdE1vZGUpID09IG51bGwsCisgICAgICAgICAgICAgICJDYW52YXMu
Z2V0Q29udGV4dCgnIiArIGFsdE1vZGUgKyAiJykgYWZ0ZXIgZ2V0Q29udGV4dCgnIiArIG1vZGUg
KyAiJykgc2hvdWxkIHJldHVybiBudWxsIik7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICB0ZXN0RmFp
bGVkKCJDYW52YXMuZ2V0Q29udGV4dCgnIiArIGFsdE1vZGUgKyAiJykgYWZ0ZXIgZ2V0Q29udGV4
dCgnIiArIG1vZGUgKyAiJykgc2hvdWxkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24iKTsKKyAgfQor
fQorCit0ZXN0Q29udGV4dE1vZGUoJ3dlYmdsMicsICd3ZWJnbCcpOwordGVzdENvbnRleHRNb2Rl
KCd3ZWJnbCcsICd3ZWJnbDInKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29udGV4dC9j
b250ZXh0LXJlc2l6ZS1jaGFuZ2VzLWJ1ZmZlci1iaW5kaW5nLWJ1Zy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQv
Y29udGV4dC1yZXNpemUtY2hhbmdlcy1idWZmZXItYmluZGluZy1idWcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNjY4MjI5NWE0MjI3NDA5NjIwMzdiNmQ2OTI3OTY4MzQ3MWIwNjMwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2NvbnRleHQvY29udGV4dC1yZXNpemUtY2hhbmdlcy1idWZmZXItYmluZGluZy1idWcu
aHRtbApAQCAtMCwwICsxLDQ5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgQ29udGV4dCBSZXNpemUgQnVnIFRlc3Q8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0idGVzdCI+PC9jYW52YXM+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyBjYW52YXMgcmVz
aXplIGRvZXMgbm90IGFmZmVjdCBQSVhFTF9VTlBBQ0tfQlVGRkVSIGJpbmRpbmcuIik7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdCIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGws
IDIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworICB2YXIgdGV4dHVy
ZTE9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwg
dGV4dHVyZTEpOworICB2YXIgYnVmZmVyMD0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRC
dWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVyMCk7CisKKyAgY2FudmFzLndpZHRo
ID0gNjgyOworICAvLyBSZXNpemluZyBjYW52YXMgaW5jb3JyZWN0bHkgY2xlYXJlZCB0aGUgUElY
RUxfVU5QQUNLX0JVRkZFUiBiaW5kaW5nIHRvIDAKKyAgLy8gYW5kIGNhdXNlZCBhIGNyYXNoIGZy
b20gdGhlIGZvbGxvd2luZyBsaW5lIGluIENocm9tZS4gY3JidWcuY29tLzY3MzkyOS4KKyAgZ2wu
dGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAxLCBnbC5SOCwgIDIyNSw2NjQgLCAxNDMsIDAsCisg
ICAgICBnbC5MVU1JTkFOQ0VfQUxQSEEsIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQsIDB4NDE0
MTQxNDEpOworICB0ZXN0UGFzc2VkKCJubyBjcmFzaCBmcm9tIHRleEltYWdlM0QiKTsKK30KK2Rl
YnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvY29udGV4dC1zaGFyaW5nLXRleHR1cmUyZGFy
cmF5LXRleHR1cmUzZC1kYXRhLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvY29udGV4dC1zaGFyaW5nLXRl
eHR1cmUyZGFycmF5LXRleHR1cmUzZC1kYXRhLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZjZkZDc0
YjMzNmUyNmQwYmE5YWJiYWRlMWQ2YjkzZTJlMjg5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29u
dGV4dC9jb250ZXh0LXNoYXJpbmctdGV4dHVyZTJkYXJyYXktdGV4dHVyZTNkLWRhdGEtYnVnLmh0
bWwKQEAgLTAsMCArMSwxNTAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPk11bHRpcGxlIFdlYkdMMiBDb250ZXh0IHNoYXJpbmcgdGV4dHVy
ZTJkYXJyYXkvdGV4dHVyZTNkIGRhdGEgYnVnIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhczEiIHdpZHRo
PSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzMiIgd2lkdGg9
IjY0IiBoZWlnaHQ9IjY0Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PCEtLSBXZWJHTCAyIFNoYWRlcnMgLS0+Cis8c2NyaXB0IGlkPSJ2cyIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbiB2
ZWM0IGFfcG9zaXRpb247CitpbiB2ZWMyIGFfY29vcmQ7CitvdXQgdmVjMiB2X2Nvb3JkOwordm9p
ZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgICB2X2Nvb3JkID0g
YV9jb29yZDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc190ZXh0dXJlXzNkIiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworaW4gdmVjMiB2X2Nvb3JkOwordW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB1X3Nh
bXBsZXI7CitvdXQgdmVjNCBvX2NvbG9yOwordm9pZCBtYWluICgpIHsKKyAgICBvX2NvbG9yID0g
dGV4dHVyZSh1X3NhbXBsZXIsIHZlYzModl9jb29yZCwgMC4wKSk7Cit9Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBpZD0iZnNfdGV4dHVyZV8yZF9hcnJheSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZlYzIgdl9j
b29yZDsKK3VuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheSB1X3NhbXBsZXI7CitvdXQgdmVj
NCBvX2NvbG9yOwordm9pZCBtYWluICgpIHsKKyAgICBvX2NvbG9yID0gdGV4dHVyZSh1X3NhbXBs
ZXIsIHZlYzModl9jb29yZCwgMC4wKSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCAyIGRpZmZlcmVu
dCBjb250ZXh0cyBib3RoIHVzaW5nIDJkIGFycmF5IHRleHR1cmUgb3IgM2QgdGV4dHVyZSBkb2Vz
IG5vdCBzaGFyZSB0aGUgdGV4dHVyZSBkYXRhIGFtb25nIHRoZW0gZHVlIHRvIGNvbnRleHQgc2F2
ZS9yZXN0b3JlIGJ1Zy4gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9Nzg4NDQ4Iik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHJlbmRlcihnbCwg
d2lkdGgsIGhlaWdodCwgZXhwZWN0ZWRDb2xvciwgbXNnKSB7CisgICAgd3R1LnNldHVwVW5pdFF1
YWQoZ2wsIDAsIDEpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZXhwZWN0ZWRDb2xvciwg
bXNnKTsKK30KKworZnVuY3Rpb24gU3RhdGVTZXR1cChnbCwgdGV4dHVyZV90eXBlLCB0ZXh0dXJl
X2NvbG9yLCB3aWR0aCwgaGVpZ2h0KSB7CisKKyAgICAvLyBjcmVhdGUgYSBidWZmZXIgdG8gaG9s
ZCB0ZXh0dXJlIGRhdGEKKyAgICBjb25zdCBkZXB0aCA9IDQ7CisgICAgdmFyIHNpemUgPSB3aWR0
aCAqIGhlaWdodCAqIGRlcHRoICogNDsKKyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoc2l6
ZSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IDQpIHsKKyAgICAgICAgYnVm
W2kgKyAwXSA9IHRleHR1cmVfY29sb3JbMF07CisgICAgICAgIGJ1ZltpICsgMV0gPSB0ZXh0dXJl
X2NvbG9yWzFdOworICAgICAgICBidWZbaSArIDJdID0gdGV4dHVyZV9jb2xvclsyXTsKKyAgICAg
ICAgYnVmW2kgKyAzXSA9IHRleHR1cmVfY29sb3JbM107CisgICAgfQorICAgIGdsLnZpZXdwb3J0
KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgLy8gY2hvb3NlIHRleHR1cmUgdHlwZSBhbmQg
ZnJhZ21lbnQgc2hhZGVyIHR5cGUKKyAgICB2YXIgdGV4X3R5cGUgPSBnbC5URVhUVVJFXzJEOwor
ICAgIHZhciBmcmFnbWVudF9zaGFkZXIgPSAgIiIsIHZlcnRleF9zaGFkZXIgPSAidnMiOworICAg
IGlmKHRleHR1cmVfdHlwZSA9PT0gIjNkIikgeworICAgICAgdGV4X3R5cGUgPSBnbC5URVhUVVJF
XzNELCBmcmFnbWVudF9zaGFkZXIgPSAiZnNfdGV4dHVyZV8zZCI7CisgICAgfSBlbHNlIGlmKHRl
eHR1cmVfdHlwZSA9PT0gIjJkX2FycmF5IikgeworICAgICAgdGV4X3R5cGUgPSBnbC5URVhUVVJF
XzJEX0FSUkFZLCBmcmFnbWVudF9zaGFkZXIgPSAiZnNfdGV4dHVyZV8yZF9hcnJheSI7CisgICAg
fSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlRleHR1cmUgdHlwZSBtdXN0IGJlIDNkIG9yIDJk
YXJyYXkiKTsKKyAgICB9CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2ws
IFt2ZXJ0ZXhfc2hhZGVyLCBmcmFnbWVudF9zaGFkZXJdLCBbJ2FfcG9zaXRpb24nLCAnYV9jb29y
ZCddLCBbMCwgMV0pOworCisgICAgLy8gY3JlYXRlIGEgdGV4dHVyZQorICAgIHZhciB0ZXh0dXJl
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAp
OworCisgICAgLy8gcHJvZ3JhbSB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICBnbC5hY3RpdmVUZXh0
dXJlKGdsLlRFWFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVyZSh0ZXhfdHlwZSwgdGV4dHVyZSk7
CisgICAgZ2wudGV4SW1hZ2UzRCh0ZXhfdHlwZSwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgZ2wudGV4UGFy
YW1ldGVyaSh0ZXhfdHlwZSwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKHRleF90eXBlLCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5F
QVJFU1QpOworCisgICAgLy8gYmluZCBzYW1wbGVyIHRvIHRoZSB0ZXh0dXJlCisgICAgdmFyIHNh
bXBsZXJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfc2FtcGxlciIpOwor
ICAgIGdsLnVuaWZvcm0xaShzYW1wbGVyTG9jLCAwKTsKKworICAgIC8vIGZsdXNoIGFsbCBnbCBj
b21tYW5kcworICAgIGdsLmZsdXNoKCk7Cit9CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBjYW52YXMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczEiKTsKK3ZhciBn
bDEgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhczEsIG51bGwsIDIpOyAvL2NvbnRleHQxCisK
K3ZhciBjYW52YXMyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsKK3ZhciBn
bDIgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhczIsIG51bGwsIDIpOyAvLyBjb250ZXh0Mgor
CitpZiAoZ2wxICYmIGdsMikKK3sKKyAgdGVzdFBhc3NlZCgiQ3JlYXRlZCAyIFdlYkdMMiBjb250
ZXh0IHN1Y2Nlc3NmdWxseSIpOworICB2YXIgcmVkID0gWzI1NSwgMCwgMCwgMjU1XSwgZ3JlZW4g
PSBbMCwyNTUsMCwyNTVdLCBibHVlID0gWzAsMCwyNTUsMjU1XTsKKyAgdmFyIHdpZHRoID0gNjQs
IGhlaWdodCA9IDY0OworICB2YXIgdGV4dHVyZV90eXBlID0gIjNkIiwgdGV4dHVyZV9jb2xvciA9
IGdyZWVuOworICBTdGF0ZVNldHVwKGdsMSx0ZXh0dXJlX3R5cGUsIHRleHR1cmVfY29sb3IsIHdp
ZHRoLCBoZWlnaHQpOy8vIGNvbnRleHQxIHN0YXRlIHNldHVwCisgIHRleHR1cmVfY29sb3IgPSBy
ZWQ7CisgIFN0YXRlU2V0dXAoZ2wyLCB0ZXh0dXJlX3R5cGUsIHRleHR1cmVfY29sb3IsIHdpZHRo
LCBoZWlnaHQpOy8vIGNvbnRleHQyIHN0YXRlIHNldHVwCisgIHJlbmRlcihnbDEsIHdpZHRoLCBo
ZWlnaHQsIGdyZWVuLCAiUmVzdWx0IHBpeGVscyByZW5kZXJpbmcgZnJvbSBjb250ZXh0MSB3aXRo
IDNkIHRleHR1cmUgc2hvdWxkIGJlIGdyZWVuIik7Ly8gcmVuZGVyIGNvbnRleHQxCisKKyAgdGV4
dHVyZV90eXBlID0gIjJkX2FycmF5IiwgdGV4dHVyZV9jb2xvciA9IGJsdWU7CisgIFN0YXRlU2V0
dXAoZ2wxLCB0ZXh0dXJlX3R5cGUsIHRleHR1cmVfY29sb3IsIHdpZHRoLCBoZWlnaHQpOy8vIGNv
bnRleHQxIHN0YXRlIHNldHVwCisgIHRleHR1cmVfY29sb3IgPSBncmVlbjsKKyAgU3RhdGVTZXR1
cChnbDIsIHRleHR1cmVfdHlwZSwgdGV4dHVyZV9jb2xvciwgd2lkdGgsIGhlaWdodCk7Ly8gY29u
dGV4dDIgc3RhdGUgc2V0dXAKKyAgcmVuZGVyKGdsMSwgd2lkdGgsIGhlaWdodCwgYmx1ZSwgIlJl
c3VsdCBwaXhlbHMgcmVuZGVyaW5nIGZyb20gY29udGV4dDEgd2l0aCAyZGFycmF5IHRleHR1cmUg
c2hvdWxkIGJlIGJsdWUiKTsvL3JlbmRlciBjb250ZXh0MQorfQorZWxzZSBpZighZ2wxKQorewor
ICB0ZXN0RmFpbGVkKCJGYWlsIHRvIGdldCAxc3QgV2ViR0wyIGNvbnRleHQiKTsKK30KK2Vsc2UK
K3sKKyAgdGVzdEZhaWxlZCgiRmFpbCB0byBnZXQgMm5kIFdlYkdMMiBjb250ZXh0Iik7Cit9CisK
K2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvY29udGV4dC10eXBlLXRlc3QtMi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL2NvbnRleHQvY29udGV4dC10eXBlLXRlc3QtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzODIyZjJh
NmZiZTY3OTU2OWJmOGViNWFjNjFlNWE5NmRjYjM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29u
dGV4dC9jb250ZXh0LXR5cGUtdGVzdC0yLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wyIENhbnZh
cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGNh
bnZhcyBpZD0iY2FudmFzMmQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJH
TDIgaW1wbGVtZW50YXRpb25zIGludGVyYWN0IGNvcnJlY3RseSB3aXRoIHRoZSBjYW52YXMgdGFn
LiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKworYXNzZXJ0
TXNnKHdpbmRvdy5XZWJHTFJlbmRlcmluZ0NvbnRleHQsCisgICAgICAgICAgIldlYkdMMlJlbmRl
cmluZ0NvbnRleHQgc2hvdWxkIGJlIGEgbWVtYmVyIG9mIHdpbmRvdyIpOworYXNzZXJ0TXNnKCdX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0JyBpbiB3aW5kb3csCisgICAgICAgICAgIldlYkdMMlJlbmRl
cmluZ0NvbnRleHQgc2hvdWxkIGJlICdpbicgd2luZG93Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7CitpZiAoIWds
KSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
IHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIkNoZWNraW5nIGNvbnRl
eHQgdHlwZSIpOworICBhc3NlcnRNc2coZ2wgaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0LAorICAgICAgICAgICAgImNvbnRleHQgdHlwZSBzaG91bGQgYmUgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dCIpOworfQorZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29udGV4dC9pbmNvcnJlY3Qt
Y29udGV4dC1vYmplY3QtYmVoYXZpb3VyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvY29udGV4dC9pbmNvcnJlY3QtY29udGV4
dC1vYmplY3QtYmVoYXZpb3VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdkMDQ3MjNiMmQ0MTA0NGJjMTJl
OGU0YmQ2M2MyNDkzY2UyMWJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L2luY29ycmVj
dC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuaHRtbApAQCAtMCwwICsxLDIyMSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQgaWQ9InRmLXZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lv
biAzMDAgZXMKK2luIHVpbnQgaW5fZGF0YTsKK2ZsYXQgb3V0IHVpbnQgb3V0X2RhdGE7Cit2b2lk
IG1haW4oKSB7CisgICAgb3V0X2RhdGEgPSBpbl9kYXRhOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJ0Zi1mc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAg
ZXMKK3ZvaWQgbWFpbigpIHt9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIDIuMCBBUElzIHdpdGggb2JqZWN0cyBm
cm9tIG90aGVyIGNvbnRleHRzIik7CisKK2Z1bmN0aW9uIGxvYWRURlByb2dyYW0oY29udGV4dCkg
eworICAgIGNvbnN0IHRmUHJvZ3JhbSA9IHd0dS5zZXR1cFRyYW5zZm9ybUZlZWRiYWNrUHJvZ3Jh
bShjb250ZXh0LCBbInRmLXZzaGFkZXIiLCAidGYtZnNoYWRlciJdLAorICAgICAgICBbIm91dF9k
YXRhIl0sIGNvbnRleHQuU0VQQVJBVEVfQVRUUklCUywKKyAgICAgICAgWyJpbl9kYXRhIl0pOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImxpbmtp
bmcgdHJhbnNmb3JtIGZlZWRiYWNrIHNoYWRlciBzaG91bGQgbm90IHNldCBhbiBlcnJvciIpOwor
ICAgIHJldHVybiB0ZlByb2dyYW07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZTJEVGV4dHVyZUFycmF5
NHg0eDQoY29udGV4dCkgeworICAgIGNvbnN0IHRleHR1cmUgPSBjb250ZXh0LmNyZWF0ZVRleHR1
cmUoKTsKKyAgICBjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRF9BUlJBWSwg
dGV4dHVyZSk7CisgICAgY29udGV4dC50ZXhJbWFnZTNEKGNvbnRleHQuVEVYVFVSRV8yRF9BUlJB
WSwgMCwgY29udGV4dC5SR0JBOCwgNCwgNCwgNCwgMCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29u
dGV4dC5OT19FUlJPUiwgImFsbG9jYXRpbmcgMkQgdGV4dHVyZSBhcnJheSBzaG91bGQgbm90IHNl
dCBhbiBlcnJvciIpOworICAgIHJldHVybiB0ZXh0dXJlOworfQorCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgY29udGV4dEEgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCAyKTsKK3ZhciBjb250ZXh0QiA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZp
bmVkLCB1bmRlZmluZWQsIDIpOwordmFyIGJ1ZmZlckEgPSBjb250ZXh0QS5jcmVhdGVCdWZmZXIo
KTsKK3ZhciBidWZmZXJCID0gY29udGV4dEIuY3JlYXRlQnVmZmVyKCk7Cit2YXIgZnJhbWVCdWZm
ZXJBID0gY29udGV4dEEuY3JlYXRlRnJhbWVidWZmZXIoKTsKK3ZhciBmcmFtZUJ1ZmZlckIgPSBj
b250ZXh0Qi5jcmVhdGVGcmFtZWJ1ZmZlcigpOwordmFyIHByb2dyYW1CID0gd3R1LmxvYWRTdGFu
ZGFyZFByb2dyYW0oY29udGV4dEIpOwordmFyIHF1ZXJ5QiA9IGNvbnRleHRCLmNyZWF0ZVF1ZXJ5
KCk7Cit2YXIgc2FtcGxlckIgPSBjb250ZXh0Qi5jcmVhdGVTYW1wbGVyKCk7Cit2YXIgc3luY0Ig
PSBjb250ZXh0Qi5mZW5jZVN5bmMoY29udGV4dEIuU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUs
IDApOwordmFyIHRyYW5zZm9ybUZlZWRiYWNrQSA9IGNvbnRleHRBLmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7Cit2YXIgdHJhbnNmb3JtRmVlZGJhY2tCID0gY29udGV4dEIuY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKTsKK3ZhciB2ZXJ0ZXhBcnJheUEgPSBjb250ZXh0QS5jcmVhdGVWZXJ0ZXhB
cnJheSgpOwordmFyIHZlcnRleEFycmF5QiA9IGNvbnRleHRCLmNyZWF0ZVZlcnRleEFycmF5KCk7
Cit2YXIgdGZQcm9ncmFtQiA9IGxvYWRURlByb2dyYW0oY29udGV4dEIpOwordmFyIHRleHR1cmUy
REFycmF5QSA9IGNyZWF0ZTJEVGV4dHVyZUFycmF5NHg0eDQoY29udGV4dEEpOwordmFyIHRleHR1
cmUyREFycmF5QiA9IGNyZWF0ZTJEVGV4dHVyZUFycmF5NHg0eDQoY29udGV4dEIpOwordmFyIGxv
Y2F0aW9uQiA9IGNvbnRleHRCLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtQiwgJ3VfbW9kZWxW
aWV3UHJvak1hdHJpeCcpOwordmFyIHVuaWZvcm1EYXRhID0gW107CisKK2Z1bmN0aW9uIGdlbmVy
YXRlRmxvYXQzMkFycmF5KGxlbmd0aCkgeworICAgIHVuaWZvcm1EYXRhID0gbmV3IEZsb2F0MzJB
cnJheShsZW5ndGgpOworfQorCitmdW5jdGlvbiBnZW5lcmF0ZUZsb2F0QXJyYXkobGVuZ3RoKSB7
CisgICAgdW5pZm9ybURhdGEgPSBuZXcgQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVuaWZvcm1EYXRhW2ldID0gMC4wOworICAg
IH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVJbnQzMkFycmF5KGxlbmd0aCkgeworICAgIHVuaWZv
cm1EYXRhID0gbmV3IEludDMyQXJyYXkobGVuZ3RoKTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVJ
bnRBcnJheShsZW5ndGgpIHsKKyAgICB1bmlmb3JtRGF0YSA9IG5ldyBBcnJheShsZW5ndGgpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5pZm9ybURh
dGFbaV0gPSAwOworICAgIH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVVaW50MzJBcnJheShsZW5n
dGgpIHsKKyAgICB1bmlmb3JtRGF0YSA9IG5ldyBVaW50MzJBcnJheShsZW5ndGgpOworfQorCisv
LyBNYWtlIHRoZSBiaW5kYWJsZSBvYmplY3RzIHZhbGlkIGluIGJvdGggY29udGV4dHMgZmlyc3Qu
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwg
ImNvbnRleHRBLmJpbmRCdWZmZXIoY29udGV4dEEuQVJSQVlfQlVGRkVSLCBidWZmZXJBKSIpOwor
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJj
b250ZXh0QS5iaW5kQnVmZmVyKGNvbnRleHRBLkFSUkFZX0JVRkZFUiwgbnVsbCkiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEIsIGNvbnRleHRCLk5PX0VSUk9SLCAiY29udGV4
dEIuYmluZEJ1ZmZlcihjb250ZXh0Qi5BUlJBWV9CVUZGRVIsIGJ1ZmZlckIpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRCLCBjb250ZXh0Qi5OT19FUlJPUiwgImNvbnRleHRC
LmJpbmRCdWZmZXIoY29udGV4dEIuQVJSQVlfQlVGRkVSLCBudWxsKSIpOword3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5iaW5k
VHJhbnNmb3JtRmVlZGJhY2soY29udGV4dEEuVFJBTlNGT1JNX0ZFRURCQUNLLCB0cmFuc2Zvcm1G
ZWVkYmFja0EpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0
QS5OT19FUlJPUiwgImNvbnRleHRBLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0QS5UUkFO
U0ZPUk1fRkVFREJBQ0ssIG51bGwpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRl
eHRCLCBjb250ZXh0Qi5OT19FUlJPUiwgImNvbnRleHRCLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhj
b250ZXh0Qi5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRyYW5zZm9ybUZlZWRiYWNrQikiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEIsIGNvbnRleHRCLk5PX0VSUk9SLCAiY29udGV4
dEIuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHRCLlRSQU5TRk9STV9GRUVEQkFDSywgbnVs
bCkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VS
Uk9SLCAiY29udGV4dEEuYmluZFZlcnRleEFycmF5KHZlcnRleEFycmF5QSkiKTsKK3d0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEu
YmluZFZlcnRleEFycmF5KG51bGwpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRl
eHRCLCBjb250ZXh0Qi5OT19FUlJPUiwgImNvbnRleHRCLmJpbmRWZXJ0ZXhBcnJheSh2ZXJ0ZXhB
cnJheUIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRCLCBjb250ZXh0Qi5O
T19FUlJPUiwgImNvbnRleHRCLmJpbmRWZXJ0ZXhBcnJheShudWxsKSIpOworCit3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLmJp
bmRGcmFtZWJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJBKSIpOword3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb250ZXh0QS5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihjb250ZXh0QS5GUkFNRUJVRkZF
UiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmUyREFycmF5QiwgMCwgMCkiKTsK
K3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEuZ2V0RnJhZ0RhdGFMb2NhdGlvbih0ZlByb2dyYW1CLCAnbm9uZXhp
c3RlbnRfdmFyaWFibGUnKSIpOworLy8gVW5zaWduZWQgaW50IHVuaWZvcm1zCisgICAgICAgICAg
ICAgICAgICAgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0
QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xdWkobG9jYXRpb25CLCAwKSIp
OworZ2VuZXJhdGVVaW50MzJBcnJheSgxKTsgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtMXVpdihs
b2NhdGlvbkIsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJhdGVJbnRBcnJheSgxKTsgICAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0QS51bmlmb3JtMXVpdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhKSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29u
dGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtMnVpKGxvY2F0aW9uQiwg
MCwgMCkiKTsKK2dlbmVyYXRlVWludDMyQXJyYXkoMik7IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9y
bTJ1aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVyYXRlSW50QXJyYXkoMik7ICAg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTJ1aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSkiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTN1aShsb2Nh
dGlvbkIsIDAsIDAsIDApIik7CitnZW5lcmF0ZVVpbnQzMkFycmF5KDMpOyB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRl
eHRBLnVuaWZvcm0zdWl2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEpIik7CitnZW5lcmF0ZUludEFy
cmF5KDMpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5J
TlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0zdWl2KGxvY2F0aW9uQiwgdW5pZm9y
bURhdGEpIik7CisgICAgICAgICAgICAgICAgICAgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZv
cm00dWkobG9jYXRpb25CLCAwLCAwLCAwLCAwKSIpOworZ2VuZXJhdGVVaW50MzJBcnJheSg0KTsg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0QS51bmlmb3JtNHVpdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhKSIpOwor
Z2VuZXJhdGVJbnRBcnJheSg0KTsgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtNHVpdihsb2Nh
dGlvbkIsIHVuaWZvcm1EYXRhKSIpOworLy8gTmV3IHVuaWZvcm0gZW50cnkgcG9pbnRzIHdpdGgg
b2Zmc2V0cworZ2VuZXJhdGVGbG9hdDMyQXJyYXkoMik7ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZv
cm0xZnYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSwgMSkiKTsKK2dlbmVyYXRlRmxvYXRBcnJheSgy
KTsgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtMWZ2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEs
IDEpIik7CitnZW5lcmF0ZUludDMyQXJyYXkoMik7ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9y
bTFpdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhLCAxKSIpOworZ2VuZXJhdGVJbnRBcnJheSgyKTsg
ICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElE
X09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xaXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSwg
MSkiKTsKK2dlbmVyYXRlRmxvYXQzMkFycmF5KDMpOyAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3Jt
MmZ2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEsIDEpIik7CitnZW5lcmF0ZUZsb2F0QXJyYXkoMyk7
ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTJmdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhLCAx
KSIpOworZ2VuZXJhdGVJbnQzMkFycmF5KDMpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0y
aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSwgMSkiKTsKK2dlbmVyYXRlSW50QXJyYXkoMyk7ICAg
ICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9P
UEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtMml2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEsIDEp
Iik7CitnZW5lcmF0ZUZsb2F0MzJBcnJheSg0KTsgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTNm
dihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhLCAxKSIpOworZ2VuZXJhdGVGbG9hdEFycmF5KDQpOyAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0zZnYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSwgMSki
KTsKK2dlbmVyYXRlSW50MzJBcnJheSg0KTsgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtM2l2
KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEsIDEpIik7CitnZW5lcmF0ZUludEFycmF5KDQpOyAgICAg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTNpdihsb2NhdGlvbkIsIHVuaWZvcm1EYXRhLCAxKSIp
OworZ2VuZXJhdGVGbG9hdDMyQXJyYXkoNSk7ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNv
bnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm00ZnYo
bG9jYXRpb25CLCB1bmlmb3JtRGF0YSwgMSkiKTsKK2dlbmVyYXRlRmxvYXRBcnJheSg1KTsgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0QS51bmlmb3JtNGZ2KGxvY2F0aW9uQiwgdW5pZm9ybURhdGEsIDEpIik7
CitnZW5lcmF0ZUludDMyQXJyYXkoNSk7ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTRpdihs
b2NhdGlvbkIsIHVuaWZvcm1EYXRhLCAxKSIpOworZ2VuZXJhdGVJbnRBcnJheSg1KTsgICAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJB
VElPTiwgImNvbnRleHRBLnVuaWZvcm00aXYobG9jYXRpb25CLCB1bmlmb3JtRGF0YSwgMSkiKTsK
K2dlbmVyYXRlRmxvYXQzMkFycmF5KDUpOyAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhLCAxKSIpOworZ2VuZXJhdGVGbG9hdEFy
cmF5KDUpOyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5J
TlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb25CLCBm
YWxzZSwgdW5pZm9ybURhdGEsIDEpIik7CitnZW5lcmF0ZUZsb2F0MzJBcnJheSgxMCk7IHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9O
LCAiY29udGV4dEEudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0
YSwgMSkiKTsKK2dlbmVyYXRlRmxvYXRBcnJheSgxMCk7ICAgd3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhLCAxKSIpOworZ2VuZXJh
dGVGbG9hdDMyQXJyYXkoMTcpOyB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBj
b250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb25CLCBmYWxzZSwgdW5pZm9ybURhdGEsIDEpIik7CitnZW5lcmF0ZUZsb2F0QXJyYXkoMTcp
OyAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkIsIGZhbHNlLCB1
bmlmb3JtRGF0YSwgMSkiKTsKKy8vIE5vbi1yZWN0YW5ndWxhciBtYXRyaXggdW5pZm9ybSBlbnRy
eSBwb2ludHMKK2dlbmVyYXRlRmxvYXQzMkFycmF5KDYpOword3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb25CLCBmYWxzZSwgdW5pZm9ybURhdGEpIik7Cit3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHRBLnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0
YSkiKTsKK2dlbmVyYXRlRmxvYXRBcnJheSg2KTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOword3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250
ZXh0QS51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb25CLCBmYWxzZSwgdW5pZm9ybURhdGEpIik7
CitnZW5lcmF0ZUZsb2F0MzJBcnJheSg4KTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybU1hdHJp
eDR4MmZ2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0
QS51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb25CLCBmYWxzZSwgdW5pZm9ybURhdGEpIik7Citn
ZW5lcmF0ZUZsb2F0QXJyYXkoOCk7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRB
LCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXg0eDJm
dihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0YSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5p
Zm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOworZ2VuZXJh
dGVGbG9hdDMyQXJyYXkoMTIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwg
Y29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlmb3JtTWF0cml4NHgzZnYo
bG9jYXRpb25CLCBmYWxzZSwgdW5pZm9ybURhdGEpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZv
cm1NYXRyaXgzeDRmdihsb2NhdGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0YSkiKTsKK2dlbmVyYXRl
RmxvYXRBcnJheSgxMik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250
ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm1NYXRyaXg0eDNmdihsb2Nh
dGlvbkIsIGZhbHNlLCB1bmlmb3JtRGF0YSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybU1h
dHJpeDN4NGZ2KGxvY2F0aW9uQiwgZmFsc2UsIHVuaWZvcm1EYXRhKSIpOworCisvLyBRdWVyeSBv
YmplY3RzCit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHRBLmRlbGV0ZVF1ZXJ5KHF1ZXJ5QikiKTsKK3d0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEu
aXNRdWVyeShxdWVyeUIpIik7CitzaG91bGRCZUZhbHNlKCJjb250ZXh0QS5pc1F1ZXJ5KHF1ZXJ5
QikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFM
SURfT1BFUkFUSU9OLCAiY29udGV4dEEuYmVnaW5RdWVyeShjb250ZXh0QS5BTllfU0FNUExFU19Q
QVNTRUQsIHF1ZXJ5QikiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNv
bnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0UXVlcnlQYXJhbWV0ZXIocXVl
cnlCLCBjb250ZXh0QS5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKSIpOworCisvLyBTYW1wbGVyIG9i
amVjdHMKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFM
SURfT1BFUkFUSU9OLCAiY29udGV4dEEuZGVsZXRlU2FtcGxlcihzYW1wbGVyQikiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4
dEEuaXNTYW1wbGVyKHNhbXBsZXJCKSIpOworc2hvdWxkQmVGYWxzZSgiY29udGV4dEEuaXNTYW1w
bGVyKHNhbXBsZXJCKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29u
dGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5zYW1wbGVyUGFyYW1ldGVyaShzYW1w
bGVyQiwgY29udGV4dEEuVEVYVFVSRV9XUkFQX1MsIGNvbnRleHRBLkNMQU1QX1RPX0VER0UpIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXJCLCBjb250ZXh0QS5U
RVhUVVJFX01JTl9MT0QsIC01MDAuNSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0U2FtcGxlclBh
cmFtZXRlcihzYW1wbGVyQiwgY29udGV4dEEuVEVYVFVSRV9XUkFQX1MpIik7CisKKy8vIFN5bmMg
b2JqZWN0cword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5W
QUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5kZWxldGVTeW5jKHN5bmNCKSIpOword3R1LnNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5p
c1N5bmMoc3luY0IpIik7CitzaG91bGRCZUZhbHNlKCJjb250ZXh0QS5pc1N5bmMoc3luY0IpIik7
Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHRBLmNsaWVudFdhaXRTeW5jKHN5bmNCLCAwLCAwKSIpOword3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0QS53YWl0U3luYyhzeW5jQiwgMCwgY29udGV4dEEuVElNRU9VVF9JR05PUkVEKSIp
OworCisvLyBUcmFuc2Zvcm0gZmVlZGJhY2sKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2sodHJhbnNmb3JtRmVlZGJhY2tCKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5pc1RyYW5zZm9ybUZl
ZWRiYWNrKHRyYW5zZm9ybUZlZWRiYWNrQikiKTsKK3Nob3VsZEJlRmFsc2UoImNvbnRleHRBLmlz
VHJhbnNmb3JtRmVlZGJhY2sodHJhbnNmb3JtRmVlZGJhY2tCKSIpOword3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0
QS5iaW5kVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dEEuVFJBTlNGT1JNX0ZFRURCQUNLLCB0cmFu
c2Zvcm1GZWVkYmFja0IpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBj
b250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3ModGZQcm9ncmFtQiwgWydvdXRfZGF0YSddLCBjb250ZXh0QS5TRVBBUkFURV9BVFRSSUJT
KSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodGZQcm9n
cmFtQiwgMCkiKTsKKworLy8gVW5pZm9ybSBidWZmZXIgb2JqZWN0cyBhbmQgdHJhbnNmb3JtIGZl
ZWRiYWNrIGJ1ZmZlcnMKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRl
eHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuYmluZEJ1ZmZlckJhc2UoY29udGV4dEEu
VU5JRk9STV9CVUZGRVIsIDAsIGJ1ZmZlckIpIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLmJpbmRCdWZm
ZXJSYW5nZShjb250ZXh0QS5VTklGT1JNX0JVRkZFUiwgMCwgYnVmZmVyQiwgMCwgNCkiKTsKK3d0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFU
SU9OLCAiY29udGV4dEEuZ2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbUIsIFsndV9tb2RlbFZpZXdQ
cm9qTWF0cml4J10pIik7Cit3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250
ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRBLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW1CLCBbMF0sIGNvbnRleHRBLlVOSUZPUk1fVFlQRSkiKTsKK3d0dS5zaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0
VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbUIsICdub25leGlzdGVudF91bmlmb3JtX2Jsb2NrX25h
bWUnKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5W
QUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIo
cHJvZ3JhbUIsIDAsIGNvbnRleHRBLlVOSUZPUk1fQkxPQ0tfQklORElORykiKTsKK3d0dS5zaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAi
Y29udGV4dEEuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtQiwgMCkiKTsKK3d0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9O
LCAiY29udGV4dEEudW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtQiwgMCwgMCkiKTsKKworLy8g
VmVydGV4IEFycmF5IG9iamVjdHMKK3d0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEs
IGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEuZGVsZXRlVmVydGV4QXJyYXko
dmVydGV4QXJyYXlCKSIpOword3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29u
dGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5pc1ZlcnRleEFycmF5KHZlcnRleEFycmF5QikiKTsK
K3Nob3VsZEJlRmFsc2UoImNvbnRleHRBLmlzVmVydGV4QXJyYXkodmVydGV4QXJyYXlCKSIpOwor
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0QS5iaW5kVmVydGV4QXJyYXkodmVydGV4QXJyYXlCKSIpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9jb250ZXh0L21ldGhvZHMtMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvbWV0aG9kcy0yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTBhNWI4MGQ3OTEyYmMyNmEyZDRmYTdlZjRmNjhkMDlhNzQ0NjVkMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L21ldGhvZHMtMi5odG1sCkBAIC0wLDAgKzEsMzA4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wyIE1ldGhvZHMgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRo
ZSBXZWJHTCBjb250ZXh0IGhhcyBhbGwgdGhlIG1ldGhvZHMgaW4gdGhlIHNwZWNpZmljYXRpb24u
Iik7CisKK3ZhciBtZXRob2RzID0gWworICAiZ2V0Q29udGV4dEF0dHJpYnV0ZXMiLAorICAiYWN0
aXZlVGV4dHVyZSIsCisgICJhdHRhY2hTaGFkZXIiLAorICAiYmluZEF0dHJpYkxvY2F0aW9uIiwK
KyAgImJpbmRCdWZmZXIiLAorICAiYmluZEZyYW1lYnVmZmVyIiwKKyAgImJpbmRSZW5kZXJidWZm
ZXIiLAorICAiYmluZFRleHR1cmUiLAorICAiYmxlbmRDb2xvciIsCisgICJibGVuZEVxdWF0aW9u
IiwKKyAgImJsZW5kRXF1YXRpb25TZXBhcmF0ZSIsCisgICJibGVuZEZ1bmMiLAorICAiYmxlbmRG
dW5jU2VwYXJhdGUiLAorICAiYnVmZmVyRGF0YSIsCisgICJidWZmZXJTdWJEYXRhIiwKKyAgImNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMiLAorICAiY2xlYXIiLAorICAiY2xlYXJDb2xvciIsCisgICJj
bGVhckRlcHRoIiwKKyAgImNsZWFyU3RlbmNpbCIsCisgICJjb2xvck1hc2siLAorICAiY29tcGls
ZVNoYWRlciIsCisgICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsCisgICJjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCIsCisgICJjb3B5VGV4SW1hZ2UyRCIsCisgICJjb3B5VGV4U3ViSW1hZ2UyRCIsCisg
ICJjcmVhdGVCdWZmZXIiLAorICAiY3JlYXRlRnJhbWVidWZmZXIiLAorICAiY3JlYXRlUHJvZ3Jh
bSIsCisgICJjcmVhdGVSZW5kZXJidWZmZXIiLAorICAiY3JlYXRlU2hhZGVyIiwKKyAgImNyZWF0
ZVRleHR1cmUiLAorICAiY3VsbEZhY2UiLAorICAiZGVsZXRlQnVmZmVyIiwKKyAgImRlbGV0ZUZy
YW1lYnVmZmVyIiwKKyAgImRlbGV0ZVByb2dyYW0iLAorICAiZGVsZXRlUmVuZGVyYnVmZmVyIiwK
KyAgImRlbGV0ZVNoYWRlciIsCisgICJkZWxldGVUZXh0dXJlIiwKKyAgImRlcHRoRnVuYyIsCisg
ICJkZXB0aE1hc2siLAorICAiZGVwdGhSYW5nZSIsCisgICJkZXRhY2hTaGFkZXIiLAorICAiZGlz
YWJsZSIsCisgICJkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiLAorICAiZHJhd0FycmF5cyIsCisg
ICJkcmF3RWxlbWVudHMiLAorICAiZW5hYmxlIiwKKyAgImVuYWJsZVZlcnRleEF0dHJpYkFycmF5
IiwKKyAgImZpbmlzaCIsCisgICJmbHVzaCIsCisgICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIs
CisgICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsCisgICJmcm9udEZhY2UiLAorICAiZ2VuZXJhdGVN
aXBtYXAiLAorICAiZ2V0QWN0aXZlQXR0cmliIiwKKyAgImdldEFjdGl2ZVVuaWZvcm0iLAorICAi
Z2V0QXR0YWNoZWRTaGFkZXJzIiwKKyAgImdldEF0dHJpYkxvY2F0aW9uIiwKKyAgImdldFBhcmFt
ZXRlciIsCisgICJnZXRCdWZmZXJQYXJhbWV0ZXIiLAorICAiZ2V0RXJyb3IiLAorICAiZ2V0RXh0
ZW5zaW9uIiwKKyAgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsCisgICJnZXRQ
cm9ncmFtUGFyYW1ldGVyIiwKKyAgImdldFByb2dyYW1JbmZvTG9nIiwKKyAgImdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlciIsCisgICJnZXRTaGFkZXJQYXJhbWV0ZXIiLAorICAiZ2V0U2hhZGVySW5m
b0xvZyIsCisgICJnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQiLAorICAiZ2V0U2hhZGVyU291cmNl
IiwKKyAgImdldFN1cHBvcnRlZEV4dGVuc2lvbnMiLAorICAiZ2V0VGV4UGFyYW1ldGVyIiwKKyAg
ImdldFVuaWZvcm0iLAorICAiZ2V0VW5pZm9ybUxvY2F0aW9uIiwKKyAgImdldFZlcnRleEF0dHJp
YiIsCisgICJnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQiLAorICAiaGludCIsCisgICJpc0J1ZmZlciIs
CisgICJpc0NvbnRleHRMb3N0IiwKKyAgImlzRW5hYmxlZCIsCisgICJpc0ZyYW1lYnVmZmVyIiwK
KyAgImlzUHJvZ3JhbSIsCisgICJpc1JlbmRlcmJ1ZmZlciIsCisgICJpc1NoYWRlciIsCisgICJp
c1RleHR1cmUiLAorICAibGluZVdpZHRoIiwKKyAgImxpbmtQcm9ncmFtIiwKKyAgInBpeGVsU3Rv
cmVpIiwKKyAgInBvbHlnb25PZmZzZXQiLAorICAicmVhZFBpeGVscyIsCisgICJyZW5kZXJidWZm
ZXJTdG9yYWdlIiwKKyAgInNhbXBsZUNvdmVyYWdlIiwKKyAgInNjaXNzb3IiLAorICAic2hhZGVy
U291cmNlIiwKKyAgInN0ZW5jaWxGdW5jIiwKKyAgInN0ZW5jaWxGdW5jU2VwYXJhdGUiLAorICAi
c3RlbmNpbE1hc2siLAorICAic3RlbmNpbE1hc2tTZXBhcmF0ZSIsCisgICJzdGVuY2lsT3AiLAor
ICAic3RlbmNpbE9wU2VwYXJhdGUiLAorICAidGV4SW1hZ2UyRCIsCisgICJ0ZXhQYXJhbWV0ZXJm
IiwKKyAgInRleFBhcmFtZXRlcmkiLAorICAidGV4U3ViSW1hZ2UyRCIsCisgICJ1bmlmb3JtMWYi
LAorICAidW5pZm9ybTFmdiIsCisgICJ1bmlmb3JtMWkiLAorICAidW5pZm9ybTFpdiIsCisgICJ1
bmlmb3JtMmYiLAorICAidW5pZm9ybTJmdiIsCisgICJ1bmlmb3JtMmkiLAorICAidW5pZm9ybTJp
diIsCisgICJ1bmlmb3JtM2YiLAorICAidW5pZm9ybTNmdiIsCisgICJ1bmlmb3JtM2kiLAorICAi
dW5pZm9ybTNpdiIsCisgICJ1bmlmb3JtNGYiLAorICAidW5pZm9ybTRmdiIsCisgICJ1bmlmb3Jt
NGkiLAorICAidW5pZm9ybTRpdiIsCisgICJ1bmlmb3JtTWF0cml4MmZ2IiwKKyAgInVuaWZvcm1N
YXRyaXgzZnYiLAorICAidW5pZm9ybU1hdHJpeDRmdiIsCisgICJ1c2VQcm9ncmFtIiwKKyAgInZh
bGlkYXRlUHJvZ3JhbSIsCisgICJ2ZXJ0ZXhBdHRyaWIxZiIsCisgICJ2ZXJ0ZXhBdHRyaWIxZnYi
LAorICAidmVydGV4QXR0cmliMmYiLAorICAidmVydGV4QXR0cmliMmZ2IiwKKyAgInZlcnRleEF0
dHJpYjNmIiwKKyAgInZlcnRleEF0dHJpYjNmdiIsCisgICJ2ZXJ0ZXhBdHRyaWI0ZiIsCisgICJ2
ZXJ0ZXhBdHRyaWI0ZnYiLAorICAidmVydGV4QXR0cmliUG9pbnRlciIsCisgICJ2aWV3cG9ydCIs
CisKKyAgLy8gV2ViR0wyIG1ldGhvZHMKKyAgImdldEJ1ZmZlclN1YkRhdGEiLAorICAiY29weUJ1
ZmZlclN1YkRhdGEiLAorICAiYmxpdEZyYW1lYnVmZmVyIiwKKyAgImZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyIiwKKyAgImdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyIiwKKyAgImludmFsaWRhdGVG
cmFtZWJ1ZmZlciIsCisgICJpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiLAorICAicmVhZEJ1ZmZl
ciIsCisgICJyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUiLAorICAidGV4SW1hZ2UzRCIs
CisgICJ0ZXhTdG9yYWdlMkQiLAorICAidGV4U3RvcmFnZTNEIiwKKyAgInRleFN1YkltYWdlM0Qi
LAorICAiY29weVRleFN1YkltYWdlM0QiLAorICAiY29tcHJlc3NlZFRleEltYWdlM0QiLAorICAi
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QiLAorICAiZ2V0RnJhZ0RhdGFMb2NhdGlvbiIsCisgICJ1
bmlmb3JtMXVpIiwKKyAgInVuaWZvcm0ydWkiLAorICAidW5pZm9ybTN1aSIsCisgICJ1bmlmb3Jt
NHVpIiwKKyAgInVuaWZvcm0xdWl2IiwKKyAgInVuaWZvcm0ydWl2IiwKKyAgInVuaWZvcm0zdWl2
IiwKKyAgInVuaWZvcm00dWl2IiwKKyAgInVuaWZvcm1NYXRyaXgyeDNmdiIsCisgICJ1bmlmb3Jt
TWF0cml4M3gyZnYiLAorICAidW5pZm9ybU1hdHJpeDJ4NGZ2IiwKKyAgInVuaWZvcm1NYXRyaXg0
eDJmdiIsCisgICJ1bmlmb3JtTWF0cml4M3g0ZnYiLAorICAidW5pZm9ybU1hdHJpeDR4M2Z2IiwK
KyAgInZlcnRleEF0dHJpYkk0aSIsCisgICJ2ZXJ0ZXhBdHRyaWJJNGl2IiwKKyAgInZlcnRleEF0
dHJpYkk0dWkiLAorICAidmVydGV4QXR0cmliSTR1aXYiLAorICAidmVydGV4QXR0cmliSVBvaW50
ZXIiLAorICAidmVydGV4QXR0cmliRGl2aXNvciIsCisgICJkcmF3QXJyYXlzSW5zdGFuY2VkIiwK
KyAgImRyYXdFbGVtZW50c0luc3RhbmNlZCIsCisgICJkcmF3UmFuZ2VFbGVtZW50cyIsCisgICJk
cmF3QnVmZmVycyIsCisgICJjbGVhckJ1ZmZlcml2IiwKKyAgImNsZWFyQnVmZmVydWl2IiwKKyAg
ImNsZWFyQnVmZmVyZnYiLAorICAiY2xlYXJCdWZmZXJmaSIsCisgICJjcmVhdGVRdWVyeSIsCisg
ICJkZWxldGVRdWVyeSIsCisgICJpc1F1ZXJ5IiwKKyAgImJlZ2luUXVlcnkiLAorICAiZW5kUXVl
cnkiLAorICAiZ2V0UXVlcnkiLAorICAiZ2V0UXVlcnlQYXJhbWV0ZXIiLAorICAiY3JlYXRlU2Ft
cGxlciIsCisgICJkZWxldGVTYW1wbGVyIiwKKyAgImlzU2FtcGxlciIsCisgICJiaW5kU2FtcGxl
ciIsCisgICJzYW1wbGVyUGFyYW1ldGVyaSIsCisgICJzYW1wbGVyUGFyYW1ldGVyZiIsCisgICJn
ZXRTYW1wbGVyUGFyYW1ldGVyIiwKKyAgImZlbmNlU3luYyIsCisgICJpc1N5bmMiLAorICAiZGVs
ZXRlU3luYyIsCisgICJjbGllbnRXYWl0U3luYyIsCisgICJ3YWl0U3luYyIsCisgICJnZXRTeW5j
UGFyYW1ldGVyIiwKKyAgImNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrIiwKKyAgImRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrIiwKKyAgImlzVHJhbnNmb3JtRmVlZGJhY2siLAorICAiYmluZFRyYW5zZm9y
bUZlZWRiYWNrIiwKKyAgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLAorICAiZW5kVHJhbnNmb3Jt
RmVlZGJhY2siLAorICAidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsCisgICJnZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmciLAorICAicGF1c2VUcmFuc2Zvcm1GZWVkYmFjayIsCisgICJyZXN1
bWVUcmFuc2Zvcm1GZWVkYmFjayIsCisgICJiaW5kQnVmZmVyQmFzZSIsCisgICJiaW5kQnVmZmVy
UmFuZ2UiLAorICAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsCisgICJnZXRVbmlmb3JtSW5kaWNlcyIs
CisgICJnZXRBY3RpdmVVbmlmb3JtcyIsCisgICJnZXRVbmlmb3JtQmxvY2tJbmRleCIsCisgICJn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIiLAorICAiZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZSIsCisgICJ1bmlmb3JtQmxvY2tCaW5kaW5nIiwKKyAgImNyZWF0ZVZlcnRleEFycmF5IiwK
KyAgImRlbGV0ZVZlcnRleEFycmF5IiwKKyAgImlzVmVydGV4QXJyYXkiLAorICAiYmluZFZlcnRl
eEFycmF5IiwKK107CisKKy8vIFByb3BlcnRpZXMgdG8gYmUgaWdub3JlZCBiZWNhdXNlIHRoZXkg
d2VyZSBhZGRlZCBpbiB2ZXJzaW9ucyBvZiB0aGUKKy8vIHNwZWMgdGhhdCBhcmUgYmFja3dhcmQt
Y29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lvbgordmFyIGlnbm9yZWRNZXRob2RzID0gWworICAv
LyBUaGVyZSBpcyBubyBvZmZpY2lhbCBzcGVjIGZvciB0aGUgY29tbWl0IEFQSSB5ZXQsIHRoZSBw
cm9wb3NhbCBsaW5rIGlzOgorICAvLyBodHRwczovL3dpa2kud2hhdHdnLm9yZy93aWtpL09mZnNj
cmVlbkNhbnZhcworICAiY29tbWl0IgorXTsKKworZnVuY3Rpb24gYXNzZXJ0RnVuY3Rpb24odiwg
ZikgeworICB0cnkgeworICAgIGlmICh0eXBlb2YgdltmXSAhPSAiZnVuY3Rpb24iKSB7CisgICAg
ICB0ZXN0RmFpbGVkKCJQcm9wZXJ0eSBlaXRoZXIgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGEg
ZnVuY3Rpb246ICIgKyBmKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9IGNhdGNoKGUpIHsKKyAgICB0ZXN0RmFpbGVkKCJU
cnlpbmcgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSAnIiArIGYgKyAiJyB0aHJldyBhbiBlcnJvcjog
IitlLnRvU3RyaW5nKCkpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0
Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIHBhc3NlZCA9IHRydWU7Citmb3IgKHZhciBpPTA7
IGk8bWV0aG9kcy5sZW5ndGg7IGkrKykgeworICB2YXIgciA9IGFzc2VydEZ1bmN0aW9uKGdsLCBt
ZXRob2RzW2ldKTsKKyAgcGFzc2VkID0gcGFzc2VkICYmIHI7Cit9CitpZiAocGFzc2VkKSB7Cisg
IHRlc3RQYXNzZWQoIkFsbCBXZWJHTCBtZXRob2RzIGZvdW5kLiIpOworfQordmFyIGV4dGVuZGVk
ID0gZmFsc2U7Citmb3IgKHZhciBpIGluIGdsKSB7CisgIGlmICh0eXBlb2YgZ2xbaV0gPT0gImZ1
bmN0aW9uIiAmJiBtZXRob2RzLmluZGV4T2YoaSkgPT0gLTEgJiYgaWdub3JlZE1ldGhvZHMuaW5k
ZXhPZihpKSA9PSAtMSkgeworICAgIGlmICghZXh0ZW5kZWQpIHsKKyAgICAgIGV4dGVuZGVkID0g
dHJ1ZTsKKyAgICAgIHRlc3RGYWlsZWQoIkFsc28gZm91bmQgdGhlIGZvbGxvd2luZyBleHRyYSBt
ZXRob2RzOiIpOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKGkpOworICB9Cit9CisKK2lmICghZXh0
ZW5kZWQpIHsKKyAgdGVzdFBhc3NlZCgiTm8gZXh0cmEgbWV0aG9kcyBmb3VuZCBvbiBXZWJHTCBj
b250ZXh0LiIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L25vLWV4cGVy
aW1lbnRhbC13ZWJnbDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9jb250ZXh0L25vLWV4cGVyaW1lbnRhbC13ZWJnbDIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NWFhOWNiMTZkNjliY2RhNTc1NmJlOTU1ZDk5N2E0YzFkNTEyZWE1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2NvbnRleHQvbm8tZXhwZXJpbWVudGFsLXdlYmdsMi5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMMiBDYW52YXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdo
dDogNTBweDsiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczJkIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wyIGltcGxlbWVudGF0aW9ucyBkbyBub3QgcmVzcG9u
ZCB0byBleHBlcmltZW50YWwtd2ViZ2wyLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CitzaG91bGRCZU51bGwoJ2NhbnZh
cy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wyIiknKTsKK2RlYnVnKCIiKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2V4dGVuc2lvbnMvZXh0LWNvbG9yLWJ1ZmZlci1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lv
bnMvZXh0LWNvbG9yLWJ1ZmZlci1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyZWViZDExM2E5MWI4
Yzg4YjE2NmI2MzljODIxZWY5MmVmNWRmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9u
cy9leHQtY29sb3ItYnVmZmVyLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSw1MDggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEVYVF9j
b2xvcl9idWZmZXJfZmxvYXQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5
bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyBmbG9hdGluZy1wb2ludCB0ZXh0
dXJlcyAtLT4KKzxzY3JpcHQgaWQ9InRlc3RGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJE
IHRleDsKK3VuaWZvcm0gdmVjNCBzdWJ0cmFjdG9yOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwor
dm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQp
OworICAgIGlmIChhYnMoY29sb3IuciAtIHN1YnRyYWN0b3IucikgKworICAgICAgICBhYnMoY29s
b3IuZyAtIHN1YnRyYWN0b3IuZykgKworICAgICAgICBhYnMoY29sb3IuYiAtIHN1YnRyYWN0b3Iu
YikgKworICAgICAgICBhYnMoY29sb3IuYSAtIHN1YnRyYWN0b3IuYSkgPCAxNi4wKSB7CisgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRpbmctcG9pbnQg
cmVuZGVyIHRhcmdldHMgLS0+Cis8c2NyaXB0IGlkPSJmbG9hdGluZ1BvaW50RnJhZ21lbnRTaGFk
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEwMDAuMCwgMTAwMC4wLCAxMDAwLjAsIDEwMDAuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFsbG9jYXRlVGV4dHVy
ZSgpCit7CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleHR1cmUgcGFyYW1ldGVyIHNldHVwIHNo
b3VsZCBzdWNjZWVkIik7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
UmVuZGVyaW5nUmVzdWx0cygpCit7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAw
LCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK2Z1bmN0aW9uIGFycmF5VG9TdHJpbmco
YXJyLCBzaXplKSB7CisgICAgdmFyIG15U2l6ZTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIG15
U2l6ZSA9IGFyci5sZW5ndGg7CisgICAgZWxzZQorICAgICAgICBteVNpemUgPSBzaXplOworICAg
IHZhciBvdXQgPSAiWyI7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG15U2l6ZTsgKytpaSkg
eworICAgIGlmIChpaSA+IDApIHsKKyAgICAgICAgb3V0ICs9ICIsICI7CisgICAgfQorICAgIG91
dCArPSBhcnJbaWldOworICAgIH0KKyAgICByZXR1cm4gb3V0ICsgIl0iOworfQorCitmdW5jdGlv
biBydW5SZWFkYmFja1Rlc3QodGVzdFByb2dyYW0sIHN1YnRyYWN0b3IpCit7CisgICAgLy8gVmVy
aWZ5IGZsb2F0aW5nIHBvaW50IHJlYWRiYWNrCisgICAgZGVidWcoIkNoZWNraW5nIHJlYWRiYWNr
IG9mIGZsb2F0aW5nLXBvaW50IHZhbHVlcyIpOworICAgIHZhciBidWYgPSBuZXcgRmxvYXQzMkFy
cmF5KDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuRkxPQVQg
LCBidWYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZFBp
eGVscyBmcm9tIGZsb2F0aW5nLXBvaW50IGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkIik7Cisg
ICAgdmFyIG9rID0gdHJ1ZTsKKyAgICB2YXIgdG9sZXJhbmNlID0gOC4wOyAvLyBUT0RPOiBmYWN0
b3IgdGhpcyBvdXQgZnJvbSBib3RoIHRoaXMgdGVzdCBhbmQgdGhlIHN1YnRyYWN0b3Igc2hhZGVy
IGFib3ZlLgorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBidWYubGVuZ3RoOyArK2lpKSB7Cisg
ICAgICAgIGlmIChNYXRoLmFicyhidWZbaWldIC0gc3VidHJhY3RvcltpaV0pID4gdG9sZXJhbmNl
KSB7CisgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChvaykgeworICAgICAgICB0ZXN0UGFzc2VkKCJyZWFkUGl4ZWxzIG9mIGZsb2F0
LXR5cGUgZGF0YSBmcm9tIGZsb2F0aW5nLXBvaW50IGZyYW1lYnVmZmVyIHN1Y2NlZWRlZCIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRQaXhlbHMgb2YgZmxvYXQtdHlw
ZSBkYXRhIGZyb20gZmxvYXRpbmctcG9pbnQgZnJhbWVidWZmZXIgZmFpbGVkOiBleHBlY3RlZCAi
CisgICAgICAgICAgICAgICAgICAgKyBhcnJheVRvU3RyaW5nKHN1YnRyYWN0b3IsIDQpICsgIiwg
Z290ICIgKyBhcnJheVRvU3RyaW5nKGJ1ZikpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuRmxv
YXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChlbmFibGVkLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0ZXN0UHJvZ3JhbSwgbnVtYmVyT2ZDaGFubmVscywgc3VidHJhY3RvciwgdGV4U3ViSW1hZ2VD
b3ZlcikKK3sKKyAgICB2YXIgZm9ybWF0U3RyaW5nID0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBp
bnRlcm5hbEZvcm1hdCk7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIGZsb2F0
aW5nLXBvaW50ICIgKyBmb3JtYXRTdHJpbmcgKyAiIHRleHR1cmUgcmVuZGVyIHRhcmdldCIgKyAo
dGV4U3ViSW1hZ2VDb3ZlciA+IDAgPyAiIGFmdGVyIGNhbGxpbmcgdGV4U3ViSW1hZ2UiIDogIiIp
KTsKKworICAgIHZhciB0ZXh0dXJlID0gYWxsb2NhdGVUZXh0dXJlKCk7CisgICAgdmFyIHdpZHRo
ID0gMjsKKyAgICB2YXIgaGVpZ2h0ID0gMjsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIGdsLkZMT0FU
LCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZsb2F0
aW5nLXBvaW50IHRleHR1cmUgYWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8g
VHJ5IHRvIHVzZSB0aGlzIHRleHR1cmUgYXMgYSByZW5kZXIgdGFyZ2V0LgorICAgIHZhciBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgdmFyIGNvbXBsZXRl
U3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAg
aWYgKCFlbmFibGVkKSB7CisgICAgICAgIGlmIChjb21wbGV0ZVN0YXR1cyA9PSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURSAmJiAhZW5hYmxlZCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImZsb2F0
aW5nLXBvaW50ICIgKyBmb3JtYXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBi
ZSBzdXBwb3J0ZWQgd2l0aG91dCBlbmFibGluZyBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImZsb2F0aW5nLXBvaW50ICIgKyBm
b3JtYXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgd2l0
aG91dCBlbmFibGluZyBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoY29tcGxldGVTdGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZmxvYXRpbmctcG9pbnQgIiArIGZvcm1hdFN0cmlu
ZyArICIgcmVuZGVyIHRhcmdldCBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAodGV4U3ViSW1hZ2VDb3ZlciA+IDApIHsKKyAgICAgICAgLy8gRW5zdXJl
IHRoYXQgcmVwbGFjaW5nIHRoZSB3aG9sZSB0ZXh0dXJlIG9yIGEgcGFydCBvZiBpdCB3aXRoIHRl
eFN1YkltYWdlMkQgZG9lc24ndCBhZmZlY3QgcmVuZGVyYWJpbGl0eQorICAgICAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcg
RmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogbnVtYmVyT2ZDaGFubmVscyAqIHRleFN1Yklt
YWdlQ292ZXIpOworICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAs
IDAsIHdpZHRoLCBoZWlnaHQgKiB0ZXhTdWJJbWFnZUNvdmVyLCBmb3JtYXQsIGdsLkZMT0FULCBk
YXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhT
dWJJbWFnZTJEIHNob3VsZCBzdWNjZWVkIGlmIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgaXMgZW5h
YmxlZCIpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAg
ICAgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZW5kZXIg
dGFyZ2V0IHN1cHBvcnQgY2hhbmdlZCBhZnRlciBjYWxsaW5nIHRleFN1YkltYWdlMkQiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciByZW5kZXJQcm9n
cmFtID0KKyAgICAgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbd3R1LnNpbXBsZVZlcnRleFNoYWRlciwgImZsb2F0aW5nUG9pbnRGcmFnbWVudFNoYWRl
ciJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndlBvc2l0aW9uJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgWzBdKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIHRvIGZs
b2F0aW5nLXBvaW50IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIE5vdyBzYW1w
bGUgZnJvbSB0aGUgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBhbmQgdmVyaWZ5IHdlIGdvdCB0aGUg
Y29ycmVjdCB2YWx1ZXMuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBu
dWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBn
bC51c2VQcm9ncmFtKHRlc3RQcm9ncmFtKTsKKyAgICBnbC51bmlmb3JtMWkoZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAidGV4IiksIDApOworICAgIGdsLnVuaWZvcm00ZnYoZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAic3VidHJhY3RvciIpLCBzdWJ0cmFjdG9y
KTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIGZyb20gZmxvYXRpbmctcG9pbnQgdGV4
dHVyZSBzaG91bGQgc3VjY2VlZCIpOworICAgIGNoZWNrUmVuZGVyaW5nUmVzdWx0cygpOworCisg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIHJ1blJlYWRi
YWNrVGVzdCh0ZXN0UHJvZ3JhbSwgc3VidHJhY3Rvcik7Cit9CisKK2Z1bmN0aW9uIHJ1bkZsb2F0
UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChlbmFibGVkLCBpbnRlcm5hbEZvcm1hdCwgdGVz
dFByb2dyYW0sIG51bWJlck9mQ2hhbm5lbHMsIHN1YnRyYWN0b3IpCit7CisgICAgdmFyIGZvcm1h
dFN0cmluZyA9IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgIHZh
ciBzYW1wbGVzID0gWzBdOworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIHNhbXBsZXMgPSBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChnbC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihn
bC5SRU5ERVJCVUZGRVIsIGludGVybmFsRm9ybWF0LCBnbC5TQU1QTEVTKSk7CisgICAgICAgIHNh
bXBsZXMucHVzaCgwKTsKKyAgICB9CisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgc2FtcGxl
cy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoInRl
c3RpbmcgZmxvYXRpbmctcG9pbnQgIiArIGZvcm1hdFN0cmluZyArICIgcmVuZGVyYnVmZmVyIHJl
bmRlciB0YXJnZXQgd2l0aCBudW1iZXIgb2Ygc2FtcGxlcyAiICsgc2FtcGxlc1tuZHhdKTsKKwor
ICAgICAgICB2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAg
ICAgdmFyIHdpZHRoID0gMjsKKyAgICAgICAgdmFyIGhlaWdodCA9IDI7CisgICAgICAgIGdsLmJp
bmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7CisgICAgICAgIGlm
IChzYW1wbGVzW25keF0gPT0gMCkKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Z2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShnbC5S
RU5ERVJCVUZGRVIsIHNhbXBsZXNbbmR4XSwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImZsb2F0aW5nLXBvaW50IHJlbmRlcmJ1ZmZlciBhbGxv
Y2F0aW9uIHNob3VsZCBmYWlsIGlmIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgaXMgbm90IGVuYWJs
ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZmxvYXRpbmctcG9pbnQgcmVu
ZGVyYnVmZmVyIGFsbG9jYXRpb24gc2hvdWxkIHN1Y2NlZWQgaWYgRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCBpcyBlbmFibGVkIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBUcnkgdG8gdXNlIHRo
aXMgcmVuZGVyYnVmZmVyIGFzIGEgcmVuZGVyIHRhcmdldC4KKyAgICAgICAgdmFyIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yYnVm
ZmVyKTsKKworICAgICAgICB2YXIgY29tcGxldGVTdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgaWYgKGNvbXBsZXRlU3RhdHVzICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmbG9hdGlu
Zy1wb2ludCAiICsgZm9ybWF0U3RyaW5nICsgIiByZW5kZXIgdGFyZ2V0IG5vdCBzdXBwb3J0ZWQi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVzb2x2ZUNv
bG9yUmJvID0gbnVsbDsKKyAgICAgICAgdmFyIHJlc29sdmVGYm8gPSBudWxsOworICAgICAgICBp
ZiAoc2FtcGxlc1tuZHhdID4gMCkgeworICAgICAgICAgICAgcmVzb2x2ZUNvbG9yUmJvID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgcmVzb2x2ZUNvbG9yUmJvKTsKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgICAgICAgICByZXNvbHZlRmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
ICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgcmVzb2x2ZUZibyk7
CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVzb2x2ZUNvbG9yUmJvKTsK
KyAgICAgICAgICAgIGNvbXBsZXRlU3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBpZiAoY29tcGxldGVTdGF0dXMgIT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQg
dG8gY3JlYXRlIHJlc29sdmUgZnJhbWVidWZmZXIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5jbGVhckNvbG9yKDEwMDAuMCwgMTAwMC4w
LCAxMDAwLjAsIDEwMDAuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgICAgIGlmIChzYW1wbGVzW25keF0gPiAwKSB7CisgICAgICAgICAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgcmVzb2x2ZUZibyk7CisgICAgICAgICAg
ICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgd2lkdGgsIGhl
aWdodCwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgcmVzb2x2ZUZibyk7CisgICAgICAg
IH0KKyAgICAgICAgcnVuUmVhZGJhY2tUZXN0KHRlc3RQcm9ncmFtLCBzdWJ0cmFjdG9yKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1blJHQjE2Rk5lZ2F0aXZlVGVzdCgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIFJHQjE2RiBpc24ndCBjb2xvciByZW5kZXJhYmxlIik7
CisKKyAgICB2YXIgdGV4dHVyZSA9IGFsbG9jYXRlVGV4dHVyZSgpOworICAgIHZhciB3aWR0aCA9
IDI7CisgICAgdmFyIGhlaWdodCA9IDI7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0IxNkYsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQiwgZ2wuRkxPQVQsIG51bGwp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiUkdCMTZGIHRleHR1
cmUgYWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8gVHJ5IHRvIHVzZSB0aGlz
IHRleHR1cmUgYXMgYSByZW5kZXIgdGFyZ2V0LgorICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsK
KyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgdmFyIGNvbXBsZXRlU3RhdHVzID0gZ2wuY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgaWYgKGNvbXBsZXRlU3Rh
dHVzID09IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICB0ZXN0RmFpbGVkKCJSR0Ix
NkYgcmVuZGVyIHRhcmdldCBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCB3aXRoIG9yIHdpdGhvdXQg
ZW5hYmxpbmcgRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dFBhc3NlZCgiUkdCMTZGIHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgd2l0
aCBvciB3aXRob3V0IGVuYWJsaW5nIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKTsKKyAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleHR1cmUpOworCisgICAgdmFyIGNvbG9yYnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIs
IGNvbG9yYnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkdCMTZGLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX0VOVU0sICJSR0IxNkYgcmVuZGVyYnVmZmVyIGFsbG9jYXRpb24gc2hvdWxk
IGZhaWwgd2l0aCBvciB3aXRob3V0IGVuYWJsaW5nIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKTsK
KyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wu
ZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yYnVmZmVyKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsK
K30KKworZnVuY3Rpb24gcnVuVW5pcXVlT2JqZWN0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQgZ2V0RXh0ZW5zaW9uKCkgcmV0dXJucyB0aGUgc2FtZSBv
YmplY3QgZWFjaCB0aW1lIik7CisgICAgZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfY29sb3JfYnVmZmVy
X2Zsb2F0IikubXlQcm9wZXJ0eSA9IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29sbGVjdEdhcmJhZ2Uo
KTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0
IikubXlQcm9wZXJ0eScsICcyJyk7Cit9CisKK2Z1bmN0aW9uIHJ1bkludGVybmFsRm9ybWF0UXVl
cnlUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgdGhlIGludGVy
bmFsIGZvcm1hdCBxdWVyeSIpOworCisgICAgdmFyIG1heFNhbXBsZXMgPSBnbC5nZXRQYXJhbWV0
ZXIoZ2wuTUFYX1NBTVBMRVMpOworICAgIHZhciBmb3JtYXRzID0gbmV3IEFycmF5KGdsLlJHQkEx
NkYsIGdsLlIzMkYsIGdsLlJHMzJGLCBnbC5SR0JBMzJGLCBnbC5SMTZGLCBnbC5SRzE2RiwgZ2wu
UjExRl9HMTFGX0IxMEYpOworICAgIHZhciBmaXJzdE11bHRpT25seUZvcm1hdCA9IDQ7CisgICAg
Zm9yICh2YXIgZm10ID0gMDsgZm10IDwgZm9ybWF0cy5sZW5ndGg7ICsrZm10KSB7CisgICAgICAg
IHZhciBzYW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCBmb3JtYXRzW2ZtdF0sIGdsLlNBTVBMRVMpOworICAgICAgICBpZiAoZm10ID49IGZpcnN0
TXVsdGlPbmx5Rm9ybWF0ICYmIChzYW1wbGVzLmxlbmd0aCA9PSAwIHx8IHNhbXBsZXNbMF0gPCBt
YXhTYW1wbGVzKSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgidGhlIG1heGltdW0gdmFsdWUg
aW4gU0FNUExFUyBzaG91bGQgYmUgYXQgbGVhc3QgIiArIG1heFNhbXBsZXMpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHByZXZTYW1wbGVDb3VudCA9IDA7
CisgICAgICAgIHZhciBzYW1wbGVDb3VudDsKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgc2FtcGxlcy5sZW5ndGg7ICsrbmR4LCBwcmV2U2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudCkg
eworICAgICAgICAgICAgc2FtcGxlQ291bnQgPSBzYW1wbGVzW25keF07CisgICAgICAgICAgICAv
LyBzYW1wbGUgY291bnQgbXVzdCBiZSA+IDAKKyAgICAgICAgICAgIGlmIChzYW1wbGVDb3VudCA8
PSAwKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgc2FtcGxlIGNvdW50
IHRvIGJlIGF0IGxlYXN0IG9uZTsgZ290ICIgKyBzYW1wbGVDb3VudCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzYW1wbGVzIG11c3Qg
YmUgb3JkZXJlZCBkZXNjZW5kaW5nCisgICAgICAgICAgICBpZiAobmR4ID4gMCAmJiBzYW1wbGVD
b3VudCA+PSBwcmV2U2FtcGxlQ291bnQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJF
eHBlY3RlZCBzYW1wbGUgY291bnQgdG8gYmUgb3JkZXJlZCBpbiBkZXNjZW5kaW5nIG9yZGVyOyBn
b3QgIiArIHByZXZTYW1wbGVDb3VudCArICIgYXQgaW5kZXggIiArIChuZHggLSAxKSArICIsIGFu
ZCAiICsgc2FtcGxlQ291bnQgKyAiIGF0IGluZGV4ICIgKyBuZHgpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB0ZXN0UGFzc2Vk
KCJJbnRlcm5hbCBmb3JtYXQgcXVlcnkgc3VjY2VlZGVkIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkNv
cHlUZXhJbWFnZVRlc3QoZW5hYmxlZCkKK3sKKyAgICB2YXIgd2lkdGggPSAxNjsKKyAgICB2YXIg
aGVpZ2h0ID0gMTY7CisgICAgdmFyIGxldmVsID0gMDsKKyAgICB2YXIgY2FzZXMgPSBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUkdCQTE2RiIsCisgICAgICAgICAg
ICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJIQUxGX0ZMT0FUIiwKKyAgICAg
ICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlIxNkYiLAorICAgICAgICAgICAgZGF0YTogbmV3
IFVpbnQxNkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCkKKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMzJGIiwKKyAgICAgICAgICAgIGZvcm1h
dDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIkZMT0FUIiwKKyAgICAgICAgICAgIGRlc3RJ
bnRlcm5hbGZvcm1hdDogIlIzMkYiLAorICAgICAgICAgICAgZGF0YTogbmV3IEZsb2F0MzJBcnJh
eSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IGludGVybmFsZm9ybWF0OiAiUkdCQTE2RiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwK
KyAgICAgICAgICAgIHR5cGU6ICJIQUxGX0ZMT0FUIiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5h
bGZvcm1hdDogIlJHMTZGIiwKKyAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50MTZBcnJheSh3aWR0
aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVy
bmFsZm9ybWF0OiAiUkdCQTMyRiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAg
ICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAgICAgICBkZXN0SW50ZXJuYWxmb3JtYXQ6ICJS
RzMyRiIsCisgICAgICAgICAgICBkYXRhOiBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0
ICogNCkKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6
ICJSR0JBMTZGIiwKKyAgICAgICAgICAgIGZvcm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlw
ZTogIkhBTEZfRkxPQVQiLAorICAgICAgICAgICAgZGVzdEludGVybmFsZm9ybWF0OiAiUkdCMTZG
IiwKKyAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50MTZBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQp
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUkdC
QTMyRiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJG
TE9BVCIsCisgICAgICAgICAgICBkZXN0SW50ZXJuYWxmb3JtYXQ6ICJSR0IzMkYiLAorICAgICAg
ICAgICAgZGF0YTogbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUkdCQTE2RiIsCisg
ICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJIQUxGX0ZMT0FU
IiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlJHQkExNkYiLAorICAgICAgICAg
ICAgZGF0YTogbmV3IFVpbnQxNkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCkKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMzJGIiwKKyAgICAg
ICAgICAgIGZvcm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIkZMT0FUIiwKKyAgICAg
ICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlJHQkEzMkYiLAorICAgICAgICAgICAgZGF0YTog
bmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUjExRl9HMTFGX0IxMEYiLAorICAgICAg
ICAgICAgZm9ybWF0OiAiUkdCIiwKKyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAg
ICAgICBkZXN0SW50ZXJuYWxmb3JtYXQ6ICJSMTFGX0cxMUZfQjEwRiIsCisgICAgICAgICAgICBk
YXRhOiBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogMykKKyAgICAgICAgfQorICAg
IF07CisgICAgY2FzZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0Y2FzZSkgeworICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgIGRlYnVnKCJUZXN0aW5nIENvcHlUZXhJbWFnZTJEIGZvciBpbnRlcm5h
bGZvcm1hdDogIiArIHRlc3RjYXNlLmRlc3RJbnRlcm5hbGZvcm1hdCk7CisKKyAgICAgICAgdmFy
IGludGVybmFsZm9ybWF0ID0gZ2xbdGVzdGNhc2UuaW50ZXJuYWxmb3JtYXRdOworICAgICAgICB2
YXIgZm9ybWF0ID0gZ2xbdGVzdGNhc2UuZm9ybWF0XTsKKyAgICAgICAgdmFyIHR5cGUgPSBnbFt0
ZXN0Y2FzZS50eXBlXTsKKyAgICAgICAgdmFyIGRlc3RJbnRlcm5hbGZvcm1hdCA9IGdsW3Rlc3Rj
YXNlLmRlc3RJbnRlcm5hbGZvcm1hdF07CisgICAgICAgIHZhciB0ZXhTcmMgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleFNyYyk7
CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICB2YXIgZGF0
YSA9IHRlc3RjYXNlLmRhdGE7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgICAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfMkQsIHRleFNyYywgbGV2ZWwpOworICAgICAgICB2YXIgdGV4RGVzdCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
RGVzdCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0
dXAgZnJhbWVidWZmZXIgd2l0aCB0ZXh0dXJlIHNob3VsZCBzdWNjZWVkLiIpOworICAgICAgICBp
ZiAoZW5hYmxlZCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAg
ICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCBsZXZlbCwgZGVzdEludGVy
bmFsZm9ybWF0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwKTsKKyAgICAgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiQ29weVRleEltYWdlMkQgc2hvdWxkIHN1Y2Nl
ZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9BVFRBQ0hNRU5UIik7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCBsZXZlbCwgZGVzdEludGVybmFsZm9ybWF0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAw
KTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0VOVU0s
IGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXSwgIkNvcHlUZXhJbWFnZTJEIHNob3Vs
ZCBmYWlsLiIpOworICAgICAgICB9CisKKyAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhEZXN0
KTsKKyAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhTcmMpOworICAgICAgICBnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYm8pOworICAgIH0pOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IGV4
dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7
CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlz
dCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKwor
ICB2YXIgdGV4dHVyZWRTaGFkZXJzID0gWworICAgICAgd3R1LnNpbXBsZVRleHR1cmVWZXJ0ZXhT
aGFkZXIsCisgICAgICAidGVzdEZyYWdtZW50U2hhZGVyIgorICBdOworICB2YXIgdGVzdFByb2dy
YW0gPQorICAgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZWRTaGFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICBbJ3ZQb3NpdGlvbicsICd0
ZXhDb29yZDAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWzAsIDFdKTsKKyAgdmFyIHF1YWRQ
YXJhbWV0ZXJzID0gd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworCisgIC8vIEVuc3VyZSB0
aGVzZSBmb3JtYXRzIGNhbid0IGJlIHVzZWQgZm9yIHJlbmRlcmluZyBpZiB0aGUgZXh0ZW5zaW9u
IGlzIGRpc2FibGVkCisgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGds
LlIxNkYsIGdsLlJFRCk7CisgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QoZmFsc2Us
IGdsLlJHMTZGLCBnbC5SRyk7CisgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QoZmFs
c2UsIGdsLlJHQkExNkYsIGdsLlJHQkEpOworICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRU
ZXN0KGZhbHNlLCBnbC5SMzJGLCBnbC5SRUQpOworICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJn
ZXRUZXN0KGZhbHNlLCBnbC5SRzMyRiwgZ2wuUkcpOworICBydW5GbG9hdFRleHR1cmVSZW5kZXJU
YXJnZXRUZXN0KGZhbHNlLCBnbC5SR0JBMzJGLCBnbC5SR0JBKTsKKyAgcnVuRmxvYXRUZXh0dXJl
UmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wuUjExRl9HMTFGX0IxMEYsIGdsLlJHQik7CisKKyAg
cnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5SMTZGKTsKKyAg
cnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5SRzE2Rik7Cisg
IHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wuUkdCQTE2Rik7
CisgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wuUjMyRik7
CisgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wuUkczMkYp
OworICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlJHQkEz
MkYpOworICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlIx
MUZfRzExRl9CMTBGKTsKKworICAvLyBFbnN1cmUgUkdCMTZGIGNhbid0IGJlIHVzZWQgZm9yIHJl
bmRlcmluZy4KKyAgcnVuUkdCMTZGTmVnYXRpdmVUZXN0KCk7CisKKyAgcnVuQ29weVRleEltYWdl
VGVzdChmYWxzZSk7CisKKyAgaWYgKCFnbC5nZXRFeHRlbnNpb24oIkVYVF9jb2xvcl9idWZmZXJf
ZmxvYXQiKSkgeworICAgICAgdGVzdFBhc3NlZCgiTm8gRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCBz
dXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgfSBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQo
IlN1Y2Nlc3NmdWxseSBlbmFibGVkIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgZXh0ZW5zaW9uIik7
CisKKyAgICAgIHJ1bkludGVybmFsRm9ybWF0UXVlcnlUZXN0KCk7CisKKyAgICAgIHJ1bkZsb2F0
VGV4dHVyZVJlbmRlclRhcmdldFRlc3QodHJ1ZSwgZ2wuUjE2RiwgZ2wuUkVELCB0ZXN0UHJvZ3Jh
bSwgMSwgWzEwMDAsIDEsIDEsIDFdLCAwKTsKKyAgICAgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRh
cmdldFRlc3QodHJ1ZSwgZ2wuUkcxNkYsIGdsLlJHLCB0ZXN0UHJvZ3JhbSwgMiwgWzEwMDAsIDEw
MDAsIDEsIDFdLCAwKTsKKyAgICAgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QodHJ1
ZSwgZ2wuUkdCQTE2RiwgZ2wuUkdCQSwgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAw
LCAxMDAwXSwgMCk7CisgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRydWUs
IGdsLlIzMkYsIGdsLlJFRCwgdGVzdFByb2dyYW0sIDEsIFsxMDAwLCAxLCAxLCAxXSwgMCk7Cisg
ICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRydWUsIGdsLlJHMzJGLCBnbC5S
RywgdGVzdFByb2dyYW0sIDIsIFsxMDAwLCAxMDAwLCAxLCAxXSwgMCk7CisgICAgICBydW5GbG9h
dFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRydWUsIGdsLlJHQkEzMkYsIGdsLlJHQkEsIHRlc3RQ
cm9ncmFtLCA0LCBbMTAwMCwgMTAwMCwgMTAwMCwgMTAwMF0sIDApOworICAgICAgcnVuRmxvYXRU
ZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SMTFGX0cxMUZfQjEwRiwgZ2wuUkdCLCB0
ZXN0UHJvZ3JhbSwgMywgWzEwMDAsIDEwMDAsIDEwMDAsIDFdLCAwKTsKKyAgICAgIHJ1bkZsb2F0
VGV4dHVyZVJlbmRlclRhcmdldFRlc3QodHJ1ZSwgZ2wuUkdCQTMyRiwgZ2wuUkdCQSwgdGVzdFBy
b2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAwXSwgMSk7CisgICAgICBydW5GbG9hdFRl
eHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRydWUsIGdsLlJHQkEzMkYsIGdsLlJHQkEsIHRlc3RQcm9n
cmFtLCA0LCBbMTAwMCwgMTAwMCwgMTAwMCwgMTAwMF0sIDAuNSk7CisKKyAgICAgIHJ1bkZsb2F0
UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SMTZGLCB0ZXN0UHJvZ3JhbSwg
MSwgWzEwMDAsIDEsIDEsIDFdKTsKKyAgICAgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFy
Z2V0VGVzdCh0cnVlLCBnbC5SRzE2RiwgdGVzdFByb2dyYW0sIDIsIFsxMDAwLCAxMDAwLCAxLCAx
XSk7CisgICAgICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QodHJ1ZSwgZ2wu
UkdCQTE2RiwgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAwXSk7CisgICAg
ICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QodHJ1ZSwgZ2wuUjMyRiwgdGVz
dFByb2dyYW0sIDEsIFsxMDAwLCAxLCAxLCAxXSk7CisgICAgICBydW5GbG9hdFJlbmRlcmJ1ZmZl
clJlbmRlclRhcmdldFRlc3QodHJ1ZSwgZ2wuUkczMkYsIHRlc3RQcm9ncmFtLCAyLCBbMTAwMCwg
MTAwMCwgMSwgMV0pOworICAgICAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0
KHRydWUsIGdsLlJHQkEzMkYsIHRlc3RQcm9ncmFtLCA0LCBbMTAwMCwgMTAwMCwgMTAwMCwgMTAw
MF0pOworICAgICAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KHRydWUsIGds
LlIxMUZfRzExRl9CMTBGLCB0ZXN0UHJvZ3JhbSwgMywgWzEwMDAsIDEwMDAsIDEwMDAsIDFdKTsK
KworICAgICAgLy8gRW5zdXJlIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgZG9lcyBub3QgZW5hYmxl
IFJHQjE2RiBhcyBjb2xvciByZW5kZXJhYmxlLgorICAgICAgcnVuUkdCMTZGTmVnYXRpdmVUZXN0
KCk7CisKKyAgICAgIHJ1bkNvcHlUZXhJbWFnZVRlc3QodHJ1ZSk7CisKKyAgICAgIHJ1blVuaXF1
ZU9iamVjdFRlc3QoKTsKKyAgfQorfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNp
b25zL2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvZXh0LWNv
bG9yLWJ1ZmZlci1oYWxmLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNlZDc2ZTBmZDM2Yzk4ZTU0
ZDU1NzQ4YTdmYTg1OWYzYzk2ZjdjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4
dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAyMCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIDIgRVhU
X2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PsKgCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgdmVyc2lvbiA9IDI7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxv
YXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4
dC1kaXNqb2ludC10aW1lci1xdWVyeS13ZWJnbDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1kaXNq
b2ludC10aW1lci1xdWVyeS13ZWJnbDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzM3ZDQzOThmZDA4MDVl
NmY4ZWQ5YzQxM2QwMzAyNzg4Mjk2Y2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMv
ZXh0LWRpc2pvaW50LXRpbWVyLXF1ZXJ5LXdlYmdsMi5odG1sCkBAIC0wLDAgKzEsMzE2IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCAyIEVYVF9kaXNqb2ludF90aW1lcl9xdWVyeV93ZWJnbDIgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52
YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhl
IEVYVF9kaXNqb2ludF90aW1lcl9xdWVyeV93ZWJnbDIgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFp
bGFibGUuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciBxdWVyeSA9IG51bGw7
Cit2YXIgcXVlcnkyID0gbnVsbDsKK3ZhciBlbGFwc2VkX3F1ZXJ5ID0gbnVsbDsKK3ZhciB0aW1l
c3RhbXBfcXVlcnkxID0gbnVsbDsKK3ZhciB0aW1lc3RhbXBfcXVlcnkyID0gbnVsbDsKK3ZhciBh
dmFpbGFiaWxpdHlfcmV0cnkgPSA1MDA7Cit2YXIgdGltZXN0YW1wX2NvdW50ZXJfYml0cyA9IDA7
CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7CisgICAgZmluaXNoVGVzdCgpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJH
TCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgLy8gUXVlcnkgdGhlIGV4dGVuc2lvbiBhbmQgc3Rv
cmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAorICAgIGV4dCA9IHd0dS5nZXRF
eHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIkVYVF9kaXNqb2ludF90aW1lcl9xdWVyeV93
ZWJnbDIiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBFWFRfZGlz
am9pbnRfdGltZXJfcXVlcnlfd2ViZ2wyIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuU2FuaXR5VGVzdHMo
KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgICAg
ICAgIC8vIENsZWFyIGRpc2pvaW50IHZhbHVlLgorICAgICAgICBnbC5nZXRQYXJhbWV0ZXIoZXh0
LkdQVV9ESVNKT0lOVF9FWFQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUik7CisKKyAgICAgICAgcnVuRWxhcHNlZFRpbWVUZXN0KCk7CisgICAgICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgICAgICB0aW1lc3RhbXBfY291
bnRlcl9iaXRzID0gZ2wuZ2V0UXVlcnkoZXh0LlRJTUVTVEFNUF9FWFQsIGV4dC5RVUVSWV9DT1VO
VEVSX0JJVFNfRVhUKTsKKyAgICAgICAgaWYgKHRpbWVzdGFtcF9jb3VudGVyX2JpdHMgPiAwKSB7
CisgICAgICAgICAgICBydW5UaW1lU3RhbXBUZXN0KCk7CisgICAgICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgICAgICAgIH0KKyAgICAgICAgdmVyaWZ5UXVl
cnlSZXN1bHRzTm90QXZhaWxhYmxlKCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SKTsKKworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNo
ZWNrUXVlcnlSZXN1bHRzKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blNhbml0eVRlc3RzKCkg
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBvdGhlciBxdWVyeSB0eXBlcyIp
OworICAgIHF1ZXJ5ID0gZ2wuY3JlYXRlUXVlcnkoKTsKKyAgICBnbC5iZWdpblF1ZXJ5KGdsLkFO
WV9TQU1QTEVTX1BBU1NFRCwgcXVlcnkpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UXVlcnko
Z2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBnbC5DVVJSRU5UX1FVRVJZKSAhPT0gbnVsbCIpOworICAg
IGdsLmVuZFF1ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJlbmFibGluZyBFWFRfZGlzam9pbnRfdGltZXJfcXVlcnlf
d2ViZ2wyIHNob3VsZCBub3QgYnJlYWsgb3RoZXIgcXVlcmllcyIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJUZXN0aW5nIHRpbWVyIHF1ZXJ5IGV4cGVjdGF0aW9ucyIpOworCisgICAg
c2hvdWxkQmUoImV4dC5RVUVSWV9DT1VOVEVSX0JJVFNfRVhUIiwgIjB4ODg2NCIpOworICAgIHNo
b3VsZEJlKCJleHQuVElNRV9FTEFQU0VEX0VYVCIsICIweDg4QkYiKTsKKyAgICBzaG91bGRCZSgi
ZXh0LlRJTUVTVEFNUF9FWFQiLCAiMHg4RTI4Iik7CisgICAgc2hvdWxkQmUoImV4dC5HUFVfRElT
Sk9JTlRfRVhUIiwgIjB4OEZCQiIpOworCisgICAgc2hvdWxkQmUoImdsLmlzUXVlcnkobnVsbCki
LCAiZmFsc2UiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UXVlcnkoZXh0LlRJTUVfRUxB
UFNFRF9FWFQsIGdsLkNVUlJFTlRfUVVFUlkpID09PSBudWxsIik7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UXVlcnko
ZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGV4dC5RVUVSWV9DT1VOVEVSX0JJVFNfRVhUKSA+PSAzMCIp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIHNob3Vs
ZEJlVHJ1ZSgiZ2wuZ2V0UXVlcnkoZXh0LlRJTUVTVEFNUF9FWFQsIGdsLkNVUlJFTlRfUVVFUlkp
ID09PSBudWxsIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwor
CisgICAgLy8gQ2VydGFpbiBkcml2ZXJzIHNldCB0aW1lc3RhbXAgY291bnRlciBiaXRzIHRvIDAg
YXMgdGhleSBkb24ndCBzdXBwb3J0IHRpbWVzdGFtcHMKKyAgICBzaG91bGRCZVRydWUoImdsLmdl
dFF1ZXJ5KGV4dC5USU1FU1RBTVBfRVhULCBleHQuUVVFUllfQ09VTlRFUl9CSVRTX0VYVCkgPj0g
MzAgfHwgIiArCisgICAgICAgICAgICAgICAgICJnbC5nZXRRdWVyeShleHQuVElNRVNUQU1QX0VY
VCwgZXh0LlFVRVJZX0NPVU5URVJfQklUU19FWFQpID09PSAwIik7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIHRpbWUgZWxhcHNlZCBxdWVyeSBsaWZlY3ljbGUiKTsKKyAgICBxdWVyeSA9IGdsLmNy
ZWF0ZVF1ZXJ5KCk7CisgICAgc2hvdWxkQmUoImdsLmlzUXVlcnkocXVlcnkpIiwgImZhbHNlIik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJRdWVyeSBjcmVhdGlv
biBtdXN0IHN1Y2NlZWQuIik7CisgICAgZ2wuYmVnaW5RdWVyeShleHQuVElNRVNUQU1QX0VYVCwg
cXVlcnkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIkJl
Z2lubmluZyBhIHRpbWVzdGFtcCBxdWVyeSBzaG91bGQgZmFpbC4iKTsKKyAgICBnbC5iZWdpblF1
ZXJ5KGV4dC5USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7CisgICAgc2hvdWxkQmUoImdsLmlzUXVl
cnkocXVlcnkpIiwgInRydWUiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIkJlZ2lubmluZyBhbiBpbmFjdGl2ZSB0aW1lIGVsYXBzZWQgcXVlcnkgc2hvdWxkIHN1
Y2NlZWQuIik7CisgICAgZ2wuYmVnaW5RdWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQXR0
ZW1wdGluZyB0byBiZWdpbiBhbiBhY3RpdmUgcXVlcnkgc2hvdWxkIGZhaWwuIik7CisgICAgZ2wu
Z2V0UXVlcnlQYXJhbWV0ZXIocXVlcnksIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiRmV0Y2hpbmcg
cXVlcnkgcmVzdWx0IGF2YWlsYWJpbGl0eSBvZiBhbiBhY3RpdmUgcXVlcnkgc2hvdWxkIGZhaWwu
Iik7CisgICAgZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIocXVlcnksIGdsLlFVRVJZX1JFU1VMVF9FWFQp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiRmV0
Y2hpbmcgcXVlcnkgcmVzdWx0IG9mIGFuIGFjdGl2ZSBxdWVyeSBzaG91bGQgZmFpbC4iKTsKKyAg
ICBzaG91bGRCZSgiZ2wuZ2V0UXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGdsLkNVUlJFTlRf
UVVFUlkpIiwgInF1ZXJ5Iik7CisgICAgZ2wuZW5kUXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRW5kaW5nIGFuIGFj
dGl2ZSB0aW1lIGVsYXBzZWQgcXVlcnkgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgZ2wuZ2V0UXVl
cnlQYXJhbWV0ZXIocXVlcnksIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRmV0Y2hpbmcgcXVlcnkgcmVzdWx0IGF2
YWlsYWJpbGl0eSBhZnRlciBxdWVyeSBlbmQgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgZ2wuZW5k
UXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQXR0ZW1wdGluZyB0byBlbmQgYW4gaW5hY3RpdmUgcXVl
cnkgc2hvdWxkIGZhaWwuIik7CisgICAgZXh0LnF1ZXJ5Q291bnRlckVYVChxdWVyeSwgZXh0LlRJ
TUVTVEFNUF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSB0aW1lIGVsYXBzZWQgcXVlcnkgdG8g
c3RvcmUgYSB0aW1lc3RhbXAuIik7CisgICAgZ2wuZGVsZXRlUXVlcnkocXVlcnkpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiUXVlcnkgZGVsZXRpb24gbXVzdCBz
dWNjZWVkLiIpOworICAgIGdsLmJlZ2luUXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkJl
Z2lubmluZyBhIGRlbGV0ZWQgcXVlcnkgbXVzdCBmYWlsLiIpOworICAgIGdsLmdldFF1ZXJ5UGFy
YW1ldGVyKHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkZldGNoaW5nIHF1ZXJ5IHJlc3Vs
dCBhdmFpbGFiaWxpdHkgYWZ0ZXIgcXVlcnkgZGVsZXRpb24gc2hvdWxkIGZhaWwuIik7CisgICAg
c2hvdWxkQmUoImdsLmlzUXVlcnkocXVlcnkpIiwgImZhbHNlIik7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRlc3RpbmcgdGltZXN0YW1wIGNvdW50ZXIiKTsKKyAgICBxdWVyeSA9IGds
LmNyZWF0ZVF1ZXJ5KCk7CisgICAgc2hvdWxkVGhyb3coImV4dC5xdWVyeUNvdW50ZXJFWFQobnVs
bCwgZXh0LlRJTUVTVEFNUF9FWFQpIik7CisgICAgZXh0LnF1ZXJ5Q291bnRlckVYVChxdWVyeSwg
ZXh0LlRJTUVTVEFNUF9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiVGltZXN0YW1wIGNvdW50ZXIgcXVlcmllcyBzaG91bGQgd29yay4iKTsKKyAgICBnbC5k
ZWxldGVRdWVyeShxdWVyeSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJQZXJmb3JtaW5nIHBhcmFtZXRlciBz
YW5pdHkgY2hlY2tzIik7CisgICAgZ2wuZ2V0UGFyYW1ldGVyKGV4dC5USU1FU1RBTVBfRVhUKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImdldFBhcmFtZXRlciB0
aW1lc3RhbXAgY2FsbHMgc2hvdWxkIHdvcmsuIik7CisgICAgZ2wuZ2V0UGFyYW1ldGVyKGV4dC5H
UFVfRElTSk9JTlRfRVhUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImdldFBhcmFtZXRlciBkaXNqb2ludCBjYWxscyBzaG91bGQgd29yay4iKTsKKworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBjdXJyZW50IHF1ZXJ5IGNvbmRpdGlvbnMiKTsK
KyAgICBxdWVyeSA9IGdsLmNyZWF0ZVF1ZXJ5KCk7CisgICAgcXVlcnkyID0gZ2wuY3JlYXRlUXVl
cnkoKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGds
LkNVUlJFTlRfUVVFUlkpIiwgIm51bGwiKTsKKyAgICBnbC5iZWdpblF1ZXJ5KGV4dC5USU1FX0VM
QVBTRURfRVhULCBxdWVyeSk7CisgICAgc2hvdWxkQmUoImdsLmdldFF1ZXJ5KGV4dC5USU1FX0VM
QVBTRURfRVhULCBnbC5DVVJSRU5UX1FVRVJZKSIsICJxdWVyeSIpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VGVzdGluZyBmYWlsZWQgYmVnaW4gcXVlcnkgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGN1cnJlbnQg
cXVlcnkuIik7CisgICAgZ2wuYmVnaW5RdWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnky
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkJl
Z2lubmluZyBhbiBlbGFwc2VkIHF1ZXJ5IHdpdGhvdXQgZW5kaW5nIHNob3VsZCBmYWlsLiIpOwor
ICAgIHNob3VsZEJlKCJnbC5nZXRRdWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgZ2wuQ1VSUkVO
VF9RVUVSWSkiLCAicXVlcnkiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmVnaW5uaW5nIGEg
dGltZXN0YW1wIHF1ZXJ5IGlzIGludmFsaWQgYW5kIHNob3VsZCBub3QgY2hhbmdlIHRoZSBlbGFw
c2VkIHF1ZXJ5LiIpOworICAgIGdsLmJlZ2luUXVlcnkoZXh0LlRJTUVTVEFNUF9FWFQsIHF1ZXJ5
MikKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0pOworICAgIHNo
b3VsZEJlKCJnbC5nZXRRdWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgZ2wuQ1VSUkVOVF9RVUVS
WSkiLCAicXVlcnkiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGltZXN0YW1wIHF1ZXJpZXMg
ZW5kIGltbWVkaWF0ZWx5IHNvIGFyZSBuZXZlciBjdXJyZW50LiIpOworICAgIGV4dC5xdWVyeUNv
dW50ZXJFWFQocXVlcnkyLCBleHQuVElNRVNUQU1QX0VYVCk7CisgICAgc2hvdWxkQmUoImdsLmdl
dFF1ZXJ5KGV4dC5USU1FU1RBTVBfRVhULCBnbC5DVVJSRU5UX1FVRVJZKSIsICJudWxsIik7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJUZXN0aW5nIGVuZGluZyB0aGUgcXVlcnkgc2hvdWxkIGNsZWFyIHRoZSBj
dXJyZW50IHF1ZXJ5LiIpOworICAgIGdsLmVuZFF1ZXJ5KGV4dC5USU1FX0VMQVBTRURfRVhUKTsK
KyAgICBzaG91bGRCZSgiZ2wuZ2V0UXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGdsLkNVUlJF
TlRfUVVFUlkpIiwgIm51bGwiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmVnaW5uaW5nIGEg
ZWxhcHNlZCBxdWVyeSB1c2luZyBhIHRpbWVzdGFtcCBxdWVyeSBzaG91bGQgZmFpbCBhbmQgbm90
IGFmZmVjdCBjdXJyZW50IHF1ZXJ5LiIpCisgICAgZ2wuYmVnaW5RdWVyeShleHQuVElNRV9FTEFQ
U0VEX0VYVCwgcXVlcnkyKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgIlN3aXRjaGluZyBxdWVyeSB0YXJnZXRzIHNob3VsZCBmYWlsLiIpOworICAg
IHNob3VsZEJlKCJnbC5nZXRRdWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgZ2wuQ1VSUkVOVF9R
VUVSWSkiLCAibnVsbCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKKworICAgIGdsLmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICBnbC5kZWxldGVRdWVyeShxdWVy
eTIpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3JzIGF0IGVuZCBvZiBzYW5pdHkgdGVzdHMiKTsKK30KKworZnVuY3Rpb24gcnVu
RWxhcHNlZFRpbWVUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBl
bGFwc2VkIHRpbWUgcXVlcnkiKTsKKworICAgIGVsYXBzZWRfcXVlcnkgPSBnbC5jcmVhdGVRdWVy
eSgpOworICAgIGdsLmJlZ2luUXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQsIGVsYXBzZWRfcXVl
cnkpOworICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgZ2wuZW5kUXVlcnkoZXh0LlRJTUVfRUxBUFNFRF9FWFQpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGltZSBlbGFwc2VkIHF1
ZXJ5IHNob3VsZCBoYXZlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBydW5UaW1lU3RhbXBU
ZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aW1lc3RhbXAgcXVl
cnkiKTsKKworICAgIHRpbWVzdGFtcF9xdWVyeTEgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgIHRp
bWVzdGFtcF9xdWVyeTIgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgIGV4dC5xdWVyeUNvdW50ZXJF
WFQodGltZXN0YW1wX3F1ZXJ5MSwgZXh0LlRJTUVTVEFNUF9FWFQpOworICAgIGdsLmNsZWFyQ29s
b3IoMSwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
ZXh0LnF1ZXJ5Q291bnRlckVYVCh0aW1lc3RhbXBfcXVlcnkyLCBleHQuVElNRVNUQU1QX0VYVCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJUaW1lc3RhbXAgcXVl
cmllcyBzaG91bGQgaGF2ZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5UXVlcnlS
ZXN1bHRzTm90QXZhaWxhYmxlKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5
aW5nIHF1ZXJpZXMnIHJlc3VsdHMgZG9uJ3QgYmVjb21lIGF2YWlsYWJsZSB0b28gZWFybHkiKTsK
KworICAgIC8vIFZlcmlmeSBhcyBiZXN0IGFzIHBvc3NpYmxlIHRoYXQgdGhlIGltcGxlbWVudGF0
aW9uIGRvZXNuJ3QKKyAgICAvLyBhbGxvdyBhIHF1ZXJ5J3MgcmVzdWx0IHRvIGJlY29tZSBhdmFp
bGFibGUgdGhlIHNhbWUgZnJhbWUsIGJ5CisgICAgLy8gc3Bpbi1sb29waW5nIGZvciBzb21lIHRp
bWUgYW5kIGVuc3VyaW5nIHRoYXQgbm9uZSBvZiB0aGUKKyAgICAvLyBxdWVyaWVzJyByZXN1bHRz
IGJlY29tZSBhdmFpbGFibGUuCisgICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CisgICAg
d2hpbGUgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPCAyMDAwKSB7CisgICAgICAgIGdsLmZpbmlz
aCgpOworICAgICAgICBpZiAoZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIoZWxhcHNlZF9xdWVyeSwgZ2wu
UVVFUllfUkVTVUxUX0FWQUlMQUJMRSkpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9uZSBv
ZiB0aGUgcXVlcmllcycgcmVzdWx0cyBiZWNhbWUgYXZhaWxhYmxlIHRvbyBlYXJseSIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0aW1lc3RhbXBfY291bnRl
cl9iaXRzID4gMCkgeworICAgICAgICAgICAgaWYgKGdsLmdldFF1ZXJ5UGFyYW1ldGVyKHRpbWVz
dGFtcF9xdWVyeTEsIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpIHx8CisgICAgICAgICAgICAg
ICAgZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIodGltZXN0YW1wX3F1ZXJ5MiwgZ2wuUVVFUllfUkVTVUxU
X0FWQUlMQUJMRSkpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJPbmUgb2YgdGhlIHF1
ZXJpZXMnIHJlc3VsdHMgYmVjYW1lIGF2YWlsYWJsZSB0b28gZWFybHkiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZXN0
UGFzc2VkKCJRdWVyaWVzJyByZXN1bHRzIGRpZG4ndCBiZWNvbWUgYXZhaWxhYmxlIGluIGEgc3Bp
biBsb29wIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUXVlcnlSZXN1bHRzKCkgeworICAgIGlmIChh
dmFpbGFiaWxpdHlfcmV0cnkgPiAwKSB7CisgICAgICAgIC8vIE1ha2UgYSByZWFzb25hYmxlIGF0
dGVtcHQgdG8gd2FpdCBmb3IgdGhlIHF1ZXJpZXMnIHJlc3VsdHMgdG8gYmVjb21lIGF2YWlsYWJs
ZS4KKyAgICAgICAgaWYgKCFnbC5nZXRRdWVyeVBhcmFtZXRlcihlbGFwc2VkX3F1ZXJ5LCBnbC5R
VUVSWV9SRVNVTFRfQVZBSUxBQkxFKSB8fAorICAgICAgICAgICAgKHRpbWVzdGFtcF9jb3VudGVy
X2JpdHMgPiAwICYmICFnbC5nZXRRdWVyeVBhcmFtZXRlcih0aW1lc3RhbXBfcXVlcnkyLCBnbC5R
VUVSWV9SRVNVTFRfQVZBSUxBQkxFKSkpIHsKKyAgICAgICAgICAgIHZhciBlcnJvciA9IGdsLmdl
dEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gZ2wuTk9fRVJST1IpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJnZXRRdWVyeVBhcmFtZXRlciBzaG91bGQgaGF2ZSBubyBl
cnJvcnM6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGVycm9yKSk7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdmFpbGFiaWxpdHlfcmV0
cnktLTsKKyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tRdWVy
eVJlc3VsdHMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5IHJlc3VsdHMiKTsKKworICAgIC8v
IE1ha2Ugc3VyZSBxdWVyaWVzIGFyZSBhdmFpbGFibGUuCisgICAgc2hvdWxkQmUoImdsLmdldFF1
ZXJ5UGFyYW1ldGVyKGVsYXBzZWRfcXVlcnksIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpIiwg
InRydWUiKTsKKyAgICBpZiAodGltZXN0YW1wX2NvdW50ZXJfYml0cyA+IDApIHsKKyAgICAgICAg
c2hvdWxkQmUoImdsLmdldFF1ZXJ5UGFyYW1ldGVyKHRpbWVzdGFtcF9xdWVyeTEsIGdsLlFVRVJZ
X1JFU1VMVF9BVkFJTEFCTEUpIiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxkQmUoImdsLmdldFF1
ZXJ5UGFyYW1ldGVyKHRpbWVzdGFtcF9xdWVyeTIsIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUp
IiwgInRydWUiKTsKKyAgICB9CisKKyAgICB2YXIgZGlzam9pbnRfdmFsdWUgPSBnbC5nZXRQYXJh
bWV0ZXIoZXh0LkdQVV9ESVNKT0lOVF9FWFQpOworICAgIGlmIChkaXNqb2ludF92YWx1ZSkgewor
ICAgICAgICAvLyBDYW5ub3QgdmFsaWRhdGUgcmVzdWx0cyBtYWtlIHNlbnNlLCBidXQgdGhpcyBp
cyBva2F5LgorICAgICAgICB0ZXN0UGFzc2VkKCJEaXNqb2ludCB0cmlnZ2VyZWQuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdmFyIGVsYXBzZWRfcmVzdWx0ID0gZ2wuZ2V0UXVlcnlQYXJhbWV0
ZXIoZWxhcHNlZF9xdWVyeSwgZ2wuUVVFUllfUkVTVUxUX0VYVCk7CisgICAgICAgIGlmICh0aW1l
c3RhbXBfY291bnRlcl9iaXRzID4gMCkgeworICAgICAgICAgICAgdmFyIHRpbWVzdGFtcF9yZXN1
bHQxID0gZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIodGltZXN0YW1wX3F1ZXJ5MSwgZ2wuUVVFUllfUkVT
VUxUX0VYVCk7CisgICAgICAgICAgICB2YXIgdGltZXN0YW1wX3Jlc3VsdDIgPSBnbC5nZXRRdWVy
eVBhcmFtZXRlcih0aW1lc3RhbXBfcXVlcnkyLCBnbC5RVUVSWV9SRVNVTFRfRVhUKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBEbyBzb21lIGJhc2ljIHZhbGlkaXR5IGNoZWNraW5nIG9mIHRoZSBl
bGFwc2VkIHRpbWUgcXVlcnkuIFRoZXJlJ3Mgbm8gd2F5IGl0IHNob3VsZAorICAgICAgICAvLyB0
YWtlIG1vcmUgdGhhbiBhYm91dCBoYWxmIGEgc2Vjb25kIGZvciBhIG5vLW9wIHF1ZXJ5LgorICAg
ICAgICB2YXIgaGFsZlNlY29uZEluTmFub3MgPSAwLjUgKiAxMDAwICogMTAwMCAqIDEwMDA7Cisg
ICAgICAgIGlmIChlbGFwc2VkX3Jlc3VsdCA8IDAgfHwgZWxhcHNlZF9yZXN1bHQgPiBoYWxmU2Vj
b25kSW5OYW5vcykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGltZSBlbGFwc2VkIHF1ZXJ5
IHJldHVybmVkIGludmFsaWQgZGF0YTogIiArIGVsYXBzZWRfcmVzdWx0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRpbWUgZWxhcHNlZCBxdWVyeSByZXN1bHRz
IHdlcmUgdmFsaWQuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGltZXN0YW1wX2NvdW50
ZXJfYml0cyA+IDApIHsKKyAgICAgICAgICAgIGlmICh0aW1lc3RhbXBfcmVzdWx0MSA8PSAwIHx8
CisgICAgICAgICAgICAgICAgdGltZXN0YW1wX3Jlc3VsdDIgPD0gMCB8fAorICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcF9yZXN1bHQyIDw9IHRpbWVzdGFtcF9yZXN1bHQxKSB7CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiVGltZXN0YW1wIHF1ZXJpZXMgcmV0dXJuZWQgaW52YWxpZCBkYXRh
OiB0aW1lc3RhbXBfcmVzdWx0MSA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZXN0YW1wX3Jlc3VsdDEgKyAiLCB0aW1lc3RhbXBfcmVzdWx0MiA9ICIgKyB0aW1lc3RhbXBfcmVz
dWx0Mik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlRpbWVzdGFtcCBxdWVyeSByZXN1bHRzIHdlcmUgdmFsaWQuIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoVGVzdCgpOworfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9leHQt
dGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC10ZXh0dXJl
LWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NWE4ZTBjYWU5Mjc0OGRiNTQ5
YmY0ZDZhZTNiM2ZjZDdmZjAzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9leHQt
dGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCAyLjAg
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNvbnRleHRWZXJzaW9uID0g
MjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2V4dC10ZXh0dXJlLWZp
bHRlci1hbmlzb3Ryb3BpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9l
eHRlbnNpb25zL2V4dC10ZXh0dXJlLW5vcm0xNi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtbm9ybTE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ5ZmY2NDVlYmVkNGNjZmZiYmE5YTkwYTUzODcw
MjRmZGFiMDA4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC10ZXh0dXJlLW5v
cm0xNi5odG1sCkBAIC0wLDAgKzEsMjIzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBFWFRfdGV4dHVyZV9ub3JtMTYgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPExJTksgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2Yg
dGhlIEVYVF90ZXh0dXJlX25vcm0xNiBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsK
KworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KG51bGwsIG51bGwsIDIpOwordmFyIGV4dDsKKwordmFyIGZvcm1hdHMg
PSBudWxsOwordmFyIHRleHR1cmVzOwordmFyIGZib3M7Cit2YXIgcmVuZGVyYnVmZmVyOwordmFy
IHJlYWRiYWNrQnVmID0gbmV3IFVpbnQxNkFycmF5KDQpOworCitmdW5jdGlvbiBnZW5lcmF0ZUZv
cm1hdENvbG9yKGZvcm1hdCwgdmFsdWUsIGFscGhhKSB7CisgIGFscGhhID0gYWxwaGEgIT09IHVu
ZGVmaW5lZCA/IGFscGhhIDogMjU1OworICBzd2l0Y2goZm9ybWF0KSB7CisgICAgY2FzZSBnbC5S
RUQ6CisgICAgICByZXR1cm4gW3ZhbHVlLCAwLCAwLCBhbHBoYV07CisgICAgY2FzZSBnbC5SRzoK
KyAgICAgIHJldHVybiBbdmFsdWUsIHZhbHVlLCAwLCBhbHBoYV07CisgICAgY2FzZSBnbC5SR0I6
CisgICAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZSwgdmFsdWUsIGFscGhhXTsKKyAgICBjYXNlIGds
LlJHQkE6CisgICAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZSwgdmFsdWUsIHZhbHVlXTsKKyAgICBk
ZWZhdWx0OgorICAgICAgd3R1LmVycm9yKCJVbnJlYWNoYWJsZTogVW5rbm93biBmb3JtYXQuIik7
CisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0Tm9ybTE2VGV4dHVy
ZShpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKSB7CisgIGxldCBwaXhlbFZhbHVlOworICBs
ZXQgZXhwZWN0ZWRWYWx1ZTsKKyAgbGV0IGltYWdlRGF0YTsKKworICBzd2l0Y2godHlwZSkgewor
ICAgIGNhc2UgZ2wuU0hPUlQ6CisgICAgICBwaXhlbFZhbHVlID0gMHg3ZmZmOworICAgICAgZXhw
ZWN0ZWRWYWx1ZSA9IDB4ZmY7CisgICAgICBpbWFnZURhdGEgPSBuZXcgSW50MTZBcnJheSg0KS5m
aWxsKHBpeGVsVmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9S
VDoKKyAgICAgIHBpeGVsVmFsdWUgPSAweDZhMzU7CisgICAgICBleHBlY3RlZFZhbHVlID0gcGl4
ZWxWYWx1ZSA+PiA4OworICAgICAgaW1hZ2VEYXRhID0gbmV3IFVpbnQxNkFycmF5KDQpLmZpbGwo
cGl4ZWxWYWx1ZSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgd3R1LmVycm9y
KCJVbnJlYWNoYWJsZTogVW5rbm93biB0ZXh0dXJlIHR5cGUuIik7CisgICAgICBicmVhazsKKyAg
fQorCisgIC8vIFRleHR1cmUgc2FtcGxlZCBmcm9tCisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVY
VFVSRTApOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlc1swXSk7Cisg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQsIDEsIDEsIDAs
IGZvcm1hdCwgdHlwZSwgaW1hZ2VEYXRhKTsKKworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInRleHR1cmUgYmluZGluZ3Mgc3VjY2VlZCIpOworCisgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKworICAvLyBSZWFkIGJhY2sgYXMgZ2wuVU5TSUdORURf
QllURQorICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBnZW5lcmF0ZUZvcm1h
dENvbG9yKGZvcm1hdCwgZXhwZWN0ZWRWYWx1ZSkpOworfQorCitmdW5jdGlvbiB0ZXN0Tm9ybTE2
UmVuZGVyKGludGVyYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgdG9sZXJhbmNlKSB7CisgIC8vIE9u
bHkgVU5TSUdORURfU0hPUlQgYXJlIHJlbmRlcmFibGUKKyAgbGV0IHBpeGVsVmFsdWUgPSAweDZh
MzU7CisgIGxldCBleHBlY3RlZFZhbHVlID0gcGl4ZWxWYWx1ZTsKKyAgbGV0IGltYWdlRGF0YSA9
IG5ldyBVaW50MTZBcnJheSg0KS5maWxsKHBpeGVsVmFsdWUpOworCisgIC8vIFJlbmRlciB0byBm
Ym8gdGV4dHVyZSBhdHRhY2htZW50IHRlc3QKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4dHVyZXNbMV0pOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGludGVy
YWxGb3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwgbnVsbCk7CisKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJydHQgYmluZGluZ3Mgc3VjY2VlZCIpOworCisgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvc1swXSk7CisgIGdsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVY
VFVSRV8yRCwgdGV4dHVyZXNbMV0sIDApOworCisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiZmJvIGJpbmRpbmdzIHN1Y2NlZWQiKTsKKworICBnbC5hY3RpdmVUZXh0dXJl
KGdsLlRFWFRVUkUwKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZXNb
MF0pOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGludGVyYWxGb3JtYXQsIDEs
IDEsIDAsIGZvcm1hdCwgdHlwZSwgaW1hZ2VEYXRhKTsKKworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInRleHR1cmUgYmluZGluZ3Mgc3VjY2VlZCIpOworCisgIGdsLmRy
YXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKworICB3dHUuY2hlY2tDYW52YXNSZWN0KGds
LCAwLCAwLCAxLCAxLCBnZW5lcmF0ZUZvcm1hdENvbG9yKGZvcm1hdCwgZXhwZWN0ZWRWYWx1ZSwg
MHhmZmZmKSwgdW5kZWZpbmVkLCB0b2xlcmFuY2UsIHJlYWRiYWNrQnVmLCB0eXBlKTsKKworICAv
LyBSZW5kZXJidWZmZXIgdGVzdAorICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZib3NbMV0pOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVy
YnVmZmVyKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGludGVy
YWxGb3JtYXQsIDEsIDEpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgbnVsbCk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJyZW5kZXJidWZmZXIgYmluZGluZ3Mgc3VjY2VlZCIpOworCisgIGdsLmNsZWFyQ29s
b3IoMSwgMSwgMSwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgIHd0
dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIGdlbmVyYXRlRm9ybWF0Q29sb3IoZm9y
bWF0LCAweGZmZmYsIDB4ZmZmZiksIHVuZGVmaW5lZCwgdG9sZXJhbmNlLCByZWFkYmFja0J1Ziwg
dHlwZSk7CisKKyAgLy8gQ29weSBmcm9tIHJlbmRlcmJ1ZmZlciB0byB0ZXh0dXJlc1sxXSB0ZXN0
CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVzWzFdKTsKKyAgZ2wuY29w
eVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7CisKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJjb3B5IHN1Y2NlZWQiKTsKKwor
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZib3NbMF0pOworICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBnZW5lcmF0ZUZvcm1hdENvbG9yKGZvcm1hdCwg
MHhmZmZmLCAweGZmZmYpLCB1bmRlZmluZWQsIHRvbGVyYW5jZSwgcmVhZGJhY2tCdWYsIHR5cGUp
OworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworfQorCitmdW5jdGlvbiB0ZXN0U25vcm0x
NlVucmVuZGVyYWJsZShpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKSB7CisgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVzWzFdKTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBpbnRlcm5hbEZvcm1hdCwgMSwgMSwgMCwgZm9ybWF0LCB0eXBlLCBudWxs
KTsKKworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleHR1cmUgZGVm
aW5pdGlvbiBzdWNjZWVkZWQiKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZib3NbMF0pOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmVzWzFdLCAwKTsKKwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZibyBiaW5kaW5nIHN1Y2Nl
ZWRlZCIpOworCisgIHd0dS5mcmFtZWJ1ZmZlclN0YXR1c1Nob3VsZEJlKGdsLCBnbC5GUkFNRUJV
RkZFUiwgWyBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVG
RkVSX1VOU1VQUE9SVEVEIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFt
ZWJ1ZmZlciBzaG91bGQgbm90IGJlIGNvbXBsZXRlIHdpdGggU05PUk0xNiB0ZXh0dXJlIGF0dGFj
aGVkIik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7CisgIHRleHR1cmVzID0g
W2dsLmNyZWF0ZVRleHR1cmUoKSwgZ2wuY3JlYXRlVGV4dHVyZSgpXTsKKyAgZmJvcyA9IFtnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpLCBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpXTsKKyAgcmVuZGVyYnVm
ZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAy
OyBpKyspIHsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlc1tpXSk7
CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxU
RVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgfQorCisgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAidGV4dHVyZSBhbmQgZnJhbWVidWZmZXIgc2V0dXAgc3VjY2VlZCIpOworCisgIGxl
dCBwcm9ncmFtMzAwID0gd3R1LnNldHVwU2ltcGxlVGV4dHVyZVByb2dyYW1FU1NMMzAwKGdsKTsK
KyAgbGV0IHByb2dyYW0xMDAgPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wsIDAsIDEsIHd0dS5z
aW1wbGVIaWdoUHJlY2lzaW9uVGV4dHVyZUZyYWdtZW50U2hhZGVyKTsKKworICB0ZXN0Tm9ybTE2
VGV4dHVyZShleHQuUjE2X0VYVCwgZ2wuUkVELCBnbC5VTlNJR05FRF9TSE9SVCk7CisgIHRlc3RO
b3JtMTZUZXh0dXJlKGV4dC5SRzE2X0VYVCwgZ2wuUkcsIGdsLlVOU0lHTkVEX1NIT1JUKTsKKyAg
dGVzdE5vcm0xNlRleHR1cmUoZXh0LlJHQjE2X0VYVCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9TSE9S
VCk7CisgIHRlc3ROb3JtMTZUZXh0dXJlKGV4dC5SR0JBMTZfRVhULCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9TSE9SVCk7CisgIHRlc3ROb3JtMTZUZXh0dXJlKGV4dC5SMTZfU05PUk1fRVhULCBnbC5S
RUQsIGdsLlNIT1JUKTsKKyAgdGVzdE5vcm0xNlRleHR1cmUoZXh0LlJHMTZfU05PUk1fRVhULCBn
bC5SRywgZ2wuU0hPUlQpOworICB0ZXN0Tm9ybTE2VGV4dHVyZShleHQuUkdCMTZfU05PUk1fRVhU
LCBnbC5SR0IsIGdsLlNIT1JUKTsKKyAgdGVzdE5vcm0xNlRleHR1cmUoZXh0LlJHQkExNl9TTk9S
TV9FWFQsIGdsLlJHQkEsIGdsLlNIT1JUKTsKKworICB0ZXN0Tm9ybTE2UmVuZGVyKGV4dC5SMTZf
RVhULCBnbC5SRUQsIGdsLlVOU0lHTkVEX1NIT1JULCA4KTsKKyAgdGVzdE5vcm0xNlJlbmRlcihl
eHQuUkcxNl9FWFQsIGdsLlJHLCBnbC5VTlNJR05FRF9TSE9SVCwgOCk7CisgIHRlc3ROb3JtMTZS
ZW5kZXIoZXh0LlJHQkExNl9FWFQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX1NIT1JULCA4KTsKKwor
ICBnbC51c2VQcm9ncmFtKHByb2dyYW0zMDApOworCisgIHRlc3ROb3JtMTZSZW5kZXIoZXh0LlIx
Nl9FWFQsIGdsLlJFRCwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICB0ZXN0Tm9ybTE2UmVuZGVy
KGV4dC5SRzE2X0VYVCwgZ2wuUkcsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgdGVzdE5vcm0x
NlJlbmRlcihleHQuUkdCQTE2X0VYVCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfU0hPUlQsIDApOwor
CisgIHRlc3RTbm9ybTE2VW5yZW5kZXJhYmxlKGV4dC5SMTZfU05PUk1fRVhULCBnbC5SRUQsIGds
LlNIT1JUKTsKKyAgdGVzdFNub3JtMTZVbnJlbmRlcmFibGUoZXh0LlJHMTZfU05PUk1fRVhULCBn
bC5SRywgZ2wuU0hPUlQpOworICB0ZXN0U25vcm0xNlVucmVuZGVyYWJsZShleHQuUkdCMTZfU05P
Uk1fRVhULCBnbC5SR0IsIGdsLlNIT1JUKTsKKyAgdGVzdFNub3JtMTZVbnJlbmRlcmFibGUoZXh0
LlJHQkExNl9TTk9STV9FWFQsIGdsLlJHQkEsIGdsLlNIT1JUKTsKK307CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsK
KworICAgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfbm9ybTE2Iik7CisKKyAg
ICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIkVYVF90ZXh0dXJlX25vcm0xNiIs
IGV4dCAhPT0gbnVsbCk7CisKKyAgICBpZiAoZXh0ICE9PSBudWxsKSB7CisgICAgICBydW5UZXN0
RXh0ZW5zaW9uKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vIEVYVF90ZXh0
dXJlX25vcm0xNiBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICB9CisgIH0KK30KKwor
cnVuVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vZXMtZHJhdy1idWZmZXJzLWluZGV4
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9leHRlbnNpb25zL29lcy1kcmF3LWJ1ZmZlcnMtaW5kZXhlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlM2Y3ODllN2UyMGE1ZDY0MTQzYmIyNzc5MjkxZTFmZjBlNzY0ZTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vZXMtZHJhdy1idWZmZXJzLWluZGV4ZWQuaHRtbApAQCAt
MCwwICsxLDMyNyBAQAorPCEtLQ0KK0NvcHlyaWdodCAoYykgMjAyMCBUaGUgS2hyb25vcyBHcm91
cCBJbmMuDQorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4N
CistLT4NCisNCis8IURPQ1RZUEUgaHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+DQorPHRpdGxlPldlYkdMIE9FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+DQorPExJTksgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4NCis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2Pg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KKzxzY3JpcHQ+DQor
InVzZSBzdHJpY3QiOw0KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0
aW9uYWxpdHkgb2YgdGhlIE9FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCBleHRlbnNpb24sIGlmIGl0
IGlzIGF2YWlsYWJsZS4iKTsNCisNCitkZWJ1ZygiIik7DQorDQordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOw0KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
DQordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChudWxsLCBudWxsLCAyKTsNCit2YXIgZXh0
Ow0KKw0KK2NvbnN0IHZzID0gYCN2ZXJzaW9uIDMwMCBlcw0KK2xheW91dChsb2NhdGlvbj0wKSBp
biB2ZWM0IHZQb3NpdGlvbjsNCit2b2lkIG1haW4oKQ0KK3sNCisgICAgZ2xfUG9zaXRpb24gPSB2
UG9zaXRpb247DQorfQ0KK2A7DQorDQorY29uc3QgZnMgPSBgI3ZlcnNpb24gMzAwIGVzDQorcHJl
Y2lzaW9uIGxvd3AgZmxvYXQ7DQorbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgb19jb2xv
cjA7DQorbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IHZlYzQgb19jb2xvcjE7DQordm9pZCBtYWlu
KCkNCit7DQorICAgIG9fY29sb3IwID0gdmVjNCgxLCAwLCAwLCAwKTsNCisgICAgb19jb2xvcjEg
PSB2ZWM0KDEsIDAsIDAsIDApOw0KK30NCitgOw0KKw0KK2Z1bmN0aW9uIHNldHVwKCkgew0KKyAg
ICBjb25zdCBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3ZzLCBmc10pOw0KKyAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0pOw0KKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7DQor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdObyBlcnJvcnMgZnJvbSBwcm9ncmFtJyk7
DQorDQorICAgIGNvbnN0IHRleDEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7DQorICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOw0KKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOw0KKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnQ3JlYXRlIHRleHR1cmUgMSBz
dWNjZXNzZnVsbHknKTsNCisNCisgICAgY29uc3QgdGV4MiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsN
CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4Mik7DQorICAgIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgbnVsbCk7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdDcmVh
dGUgdGV4dHVyZSAyIHN1Y2Nlc3NmdWxseScpOw0KKw0KKyAgICBjb25zdCBhdHRhY2htZW50cyA9
IFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdOw0KKw0KKyAgICBj
b25zdCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7DQorICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZmIpOw0KKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgYXR0YWNobWVudHNbMF0sIGdsLlRFWFRVUkVfMkQsIHRleDEsIDApOw0KKyAg
ICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudHNbMV0s
IGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOw0KKyAgICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsN
CisNCisgICAgZ2wuZHJhd0J1ZmZlcnMoYXR0YWNobWVudHMpOw0KKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCAwLCAnU2V0IGRyYXcgYnVmZmVycyB3aXRob3V0IGVycm9ycycpOw0KK30NCisN
CitmdW5jdGlvbiBlbmFibGVEaXNhYmxlVGVzdCgpIHsNCisgICAgZGVidWcoIlRlc3RpbmcgZW5h
YmxlaU9FUy9kaXNhYmxlaU9FUyIpOw0KKw0KKyAgICAvLyBJbnZhbGlkIGlucHV0DQorICAgIGV4
dC5lbmFibGVpT0VTKGdsLkRFUFRIX1RFU1QsIDApOw0KKyAgICBleHQuZGlzYWJsZWlPRVMoZ2wu
REVQVEhfVEVTVCwgMCk7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
RU5VTSwgJ3RhcmdldCBjb3VsZCBvbmx5IGJlIGdsLkJMRU5EJyk7DQorDQorICAgIGdsLmRpc2Fi
bGUoZ2wuQkxFTkQpOw0KKw0KKyAgICAvLyBWYWxpZCBpbnB1dA0KKyAgICBleHQuZW5hYmxlaU9F
UyhnbC5CTEVORCwgMCk7DQorICAgIHNob3VsZEJlKCdnbC5pc0VuYWJsZWQoZ2wuQkxFTkQpJywg
J3RydWUnKTsNCisgICAgZXh0LmRpc2FibGVpT0VTKGdsLkJMRU5ELCAwKTsNCisgICAgZXh0LmVu
YWJsZWlPRVMoZ2wuQkxFTkQsIDEpOw0KKyAgICBzaG91bGRCZSgnZ2wuaXNFbmFibGVkKGdsLkJM
RU5EKScsICdmYWxzZScpOw0KKyAgICBnbC5lbmFibGUoZ2wuQkxFTkQpOw0KKyAgICBzaG91bGRC
ZSgnZ2wuaXNFbmFibGVkKGdsLkJMRU5EKScsICd0cnVlJyk7DQorICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIDAsICdObyBlcnJvcnMgZnJvbSBlbmFibGUgYW5kIGRpc2FibGUgZHJhdyBidWZm
ZXJzIGJsZW5kIHN0YXRlJyk7DQorfQ0KKw0KK2Z1bmN0aW9uIGNvbnN0YW50QWxwaGFCbGVuZENv
bG9yVmFsaWRhdGlvblRlc3QoKSB7DQorICAgIGRlYnVnKCJUZXN0aW5nIENPTlNUQU5UX0NPTE9S
L0FMUEhBIGJsZW5kIGZ1bmN0aW9ucyBsaW1pdCB2YWxpZGF0aW9uIik7DQorICAgIGZ1bmN0aW9u
IGlzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jdGlvbnMoZmlyc3QsIHNlY29uZCkNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIChmaXJzdCA9PSBnbC5DT05TVEFOVF9DT0xPUiB8fCBmaXJz
dCA9PSBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpICYmDQorICAgICAgICAgICAgKHNlY29u
ZCA9PSBnbC5DT05TVEFOVF9BTFBIQSB8fCBzZWNvbmQgPT0gZ2wuT05FX01JTlVTX0NPTlNUQU5U
X0FMUEhBKTsNCisgICAgfQ0KKw0KKyAgICBmdW5jdGlvbiBjaGVja0JsZW5kRnVuY3Rpb25zKHNy
YywgZHN0KQ0KKyAgICB7DQorICAgICAgICBpZiAoaXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVu
ZEZ1bmN0aW9ucyhzcmMsIGRzdCkgfHwNCisgICAgICAgICAgICBpc0NvbnN0YW50Q29sb3JBbmRB
bHBoYUJsZW5kRnVuY3Rpb25zKGRzdCwgc3JjKSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2ludmFsaWQgY29t
YmluYXRpb25zJyk7DQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICAgICAgfQ0KKyAg
ICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIDAsICdObyBlcnJvcicpOw0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICAgICAg
fQ0KKyAgICB9DQorDQorICAgIGNvbnN0IHNyY0Z1bmMgPSBbDQorICAgICAgICBnbC5aRVJPLA0K
KyAgICAgICAgZ2wuT05FLA0KKyAgICAgICAgZ2wuU1JDX0NPTE9SLA0KKyAgICAgICAgZ2wuT05F
X01JTlVTX1NSQ19DT0xPUiwNCisgICAgICAgIGdsLkRTVF9DT0xPUiwNCisgICAgICAgIGdsLk9O
RV9NSU5VU19EU1RfQ09MT1IsDQorICAgICAgICBnbC5TUkNfQUxQSEEsDQorICAgICAgICBnbC5P
TkVfTUlOVVNfU1JDX0FMUEhBLA0KKyAgICAgICAgZ2wuRFNUX0FMUEhBLA0KKyAgICAgICAgZ2wu
T05FX01JTlVTX0RTVF9BTFBIQSwNCisgICAgICAgIGdsLkNPTlNUQU5UX0NPTE9SLA0KKyAgICAg
ICAgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLA0KKyAgICAgICAgZ2wuQ09OU1RBTlRfQUxQ
SEEsDQorICAgICAgICBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsDQorICAgICAgICBnbC5T
UkNfQUxQSEFfU0FUVVJBVEUsDQorICAgIF07DQorDQorICAgIGNvbnN0IGRzdEZ1bmMgPSBbDQor
ICAgICAgICBnbC5aRVJPLCAgICAgICAgICAgZ2wuT05FLA0KKyAgICAgICAgZ2wuU1JDX0NPTE9S
LCAgICAgIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsDQorICAgICAgICBnbC5EU1RfQ09MT1IsICAg
ICAgZ2wuT05FX01JTlVTX0RTVF9DT0xPUiwNCisgICAgICAgIGdsLlNSQ19BTFBIQSwgICAgICBn
bC5PTkVfTUlOVVNfU1JDX0FMUEhBLA0KKyAgICAgICAgZ2wuRFNUX0FMUEhBLCAgICAgIGdsLk9O
RV9NSU5VU19EU1RfQUxQSEEsDQorICAgICAgICBnbC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01J
TlVTX0NPTlNUQU5UX0NPTE9SLA0KKyAgICAgICAgZ2wuQ09OU1RBTlRfQUxQSEEsIGdsLk9ORV9N
SU5VU19DT05TVEFOVF9BTFBIQSwNCisgICAgXTsNCisNCisgICAgbGV0IHNyYywgZHN0Ow0KKw0K
KyAgICAvLyBDT05TVEFOVF9DT0xPUi9BTFBIQSBpbnZhbGlkIGNvbWJpbmF0aW9uIGNoZWNrDQor
ICAgIGZvciAobGV0IGkgPSAwLCBsZW5pID0gc3JjRnVuYy5sZW5ndGg7IGkgPCBsZW5pOyBpKysp
DQorICAgIHsNCisgICAgICAgIHNyYyA9IHNyY0Z1bmNbaV07DQorICAgICAgICBmb3IgKGxldCBq
ID0gMCwgbGVuaiA9IGRzdEZ1bmMubGVuZ3RoOyBqIDwgbGVuajsgaisrKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGRzdCA9IGRzdEZ1bmNbal07DQorICAgICAgICAgICAgZXh0LmJsZW5kRnVu
Y2lPRVMoMCwgc3JjLCBkc3QpOw0KKyAgICAgICAgICAgIGNoZWNrQmxlbmRGdW5jdGlvbnMoc3Jj
LCBkc3QpOw0KKyAgICAgICAgICAgIGV4dC5ibGVuZEZ1bmNTZXBhcmF0ZWlPRVMoMCwgc3JjLCBk
c3QsIGdsLk9ORSwgZ2wuT05FKTsNCisgICAgICAgICAgICBjaGVja0JsZW5kRnVuY3Rpb25zKHNy
YywgZHN0KTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCisNCitmdW5jdGlvbiBpbmRleGVkQmxl
bmRDb2xvclRlc3QoKSB7DQorICAgIGRlYnVnKCJUZXN0aW5nIGJsZW5kRXF1YXRpb25pT0VTIGFu
ZCBibGVuZEZ1bmNpT0VTIik7DQorICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7DQorICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOw0KKw0KKyAgICBleHQuYmxlbmRFcXVhdGlv
bmlPRVMoMCwgZ2wuRlVOQ19BREQpOw0KKyAgICBleHQuYmxlbmRGdW5jaU9FUygwLCBnbC5PTkUs
IGdsLk9ORSk7DQorICAgIGV4dC5ibGVuZEVxdWF0aW9uaU9FUygxLCBnbC5GVU5DX0FERCk7DQor
ICAgIGV4dC5ibGVuZEZ1bmNpT0VTKDEsIGdsLlNSQ19BTFBIQSwgZ2wuT05FX01JTlVTX1NSQ19B
TFBIQSk7DQorICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsNCisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgMCwgJ0RyYXcgcXVhZCB3aXRob3V0IGVycm9ycycpOw0KKw0K
KyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsNCisgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzI1NSwgMCwgMjU1LCAyNTVdKTsNCisNCisgICAg
Z2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSk7DQorICAgIHd0dS5jaGVja0NhbnZh
c1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAwLCAyNTUsIDI1NV0pOw0KKw0KKyAgICBkZWJ1Zygi
VGVzdGluZyBibGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIGFuZCBibGVuZEZ1bmNTZXBhcmF0ZWlP
RVMiKTsNCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7DQorDQorICAgIGV4dC5i
bGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKDAsIGdsLkZVTkNfQURELCBnbC5GVU5DX1NVQlRSQUNU
KTsNCisgICAgZXh0LmJsZW5kRnVuY1NlcGFyYXRlaU9FUygwLCBnbC5PTkUsIGdsLk9ORSwgZ2wu
WkVSTywgZ2wuWkVSTyk7DQorICAgIGV4dC5ibGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKDEsIGds
LkZVTkNfQURELCBnbC5GVU5DX1NVQlRSQUNUKTsNCisgICAgZXh0LmJsZW5kRnVuY1NlcGFyYXRl
aU9FUygxLCBnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIGdsLlpFUk8sIGds
LlpFUk8pOw0KKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7DQorICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdEcmF3IHF1YWQgd2l0aG91dCBlcnJvcnMnKTsNCisN
CisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7DQorICAgIHd0dS5jaGVj
a0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsyNTUsIDAsIDI1NSwgMF0pOw0KKw0KKyAgICBn
bC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsNCisgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDI1NSwgMF0pOw0KKw0KKyAgICBkZWJ1ZygiVGVz
dGluZyBjb2xvck1hc2tpT0VTIik7DQorICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
Ow0KKyAgICBleHQuY29sb3JNYXNraU9FUygwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
DQorICAgIGV4dC5jb2xvck1hc2tpT0VTKDEsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOw0KKw0K
KyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7DQorICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIDAsICdEcmF3IHF1YWQgd2l0aG91dCBlcnJvcnMnKTsNCisNCisgICAgZ2wu
cmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7DQorICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAwLCAyNTUsIDI1NV0pOw0KKw0KKyAgICBnbC5yZWFkQnVm
ZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsNCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
MCwgMCwgMSwgMSwgWzAsIDAsIDI1NSwgMF0pOw0KKw0KKyAgICBkZWJ1ZygiVGVzdGluZyBuZXcg
dG9rZW5zIGZvciBnZXRJbmRleGVkUGFyYW1ldGVyVGVzdCIpOw0KKyAgICBzaG91bGRCZSgnZ2wu
Z2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fUkdCLCAwKScsICdnbC5GVU5D
X0FERCcpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRf
RVFVQVRJT05fQUxQSEEsIDApJywgJ2dsLkZVTkNfU1VCVFJBQ1QnKTsNCisgICAgc2hvdWxkQmUo
J2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19SR0IsIDApJywgJ2dsLk9ORScp
Ow0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRFNUX1JH
QiwgMCknLCAnZ2wuT05FJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KGV4dC5CTEVORF9TUkNfQUxQSEEsIDApJywgJ2dsLlpFUk8nKTsNCisgICAgc2hvdWxkQmUoJ2ds
LmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0RTVF9BTFBIQSwgMCknLCAnZ2wuWkVSTycp
Ow0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJ
T05fUkdCLCAxKScsICdnbC5GVU5DX0FERCcpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEsIDEpJywgJ2dsLkZVTkNfU1VCVFJB
Q1QnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NS
Q19SR0IsIDEpJywgJ2dsLlNSQ19BTFBIQScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihleHQuQkxFTkRfRFNUX1JHQiwgMSknLCAnZ2wuT05FX01JTlVTX1NSQ19BTFBI
QScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfU1JD
X0FMUEhBLCAxKScsICdnbC5aRVJPJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKGV4dC5CTEVORF9EU1RfQUxQSEEsIDEpJywgJ2dsLlpFUk8nKTsNCisNCisgICAgc2hv
dWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkNPTE9SX1dSSVRFTUFTSywgMCknLCAn
W2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5k
ZXhlZFBhcmFtZXRlcihleHQuQ09MT1JfV1JJVEVNQVNLLCAxKScsICdbdHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZV0nKTsNCisNCisgICAgZGVidWcoIlRlc3Rpbmcgbm9uLWluZGV4ZWQgZ2V0UGFyYW10
ZXIgZ2V0IHN0YXRlIGZyb20gZHJhdyBidWZmZXIgMCIpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0
UGFyYW1ldGVyKGdsLkJMRU5EX1NSQ19SR0IpJywgJ2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgn
Z2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0RTVF9SR0IpJywgJ2dsLk9ORScpOw0KKyAgICBzaG91
bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX1NSQ19BTFBIQSknLCAnZ2wuWkVSTycpOw0K
KyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0RTVF9BTFBIQSknLCAnZ2wu
WkVSTycpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0VRVUFUSU9O
X1JHQiknLCAnZ2wuRlVOQ19BREQnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihn
bC5CTEVORF9FUVVBVElPTl9BTFBIQSknLCAnZ2wuRlVOQ19TVUJUUkFDVCcpOw0KKyAgICBzaG91
bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9SX1dSSVRFTUFTSyknLCAnW2ZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlXScpOw0KKw0KKyAgICBkZWJ1ZygiVGVzdGluZyBub24taW5kZXhlZCBj
YWxscyBtb2RpZnkgYWxsIGRyYXcgYnVmZmVycyBzdGF0ZSIpOw0KKyAgICBnbC5ibGVuZEVxdWF0
aW9uU2VwYXJhdGUoZ2wuRlVOQ19TVUJUUkFDVCwgZ2wuRlVOQ19BREQpOw0KKyAgICBnbC5ibGVu
ZEZ1bmNTZXBhcmF0ZShnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLCBnbC5EU1RfQUxQSEEsIGdsLk9O
RSwgZ2wuT05FKTsNCisgICAgZ2wuY29sb3JNYXNrKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7
DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdOb24taW5kZXhlZCBzdGF0ZSBzZXQg
d2l0aG91dCBlcnJvcnMnKTsNCisNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5C
TEVORF9FUVVBVElPTl9SR0IpJywgJ2dsLkZVTkNfU1VCVFJBQ1QnKTsNCisgICAgc2hvdWxkQmUo
J2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9BTFBIQSknLCAnZ2wuRlVOQ19BREQn
KTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9TUkNfUkdCKScsICdn
bC5PTkVfTUlOVVNfRFNUX0FMUEhBJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIo
Z2wuQkxFTkRfRFNUX1JHQiknLCAnZ2wuRFNUX0FMUEhBJyk7DQorICAgIHNob3VsZEJlKCdnbC5n
ZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfU1JDX0FMUEhBKScsICdnbC5PTkUnKTsNCisgICAgc2hvdWxk
QmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9EU1RfQUxQSEEpJywgJ2dsLk9ORScpOw0KKyAg
ICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9SX1dSSVRFTUFTSyknLCAnW3RydWUs
IGZhbHNlLCB0cnVlLCBmYWxzZV0nKTsNCisNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQ
YXJhbWV0ZXIoZXh0LkJMRU5EX0VRVUFUSU9OX1JHQiwgMCknLCAnZ2wuRlVOQ19TVUJUUkFDVCcp
Ow0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJ
T05fQUxQSEEsIDApJywgJ2dsLkZVTkNfQUREJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRl
eGVkUGFyYW1ldGVyKGV4dC5CTEVORF9TUkNfUkdCLCAwKScsICdnbC5PTkVfTUlOVVNfRFNUX0FM
UEhBJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9E
U1RfUkdCLCAwKScsICdnbC5EU1RfQUxQSEEnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4
ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19BTFBIQSwgMCknLCAnZ2wuT05FJyk7DQorICAgIHNo
b3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfQUxQSEEsIDApJywg
J2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxF
TkRfRVFVQVRJT05fUkdCLCAxKScsICdnbC5GVU5DX1NVQlRSQUNUJyk7DQorICAgIHNob3VsZEJl
KCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9FUVVBVElPTl9BTFBIQSwgMSknLCAn
Z2wuRlVOQ19BREQnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0
LkJMRU5EX1NSQ19SR0IsIDEpJywgJ2dsLk9ORV9NSU5VU19EU1RfQUxQSEEnKTsNCisgICAgc2hv
dWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0RTVF9SR0IsIDEpJywgJ2ds
LkRTVF9BTFBIQScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQu
QkxFTkRfU1JDX0FMUEhBLCAxKScsICdnbC5PTkUnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0RTVF9BTFBIQSwgMSknLCAnZ2wuT05FJyk7DQorDQor
ICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5DT0xPUl9XUklURU1BU0ss
IDApJywgJ1t0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdJyk7DQorICAgIHNob3VsZEJlKCdnbC5n
ZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5DT0xPUl9XUklURU1BU0ssIDEpJywgJ1t0cnVlLCBmYWxz
ZSwgdHJ1ZSwgZmFsc2VdJyk7DQorfQ0KKw0KK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7
DQorICAgIHNldHVwKCk7DQorDQorICAgIGVuYWJsZURpc2FibGVUZXN0KCk7DQorDQorICAgIC8v
IGJsZW5kaW5nIHNob3VsZCBiZSBlbmFibGVkIGZvciBkcmF3QnVmZmVycyAwIGFuZCAxIGF0IHRo
aXMgcG9pbnQNCisNCisgICAgY29uc3RhbnRBbHBoYUJsZW5kQ29sb3JWYWxpZGF0aW9uVGVzdCgp
Ow0KKw0KKyAgICBpbmRleGVkQmxlbmRDb2xvclRlc3QoKTsNCit9DQorDQorZnVuY3Rpb24gcnVu
SW52YWxpZEVudW1zVGVzdCgpIHsNCisgICAgZGVidWcoIlRlc3RpbmcgbmV3IGVudW1zIGZvciBn
ZXRJbmRleGVkUGFyYW1ldGVyVGVzdCBiZWluZyBpbnZhbGlkIGJlZm9yZSByZXF1ZXN0aW5nIHRo
ZSBleHRlbnNpb24iKTsNCisgICAgZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcigweDgwMDksIDApOyAg
Ly8gQkxFTkRfRVFVQVRJT05fUkdCDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfRU5VTSwgJ0JMRU5EX0VRVUFUSU9OX1JHQicpOw0KKyAgICBnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKDB4ODgzRCwgMCk7ICAvLyBCTEVORF9FUVVBVElPTl9BTFBIQQ0KKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICdCTEVORF9FUVVBVElPTl9BTFBIQScp
Ow0KKyAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4ODBDOSwgMCk7ICAvLyBCTEVORF9TUkNf
UkdCDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5E
X1NSQ19SR0InKTsNCisgICAgZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcigweDgwQ0IsIDApOyAgLy8g
QkxFTkRfU1JDX0FMUEhBDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
RU5VTSwgJ0JMRU5EX1NSQ19BTFBIQScpOw0KKyAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4
ODBDOCwgMCk7ICAvLyBCTEVORF9EU1RfUkdCDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX0RTVF9SR0InKTsNCisgICAgZ2wuZ2V0SW5kZXhlZFBh
cmFtZXRlcigweDgwQ0EsIDApOyAgLy8gQkxFTkRfRFNUX0FMUEhBDQorICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX0RTVF9BTFBIQScpOw0KKyAgICBn
bC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4MEMyMywgMCk7ICAvLyBDT0xPUl9XUklURU1BU0sNCisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgW2dsLklOVkFMSURfT1BFUkFUSU9OLCBnbC5JTlZB
TElEX0VOVU1dLCAnaW52YWxpZCBvcGVyYXRpb25zIG9yIGludmFsaWQgZW51bXMgZm9yIENPTE9S
X1dSSVRFTUFTSycpOw0KK30NCisNCitmdW5jdGlvbiBydW5UZXN0KCkgew0KKyAgaWYgKCFnbCkg
ew0KKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7DQorICB9IGVsc2Ug
ew0KKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOw0KKw0KKyAgICBydW5JbnZhbGlk
RW51bXNUZXN0KCk7DQorDQorICAgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigiT0VTX2RyYXdfYnVm
ZmVyc19pbmRleGVkIik7DQorDQorICAgIHd0dS5ydW5FeHRlbnNpb25TdXBwb3J0ZWRUZXN0KGds
LCAiT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIiwgZXh0ICE9PSBudWxsKTsNCisNCisgICAgaWYg
KGV4dCAhPT0gbnVsbCkgew0KKyAgICAgIHJ1blRlc3RFeHRlbnNpb24oKTsNCisgICAgfSBlbHNl
IHsNCisgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfZHJhd19idWZmZXJzX2luZGV4ZWQgc3VwcG9y
dCAtLSB0aGlzIGlzIGxlZ2FsIik7DQorICAgIH0NCisgIH0NCit9DQorDQorcnVuVGVzdCgpOw0K
Kw0KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOw0KKzwvc2NyaXB0Pg0KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0
bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211bHRpdmlldzIuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRl
bnNpb25zL292cl9tdWx0aXZpZXcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE3NGQxMzk4YjMxNTc4OGNl
OGFiZTZlODAyYmRkNmExYTQ3N2YyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292
cl9tdWx0aXZpZXcyLmh0bWwKQEAgLTAsMCArMSw1MjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIE9WUl9tdWx0aXZpZXcyIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL292cl9t
dWx0aXZpZXcyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0icmVxdWlyZURlZmluZV9H
TF9PVlJfbXVsdGl2aWV3MiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAw
IGVzCisjaWZuZGVmIEdMX09WUl9tdWx0aXZpZXcyCisgICAgI2Vycm9yIG5vIEdMX09WUl9tdWx0
aXZpZXcyCisjZW5kaWYKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdD
b2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAw
LjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZvcmJpZERlZmluZV9HTF9PVlJf
bXVsdGl2aWV3IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKyNp
ZmRlZiBHTF9PVlJfbXVsdGl2aWV3CisgICAgI2Vycm9yIGxlZ2FjeSBHTF9PVlJfbXVsdGl2aWV3
IHN1cHBvcnQgbXVzdCBiZSBmb3JiaWRkZW4KKyNlbmRpZgorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
Oworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
bGVnYWN5TXVsdGl2aWV3MVNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNp
b24gMzAwIGVzCisjZXh0ZW5zaW9uIEdMX09WUl9tdWx0aXZpZXc6IHJlcXVpcmUKK3ByZWNpc2lv
biBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAg
ICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitsZXQgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7CitsZXQgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KG51bGwsIG51bGwsIDIp
OworbGV0IGV4dCA9IG51bGw7CisKK2Z1bmN0aW9uIHJ1bkV4dGVuc2lvbkRpc2FibGVkVGVzdCgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJpZXMgd2l0aCBleHRl
bnNpb24gZGlzYWJsZWQiKTsKKworICAgIGxldCBtYXhWaWV3cyA9IGdsLmdldFBhcmFtZXRlcigw
eDk2MzEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIkNh
bid0IHF1ZXJ5IE1BWF9WSUVXU19PVlIgd2l0aG91dCBlbmFibGluZyBPVlJfbXVsdGl2aWV3MiIp
OworCisgICAgbGV0IGJhc2VWaWV3SW5kZXggPSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkJBQ0ssIDB4OTYzMCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiQ2FuJ3QgcXVlcnkgRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0JBU0VfVklFV19JTkRFWF9PVlIgd2l0aG91dCBlbmFibGluZyBP
VlJfbXVsdGl2aWV3MiIpOworICAgIGxldCBudW1WaWV3cyA9IGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgMHg5NjMyKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJDYW4ndCBxdWVyeSBGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTlVNX1ZJRVdTX09WUiB3aXRob3V0IGVuYWJsaW5n
IE9WUl9tdWx0aXZpZXcyIik7Cit9CisKK2Z1bmN0aW9uIHJ1blF1ZXJ5VGVzdCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5aW5nIE1BWF9WSUVXU19PVlIiKTsK
KworICAgIGxldCBtYXhWaWV3cyA9IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8g
ZXJyb3JzIGZyb20gcXVlcnlpbmcgTUFYX1ZJRVdTX09WUiIpOworICAgIGlmICh0eXBlb2YgbWF4
Vmlld3MgIT0gJ251bWJlcicpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVHlwZSBvZiB0aGUgdmFs
dWUgb2YgTUFYX1ZJRVdTX09WUiBzaG91bGQgYmUgbnVtYmVyLCB3YXMgIiArICh0eXBlb2YgbWF4
Vmlld3MpKTsKKyAgICB9CisgICAgaWYgKG1heFZpZXdzIDwgMikgeworICAgICAgICB0ZXN0RmFp
bGVkKCJWYWx1ZSBvZiBNQVhfVklFV1NfT1ZSIHNob3VsZCBiZSBhdCBsZWFzdCB0d28sIHdhczog
IiArIG1heFZpZXdzKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkRlZmF1bHRGcmFtZWJ1ZmZl
clF1ZXJ5VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5
aW5nIGJhc2UgdmlldyBpbmRleCBhbmQgbnVtIHZpZXdzIG9uIHRoZSBkZWZhdWx0IGZyYW1lYnVm
ZmVyIik7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAg
ICAvLyBTYW1lIGJlaGF2aW9yIGFzIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlF
UjoKKyAgICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkJBQ0ssIGV4dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQkFTRV9WSUVX
X0lOREVYX09WUik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVN
LCAiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0JBU0VfVklFV19JTkRFWF9PVlIgaXMg
SU5WQUxJRF9FTlVNIGZvciBkZWZhdWx0IGZyYW1lYnVmZmVyIik7CisgICAgZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5CQUNLLCBleHQuRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX05VTV9WSUVXU19PVlIpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9OVU1fVklFV1NfT1ZSIGlzIElOVkFMSURfRU5VTSBmb3IgZGVmYXVsdCBmcmFtZWJ1
ZmZlciIpOworfQorCitmdW5jdGlvbiBydW5JbnZhbGlkVGV4dHVyZVR5cGVUZXN0KCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgaW52YWxpZCB0ZXh0dXJlIHR5cGVzIik7
CisgICAgbGV0IHRleDJEID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRF
WFRVUkVfMkQpOworICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBnbC5SR0JB
OCwgMTI4LCAxMjgpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCB0ZXgyRCwgMCwgMCwgMSk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJzaG91bGQgbm90
IGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIG11bHRpdmlldyBmcmFtZWJ1ZmZlciBhZ2FpbnN0IGEg
MkQgdGV4dHVyZSIpOworCisgICAgbGV0IHRleEN1YmUgPSBjcmVhdGVUZXh0dXJlV2l0aE5lYXJl
c3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV9DVUJFX01BUCk7CisgICAgZ2wudGV4U3RvcmFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVAsIDEsIGdsLlJHQkE4LCAxMjgsIDEyOCk7CisgICAgZXh0LmZyYW1l
YnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIHRleEN1YmUsIDAsIDAsIDEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAic2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB0byBjcmVhdGUgYSBt
dWx0aXZpZXcgZnJhbWVidWZmZXIgYWdhaW5zdCBhIGN1YmUgbWFwIHRleHR1cmUiKTsKKworICAg
IGxldCB0ZXgzRCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5URVhUVVJF
XzNEKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMSwgZ2wuUkdCQTgsIDEy
OCwgMTI4LCAyKTsKKyAgICBleHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4M0QsIDAsIDAsIDIpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAic2hvdWxkIG5vdCBi
ZSBwb3NzaWJsZSB0byBjcmVhdGUgYSBtdWx0aXZpZXcgZnJhbWVidWZmZXIgYWdhaW5zdCBhIDNE
IHRleHR1cmUiKTsKK30KKworLyoqCisgKiBJZiBhbGxvY2F0ZVN0b3JhZ2UgaXMgdHJ1ZSwgdGhl
IHRlc3Qgd2lsbCBhbGxvY2F0ZSB0ZXh0dXJlIHN0b3JhZ2UuIElmIGl0IGlzIGZhbHNlLCBhdHRh
Y2htZW50cyBhcmUgZG9uZSB3aXRob3V0IGFsbG9jYXRpb25zLgorICovCitmdW5jdGlvbiBydW5G
cmFtZWJ1ZmZlclF1ZXJ5VGVzdChhbGxvY2F0ZVN0b3JhZ2UpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5aW5nIGF0dGFjaG1lbnQgb2JqZWN0IHR5cGUsIGJhc2VW
aWV3SW5kZXgsIG51bVZpZXdzIGFuZCBmcmFtZWJ1ZmZlciBzdGF0dXMuIFRleHR1cmUgc3RvcmFn
ZSBpcyAiICsgKGFsbG9jYXRlU3RvcmFnZSA/ICJhbGxvY2F0ZWQiIDogIm5vdCBhbGxvY2F0ZWQi
KSArICIuIik7CisKKyAgICBsZXQgY2hlY2tRdWVyeVJlc3VsdCA9IGZ1bmN0aW9uKGFjdHVhbCwg
ZXhwZWN0ZWQsIG5hbWUpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCAnICsgbmFtZSArICc6ICcgKyBhY3R1YWwg
KyAnIHdoZW4gaXQgd2FzIHNldCB0byAnICsgZXhwZWN0ZWQpOworICAgICAgICB9ICBlbHNlIHsK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQobmFtZSArICcgd2FzICcgKyBhY3R1YWwgKyAnIHdoZW4g
cXVlcmllZCBmcm9tIHRoZSBmcmFtZWJ1ZmZlcicpOworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IHNldHVwQW5kUXVlcnkgPSBmdW5jdGlvbihjb2xvclRleCwgbGV2ZWxTZXQsIGJhc2VWaWV3
SW5kZXhTZXQsIG51bVZpZXdzU2V0KSB7CisgICAgICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVN
dWx0aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRl
eCwgbGV2ZWxTZXQsIGJhc2VWaWV3SW5kZXhTZXQsIG51bVZpZXdzU2V0KTsKKyAgICAgICAgbGV0
IG9iamVjdFR5cGUgPSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFKTsKKyAgICAgICAgaWYgKG9iamVjdFR5cGUgIT0gZ2wuVEVYVFVSRSkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFICcgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIG9iamVjdFR5cGUpICsgJywg
c2hvdWxkIGJlIFRFWFRVUkUnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUgd2FzIFRFWFRVUkUnKTsK
KyAgICAgICAgfQorCisgICAgICAgIGxldCBsZXZlbCA9IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCk7CisgICAgICAgIGNoZWNrUXVlcnlS
ZXN1bHQobGV2ZWwsIGxldmVsU2V0LCAibGV2ZWwiKTsKKworICAgICAgICBsZXQgdGV4dHVyZU5h
bWUgPSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FKTsKKyAgICAgICAgY2hlY2tRdWVyeVJlc3VsdCh0ZXh0dXJlTmFtZSwgY29sb3JUZXgsICJ0
ZXh0dXJlIG9iamVjdCIpOworCisgICAgICAgIGxldCBiYXNlVmlld0luZGV4ID0gZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZXh0LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9CQVNFX1ZJRVdfSU5E
RVhfT1ZSKTsKKyAgICAgICAgY2hlY2tRdWVyeVJlc3VsdChiYXNlVmlld0luZGV4LCBiYXNlVmll
d0luZGV4U2V0LCAiYmFzZVZpZXdJbmRleCIpOworCisgICAgICAgIGxldCBudW1WaWV3cyA9IGds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGV4dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTlVNX1ZJ
RVdTX09WUik7CisgICAgICAgIGNoZWNrUXVlcnlSZXN1bHQobnVtVmlld3MsIG51bVZpZXdzU2V0
LCAibnVtVmlld3MiKTsKKworICAgICAgICBsZXQgbGF5ZXIgPSBnbC5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIpOworICAgICAgICBjaGVja1F1
ZXJ5UmVzdWx0KGxheWVyLCBiYXNlVmlld0luZGV4U2V0LCAidGV4dHVyZSBsYXllciAoc2hvdWxk
IG1hdGNoIGJhc2VWaWV3SW5kZXgpIik7CisgICAgfQorCisgICAgbGV0IHNldHVwU2Vjb25kQXR0
YWNobWVudEFuZFF1ZXJ5U3RhdHVzID0gZnVuY3Rpb24oY29sb3JUZXgyLCBiYXNlVmlld0luZGV4
LCBudW1WaWV3cywgZXhwZWN0ZWRTdGF0dXMsIG1zZykgeworICAgICAgICBleHQuZnJhbWVidWZm
ZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MSwgY29sb3JUZXgyLCAwLCBiYXNlVmlld0luZGV4LCBudW1WaWV3cyk7CisgICAgICAgIGxldCBz
dGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAg
ICAgaWYgKHN0YXR1cyAhPSBleHBlY3RlZFN0YXR1cykgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgnRnJhbWVidWZmZXIgc3RhdHVzOiAnICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBzdGF0dXMp
ICsgJyBkaWQgbm90IG1hdGNoIHdpdGggdGhlIGV4cGVjdGVkIHZhbHVlOiAnICsgd3R1LmdsRW51
bVRvU3RyaW5nKGdsLCBleHBlY3RlZFN0YXR1cykgKyAnIC0gJyArIG1zZyk7CisgICAgICAgIH0g
IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgnRnJhbWVidWZmZXIgc3RhdHVzOiAnICsg
d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBzdGF0dXMpICsgJyBtYXRjaGVkIHdpdGggdGhlIGV4cGVj
dGVkIHZhbHVlIC0gJyArIG1zZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgbWF4Vmll
d3MgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9WSUVXU19PVlIpOworCisgICAgbGV0IGZiID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiKTsKKyAgICBsZXQgYmFzZVZpZXdJbmRleCA9IGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGV4
dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQkFTRV9WSUVXX0lOREVYX09WUik7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeWlu
ZyBiYXNlVmlld0luZGV4IGZyb20gYSBub25leGlzdGVudCBhdHRhY2htZW50Iik7CisgICAgaWYg
KGJhc2VWaWV3SW5kZXggIT0gbnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVk
IGJhc2VWaWV3SW5kZXggJyArIGJhc2VWaWV3SW5kZXggKyAnIG9uIGEgZnJhbWVidWZmZXIgd2l0
aG91dCBhdHRhY2htZW50cycpOworICAgIH0gIGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCdR
dWVyeWluZyBiYXNlVmlld0luZGV4IHJldHVybmVkIG51bGwgb24gYSBmcmFtZWJ1ZmZlciB3aXRo
b3V0IGF0dGFjaG1lbnRzJyk7CisgICAgfQorICAgIGxldCBudW1WaWV3cyA9IGdsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGV4dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTlVNX1ZJRVdTX09WUik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJRdWVy
eWluZyBudW1WaWV3cyBmcm9tIGEgbm9uZXhpc3RlbnQgYXR0YWNobWVudCIpOworICAgIGlmIChu
dW1WaWV3cyAhPSBudWxsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWQgbnVtVmll
d3MgJyArIG51bVZpZXdzICsgJyBvbiBhIGZyYW1lYnVmZmVyIHdpdGhvdXQgYXR0YWNobWVudHMn
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCdRdWVyeWluZyBudW1WaWV3cyBy
ZXR1cm5lZCBudWxsIG9uIGEgZnJhbWVidWZmZXIgd2l0aG91dCBhdHRhY2htZW50cycpOworICAg
IH0KKworICAgIGxldCBjb2xvclRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmlu
ZyhnbC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgICBpZiAoYWxsb2NhdGVTdG9yYWdlKSB7CisgICAg
ICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAyLCBnbC5SR0JBOCwgMTI4
LCAxMjgsIG1heFZpZXdzKTsKKyAgICB9CisgICAgc2V0dXBBbmRRdWVyeShjb2xvclRleCwgMCwg
MCwgbWF4Vmlld3MpOworICAgIHNldHVwQW5kUXVlcnkoY29sb3JUZXgsIDEsIDAsIDIpOworICAg
IHNldHVwQW5kUXVlcnkoY29sb3JUZXgsIDAsIDEsIG1heFZpZXdzIC0gMSk7CisKKyAgICAvLyBU
ZXN0IG1hdGNoaW5nIGFuZCBtaXNtYXRjaGluZyBhdHRhY2htZW50cyBmb3IgZnJhbWVidWZmZXIg
c3RhdHVzLgorICAgIGxldCBjb2xvclRleDIgPSBjcmVhdGVUZXh0dXJlV2l0aE5lYXJlc3RGaWx0
ZXJpbmcoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgaWYgKGFsbG9jYXRlU3RvcmFnZSkgewor
ICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgs
IDEyOCwgMTI4LCBtYXhWaWV3cyk7CisgICAgfQorICAgIHNldHVwU2Vjb25kQXR0YWNobWVudEFu
ZFF1ZXJ5U3RhdHVzKGNvbG9yVGV4MiwgMSwgbWF4Vmlld3MgLSAxLCBhbGxvY2F0ZVN0b3JhZ2Ug
PyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSA6IGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRU
QUNITUVOVCwgJ21hdGNoaW5nIGJhc2VWaWV3SW5kZXggYW5kIG51bVZpZXdzIG9uIGRpZmZlcmVu
dCBhdHRhY2htZW50cycpOworICAgIGlmIChhbGxvY2F0ZVN0b3JhZ2UpIHsKKyAgICAgICAgc2V0
dXBTZWNvbmRBdHRhY2htZW50QW5kUXVlcnlTdGF0dXMoY29sb3JUZXgyLCAwLCBtYXhWaWV3cyAt
IDEsIGV4dC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX1ZJRVdfVEFSR0VUU19PVlIsICdiYXNlVmll
d0luZGV4IG1pc21hdGNoJyk7CisgICAgICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZp
ZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwg
MCwgbWF4Vmlld3MpOworICAgICAgICBzZXR1cFNlY29uZEF0dGFjaG1lbnRBbmRRdWVyeVN0YXR1
cyhjb2xvclRleDIsIDAsIG1heFZpZXdzIC0gMSwgZXh0LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
VklFV19UQVJHRVRTX09WUiwgJ251bVZpZXdzIG1pc21hdGNoJyk7CisgICAgfQorCisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZy
b20gZnJhbWVidWZmZXIgcXVlcmllcyIpOworfQorCitmdW5jdGlvbiBydW5JbnZhbGlkVmlld3NU
ZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgaW52YWxpZCBvdXQt
b2YtcmFuZ2UgdmFsdWVzIGZvciBiYXNlVmlld0luZGV4IGFuZCBudW1WaWV3cyIpOworCisgICAg
bGV0IG1heFZpZXdzID0gZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfVklFV1NfT1ZSKTsKKyAgICBs
ZXQgbWF4TGF5ZXJzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9BUlJBWV9URVhUVVJFX0xBWUVS
Uyk7CisKKyAgICBsZXQgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0g
Y3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOwor
ICAgIC8vIERvbid0IGFsbG9jYXRlIHN0b3JhZ2Ugc2luY2UgaXQncyBub3QgbmVlZGVkIGZvciB0
aGUgdmFsaWRhdGlvbi4KKyAgICBleHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGds
LkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwg
bWF4Vmlld3MgKyAxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZB
TFVFLCAiU3BlY2lmaWVkIHRvbyBtYW55IHZpZXdzIik7CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4
dHVyZU11bHRpdmlld09WUihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgY29sb3JUZXgsIDAsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfVkFMVUUsICJTcGVjaWZpZWQgemVybyB2aWV3cyIpOworICAgIGV4dC5mcmFtZWJ1ZmZl
clRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGNvbG9yVGV4LCAwLCAtMSwgMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgIlNwZWNpZmllZCBuZWdhdGl2ZSBiYXNlVmlld0luZGV4Iik7CisK
KyAgICBsZXQgY29sb3JUZXgyID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGds
LlRFWFRVUkVfMkRfQVJSQVkpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdP
VlIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4Miwg
MCwgbWF4TGF5ZXJzIC0gbWF4Vmlld3MgKyAxLCBtYXhWaWV3cyk7CisgICAgLy8gYmFzZVZpZXdJ
bmRleCArIG51bVZpZXdzICA9ICAobWF4TGF5ZXJzIC0gbWF4Vmlld3MgKyAxKSArIG1heFZpZXdz
ICA9ICBtYXhMYXllcnMgKyAxCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9WQUxVRSwgIlNwZWNpZmllZCBzbyBtYW55IHZpZXdzIHRoYXQgYmFzZVZpZXdJbmRleCArIG51
bVZpZXdzIGlzIGdyZWF0ZXIgdGhhbiBNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMiKTsKKyAgICBl
eHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleDIsIDAsIG1heExheWVycyAtIG1heFZpZXdzLCBt
YXhWaWV3cyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJiYXNl
Vmlld0luZGV4ICsgbnVtVmlld3MgaXMgZXhhY3RseSBNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMi
KTsKK30KKworZnVuY3Rpb24gcnVuRGV0YWNoVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJUZXN0aW5nIGRldGFjaGluZyBtdWx0aXZpZXcgYXR0YWNobWVudHMiKTsKKworICAg
IGxldCBtYXhWaWV3cyA9IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7CisgICAg
bGV0IG1heExheWVycyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQVJSQVlfVEVYVFVSRV9MQVlF
UlMpOworCisgICAgbGV0IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmIpOworICAgIGxldCBjb2xvclRleCA9
IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5URVhUVVJFXzJEX0FSUkFZKTsK
KyAgICBleHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgbWF4Vmlld3MpOworICAg
IGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRFJBV19GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIG51bGwsIDAsIG1heExheWVycyArIDEsIDApOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYmFzZVZpZXdJbmRleCBhbmQgbnVt
Vmlld3MgYXJlIG5vdCB2YWxpZGF0ZWQgd2hlbiBkZXRhY2hpbmciKTsKKyAgICBsZXQgb2JqZWN0
VHlwZSA9IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5EUkFXX0ZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfVFlQRSk7CisgICAgaWYgKG9iamVjdFR5cGUgIT0gZ2wuTk9ORSkgeworICAgICAgICB0
ZXN0RmFpbGVkKCdVbmV4cGVjdGVkIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUg
JyArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgb2JqZWN0VHlwZSkgKyAnIGFmdGVyIGRldGFjaCwg
c2hvdWxkIGJlIE5PTkUnKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCdGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFIHdhcyBOT05FIGFmdGVyIGRldGFjaCcpOwor
ICAgIH0KKworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRFJBV19G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCBtYXhWaWV3
cyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiQ2FuIGRldGFjaCB3aXRoIGZyYW1lYnVmZmVy
VGV4dHVyZTJEIGFzIHdlbGwuIik7CisgICAgb2JqZWN0VHlwZSA9IGdsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgaWYgKG9i
amVjdFR5cGUgIT0gZ2wuTk9ORSkgeworICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVkIEZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUgJyArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgb2JqZWN0VHlwZSkgKyAnIGFmdGVyIGRldGFjaCwgc2hvdWxkIGJlIE5PTkUnKTsKKyAgICB9
IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9UWVBFIHdhcyBOT05FIGFmdGVyIGRldGFjaCcpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVu
U2hhZGVyQ29tcGlsZVRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlRlc3Rpbmcgc2hhZGVyIGNvbXBpbGVzIHdpdGggZXh0ZW5zaW9uICIgKyAoZXh0
ZW5zaW9uRW5hYmxlZCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpKTsKKworICAgIGxldCBwcm9n
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3d0dS5zaW1wbGVWZXJ0ZXhTaGFkZXJFU1NMMzAwLCAi
cmVxdWlyZURlZmluZV9HTF9PVlJfbXVsdGl2aWV3MiJdLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
dHJ1ZSk7CisgICAgZXhwZWN0VHJ1ZSghZXh0ZW5zaW9uRW5hYmxlZCA9PSAhcHJvZywKKyAgICAg
ICAgICAgICAgICJHTF9PVlJfbXVsdGl2aWV3MiBtdXN0IGJlIGRlZmluZWQgYnkgdGhlIHByZXBy
b2Nlc3NvciBpZmYgT1ZSX211bHRpdmlldzIgaXMgZW5hYmxlZCBieSBnZXRFeHRlbnNpb24uIik7
CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgcHJvZyA9IHd0dS5zZXR1cFBy
b2dyYW0oZ2wsIFt3dHUuc2ltcGxlVmVydGV4U2hhZGVyRVNTTDMwMCwgImZvcmJpZERlZmluZV9H
TF9PVlJfbXVsdGl2aWV3Il0sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTsKKyAgICAgICAg
ZXhwZWN0VHJ1ZShwcm9nLCAiR0xfT1ZSX211bHRpdmlldyBtdXN0IG5ldmVyIGJlIGRlZmluZWQg
YnkgdGhlIHByZXByb2Nlc3Nvci4iKTsKKworICAgICAgICBwcm9nID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgW3d0dS5zaW1wbGVWZXJ0ZXhTaGFkZXJFU1NMMzAwLCAibGVnYWN5TXVsdGl2aWV3MVNo
YWRlciJdLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgICAgIGV4cGVjdFRydWUo
IXByb2csICIjZXh0ZW5zaW9uIEdMX09WUl9tdWx0aXZpZXcgbXVzdCBiZSBmb3JiaWRkZW4uIik7
CisgICAgfQorCisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgIGxldCBtdWx0
aXZpZXdTaGFkZXJzID0gWworICAgICAgICAgIGdldE11bHRpdmlld1Bhc3N0aHJvdWdoVmVydGV4
U2hhZGVyKDIpLAorICAgICAgICAgIGdldE11bHRpdmlld0NvbG9yRnJhZ21lbnRTaGFkZXIoKQor
ICAgICAgICBdOworICAgICAgICBsZXQgdGVzdFByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGds
LCBtdWx0aXZpZXdTaGFkZXJzLCBbJ2FfcG9zaXRpb24nXSwgWzBdLCB0cnVlKTsKKyAgICAgICAg
aWYgKHRlc3RQcm9ncmFtKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlvbiBv
ZiBzaGFkZXJzIHVzaW5nIGV4dGVuc2lvbiBmdW5jdGlvbmFsaXR5IHN1Y2NlZWRlZCB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgZGlzYWJsZWQsIHNob3VsZCBmYWlsLiIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29tcGlsYXRpb24gb2Ygc2hhZGVycyB1c2luZyBl
eHRlbnNpb24gZnVuY3Rpb25hbGl0eSBzaG91bGQgZmFpbCB3aGVuIHRoZSBleHRlbnNpb24gaXMg
ZGlzYWJsZWQuIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkNsZWFyVGVz
dCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQgY2FsbGluZyBj
bGVhcigpIGNsZWFycyBhbGwgdmlld3MiKTsKKworICAgIGxldCB3aWR0aCA9IDI1NjsKKyAgICBs
ZXQgaGVpZ2h0ID0gMjU2OworCisgICAgbGV0IHZpZXdzID0gZ2wuZ2V0UGFyYW1ldGVyKGV4dC5N
QVhfVklFV1NfT1ZSKTsKKworICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9y
VGV4ID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJS
QVkpOworICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JB
OCwgd2lkdGgsIGhlaWdodCwgdmlld3MpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0
aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwg
MCwgMCwgdmlld3MpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisK
KyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDEsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hv
dWxkIGJlIG5vIGVycm9ycyBmcm9tIGNsZWFyIik7CisKKyAgICBsZXQgcmVhZEZiID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJV
RkZFUiwgcmVhZEZiKTsKKyAgICBmb3IgKGxldCB2aWV3SW5kZXggPSAwOyB2aWV3SW5kZXggPCB2
aWV3czsgKyt2aWV3SW5kZXgpIHsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIo
Z2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCB2
aWV3SW5kZXgpOworICAgICAgICBsZXQgZXhwZWN0ZWRDb2xvciA9IFswLCAyNTUsIDI1NSwgMjU1
XTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwg
ZXhwZWN0ZWRDb2xvciwgJ3ZpZXcgJyArIHZpZXdJbmRleCArICcgc2hvdWxkIGJlIGN5YW4nKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkZyYWdtZW50U2hhZGVyUmVuZGVyVGVzdCgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHJlbmRlcmluZyB3aXRoIGRpZmZlcmVu
dCBjb2xvcnMgaW4gZnJhZ21lbnQgc2hhZGVyIik7CisKKyAgICBsZXQgd2lkdGggPSAyNTY7Cisg
ICAgbGV0IGhlaWdodCA9IDI1NjsKKworICAgIGxldCB2aWV3cyA9IGdsLmdldFBhcmFtZXRlcihl
eHQuTUFYX1ZJRVdTX09WUik7CisKKyAgICBsZXQgbXVsdGl2aWV3U2hhZGVycyA9IFsKKyAgICAg
IGdldE11bHRpdmlld1Bhc3N0aHJvdWdoVmVydGV4U2hhZGVyKHZpZXdzKSwKKyAgICAgIGdldE11
bHRpdmlld0NvbG9yRnJhZ21lbnRTaGFkZXIoKQorICAgIF07CisgICAgbGV0IHRlc3RQcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgbXVsdGl2aWV3U2hhZGVycywgWydhX3Bvc2l0aW9uJ10s
IFswXSwgdHJ1ZSk7CisgICAgaWYgKCF0ZXN0UHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJDb21waWxhdGlvbiB3aXRoIGV4dGVuc2lvbiBlbmFibGVkIGZhaWxlZC4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9y
VGV4ID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJS
QVkpOworICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JB
OCwgd2lkdGgsIGhlaWdodCwgdmlld3MpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0
aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwg
MCwgMCwgdmlld3MpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAgbGV0IHJl
YWRGYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7CisgICAgZm9yIChsZXQgdmlld0luZGV4ID0gMDsg
dmlld0luZGV4IDwgdmlld3M7ICsrdmlld0luZGV4KSB7CisgICAgICAgIGdsLmZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBj
b2xvclRleCwgMCwgdmlld0luZGV4KTsKKyAgICAgICAgbGV0IGV4cGVjdGVkQ29sb3IgPSBnZXRF
eHBlY3RlZENvbG9yKHZpZXdJbmRleCk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDAsIDAsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkQ29sb3IsICd2aWV3ICcgKyB2aWV3SW5kZXgg
KyAnIHNob3VsZCBiZSBjb2xvcmVkICcgKyBleHBlY3RlZENvbG9yKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHJ1blZlcnRleFNoYWRlclJlbmRlclRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiVGVzdGluZyByZW5kZXJpbmcgd2l0aCBkaWZmZXJlbnQgY29sb3JzIGluIGZyYWdt
ZW50IHNoYWRlciwgZGlmZmVyZW50IG9mZnNldHMgaW4gdmVydGV4IHNoYWRlciIpOworCisgICAg
bGV0IHdpZHRoID0gMjU2OworICAgIGxldCBoZWlnaHQgPSAyNTY7CisKKyAgICBsZXQgdmlld3Mg
PSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9WSUVXU19PVlIpOworCisgICAgbGV0IG11bHRpdmll
d1NoYWRlcnMgPSBbCisgICAgICBnZXRNdWx0aXZpZXdPZmZzZXRWZXJ0ZXhTaGFkZXIodmlld3Mp
LAorICAgICAgZ2V0TXVsdGl2aWV3Q29sb3JGcmFnbWVudFNoYWRlcigpCisgICAgXTsKKworICAg
IGxldCB0ZXN0UHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIG11bHRpdmlld1NoYWRlcnMs
IFsnYV9wb3NpdGlvbiddLCBbMF0sIHRydWUpOworICAgIGlmICghdGVzdFByb2dyYW0pIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQ29tcGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5hYmxlZCBmYWls
ZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgZmIgPSBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIp
OworICAgIGxldCBjb2xvclRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhn
bC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9B
UlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHZpZXdzKTsKKyAgICBleHQuZnJhbWVi
dWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgY29sb3JUZXgsIDAsIDAsIHZpZXdzKTsKKworICAgIGdsLnZpZXdwb3J0KDAsIDAsIHdp
ZHRoLCBoZWlnaHQpOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGRyYXci
KTsKKworICAgIGxldCByZWFkRmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFkRmIpOworICAgIGZvciAobGV0
IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3ZpZXdJbmRleCkgeworICAgICAg
ICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIHZpZXdJbmRleCk7CisgICAgICAgIGxldCBleHBl
Y3RlZENvbG9yID0gZ2V0RXhwZWN0ZWRDb2xvcih2aWV3SW5kZXgpOworCisgICAgICAgIGNoZWNr
VmVydGljYWxTdHJpcCh3aWR0aCwgaGVpZ2h0LCB2aWV3cywgdmlld0luZGV4LCBleHBlY3RlZENv
bG9yLCAndmlldyAnICsgdmlld0luZGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blJlYWxp
c3RpY1VzZUNhc2VSZW5kZXJUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRl
c3RpbmcgcmVuZGVyaW5nIHdpdGggYSBkaWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4IGNo
b3NlbiBmcm9tIGEgdW5pZm9ybSBhcnJheSBhY2NvcmRpbmcgdG8gVmlld0lEIik7CisKKyAgICBs
ZXQgd2lkdGggPSAyNTY7CisgICAgbGV0IGhlaWdodCA9IDI1NjsKKworICAgIGxldCB2aWV3cyA9
IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7CisKKyAgICBsZXQgbXVsdGl2aWV3
U2hhZGVycyA9IFsKKyAgICAgIGdldE11bHRpdmlld1JlYWxpc3RpY1VzZUNhc2VWZXJ0ZXhTaGFk
ZXIodmlld3MpLAorICAgICAgZ2V0TXVsdGl2aWV3Q29sb3JGcmFnbWVudFNoYWRlcigpCisgICAg
XTsKKworICAgIGxldCB0ZXN0UHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIG11bHRpdmll
d1NoYWRlcnMsIFsnYV9wb3NpdGlvbiddLCBbMF0sIHRydWUpOworICAgIGlmICghdGVzdFByb2dy
YW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ29tcGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5h
YmxlZCBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgZmIgPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmIpOworICAgIGxldCBjb2xvclRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZp
bHRlcmluZyhnbC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVY
VFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHZpZXdzKTsKKyAgICBl
eHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIDAsIHZpZXdzKTsKKworICAgIGdsLnZpZXdwb3J0
KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgbGV0IHRyYW5zZm9ybUxvY2F0aW9uID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAndHJhbnNmb3JtJyk7CisgICAgbGV0IHRy
YW5zZm9ybURhdGEgPSBuZXcgRmxvYXQzMkFycmF5ICh2aWV3cyAqIDE2KTsKKyAgICBmb3IgKGxl
dCB2aWV3SW5kZXggPSAwOyB2aWV3SW5kZXggPCB2aWV3czsgKyt2aWV3SW5kZXgpIHsKKyAgICAg
ICAgbGV0IHNjYWxlWCA9IDEuMCAvIHZpZXdzOworICAgICAgICAvLyBvZmZzZXRYIGlzIHRoZSBw
b3NpdGlvbiBvZiB0aGUgbGVmdCBlZGdlIG9mIHRoZSBxdWFkIHdlIHdhbnQgdG8gZ2V0IGluIG5v
cm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCisgICAgICAgIGxldCBvZmZzZXRYID0gdmlld0lu
ZGV4IC8gdmlld3MgKiAyLjAgLSAxLjA7CisKKyAgICAgICAgc2V0dXBUcmFuc2xhdGVBbmRTY2Fs
ZVhNYXRyaXgodHJhbnNmb3JtRGF0YSwgdmlld0luZGV4ICogMTYsIHNjYWxlWCwgb2Zmc2V0WCk7
CisgICAgfQorICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYodHJhbnNmb3JtTG9jYXRpb24sIGZhbHNl
LCB0cmFuc2Zvcm1EYXRhKTsKKworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9t
IGRyYXciKTsKKworICAgIGxldCByZWFkRmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFkRmIpOworICAgIGZv
ciAobGV0IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3ZpZXdJbmRleCkgewor
ICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIHZpZXdJbmRleCk7CisgICAgICAgIGxl
dCBleHBlY3RlZENvbG9yID0gZ2V0RXhwZWN0ZWRDb2xvcih2aWV3SW5kZXgpOworCisgICAgICAg
IGNoZWNrVmVydGljYWxTdHJpcCh3aWR0aCwgaGVpZ2h0LCB2aWV3cywgdmlld0luZGV4LCBleHBl
Y3RlZENvbG9yLCAndmlldyAnICsgdmlld0luZGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1
blVuaXF1ZU9iamVjdFRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyB0aGF0IGdldEV4dGVuc2lvbigpIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSIp
OworICAgIGdsLmdldEV4dGVuc2lvbigiT1ZSX211bHRpdmlldzIiKS5teVByb3BlcnR5ID0gMjsK
KyAgICB3ZWJnbEhhcm5lc3NDb2xsZWN0R2FyYmFnZSgpOworICAgIHNob3VsZEJlKCdnbC5nZXRF
eHRlbnNpb24oIk9WUl9tdWx0aXZpZXcyIikubXlQcm9wZXJ0eScsICcyJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9WUl9t
dWx0aXZpZXcyIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7
CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlz
dCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKwor
ICBydW5FeHRlbnNpb25EaXNhYmxlZFRlc3QoKTsKKworICBydW5TaGFkZXJDb21waWxlVGVzdChm
YWxzZSk7CisKKyAgZGVidWcoIiIpOworCisgIGlmICghZ2wuZ2V0RXh0ZW5zaW9uKCJPVlJfbXVs
dGl2aWV3MiIpKSB7CisgICAgICB0ZXN0UGFzc2VkKCJObyBPVlJfbXVsdGl2aWV3MiBzdXBwb3J0
IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgfSBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nl
c3NmdWxseSBlbmFibGVkIE9WUl9tdWx0aXZpZXcyIGV4dGVuc2lvbiIpOworICAgICAgZXh0ID0g
Z2wuZ2V0RXh0ZW5zaW9uKCdPVlJfbXVsdGl2aWV3MicpOworCisgICAgICBydW5TaGFkZXJDb21w
aWxlVGVzdCh0cnVlKTsKKworICAgICAgcnVuUXVlcnlUZXN0KCk7CisKKyAgICAgIHJ1bkRlZmF1
bHRGcmFtZWJ1ZmZlclF1ZXJ5VGVzdCgpOworCisgICAgICBydW5JbnZhbGlkVGV4dHVyZVR5cGVU
ZXN0KCk7CisKKyAgICAgIHJ1bkZyYW1lYnVmZmVyUXVlcnlUZXN0KHRydWUpOworICAgICAgcnVu
RnJhbWVidWZmZXJRdWVyeVRlc3QoZmFsc2UpOworCisgICAgICBydW5JbnZhbGlkVmlld3NUZXN0
KCk7CisKKyAgICAgIHJ1bkRldGFjaFRlc3QoKTsKKworICAgICAgcnVuQ2xlYXJUZXN0KCk7CisK
KyAgICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICAgICAgcnVuRnJhZ21lbnRT
aGFkZXJSZW5kZXJUZXN0KCk7CisgICAgICBydW5WZXJ0ZXhTaGFkZXJSZW5kZXJUZXN0KCk7Cisg
ICAgICBydW5SZWFsaXN0aWNVc2VDYXNlUmVuZGVyVGVzdCgpOworICAgICAgcnVuVW5pcXVlT2Jq
ZWN0VGVzdCgpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMv
b3ZyX211bHRpdmlldzJfZGVwdGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX2Rl
cHRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVhMDcxZjI1Yzc0OGFiY2YwM2JjNGY3MDJjOWU0ZmQxYTZm
NTdmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX2RlcHRo
Lmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIE9WUl9tdWx0aXZpZXcyIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL292cl9tdWx0aXZpZXcyX3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibWFjcm9GcmFnbWVudFNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisjaWZkZWYgR0xfT1ZS
X211bHRpdmlldzIKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7
CisjZWxzZQorICAgIC8vIEVycm9yIGV4cGVjdGVkCisgICAgI2Vycm9yIG5vIEdMX09WUl9tdWx0
aXZpZXcyOworI2VuZGlmCit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworCitsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitsZXQgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KG51bGwsIG51bGwsIDIpOworbGV0IGV4dCA9IG51bGw7CisKK2Z1bmN0
aW9uIHJ1bkRlcHRoUmVuZGVyVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIHJlbmRlcmluZyB3aXRoIGEgZGVwdGggdGV4dHVyZSBhcnJheSBhbmQgZGVwdGggdGVz
dCBvbiIpOworCisgICAgbGV0IHdpZHRoID0gNjQ7CisgICAgbGV0IGhlaWdodCA9IDY0OworCisg
ICAgbGV0IHZpZXdzID0gZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfVklFV1NfT1ZSKTsKKworICAg
IGxldCBtdWx0aXZpZXdTaGFkZXJzID0gWworICAgICAgZ2V0TXVsdGl2aWV3UGFzc3Rocm91Z2hW
ZXJ0ZXhTaGFkZXIodmlld3MpLAorICAgICAgZ2V0TXVsdGl2aWV3Q29sb3JGcmFnbWVudFNoYWRl
cigpCisgICAgXTsKKyAgICBsZXQgdGVzdFByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBt
dWx0aXZpZXdTaGFkZXJzLCBbJ2FfcG9zaXRpb24nXSwgWzBdLCB0cnVlKTsKKyAgICBpZiAoIXRl
c3RQcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvbXBpbGF0aW9uIHdpdGggZXh0ZW5z
aW9uIGVuYWJsZWQgZmFpbGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGV0
IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZiKTsKKyAgICBsZXQgY29sb3JUZXggPSBjcmVhdGVUZXh0dXJlV2l0aE5l
YXJlc3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgZ2wudGV4U3RvcmFnZTNE
KGdsLlRFWFRVUkVfMkRfQVJSQVksIDEsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCB2aWV3cyk7
CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCB2aWV3cyk7CisKKyAgICBsZXQg
ZGVwdGhUZXggPSBjcmVhdGVUZXh0dXJlV2l0aE5lYXJlc3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV8y
RF9BUlJBWSk7CisgICAgZ2wudGV4U3RvcmFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDEsIGds
LkRFUFRIMzJGX1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0LCB2aWV3cyk7CisgICAgZXh0LmZyYW1l
YnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBkZXB0aFRleCwgMCwgMCwgdmlld3MpOworCisgICAgbGV0IGV4cGVjdGVk
U3RhdHVzID0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEU7CisgICAgbGV0IHN0YXR1cyA9IGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGlmIChzdGF0dXMgIT0g
ZXhwZWN0ZWRTdGF0dXMpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnRnJhbWVidWZmZXIgc3RhdHVz
OiAnICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBzdGF0dXMpICsgJyBkaWQgbm90IG1hdGNoIHdp
dGggdGhlIGV4cGVjdGVkIHZhbHVlOiAnICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBleHBlY3Rl
ZFN0YXR1cykpOworICAgIH0gIGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCdGcmFtZWJ1ZmZl
ciBzdGF0dXM6ICcgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHN0YXR1cykgKyAnIG1hdGNoZWQg
d2l0aCB0aGUgZXhwZWN0ZWQgdmFsdWUnKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHNvIHRoYXQg
dGhlIGRlcHRoIHRlc3Qgc3VjY2VlZHMgZm9yIGFsbCBwaXhlbHMuCisgICAgZ2wudmlld3BvcnQo
MCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAg
IGdsLmNsZWFyRGVwdGgoMS4wKTsKKyAgICBnbC5jbGVhcihnbC5ERVBUSF9CVUZGRVJfQklUKTsK
KworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGRyYXcgd2hlbiBkZXB0aCB0
ZXN0IHN1Y2NlZWRzIik7CisKKyAgICBsZXQgcmVhZEZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgcmVhZEZiKTsK
KyAgICBmb3IgKGxldCB2aWV3SW5kZXggPSAwOyB2aWV3SW5kZXggPCB2aWV3czsgKyt2aWV3SW5k
ZXgpIHsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuUkVBRF9GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCB2aWV3SW5kZXgpOworICAg
ICAgICBsZXQgZXhwZWN0ZWRDb2xvciA9IGdldEV4cGVjdGVkQ29sb3Iodmlld0luZGV4KTsKKyAg
ICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZXhwZWN0
ZWRDb2xvciwgJ3ZpZXcgJyArIHZpZXdJbmRleCArICcgc2hvdWxkIGJlIGNvbG9yZWQgJyArIGV4
cGVjdGVkQ29sb3IpOworICAgIH0KKworICAgIC8vIERyYXcgc28gdGhhdCB0aGUgZGVwdGggdGVz
dCBmYWlscyBmb3IgYWxsIHBpeGVscy4KKyAgICBnbC5jbGVhckRlcHRoKDAuMCk7CisgICAgZ2wu
Y2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGds
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSBkcmF3IHdoZW4gZGVwdGggdGVzdCBmYWlscyIpOworCisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7CisgICAgZm9yIChsZXQg
dmlld0luZGV4ID0gMDsgdmlld0luZGV4IDwgdmlld3M7ICsrdmlld0luZGV4KSB7CisgICAgICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgdmlld0luZGV4KTsKKyAgICAgICAgbGV0IGV4cGVj
dGVkQ29sb3IgPSBbMCwgMCwgMCwgMF07CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDAsIDAsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkQ29sb3IsICd2aWV3ICcgKyB2aWV3SW5kZXgg
KyAnIHNob3VsZCBiZSBjb2xvcmVkICcgKyBleHBlY3RlZENvbG9yKTsKKyAgICB9Cit9CisKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgZHJhd2luZyB0byBkZXB0aCBidWZmZXJzIHdp
dGggdGhlIE9WUl9tdWx0aXZpZXcyIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOwor
CitkZWJ1ZygiIik7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBl
eGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisKKyAgaWYgKCFnbC5nZXRFeHRlbnNpb24oIk9WUl9t
dWx0aXZpZXcyIikpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vIE9WUl9tdWx0aXZpZXcyIHN1cHBv
cnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICB9IGVsc2UgeworICAgICAgdGVzdFBhc3NlZCgiU3Vj
Y2Vzc2Z1bGx5IGVuYWJsZWQgT1ZSX211bHRpdmlldzIgZXh0ZW5zaW9uIik7CisgICAgICBleHQg
PSBnbC5nZXRFeHRlbnNpb24oJ09WUl9tdWx0aXZpZXcyJyk7CisKKyAgICAgIHd0dS5zZXR1cFVu
aXRRdWFkKGdsLCAwLCAxKTsKKworICAgICAgcnVuRGVwdGhSZW5kZXJUZXN0KCk7CisgIH0KK30K
KworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9kcmF3
X2J1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX2RyYXdfYnVmZmVycy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkYTI5ZDgwYjRmZWQwYzhmNWE4MGM0NWQ2ZjI5YzQ0N2U3NzA1MDYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9kcmF3X2J1ZmZl
cnMuaHRtbApAQCAtMCwwICsxLDE1OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgT1ZSX211bHRpdmlldzIgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb3ZyX211bHRpdmlldzJf
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKKworbGV0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChudWxsLCBudWxsLCAyKTsKK2xldCBleHQgPSBudWxsOworCitmdW5jdGlvbiBydW5EcmF3
QnVmZmVyc0NsZWFyVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5n
IHRoYXQgY2FsbGluZyBjbGVhcigpIGNsZWFycyBhbGwgdmlld3MgaW4gYWxsIGRyYXcgYnVmZmVy
cyIpOworCisgICAgbGV0IHdpZHRoID0gMjU2OworICAgIGxldCBoZWlnaHQgPSAyNTY7CisKKyAg
ICBsZXQgdmlld3MgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9WSUVXU19PVlIpOworCisgICAg
bGV0IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBsZXQgY29sb3JUZXggPSBbbnVsbCwgbnVsbCwgbnVs
bF07CisgICAgbGV0IGRyYXdCdWZmZXJzID0gWzAsIDAsIDBdOworICAgIGZvciAobGV0IHRleElu
ZGV4ID0gMDsgdGV4SW5kZXggPCBjb2xvclRleC5sZW5ndGg7ICsrdGV4SW5kZXgpIHsKKyAgICAg
ICAgY29sb3JUZXhbdGV4SW5kZXhdID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5n
KGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHZpZXdzKTsKKyAgICAgICAg
ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAgKyB0ZXhJbmRleCwgY29sb3JUZXhbdGV4SW5kZXhdLCAwLCAwLCB2aWV3
cyk7CisgICAgICAgIGRyYXdCdWZmZXJzW3RleEluZGV4XSA9IGdsLkNPTE9SX0FUVEFDSE1FTlQw
ICsgdGV4SW5kZXg7CisgICAgfQorCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgZ2wuZHJhd0J1ZmZlcnMoZHJhd0J1ZmZlcnMpOworCisgICAgZ2wuY2xlYXJDb2xv
cigwLCAxLCAxLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMg
ZnJvbSBjbGVhciIpOworCisgICAgbGV0IHJlYWRGYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7Cisg
ICAgZm9yIChsZXQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGNvbG9yVGV4Lmxlbmd0aDsgKyt0
ZXhJbmRleCkgeworICAgICAgICBmb3IgKGxldCB2aWV3SW5kZXggPSAwOyB2aWV3SW5kZXggPCB2
aWV3czsgKyt2aWV3SW5kZXgpIHsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleFt0
ZXhJbmRleF0sIDAsIHZpZXdJbmRleCk7CisgICAgICAgICAgICBsZXQgZXhwZWN0ZWRDb2xvciA9
IFswLCAyNTUsIDI1NSwgMjU1XTsKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDAsIDAsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkQ29sb3IsICd2aWV3ICcgKyB2aWV3SW5kZXgg
KyAnIG9mIGNvbG9yIGF0dGFjaG1lbnQgJyArIHRleEluZGV4ICsgJyBzaG91bGQgYmUgY3lhbicp
OworICAgICAgICB9CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1
bkRyYXdCdWZmZXJzUmVuZGVyVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIHJlbmRlcmluZyBpbnRvIG11bHRpcGxlIGRyYXcgYnVmZmVycyB3aXRoIGEgZGlmZmVy
ZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBjaG9zZW4gZnJvbSBhIHVuaWZvcm0gYXJyYXkgYWNj
b3JkaW5nIHRvIFZpZXdJRCIpOworCisgICAgbGV0IHdpZHRoID0gMjU2OworICAgIGxldCBoZWln
aHQgPSAyNTY7CisKKyAgICBsZXQgdmlld3MgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9WSUVX
U19PVlIpOworCisgICAgbGV0IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBsZXQgY29sb3JUZXggPSBb
bnVsbCwgbnVsbCwgbnVsbF07CisgICAgbGV0IGRyYXdCdWZmZXJzID0gWzAsIDAsIDBdOworICAg
IGZvciAobGV0IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBjb2xvclRleC5sZW5ndGg7ICsrdGV4
SW5kZXgpIHsKKyAgICAgICAgY29sb3JUZXhbdGV4SW5kZXhdID0gY3JlYXRlVGV4dHVyZVdpdGhO
ZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgICAgICBnbC50ZXhTdG9y
YWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHZp
ZXdzKTsKKyAgICAgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyB0ZXhJbmRleCwgY29sb3JUZXhbdGV4SW5k
ZXhdLCAwLCAwLCB2aWV3cyk7CisgICAgICAgIGRyYXdCdWZmZXJzW3RleEluZGV4XSA9IGdsLkNP
TE9SX0FUVEFDSE1FTlQwICsgdGV4SW5kZXg7CisgICAgfQorCisgICAgbGV0IG11bHRpdmlld1No
YWRlcnMgPSBbCisgICAgICBnZXRNdWx0aXZpZXdSZWFsaXN0aWNVc2VDYXNlVmVydGV4U2hhZGVy
KHZpZXdzKSwKKyAgICAgIGdldE11bHRpdmlld0NvbG9yRnJhZ21lbnRTaGFkZXJGb3JEcmF3QnVm
ZmVycyhjb2xvclRleC5sZW5ndGgpCisgICAgXTsKKworICAgIGxldCB0ZXN0UHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIG11bHRpdmlld1NoYWRlcnMsIFsnYV9wb3NpdGlvbiddLCBbMF0s
IHRydWUpOworICAgIGlmICghdGVzdFByb2dyYW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ29t
cGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5hYmxlZCBmYWlsZWQuIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBnbC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBn
bC5kcmF3QnVmZmVycyhkcmF3QnVmZmVycyk7CisKKyAgICBsZXQgdHJhbnNmb3JtTG9jYXRpb24g
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGVzdFByb2dyYW0sICd0cmFuc2Zvcm0nKTsKKyAgICBs
ZXQgdHJhbnNmb3JtRGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkgKHZpZXdzICogMTYpOworICAgIGZv
ciAobGV0IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3ZpZXdJbmRleCkgewor
ICAgICAgICBsZXQgc2NhbGVYID0gMS4wIC8gdmlld3M7CisgICAgICAgIC8vIG9mZnNldFggaXMg
dGhlIHBvc2l0aW9uIG9mIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIHF1YWQgd2Ugd2FudCB0byBnZXQg
aW4gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMKKyAgICAgICAgbGV0IG9mZnNldFggPSB2
aWV3SW5kZXggLyB2aWV3cyAqIDIuMCAtIDEuMDsKKworICAgICAgICBzZXR1cFRyYW5zbGF0ZUFu
ZFNjYWxlWE1hdHJpeCh0cmFuc2Zvcm1EYXRhLCB2aWV3SW5kZXggKiAxNiwgc2NhbGVYLCBvZmZz
ZXRYKTsKKyAgICB9CisgICAgZ2wudW5pZm9ybU1hdHJpeDRmdih0cmFuc2Zvcm1Mb2NhdGlvbiwg
ZmFsc2UsIHRyYW5zZm9ybURhdGEpOworCisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3Jz
IGZyb20gZHJhdyIpOworCisgICAgbGV0IHJlYWRGYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7Cisg
ICAgZm9yIChsZXQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGNvbG9yVGV4Lmxlbmd0aDsgKyt0
ZXhJbmRleCkgeworICAgICAgICBmb3IgKGxldCB2aWV3SW5kZXggPSAwOyB2aWV3SW5kZXggPCB2
aWV3czsgKyt2aWV3SW5kZXgpIHsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleFt0
ZXhJbmRleF0sIDAsIHZpZXdJbmRleCk7CisgICAgICAgICAgICBsZXQgZXhwZWN0ZWRDb2xvciA9
IGdldEV4cGVjdGVkQ29sb3Iodmlld0luZGV4ICsgdGV4SW5kZXgpOworCisgICAgICAgICAgICBj
aGVja1ZlcnRpY2FsU3RyaXAod2lkdGgsIGhlaWdodCwgdmlld3MsIHZpZXdJbmRleCwgZXhwZWN0
ZWRDb2xvciwgJ3ZpZXcgJyArIHZpZXdJbmRleCArICcgb2YgY29sb3IgYXR0YWNobWVudCAnICsg
dGV4SW5kZXgpOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9Cit9CisKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9W
Ul9tdWx0aXZpZXcyIGV4dGVuc2lvbiB3aGVuIHVzZWQgd2l0aCBtdWx0aXBsZSBkcmF3IGJ1ZmZl
cnMsIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOworCitpZiAoIWdsKSB7Cisg
IHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
IHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgaWYgKCFnbC5nZXRFeHRl
bnNpb24oIk9WUl9tdWx0aXZpZXcyIikpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vIE9WUl9tdWx0
aXZpZXcyIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICB9IGVsc2UgeworICAgICAgdGVz
dFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgT1ZSX211bHRpdmlldzIgZXh0ZW5zaW9uIik7
CisgICAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ09WUl9tdWx0aXZpZXcyJyk7CisKKyAgICAg
IHJ1bkRyYXdCdWZmZXJzQ2xlYXJUZXN0KCk7CisKKyAgICAgIHd0dS5zZXR1cFVuaXRRdWFkKGds
LCAwLCAxKTsKKworICAgICAgcnVuRHJhd0J1ZmZlcnNSZW5kZXJUZXN0KCk7CisgIH0KK30KKwor
ZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9mbGF0X3Zh
cnlpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX2ZsYXRfdmFyeWluZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhOTlkZTdlODRhYTljNTU2OWM4YTZiZDAxMzZmMTIxMmYxODk1ZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9mbGF0X3Zhcnlpbmcu
aHRtbApAQCAtMCwwICsxLDkzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBPVlJfbXVsdGl2aWV3MiBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9vdnJfbXVsdGl2aWV3Ml91dGls
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
CitsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitsZXQgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KG51bGwsIG51bGwsIDIpOworbGV0IGV4dCA9IG51bGw7CisKK2Z1bmN0aW9uIHJ1bkZsYXRWYXJ5
aW5nVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHJlbmRlcmlu
ZyB3aXRoIGRpZmZlcmVudCBjb2xvcnMgaW4gZnJhZ21lbnQgc2hhZGVyIik7CisKKyAgICBsZXQg
d2lkdGggPSAyNTY7CisgICAgbGV0IGhlaWdodCA9IDI1NjsKKworICAgIGxldCB2aWV3cyA9IGds
LmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7CisKKyAgICBsZXQgbXVsdGl2aWV3U2hh
ZGVycyA9IFsKKyAgICAgIGdldE11bHRpdmlld0ZsYXRWYXJ5aW5nVmVydGV4U2hhZGVyKHZpZXdz
KSwKKyAgICAgIGdldE11bHRpdmlld0ZsYXRWYXJ5aW5nRnJhZ21lbnRTaGFkZXIoKQorICAgIF07
CisgICAgbGV0IHRlc3RQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgbXVsdGl2aWV3U2hh
ZGVycywgWydhX3Bvc2l0aW9uJ10sIFswXSwgdHJ1ZSk7CisgICAgaWYgKCF0ZXN0UHJvZ3JhbSkg
eworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlvbiB3aXRoIGV4dGVuc2lvbiBlbmFibGVk
IGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxldCBmYiA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVy
aW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJF
XzJEX0FSUkFZLCAxLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgdmlld3MpOworICAgIGV4dC5m
cmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgdmlld3MpOworCisgICAgZ2wudmlld3BvcnQoMCwg
MCwgd2lkdGgsIGhlaWdodCk7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20g
ZHJhdyIpOworCisgICAgbGV0IHJlYWRGYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7CisgICAgZm9y
IChsZXQgdmlld0luZGV4ID0gMDsgdmlld0luZGV4IDwgdmlld3M7ICsrdmlld0luZGV4KSB7Cisg
ICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgdmlld0luZGV4KTsKKyAgICAgICAgbGV0
IGV4cGVjdGVkQ29sb3IgPSBnZXRFeHBlY3RlZENvbG9yKHZpZXdJbmRleCk7CisgICAgICAgIHd0
dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkQ29sb3Is
ICd2aWV3ICcgKyB2aWV3SW5kZXggKyAnIHNob3VsZCBiZSBjb2xvcmVkICcgKyBleHBlY3RlZENv
bG9yKTsKKyAgICB9Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBm
bGF0IHZhcnlpbmdzIHdvcmsgaW4gbXVsdGl2aWV3IHNoYWRlcnMgdXNpbmcgT1ZSX211bHRpdmll
dzIgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKworaWYg
KCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9
IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgIGlmICgh
Z2wuZ2V0RXh0ZW5zaW9uKCJPVlJfbXVsdGl2aWV3MiIpKSB7CisgICAgICB0ZXN0UGFzc2VkKCJO
byBPVlJfbXVsdGl2aWV3MiBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgfSBlbHNlIHsK
KyAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9WUl9tdWx0aXZpZXcyIGV4
dGVuc2lvbiIpOworICAgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdPVlJfbXVsdGl2aWV3Micp
OworCisgICAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAgICAgIHJ1bkZsYXRW
YXJ5aW5nVGVzdCgpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lv
bnMvb3ZyX211bHRpdmlldzJfaW5zdGFuY2VkX2RyYXcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9t
dWx0aXZpZXcyX2luc3RhbmNlZF9kcmF3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU1ZDBjZmMwMzBlZmQx
YWVmOTI0MmQ3OTZlNDM0NmQ2NTkyMGFlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25z
L292cl9tdWx0aXZpZXcyX2luc3RhbmNlZF9kcmF3Lmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IE9WUl9tdWx0aXZpZXcyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Rlc3RzL292cl9tdWx0aXZpZXcyX3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2xldCB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK2xldCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQobnVsbCwgbnVsbCwgMik7CitsZXQgZXh0
ID0gbnVsbDsKKworZnVuY3Rpb24gcnVuSW5zdGFuY2VkRHJhd1Rlc3QoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBpbnN0YW5jZWQgcmVuZGVyaW5nIik7CisKKyAgICBs
ZXQgd2lkdGggPSAyNTY7CisgICAgbGV0IGhlaWdodCA9IDI1NjsKKworICAgIGxldCB2aWV3cyA9
IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7CisKKyAgICBsZXQgbXVsdGl2aWV3
U2hhZGVycyA9IFsKKyAgICAgIGdldE11bHRpdmlld0luc3RhbmNlZFZlcnRleFNoYWRlcih2aWV3
cyksCisgICAgICBnZXRJbnN0YW5jZUNvbG9yRnJhZ21lbnRTaGFkZXIoKQorICAgIF07CisKKyAg
ICBsZXQgdGVzdFByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBtdWx0aXZpZXdTaGFkZXJz
LCBbJ2FfcG9zaXRpb24nXSwgWzBdLCB0cnVlKTsKKyAgICBpZiAoIXRlc3RQcm9ncmFtKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIkNvbXBpbGF0aW9uIHdpdGggZXh0ZW5zaW9uIGVuYWJsZWQgZmFp
bGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGV0IGZiID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
KTsKKyAgICBsZXQgY29sb3JUZXggPSBjcmVhdGVUZXh0dXJlV2l0aE5lYXJlc3RGaWx0ZXJpbmco
Z2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgZ2wudGV4U3RvcmFnZTNEKGdsLlRFWFRVUkVfMkRf
QVJSQVksIDEsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCB2aWV3cyk7CisgICAgZXh0LmZyYW1l
YnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGNvbG9yVGV4LCAwLCAwLCB2aWV3cyk7CisKKyAgICBnbC52aWV3cG9ydCgwLCAwLCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywg
MCwgNiwgMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91
bGQgYmUgbm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAgbGV0IHJlYWRGYiA9IGdsLmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZG
RVIsIHJlYWRGYik7CisgICAgZm9yIChsZXQgdmlld0luZGV4ID0gMDsgdmlld0luZGV4IDwgdmll
d3M7ICsrdmlld0luZGV4KSB7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGds
LlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgdmll
d0luZGV4KTsKKyAgICAgICAgbGV0IGNvbG9yUmVnaW9uTGVmdEVkZ2UgPSAod2lkdGggLyAodmll
d3MgKiAyKSkgKiB2aWV3SW5kZXg7CisgICAgICAgIGxldCBjb2xvclJlZ2lvblJpZ2h0RWRnZSA9
ICh3aWR0aCAvICh2aWV3cyAqIDIpKSAqICh2aWV3SW5kZXggKyAyKTsKKyAgICAgICAgbGV0IHN0
cmlwV2lkdGggPSAoY29sb3JSZWdpb25SaWdodEVkZ2UgLSBjb2xvclJlZ2lvbkxlZnRFZGdlKSAv
IDI7CisgICAgICAgIGlmIChjb2xvclJlZ2lvbkxlZnRFZGdlID4gMCkgeworICAgICAgICAgICAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgTWF0aC5mbG9vcihjb2xvclJlZ2lvbkxlZnRF
ZGdlKSAtIDEsIGhlaWdodCwgWzAsIDAsIDAsIDBdLCAndGhlIGxlZnQgZWRnZSBvZiB2aWV3ICcg
KyB2aWV3SW5kZXggKyAnIHNob3VsZCBiZSB1bnRvdWNoZWQnKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoY29sb3JSZWdpb25SaWdodEVkZ2UgPCB3aWR0aCkgeworICAgICAgICAgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgY29sb3JSZWdpb25SaWdodEVkZ2UgKyAxLCAwLCB3aWR0aCAtIGNv
bG9yUmVnaW9uUmlnaHRFZGdlIC0gMSwgaGVpZ2h0LCBbMCwgMCwgMCwgMF0sICd0aGUgcmlnaHQg
ZWRnZSBvZiB2aWV3ICcgKyB2aWV3SW5kZXggKyAnIHNob3VsZCBiZSB1bnRvdWNoZWQnKTsKKyAg
ICAgICAgfQorICAgICAgICBsZXQgZXhwZWN0ZWRDb2xvciA9IGdldEV4cGVjdGVkQ29sb3IoMCk7
CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGNvbG9yUmVnaW9uTGVmdEVkZ2UgKyAx
LCAwLCBzdHJpcFdpZHRoIC0gMiwgaGVpZ2h0LCBleHBlY3RlZENvbG9yLCAnYSB0aGluIHN0cmlw
IGluIHZpZXcgJyArIHZpZXdJbmRleCArICcgZHJhd24gYnkgaW5zdGFuY2UgMCBzaG91bGQgYmUg
Y29sb3JlZCAnICsgZXhwZWN0ZWRDb2xvcik7CisgICAgICAgIGV4cGVjdGVkQ29sb3IgPSBnZXRF
eHBlY3RlZENvbG9yKDEpOworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBjb2xvclJl
Z2lvbkxlZnRFZGdlICsgc3RyaXBXaWR0aCArIDEsIDAsIHN0cmlwV2lkdGggLSAyLCBoZWlnaHQs
IGV4cGVjdGVkQ29sb3IsICdhIHRoaW4gc3RyaXAgaW4gdmlldyAnICsgdmlld0luZGV4ICsgJyBk
cmF3biBieSBpbnN0YW5jZSAxIHNob3VsZCBiZSBjb2xvcmVkICcgKyBleHBlY3RlZENvbG9yKTsK
KyAgICB9Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgaW5zdGFuY2VkIGRy
YXdzIHRvZ2V0aGVyIHdpdGggdGhlIE9WUl9tdWx0aXZpZXcyIGV4dGVuc2lvbiwgaWYgaXQgaXMg
YXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
V2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgi
V2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT1ZSX211
bHRpdmlldzIiKSkgeworICAgICAgdGVzdFBhc3NlZCgiTm8gT1ZSX211bHRpdmlldzIgc3VwcG9y
dCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKCJTdWNj
ZXNzZnVsbHkgZW5hYmxlZCBPVlJfbXVsdGl2aWV3MiBleHRlbnNpb24iKTsKKyAgICAgIGV4dCA9
IGdsLmdldEV4dGVuc2lvbignT1ZSX211bHRpdmlldzInKTsKKworICAgICAgd3R1LnNldHVwVW5p
dFF1YWQoZ2wsIDAsIDEpOworCisgICAgICBydW5JbnN0YW5jZWREcmF3VGVzdCgpOworICB9Cit9
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211bHRpdmlldzJfbm9u
X211bHRpdmlld19zaGFkZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9ub25f
bXVsdGl2aWV3X3NoYWRlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGUyZWEwMmFiYWM3OWU1NGUyZTZj
NTFiZDMzNzljMDU3OGM0MDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211
bHRpdmlldzJfbm9uX211bHRpdmlld19zaGFkZXJzLmh0bWwKQEAgLTAsMCArMSw5MyBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
T1ZSX211bHRpdmlldzIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvdGVzdHMvb3ZyX211bHRpdmlldzJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworbGV0IHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChudWxsLCBudWxsLCAyKTsKK2xldCBleHQg
PSBudWxsOworCitmdW5jdGlvbiBydW5Ob25NdWx0aXZpZXdTaGFkZXJUZXN0KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgcmVuZGVyaW5nIHdpdGggc2hhZGVycyB0aGF0
IGRvbid0IGRlY2xhcmUgbnVtX3ZpZXdzIik7CisKKyAgICBsZXQgd2lkdGggPSAyNTY7CisgICAg
bGV0IGhlaWdodCA9IDI1NjsKKyAgICBsZXQgZGVwdGggPSAyOyAgLy8gYWx3YXlzIHN1cHBvcnRl
ZCBzbyBubyBuZWVkIHRvIHF1ZXJ5IE1BWF9WSUVXU19PVlIuCisKKyAgICBsZXQgdGVzdFByb2dy
YW0gPSB3dHUuc2V0dXBTaW1wbGVDb2xvclByb2dyYW0oZ2wpOworICAgIGlmICghdGVzdFByb2dy
YW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ29tcGlsYXRpb24gd2l0aCBleHRlbnNpb24gZW5h
YmxlZCBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgY29sb3JV
bmlmb3JtTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGVzdFByb2dyYW0sICd1X2Nv
bG9yJyk7CisKKyAgICBsZXQgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAgIGxldCBjb2xvclRleCA9IGNy
ZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5URVhUVVJFXzJEX0FSUkFZKTsKKyAg
ICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoKTsKKyAgICBleHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZS
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIDAsIDEp
OworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBnbC51bmlm
b3JtNGYoY29sb3JVbmlmb3JtTG9jYXRpb24sIDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgd3R1
LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gZHJhdyB3aGVuIHVzaW5nIGEgbm9uLW11bHRp
dmlldyBzaGFkZXIgYXMgbG9uZyBhcyB0aGUgbnVtYmVyIG9mIHZpZXdzIGlzIDEiKTsKKworICAg
IGxldCByZWFkRmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFkRmIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xv
clRleCwgMCwgMCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhl
aWdodCwgWzAsIDI1NSwgMCwgMjU1XSwgJ3ZpZXcgMCBzaG91bGQgYmUgZ3JlZW4nKTsKKworICAg
IGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgMik7CisgICAgd3R1LmRyYXdVbml0UXVh
ZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJkcmF3IHNob3VsZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciB3aGVuIHVz
aW5nIGEgbm9uLW11bHRpdmlldyBzaGFkZXIgYW5kIHRoZSBudW1iZXIgb2Ygdmlld3MgaXMgPiAx
Iik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBub24tbXVsdGl2
aWV3IHNoYWRlcnMgd29yayBjb3JyZWN0bHkgd2l0aCBPVlJfbXVsdGl2aWV3MiBleHRlbnNpb24s
IGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOworCitpZiAoIWdsKSB7CisgIHRl
c3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgIHRl
c3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgaWYgKCFnbC5nZXRFeHRlbnNp
b24oIk9WUl9tdWx0aXZpZXcyIikpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vIE9WUl9tdWx0aXZp
ZXcyIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICB9IGVsc2UgeworICAgICAgdGVzdFBh
c3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgT1ZSX211bHRpdmlldzIgZXh0ZW5zaW9uIik7Cisg
ICAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ09WUl9tdWx0aXZpZXcyJyk7CisKKyAgICAgIHd0
dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICAgICAgcnVuTm9uTXVsdGl2aWV3U2hhZGVy
VGVzdCgpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3Zy
X211bHRpdmlldzJfc2luZ2xlX3ZpZXdfb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3Zy
X211bHRpdmlldzJfc2luZ2xlX3ZpZXdfb3BlcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMDFh
M2UzYjJkOTc1Mzc0NmE4MjFmZjkwYzU5ZWYzNzM5OGVmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
ZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml9zaW5nbGVfdmlld19vcGVyYXRpb25zLmh0bWwKQEAg
LTAsMCArMSwyNTMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIE9WUl9tdWx0aXZpZXcyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL292cl9tdWx0aXZpZXcyX3V0aWwuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2xldCB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK2xldCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQobnVsbCwg
bnVsbCwgMik7CitsZXQgZXh0ID0gbnVsbDsKKworZnVuY3Rpb24gcnVuU2luZ2xlVmlld1JlYWRU
ZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgcmVhZGluZyBmcm9t
IGEgbXVsdGl2aWV3IGZyYW1lYnVmZmVyIHdpdGggbnVtX3ZpZXdzID0gMSIpOworCisgICAgbGV0
IHdpZHRoID0gMjU2OworICAgIGxldCBoZWlnaHQgPSAyNTY7CisgICAgbGV0IGRlcHRoID0gMjsg
IC8vIGFsd2F5cyBzdXBwb3J0ZWQgc28gbm8gbmVlZCB0byBxdWVyeSBNQVhfVklFV1NfT1ZSLgor
CisgICAgbGV0IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBsZXQgY29sb3JUZXggPSBjcmVhdGVUZXh0
dXJlV2l0aE5lYXJlc3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgZ2wudGV4
U3RvcmFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDEsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCk7CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCAxKTsKKworICAg
IGdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4w
LCAxLjAsIDEuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJv
cnMgZnJvbSBjbGVhciIpOworCisgICAgbGV0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICog
aGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHJlYWRQaXhlbHMiKTsKKwor
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIFswLCAyNTUs
IDI1NSwgMjU1XSwgJ3ZpZXcgMCBzaG91bGQgYmUgY3lhbicpOworICAgIGdsLmdldEVycm9yKCk7
CisKKyAgICAvLyBBbHNvIHRlc3QgZm9yIHRoZSBlcnJvciBjYXNlIHdpdGggdHdvIHZpZXdzCisg
ICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCAyKTsKKyAgICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04sICJzaG91bGQgYmUgYW4gZXJyb3IgdG8gcmVhZCBmcm9tIGEgZnJhbWVidWZmZXIgd2l0aCB0
d28gdmlld3MiKTsKK30KKworZnVuY3Rpb24gcnVuU2luZ2xlVmlld0JsaXRUZXN0KCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmxpdHRpbmcgZnJvbSBhIG11bHRpdmll
dyBmcmFtZWJ1ZmZlciB3aXRoIG51bV92aWV3cyA9IDEiKTsKKworICAgIGxldCB3aWR0aCA9IDI1
NjsKKyAgICBsZXQgaGVpZ2h0ID0gMjU2OworICAgIGxldCBkZXB0aCA9IDI7ICAvLyBhbHdheXMg
c3VwcG9ydGVkIHNvIG5vIG5lZWQgdG8gcXVlcnkgTUFYX1ZJRVdTX09WUi4KKworICAgIGxldCBm
YiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0gY3JlYXRlVGV4dHVyZVdpdGhOZWFy
ZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgIGdsLnRleFN0b3JhZ2UzRChn
bC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwor
ICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgMSk7CisKKyAgICBnbC52aWV3cG9y
dCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbC5jbGVhckNvbG9yKDAuMCwgMS4wLCAxLjAs
IDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gY2xl
YXIiKTsKKworICAgIGdsLmNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGdsLmNhbnZhcy5oZWln
aHQgPSBoZWlnaHQ7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIs
IG51bGwpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKQorICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB3
aWR0aCwgaGVpZ2h0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5DT0xPUl9CVUZGRVJfQklULCBn
bC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNo
b3VsZCBiZSBubyBlcnJvcnMgZnJvbSBibGl0RnJhbWVidWZmZXIiKTsKKworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVj
dChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgWzAsIDI1NSwgMjU1LCAyNTVdLCAndmlldyAwIGJs
aXR0ZWQgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgc2hvdWxkIGJlIGN5YW4nKTsKKworICAg
IC8vIEFsc28gdGVzdCBmb3IgdGhlIGVycm9yIGNhc2Ugd2l0aCBtdWx0aXZpZXcgYmxpdCB0YXJn
ZXQKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmIpOworICAg
IGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgInNob3VsZCBiZSBh
biBlcnJvciB0byBibGl0IHRvIGEgbXVsdGl2aWV3IGZyYW1lYnVmZmVyIGV2ZW4gaWYgaXQgaGFz
IGp1c3Qgb25lIHZpZXciKTsKKworICAgIC8vIEFsc28gdGVzdCBmb3IgdGhlIGVycm9yIGNhc2Ug
d2l0aCB0d28gdmlld3MKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
KTsKKyAgICBleHQuZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIDAsIDIpOworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5ibGl0RnJhbWVi
dWZmZXIoMCwgMCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuQ09MT1Jf
QlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJzaG91bGQgYmUgYW4gZXJyb3IgdG8gYmxp
dCBmcm9tIGEgZnJhbWVidWZmZXIgd2l0aCB0d28gdmlld3MiKTsKK30KKworZnVuY3Rpb24gcnVu
U2luZ2xlVmlld0NvcHlUZXhJbWFnZTJEVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJUZXN0aW5nIGNvcHlUZXhJbWFnZTJEIGZyb20gYSBtdWx0aXZpZXcgZnJhbWVidWZmZXIg
d2l0aCBudW1fdmlld3MgPSAxIik7CisKKyAgICBsZXQgd2lkdGggPSAyNTY7CisgICAgbGV0IGhl
aWdodCA9IDI1NjsKKyAgICBsZXQgZGVwdGggPSAyOyAgLy8gYWx3YXlzIHN1cHBvcnRlZCBzbyBu
byBuZWVkIHRvIHF1ZXJ5IE1BWF9WSUVXU19PVlIuCisKKyAgICBsZXQgZmIgPSBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIp
OworICAgIGxldCBjb2xvclRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhn
bC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9B
UlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICBleHQuZnJhbWVi
dWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgY29sb3JUZXgsIDAsIDAsIDEpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgs
IGhlaWdodCk7CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMS4wLCAxLjApOworICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGNsZWFyIik7CisKKyAgICBs
ZXQgY29weVRhcmdldFRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5U
RVhUVVJFXzJEKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb3B5VGFyZ2V0
VGV4KTsKKyAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwg
MCwgMCwgd2lkdGgsIGhlaWdodCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gY29weVRleEltYWdlMkQiKTsKKwor
ICAgIGxldCBjb3B5RmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgY29weUZiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQs
IGNvcHlUYXJnZXRUZXgsIDApOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHdp
ZHRoLCBoZWlnaHQsIFswLCAyNTUsIDI1NSwgMjU1XSwgJ2NvcHkgb2YgdmlldyAwIGluIHRoZSAy
RCB0ZXh0dXJlIHNob3VsZCBiZSBjeWFuJyk7CisKKyAgICAvLyBBbHNvIHRlc3QgZm9yIHRoZSBl
cnJvciBjYXNlIHdpdGggdHdvIHZpZXdzCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYik7CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCAyKTsKKyAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb3B5VGFyZ2V0VGV4KTsKKyAgICBnbC5j
b3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMCwgMCwgd2lkdGgsIGhl
aWdodCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04sICJzaG91bGQgYmUgYW4gZXJyb3IgdG8gY29weSBmcm9tIGEgZnJhbWVi
dWZmZXIgd2l0aCB0d28gdmlld3MiKTsKK30KKworZnVuY3Rpb24gcnVuU2luZ2xlVmlld0NvcHlU
ZXhTdWJJbWFnZTJEVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5n
IGNvcHlUZXhTdWJJbWFnZTJEIGZyb20gYSBtdWx0aXZpZXcgZnJhbWVidWZmZXIgd2l0aCBudW1f
dmlld3MgPSAxIik7CisKKyAgICBsZXQgd2lkdGggPSAyNTY7CisgICAgbGV0IGhlaWdodCA9IDI1
NjsKKyAgICBsZXQgZGVwdGggPSAyOyAgLy8gYWx3YXlzIHN1cHBvcnRlZCBzbyBubyBuZWVkIHRv
IHF1ZXJ5IE1BWF9WSUVXU19PVlIuCisKKyAgICBsZXQgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAgIGxl
dCBjb2xvclRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5URVhUVVJF
XzJEX0FSUkFZKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwg
Z2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICBleHQuZnJhbWVidWZmZXJUZXh0
dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29s
b3JUZXgsIDAsIDAsIDEpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7
CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMS4wLCAxLjApOworICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGNsZWFyIik7CisKKyAgICBsZXQgY29weVRh
cmdldFRleCA9IGNyZWF0ZVRleHR1cmVXaXRoTmVhcmVzdEZpbHRlcmluZyhnbC5URVhUVVJFXzJE
KTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb3B5VGFyZ2V0VGV4KTsKKyAg
ICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC5jb3B5VGV4U3Vi
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJv
cnMgZnJvbSBjb3B5VGV4SW1hZ2UyRCIpOworCisgICAgbGV0IGNvcHlGYiA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBjb3B5
RmIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgY29weVRhcmdldFRleCwgMCk7CisgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgWzAsIDI1NSwgMjU1LCAy
NTVdLCAnY29weSBvZiB2aWV3IDAgaW4gdGhlIDJEIHRleHR1cmUgc2hvdWxkIGJlIGN5YW4nKTsK
KworICAgIC8vIEFsc28gdGVzdCBmb3IgdGhlIGVycm9yIGNhc2Ugd2l0aCB0d28gdmlld3MKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBleHQuZnJhbWVi
dWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgY29sb3JUZXgsIDAsIDAsIDIpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIGNvcHlUYXJnZXRUZXgpOworICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAic2hvdWxkIGJlIGFuIGVy
cm9yIHRvIGNvcHkgZnJvbSBhIGZyYW1lYnVmZmVyIHdpdGggdHdvIHZpZXdzIik7Cit9CisKK2Z1
bmN0aW9uIHJ1blNpbmdsZVZpZXdDb3B5VGV4U3ViSW1hZ2UzRFRlc3QoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBjb3B5VGV4U3ViSW1hZ2UzRCBmcm9tIGEgbXVsdGl2
aWV3IGZyYW1lYnVmZmVyIHdpdGggbnVtX3ZpZXdzID0gMSIpOworCisgICAgbGV0IHdpZHRoID0g
MjU2OworICAgIGxldCBoZWlnaHQgPSAyNTY7CisgICAgbGV0IGRlcHRoID0gMjsgIC8vIGFsd2F5
cyBzdXBwb3J0ZWQgc28gbm8gbmVlZCB0byBxdWVyeSBNQVhfVklFV1NfT1ZSLgorCisgICAgbGV0
IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZiKTsKKyAgICBsZXQgY29sb3JUZXggPSBjcmVhdGVUZXh0dXJlV2l0aE5l
YXJlc3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgZ2wudGV4U3RvcmFnZTNE
KGdsLlRFWFRVUkVfMkRfQVJSQVksIDEsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCAxKTsKKworICAgIGdsLnZpZXdw
b3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDEu
MCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBj
bGVhciIpOworCisgICAgbGV0IGNvcHlUYXJnZXRUZXggPSBjcmVhdGVUZXh0dXJlV2l0aE5lYXJl
c3RGaWx0ZXJpbmcoZ2wuVEVYVFVSRV8zRCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8zRCwgY29weVRhcmdldFRleCk7CisgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAw
LCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgZ2wuY29weVRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwg
MCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gY29weVRleFN1YkltYWdlM0Qi
KTsKKworICAgIGxldCBjb3B5RmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgY29weUZiKTsKKyAgICBnbC5mcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvcHlU
YXJnZXRUZXgsIDAsIDApOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHdpZHRo
LCBoZWlnaHQsIFswLCAyNTUsIDI1NSwgMjU1XSwgJ2NvcHkgb2YgdmlldyAwIGluIHRoZSAzRCB0
ZXh0dXJlIHNob3VsZCBiZSBjeWFuJyk7CisKKyAgICAvLyBBbHNvIHRlc3QgZm9yIHRoZSBlcnJv
ciBjYXNlIHdpdGggdHdvIHZpZXdzCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYik7CisgICAgZXh0LmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yVGV4LCAwLCAwLCAyKTsKKyAgICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCBjb3B5VGFyZ2V0VGV4KTsKKyAgICBnbC5jb3B5
VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAwLCAwLCAwLCAwLCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiwgInNob3VsZCBiZSBhbiBlcnJvciB0byBjb3B5IGZyb20gYSBmcmFtZWJ1ZmZl
ciB3aXRoIHR3byB2aWV3cyIpOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgZnJhbWVidWZmZXJzIHdpdGggb25seSBvbmUgdmlldyBjYW4gYmUgcmVhZCBmcm9tIHdp
dGggT1ZSX211bHRpdmlldzIgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2Rl
YnVnKCIiKTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMg
bm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0
cyIpOworCisgIGlmICghZ2wuZ2V0RXh0ZW5zaW9uKCJPVlJfbXVsdGl2aWV3MiIpKSB7CisgICAg
ICB0ZXN0UGFzc2VkKCJObyBPVlJfbXVsdGl2aWV3MiBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwi
KTsKKyAgfSBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9W
Ul9tdWx0aXZpZXcyIGV4dGVuc2lvbiIpOworICAgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdP
VlJfbXVsdGl2aWV3MicpOworCisgICAgICBydW5TaW5nbGVWaWV3UmVhZFRlc3QoKTsKKworICAg
ICAgcnVuU2luZ2xlVmlld0JsaXRUZXN0KCk7CisKKyAgICAgIHJ1blNpbmdsZVZpZXdDb3B5VGV4
SW1hZ2UyRFRlc3QoKTsKKworICAgICAgcnVuU2luZ2xlVmlld0NvcHlUZXhTdWJJbWFnZTJEVGVz
dCgpOworCisgICAgICBydW5TaW5nbGVWaWV3Q29weVRleFN1YkltYWdlM0RUZXN0KCk7CisgIH0K
K30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vdnJfbXVsdGl2aWV3Ml90
aW1lcl9xdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211bHRpdmlldzJfdGltZXJfcXVlcnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45Zjc2ZmFkZjk4OGE3ZDE0ZDNkMDZjMTU2YTZkYTAxNzBhYmYyOGU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211bHRpdmlldzJfdGltZXJfcXVl
cnkuaHRtbApAQCAtMCwwICsxLDE0MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgT1ZSX211bHRpdmlldzIgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb3ZyX211bHRpdmlldzJf
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKKworbGV0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChudWxsLCBudWxsLCAyKTsKK2xldCBleHQgPSBudWxsOworbGV0IHF1ZXJ5RXh0ID0gbnVs
bDsKKworZnVuY3Rpb24gcnVuQ2xlYXJUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRlc3RpbmcgY2xlYXIiKTsKKworICAgIGxldCB3aWR0aCA9IDI1NjsKKyAgICBsZXQgaGVp
Z2h0ID0gMjU2OworCisgICAgbGV0IHZpZXdzID0gZ2wuZ2V0UGFyYW1ldGVyKGV4dC5NQVhfVklF
V1NfT1ZSKTsKKworICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0g
Y3JlYXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOwor
ICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JBOCwgd2lk
dGgsIGhlaWdodCwgdmlld3MpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdP
VlIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwg
dmlld3MpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBn
bC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworCisgICAgbGV0IHF1ZXJ5ID0gZ2wuY3JlYXRlUXVl
cnkoKTsKKyAgICBnbC5iZWdpblF1ZXJ5KHF1ZXJ5RXh0LlRJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSBzZXR1cCIpOworCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJt
dWx0aXZpZXcgY2xlYXIgc2hvdWxkIGdlbmVyYXRlIGludmFsaWQgb3BlcmF0aW9uIHdoZW4gYSB0
aW1lciBxdWVyeSBpcyBhY3RpdmUiKTsKKworICAgIGdsLmVuZFF1ZXJ5KHF1ZXJ5RXh0LlRJTUVf
RUxBUFNFRF9FWFQpOworCisgICAgbGV0IHJlYWRGYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGYik7Cisg
ICAgZm9yIChsZXQgdmlld0luZGV4ID0gMDsgdmlld0luZGV4IDwgdmlld3M7ICsrdmlld0luZGV4
KSB7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLlJFQURfRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgdmlld0luZGV4KTsKKyAgICAg
ICAgbGV0IGV4cGVjdGVkQ29sb3IgPSBbMCwgMCwgMCwgMF07CisgICAgICAgIHd0dS5jaGVja0Nh
bnZhc1JlY3QoZ2wsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkQ29sb3IsICd2aWV3ICcg
KyB2aWV3SW5kZXggKyAnIHNob3VsZCBiZSB1bnRvdWNoZWQnKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHJ1bkZyYWdtZW50U2hhZGVyUmVuZGVyVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJUZXN0aW5nIHJlbmRlcmluZyB3aXRoIGRpZmZlcmVudCBjb2xvcnMgaW4gZnJhZ21l
bnQgc2hhZGVyIik7CisKKyAgICBsZXQgd2lkdGggPSAyNTY7CisgICAgbGV0IGhlaWdodCA9IDI1
NjsKKworICAgIGxldCB2aWV3cyA9IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX1ZJRVdTX09WUik7
CisKKyAgICBsZXQgbXVsdGl2aWV3U2hhZGVycyA9IFsKKyAgICAgIGdldE11bHRpdmlld1Bhc3N0
aHJvdWdoVmVydGV4U2hhZGVyKHZpZXdzKSwKKyAgICAgIGdldE11bHRpdmlld0NvbG9yRnJhZ21l
bnRTaGFkZXIoKQorICAgIF07CisgICAgbGV0IHRlc3RQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgbXVsdGl2aWV3U2hhZGVycywgWydhX3Bvc2l0aW9uJ10sIFswXSwgdHJ1ZSk7CisgICAg
aWYgKCF0ZXN0UHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxhdGlvbiB3aXRo
IGV4dGVuc2lvbiBlbmFibGVkIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0gY3JlYXRlVGV4dHVy
ZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgIGdsLnRleFN0
b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwg
dmlld3MpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgdmlld3MpOworCisg
ICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBsZXQgcXVlcnkgPSBn
bC5jcmVhdGVRdWVyeSgpOworICAgIGdsLmJlZ2luUXVlcnkocXVlcnlFeHQuVElNRV9FTEFQU0VE
X0VYVCwgcXVlcnkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
c2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwIik7CisKKyAgICB3dHUuZHJhd1VuaXRRdWFk
KGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
Im11bHRpdmlldyBkcmF3IHNob3VsZCBnZW5lcmF0ZSBpbnZhbGlkIG9wZXJhdGlvbiB3aGVuIGEg
dGltZXIgcXVlcnkgaXMgYWN0aXZlIik7CisKKyAgICBnbC5lbmRRdWVyeShxdWVyeUV4dC5USU1F
X0VMQVBTRURfRVhUKTsKKworICAgIGxldCByZWFkRmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFkRmIpOwor
ICAgIGZvciAobGV0IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3ZpZXdJbmRl
eCkgeworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5SRUFEX0ZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIHZpZXdJbmRleCk7CisgICAg
ICAgIGxldCBleHBlY3RlZENvbG9yID0gWzAsIDAsIDAsIDBdOworICAgICAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZENvbG9yLCAndmlldyAn
ICsgdmlld0luZGV4ICsgJyBzaG91bGQgYmUgdW50b3VjaGVkJyk7CisgICAgfQorfQorCitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBPVlJf
bXVsdGl2aWV3MiBleHRlbnNpb24gYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIEVYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeV93ZWJnbDIsIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIp
OworCitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhp
c3QiKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisK
KyAgaWYgKCFnbC5nZXRFeHRlbnNpb24oIk9WUl9tdWx0aXZpZXcyIikgfHwgIWdsLmdldEV4dGVu
c2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiIpKSB7CisgICAgICB0ZXN0UGFz
c2VkKCJObyBPVlJfbXVsdGl2aWV3MiBzdXBwb3J0IG9yIG5vIEVYVF9kaXNqb2ludF90aW1lcl9x
dWVyeV93ZWJnbDIgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAg
ICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPVlJfbXVsdGl2aWV3MiBhbmQgRVhU
X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiBleHRlbnNpb25zIik7CisgICAgICBleHQgPSBn
bC5nZXRFeHRlbnNpb24oJ09WUl9tdWx0aXZpZXcyJyk7CisgICAgICBxdWVyeUV4dCA9IGdsLmdl
dEV4dGVuc2lvbignRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMicpOworCisgICAgICBy
dW5DbGVhclRlc3QoKTsKKworICAgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworCisg
ICAgICBydW5GcmFnbWVudFNoYWRlclJlbmRlclRlc3QoKTsKKyAgfQorfQorCitkZWJ1ZygiIik7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX3RyYW5zZm9ybV9mZWVkYmFj
ay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2V4dGVuc2lvbnMvb3ZyX211bHRpdmlldzJfdHJhbnNmb3JtX2ZlZWRiYWNrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjk3ZGQ0M2YxZjM3OTU5OTIxNWRlZTY3MDFkZTIwMzQyMmFlMTY4ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL292cl9tdWx0aXZpZXcyX3RyYW5zZm9ybV9m
ZWVkYmFjay5odG1sCkBAIC0wLDAgKzEsMTI1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBPVlJfbXVsdGl2aWV3MiBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9vdnJfbXVsdGl2
aWV3Ml91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworCitsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitsZXQgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KG51bGwsIG51bGwsIDIpOworbGV0IGV4dCA9IG51bGw7CitsZXQgcXVlcnlFeHQg
PSBudWxsOworCitmdW5jdGlvbiBydW5UcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0cmFuc2Zvcm0gZmVlZGJhY2sgY29tYmluZWQg
d2l0aCBtdWx0aXZpZXcgcmVuZGVyaW5nIik7CisKKyAgICBsZXQgd2lkdGggPSA2NDsKKyAgICBs
ZXQgaGVpZ2h0ID0gNjQ7CisKKyAgICBsZXQgdmlld3MgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1B
WF9WSUVXU19PVlIpOworCisgICAgbGV0IG11bHRpdmlld1NoYWRlcnMgPSBbCisgICAgICBnZXRN
dWx0aXZpZXdWYXJ5aW5nVmVydGV4U2hhZGVyKHZpZXdzKSwKKyAgICAgIGdldE11bHRpdmlld1Zh
cnlpbmdGcmFnbWVudFNoYWRlcigpCisgICAgXTsKKyAgICBsZXQgdGVzdFByb2dyYW0gPSB3dHUu
c2V0dXBUcmFuc2Zvcm1GZWVkYmFja1Byb2dyYW0oZ2wsIG11bHRpdmlld1NoYWRlcnMsIFsndGVz
dFZhcnlpbmcnXSwgZ2wuU0VQQVJBVEVfQVRUUklCUywgWydhX3Bvc2l0aW9uJ10sIFswXSwgdHJ1
ZSk7CisgICAgaWYgKCF0ZXN0UHJvZ3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb21waWxh
dGlvbiB3aXRoIGV4dGVuc2lvbiBlbmFibGVkIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgbGV0IGNvbG9yVGV4ID0gY3Jl
YXRlVGV4dHVyZVdpdGhOZWFyZXN0RmlsdGVyaW5nKGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAg
IGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBnbC5SR0JBOCwgd2lkdGgs
IGhlaWdodCwgdmlld3MpOworICAgIGV4dC5mcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvclRleCwgMCwgMCwgdmll
d3MpOworCisgICAgbGV0IHhmYiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAg
Z2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgeGZiKTsKKwor
ICAgIGxldCB4ZmJCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCB4ZmJCdWZmZXIpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMTI4LCBnbC5EWU5BTUlD
X0RSQVcpOworCisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZy
b20gc2V0dXAiKTsKKworICAgIGdsLmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJJQU5HTEVT
KTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgInJlbmRlcmluZyB0byBhIG11bHRpdmlldyBmcmFtZWJ1
ZmZlciB3aXRoIG1vcmUgdGhhbiBvbmUgdmlldyB3aGVuIHRoZXJlJ3MgYW4gYWN0aXZlIHRyYW5z
Zm9ybSBmZWVkYmFjayBzaG91bGQgcmVzdWx0IGluIGludmFsaWQgb3BlcmF0aW9uIik7CisKKyAg
ICBnbC5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8g
ZXJyb3JzIGZyb20gZHJhdyB3aGVuIHJlbmRlcmluZyB0byBhIG11bHRpdmlldyBmcmFtZWJ1ZmZl
ciB3aXRoIG1vcmUgdGhhbiBvbmUgdmlldyB3aGVuIHRoZXJlJ3MgYW4gYWN0aXZlIHBhdXNlZCB0
cmFuc2Zvcm0gZmVlZGJhY2siKTsKKworICAgIGxldCByZWFkRmIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFk
RmIpOworICAgIGZvciAobGV0IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3Zp
ZXdJbmRleCkgeworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5SRUFEX0ZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIHZpZXdJbmRleCk7
CisgICAgICAgIGxldCBleHBlY3RlZENvbG9yID0gZ2V0RXhwZWN0ZWRDb2xvcih2aWV3SW5kZXgp
OworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBl
eHBlY3RlZENvbG9yLCAndmlldyAnICsgdmlld0luZGV4ICsgJyBzaG91bGQgYmUgY29sb3JlZCAn
ICsgZXhwZWN0ZWRDb2xvcik7CisgICAgfQorCisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNr
KGdsLlRSQU5TRk9STV9GRUVEQkFDSywgbnVsbCk7CisKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGds
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSBkcmF3IHdoZW4gdHJhbnNmb3JtIGZlZWRiYWNrIGlzIHVuYm91bmQiKTsK
KworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCByZWFkRmIpOwor
ICAgIGZvciAobGV0IHZpZXdJbmRleCA9IDA7IHZpZXdJbmRleCA8IHZpZXdzOyArK3ZpZXdJbmRl
eCkgeworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5SRUFEX0ZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29sb3JUZXgsIDAsIHZpZXdJbmRleCk7CisgICAg
ICAgIGxldCBleHBlY3RlZENvbG9yID0gZ2V0RXhwZWN0ZWRDb2xvcih2aWV3SW5kZXgpOworICAg
ICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3Rl
ZENvbG9yLCAndmlldyAnICsgdmlld0luZGV4ICsgJyBzaG91bGQgYmUgY29sb3JlZCAnICsgZXhw
ZWN0ZWRDb2xvcik7CisgICAgfQorCisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRS
QU5TRk9STV9GRUVEQkFDSywgeGZiKTsKKyAgICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5v
IGVycm9ycyBmcm9tIGVuZGluZyB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKK30KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCB2ZXJpZmllcyBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRyYW5zZm9ybSBmZWVk
YmFjayBhbmQgdGhlIE9WUl9tdWx0aXZpZXcyIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxl
LiIpOworCitkZWJ1ZygiIik7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiV2ViR0wgY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiV2ViR0wgY29u
dGV4dCBleGlzdHMiKTsKKworICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT1ZSX211bHRpdmlldzIi
KSkgeworICAgICAgdGVzdFBhc3NlZCgiTm8gT1ZSX211bHRpdmlldzIgc3VwcG9ydCAtLSB0aGlz
IGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkg
ZW5hYmxlZCBPVlJfbXVsdGl2aWV3MiBleHRlbnNpb24iKTsKKyAgICAgIGV4dCA9IGdsLmdldEV4
dGVuc2lvbignT1ZSX211bHRpdmlldzInKTsKKworICAgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2ws
IDAsIDEpOworCisgICAgICBydW5UcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKTsKKyAgfQorfQorCitk
ZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3Byb21vdGVkLWV4dGVuc2lvbnMtaW4t
c2hhZGVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvcHJvbW90ZWQtZXh0ZW5zaW9ucy1pbi1zaGFkZXJz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJiNGQxMjU3ZjJhYjdmNmI3ZmI4ZDE3MDRkZDJiZDY1ZjMwY2Yz
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3Byb21vdGVkLWV4dGVuc2lvbnMtaW4t
c2hhZGVycy5odG1sCkBAIC0wLDAgKzEsMTE1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5FeHRlbnNpb25zIHByb21vdGVkIHRvIGNvcmUg
c2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB0byB1c2UgaW4gc2hhZGVyczwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0
dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdTaGFkZXJSZXF1aXJlIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyNleHRlbnNpb24gJChleHQpIDogcmVxdWlyZQor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
cmFnU2hhZGVySWZkZWYiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7CisjaWZkZWYgJChleHQpCisgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworI2Vsc2UKKyAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisjZW5kaWYKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnJhZ1NoYWRlcjMwMFJlcXVpcmUiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2
ZXJzaW9uIDMwMCBlcworI2V4dGVuc2lvbiAkKGV4dCkgOiByZXF1aXJlCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZyYWdTaGFkZXIzMDBJZmRlZiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IG15X0Zy
YWdDb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyNpZmRlZiAkKGV4dCkKKyAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisjZWxzZQorICAgIG15X0ZyYWdDb2xvciA9IHZl
YzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyNlbmRpZgorfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
KTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgc2hhZGVyVGVtcGxhdGVSZXF1
aXJlID0gd3R1LmdldFNjcmlwdCgnZnJhZ1NoYWRlclJlcXVpcmUnKTsKK3ZhciBzaGFkZXJUZW1w
bGF0ZTMwMFJlcXVpcmUgPSB3dHUuZ2V0U2NyaXB0KCdmcmFnU2hhZGVyMzAwUmVxdWlyZScpOwor
dmFyIHNoYWRlclRlbXBsYXRlSWZkZWYgPSB3dHUuZ2V0U2NyaXB0KCdmcmFnU2hhZGVySWZkZWYn
KTsKK3ZhciBzaGFkZXJUZW1wbGF0ZTMwMElmZGVmID0gd3R1LmdldFNjcmlwdCgnZnJhZ1NoYWRl
cjMwMElmZGVmJyk7CisKK3ZhciBleHRlbnNpb25zID0gWworICAgICdHTF9FWFRfZHJhd19idWZm
ZXJzJywKKyAgICAnR0xfRVhUX2ZyYWdfZGVwdGgnLAorICAgICdHTF9FWFRfc2hhZGVyX3RleHR1
cmVfbG9kJywKKyAgICAnR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJworXTsKKwordmFyIHRl
c3RzID0gW107CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkg
eworICAgIHZhciBzaGFkZXJTcmNSZXF1aXJlID0gd3R1LnJlcGxhY2VQYXJhbXMoc2hhZGVyVGVt
cGxhdGVSZXF1aXJlLCB7J2V4dCc6IGV4dGVuc2lvbnNbaV19KTsKKyAgICB0ZXN0cy5wdXNoKHsK
KyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyU3JjUmVxdWlyZSwKKyAgICAgICAgZlNoYWRl
clN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICAgIHBh
c3NNc2c6ICJFU1NMIDEuMDAgRnJhZ21lbnQgc2hhZGVyIHRoYXQgcmVxdWlyZXMgIiArIGV4dGVu
c2lvbnNbaV0gKyAiIHNob3VsZCBub3QgY29tcGlsZS4iCisgICAgfSk7CisgICAgdmFyIHNoYWRl
clNyYzMwMFJlcXVpcmUgPSB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJUZW1wbGF0ZTMwMFJlcXVp
cmUsIHsnZXh0JzogZXh0ZW5zaW9uc1tpXX0pOworICAgIHRlc3RzLnB1c2goeworICAgICAgICBm
U2hhZGVyU291cmNlOiBzaGFkZXJTcmMzMDBSZXF1aXJlLAorICAgICAgICBmU2hhZGVyU3VjY2Vz
czogZmFsc2UsCisgICAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgICAgcGFzc01zZzog
IkVTU0wgMy4wMCBGcmFnbWVudCBzaGFkZXIgdGhhdCByZXF1aXJlcyAiICsgZXh0ZW5zaW9uc1tp
XSArICIgc2hvdWxkIG5vdCBjb21waWxlLiIKKyAgICB9KTsKKworICAgIHZhciBzaGFkZXJTcmNJ
ZmRlZiA9IHd0dS5yZXBsYWNlUGFyYW1zKHNoYWRlclRlbXBsYXRlSWZkZWYsIHsnZXh0JzogZXh0
ZW5zaW9uc1tpXX0pOworICAgIHRlc3RzLnB1c2goeworICAgICAgICBmU2hhZGVyU291cmNlOiBz
aGFkZXJTcmNJZmRlZiwKKyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICAgICAgICByZW5kZXI6IHRydWUsCisgICAgICAgIHBhc3NNc2c6
IGV4dGVuc2lvbnNbaV0gKyAiIHNob3VsZCBub3QgYmUgZGVmaW5lZCBpbiBFU1NMIDEuMDAgZnJh
Z21lbnQgc2hhZGVyLiIKKyAgICB9KTsKKyAgICB2YXIgc2hhZGVyU3JjMzAwSWZkZWYgPSB3dHUu
cmVwbGFjZVBhcmFtcyhzaGFkZXJUZW1wbGF0ZTMwMElmZGVmLCB7J2V4dCc6IGV4dGVuc2lvbnNb
aV19KTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyU3Jj
MzAwSWZkZWYsCisgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICBsaW5rU3Vj
Y2VzczogdHJ1ZSwKKyAgICAgICAgcmVuZGVyOiB0cnVlLAorICAgICAgICBwYXNzTXNnOiBleHRl
bnNpb25zW2ldICsgIiBzaG91bGQgbm90IGJlIGRlZmluZWQgaW4gRVNTTCAzLjAwIGZyYWdtZW50
IHNoYWRlci4iCisgICAgfSk7Cit9CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyh0
ZXN0cywgMik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvcHJvbW90ZWQtZXh0ZW5zaW9u
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2V4dGVuc2lvbnMvcHJvbW90ZWQtZXh0ZW5zaW9ucy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlMjI5NDJjNGQ1YmI0YTlhYjdhMjZmNGI4NzMzODlkYmYxOWFhYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZXh0ZW5zaW9ucy9wcm9tb3RlZC1leHRlbnNpb25zLmh0bWwKQEAgLTAsMCArMSw2NCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2w7CisKK2Z1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uTm90QXZhaWxhYmxlKGV4dGVu
c2lvbiwgZXh0ZW5zaW9ucykgeworICAgIGlmIChleHRlbnNpb25zLmluZGV4T2YoZXh0ZW5zaW9u
KSA+PSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoZXh0ZW5zaW9uICsgIiB3YXMgZXhwb3NlZCBp
biB0aGUgV2ViR0wgMi4wIGNvbnRleHQgYnV0IHNob3VsZCBub3QgaGF2ZSBiZWVuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZChleHRlbnNpb24gKyAiIHdhcyBub3QgZXhwb3Nl
ZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQiKTsKKyAgICB9Cit9CisKK2Rlc2NyaXB0aW9uKCJQ
cm9tb3RlZCBleHRlbnNpb25zIGZyb20gV2ViR0wgMS4wIHNob3VsZCBub3QgYmUgZXhwb3NlZCBp
biBXZWJHTCAyLjAiKTsKKworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpIik7CisKK3ZhciBleHRzID0gZ2wuZ2V0U3VwcG9y
dGVkRXh0ZW5zaW9ucygpOworCit2YXIgcHJvbW90ZWRFeHRlbnNpb25zID0gWworICAgICJBTkdM
RV9pbnN0YW5jZWRfYXJyYXlzIiwKKyAgICAiRVhUX2JsZW5kX21pbm1heCIsCisgICAgIkVYVF9m
cmFnX2RlcHRoIiwKKyAgICAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsCisgICAgIkVYVF9zUkdC
IiwKKyAgICAiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIsCisgICAgIk9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyIsCisgICAgIk9FU190ZXh0dXJlX2Zsb2F0IiwKKyAgICAiT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIsCisgICAgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiwKKyAgICAiT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiLAorICAgICJXRUJHTF9kZXB0aF90ZXh0dXJlIiwKKyAgICAi
V0VCR0xfZHJhd19idWZmZXJzIiwKK10KKworZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9tb3RlZEV4
dGVuc2lvbnMubGVuZ3RoOyArK2kpIHsKKyAgICBjaGVja0V4dGVuc2lvbk5vdEF2YWlsYWJsZShw
cm9tb3RlZEV4dGVuc2lvbnNbaV0sIGV4dHMpOworfQorCitkZWJ1ZygiIikKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy1pbnN0YW5jZWQtYmFzZS12ZXJ0ZXgtYmFzZS1p
bnN0YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy1pbnN0YW5jZWQtYmFz
ZS12ZXJ0ZXgtYmFzZS1pbnN0YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NTViMDQ2NTY0NWYwN2E1
YWM0YjFhNTA4M2E1ZGU5MzhiZjUyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy93
ZWJnbC1tdWx0aS1kcmF3LWluc3RhbmNlZC1iYXNlLXZlcnRleC1iYXNlLWluc3RhbmNlLmh0bWwK
QEAgLTAsMCArMSw3NTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBBTkdMRV9iYXNlX3ZlcnRleF9iYXNlX2lu
c3RhbmNlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBpZD0idnNoYWRlcklsbGVnYWxCYXNlSW5zdGFuY2UiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4jdmVyc2lvbiAzMDAgZXMKK2xheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzIgdlBvc2l0aW9u
Oworb3V0IHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICBjb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIDIuMCAtIDEu
MCwgZ2xfQmFzZUluc3RhbmNlLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRl
ckJhc2VJbnN0YW5jZVplcm8iIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAg
ZXMKKyNleHRlbnNpb24gR0xfQU5HTEVfYmFzZV92ZXJ0ZXhfYmFzZV9pbnN0YW5jZSA6IHJlcXVp
cmUKK2xheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzIgdlBvc2l0aW9uOworb3V0IHZlYzQgY29s
b3I7Cit2b2lkIG1haW4oKQoreworICBpZiAoZ2xfQmFzZUluc3RhbmNlID09IDApIHsKKyAgICBj
b2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgIH0gZWxzZSB7CisgICAgY29sb3IgPSB2ZWM0KDEs
IDAsIDAsIDEpOworICB9CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24gKiAyLjAgLSAx
LjAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8IS0tIENoZWNrIGdsX0luc3RhbmNlSUQgc3RhcnRz
IGF0IDAgcmVnYXJkbGVzcyBvZiBnbF9CYXNlSW5zdGFuY2UgLS0+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVySW5zdGFuY2VJRENoZWNrIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCitsYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMyIHZQb3NpdGlvbjsKK291dCB2ZWM0IGNv
bG9yOwordm9pZCBtYWluKCkKK3sKKyAgaWYgKGdsX0luc3RhbmNlSUQgPT0gMCkgeworICAgIGNv
bG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAgfSBlbHNlIHsKKyAgICBjb2xvciA9IHZlYzQoMSwg
MCwgMCwgMSk7CisgIH0KKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIDIuMCAtIDEu
MCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXJJbGxlZ2FsQmFzZVZl
cnRleCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworbGF5b3V0KGxv
Y2F0aW9uID0gMCkgaW4gdmVjMiB2UG9zaXRpb247CitvdXQgdmVjNCBjb2xvcjsKK3ZvaWQgbWFp
bigpCit7CisgIGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICBnbF9Qb3NpdGlv
biA9IHZlYzQodlBvc2l0aW9uICogMi4wIC0gMS4wLCBnbF9CYXNlVmVydGV4LCAxKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlckJhc2VWZXJ0ZXhaZXJvIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCisjZXh0ZW5zaW9uIEdMX0FOR0xFX2Jhc2VfdmVy
dGV4X2Jhc2VfaW5zdGFuY2UgOiByZXF1aXJlCitsYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMy
IHZQb3NpdGlvbjsKK291dCB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgaWYgKGdsX0Jh
c2VWZXJ0ZXggPT0gMCkgeworICAgIGNvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAgfSBlbHNl
IHsKKyAgICBjb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgIH0KKyAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHZQb3NpdGlvbiAqIDIuMCAtIDEuMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzwhLS0gQ2hl
Y2sgZ2xfVmVydGV4SUQgc3RhcnRzIGF0IGdsX0Jhc2VWZXJ0ZXggLS0+Cis8c2NyaXB0IGlkPSJ2
c2hhZGVyVmVydGV4SURDaGVjayIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMw
MCBlcworbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2UG9zaXRpb247CitvdXQgdmVjNCBj
b2xvcjsKK3ZvaWQgbWFpbigpCit7CisgIGlmIChnbF9WZXJ0ZXhJRCA+PSAzKSB7CisgICAgY29s
b3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICB9IGVsc2UgeworICAgIGNvbG9yID0gdmVjNCgxLCAw
LCAwLCAxKTsKKyAgfQorICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uICogMi4wIC0gMS4w
LCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlclNpbXBsZSIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworICAjZXh0ZW5zaW9uIEdMX0FOR0xF
X2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UgOiByZXF1aXJlCisgIGxheW91dChsb2NhdGlvbiA9
IDApIGluIHZlYzIgdlBvc2l0aW9uOworICBsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2
SW5zdGFuY2U7CisgIG91dCB2ZWM0IGNvbG9yOworICB2b2lkIG1haW4oKQorICB7CisgICAgaWYg
KHZJbnN0YW5jZSA8PSAwLjApIHsKKyAgICAgIGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApOworICAgIH0gZWxzZSBpZiAodkluc3RhbmNlIDw9IDEuMCkgeworICAgICAgY29sb3IgPSB2
ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPD0gMi4w
KSB7CisgICAgICBjb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICB9IGVsc2Ug
eworICAgICAgY29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorCisgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHZlYzModlBvc2l0aW9uLCAxLjApICogMi4wIC0gMS4wLCAxKTsK
KyAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKyAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgIGlu
IHZlYzQgY29sb3I7CisgIG91dCB2ZWM0IG9Db2xvcjsKKyAgdm9pZCBtYWluKCkgeworICAgIG9D
b2xvciA9IGNvbG9yOworICB9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZh
cz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUg
V0VCR0xfW211bHRpXV9kcmF3X2Jhc2V2ZXJ0ZXhfYmFzZV9pbnN0YW5jZSBleHRlbnNpb24sIGlm
IGl0IGlzIGF2YWlsYWJsZS4iKTsKKworY29uc3Qgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Citjb25z
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Citjb25zdCBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKworY29uc3Qgd2lkdGggPSBn
bC5jYW52YXMud2lkdGg7Citjb25zdCBoZWlnaHQgPSBnbC5jYW52YXMuaGVpZ2h0OworY29uc3Qg
eF9jb3VudCA9IDg7Citjb25zdCB5X2NvdW50ID0gODsKK2NvbnN0IHF1YWRfY291bnQgPSB4X2Nv
dW50ICogeV9jb3VudDsKK2NvbnN0IHRyaV9jb3VudCA9IHF1YWRfY291bnQgKiAyOworY29uc3Qg
dGlsZVNpemUgPSBbIDEveF9jb3VudCwgMS95X2NvdW50IF07Citjb25zdCB0aWxlUGl4ZWxTaXpl
ID0gWyBNYXRoLmZsb29yKHdpZHRoIC8geF9jb3VudCksIE1hdGguZmxvb3IoaGVpZ2h0IC8geV9j
b3VudCkgXTsKK2NvbnN0IHF1YWRSYWRpdXMgPSBbIDAuMjUgKiB0aWxlU2l6ZVswXSwgMC4yNSAq
IHRpbGVTaXplWzFdIF07Citjb25zdCBwaXhlbENoZWNrU2l6ZSA9IFsgTWF0aC5mbG9vcihxdWFk
UmFkaXVzWzBdICogd2lkdGgpLCBNYXRoLmZsb29yKHF1YWRSYWRpdXNbMV0gKiBoZWlnaHQpIF07
Citjb25zdCBidWZmZXJVc2FnZVNldCA9IFsgZ2wuU1RBVElDX0RSQVcsIGdsLkRZTkFNSUNfRFJB
VyBdOworCitmdW5jdGlvbiBnZXRUaWxlQ2VudGVyKHgsIHkpIHsKKyAgcmV0dXJuIFsgdGlsZVNp
emVbMF0gKiAoMC41ICsgeCksIHRpbGVTaXplWzFdICogKDAuNSArIHkpIF07Cit9CisKK2Z1bmN0
aW9uIGdldFF1YWRWZXJ0aWNlcyh4LCB5KSB7CisgIGNvbnN0IGNlbnRlciA9IGdldFRpbGVDZW50
ZXIoeCwgeSk7CisgIHJldHVybiBbCisgICAgW2NlbnRlclswXSAtIHF1YWRSYWRpdXNbMF0sIGNl
bnRlclsxXSAtIHF1YWRSYWRpdXNbMV0sIDBdLAorICAgIFtjZW50ZXJbMF0gKyBxdWFkUmFkaXVz
WzBdLCBjZW50ZXJbMV0gLSBxdWFkUmFkaXVzWzFdLCAwXSwKKyAgICBbY2VudGVyWzBdICsgcXVh
ZFJhZGl1c1swXSwgY2VudGVyWzFdICsgcXVhZFJhZGl1c1sxXSwgMF0sCisgICAgW2NlbnRlclsw
XSAtIHF1YWRSYWRpdXNbMF0sIGNlbnRlclsxXSArIHF1YWRSYWRpdXNbMV0sIDBdLAorICBdOwor
fQorCitjb25zdCBpbmRpY2VzRGF0YSA9IFtdOworbGV0IHZlcnRpY2VzRGF0YSA9IFtdOworbGV0
IG5vbkluZGV4ZWRWZXJ0aWNlc0RhdGEgPSBbXTsKK2NvbnN0IGluc3RhbmNlSURzRGF0YSA9IEFy
cmF5LmZyb20oQXJyYXkoeF9jb3VudCkua2V5cygpKTsKK2NvbnN0IGlzID0gbmV3IFVpbnQxNkFy
cmF5KFswLCAxLCAyLCAwLCAyLCAzXSk7CisvLyBSZWN0cyBpbiB0aGUgc2FtZSBjb2x1bW4gYXJl
IHdpdGhpbiBhIHZlcnRleCBhcnJheSwgdGVzdGluZyBnbF9WZXJ0ZXhJRCwgZ2xfQmFzZVZlcnRl
eAorLy8gUmVjdHMgaW4gdGhlIHNhbWUgcm93IGFyZSBkcmF3biBieSBpbnN0YW5jaW5nLCB0ZXN0
aW5nIGdsX0luc3RhbmNlSUQsIGdsX0Jhc2VJbnN0YW5jZQorZm9yIChsZXQgeSA9IDA7IHkgPCB5
X2NvdW50OyArK3kpIHsKKyAgLy8gdjMgLS0tLSB2MgorICAvLyB8ICAgICAgIHwKKyAgLy8gfCAg
ICAgICB8CisgIC8vIHYwIC0tLS0gdjEKKworICAvLyBHZXQgb25seSBvbmUgY29sdW1uIG9mIHF1
YWQgdmVydGljZXMgYXMgb3VyIGdlb21ldHJ5CisgIC8vIFJlbHkgb24gQmFzZUluc3RhbmNlIHRv
IGR1cGxpY2F0ZSBvbiB4IGF4aXMKKyAgY29uc3QgdnMgPSBnZXRRdWFkVmVydGljZXMoMCwgeSk7
CisKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cy5sZW5ndGg7ICsraSkgeworICAgIHZlcnRpY2Vz
RGF0YSA9IHZlcnRpY2VzRGF0YS5jb25jYXQodnNbaV0pOworICB9CisKKyAgZm9yIChsZXQgaSA9
IDA7IGkgPCBpcy5sZW5ndGg7ICsraSkgeworICAgIG5vbkluZGV4ZWRWZXJ0aWNlc0RhdGEgPSBu
b25JbmRleGVkVmVydGljZXNEYXRhLmNvbmNhdCh2c1tpc1tpXV0pOworICB9Cit9CisKKy8vIEJ1
aWxkIHRoZSBpbmRpY2VzRGF0YSB1c2VkIGJ5IGRyYXdFbGVtZW50cyoKK2ZvciAobGV0IGkgPSAw
OyBpIDwgeV9jb3VudDsgKytpKSB7CisgIGxldCBvaSA9IDYgKiBpOworICBsZXQgb3YgPSA0ICog
aTsKKyAgZm9yIChsZXQgaiA9IDA7IGogPCBpcy5sZW5ndGg7ICsraikgeworICAgIGluZGljZXNE
YXRhW29pICsgal0gPSBpc1tqXSArIG92OworICB9Cit9CisKK2NvbnN0IGluZGljZXMgPSBuZXcg
VWludDE2QXJyYXkoaW5kaWNlc0RhdGEpOworY29uc3QgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFy
cmF5KHZlcnRpY2VzRGF0YSk7Citjb25zdCBub25JbmRleGVkVmVydGljZXMgPSBuZXcgRmxvYXQz
MkFycmF5KG5vbkluZGV4ZWRWZXJ0aWNlc0RhdGEpOworY29uc3QgaW5zdGFuY2VJRHMgPSBuZXcg
RmxvYXQzMkFycmF5KGluc3RhbmNlSURzRGF0YSk7CisKK2NvbnN0IGluZGV4QnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7Citjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsK
K2NvbnN0IG5vbkluZGV4ZWRWZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2NvbnN0
IGluc3RhbmNlSURCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworY29uc3QgZHJhd0FycmF5
c0RyYXdDb3VudCA9IHhfY291bnQgLyAyOworbGV0IGRyYXdBcnJheXNQYXJhbXMgPSB7CisgIGRy
YXdDb3VudDogZHJhd0FycmF5c0RyYXdDb3VudCwKKyAgZmlyc3RzOiBuZXcgVWludDMyQXJyYXko
ZHJhd0FycmF5c0RyYXdDb3VudCkuZmlsbCgwKSwKKyAgY291bnRzOiBuZXcgVWludDMyQXJyYXko
ZHJhd0FycmF5c0RyYXdDb3VudCkuZmlsbCh5X2NvdW50ICogNiksCisgIGluc3RhbmNlczogbmV3
IFVpbnQzMkFycmF5KGRyYXdBcnJheXNEcmF3Q291bnQpLmZpbGwoMiksCisgIGJhc2VJbnN0YW5j
ZXM6IG5ldyBVaW50MzJBcnJheShkcmF3QXJyYXlzRHJhd0NvdW50KQorfTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCB4X2NvdW50IC8gMjsgKytpKSB7CisgIGRyYXdBcnJheXNQYXJhbXMuYmFzZUlu
c3RhbmNlc1tpXSA9IGkgKiAyOworfQorCitjb25zdCBkcmF3RWxlbWVudHNEcmF3Q291bnQgPSB4
X2NvdW50ICogeV9jb3VudCAvIDI7CitsZXQgZHJhd0VsZW1lbnRzUGFyYW1zID0geworICBkcmF3
Q291bnQ6IGRyYXdFbGVtZW50c0RyYXdDb3VudCwKKyAgb2Zmc2V0czogbmV3IFVpbnQzMkFycmF5
KGRyYXdFbGVtZW50c0RyYXdDb3VudCkuZmlsbCgwKSwKKyAgY291bnRzOiBuZXcgVWludDMyQXJy
YXkoZHJhd0VsZW1lbnRzRHJhd0NvdW50KS5maWxsKDYpLAorICBpbnN0YW5jZXM6IG5ldyBVaW50
MzJBcnJheShkcmF3RWxlbWVudHNEcmF3Q291bnQpLmZpbGwoMiksCisgIGJhc2VWZXJ0aWNlczog
bmV3IFVpbnQzMkFycmF5KGRyYXdFbGVtZW50c0RyYXdDb3VudCksCisgIGJhc2VJbnN0YW5jZXM6
IG5ldyBVaW50MzJBcnJheShkcmF3RWxlbWVudHNEcmF3Q291bnQpCit9OworCitsZXQgYiA9IDA7
Citmb3IgKGxldCB2ID0gMDsgdiA8IHlfY291bnQ7ICsrdikgeworICBmb3IgKGxldCBpID0gMDsg
aSA8IHhfY291bnQ7IGkrPTIpIHsKKyAgICBkcmF3RWxlbWVudHNQYXJhbXMuYmFzZVZlcnRpY2Vz
W2JdID0gdiAqIDQ7CisgICAgZHJhd0VsZW1lbnRzUGFyYW1zLmJhc2VJbnN0YW5jZXNbYl0gPSBp
OworICAgICsrYjsKKyAgfQorfQorCitmdW5jdGlvbiBzZXR1cEdlbmVyYWxCdWZmZXJzKGJ1ZmZl
clVzYWdlKSB7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIp
OworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVydGljZXMsIGJ1ZmZlclVzYWdl
KTsKKworICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZl
cik7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGJ1
ZmZlclVzYWdlKTsKKworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbm9uSW5kZXhl
ZFZlcnRleEJ1ZmZlcik7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBub25JbmRl
eGVkVmVydGljZXMsIGJ1ZmZlclVzYWdlKTsKKworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgaW5zdGFuY2VJREJ1ZmZlcik7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBpbnN0YW5jZUlEcywgYnVmZmVyVXNhZ2UpOworfQorCisvLyBDaGVjayBpZiB0aGUgZXh0ZW5z
aW9uIGlzIGVpdGhlciBib3RoIGVuYWJsZWQgYW5kIHN1cHBvcnRlZCBvcgorLy8gbm90IGVuYWJs
ZWQgYW5kIG5vdCBzdXBwb3J0ZWQuCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lv
bk5hbWUsIGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgY29uc3Qgc3VwcG9ydGVkID0gZ2wuZ2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpOworICBpZiAoc3VwcG9ydGVkLmluZGV4T2YoZXh0ZW5zaW9uTmFt
ZSkgPj0gMCkgeworICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICB0ZXN0UGFzc2Vk
KGV4dGVuc2lvbk5hbWUgKyAnIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBz
dWNjZWVkZWQnKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0
RmFpbGVkKGV4dGVuc2lvbk5hbWUgKyAnIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVu
c2lvbiBmYWlsZWQnKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGV4dGVuc2lvbkVuYWJs
ZWQpIHsKKyAgICAgIHRlc3RGYWlsZWQoZXh0ZW5zaW9uTmFtZSArICcgbm90IGxpc3RlZCBhcyBz
dXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBzdWNjZWVkZWQnKTsKKyAgICB9IGVsc2UgeworICAg
ICAgdGVzdFBhc3NlZChleHRlbnNpb25OYW1lICsgJyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBh
bmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2FsJyk7CisgICAgfQorICB9Cisg
IHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCFnbCkgewor
ICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHRlc3RGYWlsZWQoJ1dlYkdMIGNvbnRleHQg
ZG9lcyBub3QgZXhpc3QnKTsKKyAgICB9CisgIH0KKworICBkb1Rlc3QoJ1dFQkdMX2RyYXdfaW5z
dGFuY2VkX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UnLCBmYWxzZSk7CisgIGRvVGVzdCgnV0VC
R0xfbXVsdGlfZHJhd19pbnN0YW5jZWRfYmFzZV92ZXJ0ZXhfYmFzZV9pbnN0YW5jZScsIHRydWUp
OworfQorCitmdW5jdGlvbiBkb1Rlc3QoZXh0ZW5zaW9uTmFtZSwgbXVsdGlEcmF3KSB7CisgIGNv
bnN0IGV4dCA9IGdsLmdldEV4dGVuc2lvbihleHRlbnNpb25OYW1lKTsKKyAgaWYgKCFydW5TdXBw
b3J0ZWRUZXN0KGV4dGVuc2lvbk5hbWUsIGV4dCkpIHsKKyAgICByZXR1cm47CisgIH0KKworICBm
dW5jdGlvbiBnZXRTaGFkZXJTb3VyY2UoY291bnRYLCBjb3VudFksIGNvbmZpZykgeworICAgIGNv
bnN0IHZzID0gWworICAgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisgICAgICBjb25maWcuaXNNdWx0
aURyYXcgPyAnI2V4dGVuc2lvbiBHTF9BTkdMRV9tdWx0aV9kcmF3IDogcmVxdWlyZScgOiAnJywK
KyAgICAgICcjZXh0ZW5zaW9uIEdMX0FOR0xFX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UgOiBy
ZXF1aXJlJywKKyAgICAgICcjZGVmaW5lIGtDb3VudFggJyArIGNvdW50WC50b1N0cmluZygpLAor
ICAgICAgJyNkZWZpbmUga0NvdW50WSAnICsgY291bnRZLnRvU3RyaW5nKCksCisgICAgICAnbGF5
b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2UG9zaXRpb247JywKKyAgICAgIGNvbmZpZy51c2VC
YXNlSW5zdGFuY2VCdWlsdGluID8gJycgOiAnbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQg
dkluc3RhbmNlSUQ7JywKKyAgICAgICdvdXQgdmVjNCBjb2xvcjsnLAorICAgICAgJ3ZvaWQgbWFp
bigpJywKKyAgICAgICd7JywKKyAgICAgICcgIGNvbnN0IGZsb2F0IHhTdGVwID0gMS4wIC8gZmxv
YXQoa0NvdW50WCk7JywKKyAgICAgICcgIGNvbnN0IGZsb2F0IHlTdGVwID0gMS4wIC8gZmxvYXQo
a0NvdW50WSk7JywKKyAgICAgICcgIGZsb2F0IHhJRCA9ICcgKyAoY29uZmlnLnVzZUJhc2VJbnN0
YW5jZUJ1aWx0aW4gPyAnZmxvYXQoZ2xfSW5zdGFuY2VJRCArIGdsX0Jhc2VJbnN0YW5jZSknIDog
J3ZJbnN0YW5jZUlEJykgKyAnOycsCisgICAgICAnICBmbG9hdCB4Q29sb3IgPSAxLjAgLSB4U3Rl
cCAqIHhJRDsnLAorICAgICAgJyAgZmxvYXQgeUlEID0gZmxvb3IoZmxvYXQoZ2xfVmVydGV4SUQp
IC8gJyArIChjb25maWcuaXNEcmF3QXJyYXlzID8gJzYuMCcgOiAnNC4wJykgKyAnICsgMC4wMSk7
JywKKyAgICAgICcgIGNvbG9yID0gdmVjNCh4Q29sb3IsIDEuMCAtIHlTdGVwICogeUlELCAnLAor
ICAgICAgY29uZmlnLnVzZUJhc2VWZXJ0ZXhCdWlsdGluID8gJzEuMCAtIHlTdGVwICogZmxvYXQo
Z2xfQmFzZVZlcnRleCkgLyA0LjAnIDogJzEuMCcsCisgICAgICAnICAsIDEuMCk7JywKKyAgICAg
ICcgIG1hdDMgdHJhbnNmb3JtID0gbWF0MygxLjApOycsCisgICAgICAnICB0cmFuc2Zvcm1bMl1b
MF0gPSB4SUQgKiB4U3RlcDsnLAorICAgICAgJyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHRyYW5zZm9y
bSAqIHZlYzModlBvc2l0aW9uLCAxLjApICogMi4wIC0gMS4wLCAxLjApOycsCisgICAgICAnfScK
KyAgICBdLmpvaW4oJ1xuJyk7CisKKyAgICBjb25zdCBmcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmc2hhZGVyJykudGV4dC50cmltKCk7CisKKyAgICByZXR1cm4gW3ZzLCBmc107CisgIH0K
KworICBmdW5jdGlvbiBydW5WYWxpZGF0aW9uVGVzdHMoYnVmZmVyVXNhZ2UpIHsKKyAgICBjb25z
dCB2ZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAuMiwwLjIsIDAuOCwwLjIsIDAuNSwwLjggXSks
IGJ1ZmZlclVzYWdlKTsKKworICAgIGNvbnN0IGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZm
ZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50
OEFycmF5KFsgMCwgMSwgMiBdKSwgYnVmZmVyVXNhZ2UpOworCisgICAgY29uc3QgaW5zdGFuY2VC
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgaW5zdGFuY2VCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KFsgMCwgMSwgMiBdKSwgYnVmZmVyVXNhZ2UpOworCisgICAgY29u
c3QgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlclNpbXBsZScsICdmc2hh
ZGVyJ10sIFsndlBvc2l0aW9uLCB2SW5zdGFuY2VJRCddLCBbMCwgMV0pOworICAgIGV4cGVjdFRy
dWUocHJvZ3JhbSAhPSBudWxsLCAiY2FuIGNvbXBpbGUgc2ltcGxlIHByb2dyYW0iKTsKKworICAg
IGZ1bmN0aW9uIHNldHVwSW5zdGFuY2VkKCkgeworICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGluc3RhbmNlQnVmZmVyKTsKKyAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDEpOworICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAxLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICAgICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcigxLCAxKTsKKyAgICB9CisK
KyAgICBzZXR1cEluc3RhbmNlZCgpOworCisgICAgZnVuY3Rpb24gc2V0dXBEcmF3QXJyYXlzKCkg
eworICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7Cisg
ICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICAgIGdsLnZlcnRleEF0dHJp
YlBvaW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzZXR1cERyYXdFbGVtZW50cygpIHsKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0ZXhCdWZmZXIpOworICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoMCk7CisgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxz
ZSwgMCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFrZURyYXdWYWxpZGF0aW9uQ2hlY2so
ZHJhd0Z1bmMsIHNldHVwKSB7CisgICAgICBpZiAoIWRyYXdGdW5jKSB7CisgICAgICAgIHJldHVy
biBmdW5jdGlvbigpIHt9OworICAgICAgfQorICAgICAgcmV0dXJuIGZ1bmN0aW9uKGZfYXJncywg
ZXhwZWN0LCBtc2cpIHsKKyAgICAgICAgc2V0dXAoKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBkcmF3RnVuYy5h
cHBseShleHQsIGZfYXJncyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGV4cGVj
dCwgZHJhd0Z1bmMubmFtZSArICIgIiArIG1zZyk7CisgICAgICAgIGdsLmRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW11bHRpRHJhdykgewor
ICAgICAgY29uc3QgY2hlY2tEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlID0gbWFrZURy
YXdWYWxpZGF0aW9uQ2hlY2soCisgICAgICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUlu
c3RhbmNlV0VCR0wsIHNldHVwRHJhd0FycmF5cyk7CisgICAgICBjb25zdCBjaGVja0RyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UgPSBtYWtlRHJhd1ZhbGlkYXRpb25D
aGVjaygKKyAgICAgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5z
dGFuY2VXRUJHTCwgc2V0dXBEcmF3RWxlbWVudHMpOworICAgICAgY2hlY2tEcmF3QXJyYXlzSW5z
dGFuY2VkQmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCAwLCAzLCAxLCAxXSwK
KyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGdsLlRSSUFOR0xFUyIKKyAgICAgICk7CisgICAg
ICBjaGVja0RyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoCisgICAg
ICAgIFtnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX0JZVEUsIDAsIDEsIDAsIDBdLAorICAg
ICAgICBnbC5OT19FUlJPUiwgIndpdGggZ2wuVFJJQU5HTEVTIgorICAgICAgKTsKKworICAgICAg
Y2hlY2tEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5H
TEVTLCAwLCAzLCAxLCAzXSwKKyAgICAgICAgW2dsLk5PX0VSUk9SLCBnbC5JTlZBTElEX09QRVJB
VElPTl0sCisgICAgICAgICJ3aXRoIGJhc2VJbnN0YW5jZSBsZWFkaW5nIHRvIG91dCBvZiBib3Vu
ZHMiCisgICAgICApOworICAgICAgY2hlY2tEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4
QmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9CWVRF
LCAwLCAxLCAyLCAwXSwKKyAgICAgICAgW2dsLk5PX0VSUk9SLCBnbC5JTlZBTElEX09QRVJBVElP
Tl0sCisgICAgICAgICJ3aXRoIGJhc2VWZXJ0ZXggbGVhZGluZyB0byBvdXQgb2YgYm91bmRzIgor
ICAgICAgKTsKKyAgICAgIGNoZWNrRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJ
bnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfQllURSwgMCwg
MSwgMCwgM10sCisgICAgICAgIFtnbC5OT19FUlJPUiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAor
ICAgICAgICAid2l0aCBiYXNlSW5zdGFuY2UgbGVhZGluZyB0byBvdXQgb2YgYm91bmRzIgorICAg
ICAgKTsKKyAgICAgIGNoZWNrRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0
YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfQllURSwgMCwgMSwg
MiwgM10sCisgICAgICAgIFtnbC5OT19FUlJPUiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAorICAg
ICAgICAid2l0aCBib3RoIGJhc2VWZXJ0ZXggYW5kIGJhc2VJbnN0YW5jZSBsZWFkaW5nIHRvIG91
dCBvZiBib3VuZHMiCisgICAgICApOworICAgIH0gZWxzZSB7CisgICAgICBjb25zdCBjaGVja011
bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZSA9IG1ha2VEcmF3VmFsaWRhdGlvbkNo
ZWNrKAorICAgICAgICBleHQubXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlV0VC
R0wsIHNldHVwRHJhd0FycmF5cyk7CisgICAgICBjb25zdCBjaGVja011bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZSA9IG1ha2VEcmF3VmFsaWRhdGlvbkNoZWNr
KAorICAgICAgICBleHQubXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlV0VCR0wsIHNldHVwRHJhd0VsZW1lbnRzKTsKKworICAgICAgLy8gQ2hlY2sgdGhhdCBk
cmF3aW5nIGEgc2luZ2xlIHRyaWFuZ2xlIHdvcmtzCisgICAgICBjaGVja011bHRpRHJhd0FycmF5
c0luc3RhbmNlZEJhc2VJbnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBb
M10sIDAsIFsxXSwgMCwgWzBdLCAwLCAxXSwKKyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGds
LlRSSUFOR0xFUyIKKyAgICAgICk7CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAw
LCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIFsxXSwgMCwgWzBdLCAwLCBbMF0sIDAsIDFdLAor
ICAgICAgICBnbC5OT19FUlJPUiwgIndpdGggZ2wuVFJJQU5HTEVTIgorICAgICAgKTsKKworICAg
ICAgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoCisgICAgICAgIFtn
bC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDAsIFszXSwgMCwgMV0sCisgICAgICAg
IFtnbC5OT19FUlJPUiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAid2l0aCBiYXNlSW5zdGFuY2Ug
bGVhZHMgdG8gb3V0IG9mIGJvdW5kcyIKKyAgICAgICk7CisgICAgICBjaGVja011bHRpRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFO
R0xFUywgWzNdLCAwLCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIFsxXSwgMCwgWzJdLCAwLCBb
MF0sIDAsIDFdLAorICAgICAgICBbZ2wuTk9fRVJST1IsIGdsLklOVkFMSURfT1BFUkFUSU9OXSwg
IndpdGggYmFzZVZlcnRleCBsZWFkcyB0byBvdXQgb2YgYm91bmRzIgorICAgICAgKTsKKyAgICAg
IGNoZWNrTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKAor
ICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwg
WzFdLCAwLCBbMF0sIDAsIFszXSwgMCwgMV0sCisgICAgICAgIFtnbC5OT19FUlJPUiwgZ2wuSU5W
QUxJRF9PUEVSQVRJT05dLCAid2l0aCBiYXNlSW5zdGFuY2UgbGVhZHMgdG8gb3V0IG9mIGJvdW5k
cyIKKyAgICAgICk7CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEJhc2VJbnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAwLCBnbC5VTlNJ
R05FRF9CWVRFLCBbMF0sIDAsIFsxXSwgMCwgWzJdLCAwLCBbM10sIDAsIDFdLAorICAgICAgICBb
Z2wuTk9fRVJST1IsIGdsLklOVkFMSURfT1BFUkFUSU9OXSwKKyAgICAgICAgIndpdGggYm90aCBi
YXNlVmVydGV4IGFuZCBiYXNlSW5zdGFuY2UgbGVhZCB0byBvdXQgb2YgYm91bmRzIgorICAgICAg
KTsKKworICAgICAgLy8gWmVybyBkcmF3Y291bnQgcGVybWl0dGVkCisgICAgICBjaGVja011bHRp
RHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywg
WzBdLCAwLCBbM10sIDAsIFsxXSwgMCwgWzBdLCAwLCAwXSwKKyAgICAgICAgZ2wuTk9fRVJST1Is
ICJ3aXRoIGRyYXdjb3VudCA9PSAwIgorICAgICAgKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5H
TEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAwLCBbMF0sIDAsIFsw
XSwgMCwgMF0sCisgICAgICAgIGdsLk5PX0VSUk9SLCAid2l0aCBkcmF3Y291bnQgPT0gMCIKKyAg
ICAgICk7CisKKyAgICAgIC8vIENoZWNrIG5lZ2F0aXZlIGRyYXdjb3VudAorICAgICAgY2hlY2tN
dWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoCisgICAgICAgIFtnbC5UUklBTkdM
RVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDAsIFswXSwgMCwgLTFdLAorICAgICAgICBnbC5JTlZB
TElEX1ZBTFVFLCAid2l0aCBkcmF3Y291bnQgPCAwIgorICAgICAgKTsKKyAgICAgIGNoZWNrTXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKAorICAgICAgICBb
Z2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAwLCBb
MF0sIDAsIFswXSwgMCwgLTFdLAorICAgICAgICBnbC5JTlZBTElEX1ZBTFVFLCAid2l0aCBkcmF3
Y291bnQgPCAwIgorICAgICAgKTsKKworICAgICAgLy8gQ2hlY2sgb2Zmc2V0cyBncmVhdGVyIHRo
YW4gYXJyYXkgbGVuZ3RoCisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJ
bnN0YW5jZSgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAxLCBbM10sIDAsIFsxXSwgMCwg
WzBdLCAwLCAxXSwKKyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGZpcnN0c1N0
YXJ0ID49IGZpcnN0c0xpc3QubGVuZ3RoIgorICAgICAgKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0s
IDAsIFszXSwgMSwgWzFdLCAwLCBbMF0sIDAsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJB
VElPTiwgIndpdGggY291bnRzU3RhcnQgPj0gY291bnRzTGlzdC5sZW5ndGgiCisgICAgICApOwor
ICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoCisgICAgICAg
IFtnbC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDEsIFswXSwgMCwgMV0sCisgICAg
ICAgIGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBpbnN0YW5jZUNvdW50c1N0YXJ0ID49IGlu
c3RhbmNlQ291bnRzTGlzdC5sZW5ndGgiCisgICAgICApOworICAgICAgY2hlY2tNdWx0aURyYXdB
cnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwg
MCwgWzNdLCAwLCBbMV0sIDAsIFswXSwgMSwgMV0sCisgICAgICAgIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAid2l0aCBiYXNlSW5zdGFuY2VzU3RhcnQgPj0gYmFzZUluc3RhbmNlc0xpc3QubGVuZ3Ro
IgorICAgICAgKTsKKworICAgICAgY2hlY2tNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2UoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMSwgZ2wuVU5T
SUdORURfQllURSwgWzBdLCAwLCBbMV0sIDAsIFswXSwgMCwgWzBdLCAwLCAxXSwKKyAgICAgICAg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGNvdW50c1N0YXJ0ID49IGNvdW50c0xpc3QubGVu
Z3RoIgorICAgICAgKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNl
VmVydGV4QmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVO
U0lHTkVEX0JZVEUsIFswXSwgMSwgWzFdLCAwLCBbMF0sIDAsIFswXSwgMCwgMV0sCisgICAgICAg
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBvZmZzZXRzU3RhcnQgPj0gb2Zmc2V0c0xpc3Qu
bGVuZ3RoIgorICAgICAgKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlVmVydGV4QmFzZUluc3RhbmNlKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGds
LlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAxLCBbMF0sIDAsIFswXSwgMCwgMV0sCisgICAg
ICAgIGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBpbnN0YW5jZUNvdW50c1N0YXJ0ID49IGlu
c3RhbmNlQ291bnRzTGlzdC5sZW5ndGgiCisgICAgICApOworICAgICAgY2hlY2tNdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoCisgICAgICAgIFtnbC5UUklB
TkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURfQllURSwgWzBdLCAwLCBbMV0sIDAsIFswXSwgMSwg
WzBdLCAwLCAxXSwKKyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGJhc2VWZXJ0
aWNlc1N0YXJ0ID49IGJhc2VWZXJ0aWNlc0xpc3QubGVuZ3RoIgorICAgICAgKTsKKyAgICAgIGNo
ZWNrTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKAorICAg
ICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFd
LCAwLCBbMF0sIDAsIFswXSwgMSwgMV0sCisgICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
d2l0aCBiYXNlSW5zdGFuY2VzU3RhcnQgPj0gYmFzZUluc3RhbmNlc0xpc3QubGVuZ3RoIgorICAg
ICAgKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBydW5TaGFkZXJUZXN0cyhidWZmZXJVc2Fn
ZSkgeworICAgIGNvbnN0IGlsbGVnYWxCYXNlSW5zdGFuY2VQcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVySWxsZWdhbEJhc2VJbnN0YW5jZSIsICJmc2hhZGVyIl0pOworICAg
IGV4cGVjdFRydWUoaWxsZWdhbEJhc2VJbnN0YW5jZVByb2dyYW0gPT0gbnVsbCwgImNhbm5vdCBj
b21waWxlIHByb2dyYW0gd2l0aCBnbF9CYXNlSW5zdGFuY2UgYnV0IG5vIGV4dGVuc2lvbiBkaXJl
Y3RpdmUiKTsKKyAgICBjb25zdCBpbGxlZ2FsQmFzZVZlcnRleFByb2dyYW0gPSB3dHUuc2V0dXBQ
cm9ncmFtKGdsLCBbInZzaGFkZXJJbGxlZ2FsQmFzZVZlcnRleCIsICJmc2hhZGVyIl0pOworICAg
IGV4cGVjdFRydWUoaWxsZWdhbEJhc2VWZXJ0ZXhQcm9ncmFtID09IG51bGwsICJjYW5ub3QgY29t
cGlsZSBwcm9ncmFtIHdpdGggZ2xfQmFzZVZlcnRleCBidXQgbm8gZXh0ZW5zaW9uIGRpcmVjdGl2
ZSIpOworCisgICAgY29uc3QgeCA9IE1hdGguZmxvb3Iod2lkdGggKiAwLjQpOworICAgIGNvbnN0
IHkgPSBNYXRoLmZsb29yKGhlaWdodCAqIDAuNCk7CisgICAgY29uc3QgeFNpemUgPSBNYXRoLmZs
b29yKHdpZHRoICogMC4yKTsKKyAgICBjb25zdCB5U2l6ZSA9IE1hdGguZmxvb3IoaGVpZ2h0ICog
MC4yKTsKKworICAgIC8vIGdsX0Jhc2VJbnN0YW5jZSBhbmQgZ2xfSW5zdGFuY2VJRAorICAgIGds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5jcmVhdGVCdWZmZXIoKSk7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAsIDEsMCwg
MC41LDEsIDAsMSwgMC41LDAsIDEsMSBdKSwgYnVmZmVyVXNhZ2UpOworICAgIGdsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wu
RkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIGNvbnN0IGJhc2VJbnN0YW5jZVplcm9Qcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyQmFzZUluc3RhbmNlWmVybyIsICJmc2hh
ZGVyIl0sIFsidlBvc2l0aW9uIl0sIFswXSk7CisgICAgZXhwZWN0VHJ1ZShiYXNlSW5zdGFuY2Va
ZXJvUHJvZ3JhbSAhPT0gbnVsbCwgImNhbiBjb21waWxlIHByb2dyYW0gd2l0aCBnbF9CYXNlSW5z
dGFuY2UiKTsKKyAgICBnbC51c2VQcm9ncmFtKGJhc2VJbnN0YW5jZVplcm9Qcm9ncmFtKTsKKwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsK
KyAgICBpZiAoIW11bHRpRHJhdykgeworICAgICAgZXh0LmRyYXdBcnJheXNJbnN0YW5jZWRCYXNl
SW5zdGFuY2VXRUJHTChnbC5UUklBTkdMRVMsIDAsIDYsIDEsIDUpOworICAgIH0gZWxzZSB7Cisg
ICAgICBleHQubXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlV0VCR0woZ2wuVFJJ
QU5HTEVTLCBbMF0sIDAsIFs2XSwgMCwgWzFdLCAwLCBbNV0sIDAsIDEpOworICAgIH0KKworICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAg
ICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgICB3dHUuY2hlY2tDYW52
YXNSZWN0KGdsLCB4LCB5LCB4U2l6ZSwgeVNpemUsIFswLCAyNTUsIDAsIDI1NV0sICJnbF9CYXNl
SW5zdGFuY2UgaXMgMCBmb3Igbm9uLUJhc2VJbnN0YW5jZSBkcmF3IGNhbGxzIik7CisKKyAgICBj
b25zdCBpbnN0YW5jZUlEUHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlcklu
c3RhbmNlSURDaGVjayIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0sIFswXSk7CisgICAgZXhw
ZWN0VHJ1ZShpbnN0YW5jZUlEUHJvZ3JhbSAhPT0gbnVsbCwgImNhbiBjb21waWxlIHByb2dyYW0g
d2l0aCBnbF9JbnN0YW5jZUlEIik7CisgICAgZ2wudXNlUHJvZ3JhbShpbnN0YW5jZUlEUHJvZ3Jh
bSk7CisKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVS
X0JJVCk7CisgICAgaWYgKCFtdWx0aURyYXcpIHsKKyAgICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFu
Y2VkQmFzZUluc3RhbmNlV0VCR0woZ2wuVFJJQU5HTEVTLCAwLCA2LCAxLCA1KTsKKyAgICB9IGVs
c2UgeworICAgICAgZXh0Lm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZVdFQkdM
KGdsLlRSSUFOR0xFUywgWzBdLCAwLCBbNl0sIDAsIFsxXSwgMCwgWzVdLCAwLCAxKTsKKyAgICB9
CisKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCB4LCB5LCB4U2l6ZSwgeVNpemUsIFswLCAy
NTUsIDAsIDI1NV0sICJnbF9JbnN0YW5jZUlEIHNob3VsZCBhbHdheXMgc3RhcnRzIGZyb20gMCIp
OworCisgICAgLy8gZ2xfQmFzZVZlcnRleCBhbmQgZ2xfVmVydGV4SUQKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLCAxLDAsIDAuNSwxLCAw
LDEsIDAuNSwwLCAxLDEsIDAsMCwgMSwwLCAwLjUsMSwgMCwxIF0pLCBidWZmZXJVc2FnZSk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVy
KCkpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50
OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1XSksIGJ1ZmZlclVzYWdlKTsKKyAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICBjb25zdCBiYXNlVmVydGV4WmVyb1Byb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXJCYXNlVmVydGV4WmVybyIsICJmc2hhZGVy
Il0sIFsidlBvc2l0aW9uIl0sIFswXSk7CisgICAgZXhwZWN0VHJ1ZShiYXNlVmVydGV4WmVyb1By
b2dyYW0gIT09IG51bGwsICJjYW4gY29tcGlsZSBwcm9ncmFtIHdpdGggZ2xfQmFzZVZlcnRleCIp
OworICAgIGdsLnVzZVByb2dyYW0oYmFzZVZlcnRleFplcm9Qcm9ncmFtKTsKKworICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBpZiAo
IW11bHRpRHJhdykgeworICAgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhC
YXNlSW5zdGFuY2VXRUJHTChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX0JZVEUsIDAsIDEs
IDMsIDApOworICAgIH0gZWxzZSB7CisgICAgICBleHQubXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlV0VCR0woZ2wuVFJJQU5HTEVTLCBbNl0sIDAsIGdsLlVO
U0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAwLCBbM10sIDAsIFswXSwgMCwgMSk7CisgICAgfQor
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX0JZVEUs
IDApOworCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgeCwgeSwgeFNpemUsIHlTaXplLCBb
MCwgMjU1LCAwLCAyNTVdLCAiZ2xfQmFzZVZlcnRleCBpcyAwIGZvciBub24tQmFzZVZlcnRleCBk
cmF3IGNhbGxzIik7CisKKyAgICBjb25zdCB2ZXJ0ZXhJRFByb2dyYW0gPSB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbInZzaGFkZXJWZXJ0ZXhJRENoZWNrIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24i
XSwgWzBdKTsKKyAgICBleHBlY3RUcnVlKHZlcnRleElEUHJvZ3JhbSAhPT0gbnVsbCwgImNhbiBj
b21waWxlIHByb2dyYW0gd2l0aCBnbF9WZXJ0ZXhJRCIpOworICAgIGdsLnVzZVByb2dyYW0odmVy
dGV4SURQcm9ncmFtKTsKKworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5E
RVBUSF9CVUZGRVJfQklUKTsKKyAgICBpZiAoIW11bHRpRHJhdykgeworICAgICAgZXh0LmRyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VXRUJHTChnbC5UUklBTkdMRVMs
IDYsIGdsLlVOU0lHTkVEX0JZVEUsIDAsIDEsIDMsIDApOworICAgIH0gZWxzZSB7CisgICAgICBl
eHQubXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlV0VCR0wo
Z2wuVFJJQU5HTEVTLCBbNl0sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAwLCBb
M10sIDAsIFswXSwgMCwgMSk7CisgICAgfQorCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
eCwgeSwgeFNpemUsIHlTaXplLCBbMCwgMjU1LCAwLCAyNTVdLCAiZ2xfVmVydGV4SUQgc2hvdWxk
IGFsd2F5cyBzdGFydHMgZnJvbSAwIik7CisgIH0KKworICBmdW5jdGlvbiBydW5QaXhlbFRlc3Rz
KCkgeworCisgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY29uZmlnKSB7CisgICAgICBjb25zdCBy
ZWN0cyA9IFtdOworICAgICAgY29uc3QgZXhwZWN0ZWQgPSBbCisgICAgICAgIFsyNTUsIDAsIDAs
IDI1NV0sCisgICAgICAgIFswLCAyNTUsIDAsIDI1NV0sCisgICAgICAgIFswLCAwLCAyNTUsIDI1
NV0sCisgICAgICBdOworICAgICAgY29uc3QgbXNnID0gY29uZmlnLmRyYXdGdW5jLm5hbWUgKyAo
CisgICAgICAgIGNvbmZpZy51c2VCYXNlVmVydGV4QnVpbHRpbiA/ICcgZ2xfQmFzZVZlcnRleCcg
OiAnJworICAgICAgKSArICgKKyAgICAgICAgY29uZmlnLnVzZUJhc2VJbnN0YW5jZUJ1aWx0aW4g
PyAnIGdsX0Jhc2VJbnN0YW5jZScgOiAnIEluc3RhbmNlSURBcnJheScKKyAgICAgICk7CisgICAg
ICBmb3IgKGxldCB5ID0gMDsgeSA8IHlfY291bnQ7ICsreSkgeworICAgICAgICBmb3IgKGxldCB4
ID0gMDsgeCA8IHhfY291bnQ7ICsreCkgeworICAgICAgICAgIGNvbnN0IGNlbnRlcl94ID0geCAq
IHRpbGVQaXhlbFNpemVbMF0gKyBNYXRoLmZsb29yKHRpbGVQaXhlbFNpemVbMF0gLyAyKTsKKyAg
ICAgICAgICBjb25zdCBjZW50ZXJfeSA9IHkgKiB0aWxlUGl4ZWxTaXplWzFdICsgTWF0aC5mbG9v
cih0aWxlUGl4ZWxTaXplWzFdIC8gMik7CisKKyAgICAgICAgICByZWN0cy5wdXNoKHd0dS5tYWtl
Q2hlY2tSZWN0KAorICAgICAgICAgICAgY2VudGVyX3ggLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tT
aXplWzBdIC8gMiksCisgICAgICAgICAgICBjZW50ZXJfeSAtIE1hdGguZmxvb3IocGl4ZWxDaGVj
a1NpemVbMV0gLyAyKSwKKyAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzBdLAorICAgICAgICAg
ICAgcGl4ZWxDaGVja1NpemVbMV0sCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgIDI1Ni4w
ICogKDEuMCAtIHggLyB4X2NvdW50KSwKKyAgICAgICAgICAgICAgMjU2LjAgKiAoMS4wIC0geSAv
IHlfY291bnQpLAorICAgICAgICAgICAgICAoIWNvbmZpZy5pc0RyYXdBcnJheXMgJiYgY29uZmln
LnVzZUJhc2VWZXJ0ZXhCdWlsdGluKSA/IDI1Ni4wICogKDEuMCAtIHkgLyB5X2NvdW50KSA6IDI1
NS4wLAorICAgICAgICAgICAgICAyNTUuMAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIG1z
ZyArICcgKCcgKyB4ICsgJywnICsgeSArICcpJywgMS4wCisgICAgICAgICAgKSk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3RzKGdsLCByZWN0cyk7CisgICAg
fQorCisgICAgLy8gRHJhdyBmdW5jdGlvbnMgdmFyaWF0aW9ucworCisgICAgZnVuY3Rpb24gZHJh
d0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZSgpIHsKKyAgICAgIGNvbnN0IGNvdW50UGVyRHJh
dyA9IHlfY291bnQgKiA2OworICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB4X2NvdW50OyB4ICs9
IDIpIHsKKyAgICAgICAgZXh0LmRyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VXRUJHTChn
bC5UUklBTkdMRVMsIDAsIGNvdW50UGVyRHJhdywgMiwgeCk7CisgICAgICB9CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKCkgeworICAg
ICAgZXh0Lm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZVdFQkdMKGdsLlRSSUFO
R0xFUywgZHJhd0FycmF5c1BhcmFtcy5maXJzdHMsIDAsIGRyYXdBcnJheXNQYXJhbXMuY291bnRz
LCAwLCBkcmF3QXJyYXlzUGFyYW1zLmluc3RhbmNlcywgMCwgZHJhd0FycmF5c1BhcmFtcy5iYXNl
SW5zdGFuY2VzLCAwLCBkcmF3QXJyYXlzUGFyYW1zLmRyYXdDb3VudCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZSgpIHsK
KyAgICAgIGNvbnN0IGNvdW50UGVyRHJhdyA9IDY7CisgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8
IHlfY291bnQ7ICsrdikgeworICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHhfY291bnQ7IHgg
Kz0gMikgeworICAgICAgICAgIGV4dC5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFz
ZUluc3RhbmNlV0VCR0woZ2wuVFJJQU5HTEVTLCBjb3VudFBlckRyYXcsIGdsLlVOU0lHTkVEX1NI
T1JULCAwLCAyLCB2ICogNCwgeCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2Uo
KSB7CisgICAgICBleHQubXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlV0VCR0woZ2wuVFJJQU5HTEVTLCBkcmF3RWxlbWVudHNQYXJhbXMuY291bnRzLCAwLCBn
bC5VTlNJR05FRF9TSE9SVCwgZHJhd0VsZW1lbnRzUGFyYW1zLm9mZnNldHMsIDAsIGRyYXdFbGVt
ZW50c1BhcmFtcy5pbnN0YW5jZXMsIDAsIGRyYXdFbGVtZW50c1BhcmFtcy5iYXNlVmVydGljZXMs
IDAsIGRyYXdFbGVtZW50c1BhcmFtcy5iYXNlSW5zdGFuY2VzLCAwLCBkcmF3RWxlbWVudHNQYXJh
bXMuZHJhd0NvdW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0RyYXcoY29uZmlnKSB7
CisgICAgICBjb25zdCBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgICAgZ2wsCisg
ICAgICAgIGdldFNoYWRlclNvdXJjZSh4X2NvdW50LCB5X2NvdW50LCBjb25maWcpLAorICAgICAg
ICAhY29uZmlnLnVzZUJhc2VJbnN0YW5jZUJ1aWx0aW4gPyBbJ3ZQb3NpdGlvbiddIDogWyd2UG9z
aXRpb24nLCAndkluc3RhbmNlSUQnXQorICAgICAgKTsKKworICAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgICBpZiAoY29uZmln
LmlzRHJhd0FycmF5cykgeworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
bm9uSW5kZXhlZFZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7CisgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgfQorCisgICAgICBpZiAoIWNvbmZpZy51c2VCYXNl
SW5zdGFuY2VCdWlsdGluKSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBpbnN0YW5jZUlEQnVmZmVyKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MSk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMSwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcigxLCAxKTsKKyAgICAgIH0K
KworICAgICAgY29uZmlnLmRyYXdGdW5jKCk7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKworICAgICAgY2hl
Y2tSZXN1bHQoY29uZmlnKTsKKyAgICB9CisKKyAgICBjaGVja0RyYXcoeworICAgICAgZHJhd0Z1
bmM6IG11bHRpRHJhdyA/IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZSA6IGRy
YXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UsCisgICAgICBpc0RyYXdBcnJheXM6IHRydWUs
CisgICAgICBpc011bHRpRHJhdzogbXVsdGlEcmF3LAorICAgICAgdXNlQmFzZVZlcnRleEJ1aWx0
aW46IGZhbHNlLAorICAgICAgdXNlQmFzZUluc3RhbmNlQnVpbHRpbjogZmFsc2UKKyAgICB9KTsK
KworICAgIGNoZWNrRHJhdyh7CisgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3ID8gbXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlIDogZHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0
YW5jZSwKKyAgICAgIGlzRHJhd0FycmF5czogdHJ1ZSwKKyAgICAgIGlzTXVsdGlEcmF3OiBtdWx0
aURyYXcsCisgICAgICB1c2VCYXNlVmVydGV4QnVpbHRpbjogdHJ1ZSwKKyAgICAgIHVzZUJhc2VJ
bnN0YW5jZUJ1aWx0aW46IGZhbHNlCisgICAgfSk7CisKKyAgICBjaGVja0RyYXcoeworICAgICAg
ZHJhd0Z1bmM6IG11bHRpRHJhdyA/IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5j
ZSA6IGRyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UsCisgICAgICBpc0RyYXdBcnJheXM6
IHRydWUsCisgICAgICBpc011bHRpRHJhdzogbXVsdGlEcmF3LAorICAgICAgdXNlQmFzZVZlcnRl
eEJ1aWx0aW46IGZhbHNlLAorICAgICAgdXNlQmFzZUluc3RhbmNlQnVpbHRpbjogdHJ1ZQorICAg
IH0pOworCisgICAgY2hlY2tEcmF3KHsKKyAgICAgIGRyYXdGdW5jOiBtdWx0aURyYXcgPyBtdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UgOiBkcmF3QXJyYXlzSW5zdGFuY2VkQmFz
ZUluc3RhbmNlLAorICAgICAgaXNEcmF3QXJyYXlzOiB0cnVlLAorICAgICAgaXNNdWx0aURyYXc6
IG11bHRpRHJhdywKKyAgICAgIHVzZUJhc2VWZXJ0ZXhCdWlsdGluOiB0cnVlLAorICAgICAgdXNl
QmFzZUluc3RhbmNlQnVpbHRpbjogdHJ1ZQorICAgIH0pOworCisgICAgY2hlY2tEcmF3KHsKKyAg
ICAgIGRyYXdGdW5jOiBtdWx0aURyYXcgPyBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2UgOiBkcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlLAorICAgICAgaXNEcmF3QXJyYXlzOiBmYWxzZSwKKyAgICAgIGlzTXVsdGlEcmF3OiBt
dWx0aURyYXcsCisgICAgICB1c2VCYXNlVmVydGV4QnVpbHRpbjogZmFsc2UsCisgICAgICB1c2VC
YXNlSW5zdGFuY2VCdWlsdGluOiBmYWxzZQorICAgIH0pOworCisgICAgY2hlY2tEcmF3KHsKKyAg
ICAgIGRyYXdGdW5jOiBtdWx0aURyYXcgPyBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2UgOiBkcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlLAorICAgICAgaXNEcmF3QXJyYXlzOiBmYWxzZSwKKyAgICAgIGlzTXVsdGlEcmF3OiBt
dWx0aURyYXcsCisgICAgICB1c2VCYXNlVmVydGV4QnVpbHRpbjogdHJ1ZSwKKyAgICAgIHVzZUJh
c2VJbnN0YW5jZUJ1aWx0aW46IGZhbHNlCisgICAgfSk7CisKKyAgICBjaGVja0RyYXcoeworICAg
ICAgZHJhd0Z1bmM6IG11bHRpRHJhdyA/IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEJhc2VJbnN0YW5jZSA6IGRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5z
dGFuY2UsCisgICAgICBpc0RyYXdBcnJheXM6IGZhbHNlLAorICAgICAgaXNNdWx0aURyYXc6IG11
bHRpRHJhdywKKyAgICAgIHVzZUJhc2VWZXJ0ZXhCdWlsdGluOiBmYWxzZSwKKyAgICAgIHVzZUJh
c2VJbnN0YW5jZUJ1aWx0aW46IHRydWUKKyAgICB9KTsKKworICAgIGNoZWNrRHJhdyh7CisgICAg
ICBkcmF3RnVuYzogbXVsdGlEcmF3ID8gbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4QmFzZUluc3RhbmNlIDogZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0
YW5jZSwKKyAgICAgIGlzRHJhd0FycmF5czogZmFsc2UsCisgICAgICBpc011bHRpRHJhdzogbXVs
dGlEcmF3LAorICAgICAgdXNlQmFzZVZlcnRleEJ1aWx0aW46IHRydWUsCisgICAgICB1c2VCYXNl
SW5zdGFuY2VCdWlsdGluOiB0cnVlCisgICAgfSk7CisgIH0KKworICBmb3IgKGxldCBpID0gMDsg
aSA8IGJ1ZmZlclVzYWdlU2V0Lmxlbmd0aDsgaSsrKSB7CisgICAgbGV0IGJ1ZmZlclVzYWdlID0g
YnVmZmVyVXNhZ2VTZXRbaV07CisgICAgZGVidWcoIlRlc3Rpbmcgd2l0aCBCdWZmZXJVc2FnZSA9
ICIgKyBidWZmZXJVc2FnZSk7CisgICAgc2V0dXBHZW5lcmFsQnVmZmVycyhidWZmZXJVc2FnZSk7
CisgICAgcnVuVmFsaWRhdGlvblRlc3RzKGJ1ZmZlclVzYWdlKTsKKyAgICBydW5TaGFkZXJUZXN0
cyhidWZmZXJVc2FnZSk7CisgICAgcnVuUGl4ZWxUZXN0cygpOworICB9Cit9CisKK3J1blRlc3Qo
KTsKKworY29uc3Qgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktYXMtcmV0dXJuLXZhbHVlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xz
bDMvYXJyYXktYXMtcmV0dXJuLXZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkNzM1MzExMThjZGNj
ZDVmYTUzM2EwN2FhYjM4OTJmNmQ1NGU2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJh
eS1hcy1yZXR1cm4tdmFsdWUuaHRtbApAQCAtMCwwICsxLDE1MCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBhcnJheSBhcyByZXR1
cm4gdmFsdWUgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXJSZXR1cm5lZEFycmF5Tm90VXNlZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNp
b24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yOworCitpbnQgZyA9IDA7CisKK2ludFsyXSBwbHVzKCkgeworICAgICsrZzsKKyAgICByZXR1
cm4gaW50WzJdKGcsIGcpOworfQorCit2b2lkIG1haW4oKSB7CisgICAgLy8gVGhlIGZ1bmN0aW9u
IGNhbGwgc2hvdWxkIGJlIGV2YWx1YXRlZCBldmVuIGlmIHRoZSByZXR1cm5lZCBhcnJheSBpcyBu
b3QgdXNlZC4KKyAgICBwbHVzKCk7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsICgoZyA9
PSAxKSA/IDEuMCA6IDAuMCksIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
ZnNoYWRlckNvbXBhcmVSZXR1cm5lZEFycmF5IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4j
dmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9G
cmFnQ29sb3I7CisKK2ludCBnID0gMDsKKworaW50WzJdIGNyZWF0ZUFycmF5KCkgeworICAgICsr
ZzsKKyAgICByZXR1cm4gaW50WzJdKGcsIGcpOworfQorCit2b2lkIG1haW4oKSB7CisgICAgLy8g
Q29tcGFyaW5nIGEgcmV0dXJuZWQgYXJyYXkgc2hvdWxkIHdvcmsuCisgICAgaWYgKGNyZWF0ZUFy
cmF5KCkgPT0gaW50WzJdKDEsIDEpKSB7CisgICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4w
LCAxLjAsIDAuMCwgMS4wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyUmV0dXJuUmV0dXJuZWRBcnJheSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlf
RnJhZ0NvbG9yOworCitpbnQgZyA9IDA7CisKK2ludFsyXSBmb28oKSB7CisgICAgKytnOworICAg
IHJldHVybiBpbnRbMl0oZywgZyk7Cit9CisKK2ludFsyXSBiYXIoaW50IGFkZGl0aW9uKSB7Cisg
ICAgZyArPSBhZGRpdGlvbjsKKyAgICAvLyBSZXR1cm5pbmcgYSByZXR1cm5lZCBhcnJheSBzaG91
bGQgd29yay4KKyAgICByZXR1cm4gZm9vKCk7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpbnQg
YVsyXSA9IGJhcigxKTsKKyAgICBib29sIGFycmF5Q29ycmVjdCA9IHRydWU7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgaWYgKGFbaV0gIT0gMikgeworICAgICAg
ICAgICAgYXJyYXlDb3JyZWN0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgwLjAsICgoZyA9PSAyICYmIGFycmF5Q29ycmVjdCkgPyAxLjAgOiAwLjAp
LCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJSZXR1cm5lZEFy
cmF5QXNQYXJhbWV0ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBl
cworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwor
aW50IGcgPSAwOworCitpbnRbMl0gY3JlYXRlQXJyYXkoKSB7CisgICAgKytnOworICAgIHJldHVy
biBpbnRbMl0oZywgZyk7Cit9CisKK2Jvb2wgaXNTdWNjZXNzKGludFsyXSBhKSB7CisgICAgYm9v
bCBhcnJheUNvcnJlY3QgPSB0cnVlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgKytpKSB7
CisgICAgICAgIGlmIChhW2ldICE9IDEpIHsKKyAgICAgICAgICAgIGFycmF5Q29ycmVjdCA9IGZh
bHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBhcnJheUNvcnJlY3Q7Cit9CisKK3Zv
aWQgbWFpbigpIHsKKyAgICBib29sIHN1Y2Nlc3MgPSBpc1N1Y2Nlc3MoY3JlYXRlQXJyYXkoKSk7
CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIChzdWNjZXNzID8gMS4wIDogMC4wKSwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkFycmF5cyBhcyByZXR1cm4gdmFsdWVz
IHNob3VsZCB3b3JrIik7CitkZWJ1ZygiIik7CitkZWJ1ZygiVGhpcyB0ZXN0IGlzIHRhcmdldGVk
IHRvIHN0cmVzcyBzeW50YXggdHJlZSB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBtaWdodCBuZWVkIHRv
IGJlIGRvbmUgaW4gc2hhZGVyIHRyYW5zbGF0aW9uIHdoZW4gdGhlIHBsYXRmb3JtIGRvZXNuJ3Qg
bmF0aXZlbHkgc3VwcG9ydCBhcnJheXMgYXMgcmV0dXJuIHZhbHVlcy4iKTsKKworR0xTTENvbmZv
cm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclJl
dHVybmVkQXJyYXlOb3RVc2VkJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnRXhwcmVzc2lvbiB3aGVyZSBhIHJldHVybmVkIGFycmF5
IGlzIG5vdCB1c2VkJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckNvbXBhcmVSZXR1cm5l
ZEFycmF5JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICBwYXNzTXNnOiAnRXhwcmVzc2lvbiB3aGVyZSBhIHJldHVybmVkIGFycmF5IGlzIGNvbXBhcmVk
JworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclJldHVyblJldHVybmVkQXJyYXknLAorICBm
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdF
eHByZXNzaW9uIHdoZXJlIGEgcmV0dXJuZWQgYXJyYXkgaXMgcmV0dXJuZWQgYWdhaW4nCit9LAor
eworICBmU2hhZGVySWQ6ICdmc2hhZGVyUmV0dXJuZWRBcnJheUFzUGFyYW1ldGVyJywKKyAgZlNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnRXhw
cmVzc2lvbiB3aGVyZSBhIHJldHVybmVkIGFycmF5IGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlcicK
K30KK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9n
bHNsMy9hcnJheS1hc3NpZ24tY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1hc3NpZ24t
Y29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDdmM2Q3MTIzMTI5ZTVlNGRiYTJjYmY4MDI2
NjNhNGY5MzA3MDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2FycmF5LWFzc2lnbi1jb25z
dHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgYXJyYXkgY29uc3RydWN0b3IgYXNzaWdu
bWVudCB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlck5v
bkNvbnN0YW50Q29uc3RydWN0b3JQYXJhbWV0ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGludCB1
OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICAvLyBUZXN0
IGFzc2lnbmluZyBhIGNvbnN0cnVjdG9yIHJlc3VsdCBhcyBvcHBvc2VkIHRvIGluaXRpYWxpemlu
ZyB3aXRoIGEKKyAgICAvLyBjb25zdHJ1Y3RvciByZXN1bHQuCisgICAgaW50IGFbM107CisgICAg
YSA9IGludFszXSgwLCAxLCB1KTsKKyAgICBib29sIGZhaWwgPSBmYWxzZTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICBpZiAoYVtpXSAhPSBpKSB7CisgICAgICAg
ICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYVsyXSAhPSB1KSB7
CisgICAgICAgIGZhaWwgPSB0cnVlOworICAgIH0KKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgKGZhaWwgPyAwLjAgOiAxLjApLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXJBcnJheU9mU3RydWN0cyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3Zl
cnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJh
Z0NvbG9yOworCitzdHJ1Y3QgUyB7CisgICAgaW50IGZvbzsKK307CisKK3ZvaWQgbWFpbigpIHsK
KyAgICAvLyBUZXN0IGFzc2lnbmluZyBhIGNvbnN0cnVjdG9yIHJlc3VsdCBhcyBvcHBvc2VkIHRv
IGluaXRpYWxpemluZyB3aXRoIGEKKyAgICAvLyBjb25zdHJ1Y3RvciByZXN1bHQuCisgICAgUyBh
WzNdOworICAgIGEgPSBTWzNdKFMoMCksIFMoMSksIFMoMikpOworICAgIGJvb2wgZmFpbCA9IGZh
bHNlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIGlmIChhW2ld
LmZvbyAhPSBpKSB7CisgICAgICAgICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKGZhaWwgPyAwLjAgOiAxLjApLCAwLjAsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiQXNzaWduaW5nIHJldHVybiB2YWx1ZXMgb2Yg
YXJyYXkgY29uc3RydWN0b3JzIHNob3VsZCB3b3JrLiIpOworZGVidWcoIiIpOworCisvLyBUaGlz
IHRlc3Qgb25seSBjb3ZlcnMgY2FzZXMgd2hpY2ggYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBkRVFQ
IHRlc3RzLgorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBm
U2hhZGVySWQ6ICdmc2hhZGVyTm9uQ29uc3RhbnRDb25zdHJ1Y3RvclBhcmFtZXRlcicsCisgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0Fz
c2lnbmluZyBhIGNvbnN0cnVjdG9yIHJlc3VsdCcsCisgIHVuaWZvcm1zOiBbe25hbWU6ICJ1Iiwg
ZnVuY3Rpb25OYW1lOiAidW5pZm9ybTFpIiwgdmFsdWU6IDV9XQorfSwKK3sKKyAgZlNoYWRlcklk
OiAnZnNoYWRlckFycmF5T2ZTdHJ1Y3RzJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnQXNzaWduaW5nIGFuIGFycmF5IG9mIHN0cnVj
dHMnCit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvZ2xzbDMvYXJyYXktYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktYXNzaWduLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTRjMTUwN2IyOWZiMjRhYmE5ZDIwMDAwNDU5ZjY4NTE3MDI2Zjk5NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1hc3NpZ24uaHRtbApAQCAtMCwwICsxLDkzIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNM
IGFycmF5IGFzc2lnbm1lbnQgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNs
LWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXJTaW1wbGUiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMw
MCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsK
Kwordm9pZCBtYWluKCkgeworICAgIC8vIFRoaXMgc2ltcGxlIHRlc3QgdXNlcyB0aGUgRVNTTDEg
c3R5bGUgYXJyYXkgaW5pdGlhbGl6YXRpb24gaW4gb3JkZXIKKyAgICAvLyB0byBiZSBhYmxlIHRv
IHRlc3QgYXJyYXkgYXNzaWdubWVudCBpbmRlcGVuZGVudGx5IG9mIGFycmF5IGNvbnN0cnVjdG9y
cy4KKyAgICBpbnQgYVszXTsKKyAgICBpbnQgYlszXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDM7ICsraSkgeworICAgICAgICBhW2ldID0gMDsKKyAgICAgICAgYltpXSA9IGk7CisgICAgfQor
ICAgIGEgPSBiOworICAgIGJvb2wgZmFpbCA9IGZhbHNlOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMzsgKytpKSB7CisgICAgICAgIGlmIChhW2ldICE9IGkpIHsKKyAgICAgICAgICAgIGZhaWwg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAo
ZmFpbCA/IDAuMCA6IDEuMCksIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
ZnNoYWRlckFycmF5T2ZTdHJ1Y3RzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29s
b3I7CisKK3N0cnVjdCBTIHsKKyAgICBpbnQgZm9vOworfTsKKwordm9pZCBtYWluKCkgeworICAg
IC8vIFRoaXMgc2ltcGxlIHRlc3QgdXNlcyB0aGUgRVNTTDEgc3R5bGUgYXJyYXkgaW5pdGlhbGl6
YXRpb24gaW4gb3JkZXIKKyAgICAvLyB0byBiZSBhYmxlIHRvIHRlc3QgYXJyYXkgYXNzaWdubWVu
dCBpbmRlcGVuZGVudGx5IG9mIGFycmF5IGNvbnN0cnVjdG9ycy4KKyAgICBTIGFbM107CisgICAg
UyBiWzNdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIGFbaV0u
Zm9vID0gMDsKKyAgICAgICAgYltpXS5mb28gPSBpOworICAgIH0KKyAgICBhID0gYjsKKyAgICBi
b29sIGZhaWwgPSBmYWxzZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAg
ICAgICBpZiAoYVtpXS5mb28gIT0gaSkgeworICAgICAgICAgICAgZmFpbCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIChmYWlsID8gMC4wIDog
MS4wKSwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkFzc2lnbmluZyBhcnJh
eXMgc2hvdWxkIHdvcmsuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0
cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJTaW1wbGUnLAorICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdBcnJheXMgb2YgaW50ZWdl
cnMnCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyQXJyYXlPZlN0cnVjdHMnLAorICBmU2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdBcnJh
eXMgb2Ygc3RydWN0cycKK30KK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1jb21wbGV4LWluZGV4aW5nLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMv
YXJyYXktY29tcGxleC1pbmRleGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmZjlmYTFjNWFiOWM0ZDAw
MjRhMDUxMjQ2ZjhiODkwM2Y3MTFmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXkt
Y29tcGxleC1pbmRleGluZy5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgSW5kZXhpbmcgY29tcGxl
eCBhcnJheSBleHByZXNzaW9uczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwhLS0KK0FycmF5
IGluZGV4aW5nIGlzIGRldGFpbGVkIGluIHRoZSBFU1NMIDMuMDAgc3BlYyBzZWN0aW9uIDUuOQor
RVNTTCAzLjAwIHJldmlzaW9ucyBhZnRlciAzLjAwLjQgY2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBm
cm9tICdzdWJzY3JpcHRlZCBhcnJheSBuYW1lcycgdG8gJ3N1YnNjcmlwdGVkIGFycmF5cycKKy0t
PgorPHNjcmlwdCBpZD0iZnNoYWRlci1hc3NpZ25tZW50IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQg
Y29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYVsyXSA9IGZsb2F0WzJdKDAuMCwgMC4w
KTsKKyAgZmxvYXQgYlsyXSA9IGZsb2F0WzJdKDIuMCwgMS4wKTsKKyAgZmxvYXQgYyA9IChhID0g
YilbMF07CisgIGNvbG9yID0gKGMgPT0gMi4wKSA/IHZlYzQoMCwgMS4wLCAwLCAxLjApIDogdmVj
NCgxLjAsIDAsIDAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItZnVu
Y3Rpb24iIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBjb2xvcjsKK2Jvb2wgaGFzUmFuID0gZmFsc2U7
CisKK2Zsb2F0WzJdIGZ1bmN0aW9uUmV0dXJuQXJyYXkoKSB7CisgIGhhc1JhbiA9IHRydWU7Cisg
IHJldHVybiBmbG9hdFsyXSgyLjAsIDEuMCk7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQg
YyA9IChmdW5jdGlvblJldHVybkFycmF5KCkpWzBdOworICBjb2xvciA9ICgoYyA9PSAyLjApICYm
IGhhc1JhbikgPyB2ZWM0KDAsIDEuMCwgMCwgMS4wKSA6IHZlYzQoMS4wLCAwLCAwLCAxLjApOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWFycmF5LWluaXRpYWxpemF0aW9uIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0Oworb3V0IHZlYzQgY29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgZmxvYXQgYSA9
IChmbG9hdFszXSgyLjAsIDEuMCwgMC4wKSlbMF07CisgIGNvbG9yID0gKGEgPT0gMi4wKSA/IHZl
YzQoMCwgMS4wLCAwLCAxLjApIDogdmVjNCgxLjAsIDAsIDAsIDEuMCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiSW5kZXhpbmcgY29tcGxleCBhcnJheSBleHByZXNzaW9ucyIpOworZGVidWco
IiIpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hh
ZGVySWQ6ICdmc2hhZGVyLWFzc2lnbm1lbnQnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAg
bGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdUZXN0IGluZGV4aW5nIGEgdmFyaWFibGUg
YXNzaWdubWVudDogKGEgPSBiKVswXScKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXItZnVu
Y3Rpb24nLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
IHBhc3NNc2c6ICdUZXN0IGluZGV4aW5nIGEgZnVuY3Rpb24gcmV0dXJuIHdpdGggYSBzaWRlLWVm
ZmVjdDogKGZ1bmN0aW9uUmV0dXJuQXJyYXkoKSlbMF0nCit9LAoreworICBmU2hhZGVySWQ6ICdm
c2hhZGVyLWFycmF5LWluaXRpYWxpemF0aW9uJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnVGVzdCBpbmRleGluZyBhbiBhcnJheSBp
bml0aWFsaXphdGlvbjogKGZsb2F0WzNdKDIuMCwgMS4wLCAwLjApKVswXScKK30sCitdLCAyKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXkt
ZWxlbWVudC1pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1lbGVtZW50LWluY3JlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhM2U1NTU0NzJjMGJmZWVkOWM5NGQ2NjBiMjg0MzdjMzNkZGRlNTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktZWxlbWVudC1pbmNyZW1lbnQuaHRtbApA
QCAtMCwwICsxLDEzMSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+R0xTTCBpbml0aWFsaXplZCBhcnJheSBlbGVtZW50IGluY3JlbWVudC9k
ZWNyZW1lbnQgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXJGbG9hdEFycmF5SW5jcmVtZW50IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29s
b3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBmbG9hdCBBWzJdID0gZmxvYXRbMl0oMC4wLCAxLjAp
OworICAgIEFbMF0rKzsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIEFbMF0sIEFbMF0s
IDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclZlY3RvckFycmF5
SW5jcmVtZW50IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQg
bWFpbigpIHsKKyAgICB2ZWM0IFZbMl0gPSB2ZWM0WzJdKHZlYzQoMC4wLCAyLjAsIDMuMCwgNC4w
KSwgdmVjNCg1LjAsIDYuMCwgNy4wLCA4LjApKTsKKyAgICBWWzBdWzBdKys7CisgICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgxLjAgLSBWWzBdWzBdLCBWWzBdWzBdLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJWZWN0b3JFbGVtZW50SW5jcmVtZW50IiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICB2ZWM0
IHYgPSB2ZWM0KDAuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgdlswXSsrOworICAgIG15X0ZyYWdD
b2xvciA9IHZlYzQoMS4wIC0gdlswXSwgdlswXSwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc2hhZGVyRmxvYXRBcnJheURlY3JlbWVudCIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0
IHZlYzQgbXlfRnJhZ0NvbG9yOworCit2b2lkIG1haW4oKSB7CisgICAgZmxvYXQgQVsyXSA9IGZs
b2F0WzJdKDIuMCwgMS4wKTsKKyAgICBBWzBdLS07CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgx
LjAgLSBBWzBdLCBBWzBdLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXJWZWN0b3JBcnJheURlY3JlbWVudCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3Zl
cnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJh
Z0NvbG9yOworCit2b2lkIG1haW4oKSB7CisgICAgdmVjNCBWWzJdID0gdmVjNFsyXSh2ZWM0KDIu
MCwgMi4wLCAzLjAsIDQuMCksIHZlYzQoNS4wLCA2LjAsIDcuMCwgOC4wKSk7CisgICAgVlswXVsw
XS0tOworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gVlswXVswXSwgVlswXVswXSwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVmVjdG9yRWxlbWVudERl
Y3JlbWVudCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit2b2lkIG1h
aW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgyLjAsIDIuMCwgMy4wLCA0LjApOworICAgIHZbMF0t
LTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIHZbMF0sIHZbMF0sIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJJbmNyZW1lbnRpbmcgb3IgZGVjcmVtZW50aW5nIGVs
ZW1lbnRzIG9mIGFycmF5cyB3aXRoIGluaXRpYWxpemVycyBzaG91bGQgd29yay4iKTsKKworR0xT
TENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNo
YWRlckZsb2F0QXJyYXlJbmNyZW1lbnQnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJbmNyZW1lbnQgYW4gZWxlbWVudCBvZiBhIHZl
Y3RvciBhcnJheScKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJWZWN0b3JBcnJheUluY3Jl
bWVudCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAg
cGFzc01zZzogJ0luY3JlbWVudCBhbiBlbGVtZW50IG9mIGEgdmVjdG9yIGFycmF5JworfSwKK3sK
KyAgZlNoYWRlcklkOiAnZnNoYWRlclZlY3RvckVsZW1lbnRJbmNyZW1lbnQnLAorICBmU2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJbmNyZW1l
bnQgYW4gZWxlbWVudCBvZiBhIHZlY3RvcicKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJG
bG9hdEFycmF5RGVjcmVtZW50JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnRGVjcmVtZW50IGFuIGVsZW1lbnQgb2YgYSB2ZWN0b3Ig
YXJyYXknCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyVmVjdG9yQXJyYXlEZWNyZW1lbnQn
LAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NN
c2c6ICdEZWNyZW1lbnQgYW4gZWxlbWVudCBvZiBhIHZlY3RvciBhcnJheScKK30sCit7CisgIGZT
aGFkZXJJZDogJ2ZzaGFkZXJWZWN0b3JFbGVtZW50RGVjcmVtZW50JywKKyAgZlNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnRGVjcmVtZW50IGFu
IGVsZW1lbnQgb2YgYSB2ZWN0b3InCit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktZXF1YWxpdHkuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9h
cnJheS1lcXVhbGl0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZWVmZDViZjQwNWRmYzUzZTA2Y2FmMzkw
MWM1MGIyYmI1YjhlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktZXF1YWxpdHku
aHRtbApAQCAtMCwwICsxLDg1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGFycmF5IGVxdWFsaXR5IHRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyU2ltcGxlIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitv
dXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICAvLyBUaGlzIHNpbXBs
ZSB0ZXN0IHVzZXMgdGhlIEVTU0wxIHN0eWxlIGFycmF5IGluaXRpYWxpemF0aW9uIGluIG9yZGVy
CisgICAgLy8gdG8gYmUgYWJsZSB0byB0ZXN0IGFycmF5IGVxdWFsaXR5IGluZGVwZW5kZW50bHkg
b2YgYXJyYXkgY29uc3RydWN0b3JzLgorICAgIGludCBhWzNdOworICAgIGludCBiWzNdOworICAg
IGludCBjWzNdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIGFb
aV0gPSBpOworICAgICAgICBiW2ldID0gaTsKKyAgICAgICAgY1tpXSA9IGkgKyAxOworICAgIH0K
KyAgICBib29sIHN1Y2Nlc3MgPSAoYSA9PSBiKSAmJiAoYSAhPSBjKTsKKyAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCwgKHN1Y2Nlc3MgPyAxLjAgOiAwLjApLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJBcnJheU9mU3RydWN0cyIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCitzdHJ1Y3QgUyB7CisgICAgaW50IGZvbzsKK307CisK
K3ZvaWQgbWFpbigpIHsKKyAgICAvLyBUaGlzIHNpbXBsZSB0ZXN0IHVzZXMgdGhlIEVTU0wxIHN0
eWxlIGFycmF5IGluaXRpYWxpemF0aW9uIGluIG9yZGVyCisgICAgLy8gdG8gYmUgYWJsZSB0byB0
ZXN0IGFycmF5IGVxdWFsaXR5IGluZGVwZW5kZW50bHkgb2YgYXJyYXkgY29uc3RydWN0b3JzLgor
ICAgIFMgYVszXTsKKyAgICBTIGJbM107CisgICAgUyBjWzNdOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMzsgKytpKSB7CisgICAgICAgIGFbaV0uZm9vID0gaTsKKyAgICAgICAgYltpXS5mb28g
PSBpOworICAgICAgICBjW2ldLmZvbyA9IGkgKyAxOworICAgIH0KKyAgICBib29sIHN1Y2Nlc3Mg
PSAoYSA9PSBiKSAmJiAoYSAhPSBjKTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKHN1
Y2Nlc3MgPyAxLjAgOiAwLjApLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigi
Q29tcGFyaW5nIGFycmF5cyBzaG91bGQgd29yay4iKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclNpbXBsZScsCisgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0Fy
cmF5cyBvZiBpbnRlZ2VycycKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJBcnJheU9mU3Ry
dWN0cycsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAg
cGFzc01zZzogJ0FycmF5cyBvZiBzdHJ1Y3RzJworfQorXSwgMik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2FycmF5LWluLWNvbXBsZXgtZXhwcmVz
c2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL2dsc2wzL2FycmF5LWluLWNvbXBsZXgtZXhwcmVzc2lvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjllNTVhMGEwMTYwNDAxMGU0ZGI3NWQ2MmQyN2E1ODRiYTE2NTYzMDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktaW4tY29tcGxleC1leHByZXNzaW9uLmh0bWwKQEAgLTAs
MCArMSwxNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPkdMU0wgYXJyYXkgaW4gY29tcGxleCBleHByZXNzaW9uIHRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQW5kU2hvcnRDaXJjdWl0cyIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCitpbnQgZyA9IDA7CisKK2ludFsy
XSBwbHVzKCkgeworICAgICsrZzsKKyAgICByZXR1cm4gaW50WzJdKGcsIGcpOworfQorCitib29s
IG1pbnVzKCkgeworICAgIC0tZzsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgbWFpbigp
IHsKKyAgICBpbnQgYVsyXSA9IGludFsyXSgwLCAwKTsKKyAgICAvLyBUaGUgZnVuY3Rpb24gY2Fs
bCBtdXN0IG5vdCBiZSBldmFsdWF0ZWQsIHNpbmNlICYmIHNob3J0LWNpcmN1aXRzCisgICAgbWlu
dXMoKSAmJiAoYSA9PSBwbHVzKCkpOworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAoKGcg
PT0gLTEpID8gMS4wIDogMC4wKSwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyT3JTaG9ydENpcmN1aXRzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFn
Q29sb3I7CisKK2ludCBnID0gMDsKKworaW50WzJdIHBsdXMoKSB7CisgICAgKytnOworICAgIHJl
dHVybiBpbnRbMl0oZywgZyk7Cit9CisKK2Jvb2wgbWludXMoKSB7CisgICAgLS1nOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIG1haW4oKSB7CisgICAgaW50IGFbMl0gPSBpbnRbMl0oMCwg
MCk7CisgICAgLy8gVGhlIGZ1bmN0aW9uIGNhbGwgbXVzdCBub3QgYmUgZXZhbHVhdGVkLCBzaW5j
ZSB8fCBzaG9ydC1jaXJjdWl0cy4KKyAgICBtaW51cygpIHx8IChhID09IHBsdXMoKSk7CisgICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsICgoZyA9PSAtMSkgPyAxLjAgOiAwLjApLCAwLjAsIDEu
MCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJUZXJuYXJ5T25seUV2YWx1YXRl
c09uZU9wZXJhbmQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKworaW50
IGcgPSAwOworCitpbnRbMl0gcGx1cygpIHsKKyAgICArK2c7CisgICAgcmV0dXJuIGludFsyXShn
LCBnKTsKK30KKwordm9pZCBtYWluKCkgeworICAgIGludCBhWzJdID0gaW50WzJdKDAsIDApOwor
ICAgIC8vIFRoZSBmdW5jdGlvbiBjYWxsIG11c3Qgbm90IGJlIGV2YWx1YXRlZCwgc2luY2UgdGhl
IGNvbmRpdGlvbiBpcyB0cnVlLgorICAgIChnID09IDApID8gdHJ1ZSA6IChhID09IHBsdXMoKSk7
CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsICgoZyA9PSAwKSA/IDEuMCA6IDAuMCksIDAu
MCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclNlcXVlbmNlU2lkZUVm
ZmVjdHNBZmZlY3RpbmdDb21wYXJlZEFycmF5Q29udGVudCIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yOworCitpbnRbMl0gZnVuYyhpbnQgcGFyYW0pIHsKKyAgICByZXR1cm4g
aW50WzJdKHBhcmFtLCBwYXJhbSk7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpbnQgYVsyXTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICBhW2ldID0gMTsKKyAg
ICB9CisgICAgaW50IGogPSAwOworICAgIC8vIFNlcXVlbmNlIG9wZXJhdG9yIGV2YWx1YXRlcyBv
cGVyYW5kcyBmcm9tIGxlZnQgdG8gcmlnaHQgKEVTU0wgMy4wMCBzZWN0aW9uIDUuOSkuCisgICAg
Ly8gVGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCByZXR1cm5zIHRoZSBhcnJheSBuZWVkcyB0byBiZSBl
dmFsdWF0ZWQgYWZ0ZXIgKytqCisgICAgLy8gZm9yIHRoZSBleHByZXNzaW9uIHRvIHJldHVybiB0
aGUgY29ycmVjdCB2YWx1ZSAodHJ1ZSkuCisgICAgYm9vbCByZXN1bHQgPSAoKCsraiksIChhID09
IGZ1bmMoaikpKTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKHJlc3VsdCA/IDEuMCA6
IDAuMCksIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJBcnJheXMgaW4gY29t
cGxleCBleHByZXNzaW9ucyBzaG91bGQgd29yayIpOworZGVidWcoIiIpOworZGVidWcoIlRoaXMg
dGVzdCBpcyB0YXJnZXRlZCB0byBzdHJlc3Mgc3ludGF4IHRyZWUgdHJhbnNmb3JtYXRpb25zIHRo
YXQgbWlnaHQgbmVlZCB0byBiZSBkb25lIGluIHNoYWRlciB0cmFuc2xhdGlvbiB3aGVuIHRoZSBw
bGF0Zm9ybSBkb2Vzbid0IG5hdGl2ZWx5IHN1cHBvcnQgYXJyYXlzIGFzIHJldHVybiB2YWx1ZXMu
Iik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFk
ZXJJZDogJ2ZzaGFkZXJBbmRTaG9ydENpcmN1aXRzJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUs
CisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiRXhwcmVzc2lvbiB3aGVyZSBhbiBh
cnJheSBpcyByZXR1cm5lZCBmcm9tIGEgZnVuY3Rpb24gY2FsbCBpbnNpZGUgYW4gb3BlcmFuZCB0
byAmJiB0aGF0IGRvZXNuJ3QgZ2V0IGV2YWx1YXRlZCBhcyByZXN1bHQgb2Ygc2hvcnQtY2lyY3Vp
dGluZyIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJPclNob3J0Q2lyY3VpdHMnLAorICBm
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJF
eHByZXNzaW9uIHdoZXJlIGFuIGFycmF5IGlzIHJldHVybmVkIGZyb20gYSBmdW5jdGlvbiBjYWxs
IGluc2lkZSBhbiBvcGVyYW5kIHRvIHx8IHRoYXQgZG9lc24ndCBnZXQgZXZhbHVhdGVkIGFzIHJl
c3VsdCBvZiBzaG9ydC1jaXJjdWl0aW5nIgorfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclRl
cm5hcnlPbmx5RXZhbHVhdGVzT25lT3BlcmFuZCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAor
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIkV4cHJlc3Npb24gd2hlcmUgYW4gYXJy
YXkgaXMgcmV0dXJuZWQgZnJvbSBhIGZ1bmN0aW9uIGNhbGwgaW4gYW4gb3BlcmFuZCBvZiBhIHRl
cm5hcnkgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGdldCBldmFsdWF0ZWQiCit9LAoreworICBmU2hh
ZGVySWQ6ICdmc2hhZGVyU2VxdWVuY2VTaWRlRWZmZWN0c0FmZmVjdGluZ0NvbXBhcmVkQXJyYXlD
b250ZW50JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICBwYXNzTXNnOiAnRXhwcmVzc2lvbiB3aGVyZSBmaXJzdCBvcGVyYW5kIG9mIGEgc2VxdWVuY2Ug
b3BlcmF0b3IgaGFzIHNpZGUgZWZmZWN0cyB3aGljaCBhZmZlY3QgdGhlIHNlY29uZCBvcGVyYW5k
IHRoYXQgcmV0dXJucyBhbiBhcnJheScKK30KK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1pbml0aWFsaXplLXdpdGgtc2FtZS1u
YW1lLWFycmF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktaW5pdGlhbGl6ZS13aXRoLXNhbWUtbmFtZS1h
cnJheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmODFmODRkZDAzYjQ3ZDhmNDljNWUwN2YzMWMwNTY3MDQy
ZjdkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvYXJyYXktaW5pdGlhbGl6ZS13aXRoLXNh
bWUtbmFtZS1hcnJheS5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgYXJyYXkgaW5pdGlhbGl6ZXIg
dGhhdCByZWZlcmVuY2VzIGFuIGFycmF5IHdpdGggdGhlIHNhbWUgbmFtZTwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbml0QXJyYXkiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Oworb3V0
IHZlYzQgbXlfRnJhZ0NvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIGZsb2F0IGZvb1syXSA9
IGZsb2F0WzJdKDEuMCwgMS4wKTsKKyAgICB7CisgICAgICAgIGZsb2F0IGZvb1syXSA9IGZvbzsK
KyAgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGZvb1swXSwgMC4wLCBmb29bMV0pOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJJbml0aWFsaXppbmcgYW4gYXJyYXkgd2l0
aCBhbm90aGVyIGFycmF5IHdpdGggdGhlIHNhbWUgbmFtZSBzaG91bGQgd29yay4gU2VlIEdMU0wg
RVMgMy4wMC42IHNlY3Rpb24gNC4yLjIuIik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5S
ZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJJbml0QXJyYXknLAorICBmU2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdBcnJh
eSB0aGF0IGlzIGluaXRpYWxpemVkIHdpdGggYW4gYXJyYXkgb2YgdGhlIHNhbWUgbmFtZSBmcm9t
IGFuIG91dGVyIHNjb3BlJworfSwKK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9hcnJheS1sZW5ndGgtc2lkZS1lZmZlY3RzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
Z2xzbDMvYXJyYXktbGVuZ3RoLXNpZGUtZWZmZWN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzIxNTNj
NjY0ZjczOWEwY2NjMzg2NTBmMGFkOGY0NjVhZDYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xz
bDMvYXJyYXktbGVuZ3RoLXNpZGUtZWZmZWN0cy5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMOiB0
ZXN0IHRoYXQgbGVuZ3RoKCkgbWV0aG9kIGNhbGxlZCBvbiBhIGNvbXBsZXggZXhwcmVzc2lvbiB3
b3JrczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXJMZW5ndGhPZkFzc2lnbm1lbnQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2
ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0Zy
YWdDb2xvcjsKKwordm9pZCBtYWluKCkgeworICAgIGludCBhWzNdID0gaW50WzNdKDEsIDIsIDMp
OworICAgIGludCBiWzNdID0gaW50WzNdKDQsIDUsIDYpOworICAgIGludCBjID0gKGEgPSBiKS5s
ZW5ndGgoKTsKKyAgICBpZiAoYyA9PSAzICYmIGFbMF0gPT0gNCAmJiBhWzFdID09IDUgJiYgYVsy
XSA9PSA2KSB7CisgICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICB9
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJMZW5ndGhPZkZ1bmN0aW9uQ2FsbCIg
dHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCitpbnQgc2lkZUVmZmVjdENv
dW50ZXIgPSAwOworCitpbnRbMl0gZnVuYygpIHsKKyAgICArK3NpZGVFZmZlY3RDb3VudGVyOwor
ICAgIGludCBhWzJdOworICAgIHJldHVybiBhOworfQorCit2b2lkIG1haW4oKSB7CisgICAgaW50
IGIgPSAoZnVuYygpKS5sZW5ndGgoKTsKKyAgICBpZiAoc2lkZUVmZmVjdENvdW50ZXIgPT0gMSAm
JiBiID09IDIpIHsKKyAgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAg
IH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckxlbmd0aE9mQ29uc3RydWN0b3Ii
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordm9pZCBtYWluKCkgewor
ICAgIGludCBhID0gKGludFsxXSgwKSkubGVuZ3RoKCk7CisgICAgaWYgKGEgPT0gMSkgeworICAg
ICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oKTsKK2RlYnVnKCdsZW5ndGgoKSBtZXRob2QgaXMgYWxsb3dlZCB0byBiZSBj
YWxsZWQgb24gYXJiaXRyYXJ5IGV4cHJlc3Npb25zIHJldHVybmluZyBhcnJheXMuIEVTU0wgMy4w
MCBzZWN0aW9uIDUuOSBzYXlzIHRoYXQgbGVuZ3RoIGlzIGFsbG93ZWQgb24gImFycmF5IG5hbWVz
IiwgYnV0IEVTU0wgMy4yMCBoYXMgbmV3ZXIsIGNsYXJpZmllZCB3b3JkaW5nIHRoYXQgc2F5cyB0
aGF0IGl0IGlzIGFsbG93ZWQgZm9yICJhcnJheXMiLiBUaGlzIHdhcyBhbHdheXMgdGhlIGludGVu
dCBvZiB0aGUgc3BlYy4nKTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhb
CisgIHsKKyAgICBmU2hhZGVySWQ6ICJmc2hhZGVyTGVuZ3RoT2ZBc3NpZ25tZW50IiwKKyAgICBm
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNn
OiAiRnJhZ21lbnQgc2hhZGVyIHdoaWNoIHRyaWVzIHRvIGV2YWx1YXRlIHRoZSBsZW5ndGggb2Yg
YW4gYXNzaWdubWVudCBvcGVyYXRpb24gc2hvdWxkIHN1Y2NlZWQuIgorICB9LAorICB7CisgICAg
ZlNoYWRlcklkOiAiZnNoYWRlckxlbmd0aE9mRnVuY3Rpb25DYWxsIiwKKyAgICBmU2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAiRnJhZ21l
bnQgc2hhZGVyIHdoaWNoIHRyaWVzIHRvIGV2YWx1YXRlIHRoZSBsZW5ndGggb2YgYSByZXR1cm4g
dmFsdWUgc2hvdWxkIHN1Y2NlZWQuIgorICB9LAorICB7CisgICAgZlNoYWRlcklkOiAiZnNoYWRl
ckxlbmd0aE9mQ29uc3RydWN0b3IiLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxp
bmtTdWNjZXNzOiB0cnVlLAorICAgIHBhc3NNc2c6ICJGcmFnbWVudCBzaGFkZXIgd2hpY2ggdHJp
ZXMgdG8gZXZhbHVhdGUgdGhlIGxlbmd0aCBvZiBhIG5ld2x5IGNvbnN0cnVjdGVkIGFycmF5IHNo
b3VsZCBzdWNjZWVkLiIKKyAgfQorXSwgMik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2dsc2wzL2F0dHJpYi1sb2NhdGlvbi1sZW5ndGgtbGltaXRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvZ2xzbDMvYXR0cmliLWxvY2F0aW9uLWxlbmd0aC1saW1pdHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NWJmYzE3NGNjNGE4NzkzNWFiYjNkM2UwNTRlNTY0MGY2MmI5YTExCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL2dsc2wzL2F0dHJpYi1sb2NhdGlvbi1sZW5ndGgtbGltaXRzLmh0bWwKQEAgLTAsMCArMSw4
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgYXR0cmliIGxvY2F0aW9uIGxlbmd0aCB0ZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJl
LXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCI+CitUaGVyZSBpcyBzdXBwb3NlZCB0byBiZSBhbiBleGFtcGxlIGRyYXdpbmcgaGVy
ZSwgYnV0IGl0J3Mgbm90IGltcG9ydGFudC4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPlZlcmlmeSBsaW1pdHMgb24gdGhlIGxlbmd0aHMgb2YgYXR0cmlidXRlIGxvY2F0aW9ucyBw
ZXIgV2ViR0wgMiBzcGVjICJNYXhpbXVtIFVuaWZvcm0gYW5kIEF0dHJpYnV0ZSBMb2NhdGlvbiBM
ZW5ndGhzIjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJnb29k
VmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisvLyBBIHZlcnRleCBzaGFk
ZXIgd2hlcmUgdGhlIG5lZWRlZCBhdHRyaWIgbG9jYXRpb24gaXMgZXhhY3RseSAxMDI0IGNoYXJh
Y3RlcnMuCithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb24xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Owordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHZQb3NpdGlvbjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImJhZFZlcnRleFNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPgorLy8gQSB2ZXJ0ZXggc2hhZGVyIHdoZXJlIHRoZSBuZWVkZWQgYXR0cmli
IGxvY2F0aW9uIGlzIDEwMjUgY2hhcmFjdGVycy4KK2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2OworCit2b2lkIG1h
aW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAs
IDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oInRlc3QgYXR0cmliIGxvY2F0aW9uIGxlbmd0aCBsaW1pdCIpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIiwgdW5kZWZpbmVkLCAyKTsKKworZGVidWcoIlRlc3QgYXR0cmliIGxvY2F0aW9uIHVuZGVy
bmVhdGggdGhlIGxlbmd0aCBsaW1pdCIpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1G
cm9tU2NyaXB0KGdsLCAiZ29vZFZlcnRleFNoYWRlciIsICJmcmFnbWVudFNoYWRlciIpOworc2hv
dWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywg
J3RydWUnKTsKK3ZhciBhdHRyaWIxMDI0TmFtZSA9ICJ2UG9zaXRpb24xMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKK2dsLmJpbmRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCAwLCBhdHRyaWIxMDI0TmFtZSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T05FKTsKK3ZhciBhdHRyaWJMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBhdHRy
aWIxMDI0TmFtZSk7CitpZiAoYXR0cmliTG9jID09IC0xKSB7CisgICAgdGVzdEZhaWxlZCgiYXR0
cmliIGxvY2F0aW9uIHdhcyAtMSwgc2hvdWxkIG5vdCBiZSIpOworfSBlbHNlIHsKKyAgICB0ZXN0
UGFzc2VkKCJhdHRyaWIgbG9jYXRpb24gc2hvdWxkIG5vdCBiZSAtMSIpOworfQord3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9ORSk7CisKK2RlYnVnKCJUZXN0IGF0dHJpYiBsZW5ndGggb3Zl
ciB0aGUgbGVuZ3RoIGxpbWl0Iik7Cit2YXIgYXR0cmliMTAyNU5hbWUgPSBhdHRyaWIxMDI0TmFt
ZSArICI2IjsKKworZGVidWcoIlNoYWRlciBjb21waWxhdGlvbiBvciBsaW5rIHNob3VsZCBmYWls
Iik7CitzaG91bGRCZSgnd3R1LmxvYWRQcm9ncmFtRnJvbVNjcmlwdEV4cGVjdEVycm9yKGdsLCAi
YmFkVmVydGV4U2hhZGVyIiwgImZyYWdtZW50U2hhZGVyIiknLCAnbnVsbCcpOword3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9ORSk7CisKK2RlYnVnKCJBdHRlbXB0IHRvIGJpbmQgdG9vLWxv
bmcgYXR0cmliIGxvY2F0aW9uIHNob3VsZCBwcm9kdWNlIGVycm9yIik7Citwcm9ncmFtID0gZ2wu
Y3JlYXRlUHJvZ3JhbSgpOworZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDAsIGF0dHJp
YjEwMjVOYW1lKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOwor
CitkZWJ1ZygiQXR0ZW1wdCB0byBmZXRjaCB0b28tbG9uZyBhdHRyaWIgbG9jYXRpb24gc2hvdWxk
IHByb2R1Y2UgZXJyb3IiKTsKK3Byb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShnbCk7
CitzaG91bGRCZSgnZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmliMTAyNU5hbWUp
JywgJy0xJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2dsc2wzL2Jvb2wtdHlwZS1jYXN0LWJ1Zy11aW50LWl2ZWMtdXZlYy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2dsc2wzL2Jvb2wtdHlwZS1jYXN0LWJ1Zy11aW50LWl2ZWMtdXZlYy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg4YWY2MTM3YzUyOGEwZTFiZTFhYjlhNWEzYmJjODVhNTQwOTM4N2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZ2xzbDMvYm9vbC10eXBlLWNhc3QtYnVnLXVpbnQtaXZlYy11dmVjLmh0bWwKQEAgLTAs
MCArMSwzNjggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPlZlcmlmeSB1aW50KGJvb2wpLCBpdmVjKGJ2ZWMpLCBhbmQgdXZlYyhidmVjKSB3
b3JrIGNvcnJlY3RseSAoTWFjIEFNRCBkcml2ZXIgYnVnKTwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXItdWludC0xIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNp
b24gMzAwIGVzCitpbiB2ZWMzIGFQb3NpdGlvbjsKK2ZsYXQgb3V0IHVpbnQgdXZhbHVlOwordW5p
Zm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChhUG9zaXRpb24sIDEpOworICAgIHV2YWx1ZSA9IHVpbnQoYnZhbHVlKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iZnNoYWRlci11aW50LTEiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PiN2ZXJzaW9uIDMwMCBlcworZmxhdCBpbiB1aW50IHV2YWx1ZTsKK291dCBoaWdocCB2ZWM0IG15
RnJhZ0NvbG9yOworCit2b2lkIG1haW4oKSB7CisgICAgaWYgKHV2YWx1ZSA9PSAxdSkKKyAgICAg
ICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZWxzZSBpZiAo
dXZhbHVlID09IDB1KQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwg
MS4wKTsKKyAgICBlbHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXItc2ltcGxlIiB0eXBl
PSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitpbiB2ZWMzIGFQb3NpdGlvbjsK
Kwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXVpbnQtMiIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCit1bmlmb3JtIGJvb2wgYnZhbHVlOworb3V0IGhp
Z2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICB1aW50IHV2YWx1ZSA9
IHVpbnQoYnZhbHVlKTsKKworICAgIGlmICh1dmFsdWUgPT0gMXUpCisgICAgICAgIG15RnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGVsc2UgaWYgKHV2YWx1ZSA9PSAw
dSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAg
ZWxzZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyLWl2ZWMyLTEiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzMgYVBvc2l0aW9uOworZmxhdCBvdXQg
aXZlYzIgaXZhbHVlOwordW5pZm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAg
IGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEpOworICAgIGl2YWx1ZSA9IGl2ZWMyKGJ2
ZWMyKGJ2YWx1ZSwgYnZhbHVlKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIt
aXZlYzItMSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitmbGF0
IGluIGl2ZWMyIGl2YWx1ZTsKK291dCBoaWdocCB2ZWM0IG15RnJhZ0NvbG9yOworCit2b2lkIG1h
aW4oKSB7CisgICAgaWYgKGl2YWx1ZSA9PSBpdmVjMigxLCAxKSkKKyAgICAgICAgbXlGcmFnQ29s
b3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZWxzZSBpZiAoaXZhbHVlID09IGl2
ZWMyKDAsIDApKQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4w
KTsKKyAgICBlbHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXItaXZlYzItMiIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCit1bmlmb3JtIGJvb2wgYnZhbHVl
Oworb3V0IGhpZ2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpdmVj
MiBpdmFsdWUgPSBpdmVjMihidmVjMihidmFsdWUsIGJ2YWx1ZSkpOworCisgICAgaWYgKGl2YWx1
ZSA9PSBpdmVjMigxLCAxKSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgZWxzZSBpZiAoaXZhbHVlID09IGl2ZWMyKDAsIDApKQorICAgICAgICBt
eUZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAg
IG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQgaWQ9InZzaGFkZXItdXZlYzItMSIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2
ZXJzaW9uIDMwMCBlcworaW4gdmVjMyBhUG9zaXRpb247CitmbGF0IG91dCB1dmVjMiB1dmFsdWU7
Cit1bmlmb3JtIGJvb2wgYnZhbHVlOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KGFQb3NpdGlvbiwgMSk7CisgICAgdXZhbHVlID0gdXZlYzIoYnZlYzIoYnZhbHVlLCBi
dmFsdWUpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlci11dmVjMi0xIiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK2ZsYXQgaW4gdXZlYzIgdXZh
bHVlOworb3V0IGhpZ2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBp
ZiAodXZhbHVlID09IHV2ZWMyKDF1LCAxdSkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgx
LjAsIDAuMCwgMC4wLCAxLjApOworICAgIGVsc2UgaWYgKHV2YWx1ZSA9PSB1dmVjMigwdSwgMHUp
KQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBl
bHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXItdXZlYzItMiIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCit1bmlmb3JtIGJvb2wgYnZhbHVlOworb3V0IGhp
Z2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICB1dmVjMiB1dmFsdWUg
PSB1dmVjMihidmVjMihidmFsdWUsIGJ2YWx1ZSkpOworCisgICAgaWYgKHV2YWx1ZSA9PSB1dmVj
MigxdSwgMXUpKQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4w
KTsKKyAgICBlbHNlIGlmICh1dmFsdWUgPT0gdXZlYzIoMHUsIDB1KSkKKyAgICAgICAgbXlGcmFn
Q29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxzZQorICAgICAgICBteUZy
YWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJ2c2hhZGVyLWl2ZWMzLTEiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lv
biAzMDAgZXMKK2luIHZlYzMgYVBvc2l0aW9uOworZmxhdCBvdXQgaXZlYzMgaXZhbHVlOwordW5p
Zm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChhUG9zaXRpb24sIDEpOworICAgIGl2YWx1ZSA9IGl2ZWMzKGJ2ZWMzKGJ2YWx1ZSwgYnZhbHVl
LCBidmFsdWUpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlci1pdmVjMy0xIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK2ZsYXQgaW4gaXZlYzMg
aXZhbHVlOworb3V0IGhpZ2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAg
ICBpZiAoaXZhbHVlID09IGl2ZWMzKDEsIDEsIDEpKQorICAgICAgICBteUZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlIGlmIChpdmFsdWUgPT0gaXZlYzMoMCwg
MCwgMCkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOwor
ICAgIGVsc2UKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7
Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlci1pdmVjMy0yIiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3VuaWZvcm0gYm9vbCBidmFsdWU7Citv
dXQgaGlnaHAgdmVjNCBteUZyYWdDb2xvcjsKKwordm9pZCBtYWluKCkgeworICAgIGl2ZWMzIGl2
YWx1ZSA9IGl2ZWMzKGJ2ZWMzKGJ2YWx1ZSwgYnZhbHVlLCBidmFsdWUpKTsKKworICAgIGlmIChp
dmFsdWUgPT0gaXZlYzMoMSwgMSwgMSkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgxLjAs
IDAuMCwgMC4wLCAxLjApOworICAgIGVsc2UgaWYgKGl2YWx1ZSA9PSBpdmVjMygwLCAwLCAwKSkK
KyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxz
ZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVyLXV2ZWMzLTEiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzMgYVBvc2l0aW9uOworZmxhdCBvdXQgdXZl
YzMgdXZhbHVlOwordW5pZm9ybSBib29sIGJ2YWx1ZTsKKwordm9pZCBtYWluKCkgeworICAgIGds
X1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEpOworICAgIHV2YWx1ZSA9IHV2ZWMzKGJ2ZWMz
KGJ2YWx1ZSwgYnZhbHVlLCBidmFsdWUpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNo
YWRlci11dmVjMy0xIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K2ZsYXQgaW4gdXZlYzMgdXZhbHVlOworb3V0IGhpZ2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3Zv
aWQgbWFpbigpIHsKKyAgICBpZiAodXZhbHVlID09IHV2ZWMzKDF1LCAxdSwgMXUpKQorICAgICAg
ICBteUZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlIGlmICh1
dmFsdWUgPT0gdXZlYzMoMHUsIDB1LCAwdSkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgw
LjAsIDEuMCwgMC4wLCAxLjApOworICAgIGVsc2UKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0
KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRl
ci11dmVjMy0yIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3Vu
aWZvcm0gYm9vbCBidmFsdWU7CitvdXQgaGlnaHAgdmVjNCBteUZyYWdDb2xvcjsKKwordm9pZCBt
YWluKCkgeworICAgIHV2ZWMzIHV2YWx1ZSA9IHV2ZWMzKGJ2ZWMzKGJ2YWx1ZSwgYnZhbHVlLCBi
dmFsdWUpKTsKKworICAgIGlmICh1dmFsdWUgPT0gdXZlYzMoMXUsIDF1LCAxdSkpCisgICAgICAg
IG15RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGVsc2UgaWYgKHV2
YWx1ZSA9PSB1dmVjMygwdSwgMHUsIDB1KSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxzZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2c2hhZGVy
LWl2ZWM0LTEiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZl
YzMgYVBvc2l0aW9uOworZmxhdCBvdXQgaXZlYzQgaXZhbHVlOwordW5pZm9ybSBib29sIGJ2YWx1
ZTsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDEp
OworICAgIGl2YWx1ZSA9IGl2ZWM0KGJ2ZWM0KGJ2YWx1ZSwgYnZhbHVlLCBidmFsdWUsIGJ2YWx1
ZSkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWl2ZWM0LTEiIHR5cGU9Ingt
c2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworZmxhdCBpbiBpdmVjNCBpdmFsdWU7
CitvdXQgaGlnaHAgdmVjNCBteUZyYWdDb2xvcjsKKwordm9pZCBtYWluKCkgeworICAgIGlmIChp
dmFsdWUgPT0gaXZlYzQoMSwgMSwgMSwgMSkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgx
LjAsIDAuMCwgMC4wLCAxLjApOworICAgIGVsc2UgaWYgKGl2YWx1ZSA9PSBpdmVjNCgwLCAwLCAw
LCAwKSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Cisg
ICAgZWxzZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyLWl2ZWM0LTIiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwordW5pZm9ybSBib29sIGJ2YWx1ZTsKK291
dCBoaWdocCB2ZWM0IG15RnJhZ0NvbG9yOworCit2b2lkIG1haW4oKSB7CisgICAgaXZlYzQgaXZh
bHVlID0gaXZlYzQoYnZlYzQoYnZhbHVlLCBidmFsdWUsIGJ2YWx1ZSwgYnZhbHVlKSk7CisKKyAg
ICBpZiAoaXZhbHVlID09IGl2ZWM0KDEsIDEsIDEsIDEpKQorICAgICAgICBteUZyYWdDb2xvciA9
IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlIGlmIChpdmFsdWUgPT0gaXZlYzQo
MCwgMCwgMCwgMCkpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAx
LjApOworICAgIGVsc2UKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0idnNoYWRlci11dmVjNC0xIiB0eXBl
PSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitpbiB2ZWMzIGFQb3NpdGlvbjsK
K2ZsYXQgb3V0IHV2ZWM0IHV2YWx1ZTsKK3VuaWZvcm0gYm9vbCBidmFsdWU7CisKK3ZvaWQgbWFp
bigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAxKTsKKyAgICB1dmFsdWUg
PSB1dmVjNChidmVjNChidmFsdWUsIGJ2YWx1ZSwgYnZhbHVlLCBidmFsdWUpKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlci11dmVjNC0xIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4jdmVyc2lvbiAzMDAgZXMKK2ZsYXQgaW4gdXZlYzQgdXZhbHVlOworb3V0IGhpZ2hwIHZl
YzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpZiAodXZhbHVlID09IHV2ZWM0
KDF1LCAxdSwgMXUsIDF1KSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgZWxzZSBpZiAodXZhbHVlID09IHV2ZWM0KDB1LCAwdSwgMHUsIDB1KSkK
KyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZWxz
ZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyLXV2ZWM0LTIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwordW5pZm9ybSBib29sIGJ2YWx1ZTsKK291dCBoaWdo
cCB2ZWM0IG15RnJhZ0NvbG9yOworCit2b2lkIG1haW4oKSB7CisgICAgdXZlYzQgdXZhbHVlID0g
dXZlYzQoYnZlYzQoYnZhbHVlLCBidmFsdWUsIGJ2YWx1ZSwgYnZhbHVlKSk7CisKKyAgICBpZiAo
dXZhbHVlID09IHV2ZWM0KDF1LCAxdSwgMXUsIDF1KSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZWxzZSBpZiAodXZhbHVlID09IHV2ZWM0KDB1
LCAwdSwgMHUsIDB1KSkKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAs
IDEuMCk7CisgICAgZWxzZQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlZlcmlmeSB1aW50KGJvb2wpLCBp
dmVjKGJ2ZWMpLCBhbmQgdXZlYyhidmVjKSB3b3JrIGNvcnJlY3RseSIpOworZGVidWcoIiIpOwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiLCB1bmRlZmluZWQsIDIpOworICAgIGlmICgh
Z2wpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKworICAgIHZh
ciB0ZXN0Q2FzZXMgPSBbCisgICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItdWludC0xIiwgZnNo
YWRlcjogImZzaGFkZXItdWludC0xIiwgZGVzYzogInZlcnRleCBzaGFkZXIgdWludCIgfSwKKyAg
ICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci1zaW1wbGUiLCBmc2hhZGVyOiAiZnNoYWRlci11aW50
LTIiLCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIHVpbnQiIH0sCisgICAgICAgIHsgdnNoYWRlcjog
InZzaGFkZXItaXZlYzItMSIsIGZzaGFkZXI6ICJmc2hhZGVyLWl2ZWMyLTEiLCBkZXNjOiAidmVy
dGV4IHNoYWRlciBpdmVjMiIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci1zaW1wbGUi
LCBmc2hhZGVyOiAiZnNoYWRlci1pdmVjMi0yIiwgZGVzYzogImZyYWdtZW50IHNoYWRlciBpdmVj
MiIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci11dmVjMi0xIiwgZnNoYWRlcjogImZz
aGFkZXItdXZlYzItMSIsIGRlc2M6ICJ2ZXJ0ZXggc2hhZGVyIHV2ZWMyIiB9LAorICAgICAgICB7
IHZzaGFkZXI6ICJ2c2hhZGVyLXNpbXBsZSIsIGZzaGFkZXI6ICJmc2hhZGVyLXV2ZWMyLTIiLCBk
ZXNjOiAiZnJhZ21lbnQgc2hhZGVyIHV2ZWMyIiB9LAorICAgICAgICB7IHZzaGFkZXI6ICJ2c2hh
ZGVyLWl2ZWMzLTEiLCBmc2hhZGVyOiAiZnNoYWRlci1pdmVjMy0xIiwgZGVzYzogInZlcnRleCBz
aGFkZXIgaXZlYzMiIH0sCisgICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItc2ltcGxlIiwgZnNo
YWRlcjogImZzaGFkZXItaXZlYzMtMiIsIGRlc2M6ICJmcmFnbWVudCBzaGFkZXIgaXZlYzMiIH0s
CisgICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItdXZlYzMtMSIsIGZzaGFkZXI6ICJmc2hhZGVy
LXV2ZWMzLTEiLCBkZXNjOiAidmVydGV4IHNoYWRlciB1dmVjMyIgfSwKKyAgICAgICAgeyB2c2hh
ZGVyOiAidnNoYWRlci1zaW1wbGUiLCBmc2hhZGVyOiAiZnNoYWRlci11dmVjMy0yIiwgZGVzYzog
ImZyYWdtZW50IHNoYWRlciB1dmVjMyIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci1p
dmVjNC0xIiwgZnNoYWRlcjogImZzaGFkZXItaXZlYzQtMSIsIGRlc2M6ICJ2ZXJ0ZXggc2hhZGVy
IGl2ZWM0IiB9LAorICAgICAgICB7IHZzaGFkZXI6ICJ2c2hhZGVyLXNpbXBsZSIsIGZzaGFkZXI6
ICJmc2hhZGVyLWl2ZWM0LTIiLCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIGl2ZWM0IiB9LAorICAg
ICAgICB7IHZzaGFkZXI6ICJ2c2hhZGVyLXV2ZWM0LTEiLCBmc2hhZGVyOiAiZnNoYWRlci11dmVj
NC0xIiwgZGVzYzogInZlcnRleCBzaGFkZXIgdXZlYzQiIH0sCisgICAgICAgIHsgdnNoYWRlcjog
InZzaGFkZXItc2ltcGxlIiwgZnNoYWRlcjogImZzaGFkZXItdXZlYzQtMiIsIGRlc2M6ICJmcmFn
bWVudCBzaGFkZXIgdXZlYzQiIH0sCisgICAgXTsKKworICAgIGZvciAodmFyIGlkeCA9IDA7IGlk
eCA8IHRlc3RDYXNlcy5sZW5ndGg7ICsraWR4KSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdENh
c2VzW2lkeF07CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICB2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFt0ZXN0LnZzaGFkZXIsIHRlc3QuZnNoYWRlcl0sIFsiYVBvc2l0
aW9uIl0pOworICAgICAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
IkZhaWwgdG8gc2V0IHVwIHByb2dyYW0iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZhciB1bmlmb3JtTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdidmFsdWUn
KTsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nICIgKyB0ZXN0LmRlc2MgKyAiIHdpdGggZmFs
c2UiKTsKKyAgICAgICAgICAgIGdsLnVuaWZvcm0xaSh1bmlmb3JtTG9jLCAwKTsKKyAgICAgICAg
ICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGds
LCBbMCwgMjU1LCAwLCAyNTVdKTsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nICIgKyB0ZXN0
LmRlc2MgKyAiIHdpdGggdHJ1ZSIpOworICAgICAgICAgICAgZ2wudW5pZm9ybTFpKHVuaWZvcm1M
b2MsIDEpOworICAgICAgICAgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgICAgICAgICB3
dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgICAgICAgZ2wuZGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHRlc3RpbmciKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKK3Rlc3QoKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xz
bDMvY29tcGFyZS1zdHJ1Y3RzLWNvbnRhaW5pbmctYXJyYXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvY29tcGFy
ZS1zdHJ1Y3RzLWNvbnRhaW5pbmctYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc0OGFlNTE1Mzk1
ZmE4MmYwZWRmMDAyM2UyY2NhZWM5MjE4NDRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9j
b21wYXJlLXN0cnVjdHMtY29udGFpbmluZy1hcnJheXMuaHRtbApAQCAtMCwwICsxLDg2IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNM
IGFycmF5IGVxdWFsaXR5IHRlc3Qgd2l0aCBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPCEtLQorU3RydWN0dXJlIGFycmF5IGNvbXBhcmlzb25zIGFy
ZSBkZXRhaWxlZCBpbiB0aGUgRVNTTCAzLjAwIHNwZWMgc2VjdGlvbiA1LjcKKy0tPgorPHNjcmlw
dCBpZD0iZnNoYWRlci1zYW1lLXN0cnVjdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3Zl
cnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IGNvbG9yOwor
CitzdHJ1Y3QgTXlTdHJ1Y3QgeworICAgIGJvb2wgYVsyXTsKK307CisKK3ZvaWQgbWFpbigpIHsK
KyAgICBNeVN0cnVjdCBiOworICAgIGIuYVswXSA9IHRydWU7CisgICAgYi5hWzFdID0gZmFsc2U7
CisKKyAgICBNeVN0cnVjdCBjOworICAgIGMuYVswXSA9IHRydWU7CisgICAgYy5hWzFdID0gZmFs
c2U7CisKKyAgICBjb2xvciA9IGIgPT0gYyA/IHZlYzQoMCwgMS4wLCAwLCAxLjApIDogdmVjNCgx
LjAsIDAsIDAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItZGlmZmVy
ZW50LXN0cnVjdCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IGNvbG9yOworCitzdHJ1Y3QgTXlTdHJ1
Y3QgeworICAgIGJvb2wgYVsyXTsKK307CisKK3ZvaWQgbWFpbigpIHsKKyAgICBNeVN0cnVjdCBi
OworICAgIGIuYVswXSA9IHRydWU7CisgICAgYi5hWzFdID0gdHJ1ZTsKKworICAgIE15U3RydWN0
IGM7CisgICAgYy5hWzBdID0gdHJ1ZTsKKyAgICBjLmFbMV0gPSBmYWxzZTsKKworICAgIGNvbG9y
ID0gYiAhPSBjID8gdmVjNCgwLCAxLjAsIDAsIDEuMCkgOiB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJDb21wYXJpbmcgc3RydWN0cyBjb250YWluaW5nIGFy
cmF5cyBzaG91bGQgd29yay4iKTsKK2RlYnVnKCIiKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVy
LnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlci1zYW1lLXN0cnVjdCcs
CisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01z
ZzogJ0NvbXBhcmluZyB0d28gc3RydWN0cyBjb250YWluaW5nIGFycmF5cyB3aXRoIHRoZSBzYW1l
IHZhbHVlcyBzaG91bGQgZXF1YWwgdG8gZWFjaCBvdGhlcicKK30sCit7CisgIGZTaGFkZXJJZDog
J2ZzaGFkZXItZGlmZmVyZW50LXN0cnVjdCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBs
aW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0NvbXBhcmluZyB0d28gc3RydWN0cyBjb250
YWluaW5nIGFycmF5cyB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgc2hvdWxkIG5vdCBlcXVhbCB0byBl
YWNoIG90aGVyJworfSwKK10sIDIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL2dsc2wzL2NvbXBvdW5kLWFzc2lnbm1lbnQtdHlwZS1jb21iaW5hdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2dsc2wzL2NvbXBvdW5kLWFzc2lnbm1lbnQtdHlwZS1jb21iaW5hdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc2ZDcwZWZkN2I5YzM5NDkwZTM5Y2UyYjA2MTRkMGI3NDJlMGM4YTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvZ2xzbDMvY29tcG91bmQtYXNzaWdubWVudC10eXBlLWNvbWJpbmF0aW9u
Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+UmVzdWx0IHR5cGUgc2hvdWxkIG1hdGNoIHRoZSBsLXZhbHVl
IHR5cGUgaW4gY29tcG91bmQgYXNzaWdubWVudDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXBvdW5kLWFzc2lnbm1lbnQtdHlwZS1jb21iaW5h
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoMikiPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2NvbnN0LWFycmF5
LWluaXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9nbHNsMy9jb25zdC1hcnJheS1pbml0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5
MmMwM2I2MzZiZDk2OWM4NTk4N2E0YWMzNTA2MDU2ZTk2YTNhOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9nbHNsMy9jb25zdC1hcnJheS1pbml0Lmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q29uc3RhbnQgYXJy
YXkgaW5pdGlhbGl6YXRpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNs
LWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXJHbG9iYWxDb25zdEFycmF5IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4j
dmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJh
Z0NvbG9yOworCitjb25zdCB2ZWM0IGNvbnN0YW50c1syXSA9IHZlYzRbXSAoCisgICAgdmVjNCgw
LjYsIDAuMywgMC4wLCAzLjApLAorICAgIHZlYzQoLTAuNiwgMC43LCAwLjAsIC0yLjApCispOwor
Cit2b2lkIG1haW4oKQoreworICAgIG15X0ZyYWdDb2xvciA9IGNvbnN0YW50c1swXSArIGNvbnN0
YW50c1sxXTsKKyAgICByZXR1cm47Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJH
bG9iYWxDb25zdEFycmF5V2l0aFJlZmVyZW5jZVRvQ29uc3RBcnJheSIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291
dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKworY29uc3QgdmVjNCBjb25zdGFudHNbMl0gPSB2ZWM0W10g
KAorICAgIHZlYzQoMC42LCAwLjMsIDAuMCwgMy4wKSwKKyAgICB2ZWM0KC0wLjYsIDAuNywgMC4w
LCAtMi4wKQorKTsKKworY29uc3QgdmVjNCBjb25zdGFudHMyWzJdID0gdmVjNFtdICgKKyAgICBj
b25zdGFudHNbMV0sCisgICAgY29uc3RhbnRzWzBdCispOworCit2b2lkIG1haW4oKQoreworICAg
IG15X0ZyYWdDb2xvciA9IGNvbnN0YW50czJbMF0gKyBjb25zdGFudHMyWzFdOworICAgIHJldHVy
bjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckdsb2JhbENvbnN0QXJyYXlJbml0
aWFsaXplZFRvQ29uc3RBcnJheSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24g
MzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsK
KworY29uc3QgdmVjNCBjb25zdGFudHNbMl0gPSB2ZWM0W10gKAorICAgIHZlYzQoMC42LCAwLjMs
IDAuMCwgMy4wKSwKKyAgICB2ZWM0KC0wLjYsIDAuNywgMC4wLCAtMi4wKQorKTsKKworY29uc3Qg
dmVjNCBjb25zdGFudHMyWzJdID0gY29uc3RhbnRzOworCit2b2lkIG1haW4oKQoreworICAgIG15
X0ZyYWdDb2xvciA9IGNvbnN0YW50czJbMF0gKyBjb25zdGFudHMyWzFdOworICAgIHJldHVybjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oIlRlc3QgaW5pdGlhbGl6aW5nIGEgY29uc3RhbnQgZ2xvYmFsIGFy
cmF5Iik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZT
aGFkZXJJZDogJ2ZzaGFkZXJHbG9iYWxDb25zdEFycmF5JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRy
dWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAiR2xvYmFsIGNvbnN0YW50IGFy
cmF5IHdpdGggdmVjNCBjb25zdHJ1Y3RvcnMgYW5kIGxpdGVyYWxzIGluIHRoZSBpbml0aWFsaXpl
ciIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJHbG9iYWxDb25zdEFycmF5V2l0aFJlZmVy
ZW5jZVRvQ29uc3RBcnJheScsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogIkdsb2JhbCBjb25zdGFudCBhcnJheSB3aGljaCBpbmRleGVz
IGFub3RoZXIgZ2xvYmFsIGNvbnN0YW50IGFycmF5IGluIHRoZSBpbml0aWFsaXplciIKK30sCit7
CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJHbG9iYWxDb25zdEFycmF5SW5pdGlhbGl6ZWRUb0NvbnN0
QXJyYXknLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
IHBhc3NNc2c6ICJHbG9iYWwgY29uc3RhbnQgYXJyYXkgaW5pdGlhbGl6ZWQgdG8gYW5vdGhlciBn
bG9iYWwgY29uc3RhbnQgYXJyYXkiCit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2NvbnN0LXN0cnVjdC1mcm9tLWFycmF5LWFzLWZ1bmN0
aW9uLXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2NvbnN0LXN0cnVjdC1mcm9tLWFycmF5LWFzLWZ1
bmN0aW9uLXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2N2UwZTBkZDU0MDMwMzUxNmE3NWYx
Y2RiYzhmYjIwMzFjZmI2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvY29uc3Qtc3RydWN0
LWZyb20tYXJyYXktYXMtZnVuY3Rpb24tcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSw1OSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xT
TCBwYXNzaW5nIHN0cnVjdCBmcm9tIGEgY29uc3QgYXJyYXkgaW50byBhIGZ1bmN0aW9uIHBhcmFt
ZXRlciBidWc8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmU2hhZGVyVGVz
dCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCisKK3ByZWNpc2lv
biBoaWdocCBmbG9hdDsKK3N0cnVjdCBTIHsgZmxvYXQgbWVtYmVyOyB9OworCitjb25zdCBTIHNb
Ml0gPSBTW10oIFMoMS4pLCBTKDIuKSk7CisKK2Jvb2wgdXNlU3RydWN0KCBTIHMpIHsgcmV0dXJu
IHMubWVtYmVyID4gMC4wOyB9CisKK291dCB2ZWM0IG91dENvbG9yOworCit2b2lkIG1haW4oIHZv
aWQgKQoreworICAgIG91dENvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIGlmICh1c2VTdHJ1Y3Qoc1tpXSkp
IHsKKyAgICAgICAgICAgIG91dENvbG9yLmcrKzsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCk7CisKKy8vIENvdmVycyBidWc6CisvLyBodHRwOi8vY3JidWcuY29t
Lzg3MTQzNAorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworeworICBmU2hhZGVy
SWQ6ICdmU2hhZGVyVGVzdCcsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogJ1Bhc3NpbmcgYSBzdHJ1Y3QgZnJvbSBhIGR5bmFtaWNhbGx5
IGluZGV4ZWQgY29uc3QgYXJyYXkgaW50byBhIG5vbi1jb25zdCBmdW5jdGlvbiBwYXJhbWV0ZXIg
c2hvdWxkIHdvcmsuJywKKyAgcmVuZGVyOiB0cnVlCit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0LXBhcnNpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9n
bHNsMy9mbG9hdC1wYXJzaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNkNGQ4YTczMTgwY2ZhZTE4MDRl
MzgzMzE3ZTMyNmIwMmRjMjkxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9mbG9hdC1wYXJz
aW5nLmh0bWwKQEAgLTAsMCArMSwxNjcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkZsb2F0IHBhcnNpbmcgY29ybmVyIGNhc2VzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlclBhcnNlZEZsb2F0T3ZlcmZs
b3dUb0luZmluaXR5IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordm9pZCBt
YWluKCkKK3sKKyAgICAvLyBPdXQtb2YtcmFuZ2UgZmxvYXRzIHNob3VsZCBvdmVyZmxvdyB0byBp
bmZpbml0eQorICAgIC8vIEdMU0wgRVMgMy4wMC42IHNlY3Rpb24gNC4xLjQgRmxvYXRzOgorICAg
IC8vICJJZiB0aGUgdmFsdWUgb2YgdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyB0b28gbGFy
Z2UgKHNtYWxsKSB0byBiZSBzdG9yZWQgYXMgYSBzaW5nbGUgcHJlY2lzaW9uIHZhbHVlLCBpdCBp
cyBjb252ZXJ0ZWQgdG8gcG9zaXRpdmUgKG5lZ2F0aXZlKSBpbmZpbml0eSIKKyAgICBmbG9hdCBj
b3JyZWN0ID0gaXNpbmYoMS4wZTQwKSA/IDEuMCA6IDAuMDsKKyAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgY29ycmVjdCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
c2hhZGVyUGFyc2VkRmxvYXRVbmRlcmZsb3dUb1plcm8iIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Oworb3V0IHZlYzQgbXlf
RnJhZ0NvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIC8vIEdMU0wgRVMgMy4wMC42IHNlY3Rp
b24gNC4xLjQgRmxvYXRzOgorICAgIC8vICJBIHZhbHVlIHdpdGggYSBtYWduaXR1ZGUgdG9vIHNt
YWxsIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbWFudGlzc2EgYW5kIGV4cG9uZW50IGlzIGNvbnZl
cnRlZCB0byB6ZXJvLiIKKyAgICAvLyAxLjBlLTUwIGlzIHNtYWxsIGVub3VnaCB0aGF0IGl0IGNh
bid0IGV2ZW4gYmUgc3RvcmVkIGFzIHN1Ym5vcm1hbC4KKyAgICBmbG9hdCBjb3JyZWN0ID0gKDEu
MGUtNTAgPT0gMC4wKSA/IDEuMCA6IDAuMDsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
Y29ycmVjdCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyUGFy
c2VkRmxvYXRTbWFsbE1hbnRpc3NhIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsK
Kwordm9pZCBtYWluKCkKK3sKKyAgICAvLyBHTFNMIEVTIDMuMDAuNiBzZWN0aW9uIDQuMS40IEZs
b2F0czoKKyAgICAvLyAiVGhlcmUgaXMgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBkaWdpdHMg
aW4gYW55IGRpZ2l0LXNlcXVlbmNlLiIKKyAgICAvLyBUaGUgYmVsb3cgZmxvYXQgc3RyaW5nIGhh
cyAxMDAgemVyb3MgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQsIGJ1dCByZXByZXNlbnRzIDEuMC4K
KyAgICBmbG9hdCB4ID0gMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMWUxMDE7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIHgsIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclBhcnNlZEZsb2F0TGFyZ2VNYW50aXNzYSIg
dHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGln
aHAgZmxvYXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
Ly8gR0xTTCBFUyAzLjAwLjYgc2VjdGlvbiA0LjEuNCBGbG9hdHM6CisgICAgLy8gIlRoZXJlIGlz
IG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIGFueSBkaWdpdC1zZXF1ZW5jZS4i
CisgICAgLy8gVGhlIGJlbG93IGZsb2F0IHN0cmluZyBoYXMgMTAwIHplcm9zLCBidXQgcmVwcmVz
ZW50cyAxLjAuCisgICAgZmxvYXQgeCA9IDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLjBlLTEwMDsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgeCwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyUGFyc2VkRmxvYXRFeHBv
bmVudEFib3ZlTWF4SW50IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAg
ZXMKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordm9p
ZCBtYWluKCkKK3sKKyAgICAvLyBPdXQtb2YtcmFuZ2UgZmxvYXRzIHNob3VsZCBvdmVyZmxvdyB0
byBpbmZpbml0eQorICAgIC8vIEdMU0wgRVMgMy4wMC42IHNlY3Rpb24gNC4xLjQgRmxvYXRzOgor
ICAgIC8vICJJZiB0aGUgdmFsdWUgb2YgdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyB0b28g
bGFyZ2UgKHNtYWxsKSB0byBiZSBzdG9yZWQgYXMgYSBzaW5nbGUgcHJlY2lzaW9uIHZhbHVlLCBp
dCBpcyBjb252ZXJ0ZWQgdG8gcG9zaXRpdmUgKG5lZ2F0aXZlKSBpbmZpbml0eSIKKyAgICBmbG9h
dCBjb3JyZWN0ID0gaXNpbmYoMS4wZTIxNDc0ODM2NDkpID8gMS4wIDogMC4wOworICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMC4wLCBjb3JyZWN0LCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJOb25Db25zdEZsb2F0SXNJbmZpbml0eSIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitvdXQg
dmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQgdTsgLy8gQXNzdW1lZCB0byBoYXZl
IHRoZSBkZWZhdWx0IHZhbHVlIDAuMAorCit2b2lkIG1haW4oKQoreworICAgIC8vIE91dC1vZi1y
YW5nZSBmbG9hdHMgc2hvdWxkIG92ZXJmbG93IHRvIGluZmluaXR5CisgICAgLy8gR0xTTCBFUyAz
LjAwLjYgc2VjdGlvbiA0LjEuNCBGbG9hdHM6CisgICAgLy8gIklmIHRoZSB2YWx1ZSBvZiB0aGUg
ZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGlzIHRvbyBsYXJnZSAoc21hbGwpIHRvIGJlIHN0b3JlZCBh
cyBhIHNpbmdsZSBwcmVjaXNpb24gdmFsdWUsIGl0IGlzIGNvbnZlcnRlZCB0byBwb3NpdGl2ZSAo
bmVnYXRpdmUpIGluZmluaXR5IgorICAgIGZsb2F0IGYgPSAxLjBlMjA0OCAtIHU7CisgICAgZmxv
YXQgY29ycmVjdCA9IChpc2luZihmKSAmJiBmID4gMC4wKSA/IDEuMCA6IDAuMDsKKyAgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KDAuMCwgY29ycmVjdCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc2hhZGVyTm9uQ29uc3RGbG9hdElzTmVnYXRpdmVJbmZpbml0eSIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gZmxvYXQgdTsgLy8gQXNzdW1l
ZCB0byBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlIDAuMAorCit2b2lkIG1haW4oKQoreworICAgIC8v
IE91dC1vZi1yYW5nZSBmbG9hdHMgc2hvdWxkIG92ZXJmbG93IHRvIGluZmluaXR5CisgICAgLy8g
R0xTTCBFUyAzLjAwLjYgc2VjdGlvbiA0LjEuNCBGbG9hdHM6CisgICAgLy8gIklmIHRoZSB2YWx1
ZSBvZiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGlzIHRvbyBsYXJnZSAoc21hbGwpIHRvIGJl
IHN0b3JlZCBhcyBhIHNpbmdsZSBwcmVjaXNpb24gdmFsdWUsIGl0IGlzIGNvbnZlcnRlZCB0byBw
b3NpdGl2ZSAobmVnYXRpdmUpIGluZmluaXR5IgorICAgIGZsb2F0IGYgPSAtMS4wZTIwNDggKyB1
OworICAgIGZsb2F0IGNvcnJlY3QgPSAoaXNpbmYoZikgJiYgZiA8IDAuMCkgPyAxLjAgOiAwLjA7
CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIGNvcnJlY3QsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsK
K3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclBhcnNlZEZsb2F0T3ZlcmZsb3dUb0luZmluaXR5JywK
KyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNn
OiAiRmxvYXRzIG9mIHRvbyBsYXJnZSBtYWduaXR1ZGUgc2hvdWxkIGJlIGNvbnZlcnRlZCBpbmZp
bml0eS4iCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyUGFyc2VkRmxvYXRVbmRlcmZsb3dU
b1plcm8nLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
IHBhc3NNc2c6ICJGbG9hdHMgb2YgdG9vIHNtYWxsIG1hZ25pdHVkZSBzaG91bGQgYmUgY29udmVy
dGVkIHRvIHplcm8uIgorfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlclBhcnNlZEZsb2F0U21h
bGxNYW50aXNzYScsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgcGFzc01zZzogIk51bWJlciBvZiBkaWdpdHMgaW4gYW55IGRpZ2l0LXNlcXVlbmNlIGlz
IG5vdCBsaW1pdGVkIC0gdGVzdCB3aXRoIGEgc21hbGwgbWFudGlzc2EgYW5kIGxhcmdlIGV4cG9u
ZW50LiIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJQYXJzZWRGbG9hdExhcmdlTWFudGlz
c2EnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBh
c3NNc2c6ICJOdW1iZXIgb2YgZGlnaXRzIGluIGFueSBkaWdpdC1zZXF1ZW5jZSBpcyBub3QgbGlt
aXRlZCAtIHRlc3Qgd2l0aCBhIGxhcmdlIG1hbnRpc3NhIGFuZCBuZWdhdGl2ZSBleHBvbmVudC4i
Cit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyUGFyc2VkRmxvYXRFeHBvbmVudEFib3ZlTWF4
SW50JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBw
YXNzTXNnOiAiVGVzdCB0aGF0IGFuIGV4cG9uZW50IHRoYXQgc2xpZ2h0bHkgb3ZlcmZsb3dzIHNp
Z25lZCAzMi1iaXQgaW50IHJhbmdlIHdvcmtzLiIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFk
ZXJOb25Db25zdEZsb2F0SXNJbmZpbml0eScsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBs
aW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIlRlc3QgdGhhdCBhIG5vbi1jb25zdGFudCBm
bG9hdCB0aGF0IGhhcyBpbmZpbml0eSBhcyBhIHZhbHVlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkg
YnkgaXNpbmYoKS4iCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyTm9uQ29uc3RGbG9hdElz
TmVnYXRpdmVJbmZpbml0eScsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogIlRlc3QgdGhhdCBhIG5vbi1jb25zdGFudCBmbG9hdCB0aGF0
IGhhcyBuZWdhdGl2ZSBpbmZpbml0eSBhcyBhIHZhbHVlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkg
YnkgaXNpbmYoKS4iCit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2dsc2wzL2ZvcmJpZGRlbi1vcGVyYXRvcnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9mb3JiaWRk
ZW4tb3BlcmF0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM1YzdjOWJmYjI5NGFmNDRlZWNlYTAzNTQ0
OGZlM2I2ZTkyNjRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9mb3JiaWRkZW4tb3BlcmF0
b3JzLmh0bWwKQEAgLTAsMCArMSwxMjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHMgLSBV
bnN1cHBvcnRlZCB2YXJpYW50cyBvZiBvcGVyYXRvcnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWFycmF5LXRlcm5hcnktb3BlcmF0
b3IiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQoreworICBmbG9hdCBhWzNdOworICBmbG9hdCBi
WzNdOworICBmbG9hdCBjWzNdID0gdHJ1ZSA/IGEgOiBiOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyLXN0cnVjdC1hcnJheS10ZXJuYXJ5LW9wZXJhdG9yIiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
c3RydWN0IE15U3RydWN0IHsKKyAgICBib29sIGFbM107Cit9OworCit2b2lkIG1haW4oKQorewor
ICBNeVN0cnVjdCBiOworICBNeVN0cnVjdCBjOworICBNeVN0cnVjdCBkID0gdHJ1ZSA/IGIgOiBj
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXZvaWQtdGVybmFyeS1vcGVyYXRv
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZvaWQgZm9vKCkge30KKwordm9pZCBtYWluKCkKK3sKKyAgdHJ1ZSA/
IGZvbygpIDogZm9vKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXItYXJyYXkt
c2VxdWVuY2Utb3BlcmF0b3IiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMw
MCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKQoreworICBmbG9hdCBh
WzNdOworICBmbG9hdCBiWzNdID0gKHRydWUsIGEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyLXN0cnVjdC1hcnJheS1zZXF1ZW5jZS1vcGVyYXRvciIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3N0
cnVjdCBNeVN0cnVjdCB7CisgICAgYm9vbCBhWzNdOworfTsKKwordm9pZCBtYWluKCkKK3sKKyAg
TXlTdHJ1Y3QgYjsKKyAgTXlTdHJ1Y3QgYyA9ICh0cnVlLCBiKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlci12b2lkLXNlcXVlbmNlLW9wZXJhdG9yIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9p
ZCBmb28oKSB7fQorCit2b2lkIG1haW4oKQoreworICAoZm9vKCksIGZvbygpKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJDaGVjayB1bnN1cHBv
cnRlZCB2YXJpYW50cyBvZiBvcGVyYXRvcnMuIik7CisKKy8vIFdlYkdMIDIuMCBzcGVjIHNlY3Rp
b24gIlVuc3VwcG9ydGVkIHZhcmlhbnRzIG9mIEdMU0wgRVMgMy4wMCBvcGVyYXRvcnMiCisKK0dM
U0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCit7IGZTaGFkZXJJZDogJ2ZzaGFkZXItYXJy
YXktdGVybmFyeS1vcGVyYXRvcicsCisgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlua1N1
Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiVXNpbmcgdGVybmFyeSBvcGVyYXRvcnMgd2l0aCBh
cnJheXMgaXMgbm90IGFsbG93ZWQiLAorfSwKK3sgZlNoYWRlcklkOiAnZnNoYWRlci1zdHJ1Y3Qt
YXJyYXktdGVybmFyeS1vcGVyYXRvcicsCisgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlu
a1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiVXNpbmcgdGVybmFyeSBvcGVyYXRvcnMgd2l0
aCBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIGlzIG5vdCBhbGxvd2VkIiwKK30sCit7IGZTaGFk
ZXJJZDogJ2ZzaGFkZXItdm9pZC10ZXJuYXJ5LW9wZXJhdG9yJywKKyAgZlNoYWRlclN1Y2Nlc3M6
IGZhbHNlLAorICBsaW5rU3VjY2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICJVc2luZyB0ZXJuYXJ5
IG9wZXJhdG9ycyB3aXRoIHZvaWQgaXMgbm90IGFsbG93ZWQiLAorfSwKK3sgZlNoYWRlcklkOiAn
ZnNoYWRlci1hcnJheS1zZXF1ZW5jZS1vcGVyYXRvcicsCisgIGZTaGFkZXJTdWNjZXNzOiBmYWxz
ZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAiVXNpbmcgc2VxdWVuY2Ugb3Bl
cmF0b3JzIHdpdGggYXJyYXlzIGlzIG5vdCBhbGxvd2VkIiwKK30sCit7IGZTaGFkZXJJZDogJ2Zz
aGFkZXItc3RydWN0LWFycmF5LXNlcXVlbmNlLW9wZXJhdG9yJywKKyAgZlNoYWRlclN1Y2Nlc3M6
IGZhbHNlLAorICBsaW5rU3VjY2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICJVc2luZyBzZXF1ZW5j
ZSBvcGVyYXRvcnMgd2l0aCBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIGlzIG5vdCBhbGxvd2Vk
IiwKK30sCit7IGZTaGFkZXJJZDogJ2ZzaGFkZXItdm9pZC1zZXF1ZW5jZS1vcGVyYXRvcicsCisg
IGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNn
OiAiVXNpbmcgc2VxdWVuY2Ugb3BlcmF0b3JzIHdpdGggdm9pZCBpcyBub3QgYWxsb3dlZCIsCit9
CitdLCAyKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9mb3J3YXJkLWRl
Y2xhcmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZm9yd2FyZC1kZWNsYXJhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIzYWZjYjg0NmRhNjlmNjFmMDVmM2I2N2U0NzdmZTY0NTY5YTRlMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvZ2xzbDMvZm9yd2FyZC1kZWNsYXJhdGlvbi5odG1sCkBAIC0wLDAgKzEsOTAgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdM
U0wgMy4wMCBmb3J3YXJkIGRlY2xhcmF0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJGb3J3YXJkRGVjbCIgdHlwZT0ieC1zaGFkZXIveC12
ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKy8vIEZv
cndhcmQgZGVjbGFyYXRpb24uIEJyZWFrcyBvbiBQaXhlbCBDIGR1ZSB0byBmbGF0dGVuaW5nIG9m
CisvLyBwcmVjaXNpb24gcXVhbGlmaWVycy4gSXQgc2VlbXMgdGhlIEdMU0wgY29tcGlsZXIgY2Fu
J3QgaGFuZGxlIHRoZQorLy8gcHJlY2lzaW9uIHF1YWxpZmllciBvbiB0aGUgcmV0dXJuIHZhbHVl
LgorZmxvYXQgaWRlbnRpdHkoZmxvYXQgdmFsKTsKKworZmxvYXQgaWRlbnRpdHkoZmxvYXQgdmFs
KSB7CisgIHJldHVybiB2YWw7Cit9CisKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KGlkZW50aXR5KDEuMCksIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lv
biAzMDAgZXMKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2b2lkIG1haW4odm9pZCkg
eworICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyRm9yd2FyZERlY2wiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
Ky8vIEZvcndhcmQgZGVjbGFyYXRpb24uIEJyZWFrcyBvbiBQaXhlbCBDIGR1ZSB0byBmbGF0dGVu
aW5nIG9mCisvLyBwcmVjaXNpb24gcXVhbGlmaWVycy4gSXQgc2VlbXMgdGhlIEdMU0wgY29tcGls
ZXIgY2FuJ3QgaGFuZGxlIHRoZQorLy8gcHJlY2lzaW9uIHF1YWxpZmllciBvbiB0aGUgcmV0dXJu
IHZhbHVlLgorZmxvYXQgaWRlbnRpdHkoZmxvYXQgdmFsKTsKKworZmxvYXQgaWRlbnRpdHkoZmxv
YXQgdmFsKSB7CisgIHJldHVybiB2YWw7Cit9CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3Zv
aWQgbWFpbih2b2lkKSB7CisgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCBpZGVudGl0eSgxLjAp
LCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiRm9yd2FyZCBkZWNsYXJhdGlv
bnMgb2YgZnVuY3Rpb25zIHNob3VsZCBzdWNjZWVkLiIpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAidmVydGV4U2hhZGVyRm9yd2FyZERl
Y2wiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50
U2hhZGVyIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIGZvcndhcmQgZGVjbGFyYXRpb24g
bXVzdCBwYXNzIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlciIsCisg
ICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRTaGFkZXJG
b3J3YXJkRGVjbCIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6
IHRydWUsCisgICAgcGFzc01zZzogImZyYWdtZW50IHNoYWRlciB3aXRoIGZvcndhcmQgZGVjbGFy
YXRpb24gbXVzdCBwYXNzIiwKKyAgfSwKK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZnJhZy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2ZyYWctZGVw
dGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZmJiZmFkNzQxMjM4Y2FmNTkxOTczYjkxNzRlMzc0ODM1MzA1
YmZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2ZyYWctZGVwdGguaHRtbApAQCAtMCwwICsx
LDE1NyBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+V2ViR0wgRnJhZyBEZXB0aCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0aW5nIGZyYWdtZW50IGRl
cHRoIHdyaXRpbmcgLS0+CisKKzwhLS0gU2hhZGVyIG9taXR0aW5nIHRoZSByZXF1aXJlZCAjdmVy
c2lvbiAtLT4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyRVNTTDEiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIG1haW4oKSB7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsX0ZyYWdE
ZXB0aCA9IDEuMDsKK30KKzwvc2NyaXB0PgorPCEtLSBTaGFkZXIgd2l0aCByZXF1aXJlZCAjdmVy
c2lvbiAtLT4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyRVNTTDMiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Citv
dXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsX0ZyYWdEZXB0aCA9IDEuMDsKK30KKzwv
c2NyaXB0PgorPCEtLSBTaGFkZXIgdXNpbmcgdGhlIEVYVCBzdWZmaXggLS0+Cis8c2NyaXB0IGlk
PSJmcmFnbWVudFNoYWRlckVTU0wzRVhUIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yOwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICBnbF9GcmFnRGVwdGhFWFQgPSAxLjA7Cit9Cis8L3NjcmlwdD4KKzwhLS0g
U2hhZGVycyB0byBsaW5rIHdpdGggdGVzdCBmcmFnbWVudCBzaGFkZXJzIC0tPgorPHNjcmlwdCBp
ZD0idmVydGV4U2hhZGVyRVNTTDEiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0
ZSB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3Np
dGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idmVydGV4U2hhZGVyRVNTTDMiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQgdlBvc2l0aW9uOwor
dm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+
CisKKzwhLS0gU2hhZGVyIHRvIHRlc3Qgb3V0cHV0IC0tPgorPHNjcmlwdCBpZD0ib3V0cHV0RnJh
Z21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGZsb2F0IHVEZXB0aDsKKworb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbF9GcmFnRGVwdGggPSB1RGVwdGg7Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc2V0dGluZyBmcmFnbWVudCBkZXB0aCBpbiBh
IHNoYWRlci4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOworCitpZiAoIWdsKSB7CisgICAg
dGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAg
ICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgcnVuU2hhZGVyVGVz
dHMoKTsKKyAgICBkZWJ1ZygiIik7CisgICAgcnVuT3V0cHV0VGVzdHMoKTsKK30KKworZnVuY3Rp
b24gcnVuU2hhZGVyVGVzdHMoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5n
IHZhcmlvdXMgc2hhZGVyIGNvbXBpbGVzIik7CisKKyAgICAvLyBBbHdheXMgZXhwZWN0IEVTU0wx
IHNoYWRlcnMgdG8gZmFpbAorICAgIHZhciBmcmFnbWVudFByb2dyYW1FU1NMMSA9IHd0dS5sb2Fk
UHJvZ3JhbUZyb21TY3JpcHRFeHBlY3RFcnJvcihnbCwgInZlcnRleFNoYWRlckVTU0wxIiwgImZy
YWdtZW50U2hhZGVyRVNTTDEiKTsKKyAgICBpZiAoZnJhZ21lbnRQcm9ncmFtRVNTTDEpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZ2xfRnJhZ0RlcHRoIGFsbG93ZWQgaW4gRVNTTDEgc2hhZGVyIC0g
c2hvdWxkIGJlIGRpc2FsbG93ZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2Vk
KCJnbF9GcmFnRGVwdGggZGlzYWxsb3dlZCBpbiBFU1NMMSBzaGFkZXIiKTsKKyAgICB9CisKKyAg
ICAvLyBUcnkgdG8gY29tcGlsZSBhIHNoYWRlciB1c2luZyB0aGUgYnVpbHQtaW5zIHRoYXQgc2hv
dWxkIG9ubHkgc3VjY2VlZCBpZiBlbmFibGVkCisgICAgdmFyIHRlc3RGcmFnbWVudFByb2dyYW0g
PSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhwZWN0RXJyb3IoZ2wsICJ2ZXJ0ZXhTaGFkZXJF
U1NMMyIsICJmcmFnbWVudFNoYWRlckVTU0wzIik7CisgICAgaWYgKHRlc3RGcmFnbWVudFByb2dy
YW0pIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZ2xfRnJhZ0RlcHRoIGFsbG93ZWQgaW4gRVNTTDMg
c2hhZGVyIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2xfRnJhZ0RlcHRo
IGRpc2FsbG93ZWQgaW4gRVNTTDMgc2hhZGVyIik7CisgICAgfQorCisgICAgdmFyIHRlc3RGcmFn
bWVudFByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tU2NyaXB0RXhwZWN0RXJyb3IoZ2wsICJ2
ZXJ0ZXhTaGFkZXJFU1NMMyIsICJmcmFnbWVudFNoYWRlckVTU0wzRVhUIik7CisgICAgaWYgKHRl
c3RGcmFnbWVudFByb2dyYW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2xfRnJhZ0RlcHRoRVhU
IGFsbG93ZWQgaW4gRVNTTDMgc2hhZGVyIC0gc2hvdWxkIG9ubHkgYWxsb3cgZ2xfRnJhZ0RlcHRo
Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZ2xfRnJhZ0RlcHRoRVhUIGRp
c2FsbG93ZWQgaW4gRVNTTDMgc2hhZGVyIik7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5PdXRw
dXRUZXN0cygpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyByZW5kZXJpbmcgcmVzdWx0cyBmcm9tIHdy
aXRpbmcgdG8gZ2xfRnJhZ0RhdGEiKTsKKworICAgIGNhbnZhcy53aWR0aCA9IDUwOyBjYW52YXMu
aGVpZ2h0ID0gNTA7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0KTsKKworICAgIC8vIEVuYWJsZSBkZXB0aCB0ZXN0aW5nIHdpdGggYSBjbGVhckRlcHRo
IG9mIDAuNQorICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhhdCBmcmFnbWVudHMgYXJlIG9ubHkg
cmVuZGVyZWQgd2hlbgorICAgIC8vIGdsX0ZyYWdEZXB0aCBpcyA8IDAuNQorICAgIGdsLmNsZWFy
RGVwdGgoMC41KTsKKyAgICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICB2YXIgcG9z
aXRpb25Mb2MgPSAwOworICAgIHZhciB0ZXhjb29yZExvYyA9IDE7CisgICAgdmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZlcnRleFNoYWRlckVTU0wzIiwgIm91dHB1dEZyYWdt
ZW50U2hhZGVyIl0sIFsndlBvc2l0aW9uJ10sIFswXSk7CisgICAgdmFyIHF1YWRQYXJhbWV0ZXJz
ID0gd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOworICAgIHZhciBkZXB0aFVuaWZvcm0gPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVEZXB0aCIpOworCisgICAgLy8gRHJhdyAx
OiBHcmVhdGVyIHRoYW4gY2xlYXIgZGVwdGgKKyAgICBnbC51bmlmb3JtMWYoZGVwdGhVbmlmb3Jt
LCAxLjApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNr
Q2FudmFzKGdsLCBbMjU1LCAyNTUsIDI1NSwgMjU1XSk7CisKKyAgICAvLyBEcmF3IDI6IExlc3Mg
dGhhbiBjbGVhciBkZXB0aAorICAgIGdsLnVuaWZvcm0xZihkZXB0aFVuaWZvcm0sIDAuMCk7Cisg
ICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFsyNTUsIDAsIDAsIDI1NV0pOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9n
cmFkaWVudC1pbi1kaXNjb250aW51b3VzLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9ncmFkaWVudC1pbi1k
aXNjb250aW51b3VzLWxvb3AuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjEzZDYxZjZlNTQ2YTdkZjY2ZDQ3
OGUwYjE0NThkMjE4YTcyYTExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2dyYWRpZW50LWlu
LWRpc2NvbnRpbnVvdXMtbG9vcC5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlNob3J0IGNpcmN1aXQgaW4g
bG9vcCBjb25kaXRpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2
ZXJ0ZXgtc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCisg
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgaW4gdmVjNCBhUG9zaXRpb247CisKKyAgdm9pZCBt
YWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworICB9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZyYWdtZW50LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3Zl
cnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitwcmVjaXNpb24gaGlnaHAgaW50
OworCit1bmlmb3JtIHZlYzQgICAgICBpTW91c2U7Cit1bmlmb3JtIHNhbXBsZXIyRCBpQ2hhbm5l
bDA7CisKK2Zsb2F0IG1hcChmbG9hdCBwKQoreworICAgIHJldHVybiB0ZXh0dXJlKGlDaGFubmVs
MCwgdmVjMihwLCBwKSwgMC4wKS55OworfQorCitvdXQgdmVjNCBvdXRDb2xvcjsKKwordm9pZCBt
YWluKHZvaWQpCit7CisgICAgZmxvYXQgc3VtID0gMC4wOworCisgICAgZm9yKGludCBpPTA7IGk8
MTAwMDsgaSsrKQorICAgIHsKKyAgICAgICAgaWYoIHN1bSA+IDAuOTkgKSBicmVhazsKKyAgICAg
ICAgICAgICAgICBmbG9hdCBwID0gaU1vdXNlLnggKyBnbF9GcmFnQ29vcmQueDsKKyAgICAgICAg
c3VtID0gbWFwKHApOworICAgIH0KKworICAgIG91dENvbG9yID0gdmVjNChzdW0pOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiVGVzdCBhbiBITFNMIGNvbXBpbGVyIGZyZWV6ZSBvbiBhIGdyYWRpZW50IGlu
c2lkZSBhIGRpc2NvbnRpbnVvdXMgbG9vcC4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgMik7
Cit3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJj
b250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHZhciBwcm9ncmFtID0gd3R1
LnNldHVwUHJvZ3JhbShnbCwgWyJ2ZXJ0ZXgtc2hhZGVyIiwgImZyYWdtZW50LXNoYWRlciJdLCBb
J2FQb3NpdGlvbiddLCB1bmRlZmluZWQsIHRydWUpOworICAgIGlmICghcHJvZ3JhbSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCdQcm9ncmFtIGNvbXBpbGF0aW9uIGZhaWxlZCcpOworICAgIH0KK30K
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvaW5wdXQtd2l0aC1pbnRlcnBv
dGFpb24tYXMtbHZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvaW5wdXQtd2l0aC1pbnRlcnBvdGFpb24tYXMt
bHZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE2ZDg3Y2QxMjlmZWNmNmJjNTAyNjExNzhjM2Y3Mjk3
ODdjZDIzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9pbnB1dC13aXRoLWludGVycG90YWlv
bi1hcy1sdmFsdWUuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5OZWdhdGl2ZSB0ZXN0cyBmb3Igd3JpdHRp
bmcgdG8gYSBzaGFkZXIgaW5wdXQgd2l0aCBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcjwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
Z2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwhLS0KK0FjY29yZGluZyB0byBFU1NM
IDMuMDAuNiBzZWN0aW9uIDQuMy40OgorIlZhcmlhYmxlcyBkZWNsYXJlZCBhcyBpbiBvciBjZW50
cm9pZCBpbiBtYXkgbm90IGJlIHdyaXR0ZW4gdG8gZHVyaW5nIHNoYWRlciBleGVjdXRpb24uIiwK
K3RoZXNlIHRlc3RzIGVuc3VyZSB0aGF0IGEgY29tcGlsZSBlcnJvciBpcyBnZW5lcmF0ZWQgd2hl
biB1c2luZyBhIHNoYWRlciBpbnB1dCB3aXRoIGludGVycG9sYXRpb24gcXVhbGlmaWVyIGFzIGwt
dmFsdWUuCistLT4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNl
IHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCit2YXIgdmVydGV4U2hhZGVyVGVtcGxhdGUgPSBb
CisgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisgICAgJyQoSW50ZXJwb2xhdGlvblF1YWxpZmllcikg
b3V0IGZsb2F0IHZfZmxvYXRfdmFyeWluZzsnLAorICAgICd2b2lkIG1haW4oKScsCisgICAgJ3sn
LAorICAgICcgICAgdl9mbG9hdF92YXJ5aW5nID0gMS4wOycsCisgICAgJyAgICBnbF9Qb3NpdGlv
biA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsnLAorICAgICd9JworXS5qb2luKCdcbicpOwor
Cit2YXIgZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSA9IFsKKyAgICAnI3ZlcnNpb24gMzAwIGVzJywK
KyAgICAncHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7JywKKyAgICAnJChJbnRlcnBvbGF0aW9uUXVh
bGlmaWVyKSBpbiBmbG9hdCB2X2Zsb2F0X3Zhcnlpbmc7JywKKyAgICAnb3V0IHZlYzQgbXlfY29s
b3I7JywKKyAgICAndm9pZCBtYWluKCknLAorICAgICd7JywKKyAgICAnICAgIHZfZmxvYXRfdmFy
eWluZyA9IDEuMDsnLAorICAgICcgICAgbXlfY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIHZf
ZmxvYXRfdmFyeWluZyk7JywKKyAgICAnfScKK10uam9pbignXG4nKTsKKwordmFyIGVycm9yTWVz
c2FnZVRlbXBsYXRlID0gIldyaXR0aW5nIHRvIHNoYWRlciBpbnB1dHMgd2l0aCAnJChJbnRlcnBv
bGF0aW9uUXVhbGlmaWVyKScgcXVhbGlmaWVyIG11c3QgZmFpbCI7CisKK3ZhciB0ZXN0RGF0YUxp
c3QgPSBbCit7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpZmllcjogJ2ZsYXQnCit9LAoreworICAg
IEludGVycG9sYXRpb25RdWFsaWZpZXI6ICdzbW9vdGgnCit9LAoreworICAgIEludGVycG9sYXRp
b25RdWFsaWZpZXI6ICdjZW50cm9pZCcKK30KK107CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKKwordmFyIHRlc3RzID0gW107Citmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhTGlzdC5s
ZW5ndGg7ICsraSkgeworICAgIHRlc3RzLnB1c2goeworICAgICAgICB2U2hhZGVyU291cmNlOiB3
dHUucmVwbGFjZVBhcmFtcyh2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSwgdGVzdERhdGFMaXN0W2ldKSwK
KyAgICAgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHd0
dS5yZXBsYWNlUGFyYW1zKGZyYWdtZW50U2hhZGVyVGVtcGxhdGUsIHRlc3REYXRhTGlzdFtpXSks
CisgICAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgICAgbGlua1N1Y2Nlc3M6IGZh
bHNlLAorICAgICAgICBwYXNzTXNnOiB3dHUucmVwbGFjZVBhcmFtcyhlcnJvck1lc3NhZ2VUZW1w
bGF0ZSwgdGVzdERhdGFMaXN0W2ldKQorICAgIH0pOworfQorCitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdHModGVzdHMsIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvZ2xzbDMvaW52YWxpZC1kZWZhdWx0LXByZWNpc2lvbi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2lu
dmFsaWQtZGVmYXVsdC1wcmVjaXNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzVjOTU2MTBjNTRhODc2
NmE0NzY5YzgwZmNmYWRiZjIxM2ViOTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2ludmFs
aWQtZGVmYXVsdC1wcmVjaXNpb24uaHRtbApAQCAtMCwwICsxLDcxIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5EZWZhdWx0IHByZWNpc2lv
biBxdWFsaWZpZXJzIHNob3VsZCBvbmx5IHdvcmsgd2l0aCBpbnQsIGZsb2F0IGFuZCBzYW1wbGVy
IHR5cGVzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wt
Y29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBTZWUg
RVNTTCAzLjAwIHNlY3Rpb24gNC41LjQgLS0+Cis8c2NyaXB0IGlkPSJwcmVjaXNpb25WZWMiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CitwcmVjaXNpb24gbWVkaXVtcCB2ZWMyOworb3V0IHZlYzQgbXlfRnJhZ0NvbG9y
Owordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwg
MS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0icHJlY2lzaW9uVm9pZCIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKK3ByZWNpc2lvbiBtZWRpdW1wIHZvaWQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2b2lk
IG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJwcmVjaXNpb25VaW50IiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworcHJl
Y2lzaW9uIG1lZGl1bXAgdWludDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3ZvaWQgbWFpbigp
IHsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigpOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsKKyAg
eworICAgIGZTaGFkZXJJZDogInByZWNpc2lvblZlYyIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IGZh
bHNlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiZGVmYXVsdCBwcmVj
aXNpb24gcXVhbGlmaWVyIHNob3VsZG4ndCB3b3JrIHdpdGggdmVjMiIKKyAgfSwKKyAgeworICAg
IGZTaGFkZXJJZDogInByZWNpc2lvblZvaWQiLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwK
KyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogImRlZmF1bHQgcHJlY2lzaW9u
IHF1YWxpZmllciBzaG91bGRuJ3Qgd29yayB3aXRoIHZvaWQiCisgIH0sCisgIHsKKyAgICBmU2hh
ZGVySWQ6ICJwcmVjaXNpb25VaW50IiwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAg
bGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBhc3NNc2c6ICJkZWZhdWx0IHByZWNpc2lvbiBxdWFs
aWZpZXIgc2hvdWxkbid0IHdvcmsgd2l0aCB1aW50IgorICB9CitdLCAyKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2ludmFsaWQtaW52YXJpYW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZ2xzbDMvaW52YWxpZC1pbnZhcmlhbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGQyYjQ2YWQx
OTU0NzM4ZjFhYTMyYTUzNzIzZmZlMmQyNzE0NDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wz
L2ludmFsaWQtaW52YXJpYW50Lmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+TmVnYXRpdmUgdGVzdHMgZm9y
IHRoZSB1c2Ugb2YgdGhlIGludmFyaWFudCBxdWFsaWZpZXIgYW5kIHByYWdtYTwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlcklu
dmFyaWFudCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPiN2ZXJzaW9uIDMw
MCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbnZhcmlhbnQgb3V0IHZlYzQgdl92YXJ5
aW5nOworCit2b2lkIG1haW4oKQoreworICAgIHZfdmFyeWluZyA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZzsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnJhZ21lbnRTaGFkZXJWYXJpYW50IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3Qt
amF2YXNjcmlwdCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
aW4gdmVjNCB2X3Zhcnlpbmc7CitvdXQgdmVjNCBteV9jb2xvcjsKKwordm9pZCBtYWluKCkKK3sK
KyAgICBteV9jb2xvciA9IHZfdmFyeWluZzsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJh
Z21lbnRTaGFkZXJJbnB1dEludmFyaWFudCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFz
Y3JpcHQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2ludmFy
aWFudCBpbiB2ZWM0IHZfdmFyeWluZzsKK291dCB2ZWM0IG15X2NvbG9yOworCit2b2lkIG1haW4o
KQoreworICAgIG15X2NvbG9yID0gdl92YXJ5aW5nOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmcmFnbWVudFNoYWRlckdsb2JhbEludmFyaWFudCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90
LWphdmFzY3JpcHQiPiN2ZXJzaW9uIDMwMCBlcworI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxs
KQorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2luIHZlYzQgdl92YXJ5aW5nOworb3V0IHZl
YzQgbXlfY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgbXlfY29sb3IgPSB2X3Zhcnlpbmc7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRl
c3RzKFsKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlckludmFyaWFudCIsCisgICAg
dlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklkOiAiZnJhZ21lbnRTaGFkZXJHbG9i
YWxJbnZhcmlhbnQiLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICBsaW5rU3VjY2Vz
czogZmFsc2UsCisgICAgcGFzc01zZzogImZyYWdtZW50IHNoYWRlciB3aXRoIGdsb2JhbCBpbnZh
cmlhbnQgcHJhZ21hIG11c3QgZmFpbCIsCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJ2ZXJ0
ZXhTaGFkZXJJbnZhcmlhbnQiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFk
ZXJJZDogImZyYWdtZW50U2hhZGVySW5wdXRJbnZhcmlhbnQiLAorICAgIGZTaGFkZXJTdWNjZXNz
OiBmYWxzZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogImZyYWdtZW50
IHNoYWRlciB3aXRoIGFuIGlucHV0IHZhcmlhYmxlIHdoaWNoIGlzIGludmFyaWFudCBtdXN0IGZh
aWwiLAorICB9LAorXSwgMik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9nbHNsMy9sb29wcy13aXRoLXNpZGUtZWZmZWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2xvb3BzLXdp
dGgtc2lkZS1lZmZlY3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhOTc3YjhjYWIxZWMxNjg5YmY5ZWJi
YzRkODYxMTMxYzc5ODZlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9sb29wcy13aXRoLXNp
ZGUtZWZmZWN0cy5odG1sCkBAIC0wLDAgKzEsMjExIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBMb29wcyBhbmQgc2lkZS1lZmZl
Y3RzIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUw
cHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPCEtLSBWYXJpYXRp
b25zIG9uIGNvdW50ZXIgZnVuY3Rpb25zIHRoYXQgdXNlZCB0byBnaXZlIGluY29ycmVjdCByZXN1
bHQgb24gT1NYIDEwLjkgLS0+Cis8c2NyaXB0IGlkPSJjb3VudGVyMCIgdHlwZT0ieC1zaGFkZXIv
eC1zaGFkZXIiPgorYm9vbCBzMCA9IGZhbHNlOword2hpbGUodHJ1ZSkgeworICAgIGJvb2wgYmFy
ID0gczA7CisgICAgaWYgKCFiYXIpIHsKKyAgICAgICAgYmFyID0gaSA8IDM7CisgICAgICAgIGkg
PSBpICsgMTsKKyAgICB9CisgICAgYm9vbCBmb28gPSAhYmFyOworICAgIGlmIChmb28pIHsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHMwID0gZmFsc2U7CisgICAgbiArKzsKK30KK3JldHVy
biBuOworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJjb3VudGVyMSIgdHlwZT0ieC1zaGFkZXIveC1z
aGFkZXIiPgord2hpbGUodHJ1ZSkgeworICAgIGJvb2wgYmFyID0gaSA8IDM7CisgICAgaSA9IGkg
KyAxOworICAgIGJvb2wgZm9vID0gIWJhcjsKKyAgICBpZiAoZm9vKSB7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBuICsrOworfQorcmV0dXJuIG47Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImNvdW50ZXIyIiB0eXBlPSJ4LXNoYWRlci94LXNoYWRlciI+Citib29sIHMwID0gdHJ1ZTsKK3do
aWxlKHRydWUpIHsKKyAgICBib29sIGJhciA9IHMwOworICAgIGlmICghYmFyKSB7CisgICAgICAg
IGJhciA9IGkgPCAzOworICAgICAgICBpID0gaSArIDE7CisgICAgfQorICAgIGJvb2wgZm9vID0g
IWJhcjsKKyAgICBpZiAoZm9vKSB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBzMCA9IGZh
bHNlOworICAgIG4gKys7Cit9CityZXR1cm4gbjsKKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iY291
bnRlcjMiIHR5cGU9Ingtc2hhZGVyL3gtc2hhZGVyIj4KK2Jvb2wgczAgPSB0cnVlOword2hpbGUo
dHJ1ZSkgeworICAgIGJvb2wgYmFyID0gczA7CisgICAgaWYgKCFiYXIpIHsKKyAgICAgICAgYmFy
ID0gaSsrIDwgMzsKKyAgICB9CisgICAgYm9vbCBmb28gPSAhYmFyOworICAgIGlmIChmb28pIHsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHMwID0gZmFsc2U7CisgICAgbiArKzsKK30KK3Jl
dHVybiBuOworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJjb3VudGVyNCIgdHlwZT0ieC1zaGFkZXIv
eC1zaGFkZXIiPgorYm9vbCBzMCA9IHRydWU7Cit3aGlsZSh0cnVlKSB7CisgICAgYm9vbCBiYXIg
PSBzMCB8fCAoaSsrIDwgMyk7CisgICAgYm9vbCBmb28gPSAhYmFyOworICAgIGlmIChmb28pIHsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHMwID0gZmFsc2U7CisgICAgbiArKzsKK30KK3Jl
dHVybiBuOworPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJjb3VudGVyNSIgdHlwZT0ieC1zaGFkZXIv
eC1zaGFkZXIiPgorYm9vbCBzMCA9IHRydWU7Cit3aGlsZSh0cnVlKSB7CisgICAgaWYgKCEoczAg
fHwgKGkrKyA8IDMpKSkgeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgczAgPSBmYWxzZTsK
KyAgICBuICsrOworfQorcmV0dXJuIG47Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImNvdW50ZXI2
IiB0eXBlPSJ4LXNoYWRlci94LXNoYWRlciI+Citib29sIHMwID0gdHJ1ZTsKK3doaWxlKHMwIHx8
IChpKysgPCAzKSkgeworICAgIHMwID0gZmFsc2U7CisgICAgbiArKzsKK30KK3JldHVybiBuOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvdW50ZXI3IiB0eXBlPSJ4LXNoYWRlci94LXNoYWRl
ciI+CitkbyB7CisgICAgbisrOworfSB3aGlsZSAoaSsrIDwgMyk7CityZXR1cm4gbjsKKzwvc2Ny
aXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hl
Y2tzIGZvciBidWdzIHJlbGF0ZWQgdG8gbG9vcHMgYW5kIHNpZGUtZWZmZWN0cy4iKTsKKworZGVi
dWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjYW52YXMsIG51bGwsIDIpOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wg
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJH
TCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHsK
KyAgICAgICAgdHJ5Q291bnRlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY291bnRlciIgKyBp
KS50ZXh0KTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZXZhbHVh
dGVDb3VudGVyKHNvdXJjZSkgeworICAgIHZhciBqc1NvdXJjZSA9ICIoZnVuY3Rpb24obiwgaSkg
eyIgKworICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaXQoImJvb2wiKS5qb2luKCJ2YXIi
KSArCisgICAgICAgICAgICAgICAgICAgICJ9KSgwLCAwKSI7CisKKyAgICByZXR1cm4gZXZhbChq
c1NvdXJjZSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VGU1NvdXJjZShzb3VyY2UpIHsKKyAgICB2YXIg
ZnNTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iICsKKyAgICAgICAgInByZWNp
c2lvbiBoaWdocCBmbG9hdDtcbiIgKworICAgICAgICAiaW4gZmxvYXQgdmVydGV4Q291bnRlcjtc
biIgKworICAgICAgICAidW5pZm9ybSBpbnQgdVZlcnRaZXJvO1xuIiArCisgICAgICAgICJ1bmlm
b3JtIGludCB1UmVmZXJlbmNlO1xuIiArCisgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4i
ICsKKyAgICAgICAgImludCBjb3VudGVyKGludCBuLCBpbnQgaSkge1xuIiArCisgICAgICAgICAg
ICBzb3VyY2UgKworICAgICAgICAifVxuIiArCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iICsK
KyAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4iICsK
KyAgICAgICAgIiAgICBmcmFnQ29sb3IuciA9IGZsb2F0KGNvdW50ZXIodVZlcnRaZXJvLCB1VmVy
dFplcm8pID09IHVSZWZlcmVuY2UpO1xuIiArCisgICAgICAgICIgICAgZnJhZ0NvbG9yLmcgPSBm
bG9hdChpbnQodmVydGV4Q291bnRlcikgPT0gdVJlZmVyZW5jZSk7XG4iICsKKyAgICAgICAgIn1c
biI7CisgICAgcmV0dXJuIGZzU291cmNlOworfQorCitmdW5jdGlvbiBtYWtlVlNTb3VyY2Uoc291
cmNlKSB7CisgICAgdmFyIHZzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIiAr
CisgICAgICAgICJvdXQgZmxvYXQgdmVydGV4Q291bnRlcjtcbiIgKworICAgICAgICAidW5pZm9y
bSBpbnQgdUZyYWdaZXJvO1xuIiArCisgICAgICAgICJpbiB2ZWM0IHZQb3NpdGlvbjtcbiIgKwor
ICAgICAgICAiaW50IGNvdW50ZXIoaW50IG4sIGludCBpKSB7XG4iICsKKyAgICAgICAgICAgIHNv
dXJjZSArCisgICAgICAgICJ9XG4iICsKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIgKworICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uO1xuIiArCisgICAgICAgICIgICAgdmVy
dGV4Q291bnRlciA9IGZsb2F0KGNvdW50ZXIodUZyYWdaZXJvLCB1RnJhZ1plcm8pKTtcbiIgKwor
ICAgICAgICAifVxuIjsKKyAgICByZXR1cm4gdnNTb3VyY2U7Cit9CisKK2Z1bmN0aW9uIHRyeUNv
dW50ZXIoc291cmNlKSB7CisgICAgY2FudmFzLndpZHRoID0gNTA7IGNhbnZhcy5oZWlnaHQgPSA1
MDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1
LnNldHVwUHJvZ3JhbShnbCwgW21ha2VWU1NvdXJjZShzb3VyY2UpLCBtYWtlRlNTb3VyY2Uoc291
cmNlKV0sIFsndlBvc2l0aW9uJ10sIFswXSwgdHJ1ZSk7CisKKyAgICBnbC51bmlmb3JtMWkoZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1VmVydFplcm8iKSwgMCk7CisgICAgZ2wudW5p
Zm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidUZyYWdaZXJvIiksIDApOwor
CisgICAgdmFyIHJlZmVyZW5jZSA9IGV2YWx1YXRlQ291bnRlcihzb3VyY2UpOworICAgIGdsLnVu
aWZvcm0xaShnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVSZWZlcmVuY2UiKSwgcmVm
ZXJlbmNlKTsKKworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgd3R1LmNsZWFyQW5k
RHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMF0pOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwg
WzI1NSwgMjU1LCAwLCAyNTVdKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMv
bWF0cml4LXJvdy1tYWpvci1keW5hbWljLWluZGV4aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvbWF0cml4LXJv
dy1tYWpvci1keW5hbWljLWluZGV4aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNiY2I5OTM0YzIyYjk3
ZDhmYmEwYTc5MGE1NmNhMGEyMzVlZTljYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9tYXRy
aXgtcm93LW1ham9yLWR5bmFtaWMtaW5kZXhpbmcuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5EeW5hbWlj
YWxseS1pbmRleGVkIHJvdy1tYWpvciBtYXRyaXggdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbmRleFJvd01ham9yTWF0cml4QXJyYXlJblVuaWZvcm1C
bG9jayIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGlu
dCB1X3plcm87CisKK2xheW91dChyb3dfbWFqb3IpIHVuaWZvcm0gYSB7CisgICAgbWF0NCB1X21h
dHNbMV07Cit9OworCit2b2lkIG1haW4oKSB7CisgICAgZmxvYXQgZiA9IHVfbWF0c1t1X3plcm8g
KyAwXVsyXVsxXTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYsIGYsIDAuMCwgMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4K
KyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJJbmRleGluZyByb3ctbWFqb3IgbWF0cmljZXMg
d2l0aGluIGEgdW5pZm9ybSBibG9jayBzaG91bGQgd29yayIpOworCitHTFNMQ29uZm9ybWFuY2VU
ZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmc2hhZGVySW5kZXhSb3dN
YWpvck1hdHJpeEFycmF5SW5Vbmlmb3JtQmxvY2snLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICcnLAorICB1bmlmb3JtQmxvY2tzOiBb
e25hbWU6ICJhIiwgdmFsdWU6IG5ldyBGbG9hdDMyQXJyYXkoWworICAgIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMSwgMCwKKyAgICAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsCisgIF0pfV0s
Cit9CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
Z2xzbDMvbWF0cml4LXJvdy1tYWpvci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL21hdHJpeC1yb3ctbWFqb3IuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYzU2YmRhY2YxZTI5NWExODE1ZWZlZTIwZWU3YTA0NTVkNWRmMDNiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL21hdHJpeC1yb3ctbWFqb3IuaHRtbApAQCAtMCwwICsx
LDUxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5Sb3ctbWFqb3IgbWF0cml4IHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
Z2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJmc2hhZGVyVW5pZm9ybU1hdHJpeFJvd01ham9yIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IGhp
Z2hwIHZlYzQgbXlfRnJhZ0NvbG9yOworbGF5b3V0KHN0ZDE0MCwgcm93X21ham9yKSB1bmlmb3Jt
IGIgeworICAgIG1hdDR4MyBtOworfTsKK3ZvaWQgbWFpbigpIHsKKyAgICAvLyBJZiB0aGUgbWF0
cml4IGlzIGludGVycHJldGVkIGFzIHJvdy1tYWpvciwgdGhlbiB0aGUgdHJhbnNsYXRpb24gY29t
cG9uZW50cyB3aWxsIGJlIDAsMSwwLCBvciBzb2xpZCBncmVlbi4KKyAgICBteV9GcmFnQ29sb3Ig
PSBtYXQ0KG0pICogdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlJvdy1tYWpvciBtYXRyaXggbGF5b3V0cyBzaG91bGQgd29yay4iKTsKKworR0xTTENv
bmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRl
clVuaWZvcm1NYXRyaXhSb3dNYWpvcicsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5r
U3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJycsCisgIHVuaWZvcm1CbG9ja3M6IFt7bmFtZTog
ImIiLCB2YWx1ZTogbmV3IEZsb2F0MzJBcnJheShbCisgICAgMCwgMCwgMCwgMCwgLy8gUmVkCisg
ICAgMCwgMCwgMCwgMSwgLy8gR3JlZW4KKyAgICAwLCAwLCAwLCAwLCAvLyBCbHVlCisgIF0pfV0K
K30KK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9n
bHNsMy9taXNwbGFjZWQtdmVyc2lvbi1kaXJlY3RpdmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9taXNwbGFjZWQt
dmVyc2lvbi1kaXJlY3RpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDE2OGM1ODMwZjczNDNlYjAxN2Fk
MzE0NmRlYzhkZjY2NjllZGNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL21pc3BsYWNlZC12
ZXJzaW9uLWRpcmVjdGl2ZS5odG1sCkBAIC0wLDAgKzEsMTExIEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT4jdmVyc2lvbiBkaXJlY3RpdmUg
c2hvdWxkIGJlIG9uIHRoZSB2ZXJ5IGZpcnN0IGxpbmUgb2YgYSBPcGVuR0wgRVMgU2hhZGluZyBM
YW5ndWFnZSAzLjAwIHNoYWRlcjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwhLS0gVmVyc2lvbiBkaXJlY3RpdmUgc2hvdWxkIGJlIG9uIHRoZSB2ZXJ5IGZpcnN0IGxp
bmUgaW4gRVNTTCAzLCBzZWUgRVNTTCAzIHNlY3Rpb24gMy4zIC0tPgorPHNjcmlwdCBpZD0iVmVy
dGV4U2hhZGVyQ29tbWVudEJlZm9yZVZlcnNpb24iIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4v
LyBUaGlzIHNoYWRlciBpcyB3cm9uZywgdGhpcyBpcyB0aGUgZmlyc3QgbGluZSB0aGF0IHNob3Vs
ZCBoYXZlIHZlcnNpb24KKyN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CitpbiB2ZWM0IGFQb3NpdGlvbjsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0g
YVBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJWZXJ0ZXhTaGFkZXJOZXdsaW5l
QmVmb3JlVmVyc2lvbiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorI3ZlcnNpb24gMzAwIGVz
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZlYzQgYVBvc2l0aW9uOworCit2b2lkIG1h
aW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9IkNvcnJlY3RWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworaW4gdmVjNCBhUG9zaXRpb247
CisKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iRnJhZ21lbnRTaGFkZXJDb21tZW50QmVmb3JlVmVyc2lvbiIgdHlw
ZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Ly8gVGhpcyBzaGFkZXIgaXMgd3JvbmcsIHRoaXMgaXMg
dGhlIGZpcnN0IGxpbmUgdGhhdCBzaG91bGQgaGF2ZSB2ZXJzaW9uCisjdmVyc2lvbiAzMDAgZXMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOwordm9pZCBt
YWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iRnJhZ21lbnRTaGFkZXJOZXdsaW5lQmVmb3JlVmVyc2lv
biIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOwordm9pZCBtYWluKCkgewor
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBpZD0iQ29ycmVjdEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MC4wLCAxLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitHTFNMQ29u
Zm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAiVmVydGV4U2hh
ZGVyTmV3bGluZUJlZm9yZVZlcnNpb24iLAorICAgIHZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAg
ICBmU2hhZGVySWQ6ICJDb3JyZWN0RnJhZ21lbnRTaGFkZXIiLAorICAgIGZTaGFkZXJTdWNjZXNz
OiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiVmVydGV4IHNo
YWRlciB3aXRoIGEgbmV3bGluZSBiZWZvcmUgdGhlIHZlcnNpb24gZGlyZWN0aXZlIHNob3VsZCBm
YWlsLiIKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogIlZlcnRleFNoYWRlckNvbW1lbnRCZWZv
cmVWZXJzaW9uIiwKKyAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgZlNoYWRlcklkOiAi
Q29ycmVjdEZyYWdtZW50U2hhZGVyIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBs
aW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogIlZlcnRleCBzaGFkZXIgd2l0aCBhIGNv
bW1lbnQgYmVmb3JlIHRoZSB2ZXJzaW9uIGRpcmVjdGl2ZSBzaG91bGQgZmFpbC4iCisgIH0sCisg
IHsKKyAgICB2U2hhZGVySWQ6ICJDb3JyZWN0VmVydGV4U2hhZGVyIiwKKyAgICB2U2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJGcmFnbWVudFNoYWRlckNvbW1lbnRCZWZvcmVW
ZXJzaW9uIiwKKyAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZh
bHNlLAorICAgIHBhc3NNc2c6ICJGcmFnbWVudCBzaGFkZXIgd2l0aCBhIGNvbW1lbnQgYmVmb3Jl
IHRoZSB2ZXJzaW9uIGRpcmVjdGl2ZSBzaG91bGQgZmFpbC4iCisgIH0sCisgIHsKKyAgICB2U2hh
ZGVySWQ6ICJDb3JyZWN0VmVydGV4U2hhZGVyIiwKKyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICBmU2hhZGVySWQ6ICJGcmFnbWVudFNoYWRlck5ld2xpbmVCZWZvcmVWZXJzaW9uIiwKKyAg
ICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAgIHBh
c3NNc2c6ICJGcmFnbWVudCBzaGFkZXIgd2l0aCBhIG5ld2xpbmUgYmVmb3JlIHRoZSB2ZXJzaW9u
IGRpcmVjdGl2ZSBzaG91bGQgZmFpbC4iCisgIH0KK10sIDIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9n
bHNsMy9uby1hdHRyaWJ1dGUtdmVydGV4LXNoYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL25vLWF0dHJpYnV0
ZS12ZXJ0ZXgtc2hhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFiYmQ5Nzc5ZGU1Njk4MjhiNWQ3NmM3
Y2M4OGY3ODcxOTdiZWFkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9uby1hdHRyaWJ1dGUt
dmVydGV4LXNoYWRlci5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3Qgbm8gYXR0cmlidXRlIHZlcnRl
eCBzaGFkZXJzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleC1zaGFk
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKKwordm9pZCBtYWlu
KCkgeworICBpdmVjMiB4eSA9IGl2ZWMyKAorICAgICAgZ2xfVmVydGV4SUQgJSAyLAorICAgICAg
KGdsX1ZlcnRleElEIC8gMiArIGdsX1ZlcnRleElEIC8gMykgJSAyKTsKKyAgZ2xfUG9zaXRpb24g
PSB2ZWM0KHZlYzIoeHkpICogMi4gLSAxLiwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCByZXN1bHQ7Cit2b2lkIG1haW4oKSB7
CisgIHJlc3VsdCA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCBubyBhdHRyaWJ1dGUgc2hhZGVycyB3b3Jr
IGFzIGV4cGVjdGVkIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpOworCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dy
YW0oZ2wsIFsidmVydGV4LXNoYWRlciIsICJmc2hhZGVyIl0sIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB0cnVlKTsKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnUHJvZ3Jh
bSBjb21waWxhdGlvbiBmYWlsZWQnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iLCAwKTsKK307CisKK2lmICghZ2wp
IHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICAgIHRlc3QoKTsKK30KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZmluaXNoVGVz
dCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvcHJl
Y2lzaW9uLXNpZGUtZWZmZWN0cy1idWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9wcmVjaXNpb24tc2lkZS1lZmZl
Y3RzLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3MTdjNGVlOTRmZDQ5ZjliNTQ2MWUyZDA5OGEzMmZm
YTViYzI4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvcHJlY2lzaW9uLXNpZGUtZWZmZWN0
cy1idWcuaHRtbApAQCAtMCwwICsxLDEyNSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDIwIFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VmVyaWZ5IHByZWNpc2lvbiBzaWRlIGVmZmVjdHMg
KEFkcmVubyBkcml2ZXIgYnVnKTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCBpZD0idnNo
YWRlci1zaW1wbGUiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2lu
IHZlYzMgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KGFQb3NpdGlvbiwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlci1pbnQi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworb3V0IGhpZ2hwIHZl
YzQgbXlGcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgaGlnaHAgaW50IHQ7CisgICAgdCA9
IDAgfCAoaW50KHQgPT0gdCkgKiAweDgwMDApOworCisgICAgaWYgKHQgPT0gMHg4MDAwKQorICAg
ICAgICBteUZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisg
ICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWl2ZWMyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4jdmVyc2lvbiAzMDAgZXMKK291dCBoaWdocCB2ZWM0IG15RnJhZ0NvbG9yOwordm9pZCBtYWlu
KCkgeworICAgIGhpZ2hwIGl2ZWMyIHQ7CisgICAgdCA9IDAgfCAoaXZlYzIodCA9PSB0KSAqIDB4
ODAwMCk7CisKKyAgICBpZiAodCA9PSBpdmVjMigweDgwMDApKQorICAgICAgICBteUZyYWdDb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAgIG15RnJhZ0Nv
bG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyLWl2ZWMzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAg
ZXMKK291dCBoaWdocCB2ZWM0IG15RnJhZ0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIGhpZ2hw
IGl2ZWMzIHQ7CisgICAgdCA9IDAgfCAoaXZlYzModCA9PSB0KSAqIDB4ODAwMCk7CisKKyAgICBp
ZiAodCA9PSBpdmVjMygweDgwMDApKQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAs
IDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLWl2ZWM0
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK291dCBoaWdocCB2
ZWM0IG15RnJhZ0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIGhpZ2hwIGl2ZWM0IHQ7CisgICAg
dCA9IDAgfCAoaXZlYzQodCA9PSB0KSAqIDB4ODAwMCk7CisKKyAgICBpZiAodCA9PSBpdmVjNCgw
eDgwMDApKQorICAgICAgICBteUZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsK
KyAgICBlbHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjAp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgor
InVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlZlcmlmeSBwcmVjaXNpb24gc2lkZSBlZmZlY3Rz
Iik7CitkZWJ1ZygiIik7CitkZWJ1ZygiV2hlbiB0aGlzIHRlc3QgaXMgcnVuIG9uIEFkcmVubyAo
bm8gcmVwcm9zIG9uIG90aGVyIHZlbmRvcnMgc28gZmFyKToiKTsKK2RlYnVnKCIgLSB0aGUgcmVz
dWx0IG9mIHRoZSBleHByZXNzaW9uIDAgfCAoaW50KGUwID09IGUwKSAqIDB4ODAwMCkgc29tZWhv
dyByZXR1cm5zIC0zMjc2OCBpbnN0ZWFkIG9mIDMyNzY4IGRlc3BpdGUgdGhlIHZhcmlhYmxlIHVz
aW5nIGhpZ2hwIHByZWNpc2lvbjsiKTsKK2RlYnVnKCIgLSBzcGxpdHRpbmcgdGhlIGV4cHJlc3Np
b24gYWxvbmcgfCBmaXhlcyB0aGUgaXNzdWUgKGNvdWxkIGFsc28gYmUgb2JzZXJ2ZWQgd2l0aCBv
dGhlciBvcGVyYXRvcnMpLiIpOworZGVidWcoJ0ZvciBhZGRpdGlvbmFsIHJlZmVyZW5jZSBzZWUg
dGhpcyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwv
MzE5MiI+cHVsbCByZXF1ZXN0PC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL2NyYnVnLmNvbS8xMTU1
OTQyIj5DaHJvbWl1bSBidWc8L2E+Jyk7CitkZWJ1ZygiIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoImNhbnZhcyIsIHVuZGVmaW5lZCwgMik7CisgICAgaWYgKCFnbCkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworCisgICAgdmFyIHRlc3RDYXNlcyA9IFsKKyAg
ICAgICAgeyB2c2hhZGVyOiAidnNoYWRlci1zaW1wbGUiLCBmc2hhZGVyOiAiZnNoYWRlci1pbnQi
LCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIGludCIgfSwKKyAgICAgICAgeyB2c2hhZGVyOiAidnNo
YWRlci1zaW1wbGUiLCBmc2hhZGVyOiAiZnNoYWRlci1pdmVjMiIsIGRlc2M6ICJmcmFnbWVudCBz
aGFkZXIgaXZlYzIiIH0sCisgICAgICAgIHsgdnNoYWRlcjogInZzaGFkZXItc2ltcGxlIiwgZnNo
YWRlcjogImZzaGFkZXItaXZlYzMiLCBkZXNjOiAiZnJhZ21lbnQgc2hhZGVyIGl2ZWMzIiB9LAor
ICAgICAgICB7IHZzaGFkZXI6ICJ2c2hhZGVyLXNpbXBsZSIsIGZzaGFkZXI6ICJmc2hhZGVyLWl2
ZWM0IiwgZGVzYzogImZyYWdtZW50IHNoYWRlciBpdmVjNCIgfSwKKyAgICBdOworCisgICAgZm9y
ICh2YXIgaWR4ID0gMDsgaWR4IDwgdGVzdENhc2VzLmxlbmd0aDsgKytpZHgpIHsKKyAgICAgICAg
dmFyIHRlc3QgPSB0ZXN0Q2FzZXNbaWR4XTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAg
IHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3Rlc3QudnNoYWRlciwgdGVzdC5m
c2hhZGVyXSwgWyJhUG9zaXRpb24iXSk7CisgICAgICAgIGlmICghcHJvZ3JhbSkgeworICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRmFpbCB0byBzZXQgdXAgcHJvZ3JhbSIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZGVidWcoIlRlc3RpbmcgIiArIHRlc3QuZGVzYyk7CisgICAgICAg
ICAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhcyhn
bCwgWzI1NSwgMCwgMCwgMjU1XSk7CisgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dy
YW0pOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gdGVzdGluZyIpOworICAgICAgICB9CisgICAgfQorfTsK
KwordGVzdCgpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2FtcGxlci1hcnJheS1p
bmRleGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2dsc2wzL3NhbXBsZXItYXJyYXktaW5kZXhpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMmYxMjQ4NzNiZDVlYmEzZmRjNjFlYzY5NjhmMmI1YWY2MzcyZTNjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2dsc2wzL3NhbXBsZXItYXJyYXktaW5kZXhpbmcuaHRtbApAQCAtMCwwICsxLDk0
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5FU1NMMzAwIHNhbXBsZXIgYXJyYXkgaW5kZXhpbmcgcnVsZXM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVy
ZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2cyIgdHlwZT0idGV4dC9wbGFpbiI+
I3ZlcnNpb24gMzAwIGVzCit2b2lkIG1haW4oKSB7fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
c19jb25zdGFudF9pbnRlZ2VyX2V4cHJlc3Npb24iIHR5cGU9InRleHQvcGxhaW4iPiN2ZXJzaW9u
IDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3Rl
eFsyXTsKKwordm9pZCBtYWluKCkKK3sKKyAgdGV4dHVyZSh1X3RleFswXSwgdmVjMigwKSk7Cisg
IHRleHR1cmUodV90ZXhbMV0sIHZlYzIoMCkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
c19jb25zdGFudF9pbmRleF9leHByZXNzaW9uIiB0eXBlPSJ0ZXh0L3BsYWluIj4jdmVyc2lvbiAz
MDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXhb
Ml07CisKK3ZvaWQgbWFpbigpCit7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7Cisg
ICAgdGV4dHVyZSh1X3RleFtpXSwgdmVjMigwKSk7CisgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZnNfY29uc3RhbnRfaW50ZWdlcl9leHByZXNzaW9uX3N3aXRjaCIgdHlwZT0idGV4dC9w
bGFpbiI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0g
c2FtcGxlcjJEIHVfdGV4WzJdOworCit2b2lkIG1haW4oKQoreworICBmb3IgKGludCBpID0gMDsg
aSA8IDI7IGkrKykgeworICAgIHN3aXRjaCAoaSkgeworICAgICAgY2FzZSAwOgorICAgICAgICB0
ZXh0dXJlKHVfdGV4WzBdLCB2ZWMyKDApKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE6
CisgICAgICAgIHRleHR1cmUodV90ZXhbMV0sIHZlYzIoMCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCk7CitHTFNMQ29uZm9ybWFuY2VUZXN0
ZXIucnVuVGVzdHMoWworICB7CisgICAgdlNoYWRlcklkOiAidnMiLAorICAgIHZTaGFkZXJTdWNj
ZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogImZzX2NvbnN0YW50X2ludGVnZXJfZXhwcmVzc2lv
biIsCisgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisg
ICAgcGFzc01zZzogImluZGV4aW5nIGludG8gYW4gYXJyYXkgb2Ygc2FtcGxlcnMgd2l0aCBjb25z
dGFudC1pbnRlZ2VyLWV4cHJlc3Npb24gaXMgcmVxdWlyZWQiLAorICB9LAorICB7CisgICAgdlNo
YWRlcklkOiAidnMiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDog
ImZzX2NvbnN0YW50X2luZGV4X2V4cHJlc3Npb24iLAorICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxz
ZSwKKyAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgcGFzc01zZzogImluZGV4aW5nIGludG8g
YW4gYXJyYXkgb2Ygc2FtcGxlcnMgd2l0aCBjb25zdGFudC1pbmRleC1leHByZXNzaW9uIGlzIGZv
cmJpZGRlbiBpbiBlc3NsMzAwIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZzIiwKKyAg
ICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJmc19jb25zdGFudF9pbnRl
Z2VyX2V4cHJlc3Npb25fc3dpdGNoIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBs
aW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAiY29uc3RhbnQtaW5kZXgtZXhwcmVzc2lv
biBjYW4gYmUgY29udmVydGVkIGludG8gZnNfY29uc3RhbnRfaW50ZWdlcl9leHByZXNzaW9uIHZp
YSBhIHN3aXRjaCIsCisgIH0sCitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL2dsc2wzL3NhbXBsZXItbm8tcHJlY2lzaW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2Ft
cGxlci1uby1wcmVjaXNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjA1ZmE1YzI1NmYzM2M0YWMxOWUy
MWU1MzI0ZTliMTA2MjQyYTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3NhbXBsZXItbm8t
cHJlY2lzaW9uLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBzYW1wbGVyIHdpdGggbm8gcHJlY2lz
aW9uIHF1YWxpZmllciB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29u
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0i
dnNoYWRlclNhbXBsZXJOb1ByZWNpc2lvbiIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJz
aW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gJChzYW1wbGVy
VHlwZSkgdV9zYW1wbGVyOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDAuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJTYW1wbGVyTm9QcmVjaXNp
b24iIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gJChzYW1w
bGVyVHlwZSkgdV9zYW1wbGVyOworCit2b2lkIG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgwLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkVTU0wzIHNhbXBsZXIgd2l0aCBu
byBwcmVjaXNpb24gcXVhbGlmaWVyIHNob3VsZCBub3QgY29tcGlsZS4iKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworCit2YXIgZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSA9IHd0dS5nZXRT
Y3JpcHQoJ2ZzaGFkZXJTYW1wbGVyTm9QcmVjaXNpb24nKTsKK3ZhciB2ZXJ0ZXhTaGFkZXJUZW1w
bGF0ZSA9IHd0dS5nZXRTY3JpcHQoJ3ZzaGFkZXJTYW1wbGVyTm9QcmVjaXNpb24nKTsKKworLy8g
RVNTTCAzLjAwLjQgc2VjdGlvbiA0LjUuNCB0eXBlcyB3aXRoIG5vIHByZWRlZmluZWQgcHJlY2lz
aW9uLgordmFyIHNhbXBsZXJUeXBlcyA9IFsKKyAgICAnc2FtcGxlcjNEJywKKyAgICAnc2FtcGxl
ckN1YmVTaGFkb3cnLAorICAgICdzYW1wbGVyMkRTaGFkb3cnLAorICAgICdzYW1wbGVyMkRBcnJh
eScsCisgICAgJ3NhbXBsZXIyREFycmF5U2hhZG93JywKKyAgICAnaXNhbXBsZXIyRCcsCisgICAg
J2lzYW1wbGVyM0QnLAorICAgICdpc2FtcGxlckN1YmUnLAorICAgICdpc2FtcGxlcjJEQXJyYXkn
LAorICAgICd1c2FtcGxlcjJEJywKKyAgICAndXNhbXBsZXIzRCcsCisgICAgJ3VzYW1wbGVyQ3Vi
ZScsCisgICAgJ3VzYW1wbGVyMkRBcnJheScKK107CisKK3ZhciB0ZXN0cyA9IFtdOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IHNhbXBsZXJUeXBlcy5sZW5ndGg7ICsraSkgeworICAgIHZhciB0eXBl
ID0gc2FtcGxlclR5cGVzW2ldOworICAgIHZhciB2ZXJ0ZXhTaGFkZXJTcmMgPSB3dHUucmVwbGFj
ZVBhcmFtcyh2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSwgeydzYW1wbGVyVHlwZSc6IHR5cGV9KTsKKyAg
ICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgdlNoYWRlclNvdXJjZTogdmVydGV4U2hhZGVyU3JjLAor
ICAgICAgICB2U2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICAgIGxpbmtTdWNjZXNzOiBmYWxz
ZSwKKyAgICAgICAgcGFzc01zZzogJ1ZlcnRleCBzaGFkZXIgd2l0aCBhICcgKyB0eXBlICsgJyB1
bmlmb3JtIHdpdGggbm8gcHJlY2lzaW9uIHF1YWxpZmllciBzaG91bGQgbm90IGNvbXBpbGUnCisg
ICAgfSk7CisgICAgdmFyIGZyYWdtZW50U2hhZGVyU3JjID0gd3R1LnJlcGxhY2VQYXJhbXMoZnJh
Z21lbnRTaGFkZXJUZW1wbGF0ZSwgeydzYW1wbGVyVHlwZSc6IHR5cGV9KTsKKyAgICB0ZXN0cy5w
dXNoKHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogZnJhZ21lbnRTaGFkZXJTcmMsCisgICAgICAg
IGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgICAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICAg
ICAgICBwYXNzTXNnOiAnRnJhZ21lbnQgc2hhZGVyIHdpdGggYSAnICsgdHlwZSArICcgdW5pZm9y
bSB3aXRoIG5vIHByZWNpc2lvbiBxdWFsaWZpZXIgc2hvdWxkIG5vdCBjb21waWxlJworICAgIH0p
OworfQorCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHModGVzdHMsIDIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2VxdWVuY2Utb3BlcmF0
b3ItcmV0dXJucy1ub24tY29uc3RhbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zZXF1ZW5jZS1vcGVyYXRvci1y
ZXR1cm5zLW5vbi1jb25zdGFudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZDBlNWViNzExNzA1NGNlMjRm
ZTRhNjJlOGEzYjE0YzYxZGE1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2VxdWVuY2Ut
b3BlcmF0b3ItcmV0dXJucy1ub24tY29uc3RhbnQuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5TZXF1ZW5j
ZSBvcGVyYXRvciByZXR1cm5zIG5vbi1jb25zdGFudCB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPCEtLQorU2VxdWVuY2Ugb3BlcmF0b3IgYW5kIG5vbi1jb25zdGFudCBleHByZXNzaW9u
cyBhcmUgZGV0YWlsZWQgaW4gdGhlIEVTU0wgMy4wMCBzcGVjIHNlY3Rpb24gMTIuNDMKKy0tPgor
PHNjcmlwdCBpZD0iZnNoYWRlci1ub24tY29uc3QtZXhwcmVzc2lvbiIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
dm9pZCBtYWluKCkgeworICAgIGNvbnN0IGZsb2F0IGEgPSAoMC4wLCAxLjApOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLW5vbi1jb25zdC1leHByZXNzaW9uLWFzLWFycmF5LXNp
emUiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBmbG9hdCBhWygyLCAzKV07Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNl
IHN0cmljdCI7CitkZXNjcmlwdGlvbigiQ2hlY2tzIHNlcXVlbmNlIG9wZXJhdG9ycyByZXR1cm5p
bmcgbm9uLWNvbnN0YW50cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYW4gYXJyYXkgc2l6ZS4iKTsK
K2RlYnVnKCIiKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsKK3sKKyAgZlNo
YWRlcklkOiAnZnNoYWRlci1ub24tY29uc3QtZXhwcmVzc2lvbicsCisgIGZTaGFkZXJTdWNjZXNz
OiBmYWxzZSwKKyAgbGlua1N1Y2Nlc3M6IGZhbHNlLAorICBwYXNzTXNnOiAnU2VxdWVuY2Ugb3Bl
cmF0b3IgY2Fubm90IHJldHVybiBhIGNvbnN0YW50IGV4cHJlc3Npb24nCit9LAoreworICBmU2hh
ZGVySWQ6ICdmc2hhZGVyLW5vbi1jb25zdC1leHByZXNzaW9uLWFzLWFycmF5LXNpemUnLAorICBm
U2hhZGVyU3VjY2VzczogZmFsc2UsCisgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgcGFzc01zZzog
J1NlcXVlbmNlIG9wZXJhdG9yIHJldHVybiB2YWx1ZSBjYW5ub3QgYmUgdXNlZCBhcyBhbiBhcnJh
eSBzaXplJworfSwKK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9nbHNsMy9zaGFkZXItbGlua2luZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3NoYWRlci1saW5raW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjIxMGUwNTc3YjAzNGNmZmNhNmFlYzg1NDdlMTMyNDA0YWE0Nzc4
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zaGFkZXItbGlua2luZy5odG1sCkBAIC0wLDAg
KzEsODQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPk9wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMDAgYW5kIE9wZW5HTCBFUyBTaGFk
aW5nIExhbmd1YWdlIDMuMDAgc2hhZGVycyBzaG91bGQgbm90IGxpbmsgd2l0aCBlYWNoIG90aGVy
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iRVMz
VmVydGV4U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZlYzQgYVBvc2l0aW9uOworCit2b2lkIG1haW4o
KSB7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9IkVTM0ZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0NvbG9y
Owordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwg
MS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iRVNTTDFWZXJ0ZXhTaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworYXR0cmlidXRl
IHZlYzQgYVBvc2l0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhUG9z
aXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IkVTU0wxRnJhZ21lbnRTaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3Zv
aWQgbWFpbigpIHsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworLy8gU2VlIE9wZW5HTCBFUyBTaGFkaW5nIExh
bmd1YWdlIDMuMDAgc3BlYyBzZWN0aW9uIDEuNSBvciAzLjMKK0dMU0xDb25mb3JtYW5jZVRlc3Rl
ci5ydW5UZXN0cyhbCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFUzNWZXJ0ZXhTaGFkZXIiLAorICAg
IHZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIkVTM0ZyYWdtZW50U2hhZGVy
IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAg
ICBwYXNzTXNnOiAiT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMy4wMCB2ZXJ0ZXggc2hhZGVy
IHNob3VsZCBsaW5rIHdpdGggT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMy4wMCBmcmFnbWVu
dCBzaGFkZXIuIgorICB9LAorICB7CisgICAgdlNoYWRlcklkOiAiRVMzVmVydGV4U2hhZGVyIiwK
KyAgICB2U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBmU2hhZGVySWQ6ICJFU1NMMUZyYWdtZW50
U2hhZGVyIiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogZmFs
c2UsCisgICAgcGFzc01zZzogIk9wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDMuMDAgdmVydGV4
IHNoYWRlciBzaG91bGQgbm90IGxpbmsgd2l0aCBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAx
LjAwIGZyYWdtZW50IHNoYWRlci4iCisgIH0sCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFU1NMMVZl
cnRleFNoYWRlciIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklkOiAi
RVMzRnJhZ21lbnRTaGFkZXIiLAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtT
dWNjZXNzOiBmYWxzZSwKKyAgICBwYXNzTXNnOiAiT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ug
MS4wMCB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBub3QgbGluayB3aXRoIE9wZW5HTCBFUyBTaGFkaW5n
IExhbmd1YWdlIDMuMDAgZnJhZ21lbnQgc2hhZGVyLiIKKyAgfQorXSwgMik7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2dsc2wzL3NoYWRlci13aXRoLTEwMjQtY2hhcmFjdGVyLWRlZmluZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2ds
c2wzL3NoYWRlci13aXRoLTEwMjQtY2hhcmFjdGVyLWRlZmluZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2
ZmFlN2I3MjZlYjYyZmYwNzZiZmM3YzAzZDE3M2JmMDkyNThjZjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvZ2xzbDMvc2hhZGVyLXdpdGgtMTAyNC1jaGFyYWN0ZXItZGVmaW5lLmh0bWwKQEAgLTAsMCAr
MSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRl
c3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZlcnRleFNoYWRlciIgdHlwZT0idGV4dC9z
b21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gdmVydGV4IHNoYWRlciB0aGF0IHVzZXMgMTAy
NCBjaGFyYWN0ZXIgdG9rZW4gaW4gI2RlZmluZSBzaG91bGQgc3VjY2VlZAorI2RlZmluZSBMRU5f
MTAyNF9PSyBYeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHhYCisKK3ZvaWQgbWFpbigpCit7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDAuMCwg
MC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENv
bmZvcm1hbmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hhZGVy
LXdpdGgtMTAyNC1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hhZGVy
LXdpdGgtMTAyNC1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5
YWJkMjQyODJiMzYwYThkMGU4NTZkZThjYjRhNWUwZjgzZjI5OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9nbHNsMy9zaGFkZXItd2l0aC0xMDI0LWNoYXJhY3Rlci1pZGVudGlmaWVyLmZyYWcuaHRtbApA
QCAtMCwwICsxLDEwNSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgR0xTTCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1m
ZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZyYWdtZW50U2hhZGVyMTAy
NCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVyIHRoYXQg
dXNlcyAxMDI0IGNoYXJhY3RlciBpZGVudGlmaWVyIHNob3VsZCBzdWNjZWVkCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gZmxvYXQgYTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzsKK3ZvaWQgbWFpbigpCit7CisgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoYTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMywgMC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZy
YWdtZW50U2hhZGVyX2JlZm9yZSIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
PgorLy8gc2hhZGVyIHRoYXQgdXNlcyAxMDI0IGNoYXJhY3RlciBpZGVudGlmaWVyIHRoYXQgc3Rh
cnRzIHdpdGggdW5kZXJzY29yZSBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit1bmlmb3JtIGZsb2F0IF9hMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTI7Cit2b2lkIG1haW4oKQoreworICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KF9hMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIs
IDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudFNoYWRl
cl9hZnRlciIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVy
IHRoYXQgdXNlcyAxMDI0IGNoYXJhY3RlciBpZGVudGlmaWVyIHRoYXQgZW5kcyB3aXRoIHVuZGVy
c2NvcmUgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBm
bG9hdCBhMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTJfOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTJfLCAwLjAsIDAuMCwgMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIxMDI0X29kZCIgdHlw
ZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPgorLy8gc2hhZGVyIHRoYXQgdXNlcyAx
MDI0IGNoYXJhY3RlciBpZGVudGlmaWVyIHdpdGggb2RkIGNoYXJhY3RlcnMgYXMgdW5kZXJzY29y
ZXMgc2hvdWxkIHN1Y2NlZWQKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBmbG9h
dCBhXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80
XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBf
Ml80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84
XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRf
Nl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8y
XzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82Xzhf
MF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82
XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJf
NF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8w
XzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZf
OF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80
XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBf
Ml80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84
XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRf
Nl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8y
XzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82Xzhf
MF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82
XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJf
Owordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhXzJfNF82XzhfMF8yXzRf
Nl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8y
XzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82Xzhf
MF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82
XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJf
NF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8w
XzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZf
OF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80
XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBf
Ml80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84
XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRf
Nl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8y
XzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82Xzhf
MF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82
XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJf
NF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8w
XzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZf
OF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80
XzZfOF8wXzJfNF82XzhfMF8yXzRfNl84XzBfMl80XzZfOF8wXzJfLCAwLjAsIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIxMDI0X2V2ZW4iIHR5cGU9
InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHNoYWRlciB0aGF0IHVzZXMgMTAy
NCBjaGFyYWN0ZXIgaWRlbnRpZmllciB3aXRoIGV2ZW4gY2hhcmFjdGVycyBhcyB1bmRlcnNjb3Jl
cyBzaG91bGQgc3VjY2VlZAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGZsb2F0
IGExXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181
XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFf
M181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185
XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVf
N185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8z
XzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83Xzlf
MV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83
XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNf
NV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8x
XzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181Xzdf
OV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181
XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFf
M181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185
XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVf
N185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8z
XzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83Xzlf
MV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83
XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzM7
Cit2b2lkIG1haW4oKQoreworICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGExXzNfNV83XzlfMV8zXzVf
N185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8z
XzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83Xzlf
MV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83
XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNf
NV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8x
XzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181Xzdf
OV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181
XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFf
M181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185
XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVf
N185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8z
XzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83Xzlf
MV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83
XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNf
NV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8x
XzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181Xzdf
OV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181
XzdfOV8xXzNfNV83XzlfMV8zXzVfN185XzFfM181XzdfOV8xXzMsIDAuMCwgMC4wLCAxLjApOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1hbmNlVGVz
dGVyLnJ1blRlc3RzKFsKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlcjEw
MjQnLAorICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1
ZSwKKyAgICAgIHBhc3NNc2c6ICdzaGFkZXIgd2l0aCAxMDI0IGNoYXJhY3RlciBpZGVudGlmaWVy
IHNob3VsZCBzdWNjZWVkJworICAgIH0sCisgICAgeworICAgICAgZlNoYWRlcklkOiAnZnJhZ21l
bnRTaGFkZXJfYmVmb3JlJywKKyAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgICAgICBwYXNzTXNnOiAnc2hhZGVyIHdpdGggMTAyNCBjaGFyYWN0
ZXIgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIHVuZGVyc2NvcmUgc2hvdWxkIHN1Y2NlZWQn
CisgICAgfSwKKyAgICB7CisgICAgICBmU2hhZGVySWQ6ICdmcmFnbWVudFNoYWRlcl9hZnRlcics
CisgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAor
ICAgICAgcGFzc01zZzogJ3NoYWRlciB3aXRoIDEwMjQgY2hhcmFjdGVyIGlkZW50aWZpZXIgdGhh
dCBlbmRzIHdpdGggdW5kZXJzY29yZSBzaG91bGQgc3VjY2VlZCcKKyAgICB9LAorICAgIHsKKyAg
ICAgIGZTaGFkZXJJZDogJ2ZyYWdtZW50U2hhZGVyMTAyNF9vZGQnLAorICAgICAgZlNoYWRlclN1
Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgIHBhc3NNc2c6ICdz
aGFkZXIgd2l0aCAxMDI0IGNoYXJhY3RlciBpZGVudGlmaWVyIHdpdGggb2RkIGNoYXJhY3RlcnMg
YXMgdW5kZXJzY29yZXMgc2hvdWxkIHN1Y2NlZWQnCisgICAgfSwKKyAgICB7CisgICAgICBmU2hh
ZGVySWQ6ICdmcmFnbWVudFNoYWRlcjEwMjRfZXZlbicsCisgICAgICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgcGFzc01zZzogJ3NoYWRlciB3
aXRoIDEwMjQgY2hhcmFjdGVyIGlkZW50aWZpZXIgd2l0aCBldmVuIGNoYXJhY3RlcnMgYXMgdW5k
ZXJzY29yZXMgc2hvdWxkIHN1Y2NlZWQnCisgICAgfQorXSk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9nbHNsMy9zaGFkZXItd2l0aC0xMDI1LWNoYXJhY3Rlci1kZWZpbmUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9z
aGFkZXItd2l0aC0xMDI1LWNoYXJhY3Rlci1kZWZpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmU0N2Yy
MjJiYWYzMjQ0YTRkM2ViYmEwY2NhMWU4NjBhNjA3ZjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2ds
c2wzL3NoYWRlci13aXRoLTEwMjUtY2hhcmFjdGVyLWRlZmluZS5odG1sCkBAIC0wLDAgKzEsMzYg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRo
aW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIDEwMjUgY2hh
cmFjdGVyIHRva2VuIGluICNkZWZpbmUgc2hvdWxkIGZhaWwKKyNkZWZpbmUgTEVOXzEwMjVfQkFE
IFh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4
eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhY
CisKK3ZvaWQgbWFpbigpCit7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3QoKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hhZGVyLXdpdGgt
MTAyNS1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hhZGVyLXdpdGgt
MTAyNS1jaGFyYWN0ZXItaWRlbnRpZmllci5mcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExNzIyMmY0
MzU5ZjkzMTQ5MDRlY2M4ODZiNmRiNmQ5ODExYzg5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNs
My9zaGFkZXItd2l0aC0xMDI1LWNoYXJhY3Rlci1pZGVudGlmaWVyLmZyYWcuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBHTFNMIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUt
dGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnJhZ21lbnRTaGFkZXIiIHR5cGU9InRl
eHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KKy8vIHNoYWRlciB0aGF0IHVzZXMgMTAyNSBj
aGFyYWN0ZXIgaWRlbnRpZmllciBzaG91bGQgZmFpbAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Cit1bmlmb3JtIGZsb2F0IGExMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0Owordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNChh
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCwg
MC4wLCAwLjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitH
TFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9z
aGFkZXItd2l0aC1pbnZhbGlkLWNoYXJhY3RlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zaGFkZXItd2l0aC1p
bnZhbGlkLWNoYXJhY3RlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDk0YzQ2ZGNkZjBjOTNjN2U4NGRl
YjE3MDgzNWIyOWI0NTlmMjRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3NoYWRlci13aXRo
LWludmFsaWQtY2hhcmFjdGVycy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEdMU0wgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
Z2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2ZXJ0ZXhTaGFkZXIiIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0
Ij4KKy8vIHZlcnRleCBzaGFkZXIgdGhhdCB1c2VzIGJhY2tsYXNoIGNoYXJhY3RlciBpbiBjb21t
ZW50cyBzaG91bGQgc3VjY2VlZAorLy8gVGhpcyBpcyBhIGxpXG5lIHdpXHRoIGJhY2tsYXNoIFxc
IGNoYXJhY3RlcnMgXAoraW4gY29tbWVudHMKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0KCk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2dsc2wzL3NoYWRlci13aXRoLW1pcy1tYXRjaGluZy11bmlmb3JtLWJsb2NrLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZ2xzbDMvc2hhZGVyLXdpdGgtbWlzLW1hdGNoaW5nLXVuaWZvcm0tYmxvY2suaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYmY0MWEzODI1MWE0MzNhNDlkNjAxYmM4OGIxMGU0ZWY0NDIyN2U3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL2dsc2wzL3NoYWRlci13aXRoLW1pcy1tYXRjaGluZy11bmlmb3JtLWJs
b2NrLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+R0xTTCBtaXMtbWF0Y2hpbmcgdW5pZm9ybSBibG9jazwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFk
ZXItdW5pZm9ybS1ibG9jay1wcmVjaXNpb24iIHR5cGU9InRleHQvc29tZXRoaW5nLW5vdC1qYXZh
c2NyaXB0Ij4jdmVyc2lvbiAzMDAgZXMKK3VuaWZvcm0gQmxvY2sgeworICAgIG1lZGl1bXAgdmVj
NCB2YWw7Cit9OworCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmFsOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXVuaWZvcm0tYmxvY2stcHJlY2lzaW9uIiB0
eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+I3ZlcnNpb24gMzAwIGVzCit1bmlm
b3JtIEJsb2NrIHsKKyAgICBoaWdocCB2ZWM0IHZhbDsKK307CisKK291dCBoaWdocCB2ZWM0IG91
dF9GcmFnQ29sb3I7Cit2b2lkIG1haW4oKQoreworICAgIG91dF9GcmFnQ29sb3IgPSB2YWw7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiU2hhZGVy
cyB3aXRoIHByZWNpc2lvbiBtaXMtbWF0Y2hpbmcgdW5pZm9ybSBibG9ja3Mgc2hvdWxkIGZhaWwi
KTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsKK3sKKyAgdlNoYWRlcklkOiAn
dnNoYWRlci11bmlmb3JtLWJsb2NrLXByZWNpc2lvbicsCisgIHZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICBmU2hhZGVySWQ6ICdmc2hhZGVyLXVuaWZvcm0tYmxvY2stcHJlY2lzaW9uJywKKyAgZlNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgcGFzc01zZzogIlNo
YWRlcnMgd2l0aCBwcmVjaXNpb24gbWlzLW1hdGNoaW5nIHVuaWZvcm0gYmxvY2tzIHNob3VsZCBm
YWlsIgorfSwKK10sIDIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zaG9ydC1jaXJjdWl0aW5n
LWluLWxvb3AtY29uZGl0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hvcnQtY2lyY3VpdGluZy1pbi1sb29w
LWNvbmRpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMmQ2N2FhNGEzMzc2YzkzNTkxYWVhMGJlZWNh
OWRhMzVmNTc3NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvc2hvcnQtY2lyY3VpdGluZy1p
bi1sb29wLWNvbmRpdGlvbi5odG1sCkBAIC0wLDAgKzEsMTgwIEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5TaG9ydCBjaXJjdWl0IGluIGxv
b3AgY29uZGl0aW9uIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25m
b3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJm
c2hhZGVyV2hpbGUiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGJvb2wgdTsKK291dCB2ZWM0IHJlc3Vs
dDsKK2ludCBzaWRlRWZmZWN0Q291bnRlcjsKKworYm9vbCBmb28oKSB7CisgICsrc2lkZUVmZmVj
dENvdW50ZXI7CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIG1haW4oKSB7CisgIHNpZGVFZmZl
Y3RDb3VudGVyID0gMDsKKyAgaW50IGl0ZXJhdGlvbnMgPSAwOworCisgIHdoaWxlKHUgJiYgZm9v
KCkpIHsKKyAgICArK2l0ZXJhdGlvbnM7CisgICAgaWYgKGl0ZXJhdGlvbnMgPj0gMTApIHsKKyAg
ICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIGJvb2wgc3VjY2VzcyA9ICh1ICYmIHNpZGVFZmZl
Y3RDb3VudGVyID09IDEwKSB8fCAoIXUgJiYgc2lkZUVmZmVjdENvdW50ZXIgPT0gMCk7CisgIHJl
c3VsdCA9IHN1Y2Nlc3MgPyB2ZWM0KDAsIDEuMCwgMCwgMS4wKSA6IHZlYzQoMCwgMS4wLCAwLCAw
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckZvckNvbmRpdGlvbiIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gYm9vbCB1Oworb3V0IHZlYzQgcmVzdWx0OworaW50IHNpZGVFZmZlY3RD
b3VudGVyOworCitib29sIGZvbygpIHsKKyAgKytzaWRlRWZmZWN0Q291bnRlcjsKKyAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgc2lkZUVmZmVjdENvdW50ZXIgPSAwOworICBm
b3IoaW50IGl0ZXJhdGlvbnMgPSAwOyB1ICYmIGZvbygpOykgeworICAgICsraXRlcmF0aW9uczsK
KyAgICBpZiAoaXRlcmF0aW9ucyA+PSAxMCkgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisK
KyAgYm9vbCBzdWNjZXNzID0gKHUgJiYgc2lkZUVmZmVjdENvdW50ZXIgPT0gMTApIHx8ICghdSAm
JiBzaWRlRWZmZWN0Q291bnRlciA9PSAwKTsKKyAgcmVzdWx0ID0gc3VjY2VzcyA/IHZlYzQoMCwg
MS4wLCAwLCAxLjApIDogdmVjNCgwLCAxLjAsIDAsIDApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyRm9yIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAg
ZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBib29sIHU7CitvdXQgdmVjNCBy
ZXN1bHQ7CitpbnQgc2lkZUVmZmVjdENvdW50ZXI7CisKK2Jvb2wgZm9vKCkgeworICArK3NpZGVF
ZmZlY3RDb3VudGVyOworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBtYWluKCkgeworICBzaWRl
RWZmZWN0Q291bnRlciA9IDA7CisgIGZvcihpbnQgaXRlcmF0aW9ucyA9IDA7IHRydWU7IHUgJiYg
Zm9vKCkpIHsKKyAgICArK2l0ZXJhdGlvbnM7CisgICAgaWYgKGl0ZXJhdGlvbnMgPiAxMCkgewor
ICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgYm9vbCBzdWNjZXNzID0gKHUgJiYgc2lkZUVm
ZmVjdENvdW50ZXIgPT0gMTApIHx8ICghdSAmJiBzaWRlRWZmZWN0Q291bnRlciA9PSAwKTsKKyAg
cmVzdWx0ID0gc3VjY2VzcyA/IHZlYzQoMCwgMS4wLCAwLCAxLjApIDogdmVjNCgwLCAxLjAsIDAs
IDApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyRG9XaGlsZSIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKK3VuaWZvcm0gYm9vbCB1Oworb3V0IHZlYzQgcmVzdWx0OworaW50IHNpZGVFZmZlY3RDb3Vu
dGVyOworCitib29sIGZvbygpIHsKKyAgKytzaWRlRWZmZWN0Q291bnRlcjsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgc2lkZUVmZmVjdENvdW50ZXIgPSAwOworICBpbnQg
aXRlcmF0aW9ucyA9IDA7CisKKyAgZG8geworICAgICsraXRlcmF0aW9uczsKKyAgICBpZiAoaXRl
cmF0aW9ucyA+IDEwKSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0gd2hpbGUgKHUgJiYgZm9v
KCkpOworCisgIGJvb2wgc3VjY2VzcyA9ICh1ICYmIHNpZGVFZmZlY3RDb3VudGVyID09IDEwKSB8
fCAoIXUgJiYgc2lkZUVmZmVjdENvdW50ZXIgPT0gMCk7CisgIHJlc3VsdCA9IHN1Y2Nlc3MgPyB2
ZWM0KDAsIDEuMCwgMCwgMS4wKSA6IHZlYzQoMCwgMS4wLCAwLCAwKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iZnNoYWRlclNlcXVlbmNlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4j
dmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBib29sIHU7
CitvdXQgdmVjNCByZXN1bHQ7CitpbnQgc2lkZUVmZmVjdENvdW50ZXI7CisKK2Jvb2wgZm9vKCkg
eworICArK3NpZGVFZmZlY3RDb3VudGVyOworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBtYWlu
KCkgeworICBzaWRlRWZmZWN0Q291bnRlciA9IDA7CisgIGludCBpdGVyYXRpb25zID0gMDsKKwor
ICB3aGlsZSh1LCB1ICYmIGZvbygpKSB7CisgICAgKytpdGVyYXRpb25zOworICAgIGlmIChpdGVy
YXRpb25zID49IDEwKSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICBib29sIHN1Y2Nl
c3MgPSAodSAmJiBzaWRlRWZmZWN0Q291bnRlciA9PSAxMCkgfHwgKCF1ICYmIHNpZGVFZmZlY3RD
b3VudGVyID09IDApOworICByZXN1bHQgPSBzdWNjZXNzID8gdmVjNCgwLCAxLjAsIDAsIDEuMCkg
OiB2ZWM0KDAsIDEuMCwgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IGJlaGF2aW9yIG9m
IGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvciBpbiBhIGxvb3AgdXNpbmcgYSBmdW5jdGlvbiBj
YWxsIHdpdGggc2lkZSBlZmZlY3RzIik7CisKK3ZhciB0ZXN0U2hhZGVycyA9IFsKKyAge2ZTaGFk
ZXJJZDogJ2ZzaGFkZXJXaGlsZScsIGRlc2NyaXB0aW9uOiAnaW4gd2hpbGUgbG9vcCBjb25kaXRp
b24nfSwKKyAge2ZTaGFkZXJJZDogJ2ZzaGFkZXJGb3JDb25kaXRpb24nLCBkZXNjcmlwdGlvbjog
J2luIGZvciBsb29wIGNvbmRpdGlvbid9LAorICB7ZlNoYWRlcklkOiAnZnNoYWRlckZvcicsIGRl
c2NyaXB0aW9uOiAnaW4gZm9yIGxvb3AgZXhwcmVzc2lvbid9LAorICB7ZlNoYWRlcklkOiAnZnNo
YWRlckRvV2hpbGUnLCBkZXNjcmlwdGlvbjogJ2luIGRvLXdoaWxlIGxvb3AgY29uZGl0aW9uJ30s
CisgIHtmU2hhZGVySWQ6ICdmc2hhZGVyU2VxdWVuY2UnLCBkZXNjcmlwdGlvbjogJ2luc2lkZSBh
IHNlcXVlbmNlIGluIHdoaWxlIGxvb3AgY29uZGl0aW9uJ30KK107CisKK3ZhciB0ZXN0TGlzdCA9
IFtdOworCitmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RTaGFkZXJzLmxlbmd0aDsgKytpKSB7Cisg
IHRlc3RMaXN0LnB1c2goeworICAgIGZTaGFkZXJJZDogdGVzdFNoYWRlcnNbaV0uZlNoYWRlcklk
LAorICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAg
IHBhc3NNc2c6ICdTaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9yIHdpdGggYSB0cnVlIGNvbmRpdGlv
biAnICsgdGVzdFNoYWRlcnNbaV0uZGVzY3JpcHRpb24sCisgICAgdW5pZm9ybXM6IFt7bmFtZTog
InUiLCBmdW5jdGlvbk5hbWU6ICJ1bmlmb3JtMWkiLCB2YWx1ZTogMX1dCisgIH0pOworICB0ZXN0
TGlzdC5wdXNoKHsKKyAgICBmU2hhZGVySWQ6IHRlc3RTaGFkZXJzW2ldLmZTaGFkZXJJZCwKKyAg
ICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNz
TXNnOiAnU2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvciB3aXRoIGEgZmFsc2UgY29uZGl0aW9uICcg
KyB0ZXN0U2hhZGVyc1tpXS5kZXNjcmlwdGlvbiwKKyAgICB1bmlmb3JtczogW3tuYW1lOiAidSIs
IGZ1bmN0aW9uTmFtZTogInVuaWZvcm0xaSIsIHZhbHVlOiAwfV0KKyAgfSk7Cit9CisKK0dMU0xD
b25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyh0ZXN0TGlzdCwgMik7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zd2l0Y2gtY2FzZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2dsc2wzL3N3aXRjaC1jYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFiNDIyYzk1OGY5MzdjNGU5ZmVm
NDcyNWFkOGI2OGFhOTY1ZGZmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9zd2l0Y2gtY2Fz
ZS5odG1sCkBAIC0wLDAgKzEsMzUxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHN3aXRjaC9jYXNlIGNvcm5lciBjYXNlIHRlc3Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyRGVjbGFyYXRpb25J
bnNpZGVTd2l0Y2giIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
CitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZv
cm0gaW50IHVfemVybzsKKwordm9pZCBtYWluKCkKK3sKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0
KDEsIDAsIDAsIDEpOworICAgIHN3aXRjaCAodV96ZXJvKQorICAgIHsKKyAgICAgICAgY2FzZSAw
OgorICAgICAgICAgICAgaXZlYzIgaTsKKyAgICAgICAgICAgIGkgPSBpdmVjMigxLCAwKTsKKyAg
ICAgICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgaVswXSwgMCwgMSk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyRGVjbGFyYXRpb25JbnNpZGVTd2l0Y2hEZWZh
dWx0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKworcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1
X3plcm87CisKK3ZvaWQgbWFpbigpCit7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAw
LCAxKTsKKyAgICBzd2l0Y2ggKHVfemVybykKKyAgICB7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBpdmVjMiBpOworICAgICAgICAgICAgaSA9IGl2ZWMyKDEsIDApOworICAgICAgICAg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCBpWzBdLCAwLCAxKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJEZWNsYXJhdGlvbkluc2lkZVN3aXRjaExpdGVyYWwiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworCitwcmVjaXNpb24gaGln
aHAgZmxvYXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICBzd2l0Y2ggKDApCisgICAgewor
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBpdmVjMiBpOworICAgICAgICAgICAgaSA9IGl2
ZWMyKDEsIDApOworICAgICAgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCBpWzBdLCAwLCAx
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJEZWNsYXJhdGlvbklu
c2lkZVN3aXRjaExpdGVyYWxEZWZhdWx0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKKworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yOworCit2b2lkIG1haW4oKQoreworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwg
MSk7CisgICAgc3dpdGNoICgwKQorICAgIHsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGl2ZWMyIGk7CisgICAgICAgICAgICBpID0gaXZlYzIoMSwgMCk7CisgICAgICAgICAgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KDAsIGlbMF0sIDAsIDEpOworICAgIH0KK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlckRlY2xhcmF0aW9uSW5zaWRlU3dpdGNoU2NvcGUiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gaW50IHVfemVybzsKKworLy8gR0xT
TCBFUyAzLjEwIGNsYXJpZmllcyB0aGUgc2NvcGluZyBydWxlcyB0aGF0IGFyZSByZWxldmFudCBo
ZXJlLiBJbiBzZWN0aW9uIDQuMi4yIGl0IHNheXM6CisvLyAiVGhlIHN0YXRlbWVudCBmb2xsb3dp
bmcgYSBzd2l0Y2ggKC4uLikgZm9ybXMgYSBuZXN0ZWQgc2NvcGUuIgorLy8gVGhlcmUgYXJlIG5v
IG90aGVyIHNwZWNpYWwgc2NvcGluZyBydWxlcyB3aXRoIHJlZ2FyZHMgdG8gc3dpdGNoIHN0YXRl
bWVudHMuCisKK3ZvaWQgbWFpbigpCit7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAw
LCAxKTsKKyAgICBzd2l0Y2ggKHVfemVybykKKyAgICB7CisgICAgICAgIGNhc2UgMDoKKyAgICAg
ICAgICAgIGl2ZWMyIGk7CisgICAgICAgICAgICBpID0gaXZlYzIoMSwgMCk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAsIGlbMF0sIDAsIDEpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckZhbGxUaHJvdWdoQWxsIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKworcHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gaW50IHVfemVy
bzsKKwordm9pZCBtYWluKCkKK3sKKyAgICBpbnQgaSA9IDA7CisgICAgLy8gc3dpdGNoIHNob3Vs
ZCBmYWxsIHRocm91Z2ggYm90aCBjYXNlcy4KKyAgICBzd2l0Y2godV96ZXJvKQorICAgIHsKKyAg
ICAgICAgY2FzZSAwOgorICAgICAgICAgICAgaSArPSAxOworICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICBpICs9IDI7CisgICAgfQorICAgIGlmIChpID09IDMpCisgICAgeworICAgICAgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgIH0KK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckVtcHR5U3dpdGNoU3RhdGVtZW50IiB0eXBlPSJ4LXNo
YWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gaW50IHVfemVybzsKKwordm9p
ZCBtYWluKCkKK3sKKyAgICBzd2l0Y2godV96ZXJvKQorICAgIHsKKyAgICB9CisgICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNo
YWRlckxhc3RDYXNlSGFzRW1wdHlEZWNsYXJhdGlvbiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+I3ZlcnNpb24gMzAwIGVzCisKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKworb3V0IHZlYzQg
bXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1X3plcm87CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgLy8gRW1wdHkgZGVjbGFyYXRpb24gc2hvdWxkIGNvdW50IGFzIGEgc3RhdGVtZW50LgorICAg
IHN3aXRjaCh1X3plcm8pCisgICAgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBpbnQ7
CisgICAgfQorICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJMYXN0Q2FzZUhhc0VtcHR5QmxvY2siIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSBpbnQgdV96ZXJvOworCit2b2lk
IG1haW4oKQoreworICAgIC8vIEVtcHR5IGJsb2NrIHNob3VsZCBjb3VudCBhcyBhIHN0YXRlbWVu
dC4KKyAgICBzd2l0Y2godV96ZXJvKQorICAgIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAg
ICAge30KKyAgICB9CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckxhc3RDYXNlSGFzQ29uc3RhbnRTdGF0ZW1lbnQi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworCitwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSBpbnQgdV96
ZXJvOworCit2b2lkIG1haW4oKQoreworICAgIC8vIEVtcHR5IHN0YXRlbWVudCBzaG91bGQgY291
bnQgYXMgYSBzdGF0ZW1lbnQuCisgICAgc3dpdGNoKHVfemVybykKKyAgICB7CisgICAgICAgIGNh
c2UgMDoKKyAgICAgICAgICAgIDA7CisgICAgfQorICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMCwg
MSwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJMYXN0Q2FzZUhhc0Vt
cHR5U3RhdGVtZW50IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
KworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3Vu
aWZvcm0gaW50IHVfemVybzsKKwordm9pZCBtYWluKCkKK3sKKyAgICAvLyBFbXB0eSBzdGF0ZW1l
bnQgc2hvdWxkIGNvdW50IGFzIGEgc3RhdGVtZW50LgorICAgIHN3aXRjaCh1X3plcm8pCisgICAg
eworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICA7CisgICAgfQorICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJD
YXNlSW5zaWRlQmxvY2siIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBl
cworCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwor
dW5pZm9ybSBpbnQgdV96ZXJvOworCit2b2lkIG1haW4oKQoreworICAgIC8vIENhc2Ugc3RhdGVt
ZW50cyBtdXN0IG5vdCBiZSBuZXN0ZWQgaW4gYmxvY2tzLgorICAgIC8vIEdMU0wgRVMgMy4wMCBz
cGVjIGlzIGEgYml0IHZhZ3VlIG9uIHRoaXMgYnV0IEdMU0wgRVMgMy4xMCBzZWN0aW9uIDYuMiBp
cyBjbGVhcmVyLgorICAgIHN3aXRjaCh1X3plcm8pCisgICAgeworICAgICAgICBjYXNlIDE6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgICAgICB9CisgICAgfQorICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCisvLyBD
b3ZlcnMgYnVnczoKKy8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjE3NworLy8gaHR0cDovL2FuZ2xl
YnVnLmNvbS8yMTc4CisvLyBodHRwOi8vYW5nbGVidWcuY29tLzIxNzkKKworR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckRlY2xhcmF0aW9u
SW5zaWRlU3dpdGNoJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0
cnVlLAorICBwYXNzTXNnOiAnRGVjbGFyYXRpb24gaW5zaWRlIHN3aXRjaCBzaG91bGQgd29yay4n
LAorICByZW5kZXI6IHRydWUKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJEZWNsYXJhdGlv
bkluc2lkZVN3aXRjaERlZmF1bHQnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1
Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdEZWNsYXJhdGlvbiBpbnNpZGUgc3dpdGNoIGRlZmF1
bHQgY2FzZSBzaG91bGQgd29yay4nLAorICByZW5kZXI6IHRydWUKK30sCit7CisgIGZTaGFkZXJJ
ZDogJ2ZzaGFkZXJEZWNsYXJhdGlvbkluc2lkZVN3aXRjaExpdGVyYWwnLAorICBmU2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdEZWNsYXJhdGlv
biBpbnNpZGUgc3dpdGNoIHdpdGggbGl0ZXJhbCB2YWx1ZSBzaG91bGQgd29yay4nLAorICByZW5k
ZXI6IHRydWUKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJEZWNsYXJhdGlvbkluc2lkZVN3
aXRjaExpdGVyYWxEZWZhdWx0JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNj
ZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnRGVjbGFyYXRpb24gaW5zaWRlIHN3aXRjaCB3aXRoIGxp
dGVyYWwgdmFsdWUgYW5kIGRlZmF1bHQgY2FzZSBzaG91bGQgd29yay4nLAorICByZW5kZXI6IHRy
dWUKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJEZWNsYXJhdGlvbkluc2lkZVN3aXRjaFNj
b3BlJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBw
YXNzTXNnOiAnRGVjbGFyYXRpb24gaW5zaWRlIHN3aXRjaCBzaG91bGQgYmUgc2NvcGVkIHVudGls
IHRoZSBlbmQgb2YgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuJywKKyAgcmVuZGVyOiB0cnVlCit9LAor
eworICBmU2hhZGVySWQ6ICdmc2hhZGVyRmFsbFRocm91Z2hBbGwnLAorICBmU2hhZGVyU3VjY2Vz
czogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdGYWxsaW5nIHRocm91
Z2ggYWxsIGNhc2VzIGluIHN3aXRjaC9jYXNlIHNob3VsZCB3b3JrLicsCisgIHJlbmRlcjogdHJ1
ZQorfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckVtcHR5U3dpdGNoU3RhdGVtZW50JywKKyAg
ZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAn
RW1wdHkgc3dpdGNoIHN0YXRlbWVudHMgYXJlIHZhbGlkLicKK30sCit7CisgIGZTaGFkZXJJZDog
J2ZzaGFkZXJMYXN0Q2FzZUhhc0VtcHR5RGVjbGFyYXRpb24nLAorICBmU2hhZGVyU3VjY2Vzczog
dHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdFbXB0eSBkZWNsYXJhdGlv
biBzaG91bGQgY291bnQgYXMgYSBzdGF0ZW1lbnQgZm9yIHRoZSBwdXJwb3NlcyBvZiBzd2l0Y2gg
c3RhdGVtZW50IHZhbGlkYXRpb24uJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckxhc3RD
YXNlSGFzRW1wdHlCbG9jaycsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vz
czogdHJ1ZSwKKyAgcGFzc01zZzogJ0VtcHR5IGJsb2NrIHNob3VsZCBjb3VudCBhcyBhIHN0YXRl
bWVudCBmb3IgdGhlIHB1cnBvc2VzIG9mIHN3aXRjaCBzdGF0ZW1lbnQgdmFsaWRhdGlvbi4nCit9
LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVyTGFzdENhc2VIYXNDb25zdGFudFN0YXRlbWVudCcs
CisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01z
ZzogJ0NvbnN0YW50IHN0YXRlbWVudCBzaG91bGQgY291bnQgYXMgYSBzdGF0ZW1lbnQgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBzd2l0Y2ggc3RhdGVtZW50IHZhbGlkYXRpb24uJworfSwKK3sKKyAgZlNo
YWRlcklkOiAnZnNoYWRlckxhc3RDYXNlSGFzRW1wdHlTdGF0ZW1lbnQnLAorICBmU2hhZGVyU3Vj
Y2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdFbXB0eSBzdGF0
ZW1lbnQgc2hvdWxkIGNvdW50IGFzIGEgc3RhdGVtZW50IGZvciB0aGUgcHVycG9zZXMgb2Ygc3dp
dGNoIHN0YXRlbWVudCB2YWxpZGF0aW9uLicKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJD
YXNlSW5zaWRlQmxvY2snLAorICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICdD
YXNlIHN0YXRlbWVudHMgbXVzdCBub3QgYmUgbmVzdGVkIGluc2lkZSBibG9ja3MuJworfQorXSwg
Mik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3Rl
eHR1cmUtb2Zmc2V0LW5vbi1jb25zdGFudC1vZmZzZXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy90ZXh0dXJlLW9m
ZnNldC1ub24tY29uc3RhbnQtb2Zmc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZkNDgzMTQwZGIxMTM1
MTliYzZjOTFjNzdkZTYyZjAxODIxMzhmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy90ZXh0
dXJlLW9mZnNldC1ub24tY29uc3RhbnQtb2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wg
dGV4dHVyZSBvZmZzZXQgd2l0aCBub24tY29uc3RhbnQgb2Zmc2V0IHRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVGV4dHVyZU9mZnNldCIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOwordW5pZm9ybSBzYW1wbGVyMkQgdV9zYW1wbGVy
OwordW5pZm9ybSB2ZWMyIHVfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpdmVjMiBv
ZmZzZXQgPSBpdmVjMigwKTsKKyAgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlT2Zmc2V0KHVfc2Ft
cGxlciwgdV90ZXhDb29yZCwgb2Zmc2V0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNo
YWRlclRleHR1cmVQcm9qT2Zmc2V0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29s
b3I7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3NhbXBsZXI7Cit1bmlmb3JtIHZlYzQgdV90ZXhDb29y
ZDsKKwordm9pZCBtYWluKCkgeworICAgIGl2ZWMyIG9mZnNldCA9IGl2ZWMyKDApOworICAgIG15
X0ZyYWdDb2xvciA9IHRleHR1cmVQcm9qT2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29yZCwgb2Zm
c2V0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclRleHR1cmVMb2RPZmZzZXQi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gc2FtcGxlcjJE
IHVfc2FtcGxlcjsKK3VuaWZvcm0gdmVjMiB1X3RleENvb3JkOwordW5pZm9ybSBmbG9hdCB1X2xv
ZDsKKwordm9pZCBtYWluKCkgeworICAgIGl2ZWMyIG9mZnNldCA9IGl2ZWMyKDApOworICAgIG15
X0ZyYWdDb2xvciA9IHRleHR1cmVMb2RPZmZzZXQodV9zYW1wbGVyLCB1X3RleENvb3JkLCB1X2xv
ZCwgb2Zmc2V0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclRleHR1cmVQcm9q
TG9kT2Zmc2V0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3Jt
IHNhbXBsZXIyRCB1X3NhbXBsZXI7Cit1bmlmb3JtIHZlYzQgdV90ZXhDb29yZDsKK3VuaWZvcm0g
ZmxvYXQgdV9sb2Q7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpdmVjMiBvZmZzZXQgPSBpdmVjMigw
KTsKKyAgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlUHJvakxvZE9mZnNldCh1X3NhbXBsZXIsIHVf
dGV4Q29vcmQsIHVfbG9kLCBvZmZzZXQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hh
ZGVyVGV4dHVyZUdyYWRPZmZzZXQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9u
IDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xv
cjsKK3VuaWZvcm0gc2FtcGxlcjJEIHVfc2FtcGxlcjsKK3VuaWZvcm0gdmVjMiB1X3RleENvb3Jk
OwordW5pZm9ybSB2ZWMyIHVfZFBkeDsKK3VuaWZvcm0gdmVjMiB1X2RQZHk7CisKK3ZvaWQgbWFp
bigpIHsKKyAgICBpdmVjMiBvZmZzZXQgPSBpdmVjMigwKTsKKyAgICBteV9GcmFnQ29sb3IgPSB0
ZXh0dXJlR3JhZE9mZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIHVfZFBkeCwgdV9kUGR5LCBv
ZmZzZXQpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVGV4dHVyZVByb2pHcmFk
T2Zmc2V0IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3JtIHNh
bXBsZXIyRCB1X3NhbXBsZXI7Cit1bmlmb3JtIHZlYzQgdV90ZXhDb29yZDsKK3VuaWZvcm0gdmVj
MiB1X2RQZHg7Cit1bmlmb3JtIHZlYzIgdV9kUGR5OworCit2b2lkIG1haW4oKSB7CisgICAgaXZl
YzIgb2Zmc2V0ID0gaXZlYzIoMCk7CisgICAgbXlfRnJhZ0NvbG9yID0gdGV4dHVyZVByb2pHcmFk
T2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29yZCwgdV9kUGR4LCB1X2RQZHksIG9mZnNldCk7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJUZXhlbEZldGNoT2Zmc2V0IiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3NhbXBs
ZXI7Cit1bmlmb3JtIHZlYzIgdV90ZXhDb29yZDsKK3VuaWZvcm0gdmVjMiB1X2xvZDsKKwordm9p
ZCBtYWluKCkgeworICAgIGl2ZWMyIG9mZnNldCA9IGl2ZWMyKDApOworICAgIG15X0ZyYWdDb2xv
ciA9IHRleGVsRmV0Y2hPZmZzZXQodV9zYW1wbGVyLCBpdmVjMih1X3RleENvb3JkKSwgaW50KHVf
bG9kKSwgb2Zmc2V0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJBIG5vbi1jb25zdGFudCBv
ZmZzZXQgaXMgbm90IHZhbGlkIGluIHRleHR1cmUgb2Zmc2V0IGZ1bmN0aW9ucy4iKTsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCit2YXIgc2hhZGVyVGV4dHVyZU9mZnNldFNyYyA9IHd0
dS5nZXRTY3JpcHQoJ2ZzaGFkZXJUZXh0dXJlT2Zmc2V0Jyk7Cit2YXIgc2hhZGVyVGV4dHVyZUxv
ZE9mZnNldFNyYyA9IHd0dS5nZXRTY3JpcHQoJ2ZzaGFkZXJUZXh0dXJlTG9kT2Zmc2V0Jyk7Cit2
YXIgc2hhZGVyVGV4dHVyZUdyYWRPZmZzZXRTcmMgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyVGV4
dHVyZUdyYWRPZmZzZXQnKTsKK3ZhciBzaGFkZXJUZXh0dXJlUHJvak9mZnNldFNyYyA9IHd0dS5n
ZXRTY3JpcHQoJ2ZzaGFkZXJUZXh0dXJlUHJvak9mZnNldCcpOwordmFyIHNoYWRlclRleHR1cmVQ
cm9qTG9kT2Zmc2V0U3JjID0gd3R1LmdldFNjcmlwdCgnZnNoYWRlclRleHR1cmVQcm9qTG9kT2Zm
c2V0Jyk7Cit2YXIgc2hhZGVyVGV4dHVyZVByb2pHcmFkT2Zmc2V0U3JjID0gd3R1LmdldFNjcmlw
dCgnZnNoYWRlclRleHR1cmVQcm9qR3JhZE9mZnNldCcpOwordmFyIHNoYWRlclRleGVsRmV0Y2hP
ZmZzZXRTcmMgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyVGV4ZWxGZXRjaE9mZnNldCcpOworCit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAyKTsKKwor
aWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIlVuYWJsZSB0byBpbml0aWFsaXplIFdlYkdMIDIu
MCBjb250ZXh0LiIpOworfSBlbHNlIHsKKyAgICBHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVz
dHMoWworICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4dHVyZU9mZnNldFNy
YywKKyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBwYXNzTXNnOiAndGV4
dHVyZU9mZnNldCB3aXRoIG5vbi1jb25zdGFudCBvZmZzZXQgaXMgaW52YWxpZCcKKyAgICB9LAor
ICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4dHVyZUxvZE9mZnNldFNyYywK
KyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBwYXNzTXNnOiAndGV4dHVy
ZUxvZE9mZnNldCB3aXRoIG5vbi1jb25zdGFudCBvZmZzZXQgaXMgaW52YWxpZCcKKyAgICB9LAor
ICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4dHVyZUdyYWRPZmZzZXRTcmMs
CisgICAgICAgIGZTaGFkZXJTdWNjZXNzOiBmYWxzZSwKKyAgICAgICAgcGFzc01zZzogJ3RleHR1
cmVHcmFkT2Zmc2V0IHdpdGggbm9uLWNvbnN0YW50IG9mZnNldCBpcyBpbnZhbGlkJworICAgIH0s
CisgICAgeworICAgICAgICBmU2hhZGVyU291cmNlOiBzaGFkZXJUZXh0dXJlUHJvak9mZnNldFNy
YywKKyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBwYXNzTXNnOiAndGV4
dHVyZVByb2pPZmZzZXQgd2l0aCBub24tY29uc3RhbnQgb2Zmc2V0IGlzIGludmFsaWQnCisgICAg
fSwKKyAgICB7CisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHNoYWRlclRleHR1cmVQcm9qTG9kT2Zm
c2V0U3JjLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisgICAgICAgICBwYXNzTXNn
OiAndGV4dHVyZVByb2pMb2RPZmZzZXQgd2l0aCBub24tY29uc3RhbnQgb2Zmc2V0IGlzIGludmFs
aWQnCisgICAgfSwKKyAgICB7CisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHNoYWRlclRleHR1cmVQ
cm9qR3JhZE9mZnNldFNyYywKKyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAg
ICBwYXNzTXNnOiAndGV4dHVyZVByb2pHcmFkT2Zmc2V0IHdpdGggbm9uLWNvbnN0YW50IG9mZnNl
dCBpcyBpbnZhbGlkJworICAgIH0sCisgICAgeworICAgICAgICBmU2hhZGVyU291cmNlOiBzaGFk
ZXJUZXhlbEZldGNoT2Zmc2V0U3JjLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogZmFsc2UsCisg
ICAgICAgIHBhc3NNc2c6ICd0ZXhlbEZldGNoT2Zmc2V0IHdpdGggbm9uLWNvbnN0YW50IG9mZnNl
dCBpcyBpbnZhbGlkJworICAgIH0KKyAgICBdLCAyKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3RleHR1cmUtb2Zmc2V0LW91dC1vZi1yYW5nZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2dsc2wzL3RleHR1cmUtb2Zmc2V0LW91dC1vZi1yYW5nZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5ZTY5OGZiNmVmMjMyYmJiMTQwNTk5MjdlZTQ3MGIzMDE5NmJiODQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZ2xzbDMvdGV4dHVyZS1vZmZzZXQtb3V0LW9mLXJhbmdlLmh0bWwKQEAgLTAsMCArMSwx
MDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPkdMU0wgb3V0LW9mLXJhbmdlIHRleHR1cmUgb2Zmc2V0IHRlc3Q8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVySW52YWxpZE9mZnNldCIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCBhX3Bvc2l0aW9uOworaW4gdmVj
MiBhX2luMDsKK291dCB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIHZfdGV4Q29vcmQgPSBhX2luMDsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckludmFsaWRPZmZzZXQiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2lu
IHZlYzIgdl90ZXhDb29yZDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gc2FtcGxl
cjJEIHVfc2FtcGxlcjsKK3VuaWZvcm0gaW50IHg7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBteV9G
cmFnQ29sb3IgPSB0ZXh0dXJlT2Zmc2V0KHVfc2FtcGxlciwgdl90ZXhDb29yZCwgaXZlYzIoMCwg
JCh5b2Zmc2V0KSkpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIk91dC1vZi1yYW5nZSB0ZXh0
dXJlIG9mZnNldCBzaG91bGQgbm90IGNvbXBpbGUuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKKwordmFyIHZzaGFkZXIgPSB3dHUuZ2V0U2NyaXB0KCd2c2hhZGVySW52YWxpZE9mZnNl
dCcpOwordmFyIGZzaGFkZXJUZW1wbGF0ZSA9IHd0dS5nZXRTY3JpcHQoJ2ZzaGFkZXJJbnZhbGlk
T2Zmc2V0Jyk7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRl
ZmluZWQsIDIpOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiVW5hYmxlIHRvIGluaXRp
YWxpemUgV2ViR0wgMi4wIGNvbnRleHQuIik7Cit9IGVsc2UgeworICAgIHZhciBtaW5PZmZzZXQg
PSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUKTsKKyAgICB2YXIg
bWF4T2Zmc2V0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVCk7
CisKKyAgICB2YXIgc2hhZGVyU3JjVmFsaWRNaW4gPSB3dHUucmVwbGFjZVBhcmFtcyhmc2hhZGVy
VGVtcGxhdGUsIHsneW9mZnNldCc6IG1pbk9mZnNldH0pOworICAgIHZhciBzaGFkZXJTcmNWYWxp
ZE1heCA9IHd0dS5yZXBsYWNlUGFyYW1zKGZzaGFkZXJUZW1wbGF0ZSwgeyd5b2Zmc2V0JzogbWF4
T2Zmc2V0fSk7CisgICAgdmFyIHNoYWRlclNyY0JlbG93TWluID0gd3R1LnJlcGxhY2VQYXJhbXMo
ZnNoYWRlclRlbXBsYXRlLCB7J3lvZmZzZXQnOiAobWluT2Zmc2V0IC0gMSl9KTsKKyAgICB2YXIg
c2hhZGVyU3JjQWJvdmVNYXggPSB3dHUucmVwbGFjZVBhcmFtcyhmc2hhZGVyVGVtcGxhdGUsIHsn
eW9mZnNldCc6IChtYXhPZmZzZXQgKyAxKX0pOworICAgIHZhciBzaGFkZXJTcmNEeW5hbWljID0g
d3R1LnJlcGxhY2VQYXJhbXMoZnNoYWRlclRlbXBsYXRlLCB7J3lvZmZzZXQnOiAneCd9KTsKKwor
ICAgIEdMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5UZXN0cyhbCisgICAgeworICAgICAgICB2U2hh
ZGVyU291cmNlOiB2c2hhZGVyLAorICAgICAgICBmU2hhZGVyU291cmNlOiBzaGFkZXJTcmNWYWxp
ZE1pbiwKKyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGxpbmtTdWNjZXNz
OiB0cnVlLAorICAgICAgICBwYXNzTXNnOiAnTWluaW11bSBpbi1yYW5nZSB0ZXh0dXJlIG9mZnNl
dCBzaG91bGQgY29tcGlsZScKKyAgICB9LAorICAgIHsKKyAgICAgICAgdlNoYWRlclNvdXJjZTog
dnNoYWRlciwKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyU3JjVmFsaWRNYXgsCisgICAg
ICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAg
ICAgICAgcGFzc01zZzogJ01heGltdW0gaW4tcmFuZ2UgdGV4dHVyZSBvZmZzZXQgc2hvdWxkIGNv
bXBpbGUnCisgICAgfSwKKyAgICB7CisgICAgICAgIHZTaGFkZXJTb3VyY2U6IHZzaGFkZXIsCisg
ICAgICAgIGZTaGFkZXJTb3VyY2U6IHNoYWRlclNyY0JlbG93TWluLAorICAgICAgICBmU2hhZGVy
U3VjY2VzczogZmFsc2UsCisgICAgICAgIGxpbmtTdWNjZXNzOiBmYWxzZSwKKyAgICAgICAgcGFz
c01zZzogJ1RleHR1cmUgb2Zmc2V0IGJlbG93IG1pbmltdW0gdmFsaWQgdmFsdWUgc2hvdWxkIG5v
dCBjb21waWxlJworICAgIH0sCisgICAgeworICAgICAgICB2U2hhZGVyU291cmNlOiB2c2hhZGVy
LAorICAgICAgICBmU2hhZGVyU291cmNlOiBzaGFkZXJTcmNBYm92ZU1heCwKKyAgICAgICAgZlNo
YWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAgICAg
IHBhc3NNc2c6ICdUZXh0dXJlIG9mZnNldCBhYm92ZSBtYXhpbXVtIHZhbGlkIHZhbHVlIHNob3Vs
ZCBub3QgY29tcGlsZScKKyAgICB9LAorICAgIHsKKyAgICAgICAgdlNoYWRlclNvdXJjZTogdnNo
YWRlciwKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyU3JjRHluYW1pYywKKyAgICAgICAg
ZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAorICAgICAgICBsaW5rU3VjY2VzczogZmFsc2UsCisgICAg
ICAgIHBhc3NNc2c6ICdEeW5hbWljIHRleHR1cmUgb2Zmc2V0IHNob3VsZCBub3QgY29tcGlsZScK
KyAgICB9CisgICAgXSwgMik7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9nbHNsMy90ZXh0dXJlLW9mZnNldC11bmlmb3JtLXRleHR1cmUtY29vcmRpbmF0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2dsc2wzL3RleHR1cmUtb2Zmc2V0LXVuaWZvcm0tdGV4dHVyZS1jb29yZGluYXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTZjYWY0N2Y0NmJjYTE1MmUxOWY4YmVlZGZhMmUzOGRjMjliN2M1OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy90ZXh0dXJlLW9mZnNldC11bmlmb3JtLXRleHR1cmUt
Y29vcmRpbmF0ZS5odG1sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHRleHR1cmUgb2Zmc2V0IHdpdGgg
dW5pZm9ybSB0ZXh0dXJlIGNvb3JkaW5hdGVzIHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJmc2hhZGVyVGV4dHVyZU9mZnNldCIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yOwordW5pZm9ybSBzYW1wbGVyMkQgdV9zYW1wbGVyOwordW5pZm9ybSB2
ZWMyIHVfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpIHsKKyAgICBteV9GcmFnQ29sb3IgPSB0ZXh0
dXJlT2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29yZCwgaXZlYzIoMCwgMSkpOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVGV4dHVyZVByb2pPZmZzZXQiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gc2FtcGxlcjJEIHVfc2FtcGxlcjsKK3Vu
aWZvcm0gdmVjNCB1X3RleENvb3JkOworCit2b2lkIG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9y
ID0gdGV4dHVyZVByb2pPZmZzZXQodV9zYW1wbGVyLCB1X3RleENvb3JkLCBpdmVjMigwLCAxKSk7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJUZXh0dXJlTG9kT2Zmc2V0IiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3Nh
bXBsZXI7Cit1bmlmb3JtIHZlYzIgdV90ZXhDb29yZDsKK3VuaWZvcm0gZmxvYXQgdV9sb2Q7CisK
K3ZvaWQgbWFpbigpIHsKKyAgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlTG9kT2Zmc2V0KHVfc2Ft
cGxlciwgdV90ZXhDb29yZCwgdV9sb2QsIGl2ZWMyKDAsIDEpKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlclRleHR1cmVQcm9qTG9kT2Zmc2V0IiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQg
dmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3NhbXBsZXI7Cit1bmlmb3Jt
IHZlYzQgdV90ZXhDb29yZDsKK3VuaWZvcm0gZmxvYXQgdV9sb2Q7CisKK3ZvaWQgbWFpbigpIHsK
KyAgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlUHJvakxvZE9mZnNldCh1X3NhbXBsZXIsIHVfdGV4
Q29vcmQsIHVfbG9kLCBpdmVjMigwLCAxKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXJUZXh0dXJlR3JhZE9mZnNldCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNp
b24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yOwordW5pZm9ybSBzYW1wbGVyMkQgdV9zYW1wbGVyOwordW5pZm9ybSB2ZWMyIHVfdGV4Q29v
cmQ7Cit1bmlmb3JtIHZlYzIgdV9kUGR4OwordW5pZm9ybSB2ZWMyIHVfZFBkeTsKKwordm9pZCBt
YWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHRleHR1cmVHcmFkT2Zmc2V0KHVfc2FtcGxlciwg
dV90ZXhDb29yZCwgdV9kUGR4LCB1X2RQZHksIGl2ZWMyKDAsIDEpKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iZnNoYWRlclRleHR1cmVQcm9qR3JhZE9mZnNldCIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yOwordW5pZm9ybSBzYW1wbGVyMkQgdV9zYW1wbGVyOwordW5p
Zm9ybSB2ZWM0IHVfdGV4Q29vcmQ7Cit1bmlmb3JtIHZlYzIgdV9kUGR4OwordW5pZm9ybSB2ZWMy
IHVfZFBkeTsKKwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHRleHR1cmVQcm9q
R3JhZE9mZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIHVfZFBkeCwgdV9kUGR5LCBpdmVjMigw
LCAxKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJUZXhlbEZldGNoT2Zmc2V0
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit1bmlmb3JtIHNhbXBsZXIy
RCB1X3NhbXBsZXI7Cit1bmlmb3JtIHZlYzIgdV90ZXhDb29yZDsKK3VuaWZvcm0gdmVjMiB1X2xv
ZDsKKwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHRleGVsRmV0Y2hPZmZzZXQo
dV9zYW1wbGVyLCBpdmVjMih1X3RleENvb3JkKSwgaW50KHVfbG9kKSwgaXZlYzIoMCwgMSkpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRleHR1cmUgY29vcmRpbmF0ZXMgZXhwcmVzc2VkIGFz
IHVuaWZvcm0gdmFyaWFibGUgc2hvdWxkIG5vdCBjcmFzaCBpbiB0ZXh0dXJlIG9mZnNldCBmdW5j
dGlvbnMuIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKwordmFyIHNoYWRlclRleHR1
cmVPZmZzZXRTcmMgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyVGV4dHVyZU9mZnNldCcpOwordmFy
IHNoYWRlclRleHR1cmVMb2RPZmZzZXRTcmMgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyVGV4dHVy
ZUxvZE9mZnNldCcpOwordmFyIHNoYWRlclRleHR1cmVHcmFkT2Zmc2V0U3JjID0gd3R1LmdldFNj
cmlwdCgnZnNoYWRlclRleHR1cmVHcmFkT2Zmc2V0Jyk7Cit2YXIgc2hhZGVyVGV4dHVyZVByb2pP
ZmZzZXRTcmMgPSB3dHUuZ2V0U2NyaXB0KCdmc2hhZGVyVGV4dHVyZVByb2pPZmZzZXQnKTsKK3Zh
ciBzaGFkZXJUZXh0dXJlUHJvakxvZE9mZnNldFNyYyA9IHd0dS5nZXRTY3JpcHQoJ2ZzaGFkZXJU
ZXh0dXJlUHJvakxvZE9mZnNldCcpOwordmFyIHNoYWRlclRleHR1cmVQcm9qR3JhZE9mZnNldFNy
YyA9IHd0dS5nZXRTY3JpcHQoJ2ZzaGFkZXJUZXh0dXJlUHJvakdyYWRPZmZzZXQnKTsKK3ZhciBz
aGFkZXJUZXhlbEZldGNoT2Zmc2V0U3JjID0gd3R1LmdldFNjcmlwdCgnZnNoYWRlclRleGVsRmV0
Y2hPZmZzZXQnKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgMik7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJVbmFibGUgdG8gaW5p
dGlhbGl6ZSBXZWJHTCAyLjAgY29udGV4dC4iKTsKK30gZWxzZSB7CisgICAgR0xTTENvbmZvcm1h
bmNlVGVzdGVyLnJ1blRlc3RzKFsKKyAgICB7CisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHNoYWRl
clRleHR1cmVPZmZzZXRTcmMsCisgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAg
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgcGFzc01zZzogJ3RleHR1cmVPZmZzZXQgd2l0
aCB1bmlmb3JtIHRleHR1cmUgY29vcmRpbmF0ZXMgc2hvdWxkIG5vdCBjcmFzaCcKKyAgICB9LAor
ICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4dHVyZUxvZE9mZnNldFNyYywK
KyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGxpbmtTdWNjZXNzOiB0cnVl
LAorICAgICAgICBwYXNzTXNnOiAndGV4dHVyZUxvZE9mZnNldCB3aXRoIHVuaWZvcm0gdGV4dHVy
ZSBjb29yZGluYXRlcyBzaG91bGQgbm90IGNyYXNoJworICAgIH0sCisgICAgeworICAgICAgICBm
U2hhZGVyU291cmNlOiBzaGFkZXJUZXh0dXJlR3JhZE9mZnNldFNyYywKKyAgICAgICAgZlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgICBwYXNz
TXNnOiAndGV4dHVyZUdyYWRPZmZzZXQgd2l0aCB1bmlmb3JtIHRleHR1cmUgY29vcmRpbmF0ZXMg
c2hvdWxkIG5vdCBjcmFzaCcKKyAgICB9LAorICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTog
c2hhZGVyVGV4dHVyZVByb2pPZmZzZXRTcmMsCisgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVl
LAorICAgICAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgcGFzc01zZzogJ3RleHR1cmVQ
cm9qT2Zmc2V0IHdpdGggdW5pZm9ybSB0ZXh0dXJlIGNvb3JkaW5hdGVzIHNob3VsZCBub3QgY3Jh
c2gnCisgICAgfSwKKyAgICB7CisgICAgICAgIGZTaGFkZXJTb3VyY2U6IHNoYWRlclRleHR1cmVQ
cm9qTG9kT2Zmc2V0U3JjLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAg
bGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICAgICBwYXNzTXNnOiAndGV4dHVyZVByb2pMb2RPZmZz
ZXQgd2l0aCB1bmlmb3JtIHRleHR1cmUgY29vcmRpbmF0ZXMgc2hvdWxkIG5vdCBjcmFzaCcKKyAg
ICB9LAorICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4dHVyZVByb2pHcmFk
T2Zmc2V0U3JjLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgbGlua1N1
Y2Nlc3M6IHRydWUsCisgICAgICAgIHBhc3NNc2c6ICd0ZXh0dXJlUHJvakdyYWRPZmZzZXQgd2l0
aCB1bmlmb3JtIHRleHR1cmUgY29vcmRpbmF0ZXMgc2hvdWxkIG5vdCBjcmFzaCcKKyAgICB9LAor
ICAgIHsKKyAgICAgICAgZlNoYWRlclNvdXJjZTogc2hhZGVyVGV4ZWxGZXRjaE9mZnNldFNyYywK
KyAgICAgICAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgIGxpbmtTdWNjZXNzOiB0cnVl
LAorICAgICAgICBwYXNzTXNnOiAndGV4ZWxGZXRjaE9mZnNldCB3aXRoIHVuaWZvcm0gdGV4dHVy
ZSBjb29yZGluYXRlcyBzaG91bGQgbm90IGNyYXNoJworICAgIH0KKyAgICBdLCAyKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3RyaWNreS1sb29w
LWNvbmRpdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy90cmlja3ktbG9vcC1jb25kaXRpb25zLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWJmNTdkMWEwMjE3MTQxOGUyNjc3ZTQ2NDU1MGY0M2I4NTljOGVhNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9nbHNsMy90cmlja3ktbG9vcC1jb25kaXRpb25zLmh0bWwKQEAgLTAsMCAr
MSwzMjcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPkdMU0wgdHJpY2t5IGxvb3AgY29uZGl0aW9ucyBhbmQgbG9vcCBleHByZXNzaW9uczwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwhLS0KK1NvbWUgdHJpY2t5IHNoYWRlciBleHByZXNz
aW9ucyBtaWdodCBiZSBzdWJqZWN0IHRvIHN5bnRheCB0cmVlIHRyYW5zZm9ybWF0aW9ucyB0aGF0
IG5lZWQgdG8gY3JlYXRlCituZXcgc3RhdGVtZW50cy4gRW5zdXJlIHRoYXQgdGhlc2UgZXhwcmVz
c2lvbnMgYWxzbyB3b3JrIGluc2lkZSBsb29wIGNvbmRpdGlvbnMgYW5kIGxvb3AgZXhwcmVzc2lv
bnMuCistLT4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0
cmljdCI7CitkZXNjcmlwdGlvbigiSW5kZXhpbmcgY29tcGxleCBhcnJheSBleHByZXNzaW9ucyIp
OworZGVidWcoIiIpOworCisvLyBBbGwgdGhlIHRlbXBsYXRlcyBydW4gdGhlIGdpdmVuIHNlcXVl
bmNlOgorLy8gMS4gbG9vcEV4cHJlc3Npb24gb3IgbG9vcENvbmRpdGlvbgorLy8gMi4gbG9vcENv
bnRlbnRzCisvLyAzLiBCcmVhayBsb29wIGlmIGl0J3MgZG9uZSBsb29wSXRlcmF0aW9ucyBpdGVy
YXRpb25zLCBlbHNlIGdvIGJhY2sgdG8gMS4KKwordmFyIGZvckxvb3BFeHByZXNzaW9uVGVtcGxh
dGUgPSBbCisgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisgICAgJ3ByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OycsCisgICAgJ291dCB2ZWM0IGNvbG9yOycsCisgICAgJyQoZ2xvYmFsU2NvcGVQcmVmaXgp
JywKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyQobWFpblByZWZpeCknLAorICAgICcgIGZv
ciAoaW50IGkgPSAwOyB0cnVlOyAkKGxvb3BFeHByZXNzaW9uKSknLAorICAgICcgIHsnLAorICAg
ICcgICAgKytpOycsCisgICAgJyAgICBpZiAoaSA+IDEpIHsnLAorICAgICcgICAgICAkKGxvb3BD
b250ZW50cyknLAorICAgICcgICAgICBpZiAoaSA+ICQobG9vcEl0ZXJhdGlvbnMpKSB7IGJyZWFr
OyB9JywKKyAgICAnICAgIH0nLAorICAgICcgIH0nLAorICAgICcgIGNvbG9yID0gKCQocGFzc0Nv
bmRpdGlvbikpID8gdmVjNCgwLCAxLjAsIDAsIDEuMCkgOiB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsn
LAorICAgICd9JworXS5qb2luKCdcbicpOworCit2YXIgZm9yTG9vcENvbmRpdGlvblRlbXBsYXRl
ID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsnLAorICAgICdvdXQgdmVjNCBjb2xvcjsnLAorICAgICckKGdsb2JhbFNjb3BlUHJlZml4KScs
CisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICckKG1haW5QcmVmaXgpJywKKyAgICAnICBmb3Ig
KGludCBpID0gMTsgJChsb29wQ29uZGl0aW9uKTsgKytpKScsCisgICAgJyAgeycsCisgICAgJyAg
ICAkKGxvb3BDb250ZW50cyknLAorICAgICcgICAgaWYgKGkgPj0gJChsb29wSXRlcmF0aW9ucykp
IHsgYnJlYWs7IH0nLAorICAgICcgIH0nLAorICAgICcgIGNvbG9yID0gKCQocGFzc0NvbmRpdGlv
bikpID8gdmVjNCgwLCAxLjAsIDAsIDEuMCkgOiB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsnLAorICAg
ICd9JworXS5qb2luKCdcbicpOworCit2YXIgd2hpbGVMb29wQ29uZGl0aW9uVGVtcGxhdGUgPSBb
CisgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisgICAgJ3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oycs
CisgICAgJ291dCB2ZWM0IGNvbG9yOycsCisgICAgJyQoZ2xvYmFsU2NvcGVQcmVmaXgpJywKKyAg
ICAndm9pZCBtYWluKCkgeycsCisgICAgJyQobWFpblByZWZpeCknLAorICAgICcgIGludCBpID0g
MDsnLAorICAgICcgIHdoaWxlICgkKGxvb3BDb25kaXRpb24pKScsCisgICAgJyAgeycsCisgICAg
JyAgICAkKGxvb3BDb250ZW50cyknLAorICAgICcgICAgKytpOycsCisgICAgJyAgICBpZiAoaSA+
PSAkKGxvb3BJdGVyYXRpb25zKSkgeyBicmVhazsgfScsCisgICAgJyAgfScsCisgICAgJyAgY29s
b3IgPSAoJChwYXNzQ29uZGl0aW9uKSkgPyB2ZWM0KDAsIDEuMCwgMCwgMS4wKSA6IHZlYzQoMS4w
LCAwLCAwLCAxLjApOycsCisgICAgJ30nCitdLmpvaW4oJ1xuJyk7CisKK3ZhciBkb1doaWxlTG9v
cENvbmRpdGlvblRlbXBsYXRlID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsnLAorICAgICdvdXQgdmVjNCBjb2xvcjsnLAorICAgICckKGds
b2JhbFNjb3BlUHJlZml4KScsCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICckKG1haW5QcmVm
aXgpJywKKyAgICAnICBpbnQgaSA9IDA7JywKKyAgICAvLyBSdW4gdGhlIGxvb3AgY29uZGl0aW9u
IG9uZSBleHRyYSB0aW1lIHRvIG1ha2UgdGhlIGRpZmZlcmVudCB0ZXN0IHR5cGVzIGJlaGF2ZSB0
aGUgc2FtZQorICAgICcgICQobG9vcENvbmRpdGlvbik7JywKKyAgICAnICBkbyB7JywKKyAgICAn
ICAgICQobG9vcENvbnRlbnRzKScsCisgICAgJyAgICArK2k7JywKKyAgICAnICAgIGlmIChpID49
ICQobG9vcEl0ZXJhdGlvbnMpKSB7IGJyZWFrOyB9JywKKyAgICAnICB9JywKKyAgICAnICB3aGls
ZSAoJChsb29wQ29uZGl0aW9uKSk7JywKKyAgICAnICBjb2xvciA9ICgkKHBhc3NDb25kaXRpb24p
KSA/IHZlYzQoMCwgMS4wLCAwLCAxLjApIDogdmVjNCgxLjAsIDAsIDAsIDEuMCk7JywKKyAgICAn
fScKK10uam9pbignXG4nKTsKKwordmFyIHRlc3REYXRhTGlzdCA9IFsKK3sKKyAgICBkZXNjcmlw
dGlvbjogJ2luZGV4aW5nIGFuIGFycmF5IGFzc2lnbm1lbnQnLAorICAgIGdsb2JhbFNjb3BlUHJl
Zml4OiAnJywKKyAgICBtYWluUHJlZml4OiBbCisgICAgICAgICAgICAnZmxvYXQgYVsyXSA9IGZs
b2F0WzJdKDAuMCwgMC4wKTsnLAorICAgICAgICAgICAgJ2Zsb2F0IGJbMl0gPSBmbG9hdFsyXSgy
LjAsIDEuMCk7JywKKyAgICAgICAgICAgICdmbG9hdCBjID0gMC4wOycKKyAgICAgICAgXS5qb2lu
KCdcbicpLAorICAgIGxvb3BFeHByZXNzaW9uOiAnYyA9IChhID0gYilbMF0nLAorICAgIGxvb3BD
b25kaXRpb246ICdib29sKChjID0gKGEgPSBiKVswXSkgKyAxLjApJywKKyAgICBsb29wQ29udGVu
dHM6ICdiWzBdICs9IDEuMDsnLAorICAgIGxvb3BJdGVyYXRpb25zOiAzLAorICAgIHBhc3NDb25k
aXRpb246ICdhYnMoYyAtIDQuMCkgPCAwLjAxJworfSwKK3sKKyAgICBkZXNjcmlwdGlvbjogJ2lu
ZGV4aW5nIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5JywKKyAgICBnbG9iYWxTY29wZVBy
ZWZpeDogWworICAgICAgICAgICAgJ2ludCBzaWRlRWZmZWN0Q291bnRlciA9IDA7JywKKyAgICAg
ICAgICAgICdmbG9hdFsyXSBmdW5jdGlvblJldHVybkFycmF5KCkgeycsCisgICAgICAgICAgICAn
ICArK3NpZGVFZmZlY3RDb3VudGVyOycsCisgICAgICAgICAgICAnICByZXR1cm4gZmxvYXRbMl0o
ZmxvYXQoc2lkZUVmZmVjdENvdW50ZXIpLCAxLjApOycsCisgICAgICAgICAgICAnfScKKyAgICAg
ICAgXS5qb2luKCdcbicpLAorICAgIG1haW5QcmVmaXg6ICdmbG9hdCBjID0gMC4wOycsCisgICAg
bG9vcEV4cHJlc3Npb246ICdjID0gZnVuY3Rpb25SZXR1cm5BcnJheSgpWzBdJywKKyAgICBsb29w
Q29uZGl0aW9uOiAnYm9vbChjID0gZnVuY3Rpb25SZXR1cm5BcnJheSgpWzBdKScsCisgICAgbG9v
cENvbnRlbnRzOiAnJywKKyAgICBsb29wSXRlcmF0aW9uczogMywKKyAgICBwYXNzQ29uZGl0aW9u
OiAnYWJzKGMgLSAzLjApIDwgMC4wMSAmJiBzaWRlRWZmZWN0Q291bnRlciA9PSAzJworfSwKK3sK
KyAgICBkZXNjcmlwdGlvbjogJ2luZGV4aW5nIGFuIGFycmF5IGNvbnN0cnVjdG9yJywKKyAgICBn
bG9iYWxTY29wZVByZWZpeDogJycsCisgICAgbWFpblByZWZpeDogJ2ludCBjID0gMDsnLAorICAg
IGxvb3BFeHByZXNzaW9uOiAnYyA9IChpbnRbMl0oYyArIDEsIGMgKyAyKSlbMV0nLAorICAgIGxv
b3BDb25kaXRpb246ICdib29sKGMgPSAoaW50WzJdKGMgKyAxLCBjICsgMikpWzFdKScsCisgICAg
bG9vcENvbnRlbnRzOiAnJywKKyAgICBsb29wSXRlcmF0aW9uczogMywKKyAgICBwYXNzQ29uZGl0
aW9uOiAnYyA9PSA2JworfSwKK3sKKyAgICBkZXNjcmlwdGlvbjogJ2luZGV4aW5nIGFuIGFycmF5
IGNvbnN0cnVjdG9yIGluc2lkZSBhIHNlcXVlbmNlIG9wZXJhdG9yJywKKyAgICBnbG9iYWxTY29w
ZVByZWZpeDogWworICAgICAgICAgICAgJ2ludCBzaWRlRWZmZWN0Q291bnRlciA9IDA7JywKKyAg
ICAgICAgICAgICdpbnQgZnVuYygpIHsnLAorICAgICAgICAgICAgJyAgc2lkZUVmZmVjdENvdW50
ZXIrKzsnLAorICAgICAgICAgICAgJyAgcmV0dXJuIHNpZGVFZmZlY3RDb3VudGVyOycsCisgICAg
ICAgICAgICAnfScKKyAgICAgICAgXS5qb2luKCdcbicpLAorICAgIG1haW5QcmVmaXg6ICdpbnQg
YyA9IDA7JywKKyAgICBsb29wRXhwcmVzc2lvbjogJ2MgPSAoZnVuYygpLCAoaW50WzJdKGMgKyAx
LCBjICsgMikpWzFdKScsCisgICAgbG9vcENvbmRpdGlvbjogJ2Jvb2woYyA9IChmdW5jKCksIChp
bnRbMl0oYyArIDEsIGMgKyAyKSlbMV0pKScsCisgICAgbG9vcENvbnRlbnRzOiAnJywKKyAgICBs
b29wSXRlcmF0aW9uczogMywKKyAgICBwYXNzQ29uZGl0aW9uOiAnYyA9PSA2ICYmIHNpZGVFZmZl
Y3RDb3VudGVyID09IDMnCit9LAoreworICAgIGRlc2NyaXB0aW9uOiAnZHluYW1pYyBpbmRleGlu
ZyBvZiBhIHZlY3RvcicsCisgICAgZ2xvYmFsU2NvcGVQcmVmaXg6ICcnLAorICAgIG1haW5QcmVm
aXg6IFsKKyAgICAgICAgICAgICd2ZWM0IHYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7JywK
KyAgICAgICAgICAgICdmbG9hdCBjID0gMC4wOycsCisgICAgICAgICAgICAnaW50IGogPSAwOycK
KyAgICAgICAgXS5qb2luKCdcbicpLAorICAgIGxvb3BFeHByZXNzaW9uOiAnYyA9IHZbal0nLAor
ICAgIGxvb3BDb25kaXRpb246ICdib29sKGMgPSB2W2pdKScsCisgICAgbG9vcENvbnRlbnRzOiAn
KytqOycsCisgICAgbG9vcEl0ZXJhdGlvbnM6IDMsCisgICAgcGFzc0NvbmRpdGlvbjogJ2Ficyhj
IC0gMy4wKSA8IDAuMDEnCit9LAoreworICAgIGRlc2NyaXB0aW9uOiAnc2hvcnQtY2lyY3VpdGlu
ZyBvcGVyYXRvcicsCisgICAgZ2xvYmFsU2NvcGVQcmVmaXg6IFsKKyAgICAgICAgICAgICdpbnQg
c2lkZUVmZmVjdENvdW50ZXIgPSAwOycsCisgICAgICAgICAgICAnYm9vbCBmdW5jKCkgeycsCisg
ICAgICAgICAgICAnICBzaWRlRWZmZWN0Q291bnRlcisrOycsCisgICAgICAgICAgICAnICByZXR1
cm4gc2lkZUVmZmVjdENvdW50ZXIgPiAwOycsCisgICAgICAgICAgICAnfScKKyAgICAgICAgXS5q
b2luKCdcbicpLAorICAgIG1haW5QcmVmaXg6ICcnLAorICAgIGxvb3BFeHByZXNzaW9uOiAnZnVu
YygpICYmIGZ1bmMoKScsCisgICAgbG9vcENvbmRpdGlvbjogJ2Z1bmMoKSAmJiBmdW5jKCknLAor
ICAgIGxvb3BDb250ZW50czogJycsCisgICAgbG9vcEl0ZXJhdGlvbnM6IDMsCisgICAgcGFzc0Nv
bmRpdGlvbjogJ3NpZGVFZmZlY3RDb3VudGVyID09IDYnCit9LAoreworICAgIGRlc2NyaXB0aW9u
OiAnc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvcicsCisgICAgZ2xvYmFsU2NvcGVQcmVmaXg6IFsK
KyAgICAgICAgICAgICdpbnQgc2lkZUVmZmVjdENvdW50ZXIgPSAwOycsCisgICAgICAgICAgICAn
Ym9vbCBmdW5jKCkgeycsCisgICAgICAgICAgICAnICBzaWRlRWZmZWN0Q291bnRlcisrOycsCisg
ICAgICAgICAgICAnICByZXR1cm4gc2lkZUVmZmVjdENvdW50ZXIgPiAwOycsCisgICAgICAgICAg
ICAnfScKKyAgICAgICAgXS5qb2luKCdcbicpLAorICAgIG1haW5QcmVmaXg6ICcnLAorICAgIGxv
b3BFeHByZXNzaW9uOiAnZnVuYygpIHx8IGZ1bmMoKScsCisgICAgbG9vcENvbmRpdGlvbjogJ2Z1
bmMoKSB8fCBmdW5jKCknLAorICAgIGxvb3BDb250ZW50czogJycsCisgICAgbG9vcEl0ZXJhdGlv
bnM6IDMsCisgICAgcGFzc0NvbmRpdGlvbjogJ3NpZGVFZmZlY3RDb3VudGVyID09IDMnCit9LAor
eworICAgIGRlc2NyaXB0aW9uOiAnc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvcicsCisgICAgZ2xv
YmFsU2NvcGVQcmVmaXg6IFsKKyAgICAgICAgICAgICdpbnQgc2lkZUVmZmVjdENvdW50ZXJBID0g
MDsnLAorICAgICAgICAgICAgJ2Jvb2wgZnVuY0EoKSB7JywKKyAgICAgICAgICAgICcgIHNpZGVF
ZmZlY3RDb3VudGVyQSsrOycsCisgICAgICAgICAgICAnICByZXR1cm4gc2lkZUVmZmVjdENvdW50
ZXJBID4gMTsnLAorICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJ2ludCBzaWRlRWZmZWN0
Q291bnRlckIgPSAwOycsCisgICAgICAgICAgICAnYm9vbCBmdW5jQigpIHsnLAorICAgICAgICAg
ICAgJyAgc2lkZUVmZmVjdENvdW50ZXJCKys7JywKKyAgICAgICAgICAgICcgIHJldHVybiBzaWRl
RWZmZWN0Q291bnRlckIgPiAwOycsCisgICAgICAgICAgICAnfScKKyAgICAgICAgXS5qb2luKCdc
bicpLAorICAgIG1haW5QcmVmaXg6ICcnLAorICAgIGxvb3BFeHByZXNzaW9uOiAnZnVuY0EoKSA/
IHRydWUgOiBmdW5jQigpJywKKyAgICBsb29wQ29uZGl0aW9uOiAnZnVuY0EoKSA/IHRydWUgOiBm
dW5jQigpJywKKyAgICBsb29wQ29udGVudHM6ICcnLAorICAgIGxvb3BJdGVyYXRpb25zOiAzLAor
ICAgIHBhc3NDb25kaXRpb246ICdzaWRlRWZmZWN0Q291bnRlckEgPT0gMyAmJiBzaWRlRWZmZWN0
Q291bnRlckIgPT0gMScKK30sCit7CisgICAgZGVzY3JpcHRpb246ICdoaWdoLXByZWNpc2lvbiBj
b25zdGFudCcsCisgICAgZ2xvYmFsU2NvcGVQcmVmaXg6IFsKKyAgICAgICAgICAgICdjb25zdCBo
aWdocCBmbG9hdCBmID0gMjA0OC41OycsCisgICAgICAgICAgICAndW5pZm9ybSBtZWRpdW1wIGZs
b2F0IHVfemVybzsnCisgICAgICAgIF0uam9pbignXG4nKSwKKyAgICBtYWluUHJlZml4OiAnZmxv
YXQgYyA9IDAuMDsnLAorICAgIGxvb3BFeHByZXNzaW9uOiAnYyA9IGZyYWN0KHVfemVybyArIGYp
JywKKyAgICBsb29wQ29uZGl0aW9uOiAnYm9vbChjID0gZnJhY3QodV96ZXJvICsgZikpJywKKyAg
ICBsb29wQ29udGVudHM6ICcnLAorICAgIGxvb3BJdGVyYXRpb25zOiAzLAorICAgIHBhc3NDb25k
aXRpb246ICdhYnMoYyAtIDAuNSkgPCAwLjAxJworfSwKK3sKKyAgICBkZXNjcmlwdGlvbjogJ2wt
dmFsdWUgaW5kZXhpbmcgc2lkZSBlZmZlY3RzIGNvbWJpbmVkIHdpdGggc3RhdGljIGluZGV4aW5n
IG9mIGEgdmVjdG9yJywKKyAgICBnbG9iYWxTY29wZVByZWZpeDogWworICAgICAgICAgICAgJ2lu
dCBzaWRlRWZmZWN0Q291bnRlciA9IDA7JywKKyAgICAgICAgICAgICdpbnQgZnVuYygpIHsnLAor
ICAgICAgICAgICAgJyAgc2lkZUVmZmVjdENvdW50ZXIrKzsnLAorICAgICAgICAgICAgJyAgcmV0
dXJuIHNpZGVFZmZlY3RDb3VudGVyID4gMSA/IDEgOiAwOycsCisgICAgICAgICAgICAnfScKKyAg
ICAgICAgXS5qb2luKCdcbicpLAorICAgIG1haW5QcmVmaXg6IFsKKyAgICAgICAgICAgICd2ZWM0
WzJdIFY7JywKKyAgICAgICAgICAgICdWWzBdID0gdmVjNCgxLjApOycsCisgICAgICAgICAgICAn
VlsxXSA9IHZlYzQoMy4wKTsnCisgICAgICAgIF0uam9pbignXG4nKSwKKyAgICBsb29wRXhwcmVz
c2lvbjogJ1ZbZnVuYygpXVswXSsrJywKKyAgICBsb29wQ29uZGl0aW9uOiAnYm9vbChWW2Z1bmMo
KV1bMF0rKyknLAorICAgIGxvb3BDb250ZW50czogJycsCisgICAgbG9vcEl0ZXJhdGlvbnM6IDMs
CisgICAgcGFzc0NvbmRpdGlvbjogJ2FicyhWWzBdWzBdIC0gMi4wKSA8IDAuMDEgJiYgYWJzKFZb
MV1bMF0gLSA1LjApIDwgMC4wMSAmJiBzaWRlRWZmZWN0Q291bnRlciA9PSAzJworfSwKK3sKKyAg
ICBkZXNjcmlwdGlvbjogJ2wtdmFsdWUgaW5kZXhpbmcgc2lkZSBlZmZlY3RzIGNvbWJpbmVkIHdp
dGggZHluYW1pY2FsbHkgaW5kZXhpbmcgYSB2ZWN0b3InLAorICAgIGdsb2JhbFNjb3BlUHJlZml4
OiBbCisgICAgICAgICAgICAnaW50IHNpZGVFZmZlY3RDb3VudGVyID0gMDsnLAorICAgICAgICAg
ICAgJ3VuaWZvcm0gaW50IHVfemVybzsnLAorICAgICAgICAgICAgJ2ludCBmdW5jKCkgeycsCisg
ICAgICAgICAgICAnICBzaWRlRWZmZWN0Q291bnRlcisrOycsCisgICAgICAgICAgICAnICByZXR1
cm4gc2lkZUVmZmVjdENvdW50ZXIgPiAxID8gMSA6IDA7JywKKyAgICAgICAgICAgICd9JworICAg
ICAgICBdLmpvaW4oJ1xuJyksCisgICAgbWFpblByZWZpeDogWworICAgICAgICAgICAgJ3ZlYzRb
Ml0gVjsnLAorICAgICAgICAgICAgJ1ZbMF0gPSB2ZWM0KDEuMCk7JywKKyAgICAgICAgICAgICdW
WzFdID0gdmVjNCgzLjApOycKKyAgICAgICAgXS5qb2luKCdcbicpLAorICAgIGxvb3BFeHByZXNz
aW9uOiAnVltmdW5jKCldW3VfemVybyArIDFdKysnLAorICAgIGxvb3BDb25kaXRpb246ICdib29s
KFZbZnVuYygpXVt1X3plcm8gKyAxXSsrKScsCisgICAgbG9vcENvbnRlbnRzOiAnJywKKyAgICBs
b29wSXRlcmF0aW9uczogMywKKyAgICBwYXNzQ29uZGl0aW9uOiAnYWJzKFZbMF1bMV0gLSAyLjAp
IDwgMC4wMSAmJiBhYnMoVlsxXVsxXSAtIDUuMCkgPCAwLjAxICYmIHNpZGVFZmZlY3RDb3VudGVy
ID09IDMnCit9CitdOworCit2YXIgdGVzdHMgPSBbXTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOworCitmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhTGlzdC5sZW5ndGg7ICsraSkgewor
ICAgIHZhciB0ZXN0RGF0YSA9IHRlc3REYXRhTGlzdFtpXTsKKyAgICBpZiAoJ2xvb3BDb25kaXRp
b24nIGluIHRlc3REYXRhKSB7CisgICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgZlNo
YWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMoZm9yTG9vcENvbmRpdGlvblRlbXBsYXRlLCB0
ZXN0RGF0YSksCisgICAgICAgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgICAg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICAgICAgICAgICAgcGFzc01zZzogJ1Rlc3QgJyArIHRlc3RE
YXRhLmRlc2NyaXB0aW9uICsgJzogJyArIHRlc3REYXRhLmxvb3BDb25kaXRpb24gKyAnIGluc2lk
ZSBhIGZvciBsb29wIGNvbmRpdGlvbicKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3RzLnB1c2go
eworICAgICAgICAgICAgZlNoYWRlclNvdXJjZTogd3R1LnJlcGxhY2VQYXJhbXMod2hpbGVMb29w
Q29uZGl0aW9uVGVtcGxhdGUsIHRlc3REYXRhKSwKKyAgICAgICAgICAgIGZTaGFkZXJTdWNjZXNz
OiB0cnVlLAorICAgICAgICAgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgICBwYXNz
TXNnOiAnVGVzdCAnICsgdGVzdERhdGEuZGVzY3JpcHRpb24gKyAnOiAnICsgdGVzdERhdGEubG9v
cENvbmRpdGlvbiArICcgaW5zaWRlIGEgd2hpbGUgbG9vcCBjb25kaXRpb24nCisgICAgICAgIH0p
OworICAgICAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgICAgIGZTaGFkZXJTb3VyY2U6IHd0dS5y
ZXBsYWNlUGFyYW1zKGRvV2hpbGVMb29wQ29uZGl0aW9uVGVtcGxhdGUsIHRlc3REYXRhKSwKKyAg
ICAgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgICAgbGlua1N1Y2Nlc3M6
IHRydWUsCisgICAgICAgICAgICBwYXNzTXNnOiAnVGVzdCAnICsgdGVzdERhdGEuZGVzY3JpcHRp
b24gKyAnOiAnICsgdGVzdERhdGEubG9vcENvbmRpdGlvbiArICcgaW5zaWRlIGEgZG8td2hpbGUg
bG9vcCBjb25kaXRpb24nCisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoJ2xvb3BFeHByZXNz
aW9uJyBpbiB0ZXN0RGF0YSkgeworICAgICAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgICAgIGZT
aGFkZXJTb3VyY2U6IHd0dS5yZXBsYWNlUGFyYW1zKGZvckxvb3BFeHByZXNzaW9uVGVtcGxhdGUs
IHRlc3REYXRhKSwKKyAgICAgICAgICAgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAg
ICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgICBwYXNzTXNnOiAnVGVzdCAnICsgdGVz
dERhdGEuZGVzY3JpcHRpb24gKyAnOiAnICsgdGVzdERhdGEubG9vcEV4cHJlc3Npb24gKyAnIGlu
c2lkZSBhIGZvciBsb29wIGV4cHJlc3Npb24nCisgICAgICAgIH0pOworICAgIH0KK30KKworR0xT
TENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKHRlc3RzLCAyKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdWludC1pbnQtc2hpZnQtYnVn
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvZ2xzbDMvdWludC1pbnQtc2hpZnQtYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5ZDI2
NmU3YmYyOGQ0ODljODQyNjI4ZTk5NjFmODhmOGIwY2I3MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9n
bHNsMy91aW50LWludC1zaGlmdC1idWcuaHRtbApAQCAtMCwwICsxLDEwNiBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDIwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VmVyaWZ5ICh1aW50
KGludCkgPj4gMzEpIHdvcmtzIGNvcnJlY3RseSAoQWRyZW5vIGRyaXZlciBidWcpPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi
PiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlci11aW50LTEiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzMgYVBvc2l0aW9uOworZmxhdCBvdXQgaGln
aHAgdWludCB1dmFsdWU7Cit1bmlmb3JtIGhpZ2hwIGludCBpdmFsdWU7CisKK3ZvaWQgbWFpbigp
IHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAxKTsKKyAgICB1dmFsdWUgPSB1
aW50KGl2YWx1ZSkgPj4gMzF1OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXVp
bnQtMSIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitmbGF0IGlu
IGhpZ2hwIHVpbnQgdXZhbHVlOworb3V0IGhpZ2hwIHZlYzQgbXlGcmFnQ29sb3I7CisKK3ZvaWQg
bWFpbigpIHsKKyAgICBpZiAodXZhbHVlID09IDF1KQorICAgICAgICBteUZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBlbHNlCisgICAgICAgIG15RnJhZ0NvbG9yID0g
dmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZz
aGFkZXItc2ltcGxlIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitp
biB2ZWMzIGFQb3NpdGlvbjsKKwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChhUG9zaXRpb24sIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyLXVpbnQt
MiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCit1bmlmb3JtIGhp
Z2hwIGludCBpdmFsdWU7CitvdXQgaGlnaHAgdmVjNCBteUZyYWdDb2xvcjsKKwordm9pZCBtYWlu
KCkgeworICAgIHVpbnQgdXZhbHVlID0gdWludChpdmFsdWUpID4+IDMxdTsKKworICAgIGlmICh1
dmFsdWUgPT0gMXUpCisgICAgICAgIG15RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApOworICAgIGVsc2UKKyAgICAgICAgbXlGcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJWZXJpZnkgKHVpbnQoaW50KSA+PiAz
MSkgd29ya3MgY29ycmVjdGx5Iik7CitkZWJ1ZygiIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
ImNhbnZhcyIsIHVuZGVmaW5lZCwgMik7CisgICAgaWYgKCFnbCkgeworICAgICAgICB0ZXN0RmFp
bGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworCisgICAgdmFyIHRlc3RDYXNlcyA9IFsKKyAgICAg
ICAgeyB2c2hhZGVyOiAidnNoYWRlci11aW50LTEiLCBmc2hhZGVyOiAiZnNoYWRlci11aW50LTEi
LCBkZXNjOiAidmVydGV4IHNoYWRlciB1aW50IiB9LAorICAgICAgICB7IHZzaGFkZXI6ICJ2c2hh
ZGVyLXNpbXBsZSIsIGZzaGFkZXI6ICJmc2hhZGVyLXVpbnQtMiIsIGRlc2M6ICJmcmFnbWVudCBz
aGFkZXIgdWludCIgfSwKKyAgICBdOworCisgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgdGVz
dENhc2VzLmxlbmd0aDsgKytpZHgpIHsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0Q2FzZXNbaWR4
XTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgW3Rlc3QudnNoYWRlciwgdGVzdC5mc2hhZGVyXSwgWyJhUG9zaXRpb24iXSk7
CisgICAgICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbCB0
byBzZXQgdXAgcHJvZ3JhbSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHVu
aWZvcm1Mb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2l2YWx1ZScpOworICAg
ICAgICAgICAgZ2wudW5pZm9ybTFpKHVuaWZvcm1Mb2MsIC0xKTsKKyAgICAgICAgICAgIHd0dS5k
cmF3VW5pdFF1YWQoZ2wpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAw
LCAwLCAyNTVdKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAg
ICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBu
byBlcnJvcnMgZnJvbSB0ZXN0aW5nIik7CisgICAgICAgIH0KKyAgICB9Cit9OworCit0ZXN0KCk7
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy91bmFyeS1taW51cy1vcGVyYXRvci1pbi1k
eW5hbWljLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy91bmFyeS1taW51cy1vcGVyYXRvci1pbi1keW5hbWlj
LWxvb3AuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDBhY2JlNmRlMWJkZTMyMzk3YzIwNzU3ZmQwOWYyNmE4
NWJiN2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWlu
LWR5bmFtaWMtbG9vcC5odG1sCkBAIC0wLDAgKzEsMjQ4IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlVuYXJ5IG1pbnVzIG9wZXJhdG9y
IG9uIGludCBvciB1aW50IHZhcmlhYmxlcyBpbiBhIGR5bmFtaWMgbG9vcCBpbiB2ZXJ0ZXggc2hh
ZGVyIHNob3VsZCB3b3JrPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgc3R5bGU9ImJvcmRlcjogbm9uZTsiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEyOCI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKworPHNjcmlwdCBpZD0ic2hhZGVyLXZzLWludCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gaGlnaHAgdmVjNCBwb3M7CisKK3VuaWZvcm0gaW50IHVf
b25lOwordW5pZm9ybSBpbnQgdV90d287Cit1bmlmb3JtIGludCB1X3RocmVlOworCitvdXQgbWVk
aXVtcCB2ZWM0IHZfY29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGludCBhcnJheVszXTsKKyAgYXJy
YXlbMF0gPSB1X29uZTsgLy8gYXJyYXlbMF0gc2hvdWxkIGJlIDEKKyAgYXJyYXlbMV0gPSAtdV90
d287IC8vIGFycmF5WzFdIHNob3VsZCBiZSAtMgorICBhcnJheVsyXSA9IHVfdGhyZWU7IC8vIGFy
cmF5WzJdIHNob3VsZCBiZSAzCisgIGludCByZXN1bHQgPSAwOworICBmb3IgKGludCBpID0gMDsg
aSA8IHVfdGhyZWU7IGkrKykgeworICAgIHJlc3VsdCArPSBhcnJheVtpXTsKKyAgfQorICB2X2Nv
bG9yID0gKHJlc3VsdCA9PSAyKSA/IHZlYzQoMCwgMSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEp
OworICBnbF9Qb3NpdGlvbiA9IHBvczsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaGFk
ZXItdnMtdWludCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4g
aGlnaHAgdmVjNCBwb3M7CisKK3VuaWZvcm0gdWludCB1X29uZTsKK3VuaWZvcm0gdWludCB1X3R3
bzsKK3VuaWZvcm0gdWludCB1X3RocmVlOworCitvdXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7Cit2
b2lkIG1haW4oKSB7CisgIHVpbnQgYXJyYXlbM107CisgIGFycmF5WzBdID0gdV9vbmU7IC8vIGFy
cmF5WzBdIHNob3VsZCBiZSAxdQorICBhcnJheVsxXSA9IC11X3R3bzsgLy8gYXJyYXlbMV0gc2hv
dWxkIGJlIC0ydQorICBhcnJheVsyXSA9IHVfdGhyZWU7IC8vIGFycmF5WzJdIHNob3VsZCBiZSAz
dQorICB1aW50IHJlc3VsdCA9IDB1OworICBmb3IgKHVpbnQgaSA9IDB1OyBpIDwgdV90aHJlZTsg
aSsrKSB7CisgICAgcmVzdWx0ICs9IGFycmF5W2ldOworICB9CisgIHZfY29sb3IgPSAocmVzdWx0
ID09IDJ1KSA/IHZlYzQoMCwgMSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEpOworICBnbF9Qb3Np
dGlvbiA9IHBvczsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaGFkZXItdnMtaW50LW11
bHRpcGxlLWJyYWNrZXRzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVz
CitpbiBoaWdocCB2ZWM0IHBvczsKKwordW5pZm9ybSBpbnQgdV9vbmU7Cit1bmlmb3JtIGludCB1
X3R3bzsKK3VuaWZvcm0gaW50IHVfdGhyZWU7CisKK291dCBtZWRpdW1wIHZlYzQgdl9jb2xvcjsK
K3ZvaWQgbWFpbigpIHsKKyAgaW50IGFycmF5WzNdOworICBhcnJheVswXSA9IHVfb25lOyAvLyBh
cnJheVswXSBzaG91bGQgYmUgMQorICBhcnJheVsxXSA9IC0oLSgtdV90d28gKyAxKSArIDEpOyAv
LyBhcnJheVsxXSBzaG91bGQgYmUgLTIKKyAgYXJyYXlbMl0gPSB1X3RocmVlOyAvLyBhcnJheVsy
XSBzaG91bGQgYmUgMworICBpbnQgcmVzdWx0ID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1
X3RocmVlOyBpKyspIHsKKyAgICByZXN1bHQgKz0gYXJyYXlbaV07CisgIH0KKyAgdl9jb2xvciA9
IChyZXN1bHQgPT0gMikgPyB2ZWM0KDAsIDEsIDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTsKKyAg
Z2xfUG9zaXRpb24gPSBwb3M7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ic2hhZGVyLXZz
LXVpbnQtbXVsdGlwbGUtYnJhY2tldHMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lv
biAzMDAgZXMKK2luIGhpZ2hwIHZlYzQgcG9zOworCit1bmlmb3JtIHVpbnQgdV9vbmU7Cit1bmlm
b3JtIHVpbnQgdV90d287Cit1bmlmb3JtIHVpbnQgdV90aHJlZTsKKworb3V0IG1lZGl1bXAgdmVj
NCB2X2NvbG9yOwordm9pZCBtYWluKCkgeworICB1aW50IGFycmF5WzNdOworICBhcnJheVswXSA9
IHVfb25lOyAvLyBhcnJheVswXSBzaG91bGQgYmUgMXUKKyAgYXJyYXlbMV0gPSAtKC0oLXVfdHdv
ICsgMXUpICsgMXUpOyAvLyBhcnJheVsxXSBzaG91bGQgYmUgLTJ1CisgIGFycmF5WzJdID0gdV90
aHJlZTsgLy8gYXJyYXlbMl0gc2hvdWxkIGJlIDN1CisgIHVpbnQgcmVzdWx0ID0gMHU7CisgIGZv
ciAodWludCBpID0gMHU7IGkgPCB1X3RocmVlOyBpKyspIHsKKyAgICByZXN1bHQgKz0gYXJyYXlb
aV07CisgIH0KKyAgdl9jb2xvciA9IChyZXN1bHQgPT0gMnUpID8gdmVjNCgwLCAxLCAwLCAxKSA6
IHZlYzQoMSwgMCwgMCwgMSk7CisgIGdsX1Bvc2l0aW9uID0gcG9zOworfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQgaWQ9InNoYWRlci12cy1pbnQtaW1wbGljaXQtdW5hcnktbWludXMiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIGhpZ2hwIHZlYzQgcG9zOworCit1
bmlmb3JtIGludCB1X29uZTsKK3VuaWZvcm0gaW50IHVfdHdvOwordW5pZm9ybSBpbnQgdV90aHJl
ZTsKKworb3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9yOwordm9pZCBtYWluKCkgeworICBpbnQgYXJy
YXlbM107CisgIGFycmF5WzBdID0gdV9vbmU7IC8vIGFycmF5WzBdIHNob3VsZCBiZSAxCisgIGFy
cmF5WzFdID0gMSAtIHVfdHdvOworICBhcnJheVsyXSA9IHVfdGhyZWU7IC8vIGFycmF5WzJdIHNo
b3VsZCBiZSAzCisgIGludCByZXN1bHQgPSAwOworICBhcnJheVsxXSAtPSAxOyAvLyBhcnJheVsx
XSBzaG91bGQgYmUgLXVfdHdvID09IC0yCisgIGZvciAoaW50IGkgPSAwOyBpIDwgdV90aHJlZTsg
aSsrKSB7CisgICAgcmVzdWx0ICs9IGFycmF5W2ldOworICB9CisgIHZfY29sb3IgPSAocmVzdWx0
ID09IDIpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7CisgIGdsX1Bvc2l0
aW9uID0gcG9zOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci12cy11aW50LWlt
cGxpY2l0LXVuYXJ5LW1pbnVzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCitpbiBoaWdocCB2ZWM0IHBvczsKKwordW5pZm9ybSB1aW50IHVfb25lOwordW5pZm9ybSB1
aW50IHVfdHdvOwordW5pZm9ybSB1aW50IHVfdGhyZWU7CisKK291dCBtZWRpdW1wIHZlYzQgdl9j
b2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgdWludCBhcnJheVszXTsKKyAgYXJyYXlbMF0gPSB1X29u
ZTsgLy8gYXJyYXlbMF0gc2hvdWxkIGJlIDF1CisgIGFycmF5WzFdID0gMXUgLSB1X3R3bzsKKyAg
YXJyYXlbMl0gPSB1X3RocmVlOyAvLyBhcnJheVsyXSBzaG91bGQgYmUgM3UKKyAgdWludCByZXN1
bHQgPSAwdTsKKyAgYXJyYXlbMV0gLT0gMXU7IC8vIGFycmF5WzFdIHNob3VsZCBiZSAtdV90d28g
PT0gLTJ1CisgIGZvciAodWludCBpID0gMHU7IGkgPCB1X3RocmVlOyBpKyspIHsKKyAgICByZXN1
bHQgKz0gYXJyYXlbaV07CisgIH0KKyAgdl9jb2xvciA9IChyZXN1bHQgPT0gMnUpID8gdmVjNCgw
LCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7CisgIGdsX1Bvc2l0aW9uID0gcG9zOworfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InNoYWRlci1mcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+I3ZlcnNpb24gMzAwIGVzCitpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjsKK291dCBtZWRp
dW1wIHZlYzQgb19jb2xvcjsKKwordm9pZCBtYWluKCkgeworICBvX2NvbG9yID0gdl9jb2xvcjsK
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiB0ZXN0
KCkgeworICBkZXNjcmlwdGlvbigpOworICBkZWJ1ZygiVGhpcyB0ZXN0IGV4cG9zZXMgYW4gSW50
ZWwgZHJpdmVyIGJ1ZyBvbiBXaW5kb3dzLiIpOworICBkZWJ1ZygiIik7CisKKyAgdmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMi
LCB1bmRlZmluZWQsIDIpOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgMiBj
b250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIHRlc3RO
dW0gPSAwOworICB2YXIgYm9yZGVyID0gMTA7IC8vIGJvcmRlciBiZXR3ZWVuIHRlc3Qgc3F1YXJl
cyBmb3IgdmlzaWJpbGl0eQorICB2YXIgc3F1YXJlU2l6ZSA9IDEyODsKKyAgdmFyIGV4cGVjdGVk
Q29sb3IgPSBbMCwgMjU1LCAwLCAyNTVdOyAvLyBncmVlbgorCisgIGZ1bmN0aW9uIHN1YlRlc3Rf
aW50KG1lc3NhZ2UsIFZlcnRleFNoYWRlcikgeworICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIHZh
ciBzdGFydFggPSAoc3F1YXJlU2l6ZSArIGJvcmRlcikgKiB0ZXN0TnVtOworICAgIHZhciBwcm9n
cmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgIGdsLCBbVmVydGV4U2hhZGVyLCAic2hhZGVy
LWZzIl0sIFsicG9zIl0sIG51bGwsIHRydWUpOworICAgIGdsLnZpZXdwb3J0KHN0YXJ0WCwgMCwg
c3F1YXJlU2l6ZSwgc3F1YXJlU2l6ZSk7CisKKyAgICB2YXIgb25lID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ1X29uZSIpOworICAgIHZhciB0d28gPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInVfdHdvIik7CisgICAgdmFyIHRocmVlID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ1X3RocmVlIik7CisgICAgZ2wudW5pZm9ybTFpKG9uZSwgMSk7Cisg
ICAgZ2wudW5pZm9ybTFpKHR3bywgMik7CisgICAgZ2wudW5pZm9ybTFpKHRocmVlLCAzKTsKKwor
ICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoCisgICAg
ICBnbCwgc3RhcnRYLCAwLCBzcXVhcmVTaXplLCBzcXVhcmVTaXplLAorICAgICAgZXhwZWN0ZWRD
b2xvciwgInNxdWFyZSBzaG91bGQgYmUgZ3JlZW4iLCAxKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
dGVzdE51bSsrOworICB9CisKKyAgZnVuY3Rpb24gc3ViVGVzdF91aW50KG1lc3NhZ2UsIFZlcnRl
eFNoYWRlcikgeworICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIHZhciBzdGFydFggPSAoc3F1YXJl
U2l6ZSArIGJvcmRlcikgKiB0ZXN0TnVtOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbSgKKyAgICAgIGdsLCBbVmVydGV4U2hhZGVyLCAic2hhZGVyLWZzIl0sIFsicG9zIl0sIG51
bGwsIHRydWUpOworICAgIGdsLnZpZXdwb3J0KHN0YXJ0WCwgMCwgc3F1YXJlU2l6ZSwgc3F1YXJl
U2l6ZSk7CisKKyAgICB2YXIgb25lID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1
X29uZSIpOworICAgIHZhciB0d28gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVf
dHdvIik7CisgICAgdmFyIHRocmVlID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1
X3RocmVlIik7CisgICAgZ2wudW5pZm9ybTF1aShvbmUsIDEpOworICAgIGdsLnVuaWZvcm0xdWko
dHdvLCAyKTsKKyAgICBnbC51bmlmb3JtMXVpKHRocmVlLCAzKTsKKworICAgIHd0dS5kcmF3VW5p
dFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoCisgICAgICBnbCwgc3RhcnRYLCAw
LCBzcXVhcmVTaXplLCBzcXVhcmVTaXplLAorICAgICAgZXhwZWN0ZWRDb2xvciwgInNxdWFyZSBz
aG91bGQgYmUgZ3JlZW4iLCAxKTsKKyAgICBkZWJ1ZygiIik7CisgICAgdGVzdE51bSsrOworICB9
CisKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgICAgc3ViVGVzdF9p
bnQoIlRlc3QgdW5hcnkgbWludXMgb3BlcmF0b3Igb24gaW50LiIsICJzaGFkZXItdnMtaW50Iik7
CisgICAgc3ViVGVzdF91aW50KCJUZXN0IHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIHVuc2lnbmVk
IGludC4iLCAic2hhZGVyLXZzLXVpbnQiKTsKKyAgICBzdWJUZXN0X2ludCgiVGVzdCB1bmFyeSBt
aW51cyBvcGVyYXRvciBvbiBpbnQgd2l0aCBtdWx0aXBsZSBicmFja2V0cy4iLCAic2hhZGVyLXZz
LWludC1tdWx0aXBsZS1icmFja2V0cyIpOworICAgIHN1YlRlc3RfdWludCgiVGVzdCB1bmFyeSBt
aW51cyBvcGVyYXRvciBvbiB1bnNpZ25lZCBpbnQgd2l0aCBtdWx0aXBsZSBicmFja2V0cy4iLCAi
c2hhZGVyLXZzLXVpbnQtbXVsdGlwbGUtYnJhY2tldHMiKTsKKyAgICBzdWJUZXN0X2ludCgiVGVz
dCBpbXBsaWNpdCB1bmFyeSBtaW51cyBvcGVyYXRvciBvbiBpbnQuIiwgInNoYWRlci12cy1pbnQt
aW1wbGljaXQtdW5hcnktbWludXMiKTsKKyAgICBzdWJUZXN0X3VpbnQoIlRlc3QgaW1wbGljaXQg
dW5hcnkgbWludXMgb3BlcmF0b3Igb24gdW5zaWduZWQgaW50LiIsICJzaGFkZXItdnMtdWludC1p
bXBsaWNpdC11bmFyeS1taW51cyIpOworICB9Cit9CisKK3Rlc3QoKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworZmluaXNoVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdW5pZm9ybS1ibG9jay1sYXlvdXQtbWF0Y2guaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9nbHNsMy91bmlmb3JtLWJsb2NrLWxheW91dC1tYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MmNl
ZmM4ODIxNzRkN2U3Mjc1MzQxMmMwY2EyOTMwYTE2MGMxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
Z2xzbDMvdW5pZm9ybS1ibG9jay1sYXlvdXQtbWF0Y2guaHRtbApAQCAtMCwwICsxLDU3IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TDIgVW5pZm9ybSBCbG9jayBMYXlvdXQgQmVoYXZpb3IgVGVzdGluZzwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvZ2xzbC1mZWF0
dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9IkVTM1ZlcnRleFNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworbGF5b3V0KHN0ZDE0MCkgdW5p
Zm9ybSBCbG9jaworeworICBoaWdocCB2ZWM0IHZhbDsKK307CisKK3ZvaWQgbWFpbigpIHsKKyAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQodmFsKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iRVMz
RnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBl
cwordW5pZm9ybSBCbG9jaworeworICBoaWdocCB2ZWM0IHZhbDsKK307CitvdXQgaGlnaHAgdmVj
NCBteV9GcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh2
YWwpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5y
dW5UZXN0cyhbCisgIHsKKyAgICB2U2hhZGVySWQ6ICJFUzNWZXJ0ZXhTaGFkZXIiLAorICAgIHZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICAgIGZTaGFkZXJJZDogIkVTM0ZyYWdtZW50U2hhZGVyIiwK
KyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBw
YXNzTXNnOiAiQSB1bmlmb3JtIGJsb2NrJ3MgbGF5b3V0IGRlZmF1bHRzIHRvIHN0ZDE0MCBpZiBu
b3Qgc3BlY2lmaWVkLiIKKyAgfSwKK10sIDIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy91bmlm
b3JtLWJsb2NrLWxheW91dHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy91bmlmb3JtLWJsb2NrLWxheW91dHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZGJmYzY2NGVlNTZlZTk1NTA3NTg5YTQ5N2Y1M2IxYTcwODcxOGU1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3VuaWZvcm0tYmxvY2stbGF5b3V0cy5odG1sCkBAIC0w
LDAgKzEsNjMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPkRpc2FsbG93ZWQgdW5pZm9ybSBibG9jayBsYXlvdXRzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZnNoYWRlclBhY2tlZFVuaWZvcm1CbG9jayIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworbGF5b3V0KHBhY2tlZCkgdW5pZm9ybSBm
b28geworICAgIHZlYzQgYmFyOworfTsKKwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xv
ciA9IGJhcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclNoYXJlZFVuaWZvcm1C
bG9jayIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworbGF5b3V0KHNoYXJl
ZCkgdW5pZm9ybSBmb28geworICAgIHZlYzQgYmFyOworfTsKKwordm9pZCBtYWluKCkgeworICAg
IG15X0ZyYWdDb2xvciA9IGJhcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJXZWJHTCBkb2Vz
IG5vdCBhbGxvdyBpbnRlcmZhY2UgYmxvY2tzIHdpdGggc2hhcmVkIG9yIHBhY2tlZCBsYXlvdXRz
LiIpOworCitHTFNMQ29uZm9ybWFuY2VUZXN0ZXIucnVuVGVzdHMoWworeworICBmU2hhZGVySWQ6
ICdmc2hhZGVyUGFja2VkVW5pZm9ybUJsb2NrJywKKyAgZlNoYWRlclN1Y2Nlc3M6IGZhbHNlLAor
ICBwYXNzTXNnOiAnUGFja2VkIHVuaWZvcm0gYnVmZmVycyBhcmUgZGlzYWxsb3dlZCcKK30sCit7
CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJTaGFyZWRVbmlmb3JtQmxvY2snLAorICBmU2hhZGVyU3Vj
Y2VzczogZmFsc2UsCisgIHBhc3NNc2c6ICdTaGFyZWQgdW5pZm9ybSBidWZmZXJzIGFyZSBkaXNh
bGxvd2VkJworfQorXSwgMik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL2dsc2wzL3VuaWZvcm0tbG9jYXRpb24tbGVuZ3RoLWxpbWl0cy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wz
L3VuaWZvcm0tbG9jYXRpb24tbGVuZ3RoLWxpbWl0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYmI3ODc1
MjlkYzBjNWZmYWRmNTI4NmQyMjM0N2M5M2I2NWE1NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xz
bDMvdW5pZm9ybS1sb2NhdGlvbi1sZW5ndGgtbGltaXRzLmh0bWwKQEAgLTAsMCArMSw4OSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgdW5pZm9ybSBsb2NhdGlvbiBsZW5ndGggdGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiPgorVGhlcmUgaXMgc3VwcG9zZWQgdG8gYmUgYW4gZXhhbXBsZSBkcmF3aW5nIGhlcmUsIGJ1
dCBpdCdzIG5vdCBpbXBvcnRhbnQuCis8L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5W
ZXJpZnkgbGltaXRzIG9uIHRoZSBsZW5ndGhzIG9mIHVuaWZvcm0gbG9jYXRpb25zIHBlciBXZWJH
TCAyIHNwZWMsICJNYXhpbXVtIFVuaWZvcm0gYW5kIEF0dHJpYnV0ZSBMb2NhdGlvbiBMZW5ndGhz
Ii48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0iZ29vZFZlcnRl
eFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorLy8gQSB2ZXJ0ZXggc2hhZGVyIHdo
ZXJlIHRoZSBuZWVkZWQgdW5pZm9ybSBsb2NhdGlvbiBpcyBleGFjdGx5IDEwMjQgY2hhcmFjdGVy
cy4KK3N0cnVjdCBOZXN0aW5nMiB7CisgICAgdmVjNCBpZGVudGlmaWVyMjU0Q2hhcmFjdGVyc0xv
bmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTsKK307CisKK3N0cnVjdCBOZXN0aW5nMSB7CisgICAgTmVzdGluZzIgaWRlbnRpZmllcjI1NkNo
YXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2NzsKK307CisKK3VuaWZvcm0gTmVzdGluZzEgaWRlbnRpZmllcjUxMkNoYXJh
Y3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2NzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU7CisKK3ZvaWQgbWFpbigpIHsK
KyAgICBnbF9Qb3NpdGlvbiA9IGlkZW50aWZpZXI1MTJDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1LmlkZW50aWZpZXIyNTZDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcuaWRlbnRpZmll
cjI1NENoYXJhY3RlcnNMb25nXzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImJhZFZlcnRleFNo
YWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorLy8gQSB2ZXJ0ZXggc2hhZGVyIHdoZXJl
IHRoZSBuZWVkZWQgdW5pZm9ybSBsb2NhdGlvbiBpcyAxMDI1IGNoYXJhY3RlcnMuCitzdHJ1Y3Qg
TmVzdGluZzIgeworICAgIHZlYzQgaWRlbnRpZmllcjI1NUNoYXJhY3RlcnNMb25nXzAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2OworfTsKKwor
c3RydWN0IE5lc3RpbmcxIHsKKyAgICBOZXN0aW5nMiBpZGVudGlmaWVyMjU2Q2hhcmFjdGVyc0xv
bmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3OworfTsKKwordW5pZm9ybSBOZXN0aW5nMSBpZGVudGlmaWVyNTEyQ2hhcmFjdGVyc0xvbmdf
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTsKKwordm9pZCBtYWluKCkgeworICAgIE5lc3Rp
bmcyIHRlbXAgPSBpZGVudGlmaWVyNTEyQ2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NS5pZGVudGlmaWVyMjU2Q2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3OworICAgIGdsX1Bvc2l0aW9u
ID0gdGVtcC5pZGVudGlmaWVyMjU1Q2hhcmFjdGVyc0xvbmdfMDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9ImZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7Cit2YXIgdW5pZm9ybTEwMjROYW1lID0g
ImlkZW50aWZpZXI1MTJDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
LmlkZW50aWZpZXIyNTZDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcuaWRlbnRpZmllcjI1NENoYXJhY3RlcnNMb25n
XzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUi
OwordmFyIHVuaWZvcm0xMDI1TmFtZSA9ICJpZGVudGlmaWVyNTEyQ2hhcmFjdGVyc0xvbmdfMDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NS5pZGVudGlmaWVyMjU2Q2hhcmFjdGVyc0xvbmdfMDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3Lmlk
ZW50aWZpZXIyNTVDaGFyYWN0ZXJzTG9uZ18wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NiI7CisKK2RlYnVnKCJUZXN0IHVuaWZvcm0gbG9jYXRp
b24gdW5kZXJuZWF0aCB0aGUgbGVuZ3RoIGxpbWl0Iik7Cit2YXIgcHJvZ3JhbSA9IHd0dS5sb2Fk
UHJvZ3JhbUZyb21TY3JpcHQoZ2wsICJnb29kVmVydGV4U2hhZGVyIiwgImZyYWdtZW50U2hhZGVy
Iik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NU
QVRVUyknLCAndHJ1ZScpOwordmFyIHVuaWZvcm1Mb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgdW5pZm9ybTEwMjROYW1lKTsKK3Nob3VsZEJlTm9uTnVsbCgndW5pZm9ybUxvYycp
Oword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9ORSk7CisKK2RlYnVnKCJUZXN0IHVuaWZv
cm0gbG9jYXRpb24gb3ZlciB0aGUgbGVuZ3RoIGxpbWl0Iik7Citwcm9ncmFtID0gd3R1LmxvYWRQ
cm9ncmFtRnJvbVNjcmlwdChnbCwgImJhZFZlcnRleFNoYWRlciIsICJmcmFnbWVudFNoYWRlciIp
Oword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9ORSk7CitzaG91bGRCZSgnZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIHVu
aWZvcm1Mb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgdW5pZm9ybTEwMjVOYW1l
KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworc2hvdWxkQmVO
dWxsKCd1bmlmb3JtTG9jJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy91bmlmb3JtLXN0cnVjdC13aXRo
LW5vbi1zcXVhcmUtbWF0cml4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdW5pZm9ybS1zdHJ1Y3Qtd2l0aC1ub24t
c3F1YXJlLW1hdHJpeC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkZjdiNWE4OGY4ZWZiZjg1MDFhNDIxM2Rk
ZDY0YTZjZjI4YWJjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdW5pZm9ybS1zdHJ1Y3Qt
d2l0aC1ub24tc3F1YXJlLW1hdHJpeC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkdMU0wgdW5pZm9ybSBz
dHJ1Y3Qgd2l0aCBhIG5vbi1zcXVhcmUgbWF0cml4IHRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IGlkPSJmc2hhZGVyVW5pZm9ybVN0cnVjdFdpdGhOb25TcXVhcmVNYXRyaXhB
bmRCb29sZWFuIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBoaWdocCBmbG9hdDsKK291dCBoaWdocCB2ZWM0IG15X2NvbG9yOworc3RydWN0IFMK
K3sKKyAgICBtYXQyeDQgbTsKKyAgICBib29sIGI7Cit9OwordW5pZm9ybSBTIHVuaTsKK3ZvaWQg
bWFpbigpCit7CisgICAgbXlfY29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICAgIGlmICghdW5p
LmIpIHsgbXlfY29sb3IuZyA9IDAuMDsgfQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKwor
R0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKFsKK3sKKyAgZlNoYWRlcklkOiAn
ZnNoYWRlclVuaWZvcm1TdHJ1Y3RXaXRoTm9uU3F1YXJlTWF0cml4QW5kQm9vbGVhbicsCisgIGZT
aGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ1Nl
dCBhIGJvb2xlYW4gbWVtYmVyIGluIGEgdW5pZm9ybSBzdHJ1Y3QgdGhhdCBhbHNvIGNvbnRhaW5z
IGEgbm9uLXNxdWFyZS1tYXRyaXgnLAorICB1bmlmb3JtczogW3tuYW1lOiAidW5pLmIiLCBmdW5j
dGlvbk5hbWU6ICJ1bmlmb3JtMWkiLCB2YWx1ZTogMX1dCit9LAorXSwgMik7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3VuaW5pdGlhbGl6ZWQtbG9j
YWwtZ2xvYmFsLXZhcmlhYmxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3VuaW5pdGlhbGl6ZWQtbG9jYWwtZ2xv
YmFsLXZhcmlhYmxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNWJlM2RhMjIwOTc1YmUxYzNiNzQ2YjNl
OTc3YWI3YTUxOWZmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdW5pbml0aWFsaXplZC1s
b2NhbC1nbG9iYWwtdmFyaWFibGVzLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VW5pbml0aWFsaXplZCBs
b2NhbC9nbG9iYWwgdmFyaWFibGVzIHNob3VsZCBiZSBpbml0aWFsaXplZCAoRVNTTCAzLjAwIGNh
c2VzKTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+CisKKzwhLS0KK1RoaXMgdGVzdCBjb3ZlcnMgY2Fz
ZXMgdGhhdCBjYW4ndCBiZSB0ZXN0ZWQgd2l0aCBFU1NMIDEuMDAgZHVlIHRvIEFwcGVuZGl4IEEg
bGltaXRhdGlvbnMuCitUaGUgRVNTTCAxLjAwIGNhc2VzIGFyZSBjb3ZlcmVkIGluIGNvbmZvcm1h
bmNlL2dsc2wvbWlzYy91bmluaXRpYWxpemVkLWxvY2FsLWdsb2JhbC12YXJpYWJsZXMuaHRtbAor
LS0+CisKKzxzY3JpcHQgaWQ9InZzX3VuaW5pdF9pbl9mcmFnIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitpbiB2ZWM0IGFf
cG9zaXRpb247Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwor
fQorPC9zY3JpcHQ+CisKKzwhLS0gVW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYSBmb3IgbG9v
cCBpbml0aWFsaXplciBpbiBmcmFnbWVudCBzaGFkZXIgLS0+Cis8c2NyaXB0IGlkPSJmc191bmlu
aXRfdmFyaWFibGVzX2luX2xvb3BfaW5fZnJhZyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitvdXQgdmVjNCBteV9GcmFn
Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgaW50IGkgPSAwOworICAgIGZvciAodmVjNCB1bmlu
aXQsIHVuaW5pdDJbMl0gPSB2ZWM0WzJdKHVuaW5pdCwgdW5pbml0KTsgaSA8IDE7ICsraSkgewor
ICAgICAgICBteV9GcmFnQ29sb3IgPSB1bmluaXQyWzBdOworICAgIH0KK30KKzwvc2NyaXB0Pgor
Cis8IS0tIFVuaW5pdGlhbGl6ZWQgbmFtZWxlc3Mgc3RydWN0IGluIGEgZm9yIGxvb3AgaW5pdGlh
bGl6ZXIgaW4gZnJhZ21lbnQgc2hhZGVyIC0tPgorPHNjcmlwdCBpZD0iZnNfdW5pbml0X25hbWVs
ZXNzX3N0cnVjdF9pbl9sb29wX2luX2ZyYWciIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2
ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Oworb3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yOwordm9pZCBtYWluKCkgeworICAgIGludCBpID0gMDsKKyAgICBmb3IgKHN0cnVjdCB7IHZl
YzQgdjsgfSB1bmluaXQ7IGkgPCAxOyArK2kpIHsKKyAgICAgICAgbXlfRnJhZ0NvbG9yID0gdW5p
bml0LnY7CisgICAgfQorfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oJ1VuaW5pdGlhbGl6ZWQgbG9jYWwvZ2xvYmFsIHZhcmlh
YmxlcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQ6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTk2NicpOwor
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCJjYW52YXMiLCB1bmRlZmluZWQsIDIpOword3R1LnNldHVwVW5pdFF1YWQoZ2wpOworCit2YXIg
Y2FzZXMgPSBbCisgIHsKKyAgICBuYW1lOiAiVW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYSBm
b3IgbG9vcCBpbml0aWFsaXplciBpbiBmcmFnbWVudCBzaGFkZXIiLAorICAgIHByb2c6IFsidnNf
dW5pbml0X2luX2ZyYWciLCAiZnNfdW5pbml0X3ZhcmlhYmxlc19pbl9sb29wX2luX2ZyYWciXSwK
KyAgfSwKKyAgeworICAgIG5hbWU6ICJVbmluaXRpYWxpemVkIG5hbWVsZXNzIHN0cnVjdCBpbiBh
IGZvciBsb29wIGluaXRpYWxpemVyIGluIGZyYWdtZW50IHNoYWRlciIsCisgICAgcHJvZzogWyJ2
c191bmluaXRfaW5fZnJhZyIsICJmc191bmluaXRfbmFtZWxlc3Nfc3RydWN0X2luX2xvb3BfaW5f
ZnJhZyJdLAorICB9CitdOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBmb3IgKHZhciBpID0g
MDsgaSA8IGNhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKGNh
c2VzW2ldLm5hbWUpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgY2Fz
ZXNbaV0ucHJvZywgWyJhX3Bvc2l0aW9uIl0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgZ2wuY2xl
YXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMF0pOworICB9CisKKyAg
ZGVidWcoIiIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJl
IHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworcnVuVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xz
bDMvdmFsaWQtaW52YXJpYW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdmFsaWQtaW52YXJpYW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTRmZmZhZjA2MTY5ZWMxYTdkYzhiYjFjNzBjYjQ0YWE0ZDA5M2I2MgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9nbHNsMy92YWxpZC1pbnZhcmlhbnQuaHRtbApAQCAtMCwwICsxLDk1IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Q
b3NpdGl2ZSB0ZXN0cyBmb3IgdGhlIHVzZSBvZiB0aGUgaW52YXJpYW50IHF1YWxpZmllciBhbmQg
cHJhZ21hPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2dsc2wt
Y29uZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBp
ZD0idmVydGV4U2hhZGVySW52YXJpYW50IiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNj
cmlwdCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2ludmFyaWFu
dCBvdXQgdmVjNCB2X3Zhcnlpbmc7CisKK3ZvaWQgbWFpbigpCit7CisgICAgdl92YXJ5aW5nID0g
dmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXhTaGFkZXJTZXBhcmF0ZUludmFyaWFudCIg
dHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQiPiN2ZXJzaW9uIDMwMCBlcworcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCB2X3Zhcnlpbmc7CitpbnZhcmlhbnQgdl92
YXJ5aW5nOworCit2b2lkIG1haW4oKQoreworICAgIHZfdmFyeWluZyA9IHZlYzQoMC4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZzsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0idmVydGV4U2hhZGVyR2xvYmFsSW52YXJpYW50IiB0eXBlPSJ0ZXh0L3NvbWV0
aGluZy1ub3QtamF2YXNjcmlwdCI+I3ZlcnNpb24gMzAwIGVzCisjcHJhZ21hIFNUREdMIGludmFy
aWFudChhbGwpCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IHZfdmFyeWluZzsK
Kwordm9pZCBtYWluKCkKK3sKKyAgICB2X3ZhcnlpbmcgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7CisgICAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZyYWdtZW50U2hhZGVyVmFyaWFudCIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFz
Y3JpcHQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2luIHZl
YzQgdl92YXJ5aW5nOworb3V0IHZlYzQgbXlfY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
bXlfY29sb3IgPSB2X3Zhcnlpbmc7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworR0xTTENv
bmZvcm1hbmNlVGVzdGVyLnJ1blRlc3RzKFsKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNo
YWRlckludmFyaWFudCIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklk
OiAiZnJhZ21lbnRTaGFkZXJWYXJpYW50IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAg
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIGlu
dmFyaWFudCB2YXJ5aW5nIGFuZCBmcmFnbWVudCBzaGFkZXIgd2l0aCB2YXJpYW50IHZhcnlpbmcg
bXVzdCBzdWNjZWVkIiwKKyAgfSwKKyAgeworICAgIHZTaGFkZXJJZDogInZlcnRleFNoYWRlckds
b2JhbEludmFyaWFudCIsCisgICAgdlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgZlNoYWRlcklk
OiAiZnJhZ21lbnRTaGFkZXJWYXJpYW50IiwKKyAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAg
ICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgICBwYXNzTXNnOiAidmVydGV4IHNoYWRlciB3aXRoIGlu
dmFyaWFudCAoZ2xvYmFsIHNldHRpbmcpIHZhcnlpbmcgYW5kIGZyYWdtZW50IHNoYWRlciB3aXRo
IHZhcmlhbnQgdmFyeWluZyBtdXN0IHN1Y2NlZWQiLAorICB9LAorICB7CisgICAgdlNoYWRlcklk
OiAidmVydGV4U2hhZGVyU2VwYXJhdGVJbnZhcmlhbnQiLAorICAgIHZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICAgIGZTaGFkZXJJZDogImZyYWdtZW50U2hhZGVyVmFyaWFudCIsCisgICAgZlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgcGFzc01zZzogInZl
cnRleCBzaGFkZXIgd2l0aCBpbnZhcmlhbnQgKHNlcGFyYXRlbHkgc2V0KSB2YXJ5aW5nIGFuZCBm
cmFnbWVudCBzaGFkZXIgd2l0aCB2YXJpYW50IHZhcnlpbmcgbXVzdCBzdWNjZWVkIiwKKyAgfSwK
K10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMv
dmFyeWluZy1zdHJ1Y3QtaW5saW5lLWRlZmluaXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy92YXJ5aW5nLXN0
cnVjdC1pbmxpbmUtZGVmaW5pdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYWMyNDg1ZTFlYjk0MzYy
YTE1Mzg1MjI3NTgwMGZjYTA3NTdjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdmFyeWlu
Zy1zdHJ1Y3QtaW5saW5lLWRlZmluaXRpb24uaHRtbApAQCAtMCwwICsxLDYyIEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHZhcnlp
bmcgc3RydWN0IHdpdGggaW5saW5lIGRlZmluaXRpb24gdGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVy
c2lvbiAzMDAgZXMKKworaW4gdmVjNCB2UG9zaXRpb247CisKK2ZsYXQgb3V0IHN0cnVjdCBTIHsK
KyAgICBpbnQgZmllbGQ7Cit9IHZfczsKKwordm9pZCBtYWluKCkgeworICAgIHZfcy5maWVsZCA9
IDE7CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCitmbGF0IGluIHN0cnVjdCBTIHsKKyAgICBpbnQgZmll
bGQ7Cit9IHZfczsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit2b2lkIG1haW4oKSB7Cisg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxIC0gdl9zLmZpZWxkLCB2X3MuZmllbGQsIDAsIDEpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blJl
bmRlclRlc3RzKFsKK3sKKyAgdlNoYWRlcklkOiAndnNoYWRlcicsCisgIHZTaGFkZXJTdWNjZXNz
OiB0cnVlLAorICBmU2hhZGVySWQ6ICdmc2hhZGVyJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUs
CisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnVmVydGV4IG91dHB1dCBzdHJ1Y3Qg
LyBmcmFnbWVudCBpbnB1dCBzdHJ1Y3Qgd2l0aCBhbiBpbmxpbmUgZGVmaW5pdGlvbiBzaG91bGQg
Y29tcGlsZSBhbmQgbGluaycKK30KK10sIDIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvZ2xzbDMvdmVjdG9yLWR5bmFtaWMtaW5kZXhpbmctbnYtZHJpdmVyLWJ1
Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2dsc2wzL3ZlY3Rvci1keW5hbWljLWluZGV4aW5nLW52LWRyaXZlci1idWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NjdiZmQ5MTVkZGEyYjhkNTA0MGY4MDY4ODA4YjFkZjFhZDFmYWE0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3ZlY3Rvci1keW5hbWljLWluZGV4aW5nLW52LWRyaXZl
ci1idWcuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGR5bmFtaWMgdmVjdG9yIGFuZCBtYXRyaXgg
aW5kZXhpbmcgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1h
bmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXJMVmFsdWVWZWN0b3JCZWluZ0luZGV4ZWRIYXNTaWRlRWZmZWN0cyIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1X3plcm87CisKK2ludCBzaWRl
RWZmZWN0Q291bnRlciA9IDA7CisKK2ludCBmdW5jV2l0aFNpZGVFZmZlY3RzKCkgeworICAgIHNp
ZGVFZmZlY3RDb3VudGVyKys7CisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAg
ICB2ZWM0IFZbMl07CisgICAgVlswXSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKyAgICBW
WzFdID0gdmVjNCg1LjAsIDYuMCwgNy4wLCA4LjApOworICAgIC8vIEluIGNhc2UgdGhpcyBpcyBi
cm9rZW4gZG93biB0byB0d28gZXhwcmVzc2lvbnMgd2hlcmUgb25lIHJlYWRzIFZbZnVuY1dpdGhT
aWRlRWZmZWN0cygpXQorICAgIC8vIGFuZCBhbm90aGVyIHdyaXRlcyBpdCwgaXQgbmVlZHMgdG8g
YmUgbWFkZSBzdXJlIHRoYXQgZnVuY1dpdGhTaWRlRWZmZWN0cygpIG9ubHkgZ2V0cyBjYWxsZWQg
b25jZS4KKyAgICBWW2Z1bmNXaXRoU2lkZUVmZmVjdHMoKV1bdV96ZXJvICsgMV0rKzsKKyAgICB2
ZWM0IGV4cGVjdGVkVjAgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgdmVjNCBleHBl
Y3RlZFYxID0gdmVjNCg1LjAsIDcuMCwgNy4wLCA4LjApOworICAgIGZsb2F0IGYgPSAxLjAgLSBk
aXN0YW5jZShWWzBdLCBleHBlY3RlZFYwKSAtIGRpc3RhbmNlKFZbMV0sIGV4cGVjdGVkVjEpOwor
ICAgIGlmIChzaWRlRWZmZWN0Q291bnRlciAhPSAxKSB7CisgICAgICAgIGYgPSAwLjA7CisgICAg
fQorICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gZiwgZiwgMC4wLCAxLjApOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oIkR5bmFtaWMgaW5kZXhpbmcgb2YgdmVjdG9ycyBhbmQgbWF0cmlj
ZXMgc2hvdWxkIHdvcmsuIik7CisKK2RlYnVnKCJUaGlzIHRlc3QgZXhwb3NlcyBhIE5WaWRpYSBk
cml2ZXIgYnVnIG9uIExpbnV4Iik7CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJU
ZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJMVmFsdWVWZWN0b3JCZWluZ0luZGV4ZWRI
YXNTaWRlRWZmZWN0cycsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2Vzczog
dHJ1ZSwKKyAgcGFzc01zZzogJ0luZGV4IGEgdmVjdG9yIGV4cHJlc3Npb24gdGhhdCBpdHNlbGYg
aGFzIHNpZGUgZWZmZWN0cywgaW4gYW4gbC12YWx1ZScKK30sCitdLCAyKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdmVjdG9yLWR5bmFtaWMtaW5k
ZXhpbmctc3dpenpsZWQtbHZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvdmVjdG9yLWR5bmFtaWMtaW5kZXhp
bmctc3dpenpsZWQtbHZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI4MmQ2ZWQzMGYxMDFlYTYyYTI3
OWIzYzMzYzdjZTI5NDMwZjYzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy92ZWN0b3ItZHlu
YW1pYy1pbmRleGluZy1zd2l6emxlZC1sdmFsdWUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIHN3
aXp6bGVkIHZlY3RvciBsLXZhbHVlIGR5bmFtaWMgaW5kZXhpbmcgdGVzdDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzwhLS0KKyAgVGhlIHNoYWRlciBmaXJzdCBhc3NpZ25zIHYueCB0byB2Lnog
KDEuMCkKKyAgVGhlbiB2LnkgdG8gdi55ICgyLjApCisgIFRoZW4gdi56IHRvIHYueCAoMS4wKQor
LS0+Cis8c2NyaXB0IGlkPSJmc2hhZGVyU3dpenpsZWRMVmFsdWVJbmRleGluZyIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgdmVjMyB2ID0gdmVj
MygxLjAsIDIuMCwgMy4wKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykgeworICAg
ICAgICB2Lnp5eFtpXSA9IHZbaV07CisgICAgfQorICAgIG15X0ZyYWdDb2xvciA9IGRpc3RhbmNl
KHYsIHZlYzMoMS4wLCAyLjAsIDEuMCkpIDwgMC4wMSA/IHZlYzQoMCwgMSwgMCwgMSkgOiB2ZWM0
KDEsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiPgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIkR5bmFtaWMgaW5kZXhpbmcg
b2Ygc3dpenpsZWQgbC12YWx1ZXMgc2hvdWxkIHdvcmsuIik7CisKK0dMU0xDb25mb3JtYW5jZVRl
c3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJTd2l6emxlZExW
YWx1ZUluZGV4aW5nJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0
cnVlLAorICBwYXNzTXNnOiAnSW5kZXggYW4gbC12YWx1ZSBzd2l6emxlZCB2ZWN0b3InCit9LAor
XSwgMik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy92
ZWN0b3ItZHluYW1pYy1pbmRleGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL3ZlY3Rvci1keW5hbWljLWluZGV4
aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmNjA1NzhhZDQxOTkwOWFmMDExZTAxZWMwYTVkOWM0Yjk0
YzVmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy92ZWN0b3ItZHluYW1pYy1pbmRleGluZy5o
dG1sCkBAIC0wLDAgKzEsMzY5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5HTFNMIGR5bmFtaWMgdmVjdG9yIGFuZCBtYXRyaXggaW5kZXhp
bmcgdGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9nbHNsLWNvbmZvcm1hbmNlLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbmRl
eE1hdHJpeFR3aWNlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3Vu
aWZvcm0gaW50IHVfemVybzsKKwordm9pZCBtYWluKCkgeworICAgIG1hdDIgbSA9IG1hdDIoMC4w
LCAwLjAsIDAuMCwgMS4wKTsKKyAgICBmbG9hdCBmID0gbVt1X3plcm8gKyAxXVt1X3plcm8gKyAx
XTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYsIGYsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckluZGV4V2l0aFZhbHVlRnJvbUluZGV4aW5nRXhw
cmVzc2lvbiIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3Jt
IGludCB1X3plcm87CisKK3ZvaWQgbWFpbigpIHsKKyAgICBpdmVjMiBpID0gaXZlYzIoMCwgMik7
CisgICAgdmVjNCB2ID0gdmVjNCgwLjAsIDAuMiwgMS4wLCAwLjQpOworICAgIGZsb2F0IGYgPSB2
W2lbdV96ZXJvICsgMV1dOworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gZiwgZiwgMC4w
LCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVySW5kZXhMVmFsdWUiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSBpbnQgdV96ZXJv
OworCit2b2lkIG1haW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjAp
OworICAgIHZbdV96ZXJvICsgMV0gPSA1LjA7CisgICAgdmVjNCBleHBlY3RlZCA9IHZlYzQoMS4w
LCA1LjAsIDMuMCwgNC4wKTsKKyAgICBmbG9hdCBmID0gMS4wIC0gZGlzdGFuY2UodiwgZXhwZWN0
ZWQpOworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gZiwgZiwgMC4wLCAxLjApOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVySW5kZXhMVmFsdWVXaXRoVmFsdWVGcm9tSW5k
ZXhpbmdFeHByZXNzaW9uIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAg
ZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisK
K3VuaWZvcm0gaW50IHVfemVybzsKKwordm9pZCBtYWluKCkgeworICAgIGl2ZWMyIGkgPSBpdmVj
MigwLCAyKTsKKyAgICB2ZWM0IHYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgdltp
W3VfemVybyArIDFdXSA9IDUuMDsKKyAgICB2ZWM0IGV4cGVjdGVkID0gdmVjNCgxLjAsIDIuMCwg
NS4wLCA0LjApOworICAgIGZsb2F0IGYgPSAxLjAgLSBkaXN0YW5jZSh2LCBleHBlY3RlZCk7Cisg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLSBmLCBmLCAwLjAsIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbmRleEJ1aWx0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSBpbnQg
dV96ZXJvOworCit2b2lkIG1haW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgxLjAsIDIuMCwgMy4w
LCA0LjApOworICAgIG1vZGYoNS41LCB2W3VfemVybyArIDNdKTsKKyAgICB2ZWM0IGV4cGVjdGVk
ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA1LjApOworICAgIGZsb2F0IGYgPSAxLjAgLSBkaXN0YW5j
ZSh2LCBleHBlY3RlZCk7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLSBmLCBmLCAwLjAs
IDEuMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbmRleFVzZXJEZWZpbmVk
RnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFn
Q29sb3I7CisKK3VuaWZvcm0gaW50IHVfemVybzsKKwordm9pZCBmb28ob3V0IGZsb2F0IGYpIHsK
KyAgICBtb2RmKDUuNSwgZik7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgICB2ZWM0IHYgPSB2ZWM0
KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgZm9vKHZbdV96ZXJvICsgM10pOworICAgIHZlYzQg
ZXhwZWN0ZWQgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDUuMCk7CisgICAgZmxvYXQgZiA9IDEuMCAt
IGRpc3RhbmNlKHYsIGV4cGVjdGVkKTsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYs
IGYsIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckluZGV4VXNl
ckRlZmluZWRGdW5jdGlvbkNhbGxJbk91dFBhcmFtZXRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1X3plcm87CisKK3ZvaWQgZm9vKGlub3V0
IGZsb2F0IGYpIHsKKyAgICBmbG9hdCBnID0gZiArIDIuNTsKKyAgICBtb2RmKGcsIGYpOworfQor
Cit2b2lkIG1haW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOwor
ICAgIGZvbyh2W3VfemVybyArIDJdKTsKKyAgICB2ZWM0IGV4cGVjdGVkID0gdmVjNCgxLjAsIDIu
MCwgNS4wLCA0LjApOworICAgIGZsb2F0IGYgPSAxLjAgLSBkaXN0YW5jZSh2LCBleHBlY3RlZCk7
CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLSBmLCBmLCAwLjAsIDEuMCk7Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJJbmRleFdpdGhTaWRlRWZmZWN0cyIgdHlwZT0ieC1z
aGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1X3plcm87CisKK2lu
dCBzaWRlRWZmZWN0Q291bnRlciA9IDA7CisKK2ludCBmdW5jV2l0aFNpZGVFZmZlY3RzKCkgewor
ICAgIHNpZGVFZmZlY3RDb3VudGVyKys7CisgICAgcmV0dXJuIDI7Cit9CisKK3ZvaWQgbWFpbigp
IHsKKyAgICB2ZWM0IHYgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisgICAgdltmdW5jV2l0
aFNpZGVFZmZlY3RzKCldID0gNS4wOworICAgIHZlYzQgZXhwZWN0ZWQgPSB2ZWM0KDEuMCwgMi4w
LCA1LjAsIDQuMCk7CisgICAgZmxvYXQgZiA9IDEuMCAtIGRpc3RhbmNlKHYsIGV4cGVjdGVkKTsK
KyAgICBpZiAoc2lkZUVmZmVjdENvdW50ZXIgIT0gMSkgeworICAgICAgICBmID0gMC4wOworICAg
IH0KKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYsIGYsIDAuMCwgMS4wKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckluZGV4SW5PdXRXaXRoU2lkZUVmZmVjdHMiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSBpbnQgdV96ZXJv
OworCitpbnQgc2lkZUVmZmVjdENvdW50ZXIgPSAwOworCitpbnQgZnVuY1dpdGhTaWRlRWZmZWN0
cygpIHsKKyAgICBzaWRlRWZmZWN0Q291bnRlcisrOworICAgIHJldHVybiAyOworfQorCit2b2lk
IG1haW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworICAgIHZb
ZnVuY1dpdGhTaWRlRWZmZWN0cygpXSsrOworICAgIHZlYzQgZXhwZWN0ZWQgPSB2ZWM0KDEuMCwg
Mi4wLCA0LjAsIDQuMCk7CisgICAgZmxvYXQgZiA9IDEuMCAtIGRpc3RhbmNlKHYsIGV4cGVjdGVk
KTsKKyAgICBpZiAoc2lkZUVmZmVjdENvdW50ZXIgIT0gMSkgeworICAgICAgICBmID0gMC4wOwor
ICAgIH0KKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYsIGYsIDAuMCwgMS4wKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckluZGV4VXNlckRlZmluZWRGdW5jdGlvbkNh
bGxJbk91dFBhcmFtZXRlcldpdGhJbmRleFdpdGhTaWRlRWZmZWN0cyIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworCit1bmlmb3JtIGludCB1X3plcm87CisKK2ludCBzaWRl
RWZmZWN0Q291bnRlciA9IDA7CisKK3ZvaWQgZm9vKGlub3V0IGZsb2F0IGYpIHsKKyAgICBmbG9h
dCBnID0gZiArIDIuNTsKKyAgICBtb2RmKGcsIGYpOworfQorCitpbnQgZnVuY1dpdGhTaWRlRWZm
ZWN0cygpIHsKKyAgICBzaWRlRWZmZWN0Q291bnRlcisrOworICAgIHJldHVybiAyOworfQorCit2
b2lkIG1haW4oKSB7CisgICAgdmVjNCB2ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworICAg
IGZvbyh2W2Z1bmNXaXRoU2lkZUVmZmVjdHMoKV0pOworICAgIHZlYzQgZXhwZWN0ZWQgPSB2ZWM0
KDEuMCwgMi4wLCA1LjAsIDQuMCk7CisgICAgZmxvYXQgZiA9IDEuMCAtIGRpc3RhbmNlKHYsIGV4
cGVjdGVkKTsKKyAgICBpZiAoc2lkZUVmZmVjdENvdW50ZXIgIT0gMSkgeworICAgICAgICBmID0g
MC4wOworICAgIH0KKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCAtIGYsIGYsIDAuMCwgMS4w
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckluZGV4TFZhbHVlV2l0aFVpbnQi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKKwordW5pZm9ybSB1aW50IHVf
emVybzsKKwordm9pZCBtYWluKCkgeworICAgIHZlYzQgdiA9IHZlYzQoMS4wLCAyLjAsIDMuMCwg
NC4wKTsKKyAgICB2W3VfemVyb10gPSA1LjA7CisgICAgdmVjNCBleHBlY3RlZCA9IHZlYzQoNS4w
LCAyLjAsIDMuMCwgNC4wKTsKKyAgICBmbG9hdCBmID0gMS4wIC0gZGlzdGFuY2UodiwgZXhwZWN0
ZWQpOworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wIC0gZiwgZiwgMC4wLCAxLjApOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVySW5kZXhVbmlmb3JtIiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gdmVjNCB1X3plcm9WZWM7Cit1bmlm
b3JtIHVpbnQgdV96ZXJvOworCit2b2lkIG1haW4oKSB7CisgICAgLy8gVGhpcyB0ZXN0IGlzIGp1
c3QgdG8gY2F0Y2ggYSBjcmFzaCBidWcgdGhhdCBvY2N1cnJlZCBpbiBBTkdMRSdzIHdvcmthcm91
bmQuCisgICAgLy8gUmVuZGVyaW5nIHJlc3VsdCBpcyBub3QgbWVhbmluZ2Z1bC4KKyAgICBmbG9h
dCBmID0gdV96ZXJvVmVjW3VfemVyb107CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmLCAxLjAs
IDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlclNlcXVlbmNlRHlu
YW1pY0luZGV4aW5nVmVjdG9yTHZhbHVlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFn
Q29sb3I7Cit1bmlmb3JtIGludCB1X3plcm87CisKK2ludCBzaWRlRWZmZWN0Q291bnRlciA9IDA7
CitmbG9hdCBmdW5jKCkgeworICAgICsrc2lkZUVmZmVjdENvdW50ZXI7CisgICAgcmV0dXJuIC0x
LjA7Cit9CisKK3ZvaWQgbWFpbigpIHsKKyAgICB2ZWM0IHYgPSB2ZWM0KDAuMCwgMi4wLCA0LjAs
IDYuMCk7CisgICAgZmxvYXQgZiA9IChmdW5jKCksICgrK3ZbdV96ZXJvICsgc2lkZUVmZmVjdENv
dW50ZXJdKSk7CisgICAgbXlfRnJhZ0NvbG9yID0gKGFicyhmIC0gMy4wKSA8IDAuMDEgJiYgYWJz
KHZbMV0gLSAzLjApIDwgMC4wMSAmJiBzaWRlRWZmZWN0Q291bnRlciA9PSAxKSA/IHZlYzQoMCwg
MSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJm
c2hhZGVySW5kZXhNYXRyaXhUd2ljZUluTFZhbHVlIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7CisKK3VuaWZvcm0gaW50IHVfemVybzsKKwordm9pZCBtYWluKCkgeworICAg
IG1hdDIgbSA9IG1hdDIoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICBtW3VfemVybyArIDFdW3Vf
emVybyArIDFdID0gZmxvYXQodV96ZXJvICsgMSk7CisgICAgZmxvYXQgZiA9IG1bMV1bMV07Cisg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAgLSBmLCBmLCAwLjAsIDEuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisidXNlIHN0cmljdCI7
CitkZXNjcmlwdGlvbigiRHluYW1pYyBpbmRleGluZyBvZiB2ZWN0b3JzIGFuZCBtYXRyaWNlcyBz
aG91bGQgd29yay4iKTsKKworZGVidWcoIkR5bmFtaWMgaW5kZXhpbmcgb2YgdmVjdG9ycyBhbmQg
bWF0cmljZXMgcmVxdWlyZXMgY29tcGxleCB3b3JrYXJvdW5kcyBvbiBITFNMIGJhY2tlbmRzLiBU
cnkgdG8gdGVzdCBwb3NzaWJsZSBidWdzIHRob3NlIHdvcmthcm91bmRzIG1pZ2h0IGhhdmUuIik7
CisKK0dMU0xDb25mb3JtYW5jZVRlc3Rlci5ydW5SZW5kZXJUZXN0cyhbCit7CisgIGZTaGFkZXJJ
ZDogJ2ZzaGFkZXJJbmRleE1hdHJpeFR3aWNlJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnSW5kZXggbWF0cml4IGFuZCB0aGVuIGlu
ZGV4IHRoZSByZXN1bHRpbmcgdmVjdG9yIGluIHRoZSBzYW1lIGV4cHJlc3Npb24nCit9LAorewor
ICBmU2hhZGVySWQ6ICdmc2hhZGVySW5kZXhXaXRoVmFsdWVGcm9tSW5kZXhpbmdFeHByZXNzaW9u
JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNz
TXNnOiAnSW5kZXggYSB2ZWN0b3Igd2l0aCBhbiBpbmRleCB0aGF0IGlzIHRoZSByZXN1bHQgb2Yg
aW5kZXhpbmcnCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVySW5kZXhMVmFsdWUnLAorICBm
U2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJ
bmRleCBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgYXNzaWdubWVudCcKK30sCit7CisgIGZTaGFk
ZXJJZDogJ2ZzaGFkZXJJbmRleExWYWx1ZVdpdGhWYWx1ZUZyb21JbmRleGluZ0V4cHJlc3Npb24n
LAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NN
c2c6ICdJbmRleCBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgYXNzaWdubWVudCB3aXRoIGFuIGlu
ZGV4IHRoYXQgaXMgdGhlIHJlc3VsdCBvZiBpbmRleGluZycKK30sCit7CisgIGZTaGFkZXJJZDog
J2ZzaGFkZXJJbmRleEJ1aWx0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXInLAorICBmU2hhZGVy
U3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJbmRleCB0
aGUgb3V0IHBhcmFtZXRlciBwYXNzZWQgdG8gYnVpbHQtaW4gbW9kZicKK30sCit7CisgIGZTaGFk
ZXJJZDogJ2ZzaGFkZXJJbmRleFVzZXJEZWZpbmVkRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyJywK
KyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNn
OiAnSW5kZXggYW4gb3V0IHBhcmFtZXRlciBwYXNzZWQgdG8gYW4gdXNlci1kZWZpbmVkIGZ1bmN0
aW9uJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckluZGV4VXNlckRlZmluZWRGdW5jdGlv
bkNhbGxJbk91dFBhcmFtZXRlcicsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3Vj
Y2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0luZGV4IGFuIGlub3V0IHBhcmFtZXRlciBwYXNzZWQg
dG8gYW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9uJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRl
ckluZGV4V2l0aFNpZGVFZmZlY3RzJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtT
dWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnVXNlIGV4cHJlc3Npb24gd2l0aCBzaWRlIGVmZmVj
dHMgYXMgYW4gaW5kZXggb2YgYW4gbC12YWx1ZScKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFk
ZXJJbmRleEluT3V0V2l0aFNpZGVFZmZlY3RzJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
IGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNzTXNnOiAnVXNlIGV4cHJlc3Npb24gd2l0aCBzaWRl
IGVmZmVjdHMgYXMgYW4gaW5kZXggb2YgYW4gbC12YWx1ZSB0aGF0IGlzIGJvdGggcmVhZCBhbmQg
d3JpdHRlbicKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJJbmRleFVzZXJEZWZpbmVkRnVu
Y3Rpb25DYWxsSW5PdXRQYXJhbWV0ZXJXaXRoSW5kZXhXaXRoU2lkZUVmZmVjdHMnLAorICBmU2hh
ZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlua1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJbmRl
eCBhbiBpbm91dCBwYXJhbWV0ZXIgcGFzc2VkIHRvIGFuIHVzZXItZGVmaW5lZCBmdW5jdGlvbiB3
aXRoIGFuIGluZGV4IHdpdGggc2lkZSBlZmZlY3RzJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNo
YWRlckluZGV4TFZhbHVlV2l0aFVpbnQnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICdJbmRleCBvbiB0aGUgbGVmdC1oYW5kIHNpZGUg
b2YgYXNzaWdubWVudCB3aXRoIGFuIHVpbnQnCit9LAoreworICBmU2hhZGVySWQ6ICdmc2hhZGVy
SW5kZXhVbmlmb3JtJywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0
cnVlLAorICBwYXNzTXNnOiAnSW5kZXggYSB1bmlmb3JtIHdpdGggYSB1bmlmb3JtJworfSwKK3sK
KyAgZlNoYWRlcklkOiAnZnNoYWRlclNlcXVlbmNlRHluYW1pY0luZGV4aW5nVmVjdG9yTHZhbHVl
JywKKyAgZlNoYWRlclN1Y2Nlc3M6IHRydWUsCisgIGxpbmtTdWNjZXNzOiB0cnVlLAorICBwYXNz
TXNnOiAnU2VxdWVuY2Ugb3BlcmF0b3Igd2l0aCBkeW5hbWljIGluZGV4aW5nIG9mIGEgdmVjdG9y
IGFzIGFuIGwtdmFsdWUgaW5zaWRlJworfSwKK3sKKyAgZlNoYWRlcklkOiAnZnNoYWRlckluZGV4
TWF0cml4VHdpY2VJbkxWYWx1ZScsCisgIGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3Vj
Y2VzczogdHJ1ZSwKKyAgcGFzc01zZzogJ0luZGV4IG1hdHJpeCBhbmQgdGhlbiBpbmRleCB0aGUg
cmVzdWx0aW5nIHZlY3RvciBpbiB0aGUgc2FtZSBleHByZXNzaW9uIGluc2lkZSBhbiBsLXZhbHVl
JworfQorXSwgMik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L21pc2MvZXhwYW5kby1sb3NzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9taXNjL2V4cGFuZG8tbG9zcy0yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTQxYTUzNzdhOGFkNmRmOWU5NmUzZjgwYjNiNzBjYzg4ZDk0NDg4ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9taXNjL2V4cGFuZG8tbG9zcy0yLmh0bWwKQEAgLTAsMCArMSwyODUgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHRpdGxlPldlYkdM
IDIgT2JqZWN0IEV4cGFuZG9zIENvbmZvcm1hbmNlIFRlc3Q8L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRo
OiA4cHg7IGhlaWdodDogOHB4OyI+PC9jYW52YXM+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IFdlYkdMIG9iamVjdCBleHBhbmRv
cyBhcmUgcHJlc2VydmVkIGFjcm9zcyBnYXJiYWdlIGNvbGxlY3Rpb25zLiIpOworCit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxp
YXM6IGZhbHNlfSwgMik7CisKKy8vIEhlbHBlcnMgdGhhdCBzZXQgZXhwYW5kb3MgYW5kIHZlcmlm
eSB0aGV5IGFyZSBzZXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUuCit2YXIgZXhwYW5kb1ZhbHVlID0g
IldlYkdMIGlzIGF3ZXNvbWUhIgorZnVuY3Rpb24gc2V0VGVzdEV4cGFuZG9zKGluc3RhbmNlLCBl
eHRyYSkgeworICAgIGluc3RhbmNlLmV4cGFuZG8xID0gZXhwYW5kb1ZhbHVlOworICAgIGluc3Rh
bmNlLmV4cGFuZG8yID0geyBzdWJ2YWx1ZSA6IGV4cGFuZG9WYWx1ZSB9OworICAgIGluc3RhbmNl
LmV4cGFuZG9fZXh0cmEgPSBleHRyYTsKK30KK2Z1bmN0aW9uIHZlcmlmeVRlc3RFeHBhbmRvcyhp
bnN0YW5jZSwgbXNnLCBleHRyYSkgeworICAgIGFzc2VydE1zZyhpbnN0YW5jZS5leHBhbmRvMSA9
PT0gZXhwYW5kb1ZhbHVlLCBtc2cgKyAiOiBFeHBlY3QgYmFzaWMgZXhwYW5kbyB0byBzdXJ2aXZl
IGRlc3BpdGUgR0MuIik7CisgICAgYXNzZXJ0TXNnKGluc3RhbmNlLmV4cGFuZG8yICYmIGluc3Rh
bmNlLmV4cGFuZG8yLnN1YnZhbHVlID09PSBleHBhbmRvVmFsdWUsIG1zZyArICI6IEV4cGVjdCBz
dWJvYmplY3QgZXhwYW5kbyB0byBzdXJ2aXZlIGRlc3BpdGUgR0MuIik7CisgICAgYXNzZXJ0TXNn
KGluc3RhbmNlLmV4cGFuZG9fZXh0cmEgPT09IGV4dHJhLCBtc2cgKyAiOiBFeHBlY3QgZXh0cmEg
ZXhwYW5kbyB0byBzdXJ2aXZlIGRlc3BpdGUgR0MuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2Ug
ZG9uJ3QgZ2V0IGV4cGFuZG8gbG9zcyBmb3IgYm91bmQgcmVzb3VyY2VzIHdoZXJlIHRoZQorLy8g
b25seSByZW1haW5pbmcgcmVmZXJlbmNlIGlzIGludGVybmFsIHRvIFdlYkdMCitmdW5jdGlvbiB0
ZXN0QmFzaWNCaW5kaW5ncygpIHsKKyAgICBkZWJ1ZygnQmFzaWMgQmluZGluZ3MnKTsKKworICAg
IC8vIFRlc3QgZGF0YSB0aGF0IGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlLCBiaW5kLCBhbmQgcmV0
cmlldmUgYW4gb2JqZWN0IG9mZiBvZiB0aGUgY29udGV4dAorICAgIHZhciBnbFByb3QgPSBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YoZ2wpOworICAgIHZhciBzaW1wbGVEYXRhID0gWworICAgICAgICB7
CisgICAgICAgICAgICB0eXBlTmFtZTogJ1dlYkdMU2FtcGxlcicsCisgICAgICAgICAgICBjcmVh
dGlvbkZuOiBnbFByb3QuY3JlYXRlU2FtcGxlciwKKyAgICAgICAgICAgIGJpbmRGbjogZ2xQcm90
LmJpbmRTYW1wbGVyLAorICAgICAgICAgICAgYmluZENvbnN0YW50OiAwLAorICAgICAgICAgICAg
cmV0cmlldmVDb25zdGFudDogZ2xQcm90LlNBTVBMRVJfQklORElORywKKyAgICAgICAgICAgIG5h
bWU6ICJTQU1QTEVSX0JJTkRJTkciLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICB0eXBlTmFtZTogJ1dlYkdMVHJhbnNmb3JtRmVlZGJhY2snLAorICAgICAgICAgICAgY3JlYXRp
b25GbjogZ2xQcm90LmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrLAorICAgICAgICAgICAgYmluZEZu
OiBnbFByb3QuYmluZFRyYW5zZm9ybUZlZWRiYWNrLAorICAgICAgICAgICAgYmluZENvbnN0YW50
OiBnbFByb3QuVFJBTlNGT1JNX0ZFRURCQUNLLAorICAgICAgICAgICAgcmV0cmlldmVDb25zdGFu
dDogZ2xQcm90LlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HLAorICAgICAgICAgICAgbmFtZTog
IlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdHlwZU5hbWU6ICdXZWJHTFZlcnRleEFycmF5T2JqZWN0JywKKyAgICAgICAgICAg
IGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVWZXJ0ZXhBcnJheSwKKyAgICAgICAgICAgIGJpbmRG
bjogZ2xQcm90LmJpbmRWZXJ0ZXhBcnJheSwKKyAgICAgICAgICAgIGJpbmRDb25zdGFudDogbnVs
bCwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5WRVJURVhfQVJSQVlfQklO
RElORywKKyAgICAgICAgICAgIG5hbWU6ICJWRVJURVhfQVJSQVlfQklORElORyIsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVOYW1lOiAnV2ViR0xUZXh0dXJlJywKKyAg
ICAgICAgICAgIGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVUZXh0dXJlLAorICAgICAgICAgICAg
YmluZEZuOiBnbFByb3QuYmluZFRleHR1cmUsCisgICAgICAgICAgICBiaW5kQ29uc3RhbnQ6IGds
UHJvdC5URVhUVVJFXzNELAorICAgICAgICAgICAgcmV0cmlldmVDb25zdGFudDogZ2xQcm90LlRF
WFRVUkVfQklORElOR18zRCwKKyAgICAgICAgICAgIG5hbWU6ICJURVhUVVJFX0JJTkRJTkdfM0Qi
LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0eXBlTmFtZTogJ1dlYkdMVGV4
dHVyZScsCisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3QuY3JlYXRlVGV4dHVyZSwKKyAg
ICAgICAgICAgIGJpbmRGbjogZ2xQcm90LmJpbmRUZXh0dXJlLAorICAgICAgICAgICAgYmluZENv
bnN0YW50OiBnbFByb3QuVEVYVFVSRV8yRF9BUlJBWSwKKyAgICAgICAgICAgIHJldHJpZXZlQ29u
c3RhbnQ6IGdsUHJvdC5URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVksCisgICAgICAgICAgICBuYW1l
OiAiVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdHlwZU5hbWU6ICdXZWJHTEZyYW1lYnVmZmVyJywKKyAgICAgICAgICAgIGNyZWF0
aW9uRm46IGdsUHJvdC5jcmVhdGVGcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgIGJpbmRGbjogZ2xQ
cm90LmJpbmRGcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgIGJpbmRDb25zdGFudDogZ2xQcm90LlJF
QURfRlJBTUVCVUZGRVIsCisgICAgICAgICAgICByZXRyaWV2ZUNvbnN0YW50OiBnbFByb3QuUkVB
RF9GUkFNRUJVRkZFUl9CSU5ESU5HLAorICAgICAgICAgICAgbmFtZTogIlJFQURfRlJBTUVCVUZG
RVJfQklORElORyIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVOYW1l
OiAnV2ViR0xGcmFtZWJ1ZmZlcicsCisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3QuY3Jl
YXRlRnJhbWVidWZmZXIsCisgICAgICAgICAgICBiaW5kRm46IGdsUHJvdC5iaW5kRnJhbWVidWZm
ZXIsCisgICAgICAgICAgICBiaW5kQ29uc3RhbnQ6IGdsUHJvdC5EUkFXX0ZSQU1FQlVGRkVSLAor
ICAgICAgICAgICAgcmV0cmlldmVDb25zdGFudDogZ2xQcm90LkRSQVdfRlJBTUVCVUZGRVJfQklO
RElORywKKyAgICAgICAgICAgIG5hbWU6ICJEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkciLAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0eXBlTmFtZTogJ1dlYkdMQnVmZmVyJywK
KyAgICAgICAgICAgIGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVCdWZmZXIsCisgICAgICAgICAg
ICBiaW5kRm46IGdsUHJvdC5iaW5kQnVmZmVyLAorICAgICAgICAgICAgYmluZENvbnN0YW50OiBn
bFByb3QuQ09QWV9SRUFEX0JVRkZFUiwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGds
UHJvdC5DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkcsCisgICAgICAgICAgICBuYW1lOiAiQ09QWV9S
RUFEX0JVRkZFUl9CSU5ESU5HIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dHlwZU5hbWU6ICdXZWJHTEJ1ZmZlcicsCisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3Qu
Y3JlYXRlQnVmZmVyLAorICAgICAgICAgICAgYmluZEZuOiBnbFByb3QuYmluZEJ1ZmZlciwKKyAg
ICAgICAgICAgIGJpbmRDb25zdGFudDogZ2xQcm90LkNPUFlfV1JJVEVfQlVGRkVSLAorICAgICAg
ICAgICAgcmV0cmlldmVDb25zdGFudDogZ2xQcm90LkNPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcs
CisgICAgICAgICAgICBuYW1lOiAiQ09QWV9XUklURV9CVUZGRVJfQklORElORyIsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVOYW1lOiAnV2ViR0xCdWZmZXInLAorICAg
ICAgICAgICAgY3JlYXRpb25GbjogZ2xQcm90LmNyZWF0ZUJ1ZmZlciwKKyAgICAgICAgICAgIGJp
bmRGbjogZ2xQcm90LmJpbmRCdWZmZXIsCisgICAgICAgICAgICBiaW5kQ29uc3RhbnQ6IGdsUHJv
dC5QSVhFTF9QQUNLX0JVRkZFUiwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJv
dC5QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HLAorICAgICAgICAgICAgbmFtZTogIlBJWEVMX1BB
Q0tfQlVGRkVSX0JJTkRJTkciLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0
eXBlTmFtZTogJ1dlYkdMQnVmZmVyJywKKyAgICAgICAgICAgIGNyZWF0aW9uRm46IGdsUHJvdC5j
cmVhdGVCdWZmZXIsCisgICAgICAgICAgICBiaW5kRm46IGdsUHJvdC5iaW5kQnVmZmVyLAorICAg
ICAgICAgICAgYmluZENvbnN0YW50OiBnbFByb3QuUElYRUxfVU5QQUNLX0JVRkZFUiwKKyAgICAg
ICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJ
TkcsCisgICAgICAgICAgICBuYW1lOiAiUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HIiwKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZU5hbWU6ICdXZWJHTEJ1ZmZlcics
CisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3QuY3JlYXRlQnVmZmVyLAorICAgICAgICAg
ICAgYmluZEZuOiBnbFByb3QuYmluZEJ1ZmZlciwKKyAgICAgICAgICAgIGJpbmRDb25zdGFudDog
Z2xQcm90LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsCisgICAgICAgICAgICByZXRyaWV2ZUNv
bnN0YW50OiBnbFByb3QuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLAorICAgICAg
ICAgICAgbmFtZTogIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyIsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVOYW1lOiAnV2ViR0xCdWZmZXInLAorICAg
ICAgICAgICAgY3JlYXRpb25GbjogZ2xQcm90LmNyZWF0ZUJ1ZmZlciwKKyAgICAgICAgICAgIGJp
bmRGbjogZ2xQcm90LmJpbmRCdWZmZXIsCisgICAgICAgICAgICBiaW5kQ29uc3RhbnQ6IGdsUHJv
dC5VTklGT1JNX0JVRkZFUiwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5V
TklGT1JNX0JVRkZFUl9CSU5ESU5HLAorICAgICAgICAgICAgbmFtZTogIlVOSUZPUk1fQlVGRkVS
X0JJTkRJTkciLAorICAgICAgICB9LAorICAgIF07CisKKyAgICBzaW1wbGVEYXRhLmZvckVhY2go
ZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0ZXN0LmNyZWF0aW9uRm4u
Y2FsbChnbCk7CisgICAgICAgIHZhciBtc2cgPSAiZ2V0UGFyYW1ldGVyKCIgKyB0ZXN0Lm5hbWUg
KyAiKSI7CisgICAgICAgIHNldFRlc3RFeHBhbmRvcyhpbnN0YW5jZSk7CisKKyAgICAgICAgaWYg
KHRlc3QuYmluZENvbnN0YW50ID09PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0LmJpbmRGbi5j
YWxsKGdsLCBpbnN0YW5jZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0LmJp
bmRGbi5jYWxsKGdsLCB0ZXN0LmJpbmRDb25zdGFudCwgaW5zdGFuY2UpOworICAgICAgICB9Cisg
ICAgICAgIGFzc2VydE1zZyhpbnN0YW5jZSA9PT0gZ2wuZ2V0UGFyYW1ldGVyKHRlc3QucmV0cmll
dmVDb25zdGFudCksIG1zZyArICIgcmV0dXJucyBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZC4iKTsK
KworICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3QgSmF2YXNjcmlwdCByZWZlcmVuY2VzLiAgUmVt
YWluaW5nIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGludGVybmFsIHRvIFdlYkdMLgorICAgICAgICBp
bnN0YW5jZSA9IG51bGw7CisgICAgICAgIHdlYmdsSGFybmVzc0NvbGxlY3RHYXJiYWdlKCk7CisK
KyAgICAgICAgdmFyIHJldHJpZXZlZE9iamVjdCA9IGdsLmdldFBhcmFtZXRlcih0ZXN0LnJldHJp
ZXZlQ29uc3RhbnQpOworICAgICAgICB2ZXJpZnlUZXN0RXhwYW5kb3MocmV0cmlldmVkT2JqZWN0
LCBtc2cpOworICAgICAgICBzaG91bGRCZVR5cGUocmV0cmlldmVkT2JqZWN0LCB0ZXN0LnR5cGVO
YW1lKTsKKyAgICAgICAgZGVidWcoJycpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0SW5k
ZXhlZEJpbmRpbmdzKCkgeworICAgIGRlYnVnKCdJbmRleGVkIEJpbmRpbmdzJyk7CisKKyAgICAv
LyBUZXN0IGRhdGEgdGhhdCBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSwgYmluZCwgYW5kIHJldHJp
ZXZlIGFuIGluZGV4ZWQgb2JqZWN0IG9mZiBvZiB0aGUgY29udGV4dAorICAgIHZhciBnbFByb3Qg
PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2wpOworICAgIHZhciBzaW1wbGVEYXRhID0gWworICAg
ICAgICB7CisgICAgICAgICAgICB0eXBlTmFtZTogJ1dlYkdMQnVmZmVyJywKKyAgICAgICAgICAg
IGNyZWF0aW9uRm46IGdsUHJvdC5jcmVhdGVCdWZmZXIsCisgICAgICAgICAgICBiaW5kRm46IGds
UHJvdC5iaW5kQnVmZmVyQmFzZSwKKyAgICAgICAgICAgIGluZGV4TWF4OiBnbC5nZXRQYXJhbWV0
ZXIoZ2xQcm90Lk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUykgLSAxLAor
ICAgICAgICAgICAgYmluZENvbnN0YW50OiBnbFByb3QuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwKKyAgICAgICAgICAgIHJldHJpZXZlQ29uc3RhbnQ6IGdsUHJvdC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSX0JJTkRJTkcsCisgICAgICAgICAgICBuYW1lOiAiVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9CSU5ESU5HIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdHlw
ZU5hbWU6ICdXZWJHTEJ1ZmZlcicsCisgICAgICAgICAgICBjcmVhdGlvbkZuOiBnbFByb3QuY3Jl
YXRlQnVmZmVyLAorICAgICAgICAgICAgYmluZEZuOiBnbFByb3QuYmluZEJ1ZmZlckJhc2UsCisg
ICAgICAgICAgICBpbmRleE1heDogZ2wuZ2V0UGFyYW1ldGVyKGdsUHJvdC5NQVhfVU5JRk9STV9C
VUZGRVJfQklORElOR1MpIC0gMSwKKyAgICAgICAgICAgIGJpbmRDb25zdGFudDogZ2xQcm90LlVO
SUZPUk1fQlVGRkVSLAorICAgICAgICAgICAgcmV0cmlldmVDb25zdGFudDogZ2xQcm90LlVOSUZP
Uk1fQlVGRkVSX0JJTkRJTkcsCisgICAgICAgICAgICBuYW1lOiAiVU5JRk9STV9CVUZGRVJfQklO
RElORyIsCisgICAgICAgIH0sCisgICAgXTsKKworICAgIHNpbXBsZURhdGEuZm9yRWFjaChmdW5j
dGlvbih0ZXN0KSB7CisgICAgICAgIC8vIFRoaXMgdGVzdCBzZXRzIGFsbCBvZiB0aGUgc2VwYXJh
dGUgaW5kZXhlZCBiaW5kaW5ncyBmaXJzdCwgdGhlbgorICAgICAgICAvLyB0ZXN0cyB0aGVtIGFs
bC4gSXQgcHV0cyBhIGRpZmZlcmVudCBleHRyYSBleHBhbmRvIG9uIGVhY2ggaW5kZXhlZAorICAg
ICAgICAvLyBwYXJhbWV0ZXIgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZXkncmUgYWxsIGRpc3Rp
bmN0LgorICAgICAgICB2YXIgaW5zdGFuY2VzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDw9IHRlc3QuaW5kZXhNYXg7IGkrKykgeworICAgICAgICAgICAgdmFyIGluc3RhbmNlID0g
dGVzdC5jcmVhdGlvbkZuLmNhbGwoZ2wpOworICAgICAgICAgICAgdmFyIG1zZyA9ICJnZXRJbmRl
eGVkUGFyYW1ldGVyKCIgKyB0ZXN0Lm5hbWUgKyAiLCAiICsgaSArICIpIjsKKyAgICAgICAgICAg
IHNldFRlc3RFeHBhbmRvcyhpbnN0YW5jZSwgaSk7CisgICAgICAgICAgICBpbnN0YW5jZXNbaV0g
PSBpbnN0YW5jZTsKKyAgICAgICAgICAgIHRlc3QuYmluZEZuLmNhbGwoZ2wsIHRlc3QuYmluZENv
bnN0YW50LCBpLCBpbnN0YW5jZSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8PSB0ZXN0LmluZGV4TWF4OyBpKyspIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAiZ2V0
SW5kZXhlZFBhcmFtZXRlcigiICsgdGVzdC5uYW1lICsgIiwgIiArIGkgKyAiKSI7CisgICAgICAg
ICAgICBhc3NlcnRNc2coaW5zdGFuY2VzW2ldID09PSBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKHRl
c3QucmV0cmlldmVDb25zdGFudCwgaSksIG1zZyArICIgcmV0dXJucyBpbnN0YW5jZSB0aGF0IHdh
cyBib3VuZC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdCBKYXZh
c2NyaXB0IHJlZmVyZW5jZXMuICBSZW1haW5pbmcgcmVmZXJlbmNlcyBzaG91bGQgYmUgaW50ZXJu
YWwgdG8gV2ViR0wuCisgICAgICAgIGluc3RhbmNlcyA9IG51bGw7CisgICAgICAgIHdlYmdsSGFy
bmVzc0NvbGxlY3RHYXJiYWdlKCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gdGVz
dC5pbmRleE1heDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gImdldEluZGV4ZWRQYXJh
bWV0ZXIoIiArIHRlc3QubmFtZSArICIsICIgKyBpICsgIikiOworICAgICAgICAgICAgdmFyIHJl
dHJpZXZlZE9iamVjdCA9IGdsLmdldEluZGV4ZWRQYXJhbWV0ZXIodGVzdC5yZXRyaWV2ZUNvbnN0
YW50LCBpKTsKKyAgICAgICAgICAgIHZlcmlmeVRlc3RFeHBhbmRvcyhyZXRyaWV2ZWRPYmplY3Qs
IG1zZywgaSk7CisgICAgICAgICAgICBzaG91bGRCZVR5cGUocmV0cmlldmVkT2JqZWN0LCB0ZXN0
LnR5cGVOYW1lKTsKKyAgICAgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgfQorICAgIH0pOwor
fQorCitmdW5jdGlvbiB0ZXN0UXVlcmllcygpIHsKKyAgICBkZWJ1ZygnUXVlcnknKTsKKworICAg
IGV4cGFuZG9WYWx1ZSA9ICJGaXJzdCBxdWVyeSI7CisgICAgdmFyIHF1ZXJ5MSA9IGdsLmNyZWF0
ZVF1ZXJ5KCk7CisgICAgc2V0VGVzdEV4cGFuZG9zKHF1ZXJ5MSk7CisgICAgZ2wuYmVnaW5RdWVy
eShnbC5BTllfU0FNUExFU19QQVNTRUQsIHF1ZXJ5MSk7CisKKyAgICBleHBhbmRvVmFsdWUgPSAi
U2Vjb25kIHF1ZXJ5IjsKKyAgICB2YXIgcXVlcnkyID0gZ2wuY3JlYXRlUXVlcnkoKTsKKyAgICBz
ZXRUZXN0RXhwYW5kb3MocXVlcnkyKTsKKyAgICBnbC5iZWdpblF1ZXJ5KGdsLlRSQU5TRk9STV9G
RUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIHF1ZXJ5Mik7CisKKworICAgIGFzc2VydE1zZyhx
dWVyeTEgPT09IGdsLmdldFF1ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgZ2wuQ1VSUkVOVF9R
VUVSWSksICJDVVJSRU5UX1FVRVJZIHJldHVybnMgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQuIik7
CisgICAgYXNzZXJ0TXNnKHF1ZXJ5MiA9PT0gZ2wuZ2V0UXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgZ2wuQ1VSUkVOVF9RVUVSWSksICJDVVJSRU5UX1FVRVJZ
IHJldHVybnMgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQuIik7CisKKyAgICAvLyBHYXJiYWdlIGNv
bGxlY3QgSmF2YXNjcmlwdCByZWZlcmVuY2VzLiBSZW1haW5pbmcgcmVmZXJlbmNlcyBzaG91bGQg
YmUgaW50ZXJuYWwgdG8gV2ViR0wuCisgICAgcXVlcnkxID0gbnVsbDsKKyAgICBxdWVyeTIgPSBu
dWxsOworICAgIHdlYmdsSGFybmVzc0NvbGxlY3RHYXJiYWdlKCk7CisKKyAgICB2YXIgcmV0cmll
dmVkUXVlcnkxID0gZ2wuZ2V0UXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBnbC5DVVJSRU5U
X1FVRVJZKTsKKyAgICB2YXIgcmV0cmlldmVkUXVlcnkyID0gZ2wuZ2V0UXVlcnkoZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgZ2wuQ1VSUkVOVF9RVUVSWSk7CisgICAg
ZXhwYW5kb1ZhbHVlID0gIkZpcnN0IHF1ZXJ5IjsKKyAgICB2ZXJpZnlUZXN0RXhwYW5kb3MocmV0
cmlldmVkUXVlcnkxLCAiUXVlcnkiKTsKKyAgICBzaG91bGRCZVR5cGUocmV0cmlldmVkUXVlcnkx
LCAnV2ViR0xRdWVyeScpOworCisgICAgZXhwYW5kb1ZhbHVlID0gIlNlY29uZCBxdWVyeSI7Cisg
ICAgdmVyaWZ5VGVzdEV4cGFuZG9zKHJldHJpZXZlZFF1ZXJ5MiwgIlF1ZXJ5Iik7CisgICAgc2hv
dWxkQmVUeXBlKHJldHJpZXZlZFF1ZXJ5MiwgJ1dlYkdMUXVlcnknKTsKKworICAgIGdsLmVuZFF1
ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRCk7CisgICAgZ2wuZW5kUXVlcnkoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKKy8v
IFJ1biB0ZXN0cwordGVzdEJhc2ljQmluZGluZ3MoKTsKK3Rlc3RJbmRleGVkQmluZGluZ3MoKTsK
K3Rlc3RRdWVyaWVzKCk7CisKKy8vIEZZSTogVGhlcmUncyBubyBuZWVkIHRvIHRlc3QgV2ViR0xT
eW5jIG9iamVjdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBub3Rpb24gb2YgYW4gImFjdGl2ZSIgc3lu
YywKKy8vIGFuZCB0aHVzIG5vIHdheSB0byBxdWVyeSB0aGVtIGJhY2sgb3V0IG9mIHRoZSBjb250
ZXh0LgorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvbWlzYy9nZXRleHRlbnNpb24td2hpbGUtcGJvLWJvdW5kLXN0YWJp
bGl0eS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL21pc2MvZ2V0ZXh0ZW5zaW9uLXdoaWxlLXBiby1ib3VuZC1zdGFiaWxpdHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43M2UzNGZkYzFkOGViMzFkNTkxMmIxMDgwMDU3MTY4YjZjYjIzYjRh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL21pc2MvZ2V0ZXh0ZW5zaW9uLXdoaWxlLXBiby1ib3VuZC1z
dGFiaWxpdHkuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgZ2V0RXh0ZW5zaW9uIHdoaWxlIFBC
TyBib3VuZCBzdGFiaWxpdHkgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
CitmdW5jdGlvbiBydW5UZXN0KGV4dGVuc2lvbl9uYW1lKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVi
dWcoImdldEV4dGVuc2lvbignIiArIGV4dGVuc2lvbl9uYW1lICsgIicpIHdoaWxlIFBJWEVMX1VO
UEFDS19CVUZGRVIgYm91bmQgc2hvdWxkIGJlIHN0YWJsZSIpOworCisgIHZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQobnVsbCwgdW5kZWZpbmVkLCAyKTsKKyAgaWYgKCFnbCkgeworICAgIHRl
c3RGYWlsZWQoIkZhaWwgdG8gZ2V0IGEgV2ViR0wgY29udGV4dCIpOworICAgIHJldHVybjsKKyAg
fQorCisgIHZhciBwYm8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm8pOworICB2YXIgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdF
WFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisgIHZhciBnbF90ZXh0dXJlX2Zsb2F0X2xpbmVhciA9
IGdsLmdldEV4dGVuc2lvbihleHRlbnNpb25fbmFtZSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiTGF0ZS1lbmFibGUgb2YgZXh0ZW5zaW9uIHNob3VsZCBzdWNjZWVk
Iik7CisgIGlmIChwYm8gIT0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVJf
QklORElORykpIHsKKyAgICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8gbWFpbnRhaW4gUElYRUxfVU5Q
QUNLX0JVRkZFUiBiaW5kaW5nIHdoZW4gZW5hYmxpbmcgZXh0ZW5zaW9uICIgKyBleHRlbnNpb25f
bmFtZSk7CisgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgIGRlYnVnKCJUaGlzIGlz
IGEgcmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSdodHRwczovL2J1Z3MuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NDE2NDMnPkNocm9taXVtIElzc3VlIDY0MTY0
MjwvYT4iKTsKKyAgcnVuVGVzdCgnRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpOworICBydW5UZXN0
KCdPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXInKTsKK30KKworcnVuVGVzdHMoKTsKKworZGVidWco
IiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL21pc2MvaW5zdGFuY2VvZi10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvbWlzYy9pbnN0YW5j
ZW9mLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWNiZDZlMmQzMDRkMmM3N2ZhMzA4NTkxNjE0NmNh
OTIwNjRmYjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL21pc2MvaW5zdGFuY2VvZi10ZXN0Lmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgaW5zdGFuY2VvZiB0ZXN0LjwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgc3R5bGU9Indp
ZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordmFy
eWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQ
b3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCBj
b2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3Nj
cmlwdD4KKworPHNjcmlwdD4KK3ZhciBjb250ZXh0VmVyc2lvbiA9IDI7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9pbnN0YW5jZW9mLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9taXNjL251bGwtb2JqZWN0LWJlaGF2aW91ci0yLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvbWlzYy9udWxsLW9iamVjdC1iZWhhdmlvdXItMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNjVk
YzU3YmRjOTkzNGQ5ZWZlNjlmMThjNTE0NDQxY2JiMTNiODUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
bWlzYy9udWxsLW9iamVjdC1iZWhhdmlvdXItMi5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVz
Y3JpcHRpb24oIlRlc3RzIGNhbGxpbmcgV2ViR0wgMiBBUElzIHdpdGhvdXQgcHJvdmlkaW5nIHRo
ZSBuZWNlc3Nhcnkgb2JqZWN0cyIpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCAyKTsKK3ZhciBzaG91bGRHZW5lcmF0ZUdMRXJyb3IgPSB3dHUu
c2hvdWxkR2VuZXJhdGVHTEVycm9yOworCisKK2ZvciAobGV0IG51bGxPclVuZGVmaW5lZCBvZiBb
bnVsbCwgdW5kZWZpbmVkXSkgeworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9f
RVJST1IsIGBnbC5kZWxldGVRdWVyeSgke251bGxPclVuZGVmaW5lZH0pYCk7CisgICAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgYGdsLmlzUXVlcnkoJHtudWxsT3JVbmRl
ZmluZWR9KWApOworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIGBn
bC5kZWxldGVTeW5jKCR7bnVsbE9yVW5kZWZpbmVkfSlgKTsKKyAgICBzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCBgZ2wuaXNTeW5jKCR7bnVsbE9yVW5kZWZpbmVkfSlgKTsK
KyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCBgZ2wuZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soJHtudWxsT3JVbmRlZmluZWR9KWApOworICAgIHNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIGBnbC5pc1RyYW5zZm9ybUZlZWRiYWNrKCR7bnVsbE9y
VW5kZWZpbmVkfSlgKTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LCBgZ2wuZGVsZXRlU2FtcGxlcigke251bGxPclVuZGVmaW5lZH0pYCk7CisgICAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgYGdsLmlzU2FtcGxlcigke251bGxPclVuZGVm
aW5lZH0pYCk7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgYGds
LmRlbGV0ZVZlcnRleEFycmF5KCR7bnVsbE9yVW5kZWZpbmVkfSlgKTsKKyAgICBzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCBgZ2wuaXNWZXJ0ZXhBcnJheSgke251bGxPclVu
ZGVmaW5lZH0pYCk7CisKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LCBgZ2wuYmluZFNhbXBsZXIoMCwgJHtudWxsT3JVbmRlZmluZWR9KWApOworICAgIHNob3VsZFRo
cm93KGBnbC5zYW1wbGVyUGFyYW1ldGVyaSgke251bGxPclVuZGVmaW5lZH0sIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVClgKTsKKyAgICBzaG91bGRUaHJvdyhgZ2wuc2FtcGxlclBh
cmFtZXRlcmYoJHtudWxsT3JVbmRlZmluZWR9LCBnbC5URVhUVVJFX01BWF9MT0QsIDEpYCk7Cisg
ICAgc2hvdWxkVGhyb3coYGdsLmdldFNhbXBsZXJQYXJhbWV0ZXIoJHtudWxsT3JVbmRlZmluZWR9
LCBnbC5URVhUVVJFX01BWF9MT0QpYCk7CisKKyAgICBzaG91bGRUaHJvdyhgZ2wud2FpdFN5bmMo
JHtudWxsT3JVbmRlZmluZWR9LCAwLCAwKWApOworICAgIHNob3VsZFRocm93KGBnbC5jbGllbnRX
YWl0U3luYygke251bGxPclVuZGVmaW5lZH0sIDAsIDApYCk7CisgICAgc2hvdWxkVGhyb3coYGds
LmdldFN5bmNQYXJhbWV0ZXIoJHtudWxsT3JVbmRlZmluZWR9LCBnbC5PQkpFQ1RfVFlQRSlgKTsK
KworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIGBnbC5iaW5kVHJh
bnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCAke251bGxPclVuZGVmaW5lZH0p
YCk7CisgICAgc2hvdWxkVGhyb3coYGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoJHtudWxs
T3JVbmRlZmluZWR9LCBbXSwgZ2wuU0VQQVJBVEVfQVRUUklCUylgKTsKKworICAgIHNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIGBnbC5iaW5kVmVydGV4QXJyYXkoJHtudWxs
T3JVbmRlZmluZWR9KWApOworfQorCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL21pc2Mvb2JqZWN0LWRlbGV0aW9u
LWJlaGF2aW91ci0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvbWlzYy9vYmplY3QtZGVsZXRpb24tYmVoYXZpb3VyLTIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTUxYTFiZDk3NWM4YzE2YzEyNDg1N2EzMTRjYWYyMzg2NjE3MmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL21pc2Mvb2JqZWN0LWRlbGV0aW9uLWJlaGF2aW91ci0yLmh0bWwK
QEAgLTAsMCArMSwxMTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRlc3RzIGRlbGV0aW9uIGJlaGF2aW9yIGZvciBXZWJHTDIgYnVmZmVyLCBzYW1wbGVy
LCB2ZXJ0ZXhBcnJheSBhbmQgdHJhbnNmb3JtRmVlZGJhY2sgb2JqZWN0cy4iKTsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgMik7Cit2YXIgc2hvdWxkR2VuZXJhdGVHTEVycm9yID0gd3R1LnNob3Vs
ZEdlbmVyYXRlR0xFcnJvcjsKKworZGVidWcoIiIpOworZGVidWcoImJ1ZmZlciBkZWxldGlvbiIp
OworCit2YXIgYnVmZmVyQmFzZVVuaWZvcm0gPSBnbC5jcmVhdGVCdWZmZXIoKTsKK3Nob3VsZEJl
Tm9uTnVsbCgiYnVmZmVyQmFzZVVuaWZvcm0iKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
Z2wuTk9fRVJST1IsICJnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMCwgYnVm
ZmVyQmFzZVVuaWZvcm0pIik7CitzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOSUZPUk1f
QlVGRkVSX0JJTkRJTkcpIiwgImJ1ZmZlckJhc2VVbmlmb3JtIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlckJhc2VVbmlmb3Jt
KSIpOworc2hvdWxkQmVGYWxzZSgiZ2wuaXNCdWZmZXIoYnVmZmVyQmFzZVVuaWZvcm0pIik7Citz
aG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9CSU5ESU5HKSIp
Oworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJp
bmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVSLCAwLCBidWZmZXJCYXNlVW5pZm9ybSkiKTsK
K3Nob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX0JJTkRJTkcp
Iik7CisKK3ZhciBidWZmZXJCYXNlVHJhbnNmb3JtRmVlZGJhY2sgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKK3Nob3VsZEJlTm9uTnVsbCgiYnVmZmVyQmFzZVRyYW5zZm9ybUZlZWRiYWNrIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuYmluZEJ1ZmZlckJhc2UoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmZmVyQmFzZVRyYW5zZm9ybUZlZWRiYWNr
KSIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSX0JJTkRJTkcpIiwgImJ1ZmZlckJhc2VUcmFuc2Zvcm1GZWVkYmFjayIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZUJ1ZmZlcihidWZmZXJCYXNl
VHJhbnNmb3JtRmVlZGJhY2spIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc0J1ZmZlcihidWZmZXJC
YXNlVHJhbnNmb3JtRmVlZGJhY2spIik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihn
bC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcpIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmZmVyQmFzZVRyYW5zZm9ybUZlZWRiYWNrKSIp
Oworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9CSU5ESU5HKSIpOworCit2YXIgYnVmZmVyUmFuZ2VVbmlmb3JtID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CitzaG91bGRCZU5vbk51bGwoImJ1ZmZlclJhbmdlVW5pZm9ybSIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRCdWZmZXJSYW5nZShnbC5VTklG
T1JNX0JVRkZFUiwgMCwgYnVmZmVyUmFuZ2VVbmlmb3JtLCAwLCBnbC5VTklGT1JNX0JVRkZFUl9P
RkZTRVRfQUxJR05NRU5UKSIpOworc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5VTklGT1JN
X0JVRkZFUl9CSU5ESU5HKSIsICJidWZmZXJSYW5nZVVuaWZvcm0iKTsKK3Nob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVCdWZmZXIoYnVmZmVyUmFuZ2VVbmlm
b3JtKSIpOworc2hvdWxkQmVGYWxzZSgiZ2wuaXNCdWZmZXIoYnVmZmVyUmFuZ2VVbmlmb3JtKSIp
Oworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfQklORElO
RykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJn
bC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVU5JRk9STV9CVUZGRVIsIDAsIGJ1ZmZlclJhbmdlVW5pZm9y
bSwgMCwgZ2wuVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCkiKTsKK3Nob3VsZEJlTnVs
bCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX0JJTkRJTkcpIik7CisKK3ZhciBi
dWZmZXJSYW5nZVRyYW5zZm9ybUZlZWRiYWNrID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitzaG91bGRC
ZU5vbk51bGwoImJ1ZmZlclJhbmdlVHJhbnNmb3JtRmVlZGJhY2siKTsKK3Nob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmZmVyUmFuZ2VUcmFuc2Zvcm1GZWVkYmFjaywgMCwgNCki
KTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
Ul9CSU5ESU5HKSIsICJidWZmZXJSYW5nZVRyYW5zZm9ybUZlZWRiYWNrIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlclJhbmdl
VHJhbnNmb3JtRmVlZGJhY2spIik7CitzaG91bGRCZUZhbHNlKCJnbC5pc0J1ZmZlcihidWZmZXJS
YW5nZVRyYW5zZm9ybUZlZWRiYWNrKSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HKSIpOworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJpbmRCdWZmZXJSYW5nZShnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWZmZXJSYW5nZVRyYW5zZm9ybUZlZWRiYWNr
LCAwLCA0KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUl9CSU5ESU5HKSIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygic2FtcGxlciBk
ZWxldGlvbiIpOworCit2YXIgc2FtcGxlciA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKK3Nob3VsZEJl
Tm9uTnVsbCgic2FtcGxlciIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJP
UiwgImdsLmJpbmRTYW1wbGVyKDAsIHNhbXBsZXIpIik7CitzaG91bGRCZSgiZ2wuZ2V0UGFyYW1l
dGVyKGdsLlNBTVBMRVJfQklORElORykiLCAic2FtcGxlciIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVNhbXBsZXIoc2FtcGxlcikiKTsKK3Nob3Vs
ZEJlRmFsc2UoImdsLmlzU2FtcGxlcihzYW1wbGVyKSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLmJpbmRTYW1wbGVyKDAsIHNhbXBsZXIpIik7Citz
aG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5TQU1QTEVSX0JJTkRJTkcpIik7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJ2ZXJ0ZXhBcnJheSBkZWxldGlvbiIpOworCit2YXIgdmVydGV4QXJy
YXkgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworc2hvdWxkQmVOb25OdWxsKCJ2ZXJ0ZXhBcnJh
eSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRWZXJ0
ZXhBcnJheSh2ZXJ0ZXhBcnJheSkiKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVS
VEVYX0FSUkFZX0JJTkRJTkcpIiwgInZlcnRleEFycmF5Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlVmVydGV4QXJyYXkodmVydGV4QXJyYXkpIik7
CitzaG91bGRCZUZhbHNlKCJnbC5pc1ZlcnRleEFycmF5KHZlcnRleEFycmF5KSIpOworc2hvdWxk
QmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVSVEVYX0FSUkFZX0JJTkRJTkcpIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuYmluZFZlcnRl
eEFycmF5KHZlcnRleEFycmF5KSIpOworc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wu
VkVSVEVYX0FSUkFZX0JJTkRJTkcpIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJ0cmFuc2Zvcm1G
ZWVkYmFjayBkZWxldGlvbiIpOworCit2YXIgdHJhbnNmb3JtRmVlZGJhY2sgPSBnbC5jcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpOworc2hvdWxkQmVOb25OdWxsKCJ0cmFuc2Zvcm1GZWVkYmFjayIp
Oworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRyYW5zZm9ybUZlZWRiYWNrKSIpOwor
c2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyki
LCAidHJhbnNmb3JtRmVlZGJhY2siKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9f
RVJST1IsICJnbC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0cmFuc2Zvcm1GZWVkYmFjaykiKTsK
K3Nob3VsZEJlRmFsc2UoImdsLmlzVHJhbnNmb3JtRmVlZGJhY2sodHJhbnNmb3JtRmVlZGJhY2sp
Iik7CitzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QklORElORykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0cmFu
c2Zvcm1GZWVkYmFjaykiKTsKK3Nob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CSU5ESU5HKSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9taXNjL3VuaW5pdGlhbGl6
ZWQtdGVzdC0yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvbWlzYy91bmluaXRpYWxpemVkLXRlc3QtMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiZWZlMzVjOTM5Y2IyNjYzNjliMmFlZDliYzYyYzcwZTI4OWQxNzIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvbWlzYy91bmluaXRpYWxpemVkLXRlc3QtMi5odG1sCkBAIC0wLDAgKzEsNTgzIEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgMiBVbmluaXRpYWxpemVkIEdMIFJlc291cmNlcyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdHMgdG8gY2hlY2sgdXNl
ciBjb2RlIGNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCBkYXRhIGZyb20gR0wgcmVzb3VyY2Vz
LiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCJjYW52YXMiLCB1bmRlZmluZWQsIDIpOworaWYgKCFnbCkKKyAgdGVzdEZhaWxlZCgi
Q29udGV4dCBjcmVhdGVkLiIpOworZWxzZQorICB0ZXN0UGFzc2VkKCJDb250ZXh0IGNyZWF0ZWQu
Iik7CisKKy8vIFRoaXMgaXMgdGhlIG1heGltdW0gc2l6ZSB0aGF0IHdpbGwgZW5kIHVwIGJlaW5n
IGFsbG9jYXRlZCB3aXRoIHRoZSB0ZXN0cworLy8gY3VycmVudGx5IHdyaXR0ZW4gYXMgdGhleSBh
cmUuIEl0IGNvdWxkIG5lZWQgdG8gYmUgaW5jcmVhc2VkIGxhdGVyLgordmFyIHNjcmF0Y2hCdWZm
ZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTAyNCAqIDEwMjQgKiA4ICogNCk7CitmdW5jdGlvbiB6ZXJv
QXJyYXlCdWZmZXIoYXJyKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgYXJyW2ldID0gMDsKKyAgICB9Cit9CitmdW5jdGlvbiBnZXRVaW50MzJB
cnJheShsZW5ndGgpIHsKKyAgdmFyIGFyciA9IG5ldyBVaW50MzJBcnJheShzY3JhdGNoQnVmZmVy
LCAwLCBsZW5ndGgpOworICB6ZXJvQXJyYXlCdWZmZXIoYXJyKTsKKyAgcmV0dXJuIGFycjsKK30K
K2Z1bmN0aW9uIGdldEludDMyQXJyYXkobGVuZ3RoKSB7CisgIHZhciBhcnIgPSBuZXcgSW50MzJB
cnJheShzY3JhdGNoQnVmZmVyLCAwLCBsZW5ndGgpOworICB6ZXJvQXJyYXlCdWZmZXIoYXJyKTsK
KyAgcmV0dXJuIGFycjsKK30KK2Z1bmN0aW9uIGdldFVpbnQ4QXJyYXkobGVuZ3RoKSB7CisgIHZh
ciBhcnIgPSBuZXcgVWludDhBcnJheShzY3JhdGNoQnVmZmVyLCAwLCBsZW5ndGgpOworICB6ZXJv
QXJyYXlCdWZmZXIoYXJyKTsKKyAgcmV0dXJuIGFycjsKK30KK2Z1bmN0aW9uIGdldEludDhBcnJh
eShsZW5ndGgpIHsKKyAgdmFyIGFyciA9IG5ldyBJbnQ4QXJyYXkoc2NyYXRjaEJ1ZmZlciwgMCwg
bGVuZ3RoKTsKKyAgemVyb0FycmF5QnVmZmVyKGFycik7CisgIHJldHVybiBhcnI7Cit9CisKK2Z1
bmN0aW9uIHNldHVwVGV4dHVyZSh0YXJnZXQsIHRleFdpZHRoLCB0ZXhIZWlnaHQsIHRleERlcHRo
KSB7CisgICAgdmFyIGlzM2QgPSAodGFyZ2V0ID09IGdsLlRFWFRVUkVfM0QgfHwgdGFyZ2V0ID09
IGdsLlRFWFRVUkVfMkRfQVJSQVkpOworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CisgICAgaWYgKGlzM2Qp
IHsKKyAgICAgICAgZ2wudGV4SW1hZ2UzRCh0YXJnZXQsIDAsIGdsLlJHQkE4LCB0ZXhXaWR0aCwg
dGV4SGVpZ2h0LCB0ZXhEZXB0aCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICBnbC50
ZXhJbWFnZTJEKHRhcmdldCwgMCwgZ2wuUkdCQTgsIHRleFdpZHRoLCB0ZXhIZWlnaHQsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0JBOCwg
dGV4V2lkdGgsIHRleEhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAw
LCBnbC5SR0JBOCwgdGV4V2lkdGgsIHRleEhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgbnVsbCk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZLCAwLCBnbC5SR0JBOCwgdGV4V2lkdGgsIHRleEhlaWdodCwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0JBOCwgdGV4V2lkdGgsIHRleEhlaWdodCwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5SR0JBOCwgdGV4V2lkdGgs
IHRleEhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0JB
OCwgdGV4V2lkdGgsIHRleEhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVs
bCk7CisgICAgfQorCisgICAgLy8gdGhpcyBjYW4gYmUgcXVpdGUgdW5kZXRlcm1pbmlzdGljIHNv
IHRvIGltcHJvdmUgb2RkcyBvZiBzZWVpbmcgdW5pbml0aWFsaXplZCBkYXRhIHdyaXRlIGJpdHMK
KyAgICAvLyBpbnRvIHRleCB0aGVuIGRlbGV0ZSB0ZXh0dXJlIHRoZW4gcmUtY3JlYXRlIG9uZSB3
aXRoIHNhbWUgY2hhcmFjdGVyaXN0aWNzIChkcml2ZXIgd2lsbCBsaWtlbHkgcmV1c2UgbWVtKQor
ICAgIC8vIHdpdGggdGhpcyB0cmljayBvbiByNTkwNDYgV2ViS2l0L09TWCBJIGdldCBGQUlMIDEw
MCUgb2YgdGhlIHRpbWUgaW5zdGVhZCBvZiB+MTUlIG9mIHRoZSB0aW1lLgorCisgICAgdmFyIGJh
ZERhdGEgPSBnZXRVaW50OEFycmF5KHRleFdpZHRoICogdGV4SGVpZ2h0ICogdGV4RGVwdGggKiA0
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhZERhdGEubGVuZ3RoOyArK2kpCisgICAgICAg
IGJhZERhdGFbaV0gPSBpICUgMjU1OworCisgICAgaWYgKGlzM2QpIHsKKyAgICAgICAgZ2wudGV4
U3ViSW1hZ2UzRCh0YXJnZXQsIDAsIDAsIDAsIDAsIHRleFdpZHRoLCB0ZXhIZWlnaHQsIHRleERl
cHRoLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBiYWREYXRhKTsKKyAgICB9IGVsc2UgaWYg
KHRhcmdldCA9PSBnbC5URVhUVVJFXzJEKSB7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQodGFy
Z2V0LCAwLCAwLCAwLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBiYWREYXRhKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgdGV4V2lkdGgsIHRleEhlaWdo
dCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYmFkRGF0YSk7CisgICAgICAgIGdsLnRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCAwLCAwLCB0ZXhXaWR0
aCwgdGV4SGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBiYWREYXRhKTsKKyAgICAg
ICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIDAs
IDAsIHRleFdpZHRoLCB0ZXhIZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJhZERh
dGEpOworICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWSwgMCwgMCwgMCwgdGV4V2lkdGgsIHRleEhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYmFkRGF0YSk7CisgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9aLCAwLCAwLCAwLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBiYWREYXRhKTsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIDAsIDAsIHRleFdpZHRoLCB0ZXhIZWlnaHQs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJhZERhdGEpOworICAgIH0KKyAgICBnbC5maW5p
c2goKTsgLy8gbWFrZSBzdXJlIGl0IGhhcyBiZWVuIHVwbG9hZGVkCisKKyAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleHR1cmUpOworICAgIGdsLmZpbmlzaCgpOyAvLyBtYWtlIHN1cmUgaXQgaGFzIGJl
ZW4gZGVsZXRlZAorCisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
Z2wuYmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKK30K
KworZnVuY3Rpb24gY2hlY2tOb25aZXJvUGl4ZWxzKHRleHR1cmUsIHRhcmdldCwgZm9ybWF0LCB0
eXBlLCB0ZXhXaWR0aCwgdGV4SGVpZ2h0LCBsZXZlbCwgbGF5ZXIsIGV4Y2VwdGlvbnMpIHsKKyAg
ICB2YXIgdG9sID0gMjsKKyAgICB2YXIgaXMzZCA9ICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8zRCB8
fCB0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgc3dpdGNoICh0YXJnZXQpIHsK
KyAgICAgIGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgY2FzZSBn
bC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICBjYXNlIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWToKKyAgICAgIGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZOgorICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICBj
YXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgbnVsbCk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCBudWxsKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgaWYgKGlzM2QpIHsKKyAg
ICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgdGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgfQorICAgIHNob3VsZEJlKCJn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURSIpOworCisgICAgdmFyIGRhdGE7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICBjYXNlIGdsLlVOU0lHTkVEX0lOVDoKKyAgICAgICAgZGF0YSA9IGdldFVpbnQzMkFycmF5KHRl
eFdpZHRoICogdGV4SGVpZ2h0ICogNCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBnbC5J
TlQ6CisgICAgICAgIGRhdGEgPSBnZXRJbnQzMkFycmF5KHRleFdpZHRoICogdGV4SGVpZ2h0ICog
NCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOgorICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgZGF0YSA9IGdldFVpbnQ4QXJyYXkodGV4V2lkdGggKiB0ZXhIZWln
aHQgKiA0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwg
dGV4V2lkdGgsIHRleEhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKworICAgIHZhciBrID0g
MDsKKyAgICB2YXIgZmFpbGVkX2V4Y2VwdGlvbnMgPSAwOworICAgIGZvciAodmFyIHkgPSAwOyB5
IDwgdGV4SGVpZ2h0OyArK3kpIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB0ZXhXaWR0
aDsgKyt4KSB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSAoeSAqIHRleFdpZHRoICsgeCkgKiA0
OworICAgICAgICAgICAgdmFyIGlzX2V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IGV4Y2VwdGlvbnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbnNbaWldLnggPT0geCAmJiBleGNlcHRpb25zW2lpXS55ID09IHkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaXNfZXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKE1hdGguYWJzKGRhdGFbaW5kZXhdIC0gZXhjZXB0aW9uc1tpaV0ucikgPiB0
b2wgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGRhdGFbaW5kZXggKyAxXSAt
IGV4Y2VwdGlvbnNbaWldLmcpID4gdG9sIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBNYXRo
LmFicyhkYXRhW2luZGV4ICsgMl0gLSBleGNlcHRpb25zW2lpXS5iKSA+IHRvbCB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoZGF0YVtpbmRleCArIDNdIC0gZXhjZXB0aW9uc1tp
aV0uYSkgPiB0b2wpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9leGNlcHRpb25z
Kys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoaXNfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZGF0YVtpbmRleCArIGldICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
aysrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICB2YXIgaW5mbyA9ICJMZXZlbCA9ICIgKyBsZXZlbDsKKyAgICBpZiAoaXMzZCkKKyAgICAg
ICAgaW5mbyAgKz0gIiwgbGF5ZXIgPSAiICsgbGF5ZXI7CisgICAgaW5mbyArPSAiIDogIjsKKyAg
ICBpZiAoaykgeworICAgICAgICB0ZXN0RmFpbGVkKGluZm8gKyAiZm91bmQgIiArIGsgKyAiIG5v
bi16ZXJvIGVsZW1lbnRzIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZChpbmZv
ICsgImFsbCBkYXRhIGluaXRpYWxpemVkIik7CisgICAgfQorICAgIGlmIChleGNlcHRpb25zLmxl
bmd0aCA+IDApIHsKKyAgICAgICAgaWYgKGZhaWxlZF9leGNlcHRpb25zKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKGluZm8gKyAiZm91bmQgIiArIGZhaWxlZF9leGNlcHRpb25zICsgIiBlbGVt
ZW50cyBpbmNvcnJlY3RseSBvdmVyd3JpdHRlbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZChpbmZvICsgImFsbCBpbml0aWFsaXplZCBlbGVtZW50cyBzdGF5IHVu
dG91Y2hlZCIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0VGV4SW1hZ2Uz
RCgpIHsKKworICAgIHZhciBtYXhfM2RfdGV4dHVyZV9zaXplID0gTWF0aC5taW4oZ2wuZ2V0UGFy
YW1ldGVyKGdsLk1BWF8zRF9URVhUVVJFX1NJWkUpLCAxMDI0KTsKKworICAgIHZhciB0ZXN0X2Nh
c2VzID0gWworICAgICAgLy8gVEVYVFVSRV8zRCArIFJHQkE4CisgICAgICB7CisgICAgICAgIHRh
cmdldDogIlRFWFRVUkVfM0QiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOCIsCisg
ICAgICAgIGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwK
KyAgICAgICAgcmVhZF90eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICB3aWR0aDogMjU2
LCAvLyBtaW5pbXVtIE1BWF8zRF9URVhUVVJFX1NJWkUgaXMgMjU2CisgICAgICAgIGhlaWdodDog
MjU2LAorICAgICAgICBkZXB0aDogOCwKKyAgICAgICAgZXhjZXB0aW9uczogWyB7IHg6IDAsIHk6
IDAsIHI6IDEwOCwgZzogNzIsIGI6IDM2LCBhOiA5IH0gXSwKKyAgICAgIH0sCisgICAgICB7Cisg
ICAgICAgIHRhcmdldDogIlRFWFRVUkVfM0QiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJS
R0JBOCIsCisgICAgICAgIGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdO
RURfQllURSwKKyAgICAgICAgcmVhZF90eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICB3
aWR0aDogMjU2LCAvLyBtaW5pbXVtIE1BWF8zRF9URVhUVVJFX1NJWkUgaXMgMjU2CisgICAgICAg
IGhlaWdodDogMjU2LAorICAgICAgICBkZXB0aDogOCwKKyAgICAgICAgZXhjZXB0aW9uczogW10s
CisgICAgICB9LAorICAgICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzNEIiwKKyAgICAg
ICAgaW50ZXJuYWxfZm9ybWF0OiAiUkdCQTgiLAorICAgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisg
ICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJlYWRfdHlwZTogZ2wuVU5T
SUdORURfQllURSwKKyAgICAgICAgd2lkdGg6IG1heF8zZF90ZXh0dXJlX3NpemUsCisgICAgICAg
IGhlaWdodDogbWF4XzNkX3RleHR1cmVfc2l6ZSwKKyAgICAgICAgZGVwdGg6IDQsCisgICAgICAg
IGV4Y2VwdGlvbnM6IFsgeyB4OiAwLCB5OiAxMjgsIHI6IDEwOCwgZzogNzIsIGI6IDM2LCBhOiA5
IH0gXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfM0QiLAor
ICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOCIsCisgICAgICAgIGZvcm1hdDogZ2wuUkdC
QSwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgcmVhZF90eXBlOiBn
bC5VTlNJR05FRF9CWVRFLAorICAgICAgICB3aWR0aDogbWF4XzNkX3RleHR1cmVfc2l6ZSwKKyAg
ICAgICAgaGVpZ2h0OiBtYXhfM2RfdGV4dHVyZV9zaXplLAorICAgICAgICBkZXB0aDogNCwKKyAg
ICAgICAgZXhjZXB0aW9uczogW10sCisgICAgICB9LAorCisgICAgICAvLyBURVhUVVJFXzNEICsg
UkdCQThVSQorICAgICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzNEIiwKKyAgICAgICAg
aW50ZXJuYWxfZm9ybWF0OiAiUkdCQThVSSIsCisgICAgICAgIGZvcm1hdDogZ2wuUkdCQV9JTlRF
R0VSLAorICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICByZWFkX3R5cGU6
IGdsLlVOU0lHTkVEX0lOVCwKKyAgICAgICAgd2lkdGg6IDI1NiwgLy8gbWluaW11bSBNQVhfM0Rf
VEVYVFVSRV9TSVpFIGlzIDI1NgorICAgICAgICBoZWlnaHQ6IDI1NiwKKyAgICAgICAgZGVwdGg6
IDgsCisgICAgICAgIGV4Y2VwdGlvbnM6IFsgeyB4OiAwLCB5OiAyNTUsIHI6IDEwOCwgZzogNzIs
IGI6IDM2LCBhOiA5IH0gXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRF
WFRVUkVfM0QiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOFVJIiwKKyAgICAgICAg
Zm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUs
CisgICAgICAgIHJlYWRfdHlwZTogZ2wuVU5TSUdORURfSU5ULAorICAgICAgICB3aWR0aDogMjU2
LCAvLyBtaW5pbXVtIE1BWF8zRF9URVhUVVJFX1NJWkUgaXMgMjU2CisgICAgICAgIGhlaWdodDog
MjU2LAorICAgICAgICBkZXB0aDogOCwKKyAgICAgICAgZXhjZXB0aW9uczogW10sCisgICAgICB9
LAorICAgICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzNEIiwKKyAgICAgICAgaW50ZXJu
YWxfZm9ybWF0OiAiUkdCQThVSSIsCisgICAgICAgIGZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLAor
ICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICByZWFkX3R5cGU6IGdsLlVO
U0lHTkVEX0lOVCwKKyAgICAgICAgd2lkdGg6IG1heF8zZF90ZXh0dXJlX3NpemUsCisgICAgICAg
IGhlaWdodDogbWF4XzNkX3RleHR1cmVfc2l6ZSwKKyAgICAgICAgZGVwdGg6IDQsCisgICAgICAg
IGV4Y2VwdGlvbnM6IFsgeyB4OiAxMjgsIHk6IDAsIHI6IDEwOCwgZzogNzIsIGI6IDM2LCBhOiA5
IH0gXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfM0QiLAor
ICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOFVJIiwKKyAgICAgICAgZm9ybWF0OiBnbC5S
R0JBX0lOVEVHRVIsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJl
YWRfdHlwZTogZ2wuVU5TSUdORURfSU5ULAorICAgICAgICB3aWR0aDogbWF4XzNkX3RleHR1cmVf
c2l6ZSwKKyAgICAgICAgaGVpZ2h0OiBtYXhfM2RfdGV4dHVyZV9zaXplLAorICAgICAgICBkZXB0
aDogNCwKKyAgICAgICAgZXhjZXB0aW9uczogW10sCisgICAgICB9LAorCisgICAgICAvLyBURVhU
VVJFXzNEICsgUkdCQThJCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfM0QiLAor
ICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOEkiLAorICAgICAgICBmb3JtYXQ6IGdsLlJH
QkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgICAgcmVhZF90eXBlOiBn
bC5JTlQsCisgICAgICAgIHdpZHRoOiAyNTYsIC8vIG1pbmltdW0gTUFYXzNEX1RFWFRVUkVfU0la
RSBpcyAyNTYKKyAgICAgICAgaGVpZ2h0OiAyNTYsCisgICAgICAgIGRlcHRoOiA4LAorICAgICAg
ICBleGNlcHRpb25zOiBbIHsgeDogMTI4LCB5OiAyNTUsIHI6IDEwOCwgZzogNzIsIGI6IDM2LCBh
OiA5IH0gXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfM0Qi
LAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOEkiLAorICAgICAgICBmb3JtYXQ6IGds
LlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgICAgcmVhZF90eXBl
OiBnbC5JTlQsCisgICAgICAgIHdpZHRoOiAyNTYsIC8vIG1pbmltdW0gTUFYXzNEX1RFWFRVUkVf
U0laRSBpcyAyNTYKKyAgICAgICAgaGVpZ2h0OiAyNTYsCisgICAgICAgIGRlcHRoOiA4LAorICAg
ICAgICBleGNlcHRpb25zOiBbXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDog
IlRFWFRVUkVfM0QiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOEkiLAorICAgICAg
ICBmb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAg
ICAgcmVhZF90eXBlOiBnbC5JTlQsCisgICAgICAgIHdpZHRoOiBtYXhfM2RfdGV4dHVyZV9zaXpl
LAorICAgICAgICBoZWlnaHQ6IG1heF8zZF90ZXh0dXJlX3NpemUsCisgICAgICAgIGRlcHRoOiA0
LAorICAgICAgICBleGNlcHRpb25zOiBbIHsgeDogMTI4LCB5OiAxMjgsIHI6IDEwOCwgZzogNzIs
IGI6IDM2LCBhOiA5IH0gXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRF
WFRVUkVfM0QiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOEkiLAorICAgICAgICBm
b3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgICAg
cmVhZF90eXBlOiBnbC5JTlQsCisgICAgICAgIHdpZHRoOiBtYXhfM2RfdGV4dHVyZV9zaXplLAor
ICAgICAgICBoZWlnaHQ6IG1heF8zZF90ZXh0dXJlX3NpemUsCisgICAgICAgIGRlcHRoOiA0LAor
ICAgICAgICBleGNlcHRpb25zOiBbXSwKKyAgICAgIH0sCisKKyAgICAgIC8vIFRFWFRVUkVfMkRf
QVJSQVkgKyBSR0JBOAorICAgICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzJEX0FSUkFZ
IiwKKyAgICAgICAgaW50ZXJuYWxfZm9ybWF0OiAiUkdCQTgiLAorICAgICAgICBmb3JtYXQ6IGds
LlJHQkEsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJlYWRfdHlw
ZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgd2lkdGg6IDEwMjQsCisgICAgICAgIGhlaWdo
dDogMTAyNCwKKyAgICAgICAgZGVwdGg6IDgsCisgICAgICAgIGV4Y2VwdGlvbnM6IFsgeyB4OiAx
MDIzLCB5OiAwLCByOiAxMDgsIGc6IDcyLCBiOiAzNiwgYTogOSB9IF0sCisgICAgICB9LAorICAg
ICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzJEX0FSUkFZIiwKKyAgICAgICAgaW50ZXJu
YWxfZm9ybWF0OiAiUkdCQTgiLAorICAgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgICAgIHR5
cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJlYWRfdHlwZTogZ2wuVU5TSUdORURfQllU
RSwKKyAgICAgICAgd2lkdGg6IDEwMjQsCisgICAgICAgIGhlaWdodDogMTAyNCwKKyAgICAgICAg
ZGVwdGg6IDgsCisgICAgICAgIGV4Y2VwdGlvbnM6IFtdLAorICAgICAgfSwKKyAgICAgIHsKKyAg
ICAgICAgdGFyZ2V0OiAiVEVYVFVSRV8yRF9BUlJBWSIsCisgICAgICAgIGludGVybmFsX2Zvcm1h
dDogIlJHQkE4IiwKKyAgICAgICAgZm9ybWF0OiBnbC5SR0JBLAorICAgICAgICB0eXBlOiBnbC5V
TlNJR05FRF9CWVRFLAorICAgICAgICByZWFkX3R5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAg
ICAgIHdpZHRoOiA2NCwKKyAgICAgICAgaGVpZ2h0OiA2NCwKKyAgICAgICAgZGVwdGg6IDI1Niwg
IC8vIG1pbmltdW0gTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTIGlzIDI1NgorICAgICAgICBleGNl
cHRpb25zOiBbIHsgeDogNjMsIHk6IDMyLCByOiAxMDgsIGc6IDcyLCBiOiAzNiwgYTogOSB9IF0s
CisgICAgICB9LAorICAgICAgeworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzJEX0FSUkFZIiwK
KyAgICAgICAgaW50ZXJuYWxfZm9ybWF0OiAiUkdCQTgiLAorICAgICAgICBmb3JtYXQ6IGdsLlJH
QkEsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJlYWRfdHlwZTog
Z2wuVU5TSUdORURfQllURSwKKyAgICAgICAgd2lkdGg6IDY0LAorICAgICAgICBoZWlnaHQ6IDY0
LAorICAgICAgICBkZXB0aDogMjU2LCAgLy8gbWluaW11bSBNQVhfQVJSQVlfVEVYVFVSRV9MQVlF
UlMgaXMgMjU2CisgICAgICAgIGV4Y2VwdGlvbnM6IFtdLAorICAgICAgfSwKKworICAgICAgLy8g
VEVYVFVSRV8yRF9BUlJBWSArIFJHQkE4VUkKKyAgICAgIHsKKyAgICAgICAgdGFyZ2V0OiAiVEVY
VFVSRV8yRF9BUlJBWSIsCisgICAgICAgIGludGVybmFsX2Zvcm1hdDogIlJHQkE4VUkiLAorICAg
ICAgICBmb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURf
QllURSwKKyAgICAgICAgcmVhZF90eXBlOiBnbC5VTlNJR05FRF9JTlQsCisgICAgICAgIHdpZHRo
OiAxMDI0LAorICAgICAgICBoZWlnaHQ6IDEwMjQsCisgICAgICAgIGRlcHRoOiA4LAorICAgICAg
ICBleGNlcHRpb25zOiBbIHsgeDogMTAyMywgeTogMTAyMywgcjogMTA4LCBnOiA3MiwgYjogMzYs
IGE6IDkgfSBdLAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdGFyZ2V0OiAiVEVYVFVSRV8y
RF9BUlJBWSIsCisgICAgICAgIGludGVybmFsX2Zvcm1hdDogIlJHQkE4VUkiLAorICAgICAgICBm
b3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwK
KyAgICAgICAgcmVhZF90eXBlOiBnbC5VTlNJR05FRF9JTlQsCisgICAgICAgIHdpZHRoOiAxMDI0
LAorICAgICAgICBoZWlnaHQ6IDEwMjQsCisgICAgICAgIGRlcHRoOiA4LAorICAgICAgICBleGNl
cHRpb25zOiBbXSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVf
MkRfQVJSQVkiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOFVJIiwKKyAgICAgICAg
Zm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsCisgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUs
CisgICAgICAgIHJlYWRfdHlwZTogZ2wuVU5TSUdORURfSU5ULAorICAgICAgICB3aWR0aDogNjQs
CisgICAgICAgIGhlaWdodDogNjQsCisgICAgICAgIGRlcHRoOiAyNTYsICAvLyBtaW5pbXVtIE1B
WF9BUlJBWV9URVhUVVJFX0xBWUVSUyBpcyAyNTYKKyAgICAgICAgZXhjZXB0aW9uczogWyB7IHg6
IDAsIHk6IDAsIHI6IDEwOCwgZzogNzIsIGI6IDM2LCBhOiA5IH0gXSwKKyAgICAgIH0sCisgICAg
ICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfMkRfQVJSQVkiLAorICAgICAgICBpbnRlcm5h
bF9mb3JtYXQ6ICJSR0JBOFVJIiwKKyAgICAgICAgZm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsCisg
ICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgIHJlYWRfdHlwZTogZ2wuVU5T
SUdORURfSU5ULAorICAgICAgICB3aWR0aDogNjQsCisgICAgICAgIGhlaWdodDogNjQsCisgICAg
ICAgIGRlcHRoOiAyNTYsICAvLyBtaW5pbXVtIE1BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyBpcyAy
NTYKKyAgICAgICAgZXhjZXB0aW9uczogW10sCisgICAgICB9LAorCisgICAgICAvLyBURVhUVVJF
XzJEX0FSUkFZICsgUkdCQThJCisgICAgICB7CisgICAgICAgIHRhcmdldDogIlRFWFRVUkVfMkRf
QVJSQVkiLAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQ6ICJSR0JBOEkiLAorICAgICAgICBmb3Jt
YXQ6IGdsLlJHQkFfSU5URUdFUiwKKyAgICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgICAgcmVh
ZF90eXBlOiBnbC5JTlQsCisgICAgICAgIHdpZHRoOiAxMDI0LAorICAgICAgICBoZWlnaHQ6IDEw
MjQsCisgICAgICAgIGRlcHRoOiA4LAorICAgICAgICBleGNlcHRpb25zOiBbIHsgeDogNTEyLCB5
OiAxMDIzLCByOiAxMDgsIGc6IDcyLCBiOiAzNiwgYTogOSB9IF0sCisgICAgICB9LAorICAgICAg
eworICAgICAgICB0YXJnZXQ6ICJURVhUVVJFXzJEX0FSUkFZIiwKKyAgICAgICAgaW50ZXJuYWxf
Zm9ybWF0OiAiUkdCQThJIiwKKyAgICAgICAgZm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsCisgICAg
ICAgIHR5cGU6IGdsLkJZVEUsCisgICAgICAgIHJlYWRfdHlwZTogZ2wuSU5ULAorICAgICAgICB3
aWR0aDogMTAyNCwKKyAgICAgICAgaGVpZ2h0OiAxMDI0LAorICAgICAgICBkZXB0aDogOCwKKyAg
ICAgICAgZXhjZXB0aW9uczogW10sCisgICAgICB9LAorICAgICAgeworICAgICAgICB0YXJnZXQ6
ICJURVhUVVJFXzJEX0FSUkFZIiwKKyAgICAgICAgaW50ZXJuYWxfZm9ybWF0OiAiUkdCQThJIiwK
KyAgICAgICAgZm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsCisgICAgICAgIHR5cGU6IGdsLkJZVEUs
CisgICAgICAgIHJlYWRfdHlwZTogZ2wuSU5ULAorICAgICAgICB3aWR0aDogNjQsCisgICAgICAg
IGhlaWdodDogNjQsCisgICAgICAgIGRlcHRoOiAyNTYsICAvLyBtaW5pbXVtIE1BWF9BUlJBWV9U
RVhUVVJFX0xBWUVSUyBpcyAyNTYKKyAgICAgICAgZXhjZXB0aW9uczogWyB7IHg6IDYzLCB5OiAz
MiwgcjogMTA4LCBnOiA3MiwgYjogMzYsIGE6IDkgfSBdLAorICAgICAgfSwKKyAgICAgIHsKKyAg
ICAgICAgdGFyZ2V0OiAiVEVYVFVSRV8yRF9BUlJBWSIsCisgICAgICAgIGludGVybmFsX2Zvcm1h
dDogIlJHQkE4SSIsCisgICAgICAgIGZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLAorICAgICAgICB0
eXBlOiBnbC5CWVRFLAorICAgICAgICByZWFkX3R5cGU6IGdsLklOVCwKKyAgICAgICAgd2lkdGg6
IDY0LAorICAgICAgICBoZWlnaHQ6IDY0LAorICAgICAgICBkZXB0aDogMjU2LCAgLy8gbWluaW11
bSBNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMgaXMgMjU2CisgICAgICAgIGV4Y2VwdGlvbnM6IFtd
LAorICAgICAgfSwKKworICAgICAgLy8gSWYgbW9yZSB0ZXN0cyBhcmUgYWRkZWQgaGVyZSwgbWFr
ZSBzdXJlIHRvIGluY3JlYXNlIHRoZSBzaXplIG9mCisgICAgICAvLyBzY3JhdGNoQnVmZmVyIGFi
b3ZlLCBpZiBuZWVkZWQuCisgICAgXTsKKworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0
X2Nhc2VzLmxlbmd0aDsgKytpaSkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHZhciB0
ZXN0ID0gdGVzdF9jYXNlc1tpaV07CisgICAgICAgIGRlYnVnKCJUZXhJbWFnZTNEIHdpdGggdGFy
Z2V0ID0gIiArIHRlc3QudGFyZ2V0ICsgIiwgaW50ZXJuYWxfZm9ybWF0ID0gIiArIHRlc3QuaW50
ZXJuYWxfZm9ybWF0ICsKKyAgICAgICAgICAgICAgIiwgd2lkdGggPSAiICsgdGVzdC53aWR0aCAr
ICIsIGhlaWdodCA9ICIgKyB0ZXN0LmhlaWdodCArICIsIGRlcHRoID0gIiArIHRlc3QuZGVwdGgp
OworICAgICAgICB2YXIgdGV4ID0gc2V0dXBUZXh0dXJlKGdsW3Rlc3QudGFyZ2V0XSwgdGVzdC53
aWR0aCwgdGVzdC5oZWlnaHQsIHRlc3QuZGVwdGgpOworICAgICAgICBnbC50ZXhJbWFnZTNEKGds
W3Rlc3QudGFyZ2V0XSwgMCwgZ2xbdGVzdC5pbnRlcm5hbF9mb3JtYXRdLCB0ZXN0LndpZHRoLCB0
ZXN0LmhlaWdodCwgdGVzdC5kZXB0aCwgMCwgdGVzdC5mb3JtYXQsIHRlc3QudHlwZSwgbnVsbCk7
CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCB0ZXN0LmV4Y2VwdGlvbnMubGVuZ3RoOyAr
K2pqKSB7CisgICAgICAgICAgICB2YXIgZXhjZXB0aW9uID0gdGVzdC5leGNlcHRpb25zW2pqXTsK
KyAgICAgICAgICAgIHZhciBkYXRhOworICAgICAgICAgICAgc3dpdGNoICh0ZXN0LnR5cGUpIHsK
KyAgICAgICAgICAgICAgY2FzZSBnbC5CWVRFOgorICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRJ
bnQ4QXJyYXkoNCAqIHRlc3QuZGVwdGgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgZGF0YSA9IGdl
dFVpbnQ4QXJyYXkoNCAqIHRlc3QuZGVwdGgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBwaXhlbCA9IDA7IHBpeGVsIDwgdGVzdC5k
ZXB0aDsgKytwaXhlbCkgeworICAgICAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0XSA9IGV4Y2Vw
dGlvbi5yOworICAgICAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgMV0gPSBleGNlcHRpb24u
ZzsKKyAgICAgICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDJdID0gZXhjZXB0aW9uLmI7Cisg
ICAgICAgICAgICAgICAgZGF0YVtwaXhlbCAqIDQgKyAzXSA9IGV4Y2VwdGlvbi5hOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbFt0ZXN0LnRhcmdldF0sIDAs
IGV4Y2VwdGlvbi54LCBleGNlcHRpb24ueSwgMCwgMSwgMSwgdGVzdC5kZXB0aCwgdGVzdC5mb3Jt
YXQsIHRlc3QudHlwZSwgZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIgbGF5ZXIg
PSAwOyBsYXllciA8IHRlc3QuZGVwdGg7ICsrbGF5ZXIpCisgICAgICAgICAgICBjaGVja05vblpl
cm9QaXhlbHModGV4LCBnbFt0ZXN0LnRhcmdldF0sIHRlc3QuZm9ybWF0LCB0ZXN0LnJlYWRfdHlw
ZSwgdGVzdC53aWR0aCwgdGVzdC5oZWlnaHQsIDAsIGxheWVyLCB0ZXN0LmV4Y2VwdGlvbnMpOwor
ICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgICAgIGdsLmZpbmlzaCgpOworICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0VGV4U3RvcmFnZTJEKCkgeworICAgIHZhciB0YXJnZXRzID0gWyAiVEVYVFVS
RV8yRCIsICJURVhUVVJFX0NVQkVfTUFQIiBdOworICAgIHZhciB3aWR0aCA9IDUxMjsKKyAgICB2
YXIgaGVpZ2h0ID0gNTEyOworICAgIHZhciBsZXZlbHMgPSA1OworCisgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHRhcmdldHMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZGVidWcoIlJlYWRpbmcgYW4gdW5pbml0aWFsaXplZCB0ZXh0dXJlICh0ZXhTdG9yYWdl
MkQpIHNob3VsZCBzdWNjZWVkIHdpdGggYWxsIGJ5dGVzIHNldCB0byAwIDogdGFyZ2V0ID0gIiAr
IHRhcmdldHNbaWldKTsKKyAgICAgICAgdmFyIHRleCA9IHNldHVwVGV4dHVyZShnbFt0YXJnZXRz
W2lpXV0sIHdpZHRoLCBoZWlnaHQsIDEpOworICAgICAgICBnbC50ZXhTdG9yYWdlMkQoZ2xbdGFy
Z2V0c1tpaV1dLCBsZXZlbHMsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZm9y
ICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgKytsZXZlbCkgeworICAgICAgICAgICAg
aWYgKGdsW3RhcmdldHNbaWldXSA9PSBnbC5URVhUVVJFXzJEKSB7CisgICAgICAgICAgICAgICAg
Y2hlY2tOb25aZXJvUGl4ZWxzKHRleCwgZ2xbdGFyZ2V0c1tpaV1dLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbCwgMCwgW10pOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBjaGVja05vblplcm9QaXhlbHModGV4LCBnbC5URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1gsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHdpZHRoLCBo
ZWlnaHQsIGxldmVsLCAwLCBbXSk7CisgICAgICAgICAgICAgICAgY2hlY2tOb25aZXJvUGl4ZWxz
KHRleCwgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbCwgMCwgW10pOworICAgICAgICAgICAgICAgIGNo
ZWNrTm9uWmVyb1BpeGVscyh0ZXgsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgd2lkdGgsIGhlaWdodCwgbGV2ZWwsIDAsIFtdKTsKKyAg
ICAgICAgICAgICAgICBjaGVja05vblplcm9QaXhlbHModGV4LCBnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1ksIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQsIGxl
dmVsLCAwLCBbXSk7CisgICAgICAgICAgICAgICAgY2hlY2tOb25aZXJvUGl4ZWxzKHRleCwgZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB3
aWR0aCwgaGVpZ2h0LCBsZXZlbCwgMCwgW10pOworICAgICAgICAgICAgICAgIGNoZWNrTm9uWmVy
b1BpeGVscyh0ZXgsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgd2lkdGgsIGhlaWdodCwgbGV2ZWwsIDAsIFtdKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgICAgIGds
LmZpbmlzaCgpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0VGV4U3RvcmFnZTNEKCkgeworICAgIHZhciB0YXJn
ZXRzID0gWyAiVEVYVFVSRV8zRCIsICJURVhUVVJFXzJEX0FSUkFZIiBdOworICAgIHZhciBpbnRl
cm5hbF9mb3JtYXRzID0gWyAiUkdCQTgiLCAiUkdCQThVSSIsICJSR0JBOEkiIF07CisgICAgdmFy
IGZvcm1hdHMgPSBbIGdsLlJHQkEsIGdsLlJHQkFfSU5URUdFUiwgZ2wuUkdCQV9JTlRFR0VSIF07
CisgICAgdmFyIHJlYWRfdHlwZXMgPSBbIGdsLlVOU0lHTkVEX0JZVEUsIGdsLlVOU0lHTkVEX0lO
VCwgZ2wuSU5UIF07CisgICAgdmFyIHdpZHRoID0gMjU2OyAgLy8gbWluaW11bSBNQVhfM0RfVEVY
VFVSRV9TSVpFIGlzIDI1NgorICAgIHZhciBoZWlnaHQgPSAyNTY7ICAvLyBtaW5pbXVtIE1BWF8z
RF9URVhUVVJFX1NJWkUgaXMgMjU2CisgICAgdmFyIGRlcHRoID0gODsKKyAgICB2YXIgbGV2ZWxz
ID0gNTsKKworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0YXJnZXRzLmxlbmd0aDsgKytpaSkg
eworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJSZWFkaW5nIGFuIHVuaW5pdGlh
bGl6ZWQgdGV4dHVyZSAodGV4U3RvcmFnZTNEKSBzaG91bGQgc3VjY2VlZCB3aXRoIGFsbCBieXRl
cyBzZXQgdG8gMCA6IHRhcmdldCA9ICIgKyB0YXJnZXRzW2lpXSk7CisgICAgICAgIGZvciAodmFy
IGpqID0gMDsgamogPCBpbnRlcm5hbF9mb3JtYXRzLmxlbmd0aDsgKytqaikgeworICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkludGVybmFsIGZvcm1hdCA6ICIgKyBp
bnRlcm5hbF9mb3JtYXRzW2pqXSk7CisgICAgICAgICAgICB2YXIgdGV4ID0gc2V0dXBUZXh0dXJl
KGdsW3RhcmdldHNbaWldXSwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgICAgICAgICAgZ2wu
dGV4U3RvcmFnZTNEKGdsW3RhcmdldHNbaWldXSwgbGV2ZWxzLCBnbFtpbnRlcm5hbF9mb3JtYXRz
W2pqXV0sIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICAgICAgICAgIHZhciBsZXZlbF9kZXB0
aCA9IGRlcHRoOworICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVs
czsgKytsZXZlbCkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGxheWVyID0gMDsgbGF5ZXIg
PCBsZXZlbF9kZXB0aDsgKytsYXllcikgeworICAgICAgICAgICAgICAgICAgICBjaGVja05vblpl
cm9QaXhlbHModGV4LCBnbFt0YXJnZXRzW2lpXV0sIGZvcm1hdHNbampdLCByZWFkX3R5cGVzW2pq
XSwgd2lkdGgsIGhlaWdodCwgbGV2ZWwsIGxheWVyLCBbXSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChnbFt0YXJnZXRzW2lpXV0gPT0gZ2wuVEVYVFVSRV8zRCkKKyAg
ICAgICAgICAgICAgICAgICAgbGV2ZWxfZGVwdGggPSBNYXRoLm1heCgxLCBsZXZlbF9kZXB0aCA+
PiAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsK
KyAgICAgICAgICAgIGdsLmZpbmlzaCgpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IpOworICAgICAgICB9CisgICAgfQorfQorCit0ZXN0VGV4SW1hZ2Uz
RCgpOwordGVzdFRleFN0b3JhZ2UyRCgpOwordGVzdFRleFN0b3JhZ2UzRCgpOworCitkZWJ1Zygi
Iik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9taXNjL3ZpZXdzLXdpdGgtb2Zmc2V0cy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL21pc2Mvdmll
d3Mtd2l0aC1vZmZzZXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU4OWI0Yjc4YWM1ODIzNzQ5YmZkY2Zi
NWEzOTdlMjY3NDc0NWJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9taXNjL3ZpZXdzLXdpdGgtb2Zm
c2V0cy5odG1sCkBAIC0wLDAgKzEsMzIwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29u
c3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGVzdHMgdGV4dHVyZSB1cGxvYWRzIHdpdGggQXJyYXlCdWZmZXJW
aWV3K29mZnNldHMiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChudWxsLCB1bmRlZmluZWQsIDIpOworY29uc29sZS5sb2coZ2wuZ2V0
UGFyYW1ldGVyKGdsLlZFUlNJT04pKTsKKworLy8vLworCitmdW5jdGlvbiBhcnJUb1N0cihhcnIp
IHsKKyAgcmV0dXJuICJbIiArIGFyci5tYXAoeCA9PiB4LnRvU3RyaW5nKCkpLmpvaW4oIiwgIikg
KyAiXSI7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlV2FzKHNob3VsZEJlLCB3YXMsIGluZm8pIHsK
KyAgdmFyIHRleHQgPSAiU2hvdWxkIGJlICIgKyBzaG91bGRCZSArICIsIHdhcyAiICsgd2FzICsg
Ii4iOworICBpZiAoaW5mbykgeworICAgIHRleHQgPSBpbmZvICsgIjogIiArIHRleHQ7CisgIH0K
KworICBpZiAoc2hvdWxkQmUgPT0gd2FzKSB7CisgICAgdGVzdFBhc3NlZCh0ZXh0KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKHRleHQpOworICAgIHJldHVy
biBmYWxzZTsKKyAgfQorfQorCitmdW5jdGlvbiBzaG91bGRCZVdhc0FycihzaG91bGRCZSwgd2Fz
LCBpbmZvKSB7CisgIGlmIChzaG91bGRCZS5sZW5ndGggIT0gd2FzLmxlbmd0aCkgeworICAgIHRl
c3RGYWlsZWQoIkxlbmd0aCBzaG91bGQgYmUgIiArIHNob3VsZEJlLmxlbmd0aCArICIsIHdhcyAi
ICsgd2FzLmxlbmd0aCArICIuIik7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJu
IHNob3VsZEJlV2FzKGFyclRvU3RyKHNob3VsZEJlKSwgYXJyVG9TdHIod2FzKSwgaW5mbyk7Cit9
CisKKy8vLy8KKworLy8gVGV4dHVyZXMKKwordmFyIGZpYkFyciA9IFsKKyAgMCwgMSwgMSwgMiwK
KyAgMywgNSwgOCwgMTMsCisgIDIxLCAzNCwgNTUsIDg5LAorICAxNDQsIDIzMywKK107CisKK3Zh
ciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKK2Z1bmN0aW9uIHByb2JlV2l0aEJhZE9m
ZnNldChmblRlc3QsIGluZm8pIHsKKyAgZm5UZXN0KCsoLTF8MCkpOworICBpZiAoIWdsLmdldEVy
cm9yKCkpIHsKKyAgICB0ZXN0RmFpbGVkKCJEb2VzIG5vdCBzdXBwb3J0ICIgKyBpbmZvICsgIiB3
aXRoIG9mZnNldHMgaW50byB2aWV3cy4iKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIGZuKHZpZXcsIG9mZnNldCwgZXhwZWN0ZWRFcnJvciwgZXhwZWN0
ZWRSZXN1bHQpCisKK2RvIHsKKyAgdmFyIHJlYWRQaXhlbFZpZXcgPSBuZXcgVWludDhBcnJheSg0
KTsKKyAgdmFyIHRlc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoZmliQXJyKTsKKworICBmdW5jdGlv
biB0ZXN0VGV4T3JTdWJJbWFnZShmdW5jTmFtZSwgZm5UZXhPclN1YkltYWdlKSB7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKGZ1bmNOYW1lKTsKKworICAgIHZhciBmblByb2JlID0gZnVuY3Rp
b24odmlld09mZnNldCkgeworICAgICAgZm5UZXhPclN1YkltYWdlKGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIHRlc3RWaWV3LCB2aWV3T2Zmc2V0KTsKKyAgICB9OworCisgICAgaWYgKCFwcm9i
ZVdpdGhCYWRPZmZzZXQoZm5Qcm9iZSwgZnVuY05hbWUpKQorICAgICAgcmV0dXJuOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPD0gdGVzdFZpZXcubGVuZ3RoKzE7IGkrKykgeworICAgICAgZGVi
dWcoIm9mZnNldD0iICsgaSk7CisKKyAgICAgIGZuVGV4T3JTdWJJbWFnZShnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCB0ZXN0VmlldywgaSk7CisKKyAgICAgIHZhciBlZmZlY3RpdmVWaWV3TGVu
ID0gdGVzdFZpZXcubGVuZ3RoIC0gaTsKKworICAgICAgaWYgKGVmZmVjdGl2ZVZpZXdMZW4gPj0g
NCkgeworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAg
ICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCByZWFkUGl4ZWxWaWV3KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IpOworICAgICAgICBzaG91bGRCZVdhc0Fycih0ZXN0Vmlldy5zbGljZShpLCBpKzQpLCBy
ZWFkUGl4ZWxWaWV3KTsKKworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgfQorICAgIH0KKworICAgIGRl
YnVnKCIiKTsKKworICAgIHZhciB5ZWxsb3c1NjUgPSAoMHgxZiA8PCAxMSkgfCAoMHgzZiA8PCA1
KTsKKyAgICB2YXIgY3lhbjU2NSA9ICgweDNmIDw8IDUpIHwgMHgxZjsKKyAgICB2YXIgYXJyNTY1
ID0gW3llbGxvdzU2NSwgY3lhbjU2NV07CisgICAgdmFyIHZpZXc1NjUgPSBuZXcgVWludDE2QXJy
YXkoYXJyNTY1KTsKKworICAgIGZ1bmN0aW9uIHJnYjg4OHRvNTY1KGFycjg4OCkgeworICAgICAg
cmV0dXJuICgoYXJyODg4WzBdID4+IDMpIDw8IDExKSB8ICgoYXJyODg4WzFdID4+IDIpIDw8IDUp
IHwgKGFycjg4OFsyXSA+PiAzKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBh
cnI1NjUubGVuZ3RoKzE7IGkrKykgeworICAgICAgZGVidWcoInJnYjU2NSwgb2Zmc2V0PSIgKyBp
KTsKKworICAgICAgZm5UZXhPclN1YkltYWdlKGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV82
XzUsIHZpZXc1NjUsIGkpOworCisgICAgICB2YXIgZWZmZWN0aXZlVmlld0xlbiA9IGFycjU2NS5s
ZW5ndGggLSBpOworCisgICAgICBpZiAoZWZmZWN0aXZlVmlld0xlbiA+PSAxKSB7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgICAgICBnbC5yZWFk
UGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRQaXhlbFZp
ZXcpOworICAgICAgICBkZWJ1ZyhhcnJUb1N0cihyZWFkUGl4ZWxWaWV3KSk7CisgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICAgICAgc2hvdWxkQmVXYXMo
YXJyNTY1W2ldLCByZ2I4ODh0bzU2NShyZWFkUGl4ZWxWaWV3KSk7CisKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgIH0KKyAgICB9CisgIH0KKworICB2YXIgZm4yRCA9IGZ1bmN0aW9uKGZvcm1hdCwgdHlw
ZSwgdmlldywgdmlld09mZnNldCkgeworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIHZpZXcsIHZpZXdPZmZzZXQpOworICB9
CisKKyAgdmFyIGZuU3ViMkQgPSBmdW5jdGlvbihmb3JtYXQsIHR5cGUsIHZpZXcsIHZpZXdPZmZz
ZXQpIHsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgMSwgMSwg
MCwgZm9ybWF0LCB0eXBlLCBudWxsKTsKKyAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIDEsIDEsIGZvcm1hdCwgdHlwZSwgdmlldywgdmlld09mZnNldCk7CisgIH0K
KworICB2YXIgZm4zRCA9IGZ1bmN0aW9uKGZvcm1hdCwgdHlwZSwgdmlldywgdmlld09mZnNldCkg
eworICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZm9ybWF0LCAxLCAxLCAxLCAw
LCBmb3JtYXQsIHR5cGUsIHZpZXcsIHZpZXdPZmZzZXQpOworICB9CisKKyAgdmFyIGZuU3ViM0Qg
PSBmdW5jdGlvbihmb3JtYXQsIHR5cGUsIHZpZXcsIHZpZXdPZmZzZXQpIHsKKyAgICBnbC50ZXhJ
bWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGZvcm1hdCwgMSwgMSwgMSwgMCwgZm9ybWF0LCB0eXBl
LCBudWxsKTsKKyAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAs
IDEsIDEsIDEsIGZvcm1hdCwgdHlwZSwgdmlldywgdmlld09mZnNldCk7CisgIH0KKworICAvLy8v
CisKKyAgdmFyIHRleDJkID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXgyZCk7CisKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYik7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4MmQsIDApOworCisgIHRlc3RUZXhP
clN1YkltYWdlKCJ0ZXhJbWFnZTJEIiwgZm4yRCk7CisgIHRlc3RUZXhPclN1YkltYWdlKCJ0ZXhT
dWJJbWFnZTJEIiwgZm5TdWIyRCk7CisKKyAgLy8vLworCisgIHZhciB0ZXgzZCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4M2QpOworICBn
bC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDEsIDEsIDEsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmIpOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleDNkLCAwLCAwKTsKKworICB0ZXN0VGV4T3JT
dWJJbWFnZSgidGV4SW1hZ2UzRCIsIGZuM0QpOworICB0ZXN0VGV4T3JTdWJJbWFnZSgidGV4U3Vi
SW1hZ2UzRCIsIGZuU3ViM0QpOworfSB3aGlsZSAoZmFsc2UpOworCisKK2RvIHsKKyAgdmFyIGNv
bXByZXNzZWRGb3JtYXQgPSAwOworICB2YXIgY29tcHJlc3NlZEJ5dGVDb3VudDsKKworICBpZiAo
Z2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpKSB7CisgICAg
dmFyIGUgPSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7
CisgICAgY29tcHJlc3NlZEZvcm1hdCA9IGUuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsK
KyAgICBjb21wcmVzc2VkQnl0ZUNvdW50ID0gODsKKyAgfSBlbHNlIGlmIChnbC5nZXRFeHRlbnNp
b24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSkgeworICAgIHZhciBlID0gZ2wuZ2V0
RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAgY29tcHJlc3Nl
ZEZvcm1hdCA9IGUuQ09NUFJFU1NFRF9SR0I4X0VUQzI7CisgICAgY29tcHJlc3NlZEJ5dGVDb3Vu
dCA9IDg7CisgIH0gZWxzZSB7CisgICAgZGVidWcoIk5vIGNvbXByZXNzZWQgdGV4dHVyZSBmb3Jt
YXQgZm91bmQuIFNraXBwaW5nIGNvbXByZXNzZWRUZXgoU3ViKUltYWdlIHRlc3RzLiIpOworICAg
IGJyZWFrOworICB9CisKKyAgLy8vLworCisgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoY29t
cHJlc3NlZEJ5dGVDb3VudCsxKTsKKworICB2YXIgZm4yRCA9IGZ1bmN0aW9uKHZpZXdPZmZzZXQp
IHsKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBjb21wcmVz
c2VkRm9ybWF0LCA0LCA0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcsIHZp
ZXdPZmZzZXQsIGNvbXByZXNzZWRCeXRlQ291bnQpOworICB9OworCisgIHZhciBmblN1YjJEID0g
ZnVuY3Rpb24odmlld09mZnNldCkgeworICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGNvbXByZXNzZWRGb3JtYXQsIDQsIDQsIDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmlldywgMCwgY29tcHJlc3NlZEJ5dGVDb3VudCk7CisgICAgZ2wuY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwgY29tcHJlc3Nl
ZEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LCB2aWV3T2Zmc2V0
LCBjb21wcmVzc2VkQnl0ZUNvdW50KTsKKyAgfTsKKworICB2YXIgZm4zRCA9IGZ1bmN0aW9uKHZp
ZXdPZmZzZXQpIHsKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FS
UkFZLCAwLCBjb21wcmVzc2VkRm9ybWF0LCA0LCA0LCAxLCAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZpZXcsIHZpZXdPZmZzZXQsIGNvbXByZXNzZWRCeXRlQ291bnQpOworICB9Owor
CisgIHZhciBmblN1YjNEID0gZnVuY3Rpb24odmlld09mZnNldCkgeworICAgIGdsLmNvbXByZXNz
ZWRUZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGNvbXByZXNzZWRGb3JtYXQsIDQs
IDQsIDEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldywgMCwgY29tcHJlc3Nl
ZEJ5dGVDb3VudCk7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8y
RF9BUlJBWSwgMCwgMCwgMCwgMCwgNCwgNCwgMSwgY29tcHJlc3NlZEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2aWV3LCB2aWV3T2Zmc2V0LCBjb21wcmVzc2VkQnl0ZUNv
dW50KTsKKyAgfTsKKworICAvLy8vCisKKyAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24oZnVuY05h
bWUsIGZuVG9UZXN0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKGZ1bmNOYW1lKTsKKwor
ICAgIGlmICghcHJvYmVXaXRoQmFkT2Zmc2V0KGZuVG9UZXN0LCBmdW5jTmFtZSkpCisgICAgICBy
ZXR1cm47CisKKyAgICB2YXIgdmlld0xlbmd0aCA9IHZpZXcubGVuZ3RoOworICAgIHZhciBzdWJW
aWV3TGVuZ3RoID0gY29tcHJlc3NlZEJ5dGVDb3VudDsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDw9IHZpZXdMZW5ndGgrMTsgaSsrKSB7CisgICAgICBkZWJ1Zygib2Zmc2V0PSIgKyBpKTsKKwor
ICAgICAgZm5Ub1Rlc3QoaSk7CisgICAgICB2YXIgZWZmZWN0aXZlVmlld0xlbiA9IHZpZXdMZW5n
dGggLSBpOworCisgICAgICBpZiAoZWZmZWN0aXZlVmlld0xlbiA+PSBzdWJWaWV3TGVuZ3RoKSB7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSk7CisgICAgICB9CisgICAgfQorICB9OworCisgIHZhciB0ZXgyZCA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MmQpOworICB0ZXN0RnVu
YygiY29tcHJlc3NlZFRleEltYWdlMkQiICAgLCBmbjJEICAgKTsKKyAgdGVzdEZ1bmMoImNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEIiwgZm5TdWIyRCk7CisKKyAgdmFyIHRleDNkID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgzZCk7
CisgIHRlc3RGdW5jKCJjb21wcmVzc2VkVGV4SW1hZ2UzRCIgICAsIGZuM0QgICApOworICB0ZXN0
RnVuYygiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLCBmblN1YjNEKTsKK30gd2hpbGUgKGZhbHNl
KTsKKworZG8geworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJyZWFkUGl4ZWxzIik7CisKKyAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICB2YXIgdGVzdENvbG9y
ID0gWzEwLCAyMCwgMzAsIDQwXTsKKyAgZ2wuY2xlYXJDb2xvcih0ZXN0Q29sb3JbMF0vMjU1LjAs
CisgICAgICAgICAgICAgICAgdGVzdENvbG9yWzFdLzI1NS4wLAorICAgICAgICAgICAgICAgIHRl
c3RDb2xvclsyXS8yNTUuMCwKKyAgICAgICAgICAgICAgICB0ZXN0Q29sb3JbM10vMjU1LjApOwor
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgdmFyIHJlYWRQaXhlbFZpZXcgPSBu
ZXcgVWludDhBcnJheSg2KTsKKworICBmdW5jdGlvbiBkb1JlYWRQaXhlbHModmlld09mZnNldCkg
eworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgcmVhZFBpeGVsVmlldywgdmlld09mZnNldCk7CisgICAgcmV0dXJuIHJlYWRQaXhlbFZpZXc7
CisgIH0KKworICBpZiAoIXByb2JlV2l0aEJhZE9mZnNldChkb1JlYWRQaXhlbHMsICJkb1JlYWRQ
aXhlbHMiKSkKKyAgICBicmVhazsKKworICBmb3IgKHZhciBpID0gMDsgaSA8PSByZWFkUGl4ZWxW
aWV3Lmxlbmd0aCsxOyBpKyspIHsKKyAgICBkZWJ1Zygib2Zmc2V0PSIgKyBpKTsKKyAgICB2YXIg
cmVzID0gZG9SZWFkUGl4ZWxzKGkpOworICAgIHZhciBlZmZlY3RpdmVWaWV3TGVuID0gcmVhZFBp
eGVsVmlldy5sZW5ndGggLSBpOworCisgICAgaWYgKGVmZmVjdGl2ZVZpZXdMZW4gPj0gNCkgewor
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgICAgc2hvdWxk
QmVXYXNBcnIodGVzdENvbG9yLCByZXMuc2xpY2UoaSxpKzQpKTsKKworICAgIH0gZWxzZSBpZiAo
ZWZmZWN0aXZlVmlld0xlbiA+PSAwKSB7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICB9IGVsc2UgeworICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgfQorICB9Cit9IHdoaWxlIChmYWxz
ZSk7CisKK2RlYnVnKCIiKQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtY3Jl
YXRpb24td29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtY3JlYXRpb24td29y
a2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM2MmEwYTRjZTU1MWZmMDUwYjVjNDVmZmM3NTQ4ZjE2MmU4
ZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvY29udGV4dC1jcmVhdGlv
bi13b3JrZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wyIENvbnRleHQgQ3JlYXRpb24gVGVzdCBm
b3IgT2Zmc2NyZWVuQ2FudmFzIGluIGEgd29ya2VyPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgV2ViR0wgY29u
dGV4dCBjYW4gYmUgY3JlYXRlZCBvbiBhbiBPZmZzY3JlZW5DYW52YXMuIik7CisKK2lmICghd2lu
ZG93Lk9mZnNjcmVlbkNhbnZhcykgeworICB0ZXN0UGFzc2VkKCJObyBPZmZzY3JlZW5DYW52YXMg
c3VwcG9ydCIpOworICBmaW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICB2YXIgd29ya2VyID0gbmV3
IFdvcmtlcignY29udGV4dC1jcmVhdGlvbi13b3JrZXIuanMnKTsKKyAgd29ya2VyLnBvc3RNZXNz
YWdlKCJTdGFydCB3b3JrZXIiKTsKKyAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsK
KyAgICBpZiAoZS5kYXRhID09ICJUZXN0IHBhc3NlZCIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIkFs
bCB0ZXN0cyBoYXZlIHBhc3NlZCIpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0RmFpbGVkKCJT
b21lIHRlc3RzIGZhaWxlZCIpOworICAgIH0KKyAgICBmaW5pc2hUZXN0KCk7CisgIH0KK30KKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFz
L2NvbnRleHQtY3JlYXRpb24td29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWNy
ZWF0aW9uLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2JmNDA2NDgyMzJkNTc0YTA3ZTliNTVjZWQ1
OTA3Y2UzOGUwZmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0
LWNyZWF0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDEzIEBACisvKgorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKyovCisKK2ltcG9ydFNjcmlwdHMoIi4uLy4uL2pzL3Rlc3RzL2Nh
bnZhcy10ZXN0cy11dGlscy5qcyIpOworc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7Cisg
ICAgaWYgKGNvbnRleHRDcmVhdGlvbignd2ViZ2wyJykpCisgICAgICBzZWxmLnBvc3RNZXNzYWdl
KCJUZXN0IHBhc3NlZCIpOworICAgIGVsc2UKKyAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlRlc3Qg
ZmFpbGVkIik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWNyZWF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL2NvbnRleHQtY3JlYXRpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jM2YxZDI2NTdkN2U3YjQ1ZmRjYWRiMmE0NzExMGM1ZTA0ZjEwYzdmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9jb250ZXh0LWNyZWF0aW9uLmh0bWwKQEAgLTAsMCAr
MSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMMiBDb250ZXh0IENyZWF0aW9uIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvdGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIFdl
YkdMMiBjb250ZXh0IGNhbiBiZSBjcmVhdGVkIG9uIGFuIE9mZnNjcmVlbkNhbnZhcy4iKTsKKwor
aWYgKCF3aW5kb3cuT2Zmc2NyZWVuQ2FudmFzKSB7CisgIHRlc3RQYXNzZWQoIk5vIE9mZnNjcmVl
bkNhbnZhcyBzdXBwb3J0Iik7Cit9IGVsc2UgeworICBpZiAoY29udGV4dENyZWF0aW9uKCd3ZWJn
bDInKSkgeworICAgIHRlc3RQYXNzZWQoIldlYkdMMiBjb250ZXh0IGNyZWF0ZWQgY29ycmVjdGx5
LiIpOworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIldlYkdMMiBjb250ZXh0IGNyZWF0aW9u
IGZhaWxlZCIpOworICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvbWV0aG9kcy0y
LXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9tZXRob2RzLTItd29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTgyZmQ1NTZhMjY3Y2JjYzQ2M2MyNTg5NWM4ZDIzYTJkYmVlODU4YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvbWV0aG9kcy0yLXdvcmtlci5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBNZXRob2RzIFRlc3QgZm9yIE9mZnNjcmVlbkNhbnZhcyBpbiBhIHdvcmtl
cjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgdGhlIFdlYkdMIGNvbnRleHQgY3JlYXRlZCBmb3IgYW4gT2Zmc2NyZWVu
Q2FudmFzIGhhcyBhbGwgdGhlIG1ldGhvZHMgaW4gdGhlIHNwZWNpZmljYXRpb24uIik7CisKK2lm
ICghd2luZG93Lk9mZnNjcmVlbkNhbnZhcykgeworICB0ZXN0UGFzc2VkKCJObyBPZmZzY3JlZW5D
YW52YXMgc3VwcG9ydCIpOworICBmaW5pc2hUZXN0KCk7Cit9IGVsc2UgeworICB2YXIgd29ya2Vy
ID0gbmV3IFdvcmtlcignbWV0aG9kcy0yLXdvcmtlci5qcycpOworICB3b3JrZXIucG9zdE1lc3Nh
Z2UoIlN0YXJ0IHdvcmtlciIpOworICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewor
ICAgIGlmIChlLmRhdGEgPT0gIlRlc3QgcGFzc2VkIikgeworICAgICAgdGVzdFBhc3NlZCgiQWxs
IHRlc3QgaGF2ZSBwYXNzZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgdGVzdEZhaWxlZCgiU29t
ZSB0ZXN0cyBmYWlsZWQiKTsKKyAgICB9CisgICAgZmluaXNoVGVzdCgpOworICB9Cit9CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9t
ZXRob2RzLTItd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9tZXRob2RzLTItd29ya2VyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk0YzEzNzhmMGQ4ZjgxZjc1MGE4YmQyNTdmYTIzZDZmNmQ3ZDgxOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL21ldGhvZHMtMi13b3JrZXIuanMKQEAg
LTAsMCArMSwxMyBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CitpbXBvcnRTY3JpcHRzKCIuLi8uLi9qcy90ZXN0cy9jYW52YXMtdGVzdHMtdXRpbHMuanMiKTsK
K3NlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgIGlmICh0ZXN0QVBJcygnd2ViZ2wy
JykpCisgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlRlc3QgcGFzc2VkIik7CisgICAgZWxzZQor
ICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJUZXN0IGZhaWxlZCIpOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L29mZnNjcmVlbmNhbnZhcy9tZXRob2RzLTIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvbWV0aG9k
cy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQyNTBmNTcyNGRjY2FkMjdiZWFiZDhkOGU5YWUzMzFjMzhj
YWIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvbWV0aG9kcy0yLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMMiBNZXRob2RzIFRlc3QgZm9yIE9mZnNjcmVlbkNhbnZhcyBpbiBh
IHdvcmtlcjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9jYW52YXMtdGVzdHMt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgV2ViR0wgY29udGV4dCBoYXMgYWxsIHRoZSBt
ZXRob2RzIGluIHRoZSBzcGVjaWZpY2F0aW9uLiIpOworCitpZiAoIXdpbmRvdy5PZmZzY3JlZW5D
YW52YXMpIHsKKyAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKK30g
ZWxzZSB7CisgIGlmICh0ZXN0QVBJcygnd2ViZ2wyJykpIHsKKyAgICB0ZXN0UGFzc2VkKCJBbGwg
V2ViR0wyIG1ldGhvZHMgZm91bmQiKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKCJTb21l
IFdlYkdMMiBtZXRob2RzIG5vdCBmb3VuZCIpOworICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3Jl
ZW5jYW52YXMvb2Zmc2NyZWVuY2FudmFzLXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy1xdWVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkOWU5MmU1MTFkMmFiMzZiNzIx
MWRiZjkyYzI3N2FhYjJmOTM2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFz
L29mZnNjcmVlbmNhbnZhcy1xdWVyeS5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5UZXN0IGZvciBRdWVyeSBv
YmplY3RzIHdpdGggT2Zmc2NyZWVuQ2FudmFzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
IDxzY3JpcHQgaWQ9J215V29ya2VyJyB0eXBlPSd0ZXh0L3dvcmtlcic+CisgIGZ1bmN0aW9uIHRp
Y2soY2FsbGJhY2spIHsKKyAgICAgIGZ1bmN0aW9uIHRpY2tJbXBsKCkgeworICAgICAgICAgIGNv
bnN0IHJlcyA9IGNhbGxiYWNrKCk7CisgICAgICAgICAgaWYgKHJlcykgeworICAgICAgICAgICAg
ICBpZiAocmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7CisgICAgICAgICAgICAgICAgICByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUodGlja0ltcGwpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dCh0aWNrSW1wbCwgMTApOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgfQorCisgICAgICB0aWNrSW1wbCgpOworICB9CisKKyAgc2VsZi5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICBsZXQgY2FudmFzID0gbmV3IE9mZnNjcmVl
bkNhbnZhcygxMjgsIDEyOCk7CisgICAgICBsZXQgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2Vi
Z2wyIik7CisgICAgICBsZXQgcXVlcnkgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgICAgZ2wuYmVn
aW5RdWVyeShnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLCBxdWVyeSk7CisgICAg
ICBnbC5lbmRRdWVyeShnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFKTsKKyAgICAg
IGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgICAgdGljayhmdW5jdGlvbigpIHsKKyAgICAgICAgICBjb25z
dCBzdGF0dXMgPSBnbC5nZXRRdWVyeVBhcmFtZXRlcihxdWVyeSwgZ2wuUVVFUllfUkVTVUxUX0FW
QUlMQUJMRSk7CisgICAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgICBzZWxmLnBv
c3RNZXNzYWdlKCJQQVNTRUQgLSBxdWVyeSBvYmplY3QgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBm
cm9tIHdvcmtlciIpOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgY29uc3QgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICAgICAg
ICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdl
KCJGQUlMRUQgLSBHTCBlcnJvciAiICsgZXJyKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0pOworICB9OworICA8L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICAidXNlIHN0
cmljdCI7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgcXVlcnkgb2Jq
ZWN0cyB3b3JrIHdpdGggdGhlIFdlYkdMIDIuMCBjb250ZXh0IGNyZWF0ZWQgdmlhIE9mZnNjcmVl
bkNhbnZhcy4iKTsKKyAgICBpZiAoIXdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAg
dGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAgICAgICAgZmluaXNo
VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibXlXb3JrZXIiKS50ZXh0Q29udGVudF0pOworICAgICAgdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7CisgICAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAgICAgaWYgKG1zZy5kYXRhLnN0
YXJ0c1dpdGgoIlBBU1NFRCIpKSB7CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnLmRhdGEp
OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnLmRhdGEp
OworICAgICAgICAgIH0KKyAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAgICB3
b3JrZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IFdvcmtlciIpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNh
bnZhcy1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZhcy1zeW5jLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGM3MGE2MGJiZGVkYzlhYmI5ZTA1OTU5YTI0YTk0Yjk5MmIzZDhjZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvb2Zmc2NyZWVuY2FudmFzLXN5bmMu
aHRtbApAQCAtMCwwICsxLDc3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdCBmb3IgU3luYyBvYmplY3RzIHdpdGggT2Zmc2NyZWVuQ2Fu
dmFzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgIDxzY3JpcHQgaWQ9J215V29ya2VyJyB0
eXBlPSd0ZXh0L3dvcmtlcic+CisgIGZ1bmN0aW9uIHRpY2soY2FsbGJhY2spIHsKKyAgICAgIGZ1
bmN0aW9uIHRpY2tJbXBsKCkgeworICAgICAgICAgIGNvbnN0IHJlcyA9IGNhbGxiYWNrKCk7Cisg
ICAgICAgICAgaWYgKHJlcykgeworICAgICAgICAgICAgICBpZiAocmVxdWVzdEFuaW1hdGlvbkZy
YW1lKSB7CisgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGlja0ltcGwp
OworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0
aWNrSW1wbCwgMTApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfQorCisg
ICAgICB0aWNrSW1wbCgpOworICB9CisKKyAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7
CisgICAgICBsZXQgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcygxMjgsIDEyOCk7CisgICAg
ICBsZXQgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wyIik7CisgICAgICBsZXQgc3luYyA9
IGdsLmZlbmNlU3luYyhnbC5TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisgICAgICBn
bC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgICBnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICAgIHRpY2soZnVuY3Rpb24oKSB7CisgICAgICAgICAgY29uc3Qg
c3RhdHVzID0gZ2wuZ2V0U3luY1BhcmFtZXRlcihzeW5jLCBnbC5TWU5DX1NUQVRVUyk7CisgICAg
ICAgICAgaWYgKHN0YXR1cyA9PSBnbC5TSUdOQUxFRCkgeworICAgICAgICAgICAgICBzZWxmLnBv
c3RNZXNzYWdlKCJQQVNTRUQgLSBTeW5jIG9iamVjdCBzaWduYWxlZCBzdWNjZXNzZnVsbHkgZnJv
bSB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgIGNvbnN0IGVyciA9IGdsLmdldEVycm9yKCk7CisgICAgICAgICAg
ICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgi
RkFJTEVEIC0gR0wgZXJyb3IgIiArIGVycik7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICB9KTsKKyAgfTsKKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQ+CisgICAgInVzZSBzdHJp
Y3QiOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHN5bmMgb2JqZWN0
cyB3b3JrIHdpdGggdGhlIFdlYkdMIDIuMCBjb250ZXh0IGNyZWF0ZWQgdmlhIE9mZnNjcmVlbkNh
bnZhcy4iKTsKKyAgICBpZiAoIXdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAgICAgICAgZmluaXNoVGVz
dCgpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibXlXb3JrZXIiKS50ZXh0Q29udGVudF0pOworICAgICAgdmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7CisgICAgICB3b3JrZXIu
b25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAgICAgaWYgKG1zZy5kYXRhLnN0YXJ0
c1dpdGgoIlBBU1NFRCIpKSB7CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnLmRhdGEpOwor
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnLmRhdGEpOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IFdvcmtlciIpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZh
cy10aW1lci1xdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9vZmZzY3JlZW5jYW52YXMtdGlt
ZXItcXVlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzE0OTU2ZmQxNGU2MGE4ZjZjYWQ4MDZhMjQzNDFi
MzFlYmZhMTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL29mZnNjcmVlbmNhbnZhcy9vZmZzY3JlZW5j
YW52YXMtdGltZXItcXVlcnkuaHRtbApAQCAtMCwwICsxLDg0IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdCBmb3IgVGltZXIgUXVlcnkg
b2JqZWN0cyB3aXRoIE9mZnNjcmVlbkNhbnZhczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICA8c2NyaXB0IGlkPSdteVdvcmtlcicgdHlwZT0ndGV4dC93b3JrZXInPgorICBmdW5jdGlvbiB0
aWNrKGNhbGxiYWNrKSB7CisgICAgICBmdW5jdGlvbiB0aWNrSW1wbCgpIHsKKyAgICAgICAgICBj
b25zdCByZXMgPSBjYWxsYmFjaygpOworICAgICAgICAgIGlmIChyZXMpIHsKKyAgICAgICAgICAg
ICAgaWYgKHJlcXVlc3RBbmltYXRpb25GcmFtZSkgeworICAgICAgICAgICAgICAgICAgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKHRpY2tJbXBsKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQodGlja0ltcGwsIDEwKTsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdGlja0ltcGwoKTsKKyAgfQorCisgIHNlbGYu
b25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgICAgbGV0IGNhbnZhcyA9IG5ldyBPZmZzY3Jl
ZW5DYW52YXMoMTI4LCAxMjgpOworICAgICAgbGV0IGdsID0gY2FudmFzLmdldENvbnRleHQoIndl
YmdsMiIpOworICAgICAgbGV0IGV4dCA9IGdsLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3Rp
bWVyX3F1ZXJ5X3dlYmdsMiIpOworICAgICAgaWYgKCFleHQpIHsKKyAgICAgICAgICBzZWxmLnBv
c3RNZXNzYWdlKCJQQVNTRUQgLSBubyBFWFRfZGlzam9pbnRfdGltZXJfcXVlcnlfd2ViZ2wyIGV4
dGVuc2lvbiAtIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICB9CisgICAgICBsZXQgcXVlcnkgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgICAgZ2wuYmVnaW5R
dWVyeShleHQuVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOworICAgICAgZ2wuZW5kUXVlcnkoZXh0
LlRJTUVfRUxBUFNFRF9FWFQpOworICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAx
LjApOworICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICB0aWNrKGZ1
bmN0aW9uKCkgeworICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGdsLmdldFF1ZXJ5UGFyYW1ldGVy
KHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKTsKKyAgICAgICAgICBpZiAoc3RhdHVz
KSB7CisgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlBBU1NFRCAtIHRpbWVyIHF1ZXJ5
IG9iamVjdCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9uIHdvcmtlciIpOworICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgY29uc3Qg
ZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAg
ICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMRUQgLSBHTCBlcnJvciAiICsgZXJy
KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0pOworICB9OworICA8L3Nj
cmlwdD4KKyAgPHNjcmlwdD4KKyAgICAidXNlIHN0cmljdCI7CisgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgdGltZXIgcXVlcnkgb2JqZWN0cyB3b3JrIHdpdGggdGhlIFdl
YkdMIDIuMCBjb250ZXh0IGNyZWF0ZWQgdmlhIE9mZnNjcmVlbkNhbnZhcy4iKTsKKyAgICBpZiAo
IXdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT2Zmc2Ny
ZWVuQ2FudmFzIHN1cHBvcnQiKTsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0gZWxzZSB7
CisgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlX
b3JrZXInKS50ZXh0Q29udGVudF0pOworICAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoVVJM
LmNyZWF0ZU9iamVjdFVSTChibG9iKSk7CisgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rp
b24obXNnKSB7CisgICAgICAgICAgaWYgKG1zZy5kYXRhLnN0YXJ0c1dpdGgoIlBBU1NFRCIpKSB7
CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnLmRhdGEpOworICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnLmRhdGEpOworICAgICAgICAgIH0KKyAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIlN0
YXJ0IFdvcmtlciIpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVlbmNhbnZhcy10cmFuc2Zlci1pbWFnZS1i
aXRtYXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9vZmZzY3JlZW5jYW52YXMvb2Zmc2NyZWVuY2FudmFzLXRyYW5zZmVyLWlt
YWdlLWJpdG1hcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiOTIzMmI2NWFkNTg2ZWZiODFjZTM4YWM3ZGUw
Njc4MzFhYzc0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvb2Zmc2NyZWVuY2FudmFzL29mZnNjcmVl
bmNhbnZhcy10cmFuc2Zlci1pbWFnZS1iaXRtYXAuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdCBmb3Ig
T2Zmc2NyZWVuQ2FudmFzIFRyYW5zZmVyVG9JbWFnZUJpdG1hcDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb2Zmc2NyZWVuY2FudmFzLXRyYW5zZmVy
LWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgPHNjcmlw
dCBpZD0nbXlXb3JrZXInIHR5cGU9J3RleHQvd29ya2VyJz4KKyAgc2VsZi5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihlKSB7CisgICAgICB2YXIgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcygxMjgs
IDEyOCk7CisgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wyIik7CisgICAg
ICBnbC5jbGVhckNvbG9yKDEuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKKyAgICAgIHZhciBpbWFnZSA9IGNhbnZhcy50cmFuc2ZlclRvSW1h
Z2VCaXRtYXAoKTsKKworICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IGJpdG1hcDogaW1hZ2UgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgWyBpbWFnZSBdKTsKKyAgfTsKKyAgPC9zY3JpcHQ+Cisg
IDxzY3JpcHQ+CisgICAgInVzZSBzdHJpY3QiOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IHRoZSB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgZnVuY3Rpb24gb2YgT2Zmc2Ny
ZWVuQ2FudmFzIHdlYmdsMiBjb250ZXh0IGlzIGZ1bmN0aW9uYWwuIik7CisgICAgaWYgKCF3aW5k
b3cuT2Zmc2NyZWVuQ2FudmFzKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIE9mZnNjcmVlbkNh
bnZhcyBzdXBwb3J0Iik7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215V29ya2Vy
JykudGV4dENvbnRlbnRdKTsKKyAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKFVSTC5jcmVh
dGVPYmplY3RVUkwoYmxvYikpOworCisgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24o
bXNnKSB7CisgICAgICAgICAgdGVzdFRyYW5zZmVyVG9JbWFnZUJpdG1hcCgid2ViZ2wyIiwgbXNn
LmRhdGEuYml0bWFwKTsKKyAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAgICB3
b3JrZXIucG9zdE1lc3NhZ2UoIlN0YXJ0IFdvcmtlciIpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcHJvZ3JhbXMvYWN0aXZlLWJ1aWx0LWluLWF0
dHJpYnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9hY3RpdmUtYnVpbHQtaW4tYXR0cmlicy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY4YjYyY2RjZjJmMjA0ODEyOWZlYTJiMWY3OTNhOWFhNDE2MjhhYjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcHJvZ3JhbXMvYWN0aXZlLWJ1aWx0LWluLWF0dHJpYnMuaHRtbApAQCAtMCww
ICsxLDg2IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0czogVmVyaWZ5IHZhbGlkYXRpb24gZm9y
IGFjdGl2ZSBidWlsdC1pbiBhdHRyaWJzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6
IDY0cHg7IGhlaWdodDogNjRweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAg
ZXMKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1ZlcnRleElEICUgMiwg
KGdsX1ZlcnRleElELzIpICUgMiwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0i
ZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBmcmFnQ29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGZy
YWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdmFsaWRhdGlvbiBm
b3IgYWN0aXZlIGJ1aWx0LWluIGF0dHJpYnMuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsK
KworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworICBy
dW5UZXN0cygpOworfQorCit2YXIgYWN0aXZlSW5mbywgYXR0cmliTG9jOworCitmdW5jdGlvbiBy
dW5UZXN0cygpIHsKKyAgdmFyIHByb2cgPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZz
Il0pOworICBpZiAoIXByb2cpIHsKKyAgICB0ZXN0RmFpbGVkKCJTZXQgdXAgcHJvZ3JhbSBmYWls
ZWQiKTsKKyAgICByZXR1cm47CisgIH0KKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJObyBHTCBlcnJvciBmcm9tIHNldCB1cCIpOworCisgIHZhciBudW1BY3RpdmUgPSBn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2csIGdsLkFDVElWRV9BVFRSSUJVVEVTKTsKKyAgaWYg
KG51bUFjdGl2ZSAhPSAxKSB7CisgICAgdGVzdEZhaWxlZCgnQUNUSVZFX0FUVFJJQlVURVMgc2hv
dWxkIGJlIDEuJyk7CisgICAgcmV0dXJuOworICB9CisgIHRlc3RQYXNzZWQoJ0FDVElWRV9BVFRS
SUJVVEVTIHNob3VsZCBiZSAxLicpOworCisgIGFjdGl2ZUluZm8gPSBnbC5nZXRBY3RpdmVBdHRy
aWIocHJvZywgMCk7CisgIGlmICghYWN0aXZlSW5mbykgeworICAgIHRlc3RGYWlsZWQoJ2dldEFj
dGl2ZUF0dHJpYiBzaG91bGQgcmV0dXJuIGFuIGluZm8gb2JqZWN0LicpOworICAgIHJldHVybjsK
KyAgfQorCisgIHNob3VsZEJlKCdhY3RpdmVJbmZvLm5hbWUnLCAnImdsX1ZlcnRleElEIicpOwor
ICBhdHRyaWJMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9nLCAnZ2xfVmVydGV4SUQnKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgYWJsZSB0
byByZXF1ZXN0IHRoZSBsb2NhdGlvbiBvZiBhIGJ1aWx0LWluLiIpOworICBzaG91bGRCZSgnYXR0
cmliTG9jJywgJy0xJyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Byb2dyYW1zL2dsLWdldC1mcmFnLWRh
dGEtbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY2NjI4MmMwNGY0ZGZlNmE5MDcwMzY0NDFkYjg4NGQ0MGY4MzU1YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLmh0
bWwKQEAgLTAsMCArMSwxMDAgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3RzOiBWZXJpZnkgZ2V0
RnJhZ0RhdGFMb2NhdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA0cHg7IGhl
aWdodDogNHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJ2cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcwordm9pZCBt
YWluKCkgeworICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4K
KworPHNjcmlwdCBpZD0iZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMw
MCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQg
dmVjNCBmcmFnQ29sb3IwOworbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgZnJhZ0NvbG9y
MTsKK3ZvaWQgbWFpbigpIHsKKyAgZnJhZ0NvbG9yMCA9IHZlYzQoMCwgMSwgMCwgMSk7CisgIGZy
YWdDb2xvcjEgPSB2ZWM0KDEsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9
ImZzLWFycmF5IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgZnJhZ0NvbG9yWzJdOwordm9pZCBtYWlu
KCkgeworICBmcmFnQ29sb3JbMF0gPSB2ZWM0KDAsIDEsIDAsIDEpOworICBmcmFnQ29sb3JbMV0g
PSB2ZWM0KDEsIDAsIDAsIDEpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIGdldEZyYWdEYXRhTG9jYXRpb24g
YmVoYXZpb3JzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7CisKK2lmICghZ2wpIHsKKyAg
dGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAg
dGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKyAgcnVuVGVzdHMoKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2cyIsICJmcyJdKTsKKyAgdmFyIHByb2dyYW1BcnJheSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsidnMiLCAiZnMtYXJyYXkiXSk7CisgIGlmICghcHJvZ3JhbSB8fCAhcHJvZ3JhbUFycmF5
KSB7CisgICAgdGVzdEZhaWxlZCgiU2V0IHVwIHByb2dyYW0gZmFpbGVkIik7CisgICAgcmV0dXJu
OworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gR0wgZXJy
b3IgZnJvbSBzZXQgdXAiKTsKKworICB2YXIgbG9jMCA9IGdsLmdldEZyYWdEYXRhTG9jYXRpb24o
cHJvZ3JhbSwgImZyYWdDb2xvcjAiKTsKKyAgdmFyIGxvYzEgPSBnbC5nZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW0sICJmcmFnQ29sb3IxIik7CisgIGlmIChsb2MwICE9IDIgfHwgbG9jMSAhPSAw
KSB7CisgICAgdGVzdEZhaWxlZCgiRmFpbCB0byBxdWVyeSBzY2FsYXIgb3V0cHV0IHZhcmlhYmxl
IGxvY2F0aW9ucywgIiArCisgICAgICAgICAgICAgICAiZXhwZWN0ZWQ6IGZyYWdDb2xvcjAtPjIs
IGZyYWdDb2xvcjEtPjAsICIgKworICAgICAgICAgICAgICAgImdvdDogZnJhZ0NvbG9yMC0+IiAr
IGxvYzAgKyAiLCBmcmFnQ29sb3IxLT4iICsgbG9jMSk7CisgIH0gZWxzZSB7CisgICAgdGVzdFBh
c3NlZCgiZ2V0RnJhZ0RhdGFMb2NhdGlvbiBvbiBzY2FsYXIgdmFyaWFibGVzIHdvcmtzIGZpbmUi
KTsKKyAgfQorCisgIHZhciBsb2MgPSBnbC5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW1BcnJh
eSwgImZyYWdDb2xvciIpOworICBsb2MwID0gZ2wuZ2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFt
QXJyYXksICJmcmFnQ29sb3JbMF0iKTsKKyAgbG9jMSA9IGdsLmdldEZyYWdEYXRhTG9jYXRpb24o
cHJvZ3JhbUFycmF5LCAiZnJhZ0NvbG9yWzFdIik7CisgIGlmIChsb2MgPCAwIHx8IGxvYzAgPCAw
IHx8IGxvYzEgPCAwIHx8IGxvYyAhPSBsb2MwIHx8IGxvYzAgKyAxICE9IGxvYzEpIHsKKyAgICB0
ZXN0RmFpbGVkKCJGYWlsIHRvIHF1ZXJ5IHNjYWxhciBvdXRwdXQgdmFyaWFibGUgbG9jYXRpb25z
LCAiICsKKyAgICAgICAgICAgICAgICJleHBlY3RlZDogZnJhZ0NvbG9yLT4wLCBmcmFnQ29sb3Jb
MF0tPjAsIGZyYWdDb2xvclsxXS0+MSwgIiArCisgICAgICAgICAgICAgICAiZ290OiBmcmFnQ29s
b3ItPiIgKyBsb2MgKyAiLCBmcmFnQ29sb3JbMF0tPiIgKyBsb2MwICsgIiwgZnJhZ0NvbG9yWzFd
LT4iICsgbG9jMSk7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiZ2V0RnJhZ0RhdGFMb2Nh
dGlvbiBvbiB2YXJpYWJsZSBhcnJheXMgd29ya3MgZmluZSIpOworICB9CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gR0wgZXJyb3IgZnJvbSB0ZXN0aW5nIik7Cit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3Byb2dyYW1zL3NhbXBsZXItdW5pZm9ybXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9wcm9ncmFt
cy9zYW1wbGVyLXVuaWZvcm1zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmNjBkM2VlMzliNGZiOWVjZjIx
Y2I2YmViMWYwMDc1N2VkYjMzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9zYW1wbGVy
LXVuaWZvcm1zLmh0bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMMiBnZXRBY3RpdmVVbmlmb3JtIGNv
bmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMw
MCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIG1lZGl1bXAgJHR5cGUgdW5p
Zm9ybTA7CitvdXQgdmVjNCBteUZyYWdDb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgbXlGcmFn
Q29sb3IgPSB2ZWM0KDAsJGFjY2VzcywwLDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3RzIGdldEFjdGl2ZVVuaWZvcm0gZm9yIHZhcmlv
dXMgdHlwZXMiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK3ZhciB0ZXN0cyA9IFsK
KyAgeyBnbFR5cGU6IGdsLlNBTVBMRVJfMkQsICAgc2l6ZTogMSwgdHlwZTogJ3NhbXBsZXIyRCcs
ICAgYWNjZXNzOiAndGV4dHVyZSh1bmlmb3JtMCwgdmVjMigwLDApKS54J30sCisgIHsgZ2xUeXBl
OiBnbC5TQU1QTEVSX0NVQkUsIHNpemU6IDEsIHR5cGU6ICdzYW1wbGVyQ3ViZScsIGFjY2Vzczog
J3RleHR1cmUodW5pZm9ybTAsIHZlYzMoMCwxLDApKS54J30sCisgIHsgZ2xUeXBlOiBnbC5TQU1Q
TEVSXzNELCAgIHNpemU6IDEsIHR5cGU6ICdzYW1wbGVyM0QnLCAgIGFjY2VzczogJ3RleHR1cmUo
dW5pZm9ybTAsIHZlYzMoMCwxLDApKS54J30sCisgIHsgZ2xUeXBlOiBnbC5TQU1QTEVSXzJEX0FS
UkFZLCBzaXplOiAxLCB0eXBlOiAnc2FtcGxlcjJEQXJyYXknLCBhY2Nlc3M6ICd0ZXh0dXJlKHVu
aWZvcm0wLCB2ZWMzKDAsMSwwKSkueCd9LAorCisgIHsgZ2xUeXBlOiBnbC5TQU1QTEVSXzJEX1NI
QURPVywgICBzaXplOiAxLCB0eXBlOiAnc2FtcGxlcjJEU2hhZG93JywgICBhY2Nlc3M6ICd0ZXh0
dXJlKHVuaWZvcm0wLCB2ZWMzKDAsMSwwKSknfSwKKyAgeyBnbFR5cGU6IGdsLlNBTVBMRVJfQ1VC
RV9TSEFET1csIHNpemU6IDEsIHR5cGU6ICdzYW1wbGVyQ3ViZVNoYWRvdycsIGFjY2VzczogJ3Rl
eHR1cmUodW5pZm9ybTAsIHZlYzQoMCwxLDAsMCkpJ30sCisgIHsgZ2xUeXBlOiBnbC5TQU1QTEVS
XzJEX0FSUkFZX1NIQURPVywgc2l6ZTogMSwgdHlwZTogJ3NhbXBsZXIyREFycmF5U2hhZG93Jywg
YWNjZXNzOiAndGV4dHVyZSh1bmlmb3JtMCwgdmVjNCgwLDEsMCwwKSknfSwKKworICB7IGdsVHlw
ZTogZ2wuSU5UX1NBTVBMRVJfMkQsICAgc2l6ZTogMSwgdHlwZTogJ2lzYW1wbGVyMkQnLCAgIGFj
Y2VzczogJ3RleHR1cmUodW5pZm9ybTAsIHZlYzIoMCwwKSkueCd9LAorICB7IGdsVHlwZTogZ2wu
SU5UX1NBTVBMRVJfQ1VCRSwgc2l6ZTogMSwgdHlwZTogJ2lzYW1wbGVyQ3ViZScsIGFjY2Vzczog
J3RleHR1cmUodW5pZm9ybTAsIHZlYzMoMCwxLDApKS54J30sCisgIHsgZ2xUeXBlOiBnbC5JTlRf
U0FNUExFUl8zRCwgICBzaXplOiAxLCB0eXBlOiAnaXNhbXBsZXIzRCcsICAgYWNjZXNzOiAndGV4
dHVyZSh1bmlmb3JtMCwgdmVjMygwLDEsMCkpLngnfSwKKyAgeyBnbFR5cGU6IGdsLklOVF9TQU1Q
TEVSXzJEX0FSUkFZLCAgIHNpemU6IDEsIHR5cGU6ICdpc2FtcGxlcjJEQXJyYXknLCAgIGFjY2Vz
czogJ3RleHR1cmUodW5pZm9ybTAsIHZlYzMoMCwxLDApKS54J30sCisKKyAgeyBnbFR5cGU6IGds
LlVOU0lHTkVEX0lOVF9TQU1QTEVSXzJELCAgIHNpemU6IDEsIHR5cGU6ICd1c2FtcGxlcjJEJywg
ICBhY2Nlc3M6ICd0ZXh0dXJlKHVuaWZvcm0wLCB2ZWMyKDAsMCkpLngnfSwKKyAgeyBnbFR5cGU6
IGdsLlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUsIHNpemU6IDEsIHR5cGU6ICd1c2FtcGxlckN1
YmUnLCBhY2Nlc3M6ICd0ZXh0dXJlKHVuaWZvcm0wLCB2ZWMzKDAsMSwwKSkueCd9LAorICB7IGds
VHlwZTogZ2wuVU5TSUdORURfSU5UX1NBTVBMRVJfM0QsICAgc2l6ZTogMSwgdHlwZTogJ3VzYW1w
bGVyM0QnLCAgIGFjY2VzczogJ3RleHR1cmUodW5pZm9ybTAsIHZlYzMoMCwxLDApKS54J30sCisg
IHsgZ2xUeXBlOiBnbC5VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWSwgICBzaXplOiAxLCB0
eXBlOiAndXNhbXBsZXIyREFycmF5JywgICBhY2Nlc3M6ICd0ZXh0dXJlKHVuaWZvcm0wLCB2ZWMz
KDAsMSwwKSkueCd9LAorXTsKKwordmFyIHZzID0gd3R1LmxvYWRTaGFkZXJGcm9tU2NyaXB0KGds
LCAndnNoYWRlcicsIGdsLlZFUlRFWF9TSEFERVIpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmc2hhZGVyJykudGV4dDsKKworZnVuY3Rpb24gY3JlYXRlUHJvZ3JhbSh0
eXBlLCBhY2Nlc3MpIHsKKyAgdmFyIGZzID0gd3R1LmxvYWRTaGFkZXIoCisgICAgICBnbCwKKyAg
ICAgIHNvdXJjZS5yZXBsYWNlKCckdHlwZScsIHR5cGUpLnJlcGxhY2UoJyRhY2Nlc3MnLCBhY2Nl
c3MpLAorICAgICAgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0
dXBQcm9ncmFtKGdsLCBbdnMsIGZzXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAibm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAgcmV0dXJuIHByb2dyYW07Cit9CisK
K2ZvciAodmFyIHR0ID0gMDsgdHQgPCB0ZXN0cy5sZW5ndGg7ICsrdHQpIHsKKyAgdmFyIHQgPSB0
ZXN0c1t0dF07CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRlc3RpbmcgdW5pZm9ybSBzYW1wbGVy
IHR5cGUgOiAiICsgdC50eXBlKTsKKyAgdmFyIHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKHQudHlw
ZSwgdC5hY2Nlc3MpOworICB2YXIgbnVtVW5pZm9ybXMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUyk7CisgIGFzc2VydE1zZyhudW1Vbmlmb3JtcyA+
PSAxLCAiYXQgbGVhc3QgMSBzYW1wbGVyIHVuaWZvcm0iKTsKKyAgdmFyIGZvdW5kID0gZmFsc2U7
CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1Vbmlmb3JtczsgKytpaSkgeworICAgIHZhciBp
bmZvID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpaSk7CisgICAgaWYgKGluZm8ubmFt
ZSA9PSAndW5pZm9ybTAnKSB7CisgICAgICBmb3VuZCA9IHRydWU7CisgICAgICBhc3NlcnRNc2co
aW5mby50eXBlID09IHQuZ2xUeXBlLAorICAgICAgICAgICAgICAgICJ0eXBlIG11c3QgYmUgIiAr
IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdC5nbFR5cGUpICsgIiB3YXMgIiArCisgICAgICAgICAg
ICAgICAgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBpbmZvLnR5cGUpKTsKKyAgICAgIGFzc2VydE1z
ZyhpbmZvLnNpemUgPT0gdC5zaXplLAorICAgICAgICAgICAgICAgICJzaXplIG11c3QgYmUgIiAr
IHQuc2l6ZSArICcgd2FzICcgKyBpbmZvLnNpemUpOworICAgIH0KKyAgfQorICBhc3NlcnRNc2co
Zm91bmQsICJ1bmlmb3JtICd1bmlmb3JtMCcgc2hvdWxkIGV4aXN0Iik7CisgIHZhciBsb2MgPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VuaWZvcm0wJyk7CisgIGFzc2VydE1zZyhs
b2MgIT0gbnVsbCwgImdldFVuaWZvcm1Mb2NhdGlvbiBtdXN0IHJldHVybiBub24gbnVsbCIpOwor
ICBnbC51bmlmb3JtMWkobG9jLCB0dCArIDEpOworICB2YXIgdmFsID0gZ2wuZ2V0VW5pZm9ybShw
cm9ncmFtLCBsb2MpOworICBhc3NlcnRNc2codmFsID09IHR0ICsgMSwgImdldFVuaWZvcm0gbXVz
dCByZXR1cm4gc2V0IHZhbHVlIik7Cit9CisKK2RlYnVnKCIiKTsKK3d0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIHJ1bm5pbmcgdGhlIHRlc3RzIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3F1ZXJ5L29jY2x1c2lvbi1xdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3F1ZXJ5L29jY2x1c2lvbi1x
dWVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NTVlZDg3ODMzMjAwMjU1MzA5OTYwYjZmMzQxZjljNTAz
MjU0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcXVlcnkvb2NjbHVzaW9uLXF1ZXJ5Lmh0bWwKQEAg
LTAsMCArMSwxMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIE9jY2x1c2lvbiBRdWVyeSBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZh
cz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygb2NjbHVz
aW9uIHF1ZXJ5IG9iamVjdHMuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHRlc3RzID0gW107Cit2
YXIgY3VycmVudFRlc3Q7Cit2YXIgY3VycmVudFRlc3RJbmRleCA9IDA7Cit2YXIgbnVtYmVyT2ZU
ZXN0QXR0ZW1wdHMgPSA0OyAvLyBKdXN0IHRvIHN0cmVzcyBpbXBsZW1lbnRhdGlvbnMgYSBiaXQg
bW9yZS4KK3ZhciBxdWVyeTsKK3ZhciBudW1iZXJPZkNvbXBsZXRpb25BdHRlbXB0cyA9IDA7CisK
K2Z1bmN0aW9uIHNldHVwVGVzdHMoZ2wpIHsKKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgdGFyZ2V0OiBnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLAorICAg
ICAgICAgICAgbmFtZTogICAiQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSIsCisgICAg
ICAgICAgICByZXN1bHQ6IDEsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHRh
cmdldDogZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELAorICAgICAgICAgICAgbmFtZTogICAiQU5ZX1NB
TVBMRVNfUEFTU0VEIiwKKyAgICAgICAgICAgIHJlc3VsdDogMSwKKyAgICAgICAgfSwKKyAgICBd
OworfQorCitmdW5jdGlvbiBydW5PY2NsdXNpb25RdWVyeVRlc3QoKSB7CisgICAgY3VycmVudFRl
c3QgPSB0ZXN0c1tjdXJyZW50VGVzdEluZGV4XTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiVGVzdGluZyBjb21wbGV0aW9uIGFuZCBiZWhhdmlvciBvZiAiICsgY3VycmVudFRlc3QubmFt
ZSArICIgb2NjbHVzaW9uIHF1ZXJ5Iik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwU2lt
cGxlQ29sb3JQcm9ncmFtKGdsLCAwKTsKKyAgICBnbC51bmlmb3JtNGYoZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yIiksIDAsIDEsIDAsIDEpOworICAgIHd0dS5zZXR1cFVu
aXRRdWFkKGdsLCAwKTsKKyAgICBxdWVyeSA9IGdsLmNyZWF0ZVF1ZXJ5KCk7CisgICAgdmFyIHRh
cmdldCA9IGN1cnJlbnRUZXN0LnRhcmdldDsKKyAgICBnbC5iZWdpblF1ZXJ5KHRhcmdldCwgcXVl
cnkpOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIGdsLmVuZFF1ZXJ5KHRhcmdldCk7
CisKKyAgICAvLyBWZXJpZnkgYXMgYmVzdCBhcyBwb3NzaWJsZSB0aGF0IHRoZSBpbXBsZW1lbnRh
dGlvbiBkb2Vzbid0CisgICAgLy8gYWxsb3cgYSBxdWVyeSdzIHJlc3VsdCB0byBiZWNvbWUgYXZh
aWxhYmxlIHRoZSBzYW1lIGZyYW1lLCBieQorICAgIC8vIHNwaW4tbG9vcGluZyBmb3Igc29tZSB0
aW1lIGFuZCBlbnN1cmluZyB0aGF0IG5vbmUgb2YgdGhlCisgICAgLy8gcXVlcmllcycgcmVzdWx0
cyBiZWNvbWUgYXZhaWxhYmxlLgorICAgIHZhciBudW1FYXJseVRlc3RzID0gMjAwMDA7CisgICAg
d2hpbGUgKC0tbnVtRWFybHlUZXN0cyA+IDApIHsKKyAgICAgICAgZ2wuZmluaXNoKCk7CisgICAg
ICAgIGlmIChnbC5nZXRRdWVyeVBhcmFtZXRlcihxdWVyeSwgZ2wuUVVFUllfUkVTVUxUX0FWQUlM
QUJMRSkpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlF1ZXJ5J3MgcmVzdWx0IGJlY2FtZSBh
dmFpbGFibGUgdG9vIGVhcmx5Iik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJRdWVyeSdz
IHJlc3VsdCBkaWRuJ3QgYmVjb21lIGF2YWlsYWJsZSB0b28gZWFybHkiKTsKKyAgICBudW1iZXJP
ZkNvbXBsZXRpb25BdHRlbXB0cyA9IDA7CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNvbXBs
ZXRlT2NjbHVzaW9uUXVlcnlUZXN0KTsKK30KKworZnVuY3Rpb24gY29tcGxldGVPY2NsdXNpb25R
dWVyeVRlc3QoKSB7CisgICAgKytudW1iZXJPZkNvbXBsZXRpb25BdHRlbXB0czsKKworICAgIGlm
IChudW1iZXJPZkNvbXBsZXRpb25BdHRlbXB0cyA+IDUwMCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJRdWVyeSBkaWRuJ3QgYmVjb21lIGF2YWlsYWJsZSBpbiBhIHJlYXNvbmFibGUgdGltZSIpOwor
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IWdsLmdldFF1ZXJ5UGFyYW1ldGVyKHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKSkg
eworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY29tcGxldGVPY2NsdXNpb25RdWVyeVRl
c3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm8gbWF0dGVyIHdoZXRoZXIg
dGhlIHRlc3Qgd2FzIHJ1biB3aXRoIEFOWV9TQU1QTEVTX1BBU1NFRCBvcgorICAgIC8vIEFOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIHRoZSBxdWVyeSBvYmplY3Qgc2hvdWxkIGFsd2F5
cworICAgIC8vIHJlcG9ydCBhIG5vbi16ZXJvIHJlc3VsdC4KKyAgICB2YXIgcmVzdWx0ID0gZ2wu
Z2V0UXVlcnlQYXJhbWV0ZXIocXVlcnksIGdsLlFVRVJZX1JFU1VMVCk7CisgICAgaWYgKHJlc3Vs
dCA9PSBjdXJyZW50VGVzdC5yZXN1bHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiT2NjbHVzaW9u
IHF1ZXJ5ICIgKyBjdXJyZW50VGVzdC5uYW1lICsgIiByZXR1cm5lZCBhIGNvcnJlY3QgcmVzdWx0
ICgiICsgcmVzdWx0ICsgIikiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJP
Y2NsdXNpb24gcXVlcnkgIiArIGN1cnJlbnRUZXN0Lm5hbWUgKyAiIHJldHVybmVkIGFuIGluY29y
cmVjdCByZXN1bHQgIiArIHJlc3VsdCArICIgKGV4cGVjdGVkICIgKyBjdXJyZW50VGVzdC5yZXN1
bHQgKyAiKSIpOworICAgIH0KKworICAgIGdsLmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICBxdWVy
eSA9IG51bGw7CisKKyAgICArK2N1cnJlbnRUZXN0SW5kZXg7CisgICAgaWYgKGN1cnJlbnRUZXN0
SW5kZXggPj0gdGVzdHMubGVuZ3RoKSB7CisgICAgICAgIC0tbnVtYmVyT2ZUZXN0QXR0ZW1wdHM7
CisgICAgICAgIGlmIChudW1iZXJPZlRlc3RBdHRlbXB0cyA9PSAwKSB7CisgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJyZW50VGVzdElu
ZGV4ID0gMDsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShydW5PY2NsdXNpb25R
dWVyeVRlc3QpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHJ1bk9jY2x1c2lvblF1ZXJ5VGVzdCk7CisgICAgfQorfQorCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOwor
CitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlz
dCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOwor
CisgICAgc2V0dXBUZXN0cyhnbCk7CisgICAgcnVuT2NjbHVzaW9uUXVlcnlUZXN0KCk7Cit9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9xdWVyeS9xdWVyeS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3F1ZXJ5L3F1ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNhMTEyNGJlN2VjMDNjNTFhMTMwZmRm
MWQxZWUzZTIzOGIyM2U5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9xdWVyeS9xdWVyeS5odG1sCkBA
IC0wLDAgKzEsMTY3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBRdWVyeSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWM0IGFf
Y29sb3I7Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIHZfY29sb3IgPSBhX2NvbG9yOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWM0IHZfY29sb3I7Cit2b2lkIG1haW4o
dm9pZCkgeworICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIHRoZSBRdWVyeSBvYmplY3RzLiIpOworCitkZWJ1ZygiIik7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVs
bCwgMik7Cit2YXIgcTEgPSBudWxsOwordmFyIHEyID0gbnVsbDsKKworaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
ICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIHJ1bkN1cnJlbnRR
dWVyeVRlc3QoKTsKKyAgICBydW5PYmplY3RUZXN0KCk7CisgICAgLy8gVE9ETzogVGVzdCBidWZm
ZXIgYmluZGluZywgZHJhd2luZywgZXRjLgorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBy
dW5DdXJyZW50UXVlcnlUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyBCZWdpbm5pbmcsIEVuZGluZywgYW5kIGNoZWNraW5nIHRoZSBzdGF0ZSBvZiBxdWVyeSBvYmpl
Y3RzIik7CisKKyAgICBzaG91bGRCZSgiZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEIiwgIjB4OEMyRiIp
OworICAgIHNob3VsZEJlKCJnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFIiwgIjB4
OEQ2QSIpOworICAgIHNob3VsZEJlKCJnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19X
UklUVEVOIiwgIjB4OEM4OCIpOworCisgICAgZ2wuZ2V0UXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFT
U0VELCBnbC5DVVJSRU5UX1FVRVJZKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgIkFOWV9TQU1QTEVTX1BBU1NFRCBxdWVyeSBzaG91bGQgc3VjY2VlZCIpOworCisg
ICAgZ2wuZ2V0UXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgZ2wuQ1VS
UkVOVF9RVUVSWSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJB
TllfU0FNUExFU19QQVNTRUQgcXVlcnkgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIGdsLmdldFF1
ZXJ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIGdsLkNVUlJFTlRf
UVVFUlkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiQU5ZX1NB
TVBMRVNfUEFTU0VEIHF1ZXJ5IHNob3VsZCBzdWNjZWVkIik7CisKKyAgICAvLyBEZWZhdWx0IHZh
bHVlIGlzIG51bGwKKyAgICBzaG91bGRCZU51bGwoImdsLmdldFF1ZXJ5KGdsLkFOWV9TQU1QTEVT
X1BBU1NFRCwgZ2wuQ1VSUkVOVF9RVUVSWSkiKTsKKyAgICBzaG91bGRCZU51bGwoImdsLmdldFF1
ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIGdsLkNVUlJFTlRfUVVFUlkp
Iik7CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
UFJJTUlUSVZFU19XUklUVEVOLCBnbC5DVVJSRU5UX1FVRVJZKSIpOworCisgICAgcTEgPSBnbC5j
cmVhdGVRdWVyeSgpOworICAgIHEyID0gZ2wuY3JlYXRlUXVlcnkoKTsKKyAgICBzaG91bGRCZU51
bGwoImdsLmdldFF1ZXJ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4s
IGdsLkNVUlJFTlRfUVVFUlkpIik7CisgICAgZ2wuYmVnaW5RdWVyeShnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBxMSk7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc1F1
ZXJ5KHExKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfUFJJTUlUSVZFU19XUklUVEVOLCBnbC5DVVJSRU5UX1FVRVJZKSIsICJxMSIpOworCisgICAg
Z2wuYmVnaW5RdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBx
Mik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJD
YW4ndCBiZWdpbiBhIHF1ZXJ5IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGFjdGl2ZSIpOworICAgIHNo
b3VsZEJlKCJnbC5nZXRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklU
VEVOLCBnbC5DVVJSRU5UX1FVRVJZKSIsICJxMSIpOworCisgICAgZ2wuZW5kUXVlcnkoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7CisgICAgc2hvdWxkQmVOdWxsKCJn
bC5nZXRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBnbC5D
VVJSRU5UX1FVRVJZKSIpOworCisgICAgZ2wuZW5kUXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X1BSSU1JVElWRVNfV1JJVFRFTik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJDYW4ndCBlbmQgYSBxdWVyeSBpZiBvbmUgaXMgbm90IGFjdGl2ZSIp
OworCisgICAgZ2wuYmVnaW5RdWVyeShnbC5BTllfU0FNUExFU19QQVNTRUQsIHExKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNhbid0IHJlLXVz
ZSBxdWVyeSBvYmplY3RzIGZvciBpbmNvbXBhdGlibGUgdGFyZ2V0cyIpOworICAgIHNob3VsZEJl
TnVsbCgiZ2wuZ2V0UXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBnbC5DVVJSRU5UX1FVRVJZ
KSIpOworCisgICAgZ2wuYmVnaW5RdWVyeShnbC5BTllfU0FNUExFU19QQVNTRUQsIHEyKTsKKyAg
ICBzaG91bGRCZSgiZ2wuZ2V0UXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBnbC5DVVJSRU5U
X1FVRVJZKSIsICJxMiIpOworCisgICAgZ2wuYmVnaW5RdWVyeShnbC5BTllfU0FNUExFU19QQVNT
RURfQ09OU0VSVkFUSVZFLCBxMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJDYW4ndCBjYWxsIGJlZ2luUXVlcnkgb24gYW4gYWxyZWFkeSBhY3Rp
dmUgcXVlcnkgb2JqZWN0Iik7CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRRdWVyeShnbC5BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLCBnbC5DVVJSRU5UX1FVRVJZKSIpOworCisgICAg
Z2wuZW5kUXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEKTsKKworICAgIGdsLmJlZ2luUXVlcnko
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcTEpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBt
dWx0aXBsZSB1bnJlbGF0ZWQgcXVlcnkgdHlwZXMgYWN0aXZlIGF0IG9uY2UiKTsKKyAgICBzaG91
bGRCZSgiZ2wuZ2V0UXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRF
TiwgZ2wuQ1VSUkVOVF9RVUVSWSkiLCAicTEiKTsKKworICAgIGdsLmRlbGV0ZVF1ZXJ5KHExKTsK
KyAgICBnbC5kZWxldGVRdWVyeShxMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJkZWxldGluZyBxdWVyaWVzIHNob3VsZCBub3QgcHJvZHVjZSBlcnJvcnMiKTsK
KworICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BS
SU1JVElWRVNfV1JJVFRFTiwgZ2wuQ1VSUkVOVF9RVUVSWSkiKTsKKyAgICBzaG91bGRCZU51bGwo
ImdsLmdldFF1ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIGdsLkNVUlJF
TlRfUVVFUlkpIik7CisKKyAgICBnbC5iZWdpblF1ZXJ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19Q
UklNSVRJVkVTX1dSSVRURU4sIHExKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgImJlZ2lubmluZyBhIGRlbGV0ZWQgcXVlcnkgb2JqZWN0Iik7Cisg
ICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOLCBnbC5DVVJSRU5UX1FVRVJZKSIpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJGaXJlZm94IGJ1ZzogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNjUyNSIpOworCisgICAgcTEgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgIGds
LmRlbGV0ZVF1ZXJ5KHExKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAiRGVsZXRl
UXVlcnkgYWZ0ZXIgQ3JlYXRlUXVlcnkiKTsKKyAgICBnbC5iZWdpblF1ZXJ5KGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIHExKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkJlZ2luaW5nIGEgZGVsZXRlZCBxdWVyeSIp
OworICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BS
SU1JVElWRVNfV1JJVFRFTiwgZ2wuQ1VSUkVOVF9RVUVSWSkiKTsKK30KKworZnVuY3Rpb24gcnVu
T2JqZWN0VGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3Rpbmcgb2JqZWN0
IGNyZWF0aW9uIik7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InNob3VsZCBoYXZlIG5vIHByZXZpb3VzIGVycm9ycyIpOworCisgICAgcTEgPSBnbC5jcmVhdGVR
dWVyeSgpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY3JlYXRl
UXVlcnkgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3IiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoInEx
Iik7CisKKyAgICAvLyBFeHBlY3QgZmFsc2UgaWYgbmV2ZXIgYm91bmQKKyAgICBzaG91bGRCZUZh
bHNlKCJnbC5pc1F1ZXJ5KHExKSIpOworICAgIGdsLmJlZ2luUXVlcnkoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcTEpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNR
dWVyeShxMSkiKTsKKyAgICBnbC5lbmRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzUXVlcnkocTEpIik7CisgICAg
Z2wuZGVsZXRlUXVlcnkocTEpOworICAgIHNob3VsZEJlRmFsc2UoImdsLmlzUXVlcnkocTEpIik7
CisKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc1F1ZXJ5KG51bGwpIik7CisKKyAgICBxMSA9IG51
bGw7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcvZm9ybWF0LXIxMWYtZzEx
Zi1iMTBmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVhZGluZy9mb3JtYXQtcjExZi1nMTFmLWIxMGYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NTM0YTY4ODRmZWQ5ZDZlMmE2ZDQzNTBjYjZiZmMwZWNkYmVkNmI1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlYWRpbmcvZm9ybWF0LXIxMWYtZzExZi1iMTBmLmh0bWwKQEAgLTAsMCArMSwy
NjYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPlRlc3QgRm9ybWF0IFIxMUZfRzExRl9CMTBGPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVj
MiBwb3M7CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7
CisKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMC4wLCAxLjApOwor
ICB0ZXhDb29yZCA9IHRleENvb3JkMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwordW5pZm9ybSB2ZWMzIHVfY29sb3I7Cit1bmlmb3JtIHZlYzMgdV90b2w7Cit1bmlmb3JtIHNh
bXBsZXIyRCB1X3RleDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKKwordm9pZCBtYWluKCkgewor
ICB2ZWM0IHNhbXBsZSA9IHRleHR1cmUyRCh1X3RleCwgdGV4Q29vcmQpOworICB2ZWMzIHJnYiA9
IHNhbXBsZS54eXo7CisgIGlmIChhYnMocmdiWzBdIC0gdV9jb2xvclswXSkgPiB1X3RvbFswXSB8
fAorICAgICAgYWJzKHJnYlsxXSAtIHVfY29sb3JbMV0pID4gdV90b2xbMV0gfHwKKyAgICAgIGFi
cyhyZ2JbMl0gLSB1X2NvbG9yWzJdKSA+IHVfdG9sWzJdKSAgeworICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMSwgMCwgMCwgMSk7CisgIH0gZWxzZSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgw
LCAxLCAwLCAxKTsKKyAgfQorfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZm9ybWF0IFIxMUZfRzExRl9CMTBGIHdvcmtzIGFzIGV4
cGVjdGVkIik7CitkZWJ1ZygiTWFjT1NYIGRyaXZlciBidWcuIFNlZSBodHRwczovL2dpdGh1Yi5j
b20vS2hyb25vc0dyb3VwL1dlYkdML2lzc3Vlcy8xODMyIik7CisKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgdW5kZWZpbmVkLCAyKTsKKwor
dmFyIHRlc3RWYWx1ZXMgPSBbMTAwLCAxMDAwLCAyMDQ3LCAyNTAwLCA0MDk1LCA1MDAwLAorICAg
ICAgICAgICAgICAgICAgODE5MSwgODE5MiwgMTAwMDAsIDE2MzgzLCAxNjM4NF07CisKK2lmICgh
Z2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsK
KyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKyAgaWYgKGdsLmdldEV4dGVuc2lvbigi
RVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKSB7CisgICAgdGVzdFBhc3NlZCgiRXh0ZW5zaW9uIEVY
VF9jb2xvcl9idWZmZXJfZmxvYXQgaXMgYXZhaWxhYmxlIik7CisKKyAgICB0ZXN0UmVuZGVyYnVm
ZmVyUmVhZGJhY2soNCwgNCk7CisgICAgdGVzdFRleHR1cmVSZWFkYmFjayg0LCA0KTsKKyAgICB0
ZXN0VGV4dHVyZVNhbXBsaW5nKDQsIDQpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIkV4
dGVuc2lvbiBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IGlzIHVuYXZhaWxhYmxlIC0gdGhpcyBpcyBs
ZWdhbCIpOworICB9Cit9CisKK2Z1bmN0aW9uIHNldHVwQ29sb3IodGVzdFIsIHRlc3RHLCB0ZXN0
QiwgdmFsdWUpIHsKKyAgdmFyIGRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KDQpOworICBkYXRhWzBd
ID0gdGVzdFIgPyB2YWx1ZSA6IDA7CisgIGRhdGFbMV0gPSB0ZXN0RyA/IHZhbHVlIDogMDsKKyAg
ZGF0YVsyXSA9IHRlc3RCID8gdmFsdWUgOiAwOworICBkYXRhWzNdID0gMTsgLy8gRG9lc24ndCBy
ZWFsbHkgbWF0dGVyIGZvciBSR0IgZm9ybWF0cy4KKyAgcmV0dXJuIGRhdGE7Cit9CisKKy8vIFRo
ZSBkZWZpbml0aW9uIG9mIDxVbnNpbmdlZCAxMS1CaXQgRmxvYXRpbmctUG9pbnQgTnVtYmVyPiBp
biBHTEVTIDMuMC40OgorLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy9z
cGVjcy8zLjAvZXNfc3BlY18zLjAuNC5wZGYjbmFtZWRkZXN0PXNlY3Rpb24tMi4xLjMKKy8vIFRo
ZSBkZWZpbml0aW9uIG9mIDxVbnNpbmdlZCAxMC1CaXQgRmxvYXRpbmctUG9pbnQgTnVtYmVyPiBp
biBHTEVTIDMuMC40OgorLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy9z
cGVjcy8zLjAvZXNfc3BlY18zLjAuNC5wZGYjbmFtZWRkZXN0PXNlY3Rpb24tMi4xLjQKK2Z1bmN0
aW9uIHNldFRvbGVyYW5jZSAodGVzdFIsIHRlc3RHLCB0ZXN0QiwgdmFsdWUpIHsKKyAgdmFyIHRv
bCA9IG5ldyBGbG9hdDMyQXJyYXkoMyk7CisgIHZhciBleHBvbmVudDsKKyAgaWYgKHZhbHVlIDwg
TWF0aC5wb3coMiwgLTE0KSkgeworICAgIGV4cG9uZW50ID0gLTE0OworICB9IGVsc2UgeworICAg
IGV4cG9uZW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMik7CisgIH0K
KyAgdmFyIHRvbDExRiA9IE1hdGgucG93KDIsIGV4cG9uZW50KSAvIDY0OworICB2YXIgdG9sMTBG
ID0gTWF0aC5wb3coMiwgZXhwb25lbnQpIC8gMzI7CisgIHRvbFswXSA9IHRlc3RSID8gdG9sMTFG
IDogMDsKKyAgdG9sWzFdID0gdGVzdEcgPyB0b2wxMUYgOiAwOworICB0b2xbMl0gPSB0ZXN0QiA/
IHRvbDEwRiA6IDA7CisgIHJldHVybiB0b2w7Cit9CisKK2Z1bmN0aW9uIGNsZWFyQW5kVmVyaWZ5
Q29sb3Iod2lkdGgsIGhlaWdodCwgdGVzdFIsIHRlc3RHLCB0ZXN0QiwgdmFsdWUpIHsKKyAgdmFy
IGRhdGEgPSBzZXR1cENvbG9yKHRlc3RSLCB0ZXN0RywgdGVzdEIsIHZhbHVlKTsKKyAgdmFyIHRv
bCA9IHNldFRvbGVyYW5jZSh0ZXN0UiwgdGVzdEcsIHRlc3RCLCB2YWx1ZSk7CisgIGdsLmNsZWFy
QnVmZmVyZnYoZ2wuQ09MT1IsIDAsIGRhdGEpOworICB2YXIgYnVmZmVyID0gbmV3IEZsb2F0MzJB
cnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBo
ZWlnaHQsIGdsLlJHQkEsIGdsLkZMT0FULCBidWZmZXIpOworICBmb3IgKHZhciBpaSA9IDA7IGlp
IDwgd2lkdGggKiBoZWlnaHQ7ICsraWkpIHsKKyAgICB2YXIgcGl4ZWwgPSBbYnVmZmVyW2lpICog
NF0sIGJ1ZmZlcltpaSAqIDQgKyAxXSwgYnVmZmVyW2lpICogNCArIDJdLCBidWZmZXJbaWkgKiA0
ICsgM11dOworICAgIGlmIChpc05hTihwaXhlbFswXSkgfHwgaXNOYU4ocGl4ZWxbMV0pIHx8IGlz
TmFOKHBpeGVsWzJdKSB8fAorICAgICAgICBNYXRoLmFicyhwaXhlbFswXSAtIGRhdGFbMF0pID4g
dG9sWzBdIHx8CisgICAgICAgIE1hdGguYWJzKHBpeGVsWzFdIC0gZGF0YVsxXSkgPiB0b2xbMV0g
fHwKKyAgICAgICAgTWF0aC5hYnMocGl4ZWxbMl0gLSBkYXRhWzJdKSA+IHRvbFsyXSkgeworICAg
ICAgdGVzdEZhaWxlZCgiUmVhZFBpeGVscyAiICsgaWkgKyAiIDogZ290IFsiICsgcGl4ZWwgKyAi
XSwgZXhwZWN0ZWQgWyIgKyBkYXRhICsgIl0sIHRvbCBbIiArIHRvbCArICJdIik7CisgICAgICBy
ZXR1cm47CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQoIlJlYWRQaXhlbHMgc3VjY2VzcyA6IFsi
ICsgZGF0YSArICJdIik7Cit9CisKK2Z1bmN0aW9uIGNsZWFyRHJhd0FuZFZlcmlmeUNvbG9yKGZi
bywgcHJvZ3JhbSwgdGVzdFIsIHRlc3RHLCB0ZXN0QiwgdmFsdWUpIHsKKyAgdmFyIGRhdGEgPSBz
ZXR1cENvbG9yKHRlc3RSLCB0ZXN0RywgdGVzdEIsIHZhbHVlKTsKKyAgdmFyIHRvbCA9IHNldFRv
bGVyYW5jZSh0ZXN0UiwgdGVzdEcsIHRlc3RCLCB2YWx1ZSk7CisgIGRlYnVnKCJUZXN0aW5nIDog
WyIgKyBkYXRhICsgIl0gd2l0aCB0b2xlcmFuY2UgPSBbIiArIHRvbCArICJdIik7CisKKyAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICBnbC5jbGVhckJ1ZmZlcmZ2
KGdsLkNPTE9SLCAwLCBkYXRhKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsMSk7CisgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgIGdsLnVuaWZvcm0zZnYocHJvZ3JhbS5jb2xvclBvcywgZGF0
YS5zbGljZSgwLCAzKSk7CisgIGdsLnVuaWZvcm0zZnYocHJvZ3JhbS50b2xQb3MsIHRvbCk7CisK
KyAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwg
MCwgMjU1XSwgIlNob3VsZCBwYXNzIChncmVlbiBjb2xvciBpbnN0ZWFkIG9mIHJlZCkiKTsKK30K
KworCitmdW5jdGlvbiB0ZXN0UmVhZFBpeGVsc0Zyb21Db2xvckNoYW5uZWxzV2l0aFZhcmlvdXNW
YWx1ZXMod2lkdGgsIGhlaWdodCkgeworICBkZWJ1ZygiVGVzdGluZyBSIGNoYW5uZWwiKTsKKyAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgY2xl
YXJBbmRWZXJpZnlDb2xvcih3aWR0aCwgaGVpZ2h0LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRlc3RW
YWx1ZXNbaWldKTsKKyAgfQorICBkZWJ1ZygiVGVzdGluZyBHIGNoYW5uZWwiKTsKKyAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgY2xlYXJBbmRW
ZXJpZnlDb2xvcih3aWR0aCwgaGVpZ2h0LCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRlc3RWYWx1ZXNb
aWldKTsKKyAgfQorICBkZWJ1ZygiVGVzdGluZyBCIGNoYW5uZWwiKTsKKyAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgY2xlYXJBbmRWZXJpZnlD
b2xvcih3aWR0aCwgaGVpZ2h0LCBmYWxzZSwgZmFsc2UsIHRydWUsIHRlc3RWYWx1ZXNbaWldKTsK
KyAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2FtcGxlVGV4dHVyZUZyb21Db2xvckNoYW5uZWxzV2l0
aFZhcmlvdXNWYWx1ZXMoZmJvLCBwcm9ncmFtKSB7CisgIGRlYnVnKCJUZXN0aW5nIFIgY2hhbm5l
bCIpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdFZhbHVlcy5sZW5ndGg7ICsraWkpIHsK
KyAgICBjbGVhckRyYXdBbmRWZXJpZnlDb2xvcihmYm8sIHByb2dyYW0sIHRydWUsIGZhbHNlLCBm
YWxzZSwgdGVzdFZhbHVlc1tpaV0pOworICB9CisgIGRlYnVnKCJUZXN0aW5nIEcgY2hhbm5lbCIp
OworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdFZhbHVlcy5sZW5ndGg7ICsraWkpIHsKKyAg
ICBjbGVhckRyYXdBbmRWZXJpZnlDb2xvcihmYm8sIHByb2dyYW0sIGZhbHNlLCB0cnVlLCBmYWxz
ZSwgdGVzdFZhbHVlc1tpaV0pOworICB9CisgIGRlYnVnKCJUZXN0aW5nIEIgY2hhbm5lbCIpOwor
ICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdFZhbHVlcy5sZW5ndGg7ICsraWkpIHsKKyAgICBj
bGVhckRyYXdBbmRWZXJpZnlDb2xvcihmYm8sIHByb2dyYW0sIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
dGVzdFZhbHVlc1tpaV0pOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW5kZXJidWZmZXJSZWFk
YmFjayh3aWR0aCwgaGVpZ2h0KSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIkNoZWNraW5nIGNs
ZWFyaW5nIGFuZCByZWFkYmFjayBvZiBhIGNvbG9yIGltYWdlIG9mIHJlbmRlcmJ1ZmZlciB3aXRo
IFIxMUZfRzExRl9CMTBGIGZvcm1hdC4iKTsKKworICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICB2
YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGdsLmJpbmRSZW5k
ZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICBnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUjExRl9HMTFGX0IxMEYsIHdpZHRoLCBoZWln
aHQpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgc2hvdWxk
QmUoImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIiwgImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiU2V0dXAgZnJhbWVidWZmZXIgd2l0aCByZW5kZXJidWZmZXIgc2hvdWxkIHN1Y2NlZWQuIik7
CisKKyAgdGVzdFJlYWRQaXhlbHNGcm9tQ29sb3JDaGFubmVsc1dpdGhWYXJpb3VzVmFsdWVzKHdp
ZHRoLCBoZWlnaHQpOworCisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgIGdsLmRlbGV0
ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworfQorCitmdW5jdGlvbiB0ZXN0VGV4dHVyZVJl
YWRiYWNrKHdpZHRoLCBoZWlnaHQpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiQ2hlY2tpbmcg
Y2xlYXJpbmcgYW5kIHJlYWRiYWNrIG9mIGEgY29sb3IgaW1hZ2Ugb2YgdGV4dHVyZSB3aXRoIFIx
MUZfRzExRl9CMTBGIGZvcm1hdC4iKTsKKworICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICB2YXIg
dGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlIxMUZfRzExRl9C
MTBGLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0IsIGdsLkZMT0FULCBudWxsKTsKKyAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5URVhUVVJFXzJELCB0ZXgsIDApOworICBzaG91bGRCZSgiZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUiLCAiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTZXR1cCBmcmFtZWJ1ZmZlciB3aXRo
IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQuIik7CisKKyAgdGVzdFJlYWRQaXhlbHNGcm9tQ29sb3JD
aGFubmVsc1dpdGhWYXJpb3VzVmFsdWVzKHdpZHRoLCBoZWlnaHQpOworCisgIGdsLmRlbGV0ZUZy
YW1lYnVmZmVyKGZibyk7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKworZnVuY3Rpb24g
c2V0dXBQcm9ncmFtKCkgeworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsi
dnNoYWRlciIsICJmc2hhZGVyIl0sIFsicG9zIiwgInRleENvb3JkMCJdKTsKKyAgaWYgKCFwcm9n
cmFtKQorICAgIHJldHVybiBudWxsOworICBwcm9ncmFtLmNvbG9yUG9zID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yIik7CisgIHByb2dyYW0udG9sUG9zID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3RvbCIpOworICB2YXIgdGV4UG9zID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3RleCIpOworICBwcm9ncmFtLmJ1ZmZlcnMgPSB3
dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisgIGlmICghcHJvZ3JhbS5jb2xvclBvcyB8fCAh
cHJvZ3JhbS50b2xQb3MgfHwgIXRleFBvcyB8fCBwcm9ncmFtLmJ1ZmZlcnMubGVuZ3RoID09IDAp
IHsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBudWxsOworICB9
CisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgIGdsLnVuaWZvcm0xaSh0ZXhQb3MsIDApOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldHVwIHByb2dyYW0gc2hv
dWxkIHN1Y2NlZWQuIik7CisgIHJldHVybiBwcm9ncmFtOworfQorCitmdW5jdGlvbiB0ZXN0VGV4
dHVyZVNhbXBsaW5nKHdpZHRoLCBoZWlnaHQpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiQ2hl
Y2tpbmcgc2FtcGxpbmcgb2YgYSB0ZXh0dXJlIHdpdGggUjExX0cxMUZfQjEwRiBmb3JtYXQiKTsK
KworICB2YXIgcHJvZ3JhbSA9IHNldHVwUHJvZ3JhbSgpOworICBpZiAoIXByb2dyYW0pIHsKKyAg
ICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gc2V0dXAgcHJvZ3JhbSIpOworICAgIHJldHVybjsKKyAg
fQorCisgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUjExRl9HMTFGX0IxMEYsIHdpZHRoLCBoZWlnaHQsIDAs
IGdsLlJHQiwgZ2wuRkxPQVQsIG51bGwpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgZ2wuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJF
XzJELCB0ZXgsIDApOworICBzaG91bGRCZSgiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiLCAiZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTZXR1cCBmcmFtZWJ1ZmZlciB3aXRoIHRleHR1cmUg
c2hvdWxkIHN1Y2NlZWQuIik7CisKKyAgdGVzdFNhbXBsZVRleHR1cmVGcm9tQ29sb3JDaGFubmVs
c1dpdGhWYXJpb3VzVmFsdWVzKGZibywgcHJvZ3JhbSk7CisKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXgpOworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICBnbC5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworfQorCitkZWJ1ZygiIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIk5vIEdMIGVycm9yIGZyb20gdGVzdHMuIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcv
cmVhZC1waXhlbHMtZnJvbS1mYm8tdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcvcmVhZC1waXhlbHMtZnJv
bS1mYm8tdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNmU5OTg4ZWQwYWNjNGI1OWNkMTFmOTkyNmU2
MTEwOTg2ODBkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVhZGluZy9yZWFkLXBpeGVscy1mcm9t
LWZiby10ZXN0Lmh0bWwKQEAgLTAsMCArMSw2NDIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIDIgUmVhZFBpeGVscyBUZXN0Ljwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0
aW9uKCJDaGVja3MgdGhhdCBSZWFkUGl4ZWxzIGZyb20gYSBmYm8gd29ya3MgYXMgZXhwZWN0ZWQu
Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpOworZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19B
TElHTk1FTlQsIDEpOworCitmdW5jdGlvbiBnZXRDaGFubmVsQ291bnQoZm9ybWF0KSB7CisgIHN3
aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBnbC5SRUQ6CisgICAgY2FzZSBnbC5SRURfSU5URUdF
UjoKKyAgICBjYXNlIGdsLkFMUEhBOgorICAgIGNhc2UgZ2wuTFVNSU5BTkNFOgorICAgICAgcmV0
dXJuIDE7CisgICAgY2FzZSBnbC5SQjoKKyAgICBjYXNlIGdsLlJCX0lOVEVHRVI6CisgICAgY2Fz
ZSBnbC5MVU1JTkFOQ0VfQUxQSEE6CisgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIGdsLlJHQjoK
KyAgICBjYXNlIGdsLlJHQl9JTlRFR0VSOgorICAgICAgcmV0dXJuIDM7CisgICAgY2FzZSBnbC5S
R0JBOgorICAgIGNhc2UgZ2wuUkdCQV9JTlRFR0VSOgorICAgICAgcmV0dXJuIDQ7CisgICAgZGVm
YXVsdDoKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGdldFVucGFja0luZm8o
dHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUXzVf
Nl81OgorICAgICAgcmV0dXJuIHtiaXRzQ291bnQ6IFs1LCA2LCA1XSwgaXNSZXZlcnNlOiBmYWxz
ZX07CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgcmV0dXJuIHti
aXRzQ291bnQ6IFs0LCA0LCA0LCA0XSwgaXNSZXZlcnNlOiBmYWxzZX07CisgICAgY2FzZSBnbC5V
TlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgcmV0dXJuIHtiaXRzQ291bnQ6IFs1LCA1LCA1
LCAxXSwgaXNSZXZlcnNlOiBmYWxzZX07CisgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfMl8xMF8x
MF8xMF9SRVY6CisgICAgICByZXR1cm4ge2JpdHNDb3VudDogWzIsIDEwLCAxMCwgMTBdLCBpc1Jl
dmVyc2U6IHRydWV9OworICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVjoK
KyAgICAgIHJldHVybiB7Yml0c0NvdW50OiBbMTAsIDExLCAxMV0sIGlzUmV2ZXJzZTogdHJ1ZX07
CisgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6CisgICAgICByZXR1cm4ge2Jp
dHNDb3VudDogWzUsIDksIDksIDldLCBpc1JldmVyc2U6IHRydWV9OworICAgIGRlZmF1bHQ6Cisg
ICAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCisvLyBiaXRzQ291bnQgaXMgYW4gYXJyYXkgY29u
dGFpbnMgYml0IGNvdW50IGZvciBlYWNoIGNvbXBvbmVudC4KK2Z1bmN0aW9uIHVucGFjayh2YWx1
ZSwgY2hhbm5lbENvdW50LCBiaXRzQ291bnQsIGlzUmV2ZXJzZSkgeworICB2YXIgcmVzdWx0ID0g
bmV3IEFycmF5KGNoYW5uZWxDb3VudCk7CisKKyAgdmFyIGFjY3VtQml0c0NvdW50ID0gMDsKKyAg
Zm9yICh2YXIgaSA9IGNoYW5uZWxDb3VudCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgdmFyIGN1
cnJlbnRDaGFubmVsID0gaXNSZXZlcnNlID8gKGNoYW5uZWxDb3VudCAtIGkgLSAxKSA6IGk7Cisg
ICAgdmFyIG1hc2sgPSAweEZGRkZGRkZGID4+PiAoMzIgLSBiaXRzQ291bnRbaV0pOworICAgIHJl
c3VsdFtjdXJyZW50Q2hhbm5lbF0gPSAoKHZhbHVlID4+IGFjY3VtQml0c0NvdW50KSAmIG1hc2sp
OworICAgIGFjY3VtQml0c0NvdW50ICs9IGJpdHNDb3VudFtpXTsKKyAgfQorCisgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGdldENvbG9yKGJ1ZiwgaW5kZXgsIHJlYWRGb3JtYXQsIHJl
YWRUeXBlKSB7CisgIHZhciBjaGFubmVsQ291bnQgPSBnZXRDaGFubmVsQ291bnQocmVhZEZvcm1h
dCk7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoY2hhbm5lbENvdW50KTsKKworICB2YXIgdW5w
YWNrSW5mbyA9IGdldFVucGFja0luZm8ocmVhZFR5cGUpOworICBpZiAodW5wYWNrSW5mbykgewor
ICAgIHJlc3VsdCA9IHVucGFjayhidWZbaW5kZXhdLCBjaGFubmVsQ291bnQsIHVucGFja0luZm8u
Yml0c0NvdW50LCB1bnBhY2tJbmZvLmlzUmV2ZXJzZSk7CisgIH0gZWxzZSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGFubmVsQ291bnQ7ICsraSkgeworICAgICAgcmVzdWx0W2ldID0gYnVm
W2luZGV4ICsgaV07CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rp
b24gY29udmVydFRvU1JHQih2YWwpIHsKKyAgaWYgKHZhbCA8PSAwKSB7CisgICAgcmV0dXJuIDA7
CisgIH0gZWxzZSBpZiAodmFsIDwgMC4wMDMxMzA4KSB7CisgICAgcmV0dXJuIDEyLjkyICogdmFs
OworICB9IGVsc2UgaWYgKHZhbCA8IDEpIHsKKyAgICByZXR1cm4gMS4wNTUgKiBNYXRoLnBvdyh2
YWwsIDAuNDE2NjYpIC0gMC4wNTU7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDE7CisgIH0KK30K
KworZnVuY3Rpb24gZGVub3JtYWxpemVDb2xvcihzcmNJbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUs
IGNvbG9yKSB7CisgIHZhciByZXN1bHQgPSBjb2xvci5zbGljZSgpOworICB2YXIgdG9sID0gMDsK
KworICB2YXIgc3JjSXNOb3JtYWxpemVkID0gZmFsc2U7CisKKyAgc3dpdGNoIChzcmNJbnRlcm5h
bEZvcm1hdCkgeworICAgIGNhc2UgZ2wuUjg6CisgICAgY2FzZSBnbC5SRzg6CisgICAgY2FzZSBn
bC5SR0I4OgorICAgIGNhc2UgZ2wuUkdCQTg6CisgICAgY2FzZSBnbC5SR0I1X0ExOgorICAgIGNh
c2UgZ2wuU1JHQjhfQUxQSEE4OgorICAgIGNhc2UgZ2wuUkdCMTBfQTI6CisgICAgICBzcmNJc05v
cm1hbGl6ZWQgPSB0cnVlOworICAgICAgdG9sID0gNjsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
Z2wuUkdCNTY1OgorICAgICAgLy8gUkdCNTY1IG5lZWRzIHNsaWdodGx5IGV4dHJhIHRvbGVyYW5j
ZSwgYXQgbGVhc3Qgb24gR29vZ2xlIFBpeGVsLiBjcmJ1Zy5jb20vNjgyNzUzCisgICAgICBzcmNJ
c05vcm1hbGl6ZWQgPSB0cnVlOworICAgICAgdG9sID0gNzsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgZ2wuUkdCQTQ6CisgICAgICBzcmNJc05vcm1hbGl6ZWQgPSB0cnVlOworICAgICAgdG9sID0g
MTA7CisgICAgICBicmVhazsKKyAgfQorCisgIGlmICghc3JjSXNOb3JtYWxpemVkKSB7CisgICAg
cmV0dXJuIHsgY29sb3I6IHJlc3VsdCwgdG9sOiB0b2wgfTsKKyAgfQorCisgIGlmIChzcmNJbnRl
cm5hbEZvcm1hdCA9PSBnbC5TUkdCOF9BTFBIQTgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDM7ICsraSkgeworICAgICAgcmVzdWx0W2ldID0gY29udmVydFRvU1JHQihyZXN1bHRbaV0pOwor
ICAgIH0KKyAgfQorCisgIHN3aXRjaCAoZGVzdFR5cGUpIHsKKyAgICBjYXNlIGdsLlVOU0lHTkVE
X0JZVEU6CisgICAgICByZXN1bHQgPSByZXN1bHQubWFwKHZhbCA9PiB7IHJldHVybiB2YWwgKiAw
eEZGfSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUOgorICAgICAg
Ly8gT24gTGludXggTlZJRElBLCB0b2wgb2YgMzMgaXMgbmVjZXNzYXJ5IHRvIHBhc3MgdGhlIHRl
c3QuCisgICAgICB0b2wgPSA0MDsKKyAgICAgIHJlc3VsdCA9IHJlc3VsdC5tYXAodmFsID0+IHsg
cmV0dXJuIHZhbCAqIDB4RkZGRn0pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5VTlNJR05F
RF9JTlQ6CisgICAgICB0b2wgPSA0MDsKKyAgICAgIHJlc3VsdCA9IHJlc3VsdC5tYXAodmFsID0+
IHsgcmV0dXJuIHZhbCAqIDB4RkZGRkZGRkZ9KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZ2wu
VU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgIHJlc3VsdCA9IHJlc3VsdC5tYXAodmFsID0+
IHsgcmV0dXJuIHZhbCAqIDB4Rn0pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5VTlNJR05F
RF9TSE9SVF81XzVfNV8xOgorICAgICAgcmVzdWx0WzBdID0gcmVzdWx0WzBdICogMHgxRjsKKyAg
ICAgIHJlc3VsdFsxXSA9IHJlc3VsdFsxXSAqIDB4MUY7CisgICAgICByZXN1bHRbMl0gPSByZXN1
bHRbMl0gKiAweDFGOworICAgICAgcmVzdWx0WzNdID0gcmVzdWx0WzNdICogMHgxOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgIHJlc3VsdFsw
XSA9IHJlc3VsdFswXSAqIDB4MUY7CisgICAgICByZXN1bHRbMV0gPSByZXN1bHRbMV0gKiAweDNG
OworICAgICAgcmVzdWx0WzJdID0gcmVzdWx0WzJdICogMHgxRjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgdG9sID0gMjU7Cisg
ICAgICByZXN1bHRbMF0gPSByZXN1bHRbMF0gKiAweDNGRjsKKyAgICAgIHJlc3VsdFsxXSA9IHJl
c3VsdFsxXSAqIDB4M0ZGOworICAgICAgcmVzdWx0WzJdID0gcmVzdWx0WzJdICogMHgzRkY7Cisg
ICAgICByZXN1bHRbM10gPSByZXN1bHRbM10gKiAweDM7CisgICAgICBicmVhazsKKyAgICBjYXNl
IGdsLlVOU0lHTkVEX0lOVF81XzlfOV85X1JFVjoKKyAgICAgIHJlc3VsdFswXSA9IHJlc3VsdFsw
XSAqIDB4MUZGOworICAgICAgcmVzdWx0WzFdID0gcmVzdWx0WzFdICogMHgxRkY7CisgICAgICBy
ZXN1bHRbMl0gPSByZXN1bHRbMl0gKiAweDFGRjsKKyAgICAgIHJlc3VsdFszXSA9IHJlc3VsdFsz
XSAqIDB4MUY7CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiB7IGNvbG9yOiByZXN1bHQs
IHRvbDogdG9sIH07Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVDb2xvcihidWYsIGluZGV4LCBleHBl
Y3RlZENvbG9yLCBzcmNJbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICBzcmNG
b3JtYXQsIHNyY1R5cGUsIHJlYWRGb3JtYXQsIHJlYWRUeXBlKSB7CisgIHZhciBzcmNDaGFubmVs
Q291bnQgPSBnZXRDaGFubmVsQ291bnQoc3JjRm9ybWF0KTsKKyAgdmFyIHJlYWRDaGFubmVsQ291
bnQgPSBnZXRDaGFubmVsQ291bnQocmVhZEZvcm1hdCk7CisKKyAgdmFyIGNvbG9yID0gZ2V0Q29s
b3IoYnVmLCBpbmRleCwgcmVhZEZvcm1hdCwgcmVhZFR5cGUpOworICBleHBlY3RlZENvbG9yID0g
ZGVub3JtYWxpemVDb2xvcihzcmNJbnRlcm5hbEZvcm1hdCwgcmVhZFR5cGUsIGV4cGVjdGVkQ29s
b3IpOworCisgIHZhciBtaW5DaGFubmVsID0gTWF0aC5taW4oc3JjQ2hhbm5lbENvdW50LCByZWFk
Q2hhbm5lbENvdW50KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5DaGFubmVsOyArK2kpIHsK
KyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWRDb2xvci5jb2xvcltpXSAtIGNvbG9yW2ldKSA+IGV4
cGVjdGVkQ29sb3IudG9sKSB7CisgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBjb2xvciA9ICIg
KyBleHBlY3RlZENvbG9yLmNvbG9yICsgIiwgd2FzID0gIiArIGNvbG9yKTsKKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHRleHR1cmVU
ZXN0Q2FzZXMgPSBbCisgIHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1I4JywgdGV4Rm9ybWF0
OiAnUkVEJywgdGV4VHlwZTogJ1VOU0lHTkVEX0JZVEUnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JB
JywgcmVhZFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICBjbGVhckNvbG9yOiBbMC41LCAwLjAs
IDAuMCwgMF0sCisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1I4VUknLCB0ZXhG
b3JtYXQ6ICdSRURfSU5URUdFUicsIHRleFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICByZWFk
Rm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5cGU6ICdVTlNJR05FRF9JTlQnLAorICAgIGNs
ZWFyQ29sb3I6IFsyNTAsIDAsIDAsIDBdLAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3Jt
YXQ6ICdSOEknLCB0ZXhGb3JtYXQ6ICdSRURfSU5URUdFUicsIHRleFR5cGU6ICdCWVRFJywKKyAg
ICByZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5cGU6ICdJTlQnLAorICAgIGNsZWFy
Q29sb3I6IFstMTI2LCAwLCAwLCAwXSwKKyAgfSwKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0
OiAnUjE2VUknLCB0ZXhGb3JtYXQ6ICdSRURfSU5URUdFUicsIHRleFR5cGU6ICdVTlNJR05FRF9T
SE9SVCcsCisgICAgcmVhZEZvcm1hdDogJ1JHQkFfSU5URUdFUicsIHJlYWRUeXBlOiAnVU5TSUdO
RURfSU5UJywKKyAgICBjbGVhckNvbG9yOiBbMzAwMDEsIDAsIDAsIDBdLAorICB9LAorICB7Cisg
ICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSMTZJJywgdGV4Rm9ybWF0OiAnUkVEX0lOVEVHRVInLCB0
ZXhUeXBlOiAnU0hPUlQnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCByZWFkVHlw
ZTogJ0lOVCcsCisgICAgY2xlYXJDb2xvcjogWy0xNDE4OSwgMCwgMCwgMF0sCisgIH0sCisgIHsK
KyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1IzMlVJJywgdGV4Rm9ybWF0OiAnUkVEX0lOVEVHRVIn
LCB0ZXhUeXBlOiAnVU5TSUdORURfSU5UJywKKyAgICByZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VS
JywgcmVhZFR5cGU6ICdVTlNJR05FRF9JTlQnLAorICAgIGNsZWFyQ29sb3I6IFsxMjY3MjYsIDAs
IDAsIDBdLAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSMzJJJywgdGV4Rm9y
bWF0OiAnUkVEX0lOVEVHRVInLCB0ZXhUeXBlOiAnSU5UJywKKyAgICByZWFkRm9ybWF0OiAnUkdC
QV9JTlRFR0VSJywgcmVhZFR5cGU6ICdJTlQnLAorICAgIGNsZWFyQ29sb3I6IFstMTI2NzI2LCAw
LCAwLCAwXSwKKyAgfSwKKworICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSRzgnLCB0ZXhG
b3JtYXQ6ICdSRycsIHRleFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICByZWFkRm9ybWF0OiAn
UkdCQScsIHJlYWRUeXBlOiAnVU5TSUdORURfQllURScsCisgICAgY2xlYXJDb2xvcjogWzAuNSwg
MC43LCAwLjAsIDBdLAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSRzhVSScs
IHRleEZvcm1hdDogJ1JHX0lOVEVHRVInLCB0ZXhUeXBlOiAnVU5TSUdORURfQllURScsCisgICAg
cmVhZEZvcm1hdDogJ1JHQkFfSU5URUdFUicsIHJlYWRUeXBlOiAnVU5TSUdORURfSU5UJywKKyAg
ICBjbGVhckNvbG9yOiBbMjUwLCAxMjQsIDAsIDBdLAorICB9LAorICB7CisgICAgdGV4SW50ZXJu
YWxGb3JtYXQ6ICdSRzhJJywgdGV4Rm9ybWF0OiAnUkdfSU5URUdFUicsIHRleFR5cGU6ICdCWVRF
JywKKyAgICByZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5cGU6ICdJTlQnLAorICAg
IGNsZWFyQ29sb3I6IFstNTUsIDEyNCwgMCwgMF0sCisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5h
bEZvcm1hdDogJ1JHMTZVSScsIHRleEZvcm1hdDogJ1JHX0lOVEVHRVInLCB0ZXhUeXBlOiAnVU5T
SUdORURfU0hPUlQnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCByZWFkVHlwZTog
J1VOU0lHTkVEX0lOVCcsCisgICAgY2xlYXJDb2xvcjogWzMwMDAxLCAxOCwgMCwgMF0sCisgIH0s
CisgIHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1JHMTZJJywgdGV4Rm9ybWF0OiAnUkdfSU5U
RUdFUicsIHRleFR5cGU6ICdTSE9SVCcsCisgICAgcmVhZEZvcm1hdDogJ1JHQkFfSU5URUdFUics
IHJlYWRUeXBlOiAnSU5UJywKKyAgICBjbGVhckNvbG9yOiBbLTE0MTg5LCA2NzM1LCAwLCAwXSwK
KyAgfSwKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAnUkczMlVJJywgdGV4Rm9ybWF0OiAn
UkdfSU5URUdFUicsIHRleFR5cGU6ICdVTlNJR05FRF9JTlQnLAorICAgIHJlYWRGb3JtYXQ6ICdS
R0JBX0lOVEVHRVInLCByZWFkVHlwZTogJ1VOU0lHTkVEX0lOVCcsCisgICAgY2xlYXJDb2xvcjog
WzEyNjcyNiwgMTk3NiwgMCwgMF0sCisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDog
J1JHMzJJJywgdGV4Rm9ybWF0OiAnUkdfSU5URUdFUicsIHRleFR5cGU6ICdJTlQnLAorICAgIHJl
YWRGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCByZWFkVHlwZTogJ0lOVCcsCisgICAgY2xlYXJDb2xv
cjogWy0xMjY3MjYsIDEyNjcyNiwgMCwgMF0sCisgIH0sCisKKyAgeworICAgIHRleEludGVybmFs
Rm9ybWF0OiAnUkdCOCcsIHRleEZvcm1hdDogJ1JHQicsIHRleFR5cGU6ICdVTlNJR05FRF9CWVRF
JywKKyAgICByZWFkRm9ybWF0OiAnUkdCQScsIHJlYWRUeXBlOiAnVU5TSUdORURfQllURScsCisg
ICAgY2xlYXJDb2xvcjogWzAuNSwgMSwgMCwgMF0sCisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5h
bEZvcm1hdDogJ1JHQjU2NScsIHRleEZvcm1hdDogJ1JHQicsIHRleFR5cGU6ICdVTlNJR05FRF9C
WVRFJywKKyAgICByZWFkRm9ybWF0OiAnUkdCQScsIHJlYWRUeXBlOiAnVU5TSUdORURfQllURScs
CisgICAgY2xlYXJDb2xvcjogWzAuNSwgMC43LCAwLjIsIDBdLAorICB9LAorICB7CisgICAgdGV4
SW50ZXJuYWxGb3JtYXQ6ICdSR0I1NjUnLCB0ZXhGb3JtYXQ6ICdSR0InLCB0ZXhUeXBlOiAnVU5T
SUdORURfU0hPUlRfNV82XzUnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBJywgcmVhZFR5cGU6ICdV
TlNJR05FRF9CWVRFJywKKyAgICBjbGVhckNvbG9yOiBbMC41LCAwLjcsIDAuMiwgMF0sCisgIH0s
CisKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAnUkdCQTgnLCB0ZXhGb3JtYXQ6ICdSR0JB
JywgdGV4VHlwZTogJ1VOU0lHTkVEX0JZVEUnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBJywgcmVh
ZFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICBjbGVhckNvbG9yOiBbMC41LCAwLCAxLCAwLjdd
LAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdTUkdCOF9BTFBIQTgnLCB0ZXhG
b3JtYXQ6ICdSR0JBJywgdGV4VHlwZTogJ1VOU0lHTkVEX0JZVEUnLAorICAgIHJlYWRGb3JtYXQ6
ICdSR0JBJywgcmVhZFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICBjbGVhckNvbG9yOiBbMC41
LCAwLCAxLCAwLjddLAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSR0I1X0Ex
JywgdGV4Rm9ybWF0OiAnUkdCQScsIHRleFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICByZWFk
Rm9ybWF0OiAnUkdCQScsIHJlYWRUeXBlOiAnVU5TSUdORURfQllURScsCisgICAgY2xlYXJDb2xv
cjogWzAuNSwgMCwgMC43LCAxXSwKKyAgfSwKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAn
UkdCNV9BMScsIHRleEZvcm1hdDogJ1JHQkEnLCB0ZXhUeXBlOiAnVU5TSUdORURfU0hPUlRfNV81
XzVfMScsCisgICAgcmVhZEZvcm1hdDogJ1JHQkEnLCByZWFkVHlwZTogJ1VOU0lHTkVEX0JZVEUn
LAorICAgIGNsZWFyQ29sb3I6IFswLjUsIDAuNywgMSwgMF0sCisgIH0sCisgIHsKKyAgICB0ZXhJ
bnRlcm5hbEZvcm1hdDogJ1JHQjVfQTEnLCB0ZXhGb3JtYXQ6ICdSR0JBJywgdGV4VHlwZTogJ1VO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVicsCisgICAgcmVhZEZvcm1hdDogJ1JHQkEnLCByZWFk
VHlwZTogJ1VOU0lHTkVEX0JZVEUnLAorICAgIGNsZWFyQ29sb3I6IFswLjUsIDAuNywgMCwgMV0s
CisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1JHQkE0JywgdGV4Rm9ybWF0OiAn
UkdCQScsIHRleFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICByZWFkRm9ybWF0OiAnUkdCQScs
IHJlYWRUeXBlOiAnVU5TSUdORURfQllURScsCisgICAgY2xlYXJDb2xvcjogWzAuNSwgMC43LCAx
LCAwXSwKKyAgfSwKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAnUkdCQTQnLCB0ZXhGb3Jt
YXQ6ICdSR0JBJywgdGV4VHlwZTogJ1VOU0lHTkVEX1NIT1JUXzRfNF80XzQnLAorICAgIHJlYWRG
b3JtYXQ6ICdSR0JBJywgcmVhZFR5cGU6ICdVTlNJR05FRF9CWVRFJywKKyAgICBjbGVhckNvbG9y
OiBbMSwgMCwgMC41LCAwLjddLAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdS
R0JBOFVJJywgdGV4Rm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgdGV4VHlwZTogJ1VOU0lHTkVEX0JZ
VEUnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCByZWFkVHlwZTogJ1VOU0lHTkVE
X0lOVCcsCisgICAgY2xlYXJDb2xvcjogWzEyNywgMCwgMjU1LCAxNzhdLAorICB9LAorICB7Cisg
ICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSR0JBOEknLCB0ZXhGb3JtYXQ6ICdSR0JBX0lOVEVHRVIn
LCB0ZXhUeXBlOiAnQllURScsCisgICAgcmVhZEZvcm1hdDogJ1JHQkFfSU5URUdFUicsIHJlYWRU
eXBlOiAnSU5UJywKKyAgICBjbGVhckNvbG9yOiBbLTU1LCA1NiwgODAsIDEyN10sCisgIH0sCisg
IHsKKyAgICB0ZXhJbnRlcm5hbEZvcm1hdDogJ1JHQjEwX0EyVUknLCB0ZXhGb3JtYXQ6ICdSR0JB
X0lOVEVHRVInLCB0ZXhUeXBlOiAnVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWJywKKyAgICBy
ZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5cGU6ICdVTlNJR05FRF9JTlQnLAorICAg
IGNsZWFyQ29sb3I6IFsxNzgsIDAsIDEyNywgM10sCisgIH0sCisgIHsKKyAgICB0ZXhJbnRlcm5h
bEZvcm1hdDogJ1JHQkExNlVJJywgdGV4Rm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgdGV4VHlwZTog
J1VOU0lHTkVEX1NIT1JUJywKKyAgICByZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5
cGU6ICdVTlNJR05FRF9JTlQnLAorICAgIGNsZWFyQ29sb3I6IFsxNDE4OSwgNjczNSwgMCwgMTld
LAorICB9LAorICB7CisgICAgdGV4SW50ZXJuYWxGb3JtYXQ6ICdSR0JBMTZJJywgdGV4Rm9ybWF0
OiAnUkdCQV9JTlRFR0VSJywgdGV4VHlwZTogJ1NIT1JUJywKKyAgICByZWFkRm9ybWF0OiAnUkdC
QV9JTlRFR0VSJywgcmVhZFR5cGU6ICdJTlQnLAorICAgIGNsZWFyQ29sb3I6IFsxNDE4OSwgLTY3
MzUsIDAsIDE5XSwKKyAgfSwKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAnUkdCQTMyVUkn
LCB0ZXhGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCB0ZXhUeXBlOiAnVU5TSUdORURfSU5UJywKKyAg
ICByZWFkRm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgcmVhZFR5cGU6ICdVTlNJR05FRF9JTlQnLAor
ICAgIGNsZWFyQ29sb3I6IFsxMjY3MjYsIDY3MjYsIDk4NzY1LCAyMDE1XSwKKyAgfSwKKyAgewor
ICAgIHRleEludGVybmFsRm9ybWF0OiAnUkdCQTMySScsIHRleEZvcm1hdDogJ1JHQkFfSU5URUdF
UicsIHRleFR5cGU6ICdJTlQnLAorICAgIHJlYWRGb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCByZWFk
VHlwZTogJ0lOVCcsCisgICAgY2xlYXJDb2xvcjogWzEyNjcyNiwgLTY3MjYsIC05ODc2NSwgMjAx
NV0sCisgIH0sCisKKyAgeworICAgIHRleEludGVybmFsRm9ybWF0OiAnUkdCMTBfQTInLCB0ZXhG
b3JtYXQ6ICdSR0JBJywgdGV4VHlwZTogJ1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVicsCisg
ICAgcmVhZEZvcm1hdDogJ1JHQkEnLCByZWFkVHlwZTogJ1VOU0lHTkVEX0JZVEUnLAorICAgIGNs
ZWFyQ29sb3I6IFswLjcsIDAsIDAuNSwgMV0sCisgIH0sCisKKyAgLy8gVE9ETyh6bW8pOiBhZGQg
ZmxvYXQvaGFsZl9mbG9hdCB0ZXN0IGNhc2VzIHdpdGggZXh0ZW5zaW9uIHN1cHBvcnRzLgorXTsK
KworZnVuY3Rpb24gZ2V0QXJyYXlUeXBlRnJvbVJlYWRQaXhlbHNUeXBlKGdsLCB0eXBlKSB7Cisg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgZ2wuVU5TSUdORURfQllURToKKyAgICAgIHJldHVy
biBVaW50OEFycmF5OworICAgIGNhc2UgZ2wuQllURToKKyAgICAgIHJldHVybiBJbnQ4QXJyYXk7
CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVDoKKyAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JU
XzVfNl81OgorICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICBjYXNlIGds
LlVOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICByZXR1cm4gVWludDE2QXJyYXk7CisgICAg
Y2FzZSBnbC5TSE9SVDoKKyAgICAgIHJldHVybiBJbnQxNkFycmF5OworICAgIGNhc2UgZ2wuVU5T
SUdORURfSU5UOgorICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAg
IGNhc2UgZ2wuVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVjoKKyAgICBjYXNlIGdsLlVOU0lH
TkVEX0lOVF81XzlfOV85X1JFVjoKKyAgICAgIHJldHVybiBVaW50MzJBcnJheTsKKyAgICBjYXNl
IGdsLklOVDoKKyAgICAgIHJldHVybiBJbnQzMkFycmF5OworICAgIGNhc2UgZ2wuSEFMRl9GTE9B
VDoKKyAgICAgIHJldHVybiBVaW50MTZBcnJheTsKKyAgICBjYXNlIGdsLkZMT0FUOgorICAgICAg
cmV0dXJuIEZsb2F0MzJBcnJheTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIG51bGw7Cisg
IH0KK30KKworZnVuY3Rpb24gZ2V0Rm9ybWF0U3RyaW5nKGdsLCBmb3JtYXQpIHsKKyAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICBjYXNlIGdsLlJFRDoKKyAgICAgIHJldHVybiAnUkVEJzsKKyAgICBj
YXNlIGdsLlJFRF9JTlRFR0VSOgorICAgICAgcmV0dXJuICdSRURfSU5URUdFUic7CisgICAgY2Fz
ZSBnbC5SRzoKKyAgICAgIHJldHVybiAnUkcnOworICAgIGNhc2UgZ2wuUkdfSU5URUdFUjoKKyAg
ICAgIHJldHVybiAnUkdfSU5URUdFUic7CisgICAgY2FzZSBnbC5SR0I6CisgICAgICByZXR1cm4g
J1JHQic7CisgICAgY2FzZSBnbC5SR0JfSU5URUdFUjoKKyAgICAgIHJldHVybiAnUkdCX0lOVEVH
RVInOworICAgIGNhc2UgZ2wuUkdCQToKKyAgICAgIHJldHVybiAnUkdCQSc7CisgICAgY2FzZSBn
bC5SR0JBX0lOVEVHRVI6CisgICAgICByZXR1cm4gJ1JHQkFfSU5URUdFUic7CisgICAgY2FzZSBn
bC5MVU1JTkFOQ0U6CisgICAgICByZXR1cm4gJ0xVTUlOQU5DRSc7CisgICAgY2FzZSBnbC5MVU1J
TkFOQ0VfQUxQSEE6CisgICAgICByZXR1cm4gJ0xVTUlOQU5DRV9BTFBIQSc7CisgICAgY2FzZSBn
bC5BTFBIQToKKyAgICAgIHJldHVybiAnQUxQSEEnOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1
cm4gJyc7CisgIH07Cit9CisKK2Z1bmN0aW9uIGdldFR5cGVTdHJpbmcoZ2wsIHR5cGUpIHsKKyAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOgorICAgICAgcmV0dXJu
ICdVTlNJR05FRF9CWVRFJzsKKyAgICBjYXNlIGdsLkJZVEU6CisgICAgICByZXR1cm4gJ0JZVEUn
OworICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlQ6CisgICAgICByZXR1cm4gJ1VOU0lHTkVEX1NI
T1JUJzsKKyAgICBjYXNlIGdsLlNIT1JUOgorICAgICAgcmV0dXJuICdTSE9SVCc7CisgICAgY2Fz
ZSBnbC5VTlNJR05FRF9JTlQ6CisgICAgICByZXR1cm4gJ1VOU0lHTkVEX0lOVCc7CisgICAgY2Fz
ZSBnbC5JTlQ6CisgICAgICByZXR1cm4gJ0lOVCc7CisgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9S
VF81XzZfNToKKyAgICAgIHJldHVybiAnVU5TSUdORURfU0hPUlRfNV82XzUnOworICAgIGNhc2Ug
Z2wuVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgIHJldHVybiAnVU5TSUdORURfU0hPUlRf
NV81XzVfMSc7CisgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAg
ICByZXR1cm4gJ1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVic7CisgICAgY2FzZSBnbC5VTlNJ
R05FRF9TSE9SVF80XzRfNF80OgorICAgICAgcmV0dXJuICdVTlNJR05FRF9TSE9SVF80XzRfNF80
JzsKKyAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6CisgICAgICByZXR1
cm4gJ1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYnOworICAgIGNhc2UgZ2wuVU5TSUdORURf
SU5UXzVfOV85XzlfUkVWOgorICAgICAgcmV0dXJuICdVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYn
OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gJyc7CisgIH07Cit9CisKK2Z1bmN0aW9uIGVs
ZW1lbnRDb3VudFBlclBpeGVsKGdsLCByZWFkRm9ybWF0LCByZWFkVHlwZSkgeworICBzd2l0Y2gg
KHJlYWRGb3JtYXQpIHsKKyAgICBjYXNlIGdsLlJFRDoKKyAgICBjYXNlIGdsLlJFRF9JTlRFR0VS
OgorICAgIGNhc2UgZ2wuQUxQSEE6CisgICAgY2FzZSBnbC5MVU1JTkFOQ0U6CisgICAgICByZXR1
cm4gMTsKKyAgICBjYXNlIGdsLlJHOgorICAgIGNhc2UgZ2wuUkdfSU5URUdFUjoKKyAgICBjYXNl
IGdsLkxVTUlOQU5DRV9BTFBIQToKKyAgICAgIHJldHVybiAyOworICAgIGNhc2UgZ2wuUkdCOgor
ICAgIGNhc2UgZ2wuUkdCX0lOVEVHRVI6CisgICAgICBzd2l0Y2ggKHJlYWRUeXBlKSB7CisgICAg
ICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIDM7CisgICAgICB9CisgICAgY2FzZSBn
bC5SR0JBOgorICAgIGNhc2UgZ2wuUkdCQV9JTlRFR0VSOgorICAgICAgc3dpdGNoIChyZWFkVHlw
ZSkgeworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAgIGNh
c2UgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFVjoKKyAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6CisgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgcmVhZCBm
b3JtYXQvdHlwZSA9ICIgKyByZWFkRm9ybWF0ICsgIi8iICsgcmVhZFR5cGUpOworICAgICAgcmV0
dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdFJlYWRQaXhlbHMoZ2wsIHNyY0ludGVybmFs
Rm9ybWF0LCBzcmNGb3JtYXQsIHNyY1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICByZWFk
Rm9ybWF0LCByZWFkVHlwZSwgZXhwZWN0ZWRDb2xvcikgeworICB2YXIgYXJyYXlUeXBlID0gZ2V0
QXJyYXlUeXBlRnJvbVJlYWRQaXhlbHNUeXBlKGdsLCByZWFkVHlwZSk7CisgIHZhciBidWYgPSBu
ZXcgYXJyYXlUeXBlKHdpZHRoICogaGVpZ2h0ICogNCk7CisgIGdsLnJlYWRQaXhlbHMoMCwgMCwg
d2lkdGgsIGhlaWdodCwgcmVhZEZvcm1hdCwgcmVhZFR5cGUsIGJ1Zik7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsICJyZWFkUGl4ZWxzIHNob3VsZCBnZW5l
cmF0ZSBubyBlcnJvciIpOworICB2YXIgZGlmZkZvdW5kID0gZmFsc2U7CisgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCB3aWR0aCAqIGhlaWdodDsgKytpaSkgeworICAgIHZhciBvZmZzZXQgPSBpaSAq
IGVsZW1lbnRDb3VudFBlclBpeGVsKGdsLCByZWFkRm9ybWF0LCByZWFkVHlwZSk7CisgICAgaWYg
KCFjb21wYXJlQ29sb3IoYnVmLCBvZmZzZXQsIGV4cGVjdGVkQ29sb3IsIHNyY0ludGVybmFsRm9y
bWF0LCBzcmNGb3JtYXQsIHNyY1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgcmVhZEZvcm1h
dCwgcmVhZFR5cGUpKSB7CisgICAgICBkaWZmRm91bmQgPSB0cnVlOworICAgICAgYnJlYWs7Cisg
ICAgfQorICB9CisgIGlmICghZGlmZkZvdW5kKSB7CisgICAgdGVzdFBhc3NlZCgiQ29sb3IgcmVh
ZCBiYWNrIGFzIGV4cGVjdGVkIik7CisgIH0KK30KKworZnVuY3Rpb24gY2xlYXJCdWZmZXIoZ2ws
IHRleEludGVybmFsRm9ybWF0LCBjbGVhckNvbG9yKSB7CisgIHZhciB2YWx1ZTsKKyAgc3dpdGNo
ICh0ZXhJbnRlcm5hbEZvcm1hdCkgeworICAgIGNhc2UgZ2wuUjhVSToKKyAgICBjYXNlIGdsLlIx
NlVJOgorICAgIGNhc2UgZ2wuUjMyVUk6CisgICAgY2FzZSBnbC5SRzhVSToKKyAgICBjYXNlIGds
LlJHMTZVSToKKyAgICBjYXNlIGdsLlJHMzJVSToKKyAgICBjYXNlIGdsLlJHQkE4VUk6CisgICAg
Y2FzZSBnbC5SR0JBMTZVSToKKyAgICBjYXNlIGdsLlJHQkEzMlVJOgorICAgIGNhc2UgZ2wuUkdC
MTBfQTJVSToKKyAgICAgIHZhbHVlID0gbmV3IFVpbnQzMkFycmF5KDQpOworICAgICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IDQ7ICsraWkpCisgICAgICAgIHZhbHVlW2lpXSA9IGNsZWFyQ29sb3Jb
aWldOworICAgICAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuQ09MT1IsIDAsIHZhbHVlKTsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgZ2wuUjhJOgorICAgIGNhc2UgZ2wuUjE2SToKKyAgICBjYXNlIGds
LlIzMkk6CisgICAgY2FzZSBnbC5SRzhJOgorICAgIGNhc2UgZ2wuUkcxNkk6CisgICAgY2FzZSBn
bC5SRzMySToKKyAgICBjYXNlIGdsLlJHQkE4SToKKyAgICBjYXNlIGdsLlJHQkExNkk6CisgICAg
Y2FzZSBnbC5SR0JBMzJJOgorICAgICAgdmFsdWUgPSBuZXcgSW50MzJBcnJheSg0KTsKKyAgICAg
IGZvciAodmFyIGlpID0gMDsgaWkgPCA0OyArK2lpKQorICAgICAgICB2YWx1ZVtpaV0gPSBjbGVh
ckNvbG9yW2lpXTsKKyAgICAgIGdsLmNsZWFyQnVmZmVyaXYoZ2wuQ09MT1IsIDAsIHZhbHVlKTsK
KyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBnbC5jbGVhckNvbG9yKGNsZWFyQ29s
b3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworICAg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICBicmVhazsKKyAgfQorfQor
Citmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGV4dHVyZVRlc3RDYXNlcy5sZW5ndGg7ICsrdHQpIHsK
KyAgdmFyIHRlc3QgPSB0ZXh0dXJlVGVzdENhc2VzW3R0XTsKKyAgZGVidWcoIiIpOworICBkZWJ1
ZygiUmVhZFBpeGVscyBmcm9tIGZibyB3aXRoIHRleHR1cmUgPSAoIiArIHRlc3QudGV4SW50ZXJu
YWxGb3JtYXQgKworICAgICAgICAiLCAiICsgdGVzdC50ZXhGb3JtYXQgKyAiLCAiICsgdGVzdC50
ZXhUeXBlICsKKyAgICAgICAgIiksIGZvcm1hdCA9ICIgKyB0ZXN0LnJlYWRGb3JtYXQgKyAiLCB0
eXBlID0gIiArIHRlc3QucmVhZFR5cGUpOworICB2YXIgd2lkdGggPSAyOworICB2YXIgaGVpZ2h0
ID0gMjsKKyAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgdmFyIGNvbG9ySW1hZ2UgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGNvbG9ySW1hZ2Up
OworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsW3Rlc3QudGV4SW50ZXJuYWxG
b3JtYXRdLCB3aWR0aCwgaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgIGdsW3Rlc3QudGV4Rm9y
bWF0XSwgZ2xbdGVzdC50ZXhUeXBlXSwgbnVsbCk7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJE
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgY29sb3JJbWFnZSwgMCk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsICJTZXR0aW5nIHVwIGZibyBzaG91bGQgZ2Vu
ZXJhdGUgbm8gZXJyb3IiKTsKKyAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgZGVidWcoImZibyBp
cyBub3QgY29tcGxldGUsIHNraXAiKTsKKyAgICBjb250aW51ZTsKKyAgfQorICBjbGVhckJ1ZmZl
cihnbCwgZ2xbdGVzdC50ZXhJbnRlcm5hbEZvcm1hdF0sIHRlc3QuY2xlYXJDb2xvcik7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsICJDbGVhciBjb2xvciBz
aG91bGQgZ2VuZXJhdGUgbm8gZXJyb3IiKTsKKworICB2YXIgaW1wbEZvcm1hdCA9IGdsLmdldFBh
cmFtZXRlcihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCk7CisgIHZhciBpbXBs
VHlwZSA9IGdsLmdldFBhcmFtZXRlcihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUp
OworICB2YXIgaW1wbEZvcm1hdFN0cmluZyA9IGdldEZvcm1hdFN0cmluZyhnbCwgaW1wbEZvcm1h
dCk7CisgIHZhciBpbXBsVHlwZVN0cmluZyA9IGdldFR5cGVTdHJpbmcoZ2wsIGltcGxUeXBlKTsK
KworICBpZiAoZ2xbdGVzdC50ZXhJbnRlcm5hbEZvcm1hdF0gPT0gZ2wuUkdCMTBfQTIpIHsKKyAg
ICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRocmVlIHJlYWQgZm9ybWF0L3R5cGUg
YXJlIHN1cHBvcnRlZC4KKyAgICB2YXIgcmVhZFR5cGVzID0gW2dsLlVOU0lHTkVEX0JZVEUsIGds
LlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl07CisgICAgdmFyIHJlYWRUeXBlU3RyaW5ncyA9
IFsnVU5TSUdORURfQllURScsICdVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYnXTsKKyAgICBp
ZiAoaW1wbEZvcm1hdCA9PSBnbC5SR0JBICYmIGltcGxUeXBlU3RyaW5nICE9ICcnKSB7CisgICAg
ICByZWFkVHlwZXMucHVzaChpbXBsVHlwZSk7CisgICAgICByZWFkVHlwZVN0cmluZ3MucHVzaChp
bXBsVHlwZVN0cmluZyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlVuaW1wbGVt
ZW50ZWQgSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGNvbG9yIHJlYWQgZm9ybWF0L3R5cGUgPSAi
ICsKKyAgICAgICAgICAgICAgICAgaW1wbEZvcm1hdCArICIvIiArIGltcGxUeXBlKTsKKyAgICB9
CisgICAgZm9yICh2YXIgcnIgPSAwOyByciA8IHJlYWRUeXBlcy5sZW5ndGg7ICsrcnIpIHsKKyAg
ICAgIGRlYnVnKCJTcGVjaWFsIGNhc2UgUkdCMTBfQTIsIGZvcm1hdCA9IFJHQkEsIHR5cGUgPSAi
ICsgcmVhZFR5cGVTdHJpbmdzW3JyXSk7CisgICAgICB0ZXN0UmVhZFBpeGVscyhnbCwgZ2xbdGVz
dC50ZXhJbnRlcm5hbEZvcm1hdF0sIGdsW3Rlc3QudGV4Rm9ybWF0XSwgZ2xbdGVzdC50ZXhUeXBl
XSwKKyAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkEsIHJlYWRUeXBlc1tycl0sIHRlc3QuY2xl
YXJDb2xvcik7CisgICAgfQorICB9IGVsc2UgeworICAgIHRlc3RSZWFkUGl4ZWxzKGdsLCBnbFt0
ZXN0LnRleEludGVybmFsRm9ybWF0XSwgZ2xbdGVzdC50ZXhGb3JtYXRdLCBnbFt0ZXN0LnRleFR5
cGVdLAorICAgICAgICAgICAgICAgICAgIGdsW3Rlc3QucmVhZEZvcm1hdF0sIGdsW3Rlc3QucmVh
ZFR5cGVdLCB0ZXN0LmNsZWFyQ29sb3IpOworCisgICAgZGVidWcoIlRlc3RpbmcgaW1wbGVtZW50
YXRpb24gZGVwZW5kZW50IGNvbG9yIHJlYWQgZm9ybWF0ID0gIiArIGltcGxGb3JtYXRTdHJpbmcg
KworICAgICAgICAgICIsIHR5cGUgPSAiICsgaW1wbFR5cGVTdHJpbmcpOworICAgIGlmIChpbXBs
Rm9ybWF0U3RyaW5nID09ICcnKSB7CisgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIElNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0gIiArIGltcGxGb3JtYXQpOworICAgICAgY29udGlu
dWU7CisgICAgfQorICAgIGlmIChpbXBsVHlwZVN0cmluZyA9PSAnJykgeworICAgICAgdGVzdEZh
aWxlZCgiSW52YWxpZCBJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUgPSAiICsgaW1wbFR5
cGUpOworICAgICAgY29udGludWU7CisgICAgfQorICAgIHRlc3RSZWFkUGl4ZWxzKGdsLCBnbFt0
ZXN0LnRleEludGVybmFsRm9ybWF0XSwgZ2xbdGVzdC50ZXhGb3JtYXRdLCBnbFt0ZXN0LnRleFR5
cGVdLAorICAgICAgICAgICAgICAgICAgIGltcGxGb3JtYXQsIGltcGxUeXBlLCB0ZXN0LmNsZWFy
Q29sb3IpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZShjb2xvckltYWdlKTsKKyAgICBnbC5kZWxl
dGVGcmFtZWJ1ZmZlcihmYm8pOworICB9Cit9CisKK2RlYnVnKCIiKQordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRp
bmcvcmVhZC1waXhlbHMtZnJvbS1yZ2I4LWludG8tcGJvLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcvcmVh
ZC1waXhlbHMtZnJvbS1yZ2I4LWludG8tcGJvLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjkxZjFk
M2MwYTg5YTdhZmMwYjgyMDM0NDAyZjkyYjBlMTdjODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVh
ZGluZy9yZWFkLXBpeGVscy1mcm9tLXJnYjgtaW50by1wYm8tYnVnLmh0bWwKQEAgLTAsMCArMSw4
NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgMiBDb25mb3JtYW5jZSBUZXN0OiByZWFkUGl4ZWxzIGZyb20gUkdCOCBCdWZmZXIg
SW50byBQaXhlbCBQYWNrIEJ1ZmZlci48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworCitkZWJ1ZygiIik7CitkZXNjcmlwdGlvbigiVmVyaWZpZXMgcmVhZFBpeGVs
cyBmcm9tIFJHQjggYnVmZmVyIGludG8gUElYRUxfUEFDSyBidWZmZXIgd29ya3MiKTsKKworZGVi
dWcoIk9uIE1hY09TWCB3aXRoIEFNRCBHUFVzLCB0aGUgYWxwaGEgY2hhbm5lbCBpcyByZWFkYmFj
ayBhcyAwIGluc3RlYWQgb2YgMjU1Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBwaXhlbCA9IFswLCAwLCAwLCAwXTsKK3ZhciBleHBlY3RlZENvbG9yID0gWzI1NSwgMTAyLCAw
LCAyNTVdOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIDIpOwor
CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30g
ZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgdmFyIHdpZHRoID0g
NDsKKyAgdmFyIGhlaWdodCA9IDQ7CisKKyAgdmFyIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmZmVyKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGds
LlJHQjgsIHdpZHRoLCBoZWlnaHQpOworCisgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgIGdsLmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworCisgIGlmIChnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgIHRlc3RGYWlsZWQoImZyYW1lYnVmZmVyIHdpdGggUkdCOCBjb2xvciBidWZmZXIgaXMg
aW5jb21wbGV0ZSIpOworICB9IGVsc2UgeworICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIHZhciBw
Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1BBQ0tf
QlVGRkVSLCBwYm8pOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfUEFDS19CVUZGRVIsIHdp
ZHRoICogaGVpZ2h0ICogNCwgZ2wuU1RBVElDX0NPUFkpOworCisgICAgZ2wucmVhZFBpeGVscygw
LCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKworICAg
IHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICBnbC5n
ZXRCdWZmZXJTdWJEYXRhKGdsLlBJWEVMX1BBQ0tfQlVGRkVSLCAwLCBkYXRhKTsKKworICAgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCB3aWR0aCAqIGhlaWdodDsgKytpaSkgeworICAgICAgaWYgKGRh
dGFbaWkgKiA0XSAhPSAyNTUgfHwKKyAgICAgICAgICBkYXRhW2lpICogNCArIDFdICE9IDAgfHwK
KyAgICAgICAgICBkYXRhW2lpICogNCArIDJdICE9IDAgfHwKKyAgICAgICAgICBkYXRhW2lpICog
NCArIDNdICE9IDI1NSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBpbiBwaXhlbCAi
ICsgaWkgKyAiOiBbMjU1LDAsMCwyNTVdLCBnb3Q6ICIgKworICAgICAgICAgICAgICAgICAgIFtk
YXRhW2lpICogNF0sIGRhdGFbaWkgKiA0ICsgMV0sIGRhdGFbaWkgKiA0ICsgMl0sIGRhdGFbaWkg
KiA0ICsgM11dKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGVzdHMgc2hvdWxkIGNvbXBsZXRlIHdp
dGhvdXQgZ2wgZXJyb3JzIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3Jl
YWQtcGl4ZWxzLWludG8tcGl4ZWwtcGFjay1idWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4
ZWxzLWludG8tcGl4ZWwtcGFjay1idWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDY0NmE2ZWNkZjIw
NTQ5NjU3YmRmOTZmZDk4ZjE1NThlNmZiYWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcv
cmVhZC1waXhlbHMtaW50by1waXhlbC1wYWNrLWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsMTUyIEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCAyIENvbmZvcm1hbmNlIFRlc3Q6IFJlYWRQaXhlbHMgSW50byBQaXhlbCBQYWNrIEJ1ZmZl
ci48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0
IiBoZWlnaHQ9IjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitmdW5jdGlv
biBjaGVja0Zvcm1hdEFuZFR5cGUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2hl
Y2sgZm9ybWF0IC8gdHlwZSIpOworICAgIHZhciBpbnZhbGlkRm9ybWF0ID0gW2dsLkRFUFRIX0NP
TVBPTkVOVCwgZ2wuREVQVEhfU1RFTkNJTCwgZ2wuUjgsIGdsLlJHQkE0LCBnbC5MVU1JTkFOQ0Us
IGdsLkxVTUlOQU5DRV9BTFBIQV07CisgICAgdmFyIGludmFsaWRUeXBlID0gW2dsLlVOU0lHTkVE
X0lOVF8yNF84XTsKKyAgICBmb3IgKHZhciBmZiA9IDA7IGZmIDwgaW52YWxpZEZvcm1hdC5sZW5n
dGg7ICsrZmYpIHsKKyAgICAgICAgdmFyIGZvcm1hdCA9IGludmFsaWRGb3JtYXRbZmZdOworICAg
ICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGZvcm1hdCwgZ2wuVU5TSUdORURfQllURSwg
MCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIkZv
cm1hdCBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBhcyAiICsgd3R1LmdsRW51bVRvU3RyaW5n
KGdsLCBmb3JtYXQpKTsKKyAgICB9CisgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IGludmFsaWRU
eXBlLmxlbmd0aDsgKyt0dCkgeworICAgICAgICB2YXIgdHlwZSA9IGludmFsaWRUeXBlW3R0XTsK
KyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCB0eXBlLCAwKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiVHlwZSBzaG91
bGQgbm90IGJlIGFibGUgdG8gcmVhZCBhcyAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0eXBl
KSk7CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjaGVjayBjb21iaW5hdGlv
bnMgb2YgZm9ybWF0IGFuZCB0eXBlIik7CisgICAgdmFyIGNvbWJpbmF0aW9ucyA9IFsKKyAgICAg
ICAge2Zvcm1hdDogZ2wuUkdCQSwgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFfSwKKyAg
ICAgICAge2Zvcm1hdDogZ2wuUkdCLCAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFfSwK
KyAgICAgICAge2Zvcm1hdDogZ2wuUkdCLCAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9TSE9S
VF81XzZfNX0sCisgICAgICAgIHtmb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgdHlwZTogZ2wuVU5T
SUdORURfU0hPUlRfNV81XzVfMX0sCisgICAgICAgIHtmb3JtYXQ6IGdsLlJHQkEsICAgICAgICAg
dHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNH0sCisgICAgICAgIHtmb3JtYXQ6IGdsLkFM
UEhBLCAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURX0sCisgICAgICAgIHtmb3JtYXQ6IGds
LlJFRCwgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURX0sCisgICAgICAgIHtmb3JtYXQ6
IGdsLlJHQkFfSU5URUdFUiwgdHlwZTogZ2wuVU5TSUdORURfSU5UfSwKKyAgICAgICAge2Zvcm1h
dDogZ2wuUkdCQV9JTlRFR0VSLCB0eXBlOiBnbC5JTlR9CisgICAgXTsKKworICAgIHZhciBpbXBs
Rm9ybWF0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9S
TUFUKTsKKyAgICB2YXIgaW1wbFR5cGUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJ
T05fQ09MT1JfUkVBRF9UWVBFKTsKKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgY29tYmluYXRp
b25zLmxlbmd0aDsgKysgdHQpIHsKKyAgICAgICAgdmFyIGluZm8gPSBjb21iaW5hdGlvbnNbdHRd
OworICAgICAgICB2YXIgZm9ybWF0ID0gaW5mby5mb3JtYXQ7CisgICAgICAgIHZhciB0eXBlID0g
aW5mby50eXBlOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGZvcm1hdCwgdHlw
ZSwgMCk7CisgICAgICAgIC8vIE9ubHkgdHdvIGZvcm1hdC90eXBlIHBhcmFtZXRlciBwYWlycyBh
cmUgYWNjZXB0ZWQuIEdMX1JHQkEvR0xfVU5TSUdORURfQllURSBpcyBhbHdheXMKKyAgICAgICAg
Ly8gYWNjZXB0ZWQgb24gZGVmYXVsdCByZWFkYnVmZmVyLiBUaGUgb3RoZXIgYWNjZXB0YWJsZSBw
YWlyIGNhbiBiZSBkaXNjb3ZlcmVkIGJ5IHF1ZXJ5aW5nCisgICAgICAgIC8vIEdMX0lNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIGFuZCBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFE
X1RZUEUuCisgICAgICAgIGlmICgoZm9ybWF0ID09IGdsLlJHQkEgJiYgdHlwZSA9PSBnbC5VTlNJ
R05FRF9CWVRFKSB8fCAoZm9ybWF0ID09IGltcGxGb3JtYXQgJiYgdHlwZSA9PSBpbXBsVHlwZSkp
IHsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGhl
IGNvbWJpbmF0aW9uIG9mIGZvcm1hdC90eXBlIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYXMgIiAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwg
Zm9ybWF0KSArICIgLyAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0eXBlKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgIlRoZSBjb21iaW5hdGlvbiBvZiBmb3JtYXQvdHlwZSBzaG91bGQgbm90IGJl
IGFibGUgdG8gcmVhZCBhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3R1
LmdsRW51bVRvU3RyaW5nKGdsLCBmb3JtYXQpICsgIiAvICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmco
Z2wsIHR5cGUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdmFsaWRhdGVQaXhl
bFBhY2tCdWZmZXJBbmRQYXJhbWV0ZXJzKGNhbnZhc1dpZHRoLCBjYW52YXNIZWlnaHQpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWYWxpZGF0ZSBQSVhFTF9QQUNLIGJ1ZmZlciBhbmQg
cmVhZFBpeGVscycgcGFyYW1ldGVycyIpOworICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wucGl4ZWxTdG9yZWko
Z2wuUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgdmFyIHNpemUgPSBjYW52YXNXaWR0aCAqIGNh
bnZhc0hlaWdodCAqIDQ7CisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfUEFDS19CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5QSVhFTF9QQUNLX0JVRkZFUiwgc2l6ZSwgZ2wuU1RBVElDX0RSQVcpOworICAg
IHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KHNpemUpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJQSVhFTF9QQUNLIGJ1ZmZlciBpcyBib3VuZCIpOworICAgIGdsLnJlYWRQaXhlbHMo
MCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAic2hvdWxkIGdlbmVyYXRl
IElOVkFMSURfT1BFUkFUSU9OIGlmIHBpeGVsIHBhY2sgYnVmZmVyIGlzIGJvdW5kIik7CisgICAg
Z2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIlZhbGlkYXRlIHRoZSBvZmZzZXQgb2YgUElYRUxfUEFDSyBidWZmZXIg
YW5kIGJ1ZmZlciBzaXplIik7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCAtMSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgIm9mZnNldCA8IDAiKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEs
IDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHNpemUpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAib2Zmc2V0ID4gYnVmZmVyIHNpemUiKTsK
KyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIGNhbnZhc1dpZHRoICsgMSwgY2FudmFzSGVpZ2h0LCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgInBpeGVsIHBhY2sgYnVmZmVyIGlzIG5vdCBsYXJnZSBl
bm91Z2giKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmFsaWRhdGUgdGhlIHJlYWRp
bmcgYXJlYSBvZiBmcmFtZWJ1ZmZlciIpOworICAgIGdsLnJlYWRQaXhlbHMoLTEsIC0yLCBjYW52
YXNXaWR0aCwgY2FudmFzSGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInJlYWRpbmcgcGl4ZWxzIG91
dHNpZGUgb2YgdGhlIGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLiIpOworICAgIGdsLnJlYWRQ
aXhlbHMoMiwgMSwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJy
ZWFkaW5nIHBpeGVscyBvdXRzaWRlIG9mIHRoZSBmcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4i
KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDIsIDEsIC0xLCAtMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkaW5nIHBpeGVscyB3aXRoIG5lZ2F0aXZlIHdp
ZHRoIC8gaGVpZ2h0IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFLiIpOworCisgICAgY2hl
Y2tGb3JtYXRBbmRUeXBlKCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm5vIFBJWEVM
X1BBQ0sgYnVmZmVyIGJvdW5kIik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9QQUNLX0JV
RkZFUiwgbnVsbCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBhcnJheSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJubyBwaXhlbCBwYWNrIGJ1ZmZlciBib3VuZCIpOworCisgICAgZ2wuZGVsZXRlQnVm
ZmVyKGJ1ZmZlcik7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIp
OworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgcGl4ZWwgPSBbMCwgMCwgMCwgMF07
Cit2YXIgZXhwZWN0ZWRDb2xvciA9IFsyNTUsIDEwMiwgMCwgMjU1XTsKKwordmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KGNhbnZhcywgdW5kZWZpbmVkLCAyKTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFp
bGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJj
b250ZXh0IGV4aXN0cyIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVzY3JpcHRpb24oJ1JlYWRQaXhl
bHMgaW50byBQSVhFTF9QQUNLIGJ1ZmZlcicpOworICB2YWxpZGF0ZVBpeGVsUGFja0J1ZmZlckFu
ZFBhcmFtZXRlcnMoNCwgNCk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3Jl
YWQtcGl4ZWxzLXBhY2stcGFyYW1ldGVycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlYWRpbmcvcmVhZC1waXhlbHMtcGFj
ay1wYXJhbWV0ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ0NTU5ZmI5MzVkMjA1NjEzM2U0ZGEyOGVl
OWU2YjNhMDcwMzM0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4ZWxzLXBh
Y2stcGFyYW1ldGVycy5odG1sCkBAIC0wLDAgKzEsMzUzIEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgaW5pdGlhbENvbG9yID0gWzEs
IDIsIDMsIDRdOwordmFyIGV4cGVjdGVkQ29sb3IgPSBbWzI0OSwgMTAyLCAwLCAyNTVdLAorICAg
ICAgICAgICAgICAgICAgICAgWzIsIDIwMCwgMTAyLCAyNTVdLAorICAgICAgICAgICAgICAgICAg
ICAgWzEzNCwgODcsIDIzNCwgMjU1XSwKKyAgICAgICAgICAgICAgICAgICAgIFs5OSwgNSwgNzYs
IDI1NV1dOworCitmdW5jdGlvbiBjYWxjdWxhdGVQYWRkaW5nQnl0ZXMoYnl0ZXNQZXJQaXhlbCwg
cGFja0FsaWdubWVudCwgd2lkdGgpCit7CisgICAgdmFyIHBhZGRpbmcgPSAwOworICAgIHN3aXRj
aCAocGFja0FsaWdubWVudCkgeworICAgIGNhc2UgMToKKyAgICBjYXNlIDI6CisgICAgY2FzZSA0
OgorICAgIGNhc2UgODoKKyAgICAgICAgcGFkZGluZyA9IChieXRlc1BlclBpeGVsICogd2lkdGgp
ICUgcGFja0FsaWdubWVudDsKKyAgICAgICAgaWYgKHBhZGRpbmcgPiAwKQorICAgICAgICAgICAg
cGFkZGluZyA9IHBhY2tBbGlnbm1lbnQgLSBwYWRkaW5nOworICAgICAgICByZXR1cm4gcGFkZGlu
ZzsKKyAgICBkZWZhdWx0OgorICAgICAgICB0ZXN0RmFpbGVkKCJzaG91bGQgbm90IHJlYWNoIGhl
cmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gcGFpbnRXZWJHTENh
bnZhcyhnbCkKK3sKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7
CisgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBnbC5kaXNhYmxlKGdsLkJMRU5E
KTsKKworICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoNCAqIDQpOworICAgIGZvciAodmFy
IGlpID0gMDsgaWkgPCA0OyArK2lpKSB7CisgICAgICAgIGRhdGFbaWkgKiA0XSA9IGV4cGVjdGVk
Q29sb3JbaWldWzBdOworICAgICAgICBkYXRhW2lpICogNCArIDFdID0gZXhwZWN0ZWRDb2xvcltp
aV1bMV07CisgICAgICAgIGRhdGFbaWkgKiA0ICsgMl0gPSBleHBlY3RlZENvbG9yW2lpXVsyXTsK
KyAgICAgICAgZGF0YVtpaSAqIDQgKyAzXSA9IGV4cGVjdGVkQ29sb3JbaWldWzNdOworICAgIH0K
KworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDEsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGRhdGEpOworCisg
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIs
IGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKworICAgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InRleCIpOworICAgIGdsLnVuaWZvcm0xaShsb2MsIDApOworCisgICAgd3R1LmNsZWFyQW5kRHJh
d1VuaXRRdWFkKGdsKTsKK30KKworZnVuY3Rpb24gc2FtZVBpeGVsKGFycmF5LCBpbmRleCwgcmVm
UGl4ZWwsIHJvdywgcGl4ZWxUYWcpCit7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHJlZlBp
eGVsLmxlbmd0aDsgKytpaSkgeworICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSByZWZQaXhlbFtp
aV1bMF0gJiYKKyAgICAgICAgICBhcnJheVtpbmRleCArIDFdID09IHJlZlBpeGVsW2lpXVsxXSAm
JgorICAgICAgICAgIGFycmF5W2luZGV4ICsgMl0gPT0gcmVmUGl4ZWxbaWldWzJdICYmCisgICAg
ICAgICAgYXJyYXlbaW5kZXggKyAzXSA9PSByZWZQaXhlbFtpaV1bM10pIHsKKyAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgdmFyIHJlZlBpeGVsVGV4dCA9ICIiOwor
ICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCByZWZQaXhlbC5sZW5ndGg7ICsraWkpIHsKKyAgICAg
ICAgaWYgKGlpID4gMCkKKyAgICAgICAgICAgIHJlZlBpeGVsVGV4dCArPSAiIG9yICI7CisgICAg
ICAgIHJlZlBpeGVsVGV4dCArPSAiWyIgKyByZWZQaXhlbFtpaV0gKyAiXSI7CisgICAgfQorICAg
IHRlc3RGYWlsZWQocGl4ZWxUYWcgKyAiIHBpeGVsIG9mIHJvdyAiICsgcm93ICsgIjogZXhwZWN0
ZWQgIiArIHJlZlBpeGVsVGV4dCArICIsIGdvdCBbIiArCisgICAgICAgIFthcnJheVtpbmRleF0s
IGFycmF5W2luZGV4ICsgMV0sIGFycmF5W2luZGV4ICsgMl0sIGFycmF5W2luZGV4ICsgM11dICsg
Il0iKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RJdGVyYXRpb24o
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgcGFja1BhcmFtcywgdXNlUGl4ZWxQYWNr
QnVmZmVyLCBwYWNrUGFyYW1zVmFsaWQpCit7CisgICAgaWYgKCEoImFsaWdubWVudCIgaW4gcGFj
a1BhcmFtcykpCisgICAgICAgIHBhY2tQYXJhbXMuYWxpZ25tZW50ID0gNDsKKyAgICBpZiAoISgi
cm93TGVuZ3RoIiBpbiBwYWNrUGFyYW1zKSkKKyAgICAgICAgcGFja1BhcmFtcy5yb3dMZW5ndGgg
PSAwOworICAgIGlmICghKCJza2lwUGl4ZWxzIiBpbiBwYWNrUGFyYW1zKSkKKyAgICAgICAgcGFj
a1BhcmFtcy5za2lwUGl4ZWxzID0gMDsKKyAgICBpZiAoISgic2tpcFJvd3MiIGluIHBhY2tQYXJh
bXMpKQorICAgICAgICBwYWNrUGFyYW1zLnNraXBSb3dzID0gMDsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyB4b2Zmc2V0ID0gIiArIHhvZmZzZXQgKyAiLCB5b2Zmc2V0ICIgKyB5b2Zmc2V0ICsKKyAgICAg
ICAgICAiLCB3aWR0aCA9ICIgKyB3aWR0aCArICIsIGhlaWdodCA9ICIgKyBoZWlnaHQgKworICAg
ICAgICAgICIsIFBBQ0tfQUxJR05NRU5UID0gIiArIHBhY2tQYXJhbXMuYWxpZ25tZW50ICsgIiwg
UEFDS19ST1dfTEVOR1RIID0gIiArIHBhY2tQYXJhbXMucm93TGVuZ3RoICsKKyAgICAgICAgICAi
LCBQQUNLX1NLSVBfUElYRUxTID0gIiArIHBhY2tQYXJhbXMuc2tpcFBpeGVscyArICIgLCBQQUNL
X1NLSVBfUk9XUyA9ICIgKyBwYWNrUGFyYW1zLnNraXBSb3dzKTsKKyAgICBnbC5waXhlbFN0b3Jl
aShnbC5QQUNLX0FMSUdOTUVOVCwgcGFja1BhcmFtcy5hbGlnbm1lbnQpOworICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlBBQ0tfUk9XX0xFTkdUSCwgcGFja1BhcmFtcy5yb3dMZW5ndGgpOworICAgIGds
LnBpeGVsU3RvcmVpKGdsLlBBQ0tfU0tJUF9QSVhFTFMsIHBhY2tQYXJhbXMuc2tpcFBpeGVscyk7
CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19TS0lQX1JPV1MsIHBhY2tQYXJhbXMuc2tpcFJv
d3MpOworCisgICAgdmFyIGFjdHVhbFdpZHRoID0gcGFja1BhcmFtcy5yb3dMZW5ndGggPiAwID8g
cGFja1BhcmFtcy5yb3dMZW5ndGggOiB3aWR0aDsKKworICAgIHZhciBieXRlc1BlclBpeGVsID0g
NDsgLy8gc2VlIHJlYWRQaXhlbHMnIHBhcmFtZXRlcnMgYmVsb3csIHRoZSBmb3JtYXQgaXMgZ2wu
UkdCQSwgdHlwZSBpcyBnbC5VTlNJR05FRF9CWVRFCisgICAgdmFyIHBhZGRpbmcgPSBjYWxjdWxh
dGVQYWRkaW5nQnl0ZXMoYnl0ZXNQZXJQaXhlbCwgcGFja1BhcmFtcy5hbGlnbm1lbnQsIGFjdHVh
bFdpZHRoKTsKKyAgICB2YXIgYnl0ZXNQZXJSb3cgPSBhY3R1YWxXaWR0aCAqIGJ5dGVzUGVyUGl4
ZWwgKyBwYWRkaW5nOworCisgICAgdmFyIHNpemUgPSBieXRlc1BlclJvdyAqIChoZWlnaHQgLSAx
KSArIGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aDsKKyAgICB2YXIgc2tpcFNpemUgPSBwYWNrUGFyYW1z
LnNraXBQaXhlbHMgKiBieXRlc1BlclBpeGVsICsgcGFja1BhcmFtcy5za2lwUm93cyAqIGJ5dGVz
UGVyUm93OworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KHNraXBTaXplICsgc2l6ZSk7
CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNraXBTaXplICsgc2l6ZTsgKytpaSkgeworICAg
ICAgICBhcnJheVtpaV0gPSBpbml0aWFsQ29sb3JbaWkgJSBieXRlc1BlclBpeGVsXTsKKyAgICB9
CisgICAgdmFyIGFycmF5V3JvbmdTaXplID0gbnVsbDsKKyAgICBpZiAoc2l6ZSA+IDApCisgICAg
ICAgIGFycmF5V3JvbmdTaXplID0gbmV3IFVpbnQ4QXJyYXkoc2tpcFNpemUgKyBzaXplIC0gMSk7
CisgICAgaWYgKHVzZVBpeGVsUGFja0J1ZmZlcikgeworICAgICAgICB2YXIgb2Zmc2V0ID0gMDsK
KworICAgICAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJp
bmRCdWZmZXIoZ2wuUElYRUxfUEFDS19CVUZGRVIsIGJ1ZmZlcik7CisgICAgICAgIGlmIChzaXpl
ID4gMCkgeworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9QQUNLX0JVRkZFUiwg
YXJyYXlXcm9uZ1NpemUsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgICAgIGdsLnJlYWRQaXhl
bHMoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiYnVmZmVyIHRvbyBzbWFsbCIpOworICAgICAgICB9CisgICAgICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfUEFDS19CVUZGRVIsIGFycmF5LCBnbC5TVEFUSUNfRFJB
Vyk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgb2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXlX
cm9uZ1NpemUpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJidWZmZXIgdG9vIHNtYWxsIik7CisgICAgICAgIH0KKyAgICAgICAgZ2wu
cmVhZFBpeGVscyh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBhcnJheSk7CisgICAgfQorICAgIGlmIChwYWNrUGFyYW1zVmFsaWQpIHsK
KyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZWFkUGl4ZWxz
IHNob3VsZCBzdWNjZWVkIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIHBhY2sgcGFyYW1zIGNvbWJp
bmF0aW9uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSAwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAodXNlUGl4ZWxQYWNrQnVmZmVyKSB7CisgICAgICAg
IGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2tpcFNpemUgKyBzaXplKTsKKyAgICAgICAgZ2wuZ2V0
QnVmZmVyU3ViRGF0YShnbC5QSVhFTF9QQUNLX0JVRkZFUiwgMCwgYXJyYXkpOworICAgIH0KKwor
ICAgIC8vIENoZWNrIHNraXBwZWQgYnl0ZXMgYXJlIHVuY2hhbmdlZC4KKyAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgc2tpcFNpemU7ICsraWkpIHsKKyAgICAgICAgaWYgKGFycmF5W2lpXSAhPSBp
bml0aWFsQ29sb3JbaWkgJSBieXRlc1BlclBpeGVsXSkgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgic2tpcHBlZCBieXRlcyBjaGFuZ2VkIGF0IGluZGV4ICIgKyBpaSArICI6IGV4cGVjdGVkICIg
KworICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ29sb3JbaWkgJSBieXRlc1BlclBpeGVs
XSArICIgZ290ICIgKyBhcnJheVtpaV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisgICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGFuZCBsYXN0IHBpeGVscyBvZiBlYWNoIHJv
dy4KKyAgICB2YXIgY2FudmFzV2lkdGggPSA0OworICAgIHZhciBjYW52YXNIZWlnaHQgPSA0Owor
ICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgKytyb3cpIHsKKyAgICAgICAgdmFy
IHJlZkNvbG9yOworICAgICAgICB2YXIgeUluZGV4ID0geW9mZnNldCArIHJvdzsKKyAgICAgICAg
dmFyIHhJbmRleDsKKworICAgICAgICAvLyBGaXJzdCBwaXhlbAorICAgICAgICB2YXIgcG9zID0g
c2tpcFNpemUgKyBieXRlc1BlclJvdyAqIHJvdzsKKyAgICAgICAgeEluZGV4ID0geG9mZnNldDsK
KyAgICAgICAgaWYgKHhJbmRleCA8IDAgfHwgeEluZGV4ID49IGNhbnZhc1dpZHRoIHx8IHlJbmRl
eCA8IDAgfHwgeUluZGV4ID49IGNhbnZhc0hlaWdodCkgeworICAgICAgICAgICAgaWYgKHJvdyA+
IDAgJiYgdXNlUGl4ZWxQYWNrQnVmZmVyICYmIHBhY2tQYXJhbXMucm93TGVuZ3RoID4gMCAmJiBw
YWNrUGFyYW1zLnJvd0xlbmd0aCA8IHdpZHRoKQorICAgICAgICAgICAgICAgIHJlZkNvbG9yID0g
W2luaXRpYWxDb2xvciwgZXhwZWN0ZWRDb2xvclt5SW5kZXggLSAxXV07CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmVmQ29sb3IgPSBbaW5pdGlhbENvbG9yXTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHJlZkNvbG9yID0gW2V4cGVjdGVkQ29sb3JbeUluZGV4XV07
CisgICAgICAgIH0KKyAgICAgICAgc2FtZVBpeGVsKGFycmF5LCBwb3MsIHJlZkNvbG9yLCByb3cs
ICJmaXJzdCIpOworCisgICAgICAgIC8vIExhc3QgcGl4ZWwKKyAgICAgICAgdmFyIHhTcGFuOwor
ICAgICAgICBpZiAocm93ICsgMSA9PSBoZWlnaHQgfHwgcGFja1BhcmFtcy5yb3dMZW5ndGggPiB3
aWR0aCkKKyAgICAgICAgICAgIHhTcGFuID0gd2lkdGg7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHhTcGFuID0gYWN0dWFsV2lkdGg7CisgICAgICAgIHhJbmRleCA9IHhvZmZzZXQgKyB4U3Bh
biAtIDE7CisgICAgICAgIHBvcyArPSAoeFNwYW4gLSAxKSAqIGJ5dGVzUGVyUGl4ZWw7CisgICAg
ICAgIGlmICh4SW5kZXggPCAwIHx8IHhJbmRleCA+PSBjYW52YXNXaWR0aCB8fCB5SW5kZXggPCAw
IHx8IHlJbmRleCA+PSBjYW52YXNIZWlnaHQpIHsKKyAgICAgICAgICAgIGlmIChyb3cgPiAwICYm
IHVzZVBpeGVsUGFja0J1ZmZlciAmJiBwYWNrUGFyYW1zLnJvd0xlbmd0aCA+IDAgJiYgcGFja1Bh
cmFtcy5yb3dMZW5ndGggPCB3aWR0aCkKKyAgICAgICAgICAgICAgICByZWZDb2xvciA9IFtpbml0
aWFsQ29sb3IsIGV4cGVjdGVkQ29sb3JbeUluZGV4IC0gMV1dOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJlZkNvbG9yID0gW2luaXRpYWxDb2xvcl07CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZWZDb2xvciA9IFtleHBlY3RlZENvbG9yW3lJbmRleF1dOworICAg
ICAgICB9CisgICAgICAgIHNhbWVQaXhlbChhcnJheSwgcG9zLCByZWZDb2xvciwgcm93LCAibGFz
dCIpOworCisgICAgICAgIC8vIENoZWNrIHBhZGRpbmcgYnl0ZXMgYXJlIHVuY2hhbmdlZCBhbmQg
Ynl0ZXMgYmV5b25kIHJvd0xlbmd0aCBzZXQgY29ycmVjdGx5LgorICAgICAgICBwb3MgKz0gYnl0
ZXNQZXJQaXhlbDsKKyAgICAgICAgaWYgKHJvdyArIDEgPCBoZWlnaHQpIHsKKyAgICAgICAgICAg
IC8vIEJleW9uZCBieXRlcyBmaWxsZWQgZm9yIFBBQ0tfUk9XX0xFTkdUSCwgdGhlIHJvdyBjb3Vs
ZCBoYXZlIGV4dHJhIGJ5dGVzIGR1ZSB0bworICAgICAgICAgICAgLy8gcGFkZGluZy4gVGhlc2Ug
ZXh0cmEgYnl0ZXMgY291bGQgYmUgZWl0aGVyIGZpbGxlZCB3aXRoIHBpeGVsIGRhdGEgaWYKKyAg
ICAgICAgICAgIC8vIFBBQ0tfUk9XX0xFTkdUSCBpcyBzZXQgdG8gYmUgbGVzcyB0aGFuIHdpZHRo
LCBvciB0aGV5IGNvdWxkIGJlIGxlZnQgdW5jaGFuZ2VkCisgICAgICAgICAgICAvLyBpZiB0aGV5
IGFyZSBiZXlvbmQgfHdpZHRofCBwaXhlbHMuCisgICAgICAgICAgICBpZiAocGFja1BhcmFtcy5y
b3dMZW5ndGggPiAwICYmIHBhY2tQYXJhbXMucm93TGVuZ3RoIDwgd2lkdGgpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgdHJhaWxpbmdCeXRlcyA9IE1hdGgubWluKCh3aWR0aCAtIHBhY2tQYXJhbXMu
cm93TGVuZ3RoKSAqIGJ5dGVzUGVyUGl4ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBieXRlc1BlclJvdyAtIHBhY2tQYXJhbXMucm93TGVuZ3RoICogYnl0
ZXNQZXJQaXhlbCk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRyYWls
aW5nQnl0ZXM7ICsraWkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5W3BvcyArIGlp
XSAhPSByZWZDb2xvclswXVtpaSAlIGJ5dGVzUGVyUGl4ZWxdKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJUcmFpbGluZyBieXRlICIgKyBpaSArICIgYWZ0ZXIgcm93TGVu
Z3RoIG9mIHJvdyAiICsgcm93ICsgIiA6IGV4cGVjdGVkICIgKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWZDb2xvclswXVtpaSAlIGJ5dGVzUGVyUGl4ZWxdICsgIiwgZ290
ICIgKyBhcnJheVtwb3MgKyBpaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cG9zICs9IHRyYWlsaW5nQnl0ZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgcGFk
ZGluZ0J5dGVzID0gc2tpcFNpemUgKyBieXRlc1BlclJvdyAqIChyb3cgKyAxKSAtIHBvczsKKyAg
ICAgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBwYWRkaW5nQnl0ZXM7ICsraWkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXJyYXlbcG9zICsgaWldICE9IGluaXRpYWxDb2xvcltpaSAlIGJ5
dGVzUGVyUGl4ZWxdKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBhZGRpbmcg
Ynl0ZSAiICsgaWkgKyAiIG9mIHJvdyAiICsgcm93ICsgIiBjaGFuZ2VkOiBleHBlY3RlZCAiICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ29sb3JbaWkgJSBieXRlc1Bl
clBpeGVsXSArICIsIGdvdCAiICsgYXJyYXlbcG9zICsgaWldKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0UGFja1BhcmFtZXRlcnModXNlUGl4ZWxQYWNrQnVmZmVy
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgZGVzdFRleHQgPSB1c2VQaXhlbFBhY2tCdWZm
ZXIgPyAiUElYRUxfUEFDSyBidWZmZXIiIDogImFycmF5IGJ1ZmZlciI7CisgICAgZGVidWcoIlZl
cmlmeSB0aGF0IHJlYWRpbmcgcGl4ZWxzIHRvICIgKyBkZXN0VGV4dCArICIgd29ya3MgZmluZSB3
aXRoIHZhcmlvdXMgcGFjayBhbGlnbm1lbnRzLiIpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwg
MCwgMSwgMywge2FsaWdubWVudDoxfSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBy
dW5UZXN0SXRlcmF0aW9uKDAsIDAsIDEsIDMsIHthbGlnbm1lbnQ6Mn0sIHVzZVBpeGVsUGFja0J1
ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAxLCAzLCB7YWxpZ25tZW50
OjR9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwg
MCwgMSwgMywge2FsaWdubWVudDo4fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBy
dW5UZXN0SXRlcmF0aW9uKDAsIDAsIDIsIDMsIHthbGlnbm1lbnQ6NH0sIHVzZVBpeGVsUGFja0J1
ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAyLCAzLCB7YWxpZ25tZW50
Ojh9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwg
MCwgMywgMywge2FsaWdubWVudDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBy
dW5UZXN0SXRlcmF0aW9uKDAsIDAsIDMsIDMsIHthbGlnbm1lbnQ6OH0sIHVzZVBpeGVsUGFja0J1
ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAwLCAwLCB7YWxpZ25tZW50
OjF9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwg
MCwgMSwgMywge2FsaWdubWVudDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBy
dW5UZXN0SXRlcmF0aW9uKDAsIDAsIDEsIDMsIHthbGlnbm1lbnQ6OH0sIHVzZVBpeGVsUGFja0J1
ZmZlciwgdHJ1ZSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IHJl
YWRpbmcgcGl4ZWxzIHRvICIgKyBkZXN0VGV4dCArICIgaXMgZGlzYWxsb3dlZCB3aGVuIFBBQ0tf
Uk9XX0xFTkdUSCA8IHdpZHRoLiIpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwgMCwgMywgMywg
e2FsaWdubWVudDo4LCByb3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOwor
ICAgIHJ1blRlc3RJdGVyYXRpb24oLTEsIDAsIDMsIDMsIHthbGlnbm1lbnQ6OCwgcm93TGVuZ3Ro
OjJ9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIGZhbHNlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAs
IC0xLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDoyfSwgdXNlUGl4ZWxQYWNrQnVmZmVy
LCBmYWxzZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigtMSwgLTEsIDMsIDMsIHthbGlnbm1lbnQ6
OCwgcm93TGVuZ3RoOjJ9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIGZhbHNlKTsKKyAgICBydW5UZXN0
SXRlcmF0aW9uKC01LCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDoyfSwgdXNlUGl4
ZWxQYWNrQnVmZmVyLCBmYWxzZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAtNSwgMywgMywg
e2FsaWdubWVudDo4LCByb3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOwor
ICAgIHJ1blRlc3RJdGVyYXRpb24oMiwgMCwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6
Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwg
MiwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwg
ZmFsc2UpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMiwgMiwgMywgMywge2FsaWdubWVudDo4LCBy
b3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworICAgIHJ1blRlc3RJdGVy
YXRpb24oNSwgMCwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFj
a0J1ZmZlciwgZmFsc2UpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMCwgNSwgMywgMywge2FsaWdu
bWVudDo4LCByb3dMZW5ndGg6Mn0sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworICAgIHJ1
blRlc3RJdGVyYXRpb24oMCwgMCwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6MX0sIHVz
ZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJW
ZXJpZnkgdGhhdCByZWFkaW5nIHBpeGVscyB0byAiICsgZGVzdFRleHQgKyAiIHdvcmtzIGZpbmUg
d2l0aCBQQUNLX1JPV19MRU5HVEggPT0gd2lkdGguIik7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigw
LCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDozfSwgdXNlUGl4ZWxQYWNrQnVmZmVy
LCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKC0xLCAwLCAzLCAzLCB7YWxpZ25tZW50Ojgs
IHJvd0xlbmd0aDozfSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRl
cmF0aW9uKDAsIC0xLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDozfSwgdXNlUGl4ZWxQ
YWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKC0xLCAtMSwgMywgMywge2Fs
aWdubWVudDo4LCByb3dMZW5ndGg6M30sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAg
cnVuVGVzdEl0ZXJhdGlvbigtNSwgMCwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6M30s
IHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAtNSwg
MywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6M30sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1
ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigyLCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xl
bmd0aDozfSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9u
KDAsIDIsIDMsIDMsIHthbGlnbm1lbnQ6OCwgcm93TGVuZ3RoOjN9LCB1c2VQaXhlbFBhY2tCdWZm
ZXIsIHRydWUpOworICAgIHJ1blRlc3RJdGVyYXRpb24oMiwgMiwgMywgMywge2FsaWdubWVudDo4
LCByb3dMZW5ndGg6M30sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0
ZXJhdGlvbig1LCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDozfSwgdXNlUGl4ZWxQ
YWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDUsIDMsIDMsIHthbGln
bm1lbnQ6OCwgcm93TGVuZ3RoOjN9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnkgdGhhdCByZWFkaW5nIHBpeGVscyB0byAiICsg
ZGVzdFRleHQgKyAiIHdvcmtzIGZpbmUgd2l0aCBQQUNLX1JPV19MRU5HVEggPiB3aWR0aCBhbmQg
d2l0aCBubyBwYWRkaW5nIik7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAzLCAzLCB7YWxp
Z25tZW50OjgsIHJvd0xlbmd0aDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBy
dW5UZXN0SXRlcmF0aW9uKC0xLCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo0fSwg
dXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIC0xLCAz
LCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVl
KTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKC0xLCAtMSwgMywgMywge2FsaWdubWVudDo4LCByb3dM
ZW5ndGg6NH0sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlv
bigtNSwgMCwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6NH0sIHVzZVBpeGVsUGFja0J1
ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAtNSwgMywgMywge2FsaWdubWVu
dDo4LCByb3dMZW5ndGg6NH0sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVz
dEl0ZXJhdGlvbigyLCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo0fSwgdXNlUGl4
ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDIsIDMsIDMsIHth
bGlnbm1lbnQ6OCwgcm93TGVuZ3RoOjR9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworICAg
IHJ1blRlc3RJdGVyYXRpb24oMiwgMiwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6NH0s
IHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbig1LCAwLCAz
LCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVl
KTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDUsIDMsIDMsIHthbGlnbm1lbnQ6OCwgcm93TGVu
Z3RoOjR9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJWZXJpZnkgdGhhdCByZWFkaW5nIHBpeGVscyB0byAiICsgZGVzdFRleHQgKyAiIHdv
cmtzIGZpbmUgd2l0aCBQQUNLX1JPV19MRU5HVEggPiB3aWR0aCBhbmQgd2l0aCBwYWRkaW5nIik7
CisgICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0
aDo1fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKC0x
LCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo1fSwgdXNlUGl4ZWxQYWNrQnVmZmVy
LCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIC0xLCAzLCAzLCB7YWxpZ25tZW50Ojgs
IHJvd0xlbmd0aDo1fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRl
cmF0aW9uKC0xLCAtMSwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6NX0sIHVzZVBpeGVs
UGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigtNSwgMCwgMywgMywge2Fs
aWdubWVudDo4LCByb3dMZW5ndGg6NX0sIHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAg
cnVuVGVzdEl0ZXJhdGlvbigwLCAtNSwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6NX0s
IHVzZVBpeGVsUGFja0J1ZmZlciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbigyLCAwLCAz
LCAzLCB7YWxpZ25tZW50OjgsIHJvd0xlbmd0aDo1fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVl
KTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDIsIDMsIDMsIHthbGlnbm1lbnQ6OCwgcm93TGVu
Z3RoOjV9LCB1c2VQaXhlbFBhY2tCdWZmZXIsIHRydWUpOworICAgIHJ1blRlc3RJdGVyYXRpb24o
MiwgMiwgMywgMywge2FsaWdubWVudDo4LCByb3dMZW5ndGg6NX0sIHVzZVBpeGVsUGFja0J1ZmZl
ciwgdHJ1ZSk7CisgICAgcnVuVGVzdEl0ZXJhdGlvbig1LCAwLCAzLCAzLCB7YWxpZ25tZW50Ojgs
IHJvd0xlbmd0aDo1fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRl
cmF0aW9uKDAsIDUsIDMsIDMsIHthbGlnbm1lbnQ6OCwgcm93TGVuZ3RoOjV9LCB1c2VQaXhlbFBh
Y2tCdWZmZXIsIHRydWUpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnkgdGhh
dCByZWFkaW5nIHBpeGVscyB0byAiICsgZGVzdFRleHQgKyAiIHdvcmtzIGZpbmUgd2l0aCBwYWNr
IHNraXAgcGFyYW1ldGVycy4iKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDAsIDMsIDMsIHth
bGlnbm1lbnQ6OCwgc2tpcFBpeGVsczoyfSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCBmYWxzZSk7Cisg
ICAgcnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAzLCAzLCB7YWxpZ25tZW50OjgsIHNraXBQaXhlbHM6
MSwgc2tpcFJvd3M6M30sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworICAgIHJ1blRlc3RJ
dGVyYXRpb24oMCwgMCwgMywgMywge2FsaWdubWVudDo4LCBza2lwUm93czozfSwgdXNlUGl4ZWxQ
YWNrQnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDAsIDIsIDMsIHthbGln
bm1lbnQ6OCwgc2tpcFBpeGVsczoyfSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCBmYWxzZSk7CisgICAg
cnVuVGVzdEl0ZXJhdGlvbigwLCAwLCAyLCAzLCB7YWxpZ25tZW50OjgsIHNraXBQaXhlbHM6MSwg
c2tpcFJvd3M6M30sIHVzZVBpeGVsUGFja0J1ZmZlciwgZmFsc2UpOworICAgIHJ1blRlc3RJdGVy
YXRpb24oMCwgMCwgMiwgMywge2FsaWdubWVudDo4LCBza2lwUm93czozfSwgdXNlUGl4ZWxQYWNr
QnVmZmVyLCB0cnVlKTsKKyAgICBydW5UZXN0SXRlcmF0aW9uKDAsIDAsIDIsIDMsIHtza2lwUGl4
ZWxzOjEsIHJvd0xlbmd0aDo0fSwgdXNlUGl4ZWxQYWNrQnVmZmVyLCB0cnVlKTsKK30KKworZGVi
dWcoIiIpOworZGVidWcoIkNhbnZhcy5nZXRDb250ZXh0Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMsIHVuZGVmaW5lZCwgMik7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4
dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlc2NyaXB0aW9uKCdSZWFkUGl4ZWxzIGlu
dG8gYXJyYXkgYnVmZmVyJyk7CisgIHBhaW50V2ViR0xDYW52YXMoZ2wpOworICB2YXIgdXNlUGl4
ZWxQYWNrQnVmZmVyID0gZmFsc2U7CisgIHRlc3RQYWNrUGFyYW1ldGVycyh1c2VQaXhlbFBhY2tC
dWZmZXIpOworICB1c2VQaXhlbFBhY2tCdWZmZXIgPSB0cnVlOworICB0ZXN0UGFja1BhcmFtZXRl
cnModXNlUGl4ZWxQYWNrQnVmZmVyKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRl
cmJ1ZmZlcnMvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJidWZm
ZXJzL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZlYzZm
NDc2YTViNTE1NTM5ZWYxMDNjYzk1Yjk0OTc4ZTEzNTk0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9y
ZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwKQEAgLTAsMCAr
MSw0NDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsOworCitmdW5jdGlvbiBjaGVja0ZyYW1lYnVmZmVyKGV4cGVjdGVk
KSB7CisgICAgdmFyIGFjdHVhbCA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpOworICAgIGlmIChleHBlY3RlZC5pbmRleE9mKGFjdHVhbCkgPCAwKSB7CisgICAgICAg
IHZhciBtc2cgPSAiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBleHBlY3RzIFsiOworICAgICAgICBm
b3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZXhwZWN0ZWQubGVuZ3RoOyArK2luZGV4KSB7Cisg
ICAgICAgICAgICBtc2cgKz0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBleHBlY3RlZFtpbmRleF0p
OworICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA8IGV4cGVjdGVkLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBtc2cgKz0gIiwgIjsKKyAgICAgICAgfQorICAgICAgICBtc2cgKz0gIl0sIHdhcyAi
ICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBhY3R1YWwpOworICAgICAgICB0ZXN0RmFpbGVkKG1z
Zyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIG1zZyA9ICJjaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzIGdvdCAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBhY3R1YWwpICsKKyAgICAgICAgICAg
ICAgICAgICIgYXMgZXhwZWN0ZWQiOworICAgICAgICB0ZXN0UGFzc2VkKG1zZyk7CisgICAgfQor
fQorCitmdW5jdGlvbiBjaGVja0J1ZmZlckJpdHMoYXR0YWNobWVudDAsIGF0dGFjaG1lbnQxKSB7
CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICByZXR1cm47CisgICAgdmFyIGhhdmVEZXB0
aEJ1ZmZlciA9IGF0dGFjaG1lbnQwID09IGdsLkRFUFRIX0FUVEFDSE1FTlQgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudDAgPT0gZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQxID09IGdsLkRFUFRI
X0FUVEFDSE1FTlQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudDEgPT0g
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOworICAgIHZhciBoYXZlU3RlbmNpbEJ1ZmZlciA9
IGF0dGFjaG1lbnQwID09IGdsLlNURU5DSUxfQVRUQUNITUVOVCB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnQwID09IGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQxID09IGdsLlNURU5DSUxf
QVRUQUNITUVOVCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQxID09
IGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDsKKyAgICBzaG91bGRCZVRydWUoImdsLmdldFBh
cmFtZXRlcihnbC5SRURfQklUUykgKyBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgKyAi
ICsKKyAgICAgICAgICAgICAgICAgImdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpICsgZ2wu
Z2V0UGFyYW1ldGVyKGdsLkFMUEhBX0JJVFMpID49IDE2Iik7CisgICAgaWYgKGhhdmVEZXB0aEJ1
ZmZlcikKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklU
UykgPj0gMTYiKTsKKyAgICBlbHNlCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1l
dGVyKGdsLkRFUFRIX0JJVFMpID09IDAiKTsKKyAgICBpZiAoaGF2ZVN0ZW5jaWxCdWZmZXIpCisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykgPj0g
OCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wu
U1RFTkNJTF9CSVRTKSA9PSAwIik7Cit9CisKKworZnVuY3Rpb24gdGVzdEZyYW1lYnVmZmVyV2Vi
R0wxUmVxdWlyZWRDb21iaW5hdGlvbnMoKSB7CisgICAgZGVidWcoIkNoZWNraW5nIGNvbWJpbmF0
aW9ucyBvZiBmcmFtZWJ1ZmZlciBhdHRhY2htZW50cyByZXF1aXJlZCB0byBiZSB2YWxpZCBieSBX
ZWJHTCAxIik7CisKKyAgICAvLyBQZXIgZGlzY3Vzc2lvbiB3aXRoIHRoZSBPcGVuR0wgRVMgd29y
a2luZyBncm91cCwgdGhlIGZvbGxvd2luZyBmcmFtZWJ1ZmZlciBhdHRhY2htZW50CisgICAgLy8g
Y29tYmluYXRpb25zIGFyZSByZXF1aXJlZCB0byB3b3JrIGluIGFsbCBXZWJHTCAxIGltcGxlbWVu
dGF0aW9uczoKKyAgICAvLyAxLiBDT0xPUl9BVFRBQ0hNRU5UMCA9IFJHQkEvVU5TSUdORURfQllU
RSB0ZXh0dXJlCisgICAgLy8gMi4gQ09MT1JfQVRUQUNITUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZ
VEUgdGV4dHVyZSArIERFUFRIX0FUVEFDSE1FTlQgPSBERVBUSF9DT01QT05FTlQxNiByZW5kZXJi
dWZmZXIKKyAgICAvLyAzLiBDT0xPUl9BVFRBQ0hNRU5UMCA9IFJHQkEvVU5TSUdORURfQllURSB0
ZXh0dXJlICsgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UID0gREVQVEhfU1RFTkNJTCByZW5kZXJi
dWZmZXIKKworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworICAgIHZhciB3aWR0aCA9IDY0
OworICAgIHZhciBoZWlnaHQgPSA2NDsKKworICAgIC8vIDEuIENPTE9SX0FUVEFDSE1FTlQwID0g
UkdCQS9VTlNJR05FRF9CWVRFIHRleHR1cmUKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
Z2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RP
X0VER0UpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lk
dGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5G
UkFNRUJVRkZFUl9DT01QTEVURV0pOworICAgIGNoZWNrQnVmZmVyQml0cygpOworCisgICAgLy8g
Mi4gQ09MT1JfQVRUQUNITUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZVEUgdGV4dHVyZSArIERFUFRI
X0FUVEFDSE1FTlQgPSBERVBUSF9DT01QT05FTlQxNiByZW5kZXJidWZmZXIKKyAgICB2YXIgcmVu
ZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
REVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgIGNo
ZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisgICAgY2hlY2tCdWZm
ZXJCaXRzKGdsLkRFUFRIX0FUVEFDSE1FTlQpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIs
IG51bGwpOworCisgICAgLy8gMy4gQ09MT1JfQVRUQUNITUVOVDAgPSBSR0JBL1VOU0lHTkVEX0JZ
VEUgdGV4dHVyZSArIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCA9IERFUFRIX1NURU5DSUwgcmVu
ZGVyYnVmZmVyCisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGds
LkRFUFRIX1NURU5DSUwsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFN
RUJVRkZFUl9DT01QTEVURV0pOworICAgIGNoZWNrQnVmZmVyQml0cyhnbC5ERVBUSF9TVEVOQ0lM
X0FUVEFDSE1FTlQpOworCisgICAgLy8gQ2xlYW4gdXAKKyAgICBnbC5kZWxldGVSZW5kZXJidWZm
ZXIocmVuZGVyYnVmZmVyKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgIGds
LmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZXB0aFN0ZW5jaWxB
dHRhY2htZW50QmVoYXZpb3JzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2hlY2tp
bmcgRVMzIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCBiZWhhdmlvcnMgYXJlIGltcGxlbWVudGVk
IGZvciBXZWJHTCAyIik7CisgICAgLy8gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGlzIHRyZWF0
ZWQgYXMgYW4gaW5kZXBlbmRlbnQgYXR0YWNobWVudCBwb2ludCBpbiBXZWJHTCAxOworICAgIC8v
IGhvd2V2ZXIsIGluIFdlYkdMIDIsIGl0IGlzIHRyZWF0ZWQgYXMgYW4gYWxpYXMgZm9yIERFUFRI
X0FUVEFDSE1FTlQgKyBTVEVOQ0lMX0FUVEFDSE1FTlQuCisgICAgdmFyIHNpemUgPSAxNjsKKwor
ICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgY29sb3JCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAg
ICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwg
Y29sb3JCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVS
LCBnbC5SR0JBOCwgc2l6ZSwgc2l6ZSk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVC
VUZGRVJfQ09NUExFVEVdKTsKKworICAgIHZhciBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0
aEJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGds
LkRFUFRIX0NPTVBPTkVOVDE2LCBzaXplLCBzaXplKTsKKworICAgIHZhciBzdGVuY2lsQnVmZmVy
ID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Z2wuUkVOREVSQlVGRkVSLCBnbC5TVEVOQ0lMX0lOREVYOCwgc2l6ZSwgc2l6ZSk7CisKKyAgICB2
YXIgZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbEJ1ZmZlcik7Cisg
ICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX1NURU5D
SUwsIHNpemUsIHNpemUpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworCisgICAgZGVidWcoImNvbG9yICsgZGVwdGgiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQs
IGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGNoZWNrRnJhbWVidWZmZXIoW2ds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisgICAgY2hlY2tCdWZmZXJCaXRzKGdsLkRFUFRIX0FU
VEFDSE1FTlQpOworCisgICAgZGVidWcoImNvbG9yICsgZGVwdGggKyBzdGVuY2lsOiBkZXB0aCAh
PSBzdGVuY2lsIik7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGds
LkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgc3Rl
bmNpbEJ1ZmZlcik7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJfVU5TVVBQ
T1JURURdKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJB
TUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsK
KworICAgIGRlYnVnKCJjb2xvciArIGRlcHRoOiBERVBUSF9TVEVOQ0lMIGZvciBERVBUSF9BVFRB
Q0hNRU5UIik7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGdsLkZS
QU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEVdKTsKKyAgICBjaGVja0J1ZmZlckJpdHMoZ2wuREVQVEhfQVRUQUNITUVOVCk7CisKKyAgICBk
ZWJ1ZygiY29sb3IgKyBkZXB0aCArIHN0ZW5jaWw6IERFUFRIX1NURU5DSUwgZm9yIERFUFRIX0FU
VEFDSE1FTlQgYW5kIFNURU5DSUxfQVRUQUNITUVOVCIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5U
LCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgY2hlY2tGcmFtZWJ1
ZmZlcihbZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBjaGVja0J1ZmZlckJpdHMoZ2wu
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKworICAgIGRlYnVnKCJjb2xvciArIGRlcHRoX3N0
ZW5jaWwiKTsKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIHNpemUsIHNpemUsIDAsIGdsLkRF
UFRIX1NURU5DSUwsIGdsLlVOU0lHTkVEX0lOVF8yNF84LCBudWxsKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5G
UkFNRUJVRkZFUl9DT01QTEVURV0pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQsIG51
bGwsIDApOworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGdsLkZS
QU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwg
ZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURV0pOworICAgIGNoZWNrQnVmZmVyQml0cyhnbC5ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQpOworCisgICAgZGVidWcoIkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCBvdmVyd3JpdGVz
IERFUFRIX0FUVEFDSE1FTlQvU1RFTkNJTF9BVFRBQ0hNRU5UIikKKyAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcigKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1F
TlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgZ2wuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgY2hlY2tGcmFt
ZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBjaGVja0J1ZmZlckJpdHMo
KTsKKworICAgIGRlYnVnKCJTVEVOQ0lMX0FUVEFDSE1FTlQgb3ZlcndyaXRlcyBzdGVuY2lsIHNl
dCBieSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKQorICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FU
VEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihb
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBjaGVja0J1ZmZlckJpdHMoZ2wuREVQVEhf
QVRUQUNITUVOVCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGcmFtZWJ1ZmZlckluY29tcGxldGVBdHRh
Y2htZW50KCkgeworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICB2YXIgY29sb3JCdWZm
ZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJF
TkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYsIDE2KTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtn
bC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJX
cm9uZyBzdG9yYWdlIHR5cGUgZm9yIHR5cGUgb2YgYXR0YWNobWVudCBzaG91bGQgYmUgRlJBTUVC
VUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIik7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFn
ZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAxNiwgMTYpOworICAgIGNo
ZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF0pOwor
CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAx
NiwgMTYpOworICAgIGNoZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIjAgc2l6ZSBhdHRhY2htZW50IHNob3VsZCBi
ZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQiKTsKKyAgICBnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDAsIDApOworICAgIGNoZWNrRnJh
bWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF0pOworCisgICAg
Z2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yQnVmZmVyKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1
ZmZlcihmYm8pOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK30K
KworZnVuY3Rpb24gdGVzdEZyYW1lYnVmZmVySW5jb21wbGV0ZU1pc3NpbmdBdHRhY2htZW50KCkg
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiTm8gYXR0YWNobWVudHMgc2hvdWxkIGJlIElO
Q09NUExFVEVfRlJBTUVCVUZGRVJfTUlTU0lOR19BVFRBQ0hNRU5UIik7CisgICAgdmFyIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYm8pOworICAgIGNoZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXSk7CisKKyAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgY29sb3JCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAg
ICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZF
UiwgY29sb3JCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SR0JBNCwgMTYsIDE2KTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJV
RkZFUl9DT01QTEVURV0pOworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAg
ICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVS
LCBudWxsKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X01JU1NJTkdfQVRUQUNITUVOVF0pOworCisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9y
QnVmZmVyKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK30KKworZnVuY3Rpb24gdGVzdEZyYW1lYnVmZmVy
V2l0aEltYWdlc09mRGlmZmVyZW50U2l6ZXMoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJBdHRhY2htZW50cyBvZiBkaWZmZXJlbnQgc2l6ZXMgc2hvdWxkIE5PVCBiZSBhbGxvd2VkIik7
CisKKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgdmFyIGNvbG9yQnVmZmVyID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAg
ICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZG
RVIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJV
RkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7CisKKyAgICB2YXIgZGVwdGhCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgZGVwdGhCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAg
ICBnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBk
ZXB0aEJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIs
IGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAxNiwgMTYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9D
T01QTEVURV0pOworCisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIs
IGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAzMiwgMTYpOworICAgIGNoZWNrRnJhbWVidWZmZXIoW2ds
LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU10pOworICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAxNiwgMzIpOworICAgIGNoZWNrRnJh
bWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU10pOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIHZhciB0ZXggPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsK
KyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJE
LCB0ZXgsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAg
ICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCAzMiwgMTYsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwp
OworICAgICAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJ
TUVOU0lPTlNdKTsKKyAgICB9CisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgZ2wu
ZGVsZXRlUmVuZGVyYnVmZmVyKGRlcHRoQnVmZmVyKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZm
ZXIoY29sb3JCdWZmZXIpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworfQorCitmdW5jdGlvbiB0ZXN0VXNp
bmdJbmNvbXBsZXRlRnJhbWVidWZmZXIoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0IGRyYXdpbmcgb3IgcmVhZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVidWZmZXIiKTsK
KyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisgICAgdmFyIHRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgMSwg
MSwgWzAsMjU1LDAsMjU1XSk7CisKKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgY2hl
Y2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1F
TlRdKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkRyYXdpbmcgb3IgcmVhZGluZyBmcm9t
IGFuIGluY29tcGxldGUgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OIik7CisgICAgdGVzdFJlbmRlcmluZ0FuZFJlYWRpbmcoKTsKKworICAg
IHZhciBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAwLCAwKTsKKyAgICBjaGVja0Zy
YW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRdKTsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIkRyYXdpbmcgb3IgcmVhZGluZyBmcm9tIGFuIGluY29tcGxl
dGUgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIik7CisgICAgdGVzdFJlbmRlcmluZ0FuZFJlYWRpbmcoKTsKKworICAgIGZ1bmN0aW9uIHRl
c3RSZW5kZXJpbmdBbmRSZWFkaW5nKCkgeworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUik7CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cisg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OLCAiZHJhd0FycmF5cyB3aXRoIGluY29tcGxldGUgZnJhbWVidWZmZXIiKTsKKyAgICAg
ICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBu
ZXcgVWludDhBcnJheSg0KSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAicmVhZFBpeGVscyBmcm9tIGluY29tcGxldGUg
ZnJhbWVidWZmZXIiKTsKKyAgICAgICAgLy8gY29weVRleEltYWdlIGFuZCBjb3B5VGV4U3ViSW1h
Z2UgY2FuIGJlIGVpdGhlciBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiBiZWNhdXNlCisg
ICAgICAgIC8vIHRoZSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkIE9SIElOVkFMSURfT1BFUkFUSU9O
IGJlY2F1c2UgaW4gdGhlIGNhc2Ugb2Ygbm8gYXR0YWNobWVudHMKKyAgICAgICAgLy8gdGhlIGZy
YW1lYnVmZmVyIGlzIG5vdCBvZiBhIGNvbXBhdGlibGUgdHlwZS4KKyAgICAgICAgZ2wuY29weVRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAorICAgICAgICAgICAgImNvcHlUZXhJbWFnZTJEIGZy
b20gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciIpOworICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAwLCAwLCAxLCAxLCAwKTsKKyAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgW2dsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBnbC5J
TlZBTElEX09QRVJBVElPTl0sCisgICAgICAgICAgICAiY29weVRleFN1YkltYWdlMkQgZnJvbSBp
bmNvbXBsZXRlIGZyYW1lYnVmZmVyIik7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJjbGVhciB3aXRoIGluY29t
cGxldGUgZnJhbWVidWZmZXIiKTsKKyAgICB9CisKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIo
Y29sb3JCdWZmZXIpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgZ2wuZGVs
ZXRlVGV4dHVyZSh0ZXgpOworICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RSZWFkaW5nRnJvbU1pc3NpbmdBdHRhY2htZW50KCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdCBkcmF3aW5nIG9yIHJlYWRpbmcgZnJvbSBhIGZyYW1lYnVmZmVy
IHdpdGggbm8gY29sb3IgaW1hZ2UiKTsKKworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAg
ICB2YXIgb2JqZWN0X3R5cGUgPSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
CisgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgaWYgKG9iamVjdF90eXBlICE9IGds
Lk5PTkUpCisgICAgICAgIHRlc3RGYWlsZWQoIm9iamVjdCB0eXBlIGZyb20gZW1wdHkgYXR0YWNo
bWVudCBwb2ludCBzaG91bGQgYmUgTk9ORSIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3Nl
ZCgib2JqZWN0IHR5cGUgZnJvbSBlbXB0eSBhdHRhY2htZW50IHBvaW50IGlzIE5PTkUiKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlF1ZXJ5IHNob3VsZCBub3Qg
Z2VuZXJhdGUgZXJyb3IiKTsKKworICAgIHZhciBvYmplY3RfbmFtZSA9IGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcigKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKTsKKyAg
ICBpZiAob2JqZWN0X25hbWUpCisgICAgICAgIHRlc3RGYWlsZWQoIm9iamVjdCBuYW1lIGZyb20g
ZW1wdHkgYXR0YWNobWVudCBwb2ludCBzaG91bGQgYmUgbnVsbCIpOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdFBhc3NlZCgib2JqZWN0IG5hbWUgZnJvbSBlbXB0eSBhdHRhY2htZW50IHBvaW50IGlz
IG51bGwiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlF1ZXJ5
IHNob3VsZCBub3QgZ2VuZXJhdGUgZXJyb3IiKTsKKworICAgIHZhciBzaXplID0gMTY7CisKKyAg
ICAvLyBUaGUgb25seSBzY2VuYXJpbyB3ZSBjYW4gdmVyaWZ5IGlzIGFuIGF0dGVtcHQgdG8gcmVh
ZCBvciBjb3B5CisgICAgLy8gZnJvbSBhIG1pc3NpbmcgY29sb3IgYXR0YWNobWVudCB3aGlsZSB0
aGUgZnJhbWVidWZmZXIgaXMgc3RpbGwKKyAgICAvLyBjb21wbGV0ZS4KKyAgICB2YXIgZGVwdGhC
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKAorICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
UkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCBzaXplLCBzaXplKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkFmdGVyIGRlcHRoIHJlbmRlcmJ1
ZmZlciBzZXR1cCIpOworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAvLyBUaGUgRkJP
IGhhcyBubyBjb2xvciBhdHRhY2htZW50LiBSZWFkUGl4ZWxzLCBDb3B5VGV4SW1hZ2UyRCwKKyAg
ICAgICAgLy8gYW5kIENvcHlUZXhTdWJJbWFnZTJEIHNob3VsZCBhbGwgZ2VuZXJhdGUgSU5WQUxJ
RF9PUEVSQVRJT04uCisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiQmVmb3JlIFJlYWRQaXhlbHMgZnJvbSBtaXNzaW5nIGF0dGFjaG1lbnQiKTsKKyAgICAgICAg
Z2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBuZXcg
VWludDhBcnJheSg0KSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiQWZ0ZXIgUmVhZFBpeGVscyBmcm9tIG1pc3NpbmcgYXR0YWNobWVudCIp
OworCisgICAgICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiQmVmb3JlIENvcHlUZXhJbWFnZTJEIGZyb20gbWlzc2luZyBh
dHRhY2htZW50Iik7CisgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkEsIDAsIDAsIHNpemUsIHNpemUsIDApOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkFmdGVyIENvcHlUZXhJbWFnZTJEIGZyb20g
bWlzc2luZyBhdHRhY2htZW50Iik7CisKKyAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJC
ZWZvcmUgQ29weVRleFN1YkltYWdlMkQgZnJvbSBtaXNzaW5nIGF0dGFjaG1lbnQiKTsKKyAgICAg
ICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgc2l6
ZSwgc2l6ZSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiQWZ0ZXIgQ29weVRleFN1YkltYWdlMkQgZnJvbSBtaXNzaW5nIGF0dGFjaG1lbnQi
KTsKKworICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgfQorCisgICAgZ2wuZGVs
ZXRlUmVuZGVyYnVmZmVyKGRlcHRoQnVmZmVyKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihm
Ym8pOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVu
dCBiZWhhdmlvcnMiKTsKKworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpIik7CisKK3Rlc3RGcmFtZWJ1ZmZlcldlYkdMMVJl
cXVpcmVkQ29tYmluYXRpb25zKCk7Cit0ZXN0RGVwdGhTdGVuY2lsQXR0YWNobWVudEJlaGF2aW9y
cygpOwordGVzdEZyYW1lYnVmZmVySW5jb21wbGV0ZUF0dGFjaG1lbnQoKTsKK3Rlc3RGcmFtZWJ1
ZmZlckluY29tcGxldGVNaXNzaW5nQXR0YWNobWVudCgpOwordGVzdEZyYW1lYnVmZmVyV2l0aElt
YWdlc09mRGlmZmVyZW50U2l6ZXMoKTsKK3Rlc3RVc2luZ0luY29tcGxldGVGcmFtZWJ1ZmZlcigp
OwordGVzdFJlYWRpbmdGcm9tTWlzc2luZ0F0dGFjaG1lbnQoKTsKKworLy8gLQorCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCBjYWxsaW5nIGZyYW1lYnVmZmVyVGV4dHVyZTJEIHdpdGggaW1wb3Nz
aWJsZSBtaXAgbGV2ZWxzLiIpOworCitjb25zdCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKworY29uc3QgdGV4ID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsK
KworZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDEwMDApOword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgIk1pcCBsZXZlbCBhdHRhY2htZW50IGltcG9zc2libHkgaGln
aC4iKTsKK2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAxMCk7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCAwLCAiTWlwIGxldmVsIGF0dGFjaG1lbnQgd2l0aGluIGFjY2VwdGFibGUgcmFuZ2UuIik7
CisKKy8vIEZpcmVmb3ggYnVnOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjM2NTE3IDoKK2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwgMTAwMCk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCAwLCAiTWlwIGxldmVsIGRldGFjaG1lbnQgY2FuIGJlIGltcG9z
c2libHkgaGlnaC4iKTsKK3Nob3VsZEJlKCJnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSIsICIwIik7CisKKy8vIC0KKworZGVidWcoIiIpCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9yZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLXRlc3QuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJi
dWZmZXJzL2ZyYW1lYnVmZmVyLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWE2YzkxODQ3ZDQ0OGE0
YjQ4ZDJlMWIyZDliMWU4ZGUwNWZhYjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZl
cnMvZnJhbWVidWZmZXItdGVzdC5odG1sCkBAIC0wLDAgKzEsMjg4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZl
ciBUZXN0IEFnYWluc3QgV2ViR0wgMjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7CisKK2Z1bmN0aW9u
IHRlc3RGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1Zygi
Q2hlY2tpbmcgZnJhbWVidWZmZXIvcmVuZGVyYnVmZmVyIHN0dWZmLiIpOworCisgIGdsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigKKyAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwKKyAgICAgICJnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoQ09MT1JfQVRUQUNITUVOVDApIG9uIHRoZSBk
ZWZhdWx0IGZyYW1lYnVmZmVyLiIpOworICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoCisgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLAorICAgICAgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihCQUNLKSBvbiB0
aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4iKTsKKyAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4iKTsKKwor
ICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7
CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGds
LkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhJbWFnZTJEKAorICAgICAgZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImF0dGFjaCBhIHRl
eHR1cmUgdG8gZGVmYXVsdCBmcmFtZWJ1ZmZlci4iKTsKKworICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJV
RkZFUiwgbnVsbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLAorICAgICAgImRldGFjaCBkZWZhdWx0IHJlbmRlcmJ1ZmZlciBmcm9tIGRlZmF1bHQgZnJh
bWVidWZmZXIuIik7CisKKyAgdmFyIHJiID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGds
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYik7CisgIGdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAi
YWxsb2NhdGUgcmVuZGVyYnVmZmVyIHN0b3JhZ2Ugb2YgYSBuZXdseSBjcmVhdGVkIHJlbmRlcmJ1
ZmZlci4iKTsKKworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmIpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImF0dGFjaCBhIHJlbmRlcmJ1ZmZl
ciB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4iKTsKKworICB2YXIgZmJ0ZXggPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGZidGV4KTsKKyAg
Z2wudGV4SW1hZ2UyRCgKKyAgICAgIGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGNhbnZhcy53
aWR0aCwgY2FudmFzLmhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiYmluZCBhIG5ld2x5IGNyZWF0ZWQgZnJhbWVidWZmZXIuIik7CisKKyAgdmFyIHRh
cmdldCA9IGdsLlJFQURfRlJBTUVCVUZGRVI7CisgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcigKKyAgICAgIHRhcmdldCwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihSRUFEX0ZS
QU1FQlVGRkVSKS4iKTsKKyAgYXNzZXJ0TXNnKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFy
Z2V0KSAhPSAwLAorICAgICAgICAgICAgImNoZWNrRnJhbWVidWZmZXJTdGF0dXMoUkVBRF9GUkFN
RUJVRkZFUikgc2hvdWxkIHN1Y2NlZWQuIik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhSRUFEX0ZSQU1FQlVGRkVSKS4iKTsK
KyAgdmFyIHJlYWRGQiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1
ZmZlcih0YXJnZXQsIHJlYWRGQik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiYmluZEZyYW1lYnVmZmVyKFJFQURfRlJBTUVCVUZGRVIpLiIpOworICBhc3NlcnRNc2co
cmVhZEZCID09IGdsLmdldFBhcmFtZXRlcihnbC5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcpLAor
ICAgICAgICAgICAgImJpbmRGcmFtZWJ1ZmZlcihSRUFEX0ZSQU1FQlVGRkVSKSBzaG91bGQgY2hh
bmdlIFJFQURfRlJBTUVCVUZGRVJfQklORElORy4iKTsKKyAgYXNzZXJ0TXNnKGZiID09IGdsLmdl
dFBhcmFtZXRlcihnbC5EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcpLAorICAgICAgICAgICAgImJp
bmRGcmFtZWJ1ZmZlcihSRUFEX0ZSQU1FQlVGRkVSKSBzaG91bGQgbm90IGNoYW5nZSBEUkFXX0ZS
QU1FQlVGRkVSX0JJTkRJTkcuIik7CisgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcigKKyAgICAgIHRhcmdldCwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwKKyAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkgd2l0aCBubyBhdHRhY2htZW50LiIpOworICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5U
RVhUVVJFXzJELCBmYnRleCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiZnJhbWVidWZmZXJUZXhJbWFnZTJEKFJFQURfRlJBTUVCVUZGRVIpLiIpOworICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5S
RU5ERVJCVUZGRVIsIHJiKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihSRUFEX0ZSQU1FQlVGRkVSKS4iKTsKKworICB2YXIg
Y29sb3JBdHRhY2htZW50c051bSA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ09MT1JfQVRUQUNI
TUVOVFMpOworICBpZiAoY29sb3JBdHRhY2htZW50c051bSA+PSAyKSB7CisgICAgdmFyIGF0dGFj
aG1lbnQgPSBnbC5DT0xPUl9BVFRBQ0hNRU5UMTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuVEVYVFVSRV8yRCwgZmJ0ZXgsIDApOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZnJhbWVidWZmZXJUZXhJ
bWFnZTJEKENPTE9SX0FUVEFDSE1FTlQxKS4iKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwgMCk7Cisg
ICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQs
IGdsLlJFTkRFUkJVRkZFUiwgcmIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoQ09MT1JfQVRUQUNITUVOVDEpLiIpOwor
ICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50
LCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICB9CisKKyAgZ2wuZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKAorICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1F
TlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAiZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1Jf
RU5DT0RJTkcpICIgKworICAgICAgIndpdGggbm8gYXR0YWNobWVudC4iKTsKKworICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfMkQsIGZidGV4LCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJhdHRhY2ggYSB0ZXh0dXJlIHRvIGEgZnJhbWVidWZmZXIuIik7CisKKyAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJkZXRhY2ggYSB0ZXh0dXJlIGZyb20gYSBmcmFtZWJ1ZmZlci4iKTsKKworICBmdW5j
dGlvbiBudW1MZXZlbHNGcm9tU2l6ZShzaXplKSB7CisgICAgdmFyIGxldmVscyA9IDA7CisgICAg
d2hpbGUgKChzaXplID4+IGxldmVscykgPiAwKSB7CisgICAgICArK2xldmVsczsKKyAgICB9Cisg
ICAgcmV0dXJuIGxldmVsczsKKyAgfQorCisgIHZhciBtYXhUZXhTaXplID0gZ2wuZ2V0UGFyYW1l
dGVyKGdsLk1BWF9URVhUVVJFX1NJWkUpOworICB2YXIgbWF4TGV2ZWxzID0gbnVtTGV2ZWxzRnJv
bVNpemUobWF4VGV4U2l6ZSk7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgZmJ0ZXgsIG1heExldmVs
cyAtIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZyYW1lYnVm
ZmVyVGV4dHVyZTJEIHdpdGggYW4gYXBwcm9wcmlhdGUgbWlwbWFwIGxldmVsLiIpOworICBnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLlRFWFRVUkVfMkQsIGZidGV4LCBtYXhMZXZlbHMpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZnJhbWVidWZmZXJUZXh0dXJlMkQgd2l0aCBhIG1pcG1h
cCBsZXZlbCBvdXQgb2YgcmFuZ2UuIik7CisKKyAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJi
KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhdHRhY2ggYSByZW5k
ZXJidWZmZXIgdG8gYSBmcmFtZWJ1ZmZlci4iKTsKKworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZF
UiwgbnVsbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZGV0YWNo
IGEgcmVuZGVyYnVmZmVyIGZyb20gYSBmcmFtZWJ1ZmZlci4iKTsKKworICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImJpbmQgZGVmYXVsdCAobnVsbCkgZnJhbWVidWZmZXIuIik7CisKKyAgLy8g
YXR0YWNoL2RldGFjaCBhIDJkIHRleHR1cmUgdG8gb25lIGZyYW1lYnVmZmVyIGJpbmRpbmcgcG9p
bnQsCisgIC8vIHdoaWxlIG5vIGF0dGFjaG1lbnQgdG8gdGhlIG90aGVyIGJpbmRpbmcgcG9pbnQu
CisgIGZ1bmN0aW9uIGF0dGFjaEFuZERldGFjaFRleHR1cmUodGFyZ2V0QSwgdGFyZ2V0Qikgewor
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldEEsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCBmYnRleCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsCisgICAgICAgICJhdHRhY2ggYSB0ZXh0dXJlIHRvIHJlYWQvZHJhdyBmcmFt
ZWJ1ZmZlciBiaW5kaW5nIHBvaW50LiIpOworICAgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcigKKyAgICAgICAgdGFyZ2V0QSwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpICIgKworICAg
ICAgICAib24gcmVhZC9kcmF3IGZyYW1lYnVmZmVyLiIpOworICAgIGdsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcigKKyAgICAgICAgdGFyZ2V0QiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAiZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1Jf
RU5DT0RJTkcpICIgKworICAgICAgICAib24gcmVhZC9kcmF3IGZyYW1lYnVmZmVyIHdpdGggbm8g
YXR0YWNobWVudC4iKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXRBLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwgMCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkZXRhY2ggYSB0ZXh0dXJlIGZyb20gcmVhZC9k
cmF3IGZyYW1lYnVmZmVyLiIpOworICB9CisKKyAgdmFyIHJlYWRGQldpdGhUZXh0dXJlID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIGRyYXdGQldpdGhUZXh0dXJlID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIs
IHJlYWRGQldpdGhUZXh0dXJlKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVC
VUZGRVIsIGRyYXdGQldpdGhUZXh0dXJlKTsKKyAgYXR0YWNoQW5kRGV0YWNoVGV4dHVyZShnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBnbC5EUkFXX0ZSQU1FQlVGRkVSKTsKKyAgYXR0YWNoQW5kRGV0YWNo
VGV4dHVyZShnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5SRUFEX0ZSQU1FQlVGRkVSKTsKKworICAv
LyBhdHRhY2ggZGlmZmVyZW50IHRleHR1cmVzIGFzIGNvbG9yIGF0dGFjaG1lbnQgdG8gcmVhZCBh
bmQgZHJhdyBmcmFtZWJ1ZmZlciByZXNwZWN0aXZlbHksCisgIC8vIHRoZW4gZGV0YWNoIHRoZXNl
IGF0dGFjaG1lbnRzLgorICB2YXIgZmJ0ZXgxID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYnRleDEpOworICBnbC50ZXhJbWFnZTJEKAorICAg
ICAgZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkc4LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQs
IDAsIGdsLlJHLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRV
UkVfMkQsIGZidGV4MSwgMCk7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLlJFQURfRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBmYnRleCwgMCk7
CisgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLlJFQURfRlJBTUVCVUZGRVIsICcgKworICAgICAgICAgICAgICAgICAgJ2dsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSknKTsKKyAgc2hv
dWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5EUkFXX0ZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgJyArCisgICAgICAgICAgICdnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSknLCAnMCcpOworCisgIGdsLmZyYW1lYnVmZmVyVGV4
dHVyZTJEKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCBudWxsLCAwKTsKKyAgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KAorICAgICAgZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORykgIiAr
CisgICAgICAib24gcmVhZCBmcmFtZWJ1ZmZlciB3aXRoIG5vIGF0dGFjaG1lbnQuIik7CisgIGds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigKKyAgICAgIGdsLkRSQVdfRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NP
TE9SX0VOQ09ESU5HKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisg
ICAgICAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfQ09MT1JfRU5DT0RJTkcpICIgKworICAgICAgIm9uIGRyYXcgZnJhbWVidWZmZXIuIik7
CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKAorICAgICAgZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9DT0xPUl9FTkNPRElORykgIiArCisgICAgICAib24gZHJhdyBmcmFtZWJ1ZmZlciB3aXRoIG5v
IGF0dGFjaG1lbnQuIik7CisKKyAgLy8gYXR0YWNoL2RldGFjaCBhIHJlbmRlcmJ1ZmZlciB0byBv
bmUgZnJhbWVidWZmZXIgYmluZGluZyBwb2ludCwKKyAgLy8gd2hpbGUgbm8gYXR0YWNobWVudCB0
byB0aGUgb3RoZXIgYmluZGluZyBwb2ludC4KKyAgZnVuY3Rpb24gYXR0YWNoQW5kRGV0YWNoUmVu
ZGVyYnVmZmVyKHRhcmdldEEsIHRhcmdldEIpIHsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih0YXJnZXRBLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhdHRhY2hpbmcgYSBy
ZW5kZXJidWZmZXIgdG8gYSByZWFkL2RyYXcgZnJhbWVidWZmZXIuIik7CisgICAgZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKAorICAgICAgICB0YXJnZXRBLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAgICJnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9F
TkNPRElORykgIiArCisgICAgICAgICJvbiByZWFkL2RyYXcgZnJhbWVidWZmZXIuIik7CisgICAg
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKAorICAgICAgICB0YXJnZXRCLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNP
RElORyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT0xPUl9FTkNPRElORykgIiArCisgICAgICAgICJvbiByZWFkL2RyYXcgZnJh
bWVidWZmZXIgd2l0aCBubyBhdHRhY2htZW50LiIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKHRhcmdldEEsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIG51
bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZGV0YWNoIGEg
cmVuZGVyYnVmZmVyIGZyb20gYSByZWFkL2RyYXcgZnJhbWVidWZmZXIuIik7CisgIH0KKworICB2
YXIgcmVhZEZCV2l0aFJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIHZh
ciBkcmF3RkJXaXRoUmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlYWRGQldpdGhSZW5kZXJidWZm
ZXIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZHJhd0ZCV2l0
aFJlbmRlcmJ1ZmZlcik7CisgIGF0dGFjaEFuZERldGFjaFJlbmRlcmJ1ZmZlcihnbC5SRUFEX0ZS
QU1FQlVGRkVSLCBnbC5EUkFXX0ZSQU1FQlVGRkVSKTsKKyAgYXR0YWNoQW5kRGV0YWNoUmVuZGVy
YnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLlJFQURfRlJBTUVCVUZGRVIpOworCisgIC8v
IGF0dGFjaCBkaWZmZXJlbnQgcmVuZGVyYnVmZmVycyB0byByZWFkIGFuZCBkcmF3IGZyYW1lYnVm
ZmVyIHJlc3BlY3RpdmVseSwKKyAgLy8gdGhlbiBkZXRhY2ggdGhlc2UgYXR0YWNobWVudHMuCisg
IHZhciBkZXB0aFJCID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFJCKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFn
ZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAg
ICAgICJhbGxvY2F0aW5nIHJlbmRlcmJ1ZmZlciBzdG9yYWdlIG9mIGEgbmV3bHkgY3JlYXRlZCBy
ZW5kZXJidWZmZXIuIik7CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkRSQVdfRlJB
TUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhSQik7
CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgc2hvdWxkQmVOb25aZXJv
KCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuUkVBRF9GUkFNRUJVRkZF
UiwgJyArCisgICAgICAgICAgICAgICAgICAnZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkUpJyk7CisgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcigKKyAgICAgIGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGdsLkZSQU1FQlVGRkVSX0RFUFRIX1NJWkUpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKSAiICsKKyAgICAg
ICJvbiByZWFkIGZyYW1lYnVmZmVyIHdpdGhvdXQgZGVwdGggYXR0YWNobWVudC4iKTsKKyAgc2hv
dWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRFJB
V19GUkFNRUJVRkZFUiwgJyArCisgICAgICAgICAgICAgICAgICAnZ2wuREVQVEhfQVRUQUNITUVO
VCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKScpOworICBnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoCisgICAgICBnbC5EUkFXX0ZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfUkVEX1NJWkUpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICJnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRSkg
IiArCisgICAgICAib24gZHJhdyBmcmFtZWJ1ZmZlciB3aXRob3V0IGNvbG9yIGF0dGFjaG1lbnQu
Iik7CisKKyAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgIGdsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigKKyAgICAgIGdsLlJFQURfRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9SRURfU0laRSk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgImdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpF
KSAiICsKKyAgICAgICJvbiByZWFkIGZyYW1lYnVmZmVyIHdpdGggbm8gYXR0YWNobWVudC4iKTsK
KyAgc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRFJBV19GUkFNRUJVRkZFUiwgJyArCisgICAgICAgICAgICAgICAgICAnZ2wuREVQVEhfQVRU
QUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKScpOworICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoCisgICAgICBnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRB
Q0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9ERVBUSF9TSVpFKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAiZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRSkgIiArCisgICAg
ICAib24gZHJhdyBmcmFtZWJ1ZmZlciB3aXRoIG5vIGF0dGFjaG1lbnQuIik7CisKKyAgLy8gYmlu
ZGluZyByZWFkL2RyYXcgZnJhbWVidWZmZXIgdG8gZGVmYXVsdCBmcmFtZWJ1ZmZlcgorICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYmluZCByZWFkIGZyYW1lYnVmZmVyIHRvIGRlZmF1
bHQgKG51bGwpIGZyYW1lYnVmZmVyLiIpOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFX
X0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJiaW5kIGRyYXcgZnJhbWVidWZmZXIgdG8gZGVmYXVsdCAobnVsbCkgZnJhbWVidWZmZXIu
Iik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGZyYW1lYnVmZmVyL3JlbmRlcmJ1ZmZl
ci1yZWxhdGVkIGZ1bmN0aW9ucyIpOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoY2FudmFzLCB1bmRlZmluZWQsIDIpIik7CisKK3Rlc3RGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cigpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvZnJhbWVidWZm
ZXItdGV4dHVyZS1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvZnJhbWVidWZmZXItdGV4dHVy
ZS1sYXllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNDM1ZDZhMmUyOTAyYzRiMzNkNTUwNjYxMTQwMTEx
YTM0NzViYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZlci10
ZXh0dXJlLWxheWVyLmh0bWwKQEAgLTAsMCArMSwxNDQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMiIgaGVpZ2h0PSIyIj4gPC9jYW52YXM+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworCitmdW5jdGlvbiBudW1MZXZlbHNGcm9tU2l6
ZShzaXplKSB7CisgICAgdmFyIGxldmVscyA9IDA7CisgICAgd2hpbGUgKChzaXplID4+IGxldmVs
cykgPiAwKSB7CisgICAgICAgICsrbGV2ZWxzOworICAgIH0KKyAgICByZXR1cm4gbGV2ZWxzOwor
fQorCitmdW5jdGlvbiBjaGVja0ZyYW1lYnVmZmVyKGV4cGVjdGVkKSB7CisgICAgdmFyIGFjdHVh
bCA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGlmIChl
eHBlY3RlZC5pbmRleE9mKGFjdHVhbCkgPCAwKSB7CisgICAgICAgIHZhciBtc2cgPSAiY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyBleHBlY3RzIFsiOworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7
IGluZGV4IDwgZXhwZWN0ZWQubGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAgICBtc2cgKz0g
d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBleHBlY3RlZFtpbmRleF0pOworICAgICAgICAgICAgaWYg
KGluZGV4ICsgMSA8IGV4cGVjdGVkLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIiwg
IjsKKyAgICAgICAgfQorICAgICAgICBtc2cgKz0gIl0sIHdhcyAiICsgd3R1LmdsRW51bVRvU3Ry
aW5nKGdsLCBhY3R1YWwpOworICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdmFyIG1zZyA9ICJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIGdvdCAiICsgd3R1Lmds
RW51bVRvU3RyaW5nKGdsLCBhY3R1YWwpICsKKyAgICAgICAgICAgICAgICAgICIgYXMgZXhwZWN0
ZWQiOworICAgICAgICB0ZXN0UGFzc2VkKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJD
aGVja2luZyBGcmFtZWJ1ZmZlclRleHR1cmVMYXllciBzdHVmZi4iKTsKKworICAgIHZhciB0ZXgz
ZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB2YXIgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfM0QsIHRleDNkKTsKKyAgICBnbC50
ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsCisgICAgICAgICAgICAgICAg
ICBnbC5SR0JBLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVybmFs
Rm9ybWF0CisgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHdpZHRoCisgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlaWdodAorICAgICAgICAgICAgICAgICAg
MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXB0aAorICAg
ICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBib3JkZXIKKyAgICAgICAgICAgICAgICAgIGdsLlJHQkEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0CisgICAgICAgICAgICAgICAgICBnbC5VTlNJR05F
RF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGUKKyAgICAgICAgICAgICAg
ICAgIG5ldyBVaW50OEFycmF5KFsweGZmLCAweDAwLCAweDAwLCAweDAwXSkpOyAgLy8gZGF0YQor
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgdGV4M2QsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAiYXR0YWNoaW5nIGEgdGV4dHVyZSB0byBkZWZh
dWx0IGZyYW1lYnVmZmVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTi4iKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRl
eDNkLCAwLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAg
ICAgICAgImF0dGFjaGluZyBhIHRleHR1cmUgdG8gYSBmcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2Vl
ZC4iKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOwor
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgbnVsbCwgMCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsCisgICAgICAgICJkZXRhY2hpbmcgYSB0ZXh0dXJlIGZyb20gYSBmcmFtZWJ1ZmZl
ciBzaG91bGQgc3VjY2VlZC4iKTsKKworICAgIHZhciBtYXhUZXhTaXplID0gZ2wuZ2V0UGFyYW1l
dGVyKGdsLk1BWF8zRF9URVhUVVJFX1NJWkUpOworICAgIHZhciBtYXhMZXZlbHMgPSBudW1MZXZl
bHNGcm9tU2l6ZShtYXhUZXhTaXplKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleDNkLCBtYXhMZXZlbHMgLSAx
LCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAg
ImNhbGxpbmcgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIgd2l0aCBhbiBhcHByb3ByaWF0ZSBtaXBt
YXAgbGV2ZWwgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXSk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCB0ZXgzZCwgbWF4
TGV2ZWxzLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LAorICAgICAgICAiY2FsbGluZyBmcmFtZWJ1ZmZlclRleHR1cmVMYXllciB3aXRoIGEgbWlwbWFw
IGxldmVsIG91dCBvZiByYW5nZSBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRS4iKTsKKwor
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgdGV4M2QsIDAsIC0xKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAiY2FsbGluZyBmcmFtZWJ1ZmZlclRleHR1cmVMYXll
ciB3aXRoIGEgbmVnYXRpdmUgdGV4dHVyZSBsYXllciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9W
QUxVRS4iKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleDNkLCAwLCBtYXhUZXhTaXplKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAiY2FsbGluZyBmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllciB3aXRoIGEgdGV4dHVyZSBsYXllciBvdXQgb2YgcmFuZ2Ugc2hv
dWxkIGdlbmVyYXRlIElOVkFMSURfVkFMVUUuIik7CisKKyAgICB2YXIgdGV4MmQgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MmQpOwor
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgdGV4MmQsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAiYXR0YWNoaW5nIGEgMmQgdGV4dHVyZSB0byBh
IGZyYW1lYnVmZmVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTi4iKTsKKworICAg
IHZhciB0ZXhEZXB0aFN0ZW5jaWwgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4RGVwdGhTdGVuY2lsKTsKKyAgICB2YXIgZmJE
ZXB0aFN0ZW5jaWwgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJEZXB0aFN0ZW5jaWwpOworICAgIGdsLnRleEltYWdlM0Qo
Z2wuVEVYVFVSRV8yRF9BUlJBWSwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGV2ZWwKKyAgICAgICAgICAgICAgICAgIGds
LkRFUFRIMjRfU1RFTkNJTDgsICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxGb3Jt
YXQKKyAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gd2lkdGgKKyAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVpZ2h0CisgICAgICAgICAgICAgICAgICAxLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlcHRoCisgICAgICAg
ICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGJvcmRlcgorICAgICAgICAgICAgICAgICAgZ2wuREVQVEhfU1RFTkNJTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBmb3JtYXQKKyAgICAgICAgICAgICAgICAgIGdsLlVOU0lHTkVEX0lO
VF8yNF84LCAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZQorICAgICAgICAgICAgICAgICAg
bmV3IFVpbnQzMkFycmF5KFswXSkpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkYXRhCisgICAg
Z2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCwgdGV4RGVwdGhTdGVuY2lsLCAwLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgImF0dGFjaGluZyBhIGRlcHRoX3N0ZW5j
aWwgdGV4dHVyZSB0byBhIGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLiIpOworICAgIGNoZWNr
RnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisKKyAgICAvLyBDbGVhbiB1
cAorICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4M2QpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
RGVwdGhTdGVuY2lsKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleDJkKTsKKyAgICBnbC5kZWxl
dGVGcmFtZWJ1ZmZlcihmYik7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJEZXB0aFN0ZW5j
aWwpOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBmcmFtZWJ1ZmZlclRleHR1cmVMYXll
ci4iKTsKKworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZp
bmVkLCB1bmRlZmluZWQsIDIpIik7CisKK3Rlc3RGcmFtZWJ1ZmZlclRleHR1cmVMYXllcigpOwor
CitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJidWZmZXJzL2ludmFsaWRhdGUtZnJhbWVi
dWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9yZW5kZXJidWZmZXJzL2ludmFsaWRhdGUtZnJhbWVidWZmZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMDQxOTVkZjgxNjJkYjgxMmRjYjg0MjZmY2Y5ZmQwYWU5MTFiYjE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvaW52YWxpZGF0ZS1mcmFtZWJ1ZmZlci5odG1s
CkBAIC0wLDAgKzEsMTUyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5JbnZhbGlkYXRlIEZyYW1lYnVmZmVyIEFnYWluc3QgV2ViR0wgMjwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMCIgaGVp
Z2h0PSIyMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIGludmFsaWRhdGVGcmFtZWJ1ZmZlciBhbmQgaW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsg
ZGVwdGggOiB0cnVlLCBzdGVuY2lsIDogZmFsc2UgfSwgMik7CitpZiAoIWdsKSB7CisgIHRlc3RG
YWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQo
ImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiaW52YWxpZGF0ZSBm
cmFtZWJ1ZmZlci4iKTsKKworICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworCisgIC8vIHNl
dHVwIGZyYW1lYnVmZmVyIHdpdGggZGVwdGggYXR0YWNobWVudCBhbmQgbXVsdGktc2FtcGxlZCBj
b2xvciBhdHRhY2htZW50CisgIHZhciBmYl9tID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYl9tKTsKKworICB2YXIgcmJfbSA9
IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRF
UkJVRkZFUiwgcmJfbSk7CisgIHZhciBzYW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJh
bWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBOCwgZ2wuU0FNUExFUyk7CisgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCByYl9tKTsKKyAgLy8gaW52YWxpZGF0ZSB0aGUgZnJhbWVidWZmZXIg
d2hlbiB0aGUgYXR0YWNobWVudCBpcyBpbmNvbXBsZXRlOiBubyBzdG9yYWdlIGFsbG9jYXRlZCB0
byB0aGUgYXR0YWNoZWQgcmVuZGVyYnVmZmVyCisgIGludmFsaWRhdGVJbmNvbXBsZXRlQXR0YWNo
bWVudChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDApOworICBnbC5yZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVzWzBdLCBnbC5S
R0JBOCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAg
ICAgInNob3VsZCBiZSBubyBlcnJvcnMgYWZ0ZXIgYXR0YWNoaW5nIGEgbXVsdGktc2FtcGxlZCBy
ZW5kZXJidWZmZXIgdG8gZmJvLiIpOworCisgIHZhciByYiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIpOworICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVO
VCwgZ2wuUkVOREVSQlVGRkVSLCByYik7CisgIC8vIGludmFsaWRhdGUgdGhlIGZyYW1lYnVmZmVy
IHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgaW5jb21wbGV0ZTogbm8gc3RvcmFnZSBhbGxvY2F0ZWQg
dG8gdGhlIGF0dGFjaGVkIHJlbmRlcmJ1ZmZlcgorICBpbnZhbGlkYXRlSW5jb21wbGV0ZUF0dGFj
aG1lbnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQpOworICBnbC5yZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVzWzBdLCBnbC5E
RVBUSF9DT01QT05FTlQxNiwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgZ2wuY2xl
YXIoZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLAorICAgICAgInNob3VsZCBiZSBubyBlcnJvcnMgYWZ0ZXIgYXR0YWNoaW5nIGEgcmVu
ZGVyYnVmZmVyIHRvIGZiby4iKTsKKworICAvLyBpbiByZWFsIHdvcmxkIGNhc2UsIGFmdGVyIHNv
bWUgZHJhd2luZywgd2UgY2FuIGludmFsaWRhdGUgdGhlIGRlcHRoIGF0dGFjaG1lbnQgb2YgdGhl
IGJvdW5kIGZibworICBpbnZhbGlkYXRpb24oZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGdsLlNURU5DSUxfQVRUQUNITUVOVCk7CisKKyAgLy8gc2V0IHVwIGZyYW1lYnVmZmVy
IHRvIGJsaXQgdG8gYW5kIHJlYWQgYmFjayBmcm9tCisgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICB2
YXIgYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGdsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIpOworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Cisg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIpOworICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAg
ICAic2hvdWxkIGJlIG5vIGVycm9ycyBhZnRlciBhdHRhY2hpbmcgYSByZW5kZXJidWZmZXIgdG8g
ZmJvLiIpOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYl9t
KTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZiKTsKKyAgZ2wu
YmxpdEZyYW1lYnVmZmVyKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFS
RVNUKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAic2hv
dWxkIGJlIG5vIGVycm9ycyBhZnRlciBibGl0aW5nIGZyYW1lYnVmZmVyLiIpOworCisgIC8vIGlu
dmFsaWRhdGUgdGhlIG11bHRpLXNhbXBsZWQgY29sb3IgYXR0YWNobWVudCBvZiB0aGUgYm91bmQg
cmVhZCBmcmFtZWJ1ZmZlciBhZnRlciBibGl0RnJhbWVidWZmZXIuCisgIGludmFsaWRhdGlvbihn
bC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuREVQVEhfQVRUQUNI
TUVOVCk7CisKKyAgdmFyIG1heENvbG9yQXR0YWNobWVudHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wu
TUFYX0NPTE9SX0FUVEFDSE1FTlRTKTsKKyAgZ2wuaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGds
LlJFQURfRlJBTUVCVUZGRVIsIFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIG1heENvbG9yQXR0YWNo
bWVudHNdLCA1LCA1LCAxMCwgMTApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBbZ2wuSU5W
QUxJRF9PUEVSQVRJT04sIGdsLklOVkFMSURfRU5VTV0sCisgICAgICAiY2FsbGluZyBpbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIgdG8gaW52YWxpZGF0ZSBhIENPTE9SX0FUVEFDSE1FTlQgdGhhdCBl
eGNlZWRzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0g
b3IgSU5WQUxJRF9PUEVSQVRJT04uIik7CisgIGdsLmludmFsaWRhdGVGcmFtZWJ1ZmZlcihnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBbZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyBtYXhDb2xvckF0dGFjaG1l
bnRzXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX09QRVJBVElPTiwg
Z2wuSU5WQUxJRF9FTlVNXSwKKyAgICAgICJjYWxsaW5nIGludmFsaWRhdGVGcmFtZWJ1ZmZlciB0
byBpbnZhbGlkYXRlIGEgQ09MT1JfQVRUQUNITUVOVCB0aGF0IGV4Y2VlZHMgTUFYX0NPTE9SX0FU
VEFDSE1FTlQgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRU5VTSBvciBJTlZBTElEX09QRVJBVElP
Ti4iKTsKKworICAvLyBpbnZhbGlkYXRlIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyCisgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIGludmFsaWRhdGlvbihnbC5G
UkFNRUJVRkZFUiwgZ2wuREVQVEgsIGdsLlNURU5DSUwpOworCisgIGdsLmRlbGV0ZUZyYW1lYnVm
ZmVyKGZiX20pOworICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJfbSk7CisgIGdsLmRlbGV0ZVJl
bmRlcmJ1ZmZlcihyYik7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgZ2wuZGVsZXRl
UmVuZGVyYnVmZmVyKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIGludmFsaWRhdGlvbih0YXJnZXQs
IHZhbGlkX2F0dGFjaG1lbnQsIGludmFsaWRfYXR0YWNobWVudCkgeworICBnbC5pbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIodGFyZ2V0LCBbaW52YWxpZF9hdHRhY2htZW50XSwgNSwgNSwgMTAsIDEw
KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiY2FsbGlu
ZyBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIgdG8gaW52YWxpZGF0ZSBhIHNwZWNpZmllZCBhdHRh
Y2htZW50IHRoYXQgZG9lcyBub3QgZXhpc3Qgd2lsbCBiZSBpZ25vcmVkLiBUaGVyZSBzaG91bGQg
YmUgbm8gZXJyb3JzLiIpOworICBnbC5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBb
dmFsaWRfYXR0YWNobWVudF0sIDUsIDUsIDEwLCAxMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLAorICAgICAgImNhbGxpbmcgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
IHNob3VsZCBzdWNjZWVkLiIpOworCisgIGdsLmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJn
ZXQsIFt2YWxpZF9hdHRhY2htZW50XSwgNSwgNSwgLTUsIC01KTsKKyAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwKKyAgICAgICJjYWxsaW5nIGludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRSBpZiB3aWR0aCA8IDAgb3Ig
aGVpZ2h0IDwgMC4iKTsKKworICBnbC5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBb
dmFsaWRfYXR0YWNobWVudF0sIC01LCAtNSwgMTAsIDEwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiY2FsbGluZyBpbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIgc2hvdWxkIHN1Y2NlZWQsIGV2ZW4gdGhlIGludmFsaWRhdGVkIHBpeGVscyBtYXkgYmUgb3V0
c2lkZSBvZiB0aGUgZnJhbWVidWZmZXIgYWxsb2NhdGVkIHRvIGN1cnJlbnQgY29udGV4dC4gVGhl
c2UgcGl4ZWxzIGFyZSBpZ25vcmVkLiIpOworICBnbC5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
dGFyZ2V0LCBbdmFsaWRfYXR0YWNobWVudF0sIDUsIDUsIDIwLCAyMCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgImNhbGxpbmcgaW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLCBldmVuIHRoZSBpbnZhbGlkYXRlZCBwaXhlbHMgbWF5
IGJlIG91dHNpZGUgb2YgdGhlIGZyYW1lYnVmZmVyIGFsbG9jYXRlZCB0byBjdXJyZW50IGNvbnRl
eHQuIFRoZXNlIHBpeGVscyBhcmUgaWdub3JlZC4iKTsKKworICBnbC5pbnZhbGlkYXRlRnJhbWVi
dWZmZXIodGFyZ2V0LCBbaW52YWxpZF9hdHRhY2htZW50XSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgImNhbGxpbmcgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
IHRvIGludmFsaWRhdGUgYSBzcGVjaWZpZWQgYXR0YWNobWVudCB0aGF0IGRvZXMgbm90IGV4aXN0
IHdpbGwgYmUgaWdub3JlZC4gVGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycy4iKTsKKyAgZ2wuaW52
YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgW3ZhbGlkX2F0dGFjaG1lbnRdKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiY2FsbGluZyBpbnZhbGlkYXRl
RnJhbWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQuIik7Cit9CisKK2Z1bmN0aW9uIGludmFsaWRhdGVJ
bmNvbXBsZXRlQXR0YWNobWVudCh0YXJnZXQsIGluY29tcGxldGVfYXR0YWNobWVudCkgeworICBz
aG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLAorICAg
ICAgICAgICAiZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIik7CisgIGdsLmlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIFtpbmNvbXBsZXRlX2F0dGFjaG1lbnRdLCA1
LCA1LCAxMCwgMTApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAg
ICAgICJjYWxsaW5nIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlciB0byBpbnZhbGlkYXRlIGFuIGlu
Y29tcGxldGUgYXR0YWNobWVudCB3aWxsIGJlIGlnbm9yZWQuIFRoZXJlIHNob3VsZCBiZSBubyBl
cnJvcnMiKTsKKyAgZ2wuaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgW2luY29tcGxldGVf
YXR0YWNobWVudF0pOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAg
ICAgICJjYWxsaW5nIGludmFsaWRhdGVGcmFtZWJ1ZmZlciB0byBpbnZhbGlkYXRlIGFuIGluY29t
cGxldGUgYXR0YWNobWVudCB3aWxsIGJlIGlnbm9yZWQuIFRoZXJlIHNob3VsZCBiZSBubyBlcnJv
cnMuIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9tdWx0
aXNhbXBsZS13aXRoLWZ1bGwtc2FtcGxlLWNvdW50cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvbXVs
dGlzYW1wbGUtd2l0aC1mdWxsLXNhbXBsZS1jb3VudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTA0Mzg1
ZjI4ZTNiZTAzZGU4NmJkZWUxYzA1N2M1ZTk5NTllMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Jl
bmRlcmJ1ZmZlcnMvbXVsdGlzYW1wbGUtd2l0aC1mdWxsLXNhbXBsZS1jb3VudHMuaHRtbApAQCAt
MCwwICsxLDk4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiIgc3R5bGU9IndpZHRoOiAzMnB4OyBoZWlnaHQ6IDMycHg7Ij48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9u
KCcgVGVzdCBtdWx0aXNhbXBsZSB3aXRoIHNhbXBsZSBudW1iZXIgZnJvbSAxIHRvIG1heCBzYW1w
bGUgbnVtYmVyIHdoaWNoIGFsc28gaW5jbHVkZXMgdGhlIHNhbXBsZXMgdGhhdCBtYXkgbm90IGJl
IGluIHRoZSBzdXBwb3J0ZWQgc2FtcGxlIGxpc3QnKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgiY2FudmFzIiwgbnVsbCwgMik7Cit2YXIgc2l6ZSA9IDMyOwordmFyIHByb2dyYW07
CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4dCgpIGZhaWxl
ZCcpOworfSBlbHNlIHsKKyAgICBwcm9ncmFtID0gd3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKyAg
ICBnbC52aWV3cG9ydCgwLCAwLCBzaXplLCBzaXplKTsKKyAgICB2YXIgc3VwcG9ydGVkU2FtcGxl
Q291bnRBcnJheSA9IGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkdCQTgsIGdsLlNBTVBMRVMpOworICAgIHZhciBpdGVyYXRpb25Db3VudCA9IHN1cHBv
cnRlZFNhbXBsZUNvdW50QXJyYXlbMF0gKyAxOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgaXRl
cmF0aW9uQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHJ1blRlc3QoZ2wsIGksIGZhbHNlKTsK
KyAgICAgICAgcnVuVGVzdChnbCwgaSwgdHJ1ZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5U
ZXN0KGdsLCBzYW1wbGVDb3VudCwgaXNJbnZlcnRlZCkgeworICAgIC8vIFNldHVwIG11bHRpLXNh
bXBsZSBSQk8KKyAgICB2YXIgbXNDb2xvclJibyA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwor
ICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBtc0NvbG9yUmJvKTsKKyAg
ICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCBzYW1w
bGVDb3VudCwgZ2wuUkdCQTgsIHNpemUsIHNpemUpOworCisgICAgLy8gU2V0dXAgbXVsdGktc2Ft
cGxlIEZCTy4KKyAgICB2YXIgbXNGYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbXNGYm8pOworICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wu
UkVOREVSQlVGRkVSLCBtc0NvbG9yUmJvKTsKKworICAgIC8vIFNldHVwIHJlc29sdmUgY29sb3Ig
UkJPLgorICAgIHZhciByZXNvbHZlQ29sb3JSYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsK
KyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVzb2x2ZUNvbG9yUmJv
KTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgs
IHNpemUsIHNpemUpOworICAgIC8vIFNldHVwIHJlc29sdmUgRkJPCisgICAgdmFyIHJlc29sdmVG
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgcmVzb2x2ZUZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJl
c29sdmVDb2xvclJibyk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IG1zRmJvKTsKKyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
UikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRnJh
bWVidWZmZXIgaW5jb21wbGV0ZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbC5j
bGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisKKyAgICBnbC5lbmFibGUoZ2wuU0FNUExFX0NPVkVSQUdFKTsKKyAgICB2YXIg
Y292ZXJhZ2VWYWx1ZSA9IGlzSW52ZXJ0ZWQgPyAwLjAgOiAxLjA7CisgICAgZ2wuc2FtcGxlQ292
ZXJhZ2UoY292ZXJhZ2VWYWx1ZSwgaXNJbnZlcnRlZCk7CisKKyAgICB2YXIgcXVhZENvbG9yID0g
WzEuMCwgMC4wLCAwLjAsIDEuMF07CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB3
dHUuZHJhd0Zsb2F0Q29sb3JRdWFkKGdsLCBxdWFkQ29sb3IpOworCisgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIHJlc29sdmVGYm8pOworICAgIGdsLmJsaXRGcmFt
ZWJ1ZmZlcigwLCAwLCBzaXplLCBzaXplLCAwLCAwLCBzaXplLCBzaXplLCBnbC5DT0xPUl9CVUZG
RVJfQklULCBnbC5ORUFSRVNUKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgcmVzb2x2ZUZibyk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgc2l6
ZSwgc2l6ZSwgWzI1NSwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVc2Vy
IGJ1ZmZlciBoYXMgYmVlbiByZW5kZXJlZCB0byByZWQgd2l0aCBzYW1wbGUgPSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICArIHNhbXBsZUNvdW50ICsgIiwgY292ZXJhZ2VWYWx1ZSA9ICIgKyBj
b3ZlcmFnZVZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIGlzSW52ZXJ0ZWQg
PSAiICsgaXNJbnZlcnRlZCwgMyk7CisKKyAgICBnbC5kaXNhYmxlKGdsLlNBTVBMRV9DT1ZFUkFH
RSk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKG1zQ29sb3JSYm8pOworICAgIGdsLmRlbGV0
ZVJlbmRlcmJ1ZmZlcihyZXNvbHZlQ29sb3JSYm8pOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVy
KG1zRmJvKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihyZXNvbHZlRmJvKTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3JlbmRlcmJ1ZmZlcnMvbXVsdGlzYW1wbGVkLWRlcHRoLXJlbmRlcmJ1ZmZlci1pbml0
aWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvbXVsdGlzYW1wbGVkLWRlcHRoLXJlbmRl
cmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZDg3ODkwZTJkOTBmZDBl
Y2Y2YzNhYzdlMzE5OGRjMmNmM2I5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVy
cy9tdWx0aXNhbXBsZWQtZGVwdGgtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxODAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RiZWQiIHdpZHRoPSI0MCIgaGVp
Z2h0PSI0MCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0
aW9uKCdWZXJpZnkgbXVsdGlzYW1wbGVkIGRlcHRoIHJlbmRlcmJ1ZmZlcnMgYXJlIGluaXRpYWxp
emVkIHRvIDEuMCBiZWZvcmUgYmVpbmcgcmVhZCBpbiBXZWJHTCcpOworCit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJ0ZXN0YmVkIiwgbnVsbCwgMik7CisKK2lmICghZ2wpIHsKKyAgICB0
ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4dCgpIGZhaWxlZCcpOworfSBlbHNlIHsKKyAgICAv
LyBTZXQgdGhlIGNsZWFyIGNvbG9yIHRvIGdyZWVuLiBJdCBzaG91bGQgbmV2ZXIgc2hvdyB1cC4K
KyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworCisgICAgZGVidWcoIlRlc3QgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIHdpdGggd2ViZ2wxJ3MgREVQVEhfU1RFTkNJTC4iKTsK
KyAgICB7CisgICAgICAgIGNvbnN0IHJiID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAg
ICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYik7CisgICAgICAgIHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIDAsCisgICAgICAgICAgICAiZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgMCwgZ2wuREVQVEhfU1RFTkNJ
TCwgMSwgMSkiKTsKKyAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAiZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgMSwgZ2wuREVQVEhfU1RFTkNJTCwgMSwgMSkiKTsKKyAg
ICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICAgICAiZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRF
UkJVRkZFUiwgMiwgZ2wuREVQVEhfU1RFTkNJTCwgMSwgMSkiKTsKKyAgICAgICAgZ2wuZGVsZXRl
UmVuZGVyYnVmZmVyKHJiKTsKKyAgICB9CisKKyAgICBsZXQgYyA9IGdsLmNhbnZhczsKKyAgICB2
YXIgbWF4U2FtcGxlcyA9IGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKAorICAgICAgICBn
bC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCBnbC5TQU1QTEVTKVswXTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICAvLyBOb24tbXVsdGlzYW1wbGVkIHRlc3RzCisg
ICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdodCwgczog
MH0sIGFsbG9jMjogbnVsbH0pOworICAgICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiBudWxsLCBh
bGxvYzI6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdodCwgczogMH19KTsKKyAgICAgICAgLy8gTXVs
dGlzYW1wbGVkIHRlc3RzCisgICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6IHt3OiBjLndpZHRo
LCBoOiBjLmhlaWdodCwgczogbWF4U2FtcGxlc30sIGFsbG9jMjogbnVsbH0pOworICAgICAgICBy
dW5UZXN0KGdsLCB7YWxsb2MxOiBudWxsLCBhbGxvYzI6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdo
dCwgczogbWF4U2FtcGxlc319KTsKKworICAgICAgICAvLyBUZXN0cyBmb3IgaW5pdGlhbGx5IGFs
bG9jYXRpbmcgYXQgdGhlIHdyb25nIHNpemUuCisgICAgICAgIC8vIFRoaXMgaXMgY2F1c2VkIGJ5
IGEgUXVhbGNvbW0gZHJpdmVyIGJ1ZzogaHR0cDovL2NyYnVnLmNvbS82OTYxMjYKKyAgICAgICAg
cnVuVGVzdChnbCwge2FsbG9jMToge3c6IDUsIGg6IDUsIHM6IG1heFNhbXBsZXN9LCBhbGxvYzI6
IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdodCwgczogbWF4U2FtcGxlc319KTsKKyAgICB9CisKKyAg
ICAvLyBUZXN0aW5nIGJ1ZmZlciBjbGVhcmluZyB3b24ndCBjaGFuZ2UgdGhlIGNsZWFyIHZhbHVl
cy4KKyAgICB2YXIgY2xlYXJDb2xvciA9IGdsLmdldFBhcmFtZXRlcihnbC5DT0xPUl9DTEVBUl9W
QUxVRSk7CisgICAgc2hvdWxkQmUoImNsZWFyQ29sb3IiLCAiWzAsIDEsIDAsIDFdIik7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICdzaG91bGQgYmUgbm8gZXJyb3Jz
Jyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoZ2wsIHBhcmFtcykgeworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiVGVzdCBmb3IgZGVwdGggYnVmZmVyOiAiICsgSlNPTi5zdHJpbmdpZnkocGFy
YW1zKSk7CisgICAgbGV0IHJlc29sdmUgPSBwYXJhbXMuYWxsb2MyID8gcGFyYW1zLmFsbG9jMiA6
IHBhcmFtcy5hbGxvYzE7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgcmVzb2x2ZS53LCByZXNvbHZl
LmgpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2
ZS5oLAorICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgImludGVybmFsIGJ1ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAi
KTsKKworICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICAvLyBmaWxsIHRoZSBi
YWNrIGJ1ZmZlciBzbyB3ZSBrbm93IHRoYXQgcmVhZGluZyBiZWxvdyBoYXBwZW5zIGZyb20KKyAg
ICAvLyB0aGUgcmVuZGVyYnVmZmVyLgorICAgIGdsLmNsZWFyRGVwdGgoMCk7CisgICAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgLy8g
U2V0IHVwIChjb2xvcitkZXB0aCkgbm9uLW11bHRpc2FtcGxlZCBidWZmZXIgdG8gYmxpdCB0byBh
bmQgcmVhZCBiYWNrIGZyb20uCisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIHZhciBi
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIHJlc29sdmUudywgcmVzb2x2ZS5oKTsKKyAgICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICB2YXIgZGVwdGhCdWZmZXIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgcmVzb2x2ZS53LCByZXNvbHZlLmgpOworICAg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKKyAgICBpZiAoZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKKyAgICAgICAgZGVidWcoIlNraXA6IGZyYW1lYnVmZmVyIGlzIGFsbG93ZWQgdG8gYmUg
aW5jb21wbGV0ZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgJ3Nob3VsZCBiZSBubyBlcnJvcnMnKTsKKyAgICBnbC5j
bGVhckRlcHRoKDApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCByZXNvbHZl
LncsIHJlc29sdmUuaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAyNTUsIDAsIDI1NV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAidXNlciBidWZmZXIgaGFzIGJlZW4gY2xlYXJlZCB0
byBncmVlbiIpOworCisgICAgLy8gU2V0IHVwIChkZXB0aC1vbmx5KSBtdWx0aXNhbXBsZWQgYnVm
ZmVyIHRvIHRlc3QuCisgICAgdmFyIGZib19tID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZib19tKTsKKyAgICB2YXIgYnVm
ZmVyX20gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyX20pOworCisgICAgaWYgKHBhcmFtcy5hbGxvYzEpIHsK
KyAgICAgICAgYWxsb2NTdG9yYWdlKHBhcmFtcy5hbGxvYzEudywgcGFyYW1zLmFsbG9jMS5oLCBw
YXJhbXMuYWxsb2MxLnMpOworICAgIH0KKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBidWZm
ZXJfbSk7CisgICAgaWYgKHBhcmFtcy5hbGxvYzIpIHsKKyAgICAgICAgaWYgKHBhcmFtcy5hbGxv
YzEpIHsKKyAgICAgICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJTa2lwOiBmcmFtZWJ1ZmZlciBpcyBhbGxvd2VkIHRvIGJlIGluY29tcGxldGUuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQ2xl
YXIgdGhlIEZCTyBpbiBvcmRlciB0byBtYWtlIHN1cmUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIg
aXMKKyAgICAgICAgICAgIC8vIGNvbW1pdHRlZC4gKEluIEZpcmVmb3gsIGZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyIGlzIGRlZmVycmVkLCBzbyB0aGlzCisgICAgICAgICAgICAvLyBpcyBuZWVkZWQg
dG8gdHJpZ2dlciB0aGUgYnVnLikKKyAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgfQorICAgICAgICBhbGxvY1N0
b3JhZ2UocGFyYW1zLmFsbG9jMi53LCBwYXJhbXMuYWxsb2MyLmgsIHBhcmFtcy5hbGxvYzIucyk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gYWxsb2NTdG9yYWdlKHdpZHRoLCBoZWlnaHQsIHNhbXBs
ZXMpIHsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKAorICAgICAg
ICAgICAgZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVzLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgd2lk
dGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LAorICAgICAgICAgICAgInNob3VsZCBiZSBubyBlcnJvciBhZnRlciByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoREVQVEhfQ09NUE9ORU5UMTYpLiIpOworICAgIH0KKworICAgIGlmIChn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURSkgeworICAgICAgICBkZWJ1ZygiU2tpcDogZnJhbWVidWZmZXIgaXMgYWxsb3dl
ZCB0byBiZSBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOwor
CisgICAgLy8gQmxpdCBmcm9tIG11bHRpc2FtcGxlZCBidWZmZXIgdG8gbm9uLW11bHRpc2FtcGxl
ZCBidWZmZXIuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZi
b19tKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvKTsK
KyAgICBnbC5jbGVhckRlcHRoKDApOworICAgIGdsLmNsZWFyKGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgIC8vIEJsaXQgZGVwdGggZnJvbSBmYm9fbSAoc2hvdWxkIGJlIGRlZmF1bHQgdmFsdWUg
b2YgMS4wKSB0byBmYm8gKHNob3VsZCBiZSAwLjApLgorICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigw
LCAwLCByZXNvbHZlLncsIHJlc29sdmUuaCwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
cmVzb2x2ZS53LCByZXNvbHZlLmgsCisgICAgICAgICAgICAgICAgICAgICAgIGdsLkRFUFRIX0JV
RkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIC8vIGZibyBkZXB0aCBzaG91bGQgbm93IGJlIDEu
MC4KKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgJ3Nob3VsZCBiZSBu
byBlcnJvcnMnKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJv
KTsKKyAgICAvLyBEcmF3IGEgYmx1ZSBxdWFkIChhdCBjbGlwIHogPSAwLjAsIHNvIGRlcHRoID0g
MC41KSAoc2hvdWxkIHBhc3MgdGhlIGRlcHRoIHRlc3Q6IDAuNSA8IDEuMCkKKyAgICBnbC5kZXB0
aEZ1bmMoZ2wuTEVTUyk7CisgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIHd0dS5z
ZXR1cENvbG9yUXVhZChnbCk7CisgICAgd3R1LnNldEZsb2F0RHJhd0NvbG9yKGdsLCBbMCwgMCwg
MSwgMV0pOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWzAsIDAsIDI1NSwgMjU1XSk7CisKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9fbSk7
CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGJ1ZmZlcl9tKTsKKyAgICBnbC5kZWxldGVGcmFt
ZWJ1ZmZlcihmYm8pOworICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihidWZmZXIpOworCisgICAg
Z2wuY2FudmFzLndpZHRoICs9IDE7CisgICAgZ2wuY2FudmFzLmhlaWdodCArPSAxOworCisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICdzaG91bGQgYmUgbm8gZXJyb3Jz
Jyk7CisgICAgZGVidWcoJycpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9tdWx0aXNh
bXBsZWQtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9t
dWx0aXNhbXBsZWQtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGIyN2RhNjYxZDYzYjkyNTUyNDFmYzM4NDJlYmUwZjk5OWY5ZGU1YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9yZW5kZXJidWZmZXJzL211bHRpc2FtcGxlZC1yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRp
b24uaHRtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGVzdGJlZCIgd2lk
dGg9IjQwIiBoZWlnaHQ9IjQwIiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogNDBweDsiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworZGVzY3JpcHRpb24oJ1ZlcmlmeSBtdWx0aXNhbXBsZWQgcmVuZGVyYnVmZmVycyBhcmUgaW5p
dGlhbGl6ZWQgdG8gMCBiZWZvcmUgYmVpbmcgcmVhZCBpbiBXZWJHTCcpOworCit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJ0ZXN0YmVkIiwgbnVsbCwgMik7CisKK2lmICghZ2wpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4dCgpIGZhaWxlZCcpOworfSBlbHNlIHsKKyAg
ICAvLyBTZXQgdGhlIGNsZWFyIGNvbG9yIHRvIGdyZWVuLiBJdCBzaG91bGQgbmV2ZXIgc2hvdyB1
cC4KKyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworCisgICAgbGV0IGMgPSBnbC5jYW52
YXM7CisgICAgdmFyIG1heFNhbXBsZXMgPSBnbC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcigK
KyAgICAgICAgZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBOCwgZ2wuU0FNUExFUylbMF07CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgcnVuVGVzdChnbCwge2FsbG9j
MToge3c6IGMud2lkdGgsIGg6IGMuaGVpZ2h0LCBzOiBtYXhTYW1wbGVzfSwgYWxsb2MyOiBudWxs
fSk7CisgICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6IG51bGwsIGFsbG9jMjoge3c6IGMud2lk
dGgsIGg6IGMuaGVpZ2h0LCBzOiBtYXhTYW1wbGVzfX0pOworCisgICAgICAgIC8vIFRlc3RzIGZv
ciBpbml0aWFsbHkgYWxsb2NhdGluZyBhdCB0aGUgd3Jvbmcgc2l6ZS4KKyAgICAgICAgLy8gVGhp
cyBpcyBjYXVzZWQgYnkgYSBRdWFsY29tbSBkcml2ZXIgYnVnOiBodHRwOi8vY3JidWcuY29tLzY5
NjEyNgorICAgICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiB7dzogNSwgaDogNSwgczogbWF4U2Ft
cGxlc30sIGFsbG9jMjoge3c6IGMud2lkdGgsIGg6IGMuaGVpZ2h0LCBzOiBtYXhTYW1wbGVzfX0p
OworICAgICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiB7dzogNSwgaDogNSwgczogbWF4U2FtcGxl
c30sIGFsbG9jMjoge3c6IGMud2lkdGgsIGg6IGMuaGVpZ2h0LCBzOiAwfX0pOworICAgICAgICBy
dW5UZXN0KGdsLCB7YWxsb2MxOiB7dzogNSwgaDogNSwgczogMH0sIGFsbG9jMjoge3c6IGMud2lk
dGgsIGg6IGMuaGVpZ2h0LCBzOiBtYXhTYW1wbGVzfX0pOworICAgIH0KKworICAgIC8vIFRlc3Rp
bmcgYnVmZmVyIGNsZWFyaW5nIHdvbid0IGNoYW5nZSB0aGUgY2xlYXIgdmFsdWVzLgorICAgIHZh
ciBjbGVhckNvbG9yID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9SX0NMRUFSX1ZBTFVFKTsKKyAg
ICBzaG91bGRCZSgiY2xlYXJDb2xvciIsICJbMCwgMSwgMCwgMV0iKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgJ3Nob3VsZCBiZSBubyBlcnJvcnMnKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdChnbCwgcGFyYW1zKSB7CisgICAgZGVidWcoIlRlc3QgZm9yIGNvbG9y
IGJ1ZmZlcjogIiArIEpTT04uc3RyaW5naWZ5KHBhcmFtcykpOworICAgIGxldCByZXNvbHZlID0g
cGFyYW1zLmFsbG9jMiA/IHBhcmFtcy5hbGxvYzIgOiBwYXJhbXMuYWxsb2MxOworICAgIHd0dS5j
aGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgImlu
dGVybmFsIGJ1ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAiKTsKKworICAgIC8vIGZp
bGwgdGhlIGJhY2sgYnVmZmVyIHNvIHdlIGtub3cgdGhhdCByZWFkaW5nIGJlbG93IGhhcHBlbnMg
ZnJvbQorICAgIC8vIHRoZSByZW5kZXJidWZmZXIuCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisKKyAgICAvLyBTZXQgdXAgbm9uLW11bHRpc2FtcGxlZCBidWZmZXIgdG8gYmxp
dCB0byBhbmQgcmVhZCBiYWNrIGZyb20uCisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAg
IHZhciBidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9y
YWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIHJlc29sdmUudywgcmVzb2x2ZS5oKTsKKyAg
ICBhdHRhY2hCdWZmZXIoYnVmZmVyKTsKKyAgICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLAorICAgICAgICAgICAgICJnbC5GUkFNRUJVRkZFUl9D
T01QTEVURSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hv
dWxkIGJlIG5vIGVycm9ycycpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ1c2VyIGJ1ZmZlciBoYXMgYmVlbiBjbGVhcmVkIHRvIGdyZWVuIik7CisKKyAg
ICAvLyBTZXQgdXAgbXVsdGlzYW1wbGVkIGJ1ZmZlciB0byB0ZXN0LgorICAgIHZhciBmYm9fbSA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYm9fbSk7CisgICAgdmFyIGJ1ZmZlcl9tID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGJ1ZmZlcl9tKTsK
KworICAgIGlmIChwYXJhbXMuYWxsb2MxKSB7CisgICAgICAgIGFsbG9jU3RvcmFnZShwYXJhbXMu
YWxsb2MxLncsIHBhcmFtcy5hbGxvYzEuaCwgcGFyYW1zLmFsbG9jMS5zKTsKKyAgICB9CisgICAg
YXR0YWNoQnVmZmVyKGJ1ZmZlcl9tKTsKKyAgICBpZiAocGFyYW1zLmFsbG9jMikgeworICAgICAg
ICBpZiAocGFyYW1zLmFsbG9jMSkgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIEZCTyBpbiBv
cmRlciB0byBtYWtlIHN1cmUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgaXMKKyAgICAgICAgICAg
IC8vIGNvbW1pdHRlZC4gKEluIEZpcmVmb3gsIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGlzIGRl
ZmVycmVkLCBzbworICAgICAgICAgICAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUg
YnVnLikKKyAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAg
ICB9CisgICAgICAgIGFsbG9jU3RvcmFnZShwYXJhbXMuYWxsb2MyLncsIHBhcmFtcy5hbGxvYzIu
aCwgcGFyYW1zLmFsbG9jMi5zKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhbGxvY1N0b3JhZ2Uo
d2lkdGgsIGhlaWdodCwgc2FtcGxlcykgeworICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoCisgICAgICAgICAgICBnbC5SRU5ERVJCVUZGRVIsIHNhbXBsZXMsIGdsLlJH
QkE4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsCisgICAgICAgICAgICAic2hvdWxkIGJlIG5vIGVycm9yIGFmdGVyIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShSR0JBOCkuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YXR0YWNoQnVmZmVyKGJ1ZmZlcikgeworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cigKKyAgICAgICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wu
UkVOREVSQlVGRkVSLCBidWZmZXIpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwKKyAgICAgICAgICAgICJzaG91bGQgYmUgbm8gZXJyb3IgYWZ0ZXIgZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIuIik7CisgICAgfQorCisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwKKyAgICAgICAgICAgICAiZ2wuRlJBTUVC
VUZGRVJfQ09NUExFVEUiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgJ3Nob3VsZCBiZSBubyBlcnJvcnMnKTsKKworICAgIC8vIEJsaXQgZnJvbSBtdWx0aXNhbXBs
ZWQgYnVmZmVyIHRvIG5vbi1tdWx0aXNhbXBsZWQgYnVmZmVyLgorICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fbSk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgLy8gQmxpdCBjb2xvciBmcm9tIGZib19t
IChzaG91bGQgYmUgYmxhY2spIHRvIGZibyAoc2hvdWxkIGJlIGdyZWVuKQorICAgIGdsLmJsaXRG
cmFtZWJ1ZmZlcigwLCAwLCByZXNvbHZlLncsIHJlc29sdmUuaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgcmVzb2x2ZS53LCByZXNvbHZlLmgsCisgICAgICAgICAgICAgICAgICAgICAg
IGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworCisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWzAsIDAsIDAsIDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgInVzZXIgYnVmZmVyIGhh
cyBiZWVuIGluaXRpYWxpemVkIHRvIDAiKTsKKworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
b19tKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIoYnVmZmVyX20pOworICAgIGdsLmRlbGV0
ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGJ1ZmZlcik7CisK
KyAgICAvLyB0aGlzIGNsZWFyIHNob3VsZCBub3QgbWF0dGVyIHdlIGFyZSBhYm91dCB0byByZXNp
emUKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsLmNhbnZhcy53
aWR0aCArPSAxOworICAgIGdsLmNhbnZhcy5oZWlnaHQgKz0gMTsKKworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworICAgIGRl
YnVnKCcnKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvbXVsdGlzYW1wbGVkLXN0ZW5j
aWwtcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9tdWx0
aXNhbXBsZWQtc3RlbmNpbC1yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYjM1MTQ1NGQyYzBiNTQyNGI5YTAxMTdjZmJmNDFhNjU5Njk1MGY3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlbmRlcmJ1ZmZlcnMvbXVsdGlzYW1wbGVkLXN0ZW5jaWwtcmVuZGVyYnVmZmVy
LWluaXRpYWxpemF0aW9uLmh0bWwKQEAgLTAsMCArMSwxNjcgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
InRlc3RiZWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWln
aHQ6IDQwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCdWZXJpZnkgbXVsdGlzYW1wbGVkIHN0ZW5jaWwg
cmVuZGVyYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQgdG8gMCBiZWZvcmUgYmVpbmcgcmVhZCBpbiBX
ZWJHTCcpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJ0ZXN0YmVkIiwgbnVsbCwg
Mik7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4dCgpIGZh
aWxlZCcpOworfSBlbHNlIHsKKyAgICAvLyBTZXQgdGhlIGNsZWFyIGNvbG9yIHRvIGdyZWVuLiBJ
dCBzaG91bGQgbmV2ZXIgc2hvdyB1cC4KKyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOwor
ICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICBsZXQgYyA9IGdsLmNhbnZhczsK
KyAgICB2YXIgbWF4U2FtcGxlcyA9IGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKAorICAg
ICAgICBnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCBnbC5TQU1QTEVTKVswXTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICAvLyBOb24tbXVsdGlzYW1wbGVkIHRl
c3RzCisgICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdo
dCwgczogMH0sIGFsbG9jMjogbnVsbH0pOworICAgICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiBu
dWxsLCBhbGxvYzI6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdodCwgczogMH19KTsKKyAgICAgICAg
Ly8gTXVsdGlzYW1wbGVkIHRlc3RzCisgICAgICAgIHJ1blRlc3QoZ2wsIHthbGxvYzE6IHt3OiBj
LndpZHRoLCBoOiBjLmhlaWdodCwgczogbWF4U2FtcGxlc30sIGFsbG9jMjogbnVsbH0pOworICAg
ICAgICBydW5UZXN0KGdsLCB7YWxsb2MxOiBudWxsLCBhbGxvYzI6IHt3OiBjLndpZHRoLCBoOiBj
LmhlaWdodCwgczogbWF4U2FtcGxlc319KTsKKworICAgICAgICAvLyBUZXN0cyBmb3IgaW5pdGlh
bGx5IGFsbG9jYXRpbmcgYXQgdGhlIHdyb25nIHNpemUuCisgICAgICAgIC8vIFRoaXMgaXMgY2F1
c2VkIGJ5IGEgUXVhbGNvbW0gZHJpdmVyIGJ1ZzogaHR0cDovL2NyYnVnLmNvbS82OTYxMjYKKyAg
ICAgICAgcnVuVGVzdChnbCwge2FsbG9jMToge3c6IDUsIGg6IDUsIHM6IG1heFNhbXBsZXN9LCBh
bGxvYzI6IHt3OiBjLndpZHRoLCBoOiBjLmhlaWdodCwgczogbWF4U2FtcGxlc319KTsKKyAgICB9
CisKKyAgICAvLyBUZXN0aW5nIGJ1ZmZlciBjbGVhcmluZyB3b24ndCBjaGFuZ2UgdGhlIGNsZWFy
IHZhbHVlcy4KKyAgICB2YXIgY2xlYXJDb2xvciA9IGdsLmdldFBhcmFtZXRlcihnbC5DT0xPUl9D
TEVBUl9WQUxVRSk7CisgICAgc2hvdWxkQmUoImNsZWFyQ29sb3IiLCAiWzAsIDEsIDAsIDFdIik7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICdzaG91bGQgYmUgbm8g
ZXJyb3JzJyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoZ2wsIHBhcmFtcykgeworICAgIGRlYnVn
KCJUZXN0IGZvciBzdGVuY2lsIGJ1ZmZlcjogIiArIEpTT04uc3RyaW5naWZ5KHBhcmFtcykpOwor
ICAgIGxldCByZXNvbHZlID0gcGFyYW1zLmFsbG9jMiA/IHBhcmFtcy5hbGxvYzIgOiBwYXJhbXMu
YWxsb2MxOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oKTsKKyAg
ICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCByZXNvbHZlLncsIHJlc29sdmUuaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnRlcm5hbCBidWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0byAwIik7CisKKyAg
ICBnbC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAvLyBmaWxsIHRoZSBiYWNrIGJ1
ZmZlciBzbyB3ZSBrbm93IHRoYXQgcmVhZGluZyBiZWxvdyBoYXBwZW5zIGZyb20KKyAgICAvLyB0
aGUgcmVuZGVyYnVmZmVyLgorICAgIGdsLmNsZWFyU3RlbmNpbCgyKTsKKyAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIFNl
dCB1cCAoY29sb3Irc3RlbmNpbCkgbm9uLW11bHRpc2FtcGxlZCBidWZmZXIgdG8gYmxpdCB0byBh
bmQgcmVhZCBiYWNrIGZyb20uCisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIHZhciBi
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIHJlc29sdmUudywgcmVzb2x2ZS5oKTsKKyAgICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICB2YXIgc3RlbmNpbEJ1ZmZlciA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVS
QlVGRkVSLCBzdGVuY2lsQnVmZmVyKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJF
TkRFUkJVRkZFUiwgZ2wuU1RFTkNJTF9JTkRFWDgsIHJlc29sdmUudywgcmVzb2x2ZS5oKTsKKyAg
ICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9B
VFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworICAgIGlmIChnbC5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9D
T01QTEVURSkgeworICAgICAgICBkZWJ1ZygiU2tpcDogZnJhbWVidWZmZXIgaXMgYWxsb3dlZCB0
byBiZSBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVycm9ycycpOworICAg
IGdsLmNsZWFyU3RlbmNpbCgyKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwg
Z2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAw
LCByZXNvbHZlLncsIHJlc29sdmUuaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLCAyNTUs
IDAsIDI1NV0sCisgICAgICAgICAgICAgICAgICAgICAgICAidXNlciBidWZmZXIgaGFzIGJlZW4g
Y2xlYXJlZCB0byBncmVlbiIpOworCisgICAgLy8gU2V0IHVwIChzdGVuY2lsLW9ubHkpIG11bHRp
c2FtcGxlZCBidWZmZXIgdG8gdGVzdC4KKyAgICB2YXIgZmJvX20gPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvX20pOwor
ICAgIHZhciBidWZmZXJfbSA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBidWZmZXJfbSk7CisKKyAgICBpZiAocGFyYW1z
LmFsbG9jMSkgeworICAgICAgICBhbGxvY1N0b3JhZ2UocGFyYW1zLmFsbG9jMS53LCBwYXJhbXMu
YWxsb2MxLmgsIHBhcmFtcy5hbGxvYzEucyk7CisgICAgfQorICAgIGdsLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyX20pOworICAgIGlmIChwYXJhbXMuYWxsb2MyKSB7CisgICAgICAgIGlm
IChwYXJhbXMuYWxsb2MxKSB7CisgICAgICAgICAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiU2tpcDogZnJhbWVidWZmZXIgaXMgYWxsb3dlZCB0byBiZSBpbmNv
bXBsZXRlLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC8vIENsZWFyIHRoZSBGQk8gaW4gb3JkZXIgdG8gbWFrZSBzdXJlIGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyIGlzCisgICAgICAgICAgICAvLyBjb21taXR0ZWQuIChJbiBGaXJlZm94LCBm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciBpcyBkZWZlcnJlZCwgc28gdGhpcworICAgICAgICAgICAg
Ly8gaXMgbmVlZGVkIHRvIHRyaWdnZXIgdGhlIGJ1Zy4pCisgICAgICAgICAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgfQor
ICAgICAgICBhbGxvY1N0b3JhZ2UocGFyYW1zLmFsbG9jMi53LCBwYXJhbXMuYWxsb2MyLmgsIHBh
cmFtcy5hbGxvYzIucyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWxsb2NTdG9yYWdlKHdpZHRo
LCBoZWlnaHQsIHNhbXBsZXMpIHsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKAorICAgICAgICAgICAgZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVzLCBnbC5TVEVOQ0lM
X0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLAorICAgICAgICAgICAgInNob3VsZCBiZSBubyBlcnJvciBhZnRlciByZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoU1RFTkNJTF9JTkRFWDgpLiIpOworICAgIH0KKwor
ICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICBkZWJ1ZygiU2tpcDogZnJhbWVidWZmZXIg
aXMgYWxsb3dlZCB0byBiZSBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIGVy
cm9ycycpOworCisgICAgLy8gQmxpdCBmcm9tIG11bHRpc2FtcGxlZCBidWZmZXIgdG8gbm9uLW11
bHRpc2FtcGxlZCBidWZmZXIuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVC
VUZGRVIsIGZib19tKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgICBnbC5jbGVhclN0ZW5jaWwoMik7CisgICAgZ2wuY2xlYXIoZ2wuU1RFTkNJ
TF9CVUZGRVJfQklUKTsKKyAgICAvLyBCbGl0IHN0ZW5jaWwgZnJvbSBmYm9fbSAoc2hvdWxkIGJl
IGRlZmF1bHQgdmFsdWUgb2YgMCkgdG8gZmJvIChzaG91bGQgYmUgMikuCisgICAgZ2wuYmxpdEZy
YW1lYnVmZmVyKDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAorICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCByZXNvbHZlLncsIHJlc29sdmUuaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
Z2wuU1RFTkNJTF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAvLyBmYm8gc3RlbmNpbCBz
aG91bGQgbm93IGJlIDAuCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICdzaG91bGQgYmUgbm8gZXJyb3JzJyk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgLy8gRHJhdyBhIGJsdWUgcXVhZCAod2l0aCBzdGVuY2lsID0g
MSkgKHNob3VsZCBwYXNzIHRoZSBzdGVuY2lsIHRlc3Q6IDEgPiAwKQorICAgIGdsLnN0ZW5jaWxG
dW5jKGdsLkdSRUFURVIsIDEsIDB4ZmZmZmZmZmYpOworICAgIGdsLmVuYWJsZShnbC5TVEVOQ0lM
X1RFU1QpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAgd3R1LnNldEZsb2F0RHJh
d0NvbG9yKGdsLCBbMCwgMCwgMSwgMV0pOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHJlc29sdmUudywgcmVzb2x2ZS5oLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDI1NSwgMjU1XSk7CisKKyAgICBnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYm9fbSk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGJ1ZmZlcl9tKTsK
KyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZl
cihidWZmZXIpOworCisgICAgZ2wuY2FudmFzLndpZHRoICs9IDE7CisgICAgZ2wuY2FudmFzLmhl
aWdodCArPSAxOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICdz
aG91bGQgYmUgbm8gZXJyb3JzJyk7CisgICAgZGVidWcoJycpOworfQorCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVu
ZGVyYnVmZmVycy9yZWFkYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyYnVmZmVycy9yZWFkYnVmZmVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTZiZmQ2NTZhNDJkYTE1YWEwNGJmM2ExMDAwMWRmOTQ1NmE2MjNkZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJidWZmZXJzL3JlYWRidWZmZXIuaHRtbApAQCAtMCww
ICsxLDE3NCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+VGVzdCByZWFkQnVmZmVyIEFnYWluc3QgV2ViR0wgMjwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHJl
YWRpbmcgZnJvbSBmYm8iKTsKKwordmFyIGNsZWFyRHJhd2luZ2J1ZmZlciA9IGZ1bmN0aW9uKGNv
bG9yKSB7CisgIGdsLmNsZWFyQ29sb3IoY29sb3JbMF0gLyAyNTUsIGNvbG9yWzFdIC8gMjU1LCBj
b2xvclsyXSAvIDI1NSwgY29sb3JbM10gLyAyNTUpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKK30KKwordmFyIHZhbGlkYXRlUmVhZGluZ0Zyb21GcmFtZWJ1ZmZlciA9IGZ1bmN0
aW9uKGNvbG9yLCBleHBlY3RlZCwgbXNnKSB7CisgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJh
eSgxICogMSAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIHBpeGVscyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGV4cGVjdGVk
LCBtc2cpOworICBpZiAoZXhwZWN0ZWQgPT0gZ2wuTk9fRVJST1IpCisgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBjb2xvciwKKyAg
ICAidGhlIGNvbG9yIHNob3VsZCBiZSBbIiArIGNvbG9yICsgIl0iKTsKK30KKwordmFyIHNldHVw
UmVuZGVyYnVmZmVyID0gZnVuY3Rpb24oYXR0YWNobWVudCkgeworICB2YXIgcmVuZGVyYnVmZmVy
ID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVO
REVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIp
OworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgIHJldHVybiByZW5kZXJidWZmZXI7Cit9CisK
K3ZhciB0ZXN0UmVhZEJ1ZmZlck9uRGVmYXVsdEZCID0gZnVuY3Rpb24oKSB7CisgIGdsLnJlYWRC
dWZmZXIoZ2wuTk9ORSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAor
ICAgICAgImNhbGxpbmcgcmVhZEJ1ZmZlciB3aXRoIEdMX05PTkUgb24gdGhlIGRlZmF1bHQgZnJh
bWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQuIik7CisgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJh
eSgxICogMSAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIHBpeGVscyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLAorICAgICAgInNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiB3
aGVuIHJlYWRpbmcgZnJvbSBmcmFtZWJ1ZmZlciBhbmQgcmVhZCBidWZmZXIgaXMgR0xfTk9ORS4i
KTsKKyAgZ2wucmVhZEJ1ZmZlcihnbC5CQUNLKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsCisgICAgICAiY2FsbGluZyByZWFkQnVmZmVyIHdpdGggR0xfQkFDSyBvbiB0
aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICBnbC5yZWFkQnVm
ZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAiY2FsbGluZyByZWFkQnVmZmVyIHdpdGggR0xfQ09M
T1JfQVRUQUNITUVOVDAgb24gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRl
IElOVkFMSURfT1BFUkFUSU9OLiIpOworfQorCit2YXIgdGVzdFJlYWRCdWZmZXJPbkZCTyA9IGZ1
bmN0aW9uKCkgeworICBnbC5yZWFkQnVmZmVyKGdsLkJBQ0spOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICJjYWxsaW5nIHJlYWRCdWZmZXIg
d2l0aCBHTF9CQUNLIG9uIGZibyBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04uIik7
CisKKyAgZ2wucmVhZEJ1ZmZlcihnbC5OT05FKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsCisgICAgICAiY2FsbGluZyByZWFkQnVmZmVyIHdpdGggR0xfTk9ORSBvbiBm
Ym8gc2hvdWxkIHN1Y2NlZWQuIik7CisgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJheSgxICog
MSAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIHBpeGVscyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLAorICAgICAgInNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiB3aGVuIHJl
YWRpbmcgZnJvbSBmcmFtZWJ1ZmZlciBhbmQgcmVhZCBidWZmZXIgaXMgR0xfTk9ORS4iKTsKKyAg
Z2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgImNhbGxpbmcgcmVhZEJ1ZmZlciB3aXRoIEdMX0NP
TE9SX0FUVEFDSE1FTlQwIG9uIGZibyBzaG91bGQgc3VjY2VlZC4iKTsKKworICB2YXIgbWF4Q29s
b3JBdHRhY2htZW50cyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ09MT1JfQVRUQUNITUVOVFMp
OworICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgbWF4Q29sb3JBdHRhY2ht
ZW50cyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAor
ICAgICAgImNhbGxpbmcgcmVhZEJ1ZmZlciB3aXRoIEdMX0NPTE9SX0FUVEFDSE1FTlRpIHRoYXQg
ZXhjZWVkcyBNQVhfQ09MT1JfQVRUQUNITUVOVCBvbiBmYm8gc2hvdWxkIGdlbmVyYXRlIElOVkFM
SURfT1BFUkFUSU9OLiIpOworICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiY2FsbGluZyBy
ZWFkQnVmZmVyIHdpdGggR0xfQ09MT1JfQVRUQUNITUVOVDEgb24gdGhlIGZibyBzaG91bGQgc3Vj
Y2VlZC4iKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5SRUFEX0JVRkZFUiknLCAn
Z2wuQ09MT1JfQVRUQUNITUVOVDEnKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNhbnZhcy5n
ZXRDb250ZXh0Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcywgdW5kZWZpbmVkLCAyKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4
dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyByZWFkaW5nIGZy
b20gZnJhbWVidWZmZXIuIik7CisKKyAgLy8gVGVzdCBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZl
ci4gUmVhZCBidWZmZXIgaXMgR0xfQkFDSyBieSBkZWZhdWx0LgorICB2YXIgYmFja0NvbG9yID0g
WzAsIDAsIDAsIDI1NV07CisgIGNsZWFyRHJhd2luZ2J1ZmZlcihiYWNrQ29sb3IpOworICB2YWxp
ZGF0ZVJlYWRpbmdGcm9tRnJhbWVidWZmZXIoYmFja0NvbG9yLCBnbC5OT19FUlJPUiwKKyAgICAg
ICJzaG91bGQgYmUgbm8gZXJyb3JzIHdoZW4gcmVhZGluZyBmcm9tIEdMX0JBQ0sgb24gdGhlIGRl
ZmF1bHQgZnJhbWVidWZmZXIuIik7CisKKyAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5S
RUFEX0JVRkZFUiknLCAnZ2wuQkFDSycpOworICB0ZXN0UmVhZEJ1ZmZlck9uRGVmYXVsdEZCKCk7
CisKKyAgLy8gVGVzdCBvbiBmYm8uIFJlYWQgYnVmZmVyIGlzIEdMX0NPTE9SX0FUVEFDSE1FTlQw
IGJ5IGRlZmF1bHQKKyAgdmFyIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIHZhciBjb2xvcmJ1ZmZlciA9IHNl
dHVwUmVuZGVyYnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsKKyAgdmFyIHJlZCA9IFsyNTUs
IDAsIDAsIDI1NV07CisgIGNsZWFyRHJhd2luZ2J1ZmZlcihyZWQpOworICB2YWxpZGF0ZVJlYWRp
bmdGcm9tRnJhbWVidWZmZXIocmVkLCBnbC5OT19FUlJPUiwKKyAgICAgICJzaG91bGQgYmUgbm8g
ZXJyb3JzIHdoZW4gcmVhZGluZyBmcm9tIEdMX0NPTE9SX0FUVEFDSE1FTlQwIG9uIGZiby4iKTsK
KworICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFQURfQlVGRkVSKScsICdnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCcpOworICB0ZXN0UmVhZEJ1ZmZlck9uRkJPKCk7CisKKyAgLy8gVGVzdCBv
biB1c2VyIGRlZmluZWQgcmVhZCBidWZmZXIgKEdMX0NPTE9SX0FUVEFDSE1FTlQxKSB3aXRoIG9y
IHdpdGhvdXQgY29ycmVzcG9uZGluZyBpbWFnZSBvbiBmYm8uCisgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZmIpOworICB2YXIgY29sb3JidWZmZXIxID0gc2V0dXBSZW5kZXJi
dWZmZXIoZ2wuQ09MT1JfQVRUQUNITUVOVDEpOworICB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAy
NTVdOworICBnbC5kcmF3QnVmZmVycyhbZ2wuTk9ORSwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdKTsK
KyAgY2xlYXJEcmF3aW5nYnVmZmVyKGdyZWVuKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3IgYWZ0ZXIgc2V0dXAgYW5kIGNsZWFyIHJl
bmRlciBidWZmZXIiKTsKKyAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSk7Cisg
IHZhbGlkYXRlUmVhZGluZ0Zyb21GcmFtZWJ1ZmZlcihncmVlbiwgZ2wuTk9fRVJST1IsCisgICAg
ICAic2hvdWxkIGJlIG5vIGVycm9ycyB3aGVuIHJlYWRpbmcgZnJvbSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMSBvbiBmYm8uIik7CisgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVBRF9CVUZG
RVIpJywgJ2dsLkNPTE9SX0FUVEFDSE1FTlQxJyk7CisgIC8vIE5lZWQgdG8gcmVzZXQgZHJhdyBi
dWZmZXJzLCBvdGhlcndpc2UgaXQgdHJpZ2dlcnMgYSBtYWMgZHJpdmVyIGJ1Zy4KKyAgLy8gV2Ug
YWRkIGEgc2VwYXJhdGUgdGVzdCBmb3IgdGhhdCBidWc6IGNvbmZvcm1hbmNlMi9yZW5kZXJpbmcv
ZnJhbWVidWZmZXItY29tcGxldGVuZXNzLXVuYWZmZWN0ZWQuaHRtbAorICBnbC5kcmF3QnVmZmVy
cyhbZ2wuQ09MT1JfQVRUQUNITUVOVDBdKTsKKworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDEsIGdsLlJFTkRFUkJVRkZFUiwg
bnVsbCkKKyAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSk7CisgIHZhbGlkYXRl
UmVhZGluZ0Zyb21GcmFtZWJ1ZmZlcihudWxsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICJzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gd2hlbiByZWFkaW5nIGZyb20gR0xf
Q09MT1JfQVRUQUNITUVOVDEgYnV0IHRoaXMgYXR0YWNobWVudCBoYXMgbm8gaW1hZ2UgY3VycmVu
dGx5LiIpOworCisgIC8vIHN3aXRjaCB0byBhbm90aGVyIGZibywgcmVhZCBidWZmZXIgaXMgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIG5vdCBHTF9DT0xPUl9BVFRBQ0hNRU5UMQorICB2YXIgZmIxID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYjEpOworICB2YXIgYnVmZmVyID0gc2V0dXBSZW5kZXJidWZmZXIoZ2wuQ09MT1JfQVRU
QUNITUVOVDApOworICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFQURfQlVGRkVSKScs
ICdnbC5DT0xPUl9BVFRBQ0hNRU5UMCcpOworICB2YXIgYmx1ZSA9IFswLCAwLCAyNTUsIDI1NV07
CisgIGNsZWFyRHJhd2luZ2J1ZmZlcihibHVlKTsKKyAgdmFsaWRhdGVSZWFkaW5nRnJvbUZyYW1l
YnVmZmVyKGJsdWUsIGdsLk5PX0VSUk9SLAorICAgICAgInNob3VsZCBiZSBubyBlcnJvcnMgd2hl
biByZWFkaW5nIGZyb20gR0xfQ09MT1JfQVRUQUNITUVOVDAgb24gYW5vdGhlciBmYm8uIik7CisK
KyAgLy8gc3dpdGNoIGZyb20gZmJvIHRvIGRlZmF1bHQgZmIsIHJlYWQgYnVmZmVyIHdpbGwgc3dp
dGNoIHRvIEdMX0JBQ0sgZnJvbSBHTF9DT0xPUl9BVFRBQ0hNRU5UMAorICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVy
KGdsLlJFQURfQlVGRkVSKScsICdnbC5CQUNLJyk7CisgIHZhbGlkYXRlUmVhZGluZ0Zyb21GcmFt
ZWJ1ZmZlcihiYWNrQ29sb3IsIGdsLk5PX0VSUk9SLAorICAgICAgInNob3VsZCBiZSBubyBlcnJv
cnMgd2hlbiByZWFkaW5nIGZyb20gR0xfQkFDSyBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4i
KTsKKworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7CisgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZl
cihjb2xvcmJ1ZmZlcik7CisgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihjb2xvcmJ1ZmZlcjEpOwor
ICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYjEpOworICBnbC5kZWxldGVSZW5kZXJidWZmZXIoYnVm
ZmVyKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYXR0cmliLXR5
cGUtbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYXR0cmliLXR5cGUtbWF0Y2guaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YjFiMjg4NGFhZmU3ZDg3ZjBmYzViYTMwYWE4YzA4ZmIxY2JkYmVkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlbmRlcmluZy9hdHRyaWItdHlwZS1tYXRjaC5odG1sCkBAIC0wLDAgKzEsNTYx
IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0czogVmVydGV4IEF0dHJpYnV0ZSBUeXBlIE1hdGNo
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZGVza3RvcC1nbC1jb25z
dGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8
L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0
aW5nIGluc3RhbmNlZCBkcmF3cyAtLT4KKzxzY3JpcHQgaWQ9Im91dHB1dFZlcnRleFNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCBhUG9zaXRp
b247CitpbiBpdmVjMiBhT2Zmc2V0STsKK2luIHV2ZWMyIGFPZmZzZXRVOworaW4gdmVjNCBhQ29s
b3I7CitvdXQgdmVjNCB2Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgdkNvbG9yID0gYUNvbG9y
OworICAgIHZlYzIgb2Zmc2V0ID0gdmVjMihmbG9hdChhT2Zmc2V0SS54KSArIGZsb2F0KGFPZmZz
ZXRVLngpLAorICAgICAgICAgICAgICAgICAgICAgICBmbG9hdChhT2Zmc2V0SS55KSArIGZsb2F0
KGFPZmZzZXRVLnkpKTsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbiArIHZlYzQob2Zmc2V0
LCAwLjAsIDAuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ib3V0cHV0RnJhZ21lbnRT
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CitpbiB2ZWM0IHZDb2xvcjsKK291dCB2ZWM0IGZyYWdDb2xvcjsK
K3ZvaWQgbWFpbigpIHsKKyAgICBmcmFnQ29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBpZD0ndnNoYWRlcl9pbmFjdGl2ZV9hdHRyaWInIHR5cGU9J3gtc2hhZGVyL3gtdmVy
dGV4Jz4jdmVyc2lvbiAzMDAgZXMKK2luIGl2ZWM0IHA7CitpbiBpdmVjNCBhOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9J3ZzaGFkZXJfYWN0aXZlX2F0dHJpYl9pbnQnIHR5cGU9J3gtc2hhZGVyL3gtdmVydGV4Jz4j
dmVyc2lvbiAzMDAgZXMKK2luIGl2ZWM0IHA7CitpbiBpdmVjNCBhOworaW4gdXZlYzQgYjsKK3Zv
aWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHApICsgdmVjNChhKSArIHZlYzQo
Yik7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9J3ZzaGFkZXJfYWN0aXZlX2F0dHJpYl9mbG9h
dCcgdHlwZT0neC1zaGFkZXIveC12ZXJ0ZXgnPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCBwOwor
aW4gdmVjNCBhOworaW4gdmVjNCBjOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQocCkgKyB2ZWM0KGEpICsgdmVjNChjKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0n
ZnNoYWRlcicgdHlwZT0neC1zaGFkZXIveC1mcmFnbWVudCc+I3ZlcnNpb24gMzAwIGVzCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK2xheW91dChsb2NhdGlvbj0wKSBvdXQgdmVjNCBvQ29sb3I7
Cit2b2lkIG1haW4oKQoreworICAgIG9Db2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsK
K30KKzwvc2NyaXB0PgorCisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHZlcmlmaWVzIGFuIGFjdGl2ZSB2ZXJ0ZXggYXR0cmlidXRlJ3MgYmFzZSB0eXBl
IGhhcyB0byBtYXRjaCB0aGUgdmVyZXhBdHRyaWIgZnVuY3Rpb24gdHlwZS4iKTsKKworZGVidWco
IiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMsIG51bGwsIDIpOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBj
b250ZXh0IGV4aXN0cyIpOworCisgICAgdGVzdEdlbmVyaWNBdHRyaWJzKCk7CisgICAgcnVuVGVz
dHMoKTsKK30KKworZnVuY3Rpb24gdGVzdEdlbmVyaWNBdHRyaWJzKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVGVzdCBHZW5lcmljIFZlcnRleCBBdHRyaWJ1dGVzIGZvciBzb21lIGNv
cm5lciBjYXNlcyIpOworCisgICAgdmFyIHBJbmRleCA9IDI7CisgICAgdmFyIGFJbmRleCA9IDM7
CisgICAgdmFyIGJJbmRleCA9IDQ7CisgICAgdmFyIGNJbmRleCA9IDU7CisgICAgdmFyIHByb2dy
YW0wID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyX2luYWN0aXZlX2F0dHJpYiIsICJm
c2hhZGVyIl0sCisgICAgICAgIFsncCcsICdhJ10sIFtwSW5kZXgsIGFJbmRleF0pOworICAgIHZh
ciBwcm9ncmFtMSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlcl9hY3RpdmVfYXR0cmli
X2ludCIsICJmc2hhZGVyIl0sCisgICAgICAgIFsncCcsICdhJywgJ2InXSwgW3BJbmRleCwgYUlu
ZGV4LCBiSW5kZXhdKTsKKyAgICB2YXIgcHJvZ3JhbTIgPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBb
InZzaGFkZXJfYWN0aXZlX2F0dHJpYl9mbG9hdCIsICJmc2hhZGVyIl0sCisgICAgICAgIFsncCcs
ICdhJywgJ2MnXSwgW3BJbmRleCwgYUluZGV4LCBjSW5kZXhdKTsKKyAgICBpZiAoIXByb2dyYW0w
IHx8ICFwcm9ncmFtMSB8fCAhcHJvZ3JhbTIpIHsKKyAgICAgIHRlc3RGYWlsZWQoIlNldCB1cCBw
cm9ncmFtIGZhaWxlZCIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIEdMIGVycm9yIGZyb20gc2V0IHVwIik7CisKKyAg
ICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7CisKKyAgICBkZWJ1ZygiSW5hY3RpdmUgaW5wdXQg
aW4gdmVydGV4IHNoYWRlciIpOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbTApOworICAgIGds
LnZlcnRleEF0dHJpYkk0aShwSW5kZXgsIDEsIDAsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGluZyB1cCBzdWNjZWVkcyIpOworICAgIGdsLmRy
YXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgImRyYXdBcnJheXMgc3VjY2VlZHM6IHR5cGUgaW4gc2hhZGVyIG1pc21h
dGNoIGRlZmF1bHQgdmVydGV4IHR5cGUgaXMgdmFsaWQgZm9yIGluYWN0aXZlIGF0dHJpYiIpOwor
CisgICAgZ2wudmVydGV4QXR0cmliNGYoYUluZGV4LCAwLjAsIDEuMCwgMC4wLCAwLjApOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGluZyB1cCBzdWNjZWVk
cyIpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdBcnJheXMgc3VjY2VlZHM6IHR5cGUg
aW4gc2hhZGVyIG1pc21hdGNoIHZlcnRleEF0dHJpYiB0eXBlIGlzIHZhbGlkIGZvciBpbmFjdGl2
ZSBhdHRyaWIiKTsKKworICAgIGRlYnVnKCJhY3RpdmUgaW50L3VpbnQgaW5wdXRzIGluIHZlcnRl
eCBzaGFkZXIiKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0xKTsKKyAgICBnbC52ZXJ0ZXhB
dHRyaWJJNGkocEluZGV4LCAxLCAwLCAwLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlNldHRpbmcgdXAgc3VjY2VlZHMiKTsKKyAgICBnbC5kcmF3QXJyYXlz
KGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sICJUeXBlIG1pc21hdGNoOiB0eXBlIGluIHNoYWRlciBtaXNtYXRjaCB0
aGUgZGVmYXVsdCB0eXBlIGZvciBhIHZlcnRleCBhdHRyaWIiKTsKKyAgICBnbC52ZXJ0ZXhBdHRy
aWJJNGkoYUluZGV4LCAwLCAxLCAwLCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIlNldHRpbmcgdXAgc3VjY2VlZHMiKTsKKyAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJUeXBlIG1pc21hdGNoOiB0eXBlIGluIHNoYWRlciBtaXNtYXRjaCB0aGUg
ZGVmYXVsdCB0eXBlIGZvciBhIHZlcnRleCBhdHRyaWIiKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJ
NHVpKGJJbmRleCwgMCwgMCwgMSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJTZXR0aW5nIHVwIHN1Y2NlZWRzIik7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiZHJhd0FycmF5cyBzdWNjZWVkcyIpOworCisgICAgZGVidWcoImFjdGl2ZSBmbG9hdCBpbnB1
dCBpbiB2ZXJ0ZXggc2hhZGVyIik7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtMik7CisgICAg
Z2wudmVydGV4QXR0cmliNGYocEluZGV4LCAxLjAsIDAuMCwgMC4wLCAwLjApOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGluZyB1cCBzdWNjZWVkcyIpOwor
ICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlR5cGUgbWlzbWF0Y2g6IGdlbmVyaWMg
YXR0cmliIGlzIHZhbGlkIHBlciBjb250ZXh0LiAnYScgaXMgc2V0IHRvIGludCB0eXBlIGJ5IHBy
ZXZpb3VzIHRlc3QgY2FzZSIpOworICAgIGdsLnZlcnRleEF0dHJpYjRmKGFJbmRleCwgMC4wLCAx
LjAsIDAuMCwgMC4wKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
IlNldHRpbmcgdXAgc3VjY2VlZHMiKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJy
YXlzIHN1Y2NlZWRzOiBkZWZhdWx0IHR5cGUgb2YgZ2VuZXJpYyBhdHRyaWIgaXMgZmxvYXQiKTsK
K30KKworZnVuY3Rpb24gc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywg
Y29sb3JMb2MpIHsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJNGkob2Zmc2V0SUxvYywgLTEsIC0yLCAw
LCAwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJNHVpKG9mZnNldFVMb2MsIDEsIDIsIDAsIDApOwor
ICAgIGdsLnZlcnRleEF0dHJpYjRmKGNvbG9yTG9jLCAxLjAsIDAsIDAsIDEuMCk7Cit9CisKK2Z1
bmN0aW9uIHNldHVwQXR0cmliUG9pbnRlcnMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29sb3JM
b2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldElCdWZmZXIsIG9mZnNldFVC
dWZmZXIsIGNvbG9yQnVmZmVyKSB7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IG9mZnNldElCdWZmZXIpOworICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKG9mZnNldElMb2Ms
IDIsIGdsLklOVCwgMCwgMCk7CisKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
b2Zmc2V0VUJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIob2Zmc2V0VUxvYywg
MiwgZ2wuVU5TSUdORURfSU5ULCAwLCAwKTsKKworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxv
YywgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IHZlcnRleEF0dHJpYiB3aXRoIGRyYXdB
cnJheXMgYW5kIGRyYXdBcnJheXNJbnN0YW5jZWQiKTsKKworICAgIHZhciBpbnN0YW5jZUNvdW50
ID0gNDsKKworICAgIHZhciBwb3NpdGlvbkxvYyA9IDA7CisgICAgdmFyIG9mZnNldElMb2MgPSAy
OworICAgIHZhciBvZmZzZXRVTG9jID0gMzsKKyAgICB2YXIgY29sb3JMb2MgPSA0OworICAgIHZh
ciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJvdXRwdXRWZXJ0ZXhTaGFkZXIiLCAi
b3V0cHV0RnJhZ21lbnRTaGFkZXIiXSwKKyAgICAgICAgWydhUG9zaXRpb24nLCAnYU9mZnNldEkn
LCAnYU9mZnNldFUnLCdhQ29sb3InXSwKKyAgICAgICAgW3Bvc2l0aW9uTG9jLCBvZmZzZXRJTG9j
LCBvZmZzZXRVTG9jLCBjb2xvckxvY10pOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgdGVz
dEZhaWxlZCgiU2V0IHVwIHByb2dyYW0gZmFpbGVkIik7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gR0wgZXJyb3IgZnJv
bSBzZXQgdXAiKTsKKworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsKKworICAgIHNldHVw
QXR0cmliVmFsdWVzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jKTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldHRpbmcgdXAgc3VjY2VlZHMiKTsK
KyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJyYXlzIHN1Y2NlZWRzIik7CisgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBb
MjU1LCAwLCAwLCAyNTVdKTsKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xF
UywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJkcmF3QXJyYXlzSW5zdGFuY2VkIHN1Y2NlZWRzIik7CisgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbMjU1LCAw
LCAwLCAyNTVdKTsKKworICAgIGRlYnVnKCJpbnQgdHlwZSBmdW5jdGlvbiBvbiB1aW50IHR5cGUg
YXR0cmliIik7CisgICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywg
Y29sb3JMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYkk0aShvZmZzZXRVTG9jLCAxLCAyLCAwLCAw
KTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7Cisg
ICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAsIDYsIGluc3RhbmNlQ291
bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
dHlwZSBtaXNtYXRjaCIpOworCisgICAgZGVidWcoImZsb2F0IHR5cGUgZnVuY3Rpb24gb24gdWlu
dCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliVmFsdWVzKG9mZnNldElMb2MsIG9mZnNl
dFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0ZihvZmZzZXRVTG9jLCAxLjAs
IDIuMCwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNt
YXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCA2LCBp
bnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJ1aW50IHR5cGUgZnVuY3Rp
b24gb24gaW50IHR5cGUgYXR0cmliIik7CisgICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxv
Yywgb2Zmc2V0VUxvYywgY29sb3JMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYkk0dWkob2Zmc2V0
SUxvYywgMSwgMiwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlw
ZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAw
LCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJmbG9hdCB0eXBl
IGZ1bmN0aW9uIG9uIGludCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliVmFsdWVzKG9m
ZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0Zihv
ZmZzZXRJTG9jLCAxLjAsIDIuMCwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdM
RVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJ
QU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJp
bnQgdHlwZSBmdW5jdGlvbiBvbiBmbG9hdCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmli
VmFsdWVzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhB
dHRyaWJJNGkoY29sb3JMb2MsIDEsIDAsIDAsIDEpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJ
QU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGds
LlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisKKyAgICBkZWJ1
ZygidWludCB0eXBlIGZ1bmN0aW9uIG9uIGZsb2F0IHR5cGUgYXR0cmliIik7CisgICAgc2V0dXBB
dHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29sb3JMb2MpOworICAgIGdsLnZl
cnRleEF0dHJpYkk0dWkoY29sb3JMb2MsIDEsIDAsIDAsIDEpOworICAgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFu
Y2VkKGdsLlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgdmVydGV4QXR0cmliIHdpdGggZHJhd0VsZW1l
bnRzLCBkcmF3UmFuZ2VFbGVtZW50cywgYW5kIGRyYXdFbGVtZW50c0luc3RhbmNlZCIpOworICAg
IHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCAxLCAwKTsKKworICAgIGRlYnVnKCJDb3JyZWN0IHNl
dHVwIik7CisgICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29s
b3JMb2MpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGlu
ZyB1cCBzdWNjZWVkcyIpOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGds
LlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgImRyYXdFbGVtZW50cyBzdWNjZWVkcyIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSk7
CisgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJ
R05FRF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJkcmF3UmFuZ2VFbGVtZW50cyBzdWNjZWVkcyIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSk7
CisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdO
RURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIHN1Y2NlZWRzIik7CisgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBb
MjU1LCAwLCAwLCAyNTVdKTsKKworICAgIGRlYnVnKCJpbnQgdHlwZSBmdW5jdGlvbiBvbiB1aW50
IHR5cGUgYXR0cmliIik7CisgICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0
VUxvYywgY29sb3JMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYkk0aShvZmZzZXRVTG9jLCAxLCAy
LCAwLCAwKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05F
RF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wuVFJJ
QU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisgICAg
Z2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hP
UlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworCisgICAgZGVidWcoImZsb2F0IHR5
cGUgZnVuY3Rpb24gb24gdWludCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliVmFsdWVz
KG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0
ZihvZmZzZXRVTG9jLCAxLjAsIDIuMCwgMCwgMCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRy
YXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgNSwgNiwgZ2wuVU5TSUdORURfU0hPUlQs
IDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
dHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdM
RVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsK
KworICAgIGRlYnVnKCJ1aW50IHR5cGUgZnVuY3Rpb24gb24gaW50IHR5cGUgYXR0cmliIik7Cisg
ICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29sb3JMb2MpOwor
ICAgIGdsLnZlcnRleEF0dHJpYkk0dWkob2Zmc2V0SUxvYywgMSwgMiwgMCwgMCk7CisgICAgZ2wu
ZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNt
YXRjaCIpOworICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgNSwgNiwg
Z2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdFbGVtZW50c0lu
c3RhbmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNv
dW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
InR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJmbG9hdCB0eXBlIGZ1bmN0aW9uIG9uIGlu
dCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliVmFsdWVzKG9mZnNldElMb2MsIG9mZnNl
dFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0ZihvZmZzZXRJTG9jLCAxLjAs
IDIuMCwgMCwgMCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5T
SUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGds
LlRSSUFOR0xFUywgMCwgNSwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOwor
ICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVE
X1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJpbnQg
dHlwZSBmdW5jdGlvbiBvbiBmbG9hdCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliVmFs
dWVzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRy
aWJJNGkoY29sb3JMb2MsIDEsIDAsIDAsIDEpOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklB
TkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3
UmFuZ2VFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAw
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5
cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVT
LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisK
KyAgICBkZWJ1ZygidWludCB0eXBlIGZ1bmN0aW9uIG9uIGZsb2F0IHR5cGUgYXR0cmliIik7Cisg
ICAgc2V0dXBBdHRyaWJWYWx1ZXMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29sb3JMb2MpOwor
ICAgIGdsLnZlcnRleEF0dHJpYkk0dWkoY29sb3JMb2MsIDEsIDAsIDAsIDEpOworICAgIGdsLmRy
YXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0
Y2giKTsKKyAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGds
LlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3RWxlbWVudHNJbnN0
YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3Vu
dCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0
eXBlIG1pc21hdGNoIik7CisKKworICAgIHZhciBvZmZzZXRJQnVmZmVyID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldElCdWZmZXIp
OworICAgIHZhciBvZmZzZXRJID0gbmV3IEludDMyQXJyYXkoWy0xLCAtMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLTEsIC0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAt
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0yXSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5B
UlJBWV9CVUZGRVIsIG9mZnNldEksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIHZhciBvZmZzZXRV
QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIG9mZnNldFVCdWZmZXIpOworICAgIHZhciBvZmZzZXRVID0gbmV3IFVpbnQzMkFycmF5
KFsxLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyXSk7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldFUsIGdsLlNUQVRJQ19EUkFXKTsKKwor
ICAgIHZhciBvZmZzZXRGQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldEZCdWZmZXIpOworICAgIHZhciBvZmZzZXRGID0g
bmV3IEZsb2F0MzJBcnJheShbMS4wLCAyLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjAsIDIuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MCwgMi4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wLCAyLjAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjAsIDIuMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCwgMi4wXSk7CisgICAgZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIG9mZnNldEYsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIHZhciBjb2xv
ckJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXko
WzAuMCwgMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4wLCAxLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjAsIDEuMCwgMC4wLCAxLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MCwgMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4w
LCAxLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAs
IDEuMCwgMC4wLCAxLjBdKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29s
b3JzLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2YXIgY29sb3JVQnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yVUJ1ZmZl
cik7CisgICAgdmFyIGNvbG9yc1UgPSBuZXcgVWludDMyQXJyYXkoWzAsIDEsIDAsIDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDEsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDEsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEs
IDAsIDFdKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JzVSwgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob2Zmc2V0SUxv
Yyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob2Zmc2V0VUxvYyk7CisgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2MpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJUZXN0IHZlcnRleEF0dHJpYntJfVBvaW50ZXIgd2l0aCBkcmF3QXJyYXlzIGFuZCBk
cmF3QXJyYXlzSW5zdGFuY2VkIik7CisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDApOworCisg
ICAgZGVidWcoIkNvcnJlY3Qgc2V0dXAiKTsKKyAgICBzZXR1cEF0dHJpYlBvaW50ZXJzKG9mZnNl
dElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0SUJ1ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGluZyB1cCBzdWNjZWVkcyIpOworICAgIGds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgImRyYXdBcnJheXMgc3VjY2VlZHMiKTsKKyAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIFswLCAyNTUs
IDAsIDI1NV0pOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCA2
LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImRyYXdBcnJheXNJbnN0YW5jZWQgc3VjY2VlZHMiKTsKKyAgICB3dHUuY2hlY2tDYW52YXNS
ZWN0KGdsLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIFswLCAyNTUsIDAsIDI1
NV0pOworCisgICAgZGVidWcoInZlcnRleEF0dHJpYklQb2ludGVyIHdpdGggaW50IHR5cGUgb24g
dWludCB0eXBlIGF0dHJpYiIpOworICAgIHNldHVwQXR0cmliUG9pbnRlcnMob2Zmc2V0SUxvYywg
b2Zmc2V0VUxvYywgY29sb3JMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRJQnVm
ZmVyLCBvZmZzZXRVQnVmZmVyLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIG9mZnNldElCdWZmZXIpOworICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVy
KG9mZnNldFVMb2MsIDIsIGdsLklOVCwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklB
TkdMRVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wu
VFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVn
KCJ2ZXJ0ZXhBdHRyaWJQb2ludGVyIG9uIHVpbnQgdHlwZSBhdHRyaWIiKTsKKyAgICBzZXR1cEF0
dHJpYlBvaW50ZXJzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jLAorICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0SUJ1ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIp
OworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRGQnVmZmVyKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldFVMb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIp
OworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5j
ZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJWZXJ0ZXhBdHRyaWJJUG9pbnRlciB3
aXRoIHVpbnQgdHlwZSBvbiBpbnQgdHlwZSBhdHRyaWIiKTsKKyAgICBzZXR1cEF0dHJpYlBvaW50
ZXJzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0SUJ1ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRVQnVmZmVyKTsKKyAgICBnbC52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihvZmZzZXRJTG9jLCAyLCBnbC5VTlNJR05FRF9JTlQsIDAsIDApOwor
ICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBn
bC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBl
IG1pc21hdGNoIik7CisKKyAgICBkZWJ1ZygidmVydGV4QXR0cmliUG9pbnRlciBvbiBpbnQgdHlw
ZSBhdHRyaWIiKTsKKyAgICBzZXR1cEF0dHJpYlBvaW50ZXJzKG9mZnNldElMb2MsIG9mZnNldFVM
b2MsIGNvbG9yTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SUJ1ZmZlciwgb2Zm
c2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBvZmZzZXRGQnVmZmVyKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldElM
b2MsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklB
TkdMRVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wu
VFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVn
KCJ2ZXJ0ZXhBdHRyaWJJUG9pbnRlciB3aXRoIHVpbnQgdHlwZSBvbiBmbG9hdCB0eXBlIGF0dHJp
YiIpOworICAgIHNldHVwQXR0cmliUG9pbnRlcnMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29s
b3JMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRJQnVmZmVyLCBvZmZzZXRVQnVm
ZmVyLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNv
bG9yVUJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIoY29sb3JMb2MsIDQsIGds
LlVOU0lHTkVEX0lOVCwgMCwgMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
dHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVT
LCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKworICAgIGRlYnVnKCJ2ZXJ0ZXhB
dHRyaWJJUG9pbnRlciB3aXRoIGludCB0eXBlIG9uIGZsb2F0IHR5cGUgYXR0cmliIik7CisgICAg
c2V0dXBBdHRyaWJQb2ludGVycyhvZmZzZXRJTG9jLCBvZmZzZXRVTG9jLCBjb2xvckxvYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldElCdWZmZXIsIG9mZnNldFVCdWZmZXIsIGNvbG9y
QnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JVQnVmZmVy
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb2xvckxvYywgNCwgZ2wuSU5ULCAwLCAw
KTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7Cisg
ICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAsIDYsIGluc3RhbmNlQ291
bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
dHlwZSBtaXNtYXRjaCIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IHZlcnRl
eEF0dHJpYntJfVBvaW50ZXIgd2l0aCBkcmF3RWxlbWVudHMsIGRyYXdSYW5nZUVsZW1lbnRzLCBh
bmQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkIik7CisgICAgd3R1LnNldHVwSW5kZXhlZFF1YWQoZ2ws
IDEsIDApOworCisgICAgZGVidWcoIkNvcnJlY3Qgc2V0dXAiKTsKKyAgICBzZXR1cEF0dHJpYlBv
aW50ZXJzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jLAorICAgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0SUJ1ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dGluZyB1cCBzdWNjZWVk
cyIpOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NI
T1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdF
bGVtZW50cyBzdWNjZWVkcyIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgZ2wuZHJh
d1JhbmdlRWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwg
MCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3UmFuZ2VF
bGVtZW50cyBzdWNjZWVkcyIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgZ2wuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAs
IGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIHN1Y2NlZWRzIik7CisgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbMCwgMjU1LCAwLCAy
NTVdKTsKKworICAgIGRlYnVnKCJ2ZXJ0ZXhBdHRyaWJJUG9pbnRlciB3aXRoIGludCB0eXBlIG9u
IHVpbnQgdHlwZSBhdHRyaWIiKTsKKyAgICBzZXR1cEF0dHJpYlBvaW50ZXJzKG9mZnNldElMb2Ms
IG9mZnNldFVMb2MsIGNvbG9yTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SUJ1
ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29sb3JCdWZmZXIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCBvZmZzZXRJQnVmZmVyKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRl
cihvZmZzZXRVTG9jLCAyLCBnbC5JTlQsIDAsIDApOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5U
UklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5k
cmF3UmFuZ2VFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
InR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5H
TEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7
CisKKyAgICBkZWJ1ZygidmVydGV4QXR0cmliUG9pbnRlciBvbiB1aW50IHR5cGUgYXR0cmliIik7
CisgICAgc2V0dXBBdHRyaWJQb2ludGVycyhvZmZzZXRJTG9jLCBvZmZzZXRVTG9jLCBjb2xvckxv
YywKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldElCdWZmZXIsIG9mZnNldFVCdWZmZXIs
IGNvbG9yQnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0
RkJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihvZmZzZXRVTG9jLCAyLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYs
IGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3UmFuZ2VFbGVt
ZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0
Y2giKTsKKyAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5V
TlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisKKyAgICBkZWJ1
ZygiVmVydGV4QXR0cmliSVBvaW50ZXIgd2l0aCB1aW50IHR5cGUgb24gaW50IHR5cGUgYXR0cmli
Iik7CisgICAgc2V0dXBBdHRyaWJQb2ludGVycyhvZmZzZXRJTG9jLCBvZmZzZXRVTG9jLCBjb2xv
ckxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldElCdWZmZXIsIG9mZnNldFVCdWZm
ZXIsIGNvbG9yQnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zm
c2V0VUJ1ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIob2Zmc2V0SUxvYywgMiwg
Z2wuVU5TSUdORURfSU5ULCAwLCAwKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVT
LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisgICAgZ2wuZHJhd1Jhbmdl
RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1p
c21hdGNoIik7CisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwg
Z2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworCisgICAg
ZGVidWcoInZlcnRleEF0dHJpYlBvaW50ZXIgb24gaW50IHR5cGUgYXR0cmliIik7CisgICAgc2V0
dXBBdHRyaWJQb2ludGVycyhvZmZzZXRJTG9jLCBvZmZzZXRVTG9jLCBjb2xvckxvYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldElCdWZmZXIsIG9mZnNldFVCdWZmZXIsIGNvbG9yQnVm
ZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0RkJ1ZmZlcik7
CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihvZmZzZXRJTG9jLCAyLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lH
TkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5U
UklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAg
ICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9T
SE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisKKyAgICBkZWJ1ZygidmVydGV4
QXR0cmliSVBvaW50ZXIgd2l0aCB1aW50IHR5cGUgb24gZmxvYXQgdHlwZSBhdHRyaWIiKTsKKyAg
ICBzZXR1cEF0dHJpYlBvaW50ZXJzKG9mZnNldElMb2MsIG9mZnNldFVMb2MsIGNvbG9yTG9jLAor
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SUJ1ZmZlciwgb2Zmc2V0VUJ1ZmZlciwgY29s
b3JCdWZmZXIpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvclVCdWZm
ZXIpOworICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKGNvbG9yTG9jLCA0LCBnbC5VTlNJR05F
RF9JTlQsIDAsIDApOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVO
U0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKKyAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhn
bC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsK
KyAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05F
RF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0eXBlIG1pc21hdGNoIik7CisKKyAgICBkZWJ1ZygidmVy
dGV4QXR0cmliSVBvaW50ZXIgd2l0aCBpbnQgdHlwZSBvbiBmbG9hdCB0eXBlIGF0dHJpYiIpOwor
ICAgIHNldHVwQXR0cmliUG9pbnRlcnMob2Zmc2V0SUxvYywgb2Zmc2V0VUxvYywgY29sb3JMb2Ms
CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRJQnVmZmVyLCBvZmZzZXRVQnVmZmVyLCBj
b2xvckJ1ZmZlcik7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yVUJ1
ZmZlcik7CisgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIoY29sb3JMb2MsIDQsIGdsLklOVCwg
MCwgMCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURf
U0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFO
R0xFUywgMCwgNSwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidHlwZSBtaXNtYXRjaCIpOworICAgIGds
LmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgInR5cGUgbWlzbWF0Y2giKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0b2Zib3VuZHMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRlci1vdXRvZmJvdW5kcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYxZmRhMTYyZDVhOTFhMmUxMzNlNThjOTAxMGM0MjBhMWQxODNiYWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0b2Zib3VuZHMu
aHRtbApAQCAtMCwwICsxLDE3MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQmxpdEZyYW1lYnVmZmVyIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iOCIgaGVpZ2h0PSI4
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9u
YWxpdHkgb2YgYmxpdEZyYW1lYnVmZmVyIHdoZW4gc3JjL2RzdCByZWdpb24gYXJlIG91dC1vZi1i
b3VuZHMuIik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiLCB1bmRl
ZmluZWQsIDIpOworCitmdW5jdGlvbiBjaGVja1BpeGVsKGNvbG9yLCBleHBlY3RlZENvbG9yKSB7
CisgIHZhciB0b2xlcmFuY2UgPSAzOworICByZXR1cm4gKE1hdGguYWJzKGNvbG9yWzBdIC0gZXhw
ZWN0ZWRDb2xvclswXSkgPD0gdG9sZXJhbmNlICYmCisgICAgICAgICAgTWF0aC5hYnMoY29sb3Jb
MV0gLSBleHBlY3RlZENvbG9yWzFdKSA8PSB0b2xlcmFuY2UgJiYKKyAgICAgICAgICBNYXRoLmFi
cyhjb2xvclsyXSAtIGV4cGVjdGVkQ29sb3JbMl0pIDw9IHRvbGVyYW5jZSAmJgorICAgICAgICAg
IE1hdGguYWJzKGNvbG9yWzNdIC0gZXhwZWN0ZWRDb2xvclszXSkgPD0gdG9sZXJhbmNlKTsKK30K
KworZnVuY3Rpb24gYmxpdGZyYW1lYnVmZmVyX2ZpbHRlcl9vdXRvZmJvdW5kcyhyZWFkYnVmZmVy
Rm9ybWF0LCBkcmF3YnVmZmVyRm9ybWF0LCBmaWx0ZXIpIHsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImJsaXR0aW5nIHBpeGVscyBvdXQtb2YtYm91bmRzLCByZWFkIGJ1ZmZlciBmb3JtYXQg
aXM6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHJlYWRidWZmZXJGb3JtYXQpICsgIiwgZHJh
dyBidWZmZXIgZm9ybWF0IGlzOiAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBkcmF3YnVmZmVy
Rm9ybWF0KSArICIsIGZpbHRlciBpczogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZmlsdGVy
KSk7CisKKyAgICAvLyBJbml0aWF0ZSBkYXRhIHRvIHJlYWQgZnJhbWVidWZmZXIKKyAgICB2YXIg
c2l6ZSA9IDg7CisgICAgdmFyIHVpbnRfcmVhZCA9IG5ldyBVaW50OEFycmF5KHNpemUgKiBzaXpl
ICogNCk7CisgICAgdmFyIGNvbG9yID0gMHgyMDsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
c2l6ZSAqIHNpemUgKiA0OyBpaSArPSA0KSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamog
PCAzOyArK2pqKSB7CisgICAgICAgICAgdWludF9yZWFkW2lpICsgampdID0gY29sb3I7CisgICAg
ICAgIH0KKyAgICAgICAgdWludF9yZWFkW2lpICsgM10gPSAweGZmOworICAgIH0KKworICAgIC8v
IENyZWF0ZSByZWFkIGZyYW1lYnVmZmVyIGFuZCBmZWVkIGRhdGEgdG8gcmVhZCBidWZmZXIKKyAg
ICAvLyBSZWFkIGJ1ZmZlciBtYXkgaGF2ZSBzcmdiIGltYWdlCisgICAgdmFyIHRleF9yZWFkID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eF9yZWFkKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHJlYWRidWZmZXJG
b3JtYXQsIHNpemUsIHNpemUsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnRfcmVh
ZCk7CisKKyAgICB2YXIgZmJvX3JlYWQgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleF9yZWFkLCAwKTsKKworICAgIC8vIENyZWF0ZSBkcmF3
IGZyYW1lYnVmZmVyLiBDb2xvciBpbiBkcmF3IGJ1ZmZlciBpcyBpbml0aWFsaXplZCB0byAwLgor
ICAgIC8vIERyYXcgYnVmZmVyIG1heSBoYXZlIHNyZ2IgaW1hZ2UKKyAgICB2YXIgdGV4X2RyYXcg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4X2RyYXcpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZHJhd2J1ZmZl
ckZvcm1hdCwgc2l6ZSwgc2l6ZSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisKKyAgICB2YXIgZmJvX2RyYXcgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIHRleF9kcmF3LCAwKTsKKworICAgIGlmIChnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLlJFQURfRlJBTUVCVUZGRVIpID09IGdsLkZSQU1FQlVGRkVSX0NPTVBM
RVRFKSB7CisgICAgICAgIC8vIEJsaXQgcmVhZCBmcmFtZWJ1ZmZlciB0byB0aGUgaW1hZ2UgaW4g
ZHJhdyBmcmFtZWJ1ZmZlci4KKyAgICAgICAgdmFyIHRlc3RzID0gWworICAgICAgICAgICAgLy8g
W3NyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMV0K
KworICAgICAgICAgICAgeyBhcmdzOiBbLTIsIC0yLCA0LCA0LCAxLCAxLCA0LCA0XSwgY2hhbmdl
ZERzdFJlY3Q6IFsyLCAyLCA0LCA0XSwgZGVzYzogJ29ubHkgc3JjIHJlZ2lvbiBpcyBvdXQtb2Yt
Ym91bmRzLCBkc3QgcmVnaW9uIGhhcyBkaWZmZXJlbnQgd2lkdGgvaGVpZ2h0IGFzIHNyYyByZWdp
b24uJ30sCisgICAgICAgICAgICB7IGFyZ3M6IFstMiwgLTIsIDQsIDQsIDEsIDEsIDcsIDddLCBj
aGFuZ2VkRHN0UmVjdDogWzMsIDMsIDcsIDddLCBkZXNjOiAnb25seSBzcmMgcmVnaW9uIGlzIG91
dC1vZi1ib3VuZHMsIGRzdCByZWdpb24gaGFzIHRoZSBzYW1lIHdpZHRoL2hlaWdodCBhcyBzcmMg
cmVnaW9uLid9LAorICAgICAgICAgICAgeyBhcmdzOiBbMCwgMCwgNiwgNiwgNywgNywgMTAsIDEw
XSwgY2hhbmdlZERzdFJlY3Q6IFs3LCA3LCA4LCA4XSwgZGVzYzogJ29ubHkgZHN0IHJlZ2lvbiBp
cyBvdXQtb2YtYm91bmRzLCBkc3QgcmVnaW9uIGhhcyBkaWZmZXJlbnQgd2lkdGgvaGVpZ2h0IGFz
IHNyYyByZWdpb24gYWZ0ZXIgZHN0IHJlZ2lvbiBpcyBjbGlwcGVkIHRvIHRoZSBib3VuZHMgb2Yg
ZHJhdyBidWZmZXIuJ30sCisgICAgICAgICAgICB7IGFyZ3M6IFswLCAwLCA2LCA2LCA0LCA0LCAx
MCwgMTBdLCBjaGFuZ2VkRHN0UmVjdDogWzQsIDQsIDgsIDhdLCBkZXNjOiAnb25seSBkc3QgcmVn
aW9uIGlzIG91dC1vZi1ib3VuZHMsIGRzdCByZWdpb24gaGFzIHRoZSBzYW1lIHdpZHRoL2hlaWdo
dCBhcyBzcmMgcmVnaW9uIGFmdGVyIGRzdCByZWdpb24gaXMgY2xpcHBlZCB0byB0aGUgYm91bmRz
IG9mIGRyYXcgYnVmZmVyLid9LAorICAgICAgICAgICAgeyBhcmdzOiBbLTIsIC0yLCA0LCA0LCA3
LCA3LCAxMCwgMTBdLCBjaGFuZ2VkRHN0UmVjdDogWzgsIDgsIDgsIDhdLCBkZXNjOiAnYm90aCBz
cmMgYW5kIGRzdCByZWdpb24gYXJlIG91dC1vZi1ib3VuZHMsIGRzdCByZWdpb24gaGFzIGRpZmZl
cmVudCB3aWR0aC9oZWlnaHQgYXMgc3JjIHJlZ2lvbiBhZnRlciBkc3QgcmVnaW9uIGlzIGNsaXBw
ZWQgdG8gdGhlIGJvdW5kcyBvZiBkcmF3IGJ1ZmZlci4nfSwKKyAgICAgICAgICAgIHsgYXJnczog
Wy0yLCAtMiwgNCwgNCwgNCwgNCwgMTAsIDEwXSwgY2hhbmdlZERzdFJlY3Q6IFs2LCA2LCA4LCA4
XSwgZGVzYzogJ2JvdGggc3JjIGFuZCBkc3QgcmVnaW9uIGFyZSBvdXQtb2YtYm91bmRzLCBkc3Qg
cmVnaW9uIGhhcyB0aGUgc2FtZSB3aWR0aC9oZWlnaHQgYXMgc3JjIHJlZ2lvbiBhZnRlciBkc3Qg
cmVnaW9uIGlzIGNsaXBwZWQgdG8gdGhlIGJvdW5kcyBvZiBkcmF3IGJ1ZmZlci4nfSwKKyAgICAg
ICAgICAgIHsgYXJnczogWy0yLCAtMiwgNCwgNCwgMiwgMiwgMTAsIDEwXSwgY2hhbmdlZERzdFJl
Y3Q6IFsyICsgMi82KjgsIDIgKyAyLzYqOCwgOCwgOF0sIGRlc2M6ICdib3RoIHNyYyBhbmQgZHN0
IHJlZ2lvbiBhcmUgb3V0LW9mLWJvdW5kcy4gVGhlcmUgYXJlIHNvbWUgZHN0IHBpeGVscyAoeCBh
bmQgeSBhcmUgd2l0aGluIFs0LCA4XSAsIGFuZCB4IG9yIHkgZXF1YWxzIHRvIDQpIHdob3NlIGNv
cnJlc3BvbmRpbmcgc3JjIHBpeGVscyBhcmUgcGFydGlhbGx5IGluc2lkZSBhbmQgcGFydGlhbGx5
IG91dHNpZGUgdGhlIHJlYWwgc2FtcGxpbmcgYXJlYSBvZiB0aGUgc3JjIHJlZ2lvbiAodGhlIHJl
YWwgc2FtcGxpbmcgYXJlYSBpcyBbMCwgMCwgNCwgNF0pLiBCdXQgdGhlIGNlbnRlcnMgb2Ygc3Vj
aCBzcmMgcGl4ZWxzIGFyZSBseWluZyBvdXRzaWRlIHRoZSByZWFsIHNhbXBsaW5nIGFyZWEuJ30s
CisgICAgICAgICAgICB7IGFyZ3M6IFstMiwgLTIsIDQsIDQsIDMsIDMsIDEwLCAxMF0sIGNoYW5n
ZWREc3RSZWN0OiBbNSwgNSwgOCwgOF0sIGRlc2M6ICdib3RoIHNyYyBhbmQgZHN0IHJlZ2lvbiBh
cmUgb3V0LW9mLWJvdW5kcy4gVGhlcmUgYXJlIHNvbWUgZHN0IHBpeGVscyAoeCBhbmQgeSBhcmUg
d2l0aGluIFs0LCA3XSAsIGFuZCB4IG9yIHkgZXF1YWxzIHRvIDUpIHdob3NlIGNvcnJlc3BvbmRp
bmcgc3JjIHBpeGVscyBhcmUgcGFydGlhbGx5IGluc2lkZSBhbmQgcGFydGlhbGx5IG91dHNpZGUg
dGhlIHJlYWwgc2FtcGxpbmcgYXJlYSBvZiB0aGUgc3JjIHJlZ2lvbiAodGhlIHJlYWwgc2FtcGxp
bmcgYXJlYSBpcyBbMCwgMCwgNCwgNF0pLiBCdXQgdGhlIGNlbnRlcnMgb2Ygc3VjaCBzcmMgcGl4
ZWxzIGFyZSBseWluZyBpbnNpZGUgdGhlIHJlYWwgc2FtcGxpbmcgYXJlYS4nfSwKKyAgICAgICAg
ICAgIHsgYXJnczogWy0yLCAtMiwgNCwgNCwgMTAsIDEwLCAyLCAyXSwgY2hhbmdlZERzdFJlY3Q6
IFsyLCAyLCA3LCA3XSwgZGVzYzogJ2JvdGggc3JjIGFuZCBkc3QgcmVnaW9uIGFyZSBvdXQtb2Yt
Ym91bmRzLCBhbmQgdGhlIGRzdCBjb29yZGluYXRlcyBhcmUgcmV2ZXJzZWQuIFRoZXJlIGFyZSBz
b21lIGRzdCBwaXhlbHMgKHggYW5kIHkgYXJlIHdpdGhpbiBbMiwgN10gLCBhbmQgeCBvciB5IGVx
dWFscyB0byA3KSB3aG9zZSBjb3JyZXNwb25kaW5nIHNyYyBwaXhlbHMgYXJlIHBhcnRpYWxseSBp
bnNpZGUgYW5kIHBhcnRpYWxseSBvdXRzaWRlIHRoZSByZWFsIHNhbXBsaW5nIGFyZWEgb2YgdGhl
IHNyYyByZWdpb24gKHRoZSByZWFsIHNhbXBsaW5nIGFyZWEgaXMgWzAsIDAsIDQsIDRdKS4gQnV0
IHRoZSBjZW50ZXJzIG9mIHN1Y2ggc3JjIHBpeGVscyBhcmUgbHlpbmcgb3V0c2lkZSB0aGUgcmVh
bCBzYW1wbGluZyBhcmVhLid9LAorICAgICAgICAgICAgeyBhcmdzOiBbLTIsIC0yLCA0LCA0LCAx
MCwgMTAsIDMsIDNdLCBjaGFuZ2VkRHN0UmVjdDogWzMsIDMsIDgsIDhdLCBkZXNjOiAnYm90aCBz
cmMgYW5kIGRzdCByZWdpb24gYXJlIG91dC1vZi1ib3VuZHMsIGFuZCB0aGUgZHN0IGNvb3JkaW5h
dGVzIGFyZSByZXZlcnNlZC4gVGhlcmUgYXJlIHNvbWUgZHN0IHBpeGVscyAoeCBhbmQgeSBhcmUg
d2l0aGluIFszLCA3XSAsIGFuZCB4IG9yIHkgZXF1YWxzIHRvIDcpIHdob3NlIGNvcnJlc3BvbmRp
bmcgc3JjIHBpeGVscyBhcmUgcGFydGlhbGx5IGluc2lkZSBhbmQgcGFydGlhbGx5IG91dHNpZGUg
dGhlIHJlYWQgc2FtcGxpbmcgYXJlYSBvZiB0aGUgc3JjIHJlZ2lvbiAodGhlIHJlYWwgc2FtcGxp
bmcgYXJlYSBpcyBbMCwgMCwgNCwgNF0pLiBCdXQgdGhlIGNlbnRlcnMgb2Ygc3VjaCBzcmMgcGl4
ZWxzIGFyZSBseWluZyBpbnNpZGUgdGhlIHJlYWwgc2FtcGxpbmcgYXJlYS4nfSwKKyAgICAgICAg
XTsKKworICAgICAgICB2YXIgcmVhZGJ1ZmZlckhhc1NSR0JJbWFnZSA9IChyZWFkYnVmZmVyRm9y
bWF0ID09IGdsLlNSR0I4X0FMUEhBOCk7CisgICAgICAgIHZhciBkcmF3YnVmZmVySGFzU1JHQklt
YWdlID0gKGRyYXdidWZmZXJGb3JtYXQgPT0gZ2wuU1JHQjhfQUxQSEE4KTsKKworICAgICAgICBm
b3IgKGNvbnN0IHRlc3Qgb2YgdGVzdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSB0ZXN0
LmFyZ3M7CisgICAgICAgICAgICBjb25zdCBjaGFuZ2VkRHN0UmVjdCA9IHRlc3QuY2hhbmdlZERz
dFJlY3Q7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiQm90aCB0
aGUgcmVhZCBmcmFtZWJ1ZmZlciBhbmQgZHJhdyBmcmFtZWJ1ZmZlciBib3VuZHMgYXJlIFswLCAw
LCA4LCA4XSIpOworICAgICAgICAgICAgZGVidWcoYEJsaXR0aW5nIGZyb20gc3JjIHJlZ2lvbiBb
JHthcmdzLnNsaWNlKDAsIDQpfV0gdG8gZHN0IHJlZ2lvbiBbJHthcmdzLnNsaWNlKDQsIDgpfV1g
KTsKKyAgICAgICAgICAgIGRlYnVnKGBFeHBlY3RzIGNoYW5nZWQgZHN0IHJlZ2lvbiBvZiBbJHtj
aGFuZ2VkRHN0UmVjdH1dYCk7CisgICAgICAgICAgICBkZWJ1ZyhgRXhwbGFpbmF0aW9uOiAke3Rl
c3QuZGVzY31gKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1F
QlVGRkVSLCBmYm9fcmVhZCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJB
V19GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4X2RyYXcpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBkcmF3YnVmZmVyRm9ybWF0LCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcihhcmdz
WzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdLCBhcmdzWzZd
LCBhcmdzWzddLCBnbC5DT0xPUl9CVUZGRVJfQklULCBmaWx0ZXIpOworCisgICAgICAgICAgICAv
LyBSZWFkIHBpeGVscyBhbmQgY2hlY2sgdGhlIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgdmFy
IHBpeGVscyA9IG5ldyBVaW50OEFycmF5KHNpemUgKiBzaXplICogNCk7CisgICAgICAgICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgICAg
ICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCBzaXplLCBzaXplLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBwaXhlbHMpOworCisKKyAgICAgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBz
aXplOyArK2lpKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgamogPSAwOyBqaiA8IHNpemU7
ICsramopIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxvYyA9IGlpICogc2l6ZSArIGpqOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBbcGl4ZWxzW2xvYyAqIDRdLCBwaXhlbHNb
bG9jICogNCArIDFdLCBwaXhlbHNbbG9jICogNCArIDJdLCBwaXhlbHNbbG9jICogNCArIDNdXTsK
KworICAgICAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRDb2xvciA9IFswLCAwLCAwLCAwXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGlpID49IGNoYW5nZWREc3RSZWN0WzBdICYmIGlpIDwg
Y2hhbmdlZERzdFJlY3RbMl0gJiYgamogPj0gY2hhbmdlZERzdFJlY3RbMV0gJiYgamogPCBjaGFu
Z2VkRHN0UmVjdFszXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb2xvciA9
IFsweDIwLCAweDIwLCAweDIwLCAweGZmXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2UgbWF5IG5lZWQgdG8gY292ZXJ0IHRoZSBjb2xvciBzcGFjZSBmb3IgcGl4ZWxzIGluIGJsaXQg
cmVnaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVhZGJ1ZmZlckhhc1NSR0JJbWFn
ZSBeIGRyYXdidWZmZXJIYXNTUkdCSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZHJhd2J1ZmZlckhhc1NSR0JJbWFnZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZENvbG9yID0gd3R1LmxpbmVhclRvU1JHQihleHBlY3RlZENvbG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZENvbG9yID0gd3R1LnNSR0JUb0xpbmVhcihleHBlY3RlZENv
bG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAo
Y2hlY2tQaXhlbChjb2xvciwgZXhwZWN0ZWRDb2xvcikgPT0gdHJ1ZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgicGl4ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJd
IGlzICgiICsgY29sb3IgKyAiKS4gSXQgaXMgY29ycmVjdCEiKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInBpeGVsIGF0
IFsiICsgamogKyAiLCAiICsgaWkgKyAiXSBzaG91bGQgYmUgKCIgKyBleHBlY3RlZENvbG9yICsg
IiksIGJ1dCB0aGUgYWN0dWFsIGNvbG9yIGlzICgiICsgY29sb3IgKyAiKSIpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZnJhbWVidWZmZXIgbm90IGNvbXBs
ZXRlIik7CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIG51bGwpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5k
ZWxldGVGcmFtZWJ1ZmZlcihmYm9fcmVhZCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJv
X2RyYXcpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4X3JlYWQpOworICAgIGdsLmRlbGV0ZVRl
eHR1cmUodGV4X2RyYXcpOworfTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdM
IGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2Vi
R0wgY29udGV4dCBleGlzdHMiKTsKKyAgICB2YXIgZmlsdGVycyA9IFtnbC5MSU5FQVIsIGdsLk5F
QVJFU1RdOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBmaWx0ZXJzLmxlbmd0aDsgKytpaSkg
eworICAgICAgICBibGl0ZnJhbWVidWZmZXJfZmlsdGVyX291dG9mYm91bmRzKGdsLlJHQkE4LCBn
bC5SR0JBOCwgZmlsdGVyc1tpaV0pOworICAgICAgICBicmVhazsKKyAgICAgICAgYmxpdGZyYW1l
YnVmZmVyX2ZpbHRlcl9vdXRvZmJvdW5kcyhnbC5SR0JBOCwgZ2wuU1JHQjhfQUxQSEE4LCBmaWx0
ZXJzW2lpXSk7CisgICAgICAgIGJsaXRmcmFtZWJ1ZmZlcl9maWx0ZXJfb3V0b2Zib3VuZHMoZ2wu
U1JHQjhfQUxQSEE4LCBnbC5SR0JBOCwgZmlsdGVyc1tpaV0pOworICAgICAgICBibGl0ZnJhbWVi
dWZmZXJfZmlsdGVyX291dG9mYm91bmRzKGdsLlNSR0I4X0FMUEhBOCwgZ2wuU1JHQjhfQUxQSEE4
LCBmaWx0ZXJzW2lpXSk7CisgICAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZy
YW1lYnVmZmVyLWZpbHRlci1zcmdiLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1m
aWx0ZXItc3JnYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNTRhMGFmMjViMWM4NDU1NzQyMDc4NzJjOTgx
NzEyNjJjZjAzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZl
ci1maWx0ZXItc3JnYi5odG1sCkBAIC0wLDAgKzEsMTYxIEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCbGl0RnJhbWVidWZmZXIg
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI4IiBoZWlnaHQ9IjgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMg
dGhlIGZ1bmN0aW9uYWxpdHkgb2YgYmxpdEZyYW1lYnVmZmVyIHdpdGggc1JHQiBmcmFtZWJ1ZmZl
cnMuIik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiLCB1bmRlZmlu
ZWQsIDIpOworCitmdW5jdGlvbiBjaGVja1BpeGVsKGNvbG9yLCBleHBlY3RlZENvbG9yKSB7Cisg
IHZhciB0b2xlcmFuY2UgPSA3OworICByZXR1cm4gKE1hdGguYWJzKGNvbG9yWzBdIC0gZXhwZWN0
ZWRDb2xvclswXSkgPD0gdG9sZXJhbmNlICYmCisgICAgICAgICAgTWF0aC5hYnMoY29sb3JbMV0g
LSBleHBlY3RlZENvbG9yWzFdKSA8PSB0b2xlcmFuY2UgJiYKKyAgICAgICAgICBNYXRoLmFicyhj
b2xvclsyXSAtIGV4cGVjdGVkQ29sb3JbMl0pIDw9IHRvbGVyYW5jZSAmJgorICAgICAgICAgIE1h
dGguYWJzKGNvbG9yWzNdIC0gZXhwZWN0ZWRDb2xvclszXSkgPD0gdG9sZXJhbmNlKTsKK30KKwor
dmFyIHRleF9yZWFkID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwordmFyIHRleF9kcmF3ID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOwordmFyIGZib19yZWFkID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKK3Zh
ciBmYm9fZHJhdyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cit2YXIgc2l6ZV9yZWFkID0gNDsK
K3ZhciBzaXplX2RyYXcgPSAwOworCitmdW5jdGlvbiBibGl0ZnJhbWVidWZmZXJfaGVscGVyKHJl
YWRidWZmZXJGb3JtYXQsIGRyYXdidWZmZXJGb3JtYXQsIGZpbHRlciwgZGF0YSkgeworICAgIC8v
IENyZWF0ZSByZWFkIGZyYW1lYnVmZmVyIGFuZCBmZWVkIGRhdGEgdG8gcmVhZCBidWZmZXIKKyAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXhfcmVhZCk7CisgICAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCByZWFkYnVmZmVyRm9ybWF0LCBzaXplX3JlYWQsIHNpemVf
cmVhZCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuVEVYVFVSRV8yRCwgdGV4X3JlYWQsIDApOworCisgICAgLy8gQ3JlYXRlIGRyYXcgZnJhbWVi
dWZmZXIgYW5kIGZlZWQgMCB0byBkcmF3IGJ1ZmZlcgorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleF9kcmF3KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGRyYXdidWZmZXJGb3JtYXQsIHNpemVfZHJhdywgc2l6ZV9kcmF3LCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFN
RUJVRkZFUiwgZmJvX2RyYXcpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdf
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhfZHJh
dywgMCk7CisKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgc2l6ZV9yZWFkLCBzaXplX3Jl
YWQsIDAsIDAsIHNpemVfZHJhdywgc2l6ZV9kcmF3LCBnbC5DT0xPUl9CVUZGRVJfQklULCBmaWx0
ZXIpOworCisgICAgLy8gUmVhZCBwaXhlbHMgZm9yIGNvbXBhcmlzaW9uCisgICAgdmFyIHBpeGVs
cyA9IG5ldyBVaW50OEFycmF5KHNpemVfZHJhdyAqIHNpemVfZHJhdyAqIDQpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCBzaXplX2RyYXcsIHNpemVfZHJhdywgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgcGl4ZWxzKTsKKyAgICByZXR1cm4gcGl4ZWxzOworfQorCitmdW5jdGlvbiBibGl0ZnJh
bWVidWZmZXJfZmlsdGVyX3NyZ2IocmVhZGJ1ZmZlckZvcm1hdCwgZHJhd2J1ZmZlckZvcm1hdCwg
ZmlsdGVyLCBtaW5pZmllZCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBzcmdi
IGZpbHRlcmluZyBmb3IgYmxpdEZyYW1lYnVmZmVyLCB0aGUgY3VycmVudCBmaWx0ZXIgaXM6ICIg
KyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZpbHRlcikpOworICAgIHZhciBtaW5fbWFnID0gbWlu
aWZpZWQgPyAibWluaWZpZWQgdG8gaGFsZiB0aGUgc2l6ZS4iIDogIm1hZ25pZmllZCB0byBkb3Vi
bGUgdGhlIHNpemUuIjsKKyAgICBkZWJ1ZygicmVhZCBidWZmZXIgZm9ybWF0IGlzOiAiICsgd3R1
LmdsRW51bVRvU3RyaW5nKGdsLCByZWFkYnVmZmVyRm9ybWF0KSArICIsIGRyYXcgYnVmZmVyIGZv
cm1hdCBpczogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZHJhd2J1ZmZlckZvcm1hdCkgKyAi
LCBtaW5pZnkvbWFnbmlmeTogIiArIG1pbl9tYWcpOworCisgICAgLy8gSW5pdGlhdGUgZGF0YSB0
byByZWFkIGZyYW1lYnVmZmVyCisgICAgdmFyIHNyY19idWZmZXIgPSBuZXcgVWludDhBcnJheShz
aXplX3JlYWQgKiBzaXplX3JlYWQgKiA0KTsKKyAgICB2YXIgc3RhcnQgPSAwOworICAgIGZvciAo
dmFyIGlpID0gMDsgaWkgPCBzaXplX3JlYWQgKiBzaXplX3JlYWQgKiA0OyBpaSArPSA0KSB7Cisg
ICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCAzOyArK2pqKSB7CisgICAgICAgICAgc3JjX2J1
ZmZlcltpaSArIGpqXSA9IHN0YXJ0OworICAgICAgICB9CisgICAgICAgIHNyY19idWZmZXJbaWkg
KyAzXSA9IDB4ZmY7CisgICAgICAgIHN0YXJ0ICs9IDB4MTA7CisgICAgfQorCisgICAgLy8gV2Ug
bWF5IG5lZWQgdG8gZGVjb2RlIHNyZ2IgdG8gbGluZWFyIGZvciByZWZlcmVuY2UgZGF0YQorICAg
IHZhciByZWZfYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZV9yZWFkICogc2l6ZV9yZWFkICog
NCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNpemVfcmVhZCAqIHNpemVfcmVhZCAqIDQ7
IGlpICs9IDQpIHsKKyAgICAgICAgdmFyIGNvbG9yID0gW3NyY19idWZmZXJbaWldLCBzcmNfYnVm
ZmVyW2lpICsgMV0sIHNyY19idWZmZXJbaWkgKyAyXSwgc3JjX2J1ZmZlcltpaSArIDNdXTsKKyAg
ICAgICAgdmFyIHJlZl9jb2xvcjsKKyAgICAgICAgaWYgKHJlYWRidWZmZXJGb3JtYXQgPT0gZ2wu
U1JHQjhfQUxQSEE4KSB7CisgICAgICAgICAgICByZWZfY29sb3IgPSB3dHUuc1JHQlRvTGluZWFy
KGNvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlZl9jb2xvciA9IGNvbG9y
OworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCA0OyArK2pqKSB7Cisg
ICAgICAgICAgcmVmX2J1ZmZlcltpaSArIGpqXSA9IHJlZl9jb2xvcltqal07CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBCbGl0IGZyYW1lYnVmZmVyIHRvIGZpbHRlciBzcmdiIGltYWdlLCBi
dXQgdGhlIHJlZmVyZW5jZSBkYXRhIGlzIGFsd2F5cyByZXRyaWV2ZWQgYnkgYmxpdEZyYW1lYnVm
ZmVyIGFnYWluc3QgbGluZWFyIGltYWdlCisgICAgc2l6ZV9kcmF3ID0gbWluaWZpZWQgPyBzaXpl
X3JlYWQgLyAyIDogc2l6ZV9yZWFkICogMjsKKyAgICB2YXIgcGl4ZWxzID0gYmxpdGZyYW1lYnVm
ZmVyX2hlbHBlcihyZWFkYnVmZmVyRm9ybWF0LCBkcmF3YnVmZmVyRm9ybWF0LCBmaWx0ZXIsIHNy
Y19idWZmZXIpOworICAgIHZhciB0ZW1wID0gYmxpdGZyYW1lYnVmZmVyX2hlbHBlcihnbC5SR0JB
LCBnbC5SR0JBLCBmaWx0ZXIsIHJlZl9idWZmZXIpOworCisgICAgLy8gV2UgbWF5IG5lZWQgdG8g
ZW5jb2RlIGxpbmVhciB0byBzcmdiIGZvciByZWZlcmVuY2UgZGF0YQorICAgIHZhciByZWZfcGl4
ZWxzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZV9kcmF3ICogc2l6ZV9kcmF3ICogNCk7CisgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IHNpemVfZHJhdyAqIHNpemVfZHJhdyAqIDQ7IGlpICs9IDQpIHsK
KyAgICAgICAgdmFyIGNvbG9yID0gW3RlbXBbaWldLCB0ZW1wW2lpICsgMV0sIHRlbXBbaWkgKyAy
XSwgdGVtcFtpaSArIDNdXTsKKyAgICAgICAgdmFyIHJlZl9jb2xvcjsKKyAgICAgICAgaWYgKGRy
YXdidWZmZXJGb3JtYXQgPT0gZ2wuU1JHQjhfQUxQSEE4KSB7CisgICAgICAgICAgICByZWZfY29s
b3IgPSB3dHUubGluZWFyVG9TUkdCKGNvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHJlZl9jb2xvciA9IGNvbG9yOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGpqID0g
MDsgamogPCA0OyArK2pqKSB7CisgICAgICAgICAgcmVmX3BpeGVsc1tpaSArIGpqXSA9IHJlZl9j
b2xvcltqal07CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb21wYXJlCisgICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IHNpemVfZHJhdzsgKytpaSkgeworICAgICAgICBmb3IgKHZhciBqaiA9
IDA7IGpqIDwgc2l6ZV9kcmF3OyArK2pqKSB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSBpaSAq
IHNpemVfZHJhdyAqIDQgKyBqajsKKyAgICAgICAgICAgIHZhciBjb2xvciA9IFtwaXhlbHNbaW5k
ZXhdLCBwaXhlbHNbaW5kZXggKyAxXSwgcGl4ZWxzW2luZGV4ICsgMl0sIHBpeGVsc1tpbmRleCAr
IDNdXTsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZENvbG9yID0gW3JlZl9waXhlbHNbaW5kZXhd
LCByZWZfcGl4ZWxzW2luZGV4ICsgMV0sIHJlZl9waXhlbHNbaW5kZXggKyAyXSwgcmVmX3BpeGVs
c1tpbmRleCArIDNdXTsKKyAgICAgICAgICAgIGlmIChjaGVja1BpeGVsKGNvbG9yLCBleHBlY3Rl
ZENvbG9yKSA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgicGl4ZWwgYXQg
WyIgKyBqaiArICIsICIgKyBpaSArICJdIGlzICgiICsgY29sb3IgKyAiKS4gSXQgaXMgY29ycmVj
dCEiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
cGl4ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJdIHNob3VsZCBiZSAoIiArIGV4cGVjdGVk
Q29sb3IgKyAiKSwgYnV0IHRoZSBhY3R1YWwgY29sb3IgaXMgKCIgKyBjb2xvciArICIpIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0
RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRl
c3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisgICAgdmFyIGZpbHRlcnMgPSBbZ2wu
TElORUFSLCBnbC5ORUFSRVNUXTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZmlsdGVycy5s
ZW5ndGg7ICsraWkpIHsKKyAgICAgICAgYmxpdGZyYW1lYnVmZmVyX2ZpbHRlcl9zcmdiKGdsLlJH
QkE4LCBnbC5TUkdCOF9BTFBIQTgsIGZpbHRlcnNbaWldLCB0cnVlKTsKKyAgICAgICAgYmxpdGZy
YW1lYnVmZmVyX2ZpbHRlcl9zcmdiKGdsLlJHQkE4LCBnbC5TUkdCOF9BTFBIQTgsIGZpbHRlcnNb
aWldLCBmYWxzZSk7CisgICAgICAgIGJsaXRmcmFtZWJ1ZmZlcl9maWx0ZXJfc3JnYihnbC5TUkdC
OF9BTFBIQTgsIGdsLlJHQkE4LCBmaWx0ZXJzW2lpXSwgdHJ1ZSk7CisgICAgICAgIGJsaXRmcmFt
ZWJ1ZmZlcl9maWx0ZXJfc3JnYihnbC5TUkdCOF9BTFBIQTgsIGdsLlJHQkE4LCBmaWx0ZXJzW2lp
XSwgZmFsc2UpOworICAgICAgICBibGl0ZnJhbWVidWZmZXJfZmlsdGVyX3NyZ2IoZ2wuU1JHQjhf
QUxQSEE4LCBnbC5TUkdCOF9BTFBIQTgsIGZpbHRlcnNbaWldLCB0cnVlKTsKKyAgICAgICAgYmxp
dGZyYW1lYnVmZmVyX2ZpbHRlcl9zcmdiKGdsLlNSR0I4X0FMUEhBOCwgZ2wuU1JHQjhfQUxQSEE4
LCBmaWx0ZXJzW2lpXSwgZmFsc2UpOworICAgIH0KK30KKworZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgbnVsbCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwg
bnVsbCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgbnVsbCk7Citn
bC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9fcmVhZCk7CitnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9f
ZHJhdyk7CitnbC5kZWxldGVUZXh0dXJlKHRleF9yZWFkKTsKK2dsLmRlbGV0ZVRleHR1cmUodGV4
X2RyYXcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLW11bHRpc2Ft
cGxlZC1yZWFkYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1tdWx0aXNh
bXBsZWQtcmVhZGJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZjhlOGI3MzVmMTI3NzMyNjc1YzA5
Y2U1MmU1NjhhOTlmZTQyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFt
ZWJ1ZmZlci1tdWx0aXNhbXBsZWQtcmVhZGJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBCbGl0RnJhbWVidWZmZXIgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBibGl0RnJhbWVidWZmZXIgd2l0
aCBtdWx0aXNhbXBsZWQgc1JHQiBjb2xvciBidWZmZXIuIik7CisKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoImNhbnZhcyIsIHVuZGVmaW5lZCwgMik7CisKK3ZhciB0ZXhfYmxpdCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKK3ZhciBmYjAgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwordmFy
IHJiMCA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwordmFyIGZib19ibGl0ID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKK3ZhciBzaXplID0gMzI7Cit2YXIgcHJvZ3JhbTsKKworaWYgKCFnbCkg
eworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxz
ZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIGluaXQo
KTsKKworICAgIHZhciBmaWx0ZXJzID0gW2dsLkxJTkVBUiwgZ2wuTkVBUkVTVF07CisgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IGZpbHRlcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGJsaXRm
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZWRfcmVhZGJ1ZmZlcihnbC5TUkdCOF9BTFBIQTgsIGdsLlNS
R0I4X0FMUEhBOCwgZmlsdGVyc1tpaV0pOworICAgIH0KK30KKworZnVuY3Rpb24gaW5pdCgpIHsK
KyAgICBwcm9ncmFtID0gd3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKyAgICBnbC52aWV3cG9ydCgw
LCAwLCBzaXplLCBzaXplKTsKK30KKworZnVuY3Rpb24gYmxpdGZyYW1lYnVmZmVyX2hlbHBlcihy
ZWFkYnVmZmVyRm9ybWF0LCBkcmF3YnVmZmVyRm9ybWF0LCBmaWx0ZXIpIHsKKyAgICAvLyBDcmVh
dGUgZHJhdyBmcmFtZWJ1ZmZlciBhbmQgZmVlZCAwIHRvIGRyYXcgYnVmZmVyCisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4X2JsaXQpOworICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZHJhd2J1ZmZlckZvcm1hdCwgc2l6ZSwgc2l6ZSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdf
RlJBTUVCVUZGRVIsIGZib19ibGl0KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5E
UkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4
X2JsaXQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2V0
dXAgZHJhdyBmcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZCIpOworCisgICAgZ2wuYmxpdEZyYW1l
YnVmZmVyKDAsIDAsIHNpemUsIHNpemUsIDAsIDAsIHNpemUsIHNpemUsIGdsLkNPTE9SX0JVRkZF
Ul9CSVQsIGZpbHRlcik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJibGl0ZnJhbWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQiKTsKK30KKworZnVuY3Rpb24gYmxpdGZy
YW1lYnVmZmVyX211bHRpc2FtcGxlZF9yZWFkYnVmZmVyKHJlYWRidWZmZXJGb3JtYXQsIGRyYXdi
dWZmZXJGb3JtYXQsIGZpbHRlcikgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBi
bGl0RnJhbWVidWZmZXIgd2hlbiB0aGUgcmVhZCBidWZmZXIgaXMgYSBtdWx0aXNhbXBsZWQgc3Jn
YiBpbWFnZS4gVGhlIGZpbHRlciBpczogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZmlsdGVy
KSk7CisgICAgZGVidWcoInJlYWQgYnVmZmVyIGZvcm1hdCBpczogIiArIHd0dS5nbEVudW1Ub1N0
cmluZyhnbCwgcmVhZGJ1ZmZlckZvcm1hdCkgKyAiLCBkcmF3IGJ1ZmZlciBmb3JtYXQgaXM6ICIg
KyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGRyYXdidWZmZXJGb3JtYXQpKTsKKworICAgIC8vIERy
YXcgdG8gYSBtdWx0aS1zYW1wbGVkIHNyZ2IgaW1hZ2UsIGFuZCBibGl0IHRvIGEgc3JnYiBpbWFn
ZS4KKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIwKTsKKyAgICBn
bC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCA0LCByZWFk
YnVmZmVyRm9ybWF0LCBzaXplLCBzaXplKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiMCk7CisgICAg
aWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1F
QlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZyYW1lYnVmZmVyIGluY29t
cGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGNvbG9yID0gWzI1Miwg
MTIyLCAxNSwgMjU1XTsKKyAgICB2YXIgZXhwZWN0ZWRDb2xvciA9IHd0dS5saW5lYXJUb1NSR0Io
Y29sb3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIGNvbG9y
W2ldID0gY29sb3JbaV0gLyAyNTU7CisgICAgfQorICAgIC8vIERyYXcgYSByZWN0YW5nbGUuIEZp
bGwgaXQgd2l0aCBzb2xpZCBjb2xvci4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIGRyYXcgYnVmZmVy
IGlzIGEgbXVsdGlzYW1wbGVkIHNyZ2IgaW1hZ2UuIFNvIGR1cmluZyBkcmF3aW5nLCB0aGUgY29s
b3Igd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBzcmdiIGNvbG9yIHNwYWNlLgorICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgd3R1LmRyYXdGbG9hdENvbG9yUXVhZChnbCwgY29sb3IpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYjApOworICAgIGJs
aXRmcmFtZWJ1ZmZlcl9oZWxwZXIocmVhZGJ1ZmZlckZvcm1hdCwgZHJhd2J1ZmZlckZvcm1hdCwg
ZmlsdGVyKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkJsaXQg
ZnJvbSBhIG11bHRpLXNhbXBsZWQgc3JnYiBpbWFnZSB0byBhIHNyZ2IgaW1hZ2Ugc2hvdWxkIHN1
Y2NlZWQiKTsKKworICAgIC8vIENvbXBhcmUKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVB
RF9GUkFNRUJVRkZFUiwgZmJvX2JsaXQpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAs
IDAsIHNpemUsIHNpemUsIGV4cGVjdGVkQ29sb3IpOworfQorCitnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCBudWxsKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBu
dWxsKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBudWxsKTsKK2ds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKK2dsLmRlbGV0ZVJl
bmRlcmJ1ZmZlcihyYjApOworZ2wuZGVsZXRlVGV4dHVyZSh0ZXhfYmxpdCk7CitnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYjApOworZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvX2JsaXQpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLW91dHNpZGUtcmVhZGJ1ZmZlci5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3JlbmRlcmluZy9ibGl0ZnJhbWVidWZmZXItb3V0c2lkZS1yZWFkYnVmZmVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTJlODcwMzRlYmEyYzY3OTA4N2UzMGMyYjNjYmJhMmEwZGQ5MmRjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLW91dHNpZGUtcmVhZGJ1ZmZl
ci5odG1sCkBAIC0wLDAgKzEsMjY3IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCbGl0RnJhbWVidWZmZXIgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI4IiBoZWlnaHQ9
IjgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9u
YWxpdHkgb2YgYmxpdEZyYW1lYnVmZmVyLiIpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKworZnVuY3Rpb24gY2hlY2tQaXhlbChjb2xv
ciwgZXhwZWN0ZWRDb2xvcikgeworICB2YXIgdG9sZXJhbmNlID0gMzsKKyAgcmV0dXJuIChNYXRo
LmFicyhjb2xvclswXSAtIGV4cGVjdGVkQ29sb3JbMF0pIDw9IHRvbGVyYW5jZSAmJgorICAgICAg
ICAgIE1hdGguYWJzKGNvbG9yWzFdIC0gZXhwZWN0ZWRDb2xvclsxXSkgPD0gdG9sZXJhbmNlICYm
CisgICAgICAgICAgTWF0aC5hYnMoY29sb3JbMl0gLSBleHBlY3RlZENvbG9yWzJdKSA8PSB0b2xl
cmFuY2UgJiYKKyAgICAgICAgICBNYXRoLmFicyhjb2xvclszXSAtIGV4cGVjdGVkQ29sb3JbM10p
IDw9IHRvbGVyYW5jZSk7Cit9CisKK2Z1bmN0aW9uIGJsaXRmcmFtZWJ1ZmZlcl9vdXRzaWRlX3Jl
YWRidWZmZXIocmVhZGJ1ZmZlckZvcm1hdCwgZHJhd2J1ZmZlckZvcm1hdCkgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiYmxpdHRpbmcgb3V0c2lkZSBvZiByZWFkIGZyYW1lYnVmZmVyLCBy
ZWFkIGJ1ZmZlciBmb3JtYXQgaXM6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHJlYWRidWZm
ZXJGb3JtYXQpICsgIiwgZHJhdyBidWZmZXIgZm9ybWF0IGlzOiAiICsgd3R1LmdsRW51bVRvU3Ry
aW5nKGdsLCBkcmF3YnVmZmVyRm9ybWF0KSk7CisKKyAgICAvLyBJbml0aWF0ZSBkYXRhIHRvIHJl
YWQgZnJhbWVidWZmZXIKKyAgICB2YXIgc2l6ZV9yZWFkID0gMzsKKyAgICB2YXIgdWludF9yZWFk
ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZV9yZWFkICogc2l6ZV9yZWFkICogNCk7CisgICAgdmFyIHN0
YXJ0ID0gMHgyMDsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc2l6ZV9yZWFkICogc2l6ZV9y
ZWFkICogNDsgaWkgKz0gNCkgeworICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgMzsgKytq
aikgeworICAgICAgICAgIHVpbnRfcmVhZFtpaSArIGpqXSA9IHN0YXJ0OworICAgICAgICB9Cisg
ICAgICAgIHVpbnRfcmVhZFtpaSArIDNdID0gMHhmZjsKKyAgICAgICAgc3RhcnQgKz0gMHgxMDsK
KyAgICB9CisKKyAgICAvLyBDcmVhdGUgcmVhZCBmcmFtZWJ1ZmZlciBhbmQgZmVlZCBkYXRhIHRv
IHJlYWQgYnVmZmVyCisgICAgLy8gUmVhZCBidWZmZXIgbWF5IGhhcyBzcmdiIGltYWdlCisgICAg
dmFyIHRleF9yZWFkID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleF9yZWFkKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIHJlYWRidWZmZXJGb3JtYXQsIHNpemVfcmVhZCwgc2l6ZV9yZWFkLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCB1aW50X3JlYWQpOworCisgICAgdmFyIGZib19yZWFkID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJV
RkZFUiwgZmJvX3JlYWQpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLlJFQURfRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhfcmVhZCwg
MCk7CisKKyAgICAvLyBJbml0aWF0ZSBkYXRhIHRvIGRyYXcgZnJhbWVidWZmZXIKKyAgICB2YXIg
c2l6ZV9kcmF3ID0gNzsKKyAgICB2YXIgdWludF9kcmF3ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZV9k
cmF3ICogc2l6ZV9kcmF3ICogNCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNpemVfZHJh
dyAqIHNpemVfZHJhdyAqIDQ7IGlpICs9IDQpIHsKKyAgICAgICAgZm9yICh2YXIgamogPSAwOyBq
aiA8IDM7ICsramopIHsKKyAgICAgICAgICAgIHVpbnRfZHJhd1tpaSArIGpqXSA9IDB4MTA7Cisg
ICAgICAgIH0KKyAgICAgICAgdWludF9kcmF3W2lpICsgM10gPSAweGZmOworICAgIH0KKworICAg
IC8vIENyZWF0ZSBkcmF3IGZyYW1lYnVmZmVyIGFuZCBmZWVkIGRhdGEgdG8gZHJhdyBidWZmZXIK
KyAgICAvLyBEcmF3IGJ1ZmZlciBtYXkgaGFzIHNyZ2IgaW1hZ2UKKyAgICB2YXIgdGV4X2RyYXcg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4X2RyYXcpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5F
QVIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5MSU5FQVIpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBkcmF3YnVmZmVyRm9ybWF0LCBzaXplX2RyYXcsIHNpemVfZHJhdywgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgdWludF9kcmF3KTsKKworICAgIHZhciBmYm9fZHJhdyA9IGdsLmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGZib19kcmF3KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5EUkFXX0ZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4X2RyYXcsIDAp
OworCisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuUkVBRF9GUkFNRUJVRkZF
UikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgdmFyIHJlZiA9IFsKKyAg
ICAgICAgICAgIC8vIFRoZSByZWZlcmVuY2UgcGl4ZWxzIG9mIHRoZSAxc3QgbGluZTogKDAsIDAp
IH4gKDYsIDApCisgICAgICAgICAgICBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sIFsweDEwLCAw
eDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwg
MHgxMCwgMHhmZl0sCisgICAgICAgICAgICBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sIFsweDEw
LCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLAorCisgICAgICAg
ICAgICAvLyBUaGUgcmVmZXJlbmNlIHBpeGVscyBvZiB0aGUgMm5kIGxpbmU6ICgwLCAxKSB+ICg2
LCAxKQorICAgICAgICAgICAgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwg
MHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAs
IDB4ZmZdLAorICAgICAgICAgICAgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgxMCwgMHgx
MCwgMHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwKKworICAgICAgICAgICAg
Ly8gVGhlIHJlZmVyZW5jZSBwaXhlbHMgb2YgdGhlIDNyZCBsaW5lOiAoMCwgMikgfiAoNiwgMikK
KyAgICAgICAgICAgIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAs
IDB4ZmZdLCBbMHgyMCwgMHgyMCwgMHgyMCwgMHhmZl0sIFsweDMwLCAweDMwLCAweDMwLCAweGZm
XSwKKyAgICAgICAgICAgIFsweDQwLCAweDQwLCAweDQwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4
MTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sCisKKyAgICAgICAgICAgIC8vIFRo
ZSByZWZlcmVuY2UgcGl4ZWxzIG9mIHRoZSA0dGggbGluZTogKDAsIDMpIH4gKDYsIDMpCisgICAg
ICAgICAgICBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZm
XSwgWzB4NTAsIDB4NTAsIDB4NTAsIDB4ZmZdLCBbMHg2MCwgMHg2MCwgMHg2MCwgMHhmZl0sCisg
ICAgICAgICAgICBbMHg3MCwgMHg3MCwgMHg3MCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAw
eGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLAorCisgICAgICAgICAgICAvLyBUaGUgcmVm
ZXJlbmNlIHBpeGVscyBvZiB0aGUgNXRoIGxpbmU6ICgwLCA0KSB+ICg2LCA0KQorICAgICAgICAg
ICAgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sIFsw
eDgwLCAweDgwLCAweDgwLCAweGZmXSwgWzB4OTAsIDB4OTAsIDB4OTAsIDB4ZmZdLAorICAgICAg
ICAgICAgWzB4YTAsIDB4YTAsIDB4YTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0s
IFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwKKworICAgICAgICAgICAgLy8gVGhlIHJlZmVyZW5j
ZSBwaXhlbHMgb2YgdGhlIDZ0aCBsaW5lOiAoMCwgNSkgfiAoNiwgNSkKKyAgICAgICAgICAgIFsw
eDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgxMCwg
MHgxMCwgMHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwKKyAgICAgICAgICAg
IFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAsIDB4MTAsIDB4ZmZdLCBbMHgx
MCwgMHgxMCwgMHgxMCwgMHhmZl0sCisKKyAgICAgICAgICAgIC8vIFRoZSByZWZlcmVuY2UgcGl4
ZWxzIG9mIHRoZSA3dGggbGluZTogKDAsIDYpIH4gKDYsIDYpCisgICAgICAgICAgICBbMHgxMCwg
MHgxMCwgMHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4MTAs
IDB4MTAsIDB4ZmZdLCBbMHgxMCwgMHgxMCwgMHgxMCwgMHhmZl0sCisgICAgICAgICAgICBbMHgx
MCwgMHgxMCwgMHgxMCwgMHhmZl0sIFsweDEwLCAweDEwLCAweDEwLCAweGZmXSwgWzB4MTAsIDB4
MTAsIDB4MTAsIDB4ZmZdLAorICAgICAgICBdOworCisgICAgICAgIC8vIFRoZSAxc3Qgcm91bmQg
dGVzdDogYmxpdCByZWFkIGZyYW1lYnVmZmVyIHRvIHRoZSBpbWFnZSBpbiBkcmF3IGZyYW1lYnVm
ZmVyCisgICAgICAgIC8vIEFsbCBkaXJlY3Rpb25zIG9mIHRoZSByZWFkIHJlZ2lvbiBoYXZlIHBp
eGVscyBvdXRzaWRlIG9mIHRoZSByZWFkIGJ1ZmZlcgorICAgICAgICAvLyBUaGUgc3JjIHJlZ2lv
biBhbmQvb3IgZHN0IHJlZ2lvbiBtYXkgYmUgcmV2ZXJzZWQgZHVyaW5nIGJsaXR0aW5nLgorICAg
ICAgICB2YXIgdGVzdDEgPSBbCisgICAgICAgICAgICAgWy0xLCA0LCAxLCA2XSwgLy8gcmV2ZXJz
ZSBuZWl0aGVyIHNyYyBub3IgZHN0CisgICAgICAgICAgICAgWzQsIC0xLCAxLCA2XSwgLy8gcmV2
ZXJzZSBzcmMgb25seQorICAgICAgICAgICAgIFstMSwgNCwgNiwgMV0sIC8vIHJldmVyc2UgZHN0
IG9ubHkKKyAgICAgICAgICAgICBbNCwgLTEsIDYsIDFdICAvLyByZXZlcnNlIGJvdGggc3JjIGFu
ZCBkc3QKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgcmVhZGJ1ZmZlckhhc1NSR0JJbWFnZSA9
IChyZWFkYnVmZmVyRm9ybWF0ID09IGdsLlNSR0I4X0FMUEhBOCk7CisgICAgICAgIHZhciBkcmF3
YnVmZmVySGFzU1JHQkltYWdlID0gKGRyYXdidWZmZXJGb3JtYXQgPT0gZ2wuU1JHQjhfQUxQSEE4
KTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSAwOiBkZWJ1ZygicmV2ZXJzZSBuZWl0aGVyIHNyYyByZWdpb24gbm9yIGRzdCByZWdpb24iKTsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBkZWJ1ZygicmV2ZXJzZSBzcmMgcmVnaW9u
IG9ubHkiKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBkZWJ1ZygicmV2ZXJzZSBk
c3QgcmVnaW9uIG9ubHkiKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBkZWJ1Zygi
cmV2ZXJzZSBib3RoIHNyYyByZWdpb24gYW5kIGRzdCByZWdpb24iKTsgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2YXIgc3JjU3RhcnQgPSB0ZXN0MVtpXVswXTsKKyAgICAgICAg
ICAgIHZhciBzcmNFbmQgPSB0ZXN0MVtpXVsxXTsKKyAgICAgICAgICAgIHZhciBkc3RTdGFydCA9
IHRlc3QxW2ldWzJdOworICAgICAgICAgICAgdmFyIGRzdEVuZCA9IHRlc3QxW2ldWzNdOworICAg
ICAgICAgICAgdmFyIHJlYWxCbGl0dGVkRHN0U3RhcnQgPSAyOworICAgICAgICAgICAgdmFyIHJl
YWxCbGl0dGVkRHN0RW5kID0gNTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgICAgICAgICAgZ2wuYmxpdEZy
YW1lYnVmZmVyKHNyY1N0YXJ0LCBzcmNTdGFydCwgc3JjRW5kLCBzcmNFbmQsIGRzdFN0YXJ0LCBk
c3RTdGFydCwgZHN0RW5kLCBkc3RFbmQsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLkxJTkVBUik7
CisKKyAgICAgICAgICAgIC8vIFJlYWQgcGl4ZWxzIGFuZCBjaGVjayB0aGUgY29ycmVjdG5lc3Mu
CisgICAgICAgICAgICB2YXIgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZV9kcmF3ICogc2l6
ZV9kcmF3ICogNCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFN
RUJVRkZFUiwgZmJvX2RyYXcpOworICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCBzaXpl
X2RyYXcsIHNpemVfZHJhdywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKwor
ICAgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNpemVfZHJhdzsgKytpaSkgeworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBzaXplX2RyYXc7ICsramopIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGxvYyA9IGlpICogc2l6ZV9kcmF3ICsgamo7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjb2xvciA9IFtwaXhlbHNbbG9jICogNF0sIHBpeGVsc1tsb2MgKiA0
ICsgMV0sIHBpeGVsc1tsb2MgKiA0ICsgMl0sIHBpeGVsc1tsb2MgKiA0ICsgM11dOworCisgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG1heSBuZWVkIHRvIHJldmVyc2UgdGhlIHJlZmVyZW5jZSBs
b2MgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIHZhciByZWZfbG9jID0gbG9jOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgcmV2ZXJzZV9zcmMgPSAoc3JjU3RhcnQgPCBzcmNFbmQp
OworICAgICAgICAgICAgICAgICAgICB2YXIgcmV2ZXJzZV9kc3QgPSAoZHN0U3RhcnQgPCBkc3RF
bmQpOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV2ZXJzZWQgPSByZXZlcnNlX3NyYyBeIHJl
dmVyc2VfZHN0OworICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZl9sb2MgPSAoc2l6ZV9kcmF3IC0gaWkgLSAxKSAqIHNpemVfZHJh
dyArIChzaXplX2RyYXcgLSBqaiAtMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkQ29sb3IgPSByZWZbcmVmX2xvY107CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgbWF5IG5lZWQgdG8gY292ZXJ0IHRoZSBjb2xvciBzcGFjZSBmb3Ig
cGl4ZWxzIGluIGJsaXQgcmVnaW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgocmVhZGJ1ZmZl
ckhhc1NSR0JJbWFnZSBeIGRyYXdidWZmZXJIYXNTUkdCSW1hZ2UpICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAoaWkgPj0gcmVhbEJsaXR0ZWREc3RTdGFydCAmJiBpaSA8IHJlYWxCbGl0dGVk
RHN0RW5kICYmIGpqID49IHJlYWxCbGl0dGVkRHN0U3RhcnQgJiYgamogPCByZWFsQmxpdHRlZERz
dEVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkcmF3YnVmZmVySGFzU1JHQklt
YWdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb2xvciA9IHd0dS5s
aW5lYXJUb1NSR0IoZXhwZWN0ZWRDb2xvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29sb3IgPSB3dHUuc1JH
QlRvTGluZWFyKGV4cGVjdGVkQ29sb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1BpeGVsKGNv
bG9yLCBleHBlY3RlZENvbG9yKSA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJwaXhlbCBhdCBbIiArIGpqICsgIiwgIiArIGlpICsgIl0gaXMgKCIgKyBjb2xv
ciArICIpLiBJdCBpcyBjb3JyZWN0ISIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgicGl4ZWwgYXQgWyIgKyBqaiArICIs
ICIgKyBpaSArICJdIHNob3VsZCBiZSAoIiArIGV4cGVjdGVkQ29sb3IgKyAiKSwgYnV0IHRoZSBh
Y3R1YWwgY29sb3IgaXMgKCIgKyBjb2xvciArICIpIik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBUaGUgMm5kIHJvdW5kIHRlc3Q6IGJsaXQgcmVhZCBmcmFtZWJ1ZmZlciB0byB0aGUgaW1hZ2Ug
aW4gZHJhdyBmcmFtZWJ1ZmZlcgorICAgICAgICAvLyBPbmx5IG9uZSBkaXJlY3Rpb24gb2YgdGhl
IHJlYWQgcmVnaW9uIGhhdmUgcGl4ZWxzIG91dHNpZGUgb2YgdGhlIHJlYWQgYnVmZmVyCisgICAg
ICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgICAgICBbLTEsIDBdLCAvLyBwaXhlbHMgYXJlIG91
dHNpZGUgdGhlIGxlZnQgZWRnZSBvZiB0aGUgcmVhZCBidWZmZXIKKyAgICAgICAgICAgICBbMCwg
LTFdLCAvLyBwaXhlbHMgYXJlIG91dHNpZGUgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSByZWFkIGJ1
ZmZlcgorICAgICAgICAgICAgIFsxLCAwXSwgIC8vIHBpeGVscyBhcmUgb3V0c2lkZSB0aGUgcmln
aHQgZWRnZSBvZiB0aGUgcmVhZCBidWZmZXIKKyAgICAgICAgICAgICBbMCwgMV0gICAvLyBwaXhl
bHMgYXJlIG91dHNpZGUgdGhlIHRvcCBlZGdlIG9mIHRoZSByZWFkIGJ1ZmZlcgorICAgICAgICBd
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICAgICAgY2FzZSAw
OiBkZWJ1ZygidmVyaWZ5IHRoYXQgcGl4ZWxzIGx5aW5nIG91dHNpZGUgdGhlIGxlZnQgZWRnZSBv
ZiB0aGUgcmVhZCBidWZmZXIgc2hvdWxkIHJlbWFpbiB1bnRvdWNoZWQiKTsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAxOiBkZWJ1ZygidmVyaWZ5IHRoYXQgcGl4ZWxzIGx5aW5nIG91dHNp
ZGUgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSByZWFkIGJ1ZmZlciBzaG91bGQgcmVtYWluIHVudG91
Y2hlZCIpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IGRlYnVnKCJ2ZXJpZnkgdGhh
dCBwaXhlbHMgbHlpbmcgb3V0c2lkZSB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgcmVhZCBidWZmZXIg
c2hvdWxkIHJlbWFpbiB1bnRvdWNoZWQiKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAz
OiBkZWJ1ZygidmVyaWZ5IHRoYXQgcGl4ZWxzIGx5aW5nIG91dHNpZGUgdGhlIHRvcCBlZGdlIG9m
IHRoZSByZWFkIGJ1ZmZlciBzaG91bGQgcmVtYWluIHVudG91Y2hlZCIpOyBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVG
RkVSLCBmYm9fcmVhZCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19G
UkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgICAgICAgICAgdmFyIHNyY1ggPSB0ZXN0c1tpXVsw
XTsKKyAgICAgICAgICAgIHZhciBzcmNZID0gdGVzdHNbaV1bMV07CisgICAgICAgICAgICB2YXIg
b2Zmc2V0ID0gZHN0U3RhcnQgLSBzcmNTdGFydDsKKyAgICAgICAgICAgIGdsLmJsaXRGcmFtZWJ1
ZmZlcihzcmNYLCBzcmNZLCBzcmNYICsgc2l6ZV9yZWFkLCBzcmNZICsgc2l6ZV9yZWFkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1ggKyBvZmZzZXQsIHNyY1kgKyBvZmZzZXQs
IHNyY1ggKyBvZmZzZXQgKyBzaXplX3JlYWQsIHNyY1kgKyBvZmZzZXQgKyBzaXplX3JlYWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTElO
RUFSKTsKKworICAgICAgICAgICAgLy8gUmVhZCBwaXhlbHMgYW5kIGNoZWNrIHRoZSBjb3JyZWN0
bmVzcy4KKyAgICAgICAgICAgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJheShzaXplX2RyYXcg
KiBzaXplX2RyYXcgKiA0KTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFE
X0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAs
IHNpemVfZHJhdywgc2l6ZV9kcmF3LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbHMp
OworICAgICAgICAgICAgZm9yICh2YXIgaWkgPSBzcmNZICsgb2Zmc2V0OyBpaSA8IHNyY1kgKyBv
ZmZzZXQgKyBzaXplX3JlYWQ7ICsraWkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqaiA9
IHNyY1ggKyBvZmZzZXQ7IGpqIDwgc3JjWCArIG9mZnNldCArIHNpemVfcmVhZDsgKytqaikgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgbG9jID0gaWkgKiBzaXplX2RyYXcgKyBqajsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gW3BpeGVsc1tsb2MgKiA0XSwgcGl4ZWxzW2xvYyAq
IDQgKyAxXSwgcGl4ZWxzW2xvYyAqIDQgKyAyXSwgcGl4ZWxzW2xvYyAqIDQgKyAzXV07CisgICAg
ICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZENvbG9yID0gcmVmW2xvY107CisgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIG1heSBuZWVkIHRvIGNvdmVydCB0aGUgY29sb3Igc3BhY2UgZm9yIHBp
eGVscyBpbiBibGl0IHJlZ2lvbgorICAgICAgICAgICAgICAgICAgICBpZiAoKHJlYWRidWZmZXJI
YXNTUkdCSW1hZ2UgXiBkcmF3YnVmZmVySGFzU1JHQkltYWdlKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgKGlpID49IHJlYWxCbGl0dGVkRHN0U3RhcnQgJiYgaWkgPCByZWFsQmxpdHRlZERz
dEVuZCAmJiBqaiA+PSByZWFsQmxpdHRlZERzdFN0YXJ0ICYmIGpqIDwgcmVhbEJsaXR0ZWREc3RF
bmQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHJhd2J1ZmZlckhhc1NSR0JJbWFn
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29sb3IgPSB3dHUubGlu
ZWFyVG9TUkdCKGV4cGVjdGVkQ29sb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9yID0gd3R1LnNSR0JU
b0xpbmVhcihleHBlY3RlZENvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tQaXhlbChjb2xv
ciwgZXhwZWN0ZWRDb2xvcikgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgicGl4ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJdIGlzICgiICsgY29sb3Ig
KyAiKS4gSXQgaXMgY29ycmVjdCEiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInBpeGVsIGF0IFsiICsgamogKyAiLCAi
ICsgaWkgKyAiXSBzaG91bGQgYmUgKCIgKyBleHBlY3RlZENvbG9yICsgIiksIGJ1dCB0aGUgYWN0
dWFsIGNvbG9yIGlzICgiICsgY29sb3IgKyAiKSIpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiZnJhbWVidWZmZXIgbm90IGNvbXBsZXRlIik7CisgICAgfQor
CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZl
cihmYm9fcmVhZCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvX2RyYXcpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4X3JlYWQpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4X2RyYXcp
OworfTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBu
b3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlz
dHMiKTsKKyAgICBibGl0ZnJhbWVidWZmZXJfb3V0c2lkZV9yZWFkYnVmZmVyKGdsLlJHQkE4LCBn
bC5SR0JBOCk7CisgICAgYmxpdGZyYW1lYnVmZmVyX291dHNpZGVfcmVhZGJ1ZmZlcihnbC5SR0JB
OCwgZ2wuU1JHQjhfQUxQSEE4KTsKKyAgICBibGl0ZnJhbWVidWZmZXJfb3V0c2lkZV9yZWFkYnVm
ZmVyKGdsLlNSR0I4X0FMUEhBOCwgZ2wuUkdCQTgpOworICAgIGJsaXRmcmFtZWJ1ZmZlcl9vdXRz
aWRlX3JlYWRidWZmZXIoZ2wuU1JHQjhfQUxQSEE4LCBnbC5TUkdCOF9BTFBIQTgpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLXIxMWYtZzExZi1iMTBmLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1yMTFmLWcxMWYtYjEwZi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYzNmU3NmFjMjlmNzY2ODUyNzAxYzgxMTBkZTk2NzhmOTJhYWNlOGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1yMTFmLWcxMWYtYjEwZi5odG1sCkBA
IC0wLDAgKzEsMTEzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBSMTFGX0cxMUZfQjEwRiBCbGl0RnJhbWVidWZmZXIgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgbXVsdGlzYW1wbGUg
YmxpdHRpbmcgd2l0aCB0aGUgUjExRl9HMTFGX0IxMEYgZm9ybWF0LiIpOworCit2YXIgd2lkdGgg
PSA4OwordmFyIGhlaWdodCA9IDg7CisKK2Z1bmN0aW9uIHJ1bldpdGhDb250ZXh0Q3JlYXRpb25B
cmd1bWVudHMoYXJncykgeworICBkZWJ1ZygnJyk7CisgIGRlYnVnKCdSdW5uaW5nIHRlc3Qgd2l0
aCBhcmd1bWVudHM6ICcgKyBKU09OLnN0cmluZ2lmeShhcmdzKSk7CisKKyAgdmFyIGNhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52YXMud2lkdGggPSB3aWR0
aDsKKyAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KGNhbnZhcywgYXJncywgMik7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJX
ZWJHTCAyLjAgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIHJldHVybjsKKyAgfQorCisg
IHZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKTsKKyAg
aWYgKCFleHQpIHsKKyAgICB0ZXN0UGFzc2VkKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IGV4dGVu
c2lvbiBub3Qgc3VwcG9ydGVkIik7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIHNhbXBsZXMg
PSBnbC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlIxMUZf
RzExRl9CMTBGLCBnbC5TQU1QTEVTKTsKKworICAvLyBTZXQgdXAgc291cmNlIGZyYW1lYnVmZmVy
LgorICB2YXIgcmIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgc2FtcGxlc1swXSwgZ2wuUjExRl9HMTFGX0IxMEYsIHdp
ZHRoLCBoZWlnaHQpOworICB2YXIgcmVhZGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCByZWFkZmIpOworICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgcmIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImFmdGVyIG11bHRpc2FtcGxlZCBSMTFGX0cxMUZfQjEwRiBGQk8gc2V0dXAiKTsKKyAgaWYg
KGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVG
RkVSX0NPTVBMRVRFKSB7CisgICAgdGVzdEZhaWxlZCgiU291cmNlIGZyYW1lYnVmZmVyIGluY29t
cGxldGUuIik7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gRHJhdyBzb21ldGhpbmcgdG8gdGhh
dCBmcmFtZWJ1ZmZlci4KKyAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhZnRlciBjbGVhcmluZyBSMTFGX0cxMUZfQjEwRiBmcmFtZWJ1ZmZlciIp
OworCisgIC8vIFNldCB1cCBkZXN0aW5hdGlvbiBmcmFtZWJ1ZmZlciBmb3IgcmVzb2x2aW5nIE1T
QUEuCisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UjExRl9HMTFGX0IxMEYsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfSU5U
XzEwRl8xMUZfMTFGX1JFViwgbnVsbCk7CisgIHZhciBkcmF3ZmIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZHJhd2Zi
KTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgZGVzdGluYXRpb24gUjExRl9HMTFGX0IxMEYg
RkJPIHNldHVwIik7CisgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkRSQVdfRlJB
TUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgdGVzdEZhaWxlZCgi
RnJhbWVidWZmZXIgaW5jb21wbGV0ZS4iKTsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBBdHRl
bXB0IGEgYmxpdC4KKyAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHdpZHRoLCBoZWlnaHQsIDAs
IDAsIHdpZHRoLCBoZWlnaHQsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLkxJTkVBUik7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgYmxpdEZyYW1lYnVmZmVy
IGZvciBtdWx0aXNhbXBsZSByZXNvbHZlIik7CisKKyAgLy8gVHJ5IGEgcmVhZGJhY2suCisgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBkcmF3ZmIpOworICB2YXIgcmVh
ZEJhY2tCdWYgPSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgIHd0dS5j
aGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIFswLjAsIDEuMCwgMC4wXSwg
InNob3VsZCBiZSBncmVlbiIsIHVuZGVmaW5lZCwgcmVhZEJhY2tCdWYsIGdsLkZMT0FUKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBmbG9hdGluZy1wb2lu
dCBjYW52YXMgcmVhZGJhY2siKTsKKworICAvLyBJZiBkZWZhdWx0IGJhY2tidWZmZXIgaXMgUkdC
IGFuZCBub24tYW50aWFsaWFzZWQsIHRlc3QgYmxpdHRpbmcgdG8gaXQgdG9vLgorICBpZiAoYXJn
cyAmJiAhYXJnc1snYWxwaGEnXSAmJiAhYXJnc1snYW50aWFsaWFzJ10pIHsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZHJhd2ZiKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuYmxpdEZyYW1lYnVm
ZmVyKDAsIDAsIHdpZHRoLCBoZWlnaHQsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLkNPTE9SX0JV
RkZFUl9CSVQsIGdsLkxJTkVBUik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJhZnRlciBibGl0IHRvIGRlZmF1bHQgYmFjayBidWZmZXIiKTsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbIDAsIDI1NSwgMCwgMjU1IF0sICJkZWZhdWx0IGJhY2sgYnVmZmVyIHNob3VsZCBi
ZSBncmVlbiIpOworICB9Cit9CisKKy8vIFRoZSBmb3JtYXQgb2YgdGhlIGJhY2sgYnVmZmVyIHNo
b3VsZCBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgYmVoYXZpb3Igb2YgdGhpcyB0ZXN0LgorcnVuV2l0
aENvbnRleHRDcmVhdGlvbkFyZ3VtZW50cyh1bmRlZmluZWQpOworcnVuV2l0aENvbnRleHRDcmVh
dGlvbkFyZ3VtZW50cyh7IGFscGhhOiB0cnVlLCBhbnRpYWxpYXM6IHRydWUgfSk7CitydW5XaXRo
Q29udGV4dENyZWF0aW9uQXJndW1lbnRzKHsgYWxwaGE6IHRydWUsIGFudGlhbGlhczogZmFsc2Ug
fSk7CitydW5XaXRoQ29udGV4dENyZWF0aW9uQXJndW1lbnRzKHsgYWxwaGE6IGZhbHNlLCBhbnRp
YWxpYXM6IHRydWUgfSk7CitydW5XaXRoQ29udGV4dENyZWF0aW9uQXJndW1lbnRzKHsgYWxwaGE6
IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRm
cmFtZWJ1ZmZlci1yZXNvbHZlLXRvLWJhY2stYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRm
cmFtZWJ1ZmZlci1yZXNvbHZlLXRvLWJhY2stYnVmZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRkYmRj
NGU5ZDFhYzgzMmZmYzlmYmZkZmI4MDE4M2RhMmRmNTNkYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9y
ZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLXJlc29sdmUtdG8tYmFjay1idWZmZXIuaHRtbApAQCAt
MCwwICsxLDI0NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgQmxpdEZyYW1lYnVmZmVyIFJlc29sdmUgdG8gQmFjayBCdWZmZXI8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNhbnZhc0hlYWRlciI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgYmVoYXZpb3Igb2YgYmxpdEZyYW1lYnVm
ZmVyIHdoZW4gcmVzb2x2aW5nIGRpcmVjdGx5IHRvIHRoZSBiYWNrIGJ1ZmZlci4iKTsKKworZGVi
dWcoIlJlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0naHR0cDovL2NyYnVnLmNvbS82OTk1NjYn
Pmh0dHA6Ly9jcmJ1Zy5jb20vNjk5NTY2PC9hPiIpOworCitmdW5jdGlvbiBydW5UZXN0KHRlc3RQ
YXJhbXMpIHsKKyAgICBjb25zdCBzeiA9IDY0OworCisgICAgaWYgKHRlc3RQYXJhbXMubXVsdGlz
YW1wbGVkID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGVzdFBhcmFtcy5tdWx0aXNhbXBsZWQg
PSB0cnVlOworICAgIH0KKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdGluZyB3aXRo
IGFscGhhID0gJyArIHRlc3RQYXJhbXMuYXR0cmlicy5hbHBoYSArCisgICAgICAgICAgJywgYW50
aWFsaWFzID0gJyArIHRlc3RQYXJhbXMuYXR0cmlicy5hbnRpYWxpYXMgKworICAgICAgICAgICcs
IGludGVybmFsZm9ybWF0ID0gJyArIHRlc3RQYXJhbXMuaW50ZXJuYWxmb3JtYXQgKworICAgICAg
ICAgICcsIG11bHRpc2FtcGxlZCA9ICcgKyB0ZXN0UGFyYW1zLm11bHRpc2FtcGxlZCk7CisKKyAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY2Fu
dmFzLndpZHRoID0gc3o7CisgICAgY2FudmFzLmhlaWdodCA9IHN6OworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjYW52YXNIZWFkZXInKS5hcHBlbmRDaGlsZChjYW52YXMpOworICAgIHZh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB0ZXN0UGFyYW1zLmF0dHJpYnMsIDIp
OworCisgICAgLy8gRmluZCB0aGUgc3VwcG9ydGVkIHNhbXBsZXMgZm9yIGEgbXVsdGlzYW1wbGVk
IHJlbmRlcmJ1ZmZlciBvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJuYWwgZm9ybWF0LgorICAgIGxl
dCBzYW1wbGVzID0gWzBdOworICAgIGlmICh0ZXN0UGFyYW1zLm11bHRpc2FtcGxlZCkgeworICAg
ICAgICBzYW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCBnbFt0ZXN0UGFyYW1zLmludGVybmFsZm9ybWF0XSwgZ2wuU0FNUExFUyk7CisgICAgICAg
IGlmICghc2FtcGxlcyB8fCAhc2FtcGxlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkF0IGxlYXN0IG9uZSBtdWx0aXNhbXBsZWQgZm9ybWF0IGlzIHJlcXVpcmVkIHRvIGJlIHN1
cHBvcnRlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gQ3JlYXRlIGEgZnJhbWVidWZmZXIgd2l0aCBhIG11bHRpc2FtcGxlZCByZW5kZXJidWZmZXIu
CisgICAgbGV0IHJiID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVzWzBdLCBnbFt0ZXN0UGFyYW1zLmlu
dGVybmFsZm9ybWF0XSwgc3osIHN6KTsKKworICAgIC8vIENyZWF0ZSBhIGZyYW1lYnVmZmVyLgor
ICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJi
KTsKKworICAgIC8vIENoZWNrIGZvciBjb21wbGV0ZW5lc3MuCisgICAgaWYgKGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRF
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlJlbmRlcmluZyB0byBhIG11bHRpc2FtcGxlZCByZW5k
ZXJidWZmZXIgb2YgZm9ybWF0ICIgKyB0ZXN0UGFyYW1zLmludGVybmFsZm9ybWF0ICsgIiBpcyBy
ZXF1aXJlZCBieSB0aGUgc3BlYyIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
Q2xlYXIgdG8gc3BlY2lmaWVkIGNvbG9yLgorICAgIGdsLmNsZWFyQ29sb3IuYXBwbHkoZ2wsIHRl
c3RQYXJhbXMuY2xlYXJDb2xvcik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisKKyAgICAvLyBVbmJpbmQgZHJhdyBmcmFtZWJ1ZmZlci4gUmVhZCBmcmFtZWJ1ZmZlciBpcyBu
b3cgdXNlciBmcmFtZWJ1ZmZlcjsKKyAgICAvLyBkcmF3IGZyYW1lYnVmZmVyIGlzIGRlZmF1bHQg
ZnJhbWVidWZmZXIuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIs
IG51bGwpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91
bGQgYmUgbm8gZXJyb3JzIGJlZm9yZSBibGl0Iik7CisKKyAgICAvLyBCbGl0IGZyb20gdXNlciBm
cmFtZWJ1ZmZlciB0byBkZWZhdWx0IGZyYW1lYnVmZmVyLgorICAgIGdsLmJsaXRGcmFtZWJ1ZmZl
cigwLCAwLCBzeiwgc3osIDAsIDAsIHN6LCBzeiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVB
UkVTVCk7CisKKyAgICBpZiAodGVzdFBhcmFtcy5zaG91bGRTdWNjZWVkKSB7CisgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGxlZ2FsIHRvIGJs
aXQvcmVzb2x2ZSB0byBkZWZhdWx0IGJhY2sgYnVmZmVyIik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbmNvbXBh
dGlibGUgc3JjL2Rlc3QgYmxpdEZyYW1lYnVmZmVyIGNvbWJpbmF0aW9uIG11c3QgZmFpbCIpOwor
ICAgIH0KKworICAgIC8vIFVuYmluZCB1c2VyIGZyYW1lYnVmZmVyIGNvbXBsZXRlbHkuCisgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIG51bGwpOworCisgICAgaWYg
KHRlc3RQYXJhbXMuc2hvdWxkU3VjY2VlZCkgeworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvciBiZWZvcmUgcmVhZGJhY2siKTsK
KyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgOCwgOCwgdGVzdFBhcmFtcy5y
ZXN1bHRDb2xvcik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKKyAgICB9Cit9CisKK3ZhciB0ZXN0cyA9IFsKKyAgICAvLyBOby1hbHBoYSwgbm8tYW50aWFs
aWFzLCBSR0I4IHNvdXJjZQorICAgIHsKKyAgICAgICAgYXR0cmliczogeworICAgICAgICAgICAg
YWxwaGE6IGZhbHNlLAorICAgICAgICAgICAgYW50aWFsaWFzOiBmYWxzZSwKKyAgICAgICAgfSwK
KyAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICdSR0I4JywKKyAgICAgICAgY2xlYXJDb2xvcjogWyAw
LjAsIDEuMCwgMC4wLCAwLjUgXSwKKyAgICAgICAgcmVzdWx0Q29sb3I6IFsgMCwgMjU1LCAwLCAy
NTUgXSwKKyAgICAgICAgc2hvdWxkU3VjY2VlZDogdHJ1ZSwKKyAgICB9LAorICAgIC8vIE5vLWFs
cGhhLCBuby1hbnRpYWxpYXMsIFJHQkE4IHNvdXJjZQorICAgIHsKKyAgICAgICAgYXR0cmliczog
eworICAgICAgICAgICAgYWxwaGE6IGZhbHNlLAorICAgICAgICAgICAgYW50aWFsaWFzOiBmYWxz
ZSwKKyAgICAgICAgfSwKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICdSR0JBOCcsCisgICAgICAg
IGNsZWFyQ29sb3I6IFsgMC4wLCAxLjAsIDAuMCwgMC41IF0sCisgICAgICAgIHJlc3VsdENvbG9y
OiBbIDAsIDI1NSwgMCwgMjU1IF0sCisgICAgICAgIHNob3VsZFN1Y2NlZWQ6IGZhbHNlLAorICAg
IH0sCisgICAgLy8gTm8tYWxwaGEsIG5vLWFudGlhbGlhcywgUkdCQTggc291cmNlLCBzaW5nbGUt
c2FtcGxlZCBibGl0CisgICAgeworICAgICAgICBhdHRyaWJzOiB7CisgICAgICAgICAgICBhbHBo
YTogZmFsc2UsCisgICAgICAgICAgICBhbnRpYWxpYXM6IGZhbHNlLAorICAgICAgICB9LAorICAg
ICAgICBpbnRlcm5hbGZvcm1hdDogJ1JHQkE4JywKKyAgICAgICAgY2xlYXJDb2xvcjogWyAwLjAs
IDEuMCwgMC4wLCAwLjUgXSwKKyAgICAgICAgcmVzdWx0Q29sb3I6IFsgMCwgMjU1LCAwLCAyNTUg
XSwKKyAgICAgICAgc2hvdWxkU3VjY2VlZDogdHJ1ZSwKKyAgICAgICAgbXVsdGlzYW1wbGVkOiBm
YWxzZSwKKyAgICB9LAorICAgIC8vIEFscGhhLCBuby1hbnRpYWxpYXMsIFJHQjggc291cmNlCisg
ICAgeworICAgICAgICBhdHRyaWJzOiB7CisgICAgICAgICAgICBhbHBoYTogdHJ1ZSwKKyAgICAg
ICAgICAgIGFudGlhbGlhczogZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIGludGVybmFsZm9y
bWF0OiAnUkdCOCcsCisgICAgICAgIGNsZWFyQ29sb3I6IFsgMC4wLCAxLjAsIDAuMCwgMS4wIF0s
CisgICAgICAgIHJlc3VsdENvbG9yOiBbIDAsIDI1NSwgMCwgMjU1IF0sCisgICAgICAgIHNob3Vs
ZFN1Y2NlZWQ6IGZhbHNlLAorICAgIH0sCisgICAgLy8gTm8tYWxwaGEsIG5vLWFudGlhbGlhcywg
UkdCQTggc291cmNlCisgICAgLy8gcHJlbXVsdGlwbHlBbHBoYTpmYWxzZSBqdXN0IHRvIGF2b2lk
IHNlbWFudGljYWxseSBpbmNvcnJlY3QKKyAgICAvLyBjb2xvcnMgKHNob3VsZCBvbmx5IGFmZmVj
dCByZW5kZXJpbmcsIG5vdCBjb250ZW50cyBvZiBXZWJHTAorICAgIC8vIGJhY2sgYnVmZmVyKQor
ICAgIHsKKyAgICAgICAgYXR0cmliczogeworICAgICAgICAgICAgYWxwaGE6IGZhbHNlLAorICAg
ICAgICAgICAgYW50aWFsaWFzOiBmYWxzZSwKKyAgICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6
IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICBpbnRlcm5hbGZvcm1hdDogJ1JHQkE4JywKKyAg
ICAgICAgY2xlYXJDb2xvcjogWyAwLjAsIDEuMCwgMC4wLCAxLjAgXSwKKyAgICAgICAgcmVzdWx0
Q29sb3I6IFsgMCwgMjU1LCAwLCAyNTUgXSwKKyAgICAgICAgc2hvdWxkU3VjY2VlZDogZmFsc2Us
CisgICAgfSwKKyAgICAvLyBBbHBoYSwgbm8tYW50aWFsaWFzLCBSR0JBOCBzb3VyY2UKKyAgICAv
LyBwcmVtdWx0aXBseUFscGhhOmZhbHNlIGp1c3QgdG8gYXZvaWQgc2VtYW50aWNhbGx5IGluY29y
cmVjdAorICAgIC8vIGNvbG9ycyAoc2hvdWxkIG9ubHkgYWZmZWN0IHJlbmRlcmluZywgbm90IGNv
bnRlbnRzIG9mIFdlYkdMCisgICAgLy8gYmFjayBidWZmZXIpCisgICAgeworICAgICAgICBhdHRy
aWJzOiB7CisgICAgICAgICAgICBhbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgIGFudGlhbGlhczog
ZmFsc2UsCisgICAgICAgICAgICBwcmVtdWx0aXBseUFscGhhOiBmYWxzZSwKKyAgICAgICAgfSwK
KyAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICdSR0JBOCcsCisgICAgICAgIGNsZWFyQ29sb3I6IFsg
MC4wLCAxLjAsIDAuMCwgMC4wIF0sCisgICAgICAgIHJlc3VsdENvbG9yOiBbIDAsIDI1NSwgMCwg
MCBdLAorICAgICAgICBzaG91bGRTdWNjZWVkOiB0cnVlLAorICAgIH0sCisKKyAgICAvLyBBbGwg
YXR0ZW1wdHMgdG8gYmxpdCB0byBhbiBhbnRpYWxpYXNlZCBiYWNrIGJ1ZmZlciBzaG91bGQgZmFp
bC4KKworICAgIC8vIE5vLWFscGhhLCBhbnRpYWxpYXMsIFJHQjggc291cmNlCisgICAgeworICAg
ICAgICBhdHRyaWJzOiB7CisgICAgICAgICAgICBhbHBoYTogZmFsc2UsCisgICAgICAgICAgICBh
bnRpYWxpYXM6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIGludGVybmFsZm9ybWF0OiAnUkdC
OCcsCisgICAgICAgIGNsZWFyQ29sb3I6IFsgMC4wLCAxLjAsIDAuMCwgMS4wIF0sCisgICAgICAg
IHJlc3VsdENvbG9yOiBbIDAsIDI1NSwgMCwgMjU1IF0sCisgICAgICAgIHNob3VsZFN1Y2NlZWQ6
IGZhbHNlLAorICAgIH0sCisgICAgLy8gQWxwaGEsIGFudGlhbGlhcywgUkdCOCBzb3VyY2UKKyAg
ICB7CisgICAgICAgIGF0dHJpYnM6IHsKKyAgICAgICAgICAgIGFscGhhOiB0cnVlLAorICAgICAg
ICAgICAgYW50aWFsaWFzOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBpbnRlcm5hbGZvcm1h
dDogJ1JHQjgnLAorICAgICAgICBjbGVhckNvbG9yOiBbIDAuMCwgMS4wLCAwLjAsIDEuMCBdLAor
ICAgICAgICByZXN1bHRDb2xvcjogWyAwLCAyNTUsIDAsIDI1NSBdLAorICAgICAgICBzaG91bGRT
dWNjZWVkOiBmYWxzZSwKKyAgICB9LAorICAgIC8vIE5vLWFscGhhLCBhbnRpYWxpYXMsIFJHQkE4
IHNvdXJjZQorICAgIC8vIHByZW11bHRpcGx5QWxwaGE6ZmFsc2UganVzdCB0byBhdm9pZCBzZW1h
bnRpY2FsbHkgaW5jb3JyZWN0CisgICAgLy8gY29sb3JzIChzaG91bGQgb25seSBhZmZlY3QgcmVu
ZGVyaW5nLCBub3QgY29udGVudHMgb2YgV2ViR0wKKyAgICAvLyBiYWNrIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIGF0dHJpYnM6IHsKKyAgICAgICAgICAgIGFscGhhOiBmYWxzZSwKKyAgICAgICAg
ICAgIGFudGlhbGlhczogdHJ1ZSwKKyAgICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IGZhbHNl
LAorICAgICAgICB9LAorICAgICAgICBpbnRlcm5hbGZvcm1hdDogJ1JHQkE4JywKKyAgICAgICAg
Y2xlYXJDb2xvcjogWyAwLjAsIDEuMCwgMC4wLCAxLjAgXSwKKyAgICAgICAgcmVzdWx0Q29sb3I6
IFsgMCwgMjU1LCAwLCAyNTUgXSwKKyAgICAgICAgc2hvdWxkU3VjY2VlZDogZmFsc2UsCisgICAg
fSwKKyAgICAvLyBBbHBoYSwgYW50aWFsaWFzLCBSR0JBOCBzb3VyY2UKKyAgICAvLyBwcmVtdWx0
aXBseUFscGhhOmZhbHNlIGp1c3QgdG8gYXZvaWQgc2VtYW50aWNhbGx5IGluY29ycmVjdAorICAg
IC8vIGNvbG9ycyAoc2hvdWxkIG9ubHkgYWZmZWN0IHJlbmRlcmluZywgbm90IGNvbnRlbnRzIG9m
IFdlYkdMCisgICAgLy8gYmFjayBidWZmZXIpCisgICAgeworICAgICAgICBhdHRyaWJzOiB7Cisg
ICAgICAgICAgICBhbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgIGFudGlhbGlhczogdHJ1ZSwKKyAg
ICAgICAgICAgIHByZW11bHRpcGx5QWxwaGE6IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICBp
bnRlcm5hbGZvcm1hdDogJ1JHQkE4JywKKyAgICAgICAgY2xlYXJDb2xvcjogWyAwLjAsIDEuMCwg
MC4wLCAwLjAgXSwKKyAgICAgICAgcmVzdWx0Q29sb3I6IFsgMCwgMjU1LCAwLCAwIF0sCisgICAg
ICAgIHNob3VsZFN1Y2NlZWQ6IGZhbHNlLAorICAgIH0sCitdOworCitmb3IgKHZhciBpaSBpbiB0
ZXN0cykgeworICAgIHJ1blRlc3QodGVzdHNbaWldKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVy
aW5nL2JsaXRmcmFtZWJ1ZmZlci1zY2lzc29yLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxp
dGZyYW1lYnVmZmVyLXNjaXNzb3ItZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZTJkZmFlZmE1
ZmI5NjhkNjJhZTJmZTRlYWFkMDg5NWVjMWViNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVy
aW5nL2JsaXRmcmFtZWJ1ZmZlci1zY2lzc29yLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDE2MCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgQmxpdEZyYW1lYnVmZmVyIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGJsaXRGcmFtZWJ1ZmZl
ciB3aGVuIHNjaXNzb3IgdGVzdCBpcyBlbmFibGVkLiIpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKworLy8gRGVmaW5lIHRoZSBzcmMg
cmVnaW9uIGFuZCBkc3QgcmVnaW9uIGZvciBibGl0RnJhbWVidWZmZXIKK3ZhciBibGl0X3NyYyA9
IFswLCAwLCA0LCA0XTsKK3ZhciBibGl0X2RzdCA9IFsyLCAyLCA2LCA2XTsKKworaWYgKCFnbCkg
eworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxz
ZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIHZhciBi
b3VuZHMgPSBbCisgICAgICAgIFswLCAwLCA0LCA0XSwgLy8gUGFydGlhbGx5IGludGVyc2VjdHMg
d2l0aCBibGl0RnJhbWVidWZmZXIncyBkc3QgcmVnaW9uCisgICAgICAgIFswLCAwLCAyLCAyXSwg
Ly8gTm8gaW50ZXJzZWN0aW9uIHdpdGggYmxpdEZyYW1lYnVmZmVyJ3MgZHN0IHJlZ2lvbgorICAg
IF07CisKKyAgICAvLyBXZSBjYW4gY29tcHV0ZSB0aGUgcmVhbCBkcmF3aW5nIGFyZWEgYnkgaW50
ZXJzZWN0aW5nIHRoZSBzY2lzc29yIGJvdW5kIHdpdGggZHN0IHJlZ2lvbiBvZiBibGl0dGluZy4K
KyAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IFsKKyAgICAgICAgWzIsIDIsIDQsIDRdLAorICAgICAg
ICBbMCwgMCwgMCwgMF0sCisgICAgXTsKKworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBib3Vu
ZHMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIGJsaXRmcmFtZWJ1ZmZlcl9zY2lzc29yKGdsLlJH
QkE4LCBnbC5SR0JBOCwgYm91bmRzW2lpXSwgaW50ZXJzZWN0aW9uc1tpaV0pOworICAgICAgICBi
bGl0ZnJhbWVidWZmZXJfc2Npc3NvcihnbC5SR0JBOCwgZ2wuU1JHQjhfQUxQSEE4LCBib3VuZHNb
aWldLCBpbnRlcnNlY3Rpb25zW2lpXSk7CisgICAgICAgIGJsaXRmcmFtZWJ1ZmZlcl9zY2lzc29y
KGdsLlNSR0I4X0FMUEhBOCwgZ2wuUkdCQTgsIGJvdW5kc1tpaV0sIGludGVyc2VjdGlvbnNbaWld
KTsKKyAgICAgICAgYmxpdGZyYW1lYnVmZmVyX3NjaXNzb3IoZ2wuU1JHQjhfQUxQSEE4LCBnbC5T
UkdCOF9BTFBIQTgsIGJvdW5kc1tpaV0sIGludGVyc2VjdGlvbnNbaWldKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNoZWNrUGl4ZWwoY29sb3IsIGV4cGVjdGVkQ29sb3IpIHsKKyAgdmFyIHRvbGVy
YW5jZSA9IDM7CisgIHJldHVybiAoTWF0aC5hYnMoY29sb3JbMF0gLSBleHBlY3RlZENvbG9yWzBd
KSA8PSB0b2xlcmFuY2UgJiYKKyAgICAgICAgICBNYXRoLmFicyhjb2xvclsxXSAtIGV4cGVjdGVk
Q29sb3JbMV0pIDw9IHRvbGVyYW5jZSAmJgorICAgICAgICAgIE1hdGguYWJzKGNvbG9yWzJdIC0g
ZXhwZWN0ZWRDb2xvclsyXSkgPD0gdG9sZXJhbmNlICYmCisgICAgICAgICAgTWF0aC5hYnMoY29s
b3JbM10gLSBleHBlY3RlZENvbG9yWzNdKSA8PSB0b2xlcmFuY2UpOworfQorCitmdW5jdGlvbiBi
bGl0ZnJhbWVidWZmZXJfc2Npc3NvcihyZWFkYnVmZmVyRm9ybWF0LCBkcmF3YnVmZmVyRm9ybWF0
LCBib3VuZCwgaW50ZXJzZWN0aW9uKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZWFk
IGJ1ZmZlciBmb3JtYXQgaXM6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHJlYWRidWZmZXJG
b3JtYXQpICsgIiwgZHJhdyBidWZmZXIgZm9ybWF0IGlzOiAiICsgd3R1LmdsRW51bVRvU3RyaW5n
KGdsLCBkcmF3YnVmZmVyRm9ybWF0KSk7CisKKworICAgIC8vIEluaXRpYXRlIGRhdGEgdG8gcmVh
ZCBmcmFtZWJ1ZmZlcgorICAgIHZhciBzaXplID0gODsKKyAgICB2YXIgZGF0YSA9IG5ldyBVaW50
OEFycmF5KHNpemUgKiBzaXplICogNCk7CisgICAgdmFyIGNvbG9yID0gWzI1MCwgMTAwLCAxNSwg
MjU1XTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc2l6ZSAqIHNpemUgKiA0OyBpaSArPSA0
KSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCA0OyArK2pqKSB7CisgICAgICAgICAg
ZGF0YVtpaSArIGpqXSA9IGNvbG9yW2pqXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZl
ZWQgZGF0YSB0byByZWFkIGJ1ZmZlci4gRmVlZCAwIHRvIGRyYXcgYnVmZmVyLgorICAgIHZhciB0
ZXhfcmVhZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXhfcmVhZCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBy
ZWFkYnVmZmVyRm9ybWF0LCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBkYXRhKTsKKworICAgIHZhciBmYm9fcmVhZCA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsKKyAg
ICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4X3JlYWQsIDApOworCisgICAgdmFyIHRleF9k
cmF3ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleF9kcmF3KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGRyYXdi
dWZmZXJGb3JtYXQsIHNpemUsIHNpemUsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworCisgICAgdmFyIGZib19kcmF3ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhfZHJhdywgMCk7CisgICAgaWYgKGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuUkVBRF9GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09N
UExFVEUgfHwgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAh
PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1
ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRW5h
YmxlIHNjaXNzb3IgdGVzdC4gVGhlbiBibGl0IGZyYW1lYnVmZmVyLgorICAgIGdsLmVuYWJsZShn
bC5TQ0lTU09SX1RFU1QpOworICAgIGdsLnNjaXNzb3IoYm91bmRbMF0sIGJvdW5kWzFdLCBib3Vu
ZFsyXSwgYm91bmRbM10pOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcihibGl0X3NyY1swXSwgYmxp
dF9zcmNbMV0sIGJsaXRfc3JjWzJdLCBibGl0X3NyY1szXSwgYmxpdF9kc3RbMF0sIGJsaXRfZHN0
WzFdLCBibGl0X2RzdFsyXSwgYmxpdF9kc3RbM10sIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLkxJ
TkVBUik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJibGl0ZnJh
bWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIFJlYWQgcGl4ZWxzIGFuZCBDb21w
YXJpc29uCisgICAgdmFyIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KHNpemUgKiBzaXplICogNCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19kcmF3KTsK
KyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHNpemUsIHNpemUsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIHBpeGVscyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJyZWFkUGl4ZWxzIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICB2YXIgYmxpdENvbG9yOworICAg
IHZhciBleHBlY3RlZENvbG9yOworICAgIHZhciBjbGVhckNvbG9yID0gWzAsIDAsIDAsIDBdOwor
CisgICAgaWYgKHJlYWRidWZmZXJGb3JtYXQgPT0gZHJhd2J1ZmZlckZvcm1hdCkgeworICAgICAg
ICBibGl0Q29sb3IgPSBjb2xvcjsKKyAgICB9IGVsc2UgaWYgKHJlYWRidWZmZXJGb3JtYXQgPT0g
Z2wuU1JHQjhfQUxQSEE4KSB7CisgICAgICAgIGJsaXRDb2xvciA9IHd0dS5zUkdCVG9MaW5lYXIo
Y29sb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJsaXRDb2xvciA9IHd0dS5saW5lYXJUb1NS
R0IoY29sb3IpOworICAgIH0KKworICAgIHZhciBmYWlsZWQgPSBmYWxzZTsKKyAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgc2l6ZTsgKytpaSkgeworICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpq
IDwgc2l6ZTsgKytqaikgeworICAgICAgICAgICAgaWYgKGlpID49IGludGVyc2VjdGlvblswXSAm
JiBqaiA+PSBpbnRlcnNlY3Rpb25bMV0gJiYgaWkgPCBpbnRlcnNlY3Rpb25bMl0gJiYgamogPCBp
bnRlcnNlY3Rpb25bM10pIHsKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9yID0gYmxpdENv
bG9yOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9y
ID0gY2xlYXJDb2xvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBpbmRleCA9IChp
aSAqIHNpemUgKyBqaikgKiA0OworICAgICAgICAgICAgdmFyIHBpeGVsQ29sb3IgPSBbcGl4ZWxz
W2luZGV4XSwgcGl4ZWxzW2luZGV4ICsgMV0sIHBpeGVsc1tpbmRleCArIDJdLCBwaXhlbHNbaW5k
ZXggKyAzXV07CisgICAgICAgICAgICBpZiAoY2hlY2tQaXhlbChwaXhlbENvbG9yLCBleHBlY3Rl
ZENvbG9yKSA9PSBmYWxzZSkgeworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgZGVidWcoIlBpeGVscyBjb21wYXJpc29uIGZhaWxlZC4gUGl4ZWwgYXQgWyIg
KyBqaiArICIsICIgKyBpaSArICJdIHNob3VsZCBiZSAoIiArIGV4cGVjdGVkQ29sb3IgKyAiKSwg
YnV0IHRoZSBhY3R1YWwgY29sb3IgaXMgKCIgKyBwaXhlbENvbG9yICsgIikiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZmFpbGVkID09IGZhbHNlKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkFsbCBwaXhlbHMgY29tcGFyaXNpb24gcGFzc2VkISIpOworICAgIH0K
KworICAgIC8vIERlaW5pdAorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZmJvX3JlYWQpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
b19kcmF3KTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleF9yZWFkKTsKKyAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleF9kcmF3KTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9ibGl0ZnJhbWVi
dWZmZXItc2l6ZS1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9ibGl0ZnJhbWVidWZmZXItc2l6
ZS1vdmVyZmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMjk0NmNiODIzZWJmMzMyYTMxMWMzODE4ZmZk
MWMzZjA3OWRlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZl
ci1zaXplLW92ZXJmbG93Lmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQmxpdEZyYW1lYnVmZmVy
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iOCIgaGVpZ2h0PSI4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyBi
bGl0RnJhbWVidWZmZXIgd29uJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHRoZSBjb21wdXRlZCBzaXpl
cyBtaWdodCBvdmVyZmxvdy4iKTsKKwordmFyIHdpZHRoID0gODsKK3ZhciBoZWlnaHQgPSA4Owor
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsK
K2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7Cisg
ICAgYmxpdF9yZWdpb25fdGVzdCgpOworfQorCitmdW5jdGlvbiBibGl0X3JlZ2lvbl90ZXN0KCkg
eworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJCZWdpbiB0byBydW4gYmxpdEZyYW1lYnVm
ZmVyLiBUaGUgY29tcHV0ZWQgd2lkdGgvaGVpZ2h0IG9mIHNyYyBhbmQvb3IgZHN0IHJlZ2lvbiBt
aWdodCBvdmVyZmxvdyBkdXJpbmcgYmxpdHRpbmcuIik7CisgICAgdmFyIHRleDAgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MCk7Cisg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdo
dCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgdmFyIGZiMCA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJB
TUVCVUZGRVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuUkVBRF9GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDAsIDApOwor
CisgICAgdmFyIHRleDEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4MSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgdmFyIGZiMSA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZiMSk7CisgICAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfMkQsIHRleDEsIDApOworICAgIGlmICgoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5SRUFEX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgfHwKKyAg
ICAgICAgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0g
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZyYW1lYnVm
ZmVyIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgbWF4
ID0gMHg3ZmZmZmZmZjsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgbWF4LCBtYXgsIDAs
IDAsIHdpZHRoLCBoZWlnaHQsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAg
IGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwLCAwLCBtYXgsIG1heCwg
Z2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgZ2wuYmxpdEZyYW1lYnVmZmVy
KDAsIDAsIG1heCwgbWF4LCAwLCAwLCBtYXgsIG1heCwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wu
TkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJVc2lu
ZyBtYXggMzItYml0IGludGVnZXIgYXMgYmxpdEZyYW1lYnVmZmVyIHBhcmFtZXRlciBzaG91bGQg
c3VjY2VlZC4iKTsKKworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigtMSwgLTEsIG1heCAtIDEsIG1h
eCAtIDEsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJF
U1QpOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB3aWR0aCwgaGVpZ2h0LCAtMSwgLTEs
IG1heCAtIDEsIG1heCAtIDEsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAg
IGdsLmJsaXRGcmFtZWJ1ZmZlcigtMSwgLTEsIG1heCAtIDEsIG1heCAtIDEsIC0xLCAtMSwgbWF4
IC0gMSwgbWF4IC0gMSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJVc2luZyBibGl0RnJhbWVidWZmZXIg
cGFyYW1ldGVycyB3aGVyZSBjYWxjdWxhdGVkIHdpZHRoL2hlaWdodCBtYXRjaGVzIG1heCAzMi1i
aXQgaW50ZWdlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigt
MSwgLTEsIG1heCwgbWF4LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5DT0xPUl9CVUZGRVJfQklU
LCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZB
TFVFLCAiVXNpbmcgc291cmNlIHdpZHRoL2hlaWdodCBncmVhdGVyIHRoYW4gbWF4IDMyLWJpdCBp
bnRlZ2VyIHNob3VsZCBmYWlsLiIpOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcihtYXgsIG1heCwg
LTEsIC0xLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFS
RVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiVXNp
bmcgc291cmNlIHdpZHRoL2hlaWdodCBncmVhdGVyIHRoYW4gbWF4IDMyLWJpdCBpbnRlZ2VyIHNo
b3VsZCBmYWlsLiIpOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB3aWR0aCwgaGVpZ2h0
LCAtMSwgLTEsIG1heCwgbWF4LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiVXNpbmcgZGVzdGlu
YXRpb24gd2lkdGgvaGVpZ2h0IGdyZWF0ZXIgdGhhbiBtYXggMzItYml0IGludGVnZXIgc2hvdWxk
IGZhaWwuIik7CisgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHdpZHRoLCBoZWlnaHQsIG1h
eCwgbWF4LCAtMSwgLTEsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJVc2luZyBkZXN0aW5hdGlv
biB3aWR0aC9oZWlnaHQgZ3JlYXRlciB0aGFuIG1heCAzMi1iaXQgaW50ZWdlciBzaG91bGQgZmFp
bC4iKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoLTEsIC0xLCBtYXgsIG1heCwgLTEsIC0xLCBt
YXgsIG1heCwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIlVzaW5nIGJvdGggc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiB3aWR0aC9oZWlnaHQgZ3JlYXRlciB0aGFuIG1heCAzMi1iaXQgaW50ZWdlciBz
aG91bGQgZmFpbC4iKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoLW1heCAtIDEsIC1tYXggLSAx
LCBtYXgsIG1heCwgLW1heCAtIDEsIC1tYXggLSAxLCBtYXgsIG1heCwgZ2wuQ09MT1JfQlVGRkVS
X0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9WQUxVRSwgIlVzaW5nIG1pbmltdW0gYW5kIG1heGltdW0gaW50ZWdlcnMgZm9yIGFsbCBib3Vu
ZGFyaWVzIHNob3VsZCBmYWlsLiIpOworCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgbnVsbCkKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVs
bCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIG51bGwpOwor
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4MCk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgxKTsK
KyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYjApOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVy
KGZiMSk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9ibGl0ZnJhbWVidWZmZXItc3JnYi1h
bmQtbGluZWFyLWRyYXdidWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1z
cmdiLWFuZC1saW5lYXItZHJhd2J1ZmZlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWI4YzNkZGFiYzU1
ZjE3OTZhZDM2YjRmMDRkNTczNWNlN2Y0NzYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmlu
Zy9ibGl0ZnJhbWVidWZmZXItc3JnYi1hbmQtbGluZWFyLWRyYXdidWZmZXJzLmh0bWwKQEAgLTAs
MCArMSwyMDcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPldlYkdMIEJsaXRGcmFtZWJ1ZmZlciBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGJsaXRG
cmFtZWJ1ZmZlciB3aXRoIG11bHRpcGxlIGRyYXcgYnVmZmVycyAoc3JnYiBpbWFnZSBhbmQgbGlu
ZWFyIGltYWdlKS4iKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIiwg
dW5kZWZpbmVkLCAyKTsKK3ZhciBsaW5lYXJNYXNrID0gMTsKK3ZhciBzcmdiTWFzayA9IDI7CisK
K2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisK
KyAgICB2YXIgZmlsdGVycyA9IFtnbC5MSU5FQVIsIGdsLk5FQVJFU1RdOworICAgIHZhciBkcmF3
YnVmZmVyc0Zvcm1hdHMgPSBbbGluZWFyTWFzaywgc3JnYk1hc2ssIGxpbmVhck1hc2sgfCBzcmdi
TWFza107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGZpbHRlcnMubGVuZ3RoOyArK2lpKSB7
CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBkcmF3YnVmZmVyc0Zvcm1hdHMubGVuZ3Ro
OyArK2pqKSB7CisgICAgICAgICAgICBibGl0ZnJhbWVidWZmZXJfc3JnYl9hbmRfbGluZWFyX2Ry
YXdidWZmZXJzKGdsLlNSR0I4X0FMUEhBOCwgZHJhd2J1ZmZlcnNGb3JtYXRzW2pqXSwgZmlsdGVy
c1tpaV0pOworICAgICAgICAgICAgYmxpdGZyYW1lYnVmZmVyX3NyZ2JfYW5kX2xpbmVhcl9kcmF3
YnVmZmVycyhnbC5SR0JBOCwgZHJhd2J1ZmZlcnNGb3JtYXRzW2pqXSwgZmlsdGVyc1tpaV0pOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBibGl0ZnJhbWVidWZmZXJfc3JnYl9hbmRf
bGluZWFyX2RyYXdidWZmZXJzKHJlYWRidWZmZXJGb3JtYXQsIGRyYXdidWZmZXJzRm9ybWF0TWFz
aywgZmlsdGVyKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUaGUgZmlsdGVyIGlzOiAi
ICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBmaWx0ZXIpKTsKKyAgICBkZWJ1ZygiUmVhZCBidWZm
ZXIgZm9ybWF0IGlzOiAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCByZWFkYnVmZmVyRm9ybWF0
KSk7CisgICAgdmFyIGRyYXdidWZmZXJzRm9ybWF0ID0gIlwwIjsKKyAgICBpZiAoZHJhd2J1ZmZl
cnNGb3JtYXRNYXNrICYgbGluZWFyTWFzaykgeworICAgICAgICBkcmF3YnVmZmVyc0Zvcm1hdCAr
PSAiIGxpbmVhciAiOworICAgIH0KKyAgICBpZiAoZHJhd2J1ZmZlcnNGb3JtYXRNYXNrICYgc3Jn
Yk1hc2spIHsKKyAgICAgICAgZHJhd2J1ZmZlcnNGb3JtYXQgKz0gIiBzcmdiICI7CisgICAgfQor
ICAgIGRlYnVnKCJUaGUgdGVzdCBoYXZlIG11bHRpcGxlIGRyYXcgYnVmZmVycywgdGhlIGltYWdl
cyBhcmU6ICIgKyBkcmF3YnVmZmVyc0Zvcm1hdCk7CisKKyAgICB2YXIgdGV4X3NyZ2IwID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIHZhciB0ZXhfc3JnYjEgPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgdmFyIHRleF9saW5lYXIwID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHZhciB0ZXhf
bGluZWFyMSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB2YXIgdGV4X3JlYWQgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgdmFyIGZib19yZWFkID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsK
KyAgICB2YXIgZmJvX2RyYXcgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworCisgICAgLy8gQ3Jl
YXRlIHJlYWQgYnVmZmVyIGFuZCBmZWVkIGRhdGEgdG8gdGhlIHJlYWQgYnVmZmVyCisgICAgdmFy
IHNpemUgPSA4OworICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSAqIHNpemUgKiA0
KTsKKyAgICB2YXIgY29sb3IgPSBbMjUwLCAxMDAsIDE1LCAyNTVdOworICAgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCBzaXplICogc2l6ZSAqIDQ7IGlpICs9IDQpIHsKKyAgICAgICAgZm9yICh2YXIg
amogPSAwOyBqaiA8IDQ7ICsramopIHsKKyAgICAgICAgICBkYXRhW2lpICsgampdID0gY29sb3Jb
ampdOworICAgICAgICB9CisgICAgfQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleF9yZWFkKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHJlYWRidWZm
ZXJGb3JtYXQsIHNpemUsIHNpemUsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGRhdGEp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7
CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleF9yZWFkLCAwKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNldHVwIHJlYWQgZnJhbWVidWZmZXIgc2hv
dWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIENyZWF0ZSBtdWx0aXBsZSB0ZXh0dXJlcy4gQXR0YWNo
IHRoZW0gYXMgZmJvJ3MgZHJhdyBidWZmZXJzLgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5E
UkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisKKyAgICB2YXIgZHJhd2J1ZmZlcnMgPSBbZ2wu
Tk9ORSwgZ2wuTk9ORSwgZ2wuTk9ORSwgZ2wuTk9ORV07CisgICAgaWYgKGRyYXdidWZmZXJzRm9y
bWF0TWFzayAmIHNyZ2JNYXNrKSB7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleF9zcmdiMCk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Z2wuU1JHQjhfQUxQSEE4LCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleF9zcmdiMCwgMCk7
CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleF9zcmdiMSk7CisgICAg
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuU1JHQjhfQUxQSEE4LCBzaXpl
LCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDIsIGdsLlRFWFRVUkVfMkQsIHRleF9zcmdiMSwgMCk7CisgICAgICAgIGRyYXdidWZmZXJz
WzBdID0gZ2wuQ09MT1JfQVRUQUNITUVOVDA7CisgICAgICAgIGRyYXdidWZmZXJzWzJdID0gZ2wu
Q09MT1JfQVRUQUNITUVOVDI7CisgICAgfQorCisgICAgaWYgKGRyYXdidWZmZXJzRm9ybWF0TWFz
ayAmIGxpbmVhck1hc2spIHsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4X2xpbmVhcjApOworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LlJHQkE4LCBzaXplLCBzaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsK
KyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDEsIGdsLlRFWFRVUkVfMkQsIHRleF9saW5lYXIwLCAwKTsKKyAgICAg
ICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4X2xpbmVhcjEpOworICAgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCBzaXplLCBzaXplLCAwLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDMsIGdsLlRF
WFRVUkVfMkQsIHRleF9saW5lYXIxLCAwKTsKKyAgICAgICAgZHJhd2J1ZmZlcnNbMV0gPSBnbC5D
T0xPUl9BVFRBQ0hNRU5UMTsKKyAgICAgICAgZHJhd2J1ZmZlcnNbM10gPSBnbC5DT0xPUl9BVFRB
Q0hNRU5UMzsKKyAgICB9CisKKyAgICBnbC5kcmF3QnVmZmVycyhkcmF3YnVmZmVycyk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzZXR1cCBkcmF3IGZyYW1lYnVm
ZmVyIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSB8fAorICAg
ICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLlJFQURfRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZyYW1lYnVmZmVy
IGluY29tcGxldGUgd2hlbiBzZXR1cCBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gQmxpdCB0byBtdWx0aXBsZSBkcmF3IGJ1ZmZlcnMgd2l0aCBz
cmdiIGltYWdlcyBhbmQgbGluZWFyIGltYWdlcworICAgIHZhciBkc3RTaXplID0gc2l6ZSAtIDE7
CisgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHNpemUsIHNpemUsIDAsIDAsIGRzdFNpemUs
IGRzdFNpemUsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGZpbHRlcik7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJibGl0ZnJhbWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQi
KTsKKworICAgIC8vIFJlYWQgcGl4ZWxzIGZyb20gc3JnYiBpbWFnZXMgYW5kIGxpbmVhciBpbWFn
ZXMKKyAgICB2YXIgc3JnYlBpeGVsczAgPSBuZXcgVWludDhBcnJheShkc3RTaXplICogZHN0U2l6
ZSAqIDQpOworICAgIHZhciBzcmdiUGl4ZWxzMSA9IG5ldyBVaW50OEFycmF5KGRzdFNpemUgKiBk
c3RTaXplICogNCk7CisgICAgdmFyIGxpbmVhclBpeGVsczAgPSBuZXcgVWludDhBcnJheShkc3RT
aXplICogZHN0U2l6ZSAqIDQpOworICAgIHZhciBsaW5lYXJQaXhlbHMxID0gbmV3IFVpbnQ4QXJy
YXkoZHN0U2l6ZSAqIGRzdFNpemUgKiA0KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVB
RF9GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgIGlmIChkcmF3YnVmZmVyc0Zvcm1hdE1hc2sg
JiBzcmdiTWFzaykgeworICAgICAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQw
KTsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCBkc3RTaXplLCBkc3RTaXplLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBzcmdiUGl4ZWxzMCk7CisgICAgICAgIGdsLnJlYWRCdWZmZXIo
Z2wuQ09MT1JfQVRUQUNITUVOVDIpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIGRzdFNp
emUsIGRzdFNpemUsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHNyZ2JQaXhlbHMxKTsKKyAg
ICB9CisKKyAgICBpZiAoZHJhd2J1ZmZlcnNGb3JtYXRNYXNrICYgbGluZWFyTWFzaykgeworICAg
ICAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsKKyAgICAgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCBkc3RTaXplLCBkc3RTaXplLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBsaW5lYXJQaXhlbHMwKTsKKyAgICAgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hN
RU5UMyk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgZHN0U2l6ZSwgZHN0U2l6ZSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgbGluZWFyUGl4ZWxzMSk7CisgICAgfQorICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZHBpeGVscyBzaG91bGQgc3VjY2Vl
ZCIpOworCisgICAgLy8gQ29tcGFyZQorICAgIHZhciBleHBlY3RlZFNSR0JDb2xvciA9IChyZWFk
YnVmZmVyRm9ybWF0ID09IGdsLlNSR0I4X0FMUEhBOCkgPyBjb2xvciA6IHd0dS5saW5lYXJUb1NS
R0IoY29sb3IpOworICAgIHZhciBleHBlY3RlZExpbmVhckNvbG9yID0gKHJlYWRidWZmZXJGb3Jt
YXQgPT0gZ2wuU1JHQjhfQUxQSEE4KSA/IHd0dS5zUkdCVG9MaW5lYXIoY29sb3IpIDogY29sb3I7
CisgICAgdmFyIGZhaWxlZCA9IGZhbHNlOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBkc3RT
aXplOyArK2lpKSB7CisgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCBkc3RTaXplOyArK2pq
KSB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSAoaWkgKiBkc3RTaXplICsgamopICogNDsKKyAg
ICAgICAgICAgIGlmIChkcmF3YnVmZmVyc0Zvcm1hdE1hc2sgJiBzcmdiTWFzaykgeworICAgICAg
ICAgICAgICAgIHZhciBzcmdiQ29sb3IwID0gW3NyZ2JQaXhlbHMwW2luZGV4XSwgc3JnYlBpeGVs
czBbaW5kZXggKyAxXSwgc3JnYlBpeGVsczBbaW5kZXggKyAyXSwgc3JnYlBpeGVsczBbaW5kZXgg
KyAzXV07CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrUGl4ZWwoc3JnYkNvbG9yMCwgZXhwZWN0
ZWRTUkdCQ29sb3IpID09IGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJQaXhlbHMgY29tcGFyaXNvbiBmYWlsZWQg
Zm9yIHRoZSAxc3Qgc1JHQiBpbWFnZS4gUGl4ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJd
IHNob3VsZCBiZSAoIiArIGV4cGVjdGVkU1JHQkNvbG9yICsgIiksIGJ1dCB0aGUgYWN0dWFsIGNv
bG9yIGlzICgiICsgc3JnYkNvbG9yMCArICIpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHZhciBzcmdiQ29sb3IxID0gW3NyZ2JQaXhlbHMxW2luZGV4XSwgc3JnYlBpeGVs
czFbaW5kZXggKyAxXSwgc3JnYlBpeGVsczFbaW5kZXggKyAyXSwgc3JnYlBpeGVsczFbaW5kZXgg
KyAzXV07CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrUGl4ZWwoc3JnYkNvbG9yMSwgZXhwZWN0
ZWRTUkdCQ29sb3IpID09IGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJQaXhlbHMgY29tcGFyaXNvbiBmYWlsZWQg
Zm9yIHRoZSAybmQgc1JHQiBpbWFnZS4gUGl4ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJd
IHNob3VsZCBiZSAoIiArIGV4cGVjdGVkU1JHQkNvbG9yICsgIiksIGJ1dCB0aGUgYWN0dWFsIGNv
bG9yIGlzICgiICsgc3JnYkNvbG9yMSArICIpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoZHJhd2J1ZmZlcnNGb3JtYXRNYXNrICYgbGluZWFy
TWFzaykgeworICAgICAgICAgICAgICAgIHZhciBsaW5lYXJDb2xvcjAgPSBbbGluZWFyUGl4ZWxz
MFtpbmRleF0sIGxpbmVhclBpeGVsczBbaW5kZXggKyAxXSwgbGluZWFyUGl4ZWxzMFtpbmRleCAr
IDJdLCBsaW5lYXJQaXhlbHMwW2luZGV4ICsgM11dOworICAgICAgICAgICAgICAgIGlmIChjaGVj
a1BpeGVsKGxpbmVhckNvbG9yMCwgZXhwZWN0ZWRMaW5lYXJDb2xvcikgPT0gZmFsc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIlBpeGVsIGNvbXBhcmlzb24gZmFpbGVkIGZvciB0aGUgMXN0IGxpbmVhciBpbWFnZS4gUGl4
ZWwgYXQgWyIgKyBqaiArICIsICIgKyBpaSArICJdIHNob3VsZCBiZSAoIiArIGNvbG9yICsgIiks
IGJ1dCB0aGUgYWN0dWFsIGNvbG9yIGlzICgiICsgbGluZWFyQ29sb3IwICsgIikiKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGxpbmVhckNvbG9yMSA9IFtsaW5lYXJQ
aXhlbHMxW2luZGV4XSwgbGluZWFyUGl4ZWxzMVtpbmRleCArIDFdLCBsaW5lYXJQaXhlbHMxW2lu
ZGV4ICsgMl0sIGxpbmVhclBpeGVsczFbaW5kZXggKyAzXV07CisgICAgICAgICAgICAgICAgaWYg
KGNoZWNrUGl4ZWwobGluZWFyQ29sb3IxLCBleHBlY3RlZExpbmVhckNvbG9yKSA9PSBmYWxzZSkg
eworICAgICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiUGl4ZWwgY29tcGFyaXNvbiBmYWlsZWQgZm9yIHRoZSAybmQgbGluZWFyIGltYWdl
LiBQaXhlbCBhdCBbIiArIGpqICsgIiwgIiArIGlpICsgIl0gc2hvdWxkIGJlICgiICsgY29sb3Ig
KyAiKSwgYnV0IHRoZSBhY3R1YWwgY29sb3IgaXMgKCIgKyBsaW5lYXJDb2xvcjEgKyAiKSIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoZmFpbGVkID09IGZhbHNlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBwaXhlbHMgY29t
cGFyaXNpb24gcGFzc2VkISIpOworICAgIH0KKworICAgIC8vIGRlaW5pdAorICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19G
UkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhfc3JnYjApOworICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4X2xpbmVhcjApOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
X3NyZ2IxKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleF9saW5lYXIxKTsKKyAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleF9yZWFkKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9fcmVhZCk7
CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvX2RyYXcpOworfQorCitmdW5jdGlvbiBjaGVj
a1BpeGVsKGNvbG9yLCBleHBlY3RlZENvbG9yKSB7CisgIHZhciB0b2xlcmFuY2UgPSAzOworICBy
ZXR1cm4gKE1hdGguYWJzKGNvbG9yWzBdIC0gZXhwZWN0ZWRDb2xvclswXSkgPD0gdG9sZXJhbmNl
ICYmCisgICAgICAgICAgTWF0aC5hYnMoY29sb3JbMV0gLSBleHBlY3RlZENvbG9yWzFdKSA8PSB0
b2xlcmFuY2UgJiYKKyAgICAgICAgICBNYXRoLmFicyhjb2xvclsyXSAtIGV4cGVjdGVkQ29sb3Jb
Ml0pIDw9IHRvbGVyYW5jZSAmJgorICAgICAgICAgIE1hdGguYWJzKGNvbG9yWzNdIC0gZXhwZWN0
ZWRDb2xvclszXSkgPD0gdG9sZXJhbmNlKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2Js
aXRmcmFtZWJ1ZmZlci1zdGVuY2lsLW9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVm
ZmVyLXN0ZW5jaWwtb25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNGFjZjM0NTZkZmMyOGVjNzFhYWIx
YTgwODQwNTZlN2NhNzQyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFt
ZWJ1ZmZlci1zdGVuY2lsLW9ubHkuaHRtbApAQCAtMCwwICsxLDE3MCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQmxpdEZyYW1l
YnVmZmVyIFN0ZW5jaWwtb25seSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0idnMiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQgcG9zaXRpb247Cit2
b2lkIG1haW4oKSB7CisgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K291dCBtZWRpdW1wIHZlYzQgY29sb3JPdXQ7Cit1bmlmb3JtIG1lZGl1bXAgdmVjMyBjb2xvcjsK
K3ZvaWQgbWFpbigpIHsKKyAgIGNvbG9yT3V0ID0gdmVjNChjb2xvciwgMS4wKTsKK30KKzwvc2Ny
aXB0PgorCis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI4IiBo
ZWlnaHQ9IjgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY292ZXJzIHNvbWUgZWRn
ZSBjYXNlcyBvZiBibGl0RnJhbWVidWZmZXIgd2l0aCBzdGVuY2lsLiIpOworCit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKwordmFyIHByb2dy
YW0sIGNvbG9yTG9jOworCitmdW5jdGlvbiBpbml0X2J1ZmZlcihmb3JtYXQpIHsKKyAgdmFyIGJ1
ZiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgYnVmKQorICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhTdG9yYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMSwgZ2wuUkdCQTgsIDE2LCAxNik7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAw
KTsKKyAgdmFyIHJibyA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGZvcm1hdCwgMTYsIDE2KTsKKyAgZ2wuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsCisgICAgICBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQs
IGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKworICBnbC5jbGVhckJ1ZmZlcmZpKGdsLkRFUFRIX1NU
RU5DSUwsIDAsIDEuMCwgMCk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJhZnRlciBidWZmZXIgaW5pdCIpOworICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsKKwor
ICByZXR1cm4geyBmYm86IGJ1ZiwgY29sb3I6IHRleCwgZGVwdGhTdGVuY2lsOiByYm8gfTsKK30K
KwordmFyIHF1YWRWQjsKKworZnVuY3Rpb24gZHJhd1F1YWQoZGVwdGgpIHsKKyAgaWYgKCFxdWFk
VkIpIHsKKyAgICBxdWFkVkIgPSBnbC5jcmVhdGVCdWZmZXIoKQorICB9CisKKyAgdmFyIHF1YWRW
ZXJ0cyA9IG5ldyBGbG9hdDMyQXJyYXkoMyAqIDYpOworICBxdWFkVmVydHNbMF0gPSAtMS4wOyBx
dWFkVmVydHNbMV0gPSAgIDEuMDsgcXVhZFZlcnRzWzJdID0gZGVwdGg7CisgIHF1YWRWZXJ0c1sz
XSA9IC0xLjA7IHF1YWRWZXJ0c1s0XSA9ICAtMS4wOyBxdWFkVmVydHNbNV0gPSBkZXB0aDsKKyAg
cXVhZFZlcnRzWzZdID0gIDEuMDsgcXVhZFZlcnRzWzddID0gIC0xLjA7IHF1YWRWZXJ0c1s4XSA9
IGRlcHRoOworICBxdWFkVmVydHNbOV0gPSAtMS4wOyBxdWFkVmVydHNbMTBdID0gIDEuMDsgcXVh
ZFZlcnRzWzExXSA9IGRlcHRoOworICBxdWFkVmVydHNbMTJdID0gMS4wOyBxdWFkVmVydHNbMTNd
ID0gLTEuMDsgcXVhZFZlcnRzWzE0XSA9IGRlcHRoOworICBxdWFkVmVydHNbMTVdID0gMS4wOyBx
dWFkVmVydHNbMTZdID0gIDEuMDsgcXVhZFZlcnRzWzE3XSA9IGRlcHRoOworCisgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBxdWFkVkIpOworICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgcXVhZFZlcnRzLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMywgZ2wuRkxPQVQsIGdsLkZBTFNFLCAwLCAwKTsKKyAgZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoMCk7CisgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGRyYXdRdWFkIik7
Cit9CisKKy8vIFRlc3QgYmFzZWQgb24gZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmJsaXQuZGVwdGhf
c3RlbmNpbC5kZXB0aF8yNF9zdGVuY2lsOF9zdGVuY2lsX29ubHkKK2Z1bmN0aW9uIHRlc3Rfc3Rl
bmNpbF9vbmx5X2JsaXQoZm9ybWF0KSB7CisgIGRlYnVnKCJ0ZXN0aW5nIGZvcm1hdDogIiArIHd0
dS5nbEVudW1Ub1N0cmluZyhnbCwgZm9ybWF0KSkKKworICB2YXIgc3JjID0gaW5pdF9idWZmZXIo
Zm9ybWF0KTsKKyAgdmFyIGRlc3QgPSBpbml0X2J1ZmZlcihmb3JtYXQpOworCisgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgc3JjLmZibyk7CisgIGdsLnZpZXdwb3J0KDAsIDAs
IDE2LCAxNik7CisKKyAgLy8gRmlsbCBzb3VyY2Ugd2l0aCByZWQsIGRlcHRoID0gMC41LCBzdGVu
Y2lsID0gNworICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgIGdsLmVuYWJsZShnbC5TVEVO
Q0lMX1RFU1QpOworICBnbC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuUkVQTEFDRSk7
CisgIGdsLnN0ZW5jaWxGdW5jKGdsLkFMV0FZUywgNywgMHhGRik7CisgIGdsLnVuaWZvcm0zZihj
b2xvckxvYywgMS4wLCAwLjAsIDAuMCk7CisgIGRyYXdRdWFkKDAuNSk7CisKKyAgLy8gRmlsbCBk
ZXN0IHdpdGggeWVsbG93LCBkZXB0aCA9IDAuMCwgc3RlbmNpbCA9IDEKKyAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBkZXN0LmZibyk7CisgIGdsLnN0ZW5jaWxGdW5jKGdsLkFM
V0FZUywgMSwgMHhmZik7CisgIGdsLnVuaWZvcm0zZihjb2xvckxvYywgMS4wLCAxLjAsIDAuMCk7
CisgIGRyYXdRdWFkKDAuMCk7CisKKyAgLy8gUGVyZm9ybSBjb3B5LgorICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgc3JjLmZibyk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBkZXN0LmZibyk7CisgIGdsLmJsaXRGcmFtZWJ1ZmZlcigw
LCAwLCAxNiwgMTYsIDAsIDAsIDE2LCAxNiwgZ2wuU1RFTkNJTF9CVUZGRVJfQklULCBnbC5ORUFS
RVNUKTsKKworICAvLyBSZW5kZXIgYmx1ZSB3aGVyZSBkZXB0aCA8IDAsIGRlY3JlbWVudCBvbiBk
ZXB0aCBmYWlsdXJlLgorICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGRlc3Qu
ZmJvKTsKKyAgZ2wuc3RlbmNpbE9wKGdsLktFRVAsIGdsLkRFQ1IsIGdsLktFRVApOworICBnbC5z
dGVuY2lsRnVuYyhnbC5BTFdBWVMsIDAsIDB4ZmYpOworCisgIGdsLnVuaWZvcm0zZihjb2xvckxv
YywgMC4wLCAwLjAsIDEuMCk7CisgIGRyYXdRdWFkKDAuMCk7CisKKyAgLy8gUmVuZGVyIGdyZWVu
IHdoZXJlIHN0ZW5jaWwgPT0gNi4KKyAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgZ2wu
c3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLktFRVApOworICBnbC5zdGVuY2lsRnVuYyhn
bC5FUVVBTCwgNiwgMHhmZik7CisKKyAgZ2wudW5pZm9ybTNmKGNvbG9yTG9jLCAwLjAsIDEuMCwg
MC4wKTsKKyAgZHJhd1F1YWQoMC4wKTsKKworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgImFmdGVyIHRlc3QiKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwg
MTYsIDE2LCBbMCwgMjU1LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgICAgICAgICJzdGVuY2ls
IHRlc3Qgc2hvdWxkIGJlIGdyZWVuIik7CisKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoc3JjLmZi
byk7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGRlc3QuZmJvKTsKKyAgZ2wuZGVsZXRlVGV4dHVy
ZShzcmMuY29sb3IpOworICBnbC5kZWxldGVUZXh0dXJlKGRlc3QuY29sb3IpOworICBnbC5kZWxl
dGVSZW5kZXJidWZmZXIoc3JjLmRlcHRoU3RlbmNpbCk7CisgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZl
cihkZXN0LmRlcHRoU3RlbmNpbCk7Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJX
ZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQo
IldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgWyJ2cyIsICJmcyJdLCBbInBvc2l0aW9uIl0pOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgcHJvZ3JhbSBpbml0aWFsaXphdGlvbiIpOworICAg
IHNob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RBVFVT
KScsICd0cnVlJyk7CisKKyAgICBjb2xvckxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAiY29sb3IiKQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
cXVlcnkgdW5pZm9ybSBsb2NhdGlvbiIpOworICAgIHNob3VsZEJlTm9uTnVsbCgnY29sb3JMb2Mn
KQorCisgICAgdGVzdF9zdGVuY2lsX29ubHlfYmxpdChnbC5ERVBUSDI0X1NURU5DSUw4KTsKKyAg
ICB0ZXN0X3N0ZW5jaWxfb25seV9ibGl0KGdsLkRFUFRIMzJGX1NURU5DSUw4KTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5n
L2JsaXRmcmFtZWJ1ZmZlci10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ3MGIwMmU0ZTgxZjAxMmVj
ODk5Mzg4NTllNzJmZWI5ZDM5MDZjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxp
dGZyYW1lYnVmZmVyLXRlc3QuaHRtbApAQCAtMCwwICsxLDM2MSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQmxpdEZyYW1lYnVm
ZmVyIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iOCIgaGVpZ2h0PSI4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmll
cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBibGl0RnJhbWVidWZmZXIgZm9yIHNvbWUgY29ybmVyIGNh
c2VzLiIpOworCit2YXIgd2lkdGggPSA4OwordmFyIGhlaWdodCA9IDg7CisKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKyAgICBibGl0X2ZyYW1l
YnVmZmVyX3JlcGVhdGVkKCk7CisgICAgYmxpdF9mcmFtZWJ1ZmZlcl9mZWVkYmFja19sb29wKCk7
CisgICAgYmxpdF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsaW5nX3NyZ2IoKTsKK30KKworZnVuY3Rp
b24gYmxpdF9mcmFtZWJ1ZmZlcl9yZXBlYXRlZCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRoaXMgdGVzdCB2ZXJpZmllcyByZXBlYXRlZCBjYWxscyB0byBibGl0RnJhbWVidWZmZXIu
Iik7CisKKyAgICAvLyBDcmVhdGUgb2Zmc2NyZWVuIGZibyBhbmQgaXRzIGNvbG9yIGF0dGFjaG1l
bnQuCisgICAgdmFyIHRleF8yZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXhfMmQpOworICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhU
VVJFXzJELCAxLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7Cisg
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wu
Q0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisKKyAgICB2YXIg
ZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4XzJkLCAwKTsKKyAg
ICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRnJhbWVidWZmZXIgaW5j
b21wbGV0ZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBwcm9nID0gd3R1
LnNldHVwQ29sb3JRdWFkKGdsLCAwKTsKKyAgICB3dHUuc2V0RmxvYXREcmF3Q29sb3IoZ2wsIFsg
MS4wLCAwLjAsIDAuMCwgMS4wIF0pOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmJsaXRGcmFtZWJ1
ZmZlcigwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5DT0xPUl9C
VUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG51bGwpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWyAyNTUsIDAsIDAsIDI1NSBd
LCAic2hvdWxkIGJlIHJlZCBhdCBmaXJzdCIpOworCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYik7CisgICAgd3R1LnNldEZsb2F0RHJhd0NvbG9yKGdsLCBbIDAuMCwg
MS4wLCAwLjAsIDEuMCBdKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZmIpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIo
MCwgMCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuQ09MT1JfQlVGRkVS
X0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBudWxsKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsgMCwgMjU1LCAwLCAyNTUgXSwgInNo
b3VsZCBiZSBncmVlbiIpOworfQorCitmdW5jdGlvbiBibGl0X2ZyYW1lYnVmZmVyX2ZlZWRiYWNr
X2xvb3AoKSB7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRoaXMgdGVzdCBjaGVja3Mg
d2hldGhlciB0aGUgc3JjIHJlc291cmNlIGFuZCBkc3QgcmVzb3VyY2UgaGF2ZSBpZGVudGljYWwg
aW1hZ2VzLiIpOworICAgIC8vIENyZWF0ZSByZWFkIGZibyBhbmQgaXRzIGNvbG9yIGF0dGFjaG1l
bnQuCisgICAgdmFyIHRleF8yZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXhfMmQpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworCisg
ICAgdmFyIGZiMCA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJl
MkQoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVf
MkQsIHRleF8yZCwgMCk7CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuUkVB
RF9GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiRnJhbWVidWZmZXIgaW5jb21wbGV0ZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIENyZWF0ZSBkcmF3IGZibyBhbmQgaXRzIGNvbG9yIGF0dGFjaG1lbnQuCisg
ICAgdmFyIHJiMCA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYjApOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB2YXIgZmIx
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJB
V19GUkFNRUJVRkZFUiwgZmIxKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5E
UkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBy
YjApOworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkRSQVdfRlJBTUVCVUZG
RVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZy
YW1lYnVmZmVyIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBCbGl0IGZyYW1lYnVmZmVyLCBhbGwgY29uZGl0aW9ucyBhcmUgT0suCisgICAgZ2wuYmxpdEZy
YW1lYnVmZmVyKDAsIDAsIDIsIDIsIDAsIDAsIDIsIDIsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGds
Lk5FQVJFU1QpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYmxp
dEZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkLiIpOworCisgICAgLy8gQmxpdCBmcmFtZWJ1ZmZl
ciwgdGhlIHNyYyBidWZmZXIgYW5kIHRoZSBkc3QgYnVmZmVyIHNob3VsZCBub3QgYmUgaWRlbnRp
Y2FsLgorICAgIC8vIEV4YWN0bHkgdGhlIHNhbWUgcmVhZC9kcmF3IGZibworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYjApOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYjApOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigw
LCAwLCAyLCAyLCA0LCA0LCA2LCA2LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJsaXRG
cmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gaWYgcmVhZC9kcmF3
IGJ1ZmZlciBhcmUgaWRlbnRpY2FsLiIpOworCisgICAgLy8gRXhhY3RseSB0aGUgc2FtZSByZWFk
L2RyYXcgZnJhbWVidWZmZXI6IGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkRSQVdfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAw
LCAyLCAyLCA0LCA0LCA2LCA2LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJsaXRGcmFt
ZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gaWYgcmVhZC9kcmF3IGJ1
ZmZlciBhcmUgaWRlbnRpY2FsLiIpOworCisgICAgLy8gVGhlIHNhbWUgaW1hZ2Ugd2l0aCB0aGUg
c2FtZSBsZXZlbCBib3VuZCB0byByZWFkL2RyYXcgYnVmZmVyLgorICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYjApOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJF
XzJELCB0ZXhfMmQsIDApOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVG
RkVSLCBmYjEpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhfMmQsIDApOworICAg
IGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLlJFQURfRlJBTUVCVUZGRVIpICE9IGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFIHx8CisgICAgICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiRnJhbWVidWZmZXIgaW5jb21wbGV0ZS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMiwgMiwgNCwgNCwgNiwg
NiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJibGl0RnJhbWVidWZmZXIgc2hvdWxkIGdl
bmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIGlmIHJlYWQvZHJhdyBjb2xvciBidWZmZXIgYXJlIGlk
ZW50aWNhbC4iKTsKKworICAgIC8vIFRoZSBzYW1lIGltYWdlIGluIHJlYWQvZHJhdyBidWZmZXIs
IGJ1dCBkaWZmZXJlbnQgbGV2ZWxzIGFyZSBib3VuZCB0byByZWFkL2RyYXcgYnVmZmVyIHJlc3Bl
Y3RpdmVseS4KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmIx
KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4XzJkLCAxKTsKKyAgICBpZiAoZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBs
ZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigw
LCAwLCAyLCAyLCAwLCAwLCAyLCAyLCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJsaXRGcmFtZWJ1ZmZl
ciBzaG91bGQgc3VjY2VlZCBpZiByZWFkL2RyYXcgYnVmZmVyIGhhcyB0aGUgc2FtZSBpbWFnZSB3
aXRoIGRpZmZlcmVudCBsZXZlbHMuIik7CisKKyAgICAvLyBUaGUgc2FtZSBjdWJlX21hcCBpbWFn
ZSBpbiByZWFkL2RyYXcgYnVmZmVyLCBidXQgZGlmZmVyZW50IGZhY2VzIGFyZSBib3VuZCB0byBy
ZWFkL2RyYXcgYnVmZmVyIHJlc3BlY3RpdmVseS4KKyAgICB2YXIgdGV4X2N1YmVfbWFwID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAs
IHRleF9jdWJlX21hcCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1gsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWCwgMCwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9ZLCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1ksIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJF
QURfRlJBTUVCVUZGRVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuUkVB
RF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCwgdGV4X2N1YmVfbWFwLCAwKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RFJBV19GUkFNRUJVRkZFUiwgZmIxKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5E
UkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YLCB0ZXhfY3ViZV9tYXAsIDApOworICAgIGlmICgoZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5SRUFEX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVU
RSkgfHwKKyAgICAgICAgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRFJBV19GUkFNRUJV
RkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IkZyYW1lYnVmZmVyIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Z2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIDIsIDIsIDAsIDAsIDIsIDIsIGdsLkNPTE9SX0JVRkZF
Ul9CSVQsIGdsLk5FQVJFU1QpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiYmxpdEZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkIGlmIHJlYWQvZHJhdyBidWZmZXIg
aGFzIHRoZSBzYW1lIENVQkVfTUFQIGltYWdlIHdpdGggZGlmZmVyZW50IGZhY2VzLiIpOworCisg
ICAgLy8gVGhlIHNhbWUgM0QvMkRfQVJSQVkgaW1hZ2UgaW4gcmVhZC9kcmF3IGJ1ZmZlciwgYnV0
IGRpZmZlcmVudCBsYXllcnMgYXJlIGJvdW5kIHRvIHJlYWQvZHJhdyBidWZmZXIgcmVzcGVjdGl2
ZWx5LgorICAgIHZhciB0ZXhfMmRfYXJyYXkgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4XzJkX2FycmF5KTsKKyAgICB2YXIg
ZGVwdGggPSAyOworICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wu
UkdCQTgsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZmIw
KTsKKyAgICB2YXIgbGV2ZWwgPSAwLCBsYXllciA9IDA7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleF8y
ZF9hcnJheSwgbGV2ZWwsIGxheWVyKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19G
UkFNRUJVRkZFUiwgZmIxKTsKKyAgICBsYXllciA9IDE7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleF8y
ZF9hcnJheSwgbGV2ZWwsIGxheWVyKTsKKyAgICBpZiAoKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuUkVBRF9GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHx8Cisg
ICAgICAgIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkRSQVdfRlJBTUVCVUZGRVIpICE9
IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1
ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsLmJsaXRG
cmFtZWJ1ZmZlcigwLCAwLCAyLCAyLCAwLCAwLCAyLCAyLCBnbC5DT0xPUl9CVUZGRVJfQklULCBn
bC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJs
aXRGcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZCBpZiByZWFkL2RyYXcgYnVmZmVyIGhhcyB0aGUg
c2FtZSAzRC8yRF9BUlJBWSBpbWFnZSB3aXRoIGRpZmZlcmVudCBsYXllcnMuIik7CisKKyAgICAv
LyBUaGUgc2FtZSBpbWFnZSBhcmUgYm91bmQgYXMgZGVwdGggYnVmZmVyIGluIGJvdGggcmVhZCBm
cmFtZWJ1ZmZlciBhbmQgZHJhdyBmcmFtZWJ1ZmZlcgorICAgIHZhciByYjEgPSBnbC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwg
cmIxKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQ
VEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LlJFQURfRlJBTUVCVUZGRVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wu
UkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCwgdGV4X2N1YmVfbWFwLCAwKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5E
RVJCVUZGRVIsIHJiMSk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGZiMSk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwg
dGV4X2N1YmVfbWFwLCAwKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5EUkFX
X0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7
CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuUkVBRF9GUkFNRUJVRkZFUikg
IT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUgfHwKKyAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIC8vIEJ1dCB0aGUgbWFzayBkb2Vzbid0IGhhdmUgZGVwdGgg
YnVmZmVyIGJpdC4KKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMiwgMiwgMCwgMCwgMiwg
MiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJibGl0RnJhbWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQuIik7
CisKKyAgICAvLyBUaGUgbWFzayBoYXMgZGVwdGggYnVmZmVyIGJpdC4KKyAgICBnbC5ibGl0RnJh
bWVidWZmZXIoMCwgMCwgMiwgMiwgMCwgMCwgMiwgMiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYmxpdEZyYW1lYnVmZmVyIHNob3VsZCBnZW5lcmF0
ZSBJTlZBTElEX09QRVJBVElPTiBpZiByZWFkL2RyYXcgZnJhbWVidWZmZXIgaGF2ZSBpZGVudGlj
YWwgZGVwdGggYnVmZmVyIGF0dGFjaG1lbnQuIik7CisKKyAgICAvLyBUaGUgc2FtZSBpbWFnZSBh
cmUgYm91bmQgYXMgc3RlbmNpbCBidWZmZXIgaW4gYm90aCByZWFkIGZyYW1lYnVmZmVyIGFuZCBk
cmF3IGZyYW1lYnVmZmVyCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZG
RVIsIGZiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuUkVBRF9GUkFNRUJV
RkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7CisgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZiMSk7CisgICAgZ2wuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoZ2wuUkVBRF9GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUg
fHwKKyAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVS
KSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFt
ZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEJ1
dCB0aGUgbWFzayBkb2Vzbid0IGhhdmUgc3RlbmNpbCBidWZmZXIgYml0LgorICAgIGdsLmJsaXRG
cmFtZWJ1ZmZlcigwLCAwLCAyLCAyLCAwLCAwLCAyLCAyLCBnbC5DT0xPUl9CVUZGRVJfQklULCBn
bC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJs
aXRGcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICAgIC8vIFRoZSBtYXNrIGhhcyBz
dGVuY2lsIGJ1ZmZlciBiaXQuCisgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIDIsIDIsIDAs
IDAsIDIsIDIsIGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQsIGds
Lk5FQVJFU1QpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAiYmxpdEZyYW1lYnVmZmVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiBp
ZiByZWFkL2RyYXcgZnJhbWVidWZmZXIgaGF2ZSBpZGVudGljYWwgc3RlbmNpbCBidWZmZXIgYXR0
YWNobWVudC4iKTsKKworICAgIC8vIFRoZSBzYW1lIGltYWdlIGFyZSBib3VuZCBhcyBjb2xvciBi
dWZmZXIgaW4gYm90aCByZWFkIGZyYW1lYnVmZmVyIGFuZCBkcmF3IGZyYW1lYnVmZmVyCisgICAg
dmFyIHJiMiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCByYjIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZmIwKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCB0ZXhfY3ViZV9tYXAsIDApOworICAg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKyAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQs
IGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVS
LCByYjIpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYjEp
OworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIHRleF9jdWJl
X21hcCwgMCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDEsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwg
dGV4X2N1YmVfbWFwLCAwKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5EUkFX
X0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7
CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuUkVBRF9GUkFNRUJVRkZFUikg
IT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUgfHwKKyAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIC8vIEJ1dCB0aGUgbWFzayBkb2Vzbid0IGhhdmUgY29sb3Ig
YnVmZmVyIGJpdC4KKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMiwgMiwgMCwgMCwgMiwg
MiwgZ2wuREVQVEhfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJibGl0RnJhbWVidWZmZXIgc2hvdWxkIHN1Y2NlZWQuIik7
CisKKyAgICAvLyBUaGUgbWFzayBoYXMgY29sb3IgYnVmZmVyIGJpdCwgYnV0IHRoZSBzYW1lIGlt
YWdlIGlzIG5vdCBzcGVjaWZpZWQgYXMgZHJhdyBidWZmZXIuCisgICAgZ2wuYmxpdEZyYW1lYnVm
ZmVyKDAsIDAsIDIsIDIsIDAsIDAsIDIsIDIsIGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImJsaXRGcmFtZWJ1ZmZlciBzaG91bGQgc3VjY2VlZC4iKTsKKworICAgIC8v
IFRoZSBtYXNrIGhhcyBjb2xvciBidWZmZXIgYml0LCB0aGUgc2FtZSBpbWFnZSBpcyBzcGVjaWZp
ZWQgYXMgYm90aCByZWFkIGJ1ZmZlciBhbmQgZHJhdyBidWZmZXIuCisgICAgZ2wuZHJhd0J1ZmZl
cnMoW2dsLkNPTE9SX0FUVEFDSEVOVDAsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7CisgICAgZ2wu
YmxpdEZyYW1lYnVmZmVyKDAsIDAsIDIsIDIsIDAsIDAsIDIsIDIsIGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJsaXRGcmFtZWJ1ZmZlciBzaG91bGQg
Z2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gaWYgcmVhZC9kcmF3IGJ1ZmZlcnMgaGF2ZSBpZGVu
dGljYWwgY29sb3IgYnVmZmVyIGF0dGFjaG1lbnQuIik7CisKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCBudWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCBudWxs
KTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleF8yZCk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhfY3ViZV9tYXApOworICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4XzJkX2FycmF5KTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZm
ZXIocmIwKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmIxKTsKKyAgICBnbC5kZWxldGVS
ZW5kZXJidWZmZXIocmIyKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYjApOworICAgIGds
LmRlbGV0ZUZyYW1lYnVmZmVyKGZiMSk7Cit9OworCitmdW5jdGlvbiBibGl0X2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxpbmdfc3JnYigpIHsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGhp
cyB0ZXN0IHZlZmlmeSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBibGl0ZnJhbWVidWZmZXIgZnJvbSBv
ciB0byBhIG11bHRpc2FtcGxlZCBzcmdiIGltYWdlLiIpOworCisgICAgLy8gUmVhZCBidWZmZXIg
Y2FuIGhhdmUgbXVsdGlzYW1wbGVkIHNyZ2IgaW1hZ2UsIGJ1dCBkcmF3IGJ1ZmZlcnMgY2FuIG5v
dC4KKyAgICB2YXIgcmIwID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgdmFyIGZiMCA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgdmFyIHJiMSA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpOworICAgIHZhciBmYjEgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIHZhciBz
YW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBn
bC5TUkdCOF9BTFBIQTgsIGdsLlNBTVBMRVMpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCByYjApOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShnbC5SRU5ERVJCVUZGRVIsIHNhbXBsZXNbMF0sIGdsLlNSR0I4X0FMUEhBOCwgd2lkdGgsIGhl
aWdodCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZiMCk7
CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmIwKTsKKworICAgIGdsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYjEpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5TUkdCOF9BTFBIQTgsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYjEpOworICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7CisgICAgaWYgKGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUgfHwKKyAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5SRUFEX0ZSQU1FQlVG
RkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJG
cmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGds
LmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAyLCAyLCAwLCAwLCAyLCAyLCBnbC5DT0xPUl9CVUZGRVJf
QklULCBnbC5MSU5FQVIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiYmxpdEZyYW1lYnVmZmVyIGZyb20gbXVsdGlzYW1wbGVkIHNyZ2IgaW1hZ2Ugc2hvdWxkIHN1
Y2NlZWQuIik7CisKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIx
KTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVS
LCBzYW1wbGVzWzBdLCBnbC5TUkdCOF9BTFBIQTgsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYjEpOworICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiRnJhbWVidWZmZXIgaW5jb21wbGV0ZS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMiwgMiwgMCwgMCwgMiwg
MiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTElORUFSKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJsaXRGcmFtZWJ1ZmZlciB0byBhIG11bHRp
c2FtcGxlZCBzcmdiIGltYWdlIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTi4iKTsK
KworICAgIC8vIEJsaXRGcmFtZWJ1ZmZlciBmcm9tIGEgbXVsdGlzYW1wbGVkIHNyZ2IgaW1hZ2Us
IHRoZSBzcmMgcmVnaW9uIGFuZCB0aGUgZHN0IHJlZ2lvbiBtdXN0IGJlIGV4YWN0bHkgdGhlIHNh
bWUuCisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiMSk7CisgICAg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNSR0I4X0FMUEhBOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGZiMSk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRFJBV19GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmIxKTsKKyAgICBp
ZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5EUkFXX0ZSQU1FQlVGRkVSKSAhPSBnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBp
bmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsLmJsaXRGcmFtZWJ1
ZmZlcigwLCAwLCAyLCAyLCAyLCAyLCA0LCA0LCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5MSU5F
QVIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
YmxpdEZyYW1lYnVmZmVyIGZyb20gYSBtdWx0aXNhbXBsZWQgc3JnYiBpbWFnZSwgdGhlIHNyYyBy
ZWdpb24gYW5kIHRoZSBkc3QgcmVnaW9uIG11c3QgYmUgZXhhY3RseSB0aGUgc2FtZS4iKTsKKwor
ICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAyLCAyLCAwLCAwLCA0LCA0LCBnbC5DT0xPUl9C
VUZGRVJfQklULCBnbC5MSU5FQVIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiYmxpdEZyYW1lYnVmZmVyIGZyb20gYSBtdWx0aXNhbXBsZWQgc3Jn
YiBpbWFnZSwgdGhlIHNyYyByZWdpb24gYW5kIHRoZSBkc3QgcmVnaW9uIG11c3QgYmUgZXhhY3Rs
eSB0aGUgc2FtZS4iKTsKKworICAgIC8vIEJsaXRGcmFtZWJ1ZmZlciBmcm9tIGEgbXVsdGlzYW1w
bGVkIHNyZ2IgaW1hZ2UsIHRoZSBmb3JtYXQvdHlwZSBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUu
IFNvIGJsaXQgZnJvbSBhIG11bHRpc2FtcGxlZCBzcmdiIGltYWdlIHRvIGEgbGluZWFyIGltYWdl
IGlzIGludmFsaWQuCisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIGZiMSk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgICAgaWYg
KGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRnJhbWVidWZmZXIgaW5j
b21wbGV0ZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbC5ibGl0RnJhbWVidWZm
ZXIoMCwgMCwgMiwgMiwgMCwgMCwgMiwgMiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTElORUFS
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJs
aXRGcmFtZWJ1ZmZlciBmcm9tIGEgbXVsdGlzYW1wbGVkIHNyZ2IgaW1hZ2UsIHRoZSBmb3JtYXQv
dHlwZSBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUuIik7CisKKyAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgbnVsbCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIs
IG51bGwpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxs
KTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmIwKTsKKyAgICBnbC5kZWxldGVSZW5kZXJi
dWZmZXIocmIxKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgICAgZ2wuZGVsZXRlRnJh
bWVidWZmZXIoZmIwKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYjEpOworfQorCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9yZW5kZXJpbmcvY2FudmFzLXJlc2l6aW5nLXdpdGgtcGJvLWJvdW5kLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
cmVuZGVyaW5nL2NhbnZhcy1yZXNpemluZy13aXRoLXBiby1ib3VuZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcxM2M4OGY1MTVkZjBhZTVlN2IyNDYyZjA3NWI5MmIyYWNjNTliZTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvcmVuZGVyaW5nL2NhbnZhcy1yZXNpemluZy13aXRoLXBiby1ib3VuZC5odG1sCkBAIC0w
LDAgKzEsMTExIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCAyIFJlc2l6aW5nIFdpdGggUEJPIEJvdW5kIFRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhczEiIHN0eWxlPSJ3aWR0aDogMjU2cHg7IGhlaWdodDogMjU2cHg7Ij4gPC9jYW52YXM+
Cis8Y2FudmFzIGlkPSJjYW52YXMyIiBzdHlsZT0id2lkdGg6IDI1NnB4OyBoZWlnaHQ6IDI1NnB4
OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworCitkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCByZXNpemluZyB0aGUgY2FudmFz
IChyZWNyZWF0aW5nIHRoZSBiYWNraW5nIGZyYW1lYnVmZmVyKSB3b3JrcyBjb3JyZWN0bHkgd2hp
bGUgYSBQQk8gaXMgYm91bmQuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJSZWdyZXNzaW9uIHRl
c3QgZm9yIENocm9taXVtIDxhIGhyZWY9J2h0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJv
bWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTY0NDU3Mic+SXNzdWUgNjQ0NTcyPC9hPiIpOworZGVidWco
IiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzOwordmFyIGxhcmdl
U2l6ZSA9IDI1NjsKK3ZhciBzbWFsbFNpemUgPSAxMjg7Cit2YXIgY3VycmVudFNpemU7Cit2YXIg
Z2w7Cit2YXIgbnVtRnJhbWVzID0gMDsKK3ZhciB0ZXN0TnVtYmVyID0gMDsKK3ZhciBwYm87CisK
K2Z1bmN0aW9uIG5leHRUZXN0KCkgeworICArK3Rlc3ROdW1iZXI7CisgIG51bUZyYW1lcyA9IDA7
CisgIGN1cnJlbnRTaXplID0gbGFyZ2VTaXplOworICBpZiAodGVzdE51bWJlciA+IDIpIHsKKyAg
ICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIgKyB0ZXN0TnVtYmVyKTsKKyAgY2FudmFzLndpZHRoID0g
Y3VycmVudFNpemU7CisgIGNhbnZhcy5oZWlnaHQgPSBjdXJyZW50U2l6ZTsKKyAgdmFyIHVzZVBy
ZXNlcnZlRHJhd2luZ0J1ZmZlciA9ICh0ZXN0TnVtYmVyID09IDEpID8gdHJ1ZSA6IGZhbHNlOwor
ICBkZWJ1ZygiVGVzdGluZyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSAiICsgdXNlUHJlc2VydmVE
cmF3aW5nQnVmZmVyKTsKKyAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgeyBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXI6IHVzZVByZXNlcnZlRHJhd2luZ0J1ZmZlciB9LCAyKTsKKworICBp
ZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworCisg
ICAgd3R1LnJlcXVlc3RBbmltRnJhbWUobmV4dFRlc3QpOworICB9IGVsc2UgeworICAgIHRlc3RQ
YXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEp
OworCisgICAgcGJvID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm8pOworCisgICAgd3R1LnJlcXVlc3RBbmltRnJhbWUocmVu
ZGVyKTsKKyAgfQorfQorCitmdW5jdGlvbiByZW5kZXIoKSB7CisgIGlmICgrK251bUZyYW1lcyA8
IDQpIHsKKyAgICBpZiAoY3VycmVudFNpemUgPT0gbGFyZ2VTaXplKSB7CisgICAgICBjYW52YXMu
aGVpZ2h0ID0gc21hbGxTaXplOworICAgICAgY3VycmVudFNpemUgPSBzbWFsbFNpemU7CisgICAg
fSBlbHNlIHsKKyAgICAgIGNhbnZhcy5oZWlnaHQgPSBsYXJnZVNpemU7CisgICAgICBjdXJyZW50
U2l6ZSA9IGxhcmdlU2l6ZTsKKyAgICB9CisgIH0KKworICBnbC52aWV3cG9ydCgwLCAwLCBsYXJn
ZVNpemUsIGN1cnJlbnRTaXplKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgLy8gQ2hlY2sgdGhlIGZvdXIgY29ybmVycworICB2YXIgZ3JlZW4gPSBbIDAsIDI1NSwgMCwg
MjU1IF07CisgIHZhciBpbnNldCA9IDM7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGluc2V0
LCBpbnNldCwgMSwgMSwgZ3JlZW4sICJsb3dlciBsZWZ0IHNob3VsZCBiZSBncmVlbiIsIDEpOwor
ICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBsYXJnZVNpemUgLSBpbnNldCwgaW5zZXQsIDEsIDEs
IGdyZWVuLCAibG93ZXIgcmlnaHQgc2hvdWxkIGJlIGdyZWVuIiwgMSk7CisgIHd0dS5jaGVja0Nh
bnZhc1JlY3QoZ2wsIGluc2V0LCBjdXJyZW50U2l6ZSAtIGluc2V0LCAxLCAxLCBncmVlbiwgInVw
cGVyIGxlZnQgc2hvdWxkIGJlIGdyZWVuIiwgMSk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IGxhcmdlU2l6ZSAtIGluc2V0LCBjdXJyZW50U2l6ZSAtIGluc2V0LCAxLCAxLCBncmVlbiwgInVw
cGVyIHJpZ2h0IHNob3VsZCBiZSBncmVlbiIsIDEpOworCisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiTm8gR0wgZXJyb3IiKTsKKyAgaWYgKGdsLmdldFBhcmFtZXRlcihn
bC5QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcpICE9IHBibykgeworICAgIHRlc3RGYWlsZWQo
IlBpeGVsIHVucGFjayBidWZmZXIgYmluZGluZyB3YXMgbG9zdCIpOworICB9CisKKyAgaWYgKG51
bUZyYW1lcyA8IDQpIHsKKyAgICB3dHUucmVxdWVzdEFuaW1GcmFtZShyZW5kZXIpOworICB9IGVs
c2UgeworICAgIHd0dS5yZXF1ZXN0QW5pbUZyYW1lKG5leHRUZXN0KTsKKyAgfQorfQorCit3dHUu
cmVxdWVzdEFuaW1GcmFtZShuZXh0VGVzdCk7CisKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2NsZWFyLWZ1bmMtYnVmZmVyLXR5cGUtbWF0Y2gu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9yZW5kZXJpbmcvY2xlYXItZnVuYy1idWZmZXItdHlwZS1tYXRjaC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgwNTRkNzRkZjJlZjRhOGYyNWJiNDczNDE2NTcyZjEwYWRhZjUxYTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcmVuZGVyaW5nL2NsZWFyLWZ1bmMtYnVmZmVyLXR5cGUtbWF0Y2guaHRtbApA
QCAtMCwwICsxLDE0NSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+VGVzdCBjbGVhciBhbmQgY2xlYXJCdWZmZXIgZnVuY3Rpb25zIGhhdmUg
dG8gbWF0Y2ggZmJvJ3MgYnVmZmVyIGZvcm1hdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBXZWJHTDIgc3Bl
Y2lmaWMgY29uc3RyYWludCB0aGF0IGNsZWFyIG9yIGNsZWFyQnVmZmVyKiBmdW5jdGlvbnMgaGF2
ZSB0byBiZSBjb21wYXRpYmxlIHdpdGggZmJvJ3MgYnVmZmVyIGZvcm1hdCIpOworCit2YXIgc2V0
dXBSZW5kZXJidWZmZXIgPSBmdW5jdGlvbihhdHRhY2htZW50LCBmb3JtYXQpIHsKKyAgdmFyIHJl
bmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmZmVyKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGZv
cm1hdCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgcmV0dXJuIHJlbmRlcmJ1ZmZl
cjsKK30KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzLCB1bmRlZmluZWQsIDIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0
cyIpOworCisgIHZhciBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlNp
Z25lZCBpbnRlZ2VyIGJ1ZmZlciIpOworCisgIHZhciBjb2xvcmJ1ZmZlciA9IHNldHVwUmVuZGVy
YnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SR0JBOCk7CisgIHZhciBjb2xvcmJ1ZmZl
cjEgPSBzZXR1cFJlbmRlcmJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSwgZ2wuUkdCQTMySSk7
CisgIGdsLmRyYXdCdWZmZXJzKFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDFdKTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisKKyAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiY2xlYXIgYW5kIElOVCBidWZmZXIiKTsKKworICBnbC5jbGVhckJ1ZmZlcmZ2KGds
LkNPTE9SLCAxLCBuZXcgRmxvYXQzMkFycmF5KDQpKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcmZ2IGFuZCBJTlQgYnVmZmVyIik7
CisKKyAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuQ09MT1IsIDEsIG5ldyBVaW50MzJBcnJheSg0KSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY2xlYXJC
dWZmZXJ1aXYgYW5kIElOVCBidWZmZXIiKTsKKworICBkZWJ1ZygiU2V0IHVwIGRyYXcgYnVmZmVy
IHNvIElOVCBidWZmZXIgaXMgc2V0IHRvIE5PTkUiKTsKKyAgZ2wuZHJhd0J1ZmZlcnMoW2dsLkNP
TE9SX0FUVEFDSE1FTlQwXSk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNsZWFyIGFuZCBJTlQgYnVmZmVy
IGlzIE5PTkUiKTsKKworICBnbC5jbGVhckJ1ZmZlcmZ2KGdsLkNPTE9SLCAxLCBuZXcgRmxvYXQz
MkFycmF5KDQpKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJjbGVh
ckJ1ZmZlcmZ2IGFuZCBJTlQgYnVmZmVyIGlzIE5PTkUiKTsKKworICBnbC5jbGVhckJ1ZmZlcnVp
dihnbC5DT0xPUiwgMCwgbmV3IFVpbnQzMkFycmF5KDQpKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcnVpdiBhbmQgZmxvYXQgYnVm
ZmVyIik7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVW5zaWduZWQgaW50ZWdlciBidWZmZXIi
KTsKKworICBjb2xvcmJ1ZmZlciA9IHNldHVwUmVuZGVyYnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1F
TlQwLCBnbC5SR0JBMzJVSSk7CisgIGNvbG9yYnVmZmVyMSA9IHNldHVwUmVuZGVyYnVmZmVyKGds
LkNPTE9SX0FUVEFDSE1FTlQxLCBnbC5SR0JBOCk7CisgIGdsLmRyYXdCdWZmZXJzKFtnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdKTsKKyAgc2hvdWxkQmUoJ2dsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFJyk7CisKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY2xlYXIgYW5kIFVJTlQgYnVm
ZmVyIik7CisKKyAgZ2wuY2xlYXJCdWZmZXJmdihnbC5DT0xPUiwgMCwgbmV3IEZsb2F0MzJBcnJh
eSg0KSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
Y2xlYXJCdWZmZXJmdiBhbmQgVUlOVCBidWZmZXIiKTsKKworICBnbC5jbGVhckJ1ZmZlcml2KGds
LkNPTE9SLCAwLCBuZXcgSW50MzJBcnJheSg0KSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY2xlYXJCdWZmZXJpdiBhbmQgVUlOVCBidWZmZXIiKTsK
KworICBkZWJ1ZygiU2V0IHVwIGRyYXcgYnVmZmVyIHNvIElOVCBidWZmZXIgaXMgc2V0IHRvIE5P
TkUiKTsKKyAgZ2wuZHJhd0J1ZmZlcnMoW2dsLk5PTkUsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7
CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgImNsZWFyIGFuZCBVSU5UIGJ1ZmZlciBpcyBOT05FIik7CisKKyAg
Z2wuY2xlYXJCdWZmZXJmdihnbC5DT0xPUiwgMCwgbmV3IEZsb2F0MzJBcnJheSg0KSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY2xlYXJCdWZmZXJmdiBhbmQgVUlO
VCBidWZmZXIgaXMgTk9ORSIpOworCisgIGdsLmNsZWFyQnVmZmVyaXYoZ2wuQ09MT1IsIDEsIG5l
dyBJbnQzMkFycmF5KDQpKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sICJjbGVhckJ1ZmZlcml2IGFuZCBmbG9hdCBidWZmZXIiKTsKKworICBkZWJ1Zygi
Iik7CisgIGRlYnVnKCJGbG9hdCBidWZmZXIiKTsKKworICBjb2xvcmJ1ZmZlciA9IHNldHVwUmVu
ZGVyYnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SR0JBOCk7CisgIHZhciBudW1BdHRh
Y2htZW50cyA9IDE7CisgIHZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oIkVYVF9jb2xvcl9idWZm
ZXJfZmxvYXQiKTsKKyAgdmFyIGJ1ZmZlclR5cGUgPSAiZmxvYXQgYnVmZmVyIjsKKyAgaWYgKGV4
dCkgeworICAgIGRlYnVnKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IGlzIGF2YWlsYWJsZTogdGVz
dGluZyBSR0JBOCArIFJHQkEzMkYiKTsKKyAgICBjb2xvcmJ1ZmZlcjEgPSBzZXR1cFJlbmRlcmJ1
ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSwgZ2wuUkdCQTMyRik7CisgICAgKytudW1BdHRhY2ht
ZW50czsKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkNPTE9S
X0FUVEFDSE1FTlQxXSk7CisgIH0gZWxzZSB7CisgICAgZGVidWcoIkVYVF9jb2xvcl9idWZmZXJf
ZmxvYXQgaXMgdW5hdmFpbGFibGU6IHRlc3RpbmcgUkdCQTgiKTsKKyAgICBnbC5kcmF3QnVmZmVy
cyhbZ2wuQ09MT1JfQVRUQUNITUVOVDBdKTsKKyAgICBidWZmZXJUeXBlID0gIlJHQkE4IGJ1ZmZl
ciI7CisgIH0KKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisKKyAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
Y2xlYXIgYW5kICIgKyBidWZmZXJUeXBlKTsKKworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVt
QXR0YWNobWVudHM7ICsraWkpIHsKKyAgICBnbC5jbGVhckJ1ZmZlcmZ2KGdsLkNPTE9SLCBpaSwg
bmV3IEZsb2F0MzJBcnJheSg0KSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJjbGVhckJ1ZmZlcmZ2IGFuZCAiICsgYnVmZmVyVHlwZSk7CisKKyAgICBnbC5jbGVh
ckJ1ZmZlcml2KGdsLkNPTE9SLCBpaSwgbmV3IEludDMyQXJyYXkoNCkpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiY2xlYXJCdWZmZXJpdiBhbmQg
IiArIGJ1ZmZlclR5cGUpOworCisgICAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuQ09MT1IsIGlpLCBu
ZXcgVWludDMyQXJyYXkoNCkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiY2xlYXJCdWZmZXJ1aXYgYW5kICIgKyBidWZmZXJUeXBlKTsKKyAgfQor
CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNv
bG9yYnVmZmVyKTsKKyAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yYnVmZmVyMSk7Cit9CisK
K2RlYnVnKCIiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxk
IGJlIG5vIGVycm9yIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9jbGVhci1zcmdiLWNvbG9y
LWJ1ZmZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9jbGVhci1zcmdiLWNvbG9yLWJ1ZmZlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI4ODUxODYzNWUxYWRkNzg0MzM4ZDBlMTg3OTJhNTMxYWM3NTY3MmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2NsZWFyLXNyZ2ItY29sb3ItYnVmZmVyLmh0bWwKQEAg
LTAsMCArMSw4OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+Q2xlYXIgc1JHQiBDb2xvciBCdWZmZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgY2xlYXJp
bmcgc3JnYiBjb2xvciBidWZmZXIuIik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
ImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworCit2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OwordmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cit2YXIgc2l6ZSA9IDg7CisKK2lm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAg
ICAvLyBDcmVhdGUgYSBzcmdiIGNvbG9yIGJ1ZmZlcgorICAgIGluaXQoKTsKKworICAgIGNsZWFy
X3NyZ2JfY29sb3JfYnVmZmVyKDApOworICAgIGNsZWFyX3NyZ2JfY29sb3JfYnVmZmVyKDEpOwor
fQorCitmdW5jdGlvbiBpbml0KCkgeworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5TUkdCOF9BTFBI
QTgsIHNpemUsIHNpemUsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1
ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRF
WFRVUkVfMkQsIHRleCwgMCk7CisgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoIkZyYW1lYnVmZmVyIGluY29tcGxldGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJmcmFtZWJ1ZmZlciBjb21wbGV0ZSEiKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGNsZWFyX3NyZ2JfY29sb3JfYnVmZmVyKGl0ZXIpIHsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIkNsZWFyIHNSR0IgY29sb3IgYnVmZmVyIHRocm91Z2ggZ2xD
bGVhciBvciBnbENsZWFyQnVmZmVyZnYiKTsKKworICAgIHZhciBjb2xvciA9IFsweDMzLCAweDg4
LCAweGJiLCAweGZmXTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
byk7CisKKyAgICBpZiAoaXRlciA9PSAwKSB7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoY29sb3Jb
MF0gLyAyNTUsIGNvbG9yWzFdIC8gMjU1LCBjb2xvclsyXSAvIDI1NSwgY29sb3JbM10gLyAyNTUp
OworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB2YXIgZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoW2NvbG9yWzBdIC8gMjU1LCBjb2xv
clsxXSAvIDI1NSwgY29sb3JbMl0gLyAyNTUsIGNvbG9yWzNdIC8gMjU1XSk7CisgICAgICAgIGds
LmNsZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDAsIGRhdGEpOworICAgIH0KKworICAgIHZhciBjb2xv
cl9yZWYgPSB3dHUubGluZWFyVG9TUkdCKGNvbG9yKTsKKyAgICB2YXIgdG9sZXJhbmNlID0gMzsK
KyAgICB2YXIgbXNnID0gIiI7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgc2l6
ZSwgc2l6ZSwgY29sb3JfcmVmLCBtc2csIHRvbGVyYW5jZSk7Cit9CisKK2dsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIG51bGwpOworZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBudWxsKTsKK2dsLmRlbGV0ZVRleHR1cmUodGV4KTsKK2dsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
byk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9jbGVhcmJ1ZmZlci1hbmQtZHJhdy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3JlbmRlcmluZy9jbGVhcmJ1ZmZlci1hbmQtZHJhdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NDRhYWUw
YzM0N2ZlNDVkMDM3ZDVkMDhiYWVjZGJlYzlkMDEwYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVu
ZGVyaW5nL2NsZWFyYnVmZmVyLWFuZC1kcmF3Lmh0bWwKQEAgLTAsMCArMSwxNjAgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgY2xl
YXJCdWZmZXIgd2l0aCBkcmF3aW5nPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
ZSBvcGVyYXRpb24gb2YgY2xlYXJCdWZmZXIgZm9sbG93ZWQgYnkgYSBkcmF3IGNhbGwuIik7CisK
K2RlYnVnKCJWZXJpZmllcyB0aGF0IHRoZXNlIGNvbWJpbmVkIHdpdGggcHJlc2VydmVEcmF3aW5n
QnVmZmVyJ3MgaW1wbGljaXQgY2xlYXJzIHdvcmsgcHJvcGVybHkgdG9nZXRoZXIuIik7CitkZWJ1
ZygiUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSdodHRwOi8vY3JidWcuY29tLzgyODI2Mic+
Q2hyb21pdW0gYnVnIDgyODI2MjwvYT4uIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2w7
Cit2YXIgdGVzdEluZGV4ID0gMDsKK3ZhciBpdGVyYXRpb25zID0gMDsKK3ZhciBtYXhJdGVyYXRp
b25zID0gMTA7Cit2YXIgcHJvZzsKK3ZhciB0ZXN0czsKK3ZhciBibGFja1VpbnQ4ID0gWzAsIDAs
IDAsIDI1NV07Cit2YXIgcmVkRmxvYXQgPSBbMS4wLCAwLjAsIDAuMCwgMC4wXTsKK3ZhciByZWRV
aW50OCA9IFsyNTUsIDAsIDAsIDI1NV07Cit2YXIgZ3JlZW5GbG9hdCA9IFswLjAsIDEuMCwgMC4w
LCAwLjBdOwordmFyIGdyZWVuVWludDggPSBbMCwgMjU1LCAwLCAyNTVdOworCitmdW5jdGlvbiB2
ZXJpZnlPbmVQaXhlbChraW5kLCB4LCB5LCByZWFkRm9ybWF0LCByZWFkVHlwZSwgYXJyYXlUeXBl
LCBleHBlY3RlZENvbG9yKSB7CisgIHZhciBidWZmZXIgPSBuZXcgYXJyYXlUeXBlKDQpOworICBn
bC5yZWFkUGl4ZWxzKE1hdGguZmxvb3IoeCksIE1hdGguZmxvb3IoeSksIDEsIDEsIHJlYWRGb3Jt
YXQsIHJlYWRUeXBlLCBidWZmZXIpOworICBpZiAoYnVmZmVyWzBdID09IGV4cGVjdGVkQ29sb3Jb
MF0gJiYKKyAgICAgIGJ1ZmZlclsxXSA9PSBleHBlY3RlZENvbG9yWzFdICYmCisgICAgICBidWZm
ZXJbMl0gPT0gZXhwZWN0ZWRDb2xvclsyXSAmJgorICAgICAgYnVmZmVyWzNdID09IGV4cGVjdGVk
Q29sb3JbM10pIHsKKyAgICB0ZXN0UGFzc2VkKGtpbmQgKyAiIHN1Y2NlZWRlZCIpOworICB9IGVs
c2UgeworICAgIHRlc3RGYWlsZWQoa2luZCArICIgZmFpbGVkLiBFeHBlY3RlZDogIiArIGV4cGVj
dGVkQ29sb3IgKyAiLCBnb3Q6ICIgKyBidWZmZXIpOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RD
bGVhckJ1ZmZlckFuZERyYXcodGVzdCkgeworICB0ZXN0WydjbGVhciddKCk7CisgIHd0dS5zZXRG
bG9hdERyYXdDb2xvcihnbCwgZ3JlZW5GbG9hdCk7CisgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOwor
ICAvLyBCYWNrIGJ1ZmZlciBoYXMgbm8gYWxwaGEgY2hhbm5lbC4KKyAgbGV0IHJlYWRGb3JtYXQg
PSBnbC5SR0JBOworICBsZXQgcmVhZFR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICB2ZXJpZnlP
bmVQaXhlbCgiQ2xlYXJpbmciLCAwLCAwLCByZWFkRm9ybWF0LCByZWFkVHlwZSwgVWludDhBcnJh
eSwgdGVzdFsnYmdDb2xvciddKTsKKyAgdmVyaWZ5T25lUGl4ZWwoIkRyYXdpbmciLCBjYW52YXMu
d2lkdGggLyAyLCBjYW52YXMuaGVpZ2h0IC8gMiwKKyAgICAgICAgICAgICAgICAgcmVhZEZvcm1h
dCwgcmVhZFR5cGUsIFVpbnQ4QXJyYXksIHRlc3RbJ2RyYXdDb2xvciddKTsKK30KKworZnVuY3Rp
b24gcnVuTmV4dFRlc3QoKSB7CisgIGlmICh0ZXN0SW5kZXggPj0gdGVzdHMubGVuZ3RoKSB7Cisg
ICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisKKyAgbGV0IHRlc3QgPSB0ZXN0
c1t0ZXN0SW5kZXhdOworICBpZiAoaXRlcmF0aW9ucyA9PSAwKSB7CisgICAgZGVidWcoJycpOwor
ICAgIGRlYnVnKCdUZXN0aW5nOiAnICsgdGVzdFsnZGVzYyddKQorICB9CisgIHRlc3RDbGVhckJ1
ZmZlckFuZERyYXcodGVzdCk7CisKKyAgaWYgKCsraXRlcmF0aW9ucyA9PSBtYXhJdGVyYXRpb25z
KSB7CisgICAgaXRlcmF0aW9ucyA9IDA7CisgICAgKyt0ZXN0SW5kZXg7CisgIH0KKworICB3dHUu
d2FpdEZvckNvbXBvc2l0ZShydW5OZXh0VGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7
CisgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgYWxwaGE6ZmFsc2UgfSwgMik7
CisKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKKyAgICByZXR1cm47CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlz
dHMiKTsKKyAgfQorCisgIHByb2cgPSB3dHUuc2V0dXBDb2xvclF1YWQoZ2wsIDAsIHsgc2NhbGU6
IDAuNSB9KTsKKworICB0ZXN0cyA9IFsKKyAgICB7CisgICAgICBkZXNjOiAnSW1wbGljaXQgY2xl
YXInLAorICAgICAgY2xlYXI6IGZ1bmN0aW9uKCkge30sCisgICAgICBiZ0NvbG9yOiBibGFja1Vp
bnQ4LAorICAgICAgLy8gVGhlIGltcGxpY2l0IGNsZWFyIGNsZWFycyBkZXB0aCB0byAxLjAsIGFu
ZCBzaW5jZSB0aGUgcXVhZCBpcworICAgICAgLy8gZHJhd24gYXQgYSBkZXB0aCBvZiAwLjAsIGl0
J3MgYWx3YXlzIGRpc2NhcmRlZC4KKyAgICAgIGRyYXdDb2xvcjogYmxhY2tVaW50OCwKKyAgICB9
LAorICAgIHsKKyAgICAgIGRlc2M6ICdjbGVhckJ1ZmZlcmZpIG9ubHknLAorICAgICAgY2xlYXI6
IGZ1bmN0aW9uKCkgeworICAgICAgICBnbC5jbGVhckJ1ZmZlcmZpKGdsLkRFUFRIX1NURU5DSUws
IDAsIDAuMCwgMCk7CisgICAgICB9LAorICAgICAgYmdDb2xvcjogYmxhY2tVaW50OCwKKyAgICAg
IGRyYXdDb2xvcjogZ3JlZW5VaW50OCwKKyAgICB9LAorICAgIHsKKyAgICAgIGRlc2M6ICdjbGVh
ckJ1ZmZlcmZ2IGFuZCBjbGVhcicsCisgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CisgICAgICAg
IGdsLmNsZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDAsIHJlZEZsb2F0KSwKKyAgICAgICAgZ2wuY2xl
YXJEZXB0aCgwLjApOworICAgICAgICBnbC5jbGVhcihnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAg
ICAgIH0sCisgICAgICBiZ0NvbG9yOiByZWRVaW50OCwKKyAgICAgIGRyYXdDb2xvcjogZ3JlZW5V
aW50OCwKKyAgICB9LAorICAgIHsKKyAgICAgIGRlc2M6ICdjbGVhckJ1ZmZlcntmdn0gYW5kIHtm
aX0nLAorICAgICAgY2xlYXI6IGZ1bmN0aW9uKCkgeworICAgICAgICBnbC5jbGVhckJ1ZmZlcmZ2
KGdsLkNPTE9SLCAwLCByZWRGbG9hdCksCisgICAgICAgIGdsLmNsZWFyQnVmZmVyZmkoZ2wuREVQ
VEhfU1RFTkNJTCwgMCwgMC4wLCAwKTsKKyAgICAgIH0sCisgICAgICBiZ0NvbG9yOiByZWRVaW50
OCwKKyAgICAgIGRyYXdDb2xvcjogZ3JlZW5VaW50OCwKKyAgICB9LAorICBdOworCisgIC8vIENs
ZWFyIGNhbnZhcyB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBibGFjayB0byBzdGFydC4KKyAgZ2wu
Y2xlYXJDb2xvcigwLjAsIDAuMCwgMS4wLCAxLjApOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKworICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgIC8vIFVucmVhbCBFbmdp
bmUncyBkZXB0aCB0ZXN0IGlzIHJldmVyc2VkIGZyb20gdGhlCisgIC8vIGRlZmF1bHQuIEluY2x1
ZGluZyB0aGUgY2xlYXIgb2YgdGhlIGRlcHRoIGJ1ZmZlciBpbiB0aGlzIHRlc3QKKyAgLy8gY2Fz
ZSBoaWdobGlnaHRzIHRoZSByZW5kZXJpbmcgZXJyb3IgbW9yZSBjbGVhcmx5LCBzaW5jZSBuZWl0
aGVyCisgIC8vIHRoZSBiYWNrZ3JvdW5kIG5vciBhbnkgcmVuZGVyZWQgb2JqZWN0IHNob3cgdXAu
CisgIGdsLmRlcHRoRnVuYyhnbC5HRVFVQUwpOworCisgIC8vIE11c3QgcnVuIGluIGEgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGxvb3AgdG8gcHJvdm9rZSBpbXBsaWNpdAorICAvLyBjbGVhcnMgb2Yg
dGhlIGNhbnZhcy4KKyAgd3R1LndhaXRGb3JDb21wb3NpdGUocnVuTmV4dFRlc3QpOworfQorCitk
ZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvY2xlYXJidWZmZXItc3Vi
LXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9jbGVhcmJ1ZmZlci1zdWItc291cmNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjE2ZDJiZGE0Y2FmNzg3ZTYxN2Y2Y2MzMWM0NzEyNjEzMzJkMTlmMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvY2xlYXJidWZmZXItc3ViLXNvdXJjZS5odG1sCkBAIC0w
LDAgKzEsMTEwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5UZXN0IGNsZWFyQnVmZmVyIGZ1bmN0aW9ucyB3aXRoIG9wdGlvbmFsIHNyY09m
ZnNldCBhcmd1bWVudDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGNsZWFyQnVmZmVyKiBmdW5jdGlvbnMgd2l0aCBv
cHRpb25hbCBzcmNPZmZzZXQgYXJndW1lbnQiKTsKKworZnVuY3Rpb24gdmVyaWZ5T25lUGl4ZWwo
cmVhZEZvcm1hdCwgcmVhZFR5cGUsIGFycmF5VHlwZSwgZXhwZWN0ZWRDb2xvcikgeworICB2YXIg
YnVmZmVyID0gbmV3IGFycmF5VHlwZSg0KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBy
ZWFkRm9ybWF0LCByZWFkVHlwZSwgYnVmZmVyKTsKKyAgaWYgKGJ1ZmZlclswXSA9PSBleHBlY3Rl
ZENvbG9yWzBdICYmCisgICAgICBidWZmZXJbMV0gPT0gZXhwZWN0ZWRDb2xvclsxXSAmJgorICAg
ICAgYnVmZmVyWzJdID09IGV4cGVjdGVkQ29sb3JbMl0gJiYKKyAgICAgIGJ1ZmZlclszXSA9PSBl
eHBlY3RlZENvbG9yWzNdKSB7CisgICAgdGVzdFBhc3NlZCgiY2xlYXJCdWZmZXIgc2V0cyB0aGUg
cmVuZGVyYnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgZGF0YSIpOworICB9IGVsc2UgeworICAgIHRl
c3RGYWlsZWQoImNsZWFyQnVmZmVyIGZhaWxzIHRvIHdvcmsuIEV4cGVjdGVkOiAiICsgZXhwZWN0
ZWRDb2xvciArICIsIGdvdDogIiArIGJ1ZmZlcik7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENs
ZWFyQnVmZmVyKGZ1bmMsIGZvcm1hdCwgYXJyYXlUeXBlLCByZWFkRm9ybWF0LCByZWFkVHlwZSkg
eworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nICIgKyBmdW5jKTsKKworICB2YXIgZmIg
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZiKTsKKworICB2YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCk7CisgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIp
OworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgZ2wucmVuZGVy
YnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGZvcm1hdCwgY2FudmFzLndpZHRoLCBjYW52
YXMuaGVpZ2h0KTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisKKyAgdmFyIHNyY0RhdGEg
PSBuZXcgYXJyYXlUeXBlKFsxLCAyLCAzLCA0LCA1LCA2XSk7CisgIGdsW2Z1bmNdKGdsLkNPTE9S
LCAwLCBzcmNEYXRhKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJj
bGVhckJ1ZmZlciB3aXRoIG5vIHNyY09mZnNldCBzaG91bGQgc3VjY2VlZCIpOworICB2ZXJpZnlP
bmVQaXhlbChyZWFkRm9ybWF0LCByZWFkVHlwZSwgYXJyYXlUeXBlLCBbMSwyLDMsNF0pOworCisg
IGdsW2Z1bmNdKGdsLkNPTE9SLCAwLCBzcmNEYXRhLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJjbGVhckJ1ZmZlciB3aXRoIHNyY09mZnNldCA9IDAgc2hvdWxk
IHN1Y2NlZWQiKTsKKyAgdmVyaWZ5T25lUGl4ZWwocmVhZEZvcm1hdCwgcmVhZFR5cGUsIGFycmF5
VHlwZSwgWzEsMiwzLDRdKTsKKworICBnbFtmdW5jXShnbC5DT0xPUiwgMCwgc3JjRGF0YSwgMik7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY2xlYXJCdWZmZXIgd2l0
aCBzcmNPZmZzZXQgPSAyIHNob3VsZCBzdWNjZWVkIik7CisgIHZlcmlmeU9uZVBpeGVsKHJlYWRG
b3JtYXQsIHJlYWRUeXBlLCBhcnJheVR5cGUsIFszLDQsIDUsIDZdKTsKKworICBnbFtmdW5jXShn
bC5DT0xPUiwgMCwgc3JjRGF0YSwgNCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfVkFMVUUsICJjbGVhckJ1ZmZlciB3aXRoIHNyY09mZnNldCA9IDQgc2hvdWxkIGZhaWw6
IG91dCBvZiBib3VuZHMiKTsKKworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7CisgIGdsLmRl
bGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVuZGVmaW5lZCwgMik7CitpZiAo
IWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgdmFyIHRlc3RDYXNlcyA9IFsK
KyAgICB7CisgICAgICBmdW5jOiAiY2xlYXJCdWZmZXJpdiIsIGZvcm1hdDogZ2wuUkdCQTMySSwg
YXJyYXlUeXBlOiBJbnQzMkFycmF5LAorICAgICAgcmVhZEZvcm1hdDogZ2wuUkdCQV9JTlRFR0VS
LCByZWFkVHlwZTogZ2wuSU5ULAorICAgIH0sCisgICAgeworICAgICAgZnVuYzogImNsZWFyQnVm
ZmVydWl2IiwgZm9ybWF0OiBnbC5SR0JBMzJVSSwgYXJyYXlUeXBlOiBVaW50MzJBcnJheSwKKyAg
ICAgIHJlYWRGb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgcmVhZFR5cGU6IGdsLlVOU0lHTkVEX0lO
VCwKKyAgICB9LAorICAgIHsKKyAgICAgIGZ1bmM6ICJjbGVhckJ1ZmZlcmZ2IiwgZm9ybWF0OiBn
bC5SR0JBMzJGLCBhcnJheVR5cGU6IEZsb2F0MzJBcnJheSwKKyAgICAgIHJlYWRGb3JtYXQ6IGds
LlJHQkEsIHJlYWRUeXBlOiBnbC5GTE9BVCwKKyAgICAgIGV4dGVuc2lvbjogIkVYVF9jb2xvcl9i
dWZmZXJfZmxvYXQiLAorICAgIH0sCisgIF07CisKKyAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRl
c3RDYXNlcy5sZW5ndGg7ICsrdHQpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3RDYXNlc1t0dF07Cisg
ICAgaWYgKHRlc3QuZXh0ZW5zaW9uICYmICFnbC5nZXRFeHRlbnNpb24odGVzdC5leHRlbnNpb24p
KQorICAgICAgY29udGludWU7CisgICAgdGVzdENsZWFyQnVmZmVyKHRlc3QuZnVuYywgdGVzdC5m
b3JtYXQsIHRlc3QuYXJyYXlUeXBlLCB0ZXN0LnJlYWRGb3JtYXQsIHRlc3QucmVhZFR5cGUpOwor
ICB9Cit9CisKK2RlYnVnKCIiKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAic2hvdWxkIGJlIG5vIGVycm9yIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9jbGVhcmJ1
ZmZlcmZ2LXdpdGgtYWxwaGEtZmFsc2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvY2xlYXJidWZmZXJmdi13
aXRoLWFscGhhLWZhbHNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUwYjZmOGUyZmMzYzIxYjhiMDgyMzA5
MjU5ZTNkMmQ4MWQ0NGRkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvY2xlYXJidWZm
ZXJmdi13aXRoLWFscGhhLWZhbHNlLmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdCBjbGVhckJ1ZmZl
cmZ2IHdpdGggYWxwaGE6ZmFsc2UgY2FudmFzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIG9wZXJhdGlvbiBv
ZiBjbGVhckJ1ZmZlcmZ2IHdpdGggdGhlIGJhY2sgYnVmZmVyIG9mIGFuIGFscGhhOmZhbHNlIGNh
bnZhcy4iKTsKKworZnVuY3Rpb24gdmVyaWZ5T25lUGl4ZWwocmVhZEZvcm1hdCwgcmVhZFR5cGUs
IGFycmF5VHlwZSwgZXhwZWN0ZWRDb2xvcikgeworICB2YXIgYnVmZmVyID0gbmV3IGFycmF5VHlw
ZSg0KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCByZWFkRm9ybWF0LCByZWFkVHlwZSwg
YnVmZmVyKTsKKyAgaWYgKGJ1ZmZlclswXSA9PSBleHBlY3RlZENvbG9yWzBdICYmCisgICAgICBi
dWZmZXJbMV0gPT0gZXhwZWN0ZWRDb2xvclsxXSAmJgorICAgICAgYnVmZmVyWzJdID09IGV4cGVj
dGVkQ29sb3JbMl0gJiYKKyAgICAgIGJ1ZmZlclszXSA9PSBleHBlY3RlZENvbG9yWzNdKSB7Cisg
ICAgdGVzdFBhc3NlZCgiY2xlYXJCdWZmZXJmdiBzZXQgdGhlIGNvbG9yIGJ1ZmZlciB0byB0aGUg
Y29ycmVjdCB2YWx1ZSIpOworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoImNsZWFyQnVmZmVy
ZnYgZmFpbGVkIHRvIHdvcmsuIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRDb2xvciArICIsIGdvdDog
IiArIGJ1ZmZlcik7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdENsZWFyQnVmZmVyKGZ1bmMsIGZv
cm1hdCwgYXJyYXlUeXBlLCByZWFkRm9ybWF0LCByZWFkVHlwZSwgcmVhZEFycmF5VHlwZSkgewor
ICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0aW5nICIgKyBmdW5jKTsKKworICB2YXIgc3JjRGF0
YSA9IG5ldyBhcnJheVR5cGUoWzAsIDEsIDAsIDBdKTsKKyAgZ2xbZnVuY10oZ2wuQ09MT1IsIDAs
IHNyY0RhdGEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNsZWFy
QnVmZmVyIHdpdGggbm8gc3JjT2Zmc2V0IHNob3VsZCBzdWNjZWVkIik7CisgIC8vIEJhY2sgYnVm
ZmVyIGhhcyBubyBhbHBoYSBjaGFubmVsCisgIHZlcmlmeU9uZVBpeGVsKHJlYWRGb3JtYXQsIHJl
YWRUeXBlLCBVaW50OEFycmF5LCBbMCwgMjU1LCAwLCAyNTVdKTsKK30KKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7IGFscGhhOmZhbHNl
IH0sIDIpOworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4aXN0cyIpOworCisgIHZhciB0
ZXN0Q2FzZXMgPSBbCisgICAgeworICAgICAgZnVuYzogImNsZWFyQnVmZmVyZnYiLCBmb3JtYXQ6
IGdsLlJHQkEsIGFycmF5VHlwZTogRmxvYXQzMkFycmF5LAorICAgICAgcmVhZEZvcm1hdDogZ2wu
UkdCQSwgcmVhZFR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRBcnJheVR5cGU6IFVpbnQ4QXJy
YXksCisgICAgfSwKKyAgXTsKKworICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGVzdENhc2VzLmxl
bmd0aDsgKyt0dCkgeworICAgIHZhciB0ZXN0ID0gdGVzdENhc2VzW3R0XTsKKyAgICBpZiAodGVz
dC5leHRlbnNpb24gJiYgIWdsLmdldEV4dGVuc2lvbih0ZXN0LmV4dGVuc2lvbikpCisgICAgICBj
b250aW51ZTsKKyAgICB0ZXN0Q2xlYXJCdWZmZXIodGVzdC5mdW5jLCB0ZXN0LmZvcm1hdCwgdGVz
dC5hcnJheVR5cGUsCisgICAgICAgICAgICAgICAgICAgIHRlc3QucmVhZEZvcm1hdCwgdGVzdC5y
ZWFkVHlwZSwgdGVzdC5yZWFkQXJyYXlUeXBlKTsKKyAgfQorfQorCitkZWJ1ZygiIik7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvciIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvY2xpcHBpbmctd2lkZS1wb2ludHMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5k
ZXJpbmcvY2xpcHBpbmctd2lkZS1wb2ludHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjI0NTdhNmE2OWMz
YzI3NTAyMmQ4NTI4OGU1YjUxMWI2ZjlkNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmlu
Zy9jbGlwcGluZy13aWRlLXBvaW50cy5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkNsaXBwaW5nIHdpZGUgcG9pbnRzIHRlc3Q8L3RpdGxlPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RiZWQi
IHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNvbnRleHRWZXJz
aW9uID0gMjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NsaXBwaW5n
LXdpZGUtcG9pbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRl
cmluZy9kZXB0aC1zdGVuY2lsLWZlZWRiYWNrLWxvb3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvZGVwdGgt
c3RlbmNpbC1mZWVkYmFjay1sb29wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc2NzgwMTdlZWM3ZDA1NDA0
NzQyMjczYTg2NTc1OTBhYWYwZGNjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvZGVw
dGgtc3RlbmNpbC1mZWVkYmFjay1sb29wLmh0bWwKQEAgLTAsMCArMSwxNjUgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFJlbmRl
cmluZyBhbmQgU2FtcGxpbmcgRmVlZGJhY2sgTG9vcCBUZXN0cyBmb3IgRGVwdGgvU3RlbmNpbCBC
dWZmZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI4IiBoZWlnaHQ9IjgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIGhpZ2hwIHZlYzQgYVBvc2l0aW9u
OworaW4gdmVjMiBhVGV4Q29vcmQ7CitvdXQgdmVjMiB0ZXhDb29yZDsKK3ZvaWQgbWFpbigpIHsK
KyAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IGFUZXhDb29yZDsK
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9y
bSBzYW1wbGVyMkQgdGV4OworaW4gdmVjMiB0ZXhDb29yZDsKK291dCB2ZWM0IG9Db2xvcjsKK3Zv
aWQgbWFpbigpIHsKKyAgICBvQ29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Q29vcmQpOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkg
b2YgcmVuZGVyaW5nIHRvIHRoZSBzYW1lIHRleHR1cmUgd2hlcmUgaXQgc2FtcGxlcyBmcm9tLiIp
OworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAy
KTsKKwordmFyIHdpZHRoID0gODsKK3ZhciBoZWlnaHQgPSA4OwordmFyIHRleDA7Cit2YXIgdGV4
MTsKK3ZhciB0ZXgyOwordmFyIGZibzsKK3ZhciBwcm9ncmFtOwordmFyIHBvc2l0aW9uTG9jOwor
dmFyIHRleENvb3JkTG9jOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBj
b250ZXh0IGV4aXN0cyIpOworCisgICAgaW5pdCgpOworICAgIGRldGVjdF9kZXB0aF9zdGVuY2ls
X2ZlZWRiYWNrX2xvb3AoKTsKKyAgICBkZWluaXQoKTsKK30KKworZnVuY3Rpb24gaW5pdCgpIHsK
KyAgICAvLyBTZXR1cCBwcm9ncmFtCisgICAgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2ws
IFsndnNoYWRlcicsICdmc2hhZGVyJ10sIFsnYVBvc2l0aW9uJywgJ2FUZXhDb29yZCddLCBbMCwg
MV0pOworICAgIHBvc2l0aW9uTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFQ
b3NpdGlvbiIpOworICAgIHRleENvb3JkTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3Jh
bSwgImFUZXhDb29yZCIpOworICAgIGlmICghcHJvZ3JhbSB8fCBwb3NpdGlvbkxvYyA8IDAgfHwg
dGV4Q29vcmRMb2MgPCAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldCB1cCBwcm9ncmFtIGZh
aWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RQYXNzZWQoIlNldCB1cCBw
cm9ncmFtIHN1Y2NlZWRlZCIpOworCisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAsIDEpOwor
ICAgIGdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgdmFyIHRleExvYyA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisgICAgZ2wudW5pZm9ybTFp
KHRleExvYywgMCk7CisKKyAgICAvLyBDcmVhdGUgdGV4dHVyZXMgYW5kIGFsbG9jYXRlIHN0b3Jh
Z2UKKyAgICB0ZXgwID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHRleDEgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgdGV4MiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB3dHUuZmlsbFRl
eHR1cmUoZ2wsIHRleDAsIHdpZHRoLCBoZWlnaHQsIFsweDAsIDB4ZmYsIDB4MCwgMHhmZl0sIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGdsLlJHQkEpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
ICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleDEsIHdpZHRoLCBoZWlnaHQsIFsweDgwXSwgMCwgZ2wu
REVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIGdsLkRFUFRIX0NPTVBPTkVOVDE2KTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DT01QQVJFX01PREUsIGdsLkNPTVBBUkVfUkVGX1RPX1RF
WFRVUkUpOworICAgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4Miwgd2lkdGgsIGhlaWdodCwgWzB4
NDBdLCAwLCBnbC5ERVBUSF9TVEVOQ0lMLCBnbC5VTlNJR05FRF9JTlRfMjRfOCwgZ2wuREVQVEgy
NF9TVEVOQ0lMOCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFLCBnbC5DT01Q
QVJFX1JFRl9UT19URVhUVVJFKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlN1Y2NlZWQgdG8gY3JlYXRlIHRleHR1cmVzLiIpOworCisgICAgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgwLCAwKTsKK30KKworZnVuY3Rpb24g
ZGV0ZWN0X2RlcHRoX3N0ZW5jaWxfZmVlZGJhY2tfbG9vcCgpIHsKKyAgICAvLyBUZXN0IHJlbmRl
cmluZyBhbmQgc2FtcGxpbmcgZmVlZGJhY2sgbG9vcCBmb3IgZGVwdGggYnVmZmVyCisgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MSk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQs
IHRleDEsIDApOworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVG
RkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJG
cmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGds
LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiVGhl
IHRlc3Qgc2FtcGxlcyBmcm9tIGEgaW1hZ2UuIFRoZSBzYW1lIGltYWdlIGlzIHVzZWQgYXMgZGVw
dGggYnVmZmVyIGR1cmluZyByZW5kZXJpbmcuIik7CisKKyAgICBnbC5kZXB0aE1hc2soZ2wuRkFM
U0UpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJUaGUgdGVzdCBzYW1wbGVzIGZyb20g
YSBpbWFnZS4gVGhlIHNhbWUgaW1hZ2UgaXMgdXNlZCBhcyBkZXB0aCBidWZmZXIuIEEgZmVlZGJh
Y2sgbG9vcCBpcyBmb3JtZWQgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzIG9mIGRlcHRoIG1hc2su
Iik7CisKKyAgICBnbC5kZXB0aE1hc2soZ2wuVFJVRSk7CisgICAgZ2wuZGlzYWJsZShnbC5ERVBU
SF9URVNUKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiVGhlIHRlc3Qgc2FtcGxlcyBm
cm9tIGEgaW1hZ2UuIFRoZSBzYW1lIGltYWdlIGlzIHVzZWQgYXMgZGVwdGggYnVmZmVyLiBBIGZl
ZWRiYWNrIGxvb3AgaXMgZm9ybWVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgZGVwdGggdGVz
dCBpcyBlbmFibGVkLiIpOworCisgICAgLy8gVGVzdCByZW5kZXJpbmcgYW5kIHNhbXBsaW5nIGZl
ZWRiYWNrIGxvb3AgZm9yIHN0ZW5jaWwgYnVmZmVyCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4Mik7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZG
RVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1F
TlQsIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZ2wuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgIlRoZSB0ZXN0IHNhbXBsZXMgZnJvbSBhIGltYWdlLiBUaGUgc2Ft
ZSBpbWFnZSBpcyB1c2VkIGFzIHN0ZW5jaWwgYnVmZmVyIGR1cmluZyByZW5kZXJpbmcuIik7CisK
KyAgICBnbC5zdGVuY2lsTWFzaygweDApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJU
aGUgdGVzdCBzYW1wbHMgZnJvbSBhIGltYWdlLiBUaGUgc2FtZSBpbWFnZSBpcyB1c2VkIGFzIHN0
ZW5jaWwgYnVmZmVyLiBBIGZlZWRiYWNrIGxvb3AgaXMgZm9ybWVkIHJlZ2FyZGxlc3Mgb2YgdGhl
IHN0YXR1cyBvZiBzdGVuY2lsIG1hc2suIik7CisKKyAgICBnbC5zdGVuY2lsTWFzaygweGZmZmYp
OworICAgIGdsLmRpc2FibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3
VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiVGhlIHRlc3Qgc2FtcGxlcyBmcm9tIGEgaW1hZ2UuIFRoZSBzYW1lIGltYWdlIGlz
IHVzZWQgYXMgc3RlbmNpbCBidWZmZXIuIEEgZmVlZGJhY2sgbG9vcCBpcyBmb3JtZWQgcmVnYXJk
bGVzcyBvZiB3aGV0aGVyIHRoZSBzdGVuY2lsIHRlc3QgaXMgZW5hYmxlZC4iKTsKK30KKworZnVu
Y3Rpb24gZGVpbml0KCkgeworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXgwKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleDEpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4Mik7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKK30K
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2RyYXctYnVmZmVycy1kaXJ0eS1zdGF0ZS1idWcuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9yZW5kZXJpbmcvZHJhdy1idWZmZXJzLWRpcnR5LXN0YXRlLWJ1Zy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJiNTRkNGMyNTVmMjkxNGY3NTFiMjlhMTcxZTVmNzlkMjI3N2I5NTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvcmVuZGVyaW5nL2RyYXctYnVmZmVycy1kaXJ0eS1zdGF0ZS1idWcuaHRtbApAQCAt
MCwwICsxLDExMSBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+V2ViR0wgRHJhdyBCdWZmZXJzIERpcnR5IFN0YXRlIEJ1ZyBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPiA8L2Nh
bnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCBhX3Bvc2l0aW9u
Owordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3Zl
cnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgbXlfRnJh
Z0NvbG9yOwordm9pZCBtYWluKCkgeworICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwg
MSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHZlcmlmaWVzIGEgYnVnIGluIGRyYXcgYnVmZmVycyBkaXJ0eSBzdGF0ZSBtYW5h
Z2VtZW50IGluIENocm9tZSAoY3JidWcuY29tLzY3ODE1MykuIik7CisKK2RlYnVnKCIiKTsKKwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBu
dWxsLCAyKTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMg
bm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0
cyIpOworCisgIHJ1blRlc3QoKTsKKworICBkZWJ1ZygiIik7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitm
dW5jdGlvbiBydW5UZXN0KCkgeworICBkZWJ1ZygiIik7CisKKyAgdmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLCBbImFfcG9zaXRpb24iXSk7
CisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKworICB2YXIgd2lkdGggPSAyLCBoZWlnaHQgPSAy
OworCisgIHZhciBjb2xvclRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgY29sb3JUZXgpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKworICB2YXIgZGVwdGhUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGRlcHRoVGV4KTsKKyAgZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQyNCwgd2lkdGgsIGhlaWdodCwgMCwg
Z2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51bGwpOworCisgIHZhciBmYiA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmIpOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIGNvbG9yVGV4LCAwKTsKKworICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldHVwIHNob3VsZCBjYXVzZSBubyBH
TCBlcnJvcnMiKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkNsZWFyIGFuZCBkcmF3IHNob3VsZCBjYXVz
ZSBubyBHTCBlcnJvcnMiKTsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgd2lkdGgs
IGhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSByZWQiKTsKKworICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
VEVYVFVSRV8yRCwgZGVwdGhUZXgsIDApOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDAp
OworCisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiQ2xlYXIgYW5kIGRyYXcgc2hvdWxkIGNhdXNlIG5vIEdMIGVy
cm9ycyIpOworCisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5E
RVBUSF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCBjb2xvclRleCwgMCk7CisKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSByZWQiKTsKKworICBn
bC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAvLyBQcmV2aW91c2x5IGluIENocm9tZSwgc3dpdGNoaW5nIGFyb3VuZCB0
aGUgYXR0YWNobWVudHMgb24gYSBmcmFtZWJ1ZmZlcgorICAvLyBhZmZlY3RlZCBhIERyYXdCdWZm
ZXJzIGNhY2hlIHRoYXQgd2FzIG1haW50YWluZWQgcHJvcGVybHkgZHVyaW5nIGRyYXcKKyAgLy8g
Y2FsbHMsIGJ1dCBub3QgY2xlYXJzLgorICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisKKyAg
Z2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmIpOwor
ICBnbC5kZWxldGVUZXh0dXJlKGNvbG9yVGV4KTsKKyAgZ2wuZGVsZXRlVGV4dHVyZShkZXB0aFRl
eCk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9kcmF3LWJ1ZmZlcnMt
ZHJpdmVyLWhhbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvZHJhdy1idWZmZXJzLWRyaXZlci1oYW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhODM2MGQ2ZWQ1NGU0MTIwMzI0NjE3ZTc0YjVlODk1N2NjZDBjZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvZHJhdy1idWZmZXJzLWRyaXZlci1oYW5nLmh0
bWwKQEAgLTAsMCArMSwxODcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIERyYXcgQnVmZmVycyBEcml2ZXIgSGFuZyBDb25mb3Jt
YW5jZSBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2Fu
dmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBl
PSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitpbiB2ZWM0IGFfcG9zaXRpb247
Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVy
c2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitvdXQgdmVjNCBteV9GcmFn
Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAx
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJU
aGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhIGRyaXZlciBidWcgY2F1c2luZyBhIGhhbmcg
aW4gdGhlIGRyaXZlciBhbmQgdGhlcmVieSB0aGUgYnJvd3NlciAoY3JidWcuY29tLzY5NjE4Nyku
IikKKworZGVidWcoIlRoYW5rcyB0byBBbmRyZSBXZWlzc2Zsb2cgKEBGbG9oT2ZXb2UgLyBAZmxv
b29oKSBmb3IgdGhpcyB0ZXN0LiIpOworZGVidWcoIklmIHRoZSBidWcgZXhpc3RzLCB0aGlzIHRl
c3QgZG9lc24ndCBmYWlsIG9yIHRpbWUgb3V0IHBlciB0aGUgaGFybmVzczsgdGhlIGJyb3dzZXIg
YmFzaWNhbGx5IGhhbmdzLiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IHRydWUsIGFscGhh
OiBmYWxzZSB9LCAyKTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0
IGV4aXN0cyIpOworCisgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
Ly8gY3JlYXRlIGEgZ2xvYmFsIFZBTworICBsZXQgdmFvID0gZ2wuY3JlYXRlVmVydGV4QXJyYXko
KTsKKyAgZ2wuYmluZFZlcnRleEFycmF5KHZhbyk7CisKKyAgLy8gY3JlYXRlIGEgMyBNU0FBICdv
ZmZzY3JlZW4gcmVuZGVyIHRhcmdldHMnLCBlYWNoIGNvbnNpc3Rpbmcgb2Y6CisgIC8vICAtIDEg
Y29sb3IgdGV4dHVyZSB3aGljaCB3aWxsIGhvbGQgdGhlIE1TQUEgcmVzb2x2ZSByZXN1bHQKKyAg
Ly8gIC0gMSBNU0FBIGNvbG9yIHJlbmRlcmJ1ZmZlcgorICAvLyBwbHVzIG9uZSBkZXB0aC1zdGVu
Y2lsIHJlbmRlcmJ1ZmZlcgorICBsZXQgdGV4MCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wu
YWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleDApOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUFYX0xFVkVMLCAwKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsK
KyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wu
Q0xBTVBfVE9fRURHRSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QTgsIDIwMCwgMjAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgbGV0
IGNfcmIwID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGdsLmJpbmRSZW5kZXJidWZmZXIo
Z2wuUkVOREVSQlVGRkVSLCBjX3JiMCk7CisgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZShnbC5SRU5ERVJCVUZGRVIsIDQsIGdsLlJHQkE4LCAyMDAsIDIwMCk7CisgIGxldCBkc19y
YiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJF
TkRFUkJVRkZFUiwgZHNfcmIpOworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
Z2wuUkVOREVSQlVGRkVSLCA0LCBnbC5ERVBUSDI0X1NURU5DSUw4LCAyMDAsIDIwMCk7CisKKyAg
Ly8gMm5kIG9mZnNjcmVlbiByZW5kZXIgdGFyZ2V0CisgIGxldCB0ZXgxID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQVhfTEVWRUwsIDApOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7Cisg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNM
QU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBOCwgMjAwLCAyMDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IG51bGwpOworICBsZXQgY19yYjEgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgZ2wuYmlu
ZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNfcmIxKTsKKyAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgNCwgZ2wuUkdCQTgsIDIwMCwgMjAw
KTsKKworICAvLyAzcmQgb2Zmc2NyZWVuIHJlbmRlciB0YXJnZXQKKyAgbGV0IHRleDIgPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgyKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01BWF9MRVZFTCwgMCk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElO
RUFSKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
UywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCAyMDAsIDIwMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgIGxldCBjX3JiMiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwor
ICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY19yYjIpOworICBnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCA0LCBnbC5SR0JBOCwg
MjAwLCAyMDApOworCisgIC8vIGFuIE1SVCBmcmFtZWJ1ZmZlciB3aXRoIHRoZSAzIE1TQUEgcmVu
ZGVyYnVmZmVycyBhbmQgTVNBQSBkZXB0aC9zdGVuY2lsIGF0dGFjaG1lbnRzCisgIGxldCBtcnRf
ZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG1ydF9mYik7CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjX3JiMCk7Cisg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMSwgZ2wuUkVOREVSQlVGRkVSLCBjX3JiMSk7CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMiwgZ2wuUkVOREVSQlVG
RkVSLCBjX3JiMik7CisgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRzX3JiKTsKKyAgZ2wuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgZ2wuUkVOREVSQlVGRkVSLCBkc19yYik7CisgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpOworCisgIC8vIDMgJ01TQUEgcmVzb2x2ZSBmcmFtZWJ1ZmZlcnMnIHdo
aWNoIGFyZSB0aGUgdGFyZ2V0IGZvciB0aGUgTVNBQS1yZXNvbHZlLWJsaXQsCisgIC8vIHdpdGgg
dGhlIDMgY29sb3IgdGV4dHVyZXMgYXMgY29sb3IgYXR0YWNobWVudHMKKyAgbGV0IHJlc19mYjAg
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIHJlc19mYjApOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDAsIDApOworICBnbC5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgbGV0IHJlc19mYjEgPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIHJlc19mYjEpOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDEsIGdsLlRFWFRVUkVfMkQsIHRleDEsIDApOworICBnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgbGV0IHJlc19mYjIgPSBnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IHJlc19mYjIpOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDIsIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOworICBsZXQgZnJhbWVO
dW1iZXIgPSAwOworCisgIGZ1bmN0aW9uIGRyYXcoKSB7CisgICAgLy8gZHJhdyBvbmUgZnJhbWUK
KyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLnZp
ZXdwb3J0KDAsIDAsIDEwMjQsIDc2OCk7CisKKyAgLy8tLS0gQkVHSU46IGNvbW1lbnQgb3V0IHRo
ZSBibG9jayBiZWdpbiBCRUdJTi9FTkQgdG8gbWFrZSB0aGUgZGVtbyBydW4KKyAgICAvLyBjbGVh
ciB0aGUgMyBNU0FBIG9mZnNjcmVlbiBjb2xvciByZW5kZXJidWZmZXJzIGFuZCBkZXB0aC9zdGVu
Y2lsIHJlbmRlcmJ1ZmZlcgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
bXJ0X2ZiKTsKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkNP
TE9SX0FUVEFDSE1FTlQxLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMl0pOworICAgIGdsLnZpZXdwb3J0
KDAsIDAsIDIwMCwgMjAwKTsKKyAgICBnbC5kZXB0aE1hc2sodHJ1ZSk7CisgICAgZ2wuY2xlYXJC
dWZmZXJmdihnbC5DT0xPUiwgMCwgWzAuMjUsMC4wLDAuMCwxLjBdKTsKKyAgICBnbC5jbGVhckJ1
ZmZlcmZ2KGdsLkNPTE9SLCAxLCBbMC4wLDAuMjUsMC4wLDEuMF0pOworICAgIGdsLmNsZWFyQnVm
ZmVyZnYoZ2wuQ09MT1IsIDIsIFswLjAsMC4wLDAuMjUsMS4wXSk7CisgICAgZ2wuY2xlYXJCdWZm
ZXJmaShnbC5ERVBUSF9TVEVOQ0lMLCAwLCAxLjAsIDApOworCisgICAgLy8gdGhlIE1TQUEgcmVz
b2x2ZSBvcGVyYXRpb24KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZF
UiwgbXJ0X2ZiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwg
cmVzX2ZiMCk7CisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7CisgICAg
Z2wuZHJhd0J1ZmZlcnMoW2dsLkNPTE9SX0FUVEFDSE1FTlQwXSk7CisgICAgZ2wuYmxpdEZyYW1l
YnVmZmVyKDAsIDAsIDIwMCwgMjAwLCAwLCAwLCAyMDAsIDIwMCwgZ2wuQ09MT1JfQlVGRkVSX0JJ
VCwgZ2wuTkVBUkVTVCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZG
RVIsIHJlc19mYjEpOworICAgIGdsLnJlYWRCdWZmZXIoZ2wuQ09MT1JfQVRUQUNITUVOVDEpOwor
ICAgIGdsLmRyYXdCdWZmZXJzKFtnbC5DT0xPUl9BVFRBQ0hNRU5UMF0pOworICAgIGdsLmJsaXRG
cmFtZWJ1ZmZlcigwLCAwLCAyMDAsIDIwMCwgMCwgMCwgMjAwLCAyMDAsIGdsLkNPTE9SX0JVRkZF
Ul9CSVQsIGdsLk5FQVJFU1QpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1F
QlVGRkVSLCByZXNfZmIyKTsKKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQy
KTsKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDBdKTsKKyAgICBnbC5i
bGl0RnJhbWVidWZmZXIoMCwgMCwgMjAwLCAyMDAsIDAsIDAsIDIwMCwgMjAwLCBnbC5DT0xPUl9C
VUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKy8vLS0tIEVORAorCisgICAgLy8gYmluZCBhbmQgY2xl
YXIgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG51bGwpOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIDEwMjQsIDc2OCk7CisgICAg
Z2wuY2xlYXJDb2xvcigwLjUsIDAuNSwgMC41LCAxLjApOworICAgIGdsLmNsZWFyRGVwdGgoMS4w
KTsKKyAgICBnbC5jbGVhclN0ZW5jaWwoMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVHxnbC5TVEVOQ0lMX0JVRkZFUl9CSVR8Z2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICBp
ZiAoKytmcmFtZU51bWJlciA8IDEwKSB7CisgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJh
dyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9CisgIH0KKworICAv
LyBTdGFydCB0aGUgcmVuZGVyaW5nIGxvb3AKKyAgZHJhdygpOworfQorCitkZWJ1ZygiIik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2RyYXctYnVmZmVycy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmlu
Zy9kcmF3LWJ1ZmZlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTJlY2I4ZjQ3ZWIzMWFlNTQ2MjE1MDlk
NTgxZjVjNGExNWQ1MzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9kcmF3LWJ1ZmZl
cnMuaHRtbApAQCAtMCwwICsxLDU5OCBAQAor77u/PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRHJhdyBCdWZmZXJzIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL3dlYmdsLWRyYXctYnVm
ZmVycy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0
Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFk
ZXJFU1NMMyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVj
NCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlckVTU0wxIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordm9pZCBtYWluKCkgewor
ICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
ZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gdmVjNCB1X2NvbG9yc1skKG51bURyYXdpbmdC
dWZmZXJzKV07CisKKy8vIE9ubHkgb25lIG91dCB2YXJpYWJsZSAtIGRvZXMgbm90IG5lZWQgZXhw
bGljaXQgb3V0cHV0IGxheW91dCAoRVNTTCAzIHNlY3Rpb24gNC4zLjguMikKK291dCB2ZWM0IG15
X0ZyYWdEYXRhWyQobnVtRHJhd2luZ0J1ZmZlcnMpXTsKK3ZvaWQgbWFpbigpIHsKKyQoYXNzaWdu
VUNvbG9yc1RvRnJhZ0RhdGEpCit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJEaXNj
YXJkIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSB2ZWM0IHVfY29sb3JzWyQobnVtRHJhd2luZ0J1ZmZl
cnMpXTsKK3VuaWZvcm0gZmxvYXQgdV96ZXJvOworCisvLyBPbmx5IG9uZSBvdXQgdmFyaWFibGUg
LSBkb2VzIG5vdCBuZWVkIGV4cGxpY2l0IG91dHB1dCBsYXlvdXQgKEVTU0wgMyBzZWN0aW9uIDQu
My44LjIpCitvdXQgdmVjNCBteV9GcmFnRGF0YVskKG51bURyYXdpbmdCdWZmZXJzKV07Cit2b2lk
IG1haW4oKSB7CiskKGFzc2lnblVDb2xvcnNUb0ZyYWdEYXRhKQorICAgIGlmICh1X3plcm8gPCAx
LjApIHsKKyAgICAgICAgZGlzY2FyZDsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImZzaGFkZXJSZWQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3ZvaWQg
bWFpbigpIHsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyQmx1ZUVTU0wxIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2b2lkIG1haW4oKSB7CisgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAxLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0i
ZnNoYWRlckJ1aWx0SW5Db25zdEVuYWJsZWQiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2
ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK291dCB2ZWM0IG15X0Zy
YWdDb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAgICBteV9GcmFnQ29sb3IgPSAoZ2xfTWF4RHJhd0J1
ZmZlcnMgPT0gJChudW1EcmF3aW5nQnVmZmVycykpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQo
MSwgMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIE11bHRpcGxl
IFJlbmRlciBUYXJnZXRzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2YXIgZHJhd0J1
ZmZlcnNVdGlsczsKK2xldCBmYjsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBj
b250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBj
b250ZXh0IGV4aXN0cyIpOworICBkcmF3QnVmZmVyc1V0aWxzID0gV2ViR0xEcmF3QnVmZmVyc1V0
aWxzKGdsKTsKKworICBpZiAodGVzdFBhcmFtZXRlcnMoKSkgeworICAgIHJ1blNoYWRlcnNUZXN0
KCk7CisgICAgcnVuQXR0YWNobWVudFRlc3QoKTsKKyAgICBydW5EcmF3VGVzdHMoKTsKKyAgfQor
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJl
IG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBjcmVhdGVEcmF3QnVmZmVyc1Byb2dyYW0oc2Ny
aXB0SWQsIHN1YikgeworICB2YXIgZnNvdXJjZSA9IHd0dS5nZXRTY3JpcHQoc2NyaXB0SWQpOwor
ICBmc291cmNlID0gd3R1LnJlcGxhY2VQYXJhbXMoZnNvdXJjZSwgc3ViKTsKKyAgcmV0dXJuIHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlckVTU0wzIiwgZnNvdXJjZV0sIFsiYV9wb3NpdGlv
biJdLCB1bmRlZmluZWQsIHRydWUpOworfQorCitmdW5jdGlvbiBydW5TaGFkZXJzVGVzdCgpIHsK
KyAgZGVidWcoIiIpOworICBkZWJ1ZygidGVzdCBzaGFkZXJzIik7CisKKyAgdmFyIHN1YiA9IHtu
dW1EcmF3aW5nQnVmZmVyczogZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9EUkFXX0JVRkZFUlMpfTsK
KyAgdmFyIHByb2dyYW0gPSBjcmVhdGVEcmF3QnVmZmVyc1Byb2dyYW0oImZzaGFkZXJCdWlsdElu
Q29uc3RFbmFibGVkIiwgc3ViKTsKKyAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAs
IDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUg
bm8gZXJyb3JzIik7Cit9CisKK2Z1bmN0aW9uIG1ha2VBcnJheShzaXplLCB2YWx1ZSkgeworICB2
YXIgYXJyYXkgPSBbXQorICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc2l6ZTsgKytpaSkgeworICAg
IGFycmF5LnB1c2godmFsdWUpOworICB9CisgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24g
cnVuQXR0YWNobWVudFRlc3QoKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoInRlc3QgYXR0YWNo
bWVudCBlbmFibGVkIik7CisKKyAgdmFyIG1heERyYXdpbmdCdWZmZXJzID0gZ2wuZ2V0UGFyYW1l
dGVyKGdsLk1BWF9EUkFXX0JVRkZFUlMpOworICB2YXIgbWF4Q29sb3JBdHRhY2htZW50cyA9IGds
LmdldFBhcmFtZXRlcihnbC5NQVhfQ09MT1JfQVRUQUNITUVOVFMpOworCisgIHZhciB0ZXggPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYik7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIG1heENvbG9yQXR0YWNobWVudHMsIGdsLlRFWFRV
UkVfMkQsIHRleCwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5V
TSwgInNob3VsZCBub3QgYmUgYWJsZSB0byBhdHRhY2ggcGFzcyB0aGUgbWF4IGF0dGFjaG1lbnQg
cG9pbnQ6IGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgIiArIG1heENvbG9yQXR0YWNobWVudHMpOwor
ICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAgKyBtYXhDb2xvckF0dGFjaG1lbnRzIC0gMSwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0
byBhdHRhY2ggdG8gdGhlIG1heCBhdHRhY2htZW50IHBvaW50OiBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCArICIgKyAobWF4Q29sb3JBdHRhY2htZW50cyAtIDEpKTsKKyAgZ2wuZHJhd0J1ZmZlcnMobWFr
ZUFycmF5KG1heERyYXdpbmdCdWZmZXJzLCBnbC5OT05FKSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8gY2FsbCBkcmF3QnVmZmVycyB3
aXRoIGFycmF5IE5PTkUgb2Ygc2l6ZSAiICsgbWF4Q29sb3JBdHRhY2htZW50cyk7CisgIHZhciBi
dWZzID0gZHJhd0J1ZmZlcnNVdGlscy5tYWtlQ29sb3JBdHRhY2htZW50QXJyYXkobWF4RHJhd2lu
Z0J1ZmZlcnMpOworICBnbC5kcmF3QnVmZmVycyhidWZzKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBjYWxsIGRyYXdCdWZmZXJzIHdp
dGggYXJyYXkgYXR0YWNobWVudHMgb2Ygc2l6ZSAiICsgbWF4Q29sb3JBdHRhY2htZW50cyk7Cisg
IGJ1ZnNbMF0gPSBnbC5OT05FOworICBnbC5kcmF3QnVmZmVycyhidWZzKTsKKyAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgYWJsZSB0byBjYWxsIGRyYXdC
dWZmZXJzIHdpdGggbWl4ZWQgYXJyYXkgYXR0YWNobWVudHMgb2Ygc2l6ZSAiICsgbWF4Q29sb3JB
dHRhY2htZW50cyk7CisgIGlmIChtYXhEcmF3aW5nQnVmZmVycyA+IDEpIHsKKyAgICBidWZzWzBd
ID0gZ2wuQ09MT1JfQVRUQUNITUVOVDE7CisgICAgYnVmc1sxXSA9IGdsLkNPTE9SX0FUVEFDSE1F
TlQwOworICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAic2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNhbGwgZHJh
d0J1ZmZlcnMgd2l0aCBvdXQgb2Ygb3JkZXIgYXR0YWNobWVudHMgb2Ygc2l6ZSAiICsgbWF4Q29s
b3JBdHRhY2htZW50cyk7CisgICAgdmFyIGJ1ZnMgPSBkcmF3QnVmZmVyc1V0aWxzLm1ha2VDb2xv
ckF0dGFjaG1lbnRBcnJheShNYXRoLmZsb29yKG1heERyYXdpbmdCdWZmZXJzIC8gMikpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIGFibGUgdG8g
Y2FsbCBkcmF3QnVmZmVycyB3aXRoIHNob3J0IGFycmF5IG9mIGF0dGFjaG1lbnRzIG9mIHNpemUg
IiArIGJ1ZnMubGVuZ3RoKTsKKyAgfQorCisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKworICBkZWJ1ZygiVGVzdGluZyBk
cmF3QnVmZmVycyBhbmQgZ2V0UGFyYW1ldGVyIHdpdGggYmluZEZyYW1lYnVmZmVyLCB3aXRob3V0
IGRyYXdpbmcuIik7CisgIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuRFJBV19CVUZGRVIwKSIsICJnbC5DT0xPUl9BVFRBQ0hNRU5UMCIpOworICBzaG91bGRC
ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkRSQVdfQlVGRkVSMCsxKSIsICJnbC5OT05FIik7CisgIHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuZHJhd0J1ZmZlcnMo
W2dsLk5PTkVdKSIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkRSQVdfQlVGRkVSMCkiLCAiZ2wuQkFD
SyIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgc2hvdWxk
QmUoImdsLmdldFBhcmFtZXRlcihnbC5EUkFXX0JVRkZFUjApIiwgImdsLk5PTkUiKTsKKworICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRyYXdCdWZmZXJz
KFtnbC5OT05FLGdsLkNPTE9SX0FUVEFDSE1FTlQwKzFdKSIpOworICBzaG91bGRCZSgiZ2wuZ2V0
UGFyYW1ldGVyKGdsLkRSQVdfQlVGRkVSMCkiLCAiZ2wuTk9ORSIpOworICBzaG91bGRCZSgiZ2wu
Z2V0UGFyYW1ldGVyKGdsLkRSQVdfQlVGRkVSMCsxKSIsICJnbC5DT0xPUl9BVFRBQ0hNRU5UMCsx
Iik7CisKKyAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5k
cmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsZ2wuQ09MT1JfQVRUQUNITUVOVDArMV0p
Iik7CisgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuRFJBV19CVUZGRVIwKSIsICJnbC5D
T0xPUl9BVFRBQ0hNRU5UMCIpOworICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkRSQVdf
QlVGRkVSMCsxKSIsICJnbC5DT0xPUl9BVFRBQ0hNRU5UMCsxIik7CisKKyAgd3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYiki
KTsKKyAgc2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5EUkFXX0JVRkZFUjApIiwgImdsLkJB
Q0siKTsKK30KKworZnVuY3Rpb24gbWFrZUNvbG9yQnlJbmRleChpbmRleCkgeworICB2YXIgbG93
ID0gKGluZGV4IC0gMSkgJSAxNSArIDE7CisgIHZhciBoaWdoID0gKGluZGV4IC0gMSkgLyAxNTsK
KworICB2YXIgemVyb09yT25lID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiB2ID8gMSA6IDA7
CisgIH07CisKKyAgdmFyIG9uZU9yVHdvID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiB2ID8g
MiA6IDE7CisgIH0KKworICB2YXIgbWFrZUNvbXBvbmVudCA9IGZ1bmN0aW9uKGIwLCBiMSwgYjIp
IHsKKyAgICByZXR1cm4gTWF0aC5mbG9vcigyNTUgKiB6ZXJvT3JPbmUoYjApIC8gb25lT3JUd28o
YjEpIC8gb25lT3JUd28oYjIpKTsKKyAgfTsKKyAgcmV0dXJuIFsKKyAgICBtYWtlQ29tcG9uZW50
KGxvdyAmICgxIDw8IDApLCBoaWdoICYgKDEgPDwgMCksIGhpZ2ggJiAoMSA8PCA0KSksCisgICAg
bWFrZUNvbXBvbmVudChsb3cgJiAoMSA8PCAxKSwgaGlnaCAmICgxIDw8IDEpLCBoaWdoICYgKDEg
PDwgNSkpLAorICAgIG1ha2VDb21wb25lbnQobG93ICYgKDEgPDwgMiksIGhpZ2ggJiAoMSA8PCAy
KSwgaGlnaCAmICgxIDw8IDYpKSwKKyAgICBtYWtlQ29tcG9uZW50KGxvdyAmICgxIDw8IDMpLCBo
aWdoICYgKDEgPDwgMyksIGhpZ2ggJiAoMSA8PCA3KSksCisgIF07Cit9CisKK2Z1bmN0aW9uIHJ1
bkRyYXdUZXN0cygpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiLS0tLS0tLS0tIGRyYXcgdGVz
dHMgLS0tLS0tLS0tLS0iKTsKKyAgdmFyIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
dmFyIGZiMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIHZhciBoYWxmRkIxID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIGhhbGZGQjIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICB2YXIgZW5kc0ZCID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgdmFyIG1pZGRsZUZC
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKworICB2YXIgbWF4RHJhd2luZ0J1ZmZlcnMgPSBn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0RSQVdfQlVGRkVSUyk7CisgIHZhciBtYXhVc2FibGUgPSBk
cmF3QnVmZmVyc1V0aWxzLmdldE1heFVzYWJsZUNvbG9yQXR0YWNobWVudHMoKTsKKyAgdmFyIGhh
bGYgPSBNYXRoLmZsb29yKG1heFVzYWJsZSAvIDIpOworICB2YXIgYnVmcyA9IGRyYXdCdWZmZXJz
VXRpbHMubWFrZUNvbG9yQXR0YWNobWVudEFycmF5KG1heFVzYWJsZSk7CisgIHZhciBub25lcyA9
IG1ha2VBcnJheShtYXhVc2FibGUsIGdsLk5PTkUpOworCisgIFtmYiwgZmIyLCBoYWxmRkIxLCBo
YWxmRkIyLCBlbmRzRkIsIG1pZGRsZUZCXS5mb3JFYWNoKGZ1bmN0aW9uKGZibykgeworICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5kcmF3QnVmZmVy
cyhidWZzKTsKKyAgfSk7CisKKyAgdmFyIGNoZWNrUHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVk
UXVhZChnbCk7CisgIHZhciByZWRQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hh
ZGVyRVNTTDMiLCAiZnNoYWRlclJlZCJdLCBbImFfcG9zaXRpb24iXSk7CisgIHZhciBibHVlUHJv
Z3JhbUVTU0wxID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyRVNTTDEiLCAiZnNoYWRl
ckJsdWVFU1NMMSJdLCBbImFfcG9zaXRpb24iXSk7CisKKyAgdmFyIGFzc2lnbkNvZGUgPSBbXTsK
KyAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhEcmF3aW5nQnVmZmVyczsgKytpKSB7CisgICAgYXNz
aWduQ29kZS5wdXNoKCIgICAgbXlfRnJhZ0RhdGFbIiArIGkgKyAiXSA9IHVfY29sb3JzWyIgKyBp
ICsgIl07Iik7CisgIH0KKworICB2YXIgZHJhd1Byb2dyYW0gPSBjcmVhdGVEcmF3QnVmZmVyc1By
b2dyYW0oImZzaGFkZXIiLAorICAgICAge251bURyYXdpbmdCdWZmZXJzOiBtYXhEcmF3aW5nQnVm
ZmVycywgYXNzaWduVUNvbG9yc1RvRnJhZ0RhdGE6IGFzc2lnbkNvZGUuam9pbigiXG4iKX0pOwor
ICB2YXIgd2lkdGggPSA2NDsKKyAgdmFyIGhlaWdodCA9IDY0OworICB2YXIgYXR0YWNobWVudHMg
PSBbXTsKKyAgLy8gTWFrZXMgNiBmcmFtZWJ1ZmZlcnMuCisgIC8vIGZiIGFuZCBmYjIgaGF2ZSBh
bGwgdGhlIGF0dGFjaG1lbnRzLgorICAvLyBoYWxmRkIxIGhhcyB0aGUgZmlyc3QgaGFsZiBvZiB0
aGUgYXR0YWNobWVudHMKKyAgLy8gaGFsZkZCMiBoYXMgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBh
dHRhY2htZW50cworICAvLyBlbmRzRkIgaGFzIHRoZSBmaXJzdCBhbmQgbGFzdCBhdHRhY2htZW50
cworICAvLyBtaWRkbGVGQiBoYXMgYWxsIGJ1dCB0aGUgZmlyc3QgYW5kIGxhc3QgYXR0YWNobWVu
dHMKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG1heFVzYWJsZTsgKytpaSkgeworICAgIHZhciB0
ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHdp
ZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURH
RSk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
ICsgaWksIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYjIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIGlpLCBnbC5URVhUVVJFXzJELCB0ZXgsIDAp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgaWkgPCBoYWxmID8gaGFs
ZkZCMSA6IGhhbGZGQjIpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIGlpLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgKGlpID09IDAgfHwgaWkgPT0g
KG1heFVzYWJsZSAtIDEpKSA/IGVuZHNGQiA6IG1pZGRsZUZCKTsKKyAgICBnbC5mcmFtZWJ1ZmZl
clRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyBpaSwgZ2wu
VEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgICB2YXIgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24oZHJhd1Byb2dyYW0sICJ1X2NvbG9yc1siICsgaWkgKyAiXSIpOworICAgIHZhciBjb2xv
ciA9IG1ha2VDb2xvckJ5SW5kZXgoaWkgKyAxKTsKKyAgICB2YXIgZmxvYXRDb2xvciA9IFtjb2xv
clswXSAvIDI1NSwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LCBjb2xvclszXSAvIDI1
NV07CisgICAgZ2wudW5pZm9ybTRmdihsb2NhdGlvbiwgZmxvYXRDb2xvcik7CisgICAgYXR0YWNo
bWVudHMucHVzaCh7CisgICAgICB0ZXh0dXJlOiB0ZXgsCisgICAgICBjb2xvcjogY29sb3IKKyAg
ICB9KTsKKyAgfQorICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAg
c2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmIyKTsKKyAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisKKyAgdmFyIGRyYXdBbmRD
aGVja0F0dGFjaG1lbnRzID0gZnVuY3Rpb24odGVzdEZCLCBtc2csIHRlc3RGbikgeworICAgIGRl
YnVnKCJ0ZXN0IGNsZWFyaW5nICIgKyBtc2cpOworCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCB0ZXN0RkIpOworCisgICAgYXR0YWNobWVudHMuZm9yRWFjaChmdW5jdGlv
bihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgZGVidWcoImF0dGFjaG1lbnQ6ICIgKyBpbmRl
eCArICIgPSAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBnbC5nZXRQYXJhbWV0ZXIoZ2wuRFJB
V19CVUZGRVIwICsgaW5kZXgpKSArCisgICAgICAgICAgICAiLCAiICsgd3R1LmdsRW51bVRvU3Ry
aW5nKGdsLCBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgaW5kZXgsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX1RZUEUpKSk7CisgICAgfSk7CisKKyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAg
ICAgIGRlYnVnKCJmcmFtZWJ1ZmZlciBub3QgY29tcGxldGUiKTsKKyAgICAgIGRlYnVnKCIiKTsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDbGVhciBhbGwgdGhlIGF0dGFjaG1lbnRz
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYjIpOworICAgIGdsLmNs
ZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgLy9kcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFj
aG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgIC8vICByZXR1cm4gWzAs
IDAsIDAsIDBdOworICAgIC8vfSk7CisgICAgLy9kZWJ1ZygiLS0iKTsKKworICAgIC8vIENsZWFy
IHNvbWUgYXR0YWNobWVudHMgdXNpbmcgdGVzdEZCCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCB0ZXN0RkIpOworCisgICAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsK
KyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3QnVmZmVyc1V0aWxz
LmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2ht
ZW50LCBpbmRleCkgeworICAgICAgcmV0dXJuIHRlc3RGbihhdHRhY2htZW50LCBpbmRleCkgPyBb
MCwgMjU1LCAwLCAyNTVdIDogWzAsIDAsIDAsIDBdOworICAgIH0pOworCisgICAgZGVidWcoInRl
c3QgZHJhd2luZyB0byAiICsgbXNnKTsKKworICAgIC8vIERyYXcgdG8gc29tZSBhdHRhY2htZW50
cyB1c2luZyB0ZXN0RkIKKyAgICBnbC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsKKyAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRlc3RGQik7CisgICAgd3R1LmRyYXdVbml0
UXVhZChnbCk7CisKKyAgICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xv
ckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgcmV0
dXJuIHRlc3RGbihhdHRhY2htZW50LCBpbmRleCkgPyBhdHRhY2htZW50LmNvbG9yIDogWzAsIDAs
IDAsIDBdOworICAgIH0pOworICB9OworCisgIGdsLnVzZVByb2dyYW0oZHJhd1Byb2dyYW0pOwor
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7CisgIGdsLmRyYXdCdWZm
ZXJzKGJ1ZnMpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAg
Z2wuZHJhd0J1ZmZlcnMoYnVmcyk7CisKKyAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisKKyAgZGVi
dWcoInRlc3QgdGhhdCBlYWNoIHRleHR1cmUgZ290IHRoZSBjb3JyZWN0IGNvbG9yLiIpOworCisg
IGRyYXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yKGF0dGFjaG1lbnRzKTsK
KworICBkZWJ1ZygidGVzdCBjbGVhcmluZyBjbGVhcnMgYWxsIHRoZSB0ZXh0dXJlcyIpOworICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZ2wuY2xlYXJDb2xvcigw
LCAxLCAwLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgZHJhd0J1
ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3IoYXR0YWNobWVudHMsIFswLCAyNTUs
IDAsIDI1NV0pOworCisgIGRlYnVnKCJ0ZXN0IHRoYXQgTk9ORSBkcmF3cyBub3RoaW5nIik7Cisg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICBnbC5kcmF3QnVmZmVy
cyhub25lcyk7CisgIGdsLnVzZVByb2dyYW0ocmVkUHJvZ3JhbSk7CisgIHd0dS5jbGVhckFuZERy
YXdVbml0UXVhZChnbCk7CisKKyAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9y
Q29sb3IoYXR0YWNobWVudHMsIFswLCAyNTUsIDAsIDI1NV0pOworCisgIC8vIEdMRVMzIHNwZWMg
c2VjdGlvbiAzLjkuMiBTaGFkZXIgT3V0cHV0cworICBkZWJ1ZygidGVzdCB0aGF0IGdsX0ZyYWdD
b2xvciBvbmx5IHdyaXRlcyB0byBjb2xvciBudW1iZXIgemVybyIpOworICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZ2wuZHJhd0J1ZmZlcnMoYnVmcyk7CisgIGds
LnVzZVByb2dyYW0oYmx1ZVByb2dyYW1FU1NMMSk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgIHd0dS5kcmF3
VW5pdFF1YWQoZ2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgIkFjdGl2ZSBkcmF3IGJ1ZmZlcnMgd2l0aCBtaXNzaW5nIGZyYWcgb3V0cHV0cy4iKTsK
KyAgZ2wuZW5hYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisgIHd0dS5kcmF3VW5pdFF1YWQo
Z2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3Vs
ZCBiZSBubyBlcnJvcnMgd2hlbiBSQVNURVJJWkVSX0RJU0NBUkQgaXMgZW5hYmxlZC4iKTsKKyAg
Z2wuZGlzYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworICBnbC5jb2xvck1hc2soZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3Jz
IHdoZW4gYWxsIDQgY2hhbm5lbHMgb2YgY29sb3IgbWFzayBhcmUgZGlzYWJsZWQuIik7CisgIGds
LmNvbG9yTWFzayhmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgd3R1LmRyYXdVbml0UXVh
ZChnbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
cGFydGlhbGx5IGRpYWJsZWQgY29sb3IgbWFzayBzaGFsbCBoYXZlIG5vIGltcGFjdC4iKTsKKyAg
Z2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCisgIGdsLmRyYXdCdWZmZXJz
KFtnbC5DT0xPUl9BVFRBQ0hNRU5UMF0pOworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworICBk
cmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBm
dW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgIHJldHVybiAoaW5kZXggPT0gMCkgPyBb
MCwgMCwgMjU1LCAyNTVdIDogWzAsIDI1NSwgMCwgMjU1XTsKKyAgfSk7CisKKyAgLy8gSWYgdGhl
cmUgaXMgb25seSBhIHNpbmdsZSBvdXRwdXQsIHRoZSBsb2NhdGlvbiBkZWZhdWx0cyB0byB6ZXJv
IGlmIG5vdCBzcGVjaWZpZWQuCisgIC8vIFNlZSBHTFNMIEVTIFNwZWMgMy4wMC40LCBTZWN0aW9u
IDQuMy44LjIsIE91dHB1dCBMYXlvdXQgUXVhbGlmaWVycy4KKyAgZGVidWcoInRlc3QgdGhhdCBh
biBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAzLjAwIHNoYWRlciB3aXRoIGEgc2luZ2xlIG91
dHB1dCBjb2xvciBkZWZhdWx0cyB0byBjb2xvciBudW1iZXIgemVybyIpOworICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZ2wuZHJhd0J1ZmZlcnMoYnVmcyk7Cisg
IGdsLnVzZVByb2dyYW0ocmVkUHJvZ3JhbSk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgIHd0dS5kcmF3VW5p
dFF1YWQoZ2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgIkFjdGl2ZSBkcmF3IGJ1ZmZlcnMgd2l0aCBtaXNzaW5nIGZyYWcgb3V0cHV0cy4iKTsKKwor
ICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDBdKTsKKyAgd3R1LmRyYXdVbml0
UXVhZChnbCk7CisKKyAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3JG
bihhdHRhY2htZW50cywgZnVuY3Rpb24oYXR0YWNobWVudCwgaW5kZXgpIHsKKyAgICByZXR1cm4g
KGluZGV4ID09IDApID8gWzI1NSwgMCwgMCwgMjU1XSA6IFswLCAyNTUsIDAsIDI1NV07CisgIH0p
OworCisgIGlmIChtYXhVc2FibGUgPiAxKSB7CisgICAgLy8gUHJlcGFyZSBmb3IgZm9sbG93aW5n
IHRlc3RzIGJ5IGNsZWFyaW5nIGFsbCBhdHRhY2htZW50cyB0byByZWQuCisgICAgZGVidWcoInBy
ZXBhcmUgYnkgY2xlYXJpbmcgYWxsIGF0dGFjaG1lbnRzIHRvIHJlZCIpOworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMp
OworICAgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29s
b3IoYXR0YWNobWVudHMsIFsyNTUsIDAsIDAsIDI1NV0pOworCisgICAgdmFyIGJ1ZnMxID0gZHJh
d0J1ZmZlcnNVdGlscy5tYWtlQ29sb3JBdHRhY2htZW50QXJyYXkobWF4VXNhYmxlKTsKKyAgICB2
YXIgYnVmczIgPSBkcmF3QnVmZmVyc1V0aWxzLm1ha2VDb2xvckF0dGFjaG1lbnRBcnJheShtYXhV
c2FibGUpOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBtYXhVc2FibGU7ICsraWkpIHsKKyAg
ICAgIGlmIChpaSA8IGhhbGYpIHsKKyAgICAgICAgYnVmczFbaWldID0gZ2wuTk9ORTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGJ1ZnMyW2lpXSA9IGdsLk5PTkU7CisgICAgICB9CisgICAgfQor
CisgICAgZGVidWcoInRlc3Qgc2V0dGluZyBmaXJzdCBoYWxmIHRvIE5PTkUgYW5kIGNsZWFyaW5n
Iik7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBn
bC5kcmF3QnVmZmVycyhidWZzMSk7CisgICAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGRyYXdCdWZmZXJzVXRpbHMu
Y2hlY2tBdHRhY2htZW50c0ZvckNvbG9yRm4oYXR0YWNobWVudHMsIGZ1bmN0aW9uKGF0dGFjaG1l
bnQsIGluZGV4KSB7CisgICAgICByZXR1cm4gaW5kZXggPCBoYWxmID8gWzI1NSwgMCwgMCwgMjU1
XSA6IFswLCAyNTUsIDAsIDI1NV07CisgICAgfSk7CisKKyAgICBkZWJ1ZygidGVzdCBzZXR0aW5n
IGZpcnN0IGhhbGYgdG8gTk9ORSBhbmQgZHJhd2luZyIpOworCisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wudXNlUHJvZ3JhbShkcmF3UHJvZ3JhbSk7
CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisKKyAgICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNr
QXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBp
bmRleCkgeworICAgICAgcmV0dXJuIGluZGV4IDwgaGFsZiA/IFsyNTUsIDAsIDAsIDI1NV0gOiBh
dHRhY2htZW50LmNvbG9yOworICAgIH0pOworCisgICAgZGVidWcoInRlc3Qgc2V0dGluZyBzZWNv
bmQgaGFsZiB0byBOT05FIGFuZCBjbGVhcmluZyIpOworCisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2wuZHJhd0J1ZmZlcnMoYnVmcyk7CisgICAgZ2wu
Y2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICBnbC5kcmF3QnVmZmVycyhidWZzMik7CisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAx
LCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3QnVmZmVy
c1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0dGFjaG1lbnRzLCBmdW5jdGlvbihh
dHRhY2htZW50LCBpbmRleCkgeworICAgICAgcmV0dXJuIGluZGV4IDwgaGFsZiA/IFswLCAwLCAy
NTUsIDI1NV0gOiBbMjU1LCAwLCAwLCAyNTVdOworICAgIH0pOworCisgICAgZGVidWcoInRlc3Qg
c2V0dGluZyBzZWNvbmQgaGFsZiB0byBOT05FIGFuZCBkcmF3aW5nIik7CisKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgICBnbC51c2VQcm9ncmFtKGRyYXdQ
cm9ncmFtKTsKKyAgICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsKKworICAgIGRyYXdCdWZmZXJzVXRp
bHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yRm4oYXR0YWNobWVudHMsIGZ1bmN0aW9uKGF0dGFj
aG1lbnQsIGluZGV4KSB7CisgICAgICByZXR1cm4gaW5kZXggPCBoYWxmID8gYXR0YWNobWVudC5j
b2xvciA6IFsyNTUsIDAsIDAsIDI1NV07CisgICAgfSk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGhhbGZGQjEpOworICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMpOwor
ICAgIGRyYXdBbmRDaGVja0F0dGFjaG1lbnRzKAorICAgICAgaGFsZkZCMSwgImZyYW1lYnVmZmVy
IHRoYXQgb25seSBoYXMgZmlyc3QgaGFsZiBvZiBhdHRhY2htZW50cyIsCisgICAgICBmdW5jdGlv
bihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgICByZXR1cm4gaW5kZXggPCBoYWxmOworICAg
ICAgfSk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGhhbGZGQjIp
OworICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMpOworICAgIGRyYXdBbmRDaGVja0F0dGFjaG1lbnRz
KAorICAgICAgaGFsZkZCMiwgImZyYW1lYnVmZmVyIHRoYXQgb25seSBoYXMgc2Vjb25kIGhhbGYg
b2YgYXR0YWNobWVudHMiLAorICAgICAgZnVuY3Rpb24oYXR0YWNobWVudCwgaW5kZXgpIHsKKyAg
ICAgICAgcmV0dXJuIGluZGV4ID49IGhhbGY7CisgICAgICB9KTsKKworICAgIGlmIChtYXhVc2Fi
bGUgPiAyKSB7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGVuZHNG
Qik7CisgICAgICBnbC5kcmF3QnVmZmVycyhidWZzKTsKKyAgICAgIGRyYXdBbmRDaGVja0F0dGFj
aG1lbnRzKAorICAgICAgICBlbmRzRkIsICJmcmFtZWJ1ZmZlciB0aGF0IG9ubHkgaGFzIGZpcnN0
IGFuZCBsYXN0IGF0dGFjaG1lbnRzIiwKKyAgICAgICAgZnVuY3Rpb24oYXR0YWNobWVudCwgaW5k
ZXgpIHsKKyAgICAgICAgICByZXR1cm4gaW5kZXggPT0gMCB8fCBpbmRleCA9PSAobWF4VXNhYmxl
IC0gMSk7CisgICAgICAgIH0pOworCisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG1pZGRsZUZCKTsKKyAgICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMpOworICAgICAgZHJh
d0FuZENoZWNrQXR0YWNobWVudHMoCisgICAgICAgIG1pZGRsZUZCLAorICAgICAgICAiZnJhbWVi
dWZmZXIgdGhhdCBoYXMgYWxsIGJ1dCB0aGUgZmlyc3QgYW5kIGxhc3QgYXR0YWNobWVudHMiLAor
ICAgICAgICBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgICAgIHJldHVybiBp
bmRleCAhPSAwICYmIGluZGV4ICE9IChtYXhVc2FibGUgLSAxKTsKKyAgICAgICAgfSk7CisgICAg
fQorICB9CisKKyAgZGVidWcoInRlc3Qgc3dpdGNoaW5nIGJldHdlZW4gZmJvcyBrZWVwcyBkcmF3
YnVmZmVyIHN0YXRlIik7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIy
KTsKKyAgZ2wuZHJhd0J1ZmZlcnMobm9uZXMpOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmIpOworICBnbC5kcmF3QnVmZmVycyhidWZzKTsKKyAgZ2wuY2xlYXJDb2xv
cigxLCAwLCAwLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgIGRyYXdC
dWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yKGF0dGFjaG1lbnRzLCBbMjU1LCAw
LCAwLCAyNTVdKTsKKworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7
CisgIGdsLnVzZVByb2dyYW0oZHJhd1Byb2dyYW0pOworICB3dHUuZHJhd1VuaXRRdWFkKGdsKTsK
KyAgZHJhd0J1ZmZlcnNVdGlscy5jaGVja0F0dGFjaG1lbnRzRm9yQ29sb3IoYXR0YWNobWVudHMs
IFsyNTUsIDAsIDAsIDI1NV0pOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgZmIpOworICBnbC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsKKyAgd3R1LmRyYXdVbml0UXVh
ZChnbCk7CisgIGRyYXdCdWZmZXJzVXRpbHMuY2hlY2tBdHRhY2htZW50c0ZvckNvbG9yKGF0dGFj
aG1lbnRzKTsKKworICBkZWJ1ZygidGVzdCB0aGF0IG5vbmUgb2YgdGhlIGF0dGFjaG1lbnRzIGFy
ZSB3cml0dGVuIGluIGNhc2UgdGhlIGZyYWdtZW50IHNoYWRlciBkaXNjYXJkcyIpOworICB2YXIg
ZGlzY2FyZFByb2dyYW0gPSBjcmVhdGVEcmF3QnVmZmVyc1Byb2dyYW0oImZzaGFkZXJEaXNjYXJk
IiwKKyAgICAgIHtudW1EcmF3aW5nQnVmZmVyczogbWF4RHJhd2luZ0J1ZmZlcnMsIGFzc2lnblVD
b2xvcnNUb0ZyYWdEYXRhOiBhc3NpZ25Db2RlLmpvaW4oIlxuIil9KTsKKyAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisgIGdsLmRyYXdCdWZmZXJzKGJ1ZnMpOworICBn
bC5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
KTsKKyAgZ2wudXNlUHJvZ3JhbShkaXNjYXJkUHJvZ3JhbSk7CisgIHd0dS5kcmF3VW5pdFF1YWQo
Z2wpOworICBkcmF3QnVmZmVyc1V0aWxzLmNoZWNrQXR0YWNobWVudHNGb3JDb2xvcihhdHRhY2ht
ZW50cywgWzAsIDAsIDAsIDBdKTsKKworICBkZWJ1ZygidGVzdCBxdWVyaWVzIik7CisgIGRlYnVn
KCJjaGVjayBmcmFtZWJ1ZmZlciB3aXRoIGFsbCBhdHRhY2htZW50cyBvbiIpOworICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IG1heFVzYWJsZTsgKytpaSkgeworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuRFJB
V19CVUZGRVIwICsgIiArIGlpICsgIikiLCAiZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAiICsgaWkp
OworICB9CisKKyAgZGVidWcoImNoZWNrIGZyYW1lYnVmZmVyIHdpdGggYWxsIGF0dGFjaG1lbnRz
IG9mZiIpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiMik7CisgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCBtYXhVc2FibGU7ICsraWkpIHsKKyAgICBzaG91bGRCZSgiZ2wu
Z2V0UGFyYW1ldGVyKGdsLkRSQVdfQlVGRkVSMCArICIgKyBpaSArICIpIiwgImdsLk5PTkUiKTsK
KyAgfQorCisgIC8vIFdlYkdMIGdlbmVyYXRlcyBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVO
U0lPTlMgd2hlbiBhdHRhY2hlZCBpbWFnZXMgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMuCisgIC8vIFRo
aXMgYmVoYXZpb3IgZGlmZmVycyBmcm9tIEdMRVMgMy4KKyAgZGVidWcoIiIpOworICBkZWJ1Zygi
dGVzdCBhdHRhY2htZW50IHNpemUgbWlzLW1hdGNoIik7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIGF0dGFjaG1lbnRzWzBdLnRleHR1cmUpOworICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIHdpZHRoICogMiwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYik7CisgIHNob3VsZEJlVHJ1ZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIik7CisgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIyKTsKKyAgc2hvdWxkQmVUcnVlKCJn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0RJTUVOU0lPTlMiKTsKKworICAvLyBUT0RPOiBSZW5kZXJpbmcgd2hlbiBm
cmFtZWJ1ZmZlciBhdHRhY2htZW50cyBoYXZlIG1pc21hdGNoZWQgc2l6ZSBzaG91bGQgYmUgdGVz
dGVkLCBtYXliZSBpbiBhIHNlcGFyYXRlIHRlc3QuCisKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIo
ZmIpOworICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYjIpOworICBnbC5kZWxldGVGcmFtZWJ1ZmZl
cihoYWxmRkIxKTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoaGFsZkZCMik7CisgIGF0dGFjaG1l
bnRzLmZvckVhY2goZnVuY3Rpb24oYXR0YWNobWVudCkgeworICAgIGdsLmRlbGV0ZVRleHR1cmUo
YXR0YWNobWVudC50ZXh0dXJlKTsKKyAgfSk7CisgIGdsLmRlbGV0ZVByb2dyYW0oY2hlY2tQcm9n
cmFtKTsKKyAgZ2wuZGVsZXRlUHJvZ3JhbShyZWRQcm9ncmFtKTsKKyAgZ2wuZGVsZXRlUHJvZ3Jh
bShkcmF3UHJvZ3JhbSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXJhbWV0ZXJzKCkgeworICBkZWJ1
ZygiIik7CisgIGRlYnVnKCJjaGVjayB0aGF0IE1BWF9EUkFXX0JVRkZFUlMgYW5kIE1BWF9DT0xP
Ul9BVFRBQ0hNRU5UUyBhcmUgdmFsaWQiKTsKKyAgdmFyIG1heERyYXdCdWZmZXJzID0gZ2wuZ2V0
UGFyYW1ldGVyKGdsLk1BWF9EUkFXX0JVRkZFUlMpOworICB2YXIgbWF4Q29sb3JBdHRhY2htZW50
cyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ09MT1JfQVRUQUNITUVOVFMpOworICBkZWJ1Zygi
TUFYX0RSQVdfQlVGRkVSUyA9ICIgKyBtYXhEcmF3QnVmZmVycyk7CisgIGRlYnVnKCJNQVhfQ09M
T1JfQVRUQUNITUVOVFMgPSAiICsgbWF4Q29sb3JBdHRhY2htZW50cyk7CisgIGlmIChtYXhEcmF3
QnVmZmVycyAhPSBtYXhDb2xvckF0dGFjaG1lbnRzKSB7CisgICAgdGVzdEZhaWxlZCgiTUFYX0RS
QVdfQlVGRkVSUyBhbmQgTUFYX0NPTE9SX0FUVEFDSE1FTlRTIHNob3VsZCBiZSB0aGUgc2FtZSIp
OworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAobWF4RHJhd0J1ZmZlcnMgPCA0KSB7Cisg
ICAgdGVzdEZhaWxlZCgiTUFYX0RSQVdfQlVGRkVSUyBzaG91bGQgYmUgYXQgbGVhc3QgNCIpOwor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworZGVidWcoIiIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcmVuZGVyaW5nL2RyYXctd2l0aC1pbnRlZ2VyLXRleHR1cmUtYmFzZS1sZXZl
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlbmRlcmluZy9kcmF3LXdpdGgtaW50ZWdlci10ZXh0dXJlLWJhc2UtbGV2ZWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMmY5ZmQxM2MyODlmNWFmNWY4OWUyNzRiMGQ2NGQzZGI2YjA2ZWZk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9kcmF3LXdpdGgtaW50ZWdlci10ZXh0dXJl
LWJhc2UtbGV2ZWwuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBEcmF3IFdpdGggSW50ZWdlciBU
ZXh0dXJlIEJhc2UgTGV2ZWwgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgY2FudmFzOwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIDIpOwor
dmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisKKy8vIEJvdGggQ2hyb21lIGFuZCBGaXJlZm94IGZh
aWwgb24gdGhpcyB0ZXN0IG9uIE5WSURJQSBXaW5kb3dzLCBzZWUgY3JidWcuY29tLzY3OTYzOS4K
K2Z1bmN0aW9uIHRlc3REcmF3SW50ZWdlclRleHR1cmVCYXNlTGV2ZWwoKQoreworICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgcmVuZGVyaW5n
IHdpdGggaW50ZWdlciB0ZXh0dXJlIG5vbi16ZXJvIGJhc2UgbGV2ZWwuIik7CisKKyAgICB2YXIg
Z3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworCisgICAgdmFyIHdpZHRoID0gMTY7CisgICAgdmFy
IGhlaWdodCA9IDE2OworICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5oZWln
aHQgPSBoZWlnaHQ7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAg
ICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB2YXIgbGV2ZWwgPSAxOwor
ICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNU
KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX0JBU0VfTEVWRUwsIGxldmVsKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRl
eHR1cmUsIHdpZHRoLCBoZWlnaHQsIGdyZWVuLCBsZXZlbCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5V
TlNJR05FRF9CWVRFLCBnbC5SR0JBOFVJKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZChn
bCwgIlJHQkE4VUkiKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHd0dS5jaGVja0Nh
bnZhcyhnbCwgZ3JlZW4pOworfQorCit0ZXN0RHJhd0ludGVnZXJUZXh0dXJlQmFzZUxldmVsKCk7
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9lbGVtZW50LWluZGV4LXVpbnQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5k
ZXJpbmcvZWxlbWVudC1pbmRleC11aW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIzMjU0ZjRjZDhhZmMz
N2I1YjhkYzMwMWY4MjA1NzVhYWQwMzhiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcv
ZWxlbWVudC1pbmRleC11aW50Lmh0bWwKQEAgLTAsMCArMSw0MzIgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFVpbnQgZWxlbWVu
dCBpbmRpY2VzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJ2cyIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworYXR0cmli
dXRlIHZlYzQgdkNvbG9yOwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICAg
IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworICAgIGNvbG9yID0gdkNvbG9yOworfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IGlkPSJmcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpIHsKKyAg
Z2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzQ2hlY2tP
dXRPZkJvdW5kcyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAgIHByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworICAgIGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOworICAgIGF0dHJpYnV0ZSB2
ZWM0IHZlY1JhbmRvbTsKKyAgICB2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKKworICAgIC8vIFBlciB0
aGUgc3BlYywgZWFjaCBjb21wb25lbnQgY2FuIGVpdGhlciBjb250YWluIGV4aXN0aW5nIGNvbnRl
bnRzCisgICAgLy8gb2YgdGhlIGJ1ZmZlciBvciAwLgorICAgIGJvb2wgdGVzdEZsb2F0Q29tcG9u
ZW50KGZsb2F0IGNvbXBvbmVudCkgeworICAgICAgICByZXR1cm4gKGNvbXBvbmVudCA9PSAwLjIg
fHwgY29tcG9uZW50ID09IDAuMCk7CisgICAgfQorICAgIC8vIFRoZSBsYXN0IGNvbXBvbmVudCBp
cyBhZGRpdGlvbmFsbHkgYWxsb3dlZCB0byBiZSAxLjAuCisgICAgYm9vbCB0ZXN0TGFzdEZsb2F0
Q29tcG9uZW50KGZsb2F0IGNvbXBvbmVudCkgeworICAgICAgICByZXR1cm4gdGVzdEZsb2F0Q29t
cG9uZW50KGNvbXBvbmVudCkgfHwgY29tcG9uZW50ID09IDEuMDsKKyAgICB9CisKKyAgICB2b2lk
IG1haW4oKSB7CisgICAgICAgIGlmICh0ZXN0RmxvYXRDb21wb25lbnQodmVjUmFuZG9tLngpICYm
CisgICAgICAgICAgICB0ZXN0RmxvYXRDb21wb25lbnQodmVjUmFuZG9tLnkpICYmCisgICAgICAg
ICAgICB0ZXN0RmxvYXRDb21wb25lbnQodmVjUmFuZG9tLnopICYmCisgICAgICAgICAgICB0ZXN0
TGFzdEZsb2F0Q29tcG9uZW50KHZlY1JhbmRvbS53KSkgeworICAgICAgICAgICAgdl9jb2xvciA9
IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsgLy8gZ3JlZW4gLS0gT3V0IG9mIHJhbmdlCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2X2NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApOyAvLyByZWQgLS0gVW5leHBlY3RlZCB2YWx1ZQorICAgICAgICB9CisgICAgICAgIGdsX1Bv
c2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorCis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFVpbnQgZWxlbWVudCBpbmRp
Y2VzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IG51bGw7Cit2YXIgY2FudmFzID0gbnVsbDsKKworLy8gVGVzdCBib3RoIFNUQVRJQ19EUkFX
IGFuZCBEWU5BTUlDX0RSQVcgYXMgYSByZWdyZXNzaW9uIHRlc3QKKy8vIGZvciBhIGJ1ZyBpbiBB
TkdMRSB3aGljaCBoYXMgc2luY2UgYmVlbiBmaXhlZC4KK2ZvciAodmFyIGlpID0gMDsgaWkgPCAy
OyArK2lpKSB7CisgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgY2FudmFzLndpZHRoID0gNTA7CisgICAgY2FudmFzLmhlaWdodCA9IDUwOworCisgICAg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7CisKKyAgICBpZiAoIWds
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIp
OworCisgICAgICAgIHZhciBkcmF3VHlwZSA9IChpaSA9PSAwKSA/IGdsLlNUQVRJQ19EUkFXIDog
Z2wuRFlOQU1JQ19EUkFXOworICAgICAgICBkZWJ1ZygiVGVzdGluZyAiICsgKChpaSA9PSAwKSA/
ICJTVEFUSUNfRFJBVyIgOiAiRFlOQU1JQ19EUkFXIikpOworCisgICAgICAgIHJ1bkRyYXdUZXN0
cyhkcmF3VHlwZSk7CisKKyAgICAgICAgLy8gVGhlc2UgdGVzdHMgYXJlIHR3ZWFrZWQgZHVwbGlj
YXRlcyBvZiB0aGUgYnVmZmVycy9pbmRleC12YWxpZGF0aW9uKiB0ZXN0cworICAgICAgICAvLyB1
c2luZyB1bnNpZ25lZCBpbnQgaW5kaWNlcyB0byBlbnN1cmUgdGhhdCBiZWhhdmlvciByZW1haW5z
IGNvbnNpc3RlbnQKKyAgICAgICAgcnVuSW5kZXhWYWxpZGF0aW9uVGVzdHMoZHJhd1R5cGUpOwor
ICAgICAgICBydW5JbmRleE91dE9mUmFuZ2VUZXN0cyhkcmF3VHlwZSk7CisgICAgICAgIHJ1blJl
c2l6ZWRCdWZmZXJUZXN0cyhkcmF3VHlwZSk7CisgICAgICAgIHJ1bkNyYXNoV2l0aEJ1ZmZlclN1
YkRhdGFUZXN0cyhkcmF3VHlwZSk7CisKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgfQorfQorCitm
dW5jdGlvbiBydW5EcmF3VGVzdHMoZHJhd1R5cGUpIHsKKyAgICBkZWJ1ZygiVGVzdCB0aGF0IGRy
YXdzIHdpdGggdW5zaWduZWQgaW50ZWdlciBpbmRpY2VzIHByb2R1Y2UgdGhlIGV4cGVjdGVkIHJl
c3VsdHMiKTsKKworICAgIGNhbnZhcy53aWR0aCA9IDUwOyBjYW52YXMuaGVpZ2h0ID0gNTA7Cisg
ICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAg
IHZhciBwcm9ncmFtID0gd3R1LnNldHVwTm9UZXhDb29yZFRleHR1cmVQcm9ncmFtKGdsKTsKKwor
ICAgIGZ1bmN0aW9uIHNldHVwRHJhdyhzKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIHZlcnRleCBi
dWZmZXIgdGhhdCBjYW5ub3QgYmUgZnVsbHkgaW5kZXhlZCB2aWEgc2hvcnRzCisgICAgICAgIHZh
ciBxdWFkQXJyYXlMZW4gPSA2NTUzNyAqIDM7CisgICAgICAgIHZhciBxdWFkQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KHF1YWRBcnJheUxlbik7CisKKyAgICAgICAgLy8gTGVhdmUgYWxsIGJ1dCB0
aGUgbGFzdCA0IHZhbHVlcyB6ZXJvLWVkIG91dAorICAgICAgICB2YXIgaWR4ID0gcXVhZEFycmF5
TGVuIC0gMTI7CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZWQgdGhlIGxhc3QgNCB2YWx1ZXMgdG8g
YSBxdWFkCisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAxLjAgKiBzOworICAgICAgICBxdWFk
QXJyYXlbaWR4KytdID0gMS4wICogczsKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IDAuMDsK
KworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0gLTEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJh
eVtpZHgrK10gPSAxLjAgKiBzOworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0gMC4wOworCisg
ICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAtMS4wICogczsKKyAgICAgICAgcXVhZEFycmF5W2lk
eCsrXSA9IC0xLjAgKiBzOworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0gMC4wOworCisgICAg
ICAgIHF1YWRBcnJheVtpZHgrK10gPSAxLjAgKiBzOworICAgICAgICBxdWFkQXJyYXlbaWR4Kytd
ID0gLTEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAwLjA7CisKKyAgICAgICAg
dmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIHF1YWRBcnJheSwgZHJhd1R5cGUpOworCisgICAgICAgIC8vIENy
ZWF0ZSBhbiB1bnNpZ25lZCBpbnQgaW5kZXggYnVmZmVyIHRoYXQgaW5kZXhlcyB0aGUgbGFzdCA0
IHZlcnRpY2VzCisgICAgICAgIHZhciBiYXNlSW5kZXggPSAocXVhZEFycmF5TGVuIC8gMykgLSA0
OworCisgICAgICAgIHZhciBpbmRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleE9iamVjdCk7Cisg
ICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MzJB
cnJheShbCisgICAgICAgICAgICBiYXNlSW5kZXggKyAwLAorICAgICAgICAgICAgYmFzZUluZGV4
ICsgMSwKKyAgICAgICAgICAgIGJhc2VJbmRleCArIDIsCisgICAgICAgICAgICBiYXNlSW5kZXgg
KyAyLAorICAgICAgICAgICAgYmFzZUluZGV4ICsgMywKKyAgICAgICAgICAgIGJhc2VJbmRleCAr
IDBdKSwgZHJhd1R5cGUpOworCisgICAgICAgIHZhciBvcHRfcG9zaXRpb25Mb2NhdGlvbiA9IDA7
CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG9wdF9wb3NpdGlvbkxvY2F0aW9u
KTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihvcHRfcG9zaXRpb25Mb2NhdGlvbiwg
MywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICB9OworICAgIGZ1bmN0aW9uIHJlYWRMb2Nh
dGlvbih4LCB5KSB7CisgICAgICAgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJheSgxICogMSAq
IDQpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKHgsIHksIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIHBpeGVscyk7CisgICAgICAgIHJldHVybiBwaXhlbHM7CisgICAgfTsKKyAgICBm
dW5jdGlvbiB0ZXN0UGl4ZWwoYmxvY2tMaXN0LCBhbGxvd0xpc3QpIHsKKyAgICAgICAgZnVuY3Rp
b24gdGVzdExpc3QobGlzdCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG4gPSAw
OyBuIDwgbGlzdC5sZW5ndGg7IG4rKykgeworICAgICAgICAgICAgICAgIHZhciBsID0gbGlzdFtu
XTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IC1NYXRoLmZsb29yKGwgKiBjYW52YXMud2lkdGgg
LyAyKSArIGNhbnZhcy53aWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSAtTWF0aC5m
bG9vcihsICogY2FudmFzLmhlaWdodCAvIDIpICsgY2FudmFzLmhlaWdodCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHNvdXJjZSA9IHJlYWRMb2NhdGlvbih4LCB5KTsKKyAgICAgICAgICAgICAg
ICBpZiAoTWF0aC5hYnMoc291cmNlWzBdIC0gZXhwZWN0ZWQpID4gMikgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRlc3RM
aXN0KGJsb2NrTGlzdCwgMCkgJiYgdGVzdExpc3QoYWxsb3dMaXN0LCAyNTUpOworICAgIH07Cisg
ICAgZnVuY3Rpb24gdmVyaWZ5RHJhdyhkcmF3TnVtYmVyLCBzKSB7CisgICAgICAgIGdsLmNsZWFy
Q29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3RWxlbWVudHMo
Z2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9JTlQsIDApOworCisgICAgICAgIHZhciBibG9j
a0xpc3QgPSBbXTsKKyAgICAgICAgdmFyIGFsbG93TGlzdCA9IFtdOworICAgICAgICB2YXIgcG9p
bnRzID0gWzAuMCwgMC4yLCAwLjQsIDAuNiwgMC44LCAxLjBdOworICAgICAgICBmb3IgKHZhciBu
ID0gMDsgbiA8IHBvaW50cy5sZW5ndGg7IG4rKykgeworICAgICAgICAgICAgaWYgKHBvaW50c1tu
XSA8PSBzKSB7CisgICAgICAgICAgICAgICAgYmxvY2tMaXN0LnB1c2gocG9pbnRzW25dKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYWxsb3dMaXN0LnB1c2gocG9pbnRz
W25dKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodGVzdFBpeGVsKGJs
b2NrTGlzdCwgYWxsb3dMaXN0KSkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiRHJhdyAiICsg
ZHJhd051bWJlciArICIgcGFzc2VkIHBpeGVsIHRlc3QiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkRyYXcgIiArIGRyYXdOdW1iZXIgKyAiIGZhaWxlZCBwaXhl
bCB0ZXN0Iik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc2V0dXBEcmF3KDAuNSk7CisgICAg
dmVyaWZ5RHJhdygwLCAwLjUpOworfQorCitmdW5jdGlvbiBydW5JbmRleFZhbGlkYXRpb25UZXN0
cyhkcmF3VHlwZSkgeworICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGluZGV4IHZhbGlkYXRp
b24gdmVyaWZpZXMgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGluZGljZXMiKTsKKworICAgIGZ1bmN0
aW9uIHNpemVJbkJ5dGVzKHR5cGUpIHsKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgY2Fz
ZSBnbC5CWVRFOgorICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOgorICAgICAgICByZXR1cm4g
MTsKKyAgICAgIGNhc2UgZ2wuU0hPUlQ6CisgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUOgor
ICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgZ2wuSU5UOgorICAgICAgY2FzZSBnbC5VTlNJ
R05FRF9JTlQ6CisgICAgICBjYXNlIGdsLkZMT0FUOgorICAgICAgICByZXR1cm4gNDsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIHRocm93ICJ1bmtub3duIHR5cGUiOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRTdGFuZGFyZFByb2dyYW0oZ2wpOworCisgICAg
Ly8gMyB2ZXJ0aWNlcyA9PiAxIHRyaWFuZ2xlLCBpbnRlcmxlYXZlZCBkYXRhCisgICAgdmFyIGRh
dGFDb21wbGV0ZSA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDAsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsIDEsIDEsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDAsIDFdKTsKKyAgICB2YXIgZGF0YUluY29tcGxldGUgPSBuZXcgRmxvYXQz
MkFycmF5KFswLCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs
IDEsIDEsIDFdKTsKKyAgICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheShbMCwgMSwgMl0p
OworCisgICAgZGVidWcoIlRlc3Rpbmcgd2l0aCB2YWxpZCBpbmRpY2VzIik7CisKKyAgICB2YXIg
YnVmZmVyQ29tcGxldGUgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgYnVmZmVyQ29tcGxldGUpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBkYXRhQ29tcGxldGUsIGRyYXdUeXBlKTsKKyAgICB2YXIgZWxlbWVudHMgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBlbGVtZW50cyk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgaW5kaWNlcywgZHJhd1R5cGUpOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAg
dmFyIHZlcnRleExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3ZlcnRleCIp
OworICAgIHZhciBub3JtYWxMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9u
b3JtYWwiKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleExvYywgNCwgZ2wuRkxP
QVQsIGZhbHNlLCA3ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpLCAwKTsKKyAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
bm9ybWFsTG9jLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCks
IDQgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG5vcm1hbExvYyk7CisgICAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdn
bC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9JTlQsIDApJyk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgICAgdmFyIGJ1ZmZl
ckluY29tcGxldGUgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgYnVmZmVySW5jb21wbGV0ZSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIGRhdGFJbmNvbXBsZXRlLCBkcmF3VHlwZSk7CisgICAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcih2ZXJ0ZXhMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgNyAqIHNpemVJbkJ5dGVzKGds
LkZMT0FUKSwgMCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4TG9jKTsK
KyAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobm9ybWFsTG9jKTsKKyAgICBkZWJ1Zygi
RW5hYmxlIHZlcnRpY2VzLCB2YWxpZCIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgnZ2wuZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5ULCAwKScpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICAgIGRlYnVnKCJUZXN0IHdpdGggZW5hYmxlZCBhdHRy
aWJ1dGUgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdG8gY3VycmVudCBwcm9ncmFtIik7CisKKyAgICBn
bC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobm9ybWFsTG9jKTsKKyAgICB2YXIgZXh0cmFMb2Mg
PSBNYXRoLm1heCh2ZXJ0ZXhMb2MsIG5vcm1hbExvYykgKyAxOworICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGV4dHJhTG9jKTsKKyAgICBkZWJ1ZygiRW5hYmxlIGFuIGV4dHJhIGF0dHJp
YnV0ZSB3aXRoIG51bGwiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
Uik7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMs
IDMsIGdsLlVOU0lHTkVEX0lOVCwgMCknKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTik7CisgICAgZGVidWcoIkVuYWJsZSBhbiBleHRyYSBhdHRyaWJ1
dGUgd2l0aCBpbnN1ZmZpY2llbnQgZGF0YSBidWZmZXIiKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKGV4dHJhTG9jLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhnbC5G
TE9BVCksIDQgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgnZ2wuZHJhd0VsZW1l
bnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5ULCAwKScpOworICAgIGRlYnVnKCJQ
YXNzIGxhcmdlIG5lZ2F0aXZlIGluZGV4IHRvIHZlcnRleEF0dHJpYlBvaW50ZXIiKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG5vcm1hbExvYywgMywgZ2wuRkxPQVQsIGZhbHNlLCA3ICog
c2l6ZUluQnl0ZXMoZ2wuRkxPQVQpLCAtMjAwMDAwMDAwMCAqIHNpemVJbkJ5dGVzKGdsLkZMT0FU
KSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAg
c2hvdWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVO
U0lHTkVEX0lOVCwgMCknKTsKK30KKworZnVuY3Rpb24gcnVuSW5kZXhPdXRPZlJhbmdlVGVzdHMo
ZHJhd1R5cGUpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyB3aXRoIG91dC1vZi1yYW5nZSBpbmRpY2Vz
Iik7CisKKyAgICB2YXIgYnVmZmVyUG9zID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlclBvcyk7CisgICAgZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAxLjAsICAxLjAsCisg
ICAgICAgIC0xLjAsICAxLjAsCisgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgIDEuMCwgLTEu
MF0pLCBkcmF3VHlwZSk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisg
ICAgdmFyIGJ1ZmZlckluY29tcGxldGUgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVySW5jb21wbGV0ZSk7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzAuMiwgMC4yLCAwLjIsIDAu
MiwgMC4yLCAwLjIsIDAuMiwgMC4yLCAwLjIsIDAuMiwgMC4yLCAwLjJdKSwgZHJhd1R5cGUpOwor
ICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMSwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHZhciBnbFByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzQ2hlY2tPdXRPZkJvdW5kcyIsIHd0dS5zaW1wbGVW
ZXJ0ZXhDb2xvckZyYWdtZW50U2hhZGVyXSwgWyJwb3NpdGlvbiIsICJ2ZWNSYW5kb20iXSk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaGFkZXIgYW5kIGJ1ZmZl
ciBzZXR1cCBzdWNjZXNzZnVsbHkiKTsKKworICAgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQzMkFy
cmF5KFswLCAxLCAyLCAwLCAyLCAzXSk7CisgICAgdmFyIGVsZW1lbnRzID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVu
dHMpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMs
IGRyYXdUeXBlKTsKKworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsgIC8v
IFN0YXJ0IHdpdGggYmx1ZSB0byBpbmRpY2F0ZSBubyBwaXhlbHMgdG91Y2hlZC4KKyAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKworCisg
ICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfSU5ULCAwKTsK
KyAgICB2YXIgZXJyb3IgPSBnbC5nZXRFcnJvcigpOworICAgIGlmIChlcnJvciA9PT0gZ2wuSU5W
QUxJRF9PUEVSQVRJT04pIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZHJhd0VsZW1lbnRzIGZsYWdn
ZWQgSU5WQUxJRF9PUEVSQVRJT04sIHdoaWNoIGlzIHZhbGlkIHNvIGxvbmcgYXMgYWxsIGNhbnZh
cyBwaXhlbHMgd2VyZSBub3QgdG91Y2hlZC4iKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGds
LCBbMCwgMCwgMjU1LCAyNTVdKTsKKyAgICB9IGVsc2UgaWYgKGVycm9yID09PSBnbC5OT19FUlJP
UikgeworICAgICAgICB0ZXN0UGFzc2VkKCJkcmF3RWxlbWVudHMgZmxhZ2dlZCBOT19FUlJPUiwg
d2hpY2ggaXMgdmFsaWQgc28gbG9uZyBhcyBhbGwgY2FudmFzIHBpeGVscyBhcmUgZ3JlZW4uIik7
CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiSW52YWxpZCBlcnJvciBmbGFnZ2VkIGJ5IGRyYXdF
bGVtZW50cy4gU2hvdWxkIGJlIElOVkFMSURfT1BFUkFUSU9OIG9yIE5PX0VSUk9SIik7CisgICAg
fQorCisgICAgZGVidWcoIlRlc3QgdGhhdCBjbGllbnQgZGF0YSBpcyBhbHdheXMgY29waWVkIGR1
cmluZyBidWZmZXJEYXRhIGFuZCBidWZmZXJTdWJEYXRhIGNhbGxzIik7CisKKyAgICBpbmRpY2Vz
WzVdID0gMTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05F
RF9JTlQsIDApOworICAgIHZhciBlcnJvciA9IGdsLmdldEVycm9yKCk7CisgICAgaWYgKGVycm9y
ID09PSBnbC5JTlZBTElEX09QRVJBVElPTikgeworICAgICAgICB0ZXN0UGFzc2VkKCJkcmF3RWxl
bWVudHMgZmxhZ2dlZCBJTlZBTElEX09QRVJBVElPTiwgd2hpY2ggaXMgdmFsaWQgc28gbG9uZyBh
cyBhbGwgY2FudmFzIHBpeGVscyB3ZXJlIG5vdCB0b3VjaGVkLiIpOworICAgICAgICB3dHUuY2hl
Y2tDYW52YXMoZ2wsIFswLCAwLCAyNTUsIDI1NV0pOworICAgIH0gZWxzZSBpZiAoZXJyb3IgPT09
IGdsLk5PX0VSUk9SKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImRyYXdFbGVtZW50cyBmbGFnZ2Vk
IE5PX0VSUk9SLCB3aGljaCBpcyB2YWxpZCBzbyBsb25nIGFzIGFsbCBjYW52YXMgcGl4ZWxzIGFy
ZSBncmVlbi4iKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVd
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIGVycm9yIGZsYWdn
ZWQgYnkgZHJhd0VsZW1lbnRzLiBTaG91bGQgYmUgSU5WQUxJRF9PUEVSQVRJT04gb3IgTk9fRVJS
T1IiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blJlc2l6ZWRCdWZmZXJUZXN0cyhkcmF3VHlw
ZSkgeworICAgIGRlYnVnKCJUZXN0IHRoYXQgdXBkYXRpbmcgdGhlIHNpemUgb2YgYSB2ZXJ0ZXgg
YnVmZmVyIGlzIHByb3Blcmx5IG5vdGljZWQgYnkgdGhlIFdlYkdMIGltcGxlbWVudGF0aW9uLiIp
OworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0s
IFsidlBvc2l0aW9uIiwgInZDb2xvciJdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImFmdGVyIGluaXRpYWxpemF0aW9uIik7CisKKyAgICB2YXIgdmVydGV4T2Jq
ZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIHZlcnRleE9iamVjdCk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoCisgICAgICAgIFstMSwxLDAsIDEsMSwwLCAtMSwtMSwwLAorICAgICAg
ICAgLTEsLTEsMCwgMSwxLDAsIDEsLTEsMF0pLCBkcmF3VHlwZSk7CisgICAgZ2wuZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiYWZ0ZXIgdmVydGV4IHNldHVwIik7CisKKyAgICB2YXIgdGV4Q29vcmRPYmplY3QgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGV4
Q29vcmRPYmplY3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxv
YXQzMkFycmF5KAorICAgICAgICBbMCwwLCAxLDAsIDAsMSwKKyAgICAgICAgIDAsMSwgMSwwLCAx
LDFdKSwgZHJhd1R5cGUpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAg
IGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIHRleHR1cmUgY29v
cmQgc2V0dXAiKTsKKworICAgIC8vIE5vdyByZXNpemUgdGhlc2UgYnVmZmVycyBiZWNhdXNlIHdl
IHdhbnQgdG8gY2hhbmdlIHdoYXQgd2UncmUgZHJhd2luZy4KKyAgICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIC0xLDEsMCwgMSwxLDAsIC0xLC0x
LDAsIDEsLTEsMCwKKyAgICAgICAgLTEsMSwwLCAxLDEsMCwgLTEsLTEsMCwgMSwtMSwwXSksIGRy
YXdUeXBlKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVy
IHZlcnRleCByZWRlZmluaXRpb24iKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgdGV4Q29vcmRPYmplY3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBu
ZXcgVWludDhBcnJheShbCisgICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAs
IDAsIDI1NSwKKyAgICAgICAgMjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1
LAorICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisgICAg
ICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAwLCAyNTUsIDAsIDI1NV0pLCBkcmF3VHlwZSk7
CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCBmYWxz
ZSwgMCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRl
ciB0ZXh0dXJlIGNvb3JkaW5hdGUgLyBjb2xvciByZWRlZmluaXRpb24iKTsKKworICAgIHZhciBu
dW1RdWFkcyA9IDI7CisgICAgdmFyIGluZGljZXMgPSBuZXcgVWludDMyQXJyYXkobnVtUXVhZHMg
KiA2KTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbnVtUXVhZHM7ICsraWkpIHsKKyAgICAg
ICAgdmFyIG9mZnNldCA9IGlpICogNjsKKyAgICAgICAgdmFyIHF1YWQgPSAoaWkgPT0gKG51bVF1
YWRzIC0gMSkpID8gNCA6IDA7CisgICAgICAgIGluZGljZXNbb2Zmc2V0ICsgMF0gPSBxdWFkICsg
MDsKKyAgICAgICAgaW5kaWNlc1tvZmZzZXQgKyAxXSA9IHF1YWQgKyAxOworICAgICAgICBpbmRp
Y2VzW29mZnNldCArIDJdID0gcXVhZCArIDI7CisgICAgICAgIGluZGljZXNbb2Zmc2V0ICsgM10g
PSBxdWFkICsgMjsKKyAgICAgICAgaW5kaWNlc1tvZmZzZXQgKyA0XSA9IHF1YWQgKyAxOworICAg
ICAgICBpbmRpY2VzW29mZnNldCArIDVdID0gcXVhZCArIDM7CisgICAgfQorICAgIHZhciBpbmRl
eE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBkcmF3VHlwZSk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBzZXR0aW5nIHVwIGluZGljZXMiKTsKKyAgICBn
bC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCBudW1RdWFkcyAqIDYsIGdsLlVOU0lHTkVEX0lO
VCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBk
cmF3aW5nIik7Cit9CisKK2Z1bmN0aW9uIHJ1bkNyYXNoV2l0aEJ1ZmZlclN1YkRhdGFUZXN0cyhk
cmF3VHlwZSkgeworICAgIGRlYnVnKCdWZXJpZmllcyB0aGF0IHRoZSBpbmRleCB2YWxpZGF0aW9u
IGNvZGUgd2hpY2ggaXMgd2l0aGluIGJ1ZmZlclN1YkRhdGEgZG9lcyBub3QgY3Jhc2guJykKKwor
ICAgIHZhciBlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7CisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMjU2LCBkcmF3VHlwZSk7CisgICAgdmFy
IGRhdGEgPSBuZXcgVWludDMyQXJyYXkoMTI3KTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCA2NCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgImFmdGVyIGF0dGVtcHRpbmcgdG8gdXBkYXRlIGEgYnVmZmVy
IG91dHNpZGUgb2YgdGhlIGFsbG9jYXRlZCBib3VuZHMiKTsKKyAgICB0ZXN0UGFzc2VkKCJidWZm
ZXJTdWJEYXRhLCB3aGVuIGJ1ZmZlciBvYmplY3Qgd2FzIGluaXRpYWxpemVkIHdpdGggbnVsbCwg
ZGlkIG5vdCBjcmFzaCIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcv
ZnJhbWVidWZmZXItY29tcGxldGVuZXNzLWRyYXctZnJhbWVidWZmZXIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJp
bmcvZnJhbWVidWZmZXItY29tcGxldGVuZXNzLWRyYXctZnJhbWVidWZmZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYzA3MDllMGI4YTBjNTM1OTYzMjM2NmZjMDFiM2FiMGFkY2I1N2E0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1jb21wbGV0ZW5lc3MtZHJhdy1mcmFtZWJ1
ZmZlci5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgZHJhdyBmcmFtZWJ1ZmZlciBjb21wbGV0ZW5l
c3Mgd2hlbiBhbiBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyIGlzIGJvdW5kIHRvIHJlYWQgZnJhbWVi
dWZmZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKy8vIFRoaXMgZXhwb3NlcyBh
IGJ1ZyBpbiBDaHJvbWUgNjc6IElmIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGUs
IHRoZW4gZHJhdyBjYW4gZmFpbCBldmVuIGlmIHRoZSBkcmF3IGZyYW1lYnVmZmVyIGlzIGNvbXBs
ZXRlLgorLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8yNzM3CisKKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCk7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpOworaWYgKCFnbCkgeworICB0ZXN0
RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2Vk
KCJjb250ZXh0IGV4aXN0cyIpOworCisgIHZhciBpbmNvbXBsZXRlRmIgPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGluY29tcGxl
dGVGYik7CisgIHZhciBpbmNvbXBsZXRlVGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBpbmNvbXBsZXRlVGV4KTsKKyAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCBpbmNvbXBsZXRlVGV4LCAwKTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRU
QUNITUVOVCcpOworCisgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICB2YXIgdGVz
dFByb2dyYW0gPSB3dHUuc2V0dXBTaW1wbGVDb2xvclByb2dyYW0oZ2wsIDApOworCisgIC8vIElm
IHRoaXMgaXMgY2hhbmdlZCB0byBnbC5GUkFNRUJVRkZFUiwgdGhlIHJlbmRlcmluZyBzdWNjZWVk
cyBvbiBDaHJvbWUgNjcuCisgIHZhciBkcmF3RmJUYXJnZXQgPSBnbC5EUkFXX0ZSQU1FQlVGRkVS
OworCisgIHZhciBjb21wbGV0ZUZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGRyYXdGYlRhcmdldCwgY29tcGxldGVGYik7CisgIHZhciBjb21wbGV0ZVRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
Y29tcGxldGVUZXgpOworICBnbC50ZXhTdG9yYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZ2wuUkdC
QTgsIDEyOCwgMTI4KTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZHJhd0ZiVGFyZ2V0LCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgY29tcGxldGVUZXgsIDApOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvciBh
ZnRlciBzZXR1cCIpOworCisgIHNob3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LlJFQURfRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VCcpOworICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5EUkFXX0ZSQU1F
QlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01QTEVURScpOworCisgIGdsLnZpZXdwb3J0KDAs
IDAsIDEyOCwgMTI4KTsKKyAgZ2wudW5pZm9ybTRmKGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0ZXN0
UHJvZ3JhbSwgJ3VfY29sb3InKSwgMCwgMSwgMCwgMSk7CisgIHd0dS5kcmF3VW5pdFF1YWQoZ2wp
OworCisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5v
IGVycm9yIGFmdGVyIGRyYXciKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVC
VUZGRVIsIGNvbXBsZXRlRmIpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxMjgs
IDEyOCwgWzAsIDI1NSwgMCwgMjU1XSwgJ3Nob3VsZCBiZSBncmVlbicsIDIpOworfQorCitkZWJ1
ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1jb21wbGV0ZW5lc3Mt
dW5hZmZlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1jb21wbGV0ZW5lc3MtdW5h
ZmZlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YjYxMDY0MTlkZmQ4MjhmMzlhOGU0MjY4OTVkNzVh
NDRjMWFiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLWNvbXBs
ZXRlbmVzcy11bmFmZmVjdGVkLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdCBkcmF3QnVmZmVycywg
cmVhZEJ1ZmZlciwgYW5kIGZibyBjb21wbGV0ZW5lc3M8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+CisvLyBJbiBNYWNPU1gsIGlmIGRyYXdCdWZmZXJzKCkgYW5kIHJlYWRCdWZmZXIoKSBi
b3RoIHNlbGVjdCBhbiBhdHRhY2htZW50IHdpdGggbm8gaW1hZ2UgYXR0YWNoZWQsCisvLyBmYm8g
YmVjb21lcyBpbmNvbXBsZXRlLiBIb3dldmVyLCBkcmF3QnVmZmVycygpIGFuZCByZWFkQnVmZmVy
KCkgc2hvdWxkIG5vdCBhZmZlY3QgZmJvIGNvbXBsZXRlbmVzcy4KKworInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZHJhd0J1ZmZlcnMsIHJlYWRCdWZmZXIsIGFuZCBmYm8g
Y29tcGxldGVuZXNzIik7CisKK3ZhciBzZXR1cFJlbmRlcmJ1ZmZlciA9IGZ1bmN0aW9uKGF0dGFj
aG1lbnQpIHsKKyAgdmFyIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwor
ICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGds
LlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICByZXR1cm4gcmVuZGVyYnVmZmVyOworfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVuZGVmaW5lZCwgMik7CitpZiAoIWdsKSB7Cisg
IHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgIHRlc3RQ
YXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgdmFyIGZiID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7CisKKyAgZGVi
dWcoImZibyB3aXRoIHR3byBjb2xvciBpbWFnZXMgYXR0YWNoZWQgc2hvdWxkIGJlIGNvbXBsZXRl
Iik7CisgIHZhciBjb2xvcmJ1ZmZlciA9IHNldHVwUmVuZGVyYnVmZmVyKGdsLkNPTE9SX0FUVEFD
SE1FTlQwKTsKKyAgdmFyIGNvbG9yYnVmZmVyMSA9IHNldHVwUmVuZGVyYnVmZmVyKGdsLkNPTE9S
X0FUVEFDSE1FTlQxKTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisKKyAgZGVidWcoImRy
YXdCdWZmZXJzIHNlbGVjdHMgQVRUQUNITUVOVDEsIGZibyBzaG91bGQgYmUgY29tcGxldGUiKTsK
KyAgZ2wuZHJhd0J1ZmZlcnMoW2dsLk5PTkUsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7CisgIHNo
b3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5G
UkFNRUJVRkZFUl9DT01QTEVURScpOworCisgIGRlYnVnKCJyZW1vdmUgaW1hZ2UgYXR0YWNoZWQg
dG8gQVRUQUNITUVOVDEsIGZibyBzaG91bGQgYmUgY29tcGxldGUiKTsKKyAgZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQxLCBnbC5S
RU5ERVJCVUZGRVIsIG51bGwpOworICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsKKworICBkZWJ1
Zygic2V0IHJlYWQgYnVmZmVyIHRvIEFUVEFDSE1FTlQxLCBmYm8gc2hvdWxkIGJlIGNvbXBsZXRl
Iik7CisgIGdsLnJlYWRCdWZmZXIoZ2wuQ09MT1JfQVRUQUNITUVOVDEpOworICBzaG91bGRCZSgn
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUnKTsKKworICBkZWJ1ZygiZHJhd0J1ZmZlcnMgc2VsZWN0cyBBVFRBQ0hNRU5U
MCwgZmJvIHNob3VsZCBiZSBjb21wbGV0ZSIpOworICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1Jf
QVRUQUNITUVOVDBdKTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisKKyAgZGVidWcoImRy
YXdCdWZmZXJzIHNlbGVjdHMgQVRUQUNITUVOVDEsIGZibyBzaG91bGQgYmUgY29tcGxldGUiKTsK
KyAgZ2wuZHJhd0J1ZmZlcnMoW2dsLk5PTkUsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7CisgIHNo
b3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5G
UkFNRUJVRkZFUl9DT01QTEVURScpOworCisgIGRlYnVnKCJzZXQgcmVhZCBidWZmZXIgdG8gQVRU
QUNITUVOVDAsIGZibyBzaG91bGQgYmUgY29tcGxldGUiKTsKKyAgZ2wucmVhZEJ1ZmZlcihnbC5D
T0xPUl9BVFRBQ0hNRU5UMCk7CisgIHNob3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01QTEVURScpOworCisgIGdsLmRl
bGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yYnVmZmVy
KTsKKyAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yYnVmZmVyMSk7CisKKyAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3IgYWZ0ZXIgc2V0
dXAgYW5kIGNsZWFyIHJlbmRlciBidWZmZXIiKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9yZW5kZXJpbmcvZnJhbWVidWZmZXItbWlzbWF0Y2hlZC1hdHRhY2htZW50LXRhcmdldHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi9yZW5kZXJpbmcvZnJhbWVidWZmZXItbWlzbWF0Y2hlZC1hdHRhY2htZW50LXRhcmdl
dHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOGEyOGQ2NDQ0Mzg0ZmJiMDBkZDNiNDdhZGZkMWRlMmVkYjQ3
Y2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1taXNtYXRjaGVk
LWF0dGFjaG1lbnQtdGFyZ2V0cy5odG1sCkBAIC0wLDAgKzEsMTYyIEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMjAgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgY2FuIHJlbmRl
ciB0byBmcmFtZWJ1ZmZlciBhdHRhY2htZW50cyB3aXRoIGRpZmZlcmVudCB0YXJnZXRzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9u
IDMwMCBlcwordm9pZCBtYWluKHZvaWQpIHsKKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KC0wLjUsIC0w
LjUsIDAsIDEpOworICBnbF9Qb2ludFNpemUgPSAxLjA7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBvdXRDb2xvcjsKK3ZvaWQgbWFpbigp
IHsKKyAgb3V0Q29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxIiwgaGVpZ2h0PSIxIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2RlYnVnKCIiKTsKKworZGVzY3JpcHRpb24o
IlRlc3QgZnJhbWVidWZmZXIgYXR0YWNobWVudHMgd2l0aCBkaWZmZXJlbnQgdGFyZ2V0cyIpOwor
Citjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2NvbnN0IGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFp
bGVkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZCIpOworfSBlbHNlIHsKKyAgICB0ZXN0
UGFzc2VkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIHN1Y2NlZWRlZCIpOworICAgIHJ1blRlc3Qo
KTsKK30KKworZnVuY3Rpb24gbmV3UmVzb3VyY2UodGFyZ2V0LCBtaXBMZXZlbHMsIGZvcm1hdCwg
c2l6ZSkgeworICBsZXQgcmV0OworICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgZ2wuUkVO
REVSQlVGRkVSOiB7CisgICAgICByZXQgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAg
IHJldC5taXBzID0gWyByZXQgXTsKKyAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWlwTGV2ZWxz
OyBpKyspIHsKKyAgICAgICAgcmV0Lm1pcHMucHVzaChnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSk7
CisgICAgICB9CisgICAgICBmb3IgKGNvbnN0IGkgaW4gcmV0Lm1pcHMpIHsKKyAgICAgICAgY29u
c3QgcmIgPSByZXQubWlwc1tpXTsKKyAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IHJiKTsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGZvcm1hdCwgc2l6
ZT4+aSwgc2l6ZT4+aSk7CisgICAgICB9CisgICAgICByZXQuYXR0YWNoID0gKGF0dGFjaEVudW0s
IG1pcExldmVsKSA9PiB7CisgICAgICAgIGNvbnN0IHJiID0gcmV0Lm1pcHNbbWlwTGV2ZWxdOwor
ICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNo
RW51bSwgZ2wuUkVOREVSQlVGRkVSLCByYik7CisgICAgICB9OworICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVA6
IHsKKyAgICAgIHJldCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgIGdsLmJpbmRUZXh0dXJl
KHRhcmdldCwgcmV0KTsKKyAgICAgIGdsLnRleFN0b3JhZ2UyRCh0YXJnZXQsIG1pcExldmVscywg
Zm9ybWF0LCBzaXplLCBzaXplKTsKKyAgICAgIGxldCBpbWFnZVRhcmdldCA9IHRhcmdldDsKKyAg
ICAgIGlmIChpbWFnZVRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgIGlt
YWdlVGFyZ2V0ID0gZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YKzI7IC8vIERlbGliZXJh
dGVseSBkb24ndCBjaG9vc2UgdGhlIGZpcnN0IGltYWdlLgorICAgICAgfQorICAgICAgcmV0LmF0
dGFjaCA9IChhdHRhY2hFbnVtLCBtaXBMZXZlbCkgPT4geworICAgICAgICBnbC5mcmFtZWJ1ZmZl
clRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgYXR0YWNoRW51bSwgaW1hZ2VUYXJnZXQsIHJldCwg
bWlwTGV2ZWwpOworICAgICAgfTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGdsLlRF
WFRVUkVfM0Q6CisgICAgY2FzZSBnbC5URVhUVVJFXzJEX0FSUkFZOiB7CisgICAgICByZXQgPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICBnbC5iaW5kVGV4dHVyZSh0YXJnZXQsIHJldCk7Cisg
ICAgICBnbC50ZXhTdG9yYWdlM0QodGFyZ2V0LCBtaXBMZXZlbHMsIGZvcm1hdCwgc2l6ZSwgc2l6
ZSwgMSk7CisgICAgICByZXQuYXR0YWNoID0gKGF0dGFjaEVudW0sIG1pcExldmVsKSA9PiB7Cisg
ICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2hF
bnVtLCByZXQsIG1pcExldmVsLCAwKTsKKyAgICAgIH07CisgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgIHRocm93IG5ldyBFcnJvcigpOworICB9CisgIHJldC50YXJnZXQg
PSB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHRhcmdldCk7CisgIHJldC5mb3JtYXQgPSB3dHUuZ2xF
bnVtVG9TdHJpbmcoZ2wsIGZvcm1hdCk7CisgIHJldHVybiByZXQ7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIGNvbnN0IE1JUF9MRVZFTFMgPSAyOworICBjb25zdCBTSVpFID0gMjsKKwor
ICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworCisgIGNvbnN0IHByb2dyYW0gPSB3dHUuc2V0
dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCdmc2hhZGVyJ10sIFtdLCBjb25zb2xlLmxvZy5iaW5k
KGNvbnNvbGUpKTsKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICBjb25zdCBjb2xvclJl
c0xpc3QgPSBbCisgICAgbmV3UmVzb3VyY2UoZ2wuUkVOREVSQlVGRkVSLCBNSVBfTEVWRUxTLCBn
bC5SR0JBOCwgU0laRSksCisgICAgbmV3UmVzb3VyY2UoZ2wuVEVYVFVSRV8yRCwgTUlQX0xFVkVM
UywgZ2wuUkdCQTgsIFNJWkUpLAorICAgIG5ld1Jlc291cmNlKGdsLlRFWFRVUkVfQ1VCRV9NQVAs
IE1JUF9MRVZFTFMsIGdsLlJHQkE4LCBTSVpFKSwKKyAgICBuZXdSZXNvdXJjZShnbC5URVhUVVJF
XzNELCBNSVBfTEVWRUxTLCBnbC5SR0JBOCwgU0laRSksCisgICAgbmV3UmVzb3VyY2UoZ2wuVEVY
VFVSRV8yRF9BUlJBWSwgTUlQX0xFVkVMUywgZ2wuUkdCQTgsIFNJWkUpLAorICBdOworCisgIGNv
bnN0IGRlcHRoUmVzTGlzdCA9IFsKKyAgICBuZXdSZXNvdXJjZShnbC5SRU5ERVJCVUZGRVIsIE1J
UF9MRVZFTFMsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCBTSVpFKSwKKyAgICBuZXdSZXNvdXJjZShn
bC5URVhUVVJFXzJELCBNSVBfTEVWRUxTLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgU0laRSksCisg
ICAgbmV3UmVzb3VyY2UoZ2wuVEVYVFVSRV9DVUJFX01BUCwgTUlQX0xFVkVMUywgZ2wuREVQVEhf
Q09NUE9ORU5UMTYsIFNJWkUpLAorICAgIC8vbmV3UmVzb3VyY2UoZ2wuVEVYVFVSRV8zRCwgTUlQ
X0xFVkVMUywgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIFNJWkUpLCAvLyBEZXB0aCBmb3JtYXRzIGZv
cmJpZGRlbiBmb3IgVEVYVFVSRV8zRC4KKyAgICBuZXdSZXNvdXJjZShnbC5URVhUVVJFXzJEX0FS
UkFZLCBNSVBfTEVWRUxTLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgU0laRSksCisgIF07CisKKyAg
Y29uc3QgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZiKTsKKyAgZm9yIChjb25zdCBjb2xvciBvZiBjb2xvclJlc0xpc3Qp
IHsKKyAgICBmb3IgKGNvbnN0IGRlcHRoIG9mIGRlcHRoUmVzTGlzdCkgeworICAgICAgZGVidWco
YFxuY29sb3I6ICR7Y29sb3IudGFyZ2V0fTsgZGVwdGg6ICR7ZGVwdGgudGFyZ2V0fWApOworICAg
ICAgZm9yIChsZXQgbWlwTGV2ZWwgPSAwOyBtaXBMZXZlbCA8IE1JUF9MRVZFTFM7IG1pcExldmVs
KyspIHsKKyAgICAgICAgZGVidWcoYG1pcExldmVsOiAke21pcExldmVsfWApOworICAgICAgICBj
b2xvci5hdHRhY2goZ2wuQ09MT1JfQVRUQUNITUVOVDAsIG1pcExldmVsKTsKKyAgICAgICAgZGVw
dGguYXR0YWNoKGdsLkRFUFRIX0FUVEFDSE1FTlQsIG1pcExldmVsKTsKKyAgICAgICAgY29uc3Qg
bWF5YmVTdGF0dXMgPSB3dHUuZnJhbWVidWZmZXJTdGF0dXNTaG91bGRCZShnbCwgZ2wuRlJBTUVC
VUZGRVIsIFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2wuRlJBTUVCVUZGRVJfVU5TVVBQT1JU
RURdKTsKKyAgICAgICAgaWYgKCFtYXliZVN0YXR1cyB8fCBtYXliZVN0YXR1c1swXSAhPSBnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIHd0dS5jaGVj
a0NhbnZhcyhnbCwgWzI1NSwgMCwgMCwgMjU1XSwgYGZyYW1lYnVmZmVyIGxheWVyICR7bWlwTGV2
ZWx9IHNob3VsZCBiZSBjbGVhcmVkIHJlZGApOworCisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wu
UE9JTlRTLCAwLCAxKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAy
NTVdLCBgZnJhbWVidWZmZXIgbGF5ZXIgJHttaXBMZXZlbH0gc2hvdWxkIGJlIGRyYXduIGdyZWVu
YCk7CisKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGBObyBl
cnJvcnNgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBtYWtlIHN1cmUgd2Ugd2VyZSBu
b3QgcmVuZGVyaW5nIHRvIHRoZSBjYW52YXMuCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgbnVsbCkKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMF0sICJjYW52
YXMgc2hvdWxkIGJlIHplcm8iKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVy
aW5nL2ZyYW1lYnVmZmVyLXJlbmRlci10by1sYXllci1hbmdsZS1pc3N1ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRl
cmluZy9mcmFtZWJ1ZmZlci1yZW5kZXItdG8tbGF5ZXItYW5nbGUtaXNzdWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZmJkYjZiYmViNDk0NzQwZDJhY2E4ODY5NTVhYWIzYmI2YjRhMzQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci1yZW5kZXItdG8tbGF5ZXItYW5nbGUtaXNz
dWUuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgY2FuIHJlbmRlciB0byBsYXllcnMgaW4gM0Qg
dGV4dHVyZSBhbmdsZSBpc3N1ZSBjaGVjazwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK3ZvaWQgbWFpbih2b2lkKSB7
CisgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAxKTsKKyAgZ2xfUG9pbnRTaXplID0gMS4w
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZl
YzQgb3V0Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgIG91dENvbG9yID0gdmVjNCgwLCAxLCAwLCAx
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMSIsIGhlaWdodD0iMSI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8YSBocmVmPSdodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvYW5nbGVwcm9qZWN0L2lz
c3Vlcy9kZXRhaWw/aWQ9NDQxNyc+QU5HTEUgaXNzdWUgIzQ0MTc8L2E+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZWJ1ZygiIik7CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRoYXQgV2ViR0wyIGNhbiByZW5kZXIgdG8gbGF5ZXJzIGluIDNEIHRleHR1
cmVzIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworCitpZiAoIWdsKSB7CisgICAgdGVz
dEZhaWxlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQiKTsKK30gZWxzZSB7CisgICAg
dGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBzdWNjZWVkZWQiKTsKKyAgICBydW5U
ZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIGNvbnN0IGZiID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7
CisKKyAgY29uc3QgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzNELCB0ZXgpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFS
KTsKKyAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBOCwgZ2wuY2FudmFz
LndpZHRoLCBnbC5jYW52YXMuaGVpZ2h0LCAyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKworICBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGdsLmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
dGV4LCAwLCBpKTsKKworICAgIGNvbnN0IHJiID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7Cisg
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgICBnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIGds
LmNhbnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJV
RkZFUiwgcmIpOworCisgICAgd3R1LmZyYW1lYnVmZmVyU3RhdHVzU2hvdWxkQmUoZ2wsIGdsLkZS
QU1FQlVGRkVSLCBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBjb25zdCBwcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywnZnNoYWRlciddLCBbXSwgY29uc29s
ZS5sb2cuYmluZChjb25zb2xlKSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAg
IGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCBgTm8gZXJyb3JzYCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGds
LCBbMCwgMjU1LCAwLCAyNTVdLCBgZnJhbWVidWZmZXIgbGF5ZXIgJHtpfSBzaG91bGQgYmUgZ3Jl
ZW5gKTsKKyAgfQorCisgIC8vIG1ha2Ugc3VyZSB3ZSB3ZXJlIG5vdCByZW5kZXJpbmcgdG8gdGhl
IGNhbnZhcy4KKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKQorICB3
dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAwLCAwLCAwXSwgImNhbnZhcyBzaG91bGQgYmUgemVybyIp
OworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvZnJhbWVidWZmZXItcmVu
ZGVyLXRvLWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXJlbmRlci10by1sYXll
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMzNGYyYTQxNDM2YmI2M2JhMDY3NDc4MWVlOTFkYmQwNTI4YWYw
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXJlbmRlci10by1s
YXllci5odG1sCkBAIC0wLDAgKzEsNDQwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjAgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgY2FuIHJlbmRlciB0byBsYXllcnMgaW4g
M0QgYW5kIDJEX0FSUkFZIHRleHR1cmVzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcwordm9pZCBtYWluKHZvaWQpIHsK
KyAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDEpOworICBnbF9Qb2ludFNpemUgPSAxLjA7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjEwMCIsIGhlaWdodD0iMTAwIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2RlYnVnKCIiKTsKKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBXZWJHTDIgY2FuIHJlbmRlciB0
byBsYXllcnMgaW4gM0QgYW5kIDJEX0FSUkFZIHRleHR1cmVzIik7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiLCB1bmRl
ZmluZWQsIDIpOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBj
cmVhdGlvbiBmYWlsZWQiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4
dCBjcmVhdGlvbiBzdWNjZWVkZWQiKTsKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgY29uc3QgdGV4V2lkdGggPSAxOworICAgIGNvbnN0IHRleEhlaWdodCA9
IDE7CisgICAgY29uc3QgdGV4RGVwdGggPSAyOworCisgICAgZnVuY3Rpb24gbWFrZUZyYWdtZW50
U2hhZGVyKHR5cGVJbmZvKSB7CisgICAgICAgIGNvbnN0IHNyYyA9IGAjdmVyc2lvbiAzMDAgZXMK
KyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgb3V0ICR7
dHlwZUluZm8ub3V0VHlwZX0gY29sb3I7CisgICAgICAgICAgICB2b2lkIG1haW4oKSB7CisgICAg
ICAgICAgICAgICAgY29sb3IgPSAke3R5cGVJbmZvLm91dFZhbHVlfTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgYDsKKyAgICAgICAgcmV0dXJuIHNyYzsKKyAgICB9CisKKyAgY29uc3QgdGV4dHVy
ZUludGVybmFsRm9ybWF0SW5mbyA9IHt9OworICB7CisgICAgICBjb25zdCB0ID0gdGV4dHVyZUlu
dGVybmFsRm9ybWF0SW5mbzsKKyAgICAgIC8vIHVuc2l6ZWQgZm9ybWF0cworICAgICAgLy8gSWYg
dW5kZXJzdGFuZCBjb3JyZWN0bHkgdGhlc2UgMyB1bnNpemVkIGZvcm1hdHMgYXJlIG5vdCByZXF1
aXJlZCB0byBiZSBjb2xvciByZW5kZXJhYmxlCisgICAgICB0W2dsLkFMUEhBXSAgICAgICAgICAg
ICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLkFMUEhBLCAgICAgICAgICAgY29sb3JSZW5kZXJhYmxl
OiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6IFsxLCAy
LCAyLCA0XSwgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFLCBnbC5IQUxGX0ZMT0FULCBn
bC5IQUxGX0ZMT0FUX09FUywgZ2wuRkxPQVRdLCB9OworICAgICAgdFtnbC5MVU1JTkFOQ0VdICAg
ICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5MVU1JTkFOQ0UsICAgICAgIGNvbG9yUmVuZGVy
YWJsZTogZmFsc2UsIHRleHR1cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBb
MSwgMiwgMiwgNF0sICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuSEFMRl9GTE9B
VCwgZ2wuSEFMRl9GTE9BVF9PRVMsIGdsLkZMT0FUXSwgfTsKKyAgICAgIHRbZ2wuTFVNSU5BTkNF
X0FMUEhBXSAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuTFVNSU5BTkNFX0FMUEhBLCBjb2xvclJl
bmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVu
dDogWzIsIDQsIDQsIDhdLCAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEUsIGdsLkhBTEZf
RkxPQVQsIGdsLkhBTEZfRkxPQVRfT0VTLCBnbC5GTE9BVF0sIH07CisKKyAgICAgIHRbZ2wuUkdC
XSAgICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBj
b2xvclJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVy
RWxlbWVudDogWzMsIDYsIDYsIDEyLCAyXSwgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEUsIGds
LkhBTEZfRkxPQVQsIGdsLkhBTEZfRkxPQVRfT0VTLCBnbC5GTE9BVCwgZ2wuVU5TSUdORURfU0hP
UlRfNV82XzVdLCB9OworICAgICAgdFtnbC5SR0JBXSAgICAgICAgICAgICAgID0geyB0ZXh0dXJl
Rm9ybWF0OiBnbC5SR0JBLCAgICAgICAgICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1
cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBbNCwgOCwgOCwgMTYsIDIsIDJd
LCB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuSEFMRl9GTE9BVCwgZ2wuSEFMRl9GTE9BVF9P
RVMsIGdsLkZMT0FULCBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCBnbC5VTlNJR05FRF9TSE9S
VF81XzVfNV8xXSwgfTsKKworICAgICAgLy8gc2l6ZWQgZm9ybWF0cworICAgICAgdFtnbC5SOF0g
ICAgICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRUQsICAgICAgICAgICAgIGNv
bG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJF
bGVtZW50OiBbMV0sICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURV0sIH07CisgICAgICB0
W2dsLlI4X1NOT1JNXSAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJFRCwgICAgICAg
ICAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBi
eXRlc1BlckVsZW1lbnQ6IFsxXSwgICAgICAgIHR5cGU6IFtnbC5CWVRFXSwgfTsKKyAgICAgIHRb
Z2wuUjE2Rl0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkVELCAgICAgICAg
ICAgICBjb2xvclJlbmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5
dGVzUGVyRWxlbWVudDogWzQsIDJdLCAgICAgdHlwZTogW2dsLkZMT0FULCBnbC5IQUxGX0ZMT0FU
XSwgfTsKKyAgICAgIHRbZ2wuUjMyRl0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDog
Z2wuUkVELCAgICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVy
YWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgdHlwZTogW2dsLkZMT0FU
XSwgfTsKKyAgICAgIHRbZ2wuUjhVSV0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDog
Z2wuUkVEX0lOVEVHRVIsICAgICBjb2xvclJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVy
YWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzFdLCAgICAgICAgdHlwZTogW2dsLlVOU0lH
TkVEX0JZVEVdLCB9OworICAgICAgdFtnbC5SOEldICAgICAgICAgICAgICAgID0geyB0ZXh0dXJl
Rm9ybWF0OiBnbC5SRURfSU5URUdFUiwgICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1
cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMV0sICAgICAgICB0eXBlOiBb
Z2wuQllURV0sIH07CisgICAgICB0W2dsLlIxNlVJXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVG
b3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVy
ZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsyXSwgICAgICAgIHR5cGU6IFtn
bC5VTlNJR05FRF9TSE9SVF0sIH07CisgICAgICB0W2dsLlIxNkldICAgICAgICAgICAgICAgPSB7
IHRleHR1cmVGb3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVl
LCAgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsyXSwgICAgICAg
IHR5cGU6IFtnbC5TSE9SVF0sIH07CisgICAgICB0W2dsLlIzMlVJXSAgICAgICAgICAgICAgPSB7
IHRleHR1cmVGb3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVl
LCAgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs0XSwgICAgICAg
IHR5cGU6IFtnbC5VTlNJR05FRF9JTlRdLCB9OworICAgICAgdFtnbC5SMzJJXSAgICAgICAgICAg
ICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRURfSU5URUdFUiwgICAgIGNvbG9yUmVuZGVyYWJs
ZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0s
ICAgICAgICB0eXBlOiBbZ2wuSU5UXSwgfTsKKyAgICAgIHRbZ2wuUkc4XSAgICAgICAgICAgICAg
ICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkcsICAgICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6
IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzJdLCAg
ICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICAgICAgdFtnbC5SRzhfU05PUk1d
ICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRywgICAgICAgICAgICAgIGNvbG9yUmVu
ZGVyYWJsZTogZmFsc2UsIHRleHR1cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50
OiBbMl0sICAgICAgICB0eXBlOiBbZ2wuQllURV0sIH07CisgICAgICB0W2dsLlJHMTZGXSAgICAg
ICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHLCAgICAgICAgICAgICAgY29sb3JSZW5k
ZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6
IFs4LCA0XSwgICAgIHR5cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9GTE9BVF0sIH07CisgICAgICB0
W2dsLlJHMzJGXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHLCAgICAgICAg
ICAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBi
eXRlc1BlckVsZW1lbnQ6IFs4XSwgICAgICAgIHR5cGU6IFtnbC5GTE9BVF0sIH07CisgICAgICB0
W2dsLlJHOFVJXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHX0lOVEVHRVIs
ICAgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBi
eXRlc1BlckVsZW1lbnQ6IFsyXSwgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFXSwgfTsK
KyAgICAgIHRbZ2wuUkc4SV0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdf
SU5URUdFUiwgICAgICBjb2xvclJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTog
ZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzJdLCAgICAgICAgdHlwZTogW2dsLkJZVEVdLCB9Owor
ICAgICAgdFtnbC5SRzE2VUldICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR19J
TlRFR0VSLCAgICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiBm
YWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfU0hP
UlRdLCB9OworICAgICAgdFtnbC5SRzE2SV0gICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0
OiBnbC5SR19JTlRFR0VSLCAgICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0
ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuU0hP
UlRdLCB9OworICAgICAgdFtnbC5SRzMyVUldICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0
OiBnbC5SR19JTlRFR0VSLCAgICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0
ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbOF0sICAgICAgICB0eXBlOiBbZ2wuVU5T
SUdORURfSU5UXSwgfTsKKyAgICAgIHRbZ2wuUkczMkldICAgICAgICAgICAgICA9IHsgdGV4dHVy
ZUZvcm1hdDogZ2wuUkdfSU5URUdFUiwgICAgICBjb2xvclJlbmRlcmFibGU6IHRydWUsICB0ZXh0
dXJlRmlsdGVyYWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzhdLCAgICAgICAgdHlwZTog
W2dsLklOVF0sIH07CisgICAgICB0W2dsLlJHQjhdICAgICAgICAgICAgICAgPSB7IHRleHR1cmVG
b3JtYXQ6IGdsLlJHQiwgICAgICAgICAgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVy
ZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6IFszXSwgICAgICAgIHR5cGU6IFtn
bC5VTlNJR05FRF9CWVRFXSwgfTsKKyAgICAgIHRbZ2wuU1JHQjhdICAgICAgICAgICAgICA9IHsg
dGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6IGZhbHNl
LCB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzNdLCAgICAgICAg
dHlwZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICAgICAgdFtnbC5SR0I1NjVdICAgICAgICAg
ICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0IsICAgICAgICAgICAgIGNvbG9yUmVuZGVyYWJs
ZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBbMywg
Ml0sICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuVU5TSUdORURfU0hPUlRfNV82XzVd
LCB9OworICAgICAgdFtnbC5SR0I4X1NOT1JNXSAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBn
bC5SR0IsICAgICAgICAgICAgIGNvbG9yUmVuZGVyYWJsZTogZmFsc2UsIHRleHR1cmVGaWx0ZXJh
YmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBbM10sICAgICAgICB0eXBlOiBbZ2wuQllURV0s
IH07CisgICAgICB0W2dsLlIxMUZfRzExRl9CMTBGXSAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGds
LlJHQiwgICAgICAgICAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFi
bGU6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6IFsxMiwgNiwgNF0sIHR5cGU6IFtnbC5GTE9BVCwg
Z2wuSEFMRl9GTE9BVCwgZ2wuVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVl0sIH07CisgICAg
ICB0W2dsLlJHQjlfRTVdICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQiwgICAg
ICAgICAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUs
ICBieXRlc1BlckVsZW1lbnQ6IFsxMiwgNiwgNF0sIHR5cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9G
TE9BVCwgZ2wuVU5TSUdORURfSU5UXzVfOV85XzlfUkVWXSwgfTsKKyAgICAgIHRbZ2wuUkdCMTZG
XSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBjb2xv
clJlbmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxl
bWVudDogWzEyLCA2XSwgICAgdHlwZTogW2dsLkZMT0FULCBnbC5IQUxGX0ZMT0FUXSwgfTsKKyAg
ICAgIHRbZ2wuUkdCMzJGXSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAg
ICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVyYWJsZTogZmFs
c2UsIGJ5dGVzUGVyRWxlbWVudDogWzEyXSwgICAgICAgdHlwZTogW2dsLkZMT0FUXSwgfTsKKyAg
ICAgIHRbZ2wuUkdCOFVJXSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCX0lO
VEVHRVIsICAgICBjb2xvclJlbmRlcmFibGU6IGZhbHNlLCB0ZXh0dXJlRmlsdGVyYWJsZTogZmFs
c2UsIGJ5dGVzUGVyRWxlbWVudDogWzNdLCAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEVd
LCB9OworICAgICAgdFtnbC5SR0I4SV0gICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBn
bC5SR0JfSU5URUdFUiwgICAgIGNvbG9yUmVuZGVyYWJsZTogZmFsc2UsIHRleHR1cmVGaWx0ZXJh
YmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbM10sICAgICAgICB0eXBlOiBbZ2wuQllURV0s
IH07CisgICAgICB0W2dsLlJHQjE2VUldICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGds
LlJHQl9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFi
bGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs2XSwgICAgICAgIHR5cGU6IFtnbC5VTlNJR05F
RF9TSE9SVF0sIH07CisgICAgICB0W2dsLlJHQjE2SV0gICAgICAgICAgICAgPSB7IHRleHR1cmVG
b3JtYXQ6IGdsLlJHQl9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVy
ZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs2XSwgICAgICAgIHR5cGU6IFtn
bC5TSE9SVF0sIH07CisgICAgICB0W2dsLlJHQjMyVUldICAgICAgICAgICAgPSB7IHRleHR1cmVG
b3JtYXQ6IGdsLlJHQl9JTlRFR0VSLCAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVy
ZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxMl0sICAgICAgIHR5cGU6IFtn
bC5VTlNJR05FRF9JTlRdLCB9OworICAgICAgdFtnbC5SR0IzMkldICAgICAgICAgICAgID0geyB0
ZXh0dXJlRm9ybWF0OiBnbC5SR0JfSU5URUdFUiwgICAgIGNvbG9yUmVuZGVyYWJsZTogZmFsc2Us
IHRleHR1cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMTJdLCAgICAgICB0
eXBlOiBbZ2wuSU5UXSwgfTsKKyAgICAgIHRbZ2wuUkdCQThdICAgICAgICAgICAgICA9IHsgdGV4
dHVyZUZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6IHRydWUsICB0
ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgdHlw
ZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICAgICAgdFtnbC5TUkdCOF9BTFBIQThdICAgICAg
ID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0JBLCAgICAgICAgICAgIGNvbG9yUmVuZGVyYWJsZTog
dHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAg
ICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURV0sIH07CisgICAgICB0W2dsLlJHQkE4X1NOT1JN
XSAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgICAgY29sb3JSZW5k
ZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6
IFs0XSwgICAgICAgIHR5cGU6IFtnbC5CWVRFXSwgfTsKKyAgICAgIHRbZ2wuUkdCNV9BMV0gICAg
ICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBjb2xvclJlbmRl
cmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDog
WzQsIDIsIDRdLCAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEUsIGdsLlVOU0lHTkVEX1NIT1JUXzVf
NV81XzEsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl0sIH07CisgICAgICB0W2dsLlJH
QkE0XSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgICAg
Y29sb3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1Bl
ckVsZW1lbnQ6IFs0LCAyXSwgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFLCBnbC5VTlNJR05F
RF9TSE9SVF80XzRfNF80XSwgfTsKKyAgICAgIHRbZ2wuUkdCMTBfQTJdICAgICAgICAgICA9IHsg
dGV4dHVyZUZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBjb2xvclJlbmRlcmFibGU6IHRydWUs
ICB0ZXh0dXJlRmlsdGVyYWJsZTogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAg
dHlwZTogW2dsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl0sIH07CisgICAgICB0W2dsLlJH
QkExNkZdICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgICAg
Y29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6IHRydWUsICBieXRlc1Bl
ckVsZW1lbnQ6IFsxNiwgOF0sICAgIHR5cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9GTE9BVF0sIH07
CisgICAgICB0W2dsLlJHQkEzMkZdICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJH
QkEsICAgICAgICAgICAgY29sb3JSZW5kZXJhYmxlOiBmYWxzZSwgdGV4dHVyZUZpbHRlcmFibGU6
IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxNl0sICAgICAgIHR5cGU6IFtnbC5GTE9BVF0sIH07
CisgICAgICB0W2dsLlJHQkE4VUldICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJH
QkFfSU5URUdFUiwgICAgY29sb3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVyZUZpbHRlcmFibGU6
IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs0XSwgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9C
WVRFXSwgfTsKKyAgICAgIHRbZ2wuUkdCQThJXSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1h
dDogZ2wuUkdCQV9JTlRFR0VSLCAgICBjb2xvclJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmls
dGVyYWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgdHlwZTogW2dsLkJZ
VEVdLCB9OworICAgICAgdFtnbC5SR0IxMF9BMlVJXSAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0
OiBnbC5SR0JBX0lOVEVHRVIsICAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0
ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWXSwgfTsKKyAgICAgIHRbZ2wuUkdCQTE2VUldICAgICAg
ICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLCAgICBjb2xvclJlbmRlcmFi
bGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzhd
LCAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX1NIT1JUXSwgfTsKKyAgICAgIHRbZ2wuUkdCQTE2
SV0gICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLCAgICBjb2xv
clJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxl
bWVudDogWzhdLCAgICAgICAgdHlwZTogW2dsLlNIT1JUXSwgfTsKKyAgICAgIHRbZ2wuUkdCQTMy
SV0gICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLCAgICBjb2xv
clJlbmRlcmFibGU6IHRydWUsICB0ZXh0dXJlRmlsdGVyYWJsZTogZmFsc2UsIGJ5dGVzUGVyRWxl
bWVudDogWzE2XSwgICAgICAgdHlwZTogW2dsLklOVF0sIH07CisgICAgICB0W2dsLlJHQkEzMlVJ
XSAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgY29sb3JS
ZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVsZW1l
bnQ6IFsxNl0sICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9JTlRdLCB9OworCisgICAgICAvLyBT
aXplZCBJbnRlcm5hbAorICAgICAgdFtnbC5ERVBUSF9DT01QT05FTlQxNl0gID0geyB0ZXh0dXJl
Rm9ybWF0OiBnbC5ERVBUSF9DT01QT05FTlQsIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1
cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMiwgNF0sICAgICB0eXBlOiBb
Z2wuVU5TSUdORURfU0hPUlQsIGdsLlVOU0lHTkVEX0lOVF0sIH07CisgICAgICB0W2dsLkRFUFRI
X0NPTVBPTkVOVDI0XSAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLkRFUFRIX0NPTVBPTkVOVCwgY29s
b3JSZW5kZXJhYmxlOiB0cnVlLCAgdGV4dHVyZUZpbHRlcmFibGU6IGZhbHNlLCBieXRlc1BlckVs
ZW1lbnQ6IFs0XSwgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9JTlRdLCB9OworICAgICAgdFtn
bC5ERVBUSF9DT01QT05FTlQzMkZdID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5ERVBUSF9DT01QT05F
TlQsIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0
ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuRkxPQVRdLCB9OworICAgICAgdFtn
bC5ERVBUSDI0X1NURU5DSUw4XSAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5ERVBUSF9TVEVOQ0lM
LCAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxlOiBmYWxzZSwgYnl0
ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfSU5UXzI0XzhdLCB9
OworICAgICAgdFtnbC5ERVBUSDMyRl9TVEVOQ0lMOF0gID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5E
RVBUSF9TVEVOQ0lMLCAgIGNvbG9yUmVuZGVyYWJsZTogdHJ1ZSwgIHRleHR1cmVGaWx0ZXJhYmxl
OiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICB0eXBlOiBbZ2wuRkxPQVRfMzJf
VU5TSUdORURfSU5UXzI0XzhfUkVWXSwgfTsKKworICAgICAgT2JqZWN0LmtleXModCkuZm9yRWFj
aChmdW5jdGlvbihpbnRlcm5hbEZvcm1hdCkgeworICAgICAgICAgIGNvbnN0IGluZm8gPSB0W2lu
dGVybmFsRm9ybWF0XTsKKyAgICAgICAgICBpbmZvLmJ5dGVzUGVyRWxlbWVudE1hcCA9IHt9Owor
ICAgICAgICAgIGluZm8uYnl0ZXNQZXJFbGVtZW50LmZvckVhY2goZnVuY3Rpb24oYnl0ZXNQZXJF
bGVtZW50LCBuZHgpIHsKKyAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGluZm8udHlwZVtuZHhd
OworICAgICAgICAgICAgICBpbmZvLmJ5dGVzUGVyRWxlbWVudE1hcFt0eXBlXSA9IGJ5dGVzUGVy
RWxlbWVudDsKKyAgICAgICAgICB9KTsKKyAgICAgIH0pOworICB9CisKKyAgY29uc3QgdmFsaWRD
aGFubmVsc0J5VGV4dHVyZUZvcm1hdCA9IHt9OworICB7CisgICAgICBjb25zdCB2ID0gdmFsaWRD
aGFubmVsc0J5VGV4dHVyZUZvcm1hdDsKKyAgICAgIHZbZ2wuUkVEXSAgICAgICAgICA9IFsxLCAw
LCAwLCAwXTsKKyAgICAgIHZbZ2wuUkddICAgICAgICAgICA9IFsxLCAxLCAwLCAwXTsKKyAgICAg
IHZbZ2wuUkdCXSAgICAgICAgICA9IFsxLCAxLCAxLCAwXTsKKyAgICAgIHZbZ2wuUkdCQV0gICAg
ICAgICA9IFsxLCAxLCAxLCAxXTsKKyAgICAgIHZbZ2wuUkVEX0lOVEVHRVJdICA9IFsxLCAwLCAw
LCAwXTsKKyAgICAgIHZbZ2wuUkdfSU5URUdFUl0gICA9IFsxLCAxLCAwLCAwXTsKKyAgICAgIHZb
Z2wuUkdCX0lOVEVHRVJdICA9IFsxLCAxLCAxLCAwXTsKKyAgICAgIHZbZ2wuUkdCQV9JTlRFR0VS
XSA9IFsxLCAxLCAxLCAxXTsKKyAgfQorCisgIGNvbnN0IGRlcHRoVGV4dHVyZUZvcm1hdHMgPSBb
CisgICAgICBnbC5ERVBUSF9DT01QT05FTlQxNiwKKyAgICAgIGdsLkRFUFRIX0NPTVBPTkVOVDI0
LAorICAgICAgZ2wuREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgZ2wuREVQVEgyNF9TVEVOQ0lM
OCwKKyAgICAgIGdsLkRFUFRIMzJGX1NURU5DSUw4LAorICBdOworCisgIGNvbnN0IGludFRleHR1
cmVGb3JtYXRzID0gWworICAgICAgZ2wuUjhJLAorICAgICAgZ2wuUjE2SSwKKyAgICAgIGdsLlIz
MkksCisgICAgICBnbC5SRzhJLAorICAgICAgZ2wuUkcxNkksCisgICAgICBnbC5SRzMySSwKKyAg
ICAgIGdsLlJHQjhJLAorICAgICAgZ2wuUkdCMTZJLAorICAgICAgZ2wuUkdCMzJJLAorICAgICAg
Z2wuUkdCQThJLAorICAgICAgZ2wuUkdCQTE2SSwKKyAgICAgIGdsLlJHQkEzMkksCisgIF07CisK
KyAgY29uc3QgdW5zaWduZWRJbnRUZXh0dXJlRm9ybWF0cyA9IFsKKyAgICAgIGdsLlI4VUksCisg
ICAgICBnbC5SMTZVSSwKKyAgICAgIGdsLlIzMlVJLAorICAgICAgZ2wuUkc4VUksCisgICAgICBn
bC5SRzE2VUksCisgICAgICBnbC5SRzMyVUksCisgICAgICBnbC5SR0I4VUksCisgICAgICBnbC5S
R0IxNlVJLAorICAgICAgZ2wuUkdCMzJVSSwKKyAgICAgIGdsLlJHQkE4VUksCisgICAgICBnbC5S
R0IxMF9BMlVJLAorICAgICAgZ2wuUkdCQTE2VUksCisgICAgICBnbC5SR0JBMzJVSSwKKyAgXTsK
KworICBjb25zdCBmbG9hdFRleHR1cmVGb3JtYXRzID0gT2JqZWN0LmtleXModGV4dHVyZUludGVy
bmFsRm9ybWF0SW5mbykubWFwKGZ1bmN0aW9uKHYpIHsKKyAgICAgIHJldHVybiBwYXJzZUludCh2
KTsKKyAgfSkuZmlsdGVyKGZ1bmN0aW9uKGZvcm1hdCkgeworICAgICAgcmV0dXJuIGludFRleHR1
cmVGb3JtYXRzLmluZGV4T2YoZm9ybWF0KSA8IDAgJiYKKyAgICAgICAgICAgICB1bnNpZ25lZElu
dFRleHR1cmVGb3JtYXRzLmluZGV4T2YoZm9ybWF0KSA8IDAgJiYKKyAgICAgICAgICAgICBkZXB0
aFRleHR1cmVGb3JtYXRzLmluZGV4T2YoZm9ybWF0KTsKKyAgfSk7CisKKyAgY29uc3QgZXhwZWN0
ZWRDb2xvckJ5SW50ZXJuYWxGb3JtYXQgPSB7fTsKKyAgZXhwZWN0ZWRDb2xvckJ5SW50ZXJuYWxG
b3JtYXRbZ2wuU1JHQjhfQUxQSEE4XSA9IFsyMjUsIDE4OCwgMTM3LCAyNTVdOworCisgIGZ1bmN0
aW9uIGNsZWFyRmxvYXQoZ2wpIHsKKyAgICAgIGdsLmNsZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDAs
IFswLCAwLCAwLCAwXSk7CisgIH0KKworICBmdW5jdGlvbiBjbGVhckludChnbCkgeworICAgICAg
Z2wuY2xlYXJCdWZmZXJpdihnbC5DT0xPUiwgMCwgWzAsIDAsIDAsIDBdKTsKKyAgfQorCisgIGZ1
bmN0aW9uIGNsZWFyVWludChnbCkgeworICAgICAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuQ09MT1Is
IDAsIFswLCAwLCAwLCAwXSk7CisgIH0KKworCisgIGZ1bmN0aW9uIGNoZWNrRGF0YShkYXRhLCBl
eHBlY3RlZCwgaW50ZXJuYWxGb3JtYXQsIHRvbGVyYW5jZSkgeworICAgICAgY29uc3QgaW50ZXJu
YWxGb3JtYXRJbmZvID0gdGV4dHVyZUludGVybmFsRm9ybWF0SW5mb1tpbnRlcm5hbEZvcm1hdF07
CisgICAgICBjb25zdCB2YWxpZENoYW5uZWxzID0gdmFsaWRDaGFubmVsc0J5VGV4dHVyZUZvcm1h
dFtpbnRlcm5hbEZvcm1hdEluZm8udGV4dHVyZUZvcm1hdF07CisgICAgICBpZiAoIXZhbGlkQ2hh
bm5lbHMpIHsKKyAgICAgICAgICB0ZXN0RmFpbGVkKCdvb3BzJyk7CisgICAgICAgICAgcmV0dXJu
OworICAgICAgfQorICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0ZXhIZWlnaHQ7ICsreSkgewor
ICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGV4V2lkdGg7ICsreCkgeworICAgICAgICAg
ICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHZhbGlkQ2hhbm5lbHMubGVuZ3RoOyArK2MpIHsKKyAg
ICAgICAgICAgICAgICAgIGlmICh2YWxpZENoYW5uZWxzW2NdKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgb2Zmc2V0ID0gKHkgKiB0ZXhXaWR0aCArIHgpICogNCArIGM7CisgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcGl4ZWwgPSBkYXRhW29mZnNldF07CisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKHBpeGVsIC0gZXhwZWN0ZWRbY10pOworICAg
ICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID4gdG9sZXJhbmNlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoYHBpeGVsICR7eH0sJHt5fSBjaGFubmVsICR7Y30gd2Fz
ICR7cGl4ZWx9IGV4cGVjdGVkICR7ZXhwZWN0ZWRbY119ICsvLSAke3RvbGVyYW5jZX1gKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIHRlc3RQYXNzZWQoYGRhdGEgd2FzICR7ZXhwZWN0ZWQuam9pbignLCcpfWApOwor
ICB9CisKKyAgZnVuY3Rpb24gY2hlY2tGbG9hdChnbCwgdGV4dHVyZUluZm8sIGV4cGVjdGVkKSB7
CisgICAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkodGV4V2lkdGggKiB0ZXhIZWlnaHQg
KiA0KTsKKyAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgdGV4V2lkdGgsIHRleEhlaWdodCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgICBjb25zdCBpbnRlcm5hbEZvcm1h
dCA9IHRleHR1cmVJbmZvLmludGVybmFsRm9ybWF0OworICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSByZWFkUGl4ZWxzIHdpdGggJHt3dHUu
Z2xFbnVtVG9TdHJpbmcoZ2wsIGludGVybmFsRm9ybWF0KX1gKTsKKyAgICAgIGNoZWNrRGF0YShk
YXRhLCBleHBlY3RlZCwgaW50ZXJuYWxGb3JtYXQsIDkpOworICB9CisKKyAgZnVuY3Rpb24gY2hl
Y2tJbnQoZ2wsIHRleHR1cmVJbmZvLCBleHBlY3RlZCkgeworICAgICAgY29uc3QgZGF0YSA9IG5l
dyBJbnQzMkFycmF5KHRleFdpZHRoICogdGV4SGVpZ2h0ICogNCk7CisgICAgICBnbC5yZWFkUGl4
ZWxzKDAsIDAsIHRleFdpZHRoLCB0ZXhIZWlnaHQsIGdsLlJHQkFfSU5URUdFUiwgZ2wuSU5ULCBk
YXRhKTsKKyAgICAgIGNvbnN0IGludGVybmFsRm9ybWF0ID0gdGV4dHVyZUluZm8uaW50ZXJuYWxG
b3JtYXQ7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgYE5vIGVy
cm9ycyBmcm9tIHJlYWRQaXhlbHMgd2l0aCAke3d0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW50ZXJu
YWxGb3JtYXQpfWApOworICAgICAgY2hlY2tEYXRhKGRhdGEsIGV4cGVjdGVkLCBpbnRlcm5hbEZv
cm1hdCwgMCk7CisgIH0KKworICBmdW5jdGlvbiBjaGVja1VpbnQoZ2wsIHRleHR1cmVJbmZvLCBl
eHBlY3RlZCkgeworICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50MzJBcnJheSh0ZXhXaWR0aCAq
IHRleEhlaWdodCAqIDQpOworICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCB0ZXhXaWR0aCwgdGV4
SGVpZ2h0LCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCwgZGF0YSk7CisgICAgICBj
b25zdCBpbnRlcm5hbEZvcm1hdCA9IHRleHR1cmVJbmZvLmludGVybmFsRm9ybWF0OworICAgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSByZWFk
UGl4ZWxzIHdpdGggJHt3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGludGVybmFsRm9ybWF0KX1gKTsK
KyAgICAgIGNoZWNrRGF0YShkYXRhLCBleHBlY3RlZCwgaW50ZXJuYWxGb3JtYXQsIDApOworICB9
CisKKyAgY29uc3QgZXhwZWN0ZWRGbG9hdENvbG9yID0gWy43NSAqIDI1NSB8IDAsIC41ICogMjU1
IHwgMCwgLjI1ICogMjU1IHwgMCwgMSAqIDI1NSB8IDBdOworICBjb25zdCBmbG9hdFR5cGVzID0g
WworICAgICAgeyBvdXRUeXBlOiAndmVjNCcsIG91dFZhbHVlOiAndmVjNCguNzUsIC41LCAuMjUs
IDEpJywgZXhwZWN0ZWQ6IGV4cGVjdGVkRmxvYXRDb2xvciwgY2xlYXI6IGNsZWFyRmxvYXQsIGNo
ZWNrOiBjaGVja0Zsb2F0LCB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsIH0sCisgICAgICB7IG91dFR5
cGU6ICd2ZWM0Jywgb3V0VmFsdWU6ICd2ZWM0KC43NSwgLjUsIC4yNSwgMSknLCBleHBlY3RlZDog
ZXhwZWN0ZWRGbG9hdENvbG9yLCBjbGVhcjogY2xlYXJGbG9hdCwgY2hlY2s6IGNoZWNrRmxvYXQs
IHRhcmdldDogZ2wuVEVYVFVSRV8zRCwgfSwKKyAgICAgIHsgb3V0VHlwZTogJ3ZlYzQnLCBvdXRW
YWx1ZTogJ3ZlYzQoLjc1LCAuNSwgLjI1LCAxKScsIGV4cGVjdGVkOiBleHBlY3RlZEZsb2F0Q29s
b3IsIGNsZWFyOiBjbGVhckZsb2F0LCBjaGVjazogY2hlY2tGbG9hdCwgdGFyZ2V0OiBnbC5URVhU
VVJFXzJEX0FSUkFZLCB9LAorICBdOworCisgIGNvbnN0IGV4cGVjdGVkSW50Q29sb3IgPSBbMSwg
MiwgNCwgM107CisgIGNvbnN0IHNpZ25lZEludFR5cGVzID0gWworICAgICAgeyBvdXRUeXBlOiAn
aXZlYzQnLCBvdXRWYWx1ZTogJ2l2ZWM0KDEsIDIsIDQsIDMpJywgZXhwZWN0ZWQ6IGV4cGVjdGVk
SW50Q29sb3IsIGNsZWFyOiBjbGVhckludCwgY2hlY2s6IGNoZWNrSW50LCB0YXJnZXQ6IGdsLlRF
WFRVUkVfMkQsIH0sCisgICAgICB7IG91dFR5cGU6ICdpdmVjNCcsIG91dFZhbHVlOiAnaXZlYzQo
MSwgMiwgNCwgMyknLCBleHBlY3RlZDogZXhwZWN0ZWRJbnRDb2xvciwgY2xlYXI6IGNsZWFySW50
LCBjaGVjazogY2hlY2tJbnQsIHRhcmdldDogZ2wuVEVYVFVSRV8zRCwgfSwKKyAgICAgIHsgb3V0
VHlwZTogJ2l2ZWM0Jywgb3V0VmFsdWU6ICdpdmVjNCgxLCAyLCA0LCAzKScsIGV4cGVjdGVkOiBl
eHBlY3RlZEludENvbG9yLCBjbGVhcjogY2xlYXJJbnQsIGNoZWNrOiBjaGVja0ludCwgdGFyZ2V0
OiBnbC5URVhUVVJFXzJEX0FSUkFZLCB9LAorICBdOworCisgIGNvbnN0IGV4cGVjdGVkVWludENv
bG9yID0gWzEsIDIsIDQsIDNdOworICBjb25zdCB1bnNpZ25lZEludFR5cGVzID0gWworICAgICAg
eyBvdXRUeXBlOiAndXZlYzQnLCBvdXRWYWx1ZTogJ3V2ZWM0KDEsIDIsIDQsIDMpJywgZXhwZWN0
ZWQ6IGV4cGVjdGVkVWludENvbG9yLCBjbGVhcjogY2xlYXJVaW50LCBjaGVjazogY2hlY2tVaW50
LCB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsIH0sCisgICAgICB7IG91dFR5cGU6ICd1dmVjNCcsIG91
dFZhbHVlOiAndXZlYzQoMSwgMiwgNCwgMyknLCBleHBlY3RlZDogZXhwZWN0ZWRVaW50Q29sb3Is
IGNsZWFyOiBjbGVhclVpbnQsIGNoZWNrOiBjaGVja1VpbnQsIHRhcmdldDogZ2wuVEVYVFVSRV8z
RCwgfSwKKyAgICAgIHsgb3V0VHlwZTogJ3V2ZWM0Jywgb3V0VmFsdWU6ICd1dmVjNCgxLCAyLCA0
LCAzKScsIGV4cGVjdGVkOiBleHBlY3RlZFVpbnRDb2xvciwgY2xlYXI6IGNsZWFyVWludCwgY2hl
Y2s6IGNoZWNrVWludCwgdGFyZ2V0OiBnbC5URVhUVVJFXzJEX0FSUkFZLCB9LAorICBdOworCisg
IC8qKgorICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGVsZW1lbnQgZm9yIGEgZ2l2
ZW4gaW50ZXJuYWxGb3JtYXQgLyB0eXBlCisgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZv
cm1hdCBUaGUgaW50ZXJuYWxGb3JtYXQgcGFyYW1ldGVyIGZyb20gdGV4SW1hZ2UyRCBldGMuLgor
ICAgKiBAcGFyYW0ge251bWJlcn0gdHlwZSBUaGUgdHlwZSBwYXJhbWV0ZXIgZm9yIHRleEltYWdl
MkQgZXRjLi4KKyAgICogQHJldHVybiB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBl
bGVtZW50IGZvciB0aGUgZ2l2ZW4gaW50ZXJuYWxGb3JtYXQsIHR5cGUgY29tYm8KKyAgICogQG1l
bWJlck9mIG1vZHVsZTp0d2dsL3RleHR1cmVzCisgICAqLworICBmdW5jdGlvbiBnZXRCeXRlc1Bl
ckVsZW1lbnRGb3JJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSkgeworICAgICAg
Y29uc3QgaW5mbyA9IHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm9baW50ZXJuYWxGb3JtYXRdOwor
ICAgICAgaWYgKCFpbmZvKSB7CisgICAgICAgICAgdGhyb3cgInVua25vd24gaW50ZXJuYWwgZm9y
bWF0IjsKKyAgICAgIH0KKyAgICAgIGNvbnN0IGJ5dGVzUGVyRWxlbWVudCA9IGluZm8uYnl0ZXNQ
ZXJFbGVtZW50TWFwW3R5cGVdOworICAgICAgaWYgKGJ5dGVzUGVyRWxlbWVudCA9PT0gdW5kZWZp
bmVkKSB7CisgICAgICAgICAgdGhyb3cgInVua25vd24gaW50ZXJuYWwgZm9ybWF0IjsKKyAgICAg
IH0KKyAgICAgIHJldHVybiBieXRlc1BlckVsZW1lbnQ7CisgIH0KKworICBmdW5jdGlvbiBtYWtl
MkRUZXh0dXJlKGdsLCB0YXJnZXQsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUpIHsKKyAg
ICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCAwLCBpbnRlcm5hbEZvcm1hdCwgdGV4V2lkdGgsIHRl
eEhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxsKTsKKyAgfQorCisgIGZ1bmN0aW9uIG1ha2Uz
RFRleHR1cmUoZ2wsIHRhcmdldCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSkgeworICAg
ICAgZ2wudGV4SW1hZ2UzRCh0YXJnZXQsIDAsIGludGVybmFsRm9ybWF0LCB0ZXhXaWR0aCwgdGV4
SGVpZ2h0LCB0ZXhEZXB0aCwgMCwgZm9ybWF0LCB0eXBlLCBudWxsKTsKKyAgfQorCisgIGZ1bmN0
aW9uIGF0dGFjaDJEVGV4dHVyZShnbCwgdGFyZ2V0LCB0ZXh0dXJlKSB7CisgICAgICBjb25zdCBs
ZXZlbCA9IDA7CisgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOworICB9CisKKyAg
ZnVuY3Rpb24gYXR0YWNoM0RUZXh0dXJlKGdsLCB0YXJnZXQsIHRleHR1cmUpIHsKKyAgICAgIGNv
bnN0IGxldmVsID0gMDsKKyAgICAgIGNvbnN0IHNsaWNlID0gdGV4RGVwdGggLSAxOworICAgICAg
Z2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCB0ZXh0dXJlLCBsZXZlbCwgc2xpY2UpOworICB9CisKKyAgY29uc3QgdGFyZ2V0cyA9
IHt9OworICB0YXJnZXRzW2dsLlRFWFRVUkVfMkRdICAgICAgID0geyBtYWtlOiBtYWtlMkRUZXh0
dXJlLCBhdHRhY2g6IGF0dGFjaDJEVGV4dHVyZSwgfSwKKyAgdGFyZ2V0c1tnbC5URVhUVVJFXzNE
XSAgICAgICA9IHsgbWFrZTogbWFrZTNEVGV4dHVyZSwgYXR0YWNoOiBhdHRhY2gzRFRleHR1cmUs
IH0sCisgIHRhcmdldHNbZ2wuVEVYVFVSRV8yRF9BUlJBWV0gPSB7IG1ha2U6IG1ha2UzRFRleHR1
cmUsIGF0dGFjaDogYXR0YWNoM0RUZXh0dXJlLCB9LAorCisgIGRlYnVnKCJjcmVhdGUgdGV4dHVy
ZXMiKTsKKyAgT2JqZWN0LmtleXModGFyZ2V0cykuZm9yRWFjaChmdW5jdGlvbih0YXJnZXQpIHsK
KyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHRhcmdldCA9IHBhcnNlSW50KHRhcmdldCk7CisgICAg
ICBkZWJ1Zyh3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHRhcmdldCkpCisgICAgICBjb25zdCB0YXJn
ZXRJbmZvID0gdGFyZ2V0c1t0YXJnZXRdOworICAgICAgdGFyZ2V0SW5mby50ZXh0dXJlcyA9IFtd
OworICAgICAgT2JqZWN0LmtleXModGV4dHVyZUludGVybmFsRm9ybWF0SW5mbykuZm9yRWFjaChm
dW5jdGlvbihpbnRlcm5hbEZvcm1hdCkgeworICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gcGFy
c2VJbnQoaW50ZXJuYWxGb3JtYXQpOworICAgICAgICAgIGNvbnN0IGlzRGVwdGhGb3JtYXQgPSBk
ZXB0aFRleHR1cmVGb3JtYXRzLmluZGV4T2YoaW50ZXJuYWxGb3JtYXQpID49IDA7CisgICAgICAg
ICAgaWYgKGlzRGVwdGhGb3JtYXQpIHsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
IH0KKyAgICAgICAgICBjb25zdCBpbmZvID0gdGV4dHVyZUludGVybmFsRm9ybWF0SW5mb1tpbnRl
cm5hbEZvcm1hdF07CisgICAgICAgICAgaWYgKCFpbmZvLmNvbG9yUmVuZGVyYWJsZSkgeworICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnN0IHRleHR1cmUg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCB0
ZXh0dXJlKTsKKyAgICAgICAgICB0YXJnZXRJbmZvLm1ha2UoZ2wsIHRhcmdldCwgaW50ZXJuYWxG
b3JtYXQsIGluZm8udGV4dHVyZUZvcm1hdCwgaW5mby50eXBlWzBdKTsKKyAgICAgICAgICB0YXJn
ZXRJbmZvLnRleHR1cmVzLnB1c2goeworICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdDogaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmUsCisgICAgICAgICAg
fSk7CisgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSBzZXR1cCBmb3IgJHt3dHUu
Z2xFbnVtVG9TdHJpbmcoZ2wsIHRhcmdldCl9ICR7d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBpbnRl
cm5hbEZvcm1hdCl9YCk7CisgICAgICB9KTsKKyAgfSk7CisKKyAgLy8gc2V0IHRoZSBjYW52YXMg
dG8gYSBrbm93biBjb2xvcgorICBjb25zdCBoYWxmID0gMTI3IC8gMjU1OworICBnbC5jbGVhckNv
bG9yKGhhbGYsIGhhbGYsIGhhbGYsIGhhbGYpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKworICBjb25zdCBmcmFtZWJ1ZmZl
ciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZnJhbWVidWZmZXIpOworICBnbC52aWV3cG9ydCgwLCAwLCB0ZXhXaWR0aCwgdGV4
SGVpZ2h0KTsKKworICBjb25zdCByYiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICBnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIpOworICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIHRleFdpZHRoLCB0
ZXhIZWlnaHQpOworCisgIHRlc3RUeXBlcygnZmxvYXQnLCBmbG9hdFR5cGVzLCBmbG9hdFRleHR1
cmVGb3JtYXRzKTsKKyAgdGVzdFR5cGVzKCdpbnQnLCBzaWduZWRJbnRUeXBlcywgaW50VGV4dHVy
ZUZvcm1hdHMpOworICB0ZXN0VHlwZXMoJ3Vuc2lnbmVkJywgdW5zaWduZWRJbnRUeXBlcywgdW5z
aWduZWRJbnRUZXh0dXJlRm9ybWF0cyk7CisKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBudWxsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMTI3LCAxMjcsIDEyNywgMTI3
XSwgImNhbnZhcyBzaG91bGQgYmUgWzEyNywgMTI3LCAxMjcsIDEyN10iKTsKKworICBmdW5jdGlv
biB0ZXN0VHlwZXMobGFiZWwsIHR5cGVzLCBjb21wYXRpYmxlRm9ybWF0cykgeworICAgICAgZGVi
dWcoJycpOworICAgICAgdHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlSW5mbykgeworICAgICAg
ICAgIGRlYnVnKGBcbmNoZWNraW5nICR7d3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0eXBlSW5mby50
YXJnZXQpfSB3aXRoICR7bGFiZWx9IHRleHR1cmUgZm9ybWF0c2ApOworICAgICAgICAgIGNvbnN0
IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCBtYWtlRnJhZ21lbnRT
aGFkZXIodHlwZUluZm8pXSwgW10sIGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSkpOworICAgICAg
ICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2FkaW5nIHBy
b2dyYW0gZmFpbGVkIik7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAg
ICAgICAgdGVzdFBhc3NlZCgiTG9hZGluZyBwcm9ncmFtIHN1Y2NlZWRlZCIpOworCisgICAgICAg
ICAgY29uc3QgdGFyZ2V0ID0gdHlwZUluZm8udGFyZ2V0OworICAgICAgICAgIGNvbnN0IHRhcmdl
dEluZm8gPSB0YXJnZXRzW3RhcmdldF07CisgICAgICAgICAgdGFyZ2V0SW5mby50ZXh0dXJlcy5m
aWx0ZXIoZnVuY3Rpb24odGV4dHVyZUluZm8pIHsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXRp
YmxlRm9ybWF0cy5pbmRleE9mKHRleHR1cmVJbmZvLmludGVybmFsRm9ybWF0KSA+PSAwOworICAg
ICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24odGV4dHVyZUluZm8pIHsKKyAgICAgICAgICAgICAg
Y29uc3QgaW50ZXJuYWxGb3JtYXQgPSB0ZXh0dXJlSW5mby5pbnRlcm5hbEZvcm1hdDsKKyAgICAg
ICAgICAgICAgY29uc3QgZGVzYyA9IGAke3d0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGFyZ2V0KX0g
JHt3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGludGVybmFsRm9ybWF0KX1gOworICAgICAgICAgICAg
ICBjb25zdCBleHBlY3RlZCA9IGV4cGVjdGVkQ29sb3JCeUludGVybmFsRm9ybWF0W2ludGVybmFs
Rm9ybWF0XSB8fCB0eXBlSW5mby5leHBlY3RlZDsKKworICAgICAgICAgICAgICBkZWJ1ZygnJyk7
CisgICAgICAgICAgICAgIGRlYnVnKGRlc2MpOworCisgICAgICAgICAgICAgIHRhcmdldEluZm8u
YXR0YWNoKGdsLCB0YXJnZXQsIHRleHR1cmVJbmZvLnRleHR1cmUpOworICAgICAgICAgICAgICB3
dHUuZnJhbWVidWZmZXJTdGF0dXNTaG91bGRCZShnbCwgZ2wuRlJBTUVCVUZGRVIsIGdsLkZSQU1F
QlVGRkVSX0NPTVBMRVRFLCBgZm9yICR7ZGVzY31gKTsKKyAgICAgICAgICAgICAgdHlwZUluZm8u
Y2xlYXIoZ2wpOworICAgICAgICAgICAgICBpZiAod3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSBjbGVhciB0byAke2Rlc2N9YCkpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdHlwZUluZm8u
Y2hlY2soZ2wsIHRleHR1cmVJbmZvLCBbMCwgMCwgMCwgMF0pOworICAgICAgICAgICAgICBnbC5k
cmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMSk7CisgICAgICAgICAgICAgIGlmICh3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgYE5vIGVycm9ycyBmcm9tIHJlbmRlciB0byAke2Rl
c2N9YCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgdHlwZUluZm8uY2hlY2soZ2wsIHRleHR1cmVJbmZvLCBleHBlY3RlZCk7CisKKyAg
ICAgICAgICAgICAgdHlwZUluZm8uY2xlYXIoZ2wpOworICAgICAgICAgICAgICBpZiAod3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSBjbGVhciB0byAk
e2Rlc2N9YCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgdHlwZUluZm8uY2hlY2soZ2wsIHRleHR1cmVJbmZvLCBbMCwgMCwgMCwgMF0p
OworCisgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgICAgICAg
ICAgICAgd3R1LmZyYW1lYnVmZmVyU3RhdHVzU2hvdWxkQmUoZ2wsIGdsLkZSQU1FQlVGRkVSLCBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURSwgYGZvciAke2Rlc2N9IHdpdGggZGVwdGggcmVuZGVyYnVm
ZmVyYCk7CisgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVyZnYoZ2wuREVQVEgsIDAsIFsxXSk7
CisgICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKyAgICAgICAg
ICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRI
X0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIGBObyBlcnJvcnMgZnJvbSByZW5kZXIg
dG8gJHtkZXNjfWApOworCisgICAgICAgICAgICAgIHR5cGVJbmZvLmNoZWNrKGdsLCB0ZXh0dXJl
SW5mbywgZXhwZWN0ZWQpOworICAgICAgICAgIH0pOworICAgICAgfSk7CisgIH0KK30KKworZGVi
dWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXRleHR1cmUtY2hhbmdp
bmctYmFzZS1sZXZlbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci10ZXh0dXJlLWNoYW5n
aW5nLWJhc2UtbGV2ZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ2MmQ2MDE1YmVhNGU0ZGY3N2Q0MDFk
YjZiZTNiOGYzNzA2ZmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZl
ci10ZXh0dXJlLWNoYW5naW5nLWJhc2UtbGV2ZWwuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
ZnJhbWVidWZmZXIgdXNpbmcgYSBub24tc3F1YXJlIHRleHR1cmUgd2l0aCBhIGNoYW5naW5nIGJh
c2UgbGV2ZWw8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisK
Ky8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjI5MQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2w7CisKK2Z1bmN0aW9uIHRlc3ROb25TcXVhcmVGcmFtZWJ1ZmZlclRleHR1cmVXaXRo
Q2hhbmdpbmdCYXNlTGV2ZWwoKSB7CisgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwU2ltcGxlVGV4
dHVyZVByb2dyYW0oZ2wpOworICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKKyAgdmFyIHdpZHRo
ID0gODsKKyAgdmFyIGhlaWdodCA9IDQ7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGV4dCB0
ZXh0dXJlIHdpZHRoICIgKyB3aWR0aCArICIgeCBoZWlnaHQgIiArIGhlaWdodCk7CisKKyAgdmFy
IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleHR1cmUpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIpOworICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7
CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKworICAvLyBDcmVhdGUgYWxsIG1pcG1h
cCBsZXZlbHMgZm9yIHRoZSB0ZXh0dXJlIGZyb20gbGV2ZWwgMCB0byB0aGUgMXgxIHBpeGVsIGxl
dmVsLgorICB2YXIgbGV2ZWwgPSAwOworICB2YXIgbGV2ZWxXID0gd2lkdGg7CisgIHZhciBsZXZl
bEggPSBoZWlnaHQ7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgbGV2ZWwsIGdsLlJH
QkEsIGxldmVsVywgbGV2ZWxILCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsK
KyAgd2hpbGUgKGxldmVsVyA+IDEgfHwgbGV2ZWxIID4gMSkKKyAgICB7CisgICAgICArK2xldmVs
OworICAgICAgbGV2ZWxXID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih3aWR0aCAvIE1hdGgucG93
KDIsIGxldmVsKSkpOworICAgICAgbGV2ZWxIID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihoZWln
aHQgLyBNYXRoLnBvdygyLCBsZXZlbCkpKTsKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgbGV2ZWwsIGdsLlJHQkEsIGxldmVsVywgbGV2ZWxILCAwLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICB9CisKKyAgLy8gQ2xlYXIgZWFjaCBsZXZlbCBvZiB0aGUg
dGV4dHVyZSB1c2luZyBhbiBGQk8uIENoYW5nZSB0aGUgYmFzZSBsZXZlbCB0byBtYXRjaCB0aGUg
bGV2ZWwgdXNlZCBmb3IgdGhlIEZCTyBvbiBlYWNoIGl0ZXJhdGlvbi4KKyAgdmFyIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgbGV2ZWwgPSAwOworICBsZXZlbFcgPSB3aWR0aDsKKyAgbGV2ZWxIID0gaGVp
Z2h0OworICB3aGlsZSAobGV2ZWxXID4gMSB8fCBsZXZlbEggPiAxKQorICB7CisgICAgdmFyIGxl
dmVsVyA9IE1hdGguZmxvb3Iod2lkdGggLyBNYXRoLnBvdygyLCBsZXZlbCkpOworICAgIHZhciBs
ZXZlbEggPSBNYXRoLmZsb29yKGhlaWdodCAvIE1hdGgucG93KDIsIGxldmVsKSk7CisKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQkFTRV9MRVZFTCwgbGV2
ZWwpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgbGV2ZWwpOworICAgIHNob3Vs
ZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5GUkFN
RUJVRkZFUl9DT01QTEVURSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiU2V0dXAgZnJhbWVidWZmZXIgd2l0aCB0ZXh0dXJlIHNob3VsZCBzdWNjZWVkLiIpOwor
ICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJDbGVh
cmluZyB0aGUgdGV4dHVyZSBsZXZlbCAiICsgbGV2ZWwgKyAiIHRvIGdyZWVuIHNob3VsZCBzdWNj
ZWVkLiIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAyNTUs
IDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKyAgICArK2xldmVsOworICB9CisKKyAgZGVi
dWcoIiIpOworCisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cisg
IGdsLnZpZXdwb3J0KDAsIDAsIGdsLmNhbnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCk7Cisg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9CQVNFX0xFVkVMLCAw
KTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRHJhd2luZyB0aGUgdGV4dHVyZSB0
byBkZWZhdWx0IGZyYW1lYnVmZmVyIHdpdGggYmFzZSBsZXZlbCAwIHNob3VsZCBzdWNjZWVkLiIp
OworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3Jl
ZW4iKTsKKworICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICBnbC5kZWxldGVGcmFtZWJ1
ZmZlcihmYm8pOworfQorCitkZXNjcmlwdGlvbigpOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIDIpIik7CisKK3Rlc3ROb25TcXVhcmVGcmFt
ZWJ1ZmZlclRleHR1cmVXaXRoQ2hhbmdpbmdCYXNlTGV2ZWwoKTsKKworZGVidWcoIiIpOwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9yZW5kZXJpbmcvZnJhbWVidWZmZXItdGV4dHVyZS1sZXZlbDEuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9y
ZW5kZXJpbmcvZnJhbWVidWZmZXItdGV4dHVyZS1sZXZlbDEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWFj
OGNiMWU3OTZlNTc2MjE1OGJkNDYzYzBkMTA1MTc1Y2M0NzVmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3JlbmRlcmluZy9mcmFtZWJ1ZmZlci10ZXh0dXJlLWxldmVsMS5odG1sCkBAIC0wLDAgKzEsNjQg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PldlYkdMIGZyYW1lYnVmZmVyIHVzaW5nIHRleHR1cmUgbGV2ZWwgMTwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2w7CisKK2Z1bmN0aW9uIHRlc3RGcmFtZWJ1ZmZlclRleHR1cmVXaXRoTm9uWmVyb0Jhc2VM
ZXZlbChsZXZlbCkgeworICBpZiAobGV2ZWwgPCAxKSB7CisgICAgdGhyb3cgIlRoaXMgdGVzdCBp
cyBpbmNvcnJlY3QgaWYgbGV2ZWwgPCAxIjsKKyAgfQorICB2YXIgd2lkdGggPSAzMjsKKyAgdmFy
IGhlaWdodCA9IDE2OworICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5F
QVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgbGV2ZWwsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICBnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIGxldmVsKTsKKyAgc2hvdWxkQmUoImdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfQkFTRV9MRVZFTCwgbGV2ZWwpOworICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTZXR1cCBmcmFtZWJ1ZmZlciB3
aXRoIHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQuIik7CisKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlKTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgZmJvIGNvbXBsZXRlbmVzcyB3aGVuIHVzaW5nIG5vbiBsZXZlbCAwIHRleHR1cmUgaW1hZ2Vz
Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Citz
aG91bGRCZU5vbk51bGwoImdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVuZGVmaW5l
ZCwgMikiKTsKKwordGVzdEZyYW1lYnVmZmVyVGV4dHVyZVdpdGhOb25aZXJvQmFzZUxldmVsKDEp
OworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci11bnN1
cHBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9mcmFtZWJ1ZmZlci11bnN1cHBvcnRlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE3ODA2NTBlZDY1ODA4NThhZWRlNzI5ZjJhZGE2NzY1NjhlNDQ4NmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZyYW1lYnVmZmVyLXVuc3VwcG9ydGVkLmh0bWwKQEAg
LTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEIFRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj4g
PC9jYW52YXM+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2w7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOworCitmdW5jdGlvbiBjaGVja0ZyYW1lYnVmZmVyKGV4cGVjdGVkKSB7CisgICAgdmFy
IGFjdHVhbCA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAg
IGlmIChleHBlY3RlZC5pbmRleE9mKGFjdHVhbCkgPCAwKSB7CisgICAgICAgIHZhciBtc2cgPSAi
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBleHBlY3RzIFsiOworICAgICAgICBmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDwgZXhwZWN0ZWQubGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAgICBt
c2cgKz0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBleHBlY3RlZFtpbmRleF0pOworICAgICAgICAg
ICAgaWYgKGluZGV4ICsgMSA8IGV4cGVjdGVkLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBtc2cg
Kz0gIiwgIjsKKyAgICAgICAgfQorICAgICAgICBtc2cgKz0gIl0sIHdhcyAiICsgd3R1LmdsRW51
bVRvU3RyaW5nKGdsLCBhY3R1YWwpOworICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdmFyIG1zZyA9ICJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIGdvdCAiICsg
d3R1LmdsRW51bVRvU3RyaW5nKGdsLCBhY3R1YWwpICsKKyAgICAgICAgICAgICAgICAgICIgYXMg
ZXhwZWN0ZWQiOworICAgICAgICB0ZXN0UGFzc2VkKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0SW1hZ2VBdHRhY2hlZFR3b1BvaW50cygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIkNoZWNraW5nIGFuIGltYWdlIGlzIGF0dGFjaGVkIHRvIG1vcmUgdGhhbiBvbmUgY29sb3Ig
YXR0YWNobWVudCBpbiBhIGZyYW1lYnVmZmVyLiIpOworCisgICAgdmFyIHRleDEgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgdmFyIHRleDIgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgdmFy
IGZiID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgxKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsCisgICAgICAg
ICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGxldmVsCisgICAgICAgICAgICAgICAgICBnbC5SR0JBLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAxLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpZHRoCisgICAgICAgICAg
ICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhl
aWdodAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBib3JkZXIKKyAgICAgICAgICAgICAgICAgIGdsLlJHQkEsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0CisgICAgICAgICAgICAgICAgICBn
bC5VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGUKKyAgICAg
ICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KDQpKTsgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZGF0YQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDIpOworICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoNCkpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGV4dHVyZSBjcmVhdGlvbiBzaG91bGQgc3VjY2VlZC4i
KTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV8yRCwgdGV4MSwgMCk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEVdKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDEsIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOwor
ICAgIGNoZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQy
LCBnbC5URVhUVVJFXzJELCB0ZXgxLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFN
RUJVRkZFUl9VTlNVUFBPUlRFRF0pOworCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBudWxsKTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7CisgICAgZmIgPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmIpOworICAgIHZhciB0ZXhDdWJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmUpOworICAgIGZvciAodmFy
IHRhcmdldCA9IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsgdGFyZ2V0IDwgZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgNjsgdGFyZ2V0KyspIHsKKyAgICAgIGdsLnRleElt
YWdlMkQodGFyZ2V0LCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBuZXcgVWludDhBcnJheSg0KSk7CisgICAgfQorICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCB0ZXhDdWJlLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5G
UkFNRUJVRkZFUl9DT01QTEVURV0pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMSwgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9ZLCB0ZXhDdWJlLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURV0pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMiwgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCB0
ZXhDdWJlLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9VTlNVUFBP
UlRFRF0pOworCisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZiKTsKKyAgICBmYiA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7Cisg
ICAgdmFyIHRleDNkID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleDNkKTsKKyAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsCisg
ICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGxldmVsCisgICAgICAgICAgICAgICAgICBnbC5SR0JBLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAy
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpZHRoCisgICAg
ICAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGhlaWdodAorICAgICAgICAgICAgICAgICAgMiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkZXB0aAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3JkZXIKKyAgICAgICAgICAgICAg
ICAgIGdsLlJHQkEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0
CisgICAgICAgICAgICAgICAgICBnbC5VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHR5cGUKKyAgICAgICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KDQgKiAyICog
MiAqIDIpKTsgICAgICAgICAgICAgLy8gZGF0YQorICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4M2QsIDAsIDApOwor
ICAgIGNoZWNrRnJhbWVidWZmZXIoW2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFXSk7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1F
TlQxLCB0ZXgzZCwgMCwgMSk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZGRVJf
Q09NUExFVEVdKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDIsIHRleDNkLCAwLCAwKTsKKyAgICBjaGVja0ZyYW1lYnVm
ZmVyKFtnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF0pOworCisgICAgLy8gQ2xlYW4gdXAKKyAg
ICBnbC5kZWxldGVUZXh0dXJlKHRleDEpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4Mik7Cisg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhDdWJlKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleDNk
KTsKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVELiIpOworCitzaG91bGRCZU5vbk51bGwoImds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgMikiKTsKKwordGVz
dEltYWdlQXR0YWNoZWRUd29Qb2ludHMoKTsKKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVu
ZGVyaW5nL2ZzLWNvbG9yLXR5cGUtbWlzbWF0Y2gtY29sb3ItYnVmZmVyLXR5cGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9y
ZW5kZXJpbmcvZnMtY29sb3ItdHlwZS1taXNtYXRjaC1jb2xvci1idWZmZXItdHlwZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM2ZjVmNTBhNzJlNGM3NTQwNjQ3NDQ2YmMzYjNhNTAwNmI1MGI0NTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2ZzLWNvbG9yLXR5cGUtbWlzbWF0Y2gtY29sb3ItYnVm
ZmVyLXR5cGUuaHRtbApAQCAtMCwwICsxLDE2OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGhlIENvbG9yIFR5cGVzIG9mIEZyYWdtZW50
IFNoYWRlcidzIE91dHB1dHMgU2hvdWxkIE1hdGNoIFRoZSBEYXRhIFR5cGVzIG9mIENvbG9yIEJ1
ZmZlcnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSI4IiBoZWlnaHQ9IjgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIGhpZ2hwIHZlYzQgYVBvc2l0aW9u
Owordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworfQorPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2
ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBvQ29sb3I7
Cit2b2lkIG1haW4oKSB7CisgICAgb0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAwLjApOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXJNUlQiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQg
dmVjNCBvQ29sb3JbMl07Cit2b2lkIG1haW4oKSB7CisgICAgb0NvbG9yWzBdID0gdmVjNCgxLjAs
IDAuMCwgMC4wLCAwLjApOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXJSZWFs
TVJUIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lv
biBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgb0NvbG9yWzJdOwordm9pZCBtYWluKCkgeworICAg
IG9Db2xvclswXSA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICBvQ29sb3JbMV0gPSB2
ZWM0KDAuMCwgMS4wLCAwLjAsIDAuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBjb2xvciB0eXBlcyBvZiBmcmFnbWVudCBzaGFkZXIncyBv
dXRwdXRzIHNob3VsZCBtYXRjaCBjb2xvciBidWZmZXJzJyB0eXBlcy4iKTsKKwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK3ZhciB3aWR0
aCA9IDg7Cit2YXIgaGVpZ2h0ID0gODsKK3ZhciB0ZXgwOwordmFyIHRleDE7Cit2YXIgcmIwOwor
dmFyIHJiMTsKK3ZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwordmFyIHByb2dyYW0w
OwordmFyIHByb2dyYW0xOwordmFyIHByb2dyYW0yOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZh
aWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0
UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgaW5pdCgpOworCisgICAgLy8g
Q09MT1JfQVRUQUNITUVOVDAgaXMgZml4ZWQtcG9pbnQgZGF0YSwgd2hpY2ggY2FuIGJlIGNvbnZl
cnRlZCB0byBmbG9hdC4KKyAgICAvLyBDT0xPUl9BVFRBQ0hNRU5UMSBpcyBpbnRlZ2VyIGRhdGEu
IFRoZSBmcmFnbWVudCBvdXRwdXRzIGFyZSBhbGwgZmxvYXQuCisgICAgYWxsb2NhdGVfdGV4dHVy
ZXMoKTsKKyAgICBjaGVja190eXBlX21hdGNoKCk7CisgICAgYWxsb2NhdGVfcmVuZGVyYnVmZmVy
cygpOworICAgIGNoZWNrX3R5cGVfbWF0Y2goKTsKK30KKworZnVuY3Rpb24gY2hlY2tfdHlwZV9t
YXRjaCgpIHsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0wKTsKKyAgICByZW5kZXJpbmcoW2ds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5OT05FXSwgZ2wuTk9fRVJST1IpOworICAgIHJlbmRlcmlu
ZyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworCisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtMSk7CisgICAgcmVuZGVy
aW5nKFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuTk9ORV0sIGdsLk5PX0VSUk9SKTsKKyAgICBy
ZW5kZXJpbmcoW2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMV0sIGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbTIpOworICAg
IHJlbmRlcmluZyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLk5PTkVdLCBnbC5OT19FUlJPUik7
CisgICAgcmVuZGVyaW5nKFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuQ09MT1JfQVRUQUNITUVO
VDFdLCBnbC5JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7CisgICAg
cHJvZ3JhbTAgPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBb
J2FQb3NpdGlvbiddLCBbMF0pOworICAgIHByb2dyYW0xID0gd3R1LnNldHVwUHJvZ3JhbShnbCwg
Wyd2c2hhZGVyJywgJ2ZzaGFkZXJNUlQnXSwgWydhUG9zaXRpb24nXSwgWzBdKTsKKyAgICBwcm9n
cmFtMiA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyUmVhbE1SVCdd
LCBbJ2FQb3NpdGlvbiddLCBbMF0pOworICAgIGlmICghcHJvZ3JhbTAgfHwgIXByb2dyYW0xIHx8
ICFwcm9ncmFtMikgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gc2V0IHVwIHByb2dy
YW0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJTdWNjZWVkIHRv
IHNldCB1cCBwcm9ncmFtIik7CisKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7Cisg
ICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK2Z1bmN0aW9uIGFsbG9j
YXRlX3RleHR1cmVzKCkgeworICAgIHRleDAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgdGV4
MSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleDAsIHdp
ZHRoLCBoZWlnaHQsIFsweGZmLCAweDAsIDB4MCwgMHhmZl0sIDAsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUsIGdsLlJHQkEpOworICAgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4MSwgd2lkdGgs
IGhlaWdodCwgWzB4MCwgMHhmZiwgMHgwLCAweGZmXSwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5V
TlNJR05FRF9CWVRFLCBnbC5SR0JBOFVJKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleDAsIDApOworICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMSwgZ2wuVEVYVFVSRV8yRCwgdGV4MSwgMCk7Cit9CisKK2Z1bmN0aW9uIGFsbG9jYXRlX3Jl
bmRlcmJ1ZmZlcnMoKSB7CisgICAgcmIwID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAg
Z2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJiMCk7CisgICAgZ2wucmVuZGVy
YnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICByYjEgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmIxKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQThVSSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJC
VUZGRVIsIHJiMCk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQxLCBnbC5SRU5ERVJCVUZGRVIsIHJiMSk7Cit9CisKK2Z1
bmN0aW9uIHJlbmRlcmluZyhkcmF3X2J1ZmZlcnMsIGVycm9yKSB7CisgICAgZ2wuZHJhd0J1ZmZl
cnMoZHJhd19idWZmZXJzKTsKKworICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LkZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZXJyb3IsICJJZiBjb2xvciBidWZmZXJzJyB0eXBlIG1pc21hdGNoIHRoZSB0eXBlIG9mIGZy
YWdtZW50IHNoYWRlcidzIG91dHB1dHMsIGdlbmVhdGUgSU5WQUxJRF9PUEVSQVRJT04uIE90aGVy
d2lzZSwgaXQgc2hvdWxkIGJlIE5PX0VSUk9SIik7Cit9CisKK2dsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIG51bGwpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51
bGwpOworZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKK2dsLnVzZVBy
b2dyYW0obnVsbCk7CitnbC5kZWxldGVUZXh0dXJlKHRleDApOworZ2wuZGVsZXRlVGV4dHVyZSh0
ZXgxKTsKK2dsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYjApOworZ2wuZGVsZXRlUmVuZGVyYnVmZmVy
KHJiMSk7CitnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworZ2wuZGVsZXRlUHJvZ3JhbShwcm9n
cmFtMCk7CitnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0xKTsKK2dsLmRlbGV0ZVByb2dyYW0ocHJv
Z3JhbTIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvaW5zdGFuY2VkLWFycmF5cy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3JlbmRlcmluZy9pbnN0YW5jZWQtYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwMDllYTViMzJm
M2JmYjU4YWMyOTIyMjc0YzA4NTEwY2ZiYzllNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJp
bmcvaW5zdGFuY2VkLWFycmF5cy5odG1sCkBAIC0wLDAgKzEsMjcxIEBACivvu788IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBJbnN0YW5j
ZWQgQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lk
dGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0aW5nIGluc3RhbmNlZCBkcmF3cyAtLT4KKzxzY3Jp
cHQgaWQ9Im91dHB1dFZlcnRleFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0
cmlidXRlIHZlYzQgYVBvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgYU9mZnNldDsKK2F0dHJpYnV0
ZSB2ZWM0IGFDb2xvcjsKK3ZhcnlpbmcgdmVjNCB2Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAg
dkNvbG9yID0gYUNvbG9yOworICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uICsgdmVjNChhT2Zm
c2V0LCAwLjAsIDAuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0ib3V0cHV0RnJhZ21l
bnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Cit2YXJ5aW5nIHZlYzQgdkNvbG9yOwordm9pZCBtYWluKCkgeworICAgIGdsX0ZyYWdD
b2xvciA9IHZDb2xvcjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBJbnN0
YW5jZWQgQXJyYXlzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7CisKK2lmICghZ2wpIHsK
KyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ug
eworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBydW5EaXZp
c29yVGVzdCgpOworICAgIHJ1bk91dHB1dFRlc3RzKCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKK2Z1
bmN0aW9uIHJ1bkRpdmlzb3JUZXN0KCkgeworICAgIGRlYnVnKCJUZXN0aW5nIFZFUlRFWF9BVFRS
SUJfQVJSQVlfRElWSVNPUiIpOworCisgICAgc2hvdWxkQmUoImdsLlZFUlRFWF9BVFRSSUJfQVJS
QVlfRElWSVNPUiIsICIweDg4RkUiKTsKKworICAgIHZhciBtYXhfdmVydGV4X2F0dHJpYnMgPSBn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWF4X3ZlcnRleF9hdHRyaWJzOyArK2kpIHsKKyAgICAgICAgdmFyIHF1ZXJpZWRf
dmFsdWUgPSBnbC5nZXRWZXJ0ZXhBdHRyaWIoaSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJ
U09SKTsKKyAgICAgICAgaWYocXVlcmllZF92YWx1ZSA9PSAwKXsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlZlcnRleCBhdHRyaWJ1dGUgIiArIGkgKyAiIG11c3QgaGFzIGEgZGVmYXVsdCBkaXZp
c29yIG9mIDAiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNleworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiRGVmYXVsdCBkaXZpc29yIG9mIHZlcnRleCBhdHRyaWJ1dGUgIiArIGkgKyAiIHNob3Vs
ZCBiZTogMCwgcmV0dXJuZWQgdmFsdWUgd2FzOiAiICsgcXVlcmllZF92YWx1ZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKG1heF92ZXJ0ZXhfYXR0cmli
cywgMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInZl
cnRleEF0dHJpYkRpdmlzb3IgaW5kZXggc2V0IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBNQVhf
VkVSVEVYX0FUVFJJQlMgc2hvdWxkIGJlIGFuIGludmFsaWQgdmFsdWUiKTsKKworICAgIGdsLnZl
cnRleEF0dHJpYkRpdmlzb3IobWF4X3ZlcnRleF9hdHRyaWJzLTEsIDIpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmVydGV4QXR0cmliRGl2aXNvciBpbmRleCBz
ZXQgbGVzcyB0aGFuIE1BWF9WRVJURVhfQVRUUklCUyBzaG91bGQgc3VjY2VlZCIpOworCisgICAg
dmFyIHF1ZXJpZWRfdmFsdWUgPSBnbC5nZXRWZXJ0ZXhBdHRyaWIobWF4X3ZlcnRleF9hdHRyaWJz
LTEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUik7CisgICAgaWYocXVlcmllZF92YWx1
ZSA9PSAyKXsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2V0IHZhbHVlIG9mIFZFUlRFWF9BVFRSSUJf
QVJSQVlfRElWSVNPUiBtYXRjaGVzIGV4cGVjYXRpb24iKTsKKyAgICB9CisgICAgZWxzZXsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiU2V0IHZhbHVlIG9mIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNP
UiBzaG91bGQgYmU6IDIsIHJldHVybmVkIHZhbHVlIHdhczogIiArIHF1ZXJpZWRfdmFsdWUpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gcnVuT3V0cHV0VGVzdHMoKSB7CisgICAgdmFyIGUgPSAyOyAv
LyBBbW91bnQgb2YgdmFyaWFuY2UgdG8gYWxsb3cgaW4gcmVzdWx0IHBpeGVscyAtIG1heSBuZWVk
IHRvIGJlIHR3ZWFrZWQgaGlnaGVyCisgICAgdmFyIGluc3RhbmNlQ291bnQgPSA0OworCisgICAg
ZGVidWcoIlRlc3RpbmcgdmFyaW91cyBkcmF3cyBmb3IgdmFsaWQgYnVpbHQtaW4gZnVuY3Rpb24g
YmVoYXZpb3IiKTsKKworICAgIGNhbnZhcy53aWR0aCA9IDUwOyBjYW52YXMuaGVpZ2h0ID0gNTA7
CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAg
ICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworCisgICAgdmFyIHBvc2l0aW9uTG9jID0gMDsK
KyAgICB2YXIgb2Zmc2V0TG9jID0gMjsKKyAgICB2YXIgY29sb3JMb2MgPSAzOworICAgIHZhciBw
cm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJvdXRwdXRWZXJ0ZXhTaGFkZXIiLCAib3V0
cHV0RnJhZ21lbnRTaGFkZXIiXSwgWydhUG9zaXRpb24nLCAnYU9mZnNldCcsICdhQ29sb3InXSwg
W3Bvc2l0aW9uTG9jLCBvZmZzZXRMb2MsIGNvbG9yTG9jXSk7CisKKyAgICB2YXIgb2Zmc2V0cyA9
IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAtMS4wLCAgMS4wLAorICAgICAgICAgMS4wLCAg
MS4wLAorICAgICAgICAtMS4wLCAtMS4wLAorICAgICAgICAgMS4wLCAtMS4wLAorICAgIF0pOwor
ICAgIHZhciBvZmZzZXRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0QnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgb2Zmc2V0cywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KG9mZnNldExvYyk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihv
ZmZzZXRMb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgZ2wudmVydGV4QXR0cmli
RGl2aXNvcihvZmZzZXRMb2MsIDEpOworCisgICAgdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJy
YXkoWworICAgICAgICAxLjAsIDAuMCwgMC4wLCAxLjAsIC8vIFJlZAorICAgICAgICAwLjAsIDEu
MCwgMC4wLCAxLjAsIC8vIEdyZWVuCisgICAgICAgIDAuMCwgMC4wLCAxLjAsIDEuMCwgLy8gQmx1
ZQorICAgICAgICAxLjAsIDEuMCwgMC4wLCAxLjAsIC8vIFllbGxvdworICAgICAgICAvLyBleHRy
YSBkYXRhIHdoZW4gY29sb3JMb2MgZGl2aXNvciBpcyBzZXQgYmFjayB0byAwCisgICAgICAgIDEu
MCwgMS4wLCAwLjAsIDEuMCwgLy8gWWVsbG93CisgICAgICAgIDEuMCwgMS4wLCAwLjAsIDEuMCwg
Ly8gWWVsbG93CisgICAgXSk7CisgICAgdmFyIGNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGNvbG9yQnVmZmVyKTsKKyAg
ICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JzLCBnbC5TVEFUSUNfRFJBVyk7
CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2MpOworICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoY29sb3JMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAg
Z2wudmVydGV4QXR0cmliRGl2aXNvcihjb2xvckxvYywgMSk7CisKKyAgICAvLyBEcmF3IDE6IERy
YXcgTm9uLWluZGV4ZWQgaW5zdGFuY2VzCisgICAgZGVidWcoIlRlc3RpbmcgZHJhd0FycmF5c0lu
c3RhbmNlZCIpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHd0dS5z
ZXR1cFVuaXRRdWFkKGdsLCAwKTsKKworICAgIC8vIFRlc3QgZHJhd0FycmF5c0luc3RhbmNlZCBl
cnJvciBjb25kaXRpb25zCisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMs
IDAsIDYsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIGNh
bnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgWzI1NSwgMCwg
MCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgY2FudmFzLndpZHRoLzIsIGNh
bnZhcy5oZWlnaHQvMiwgY2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMiwgWzAsIDI1NSwg
MCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgY2FudmFzLndpZHRo
LzIsIGNhbnZhcy5oZWlnaHQvMiwgWzAsIDAsIDI1NSwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgY2FudmFzLndpZHRoLzIsIDAsIGNhbnZhcy53aWR0aC8yLCBjYW52YXMuaGVp
Z2h0LzIsIFsyNTUsIDI1NSwgMCwgMjU1XSk7CisKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2Vk
KGdsLlRSSUFOR0xFUywgMCwgNiwgLTEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUsICJkcmF3QXJyYXlzSW5zdGFuY2VkIGNhbm5vdCBoYXZlIGEgcHJpbWNv
dW50IGxlc3MgdGhhbiAwIik7CisKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFO
R0xFUywgMCwgLTEsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfVkFMVUUsICJkcmF3QXJyYXlzSW5zdGFuY2VkIGNhbm5vdCBoYXZlIGEgY291
bnQgbGVzcyB0aGFuIDAiKTsKKworICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IocG9zaXRpb25M
b2MsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdB
cnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkl0J3MgYWxsb3dlZCBmb3IgYWxs
IHZlcnRleCBhdHRyaWJ1dGVzIHRvIGhhdmUgbm9uLXplcm8gZGl2aXNvcnMgd2hlbiBjYWxsaW5n
IGRyYXdBcnJheXNJbnN0YW5jZWQiKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJJdCdzIGFs
bG93ZWQgZm9yIGFsbCB2ZXJ0ZXggYXR0cmlidXRlcyB0byBoYXZlIG5vbi16ZXJvIGRpdmlzb3Jz
IHdoZW4gY2FsbGluZyBkcmF3QXJyYXlzIik7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwg
MCwgMCwgMF0sICJOb3RoaW5nIHNob3VsZCBiZSBkcmF3biBvbiB0aGUgZnJhbWVidWZmZXIgd2hl
biBhbGwgYXR0cmlidXRlcyBoYXZlIG5vbi16ZXJvIGRpdmlzb3JzIChub3QgZW5vdWdoIHZlcnRp
Y2VzIHBlciBpbnN0YW5jZSB0byBmb3JtIGEgdHJpYW5nbGUpIik7CisgICAgZ2wudmVydGV4QXR0
cmliRGl2aXNvcihwb3NpdGlvbkxvYywgMCk7CisKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2Vk
KGdsLlBPSU5UUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJyYXlzSW5zdGFuY2VkIHdpdGggUE9JTlRTIHNob3Vs
ZCBzdWNjZWVkIik7CisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5MSU5FUywgMCwgNiwg
aW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJkcmF3QXJyYXlzSW5zdGFuY2VkIHdpdGggTElORVMgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICBn
bC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLkxJTkVfTElTVCwgMCwgNiwgaW5zdGFuY2VDb3VudCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJyYXlzSW5z
dGFuY2VkIHdpdGggTElORV9MSVNUIHNob3VsZCByZXR1cm4gc3VjY2VlZCIpOworICAgIGdsLmRy
YXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJX0xJU1QsIDAsIDYsIGluc3RhbmNlQ291bnQpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0FycmF5c0luc3RhbmNl
ZCB3aXRoIFRSSV9MSVNUIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBnbC5kcmF3QXJyYXlzSW5z
dGFuY2VkKGRlc2t0b3BHTFsnUVVBRF9TVFJJUCddLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJkcmF3QXJyYXlzSW5z
dGFuY2VkIHdpdGggUVVBRF9TVFJJUCBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5VTSIpOworICAg
IGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZGVza3RvcEdMWydRVUFEUyddLCAwLCA2LCBpbnN0YW5j
ZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJk
cmF3QXJyYXlzSW5zdGFuY2VkIHdpdGggUVVBRFMgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0i
KTsKKyAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGRlc2t0b3BHTFsnUE9MWUdPTiddLCAwLCA2
LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X0VOVU0sICJkcmF3QXJyYXlzSW5zdGFuY2VkIHdpdGggUE9MWUdPTiBzaG91bGQgcmV0dXJuIElO
VkFMSURfRU5VTSIpOworCisgICAgZGVidWcoIlRlc3RpbmcgZHJhd0FycmF5c0luc3RhbmNlZCB3
aXRoIHBhcmFtICdmaXJzdCcgPiAwIik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCk7CisgICAgd3R1LnNldHVwUXVhZChnbCwgeworICAgICAgICBwb3NpdGlvbkxvY2F0aW9uOiAw
LAorICAgICAgICBzY2FsZTogMC41CisgICAgfSk7CisgICAgdmFyIG9mZnNldHNIYWxmID0gbmV3
IEZsb2F0MzJBcnJheShbCisgICAgICAgIC0wLjUsICAwLjUsCisgICAgICAgICAwLjUsICAwLjUs
CisgICAgICAgIC0wLjUsIC0wLjUsCisgICAgICAgICAwLjUsIC0wLjUKKyAgICBdKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0QnVmZmVyKTsKKyAgICBnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0c0hhbGYsIGdsLlNUQVRJQ19EUkFXKTsKKwor
ICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAzLCAzLCBpbnN0YW5jZUNv
dW50KTsKKyAgICB2YXIgdyA9IE1hdGguZmxvb3IoMC4yNSpjYW52YXMud2lkdGgpLAorICAgICAg
ICBoID0gTWF0aC5mbG9vcigwLjI1KmNhbnZhcy5oZWlnaHQpOworICAgIHd0dS5jaGVja0NhbnZh
c1JlY3QoZ2wsIE1hdGguY2VpbCgwLjI1KmNhbnZhcy53aWR0aCksIDAuNSpjYW52YXMuaGVpZ2h0
LCB3LCBoLCBbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBN
YXRoLmNlaWwoMC43NSpjYW52YXMud2lkdGgpLCAwLjUqY2FudmFzLmhlaWdodCwgdywgaCwgWzAs
IDI1NSwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgTWF0aC5jZWlsKDAu
MjUqY2FudmFzLndpZHRoKSwgMCwgdywgaCwgWzAsIDAsIDI1NSwgMjU1XSk7CisgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgTWF0aC5jZWlsKDAuNzUqY2FudmFzLndpZHRoKSwgMCwgdywgaCwg
WzI1NSwgMjU1LCAwLCAyNTVdKTsKKworICAgIGRlYnVnKCJUZXN0aW5nIGRyYXdBcnJheXNJbnN0
YW5jZWQgd2l0aCBhdHRyaWJ1dGVzICdkaXZpc29yJyByZXNldCB0byAwIik7CisgICAgZGVidWco
IkNvcnJlY3QgcmVuZGVyaW5nIG91dHB1dDogNCB5ZWxsb3cgdHJpYW5nbGVzIik7CisgICAgZGVi
dWcoIlBvc3NpYmxlIGluY29ycmVjdCByZW5kZXJpbmcgb3V0cHV0OiBtaXNzaW5nIHRyaWFuZ2xl
cywgb3IgdHJpYW5nbGVzIHdpdGggZGlmZmVyZW50IGNvbG9yIGF0IGVhY2ggdmVydGV4Iik7Cisg
ICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcihjb2xvckxvYywgMCk7CisgICAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdM
RVMsIDMsIDMsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIE1h
dGguY2VpbCgwLjI1KmNhbnZhcy53aWR0aCksIDAuNSpjYW52YXMuaGVpZ2h0LCB3LCBoLCBbMjU1
LCAyNTUsIDAsIDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIE1hdGguY2VpbCgw
Ljc1KmNhbnZhcy53aWR0aCksIDAuNSpjYW52YXMuaGVpZ2h0LCB3LCBoLCBbMjU1LCAyNTUsIDAs
IDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIE1hdGguY2VpbCgwLjI1KmNhbnZh
cy53aWR0aCksIDAsIHcsIGgsIFsyNTUsIDI1NSwgMCwgMjU1XSk7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzUmVjdChnbCwgTWF0aC5jZWlsKDAuNzUqY2FudmFzLndpZHRoKSwgMCwgdywgaCwgWzI1NSwg
MjU1LCAwLCAyNTVdKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbG9yTG9jLCAxKTsK
KworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgb2Zmc2V0QnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgb2Zmc2V0cywgZ2wuU1RBVElDX0RSQVcpOworCisgICAgLy8gRHJhdyAyOiBEcmF3IGlu
ZGV4ZWQgaW5zdGFuY2VzCisgICAgZGVidWcoIlRlc3RpbmcgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
Iik7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgd3R1LnNldHVwSW5k
ZXhlZFF1YWQoZ2wsIDEsIDApOworICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklB
TkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCBjYW52YXMuaGVpZ2h0LzIsIGNhbnZhcy53aWR0aC8yLCBj
YW52YXMuaGVpZ2h0LzIsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIGNhbnZhcy53aWR0aC8yLCBjYW52YXMuaGVpZ2h0LzIsIGNhbnZhcy53aWR0aC8yLCBj
YW52YXMuaGVpZ2h0LzIsIFswLCAyNTUsIDAsIDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1Jl
Y3QoZ2wsIDAsIDAsIGNhbnZhcy53aWR0aC8yLCBjYW52YXMuaGVpZ2h0LzIsIFswLCAwLCAyNTUs
IDI1NV0pOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGNhbnZhcy53aWR0aC8yLCAwLCBj
YW52YXMud2lkdGgvMiwgY2FudmFzLmhlaWdodC8yLCBbMjU1LCAyNTUsIDAsIDI1NV0pOworCisg
ICAgLy8gVGVzdCBkcmF3RWxlbWVudHNJbnN0YW5jZWQgZXJyb3IgY29uZGl0aW9ucworICAgIGds
LmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwLCAtMSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
ImRyYXdFbGVtZW50c0luc3RhbmNlZCBjYW5ub3QgaGF2ZSBhIHByaW1jb3VudCBsZXNzIHRoYW4g
MCIpOworCisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgLTEsIGds
LlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIGNhbm5vdCBo
YXZlIGEgY291bnQgbGVzcyB0aGFuIDAiKTsKKworICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3Io
cG9zaXRpb25Mb2MsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NI
T1JULCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgIkl0J3MgYWxsb3dlZCBmb3IgYWxsIHZlcnRleCBhdHRyaWJ1dGVzIHRvIGhhdmUg
bm9uLXplcm8gZGl2aXNvcnMgd2hlbiBjYWxsaW5nIGRyYXdFbGVtZW50c0luc3RhbmNlZCIpOwor
ICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAw
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkl0J3MgYWxsb3dl
ZCBmb3IgYWxsIHZlcnRleCBhdHRyaWJ1dGVzIHRvIGhhdmUgbm9uLXplcm8gZGl2aXNvcnMgd2hl
biBjYWxsaW5nIGRyYXdFbGVtZW50cyIpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDAs
IDAsIDBdLCAiTm90aGluZyBzaG91bGQgYmUgZHJhd24gb24gdGhlIGZyYW1lYnVmZmVyIHdoZW4g
YWxsIGF0dHJpYnV0ZXMgaGF2ZSBub24temVybyBkaXZpc29ycyAobm90IGVub3VnaCB2ZXJ0aWNl
cyBwZXIgaW5zdGFuY2UgdG8gZm9ybSBhIHRyaWFuZ2xlKSIpOworICAgIGdsLnZlcnRleEF0dHJp
YkRpdmlzb3IocG9zaXRpb25Mb2MsIDApOworCisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCwgaW5zdGFuY2VDb3VudCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3RWxlbWVudHNJbnN0
YW5jZWQgd2l0aCBVTlNJR05FRF9CWVRFIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBnbC5kcmF3
RWxlbWVudHNJbnN0YW5jZWQoZ2wuUE9JTlRTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5z
dGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJk
cmF3RWxlbWVudHNJbnN0YW5jZWQgd2l0aCBQT0lOVFMgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICBn
bC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuTElORVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAw
LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImRyYXdFbGVtZW50c0luc3RhbmNlZCB3aXRoIExJTkVTIHNob3VsZCBzdWNjZWVkIik7Cisg
ICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLkxJTkVfTElTVCwgNiwgZ2wuVU5TSUdORURf
U0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIHdpdGggTElORV9MSVNUIHNob3VsZCBy
ZXR1cm4gc3VjY2VlZCIpOworICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklfTElT
VCwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIHdpdGgg
VFJJX0xJU1Qgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNl
ZChkZXNrdG9wR0xbJ1FVQURfU1RSSVAnXSwgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3Rh
bmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwg
ImRyYXdFbGVtZW50c0luc3RhbmNlZCB3aXRoIFFVQURfU1RSSVAgc2hvdWxkIHJldHVybiBJTlZB
TElEX0VOVU0iKTsKKyAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZGVza3RvcEdMWydRVUFE
UyddLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
IHdpdGggUVVBRFMgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0iKTsKKyAgICBnbC5kcmF3RWxl
bWVudHNJbnN0YW5jZWQoZGVza3RvcEdMWydQT0xZR09OJ10sIDYsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwLCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX0VOVU0sICJkcmF3RWxlbWVudHNJbnN0YW5jZWQgd2l0aCBQT0xZR09OIHNob3VsZCByZXR1
cm4gSU5WQUxJRF9FTlVNIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmlu
Zy9pbnN0YW5jZWQtcmVuZGVyaW5nLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9pbnN0YW5jZWQtcmVu
ZGVyaW5nLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZjI1MDk2ZDUxY2JiNmY3NTc0MzRkYjlmZmY3
Nzg5MjMwYWNkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2luc3RhbmNlZC1yZW5k
ZXJpbmctYnVnLmh0bWwKQEAgLTAsMCArMSwyNTQgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEluc3RhbmNlZCBBcnJheXMg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogMTI4cHg7
IGhlaWdodDogMTI4cHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgaWQ9Im91dHB1dFZlcnRleFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2
ZXJzaW9uIDMwMCBlcworaW4gaGlnaHAgdmVjMiBhUG9zaXRpb247CitpbiBoaWdocCBmbG9hdCBh
T2Zmc2V0OworaW4gaGlnaHAgZmxvYXQgYUNvbG9yOworb3V0IG1lZGl1bXAgZmxvYXQgdkNvbG9y
Owordm9pZCBtYWluKCkgeworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDAuMCwg
MS4wKSArIHZlYzQoYU9mZnNldCwgMC4wLCAwLjAsIDAuMCk7CisgICAgdkNvbG9yID0gYUNvbG9y
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9Im91dHB1dEZyYWdtZW50U2hhZGVyIiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK2xheW91dChsb2NhdGlvbiA9
IDApIG91dCBtZWRpdW1wIHZlYzQgb0NvbG9yOworaW4gbWVkaXVtcCBmbG9hdCB2Q29sb3I7Cit2
b2lkIG1haW4oKSB7CisgICAgb0NvbG9yID0gdmVjNCh2Q29sb3IsIDAuMCwgMC4wLCAxLjApOwor
fQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHZlcmlmaWVzIGEgYnVnIHJlbGF0ZWQgd2l0aCBpbnN0YW5jZWQgcmVuZGVyaW5nIG9u
IE1hYyBBTUQuIik7CitkZWJ1ZygiaHR0cDovL2NyYnVnLmNvbS82NDUyOTgiKTsKKworZGVidWco
IiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMsIG51bGwsIDIpOworCisvLyBUaGUgc2Vjb25kIGFuZCBmb3VydGggdGVzdCBjYXNlcyBm
YWlsIC0gaXQgc2VlbXMgaWYgdGhlIGRpdmlzb3IgZG9lc24ndCBjaGFuZ2UsCisvLyB0aGUgbmV4
dCBpbnN0YW5jZWQgZHJhdyBjYWxsIGJlaGF2ZXMgaW5jb3JyZWN0bHkuCisvLyBBbHNvIG5vdGUg
dGhhdCBpZiB3ZSBkb24ndCBwZXJmb3JtIGEgcmVhZFBpeGVscyAoaW4gd3R1LmNoZWNrQ2FudmFz
UmVjdCksIHRoZSBidWcKKy8vIGlzbid0IHRyaWdnZXJlZC4KK3ZhciB0ZXN0Q2FzZXMgPSBbCisg
ICAgeyBpbnN0YW5jZUNvdW50OiA4LCBkaXZpc29yOiA0IH0sCisgICAgeyBpbnN0YW5jZUNvdW50
OiA2LCBkaXZpc29yOiA0IH0sCisgICAgeyBpbnN0YW5jZUNvdW50OiA2LCBkaXZpc29yOiAzIH0s
CisgICAgeyBpbnN0YW5jZUNvdW50OiA4LCBkaXZpc29yOiAzIH0sCitdOworCitpZiAoIWdsKSB7
CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNl
IHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgcnVuRHJh
d0FycmF5c1Rlc3QodGVzdENhc2VzW2lpXS5pbnN0YW5jZUNvdW50LCB0ZXN0Q2FzZXNbaWldLmRp
dmlzb3IpOworICAgIH0KKworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVu
Z3RoOyArK2lpKSB7CisgICAgICAgIHJ1bkRyYXdFbGVtZW50c1Rlc3QodGVzdENhc2VzW2lpXS5p
bnN0YW5jZUNvdW50LCB0ZXN0Q2FzZXNbaWldLmRpdmlzb3IpOworICAgIH0KK30KKworZnVuY3Rp
b24gcnVuRHJhd0FycmF5c1Rlc3QoaW5zdGFuY2VDb3VudCwgZGl2aXNvcikgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBkcmF3QXJyYXlzSW5zdGFuY2VkOiBpbnN0YW5jZUNv
dW50ID0gIiArIGluc3RhbmNlQ291bnQgKyAiLCBkaXZpc29yID0gIiArIGRpdmlzb3IpOworCisg
ICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAg
IHZhciB2YW8gPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgIGdsLmJpbmRWZXJ0ZXhBcnJh
eSh2YW8pOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbIm91dHB1
dFZlcnRleFNoYWRlciIsICJvdXRwdXRGcmFnbWVudFNoYWRlciJdKTsKKyAgICB2YXIgcG9zaXRp
b25Mb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYVBvc2l0aW9uIik7CisgICAg
dmFyIG9mZnNldExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhT2Zmc2V0Iik7
CisgICAgdmFyIGNvbG9yTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFDb2xv
ciIpOworICAgIGlmICghcHJvZ3JhbSB8fCBwb3NpdGlvbkxvYyA8IDAgfHwgb2Zmc2V0TG9jIDwg
MCB8fCBjb2xvckxvYyA8IDApIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2V0IHVwIHByb2dyYW0g
ZmFpbGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdFBhc3NlZCgiU2V0IHVw
IHByb2dyYW0gc3VjY2VlZGVkIik7CisKKyAgICB2YXIgc2NhbGUgPSAxLjAgLyBpbnN0YW5jZUNv
dW50OworCisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOworICAg
IGdsLnZlcnRleEF0dHJpYkRpdmlzb3IocG9zaXRpb25Mb2MsIDApOworICAgIHZhciBwb3NpdGlv
bnMgPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgIDEuMCAqIHNjYWxlLCAgMS4wLAorICAg
ICAgICAtMS4wICogc2NhbGUsICAxLjAsCisgICAgICAgIC0xLjAgKiBzY2FsZSwgLTEuMCwKKyAg
ICAgICAgIDEuMCAqIHNjYWxlLCAgMS4wLAorICAgICAgICAtMS4wICogc2NhbGUsIC0xLjAsCisg
ICAgICAgICAxLjAgKiBzY2FsZSwgLTEuMCwKKyAgICBdKTsKKyAgICB2YXIgcG9zaXRpb25CdWZm
ZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgcG9zaXRpb25CdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBw
b3NpdGlvbnMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBv
c2l0aW9uTG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgZ2wuZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkob2Zmc2V0TG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKG9m
ZnNldExvYywgMSk7CisgICAgdmFyIG9mZnNldHMgPSBuZXcgRmxvYXQzMkFycmF5KGluc3RhbmNl
Q291bnQpOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBpbnN0YW5jZUNvdW50OyArK2lpKSB7
CisgICAgICAgIG9mZnNldHNbaWldID0gc2NhbGUgKiAoMSAtIGluc3RhbmNlQ291bnQgKyBpaSAq
IDIpOworICAgIH0KKyAgICB2YXIgb2Zmc2V0QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldEJ1ZmZlcik7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldHMsIGdsLlNUQVRJQ19EUkFXKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldExvYywgMSwgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbG9yTG9jLCBkaXZpc29yKTsKKyAgICB2YXIgY29sb3JD
b3VudCA9IGluc3RhbmNlQ291bnQgLyBkaXZpc29yOworICAgIGlmICgoaW5zdGFuY2VDb3VudCAl
IGRpdmlzb3IpICE9IDApCisgICAgICAgIGNvbG9yQ291bnQrKzsKKyAgICB2YXIgY29sb3JzID0g
bmV3IEZsb2F0MzJBcnJheShjb2xvckNvdW50KTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
Y29sb3JDb3VudDsgKytpaSkgeworICAgICAgICBjb2xvcnNbaWldID0gMS4wIC8gY29sb3JDb3Vu
dCAqIChpaSArIDEpOworICAgIH0KKyAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JCdWZmZXIpOwor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMsIGdsLlNUQVRJQ19EUkFX
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jLCAxLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAs
IDYsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiZHJhd0FycmF5c0luc3RhbmNlZCBzaG91bGQgc3VjY2VlZCIpOworCisgICAgdmFyIGNv
bG9ySW5kZXggPSAtMTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgaW5zdGFuY2VDb3VudDsg
KytpaSkgeworICAgICAgICBpZiAoKGlpICUgZGl2aXNvcikgPT0gMCkKKyAgICAgICAgICAgIGNv
bG9ySW5kZXgrKzsKKyAgICAgICAgdmFyIHJlZkNvbG9yID0gWyBNYXRoLmZsb29yKGNvbG9yc1tj
b2xvckluZGV4XSAqIDI1NSksIDAsIDAsIDI1NSBdOworICAgICAgICB3dHUuY2hlY2tDYW52YXNS
ZWN0KGdsLCBNYXRoLmZsb29yKGNhbnZhcy53aWR0aCAvIGluc3RhbmNlQ291bnQgKiBpaSkgKyAx
LCAwLCAxLCBjYW52YXMuaGVpZ2h0LCByZWZDb2xvciwKKyAgICAgICAgICAgICJpbnN0YW5jZSAi
ICsgaWkgKyAiIHNob3VsZCBiZSAiICsgcmVmQ29sb3IsIDIpOworICAgIH0KKworICAgIGdsLmRl
bGV0ZUJ1ZmZlcihwb3NpdGlvbkJ1ZmZlcik7CisgICAgZ2wuZGVsZXRlQnVmZmVyKG9mZnNldEJ1
ZmZlcik7CisgICAgZ2wuZGVsZXRlQnVmZmVyKGNvbG9yQnVmZmVyKTsKKyAgICBnbC5kZWxldGVQ
cm9ncmFtKHByb2dyYW0pOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbyk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAgIGdsLnVzZVByb2dyYW0obnVs
bCk7CisgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiY2xlYW4gdXAgc2hvdWxkIHN1Y2NlZWQiKTsKK30KKworZnVu
Y3Rpb24gcnVuRHJhd0VsZW1lbnRzVGVzdChpbnN0YW5jZUNvdW50LCBkaXZpc29yKSB7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGRyYXdFbGVtZW50c0luc3RhbmNlZDogaW5z
dGFuY2VDb3VudCA9ICIgKyBpbnN0YW5jZUNvdW50ICsgIiwgZGl2aXNvciA9ICIgKyBkaXZpc29y
KTsKKworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7
CisKKyAgICB2YXIgdmFvID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICBnbC5iaW5kVmVy
dGV4QXJyYXkodmFvKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwg
WyJvdXRwdXRWZXJ0ZXhTaGFkZXIiLCAib3V0cHV0RnJhZ21lbnRTaGFkZXIiXSk7CisgICAgdmFy
IHBvc2l0aW9uTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFQb3NpdGlvbiIp
OworICAgIHZhciBvZmZzZXRMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYU9m
ZnNldCIpOworICAgIHZhciBjb2xvckxvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0s
ICJhQ29sb3IiKTsKKyAgICBpZiAoIXByb2dyYW0gfHwgcG9zaXRpb25Mb2MgPCAwIHx8IG9mZnNl
dExvYyA8IDAgfHwgY29sb3JMb2MgPCAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldCB1cCBw
cm9ncmFtIGZhaWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRlc3RQYXNzZWQo
IlNldCB1cCBwcm9ncmFtIHN1Y2NlZWRlZCIpOworCisgICAgdmFyIHNjYWxlID0gMS4wIC8gaW5z
dGFuY2VDb3VudDsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9j
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKHBvc2l0aW9uTG9jLCAwKTsKKyAgICB2YXIg
cG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgICAxLjAgKiBzY2FsZSwgIDEu
MCwKKyAgICAgICAgLTEuMCAqIHNjYWxlLCAgMS4wLAorICAgICAgICAtMS4wICogc2NhbGUsIC0x
LjAsCisgICAgICAgICAxLjAgKiBzY2FsZSwgLTEuMCwKKyAgICBdKTsKKyAgICB2YXIgcG9zaXRp
b25CdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZ
X0JVRkZFUiwgcG9zaXRpb25CdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBwb3NpdGlvbnMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgZ2wuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkob2Zmc2V0TG9jKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZp
c29yKG9mZnNldExvYywgMSk7CisgICAgdmFyIG9mZnNldHMgPSBuZXcgRmxvYXQzMkFycmF5KGlu
c3RhbmNlQ291bnQpOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBpbnN0YW5jZUNvdW50OyAr
K2lpKSB7CisgICAgICAgIG9mZnNldHNbaWldID0gc2NhbGUgKiAoMSAtIGluc3RhbmNlQ291bnQg
KyBpaSAqIDIpOworICAgIH0KKyAgICB2YXIgb2Zmc2V0QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG9mZnNldEJ1ZmZlcik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG9mZnNldHMsIGdsLlNUQVRJQ19EUkFX
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldExvYywgMSwgZ2wuRkxPQVQsIGZh
bHNlLCAwLCAwKTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jKTsK
KyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbG9yTG9jLCBkaXZpc29yKTsKKyAgICB2YXIg
Y29sb3JDb3VudCA9IGluc3RhbmNlQ291bnQgLyBkaXZpc29yOworICAgIGlmICgoaW5zdGFuY2VD
b3VudCAlIGRpdmlzb3IpICE9IDApCisgICAgICAgIGNvbG9yQ291bnQrKzsKKyAgICB2YXIgY29s
b3JzID0gbmV3IEZsb2F0MzJBcnJheShjb2xvckNvdW50KTsKKyAgICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgY29sb3JDb3VudDsgKytpaSkgeworICAgICAgICBjb2xvcnNbaWldID0gMS4wIC8gY29s
b3JDb3VudCAqIChpaSArIDEpOworICAgIH0KKyAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JCdWZm
ZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMsIGdsLlNUQVRJ
Q19EUkFXKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jLCAxLCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOworCisgICAgdmFyIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZm
ZXIpOworICAgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyLCAwLCAyLCAz
XSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywg
Z2wuU1RBVElDX0RSQVcpOworCisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFO
R0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIHNo
b3VsZCBzdWNjZWVkIik7CisKKyAgICB2YXIgY29sb3JJbmRleCA9IC0xOworICAgIGZvciAodmFy
IGlpID0gMDsgaWkgPCBpbnN0YW5jZUNvdW50OyArK2lpKSB7CisgICAgICAgIGlmICgoaWkgJSBk
aXZpc29yKSA9PSAwKQorICAgICAgICAgICAgY29sb3JJbmRleCsrOworICAgICAgICB2YXIgcmVm
Q29sb3IgPSBbIE1hdGguZmxvb3IoY29sb3JzW2NvbG9ySW5kZXhdICogMjU1KSwgMCwgMCwgMjU1
IF07CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIE1hdGguZmxvb3IoY2FudmFzLndp
ZHRoIC8gaW5zdGFuY2VDb3VudCAqIGlpKSArIDEsIDAsIDEsIGNhbnZhcy5oZWlnaHQsIHJlZkNv
bG9yLAorICAgICAgICAgICAgImluc3RhbmNlICIgKyBpaSArICIgc2hvdWxkIGJlICIgKyByZWZD
b2xvciwgMik7CisgICAgfQorCisgICAgZ2wuZGVsZXRlQnVmZmVyKHBvc2l0aW9uQnVmZmVyKTsK
KyAgICBnbC5kZWxldGVCdWZmZXIob2Zmc2V0QnVmZmVyKTsKKyAgICBnbC5kZWxldGVCdWZmZXIo
Y29sb3JCdWZmZXIpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihpbmRleEJ1ZmZlcik7CisgICAgZ2wu
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8pOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICBnbC51c2VQcm9ncmFtKG51
bGwpOworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImNsZWFuIHVwIHNob3VsZCBzdWNjZWVkIik7Cit9CisKK2Rl
YnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvaW5zdGFuY2VkLXJlbmRlcmluZy1sYXJnZS1k
aXZpc29yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2luc3RhbmNlZC1yZW5kZXJpbmctbGFyZ2UtZGl2aXNv
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyOTY0OWVlM2M2YjkwYmZiYzUxNmQzODNmOTY5NDcyN2EyMjFj
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2luc3RhbmNlZC1yZW5kZXJpbmctbGFy
Z2UtZGl2aXNvci5odG1sCkBAIC0wLDAgKzEsMTQ1IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBJbnN0YW5jZWQgQXJyYXlz
IENvbmZvcm1hbmNlIFRlc3RzIC0gbGFyZ2UgdmVydGV4IGF0dHJpYiBkaXZpc29yczwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJvdXRwdXRWZXJ0ZXhTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lv
biAzMDAgZXMKK2xheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzIgYV9wb3NpdGlvbjsKK2xheW91
dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGFfcG9zaXRpb25PZmZzZXQ7CitsYXlvdXQobG9jYXRp
b24gPSAyKSBpbiB2ZWM0IGFfY29sb3I7CitvdXQgdmVjNCB2X2NvbG9yOwordm9pZCBtYWluKCkK
K3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54ICogMC4wNSArIGFfcG9zaXRp
b25PZmZzZXQsIGFfcG9zaXRpb24ueSAqIDAuMDUsIDAuMCwgMS4wKTsKKyAgICB2X2NvbG9yID0g
YV9jb2xvcjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJvdXRwdXRGcmFnbWVudFNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7CitpbiB2ZWM0IHZfY29sb3I7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7Cit2
b2lkIG1haW4oKQoreworICAgIG15X0ZyYWdDb2xvciA9IHZfY29sb3I7Cit9Cis8L3NjcmlwdD4K
KworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IHN3aXRjaGluZyB2
ZXJ0ZXggYXR0cmliIGRpdmlzb3Igb2Ygb25lIGF0dHJpYnV0ZSBiZXR3ZWVuIGRpZmZlcmVudCBs
YXJnZSB2YWx1ZXMiKTsKKy8vIFRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMjgzMgorCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CitjYW52
YXMud2lkdGggPSAyNTY7CitjYW52YXMuaGVpZ2h0ID0gMjU2OwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOworCit2YXIgY29sb3JEaXZpc29yID0gNjU1MzYg
KiAyOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5v
dCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0
cyIpOworCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZh
ciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJvdXRwdXRWZXJ0ZXhTaGFkZXIiLCAi
b3V0cHV0RnJhZ21lbnRTaGFkZXIiXSk7CisKKyAgICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAx
LjAsIDEuMCk7CisKKyAgICB3dHUuc2V0dXBJbmRleGVkUXVhZFdpdGhPcHRpb25zKGdsLCB7cG9z
aXRpb25Mb2NhdGlvbjogMH0pOworCisgICAgdmFyIG9mZnNldEJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRCdWYpOworICAg
IC8vIE5vdGUgdGhhdCBvbmx5IHRoZSBmaXJzdCB0d28gb2Zmc2V0cyBiZWxvdyBzaG91bGQgYmUg
dXNlZCBmb3IgcmVuZGVyaW5nLgorICAgIC8vIFdlIGFkZCBzb21lIGV4dHJhIG9uZXMgdG8gdGhl
IGJ1ZmZlciBzaW5jZSBpdCBjYW4gcmV2ZWFsIGlmIGEgdG9vIHNtYWxsIGRpdmlzb3IgaXMgdXNl
ZCBvbiB0aGUgV2ViR0wgYmFja2VuZC4KKyAgICB2YXIgb2Zmc2V0RGF0YSA9IFtdOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIG9mZnNldERhdGEucHVzaCgwLjAg
KyBpICogMC4yNSk7CisgICAgfQorICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBu
ZXcgRmxvYXQzMkFycmF5KG9mZnNldERhdGEpLCBnbC5EWU5BTUlDX0RSQVcpOworCisgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigx
LCAxLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTZXR0aW5nIHVwIHZlcnRleCBidWZmZXIgc2hvdWxkIHN1Y2NlZWQi
KTsKKworICAgIHZhciBjb2xvckJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1Zik7CisgICAgLy8gUmVkIGFuZCBncmVlbiBj
b2xvcnMuCisgICAgdmFyIGNvbG9yRGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoWzEuMCwgMC4wLCAw
LjAsIDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wLCAxLjAs
IDAuMCwgMS4wXSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9yRGF0
YSwgZ2wuRFlOQU1JQ19EUkFXKTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDIp
OworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMiwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAw
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKDIsIGNvbG9yRGl2aXNvcik7CisKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldHRpbmcgdXAgY29sb3IgYnVm
ZmVyIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICB2YXIgZGl2aXNvcnNUb1RyeSA9IFsKKyAgICAg
ICAgMjU2LAorICAgICAgICA2NTUzNiwKKyAgICAgICAgNjU1MzYgKiAyCisgICAgXTsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGl2aXNvcnNUb1RyeS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBydW5EcmF3RWxlbWVudHNUZXN0KGRpdmlzb3JzVG9UcnlbaV0pOworICAgIH0KK30KKworZnVu
Y3Rpb24gcnVuRHJhd0VsZW1lbnRzVGVzdChkaXZpc29yKSB7CisgICAgZGVidWcoIlVzaW5nIGRp
dmlzb3IgIiArIGRpdmlzb3IpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
ICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoMSwgZGl2aXNvcik7CisKKyAgICB2YXIgaW5zdGFu
Y2VDb3VudCA9IGRpdmlzb3IgKyAxOworICAgIHZhciBxdWFkc1JlbmRlcmVkID0gTWF0aC5mbG9v
cigoaW5zdGFuY2VDb3VudCAtIDEpIC8gZGl2aXNvcikgKyAxOworCisgICAgZ2wuZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3Rh
bmNlQ291bnQpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJJ
bnN0YW5jZWQgZHJhdyBzaG91bGQgc3VjY2VlZCIpOworCisgICAgZm9yICh2YXIgcXVhZEluZGV4
ID0gMDsgcXVhZEluZGV4IDwgcXVhZHNSZW5kZXJlZCArIDE7ICsrcXVhZEluZGV4KSB7CisgICAg
ICAgIHZhciBxdWFkWCA9IE1hdGguZmxvb3IoKHF1YWRJbmRleCAvIDgpICogMjU2ICsgMTI4KTsK
KyAgICAgICAgdmFyIHF1YWRZID0gMTI4OworICAgICAgICBpZiAocXVhZEluZGV4IDwgcXVhZHNS
ZW5kZXJlZCkgeworICAgICAgICAgICAgdmFyIHF1YWRDb2xvckluZGV4ID0gTWF0aC5mbG9vcigo
cXVhZEluZGV4ICogZGl2aXNvcikgLyBjb2xvckRpdmlzb3IpOworICAgICAgICAgICAgaWYgKHF1
YWRDb2xvckluZGV4ID09IDApIHsKKyAgICAgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0
KGdsLCBxdWFkWCwgcXVhZFksIDEsIDEsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBxdWFkWCwg
cXVhZFksIDEsIDEsIFswLCAyNTUsIDAsIDI1NV0pOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgcXVhZFgsIHF1YWRZ
LCAxLCAxLCBbMCwgMCwgMjU1LCAyNTVdKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZGVidWco
IiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9saW5lLXJlbmRlcmluZy1xdWFsaXR5Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
cmVuZGVyaW5nL2xpbmUtcmVuZGVyaW5nLXF1YWxpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDQ0MmVh
M2M2ZTBkMmRiODJhNzNmNmVjODBjYzg4Y2I4OTMzYWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Jl
bmRlcmluZy9saW5lLXJlbmRlcmluZy1xdWFsaXR5Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+TGluZSByZW5kZXJpbmcgcXVhbGl0eSB0ZXN0PC90
aXRsZT4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJ0ZXN0YmVkIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+PC9jYW52YXM+Cis8Y2FudmFzIGlk
PSJ0ZXN0YmVkMiIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIGNvbnRleHRWZXJzaW9uID0gMjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Rlc3RzL2xpbmUtcmVuZGVyaW5nLXF1YWxpdHkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcmVuZGVyaW5nL211bHRpc2FtcGxpbmctZnJhZ21lbnQtZXZhbHVhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3JlbmRlcmluZy9tdWx0aXNhbXBsaW5nLWZyYWdtZW50LWV2YWx1YXRpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZjdiY2U5YjA5MTNjZTQwOTI5MmJjY2RjODk5ODA2YWY2MDY0NGIwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9tdWx0aXNhbXBsaW5nLWZyYWdtZW50LWV2YWx1YXRp
b24uaHRtbApAQCAtMCwwICsxLDE0MyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgbXVsdGlzYW1wbGluZyBmcmFnbWVudCBzaGFk
ZXIgZXZhbHVhdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFk
ZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworbGF5b3V0KGxvY2F0aW9uPTApIGluIHZlYzQg
YVBvc2l0aW9uOworb3V0IHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uKTsKKyAgICB2UG9zaXRpb24gPSBhUG9zaXRpb247Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworaW4gdmVjNCB2UG9z
aXRpb247CitsYXlvdXQobG9jYXRpb249MCkgb3V0IHZlYzQgb0NvbG9yOwordm9pZCBtYWluKCkK
K3sKKyAgICBpZiAodlBvc2l0aW9uLnggPCAwLjApIHsKKyAgICAgICAgb0NvbG9yID0gdmVjNCgx
LCAwLCAwLCAxKTsKKyAgICB9IGVsc2UgaWYgKHZQb3NpdGlvbi55IDwgMC4wKSB7CisgICAgICAg
IG9Db2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb0NvbG9y
ID0gdmVjNCgwLCAwLCAxLCAxKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGZyYWdtZW50IHNoYWRlciBpcyBldmFsdWF0ZWQg
b25seSBvbmNlIHBlciBmcmFtZWJ1ZmZlciBwaXhlbCB3aGVuIG11bHRpc2FtcGxpbmcgaXMgdXNl
ZC4iKTsKKworLy8gR0xFUyAzLjAuNSBzZWN0aW9uIDMuNi4zLiBQb2x5Z29uIE11bHRpc2FtcGxl
IFJhc3Rlcml6YXRpb246CisvLyAiUG9seWdvbiByYXN0ZXJpemF0aW9uIHByb2R1Y2VzIGEgZnJh
Z21lbnQgZm9yIGVhY2ggZnJhbWVidWZmZXIgcGl4ZWwgd2l0aCBvbmUgb3IgbW9yZSBzYW1wbGUg
cG9pbnRzIHRoYXQgc2F0aXNmeQorLy8gdGhlIHBvaW50IHNhbXBsaW5nIGNyaXRlcmlhIGRlc2Ny
aWJlZCBpbiBzZWN0aW9uIDMuNi4xLiIKKworZGVidWcoIlJlZ3Jlc3Npb24gdGVzdCBmb3IgPGEg
aHJlZj0naHR0cDovL2NyYnVnLmNvbS82ODI4MTUnPmh0dHA6Ly9jcmJ1Zy5jb20vNjgyODE1PC9h
PiIpOworCitmdW5jdGlvbiBydW5UZXN0KHRlc3RQYXJhbXMpIHsKKyAgICBsZXQgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY2FudmFzLndpZHRoID0gMTsK
KyAgICBjYW52YXMuaGVpZ2h0ID0gMTsKKyAgICBsZXQgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9LCAyKTsKKworICAgIC8vIEZpbmQgdGhlIHN1cHBv
cnRlZCBzYW1wbGVzIGZvciBhIG11bHRpc2FtcGxlZCByZW5kZXJidWZmZXIgb2YgdGhlIGFwcHJv
cHJpYXRlIGludGVybmFsIGZvcm1hdC4KKyAgICBsZXQgc2FtcGxlcyA9IGdsLmdldEludGVybmFs
Zm9ybWF0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2xbdGVzdFBhcmFtcy5pbnRlcm5hbGZv
cm1hdF0sIGdsLlNBTVBMRVMpOworICAgIGlmICghc2FtcGxlcyB8fCAhc2FtcGxlcy5sZW5ndGgp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IHF1ZXJ5IHN1cHBvcnRlZCBzYW1wbGUg
Y291bnRzIGZvciByZXF1aXJlZCBtdWx0aXNhbXBsaW5nIGZvcm1hdCAiICsgdGVzdFBhcmFtcy5p
bnRlcm5hbGZvcm1hdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBOb3RlIHRo
YXQgc3VwcG9ydGVkIHNhbXBsZSBjb3VudHMgYXJlIHJlcXVpcmVkIHRvIGJlIHJlcG9ydGVkIGlu
IGRlc2NlbmRpbmcgb3JkZXIuCisgICAgZGVidWcoJ1Rlc3Rpbmcgd2l0aCBzYW1wbGUgY291bnQg
JyArIHNhbXBsZXNbMF0pOworICAgIC8vIENyZWF0ZSBhIGZyYW1lYnVmZmVyIHdpdGggYSBtdWx0
aXNhbXBsZWQgcmVuZGVyYnVmZmVyIHdpdGggdGhlIG1heGltdW0gc3VwcG9ydGVkIG51bWJlciBv
ZiBzYW1wbGVzLgorICAgIGxldCByYiA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGds
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYik7CisgICAgZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgc2FtcGxlc1swXSwgZ2xbdGVz
dFBhcmFtcy5pbnRlcm5hbGZvcm1hdF0sIDEsIDEpOworICAgIGxldCBmYiA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7
CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJiKTsKKyAgICBpZiAoZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUmVuZGVyaW5nIHRvIGEgbXVsdGlzYW1wbGVkIHJlbmRl
cmJ1ZmZlciBvZiBmb3JtYXQgIiArIHRlc3RQYXJhbXMuaW50ZXJuYWxmb3JtYXQgKyAiIGlzIHJl
cXVpcmVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgcHJv
Z3JhbSB0aGF0IHdpbGwgY2hvb3NlIGJldHdlZW4gb25lIG9mIGRpZmZlcmVudCBwb3NzaWJsZSBj
b2xvcnMgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKyAgICAvLyBJdCBzaG91bGQgYmUgZXZhbHVh
dGVkIG9ubHkgb25jZSBwZXIgZnJhbWVidWZmZXIgcGl4ZWwsIHNvIG9ubHkgb25lIG9mIHRoZSBj
b2xvcnMgd2lsbCBlbmQgdXAgaW4gdGhlIGZyYW1lYnVmZmVyLgorICAgIC8vIEhvd2V2ZXIsIGlm
IHRoZSBtdWx0aXNhbXBsaW5nIG1vZGUgaXMgaW5jb3JyZWN0bHkgaW1wbGVtZW50ZWQgYnkgc3Vw
ZXJzYW1wbGluZywgdGhlIHNhbXBsZXMgbWF5IGhhdmUgZGlmZmVyZW50CisgICAgLy8gY29sb3Jz
LgorICAgIGxldCBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZz
aGFkZXIiXSwgWyJhUG9zaXRpb24iXSk7CisKKyAgICAvLyBSZW5kZXIgb25lIHRyaWFuZ2xlIHVz
aW5nIHRoZSBwcm9ncmFtLiBUaGUgdHJpYW5nbGUgbmVlZHMgdG8gZXh0ZW5kIGZhciBvdXRzaWRl
IHRoZSB2aWV3cG9ydCBvbiBhbGwgc2lkZXMsIHNvCisgICAgLy8gdGhhdCB3ZSBjYW4gc2FmZWx5
IGFzc3VtZSBhbGwgc2FtcGxlcyBmYWxsIGluc2lkZSB0aGUgdHJpYW5nbGUuIEdMRVMgMy4wLjU6
CisgICAgLy8gIlRoZSBzYW1wbGUgcG9pbnRzIGFzc29jaWF0ZWQgd2l0aCBhIHBpeGVsIG1heSBi
ZSBsb2NhdGVkIGluc2lkZSBvciBvdXRzaWRlIG9mIHRoZSB1bml0IHNxdWFyZSB0aGF0IGlzIGNv
bnNpZGVyZWQgdG8gYm91bmQgdGhlIHBpeGVsLiIKKyAgICAvLyBIZXJlIHdlIGFzc3VtZSB0aGF0
IHNhbXBsZSBwb2ludHMgYXJlIGxlc3MgdGhhbiA5OTk5IHBpeGVscyBhd2F5IGZyb20gdGhlIHBp
eGVsIHRoZXkgYXJlIGFzc29jaWF0ZWQgd2l0aC4KKyAgICBsZXQgYnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAxMDAw
MCwgIDMwMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMzAwMDAsIC0xMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwMDAwLCAtMTAwMDBdKSwgZ2wuU1RBVElDX0RSQVcpOwor
ICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgMyk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFN
RUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIDEsIDEsIDAsIDAs
IDEsIDEsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgIGxldCByZWFkQnVmZmVy
ID0gbmV3IFVpbnQ4QXJyYXkoNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCByZWFkQnVmZmVyKTsKKworICAgIC8vIENoZWNrIHRoYXQg
dGhlIGNhbnZhcyBpcyBvbmUgb2YgdGhlIGNvbG9ycyB0aGF0IHRoZSBmcmFnbWVudCBzaGFkZXIg
bWF5IGdlbmVyYXRlLCBhbmQgbm90IGEgYmxlbmQgb2YgdGhlbS4KKyAgICBsZXQgcG9zc2libGVD
b2xvcnMgPSBbCisgICAgICAgIFsyNTUsIDAsIDAsIDI1NV0sCisgICAgICAgIFswLCAyNTUsIDAs
IDI1NV0sCisgICAgICAgIFswLCAwLCAyNTUsIDI1NV0KKyAgICBdOworICAgIGxldCBhbnlDb2xv
ck1hdGNoZWQgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc3NpYmxlQ29sb3Jz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGxldCBjb2xvck1hdGNoZWQgPSB0cnVlOworICAgICAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDQ7ICsraikgeworICAgICAgICAgICAgaWYgKE1hdGguYWJz
KHJlYWRCdWZmZXJbal0gLSBwb3NzaWJsZUNvbG9yc1tpXVtqXSkgPiAyKSB7CisgICAgICAgICAg
ICAgICAgY29sb3JNYXRjaGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGNvbG9yTWF0Y2hlZCkgeworICAgICAgICAgICAgYW55Q29sb3JNYXRjaGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWFueUNvbG9yTWF0Y2hlZCkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDb2xvciBpbiBmcmFtZWJ1ZmZlciB3YXMgbm90IG9uZSBvZiB0aGUg
Y29sb3JzIGdlbmVyYXRlZCBieSB0aGUgZnJhZ21lbnQgc2hhZGVyOiAiICsgcmVhZEJ1ZmZlcik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29sb3IgaW4gZnJhbWVidWZmZXIg
d2FzIG9uZSBvZiB0aGUgY29sb3JzIGdlbmVyYXRlZCBieSB0aGUgZnJhZ21lbnQgc2hhZGVyOiAi
ICsgcmVhZEJ1ZmZlcik7CisgICAgfQorfQorCitydW5UZXN0KHtpbnRlcm5hbGZvcm1hdDogJ1JH
QkE4J30pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvb3V0LW9mLWJvdW5kcy1pbmRleC1idWZm
ZXJzLWFmdGVyLWNvcHlpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvb3V0LW9mLWJvdW5kcy1pbmRleC1i
dWZmZXJzLWFmdGVyLWNvcHlpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWJiYjVlMzQ4YjM0NGE5YWM3
NTg4MDQwZTMyZjJmZmFjZTE3ZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9vdXQt
b2YtYm91bmRzLWluZGV4LWJ1ZmZlcnMtYWZ0ZXItY29weWluZy5odG1sCkBAIC0wLDAgKzEsMTg3
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzx0aXRsZT5X
ZWJHTCBPdXQtb2YtQm91bmRzIEluZGV4IEJ1ZmZlciBDYXVzZWQgYnkgQ29weUJ1ZmZlclN1YkRh
dGEgQ29uZm9ybWFuY2UgVGVzdDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c0NoZWNrT3V0T2ZCb3VuZHMiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4KKyAgICAjZGVmaW5lIFRFU1RfQ0FTRV9JTl9CT1VORCAxCisg
ICAgI2RlZmluZSBURVNUX0NBU0VfT1VUX09GX0JPVU5EIDIKKworICAgIHByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworICAgIGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOworICAgIGF0dHJpYnV0ZSB2
ZWM0IHZlY1JhbmRvbTsKKyAgICB2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKKyAgICB1bmlmb3JtIGlu
dCB1X3Rlc3RDYXNlOworCisgICAgYm9vbCB0ZXN0RmxvYXRDb21wb25lbnRBY2N1cmF0ZShmbG9h
dCBjb21wb25lbnQpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA9PSAwLjI7CisgICAgfQor
ICAgIC8vIFBlciB0aGUgc3BlYywgZWFjaCBjb21wb25lbnQgY2FuIGVpdGhlciBjb250YWluIGV4
aXN0aW5nIGNvbnRlbnRzCisgICAgLy8gb2YgdGhlIGJ1ZmZlciBvciAwLgorICAgIGJvb2wgdGVz
dEZsb2F0Q29tcG9uZW50KGZsb2F0IGNvbXBvbmVudCkgeworICAgICAgICByZXR1cm4gKGNvbXBv
bmVudCA9PSAwLjIgfHwgY29tcG9uZW50ID09IDAuMCk7CisgICAgfQorICAgIC8vIFRoZSBsYXN0
IGNvbXBvbmVudCBpcyBhZGRpdGlvbmFsbHkgYWxsb3dlZCB0byBiZSAxLjAuCisgICAgYm9vbCB0
ZXN0TGFzdEZsb2F0Q29tcG9uZW50KGZsb2F0IGNvbXBvbmVudCkgeworICAgICAgICByZXR1cm4g
dGVzdEZsb2F0Q29tcG9uZW50KGNvbXBvbmVudCkgfHwgY29tcG9uZW50ID09IDEuMDsKKyAgICB9
CisKKyAgICBib29sIHRlc3REYXRhKHZlYzQgZGF0YSkgeworICAgICAgICBpZiAodV90ZXN0Q2Fz
ZSA9PSBURVNUX0NBU0VfSU5fQk9VTkQpIHsKKyAgICAgICAgICAgIHJldHVybiAodGVzdEZsb2F0
Q29tcG9uZW50QWNjdXJhdGUoZGF0YS54KSAmJgorICAgICAgICAgICAgICAgICAgICB0ZXN0Rmxv
YXRDb21wb25lbnRBY2N1cmF0ZShkYXRhLnkpICYmCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
bG9hdENvbXBvbmVudEFjY3VyYXRlKGRhdGEueikgJiYKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZsb2F0Q29tcG9uZW50QWNjdXJhdGUoZGF0YS53KSk7CisgICAgICAgIH0gZWxzZSBpZiAodV90
ZXN0Q2FzZSA9PSBURVNUX0NBU0VfT1VUX09GX0JPVU5EKSB7CisgICAgICAgICAgICByZXR1cm4g
KHRlc3RGbG9hdENvbXBvbmVudChkYXRhLngpICYmCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
bG9hdENvbXBvbmVudChkYXRhLnkpICYmCisgICAgICAgICAgICAgICAgICAgIHRlc3RGbG9hdENv
bXBvbmVudChkYXRhLnopICYmCisgICAgICAgICAgICAgICAgICAgIHRlc3RMYXN0RmxvYXRDb21w
b25lbnQoZGF0YS53KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHZvaWQgbWFpbigpIHsKKyAgICAgICAgaWYgKHRlc3REYXRhKHZlY1JhbmRvbSkpIHsK
KyAgICAgICAgICAgIHZfY29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7IC8vIGdyZWVu
IC0tIFdlJ3JlIGdvb2QKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZfY29sb3IgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IC8vIHJlZCAtLSBVbmV4cGVjdGVkIHZhbHVlCisgICAg
ICAgIH0KKyAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IG91dC1vZi1ib3VuZHMgaW5kZXggYnVmZmVycyBjYXVzZWQg
YnkgQ29weUJ1ZmZlclN1YkRhdGEgYmVoYXZlIGFjY29yZGluZyB0byBzcGVjLiIpOworCisvLyBF
bnN1cmUgdGhhdCBkcmF3RWxlbWVudHMgZmxhZ3MgZWl0aGVyIG5vIGVycm9yIG9yIElOVkFMSURf
T1BFUkFUSU9OLiBJbiB0aGUgY2FzZSBvZiBJTlZBTElEX09QRVJBVElPTiwKKy8vIG5vIGNhbnZh
cyBwaXhlbHMgY2FuIGJlIHRvdWNoZWQuICBJbiB0aGUgY2FzZSBvZiBOT19FUlJPUiwgYWxsIHdy
aXR0ZW4gdmFsdWVzIG11c3QgZWl0aGVyIGJlIHRoZQorLy8gemVybyB2ZXJ0ZXggb3IgYSB2YWx1
ZSBpbiB0aGUgdmVydGV4IGJ1ZmZlci4gIFNlZSB2c0NoZWNrT3V0T2ZCb3VuZHMgc2hhZGVyLgor
ZnVuY3Rpb24gdmVyaWZ5T3V0T2ZCb3VuZHNJbmRleChnbCkgeworICAgIHZhciBlcnJvciA9IGds
LmdldEVycm9yKCk7CisgICAgaWYgKGVycm9yID09PSBnbC5JTlZBTElEX09QRVJBVElPTikgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJkcmF3RWxlbWVudHMgZmxhZ2dlZCBJTlZBTElEX09QRVJBVElP
Tiwgd2hpY2ggaXMgdmFsaWQgc28gbG9uZyBhcyBhbGwgY2FudmFzIHBpeGVscyB3ZXJlIG5vdCB0
b3VjaGVkLiIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAwLCAyNTUsIDI1NV0p
OworICAgIH0gZWxzZSBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9SKSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoImRyYXdFbGVtZW50cyBmbGFnZ2VkIE5PX0VSUk9SLCB3aGljaCBpcyB2YWxpZCBzbyBs
b25nIGFzIGFsbCBjYW52YXMgcGl4ZWxzIGFyZSBncmVlbi4iKTsKKyAgICAgICAgd3R1LmNoZWNr
Q2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0
RmFpbGVkKCJJbnZhbGlkIGVycm9yIGZsYWdnZWQgYnkgZHJhd0VsZW1lbnRzLiBTaG91bGQgYmUg
SU5WQUxJRF9PUEVSQVRJT04gb3IgTk9fRVJST1IiKTsKKyAgICB9Cit9CisKKy8vIENyZWF0ZSBh
biBlbGVtZW50IGFycmF5IGJ1ZmZlciB3aXRoIGEgdHJpLXN0cmlwIHRoYXQgc3RhcnRzIGF0IHN0
YXJ0SW5kZXggYW5kIG1ha2UKKy8vIGl0IHRoZSBhY3RpdmUgZWxlbWVudCBhcnJheSBidWZmZXIu
CitmdW5jdGlvbiBwcmVwYXJlRWxlbWVudEFycmF5QnVmZmVyKGdsLCBzdGFydEluZGV4KSB7Cisg
ICAgdmFyIGdsRWxlbWVudEFycmF5QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2xFbGVtZW50QXJyYXlCdWZmZXIp
OworICAgIHZhciBxdWFkSW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheSg0KTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHF1YWRJbmRpY2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHF1YWRJbmRp
Y2VzW2ldID0gc3RhcnRJbmRleCArIGk7CisgICAgfQorICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIHF1YWRJbmRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgcmV0
dXJuIGdsRWxlbWVudEFycmF5QnVmZmVyOworfQorCisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9LCAyKTsK
KwordmFyIG51bWJlck9mUXVhZHMgPSAyMDA7CisKKy8vIENyZWF0ZSBhIHZlcnRleCBidWZmZXIg
d2l0aCAyMDAgcHJvcGVybHkgZm9ybWVkIHRyaS1zdHJpcCBxdWFkcy4gVGhlc2UgcXVhZHMgd2ls
bCBjb3ZlciB0aGUgY2FudmFzIHRleHR1cmUKKy8vIHN1Y2ggdGhhdCBldmVyeSBzaW5nbGUgcGl4
ZWwgaXMgdG91Y2hlZCBieSB0aGUgZnJhZ21lbnQgc2hhZGVyLgordmFyIHF1YWRCdWZmZXIgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBxdWFkQnVm
ZmVyKTsKK3ZhciBxdWFkUG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShudW1iZXJPZlF1YWRz
ICogLypDb21wb25lbnRzUGVyUXVhZCovMiAqIC8qVmVydGljZXNQZXJRdWFkKi80KTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgcXVhZFBvc2l0aW9ucy5sZW5ndGg7IGkgKz0gLypDb21wb25lbnRzUGVy
UXVhZCovMiAqIC8qVmVydGljZXNQZXJRdWFkKi80KSB7CisgICAgcXVhZFBvc2l0aW9uc1tpKzBd
ID0gLTEuMDsgIC8vIHVwcGVyIGxlZnQKKyAgICBxdWFkUG9zaXRpb25zW2krMV0gPSAgMS4wOwor
ICAgIHF1YWRQb3NpdGlvbnNbaSsyXSA9ICAxLjA7ICAvLyB1cHBlciByaWdodAorICAgIHF1YWRQ
b3NpdGlvbnNbaSszXSA9ICAxLjA7CisgICAgcXVhZFBvc2l0aW9uc1tpKzRdID0gLTEuMDsgIC8v
IGxvd2VyIGxlZnQKKyAgICBxdWFkUG9zaXRpb25zW2krNV0gPSAtMS4wOworICAgIHF1YWRQb3Np
dGlvbnNbaSs2XSA9ICAxLjA7ICAvLyBsb3dlciByaWdodAorICAgIHF1YWRQb3NpdGlvbnNbaSs3
XSA9IC0xLjA7Cit9CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgcXVhZFBvc2l0aW9u
cywgZ2wuU1RBVElDX0RSQVcpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CitnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKy8vIENy
ZWF0ZSBhIHNtYWxsIHZlcnRleCBidWZmZXIgd2l0aCBkZXRlcm1pbmVkLWFoZWFkLW9mLXRpbWUg
InJhbmRvbSIgdmFsdWVzICgwLjIpLiBUaGlzIGJ1ZmZlciB3aWxsIGJlCisvLyB0aGUgb25lIGlu
ZGV4ZWQgb2ZmIHRoZSBlbmQuCit2YXIgdmVydGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKK2dsLmJ1ZmZl
ckRhdGEoZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsw
LjIsIDAuMiwgMC4yLCAwLjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMiwg
MC4yLCAwLjIsIDAuMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yLCAwLjIs
IDAuMiwgMC4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIsIDAuMiwgMC4y
LCAwLjJdKSwKKyAgICAgICAgICAgICAgZ2wuU1RBVElDX0RSQVcpOworZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoMSk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisKKy8vIFNldHVwIHRoZSB2ZXJpZmljYXRpb24gcHJvZ3JhbS4KK3ZhciBw
cm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c0NoZWNrT3V0T2ZCb3VuZHMiLCB3dHUu
c2ltcGxlVmVydGV4Q29sb3JGcmFnbWVudFNoYWRlcl0sIFsicG9zaXRpb24iLCAidmVjUmFuZG9t
Il0pOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaGFkZXIgYW5kIGJ1
ZmZlciBzZXR1cCBzaG91bGQgZ2VuZXJhdGUgbm8gZXJyb3JzIik7Cit2YXIgbG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3Rlc3RDYXNlIik7CitzaG91bGRCZU5vbk51bGwo
bG9jKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgLS0gVmVydGV4IGluZGljZXMgYXJlIGlu
IGJvdW5kcy4iKTsKK2dsLnVuaWZvcm0xaShsb2MsIDEpOyAgLy8gVEVTVF9DQVNFX0lOX0JPVU5E
ID09IDEKK2dsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsgIC8vIFN0YXJ0IHdpdGgg
Ymx1ZSB0byBpbmRpY2F0ZSBubyBwaXhlbHMgdG91Y2hlZC4KK2dsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKK3ZhciBlbGVtZW50QXJyYXlCdWZmZXIg
PSBwcmVwYXJlRWxlbWVudEFycmF5QnVmZmVyKGdsLCAvKlN0YXJ0SW5kZXgqLzApOworZ2wuZHJh
d0VsZW1lbnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05FRF9TSE9SVCwgLypvZmZz
ZXQqLzApOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJEcmF3IGNhbGwg
c2hvdWxkIGdlbmVyYXRlIG5vIGVycm9ycyIpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1
LCAwLCAyNTVdKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgLS0gSW5kZXggb2ZmIHRoZSBl
bmQgb2YgdGhlIHZlcnRleCBidWZmZXIgbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvdXQgb2Yg
Ym91bmRzIGFyZWEuIik7CitnbC51bmlmb3JtMWkobG9jLCAyKTsgIC8vIFRFU1RfQ0FTRV9PVVRf
T0ZfQk9VTkQgPT0gMgorZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMS4wLCAxLjApOyAgLy8gU3Rh
cnQgd2l0aCBibHVlIHRvIGluZGljYXRlIG5vIHBpeGVscyB0b3VjaGVkLgorZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwordmFyIG91dE9mQm91bmRz
RWxlbWVudEFycmF5QnVmZmVyID0gcHJlcGFyZUVsZW1lbnRBcnJheUJ1ZmZlcihnbCwgLypTdGFy
dEluZGV4Ki80KTsKK2dsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG91dE9m
Qm91bmRzRWxlbWVudEFycmF5QnVmZmVyKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklURV9C
VUZGRVIsIGVsZW1lbnRBcnJheUJ1ZmZlcik7CitnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDAsIDQgKiBVaW50MTZB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgImNvcHlCdWZmZXJTdWJEYXRhIHNob3VsZCBnZW5lcmF0ZSBubyBlcnJvcnMiKTsKK2ds
LmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsZW1lbnRBcnJheUJ1ZmZlcik7
CitnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQsIGdsLlVOU0lHTkVEX1NIT1JU
LCAvKm9mZnNldCovMCk7Cit2ZXJpZnlPdXRPZkJvdW5kc0luZGV4KGdsKTsKKworZGVidWcoIiIp
OworZGVidWcoIlRlc3QgLS0gSW5kZXggb2ZmIHRoZSBlbmQgb2YgdGhlIHZlcnRleCBidWZmZXIg
bmVhciB0aGUgZW5kIG9mIHRoZSBvdXQgb2YgYm91bmRzIGFyZWEuIikKK2dsLnVuaWZvcm0xaShs
b2MsIDIpOyAgLy8gVEVTVF9DQVNFX09VVF9PRl9CT1VORCA9PSAyCitnbC5jbGVhckNvbG9yKDAu
MCwgMC4wLCAxLjAsIDEuMCk7ICAvLyBTdGFydCB3aXRoIGJsdWUgdG8gaW5kaWNhdGUgbm8gcGl4
ZWxzIHRvdWNoZWQuCitnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVG
RkVSX0JJVCk7CitvdXRPZkJvdW5kc0VsZW1lbnRBcnJheUJ1ZmZlciA9IHByZXBhcmVFbGVtZW50
QXJyYXlCdWZmZXIoZ2wsIC8qU3RhcnRJbmRleCovbnVtYmVyT2ZRdWFkcyAtIDQpOworZ2wuYmlu
ZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEFycmF5QnVmZmVyKTsKK2ds
LmJpbmRCdWZmZXIoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgb3V0T2ZCb3VuZHNFbGVtZW50QXJyYXlC
dWZmZXIpOworZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIDAsIDAsIDQgKiBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNvcHlCdWZmZXJTdWJE
YXRhIHNob3VsZCBnZW5lcmF0ZSBubyBlcnJvcnMiKTsKK2dsLmRyYXdFbGVtZW50cyhnbC5UUklB
TkdMRV9TVFJJUCwgNCwgZ2wuVU5TSUdORURfU0hPUlQsIC8qb2Zmc2V0Ki8wKTsKK3ZlcmlmeU91
dE9mQm91bmRzSW5kZXgoZ2wpOworCitkZWJ1ZygiIik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlJ1bm5pbmcgdGVzdHMgc2hvdWxkIGdlbmVyYXRlIG5vIGVycm9ycyIp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3JlbmRlcmluZy9yYXN0ZXJpemVyLWRpc2NhcmQtYW5kLWltcGxpY2l0LWNs
ZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvcmVuZGVyaW5nL3Jhc3Rlcml6ZXItZGlzY2FyZC1hbmQtaW1wbGljaXQtY2xl
YXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNjA1YTI1ZjI2NDQ1YmY2NWVjNDYxYmY0Y2Q5YmYwZWNjYjhl
NDgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9yYXN0ZXJpemVyLWRpc2NhcmQtYW5k
LWltcGxpY2l0LWNsZWFyLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAyMCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlJBU1RFUklaRVJfRElTQ0FSRCBk
b2Vzbid0IGFmZmVjdCBpbXBsaWNpdCBjbGVhcnM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitsYXlvdXQobG9jYXRp
b249MCkgaW4gdmVjMiB2UG9zaXRpb247Cit1bmlmb3JtIGZsb2F0IHhUcmFuc2xhdGlvbjsKK3Zv
aWQgbWFpbih2b2lkKSB7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb25bMF0gKyB4VHJh
bnNsYXRpb24sIHZQb3NpdGlvblsxXSwgMC4wLCAxLjApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSB2ZWM0IGNvbG9yOworb3V0IHZlYzQg
b3V0Q29sb3I7Cit2b2lkIG1haW4oKSB7CisgIG91dENvbG9yID0gY29sb3I7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZWJ1ZygiIik7CisKK2Rlc2NyaXB0aW9uKCJFbmFibGluZyBS
QVNURVJJWkVSX0RJU0NBUkQgc2hvdWxkIG5vdCBhZmZlY3QgaW1wbGljaXQgY2xlYXJzIik7CisK
K2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKK2NvbnN0IHN6ID0gY2FudmFzLndpZHRoID0gY2FudmFz
LmhlaWdodCA9IDI1NjsKK2NvbnN0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVu
ZGVmaW5lZCwgMik7Citjb25zdCBOVU1fRlJBTUVTID0gMTU7CitsZXQgZnJhbWVzVG9HbyA9IE5V
TV9GUkFNRVM7CitsZXQgeFRyYW5zbGF0aW9uTG9jOworbGV0IGNvbG9yTG9jOworY29uc3QgcG9z
aXRpb25Mb2NhdGlvbiA9IDA7Citjb25zdCByZWQgPSBbIDEuMCwgMC4wLCAwLjAsIDEuMCBdOwor
Y29uc3QgZ3JlZW4gPSBbIDAuMCwgMS4wLCAwLjAsIDEuMCBdOworY29uc3QgdHJhbnNwYXJlbnRC
bGFja1JlbmRlciA9IFsgMCwgMCwgMCwgMCBdOworY29uc3QgZ3JlZW5SZW5kZXIgPSBbIDAsIDI1
NSwgMCwgMjU1IF07CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0
IGNyZWF0aW9uIGZhaWxlZCIpOworICAgIGZpbmlzaFRlc3QoKTsKK30gZWxzZSB7CisgICAgdGVz
dFBhc3NlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBzdWNjZWVkZWQiKTsKKyAgICBydW5EcmF3
VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5EcmF3VGVzdCgpIHsKKyAgICBkZWJ1ZygiVmVyaWZ5
IHRoYXQgZHJhd3Mgd2l0aCByYXN0ZXJpemVyIGRpc2NhcmQgZW5hYmxlZCBkbyBub3QgaW50ZXJm
ZXJlIHdpdGggaW1wbGljaXQgY2xlYXJzIik7CisgICAgbGV0IHByb2cgPSB3dHUubG9hZFByb2dy
YW1Gcm9tU2NyaXB0KGdsLCAidnNoYWRlciIsICJmc2hhZGVyIik7CisgICAgZ2wudXNlUHJvZ3Jh
bShwcm9nKTsKKyAgICB4VHJhbnNsYXRpb25Mb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
ZywgInhUcmFuc2xhdGlvbiIpOworICAgIGNvbG9yTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2csICJjb2xvciIpOworICAgIGxldCBsZWZ0UmVjdEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBsZWZ0UmVjdEJ1ZmZlcik7CisgICAg
Ly8gQ3JlYXRlIGEgcmVjdGFuZ2xlIGNvdmVyaW5nIHRoZSBsZWZ0IGhhbGYgb2YgdGhlIHZpZXdw
b3J0LCBpbgorICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzLgorICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgIDAu
MCwgIDEuMCwKKyAgICAgICAgLTEuMCwgIDEuMCwKKyAgICAgICAgLTEuMCwgLTEuMCwKKyAgICAg
ICAgIDAuMCwgIDEuMCwKKyAgICAgICAgLTEuMCwgLTEuMCwKKyAgICAgICAgIDAuMCwgLTEuMF0p
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxv
Y2F0aW9uLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZShyZW5kZXJEcmF3VGVzdEZyYW1lKTsKK30KKworZnVuY3Rpb24gcmVuZGVyRHJhd1Rlc3RG
cmFtZSgpIHsKKyAgICAvLyBBbmltYXRpb24gaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZXhwb3Nl
IHRoaXMgYnVnLiBXaGVuIGl0CisgICAgLy8gb2NjdXJzLCB0aGUgcmVjdGFuZ2xlIGxlYXZlcyB0
cmFpbHMgYmVoaW5kIGl0LgorICAgIGdsLnVuaWZvcm0xZih4VHJhbnNsYXRpb25Mb2MsIDAuMCk7
CisgICAgZ2wuZW5hYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisgICAgZ2wudW5pZm9ybTRm
dihjb2xvckxvYywgcmVkKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7
CisgICAgZ2wuZGlzYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworCisgICAgLy8gQW5pbWF0
ZSB0aGUgcmVjdGFuZ2xlIGZyb20gdGhlIGxlZnQgdG8gdGhlIHJpZ2h0IGhhbGYgb2YgdGhlIHZp
ZXdwb3J0LgorICAgIGdsLnVuaWZvcm0xZih4VHJhbnNsYXRpb25Mb2MsIChOVU1fRlJBTUVTIC0g
ZnJhbWVzVG9HbykgLyBOVU1fRlJBTUVTKTsKKyAgICAvLyBEcmF3IHRoZSBsYXN0IGZyYW1lIHdp
dGggZ3JlZW4gc28gYW55IChpbmNvcnJlY3QpIHRyYWlscyBhcmUgdmlzaWJseSByZWQuCisgICAg
aWYgKGZyYW1lc1RvR28gPT0gMCkKKyAgICAgICAgZ2wudW5pZm9ybTRmdihjb2xvckxvYywgZ3Jl
ZW4pOworICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKworICAgIGlmIChm
cmFtZXNUb0dvLS0gPT0gMCkgeworICAgICAgICAvLyBUaGUgbGVmdCBoYWxmIG9mIHRoZSBjYW52
YXMgc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrLAorICAgICAgICAvLyB3aGljaCBjb21lcyBm
cm9tIHRoZSBpbXBsaWNpdCBjbGVhciBqdXN0IGJlZm9yZSBkcmF3aW5nIHRoZQorICAgICAgICAv
LyByZWN0YW5nbGUgd2l0aG91dCByYXN0ZXJpemVyIGRpc2NhcmQgZW5hYmxlZC4KKyAgICAgICAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgc3ogLyAyLCBzeiwgdHJhbnNwYXJlbnRCbGFj
a1JlbmRlciwgImxlZnQgaGFsZiBvZiBjYW52YXMgc2hvdWxkIGJlIGNsZWFyIiwgMyk7CisgICAg
ICAgIC8vIFRoZSByaWdodCBoYWxmIG9mIHRoZSBjYW52YXMgc2hvdWxkIGJlIHNvbGlkIGdyZWVu
LCBmcm9tCisgICAgICAgIC8vIHRoZSBsYXN0IHJlbmRlciBvZiB0aGUgdHJhbnNsYXRlZCByZWN0
YW5nbGUuCisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHN6IC8gMiwgMCwgc3ogLyAy
LCBzeiwgZ3JlZW5SZW5kZXIsICJyaWdodCBoYWxmIG9mIGNhbnZhcyBzaG91bGQgYmUgZ3JlZW4i
LCAzKTsKKyAgICAgICAgcnVuUmVhZFBpeGVsc1Rlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyRHJhd1Rlc3RGcmFtZSk7CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5SZWFkUGl4ZWxzVGVzdCgpIHsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQg
cmVhZFBpeGVscyB3aXRoIHJhc3Rlcml6ZXIgZGlzY2FyZCBlbmFibGVkIHJlY2VpdmVzIGltcGxp
Y2l0bHkgY2xlYXJlZCBkYXRhIik7CisgICAgZnJhbWVzVG9HbyA9IE5VTV9GUkFNRVM7ICAvLyBS
ZXNldCBzdGF0ZS4KKyAgICAvLyBDbGVhciB0byB0cmFuc3BhcmVudCBibGFjay4KKyAgICBnbC5j
bGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgLy8gU3RhcnQgd2l0aCByYXN0ZXJpemVyIGRpc2NhcmQgZW5hYmxlZC4K
KyAgICBnbC5lbmFibGUoZ2wuUkFTVEVSSVpFUl9ESVNDQVJEKTsKKyAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUocmVuZGVyUmVhZFBpeGVsc1Rlc3RGcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHJlbmRl
clJlYWRQaXhlbHNUZXN0RnJhbWUoKSB7CisgICAgLy8gUmFzdGVyaXplciBkaXNjYXJkIGlzIGVu
YWJsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHRlc3QuCisKKyAgICAvLyBUaGUgY2FudmFz
IHNob3VsZCBhbHdheXMgY29udGFpbiB0cmFuc3BhcmVudCBibGFjayBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBmcmFtZS4KKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBzeiwgc3os
IHRyYW5zcGFyZW50QmxhY2tSZW5kZXIsIHVuZGVmaW5lZCwgMyk7CisKKyAgICBnbC5kaXNhYmxl
KGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisgICAgLy8gQ2xlYXIgdG8gcmVkLgorICAgIGdsLmNs
ZWFyQ29sb3IoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICAvLyBFbmFibGUgcmFzdGVyaXplciBkaXNjYXJkIGFnYWluLgorICAgIGds
LmVuYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworCisgICAgaWYgKC0tZnJhbWVzVG9HbyA9
PSAwKSB7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyUmVhZFBpeGVsc1Rlc3RGcmFtZSk7CisgICAgfQorfQor
Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9y
ZWFkLWRyYXctd2hlbi1taXNzaW5nLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL3JlYWQtZHJhdy13
aGVuLW1pc3NpbmctaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWQ4Yzc0YjlkNGQxZDkyMjMyOWY5
ODM1MjQ5ZmU4ZDVmODkxZGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9yZWFkLWRy
YXctd2hlbi1taXNzaW5nLWltYWdlLmh0bWwKQEAgLTAsMCArMSwyODggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlJlYWQgb3IgRHJhdyB3
aGVuIEF0dGFjaG1lbnQocykgTWlzcyBJbWFnZTwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjgiIGhlaWdodD0iOCI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiByZWFkaW5nL2RyYXdp
bmcgd2hlbiBjb2xvciBhdHRhY2htZW50KHMpIG1pc3MgaW1hZ2UuIik7CisKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworCit2YXIgdGV4X3Jl
YWQgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cit2YXIgdGV4X2RyYXcgPSBnbC5jcmVhdGVUZXh0dXJl
KCk7Cit2YXIgdGV4X2RlcHRoID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwordmFyIHRleF9zdGVuY2ls
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwordmFyIGZib19yZWFkID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKK3ZhciBmYm9fZHJhdyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cit2YXIgc2l6ZSA9
IDg7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3Rz
Iik7CisKKyAgICAvLyBSRUFEX0ZSQU1FQlVGRkVSIGhhcyBpbWFnZSBhdCBDT0xPUl9BVFRBQ0hN
RU5UMC4gUkVBRF9GUkFNRUJVRkZFUiBpcyBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4KKyAgICAvLyBS
ZWFkIGZyb20gQ09MT1JfQVRUQUNITUVOVDEsIHdoaWNoIGhhcyBubyBpbWFnZSBhdHRhY2hlZC4K
KyAgICBpbml0X3JlYWRfZmJvKCk7CisgICAgcmVhZCgpOworCisgICAgLy8gRFJBV19GUkFNRUJV
RkZFUiBoYXMgaW1hZ2UgYXQgQ09MT1JfQVRUQUNITUVOVDAuIERSQVdfRlJBTUVCVUZGRVIgaXMg
ZnJhbWVidWZmZXIgY29tcGxldGUuCisgICAgLy8gQ2xlYXIgYW5kIGRyYXcgQ09MT1JfQVRUQUNI
TUVOVDEgb3IgQ09MT1JfQVRUQUNITUVOVDAgKyBDT0xPUl9BVFRBQ0hNRU5UMSBhdHRhY2hpbmcg
cG9pbnQocykuCisgICAgaW5pdF9kcmF3X2ZibygpOworICAgIGNsZWFyKCk7CisgICAgZHJhdygp
OworCisgICAgYmxpdCgpOworfQorCitmdW5jdGlvbiBpbml0X3JlYWRfZmJvKCkgeworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleF9yZWFkKTsKKyAgICB3dHUuZmlsbFRleHR1
cmUoZ2wsIHRleF9yZWFkLCBzaXplLCBzaXplLCBbMHgwLCAweGZmLCAweGZmLCAweGZmXSwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZ2wuUkdCQTgpOworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7CisgICAgZ2wuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRF
WFRVUkVfMkQsIHRleF9yZWFkLCAwKTsKKyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5SRUFEX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLiIpOworICAgICAgICByZXR1
cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZnJhbWVidWZmZXIgY29tcGxl
dGUhIik7CisgICAgfQorfQorCitmdW5jdGlvbiBpbml0X2RyYXdfZmJvKCkgeworICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleF9kcmF3KTsKKyAgICB3dHUuZmlsbFRleHR1cmUo
Z2wsIHRleF9kcmF3LCBzaXplLCBzaXplLCBbMHgwLCAweGZmLCAweGZmLCAweGZmXSwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgZ2wuUkdCQTgpOworICAgIHd0dS5maWxsVGV4dHVyZShn
bCwgdGV4X2RlcHRoLCBzaXplLCBzaXplLCBbMHg4MF0sIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwg
Z2wuVU5TSUdORURfSU5ULCBnbC5ERVBUSF9DT01QT05FTlQxNik7CisgICAgd3R1LmZpbGxUZXh0
dXJlKGdsLCB0ZXhfc3RlbmNpbCwgc2l6ZSwgc2l6ZSwgWzB4NDBdLCAwLCBnbC5ERVBUSF9TVEVO
Q0lMLCBnbC5VTlNJR05FRF9JTlRfMjRfOCwgZ2wuREVQVEgyNF9TVEVOQ0lMOCk7CisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZib19kcmF3KTsKKyAgICBnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRChnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4X2RyYXcsIDApOworICAgIGlmIChnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkRSQVdfRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBM
RVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZyYW1lYnVmZmVyIGluY29tcGxldGUuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJmcmFtZWJ1
ZmZlciBjb21wbGV0ZSEiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJlYWQoKSB7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJyZWFkIGZyb20gYSBjb2xvciBidWZmZXIgd2hpY2ggaGFzIG5v
IGltYWdlIGF0dGFjaGVkIik7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZib19yZWFkKTsKKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsK
KworICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSAqIHNpemUgKiA0KTsKKyAgICBn
bC5yZWFkUGl4ZWxzKDAsIDAsIHNpemUsIHNpemUsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAiU2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIHdoZW4gcmVhZGluZyBmcm9tIGEg
Y29sb3IgYnVmZmVyIHdpdGhvdXQgaW1hZ2UuIik7CisKKyAgICB2YXIgY29weV8yZCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb3B5XzJk
KTsKKyAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMCwg
MCwgc2l6ZSwgc2l6ZSwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJTaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gd2hlbiByZWFk
aW5nIGZyb20gYSBjb2xvciBidWZmZXIgd2l0aG91dCBpbWFnZS4iKTsKKworICAgIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTgsIHNpemUsIHNpemUsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIHNpemUgLyAyLCBzaXplIC8gMiwgMCwgMCwgc2l6ZSAvIDIsIHNpemUgLyAy
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlNo
b3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiB3aGVuIHJlYWRpbmcgZnJvbSBhIGNvbG9y
IGJ1ZmZlciB3aXRob3V0IGltYWdlLiIpOworCisgICAgdmFyIGNvcHlfM2QgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgY29weV8zZCk7Cisg
ICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBOCwgc2l6ZSwgc2l6ZSwg
MiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgZ2wuY29weVRleFN1
YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgc2l6ZSAvIDIsIHNpemUgLyAyLCAwLCAwLCAwLCBz
aXplIC8gMiwgc2l6ZSAvIDIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiU2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIHdoZW4gcmVh
ZGluZyBmcm9tIGEgY29sb3IgYnVmZmVyIHdpdGhvdXQgaW1hZ2UuIik7CisKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKGNvcHlf
MmQpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfM0QsIG51bGwpOworICAgIGdsLmRl
bGV0ZVRleHR1cmUoY29weV8zZCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVGV4dHVyZVZhbHVlKGZi
bywgYnVmZmVyLCB2YWx1ZSkgeworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1F
QlVGRkVSLCBmYm8pOworICAgIGdsLnJlYWRCdWZmZXIoYnVmZmVyKTsKKyAgICB3dHUuY2hlY2tD
YW52YXMoZ2wsIHZhbHVlKTsKKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQw
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7Cit9
CisKK2Z1bmN0aW9uIGNsZWFyKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2xlYXIg
YSBjb2xvciBidWZmZXIgd2hpY2ggaGFzIG5vIGltYWdlIGF0dGFjaGVkIik7CisKKyAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvX2RyYXcpOworICAgIHZhciBj
b2xvciA9IFswLjAsIDEuMCwgMC4wLCAxLjBdOworICAgIGdsLmNsZWFyQ29sb3IoY29sb3JbMF0s
IGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3JbM10pOworICAgIGdsLmRyYXdCdWZmZXJzKFtnbC5O
T05FLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMV0pOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxk
IGJlIG5vIGVycm9yLiIpOworICAgIC8vIFRoZSBpbWFnZSBjb2xvciBhdCBDT0xPUl9BVFRBQ0hN
RU5UMCBzaG91bGQgbm90IGJlIGNoYW5nZWQuCisgICAgY2hlY2tUZXh0dXJlVmFsdWUoZmJvX2Ry
YXcsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBbMCwgMjU1LCAyNTUsIDI1NV0pOworCisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZib19kcmF3KTsKKyAgICBnbC5k
cmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7
CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3IuIik7CisgICAgLy8gVGhl
IGltYWdlIGNvbG9yIGF0IENPTE9SX0FUVEFDSE1FTlQwIHNob3VsZCBiZSBjaGFuZ2VkLgorICAg
IGNoZWNrVGV4dHVyZVZhbHVlKGZib19kcmF3LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgWzAsIDI1
NSwgMCwgMjU1XSk7CisKKyAgICB2YXIgZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoY29sb3IpOwor
ICAgIGdsLmNsZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDEsIGRhdGEpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9yLiIpOworfQorCitm
dW5jdGlvbiBkcmF3KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZHJhdyB0byBhIGNv
bG9yIGJ1ZmZlciB3aGljaCBoYXMgbm8gaW1hZ2UgYXR0YWNoZWQiKTsKKworICAgIHZhciBwcm9n
cmFtID0gd3R1LnNldHVwU2ltcGxlQ29sb3JQcm9ncmFtKGdsLCAwKTsKKyAgICBnbC51bmlmb3Jt
NGYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yIiksIDEsIDAsIDAsIDEp
OworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwKTsKKworICAgIC8vIENhbGwgdG8gZHJhd0Fy
cmF5cworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJh
dyk7CisgICAgZ2wuZHJhd0J1ZmZlcnMoW2dsLk5PTkUsIGdsLkNPTE9SX0FUVEFDSE1FTlQxXSk7
CisgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3IuIik7CisgICAgLy8gVGhlIGltYWdlIGNv
bG9yIGF0IENPTE9SX0FUVEFDSE1FTlQwIHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBjaGVj
a1RleHR1cmVWYWx1ZShmYm9fZHJhdywgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIFswLCAyNTUsIDAs
IDI1NV0pOworCisgICAgZ2wuZHJhd0J1ZmZlcnMoW2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMV0pOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9yLiIpOwor
ICAgIC8vIFRoZSBpbWFnZSBjb2xvciBhdCBDT0xPUl9BVFRBQ0hNRU5UMCBzaG91bGQgYmUgY2hh
bmdlZC4KKyAgICBjaGVja1RleHR1cmVWYWx1ZShmYm9fZHJhdywgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIFsyNTUsIDAsIDAsIDI1NV0pOworCisgICAgLy8gQ2FsbCB0byBkcmF3RWxlbWVudHMKKyAg
ICBnbC51bmlmb3JtNGYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X2NvbG9yIiks
IDEsIDEsIDAsIDEpOworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCAxKTsKKyAgICBnbC5k
cmF3QnVmZmVycyhbZ2wuTk9ORSwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdKTsKKyAgICB3dHUuZHJh
d0luZGV4ZWRRdWFkKGdsLCAxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlNob3VsZCBiZSBubyBlcnJvci4iKTsKKyAgICAvLyBUaGUgaW1hZ2UgY29sb3IgYXQg
Q09MT1JfQVRUQUNITUVOVDAgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLgorICAgIGNoZWNrVGV4dHVy
ZVZhbHVlKGZib19kcmF3LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgWzI1NSwgMCwgMCwgMjU1XSk7
CisKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkNPTE9SX0FU
VEFDSE1FTlQxXSk7CisgICAgd3R1LmRyYXdJbmRleGVkUXVhZChnbCwgMSk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3IuIik7Cisg
ICAgLy8gVGhlIGltYWdlIGNvbG9yIGF0IENPTE9SX0FUVEFDSE1FTlQwIHNob3VsZCBiZSBjaGFu
Z2VkLgorICAgIGNoZWNrVGV4dHVyZVZhbHVlKGZib19kcmF3LCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgWzI1NSwgMjU1LCAwLCAyNTVdKTsKK30KKworZnVuY3Rpb24gYmxpdCgpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImJsaXQgY29sb3IgYnVmZmVyKHMpIHdoaWNoIGhhdmUgbm8gaW1h
Z2UgYXR0YWNoZWQiKTsKKyAgICAvLyBTb21lIG9yIGFsbCBkcmF3IGJ1ZmZlcnMgaGF2ZSBubyBp
bWFnZS4gUmVhZCBidWZmZXIgaGF2ZSBpbWFnZS4gSXQgc2hvdWxkIGJlIE9LLgorICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsKKyAgICBnbC5yZWFk
QnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wuTk9O
RSwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwg
c2l6ZSwgc2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVB
UkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQg
YmUgbm8gZXJyb3IuIik7CisgICAgLy8gVGhlIGltYWdlIGNvbG9yIGF0IENPTE9SX0FUVEFDSE1F
TlQwIGluIGRyYXcgZmJvIHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBjaGVja1RleHR1cmVW
YWx1ZShmYm9fZHJhdywgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIFsyNTUsIDI1NSwgMCwgMjU1XSk7
CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvX2RyYXcp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7
CisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7CisgICAgZ2wuZHJhd0J1
ZmZlcnMoW2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMV0pOworICAg
IGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCBzaXplLCBzaXplLCAwLCAwLCBzaXplLCBzaXplLCBn
bC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvci4iKTsKKyAgICAvLyBUaGUgaW1h
Z2UgY29sb3IgYXQgQ09MT1JfQVRUQUNITUVOVDAgaW4gZHJhdyBmYm8gc2hvdWxkIGJlIGNoYW5n
ZWQuCisgICAgY2hlY2tUZXh0dXJlVmFsdWUoZmJvX2RyYXcsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBbMCwgMjU1LCAyNTUsIDI1NV0pOworCisgICAgLy8gRHJhdyBidWZmZXIocykgaGF2ZSBubyBp
bWFnZS4gUmVhZCBidWZmZXIgaGF2ZSBubyBpbWFnZS4gSXQgc2hvdWxkIGJlIE9LLgorICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsKKyAgICBnbC5y
ZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsKKyAgICBnbC5kcmF3QnVmZmVycyhbZ2wu
Tk9ORSwgZ2wuQ09MT1JfQVRUQUNITUVOVDFdKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwg
MCwgc2l6ZSwgc2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wu
TkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91
bGQgYmUgbm8gZXJyb3IuIik7CisgICAgLy8gVGhlIGltYWdlIGNvbG9yIGF0IENPTE9SX0FUVEFD
SE1FTlQwIGluIGRyYXcgZmJvIHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBjaGVja1RleHR1
cmVWYWx1ZShmYm9fZHJhdywgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIFswLCAyNTUsIDI1NSwgMjU1
XSk7CisKKyAgICAvLyBSZWFkIGJ1ZmZlciBoYXZlIG5vIGltYWdlLiBTb21lIG9yIGFsbCBkcmF3
IGJ1ZmZlcnMgaGF2ZSBpbWFnZS4gSXQgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9O
LgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsK
KyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsKKyAgICBnbC5kcmF3QnVm
ZmVycyhbZ2wuQ09MT1JfQVRUQUNITUVOVDBdKTsKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwg
MCwgc2l6ZSwgc2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wu
TkVBUkVTVCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJTaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gd2hlbiByZWFkIGJ1ZmZlciBt
aXNzZXMgaW1hZ2UuIik7CisgICAgLy8gVGhlIGltYWdlIGNvbG9yIGF0IENPTE9SX0FUVEFDSE1F
TlQwIGluIGRyYXcgZmJvIHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBjaGVja1RleHR1cmVW
YWx1ZShmYm9fZHJhdywgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIFswLCAyNTUsIDI1NSwgMjU1XSk7
CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvX2RyYXcp
OworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9fcmVhZCk7
CisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSk7CisgICAgZ2wuZHJhd0J1
ZmZlcnMoW2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMV0pOworICAg
IGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCBzaXplLCBzaXplLCAwLCAwLCBzaXplLCBzaXplLCBn
bC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJB
VElPTiB3aGVuIHJlYWQgYnVmZmVyIG1pc3NlcyBpbWFnZS4iKTsKKyAgICAvLyBUaGUgaW1hZ2Ug
Y29sb3IgYXQgQ09MT1JfQVRUQUNITUVOVDAgaW4gZHJhdyBmYm8gc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkLgorICAgIGNoZWNrVGV4dHVyZVZhbHVlKGZib19kcmF3LCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgWzAsIDI1NSwgMjU1LCAyNTVdKTsKKworICAgIC8vIERlcHRoIGJ1ZmZlciBpbiByZWFkIGZi
byBoYXMgbm8gaW1hZ2UuIEl0IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiBpZiBk
ZXB0aCBidWZmZXIgaW4gZHJhdyBmYm8gaGFzIGltYWdlLgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm9fZHJhdyk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib19yZWFkKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJF
XzJELCB0ZXhfZGVwdGgsIDApOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCBzaXplLCBz
aXplLCAwLCAwLCBzaXplLCBzaXplLCBnbC5ERVBUSF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlNob3Vs
ZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiB3aGVuIGRlcHRoIGJ1ZmZlciBtaXNzZXMgaW1h
Z2UuIik7CisKKyAgICAvLyBEZXB0aCBidWZmZXIgaW4gcmVhZCBmYm8gaGFzIG5vIGltYWdlLiBJ
dCBzaG91bGQgYmUgT0sgaWYgZGVwdGggYnVmZmVyIGluIGRyYXcgZmJvIGhhcyBubyBpbWFnZSB0
b28uCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZib19kcmF3
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZmJvX3JlYWQp
OworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkRF
UFRIX0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgIGdsLmJsaXRGcmFt
ZWJ1ZmZlcigwLCAwLCBzaXplLCBzaXplLCAwLCAwLCBzaXplLCBzaXplLCBnbC5ERVBUSF9CVUZG
RVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgIlNob3VsZCBiZSBubyBlcnJvci4iKTsKKyAgICAvLyBWYWxpZGF0ZSBzb21lIG90aGVy
IHBhcmFtZXRlcnMgYXMgdXN1YWwKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgc2l6ZSwg
c2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuREVQVEhfQlVGRkVSX0JJVCwgZ2wuTElORUFSKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFs
aWQgZmlsdGVyIik7CisKKyAgICAvLyBTdGVuY2lsIGJ1ZmZlciBpbiByZWFkIGZibyBoYXMgbm8g
aW1hZ2UuIEl0IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiBpZiBzdGVuY2lsIGJ1
ZmZlciBpbiBkcmF3IGZibyBoYXMgaW1hZ2UuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRS
QVdfRlJBTUVCVUZGRVIsIGZib19kcmF3KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVB
RF9GUkFNRUJVRkZFUiwgZmJvX3JlYWQpOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkRSQVdfRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuVEVYVFVSRV8yRCwg
dGV4X3N0ZW5jaWwsIDApOworICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCBzaXplLCBzaXpl
LCAwLCAwLCBzaXplLCBzaXplLCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiU2hvdWxk
IGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIHdoZW4gc3RlbmNpbCBidWZmZXIgbWlzc2VzIGlt
YWdlLiIpOworCisgICAgLy8gU3RlbmNpbCBidWZmZXIgaW4gcmVhZCBmYm8gaGFzIG5vIGltYWdl
LiBJdCBzaG91bGQgYmUgT0sgaWYgc3RlbmNpbCBidWZmZXIgaW4gZHJhdyBmYm8gaGFzIG5vIGlt
YWdlIHRvby4KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJv
X2RyYXcpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9f
cmVhZCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJBV19GUkFNRUJVRkZFUiwg
Z2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgICBnbC5i
bGl0RnJhbWVidWZmZXIoMCwgMCwgc2l6ZSwgc2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuU1RF
TkNJTF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvci4iKTsKKyAgICAvLyBWYWxpZGF0ZSBz
b21lIG90aGVyIHBhcmFtZXRlcnMgYXMgdXN1YWwKKyAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwg
MCwgc2l6ZSwgc2l6ZSwgMCwgMCwgc2l6ZSwgc2l6ZSwgZ2wuU1RFTkNJTF9CVUZGRVJfQklULCBn
bC5MSU5FQVIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAiaW52YWxpZCBmaWx0ZXIiKTsKK30KKworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgbnVsbCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7
CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgbnVsbCk7CitnbC5kZWxl
dGVUZXh0dXJlKHRleF9yZWFkKTsKK2dsLmRlbGV0ZVRleHR1cmUodGV4X2RyYXcpOworZ2wuZGVs
ZXRlVGV4dHVyZSh0ZXhfZGVwdGgpOworZ2wuZGVsZXRlVGV4dHVyZSh0ZXhfc3RlbmNpbCk7Citn
bC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9fcmVhZCk7CitnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9f
ZHJhdyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy9yZ2ItZm9ybWF0LXN1cHBvcnQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9yZW5kZXJpbmcvcmdiLWZvcm1hdC1zdXBwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3MTJhZTY4
YjFiMTQ0MjMzZGUxYTMyZjAyYTQxMmIyOGFiZDZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5k
ZXJpbmcvcmdiLWZvcm1hdC1zdXBwb3J0Lmh0bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2NyaXB0
aW9uKCJWZXJpZnkgUkdCL1JHQjggdGV4dHVyZXMgYW5kIHJlbmRlcmJ1ZmZlcnMgc3VwcG9ydCIp
OworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAy
KTsKKworZnVuY3Rpb24gdGVzdFJlbmRlcmJ1ZmZlcih3aWR0aCwgaGVpZ2h0KSB7CisgICAgdmFy
IHNhbXBsZXMgPSBnbC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIs
IGdsLlJHQjgsIGdsLlNBTVBMRVMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIGdldEludGVybmFsZm9ybWF0UGFyYW1l
dGVyKCkiKTsKKworICAgIGlmICghc2FtcGxlcyB8fCBzYW1wbGVzLmxlbmd0aCA9PSAwKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoImdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyIG9uIFJHQjggZmFp
bHMgdG8gcmV0dXJuIHZhbGlkIHNhbXBsZXMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHNhbXBsZXMubGVuZ3RoICsgMjsgKytpZHgpIHsK
KyAgICAgICAgZGVidWcoIiIpOworICAgICAgICB2YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVG
RkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICB2YXIgc2FtcGxlQ291bnQgPSAwOworICAgICAg
ICBzd2l0Y2ggKGlkeCkgeworICAgICAgICAgIGNhc2Ugc2FtcGxlcy5sZW5ndGg6CisgICAgICAg
ICAgICBzYW1wbGVDb3VudCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IHNhbXBsZXMubGVuZ3RoICsgMToKKyAgICAgICAgICAgIHNhbXBsZUNvdW50ID0gLTE7IC8vIG5v
biBtdWx0aXNhbXBsZWQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBzYW1wbGVDb3VudCA9IHNhbXBsZXNbaWR4XTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChzYW1wbGVDb3VudCA8IDApIHsKKyAgICAgICAgICAgIGRlYnVnKCJ0ZXN0IG5vbi1t
dWx0aXNhbXBsZWQgUkdCOCByZW5kZXJidWZmZXIiKTsKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0I4LCAyLCAyKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGRlYnVnKCJ0ZXN0IFJHQjggcmVuZGVyYnVmZmVyIHdpdGggIiAr
IHNhbXBsZUNvdW50ICsgIiBzYW1wbGVzIik7CisgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgZ2wuUkdCOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgIH0KKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gcmVuZGVyYnVmZmVyU3Rv
cmFnZXtNdWx0aXNhbXBsZX0iKTsKKworICAgICAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8p
OworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmcmFtZWJ1ZmZl
ciB3aXRoIHJlbmRlcmJ1ZmZlciBpcyBpbmNvbXBsZXRlIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJmcmFtZWJ1ZmZlciB3aXRoIHJlbmRlcmJ1ZmZlciBpcyBj
b21wbGV0ZSIpOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigxLCAwLCAxLCAx
KTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQklUKTsKKyAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gY2xlYXIo
KSIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFRleHR1cmUod2lkdGgsIGhlaWdodCkgewor
ICAgIHZhciBmb3JtYXRzID0gWyAiUkdCIiwgIlJHQjgiIF07CisgICAgZm9yICh2YXIgaWR4ID0g
MDsgaWR4IDwgZm9ybWF0cy5sZW5ndGg7ICsraWR4KSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZGVidWcoInRlc3QgdGV4dHVyZSBmb3JtYXQgIiArIGZvcm1hdHNbaWR4XSk7CisgICAg
ICAgIHZhciBpbnRlcm5hbGZvcm1hdCA9IGdsW2Zvcm1hdHNbaWR4XV07CisgICAgICAgIHZhciB0
ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hv
dWxkIGJlIG5vIGVycm9ycyBmcm9tIHRleHR1cmUgc2V0dXAiKTsKKworICAgICAgICB2YXIgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7
CisgICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAh
PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZnJh
bWVidWZmZXIgd2l0aCB0ZXh0dXJlIGlzIGluY29tcGxldGUiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoImZyYW1lYnVmZmVyIHdpdGggdGV4dHVyZSBpcyBjb21w
bGV0ZSIpOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigxLCAwLCAxLCAxKTsK
KyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQklUKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gY2xlYXIoKSIp
OworICAgIH0KK30KKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoJ2NhbnZhcy5nZXRDb250
ZXh0KCkgZmFpbGVkJyk7Cit9IGVsc2UgeworICAgIHRlc3RSZW5kZXJidWZmZXIoMiwgMik7Cisg
ICAgdGVzdFRleHR1cmUoMiwgMik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvdGV4dHVyZS1z
d2l0Y2gtcGVyZm9ybWFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvdGV4dHVyZS1zd2l0Y2gtcGVyZm9y
bWFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTdhOWUyZjU3OGZjNTRlYmRlZWU0MTRkZTUyODc1OGNm
YjEyMmMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3JlbmRlcmluZy90ZXh0dXJlLXN3aXRjaC1wZXJm
b3JtYW5jZS5odG1sCkBAIC0wLDAgKzEsMTAxIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCAyIFRleHR1cmUgU3dpdGNoIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiRW5zdXJlcyB0aGF0IHN3aXRjaGluZyB0aGUgdGV4dHVyZSByZWZl
cmVuY2VkIGJ5IGEgc2FtcGxlciB1bmlmb3JtIHBlcmZvcm1zIHJlYXNvbmFibHkgd2VsbC4iKTsK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdjYW52YXMnKTsKK2NhbnZhcy53aWR0aCA9IDMyOworY2FudmFzLmhlaWdodCA9IDMy
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVuZGVmaW5lZCwgMik7Citp
ZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgZmlu
aXNoVGVzdCgpOworfSBlbHNlIHsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1
YWQoZ2wpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5hY3RpdmVUZXh0
dXJlKGdsLlRFWFRVUkUwKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsK
KyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworICB2YXIgdGV4MiA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSk7CisgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisK
KyAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisKKyAg
dmFyIFJVTlRJTUUgPSAyMDAwOworICB2YXIgVEhSRVNIT0xEID0gMC44OworICB2YXIgYmFzZVN0
YXJ0VGltZSA9IDA7CisgIHZhciBiYXNlRnJhbWVDb3VudCA9IDA7CisgIHZhciB0ZXN0U3RhcnRU
aW1lID0gMDsKKyAgdmFyIHRlc3RGcmFtZUNvdW50ID0gMDsKKworICBiYXNlU3RhcnRUaW1lID0g
RGF0ZS5ub3coKTsKKyAgZnVuY3Rpb24gZHJhd0Jhc2VsaW5lKCkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNDAwOyArK2kpIHsKKyAgICAgIGdsLnVuaWZvcm0xaShsb2MsIDApOworICAgICAg
Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgICAgZ2wudW5pZm9ybTFpKGxv
YywgMCk7CisgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgfQor
CisgICAgKytiYXNlRnJhbWVDb3VudDsKKworICAgIGlmIChEYXRlLm5vdygpIC0gYmFzZVN0YXJ0
VGltZSA+IFJVTlRJTUUpIHsKKyAgICAgIHRlc3RTdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAg
ICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRyYXdUZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRyYXdCYXNlbGluZSk7CisgICAgfQorICB9CisKKyAgZnVu
Y3Rpb24gZHJhd1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0MDA7ICsraSkgewor
ICAgICAgZ2wudW5pZm9ybTFpKGxvYywgMCk7CisgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFO
R0xFUywgMCwgNik7CisgICAgICBnbC51bmlmb3JtMWkobG9jLCAxKTsKKyAgICAgIGdsLmRyYXdB
cnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB9CisKKyAgICArK3Rlc3RGcmFtZUNvdW50
OworCisgICAgaWYgKERhdGUubm93KCkgLSB0ZXN0U3RhcnRUaW1lID4gUlVOVElNRSkgeworICAg
ICAgdmFyIHBlcmZTdHJpbmcgPSAiIC0gYWNoaWV2ZWQgIiArIHRlc3RGcmFtZUNvdW50ICsgIiBm
cmFtZXMgaW4gIiArICgoRGF0ZS5ub3coKSAtIHRlc3RTdGFydFRpbWUpIC8gMTAwMC4wKSArCisg
ICAgICAgICIgc2Vjb25kcyAoIiArICh0ZXN0RnJhbWVDb3VudCAvIGJhc2VGcmFtZUNvdW50KS50
b0ZpeGVkKDIpICsgIiB0aW1lcyBiYXNlbGluZSBwZXJmb3JtYW5jZSkiOworICAgICAgaWYgKHRl
c3RGcmFtZUNvdW50ID4gYmFzZUZyYW1lQ291bnQgKiBUSFJFU0hPTEQpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiVGV4dHVyZSBzd2l0Y2hpbmcgZGlkIG5vdCBzaWduaWZpY2FudGx5IGh1cnQgcGVy
Zm9ybWFuY2UiICsgcGVyZlN0cmluZyk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJUZXh0dXJlIHN3aXRjaGluZyBzaWduaWZpY2FudGx5IGh1cnQgcGVyZm9ybWFuY2UiICsg
cGVyZlN0cmluZyk7CisgICAgICB9CisgICAgICBjb25zb2xlLmxvZyh0ZXN0RnJhbWVDb3VudCk7
CisgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlcXVlc3RBbmltYXRp
b25GcmFtZShkcmF3VGVzdCk7CisgICAgfQorICB9CisKKyAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KGRyYXdCYXNlbGluZSk7Cit9Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL3VuaWZvcm0t
YmxvY2stYnVmZmVyLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvdW5pZm9ybS1ibG9jay1idWZmZXIt
c2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Y2M1MjA1ZDQwODRhZWU2MmQ2ZWUyMjAwM2FhOTkyZGYw
Y2VmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL3VuaWZvcm0tYmxvY2stYnVmZmVy
LXNpemUuaHRtbApAQCAtMCwwICsxLDIyOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybUJsb2NrIEJ1ZmZlciBTaXpl
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ndnNoYWRlcicgdHlwZT0neC1z
aGFkZXIveC12ZXJ0ZXgnPiN2ZXJzaW9uIDMwMCBlcworbGF5b3V0KGxvY2F0aW9uPTApIGluIHZl
YzMgcDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHAueHl6LCAxLjAp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSdmc2hhZGVyJyB0eXBlPSd4LXNoYWRlci94LWZy
YWdtZW50Jz4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworbGF5b3V0
KGxvY2F0aW9uPTApIG91dCB2ZWM0IG9Db2xvcjsKKwordW5pZm9ybSBVQk9EYXRhIHsKKyAgICBm
bG9hdCBVQk9SZWQ7CisgICAgZmxvYXQgVUJPR3JlZW47CisgICAgZmxvYXQgVUJPQmx1ZTsKK307
CisKK3ZvaWQgbWFpbigpCit7CisgICAgb0NvbG9yID0gdmVjNChVQk9SZWQsIFVCT0dyZWVuLCBV
Qk9CbHVlLCAxLjApOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4
OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIGFu
IGFjdGl2ZSBVbmlmb3JtQmxvY2sgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIGEgbGFyZ2UgZW5v
dWdoIGJ1ZmZlciBvYmplY3QiKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOworCitpZiAoIWds
KSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBl
bHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgcnVu
RHJhd0FycmF5c1Rlc3RzKCk7CisgICAgcnVuRHJhd0VsZW1lbnRzVGVzdHMoKTsKK30KKworZnVu
Y3Rpb24gcnVuRHJhd0FycmF5c1Rlc3RzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VGVzdGluZyBkcmF3QXJyYXlzIGFuZCBkcmF3QXJyYXlzSW5zdGFuY2VkIik7CisKKyAgICB2YXIg
aW5zdGFuY2VDb3VudCA9IDQ7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10pOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY29tcGlsZSBzaGFkZXIgd2l0aCB1bmlmb3JtIGJsb2Nr
cyB3aXRob3V0IGVycm9yIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgYmxv
Y2tJbmRleCA9IGdsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sICJVQk9EYXRhIik7Cisg
ICAgdmFyIGJsb2NrU2l6ZSA9IGdsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9n
cmFtLCBibG9ja0luZGV4LCBnbC5VTklGT1JNX0JMT0NLX0RBVEFfU0laRSk7CisgICAgdmFyIHVu
aWZvcm1JbmRpY2VzID0gZ2wuZ2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgWyJVQk9SZWQiLCAi
VUJPR3JlZW4iLCAiVUJPQmx1ZSJdKTsKKyAgICB2YXIgdW5pZm9ybU9mZnNldHMgPSBnbC5nZXRB
Y3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9PRkZTRVQp
OworCisgICAgaWYgKHVuaWZvcm1PZmZzZXRzLmxlbmd0aCA8IDMpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiQ291bGQgbm90IHF1ZXJ5IHVuaWZvcm0gb2Zmc2V0cyIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdmFyIHVib0FycmF5ID0gbmV3IEFycmF5QnVmZmVyKGJsb2NrU2l6ZSk7
CisgICAgdmFyIHVib0Zsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkodWJvQXJyYXkpOworICAg
IHVib0Zsb2F0Vmlld1t1bmlmb3JtT2Zmc2V0c1swXSAvIEZsb2F0MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVF0gPSAxLjA7IC8vIFVCT1JlZAorICAgIHVib0Zsb2F0Vmlld1t1bmlmb3JtT2Zmc2V0
c1sxXSAvIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVF0gPSAwLjA7IC8vIFVCT0dyZWVu
CisgICAgdWJvRmxvYXRWaWV3W3VuaWZvcm1PZmZzZXRzWzJdIC8gRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5UXSA9IDAuMDsgLy8gVUJPQmx1ZQorCisgICAgdmFyIGJpbmRpbmcgPSAxOwor
ICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgYmxvY2tJbmRleCwgYmluZGluZyk7
CisKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlNldCB1cCBzdWNjZWVkZWQiKTsKKworICAgIHZhciBidWZmZXIg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVS
LCBidWZmZXIpOworCisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0FycmF5
czogVW5pZm9ybUJsb2NrIGlzIG5vdCBiYWNrZWQgYnkgYSBidWZmZXIiKTsKKyAgICBnbC5kcmF3
QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QXJyYXlz
SW5zdGFuY2VkOiBVbmlmb3JtQmxvY2sgaXMgbm90IGJhY2tlZCBieSBhIGJ1ZmZlciIpOworCisg
ICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIGJpbmRpbmcsIGJ1ZmZlcik7
CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0FycmF5czogVW5pZm9ybUJs
b2NrIGlzIGJhY2tlZCBieSBhIGJ1ZmZlciB3aXRoIG5vIGRhdGEgc3RvcmUiKTsKKyAgICBnbC5k
cmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgMCwgNiwgaW5zdGFuY2VDb3VudCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QXJy
YXlzSW5zdGFuY2VkOiBVbmlmb3JtQmxvY2sgaXMgYmFja2VkIGJ5IGEgYnVmZmVyIHdpdGggbm8g
ZGF0YSBzdG9yZSIpOworCisgICAgdmFyIGFycmF5Tm90TGFyZ2VFbm91Z2ggPSBuZXcgQXJyYXlC
dWZmZXIoYmxvY2tTaXplIC0gMSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZF
UiwgYXJyYXlOb3RMYXJnZUVub3VnaCwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICBnbC5kcmF3QXJy
YXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QXJyYXlzOiBVbmlmb3JtQmxvY2sgbm90IHBvcHVsYXRl
ZCB3aXRoIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciIpOworICAgIGdsLmRyYXdBcnJheXNJbnN0YW5j
ZWQoZ2wuVFJJQU5HTEVTLCAwLCA2LCBpbnN0YW5jZUNvdW50KTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImRyYXdBcnJheXNJbnN0YW5jZWQ6IFVu
aWZvcm1CbG9jayBub3QgcG9wdWxhdGVkIHdpdGggYSBsYXJnZSBlbm91Z2ggYnVmZmVyIik7CisK
KyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym9GbG9hdFZpZXcsIGdsLkRZ
TkFNSUNfRFJBVyk7CisgICAgZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3QXJy
YXlzOiBzaG91bGQgYmUgYWJsZSB0byBkcmF3IHdpdGggc3VmZmljaWVudCBkYXRhIGZvciBVbmlm
b3JtQmxvY2siKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJk
cmF3IGNhbGwgc2hvdWxkIHNldCBjYW52YXMgdG8gcmVkIiwgMik7CisgICAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdM
RVMsIDAsIDYsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiZHJhd0FycmF5c0luc3RhbmNlZDogc2hvdWxkIGJlIGFibGUgdG8gZHJhdyB3
aXRoIHN1ZmZpY2llbnQgZGF0YSBmb3IgVW5pZm9ybUJsb2NrIik7CisgICAgd3R1LmNoZWNrQ2Fu
dmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiZHJhdyBjYWxsIHNob3VsZCBzZXQgY2FudmFzIHRv
IHJlZCIsIDIpOworCisgICAgZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlVOSUZPUk1fQlVGRkVSLCBi
aW5kaW5nLCBidWZmZXIsIDAsIGJsb2NrU2l6ZSAtMSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiZHJhd0FycmF5czogYmluZEJ1ZmZlclJhbmdlIHNldCBzaXplIHRvbyBzbWFs
bCBmb3IgVW5pZm9ybUJsb2NrIik7CisgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklB
TkdMRVMsIDAsIDYsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0FycmF5c0luc3RhbmNlZDogYmluZEJ1ZmZlclJh
bmdlIHNldCBzaXplIHRvbyBzbWFsbCBmb3IgVW5pZm9ybUJsb2NrIik7Cit9CisKK2Z1bmN0aW9u
IHJ1bkRyYXdFbGVtZW50c1Rlc3RzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVz
dGluZyBkcmF3RWxlbWVudHMsIGRyYXdSYW5nZUVsZW1lbnRzIGFuZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQiKTsKKworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gNDsKKworICAgIHZhciBwcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSk7CisgICAgaWYg
KCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjb21waWxlIHNoYWRl
ciB3aXRoIHVuaWZvcm0gYmxvY2tzIHdpdGhvdXQgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHZhciBibG9ja0luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJv
Z3JhbSwgIlVCT0RhdGEiKTsKKyAgICB2YXIgYmxvY2tTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrUGFyYW1ldGVyKHByb2dyYW0sIGJsb2NrSW5kZXgsIGdsLlVOSUZPUk1fQkxPQ0tfREFU
QV9TSVpFKTsKKyAgICB2YXIgdW5pZm9ybUluZGljZXMgPSBnbC5nZXRVbmlmb3JtSW5kaWNlcyhw
cm9ncmFtLCBbIlVCT1JlZCIsICJVQk9HcmVlbiIsICJVQk9CbHVlIl0pOworICAgIHZhciB1bmlm
b3JtT2Zmc2V0cyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2Vz
LCBnbC5VTklGT1JNX09GRlNFVCk7CisKKyAgICBpZiAodW5pZm9ybU9mZnNldHMubGVuZ3RoIDwg
MykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgcXVlcnkgdW5pZm9ybSBvZmZzZXRz
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdWJvQXJyYXkgPSBuZXcgQXJy
YXlCdWZmZXIoYmxvY2tTaXplKTsKKyAgICB2YXIgdWJvRmxvYXRWaWV3ID0gbmV3IEZsb2F0MzJB
cnJheSh1Ym9BcnJheSk7CisgICAgdWJvRmxvYXRWaWV3W3VuaWZvcm1PZmZzZXRzWzBdIC8gRmxv
YXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UXSA9IDEuMDsgLy8gVUJPUmVkCisgICAgdWJvRmxv
YXRWaWV3W3VuaWZvcm1PZmZzZXRzWzFdIC8gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5U
XSA9IDAuMDsgLy8gVUJPR3JlZW4KKyAgICB1Ym9GbG9hdFZpZXdbdW5pZm9ybU9mZnNldHNbMl0g
LyBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlRdID0gMC4wOyAvLyBVQk9CbHVlCisKKyAg
ICB2YXIgYmluZGluZyA9IDE7CisgICAgZ2wudW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCBi
bG9ja0luZGV4LCBiaW5kaW5nKTsKKworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCAxLCAw
KTsKKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0IHVwIHN1
Y2NlZWRlZCIpOworCisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAgICBnbC5kcmF3RWxl
bWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3RWxlbWVudHM6IFVu
aWZvcm1CbG9jayBpcyBub3QgYmFja2VkIGJ5IGEgYnVmZmVyIik7CisgICAgZ2wuZHJhd1Jhbmdl
RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3UmFu
Z2VFbGVtZW50czogVW5pZm9ybUJsb2NrIGlzIG5vdCBiYWNrZWQgYnkgYSBidWZmZXIiKTsKKyAg
ICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9T
SE9SVCwgMCwgaW5zdGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3RWxlbWVudHNJbnN0YW5jZWQ6IFVuaWZvcm1CbG9jayBp
cyBub3QgYmFja2VkIGEgYnVmZmVyIik7CisKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklG
T1JNX0JVRkZFUiwgYmluZGluZywgYnVmZmVyKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJ
QU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3RWxlbWVudHM6IFVuaWZvcm1CbG9jayBp
cyBwb3B1bGF0ZWQgd2l0aCBhIGJ1ZmZlciB3aXRoIG5vIGRhdGEgc3RvcmUiKTsKKyAgICBnbC5k
cmF3UmFuZ2VFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
ImRyYXdSYW5nZUVsZW1lbnRzOiBVbmlmb3JtQmxvY2sgaXMgcG9wdWxhdGVkIHdpdGggYSBidWZm
ZXIgd2l0aCBubyBkYXRhIHN0b3JlIik7CisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGds
LlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0VsZW1l
bnRzSW5zdGFuY2VkOiBVbmlmb3JtQmxvY2sgaXMgcG9wdWxhdGVkIHdpdGggYSBidWZmZXIgd2l0
aCBubyBkYXRhIHN0b3JlIik7CisKKyAgICB2YXIgYXJyYXlOb3RMYXJnZUVub3VnaCA9IG5ldyBB
cnJheUJ1ZmZlcihibG9ja1NpemUgLSAxKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1f
QlVGRkVSLCBhcnJheU5vdExhcmdlRW5vdWdoLCBnbC5EWU5BTUlDX0RSQVcpOworICAgIGdsLmRy
YXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImRyYXdFbGVtZW50
czogVW5pZm9ybUJsb2NrIG5vdCBwb3B1bGF0ZWQgd2l0aCBhIGxhcmdlIGVub3VnaCBidWZmZXIi
KTsKKyAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIDUsIDYsIGdsLlVO
U0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgImRyYXdSYW5nZUVsZW1lbnRzOiBVbmlmb3JtQmxvY2sgbm90IHBvcHVsYXRl
ZCB3aXRoIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciIpOworICAgIGdsLmRyYXdFbGVtZW50c0luc3Rh
bmNlZChnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBpbnN0YW5jZUNvdW50
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImRy
YXdFbGVtZW50c0luc3RhbmNlZDogVW5pZm9ybUJsb2NrIG5vdCBwb3B1bGF0ZWQgd2l0aCBhIGxh
cmdlIGVub3VnaCBidWZmZXIiKTsKKworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZG
RVIsIHVib0Zsb2F0VmlldywgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICBnbC5jbGVhckNvbG9yKDAs
IDAsIDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmRy
YXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdFbGVtZW50czogc2hvdWxk
IGJlIGFibGUgdG8gZHJhdyB3aXRoIHN1ZmZpY2llbnQgZGF0YSBmb3IgVW5pZm9ybUJsb2NrIik7
CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiZHJhdyBjYWxsIHNo
b3VsZCBzZXQgY2FudmFzIHRvIHJlZCIsIDIpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgNSwgNiwg
Z2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiZHJhd1JhbmdlRWxlbWVudHM6IHNob3VsZCBiZSBhYmxlIHRvIGRyYXcgd2l0aCBz
dWZmaWNpZW50IGRhdGEgZm9yIFVuaWZvcm1CbG9jayIpOworICAgIHd0dS5jaGVja0NhbnZhcyhn
bCwgWzI1NSwgMCwgMCwgMjU1XSwgImRyYXcgY2FsbCBzaG91bGQgc2V0IGNhbnZhcyB0byByZWQi
LCAyKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBnbC5kcmF3RWxl
bWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgaW5z
dGFuY2VDb3VudCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJk
cmF3RWxlbWVudHNJbnN0YW5jZWQ6IHNob3VsZCBiZSBhYmxlIHRvIGRyYXcgd2l0aCBzdWZmaWNp
ZW50IGRhdGEgZm9yIFVuaWZvcm1CbG9jayIpOworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzI1
NSwgMCwgMCwgMjU1XSwgImRyYXcgY2FsbCBzaG91bGQgc2V0IGNhbnZhcyB0byByZWQiLCAyKTsK
KworICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5VTklGT1JNX0JVRkZFUiwgYmluZGluZywgYnVm
ZmVyLCAwLCBibG9ja1NpemUgLTEpOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMs
IDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImRyYXdFbGVtZW50czogYmluZEJ1ZmZlclJhbmdlIHNldCBz
aXplIHRvbyBzbWFsbCBmb3IgVW5pZm9ybUJsb2NrIik7CisgICAgZ2wuZHJhd1JhbmdlRWxlbWVu
dHMoZ2wuVFJJQU5HTEVTLCAwLCA1LCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJkcmF3UmFuZ2VFbGVt
ZW50czogYmluZEJ1ZmZlclJhbmdlIHNldCBzaXplIHRvbyBzbWFsbCBmb3IgVW5pZm9ybUJsb2Nr
Iik7CisgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5T
SUdORURfU0hPUlQsIDAsIGluc3RhbmNlQ291bnQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0VsZW1lbnRzSW5zdGFuY2VkOiBiaW5kQnVm
ZmVyUmFuZ2Ugc2V0IHNpemUgdG9vIHNtYWxsIGZvciBVbmlmb3JtQmxvY2siKTsKK30KKworZGVi
dWcoIiIpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91
bGQgYmUgbm8gZXJyb3JzIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvdmVydGV4LWlkLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvcmVuZGVyaW5nL3ZlcnRleC1pZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNGJkMDVhZDQ1YWM0MzMx
NjcxNDc1ZTY1NjRiYzMwMjM4OWRkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL3Zl
cnRleC1pZC5odG1sCkBAIC0wLDAgKzEsMjE5IEBACivvu788IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgMiBnbF9WZXJ0
ZXhJRCBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2Rlc2t0
b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0
aW5nIGluc3RhbmNlZCBkcmF3cyAtLT4KKzxzY3JpcHQgaWQ9InZzIiB0eXBlPSJ0ZXh0L3BsYWlu
Ij4KKyN2ZXJzaW9uIDMwMCBlcworZmxhdCBvdXQgaGlnaHAgaW50IHZWZXJ0ZXhJRDsKKwordm9p
ZCBtYWluKCkgeworICAgIHZWZXJ0ZXhJRCA9IGdsX1ZlcnRleElEOworICAgIGdsX1BvaW50U2l6
ZSA9IDEuMDsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMSk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9ImZzIiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyN2ZXJzaW9uIDMwMCBlcworZmxh
dCBpbiBoaWdocCBpbnQgdlZlcnRleElEOworb3V0IGhpZ2hwIGludCBvVmVydGV4SUQ7Cit2b2lk
IG1haW4oKSB7CisgICAgb1ZlcnRleElEID0gdlZlcnRleElEOworfQorPC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdCBnbF9WZXJ0ZXhJRCIpOwor
CitkZWJ1ZygiIik7CisKK2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworY29uc3QgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitjYW52YXMud2lkdGggPSAxOwor
Y2FudmFzLmhlaWdodCA9IDE7Citjb25zdCBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
LCBudWxsLCAyKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGlmICghZ2wpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBj
b25zdCB2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2cyIpLmlubmVySFRNTC50cmltKCk7
CisgICAgY29uc3QgZnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnMiKS5pbm5lckhUTUwu
dHJpbSgpOworICAgIGNvbnN0IHByb2cgPSB3dHUubG9hZFByb2dyYW0oZ2wsIHZzLCBmcyk7Cisg
ICAgZ2wudXNlUHJvZ3JhbShwcm9nKTsKKworICAgIGNvbnN0IHRleCA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRl
eFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBnbC5SMzJJLCAxLCAxKTsKKyAgICBjb25zdCBm
YiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYik7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICAgIHNo
b3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiTm8gZXJyb3JzIGFmdGVyIHNldHVwIik7CisKKyAgICBmdW5jdGlvbiBzaG91bGRC
ZVZhbChwcmVmaXgsIGV4cGVjdGVkLCB3YXMpIHsKKyAgICAgICAgbGV0IHRleHQgPSBwcmVmaXgg
KyAiU2hvdWxkIGJlICIgKyBleHBlY3RlZDsKKyAgICAgICAgbGV0IGZ1bmMgPSB0ZXN0UGFzc2Vk
OworICAgICAgICBpZiAod2FzICE9IGV4cGVjdGVkKSB7CisgICAgICAgICAgICB0ZXh0ID0gdGV4
dCArICIsIHdhcyAiICsgd2FzOworICAgICAgICAgICAgZnVuYyA9IHRlc3RGYWlsZWQ7CisgICAg
ICAgIH0KKyAgICAgICAgZnVuYyh0ZXh0KTsKKyAgICB9OworCisgICAgY29uc3QgcmVhZFZhbERh
dGEgPSBuZXcgSW50MzJBcnJheSgxMDAwMCk7CisgICAgZnVuY3Rpb24gZW5zdXJlVmFsKHByZWZp
eCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JB
X0lOVEVHRVIsIGdsLklOVCwgcmVhZFZhbERhdGEpOworICAgICAgICBjb25zdCB3YXMgPSByZWFk
VmFsRGF0YVswXTsKKyAgICAgICAgc2hvdWxkQmVWYWwocHJlZml4LCBleHBlY3RlZCwgd2FzKTsK
KyAgICB9OworCisgICAgZ2wuY2xlYXJCdWZmZXJpdihnbC5DT0xPUiwgMCwgbmV3IEludDMyQXJy
YXkoWzQyLCAwLCAwLCAwXSkpOworICAgIGVuc3VyZVZhbCgiQWZ0ZXIgY2xlYXIiLCA0Mik7CisK
KyAgICAvLyAtCisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIi0tLS0tLS0tLS0tLS0tLS0i
KTsKKyAgICBkZWJ1ZygiZHJhd0FycmF5cyIpOworCisgICAgbGV0IHRlc3QgPSBmdW5jdGlvbihm
aXJzdCwgY291bnQpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZyhgZHJhd0Fy
cmF5cyhmaXJzdDogJHtmaXJzdH0sIGNvdW50OiAke2NvdW50fSlgKTsKKyAgICAgICAgZ2wuZHJh
d0FycmF5cyhnbC5QT0lOVFMsIGZpcnN0LCBjb3VudCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICAgICAgZW5zdXJlVmFsKCIiLCBmaXJzdCtjb3Vu
dC0xKTsKKyAgICB9OworCisgICAgdGVzdCgwLCAxKTsKKyAgICB0ZXN0KDEsIDEpOworICAgIHRl
c3QoMTAwMDAsIDEpOworICAgIHRlc3QoMTAwMDAwLCAxKTsKKyAgICB0ZXN0KDEwMDAwMDAsIDEp
OworCisgICAgdGVzdCgwLCAyKTsKKyAgICB0ZXN0KDEsIDIpOworICAgIHRlc3QoMTAwMDAsIDIp
OworICAgIHRlc3QoMTAwMDAwLCAyKTsKKyAgICB0ZXN0KDEwMDAwMDAsIDIpOworCisgICAgY29u
c3QgSU5UMzJfTUFYID0gMHg3ZmZmZmZmZjsKKworICAgIHRlc3QgPSBmdW5jdGlvbihmaXJzdCwg
Y291bnQpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZyhgZHJhd0FycmF5cyhm
aXJzdDogJHtmaXJzdH0sIGNvdW50OiAke2NvdW50fSlgKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5
cyhnbC5QT0lOVFMsIGZpcnN0LCBjb3VudCk7CisgICAgICAgIGlmICghd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgW2dsLk5PX0VSUk9SLCBnbC5PVVRfT0ZfTUVNT1JZXSkpIHsKKyAgICAgICAgICAg
IGVuc3VyZVZhbCgiIiwgZmlyc3QrY291bnQtMSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
dGVzdChJTlQzMl9NQVgtMiwgMSk7CisgICAgdGVzdChJTlQzMl9NQVgtMSwgMSk7CisgICAgdGVz
dChJTlQzMl9NQVgsIDEpOworCisgICAgLy8gLQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCItLS0tLS0tLS0tLS0tLS0tIik7CisgICAgZGVidWcoImRyYXdFbGVtZW50cyIpOworCisgICAg
Y29uc3QgaW5kZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVy
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7CisgICAgY29uc3QgaW5kZXhE
YXRhID0gbmV3IFVpbnQxNkFycmF5KFsxLCAyLCA1LCAzLCAxMDAwMF0pOworICAgIGRlYnVnKCJp
bmRleERhdGE6ICIgKyBpbmRleERhdGEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIGluZGV4RGF0YSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgdGVzdCA9IGZ1
bmN0aW9uKGZpcnN0LCBjb3VudCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVn
KGBkcmF3RWxlbWVudHMoZmlyc3Q6ICR7Zmlyc3R9LCBjb3VudDogJHtjb3VudH0pYCk7CisgICAg
ICAgIGdsLmRyYXdFbGVtZW50cyhnbC5QT0lOVFMsIGNvdW50LCBnbC5VTlNJR05FRF9TSE9SVCwg
Zmlyc3QqMik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsK
KyAgICAgICAgZW5zdXJlVmFsKCIiLCBpbmRleERhdGFbZmlyc3QrY291bnQtMV0pOworICAgIH07
CisKKyAgICBmb3IgKGxldCBmID0gMDsgZiA8IGluZGV4RGF0YS5sZW5ndGg7ICsrZikgeworICAg
ICAgICBmb3IgKGxldCBjID0gMTsgZiArIGMgPD0gaW5kZXhEYXRhLmxlbmd0aDsgKytjKSB7Cisg
ICAgICAgICAgICB0ZXN0KGYsIGMpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gLQorCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCItLS0tLS0tLS0tLS0tLS0tIik7CisgICAgZGVidWco
IlZpYSB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKworICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MocHJvZywgWyJ2VmVydGV4SUQiXSwgZ2wuSU5URVJMRUFWRURfQVRUUklCUyk7CisgICAg
d3R1LmxpbmtQcm9ncmFtKGdsLCBwcm9nKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2cpOworCisg
ICAgY29uc3QgdGZCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCB0ZkJ1ZmZlcik7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0KjEwMDAwLCBnbC5EWU5B
TUlDX1JFQUQpOworCisgICAgdGVzdCA9IGZ1bmN0aW9uKG9mZnNldCwgY291bnQpIHsKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiZHJhd0FycmF5cygiICsgb2Zmc2V0ICsgIiwg
IiArIGNvdW50ICsgIikiKTsKKyAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5Q
T0lOVFMpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgb2Zmc2V0LCBjb3VudCk7
CisgICAgICAgIGdsLmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGdsLmdldEJ1ZmZl
clN1YkRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgcmVhZFZhbERhdGEpOwor
ICAgICAgICBsZXQgb2sgPSB0cnVlOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlYWRW
YWxEYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSA+PSBjb3VudCkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gb2Zmc2V0ICsg
aTsKKyAgICAgICAgICAgIGNvbnN0IHdhcyA9IHJlYWRWYWxEYXRhW2ldOworICAgICAgICAgICAg
aWYgKHdhcyAhPSBleHBlY3RlZCkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlsiICsg
aSArICJdIGV4cGVjdGVkICIgKyBleHBlY3RlZCArICIsIHdhcyAiICsgd2FzKTsKKyAgICAgICAg
ICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChvaykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgi
b2siKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZXN0KDAsIDEpOworICAgIHRlc3QoMSwg
MSk7CisgICAgdGVzdCgxMDAwMCwgMSk7CisKKyAgICB0ZXN0KDAsIDIpOworICAgIHRlc3QoMSwg
Mik7CisgICAgdGVzdCgxMDAwMCwgMik7CisKKyAgICB0ZXN0KDEwMDAwLCAxMDAwMCk7CisKKyAg
ICAvLyAtCisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlRoZXJl
IHNob3VsZCBiZSBubyByZW1haW5pbmcgZXJyb3JzIik7Cit9KSgpOworCitkZWJ1ZygiIik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3NhbXBsZXJzL211bHRpLWNvbnRleHQtc2FtcGxlci10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc2FtcGxlcnMvbXVs
dGktY29udGV4dC1zYW1wbGVyLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUwZjIwNDgwMTFkNzJk
ZWRhNWI2MGY4MjQxMDdjY2MwYTRmODc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3NhbXBsZXJzL211
bHRpLWNvbnRleHQtc2FtcGxlci10ZXN0Lmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgTXVsdGkt
Q29udGV4dCBTYW1wbGVyIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImNhbnZhc19kcmF3aW5nIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2FtcGxlcnMnIHN0YXRl
IGRvZXNuJ3QgbGVhayBhY3Jvc3MgY29udGV4dHMiKTsKK2RlYnVnKCIiKTsKK2RlYnVnKCdSZWdy
ZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9jcmJ1Zy5jb20vNzEzMTI3Ij5odHRwOi8v
Y3JidWcuY29tLzcxMzEyNzwvYT4nKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgi
Y2FudmFzX2RyYXdpbmciLCB1bmRlZmluZWQsIDIpOworICAgIHZhciB0ZXh0dXJlID0gbnVsbDsK
KyAgICB2YXIgY29sb3IgPSBbMCwgMjU1LCAwLCAyNTVdOworCisgICAgaWYgKCFnbCkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIp
OworCisgICAgd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgICB0ZXh0dXJlID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYmlnZ2VyIHRoYW4gMXgxIHNv
IHRoYXQgaXQgd291bGQgbmVlZCBtaXBtYXBzIGluCisgICAgLy8gb3JkZXIgdG8gYmUgY29tcGxl
dGUuCisgICAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXh0dXJlLCAyLCAyLCBjb2xvciwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZ2wuUkdCQTgpOwor
ICAgIC8vIFNldCB0ZXh0dXJlIHBhcmFtZXRlcnMgc28gdGhhdCB0aGlzIHRleHR1cmUgaXMgY29t
cGxldGUuCisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICAgIC8vIFNldCB1cCBh
IHNlY29uZGFyeSBjb250ZXh0IHdpdGggYSBzYW1wbGVyIGJvdW5kIHRvIHRleHR1cmUgdW5pdAor
ICAgIC8vIDAuIFRoaXMgc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgcHJpbWFyeSBjb250
ZXh0LgorICAgIHZhciBhbHRHTCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRl
ZmluZWQsIDIpOworICAgIGlmICghYWx0R0wpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3Ig
Y3JlYXRpbmcgc2Vjb25kYXJ5IFdlYkdMIGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHZhciBzYW1wbGVyID0gYWx0R0wuY3JlYXRlU2FtcGxlcigpOworICAgIC8vIE5v
dGUgdGhhdCB0aGUgc2FtcGxlcidzIGRlZmF1bHQgVEVYVFVSRV9NSU5fRklMVEVSIGlzCisgICAg
Ly8gTkVBUkVTVF9NSVBNQVBfTElORUFSLgorICAgIGFsdEdMLmJpbmRTYW1wbGVyKDAsIHNhbXBs
ZXIpOworICAgIGFsdEdMLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgYWx0R0wuY2xlYXIo
YWx0R0wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChhbHRHTCwg
MCwgMCwgMSwgMSwgWyAyNTUsIDAsIDAsIDI1NSBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
InNob3VsZCBiZSByZWQiKTsKKworICAgIC8vIE5vdyBzd2l0Y2ggYmFjayB0byB0aGUgbWFpbiBj
b250ZXh0IGFuZCBkcmF3IHRoZSB0ZXh0dXJlLgorICAgIGdsLmNsZWFyQ29sb3IoMSwgMSwgMSwg
MSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9C
SVQpOworICAgIHd0dS5kcmF3VW5pdFF1YWQoZ2wpOworICAgIC8vIFRoZSBwcmVzZW5jZSBvZiB0
aGUgc2FtcGxlciBvbiB0aGUgb3RoZXIgY29udGV4dCBzaG91bGQgbm90CisgICAgLy8gaGF2ZSBp
bnRlcmZlcmVkIHdpdGggdGhlIGNvbXBsZXRlbmVzcyBvZiB0aGUgdGV4dHVyZS4KKyAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBjb2xvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJzaG91bGQgYmUgZ3JlZW4iKTsKKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitydW5UZXN0
KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9zYW1wbGVycy9zYW1wbGVyLWRyYXdpbmctdGVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Nh
bXBsZXJzL3NhbXBsZXItZHJhd2luZy10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM2YWE1MTVlZmNm
NzUyMGIxZDlhMDUyMTA5MjhiMmQ0NGFlMDg4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9zYW1wbGVy
cy9zYW1wbGVyLWRyYXdpbmctdGVzdC5odG1sCkBAIC0wLDAgKzEsMTI0IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTYW1wbGVy
IERyYXdpbmcgVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFz
X2RyYXdpbmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJj
YW52YXNfdGV4dHVyZSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGVzdHMgZHJhd2luZyB3aXRoIHNhbXBsZXIgd29y
a3MgYXMgZXhwZWN0ZWQiKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzX2RyYXdpbmciLCBudWxsLCAy
KTsKK3ZhciBjYW52YXNfdGV4dHVyZSA9IG51bGw7Cit2YXIgc2FtcGxlclBhcmFtID0gWworICAg
IGdsLlJFUEVBVCwKKyAgICBnbC5DTEFNUF9UT19FREdFLAorICAgIGdsLk1JUlJPUkVEX1JFUEVB
VCwKK107Cit2YXIgY29sb3IgPSBbMjAwLCAwLCAyNTQsIDI1NV07CisKK2lmICghZ2wpIHsKKyAg
ICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICB3dHUuc2V0dXBU
ZXh0dXJlZFF1YWRXaXRoVGV4Q29vcmRzKGdsLCBbLTIuNSwgLTIuNV0sIFszLjUsIDMuNV0pOwor
CisgICAgc2V0dXBDYW52YXNUZXh0dXJlKCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNh
bXBsZXJQYXJhbS5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgcnVuRHJhd2luZ1Rlc3Qoc2FtcGxl
clBhcmFtW2lpXSk7CisgICAgfQorCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9CisKK2Z1bmN0aW9uIHNldHVw
Q2FudmFzVGV4dHVyZSgpIHsKKyAgICBjYW52YXNfdGV4dHVyZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXNfdGV4dHVyZSIpOworICAgIHZhciBjdHgyZCA9IGNhbnZhc190ZXh0dXJl
LmdldENvbnRleHQoIjJkIik7CisgICAgY3R4MmQuZmlsbFN0eWxlID0gInJnYmEoIiArIGNvbG9y
WzBdICsgIiwiICsgY29sb3JbMV0gKyAiLCIgKyBjb2xvclsyXSArICIsIiArIGNvbG9yWzNdICsg
IikiOworICAgIGN0eDJkLmZpbGxSZWN0KDAsIDAsIDEsIDEpOworfQorCitmdW5jdGlvbiBydW5E
cmF3aW5nVGVzdChwYXJhbSkgeworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgY2FudmFzX3RleHR1cmUpOworCisgICAgdmFyIHNhbXBsZXIgPSBnbC5jcmVhdGVTYW1w
bGVyKCk7CisgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBn
bC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIsIGdsLlRFWFRVUkVfV1JBUF9TLCBwYXJhbSk7CisgICAgZ2wuc2FtcGxlclBh
cmFtZXRlcmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9XUkFQX1QsIHBhcmFtKTsKKworICAgIGdsLmNs
ZWFyQ29sb3IoMSwxLDEsMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4dHVyZSk7CisgICAgZ2wuYmluZFNhbXBsZXIoMCwgc2FtcGxlcik7CisgICAgZ2wuZHJhd0Fy
cmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNik7CisKKyAgICBjaGVja1BpeGVscyhwYXJhbSk7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrUGl4ZWxzKHBhcmFtKSB7CisgICAgdmFyIGJ1ZiA9IG5ldyBV
aW50OEFycmF5KDEyICogMTIgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEyLCAxMiwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICB2YXIgcGFzc2VkID0gdHJ1ZTsK
KyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgMTI7ICsreXkpIHsKKyAgICAgICAgZm9yICh2YXIg
eHggPSAwOyB4eCA8IDEyOyArK3h4KSB7CisgICAgICAgICAgICB2YXIgZWMgPSBbMCwgMCwgMCwg
MF07CisgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgY2FzZSBn
bC5SRVBFQVQ6CisgICAgICAgICAgICAgICAgICAgIGlmICh4eCAlIDIgPT0gMSAmJiB5eSAlIDIg
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWMgPSBjb2xvcjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIGdsLkNMQU1QX1RPX0VER0U6CisgICAgICAgICAgICAgICAgICAgIGlmICh4eCA8IDYgJiYg
eXkgPCA2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlYyA9IGNvbG9yOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgZ2wuTUlSUk9SRURfUkVQRUFUOgorICAgICAgICAgICAgICAgICAgICBpZiAoeHggJSA0
IDwgMiAmJiB5eSAlIDQgPCAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlYyA9IGNvbG9y
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdmFyIG9mZiA9ICh5eSAqIDEyICsgeHgpICogNDsKKyAg
ICAgICAgICAgIGlmIChidWZbb2ZmICsgMF0gIT0gZWNbMF0gfHwgYnVmW29mZiArIDFdICE9IGVj
WzFdIHx8CisgICAgICAgICAgICAgICAgYnVmW29mZiArIDJdICE9IGVjWzJdIHx8IGJ1ZltvZmYg
KyAzXSAhPSBlY1szXSkgeworICAgICAgICAgICAgICAgIHZhciBtc2cgPSAnYXQgKCcgKyB4eCAr
ICcsICcgKyB5eSArICcpIGV4cGVjdGVkOiAnICsKKyAgICAgICAgICAgICAgICAgICAgZWNbMF0g
KyAnLCAnICsgZWNbMV0gKyAnLCAnICsgZWNbMl0gKyAnLCAnICsgZWNbM10gKyAnIGZvdW5kOiAn
ICsKKyAgICAgICAgICAgICAgICAgICAgYnVmW29mZiArIDBdICsgJywgJyArIGJ1ZltvZmYgKyAx
XSArICcsICcgKyBidWZbb2ZmICsgMl0gKyAnLCAnICsgYnVmW29mZiArIDNdOworICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQobXNnKTsKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzc2VkKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkRyYXdpbmcgd2l0aCB3cmFwICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmco
Z2wsIHBhcmFtKSArICIgYXMgZXhwZWN0ZWQiKTsKKyAgICB9Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Nh
bXBsZXJzL3NhbXBsZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc2FtcGxlcnMvc2FtcGxlcnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNmZiYzY5MDExMjcyZmMwZTU3ODIxZjY2MmFlMjE2NWIxZjY2NmYxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3NhbXBsZXJzL3NhbXBsZXJzLmh0bWwKQEAgLTAsMCArMSwyMzAgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIFNhbXBs
ZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4
OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTYW1wbGVyIG9iamVjdHMuIik7CisKK2RlYnVnKCIiKTsK
KwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFz
LCBudWxsLCAyKTsKK3ZhciBzID0gbnVsbDsKK3ZhciBzMSA9IG51bGw7Cit2YXIgczIgPSBudWxs
OwordmFyIHRlc3RDYXNlcyA9IG51bGw7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJX
ZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQo
IldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICBydW5CaW5kaW5nVGVzdCgpOworICAgIHJ1
bk9iamVjdFRlc3QoKTsKKyAgICBydW5QYXJhbWV0ZXJUZXN0KCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIik7Cit9
CisKK2Z1bmN0aW9uIGVudW1Ub1N0cmluZyh2YWx1ZSkgeworICAgIHJldHVybiB3dHUuZ2xFbnVt
VG9TdHJpbmcoZ2wsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gcnVuQmluZGluZ1Rlc3QoKSB7Cisg
ICAgZGVidWcoIlRlc3RpbmcgYmluZGluZyBlbnVtIik7CisKKyAgICBzaG91bGRCZSgiZ2wuU0FN
UExFUl9CSU5ESU5HIiwgIjB4ODkxOSIpOworCisgICAgLy8gRGVmYXVsdCB2YWx1ZSBpcyBudWxs
CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU0FNUExFUl9CSU5E
SU5HIHF1ZXJ5IHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBiaW5kaW5n
IGEgU2FtcGxlciBvYmplY3QiKTsKKyAgICBzMSA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKKyAgICBz
MiA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKKyAgICBnbC5iaW5kU2FtcGxlcigwLCBzMSk7CisgICAg
c2hvdWxkQmUoImdsLmdldFBhcmFtZXRlcihnbC5TQU1QTEVSX0JJTkRJTkcpIiwgInMxIik7Cisg
ICAgZ2wuYmluZFNhbXBsZXIoMCwgczIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIo
Z2wuU0FNUExFUl9CSU5ESU5HKSIsICJzMiIpOworCisgICAgLy8gQmluZGluZ3Mgc2hvdWxkIG5v
dCBhZmZlY3Qgb3RoZXIgdW5pdHMuCisgICAgZ2wuYmluZFNhbXBsZXIoMSwgczEpOworICAgIHNo
b3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIsICJzMiIpOworICAg
IGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTEpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJh
bWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIsICJzMSIpOworICAgIGdsLmFjdGl2ZVRleHR1cmUo
Z2wuVEVYVFVSRTApOworCisgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8gYmluZCBhIHNpbmdsZSBz
YW1wbGVyIHRvIG11bHRpcGxlIHRleHR1cmUgdW5pdHMuCisgICAgZ2wuYmluZFNhbXBsZXIoMCwg
czEpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIs
ICJzMSIpOworCisgICAgLy8gRGVsZXRpbmcgc2FtcGxlcnMgc2hvdWxkIHVuYmluZCB0aGVtLgor
ICAgIGdsLmRlbGV0ZVNhbXBsZXIoczEpOworICAgIGdsLmRlbGV0ZVNhbXBsZXIoczIpOworICAg
IHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlNBTVBMRVJfQklORElORykiKTsKKyAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICBzaG91bGRCZU51bGwoImdsLmdl
dFBhcmFtZXRlcihnbC5TQU1QTEVSX0JJTkRJTkcpIik7CisgICAgZ2wuYWN0aXZlVGV4dHVyZShn
bC5URVhUVVJFMCk7CisKKyAgICAvLyBTaG91bGRuJ3QgYmUgYWJsZSB0byBiaW5kIGEgZGVsZXRl
ZCBzYW1wbGVyLgorICAgIGdsLmJpbmRTYW1wbGVyKDAsIHMyKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJpbmRpbmcgYSBkZWxldGVkIFNhbXBs
ZXIgb2JqZWN0Iik7CisgICAgZ2wuYmluZFNhbXBsZXIoMCwgbnVsbCk7CisgICAgc2hvdWxkQmVO
dWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSIpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIp
OworfQorCitmdW5jdGlvbiBydW5PYmplY3RUZXN0KCkgeworICAgIGRlYnVnKCJUZXN0aW5nIG9i
amVjdCBjcmVhdGlvbiIpOworCisgICAgczEgPSBnbC5jcmVhdGVTYW1wbGVyKCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJjcmVhdGVTYW1wbGVyIHNob3VsZCBu
b3Qgc2V0IGFuIGVycm9yIik7CisgICAgc2hvdWxkQmVOb25OdWxsKCJzMSIpOworCisgICAgLy8g
RXhwZWN0IHRydWUsIGV2ZW4gaWYgbmV2ZXIgYm91bmQKKyAgICBzaG91bGRCZVRydWUoImdsLmlz
U2FtcGxlcihzMSkiKTsKKyAgICBnbC5iaW5kU2FtcGxlcigwLCBzMSk7CisgICAgc2hvdWxkQmVU
cnVlKCJnbC5pc1NhbXBsZXIoczEpIik7CisgICAgZ2wuYmluZFNhbXBsZXIoMCwgbnVsbCk7Cisg
ICAgc2hvdWxkQmVUcnVlKCJnbC5pc1NhbXBsZXIoczEpIik7CisgICAgZ2wuZGVsZXRlU2FtcGxl
cihzMSk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNTYW1wbGVyKHMxKSIpOworCisgICAgc2hv
dWxkQmVGYWxzZSgiZ2wuaXNTYW1wbGVyKG51bGwpIik7CisKKyAgICBzMSA9IG51bGw7Cit9CisK
K2Z1bmN0aW9uIHJ1blBhcmFtZXRlclRlc3QoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgZ2V0U2Ft
cGxlclBhcmFtZXRlciBhbmQgc2FtcGxlclBhcmFtZXRlcltpZl0iKTsKKworICAgIHMgPSBnbC5j
cmVhdGVTYW1wbGVyKCk7CisgICAgZ2wuYmluZFNhbXBsZXIoMCwgcyk7CisKKyAgICBkZWJ1Zygi
Q2hlY2tpbmcgZGVmYXVsdCBwYXJhbSBmb3IgZ2V0U2FtcGxlclBhcmFtZXRlciIpOworCisgICAg
dGVzdENhc2VzID0gWworICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9XUkFQX1MsICBkZWZhdWx0
UGFyYW06IGdsLlJFUEVBVCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9XUkFQX1QsICBk
ZWZhdWx0UGFyYW06IGdsLlJFUEVBVCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9XUkFQ
X1IsICBkZWZhdWx0UGFyYW06IGdsLlJFUEVBVCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVS
RV9NSU5fRklMVEVSLCAgZGVmYXVsdFBhcmFtOiBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIgfSwK
KyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgIGRlZmF1bHRQYXJhbTogZ2wu
TElORUFSIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX0NPTVBBUkVfTU9ERSwgIGRlZmF1
bHRQYXJhbTogZ2wuTk9ORSB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9DT01QQVJFX0ZV
TkMsICBkZWZhdWx0UGFyYW06IGdsLkxFUVVBTCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVS
RV9NSU5fTE9ELCAgZGVmYXVsdFBhcmFtOiAtMTAwMCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVY
VFVSRV9NQVhfTE9ELCAgZGVmYXVsdFBhcmFtOiAxMDAwIH0sCisgICAgXTsKKworICAgIGZvciAo
dmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHZhciBw
bmFtZSA9IHRlc3RDYXNlc1tpaV0ucG5hbWU7CisgICAgICAgIHZhciBkZWZhdWx0UGFyYW0gPSB0
ZXN0Q2FzZXNbaWldLmRlZmF1bHRQYXJhbTsKKyAgICAgICAgc2hvdWxkQmUoImdsLmdldFNhbXBs
ZXJQYXJhbWV0ZXIocywgIiArIHBuYW1lICsgIikiLCBkZWZhdWx0UGFyYW0udG9TdHJpbmcoKSk7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICB9CisK
KyAgICBkZWJ1ZygiQ2hlY2tpbmcgdmFsaWQgcG5hbWUgYW5kIHBhcmFtIGZvciBzYW1wbGVyUGFy
YW1ldGVyaSIpOworCisgICAgdGVzdENhc2VzID0gWworICAgICAgeyBwbmFtZTogZ2wuVEVYVFVS
RV9XUkFQX1MsICBwYXJhbTogZ2wuUkVQRUFUIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJF
X1dSQVBfUywgIHBhcmFtOiBnbC5NSVJST1JFRF9SRVBFQVQgfSwKKyAgICAgIHsgcG5hbWU6IGds
LlRFWFRVUkVfV1JBUF9TLCAgcGFyYW06IGdsLkNMQU1QX1RPX0VER0UgfSwKKyAgICAgIHsgcG5h
bWU6IGdsLlRFWFRVUkVfV1JBUF9ULCAgcGFyYW06IGdsLlJFUEVBVCB9LAorICAgICAgeyBwbmFt
ZTogZ2wuVEVYVFVSRV9XUkFQX1QsICBwYXJhbTogZ2wuTUlSUk9SRURfUkVQRUFUIH0sCisgICAg
ICB7IHBuYW1lOiBnbC5URVhUVVJFX1dSQVBfVCwgIHBhcmFtOiBnbC5DTEFNUF9UT19FREdFIH0s
CisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX1dSQVBfUiwgIHBhcmFtOiBnbC5SRVBFQVQgfSwK
KyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfV1JBUF9SLCAgcGFyYW06IGdsLk1JUlJPUkVEX1JF
UEVBVCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9XUkFQX1IsICBwYXJhbTogZ2wuQ0xB
TVBfVE9fRURHRSB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCAgcGFy
YW06IGdsLk5FQVJFU1QgfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
IHBhcmFtOiBnbC5MSU5FQVIgfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgIHBhcmFtOiBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUIH0sCisgICAgICB7IHBuYW1lOiBn
bC5URVhUVVJFX01JTl9GSUxURVIsICBwYXJhbTogZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSIH0s
CisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX01JTl9GSUxURVIsICBwYXJhbTogZ2wuTElORUFS
X01JUE1BUF9ORUFSRVNUIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX01JTl9GSUxURVIs
ICBwYXJhbTogZ2wuTElORUFSX01JUE1BUF9MSU5FQVIgfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgIHBhcmFtOiBnbC5ORUFSRVNUIH0sCisgICAgICB7IHBuYW1lOiBn
bC5URVhUVVJFX01BR19GSUxURVIsICBwYXJhbTogZ2wuTElORUFSIH0sCisgICAgICB7IHBuYW1l
OiBnbC5URVhUVVJFX0NPTVBBUkVfTU9ERSwgIHBhcmFtOiBnbC5OT05FIH0sCisgICAgICB7IHBu
YW1lOiBnbC5URVhUVVJFX0NPTVBBUkVfTU9ERSwgIHBhcmFtOiBnbC5DT01QQVJFX1JFRl9UT19U
RVhUVVJFIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywgIHBhcmFt
OiBnbC5MRVFVQUwgfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfQ09NUEFSRV9GVU5DLCAg
cGFyYW06IGdsLkdFUVVBTCB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9DT01QQVJFX0ZV
TkMsICBwYXJhbTogZ2wuTEVTUyB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9DT01QQVJF
X0ZVTkMsICBwYXJhbTogZ2wuR1JFQVRFUiB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9D
T01QQVJFX0ZVTkMsICBwYXJhbTogZ2wuRVFVQUwgfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRV
UkVfQ09NUEFSRV9GVU5DLCAgcGFyYW06IGdsLk5PVEVRVUFMIH0sCisgICAgICB7IHBuYW1lOiBn
bC5URVhUVVJFX0NPTVBBUkVfRlVOQywgIHBhcmFtOiBnbC5BTFdBWVMgfSwKKyAgICAgIHsgcG5h
bWU6IGdsLlRFWFRVUkVfQ09NUEFSRV9GVU5DLCAgcGFyYW06IGdsLk5FVkVSIH0sCisgICAgXTsK
KworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7Cisg
ICAgICAgIHZhciBwbmFtZSA9IHRlc3RDYXNlc1tpaV0ucG5hbWU7CisgICAgICAgIHZhciBwYXJh
bSA9IHRlc3RDYXNlc1tpaV0ucGFyYW07CisgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCAiZ2wuc2FtcGxlclBhcmFtZXRlcmkocywgIiArIHBuYW1lICsg
IiwgIiArIHBhcmFtICsgIikiKTsKKyAgICAgICAgc2hvdWxkQmUoImdsLmdldFNhbXBsZXJQYXJh
bWV0ZXIocywgIiArIHBuYW1lICsgIikiLCBwYXJhbSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgdmFs
aWQgcG5hbWUgYW5kIHBhcmFtIGZvciBzYW1wbGVyUGFyYW1ldGVyZiIpOworICAgIHRlc3RDYXNl
cyA9IFsKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfTUlOX0xPRCwgIHBhcmFtOiAtNTAwIH0s
CisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX01JTl9MT0QsICBwYXJhbTogMCB9LAorICAgICAg
eyBwbmFtZTogZ2wuVEVYVFVSRV9NSU5fTE9ELCAgcGFyYW06IDEwLjAgfSwKKyAgICAgIHsgcG5h
bWU6IGdsLlRFWFRVUkVfTUFYX0xPRCwgIHBhcmFtOiA1MDAgfSwKKyAgICAgIHsgcG5hbWU6IGds
LlRFWFRVUkVfTUFYX0xPRCwgIHBhcmFtOiAwIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJF
X01BWF9MT0QsICBwYXJhbTogMTAuMCB9LAorICAgIF07CisKKyAgICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpaSkgeworICAgICAgICB2YXIgcG5hbWUgPSB0ZXN0
Q2FzZXNbaWldLnBuYW1lOworICAgICAgICB2YXIgcGFyYW0gPSB0ZXN0Q2FzZXNbaWldLnBhcmFt
OworICAgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImds
LnNhbXBsZXJQYXJhbWV0ZXJmKHMsICIgKyBwbmFtZSArICIsICIgKyBwYXJhbSArICIpIik7Cisg
ICAgICAgIHNob3VsZEJlKCJnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKHMsICIgKyBwbmFtZSArICIp
IiwgcGFyYW0udG9TdHJpbmcoKSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgaW52YWxpZCBwbmFtZSBh
bmQgcGFyYW0iKTsKKworICAgIHRlc3RDYXNlcyA9IFsKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRV
UkVfSU1NVVRBQkxFX0ZPUk1BVCwgIHBhcmFtOiBudWxsLCAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5W
QUxJRF9FTlVNIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX0JBU0VfTEVWRUwsICBwYXJh
bTogbnVsbCwgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfRU5VTSB9LAorICAgICAgeyBwbmFt
ZTogZ2wuVEVYVFVSRV9NQVhfTEVWRUwsICBwYXJhbTogbnVsbCwgIGV4cGVjdGVkRXJyb3I6IGds
LklOVkFMSURfRU5VTSB9LAorICAgICAgeyBwbmFtZTogZ2wuVEVYVFVSRV9XUkFQX1MsICBwYXJh
bTogMHg4MTJELC8qIEdMX0NMQU1QX1RPX0JPUkRFUiAqLyAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5W
QUxJRF9FTlVNIH0sCisgICAgICB7IHBuYW1lOiBnbC5URVhUVVJFX1dSQVBfVCwgIHBhcmFtOiAw
eDgxMkQsLyogR0xfQ0xBTVBfVE9fQk9SREVSICovICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElE
X0VOVU0gfSwKKyAgICAgIHsgcG5hbWU6IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgIHBhcmFtOiBn
bC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX0VOVU0g
fSwKKyAgICBdOworCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlcy5sZW5ndGg7
ICsraWkpIHsKKyAgICAgICAgdmFyIHBuYW1lID0gdGVzdENhc2VzW2lpXS5wbmFtZTsKKyAgICAg
ICAgdmFyIHBhcmFtID0gdGVzdENhc2VzW2lpXS5wYXJhbTsKKyAgICAgICAgdmFyIGV4cGVjdGVk
RXJyb3IgPSB0ZXN0Q2FzZXNbaWldLmV4cGVjdGVkRXJyb3I7CisgICAgICAgIGlmIChwYXJhbSA9
PSBudWxsKSB7CisgICAgICAgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBleHBl
Y3RlZEVycm9yLCAiZ2wuZ2V0U2FtcGxlclBhcmFtZXRlcihzLCAiICsgcG5hbWUgKyAiKSIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuTk9fRVJST1IsICJnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKHMsICIgKyBwbmFtZSArICIp
Iik7CisgICAgICAgIH0KKyAgICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZXhw
ZWN0ZWRFcnJvciwgImdsLnNhbXBsZXJQYXJhbWV0ZXJpKHMsICIgKyBwbmFtZSArICIsICIgKyBw
YXJhbSArICIpIik7CisgICAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGV4cGVj
dGVkRXJyb3IsICJnbC5zYW1wbGVyUGFyYW1ldGVyZihzLCAiICsgcG5hbWUgKyAiLCAiICsgcGFy
YW0gKyAiKSIpOworICAgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wt
ZW51bS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLWVudW0tdGVzdHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NmZmNGI1YjVmZDI3YWE0ZTlkZmE4NTZiY2JjNWJiMzc5NDQyNTE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3N0YXRlL2dsLWVudW0tdGVzdHMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBnbCBlbnVt
cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdC1l
dmFsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY29udGV4dFZlcnNp
b24gPSAyOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvZ2wtZW51bS10
ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLWdl
dC1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLWdldC1jYWxscy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDk5
MWE5ZDI0ZDdmZTQ5M2ZjZjVhZWE5ZmFhMjhjOTZlM2RhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
c3RhdGUvZ2wtZ2V0LWNhbGxzLmh0bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGdsIGNhbGxzIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBnZXRQYXJhbWV0ZXIgaXMgd29ya2lu
ZyBjb3JyZWN0IHdpdGggV2ViR0wgMiBwbmFtZXMiKTsKKworZGVidWcoIiIpOworZGVidWcoIkNh
bnZhcy5nZXRDb250ZXh0Iik7CisKK3ZhciBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzayA9IDA7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY29udGV4dCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImNhbnZhcyIsIG51bGwsIDIpOworaWYgKCFjb250ZXh0KQorICAgIHRlc3RGYWlsZWQo
ImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK2Vsc2UgeworICAgIHRlc3RQYXNzZWQoImNvbnRl
eHQgZXhpc3RzIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNvbnRleHQgY29udGFp
bnMgZ2V0RXJyb3IiKTsKKyAgICBpZiAoImdldEVycm9yIiBpbiBjb250ZXh0KQorICAgICAgdGVz
dFBhc3NlZCgiY29udGV4dCBjb250YWlucyBnZXRFcnJvciIpOworICAgIGVsc2UKKyAgICAgIHRl
c3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgY29udGFpbnMgZ2V0RXJyb3IiKTsKKworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2hlY2sgZGVmYXVsdCB2YWx1ZXMiKTsKKworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPUFlfUkVBRF9CVUZGRVJfQklORElO
RyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkNPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5EUkFXX0JVRkZFUjApJywgJ2NvbnRleHQuQkFDSycp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRSQVdfRlJBTUVC
VUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQpJywgJ2NvbnRleHQu
RE9OVF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
UEFDS19ST1dfTEVOR1RIKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuUEFDS19TS0lQX1BJWEVMUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBBQ0tfU0tJUF9ST1dTKScsICcwJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUElYRUxfUEFDS19CVUZGRVJfQklO
RElORyknLCAnbnVsbCcpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HKScsICdudWxsJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkFTVEVSSVpFUl9ESVNDQVJEKScsICdm
YWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlJFQURf
QlVGRkVSKScsICdjb250ZXh0LkJBQ0snKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQUxQSEFfVE9fQ09W
RVJBR0UpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU0FNUExFX0NPVkVSQUdFKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRF9B
UlJBWSknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlRFWFRVUkVfQklORElOR18zRCknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUpJywgJ2ZhbHNl
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVFJBTlNGT1JN
X0ZFRURCQUNLX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcpJywgJ251
bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5UUkFOU0ZP
Uk1fRkVFREJBQ0tfUEFVU0VEKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlVOSUZPUk1fQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlVOUEFDS19JTUFHRV9I
RUlHSFQpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5VTlBBQ0tfUk9XX0xFTkdUSCknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlVOUEFDS19TS0lQX0lNQUdFUyknLCAnMCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlVOUEFDS19TS0lQX1BJWEVMUyknLCAnMCcp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlVOUEFDS19TS0lQ
X1JPV1MpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5WRVJURVhfQVJSQVlfQklORElORyknLCAnbnVsbCcpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJDaGVjayBtaW5pbXVtIHZhbHVlcyIpOworCisgICAgc2hvdWxkQmVHcmVhdGVyVGhh
bk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYXzNEX1RFWFRVUkVfU0la
RSknLCAnMjU2Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0Lk1BWF8zRF9URVhUVVJFX1NJWkUpJywgJ051bWJlcicpOworCisgICAgc2hvdWxkQmVHcmVh
dGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0FSUkFZX1RF
WFRVUkVfTEFZRVJTKScsICcyNTYnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTKScsICdOdW1iZXInKTsKKwor
ICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0Lk1BWF9DTElFTlRfV0FJVF9USU1FT1VUX1dFQkdMKScsICcwJyk7CisgICAgc2hvdWxkQmVU
eXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9DTElFTlRfV0FJVF9USU1FT1VU
X1dFQkdMKScsICdOdW1iZXInKTsKKworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9DT0xPUl9BVFRBQ0hNRU5UUyknLCAnNCcp
OworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfQ09M
T1JfQVRUQUNITUVOVFMpJywgJ051bWJlcicpOworCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0NPTUJJTkVEX1VOSUZPUk1f
QkxPQ0tTKScsICcyNCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpJywgJ051bWJlcicpOworCisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
TUFYX0RSQVdfQlVGRkVSUyknLCAnNCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5NQVhfRFJBV19CVUZGRVJTKScsICdOdW1iZXInKTsKKworICAgIHNo
b3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1B
WF9FTEVNRU5UX0lOREVYKScsICcxNjc3NzIxNScpOyAvLyAyXjI0IC0gMQorICAgIHNob3VsZEJl
VHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfRUxFTUVOVF9JTkRFWCknLCAn
TnVtYmVyJyk7CisKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuTUFYX0VMRU1FTlRTX0lORElDRVMpJywgJ051bWJlcicpOworICAgIHNob3VsZEJlVHlwZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfRUxFTUVOVFNfVkVSVElDRVMpJywgJ051
bWJlcicpOworCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMpJywgJzYwJyk7Cisg
ICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9GUkFHTUVO
VF9JTlBVVF9DT01QT05FTlRTKScsICdOdW1iZXInKTsKKworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9GUkFHTUVOVF9VTklG
T1JNX0JMT0NLUyknLCAnMTInKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMpJywgJ051bWJlcicpOwor
CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUyknLCAnODk2Jyk7CisgICAgc2hv
dWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9GUkFHTUVOVF9VTklG
T1JNX0NPTVBPTkVOVFMpJywgJ051bWJlcicpOworCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1BST0dSQU1fVEVYRUxfT0ZG
U0VUKScsICc3Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0Lk1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVCknLCAnTnVtYmVyJyk7CisKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfU0FN
UExFUyknLCAnNCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQpJywgJ051bWJlcicpOworCisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1NF
UlZFUl9XQUlUX1RJTUVPVVQpJywgJzAnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQpJywgJ051bWJlcicpOwor
CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuTUFYX1RFWFRVUkVfTE9EX0JJQVMpJywgJzIuMCcpOworICAgIHNob3VsZEJlVHlwZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVEVYVFVSRV9MT0RfQklBUyknLCAnTnVt
YmVyJyk7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVO
VFMpJywgJzY0Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0Lk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUyknLCAnTnVt
YmVyJyk7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMpJywg
JzQnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFY
X1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTKScsICdOdW1iZXInKTsKKworICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
Lk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyknLCAnNCcpOworICAg
IHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVFJBTlNGT1JN
X0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMpJywgJ051bWJlcicpOworCisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1VO
SUZPUk1fQkxPQ0tfU0laRSknLCAnMTYzODQnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSknLCAnTnVtYmVyJyk7
CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MpJywgJzI0Jyk7CisgICAgc2hvdWxk
QmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9VTklGT1JNX0JVRkZFUl9C
SU5ESU5HUyknLCAnTnVtYmVyJyk7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVkFSWUlOR19DT01QT05FTlRTKScsICc2
MCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhf
VkFSWUlOR19DT01QT05FTlRTKScsICdOdW1iZXInKTsKKworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfT1VUUFVU
X0NPTVBPTkVOVFMpJywgJzY0Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMpJywgJ051bWJlcicpOwor
CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyknLCAnMTInKTsKKyAgICBzaG91bGRCZVR5
cGUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NL
UyknLCAnTnVtYmVyJyk7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyknLCAn
MTAyNCcpOworICAgIHNob3VsZEJlVHlwZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5N
QVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyknLCAnTnVtYmVyJyk7CisKKyAgICBzaG91bGRC
ZUxlc3NUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NSU5fUFJPR1JB
TV9URVhFTF9PRkZTRVQpJywgJy04Jyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0Lk1JTl9QUk9HUkFNX1RFWEVMX09GRlNFVCknLCAnTnVtYmVyJyk7CisK
KyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UKScsICcxJyk7CisgICAgc2hvdWxk
QmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlVOSUZPUk1fQlVGRkVSX09GRlNF
VF9BTElHTk1FTlQpJywgJ051bWJlcicpOworCisgICAgdmFyIG1pbkNvbWJpbmVkRnJhZ21lbnRV
bmlmb3JtQ29tcG9uZW50cyA9IGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdN
RU5UX1VOSUZPUk1fQkxPQ0tTKSAqIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1VO
SUZPUk1fQkxPQ0tfU0laRSkgLyA0ICsgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhf
RlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTKTsKKyAgICB2YXIgbWluQ29tYmluZWRWZXJ0ZXhV
bmlmb3JtQ29tcG9uZW50cyA9IGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRF
WF9VTklGT1JNX0JMT0NLUykgKiBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9VTklG
T1JNX0JMT0NLX1NJWkUpIC8gNCArIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZF
UlRFWF9VTklGT1JNX0NPTVBPTkVOVFMpOworCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1
YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VO
SUZPUk1fQ09NUE9ORU5UUyknLCBtaW5Db21iaW5lZEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMg
KyAnJyk7CisgICAgc2hvdWxkQmVUeXBlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1B
WF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMpJywgJ051bWJlcicpOworCisg
ICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMpJywgbWluQ29tYmluZWRW
ZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyArICcnKTsKKyAgICBzaG91bGRCZVR5cGUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVO
VFMpJywgJ051bWJlcicpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0RXJyb3IoKScsICdj
b250ZXh0Lk5PX0VSUk9SJyk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUv
Z2wtZ2V0c3RyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtZ2V0c3RyaW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmU0OTQ1ODllYmM1NWYyMjg4OTBhNDc4ODQ3N2NjNmY4OTRkNjYwMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9zdGF0ZS9nbC1nZXRzdHJpbmcuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBnbC5nZXRQ
YXJhbWV0ZXIgU3RyaW5ncyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBnZXRQ
YXJhbWV0ZXIgcmV0dXJucyBzdHJpbmdzIGluIHRoZSBjb3JyZWN0IGZvcm1hdCIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiY2FudmFzIiwgbnVsbCwgMik7
CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30g
ZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgZGVidWcoIiIpOwor
ICBjaGVja1ByZWZpeCgiV2ViR0wgMi4wIiwgIlZFUlNJT04iKTsKKyAgY2hlY2tQcmVmaXgoIldl
YkdMIEdMU0wgRVMgMy4wMCIsICJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04iKTsKKyAgc2hvdWxk
QmVOb25OdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVORE9SKSIpOworICBzaG91bGRCZU5vbk51
bGwoImdsLmdldFBhcmFtZXRlcihnbC5SRU5ERVJFUikiKTsKKyAgc2hvdWxkQmUoImdsLmdldEVy
cm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gY2hlY2tQcmVmaXgoZXhwZWN0
ZWQsIGVudW1fdmFsKSB7CisgIHZhciBzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsW2VudW1fdmFsXSk7
CisgIGlmIChzICE9IG51bGwgJiYKKyAgICAgIHMubGVuZ3RoID49IGV4cGVjdGVkLmxlbmd0aCAm
JgorICAgICAgcy5zdWJzdHJpbmcoMCwgZXhwZWN0ZWQubGVuZ3RoKSA9PSBleHBlY3RlZCkgewor
ICAgIHRlc3RQYXNzZWQoImdldFBhcmFtZXRlcihnbC4iICsgZW51bV92YWwgKyAiKSBjb3JyZWN0
bHkgc3RhcnRlZCB3aXRoICIgKyBleHBlY3RlZCk7CisgIH0gZWxzZSB7CisgICAgdGVzdEZhaWxl
ZCgiZ2V0UGFyYW1ldGVyKGdsLiIgKyBlbnVtX3ZhbCArICIpIGRpZCBub3Qgc3RhcnQgd2l0aCAi
ICsgZXhwZWN0ZWQpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUv
Z2wtb2JqZWN0LWdldC1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZjc3NTkzZDkyYzJjZmVhYTY0M2NkMDc5NDk3ZTVhMjM3OTM4MmNiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbApAQCAtMCww
ICsxLDI2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBjb250ZXh0VmVyc2lvbiA9IDI7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3luYy9zeW5jLXdlYmdsLXNw
ZWNpZmljLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvc3luYy9zeW5jLXdlYmdsLXNwZWNpZmljLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTllYzc4ZTNiZTgyYjY5ZDJlMWRkNzE1ZTE3YjdjYzQ1MDg0NzI4OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9zeW5jL3N5bmMtd2ViZ2wtc3BlY2lmaWMuaHRtbApAQCAtMCwwICsxLDE1NiBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wy
IHNwZWNpZmljIHN5bmMgb2JqZWN0IGJlaGF2aW9yczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBXZWJHTDIg
c3BlY2lmaWMgc3luYyBvYmplY3QgYmVoYXZpb3JzIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJD
YW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiLCBudWxsLCAyKTsKK3ZhciBzeW5jID0gbnVs
bDsKK3ZhciBwaXhlbCA9IG5ldyBVaW50OEFycmF5KDQpOworCitpZiAoIWdsKSB7CisgIHRlc3RG
YWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgZmluaXNoVGVzdCgpOworfSBlbHNl
IHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIHNo
b3VsZEJlKCJnbC5USU1FT1VUX0lHTk9SRUQiLCAiLTEiKTsKKyAgc2hvdWxkQmUoImdsLk1BWF9D
TElFTlRfV0FJVF9USU1FT1VUX1dFQkdMIiwgIjB4OTI0NyIpOworICB2YXIgbWF4ID0gZ2wuZ2V0
UGFyYW1ldGVyKGdsLk1BWF9DTElFTlRfV0FJVF9USU1FT1VUX1dFQkdMKTsKKyAgZGVidWcoIlF1
ZXJ5aW5nIGdsLk1BWF9DTElFTlRfV0FJVF9USU1FT1VUX1dFQkdMIik7CisgIHNob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgIGRlYnVnKCJnbC5NQVhfQ0xJRU5UX1dB
SVRfVElNRU9VVF9XRUJHTCByZXR1cm5zICIgKyBtYXggKyAibnMiKTsKKyAgaWYgKG1heCA8IDAp
IHsKKyAgICB0ZXN0RmFpbGVkKCJnbC5NQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCA8IDAi
KTsKKyAgfSBlbHNlIGlmIChtYXggPiAxMDAwICogMTAwMCAqIDEwMDApIHsKKyAgICAvLyBUaGlz
IGlzIG5vdCBkZW1hbmRlZCBieSB0aGUgV2ViR0wyIHNwZWMsIGJ1dCBhbnl0aGluZyBsYXJnZXIg
dGhhbiAxMDAwbXMKKyAgICAvLyBpcyBiYWQgaWRlYSBhbmQgbm8gaW1wbGVtZW50YXRpb24gc2hv
dWxkIGFsbG93IGl0LgorICAgIHRlc3RGYWlsZWQoImdsLk1BWF9DTElFTlRfV0FJVF9USU1FT1VU
X1dFQkdMIHNob3VsZCBub3QgZXhjZWVkIDEwMDBtcyIpOworICB9IGVsc2UgeworICAgIHRlc3RQ
YXNzZWQoImdsLk1BWF9DTElFTlRfV0FJVF9USU1FT1VUX1dFQkdMIHJldHVybnMgYSB2YWxpZCB2
YWx1ZSIpOworICB9CisgIHN5bmMgPSBnbC5mZW5jZVN5bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNf
Q09NUExFVEUsIDApOworICBzaG91bGRCZU5vbk51bGwoInN5bmMiKTsKKyAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgZ2wuY2xpZW50V2FpdFN5bmMoc3luYywg
MCwgbWF4KTsKKyAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAg
Z2wuY2xpZW50V2FpdFN5bmMoc3luYywgMCwgbWF4ICsgMSk7CisgIHNob3VsZEJlKCJnbC5nZXRF
cnJvcigpIiwgImdsLklOVkFMSURfT1BFUkFUSU9OIik7CisKKyAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHJ1bkdldFN5bmNQYXJhbWV0ZXJUZXN0KTsKK30KKwordmFyIG51bVJldHJpZXMgPSAyMDAw
MDsKK3ZhciBpdGVyYXRpb24gPSAwOworCitmdW5jdGlvbiBzeW5jV2l0aEdMU2VydmVyKCkgewor
ICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBp
eGVsKTsKK30KKworZnVuY3Rpb24gcnVuR2V0U3luY1BhcmFtZXRlclRlc3QoKSB7CisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoIlZlcmlmeWluZyBzeW5jIG9iamVjdCBpc24ndCBzaWduYWxlZCB0b28g
ZWFybHkiKTsKKyAgc3luYyA9IGdsLmZlbmNlU3luYyhnbC5TWU5DX0dQVV9DT01NQU5EU19DT01Q
TEVURSwgMCk7CisgIC8vIFZlcmlmeSBhcyBiZXN0IGFzIHBvc3NpYmxlIHRoYXQgdGhlIGltcGxl
bWVudGF0aW9uIGRvZXNuJ3QgYWxsb3cgYSBzeW5jCisgIC8vIG9iamVjdCB0byBiZWNvbWUgc2ln
bmFsZWQgdW50aWwgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIGV2ZW50IGxvb3AsIGJ5CisgIC8v
IHNwaW4tbG9vcGluZyBmb3Igc29tZSB0aW1lLgorICB2YXIgaXRlciA9IG51bVJldHJpZXM7Cisg
IHdoaWxlICgtLWl0ZXIgPiAwKSB7CisgICAgc3luY1dpdGhHTFNlcnZlcigpOworICAgIGlmIChn
bC5nZXRTeW5jUGFyYW1ldGVyKHN5bmMsIGdsLlNZTkNfU1RBVFVTKSA9PSBnbC5TSUdOQUxFRCkg
eworICAgICAgdGVzdEZhaWxlZCgiU3luYyBvYmplY3Qgd2FzIHNpZ25hbGVkIHRvbyBlYXJseSIp
OworICAgICAgZmluaXNoVGVzdCgpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICB0ZXN0
UGFzc2VkKCJTeW5jIG9iamVjdCB3YXNuJ3Qgc2lnbmFsZWQgdG9vIGVhcmx5Iik7CisgIGl0ZXJh
dGlvbiA9IG51bVJldHJpZXM7CisgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmaW5pc2hTeW5jUGFy
YW1ldGVyVGVzdCk7Cit9CisKKworZnVuY3Rpb24gZmluaXNoU3luY1BhcmFtZXRlclRlc3QoKSB7
CisgIGlmICgtLWl0ZXJhdGlvbiA9PSAwKSB7CisgICAgdGVzdEZhaWxlZCgiU3luYyBvYmplY3Qg
d2Fzbid0IHNpZ25hbGVkIGluIGEgcmVhc29uYWJsZSB0aW1lZnJhbWUgKCIgKyBudW1SZXRyaWVz
ICsgIiBpdGVyYXRpb25zKSIpOworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0K
KyAgdmFyIHJlcyA9IGdsLmdldFN5bmNQYXJhbWV0ZXIoc3luYywgZ2wuU1lOQ19TVEFUVVMpOwor
ICBpZiAocmVzID09IGdsLlNJR05BTEVEKSB7CisgICAgdGVzdFBhc3NlZCgiU3luYyBvYmplY3Qg
d2FzIHNpZ25hbGVkIik7CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJ1bkNsaWVudFdhaXRT
eW5jVGVzdCk7CisgICAgcmV0dXJuOworICB9CisgIC8vIFRyeSBhZ2Fpbi4KKyAgc3luY1dpdGhH
TFNlcnZlcigpOworICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmluaXNoU3luY1BhcmFtZXRlclRl
c3QpOworfQorCitmdW5jdGlvbiBydW5DbGllbnRXYWl0U3luY1Rlc3QoKSB7CisgIGRlYnVnKCIi
KTsKKyAgZGVidWcoIlZlcmlmeWluZyBjbGllbnRXYWl0U3luYyBkb2Vzbid0IGNvbXBsZXRlIHRv
byBlYXJseSIpOworCisgIHN5bmMgPSBnbC5mZW5jZVN5bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNf
Q09NUExFVEUsIDApOworICAvLyBWZXJpZnkgYXMgYmVzdCBhcyBwb3NzaWJsZSB0aGF0IHRoZSBp
bXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFsbG93CisgIC8vIGNsaWVudFdhaXRTeW5jIHRvIHJldHVy
biBDT05ESVRJT05fU0FUSVNGSUVEIG9yIEFMUkVBRFlfU0lHTkFMRUQgdW50aWwKKyAgLy8gcmV0
dXJuaW5nIGNvbnRyb2wgdG8gdGhlIGV2ZW50IGxvb3AsIGJ5IHNwaW4tbG9vcGluZyBmb3Igc29t
ZSB0aW1lLgorICB2YXIgaXRlciA9IG51bVJldHJpZXM7CisgIHdoaWxlICgtLWl0ZXIgPiAwKSB7
CisgICAgc3luY1dpdGhHTFNlcnZlcigpOworICAgIHZhciByZXMgPSBnbC5jbGllbnRXYWl0U3lu
YyhzeW5jLCAwLCAwKTsKKyAgICBpZiAocmVzID09IGdsLkNPTkRJVElPTl9TQVRJU0ZJRUQgfHwg
cmVzID09IGdsLkFMUkVBRFlfU0lHTkFMRUQpIHsKKyAgICAgIHRlc3RGYWlsZWQoImNsaWVudFdh
aXRTeW5jIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgdG9vIGVhcmx5Iik7CisgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQoImNsaWVudFdh
aXRTeW5jIGRpZG4ndCBjb21wbGV0ZSBzdWNjZXNzZnVsbHkgdG9vIGVhcmx5Iik7CisgIGl0ZXJh
dGlvbiA9IG51bVJldHJpZXM7CisgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmaW5pc2hDbGllbnRX
YWl0U3luY1Rlc3QpOworfQorCitmdW5jdGlvbiBmaW5pc2hDbGllbnRXYWl0U3luY1Rlc3QoKSB7
CisgIGlmICgtLWl0ZXJhdGlvbiA9PSAwKSB7CisgICAgdGVzdEZhaWxlZCgiY2xpZW50V2FpdFN5
bmMgZGlkbid0IGNvbXBsZXRlIGluIGEgcmVhc29uYWJsZSB0aW1lZnJhbWUgKCIgKyBudW1SZXRy
aWVzICsgIiBpdGVyYXRpb25zKSIpOworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47Cisg
IH0KKyAgdmFyIHJlcyA9IGdsLmNsaWVudFdhaXRTeW5jKHN5bmMsIDAsIDApOworICBpZiAocmVz
ID09IGdsLkNPTkRJVElPTl9TQVRJU0ZJRUQgfHwgcmVzID09IGdsLkFMUkVBRFlfU0lHTkFMRUQp
IHsKKyAgICB0ZXN0UGFzc2VkKCJjbGllbnRXYWl0U3luYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
Iik7CisgICAgLy8gVGhpcyBpcyB0aGUgbGFzdCB0ZXN0IHJpZ2h0IG5vdy4KKyAgICBmaW5pc2hU
ZXN0KCk7CisgICAgcmV0dXJuOworICB9CisgIC8vIFRyeSBhZ2Fpbi4KKyAgc3luY1dpdGhHTFNl
cnZlcigpOworICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmluaXNoQ2xpZW50V2FpdFN5bmNUZXN0
KTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4
LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM4MDFjNGM5YTcy
MGYyMzE1MDQ1YTRjY2FlOTExZDViZmQ4ODllMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIx
MWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0y
ZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZjAyNTQ0
Y2E4NDE1YTY0NTYyZDk2MmQ5NGQwNmJkMTRlMDIxODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdC
IiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9y
ZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNp
Z25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZiZDJlOTNkNzk4ZDIz
M2I2ZjY4ZTY0Nzk3NGIzYWQxZDkxYzA5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZf
cmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZf
QjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NmRhNmEyOTg3NDlhMTcxYjI0YzNiNTNhNDAxNGJkM2YwYWI5MTc5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxNmYt
cmVkLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxNmYtcmVkLWhh
bGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmY5YjAyOTk3NzUwNTU3N2FlZmVjZDgwNGZiMjIx
OGY4OWIxNWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcjE2
Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUjE2RiIsICJSRUQiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhcy90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDIyMzgyYzgz
NWMxNjhiNTIxNzc3ZTZmYWZjYzkzZmY5YTAxZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhcy90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM4NmJhMjlhMzk5NzI5YTBhOTI2Yzg5ODlmNDBhNWVkYmI4ZWFhNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yOC1yZWQtdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAiUkVE
IiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhcy90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jN2E0Mjc3MDg0NzNlYjY4Mzc5ZmNhMjJmNTQ3NTM5ZDZlODQzY2UyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
OFVJIiwgIlJFRF9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNl
NDIzOWFmMzRlNWY2Njg2NTUxYTc5MzNhNjY2NGQyMTk0ZDQ0MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZzE2Zi1yZy1oYWxm
X2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWFiYTY3ZjMxMDM4NGZjMTRkMGI5NWFhMjRhZmExYzFlZTBlMmY2
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnMTZmLXJnLWhh
bGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZG
IiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhcy90ZXgtMmQtcmczMmYtcmctZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMv
dGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE0YzZiOWJhYzUyM2FiOWUw
ZTMyMTI1ZTkwYjVlZGNkYTNkYjBmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXMvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNh
bnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSRzMyRiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZmQ0NGE4YzAyNmU4MWY4NTZlYTllODM5YjYzNzc1NjdkYjQ2NzdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMv
dGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhcy90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTVhNzBmODBkZmQwMGQzODIzYzg5N2U0Mjg1OTU4NGY5YmRhY2MzZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAi
UkdfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBf
MTBfMTBfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVu
c2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YmM0MTA4MDA0MWQ1
NGVmOWU3ZTFlOGUwZGQ4OWFiMmQyYmMxMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTBfQTIiLCAiUkdC
QSIsICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
MzQ3MDkyMmYwODBmYzMxNGJlMjU1OGMzMGZjODE1MTk3NTFlNWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjE2Zi1y
Z2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiMTZmLXJnYi1o
YWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4NzZiN2I0NGQxZTQ5ZWU2NmRjOThlNDU2YmRi
MjExNjZiNjY4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJn
YjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZGRlYzM5ZTg5MDhhMjYwOGYyMWExNGVhZWZlYTc1NjAzMjk5YzY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMzJGIiwgIlJHQiIsICJGTE9BVCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I1NjUt
cmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkY2U4MmU1NmMzMzYxMmQ3MTA0MGM5
MTUyYTE4MWY0YjRmZDNlODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I1NjUtcmdiLXVu
c2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I1NjUt
cmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzljMmFlYTlkMWJjZTA4
ZTUyMzUzMDRmOGYzZGFmODc1YWZjM2MxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURf
U0hPUlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
cy90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXMvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg2
YWNjY2VjNzM1M2NhZDQ1YTNjZWI4Y2M3ZDY0YWViYWY1MTdmMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2Fu
dmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NzA4MTcxNzU5N2JlYmZlYTFlMmYzY2Y1MDExOTM3MTJmMzVkM2Q1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiNV9hMS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYjgtcmdiLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGZlYzgxOWRkNzI4MWJkMWM2ZTlhZTNkNWVi
NWNlMDdkODNlMTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQt
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52
YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I4dWktcmdiX2ludGVnZXItdW5z
aWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiOHVpLXJnYl9pbnRl
Z2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjU2M2VhZTNhNzEwZWE3YWVhZGQy
MmQxZDM0YmM3MjQzYzI0OWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhVSSIsICJSR0JfSU5URUdFUiIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4
LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I5
X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4N2YzMWRiYTM4NzJhOWRkYjg5Zjc0MjVm
YTU3OWY4NTA0ODgxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0y
ZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEzNzAxMDNkZmU2ZWJlYTQ4ZDJiNmM4NWVmM2VlZDljMzBlZGM1NDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJH
QiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5MWZhNjI4NDlmYjdi
MmQ4ZGNhMzgxZGU2ZGY2NDY3M2MwYTA5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxm
X2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiN2ZmYTU3ZWI3ODMxMmMxYWM5ZDdhZjI1ZGQ0NTA4OGZj
NTBjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhMTZm
LXJnYmEtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCQTE2RiIsICJSR0JBIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNTZkZTJhNzA3YmEyODA3ZWU4MGQ2YmVhZGFjYjY2NDJmMmNjNDk5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQt
cmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1y
Z2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2ZmNGM1ZmZlMDQ2ZDFh
NzgzOTUwYWJkMjY2M2I1ZDU5MzU1NGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhcy90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTQt
cmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0y
ZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVm
NWJjZjE1OWRlZTcwMDg2ZGIyN2VkM2VhZDQ3MmFmZmZjMDJjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JB
IiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YWFiNzJmZjIzNGY0NmI2M2IxY2IxMmZiMjYzODhjNDY4NTRlMjg2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJS
R0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MTM3ZWY4OTZlMWJlODIxMzM0YmQyMzI0MmMwYWVjZTQ1
OGNjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2JhOHVp
LXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0JBOFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXNyZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1zcmdiOC1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZjNjMmUyNGQyOWU4N2IyOTIzZjlh
MTY5MjRlMzhlMjg3MDhhODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtc3JnYjhfYWxwaGE4LXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtc3JnYjhfYWxw
aGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiY2U2NTZjZjNmYzM5ODU1
MjBiMTRjZTc0NDZmZTk5OWVlZTk3MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2Fu
dmFzL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMv
dGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90
ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFlZjE1YTU5
MmRjNzI2MjIxZDE1MGU0NTJiMGQwMjFiMmM3MDEwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZM
T0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNk
LXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNWY3
OWU4ZWQ4MDgxNzUzNjRhM2IzZWVjOTcyYmM4MWQ1Y2I1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAi
UkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhcy90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzEx
Zl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11
bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwZTc2NGYxMzQ4
NmMwZGYyM2VjYjM0ODY4MjBmODA1ZDE5MWY1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8x
MWZfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cx
MUZfQjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yMTZmLXJlZC1mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wN2U1MDRhZDAxNTg2MDM0NDQxMzcyMzk3Njg0OTBiZDc0ZjI0OWU2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXIx
NmYtcmVkLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXIxNmYtcmVk
LWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjI5NmQ5ZjBjYTY5ZjQxN2FmNmZkZjU5YTlj
NmNhYWZkNDVhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qt
cjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjE2RiIsICJSRUQiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhcy90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTYyZjcx
NTQ5OTdkZmFlMjY2ZjM1NTA4MThlNzRiNTQ3YzQxYzhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhcy90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXI4LXJlZC11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjMGQ4MjQ1OThjMDQ3MjEzZDEzYTIzODY2MmE1MmFhYjBiYjNkNzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yOC1yZWQtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAi
UkVEIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhcy90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNTUyMWUzNzBjM2Y3OWNlNWY2YjYxMDI3N2U2NzJlYjZjNDIyYzQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdl
ci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSOFVJIiwgIlJFRF9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTJmMjM0NDM5NDMxMTk0NzY5ZGNkY2E4YTJkODllZmE2ZjQ5YjdkMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZzE2Zi1yZy1o
YWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2EwMmM2MjU1NmQ1YjFiNDZiMTJlOTMzNWFkNmI5YzhmMWIz
ZWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnMTZmLXJn
LWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
MTZGIiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhcy90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXMvdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM4MWMwYTQ4NGM3NjQ3
NDcyMzNkODcxOGRhNjZmMmYzYzc2MDFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSRzMyRiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZjNkZmMwZjhjMzU4YzVlNmIxZWM5YWYzM2FiZDYwNjk1ZWRhNDY2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXMvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhcy90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTY2YWU3MWQ5NzdiYTY0ZmRlNzFmNTEyMGE1ZDg4ZGY5NDg4NmU0YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUki
LCAiUkdfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJf
MTBfMTBfMTBfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2IxMF9hMi1yZ2Jh
LXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYzNkMTNjNDQ2
MmRiMGFmNzA3NjJjNjZlMjJjZmNjMjhjMjBmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvY2FudmFzL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jl
di5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTBfQTIiLCAi
UkdCQSIsICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlkZWVmZjA4NDAwZmJjN2VlMTk0MGNmOWJiZmFkOGViODExYjRkNzkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjE2
Zi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJn
Yi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YzI3NTlmODU5NjAxYTkyZGU4ZmNmOGY4
NzJkOTg3ZGMzOWE4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNk
LXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52
YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZGUwYWJiOTgxZTBiMWE1NDBlYWVlZDMwZDRhNzEwYzIwNThjMzBkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMzJGIiwgIlJHQiIsICJGTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2I1
NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjU2
NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmODdiY2ZkZDI3YzM1MTU3MTky
NDA1MmZlMDBjY2RmNWRmNjIxOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFz
L3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2I1NjUtcmdi
LXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2I1
NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUwM2RmODQ5MmZk
YTk3MTEwNzRjMGU2YjFjOTFhYTEyMTY0MTBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXMvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdO
RURfU0hPUlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhcy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXMvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmYyMjg2ZDAwYTdlZjAwOGQyYjNlMDI1YzQyMDY3ZTJmOTQ3YjdiMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEi
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81
XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTEyYWM4YzJhMjZmNDc3MGIzYTVkYjhkZWM2OTU2YzI5MjRh
ZTRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiNV9hMS1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
Y2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjgt
cmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTc5ZWRhOTMwZDczYzM1YmM4ZWZiNWUx
N2E4MzRlMWVjMmU3NDgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgt
M2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1j
YW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiOHVpLXJnYl9p
bnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjc3NzM4MjI4MDhhNDI3NDcx
Y2I1ZDkzNzVkM2I1NGFjZjQxNmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
cy90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhVSSIsICJSR0JfSU5URUdFUiIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMv
dGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1y
Z2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMDhkZmZkM2U4OGY2NjQ4Y2ZjZGFl
ZWMzMjk5YTg5MjE1ODJmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0zZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52
YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjNWFkOThmNDNiNzY4OTA0YjliNDVlMjkyMTlkMTZmYmQ0NTI3MjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1Iiwg
IlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
cy90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk0YzY5MDQyNjY0
NDZiM2NlZGI5MGQ5ZDRmMWViYTM0ODlmOWE3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1o
YWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFs
Zl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NzAzYmRmOTVkZTZlNjNiNDBjZGYxYjAzYTk3ZDdk
MTg5MjY5N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2Jh
MTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMWVlOTVhYzljMWM3MjE4MWFiN2JmYTVmZTUwN2YxZjYxMjc0OGZhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAi
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgt
M2QtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0z
ZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzU4MWZhOTU0Y2Y2
MDRiZjNiNDEzZGU4MjYzZDA3ZTZiZWYzZjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhcy90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtcmdi
YTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MDRmMTIxYWMxNjEzMzU4Y2Y1ZmE5ZWMwMWFmNjA2ZWE4NjIyYWZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRf
NF80Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJS
R0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMmZkY2JiYzU1MDhhZGIwNmQ1YWJkMGQzMzhiZTkwN2M1ZDViNzhkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIs
ICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNTY5MWI2ZDE2Y2UzZmEyZDllODI4MzJhYjE3MDcy
MTc2NjNjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1yZ2Jh
OHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0JBOFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTNkLXNy
Z2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0zZC1zcmdi
OC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOGNhNjQzZjlhMTk4NmQ4MGM1
MmNmNjNlMmM0MTg3YTc5NDc1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFz
L3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtc3JnYjhfYWxwaGE4
LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtM2Qtc3JnYjhf
YWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNWUwYmVhODc4YzVj
ODdlY2Q1ZTliZmYzMWYxNWRlNGYyNmFhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMzQ0YWY3MTBmNGJiM2YyMmYyYThlZDQ5ODI2MGYxZWEw
NzNkMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAi
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJf
cmVjdGFuZ2xlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFs
Zl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWJmMzllNzA5Y2JhNTBmMTA4MTFmZjNkZTYzOTRk
YmM2Y2EzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwg
IlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVk
X2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NmI1ZTNmZTY0Mjc2ZTFiNDU0NDRmMjJhMDBjMDNkZGM3MDdiZWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0y
ZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cx
MUZfQjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJk
LXIxNmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4
LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA3NGNmNmRlNTQyMDg4MDViNDhi
ZjBhZWRmMWI2MzQzM2IyODIyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNf
c3ViX3JlY3RhbmdsZS90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFu
Z2xlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1
Yl9yZWN0YW5nbGUvdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YzBhNmI3NTVkNzEzMzY2NWM5NGMwZWIwNTI4NTJhNjIzYThjMWU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlIxNkYiLCAiUkVEIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yMzJmLXJlZC1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1YTQ4YTc5ODEwOTFlZWMzODdhNWMxZGYyNzRjNDdhNWYyZWUx
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4
LTJkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1z
dWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcjgtcmVk
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
MmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDUyNzk4N2Y4YjIxOTM3
MzY4N2RhZDc4Zjc5ZTFjNTAzNjBlZTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJSRUQi
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yOHVpLXJlZF9p
bnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWVjNjY5MTBlYmVkNGJhYjhm
ZDg3MzkzOWFiODU5MzU1ODA4ZTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjhV
SSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmcxNmYtcmctZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmcxNmYtcmct
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWMxZjgxY2M1OGIxZGYxY2YzNTkwZDhhOTAyMjBlNjA3
YjE4MzQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xl
L3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52
YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJn
MTZmLXJnLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90
ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNjU5NWI4MTc1NmJl
MmRiNDRhYTQ4MDlkMTQ2YmYyNWE4YmM4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAi
UkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGVmMzk5ZGNjOGJjY2U1MDJmMTMzNWQyNTE0NTgyM2JjOGVmZTY3NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmczMmYtcmct
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkczMkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZzgtcmctdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2Yzc2NWI2ZmM4MjE5Y2M3OThhMjBkNTUyYWI3
YmJkZTMxODJkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0
YW5nbGUvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMzhiNzYyNDNmMjQyYmQ0NmU4MDVlZThjYjkyMWMy
MjhhOGRkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2lu
dF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3Rl
eC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM3ZTJiNzhjZmM0M2UwYzZiZmMyZTEyNzZlMDk0ZjA4YWUyOTI4YTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjEwX2Ey
LXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWFiNTEzMTYyZWE1YzA1YzlkNzVmZjgyMDU5NzQ3NjM0MzMzYTIw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
MmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMt
c3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdi
MTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyN2QzMTk0NGNk
MTFjNWY5Mjk4NGIzNzgwYjRjODQ2NDI5YzFhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0Ix
NkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZmY4YjYyMzVmMDgzZDViNmQxYjQ2Zjk0NzcxZjY0ZTNmY2M4NjAz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0y
ZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1z
dWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2I1
NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNkZGY5
YjBjMTFmZjkyZjMyYmM3ZTlmNmU3NWEwZGU2OGMzZWMxYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjU2NS1yZ2It
dW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc0MmIyMDc0NjRjMDVmMWFiM2U4YjBhOTJhMzgxY2ViNjgzN2E1YjgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjU2NS1yZ2ItdW5z
aWduZWRfc2hvcnRfNV82XzUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1
Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2Fu
dmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDg2MTkyMzhhYjM5OTJjOTZmYmJiYTQ4YTQxZTA3N2QxZWFlNjI1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdi
NV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2Fu
dmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFu
Z2xlL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRf
c2hvcnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YWE0MmM5ZDVkNmEyZWU0NDIxMDBmOTdh
MTM4NDkyOTQ0MjJiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9y
ZWN0YW5nbGUvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVf
QTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiOC1yZ2It
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0y
ZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUzNzZiZDJiMGE1OThh
NmUzNjFjNWI2MDViYThmZGYxN2EyZDQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4Iiwg
IlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdi
OHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmNjYTUxYTAx
MGUwNTRiNGU0ZjliZDFiNmQzMDJiMjBjMTVhYzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtc3ViLXJlY3Rhbmds
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJk
LXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYyODE4MmYzOTkwY2Jj
YTg2MGM3MDUwNjAxNjM1YmMyNjVlYjMyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJS
R0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNDMzOTIwYzA3ODE5NmY2NmM5NzNiNjYwNzU1MjMyNGNlMjA0Y2Uw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0y
ZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNh
bnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xl
L3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMxOGQw
OWRlNmE2MjU1MmU0ZmVlY2QxZjMwMDRkYTY1YzFiMGZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmExNmYtcmdi
YS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRiNDNiMWM4OTEyZDFkZTJjZTFhYmQyOTNm
MWViYThiYTVmZWNjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZmMTk1NmVjOWI0N2Y4NjA2NDZiY2M0Mjg3YTdhMjlhNDUxNjE1YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTMy
Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVj
dGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmE0LXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3Rl
eC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGVmOTQwN2Vi
NDk3NDJkZmI0NjA0M2ZjNjExMDg3YjYwNWY5Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTQtcmdiYS11bnNp
Z25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFjZjY5OTAwNTY2Njc5YTc2OWM0YTM0Nzg1NTFkOTQ4OGVmNjMwNmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXJnYmE0LXJnYmEtdW5z
aWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMt
c3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80
XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVj
dGFuZ2xlL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDIxYTg4NzEwNjM4NWNkZmI2ODY1Nzc5YzM2Mzc1NjVlNjllMGUwOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdi
YTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZh
cy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiM2YzZDllN2NkYTQ2ZTdkODBhY2I2ZTBlNDIzMDg3
MDhmZmJlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJS
R0JBX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXNyZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM3YzAxMWJjNDc2M2IzM2JlZWRl
YTA3OGQ5NDkxYTk0NmJmODIxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNf
c3ViX3JlY3RhbmdsZS90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdC
IiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTJkLXNyZ2I4X2Fs
cGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDljODZjYzgyNGY1MzU4
YTMwNzRlZmE2YTJlYzQyMmYwN2UzOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2Nh
bnZhc19zdWJfcmVjdGFuZ2xlL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRl
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yMTFmX2cx
MWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90
ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY2NGQ2Zjg4
ZWVjZTM1ODMyYzBhY2E0YTM2MTBhYTM3NjYwNjExZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXIxMWZfZzExZl9iMTBm
LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4
LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdiMDQ3
OGE1YzRjYTgwOTViOGQyNTZjZWUyNDQ5MDBlYzMyNzFlZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWhh
bGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5n
bGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1y
MTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5z
aWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZGUxMTQ2YTdmZmJk
ZjkzOWZhODUwMzEyNTczZmM3NjJjZmZjNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9p
bnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1z
dWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05FRF9JTlRf
MTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wM2VjYWViMjExNGU2OTgwZTA0YjdlNDNiZTUyNTk1YzI4MjNkYmQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yMTZmLXJlZC1m
bG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTZGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjE2Zi1yZWQtaGFs
Zl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZTE5ZWYxYmYxZTMzMTk4OWMzNjhkYzQ2ZGRlZDQ1
OGJkMWYxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiSEFMRl9GTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0
YW5nbGUvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA2OGJmMjQ5NTI1
NjcwMTEzNjAwZjY4NDdkNjcxM2M0NGYxZDdjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQi
LCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19z
dWJfcmVjdGFuZ2xlL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMxMzI5MGE2NzA3MGViODhmZjE1M2ZiNGFmMmU4YjhhODcyYjE4OWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXI4LXJl
ZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWIt
cmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlI4IiwgIlJFRCIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qtcjh1
aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9y
ZWN0YW5nbGUvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYyMDIwMDAxNzE5MDI5MzgyMWI4NGQ1MmJhOTQ3YWVhMzM2MWJlZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXI4dWktcmVk
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52
YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOFVJIiwgIlJFRF9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVj
dGFuZ2xlL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJf
cmVjdGFuZ2xlL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYjU3ZWEz
NDUxZGFjZjE3NjQ5MzkxNDQ1YjIwYjI5ZThiNWMwOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwg
IlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52
YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWQ5NTlmMWJhNmNlZWY2NTlkNjg4ZjNhOTQ4OTUxOGI5OWUyNTJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qtcmcx
NmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3Vi
LXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qtcmcz
MmYtcmctZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qt
cmczMmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzJjNmZmN2M1YWI2ODY0NWVlMjliZTFj
MTZmYTNkMTNiMjc5NDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJf
cmVjdGFuZ2xlL3RleC0zZC1yZzMyZi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzMyRiIsICJSRyIsICJGTE9BVCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUv
dGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9y
ZWN0YW5nbGUvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI5
MWQ3YjdjZGI1YjRmY2M4YjU4YWNlZDQ3MzhlMGQwOTY1YjhmYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2Vy
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
M2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIyZTNm
MzcxNWNjYTY2YjQwYmY1ZTlmMDU0NGUwMmMwNDM1NTMxMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNp
Z25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWItcmVjdGFu
Z2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHOFVJIiwgIlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNk
LXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50
XzJfMTBfMTBfMTBfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY1MWRmNWNjNTNjMDc5NjU2ZTg2NDAy
OTFjZTJlZjI1OGU3MjM2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3Vi
X3JlY3RhbmdsZS90ZXgtM2QtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9y
ZXYuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCMTBfQTIiLCAiUkdCQSIsICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3Rl
eC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5n
bGUvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmI3MDEwMjc4YjIy
ODMwZTdhMzgyYmQ5NzU3MWY2NWFmMmZlYjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJS
R0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGFkMDUzZWI4YWI5NWI2OTU5MWE2NTQ1NDJiZjZiNDJjNjRhMWUwMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2Qt
cmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZh
cy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4
LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMWU4ZDk5ODdjNGQy
MWY1NDgyMDIxMTc2Mzc3NzFiZDg5YzFkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMzJGIiwgIlJH
QiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFz
X3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yN2NiZjYxN2ZhZWU2ZmI2OTZiNjg0MmMzZjE3Y2E4ZDg3MTE0
YmZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3Rl
eC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3No
b3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ1MzM3ZmY3NDZlNzI3MDk5YTQ2MmEyN2YzNDkw
MjhjZDEyYTE5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rh
bmdsZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdC
IiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiNV9h
MS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDNmNjk1MjJmMzY2ZWQyNGVl
MjM0MTI2YzQ2MjI2MzE3OWYzNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0Ex
IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25l
ZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4
LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTBmNGJlNzlmY2RiMzk1MDk1MjYzZDgwMDNlZGY2YWFmNGJhMGU3OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFz
LXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVf
NV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJf
cmVjdGFuZ2xlL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYWVlOWEwYzZkOWNjYTU3YTEyMjA4MTdhYmVhYTZmZjE2YjEzZjQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1z
dWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0z
ZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFlZmUzZGNiMjI2ZGNkYWQ2ZjlkY2FkOTZkOGRhNzE2MWE2N2JkNGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNk
LXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhVSSIsICJSR0JfSU5URUdFUiIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9j
YW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTBiOGRlZjI0NDhmZGUzY2I4ZjBiODBiM2Q2YjhjZmMwOTE2MTE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2I5
X2U1LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJl
Y3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjlfZTUt
cmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
M2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YTk1YWI4MTk5N2Nk
YjgzN2M2MDY5OGU2MjQ3YzNhYTZlNjc0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
Y2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9F
NSIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxv
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NzgzNDE5MzYzODBkMjJjNGFiZGQ3OTQ0OTUzNjMyNDc2ZDJi
ZjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3Rl
eC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2Fu
dmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgt
M2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3Jl
Y3RhbmdsZS90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZGUwOWRiMzgyYmU3ZDQ3OTI3NTEwNTdlOTNhOTQ1OTQ4NDMwMzM4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFs
Zl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJlY3Rhbmds
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYmEzMmYt
cmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1y
Z2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzBlNjVlNTczNmExYTEyYzdjZjBj
MjA1ZDk3OWI4NTU0ZWZiYmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19z
dWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTMyRiIsICJSR0JBIiwg
IkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3Vi
X3JlY3RhbmdsZS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwMTNmNjZkNzdkMzAwMTcxYzBlN2MyNzY3YmViODIyZjBjNmU4M2EK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNk
LXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1j
YW52YXMtc3ViLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFu
Z2xlL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9y
dF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUyZWQ3OTRhODJlOTQzMTc1ZDQ1YmRhYzBjZTM0
OTg1MmNiOTdjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rh
bmdsZS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJH
QkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXJnYmE4LXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2Jh
OC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDZkMmIxNTVjZDhmZWMyYjE3
NmMzNTQxMTJiNTFiMjM4ODM0MWZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZh
c19zdWJfcmVjdGFuZ2xlL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtY2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTgiLCAi
UkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5z
aWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1y
Z2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdkNWM5
YWFkZTNjODA5YzYyNGI3NWJjNjFkMDlkZjU2ZmZiOGQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3RhbmdsZS90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJl
Y3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0JBOFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3ViX3JlY3Rhbmds
ZS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNf
c3ViX3JlY3RhbmdsZS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZDA5YjVmYjc2Y2YwMDQ2MzRjMmU4YmM3OTE5NTBmM2MzYzgyOWYxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhc19zdWJfcmVjdGFuZ2xlL3RleC0zZC1zcmdiOC1yZ2It
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJl
Y3RhbmdsZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXNy
Z2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXNfc3Vi
X3JlY3RhbmdsZS90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZkOTVhNWRmYzAxMzNiYTM0ZmNmZGJjYjcxOThjNzhiN2Y0ZGVhM2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzX3N1Yl9yZWN0YW5nbGUvdGV4LTNkLXNyZ2I4
X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
Y2FudmFzLXN1Yi1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJHQkEiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4
LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0y
ZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWEzMjkyMTEwNTA5
ODgzYjIwYjFjMzBhZDI1MjQwYjg1OTkzNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjExZl9n
MTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjEx
Zl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDFkOGZjNjFjNDE1
MWM4YTk0OTk5MGVkMDEyMDY5MDMyMTI5MWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFM
Rl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4
LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRf
MTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMxOTlkMjkwMWMzMjJjNmNkMWUxYTJi
MzU3NTBjYWZkZjc0ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdC
IiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYmQwNmU0
NDA0YTkzNWViYjAwOTQxOGE3ZDlkNmU3YjM0ZmE4ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2UvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWRkY2FlNmE0MGM4ZjhlZWRjNDU5M2MzNGQzMmM3NmFhODZiOTA4ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJI
QUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90
ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjMyZi1y
ZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTNlNDJjNmM0ZTNkYWFiM2MyMDJmOTNlNmE3YWU2
YTBiYzUxMmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yMzJm
LXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMzJG
IiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2UvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Uv
dGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVhNDRiZGU1ZmUy
YTcxMjFiMzAwMjUxOGZhMzk2ODQ2MGYwYjQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZS90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAiUkVEIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yOHVpLXJlZF9pbnRl
Z2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcjh1aS1yZWRf
aW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI0YjMzOTliYjUyNDA2Zjhm
OGFjMzQ1NzFmNThhZTg4MzI0MGY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZS90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURf
QllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJk
LXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnMTZmLXJnLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA4MzZlZDhiMGVmOTdhNWJjY2NmYWNiYTA5OGE4ZWJmOTZi
OTIzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmcxNmYtcmct
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAi
UkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
L3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJk
LXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjI2MGNmOGU4ZWFhNjQ0NjJh
MDIwOGVkYmY0Y2Q5YzJkNDEyY2UzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
L3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
YmFmMjA2OWUwZDM3NWI0Nzc4YjZmMzM1Y2MzZjAzMjAwOTMwYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzdiYzI0YWI0Mzg3NzA3ZDcxY2VkZTVmOGE4MzFhYTgyMjhiNzM2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZzgtcmctdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAi
UkciLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWUzNWVhNTRjMDc4NGQ3Mjg4MDA0OTBjY2U4ODJjNDNlM2Y1YzllCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4
VUkiLCAiUkdfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRf
Ml8xMF8xMF8xMF9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiMTBfYTItcmdi
YS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzAyM2E4NWI5
NzhhZDdlOGRiYjRmZTBkYTZkY2Q0ODI1NDUxM2RjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jl
di5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJS
R0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
MmExZTZhMTY5MjY0NTg5Mjk1M2FlMWY3MTUwN2U2ZWRmOGJmMmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2It
aGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZf
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTg4YTdkNWY1NWEzNzVjOWIxZDQ1Nzk1OTA4YjRjNGI0
NzUwMDc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2IxNmYt
cmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI2NGY5ZTIx
NzhiYTFmZTgwZGM2ZTJkYzRiN2EzMzIxMDgyYTIyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZS90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYThjYjZkNzNiZGUwYzRmODUxMjg0OTExOTI5NzU4M2Fj
MWY3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVf
Nl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hv
cnRfNV82XzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWQ2NzI1OTI0M2NkYjI3YzIwMzNjMWUwZTA4NGQw
ZGQ5MWI4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I1
NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfU0hPUlRfNV82XzUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I1X2ExLXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I1X2ExLXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNjY4ZWNlNDI1MGJmNzZiNTI4MzJm
OTNjMDIzZDNmZDk5MTM1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4
LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiNV9hMS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdi
NV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODljYjNl
MzllNjIwNDc2OGNiNjMwNWFiZGRlMTNiZDg0M2Y4NjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEi
LCAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZS90ZXgtMmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU4MjNhNjk0NGIzYjRiZmJiNjI0NDk1ZDFjYzM3ZjdmNWQ5NjUyZmMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOCIsICJSR0IiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4
LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2UvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg1MTZhNmYxOTEyNWNjZTgyYzMxYTU0YmM0NDhjNjc1NGY2ZDM0ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwg
IlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZjE4
NmEzMDk2OGI5Mzc3NWE4YTg5NzIwYWRiYWE3YmJjYWE4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiOV9lNS1yZ2It
aGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxm
X2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwMTUwNGNjYWQ4ODNkN2M3Y2Y0YWQ5ZDVhMGQ0ZjIy
NTM0NGE5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiOV9l
NS1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0I5X0U1IiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0
ZjVkYjc1NDA4OWRiNzFhNWIzYTBlZmIxYzQ2ZGU0ZjIyMzA3MTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2JhMTZm
LXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2JhMTZmLXJn
YmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NjFmZDA5Nzg5OGE5ZDk0NzllMzg4YWNl
ZTY4ZDc2ODRiZDA2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJk
LXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MDI5NTk1OTc1OGMxZjRkOTJmMmMwNThmN2QyMjBkZDQ1OTY1MWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAi
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0y
ZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQt
cmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIxNzZlZDZkYmJlMTc2
YWRiYzVmMDg1OGExYTg1NTg3YWI1NTYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZS90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmE0LXJn
YmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1y
Z2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1Mzc1
ZjBmYmRjNjUwYTkxNWExOWVmMjI3MDgxN2ViMjIzZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJV
TlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZS90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc5ZjY5MzlmZjdjZDY3NTljMTJhM2VhMTdhZjMyOTlmMDNjZWJhMzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJSR0JBIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
L3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYjY4ZjZjMTZlNjhlYTAxNWMzN2FkZjY2ODI1ZTMxNTI5MmM1Y2MwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdl
ci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiMTRjYjdlMmM0YjgzMWQyMDdiNTVlMjM1NzkzNDUxOTQwMTM0
OTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTJkLXNyZ2I4LXJnYi11
bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNS
R0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU0YTMxMDUzNWJjZmI3ZjI2MjQxNjlkMGM3NGQwODYzMTNk
M2U0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtMmQtc3JnYjhfYWxw
aGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYt
cmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJn
Yi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NmE1MjM1OWUyNzc4OThlNTJhMzYwM2QwNjBjZjkw
ZDUzNzY4MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXIxMWZf
ZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFs
Zl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4YjFiZmEzYzliYjZjZTAyMTYzOGU2MWE5NWJjYTc2
NTQ5ZGNmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXIxMWZf
ZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYt
cmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90
ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Y2IxN2ViNjI1N2QxYTY5MWRmOThmMWVkNTM2ODBkZTIyNzNhNDY3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1y
Z2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEw
Rl8xMUZfMTFGX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2UvdGV4LTNkLXIxNmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXIx
NmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwNmVhYWZkMWRhZWZmYTQxYjJkOWMxNDJm
MDcyM2JkMzMwZTEyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qt
cjE2Zi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2UvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTA4NzQ5MjRi
YWNlYjNkZGVjNmJlMjAwZDdmNDFkOGRlNGZhZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yMzJmLXJlZC1mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5NDU4MjMyOWRjODNkNTVmZTIyMGQyYmE3YTk2ZmViZjdlOWQ2YWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcjgtcmVk
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcjgtcmVkLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDgxOWVmYTY3ZmNkYzg0MjNhMzNlMDRmMjFiOGU4
NjYwMjE5NDgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yOC1y
ZWQtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MzA3NTRiMDlkNDc4MjRhMjY4MWZiMDQ2ZmEwZGExNDJlMzU3
MjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yOHVpLXJlZF9p
bnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjhVSSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MzM1ODhmMjIzZTBmZWM3YzY3ZjEwOGM3MDIwNWIxN2VjZTVmZjdkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnMTZmLXJnLWhh
bGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0NTM5OGYyOWE2OThkYjJjYTI5YjUwMGEyMzQ5ZDQxMTMyMmVm
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnMTZmLXJnLWhh
bGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYi
LCAiUkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4
LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJjMWY3Nzc5ZGRjYzYzNDcxYWQ0
YWRlNmU2ZTdhZDk1MDM0NzRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90
ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkczMkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBh
YmNjNTQ2ZGZlMDEzYjYyN2Y1MjUyOTFjZDUwZTkzZjM4OTFlNGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qtcmc4
dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNk
LXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmZjAzYzE3
ZjIyNDBkMGJjZGRmOTUyMzI5YTRjZDEyYWFkY2I5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2UvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEw
XzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNjU5MWRmZDU1MDkyNGRkNmEyMTcyOWEzN2Jk
M2FjNTE1MzlkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJn
YjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5TSUdORURfSU5U
XzJfMTBfMTBfMTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0z
ZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE1MjlhNDA0M2Y2N2VmNzY3NWFk
OGFjNjU3YjI0MGFjZWU5YWJkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90
ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkNTYzMzE4YzY0YjEwZjIyNDMzODVmOTJhM2E2N2Q5MjQzMmU0NTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkhB
TEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3Rl
eC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjMy
Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDViY2EwMjYxNDMwYTJhMTAxY2VlZWQxYjBl
MTNjMzRkODhiMjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1y
Z2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQjMyRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTUyMzk4YzQ5ZjczNTRjZjY0OWJlYzNmMDcxYzIyNmJjYTk5MGM3NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2UvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmMTkwYzAxYzk5OGRkYWM2MWNhNmMzZGNkNmZmNDA4ZGFkYTIwYTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hv
cnRfNV82XzUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1
IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWVkNzEyNTQ4NDIxMzA1MjFiNDgxZDY5MGEzM2VhZTU1MDBlNzJmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
NV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81
XzVfMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRf
c2hvcnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkY2JhYjJlZjAwMjFlYjhlYjRjYjRmOTg0
MTZhNjA2ZTU2ZTZjYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNk
LXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81
XzVfNV8xIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgt
M2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1y
Z2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJhMTdmZjMxMjVlMDE5YmZh
OWE2ZGJhZmYyMWM3NmQxMGM4NmEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZS90ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiOHVpLXJnYl9pbnRl
Z2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiOHVpLXJn
Yl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2MyYmJjNDIyODEzZjQx
YzM4N2QyNDBkNWYwZWNkNjkyNGY3MGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lOVEVHRVIiLCAiVU5T
SUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Uv
dGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJn
YjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUxNWFlYjMwZGIzNGI3OTUxODIzMWQ4
ZTY0N2ZmOGE1NzRiMGZkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgt
M2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43OWFmYjc5NWFkOTM5YTgyMzk2Nzk1MzBjNGQ3OTk5MDRlNTYwMDk5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
L3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qt
cmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJmMTM3YThlNWQwZjU0OGEyZjM3
MDZjMTFlYTM1YWJlOGVmYWU2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90
ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2YyMWNkYTk4NWNkZTIzZGNiMGI5M2NjM2NhN2Y1YmE2YWQ4NTU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZf
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIs
ICJSR0JBIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZS90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmZjc5MWU4ZDZi
YzcyMTI1NGY4MmQ2Y2U0NmY1ODE1NTcwNDI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZS90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTQwYWJkZThiNGQ2NDM0OTI5ZmE5MDllNDdhZmY5ZGU4
MjkyOWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1yZ2JhNC1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80
XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRf
c2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NmI4NjQzNjYwNmQyYmYyZmRkMTAwYzQy
OGVlMDRkNzlmYzExNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNk
LXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80
XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1y
Z2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qtcmdi
YTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIyM2I5ZTBhNmY5ZmM2NTA1
ZTMyMDgwY2YyZDA4MjZhN2VlMGQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZS90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdi
YV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qtcmdi
YTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYWQ2YTQ5
Y2ExNzczNWUwY2QwMmI2YzJjOTgzMGZlNWVjYjU1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lO
VEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2UvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2UvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjJhMGNjYmI1MGM2MDE4MDI2MGJjNGFmM2E3OTMzZDEyZGZkZTMyZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lH
TkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlL3Rl
eC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2UvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNGVjYWY2MmQwMDI1NzgwODg5ZTViN2YyMjlmMzMzZDBiYTU2ODMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhB
OCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJn
Yi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIx
MWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMDUyYjYxMzBhYjUwNzA1
YWQ3Mzk2ZjQ2M2Y1ZTIyOTA1ODJiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIs
ICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fYmxvYi90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1y
Z2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNjFjMjM3OTc3ZmE2N2IyZTAzODlkMzI1
NjljNTJiZmNkZmE3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkhB
TEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBm
XzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YzBmM2MyNjg5NTc2NDZjZTE5MDQxMWVjY2Y0YzQzYWEwOWQ5Nzg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIx
MWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJ
R05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIxNmYtcmVkLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWFmMWZhMzUzMjA0OGI1NTNmMmQ3NzZmOTA1MTlhMWZjNzAwN2Rl
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3Rl
eC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSMTZGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXIxNmYtcmVkLWhh
bGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmVjNDllY2EwNDg2YTg5OWMxMGE4NGJlNzFlMGY2
YjA2YjNkYWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcjMy
Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0y
ZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MmVhNWU1NGViNzk0MDQ1MzljMzBi
ODc4OWZmNjQ5YmQ0ZWYzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fYmxvYi90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXI4LXJl
ZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90
ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODMyYmUzMjk3ZjIy
YmU5NjVhZjZmMDUwOTAyNzhmMjIyZWExMGJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4IiwgIlJFRCIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjA3OWFjZjE5MGM4MmNhOGU0ZWM0ZTQ1Mzhm
OTczNjhmMzQ5NDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOFVJIiwgIlJFRF9JTlRFR0VSIiwgIlVOU0lH
TkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOGU3MjM0YjcxOWE4YjM2YjBiNTZhMWY5ZTU3YzIzNDIwNzQ2Y2VmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnMTZmLXJnLWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwg
IkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9ibG9iL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMyMjQzMjQ4YmEyOThkZWQ1MzNkMDAwYjU5YzA2MTBlYzIwYTMxYmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmcx
NmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
RzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnMzJmLXJnLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmMwMTA2NDU3ZjI0YzFjNjk1ODc3ODYzNzRmN2IxOTk4MjM0YjI5
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3Rl
eC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSRzMyRiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZzgtcmctdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMmU2YzE0Zjk0YjdiNmIxM2E1YzYzYjNjNjQ1
Y2IyYTA3OTMyYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fYmxvYi90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJk
LXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2YzJhNjI2ZTAzYzM2NDg2NzYwNDM4MGU5ZmQ2NThlNGQ4YzU5NGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQt
cmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHOFVJIiwgIlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90
ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2ln
bmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxOWNmOThiODNmMDQ1ODc4
NGE1NjA5OTBkMDA0YmNjNzRlNDhmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8x
MF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTBf
QTIiLCAiUkdCQSIsICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJn
YjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3Rl
eC0yZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQwZTgzOWYyZjhhM2UwNDBj
YWZjODUxMDk1MTZkYzFhYmU3MGM0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4
LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBm
YzExNDkwMDdhOTZhMjljZGE0YzgxMzU0NWMyZGZhZDQyN2M1ZTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiMTZmLXJnYi1oYWxm
X2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJS
R0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYWU0NGQyY2M4MmYzMTFkNWU4OWRlYzBlZWRjNWNhNDU0Y2IzNGYyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJk
LXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFw
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCMzJGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiNTY1
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBiMmY0NzEzNGY2ZDJmYjQyMDlm
NTRlZGQ3NzVhYjAxODgxYzQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MjYxZTU0YmMyMjA1ZjhkNWY2YzY5OWI5
MzM4MDA1OTRkY2YwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVE
X1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjVfYTEtcmdiYS11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlZGU5MDI0ZjBmZjRjZjgwMzAwMTJhMTdj
NDJlZGYyZDJlOTNkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfQllU
RSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fYmxvYi90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxODM1MDQ5YjJjNjNmZmFiZDcx
ZDgwZjNjMzhhMTA3ZTE0Y2YxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81
XzEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JB
IiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM1NGZiNzVjZTlhODlmY2FhNTQz
YWQ2ODY1Y2FmOWY1YjQ1NjUxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2YwMDhlZDI1Zjc1NmVhNzRjZGRkNmRkNGQw
YWIzNjgyYThjNWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhVSSIsICJSR0JfSU5URUdFUiIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjMwODFjNTJjZWRlYWIwNDllZDhkZTc1YTQ4NzlhZTUwMDI5NWM0ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1y
Z2I5X2U1LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjlfZTUt
cmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2QzMzE4NjIzYjIyYjFhYzViZTE3ZjQw
N2MwOWU3YTU5YzMxZWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2Jsb2IvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxv
Yi90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc1
MzEyMTc2OTcyOTBhZjJmZDhjZTgzZWUxMjk5ZDk3Y2VlODUwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxv
YXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JB
IiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1OGIyYWY5NDYyZDY0MzlkNmI0ZjQ1MjVjNWQ0NzUyODA5
MTExZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9i
L3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0
aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZy
b20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQt
cmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxv
Yi90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwOGQ3N2NkMjAx
YjM2NmNkYzI2NTk3NGViNDdjM2RhMjg0NzdjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTMyRiIsICJSR0JBIiwgIkZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9ibG9iL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jODNkYzJhNzMxYjFlZjI4ZGM4ZTAwNjRjMWExZjRhMTM3YmRjY2MzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJk
LXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxv
Yi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXJnYmE0
LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2Jsb2IvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlNGU1YTU0ZDRiYmQ3NWExZjQ3OWI2NGU0YjFhMGRlYjIxNmM2ZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQt
cmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
YmxvYi90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNjYmU4MjZhMzdjZDQwMTQwOTBmNmY2OTk5NGVhOTlmNDg3MGRhNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1y
Z2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2Iu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1yZ2JhOHVp
LXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQyNzM2YTJkYTJlZDI3MTk5NGFhNzNmNWY5MjE4MDQzZmVmNTkzZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQt
cmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0JBOFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9ibG9iL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODc4NzU3ZTM1MzZmNTBhYjRlM2YwZTRiNDRjODg1MDliYTdjMWMwMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0yZC1z
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtMmQtc3JnYjhfYWxw
aGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NzhkZjU1NmQwN2YyYWE2MmY0MzkzOTYwZTc0MDNlN2IxNDg4MWFjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTJkLXNyZ2I4X2Fs
cGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2Iu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qt
cjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fYmxvYi90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWZhOWYyMWEyY2JlYjRlY2I2ZWE5ZTJkNmJiN2M5ZTAzZTdiZjFhMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yMTFmX2cxMWZfYjEw
Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9H
MTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2It
aGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNk
LXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFkZjExM2Nh
MGIyZGVhNzE2MzUzYzEzMjg5NGM0NjRjODBjMmVlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFs
Zl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZf
QjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdi
LXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9ibG9iL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8x
MWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NmY5MDA4ODczYTM0NGE5MTU5ZGEzYmE3Zjk0
YmUzZDQwNTYzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fYmxvYi90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzEx
Zl9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0Ix
MEYiLCAiUkdCIiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXIx
NmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgt
M2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTg3OTgwNjk5MjcxYzQ3Y2Y1NjU0
MjMzODFjOWMxZDY2NjcxMjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yMTZm
LXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90
ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMTc1OTMxODdjYzhh
Y2NiMTNmODljYWYwOGViMDJmMWNmNjFmMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9ibG9iL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2Jsb2IvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1NWZk
ZTBiMGVjNTBjOTI1MThjMTg1YTIyYzJhOWRhY2FiZWYzZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMzJGIiwgIlJFRCIsICJGTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
YmxvYi90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRhMGQ5Y2YxZGUwZDk5NTllNWY0ZTA0ZmZlNjdhZTM1MDJkYzc0YmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcjgtcmVkLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAi
UkVEIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXI4
dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2Mjk1Mzg2YjRi
ZDg2ZDc3ZTY0Njk5NDZjYjJjMjAyM2JhMzZiOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVE
X0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZzE2Zi1yZy1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhYTVmYWZiZDdiNTcxMTcwOTM1MGI4OTlkZTdmYjZlY2VlOWI0
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90
ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkcxNkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZzE2Zi1yZy1o
YWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQzZGRiZDM4ZWRjOWRlYTQ4ZWQ5NzU0ZjJmMTk3
OTc4NTUzZmIwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9ibG9iL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJn
MzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgt
M2QtcmczMmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQ4ZTgxODVlMTNiN2ZiOTQzNDVm
N2ZmN2Y5ZWJiYTExMzM4ZTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZzgt
cmctdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2Iv
dGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI4MDc2YWM3MTUx
MzdjMjg1M2Q5Mjk0NjFiZjMyYzY2NTFjNzc2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAiUkciLCAiVU5TSUdORURf
QllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxMTQ0YzRlYjIzNGI4MzMxYTViNWZhM2Iw
NmJmNTMwZGQ2MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAiUkdfSU5URUdFUiIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEw
XzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJn
YjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmU5MjRkOGU2NTQyYjUzZTZhZTczYzQ0YjcxZDczMWIwZjMyZTk5OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2IxMF9hMi1yZ2Jh
LXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
YmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
ViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fYmxvYi90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Mjg3ZjAwODMwNGMzNzFmZjhiMzNmNzVmMzlhZDYzNzMzNGY3YzE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxv
YXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIs
ICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmQ3OGQ4ODQzYWM0NTZiZmI1ZGY3MDc2MDU1ODkzOGRkNzM2OTU0Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0z
ZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2Iu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2IzMmYtcmdi
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtcmdi
MzJmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMWM2ZmJhZDEyMTc2MzhlNWFiNmJhMGZh
OWUwZWQ2NmNjNDMwYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I1
NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9i
bG9iL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWZj
YWEwYjNjMGU1NjJhYjQ4NWQyZDQyM2E4NzVmNWQ3ZmMyYWU4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAi
UkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hv
cnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1y
Z2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1YTk3ZTkw
YzZlZDJiMmI3YzczMGM5MjM5NzQ5MmYyOGFkOWU4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3No
b3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIs
ICJSR0IiLCAiVU5TSUdORURfU0hPUlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjVfYTEtcmdiYS11
bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgt
M2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjRiOTdkZWVm
NGYyZjMwNjc4MjY0ZjNjYThlMTZmYmU2NmI0ZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdC
QSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hv
cnRfNV81XzVfMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNk
LXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQz
MTliM2U1ODZiMWRiNTMyYmNjNDFkNWMyYTA3N2UzM2M0YTg0NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qt
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2Jsb2IvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjY4
ZGIyZDFkNGRiZmE3ZDljYjAxY2Y2ZGYxMTg1OWI2ZTBiYmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVk
X2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOCIsICJSR0Ii
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I4
dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZmIyZTFmYmU3
YzU3OTI3MDZkMmYyNjFiOTY4ZTA3ZDgwYTkwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwg
IlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYjlfZTUtcmdiLWZs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiOV9l
NS1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2ZlYThjYWFkN2Q0ZjkwZDQyYzFkMjg3ODBj
ODdiZmQyYWFiOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2I5
X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxv
Yi90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MjMyMzAz
MjVmYTgzZjY4ZTYyMzgyMjZkYmM5OWM4OTdjM2EyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIs
ICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZjU5ZjJjMTVkNDAwOTA2MzhiN2EyMGJmZWIwNzdmZjYyOTc0ODk5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNk
LXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxm
X2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtcmdi
YTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDcxMWVmZWZhNzdlYTkxMTA1
MWI3OGExNDMwM2ViYjQ1ZTIwMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZM
T0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYzViNzAzMjUzZDliYTllNjhkY2NiMzczYTg3YzA3MDJjNjk1ZTRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYmEzMmYt
cmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJG
IiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXJnYmE0LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3OGNiNTk4YTJiZmQ3NDY2NWY2N2VmMTA0
M2UwYzMyNDA4NGVlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fYmxvYi90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
YmxvYi90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9z
aG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZlMzQxZWUyNjhmYWRhOWVhOTkxMWIxNzAy
YjMzNjMyZjAyYmEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05F
RF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhOC1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODAxOTY5ZDRiZjQ1YWZhYjk4NjYzYmYxMmM5
ZmY4YTU2NGIzODBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Js
b2IvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9iL3RleC0zZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIzZjk2MTEzM2Y3MWY2NDcwMjcxNzcyYzdi
OTNmZTNhMTgyMzU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9ibG9iL3RleC0zZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VS
IiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2Jsb2IvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtc3JnYjgtcmdiLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWNhZmUwNjI4M2ZlOTg2YWE4MDhiYWJlMzA2
NTdlYTQ3ZWMxODUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2Jsb2IvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1ibG9iLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9ibG9i
L3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fYmxvYi90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMDY0NGI2YjdlNTliNDIyZWIzZjY2Y2JkOThjZGM5Yzhj
MGIzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fYmxv
Yi90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20tYmxvYi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyZDA0MjUyZGRlZDE2ZGFmNmFjZDU3NmYwODY0Nzg2YjVm
ODZlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52
YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFz
L3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxv
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NzFkZjc5OWMzN2ZlYTNkNThmODJmMjNiNmJhMDkxMDM0Nzcx
NDdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZh
cy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZf
MTFmX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQt
cjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZDIwYTgwMDdmYzk1Mzc5ZjFhMWMyMDI1YmZkMzYwNjhjZjM4ZGZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcjEx
Zl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiVU5T
SUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcjE2Zi1yZWQt
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzIzMjZmNDY3ZjEzNDBkZGQxYmUwNzgxOGRmMzFlYTQx
NDM1ZjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Nh
bnZhcy90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNh
bnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yMTZmLXJlZC1o
YWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0y
ZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmZjhkNzVkMTY0ZWEzMjZk
NDgyYmYyZjc0ZGQxY2JiZmNiZDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9jYW52YXMvdGV4LTJkLXIzMmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
OGZlNDYxYmUyMjY5OWZjZWVkOWNmMGQ2MjQ0NGE0MmM2NDY3MmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yMzJmLXJlZC1mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwg
IkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0Njc5MjgyMDc1MDE1OTk0Nzk5NDdiYWU1M2Y0MDUzYjYxODFhZjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3Rl
eC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlI4IiwgIlJFRCIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXI4dWkt
cmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2NhbnZhcy90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGY0MDNjNmY4OGE2YzIyMmFkOTI0OGUyNzE2OTE4MjRhMjIxMDVjZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXI4
dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
Y2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFz
L3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2NhbnZhcy90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTA0ZjAzM2Q0
ZGYzYmYzMjllZmEzZTI4MDVkYTE0ODVlYjQxN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
Y2FudmFzL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODU3OTRmNTBhMTM5NzUzODdhOThjNTUzYjM1NGNkYjNlMWRkODA1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnMTZm
LXJnLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
RzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZzMyZi1yZy1m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZjBmNDQ1ZmM0MGIzZGI5Mzk2NjQzNWVmM2Y2MTkwMzJi
OTc0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2Fu
dmFzL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnOC1yZy11bnNp
Z25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0y
ZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5OGY0OWQ1ZGI4ZGExNmIz
OWQ2NjU0N2Y1Y2I2ZGEwY2NlOTg5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9jYW52YXMvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmc4dWktcmdfaW50ZWdl
ci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzOGNkMTNmMWQ4YWZmNGRmOGRmYjBi
Mjc4MGMzNmI1ZjY3MGFhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOFVJIiwgIlJHX0lOVEVHRVIi
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2lu
dF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZh
cy90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NDY2MWVlYmVhYjdmOTBkZDc3YzI1YzBjNjdjNTJlYTA2MzMzYzM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQt
cmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDM4ZWExN2RlOTliMjI5NzJjYmRlMDI2ODUzNDBjNThmYzRmNzMx
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZh
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjE2Zi1yZ2It
aGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkMDg4Y2ZlNzU0NWNk
NTU2M2E5YWZhMWQ5MGMwNDk0ZjRkNTIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiSEFM
Rl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWY3YzcwZDM5MTc5Njg2Mzg2NGVkZGFkNTY5MjE0OWFmNjkyNGQxYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJn
YjMyZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdi
NTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYwMGNkZWU1MmIyOGE1OGIw
MzQ3Mzc3NTU0NTRlNDcwMzhkYWRiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5T
SUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2I1NjUt
cmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZkN2Y3MmJiZDJmMDZk
ZTg3NzNiNjlhOTRlMTVkNDQ1OWI5YmYzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRf
NV82XzUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAi
UkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjVfYTEtcmdiYS11
bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3Rl
eC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMTUxYTI0
MTJmNzk0YzU3MmIxZTIzYjE2YzE2ZTU2OGMwZGIzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEi
LCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNp
Z25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2Fu
dmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExN2U0YmE4MDVlMTViNDVkYjY0NjIyNTI0ZWVlYzllZDRhZDdmNTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2I1
X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0
aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZy
b20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8x
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9jYW52YXMvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMDU4OGRlYzUxY2YwYzMzYTM4Mzc2YzhiM2NhNjQxZWY5YjExMWY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdi
OHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjNiNTY3NjNiMDcxNDIzMmI0MmI2NjI0NDZkOWQxOWNmZTgwYmY2Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2NhbnZhcy90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRmODVjYTY0NDBiYmNmOGEzOTBmNmM1MzA4YzUwYzY2NzY4NTJkYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYjlf
ZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiOV9l
NS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTEzNzk0NzMxZTJjNTFmNGQ3ZTY5
NWNkNTljYTFkM2U0ZDM1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiSEFMRl9GTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fY2FudmFzL3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmNGY0YmYxN2YwZmYwZWFhZGUyNzZmNGE2Y2Y2NDM0OWFlY2M2NGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2Jh
MTZmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZf
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJn
YmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE2ZGY5NzZkZTA5MGMyYjNk
ZTM5ZWI3ZjcwYzFiNWE2ZDVlMzUyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkhB
TEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kOWVlMjQzNTAyODYzMDVhMzNjNTM2Y2ExNzJkYjJkNTFlMTZkY2YxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJp
dG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCQTMyRiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmE0LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90
ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI1Y2U2NzZm
NjFkNTY5MzM5MWRlMDAxMmIyYjZhYmVkNDAyYjgzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJH
QkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3No
b3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZh
ZGFmODU3MDhkZWRjMGI4MjFjODZmOWQ1NjE0ZDMyMjM0MmVlNDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0yZC1yZ2JhNC1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fY2FudmFzL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYmM3ZDkyNGFjMDE1ZTUwYzdlZmFmYzE4Nzg2NDgwZTY5Zjc2MDlkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtcmdiYTgt
cmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXJnYmE4dWkt
cmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9jYW52YXMvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YTNjNGRhOTQwZGM3N2U3ODIwOGVlMmQ4YTkwOTY3ZWJlMmY4NzkwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgt
MmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0
bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVE
X0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2NhbnZhcy90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5YzFiMzE1ZjFlMTMwYjNkN2ZhYzNiNmMwNGE4ODY5Yjcx
NTY1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52
YXMvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90
ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNjhjZjkzZDRiNzI5NjU3MDVhNmMxMjZiZDU4MjM1OTUx
OWU1M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2Fu
dmFzL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJHQkEiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJn
Yi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZDJlYTYxMzA5MGI0YTFmNzEwYWFjZjJhMmQ1MGQ0
M2M5MzE2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
Y2FudmFzL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Nh
bnZhcy90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxm
X2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVhZDgwZWVmNWM0Y2EzZWUwOGRiNzdmNDQ1MTkyMjBj
NWYyYWIzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9j
YW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkhBTEZf
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2NhbnZhcy90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZf
MTFmXzExZl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTBlMmQwMmM4NDI4NDU5NzkzNGQ4MmQxN2ZhMTU3MDU1YmYzY2QzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNk
LXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwg
IlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcjE2Zi1yZWQtZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXIxNmYt
cmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk2MTZhOTE5MzE0ODM2N2Q0NmZmZDMzZmI4YzMz
NmJkNGM0NGU0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9jYW52YXMvdGV4LTNkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcjE2Zi1y
ZWQtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90
ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3YTFiODY0NzY3MTM5
MDJmMjA4YjRhOTMzNzNkYjM4MWRlZjM1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiSEFMRl9G
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fY2FudmFzL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MjAxNmQzYjc4YjRjZWM4ZjhiMmY5NzMzMjdjMmE4MDYyOThmMDYxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcjMyZi1yZWQt
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMzJGIiwgIlJF
RCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZmRlNjQ5NTdmMTM3Mjc2NzAwOTE3YTUzZWU3MzRjYzdlYmE4
ZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZh
cy90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1y
OHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNlZWM5YmFmZGZjMTE3N2ZhZDFiOTk0YjgzY2RmNjZjYzA5ZThlNzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0z
ZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSOFVJIiwgIlJFRF9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2Nh
bnZhcy90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9jYW52YXMvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0MWY4
NjZmYjEyZGE0NzEzNTQwZjA2NjI1N2U1NjhmMGQyZmZjNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2MWQyM2JiZDFjOWY4NjA4ZmQwYzAzOGZkZTM3OWU5MDA4ZTlmMDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1y
ZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkcxNkYiLCAiUkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZzMyZi1yZy1mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmczMmYt
cmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzM5ZDRlMWE2YWNlODliOTEzZDUyYjE0NzQ0N2U2
NWViZGMyMmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2NhbnZhcy90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSRzMyRiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZzgtcmct
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90
ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDJmZmEyNDQ0ZjQ0
MmI5OWJmNmQ3YmU0NjU4MzkwNDZhOTJkMzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAiUkciLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnOHVpLXJnX2lu
dGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMGVmYmZkZTI4MGFjZWI4YTg5
ZmZiNGJkZmE3MGIzMDZlN2UzN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiMTBfYTItcmdiYS11bnNpZ25l
ZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9j
YW52YXMvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTAwZDRlZDMzZmIxY2UzOTlhZmUxYjYyYjAyZGEzOGEzYzM4ODJiNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4
LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTBfQTIiLCAiUkdCQSIsICJVTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJnYi1m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNjUwZWMyODFmMjgzOGM4NWE5MWU3OTczYzVjOWMzMDgz
NmMwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2Fu
dmFzL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1j
YW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2IxNmYt
cmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxODRkNzllMWFi
OGRmMTFlMDEwZDY4ZDU0OTJmYjgyYzk4OTM0MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjYWQ1ZTRmMGNlYWI2NTJjNDRmYmYyMDVhZGQwOWQxNGEyMTdjNjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0z
ZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCMzJGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNk
LXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YmJkYjM0NzdlNjVk
OTFiMTRmNmYxNzkzNDZiOGJkNTIyNzNlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81
XzZfNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2Qtcmdi
NTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YzhkYzllOGQ5
ZDk5MmNiYmMyMTgyYWZmNmQzYTIzM2I4ZjQ4YjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3No
b3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1
IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I1X2ExLXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZh
cy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjI4
ZTcxZTU3YjhmZmUyZjM2MDY1MjY5MDczNWJmODZiMTBjYjE5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1
X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I1X2ExLXJnYmEt
dW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2NhbnZhcy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NGI3NzZjOTMyZGM4MTI5NTg0NDQxYWVjMDFkMmMyODIwNmU5MTBmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2Qt
cmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNV81
XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fY2FudmFzL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGJhNTNiNGQ1ZGY1YzUyYjI0OTQ0ZDExMDQ5MTg4Y2JlOGI0MzI0
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNk
LXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzZTdiMDRkOWNlZGYzYmQ5NDQ0MDM5MWRkYTQwMzFjMmU5Mjdi
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFz
L3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhVSSIsICJSR0JfSU5URUdFUiIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZiMmRmMDIwZDBmYjNmZWI0OWJjMGIxMWRkMTc0NmJiYTM3YTU3N2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1y
Z2I5X2U1LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZf
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJn
YjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTg1ZGNhMzg5YmE4MzUzZGJi
ODU3Mjk3MDdmOTQ4ZjYxYTMwNzMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZf
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDk5NDdkYTRiOTZmOTdlMmJlMDQ0OWNmOThjNWRjNWQyYzcxNzMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2Qt
cmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCQTE2RiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1o
YWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0z
ZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMTg3YWQzYmIzOGM5
ZGZkYWUxM2Y3ZDE4ZGZhODU5YjgzNDVlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5o
dG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIs
ICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDIyY2U1ZDgzZDc2YjE4Y2RiNGQwZmY0MjVmMGJhNjhjNGY5MjI5
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2JhNC1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52
YXMvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNTU3
ZDVlNTA5ZDFiYzQ3YjlhZjcxZDhmZGQ0ZjdlNTdmYmYyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIs
ICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25l
ZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFz
L3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43M2IxYjRmMTFkYzBiODdjNTQwZjlmMGM4OGFhOWE5MjUyNjBkZjg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiYTQtcmdi
YS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52
YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2NhbnZhcy90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDg3MTMxMjlmMDFlZjg0NTQzZDdhNDZkNTI2ZmZkNzBmZGI1MTJmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXJn
YmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2Jh
OHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fY2FudmFzL3RleC0zZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDIwN2NiMWJjZDdjODc4NzgyZmZhODI4NjBiMmRlNGM1Y2NmMzg2
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMv
dGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fY2FudmFzL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OGU4N2IyOWZjY2E0NTcxYzIyYjkzYjRkMWY3OTE1
MmEzZmYxMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
Y2FudmFzL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0
bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52
YXMvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9jYW52YXMvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmRkZjUwYmUzM2M4OTQ4NzZiMzAxNjNiNTU4MGFj
ODBkMzViNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2NhbnZhcy90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYt
cmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThjOTM2MjQyNjI0NTlmZjliNzMzMTZhYTJkNmM0
MmZhMmViODJjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NzNkZTgyNTg0NjVlNzk2ZDA3YmRkNjBkMDQwYzAxMWU5
ODc4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2UvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2UvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8x
MWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXIx
MWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTQ1MzdmYjI3ODMzZDcxNmQzYjNjNGZhZDM4OGE4MmUxMmE1MjM1ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcjExZl9n
MTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05F
RF9JTlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcjE2Zi1yZWQtZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZGIxYWViZjEwYzEwOWRjZmJlYjAwN2NjZmYyNDU2OGExZDcxZTg3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3Rl
eC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXIxNmYtcmVk
LWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzA0ZmQxNmYwZjRhYzZkYTYwYjE3NDMwMjFk
MDVmZmUxNzEzZDJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgt
MmQtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZS90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGU5NDcwYzZiZTY0NTli
Y2Q1MDU3Njg5YWU0OWUyNDEyNzQ4NDMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3Rl
eC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUx
MjBhMjg3MjRkNGZlYjY5ODU0OGI4ZmFmMWRmYzJhZmE5ZTgxMzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXI4LXJlZC11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJSRUQi
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yOHVp
LXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTIyODQ3NTQyZTY4
OWZhN2U0MGMwODM5NjlhMTYzMTNmYmFiOWEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVE
X0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnMTZmLXJnLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg4YTBkMzY0NmMyNDI2NjA2MTdmOTYxNjFkM2Q5NTNkNGUy
ZGFhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZS90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmcxNmYtcmctaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZzE2
Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY2ZTE5ZTY2ZjQzZDBmNTNmYTQ4NzYw
MGExNDFjNWQyMGMxNDI4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZS90ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Uv
dGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2UvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZiY2YxYzZhYmVi
MjUxMzFmMTY5ZjY3YzJjNTc1ODk4OWU4YzQzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmczMmYtcmctZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTI2YzEyYTVlOTcxNWQ2NDk4YzI4N2FjMWM0Y2ViMTAyYWYxZDhiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZzgtcmctdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4Iiwg
IlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQt
cmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA4NDYwNDg5
MzYxZGFkZTZhNjA0ODViMjU0OThiYmFjMzUyMDM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNp
Z25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIs
ICJSR19JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2IxMF9hMi1yZ2Jh
LXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEw
X3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OWQzNzEyOGVjNjg4OGYwZmJmOWU5ZjJhOTBjMjlkNGEy
YmYyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2UvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiMTZmLXJn
Yi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYjU1MjZjMjljMGFkNTM4YWNmNmZmNTFkYzZmZDQz
MjllNmVkMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2IxNmYt
cmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90
ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I5NDhhNTRkZDMy
NzM1OWM3ODAyMTJkYzY2YzE5MThkYzM2ZTM5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkhB
TEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NGJkMTk3Yzg3MTMzZTFiNGFjODE3YTk3ZjQ3YzgzMmZhYzgzOGRkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2Iz
MmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0Iz
MkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4M2FiYzZlZTRmYjlkMTdjNGQ4NGYy
M2FhZDc2MmQyNmIzNjVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2ln
bmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZlNzI2N2QxMmFhOGI0YWJiMmQyZWI5
NDRmODg2NWE2YTM0ZWU2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJ
R05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjVfYTEt
cmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3OGZlMmM3NjlkZDg4ZjcxNWFm
M2NmN2NmMzdjYzVkYzZlMDkzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81
XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiNV9h
MS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU3MDZhZmM1
OWY0N2NiNjZmNTEzM2NlN2JlNTZjZGFjM2UyNGM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRf
c2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
NV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2UvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzVkZWU0
ZjY2ODZlNWY5NjZhYWM5ZWFlOTlhZTVkZTU1NzIwYzZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdi
OHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0NjMwNDQy
Y2EzOGFhMmE3NTZmYzNkMjVkYzcyMTkzNjQ3MjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I4dWktcmdiX2ludGVnZXItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJ
IiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2I5X2U1LXJn
Yi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1y
Z2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNDUxODU0OTcxMWVhZjlmZWE0ZGU2
ZDY1ZmY1MzA2NTRmZDk3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZS90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ0MWZkM2E1NDg3OGUxYTRkOTI1NTQ5MjA4MjM0ZmUzYTcyOGZmZmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYjlfZTUtcmdi
LWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlf
RTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtMmQtcmdiYTE2Zi1y
Z2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4MDc4NTRhMjUxNWZmNjRjM2E5NWE0NmJmNWQy
ZTk5NzU3N2NiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1y
Z2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5
NGM3Njk1ZDdiNGQyOGI5NzhmMjIyNGQyMjkyMjI5NDc3NGYwMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmExNmYtcmdiYS1o
YWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZG
IiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhMzJmLXJn
YmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTg5ZGExNGMwNTc5NTM4ODY5ZWY3NjI1MjBhYzdi
OWI5YTkyOGUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJn
YmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZDA2ODlhNTI5ZTdjMGVlMGRmYzIyYjBmYWJlOTMwZDdmYWJlMTE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhNC1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0
IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
L3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NTg5ZmI3YjRmOWM1NDQ2NzIyNWZhNWM4NzY5MGZkODY5ZjY5OTljCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNWNhM2Y5MDM4MWU3MzczNzFhZmJmNTM2NDkyMGFmNzhhMGQ5NDM3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1yZ2JhOC1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFw
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJnYmE4dWktcmdi
YV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1ZjI0ZmFhZTAxOWI0MTU2Zjk4OWJmMjliODJmMjgyY2RlNzFkY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXJn
YmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlNjMyZjNkMzFiYWQyY2JkNmY5ZDY2MDU4ODAxMDA1YzdhNTNlOWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJk
LXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXNyZ2I4
X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZS90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwZjdhNzc4ZGE0ZDJhMDVhNTExMWU1NjcwYWNkYzQ2OTQwN2IzYzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTJkLXNy
Z2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
L3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTViZDExMzk3MmZjMzEyNDljNjNiNjA5ODE0MmYyZmZiM2M3NzAzOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjEx
Zl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJp
dG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yMTFmX2cx
MWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5ZDFiNTFjZGQwODNmODRiNzJlMDA5NmZhNDZlYWUxZmI0MmVkOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXIxMWZfZzEx
Zl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJp
dG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXIx
MWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11
bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkwMzVjYTYwZGZj
OGZjYTkyZDA5NjAzMjBiZGFiMDVhOWNlYjA2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2ln
bmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZf
UkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDE4MDEyYmEzYTQ3NTM5OTE0MzBlNWE2MjY1YmE3YjIxYzljNTY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yMTZmLXJlZC1mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAi
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOGM4YjNjZjE1Yzc2Zjg4ZTUzODFmYTE0OWNmMGQ2NTUwZDU0MzYxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1y
MTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjMyZi1yZWQtZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcjMyZi1yZWQt
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODg3NjNhY2YyZTRkM2EyOWIxOTNiOWVmNmRkYzQyNDcx
ZDNiZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yOC1yZWQtdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1y
OC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NGIzYzgxNTIyMzJjOGNmMjFi
NDU3MjAzYjQ1NjAyZjhhNmQxODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2UvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Zjk1ZTk1ZjMwMDQzOGUzYzA3Yzg1NGNiZjQ5NGZj
NDM1NGU2NDI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjgxZWMyMDQ0MTgyYWJhZjJiNWQ0YmZlNmE3YmU1NmU3YjFlNmEwNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmcxNmYtcmct
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJH
IiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDViZjg2MGIzZmM3Yjc5Y2M3NzBhNjg0YzI0NDk5ODdmODU2Yzc4OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgt
M2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkcxNkYiLCAiUkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnMzJmLXJnLWZs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnMzJm
LXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk0MzRiYmUwMzYxZGMxNDEwZTg4MzE3ZTQxMmEy
OWE3YmIxZThmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qtcmc4LXJnLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgt
M2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTc5ZDA3MDIyMGEwODI2
ZmRiNjNmODY2YTkzOGZjZWE4ZDI0NmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkMDJkZmM3OWI0MzZlYzYzNTFjZTY2YWYy
MzhmYzE4Mzc0YzExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZS90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEw
XzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0z
ZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxZTc5OTgwZjMyYTM4OTA3Y2QyNDI3M2I1YTFjZTJmNjk0NTZjNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjEwX2Ey
LXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEw
XzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1YjZlMWRjYjdlMzg4MTU5ZTk2ZjFjNWM0NDhmOTUzY2FkZjViMGEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjE2
Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2
RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1o
YWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAzNWNhM2FlYzA3ODY2NWJhMThhYTk1NDJhYzQ5
MjZkNDcxYWY5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3Rl
eC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2UvdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGYyOTZkNWNh
N2RlZDEzZWI0ZTQzYzkzMTQxNzMwZDFkNmI3MTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwZDUxYmU1MWZjOWJiZjA4ZmFkNmNiODYzYzA3MTIyYTBhNzk1OWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
aW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qt
cmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY4YzlkNzVlNzFkN2IxMzBhNDJjMjIwOWY1NDI3ZGY5MWQ2MjM4NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgt
M2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2RiMGUxZTZkN2VhOWU1OWE5YTA2OTMxNzUzOGEyZjBhYzdlZjU4
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90
ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90
ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3No
b3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2NjNDI0MjcxMjUyZWFkYzQxMDFjNTc4NTQ2
NzVlYTM0NDA0ZWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVO
U0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzczYTZlMDBmZTYxNDE5MGIwOGUzNzE1
MTkyN2Y5YjYzNjBmNGE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZS90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODZkYjhiNzVkODNkMjdkODlmNGNlNWM3NzY4
OTMwNzE1ZGMzMTk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2I5X2U1LXJnYi1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM5NjM5NjM2YmJiMGIwYmMxOGMwNjI0YjllYWJkMDNiYWFkZTcwNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4
LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJp
dG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjlfZTUtcmdiLWhh
bGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qt
cmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YWU5NDk4OGIzNTgxNjhj
N2ZiMzA3YzcyMjNiNmViNGFmMWNkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZf
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTE4ODc0Njg5Y2JlZWNhYzIxMjk2N2FhOTk3ZjEyNWJkMzkyMjdiOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qtcmdi
YTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2Jh
MTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzZjQwMWViMGViNTBiODU3NjI1
ZmIzYTM1NjE4NzYxNWNjNGIyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9G
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2UvdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zY2FkZWYyNjc0Y2UzYTJmMGZjMTU0N2FhZDQxNjRlMmM4OTMwY2VmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2Jh
MzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2Jh
NC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjE5ZDM5MTA1ZGNhOTliZTE4
NjBkYTg4YjQ3YmFjYTc1NWNhMjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTBmNTE2ZDA2OWNlNzA4
ZmVmODE1NDdhZmZiYWE0OGMxYjY1OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRf
NF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJH
QkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmE4LXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0z
ZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTA3NWVkODc5MzI5
Y2RiZmJhY2YwYmY3MTY0MzljY2M2ZDExNDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qtcmdi
YTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2YTU1NDY0
NTk3YjgyMTU1MmJhMmVlYzliNGJhY2E5YjIyMTczMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2Vy
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlL3RleC0zZC1zcmdi
OC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMjQ2
NzAwYjU2NDMzOTI4YjhmODIxZGQxNWQ2ODM3MjM2ZTY2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOCIsICJS
R0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZS90ZXgtM2Qt
c3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMWJiYWJi
YmMzMmVlZTcwY2ZmNTQxZmM5YmMzMzBiZDhkMjVmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2UvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4
X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcjEx
Zl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOWE5MWQzOWE2NGJhNzBlZjRkODFmM2RkZTI1ZmI4MjM0OGRkY2Y3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQt
cjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRt
YXAvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2It
aGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZTk1NjNhNzZmYTNhZTZmMTQyNWZkZTIwMDhi
Njc4ZTM1MzIxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfYml0bWFwL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBG
IiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXIxMWZfZzExZl9iMTBm
LXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWdu
ZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxY2M4NTNiMGUxYzc0ZGE1
NjkyNjRjYzY2ZjIwNjI5Mjk5NWFmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5z
aWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05FRF9JTlRfMTBG
XzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yMTZmLXJlZC1m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMzBhOTE0MDRhYzNmOTUxYjA5NmU2YjE5ZGQ3MDg4YTlj
MWFiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfYml0bWFwL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0
aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZy
b20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzZiMjlkZGFkM2E4MTBhOGYwYjNiZWFhMGY2ODc2ODNmMjI5MWJjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQt
cjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0
bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQt
cjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9i
aXRtYXAvdGV4LTJkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3YTFlNGM4OTRi
MTczMjQzODA5YmY3YTk0NjMxNmUwMDliNGE1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXIzMmYtcmVkLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQi
LCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXI4LXJlZC11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk4YjQwYzYyYTg3MjVjOGViOTljZWUxMTli
NWY2YzE0MmYzMzZmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAiUkVEIiwgIlVOU0lHTkVE
X0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1y
OHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTM5MDcyOWU3
ODg2NDQzMzk2OWI3Yzc1YWZlMDk2OTMzOGRkZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcjh1aS1yZWRfaW50ZWdl
ci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjhVSSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYmY0
NjEzNGJlMjM0ZDkxZWM2ZTc5MDA0MjdjOGJkMmViOGZmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZzE2Zi1yZy1m
bG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZG
IiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnMTZmLXJnLWhhbGZfZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJn
MTZmLXJnLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM4N2QwOGNlMDE5YTQwMzBhNzVh
OWVmYzYzNjc3OTBlMTYyYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkhB
TEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmczMmYtcmctZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnMzJmLXJnLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTExM2QxNmM3NzhhNDE5ZTZmNTQwN2EwYTk0MWNkNTc0NDU3Mjk5
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9i
aXRtYXAvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1p
bWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkczMkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgt
MmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTdhZjY0ODIyNGIyM2M0ODkyNDE4NDBiYTk5MDY1NjA2ZGNlMzM2YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJn
OC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRt
YXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQt
cmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOWYwZmE1YmYzY2MwN2I1MjdmY2MxYjM0NTAzZjY0N2U5NTc4
NDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2JpdG1hcC90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAiUkdfSU5URUdFUiIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWdu
ZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEw
X3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YjkxMDg3MGIwZjVhNWZiOTZmOGIyOWE1YzIzMWI2OWVj
MjM2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfYml0bWFwL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jl
di5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjEwX0Ey
IiwgIlJHQkEiLCAiVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4
LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9iaXRtYXAvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODVh
ZWQ4ZTFlNWZkMWQ0NGI5YjVlNjY3ZjRjMTVlMWU5YmUzMmRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiMTZmLXJn
Yi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiMTZmLXJnYi1oYWxm
X2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3Rl
eC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2Y1NzI3ZTZkZWYw
MjU1Y2QwZmFlMTJhYWRjZTliMTQyNmM1NGExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZG
IiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYjMyZi1yZ2ItZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJk
LXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTE4NTY0N2EyYTFiOWVhZTc0N2U0
ODhmN2Q4YmViNDhlZDYzMWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIsICJSR0IiLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I1NjUtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDMzODc3MzIxN2NjM2YxYWEwNDk4ZDQz
YTE3NTE3ODlhNGFjYTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIs
ICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRf
c2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRt
YXAvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNzRmYTAxZmM0ZDM2YjU0YTZkOTljYzM0OWJkNzNkNTZmMjM5Zjk0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdi
NTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
aW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfU0hPUlRfNV82XzUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYjVfYTEtcmdi
YS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg4ODBhNGM4NjIzZTRkYjRhYjBlNmZj
OTNjMGYzYThjNDJjYTE1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJS
R0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9iaXRtYXAvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDlhZjJiOGEwN2ZlNWNmYjcxZTA5MmM4MTZkNTNiNTQyNzQwYzJlOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRt
YXAvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVO
U0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiOC1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90
ZXgtMmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3OTU4NmY2MjYz
YjYyODMwZGZhZjI5NzlhN2E0YmMzZjJiZmJjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I4dWktcmdi
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMWI4ZmU1ZDM0OTU3OTFkYWM2NWU0NmEzMzgyMWI4NjA4YmFiMDYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1h
cC90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lOVEVHRVIiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiOV9l
NS1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWU5MjJjOTBkNTUxMWU4N2MyZTMwMzRhOTVi
ZDFjNTBmMmIxYzAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxm
X2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZmMDAwY2I2MzcwODY2MmIzYTJjMDI0NGNmYjJjOGJj
YWJhOGNkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9iaXRtYXAvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJIQUxGX0ZM
T0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5ZTEzOTZlNGEwNjcwYjU1MzI5NzRkNTRhMzEwYzgzNDI0
NTgyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9iaXRtYXAvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
Yml0bWFwL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxv
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYWIzNzk2ZTNiNGEwMGIyNzVhYzc1MmZlYzVkMWMxMGJhZjc4
ZmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2JpdG1hcC90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRlOTA4Y2U4YjRjOTg3NjVjNWJjMTRiZGIzZGYwZTg4MjAwNTMy
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
Yml0bWFwL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Jp
dG1hcC90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZWQ3OWFlNTQyMWRkMmQzNDk0NzkyYTA1YTRkMDQ1NzM4NzYz
ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2JpdG1hcC90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRf
NC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQt
cmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY1ZWYx
MzU4ZDk2NmE3NDAxNjcwOTNhOTcwZDA3N2U1YjM5NDU2MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmE0LXJnYmEt
dW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2Ut
Yml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfYml0bWFwL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMWVlYmQ1MzlmMWYwZTc0MGQzZTgxY2YxYzIzNzM2
NzFlNDQ5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJSR0JBIiwgIlVOU0lH
TkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90
ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRmODI5MjNkYjNmYTk4MWNlMzAxOTg2YTI5ZWRkNzhlOTliNTlmNzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1yZ2Jh
OHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lOVEVHRVIiLCAiVU5TSUdORURf
QllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtc3JnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDg3NGFlNTZiZWY5ZDJlYTEwYWRmMGMw
Y2UwZTkwMzI3MTYxODc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNp
Z25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFw
L3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDMxODMxMmIxY2VlM2M0ZjAyODRhMTgxOWYyNDNjYTZiOTI1NzBkNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTJkLXNyZ2I4
X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWlt
YWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9iaXRtYXAvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcjExZl9nMTFmX2IxMGYt
cmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QzMWU5N2JhMjA4NDg2ZjNlMmQzYjVmNjMwYzU1
YTNlNGI1NmZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJH
QiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgt
M2QtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjQzN2Nl
ODM5MzMyMGViMDVkMmU3ZDVlYzM3NDRmNzA5YzVlZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcjExZl9nMTFmX2Ix
MGYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFw
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1h
cC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFw
L3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcjEx
Zl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZGE0ZGU2NThkMDIxMWYwODdmM2M3ZmUwNDQ0NWMxNDM1YjM4ZGI2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qt
cjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJS
R0IiLCAiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1y
MTZmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Jp
dG1hcC90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2I2YWM1ZTQ5M2M4
MTI1N2ViYTE4MzFjZTdkMTBmNTMzN2ZhYjU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIs
ICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yMTZmLXJlZC1o
YWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3NDVmYTlmZmE0OWZmOWI5ZTQzYmFkNDM2Yjk5
ZTA3N2QwOTRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRmOGU0NzJiMWRkYWMxNWJkZThmZGE2ODJkY2Q5Nzg3MzFkNzZjNDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3Rl
eC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0
bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXI4LXJl
ZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
Yml0bWFwL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNjAx
NGU2N2RmNzY2N2M0OTk1ZjU2MTMxZmQwYTQ0NmI2MTY5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yOC1yZWQtdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlI4IiwgIlJFRCIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXI4dWktcmVk
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2JpdG1hcC90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmFiMGQ4NTc0OTgzMmU3NTljMjRmNjU5YzUzNGIyYzUzZjZhMzU3MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0
bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmcxNmYtcmctZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZmYwNzQ3MWY2ZDg1YTJjYWU0MmE2MzNjZTNmYjI2N2RjZWNkNGFh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Jp
dG1hcC90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWlt
YWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0z
ZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzVmZTM2MTZmM2E1ZTgyYTkxNDcxMzQ3MDNiMjQ0OTMyOGUyYjg1OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnMTZm
LXJnLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSRzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnMzJm
LXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFw
L3RleC0zZC1yZzMyZi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMDZlZTc5ZDhhYmQzMTY5
Y2I5MmJiZTVjZTk0YmY2ODM3ZDEwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZzMyZi1yZy1mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZM
T0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZzgtcmctdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjhiZDcwYTAyMTEyZjczM2M1YmY5N2E3MWIyZWUw
NDNmYjU4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfYml0bWFwL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qtcmc4dWkt
cmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBhZTcyYTMzYjI4N2Rl
NzljMDAzNjEzZWI1MzkzOWRlNWYwOGE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHOFVJIiwgIlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0z
ZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiMTBfYTItcmdiYS11
bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2RiNTdjYmVhNWE1
ZWVjYzNmZWNiOTkxMmYxNGQ4NjMwOGNiODQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiMTBfYTItcmdiYS11bnNp
Z25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEw
X1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTkzM2YzYmJiNzFmZjdiODZlM2ZlNTA4ZDU4MDg3MDBlMTczOTA3
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9i
aXRtYXAvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgt
aW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9t
LWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDQyMGVlMGEwMDU0YmM1YmIyNDlhYmE0N2E4ZjEzMWFmMTQ1NmU5OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4
LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFw
L3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2Y1ZjQ0MDhmZDQwNmFjOTAxOWY3MWFlNThkYTQ4YmY1MTkxYjY5YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjMy
Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjU2NS1yZ2It
dW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Jp
dG1hcC90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzll
MTZlM2NiYTNlMzRkNjY1ZmQzMzgzZmU4ZjEyZTM2NDU0YTc4ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFw
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0z
ZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0
XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM5YTM2NDhlMjUxYTFkNDc5OGI0YWQ2NjQzNjBmNzkz
N2UzYzE5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9iaXRtYXAvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwg
IlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjVfYTEtcmdiYS11
bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0
bWFwL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1
NGU2OGMxOWU5ZTBkODcxYmE0MTVjNGJlODc0NDU5MGZjNjNjZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2I1X2Ex
LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRt
YXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0
bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNWQwNGRkYmZiZDU2NzRkMGQz
YjE3NGUyM2U4NjAwOTc0NTYzMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hv
cnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kM2RlMjI1Zjg2ZjU3NDhjMzU2Y2FhMTFmYTFkNTMwYmQwZmI5NGZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90
ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
aW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Jp
dG1hcC90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjh1aS1yZ2JfaW50
ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkxNjA0NGNkMDY5OWRjZWM1N2Ex
OGJkOTg5MTNkZTJmOGM4NTNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qt
cmdiOV9lNS1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9iaXRtYXAvdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU2MDNh
ZjlkYzE0ZDU5M2I3MzI3MWVjYjY3M2M1NzE0OTQ4ODUyZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYjlfZTUtcmdi
LWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFs
Zl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90
ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NTNhZjU3Y2Rm
OThiZTY4NjY3ZTVlZDQ2NjU5N2ZkZTE4NGNiOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxm
X2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OV9FNSIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2JhMTZmLXJn
YmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAv
dGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YjJlYTQzMDM3NzU0
ZjRhZmJmOTQyZTUyMWRlNTM4NTBjOGVmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwg
IlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNk
LXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllMDdlYTJlY2JmNGM5
NTkzNGIyMDU4NjczMDY4ODAwYjU4ZDBmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2
RiIsICJSR0JBIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiYTMyZi1yZ2Jh
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3Rl
eC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWYyNmExYzg2YmViNzIw
NjQ5YjVmOTI0NjYzNGNhMTdhZDhlZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTMyRiIsICJS
R0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qt
cmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY3NDQ2ODQxZTZkZTc3
YjY0YmU2MjRiYzNkYzc0MGFkZGFkNTU4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0
IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3RleC0zZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MWJlOTJkNWJjYTNlNGU0ZGZkNmM3MDY4MTE0Y2Q3NmY0OTg0ZDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0
bWFwL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lH
TkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfYml0bWFwL3Rl
eC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMzNGE5Mzk4
MDcxYzBkYTk4OTZjZTg2ZjAxMTNiMjExMDlkZjUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2QtcmdiYTgtcmdiYS11bnNp
Z25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmE4
dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzcwZGE4YWQxYWUxZDY5NWQyNDJiMjA2ZDdlMzczYTYw
NTY4ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2JpdG1hcC90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0bWFwLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdC
QV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qtc3JnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9i
aXRtYXAvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2
ODViMjQ3MTg2ZDdjYzBlOTkxNjNmNzAxZTM2Njk4MWM1NDQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9iaXRtYXAvdGV4LTNkLXNyZ2I4LXJn
Yi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qt
c3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2JpdG1hcC90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NTg2ODQ5MGRhOGFmNGY1MWM2ZmZiMjgxNTIwODQzMWU0
ODRlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfYml0bWFwL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJH
QkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdi
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzMDgwODVjODll
Y2VhMjk2YmQyMWUxNzA5NTZiMzMwMGI3MDg3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2It
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9H
MTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yMTFmX2cxMWZfYjEw
Zi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzQ2ZjRiOGU2Mjc4MTJhMjFlOTZkMGNmNjMxNTk5NWRjODhhMzAxNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yMTFm
X2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
ZGF0YS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9y
ZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1y
MTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU5ZDg5N2E4OGM1ZWI1ZDJlY2YxNDRkZGM5NTI4MzJiOTUyOTY1ZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQt
cjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdC
IiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXIxNmYt
cmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90
ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjU0YjQ3M2UxN2RmOGMwODA1
ZjA1N2JmNzhhYjIyN2ZhNjVhZmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJhNmU4M2Q0NDkyMzNlMDU3YjE3YTA2NDdjNGY3NzdhZTg5MWU0OTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90
ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0y
ZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTJkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY4OTY3NjQyNjRm
ZTk2ZDMwMDQwZjBkMTQ3NjNmNmJiYjBiZGI1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMzJGIiwgIlJFRCIsICJG
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yOC1yZWQtdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhY2IzNGQxMjJkMjE2Nzk3YWRhZGM0NTc0ZmNiYzNiYzI5
ZWRhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfZGF0YS90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAiUkVEIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXI4dWktcmVkX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MTQyMGYwNTEyYTY1NGRhYjc5YTZmMWVi
YjU2ZmJjNWQ2NjU0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lO
VEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmcxNmYtcmctZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZzE2
Zi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYzA4ZDg3ZTdhZjg2MmM0MzdiZDYyZDVmMmEx
NTkxNDM0ODAwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfZGF0YS90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEv
dGV4LTJkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWFlMzZmODk4YTg3MWRiNzQwNjM0N2M5ZDg4NDhmNWE4ZTAxNDI1ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZzE2
Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHMTZGIiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnMzJmLXJn
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtcmczMmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzhlNDkwM2Y2MGRlZmQwZjZjNjUz
ZDVmYWIxYjE0N2U0YmRkYzEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmNiMTUwZWExYjdhNGZmZGI3YWZlNGRlMzY2MzM1MDZjZGRjODZlNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3Rl
eC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSRzgiLCAiUkciLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5MWFmNWQ2MWVkYmU2NTYyNGViNzIwM2MzODJkMjE0YTk1
NmUwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAiUkdfSU5URUdFUiIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2lu
dF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQ1ODhkN2M2OGFjODFhMGRhNGViNmNiYmNjZjMzZGQ1ZjZkYTIzMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRh
L3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwg
IlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTZmLXJn
Yi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4
LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjM1ZjAwNmM3ZGQ4YmNmMzQx
ZGE4YjAyY2VhZGNiNzUwZTU4NTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZlMWI0YWQwMGJjMDY3Nzc0MzAzOGY0ZDdkNWYxMzkyNjcx
MmJhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdhODhkNmI4N2I0NWM0YjQ5MzQyZDI0MmFiNTRiMjEwNzdjMjE4ZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdi
MzJmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2I1NjUtcmdiLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRh
L3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzIxMWFj
ZDNmYWMxNDBlODQ1YTI2MjY3YzU3MDMxMTdmYmFkNDc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjU2NS1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9kYXRhL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmM4ZGU1ZWYyMzljNTkyYmJjYzIwNTAwN2ZlODhkNTNkMzhjZGJmYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3Rl
eC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfU0hPUlRf
NV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiNV9hMS1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWM1Y2M2OTlkNWNkYjQ4YzhjZTYz
Mjc3Y2U2MjU4ZTFkN2FjNTViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdC
QSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNV81XzVfMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTQwNGViNTM0ZmQxODQwZjYyZDdiNjNmMDhlZmNkODg4NTAyODAzNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0y
ZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0
bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfU0hP
UlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjgtcmdi
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzRiN2VhZWRiZDBjMzc4MzM0ZGUwOWVh
ZDIwZDY5MDMyNjU4ODhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOCIsICJSR0IiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1y
Z2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ZGQ5YTkx
YmZlODNlY2FiZmJkOTRlZWQ4YzI1ZTdjMTlkMGE5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRl
Z2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFw
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEv
dGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NDc2Mjk0ODA2NmNlYTdhZGQxOTQzZTczM2JjZjRmZGQxYmFlNWVjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYjlfZTUt
cmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxm
X2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMDE3NTU3NjAxZmU5
MmE5OTFmYzZkOGJlMWU1NGYzOWFhMzI5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1Iiwg
IlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2Jh
MTZmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2NiOTNkN2Y4MDNhNTQ1YmIzMGJkMWFm
Zjk4ZmY0Y2NlZTI2YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2RhdGEvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZf
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2JkMThmNjU0NWMwZTQ0NjY0NjhkODEyNzY4MWJjMGZl
MGRiOTBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2RhdGEvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MDQ0YjRjM2ZkMjY0YzgwNTM5N2NiYzZjMDBkOTYyOWYzODQxYTQzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEv
dGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJk
LXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk4YThhMGJjNjk5ZWQwMzk4N2YxOTE5YmFhZGViOTcyMWE2MWI5NTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQt
cmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90
ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9z
aG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBhNjhmYmYyOGVlNjk3YzY5YTUxNGQ2MmQz
ZDY1NjQxYjgyMzM2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdC
QSIsICJVTlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhOC1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9k
YXRhL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTU5
YWVlYzQxZjhmMzdkNmVkYmUwNTEzOGI4MzE0Nzk5ODQ5ZDdmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmE4LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0JBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXJnYmE4
dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4ZjM1OTBkNTZiM2ZkMTk1NDU1MzhmMzY2OTIxYTM3MDFk
MGI0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
MmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmM4M2ZjNzJiNTJm
NzQ4Nzc5NzFiMmJjOTdjODc0MjI4N2ZlMzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4Iiwg
IlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdi
YS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2Vf
ZGF0YS90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxYTMyYzgzM2RmMWI1MDhhM2Q1NDEwY2U1YTc2MzZkYTQ5ZGRiYmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtMmQtc3Jn
YjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1p
bWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20t
aW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2It
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDVmMmZhMTU3YWFlMjRiOTY0NWEyODAxY2Y4ODViNTU3
YzBlM2FlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2RhdGEvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2RhdGEvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcjExZl9nMTFm
X2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmU3N2FkMTEwM2Y3M2U1OWQw
ZWZiOTU0MmQ3NmUyYWU2OWY1NWY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzEx
Rl9CMTBGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZf
YjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNp
Z25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE4ZjJmNjA3MmQ4NzA3
MDgyNDJiYzE4NjY0ZGNhOGE1ZDk4ZGMzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5z
aWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEwRl8x
MUZfMTFGX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yMTZmLXJlZC1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlkMTE2N2RkZjNkNjM5MzJhY2Y1MTkzMjZjNGUzNTZjMGE1MDU4ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0
YS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2Ut
Yml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXIxNmYt
cmVkLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9k
YXRhL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThjMGM4ZDBh
MmU3YjE0OTVhMWI1MzE1NTMwNTlkNGFiZmZjM2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAi
UkVEIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcjMyZi1yZWQt
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODQ3NDMwMTU3MmE4N2QzZjllYjRkODc0NzQ5NTUzMmVh
MzdjZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2RhdGEvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0z
ZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2RhdGEvdGV4LTNkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDdjMjJhNTM0MWNhOTNhNDRiNDQ5Y2NhY2M2OTdlOWNiYTRhODViYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yOC1yZWQt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2Qtcjh1aS1yZWRf
aW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfZGF0YS90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDY5OGZjNTAzMWQ4Mjc0Y2Y3N2I3OGQ3Zjc0OGZmOTJlNzczNjQxMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0z
ZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUjhVSSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRF
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9kYXRhL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzk4NTgyODU3N2UxOThlNjZjYTY5NzEwMTY5M2Y4YWM4MGVjNWJlOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1y
ZzE2Zi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmcxNmYtcmctaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNk
LXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTU0ZjZlMWFhNzE4YTY1NDQ1
NWM2YjAwZDY5NjQzOTM3YTNmNDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiSEFM
Rl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZzMyZi1yZy1mbG9hdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEwZDY3NGZiNzNiNWE2OGM5YjhmZDAzMGU4MWZmYjk0ODNhMjBkMmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90
ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRh
dGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkczMkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnOC1yZy11
bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0
YS90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGE2YTVlOGNl
OTFlNTdkN2YxNjViZDczNTUwMzY0MDA1MzJkZGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJS
RyIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRh
L3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YmRkODhiN2E0YTBjMzgzNTU2MDNiNTVkNDhkOGM2YmU4OWQzN2U4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnOHVpLXJn
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2Ut
ZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2Rh
dGEvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiMTBfYTIt
cmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTc2MTM4
YTM0ODBlYjQ2NGJjYjM2ZjQ3ODViZDRiOTlkMjc3MTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjEwX2EyLXJnYmEt
dW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1p
bWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI3MmE4YzZiODI0NGFiNTI1YWE0NmY1ZTJjNjU1YjIxOGFmMWRhNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0
YS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1y
Z2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0zZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZTA0NGFmMGU1MWYwMDE3ZGNjZTllYzVhZmViZTkyYWJjODI3MzFhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjE2Zi1y
Z2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjMyZi1y
Z2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3Rl
eC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZjN2Y3NzY5ZDE2OWI4OGZh
NjNjYWY0ZWIxY2RkNDg4NDY5N2ZiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIsICJSR0IiLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjU2NS1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YmFhNjFlNTg2ZDVjZjc5MDAwODZkNzY4OTZk
NDUzODRmZjI4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZf
NS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJn
YjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzBhZTY0ZjMy
ZTQzZTgwYTYzNDVkN2Q0MGU0NjQxMDA4ZTg1MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWdu
ZWRfc2hvcnRfNV82XzUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
M2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlY2QyNzJiYzYwMDg5NTliNTc3MjVmMjQwZmM1YzI5NGNjMTZlMTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90
ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2RhdGEvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiNV9hMS1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjQ5YTU1YTI1MTIz
NTI3ZmRkZDQ2ZWVmMDIwZTgzNzdjMGE5ZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25l
ZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRh
L3RleC0zZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNlYTE1NWM4NTY0NzE5NDFlNmZjNmFmNDk1NDUyMWM2ODQ4NzllNTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
M2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFn
ZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1h
Z2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3Rl
eC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNp
Z25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlkOTQ5YjVmMWFiMGJiMThlODJlZmVkZWNjYmNk
NjlhM2FhMjk1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV9pbWFnZV9kYXRhL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lO
VEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1y
Z2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkOTRmODllYjNkZjhmYTQ4Y2EwZWZj
MjQxYTIyODgwYjNhNjJjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2RhdGEvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyMjViOGU3ZmUyOWQwYzU3NzE1ZDZhYzUwZGQ0YjUxODI5
ZDhkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2lt
YWdlX2RhdGEvdGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyMzVkMmM2ZGU4ZmNmOGExOTExZmEyOTE2YTg4MTdhNDU5MGI5YTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgt
M2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJp
dG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1k
YXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2Qtcmdi
YTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9p
bWFnZV9kYXRhL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0ZDM4NmZmY2IyNTRhOTZmYmE5NDdhMWQ4Y2ExNjg2ZWU1OGQ1ZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTE2
Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFw
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJn
YmEzMmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdl
X2RhdGEvdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMTZmMGI3
ZDA0NTMzOWMxOTg0NGM2OGIxZDg0MzRjYzM3ZThiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTMyZi1yZ2JhLWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYi
LCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2Qt
cmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJmYzQzYTM5Nzk3ZDA5
YWIwYzY4MTQ5MzUyMDA1NTIxM2UyMTk0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAi
UkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2ln
bmVkX3Nob3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFn
ZV9kYXRhL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZmE4NGZkOWZlNDBjZGY0YzM0M2Y2YzEwODdkNjY3OTA3YzNiYWRjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNk
LXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20taW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRf
NF80XzQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYmE4LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NDI4OGRiZDVjODc5YmVhMjk5MzQyMTAw
MmVjM2YxYmY3OWJkZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5T
SUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21faW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4
LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MTllYWI2NDBiYmU0NjM1MDBkMTJjZDIzZTI2MDAzZjMxNmJlNDVhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX2ltYWdlX2RhdGEvdGV4LTNkLXJnYmE4dWkt
cmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWlt
YWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
aW1hZ2VfZGF0YS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMmIwNmJiMDBiMzYyMTY3NmNlZTkwY2QxODE4MWRiODUw
N2ZhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21faW1h
Z2VfZGF0YS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X2ltYWdlX2RhdGEvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1zcmdiOF9hbHBo
YTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ5ZDhlOTAwNTkzYTMzNzVi
ZGUxOWZiY2JhZTA5Y2U4MGI5ZjIyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV9pbWFnZV9kYXRhL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4
X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMTFmX2cxMWZf
YjEwZi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90
ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0NTZjMjli
NTE5MjNkYTNhZTFjMGMxNzQ3MzU0OGZjNTAwZmE4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEw
RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMTFm
X2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQxZTlhYjk2NDJk
ZTVhNDkxNWVjYTZkZGI4ODFmYWMyZjE3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEw
RiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11
bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzEx
Zl8xMWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRkYTg1ZmQ2NTYzMjUxYzA1ZmQzODk0Y2MwNDFh
ZjBjYjc0NjI2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV92aWRlby90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzEx
Zl9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9C
MTBGIiwgIlJHQiIsICJVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQt
cjE2Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90
ZXgtMmQtcjE2Zi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDdhNzQ2Zjg3M2ZhYTljM2I3
Y2E5OGE5MTU2YjcyNTIwOWFkNmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2Ut
Yml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0y
ZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWFmZDNk
MmFmMmRkYjk3NGE5YjYzNmMyZWQ3YWU4YjcyNGYyMTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJI
QUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYmFhZGQ2ZmJjYTAxZmI0YWI2YTAzZjAxMTI1MmVjOTJmODMzOWE3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yMzJmLXJl
ZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJS
RUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI2ZGIxZWQxOGE5NWM5YzRkZjhlYWFjY2VhZmU2NGYyMzM1OGM3
MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12
aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXI4dWkt
cmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZWE3MTI3NWMzZGY1YzliOTVkNWZkY2YxODc4MjQ2OWJkYWNjYzZiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yOHVp
LXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4
LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlk
ZW8vdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ0MmQwNmE5MGI3NWI2
YmYyNGY4MDZjYWQ5NzRkZjcxZDZkNWIxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90
ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3
MmMwOTRlMmE3NWI0NDUyYWY4Y2JhOWViOGFlZDNlOGQ4MTYxNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmcxNmYtcmctaGFsZl9m
bG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkci
LCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGIyMWIxMzc4ZGFjNzhlNzljMTM4ZjkxZDdhYWNiMGM3NzJjM2YwMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmcz
MmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJG
IiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmc4LXJnLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmRiYzBmOGY5ODgwNzY1NWFhNmQyY2ExNjAwMGI0NDYw
MjQwYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3Zp
ZGVvL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0
aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZy
b20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1y
Zzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV92aWRlby90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTNkNmFiM2Y3NDgxM2Q5YWVlNTI5NTY2MTMzMGVmOGZkZDJlMzk1NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQt
cmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVv
L3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVu
c2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MGUwNmNhMzY2MDQz
NzM0MDU5M2UzNmRkYmE1MDExOTQzMjQyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50
XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4
LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92
aWRlby90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNzNjNTA2NmJj
NDI1Zjk2OTRhMTEwYzg4ZWZjZWNhMzllN2UyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X3ZpZGVvL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTU3NzUxNjU1OTQ5YmNlZjI4NDY4MTcyY2NmM2VlZTJkYzAzOWVkZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdi
MTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1h
cC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2IzMmYtcmdiLWZs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjMy
Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTEzYWQ4OWJjMThiNjhkOTFjYzM3ODQ5Yzdh
N2FiZTY4MGJmY2MxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13
aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAt
ZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZ2VuZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdi
NTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
NGE5MjlmYjRjYmFiYjdkNGUyOGIyY2Y3ZmQwNzk3NjYzZjUwNWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjU2NS1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1
IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3Rl
eC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAw
MzU5YjFjOWMyMzRkOTZkY2ZhZTEyNmEwNGQxOWM2YzkxZTQxZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiNTY1LXJnYi11bnNp
Z25lZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjVf
YTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGY1MDZjMzM4Nzc3ZWQxNWQ1MTkyNmJmZTllNmJlZWIzZGMyNzA4YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiNV9hMS1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiNV9hMS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJv
bV92aWRlby90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MmZiNzhiNTk0NjFmZTAzMTQ5Nzg4YjU4MWMwNWQ4ZjAxOWM2YjIzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1y
Z2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
d2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFw
LWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81
XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NmM0YWJkYjNhYWZiM2UxOTcyYzQwNDg1MjhkZGEyMTI3YzJiNTU3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0y
ZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdl
LWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRl
by5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiOHVp
LXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV92aWRlby90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NmVlOTFmZTgwMmY1YmE0MWQ2NzRhNWU2YTExMDQ0MjM4M2I1MGVmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1y
Z2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0
aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZy
b20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3Zp
ZGVvL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVk
NzNmNDJmNWQyY2QxYmNmNzVkY2M1MDRjMmQ4MzMzY2ZhODVjM2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjlfZTUtcmdiLWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJH
QiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZDM3ZmZjNzEwYTdmMjA3MmI0MDdkMzQzNDllODZkZWVh
MmI3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlk
ZW8vdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0y
ZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92
aWRlby90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA3MjIzMjYw
ZTY1YmUxNjIyOGUyMTUwZTg1Nzg0YjcwOTg4MjM0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAi
RkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRlZDg2OGZiNjQ1NGQwMmYwY2ZjNWVhYjU1NTM2M2E1MjViNTY3
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRo
LWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJv
bS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTJk
LXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3Zp
ZGVvL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGI1ZDJjMDk0
ZDQ2MzM0OTlhZTAxZGM4ZGJiYWFhODYwZDZjZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJG
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNzFhOTI3MWZiMTAzM2Q0YzMxZjRjNjI1MTg0MTFhNjAzYTg1
ZTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVv
L3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4
LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRf
NF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNThjNmIwMmIyNjVhZWFjNzY2MmMzNjU1MTIyYThhOWY5
ZTJiNjkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3Zp
ZGVvL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hP
UlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmViNDQxMjFmZDdjZjJiYzc0ODZmNjg5NDI1NGE0
NWU2MGU5MzUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X3ZpZGVvL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJp
dG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlk
ZW8vdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZGZjZDFhMGRjNjg2MTExN2Q4ODJlMjFi
NjRhNzQyMWQzYTBjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0yZC1zcmdiOC1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNDMyNzQzYmExMDNmY2M4M2Q2ZWM4
MDhiZjg3ZTZjNmZjNzU4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0
bWFwX2Zyb21fdmlkZW8vdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1p
bWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllU
RSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fdmlkZW8vdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMjkwZGQ5YTVkMTg1N2FhYjk0MjUwMGUx
M2IzYTQwYjg1NDhhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JBIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcjExZl9nMTFmX2Ix
MGYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwMDI3NjMxZDczOTA0YjQwYWI2MmYyYjBk
YmM2NzUyMzY4NWQyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV92aWRlby90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9t
X3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFs
Zl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNTkyOGMwMWQ0M2VhNTQ4Yzk0MjA1MjY3MDVmOGUz
YjQ0NWYzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9G
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFw
X2Zyb21fdmlkZW8vdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzEx
Zl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNk
LXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWZmMDhkNGVjNDVkYzgzMmIyYjQ5ZWM5YWQ2NjQyYTI1NTlkOGVjZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcjEx
Zl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCww
ICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJ
R05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcjE2Zi1yZWQtZmxv
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jODQ4ZjI3ZDFkNWFiMjViZTgwYmJkMWJlNDMyMTlhN2ZkZDIx
NDUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVv
L3RleC0zZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1i
aXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXIxNmYt
cmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTdhZTJkYzQzZGVhZDBmOGVkY2U2Mjlk
NjRjNTNmZjFiNDMzZGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX3ZpZGVvL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1i
aXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90
ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92
aWRlby90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTQwZDBlNjk1NmJk
NDdiYzQ0OGUwZGQxOWQyYTkwNmI4NTdjYjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
aW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVv
L3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1h
cF9mcm9tX3ZpZGVvL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk4YzBlM2Q2NzM0YjI4ZmE4NzFlZWJjZDFlNzY0OTFmZDNiZTAzMzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXI4LXJlZC11bnNp
Z25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJS
RUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1y
OHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjNmZDRjZDgw
YmEwZmVjNTRmOGU4ODAxZWYxNDZhODE3M2I0ZjQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAi
UkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnMTZmLXJnLWZsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnMTZmLXJn
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE4MzhiZDE1NmVlZGVmZmZjZmIyOTRhMWM2NjdjNmZl
Y2RhOGZjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92
aWRlby90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmcxNmYtcmctaGFs
Zl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1y
ZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBiOWViMDJkMjY3YmZlODIzODNk
MjBkYTI3MzFjNjYwMjU1Mzk5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiSEFMRl9GTE9BVCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlk
ZW8vdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fdmlkZW8vdGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEwNGU5M2Y4
M2Y4ZWU4ODY0YjZmODI0ZDRkNWNhZjZlZDkzOTUzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92
aWRlby90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV92aWRlby90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWIzZDA3NGU4MmU4M2UzOTMxZTczZmM5YzA3OTE0ZWVmNTk3OThlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZzgtcmct
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4
IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgt
M2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkNGVj
YTc0OTczN2EyYjM0NTkxNDljY2JlMjdiZDA1ODVlOTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhV
SSIsICJSR19JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2IxMF9hMi1y
Z2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEw
XzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZjRjOGRmYjFkNWVjOGVkMGZlNmNkMzU0M2VjZGY3
NjBkYzJkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwg
IlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjE2Zi1yZ2ItZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiMTZm
LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YTExN2RkMTM1ZDdkY2E4NDcyNmQ3NTI5NDgx
YjcwY2Y2ZDNlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zy
b21fdmlkZW8vdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2Ix
NmYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRl
by90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZmODY0YTMw
NzU2N2VmODY0NWI5MmZiNjBjYTQ2NGVlNzk1MmExZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMWViNzJiYWEzOThkODI0ZTJhY2I5Y2QwMDgxZGI5NGUzYTNjMDZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1y
Z2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjU2
NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNTc2ZGQ5MjdmZGViYmIxMjJk
ZTlhMWM4YmFkNzY2NmU3ZjY4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV92aWRlby90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2I1NjUtcmdiLXVu
c2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRjNWU3NjA3ZjU4ZDQyMzdiMmZk
OWY5NTcyOGFjOWE3ZmRjOTBkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9i
aXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5o
dG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJV
TlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjVf
YTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM2ZDA1NDAwMTY0ZTMzZjNl
OGQ3ZjgzMzkxOGEyNTNlNzBmYTZhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVf
NV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2Qtcmdi
NV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU0NDgx
ZThmZTczY2FiNjU2ZDM2N2ZkYTliMTY4NmM2MjlmODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1y
Z2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21f
dmlkZW8vdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTkw
OWNhNjljNTAwMzIxMDFmOTRjNjY0MzBjZDAyMjcyMmVkYTExCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJH
QiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2Qt
cmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWQ5Y2Vm
ODZlNTRmNTg0ZjZjY2U1MmY0YTVmMmQ1ZDc0NTJmZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2I5X2U1
LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0z
ZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YjNhNDgwYTZkZWMyMDlhYWEy
NTdmZWU0MGNhMTEwZGQ3YTAyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
Yml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV92aWRlby90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhZTlkYWIxNzBmZmM5NDRhYmJmMWNiYzExNzg1YjgzNzgzOWY4M2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYjlfZTUt
cmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxv
YXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBfZnJvbV92aWRlby90ZXgtM2QtcmdiYTE2
Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhhMzQwODAzMDFlMzViMGJlMzBmMWQ4Y2M1
YTc5OWIyM2Y4MDZjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV92aWRlby90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS13aXRoLWltYWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRt
YXAtZnJvbS12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0z
ZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0zZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3MDQ1NWJmNWY5MDZjNmNlMzgzMWM4M2RmYjc0NTI1MWVkZWQzNmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYmExNmYtcmdi
YS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWltYWdlLWJpdG1hcC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12aWRlby5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JB
MTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2JhMzJm
LXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2I2ODU0NGFjNTdmNzViMDBkZTNlNzkwNjdi
ZjczNjVhY2Y4NTZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNk
LXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hOTMyNmJlZmNjMTNlZTQxYTg5ZTBmMjA4NTZjYWU3YjBmYmJhNGJjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYmE0LXJnYmEtdW5z
aWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3Zp
ZGVvL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NDI4Y2YwYzJlODhiOWZiNTAyODUwYzA3MzZlMWNhOTllYTA0MTE0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2JhNC1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1h
Z2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8v
dGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Jp
dG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYmRhYmY4OTA5ZDg5NzAzOWNhNGYxYTNkNmE3MjRmNzdhNjFjYzE3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1yZ2Jh
OC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0
bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXJnYmE4dWkt
cmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRtYXBf
ZnJvbV92aWRlby90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwODRjNDQ0YWNlZDQ1MjEzYzAwYTJkMWY5ZjY5ZTllM2IzYmU2Y2QKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNk
LXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1h
cC1mcm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2JpdG1hcF9m
cm9tX3ZpZGVvL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2JpdG1hcF9mcm9tX3ZpZGVvL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMxODE1YTUxMmUxNzIxYTBiZTRjMjU1NmE0MmE4YjdkMGNlZTg0YWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4
LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWlt
YWdlLWJpdG1hcC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS12
aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNkLXNy
Z2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9iaXRt
YXBfZnJvbV92aWRlby90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhOWU2ODMzODA5OGFhMDRjNmYxYTRmMGM2ZThkMGI2ZjI3ZGM1MjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfYml0bWFwX2Zyb21fdmlkZW8vdGV4LTNk
LXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdp
dGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1m
cm9tLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXIx
MWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJk
LXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNzZkOWZmOTNlNDhj
MjM4ZWYwYjBkZWRkMjFlYjE4YTRiMzNiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJG
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90
ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9kYXRhL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhYTdiZDA1YjgyNDVhNWU3MDk0MDNiYmIwMWRhNjg1YTg5ODRmZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhh
bGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIi
IGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjEx
Rl9HMTFGX0IxMEYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNp
Z25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZjYwNzYxM2NkM2RkMWU0ZmNiMzEwMGI4YzE3OTUzOTA1NjM3YmY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXIxMWZfZzExZl9iMTBm
LXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05FRF9J
TlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9kYXRhL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2RhdGEvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc3YTk0NTRmNThm
MmM0NTcwNThiOTVjMjczMjBjZmE1MWM5NzM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9kYXRhL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcjE2Zi1yZWQtaGFs
Zl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXIxNmYtcmVkLWhhbGZf
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjczN2ViYjE3OGYyMDAyZjUwNjg0M2ZjZDdmMGUzNzI0
YjQ4YTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXIx
NmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0
YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIg
d2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjE2RiIsICJSRUQiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVkNjdkNTRiZWJlOTNkNTM1NzQyODhkODkxYjQxOGU0YTFiZmYwODEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcjMyZi1yZWQtZmxvYXQuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52
YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJk
LXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQt
cjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDkwOTk4YTA2YmRjZjU2NWIz
MzM1Njc2MWMzMDRlYjM2YjU5YzIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2RhdGEvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlI4IiwgIlJFRCIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yOHVpLXJl
ZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0y
ZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzgxNzQ0
OTU3NjgyODgxYWNmZWM2MzM1MmY3YWI2ODUzNWM3NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIy
Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOFVJIiwgIlJFRF9J
TlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjVjMTk3
MzY5YzdlN2M0MDZhZDRmNjU1NjFiMTE4N2U1MTIzZDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZzE2Zi1y
Zy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmcxNmYtcmct
aGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NjQxY2NmODU4M2VhNmUyM2RhNTU5YjE0M2I3
MzNiYzdjNGRiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgt
MmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2Fu
dmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODdkZDZkNjBhNTJmM2Q2YjJkNGVjMWI0NGVlMGNiZmY2NzAzNmEzNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48
L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzMyRiIsICJSRyIsICJG
TE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90
ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3Rl
eC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTk1MjIyYzJmYzlh
Nzc5MmQ2MjM0NjQ1ZGUxMjNiNGNhMTQ5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJn
OHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
YTRiZWYxOGI5Yjk4ZTNjNjFiOWJlN2ZjNmNiMzJmMzU5Y2FlYTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWln
aHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHOFVJIiwg
IlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRf
Ml8xMF8xMF8xMF9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2IxMF9h
Mi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYjcx
OWVhYmMxZmM4NTM2ZmQxMmVhYjhjNjdiN2MwNzA0NTk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8x
MF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9
IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCMTBfQTIiLCAiUkdCQSIsICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjE2Zi1y
Z2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2IxNmYtcmdiLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBiNGQxYmJmOGQ4ODhjMjg4ZDI3Zjg3OGYwYmVmMTFjNmRj
OGZmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2Ix
NmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRo
PSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4NDgzNGExMmU4NmFlNjRjNTFlMmQ3OWM0YjRiOWY0YjUzMDM0YjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWln
aHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIs
ICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmU2N2Fj
Zjc5OGFmOTZlNGY3YzAyMzkyNGY2NWNjODE2NGVjNDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMzJGIiwgIlJHQiIsICJGTE9BVCIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdi
NTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQt
cmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA1M2ZhOGVlNzdiODE1
MzU3NGNkNTAzOTFjMGFhMzEzNmRiYTM3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9kYXRhL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9C
WVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3Rl
eC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfZGF0YS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0ODRjNGU1YWYzY2FjYjkyZDM1NTQyNGZmM2M4M2YwZjRlMmM0ZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjVfYTEtcmdi
YS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNiMGY0YzQyY2M4MTE2NTEyN2I4YmEx
MTRlYzFmNWZkMmFhZjJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRh
L3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQt
cmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9kYXRhL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzZGNjMzM3NzI4YTcyMTQ4MDNjNmExMTk1NTgwNmM0NTVjYzE4MWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2Ut
ZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZh
cyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjgt
cmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2I4
LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0M2JmMDdjNmViOTc5YmU3NjA4
YTU1N2M4MjA4ZmM4Yzg2YjA3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9k
YXRhL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjh1
aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90
ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDRiYWI3ZjhiY2RlNmIxMmJiNTJiNWEwYzlmN2QyMDY0MzA3ZWJhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBo
ZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjhV
SSIsICJSR0JfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzU4YmZkYTkwNjJkOTIzMTJjMTBhNDA0NTM0ZGUwYzg3ZGI4M2YzNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1Iiwg
IlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfZGF0YS90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NDYwNTg2MTk1NThiNzdhYWU4MGEyMjdhYzA3NmNjYTQ3ODNhZTZiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+
PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0Ii
LCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfZGF0YS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
ZGF0YS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhlOTI1YzA2
MDE0ZTJjNTZiMzA0Y2ZhMTlmNTdhYmE3ZTRjNDljNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwgIkZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1y
Z2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJk
LXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkOGI1ODI0NDhmMDdk
NmZhZDM0MGI1YTg3YmUwNTAwNmFjNTNiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9p
bWFnZV9kYXRhL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgt
MmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQt
cmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM2OGJiNDlhYTlhNDQ0MWIwNTRj
ZDgwNWM0NjFlYjU3ZDBjM2EzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9k
YXRhL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCQTMyRiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhNC1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJkNzc0MTNhMDQ2YmI5Zjg1MzAyZDM4
NDVlMjEzZDcyN2QzODhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXJnYmE0
LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU4NzcwZTVlYzdlM2RkZWQyNDVjY2Y0ZmE2NTY0ODU0ZjZiMWY0ZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9y
dF80XzRfNF80Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIy
IiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTgtcmdiYS11bnNp
Z25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhYjMyOTBlYWE1Yjc0NTYyMmFjNjBlMjIzN2Y5
ZjNkZTUxYmI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0y
ZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
aW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRl
eGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkdCQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1yZ2JhOHVpLXJn
YmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgt
MmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0
Y2U3ZjdmMjdiNDlhZTFjYWQ4ZTY3Y2QyOWRjOTU0MWEzYzZiMGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIg
aGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JB
OFVJIiwgIlJHQkFfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRf
Ynl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIzNTc3YWRjZmQwMWIwNTE1MjVlYTIzZTQxOWIzYzVm
NzA4YWJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0yZC1z
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2Fu
dmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtMmQtc3JnYjhfYWxwaGE4LXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTJkLXNyZ2I4
X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDgzYTA1NDViOTI2
N2FjNWNkMjdhNGYxZDgxNTMwNGQwYzI0MGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2RhdGEvdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9j
YW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJH
QkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODZiYjFmZDhhZTRmZjdhYWQ5MTgxMDBjMmUzNjZhNmNiNDkyNzM1YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1y
Z2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIi
IGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjEx
Rl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1o
YWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ5OGNkMTBjMjQxMzY4YzgyMzJjY2FhMjIyMDRj
Y2FlMzRlYWJkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0z
ZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qt
cjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50
XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1MDcyN2QxZjY5MzYyNTVlZTMyYWZm
NDRiZmVlODZjMDg3ZDNhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0
YS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0Ix
MEYiLCAiUkdCIiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXIxNmYtcmVkLWZsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjE2Zi1yZWQtZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNGQyZjZkMzA0Y2VhODExNDMyNTM4N2RlNjQxMDQwYzA2YTNkNDEwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXIxNmYtcmVkLWZsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9
IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVE
IiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9k
YXRhL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0
YS90ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5Y2I5Y2UzMGFk
NjYxMzRmNjQwZjY3ZjQ4OTMzNmNjNjI0M2M2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1y
MzJmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXIzMmYtcmVk
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY2OGQ4MmM4MjM2ZDExYWI5MTFiZmRjOTc0NzlmNjFm
ZTVlYzExZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1y
MzJmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0
aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSMzJGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwYzNmOGM2NmE2ZDVhZjNlNTViMDZhMjZiZDhmZTNkNGYxYTQ0NTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjgiLCAiUkVEIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQxY2M5ZDI1YzIyMTVkZDIyNTZhNzhhNjliYTY2MzVmODllZjBlNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcjh1aS1yZWRf
aW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdl
LWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52
YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmcxNmYtcmct
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAzNmI1ZWY5ZmVhMTZiZjJjNDQxYTYwMGVmYzUwMmJlMDZkMTdkMzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmcxNmYtcmct
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhl
aWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYi
LCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFn
ZV9kYXRhL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0MzNm
ZmIzNmU3YmU5NTlmZmQ0OGFiNTNmNmYzYmM1Y2JlZDkxMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFz
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkhBTEZfRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4
LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmcz
MmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzExM2Q4YjFmNjk4ZGJhYjIwNTcwZDBkZWUz
YWJjYjliN2Q1ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4
LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRh
dGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMi
IHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWM0ZjdlZGQyZTY1OTY3OTI2ODM0N2U2YjgyZDkwOWU1MDBkMTA3YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZzgtcmctdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVp
Z2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAi
UkciLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhZGE5N2QzZWQ4NDczY2UxNDA0YTA3MzJlZTk3ZTU2Mzhh
ZjBlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZzh1
aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
aW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRl
eGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAiUkdfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2Ix
MF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2lt
YWdlX2RhdGEvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzllOTVhZGE5N2MzNjI5ZGNiYjU2MjM2YjM4YTlkMWQ3MWZlYTM1
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2IxMF9h
Mi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1h
Z2VfZGF0YS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Rh
dGEvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMThkZGY4YjczYWYy
ZjRhNzA4NzM4ZjVmNTlkZjMxNGE5MDlhY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2RhdGEvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiMTZmLXJn
Yi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiMTZmLXJn
Yi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFjOTAyMWViYWJhNTI4MGM3MTNiMWJmYmE0
YWVkOWU4OTcyNDlhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3Rl
eC0zZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgt
aW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRl
eGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2IzMmYtcmdiLWZs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiMzJmLXJnYi1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZhZjIzMGQxMWIxYTg2Y2NmYWMxM2ZiN2IyMGE4NDQ4MmZjNTljZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiMzJmLXJn
Yi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIg
aGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0Iz
MkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZTQzZTk5ZDdiYTcwNjhjYzU1M2I4MDU0NWJlODNmNTJmODA5NmEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIg
aGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1
NjUiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82
XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVk
X3Nob3J0XzVfNl81Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkzZGQzYmIzYjI0MTUzZTM5ZGQxZDMyYTQ0
NzhjOTEwYzY3YzhiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3Rl
eC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfU0hPUlRf
NV82XzUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2Vf
ZGF0YS90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Yzk1OTM3ZWE1NDQ4YjdlZTZkNDY0YmRhNjJkYzIyMWE1MWYzNWMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRl
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9
IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAi
UkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVf
MS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25l
ZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI3Y2YyNjBkNDRiYTZmY2ZiMDIwYzUx
YzY3NGRkOTA0OWY2MjZmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRh
L3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdO
RURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L2ltYWdlX2RhdGEvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYmRmZjljNWE5ZTJjODdhNGE5ZDU4ODQ0NmYwYjUyYTA3MTQ5N2FmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOCIsICJSR0Ii
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRf
Ynl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjN2Q1OTk2N2I4YjVjMjMwZWJjYjAxNzMzM2YwNTY5MzA4
MzliNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmdi
OHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNk
LXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmdi
OV9lNS1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTI0OTE0OWExOTA1YjY5YzE2ZDJlNmJk
YjNlZDNiYzYwMDdkZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEv
dGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhj
YW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zs
b2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOGZiMzBkMjU5ZGIyNjFmNzMwOTk4M2YwMmY0YzNlZjcw
OGIwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtcmdi
OV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1k
YXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFz
IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYjAzYTBmMzhmZWI2NTdiMmJkZTQwM2U5NDFlYjdlYTNiOTA0M2RhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYmExNmYtcmdi
YS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIg
aGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JB
MTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YWQ1ZmIyMDQwMDVkMTI3NzU3MGJhY2QxOTg5YjFkMjBjMjlmZTRiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxm
X2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBo
ZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEx
NkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZDRjYzM5ZjY4ZWEyNzdlNTk2MWU3NGM5ZjIwYTMzNzYyOThhOTczCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48
L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEi
LCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2Rh
dGEvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2RhdGEvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdk
ZjgwMzA5ZjQ1NTM1YWZlYTQwNDliY2U2Mzc3ZGViYjljMTJmYmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi
PjwvY2FudmFzPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEi
LCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80
XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ1NzNmYTEyNGFmOTljZjhjMmM2MTQ4N2Q5YzAwMjY2
NTI4YTU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1y
Z2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtaW1hZ2UtZGF0YS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9InRleGNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF80XzRf
NF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3Rl
eC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRh
L3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGY4NWVh
MzZjMDdlNGI4MjVhNjU4NzY5NGU0YWU3M2U3MjQwMGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2Nh
bnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJSR0JBIiwgIlVO
U0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdl
X2RhdGEvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFmOTE3ZDQwNmRkODk3YzdlOGMwOTA4ZjY1Y2NhZTc4ZWJl
OTRlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRhL3RleC0zZC1yZ2Jh
OHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL2ltYWdlX2RhdGEvdGV4
LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90
ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWMyYmM1ZTNm
MGQxMDUxZDIwNzA3YzYwM2Q2MmZmZDdlMzQ5OGIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL2ltYWdlX2RhdGEvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJ0ZXhjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjwvY2FudmFz
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4IiwgIlJHQiIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9pbWFnZV9kYXRh
L3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
aW1hZ2VfZGF0YS90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1MmQzODc4ODBhMGEzOTkzY2FmZWE2NTExNjM3NmE0YWYwOWFkNjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvaW1hZ2VfZGF0YS90ZXgtM2Qtc3JnYjhfYWxwaGE4LXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRh
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0idGV4Y2FudmFzIiB3
aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJTUkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2FjdGl2ZS0zZC10ZXh0dXJlLWJ1Zy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvYWN0aXZlLTNkLXRleHR1cmUtYnVnLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmU4NjUxNGRkMjFmYzgwYmE3MzZhM2ZjNDVlZjMxZmFhMWFmOTA5MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9taXNjL2FjdGl2ZS0zZC10ZXh0dXJlLWJ1Zy5odG1sCkBAIC0wLDAgKzEs
MTI0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBBY3RpdmUgVEVYVFVSRTEgQnVnIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZlYzQgYV9wb3Np
dGlvbjsKK2luIHZlYzIgYV9jb29yZDsKK291dCB2ZWMyIHZfY29vcmQ7Cit2b2lkIG1haW4oKSB7
CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIHZfY29vcmQgPSBhX2Nvb3JkOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworaW4gdmVjMiB2
X2Nvb3JkOwordW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB1X3NhbXBsZXI7CitvdXQgdmVjNCBv
X2NvbG9yOwordm9pZCBtYWluICgpIHsKKyAgICBvX2NvbG9yID0gdGV4dHVyZSh1X3NhbXBsZXIs
IHZlYzModl9jb29yZCwgMC4wKSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitkZXNjcmlwdGlvbigiVGVzdCBmb3IgYSBNYWNPU1ggMTAuMTIgd2l0aCBJbnRlbCBHUFVz
IGRyaXZlciBjcmFzaCBidWcgYWN0aXZhdGluZyBURVhUVVJFMSBmb3IgM2QgdGV4dHVyZSIpOwor
ZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIHNhbXBsZXJMb2M7CisKK2Z1bmN0aW9uIHJlbmRl
cih0ZXh0dXJlVW5pdCwgd2lkdGgsIGhlaWdodCwgZXhwZWN0ZWRDb2xvciwgbXNnKSB7CisgICAg
Z2wudW5pZm9ybTFpKHNhbXBsZXJMb2MsIHRleHR1cmVVbml0KTsKKyAgICB3dHUuc2V0dXBVbml0
UXVhZChnbCwgMCwgMSk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICB3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZENvbG9y
LCBtc2cpOworfQorCitmdW5jdGlvbiBhY3RpdmVUZXh0dXJlVGVzdCgpIHsKKyAgICB2YXIgdGV4
dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB2YXIgc2FtcGxlciA9IGdsLmNyZWF0ZVNh
bXBsZXIoKTsKKyAgICB2YXIgd2lkdGggPSA2NDsKKyAgICB2YXIgaGVpZ2h0ID0gNjQ7CisgICAg
dmFyIGRlcHRoID0gNDsKKyAgICB2YXIgYmxhY2sgPSBbMCwgMCwgMCwgMjU1XTsKKyAgICB2YXIg
c2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogZGVwdGggKiA0OworCisgICAgdmFyIGJ1ZiA9IG5ldyBV
aW50OEFycmF5KHNpemUpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSA0KSB7
CisgICAgICAgIGJ1ZltpICsgMF0gPSAwOworICAgICAgICBidWZbaSArIDFdID0gMjU1OworICAg
ICAgICBidWZbaSArIDJdID0gMDsKKyAgICAgICAgYnVmW2kgKyAzXSA9IDI1NTsKKyAgICB9CisK
KyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hh
ZGVyIl0sIFsnYV9wb3NpdGlvbicsICdhX2Nvb3JkJ10sIFswLCAxXSk7CisgICAgc2FtcGxlckxv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9zYW1wbGVyIik7CisKKyAgICBn
bC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleHR1cmUpOworICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwg
MCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGJ1Zik7CisgICAgLy8gdGV4dHVyZSBpcyB1bmJvdW5kIGZyb20gdGhlIGRlZmF1bHQg
dGV4dHVyZSB1bml0IFRFWFRVUkUwLAorICAgIC8vIHRoZW4gYSBkZWZhdWx0IGJsYWNrIHRleHR1
cmUgd2lsbCBiZSBib3VuZCB0byBURVhUVVJFMC4KKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzNELCBudWxsKTsKKworICAgIC8vIEFjdGl2ZSBURVhUVVJFMSBhbmQgM2QgdGV4dHVyZSBh
cmUgbmVjZXNzYXJ5IHRvIHJlcHJvZHVjZSB0aGUgY3Jhc2ggYnVnLgorICAgIGdsLmFjdGl2ZVRl
eHR1cmUoZ2wuVEVYVFVSRTEpOworCisgICAgZ2wuYmluZFNhbXBsZXIoMCwgc2FtcGxlcik7Cisg
ICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5ORUFSRVNUKTsKKyAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
M0QsIHRleHR1cmUpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8zRCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfM0QsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisKKyAgICAvLyBS
ZW5kZXIgdXNpbmcgc2FtcGxlcgorICAgIC8vIFdoZW4gcmVuZGVyaW5nIGZyb20gdGV4dHVyZSB1
bml0IDAsIHRoZSBibGFjayB0ZXh0dXJlIHdpbGwgYmUgZHJhd24uCisgICAgcmVuZGVyKDAsIHdp
ZHRoLCBoZWlnaHQsIGJsYWNrLCAiUmVzdWx0IHBpeGVscyByZW5kZXJpbmcgZnJvbSBURVhUVVJF
MCBzaG91bGQgYmUgYmxhY2siKTsKKworICAgIGdsLmJpbmRTYW1wbGVyKDAsIG51bGwpOworICAg
IGdsLmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisKKyAgICAvLyBSZW5kZXIgdXNpbmcgdGV4dHVy
ZQorICAgIC8vIFdoZW4gcmVuZGVyaW5nIGZyb20gdGV4dHVyZSB1bml0IDAsIHRoZSBibGFjayB0
ZXh0dXJlIHdpbGwgYmUgZHJhd24uCisgICAgLy8gQ3Jhc2ggaGFwcGVucyB3aGVuIGNhbGxpbmcg
Z2wuZHJhd0FycmF5cyBkdXJpbmcgdGhpcyByZW5kZXJpbmcuCisgICAgcmVuZGVyKDAsIHdpZHRo
LCBoZWlnaHQsIGJsYWNrLCAiUmVzdWx0IHBpeGVscyByZW5kZXJpbmcgZnJvbSBURVhUVVJFMCBz
aG91bGQgYmUgYmxhY2siKTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfM0QsIG51
bGwpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKK30KKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8gZ2V0
IGEgV2ViR0wyIGNvbnRleHQiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiQ3JlYXRlZCBX
ZWJHTDIgY29udGV4dCBzdWNjZXNzZnVsbHkiKTsKKyAgICBhY3RpdmVUZXh0dXJlVGVzdCgpOwor
fQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2FuZ2xlLXN0dWNr
LWRlcHRoLXRleHR1cmVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9hbmdsZS1zdHVjay1kZXB0aC10
ZXh0dXJlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3Y2IwYWM5MTYyM2EzZDIyMWI5ODIyOGZlMTBiMzMy
MzU3YTYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9hbmdsZS1zdHVjay1k
ZXB0aC10ZXh0dXJlcy5odG1sCkBAIC0wLDAgKzEsMTk3IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlcyBNaXNjIFRl
c3RzOiAiU3R1Y2siIERlcHRoIFRleHR1cmVzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IGlk
PSJkcmF3LXZzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMTAwCithdHRyaWJ1
dGUgdmVjMyB2ZXJ0ZXg7Cit2b2lkIG1haW4gKCkgeworICBnbF9Qb3NpdGlvbiA9IHZlYzQodmVy
dGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiAqIDIuMCAtIDEuMCwgMSk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9ImRyYXctZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9u
IDEwMAordm9pZCBtYWluICgpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAoMS4pOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImJsaXQtdnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4j
dmVyc2lvbiAxMDAKK2F0dHJpYnV0ZSB2ZWMyIHZlcnRleDsKK3ZhcnlpbmcgdmVjMiBwb3NpdGlv
bjsKK3ZvaWQgbWFpbiAoKSB7CisgIHBvc2l0aW9uID0gdmVydGV4ICogLjUgKyAuNTsKKyAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHZlcnRleCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9
ImJsaXQtZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDEwMAorcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB0ZXh0dXJlOwordmFyeWluZyB2
ZWMyIHBvc2l0aW9uOwordm9pZCBtYWluICgpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gdmVjNCAodGV4
dHVyZTJEICh0ZXh0dXJlLCBwb3NpdGlvbikucnJyLCAxLik7Cit9Cis8L3NjcmlwdD4KKworPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEy
OCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjb3ZlcnMgYW4gQU5HTEUgYnVnIHdoZXJlIGFuIEFNRCB3b3JrYXJvdW5kIHdvdWxk
IGNhdXNlIGRlcHRoIHRleHR1cmVzIHRvIHN0aWNrLiBTZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS8x
NjY0LiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKwordmFyIFdFQkdMX2RlcHRoX3Rl
eHR1cmU7CisKK3ZhciBkcmF3UHJvZ3JhbSwgYmxpdFByb2dyYW0sIHRleHR1cmVMb2M7CisKK3Zh
ciBxdWFkVkI7CisKK2Z1bmN0aW9uIGRyYXdRdWFkKGRlcHRoKSB7CisgIGlmICghcXVhZFZCKSB7
CisgICAgcXVhZFZCID0gZ2wuY3JlYXRlQnVmZmVyKCkKKyAgfQorCisgIHZhciBxdWFkVmVydHMg
PSBuZXcgRmxvYXQzMkFycmF5KDMgKiA2KTsKKyAgcXVhZFZlcnRzWzBdID0gLTEuMDsgcXVhZFZl
cnRzWzFdID0gICAxLjA7IHF1YWRWZXJ0c1syXSA9IGRlcHRoOworICBxdWFkVmVydHNbM10gPSAt
MS4wOyBxdWFkVmVydHNbNF0gPSAgLTEuMDsgcXVhZFZlcnRzWzVdID0gZGVwdGg7CisgIHF1YWRW
ZXJ0c1s2XSA9ICAxLjA7IHF1YWRWZXJ0c1s3XSA9ICAtMS4wOyBxdWFkVmVydHNbOF0gPSBkZXB0
aDsKKyAgcXVhZFZlcnRzWzldID0gLTEuMDsgcXVhZFZlcnRzWzEwXSA9ICAxLjA7IHF1YWRWZXJ0
c1sxMV0gPSBkZXB0aDsKKyAgcXVhZFZlcnRzWzEyXSA9IDEuMDsgcXVhZFZlcnRzWzEzXSA9IC0x
LjA7IHF1YWRWZXJ0c1sxNF0gPSBkZXB0aDsKKyAgcXVhZFZlcnRzWzE1XSA9IDEuMDsgcXVhZFZl
cnRzWzE2XSA9ICAxLjA7IHF1YWRWZXJ0c1sxN10gPSBkZXB0aDsKKworICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgcXVhZFZCKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIHF1YWRWZXJ0cywgZ2wuU1RBVElDX0RSQVcpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDMsIGdsLkZMT0FULCBnbC5GQUxTRSwgMCwgMCk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDApOworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBkcmF3UXVhZCIpOworfQor
CisvLyBUZXN0IGJhc2VkIG9uIGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5ibGl0LmRlcHRoX3N0ZW5j
aWwuZGVwdGhfMjRfc3RlbmNpbDhfc3RlbmNpbF9vbmx5CitmdW5jdGlvbiBydW5fdGVzdCgpIHsK
KworICB2YXIgY29sb3JUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIGNvbG9yVGV4KTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0Up
OworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZ2wuTElORUFSKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgMTI4LCAxMjgsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKworICB2YXIgZGVw
dGhUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIGRlcHRoVGV4KTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVT
VCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsKKyAgdmFyIGxldmVscyA9IE1hdGgubG9n
MigxMjgpOworICBmb3IgKHZhciBtaXBMZXZlbCA9IDA7IG1pcExldmVsIDw9IGxldmVsczsgKytt
aXBMZXZlbCkKKyAgeworICAgICAgdmFyIHNpemUgPSAxMjggPj4gbWlwTGV2ZWw7CisgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIG1pcExldmVsLCBnbC5ERVBUSDI0X1NURU5DSUw4
LCBzaXplLCBzaXplLCAwLCBnbC5ERVBUSF9TVEVOQ0lMLAorICAgICAgICAgICAgICAgICAgICBn
bC5VTlNJR05FRF9JTlRfMjRfOCwgbnVsbCk7CisgIH0KKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgbnVsbCk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJhZnRlciBpbml0IHRleHR1cmVzIik7CisKKyAgdmFyIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFt
ZWJ1ZmZlcik7CisKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBjb2xvclRleCwgMCk7CisgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBn
bC5URVhUVVJFXzJELCBkZXB0aFRleCwgMCk7CisKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhZnRlciBpbml0IGZyYW1lYnVmZmVyIik7CisKKyAgZ2wuZGVwdGhSYW5n
ZSgwLjAsIDEuMCk7CisgIGdsLnZpZXdwb3J0KDAsIDAsIDEyOCwgMTI4KTsKKyAgZ2wuY2xlYXJD
b2xvcigwLCAwLCAwLCAxKTsKKworICAvLyBEcmF3IGxvb3AuCisgIGZvciAodmFyIGZyYW1lID0g
MDsgZnJhbWUgPCA0OyArK2ZyYW1lKQorICB7CisgICAgICAvLyBkcmF3IGludG8gRkJPCisgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wu
U1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOwor
CisgICAgICBnbC51c2VQcm9ncmFtKGRyYXdQcm9ncmFtKTsKKyAgICAgIGlmIChmcmFtZSAlIDIg
IT0gMCkgeworICAgICAgICBkcmF3UXVhZCgwLjApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ZHJhd1F1YWQoMS4wKTsKKyAgICAgIH0KKworICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKTsKKworICAgICAgLy8gYmxpdCBGQk8KKyAgICAgIGdsLmRpc2FibGUo
Z2wuREVQVEhfVEVTVCk7CisKKyAgICAgIGdsLnVzZVByb2dyYW0oYmxpdFByb2dyYW0pOworICAg
ICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOworICAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgZGVwdGhUZXgpOworCisgICAgICBkcmF3UXVhZCgwLjUpOworCisgICAgICBp
ZiAoZnJhbWUgJSAyICE9IDApIHsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwg
MCwgMTI4LCAxMjgsIFswLCAwLCAwLCAyNTVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXB0aCB0ZXh0dXJlIHNob3VsZCBiZSBibGFjayBvbiBvZGQgaXRlcmF0aW9ucyIpOworCisg
ICAgICB9IGVsc2UgeworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxMjgs
IDEyOCwgWzI1NSwgMjU1LCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlcHRoIHRleHR1cmUgc2hvdWxkIGJlIHdoaXRlIG9uIGV2ZW4gaXRlcmF0aW9ucyIpOworICAg
ICAgfQorCisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVy
IGRyYXciKTsKKyAgfQorCisgIGdsLmRlbGV0ZVRleHR1cmUoY29sb3JUZXgpOworICBnbC5kZWxl
dGVUZXh0dXJlKGRlcHRoVGV4KTsKKyAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXIp
OworfQorCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5v
dCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0
cyIpOworCisgICAgZHJhd1Byb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbImRyYXctdnMi
LCAiZHJhdy1mcyJdLCBbInZlcnRleCJdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgImFmdGVyIGRyYXcgcHJvZ3JhbSBpbml0aWFsaXphdGlvbiIpOworICAgIHNo
b3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGRyYXdQcm9ncmFtLCBnbC5MSU5LX1NUQVRV
UyknLCAndHJ1ZScpOworCisgICAgYmxpdFByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBb
ImJsaXQtdnMiLCAiYmxpdC1mcyJdLCBbInZlcnRleCJdKTsKKyAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGJsaXQgcHJvZ3JhbSBpbml0aWFsaXphdGlvbiIp
OworICAgIHNob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJsaXRQcm9ncmFtLCBnbC5M
SU5LX1NUQVRVUyknLCAndHJ1ZScpOworCisgICAgdGV4dHVyZUxvYyA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihibGl0UHJvZ3JhbSwgInRleHR1cmUiKQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAicXVlcnkgdGV4dHVyZSBsb2NhdGlvbiIpOworICAgIHNob3VsZEJl
Tm9uTnVsbCgndGV4dHVyZUxvYycpCisKKyAgICBydW5fdGVzdCgpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9taXNjL2NhbnZhcy1yZW1haW5zLXVuY2hhbmdlZC1hZnRlci11c2VkLWlu
LXdlYmdsLXRleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2NhbnZhcy1yZW1haW5zLXVuY2hh
bmdlZC1hZnRlci11c2VkLWluLXdlYmdsLXRleHR1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzgxNTUy
NzkzMDEyZTdlN2M5NjI3ZTQ1NTc4NTdlMDNjMTUxMzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvY2FudmFzLXJlbWFpbnMtdW5jaGFuZ2VkLWFmdGVyLXVzZWQtaW4td2ViZ2wt
dGV4dHVyZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJj
IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oJ1Rlc3RzIGNhbnZhcyByZW1haW5zIHVuY2hhbmdlZCBhZnRlciBpdCBp
cyB1c2VkIGluIHdlYmdsIHRleHV0cmUnKTsKKworZGVidWcoIlRoaXMgaXMgYSByZWdyZXNzaW9u
IHRlc3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9p
c3N1ZXMvZGV0YWlsP2lkPTQ0NjM4MCc+Q2hyb21pdW0gSXNzdWUgNDQ2MzgwPC9hPiIpOworZGVi
dWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJjIiwgdW5kZWZpbmVkLCAyKTsKKworZnVuY3Rpb24gY2hlY2tTb3VyY2VDYW52
YXNJbWFnZURhdGEoaW1hZ2VEYXRhQmVmb3JlLCBpbWFnZURhdGFBZnRlcikgeworICBpZiAoaW1h
Z2VEYXRhQmVmb3JlLmxlbmd0aCAhPSBpbWFnZURhdGFBZnRlci5sZW5ndGgpIHsKKyAgICB0ZXN0
RmFpbGVkKCJUaGUgc2l6ZSBvZiBpbWFnZSBkYXRhIGluIHNvdXJjZSBjYW52YXMgYmVjb21lIGRp
ZmZlcmVudCBhZnRlciBpdCBpcyB1c2VkIGluIHdlYmdsIHRleHR1cmUuIik7CisgICAgcmV0dXJu
OworICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VEYXRhQWZ0ZXIubGVuZ3RoOyBpKysp
IHsKKyAgICBpZiAoaW1hZ2VEYXRhQmVmb3JlW2ldICE9IGltYWdlRGF0YUFmdGVyW2ldKSB7Cisg
ICAgICB0ZXN0RmFpbGVkKCJQaXhlbCB2YWx1ZXMgaW4gc291cmNlIGNhbnZhcyBoYXZlIGNoYW5n
ZWQgYWZ0ZXIgY2FudmFzIHVzZWQgaW4gd2ViZ2wgdGV4dHVyZS4iKTsKKyAgICAgIHJldHVybjsK
KyAgICB9CisgIH0KKyAgdGVzdFBhc3NlZCgiUGl4ZWwgdmFsdWVzIGluIHNvdXJjZSBjYW52YXMg
cmVtYWluIHVuY2hhbmdlZCBhZnRlciBjYW52YXMgdXNlZCBpbiB3ZWJnbCB0ZXh0dXJlLiIpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KHdpZHRoLCBoZWlnaHQpIHsKKyAgdmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICBjYW52YXMud2lkdGggPSB3aWR0aDsK
KyAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0
KCIyZCIpOworICBjdHguZmlsbFN0eWxlID0gInJnYmEoMSwgNjMsIDEyNywgMSkiOworICBjdHgu
ZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgdmFyIHJlZkNh
bnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICByZWZDYW52YXMud2lk
dGggPSB3aWR0aDsKKyAgcmVmQ2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgdmFyIHJlZkN0eCA9
IHJlZkNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICByZWZDdHguZmlsbFN0eWxlID0gInJnYmEo
MSwgNjMsIDEyNywgMSkiOworICByZWZDdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBj
YW52YXMuaGVpZ2h0KTsKKyAgLy8gQSByZWZDYW52YXMgd2l0aCBzYW1lIGRhdGEgYXMgY2FudmFz
IGlzIHVzZWQgdG8gZ2V0IG9yaWdpbmFsIGltYWdlIGRhdGEsIHNpbmNlCisgIC8vIGdldEltYWdl
RGF0YSBtYXkgY2hhbmdlIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHN0YXR1cyBvZiBjYW52YXMgYW5k
IHdlIGRvbid0IHdhbnQgdG8KKyAgLy8gb21pdCB0ZXN0aW5nIGZvciBoYXJkd2FyZSBhY2NlbGVy
YXRlZCBjYW52YXMuCisgIHZhciBpbWFnZURhdGFCZWZvcmUgPSByZWZDdHguZ2V0SW1hZ2VEYXRh
KDAsIDAsIHJlZkNhbnZhcy53aWR0aCwgcmVmQ2FudmFzLmhlaWdodCk7CisgIHZhciB0ZXggPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7
CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgY2FudmFzKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJUZXhJbWFnZTJEIHNob3VsZCBzdWNjZWVkIik7CisgIGNoZWNrU291cmNlQ2FudmFz
SW1hZ2VEYXRhKGltYWdlRGF0YUJlZm9yZSwgY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMu
d2lkdGgsIGNhbnZhcy5oZWlnaHQpKTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCity
dW5UZXN0KDIsIDIpOworcnVuVGVzdCgyNTcsIDI1Nyk7CisKK2ZpbmlzaFRlc3QoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29tcHJl
c3NlZC10ZXgtZnJvbS1wYm8tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2NvbXByZXNzZWQt
dGV4LWZyb20tcGJvLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ0NDRkMzJmYjg0YTNmZTlmNGI5
YjExZTY5ZjBkMmNkZmVlNDI1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2Nv
bXByZXNzZWQtdGV4LWZyb20tcGJvLWNyYXNoLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+UmVncmVzc2lv
biB0ZXN0IGZvciBjb21wcmVzc2VkVGV4IHdpdGggUEJPPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7CitkZXNjcmlwdGlvbigpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIiwgdW5kZWZpbmVkLCAyKTsKKwordmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2ds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKy8vIFRoZSBmb2xsb3dpbmcgc3Rh
dGVtZW50IGNhdXNlZCBhIGNyYXNoIGluIENocm9tZS4gU2VlIGNyYnVnLmNvbS82OTAzMzUuCisv
LyBCZWNhdXNlIG5vIFBCTyBpcyBib3VuZCwgdGhlIGxhc3QgcGFyYW1ldGVyIGlzIGludGVycHJl
Y3RlZCBhcyBhIHBvaW50ZXIKKy8vIHRvIHRoZSBjbGllbnQgc2lkZSBkYXRhLgorZ2wuY29tcHJl
c3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgNCwgNCwgMCwgOCwgMyk7CisKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfVkFMVUUs
IGdsLklOVkFMSURfT1BFUkFUSU9OXSwKKyAgICAic2hvdWxkIG5vdCBjcmFzaCBhbmQgZ2VuZXJh
dGUgYSBHTCBlcnJvciIpOworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlz
Yy9jb21wcmVzc2VkLXRleC1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29tcHJlc3NlZC10
ZXgtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MThkNmU4ZGZmMmRkZjcyOWJhNjA2OGUyM2QwNmQ3
MmQ1OTVjMWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29tcHJlc3NlZC10
ZXgtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjAg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citj
b25zdCBjb250ZXh0VmVyc2lvbiA9IDI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy9jb21wcmVzc2VkLXRleC1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2NvcHktdGV4dHVyZS1jdWJlLW1hcC1BTUQt
YnVnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9jb3B5LXRleHR1cmUtY3ViZS1tYXAtQU1ELWJ1Zy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAwOGFjODg0NTliNDRiY2FlNDAzZTkxOWZhODVkZDkwNjllMGVjOWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9jb3B5LXRleHR1cmUtY3ViZS1tYXAt
QU1ELWJ1Zy5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBjb3B5IGludG8gY3ViZSBtYXAgdGV4
dHVyZSBjb25mb3JtYW5jZSB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbDsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgdmFyIHdpZHRoID0gMTY7CisgIHZhciBoZWlnaHQgPSAx
NjsKKyAgdmFyIGxldmVsID0gMDsKKyAgdmFyIGNhc2VzID0gWworICAgIHsKKyAgICAgIGludGVy
bmFsZm9ybWF0OiAiUkdCQTgiLAorICAgICAgZm9ybWF0OiAiUkdCQSIsCisgICAgICB0eXBlOiAi
VU5TSUdORURfQllURSIsCisgICAgICBkYXRhOiBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdo
dCAqIDQpCisgICAgfSwKKyAgICB7CisgICAgICBpbnRlcm5hbGZvcm1hdDogIlJHQkE4SSIsCisg
ICAgICBmb3JtYXQ6ICJSR0JBX0lOVEVHRVIiLAorICAgICAgdHlwZTogIkJZVEUiLAorICAgICAg
ZGF0YTogbmV3IEludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgfSwKKyAgICB7Cisg
ICAgICBpbnRlcm5hbGZvcm1hdDogIlJHQkE4VUkiLAorICAgICAgZm9ybWF0OiAiUkdCQV9JTlRF
R0VSIiwKKyAgICAgIHR5cGU6ICJVTlNJR05FRF9CWVRFIiwKKyAgICAgIGRhdGE6IG5ldyBVaW50
OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCkKKyAgICB9CisgIF07CisgIGlmIChnbC5nZXRFeHRl
bnNpb24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSkgeworICAgICAgY2FzZXMucHVzaCh7Cisg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMzJGIiwKKyAgICAgICAgICBmb3JtYXQ6ICJS
R0JBIiwKKyAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICAgIGRhdGE6IG5ldyBGbG9h
dDMyQXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KQorICAgICAgfSk7CisgIH0KKyAgY2FzZXMuZm9y
RWFjaChmdW5jdGlvbih0ZXN0Y2FzZSkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVz
dGluZyBpbnRlcm5hbGZvcm1hdDogIiArIHRlc3RjYXNlLmludGVybmFsZm9ybWF0KTsKKworICAg
IHZhciBpbnRlcm5hbGZvcm1hdCA9IGdsW3Rlc3RjYXNlLmludGVybmFsZm9ybWF0XTsKKyAgICB2
YXIgZm9ybWF0ID0gZ2xbdGVzdGNhc2UuZm9ybWF0XTsKKyAgICB2YXIgdHlwZSA9IGdsW3Rlc3Rj
YXNlLnR5cGVdOworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIHZhciBkYXRhID0gdGVz
dGNhc2UuZGF0YTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICB2
YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCBs
ZXZlbCk7CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTZXR1cCBmcmFtZWJ1ZmZlciB3aXRoIHRleHR1cmUgc2hv
dWxkIHN1Y2NlZWQuIik7CisKKyAgICB2YXIgY3ViZVRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgY3ViZVRleHR1cmUp
OworCisgICAgZm9yICh2YXIgZmFjZSA9IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsg
ZmFjZSA8IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIDY7IGZhY2UrKykgeworICAg
ICAgZ2wuY29weVRleEltYWdlMkQoZmFjZSwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCAwLCAwLCB3
aWR0aCwgaGVpZ2h0LCAwKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiQ29weVRleEltYWdlMkQgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgICBnbC5jb3B5VGV4
U3ViSW1hZ2UyRChmYWNlLCBsZXZlbCwgMCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkNvcHlUZXhTdWJJbWFnZTJE
IHNob3VsZCBzdWNjZWVkLiIpOworICAgIH0KKworICAgIGdsLmRlbGV0ZVRleHR1cmUoY3ViZVRl
eHR1cmUpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2wuZGVsZXRlRnJh
bWVidWZmZXIoZmJvKTsKKyAgfSk7Cit9CisKK2Rlc2NyaXB0aW9uKCk7CitkZWJ1ZygiVGhpcyBp
cyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0naHR0cHM6Ly9idWdzLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NzEyMTE3Jz5DaHJvbWl1bSBJc3N1ZSA3MTIx
MTc8L2E+Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7CitzaG91bGRCZU5vbk51bGwoImdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVu
ZGVmaW5lZCwgMikiKTsKKworcnVuVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L21pc2MvY29weS10ZXh0dXJlLWN1YmUtbWFwLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29w
eS10ZXh0dXJlLWN1YmUtbWFwLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YTgxMWNkYWFkYWViMjE3
MzYxYjA3NTkzMGEwZTI4Mzk5ZWQ3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlz
Yy9jb3B5LXRleHR1cmUtY3ViZS1tYXAtYnVnLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgY29w
eSBpbnRvIGN1YmUgbWFwIHRleHR1cmUgYnVnIGNvbmZvcm1hbmNlIHRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTAyNCIgaGVp
Z2h0PSIxMDI0Ij48L2NhbnZhcz4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIHZhciBi
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBidWZmZXIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdU
SCw1KTsKKworICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZSk7CisgIGdsLmNvcHlUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgNSwgZ2wuUkdCQSwgNzUsIDEwLCAyLCAy
LCAwKTsKKyAgLy8gTm90ZSB0aGF0IHRoaXMgYnVnIG9ubHkgbWFuaWZlc3Qgd2l0aCBDaHJvbWUg
QVNBTiBidWlsZCBvbiBNYWNPU1ggd2l0aCBJbnRlbCBkcml2ZXJzLgorICAvLyBBdCB0aGlzIHBv
aW50IEFTQU4gYnVpbGQgd2lsbCBjcmFzaCBpbnNpZGUgSW50ZWwgZHJpdmVyIGNvZGUuCisgIHRl
c3RQYXNzZWQoIkNocm9tZSBBU0FOIGJ1aWxkIG9uIE1hY09TWCB3aXRoIEludGVsIGRyaXZlciBz
aG91bGQgaGF2ZSBjcmFzaGVkIGF0IHRoaXMgcG9pbnQgd2l0aCB0aGlzIGJ1ZyIpOworfQorCitk
ZXNjcmlwdGlvbigpOworZGVidWcoIlRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhy
ZWY9J2h0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTg5MjI4Mic+Q2hyb21pdW0gSXNzdWUgODkyMjgyPC9hPiIpOworCit2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworc2hvdWxkQmVOb25OdWxsKCJnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIDIpIik7CisKK3J1blRlc3QoKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2NvcHktdGV4dHVyZS1pbWFnZS1sdW1hLWZvcm1h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29weS10ZXh0dXJlLWltYWdlLWx1bWEtZm9ybWF0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjQ5NzE2ZGVkYWU2YzBjZWQ4MGI5ZDRmZTJjN2M1NjMzODMwMDhlZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2NvcHktdGV4dHVyZS1pbWFnZS1sdW1h
LWZvcm1hdC5odG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb3B5VGV4U3ViSW1hZ2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0cHgiIGhlaWdodD0iMzJweCI+IDwv
Y2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0
eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitpbiBoaWdocCB2ZWM0IGFf
cG9zaXRpb247CitpbiBoaWdocCB2ZWMyIGFfY29vcmQ7CitvdXQgaGlnaHAgdmVjMiB2X2Nvb3Jk
Owordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAg
dl9jb29yZCA9IGFfY29vcmQ7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXJfbHVt
aW5hbmNlX2FscGhhIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMK
K2luIGhpZ2hwIHZlYzIgdl9jb29yZDsKK3VuaWZvcm0gaGlnaHAgc2FtcGxlcjNEIHVfc2FtcGxl
cjA7CitvdXQgaGlnaHAgdmVjNCBvX2NvbG9yMDsKK3ZvaWQgbWFpbiAodm9pZCkgeworICAgIG9f
Y29sb3IwID0gdmVjNCh0ZXh0dXJlKHVfc2FtcGxlcjAsdmVjMyh2X2Nvb3JkLCAwKSkpOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGUgYmVoYXZpb3Igb2YgY29wVGV4U3ViSW1hZ2UzRCB3aXRoIGx1bWluYW5j
ZSB0ZXh0dXJlcy4iKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKworZnVuY3Rpb24gY29weXRl
eHN1YmltYWdlM0RfbHVtYV9mb3JtYXQoKSB7CisKKyAgICB2YXIgdGVzdEdyb3VwID0gWworICAg
ICAgICB7CisgICAgICAgICAgICBuYW1lOiAnM2RfYWxwaGEnLAorICAgICAgICAgICAgZm9ybWF0
OiBnbC5BTFBIQSwKKyAgICAgICAgICAgIHdpZHRoOiA2NCwKKyAgICAgICAgICAgIGhlaWdodDog
MzIsCisgICAgICAgICAgICBkZXB0aDogMgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICBuYW1lOiAnM2RfbHVtaW5hbmNlJywKKyAgICAgICAgICAgIGZvcm1hdDogZ2wuTFVNSU5B
TkNFLAorICAgICAgICAgICAgd2lkdGg6IDY0LAorICAgICAgICAgICAgaGVpZ2h0OiAzMiwKKyAg
ICAgICAgICAgIGRlcHRoOiAyCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIG5h
bWU6ICczZF9sdW1pbmFuY2VfYWxwaGEnLAorICAgICAgICAgICAgZm9ybWF0OiBnbC5MVU1JTkFO
Q0VfQUxQSEEsCisgICAgICAgICAgICB3aWR0aDogNjQsCisgICAgICAgICAgICBoZWlnaHQ6IDMy
LAorICAgICAgICAgICAgZGVwdGg6IDIKKyAgICAgICAgfQorICAgIF07CisKKyAgICB0ZXN0R3Jv
dXAuZm9yRWFjaChmdW5jdGlvbih0ZXN0Y2FzZSkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIGNvcHl0ZXhzdWJpbWFnZTNkX2x1bWFfZm9ybWF0XyIgKyB0ZXN0
Y2FzZS5uYW1lKTsKKworICAgICAgICB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICB0ZXh0dXJl
WzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgICAgICB2YXIgbGF5ZXIgPSAwOworICAgICAgICB2YXIgd2lkdGggPSB0
ZXN0Y2FzZS53aWR0aDsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRlc3RjYXNlLmhlaWdodDsKKyAg
ICAgICAgdmFyIGRlcHRoID0gdGVzdGNhc2UuZGVwdGg7CisgICAgICAgIHZhciBtc2c7CisgICAg
ICAgIHZhciB1aW50MSA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWludDEubGVuZ3RoIC0gMTsgKytpKSB7CisgICAgICAg
ICAgICB1aW50MVtpICsgMV0gPSAodWludDFbaV0gKyAxMCkgJSAyNTU7CisgICAgICAgIH0KKwor
ICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdo
dCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDEpOworICAgICAgICB2YXIgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmVb
MF0sIDApOworCisgICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICBzZXRVcFRl
eFN0YXR1cygpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCB0
ZXN0Y2FzZS5mb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCB0ZXN0Y2FzZS5mb3JtYXQs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgbGF5ZXIsIDAsIDAsd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworCisg
ICAgICAgICAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlciIs
ICJmc2hhZGVyX2x1bWluYW5jZV9hbHBoYSJdLCBbImFfcG9zaXRpb24iLCAiYV9jb29yZCJdKTsK
KyAgICAgICAgICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKyAgICAgICAgICAgIHd0
dS5kcmF3VW5pdFF1YWQoZ2wpOworCisgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhl
aWdodDsgKyt5KSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsg
Kyt4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjdXIgPSB5ICogd2lkdGggKiA0ICsgeCAq
IDQ7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0Y2FzZS5mb3JtYXQgPT0gZ2wuQUxQSEEp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHgsIHks
IDEsIDEsIFsgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIHVpbnQxW2N1ciArIDNd
XSwgbXNnLCBbMSwgMSwgMSwgMV0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRl
c3RjYXNlLmZvcm1hdCA9PSBnbC5MVU1JTkFOQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHgsIHksIDEsIDEsIFt1aW50MVtjdXJdLCB1aW50MVtj
dXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDFbY3VyXSwgMjU1XSwgbXNnLCBbMSwg
MSwgMSwgMV0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBnbC5MVU1JTkFOQ0Vf
QUxQSEEKKyAgICAgICAgICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHgs
IHksIDEsIDEsIFt1aW50MVtjdXJdLCB1aW50MVtjdXJdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDFbY3VyXSwgdWludDFbY3VyICsgM11dLCBtc2csIFsxLCAxLCAxLCAxXSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmcmFtZWJ1ZmZlciBub3QgY29t
cGxldGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
M0QsIG51bGwpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51
bGwpOworICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVb
MV0pOworICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIH0pOworfQorCitm
dW5jdGlvbiBzZXRVcFRleFN0YXR1cygpIHsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKAorICAgICAg
ICBnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QKKyAgICAp
OworICAgIGdsLnRleFBhcmFtZXRlcmkoCisgICAgICAgIGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVAorICAgICk7CisgICAgZ2wudGV4UGFyYW1ldGVyaSgK
KyAgICAgICAgZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VE
R0UKKyAgICApOworICAgIGdsLnRleFBhcmFtZXRlcmkoCisgICAgICAgIGdsLlRFWFRVUkVfM0Qs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFCisgICAgKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKAorICAgICAgICBnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wu
Q0xBTVBfVE9fRURHRQorICAgICk7Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJX
ZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQo
IldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisgICAgY29weXRleHN1YmltYWdlM0RfbHVtYV9mb3Jt
YXQoKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9jb3B5
LXRleHR1cmUtaW1hZ2Utc2FtZS10ZXh0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9jb3B5LXRl
eHR1cmUtaW1hZ2Utc2FtZS10ZXh0dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI0N2NhYmM0ODdiNDY5
ZjczMDY5NWQ0ZDU4MjdjMDlhNjlhYmY4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9t
aXNjL2NvcHktdGV4dHVyZS1pbWFnZS1zYW1lLXRleHR1cmUuaHRtbApAQCAtMCwwICsxLDE0NCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
V2ViR0wgQ29weVRleEltYWdlIGZyb20vdG8gdGhlIHNhbWUgdGV4dHVyZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjY0
IiBoZWlnaHQ9IjY0Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOworLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Nzk3MjM1CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlm
aWVzIENvcHlUZXhJbWFnZTJEIHdvcmtzIGlmIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZXMgYmVs
b25nIHRvIHRoZSBzYW1lIHRleHR1cmUiKTsKK2RlYnVnKCIiKTsKKwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK2Z1bmN0aW9uIGVudW1U
b1N0cmluZyh2YWx1ZSkgeworICAgIHJldHVybiB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbHVl
KTsKK30KKworZnVuY3Rpb24gY2hlY2tGcmFtZWJ1ZmZlcihleHBlY3RlZCkgeworICAgIHZhciBh
Y3R1YWwgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICBp
ZiAoZXhwZWN0ZWQuaW5kZXhPZihhY3R1YWwpIDwgMCkgeworICAgICAgICB2YXIgbXNnID0gImNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMgZXhwZWN0cyBbIjsKKyAgICAgICAgZm9yICh2YXIgaW5kZXgg
PSAwOyBpbmRleCA8IGV4cGVjdGVkLmxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgbXNn
ICs9IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZXhwZWN0ZWRbaW5kZXhdKTsKKyAgICAgICAgICAg
IGlmIChpbmRleCArIDEgPCBleHBlY3RlZC5sZW5ndGgpCisgICAgICAgICAgICAgICAgbXNnICs9
ICIsICI7CisgICAgICAgIH0KKyAgICAgICAgbXNnICs9ICJdLCB3YXMgIiArIHd0dS5nbEVudW1U
b1N0cmluZyhnbCwgYWN0dWFsKTsKKyAgICAgICAgdGVzdEZhaWxlZChtc2cpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHZhciBtc2cgPSAiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBnb3QgIiArIHd0
dS5nbEVudW1Ub1N0cmluZyhnbCwgYWN0dWFsKSArCisgICAgICAgICAgICAgICAgICAiIGFzIGV4
cGVjdGVkIjsKKyAgICAgICAgdGVzdFBhc3NlZChtc2cpOworICAgIH0KK30KKworZnVuY3Rpb24g
Y2hlY2tUZXh0dXJlTGV2ZWxDb2xvcih0ZXh0dXJlLCBsZXZlbCwgbGV2ZWxfd2lkdGgsIGxldmVs
X2hlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29sb3IpIHsKKyAgICB2YXIgZmJvID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZibyk7CisgICAgdmFyIGNvbG9yX3JlbmRlcmFibGVfdGV4ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGNvbG9yX3JlbmRlcmFibGVf
dGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCBsZXZl
bF93aWR0aCwgbGV2ZWxfaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxs
KTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIGNvbG9yX3JlbmRlcmFibGVfdGV4LCAwKTsKKyAg
ICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOworCisgICAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9CQVNFX0xFVkVMLCBsZXZlbCk7CisgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BWF9MRVZFTCwgbGV2ZWwpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFS
RVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFH
X0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQRUFUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5SRVBFQVQpOworICAgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgY29sb3IpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZShjb2xvcl9yZW5k
ZXJhYmxlX3RleCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkNoZWNrIHRleHR1cmUgbGV2ZWwgY29sb3Ig
c2hvdWxkIGdlbmVyYXRlIG5vIEdMIGVycm9ycy4iKTsKK30KKworZnVuY3Rpb24gdGVzdENoYW5n
ZVRhcmdldFRleHR1cmVMZXZlbFNpemUoKSB7CisgICAgZGVidWcoIiIpOworICAgIHZhciBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgIHd0dS5maWxsVGV4dHVyZShnbCwgdGV4dHVyZSwgNjQsIDY0LCBbMjU1LCAwLCAwLCAyNTVd
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBnbC5SR0JBOCk7CisgICAgZ2wuZ2VuZXJh
dGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJl
LCAxKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOwor
CisgICAgLy8gZmJvIHNvdXJjZSB0ZXh0dXJlIGlzIHx0ZXh0dXJlfCBsZXZlbCAxLCAzMngzMi4g
VGFyZ2V0IGlzIHx0ZXh0dXJlfCBsZXZlbCAyLCA2NHg2NC4KKyAgICAvLyBPbmx5IG9uZSBxdWFy
dGVyIG9mIHRoZSB0YXJnZXQgNjR4NjQgd2lsbCBjb21lIGZyb20gdGhlIHNvdXJjZS4KKyAgICAv
LyBJbXBsZW1lbnRhdGlvbnMgbWF5IGluc2VydCBpbnRlcm5hbCBjb21tYW5kcyBiZWZvcmUgY29w
eWluZyBvdmVyIDMyeDMyIGluIG9yZGVyIHRvCisgICAgLy8gaW5pdGlhbGl6ZSB1bmRlZmluZWQg
dGhyZWUgcXVhcnRlcnMgdG8gMCBhcyBXZWJHTCBzcGVjIHJlcXVpcmVzLiBUaGlzIHdpbGwgYWN0
dWFsbHkgY3JlYXRlCisgICAgLy8gYSA2NHg2NCBpbWFnZSBhdCBsZXZlbCAyIGFuZCBtYWtlIHRo
ZSBmYm8gaW5jb21wbGV0ZSwgdGh1cywgdGhlIGNvcHlpbmcgd2lsbCBmYWlsLgorICAgIGdsLmNv
cHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDIsIGdsLlJHQkE4LCAwLCAwLCA2NCwgNjQsIDAp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY29weVRleEltYWdl
MkQgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgY2hlY2tGcmFtZWJ1ZmZlcihbZ2wuRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXSk7CisKKyAgICBjaGVja1RleHR1cmVMZXZlbENvbG9y
KHRleHR1cmUsIDIsIDY0LCA2NCwgMCwgMCwgMzIsIDMyLCBbMjU1LCAwLCAwLCAyNTVdKTsKKyAg
ICBjaGVja1RleHR1cmVMZXZlbENvbG9yKHRleHR1cmUsIDIsIDY0LCA2NCwgMCwgMzIsIDY0LCAz
MiwgWzAsIDAsIDAsIDBdKTsKKyAgICBjaGVja1RleHR1cmVMZXZlbENvbG9yKHRleHR1cmUsIDIs
IDY0LCA2NCwgMzIsIDMyLCAzMiwgMzIsIFswLCAwLCAwLCAwXSk7CisKKyAgICBnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYm8pOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJUZXN0IHNob3VsZCBnZW5lcmF0ZSBu
byBHTCBlcnJvcnMuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RDaGFuZ2VUYXJnZXRUZXh0dXJlTGV2
ZWxGb3JtYXQoKSB7CisgICAgZGVidWcoIiIpOworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsK
KworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHd0dS5maWxsVGV4
dHVyZShnbCwgdGV4dHVyZSwgNjQsIDY0LCBbMjU1LCAwLCAwLCAyNTVdLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBnbC5SR0JBOCk7CisgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVY
VFVSRV8yRCk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAxKTsKKyAgICBjaGVj
a0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOworCisgICAgLy8gVXNpbmcg
TFVOSU1BTkNFX0FMUEhBIGZvcm1hdCBtYXkgdHJpZ2dlciBpbXBsZW1lbnRhdGlvbnMnIGVtdWxh
dGlvbiBjb2RlIHBhdGgKKyAgICAvLyBvbiBkZXNrdG9wIGNvcmUgcHJvZmlsZSBHTCwgd2hpY2gg
bWlnaHQgY2hhbmdlIGxldmVsIDIgaW1hZ2UgZGVmaW5pdGlvbiBmaXJzdAorICAgIC8vIGFuZCBt
YWtlIHRoZSBmYm8gaW5jb21wbGV0ZSwgdGh1cywgdGhlIGFjdHVhbCBjb3B5aW5nIHdpbGwgZmFp
bC4KKyAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAyLCBnbC5MVU1JTkFOQ0Vf
QUxQSEEsIDAsIDAsIDE2LCAxNiwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgc3VjY2VlZC4iKTsKKyAgICBjaGVja0Zy
YW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRdKTsKKworICAg
IGNoZWNrVGV4dHVyZUxldmVsQ29sb3IodGV4dHVyZSwgMiwgMTYsIDE2LCAwLCAwLCAxNiwgMTYs
IFsyNTUsIDI1NSwgMjU1LCAyNTVdKTsKKworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7
CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlRlc3Qgc2hvdWxkIGdlbmVyYXRlIG5vIEdMIGVycm9ycy4iKTsK
K30KKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3Qg
ZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMi
KTsKKyAgICB0ZXN0Q2hhbmdlVGFyZ2V0VGV4dHVyZUxldmVsU2l6ZSgpOworICAgIHRlc3RDaGFu
Z2VUYXJnZXRUZXh0dXJlTGV2ZWxGb3JtYXQoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvbWlzYy9jb3B5LXRleHR1cmUtaW1hZ2Utd2ViZ2wtc3BlY2lmaWMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9taXNjL2NvcHktdGV4dHVyZS1pbWFnZS13ZWJnbC1zcGVjaWZpYy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFlOTY5ZTA3OTVmYWZlODZmMGNhYTA2ZGRiNmZjNDMyNzZlYjE5YTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvbWlzYy9jb3B5LXRleHR1cmUtaW1hZ2Utd2ViZ2wtc3BlY2lmaWMuaHRt
bApAQCAtMCwwICsxLDMwMyBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29weVRleEltYWdlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25h
bGl0eSBvZiBjb3B5VGV4SW1hZ2UuIik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
ImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworCitmdW5jdGlvbiBjb3B5dGV4c3ViaW1hZ2UzZF9p
bnZhbGlkX29wZXJhdGlvbl9mZWVkYmFja2xvb3BzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVGVzdGluZyBjb3B5dGV4c3ViaW1hZ2UzZF9pbnZhbGlkX29wZXJhdGlvbl9mZWVkYmFj
a2xvb3BzIik7CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZSk7CisgICAgdmFyIHVpbnQ4ID0gbmV3
IFVpbnQ4QXJyYXkoMzIpOworICAgIHZhciBsYXllciA9IDA7CisgICAgdmFyIHdpZHRoID0gMjsK
KyAgICB2YXIgaGVpZ2h0ID0gMjsKKyAgICB2YXIgZGVwdGggPSAyOworICAgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKworICAgIHZhciBmYm8gPSBnbC5jcmVh
dGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmUsIDAsIGxheWVyKTsKKyAgICBpZiAoZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKKyAgICAgICAgZ2wuY29weVRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwg
MCwgbGF5ZXIsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImZyYW1lYnVmZmVy
IG5vdCBjb21wbGV0ZSIpOworICAgIH0KKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleHR1cmUpOworfTsKKworZnVuY3Rpb24gY29weXRleHN1YmltYWdlM2Rf
dmFsaWRfb3BlcmF0aW9uX2RpZmZfbGV2ZWwoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJUZXN0aW5nIGNvcHl0ZXhzdWJpbWFnZTNkX3ZhbGlkX29wZXJhdGlvbl9kaWZmX2xldmVsIik7
CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZSk7CisgICAgdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJy
YXkoMzIpOworICAgIHZhciBsZXZlbDEgPSAwOworICAgIHZhciBsZXZlbDIgPSAxOworICAgIHZh
ciB3aWR0aCA9IDI7CisgICAgdmFyIGhlaWdodCA9IDI7CisgICAgdmFyIGRlcHRoID0gMjsKKyAg
ICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgZ2wuZ2Vu
ZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8zRCk7CisKKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7
CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCB0ZXh0dXJlLCBsZXZlbDEsIDApOworICAgIGlmIChnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbDIsIDAs
IDAsIDAsIDAsIDAsIHdpZHRoLzIsIGhlaWdodC8yKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhJbWFnZTNEIHNob3VsZCBzdWNjZWVkLiIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZSIp
OworICAgIH0KKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7
CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmUpOworfTsKKworZnVuY3Rpb24gY29weXRleHN1YmltYWdlM2RfdmFsaWRfb3BlcmF0aW9u
X2RpZmZfbGF5ZXIoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIGNvcHl0
ZXhzdWJpbWFnZTNkX3ZhbGlkX29wZXJhdGlvbl9kaWZmX2xheWVyIik7CisgICAgdmFyIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8z
RCwgdGV4dHVyZSk7CisgICAgdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoMzIpOworICAgIHZh
ciBsYXllcjEgPSAwOworICAgIHZhciBsYXllcjIgPSAxOworICAgIHZhciB3aWR0aCA9IDI7Cisg
ICAgdmFyIGhlaWdodCA9IDI7CisgICAgdmFyIGRlcHRoID0gMjsKKyAgICBnbC50ZXhJbWFnZTNE
KGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisKKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
byk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLCAwLCBsYXllcjEpOworICAgIGlmIChnbC5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVU
RSkgeworICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAw
LCBsYXllcjIsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleEltYWdlM0Qgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZnJhbWVidWZmZXIgbm90IGNvbXBsZXRlIik7
CisgICAgfQorCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsK
KyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
dHVyZSk7Cit9CisKK2Z1bmN0aW9uIGNvcHl0ZXhzdWJpbWFnZTNkX3RleHR1cmVfd3JvbmdseV9p
bml0aWFsaXplZCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgY29weXRl
eHN1YmltYWdlM2RfdGV4dHVyZV93cm9uZ2x5X2luaXRpYWxpemVkIik7CisgICAgdmFyIHRleHR1
cmUgPSBbXTsKKyAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHRleHR1
cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgdmFyIGxheWVyID0gMDsKKyAgICB2YXIg
d2lkdGggPSAyOworICAgIHZhciBoZWlnaHQgPSAyOworICAgIHZhciBkZXB0aCA9IDI7CisgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgdmFyIHVpbnQg
PSBuZXcgVWludDhBcnJheShbMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgw
NywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgwQywgMHgwRCwgMHgwRSwgMHgwRiwgMHgxMF0p
OworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhl
aWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludCk7CisKKyAgICB2YXIgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdLCAwKTsK
KyAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wu
RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8zRCwgdGV4dHVyZVsxXSk7CisgICAgICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzNE
LCAxLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgICAgICBnbC5jb3B5VGV4
U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAwLCBsYXllciwgMCwgMCwgd2lkdGgsIGhl
aWdodCk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVsxXSwgMCwgbGF5ZXIpOworICAgICAgICB2
YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgICAgICBn
bC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGJ5dGVzKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJyZWFkcGl4ZWwgc2hvdWxkIHN1Y2NlZWQuIik7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4
IDwgd2lkdGggKiBoZWlnaHQgKiA0OyB4KyspIHsKKyAgICAgICAgICAgIGlmIChieXRlc1t4XSAh
PSB1aW50W3hdKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiYnl0ZSBjb21wYXJpc29u
IGZhaWx1cmUsIGJ5dGUgYXQgIisgeCArICIgd2FzICIgKyBieXRlc1t4XSArCisgICAgICAgICAg
ICAgICAgIiwgc2hvdWxkIGJlICIgKyB1aW50W3hdKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWls
ZWQoImZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZSIpOworICAgIH0KKworICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
M0QsIG51bGwpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7
CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmVbMF0pOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7Cit9OworCitmdW5j
dGlvbiBjb3B5dGV4c3ViaW1hZ2UzZF9vdXRfb2ZfYm91bmRzX3Rlc3RfaGVscGVyKHh4LCB5eSwg
Y29weVdpZHRoLCBjb3B5SGVpZ2h0KSB7CisgICAgdmFyIHRleHR1cmUgPSBbXTsKKyAgICB0ZXh0
dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgdmFyIGxheWVyID0gMDsKKyAgICB2YXIgd2lkdGggPSAyOworICAgIHZh
ciBoZWlnaHQgPSAyOworICAgIHZhciBkZXB0aCA9IDI7CisgICAgdmFyIHdpZHRoMiA9IDQ7Cisg
ICAgdmFyIGhlaWdodDIgPSA0OworICAgIHZhciB4b2Zmc2V0ID0gMDsKKyAgICB2YXIgeW9mZnNl
dCA9IDA7CisgICAgdmFyIHVpbnQgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWludC5sZW5ndGg7IGkrKykgeworICAgICAgICB1
aW50W2ldID0gMHgwMTsKKyAgICB9CisgICAgdmFyIHVpbnQyID0gbmV3IFVpbnQ4QXJyYXkod2lk
dGgyICogaGVpZ2h0MiAqIGRlcHRoICogNCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aW50
Mi5sZW5ndGg7IGkrKykgeworICAgICAgICB1aW50MltpXSA9IDB4RkY7CisgICAgfQorCisgICAg
dmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBmYm8pOworCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4dHVyZVswXSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50KTsK
KyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0sIDApOworICAgIGlmIChnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURSkgeworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXh0dXJlWzFd
KTsKKyAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBLCB3aWR0
aDIsIGhlaWdodDIsIGRlcHRoLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50Mik7
CisgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIHhvZmZzZXQs
IHlvZmZzZXQsIGxheWVyLCB4eCwgeXksIGNvcHlXaWR0aCwgY29weUhlaWdodCk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXNpbmcgY29weVRleFN1Yklt
YWdlM0Q6IHggPSAiICsgeHggKyAiLCB5ID0gIiArIHl5ICsgIiB3aWR0aCA9ICIgKyBjb3B5V2lk
dGggKyAiLCBoZWlnaHQgPSAiICsgY29weUhlaWdodCk7CisKKyAgICAgICAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0
dXJlWzFdLCAwLCBsYXllcik7CisgICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHdp
ZHRoMiAqIGhlaWdodDIgKiA0KTsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aDIs
IGhlaWdodDIsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ5dGVzKTsKKyAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZWFkcGl4ZWwgc2hvdWxkIHN1Y2Nl
ZWQuIik7CisKKyAgICAgICAgdmFyIHNvdXJjZVggPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIHZh
ciBzb3VyY2VZID0gbmV3IE9iamVjdCgpOworICAgICAgICBDbGlwKHh4LCBjb3B5V2lkdGgsIHdp
ZHRoLCBzb3VyY2VYKTsKKyAgICAgICAgQ2xpcCh5eSwgY29weUhlaWdodCwgaGVpZ2h0LCBzb3Vy
Y2VZKTsKKyAgICAgICAgdmFyIGRlc3RYID0gc291cmNlWC5zdGFydCAtIHh4ICsgeG9mZnNldDsK
KyAgICAgICAgdmFyIHJhbmdlWCA9IHNvdXJjZVgucmFuZ2U7CisgICAgICAgIHZhciBkZXN0WSA9
IHNvdXJjZVkuc3RhcnQgLSB5eSArIHlvZmZzZXQ7CisgICAgICAgIHZhciByYW5nZVkgPSBzb3Vy
Y2VZLnJhbmdlOworICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDI7IHkrKykgewor
ICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDIgKiA0OyB4KyspIHsKKyAgICAg
ICAgICAgICAgICB2YXIgY3VycmVudCA9IHkgKiBoZWlnaHQyICogNCArIHg7CisgICAgICAgICAg
ICAgICAgLy8gcGl4ZWxzIGNvcGllZCBmcm9tIHJlYWQgZnJhbWVidWZmZXIgc2hvdWxkIGJlIDB4
MDEKKyAgICAgICAgICAgICAgICBpZiAoeCA+PSBkZXN0WCAqIDQgJiYgeCA8IChkZXN0WCArIHJh
bmdlWCkgKiA0ICYmIHkgPj0gZGVzdFkgJiYgeSA8IGRlc3RZICsgcmFuZ2VZKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChieXRlc1tjdXJyZW50XSAhPSAweDAxKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJieXRlIGNvbXBhcmlzb24gZmFpbHVyZSwgYnl0ZSBhdCAi
KyAoY3VycmVudCkgKyAiIHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzW2N1
cnJlbnRdICsiLCBzaG91bGQgYmUgMSIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gcGl4ZWxzIG91dC1v
Zi1ib3VuZHMgc2hvdWxkIGJlIHVudG91Y2hlZAorICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChieXRlc1tjdXJyZW50XSAhPSAweEZGKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJieXRlIGNvbXBhcmlzb24gZmFpbHVyZSwgYnl0
ZSBhdCAiKyAoY3VycmVudCkgKyAiIHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5
dGVzW2N1cnJlbnRdICsgIiwgc2hvdWxkIGJlIDI1NSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAvLyBUZXN0IGZhaWxlZDsgYWJvcnQKKyAgICAgICAgICAg
IGlmICh4IDwgd2lkdGgyICogNCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZnJhbWVi
dWZmZXIgbm90IGNvbXBsZXRlIik7CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgbnVsbCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgbnVsbCk7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5k
ZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7
CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKK30KKworZnVuY3Rpb24gY29weXRl
eHN1YmltYWdlM2Rfb3V0X29mX2JvdW5kcygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlRlc3QgcGl4ZWxzIG91dHNpZGUgb2YgcmVhZCBmcmFtZWJ1ZmZlciBmb3IgQ29weVRleFN1Yklt
YWdlM0QiKTsKKworICAgIGZvcih2YXIgaT0wOyBpIDwgdGVzdGxpc3QubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgY29weXRleHN1YmltYWdlM2Rfb3V0X29mX2JvdW5kc190ZXN0X2hlbHBlcih0ZXN0
bGlzdFtpXVswXSwgdGVzdGxpc3RbaV1bMV0sIHRlc3RsaXN0W2ldWzJdLCB0ZXN0bGlzdFtpXVsz
XSk7CisgICAgfQorfTsKKworLyoqCisgKiBUaGlzIGFycmF5IGRlZmluZXMgc29tZSBjb3B5IGFy
ZWFzIGZvciBDb3B5VGV4U3ViSW1hZ2UzRC4KKyAqIEEgY29weSBhcmVhIGlzIGRlZmluZWQgYnkg
eCBjb29yZGluYXRlLCB5IGNvb3JkaW5hdGUsIGNvcHlXaWR0aCBhbmQgY29weUhlaWdodC4KKyAq
IHRoZSBzb3VyY2UgcmVhZCBmcmFtZWJ1ZmZlciBpcyAoMCwgMCwgMiwgMikuCisgKi8KK3ZhciB0
ZXN0bGlzdCA9IFsKKyAgICBbLTEsIC0xLCA0LCA0XSwKKworICAgIFswLCAwLCAzLCAzXSwKKyAg
ICBbLTEsIC0xLCAzLCAzXSwKKyAgICBbLTEsIDAsIDMsIDNdLAorICAgIFswLCAtMSwgMywgM10s
CisKKyAgICBbMCwgMCwgMiwgM10sCisgICAgWzAsIDAsIDMsIDJdLAorICAgIFstMSwgMCwgMywg
Ml0sCisgICAgWzAsIC0xLCAyLCAzXSwKKworICAgIFstMiwgLTIsIDMsIDNdLAorICAgIFstMiwg
MSwgMywgM10sCisgICAgWzEsIC0yLCAzLCAzXSwKKyAgICBbMSwgMSwgMywgM10sCisKKyAgICBb
MiAsIDIgLDMsIDNdCitdOworCisKK2Z1bmN0aW9uIENsaXAoc3RhcnQsIHJhbmdlLCBzb3VyY2VS
YW5nZSwgdGFyZ2V0KSB7CisgICAgaWYgKHN0YXJ0IDwgMCkgeworICAgICAgICByYW5nZSArPSBz
dGFydDsKKyAgICAgICAgc3RhcnQgPSAwOworICAgIH0KKyAgICB2YXIgZW5kID0gc3RhcnQgKyBy
YW5nZTsKKyAgICBpZihlbmQgPiBzb3VyY2VSYW5nZSkgeworICAgICAgICByYW5nZSAtPSBlbmQg
LSBzb3VyY2VSYW5nZTsKKyAgICB9CisgICAgdGFyZ2V0LnN0YXJ0ID0gc3RhcnQ7CisgICAgdGFy
Z2V0LnJhbmdlID0gcmFuZ2U7Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJH
TCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldl
YkdMIGNvbnRleHQgZXhpc3RzIik7CisgICAgY29weXRleHN1YmltYWdlM2RfaW52YWxpZF9vcGVy
YXRpb25fZmVlZGJhY2tsb29wcygpOworICAgIGNvcHl0ZXhzdWJpbWFnZTNkX3ZhbGlkX29wZXJh
dGlvbl9kaWZmX2xldmVsKCk7CisgICAgY29weXRleHN1YmltYWdlM2RfdmFsaWRfb3BlcmF0aW9u
X2RpZmZfbGF5ZXIoKTsKKyAgICBjb3B5dGV4c3ViaW1hZ2UzZF90ZXh0dXJlX3dyb25nbHlfaW5p
dGlhbGl6ZWQoKTsKKyAgICBjb3B5dGV4c3ViaW1hZ2UzZF9vdXRfb2ZfYm91bmRzKCk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvY29weS10ZXh0dXJlLWltYWdlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvbWlzYy9jb3B5LXRleHR1cmUtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjkxMWJk
MTU4M2JlMTdlMDJiMmQ5MzA1MmU3YzgyMGU1OWEwOTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvY29weS10ZXh0dXJlLWltYWdlLmh0bWwKQEAgLTAsMCArMSwyNDkgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdM
IENvcHlUZXhJbWFnZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBjb3B5VGV4SW1hZ2Uy
RC4iKTsKK2RlYnVnKCIiKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBs
ZSIsIHVuZGVmaW5lZCwgMik7CisKK2Z1bmN0aW9uIGVudW1Ub1N0cmluZyh2YWx1ZSkgeworICAg
IHJldHVybiB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gY2hl
Y2tGcmFtZWJ1ZmZlcihleHBlY3RlZCkgeworICAgIHZhciBhY3R1YWwgPSBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICBpZiAoZXhwZWN0ZWQuaW5kZXhPZihh
Y3R1YWwpIDwgMCkgeworICAgICAgICB2YXIgbXNnID0gImNoZWNrRnJhbWVidWZmZXJTdGF0dXMg
ZXhwZWN0cyBbIjsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGV4cGVjdGVk
Lmxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgbXNnICs9IHd0dS5nbEVudW1Ub1N0cmlu
ZyhnbCwgZXhwZWN0ZWRbaW5kZXhdKTsKKyAgICAgICAgICAgIGlmIChpbmRleCArIDEgPCBleHBl
Y3RlZC5sZW5ndGgpCisgICAgICAgICAgICAgICAgbXNnICs9ICIsICI7CisgICAgICAgIH0KKyAg
ICAgICAgbXNnICs9ICJdLCB3YXMgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgYWN0dWFsKTsK
KyAgICAgICAgdGVzdEZhaWxlZChtc2cpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBtc2cg
PSAiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBnb3QgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwg
YWN0dWFsKSArCisgICAgICAgICAgICAgICAgICAiIGFzIGV4cGVjdGVkIjsKKyAgICAgICAgdGVz
dFBhc3NlZChtc2cpOworICAgIH0KK30KKwordmFyIHRlc3RJbnRlcm5hbGZvcm1hdCA9IGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgZ29vZFVub3JtRm9ybWF0cyA9IFsKKyAgICAgICAgIlJHQiIsCisg
ICAgICAgICJSR0JBIiwKKyAgICAgICAgIkxVTUlOQU5DRV9BTFBIQSIsCisgICAgICAgICJMVU1J
TkFOQ0UiLAorICAgICAgICAiQUxQSEEiLAorICAgICAgICAiUjgiLAorICAgICAgICAiUkc4IiwK
KyAgICAgICAgIlJHQjgiLAorICAgICAgICAiUkdCQTgiLAorICAgIF07CisgICAgdmFyIGdvb2RV
bm9ybUZvcm1hdHNXaXRoVW5tYXRjaGVkQ29tcG9uZW50U2l6ZXMgPSBbCisgICAgICAgICJSR0I1
NjUiLAorICAgICAgICAiUkdCQTQiLAorICAgICAgICAiUkdCNV9BMSIsCisgICAgICAgICJSR0Ix
MF9BMiIsCisgICAgXTsKKyAgICB2YXIgZ29vZFNSR0JGb3JtYXRzID0gWworICAgICAgICAiU1JH
QjgiLAorICAgICAgICAiU1JHQjhfQUxQSEE4IiwKKyAgICBdOworICAgIHZhciBnb29kSW50Rm9y
bWF0cyA9IFsKKyAgICAgICAgIlIzMkkiLAorICAgICAgICAiUkczMkkiLAorICAgICAgICAiUkdC
MzJJIiwKKyAgICAgICAgIlJHQkEzMkkiLAorICAgIF07CisgICAgdmFyIGdvb2RJbnRGb3JtYXRz
V2l0aFVubWF0Y2hlZENvbXBvbmVudFNpemVzID0gWworICAgICAgICAiUjhJIiwKKyAgICAgICAg
IlIxNkkiLAorICAgICAgICAiUkc4SSIsCisgICAgICAgICJSRzE2SSIsCisgICAgICAgICJSR0I4
SSIsCisgICAgICAgICJSR0IxNkkiLAorICAgICAgICAiUkdCQThJIiwKKyAgICAgICAgIlJHQkEx
NkkiLAorICAgIF07CisgICAgdmFyIGdvb2RVbnNpZ25lZEludEZvcm1hdHMgPSBbCisgICAgICAg
ICJSMzJVSSIsCisgICAgICAgICJSRzMyVUkiLAorICAgICAgICAiUkdCMzJVSSIsCisgICAgICAg
ICJSR0JBMzJVSSIsCisgICAgXTsKKyAgICB2YXIgZ29vZFVuc2lnbmVkSW50Rm9ybWF0c1dpdGhV
bm1hdGNoZWRDb21wb25lbnRTaXplcyA9IFsKKyAgICAgICAgIlI4VUkiLAorICAgICAgICAiUjE2
VUkiLAorICAgICAgICAiUkc4VUkiLAorICAgICAgICAiUkcxNlVJIiwKKyAgICAgICAgIlJHQjEw
X0EyVUkiLAorICAgICAgICAiUkdCOFVJIiwKKyAgICAgICAgIlJHQjE2VUkiLAorICAgICAgICAi
UkdCQThVSSIsCisgICAgICAgICJSR0JBMTZVSSIsCisgICAgXTsKKyAgICBjb25zdCBzbm9ybUZv
cm1hdHMgPSBbCisgICAgICAgICJSOF9TTk9STSIsCisgICAgICAgICJSRzhfU05PUk0iLAorICAg
ICAgICAiUkdCOF9TTk9STSIsCisgICAgICAgICJSR0JBOF9TTk9STSIsCisgICAgXTsKKyAgICBj
b25zdCBmbG9hdDE2Rm9ybWF0cyA9IFsKKyAgICAgICAgIlIxNkYiLAorICAgICAgICAiUkcxNkYi
LAorICAgICAgICAiUkdCMTZGIiwKKyAgICAgICAgIlJHQkExNkYiLAorICAgIF07CisgICAgY29u
c3QgZmxvYXQzMkZvcm1hdHMgPSBbCisgICAgICAgICJSMzJGIiwKKyAgICAgICAgIlJHMzJGIiwK
KyAgICAgICAgIlJHQjMyRiIsCisgICAgICAgICJSR0JBMzJGIiwKKyAgICBdOworICAgIGNvbnN0
IGZsb2F0MTFGb3JtYXRzID0gWworICAgICAgICAiUjExRl9HMTFGX0IxMEYiLAorICAgIF07Cisg
ICAgY29uc3QgZGVwdGhBbmRPclN0ZW5jaWxGb3JtYXRzID0gWworICAgICAgICAiREVQVEhfQ09N
UE9ORU5UMTYiLAorICAgICAgICAiREVQVEhfQ09NUE9ORU5UMjQiLAorICAgICAgICAiREVQVEhf
Q09NUE9ORU5UMzJGIiwKKyAgICAgICAgIkRFUFRIMjRfU1RFTkNJTDgiLAorICAgIF07CisKKyAg
ICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKworICAgIGZ1bmN0aW9uIHRlc3RGb3JtYXQoaW50ZXJu
YWxmb3JtYXQsIHNyY1RleEZvcm1hdHNUeXBlcywgZmJvQXR0YWNobWVudFR5cGUsIGV4cGVjdGVk
LCBtc2cpIHsKKyAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
ICAgIHZhciBzcmNUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCBzcmNUZXh0dXJlKTsKKyAgICAgICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbFtzcmNUZXhGb3JtYXRzVHlwZXMuaW50ZXJuYWxmb3JtYXRd
LCA2NCwgNjQsIDAsIHNyY1RleEZvcm1hdHNUeXBlcy5mb3JtYXQsIHNyY1RleEZvcm1hdHNUeXBl
cy50eXBlLCBudWxsKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
ZmJvQXR0YWNobWVudFR5cGUsIGdsLlRFWFRVUkVfMkQsIHNyY1RleHR1cmUsIDApOworICAgICAg
ICBjaGVja0ZyYW1lYnVmZmVyKFtnbC5GUkFNRUJVRkZFUl9DT01QTEVURV0pOworCisgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICBnbC5jb3B5
VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbFtpbnRlcm5hbGZvcm1hdF0sIDAsIDAsIDY0
LCA2NCwgMCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGV4cGVjdGVkLCBtc2cg
KyBzcmNUZXhGb3JtYXRzVHlwZXMuaW50ZXJuYWxmb3JtYXQgKyAnPT4nICsgaW50ZXJuYWxmb3Jt
YXQpOworCisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUoc3JjVGV4dHVyZSk7CisgICAgICAgIGds
LmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgfQorCisgICAgZ29vZFVub3JtRm9ybWF0cy5m
b3JFYWNoKGZ1bmN0aW9uKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgIHZhciBzcmNUZXhGb3Jt
YXRzVHlwZXMgPSB7IGludGVybmFsZm9ybWF0OiAiUkdCQSIsIGZvcm1hdDogZ2wuUkdCQSwgdHlw
ZTogZ2wuVU5TSUdORURfQllURSB9OworICAgICAgICB0ZXN0Rm9ybWF0KGludGVybmFsZm9ybWF0
LCBzcmNUZXhGb3JtYXRzVHlwZXMsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5OT19FUlJPUiwg
ImNvcHlUZXhJbWFnZTJEIHNob3VsZCBzdWNjZWVkIGZvciBnb29kIGludGVybmFsZm9ybWF0ICIp
OworICAgICAgICBzcmNUZXhGb3JtYXRzVHlwZXMgPSB7IGludGVybmFsZm9ybWF0OiAiUkdCQTgi
LCBmb3JtYXQ6IGdsLlJHQkEsIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUgfTsKKyAgICAgICAgdGVz
dEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgc3JjVGV4Rm9ybWF0c1R5cGVzLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuTk9fRVJST1IsICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCBmb3Ig
Z29vZCBpbnRlcm5hbGZvcm1hdCAiKTsKKyAgICB9KTsKKyAgICBnb29kVW5vcm1Gb3JtYXRzV2l0
aFVubWF0Y2hlZENvbXBvbmVudFNpemVzLmZvckVhY2goZnVuY3Rpb24oaW50ZXJuYWxmb3JtYXQp
IHsKKyAgICAgICAgdmFyIHNyY1RleEZvcm1hdHNUeXBlcyA9IHsgaW50ZXJuYWxmb3JtYXQ6ICJS
R0JBOCIsIGZvcm1hdDogZ2wuUkdCQSwgdHlwZTogZ2wuVU5TSUdORURfQllURSB9OworICAgICAg
ICB0ZXN0Rm9ybWF0KGludGVybmFsZm9ybWF0LCBzcmNUZXhGb3JtYXRzVHlwZXMsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAi
Y29weVRleEltYWdlMkQgc2hvdWxkIGZhaWwgZm9yIGdvb2QgaW50ZXJuYWxmb3JtYXQgd2l0aCB1
bm1hdGNoZWQgY29tcG9uZW50IHNpemVzICAiKTsKKyAgICB9KTsKKworICAgIGdvb2RTUkdCRm9y
bWF0cy5mb3JFYWNoKGZ1bmN0aW9uKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgIHZhciBzcmNU
ZXhGb3JtYXRzVHlwZXMgPSB7IGludGVybmFsZm9ybWF0OiAiU1JHQjhfQUxQSEE4IiwgZm9ybWF0
OiBnbC5SR0JBLCB0eXBlOiBnbC5VTlNJR05FRF9CWVRFIH07CisgICAgICAgIHRlc3RGb3JtYXQo
aW50ZXJuYWxmb3JtYXQsIHNyY1RleEZvcm1hdHNUeXBlcywgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLk5PX0VSUk9SLCAiY29weVRleEltYWdlMkQgc2hvdWxkIHN1Y2NlZWQgZm9yIGdvb2QgaW50
ZXJuYWxmb3JtYXQgIik7CisgICAgfSk7CisKKyAgICBnb29kSW50Rm9ybWF0cy5mb3JFYWNoKGZ1
bmN0aW9uKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgIHZhciBzcmNUZXhGb3JtYXRzVHlwZXMg
PSB7IGludGVybmFsZm9ybWF0OiAiUkdCQTMySSIsIGZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLCB0
eXBlOiBnbC5JTlQgfTsKKyAgICAgICAgdGVzdEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgc3JjVGV4
Rm9ybWF0c1R5cGVzLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuTk9fRVJST1IsICJjb3B5VGV4
SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCBmb3IgZ29vZCBpbnRlcm5hbGZvcm1hdCAiKTsKKyAgICB9
KTsKKyAgICBnb29kSW50Rm9ybWF0c1dpdGhVbm1hdGNoZWRDb21wb25lbnRTaXplcy5mb3JFYWNo
KGZ1bmN0aW9uKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgIHZhciBzcmNUZXhGb3JtYXRzVHlw
ZXMgPSB7IGludGVybmFsZm9ybWF0OiAiUkdCQTMySSIsIGZvcm1hdDogZ2wuUkdCQV9JTlRFR0VS
LCB0eXBlOiBnbC5JTlQgfTsKKyAgICAgICAgdGVzdEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgc3Jj
VGV4Rm9ybWF0c1R5cGVzLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgImNvcHlUZXhJbWFnZTJEIHNob3VsZCBmYWlsIGZvciBn
b29kIGludGVybmFsZm9ybWF0IHdpdGggdW5tYXRjaGVkIGNvbXBvbmVudCBzaXplcyAiKTsKKyAg
ICB9KTsKKworICAgIGdvb2RVbnNpZ25lZEludEZvcm1hdHMuZm9yRWFjaChmdW5jdGlvbihpbnRl
cm5hbGZvcm1hdCkgeworICAgICAgICB2YXIgc3JjVGV4Rm9ybWF0c1R5cGVzID0geyBpbnRlcm5h
bGZvcm1hdDogIlJHQkEzMlVJIiwgZm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsIHR5cGU6IGdsLlVO
U0lHTkVEX0lOVCB9OworICAgICAgICB0ZXN0Rm9ybWF0KGludGVybmFsZm9ybWF0LCBzcmNUZXhG
b3JtYXRzVHlwZXMsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5OT19FUlJPUiwgImNvcHlUZXhJ
bWFnZTJEIHNob3VsZCBzdWNjZWVkIGZvciBnb29kIGludGVybmFsZm9ybWF0ICIpOworICAgIH0p
OworICAgIGdvb2RVbnNpZ25lZEludEZvcm1hdHNXaXRoVW5tYXRjaGVkQ29tcG9uZW50U2l6ZXMu
Zm9yRWFjaChmdW5jdGlvbihpbnRlcm5hbGZvcm1hdCkgeworICAgICAgICB2YXIgc3JjVGV4Rm9y
bWF0c1R5cGVzID0geyBpbnRlcm5hbGZvcm1hdDogIlJHQkEzMlVJIiwgZm9ybWF0OiBnbC5SR0JB
X0lOVEVHRVIsIHR5cGU6IGdsLlVOU0lHTkVEX0lOVCB9OworICAgICAgICB0ZXN0Rm9ybWF0KGlu
dGVybmFsZm9ybWF0LCBzcmNUZXhGb3JtYXRzVHlwZXMsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAiY29weVRleEltYWdlMkQg
c2hvdWxkIGZhaWwgZm9yIGdvb2QgaW50ZXJuYWxmb3JtYXQgd2l0aCB1bm1hdGNoZWQgY29tcG9u
ZW50IHNpemVzICIpOworICAgIH0pOworCisgICAgc25vcm1Gb3JtYXRzLmZvckVhY2goZnVuY3Rp
b24oaW50ZXJuYWxmb3JtYXQpIHsKKyAgICAgICAgY29uc3Qgc3JjVGV4Rm9ybWF0c1R5cGVzID0g
eyBpbnRlcm5hbGZvcm1hdDogIlJHQkE4IiwgZm9ybWF0OiBnbC5SR0JBLCB0eXBlOiBnbC5VTlNJ
R05FRF9CWVRFIH07CisgICAgICAgIHRlc3RGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIHNyY1RleEZv
cm1hdHNUeXBlcywgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLklOVkFMSURfRU5VTSwgImNvcHlU
ZXhJbWFnZTJEIHNob3VsZCBmYWlsIGZvciBzbm9ybSBpbnRlcm5hbGZvcm1hdCAiKTsKKyAgICB9
KTsKKworICAgIGlmIChnbC5nZXRFeHRlbnNpb24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSkg
eworICAgICAgICBmbG9hdDE2Rm9ybWF0cy5mb3JFYWNoKGZ1bmN0aW9uKGludGVybmFsZm9ybWF0
KSB7CisgICAgICAgICAgICB2YXIgc3JjVGV4Rm9ybWF0c1R5cGVzID0geyBpbnRlcm5hbGZvcm1h
dDogIlJHQkExNkYiLCBmb3JtYXQ6IGdsLlJHQkEsIHR5cGU6IGdsLkZMT0FUIH07CisgICAgICAg
ICAgICB0ZXN0Rm9ybWF0KGludGVybmFsZm9ybWF0LCBzcmNUZXhGb3JtYXRzVHlwZXMsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5OT19FUlJPUiwgImNvcHlUZXhJbWFnZTJEIHNob3VsZCBzdWNj
ZWVkIGZvciBmbG9hdDE2IGludGVybmFsZm9ybWF0ICIpOworICAgICAgICB9KTsKKyAgICAgICAg
ZmxvYXQzMkZvcm1hdHMuZm9yRWFjaChmdW5jdGlvbihpbnRlcm5hbGZvcm1hdCkgeworICAgICAg
ICAgICAgdmFyIHNyY1RleEZvcm1hdHNUeXBlcyA9IHsgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMzJG
IiwgZm9ybWF0OiBnbC5SR0JBLCB0eXBlOiBnbC5GTE9BVCB9OworICAgICAgICAgICAgdGVzdEZv
cm1hdChpbnRlcm5hbGZvcm1hdCwgc3JjVGV4Rm9ybWF0c1R5cGVzLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuTk9fRVJST1IsICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCBmb3IgZmxv
YXQzMiBpbnRlcm5hbGZvcm1hdCAiKTsKKyAgICAgICAgfSk7CisgICAgICAgIGZsb2F0MTFGb3Jt
YXRzLmZvckVhY2goZnVuY3Rpb24oaW50ZXJuYWxmb3JtYXQpIHsKKyAgICAgICAgICAgIHZhciBz
cmNUZXhGb3JtYXRzVHlwZXMgPSB7IGludGVybmFsZm9ybWF0OiAiUjExRl9HMTFGX0IxMEYiLCBm
b3JtYXQ6IGdsLlJHQiwgdHlwZTogZ2wuRkxPQVQgfTsKKyAgICAgICAgICAgIHRlc3RGb3JtYXQo
aW50ZXJuYWxmb3JtYXQsIHNyY1RleEZvcm1hdHNUeXBlcywgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLk5PX0VSUk9SLCAiY29weVRleEltYWdlMkQgc2hvdWxkIHN1Y2NlZWQgZm9yIFIxMUZfRzEx
Rl9CMTBGIGludGVybmFsZm9ybWF0ICIpOworICAgICAgICB9KTsKKworICAgICAgICBmbG9hdDMy
Rm9ybWF0cy5jb25jYXQoZmxvYXQxMUZvcm1hdHMpLmZvckVhY2goZnVuY3Rpb24oaW50ZXJuYWxm
b3JtYXQpIHsKKyAgICAgICAgICAgIHZhciBzcmNUZXhGb3JtYXRzVHlwZXMgPSB7IGludGVybmFs
Zm9ybWF0OiAiUkdCQTE2RiIsIGZvcm1hdDogZ2wuUkdCQSwgdHlwZTogZ2wuRkxPQVQgfTsKKyAg
ICAgICAgICAgIHRlc3RGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIHNyY1RleEZvcm1hdHNUeXBlcywg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAg
ICAgICAgICAgICAiY29weVRleEltYWdlMkQgc2hvdWxkIGZhaWwgZm9yIG5vbi1mbG9hdDE2IGlu
dGVybmFsZm9ybWF0ICh1bm1hdGNoZWQgY29tcG9uZW50IHNpemVzKSAiKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGZsb2F0MTZGb3JtYXRzLmNvbmNhdChmbG9hdDExRm9ybWF0cykuZm9yRWFjaChm
dW5jdGlvbihpbnRlcm5hbGZvcm1hdCkgeworICAgICAgICAgICAgdmFyIHNyY1RleEZvcm1hdHNU
eXBlcyA9IHsgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMzJGIiwgZm9ybWF0OiBnbC5SR0JBLCB0eXBl
OiBnbC5GTE9BVCB9OworICAgICAgICAgICAgdGVzdEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgc3Jj
VGV4Rm9ybWF0c1R5cGVzLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgZmFpbCBm
b3Igbm9uLWZsb2F0MzIgaW50ZXJuYWxmb3JtYXQgKHVubWF0Y2hlZCBjb21wb25lbnQgc2l6ZXMp
ICIpOworICAgICAgICB9KTsKKyAgICAgICAgZmxvYXQxNkZvcm1hdHMuY29uY2F0KGZsb2F0MzJG
b3JtYXRzKS5mb3JFYWNoKGZ1bmN0aW9uKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgICAgICB2
YXIgc3JjVGV4Rm9ybWF0c1R5cGVzID0geyBpbnRlcm5hbGZvcm1hdDogIlIxMUZfRzExRl9CMTBG
IiwgZm9ybWF0OiBnbC5SR0IsIHR5cGU6IGdsLkZMT0FUIH07CisgICAgICAgICAgICB0ZXN0Rm9y
bWF0KGludGVybmFsZm9ybWF0LCBzcmNUZXhGb3JtYXRzVHlwZXMsIGdsLkNPTE9SX0FUVEFDSE1F
TlQwLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgImNvcHlU
ZXhJbWFnZTJEIHNob3VsZCBmYWlsIGZvciBub24tUjExRl9HMTFGX0IxMEYgaW50ZXJuYWxmb3Jt
YXQgKHVubWF0Y2hlZCBjb21wb25lbnQgc2l6ZXMpICIpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBkZXB0aEFuZE9yU3RlbmNpbEZvcm1hdHMuZm9yRWFjaChmdW5jdGlvbihpbnRlcm5hbGZv
cm1hdCkgeworICAgICAgICB2YXIgc3JjVGV4Rm9ybWF0c1R5cGVzID0geyBpbnRlcm5hbGZvcm1h
dDogIkRFUFRIMjRfU1RFTkNJTDgiLCBmb3JtYXQ6IGdsLkRFUFRIX1NURU5DSUwsIHR5cGU6IGds
LlVOU0lHTkVEX0lOVF8yNF84fTsKKyAgICAgICAgdGVzdEZvcm1hdChpbnRlcm5hbGZvcm1hdCwg
c3JjVGV4Rm9ybWF0c1R5cGVzLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAg
ICAgICAgICAgICAgW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAorICAg
ICAgICAgICAgICAgICAgICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgZmFpbCBmb3IgZGVwdGggaW50
ZXJuYWxmb3JtYXQgIik7CisgICAgfSk7CisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUp
OworfQorCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5v
dCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0
cyIpOworICAgIHRlc3RJbnRlcm5hbGZvcm1hdCgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9taXNjL2dlbmVyYXRlLW1pcG1hcC13aXRoLWxhcmdlLWJhc2UtbGV2ZWwuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9taXNjL2dlbmVyYXRlLW1pcG1hcC13aXRoLWxhcmdlLWJhc2UtbGV2ZWwuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMTBjYzBmOTEzZGM1ZDhiMzNkZTI3YmNiNzhjZDUxNTJkYTY3ZDgyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvZ2VuZXJhdGUtbWlwbWFwLXdpdGgtbGFyZ2Ut
YmFzZS1sZXZlbC5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgaWYgR2VuZXJhdGVNaXBtYXAgb24g
aW1tdXRhYmxlIHRleHR1cmUgd2l0aCBsYXJnZSBCQVNFX0xFVkVMIHRyaWdnZXJzIGEgY3Jhc2g8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgY3JidWcuY29tLzkxMzMw
MSIpOworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgbnVsbCwgMik7CitnbC5jbGVhckNvbG9yKDAs
IDEsIDAsIDEpOworCit2YXIgdGFyZ2V0cyA9IFtnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFXzNE
XTsKK2ZvciAodmFyIGlpID0gMDsgaWkgPCB0YXJnZXRzLmxlbmd0aDsgKytpaSkgeworICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgdmFyIHRhcmdldCA9IHRhcmdldHNbaWldOwor
ICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZSh0YXJnZXQs
IHRleCk7CisgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX0JBU0VfTEVWRUws
IDE0MTYzNTQ5MDUpOworICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NQVhf
TEVWRUwsIDUpOworICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUik7CisgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgIGlmICh0YXJnZXQgPT0gZ2wu
VEVYVFVSRV8yRCkKKyAgICBnbC50ZXhTdG9yYWdlMkQodGFyZ2V0LCA1LCBnbC5SOCwgMzIsIDMy
KTsKKyAgZWxzZQorICAgIGdsLnRleFN0b3JhZ2UzRCh0YXJnZXQsIDUsIGdsLlI4LCAzMiwgMzIs
IDMyKTsKKyAgLy8gU2hvdWxkIG5vdCBjcmFzaCBjYWxsaW5nIGdlbmVyYXRlTWlwbWFwLgorICBn
bC5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIC8v
IElmIGNyYXNoZWQsIHJlYWRQaXhlbHMoKSB3b24ndCBiZSBhYmxlIHRvIHdvcmsgY29ycmVjdGx5
LgorICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3Jl
ZW4iLCA1KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2dsLWdldC10ZXgtcGFyYW1ldGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvbWlzYy9nbC1nZXQtdGV4LXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYmUz
ODhkMTRhYTE5Yjk1YTI0YjE2NmE0OGRhYjM4MjFlOGRmYjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvbWlzYy9nbC1nZXQtdGV4LXBhcmFtZXRlci5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldl
YkdMIGdldFRleFBhcmFtZXRlciB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjQiIGhlaWdodD0iNCIgc3R5bGU9IndpZHRo
OiA0MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb250ZXh0VmVy
c2lvbiA9IDI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy9nbC1n
ZXQtdGV4LXBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvaW50ZWdlci1jdWJlbWFwLXNwZWNpZmljYXRpb24tb3JkZXItYnVn
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9pbnRlZ2VyLWN1YmVtYXAtc3BlY2lmaWNhdGlvbi1vcmRl
ci1idWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWVlNzY2MjI3ZTdhOTNiZTNjYjYwZGM4MzFlYzA3MzE1
OTJjODY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvaW50ZWdlci1jdWJlbWFw
LXNwZWNpZmljYXRpb24tb3JkZXItYnVnLmh0bWwKQEAgLTAsMCArMSwyMTYgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEludGVn
ZXIgQ3ViZW1hcCBUZXh0dXJlIFNwZWNpZmljYXRpb24gT3JkZXIgQnVnIFRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxMjgi
IGhlaWdodD0iMTI4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKKyAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICBpbiB2
ZWM0IGFfcG9zaXRpb247CisgIHZvaWQgbWFpbigpeworICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bv
c2l0aW9uOworICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKyAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAv
LyBUaGlzIHByb2dyYW0gc2FtcGxlcyBib3RoIHRleHR1cmVzIGF0IHZhcnlpbmcgTG9kIGFuZCBl
eHBvc2VzCisgIC8vIGJvdGggb2YgdGhlbSwgdGhlIHJlZ3VsYXIgb24gdG9wLCBhbmQgdGhlIHdl
aXJkIG9uIHRoZSBib3R0b20uCisgIC8vIE9uIHRoZSBOVklESUEgZHJpdmVyIHRoZSB0b3AgaXMg
Ym90aCBncmVlbiBhbmQgcmVkIHdoaWxlIHRoZSBib3R0b20KKyAgLy8gaXMgb25seSBncmVlbi4g
VGhpcyBpcyBhIGRyaXZlciBidWcgYmVjYXVzZSBib3RoIHRleHR1cmVzIHNob3VsZCBiZQorICAv
LyBleGFjdGx5IHRoZSBzYW1lLgorICAvLyBJIHRoaW5rIHRoYXQgYmVjYXVzZSBvZiBvdXIgbGV2
ZWwgc3BlY2lmaWNhdGlvbiBvcmRlciB3ZWlyZG5lc3MsIHRoZQorICAvLyBkcml2ZXIgZ2V0cyBj
b25mdXNlZCBhcyB0byB3aGljaCBsZXZlbHMgYXJlIGNvbXBsZXRlIGFuZCB0aGlua3Mgb25seQor
ICAvLyBsZXZlbCAwIGlzIGNvbXBsZXRlLiBUaGVuIHdoZW4gc2FtcGxpbmcgdGhlIHRleHR1cmUg
aXQgY2xhbXBzIHRoZSBzYW1wbGluZworICAvLyB0byBvbmx5IGxldmVsIDAsIHJlc3VsdGluZyBp
biBncmVlbiBmb3IgYWxsIExvZCB2YWx1ZXMuCisgIGxheW91dChsb2NhdGlvbiA9IDApIG91dCB2
ZWM0IGZyYWdDb2xvcjsKKyAgdW5pZm9ybSBoaWdocCBpc2FtcGxlckN1YmUgdGV4UmVndWxhcjsK
KyAgdW5pZm9ybSBoaWdocCBpc2FtcGxlckN1YmUgdGV4V2VpcmQ7CisgIHZvaWQgbWFpbigpIHsK
KyAgICAgIHZlYzIgZnJhZ1BvcyA9IGdsX0ZyYWdDb29yZC54eSAvIHZlYzIoMTI4LjAsIDEyOC4w
KTsKKyAgICAgIGZsb2F0IGxvZCA9IChmcmFnUG9zLnggLSAwLjUpICogMTAuMCArIDAuNTsKKwor
ICAgICAgaXZlYzQgY29sb3JSZWd1bGFyID0gdGV4dHVyZUxvZCh0ZXhSZWd1bGFyLCB2ZWMzKDEu
MCwgMC4wLCAwLjApLCBsb2QpOworICAgICAgaXZlYzQgY29sb3JXZWlyZCA9IHRleHR1cmVMb2Qo
dGV4V2VpcmQsIHZlYzMoMS4wLCAwLjAsIDAuMCksIGxvZCk7CisKKyAgICAgIGlmIChmcmFnUG9z
LnkgPiAwLjUxKSB7CisgICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNCh2ZWMyKGNvbG9yUmVndWxh
ci5yZyksIDAuMCwgMS4wKTsKKyAgICAgIH0gZWxzZSBpZiAoZnJhZ1Bvcy55IDwgMC40OSl7Cisg
ICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNCh2ZWMyKGNvbG9yV2VpcmQucmcpLCAwLjAsIDEuMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICAgIH0KKyAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBh
IGRyaXZlciBidWcgd2hlbiBzcGVjaWZ5aW5nIGludGVnZXIgY3ViZW1hcHMgaW4gd2VpcmQgb3Jk
ZXIiKTsKKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5l
ZCwgMik7CisKK2Z1bmN0aW9uIGNyZWF0ZVRleHR1cmVDdWJlKGxheWVycywgbWF4TGV2ZWwpIHsK
KyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlKTsKKworICAgIGxheWVycy5mb3JFYWNoKGZ1
bmN0aW9uKGxheWVyKSB7CisgICAgICAgIHZhciBsZXZlbCA9IGxheWVyLmxldmVsOworICAgICAg
ICB2YXIgZmFjZSA9IGxheWVyLmZhY2U7CisgICAgICAgIHZhciBjb2xvciA9IGxheWVyLmNvbG9y
OworCisgICAgICAgIHZhciBsZXZlbFNpemUgPSAxIDw8IChtYXhMZXZlbCAtIGxldmVsKTsKKwor
ICAgICAgICB2YXIgYmFja2luZ0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihsZXZlbFNpemUgKiBs
ZXZlbFNpemUgKiAyKTsKKyAgICAgICAgbmV3IEludDE2QXJyYXkoYmFja2luZ0J1ZmZlcikuZmls
bChjb2xvcik7CisgICAgICAgIGdsLnRleEltYWdlMkQoZmFjZSArIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCwgbGV2ZWwsIGdsLlJHOEksIGxldmVsU2l6ZSwgbGV2ZWxTaXplLCAwLCBn
bC5SR19JTlRFR0VSLCBnbC5CWVRFLCBuZXcgSW50OEFycmF5KGJhY2tpbmdCdWZmZXIpKTsKKyAg
ICB9KTsKKworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wu
TkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5U
RVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7
CisKKyAgICByZXR1cm4gdGV4dHVyZTsKK30KKworZnVuY3Rpb24gbWFrZVBlcm11dGVkTGF5ZXJz
KGxheWVycywgcGVybXV0YXRpb24pIHsKKyAgICByZXR1cm4gcGVybXV0YXRpb24ubWFwKGkgPT4g
bGF5ZXJzW2ldKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIga01heExldmVsID0g
NDsKKyAgICB2YXIga0JsYWNrID0gMHgwMDAwOworICAgIHZhciBrR3JlZW4gPSAweDdGMDA7Cisg
ICAgdmFyIGtSZWQgPSAweDAwN0Y7CisKKyAgICAvLyBDcmVhdGUgdHdvIGludGVnZXIgY3ViZW1h
cHMgd2l0aCBncmVlbiBvbiBsZXZlbCAwIGFuZCByZWQgb24gdGhlIG90aGVycy4KKworICAgIC8v
IFRoZSAicmVndWxhciIgY3ViZSBtYXAgaXMgZmlsbGVkIGluIGEgc2Vuc2libGUgbWFubmVyLgor
ICAgIHZhciByZWd1bGFyTGF5ZXJzID0gW107CisgICAgZm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZl
bCA8PSBrTWF4TGV2ZWw7IGxldmVsICsrKSB7CisgICAgICAgIGZvciAodmFyIGZhY2UgPSAwOyBm
YWNlIDwgNjsgZmFjZSArKykgeworICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKKyAgICAg
ICAgICAgICAgICByZWd1bGFyTGF5ZXJzLnB1c2goe2xldmVsOiBsZXZlbCwgZmFjZTogZmFjZSwg
Y29sb3I6IGtHcmVlbn0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBy
ZWd1bGFyTGF5ZXJzLnB1c2goe2xldmVsOiBsZXZlbCwgZmFjZTogZmFjZSwgY29sb3I6IGtSZWR9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSAid2VpcmQi
IGN1YmUgbWFwIGhhcyBhbGwgaXRzID49IDEgbGV2ZWxzIGZpbGxlZCwgdGhlbiB0aGUgZmlyc3Qg
bGV2ZWwsCisgICAgLy8gdGhlbiB0aGUgPj0gMSBsZXZlbHMgYWdhaW4gYnV0IGZvciBvbmUgZmFj
ZS4gVGhpcyByZXBsaWNhdGVzIHdoYXQgdGhlCisgICAgLy8gQ2hyb21pdW0gY29tbWFuZCBidWZm
ZXIgImN1YmVtYXAgY29tcGxldGVuZXNzIiB3b3JrYXJvdW5kIGlzIGRvaW5nLgorICAgIHZhciB3
ZWlyZExheWVycyA9IFtdOworICAgIGZvciAodmFyIGxldmVsID0gMTsgbGV2ZWwgPD0ga01heExl
dmVsOyBsZXZlbCArKykgeworICAgICAgICBmb3IgKHZhciBmYWNlID0gMDsgZmFjZSA8IDU7IGZh
Y2UgKyspIHsKKyAgICAgICAgICAgIHdlaXJkTGF5ZXJzLnB1c2goe2xldmVsOiBsZXZlbCwgZmFj
ZTogZmFjZSwgY29sb3I6IGtCbGFja30pOworICAgICAgICB9CisgICAgICAgIHdlaXJkTGF5ZXJz
LnB1c2goe2xldmVsOiBsZXZlbCwgZmFjZTogNSwgY29sb3I6IGtSZWR9KTsKKyAgICB9CisgICAg
Zm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8PSBrTWF4TGV2ZWw7IGxldmVsICsrKSB7CisgICAg
ICAgIGZvciAodmFyIGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSArKykgeworICAgICAgICAgICAg
aWYgKGxldmVsID09IDApIHsKKyAgICAgICAgICAgICAgICB3ZWlyZExheWVycy5wdXNoKHtsZXZl
bDogbGV2ZWwsIGZhY2U6IGZhY2UsIGNvbG9yOiBrR3JlZW59KTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWYgKGZhY2UgIT0gNSkgeworICAgICAgICAgICAgICAgICAg
ICB3ZWlyZExheWVycy5wdXNoKHtsZXZlbDogbGV2ZWwsIGZhY2U6IGZhY2UsIGNvbG9yOiBrUmVk
fSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgdmFyIHJlZ3VsYXJUZXggPSBjcmVhdGVUZXh0dXJlQ3ViZShyZWd1bGFyTGF5ZXJzLCBr
TWF4TGV2ZWwpOworCisgICAgdmFyIHNhbXBsZVByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGds
LCBbInZzIiwgImZzIl0sIFsiYV9wb3NpdGlvbiJdKTsKKyAgICB2YXIgcmVndWxhckxvY2F0aW9u
ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHNhbXBsZVByb2dyYW0sICJ0ZXhSZWd1bGFyIik7Cisg
ICAgdmFyIHdlaXJkTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oc2FtcGxlUHJvZ3Jh
bSwgInRleFdlaXJkIik7CisKKyAgICB3dHUuc2V0dXBRdWFkKGdsLCBnbC5nZXRBdHRyaWJMb2Nh
dGlvbihzYW1wbGVQcm9ncmFtLCAiYV9wb3NpdGlvbiIpKTsKKworICAgIGdsLnVuaWZvcm0xaShy
ZWd1bGFyTG9jYXRpb24sIDApOworICAgIGdsLnVuaWZvcm0xaSh3ZWlyZExvY2F0aW9uLCAxKTsK
KworICAgIGZ1bmN0aW9uIHRlc3RjYXNlKGxheWVyczEsIGNhc2VuYW1lKSB7CisgICAgICAgIHZh
ciB0ZXgxID0gY3JlYXRlVGV4dHVyZUN1YmUobGF5ZXJzMSwga01heExldmVsKTsKKworICAgICAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV9DVUJFX01BUCwgcmVndWxhclRleCk7CisgICAgICAgIGdsLmFjdGl2ZVRleHR1
cmUoZ2wuVEVYVFVSRTEpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCB0ZXgxKTsKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIHRleHR1cmVzIHNob3Vs
ZCBiZSB0aGUgc2FtZS4KKyAgICAgICAgd3R1LmRyYXdVbml0UXVhZChnbCk7CisKKyAgICAgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXgxKTsKKworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGds
LCA5NiwgMzIsIDEsIDEsIFsyNTUsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW46ICIgKyBj
YXNlbmFtZSk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDk2LCA5NiwgMSwgMSwg
WzI1NSwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbjogIiArIGNhc2VuYW1lKTsKKyAgICAg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMzIsIDMyLCAxLCAxLCBbMCwgMjU1LCAwLCAyNTVd
LCAic2hvdWxkIGJlIHJlZDogIiArIGNhc2VuYW1lKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMzIsIDk2LCAxLCAxLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZDog
IiArIGNhc2VuYW1lKTsKKyAgICB9CisKKyAgICB0ZXN0Y2FzZSh3ZWlyZExheWVycywgIm9yaWdp
bmFsIik7CisgICAgY29uc3QgY2FzZXMgPSBbCisgICAgICAgIFsxMCwyMywzLDE5LDI2LDI5LDE0
LDksNCwxMSwyNywyOCwxMywyNCwyMCwxMiwxNywyMSwxNiw1LDYsMjUsMSwxNSwyMiw4LDcsMTgs
MCwyXSwKKyAgICAgICAgWzEwLDI3LDMsMjksMTcsMjgsMTMsMjAsMTgsMjUsOSwyLDgsNCwyNCwx
MiwxNSw3LDE5LDExLDYsMTQsMTYsMjEsMSwyNiwyMywyMiwwLDVdLAorICAgICAgICBbMTEsNCwx
NSwxMywyNiwyNCwyNSwyLDE5LDIwLDE2LDIzLDEsMTgsMjgsMjcsNiwyMSwxNCw4LDE3LDI5LDMs
MTAsMTIsOSwyMiw3LDAsNV0sCisgICAgICAgIFsxNCwyLDYsMjgsNywyNSwxMSwyNiwyMiwxMywx
OSwyMSwyNCw0LDE2LDI5LDksMjcsMywxNywxOCwxNSwxMiwyMCw4LDIzLDEwLDEsMCw1XSwKKyAg
ICAgICAgWzE0LDIwLDIyLDE2LDExLDI3LDE3LDIxLDE1LDMsNSwyOCw2LDIsOSwxMiw3LDI0LDEs
MjYsOCwxOSwyMywyNSwxOCwxMywyOSwxMCwwLDRdLAorICAgICAgICBbMTQsMjAsMjIsMTYsMTEs
MjcsMTcsMjEsMTUsMyw1LDI4LDYsMiw5LDEyLDcsMjQsMSwyNiw4LDE5LDIzLDI1LDE4LDEzLDI5
LDEwLDAsNF0sCisgICAgICAgIFsxNCwyMiwyNywxLDEyLDI0LDEzLDIxLDYsMTAsMjAsMjgsMjMs
MTYsNSwxOCw3LDMsMjUsMiwxMSwxOSwxNywyNiw4LDI5LDE1LDksMCw0XSwKKyAgICAgICAgWzE1
LDIyLDEzLDI4LDYsMTIsMTksOSwxOCwxMSwzLDIzLDE3LDgsMTAsMjAsNSwxNCw0LDI1LDI3LDI2
LDIxLDE2LDI5LDI0LDcsMCwxLDJdLAorICAgICAgICBbMTUsMjIsMTMsMjgsNiwxMiwxOSw5LDE4
LDExLDMsMjMsMTcsOCwxMCwyMCw1LDE0LDQsMjUsMjcsMjYsMjEsMTYsMjksMjQsNywwLDEsMl0s
CisgICAgICAgIFsxNiwyMiwxOCwxNSwxOSw2LDIxLDI3LDQsMTQsMjksMTcsNyw5LDExLDIwLDI0
LDIzLDI4LDI1LDIsMTMsMTAsMjYsOCwxMiwzLDAsNSwxXSwKKyAgICAgICAgWzE2LDI2LDE4LDcs
MjAsMjUsMTEsMjQsMiwxLDI4LDEzLDI5LDEwLDI3LDIxLDYsMTUsNSwxOSwxNywxMiwxNCw5LDIz
LDIyLDgsMywwLDRdLAorICAgICAgICBbMiwyMiwyNSwxMiwxOSwxNiw3LDI3LDksMTAsOCwxNywx
OCwyNCwxLDIxLDIwLDE0LDEzLDQsMTEsMjksMTUsNSwyMywyNiw2LDI4LDAsM10sCisgICAgICAg
IFsyLDksMTYsMjYsNiwxNSw0LDMsMTcsMTMsMjEsMTAsNywyMiwyMywyOSwxOSwxOCwxMiwyNCwx
NCwyNSw4LDUsMjAsMjgsMTEsMjcsMCwxXSwKKyAgICAgICAgWzIsOSwxNiwyNiw2LDE1LDQsMywx
NywxMywyMSwxMCw3LDIyLDIzLDI5LDE5LDE4LDEyLDI0LDE0LDI1LDgsNSwyMCwyOCwxMSwyNyww
LDFdLAorICAgICAgICBbMjAsMjEsMjQsMTUsNSwxMyw2LDEyLDIsMTcsMTAsMTQsMjcsMTYsOCwy
Miw5LDI1LDI5LDEsMjgsMTEsNCwxOSw3LDIzLDI2LDE4LDAsM10sCisgICAgICAgIFsyMSwxNCwx
OSwxMiwyOCw2LDEwLDcsMTYsMjcsMTEsMjIsMjAsMjQsMjUsMjYsMyw4LDQsMTgsNSwyLDksMTUs
MTcsMjMsMTMsMjksMCwxXSwKKyAgICAgICAgWzIyLDQsMTgsNywxMSw2LDIzLDE3LDE0LDMsMTMs
MjEsMTUsMTksMjUsMjgsOSw4LDEwLDEyLDI5LDE2LDI3LDIsMjQsMSwyMCwyNiwwLDVdLAorICAg
ICAgICBbMjIsNCwxOCw3LDExLDYsMjMsMTcsMTQsMywxMywyMSwxNSwxOSwyNSwyOCw5LDgsMTAs
MTIsMjksMTYsMjcsMiwyNCwxLDIwLDI2LDAsNV0sCisgICAgICAgIFsyMywyMSw5LDI4LDIyLDE1
LDI1LDEyLDI0LDE4LDI5LDIsMTcsMSwxNCw0LDE2LDI2LDMsMTEsMjcsMTMsOCw3LDYsMjAsMTAs
MTksMCw1XSwKKyAgICAgICAgWzIzLDYsMTUsMTMsMTksMiwxMiw3LDExLDI5LDMsMjAsMTcsMTAs
NCwxOCwxLDIyLDE2LDI3LDI0LDksMjEsMjUsMTQsMjYsOCwyOCwwLDVdLAorICAgICAgICBbMjUs
MTIsMSw0LDksMjIsMTYsMjgsNiwxMSwxNCwyOSwxNSwyLDUsMTMsMTAsMjAsMjEsMTksMjMsMjcs
MTgsMjYsNyw4LDE3LDI0LDAsM10sCisgICAgICAgIFsyNSwxMywyOSwyNiwyOCwxNywxOSwyMyw3
LDI0LDEwLDEsMTUsOCwzLDExLDE4LDIxLDI3LDIyLDEyLDUsOSw2LDE2LDE0LDIwLDIsMCw0XSwK
KyAgICAgICAgWzI1LDE4LDI4LDEyLDI3LDEzLDExLDQsMjksOCwyMSwxNSw5LDYsMjYsMjAsMjIs
MjMsMjQsMTcsNSwxNiwyLDcsMTQsMTksMTAsMCwxLDNdLAorICAgICAgICBbMjUsMTksMywxMCwy
MywxNSwyNywxOCwxMiw4LDcsMjQsMTYsMTQsMjYsNCwyMSw1LDksMSwyMiwyOCwyMCwyOSw2LDEx
LDEzLDE3LDAsMl0sCisgICAgICAgIFsyNSwyNCwxMiw5LDEzLDEwLDIzLDQsMTksMjksMTYsMSwx
NSw4LDIxLDI2LDE4LDExLDE3LDcsMjAsMjgsMjIsMTQsMjcsNiwwLDIsNSwzXSwKKyAgICAgICAg
WzI1LDksMjksOCwzLDYsMTAsMjcsMTEsMjgsMTMsMjMsMTgsMTYsMTcsMTksNSwyMiwxMiwyNiwy
MSw0LDcsMTQsMjQsMTUsMiwyMCwwLDFdLAorICAgICAgICBbMjcsMjMsMjAsMiwxMiwxNCw2LDE5
LDMsMjgsMTgsMTAsMjksMTEsMTMsMjIsMjEsNywxNSw5LDgsMTcsMjUsMTYsMjYsMjQsNCw1LDAs
MV0sCisgICAgICAgIFsyNyw3LDIsNSwxOSwxMCwzLDI2LDIyLDE4LDIzLDE2LDksMjQsMjEsMTcs
NiwyOCwxMiwxNCwyNSwyOSwxMywxNSw4LDIwLDExLDQsMCwxXSwKKyAgICAgICAgWzI4LDcsMTAs
OSwyOSwyNywyLDIwLDEsMjYsMTEsNSwxMiwyMywyNSwzLDE3LDE2LDI0LDEzLDgsNiwxNCwxOCwy
MSwxOSwxNSwyMiwwLDRdLAorICAgICAgICBbMjgsOCwyMywxMywxOCwyOSwyMCw5LDEwLDI3LDE1
LDIxLDMsMTksMTQsNCwyNiw1LDI0LDEsNiwxNywxMSwxMiwxNiw3LDI1LDIyLDAsMl0sCisgICAg
ICAgIFsyOSwxMiwxMywyLDIyLDE5LDE2LDcsMTQsMTEsMjQsMjMsMjgsMTUsMTcsOSwyMCwyMSwx
OCwyNiwyNywyNSwxMCw1LDgsNiw0LDMsMCwxXSwKKyAgICAgICAgWzI5LDgsNSw0LDcsMTUsMTks
MTcsMywyNiwxMyw5LDIzLDYsMjUsMjIsMjcsMjQsMTQsMTYsMTAsMjEsMTEsMTgsMjgsMTIsMiwy
MCwwLDFdLAorICAgICAgICBbNSwxOCw2LDE3LDE5LDE2LDEzLDExLDI4LDgsMTAsNCwyOSwyNiwy
MCwyNCw5LDcsMjEsMjUsMjcsMjMsMjIsMiwxNSwxNCwxMiwwLDMsMV0sCisgICAgICAgIFs1LDIz
LDIsMTUsNywxMywxOSwxMSwyNywzLDIyLDE0LDQsMjYsMjgsMjAsMTcsMTgsOCwyNSwxNiwyOSwx
MCwyNCwxMiw5LDYsMjEsMCwxXSwKKyAgICAgICAgWzcsMjQsMjcsMjYsMTYsMTgsMjIsMjAsMTAs
MTEsOSwxOSwyMywxMiwxNywxMyw0LDIsNiwxLDIxLDI1LDE1LDI4LDgsMywyOSwxNCwwLDVdLAor
ICAgIF07CisgICAgZm9yIChjb25zdCBjIG9mIGNhc2VzKSB7CisgICAgICAgIHRlc3RjYXNlKG1h
a2VQZXJtdXRlZExheWVycyhyZWd1bGFyTGF5ZXJzLCBjKSwgImNhc2UgIiArIGMudG9TdHJpbmco
KSk7CisgICAgfQorfQorCit0ZXN0KCk7CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvaW50ZWdlci1jdWJlbWFwLXRleHR1cmUtc2FtcGxpbmcuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9taXNjL2ludGVnZXItY3ViZW1hcC10ZXh0dXJlLXNhbXBsaW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGFkNDk2NzYwOGE1NGRmMzA4NmY2ZTc4ZjUzNTE5NDg2YTY2OGRmNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9taXNjL2ludGVnZXItY3ViZW1hcC10ZXh0dXJlLXNhbXBsaW5nLmh0
bWwKQEAgLTAsMCArMSwxNjkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEludGVnZXIgQ3ViZW1hcCBUZXh0dXJlIFNhbXBsaW5n
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKworZGVzY3JpcHRpb24oIlZlcmlmeSBzYW1wbGluZyB3
b3JrcyBmaW5lIHdpdGggaW50ZWdlciBjdWJlbWFwIHRleHR1cmVzIik7CitkZWJ1ZygiaHR0cHM6
Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9pc3N1ZXMvMTgxOSIpOworCit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKwordmFyIHRl
c3RDYXNlcyA9IFsKKyAgICB7IGludGVybmFsRm9ybWF0OiAiUjhVSSIsIGZvcm1hdDogIlJFRF9J
TlRFR0VSIiwgdHlwZTogIlVOU0lHTkVEX0JZVEUiIH0sCisgICAgeyBpbnRlcm5hbEZvcm1hdDog
IlJHOFVJIiwgZm9ybWF0OiAiUkdfSU5URUdFUiIsIHR5cGU6ICJVTlNJR05FRF9CWVRFIiB9LAor
ICAgIHsgaW50ZXJuYWxGb3JtYXQ6ICJSR0I4VUkiLCBmb3JtYXQ6ICJSR0JfSU5URUdFUiIsIHR5
cGU6ICJVTlNJR05FRF9CWVRFIiB9LAorICAgIHsgaW50ZXJuYWxGb3JtYXQ6ICJSR0JBOFVJIiwg
Zm9ybWF0OiAiUkdCQV9JTlRFR0VSIiwgdHlwZTogIlVOU0lHTkVEX0JZVEUiIH0sCitdOworCitm
dW5jdGlvbiBzZXR1cERhdGEoaW50ZXJuYWxGb3JtYXQsIHNpemUpIHsKKyAgICB2YXIgbnVtQ29t
cG9uZW50cyA9IDA7CisgICAgc3dpdGNoIChnbFtpbnRlcm5hbEZvcm1hdF0pIHsKKyAgICAgIGNh
c2UgZ2wuUjhVSToKKyAgICAgICAgbnVtQ29tcG9uZW50cyA9IDE7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBnbC5SRzhVSToKKyAgICAgICAgbnVtQ29tcG9uZW50cyA9IDI7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBnbC5SR0I4VUk6CisgICAgICAgIG51bUNvbXBvbmVudHMgPSAz
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgZ2wuUkdCQThVSToKKyAgICAgICAgbnVtQ29t
cG9uZW50cyA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAobnVtQ29tcG9uZW50
cyA9PSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNo
ZWQiKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZhciBkYXRhID0gbmV3IFVp
bnQ4QXJyYXkobnVtQ29tcG9uZW50cyAqIHNpemUgKiBzaXplKTsKKyAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgc2l6ZSAqIHNpemU7ICsraWkpIHsKKyAgICAgICAgLy8gU2V0IGFsbCBwaXhlbHMg
dG8gUkVELgorICAgICAgICBkYXRhW2lpICogbnVtQ29tcG9uZW50c10gPSAyNTU7CisgICAgICAg
IGlmIChudW1Db21wb25lbnRzID4gMSkKKyAgICAgICAgICAgIGRhdGFbaWkgKiBudW1Db21wb25l
bnRzICsgMV0gPSAwOworICAgICAgICBpZiAobnVtQ29tcG9uZW50cyA+IDIpCisgICAgICAgICAg
ICBkYXRhW2lpICogbnVtQ29tcG9uZW50cyArIDJdID0gMDsKKyAgICAgICAgaWYgKG51bUNvbXBv
bmVudHMgPiAzKQorICAgICAgICAgICAgZGF0YVtpaSAqIG51bUNvbXBvbmVudHMgKyAzXSA9IDI1
NTsKKyAgICB9CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW50ZWdlclRl
eHR1cmVWYWx1ZXMoaW50ZXJuYWxGb3JtYXQsIHNpemUpIHsKKyAgICB2YXIgYnVmZmVyID0gbmV3
IFVpbnQzMkFycmF5KDQgKiBzaXplICogc2l6ZSk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCBz
aXplLCBzaXplLCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCwgYnVmZmVyKTsKKyAg
ICBmb3IgKHZhciB5ID0gMDsgeSA8IHNpemU7ICsreSkgeworICAgICAgICBmb3IgKHZhciB4ID0g
MDsgeCA8IHNpemU7ICsreCkgeworICAgICAgICAgICAgdmFyIGluZGV4ID0gKHkgKiBzaXplICsg
eCkgKiA0OworICAgICAgICAgICAgaWYgKGJ1ZmZlcltpbmRleF0gIT0gMjU1IHx8IGJ1ZmZlcltp
bmRleCArIDFdICE9IDAgfHwgYnVmZmVyW2luZGV4ICsgMl0gIT0gMCkgeworICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkF0ICgiICsgeCArICIsICIgKyB5ICsgIiksIGV4cGVjdGVkIDI1NSww
LDAsMjU1LCB3YXMgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmZmVyW2luZGV4
XSwgYnVmZmVyW2luZGV4ICsgMV0sIGJ1ZmZlcltpbmRleCArIDJdLCBidWZmZXJbaW5kZXggKyAz
XV0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBbGwgcGl4ZWxzIGFyZSBhcyBleHBlY3RlZCIpOworfQor
CitmdW5jdGlvbiBydW5PbmVUZXN0KGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHNpemUp
IHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgaW50ZXJuYWxmb3JtYXQgPSAi
ICsgaW50ZXJuYWxGb3JtYXQgKyAiLCBmb3JtYXQgPSAiICsgZm9ybWF0ICsgIiwgdHlwZSA9ICIg
KyB0eXBlICsgIiwgc2l6ZSA9ICIgKyBzaXplKTsKKworICAgIGdsLmNsZWFyQ29sb3IoMSwgMSwg
MCwgMSk7CisgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7
CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9D
VUJFX01BUCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFN
UF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGds
LlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKworICAgIGdsLnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgdmFyIHRhcmdldHMgPSBbZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCwKKyAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9ZLAorICAgICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WiwKKyAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pdOwor
ICAgIHZhciBkYXRhID0gc2V0dXBEYXRhKGludGVybmFsRm9ybWF0LCBzaXplKTsKKyAgICBmb3Ig
KHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgZ2wudGV4
SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBzaXplLCBzaXplLCAw
LCBnbFtmb3JtYXRdLCBnbFt0eXBlXSwgZGF0YSk7CisgICAgfQorCisgICAgZGVidWcoIjEpIFJl
YWRpbmcgYmFjayB0ZXh0dXJlIGRhdGEiKTsKKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7Cisg
ICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgdGFyZ2V0c1t0dF0sIHRleCwgMCk7CisgICAgICAgIGlmIChnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgewor
ICAgICAgICAgICAgY2hlY2tJbnRlZ2VyVGV4dHVyZVZhbHVlcyhpbnRlcm5hbEZvcm1hdCwgc2l6
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKwor
ICAgIGRlYnVnKCIyKSBSZW5kZXJpbmcgd2l0aCB0ZXh0dXJlIik7CisgICAgdmFyIHByb2dyYW0g
PSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRXaXRoQ3ViZU1hcChnbCwgaW50ZXJuYWxGb3JtYXQpOwor
ICAgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZhY2UiKTsKKyAg
ICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAg
Z2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAgICAvLyBEcmF3IHRoZSB0cmlh
bmdsZXMKKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMjU1LCAwLCAy
NTVdKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgZ2wuY2FudmFzLndp
ZHRoLCBnbC5jYW52YXMuaGVpZ2h0LCBbMjU1LCAwLCAwLCAyNTVdLCAiU2hvdWxkIGJlIHJlZCIp
OworICAgIH0KKyAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsLmRlbGV0ZVRl
eHR1cmUodGV4KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5v
IEdMIGVycm9ycyIpOworCisgICAgdmFyIG0gPSB3dHUubWFrZUltYWdlRnJvbUNhbnZhcyhnbC5j
YW52YXMpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQobSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMo
KSB7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsraWkpIHsK
KyAgICAgICAgcnVuT25lVGVzdCh0ZXN0Q2FzZXNbaWldLmludGVybmFsRm9ybWF0LCB0ZXN0Q2Fz
ZXNbaWldLmZvcm1hdCwgdGVzdENhc2VzW2lpXS50eXBlLCAyKTsKKyAgICAgICAgcnVuT25lVGVz
dCh0ZXN0Q2FzZXNbaWldLmludGVybmFsRm9ybWF0LCB0ZXN0Q2FzZXNbaWldLmZvcm1hdCwgdGVz
dENhc2VzW2lpXS50eXBlLCA0KTsKKyAgICAgICAgcnVuT25lVGVzdCh0ZXN0Q2FzZXNbaWldLmlu
dGVybmFsRm9ybWF0LCB0ZXN0Q2FzZXNbaWldLmZvcm1hdCwgdGVzdENhc2VzW2lpXS50eXBlLCA4
KTsKKyAgICAgICAgcnVuT25lVGVzdCh0ZXN0Q2FzZXNbaWldLmludGVybmFsRm9ybWF0LCB0ZXN0
Q2FzZXNbaWldLmZvcm1hdCwgdGVzdENhc2VzW2lpXS50eXBlLCAxNik7CisgICAgICAgIHJ1bk9u
ZVRlc3QodGVzdENhc2VzW2lpXS5pbnRlcm5hbEZvcm1hdCwgdGVzdENhc2VzW2lpXS5mb3JtYXQs
IHRlc3RDYXNlc1tpaV0udHlwZSwgMzIpOworICAgICAgICBydW5PbmVUZXN0KHRlc3RDYXNlc1tp
aV0uaW50ZXJuYWxGb3JtYXQsIHRlc3RDYXNlc1tpaV0uZm9ybWF0LCB0ZXN0Q2FzZXNbaWldLnR5
cGUsIDY0KTsKKyAgICAgICAgcnVuT25lVGVzdCh0ZXN0Q2FzZXNbaWldLmludGVybmFsRm9ybWF0
LCB0ZXN0Q2FzZXNbaWldLmZvcm1hdCwgdGVzdENhc2VzW2lpXS50eXBlLCA2NSk7CisgICAgICAg
IHJ1bk9uZVRlc3QodGVzdENhc2VzW2lpXS5pbnRlcm5hbEZvcm1hdCwgdGVzdENhc2VzW2lpXS5m
b3JtYXQsIHRlc3RDYXNlc1tpaV0udHlwZSwgMTI3KTsKKyAgICAgICAgcnVuT25lVGVzdCh0ZXN0
Q2FzZXNbaWldLmludGVybmFsRm9ybWF0LCB0ZXN0Q2FzZXNbaWldLmZvcm1hdCwgdGVzdENhc2Vz
W2lpXS50eXBlLCAxMjgpOworICAgICAgICBydW5PbmVUZXN0KHRlc3RDYXNlc1tpaV0uaW50ZXJu
YWxGb3JtYXQsIHRlc3RDYXNlc1tpaV0uZm9ybWF0LCB0ZXN0Q2FzZXNbaWldLnR5cGUsIDEyOSk7
CisgICAgfQorfQorCitydW5UZXN0cygpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9taXNjL21pcG1hcC1mYm8uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL21pcG1hcC1mYm8u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZDQ4YmI3N2M1Yzk2ODUyNmM1ZDk4MGEzNDZlYzgwNTljMTE3NWM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvbWlwbWFwLWZiby5odG1sCkBAIC0w
LDAgKzEsNTAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPlRlc3QgaWYgbWlwbWFwIGluY29tcGxldGUgdGV4dHVyZXMgY2FuIGJlIHVzZWQg
YXMgRkJPIGF0dGFjaG1lbnRzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlv
bigpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVk
LCAyKTsKKwordmFyIHRlc3RJbmNvbXBsZXRlTWlwbWFwSW5GQk8gPSBmdW5jdGlvbiAoKSB7Cisg
ICAgLy8gQ3JlYXRlIGEgdGV4dHVyZSB0aGF0J3Mgbm90IG1pcG1hcCBjb21wbGV0ZS4KKyAgICB2
YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSX01JUE1BUF9M
SU5FQVIpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMzIs
IDMyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworICAgIC8vIEZyYW1l
YnVmZmVyIHNob3VsZCBiZSBpbmNvbXBsZXRlIGZvciBpbmNvbXBsZXRlIHRleHR1cmUuCisgICAg
dmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwg
MSk7CisgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpIiwgImdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCIpOworfQorCit0ZXN0
SW5jb21wbGV0ZU1pcG1hcEluRkJPKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2Mv
bnBvdC12aWRlby1zaXppbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL25wb3QtdmlkZW8tc2l6aW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2NlMzkxN2RhMzk0MjUxYzgxOTdjY2QyNWEyYjMwYTkxZTczZWNj
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL25wb3QtdmlkZW8tc2l6aW5nLmh0
bWwKQEAgLTAsMCArMSwxODEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IG51bGw7Cit2YXIgdGV4dHVyZUxvYyA9IG51bGw7Cit2YXIg
ZXhwZWN0ZWRWaWRlb0hlaWdodExvYyA9IG51bGw7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
ZmFsc2U7Cit2YXIgcmVzb3VyY2VQYXRoID0gIi4uLy4uLy4uL3Jlc291cmNlcy8iOworLy8gVGVz
dCBlYWNoIGZvcm1hdCBzZXBhcmF0ZWx5IGJlY2F1c2UgbWFueSBicm93c2VycyBpbXBsZW1lbnQg
ZWFjaAorLy8gZGlmZmVyZW50bHkuIFNvbWUgbWlnaHQgYmUgR1BVIGFjY2VsZXJhdGVkLCBzb21l
IG1pZ2h0IG5vdC4gRXRjLi4uCit2YXIgdmlkZW9zID0gWworICB7IHNyYzogcmVzb3VyY2VQYXRo
ICsgIm5wb3QtdmlkZW8tMTkyMHgxMDgwLm1wNCIgLAorICAgIHR5cGU6ICd2aWRlby9tcDQ7IGNv
ZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEuNDAuMiInLAorICAgIC8vIEl0IHdhcyBmb3VuZCB0aGF0
IEZpcmVmb3gncyB2aWRlb0hlaWdodCBkb2Vzbid0IHJlcG9ydCB0aGUKKyAgICAvLyBjb3JyZWN0
IGFuc3dlciBmb3IgdGhpcyB2aWRlbyByZXNvdXJjZSwgdGhvdWdoIHRoZSB1cGxvYWRlZAorICAg
IC8vIHZpZGVvIHRleHR1cmUgaXMgdGhlIGNvcnJlY3Qgc2l6ZS4KKyAgICBleHBlY3RlZEhlaWdo
dDogMTA4MCwKKyAgfSwKKyAgLy8gU2hvdWxkIHBvcnQgdGhpcyB0byBvdGhlciBmb3JtYXRzLiBT
ZWUgdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcy4KK107Cit2YXIgdmlk
ZW9OZHggPSAwOwordmFyIHZpZGVvSW5mbzsKK3ZhciB2aWRlbzsKKworaW5pdFRlc3RpbmdIYXJu
ZXNzKCk7CisKK3ZhciB2ZXJ0ZXhTaGFkZXIgPSBbCisgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisg
ICAgJ2luIHZlYzQgdlBvc2l0aW9uOycsCisgICAgJ2luIHZlYzIgdGV4Q29vcmQwOycsCisgICAg
J291dCB2ZWMyIHRleENvb3JkOycsCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAgZ2xf
UG9zaXRpb24gPSB2UG9zaXRpb247JywKKyAgICAnICAgIHRleENvb3JkID0gdGV4Q29vcmQwOycs
CisgICAgJ30nXS5qb2luKCdcbicpOworCisvLyBFU1NMIDMuMDAgYW5kIFdlYkdMIDIuMCBhcmUg
dXNlZCBpbiBvcmRlciB0byBnYWluIGFjY2VzcyB0byB0aGUKKy8vICJ0ZXh0dXJlU2l6ZSIgYnVp
bHQtaW4gZnVuY3Rpb24uIFRoaXMgd2FzIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0bworLy8gdmVy
aWZ5IHRoZSBiZWhhdmlvciBvZiB2aWRlby10by10ZXh0dXJlIHVwbG9hZHMuCisKK3ZhciBmcmFn
bWVudFNoYWRlciA9IFsKKyAgICAnI3ZlcnNpb24gMzAwIGVzJywKKyAgICAncHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7JywKKyAgICAndW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyRCB0ZXg7JywKKyAg
ICAndW5pZm9ybSBpbnQgZXhwZWN0ZWRWaWRlb0hlaWdodDsnLAorICAgICdpbiB2ZWMyIHRleENv
b3JkOycsCisgICAgJ291dCB2ZWM0IGZyYWdEYXRhOycsCisgICAgJ3ZvaWQgbWFpbigpIHsnLAor
ICAgICcgICAgaWYgKHRleHR1cmVTaXplKHRleCwgMCkueSA9PSBleHBlY3RlZFZpZGVvSGVpZ2h0
KSB7JywKKyAgICAnICAgICAgZnJhZ0RhdGEgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7JywK
KyAgICAnICAgIH0gZWxzZSB7JywKKyAgICAnICAgICAgZnJhZ0RhdGEgPSB2ZWM0KDEuMCwgMC4w
LCAwLjAsIDEuMCk7JywKKyAgICAnICAgIH0nLAorICAgICd9J10uam9pbignXG4nKTsKKworZnVu
Y3Rpb24gaW5pdCgpCit7CisgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSBzaXppbmcgb2YgbnBvdCB2
aWRlb3MgdXBsb2FkZWQgdG8gdGV4dHVyZXMnKTsKKworICAgIGRlYnVnKCdWZXJpZmllcyB0aGF0
IHRoZSBzaXplIG9mIGEgdGV4dHVyZSwgdXBsb2FkZWQgZnJvbSBhIHZpZGVvLCBpcyBleGFjdGx5
IHRoZSBleHBlY3RlZCBzaXplIG9mIHRoZSB2aWRlby4nKTsKKyAgICBkZWJ1ZygnUmVncmVzc2lv
biB0ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vY3JidWcuY29tLzY3Mjg5NSI+aHR0cDovL2NyYnVn
LmNvbS82NzI4OTU8L2E+Jyk7CisKKyAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImV4YW1wbGUiKTsKKyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7
IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSB9LCAyKTsKKyAgICB3dHUuc2V0dXBVbml0UXVh
ZChnbCk7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgICBnbCwK
KyAgICAgICAgW3ZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXJdLAorICAgICAgICBbJ3ZQb3Np
dGlvbicsICd0ZXhDb29yZDAnXSwKKyAgICAgICAgWzAsIDFdKTsKKworICAgIGlmICghcHJvZ3Jh
bSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJFcnJvciBjcmVhdGluZyBwcm9ncmFtIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgIGds
LmNsZWFyRGVwdGgoMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgIC8vIERpc2FibGUgYW55IHdyaXRlcyB0byB0aGUgYWxwaGEg
Y2hhbm5lbAorICAgIGdsLmNvbG9yTWFzaygxLCAxLCAxLCAwKTsKKworICAgIHRleHR1cmVMb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworICAgIGV4cGVjdGVkVmlk
ZW9IZWlnaHRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oCisgICAgICAgIHByb2dyYW0sICJl
eHBlY3RlZFZpZGVvSGVpZ2h0Iik7CisKKyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuTmV4
dFZpZGVvKTsKK30KKworZnVuY3Rpb24gcnVuTmV4dFZpZGVvKCkgeworICAgIGlmICh2aWRlbykg
eworICAgICAgICB2aWRlby5wYXVzZSgpOworICAgIH0KKworICAgIGlmICh2aWRlb05keCA9PSB2
aWRlb3MubGVuZ3RoKSB7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHZpZGVvSW5mbyA9IHZpZGVvc1t2aWRlb05keCsrXTsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInRlc3Rpbmc6ICIgKyB2aWRlb0luZm8udHlwZSk7CisgICAgdmlkZW8g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgIHZpZGVvLm11dGVkID0gdHJ1
ZTsKKyAgICB2YXIgY2FuUGxheSA9IHRydWU7CisgICAgaWYgKCF2aWRlby5jYW5QbGF5VHlwZSkg
eworICAgICAgICB0ZXN0RmFpbGVkKCJ2aWRlby5jYW5QbGF5VHlwZSByZXF1aXJlZCBtZXRob2Qg
bWlzc2luZyIpOworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuTmV4dFZpZGVvKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmlkZW8uY2FuUGxheVR5cGUodmlk
ZW9JbmZvLnR5cGUpLnJlcGxhY2UoL25vLywgJycpKSB7CisgICAgICAgIGRlYnVnKHZpZGVvSW5m
by50eXBlICsgIiB1bnN1cHBvcnRlZCIpOworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
cnVuTmV4dFZpZGVvKTsKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHZpZGVvKTsKKyAgICB2aWRlby5zdHlsZSA9ICJkaXNwbGF5Om5vbmU7
IjsKKyAgICB2aWRlby50eXBlID0gdmlkZW9JbmZvLnR5cGU7CisgICAgdmlkZW8uc3JjID0gdmlk
ZW9JbmZvLnNyYzsKKyAgICB3dHUuc3RhcnRQbGF5aW5nQW5kV2FpdEZvclZpZGVvKHZpZGVvLCBy
dW5UZXN0KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHRleHR1cmUgPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0dXJlIHVu
aXQgMAorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIC8v
IFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAvLyBTZXQgdXAgcGl4ZWwg
c3RvcmUgcGFyYW1ldGVycworICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VC
R0wsIHRydWUpOworICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOwor
ICAgIC8vIFVwbG9hZCB0aGUgdmlkZW8gZWxlbWVudCBpbnRvIHRoZSB0ZXh0dXJlCisgICAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGdsLlJHQiwgZ2wuVU5TSUdORURf
QllURSwgdmlkZW8pOworICAgIC8vIFBvaW50IHRoZSB1bmlmb3JtIHNhbXBsZXIgdG8gdGV4dHVy
ZSB1bml0IDAKKyAgICBnbC51bmlmb3JtMWkodGV4dHVyZUxvYywgMCk7CisgICAgLy8gU2V0IHVw
IHRoZSBleHBlY3RlZCB2aWRlbyBzaXplCisgICAgZGVidWcoJ3ZpZGVvXCdzIGV4cGVjdGVkIGhl
aWdodDogJyArIHZpZGVvSW5mby5leHBlY3RlZEhlaWdodCk7CisgICAgZGVidWcoJ3ZpZGVvXCdz
IHJlcG9ydGVkIHdpZHRoIGFuZCBoZWlnaHQ6ICcgKyB2aWRlby52aWRlb1dpZHRoICsgJyB4ICcg
KyB2aWRlby52aWRlb0hlaWdodCk7CisgICAgLy8gV2Ugb25seSB2ZXJpZnkgdGhlIGhlaWdodC4g
Q2hyb21lIHdhcyBnZW5lcmF0aW5nIHRoZSB3cm9uZworICAgIC8vIGhlaWdodCBmb3Igc29tZSB2
aWRlbyByZXNvdXJjZXMuIEFzIGl0IHN0YW5kcywgbm90IGFsbCBicm93c2VycworICAgIC8vIG1h
dGNoIHRoZSB2aWRlbydzIHdpZHRoIGV4YWN0bHkuCisgICAgZ2wudW5pZm9ybTFpKGV4cGVjdGVk
VmlkZW9IZWlnaHRMb2MsIHZpZGVvSW5mby5leHBlY3RlZEhlaWdodCk7CisKKyAgICAvLyBEcmF3
IHRoZSB0cmlhbmdsZXMKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAw
LCAyNTVdKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB2aWRlbyB0ZXh0dXJlJ3Mgc2l6ZSB3
YXMgYXMgZXhwZWN0ZWQKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBnbC5jYW52
YXMud2lkdGgsIGdsLmNhbnZhcy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBbMCwg
MjU1LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNob3VsZCBiZSBncmVlbiAt
LSB0aGF0IGluZGljYXRlcyB0aGUgdmlkZW8gdGV4dHVyZSdzIGhlaWdodCB3YXMgY29ycmVjdCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKworICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZShydW5OZXh0VmlkZW8pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
aW5pdCgpIj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL29yaWdp
bi1jbGVhbi1jb25mb3JtYW5jZS1vZmZzY3JlZW5jYW52YXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNj
L29yaWdpbi1jbGVhbi1jb25mb3JtYW5jZS1vZmZzY3JlZW5jYW52YXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzZhMTE4Y2MxZGRhZjU3MzE0YTQyN2UwYjA0MjhiZWQwOGQ0Njk1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL21pc2Mvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLW9mZnNjcmVlbmNh
bnZhcy5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgT3JpZ2luIFJlc3RyaWN0aW9ucyBDb25m
b3JtYW5jZSBUZXN0cyBmb3IgT2Zmc2NyZWVuQ2FudmFzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+Cis8aW1nIGlkPSJpbWciIHN0
eWxlPSJkaXNwbGF5Om5vbmU7Ij4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7CisKKy8vIENoZWNrcyBpZiBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0
aW9uLgorZnVuY3Rpb24gY2F1c2VkRXhjZXB0aW9uKGZ1bmMpIHsKKyAgdmFyIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOworICB0cnkgeworICAgIGZ1bmMoKTsKKyAgfSBjYXRjaChlKSB7CisgICAgaGFk
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgfQorICByZXR1cm4gaGFkRXhjZXB0aW9uOworfQorCit2YXIg
ZGVmYXVsdEltZ1VybCA9ICJodHRwczovL2dldC53ZWJnbC5vcmcvY29uZm9ybWFuY2UtcmVzb3Vy
Y2VzL29wZW5nbF9sb2dvLmpwZyI7Cit2YXIgbG9jYWxJbWdVcmwgPSAiLi4vLi4vLi4vcmVzb3Vy
Y2VzL29wZW5nbF9sb2dvLmpwZyI7CisKK3ZhciBpbWdEb21haW47Cit2YXIgcGFnZURvbWFpbjsK
KworZnVuY3Rpb24gaW1hZ2VMb2FkZWQoaW1nKSB7CisgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZW5zdXJlcyBXZWJHTDIgaW1wbGVtZW50YXRpb25zIGZvciBPZmZzY3JlZW5DYW52YXMgZm9sbG93
IHByb3BlciBzYW1lLW9yaWdpbiByZXN0cmljdGlvbnMuIik7CisKKyAgaWYgKCF3aW5kb3cuT2Zm
c2NyZWVuQ2FudmFzKSB7CisgICAgdGVzdFBhc3NlZCgiTm8gT2Zmc2NyZWVuQ2FudmFzIHN1cHBv
cnQiKTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgYXNzZXJ0TXNn
KGltZy53aWR0aCA+IDAgJiYgaW1nLmhlaWdodCA+IDAsICJpbWcgd2FzIGxvYWRlZCIpOworICBp
bWdEb21haW4gPSB3dHUuZ2V0QmFzZURvbWFpbih3dHUuZ2V0SG9zdChpbWcuc3JjKSk7CisgIHBh
Z2VEb21haW4gPSB3dHUuZ2V0QmFzZURvbWFpbih3aW5kb3cubG9jYXRpb24uaG9zdCk7CisgIGFz
c2VydE1zZyhpbWdEb21haW4gIT0gcGFnZURvbWFpbiwKKyAgICAgICAgICAgICJpbWcgZG9tYWlu
ICgiICsgaW1nRG9tYWluICsgIikgYW5kIHBhZ2UgZG9tYWluICgiICsgcGFnZURvbWFpbiArICIp
IGFyZSBub3QgdGhlIHNhbWUuIik7CisKKyAgZnVuY3Rpb24gbWFrZVRleEltYWdlMkQoZ2wsIHNy
YykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMTAsIDEwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBzcmMpOworICAgIH07CisgIH0KKworICBmdW5jdGlvbiBtYWtlVGV4U3ViSW1hZ2UyRChnbCwg
c3JjKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgZ2wudGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCAwLCAwLCAxMCwgMTAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IHNyYyk7CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIG1ha2VUZXhJbWFnZTNEKGdsLCBzcmMp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRV
UkVfM0QsIDAsIGdsLlJHQkEsIDEwLCAxMCwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgc3JjKTsKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gbWFrZVRleFN1YkltYWdlM0QoZ2ws
IHNyYykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIGdsLnRleFN1YkltYWdlM0Qo
Z2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBzcmMpOworICAgIH07CisgIH0KKworICBmdW5jdGlvbiBtYWtlUmVhZFBpeGVscyhn
bCkgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBidWYgPSBuZXcgVWludDhB
cnJheSg0KTsKKyAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgYnVmKTsKKyAgICB9OworICB9CisKKyAgdmFyIG9mZnNjcmVlbmNhbnZhcyA9
IG5ldyBPZmZzY3JlZW5DYW52YXMoMTAsIDEwKTsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChvZmZzY3JlZW5jYW52YXMsIG51bGwsIDIpOworCisgIGRlYnVnKCIiKTsKKyAgZGVidWco
ImNoZWNrIHRoYXQgYW4gYXR0ZW1wdCB0byB1cGxvYWQgYW4gaW1hZ2UgZnJvbSBhbm90aGVyIG9y
aWdpbiB0aHJvd3MgYW4gZXhjZXB0aW9uLiIpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDI1NiwgMjU2LCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgYXNzZXJ0TXNnKGNhdXNlZEV4Y2VwdGlvbihtYWtlVGV4
SW1hZ2UyRChnbCwgaW1nKSksCisgICAgICAgICAgICAidGV4SW1hZ2UyRCB3aXRoIGNyb3NzLW9y
aWdpbiBpbWFnZSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uLiIpOworICBhc3NlcnRNc2coY2F1c2Vk
RXhjZXB0aW9uKG1ha2VUZXhTdWJJbWFnZTJEKGdsLCBpbWcpKSwKKyAgICAgICAgICAgICJ0ZXhT
dWJJbWFnZTJEIHdpdGggY3Jvc3Mtb3JpZ2luIGltYWdlIHNob3VsZCB0aHJvdyBleGNlcHRpb24u
Iik7CisgIGFzc2VydE1zZyhjYXVzZWRFeGNlcHRpb24obWFrZVRleEltYWdlM0QoZ2wsIGltZykp
LAorICAgICAgICAgICAgInRleEltYWdlM0Qgd2l0aCBjcm9zcy1vcmlnaW4gaW1hZ2Ugc2hvdWxk
IHRocm93IGV4Y2VwdGlvbi4iKTsKKyAgYXNzZXJ0TXNnKGNhdXNlZEV4Y2VwdGlvbihtYWtlVGV4
U3ViSW1hZ2UzRChnbCwgaW1nKSksCisgICAgICAgICAgICAidGV4U3ViSW1hZ2UzRCB3aXRoIGNy
b3NzLW9yaWdpbiBpbWFnZSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uLiIpOworCisKKyAgZGVidWco
ImNoZWNrIHRoYXQgcmVhZFBpeGVscyBjb250aW51ZXMgdG8gd29yayBhZ2FpbnN0IHRoaXMgb2Zm
c2NyZWVuY2FudmFzLiIpOworICBhc3NlcnRNc2coIWNhdXNlZEV4Y2VwdGlvbihtYWtlUmVhZFBp
eGVscyhnbCkpLAorICAgICAgICAgICAgInJlYWRQaXhlbHMgc2hvdWxkIG5ldmVyIHRocm93IGV4
Y2VwdGlvbiAtLSBub3QgcG9zc2libGUgdG8gZGlydHkgb3JpZ2luIG9mIFdlYkdMMiBjYW52YXMu
Iik7CisKKyAgZGVidWcoImNoZWNrIHRoYXQgYW4gYXR0ZW1wdCB0byB1cGxvYWQgYSB0YWludGVk
IGNhbnZhcyB0aHJvd3MgYW4gZXhjZXB0aW9uLiIpOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworICB2YXIgY3R4MmQgPSBjYW52YXMuZ2V0Q29udGV4
dCgiMmQiKTsKKyAgY3R4MmQuZHJhd0ltYWdlKGltZywgMCwgMCk7CisgIGFzc2VydE1zZyhjYXVz
ZWRFeGNlcHRpb24obWFrZVRleEltYWdlMkQoZ2wsIGNhbnZhcykpLAorICAgICAgICAgICAgInRl
eEltYWdlMkQgd2l0aCBOT04gb3JpZ2luIGNsZWFuIGNhbnZhcyBzaG91bGQgdGhyb3cgZXhjZXB0
aW9uLiIpOworICBhc3NlcnRNc2coY2F1c2VkRXhjZXB0aW9uKG1ha2VUZXhTdWJJbWFnZTJEKGds
LCBjYW52YXMpKSwKKyAgICAgICAgICAgICJ0ZXhTdWJJbWFnZTJEIHdpdGggTk9OIG9yaWdpbiBj
bGVhbiBjYW52YXMgc2hvdWxkIHRocm93IGV4Y2VwdGlvbi4iKTsKKyAgYXNzZXJ0TXNnKGNhdXNl
ZEV4Y2VwdGlvbihtYWtlVGV4SW1hZ2UzRChnbCwgY2FudmFzKSksCisgICAgICAgICAgICAidGV4
SW1hZ2UzRCB3aXRoIE5PTiBvcmlnaW4gY2xlYW4gY2FudmFzIHNob3VsZCB0aHJvdyBleGNlcHRp
b24uIik7CisgIGFzc2VydE1zZyhjYXVzZWRFeGNlcHRpb24obWFrZVRleFN1YkltYWdlM0QoZ2ws
IGNhbnZhcykpLAorICAgICAgICAgICAgInRleFN1YkltYWdlM0Qgd2l0aCBOT04gb3JpZ2luIGNs
ZWFuIGNhbnZhcyBzaG91bGQgdGhyb3cgZXhjZXB0aW9uLiIpOworCisgIGRlYnVnKCJjaGVjayB0
aGF0IHJlYWRQaXhlbHMgY29udGludWVzIHRvIHdvcmsgYWdhaW5zdCB0aGlzIG9mZnNjcmVlbmNh
bnZhcy4iKTsKKyAgYXNzZXJ0TXNnKCFjYXVzZWRFeGNlcHRpb24obWFrZVJlYWRQaXhlbHMoZ2wp
KSwKKyAgICAgICAgICAgICJyZWFkUGl4ZWxzIHNob3VsZCBuZXZlciB0aHJvdyBleGNlcHRpb24g
LS0gbm90IHBvc3NpYmxlIHRvIGRpcnR5IG9yaWdpbiBvZiBXZWJHTDIgY2FudmFzLiIpOworCisg
IC8vIFRPRE86IFNob3VsZCBjaGVjayB2aWRlby4KKyAgLy8gVE9ETzogU2hvdWxkIGNoZWNrIENP
UlMgc3VwcG9ydC4KKworICBmaW5pc2hUZXN0KCk7Cit9CisKKyhhc3luYyBmdW5jdGlvbigpIHsK
KyAgY29uc3QgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZycpOworICB0cnkgewor
ICAgIGF3YWl0IHd0dS5hd2FpdE9yVGltZW91dCh3dHUubG9hZENyb3NzT3JpZ2luSW1hZ2UoaW1n
LCBkZWZhdWx0SW1nVXJsLCBsb2NhbEltZ1VybCksIDEwMDApOworICB9IGNhdGNoIChlKSB7Cisg
ICAgdGVzdEZhaWxlZChgSW1hZ2Ugc2V0dXAgZmFpbGVkICgke2V9KS5gKTsKKyAgICBmaW5pc2hU
ZXN0KCk7CisgICAgcmV0dXJuOworICB9CisgIGltYWdlTG9hZGVkKGltZyk7Cit9KSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgt
M2QtbWlwbWFwLWxldmVscy1pbnRlbC1idWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC0zZC1t
aXBtYXAtbGV2ZWxzLWludGVsLWJ1Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NDkzOGMwODkwNWQ1YmU2
NDBiYzUxMWQ0NzJkMDQ3YzU1ZWMyNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlz
Yy90ZXgtM2QtbWlwbWFwLWxldmVscy1pbnRlbC1idWcuaHRtbApAQCAtMCwwICsxLDgyIEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJH
TDIgM0QgdGV4dHVyZSBtaXBtYXAgbGV2ZWwgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWln
aHQ9IjIiIHN0eWxlPSJ3aWR0aDogMnB4OyBoZWlnaHQ6IDJweDsiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IGlkPSJ2c2hhZGVyX3RleHNpemUiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAz
MDAgZXMKK2luIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlv
biA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyX3RleHNp
emVfM2QiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIGhpZ2hwIHNhbXBsZXIzRCB0ZXg7Cit1bmlmb3Jt
IGludCBsb2Q7Cit1bmlmb3JtIGl2ZWMzIHRleFNpemU7CitvdXQgdmVjNCBmcmFnQ29sb3I7Cit2
b2lkIG1haW4oKQoreworICAgIGZyYWdDb2xvciA9ICh0ZXh0dXJlU2l6ZSh0ZXgsIGxvZCkgPT0g
dGV4U2l6ZSA/IHZlYzQoMjU1LCAwLCAwLCAyNTUpIDogdmVjNCgwLCAwLCAwLCAyNTUpKTsKK30K
Kzwvc2NyaXB0PgorCisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbihkb2N1
bWVudC50aXRsZSk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKword3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7
CisKKy8vIFRoaXMgdGVzdCBmYWlscyBvbiBJbnRlbCBNZXNhLCBzZWUgY3JidWcuY29tLzY2NjM4
NC4KKyhmdW5jdGlvbigpIHsKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGVzdCB0ZXh0dXJlU2l6
ZSBzaG91bGQgd29yayBjb3JyZWN0bHkgd2l0aCBub24temVybyBiYXNlIGxldmVsIGZvciB0ZXhT
dG9yYWdlM0QiKTsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2ws
IFsndnNoYWRlcl90ZXhzaXplJywgJ2ZzaGFkZXJfdGV4c2l6ZV8zZCddLCBbJ3ZQb3NpdGlvbidd
LCBbMF0pOworICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAgZ2wudW5pZm9ybTFp
KGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4IiksIDApOworICBnbC51bmlmb3Jt
MWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJsb2QiKSwgMSk7CisgIGdsLnVuaWZv
cm0zaShnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFNpemUiKSwgOCwgNCwgMik7
CisgIHZhciB0ZXgzZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8zRCwgdGV4M2QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJ0ZXhQYXJhbWV0ZXIoVEVYVFVSRV9NQUdfRklMVEVSKSBzaG91bGQg
c3VjY2VlZCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVf
TUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0ZXhQYXJhbWV0ZXIoVEVYVFVSRV9NSU5fRklMVEVSKSBzaG91bGQgc3VjY2VlZCIp
OworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfQkFTRV9MRVZF
TCwgMSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFyYW1l
dGVyKFRFWFRVUkVfQkFTRV9MRVZFTCkgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wudGV4U3RvcmFn
ZTNEKGdsLlRFWFRVUkVfM0QsIDQsIGdsLlJHQkE4LCAzMiwgMTYsIDgpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFN0b3JhZ2UzRCBzaG91bGQgc3VjY2VlZCIp
OworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgImNsZWFyQW5kRHJhd1F1YWQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAg
d3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGRyYXcgd2l0aCBb
MjU1LCAwLCAwLCAyNTVdIik7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4M2QpOworfSkoKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC0zZC1zaXplLWxpbWl0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvbWlzYy90ZXgtM2Qtc2l6ZS1saW1pdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMmZiYzRm
YTlmNjI0MDRhMmM5YzdkMmMwM2E1YWU3Y2IwODIyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvbWlzYy90ZXgtM2Qtc2l6ZS1saW1pdC5odG1sCkBAIC0wLDAgKzEsMTg5IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBG
cmFtZWJ1ZmZlclRleHR1cmVMYXllciBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgor
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKwor
ZnVuY3Rpb24gbnVtTGV2ZWxzRnJvbVNpemUoc2l6ZSkgeworICAgIHZhciBsZXZlbHMgPSAwOwor
ICAgIHdoaWxlICgoc2l6ZSA+PiBsZXZlbHMpID4gMCkgeworICAgICAgICArK2xldmVsczsKKyAg
ICB9CisgICAgcmV0dXJuIGxldmVsczsKK30KKworZnVuY3Rpb24gZW51bVRvU3RyaW5nKHZhbHVl
KSB7CisgICAgcmV0dXJuIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdmFsdWUpOworfQorCitmdW5j
dGlvbiB0ZXN0M0RUZXh0dXJlRGltZW5zaW9ucygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIkNoZWNraW5nIDNEIHRleHR1cmUgZGltZW5zaW9ucy4iKTsKKworICAgIHZhciB0ZXgzZCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0
ZXgzZCk7CisgICAgdmFyIG1heFRleFNpemUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYXzNEX1RF
WFRVUkVfU0laRSk7CisgICAgdmFyIG1heExldmVscyA9IG51bUxldmVsc0Zyb21TaXplKG1heFRl
eFNpemUpOworCisgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELAorICAgICAgICAgICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsCisgICAgICAg
ICAgICAgICAgICBnbC5SR0JBLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxG
b3JtYXQKKyAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aWR0aAorICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGhlaWdodAorICAgICAgICAgICAgICAgICAgLTEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGRlcHRoCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYm9yZGVyCisgICAgICAgICAgICAgICAgICBnbC5SR0JBLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0CisgICAgICAgICAgICAgICAgICBnbC5V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgLy8gdHlwZQorICAgICAgICAgICAgICAgICAg
bnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRhdGEKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAidGV4SW1hZ2UzRCBzaG91
bGQgZmFpbCBmb3IgZGltZW5zaW9uIG91dCBvZiByYW5nZS4iKTsKKyAgICBnbC50ZXhJbWFnZTNE
KGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIG1heFRleFNpemUgKyAxLCAyLCAyLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAidGV4SW1hZ2UzRCBzaG91bGQgZmFpbCBmb3Ig
ZGltZW5zaW9uIG91dCBvZiByYW5nZS4iKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4
TGV2ZWxzOyArK2kpIHsKKyAgICAgICAgdmFyIGxldmVsID0gbWF4TGV2ZWxzIC0gaSAtIDE7Cisg
ICAgICAgIHZhciBiYWRTaXplID0gMSA8PCAoaSArIDEpOworCisgICAgICAgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgbGV2ZWwsIGdsLlJHQkEsIGJhZFNpemUsIDIsIDIsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidGV4SW1hZ2UzRCBzaG91bGQgZmFpbCBmb3IgZGltZW5z
aW9uIG91dCBvZiByYW5nZS4iKTsKKyAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNE
LCBsZXZlbCwgZ2wuUkdCQSwgMiwgYmFkU2l6ZSwgMiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgbnVsbCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
VkFMVUUsICJ0ZXhJbWFnZTNEIHNob3VsZCBmYWlsIGZvciBkaW1lbnNpb24gb3V0IG9mIHJhbmdl
LiIpOworICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIGxldmVsLCBnbC5SR0JB
LCAyLCAyLCBiYWRTaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInRleEltYWdl
M0Qgc2hvdWxkIGZhaWwgZm9yIGRpbWVuc2lvbiBvdXQgb2YgcmFuZ2UuIik7CisgICAgfQorCisg
ICAgLy8gUHJvYmUgdG8gZGlzY292ZXIgdGhlIG1heCBub24tT09NIGxldmVsLgorICAgIHZhciBu
dW1UZXN0TGV2ZWxzID0gbWF4TGV2ZWxzOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGds
LnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgbnVtVGVzdExldmVscy0xLCBnbC5SR0JBLCAxLCAx
LCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgdmFyIGVy
ciA9IGdsLmdldEVycm9yKCk7CisgICAgICAgIGlmIChlcnIgPT0gZ2wuT1VUX09GX01FTU9SWSkg
eworICAgICAgICAgICAgZGVidWcoIlByb2JlIGZhaWxlZCBmb3IgbGV2ZWw9IiArIChudW1UZXN0
TGV2ZWxzLTEpICsgIiwgcmVkdWNpbmcuLi4iKTsKKyAgICAgICAgICAgIG51bVRlc3RMZXZlbHMg
LT0gMTsKKyAgICAgICAgICAgIGlmICghbnVtVGVzdExldmVscykgeworICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkZhaWxlZCB0byBhbGxvY2F0ZSBhbnkgbGV2ZWxzIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxk
IG5vdCBoaXQgbm9uLU9PTSBlcnJvcnMgZHVyaW5nIG1heCBsZXZlbCBwcm9iaW5nLiIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVGVzdExldmVsczsgKytpKSB7CisgICAgICAgIHZhciBs
ZXZlbCA9IG51bVRlc3RMZXZlbHMgLSBpIC0gMTsKKyAgICAgICAgdmFyIHNpemUgPSAxIDw8IGk7
CisKKyAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbCwgZ2wuUkdCQSwg
c2l6ZSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4SW1hZ2UzRCBzaG91bGQg
c3VjY2VlZCBmb3IgbGV2ZWw6ICIgKyBsZXZlbCArICIgIiArIHNpemUgKyAieDF4MS4iKTsKKyAg
ICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbCwgZ2wuUkdCQSwgMSwgc2l6
ZSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4SW1hZ2UzRCBzaG91bGQgc3VjY2Vl
ZCBmb3IgbGV2ZWw6ICIgKyBsZXZlbCArICIgMXgiICsgc2l6ZSArICJ4MS4iKTsKKyAgICAgICAg
Z2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbCwgZ2wuUkdCQSwgMSwgMSwgc2l6ZSwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4SW1hZ2UzRCBzaG91bGQgc3VjY2VlZCBmb3Ig
bGV2ZWw6ICIgKyBsZXZlbCArICIgMXgxeCIgKyBzaXplICsgIi4iKTsKKyAgICB9CisKKyAgICAv
LyBDbGVhbiB1cAorICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4M2QpOworfQorCitmdW5jdGlvbiB0
ZXN0M0RUZXh0dXJlUGl4ZWxTaXplKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2hl
Y2tpbmcgcGl4ZWwgZGF0YSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciByZXF1ZXN0LiIpOworCisg
ICAgdmFyIHRleDNkID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleDNkKTsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludGVybmFsZm9ybWF0OiBnbC5SR0JBLAorICAgICAgICAgICAgZm9ybWF0OiBnbC5S
R0JBLAorICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgIHNp
emU6IDQsCisgICAgICAgICAgICBkYXRhVHlwZTogVWludDhBcnJheQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdDogZ2wuUjgsCisgICAgICAgICAgICBm
b3JtYXQ6IGdsLlJFRCwKKyAgICAgICAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICBzaXplOiAxLAorICAgICAgICAgICAgZGF0YVR5cGU6IFVpbnQ4QXJyYXkKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6IGdsLlJHQjU2NSwK
KyAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCLAorICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdO
RURfU0hPUlRfNV82XzUsCisgICAgICAgICAgICBzaXplOiAxLAorICAgICAgICAgICAgZGF0YVR5
cGU6IFVpbnQxNkFycmF5CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVy
bmFsZm9ybWF0OiBnbC5SR0JBMzJJLAorICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0JBX0lOVEVH
RVIsCisgICAgICAgICAgICB0eXBlOiBnbC5JTlQsCisgICAgICAgICAgICBzaXplOiA0LAorICAg
ICAgICAgICAgZGF0YVR5cGU6IEludDMyQXJyYXkKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6IGdsLlJHQkEzMkYsCisgICAgICAgICAgICBmb3JtYXQ6
IGdsLlJHQkEsCisgICAgICAgICAgICB0eXBlOiBnbC5GTE9BVCwKKyAgICAgICAgICAgIHNpemU6
IDQsCisgICAgICAgICAgICBkYXRhVHlwZTogRmxvYXQzMkFycmF5CisgICAgICAgIH0sCisgICAg
XTsKKworICAgIHRlc3RzLmZvckVhY2goZnVuY3Rpb24odGVzdCkgeworICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgIGRlYnVnKCJUZXN0aW5nIGludGVybmFsZm9ybWF0ICIgKyBlbnVtVG9TdHJp
bmcodGVzdC5pbnRlcm5hbGZvcm1hdCkKKyAgICAgICAgICAgICAgKyAiLCBmb3JtYXQgIiArIGVu
dW1Ub1N0cmluZyh0ZXN0LmZvcm1hdCkKKyAgICAgICAgICAgICAgKyAiLCB0eXBlICIgKyBlbnVt
VG9TdHJpbmcodGVzdC50eXBlKSk7CisKKyAgICAgICAgdmFyIHBpeGVscyA9IG5ldyB0ZXN0LmRh
dGFUeXBlKDI1NiAqIDI1NiAqIDQgKiB0ZXN0LnNpemUpOworICAgICAgICBnbC50ZXhJbWFnZTNE
KGdsLlRFWFRVUkVfM0QsIDAsIHRlc3QuaW50ZXJuYWxmb3JtYXQsIDI1NiwgMjU2LCAyNTYsIDAs
IHRlc3QuZm9ybWF0LCB0ZXN0LnR5cGUsIHBpeGVscyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBiaWcg
ZW5vdWdoIGZvciByZXF1ZXN0IGJ5IHRleEltYWdlM0QuIik7CisgICAgICAgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgdGVzdC5pbnRlcm5hbGZvcm1hdCwgMjU2LCAyNTYsIDQsIDAs
IHRlc3QuZm9ybWF0LCB0ZXN0LnR5cGUsIHBpeGVscyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiQXJyYXlCdWZmZXJWaWV3IGJpZyBlbm91Z2ggZm9yIHJl
cXVlc3QgYnkgdGV4SW1hZ2UzRC4iKTsKKyAgICAgICAgcGl4ZWxzID0gbmV3IHRlc3QuZGF0YVR5
cGUoMjU2ICogMjU2ICogMSAqIHRlc3Quc2l6ZSk7CisgICAgICAgIGdsLnRleFN1YkltYWdlM0Qo
Z2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMjU2LCAyNTYsIDIsIHRlc3QuZm9ybWF0LCB0ZXN0
LnR5cGUsIHBpeGVscyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBiaWcgZW5vdWdoIGZvciByZXF1ZXN0
IGJ5IHRleFN1YkltYWdlM0QuIik7CisgICAgfSk7CisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eDNkKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgc2l6ZSBsaW1pdHMgb2YgM0QgdGV4
dHVyZXMuIik7CisKK3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCAyKSIpOworCit0ZXN0M0RUZXh0dXJlRGltZW5zaW9ucygpOwor
dGVzdDNEVGV4dHVyZVBpeGVsU2l6ZSgpOworCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9taXNjL3RleC1iYXNlLWxldmVsLWJ1Zy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4
LWJhc2UtbGV2ZWwtYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdmMDQ5ZmQ4YWI4YTQ3OGJkNDg1Njll
ZWNiOTc4MGRiNThiMjdmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1i
YXNlLWxldmVsLWJ1Zy5odG1sCkBAIC0wLDAgKzEsNzYgQEAKK++7vzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMMiB0ZXh0dXJlIGJhc2Ug
bGV2ZWwgYnVnIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhl
aWdodD0iMiIgc3R5bGU9IndpZHRoOiAycHg7IGhlaWdodDogMnB4OyI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVu
ZGVmaW5lZCwgMik7Cit2YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKword3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7
CisKK2Z1bmN0aW9uIHJ1bnRlc3QoKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRoaXMgaXMg
YSByZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8vY3JidWcuY29tLzcwNTg2NSc+
Q2hyb21pdW0gSXNzdWUgNzA1ODY1PC9hPiIpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICB2YXIgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZChnbCwgIlJHQkEiKTsK
KworICAvLyBUZXN0IHRoYXQgZmlsbGluZyBwYXJ0aWFsIGxldmVscyBpcyBlbm91Z2ggZm9yIG1p
cG1hcHBpbmcuCisgIHZhciB3aWR0aCA9IDI7CisgIHZhciBoZWlnaHQgPSAyOworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwg
d2lkdGgsIGhlaWdodCwgWzI1NSwgMCwgMCwgMjU1XSwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9CQVNF
X0xFVkVMLCAyKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGV4dHVyZSBzZXR1cCBzaG91bGQgc3VjY2VlZCIpOwor
CisgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICBn
bC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5p
dFF1YWQoZ2wpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNsZWFy
QW5kRHJhd1F1YWQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMjU1
LCAwLCAwLCAyNTVdLCAic2hvdWxkIGRyYXcgd2l0aCBbMjU1LCAwLCAwLCAyNTVdIik7CisKKyAg
d2lkdGggPSAxOworICBoZWlnaHQgPSAxOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IG51bGwpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleEltYWdl
MkQgc2hvdWxkIHN1Y2NlZWQiKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwor
ICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJzaG91bGQgZHJhdyB3aXRo
IFsyNTUsIDAsIDAsIDI1NV0iKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsImNoZWNrQ2FudmFzIHNob3VsZCBzdWNjZWVkIik7CisKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXgpOworCit9OworCitydW50ZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2Mv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1hcnJheS1idWZmZXItdmlldy1zdWItc291cmNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS13aXRoLWFycmF5
LWJ1ZmZlci12aWV3LXN1Yi1zb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWJkMmI1YTNhN2Q4OTJh
ZDI3MjI4ZWI3MjU2ODU1MGNkNTViYzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21p
c2MvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1hcnJheS1idWZmZXItdmlldy1zdWItc291
cmNlLmh0bWwKQEAgLTAsMCArMSwxOTcgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdWZXJpZmllcyB0ZXh7U3VifUlt
YWdlezJ8M31EIGNvZGUgcGF0aHMgdGFraW5nIHBhcnRpYWwgQXJyYXlCdWZmZXJWaWV3Jyk7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworCitm
dW5jdGlvbiBjcmVhdGVTb3VyY2Uod2lkdGgsIGhlaWdodCwgZGVwdGgsIHZpZXdUeXBlLCBvZmZz
ZXQpIHsKKyAgdmFyIHNpemUgPSB3aWR0aCAqIGhlaWdodCAqIGRlcHRoICogNDsgIC8vIFJHQkEK
KyAgdmFyIGJ1ZiA9IG5ldyB3aW5kb3dbdmlld1R5cGVdKHNpemUgKyBvZmZzZXQpOworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgc2l6ZTsgKytpaSkgeworICAgIGlmICh2aWV3VHlwZSA9PSAiRmxv
YXQzMkFycmF5IikKKyAgICAgIGJ1ZltpaSArIG9mZnNldF0gPSBpaSAvIDI1NS4wOworICAgIGVs
c2UKKyAgICAgIGJ1ZltpaSArIG9mZnNldF0gPSBpaTsKKyAgfQorICByZXR1cm4gYnVmOworfQor
CitmdW5jdGlvbiBjb21wYXJlUGl4ZWxzKHJlZiwgcmVmT2Zmc2V0LCBkYXRhLCB0b2wpIHsKKyAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IGRhdGEubGVuZ3RoOyArK2lpKSB7CisgICAgLy8gU2tpcCBh
bHBoYSBkdWUgdG8gc2hhZGVyJ3MgaGFuZGxpbmcgb2YgYWxwaGEgdmFsdWVzLgorICAgIGlmIChp
aSAlIDQgPT0gMykKKyAgICAgIGNvbnRpbnVlOworICAgIHZhciBzcmMgPSByZWZbaWkgKyByZWZP
ZmZzZXRdOworICAgIGlmIChyZWYgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpCisgICAgICBzcmMg
Kj0gMjU1OworICAgIGlmIChNYXRoLmFicyhzcmMgLSBkYXRhW2lpXSkgPiB0b2wpIHsKKyAgICAg
IHRlc3RGYWlsZWQoIkVsZW1lbnQgIiArIGlpICsgIjogZXhwZWN0ZWQgIiArIHNyYyArICIsIGdv
dCAiICsgZGF0YVtpaV0pOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICByZXR1cm4gdGVz
dFBhc3NlZCgidGV4dHVyZSBkYXRhIHVwbG9hZGVkIGNvcnJlY3RseSIpOworfQorCitmdW5jdGlv
biBydW4yRFRlc3QoZ2wsIHRlc3QsIHdpZHRoLCBoZWlnaHQsIHNyY09mZnNldCwgdG9sKSB7Cisg
IGRlYnVnKCIiKTsKKyAgZGVidWcoIlRlc2luZyB0ZXh7U3VifUltYWdlMkQgd2l0aCBzdWIgc291
cmNlOiBpbnRlcm5hbGZvcm1hdCA9ICIgKyB0ZXN0LmludGVybmFsZm9ybWF0ICsKKyAgICAgICAg
IiwgZm9ybWF0ID0gIiArIHRlc3QuZm9ybWF0ICsgIiwgdHlwZSA9ICIgKyB0ZXN0LnR5cGUpOwor
CisgIHZhciBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRRdWFkKGdsLCB0ZXN0LmludGVybmFs
Zm9ybWF0KTsKKyAgaWYgKCFwcm9ncmFtKSB7CisgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIHNl
dCB1cCBwcm9ncmFtIik7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGJ1ZiA9IGNyZWF0ZVNv
dXJjZSh3aWR0aCwgaGVpZ2h0LCAxLCB0ZXN0LnZpZXdUeXBlLCBzcmNPZmZzZXQpOworCisgIHZh
ciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXh0dXJlKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VE
R0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
LCBnbC5DTEFNUF9UT19FREdFKTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bFt0ZXN0LmludGVybmFsZm9ybWF0XSwgd2lkdGgsIGhlaWdodCwgMCwKKyAgICAgICAgICAgICAg
ICBnbFt0ZXN0LmZvcm1hdF0sIGdsW3Rlc3QudHlwZV0sIGJ1Ziwgc3JjT2Zmc2V0ICsgMSk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAic3JjT2Zmc2V0
IHRvbyBsYXJnZSIpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsW3Rlc3Qu
aW50ZXJuYWxmb3JtYXRdLCB3aWR0aCwgaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgIGdsW3Rl
c3QuZm9ybWF0XSwgZ2xbdGVzdC50eXBlXSwgYnVmLCBzcmNPZmZzZXQpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleEltYWdlMkQgc3VjY2VlZHMgd2l0aCBjb3Jy
ZWN0IGJ1ZmZlciBhbmQgc3JjT2Zmc2V0Iik7CisKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgIHZhciByZWFkQnVmID0gbmV3IFVpbnQ4QXJyYXkod2lk
dGggKiBoZWlnaHQgKiA0KTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBu
dWxsKTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCByZWFkQnVmKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJubyBlcnJvciIpOworICB2YXIgdG9sID0gMC41OworICBjb21wYXJlUGl4ZWxzKGJ1
Ziwgc3JjT2Zmc2V0LCByZWFkQnVmLCB0b2wpOworCisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2xbdGVzdC5pbnRlcm5hbGZvcm1hdF0sIHdpZHRoLCBoZWlnaHQsIDAsCisgICAg
ICAgICAgICAgICAgZ2xbdGVzdC5mb3JtYXRdLCBnbFt0ZXN0LnR5cGVdLCBudWxsKTsKKyAgZ2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbFt0
ZXN0LmZvcm1hdF0sIGdsW3Rlc3QudHlwZV0sCisgICAgICAgICAgICAgICAgICAgYnVmLCBzcmNP
ZmZzZXQgKyAxKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJzcmNPZmZzZXQgdG9vIGxhcmdlIik7CisgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2xbdGVzdC5mb3JtYXRdLCBnbFt0ZXN0LnR5
cGVdLAorICAgICAgICAgICAgICAgICAgIGJ1Ziwgc3JjT2Zmc2V0KTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTJEIHN1Y2NlZWRzIHdpdGggY29y
cmVjdCBidWZmZXIgYW5kIHNyY09mZnNldCIpOworCisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCwgWzAsIDAsIDAsIDI1NV0pOworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRCdWYpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIm5vIGVycm9yIik7CisgIGNvbXBhcmVQaXhlbHMoYnVmLCBzcmNPZmZzZXQs
IHJlYWRCdWYsIHRvbCk7CisKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgZ2wuZGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKworZnVuY3Rpb24gcnVuM0RUZXN0KGdsLCB0ZXN0LCB3
aWR0aCwgaGVpZ2h0LCBzcmNPZmZzZXQsIHRvbCkgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJU
ZXNpbmcgdGV4e1N1Yn1JbWFnZTNEIHdpdGggc3ViIHNvdXJjZTogaW50ZXJuYWxmb3JtYXQgPSAi
ICsgdGVzdC5pbnRlcm5hbGZvcm1hdCArCisgICAgICAgICIsIGZvcm1hdCA9ICIgKyB0ZXN0LmZv
cm1hdCArICIsIHR5cGUgPSAiICsgdGVzdC50eXBlKTsKKworICB2YXIgcHJvZ3JhbSA9IHRpdS5z
ZXR1cFRleHR1cmVkUXVhZFdpdGgzRChnbCwgdGVzdC5pbnRlcm5hbGZvcm1hdCk7CisgIGlmICgh
cHJvZ3JhbSkgeworICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBzZXQgdXAgcHJvZ3JhbSIpOwor
ICAgIHJldHVybjsKKyAgfQorCisgIHZhciBkZXB0aCA9IDE7CisgIHZhciBidWYgPSBjcmVhdGVT
b3VyY2Uod2lkdGgsIGhlaWdodCwgZGVwdGgsIHRlc3Qudmlld1R5cGUsIHNyY09mZnNldCk7CisK
KyAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleHR1cmUpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0Qs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9X
UkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
M0QsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgZ2wudGV4SW1hZ2Uz
RChnbC5URVhUVVJFXzNELCAwLCBnbFt0ZXN0LmludGVybmFsZm9ybWF0XSwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgZ2xbdGVzdC5mb3JtYXRdLCBnbFt0ZXN0LnR5
cGVdLCBidWYsIHNyY09mZnNldCArIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgInNyY09mZnNldCB0b28gbGFyZ2UiKTsKKyAgZ2wudGV4SW1hZ2Uz
RChnbC5URVhUVVJFXzNELCAwLCBnbFt0ZXN0LmludGVybmFsZm9ybWF0XSwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgZ2xbdGVzdC5mb3JtYXRdLCBnbFt0ZXN0LnR5
cGVdLCBidWYsIHNyY09mZnNldCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAidGV4SW1hZ2UzRCBzdWNjZWVkcyB3aXRoIGNvcnJlY3QgYnVmZmVyIGFuZCBzcmNPZmZz
ZXQiKTsKKworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsK
KyAgdmFyIHJlYWRCdWYgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRCdWYp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9yIik7Cisg
IHZhciB0b2wgPSAwLjU7CisgIGNvbXBhcmVQaXhlbHMoYnVmLCBzcmNPZmZzZXQsIHJlYWRCdWYs
IHRvbCk7CisKKyAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbFt0ZXN0LmludGVy
bmFsZm9ybWF0XSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgZ2xb
dGVzdC5mb3JtYXRdLCBnbFt0ZXN0LnR5cGVdLCBudWxsKTsKKyAgZ2wudGV4U3ViSW1hZ2UzRChn
bC5URVhUVVJFXzNELCAwLCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZ2xbdGVzdC5m
b3JtYXRdLCBnbFt0ZXN0LnR5cGVdLAorICAgICAgICAgICAgICAgICAgIGJ1Ziwgc3JjT2Zmc2V0
ICsgMSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
c3JjT2Zmc2V0IHRvbyBsYXJnZSIpOworICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0Qs
IDAsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBnbFt0ZXN0LmZvcm1hdF0sIGdsW3Rl
c3QudHlwZV0sCisgICAgICAgICAgICAgICAgICAgYnVmLCBzcmNPZmZzZXQpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFN1YkltYWdlM0Qgc3VjY2VlZHMgd2l0
aCBjb3JyZWN0IGJ1ZmZlciBhbmQgc3JjT2Zmc2V0Iik7CisKKyAgd3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgbnVsbCk7CisgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgcmVhZEJ1Zik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3IiKTsKKyAgY29tcGFyZVBpeGVscyhidWYsIHNyY09m
ZnNldCwgcmVhZEJ1ZiwgdG9sKTsKKworICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICBn
bC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgi
RmFpbCB0byBnZXQgYSBXZWJHTCBjb250ZXh0Iik7Cit9IGVsc2UgeworICB2YXIgdGVzdENhc2Vz
ID0gWworICAgIHsgaW50ZXJuYWxmb3JtYXQ6ICdSR0JBOCcsIGZvcm1hdDogJ1JHQkEnLCB0eXBl
OiAnVU5TSUdORURfQllURScsCisgICAgICB2aWV3VHlwZTogJ1VpbnQ4QXJyYXknLCB9LAorICAg
IHsgaW50ZXJuYWxmb3JtYXQ6ICdSR0JBOEknLCBmb3JtYXQ6ICdSR0JBX0lOVEVHRVInLCB0eXBl
OiAnQllURScsCisgICAgICB2aWV3VHlwZTogJ0ludDhBcnJheScsIH0sCisgICAgeyBpbnRlcm5h
bGZvcm1hdDogJ1JHQkExNlVJJywgZm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgdHlwZTogJ1VOU0lH
TkVEX1NIT1JUJywKKyAgICAgIHZpZXdUeXBlOiAnVWludDE2QXJyYXknLCB9LAorICAgIHsgaW50
ZXJuYWxmb3JtYXQ6ICdSR0JBMTZJJywgZm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgdHlwZTogJ1NI
T1JUJywKKyAgICAgIHZpZXdUeXBlOiAnSW50MTZBcnJheScsIH0sCisgICAgeyBpbnRlcm5hbGZv
cm1hdDogJ1JHQkEzMlVJJywgZm9ybWF0OiAnUkdCQV9JTlRFR0VSJywgdHlwZTogJ1VOU0lHTkVE
X0lOVCcsCisgICAgICB2aWV3VHlwZTogJ1VpbnQzMkFycmF5JywgfSwKKyAgICB7IGludGVybmFs
Zm9ybWF0OiAnUkdCQTMySScsIGZvcm1hdDogJ1JHQkFfSU5URUdFUicsIHR5cGU6ICdJTlQnLAor
ICAgICAgdmlld1R5cGU6ICdJbnQzMkFycmF5JywgfSwKKyAgICB7IGludGVybmFsZm9ybWF0OiAn
UkdCQTMyRicsIGZvcm1hdDogJ1JHQkEnLCB0eXBlOiAnRkxPQVQnLAorICAgICAgdmlld1R5cGU6
ICdGbG9hdDMyQXJyYXknLCB9LAorICBdOworCisgIHZhciBzcmNPZmZzZXQgPSAzOworICB2YXIg
dG9sID0gMC41OworCisgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHRlc3RDYXNlcy5sZW5ndGg7
ICsraWR4KSB7CisgICAgcnVuMkRUZXN0KGdsLCB0ZXN0Q2FzZXNbaWR4XSwgZ2wuZHJhd2luZ0J1
ZmZlcldpZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0LCBzcmNPZmZzZXQsIHRvbCk7CisgICAg
cnVuM0RUZXN0KGdsLCB0ZXN0Q2FzZXNbaWR4XSwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLCBnbC5k
cmF3aW5nQnVmZmVySGVpZ2h0LCBzcmNPZmZzZXQsIHRvbCk7CisgIH0KK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXdpdGgtYmFkLWFyZ3MtZnJvbS1kb20tZWxlbWVu
dHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS13aXRoLWJhZC1hcmdzLWZyb20tZG9t
LWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2MTZlODFkNzA5YWI5NDExMTI2ZTE4ZTk3NjUy
ZDA0Yjc5ZTRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS13
aXRoLWJhZC1hcmdzLWZyb20tZG9tLWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oJ1Rlc3RzIHRleEltYWdlMkQg
d2l0aCBpbnZhbGlkIGludGVybmFsZm9ybWF0L2Zvcm1hdC90eXBlIGNvbWJpbmF0aW9ucyBmcm9t
IHZhcmlvdXMgZG9tIGVsZW1lbnRzJyk7CisKK2RlYnVnKCI8YSBocmVmPSdodHRwczovL3d3dy5r
aHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zcGVjcy9sYXRlc3QvMi4wLyNURVhUVVJFX1RZUEVT
X0ZPUk1BVFNfRlJPTV9ET01fRUxFTUVOVFNfVEFCTEUnPlZhbGlkIGludGVybmFsZm9ybWF0L2Zv
cm1hdC90eXBlIGNvbWJpbmF0aW9uczwvYT4iKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiYyIsIHVuZGVmaW5l
ZCwgMik7CisKK3ZhciBkb1RleEltYWdlID0gZnVuY3Rpb24oZG9tRWxlbWVudCkgeworICAgIHZh
ciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQjEw
X0EyVUksIGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBk
b21FbGVtZW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBbZ2wuSU5WQUxJRF9WQUxV
RSwgZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICJUZXhJbWFnZTJEIHRh
a2luZyBSR0IxMF9BMlVJL1JHQkFfSU5URUdFUi9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYg
c2hvdWxkIGZhaWwiKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
OCwgZ2wuUkcsIGdsLkZMT0FULCBkb21FbGVtZW50KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlRleEltYWdlMkQgdGFraW5nIFJHOC9SRy9GTE9B
VCBzaG91bGQgZmFpbCIpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK30KKwordmFyIGNy
ZWF0ZUNhbnZhczJEQ29udGV4dCA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsKKyAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndp
ZHRoID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBo
ZWlnaHQpOworICAgIHJldHVybiBjdHg7Cit9OworCit2YXIgdGVzdEltYWdlID0gZnVuY3Rpb24o
dGVzdCkgeworICBkZWJ1ZygiSFRNTEltYWdlRWxlbWVudCIpOworICB2YXIgaW1nID0gd3R1Lm1h
a2VJbWFnZSh0ZXN0LnNyYywgZnVuY3Rpb24oKSB7CisgICAgZG9UZXhJbWFnZShpbWcpOworICAg
IHNldFRpbWVvdXQocnVuTmV4dFRlc3QsIDApOworICB9KTsKK30KKwordmFyIHRlc3RWaWRlbyA9
IGZ1bmN0aW9uKHRlc3QpIHsKKyAgZGVidWcoIkhUTUxWaWRlb0VsZW1lbnQgKCIgKyB0ZXN0LnZp
ZGVvVHlwZSArICIpIik7CisgIHZhciB2aWRlbyA9IHd0dS5tYWtlVmlkZW8odGVzdC5zcmMpOwor
ICBpZighdmlkZW8uY2FuUGxheVR5cGUodGVzdC52aWRlb1R5cGUpLnJlcGxhY2UoL25vLywgJycp
KSB7CisgICAgZGVidWcodGVzdC52aWRlb1R5cGUgKyAiIHVuc3VwcG9ydGVkIik7CisgICAgc2V0
VGltZW91dChydW5OZXh0VGVzdCwgMCk7CisgICAgcmV0dXJuOworICB9CisgIHd0dS5zdGFydFBs
YXlpbmdBbmRXYWl0Rm9yVmlkZW8odmlkZW8sIGZ1bmN0aW9uKCkgeworICAgIGRvVGV4SW1hZ2Uo
dmlkZW8pOworICAgIHNldFRpbWVvdXQocnVuTmV4dFRlc3QsIDApOworICB9KTsKK30KKwordmFy
IHRlc3RDYW52YXMgPSBmdW5jdGlvbih0ZXN0KSB7CisgIHZhciBjdHggPSBjcmVhdGVDYW52YXMy
RENvbnRleHQodGVzdC53aWR0aCwgdGVzdC5oZWlnaHQpOworICBkZWJ1ZygiSFRNTENhbnZhc0Vs
ZW1lbnQiKTsKKyAgZG9UZXhJbWFnZShjdHguY2FudmFzKTsKKyAgc2V0VGltZW91dChydW5OZXh0
VGVzdCwgMCk7Cit9CisKK3ZhciB0ZXN0SW1hZ2VEYXRhID0gZnVuY3Rpb24odGVzdCkgeworICB2
YXIgY3R4ID0gY3JlYXRlQ2FudmFzMkRDb250ZXh0KHRlc3Qud2lkdGgsIHRlc3QuaGVpZ2h0KTsK
KyAgdmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgdGVzdC53aWR0aCwgdGVz
dC5oZWlnaHQpOworICBkZWJ1ZygiSW1hZ2VEYXRhIik7CisgIGRvVGV4SW1hZ2UoaW1hZ2VEYXRh
KTsKKyAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7Cit9CisKK3ZhciB0ZXN0SW1hZ2VCaXRt
YXAgPSBmdW5jdGlvbih0ZXN0KSB7CisgIGRlYnVnKCJJbWFnZUJpdG1hcCIpOworICBpZighd2lu
ZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VCaXRtYXApIHsKKyAgICBkZWJ1
ZygiSW1hZ2VCaXRtYXAgaXNuJ3Qgc3VwcG9ydGVkIik7CisgICAgc2V0VGltZW91dChydW5OZXh0
VGVzdCwgMCk7CisgICAgcmV0dXJuOworICB9CisgIHZhciBjdHggPSBjcmVhdGVDYW52YXMyRENv
bnRleHQodGVzdC53aWR0aCwgdGVzdC5oZWlnaHQpOworICBjcmVhdGVJbWFnZUJpdG1hcChjdHgu
Y2FudmFzLCAwLCAwLCB0ZXN0LndpZHRoLCB0ZXN0LmhlaWdodCkudGhlbihmdW5jdGlvbihpbWFn
ZUJpdG1hcCkgeworICAgIGRvVGV4SW1hZ2UoaW1hZ2VCaXRtYXApOworICAgIHNldFRpbWVvdXQo
cnVuTmV4dFRlc3QsIDApOworICB9LCBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiY3JlYXRlSW1h
Z2VCaXRtYXAgd2FzIHJlamVjdGVkIik7CisgICAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7
CisgIH0pOworfQorCit2YXIgdGVzdHMgPSBbCisgIHsgdHlwZTogImNhbnZhcyIsIHdpZHRoOiA2
NCwgaGVpZ2h0OiA2NCwgcnVuOiB0ZXN0Q2FudmFzIH0sCisgIHsgdHlwZTogImltYWdlIiwgc3Jj
OiAiLi4vLi4vLi4vcmVzb3VyY2VzL3JlZC1ncmVlbi5wbmciLCBydW46IHRlc3RJbWFnZSB9LAor
ICB7IHR5cGU6ICJJbWFnZUJpdG1hcCIsd2lkdGg6IDY0LCBoZWlnaHQ6IDY0LCBydW46IHRlc3RJ
bWFnZUJpdG1hcCB9LAorICB7IHR5cGU6ICJJbWFnZURhdGEiLCB3aWR0aDogNjQsIGhlaWdodDog
NjQsIHJ1bjogdGVzdEltYWdlRGF0YSB9LAorICB7IHR5cGU6ICJ2aWRlbyIsIHNyYzogIi4uLy4u
Ly4uL3Jlc291cmNlcy9yZWQtZ3JlZW4ubXA0IiwgdmlkZW9UeXBlOiAndmlkZW8vbXA0OyBjb2Rl
Y3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywgcnVuOiB0ZXN0VmlkZW8gfSwKKyAgeyB0eXBl
OiAidmlkZW8iLCBzcmM6ICIuLi8uLi8uLi9yZXNvdXJjZXMvcmVkLWdyZWVuLmJ0NjAxLnZwOS53
ZWJtIiwgdmlkZW9UeXBlOiAndmlkZW8vd2VibTsgY29kZWNzPSJ2cDkiJywgcnVuOiB0ZXN0Vmlk
ZW8gfSwKKyAgeyB0eXBlOiAidmlkZW8iLCBzcmM6ICIuLi8uLi8uLi9yZXNvdXJjZXMvcmVkLWdy
ZWVuLndlYm12cDgud2VibSIsIHZpZGVvVHlwZTogJ3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4LCB2
b3JiaXMiJywgcnVuOiB0ZXN0VmlkZW8gfSwKKyAgeyB0eXBlOiAidmlkZW8iLCBzcmM6ICIuLi8u
Li8uLi9yZXNvdXJjZXMvcmVkLWdyZWVuLnRoZW9yYS5vZ3YiLCB2aWRlb1R5cGU6ICd2aWRlby9v
Z2c7IGNvZGVjcz0idGhlb3JhLCB2b3JiaXMiJywgcnVuOiB0ZXN0VmlkZW8gfSwKK107CisKK3Zh
ciB0ZXN0SW5kZXggPSAwOwordmFyIHJ1bk5leHRUZXN0ID0gZnVuY3Rpb24oKSB7CisgIGlmICh0
ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHRlc3Qg
PSB0ZXN0c1t0ZXN0SW5kZXhdOworICAgICsrdGVzdEluZGV4OworICAgIHRlc3QucnVuKHRlc3Qp
OworICB9IGVsc2UgeworICAgIGZpbmlzaFRlc3QoKTsKKyAgfQorfTsKKworcnVuTmV4dFRlc3Qo
KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
bWlzYy90ZXgtaW1hZ2Utd2l0aC1iYWQtYXJncy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LWlt
YWdlLXdpdGgtYmFkLWFyZ3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTEyMmVhNjAzMjk2Y2VhYTBjMjU0
NGVlOGJmZWFjOWUwNWI4YmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4
LWltYWdlLXdpdGgtYmFkLWFyZ3MuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0ZXhJbWFnZTJEIHdpdGggaW52YWxp
ZCBpbnRlcm5hbGZvcm1hdC9mb3JtYXQvdHlwZSBjb21iaW5hdGlvbnMnKTsKK2RlYnVnKCJUaGlz
IGluY2x1ZGVzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSdodHRwczovL2J1Z3MuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NTY4ODknPkNocm9taXVtIElz
c3VlIDY1Njg4OTwvYT4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiYyIsIG51bGwsIDIpOwordmFyIGV4dCA9IG51bGw7CitpZiAo
IWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwor
fSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworfQorCit2
YXIgZG9UZXhJbWFnZSA9IGZ1bmN0aW9uKHRlc3QpIHsKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB0ZXN0LmludGVybmFsZm9ybWF0LCA2NCwg
NjQsIDAsIHRlc3QuZm9ybWF0LCB0ZXN0LnR5cGUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIHRlc3QuZXJyb3JzLCAiVGV4SW1hZ2UyRCB0YWtpbmcgIiArIHd0dS5nbEVudW1U
b1N0cmluZyhnbCwgdGVzdC5pbnRlcm5hbGZvcm1hdCkgKyAiLyIgKworICAgICAgICB3dHUuZ2xF
bnVtVG9TdHJpbmcoZ2wsIHRlc3QuZm9ybWF0KSArICIvIiArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgdGVzdC50eXBlKSk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCit2YXIgdGVz
dHMgPSBbCisgICAgeyBpbnRlcm5hbGZvcm1hdDogZ2wuUkdCQSwgZm9ybWF0OiBnbC5SR0JBLCB0
eXBlOiBnbC5VTlNJR05FRF9CWVRFLCBlcnJvcnM6IFtnbC5OT19FUlJPUl0gfSwKKyAgICB7IGlu
dGVybmFsZm9ybWF0OiBnbC5SR0JBLCBmb3JtYXQ6IGdsLlJHQkEsIHR5cGU6IGdsLkZMT0FULCBl
cnJvcnM6IFtnbC5JTlZBTElEX09QRVJBVElPTl0gfSwKKyAgICB7IGludGVybmFsZm9ybWF0OiBn
bC5SR0JBLCBmb3JtYXQ6IGdsLlJHQkEsIHR5cGU6IGdsLkhBTEZfRkxPQVQsIGVycm9yczogW2ds
LklOVkFMSURfT1BFUkFUSU9OXSB9LAorICAgIHsgaW50ZXJuYWxmb3JtYXQ6IGdsLkxVTUlOQU5D
RSwgZm9ybWF0OiBnbC5MVU1JTkFOQ0UsIHR5cGU6IGdsLkZMT0FULCBlcnJvcnM6IFtnbC5JTlZB
TElEX09QRVJBVElPTl0gfSwKKyAgICB7IGludGVybmFsZm9ybWF0OiBnbC5MVU1JTkFOQ0VfQUxQ
SEEsIGZvcm1hdDogZ2wuTFVNSU5BTkNFX0FMUEhBLCB0eXBlOiBnbC5IQUxGX0ZMT0FULCBlcnJv
cnM6IFtnbC5JTlZBTElEX09QRVJBVElPTl0gfSwKKyAgICB7IGludGVybmFsZm9ybWF0OiAweDgy
MkEgLypHTF9SMTZfRVhUKi8gLCBmb3JtYXQ6IGdsLlJFRCwgdHlwZTogZ2wuVU5TSUdORURfU0hP
UlQsIGVycm9yczogW2dsLklOVkFMSURfVkFMVUVdIH0sCisgICAgeyBpbnRlcm5hbGZvcm1hdDog
Z2wuUkVELCBmb3JtYXQ6IGdsLlJFRCwgdHlwZTogZ2wuVU5TSUdORURfU0hPUlQsIGVycm9yczog
W2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSB9LAorXTsKKwordGVzdHMu
Zm9yRWFjaChkb1RleEltYWdlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LWlt
YWdlLXdpdGgtZGlmZmVyZW50LWRhdGEtc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgt
aW1hZ2Utd2l0aC1kaWZmZXJlbnQtZGF0YS1zb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzQzZjgz
Nzg2MmUzNDQzYWYzMGQ3NGEyMGJmNTU2MzlhNjFmZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvdGV4LWltYWdlLXdpdGgtZGlmZmVyZW50LWRhdGEtc291cmNlLmh0bWwKQEAg
LTAsMCArMSw1MSBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhczEiIHdpZHRoPSIx
NiIgaGVpZ2h0PSIxNiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMyIiB3aWR0aD0iMTYi
IGhlaWdodD0iMTYiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjE2IiBoZWlnaHQ9
IjE2Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCdUZXN0
cyB0ZXhJbWFnZTJEIHdpdGggZGlmZmVyZW50IGRhdGEgc291cmNlJyk7CisKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImMiKTsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhczEiLCB1bmRlZmluZWQsIDIpOwordmFy
IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKworLy8gRG8gVGV4SW1hZ2UyRCB0YWtpbmcgYSBj
YW52YXMgc291cmNlIGZpcnN0LgorZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsK
K2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTgsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIGMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJU
ZXhJbWFnZTJEIHRha2luZyBhIGNhbnZhcyBzb3VyY2Ugc2hvdWxkIHN1Y2NlZWQiKTsKK2dsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCMTBfQTJVSSwgMTYsIDE2LCAwLCBnbC5S
R0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgbnVsbCk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlRleGltYWdlMkQgdGFraW5nIGEgbnVs
bCBhcnJheSBidWZmZXIgc2hvdWxkIHN1Y2NlZWQiKTsKK2dsLmRlbGV0ZVRleHR1cmUodGV4KTsK
KworLy8gRG8gVGV4SW1hZ2UyRCB0YWtpbmcgYW4gYXJyYXkgYnVmZmVyIGZpcnN0LgorZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMyIiwgdW5kZWZpbmVkLCAyKTsKK3RleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CitnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQjEwX0EyVUksIDE2LCAxNiwgMCwgZ2wu
UkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIG51bGwpOword3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJUZXhpbWFnZTJEIHRha2luZyBhIG51
bGwgYXJyYXkgYnVmZmVyIHNob3VsZCBzdWNjZWVkIik7CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQjEwX0EyVUksIGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5TSUdORURfSU5U
XzJfMTBfMTBfMTBfUkVWLCBjKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElE
X1ZBTFVFLCBnbC5JTlZBTElEX0VOVU1dLCAiVGV4SW1hZ2UyRCB0YWtpbmcgUkdCMTBfQTJVSSBp
bnRlcm5hbGZvcm1hdCBhbmQgYSBjYW52YXMgc291cmNlIHNob3VsZCBmYWlsIik7CitnbC5kZWxl
dGVUZXh0dXJlKHRleCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1pbnB1dC12
YWxpZGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtaW5wdXQtdmFsaWRhdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVjNzNlOWUxZDkyNjgzNzVjNDM2YWEzMDBkY2QwZGRlYWExODg2MGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtaW5wdXQtdmFsaWRhdGlvbi5odG1s
CkBAIC0wLDAgKzEsMjQgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb250ZXh0VmVy
c2lvbiA9IDI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW5wdXQtdmFsaWRhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9taXNjL3RleC1taXBtYXAtbGV2ZWxzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90
ZXgtbWlwbWFwLWxldmVscy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZjNkMjBkMTdmNTY1NTE5YjVhMmQy
ZTM5ZTc4M2E0NWZmZWJhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgt
bWlwbWFwLWxldmVscy5odG1sCkBAIC0wLDAgKzEsMjI1IEBACis8IS0tCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgdGV4dHVyZSBtaXBtYXAg
bGV2ZWwgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDog
MnB4OyBoZWlnaHQ6IDJweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+Cit1bmlmb3JtIHZlYzQgdU11bHQ7CithdHRyaWJ1dGUgdmVjNCB2
UG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiB0ZXhDb29yZDA7Cit2YXJ5aW5nIHZlYzIgdGV4Q29v
cmQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uICogdU11bHQ7
CisgICAgdGV4Q29vcmQgPSB0ZXhDb29yZDA7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0i
ZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHRleDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3Zv
aWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQp
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzaGFkZXJfdGV4c2l6ZSIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCB2UG9zaXRpb247Cit2b2lk
IG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQgaWQ9ImZzaGFkZXJfdGV4c2l6ZV8yZCIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+I3ZlcnNpb24gMzAwIGVzCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBz
YW1wbGVyMkQgdGV4OwordW5pZm9ybSBpbnQgbG9kOwordW5pZm9ybSBpdmVjMiB0ZXhTaXplOwor
b3V0IHZlYzQgZnJhZ0NvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgICBmcmFnQ29sb3IgPSAodGV4
dHVyZVNpemUodGV4LCBsb2QpID09IHRleFNpemUgPyB2ZWM0KDI1NSwgMCwgMCwgMjU1KSA6IHZl
YzQoMCwgMCwgMCwgMjU1KSk7Cit9Cis8L3NjcmlwdD4KKworCis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwg
Mik7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5v
IGVycm9ycyBmcm9tIHNldHVwLiIpOworCisoZnVuY3Rpb24oKSB7CisgIGRlYnVnKCIiKTsKKyAg
ZGVidWcoInRlc3QgbWlwbWFwIGxldmVsIHJhbmdlcyIpOworICB2YXIgdGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisgIHZhciBwcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgIGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBb
J3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwgWzAsIDFdKTsKKworICBnbC5kaXNhYmxlKGdsLkRF
UFRIX1RFU1QpOworICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKyAgZ2wudW5pZm9ybTFpKGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4IiksIDApOworCisgIHZhciBtdWx0TG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1TXVsdCIpOworICBnbC51bmlmb3JtNGYo
bXVsdExvYywgMSwgMSwgMSwgMSk7CisKKyAgLy8gVGVzdCB0aGF0IGZpbGxpbmcgcGFydGlhbCBs
ZXZlbHMgaXMgZW5vdWdoIGZvciBtaXBtYXBwaW5nLgorICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgOCwgOCwgWzI1NSwgMCwg
MCwgMjU1XSwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZmlsbFRleHR1cmUoOHg4LCBsZXZlbD0yKSBzaG91bGQg
c3VjY2VlZCIpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgNCwgNCwgWzAsIDI1NSwgMCwg
MjU1XSwgMywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiZmlsbFRleHR1cmUoNHg0LCBsZXZlbD0zKSBzaG91bGQgc3Vj
Y2VlZCIpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgMiwgMiwgWzAsIDAsIDI1NSwgMjU1
XSwgNCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiZmlsbFRleHR1cmUoMngyLCBsZXZlbD00KSBzaG91bGQgc3VjY2Vl
ZCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQkFTRV9M
RVZFTCwgMik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFy
YW1ldGVyKFRFWFRVUkVfQkFTRV9MRVZFTCkgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BWF9MRVZFTCwgNCk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFyYW1ldGVyKFRFWFRVUkVfTUFY
X0xFVkVMKSBzaG91bGQgc3VjY2VlZCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhQYXJhbWV0ZXIoVEVYVFVSRV9NQUdfRklMVEVSKSBz
aG91bGQgc3VjY2VlZCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFBhcmFtZXRlcihURVhUVVJFX01JTl9GSUxU
RVIpIHNob3VsZCBzdWNjZWVkIik7CisgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY2xlYXJBbmREcmF3UXVhZCBz
aG91bGQgc3VjY2VlZCIpOworICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAwLCAyNTUsIDI1NV0s
ICJmaWxsaW5nIHBhcnRpYWwgbGV2ZWxzOiBzaG91bGQgZHJhdyB3aXRoIFswLCAwLCAyNTUsIDI1
NV0iKTsKKworICAvLyBUZXN0IHRoYXQgZ2VuZXJhdGVNaXBtYXAgd29ya3Mgd2l0aCBwYXJ0aWFs
IGxldmVscy4KKyAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZ2VuZXJhdGVNaXBtYXAgc2hvdWxkIHN1Y2Nl
ZWQiKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFz
KGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAiZ2VuZXJhdGVNaXBtYXAgd2l0aCBwYXJ0aWFsIGxldmVs
czogc2hvdWxkIGRyYXcgd2l0aCBbMjU1LCAwLCAwLCAyNTVdIik7CisgIGdsLmRlbGV0ZVRleHR1
cmUodGV4KTsKKworICAvLyBUZXN0IGluY29tcGxldGVsZXNzIGZvciBwYXJ0aWFsIGxldmVscy4K
KyAgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXgpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgOCwgOCwgWzI1NSwgMCwgMCwg
MjU1XSwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiZmlsbFRleHR1cmUoOHg4LCBsZXZlbD0yKSBzaG91bGQgc3Vj
Y2VlZCIpOworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgNCwgNCwgWzI1NSwgMCwgMCwgMjU1
XSwgMywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiZmlsbFRleHR1cmUoNHg0LCBsZXZlbD0zKSBzaG91bGQgc3VjY2Vl
ZCIpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQkFTRV9M
RVZFTCwgMik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFy
YW1ldGVyKFRFWFRVUkVfQkFTRV9MRVZFTCkgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BWF9MRVZFTCwgNCk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFyYW1ldGVyKFRFWFRVUkVfTUFY
X0xFVkVMKSBzaG91bGQgc3VjY2VlZCIpOworICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImNsZWFyQW5kRHJhd1F1
YWQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMjU1
XSwgImluY29tcGxldGUgdGV4dHVyZSBzaG91bGQgZHJhdyB3aXRoIFswLCAwLCAwLCAyNTVdIik7
CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKworICAvLyBUZXN0IGJhc2UgbGV2ZWwgdGV4dHVy
ZSBpc24ndCBzcGVjaWZpZWQuCisgIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgs
IDgsIDgsIFsyNTUsIDAsIDAsIDI1NV0sIDIsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZpbGxUZXh0dXJlKDh4OCwg
bGV2ZWw9Mikgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDQs
IDQsIFsyNTUsIDAsIDAsIDI1NV0sIDMsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZpbGxUZXh0dXJlKDR4NCwgbGV2
ZWw9Mykgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDIsIDIs
IFswLCAwLCAyNTUsIDI1NV0sIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZpbGxUZXh0dXJlKDJ4MiwgbGV2ZWw9
NCkgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX0JBU0VfTEVWRUwsIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgInRleFBhcmFtZXRlcihURVhUVVJFX0JBU0VfTEVWRUwpIHNob3VsZCBzdWNjZWVk
Iik7CisgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdlbmVyYXRlTWlwbWFwIHNob3VsZCBm
YWlsIGlmIGJhc2UgbGV2ZWwgdGV4dHVyZSBpcyBub3Qgc3BlY2lmaWVkIik7CisgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9CQVNFX0xFVkVMLCAyKTsKKyAgZ2wu
Z2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiZ2VuZXJhdGVNaXBtYXAgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wuZGVs
ZXRlVGV4dHVyZSh0ZXgpOworCisgIC8vIFRlc3QgM0QgdGV4dHVyZS4KKyAgdmFyIHRleDNkID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXgz
ZCk7CisgIGdsLnRleEltYWdlM0QoIGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDgsIDgsIDgs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KDggKiA4ICogOCAq
IDQpKTsKKyAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8zRCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZ2VuZXJhdGVNaXBtYXAgc2hvdWxkIHN1Y2NlZWQi
KTsKKyAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAxLCAwLCAwLCAwLCA0LCA0LCA0
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheSg0ICogNCAqIDQgKiA0
KSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4U3ViSW1hZ2Uz
RCBzaG91bGQgc3VjY2VlZCIpOworICBnbC5kZWxldGVUZXh0dXJlKHRleDNkKTsKKworICAvLyBU
ZXN0IDJEIGFycmF5IHRleHR1cmUuCisgIHZhciB0ZXgyZEFycmF5ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgyZEFycmF5KTsK
KyAgZ2wudGV4SW1hZ2UzRCggZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuUkdCQSwgOCwgOCwg
NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoOCAqIDggKiA0
ICogNCkpOworICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJnZW5lcmF0ZU1pcG1hcCBzaG91bGQg
c3VjY2VlZCIpOworICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDEsIDAs
IDAsIDAsIDQsIDQsIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5
KDQgKiA0ICogNCAqIDQpKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJ0ZXhTdWJJbWFnZTNEIHNob3VsZCBzdWNjZWVkIik7CisgIGdsLmRlbGV0ZVRleHR1cmUodGV4
MmRBcnJheSk7CisKKyAgLy8gVGVzdCBzaXplZCBpbnRlcm5hbCBmb3JtYXQgc2hvdWxkIGJlIGJv
dGggY29sb3ItcmVuZGVyYWJsZSBhbmQgdGV4dHVyZS1maWx0ZXJhYmxlCisgIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMCwgMCwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRV
UkVfMkQpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
ImdlbmVyYXRlTWlwbWFwIHNob3VsZCBmYWlsIGZvciB6ZXJvLXNpemUgdGV4dHVyZSIpOworICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCA4LCA4LCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheSg4ICogOCAqIDQpKTsKKyAgZ2wuZ2Vu
ZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiZ2VuZXJhdGVNaXBtYXAgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOFVJLCA4LCA4LCAwLCBnbC5SR0JBX0lOVEVH
RVIsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KDggKiA4ICogNCkpOworICBnbC5n
ZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJnZW5lcmF0ZU1pcG1hcCBzaG91bGQgZmFpbCBmb3Igbm9u
LXRleHR1cmUtZmlsdGVyYWJsZSBmb3JtYXQiKTsKKyAgaWYgKGdsLmdldEV4dGVuc2lvbignRVhU
X2NvbG9yX2J1ZmZlcl9mbG9hdCcpKSB7CisgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEzMkYsIDgsIDgsIDAsIGdsLlJHQkEsIGdsLkZMT0FULCBuZXcgRmxvYXQz
MkFycmF5KDggKiA4ICogNCkpOworICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8y
RCk7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
ImdlbmVyYXRlTWlwbWFwIHNob3VsZCBmYWlsIGZvciBmbG9hdCB0ZXh0dXJlIik7CisgIH0KKyAg
aWYgKGdsLmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpICYmIGdsLmdldEV4
dGVuc2lvbignT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyJykpIHsKKyAgICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTMyRiwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuRkxP
QVQsIG51bGwpOworICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImdlbmVyYXRl
TWlwbWFwIHNob3VsZCBmYWlsIGZvciB6ZXJvLXNpemUgdGV4dHVyZSIpOworICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBMzJGLCA4LCA4LCAwLCBnbC5SR0JBLCBn
bC5GTE9BVCwgbmV3IEZsb2F0MzJBcnJheSg4ICogOCAqIDQpKTsKKyAgICAgIGdsLmdlbmVyYXRl
TWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJnZW5lcmF0ZU1pcG1hcCBzaG91bGQgc3VjY2VlZCIpOworICB9CisgIGdsLmRl
bGV0ZVRleHR1cmUodGV4KTsKKworICAvLyBUZXN0IHRleHR1cmVTaXplIHNob3VsZCB3b3JrIGNv
cnJlY3RseSB3aXRoIG5vbi16ZXJvIGJhc2UgbGV2ZWwgZm9yIHRleFN0b3JhZ2UyRAorICB2YXIg
cHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAgICBnbCwgWyd2c2hhZGVyX3RleHNpemUn
LCAnZnNoYWRlcl90ZXhzaXplXzJkJ10sIFsndlBvc2l0aW9uJ10sIFswXSk7CisKKyAgZ2wudW5p
Zm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4IiksIDApOworICBnbC51
bmlmb3JtMWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJsb2QiKSwgMSk7CisgIGds
LnVuaWZvcm0yaShnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFNpemUiKSwgNywg
NCk7CisgIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGV4UGFyYW1ldGVyKFRFWFRVUkVfTUFHX0ZJTFRFUikgc2hvdWxkIHN1Y2Nl
ZWQiKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9G
SUxURVIsIGdsLkxJTkVBUik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAidGV4UGFyYW1ldGVyKFRFWFRVUkVfTUlOX0ZJTFRFUikgc2hvdWxkIHN1Y2NlZWQiKTsKKyAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0JBU0VfTEVWRUwsIDEp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFBhcmFtZXRlcihU
RVhUVVJFX0JBU0VfTEVWRUwpIHNob3VsZCBzdWNjZWVkIik7CisgIGdsLnRleFN0b3JhZ2UyRChn
bC5URVhUVVJFXzJELCA0LCBnbC5SR0JBOCwgMzEsIDE3KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdG9yYWdlMkQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgd3R1
LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJjbGVhckFuZERyYXdRdWFkIHNob3VsZCBzdWNjZWVkIik7CisgIHd0dS5jaGVj
a0NhbnZhcyhnbCwgWzI1NSwgMCwgMCwgMjU1XSwgIm5vbi16ZXJvIGJhc2UgbGV2ZWwgdGV4U3Rv
cmFnZTJEOiBzaG91bGQgZHJhdyB3aXRoIFsyNTUsIDAsIDAsIDI1NV0iKTsKKyAgZ2wuZGVsZXRl
VGV4dHVyZSh0ZXgpOworCit9KSgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2Mv
dGV4LW5ldy1mb3JtYXRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtbmV3LWZvcm1hdHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZjEwZWRiNGQzNWI4MjU4MmY4ODY4NzIwYmU2NDk5NGQzNzdjMmU0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LW5ldy1mb3JtYXRzLmh0bWwKQEAg
LTAsMCArMSw1NjUgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPkNvbmZvcm1hbmNlIHRlc3QgZm9yIFdlYkdMMiB0ZXh0dXJlIGltYWdlIGZv
cm1hdHMgc3BlY2lmaWNhdGlvbjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQi
IGhlaWdodD0iNjQiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisKKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgdGV4dHVyZSBpbWFnZSBzcGVjaWZpY2F0aW9uIGVudHJ5IHBvaW50cyAiICsKKyAgICAgICAg
ICAgICJhY2NlcHQgbmV3IGZvcm1hdHMgaW50cm9kdWNlZCBpbiBXZWJHTDIsIGFuZCBhY2NlcHQg
c2l6ZWQgaW50ZXJuYWxmb3JtYXRzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2YXIg
dmFvID0gbnVsbDsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4
dCBleGlzdHMiKTsKKworICAgIHJ1blRleEZvcm1hdHNUZXN0KCk7CisKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsK
K30KKworZnVuY3Rpb24gZW51bVRvU3RyaW5nKHZhbHVlKSB7CisgIHJldHVybiB3dHUuZ2xFbnVt
VG9TdHJpbmcoZ2wsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gcnVuVGV4Rm9ybWF0c1Rlc3QoKQor
eworICAgIC8vIHRleEZvcm1hdHMgaXMgVGFibGUgMy4yIGFuZCBUYWJsZSAzLjMgZnJvbSB0aGUg
T3BlbkdMIEVTIDMuMC40IHNwZWMuCisgICAgdmFyIHRleEZvcm1hdHMgPSBbCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCQTgiLAorICAgICAgICAgICAgdW5zaXplZGZv
cm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0JZVEUiLAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQjVfQTEiLAorICAg
ICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lH
TkVEX0JZVEUiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1h
dDogIlJHQkE0IiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAg
ICAgIHR5cGU6ICJVTlNJR05FRF9CWVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgc2l6ZWRmb3JtYXQ6ICJTUkdCOF9BTFBIQTgiLAorICAgICAgICAgICAgdW5zaXplZGZv
cm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0JZVEUiLAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQkE4X1NOT1JNIiwK
KyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJC
WVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJS
R0JBNCIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCQSIsCisgICAgICAgICAgICB0
eXBlOiAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCNV9BMSIsCisgICAgICAgICAgICB1bnNpemVkZm9y
bWF0OiAiUkdCQSIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIs
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCMTBf
QTIiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlw
ZTogIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCNV9BMSIsCisgICAgICAgICAgICB1bnNpemVk
Zm9ybWF0OiAiUkdCQSIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6
ICJSR0JBMTZGIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAg
ICAgIHR5cGU6ICJIQUxGX0ZMT0FUIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgc2l6ZWRmb3JtYXQ6ICJSR0JBMzJGIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJS
R0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCQTE2RiIsCisgICAgICAgICAgICB1bnNpemVk
Zm9ybWF0OiAiUkdCQSIsCisgICAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQkE4VUkiLAorICAgICAgICAg
ICAgdW5zaXplZGZvcm1hdDogIlJHQkFfSU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiVU5T
SUdORURfQllURSIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9y
bWF0OiAiUkdCQThJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBX0lOVEVHRVIi
LAorICAgICAgICAgICAgdHlwZTogIkJZVEUiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICBzaXplZGZvcm1hdDogIlJHQkExNlVJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3Jt
YXQ6ICJSR0JBX0lOVEVHRVIiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX1NIT1JUIiwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSR0JBMTZJ
IiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBX0lOVEVHRVIiLAorICAgICAgICAg
ICAgdHlwZTogIlNIT1JUIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6
ZWRmb3JtYXQ6ICJSR0JBMzJVSSIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCQV9J
TlRFR0VSIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9JTlQiLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQkEzMkkiLAorICAgICAgICAg
ICAgdW5zaXplZGZvcm1hdDogIlJHQkFfSU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiSU5U
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSR0Ix
MF9BMlVJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JBX0lOVEVHRVIiLAorICAg
ICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCOCIsCisgICAgICAgICAg
ICB1bnNpemVkZm9ybWF0OiAiUkdCIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9CWVRF
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSR0I1
NjUiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBl
OiAiVU5TSUdORURfQllURSIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNp
emVkZm9ybWF0OiAiU1JHQjgiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisg
ICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfQllURSIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCOF9TTk9STSIsCisgICAgICAgICAgICB1bnNp
emVkZm9ybWF0OiAiUkdCIiwKKyAgICAgICAgICAgIHR5cGU6ICJCWVRFIiwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSR0I1NjUiLAorICAgICAgICAg
ICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfU0hP
UlRfNV82XzUiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1h
dDogIlIxMUZfRzExRl9CMTBGIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0IiLAor
ICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQjlfRTUiLAorICAg
ICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdO
RURfSU5UXzVfOV85XzlfUkVWIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
c2l6ZWRmb3JtYXQ6ICJSR0IxNkYiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQiIs
CisgICAgICAgICAgICB0eXBlOiAiSEFMRl9GTE9BVCIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUjExRl9HMTFGX0IxMEYiLAorICAgICAgICAgICAg
dW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBlOiAiSEFMRl9GTE9BVCIsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCOV9FNSIs
CisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCIiwKKyAgICAgICAgICAgIHR5cGU6ICJI
QUxGX0ZMT0FUIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3Jt
YXQ6ICJSR0IzMkYiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAg
ICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBz
aXplZGZvcm1hdDogIlJHQjE2RiIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCIiwK
KyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHNpemVkZm9ybWF0OiAiUjExRl9HMTFGX0IxMEYiLAorICAgICAgICAgICAgdW5zaXpl
ZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQjlfRTUiLAorICAgICAgICAg
ICAgdW5zaXplZGZvcm1hdDogIlJHQiIsCisgICAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHQjhVSSIsCisg
ICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCX0lOVEVHRVIiLAorICAgICAgICAgICAgdHlw
ZTogIlVOU0lHTkVEX0JZVEUiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBz
aXplZGZvcm1hdDogIlJHQjhJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR0JfSU5U
RUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiQllURSIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCMTZVSSIsCisgICAgICAgICAgICB1bnNpemVk
Zm9ybWF0OiAiUkdCX0lOVEVHRVIiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX1NIT1JU
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSR0Ix
NkkiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHQl9JTlRFR0VSIiwKKyAgICAgICAg
ICAgIHR5cGU6ICJTSE9SVCIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNp
emVkZm9ybWF0OiAiUkdCMzJVSSIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCX0lO
VEVHRVIiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0lOVCIsCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiUkdCMzJJIiwKKyAgICAgICAgICAg
IHVuc2l6ZWRmb3JtYXQ6ICJSR0JfSU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiSU5UIiwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSRzgiLAor
ICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJ
R05FRF9CWVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3Jt
YXQ6ICJSRzhfU05PUk0iLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHIiwKKyAgICAg
ICAgICAgIHR5cGU6ICJCWVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
c2l6ZWRmb3JtYXQ6ICJSRzE2RiIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkciLAor
ICAgICAgICAgICAgdHlwZTogIkhBTEZfRkxPQVQiLAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHMzJGIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3Jt
YXQ6ICJSRyIsCisgICAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHMTZGIiwKKyAgICAgICAgICAgIHVuc2l6
ZWRmb3JtYXQ6ICJSRyIsCisgICAgICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHOFVJIiwKKyAgICAgICAgICAg
IHVuc2l6ZWRmb3JtYXQ6ICJSR19JTlRFR0VSIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05F
RF9CWVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6
ICJSRzhJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSR19JTlRFR0VSIiwKKyAgICAg
ICAgICAgIHR5cGU6ICJCWVRFIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
c2l6ZWRmb3JtYXQ6ICJSRzE2VUkiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJHX0lO
VEVHRVIiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX1NIT1JUIiwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSRzE2SSIsCisgICAgICAgICAg
ICB1bnNpemVkZm9ybWF0OiAiUkdfSU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiU0hPUlQi
LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlJHMzJV
SSIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdfSU5URUdFUiIsCisgICAgICAgICAg
ICB0eXBlOiAiVU5TSUdORURfSU5UIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgc2l6ZWRmb3JtYXQ6ICJSRzMySSIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdf
SU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiSU5UIiwKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSOCIsCisgICAgICAgICAgICB1bnNpemVkZm9y
bWF0OiAiUkVEIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9CWVRFIiwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSOF9TTk9STSIsCisgICAg
ICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkVEIiwKKyAgICAgICAgICAgIHR5cGU6ICJCWVRFIiwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSMTZGIiwK
KyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSRUQiLAorICAgICAgICAgICAgdHlwZTogIkhB
TEZfRkxPQVQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplZGZvcm1h
dDogIlIzMkYiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJFRCIsCisgICAgICAgICAg
ICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXpl
ZGZvcm1hdDogIlIxNkYiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJFRCIsCisgICAg
ICAgICAgICB0eXBlOiAiRkxPQVQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICBzaXplZGZvcm1hdDogIlI4VUkiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIlJFRF9J
TlRFR0VSIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9CWVRFIiwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSOEkiLAorICAgICAgICAgICAg
dW5zaXplZGZvcm1hdDogIlJFRF9JTlRFR0VSIiwKKyAgICAgICAgICAgIHR5cGU6ICJCWVRFIiwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSMTZVSSIs
CisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkVEX0lOVEVHRVIiLAorICAgICAgICAgICAg
dHlwZTogIlVOU0lHTkVEX1NIT1JUIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgc2l6ZWRmb3JtYXQ6ICJSMTZJIiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSRURf
SU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiU0hPUlQiLAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplZGZvcm1hdDogIlIzMlVJIiwKKyAgICAgICAgICAgIHVuc2l6
ZWRmb3JtYXQ6ICJSRURfSU5URUdFUiIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfSU5U
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJSMzJJ
IiwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJSRURfSU5URUdFUiIsCisgICAgICAgICAg
ICB0eXBlOiAiSU5UIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRm
b3JtYXQ6ICJERVBUSF9DT01QT05FTlQxNiIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAi
REVQVEhfQ09NUE9ORU5UIiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9TSE9SVCIsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiREVQVEhfQ09N
UE9ORU5UMjQiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogIkRFUFRIX0NPTVBPTkVOVCIs
CisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfSU5UIiwKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6ICJERVBUSF9DT01QT05FTlQxNiIsCisgICAgICAg
ICAgICB1bnNpemVkZm9ybWF0OiAiREVQVEhfQ09NUE9ORU5UIiwKKyAgICAgICAgICAgIHR5cGU6
ICJVTlNJR05FRF9JTlQiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXpl
ZGZvcm1hdDogIkRFUFRIX0NPTVBPTkVOVDMyRiIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0
OiAiREVQVEhfQ09NUE9ORU5UIiwKKyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiAiREVQVEgyNF9TVEVOQ0lM
OCIsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiREVQVEhfU1RFTkNJTCIsCisgICAgICAg
ICAgICB0eXBlOiAiVU5TSUdORURfSU5UXzI0XzgiLAorICAgICAgICB9LAorICAgICAgICAvLyBO
byBnb29kIHR5cGVkIGFycmF5IHR5cGUgZm9yIHRoaXMgZm9ybWF0LCBqdXN0IGFsbG93IHRoaXMg
Zm9ybWF0IHdoZW4gIHBpeGVsIGlzIG51bGwuCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVk
Zm9ybWF0OiAiREVQVEgzMkZfU1RFTkNJTDgiLAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDog
IkRFUFRIX1NURU5DSUwiLAorICAgICAgICAgICAgdHlwZTogIkZMT0FUXzMyX1VOU0lHTkVEX0lO
VF8yNF84X1JFViIsCisgICAgICAgIH0sCisgICAgICAgIC8vIGludGVybmFsRm9ybWF0IG9mIHRl
eEltYWdlMkQgbWF5IGJlIHVuc2l6ZWQgZm9ybWF0IGFjY29yZGluZyBUYWJsZSAzLjMgaW4gT3Bl
bkdMIEVTIDMuMC40IHNwZWMuCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiB1
bmRlZmluZWQsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCQSIsCisgICAgICAgICAg
ICB0eXBlOiAiVU5TSUdORURfQllURSIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHNpemVkZm9ybWF0OiB1bmRlZmluZWQsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAi
UkdCQSIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiB1bmRlZmluZWQsCisg
ICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdCQSIsCisgICAgICAgICAgICB0eXBlOiAiVU5T
SUdORURfU0hPUlRfNV81XzVfMSIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNpemVkZm9ybWF0OiB1bmRlZmluZWQsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiUkdC
IiwKKyAgICAgICAgICAgIHR5cGU6ICJVTlNJR05FRF9CWVRFIiwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIHVu
c2l6ZWRmb3JtYXQ6ICJSR0IiLAorICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX1NIT1JUXzVf
Nl81IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6ICJMVU1JTkFOQ0VfQUxQSEEiLAor
ICAgICAgICAgICAgdHlwZTogIlVOU0lHTkVEX0JZVEUiLAorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICBzaXplZGZvcm1hdDogdW5kZWZpbmVkLAorICAgICAgICAgICAgdW5zaXpl
ZGZvcm1hdDogIkxVTUlOQU5DRSIsCisgICAgICAgICAgICB0eXBlOiAiVU5TSUdORURfQllURSIs
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVkZm9ybWF0OiB1bmRlZmlu
ZWQsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiAiQUxQSEEiLAorICAgICAgICAgICAgdHlw
ZTogIlVOU0lHTkVEX0JZVEUiLAorICAgICAgICB9LAorICAgIF07CisKKyAgICB0ZXhGb3JtYXRz
LmZvckVhY2goZnVuY3Rpb24odGV4Zm9ybWF0KXsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzaXplZCBmb3JtYXQgIiArIHRleGZvcm1hdC5zaXplZGZvcm1hdAor
ICAgICAgICAgICAgICArICIsIHVuc2l6ZWQgZm9ybWF0ICIgKyB0ZXhmb3JtYXQudW5zaXplZGZv
cm1hdAorICAgICAgICAgICAgICArICIsIHR5cGUgIiArIHRleGZvcm1hdC50eXBlKTsKKyAgICAg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKworICAgICAgICB2YXIgc2l6ZWRmb3JtYXQgPSBnbFt0ZXhm
b3JtYXQuc2l6ZWRmb3JtYXRdOworICAgICAgICB2YXIgdW5zaXplZGZvcm1hdCA9IGdsW3RleGZv
cm1hdC51bnNpemVkZm9ybWF0XTsKKyAgICAgICAgdmFyIHR5cGUgPSBnbFt0ZXhmb3JtYXQudHlw
ZV07CisKKyAgICAgICAgLy8gcHJlcGFyZSBzb21lIGdvb2QgZGF0YSB0byBmZWVkIHRleEltYWdl
MkQgYW5kIGZyaWVuZHMgZm9yIHRoaXMgdHlwZQorICAgICAgICB2YXIgZGF0YTsKKyAgICAgICAg
c3dpdGNoKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoNCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsLkJZVEU6CisgICAgICAgICAgICAgICAgZGF0YSA9IG5l
dyBJbnQ4QXJyYXkoNCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsLlVOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF80
XzRfNF80OgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAg
ICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgICAgIGNhc2Ug
Z2wuSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAgICBkYXRhID0gbmV3IFVpbnQxNkFycmF5KDQp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5TSE9SVDoKKyAg
ICAgICAgICAgICAgICBkYXRhID0gbmV3IEludDE2QXJyYXkoNCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIGNh
c2UgZ2wuVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJ
R05FRF9JTlRfMTBGXzExRl8xMUZfUkVWOgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVF8yNF84
OgorICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgVWludDMyQXJyYXkoNCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLklOVDoKKyAgICAgICAgICAgICAgICBk
YXRhID0gbmV3IEludDMyQXJyYXkoNCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsLkZMT0FUOgorICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KDQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5GTE9B
VF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVY6CisgICAgICAgICAgICAgICAgZGF0YSA9IG51bGw7
CisgICAgICAgIH0KKworICAgICAgICAvLyBwcmVwYXJlIHNvbWUgYmFkIGRhdGEgdGhhdCBkb2Vz
bid0IGZpdCB0aGlzIHR5cGUKKyAgICAgICAgdmFyIGJhZGRhdGEgPSAoZGF0YSBpbnN0YW5jZW9m
IEZsb2F0MzJBcnJheSkKKyAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBVaW50OEFycmF5KDQp
CisgICAgICAgICAgICAgICAgICAgICAgOiBuZXcgRmxvYXQzMkFycmF5KDQpOworCisgICAgICAg
IC8vIHRlc3QgdGV4SW1hZ2UyRCB3aXRoIHVuc2l6ZWQgaW50ZXJuYWxmb3JtYXQKKyAgICAgICAg
aWYgKCFzaXplZGZvcm1hdCkgeworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCB1bnNpemVkZm9ybWF0LCAxLCAxLCAwLCB1bnNpemVkZm9ybWF0LCB0eXBlLCBkYXRh
KTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4
SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCB3aXRoIHVuc2l6ZWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdW5zaXplZGZvcm1hdCwg
MSwgMSwgMCwgdW5zaXplZGZvcm1hdCwgdHlwZSwgYmFkZGF0YSk7CisgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleEltYWdlMkQgc2hv
dWxkIGZhaWwgd2l0aCB1bnNpemVkIGludGVybmFsZm9ybWF0IGFuZCBkYXRhIG9mIHdyb25nIHR5
cGUiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHRlc3QgdGV4SW1hZ2UyRCB3
aXRoIHNpemVkIGludGVybmFsZm9ybWF0CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIHNpemVkZm9ybWF0LCAxLCAxLCAwLCB1bnNpemVkZm9ybWF0LCB0eXBlLCBk
YXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
dGV4SW1hZ2UyRCBzaG91bGQgc3VjY2VlZCB3aXRoIHNpemVkIGludGVybmFsZm9ybWF0Iik7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHNpemVkZm9ybWF0LCAx
LCAxLCAwLCB1bnNpemVkZm9ybWF0LCB0eXBlLCBiYWRkYXRhKTsKKyAgICAgICAgICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4SW1hZ2UyRCBzaG91
bGQgZmFpbCB3aXRoIHNpemVkIGludGVybmFsZm9ybWF0IGFuZCBkYXRhIG9mIHdyb25nIHR5cGUi
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRlc3QgdGV4U3ViSW1hZ2UyRAorICAgICAgICBp
ZiAoZ2wuRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWICE9IHR5cGUpIHsKKyAgICAgICAg
ICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgdW5zaXpl
ZGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgInRleFN1YkltYWdlMkQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAg
ICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgdW5zaXpl
ZGZvcm1hdCwgdHlwZSwgYmFkZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleFN1YkltYWdlMkQgc2hvdWxkIGZhaWwgd2l0
aCBkYXRhIG9mIHdyb25nIHR5cGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRlc3QgdGV4
U3RvcmFnZTJECisgICAgICAgIGlmIChzaXplZGZvcm1hdCkgeworICAgICAgICAgICAgZ2wudGV4
U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIHNpemVkZm9ybWF0LCAxLCAxKTsKKyAgICAgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4U3RvcmFnZTJEIHNo
b3VsZCBzdWNjZWVkIik7CisgICAgICAgICAgICBpZiAoZ2wuRkxPQVRfMzJfVU5TSUdORURfSU5U
XzI0XzhfUkVWICE9IHR5cGUpIHsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGRhdGEpOwor
ICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4
U3ViSW1hZ2UyRCBzaG91bGQgc3VjY2VlZCBvbiBpbW11dGFibGUtZm9ybWF0IHRleHR1cmUiKTsK
KyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAs
IDEsIDEsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGJhZGRhdGEpOworICAgICAgICAgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4U3ViSW1hZ2Uy
RCBzaG91bGQgZmFpbCBvbiBpbW11dGFibGUtZm9ybWF0IHRleHR1cmUgd2l0aCBkYXRhIG9mIHdy
b25nIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3Qg
YSAzRCB0ZXh0dXJlLgorICAgICAgICAvLyBGb3JtYXRzIGNvbnRhaW5pbmcgYSBkZXB0aCBjb21w
b25lbnQgY2FuJ3QgYmUgdXNlZCBmb3IgM0QgdGV4dHVyZXMuCisgICAgICAgIHZhciBpc2RlcHRo
Zm9ybWF0ID0KKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQgPT0gZ2wuREVQVEhfQ09NUE9ORU5U
IHx8CisgICAgICAgICAgICB1bnNpemVkZm9ybWF0ID09IGdsLkRFUFRIX1NURU5DSUw7CisgICAg
ICAgIGlmICghaXNkZXB0aGZvcm1hdCkgeworICAgICAgICAgICAgdmFyIHRleDNkID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwg
dGV4M2QpOworCisgICAgICAgICAgICAvLyB0ZXN0IHRleEltYWdlM0Qgd2l0aCB1bnNpemVkIGlu
dGVybmFsZm9ybWF0CisgICAgICAgICAgICBpZiAoIXNpemVkZm9ybWF0KSB7CisgICAgICAgICAg
ICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCB1bnNpemVkZm9ybWF0LCAxLCAx
LCAxLCAwLCB1bnNpemVkZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleEltYWdlM0Qgc2hvdWxkIHN1Y2Nl
ZWQgd2l0aCB1bnNpemVkIGludGVybmFsZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgZ2wudGV4
SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCB1bnNpemVkZm9ybWF0LCAxLCAxLCAxLCAwLCB1bnNp
emVkZm9ybWF0LCB0eXBlLCBiYWRkYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleEltYWdlM0Qgc2hvdWxkIGZhaWwg
d2l0aCB1bnNpemVkIGludGVybmFsZm9ybWF0IGFuZCBkYXRhIG9mIHdyb25nIHR5cGUiKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gdGVzdCB0ZXhJbWFnZTNEIHdp
dGggc2l6ZWQgaW50ZXJuYWxmb3JtYXQKKyAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIHNpemVkZm9ybWF0LCAxLCAxLCAxLCAwLCB1bnNpemVkZm9ybWF0LCB0
eXBlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgInRleEltYWdlM0Qgc2hvdWxkIHN1Y2NlZWQgd2l0aCBzaXplZCBpbnRlcm5hbGZv
cm1hdCIpOworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwg
c2l6ZWRmb3JtYXQsIDEsIDEsIDEsIDAsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGJhZGRhdGEpOwor
ICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAidGV4SW1hZ2UzRCBzaG91bGQgZmFpbCB3aXRoIHNpemVkIGludGVybmFsZm9ybWF0IGFu
ZCBkYXRhIG9mIHdyb25nIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
dGVzdCB0ZXhTdWJJbWFnZTNECisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRV
UkVfM0QsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGRhdGEpOwor
ICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJ
bWFnZTNEIHNob3VsZCBzdWNjZWVkIik7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGJh
ZGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sICJ0ZXhTdWJJbWFnZTNEIHNob3VsZCBmYWlsIHdpdGggZGF0YSBvZiB3cm9uZyB0
eXBlIik7CisKKyAgICAgICAgICAgIGlmIChzaXplZGZvcm1hdCkgeworICAgICAgICAgICAgICAg
IGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzNELCAxLCBzaXplZGZvcm1hdCwgMSwgMSwgMSk7
CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0
ZXhTdG9yYWdlM0Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJ
bWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIHVuc2l6ZWRmb3JtYXQs
IHR5cGUsIGRhdGEpOworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGV4U3ViSW1hZ2UzRCBzaG91bGQgc3VjY2VlZCBvbiBpbW11dGFibGUtZm9y
bWF0IHRleHR1cmUiKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRV
UkVfM0QsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIHVuc2l6ZWRmb3JtYXQsIHR5cGUsIGJhZGRhdGEp
OworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAidGV4U3ViSW1hZ2UzRCBzaG91bGQgZmFpbCBvbiBpbW11dGFibGUtZm9ybWF0IHRl
eHR1cmUgd2l0aCBkYXRhIG9mIHdyb25nIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0pOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNj
L3RleC1zcmdiLW1pcG1hcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LXNyZ2ItbWlwbWFwLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTc2NDk4N2Q4ZDQzOWVjYzEzOGI1ZWMyMmM3YTA1OTQ5NzlhMTdjYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zcmdiLW1pcG1hcC5odG1sCkBA
IC0wLDAgKzEsMjIwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCB0ZXh0dXJlIG1pcG1hcCBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjQiIGhlaWdodD0iNCIgc3R5bGU9IndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmli
dXRlIHZlYzQgdlBvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFyeWluZyB2
ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlv
bjsKKyAgICB0ZXhDb29yZCA9IHRleENvb3JkMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlk
PSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQgdGV4OwordmFyeWluZyB2ZWMyIHRleENvb3JkOwor
dm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29y
ZCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1w
bGUiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIDIp
OworCitkZXNjcmlwdGlvbigiVGVzdCBzcmdiIGVtdWxhdGlvbiBmb3IgZ2VuZXJhdGVNaXBtYXAu
Iik7CitmdW5jdGlvbiBnZW5lcmF0ZU1pcG1hcCgpCit7CisgICAgZGVidWcoIkdlbmVyYXRlIG1p
cG1hcHMgZm9yIHNSR0IgdGV4dHVyZSIpOworCisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wsIDAs
IDEpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbSgKKyAgICAgICAgZ2wsIFsn
dnNoYWRlcicsICdmc2hhZGVyJ10sIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCddLCBbMCwgMV0p
OworCisgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBnbC5kaXNhYmxlKGdsLkJM
RU5EKTsKKworICAgIHZhciBjb2xvcnMgPSB7CisgICAgICAgIGJsYW5rOiBbMCwgMCwgMCwgMF0s
CisgICAgICAgIHNyZ2JhOiBbMCwgNjMsIDEyNywgMjU1XSwKKyAgICB9OworCisgICAgdmFyIHRl
eExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisgICAgZ2wudW5p
Zm9ybTFpKHRleExvYywgMCk7CisKKyAgICB2YXIgd2lkdGggPSAxMjg7CisgICAgdmFyIGhlaWdo
dCA9IDEyODsKKyAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0g
aGVpZ2h0OworICAgIGdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgdmFy
IHNyZ2JUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgc3JnYlRleCk7CisgICAgLy8gU2V0IGZ1bGwgdGV4dHVyZSBhcyBzcmdiYSBjb2xv
ciBmaXJzdC4KKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHNyZ2JUZXgsIHdpZHRoLCBoZWlnaHQs
IGNvbG9yc1snc3JnYmEnXSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZ2wuU1JHQjhf
QUxQSEE4KTsKKyAgICAvLyBTZXQgdXAtbGVmdCByZWdpb24gb2YgdGhlIHRleHR1cmUgYXMgcmVk
IGNvbG9yLgorICAgIC8vIEluIG9yZGVyIHRvIG1ha2Ugc3VyZSBiaS1saW5lYXIgaW50ZXJwb2xh
dGlvbiBvcGVyYXRlcyBvbiBkaWZmZXJlbnQgY29sb3JzLCByZWQgcmVnaW9uCisgICAgLy8gaXMg
MSBwaXhlbCBzbWFsbGVyIHRoYW4gYSBxdWFydGVyIG9mIHRoZSBmdWxsIHRleHR1cmUgb24gZWFj
aCBzaWRlLgorICAgIHZhciByZWRXaWR0aCA9IHdpZHRoIC8gMiAtIDE7CisgICAgdmFyIHJlZEhl
aWdodCA9IGhlaWdodCAvIDIgLSAxOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShyZWRX
aWR0aCAqIHJlZEhlaWdodCAqIDQpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkV2lkdGgg
KiByZWRIZWlnaHQ7IGkrKykgeworICAgICAgICBidWZbNCAqIGkgKyAwXSA9IDI1NTsKKyAgICAg
ICAgYnVmWzQgKiBpICsgMV0gPSAwOworICAgICAgICBidWZbNCAqIGkgKyAyXSA9IDA7CisgICAg
ICAgIGJ1Zls0ICogaSArIDNdID0gMjU1OworICAgIH0KKyAgICBnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIHJlZFdpZHRoLCByZWRIZWlnaHQsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7
CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxU
RVIsIGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QpOworCisgICAgLy8gRGVjb2RlIHRoZSBzcmdi
YSB0ZXh0dXJlIHRvIGEgbGluZWFyIHRleHR1cmUgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJlZmVy
ZW5jZS4KKyAgICB2YXIgbGluZWFyVGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGxpbmVhclRleCk7CisgICAgd3R1LmZpbGxUZXh0dXJl
KGdsLCBsaW5lYXJUZXgsIHdpZHRoLCBoZWlnaHQsIHd0dS5zUkdCVG9MaW5lYXIoY29sb3JzWydz
cmdiYSddKSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgICAgLy8gU2V0IHVwLWxl
ZnQgcmVnaW9uIG9mIHRoZSB0ZXh0dXJlIGFzIHJlZCBjb2xvci4KKyAgICAvLyBJbiBvcmRlciB0
byBtYWtlIHN1cmUgYmktbGluZWFyIGludGVycG9sYXRpb24gb3BlcmF0ZXMgb24gZGlmZmVyZW50
IGNvbG9ycywgcmVkIHJlZ2lvbgorICAgIC8vIGlzIDEgcGl4ZWwgc21hbGxlciB0aGFuIGEgcXVh
cnRlciBvZiB0aGUgZnVsbCB0ZXh0dXJlIG9uIGVhY2ggc2lkZS4KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlZFdpZHRoICogcmVkSGVpZ2h0OyBpKyspIHsKKyAgICAgICAgYnVmWzQgKiBpICsg
MF0gPSAyNTU7CisgICAgICAgIGJ1Zls0ICogaSArIDFdID0gMDsKKyAgICAgICAgYnVmWzQgKiBp
ICsgMl0gPSAwOworICAgICAgICBidWZbNCAqIGkgKyAzXSA9IDI1NTsKKyAgICB9CisgICAgZ2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCByZWRXaWR0aCwgcmVkSGVpZ2h0
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgIGdsLmdlbmVyYXRlTWlwbWFw
KGdsLlRFWFRVUkVfMkQpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsKKworICAgIC8v
IENoYW5nZSBjYW52YXMgdG8gYSBzbWFsbCBzaXplLgorICAgIHdpZHRoID0gNjQ7CisgICAgaGVp
Z2h0ID0gNjQ7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9
IGhlaWdodDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8v
IERyYXcgd2l0aCBzcmdiIHRleHR1cmUgYW5kIGxpbmVhciB0ZXh0dXJlIHJlc3BlY3RpdmVseS4K
KyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBzcmdiVGV4KTsKKyAgICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHZhciByZXN1bHQgPSBuZXcgVWludDhBcnJheSh3
aWR0aCAqIGhlaWdodCAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdo
dCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgcmVzdWx0KTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCBsaW5lYXJUZXgpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgdmFyIHJlZmVyZW5jZSA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0
ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCByZWZlcmVuY2UpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZShzcmdi
VGV4KTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKGxpbmVhclRleCk7CisKKyAgICB2YXIgdG9sZXJh
bmNlID0gNzsKKyAgICB2YXIgZGlmZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICog
NCk7CisgICAgdmFyIGZhaWxlZCA9IHd0dS5jb21wYXJlUGl4ZWxzKHJlc3VsdCwgcmVmZXJlbmNl
LCB0b2xlcmFuY2UsIGRpZmYpOworICAgIGlmIChmYWlsZWQpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiR2VuZXJhdGUgd3JvbmcgbWlwbWFwcyBmb3Igc1JHQiB0ZXh0dXJlLiIpOworICAgICAgICB3
dHUuZGlzcGxheUltYWdlRGlmZihyZXN1bHQsIHJlZmVyZW5jZSwgZGlmZiwgd2lkdGgsIGhlaWdo
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiR2VuZXJhdGUgY29ycmVjdCBt
aXBtYXBzIGZvciBzUkdCIHRleHR1cmUuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBnZW5lcmF0
ZU1pcG1hcF9pbW11dGFibGVUZXh0dXJlKCkKK3sKKyAgICBkZWJ1ZygiR2VuZXJhdGUgbWlwbWFw
cyBmb3IgaW1tdXRhYmxlIHRleHR1cmUuIik7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRl
eFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCBNYXRoLmxvZzIoY2FudmFzLndpZHRoKSwgZ2wuU1JH
QjhfQUxQSEE4LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGdsLmdlbmVyYXRl
TWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiR2VuZXJhdGVNaXBtYXAgc2hvdWxkIHN1Y2NlZWQuIik7CisKKyAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleCk7Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlTWlwbWFwX3dpZHRoSGVpZ2h0
Tm90RXF1YWwoKQoreworICAgIGRlYnVnKCJHZW5lcmF0ZSBtaXBtYXBzIHdoZW4gd2lkdGggYW5k
IGhlaWdodCBhcmUgbm90IGVxdWFsLiIpOworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlNSR0I4X0FMUEhBOCwgNjQsIDMyLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5U
RVhUVVJFXzJEKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIkdl
bmVyYXRlTWlwbWFwIHNob3VsZCBzdWNjZWVkLiIpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXgpOworfQorCitmdW5jdGlvbiBnZW5lcmF0ZU1pcG1hcF9tYXhMZXZlbExlc3NUaGFuRnVsbE1p
cG1hcExldmVsKCkKK3sKKyAgICBkZWJ1ZygiR2VuZXJhdGUgbWlwbWFwcyB3aGVuIG1heExldmVs
IGlzIGxlc3MgdGhhbiBmdWxsIG1pcG1hcCBsZXZlbC4iKTsKKworICAgIHd0dS5zZXR1cFVuaXRR
dWFkKGdsLCAwLCAxKTsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oCisgICAg
ICAgIGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAn
XSwgWzAsIDFdKTsKKworICAgIHZhciBjb2xvcnMgPSBbMCwgNjMsIDEyNywgMjU1XTsKKworICAg
IHZhciB0ZXhMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworICAg
IGdsLnVuaWZvcm0xaSh0ZXhMb2MsIDApOworCisgICAgdmFyIHdpZHRoID0gMTY7CisgICAgdmFy
IGhlaWdodCA9IDE2OworICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5oZWln
aHQgPSBoZWlnaHQ7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAg
ICB2YXIgc3JnYlRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBzcmdiVGV4KTsKKyAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHNyZ2JUZXgs
IHdpZHRoLCBoZWlnaHQsIGNvbG9ycywgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZ2wu
U1JHQjhfQUxQSEE4KTsKKworICAgIC8vIFNldCBtYXggbGV2ZWwsIGNoZWNrIGlmIHRoZSBtYXgg
bGV2ZWwgbWlwbWFwIGlzIGdlbmVyYXRlZC4KKyAgICB2YXIgbWF4X2xldmVsID0gMzsKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFYX0xFVkVMLCBtYXhf
bGV2ZWwpOworICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFS
RVNUX01JUE1BUF9ORUFSRVNUKTsKKworICAgIHdpZHRoID4+PSBtYXhfbGV2ZWw7CisgICAgaGVp
Z2h0ID4+PSBtYXhfbGV2ZWw7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsK
KworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHNyZ2JUZXgpOworICAgIHd0dS5j
bGVhckFuZERyYXdVbml0UXVhZChnbCk7CisKKyAgICB2YXIgcmVmZXJlbmNlID0gd3R1LnNSR0JU
b0xpbmVhcihjb2xvcnMpOworICAgIHZhciBtc2c7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChn
bCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgcmVmZXJlbmNlLCBtc2csIFsxLDEsMSwxXSk7CisKKyAg
ICBnbC5kZWxldGVUZXh0dXJlKHNyZ2JUZXgpOworfQorCitnZW5lcmF0ZU1pcG1hcCgpOworZ2Vu
ZXJhdGVNaXBtYXBfaW1tdXRhYmxlVGV4dHVyZSgpOworZ2VuZXJhdGVNaXBtYXBfd2lkdGhIZWln
aHROb3RFcXVhbCgpOworZ2VuZXJhdGVNaXBtYXBfbWF4TGV2ZWxMZXNzVGhhbkZ1bGxNaXBtYXBM
ZXZlbCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LXN0b3JhZ2UtMmQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zdG9yYWdlLTJkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRi
ZmY0ZDNhM2RiOGUwY2EwYjhiYjI4YzEwNDBlODI2Njg4MGY5NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9taXNjL3RleC1zdG9yYWdlLTJkLmh0bWwKQEAgLTAsMCArMSwyOTAgQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPnRleFN0
b3JhZ2UyRCBjb25mb3JtYW5jZSB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI2NCIgaGVpZ2h0PSI2NCI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGV4U3RvcmFnZTJELiIpOworCitkZWJ1ZygiIik7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywg
bnVsbCwgMik7Cit2YXIgdmFvID0gbnVsbDsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQo
IldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3Nl
ZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIHJ1blRleFN0b3JhZ2UyRFRlc3QoKTsK
KworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxk
IGJlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBlbnVtVG9TdHJpbmcodmFsdWUpIHsKKyAg
cmV0dXJuIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdmFsdWUpOworfQorCitmdW5jdGlvbiBydW5U
ZXhTdG9yYWdlMkRUZXN0KCkKK3sKKyAgICB2YXIgdGV4U3RvcmFnZTJEVGVzdENhc2VzID0gWwor
ICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAg
ICBtaXBtYXA6IGZhbHNlLAorICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6IGdsLlJHQkE4LAorICAg
ICAgICAgICAgdW5zaXplZGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgICAgIHR5cGU6IGdsLlVO
U0lHTkVEX0JZVEUsCisgICAgICAgICAgICBhbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgIHJlZHBp
eGVsOiBuZXcgVWludDhBcnJheShbMHhmZiwgMHgwMCwgMHgwMCwgMHgwMF0pLAorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgICAg
ICAgICBtaXBtYXA6IHRydWUsCisgICAgICAgICAgICBzaXplZGZvcm1hdDogZ2wuUjExRl9HMTFG
X0IxMEYsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiBnbC5SR0IsCisgICAgICAgICAgICB0
eXBlOiBnbC5VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLAorICAgICAgICAgICAgYWxwaGE6
IGZhbHNlLAorICAgICAgICAgICAgLy8gUmVkIGlzIHVuc2lnbmVkIGZsb2F0aW5nIHBvaW50IHdp
dGggNSBleHBvbmVudCBiaXRzIGZvbGxvd2VkIGJ5IDYgbWFudGlzc2EgYml0cy4KKyAgICAgICAg
ICAgIC8vIFRoZSBlZmZlY3RpdmUgdmFsdWUgaXMgMl4oZXhwb25lbnQgLSAxNSkgKiAoMSArIG1h
bnRpc3NhIC8gNjQpCisgICAgICAgICAgICAvLyBTZWUgT3BlbkdMIEVTIDMuMC4zIHNwZWMsIHNl
Y3Rpb24gMi4xLjMKKyAgICAgICAgICAgIC8vIEhlcmUgd2Ugd2FudCB0byBlbmNvZGUgdGhlIHZh
bHVlIDEuMCwgd2hpY2ggd2UgYWNoaWV2ZSB3aXRoIGEgemVybyBtYW50aXNzYQorICAgICAgICAg
ICAgLy8gYW5kIGFuIGV4cG9uZW50IG9mIDE1LgorICAgICAgICAgICAgcmVkcGl4ZWw6IG5ldyBV
aW50MzJBcnJheShbMTU8PDZdKSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dGFyZ2V0OiBnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgbWlwbWFwOiB0cnVlLAorICAgICAg
ICAgICAgc2l6ZWRmb3JtYXQ6IGdsLlJHQkEzMkYsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0
OiBnbC5SR0JBLAorICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVQsCisgICAgICAgICAgICBhbHBo
YTogdHJ1ZSwKKyAgICAgICAgICAgIHJlZHBpeGVsOiBuZXcgRmxvYXQzMkFycmF5KFsxLCAwLCAw
LCAwXSksCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldDogZ2wuVEVY
VFVSRV9DVUJFX01BUCwKKyAgICAgICAgICAgIG1pcG1hcDogdHJ1ZSwKKyAgICAgICAgICAgIHNp
emVkZm9ybWF0OiBnbC5SR0JBOCwKKyAgICAgICAgICAgIHVuc2l6ZWRmb3JtYXQ6IGdsLlJHQkEs
CisgICAgICAgICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgYWxwaGE6
IHRydWUsCisgICAgICAgICAgICByZWRwaXhlbDogbmV3IFVpbnQ4QXJyYXkoWzB4ZmYsIDB4MDAs
IDB4MDAsIDB4MDBdKSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0
OiBnbC5URVhUVVJFX0NVQkVfTUFQLAorICAgICAgICAgICAgbWlwbWFwOiBmYWxzZSwKKyAgICAg
ICAgICAgIHNpemVkZm9ybWF0OiBnbC5SR0I4LAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDog
Z2wuUkdCLAorICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAg
IGFscGhhOiBmYWxzZSwKKyAgICAgICAgICAgIHJlZHBpeGVsOiBuZXcgVWludDhBcnJheShbMHhm
ZiwgMHgwMCwgMHgwMF0pLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0YXJn
ZXQ6IGdsLlRFWFRVUkVfQ1VCRV9NQVAsCisgICAgICAgICAgICBtaXBtYXA6IHRydWUsCisgICAg
ICAgICAgICBzaXplZGZvcm1hdDogZ2wuUkdCMTBfQTJVSSwKKyAgICAgICAgICAgIHVuc2l6ZWRm
b3JtYXQ6IGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgLy8gdHlwZSBlbnVtLCBiYWQg
YXMgZm9ybWF0CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldDogZ2wu
VEVYVFVSRV9DVUJFX01BUCwKKyAgICAgICAgICAgIG1pcG1hcDogZmFsc2UsCisgICAgICAgICAg
ICBzaXplZGZvcm1hdDogZ2wuUjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICB1bnNpemVkZm9y
bWF0OiBnbC5SR0IsCisgICAgICAgIH0KKyAgICBdOworCisgICAgdGV4U3RvcmFnZTJEVGVzdENh
c2VzLmZvckVhY2goZnVuY3Rpb24odGVzdGNhc2UpeworICAgICAgICB2YXIgdGFyZ2V0ID0gdGVz
dGNhc2UudGFyZ2V0OworICAgICAgICB2YXIgaW1hZ2VUYXJnZXRzOworCisgICAgICAgIGlmICh0
YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgaW1hZ2VUYXJnZXRzID0gWyBn
bC5URVhUVVJFXzJEIF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbWFnZVRhcmdl
dHMgPSBbIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9a
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1ogXTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4KTsKKyAgICAgICAgdmFyIHRl
eHNpemUgPSA0OworICAgICAgICB2YXIgbGV2ZWxzID0gdGVzdGNhc2UubWlwbWFwCisgICAgICAg
ICAgICAgICAgICAgICA/IE1hdGguZmxvb3IoTWF0aC5sb2codGV4c2l6ZSkgLyBNYXRoLmxvZygy
KSkgKyAxCisgICAgICAgICAgICAgICAgICAgICA6IDE7CisKKyAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICBkZWJ1ZygiVGVzdGluZyB0ZXhTdG9yYWdlMkQgd2l0aCB0YXJnZXQgIiArIGVudW1U
b1N0cmluZyh0YXJnZXQpICsgIiwgIiArCisgICAgICAgICAgICAgICh0ZXN0Y2FzZS5taXBtYXAg
PyAibWlwbWFwIiA6ICJubyBtaXBtYXAiKSArICIsICIgKworICAgICAgICAgICAgICAiaW50ZXJu
YWxmb3JtYXQ6ICIgKyBlbnVtVG9TdHJpbmcodGVzdGNhc2Uuc2l6ZWRmb3JtYXQpKTsKKworICAg
ICAgICBnbC50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIHRlc3RjYXNlLnNpemVkZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgdGV4c2l6ZSk7CisgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ0ZXhTdG9yYWdlMkQgc2hvdWxkIGZh
aWwgZm9yIHplcm8gd2lkdGgiKTsKKyAgICAgICAgZ2wudGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2
ZWxzLCB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHNp
emUsIDApOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LCAidGV4U3RvcmFnZTJEIHNob3VsZCBmYWlsIGZvciB6ZXJvIGhlaWdodCIpOworICAgICAgICBn
bC50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIHRlc3RjYXNlLnNpemVkZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4c2l6ZSwgLXRleHNpemUpOworICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidGV4U3RvcmFnZTJEIHNob3VsZCBm
YWlsIGZvciBuZWdhdGl2ZSBoZWlnaHQiKTsKKyAgICAgICAgZ2wudGV4U3RvcmFnZTJEKHRhcmdl
dCwgMCwgdGVzdGNhc2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXhz
aXplLCB0ZXhzaXplKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9WQUxVRSwgInRleFN0b3JhZ2UyRCBzaG91bGQgZmFpbCBmb3IgemVybyBsZXZlbHMiKTsKKyAg
ICAgICAgZ2wudGV4U3RvcmFnZTJEKHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGguY2VpbChNYXRoLmxvZyh0ZXhzaXplKSAvIE1hdGgubG9nKDIpKSArIDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHNpemUsIHRleHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgInRleFN0b3JhZ2UyRCBzaG91bGQgZmFpbCBmb3IgdG9vIG1h
bnkgbGV2ZWxzIik7CisgICAgICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1gsIGxldmVscywgdGVzdGNhc2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgIHRleHNpemUsIHRleHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX0VOVU0sICJ0ZXhTdG9yYWdlMkQgc2hvdWxkIGZhaWwgZm9yIGJhZCB0YXJn
ZXQgVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YIik7CisKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUodGFyZ2V0LCBudWxsKTsKKyAgICAgICAgZ2wudGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxz
LCB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHNpemUs
IHRleHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInRleFN0b3JhZ2UyRCBzaG91bGQgZmFpbCB3aGVuIG5vIHRleHR1cmUgaXMgYm91
bmQiKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCB0ZXgpOworCisgICAgICAgIC8v
IHRleFN0b3JhZ2UyRCBzaG91bGQgb25seSBhY2NlcHQgc2l6ZWQgaW50ZXJuYWxmb3JtYXRzCisg
ICAgICAgIGdsLnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgdGVzdGNhc2UudW5zaXplZGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHNpemUsIHRleHNpemUpOworICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJ0ZXhTdG9yYWdlMkQg
c2hvdWxkIGZhaWwgZm9yIGJhZCBpbnRlcm5hbGZvcm1hdCAiICsgZW51bVRvU3RyaW5nKHRlc3Rj
YXNlLnVuc2l6ZWRmb3JtYXQpKTsKKworICAgICAgICAvLyBPSywgbm93IGxldCdzIGZpbmFsbHkg
ZG8gdGhlIHN1Y2Nlc3NmdWxsIHRleFN0b3JhZ2UyRCBjYWxsCisgICAgICAgIGdsLnRleFN0b3Jh
Z2UyRCh0YXJnZXQsIGxldmVscywgdGVzdGNhc2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXhzaXplLCB0ZXhzaXplKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdG9yYWdlMkQgc2hvdWxkIHN1Y2NlZWQgd2l0aCBhIGdv
b2Qgc2l6ZWQgaW50ZXJuYWxmb3JtYXQiKTsKKworICAgICAgICAvLyBjaGVjayBURVhUVVJFX0lN
TVVUQUJMRV9GT1JNQVQKKyAgICAgICAgdmFyIGltbXV0YWJsZSA9IGdsLmdldFRleFBhcmFtZXRl
cih0YXJnZXQsIGdsLlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCk7CisgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZ2V0VGV4UGFyYW1ldGVyIHNob3VsZCBzdWNj
ZWVkIHdpdGggVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUIik7CisgICAgICAgIGFzc2VydE1zZyhp
bW11dGFibGUgIT0gMCwgImdldFRleFBhcmFtZXRlciB3aXRoIFRFWFRVUkVfSU1NVVRBQkxFX0ZP
Uk1BVCBzaG91bGQgbm90IHJldHVybiAwIik7CisKKyAgICAgICAgLy8gY2hlY2sgb3BlcmF0aW9u
cyBkaXNhbGxvd2VkIG9uIGltbXV0YWJsZSB0ZXh0dXJlCisgICAgICAgIGdsLnRleEltYWdlMkQo
aW1hZ2VUYXJnZXRzWzBdLCAwLCBnbC5SR0JBLCB0ZXhzaXplLCB0ZXhzaXplLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleEltYWdl
MkQgc2hvdWxkIGZhaWwgb24gaW1tdXRhYmxlIHRleHR1cmUiKTsKKyAgICAgICAgdmFyIHMzdGMg
PSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAg
ICAgIC8vIEZJWE1FIC0gc2hvdWxkIGV2ZW50dWFsbHkgdXNlIGEgY29tcHJlc3NlZCBmb3JtYXQg
dGhhdCdzIGNvcmUgaW4gV2ViR0wyLCBidXQKKyAgICAgICAgLy8gSSB3YW50ZWQgc29tZXRoaW5n
IHRoYXQgSSBjYW4gcnVuIGluIEZpcmVmb3ggdG9kYXksIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCB0
aGUgbmV3IGZvcm1hdHMgeWV0LgorICAgICAgICBpZiAoczN0YykgeworICAgICAgICAgICAgZ2wu
Y29tcHJlc3NlZFRleEltYWdlMkQoaW1hZ2VUYXJnZXRzWzBdLCAwLCBzM3RjLkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4c2l6ZSwgdGV4c2l6ZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBVaW50OEFycmF5KHRleHNpemUgKiB0ZXhzaXplKSk7CisgICAgICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImNvbXByZXNzZWRUZXhJbWFn
ZTJEIHNob3VsZCBmYWlsIG9uIGltbXV0YWJsZSB0ZXh0dXJlIik7CisgICAgICAgIH0KKyAgICAg
ICAgZ2wuY29weVRleEltYWdlMkQoaW1hZ2VUYXJnZXRzWzBdLCAwLCBnbC5SR0JBLCAwLCAwLCB0
ZXhzaXplLCB0ZXhzaXplLCAwKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJjb3B5VGV4SW1hZ2UyRCBzaG91bGQgZmFpbCBvbiBpbW11dGFi
bGUgdGV4dHVyZSIpOworCisgICAgICAgIGlmICgncmVkcGl4ZWwnIGluIHRlc3RjYXNlKSB7Cisg
ICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgdGV4dHVyZSBpbWFnZXMgaGF2ZSBvbmx5
IGJlZW4gZGVmaW5lZCBieQorICAgICAgICAgICAgLy8gdGV4U3RvcmFnZTJELCB3aGljaCBwZXIg
c3BlYyBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBoYXZpbmcKKyAgICAgICAgICAgIC8vIGRlZmlu
ZWQgdGV4dHVyZSBpbWFnZXMgd2l0aCBudWxsIGRhdGEsIHdoaWNoIHNob3VsZCBzYW1wbGUgYXMg
UkdCQSAwLDAsMCwwLgorICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2Uu
bWlwbWFwID8gZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCA6IGdsLk5FQVJFU1QpOworICAgICAg
ICAgICAgaWYgKHRlc3RjYXNlLnR5cGUgPT0gZ2wuRkxPQVQpIHsKKyAgICAgICAgICAgICAgICBn
bC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNU
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTm93IHVwbG9hZCBzb21lIHJlZCB0
ZXh0dXJlIGRhdGEKKyAgICAgICAgICAgIHZhciBzID0gdGV4c2l6ZTsKKyAgICAgICAgICAgIHZh
ciBwaXhlbHM7CisgICAgICAgICAgICBpZiAodGVzdGNhc2UucmVkcGl4ZWwgaW5zdGFuY2VvZiBV
aW50OEFycmF5KSB7CisgICAgICAgICAgICAgICAgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkodGV4
c2l6ZSAqIHRleHNpemUgKiB0ZXN0Y2FzZS5yZWRwaXhlbC5sZW5ndGgpOworICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0Y2FzZS5yZWRwaXhlbCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSB7Cisg
ICAgICAgICAgICAgICAgcGl4ZWxzID0gbmV3IFVpbnQxNkFycmF5KHRleHNpemUgKiB0ZXhzaXpl
ICogdGVzdGNhc2UucmVkcGl4ZWwubGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGVz
dGNhc2UucmVkcGl4ZWwgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkgeworICAgICAgICAgICAgICAg
IHBpeGVscyA9IG5ldyBVaW50MzJBcnJheSh0ZXhzaXplICogdGV4c2l6ZSAqIHRlc3RjYXNlLnJl
ZHBpeGVsLmxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RjYXNlLnJlZHBpeGVs
IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSB7CisgICAgICAgICAgICAgICAgcGl4ZWxzID0gbmV3
IEZsb2F0MzJBcnJheSh0ZXhzaXplICogdGV4c2l6ZSAqIHRlc3RjYXNlLnJlZHBpeGVsLmxlbmd0
aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHNp
emUgKiB0ZXhzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IHRlc3RjYXNlLnJlZHBpeGVsLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHBp
eGVsc1tpICogdGVzdGNhc2UucmVkcGl4ZWwubGVuZ3RoICsgal0gPSB0ZXN0Y2FzZS5yZWRwaXhl
bFtqXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgICAgIHd0dS5zZXR1cFRl
eHR1cmVkUXVhZChnbCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBnbC5URVhU
VVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICAgICAgd3R1LnNldHVwVGV4dHVyZWRRdWFkV2l0
aEN1YmVNYXAoZ2wpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3dHUuY2xlYXJBbmRE
cmF3VW5pdFF1YWQoZ2wpOworICAgICAgICAgICAgdmFyIGFscGhhID0gdGVzdGNhc2UuYWxwaGEg
PyAwIDogMjU1OworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgYWxw
aGFdLCAidGV4dHVyZSBzaG91bGQgc2FtcGxlIGFzIHVuaW5pdGlhbGl6ZWQgdGV4dHVyZSBhZnRl
ciB0ZXhTdG9yYWdlMkQiKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJF
XzJEKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsZXZlbHM7IGwrKykg
eworICAgICAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCwgMCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RjYXNlLnVuc2l6ZWRmb3JtYXQsIHRlc3RjYXNlLnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKKyAgICAgICAgICAgICAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTJE
IHNob3VsZCBzdWNjZWVkIG9uIGltbXV0YWJsZSB0ZXh0dXJlIGFzIGxvbmcgYXMgdGhlIGZvcm1h
dCBpcyBjb21wYXRpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIHMgLz0gMjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJFX0NV
QkVfTUFQKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsZXZlbHM7IGwr
KykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gMDsgZiA8IDY7IGYrKykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ggKyBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS51
bnNpemVkZm9ybWF0LCB0ZXN0Y2FzZS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTJEIHNob3VsZCBzdWNjZWVk
IG9uIGltbXV0YWJsZSB0ZXh0dXJlIGFzIGxvbmcgYXMgdGhlIGZvcm1hdCBpcyBjb21wYXRpYmxl
Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcyAvPSAyOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzI1
NSwgMCwgMCwgYWxwaGFdLCAidGV4dHVyZSBzaG91bGQgc2FtcGxlIGFzIHJlZCBhZnRlciB1cGxv
YWRpbmcgcmVkIHBpeGVscyB3aXRoIHRleFN1YkltYWdlMkQiKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IG5vbi1zcXVhcmUgaW1hZ2VzOiIp
OworICAgIGNvbnN0IGxldmVscyA9IDQ7CisgICAgY29uc3QgbWF4U2l6ZSA9IDEgPDwgKGxldmVs
cy0xKTsKKworICAgIGZ1bmN0aW9uIGV4cGVjdE9rKHgseSkgeworICAgICAgICBjb25zdCB0ZXgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisgICAgICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCBsZXZlbHMs
IGdsLlJHQkE4LCB4LCB5KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleFN0b3JhZ2UyRCBzaG91bGQg
c3VjY2VlZCB3aXRoIHNpemUgWyIgKyAoW3gseV0uam9pbignLCAnKSkgKyAiXS4iKTsKKyAgICAg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworICAgIH0KKyAgICBleHBlY3RPayhtYXhTaXplLCBt
YXhTaXplKTsKKyAgICBleHBlY3RPayhtYXhTaXplLCAgICAgICAxKTsKKyAgICBleHBlY3RPaygg
ICAgICAxLCBtYXhTaXplKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvbWlzYy90ZXgtc3RvcmFnZS1hbmQtc3ViaW1hZ2UtM2QuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNj
L3RleC1zdG9yYWdlLWFuZC1zdWJpbWFnZS0zZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MWZjZmZiNGUz
ZjFmYzE0MDI1NjcyZWM4NzU1NjI0ZThjMGJiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvbWlzYy90ZXgtc3RvcmFnZS1hbmQtc3ViaW1hZ2UtM2QuaHRtbApAQCAtMCwwICsxLDI0MiBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
dGV4U3RvcmFnZTNEIGFuZCB0ZXhTdWJJbWFnZTNEIGNvbmZvcm1hbmNlIHRlc3Q8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij4gPC9jYW52YXM+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0ZXhTdG9yYWdl
M0QgYW5kIHRleFN1YkltYWdlM0QuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKK3ZhciB2
YW8gPSBudWxsOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0
IGV4aXN0cyIpOworCisgICAgcnVuVGV4U3RvcmFnZUFuZFN1YkltYWdlM0RUZXN0KCk7CisKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBu
byBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gZW51bVRvU3RyaW5nKHZhbHVlKSB7CisgIHJldHVy
biB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gcnVuVGV4U3Rv
cmFnZUFuZFN1YkltYWdlM0RUZXN0KCkKK3sKKyAgICB2YXIgdGV4U3RvcmFnZTNEVGVzdENhc2Vz
ID0gWworICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisgICAg
ICAgICAgICBtaXBtYXA6IGZhbHNlLAorICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6IGdsLlJHQkE4
LAorICAgICAgICAgICAgdW5zaXplZGZvcm1hdDogZ2wuUkdCQSwKKyAgICAgICAgICAgIHR5cGU6
IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICBhbHBoYTogdHJ1ZSwKKyAgICAgICAgICAg
IHJlZHBpeGVsOiBuZXcgVWludDhBcnJheShbMHhmZiwgMHgwMCwgMHgwMCwgMHgwMF0pLAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisg
ICAgICAgICAgICBtaXBtYXA6IHRydWUsCisgICAgICAgICAgICBzaXplZGZvcm1hdDogZ2wuUjEx
Rl9HMTFGX0IxMEYsCisgICAgICAgICAgICB1bnNpemVkZm9ybWF0OiBnbC5SR0IsCisgICAgICAg
ICAgICB0eXBlOiBnbC5VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLAorICAgICAgICAgICAg
YWxwaGE6IGZhbHNlLAorICAgICAgICAgICAgLy8gUmVkIGlzIHVuc2lnbmVkIGZsb2F0aW5nIHBv
aW50IHdpdGggNSBleHBvbmVudCBiaXRzIGZvbGxvd2VkIGJ5IDYgbWFudGlzc2EgYml0cy4KKyAg
ICAgICAgICAgIC8vIFRoZSBlZmZlY3RpdmUgdmFsdWUgaXMgMl4oZXhwb25lbnQgLSAxNSkgKiAo
MSArIG1hbnRpc3NhIC8gNjQpCisgICAgICAgICAgICAvLyBTZWUgT3BlbkdMIEVTIDMuMC4zIHNw
ZWMsIHNlY3Rpb24gMi4xLjMKKyAgICAgICAgICAgIC8vIEhlcmUgd2Ugd2FudCB0byBlbmNvZGUg
dGhlIHZhbHVlIDEuMCwgd2hpY2ggd2UgYWNoaWV2ZSB3aXRoIGEgemVybyBtYW50aXNzYQorICAg
ICAgICAgICAgLy8gYW5kIGFuIGV4cG9uZW50IG9mIDE1LgorICAgICAgICAgICAgcmVkcGl4ZWw6
IG5ldyBVaW50MzJBcnJheShbMTU8PDZdKSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdGFyZ2V0OiBnbC5URVhUVVJFXzNELAorICAgICAgICAgICAgbWlwbWFwOiB0cnVlLAor
ICAgICAgICAgICAgc2l6ZWRmb3JtYXQ6IGdsLlJHQkEzMkYsCisgICAgICAgICAgICB1bnNpemVk
Zm9ybWF0OiBnbC5SR0JBLAorICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVQsCisgICAgICAgICAg
ICBhbHBoYTogdHJ1ZSwKKyAgICAgICAgICAgIHJlZHBpeGVsOiBuZXcgRmxvYXQzMkFycmF5KFsx
LCAwLCAwLCAwXSksCisgICAgICAgIH0sCisgICAgXTsKKworICAgIHRleFN0b3JhZ2UzRFRlc3RD
YXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RjYXNlKXsKKyAgICAgICAgdmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4
KTsKKyAgICAgICAgdmFyIHRleHNpemUgPSA0OworICAgICAgICB2YXIgbGV2ZWxzID0gdGVzdGNh
c2UubWlwbWFwCisgICAgICAgICAgICAgICAgICAgICA/IE1hdGguZmxvb3IoTWF0aC5sb2codGV4
c2l6ZSkgLyBNYXRoLmxvZygyKSkgKyAxCisgICAgICAgICAgICAgICAgICAgICA6IDE7CisKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiVGVzdGluZyB0ZXhTdG9yYWdlM0Qgd2l0
aCAiICsKKyAgICAgICAgICAgICAgKHRlc3RjYXNlLm1pcG1hcCA/ICJtaXBtYXAiIDogIm5vIG1p
cG1hcCIpICsgIiwgIiArCisgICAgICAgICAgICAgICJpbnRlcm5hbGZvcm1hdDogIiArIGVudW1U
b1N0cmluZyh0ZXN0Y2FzZS5zaXplZGZvcm1hdCkpOworCisgICAgICAgIGdsLnRleFN0b3JhZ2Uz
RChnbC5URVhUVVJFXzNELCBsZXZlbHMsIHRlc3RjYXNlLnNpemVkZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgdGV4c2l6ZSwgdGV4c2l6ZSk7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ0ZXhTdG9yYWdlM0Qgc2hvdWxkIGZhaWwg
Zm9yIHplcm8gd2lkdGgiKTsKKyAgICAgICAgZ2wudGV4U3RvcmFnZTNEKGdsLlRFWFRVUkVfM0Qs
IGxldmVscywgdGVzdGNhc2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXhzaXplLCAwLCB0ZXhzaXplKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgInRleFN0b3JhZ2UzRCBzaG91bGQgZmFpbCBmb3IgemVybyBoZWlnaHQi
KTsKKyAgICAgICAgZ2wudGV4U3RvcmFnZTNEKGdsLlRFWFRVUkVfM0QsIGxldmVscywgdGVzdGNh
c2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXhzaXplLCB0ZXhzaXpl
LCAwKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
InRleFN0b3JhZ2UzRCBzaG91bGQgZmFpbCBmb3IgemVybyBkZXB0aCIpOworICAgICAgICBnbC50
ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8zRCwgbGV2ZWxzLCB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRleHNpemUsIC10ZXhzaXplLCB0ZXhzaXplKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInRleFN0b3Jh
Z2UzRCBzaG91bGQgZmFpbCBmb3IgbmVnYXRpdmUgaGVpZ2h0Iik7CisgICAgICAgIGdsLnRleFN0
b3JhZ2UzRChnbC5URVhUVVJFXzNELCAwLCB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHNpemUsIHRleHNpemUsIHRleHNpemUpOworICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidGV4U3RvcmFnZTNEIHNob3Vs
ZCBmYWlsIGZvciB6ZXJvIGxldmVscyIpOworICAgICAgICBpZiAodGVzdGNhc2UubWlwbWFwKSB7
CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8zRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbHMgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RjYXNlLnNpemVkZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHNp
emUsIHRleHNpemUsIHRleHNpemUpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0ZXhTdG9yYWdlM0Qgc2hvdWxkIGZhaWwgZm9yIHRv
byBtYW55IGxldmVscyIpOworICAgICAgICB9CisgICAgICAgIGdsLnRleFN0b3JhZ2UzRChnbC5U
RVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGNhc2Uuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXhzaXplLCB0ZXhzaXplLCB0ZXhzaXplKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAidGV4U3RvcmFnZTNEIHNob3VsZCBmYWlsIGZvciB0YXJn
ZXQgVEVYVFVSRV8yRCIpOworICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV9DVUJF
X01BUCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RjYXNlLnNpemVkZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGV4
c2l6ZSwgdGV4c2l6ZSwgdGV4c2l6ZSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfRU5VTSwgInRleFN0b3JhZ2UzRCBzaG91bGQgZmFpbCBmb3IgdGFyZ2V0IFRF
WFRVUkVfQ1VCRV9NQVAiKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwg
bnVsbCk7CisgICAgICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbHMsIHRl
c3RjYXNlLnNpemVkZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGV4c2l6ZSwgdGV4
c2l6ZSwgdGV4c2l6ZSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAidGV4U3RvcmFnZTNEIHNob3VsZCBmYWlsIHdoZW4gbm8gdGV4dHVyZSBp
cyBib3VuZCIpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXgpOwor
CisgICAgICAgIC8vIHRleFN0b3JhZ2UzRCBzaG91bGQgb25seSBhY2NlcHQgc2l6ZWQgaW50ZXJu
YWxmb3JtYXRzCisgICAgICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzNELCBsZXZlbHMs
IHRlc3RjYXNlLnVuc2l6ZWRmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXhzaXpl
LCB0ZXhzaXplLCB0ZXhzaXplKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9FTlVNLCAidGV4U3RvcmFnZTNEIHNob3VsZCBmYWlsIGZvciBiYWQgaW50ZXJuYWxm
b3JtYXQgIiArIGVudW1Ub1N0cmluZyh0ZXN0Y2FzZS51bnNpemVkZm9ybWF0KSk7CisKKyAgICAg
ICAgdmFyIHBpeGVsczsKKyAgICAgICAgdmFyIG51bWJlcl9vZl9waXhlbHMgPSB0ZXhzaXplICog
dGV4c2l6ZSAqIHRleHNpemU7CisgICAgICAgIGlmICh0ZXN0Y2FzZS5yZWRwaXhlbCBpbnN0YW5j
ZW9mIFVpbnQ4QXJyYXkpIHsKKyAgICAgICAgICAgIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KG51
bWJlcl9vZl9waXhlbHMgKiB0ZXN0Y2FzZS5yZWRwaXhlbC5sZW5ndGgpOworICAgICAgICB9IGVs
c2UgaWYgKHRlc3RjYXNlLnJlZHBpeGVsIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIHsKKyAgICAg
ICAgICAgIHBpeGVscyA9IG5ldyBVaW50MTZBcnJheShudW1iZXJfb2ZfcGl4ZWxzICogdGVzdGNh
c2UucmVkcGl4ZWwubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlIGlmICh0ZXN0Y2FzZS5yZWRwaXhl
bCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSB7CisgICAgICAgICAgICBwaXhlbHMgPSBuZXcgVWlu
dDMyQXJyYXkobnVtYmVyX29mX3BpeGVscyAqIHRlc3RjYXNlLnJlZHBpeGVsLmxlbmd0aCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAodGVzdGNhc2UucmVkcGl4ZWwgaW5zdGFuY2VvZiBGbG9hdDMyQXJy
YXkpIHsKKyAgICAgICAgICAgIHBpeGVscyA9IG5ldyBGbG9hdDMyQXJyYXkobnVtYmVyX29mX3Bp
eGVscyAqIHRlc3RjYXNlLnJlZHBpeGVsLmxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBudW1iZXJfb2ZfcGl4ZWxzOyBpKyspIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgdGVzdGNhc2UucmVkcGl4ZWwubGVuZ3RoOyBqKyspIHsKKyAgICAg
ICAgICAgICAgICBwaXhlbHNbaSAqIHRlc3RjYXNlLnJlZHBpeGVsLmxlbmd0aCArIGpdID0gdGVz
dGNhc2UucmVkcGl4ZWxbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBn
bC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhzaXplLCB0ZXhzaXplLCB0
ZXhzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLnVuc2l6ZWRmb3JtYXQs
IHRlc3RjYXNlLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAg
InRleFN1YkltYWdlM0Qgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfRU5VTSBpZiBwYXNzZWQgVEVY
VFVSRV8yRCB0YXJnZXQiKTsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNE
LAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4c2l6ZSwgdGV4c2l6ZSwgdGV4c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0Y2FzZS51bnNpemVkZm9ybWF0LCB0ZXN0Y2FzZS50eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHBpeGVscyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgInRleFN1YkltYWdlM0Qgc2hvdWxkIGZh
aWwgaWYgdGV4U3RvcmFnZTNEIGhhcyBub3Qgc3VjY2VlZGVkIik7CisKKyAgICAgICAgLy8gT0ss
IG5vdyBsZXQncyBmaW5hbGx5IGRvIHRoZSBzdWNjZXNzZnVsbCB0ZXhTdG9yYWdlM0QgY2FsbAor
ICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8zRCwgbGV2ZWxzLCB0ZXN0Y2FzZS5z
aXplZGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHNpemUsIHRleHNpemUsIHRl
eHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRl
eFN0b3JhZ2UzRCBzaG91bGQgc3VjY2VlZCB3aXRoIGEgZ29vZCBzaXplZCBpbnRlcm5hbGZvcm1h
dCIpOworCisgICAgICAgIC8vIFN1YnNlcXVlbnQgdGV4U3RvcmFnZTNEIGNhbGxzIHNob3VsZCBm
YWlsLCBldmVuIGlkZW50aWNhbCBvbmVzLgorICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVY
VFVSRV8zRCwgbGV2ZWxzLCB0ZXN0Y2FzZS5zaXplZGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHNpemUsIHRleHNpemUsIHRleHNpemUpOworICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleFN0b3JhZ2UzRCBzaG91bGQgZmFp
bCBvbiBpbW11dGFibGUtZm9ybWF0IHRleHR1cmUiKTsKKworICAgICAgICB2YXIgcyA9IHRleHNp
emU7CisgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGV2ZWxzOyBsKyspIHsKKyAgICAgICAg
ICAgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgcywg
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UudW5zaXplZGZvcm1hdCwg
dGVzdGNhc2UudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKKyAg
ICAgICAgICAgIHMgLz0gMjsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidGV4U3ViSW1hZ2UzRCBzaG91bGQgc3VjY2VlZCBvbiBpbW11dGFibGUgdGV4
dHVyZSBhcyBsb25nIGFzIHRoZSBmb3JtYXQgaXMgY29tcGF0aWJsZSIpOworICAgICAgICB9Cisg
ICAgICAgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBsZXZlbHMsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGV4c2l6
ZSwgdGV4c2l6ZSwgdGV4c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS51
bnNpemVkZm9ybWF0LCB0ZXN0Y2FzZS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVscyk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAidGV4U3ViSW1hZ2UzRCBzaG91bGQgZmFpbCBmb3IgdG9vLWhpZ2ggbGV2ZWwiKTsKKyAg
ICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELAorICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGV4c2l6ZSwgdGV4
c2l6ZSwgdGV4c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS51bnNpemVk
Zm9ybWF0LCB0ZXN0Y2FzZS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7
CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ0ZXhT
dWJJbWFnZTNEIHNob3VsZCBmYWlsIGZvciBkaW1lbnNpb24gb3V0IG9mIHJhbmdlIik7CisgICAg
fSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3Qgbm9uLXNxdWFyZSBpbWFnZXM6
Iik7CisgICAgY29uc3QgbGV2ZWxzID0gNDsKKyAgICBjb25zdCBtYXhTaXplID0gMSA8PCAobGV2
ZWxzLTEpOworCisgICAgZnVuY3Rpb24gZXhwZWN0T2sodGFyZ2V0LCB4LHkseiwgZXJyKSB7Cisg
ICAgICAgIGRlYnVnKCIodGFyZ2V0PSIgKyB0YXJnZXQgKyAiLCBzaXplPVsiICsgKFt4LHksel0u
am9pbignLCAnKSkgKyAiXSkiKTsKKyAgICAgICAgY29uc3QgdGV4ID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbFt0YXJnZXRdLCB0ZXgpOworICAgICAgICBn
bC50ZXhTdG9yYWdlM0QoZ2xbdGFyZ2V0XSwgbGV2ZWxzKzEsIGdsLlJHQkE4LCB4LCB5LCB6KTsK
KyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJs
ZXZlbHM9bGV2ZWxzKzEiKTsKKworICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2xbdGFyZ2V0XSwg
bGV2ZWxzLCBnbC5SR0JBOCwgeCwgeSwgeik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsW2Vycl0sICJsZXZlbHM9bGV2ZWxzIik7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUo
dGV4KTsKKyAgICB9CisgICAgZXhwZWN0T2soIlRFWFRVUkVfM0QiLCBtYXhTaXplLCBtYXhTaXpl
LCBtYXhTaXplLCAiTk9fRVJST1IiKTsKKyAgICBleHBlY3RPaygiVEVYVFVSRV8zRCIsIG1heFNp
emUsIG1heFNpemUsICAgICAgIDEsICJOT19FUlJPUiIpOworICAgIGV4cGVjdE9rKCJURVhUVVJF
XzNEIiwgbWF4U2l6ZSwgICAgICAgMSwgbWF4U2l6ZSwgIk5PX0VSUk9SIik7CisgICAgZXhwZWN0
T2soIlRFWFRVUkVfM0QiLCBtYXhTaXplLCAgICAgICAxLCAgICAgICAxLCAiTk9fRVJST1IiKTsK
KyAgICBleHBlY3RPaygiVEVYVFVSRV8zRCIsICAgICAgIDEsIG1heFNpemUsIG1heFNpemUsICJO
T19FUlJPUiIpOworICAgIGV4cGVjdE9rKCJURVhUVVJFXzNEIiwgICAgICAgMSwgbWF4U2l6ZSwg
ICAgICAgMSwgIk5PX0VSUk9SIik7CisgICAgZXhwZWN0T2soIlRFWFRVUkVfM0QiLCAgICAgICAx
LCAgICAgICAxLCBtYXhTaXplLCAiTk9fRVJST1IiKTsKKworICAgIGV4cGVjdE9rKCJURVhUVVJF
XzJEX0FSUkFZIiwgbWF4U2l6ZSwgbWF4U2l6ZSwgMTAsICJOT19FUlJPUiIpOworICAgIGV4cGVj
dE9rKCJURVhUVVJFXzJEX0FSUkFZIiwgbWF4U2l6ZSwgICAgICAgMSwgMTAsICJOT19FUlJPUiIp
OworICAgIGV4cGVjdE9rKCJURVhUVVJFXzJEX0FSUkFZIiwgICAgICAgMSwgbWF4U2l6ZSwgMTAs
ICJOT19FUlJPUiIpOworICAgIGV4cGVjdE9rKCJURVhUVVJFXzJEX0FSUkFZIiwgICAgICAgMSwg
ICAgICAgMSwgMTAsICJJTlZBTElEX09QRVJBVElPTiIpOworfQorCitkZWJ1ZygiIik7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zdG9yYWdlLWNvbXByZXNzZWQtZm9ybWF0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LXN0b3JhZ2UtY29tcHJlc3NlZC1mb3JtYXRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWRhNzdjYTRiNjY3ZDkyYTNjOTcyMWFjMGZlZWUxZjRmZGE3NGNkMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zdG9yYWdlLWNvbXByZXNzZWQtZm9y
bWF0cy5odG1sCkBAIC0wLDAgKzEsMTM2IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Db25mb3JtYW5jZSB0ZXN0IGZvciBXZWJHTDIgdGV4
U3RvcmFnZTJEIGFuZCB0ZXhTdG9yYWdlM0Qgd2l0aCBjb21wcmVzc2VkIGZvcm1hdDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPiA8L2NhbnZhcz4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGV4U3RvcmFnZTJEIGFuZCB0ZXhTdG9y
YWdlM0QgIiArCisgICAgICAgICAgICAiYWNjZXB0IGNvbXByZXNzZWQgaW50ZXJuYWxmb3JtYXRz
LiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7CisKKy8vIEVpdGhlciBvZiB0aGVzZSBleHRl
bnNpb25zIHNob3VsZCBiZSBhdmFpbGFibGUgb24gYWxsIFdlYkdMIDIuMCBjb250ZXh0cworY29u
c3QgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyA9IGdsLmdldEV4dGVuc2lvbigiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworY29uc3QgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3MzdGMgPSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7
CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7
CisKKyAgICBpZiAoV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YykgeworICAgICAgICBkZWJ1
ZygiVGVzdGluZyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIGZvcm1hdHMiKTsKKworICAg
ICAgICAvLyBUaGVzZSBjb21wcmVzc2VkIGZvcm1hdHMgYXJlIGluIFRhYmxlIDMuMTkgZnJvbSB0
aGUgT3BlbkdMIEVTIDMuMC40IHNwZWMuCisgICAgICAgIHJ1blRleENvbXByZXNzZWRGb3JtYXRz
VGVzdChbCisgICAgICAgICAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjLkNPTVBSRVNT
RURfUjExX0VBQywKKyAgICAgICAgICAgIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMuQ09N
UFJFU1NFRF9TSUdORURfUjExX0VBQywKKyAgICAgICAgICAgIFdFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9ldGMuQ09NUFJFU1NFRF9SRzExX0VBQywKKyAgICAgICAgICAgIFdFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMuQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsCisgICAgICAgICAgICBX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjLkNPTVBSRVNTRURfUkdCOF9FVEMyLAorICAgICAg
ICAgICAgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0Yy5DT01QUkVTU0VEX1NSR0I4X0VUQzIs
CisgICAgICAgICAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjLkNPTVBSRVNTRURfUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAgICAgICBXRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfZXRjLkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAor
ICAgICAgICAgICAgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0Yy5DT01QUkVTU0VEX1JHQkE4
X0VUQzJfRUFDLAorICAgICAgICAgICAgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0Yy5DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKKyAgICAgICAgXSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdFBhc3NlZCgiTm8gV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyBzdXBw
b3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICB9CisKKyAgICBpZiAoV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMpIHsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMgZm9ybWF0cyIpOworCisgICAgICAgIHJ1blRleENvbXByZXNzZWRGb3Jt
YXRzVGVzdChbCisgICAgICAgICAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Yy5DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICBX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Yy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VY
VCwKKyAgICAgICAgICAgIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjLkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhULAorICAgICAgICBdKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0UGFzc2VkKCJObyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyBzdXBwb3J0IC0tIHRo
aXMgaXMgbGVnYWwiKTsKKyAgICB9CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKK30KKworZnVuY3Rpb24gZW51
bVRvU3RyaW5nKHZhbHVlKSB7CisgIHJldHVybiB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbHVl
KTsKK30KKworZnVuY3Rpb24gcnVuVGV4Q29tcHJlc3NlZEZvcm1hdHNUZXN0KHRleENvbXByZXNz
ZWRGb3JtYXRzKQoreworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKworICAgIGdsLnVzZVBy
b2dyYW0od3R1LnNldHVwU2ltcGxlVGV4dHVyZVByb2dyYW1FU1NMMzAwKGdsLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwKKyAgICAgICAgICAgYCN2ZXJzaW9uIDMwMCBlcworICAgICAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIG1lZGl1bXAgc2FtcGxl
cjJEQXJyYXkgdGV4OworICAgICAgICAgICAgaW4gdmVjMiB0ZXhDb29yZDsKKyAgICAgICAgICAg
IG91dCB2ZWM0IG91dF9jb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbigpIHsKKyAgICAgICAg
ICAgICAgb3V0X2NvbG9yID0gdGV4dHVyZSh0ZXgsIHZlYzModGV4Q29vcmQsIDApKTsKKyAgICAg
ICAgICAgIH1gCisgICAgICAgICkpOworCisgICAgdGV4Q29tcHJlc3NlZEZvcm1hdHMuZm9yRWFj
aChmdW5jdGlvbihpbnRlcm5hbGZvcm1hdCl7CisgICAgICAgIC8vIFRlc3QgYSAyRCB0ZXh0dXJl
LgorICAgICAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbC50ZXhTdG9yYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMSwgaW50ZXJuYWxmb3JtYXQsIDEsIDEpOworICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGV4U3RvcmFnZTJEIHNob3VsZCBzdWNjZWVkIGZvciAiICsgZW51bVRvU3RyaW5nKGludGVybmFs
Zm9ybWF0KSk7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKKworICAgICAgICAvLyBH
TEVTIDMuMC40IHAxNDc6ICsgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YzoKKyAgICAgICAg
Ly8gSWYgaW50ZXJuYWxmb3JtYXQgaXMgYW4gRVRDMi9FQUMvRFhUMS9EWFQzL0RYVDUKKyAgICAg
ICAgLy8gZm9ybWF0LCBDb21wcmVzc2VkVGV4SW1hZ2UzRCB3aWxsIGdlbmVyYXRlIGFuIElOVkFM
SURfT1BFUkFUSU9OIGVycm9yIGlmCisgICAgICAgIC8vIHRhcmdldCBpcyBub3QgVEVYVFVSRV8y
RF9BUlJBWS4KKworICAgICAgICAvLyBUZXN0IHRoZSAzRCB0ZXh0dXJlIHRhcmdldHMuCisgICAg
ICAgIHZhciB0ZXgzZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8zRCwgdGV4M2QpOworICAgICAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVY
VFVSRV8zRCwgMSwgaW50ZXJuYWxmb3JtYXQsIDEsIDEsIDEpOworICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidGV4U3RvcmFnZTNEKFRFWFRVUkVfM0QpIHNob3VsZCBmYWlsIGZvciAiICsgZW51
bVRvU3RyaW5nKGludGVybmFsZm9ybWF0KSk7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
M2QpOworCisgICAgICAgIHZhciB0ZXgyZEFyciA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4MmRBcnIpOworICAgICAg
ICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwgaW50ZXJuYWxmb3JtYXQs
IDEsIDEsIDEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4U3RvcmFnZTNEKFRFWFRVUkVfMkRfQVJS
QVkpIHNob3VsZCBzdWNjZWVkIGZvciAiICsgZW51bVRvU3RyaW5nKGludGVybmFsZm9ybWF0KSk7
CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQgZnJvbSBlbXB0
eSB0ZXh0dXJlIik7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4MmRBcnIpOworICAgIH0p
OworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zdWJp
bWFnZTNkLWNhbnZhcy1idWcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC1zdWJpbWFnZTNkLWNh
bnZhcy1idWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzJkMDIxZDVhMTEwNDRlYTAyOGMwYTkzMWMxNmUy
Yzk2M2IzZTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LXN1YmltYWdl
M2QtY2FudmFzLWJ1Zy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3QgYnVnIG9mIFRleFN1YkltYWdl
M0Qgd2l0aCBjYW52YXM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogMnB4OyBoZWln
aHQ6IDJweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24o
ZG9jdW1lbnQudGl0bGUpOworZGVidWcoIlRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIDxh
IGhyZWY9J2h0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWls
P2lkPTg1OTQwMCc+Q2hyb21pdW0gSXNzdWUgODU5NDAwPC9hPiIpOworZGVidWcoIiIpOworCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJl
eGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIHZhciBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5n
ZXRDb250ZXh0KCIyZCIpOworICB2YXIgbWF4VGV4U2l6ZSA9IGdsLmdldFBhcmFtZXRlcihnbC5N
QVhfVEVYVFVSRV9TSVpFKTsKKyAgdmFyIHdpZHRoID0gTWF0aC5jZWlsKE1hdGguc3FydChtYXhU
ZXhTaXplKSk7CisgIHZhciBoZWlnaHQgPSB3aWR0aDsKKyAgdmFyIGRlcHRoID0gd2lkdGggKyAx
OworICBjdHguY2FudmFzLndpZHRoID0gd2lkdGg7CisgIC8vIFNldCBjYW52YXMgaGVpZ2h0IHRv
IGEgdmFsdWUgbGFyZ2VyIHRoYW4gTUFYX1RFWFRVUkVfU0laRS4KKyAgLy8gVGhpcyB0cmlnZ2Vy
cyBhIHZhbGlkYXRpb24gYnVnIGluIENocm9tZS4KKyAgY3R4LmNhbnZhcy5oZWlnaHQgPSBoZWln
aHQgKiBkZXB0aDsKKworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgpOworICBnbC50ZXhTdG9yYWdlM0QoZ2wu
VEVYVFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3Jz
IGZyb20gVGV4U3RvcmFnZTNELiIpOworICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRf
QVJSQVksIDAsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGN0eC5jYW52YXMpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBUZXhT
dWJJbWFnZTNELiIpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlz
Yy90ZXgtc3ViaW1hZ2UzZC1waXhlbC1idWZmZXItYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90
ZXgtc3ViaW1hZ2UzZC1waXhlbC1idWZmZXItYnVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgxYTQ4MTlm
ZWZiYjkyZGUxZTRhYjU1ZjE3ZjNiZWIwZjJiMGE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9taXNjL3RleC1zdWJpbWFnZTNkLXBpeGVsLWJ1ZmZlci1idWcuaHRtbApAQCAtMCwwICsx
LDkwIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5UZXN0IGJ1ZyBvZiBUZXhTdWJJbWFnZTNEIHdpdGggcGl4ZWwgYnVmZmVyPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMiIg
aGVpZ2h0PSIyIiBzdHlsZT0id2lkdGg6IDJweDsgaGVpZ2h0OiAycHg7Ij48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBpZD0idnNoYWRlcl90ZXhzaXplIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNp
b24gMzAwIGVzCitpbiB2ZWM0IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9z
aXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlcl90
ZXhzaXplXzNkIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBoaWdocCBzYW1wbGVyM0QgdGV4OwordW5p
Zm9ybSBpbnQgbG9kOwordW5pZm9ybSBpdmVjMyB0ZXhTaXplOworb3V0IHZlYzQgZnJhZ0NvbG9y
Owordm9pZCBtYWluKCkKK3sKKyAgICBmcmFnQ29sb3IgPSAodGV4dHVyZVNpemUodGV4LCBsb2Qp
ID09IHRleFNpemUgPyB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCkgOiB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDEuMCkpOworfQorPC9zY3JpcHQ+CisKKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rl
c2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKK2RlYnVnKCJUaGlzIGlzIGEgcmVncmVzc2lvbiB0
ZXN0IGZvciA8YSBocmVmPSdodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD02NjYzODQnPkNocm9taXVtIElzc3VlIDY2NjM4NDwvYT4iKTsKK2RlYnVn
KCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCitm
dW5jdGlvbiBydW5UZXN0KCkgeworICB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAg
dmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsIFsndnNoYWRlcl90ZXhz
aXplJywgJ2ZzaGFkZXJfdGV4c2l6ZV8zZCddLCBbJ3ZQb3NpdGlvbiddLCBbMF0pOworCisgIHZh
ciB3aWR0aCA9IDMyOworICB2YXIgaGVpZ2h0ID0gMTY7CisgIHZhciBkZXB0aCA9IDg7CisgIGds
LnVuaWZvcm0xaShnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpLCAwKTsKKyAg
Z2wudW5pZm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibG9kIiksIDIpOwor
ICBnbC51bmlmb3JtM2koZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhTaXplIiks
IDgsIDQsIDIpOworICB2YXIgdGV4M2QgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfM0QsIHRleDNkKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzNELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFBhcmFtZXRlcihURVhUVVJFX01JTl9GSUxU
RVIpIHNob3VsZCBzdWNjZWVkIik7CisgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzNELCA0
LCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInRleFN0b3JhZ2UzRCBzaG91bGQgc3VjY2VlZCIpOworICB2YXIg
YnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5Q
QUNLX0JVRkZFUiwgYnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBBQ0tfQlVG
RkVSLCBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIGRlcHRoICogNCksIGdsLkRZTkFN
SUNfRFJBVyk7CisgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIDApOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlVwZGF0ZSB0ZXh0dXJlIGRhdGEg
d2l0aCB0ZXhTdWJJbWFnZTNEIGZyb20gcGl4ZWwgYnVmZmVyIHNob3VsZCBzdWNjZWVkIik7Cisg
IGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgbnVsbCk7CisgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiY2xlYXJBbmREcmF3UXVhZCBzaG91bGQgc3VjY2VlZCIpOworICB3dHUuY2hlY2tDYW52
YXMoZ2wsIFsyNTUsIDAsIDAsIDI1NV0sICJzaG91bGQgZHJhdyB3aXRoIFsyNTUsIDAsIDAsIDI1
NV0iKTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgzZCk7CisgIGdsLmRlbGV0ZUJ1ZmZlcihidWZm
ZXIpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4
LXVucGFjay1wYXJhbXMtaW1hZ2VkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtdW5wYWNr
LXBhcmFtcy1pbWFnZWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmMwNzY1YmJlNjM1MTBlMDY4Mjlj
OWEwNTY4OTU5NWQ2NzJmZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4
LXVucGFjay1wYXJhbXMtaW1hZ2VkYXRhLmh0bWwKQEAgLTAsMCArMSwxMjYgQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMMiBUZXhJ
bWFnZTNEIGZyb20gSW1hZ2VEYXRhIHdpdGggdW5wYWNrIHBhcmFtcyB0ZXN0cy48L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIp
OworbGV0IGFjdHVhbDsKKworZGVzY3JpcHRpb24oIlRleEltYWdlM0QgZnJvbSBJbWFnZURhdGEg
d2l0aCB1bnBhY2sgcGFyYW1zIik7CisKK2RlYnVnKCJUZXhJbWFnZTNEIGZyb20gSW1hZ2VEYXRh
IHdpdGggVU5QQUNLX0lNQUdFX0hFSUdIVCBzZXQgKGNyYnVnLmNvbS84MDQxMjMpIik7CisKKy8v
IGZyYW1lYnVmZmVyIGZvciByZWFkYmFjaworY29uc3QgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworZnVuY3Rp
b24gbWFrZVRlc3REYXRhKHNpemUsIHN0YXJ0KSB7CisgIGNvbnN0IGRhdGEgPSBuZXcgVWludDhD
bGFtcGVkQXJyYXkoc2l6ZSk7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgZGF0YVtpXSA9IChzdGFydCArIGkpICUgMjU2OworICB9CisgIHJldHVybiBkYXRhOworfQor
CisvLyBzb3VyY2UgZGF0YQorLy8KKy8vICAgZHN0V2lkdGggPSA0CisvLyA8LS0+CisvLyB4eHh4
IF4gXiBeIF4KKy8vIHh4eHggfCAgIHwgfAorLy8geHh4eCB8ICAgfCB8CisvLyB4eHh4IHwgICB8
IHYgZHN0SGVpZ2h0ID0gNAorLy8gLS0tLSB8ICAgfAorLy8gLS0tLSB8ICAgfAorLy8gLS0tLSB8
ICAgdiB1bnBhY2tJbWFnZUhlaWdodCA9IDcKKy8vIHh4eHggfCB8CisvLyB4eHh4IHwKKy8vIHh4
eHggfAorLy8geHh4eCB8CisvLyAtLS0tIHwKKy8vIC0tLS0gfAorLy8gLS0tLSB8CisvLyB4eHh4
IHwgfAorLy8geHh4eCB8CisvLyB4eHh4IHwKKy8vIHh4eHggfAorLy8gLS0tLSB8CisvLyAtLS0t
IHwKKy8vIC0tLS0gfAorLy8geHh4eCB8IHYgZHN0RGVwdGggPSA0CisvLyB4eHh4IHwKKy8vIHh4
eHggfAorLy8geHh4eCB2IHNyY0hlaWdodCA9IDI1CisvLyA8LS0+CisvLyAgIHNyY1dpZHRoID0g
NAorY29uc3QgdW5wYWNrSW1hZ2VIZWlnaHQgPSA3OworY29uc3QgZHN0V2lkdGggPSA0OworY29u
c3QgZHN0SGVpZ2h0ID0gNDsKK2NvbnN0IGRzdERlcHRoID0gNDsKK2NvbnN0IHNyY1dpZHRoID0g
ZHN0V2lkdGg7Citjb25zdCBzcmNIZWlnaHQgPSAoZHN0RGVwdGggLSAxKSAqIHVucGFja0ltYWdl
SGVpZ2h0ICsgZHN0SGVpZ2h0OworY29uc3Qgc3JjU2l6ZSA9IHNyY1dpZHRoICogc3JjSGVpZ2h0
OworY29uc3Qgc2l6ZW9mUjggPSAxOworY29uc3Qgc2l6ZW9mUkdCQTggPSA0OworY29uc3QgaW1h
Z2VEYXRhID0gbmV3IEltYWdlRGF0YShtYWtlVGVzdERhdGEoc3JjU2l6ZSAqIHNpemVvZlJHQkE4
LCAxKSwgc3JjV2lkdGgsIHNyY0hlaWdodCk7Citjb25zdCB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZSk7CisKK2RlYnVn
KCIiKTsKKy8vIHVwbG9hZAorZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hFSUdIVCwg
Mik7CitnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlI4LCAxLCAxLCAxLCAwLCBn
bC5SRUQsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlRGF0YSk7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgInNtYWxsIHVwbG9hZCIpOworLy8gY2hlY2sKK2FjdHVhbCA9IG5l
dyBVaW50OEFycmF5KHNpemVvZlJHQkE4KTsKK2dsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZSwgMCwgMCk7CitpZiAo
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBhY3R1YWwpOworICBzaG91bGRCZVRydWUoYGFyZUFycmF5c0VxdWFsKGFj
dHVhbCwgWzEsIDAsIDAsIDI1NV0pYCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKK30gZWxzZSB7CisgIGRlYnVnKCJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlOiBza2lw
cGVkIik7Cit9CisKK2RlYnVnKCIiKTsKKy8vIHVwbG9hZAorZ2wucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0lNQUdFX0hFSUdIVCwgdW5wYWNrSW1hZ2VIZWlnaHQpOworZ2wudGV4SW1hZ2UzRChnbC5U
RVhUVVJFXzNELCAwLCBnbC5SR0JBOCwgZHN0V2lkdGgsIGRzdEhlaWdodCwgZHN0RGVwdGgsIDAs
CisgICAgICAgICAgICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlRGF0YSk7Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImxhcmdlciB1cGxvYWQiKTsKKy8v
IGNoZWNrCithY3R1YWwgPSBuZXcgVWludDhBcnJheShkc3RXaWR0aCAqIGRzdEhlaWdodCAqIHNp
emVvZlJHQkE4KTsKK2xldCBleHBlY3RlZDsKK2ZvciAobGV0IHogPSAwOyB6IDwgZHN0RGVwdGg7
ICsreikgeworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmUsIDAsIHopOworICBzaG91bGRCZSgnZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUnKTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCBkc3RXaWR0aCwgZHN0SGVpZ2h0LCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBhY3R1YWwpOworICBkZWJ1ZyhgZm9yIHogPSAke3p9OmApOwor
ICBleHBlY3RlZCA9IG1ha2VUZXN0RGF0YShkc3RXaWR0aCAqIGRzdEhlaWdodCAqIHNpemVvZlJH
QkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAxICsgeiAqIGRzdFdpZHRoICogdW5wYWNr
SW1hZ2VIZWlnaHQgKiBzaXplb2ZSR0JBOCk7CisgIHNob3VsZEJlVHJ1ZSgnYXJlQXJyYXlzRXF1
YWwoYWN0dWFsLCBleHBlY3RlZCknKTsKK30KK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKKworZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvdGV4LXVucGFjay1wYXJhbXMtd2l0aC1mbGlwLXktYW5kLXByZW11bHRpcGx5
LWFscGhhLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtdW5wYWNrLXBhcmFtcy13aXRoLWZsaXAt
eS1hbmQtcHJlbXVsdGlwbHktYWxwaGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODBiMDFjNjlhOWZhYzM4
MmFjYzYzODM5NTU4NGI2M2Q5MzU0ODFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21p
c2MvdGV4LXVucGFjay1wYXJhbXMtd2l0aC1mbGlwLXktYW5kLXByZW11bHRpcGx5LWFscGhhLmh0
bWwKQEAgLTAsMCArMSw0OTkgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMMiB0ZXh0dXJlIHVucGFjayBwYXJhbWV0ZXJzIHdpdGgg
RkxJUF9ZIC8gUFJFTVVMVElQTFlfQUxQSEEgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWln
aHQ9IjQiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgX192ZXJib3NlX18gPSBmYWxzZTsKKworLy8gU29tZSBkcml2ZXJz
IChmb3IgZXhhbXBsZSwgTlZJRElBIExpbnV4KSBpbmNvcnJlY3RseSByZXF1aXJlIHBhZGRpbmcg
Zm9yCisvLyB0aGUgbGFzdCByb3cuIFRoZSBiZWxvdyBmbGFnIGlzIG9ubHkgZm9yIHRlc3Rpbmcg
Y29udmVuaWVuY2UuIEJyb3dzZXJzIHNob3VsZAorLy8gd29yayBhcm91bmQgdGhlIGJ1Zy4KK3Zh
ciBfX2FwcGx5X2FsaWdubWVudF93b3JrYXJvdW5kX18gPSBmYWxzZTsKKworZnVuY3Rpb24gc2V0
dXBBcnJheUJ1ZmZlcihzaXplLCBpbml0RGF0YSkgeworICB2YXIgYXJyYXkgPSBuZXcgVWludDhB
cnJheShzaXplKTsKKyAgaWYgKGluaXREYXRhKSB7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHNpemU7ICsraWkpIHsKKyAgICAgIGFycmF5W2lpXSA9IGlpICUgMjU1OworICAgIH0KKyAgfQor
ICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGNhbGN1bGF0ZVBhZGRpbmdCeXRlcyhieXRl
c1BlclBpeGVsLCBhbGlnbm1lbnQsIHdpZHRoKSB7CisgIHZhciBwYWRkaW5nID0gMDsKKyAgc3dp
dGNoIChhbGlnbm1lbnQpIHsKKyAgICBjYXNlIDE6CisgICAgY2FzZSAyOgorICAgIGNhc2UgNDoK
KyAgICBjYXNlIDg6CisgICAgICBwYWRkaW5nID0gKGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aCkgJSBh
bGlnbm1lbnQ7CisgICAgICBpZiAocGFkZGluZyA+IDApCisgICAgICAgIHBhZGRpbmcgPSBhbGln
bm1lbnQgLSBwYWRkaW5nOworICAgICAgcmV0dXJuIHBhZGRpbmc7CisgICAgZGVmYXVsdDoKKyAg
ICAgIHRlc3RGYWlsZWQoInNob3VsZCBub3QgcmVhY2ggaGVyZSIpOworICAgICAgcmV0dXJuOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGNvbXB1dGVJbWFnZVNpemVzMkQod2lkdGgsIGhlaWdodCwgdGVz
dENhc2UpIHsKKyAgLy8gQXNzdW1lIFJHQkE4L1VOU0lHTkVEX0JZVEUKKyAgdmFyIGJ5dGVzUGVy
UGl4ZWwgPSA0OworICB2YXIgYWN0dWFsV2lkdGggPSB0ZXN0Q2FzZS5yb3dMZW5ndGggPT0gMCA/
IHdpZHRoIDogdGVzdENhc2Uucm93TGVuZ3RoOworICB2YXIgcGFkZGluZyA9IGNhbGN1bGF0ZVBh
ZGRpbmdCeXRlcyhieXRlc1BlclBpeGVsLCB0ZXN0Q2FzZS5hbGlnbm1lbnQsIGFjdHVhbFdpZHRo
KTsKKyAgdmFyIGJ5dGVzUGVyUm93ID0gYWN0dWFsV2lkdGggKiBieXRlc1BlclBpeGVsICsgcGFk
ZGluZzsKKyAgdmFyIGJ5dGVzTGFzdFJvdyA9IGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aDsKKyAgdmFy
IHNpemUgPSBieXRlc1BlclJvdyAqIChoZWlnaHQgLSAxKSArIGJ5dGVzTGFzdFJvdzsKKyAgdmFy
IHNraXBTaXplID0gMDsKKyAgaWYgKHRlc3RDYXNlLnNraXBQaXhlbHMgPiAwKQorICAgIHNraXBT
aXplICs9IGJ5dGVzUGVyUGl4ZWwgKiB0ZXN0Q2FzZS5za2lwUGl4ZWxzOworICBpZiAodGVzdENh
c2Uuc2tpcFJvd3MgPiAwKQorICAgIHNraXBTaXplICs9IGJ5dGVzUGVyUm93ICogdGVzdENhc2Uu
c2tpcFJvd3M7CisgIHJldHVybiB7c2l6ZTogc2l6ZSwKKyAgICAgICAgICBieXRlc1BlclJvdzog
Ynl0ZXNQZXJSb3csCisgICAgICAgICAgYnl0ZXNMYXN0Um93OiBieXRlc0xhc3RSb3csCisgICAg
ICAgICAgcGFkZGluZzogcGFkZGluZywKKyAgICAgICAgICBza2lwU2l6ZTogc2tpcFNpemUsCisg
ICAgICAgICAgdG90YWxTaXplOiBzaXplICsgc2tpcFNpemV9OworfQorCitmdW5jdGlvbiBjb3B5
RGF0YShzcmNEYXRhLCBzcmNJbmRleCwgZHN0RGF0YSwgZHN0SW5kZXgsIHNpemUsIHByZW11bHRp
cGx5X2FscGhhKSB7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzaXplIC8gNDsgKytpaSkgewor
ICAgIHZhciBmYWN0b3IgPSAxLjA7CisgICAgaWYgKHByZW11bHRpcGx5X2FscGhhKQorICAgICAg
ZmFjdG9yID0gc3JjRGF0YVtzcmNJbmRleCArIGlpICogNCArIDNdIC8gMjU1LjA7CisgICAgZHN0
RGF0YVtkc3RJbmRleCArIGlpICogNF0gPSBzcmNEYXRhW3NyY0luZGV4ICsgaWkgKiA0XSAqIGZh
Y3RvcjsKKyAgICBkc3REYXRhW2RzdEluZGV4ICsgaWkgKiA0ICsgMV0gPSBzcmNEYXRhW3NyY0lu
ZGV4ICsgaWkgKiA0ICsgMV0gKiBmYWN0b3I7CisgICAgZHN0RGF0YVtkc3RJbmRleCArIGlpICog
NCArIDJdID0gc3JjRGF0YVtzcmNJbmRleCArIGlpICogNCArIDJdICogZmFjdG9yOworICAgIGRz
dERhdGFbZHN0SW5kZXggKyBpaSAqIDQgKyAzXSA9IHNyY0RhdGFbc3JjSW5kZXggKyBpaSAqIDQg
KyAzXTsKKyAgfQorfQorCitmdW5jdGlvbiB1bnBhY2tQaXhlbHMoc3JjRGF0YSwgd2lkdGgsIGhl
aWdodCwgaW1hZ2VTaXplcywgZmxpcF95LCBwcmVtdWx0aXBseV9hbHBoYSkgeworICB2YXIgYnl0
ZXNQZXJQaXhlbCA9IDQ7CisgIHZhciB1bnBhY2tlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIGJ5
dGVzUGVyUGl4ZWw7CisgIHZhciBkc3REYXRhID0gc2V0dXBBcnJheUJ1ZmZlcih1bnBhY2tlZFNp
emUsIGZhbHNlKTsKKyAgdmFyIHNyY0luZGV4ID0gaW1hZ2VTaXplcy5za2lwU2l6ZTsKKyAgdmFy
IGRzdEluZGV4ID0gMDsKKyAgdmFyIGluYyA9IHdpZHRoICogYnl0ZXNQZXJQaXhlbDsKKyAgaWYg
KGZsaXBfeSkKKyAgICBkc3RJbmRleCArPSAoaGVpZ2h0IC0gMSkgKiBpbmM7CisgIGZvciAodmFy
IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICBjb3B5RGF0YShzcmNEYXRhLCBzcmNJbmRl
eCwgZHN0RGF0YSwgZHN0SW5kZXgsIHdpZHRoICogYnl0ZXNQZXJQaXhlbCwgcHJlbXVsdGlwbHlf
YWxwaGEpOworICAgIHNyY0luZGV4ICs9IGltYWdlU2l6ZXMuYnl0ZXNQZXJSb3c7CisgICAgaWYg
KGZsaXBfeSkKKyAgICAgIGRzdEluZGV4IC09IGluYzsKKyAgICBlbHNlCisgICAgICBkc3RJbmRl
eCArPSBpbmM7CisgIH0KKyAgaWYgKGZsaXBfeSkKKyAgICBkc3RJbmRleCArPSBoZWlnaHQgKiBp
bmM7CisgIHJldHVybiBkc3REYXRhOworfQorCitmdW5jdGlvbiBnZXRQaXhlbHNGcm9tVGV4dHVy
ZTJEKGdsLCB0ZXgsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpIHsKKyAgdmFyIGZi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXgsIDApOworICB2YXIgYnl0
ZXNQZXJSZWFkYmFja1BpeGVsID0gNDsKKyAgdmFyIHJlYWRiYWNrQnVmZmVyID0gc2V0dXBBcnJh
eUJ1ZmZlcih3aWR0aCAqIGhlaWdodCAqIGJ5dGVzUGVyUmVhZGJhY2tQaXhlbCwgZmFsc2UpOwor
ICBnbC5yZWFkUGl4ZWxzKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRiYWNrQnVmZmVyKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJyZWFkIGJhY2sgdGV4dHVyZSBwaXhlbHMgc2hvdWxkIHN1Y2Nl
ZWQiKTsKKyAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgcmV0dXJuIHJlYWRiYWNrQnVmZmVyOworfQorCitm
dW5jdGlvbiBjb21wYXJlUGl4ZWxzKGJ1ZmZlcjEsIGJ1ZmZlcjIsIHRvbGVyYW5jZSkgeworICBp
ZiAoYnVmZmVyMS5sZW5ndGggIT0gYnVmZmVyMi5sZW5ndGggfHwgYnVmZmVyMS5sZW5ndGggJSA0
ICE9IDApIHsKKyAgICB0ZXN0RmFpbGVkKCJjb21wYXJlIHBpeGVsczogaW52YWxpZCBidWZmZXIg
c2l6ZSIpOworICAgIHJldHVybjsKKyAgfQorICB2YXIgY291bnQgPSAwOworICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgYnVmZmVyMS5sZW5ndGggLyA0OyArK2lpKSB7CisgICAgdmFyIGRpc3RhbmNl
ID0gMDsKKyAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgNDsgKytqaikgeworICAgICAgdmFyIGRp
ZmYgPSBidWZmZXIxW2lpICogNCArIGpqXSAtIGJ1ZmZlcjJbaWkgKiA0ICsgampdOworICAgICAg
ZGlzdGFuY2UgKz0gZGlmZiAqIGRpZmY7CisgICAgfQorICAgIGlmIChNYXRoLnNxcnQoZGlmZikg
PiB0b2xlcmFuY2UpIHsKKyAgICAgIGlmIChfX3ZlcmJvc2VfXykgeworICAgICAgICBkZWJ1Zygi
UGl4ZWwgIiArIGlpICsgIjogZXhwZWN0ZWQgKCIgKworICAgICAgICAgICAgICBbYnVmZmVyMVtp
aSAqIDRdLCBidWZmZXIxW2lpICogNCArIDFdLCBidWZmZXIxW2lpICogNCArIDJdLCBidWZmZXIx
W2lpICogNCArIDNdXSArICIpLCBnb3QgKCIgKworICAgICAgICAgICAgICBbYnVmZmVyMltpaSAq
IDRdLCBidWZmZXIyW2lpICogNCArIDFdLCBidWZmZXIyW2lpICogNCArIDJdLCBidWZmZXIyW2lp
ICogNCArIDNdXSArICIpIik7CisgICAgICB9CisgICAgICBjb3VudCsrOworICAgIH0KKyAgfQor
ICBpZiAoY291bnQgPiAwKSB7CisgICAgdGVzdEZhaWxlZCgiY29tcGFyZSBwaXhlbHM6ICIgKyBj
b3VudCArICIgcGl4ZWxzIGRpZmZlciIpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImNv
bXBhcmUgcGl4ZWxzOiBhcyBleHBlY3RlZCIpOworICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RJ
dGVyYXRpb24yRChnbCwgdGVzdENhc2UsIGZsaXBfeSwgcHJlbXVsdGlwbHlfYWxwaGEpIHsKKyAg
ZGVidWcoIiIpOworICBkZWJ1ZygiVGV4dHVyZSB1cGxvYWQgd2l0aCA6IGZsaXBfeSA9ICIgKyBm
bGlwX3kgKyAiLCBwcmVtdWx0aXBseV9hbHBoYSA9ICIgKyBwcmVtdWx0aXBseV9hbHBoYSArCisg
ICAgICAgICIsIGFsaWdubWVudCA9ICIgKyB0ZXN0Q2FzZS5hbGlnbm1lbnQgKyAiLCByb3dMZW5n
dGggPSAiICsgdGVzdENhc2Uucm93TGVuZ3RoICsKKyAgICAgICAgIiwgc2tpcFBpeGVscyA9ICIg
KyB0ZXN0Q2FzZS5za2lwUGl4ZWxzICsgIiwgc2tpcFJvd3MgPSAiICsgdGVzdENhc2Uuc2tpcFJv
d3MpOworICBkZWJ1ZygiVGV4SW1hZ2UyRCA6IHNpemUgPSAoIiArIHRlc3RDYXNlLndpZHRoICsg
IiwgIiArIHRlc3RDYXNlLmhlaWdodCArICIpIik7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19BTElHTk1FTlQsIHRlc3RDYXNlLmFsaWdubWVudCk7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVO
UEFDS19ST1dfTEVOR1RILCB0ZXN0Q2FzZS5yb3dMZW5ndGgpOworICBnbC5waXhlbFN0b3JlaShn
bC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHRlc3RDYXNlLnNraXBQaXhlbHMpOworICBnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCB0ZXN0Q2FzZS5za2lwUm93cyk7CisgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBfeSk7CisgIGdsLnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgcHJlbXVsdGlwbHlfYWxwaGEpOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNldCB1cCBwaXhlbCBzdG9y
ZSBwYXJhbWV0ZXJzIHNob3VsZCBzdWNjZWVkIik7CisKKyAgdmFyIHRvbCA9IDM7CisKKyAgdmFy
IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4KTsKKworICB2YXIgaW1hZ2VTaXplcyA9IGNvbXB1dGVJbWFnZVNpemVzMkQodGVzdENh
c2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCwgdGVzdENhc2UpOworICB2YXIgYnVmZmVyU2l6ZSA9
IGltYWdlU2l6ZXMudG90YWxTaXplOworICB2YXIgYXJyYXk7CisKKyAgLy8gVmVyaWZ5IGJ1ZmZl
ciB3aXRoIGxlc3MgdGhhbiBlbm91Z2ggc2l6ZSB3aWxsIGZhaWwuCisgIGFycmF5ID0gc2V0dXBB
cnJheUJ1ZmZlcihidWZmZXJTaXplIC0gMSwgZmFsc2UpOworICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkE4LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCAw
LAorICAgICAgICAgICAgICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5KTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJidWZmZXIgdG9v
IHNtYWxsIik7CisKKyAgaWYgKF9fYXBwbHlfYWxpZ25tZW50X3dvcmthcm91bmRfXykKKyAgICBi
dWZmZXJTaXplICs9IGltYWdlU2l6ZXMucGFkZGluZzsKKyAgYXJyYXkgPSBzZXR1cEFycmF5QnVm
ZmVyKGJ1ZmZlclNpemUsIHRydWUpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkE4LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCAwLAorICAgICAgICAg
ICAgICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5KTsKKyAgaWYgKHRlc3RDYXNl
LnZhbGlkVW5wYWNrUGFyYW1zMkQpIHsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgInRleEltYWdlMkQgd2l0aCBjb3JyZWN0IGJ1ZmZlciBzaXplIHNob3VsZCBzdWNj
ZWVkIik7CisgIH0gZWxzZSB7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJpbnZhbGlkIHVucGFjayBwYXJhbXMgY29tYmluYXRpb24iKTsKKyAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCB0ZXN0Q2FzZS53aWR0aCwg
dGVzdENhc2UuaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJ1bnBhY2sgcGFyYW0gY29uc3RyYWludHMgZG8gbm90IGFwcGx5IGlmIG5vIGRhdGEgYXJlIHVw
bG9hZGVkLiIpOworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBidWZmZXIxID0gdW5wYWNrUGl4
ZWxzKGFycmF5LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCBpbWFnZVNpemVzLCBm
bGlwX3ksIHByZW11bHRpcGx5X2FscGhhKTsKKyAgdmFyIGJ1ZmZlcjIgPSBnZXRQaXhlbHNGcm9t
VGV4dHVyZTJEKGdsLCB0ZXgsIDAsIDAsIHRlc3RDYXNlLndpZHRoLCB0ZXN0Q2FzZS5oZWlnaHQp
OworICBjb21wYXJlUGl4ZWxzKGJ1ZmZlcjEsIGJ1ZmZlcjIsIHRvbCk7CisKKyAgdmFyIHN1Yldp
ZHRoID0gdGVzdENhc2Uud2lkdGggLSB0ZXN0Q2FzZS54b2Zmc2V0OworICB2YXIgc3ViSGVpZ2h0
ID0gdGVzdENhc2UuaGVpZ2h0IC0gdGVzdENhc2UueW9mZnNldDsKKyAgZGVidWcoIlRleFN1Yklt
YWdlMkQgOiBvZmZzZXQgPSAoIiArIHRlc3RDYXNlLnhvZmZzZXQgKyAiLCAiICsgdGVzdENhc2Uu
eW9mZnNldCArCisgICAgICAgICIpLCBzaXplID0gKCIgKyBzdWJXaWR0aCArICIsICIgKyBzdWJI
ZWlnaHQgKyAiKSIpOworICBpbWFnZVNpemVzID0gY29tcHV0ZUltYWdlU2l6ZXMyRChzdWJXaWR0
aCwgc3ViSGVpZ2h0LCB0ZXN0Q2FzZSk7CisgIGJ1ZmZlclNpemUgPSBpbWFnZVNpemVzLnRvdGFs
U2l6ZTsKKworICBhcnJheSA9IHNldHVwQXJyYXlCdWZmZXIoYnVmZmVyU2l6ZSAtIDEsIGZhbHNl
KTsKKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB0ZXN0Q2FzZS54b2Zmc2V0
LCB0ZXN0Q2FzZS55b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIHN1YldpZHRoLCBzdWJIZWln
aHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5KTsKKyAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJidWZmZXIgdG9vIHNtYWxsIik7CisKKyAg
aWYgKF9fYXBwbHlfYWxpZ25tZW50X3dvcmthcm91bmRfXykKKyAgICBidWZmZXJTaXplICs9IGlt
YWdlU2l6ZXMucGFkZGluZzsKKyAgYXJyYXkgPSBzZXR1cEFycmF5QnVmZmVyKGJ1ZmZlclNpemUs
IHRydWUpOworICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHRlc3RDYXNlLnhv
ZmZzZXQsIHRlc3RDYXNlLnlvZmZzZXQsIHN1YldpZHRoLCBzdWJIZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpOworICBpZiAodGVzdENh
c2UudmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRCkgeworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidGV4U3ViSW1hZ2UyRCB3aXRoIGNvcnJlY3QgYnVmZmVyIHNpemUg
c2hvdWxkIHN1Y2NlZWQiKTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgdW5wYWNrIHBhcmFtcyBjb21iaW5hdGlv
biIpOworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBidWZmZXIxID0gdW5wYWNrUGl4ZWxzKGFy
cmF5LCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCBpbWFnZVNpemVzLCBmbGlwX3ksIHByZW11bHRpcGx5
X2FscGhhKTsKKyAgdmFyIGJ1ZmZlcjIgPSBnZXRQaXhlbHNGcm9tVGV4dHVyZTJEKAorICAgICAg
Z2wsIHRleCwgdGVzdENhc2UueG9mZnNldCwgdGVzdENhc2UueW9mZnNldCwgc3ViV2lkdGgsIHN1
YkhlaWdodCk7CisgIGNvbXBhcmVQaXhlbHMoYnVmZmVyMSwgYnVmZmVyMiwgdG9sKTsKKworICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXgpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9yIik7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKGdsKSB7CisgIHZhciB0ZXN0Q2FzZXMgPSBbCisgICAg
eyB3aWR0aDogNSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxp
Z25tZW50OiAxLCByb3dMZW5ndGg6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLAorICAg
ICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDog
dHJ1ZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwgeW9mZnNldDog
MywKKyAgICAgIGFsaWdubWVudDogMiwgcm93TGVuZ3RoOiAwLCBza2lwUGl4ZWxzOiAwLCBza2lw
Um93czogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFy
YW1zRm9yU3ViMkQ6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA2LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6
IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDQsIHJvd0xlbmd0aDogMCwgc2tpcFBp
eGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2
YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0sCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0
OiA4LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50OiA4LCByb3dMZW5n
dGg6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJh
bXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSB9LAorCisgICAgLy8g
Uk9XX0xFTkdUSCA9PSB3aWR0aAorICAgIHsgd2lkdGg6IDEwLCBoZWlnaHQ6IDksIHhvZmZzZXQ6
IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDQsIHJvd0xlbmd0aDogMTAsIHNraXBQ
aXhlbHM6IDAsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwg
dmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSB9LAorCisgICAgLy8gUk9XX0xFTkdUSCA8
IHdpZHRoCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAz
LAorICAgICAgYWxpZ25tZW50OiAxLCByb3dMZW5ndGg6IDQsIHNraXBQaXhlbHM6IDAsIHNraXBS
b3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFsc2UgfSwKKyAgICB7IHdpZHRo
OiA1LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6
IDIsIHJvd0xlbmd0aDogNCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxp
ZFVucGFja1BhcmFtczJEOiBmYWxzZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9m
ZnNldDogMiwgeW9mZnNldDogMywKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiA0LCBz
a2lwUGl4ZWxzOiAwLCBza2lwUm93czogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IGZh
bHNlIH0sCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAz
LAorICAgICAgYWxpZ25tZW50OiA4LCByb3dMZW5ndGg6IDQsIHNraXBQaXhlbHM6IDAsIHNraXBS
b3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFsc2UgfSwKKworICAgIC8vIFJP
V19MRU5HVEggPiB3aWR0aAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwg
eW9mZnNldDogMywKKyAgICAgIGFsaWdubWVudDogMSwgcm93TGVuZ3RoOiA2LCBza2lwUGl4ZWxz
OiAwLCBza2lwUm93czogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlk
VW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcs
IHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDIsIHJvd0xlbmd0aDog
Nywgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJE
OiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0sCisgICAgeyB3aWR0aDog
NSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50OiA0
LCByb3dMZW5ndGg6IDgsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRV
bnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSB9LAor
ICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwgeW9mZnNldDogMywKKyAgICAg
IGFsaWdubWVudDogOCwgcm93TGVuZ3RoOiA5LCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMCwK
KyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3Vi
MkQ6IHRydWUgfSwKKworICAgIC8vIElNQUdFX0hFSUdIVCA9PSBoZWlnaHQKKyAgICB7IHdpZHRo
OiA2LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6
IDgsIHJvd0xlbmd0aDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxp
ZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0s
CisKKyAgICAvLyBJTUFHRV9IRUlHSFQgPCBoZWlnaHQKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6
IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0
aDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFt
czJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0sCisgICAgeyB3aWR0
aDogNSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50
OiAyLCByb3dMZW5ndGg6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLAorICAgICAgdmFs
aWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSB9
LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwgeW9mZnNldDogMywKKyAg
ICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiAwLCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czog
MCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9y
U3ViMkQ6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlv
ZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDgsIHJvd0xlbmd0aDogMCwgc2tpcFBpeGVsczog
MCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVu
cGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0sCisKKyAgICAvLyBJTUFHRV9IRUlHSFQgPiBoZWln
aHQKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisg
ICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0aDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6
IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0Zv
clN1YjJEOiB0cnVlIH0sCisgICAgeyB3aWR0aDogNiwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5
b2Zmc2V0OiAyLAorICAgICAgYWxpZ25tZW50OiAyLCByb3dMZW5ndGg6IDAsIHNraXBQaXhlbHM6
IDAsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRV
bnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSB9LAorICAgIHsgd2lkdGg6IDcsIGhlaWdodDogNywg
eG9mZnNldDogMiwgeW9mZnNldDogNCwKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiAw
LCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6
IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA4
LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDgs
IHJvd0xlbmd0aDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsCisgICAgICB2YWxpZFVu
cGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlIH0sCisK
KyAgICAvLyBTS0lQIHBhcmFtZXRlcnMKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIHhvZmZz
ZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0aDogMCwgc2tp
cFBpeGVsczogMTAsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFs
c2UgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMs
CisgICAgICBhbGlnbm1lbnQ6IDIsIHJvd0xlbmd0aDogMCwgc2tpcFBpeGVsczogMiwgc2tpcFJv
d3M6IDgsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiBmYWxzZSB9LAorICAgIHsgd2lkdGg6
IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwgeW9mZnNldDogMywKKyAgICAgIGFsaWdubWVudDog
NCwgcm93TGVuZ3RoOiAwLCBza2lwUGl4ZWxzOiAzLCBza2lwUm93czogNSwKKyAgICAgIHZhbGlk
VW5wYWNrUGFyYW1zMkQ6IGZhbHNlIH0sCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCB4b2Zm
c2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50OiA4LCByb3dMZW5ndGg6IDAsIHNr
aXBQaXhlbHM6IDcsIHNraXBSb3dzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFs
c2UgfSwKKworICAgIC8vIGFsbCBtaXhlZC4KKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIHhv
ZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0aDogNiwg
c2tpcFBpeGVsczogMywgc2tpcFJvd3M6IDUsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiBm
YWxzZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgeG9mZnNldDogMiwgeW9mZnNldDog
MywKKyAgICAgIGFsaWdubWVudDogMiwgcm93TGVuZ3RoOiA0LCBza2lwUGl4ZWxzOiA3LCBza2lw
Um93czogMiwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IGZhbHNlIH0sCisgICAgeyB3aWR0
aDogNSwgaGVpZ2h0OiA3LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50
OiA0LCByb3dMZW5ndGg6IDEwLCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMywKKyAgICAgIHZh
bGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUg
fSwKKyAgICB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIHhvZmZzZXQ6IDAsIHlvZmZzZXQ6IDAsCisg
ICAgICBhbGlnbm1lbnQ6IDIsIHJvd0xlbmd0aDogMywgc2tpcFBpeGVsczogMywgc2tpcFJvd3M6
IDUsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiBmYWxzZSB9LAorICAgIHsgd2lkdGg6IDE3
LCBoZWlnaHQ6IDYsIHhvZmZzZXQ6IDEyLCB5b2Zmc2V0OiAzLAorICAgICAgYWxpZ25tZW50OiAy
LCByb3dMZW5ndGg6IDQsIHNraXBQaXhlbHM6IDEsIHNraXBSb3dzOiA0LAorICAgICAgdmFsaWRV
bnBhY2tQYXJhbXMyRDogZmFsc2UgfSwKKyAgICB7IHdpZHRoOiA4LCBoZWlnaHQ6IDE3LCB4b2Zm
c2V0OiAyLCB5b2Zmc2V0OiAxMywKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiA5LCBz
a2lwUGl4ZWxzOiAwLCBza2lwUm93czogMywKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRy
dWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUgfSwKKyAgXTsKKworICB2YXIgZ3Jv
dXBzID0gWworICAgIC8vIHsgZmxpcF95OiBmYWxzZSwgIHByZW11bHRpcGx5X2FscGhhOiBmYWxz
ZSB9LAorICAgIHsgZmxpcF95OiB0cnVlLCAgcHJlbXVsdGlwbHlfYWxwaGE6IGZhbHNlIH0sCisg
ICAgeyBmbGlwX3k6IGZhbHNlLCBwcmVtdWx0aXBseV9hbHBoYTogdHJ1ZSB9LAorICAgIHsgZmxp
cF95OiB0cnVlLCAgcHJlbXVsdGlwbHlfYWxwaGE6IHRydWUgfSwKKyAgXTsKKworICBmb3IgKHZh
ciBqaiA9IDA7IGpqIDwgZ3JvdXBzLmxlbmd0aDsgKytqaikgeworICAgIHZhciBncm91cCA9IGdy
b3Vwc1tqal07CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsr
aWkpIHsKKyAgICAgIHZhciB0ZXN0Q2FzZSA9IHRlc3RDYXNlc1tpaV07CisgICAgICBydW5UZXN0
SXRlcmF0aW9uMkQoZ2wsIHRlc3RDYXNlLCBncm91cC5mbGlwX3ksIGdyb3VwLnByZW11bHRpcGx5
X2FscGhhKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcnVuTmVnYXRpdmVUZXN0cyhnbCkg
eworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0IHRleHtTdWJ9SW1hZ2UyRCBmcm9tIHBibyBm
YWlscyB3aXRoIEZMSVBfWSA9IHRydWUgb3IgUFJFTVVMVElQTFlfQUxQSEEgPSB0cnVlIik7CisK
KyAgdmFyIHdpZHRoID0gMTYsIGhlaWdodCA9IDE2LCBkZXB0aCA9IDI7CisKKyAgLy8gUmVzdG9y
ZSBkZWZhdWx0IHZhbHVlcy4KKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwg
NCk7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19ST1dfTEVOR1RILCAwKTsKKyAgZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hFSUdIVCwgMCk7CisgIGdsLnBpeGVsU3RvcmVpKGds
LlVOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQ
X1JPV1MsIDApOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMsIDApOwor
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmYWxzZSk7CisgIGdsLnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgZmFsc2UpOworCisg
IHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisKKyAgdmFyIGJ1ZmZlclNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7IC8v
IFJHQkE4CisgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZl
cihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXIpOworICBnbC5idWZmZXJEYXRhKGdsLlBJ
WEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZlclNpemUsIGdsLkRZTkFNSUNfRFJBVyk7CisKKyAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidGV4SW1hZ2UyRCBmcm9tIHBibyB3b3JrcyB3aXRoIGRlZmF1bHQgcGl4
ZWwgc3RvcmUgc2V0dGluZ3MiKTsKKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTJEIGZyb20g
cGJvIHdvcmtzIHdpdGggZGVmYXVsdCBwaXhlbCBzdG9yZSBzZXR0aW5ncyIpOworCisgIGdsLnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRydWUpOworICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJ0ZXhJbWFnZTJEIGZyb20gcGJvIHdpdGggRkxJUF9ZPXRydWUgc2hvdWxk
IGZhaWwiKTsKKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0
aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0ZXhTdWJJbWFnZTJEIGZyb20gcGJv
IHdpdGggRkxJUF9ZPXRydWUgc2hvdWxkIGZhaWwiKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0ZMSVBfWV9XRUJHTCwgZmFsc2UpOworCisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19Q
UkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgdHJ1ZSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgInRleEltYWdlMkQgZnJvbSBwYm8gd2l0aCBQUkVNVUxUSVBMWV9BTFBIQT10cnVlIHNob3Vs
ZCBmYWlsIik7CisgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4U3ViSW1hZ2UyRCBmcm9tIHBi
byB3aXRoIFBSRU1VTFRJUExZX0FMUEhBPXRydWUgc2hvdWxkIGZhaWwiKTsKKyAgZ2wucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisKKyAgZGVi
dWcoIiIpOworICBkZWJ1ZygiVGVzdCB0ZXh7U3VifUltYWdlM0QgZnJvbSBwYm8gZmFpbHMgd2l0
aCBGTElQX1kgPSB0cnVlIG9yIFBSRU1VTFRJUExZX0FMUEhBID0gdHJ1ZSIpOworCisgIGdsLmRl
bGV0ZVRleHR1cmUodGV4KTsKKyAgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXgpOworCisgIGJ1ZmZlclNpemUgPSB3aWR0aCAqIGhl
aWdodCAqIGRlcHRoICogNDsgLy8gUkdCQTgKKyAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBidWZmZXIpOworICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZG
RVIsIGJ1ZmZlclNpemUsIGdsLkRZTkFNSUNfRFJBVyk7CisKKyAgZ2wudGV4SW1hZ2UzRChnbC5U
RVhUVVJFXzNELCAwLCBnbC5SR0JBOCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInRleEltYWdlM0QgZnJvbSBwYm8gd29ya3Mgd2l0aCBkZWZhdWx0IHBpeGVsIHN0b3Jl
IHNldHRpbmdzIik7CisgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwg
MCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIDApOwor
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFN1YkltYWdlM0QgZnJv
bSBwYm8gd29ya3Mgd2l0aCBkZWZhdWx0IHBpeGVsIHN0b3JlIHNldHRpbmdzIik7CisKKyAgZ2wu
cGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgdHJ1ZSk7CisgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQTgsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0ZXhJbWFnZTNEIGZyb20gcGJvIHdpdGggRkxJUF9ZPXRy
dWUgc2hvdWxkIGZhaWwiKTsKKyAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAw
LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
MCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4
U3ViSW1hZ2UzRCBmcm9tIHBibyB3aXRoIEZMSVBfWT10cnVlIHNob3VsZCBmYWlsIik7CisgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZhbHNlKTsKKworICBnbC5waXhl
bFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIHRydWUpOworICBnbC50
ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAidGV4SW1hZ2UzRCBmcm9tIHBibyB3aXRoIFBS
RU1VTFRJUExZX0FMUEhBPXRydWUgc2hvdWxkIGZhaWwiKTsKKyAgZ2wudGV4U3ViSW1hZ2UzRChn
bC5URVhUVVJFXzNELCAwLCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAidGV4U3ViSW1hZ2UzRCBmcm9tIHBibyB3aXRoIFBSRU1VTFRJUExZX0FM
UEhBPXRydWUgc2hvdWxkIGZhaWwiKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1V
TFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisKKyAgZGVidWcoIiIpOworICBkZWJ1ZygiVGVz
dCB0ZXh7U3VifUltYWdlM0QgZnJvbSBjbGllbnQgYXJyYXkgZmFpbHMgd2l0aCBGTElQX1kgPSB0
cnVlIG9yIFBSRU1VTFRJUExZX0FMUEhBID0gdHJ1ZSIpOworCisgIGdsLmJpbmRCdWZmZXIoZ2wu
UElYRUxfVU5QQUNLX0JVRkZFUiwgbnVsbCk7CisgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOwor
ICBidWZmZXIgPSBudWxsOworICB2YXIgYXJyYXkgPSBzZXR1cEFycmF5QnVmZmVyKGJ1ZmZlclNp
emUsIGZhbHNlKTsKKworICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkE4
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJy
YXkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleEltYWdlM0Qg
ZnJvbSBjbGllbnQgYXJyYXkgd29ya3Mgd2l0aCBkZWZhdWx0IHBpeGVsIHN0b3JlIHNldHRpbmdz
Iik7CisgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5KTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTNEIGZyb20gY2xp
ZW50IGFycmF5IHdvcmtzIHdpdGggZGVmYXVsdCBwaXhlbCBzdG9yZSBzZXR0aW5ncyIpOworCisg
IGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRydWUpOworICBnbC50ZXhJ
bWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRleEltYWdlM0QgZnJvbSBjbGllbnQgYXJy
YXkgd2l0aCBGTElQX1k9dHJ1ZSBzaG91bGQgZmFpbCIpOworICBnbC50ZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBhcnJheSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAidGV4U3ViSW1hZ2UzRCBmcm9tIGNsaWVudCBhcnJheSB3aXRoIEZM
SVBfWT10cnVlIHNob3VsZCBmYWlsIik7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQ
X1lfV0VCR0wsIGZhbHNlKTsKKworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQ
TFlfQUxQSEFfV0VCR0wsIHRydWUpOworICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAs
IGdsLlJHQkE4LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYXJyYXkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgInRleEltYWdlM0QgZnJvbSBwYm8gd2l0aCBQUkVNVUxUSVBMWV9BTFBIQT10cnVlIHNo
b3VsZCBmYWlsIik7CisgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwg
MCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5
KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0ZXhT
dWJJbWFnZTNEIGZyb20gcGJvIHdpdGggUFJFTVVMVElQTFlfQUxQSEE9dHJ1ZSBzaG91bGQgZmFp
bCIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0ws
IGZhbHNlKTsKK30KKworZnVuY3Rpb24gcnVuUmVncmVzc2lvblRlc3RzKGdsKSB7CisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoIlRoZSBmb2xsb3dpbmcgdGVzdCBzZXJ2ZXMgYXMgYSByZWdyZXNzaW9u
IHRlc3QgZm9yIGNyYnVnLmNvbS83NzQxNzQiKTsKKyAgdmFyIGFycmF5ID0gbmV3IFVpbnQxNkFy
cmF5KDMyKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1JPV19MRU5HVEgsIDQpOworICBn
bC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIDYpOworICB2
YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXgpOworICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDQsIDcsIDUsIDgs
IDUsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgYXJyYXkpOworICAvLyBBdCB0
aGlzIHBvaW50LCB0aGUgQ2hyb21lIEFTQU4gYnVpbGQgdXNlZCB0byBjcmFzaC4KKyAgdGVzdFBh
c3NlZCgiVGhlIHJlZ3Jlc3Npb24gdGVzdCBmb3IgY3JidWcuY29tLzc3NDE3NCBkb2Vzbid0IGNy
YXNoIik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
Q2FsbGluZyB0ZXhTdWJJbWFnZTJEIHdpdGhvdXQgaW5pdGlhbGl6aW5nIHRoZSB0ZXh0dXJlIGlz
IGlsbGVnYWwiKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1JPV19MRU5HVEgsIDApOwor
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIGZhbHNl
KTsKK30KKwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5l
ZCwgMik7CitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoIkZhaWwgdG8gZ2V0IGEgV2ViR0wgY29u
dGV4dCIpOworfSBlbHNlIHsKKyAgcnVuVGVzdHMoZ2wpOworICBydW5OZWdhdGl2ZVRlc3RzKGds
KTsKKyAgcnVuUmVncmVzc2lvblRlc3RzKGdsKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvdGV4LXVucGFjay1wYXJhbXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNj
L3RleC11bnBhY2stcGFyYW1zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNkZmQ0YmQ3ZDEyNTI5MDMxNDRl
MzE4YWJkNjJiZWZjZmNkNGUwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3Rl
eC11bnBhY2stcGFyYW1zLmh0bWwKQEAgLTAsMCArMSw1OTEgQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMMiB0ZXh0dXJlIHVucGFj
ayBwYXJhbWV0ZXJzIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIF9fdmVyYm9zZV9fID0gZmFsc2U7CisKKy8vIFNvbWUgZHJpdmVycyAoZm9yIGV4YW1wbGUs
IE5WSURJQSBMaW51eCkgaW5jb3JyZWN0bHkgcmVxdWlyZSBwYWRkaW5nIGZvcgorLy8gdGhlIGxh
c3Qgcm93LiBUaGUgYmVsb3cgZmxhZyBpcyBvbmx5IGZvciB0ZXN0aW5nIGNvbnZlbmllbmNlLiBC
cm93c2VycyBzaG91bGQKKy8vIHdvcmsgYXJvdW5kIHRoZSBidWcuCit2YXIgX19hcHBseV9hbGln
bm1lbnRfd29ya2Fyb3VuZF9fID0gZmFsc2U7CisKK2Z1bmN0aW9uIHNldHVwQXJyYXlCdWZmZXIo
c2l6ZSwgaW5pdERhdGEpIHsKKyAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7Cisg
IGlmIChpbml0RGF0YSkgeworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzaXplOyArK2lpKSB7
CisgICAgICBhcnJheVtpaV0gPSBpaSAlIDI1NTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGFycmF5
OworfQorCitmdW5jdGlvbiBjYWxjdWxhdGVQYWRkaW5nQnl0ZXMoYnl0ZXNQZXJQaXhlbCwgYWxp
Z25tZW50LCB3aWR0aCkgeworICB2YXIgcGFkZGluZyA9IDA7CisgIHN3aXRjaCAoYWxpZ25tZW50
KSB7CisgICAgY2FzZSAxOgorICAgIGNhc2UgMjoKKyAgICBjYXNlIDQ6CisgICAgY2FzZSA4Ogor
ICAgICAgcGFkZGluZyA9IChieXRlc1BlclBpeGVsICogd2lkdGgpICUgYWxpZ25tZW50OworICAg
ICAgaWYgKHBhZGRpbmcgPiAwKQorICAgICAgICBwYWRkaW5nID0gYWxpZ25tZW50IC0gcGFkZGlu
ZzsKKyAgICAgIHJldHVybiBwYWRkaW5nOworICAgIGRlZmF1bHQ6CisgICAgICB0ZXN0RmFpbGVk
KCJzaG91bGQgbm90IHJlYWNoIGhlcmUiKTsKKyAgICAgIHJldHVybjsKKyAgfQorfQorCitmdW5j
dGlvbiBjb21wdXRlSW1hZ2VTaXplczJEKHdpZHRoLCBoZWlnaHQsIHRlc3RDYXNlKSB7CisgIC8v
IEFzc3VtZSBSR0I4L1VOU0lHTkVEX0JZVEUKKyAgdmFyIGJ5dGVzUGVyUGl4ZWwgPSAzOworICB2
YXIgYWN0dWFsV2lkdGggPSB0ZXN0Q2FzZS5yb3dMZW5ndGggPT0gMCA/IHdpZHRoIDogdGVzdENh
c2Uucm93TGVuZ3RoOworICB2YXIgcGFkZGluZyA9IGNhbGN1bGF0ZVBhZGRpbmdCeXRlcyhieXRl
c1BlclBpeGVsLCB0ZXN0Q2FzZS5hbGlnbm1lbnQsIGFjdHVhbFdpZHRoKTsKKyAgdmFyIGJ5dGVz
UGVyUm93ID0gYWN0dWFsV2lkdGggKiBieXRlc1BlclBpeGVsICsgcGFkZGluZzsKKyAgdmFyIGJ5
dGVzTGFzdFJvdyA9IGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aDsKKyAgdmFyIHNpemUgPSBieXRlc1Bl
clJvdyAqIChoZWlnaHQgLSAxKSArIGJ5dGVzTGFzdFJvdzsKKyAgdmFyIHNraXBTaXplID0gMDsK
KyAgaWYgKHRlc3RDYXNlLnNraXBQaXhlbHMgPiAwKQorICAgIHNraXBTaXplICs9IGJ5dGVzUGVy
UGl4ZWwgKiB0ZXN0Q2FzZS5za2lwUGl4ZWxzOworICBpZiAodGVzdENhc2Uuc2tpcFJvd3MgPiAw
KQorICAgIHNraXBTaXplICs9IGJ5dGVzUGVyUm93ICogdGVzdENhc2Uuc2tpcFJvd3M7CisgIHJl
dHVybiB7c2l6ZTogc2l6ZSwKKyAgICAgICAgICBieXRlc1BlclJvdzogYnl0ZXNQZXJSb3csCisg
ICAgICAgICAgYnl0ZXNMYXN0Um93OiBieXRlc0xhc3RSb3csCisgICAgICAgICAgcGFkZGluZzog
cGFkZGluZywKKyAgICAgICAgICBza2lwU2l6ZTogc2tpcFNpemUsCisgICAgICAgICAgdG90YWxT
aXplOiBzaXplICsgc2tpcFNpemV9OworfQorCitmdW5jdGlvbiBjb21wdXRlSW1hZ2VTaXplczNE
KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCB0ZXN0Q2FzZSkgeworICAvLyBBc3N1bWUgUkdCOC9VTlNJ
R05FRF9CWVRFCisgIHZhciBieXRlc1BlclBpeGVsID0gMzsKKyAgdmFyIGFjdHVhbFdpZHRoID0g
dGVzdENhc2Uucm93TGVuZ3RoID09IDAgPyB3aWR0aCA6IHRlc3RDYXNlLnJvd0xlbmd0aDsKKyAg
dmFyIGFjdHVhbEhlaWdodCA9IHRlc3RDYXNlLmltYWdlSGVpZ2h0ID09IDAgPyBoZWlnaHQgOiB0
ZXN0Q2FzZS5pbWFnZUhlaWdodDsKKyAgdmFyIHBhZGRpbmcgPSBjYWxjdWxhdGVQYWRkaW5nQnl0
ZXMoYnl0ZXNQZXJQaXhlbCwgdGVzdENhc2UuYWxpZ25tZW50LCBhY3R1YWxXaWR0aCk7CisgIHZh
ciBieXRlc1BlclJvdyA9IGFjdHVhbFdpZHRoICogYnl0ZXNQZXJQaXhlbCArIHBhZGRpbmc7Cisg
IHZhciBieXRlc0xhc3RSb3cgPSBieXRlc1BlclBpeGVsICogd2lkdGg7CisgIHZhciBieXRlc1Bl
ckltYWdlID0gYnl0ZXNQZXJSb3cgKiBhY3R1YWxIZWlnaHQ7CisgIHZhciBieXRlc0xhc3RJbWFn
ZSA9IGJ5dGVzUGVyUm93ICogKGhlaWdodCAtIDEpICsgYnl0ZXNMYXN0Um93OworICB2YXIgc2l6
ZSA9IGJ5dGVzUGVySW1hZ2UgKiAoZGVwdGggLSAxKSArIGJ5dGVzTGFzdEltYWdlOworICB2YXIg
c2tpcFNpemUgPSAwOworICBpZiAodGVzdENhc2Uuc2tpcFBpeGVscyA+IDApCisgICAgc2tpcFNp
emUgKz0gYnl0ZXNQZXJQaXhlbCAqIHRlc3RDYXNlLnNraXBQaXhlbHM7CisgIGlmICh0ZXN0Q2Fz
ZS5za2lwUm93cyA+IDApCisgICAgc2tpcFNpemUgKz0gYnl0ZXNQZXJSb3cgKiB0ZXN0Q2FzZS5z
a2lwUm93czsKKyAgaWYgKHRlc3RDYXNlLnNraXBJbWFnZXMgPiAwKQorICAgIHNraXBTaXplICs9
IGJ5dGVzUGVySW1hZ2UgKiB0ZXN0Q2FzZS5za2lwSW1hZ2VzOworICByZXR1cm4ge3NpemU6IHNp
emUsCisgICAgICAgICAgYnl0ZXNQZXJSb3c6IGJ5dGVzUGVyUm93LAorICAgICAgICAgIGJ5dGVz
TGFzdFJvdzogYnl0ZXNMYXN0Um93LAorICAgICAgICAgIGJ5dGVzUGVySW1hZ2U6IGJ5dGVzUGVy
SW1hZ2UsCisgICAgICAgICAgYnl0ZXNMYXN0SW1hZ2U6IGJ5dGVzTGFzdEltYWdlLAorICAgICAg
ICAgIHBhZGRpbmc6IHBhZGRpbmcsCisgICAgICAgICAgc2tpcFNpemU6IHNraXBTaXplLAorICAg
ICAgICAgIHRvdGFsU2l6ZTogc2l6ZSArIHNraXBTaXplfTsKK30KKworZnVuY3Rpb24gY29weURh
dGEoc3JjRGF0YSwgc3JjSW5kZXgsIGRzdERhdGEsIGRzdEluZGV4LCBzaXplKSB7CisgIGZvciAo
dmFyIGlpID0gMDsgaWkgPCBzaXplOyArK2lpKQorICAgIGRzdERhdGFbZHN0SW5kZXggKyBpaV0g
PSBzcmNEYXRhW3NyY0luZGV4ICsgaWldOworfQorCitmdW5jdGlvbiB1bnBhY2tQaXhlbHMoc3Jj
RGF0YSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGltYWdlU2l6ZXMpIHsKKyAgdmFyIGJ5dGVzUGVy
UGl4ZWwgPSAzOworICB2YXIgdW5wYWNrZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiBkZXB0aCAq
IGJ5dGVzUGVyUGl4ZWw7CisgIHZhciBkc3REYXRhID0gc2V0dXBBcnJheUJ1ZmZlcih1bnBhY2tl
ZFNpemUsIGZhbHNlKTsKKyAgdmFyIHNyY0luZGV4ID0gaW1hZ2VTaXplcy5za2lwU2l6ZTsKKyAg
dmFyIGRzdEluZGV4ID0gMDsKKyAgZm9yICh2YXIgeiA9IDA7IHogPCBkZXB0aDsgKyt6KSB7Cisg
ICAgdmFyIHNyY0luZGV4UGVySW1hZ2UgPSBzcmNJbmRleDsKKyAgICBmb3IgKHZhciB5ID0gMDsg
eSA8IGhlaWdodDsgKyt5KSB7CisgICAgICBjb3B5RGF0YShzcmNEYXRhLCBzcmNJbmRleFBlcklt
YWdlLCBkc3REYXRhLCBkc3RJbmRleCwgd2lkdGggKiAzKTsKKyAgICAgIHNyY0luZGV4UGVySW1h
Z2UgKz0gaW1hZ2VTaXplcy5ieXRlc1BlclJvdzsKKyAgICAgIGRzdEluZGV4ICs9IHdpZHRoICog
MzsKKyAgICB9CisgICAgaWYgKGRlcHRoID4gMSkKKyAgICAgIHNyY0luZGV4ICs9IGltYWdlU2l6
ZXMuYnl0ZXNQZXJJbWFnZTsKKyAgfQorICByZXR1cm4gZHN0RGF0YTsKK30KKworZnVuY3Rpb24g
Z2V0UGl4ZWxzRnJvbVRleHR1cmUyRChnbCwgdGV4LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0KSB7CisgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgIGdsLmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwg
dGV4LCAwKTsKKyAgdmFyIGJ5dGVzUGVyUmVhZGJhY2tQaXhlbCA9IDQ7CisgIHZhciByZWFkYmFj
a0J1ZmZlciA9IHNldHVwQXJyYXlCdWZmZXIod2lkdGggKiBoZWlnaHQgKiBieXRlc1BlclJlYWRi
YWNrUGl4ZWwsIGZhbHNlKTsKKyAgZ2wucmVhZFBpeGVscyh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCByZWFkYmFja0J1ZmZlcik7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZCBiYWNrIHRleHR1cmUg
cGl4ZWxzIHNob3VsZCBzdWNjZWVkIik7CisgIHZhciBieXRlc1BlclBpeGVsID0gMzsKKyAgdmFy
IGJ1ZmZlciA9IHNldHVwQXJyYXlCdWZmZXIod2lkdGggKiBoZWlnaHQgKiBieXRlc1BlclBpeGVs
LCBmYWxzZSk7CisgIHZhciBzcmNJbmRleCA9IDA7CisgIHZhciBkc3RJbmRleCA9IDA7CisgIGZv
ciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICBmb3IgKHZhciB4ID0gMDsgeCA8
IHdpZHRoOyArK3gpIHsKKyAgICAgIGJ1ZmZlcltkc3RJbmRleCsrXSA9IHJlYWRiYWNrQnVmZmVy
W3NyY0luZGV4KytdOyAvLyBSCisgICAgICBidWZmZXJbZHN0SW5kZXgrK10gPSByZWFkYmFja0J1
ZmZlcltzcmNJbmRleCsrXTsgLy8gRworICAgICAgYnVmZmVyW2RzdEluZGV4KytdID0gcmVhZGJh
Y2tCdWZmZXJbc3JjSW5kZXgrK107IC8vIEIKKyAgICAgIHNyY0luZGV4Kys7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBCisgICAgfQorICB9CisgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
byk7CisgIHJldHVybiBidWZmZXI7Cit9CisKK2Z1bmN0aW9uIGdldFBpeGVsc0Zyb21UZXh0dXJl
M0QoZ2wsIHRleCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgpIHsKKyAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgdmFyIGJ5dGVzUGVyUmVhZGJhY2tQaXhl
bCA9IDQ7CisgIHZhciByZWFkYmFja0J1ZmZlciA9IHNldHVwQXJyYXlCdWZmZXIod2lkdGggKiBo
ZWlnaHQgKiBieXRlc1BlclJlYWRiYWNrUGl4ZWwsIGZhbHNlKTsKKyAgdmFyIGJ5dGVzUGVyUGl4
ZWwgPSAzOworICB2YXIgYnVmZmVyID0gc2V0dXBBcnJheUJ1ZmZlcih3aWR0aCAqIGhlaWdodCAq
IGRlcHRoICogYnl0ZXNQZXJQaXhlbCwgZmFsc2UpOworICB2YXIgZHN0SW5kZXggPSAwOworICBm
b3IgKHZhciB6eiA9IDA7IHp6IDwgZGVwdGg7ICsrenopIHsKKyAgICBnbC5mcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleCwgMCwg
enogKyB6b2Zmc2V0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlYWRiYWNrQnVmZmVyKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInJlYWQgYmFjayB0ZXh0dXJl
IHBpeGVscyBzaG91bGQgc3VjY2VlZCIpOworICAgIHZhciBzcmNJbmRleCA9IDA7CisgICAgZm9y
ICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgZm9yICh2YXIgeCA9IDA7IHgg
PCB3aWR0aDsgKyt4KSB7CisgICAgICAgIGJ1ZmZlcltkc3RJbmRleCsrXSA9IHJlYWRiYWNrQnVm
ZmVyW3NyY0luZGV4KytdOyAvLyBSCisgICAgICAgIGJ1ZmZlcltkc3RJbmRleCsrXSA9IHJlYWRi
YWNrQnVmZmVyW3NyY0luZGV4KytdOyAvLyBHCisgICAgICAgIGJ1ZmZlcltkc3RJbmRleCsrXSA9
IHJlYWRiYWNrQnVmZmVyW3NyY0luZGV4KytdOyAvLyBCCisgICAgICAgIHNyY0luZGV4Kys7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBCisgICAgICB9CisgICAgfQor
ICB9CisgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIGdsLmRl
bGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgIHJldHVybiBidWZmZXI7Cit9CisKK2Z1bmN0aW9uIGNv
bXBhcmVQaXhlbHMoYnVmZmVyMSwgYnVmZmVyMikgeworICBpZiAoYnVmZmVyMS5sZW5ndGggIT0g
YnVmZmVyMi5sZW5ndGggfHwgYnVmZmVyMS5sZW5ndGggJSAzICE9IDApIHsKKyAgICB0ZXN0RmFp
bGVkKCJjb21wYXJlIHBpeGVsczogaW52YWxpZCBidWZmZXIgc2l6ZSIpOworICAgIHJldHVybjsK
KyAgfQorICB2YXIgY291bnQgPSAwOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYnVmZmVyMS5s
ZW5ndGggLyAzOyArK2lpKSB7CisgICAgaWYgKGJ1ZmZlcjFbaWkgKiAzXSAhPSBidWZmZXIyW2lp
ICogM10gfHwKKyAgICAgICAgYnVmZmVyMVtpaSAqIDMgKyAxXSAhPSBidWZmZXIyW2lpICogMyAr
IDFdIHx8CisgICAgICAgIGJ1ZmZlcjFbaWkgKiAzICsgMl0gIT0gYnVmZmVyMltpaSAqIDMgKyAy
XSkgeworICAgICAgaWYgKF9fdmVyYm9zZV9fKSB7CisgICAgICAgIGRlYnVnKCJQaXhlbCAiICsg
aWkgKyAiOiBleHBlY3RlZCAoIiArCisgICAgICAgICAgICAgIFtidWZmZXIxW2lpICogM10sIGJ1
ZmZlcjFbaWkgKiAzICsgMV0sIGJ1ZmZlcjFbaWkgKiAzICsgMl1dICsgIiksIGdvdCAoIiArCisg
ICAgICAgICAgICAgIFtidWZmZXIyW2lpICogM10sIGJ1ZmZlcjJbaWkgKiAzICsgMV0sIGJ1ZmZl
cjJbaWkgKiAzICsgMl1dICsgIikiKTsKKyAgICAgIH0KKyAgICAgIGNvdW50Kys7CisgICAgfQor
ICB9CisgIGlmIChjb3VudCA+IDApIHsKKyAgICB0ZXN0RmFpbGVkKCJjb21wYXJlIHBpeGVsczog
IiArIGNvdW50ICsgIiBwaXhlbHMgZGlmZmVyIik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3Nl
ZCgiY29tcGFyZSBwaXhlbHM6IGFzIGV4cGVjdGVkIik7CisgIH0KK30KKworZnVuY3Rpb24gcnVu
VGVzdEl0ZXJhdGlvbjJEKGdsLCB0ZXN0Q2FzZSwgdXNlVW5wYWNrQnVmZmVyKSB7CisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoIlRleHR1cmUgdXBsb2FkIGZyb20gIiArICh1c2VVbnBhY2tCdWZmZXIg
PyAidW5wYWNrIGJ1ZmZlciIgOiAiY2xpZW50IGRhdGEiKSArCisgICAgICAgICIgOiBhbGlnbm1l
bnQgPSAiICsgdGVzdENhc2UuYWxpZ25tZW50ICsgIiwgcm93TGVuZ3RoID0gIiArIHRlc3RDYXNl
LnJvd0xlbmd0aCArCisgICAgICAgICIsIHNraXBQaXhlbHMgPSAiICsgdGVzdENhc2Uuc2tpcFBp
eGVscyArICIsIHNraXBSb3dzID0gIiArIHRlc3RDYXNlLnNraXBSb3dzKTsKKyAgZGVidWcoIlRl
eEltYWdlMkQgOiBzaXplID0gKCIgKyB0ZXN0Q2FzZS53aWR0aCArICIsICIgKyB0ZXN0Q2FzZS5o
ZWlnaHQgKyAiKSIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCB0ZXN0
Q2FzZS5hbGlnbm1lbnQpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdUSCwg
dGVzdENhc2Uucm93TGVuZ3RoKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElY
RUxTLCB0ZXN0Q2FzZS5za2lwUGl4ZWxzKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NL
SVBfUk9XUywgdGVzdENhc2Uuc2tpcFJvd3MpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIlNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzIHNob3VsZCBzdWNjZWVk
Iik7CisKKyAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKworICB2YXIgaW1hZ2VTaXplcyA9IGNvbXB1dGVJbWFnZVNp
emVzMkQodGVzdENhc2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCwgdGVzdENhc2UpOworICB2YXIg
YnVmZmVyU2l6ZSA9IGltYWdlU2l6ZXMudG90YWxTaXplOworICB2YXIgYnVmZmVyID0gbnVsbDsK
KyAgdmFyIGFycmF5OworCisgIC8vIFZlcmlmeSBidWZmZXIgd2l0aCBsZXNzIHRoYW4gZW5vdWdo
IHNpemUgd2lsbCBmYWlsLgorICBpZiAodXNlVW5wYWNrQnVmZmVyKSB7CisgICAgYnVmZmVyID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVG
RkVSLCBidWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwg
YnVmZmVyU2l6ZSAtIDEsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5SR0I4LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCAw
LAorICAgICAgICAgICAgICAgICAgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgfSBl
bHNlIHsKKyAgICBhcnJheSA9IHNldHVwQXJyYXlCdWZmZXIoYnVmZmVyU2l6ZSAtIDEsIGZhbHNl
KTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQjgsIHRlc3RDYXNl
LndpZHRoLCB0ZXN0Q2FzZS5oZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICBnbC5SR0IsIGds
LlVOU0lHTkVEX0JZVEUsIGFycmF5KTsKKyAgfQorICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImJ1ZmZlciB0b28gc21hbGwiKTsKKworICBpZiAoX19hcHBs
eV9hbGlnbm1lbnRfd29ya2Fyb3VuZF9fKQorICAgIGJ1ZmZlclNpemUgKz0gaW1hZ2VTaXplcy5w
YWRkaW5nOworICBhcnJheSA9IHNldHVwQXJyYXlCdWZmZXIoYnVmZmVyU2l6ZSwgdHJ1ZSk7Cisg
IGlmICh1c2VVbnBhY2tCdWZmZXIpIHsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFD
S19CVUZGRVIsIGFycmF5LCBnbC5EWU5BTUlDX0RSQVcpOworICB9CisgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCOCwgdGVzdENhc2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdo
dCwgMCwKKyAgICAgICAgICAgICAgICBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIHVzZVVucGFj
a0J1ZmZlciA/IDAgOiBhcnJheSk7CisgIGlmICh0ZXN0Q2FzZS52YWxpZFVucGFja1BhcmFtczJE
KSB7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhJbWFnZTJE
IHdpdGggY29ycmVjdCBidWZmZXIgc2l6ZSBzaG91bGQgc3VjY2VlZCIpOworICB9IGVsc2Ugewor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxp
ZCB1bnBhY2sgcGFyYW1zIGNvbWJpbmF0aW9uIik7CisgICAgaWYgKCF1c2VVbnBhY2tCdWZmZXIp
IHsKKyAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCOCwgdGVzdENh
c2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgZ2wuUkdC
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidW5wYWNrIHBhcmFtIGNvbnN0cmFpbnRzIGRvIG5vdCBhcHBseSBpZiBu
byBkYXRhIGFyZSB1cGxvYWRlZC4iKTsKKyAgICB9CisgICAgcmV0dXJuOworICB9CisKKyAgdmFy
IGJ1ZmZlcjEgPSB1bnBhY2tQaXhlbHMoYXJyYXksIHRlc3RDYXNlLndpZHRoLCB0ZXN0Q2FzZS5o
ZWlnaHQsIDEsIGltYWdlU2l6ZXMpOworICB2YXIgYnVmZmVyMiA9IGdldFBpeGVsc0Zyb21UZXh0
dXJlMkQoZ2wsIHRleCwgMCwgMCwgdGVzdENhc2Uud2lkdGgsIHRlc3RDYXNlLmhlaWdodCk7Cisg
IGNvbXBhcmVQaXhlbHMoYnVmZmVyMSwgYnVmZmVyMik7CisKKyAgdmFyIHN1YldpZHRoID0gdGVz
dENhc2Uud2lkdGggLSB0ZXN0Q2FzZS54b2Zmc2V0OworICB2YXIgc3ViSGVpZ2h0ID0gdGVzdENh
c2UuaGVpZ2h0IC0gdGVzdENhc2UueW9mZnNldDsKKyAgZGVidWcoIlRleFN1YkltYWdlMkQgOiBv
ZmZzZXQgPSAoIiArIHRlc3RDYXNlLnhvZmZzZXQgKyAiLCAiICsgdGVzdENhc2UueW9mZnNldCAr
CisgICAgICAgICIpLCBzaXplID0gKCIgKyBzdWJXaWR0aCArICIsICIgKyBzdWJIZWlnaHQgKyAi
KSIpOworICBpbWFnZVNpemVzID0gY29tcHV0ZUltYWdlU2l6ZXMyRChzdWJXaWR0aCwgc3ViSGVp
Z2h0LCB0ZXN0Q2FzZSk7CisgIGJ1ZmZlclNpemUgPSBpbWFnZVNpemVzLnRvdGFsU2l6ZTsKKwor
ICBpZiAodXNlVW5wYWNrQnVmZmVyKSB7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBidWZmZXJTaXplIC0gMSwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICBnbC50ZXhT
dWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHRlc3RDYXNlLnhvZmZzZXQsIHRlc3RDYXNlLnlv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBzdWJXaWR0aCwgc3ViSGVpZ2h0LCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIDApOworICB9IGVsc2UgeworICAgIGFycmF5ID0gc2V0dXBBcnJh
eUJ1ZmZlcihidWZmZXJTaXplIC0gMSwgZmFsc2UpOworICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgdGVzdENhc2UueG9mZnNldCwgdGVzdENhc2UueW9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgIHN1YldpZHRoLCBzdWJIZWlnaHQsIGdsLlJHQiwgZ2wuVU5TSUdORURf
QllURSwgYXJyYXkpOworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiYnVmZmVyIHRvbyBzbWFsbCIpOworCisgIGlmIChfX2FwcGx5X2FsaWdubWVu
dF93b3JrYXJvdW5kX18pCisgICAgYnVmZmVyU2l6ZSArPSBpbWFnZVNpemVzLnBhZGRpbmc7Cisg
IGFycmF5ID0gc2V0dXBBcnJheUJ1ZmZlcihidWZmZXJTaXplLCB0cnVlKTsKKyAgaWYgKHVzZVVu
cGFja0J1ZmZlcikgeworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwg
YXJyYXksIGdsLkRZTkFNSUNfRFJBVyk7CisgIH0KKyAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCB0ZXN0Q2FzZS54b2Zmc2V0LCB0ZXN0Q2FzZS55b2Zmc2V0LCBzdWJXaWR0aCwg
c3ViSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwg
dXNlVW5wYWNrQnVmZmVyID8gMCA6IGFycmF5KTsKKyAgaWYgKHRlc3RDYXNlLnZhbGlkVW5wYWNr
UGFyYW1zRm9yU3ViMkQpIHsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInRleFN1YkltYWdlMkQgd2l0aCBjb3JyZWN0IGJ1ZmZlciBzaXplIHNob3VsZCBzdWNjZWVk
Iik7CisgIH0gZWxzZSB7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sICJpbnZhbGlkIHVucGFjayBwYXJhbXMgY29tYmluYXRpb24iKTsKKyAgICByZXR1
cm47CisgIH0KKworICB2YXIgYnVmZmVyMSA9IHVucGFja1BpeGVscyhhcnJheSwgc3ViV2lkdGgs
IHN1YkhlaWdodCwgMSwgaW1hZ2VTaXplcyk7CisgIHZhciBidWZmZXIyID0gZ2V0UGl4ZWxzRnJv
bVRleHR1cmUyRCgKKyAgICAgIGdsLCB0ZXgsIHRlc3RDYXNlLnhvZmZzZXQsIHRlc3RDYXNlLnlv
ZmZzZXQsIHN1YldpZHRoLCBzdWJIZWlnaHQpOworICBjb21wYXJlUGl4ZWxzKGJ1ZmZlcjEsIGJ1
ZmZlcjIpOworCisgIGlmIChidWZmZXIpIHsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VO
UEFDS19CVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworICB9Cisg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICBnbC5kZWxldGVUZXh0dXJl
KHRleCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3Ii
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdEl0ZXJhdGlvbjNEKGdsLCB0ZXN0Q2FzZSwgdXNlVW5w
YWNrQnVmZmVyKSB7CisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIlRleHR1cmUgdXBsb2FkIGZyb20g
IiAgKyAodXNlVW5wYWNrQnVmZmVyID8gInVucGFjayBidWZmZXIiIDogImNsaWVudCBkYXRhIikg
KworICAgICAgICAiIDogYWxpZ25tZW50ID0gIiArIHRlc3RDYXNlLmFsaWdubWVudCArICIsIHJv
d0xlbmd0aCA9ICIgKyB0ZXN0Q2FzZS5yb3dMZW5ndGggKworICAgICAgICAiLCBpbWFnZUhlaWdo
dCA9ICIgKyB0ZXN0Q2FzZS5pbWFnZUhlaWdodCArICIsIHNraXBQaXhlbHMgPSAiICsgdGVzdENh
c2Uuc2tpcFBpeGVscyArCisgICAgICAgICIsIHNraXBSb3dzID0gIiArIHRlc3RDYXNlLnNraXBS
b3dzICsgIiwgc2tpcEltYWdlcyA9ICIgKyB0ZXN0Q2FzZS5za2lwSW1hZ2VzKTsKKyAgZGVidWco
IlRleEltYWdlM0QgOiBzaXplID0gKCIgKyB0ZXN0Q2FzZS53aWR0aCArICIsICIgKyB0ZXN0Q2Fz
ZS5oZWlnaHQgKyAiLCAiICsgdGVzdENhc2UuZGVwdGggKyAiKSIpOworICBnbC5waXhlbFN0b3Jl
aShnbC5VTlBBQ0tfQUxJR05NRU5ULCB0ZXN0Q2FzZS5hbGlnbm1lbnQpOworICBnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdUSCwgdGVzdENhc2Uucm93TGVuZ3RoKTsKKyAgZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hFSUdIVCwgdGVzdENhc2UuaW1hZ2VIZWlnaHQpOwor
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHRlc3RDYXNlLnNraXBQaXhl
bHMpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCB0ZXN0Q2FzZS5za2lw
Um93cyk7CisgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX0lNQUdFUywgdGVzdENhc2Uu
c2tpcEltYWdlcyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0
IHVwIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMgc2hvdWxkIHN1Y2NlZWQiKTsKKworICB2YXIgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0
ZXgpOworCisgIHZhciBpbWFnZVNpemVzID0gY29tcHV0ZUltYWdlU2l6ZXMzRCh0ZXN0Q2FzZS53
aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCB0ZXN0Q2FzZS5kZXB0aCwgdGVzdENhc2UpOworICB2YXIg
YnVmZmVyID0gbnVsbDsKKyAgdmFyIGFycmF5OworICB2YXIgYnVmZmVyU2l6ZSA9IGltYWdlU2l6
ZXMudG90YWxTaXplOworCisgIC8vIFZlcmlmeSBidWZmZXIgd2l0aCBsZXNzIHRoYW4gZW5vdWdo
IHNpemUgd2lsbCBmYWlsLgorICBpZiAodXNlVW5wYWNrQnVmZmVyKSB7CisgICAgYnVmZmVyID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVG
RkVSLCBidWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwg
YnVmZmVyU2l6ZSAtIDEsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wudGV4SW1hZ2UzRChnbC5U
RVhUVVJFXzNELCAwLCBnbC5SR0I4LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCB0
ZXN0Q2FzZS5kZXB0aCwgMCwKKyAgICAgICAgICAgICAgICAgIGdsLlJHQiwgZ2wuVU5TSUdORURf
QllURSwgMCk7CisgIH0gZWxzZSB7CisgICAgYXJyYXkgPSBzZXR1cEFycmF5QnVmZmVyKGJ1ZmZl
clNpemUgLSAxLCBmYWxzZSk7CisgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBn
bC5SR0I4LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCB0ZXN0Q2FzZS5kZXB0aCwg
MCwKKyAgICAgICAgICAgICAgICAgIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpOwor
ICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYnVm
ZmVyIHRvbyBzbWFsbCIpOworCisgIGlmIChfX2FwcGx5X2FsaWdubWVudF93b3JrYXJvdW5kX18p
CisgICAgYnVmZmVyU2l6ZSArPSBpbWFnZVNpemVzLnBhZGRpbmc7CisgIGFycmF5ID0gc2V0dXBB
cnJheUJ1ZmZlcihidWZmZXJTaXplLCB0cnVlKTsKKyAgaWYgKHVzZVVucGFja0J1ZmZlcikgewor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYXJyYXksIGdsLkRZTkFN
SUNfRFJBVyk7CisgIH0KKyAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0I4
LCB0ZXN0Q2FzZS53aWR0aCwgdGVzdENhc2UuaGVpZ2h0LCB0ZXN0Q2FzZS5kZXB0aCwgMCwKKyAg
ICAgICAgICAgICAgICBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIHVzZVVucGFja0J1ZmZlciA/
IDAgOiBhcnJheSk7CisgIGlmICh0ZXN0Q2FzZS52YWxpZFVucGFja1BhcmFtczNEKSB7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhJbWFnZTNEIHdpdGggY29y
cmVjdCBidWZmZXIgc2l6ZSBzaG91bGQgc3VjY2VlZCIpOworICB9IGVsc2UgeworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCB1bnBhY2sg
cGFyYW1zIGNvbWJpbmF0aW9uIik7CisgICAgaWYgKCF1c2VVbnBhY2tCdWZmZXIpIHsKKyAgICAg
IGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCOCwgdGVzdENhc2Uud2lkdGgs
IHRlc3RDYXNlLmhlaWdodCwgdGVzdENhc2UuZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgICAg
IGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgInVucGFjayBwYXJhbSBjb25zdHJhaW50cyBkbyBub3QgYXBw
bHkgaWYgbm8gZGF0YSBhcmUgdXBsb2FkZWQuIik7CisgICAgfQorICAgIHJldHVybjsKKyAgfQor
CisgIHZhciBidWZmZXIxID0gdW5wYWNrUGl4ZWxzKGFycmF5LCB0ZXN0Q2FzZS53aWR0aCwgdGVz
dENhc2UuaGVpZ2h0LCB0ZXN0Q2FzZS5kZXB0aCwgaW1hZ2VTaXplcyk7CisgIHZhciBidWZmZXIy
ID0gZ2V0UGl4ZWxzRnJvbVRleHR1cmUzRCgKKyAgICAgIGdsLCB0ZXgsIDAsIDAsIDAsIHRlc3RD
YXNlLndpZHRoLCB0ZXN0Q2FzZS5oZWlnaHQsIHRlc3RDYXNlLmRlcHRoKTsKKyAgY29tcGFyZVBp
eGVscyhidWZmZXIxLCBidWZmZXIyKTsKKworICB2YXIgc3ViV2lkdGggPSB0ZXN0Q2FzZS53aWR0
aCAtIHRlc3RDYXNlLnhvZmZzZXQ7CisgIHZhciBzdWJIZWlnaHQgPSB0ZXN0Q2FzZS5oZWlnaHQg
LSB0ZXN0Q2FzZS55b2Zmc2V0OworICB2YXIgc3ViRGVwdGggPSB0ZXN0Q2FzZS5kZXB0aCAtIHRl
c3RDYXNlLnpvZmZzZXQ7CisgIGRlYnVnKCJUZXhTdWJJbWFnZTNEIDogb2Zmc2V0ID0gKCIgKyB0
ZXN0Q2FzZS54b2Zmc2V0ICsgIiwgIiArIHRlc3RDYXNlLnlvZmZzZXQgKyAiLCAiICsKKyAgICAg
ICAgdGVzdENhc2Uuem9mZnNldCArICIpLCBzaXplID0gKCIgKyBzdWJXaWR0aCArICIsICIgKyBz
dWJIZWlnaHQgKyAiLCAiICsgc3ViRGVwdGggKyAiKSIpOworICBpbWFnZVNpemVzID0gY29tcHV0
ZUltYWdlU2l6ZXMzRChzdWJXaWR0aCwgc3ViSGVpZ2h0LCBzdWJEZXB0aCwgdGVzdENhc2UpOwor
ICBidWZmZXJTaXplID0gaW1hZ2VTaXplcy50b3RhbFNpemU7CisKKyAgaWYgKHVzZVVucGFja0J1
ZmZlcikgeworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVy
U2l6ZSAtIDEsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhU
VVJFXzNELCAwLCB0ZXN0Q2FzZS54b2Zmc2V0LCB0ZXN0Q2FzZS55b2Zmc2V0LCB0ZXN0Q2FzZS56
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgc3ViV2lkdGgsIHN1YkhlaWdodCwgc3ViRGVw
dGgsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgIH0gZWxzZSB7CisgICAgYXJyYXkg
PSBzZXR1cEFycmF5QnVmZmVyKGJ1ZmZlclNpemUgLSAxLCBmYWxzZSk7CisgICAgZ2wudGV4U3Vi
SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCB0ZXN0Q2FzZS54b2Zmc2V0LCB0ZXN0Q2FzZS55b2Zm
c2V0LCB0ZXN0Q2FzZS56b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgc3ViV2lkdGgsIHN1
YkhlaWdodCwgc3ViRGVwdGgsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpOworICB9
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYnVmZmVy
IHRvbyBzbWFsbCIpOworCisgIGlmIChfX2FwcGx5X2FsaWdubWVudF93b3JrYXJvdW5kX18pCisg
ICAgYnVmZmVyU2l6ZSArPSBpbWFnZVNpemVzLnBhZGRpbmc7CisgIGFycmF5ID0gc2V0dXBBcnJh
eUJ1ZmZlcihidWZmZXJTaXplLCB0cnVlKTsKKyAgaWYgKHVzZVVucGFja0J1ZmZlcikgeworICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYXJyYXksIGdsLkRZTkFNSUNf
RFJBVyk7CisgIH0KKyAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCB0ZXN0Q2Fz
ZS54b2Zmc2V0LCB0ZXN0Q2FzZS55b2Zmc2V0LCB0ZXN0Q2FzZS56b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgIHN1YldpZHRoLCBzdWJIZWlnaHQsIHN1YkRlcHRoLAorICAgICAgICAgICAgICAg
ICAgIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgdXNlVW5wYWNrQnVmZmVyID8gMCA6IGFycmF5
KTsKKyAgaWYgKHRlc3RDYXNlLnZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViM0QpIHsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFN1YkltYWdlM0Qgd2l0aCBjb3Jy
ZWN0IGJ1ZmZlciBzaXplIHNob3VsZCBzdWNjZWVkIik7CisgIH0gZWxzZSB7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIHVucGFjayBw
YXJhbXMgY29tYmluYXRpb24iKTsKKyAgICByZXR1cm47CisgIH0KKworICBidWZmZXIxID0gdW5w
YWNrUGl4ZWxzKGFycmF5LCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCBzdWJEZXB0aCwgaW1hZ2VTaXpl
cyk7CisgIGJ1ZmZlcjIgPSBnZXRQaXhlbHNGcm9tVGV4dHVyZTNEKGdsLCB0ZXgsIHRlc3RDYXNl
LnhvZmZzZXQsIHRlc3RDYXNlLnlvZmZzZXQsIHRlc3RDYXNlLnpvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YldpZHRoLCBzdWJIZWlnaHQsIHN1YkRlcHRoKTsK
KyAgY29tcGFyZVBpeGVscyhidWZmZXIxLCBidWZmZXIyKTsKKworICBpZiAoYnVmZmVyKSB7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBudWxsKTsKKyAgICBnbC5k
ZWxldGVCdWZmZXIoYnVmZmVyKTsKKyAgfQorICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNE
LCBudWxsKTsKKyAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkg
eworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAy
KTsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8gZ2V0IGEgV2ViR0wgY29u
dGV4dCIpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIEZvciAyRCBjYXNlcywgZGVwdGgsIHpv
ZmZzZXQsIGltYWdlSGVpZ2h0LCBza2lwSW1hZ2VzIGFyZSBpZ25vcmVkLgorICB2YXIgdGVzdENh
c2VzID0gWworICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6IDIs
IHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0aDog
MCwgaW1hZ2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2Vz
OiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNG
b3JTdWIyRDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IHRydWUsIHZhbGlkVW5w
YWNrUGFyYW1zRm9yU3ViM0Q6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIGRl
cHRoOiA0LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAxLAorICAgICAgYWxpZ25t
ZW50OiAyLCByb3dMZW5ndGg6IDAsIGltYWdlSGVpZ2h0OiAwLCBza2lwUGl4ZWxzOiAwLCBza2lw
Um93czogMCwgc2tpcEltYWdlczogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUs
IHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUsCisgICAgICB2YWxpZFVucGFja1BhcmFt
czNEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjNEOiB0cnVlIH0sCisgICAgeyB3aWR0
aDogNiwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDogMywgem9mZnNl
dDogMSwKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiAwLCBpbWFnZUhlaWdodDogMCwg
c2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAsCisgICAgICB2YWxpZFVu
cGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlLAorICAg
ICAgdmFsaWRVbnBhY2tQYXJhbXMzRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIzRDog
dHJ1ZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogOCwgZGVwdGg6IDMsIHhvZmZzZXQ6IDIs
IHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDgsIHJvd0xlbmd0aDog
MCwgaW1hZ2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2Vz
OiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNG
b3JTdWIyRDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IHRydWUsIHZhbGlkVW5w
YWNrUGFyYW1zRm9yU3ViM0Q6IHRydWUgfSwKKworICAgIC8vIFJPV19MRU5HVEggPT0gd2lkdGgK
KyAgICB7IHdpZHRoOiAxMCwgaGVpZ2h0OiA5LCBkZXB0aDogMiwgeG9mZnNldDogMiwgeW9mZnNl
dDogMywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiAxMCwgaW1h
Z2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2VzOiAwLAor
ICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIy
RDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IHRydWUsIHZhbGlkVW5wYWNrUGFy
YW1zRm9yU3ViM0Q6IHRydWUgfSwKKworICAgIC8vIFJPV19MRU5HVEggPCB3aWR0aAorICAgIHsg
d2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsIHpv
ZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0aDogNCwgaW1hZ2VIZWlnaHQ6
IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2VzOiAwLAorICAgICAgdmFs
aWRVbnBhY2tQYXJhbXMyRDogZmFsc2UsIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IGZhbHNlIH0sCisg
ICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDog
Mywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogMiwgcm93TGVuZ3RoOiA0LCBpbWFnZUhl
aWdodDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAsCisgICAg
ICB2YWxpZFVucGFja1BhcmFtczJEOiBmYWxzZSwgdmFsaWRVbnBhY2tQYXJhbXMzRDogZmFsc2Ug
fSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4b2Zmc2V0OiAyLCB5b2Zm
c2V0OiAzLCB6b2Zmc2V0OiAxLAorICAgICAgYWxpZ25tZW50OiA0LCByb3dMZW5ndGg6IDQsIGlt
YWdlSGVpZ2h0OiAwLCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMCwgc2tpcEltYWdlczogMCwK
KyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IGZhbHNlLCB2YWxpZFVucGFja1BhcmFtczNEOiBm
YWxzZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6IDIs
IHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDgsIHJvd0xlbmd0aDog
NCwgaW1hZ2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2Vz
OiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFsc2UsIHZhbGlkVW5wYWNrUGFyYW1z
M0Q6IGZhbHNlIH0sCisKKyAgICAvLyBST1dfTEVOR1RIID4gd2lkdGgKKyAgICB7IHdpZHRoOiA1
LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAx
LAorICAgICAgYWxpZ25tZW50OiAxLCByb3dMZW5ndGg6IDYsIGltYWdlSGVpZ2h0OiAwLCBza2lw
UGl4ZWxzOiAwLCBza2lwUm93czogMCwgc2tpcEltYWdlczogMCwKKyAgICAgIHZhbGlkVW5wYWNr
UGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUsCisgICAgICB2
YWxpZFVucGFja1BhcmFtczNEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjNEOiB0cnVl
IH0sCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9m
ZnNldDogMywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogMiwgcm93TGVuZ3RoOiA3LCBp
bWFnZUhlaWdodDogMCwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAs
CisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1
YjJEOiB0cnVlLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMzRDogdHJ1ZSwgdmFsaWRVbnBhY2tQ
YXJhbXNGb3JTdWIzRDogdHJ1ZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6
IDMsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6
IDQsIHJvd0xlbmd0aDogOCwgaW1hZ2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dz
OiAwLCBza2lwSW1hZ2VzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFs
aWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6
IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViM0Q6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA1
LCBoZWlnaHQ6IDcsIGRlcHRoOiA1LCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAy
LAorICAgICAgYWxpZ25tZW50OiA4LCByb3dMZW5ndGg6IDksIGltYWdlSGVpZ2h0OiAwLCBza2lw
UGl4ZWxzOiAwLCBza2lwUm93czogMCwgc2tpcEltYWdlczogMCwKKyAgICAgIHZhbGlkVW5wYWNr
UGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUsCisgICAgICB2
YWxpZFVucGFja1BhcmFtczNEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjNEOiB0cnVl
IH0sCisKKyAgICAvLyBJTUFHRV9IRUlHSFQgPT0gaGVpZ2h0CisgICAgeyB3aWR0aDogNiwgaGVp
Z2h0OiA3LCBkZXB0aDogNCwgeG9mZnNldDogMiwgeW9mZnNldDogMywgem9mZnNldDogMSwKKyAg
ICAgIGFsaWdubWVudDogOCwgcm93TGVuZ3RoOiAwLCBpbWFnZUhlaWdodDogNywgc2tpcFBpeGVs
czogMCwgc2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFt
czJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlLAorICAgICAgdmFsaWRV
bnBhY2tQYXJhbXMzRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIzRDogdHJ1ZSB9LAor
CisgICAgLy8gSU1BR0VfSEVJR0hUIDwgaGVpZ2h0CisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3
LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDogMywgem9mZnNldDogMSwKKyAgICAgIGFs
aWdubWVudDogMSwgcm93TGVuZ3RoOiAwLCBpbWFnZUhlaWdodDogNiwgc2tpcFBpeGVsczogMCwg
c2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0
cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlLAorICAgICAgdmFsaWRVbnBhY2tQ
YXJhbXMzRDogZmFsc2UgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4
b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAxLAorICAgICAgYWxpZ25tZW50OiAyLCBy
b3dMZW5ndGg6IDAsIGltYWdlSGVpZ2h0OiA2LCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMCwg
c2tpcEltYWdlczogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5w
YWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUsCisgICAgICB2YWxpZFVucGFja1BhcmFtczNEOiBmYWxz
ZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6IDIsIHlv
ZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDQsIHJvd0xlbmd0aDogMCwg
aW1hZ2VIZWlnaHQ6IDYsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2VzOiAw
LAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JT
dWIyRDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IGZhbHNlIH0sCisgICAgeyB3
aWR0aDogNSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDogMywgem9m
ZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogOCwgcm93TGVuZ3RoOiAwLCBpbWFnZUhlaWdodDog
Niwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsIHNraXBJbWFnZXM6IDAsCisgICAgICB2YWxp
ZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0cnVlLAor
ICAgICAgdmFsaWRVbnBhY2tQYXJhbXMzRDogZmFsc2UgfSwKKworICAgIC8vIElNQUdFX0hFSUdI
VCA+IGhlaWdodAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6
IDIsIHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDEsIHJvd0xlbmd0
aDogMCwgaW1hZ2VIZWlnaHQ6IDgsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1h
Z2VzOiAwLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJh
bXNGb3JTdWIyRDogdHJ1ZSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IHRydWUsIHZhbGlk
VW5wYWNrUGFyYW1zRm9yU3ViM0Q6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA2LCBoZWlnaHQ6IDcs
IGRlcHRoOiAzLCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAyLCB6b2Zmc2V0OiAxLAorICAgICAgYWxp
Z25tZW50OiAyLCByb3dMZW5ndGg6IDAsIGltYWdlSGVpZ2h0OiA5LCBza2lwUGl4ZWxzOiAwLCBz
a2lwUm93czogMCwgc2tpcEltYWdlczogMCwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRy
dWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRydWUsCisgICAgICB2YWxpZFVucGFja1Bh
cmFtczNEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjNEOiB0cnVlIH0sCisgICAgeyB3
aWR0aDogNywgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDogNCwgem9m
ZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiAwLCBpbWFnZUhlaWdodDog
MTAsIHNraXBQaXhlbHM6IDAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2VzOiAwLAorICAgICAgdmFs
aWRVbnBhY2tQYXJhbXMyRDogdHJ1ZSwgdmFsaWRVbnBhY2tQYXJhbXNGb3JTdWIyRDogdHJ1ZSwK
KyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3Vi
M0Q6IHRydWUgfSwKKyAgICB7IHdpZHRoOiA4LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4b2Zmc2V0
OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAxLAorICAgICAgYWxpZ25tZW50OiA4LCByb3dMZW5n
dGg6IDAsIGltYWdlSGVpZ2h0OiAxMSwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDAsIHNraXBJ
bWFnZXM6IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1Bh
cmFtc0ZvclN1YjJEOiB0cnVlLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMzRDogdHJ1ZSwgdmFs
aWRVbnBhY2tQYXJhbXNGb3JTdWIzRDogdHJ1ZSB9LAorCisgICAgLy8gU0tJUCBwYXJhbWV0ZXJz
CisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNl
dDogMywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogMSwgcm93TGVuZ3RoOiAwLCBpbWFn
ZUhlaWdodDogMCwgc2tpcFBpeGVsczogMTAsIHNraXBSb3dzOiAwLCBza2lwSW1hZ2VzOiAwLAor
ICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFsc2UsIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IGZh
bHNlIH0sCisgICAgeyB3aWR0aDogNSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwg
eW9mZnNldDogMywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogMiwgcm93TGVuZ3RoOiAw
LCBpbWFnZUhlaWdodDogMCwgc2tpcFBpeGVsczogMiwgc2tpcFJvd3M6IDgsIHNraXBJbWFnZXM6
IDAsCisgICAgICB2YWxpZFVucGFja1BhcmFtczJEOiBmYWxzZSwgdmFsaWRVbnBhY2tQYXJhbXMz
RDogZmFsc2UgfSwKKyAgICB7IHdpZHRoOiA1LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4b2Zmc2V0
OiAyLCB5b2Zmc2V0OiAzLCB6b2Zmc2V0OiAxLAorICAgICAgYWxpZ25tZW50OiA0LCByb3dMZW5n
dGg6IDAsIGltYWdlSGVpZ2h0OiAwLCBza2lwUGl4ZWxzOiAzLCBza2lwUm93czogNSwgc2tpcElt
YWdlczogMSwKKyAgICAgIHZhbGlkVW5wYWNrUGFyYW1zMkQ6IGZhbHNlLCB2YWxpZFVucGFja1Bh
cmFtczNEOiBmYWxzZSB9LAorICAgIHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhv
ZmZzZXQ6IDIsIHlvZmZzZXQ6IDMsIHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDgsIHJv
d0xlbmd0aDogMCwgaW1hZ2VIZWlnaHQ6IDAsIHNraXBQaXhlbHM6IDcsIHNraXBSb3dzOiAwLCBz
a2lwSW1hZ2VzOiAyLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMyRDogZmFsc2UsIHZhbGlkVW5w
YWNrUGFyYW1zM0Q6IGZhbHNlIH0sCisKKyAgICAvLyBhbGwgbWl4ZWQuCisgICAgeyB3aWR0aDog
NSwgaGVpZ2h0OiA3LCBkZXB0aDogMywgeG9mZnNldDogMiwgeW9mZnNldDogMywgem9mZnNldDog
MSwKKyAgICAgIGFsaWdubWVudDogMSwgcm93TGVuZ3RoOiA2LCBpbWFnZUhlaWdodDogNiwgc2tp
cFBpeGVsczogMywgc2tpcFJvd3M6IDUsIHNraXBJbWFnZXM6IDEsCisgICAgICB2YWxpZFVucGFj
a1BhcmFtczJEOiBmYWxzZSwgdmFsaWRVbnBhY2tQYXJhbXMzRDogZmFsc2UgfSwKKyAgICB7IHdp
ZHRoOiA1LCBoZWlnaHQ6IDcsIGRlcHRoOiAzLCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAzLCB6b2Zm
c2V0OiAxLAorICAgICAgYWxpZ25tZW50OiAyLCByb3dMZW5ndGg6IDQsIGltYWdlSGVpZ2h0OiA4
LCBza2lwUGl4ZWxzOiA3LCBza2lwUm93czogMiwgc2tpcEltYWdlczogMiwKKyAgICAgIHZhbGlk
VW5wYWNrUGFyYW1zMkQ6IGZhbHNlLCB2YWxpZFVucGFja1BhcmFtczNEOiBmYWxzZSB9LAorICAg
IHsgd2lkdGg6IDUsIGhlaWdodDogNywgZGVwdGg6IDMsIHhvZmZzZXQ6IDIsIHlvZmZzZXQ6IDMs
IHpvZmZzZXQ6IDEsCisgICAgICBhbGlnbm1lbnQ6IDQsIHJvd0xlbmd0aDogMTAsIGltYWdlSGVp
Z2h0OiAyLCBza2lwUGl4ZWxzOiAwLCBza2lwUm93czogMywgc2tpcEltYWdlczogMSwKKyAgICAg
IHZhbGlkVW5wYWNrUGFyYW1zMkQ6IHRydWUsIHZhbGlkVW5wYWNrUGFyYW1zRm9yU3ViMkQ6IHRy
dWUsCisgICAgICB2YWxpZFVucGFja1BhcmFtczNEOiBmYWxzZSB9LAorICAgIHsgd2lkdGg6IDEs
IGhlaWdodDogMSwgZGVwdGg6IDEsIHhvZmZzZXQ6IDAsIHlvZmZzZXQ6IDAsIHpvZmZzZXQ6IDAs
CisgICAgICBhbGlnbm1lbnQ6IDIsIHJvd0xlbmd0aDogMywgaW1hZ2VIZWlnaHQ6IDIsIHNraXBQ
aXhlbHM6IDMsIHNraXBSb3dzOiA1LCBza2lwSW1hZ2VzOiAxLAorICAgICAgdmFsaWRVbnBhY2tQ
YXJhbXMyRDogZmFsc2UsIHZhbGlkVW5wYWNrUGFyYW1zM0Q6IGZhbHNlIH0sCisgICAgeyB3aWR0
aDogMTcsIGhlaWdodDogNiwgZGVwdGg6IDQsIHhvZmZzZXQ6IDEyLCB5b2Zmc2V0OiAzLCB6b2Zm
c2V0OiAyLAorICAgICAgYWxpZ25tZW50OiAyLCByb3dMZW5ndGg6IDQsIGltYWdlSGVpZ2h0OiA4
LCBza2lwUGl4ZWxzOiAxLCBza2lwUm93czogNCwgc2tpcEltYWdlczogMiwKKyAgICAgIHZhbGlk
VW5wYWNrUGFyYW1zMkQ6IGZhbHNlLCB2YWxpZFVucGFja1BhcmFtczNEOiBmYWxzZSB9LAorICAg
IHsgd2lkdGg6IDgsIGhlaWdodDogMTcsIGRlcHRoOiAzLCB4b2Zmc2V0OiAyLCB5b2Zmc2V0OiAx
Mywgem9mZnNldDogMSwKKyAgICAgIGFsaWdubWVudDogNCwgcm93TGVuZ3RoOiA5LCBpbWFnZUhl
aWdodDogMiwgc2tpcFBpeGVsczogMCwgc2tpcFJvd3M6IDMsIHNraXBJbWFnZXM6IDEsCisgICAg
ICB2YWxpZFVucGFja1BhcmFtczJEOiB0cnVlLCB2YWxpZFVucGFja1BhcmFtc0ZvclN1YjJEOiB0
cnVlLAorICAgICAgdmFsaWRVbnBhY2tQYXJhbXMzRDogZmFsc2UgfSwKKyAgXTsKKworICAvLyBV
cGxvYWQgdGV4dHVyZXMgZnJvbSBjbGllbnQgZGF0YQorICB2YXIgdXNlVW5wYWNrQnVmZmVyID0g
ZmFsc2U7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7
CisgICAgdmFyIHRlc3RDYXNlID0gdGVzdENhc2VzW2lpXTsKKyAgICBydW5UZXN0SXRlcmF0aW9u
MkQoZ2wsIHRlc3RDYXNlLCB1c2VVbnBhY2tCdWZmZXIpOworICAgIHJ1blRlc3RJdGVyYXRpb24z
RChnbCwgdGVzdENhc2UsIHVzZVVucGFja0J1ZmZlcik7CisgIH0KKworICAvLyBVcGxvYWQgdGV4
dHVyZXMgZnJvbSB1bnBhY2sgYnVmZmVyCisgIHVzZVVucGFja0J1ZmZlciA9IHRydWU7CisgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHRl
c3RDYXNlID0gdGVzdENhc2VzW2lpXTsKKyAgICBydW5UZXN0SXRlcmF0aW9uMkQoZ2wsIHRlc3RD
YXNlLCB1c2VVbnBhY2tCdWZmZXIpOworICAgIHJ1blRlc3RJdGVyYXRpb24zRChnbCwgdGVzdENh
c2UsIHVzZVVucGFja0J1ZmZlcik7CisgIH0KK30KKworcnVuVGVzdHMoKTsKKworZGVidWcoIiIp
OwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4ZWwtZmV0Y2gtdW5kZWZpbmVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvbWlzYy90ZXhlbC1mZXRjaC11bmRlZmluZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NTZkZWFkZTNiNDA1OTYxNmEyZTE0ZWEyNmNhOTc4OTViMTIwZTFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvdGV4ZWwtZmV0Y2gtdW5kZWZpbmVkLmh0bWwKQEAgLTAsMCArMSw4
MiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgdGV4ZWwgZmV0Y2ggdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0
cy5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIyNTYiIGhlaWdodD0i
MjU2Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idmVydGV4LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgIGlu
IHZlYzQgYVBvc2l0aW9uOworCisgIHZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IGFQ
b3NpdGlvbjsKKyAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudC1zaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyAgdW5pZm9ybSBzYW1wbGVyMkQgdVNhbXBsZXI7CisgIHVuaWZvcm0gaXZl
YzIgdVRlc3RQb3M7CisKKyAgb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOworICB2b2lkIG1haW4oKSB7
CisgICAgbXlfRnJhZ0NvbG9yID0gdGV4ZWxGZXRjaCh1U2FtcGxlciwgdVRlc3RQb3MsIDApOwor
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0ZXhlbEZldGNoIHdvcmtzIHRvIHRoZSBXZWJHTCAyLjAg
c3BlYyB3aGVuIHJldHJpZXZpbmcgYSB0ZXhlbCBvdXRzaWRlIG9mIHRoZSB0ZXh0dXJlJ3Mgc2l6
ZS4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIHRleHR1cmVTaXplID0gMjQ7
CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2MnLCB1bmRlZmluZWQsIDIpOworCitm
dW5jdGlvbiB0ZXN0RmV0Y2hBdCh4LCB5LCBleHBlY3RlZENvbG9yKSB7CisgIGRlYnVnKCIiKTsK
KyAgZGVidWcoIlRlc3QgZmV0Y2hpbmcgYSB0ZXhlbCBvZiB0aGUgdGV4dHVyZSBhdCB4ID0gIiAr
IHggKyIsIHkgPSAiICsgeSk7CisgIGdsLnVuaWZvcm0yaSh1VGVzdFBvcywgeCwgeSk7CisgIHd0
dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcyhnbCwgZXhwZWN0
ZWRDb2xvcik7Cit9CisKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2ZXJ0
ZXgtc2hhZGVyIiwgImZyYWdtZW50LXNoYWRlciJdKTsKK3ZhciBhUG9zaXRpb24gPSBnbC5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYVBvc2l0aW9uIik7Cit2YXIgdVRlc3RQb3MgPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVUZXN0UG9zIik7CisKK2RlYnVnKCdDcmVhdGlu
ZyBhIHRleHR1cmUgd2l0aCBzaXplICcgKyB0ZXh0dXJlU2l6ZSArICcqJyArIHRleHR1cmVTaXpl
KTsKK3ZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKK2ds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5O
RUFSRVNUKTsKK3d0dS5maWxsVGV4dHVyZShnbCwgdGV4LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZVNp
emUsIFswLCAyNTUsIDAsIDI1NV0pOworCit3dHUuc2V0dXBVbml0UXVhZChnbCwgYVBvc2l0aW9u
KTsKKwordGVzdEZldGNoQXQoMCwgMCwgWzAsIDI1NSwgMCwgMjU1XSk7Cit0ZXN0RmV0Y2hBdCh0
ZXh0dXJlU2l6ZSAtIDEsIHRleHR1cmVTaXplIC0gMSwgWzAsIDI1NSwgMCwgMjU1XSk7Cit0ZXN0
RmV0Y2hBdCh0ZXh0dXJlU2l6ZSwgMCwgWzAsIDAsIDAsIDBdKTsKK3Rlc3RGZXRjaEF0KDAsIHRl
eHR1cmVTaXplLCBbMCwgMCwgMCwgMF0pOwordGVzdEZldGNoQXQoLTEsIDAsIFswLCAwLCAwLCAw
XSk7Cit0ZXN0RmV0Y2hBdCgwLCAtMSwgWzAsIDAsIDAsIDBdKTsKK3Rlc3RGZXRjaEF0KC0xLCAx
LCBbMCwgMCwgMCwgMF0pOworCitmaW5pc2hUZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleHR1cmUtbnBvdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL21pc2MvdGV4dHVyZS1ucG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ2MzEzMGVlYmIyNWM2
YzhjZDc5N2QzZTc5NDRiNTlkNzJjMTRlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9t
aXNjL3RleHR1cmUtbnBvdC5odG1sCkBAIC0wLDAgKzEsMTYwIEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTDIgTm9uLVBvd2VyIG9m
IDIgdGV4dHVyZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUiIGhlaWdodD0iMyIgc3R5bGU9Indp
ZHRoOiA0MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworYXR0
cmlidXRlIHZlYzIgdGV4Q29vcmQwOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB0ZXhDb29yZCA9IHRleENv
b3JkMDsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRl
ci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVy
Q3ViZSB0ZXg7Cit2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKQoreworICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlKHRleCwgbm9ybWFsaXplKHZlYzModGV4Q29vcmQsIDEp
KSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbihk
b2N1bWVudC50aXRsZSk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKK3ZhciBwcm9ncmFtID0g
d3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK3ZhciB0ZXN0
cyA9IFsKKyAgeyBmb3JtYXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwK
KyAgICBjb2xvcjogWzE5MiwgMCwgMTI4LCA2NF0sCisgICAgZXhwZWN0ZWQ6IFsxOTIsIDAsIDEy
OCwgNjRdLAorICAgIHRvbGVyYW5jZTogMCwKKyAgfSwKKyAgeyBmb3JtYXQ6IGdsLlJHQiwKKyAg
ICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgIGNvbG9yOiBbMTkyLCAwLCAxMjhdLAorICAg
IGV4cGVjdGVkOiBbMTkyLCAwLCAxMjgsIDI1NV0sCisgICAgdG9sZXJhbmNlOiAwLAorICB9LAor
ICB7IGZvcm1hdDogZ2wuTFVNSU5BTkNFLAorICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisg
ICAgY29sb3I6IFsxOTJdLAorICAgIGV4cGVjdGVkOiBbMTkyLCAxOTIsIDE5MiwgMjU1XSwKKyAg
ICB0b2xlcmFuY2U6IDAsCisgIH0sCisgIHsgZm9ybWF0OiBnbC5BTFBIQSwKKyAgICB0eXBlOiBn
bC5VTlNJR05FRF9CWVRFLAorICAgIGNvbG9yOiBbNjRdLAorICAgIGV4cGVjdGVkOiBbMCwgMCwg
MCwgNjRdLAorICAgIHRvbGVyYW5jZTogMCwKKyAgfSwKKyAgeyBmb3JtYXQ6IGdsLkxVTUlOQU5D
RV9BTFBIQSwKKyAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgIGNvbG9yOiBbMTkyLCA2
NF0sCisgICAgZXhwZWN0ZWQ6IFsxOTIsIDE5MiwgMTkyLCA2NF0sCisgICAgdG9sZXJhbmNlOiAw
LAorICB9LAorXTsKKwordGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0KSB7CisgIGRlYnVnKCIi
KTsKKyAgZGVidWcoInRlc3QgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGVzdC5mb3JtYXQp
ICsgIi8iICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCB0ZXN0LnR5cGUpKTsKKyAgdmFyIHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKworICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBu
b3Qgb24gbGV2ZWwgMCBkb2VzIG5vdCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFCisgIHd0dS5maWxs
VGV4dHVyZShnbCwgdGV4LCA1LCAzLCB0ZXN0LmNvbG9yLCAxLCB0ZXN0LmZvcm1hdCwgdGVzdC50
eXBlKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiZ2wu
dGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSB3aXRoIGxldmVsID4gMCBzaG91bGQgc3VjY2Vl
ZCIpOworCisgIC8vIENoZWNrIHRoYXQgYW4gTlBPVCB0ZXh0dXJlIG9uIGxldmVsIDAgc3VjY2Vl
ZHMKKyAgd3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDUsIDMsIHRlc3QuY29sb3IsIDAsIHRlc3Qu
Zm9ybWF0LCB0ZXN0LnR5cGUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwKKyAgICAgICJnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJlIGF0IGxldmVsIDAgc2hv
dWxkIHN1Y2NlZWQiKTsKKworICAvLyBDaGVjayB0aGF0IGdlbmVyYXRlTWlwbWFwIHN1Y2NlZWRz
IG9uIE5QT1QKKyAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgImdsLmdlbmVyYXRlTWlwbWFwIHdp
dGggTlBPVCB0ZXh0dXJlIHNob3VsZCBzdWNjZWVkIik7CisKKyAgLy8gQ2hlY2sgdGhhdCBub3Ro
aW5nIGlzIGRyYXduIGlmIGZpbHRlcmluZyBpcyBub3QgY29ycmVjdCBmb3IgTlBPVAorICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQRUFUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuUkVQRUFUKTsKKworICB3dHUuY2xlYXJBbmRE
cmF3VW5pdFF1YWQoZ2wpOworICB3dHUuY2hlY2tDYW52YXMoCisgICAgICBnbCwgdGVzdC5leHBl
Y3RlZCwKKyAgICAgICJOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX1dSQVAgc2V0IHRvIFJFUEVB
VCBzaG91bGQgZHJhdyIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
IlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKKworICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xB
TVBfVE9fRURHRSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIpOworCisgIHd0dS5jbGVhckFu
ZERyYXdVbml0UXVhZChnbCk7CisgIHd0dS5jaGVja0NhbnZhcygKKyAgICAgIGdsLCB0ZXN0LmV4
cGVjdGVkLAorICAgICAgIk5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBub3Qg
TkVBUkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXciKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKKyAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
LkxJTkVBUik7CisKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgd3R1LmNoZWNr
Q2FudmFzKAorICAgICAgZ2wsIHRlc3QuZXhwZWN0ZWQsCisgICAgICAiTlBPVCB0ZXh0dXJlIHdp
dGggVEVYVFVSRV9NSU5fRklMVEVSIHNldCB0byBMSU5FQVIgc2hvdWxkIGRyYXcuIik7CisKKyAg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgdGVzdC5mb3JtYXQsIDAsIDAsIDUs
IDMsIDApOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAgICJj
b3B5VGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSB3aXRoIGxldmVsID4gMCBzaG91bGQgc3Vj
Y2VlZC4iKTsKKworICAvLyBDaGVjayB0aGF0IGdlbmVyYXRlTWlwbWFwIGZvciBhbiBQT1QgdGV4
dHVyZSBzdWNjZWVkcworICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgMiwgMiwgdGVzdC5jb2xv
ciwgMCwgdGVzdC5mb3JtYXQpOworICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgICAiZ2wudGV4SW1h
Z2UyRCBhbmQgZ2wuZ2VuZXJhdGVNaXBtYXAgd2l0aCBQT1QgdGV4dHVyZSBhdCBsZXZlbCAwIHNo
b3VsZCBzdWNjZWVkIik7CisKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUl9NSVBNQVBfTElORUFSKTsKKyAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7
CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LlJFUEVBVCk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLlJFUEVBVCk7CisKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAg
d3R1LmNoZWNrQ2FudmFzKAorICAgICAgZ2wsIHRlc3QuZXhwZWN0ZWQsCisgICAgICAiUE9UIHRl
eHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJTkVBUl9NSVBNQVBfTElORUFS
IHNob3VsZCBkcmF3LiIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
IlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKK30pOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcwYzNhZmRkMmI1MDBkNzRkM2Y2NjBjMDdiNjlmNzcyMGFmZDU2
ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yMTFmX2cx
MWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2It
aGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcjExZl9nMTFmX2Ix
MGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGZhYTgzNTg2YTNjMzM3NGQwNDI0
MTE3OTQ3ODUxNGQ4OGZhYmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFn
ZS90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJIQUxG
X0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWdu
ZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYTliMWIzNTRmMWRhOTk5
YTExNzE0ZmY5MTU3ZmIzYmM2MmFmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3Zn
X2ltYWdlL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFm
X3Jldi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9H
MTFGX0IxMEYiLCAiUkdCIiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcjE2Zi1yZWQt
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDQxYjdlZmMzMDczM2ExNzUyY2VmMDAzOGVjNDdkODhlY2E4NzA1NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIxNmYtcmVkLWZs
b2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwg
IlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3Zn
X2ltYWdlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2lt
YWdlL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVmNDI4NWJj
ZTgxMzQyZTI4YjA0ZGVkZWQ4ZTM1ZmM2NTZhYWUyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkhBTEZfRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQt
cjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIzMmYtcmVk
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg2ODk3NDFhMjA1Y2I1OWQzZDA3ZGQ5YzU3ODM5NjYz
NGMwOGE0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXIz
MmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSMzJGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3N2Z19pbWFnZS90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MTJiZDQ4ZThlNWVlN2E5OWQ3MWNiMmVmYjhlNTgzMjA2MGQwOGJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4IiwgIlJFRCIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTJkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3N2Z19pbWFnZS90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWVlZTc2MTRhMGQyZTIzZDNhODU5MTU2ZDE3Y2FhMmUzOTI0NDk1OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXI4dWktcmVkX2ludGVn
ZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjhVSSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnMTZmLXJnLWZsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4OGRmMzM3YjYxYzY1ZjU3NmNhMWMzYzc1NGI5NzU0MzFkMDFkNDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkci
LCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFn
ZS90ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90
ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ZTFiNmM3MWU0ZGFj
YTliM2Y2NWVjYWYzYzk0NWRmOTczMzMwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
c3ZnX2ltYWdlL3RleC0yZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJIQUxGX0ZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnMzJm
LXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZzMyZi1yZy1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1YWI4MTIwOTliZDYzNjZjMWVjY2Y3ZmMyZjVmNTcwNjZlZWUz
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZzMyZi1y
Zy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcz
MkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3N2Z19pbWFnZS90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9z
dmdfaW1hZ2UvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZm
MTA5YzFiMDdhZmFmMmI0YjlmYTRmYTViYTZhMzI2NTdiNmNmZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAiUkciLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdl
L3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9z
dmdfaW1hZ2UvdGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3YTc2ZjhmM2FkNDA4YmNlNGMzYWExNzZhNWFmYzc4M2FmNGMzMmIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHOFVJIiwgIlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2ln
bmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQt
cmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNDNhNGU2Njc3Y2MwYTVmMjYwNzBkMzI4MjBmOGZkOWJjYWM1ODYyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9p
bnRfMl8xMF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJn
YjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjE2Zi1y
Z2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Zjc4MjgxNTE0OTVhYTBlMWNkMzhhYjlhNTkzNDk1
MjAwY2UxODExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQt
cmdiMTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlMGIyMDhhZmQ4MzYxZDJkMGU2MTY2OTQ5ZTdjN2Y1Yzk5MDRhNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZf
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2
RiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
c3ZnX2ltYWdlL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2Mzc2
NjY2NTZmNzRhN2IzZDBiZDU4N2ZhZTllYTFkMTliY2UyYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjMyZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIsICJSR0IiLCAiRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdi
NTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1y
Z2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTA4YzFmM2U5OWZmNGJl
ZTc2ZmNiY2Y4OTMxZWVmOTg4NWZlOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2
Z19pbWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgt
MmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19p
bWFnZS90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZjNTA0NjFmNzU2MjYzNGFiMmIxMmYwYzhhMmI0ZGQ3ZDkzYTA5ZjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3No
b3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZjNlNzMzYzIxZTIwYzYzZjViYWRhNTg0MWFl
Zjg0OGM5NzhiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0y
ZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiNV9h
MS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODI4Njg0NWMxYzRiOGE0NmU2OWZlMzQxMDg4NDBkMDg1MGJlNjlkMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9z
aG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2I4LXJnYi11bnNp
Z25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2I4LXJnYi11bnNp
Z25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUxMThjZDhlNGQzYThjMDhjYTU3MjI4NDI1M2E4
YjRiYzM1MDcwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJk
LXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3Zn
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiOHVpLXJnYl9pbnRl
Z2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjh1
aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ0YzcwMWUyNzlh
NDRjYTQ1ZTkwMWZhZjA4ZDRiNTdiOThkZjg2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lO
VEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3N2Z19pbWFnZS90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODky
NDM0ODRhNTBkZGUwZmUzZjU4NjU5Y2Q5NDFiMTBjYTEyNzZjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJk
LXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJk
LXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmU1ZjMxZTAxNzM4Mzkw
MjQ0MDI4NjAxZTNlNmI4Y2NmYmJiMjkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2
Z19pbWFnZS90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzgg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAiSEFMRl9GTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1y
Z2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmEx
NmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNDBkZDAxMjZjYmU0MTgwOWFjY2QxZDhi
OTA3YTUwMTI2YTNlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3Rl
eC0yZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3Zn
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWhhbGZf
ZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjZlZjk1NDc3NDZhYmMxNmNkYjQ4ZDE4Mjg0YWMzNDhl
Y2I0ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdi
YTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWlt
YWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDJhZThhNWQzN2QyZTRlODJmZDIzMDE5ZWIxZWYyN2NmZDIwYmE2MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmEzMmYtcmdi
YS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
QTMyRiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjcxZjBhYjliY2MxMmJhY2FhODA2MjhjNWMyMTYzNjVjOTZhNjg5NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
QTQiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80
XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtcmdiYTQtcmdiYS11bnNpZ25l
ZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc0NTNiNWQ2ZThlZWVmOGQ2Nzc2ZTBl
ZjFjYmFhYTVmZDUxMmJjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9T
SE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2
Z19pbWFnZS90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWJjZjA3MzMxYTllNTUxMjJjNzA5YTg5N2I3NDdhN2ViMDkwNTIyNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTgiLCAiUkdC
QSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTU4NGY4ZTFhNGIwN2ZjM2ZlZDMwODI0MDUwYmJk
NmZjYzNlNmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQt
cmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lOVEVHRVIiLCAiVU5TSUdO
RURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdl
L3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFn
ZS90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTRiNzNi
ZTQxN2Q3NWNhMTlmNTFkYjA3ZDg4MDYwNGRmNmE2YjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdl
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4IiwgIlJHQiIsICJVTlNJ
R05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1h
Z2UvdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OWQ5NDlhODE3NDI1MTVmMmQwOWZiYjhlN2Q3NmY2YmNmMTUyNDczCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtMmQtc3JnYjhfYWxwaGE4LXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1zdmctaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEw
Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXIxMWZfZzExZl9i
MTBmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMTU3NDA3MmNlYWFmYjhiZjhkMjdhMjBk
NmI4Y2YzNzUwNTQ5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3Rl
eC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTFmX2cx
MWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qt
cjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDM3MzZiN2Q1
N2Q5ZmQ5NTRkMjA3OGQ3NDRkMzk4YmZlZTg2NTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3N2Z19pbWFnZS90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
LS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2lt
YWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkg
eworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwg
IlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzEx
Zl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEw
Zi1yZ2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZWRh
Zjg0ODQ2Y2E1NmQwMTU1ODk2NTZjY2NmNWIyNTk5YWIxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50
XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAo
YykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4g
dGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9S
RVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgt
M2QtcjE2Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXIxNmYt
cmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc1ZjRhMzRmNTlkNzhlMDAyYjkwZmMzZTllMzc3
ZTlmOGJkZjJmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNk
LXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFnZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTZGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmUwYzIxNjljYjkzZDFlZDlkMTZjOTQxNDJlNGU3ZGZjN2I3M2E1ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19p
bWFnZS90ZXgtM2QtcjMyZi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4
LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQwMDhiOWRkNjI5ZmQ3ZWJlNjVk
OWJkYTJjNzE4ODY2OGZiNzZiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1h
Z2UvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2
Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSMzJGIiwgIlJFRCIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yOC1yZWQtdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zM2MwYzMwZDU3ODY0MjMyMjQwNDU1NWEwOGVmMTcxZjY1NDVlZDMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcjgtcmVkLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4
IiwgIlJFRCIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qtcjh1aS1yZWRfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE2NzMzOGJhODRkZTA3NWJmNDFjZjI2M2JiZWRhMGY5
ZTdlYWNmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXI4
dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUjhVSSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJn
MTZmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZzE2Zi1yZy1m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MWRmNzk5NjhkNzZjMDE5ZGIxM2VhMDgzZGFlYmJiMzhh
Y2U4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZzE2
Zi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkcxNkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3N2Z19pbWFnZS90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
NThiOTY4ODRiZjVhZDkyZjAwNTk2YzY5NmUxMzliZjQ1N2Q2YjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJIQUxG
X0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1y
ZzMyZi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MWI1Nzc5YTE5OTc1ZjEwMTg1YzI0ZGVj
Yzk2NzJiM2YwNzU3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3Rl
eC0zZC1yZzMyZi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1h
Z2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkczMkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjA1NjRiNGQwODA0ZTBjNWU2ZDRiZmE4YzJiNWQ3MmIyYjU0ZjMzNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAi
UkciLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvc3ZnX2ltYWdlL3RleC0zZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5NGMxYTA2ZmY4NTU4YTEzZGM0NzY3NmRmODkxYWQwMDM2NGNm
YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZzh1aS1y
Z19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3Zn
LWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHOFVJIiwgIlJHX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2IxMF9h
Mi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19p
bWFnZS90ZXgtM2QtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMDUwNDFiZDJmYzk2ZjRjMjA2MDVlMGI2OWQ0YjlmOGQ0OGIwMTQwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiMTBfYTItcmdi
YS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0i
ZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOwor
fQorCitnZW5lcmF0ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5TSUdORURfSU5UXzJfMTBf
MTBfMTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1h
Z2UvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4
LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWE4YzY0YWRmZjg0NmJiMTY1
NjAwOTg5ZjI2ZjU5ODNlNWMxNWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19p
bWFnZS90ZXgtM2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2IxNmYtcmdiLWhhbGZf
ZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmOTcwNGFiOWZiZWI1Y2I4MzcyYzU2MjRlZDkxZWNmNjcx
YjY2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2Ix
NmYtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGYyMGI5NGYzNDQzYjdiMjc3OTZiY2RhNmZkYmJiMTQ2MTBiZWUyNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjMyZi1yZ2ItZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48
L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShn
bCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIsICJSR0Ii
LCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFn
ZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2lt
YWdlL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTUz
ZDdkZjFiZmM3Y2FkMGUzOGZjOTYxMWRiYjk5ODIzZjY2OGM3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwg
IlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2
Z19pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFiMzBkZmRiNDc0MjRjNDJhNTBkYjZmYjg0Y2QyOTg4YTM2ZWM3MGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2I1NjUtcmdi
LXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1p
bWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0I1NjUiLCAiUkdCIiwgIlVOU0lHTkVEX1NIT1JUXzVfNl81IiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjVfYTEt
cmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2I1
X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZGEwZTNjNzdkNzRmYmRl
ZmYyYzJhNmU5ODAxYjI5ZTAyNjZhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3Zn
X2ltYWdlL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVE
X0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90
ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2E1MmUxYTAyMTI1Yjg1NWVkNjU1YWZjMTI2ZDEyNjA3YWI2NjU1Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjVfYTEtcmdi
YS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2
Zy1pbWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNV81XzVfMSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1y
Z2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1y
Z2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxZDRjODJhYzJkMWQ0ZGNm
NDc3OTIzOGJhOTU4YjA0MmM3NzQzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTNkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qtcmdi
OHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTNkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDFiZmIyOWJmMDk0YTIyYTdkMzkwODllZTEyM2FiYWM2MjliYWQwOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFnZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4
VUkiLCAiUkdCX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NmY0ZGQxN2NjYmI1ZDNkM2FiZTU4NmMzMDhiMjZiZDE5NDg5NGU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAi
UkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdf
aW1hZ2UvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTgw
MWVmMmVjZjYwYmU0N2Q0NjMxNmE1ZDJkZGJkZjQ5N2NmZThmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiOV9lNS1yZ2ItaGFsZl9mbG9hdC5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOV9FNSIsICJSR0IiLCAi
SEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2lt
YWdlL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2Uv
dGV4LTNkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YjAzZDM4ZmYzODM4
YTczZmJjZDg5Yzc4NmIxNDQ3NTM1MzNhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
c3ZnX2ltYWdlL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvc3ZnX2ltYWdlL3RleC0zZC1yZ2JhMTZm
LXJnYmEtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiYTE2
Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTNhZjY3MTIwOTFkMGE2Y2E4ZTJl
M2I1YjJkYzI2ZmIwNzkxMTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFn
ZS90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FUIiwgdGVz
dFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmEz
MmYtcmdiYS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiYTMyZi1y
Z2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliZjgxYTQ4ZmRiZTlmY2E4MTFkZjIxODk0YWYx
M2ViOWMyZGVkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNk
LXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1h
Z2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCQTMyRiIsICJSR0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIwYjJmMzAzZDI2NjYxMzIyMzA1MmQxOTJiYTI4NDcxOTE5
NTZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE0
LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1h
Z2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3
aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVy
YXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiYTQt
cmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzNDdkODNmOTc5
MmI5YWIzN2Q2YTM5NTU0NjY4N2NlN2RlOTExNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhf
aW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIs
ICJVTlNJR05FRF9TSE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2QtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGM0Mjc2YmVjOTAyODUxMmUyZmE4YjhmZGEyNjljNDAyY2NmY2VmMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE4LXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIi
IGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24g
dGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgi
UkdCQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXJnYmE4dWktcmdiYV9p
bnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmI1YWYyNzA0Mjg0ZWYxM2Qw
ZTQ1NmFmZGE2ZjBjMmZhODQ1NzE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19p
bWFnZS90ZXgtM2QtcmdiYTh1aS1yZ2JhX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lOVEVH
RVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvc3ZnX2ltYWdlL3RleC0zZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3N2Z19pbWFnZS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YzBmOGE5ZGZjNTNkMGJhZmY4MmRmMjJjZTRhNDVhOTQ0MmUxZjY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtc3ZnLWltYWdlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4Iiwg
IlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy9zdmdfaW1hZ2UvdGV4LTNkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVk
X2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjFjMjIzMzBmMDBlNmJkMzkzOGViZGQ0ODY3MjFkZTg0
MThhYzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3N2Z19pbWFnZS90ZXgtM2Qtc3Jn
YjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0K
K0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1zdmctaW1hZ2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiU1JHQjhfQUxQSEE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXIxMWZf
ZzExZl9iMTBmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yMTFmX2cx
MWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGEzM2Y0NzlkNmQ1NmFhZmQ5OTU3
Nzk5ZTViZTdlMzY1NzhiY2UxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3Rl
eC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFt
cGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjExZl9nMTFmX2IxMGYt
cmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjExZl9nMTFmX2Ix
MGYtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTIyNDIzNGQ5MzllZTgxZjI1Y2Qw
NzgxYTk3NWZkYWQyYTI2YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3Rl
eC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXIxMWZf
ZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi11bnNpZ25lZF9pbnRfMTBmXzExZl8x
MWZfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY0OGFjYTE0MDRiY2IzYmNjYzA5M2JmMDIxY2E3MzNi
MTU2ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjExZl9n
MTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjExRl9HMTFGX0IxMEYiLCAiUkdCIiwgIlVOU0lH
TkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZjE5ZjhmYzE1OTQzZDRj
MjYzNjIyYjRhMDdmM2UzMWIyZWQ5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlk
ZW8vdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTNkMjRlYzQ3YjI4NGQ3MDE2ZjYyMzkwYzAwYzUwMjRmYzMzYmQ3OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FU
IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjMy
Zi1yZWQtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjMyZi1yZWQtZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NDgyNjYxYTVlNjQ5ODhkNTM3NmEzZmZiNzM2YWIxMjllZGE5MzFl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yMzJmLXJlZC1mbG9h
dC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBw
eS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMzJGIiwgIlJFRCIs
ICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4
LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXI4
LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg3MTUzZTQ1YjFkZjBlZDNhOThm
NzY1OTg3NzIzY2Q4YzI1ZDNlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90
ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitD
b3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
K2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
dmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUjgiLCAiUkVEIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcjh1aS1yZWRfaW50ZWdlci11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM3YWEzZTliM2MwODAzNWZiYjAwNGQ0OGQx
OWM0ODk1ZGNlZGExMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQt
cjh1aS1yZWRfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRl
c3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnMTZmLXJn
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnMTZmLXJnLWZsb2F0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWQwOGY4Y2UxNmM0YWI5NDhlOTE2OWI1M2RmNjYyZWVhNjY2NWJmMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1y
ZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnMTZmLXJn
LWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTM5MzVmYjNhMjRjYTBmODNmZTNjYjdlYjEz
MTQwNTFlOWFiNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1y
ZzE2Zi1yZy1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHMTZGIiwgIlJHIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3ZpZGVvL3RleC0yZC1yZzMyZi1yZy1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNzM3YTg0ZGEy
ODk1ZTJlZjNmMDU1Y2YyODBhNzliYjYwMTE4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTJkLXJnMzJmLXJnLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmc4LXJnLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZDRmNTc5M2E5YjQ5YmQxMTJjYWJhNDkzNzFlZWFiYmVmZGVhYWMwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzgiLCAiUkciLCAiVU5T
SUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8v
dGV4LTJkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3Zp
ZGVvL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMGJhMzA1OGUyMjhlMGJlNDI0MWJlZTcwZDY0NTUwNmEwN2Y5Mjg2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4VUkiLCAiUkdf
SU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8x
MF9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25l
ZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTM0MTdmMzA4MGU0ZjE1NTYw
ZTlkZDMyODRiYjY4MDhiYjg5MmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0yZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92
aWRlby90ZXgtMmQtcmdiMTZmLXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwZDlmNDAxMTA0
MjExOWViYTcyOGYxOWRjYmM0NGI2YjRhZDc5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTJkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjMwMmJhYzkwNjZiOGEwNWFkY2IzNjYxMDIzMjE2YTRhYTJhYWE1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZf
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCMTZGIiwg
IlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy92aWRlby90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3Rl
eC0yZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmYTkxZGVjMDEwMzZjOWE4
NTUxMjE4ZTVmYjNjYTM2ZWI1NjVkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRl
by90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12
aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUxOTlhYWQ2ZWY4ZDNkZDY0OGIzOWViY2U4OGU3ZDMyMTczYzdjNTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1NjUi
LCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNGY0NDEwMzhlYWE3ZGJhNDBiMmYzMjhjNmM3YzhlMGNkMjY2NmE3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2I1NjUtcmdiLXVu
c2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURfU0hPUlRfNV82XzUiLCB0ZXN0UHJvbG9ndWUs
ICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWdu
ZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5YmI0MzA3OTI0MzIzNzg2YTVmZGNlMThmOWU5MjI1
MjEyMTc0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjVf
YTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVv
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lk
dGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1
bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0
ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVk
X3Nob3J0XzVfNV81XzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiNV9hMS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTYwMDkyOGU3OWE3NzI2
OGEyMGYxOGM5OTc1ZGMxMDUwNmY2NThjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3Zp
ZGVvL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I1X0ExIiwgIlJHQkEiLCAiVU5TSUdO
RURfU0hPUlRfNV81XzVfMSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
dmlkZW8vdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRl
by90ZXgtMmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Njk0YzM3
YjUzZDQxN2VhYTU2ZGMxMDY4ZmUyM2NkN2QwNzVlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYjh1
aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJk
LXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M2NDEz
ZWE5NmFlNmUyZDM3MGZlMDM1NTgzYzk2OWFlNzI3NTcxMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3ZpZGVvL3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0yZC1yZ2I5X2U1LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZmE1ODAyYmNkODE2
Nzk5NmQ3OGJmODliYTZiNWE0N2M3NmE3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
dmlkZW8vdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAi
Li4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFsZl9mbG9h
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE5NGJkZjIxNWJkMzUxZDZmYjVlMTZhMzhhMTAyNzZlYzgwNTllMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiOV9lNS1yZ2ItaGFs
Zl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1
IiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy92aWRlby90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlk
ZW8vdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NzUzNDc2ZGUx
OGEzY2NjMTMwMTE5NTBkMmRmMTUxZGJhN2Q3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTJkLXJnYmExNmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFs
Zl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhMTZmLXJnYmEtaGFsZl9m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYWVjNzk5MTc0NTc5OTM5ZjZlNDU1NjFlZjBhMDdiYTBk
Y2Q2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmExNmYt
cmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQkExNkYiLCAiUkdCQSIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4v
cmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0
MDBkYmYxMjg3Y2NmZjJjYWMzYjBkMmVhNTUzY2MyYjA3NTQ5OWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMzJGIiwgIlJHQkEiLCAiRkxPQVQiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhNC1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiYTQtcmdi
YS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM5MjU1Mjg5NzA0ZDVjZjI5MWI5Zjc2
MTE2MzFjYmE0NWMwZjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgt
MmQtcmdiYTQtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNF80XzRfNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhNC1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTIyN2E0MjMyNzY1ZTg5
MTY0NjQ5NzMxMDAwMTdhYmQ4NmU4ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3Zp
ZGVvL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQiLCAiUkdCQSIsICJVTlNJR05FRF9T
SE9SVF80XzRfNF80IiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRl
by90ZXgtMmQtcmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8v
dGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOWUxMzZi
OTYzMDdmYTY0ZTMzNTJmMWU4YmI1MTgxNWZhZTk5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1y
Z2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8v
dGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZWRlNjA1ZTU0ZDVmMDFiNDA0MzNhZDk2YmQwNjU5ZTM3OGE5MTliCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4VUki
LCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8u
Li9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1zcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2NDdkY2I0ZjViNGY4YjIxMGRjNGYzMzYzYzRmMjYyNjlmYjc5NGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9i
eXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4IiwgIlJH
QiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIs
IDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy92aWRlby90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDE1ODE2NmE4YjI0Njc3N2MyYmQ3NzFmMTBlYzdjODc2NWM2NmIzZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtMmQtc3JnYjhfYWxwaGE4LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJT
UkdCOF9BTFBIQTgiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyNjdiZTQ0ZGJhOWI0MWRhMjA0NGIzODM5M2M1ODg4ZThkYTMxYjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXIxMWZfZzExZl9iMTBm
LXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12aWRlby5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVp
Z2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0
UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFG
X0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNv
dXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItaGFsZl9mbG9hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE0OGIwMzQ4ZTAyOTAwMWI2ZjU5ZTU3YzMwYjZjNTg5ZjhiMGE0NGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXIxMWZfZzExZl9iMTBm
LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2ln
bmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjEx
Zl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MTkxYWY4NDk5OWNkNDEzNjFmYTFlNmE3M2U0ODU1OWY5Y2MyZWM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWdu
ZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12aWRl
by5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFG
X1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNk
LXIxNmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXIxNmYtcmVkLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0MjRmNjdiZGRlM2ExZjBlYjk4YTM2Zjg3YmUwZmI1NWY3
ZmMyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjE2Zi1yZWQt
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJS
RUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNk
LXIxNmYtcmVkLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmVhNjhjMjhlNjdhOGM5ODM1
N2Q4NTkxZmE3ZDk2YTE3NDQ0YTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlIxNkYiLCAiUkVEIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdj
YWRiZGQ1MGE2MGYzZDJmZTljYTljNzhiZjg2Y2ZjYTFjMjlkNTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1Vz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIzMkYiLCAiUkVEIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjgtcmVkLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcjgtcmVkLXVuc2lnbmVkX2J5dGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xY2M5MWIwOGZmOWYwMjVkNDUwZjJkNTFkMzVmZjZhNmM2ZTE1ZDY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yOC1yZWQtdW5zaWdu
ZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VO
U0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
dGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJS
RUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDRiMGMzYzdiY2Q3Y2ZhN2M2NzJiYmFlOGQyZDQxMzE3Y2Y3M2Y4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjhV
SSIsICJSRURfSU5URUdFUiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy92aWRlby90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmYzODc0
ZTZmMjIyZDM4NGYwMGY3ODI4MmJlZmQ1Mzc5MzUzZjdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSRzE2RiIsICJSRyIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNiMDJkYTM2MmQ0MGZjMWQ0OWI5NWZiMjMyMjcyYzMyZWZiMjNmNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAi
SEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8v
dGV4LTNkLXJnMzJmLXJnLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnMzJm
LXJnLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkOWJkMjE0OWZkMTc0ZTY2NDg0MmFlMDM5Nzcy
ZTIyM2UxNTIyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qtcmcz
MmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcz
MkYiLCAiUkciLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3ZpZGVvL3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MmQ4MDg3NWQ0
YzVjN2U5ODUyMGZiZmFmMzA0YjIxNDkxYmIyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvdmlkZW8vdGV4LTNkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHOCIsICJSRyIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qtcmc4dWktcmdfaW50
ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnOHVpLXJn
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZWMyZTBlMWYyMzZkZDg5
Y2VhY2Q1ZjZlOWU1NjA0MDAyODk1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlk
ZW8vdGV4LTNkLXJnOHVpLXJnX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwgIlVOU0lHTkVE
X0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0z
ZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jldi5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3ZpZGVvL3RleC0zZC1yZ2IxMF9hMi1yZ2JhLXVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3Jl
di5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIxMDEwMjk4MzhkMjYyNjgxNDkxODJmMmJiZjljZThkZDQwZTFk
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjEwX2EyLXJn
YmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjEwX0EyIiwgIlJHQkEiLCAiVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgt
M2QtcmdiMTZmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2IxNmYt
cmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzlmMmZlMDYwOWRmNWFjYjgwYmI3NTg5YzgyYjQx
Y2JlNGU3ZjM5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qtcmdi
MTZmLXJnYi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12aWRlby5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0IxNkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy92aWRlby90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
dmlkZW8vdGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiY2E2
YWM4ODVhOTQ5NTE1YmZkZjA3MWZjZDMyZGRjM2Q2NDAyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjE2Zi1yZ2ItaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAg
KzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2Iz
MmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjMyZi1yZ2ItZmxv
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMmYyNmQ0ODQ0NDBiYmNmZDYzNTEyMjhhYjU2OTNmOGM1M2Y4
MGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2IzMmYtcmdi
LWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjMyRiIs
ICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3Zp
ZGVvL3RleC0zZC1yZ2I1NjUtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRl
by90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBhYTI1
ZTIxZjIxMDlkM2Y4NjJkZjRiNTRlZGE2MGYyMzg1MDMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjU2NSIsICJSR0IiLCAiVU5TSUdORURf
QllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNk
LXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90
ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZi
MzQ4NzViODA3YWYwMjdlMjQxZTIwMGVmY2FkMDAyMWZhMjhjYWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIs
ICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTZkY2U5NTA2NzY0MzJiMzdlYmU4YTk5ODJlZWI2MWIyYTczZGE5OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIi
PjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJS
R0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3ZpZGVvL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81
XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZDhiZDZiZjRhNzJhMTE0ZDcxN2VhZWQwNThlMDU3MTM4
YmIxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjVfYTEt
cmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBs
ZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitn
ZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiOC1y
Z2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2I4LXJnYi11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJmZmE0ZDcxY2VjMTYzMGU4ZDY5MzYyODUw
MmE0ZTVlMjlkY2NhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qt
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12aWRl
by5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdp
ZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citm
dW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJh
dGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2VyLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiOHVpLXJnYl9pbnRlZ2Vy
LXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjRiZTg3OTlhMmY4M2VjMTllYTNjYWU5
M2E1NDQ5OWE3YzM0YjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0z
ZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
M2Qtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSR0I4VUkiLCAiUkdCX0lOVEVHRVIiLCAiVU5TSUdORURfQllU
RSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJn
YjlfZTUtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYjlfZTUtcmdi
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQzMzlkOTFmOTJlNmRiMTE0M2JiOTljZTBlZjExMjU0
ZDE4YzBhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiOV9l
NS1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdC
OV9FNSIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3ZpZGVvL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
dmlkZW8vdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDgw
MTVhZDhmMTRmOTgyYjg4NDhkYjZiODQwMmJjMzdjYTRiMjgzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxP
QVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1y
Z2JhMTZmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiYTE2Zi1y
Z2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIyOTdkNDY2Yzg1MzQzYmFhYjVkZjcxNDY0ZGUx
MmM1YWM1NGVjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qtcmdi
YTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQkExNkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmMzYjUyMGQzNmU1ZThmYWJlZjIzZmYzNGI5ZDVmYmFlYWFhNjQ2NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTE2RiIsICJSR0JBIiwg
IkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVv
L3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qt
cmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhhZTU2YzYwMzEzZjNkMGM2MDY3
ZjkzNjE1OGQ0MTM5YjhkMGE3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90
ZXgtM2QtcmdiYTMyZi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYjgzYjU5ODRiYjhlOTRiZDlkNjUzNDVlZWEyZjQyNGY4MDRhN2RmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdo
dD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFBy
b2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQTQi
LCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3Vy
Y2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiYTQtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80
XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZTgyOTgzZjc0YThjYzFhMjEyODdiMGNhYTFkNzlkMDhi
NzlkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmE0LXJn
YmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC12
aWRlby5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0JBNCIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1yZ2JhOC1yZ2Jh
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiYTgtcmdiYS11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk5YzA2MDFmNWFmNTVkNDVlYWU5MjI0ZDRh
M2RiOGEyZjEwNWQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2Qt
cmdiYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZp
ZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2Vy
LXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy92aWRlby90ZXgtM2QtcmdiYTh1aS1yZ2Jh
X2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiOGZiMTg5NGMxMDhhODQx
NjlhY2NmYTJhYWE5YjcyYWM4Y2UwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlk
ZW8vdGV4LTNkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCQThVSSIsICJSR0JBX0lOVEVHRVIiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlk
ZW8vdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8v
dGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI5NzczMTU0
OTg1YzZkMjE4YTg4ZmNjZDYzNGIxYWI5Y2ExZmI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy92aWRlby90ZXgtM2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtdmlkZW8uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiU1JHQjgiLCAiUkdCIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3ZpZGVvL3RleC0zZC1zcmdi
OF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvdmlkZW8vdGV4LTNk
LXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQzM2Y2
N2ZlODE2N2JhZjRlZDc1ODQ4ZTQ0MzgzYjQ1ZDA5MzFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3ZpZGVvL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JB
IiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3dlYmdsX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMmFkNDkzMDk3MDE2ZGM4MDM4ZDcyOGU1YzIwMTliZmM3ODY0OGY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2Ix
MGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRo
PSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5j
dGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVU
ZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdi
LWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXIxMWZfZzEx
Zl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcyNjYzZDIyODc0YjE5YThh
OGMzODlhYzQ4ZGI1YTZhYTYwYTVjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJn
bF9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgor
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJS
R0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
d2ViZ2xfY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItdW5zaWduZWRfaW50XzEwZl8x
MWZfMTFmX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFm
X2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YjQ1MWNkYTBlYjVkNmNkOTZiYTY2MTlmZjAyMjlmNjE5MmQyNGQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2ln
bmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2Vi
Z2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJHQiIsICJVTlNJR05FRF9JTlRfMTBG
XzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJn
bF9jYW52YXMvdGV4LTJkLXIxNmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZGEwYTQwZjU5YWY1
YTVlNTJhODEyNWMwZDBlYTM2ODQwMDEyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
d2ViZ2xfY2FudmFzL3RleC0yZC1yMTZmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJv
bG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjE2Zi1y
ZWQtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjE2Zi1y
ZWQtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZWNmZjVhNDY4ODBhZGMyOTk0N2I4ZmI4
YWQwMGUyNzJkZWQ1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0yZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJIQUxGX0ZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXIzMmYtcmVk
LWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yMzJmLXJlZC1mbG9h
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU4NDEyY2M2ZTM3MWUzMzk2ZmYyNTg0M2ZmNDg4MDU2ODMwMzM5
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yMzJm
LXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcjgtcmVkLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90
ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTE0NjFkOTYxMTQ5NDI2NTYxNDUyNTQzMzJlZDQ0OTNlZWY5YWQ1ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXI4LXJlZC11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
OCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291
cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXI4dWktcmVkX2ludGVnZXIt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzkxZWYzOWY4Njg5ZGUwZmUxZjFlZjNl
YmU4YmNlODc4OGY0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0yZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJl
dHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUkiLCAiUkVEX0lOVEVHRVIiLCAiVU5T
SUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xf
Y2FudmFzL3RleC0yZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZh
cy90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTlhOGZkNzgzMDBiOGFl
YTQ3YjI5YzE3MmM5YmY2NjYzM2NiYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dl
YmdsX2NhbnZhcy90ZXgtMmQtcmcxNmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xv
Z3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnMTZmLXJn
LWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnMTZmLXJn
LWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDhjNjQ2MTc2Y2JlMDY1YzJjZWVlMWNjNzIy
YTg4YmUwMDRjYmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90
ZXgtMmQtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13
ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZzMyZi1yZy1m
bG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmczMmYtcmctZmxvYXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NTU2MjE4N2RmYTVhZDdlN2M4OTgwZjdlNmZmZjc4NWQwZDhhNWE5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmczMmYt
cmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2Vz
LyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnOC1yZy11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZjMDlmOTRmYjVjZDgzZGEwY2Y4NTA1MzJjMDEyNWFlN2RiZmFhZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZzgtcmctdW5zaWduZWRf
Ynl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhl
aWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVz
dFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkc4
IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZzh1aS1yZ19pbnRlZ2VyLXVu
c2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmQ2NjM4ZjAxMWIzYWU0NDExZjcwNjgxNjQw
OTBhODgwOWQ5ZDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90
ZXgtMmQtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIsICJSR19JTlRFR0VSIiwgIlVOU0lH
TkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2Nh
bnZhcy90ZXgtMmQtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRf
aW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTllMWYwNjE4ZWUwYWUwZTJiZTcy
NGY5ZGEwZTU4YjZiMWIyMTZmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTJkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxMF9BMiIs
ICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmRhZDc0NzczM2Y1ZGRhYzBlMGFlODU4YWNmMDQwOTZmODY0NjI2ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjE2Zi1y
Z2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJj
ZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2IxNmYtcmdiLWhhbGZfZmxvYXQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MzZjYTczOTQ0ZTdiN2JjZDVjZGY0MjE0ODY2NmNkZmIzOWU4ZmViCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiMTZmLXJnYi1o
YWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiMzJmLXJnYi1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjYjdhMWY2YmRhZTIwNjFlOTAwZjRmYTM0ZjMxYmMwOTUwNDMyZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2IzMmYtcmdiLWZsb2F0
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IzMkYi
LCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIp
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93
ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2Q0ZDdmMmI4N2YyNDY0ZGEzMjE2MjNhZmMyNjQwZGY1MjEzZjdiNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5z
aWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAx
OSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJ
Q0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0i
MzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rp
b24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVz
dCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjU2NS1yZ2ItdW5zaWduZWRf
c2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjU2NS1y
Z2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmIwOTg2YTc2NjVmYWQ3
YzA4OWFiYjVkZGUzMTliZDQ5YmZlMmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dl
YmdsX2NhbnZhcy90ZXgtMmQtcmdiNTY1LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCist
LT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1h
Z2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwv
Y2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGds
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIs
ICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YjVkMDNiZmM3YmVhOTNjYzZjNDFlMjVlMTUzZTdmODVhYjYy
NjFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdi
NV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2Vi
Z2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFBy
b2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYjVf
YTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQzMDYwODVhMjY3Mzc0N2M5YzY4NWUxMDhhZTE3Y2JlMjc2MzIwNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I1X2ExLXJnYmEtdW5z
aWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJnbC1j
YW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxl
IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dl
bmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLCB0
ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQt
cmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
MmQtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOTFlMzM1MmQ1ZGYw
YmViODA4MTNhN2JiYjRjNTQwMDQ4NWQ1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
d2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I4IiwgIlJHQiIsICJVTlNJR05F
RF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52
YXMvdGV4LTJkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxNTMwMzMzNTI2YmUxOTA1YTMzNzEyOTUzM2VhODFkZjM3Y2RjZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I4dWkt
cmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13
ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
MmQtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJk
LXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliMWVhYmNkODUwMDA5MzljMDYy
ZmQzN2E1MjAzNjgyNWI3MjY3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTJkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJHQiIsICJGTE9BVCIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I5X2U1
LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2I5
X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5ZTY3NDk2Y2JhN2Y0NDFjNjRi
OTllMDE3YzRlNzg0M2M0YjM5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTJkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBA
Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVy
biB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUiLCAiUkdCIiwgIkhBTEZfRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
MmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0y
ZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDZhZGM1YmMwOWExMjIwM2M4
MGFlMjgwMDY3MTkyNDE5NjFhNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtMmQtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiRkxPQVQiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdi
YTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJk
LXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY4OGY2OWI1M2YxZmE1
MmRjNzllYmU3NmYxYThhYWFkZWIzMTJiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93
ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCAr
MSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwgIlJHQkEiLCAiSEFM
Rl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52
YXMvdGV4LTJkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZDNiMmFlNjQ2
YjU4YjZkYjhiZjNkNzk5N2E5YzY4YjNkNWNjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkEzMkYiLCAiUkdCQSIsICJGTE9B
VCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52
YXMvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3Njhm
OGJlOGUzZWRlYTk2MjFkMGMyZjMwZTY2Mjc1MTM3MTRhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJH
QkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8i
LCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmE0LXJnYmEtdW5zaWduZWRf
c2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZWM2MDZkYmNiY2VkMWQ3NjYwYTlhNGUw
MjQ5NWFkYmI1ZTIxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0yZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAg
IHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdO
RURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAy
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMv
d2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmE4LXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM3NzQxMGFjZjRmNGZiOWM3ZDA1NjE3YjM2ZTllZDBlYzk1ZDJiMzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhOC1yZ2JhLXVu
c2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIw
MTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBM
SUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9
IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0
aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRl
c3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4u
Ly4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhOHVpLXJnYmFfaW50ZWdl
ci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2Jh
OHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWExYjY5Zjhj
YThkZDUyYmE3ZjBkMDZlY2Y0MDBlNjgzZDJiZTA2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmE4dWktcmdiYV9pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4
VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8u
Li8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtc3JnYjgtcmdiLXVuc2lnbmVk
X2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXNyZ2I4LXJnYi11bnNp
Z25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmMjg5MmI2MjQ5ZDgzN2E2YjRiNWFkMzA3ZTYw
NzI2ZjY0ZmJiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4
LTJkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAiVU5TSUdORURfQllURSIsIHRlc3RQ
cm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1zcmdi
OF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0yZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTE3ZGFlZGNiZWEwNDkxYzRiMzE5NGQ0MWNlYzg1MTVlNjNjMjhlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXNyZ2I4X2FscGhhOC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMy
IiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3Qo
IlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIu
Li8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcjExZl9nMTFmX2IxMGYt
cmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yMTFmX2cxMWZf
YjEwZi1yZ2ItZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmZjZjRlMzIwN2E0NDc4NzY1Mjc5NTNh
NDdhNzVlZjY2ZTY3NDcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZh
cy90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0z
ZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52
YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiRkxPQVQi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
M2QtcjExZl9nMTFmX2IxMGYtcmdiLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNThlMjU3ZDRmMTlhYjJiYmYyNzMzYTE2YTc5ZThiNzExMDE2Mjc4ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXIxMWZfZzExZl9iMTBmLXJnYi1o
YWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIz
MiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlv
biB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0
KCJSMTFGX0cxMUZfQjEwRiIsICJSR0IiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yMTFmX2cxMWZfYjEwZi1y
Z2ItdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3Jldi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2Nh
bnZhcy90ZXgtM2QtcjExZl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9y
ZXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMTI0NjczMTI2ZTZkMGJjMWQ1ODk2ZTg0NTVhYjA2M2EwZTFl
NWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcjEx
Zl9nMTFmX2IxMGYtcmdiLXVuc2lnbmVkX2ludF8xMGZfMTFmXzExZl9yZXYuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlIxMUZfRzExRl9CMTBGIiwgIlJH
QiIsICJVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4v
Li4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXIxNmYtcmVkLWZsb2F0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yMTZmLXJlZC1mbG9hdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE2YjZkMjE2ZmFlZWE1ZmNlZDU3NThjMzY2YTMzMDM4ZTlmYjMyZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yMTZmLXJlZC1mbG9hdC5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90
ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0i
MzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xv
Z3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjE2RiIsICJS
RUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtM2QtcjE2Zi1yZWQtaGFsZl9mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwOGQ1
OTM1ZmNlY2UyMjhmMTljNWUwN2ZjMzc1YmFlNzMzZDJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yMTZmLXJlZC1oYWxmX2Zsb2F0Lmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSMTZGIiwgIlJFRCIsICJI
QUxGX0ZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXIzMmYtcmVkLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NjBmOGJjZThlY2E1NTFh
ZTA3MDY4NDY3MjNmZGIxZGU5ZmQ4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0zZC1yMzJmLXJlZC1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUjMyRiIsICJSRUQiLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcjgtcmVkLXVu
c2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXI4LXJlZC11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM3ZDFjNGJmMGIzYzU5YzZiM2NkMDE4YjQ1
NTZmMWE0ZmU0YmI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMv
dGV4LTNkLXI4LXJlZC11bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZ2VuZXJhdGVUZXN0KCJSOCIsICJSRUQiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9s
b2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yOHVpLXJl
ZF9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4
LTNkLXI4dWktcmVkX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ODAx
YmQzZjVlMDYyYTdhYmFmMzg5NTFkZGFjOGFkYTljMDE5MDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yOHVpLXJlZF9pbnRlZ2VyLXVuc2lnbmVkX2J5
dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
cHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWln
aHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQ
cm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlI4VUki
LCAiUkVEX0lOVEVHRVIiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4u
L3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZzE2Zi1yZy1mbG9hdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OWNmMmU5MTQxYWRlNzkxOTMzODQwNjY2YWI1MjA0ZDFmY2Y3OWI5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctZmxvYXQuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4
X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1
ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHMTZGIiwgIlJH
IiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXJnMTZmLXJnLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGQwNGU2
YjdmNGJjOGQ2NDdlNjYwMjIzZmNmNDRhNjMxMTFkYjE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmcxNmYtcmctaGFsZl9mbG9hdC5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkcxNkYiLCAiUkciLCAiSEFM
Rl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0zZC1yZzMyZi1yZy1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90
ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjNhMGVmMTliMmEyMDIzYTBj
NDc2YTAyYzI2ODk1ZWJkOTc0YjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtM2QtcmczMmYtcmctZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHMzJGIiwgIlJHIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3Vl
LCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnOC1yZy11bnNp
Z25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZzgtcmctdW5z
aWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlOTc2ODlmMThjZmQzZmNiN2I0NDJjYjBlMDNj
NDY5ZTEzZDU4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0zZC1yZzgtcmctdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC13
ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJl
eGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2dlbmVyYXRlVGVzdCgiUkc4IiwgIlJHIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2Qtcmc4dWktcmdf
aW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0z
ZC1yZzh1aS1yZ19pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmVjOTY4
MjM5NGQwMWI2NGNjMzZjY2JiM2MyYTk4NjM3ZTZmMmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Rl
eHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2Qtcmc4dWktcmdfaW50ZWdlci11bnNpZ25lZF9ieXRl
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5
L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0
PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSRzhVSSIs
ICJSR19JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9y
ZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiMTBfYTItcmdiYS11bnNpZ25lZF9p
bnRfMl8xMF8xMF8xMF9yZXYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJn
YjEwX2EyLXJnYmEtdW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjQ1MGExNzRkNjI5Y2MzZTExM2QzNDkzMDdmZThmN2E5MjlmNzVkMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjEwX2EyLXJnYmEtdW5zaWduZWRf
aW50XzJfMTBfMTBfMTBfcmV2Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNh
bnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2Vu
ZXJhdGVUZXN0KCJSR0IxMF9BMiIsICJSR0JBIiwgIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
ViIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0zZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0z
ZC1yZ2IxNmYtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjYjIyMmJhMjgwYzllYWU0NWMz
ODQ1OTE1NTVhOGJmNjE1OTljYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXJnYjE2Zi1yZ2ItZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjE2RiIsICJSR0IiLCAiRkxPQVQiLCB0ZXN0UHJvbG9n
dWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiMTZmLXJn
Yi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2IxNmYt
cmdiLWhhbGZfZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGQ5MWFkYzcwYjUxODYzZDNiMTkyM2Ri
ZGFjMDQ0MjkzOTZhMGRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZh
cy90ZXgtM2QtcmdiMTZmLXJnYi1oYWxmX2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMg
aWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisi
dXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0IxNkYiLCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0
UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2Qtcmdi
MzJmLXJnYi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiMzJm
LXJnYi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YjVjOTczZTYxYTIwY2U4NGMwNWY1MjBhNGE2
MTQxZTIzNjA4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0zZC1yZ2IzMmYtcmdiLWZsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmds
LWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Z2VuZXJhdGVUZXN0KCJSR0IzMkYiLCAiUkdCIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlLCAiLi4v
Li4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWdu
ZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiNTY1LXJnYi11
bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5M2U1YTVmZDljNmFhNjczMDU0ODVhZWFh
MjAzZWM1YjM1NGNiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMv
dGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
LS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFz
IGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwg
dGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNk
LXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTNkLXJnYjU2NS1yZ2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YWEzNzcwZmVlMmEyYzhmNzQ5ZDM3YTMzNmZmNTg2ZDc5YWE5MjllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiNTY1LXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC13ZWJnbC1jYW52YXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVu
Y3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRl
VGVzdCgiUkdCNTY1IiwgIlJHQiIsICJVTlNJR05FRF9TSE9SVF81XzZfNSIsIHRlc3RQcm9sb2d1
ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2I1X2ExLXJn
YmEtdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2Qtcmdi
NV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWEwOTk0N2YyNWU4Y2Y3
YWMzNGM3YjJlYTU3OTM1NzVlY2NmMDkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dl
YmdsX2NhbnZhcy90ZXgtM2QtcmdiNV9hMS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZh
cz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjVfQTEiLCAiUkdCQSIsICJV
TlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVzb3VyY2VzLyIsIDIpKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJn
bF9jYW52YXMvdGV4LTNkLXJnYjVfYTEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hv
cnRfNV81XzVfMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MjljMzY2OThjNDE5OGM5NTE1MWJjODQ4NDgy
MjAwOWViYWVmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0zZC1yZ2I1X2ExLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2VfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCNV9BMSIsICJSR0JBIiwgIlVOU0lH
TkVEX1NIT1JUXzVfNV81XzEiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwg
MikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVz
L3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiOC1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEzOGMyMzdkMzNhMGE3ZmFmOTAxNmRiYjFhNTNlZTYxNWU0OWM4ODUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2I4LXJnYi11bnNpZ25l
ZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0I4IiwgIlJHQiIsICJVTlNJR05FRF9CWVRFIiwgdGVzdFByb2xvZ3VlLCAiLi4vLi4vLi4vcmVz
b3VyY2VzLyIsIDIpKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjh1aS1yZ2JfaW50ZWdlci11bnNpZ25l
ZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2I4dWktcmdiX2lu
dGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNTYzNjY1YWQxMzFlYjBkNzUy
MjE0MmRjZjZiYzU2NTQwYzNmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xf
Y2FudmFzL3RleC0zZC1yZ2I4dWktcmdiX2ludGVnZXItdW5zaWduZWRfYnl0ZS5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4K
KworPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBweS90ZXhfaW1hZ2Vf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC13ZWJnbC1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2Fu
dmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2dlbmVyYXRlVGVzdCgiUkdCOFVJIiwgIlJHQl9JTlRF
R0VSIiwgIlVOU0lHTkVEX0JZVEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiOV9lNS1yZ2ItZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQ0ZDAyMDBhYWM5NWQ2MDQ1YmMxYWI4MzJjZjcwN2MzZGY2OGE1ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjlfZTUtcmdiLWZsb2F0Lmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
Ky0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9p
bWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUo
Z2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0I5X0U1IiwgIlJH
QiIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xf
Y2FudmFzL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0zZC1yZ2I5X2U1LXJnYi1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTlhZTJmOTA0ZDQzNGMxMmRmMGIyYzQ1NTZhYzBhM2JiMWEyZGQ5MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYjlfZTUtcmdiLWhhbGZfZmxvYXQu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkv
dGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9
IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9s
b2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQjlfRTUi
LCAiUkdCIiwgIkhBTEZfRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMv
IiwgMikoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1
cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVy
ZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhMTZmLXJnYmEtZmxvYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZWUwMTZmZjllOWRhYTgxMDYyMTlhMjFmOTY3NWE0NzU2NzBhYjVmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWZsb2F0Lmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3Rl
eF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIz
MiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9n
dWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJSR0JBMTZGIiwg
IlJHQkEiLCAiRkxPQVQiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMiko
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dl
YmdsX2NhbnZhcy90ZXgtM2QtcmdiYTE2Zi1yZ2JhLWhhbGZfZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxmX2Zsb2F0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGNiZTgzNTEwMmIxNjFmYjY3OTg1MDRmNWYyOGYyYWNjNGQwNDQ2YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmExNmYtcmdiYS1oYWxm
X2Zsb2F0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKy0tPgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHB5L3RleF9pbWFnZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIg
aGVpZ2h0PSIzMiI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0
ZXN0UHJvbG9ndWUoZ2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJS
R0JBMTZGIiwgIlJHQkEiLCAiSEFMRl9GTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jl
c291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhMzJmLXJnYmEtZmxvYXQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmEzMmYtcmdiYS1mbG9hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQyNmZiZjVlYjEwODg2Mjk0ZDZjZjIxNWI2MDQyYmYxMzE4MGMwZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhMzJmLXJnYmEt
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkEzMkYiLCAiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNl
cy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmE0LXJnYmEtdW5zaWduZWRfYnl0ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcwMGU0NDgyZWNjNzljODI5ODhlMWUyYzdiMGUyMjYxNzY5OTRlOTAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhNC1y
Z2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2Fu
dmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5l
cmF0ZVRlc3QoIlJHQkE0IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwg
Ii4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhNC1yZ2JhLXVu
c2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNk
LXJnYmE0LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzM2Q5
MzZjOTcyYjAyMTAyN2U4ODYzYzNjYjM2M2ZhYTE5NDhkMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhNC1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRf
NF80XzQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNF
LnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rl
c3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBo
ZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRl
c3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJH
QkE0IiwgIlJHQkEiLCAiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsIHRlc3RQcm9sb2d1ZSwgIi4u
Ly4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2ln
bmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmE4LXJnYmEt
dW5zaWduZWRfYnl0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZGEyZGYxM2RjOTRmMjhhYzI4OTgyZDcx
ODRlM2Y3OTVkMzYyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFz
L3RleC0zZC1yZ2JhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8
IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNk
LXdpdGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZh
cyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0
cnVlOworfQorCitnZW5lcmF0ZVRlc3QoIlJHQkE4IiwgIlJHQkEiLCAiVU5TSUdORURfQllURSIs
IHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0z
ZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0zZC1yZ2JhOHVpLXJnYmFfaW50ZWdlci11bnNpZ25lZF9ieXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDYxZDEyZDEyZjAwMTRmNDEwNTU5OGJlNjU2YjA5OGY1YWM4ZjI4MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXJnYmE4dWktcmdi
YV9pbnRlZ2VyLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtd2Vi
Z2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3Ry
aWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQor
CitnZW5lcmF0ZVRlc3QoIlJHQkE4VUkiLCAiUkdCQV9JTlRFR0VSIiwgIlVOU0lHTkVEX0JZVEUi
LCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
M2Qtc3JnYjgtcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMv
dGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE0YjVlZWFm
ODUwMGRkNjZiNTAxZDVmNzc4MmIzNTA2MzQ4YjY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXNyZ2I4LXJnYi11bnNpZ25lZF9ieXRlLmh0bWwKQEAg
LTAsMCArMSwzOCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0t
PgorCis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHB5L3RleF9pbWFn
ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmdsLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9j
YW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJvbG9ndWUoZ2wp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZ2VuZXJhdGVUZXN0KCJTUkdCOCIsICJSR0IiLCAi
VU5TSUdORURfQllURSIsIHRlc3RQcm9sb2d1ZSwgIi4uLy4uLy4uL3Jlc291cmNlcy8iLCAyKSgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvd2Vi
Z2xfY2FudmFzL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0zZC1zcmdiOF9hbHBoYTgtcmdiYS11bnNpZ25lZF9i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBiNmY3Y2M1YzdjZmY3NTQ1YWUyYmY2MThlZmE0OWY2MTc5
NjIyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTNkLXNy
Z2I4X2FscGhhOC1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IS0t
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHkvdGV4X2ltYWdlX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdp
dGgtd2ViZ2wtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitnZW5lcmF0ZVRlc3QoIlNSR0I4X0FMUEhBOCIsICJSR0JBIiwgIlVOU0lHTkVEX0JZ
VEUiLCB0ZXN0UHJvbG9ndWUsICIuLi8uLi8uLi9yZXNvdXJjZXMvIiwgMikoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay9kZWZh
dWx0X3RyYW5zZm9ybV9mZWVkYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay9kZWZhdWx0
X3RyYW5zZm9ybV9mZWVkYmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNWU3MjgxMWE3Y2Q3YWI0MGIz
ZTQ4NTBmOWNiODQ0NjNiNGZmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRi
YWNrL2RlZmF1bHRfdHJhbnNmb3JtX2ZlZWRiYWNrLmh0bWwKQEAgLTAsMCArMSwxMTcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgQ29uZm9ybWFuY2UgVGVzdCAtIERlZmF1bHQg
VHJhbnNmb3JtIEZlZWRiYWNrPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsg
aGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVz
CitpbiBmbG9hdCBpbl92YWx1ZTsKK291dCBmbG9hdCBvdXRfdmFsdWU7CisKK3ZvaWQgbWFpbigp
IHsKKyAgIG91dF92YWx1ZSA9IGluX3ZhbHVlICogMi47Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBkdW1teTsKK3ZvaWQgbWFpbigpIHsK
KyAgZHVtbXkgPSB2ZWM0KDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB1c2luZyB0aGUgZGVmYXVsdCB0cmFu
c2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKworaWYg
KCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsK
K30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAg
IHJ1bkRlZmF1bHRUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKTsKKyAgICBmaW5pc2hUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIHJ1bkRlZmF1bHRUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKSB7CisgIGNvbnN0
IHByb2cgPSB3dHUuc2V0dXBUcmFuc2Zvcm1GZWVkYmFja1Byb2dyYW0oZ2wsIFsidnNoYWRlciIs
ICJmc2hhZGVyIl0sCisgICAgICBbIm91dF92YWx1ZSJdLCBnbC5TRVBBUkFURV9BVFRSSUJTLAor
ICAgICAgWyJpbl92YWx1ZSJdKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJsaW5raW5nIHRyYW5zZm9ybSBmZWVkYmFjayBzaGFkZXIgc2hvdWxkIG5vdCBzZXQgYW4g
ZXJyb3IiKTsKKworICBjb25zdCBpbkxvYyA9IDA7CisgIGNvbnN0IG91dExvYyA9IDA7CisKKyAg
Y29uc3Qgc3JjQnVmZmVyMSA9IGNyZWF0ZUJ1ZmZlcihnbCwgbmV3IEZsb2F0MzJBcnJheShbMSwg
MiwgM10pKTsKKyAgY29uc3Qgc3JjVkFPMSA9IGNyZWF0ZVZBTyhnbCwgc3JjQnVmZmVyMSwgaW5M
b2MpOworCisgIGNvbnN0IGRzdEJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcihnbCwgRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5UICogMyk7CisKKyAgY29uc3QgdGYgPSBudWxsOyAvLyB1c2UgdGhl
IGRlZmF1bHQgdHJhbnNmb3JtIGZlZWRiYWNrIGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7
CisgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmKTsK
KyAgZ2wudXNlUHJvZ3JhbShwcm9nKTsKKyAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgb3V0TG9jLCBkc3RCdWZmZXIpOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMgYmluZGluZyBh
IGJ1ZmZlciB0byB0aGUgZGVmYXVsdCB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKworICBydW5GZWVk
YmFjayhnbCwgcHJvZywgc3JjVkFPMSwgdGYpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMgaGF2aW5nIGRyYXduIHdpdGgg
dGhlIGRlZmF1bHQgdHJhbnNmb3JtIGZlZWRiYWNrIik7CisKKyAgY29uc3QgZXhwZWN0ZWQgPSBb
MiwgNCwgNl07CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwg
ZHN0QnVmZmVyKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIGV4cGVjdGVkKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0aGVyZSBzaG91bGQgYmUgbm8gZXJyb3JzIGFmdGVyIHJlYWRiYWNrIik7Cit9CisK
K2Z1bmN0aW9uIHJ1bkZlZWRiYWNrKGdsLCBwcm9nLCBzcmNWQU8sIHRmLCBkc3RCdWZmZXJJbmZv
KSB7CisgIGdsLmVuYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworCisgIGdsLnVzZVByb2dy
YW0ocHJvZyk7CisgIGdsLmJpbmRWZXJ0ZXhBcnJheShzcmNWQU8pOworCisgIGdsLmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmKTsKKyAgZ2wuYmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhnbC5UUklBTkdMRVMpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMgc2V0dGluZyB1cCB0byBkcmF3
IHdpdGggdGhlIGRlZmF1bHQgdHJhbnNmb3JtIGZlZWRiYWNrIik7CisgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCAzKTsKKyAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICBn
bC5kaXNhYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUJ1
ZmZlcihnbCwgZGF0YU9yU2l6ZSkgeworICBjb25zdCBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsK
KyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7CisgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBkYXRhT3JTaXplLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsgLy8gQ2xlYXIgdGhpcyBvciB3ZSdsbCBoYXZl
IHRmby9ub24tdGZvIHNpbXVsdGFuZW91cyB1c2FnZS4KKyAgcmV0dXJuIGJ1ZjsKK30KKworZnVu
Y3Rpb24gY3JlYXRlVkFPKGdsLCBidWYsIGluTG9jKSB7CisgIGNvbnN0IHZhbyA9IGdsLmNyZWF0
ZVZlcnRleEFycmF5KCk7CisgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8pOworICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
aW5Mb2MpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluTG9jLCAxLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICBnbC5iaW5kVmVydGV4QXJyYXkobnVsbCk7CisgIHJldHVybiB2YW87Cit9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKworPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKy0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay9ub24t
ZXhpc3RlbnQtdmFyeWluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay9ub24tZXhpc3RlbnQt
dmFyeWluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwODAwYzJkYzU4MzQzMDQ0ODllNzlmOTE3YWYzMThl
OWM1MTdiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL25vbi1leGlz
dGVudC12YXJ5aW5nLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAy
MDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRiYWNr
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzMg
cG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlv
biwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Citv
dXQgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgY29sb3IgPSB2ZWM0KDApOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBzcGVjaWZ5aW5nIG5vbi1leGlzdGVudCB2YXJ5aW5ncyBmb3IgdHJhbnNmb3JtIGZlZWRiYWNr
IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBmYWlsIHRvIGxpbmsuIFRoaXMgdGVzdCBjb3ZlcnMgYW4g
QU5HTEUgYnVnLiIpOworCisvLyBTcGVjOiBHTEVTIDMuMC41IHNlY3Rpb24gMi4xMi44OgorLy8g
IkEgcHJvZ3JhbSB3aWxsIGZhaWwgdG8gbGluayBpZjoiCisvLyAiYW55IHZhcmlhYmxlIG5hbWUg
c3BlY2lmaWVkIGluIHRoZSB2YXJ5aW5ncyBhcnJheSBpcyBub3QgZGVjbGFyZWQgYXMgYW4gb3V0
cHV0IGluIHRoZSB2ZXJ0ZXggc2hhZGVyOyIKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCAyKTsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgcnVuVGVzdCgiYm9ndXMiKTsKKyAgICBy
dW5UZXN0KCJnbF9Cb2d1cyIpOworfQorCitmdW5jdGlvbiBydW5UZXN0KG5vbkV4aXN0ZW50VmFy
eWluZ05hbWUpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRyYW5zZm9ybUZlZWRiYWNr
UHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwKKyAgICAgICAgW25vbkV4aXN0ZW50
VmFyeWluZ05hbWVdLCBnbC5JTlRFUkxFQVZFRF9BVFRSSUJTLAorICAgICAgICBbInBvc2l0aW9u
Il0pOworICAgIHZhciBtc2cgPSAiUHJvZ3JhbSBzaG91bGQgZmFpbCB0byBsaW5rIHdoZW4gYSBu
b25leGlzdGVudCB2YXJ5aW5nICciICsgbm9uRXhpc3RlbnRWYXJ5aW5nTmFtZSArICInIGlzIHNw
ZWNpZmllZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLiI7CisgICAgaWYgKHByb2dyYW0pIHsKKyAg
ICAgICAgdGVzdEZhaWxlZChtc2cpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQo
bXNnKTsKKyAgICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svc2FtZS1idWZm
ZXItdHdvLWJpbmRpbmctcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3NhbWUtYnVm
ZmVyLXR3by1iaW5kaW5nLXBvaW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZTdhNWQ0MDI2NTc0ZWUy
ODIzODUzZDAyODhjOGJlMDEwY2YwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2Zl
ZWRiYWNrL3NhbWUtYnVmZmVyLXR3by1iaW5kaW5nLXBvaW50cy5odG1sCkBAIC0wLDAgKzEsMTc2
IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgQ29uZm9ybWFuY2UgVGVzdHMgLSBvbmUgYnVmZmVy
IGJvdW5kIHRvIHR3byBiaW5kaW5nIHBvaW50czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVz
CisKK2luIHZlYzQgaW5fZGF0YTsKK291dCB2ZWM0IG91dF9hZGQ7CitvdXQgdmVjNCBvdXRfbXVs
Owordm9pZCBtYWluKHZvaWQpIHsKKyAgICBvdXRfYWRkID0gaW5fZGF0YSArIHZlYzQoMi4wLCAz
LjAsIDQuMCwgNS4wKTsKKyAgICBvdXRfbXVsID0gaW5fZGF0YSAqIHZlYzQoMi4wLCAzLjAsIDQu
MCwgNS4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0
aW9uKCk7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChudWxsLCBudWxsLCAyKTsKK3ZhciBwcm9ncmFtID0gbnVs
bDsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3Qg
ZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMi
KTsKKyAgICBydW5Ud29PdXRGZWVkYmFja1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZG9EcmF3V2l0
aFRyYW5zZm9ybUZlZWRiYWNrKGV4cGVjdGVkRXJyb3IsIG1zZykgeworICAgIGdsLmJlZ2luVHJh
bnNmb3JtRmVlZGJhY2soZ2wuUE9JTlRTKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBl
eHBlY3RlZEVycm9yLCBtc2cpOworICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAzKTsK
KyAgICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGdsLmdldEVycm9yKCk7Cit9CisK
K2Z1bmN0aW9uIHJ1blR3b091dEZlZWRiYWNrVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIlRlc3QgYmluZGluZyB0aGUgc2FtZSBidWZmZXIgdG8gdHdvIHRyYW5zZm9ybSBmZWVk
YmFjayBiaW5kaW5nIHBvaW50cy4gQnVmZmVyIHNob3VsZCBiZSB1bnRvdWNoZWQgYW5kIGFuIGVy
cm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQuIikKKworICAgIC8vIEJ1aWxkIHRoZSBpbnB1dCBhbmQg
b3V0cHV0IGJ1ZmZlcnMKKyAgICB2YXIgaW5fZGF0YSA9IFsKKyAgICAgICAgMS4wLCAyLjAsIDMu
MCwgNC4wLAorICAgICAgICAyLjAsIDQuMCwgOC4wLCAxNi4wLAorICAgICAgICAwLjc1LCAwLjUs
IDAuMjUsIDAuMAorICAgIF07CisKKyAgICB2YXIgaW5fYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGluX2J1ZmZlcik7CisgICAg
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoaW5fZGF0YSks
IGdsLlNUQVRJQ19EUkFXKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGZlZWRiYWNr
IHNoYWRlcgorICAgIHByb2dyYW0gPSB3dHUuc2V0dXBUcmFuc2Zvcm1GZWVkYmFja1Byb2dyYW0o
Z2wsIFsidnNoYWRlciIsIHd0dS5zaW1wbGVDb2xvckZyYWdtZW50U2hhZGVyRVNTTDMwMF0sCisg
ICAgICAgIFsib3V0X2FkZCIsICJvdXRfbXVsIl0sIGdsLlNFUEFSQVRFX0FUVFJJQlMsCisgICAg
ICAgIFsiaW5fZGF0YSJdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImxpbmtpbmcgdHJhbnNmb3JtIGZlZWRiYWNrIHNoYWRlciBzaG91bGQgbm90IHNldCBhbiBl
cnJvciIpOworICAgIHNob3VsZEJlTm9uTnVsbCgicHJvZ3JhbSIpOworCisgICAgLy8gRHJhdyB0
aGUgdGhlIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXJzCisgICAgdmFyIHRmID0gZ2wuY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDAp
OworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbl9idWZmZXIpOworICAgIGds
LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAxNiwgMCk7CisKKyAg
ICB2YXIgb3V0X2J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIHZhciBvdXRfYnVmZmVy
MiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgb3V0X2J1ZmZlcik7CisKKyAgICAvLyBUZXN0IGJpbmRpbmcgdGhlIHNh
bWUgYnVmZmVyIHRvIHR3byB0cmFuc2Zvcm0gZmVlZGJhY2sgYmluZGluZyBwb2ludHMgd2l0aCBi
aW5kQnVmZmVyQmFzZS4KKyAgICBkZWJ1ZygiIik7CisgICAgZ2wuZW5hYmxlKGdsLlJBU1RFUkla
RVJfRElTQ0FSRCk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSLCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBpbl9kYXRhLmxlbmd0aCAqIDIs
IGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCAwLCBvdXRfYnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxLCBvdXRfYnVmZmVyKTsKKworICAgIGRvRHJhd1dp
dGhUcmFuc2Zvcm1GZWVkYmFjayhnbC5JTlZBTElEX09QRVJBVElPTiwgInNhbWUgYnVmZmVyIGJv
dW5kIHRvIHR3byB0cmFuc2Zvcm0gZmVlZGJhY2sgYmluZGluZyBwb2ludHMgd2l0aCBiaW5kQnVm
ZmVyQmFzZSIpOworCisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgMCwgbnVsbCk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgMSwgbnVsbCk7CisgICAgZ2wuZGlzYWJsZShnbC5SQVNURVJJWkVSX0RJ
U0NBUkQpOworCisgICAgLy8gQ2hlY2sgYnVmZmVyIGNvbnRlbnRzLgorICAgIHZhciBleHBlY3Rl
ZFplcm9lcyA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5fZGF0YS5sZW5ndGggKiAy
OyArK2kpCisgICAgeworICAgICAgICBleHBlY3RlZFplcm9lcy5wdXNoKDAuMCk7CisgICAgfQor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgb3V0X2J1ZmZl
cik7CisgICAgZGVidWcoImJ1ZmZlciBzaG91bGQgYmUgdW50b3VjaGVkIC0gZmlsbGVkIHdpdGgg
emVyb2VzIik7CisgICAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIGV4cGVjdGVkWmVyb2VzKTsKKworICAgIC8vIFRlc3QgYmluZGluZyB0aGUg
c2FtZSBidWZmZXIgdG8gdHdvIHRyYW5zZm9ybSBmZWVkYmFjayBiaW5kaW5nIHBvaW50cyB3aXRo
IGJpbmRCdWZmZXJSYW5nZS4gVGhlIHJhbmdlcyBvdmVybGFwIGp1c3Qgc2xpZ2h0bHkuCisgICAg
ZGVidWcoIiIpOworICAgIGdsLmVuYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgRmxvYXQzMkFycmF5LkJZ
VEVTX1BFUl9FTEVNRU5UICogaW5fZGF0YS5sZW5ndGggKiAyLCBnbC5TVEFUSUNfRFJBVyk7Cisg
ICAgZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG91
dF9idWZmZXIsIDAsIGluX2RhdGEubGVuZ3RoICogNCk7CisgICAgZ2wuYmluZEJ1ZmZlclJhbmdl
KGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDEsIG91dF9idWZmZXIsIChpbl9kYXRhLmxl
bmd0aCAtIDEpICogNCwgaW5fZGF0YS5sZW5ndGggKiA0KTsKKworICAgIGRvRHJhd1dpdGhUcmFu
c2Zvcm1GZWVkYmFjayhnbC5JTlZBTElEX09QRVJBVElPTiwgInNhbWUgYnVmZmVyIGJvdW5kIHRv
IHR3byB0cmFuc2Zvcm0gZmVlZGJhY2sgYmluZGluZyBwb2ludHMgd2l0aCBiaW5kQnVmZmVyUmFu
Z2UsIG92ZXJsYXBwaW5nIHJhbmdlcyIpOworCisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbnVsbCk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2Uo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMSwgbnVsbCk7CisgICAgZ2wuZGlzYWJsZShn
bC5SQVNURVJJWkVSX0RJU0NBUkQpOworCisgICAgLy8gQ2hlY2sgYnVmZmVyIGNvbnRlbnRzLgor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgb3V0X2J1ZmZl
cik7CisgICAgZGVidWcoImJ1ZmZlciBzaG91bGQgYmUgdW50b3VjaGVkIC0gZmlsbGVkIHdpdGgg
emVyb2VzIik7CisgICAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIGV4cGVjdGVkWmVyb2VzKTsKKworICAgIC8vIFRlc3Qgbm9uLW92ZXJsYXBw
aW5nIHJhbmdlcy4KKyAgICBkZWJ1ZygiIik7CisgICAgZ2wuZW5hYmxlKGdsLlJBU1RFUklaRVJf
RElTQ0FSRCk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBpbl9kYXRhLmxlbmd0aCAqIDIsIGds
LlNUQVRJQ19EUkFXKTsKKyAgICBnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgMCwgb3V0X2J1ZmZlciwgMCwgaW5fZGF0YS5sZW5ndGggKiA0KTsKKyAgICBn
bC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMSwgb3V0X2J1
ZmZlciwgaW5fZGF0YS5sZW5ndGggKiA0LCBpbl9kYXRhLmxlbmd0aCAqIDQpOworCisgICAgZG9E
cmF3V2l0aFRyYW5zZm9ybUZlZWRiYWNrKGdsLklOVkFMSURfT1BFUkFUSU9OLCAic2FtZSBidWZm
ZXIgYm91bmQgdG8gdHdvIHRyYW5zZm9ybSBmZWVkYmFjayBiaW5kaW5nIHBvaW50cyB3aXRoIGJp
bmRCdWZmZXJSYW5nZSwgbm9uLW92ZXJsYXBwaW5nIHJhbmdlcyIpOworCisgICAgZ2wuYmluZEJ1
ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbnVsbCk7CisgICAgZ2wu
YmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMSwgbnVsbCk7Cisg
ICAgZ2wuZGlzYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworCisgICAgLy8gQ2hlY2sgYnVm
ZmVyIGNvbnRlbnRzLgorICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgb3V0X2J1ZmZlcik7CisgICAgZGVidWcoImJ1ZmZlciBzaG91bGQgYmUgdW50b3VjaGVk
IC0gZmlsbGVkIHdpdGggemVyb2VzIik7CisgICAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGV4cGVjdGVkWmVyb2VzKTsKKworICAgIC8vIFRl
c3QgYmluZGluZyB0aGUgc2FtZSBidWZmZXIgdG8gYSBiaW5kaW5nIHBvaW50IHRoYXQgZG9lc24n
dCBoYXZlIGEgY29ycmVzcG9uZGluZyBvdXRwdXQgaW4gdGhlIHZlcnRleCBzaGFkZXIuCisgICAg
ZGVidWcoIiIpOworICAgIGdsLmVuYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQpOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgb3V0X2J1ZmZlcjIpOwor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgRmxvYXQzMkFy
cmF5LkJZVEVTX1BFUl9FTEVNRU5UICogaW5fZGF0YS5sZW5ndGggKiAyLCBnbC5TVEFUSUNfRFJB
Vyk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRf
YnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIGluX2RhdGEubGVuZ3RoICogMiwgZ2wu
U1RBVElDX0RSQVcpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIDAsIG91dF9idWZmZXIpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDEsIG91dF9idWZmZXIyKTsKKyAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAyLCBvdXRfYnVmZmVyKTsgIC8vIE5v
IGNvcnJlc3BvbmRpbmcgb3V0cHV0LgorCisgICAgZG9EcmF3V2l0aFRyYW5zZm9ybUZlZWRiYWNr
KGdsLklOVkFMSURfT1BFUkFUSU9OLCAic2FtZSBidWZmZXIgYm91bmQgdG8gdHdvIHRyYW5zZm9y
bSBmZWVkYmFjayBiaW5kaW5nIHBvaW50cyB3aXRoIGJpbmRCdWZmZXJCYXNlLCBidXQgb25lIG9m
IHRoZSBiaW5kaW5nIHBvaW50cyBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIHNoYWRlciBv
dXRwdXQiKTsKKworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIDAsIG51bGwpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDEsIG51bGwpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIDIsIG51bGwpOworICAgIGdsLmRpc2FibGUoZ2wuUkFTVEVSSVpF
Ul9ESVNDQVJEKTsKKworICAgIC8vIENoZWNrIGJ1ZmZlciBjb250ZW50cy4KKyAgICBkZWJ1Zygi
YnVmZmVycyBzaG91bGQgYmUgdW50b3VjaGVkIC0gZmlsbGVkIHdpdGggemVyb2VzIik7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRfYnVmZmVyKTsK
KyAgICB3dHUuY2hlY2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgZXhwZWN0ZWRaZXJvZXMpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgb3V0X2J1ZmZlcjIpOworICAgIHd0dS5jaGVja0Zsb2F0QnVmZmVyKGdsLCBn
bC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBleHBlY3RlZFplcm9lcyk7CisKKyAgICBmaW5p
c2hUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L3RyYW5zZm9ybV9mZWVkYmFjay9zaW11bHRhbmVvdXNfYmluZGluZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9y
bV9mZWVkYmFjay9zaW11bHRhbmVvdXNfYmluZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyOGI0YWI1
Y2Y0N2Y4YmIwZWEzM2VhYzA5NmE0NDliZjVlN2NmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJh
bnNmb3JtX2ZlZWRiYWNrL3NpbXVsdGFuZW91c19iaW5kaW5nLmh0bWwKQEAgLTAsMCArMSwzMzAg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PlNpbXVsdGFuZW91cyBiaW5kaW5nPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBw
eDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCitpbiBmbG9hdCBpbl92YWx1ZTsKK2luIGZsb2F0IGluX3ZhbHVlMjsKK291dCBmbG9hdCBv
dXRfdmFsdWU7CisKK3ZvaWQgbWFpbigpIHsKKyAgIG91dF92YWx1ZSA9IGluX3ZhbHVlICogMi47
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJh
Z21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVj
NCBkdW1teTsKK3VuaWZvcm0gVW5pZm9ybUJsb2NrIHsKKyAgZmxvYXQgZnJhZ21lbnRfdmFsdWU7
Cit9Owordm9pZCBtYWluKCkgeworICBkdW1teSA9IHZlYzQoZnJhZ21lbnRfdmFsdWUpOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGFjY2VzcyB0byBhIGJ1ZmZlciBzaW11bHRhbmVvdXNseSBib3VuZCB0
byBhIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgYW5kIGEgbm9uLXRyYW5zZm9ybS1mZWVkYmFj
ayBiaW5kaW5nIHBvaW50IGlzIGZvcmJpZGRlbi4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIp
OworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBl
eGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIp
OworfQorCitmdW5jdGlvbiBkcmF3V2l0aEZlZWRiYWNrQm91bmQoZ2wsIGRyYXdGdW5jdGlvbiwg
cHJvZywgdmFvLCB0ZiwgZW5hYmxlRmVlZGJhY2spIHsKKyAgZ2wudXNlUHJvZ3JhbShwcm9nKTsK
KyAgZ2wuYmluZFZlcnRleEFycmF5KHZhbyk7CisgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhn
bC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmKTsKKyAgaWYgKGVuYWJsZUZlZWRiYWNrKSBnbC5iZWdp
blRyYW5zZm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7CisgIGxldCBlcnJvciA9IGdsLmdldEVycm9y
KCk7CisgIGlmIChlcnJvciAhPSBnbC5OT19FUlJPUikgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCBl
cnJvciBiZWZvcmUgZHJhd2luZzogIiArICBlcnJvcikKKyAgZHJhd0Z1bmN0aW9uKCk7CisgIGlm
IChlbmFibGVGZWVkYmFjaykgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgZ2wuYmluZFZl
cnRleEFycmF5KG51bGwpOworICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLLCBudWxsKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQnVmZmVyKGdsLCBkYXRhT3JT
aXplKSB7CisgIGNvbnN0IGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgYnVmKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IGRhdGFPclNpemUsIGdsLlNUQVRJQ19EUkFXKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIG51bGwpOworICByZXR1cm4gYnVmOworfQorCitmdW5jdGlvbiBjcmVhdGVWQU8oZ2ws
IHZlcnRleEJ1ZmZlciwgdmVydGV4QnVmZmVyMiwgaW5kZXhCdWZmZXIpIHsKKyAgY29uc3QgdmFv
ID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgZ2wuYmluZFZlcnRleEFycmF5KHZhbyk7Cisg
IGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKyAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7CisgIGdsLmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDApOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0ZXhCdWZmZXIyKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMSwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgZ2wudmVy
dGV4QXR0cmliRGl2aXNvcigxLCAyKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IG51bGwpOworICBnbC5iaW5kVmVydGV4QXJyYXkobnVsbCk7CisgIHJldHVybiB2YW87Cit9CisK
K2NvbnN0IHByb2cgPSB3dHUuc2V0dXBUcmFuc2Zvcm1GZWVkYmFja1Byb2dyYW0oZ2wsIFsidnNo
YWRlciIsICJmc2hhZGVyIl0sCisgICAgWyJvdXRfdmFsdWUiXSwgZ2wuU0VQQVJBVEVfQVRUUklC
UywKKyAgICBbImluX3ZhbHVlIiwgImluX3ZhbHVlMiJdKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAibGlua2luZyB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hhZGVyIHNob3Vs
ZCBub3Qgc2V0IGFuIGVycm9yIik7CisKK2NvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZUJ1ZmZl
cihnbCwgbmV3IEZsb2F0MzJBcnJheShbMSwgMiwgMywgNF0pKTsKK2NvbnN0IHZlcnRleEJ1ZmZl
cjIgPSBjcmVhdGVCdWZmZXIoZ2wsIG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIsIDMsIDRdKSk7Citj
b25zdCB2ZXJ0ZXhCdWZmZXIzID0gY3JlYXRlQnVmZmVyKGdsLCBuZXcgRmxvYXQzMkFycmF5KFsx
LCAyLCAzLCA0XSkpOworCitjb25zdCBpbmRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwor
Z2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworZ2wu
YnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IEludDE2QXJyYXkoWzAsIDEs
IDIsIDNdKSwgZ2wuU1RBVElDX0RSQVcpOworCitjb25zdCB0ZkJ1ZmZlciA9IGNyZWF0ZUJ1ZmZl
cihnbCwgbmV3IEZsb2F0MzJBcnJheShbMCwgMCwgMCwgMF0pKTsKKworY29uc3QgdmFvID0gY3Jl
YXRlVkFPKGdsLCB2ZXJ0ZXhCdWZmZXIsIHZlcnRleEJ1ZmZlcjIsIGluZGV4QnVmZmVyKTsKKy8v
IFRoaXMgdGVzdHMgdGhhdCBoYXZpbmcgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVyIGJvdW5k
IGluIGFuIHVuYm91bmQgVkFPCisvLyBkb2VzIG5vdCBhZmZlY3QgYW55dGhpbmcuCitjb25zdCB1
bmJvdW5kVmFvID0gY3JlYXRlVkFPKGdsLCB0ZkJ1ZmZlciwgdGZCdWZmZXIsIGluZGV4QnVmZmVy
KTsKKworY29uc3QgdGYgPSBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOworZ2wuYmluZFRy
YW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworZ2wudXNlUHJvZ3Jh
bShwcm9nKTsKK2dsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IDAsIHRmQnVmZmVyKTsKKy8vIHRoaXMgYmluZHMgdGhlIGRlZmF1bHQgKGlkID0gMCkgVFJBTlNG
T1JNX0ZFRUJBQ0sgYnVmZmVyCitnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLLCBudWxsKTsKKworY29uc3QgdW5pZm9ybUJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcihn
bCwgbmV3IEZsb2F0MzJBcnJheShbMSwgMCwgMCwgMF0pKTsKK2NvbnN0IHViaSA9IGdsLmdldFVu
aWZvcm1CbG9ja0luZGV4KHByb2csICJVbmlmb3JtQmxvY2siKTsKK2dsLnVuaWZvcm1CbG9ja0Jp
bmRpbmcocHJvZywgdWJpLCAwKTsKK2dsLmJpbmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVS
LCAwLCB1bmlmb3JtQnVmZmVyKTsKKworY29uc3QgZHJhd0Z1bmN0aW9ucyA9IFsKKyAgICBbCisg
ICAgICAoKT0+Z2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDQpLAorICAgICAgKCk9PmdsLmRy
YXdFbGVtZW50cyhnbC5QT0lOVFMsIDQsIGdsLlVOU0lHTkVEX1NIT1JULCAwKSwKKyAgICBdLAor
ICAgIFsKKyAgICAgICgpPT5nbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlBPSU5UUywgMCwgNCwg
MSksCisgICAgICAoKT0+Z2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlBPSU5UUywgNCwgZ2wu
VU5TSUdORURfU0hPUlQsIDAsIDEpLAorICAgIF0sCisgICAgWworICAgICAgKCk9PmdsLmRyYXdB
cnJheXMoZ2wuUE9JTlRTLCAwLCA0KSwKKyAgICAgICgpPT5nbC5kcmF3UmFuZ2VFbGVtZW50cyhn
bC5QT0lOVFMsIDAsIDMsIDQsIGdsLlVOU0lHTkVEX1NIT1JULCAwKSwKKyAgICBdLAorICBdOwor
Citmb3IgKGxldCBbZHJhd0FycmF5cywgZHJhd0VsZW1lbnRzXSBvZiBkcmF3RnVuY3Rpb25zKSB7
CisgIGRlYnVnKCI8aDM+V2l0aCBkcmF3IGZ1bmN0aW9ucyAiICsgZHJhd0FycmF5cyArICIgYW5k
ICIgKyBkcmF3RWxlbWVudHMgKyAiPC9oMz4iKTsKKyAgZGVidWcoIjxoci8+VGVzdCBiYXNlbGlu
ZSIpOworICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHRmQnVm
ZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxNiwg
Z2wuU1RBVElDX0RSQVcpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
ImJ1ZmZlckRhdGEgdG8gVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiIpOworICBkcmF3V2l0aEZl
ZWRiYWNrQm91bmQoZ2wsIGRyYXdFbGVtZW50cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdFbGVtZW50cyBzaG91bGQg
YmUgc3VjY2Vzc2Z1bCIpOworICBkcmF3V2l0aEZlZWRiYWNrQm91bmQoZ2wsIGRyYXdBcnJheXMs
IHByb2csIHZhbywgdGYsIHRydWUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInRyYW5zZm9ybSBmZWVkYmFjayBzaG91bGQgYmUgc3VjY2Vzc2Z1bCIpOworCisgIGNv
bnN0IGV4cGVjdGVkID0gWzIsIDQsIDYsIDhdOworICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIHRmQnVmZmVyKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2ws
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGV4cGVjdGVkKTsKKworICBkZWJ1ZygiPGhy
Lz5UZXN0IGdlbmVyaWMgYmluZCBwb2ludCBzZXQgdG8gbnVsbCIpOworICBnbC5iaW5kQnVmZmVy
KGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG51bGwpOworICBkcmF3V2l0aEZlZWRiYWNr
Qm91bmQoZ2wsIGRyYXdFbGVtZW50cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdFbGVtZW50cyBzaG91bGQgYmUgc3Vj
Y2Vzc2Z1bCIpOworICBkcmF3V2l0aEZlZWRiYWNrQm91bmQoZ2wsIGRyYXdBcnJheXMsIHByb2cs
IHZhbywgdGYsIHRydWUpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InRyYW5zZm9ybSBmZWVkYmFjayBzaG91bGQgYmUgc3VjY2Vzc2Z1bCIpOworCisgIGdsLmJpbmRC
dWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIpOworICB3dHUuY2hl
Y2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgZXhwZWN0ZWQp
OworCisgIGRlYnVnKCI8aHIvPlRlc3QgZ2VuZXJpYyBiaW5kIHBvaW50IHNldCB0byB2ZXJ0ZXgg
YnVmZmVyIik7CisgIC8vIFRoZSBUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSIGdlbmVyaWMgYmlu
ZGluZyBwb2ludCBpcyBub3QgcGFydCBvZiB0aGUKKyAgLy8gdHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdCBhbmQgbm90IHdyaXR0ZW4gdG8gYnkgdHJhbnNmb3JtIGZlZWRiYWNrLiBPbmx5CisgIC8v
IHRoZSBpbmRleGVkIGJpbmRpbmcgcG9pbnRzIGFyZSB3cml0dGVuIHRvLiBTbyBpdCBzaG91bGQg
YmUgbGVnYWwgdG8gZHJhdworICAvLyBmcm9tIGEgYnVmZmVyIGJvdW5kIHRvIHRoZSBnZW5lcmlj
IGJpbmRpbmcgcG9pbnQuCisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgZHJhd1dpdGhGZWVkYmFja0JvdW5kKGdsLCBkcmF3RWxl
bWVudHMsIHByb2csIHZhbywgdGYsIGZhbHNlKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJkcmF3RWxlbWVudHMgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwiKTsKKyAgZHJh
d1dpdGhGZWVkYmFja0JvdW5kKGdsLCBkcmF3QXJyYXlzLCBwcm9nLCB2YW8sIHRmLCB0cnVlKTsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0cmFuc2Zvcm0gZmVlZGJh
Y2sgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwiKTsKKworICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIHRmQnVmZmVyKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2ws
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGV4cGVjdGVkKTsKKworICBkZWJ1ZygiPGhy
Lz5UZXN0IEFSUkFZX0JVRkZFUiIpOworICAvLyB0aGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgdGhl
IHRyYW5zZm9ybSBmZWVkYmFjaydzIGJ1ZmZlciAjMCBhbmQgdGhlCisgIC8vIGJhZFZhbydzIGJ1
ZmZlciAjMCBhcmUgdGhlIHNhbWUgYnVmZmVyCisgIGNvbnN0IGJhZFZhbyA9IGNyZWF0ZVZBTyhn
bCwgdGZCdWZmZXIsIHZlcnRleEJ1ZmZlcjIsIGluZGV4QnVmZmVyKTsKKyAgZHJhd1dpdGhGZWVk
YmFja0JvdW5kKGdsLCBkcmF3QXJyYXlzLCBwcm9nLCBiYWRWYW8sIHRmLCBmYWxzZSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0FycmF5czog
YnVmZmVyIHVzZWQgYXMgdmVydGV4IGF0dHJpYiBhbmQgdGYgc2ltdWx0YW5lb3VzbHkiKTsKKyAg
ZHJhd1dpdGhGZWVkYmFja0JvdW5kKGdsLCBkcmF3RWxlbWVudHMsIHByb2csIGJhZFZhbywgdGYs
IGZhbHNlKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJkcmF3RWxlbWVudHM6IGJ1ZmZlciB1c2VkIGFzIHZlcnRleCBhdHRyaWIgYW5kIHRmIHNpbXVs
dGFuZW91c2x5Iik7CisgIGRyYXdXaXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0FycmF5cywgcHJv
ZywgYmFkVmFvLCB0ZiwgdHJ1ZSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiYnVmZmVyIHVzZWQgYXMgdmVydGV4IGF0dHJpYiBhbmQgdGYgc2ltdWx0
YW5lb3VzbHkiKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCB0ZkJ1ZmZlcik7CisgIHd0dS5jaGVja0Zsb2F0QnVmZmVyKGdsLCBnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCBleHBlY3RlZCwgInNob3VsZCBiZSB0aGUgc2FtZSBhcyBiZWZvcmUgYXMg
bm90aGluZyBoYXMgZXhlY3V0ZWQiKTsKKworICBkZWJ1ZygiPGhyLz5UZXN0IFVOSUZPUk1fQlVG
RkVSIik7CisgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVSLCAwLCB0ZkJ1ZmZl
cik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9STV9CVUZGRVIsIG51bGwpOyAvLyB0ZkJ1ZmZl
ciBpcyBzdGlsbCBib3VuZCBhdCBpbmRleCAwCisgIGRyYXdXaXRoRmVlZGJhY2tCb3VuZChnbCwg
ZHJhd0FycmF5cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImRyYXdBcnJheXM6IGJ1ZmZlciB1c2VkIGFzIHVu
aWZvcm0gYnVmZmVyIGFuZCB0ZiBzaW11bHRhbmVvdXNseSIpOworICBkcmF3V2l0aEZlZWRiYWNr
Qm91bmQoZ2wsIGRyYXdFbGVtZW50cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImRyYXdFbGVtZW50czogYnVm
ZmVyIHVzZWQgYXMgdW5pZm9ybSBidWZmZXIgYW5kIHRmIHNpbXVsdGFuZW91c2x5Iik7CisgIGRy
YXdXaXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0FycmF5cywgcHJvZywgdmFvLCB0ZiwgdHJ1ZSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYnVmZmVy
IHVzZWQgYXMgdW5pZm9ybSBidWZmZXIgYW5kIHRmIHNpbXVsdGFuZW91c2x5Iik7CisgIGdsLmJp
bmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVSLCAwLCB1bmlmb3JtQnVmZmVyKTsKKyAgZHJh
d1dpdGhGZWVkYmFja0JvdW5kKGdsLCBkcmF3QXJyYXlzLCBwcm9nLCB2YW8sIHRmLCBmYWxzZSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd0FycmF5czogdGYg
YnVmZmVyIG5vdCB1c2VkIGFzIHVuaWZvcm0gYnVmZmVyIGFueW1vcmUiKTsKKyAgZHJhd1dpdGhG
ZWVkYmFja0JvdW5kKGdsLCBkcmF3RWxlbWVudHMsIHByb2csIHZhbywgdGYsIGZhbHNlKTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3RWxlbWVudHM6IHRmIGJ1
ZmZlciBub3QgdXNlZCBhcyB1bmlmb3JtIGJ1ZmZlciBhbnltb3JlIik7CisgIGRyYXdXaXRoRmVl
ZGJhY2tCb3VuZChnbCwgZHJhd0FycmF5cywgcHJvZywgdmFvLCB0ZiwgdHJ1ZSk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGYgYnVmZmVyIG5vdCB1c2VkIGFzIHVu
aWZvcm0gYnVmZmVyIGFueW1vcmUiKTsKKworICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgIGNvbnN0IHRmQnVmZmVyMiA9IGNyZWF0ZUJ1ZmZl
cihnbCwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogNCk7CisgIGdsLmJpbmRCdWZm
ZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMik7CisgIGRy
YXdXaXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0FycmF5cywgcHJvZywgYmFkVmFvLCB0Zik7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYnVmZmVyIGlzIG5vIGxvbmdl
ciBib3VuZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIik7CisgIGdsLmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmKTsKKyAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgdGZCdWZmZXIpOworCisgIGRlYnVnKCI8aHIv
PlRlc3QgVEYgYnVmZmVyIGJvdW5kIHRvIHRhcmdldCB1bnVzZWQgYnkgZHJhdyIpOworICAvLyBF
dmVuIGlmIHRoZSBURiBidWZmZXIgaXMgYm91bmQgdG8gYSB0YXJnZXQgdGhhdCdzIG5vdCB1c2Vk
IGJ5IHRoZSBkcmF3LCBpdCdzCisgIC8vIHN0aWxsIGFuIGVycm9yLgorICBnbC5iaW5kQnVmZmVy
KGdsLkNPUFlfUkVBRF9CVUZGRVIsIHRmQnVmZmVyKTsKKyAgZHJhd1dpdGhGZWVkYmFja0JvdW5k
KGdsLCBkcmF3QXJyYXlzLCBwcm9nLCB2YW8sIHRmLCB0cnVlKTsKKyAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0ZiBlbmFibGVkIik7CisgIGRyYXdXaXRo
RmVlZGJhY2tCb3VuZChnbCwgZHJhd0FycmF5cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdBcnJheXM6IHRmIGRpc2Fi
bGVkIik7CisgIGRyYXdXaXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0VsZW1lbnRzLCBwcm9nLCB2
YW8sIHRmLCBmYWxzZSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
ZHJhd0VsZW1lbnRzOiB0ZiBkaXNhYmxlZCIpOworICBnbC5iaW5kQnVmZmVyKGdsLkNPUFlfUkVB
RF9CVUZGRVIsIG51bGwpOworCisgIGRlYnVnKCI8aHIvPlRlc3QgVEYgYnVmZmVyIGJvdW5kIHRv
IGRpc2FibGVkIHZlcnRleCBhdHRyaWIiKTsKKyAgLy8gSGF2aW5nIGEgVEYgYnVmZmVyIGJvdW5k
IHRvIGEgZGlzYWJsZWQgdmVydGV4IGF0dHJpYiBzaG91bGQgbm90IGJlIGFuIGVycm9yCisgIC8v
IHdoZW4gVEYgaXMgbm90IGVuYWJsZWQsIGJlY2F1c2UgdGhlIGJ1ZmZlciBpcyBub3QgdXNlZC4K
KyAgZ2wuYmluZFZlcnRleEFycmF5KHZhbyk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCB0ZkJ1ZmZlcik7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMiwgMSwgZ2wuRkxPQVQs
IGZhbHNlLCAwLCAwKTsKKyAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDIpOworICBnbC5i
aW5kVmVydGV4QXJyYXkobnVsbCk7CisgIGRyYXdXaXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0Fy
cmF5cywgcHJvZywgdmFvLCB0ZiwgZmFsc2UpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInRmIGRpc2FibGVkLCBkcmF3IHNob3VsZCBzdWNjZWVkIik7CisgIGRyYXdX
aXRoRmVlZGJhY2tCb3VuZChnbCwgZHJhd0VsZW1lbnRzLCBwcm9nLCB2YW8sIHRmLCBmYWxzZSk7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGYgZGlzYWJsZWQsIGRy
YXcgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgLy8gUmVtb3ZlIHRoZSBURiBidWZmZXIgYmluZGluZyBm
cm9tIHRoZSBWQU8gYWZ0ZXIgdGhlIHRlc3QuCisgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8pOwor
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyMyk7CisgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMiwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgZ2wuZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KDIpOworICBnbC5iaW5kVmVydGV4QXJyYXkobnVsbCk7Cit9
CisKK2RlYnVnKCI8aDE+Tm9uLWRyYXdpbmcgdGVzdHM8L2gxPiIpOworCitkZWJ1ZygiPGhyLz5U
ZXN0IGJ1ZmZlckRhdGEiKTsKKworZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9S
TV9GRUVEQkFDSywgdGYpOworZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgMCwgdGZCdWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCAxNiwgZ2wuU1RBVElDX0RSQVcpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJidWZmZXJEYXRhIHRvIFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIiKTsK
K2dsLmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklURV9CVUZGRVIsIHRmQnVmZmVyKTsKK2dsLmJ1ZmZl
ckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMTYsIGdsLlNUQVRJQ19EUkFXKTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYnVmZmVyRGF0
YSB3aXRoIGRvdWJsZSBib3VuZCBidWZmZXIiKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklU
RV9CVUZGRVIsIG51bGwpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIgZ2VuZXJpYyBiaW5kIHBvaW50IHNob3VsZCBub3QKKy8vIGFmZmVjdCB0aGUgbGVn
YWxpdHkgb2YgYW55IG9wZXJhdGlvbi4KK2xldCBnZW5lcmljQmluZFBvaW50VmFsdWVzID0gWygp
PT5udWxsLCAoKT0+dGZCdWZmZXIsICgpPT52ZXJ0ZXhCdWZmZXJdOworCitmb3IgKGxldCBnZW5l
cmljQmluZFBvaW50VmFsdWUgb2YgZ2VuZXJpY0JpbmRQb2ludFZhbHVlcykgeworICBnbC5iaW5k
VHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgIGRlYnVnKCI8
aDM+V2l0aCBUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSIGdlbmVyaWMgYmluZCBwb2ludCB2YWx1
ZSAiICsgZ2VuZXJpY0JpbmRQb2ludFZhbHVlICsgIjwvaDM+Iik7CisgIGdsLmJpbmRCdWZmZXIo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgZ2VuZXJpY0JpbmRQb2ludFZhbHVlKCkpOwor
CisgIGRlYnVnKCI8aHIvPlRlc3QgUElYRUxfVU5QQUNLX0JVRkZFUiIpOworICBjb25zdCB0ZXgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgdmVydGV4QnVmZmVy
KTsKKyAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMSwgMSwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiUElYRUxfVU5QQUNLX0JVRkZFUiBpcyBub3QgYm91bmQgZm9yIHRyYW5z
Zm9ybSBmZWVkYmFjayIpOworCisgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZF
UiwgdGZCdWZmZXIpOworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4
LCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJQSVhFTF9VTlBBQ0tfQlVGRkVSIGlz
IGJvdW5kIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhF
TF9VTlBBQ0tfQlVGRkVSLCBudWxsKTsKKworICBkZWJ1ZygiPGhyLz5UZXN0IFBJWEVMX1BBQ0tf
QlVGRkVSIik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfUEFDS19CVUZGRVIsIHZlcnRleEJ1
ZmZlcik7CisgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgMCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiUElYRUxf
UEFDS19CVUZGRVIgaXMgbm90IGJvdW5kIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKyAgZ2wu
YmluZEJ1ZmZlcihnbC5QSVhFTF9QQUNLX0JVRkZFUiwgdGZCdWZmZXIpOworICBnbC5yZWFkUGl4
ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIDApOworICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIlBJWEVMX1BBQ0tfQlVGRkVS
IGlzIGJvdW5kIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5Q
SVhFTF9QQUNLX0JVRkZFUiwgbnVsbCkKKworICBkZWJ1ZygiPGhyLz5UZXN0IGJ1ZmZlckRhdGEg
ZmFtaWx5IHdpdGggdGYgb2JqZWN0IGJvdW5kIik7CisKKyAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZ
X1dSSVRFX0JVRkZFUiwgdGZCdWZmZXIpOworICBnbC5idWZmZXJEYXRhKGdsLkNPUFlfV1JJVEVf
QlVGRkVSLCAxNiwgZ2wuU1RBVElDX0RSQVcpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImJ1ZmZlckRhdGEgd2l0aCBkb3VibGUgYm91bmQgYnVmZmVy
Iik7CisgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIG5ldyBVaW50
OEFycmF5KFswXSkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgImJ1ZmZlclN1YkRhdGEgd2l0aCBkb3VibGUgYm91bmQgYnVmZmVyIik7CisgIGdsLmdl
dEJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIG5ldyBVaW50OEFycmF5KFsw
XSksIDAsIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgImdldEJ1ZmZlclN1YkRhdGEgd2l0aCBkb3VibGUgYm91bmQgYnVmZmVyIik7CisKKyAgZ2wu
YmluZEJ1ZmZlcihnbC5DT1BZX1JFQURfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIpOworICBnbC5jb3B5
QnVmZmVyU3ViRGF0YShnbC5DT1BZX1dSSVRFX0JVRkZFUiwgZ2wuQ09QWV9SRUFEX0JVRkZFUiwg
MCwgMCwgMSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAiY29weUJ1ZmZlclN1YkRhdGEgd2l0aCBkb3VibGUgYm91bmQgYnVmZmVyIik7CisgIGdsLmNv
cHlCdWZmZXJTdWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVS
LCAwLCAwLCAxKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb3B5QnVmZmVyU3ViRGF0YSB3aXRoIGRvdWJsZSBib3VuZCBidWZmZXIiKTsKKworICBk
ZWJ1ZygiPGhyLz5UZXN0IGJ1ZmZlckRhdGEgZmFtaWx5IHdpdGggdGYgb2JqZWN0IHVuYm91bmQi
KTsKKworICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBu
dWxsKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JVRkZFUiwgdGZCdWZmZXIpOwor
ICBnbC5idWZmZXJEYXRhKGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAxNiwgZ2wuU1RBVElDX0RSQVcp
OworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJ1ZmZlckRhdGEgc2hv
dWxkIHN1Y2NlZWQiKTsKKyAgZ2wuYnVmZmVyU3ViRGF0YShnbC5DT1BZX1dSSVRFX0JVRkZFUiwg
MCwgbmV3IFVpbnQ4QXJyYXkoWzBdKSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiYnVmZmVyU3ViRGF0YSBzaG91bGQgc3VjY2VlZCIpOworICBnbC5nZXRCdWZmZXJT
dWJEYXRhKGdsLkNPUFlfV1JJVEVfQlVGRkVSLCAwLCBuZXcgVWludDhBcnJheShbMF0pLCAwLCAx
KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJnZXRCdWZmZXJTdWJE
YXRhIHNob3VsZCBzdWNjZWVkIik7CisKKyAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1JFQURfQlVG
RkVSLCB2ZXJ0ZXhCdWZmZXIpOworICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1dSSVRF
X0JVRkZFUiwgZ2wuQ09QWV9SRUFEX0JVRkZFUiwgMCwgMCwgMSk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY29weUJ1ZmZlclN1YkRhdGEgc2hvdWxkIHN1Y2NlZWQi
KTsKKyAgZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9X
UklURV9CVUZGRVIsIDAsIDAsIDEpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgImNvcHlCdWZmZXJTdWJEYXRhIHNob3VsZCBzdWNjZWVkIik7Cit9CisKK2ZpbmlzaFRl
c3QoKTsKKworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFu
c2Zvcm1fZmVlZGJhY2svc3dpdGNoaW5nLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJh
Y2svc3dpdGNoaW5nLW9iamVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2U4MmRkMjFmNjU5NDg3M2M4
ODE5OGYwOTc4MjIzYWFjNDVmNjE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVk
YmFjay9zd2l0Y2hpbmctb2JqZWN0cy5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Td2l0Y2hpbmcgdHJh
bnNmb3JtIGZlZWRiYWNrIG9iamVjdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1
MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAz
MDAgZXMKK2luIGZsb2F0IGluX3ZhbHVlOworb3V0IGZsb2F0IG91dF92YWx1ZTE7CitvdXQgZmxv
YXQgb3V0X3ZhbHVlMjsKKwordm9pZCBtYWluKCkgeworICAgb3V0X3ZhbHVlMSA9IGluX3ZhbHVl
ICogMi47CisgICBvdXRfdmFsdWUyID0gaW5fdmFsdWUgKiA0LjsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAw
IGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IGR1bW15Owordm9pZCBtYWlu
KCkgeworICBkdW1teSA9IHZlYzQoMC4pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3RzIHN3aXRjaGluZyB0cmFuc2Zvcm0gZmVlZGJhY2sg
b2JqZWN0cy4iKTsKKworZGVidWcoIjxoMz5TZXR1cDwvaDM+IikKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKK2lmICgh
Z2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9
CisKKy8vIFNldHVwCitjb25zdCBwcm9nX2ludGVybGVhdmVkID0gd3R1LnNldHVwVHJhbnNmb3Jt
RmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLAorICAgIFsib3V0X3Zh
bHVlMSIsICJvdXRfdmFsdWUyIl0sIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMsCisgICAgWyJpbl92
YWx1ZSJdKTsKK2NvbnN0IHByb2dfbm9fdmFyeWluZ3MgPSB3dHUuc2V0dXBUcmFuc2Zvcm1GZWVk
YmFja1Byb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sCisgICAgW10sIGdsLklOVEVS
TEVBVkVEX0FUVFJJQlMsCisgICAgWyJpbl92YWx1ZSJdKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAic2hhZGVyIGNvbXBpbGF0aW9uIik7Citjb25zdCB2ZXJ0ZXhCdWZm
ZXIgPSBjcmVhdGVCdWZmZXIoZ2wsIG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIsIDMsIDRdKSk7Citn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKK2dsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAxLCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOworZ2wudXNlUHJvZ3JhbShwcm9nX2ludGVybGVhdmVkKTsKK3d0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmVydGV4IGJ1ZmZlciBhbmQgcHJvZ3Jh
bSBzZXR1cCIpOworCitjb25zdCB0ZjEgPSBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOwor
Y29uc3QgdGYyID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKK2NvbnN0IHRmQnVmZmVy
MSA9IGNyZWF0ZUJ1ZmZlcihnbCwgbmV3IEZsb2F0MzJBcnJheShbMCwgMF0pKTsKK2NvbnN0IHRm
QnVmZmVyMiA9IGNyZWF0ZUJ1ZmZlcihnbCwgbmV3IEZsb2F0MzJBcnJheShbMCwgMF0pKTsKK2ds
LmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmMSk7CitnbC5i
aW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCB0ZkJ1ZmZlcjEp
OworZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYyKTsK
K2dsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVm
ZmVyMik7Citjb25zdCBleHBlY3RlZF90Zl9vdXRwdXQgPSBbMiwgNF07Cit3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlRGIG9iamVjdCBzZXR1cCIpOworCitkZWJ1ZygiPGgz
PkJhc2VsaW5lIHRyYW5zZm9ybSBmZWVkYmFjayBzdWNjZXNzIGNhc2U8L2gzPiIpOworCitnbC5i
aW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0ZjEpOworZ2wuYmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5QT0lOVFMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJiZWdpbiBURiIpOworZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDEp
Oword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3Iik7CitnbC5lbmRU
cmFuc2Zvcm1GZWVkYmFjaygpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJlbmQgVEYiKTsKKworZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCB0ZkJ1ZmZlcjEpOword3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIGV4cGVjdGVkX3RmX291dHB1dCk7CisKK2RlYnVnKCI8aDM+R2VuZXJpYyBi
aW5kaW5nIGlzIG5vdCBjaGFuZ2VkIHdoZW4gc3dpdGNoaW5nIFRGIG9iamVjdDwvaDM+Iik7CisK
Ky8vIEFjY29yZGluZyB0byB0aGUgR0wgRVMgc3BlYyBoaXN0b3JpY2FsbHksIFRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVJfQklORElORyBpcyBsaXN0ZWQgYXMgcGFydAorLy8gb2YgdGhlIHRyYW5z
Zm9ybSBmZWVkYmFjayBvYmplY3Qgc3RhdGUuIEhvd2V2ZXIsIG1hbnkgZHJpdmVycyB0cmVhdCBp
dCBhcyBnbG9iYWwgY29udGV4dCBzdGF0ZQorLy8gYW5kIG5vdCBwYXJ0IG9mIHRoZSB0cmFuZm9y
bSBmZWVkYmFjayBvYmplY3QsIHdoaWNoIG1lYW5zIHRoYXQgaXQgZG9lcyBub3QgY2hhbmdlIHdo
ZW4KKy8vIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayBpcyBjYWxsZWQuIEtocm9ub3MgaGFzIHJlc29s
dmVkIHRvIGNoYW5nZSB0aGUgc3BlYyB0byBzcGVjaWZ5IHRoZSBsYXR0ZXIKKy8vIGJlaGF2aW9y
OiBodHRwczovL2dpdGxhYi5raHJvbm9zLm9yZy9vcGVuZ2wvQVBJL2lzc3Vlcy82NiAoS2hyb25v
cyBwcml2YXRlIGxpbmspLiBUaGlzIHRlc3RzCisvLyBmb3IgdGhlIG5ldyBiZWhhdmlvci4KKwor
Ly8gU2V0IGVhY2ggYnVmZmVyIHRvIGNvbnRhaW4gaXRzIGJ1ZmZlciBudW1iZXIuIFdlIHVzZSB0
aGlzIHRvIGNoZWNrIHdoaWNoCisvLyBidWZmZXIgaXMgKnJlYWxseSogYm91bmQgYXQgdGhlIGRy
aXZlciBsZXZlbCBieSByZWFkaW5nIHRoZSBidWZmZXIgY29udGVudHMuCitnbC5iaW5kVHJhbnNm
b3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBudWxsKTsKK2dsLmJpbmRCdWZmZXIo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIxKTsKK2dsLmJ1ZmZlckRhdGEo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMV0pLCBnbC5T
VFJFQU1fUkVBRCk7CitnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IHRmQnVmZmVyMik7CitnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IG5ldyBGbG9hdDMyQXJyYXkoWzJdKSwgZ2wuU1RSRUFNX1JFQUQpOword3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJidWZmZXJEYXRhIik7CisKK2dsLmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmMSk7CitjaGVja1BhcmFtZXRlcihnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsIHRmQnVmZmVyMik7CitjaGVja0luZGV4
ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAwLCB0ZkJ1
ZmZlcjEpOword3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIFsyXSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInJlYWRi
YWNrIik7CisKK2dsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbnVs
bCk7CitnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0ZjIp
OworY2hlY2tQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCBu
dWxsKTsKK2NoZWNrSW5kZXhlZFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X0JJTkRJTkcsIDAsIHRmQnVmZmVyMik7CisKK2RlYnVnKCI8aDM+RXJyb3Igc3dpdGNoaW5nIFRG
IG9iamVjdCB3aGlsZSBURiBpcyBlbmFibGVkPC9oMz4iKTsKKworZ2wuYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYxKTsKK2dsLmJpbmRCdWZmZXIoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIxKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMCwgMF0pLCBnbC5TVFJF
QU1fUkVBRCk7CitnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7Cit3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJlZ2luIik7CitjaGVja1BhcmFtZXRlcihn
bC5UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORywgdGYxKTsKKworZ2wuYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYyKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiYmluZCB3aGlsZSB1bnBhdXNlZCIpOworCisvLyBD
aGVjayB0aGF0IG5vdGhpbmcgYWN0dWFsbHkgY2hhbmdlZCBhbmQgcmVuZGVyaW5nIHN0aWxsIHdv
cmtzCitjaGVja1BhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORywgdGYxKTsK
K2dsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKK2dsLmVuZFRyYW5zZm9ybUZlZWRiYWNr
KCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRyYW5zZm9ybSBmZWVk
YmFjayBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5Iik7Cit3dHUuY2hlY2tGbG9hdEJ1ZmZl
cihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgZXhwZWN0ZWRfdGZfb3V0cHV0KTsK
KworCitkZWJ1ZygiPGgzPlN1Y2Nlc3NmdWxseSBzd2l0Y2hpbmcgVEYgb2JqZWN0IHdoaWxlIFRG
IGlzIHBhdXNlZDwvaDM+Iik7CisKK2dsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgdGZCdWZmZXIxKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMCwgMF0pLCBnbC5TVFJFQU1fUkVBRCk7CitnbC5i
aW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHRmQnVmZmVyMik7CitnbC5i
dWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXko
WzAsIDBdKSwgZ2wuU1RSRUFNX1JFQUQpOworCitnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLLCB0ZjIpOworZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5Q
T0lOVFMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJiZWdpbiBvbiB0
ZjIiKTsKK2NoZWNrUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HLCB0ZjIp
OworCitnbC5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CitnbC5iaW5kVHJhbnNmb3JtRmVlZGJh
Y2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0ZjEpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJiaW5kIHdoaWxlIHBhdXNlZCIpOworZ2wuYmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhnbC5QT0lOVFMpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJi
ZWdpbiBvbiB0ZjEiKTsKK2NoZWNrUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CSU5E
SU5HLCB0ZjEpOworZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDEpOword3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3IHNob3VsZCBzdWNjZWVkIik7CitnbC5lbmRU
cmFuc2Zvcm1GZWVkYmFjaygpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJlbmQgb24gdGYxIik7CitnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIsIHRmQnVmZmVyMSk7Cit3dHUuY2hlY2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgZXhwZWN0ZWRfdGZfb3V0cHV0KTsKKworZ2wuYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYyKTsKK2dsLmVuZFRyYW5zZm9ybUZlZWRi
YWNrKCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImVuZCBvbiB0ZjIi
KTsKKworZGVidWcoIjxoMz5NaXNjLiBpbnZhbGlkIG9wZXJhdGlvbnM8L2gzPiIpCisKK2dsLmVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIGJlZm9yZSBiZWdpbiIpOworZ2wucGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJwYXVzZVRyYW5zZm9ybUZlZWRiYWNrIHdoZW4gbm90IGFjdGl2ZSIpOwor
Z2wucmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLCAicGF1c2VUcmFuc2Zvcm1GZWVkYmFjayB3aGVuIG5vdCBhY3Rp
dmUiKTsKKworZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5QT0lOVFMpOword3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0cmFuc2Zvcm0gZmVlZGJhY2sgc2hvdWxkIGJl
Z2luIHN1Y2Nlc3NmdWxseSIpOworZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwgMCwg
MSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIndyb25n
IHByaW1pdGl2ZSBtb2RlIik7CitnbC51c2VQcm9ncmFtKHByb2dfbm9fdmFyeWluZ3MpOword3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJzd2l0Y2ggcHJvZ3Jh
bSB3aGlsZSBhY3RpdmUiKTsKK2dsLnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7Cit3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInJlc3VtZVRyYW5zZm9ybUZl
ZWRiYWNrIHdoZW4gbm90IHBhdXNlZCIpOworZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRS
QU5TRk9STV9GRUVEQkFDSywgdGYyKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiYmluZFRyYW5zZm9ybUZlZWRiYWNrIHdoZW4gYWN0aXZlIik7CitnbC5i
aW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHRmQnVmZmVyMik7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJpbmRCdWZmZXIoVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUikgd2hlbiBhY3RpdmUiKTsKK2dsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMik7Cit3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImJpbmRCdWZmZXJCYXNlKFRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIpIHdoZW4gYWN0aXZlIik7CisKK2dsLnBhdXNlVHJhbnNmb3JtRmVlZGJhY2so
KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicGF1c2UiKTsKK2dsLnBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiYWxyZWFkeSBwYXVzZWQiKTsKK2dsLmVuZFRyYW5zZm9ybUZlZWRiYWNr
KCk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImVuZCB3aGlsZSBwYXVz
ZWQiKTsKKworZmluaXNoVGVzdCgpOworCisvLyBIZWxwZXIgZnVuY3Rpb25zCitmdW5jdGlvbiBj
cmVhdGVCdWZmZXIoZ2wsIGRhdGFPclNpemUpIHsKKyAgY29uc3QgYnVmID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOworICBnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgZGF0YU9yU2l6ZSwgZ2wuU1RBVElDX0RSQVcpOworICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgIHJldHVybiBidWY7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrUGFyYW1ldGVyKHBhcmFtLCBleHBlY3RlZCkgeworICBjb25zdCB2YWx1
ZSA9IGdsLmdldFBhcmFtZXRlcihwYXJhbSk7CisgIGlmICh2YWx1ZSAhPSBleHBlY3RlZCkgewor
ICAgIHRlc3RGYWlsZWQod3R1LmdsRW51bVRvU3RyaW5nKGdsLCBwYXJhbSkgKyAiIHdhcyAiICsg
dmFsdWUgKyAiLCBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKKyAgfSBlbHNlIHsKKyAgICB0
ZXN0UGFzc2VkKHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgcGFyYW0pICsgIiB3YXMgIiArIHZhbHVl
ICsgIiwgbWF0Y2hpbmcgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKKyAgfQorfQorCitmdW5jdGlv
biBjaGVja0luZGV4ZWRQYXJhbWV0ZXIocGFyYW0sIGluZGV4LCBleHBlY3RlZCkgeworICBjb25z
dCB2YWx1ZSA9IGdsLmdldEluZGV4ZWRQYXJhbWV0ZXIocGFyYW0sIGluZGV4KTsKKyAgaWYgKHZh
bHVlICE9IGV4cGVjdGVkKSB7CisgICAgdGVzdEZhaWxlZCh3dHUuZ2xFbnVtVG9TdHJpbmcoZ2ws
IHBhcmFtKSArICJbIiArIGluZGV4ICsgIl0gd2FzICIgKyB2YWx1ZSArICIsIGJ1dCBleHBlY3Rl
ZCAiICsgZXhwZWN0ZWQpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQod3R1LmdsRW51bVRv
U3RyaW5nKGdsLCBwYXJhbSkgKyAiWyIgKyBpbmRleCArICJdIHdhcyAiICsgdmFsdWUgKyAiLCBt
YXRjaGluZyBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICB9Cit9CisKKworPC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdG9vLXNt
YWxsLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdG9vLXNtYWxsLWJ1ZmZlcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NGFjZmJhZDdiZDVhMjg3ZDAwNmViMzBmMGFhODM1ODAwOWQxZmIw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90b28tc21hbGwtYnVmZmVy
cy5odG1sCkBAIC0wLDAgKzEsMjQyIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5URiB0b28gc21hbGwgYnVmZmVyczwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gZmxvYXQgaW5fdmFsdWUxOworaW4gZmxvYXQg
aW5fdmFsdWUyOworb3V0IGZsb2F0IG91dF92YWx1ZTE7CitvdXQgZmxvYXQgb3V0X3ZhbHVlMjsK
K3ZvaWQgbWFpbigpIHsKKyAgIG91dF92YWx1ZTEgPSBpbl92YWx1ZTEgKiAyLjsKKyAgIG91dF92
YWx1ZTIgPSBpbl92YWx1ZTIgKiAyLjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK291dCB2ZWM0IGR1bW15Owordm9pZCBtYWluKCkgeworICBkdW1teSA9
IHZlYzQoMC4pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRyYW5zZm9ybSBmZWVkYmFjayBpbnRvIGJ1ZmZlcnMgdGhhdCBhcmUgdG9vIHNtYWxs
IHNob3VsZCBwcm9kdWNlIGVycm9ycy4iKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKworaWYgKCFnbCkgeworICAg
IHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7Cisg
ICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKK30KKworY29uc3QgcHJvZ0lu
dGVybGVhdmVkID0gd3R1LnNldHVwVHJhbnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFk
ZXIiLCAiZnNoYWRlciJdLAorICAgIFsib3V0X3ZhbHVlMSIsICJvdXRfdmFsdWUyIl0sIGdsLklO
VEVSTEVBVkVEX0FUVFJJQlMsCisgICAgWyJpbl92YWx1ZTEiLCAiaW5fdmFsdWUyIl0pOworY29u
c3QgcHJvZ1NlcGFyYXRlID0gd3R1LnNldHVwVHJhbnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBb
InZzaGFkZXIiLCAiZnNoYWRlciJdLAorICAgIFsib3V0X3ZhbHVlMSIsICJvdXRfdmFsdWUyIl0s
IGdsLlNFUEFSQVRFX0FUVFJJQlMsCisgICAgWyJpbl92YWx1ZTEiLCAiaW5fdmFsdWUyIl0pOwor
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJwcm9ncmFtIGNvbXBpbGF0aW9u
Iik7CisKKy8vIEF0dHJpYiAxIGNvbnRhaW5zIDQgdmVydGljZXMuIEF0dHJpYiAyIGNvbnRhaW5z
IDQgaW5zdGFuY2UgaW5kaWNlcy4KK2NvbnN0IHZlcnRleEJ1ZmZlcjAgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIwKTsKK2ds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsxLCAyLCAzLCA0
XSksIGdsLlNUQVRJQ19EUkFXKTsKK2NvbnN0IHZlcnRleEJ1ZmZlcjEgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIxKTsKK2ds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsxLCAyLCAzLCA0
XSksIGdsLlNUQVRJQ19EUkFXKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0
ZXhCdWZmZXIwKTsKK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCAxLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcjEpOworZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoMSk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDEsIGdsLkZMT0FULCBmYWxzZSwgMCwg
MCk7CitnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKDEsIDEpOworCitsZXQgdGZCdWZmZXIwID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CitsZXQgdGZCdWZmZXIxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2V0dXAiKTsKKworY29uc3Qgc2l6
ZU9mRmxvYXQgPSA0OworCitsZXQgY2FzZXMgPSBbCisgICAgeyBuYW1lOiAiZHJhd0FycmF5cyIs
CisgICAgICBkcmF3RnVuY3Rpb246ICgpPT5nbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgNCks
CisgICAgICByZXN1bHQ6IFtbMiwgNCwgNiwgOF0sIFsyLCAyLCAyLCAyXV19LAorICAgIHsgbmFt
ZTogImRyYXdBcnJheXNJbnN0YW5jZWQgb25lIGluc3RhbmNlIiwKKyAgICAgIGRyYXdGdW5jdGlv
bjogKCk9PmdsLmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuUE9JTlRTLCAwLCA0LCAxKSwKKyAgICAg
IHJlc3VsdDogW1syLCA0LCA2LCA4XSwgWzIsIDIsIDIsIDJdXX0sCisgICAgeyBuYW1lOiAiZHJh
d0FycmF5c0luc3RhbmNlZCBmb3VyIGluc3RhbmNlcyIsCisgICAgICBkcmF3RnVuY3Rpb246ICgp
PT5nbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlBPSU5UUywgMCwgMSwgNCksCisgICAgICByZXN1
bHQ6IFtbMiwgMiwgMiwgMl0sIFsyLCA0LCA2LCA4XV19LAorICBdOworCitmb3IgKGxldCB7bmFt
ZSwgZHJhd0Z1bmN0aW9uLCByZXN1bHR9IG9mIGNhc2VzKSB7CisgIGRlYnVnKCI8aDE+IiArIG5h
bWUgKyAiPC9oMT4iKQorCisgIGxldCBpbnRlcmxlYXZlZFJlc3VsdCA9IFtdOworICBmb3IgKGxl
dCBpID0gMDsgaSA8IHJlc3VsdFswXS5sZW5ndGg7IGkrKykgeworICAgIGludGVybGVhdmVkUmVz
dWx0LnB1c2gocmVzdWx0WzBdW2ldLCByZXN1bHRbMV1baV0pOworICB9CisKKyAgbGV0IGRvVHJh
bnNmb3JtRmVlZGJhY2sgPSAoZHJhd0Z1bmN0aW9uLCBlcnJvcikgPT4geworICAgIGdsLmJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2soZ2wuUE9JTlRTKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgImJlZm9yZSBkcmF3Iik7CisgICAgZHJhd0Z1bmN0aW9uKCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXJyb3IsICJkcmF3Iik7CisgICAgZ2wuZW5kVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgfQorCisgIGdsLnVzZVByb2dyYW0ocHJvZ0ludGVybGVhdmVkKTsK
KworICBkZWJ1ZygiPGgzPmludGVybGVhdmVkIC0gQmFzZWxpbmUgc3VjY2VzcyBjYXNlPC9oMz4i
KQorICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCB0
ZkJ1ZmZlcjApOworICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IDgqc2l6ZU9mRmxvYXQsIGdsLlNUUkVBTV9SRUFEKTsKKyAgZG9UcmFuc2Zvcm1GZWVkYmFjayhk
cmF3RnVuY3Rpb24sIGdsLk5PX0VSUk9SKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGludGVybGVhdmVkUmVzdWx0KTsKKworICBkZWJ1
ZygiPGgzPmludGVybGVhdmVkIC0gQnVmZmVyIHRvbyBzbWFsbDwvaDM+IikKKyAgZ2wuYnVmZmVy
RGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA4KnNpemVPZkZsb2F0LTEsIGdsLlNU
UkVBTV9SRUFEKTsKKyAgZG9UcmFuc2Zvcm1GZWVkYmFjayhkcmF3RnVuY3Rpb24sIGdsLklOVkFM
SURfT1BFUkFUSU9OKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIsCisgICAgICBbMCwgMCwgMCwgMCwgMCwgMCwgMF0pOworCisgIGRlYnVn
KCI8aDM+aW50ZXJsZWF2ZWQgLSBNdWx0aXBsZSBkcmF3cyBzdWNjZXNzIGNhc2U8L2gzPiIpCisg
IGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVm
ZmVyMCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgOCpz
aXplT2ZGbG9hdCoyLCBnbC5TVFJFQU1fUkVBRCk7CisgIGRvVHJhbnNmb3JtRmVlZGJhY2soKCk9
PntkcmF3RnVuY3Rpb24oKTsgZHJhd0Z1bmN0aW9uKCl9LCBnbC5OT19FUlJPUik7CisgIHd0dS5j
aGVja0Zsb2F0QnVmZmVyKGdsLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBpbnRlcmxl
YXZlZFJlc3VsdC5jb25jYXQoaW50ZXJsZWF2ZWRSZXN1bHQpKQorCisgIGRlYnVnKCI8aDM+aW50
ZXJsZWF2ZWQgLSBUb28gc21hbGwgZm9yIG11bHRpcGxlIGRyYXdzPC9oMz4iKQorICBnbC5iaW5k
QnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCB0ZkJ1ZmZlcjApOwor
ICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDgqc2l6ZU9mRmxv
YXQqMi0xLCBnbC5TVFJFQU1fUkVBRCk7CisgIGRvVHJhbnNmb3JtRmVlZGJhY2soKCk9PntkcmF3
RnVuY3Rpb24oKTsgZHJhd0Z1bmN0aW9uKCl9LCBnbC5JTlZBTElEX09QRVJBVElPTik7CisgIHd0
dS5jaGVja0Zsb2F0QnVmZmVyKGdsLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBpbnRl
cmxlYXZlZFJlc3VsdC5jb25jYXQoWzAsIDAsIDAsIDAsIDAsIDAsIDBdKSkKKworICBkZWJ1Zygi
PGgzPmludGVybGVhdmVkIC0gYmluZEJ1ZmZlclJhbmdlIHRvbyBzbWFsbDwvaDM+IikKKyAgZ2wu
YnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA4KnNpemVPZkZsb2F0LCBn
bC5TVFJFQU1fUkVBRCk7CisgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCAwLCB0ZkJ1ZmZlcjAsIDAsIDcqc2l6ZU9mRmxvYXQpOworICBkb1RyYW5zZm9y
bUZlZWRiYWNrKGRyYXdGdW5jdGlvbiwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICB3dHUuY2hl
Y2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwKKyAgICAgIFsw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSk7CisKKyAgZGVidWcoIjxoMz5pbnRlcmxlYXZlZCAtIGJp
bmRCdWZmZXJSYW5nZSBsYXJnZXIgdGhhbiBidWZmZXI8L2gzPiIpCisgIGdsLmJ1ZmZlckRhdGEo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgOCpzaXplT2ZGbG9hdC0xLCBnbC5TVFJFQU1f
UkVBRCk7CisgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCB0ZkJ1ZmZlcjAsIDAsIDgqc2l6ZU9mRmxvYXQpOworICBkb1RyYW5zZm9ybUZlZWRiYWNr
KGRyYXdGdW5jdGlvbiwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICB3dHUuY2hlY2tGbG9hdEJ1
ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwKKyAgICAgIFswLCAwLCAwLCAw
LCAwLCAwLCAwXSk7CisKKyAgZ2wudXNlUHJvZ3JhbShwcm9nU2VwYXJhdGUpOworCisgIGRlYnVn
KCI8aDM+c2VwYXJhdGUgLSBCYXNlbGluZSBzdWNjZXNzIGNhc2U8L2gzPiIpCisgIGdsLmJpbmRC
dWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMCk7Cisg
IGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNCpzaXplT2ZGbG9h
dCwgZ2wuU1RSRUFNX1JFQUQpOworICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCAxLCB0ZkJ1ZmZlcjEpOworICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIDQqc2l6ZU9mRmxvYXQsIGdsLlNUUkVBTV9SRUFEKTsKKyAgZG9U
cmFuc2Zvcm1GZWVkYmFjayhkcmF3RnVuY3Rpb24sIGdsLk5PX0VSUk9SKTsKKyAgZ2wuYmluZEJ1
ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCB0ZkJ1ZmZlcjApOworICB3dHUuY2hl
Y2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgcmVzdWx0WzBd
KTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCB0ZkJ1ZmZl
cjEpOworICB3dHUuY2hlY2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgcmVzdWx0WzFdKTsKKworICBkZWJ1ZygiPGgzPnNlcGFyYXRlIC0gQnVmZmVyIHRvbyBz
bWFsbDwvaDM+IikKKyAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgMCwgdGZCdWZmZXIwKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCA0KnNpemVPZkZsb2F0LCBnbC5TVFJFQU1fUkVBRCk7CisgIGdsLmJpbmRCdWZm
ZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDEsIHRmQnVmZmVyMSk7CisgIGds
LmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNCpzaXplT2ZGbG9hdC0x
LCBnbC5TVFJFQU1fUkVBRCk7CisgIGRvVHJhbnNmb3JtRmVlZGJhY2soZHJhd0Z1bmN0aW9uLCBn
bC5JTlZBTElEX09QRVJBVElPTik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgdGZCdWZmZXIwKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIFswLCAwLCAwLCAwXSk7CisgIGdsLmJpbmRCdWZmZXIo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIxKTsKKyAgd3R1LmNoZWNrRmxv
YXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIFswLCAwLCAwXSk7CisK
KyAgZGVidWcoIjxoMz5zZXBhcmF0ZSAtIG11bHRpcGxlIGRyYXdzIHN1Y2Nlc3MgY2FzZTwvaDM+
IikKKyAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwg
dGZCdWZmZXIwKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCA0KnNpemVPZkZsb2F0KjIsIGdsLlNUUkVBTV9SRUFEKTsKKyAgZ2wuYmluZEJ1ZmZlckJhc2Uo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMSwgdGZCdWZmZXIxKTsKKyAgZ2wuYnVmZmVy
RGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0KnNpemVPZkZsb2F0KjIsIGdsLlNU
UkVBTV9SRUFEKTsKKyAgZG9UcmFuc2Zvcm1GZWVkYmFjaygoKT0+e2RyYXdGdW5jdGlvbigpOyBk
cmF3RnVuY3Rpb24oKTt9LCBnbC5OT19FUlJPUik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIwKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIo
Z2wsIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHJlc3VsdFswXS5jb25jYXQocmVzdWx0
WzBdKSk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZC
dWZmZXIxKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIHJlc3VsdFsxXS5jb25jYXQocmVzdWx0WzFdKSk7CisKKyAgZGVidWcoIjxoMz5z
ZXBhcmF0ZSAtIFRvbyBzbWFsbCBmb3IgbXVsdGlwbGUgZHJhd3M8L2gzPiIpCisgIGdsLmJpbmRC
dWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMCk7Cisg
IGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNCpzaXplT2ZGbG9h
dCoyLCBnbC5TVFJFQU1fUkVBRCk7CisgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIsIDEsIHRmQnVmZmVyMSk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwgNCpzaXplT2ZGbG9hdCoyLTEsIGdsLlNUUkVBTV9SRUFEKTsK
KyAgZG9UcmFuc2Zvcm1GZWVkYmFjaygoKT0+e2RyYXdGdW5jdGlvbigpOyBkcmF3RnVuY3Rpb24o
KTt9LCBnbC5JTlZBTElEX09QRVJBVElPTik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIwKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2ws
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHJlc3VsdFswXS5jb25jYXQoWzAsIDAsIDAs
IDBdKSk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZC
dWZmZXIxKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIHJlc3VsdFsxXS5jb25jYXQoWzAsIDAsIDBdKSk7CisKKyAgZGVidWcoIjxoMz5z
ZXBhcmF0ZSAtIGJpbmRCdWZmZXJSYW5nZSB0b28gc21hbGw8L2gzPiIpCisgIGdsLmJpbmRCdWZm
ZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMCk7CisgIGds
LmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNCpzaXplT2ZGbG9hdCwg
Z2wuU1RSRUFNX1JFQUQpOworICBnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgMSwgdGZCdWZmZXIxLCAwLCAzKnNpemVPZkZsb2F0KTsKKyAgZ2wuYnVmZmVy
RGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0KnNpemVPZkZsb2F0LCBnbC5TVFJF
QU1fUkVBRCk7CisgIGRvVHJhbnNmb3JtRmVlZGJhY2soZHJhd0Z1bmN0aW9uLCBnbC5JTlZBTElE
X09QRVJBVElPTik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgdGZCdWZmZXIwKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIsIFswLCAwLCAwLCAwXSk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwgdGZCdWZmZXIxKTsKKyAgd3R1LmNoZWNrRmxvYXRCdWZmZXIo
Z2wsIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIFswLCAwLCAwXSk7CisKKyAgZGVidWco
IjxoMz5zZXBhcmF0ZSAtIGJpbmRCdWZmZXJSYW5nZSBsYXJnZXIgdGhhbiBidWZmZXI8L2gzPiIp
CisgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRm
QnVmZmVyMCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwg
NCpzaXplT2ZGbG9hdCwgZ2wuU1RSRUFNX1JFQUQpOworICBnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMSwgdGZCdWZmZXIxLCAwLCA0KnNpemVPZkZsb2F0
KTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0KnNpemVP
ZkZsb2F0LTEsIGdsLlNUUkVBTV9SRUFEKTsKKyAgZG9UcmFuc2Zvcm1GZWVkYmFjayhkcmF3RnVu
Y3Rpb24sIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSLCB0ZkJ1ZmZlcjApOworICB3dHUuY2hlY2tGbG9hdEJ1ZmZlcihn
bCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgWzAsIDAsIDAsIDBdKTsKKyAgZ2wuYmlu
ZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCB0ZkJ1ZmZlcjEpOworICB3dHUu
Y2hlY2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgWzAsIDAs
IDBdKTsKK30KKworZGVidWcoIjxoMT5pbnRlZ2VyIG92ZXJmbG93PC9oMT4iKQorCitnbC51c2VQ
cm9ncmFtKHByb2dJbnRlcmxlYXZlZCk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGV4QnVmZmVyMCk7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgKDE8PDE2KSpz
aXplT2ZGbG9hdCwgZ2wuU1RSRUFNX1JFQUQpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIHZlcnRleEJ1ZmZlcjEpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsICgxPDwx
Nikqc2l6ZU9mRmxvYXQsIGdsLlNUUkVBTV9SRUFEKTsKK2dsLmJpbmRCdWZmZXJCYXNlKGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHRmQnVmZmVyMCk7CitnbC5idWZmZXJEYXRhKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsICgxPDwxNikqc2l6ZU9mRmxvYXQqMiwgZ2wuU1RS
RUFNX1JFQUQpOworCitnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImJlZm9yZSBkcmF3Iik7CisvLyBJZiBj
b3VudCBhbmQgcHJpbWNvdW50IGFyZSBzdG9yZWQgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2VycyBh
bmQgdGhlbgorLy8gbXVsdGlwbGllZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB0cmFuc2Zv
cm0gZmVlZGJhY2sgdmVydGljZXMsIHRoZQorLy8gY2FsY3VsYXRpb24gd2lsbCBvdmVyZmxvdyB0
byAwLgorZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5QT0lOVFMsIDAsIDE8PDE2LCAxPDwxNik7
Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludGVnZXIg
b3ZlcmZsb3cgYW5kL29yIGJ1ZmZlciB0b28gc21hbGwiKTsKK2dsLmVuZFRyYW5zZm9ybUZlZWRi
YWNrKCk7CisKK2ZpbmlzaFRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHJhbnNmb3JtX2ZlZWRiYWNrLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3RyYW5zZm9ybV9mZWVkYmFjay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzZTM2OTQ1MjA3N2Q4ZDU3MDVhNDY0ZTViOGY5N2UzMzc5YmZmYjYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3RyYW5zZm9ybV9mZWVkYmFjay5odG1sCkBAIC0wLDAg
KzEsNTgzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKKworaW4gdmVjNCBpbl9kYXRhOworb3V0
IHZlYzQgb3V0X2FkZDsKK291dCB2ZWM0IG91dF9tdWw7Cit2b2lkIG1haW4odm9pZCkgeworICAg
IG91dF9hZGQgPSBpbl9kYXRhICsgdmVjNCgyLjAsIDMuMCwgNC4wLCA1LjApOworICAgIG91dF9t
dWwgPSBpbl9kYXRhICogdmVjNCgyLjAsIDMuMCwgNC4wLCA1LjApOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAz
MDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Oworb3V0IHZlYzQgb3V0X2NvbG9yOwordm9p
ZCBtYWluKHZvaWQpIHsKKyAgICBvdXRfY29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7
Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBUcmFuc2Zvcm0gRmVlZGJh
Y2sgb2JqZWN0cy4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOwordmFyIHRmID0gbnVsbDsK
K3ZhciB0ZjEgPSBudWxsOwordmFyIGJ1ZiA9IG51bGw7CitsZXQgb3V0X2FkZF9idWZmZXIgPSBu
dWxsOwordmFyIHByb2dyYW0gPSBudWxsOwordmFyIGFjdGl2ZUluZm8gPSBudWxsOwordmFyIHF1
ZXJ5ID0gbnVsbDsKK3ZhciBudW1iZXJPZlF1ZXJ5Q29tcGxldGlvbkF0dGVtcHRzID0gMDsKKwor
aWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKwor
ICAgIHJ1bkJpbmRpbmdUZXN0KCk7CisgICAgcnVuVEZCdWZmZXJCaW5kaW5nVGVzdCgpOworICAg
IHJ1bk9iamVjdFRlc3QoKTsKKyAgICBydW5HZXRCdWZmZXJTdWJEYXRhVGVzdCgpOworICAgIHJ1
blVuYm91bmREZWxldGVUZXN0KCk7CisgICAgcnVuQm91bmREZWxldGVUZXN0KCk7CisgICAgcnVu
T25lT3V0cHV0RmVlZGJhY2tUZXN0KCk7CisgICAgLy8gTXVzdCBiZSB0aGUgbGFzdCB0ZXN0LCBz
aW5jZSBpdCdzIGFzeW5jaHJvbm91cyBhbmQgY2FsbHMgZmluaXNoVGVzdCgpLgorICAgIHJ1blR3
b091dHB1dEZlZWRiYWNrVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5CaW5kaW5nVGVzdCgpIHsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgYmluZGluZyBlbnVtIik7CisKKyAg
ICBzaG91bGRCZSgiZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkciLCAiMHg4RTI1Iik7CisK
KyAgICBnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkcpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVFJBTlNGT1JNX0ZFRURCQUNL
X0JJTkRJTkcgcXVlcnkgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIERlZmF1bHQgdmFsdWUg
aXMgbnVsbAorICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JJTkRJTkcpIiwgIm51bGwiKTsKKworICAgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgYSBU
cmFuc2Zvcm0gRmVlZGJhY2sgb2JqZWN0Iik7CisgICAgdGYgPSBnbC5jcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjaygpOworICAgIHRmMSA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAg
c2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJ
TkcpIik7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFD
SywgdGYpOworICAgIHNob3VsZEJlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JJTkRJTkcpIiwgInRmIik7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRS
QU5TRk9STV9GRUVEQkFDSywgdGYxKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HKSIsICJ0ZjEiKTsKKyAgICBnbC5kZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayh0Zik7CisgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGYxKTsK
KyAgICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QklORElORykiKTsKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLLCB0ZjEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiYmluZGluZyBhIGRlbGV0ZWQgVHJhbnNmb3JtIEZlZWRiYWNrIG9iamVjdCIpOwor
ICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwp
OworICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CSU5ESU5HKSIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
dGhlcmUgc2hvdWxkIGJlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBydW5URkJ1ZmZlckJp
bmRpbmdUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBiaW5kaW5n
IGFuZCB1bmJpbmRpbmcgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdHMgYW5kIGJ1ZmZlcnMiKTsK
KworICAgIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDE2LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBudWxsKTsKKworICAgIHRmID0gZ2wu
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2so
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmKTsKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVl
ZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBudWxsKTsKKworICAgIC8vIGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIgaXMgcGFydCBvZiBUcmFuc2Zvcm0gRmVlZGJhY2sgb2JqZWN0cycK
KyAgICAvLyBzdGF0ZS4gU2VlIE9wZW5HTCBFUyAzLjAuNSBTZWN0aW9uIDYuMjQuCisgICAgLy8K
KyAgICAvLyBTaW5jZSB0aGUgVFJBTlNGT1JNX0ZFRURCQUNLIHdhcyBqdXN0IHVuYm91bmQsIHRo
ZXJlIHNob3VsZCBiZSBub3RoaW5nCisgICAgLy8gYm91bmQuCisgICAgc2hvdWxkQmVOdWxsKCdn
bC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElO
RywgMCknKTsKKworICAgIC8vIEJpbmRpbmcgdGhlIGJ1ZmZlciB0byB0aGUgQVJSQVlfQlVGRkVS
IGJpbmRpbmcgcG9pbnQgc2hvdWxkIHN1Y2NlZWQuCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGJ1Zik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJiaW5kaW5nIGJ1ZmZlciB0byBBUlJBWV9CVUZGRVIiKTsKKworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTsKKyAgICBi
dWYgPSBudWxsOworICAgIGdsLmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHRmKTsKKyAgICB0ZiA9
IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJ1bk9iamVjdFRlc3QoKSB7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJUZXN0aW5nIG9iamVjdCBjcmVhdGlvbiIpOworCisgICAgdGYgPSBnbC5jcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2sgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3Ii
KTsKKyAgICBzaG91bGRCZU5vbk51bGwoInRmIik7CisKKyAgICAvLyBFeHBlY3QgZmFsc2UgaWYg
bmV2ZXIgYm91bmQKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc1RyYW5zZm9ybUZlZWRiYWNrKHRm
KSIpOworICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ss
IHRmKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzVHJhbnNmb3JtRmVlZGJhY2sodGYpIik7Cisg
ICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgbnVsbCk7
CisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc1RyYW5zZm9ybUZlZWRiYWNrKHRmKSIpOworICAgIGds
LmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHRmKTsKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc1Ry
YW5zZm9ybUZlZWRiYWNrKHRmKSIpOworCisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNUcmFuc2Zv
cm1GZWVkYmFjayhudWxsKSIpOworCisgICAgdGYgPSBudWxsOworfQorCitmdW5jdGlvbiBydW5P
bmVPdXRwdXRGZWVkYmFja1Rlc3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0
aW5nIG9uZS1vdXRwdXQgdHJhbnNmb3JtIGZlZWRiYWNrIik7CisKKyAgICAvLyBCdWlsZCB0aGUg
aW5wdXQgYW5kIG91dHB1dCBidWZmZXJzCisgICAgdmFyIGluX2RhdGEgPSBbCisgICAgICAgIDEu
MCwgMi4wLCAzLjAsIDQuMCwKKyAgICAgICAgMi4wLCA0LjAsIDguMCwgMTYuMCwKKyAgICAgICAg
MC43NSwgMC41LCAwLjI1LCAwLjAKKyAgICBdOworCisgICAgdmFyIGluX2J1ZmZlciA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbl9idWZm
ZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5
KGluX2RhdGEpLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICBvdXRfYWRkX2J1ZmZlciA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgb3V0X2FkZF9idWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UICogaW5fZGF0YS5s
ZW5ndGgsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGZl
ZWRiYWNrIHNoYWRlcgorICAgIHByb2dyYW0gPSB3dHUuc2V0dXBUcmFuc2Zvcm1GZWVkYmFja1By
b2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sCisgICAgICAgIFsib3V0X2FkZCJdLCBn
bC5TRVBBUkFURV9BVFRSSUJTLAorICAgICAgICBbImluX2RhdGEiXSk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJsaW5raW5nIHRyYW5zZm9ybSBmZWVkYmFjayBz
aGFkZXIgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3IiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoInBy
b2dyYW0iKTsKKworICAgIC8vIERyYXcgdGhlIHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVy
cworICAgIHRmID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIGdsLmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCBpbl9idWZmZXIpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQs
IGZhbHNlLCAxNiwgMCk7CisKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLLCB0Zik7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgMCwgb3V0X2FkZF9idWZmZXIpOworCisgICAgZ2wuZW5hYmxlKGdsLlJB
U1RFUklaRVJfRElTQ0FSRCk7CisgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5QT0lO
VFMpOworCisgICAgZGVidWcoIlRlc3RpbmcgZGVsZXRpbmcgYW4gYWN0aXZlIHRyYW5zZm9ybSBm
ZWVkYmFjayBvYmplY3QiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInNob3VsZCBiZSBubyBlcnJvcnMgYmVmb3JlIHRlc3RpbmcgZGVsZXRpb24iKTsKKyAgICBn
bC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0Zik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJEZWxldGluZyB0aGUgdHJhbnNmb3JtIGZlZWRiYWNr
IHdoaWxlIGFjdGl2ZSBzaG91bGQgZmFpbCwgYW5kIGhhdmUgbm8gZWZmZWN0Iik7CisgICAgc2hv
dWxkQmUoImdsLmlzVHJhbnNmb3JtRmVlZGJhY2sodGYpIiwgInRydWUiKTsKKyAgICBkZWJ1Zygi
UmVzdW1pbmcgdGVzdGluZyBvZiBzaW5nbGUtb3V0cHV0IHRyYW5zZm9ybSBmZWVkYmFjayIpOwor
CisgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDMpOworCisgICAgZ2wuZW5kVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICBnbC5kaXNhYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisK
KyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBu
dWxsKTsKKworICAgIC8vIFZlcmlmeSB0aGUgb3V0cHV0IGJ1ZmZlciBjb250ZW50cworICAgIHZh
ciBhZGRfZXhwZWN0ZWQgPSBbCisgICAgICAgIDMuMCwgNS4wLCA3LjAsIDkuMCwKKyAgICAgICAg
NC4wLCA3LjAsIDEyLjAsIDIxLjAsCisgICAgICAgIDIuNzUsIDMuNSwgNC4yNSwgNS4wCisgICAg
XTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dF9h
ZGRfYnVmZmVyKTsKKyAgICB3dHUuY2hlY2tGbG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgYWRkX2V4cGVjdGVkKTsKKworICAgIGdsLmRlbGV0ZUJ1ZmZlcihpbl9i
dWZmZXIpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihvdXRfYWRkX2J1ZmZlcik7CisgICAgZ2wuZGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0Zik7
CisKKyAgICB0ZiA9IG51bGw7CisgICAgcHJvZ3JhbSA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJ1
blR3b091dHB1dEZlZWRiYWNrVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRl
c3RpbmcgdHdvLW91dHB1dCB0cmFuc2Zvcm0gZmVlZGJhY2siKTsKKworICAgIC8vIEJ1aWxkIHRo
ZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMKKyAgICB2YXIgaW5fZGF0YSA9IFsKKyAgICAgICAg
MS4wLCAyLjAsIDMuMCwgNC4wLAorICAgICAgICAyLjAsIDQuMCwgOC4wLCAxNi4wLAorICAgICAg
ICAwLjc1LCAwLjUsIDAuMjUsIDAuMAorICAgIF07CisKKyAgICB2YXIgaW5fYnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGluX2J1
ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJy
YXkoaW5fZGF0YSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIG91dF9hZGRfYnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCBvdXRfYWRkX2J1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBpbl9kYXRh
Lmxlbmd0aCwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgdmFyIG91dF9tdWxfYnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCBvdXRfbXVsX2J1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBpbl9kYXRh
Lmxlbmd0aCwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0g
ZmVlZGJhY2sgc2hhZGVyCisgICAgcHJvZ3JhbSA9IHd0dS5zZXR1cFRyYW5zZm9ybUZlZWRiYWNr
UHJvZ3JhbShnbCwgWyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwKKyAgICAgICAgWyJvdXRfYWRkIiwg
Im91dF9tdWwiXSwgZ2wuU0VQQVJBVEVfQVRUUklCUywKKyAgICAgICAgWyJpbl9kYXRhIl0pOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibGlua2luZyB0cmFuc2Zv
cm0gZmVlZGJhY2sgc2hhZGVyIHNob3VsZCBub3Qgc2V0IGFuIGVycm9yIik7CisgICAgc2hvdWxk
QmVOb25OdWxsKCJwcm9ncmFtIik7CisKKyAgICAvLyBDcmVhdGUgYSBxdWVyeSBvYmplY3QgdG8g
Y2hlY2sgdGhlIG51bWJlciBvZiBwcmltaXRpdmVzIHdyaXR0ZW4KKyAgICBxdWVyeSA9IGdsLmNy
ZWF0ZVF1ZXJ5KCk7CisKKyAgICAvLyBEcmF3IHRoZSB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1
ZmZlcnMKKyAgICB0ZiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgaW5fYnVmZmVyKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLkZM
T0FULCBmYWxzZSwgMTYsIDApOworCisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRS
QU5TRk9STV9GRUVEQkFDSywgdGYpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIDAsIG91dF9hZGRfYnVmZmVyKTsKKyAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxLCBvdXRfbXVsX2J1ZmZlcik7CisK
KyAgICBnbC5lbmFibGUoZ2wuUkFTVEVSSVpFUl9ESVNDQVJEKTsKKyAgICBnbC5iZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7CisgICAgZ2wuYmVnaW5RdWVyeShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBxdWVyeSk7CisKKyAgICBnbC5kcmF3QXJyYXlz
KGdsLlBPSU5UUywgMCwgMyk7CisKKyAgICBnbC5lbmRRdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfUFJJTUlUSVZFU19XUklUVEVOKTsKKyAgICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgIGdsLmRpc2FibGUoZ2wuUkFTVEVSSVpFUl9ESVNDQVJEKTsKKworICAgIGdsLmJpbmRCdWZm
ZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG51bGwpOworICAgIGdsLmJp
bmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDEsIG51bGwpOworCisg
ICAgLy8gVmVyaWZ5IHRoZSBvdXRwdXQgYnVmZmVyIGNvbnRlbnRzCisgICAgdmFyIGFkZF9leHBl
Y3RlZCA9IFsKKyAgICAgICAgMy4wLCA1LjAsIDcuMCwgOS4wLAorICAgICAgICA0LjAsIDcuMCwg
MTIuMCwgMjEuMCwKKyAgICAgICAgMi43NSwgMy41LCA0LjI1LCA1LjAKKyAgICBdOworICAgIGds
LmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgb3V0X2FkZF9idWZmZXIp
OworICAgIHd0dS5jaGVja0Zsb2F0QnVmZmVyKGdsLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSLCBhZGRfZXhwZWN0ZWQpOworCisgICAgdmFyIG11bF9leHBlY3RlZCA9IFsKKyAgICAgICAg
Mi4wLCA2LjAsIDEyLjAsIDIwLjAsCisgICAgICAgIDQuMCwgMTIuMCwgMzIuMCwgODAuMCwKKyAg
ICAgICAgMS41LCAxLjUsIDEuMCwgMC4wCisgICAgXTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dF9tdWxfYnVmZmVyKTsKKyAgICB3dHUuY2hlY2tG
bG9hdEJ1ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbXVsX2V4cGVjdGVk
KTsKKworICAgIGdsLmRlbGV0ZUJ1ZmZlcihpbl9idWZmZXIpOworICAgIGdsLmRlbGV0ZUJ1ZmZl
cihvdXRfYWRkX2J1ZmZlcik7CisgICAgZ2wuZGVsZXRlQnVmZmVyKG91dF9tdWxfYnVmZmVyKTsK
KyAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsLmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKHRmKTsKKworICAgIHRmID0gbnVsbDsKKyAgICBwcm9ncmFtID0gbnVsbDsKKworICAg
IC8vIENoZWNrIHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5LiBJdCBzaG91bGQgbm90IGJlIGF2YWls
YWJsZSB5ZXQuCisgICAgLy8gVGhpcyBjb25zdGFudCB3YXMgY2hvc2VuIGFyYml0cmFyaWx5IHRv
IHRha2UgYXJvdW5kIDEgc2Vjb25kIG9uCisgICAgLy8gb25lIFdlYkdMIGltcGxlbWVudGF0aW9u
IG9uIG9uZSBkZXNrdG9wIG9wZXJhdGluZyBzeXN0ZW0uIChCdXN5LQorICAgIC8vIGxvb3BzIGJh
c2VkIG9uIGNhbGxpbmcgRGF0ZS5ub3coKSBoYXZlIGJlZW4gZm91bmQgdW5yZWxpYWJsZS4pCisg
ICAgdmFyIG51bUVhcmx5VGVzdHMgPSA1MDAwMDsKKyAgICB3aGlsZSAoLS1udW1FYXJseVRlc3Rz
ID4gMCkgeworICAgICAgICBnbC5maW5pc2goKTsKKyAgICAgICAgaWYgKGdsLmdldFF1ZXJ5UGFy
YW1ldGVyKHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKSkgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUXVlcnkncyByZXN1bHQgYmVjYW1lIGF2YWlsYWJsZSB0b28gZWFybHkiKTsK
KyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJUUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19X
UklUVEVOIHF1ZXJ5J3MgcmVzdWx0IGRpZG4ndCBiZWNvbWUgYXZhaWxhYmxlIHRvbyBlYXJseSIp
OworCisgICAgLy8gQ29tcGxldGUgdGhlIHJlc3Qgb2YgdGhlIHRlc3QgYXN5bmNocm9ub3VzbHku
CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNvbXBsZXRlVHJhbnNmb3JtRmVlZGJhY2tRdWVy
eVRlc3QpOworfQorCitmdW5jdGlvbiBydW5VbmJvdW5kRGVsZXRlVGVzdCgpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZGVsZXRpbmcgYnVmZmVycyBhdHRhY2hlZCB0byBh
biB1bmJvdW5kIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QiKTsKKworICAgIC8vIFRoZW9yZXRp
Y2FsbHkgaXQgd291bGQgYmUgcG9zc2libGUgdG8gdmVyaWZ5IHRoZSByZXN1bHQgb2YgcGVyZm9y
bWluZworICAgIC8vIHRyYW5zZm9ybSBmZWVkYmFjayBpbnRvIGEgZGVsZXRlZCBidWZmZXIgb2Jq
ZWN0LiBUaGUgYnVmZmVyIHdvdWxkIGhhdmUgdG8KKyAgICAvLyBiZSBsYXRjaGVkIGludG8gYSBW
QU8gYXMgd2VsbCBhcyBpbnRvIHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0LiBJbgorICAg
IC8vIG9yZGVyIHRvIGdldCB0aGUgcmVzdWx0cyBvdXQgb2YgdGhlIG91dHB1dCBidWZmZXIsIGl0
IHdvdWxkIGJlIG5lY2Vzc2FyeQorICAgIC8vIHRvIHJ1biB0cmFuc2Zvcm0gZmVlZGJhY2sgYWdh
aW4sIHJlYWRpbmcgZnJvbSB0aGUgYnVmZmVyIGJvdW5kIHRvIHRoZQorICAgIC8vIFZBTywgYW5k
IHdyaXRpbmcgaW50byBhIChub24tZGVsZXRlZCkgYnVmZmVyIG9iamVjdCBsYXRjaGVkIGludG8g
dGhlCisgICAgLy8gdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdC4gSXQncyBub3QgcG9zc2libGUg
dG8gYXJyYW5nZSB0aGluZ3MgdG8gYmUgYWJsZQorICAgIC8vIHRvIGNvcHlCdWZmZXJTdWJEYXRh
IGZyb20gdGhlIGRlbGV0ZWQgYnVmZmVyIG9iamVjdCBpbnRvIGEgdGVtcG9yYXJ5IG9uZQorICAg
IC8vIGZvciByZWFkYmFjay4KKworICAgIC8vIFRoaXMgd291bGQgYmUgYSBsb3Qgb2YgY29kZSB0
byB0ZXN0IGFuIHVubGlrZWx5IGNvcm5lciBjYXNlLCBzbyBpbnN0ZWFkLAorICAgIC8vIHRoaXMg
dGVzdCB2ZXJpZmllcyBzaW1wbGVyIGJlaGF2aW9ycy4KKworICAgIG91dF9hZGRfYnVmZmVyID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgY29uc3Qgb3V0cHV0X2J1ZmZlcl9sZW5ndGggPSBGbG9h
dDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxNjsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dF9hZGRfYnVmZmVyKTsKKyAgICBnbC5idWZmZXJE
YXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dHB1dF9idWZmZXJfbGVuZ3RoLCBn
bC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBTZXQgdXAgdGhlIHRyYW5zZm9ybSBmZWVkYmFjayBv
YmplY3QKKyAgICB0ZiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgZ2wuYmlu
ZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworICAgIGdsLmJp
bmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG91dF9hZGRfYnVm
ZmVyKTsKKworICAgIC8vIFVuYmluZCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIGRlbGV0ZSBvdXRf
YWRkX2J1ZmZlci4KKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLLCBudWxsKTsKKyAgICBnbC5kZWxldGVCdWZmZXIob3V0X2FkZF9idWZmZXIpOworICAg
IGRlYnVnKCJpc0J1ZmZlciBzaG91bGQgcmVwb3J0IGZhbHNlIGFmdGVyIGRlbGV0aW9uIik7Cisg
ICAgc2hvdWxkQmUoImdsLmlzQnVmZmVyKG91dF9hZGRfYnVmZmVyKSIsICJmYWxzZSIpOworCisg
ICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOwor
ICAgIGRlYnVnKCJUcmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0IHNob3VsZCBrZWVwIG91dHB1dCBi
dWZmZXIgYWxpdmUiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsIDApIiwgIm91dF9hZGRfYnVmZmVyIik7
CisgICAgLy8gRGVsZXRpbmcgdGhlIGJ1ZmZlciBhZ2FpbiB3aGlsZSB0aGUgdHJhbnNmb3JtIGZl
ZWRiYWNrIGlzIGJvdW5kIHNob3VsZG4ndCB1bmJpbmQgaXQuCisgICAgZ2wuZGVsZXRlQnVmZmVy
KG91dF9hZGRfYnVmZmVyKTsKKyAgICBkZWJ1ZygiRGVsZXRpbmcgb3V0cHV0IGJ1ZmZlciBhZ2Fp
biBzaG91bGQgYmUgYSBuby1vcCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1l
dGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywgMCkiLCAib3V0X2FkZF9i
dWZmZXIiKTsKKworICAgIC8vIFRyeSB1bmJpbmRpbmcgYW5kIHJlYmluZGluZyB0aGUgdHJhbnNm
b3JtIGZlZWRiYWNrIG9iamVjdCBqdXN0CisgICAgLy8gdG8gbWFrZSBzdXJlIHRoYXQgaGFzIG5v
IGVmZmVjdCBvbiB0aGUgYXR0YWNoZWQgb3V0cHV0IGJ1ZmZlci4KKyAgICBnbC5iaW5kVHJhbnNm
b3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBudWxsKTsKKyAgICBnbC5iaW5kVHJh
bnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgZGVidWcoIlRy
YW5zZm9ybSBmZWVkYmFjayBvYmplY3Qgc2hvdWxkIHN0aWxsIGtlZXAgb3V0cHV0IGJ1ZmZlciBh
bGl2ZSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfQklORElORywgMCkiLCAib3V0X2FkZF9idWZmZXIiKTsKKworICAg
IGdsLmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHRmKTsKKworICAgIHRmID0gbnVsbDsKKyAgICBv
dXRfYWRkX2J1ZmZlciA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJ1bkJvdW5kRGVsZXRlVGVzdCgp
IHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZGVsZXRpbmcgYnVmZmVycyBh
dHRhY2hlZCB0byBhIGJvdW5kIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QiKTsKKworICAgIG91
dF9hZGRfYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgY29uc3Qgb3V0cHV0X2J1ZmZl
cl9sZW5ndGggPSBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiAxNjsKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dF9hZGRfYnVmZmVyKTsK
KyAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dHB1dF9i
dWZmZXJfbGVuZ3RoLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBTZXQgdXAgdGhlIHRyYW5z
Zm9ybSBmZWVkYmFjayBvYmplY3QKKyAgICB0ZiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCk7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywg
dGYpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IDAsIG91dF9hZGRfYnVmZmVyKTsKKworICAgIC8vIERlbGV0ZSB0aGUgb3V0cHV0IGJ1ZmZlcgor
ICAgIGdsLmRlbGV0ZUJ1ZmZlcihvdXRfYWRkX2J1ZmZlcik7CisKKyAgICBnbC5iaW5kVHJhbnNm
b3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgZGVidWcoIkJ1ZmZl
ciBzaG91bGQgaGF2ZSBiZWVuIHVuYm91bmQgZnJvbSBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNr
Iik7CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfQklORElORywgMCkiKTsKKworICAgIGdsLmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKHRmKTsKKworICAgIHRmID0gbnVsbDsKKyAgICBvdXRfYWRkX2J1ZmZlciA9IG51
bGw7Cit9CisKK3ZhciByZXRBcnJheTsKKworZnVuY3Rpb24gdmVyaWZ5R2V0QnVmZmVyU3ViRGF0
YShleHBlY3RlZCkgeworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGV4cGVjdGVk
LCAiZ2wuZ2V0QnVmZmVyU3ViRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBy
ZXRBcnJheSwgMCwgcmV0QXJyYXkubGVuZ3RoKSIpOworfQorCitmdW5jdGlvbiBydW5HZXRCdWZm
ZXJTdWJEYXRhVGVzdCgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgdGhhdCBn
ZXRCdWZmZXJTdWJEYXRhLi4uIik7CisKKyAgICAvLyBCdWlsZCB0aGUgaW5wdXQgYW5kIG91dHB1
dCBidWZmZXJzCisgICAgdmFyIGluX2RhdGEgPSBbCisgICAgICAgIDEuMCwgMi4wLCAzLjAsIDQu
MCwKKyAgICAgICAgMi4wLCA0LjAsIDguMCwgMTYuMCwKKyAgICAgICAgMC43NSwgMC41LCAwLjI1
LCAwLjAKKyAgICBdOworCisgICAgcmV0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGluX2RhdGEu
bGVuZ3RoKTsKKworICAgIHZhciBpbl9idWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5fYnVmZmVyKTsKKyAgICBnbC5idWZmZXJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShpbl9kYXRhKSwgZ2wuU1RBVElD
X0RSQVcpOworCisgICAgb3V0X2FkZF9idWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dF9hZGRfYnVmZmVy
KTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIEZsb2F0
MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIGluX2RhdGEubGVuZ3RoLCBnbC5TVEFUSUNfRFJB
Vyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBmZWVkYmFjayBzaGFkZXIKKyAgICBw
cm9ncmFtID0gd3R1LnNldHVwVHJhbnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFkZXIi
LCAiZnNoYWRlciJdLAorICAgICAgICBbIm91dF9hZGQiXSwgZ2wuU0VQQVJBVEVfQVRUUklCUywK
KyAgICAgICAgWyJpbl9kYXRhIl0pOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAibGlua2luZyB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hhZGVyIHNob3VsZCBub3Qgc2V0
IGFuIGVycm9yIik7CisgICAgc2hvdWxkQmVOb25OdWxsKCJwcm9ncmFtIik7CisKKyAgICAvLyBE
cmF3IHRoZSB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMKKyAgICB0ZiA9IGdsLmNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgw
KTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5fYnVmZmVyKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLkZMT0FULCBmYWxzZSwgMTYsIDApOworCisg
ICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgbnVsbCk7
CisKKyAgICBkZWJ1ZygiLi4uIHBhc3NlcyB3aGVuIGEgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVj
dCBpcyBub3QgYm91bmQiKTsKKyAgICB2ZXJpZnlHZXRCdWZmZXJTdWJEYXRhKGdsLk5PX0VSUk9S
KTsKKworICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ss
IHRmKTsKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBvdXRfYWRkX2J1ZmZlcik7CisKKyAgICBkZWJ1ZygiLi4uIHBhc3NlcyB3aGVuIGEgdHJh
bnNmb3JtIGZlZWRiYWNrIG9iamVjdCBpcyBib3VuZCBidXQgbm90IGFjdGl2ZSIpOworICAgIHZl
cmlmeUdldEJ1ZmZlclN1YkRhdGEoZ2wuTk9fRVJST1IpOworCisgICAgZ2wuZW5hYmxlKGdsLlJB
U1RFUklaRVJfRElTQ0FSRCk7CisgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5QT0lO
VFMpOworCisgICAgZGVidWcoIi4uLiBmYWlscyB3aGVuIGEgdHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdCBpcyBhY3RpdmUiKTsKKyAgICB2ZXJpZnlHZXRCdWZmZXJTdWJEYXRhKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKworICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAzKTsKKworICAg
IGdsLmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgZ2wuZGlzYWJsZShnbC5SQVNURVJJWkVS
X0RJU0NBUkQpOworCisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgMCwgbnVsbCk7CisKKyAgICAvLyBWZXJpZnkgdGhlIG91dHB1dCBidWZmZXIgY29u
dGVudHMKKyAgICB2YXIgYWRkX2V4cGVjdGVkID0gWworICAgICAgICAzLjAsIDUuMCwgNy4wLCA5
LjAsCisgICAgICAgIDQuMCwgNy4wLCAxMi4wLCAyMS4wLAorICAgICAgICAyLjc1LCAzLjUsIDQu
MjUsIDUuMAorICAgIF07CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCBvdXRfYWRkX2J1ZmZlcik7CisgICAgd3R1LmNoZWNrRmxvYXRCdWZmZXIoZ2wsIGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGFkZF9leHBlY3RlZCk7CisKKyAgICB0ZiA9IG51
bGw7CisgICAgcHJvZ3JhbSA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGNvbXBsZXRlVHJhbnNmb3Jt
RmVlZGJhY2tRdWVyeVRlc3QoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5n
IFRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4gcXVlcnkiKTsKKworICAgICsr
bnVtYmVyT2ZRdWVyeUNvbXBsZXRpb25BdHRlbXB0czsKKyAgICBpZiAobnVtYmVyT2ZRdWVyeUNv
bXBsZXRpb25BdHRlbXB0cyA+IDUwMCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJRdWVyeSBkaWRu
J3QgYmVjb21lIGF2YWlsYWJsZSBpbiBhIHJlYXNvbmFibGUgdGltZSIpOworICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWdsLmdldFF1ZXJ5
UGFyYW1ldGVyKHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKSkgeworICAgICAgICBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY29tcGxldGVUcmFuc2Zvcm1GZWVkYmFja1F1ZXJ5VGVzdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gZ2wuZ2V0UXVlcnlQ
YXJhbWV0ZXIocXVlcnksIGdsLlFVRVJZX1JFU1VMVCk7CisgICAgaWYgKHJlc3VsdCA9PSAzKSB7
CisgICAgICAgIHRlc3RQYXNzZWQoIlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRU
RU4gcXVlcnkgcmV0dXJuZWQgYSBjb3JyZWN0IHJlc3VsdCAoMykiKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKCJUUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVO
IHF1ZXJ5IHJldHVybmVkIGFuIGluY29ycmVjdCByZXN1bHQgIiArIHJlc3VsdCArICIgKGV4cGVj
dGVkIDMpIik7CisgICAgfQorCisgICAgcnVuVmFyeWluZ3NUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9nLCBpbmRleCwgdmFsaWQsIG5hbWUp
IHsKKyAgICBhY3RpdmVJbmZvID0gZ2wuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2cs
IGluZGV4KTsKKyAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsCisgICAgICAgICAgICAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHZh
bGlkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZy4iKTsKKyAgICAgICAgc2hvdWxkQmVOb25O
dWxsKCJhY3RpdmVJbmZvIik7CisgICAgICAgIHNob3VsZEJlKCJhY3RpdmVJbmZvLm5hbWUiLCAi
JyIgKyBuYW1lICsgIiciKTsKKyAgICAgICAgc2hvdWxkQmUoImFjdGl2ZUluZm8udHlwZSIsICJn
bC5GTE9BVF9WRUM0Iik7CisgICAgICAgIHNob3VsZEJlKCJhY3RpdmVJbmZvLnNpemUiLCAiMSIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsCisgICAgICAgICAgICAiU2hvdWxkIGJlIElOVkFMSURfVkFMVUUgd2hlbiBjYWxs
aW5nIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyB3aXRoIGFuIGludmFsaWQgaW5kZXguIik7
CisgICAgICAgIHNob3VsZEJlTnVsbCgiYWN0aXZlSW5mbyIpOworICAgIH0KK30KKworZnVuY3Rp
b24gcnVuVmFyeWluZ3NUZXN0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MiKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdHJh
bnNmb3JtIGZlZWRiYWNrIHNoYWRlci4gVGhpcyBpcyBleHBsaWNpdGx5IHJ1biBhZnRlciBydW5U
d29PdXRwdXRGZWVkYmFja1Rlc3QsCisgICAgLy8gYXMgcmUtbGlua2luZyB0aGUgc2hhZGVyIGhl
cmUgd2lsbCB0ZXN0IGJyb3dzZXIgY2FjaGluZy4KKyAgICBwcm9ncmFtID0gd3R1LnNldHVwVHJh
bnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRlciJdLAorICAgICAg
ICBbIm91dF9hZGQiLCAib3V0X211bCJdLCBnbC5TRVBBUkFURV9BVFRSSUJTLAorICAgICAgICBb
ImluX2RhdGEiXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJs
aW5raW5nIHRyYW5zZm9ybSBmZWVkYmFjayBzaGFkZXIgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3Ii
KTsKKyAgICBzaG91bGRCZU5vbk51bGwoInByb2dyYW0iKTsKKworICAgIC8vIENoZWNrIHRoZSB2
YXJ5aW5ncworICAgIHNob3VsZEJlKCJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGds
LlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUykiLCAiMiIpOworICAgIHZlcmlmeVRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAwLCB0cnVlLCAib3V0X2FkZCIpOworICAgIHZlcmlm
eVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAxLCB0cnVlLCAib3V0X211bCIpOwor
ICAgIHZlcmlmeVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAyLCBmYWxzZSk7CisK
KyAgICAvLyB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkgZG9lc24ndCB0YWtlIGVmZmVjdCB1
bnRpbCBhIHN1Y2Nlc3NmdWwgbGluay4KKyAgICBnbC50cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KHByb2dyYW0sIFsib3V0X211bCJdLCBnbC5TRVBBUkFURV9BVFRSSUJTKTsKKyAgICBzaG91bGRC
ZSgiZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
VkFSWUlOR1MpIiwgIjIiKTsKKyAgICB2ZXJpZnlUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJv
Z3JhbSwgMCwgdHJ1ZSwgIm91dF9hZGQiKTsKKyAgICB2ZXJpZnlUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcocHJvZ3JhbSwgMSwgdHJ1ZSwgIm91dF9tdWwiKTsKKyAgICB2ZXJpZnlUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgMiwgZmFsc2UpOworCisgICAgLy8gTm93IHJlbGluay4K
KyAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgImxpbmtpbmcgdHJhbnNmb3JtIGZlZWRiYWNrIHNoYWRlciBzaG91bGQg
bm90IHNldCBhbiBlcnJvciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1MpIiwg
IjEiKTsKKyAgICB2ZXJpZnlUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgMCwgdHJ1
ZSwgIm91dF9tdWwiKTsKKyAgICB2ZXJpZnlUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3Jh
bSwgMSwgZmFsc2UpOworICAgIHZlcmlmeVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFt
LCAyLCBmYWxzZSk7CisKKyAgICAvLyBUZXN0IHJlY29tcGlsaW5nL3JlbGlua2luZyB0aGUgcHJv
Z3JhbQorICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2NyYnVnLmNvbS83MTYwMTgK
KyAgICB2YXIgc2tpcENvbXBpbGVTdGF0dXMgPSB0cnVlOworICAgIHByb2dyYW0gPSB3dHUuc2V0
dXBUcmFuc2Zvcm1GZWVkYmFja1Byb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sCisg
ICAgICAgIFsib3V0X2FkZCIsICJvdXRfbXVsIl0sIGdsLlNFUEFSQVRFX0FUVFJJQlMsCisgICAg
ICAgIFsiaW5fZGF0YSJdLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc2tpcENvbXBpbGVTdGF0dXMp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibGlua2luZyB0cmFu
c2Zvcm0gZmVlZGJhY2sgc2hhZGVyIHNob3VsZCBub3Qgc2V0IGFuIGVycm9yIik7CisgICAgc2hv
dWxkQmVUcnVlKCJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RBVFVT
KSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLlRS
QU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUykiLCAiMiIpOworICAgIHZlcmlmeVRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAwLCB0cnVlLCAib3V0X2FkZCIpOworICAgIHZlcmlmeVRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAxLCB0cnVlLCAib3V0X211bCIpOworICAg
IHZlcmlmeVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCAyLCBmYWxzZSk7CisKKyAg
ICBmaW5pc2hUZXN0KCk7Cit9CisKK2RlYnVnKCIiKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVyZW5jZWQt
dmFyeWluZ3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5
aW5ncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNzNmZDM1YWVkYTgxYzg4YTQxNzRlYmUwYmM0ODdjN2Rh
ZTJkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVy
ZW5jZWQtdmFyeWluZ3MuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRi
YWNrIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBw
eDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCitpbiB2ZWMzIHBvc2l0aW9uOworb3V0IHZlYzMgb3V0QXR0cmliMTsKK291dCB2ZWMzIG91
dEF0dHJpYjI7Cit2b2lkIG1haW4oKQoreworICAgIG91dEF0dHJpYjEgPSBwb3NpdGlvbjsKKyAg
ICBvdXRBdHRyaWIyID0gcG9zaXRpb247CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9u
LCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK291
dCB2ZWM0IGNvbG9yOworaW4gdmVjMyBvdXRBdHRyaWIxOworaW4gdmVjMyBvdXRBdHRyaWIyOwor
dm9pZCBtYWluKCkKK3sKKyAgICBjb2xvciA9IHZlYzQoMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNvdmVycyBhbiBBTkdM
RSBidWcgd2l0aCB0d28gdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzLiBXaGVuIHRoZSB0d28g
YXJlIGRlY2xhcmVkLCBidXQgbm90IHJlZmVyZW5jZWQgaW4gdGhlIGZyYWdtZW50IHNoYWRlciwg
QU5HTEUgd291bGQgZmFpbCBjYXB0dXJlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2
YXIgcXVhZFZCOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0
IGV4aXN0cyIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRyYW5zZm9y
bSBmZWVkYmFjayB3aXRoIHR3byB1bnJlZmVyZW5jZWQgb3V0cHV0cyIpOworICAgIHJ1blRlc3Qo
KTsKK30KKworZnVuY3Rpb24gZ2V0UXVhZFZlcnRzKGRlcHRoKSB7CisgIHZhciBxdWFkVmVydHMg
PSBuZXcgRmxvYXQzMkFycmF5KDMgKiA2KTsKKyAgcXVhZFZlcnRzWzBdID0gLTEuMDsgcXVhZFZl
cnRzWzFdID0gICAxLjA7IHF1YWRWZXJ0c1syXSA9IGRlcHRoOworICBxdWFkVmVydHNbM10gPSAt
MS4wOyBxdWFkVmVydHNbNF0gPSAgLTEuMDsgcXVhZFZlcnRzWzVdID0gZGVwdGg7CisgIHF1YWRW
ZXJ0c1s2XSA9ICAxLjA7IHF1YWRWZXJ0c1s3XSA9ICAtMS4wOyBxdWFkVmVydHNbOF0gPSBkZXB0
aDsKKyAgcXVhZFZlcnRzWzldID0gLTEuMDsgcXVhZFZlcnRzWzEwXSA9ICAxLjA7IHF1YWRWZXJ0
c1sxMV0gPSBkZXB0aDsKKyAgcXVhZFZlcnRzWzEyXSA9IDEuMDsgcXVhZFZlcnRzWzEzXSA9IC0x
LjA7IHF1YWRWZXJ0c1sxNF0gPSBkZXB0aDsKKyAgcXVhZFZlcnRzWzE1XSA9IDEuMDsgcXVhZFZl
cnRzWzE2XSA9ICAxLjA7IHF1YWRWZXJ0c1sxN10gPSBkZXB0aDsKKyAgcmV0dXJuIHF1YWRWZXJ0
czsKK30KKworZnVuY3Rpb24gZHJhd1F1YWQoZGVwdGgpIHsKKyAgaWYgKCFxdWFkVkIpIHsKKyAg
ICBxdWFkVkIgPSBnbC5jcmVhdGVCdWZmZXIoKQorICB9CisKKyAgdmFyIHF1YWRWZXJ0cyA9IGdl
dFF1YWRWZXJ0cyhkZXB0aCk7CisKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHF1
YWRWQik7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBxdWFkVmVydHMsIGdsLlNU
QVRJQ19EUkFXKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZ2wu
RkFMU0UsIDAsIDApOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgewor
CisgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgcHJvZ3JhbQorICAgIHZhciBw
cm9ncmFtID0gd3R1LnNldHVwVHJhbnNmb3JtRmVlZGJhY2tQcm9ncmFtKGdsLCBbInZzaGFkZXIi
LCAiZnNoYWRlciJdLAorICAgICAgICBbIm91dEF0dHJpYjEiLCAib3V0QXR0cmliMiJdLCBnbC5J
TlRFUkxFQVZFRF9BVFRSSUJTLAorICAgICAgICBbInBvc2l0aW9uIl0pOworICAgIGlmICghcHJv
Z3JhbSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsIHRvIHNldCB1cCB0aGUgcHJvZ3JhbSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW5pdCB0cmFuc2Zvcm0gZmVlZGJh
Y2sgYnVmZmVycworICAgIHZhciBvdXRfYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRfYnVmZmVyKTsK
KyAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDMgKiAyICogNiwKKyAgICAgICAgICAgICAgICAgIGds
LlNUUkVBTV9EUkFXKTsKKworICAgIHZhciB0ZiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCk7CisKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
LCB0Zik7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgMCwgb3V0X2J1ZmZlcik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJJbml0IHRyYW5zZm9ybSBmZWVkYmFjayBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8g
RHJhdyB0aGUgcXVhZAorICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSkKKyAgICBnbC5iZWdpblRy
YW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQoMC41KTsKKyAgICBn
bC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAiRHJhdyB3aXRoIHRyYW5zZm9ybSBmZWVkYmFjayBzaG91bGQgc3VjY2VlZCIp
OworCisgICAgLy8gVmVyaWZ5IHRoZSBvdXRwdXQgYnVmZmVyIGNvbnRlbnRzCisgICAgdmFyIHF1
YWRWZXJ0cyA9IGdldFF1YWRWZXJ0cygwLjUpOworICAgIHZhciBleHBlY3RlZF9kYXRhID0gW107
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWFkVmVydHMubGVuZ3RoOyBpICs9IDMpIHsKKyAg
ICAgICAgZm9yICh2YXIgY291bnQgPSAwOyBjb3VudCA8IDI7IGNvdW50KyspIHsKKyAgICAgICAg
ICAgIGV4cGVjdGVkX2RhdGFbZXhwZWN0ZWRfZGF0YS5sZW5ndGhdID0gcXVhZFZlcnRzW2ldOwor
ICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YVtleHBlY3RlZF9kYXRhLmxlbmd0aF0gPSBxdWFkVmVy
dHNbaSsxXTsKKyAgICAgICAgICAgIGV4cGVjdGVkX2RhdGFbZXhwZWN0ZWRfZGF0YS5sZW5ndGhd
ID0gcXVhZFZlcnRzW2krMl07CisgICAgICAgIH0KKyAgICB9CisgICAgd3R1LmNoZWNrRmxvYXRC
dWZmZXIoZ2wsIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGV4cGVjdGVkX2RhdGEpOwor
fQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVu
LW91dHB1dC1kZWZhdWx0cy10by16ZXJvLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3Jp
dHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNWFiOWJhYjE4
NzkwNDQwYzI2ZWQzNTgwNGU0MTljODk4NDljNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNm
b3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby5odG1sCkBAIC0w
LDAgKzEsMTMzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+
CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52
YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQgaW5fZGF0YTsKK3Vu
aWZvcm0gaW50IGZsYWc7CitvdXQgdmVjNCBvdXRfZGF0YTsKK3ZvaWQgbWFpbih2b2lkKSB7Cisg
ICAgaWYgKGZsYWcgPiAwKSB7CisgICAgICAgIG91dF9kYXRhID0gaW5fZGF0YSArIHZlYzQoMi4w
LCAzLjAsIDQuMCwgNS4wKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZzaGFk
ZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CitvdXQgdmVjNCBvdXRfY29sb3I7Cit2b2lkIG1haW4odm9pZCkgewor
ICAgIG91dF9jb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKK30KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMg
aWYgYW4gb3V0cHV0IHZhcmlhYmxlIGlzIHNwZWNpZmllZCB0byBiZSBzdHJlYW1lZCB0byBhIHRy
YW5zZm9ybSBmZWVkYmFjayBidWZmZXIgYnV0IG5vdCBhY3R1YWxseSB3cml0dGVuLCB0aGUgdmFs
dWUgZGVmYXVsdHMgdG8gMC4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG51bGwsIDIpOworCitpZiAoIWds
KSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBl
bHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRyYW5zZm9ybSBmZWVkYmFjayB3b3JrcyBmaW5l
Iik7CisgICAgcnVuVGVzdCgxKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGlu
ZyB1bndyaXR0ZW4gb3V0cHV0IHZhcmlhYmxlcyBkZWZhdWx0IHRvIHplcm8iKTsKKyAgICBydW5U
ZXN0KDApOworfQorCitmdW5jdGlvbiBydW5UZXN0KGZsYWcpIHsKKyAgICB2YXIgaW5fZGF0YSA9
IFsKKyAgICAgICAgMS4wLCAyLjAsIDMuMCwgNC4wLAorICAgICAgICAyLjAsIDQuMCwgOC4wLCAx
Ni4wLAorICAgICAgICAwLjc1LCAwLjUsIDAuMjUsIDAuMAorICAgIF07CisKKyAgICB2YXIgaW5f
YnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIGluX2J1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoaW5fZGF0YSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIHZhciBvdXRf
YnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRfYnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAq
IGluX2RhdGEubGVuZ3RoLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRy
YW5zZm9ybSBmZWVkYmFjayBwcm9ncmFtCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUcmFu
c2Zvcm1GZWVkYmFja1Byb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sCisgICAgICAg
IFsib3V0X2RhdGEiXSwgZ2wuU0VQQVJBVEVfQVRUUklCUywKKyAgICAgICAgWyJpbl9kYXRhIl0p
OworICAgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZsYWciKTsK
KyAgICBpZiAoIXByb2dyYW0gfHwgIWxvYykgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsIHRv
IHNldCB1cCB0aGUgcHJvZ3JhbSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsLnVu
aWZvcm0xaShsb2MsIGZsYWcpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiU2V0IHVwIHByb2dyYW0gc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIERyYXcgdGhl
IHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVycworICAgIHZhciB0ZiA9IGdsLmNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsK
KyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5fYnVmZmVyKTsKKyAgICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLkZMT0FULCBmYWxzZSwgMTYsIDApOworCisgICAg
Z2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworICAg
IGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG91dF9i
dWZmZXIpOworCisgICAgZ2wuZW5hYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisgICAgZ2wu
YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5QT0lOVFMpOworCisgICAgZ2wuZHJhd0FycmF5cyhn
bC5QT0lOVFMsIDAsIDMpOworCisgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBn
bC5kaXNhYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisKKyAgICBnbC5iaW5kQnVmZmVyQmFz
ZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBudWxsKTsKKworICAgIC8vIFZlcmlm
eSB0aGUgb3V0cHV0IGJ1ZmZlciBjb250ZW50cworICAgIHZhciBleHBlY3RlZF9kYXRhOworICAg
IGlmIChmbGFnID4gMCkgeworICAgICAgICBleHBlY3RlZF9kYXRhID0gWworICAgICAgICAgICAg
My4wLCA1LjAsIDcuMCwgOS4wLAorICAgICAgICAgICAgNC4wLCA3LjAsIDEyLjAsIDIxLjAsCisg
ICAgICAgICAgICAyLjc1LCAzLjUsIDQuMjUsIDUuMAorICAgICAgICBdOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBbCisgICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAw
LjAsCisgICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAwLjAsCisgICAgICAgICAgICAwLjAsIDAu
MCwgMC4wLCAwLjAKKyAgICAgICAgXTsKKyAgICB9CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRfYnVmZmVyKTsKKyAgICB3dHUuY2hlY2tGbG9hdEJ1
ZmZlcihnbCwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgZXhwZWN0ZWRfZGF0YSk7Cit9
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3VuaWZvcm1zL2RlcGVuZGVudC1idWZmZXItY2hh
bmdlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZTIvdW5pZm9ybXMvZGVwZW5kZW50LWJ1ZmZlci1jaGFuZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ODgzMDVlNmQ2OGM2MzIyMmQzNWJhMGZmNzUxNmNmN2NjZGEzOGVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL3VuaWZvcm1zL2RlcGVuZGVudC1idWZmZXItY2hhbmdlLmh0bWwKQEAgLTAsMCAr
MSwxMjEgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPldlYkdMIGRyYXcgd2l0aCB1bmlmb3JtIGJsb2NrcyBjb25mb3JtYW5jZSB0ZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVy
c2lvbiAzMDAgZXMKK2luIHZlYzQgYV92ZXJ0ZXg7Cit2b2lkIG1haW4odm9pZCkgeworICBnbF9Q
b3NpdGlvbiA9IGFfdmVydGV4OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0
eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworbGF5b3V0IChzdGQxNDApIHVuaWZvcm0gY29sb3JfdWJvIHsKKyAgdmVjNCBj
b2xvcjsKK307CitvdXQgdmVjNCBmcmFnQ29sb3I7Cit2b2lkIG1haW4odm9pZCkgeworICBmcmFn
Q29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iMTAwIiwgaGVpZ2h0PSIxMDAiPjwvY2FudmFzPgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworZGVidWcoIiIpOworCisvLyBQb3J0ZWQgZnJvbTogaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9hbmdsZS9ibG9iL21hc3Rlci9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9y
bUJ1ZmZlclRlc3QuY3BwI0wxNTA3CitkZXNjcmlwdGlvbigiUmVncmVzc2lvbiB0ZXN0IGZvciBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD03OTI5
NjYiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNo
YWRlciddLCBbJ2FfdmVydGV4J10pOworICAgIHZhciB1Ym9JbmRleCA9IGdsLklOVkFMSURfSU5E
RVg7CisgICAgaWYgKHByb2dyYW0pCisgICAgICAgIHVib0luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJs
b2NrSW5kZXgocHJvZ3JhbSwgImNvbG9yX3VibyIpOworICAgIGlmICghcHJvZ3JhbSB8fCB1Ym9J
bmRleCA9PSBnbC5JTlZBTElEX0lOREVYKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkxvYWRpbmcg
cHJvZ3JhbSBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0UGFzc2Vk
KCJMb2FkaW5nIHByb2dyYW0gc3VjY2VlZGVkIik7CisKKyAgICB2YXIgdmVydGljZXMgPSBuZXcg
RmxvYXQzMkFycmF5KFsKKyAgICAgICAgLTEsIC0xLCAwLAorICAgICAgICAgMSwgLTEsIDAsCisg
ICAgICAgIC0xLCAgMSwgMCwKKyAgICAgICAgIDEsICAxLCAwCisgICAgXSk7CisgICAgdmFyIHZl
cnRleEJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0ZXhCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKKworICAgIHZhciBpbmRleEJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJp
bmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmKTsKKyAgICBnbC5idWZm
ZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgSW50MTZBcnJheShbIDAsIDEsIDIs
IDIsIDEsIDMgXSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIHZhciB1Ym9EYXRhU2l6ZSA9IGds
LmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcigKKyAgICAgICAgcHJvZ3JhbSwgdWJvSW5k
ZXgsIGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFKTsKKyAgICBpZiAodWJvRGF0YVNpemUgPT0g
MCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJ1bmlmb3JtIGJsb2NrIGRhdGEgc2l6ZSBpbnZhbGlk
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIk5vIGVycm9ycyBmcm9tIHNldHVwIik7CisKKyAgICBkZWJ1ZygiZHJh
dyBsb3dlciB0cmlhbmdsZSAtIHNob3VsZCBiZSByZWQiKTsKKyAgICB2YXIgdWJvQnVmMSA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVS
LCAwLCB1Ym9CdWYxKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCB1Ym9E
YXRhU2l6ZSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuVU5JRk9S
TV9CVUZGRVIsIDAsIG5ldyBGbG9hdDMyQXJyYXkoWyAxLCAwLCAwLCAxIF0pKTsKKyAgICBnbC51
bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVib0luZGV4LCAwKTsKKyAgICBnbC5kcmF3RWxl
bWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJObyBlcnJvcnMgZnJvbSBkcmF3Iik7CisK
KyAgICAvLyBSZXNpemUgdGhlIGJ1ZmZlciAtIHRyaWdnZXJzIGEgcmUtYWxsb2NhdGlvbiBpbiB0
aGUgRDNEMTEgYmFjay1lbmQuCisgICAgZGVidWcoImRyYXcgdXBwZXIgdHJpYW5nbGUgLSBzaG91
bGQgYmUgZ3JlZW4iKTsKKyAgICB2YXIgYmlnRGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoMTI4ICog
NCk7CisgICAgYmlnRGF0YS5zZXQoWyAwLCAxLCAwLCAxIF0pOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuVU5JRk9STV9CVUZGRVIsIGJpZ0RhdGEsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5kcmF3
RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9TSE9SVCwgNik7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJObyBlcnJvcnMgZnJvbSBkcmF3Iik7
CisKKyAgICB2YXIgd2lkdGggPSAxMDAsIGhlaWdodCA9IDEwMDsKKyAgICB3dHUuY2hlY2tDYW52
YXNSZWN0Q29sb3IoZ2wsIDAsIDAsIHdpZHRoLzItNSwgaGVpZ2h0LzItNSwgWzI1NSwgMCwgMCwg
MjU1XSwgMiwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRlc3RQYXNzZWQoImxvd2VyIGxlZnQgc2hv
dWxkIGJlIHJlZCIpOyB9LAorICAgICAgICBmdW5jdGlvbigpIHsgdGVzdEZhaWxlZCgibG93ZXIg
bGVmdCBzaG91bGQgYmUgcmVkIik7IH0pOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3RDb2xvcihn
bCwgd2lkdGgvMis1LCBoZWlnaHQvMis1LCB3aWR0aC8yLTUsIGhlaWdodC8yLTUsIFswLCAyNTUs
IDAsIDI1NV0sIDIsCisgICAgICAgIGZ1bmN0aW9uKCkgeyB0ZXN0UGFzc2VkKCJ0b3AgcmlnaHQg
c2hvdWxkIGJlIGdyZWVuIik7IH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeyB0ZXN0RmFpbGVkKCJ0
b3AgcmlnaHQgc2hvdWxkIGJlIGdyZWVuIik7IH0pOworfQorCitpZiAoIWdsKSB7CisgICAgdGVz
dEZhaWxlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQiKTsKK30gZWxzZSB7CisgICAg
dGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBjcmVhdGlvbiBzdWNjZWVkZWQiKTsKKyAgICBydW5U
ZXN0KCk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3VuaWZvcm1zL2RyYXctd2l0aC11
bmlmb3JtLWJsb2Nrcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL3VuaWZvcm1zL2RyYXctd2l0aC11bmlmb3JtLWJsb2Nrcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNmYTc5NDllYWMyMzFhYTM0YjkwZmRjMDMyZjM4ZWZlZjNiZDM5Y2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvZHJhdy13aXRoLXVuaWZvcm0tYmxvY2tzLmh0
bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGRyYXcgd2l0aCB1bmlmb3JtIGJsb2NrcyBjb25mb3Jt
YW5jZSB0ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
dmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQgYV92ZXJ0ZXg7Cit2b2lkIG1haW4odm9p
ZCkgeworICBnbF9Qb3NpdGlvbiA9IGFfdmVydGV4OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworbGF5b3V0IChzdGQxNDApIHVuaWZvcm0gY29sb3JfdWJv
IHsKKyAgdmVjNCBjb2xvcjsKK307CitvdXQgdmVjNCBmcmFnQ29sb3I7Cit2b2lkIG1haW4odm9p
ZCkgeworICBmcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMTAwIiwgaGVpZ2h0PSIxMDAiPjwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVidWcoIiIpOworZGVzY3JpcHRpb24oIlJlZ3Jl
c3Npb24gdGVzdCBmb3IgY3JidWcuY29tLzc5MzMwNyBhbmQgaHR0cHM6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNDI1OCIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVk
LCAyKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1
cFByb2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10sIFsnYV92ZXJ0ZXgnXSk7CisgICAg
dmFyIHVib0luZGV4ID0gZ2wuSU5WQUxJRF9JTkRFWDsKKyAgICBpZiAocHJvZ3JhbSkKKyAgICAg
ICAgdWJvSW5kZXggPSBnbC5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCAiY29sb3JfdWJv
Iik7CisgICAgaWYgKCFwcm9ncmFtIHx8IHVib0luZGV4ID09IGdsLklOVkFMSURfSU5ERVgpIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGluZyBwcm9ncmFtIGZhaWxlZCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHRlc3RQYXNzZWQoIkxvYWRpbmcgcHJvZ3JhbSBzdWNjZWVkZWQi
KTsKKworICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAtMSwg
LTEsIDAsCisgICAgICAgICAxLCAtMSwgMCwKKyAgICAgICAgLTEsICAxLCAwLAorICAgICAgICAg
MSwgIDEsIDAKKyAgICBdKTsKKyAgICB2YXIgdmVydGV4QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1Zik7CisgICAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7Cisg
ICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9p
bnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgdmFyIGluZGV4QnVmID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgaW5kZXhCdWYpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG5ldyBJbnQxNkFycmF5KFsgMCwgMSwgMiwgMiwgMSwgMyBdKSwgZ2wuU1RBVElDX0RSQVcp
OworCisgICAgdmFyIHVib0RhdGFTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1l
dGVyKAorICAgICAgICBwcm9ncmFtLCB1Ym9JbmRleCwgZ2wuVU5JRk9STV9CTE9DS19EQVRBX1NJ
WkUpOworICAgIGlmICh1Ym9EYXRhU2l6ZSA9PSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoInVu
aWZvcm0gYmxvY2sgZGF0YSBzaXplIGludmFsaWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gZXJyb3JzIGZy
b20gc2V0dXAiKTsKKworICAgIGRlYnVnKCJkcmF3IGxvd2VyIHRyaWFuZ2xlIC0gc2hvdWxkIGJl
IHJlZCIpOworICAgIHZhciB1Ym9CdWYxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIDAsIHVib0J1ZjEpOworICAgIGdsLmJ1ZmZl
ckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIHVib0RhdGFTaXplLCBnbC5TVEFUSUNfRFJBVyk7Cisg
ICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgMCwgbmV3IEZsb2F0MzJBcnJh
eShbIDEsIDAsIDAsIDEgXSkpOworICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwg
dWJvSW5kZXgsIDApOworICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVO
U0lHTkVEX1NIT1JULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgIk5vIGVycm9ycyBmcm9tIGRyYXciKTsKKworICAgIGRlYnVnKCJkcmF3IHVwcGVyIHRyaWFu
Z2xlIC0gc2hvdWxkIGJlIGdyZWVuIik7CisgICAgdmFyIHVib0J1ZjIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZFUiwgMSwgdWJvQnVm
Mik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgdWJvRGF0YVNpemUsIGds
LlNUQVRJQ19EUkFXKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCAw
LCBuZXcgRmxvYXQzMkFycmF5KFsgMCwgMSwgMCwgMSBdKSk7CisgICAgZ2wudW5pZm9ybUJsb2Nr
QmluZGluZyhwcm9ncmFtLCB1Ym9JbmRleCwgMSk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFUywgMywgZ2wuVU5TSUdORURfU0hPUlQsIDYpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAgdmFyIHdp
ZHRoID0gMTAwLCBoZWlnaHQgPSAxMDA7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdENvbG9yKGds
LCAwLCAwLCB3aWR0aC8yLTUsIGhlaWdodC8yLTUsIFsyNTUsIDAsIDAsIDI1NV0sIDIsCisgICAg
ICAgIGZ1bmN0aW9uKCkgeyB0ZXN0UGFzc2VkKCJsb3dlciBsZWZ0IHNob3VsZCBiZSByZWQiKTsg
fSwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRlc3RGYWlsZWQoImxvd2VyIGxlZnQgc2hvdWxkIGJl
IHJlZCIpOyB9KTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0Q29sb3IoZ2wsIHdpZHRoLzIrNSwg
aGVpZ2h0LzIrNSwgd2lkdGgvMi01LCBoZWlnaHQvMi01LCBbMCwgMjU1LCAwLCAyNTVdLCAyLAor
ICAgICAgICBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgidG9wIHJpZ2h0IHNob3VsZCBiZSBncmVl
biIpOyB9LAorICAgICAgICBmdW5jdGlvbigpIHsgdGVzdEZhaWxlZCgidG9wIHJpZ2h0IHNob3Vs
ZCBiZSBncmVlbiIpOyB9KTsKK30KKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdM
IGNvbnRleHQgY3JlYXRpb24gZmFpbGVkIik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldl
YkdMIGNvbnRleHQgY3JlYXRpb24gc3VjY2VlZGVkIik7CisgICAgcnVuVGVzdCgpOworfQorCitk
ZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi91bmlmb3Jtcy9pbmNvbXBhdGlibGUtdGV4dHVyZS10eXBl
LWZvci1zYW1wbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvaW5jb21wYXRpYmxlLXRleHR1cmUtdHlwZS1m
b3Itc2FtcGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwY2I1NDMxN2E5MjBlYTlhY2E2MmM1NGI3NTVk
MjdiYjU2MDg3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvaW5jb21wYXRpYmxlLXRl
eHR1cmUtdHlwZS1mb3Itc2FtcGxlci5odG1sCkBAIC0wLDAgKzEsMzM1IEBACis8IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB1bmlmb3Jt
IHNhbXBsZXJzIHdpdGggaW5jb21wYXRpYmxlIHRleHR1cmUgZm9ybWF0cyB0ZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAz
MDAgZXMKK2luIHZlYzQgYV92ZXJ0ZXg7Cit2b2lkIG1haW4odm9pZCkgeworICBnbF9Qb3NpdGlv
biA9IGFfdmVydGV4OworICBnbF9Qb2ludFNpemUgPSAxLjA7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjEwMCIsIGhlaWdodD0iMTAw
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2RlYnVnKCIiKTsKKworZGVzY3Jp
cHRpb24oIlRlc3QgdGhhdCB1c2luZyBhbiBpbmNvbXBhdGlibGUgdGV4dHVyZSB0eXBlIGdlbmVy
YXRlcyBJTlZBTElEX09QRVJBVElPTiBhdCBkcmF3IHRpbWUiKTsKKwordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVm
aW5lZCwgMik7CisKK2Z1bmN0aW9uIG1ha2VGcmFnbWVudFNoYWRlcihzYW1wbGVyVHlwZSwgdXZU
eXBlKSB7CisgICByZXR1cm4gYCN2ZXJzaW9uIDMwMCBlcworICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgICAgdW5pZm9ybSBtZWRpdW1wICR7c2FtcGxlclR5cGV9IHVfdGV4OworICAg
ICBvdXQgdmVjNCBjb2xvcjsKKyAgICAgdm9pZCBtYWluKCkgeworICAgICAgIGNvbG9yID0gdmVj
NCh0ZXh0dXJlKHVfdGV4LCAke3V2VHlwZX0pKTsKKyAgICAgfQorICAgYDsKK30KKworLy8gU2Ft
cGxlciB0eXBlcy4KK2NvbnN0IEZMT0FUID0gMTsKK2NvbnN0IFNJR05FRCA9IDI7Citjb25zdCBV
TlNJR05FRCA9IDM7Citjb25zdCBTSEFET1cgPSA0OworCitjb25zdCB0ZXh0dXJlSW50ZXJuYWxG
b3JtYXRJbmZvID0ge307Cit7CisgIGNvbnN0IHQgPSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZv
OworICAvLyB1bnNpemVkIGZvcm1hdHMKKyAgdFtnbC5BTFBIQV0gICAgICAgICAgICAgID0geyB0
ZXh0dXJlRm9ybWF0OiBnbC5BTFBIQSwgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAg
ZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxLCAyLCAyLCA0XSwgICAgICAgIHR5cGU6
IFtnbC5VTlNJR05FRF9CWVRFLCBnbC5IQUxGX0ZMT0FULCBnbC5IQUxGX0ZMT0FUX09FUywgZ2wu
RkxPQVRdLCB9OworICB0W2dsLkxVTUlOQU5DRV0gICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6
IGdsLkxVTUlOQU5DRSwgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2Us
IGJ5dGVzUGVyRWxlbWVudDogWzEsIDIsIDIsIDRdLCAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVE
X0JZVEUsIGdsLkhBTEZfRkxPQVQsIGdsLkhBTEZfRkxPQVRfT0VTLCBnbC5GTE9BVF0sIH07Cisg
IHRbZ2wuTFVNSU5BTkNFX0FMUEhBXSAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuTFVNSU5BTkNF
X0FMUEhBLCBzYW1wbGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVt
ZW50OiBbMiwgNCwgNCwgOF0sICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuSEFM
Rl9GTE9BVCwgZ2wuSEFMRl9GTE9BVF9PRVMsIGdsLkZMT0FUXSwgfTsKKyAgdFtnbC5SR0JdICAg
ICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0IsICAgICAgICAgICAgIHNhbXBs
ZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFszLCA2LCA2
LCAxMiwgMl0sICAgIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFLCBnbC5IQUxGX0ZMT0FULCBnbC5I
QUxGX0ZMT0FUX09FUywgZ2wuRkxPQVQsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81XSwgfTsKKyAg
dFtnbC5SR0JBXSAgICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0JBLCAgICAg
ICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1l
bnQ6IFs0LCA4LCA4LCAxNiwgMiwgMl0sIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFLCBnbC5IQUxG
X0ZMT0FULCBnbC5IQUxGX0ZMT0FUX09FUywgZ2wuRkxPQVQsIGdsLlVOU0lHTkVEX1NIT1JUXzRf
NF80XzQsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzFdLCB9OworCisgIC8vIHNpemVkIGZvcm1h
dHMKKyAgdFtnbC5SOF0gICAgICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRUQs
ICAgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1Bl
ckVsZW1lbnQ6IFsxXSwgICAgICAgICAgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9CWVRFXSwg
fTsKKyAgdFtnbC5SOF9TTk9STV0gICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRUQs
ICAgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1Bl
ckVsZW1lbnQ6IFsxXSwgICAgICAgICAgICAgICAgIHR5cGU6IFtnbC5CWVRFXSwgfTsKKyAgdFtn
bC5SMTZGXSAgICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRUQsICAgICAgICAg
ICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6
IFs0LCAyXSwgICAgICAgICAgICAgIHR5cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9GTE9BVF0sIH07
CisgIHRbZ2wuUjMyRl0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkVELCAg
ICAgICAgICAgICBzYW1wbGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJF
bGVtZW50OiBbNF0sICAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuRkxPQVRdLCB9OworICB0W2ds
LlI4VUldICAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAg
ICAgc2FtcGxlclR5cGU6IFVOU0lHTkVELCBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDog
WzFdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2ds
LlI4SV0gICAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAg
ICAgc2FtcGxlclR5cGU6IFNJR05FRCwgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDog
WzFdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLkJZVEVdLCB9OworICB0W2dsLlIxNlVJXSAg
ICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJFRF9JTlRFR0VSLCAgICAgc2FtcGxl
clR5cGU6IFVOU0lHTkVELCBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzJdLCAgICAg
ICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX1NIT1JUXSwgfTsKKyAgdFtnbC5SMTZJXSAg
ICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRURfSU5URUdFUiwgICAgIHNhbXBs
ZXJUeXBlOiBTSUdORUQsICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsyXSwgICAg
ICAgICAgICAgICAgIHR5cGU6IFtnbC5TSE9SVF0sIH07CisgIHRbZ2wuUjMyVUldICAgICAgICAg
ICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkVEX0lOVEVHRVIsICAgICBzYW1wbGVyVHlwZTog
VU5TSUdORUQsIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICAgICAg
ICAgICB0eXBlOiBbZ2wuVU5TSUdORURfSU5UXSwgfTsKKyAgdFtnbC5SMzJJXSAgICAgICAgICAg
ICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SRURfSU5URUdFUiwgICAgIHNhbXBsZXJUeXBlOiBT
SUdORUQsICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs0XSwgICAgICAgICAgICAg
ICAgIHR5cGU6IFtnbC5JTlRdLCB9OworICB0W2dsLlJHOF0gICAgICAgICAgICAgICAgPSB7IHRl
eHR1cmVGb3JtYXQ6IGdsLlJHLCAgICAgICAgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBk
ZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzJdLCAgICAgICAgICAgICAgICAgdHlwZTog
W2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2dsLlJHOF9TTk9STV0gICAgICAgICAgPSB7IHRl
eHR1cmVGb3JtYXQ6IGdsLlJHLCAgICAgICAgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBk
ZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzJdLCAgICAgICAgICAgICAgICAgdHlwZTog
W2dsLkJZVEVdLCB9OworICB0W2dsLlJHMTZGXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3Jt
YXQ6IGdsLlJHLCAgICAgICAgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFs
c2UsIGJ5dGVzUGVyRWxlbWVudDogWzgsIDRdLCAgICAgICAgICAgICAgdHlwZTogW2dsLkZMT0FU
LCBnbC5IQUxGX0ZMT0FUXSwgfTsKKyAgdFtnbC5SRzMyRl0gICAgICAgICAgICAgID0geyB0ZXh0
dXJlRm9ybWF0OiBnbC5SRywgICAgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVw
dGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFs4XSwgICAgICAgICAgICAgICAgIHR5cGU6IFtn
bC5GTE9BVF0sIH07CisgIHRbZ2wuUkc4VUldICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1h
dDogZ2wuUkdfSU5URUdFUiwgICAgICBzYW1wbGVyVHlwZTogVU5TSUdORUQsIGRlcHRoOiBmYWxz
ZSwgYnl0ZXNQZXJFbGVtZW50OiBbMl0sICAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdO
RURfQllURV0sIH07CisgIHRbZ2wuUkc4SV0gICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1h
dDogZ2wuUkdfSU5URUdFUiwgICAgICBzYW1wbGVyVHlwZTogU0lHTkVELCAgIGRlcHRoOiBmYWxz
ZSwgYnl0ZXNQZXJFbGVtZW50OiBbMl0sICAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuQllURV0s
IH07CisgIHRbZ2wuUkcxNlVJXSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdf
SU5URUdFUiwgICAgICBzYW1wbGVyVHlwZTogVU5TSUdORUQsIGRlcHRoOiBmYWxzZSwgYnl0ZXNQ
ZXJFbGVtZW50OiBbNF0sICAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfU0hPUlRd
LCB9OworICB0W2dsLlJHMTZJXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJH
X0lOVEVHRVIsICAgICAgc2FtcGxlclR5cGU6IFNJR05FRCwgICBkZXB0aDogZmFsc2UsIGJ5dGVz
UGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlNIT1JUXSwgfTsKKyAg
dFtnbC5SRzMyVUldICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR19JTlRFR0VS
LCAgICAgIHNhbXBsZXJUeXBlOiBVTlNJR05FRCwgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1l
bnQ6IFs4XSwgICAgICAgICAgICAgICAgIHR5cGU6IFtnbC5VTlNJR05FRF9JTlRdLCB9OworICB0
W2dsLlJHMzJJXSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHX0lOVEVHRVIs
ICAgICAgc2FtcGxlclR5cGU6IFNJR05FRCwgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVu
dDogWzhdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLklOVF0sIH07CisgIHRbZ2wuUkdCOF0g
ICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBzYW1w
bGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbM10sICAg
ICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURV0sIH07CisgIHRbZ2wuU1JHQjhd
ICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBzYW1w
bGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbM10sICAg
ICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURV0sIH07CisgIHRbZ2wuUkdCNTY1
XSAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBzYW1w
bGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMywgMl0s
ICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuVU5TSUdORURfU0hPUlRf
NV82XzVdLCB9OworICB0W2dsLlJHQjhfU05PUk1dICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6
IGdsLlJHQiwgICAgICAgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2Us
IGJ5dGVzUGVyRWxlbWVudDogWzNdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLkJZVEVdLCB9
OworICB0W2dsLlIxMUZfRzExRl9CMTBGXSAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQiwg
ICAgICAgICAgICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVy
RWxlbWVudDogWzEyLCA2LCA0XSwgICAgICAgICAgdHlwZTogW2dsLkZMT0FULCBnbC5IQUxGX0ZM
T0FULCBnbC5VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWXSwgfTsKKyAgdFtnbC5SR0I5X0U1
XSAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0IsICAgICAgICAgICAgIHNhbXBs
ZXJUeXBlOiBGTE9BVCwgICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxMiwgNiwg
NF0sICAgICAgICAgIHR5cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9GTE9BVCwgZ2wuVU5TSUdORURf
SU5UXzVfOV85XzlfUkVWXSwgfTsKKyAgdFtnbC5SR0IxNkZdICAgICAgICAgICAgID0geyB0ZXh0
dXJlRm9ybWF0OiBnbC5SR0IsICAgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAgZGVw
dGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxMiwgNl0sICAgICAgICAgICAgIHR5cGU6IFtn
bC5GTE9BVCwgZ2wuSEFMRl9GTE9BVF0sIH07CisgIHRbZ2wuUkdCMzJGXSAgICAgICAgICAgICA9
IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCLCAgICAgICAgICAgICBzYW1wbGVyVHlwZTogRkxPQVQs
ICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMTJdLCAgICAgICAgICAgICAgICB0
eXBlOiBbZ2wuRkxPQVRdLCB9OworICB0W2dsLlJHQjhVSV0gICAgICAgICAgICAgPSB7IHRleHR1
cmVGb3JtYXQ6IGdsLlJHQl9JTlRFR0VSLCAgICAgc2FtcGxlclR5cGU6IFVOU0lHTkVELCBkZXB0
aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzNdLCAgICAgICAgICAgICAgICAgdHlwZTogW2ds
LlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2dsLlJHQjhJXSAgICAgICAgICAgICAgPSB7IHRleHR1
cmVGb3JtYXQ6IGdsLlJHQl9JTlRFR0VSLCAgICAgc2FtcGxlclR5cGU6IFNJR05FRCwgICBkZXB0
aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzNdLCAgICAgICAgICAgICAgICAgdHlwZTogW2ds
LkJZVEVdLCB9OworICB0W2dsLlJHQjE2VUldICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6
IGdsLlJHQl9JTlRFR0VSLCAgICAgc2FtcGxlclR5cGU6IFVOU0lHTkVELCBkZXB0aDogZmFsc2Us
IGJ5dGVzUGVyRWxlbWVudDogWzZdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVE
X1NIT1JUXSwgfTsKKyAgdFtnbC5SR0IxNkldICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0
OiBnbC5SR0JfSU5URUdFUiwgICAgIHNhbXBsZXJUeXBlOiBTSUdORUQsICAgZGVwdGg6IGZhbHNl
LCBieXRlc1BlckVsZW1lbnQ6IFs2XSwgICAgICAgICAgICAgICAgIHR5cGU6IFtnbC5TSE9SVF0s
IH07CisgIHRbZ2wuUkdCMzJVSV0gICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdC
X0lOVEVHRVIsICAgICBzYW1wbGVyVHlwZTogVU5TSUdORUQsIGRlcHRoOiBmYWxzZSwgYnl0ZXNQ
ZXJFbGVtZW50OiBbMTJdLCAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfSU5UXSwg
fTsKKyAgdFtnbC5SR0IzMkldICAgICAgICAgICAgID0geyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0Jf
SU5URUdFUiwgICAgIHNhbXBsZXJUeXBlOiBTSUdORUQsICAgZGVwdGg6IGZhbHNlLCBieXRlc1Bl
ckVsZW1lbnQ6IFsxMl0sICAgICAgICAgICAgICAgIHR5cGU6IFtnbC5JTlRdLCB9OworICB0W2ds
LlJHQkE4XSAgICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAg
ICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDog
WzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2ds
LlNSR0I4X0FMUEhBOF0gICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAg
ICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDog
WzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2ds
LlJHQkE4X1NOT1JNXSAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAg
ICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDog
WzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLkJZVEVdLCB9OworICB0W2dsLlJHQjVfQTFd
ICAgICAgICAgICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkEsICAgICAgICAgICAgc2FtcGxl
clR5cGU6IEZMT0FULCAgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzQsIDIsIDRd
LCAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVEX0JZVEUsIGdsLlVOU0lHTkVEX1NIT1JUXzVf
NV81XzEsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl0sIH07CisgIHRbZ2wuUkdCQTRd
ICAgICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBzYW1w
bGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbNCwgMl0s
ICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdORURfQllURSwgZ2wuVU5TSUdORURfU0hPUlRf
NF80XzRfNF0sIH07CisgIHRbZ2wuUkdCMTBfQTJdICAgICAgICAgICA9IHsgdGV4dHVyZUZvcm1h
dDogZ2wuUkdCQSwgICAgICAgICAgICBzYW1wbGVyVHlwZTogRkxPQVQsICAgIGRlcHRoOiBmYWxz
ZSwgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICAgICAgICAgICB0eXBlOiBbZ2wuVU5TSUdO
RURfSU5UXzJfMTBfMTBfMTBfUkVWXSwgfTsKKyAgdFtnbC5SR0JBMTZGXSAgICAgICAgICAgID0g
eyB0ZXh0dXJlRm9ybWF0OiBnbC5SR0JBLCAgICAgICAgICAgIHNhbXBsZXJUeXBlOiBGTE9BVCwg
ICAgZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxNiwgOF0sICAgICAgICAgICAgIHR5
cGU6IFtnbC5GTE9BVCwgZ2wuSEFMRl9GTE9BVF0sIH07CisgIHRbZ2wuUkdCQTMyRl0gICAgICAg
ICAgICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQSwgICAgICAgICAgICBzYW1wbGVyVHlwZTog
RkxPQVQsICAgIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbMTZdLCAgICAgICAgICAg
ICAgICB0eXBlOiBbZ2wuRkxPQVRdLCB9OworICB0W2dsLlJHQkE4VUldICAgICAgICAgICAgPSB7
IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgc2FtcGxlclR5cGU6IFVOU0lHTkVE
LCBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAgdHlw
ZTogW2dsLlVOU0lHTkVEX0JZVEVdLCB9OworICB0W2dsLlJHQkE4SV0gICAgICAgICAgICAgPSB7
IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgc2FtcGxlclR5cGU6IFNJR05FRCwg
ICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAgdHlw
ZTogW2dsLkJZVEVdLCB9OworICB0W2dsLlJHQjEwX0EyVUldICAgICAgICAgPSB7IHRleHR1cmVG
b3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgc2FtcGxlclR5cGU6IFVOU0lHTkVELCBkZXB0aDog
ZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl0sIH07CisgIHRbZ2wuUkdCQTE2VUldICAgICAgICAg
ICA9IHsgdGV4dHVyZUZvcm1hdDogZ2wuUkdCQV9JTlRFR0VSLCAgICBzYW1wbGVyVHlwZTogVU5T
SUdORUQsIGRlcHRoOiBmYWxzZSwgYnl0ZXNQZXJFbGVtZW50OiBbOF0sICAgICAgICAgICAgICAg
ICB0eXBlOiBbZ2wuVU5TSUdORURfU0hPUlRdLCB9OworICB0W2dsLlJHQkExNkldICAgICAgICAg
ICAgPSB7IHRleHR1cmVGb3JtYXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgc2FtcGxlclR5cGU6IFNJ
R05FRCwgICBkZXB0aDogZmFsc2UsIGJ5dGVzUGVyRWxlbWVudDogWzhdLCAgICAgICAgICAgICAg
ICAgdHlwZTogW2dsLlNIT1JUXSwgfTsKKyAgdFtnbC5SR0JBMzJJXSAgICAgICAgICAgID0geyB0
ZXh0dXJlRm9ybWF0OiBnbC5SR0JBX0lOVEVHRVIsICAgIHNhbXBsZXJUeXBlOiBTSUdORUQsICAg
ZGVwdGg6IGZhbHNlLCBieXRlc1BlckVsZW1lbnQ6IFsxNl0sICAgICAgICAgICAgICAgIHR5cGU6
IFtnbC5JTlRdLCB9OworICB0W2dsLlJHQkEzMlVJXSAgICAgICAgICAgPSB7IHRleHR1cmVGb3Jt
YXQ6IGdsLlJHQkFfSU5URUdFUiwgICAgc2FtcGxlclR5cGU6IFVOU0lHTkVELCBkZXB0aDogZmFs
c2UsIGJ5dGVzUGVyRWxlbWVudDogWzE2XSwgICAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lH
TkVEX0lOVF0sIH07CisKKyAgLy8gU2l6ZWQgSW50ZXJuYWwKKyAgLy8gTm90ZSB0aGF0IHNhbXBs
ZXJUeXBlIGlzIEZMT0FUIGZvciBkZXB0aCBmb3JtYXRzLCBub3QgU0hBRE9XLiBTaGFkb3cKKyAg
Ly8gc2FtcGxlcnMgYXJlIGhhbmRsZWQgYXMgYSBzcGVjaWFsIGNhc2UgaW4gdGhlIHRlc3QgY29k
ZSBiZWNhdXNlIHRoZXkgaGF2ZQorICAvLyBzcGVjaWFsIHJ1bGVzIGFib3V0IFRFWFRVUkVfQ09N
UEFSRV9NT0RFLgorICB0W2dsLkRFUFRIX0NPTVBPTkVOVDE2XSAgPSB7IHRleHR1cmVGb3JtYXQ6
IGdsLkRFUFRIX0NPTVBPTkVOVCwgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0aDogdHJ1ZSwg
IGJ5dGVzUGVyRWxlbWVudDogWzIsIDRdLCAgICAgICAgICAgICAgdHlwZTogW2dsLlVOU0lHTkVE
X1NIT1JULCBnbC5VTlNJR05FRF9JTlRdLCB9OworICB0W2dsLkRFUFRIX0NPTVBPTkVOVDI0XSAg
PSB7IHRleHR1cmVGb3JtYXQ6IGdsLkRFUFRIX0NPTVBPTkVOVCwgc2FtcGxlclR5cGU6IEZMT0FU
LCAgICBkZXB0aDogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAg
dHlwZTogW2dsLlVOU0lHTkVEX0lOVF0sIH07CisgIHRbZ2wuREVQVEhfQ09NUE9ORU5UMzJGXSA9
IHsgdGV4dHVyZUZvcm1hdDogZ2wuREVQVEhfQ09NUE9ORU5ULCBzYW1wbGVyVHlwZTogRkxPQVQs
ICAgIGRlcHRoOiB0cnVlLCAgYnl0ZXNQZXJFbGVtZW50OiBbNF0sICAgICAgICAgICAgICAgICB0
eXBlOiBbZ2wuRkxPQVRdLCB9OworICB0W2dsLkRFUFRIMjRfU1RFTkNJTDhdICAgPSB7IHRleHR1
cmVGb3JtYXQ6IGdsLkRFUFRIX1NURU5DSUwsICAgc2FtcGxlclR5cGU6IEZMT0FULCAgICBkZXB0
aDogdHJ1ZSwgIGJ5dGVzUGVyRWxlbWVudDogWzRdLCAgICAgICAgICAgICAgICAgdHlwZTogW2ds
LlVOU0lHTkVEX0lOVF8yNF84XSwgfTsKKyAgdFtnbC5ERVBUSDMyRl9TVEVOQ0lMOF0gID0geyB0
ZXh0dXJlRm9ybWF0OiBnbC5ERVBUSF9TVEVOQ0lMLCAgIHNhbXBsZXJUeXBlOiBGTE9BVCwgICAg
ZGVwdGg6IHRydWUsICBieXRlc1BlckVsZW1lbnQ6IFs0XSwgICAgICAgICAgICAgICAgIHR5cGU6
IFtnbC5GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVZdLCB9OworCisgIC8vIFRPRE86IENv
bXByZXNzZWQgZm9ybWF0cy4KKworICBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGlu
dGVybmFsRm9ybWF0KSB7CisgICAgY29uc3QgaW5mbyA9IHRbaW50ZXJuYWxGb3JtYXRdOworICAg
IGluZm8uYnl0ZXNQZXJFbGVtZW50TWFwID0ge307CisgICAgaW5mby5ieXRlc1BlckVsZW1lbnQu
Zm9yRWFjaChmdW5jdGlvbihieXRlc1BlckVsZW1lbnQsIG5keCkgeworICAgICAgY29uc3QgdHlw
ZSA9IGluZm8udHlwZVtuZHhdOworICAgICAgaW5mby5ieXRlc1BlckVsZW1lbnRNYXBbdHlwZV0g
PSBieXRlc1BlckVsZW1lbnQ7CisgICAgfSk7CisgIH0pOworfQorCitjb25zdCBmbG9hdFNhbXBs
ZXJUeXBlcyA9IFsKKyAgeyB0eXBlOiAnc2FtcGxlcjJEJywgICAgICAgICAgICB1dlR5cGU6ICd2
ZWMyKDApJywgdGFyZ2V0OiBnbC5URVhUVVJFXzJELCB9LAorICB7IHR5cGU6ICdzYW1wbGVyM0Qn
LCAgICAgICAgICAgIHV2VHlwZTogJ3ZlYzMoMCknLCB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsIH0s
CisgIHsgdHlwZTogJ3NhbXBsZXJDdWJlJywgICAgICAgICAgdXZUeXBlOiAndmVjMygwKScsIHRh
cmdldDogZ2wuVEVYVFVSRV9DVUJFX01BUCwgfSwKKyAgeyB0eXBlOiAnc2FtcGxlcjJEQXJyYXkn
LCAgICAgICB1dlR5cGU6ICd2ZWMzKDApJywgdGFyZ2V0OiBnbC5URVhUVVJFXzJEX0FSUkFZLCB9
LAorXTsKKworY29uc3Qgc2lnbmVkSW50U2FtcGxlclR5cGVzID0gWworICB7IHR5cGU6ICdpc2Ft
cGxlcjJEJywgICAgICAgICAgIHV2VHlwZTogJ3ZlYzIoMCknLCB0YXJnZXQ6IGdsLlRFWFRVUkVf
MkQsIH0sCisgIHsgdHlwZTogJ2lzYW1wbGVyM0QnLCAgICAgICAgICAgdXZUeXBlOiAndmVjMygw
KScsIHRhcmdldDogZ2wuVEVYVFVSRV8zRCwgfSwKKyAgeyB0eXBlOiAnaXNhbXBsZXJDdWJlJywg
ICAgICAgICB1dlR5cGU6ICd2ZWMzKDApJywgdGFyZ2V0OiBnbC5URVhUVVJFX0NVQkVfTUFQLCB9
LAorICB7IHR5cGU6ICdpc2FtcGxlcjJEQXJyYXknLCAgICAgIHV2VHlwZTogJ3ZlYzMoMCknLCB0
YXJnZXQ6IGdsLlRFWFRVUkVfMkRfQVJSQVksIH0sCitdOworCitjb25zdCB1bnNpZ25lZEludFNh
bXBsZXJUeXBlcyA9IFsKKyAgeyB0eXBlOiAndXNhbXBsZXIyRCcsICAgICAgICAgICB1dlR5cGU6
ICd2ZWMyKDApJywgdGFyZ2V0OiBnbC5URVhUVVJFXzJELCB9LAorICB7IHR5cGU6ICd1c2FtcGxl
cjNEJywgICAgICAgICAgIHV2VHlwZTogJ3ZlYzMoMCknLCB0YXJnZXQ6IGdsLlRFWFRVUkVfM0Qs
IH0sCisgIHsgdHlwZTogJ3VzYW1wbGVyQ3ViZScsICAgICAgICAgdXZUeXBlOiAndmVjMygwKScs
IHRhcmdldDogZ2wuVEVYVFVSRV9DVUJFX01BUCwgfSwKKyAgeyB0eXBlOiAndXNhbXBsZXIyREFy
cmF5JywgICAgICB1dlR5cGU6ICd2ZWMzKDApJywgdGFyZ2V0OiBnbC5URVhUVVJFXzJEX0FSUkFZ
LCB9LAorXTsKKworY29uc3Qgc2hhZG93U2FtcGxlclR5cGVzID0gWworICB7IHR5cGU6ICdzYW1w
bGVyMkRTaGFkb3cnLCAgICAgIHV2VHlwZTogJ3ZlYzMoMCknLCB0YXJnZXQ6IGdsLlRFWFRVUkVf
MkQsIH0sCisgIHsgdHlwZTogJ3NhbXBsZXJDdWJlU2hhZG93JywgICAgdXZUeXBlOiAndmVjNCgw
KScsIHRhcmdldDogZ2wuVEVYVFVSRV9DVUJFX01BUCwgfSwKKyAgeyB0eXBlOiAnc2FtcGxlcjJE
QXJyYXlTaGFkb3cnLCB1dlR5cGU6ICd2ZWM0KDApJywgdGFyZ2V0OiBnbC5URVhUVVJFXzJEX0FS
UkFZLCB9LAorXQorCisvKioKKyAqIEdldHMgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgZWxlbWVu
dCBmb3IgYSBnaXZlbiBpbnRlcm5hbEZvcm1hdCAvIHR5cGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBp
bnRlcm5hbEZvcm1hdCBUaGUgaW50ZXJuYWxGb3JtYXQgcGFyYW1ldGVyIGZyb20gdGV4SW1hZ2Uy
RCBldGMuLgorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgVGhlIHR5cGUgcGFyYW1ldGVyIGZvciB0
ZXhJbWFnZTJEIGV0Yy4uCisgKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgYnl0ZXMg
cGVyIGVsZW1lbnQgZm9yIHRoZSBnaXZlbiBpbnRlcm5hbEZvcm1hdCwgdHlwZSBjb21ibworICog
QG1lbWJlck9mIG1vZHVsZTp0d2dsL3RleHR1cmVzCisgKi8KK2Z1bmN0aW9uIGdldEJ5dGVzUGVy
RWxlbWVudEZvckludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0LCB0eXBlKSB7CisgIGNvbnN0
IGluZm8gPSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvW2ludGVybmFsRm9ybWF0XTsKKyAgaWYg
KCFpbmZvKSB7CisgICAgdGhyb3cgInVua25vd24gaW50ZXJuYWwgZm9ybWF0IjsKKyAgfQorICBj
b25zdCBieXRlc1BlckVsZW1lbnQgPSBpbmZvLmJ5dGVzUGVyRWxlbWVudE1hcFt0eXBlXTsKKyAg
aWYgKGJ5dGVzUGVyRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7CisgICAgdGhyb3cgInVua25vd24g
aW50ZXJuYWwgZm9ybWF0IjsKKyAgfQorICByZXR1cm4gYnl0ZXNQZXJFbGVtZW50OworfQorCitm
dW5jdGlvbiBtYWtlMkRUZXh0dXJlKHRhcmdldCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlw
ZSkgeworICBnbC50ZXhJbWFnZTJEKHRhcmdldCwgMCwgaW50ZXJuYWxGb3JtYXQsIDEsIDEsIDAs
IGZvcm1hdCwgdHlwZSwgbnVsbCk7Cit9CisKK2Z1bmN0aW9uIG1ha2UzRFRleHR1cmUodGFyZ2V0
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKSB7CisgIGdsLnRleEltYWdlM0QodGFyZ2V0
LCAwLCBpbnRlcm5hbEZvcm1hdCwgMSwgMSwgMSwgMCwgZm9ybWF0LCB0eXBlLCBudWxsKTsKK30K
KworZnVuY3Rpb24gbWFrZUN1YmVNYXBUZXh0dXJlKHRhcmdldCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSkgeworICBbCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAor
ICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwKKyAgICBnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ksCisgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAg
IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwKKyAgICBnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1osCisgIF0uZm9yRWFjaChmdW5jdGlvbih0YXJnZXQpIHsKKyAgICBnbC50ZXhJ
bWFnZTJEKHRhcmdldCwgMCwgaW50ZXJuYWxGb3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwg
bnVsbCk7CisgIH0pOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGNvbnN0IHRhcmdl
dHMgPSB7fTsKKyAgICB0YXJnZXRzW2dsLlRFWFRVUkVfMkRdICAgICAgID0geyBmbjogbWFrZTJE
VGV4dHVyZSwgfSwKKyAgICB0YXJnZXRzW2dsLlRFWFRVUkVfM0RdICAgICAgID0geyBmbjogbWFr
ZTNEVGV4dHVyZSwgfSwKKyAgICB0YXJnZXRzW2dsLlRFWFRVUkVfQ1VCRV9NQVBdID0geyBmbjog
bWFrZUN1YmVNYXBUZXh0dXJlLCB9LAorICAgIHRhcmdldHNbZ2wuVEVYVFVSRV8yRF9BUlJBWV0g
PSB7IGZuOiBtYWtlM0RUZXh0dXJlLCB9LAorCisgICAgT2JqZWN0LmtleXModGFyZ2V0cykuZm9y
RWFjaChmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgdGFyZ2V0ID0gcGFyc2VJbnQodGFyZ2V0
KTsKKyAgICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRhcmdldHNbdGFyZ2V0XTsKKyAgICAgICAg
dGFyZ2V0SW5mby50ZXh0dXJlcyA9IFtdOworICAgICAgICBPYmplY3Qua2V5cyh0ZXh0dXJlSW50
ZXJuYWxGb3JtYXRJbmZvKS5mb3JFYWNoKGZ1bmN0aW9uKGludGVybmFsRm9ybWF0KSB7CisgICAg
ICAgICAgICBpbnRlcm5hbEZvcm1hdCA9IHBhcnNlSW50KGludGVybmFsRm9ybWF0KTsKKyAgICAg
ICAgICAgIGNvbnN0IGlzRGVwdGhGb3JtYXQgPSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvW2lu
dGVybmFsRm9ybWF0XS5kZXB0aDsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGdsLlRFWFRV
UkVfM0QgJiYgaXNEZXB0aEZvcm1hdCkgeworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb25zdCBpbmZvID0gdGV4dHVyZUludGVybmFsRm9ybWF0SW5m
b1tpbnRlcm5hbEZvcm1hdF07CisgICAgICAgICAgICBjb25zdCB0ZXh0dXJlID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsK
KyAgICAgICAgICAgIHRhcmdldEluZm8uZm4odGFyZ2V0LCBpbnRlcm5hbEZvcm1hdCwgaW5mby50
ZXh0dXJlRm9ybWF0LCBpbmZvLnR5cGVbMF0pOworICAgICAgICAgICAgdGFyZ2V0SW5mby50ZXh0
dXJlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdDogaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZSwKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wu
VEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNM
QU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRF
WFRVUkVfV1JBUF9SLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCBgTm8gZXJyb3JzIGZyb20gc2V0dXAgZm9yICR7d3R1
LmdsRW51bVRvU3RyaW5nKGdsLCB0YXJnZXQpfSAke3d0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW50
ZXJuYWxGb3JtYXQpfWApOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnN0IHNhbXBs
ZXJPYmplY3QgPSBnbC5jcmVhdGVTYW1wbGVyKCk7CisgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmko
c2FtcGxlck9iamVjdCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBn
bC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyT2JqZWN0LCBnbC5URVhUVVJFX01BR19GSUxURVIs
IGdsLk5FQVJFU1QpOworICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXJPYmplY3QsIGds
LlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC5zYW1wbGVyUGFyYW1l
dGVyaShzYW1wbGVyT2JqZWN0LCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlck9iamVjdCwgZ2wuVEVYVFVSRV9XUkFQ
X1IsIGdsLkNMQU1QX1RPX0VER0UpOworCisgICAgLy8gVGhlIHJ1bGVzIGltcGxlbWVudGVkIGhl
cmUgYXJlOgorCisgICAgLy8gRmxvYXQgc2FtcGxlcnMgYWNjZXB0IG9ubHkgZmxvYXQgdGV4dHVy
ZXMgYW5kIG5vcm1hbGl6ZWQgaW50ZWdlciB0ZXh0dXJlcworICAgIC8vIChzaWduZWQgb3IgdW5z
aWduZWQpIGFuZCBkZXB0aCB0ZXh0dXJlcyB3aXRoIFRFWFRVUkVfQ09NUEFSRV9NT0RFIHNldCB0
bworICAgIC8vIE5PTkUuCisKKyAgICAvLyBTaWduZWQgc2FtcGxlcnMgYWNjZXB0IG9ubHkgc2ln
bmVkIHVubm9ybWFsaXplZCBpbnRlZ2VyIHRleHR1cmVzLgorCisgICAgLy8gVW5zaWduZWQgc2Ft
cGxlcnMgYWNjZXB0IG9ubHkgdW5zaWduZWQgdW5ub3JtYWxpemVkIGludGVnZXIgdGV4dHVyZXMu
CisKKyAgICAvLyBTaGFkb3cgc2FtcGxlcnMgYWNjZXB0IG9ubHkgZGVwdGggdGV4dHVyZXMgd2l0
aAorICAgIC8vIFRFWFRVUkVfQ09NUEFSRV9NT0RFIHNldCB0byBDT01QQVJFX1JFRl9UT19URVhU
VVJFLgorCisgICAgdGVzdFNhbXBsZXJUeXBlKEZMT0FULCBmbG9hdFNhbXBsZXJUeXBlcyk7Cisg
ICAgdGVzdFNhbXBsZXJUeXBlKFNJR05FRCwgc2lnbmVkSW50U2FtcGxlclR5cGVzKTsKKyAgICB0
ZXN0U2FtcGxlclR5cGUoVU5TSUdORUQsIHVuc2lnbmVkSW50U2FtcGxlclR5cGVzKTsKKyAgICB0
ZXN0U2FtcGxlclR5cGUoU0hBRE9XLCBzaGFkb3dTYW1wbGVyVHlwZXMpOworCisgICAgZnVuY3Rp
b24gdGVzdFNhbXBsZXJUeXBlKHNhbXBsZXJUeXBlLCBzYW1wbGVySW5mb3MpIHsKKyAgICAgICAg
c2FtcGxlckluZm9zLmZvckVhY2goZnVuY3Rpb24oc2FtcGxlckluZm8pIHsKKyAgICAgICAgICAg
IGRlYnVnKGBcbmNoZWNraW5nICR7c2FtcGxlckluZm8udHlwZX1gKTsKKyAgICAgICAgICAgIGNv
bnN0IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCBtYWtlRnJhZ21l
bnRTaGFkZXIoc2FtcGxlckluZm8udHlwZSwgc2FtcGxlckluZm8udXZUeXBlKV0sIFtdLCBjb25z
b2xlLmxvZy5iaW5kKGNvbnNvbGUpKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbSkgeworICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvYWRpbmcgcHJvZ3JhbSBmYWlsZWQiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJMb2FkaW5nIHByb2dyYW0gc3VjY2VlZGVkIik7CisKKyAgICAgICAgICAgIGNvbnN0IHRhcmdl
dCA9IHNhbXBsZXJJbmZvLnRhcmdldDsKKyAgICAgICAgICAgIGNvbnN0IHRhcmdldEluZm8gPSB0
YXJnZXRzW3RhcmdldF07CisgICAgICAgICAgICB0YXJnZXRJbmZvLnRleHR1cmVzLmZvckVhY2go
ZnVuY3Rpb24odGV4dHVyZUluZm8pIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbEZv
cm1hdCA9IHRleHR1cmVJbmZvLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgICAgIGNvbnN0
IGRlc2MgPSB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBpbmZvID0gdGV4dHVyZUludGVybmFsRm9ybWF0SW5mb1tpbnRlcm5hbEZv
cm1hdF07CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgdGV4dHVyZSBvYmplY3QgY2FuIGhhdmUg
dHdvIHZhbHVlcyBvZiBURVhUVVJFX0NPTVBBUkVfTU9ERTogTk9ORSBvcgorICAgICAgICAgICAg
ICAgIC8vIENPTVBBUkVfUkVGX1RPX1RFWFRVUkUuIEhvd2V2ZXIsIHRoZSBzYW1wbGVyIGNhbiBo
YXZlIHRocmVlIHN0YXRlczoKKyAgICAgICAgICAgICAgICAvLyBObyBzYW1wbGVyIG9iamVjdCBi
b3VuZCwgc2FtcGxlciBvYmplY3Qgd2l0aCBOT05FLCBhbmQgc2FtcGxlciBvYmplY3Qgd2l0aAor
ICAgICAgICAgICAgICAgIC8vIENPTVBBUkVfUkVGX1RPX1RFWFRVUkUuIFdoZW4gYSBzYW1wbGVy
IG9iamVjdCBpcyBib3VuZCwgaXQgb3ZlcnJpZGVzIHRoZQorICAgICAgICAgICAgICAgIC8vIHRl
eHR1cmUgb2JqZWN0J3Mgc3RhdGUuIFdlIHRlc3QgMiozPTYgcG9zc2libGUgY29tYmluYXRpb25z
IG9mIHN0YXRlLgorCisgICAgICAgICAgICAgICAgLy8gRmlyc3QgdGVzdCB0aGUgdGhyZWUgc3Rh
dGVzIHRoYXQgcmVzdWx0IGluIFRFWFRVUkVfQ09NUEFSRV9NT0RFIGJlaW5nIE5PTkUuCisgICAg
ICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gc2FtcGxlclR5cGUgPT0gaW5mby5zYW1wbGVyVHlw
ZSA/IGdsLk5PTkUgOiBnbC5JTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmVJbmZvLnRleHR1cmUpOworICAgICAgICAgICAgICAg
IGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBleHBlY3RlZCwgYCR7ZGVzY30gdGV4dHVyZSBzdGF0ZSBOT05FLCBu
byBzYW1wbGVyIG9iamVjdGApOworCisgICAgICAgICAgICAgICAgZ2wuYmluZFNhbXBsZXIoMCwg
c2FtcGxlck9iamVjdCk7CisgICAgICAgICAgICAgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2Ft
cGxlck9iamVjdCwgZ2wuVEVYVFVSRV9DT01QQVJFX01PREUsIGdsLk5PTkUpOworICAgICAgICAg
ICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBleHBlY3RlZCwgYCR7ZGVzY30gdGV4dHVyZSBzdGF0ZSBO
T05FLCBzYW1wbGVyIHN0YXRlIE5PTkVgKTsKKworICAgICAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX0NPTVBBUkVfTU9ERSwgZ2wuQ09NUEFSRV9SRUZfVE9f
VEVYVFVSRSk7CisgICAgICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDEp
OworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGV4cGVjdGVkLCBgJHtk
ZXNjfSB0ZXh0dXJlIHN0YXRlIENPTVBBUkVfUkVGX1RPX1RFWFRVUkUsIHNhbXBsZXIgc3RhdGUg
Tk9ORWApOworCisgICAgICAgICAgICAgICAgLy8gTm93IHRlc3QgdGVzdCB0aGUgdGhyZWUgc3Rh
dGVzIHRoYXQgcmVzdWx0IGluIFRFWFRVUkVfQ09NUEFSRV9NT0RFIGJlaW5nIENPTVBBUkVfUkVG
X1RPX1RFWFRVUkUuCisgICAgICAgICAgICAgICAgaWYgKGluZm8uZGVwdGgpIHsKKyAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkID0gc2FtcGxlclR5cGUgPT0gU0hBRE9XID8gZ2wuTk9ORSA6IGds
LklOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBn
bC5iaW5kU2FtcGxlcigwLCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGds
LlBPSU5UUywgMCwgMSk7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
ZXhwZWN0ZWQsIGAke2Rlc2N9IHRleHR1cmUgc3RhdGUgQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSwg
bm8gc2FtcGxlciBvYmplY3RgKTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRTYW1wbGVyKDAs
IHNhbXBsZXJPYmplY3QpOworICAgICAgICAgICAgICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJpKHNh
bXBsZXJPYmplY3QsIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFLCBnbC5DT01QQVJFX1JFRl9UT19U
RVhUVVJFKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMSk7
CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXhwZWN0ZWQsIGAke2Rl
c2N9IHRleHR1cmUgc3RhdGUgQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSwgc2FtcGxlciBzdGF0ZSBD
T01QQVJFX1JFRl9UT19URVhUVVJFYCk7CisKKyAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9DT01QQVJFX01PREUsIGdsLk5PTkUpOworICAgICAgICAg
ICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBleHBlY3RlZCwgYCR7ZGVzY30gdGV4dHVyZSBzdGF0ZSBO
T05FLCBzYW1wbGVyIHN0YXRlIENPTVBBUkVfUkVGX1RPX1RFWFRVUkVgKTsKKyAgICAgICAgICAg
ICAgICBnbC5iaW5kU2FtcGxlcigwLCBudWxsKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9OworfQorCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4
dCBjcmVhdGlvbiBmYWlsZWQiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29u
dGV4dCBjcmVhdGlvbiBzdWNjZWVkZWQiKTsKKyAgICBydW5UZXN0KCk7Cit9CisKK2RlYnVnKCIi
KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UyL3VuaWZvcm1zL2xhcmdlLXVuaWZvcm0tYnVmZmVycy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Vu
aWZvcm1zL2xhcmdlLXVuaWZvcm0tYnVmZmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNjcxOTVlYThj
ZmVkYTY2OTg2YTM2NTdhMGUwZjdjZjk1ZDU0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9y
bXMvbGFyZ2UtdW5pZm9ybS1idWZmZXJzLmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhLS0KK0Nv
cHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Zm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIGxhcmdl
IHVuaWZvcm0gYnVmZmVycyBjb25mb3JtYW5jZSB0ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQg
YV92ZXJ0ZXg7Cit2b2lkIG1haW4odm9pZCkgeworICBnbF9Qb3NpdGlvbiA9IGFfdmVydGV4Owor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworbGF5b3V0IChz
dGQxNDApIHVuaWZvcm0gY29sb3JfdWJvIHsKKyAgdmVjNCBjb2xvcjsKK307CitvdXQgdmVjNCBm
cmFnQ29sb3I7Cit2b2lkIG1haW4odm9pZCkgeworICBmcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMTAw
IiwgaGVpZ2h0PSIxMDAiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVidWco
IiIpOworZGVzY3JpcHRpb24oIlRlc3QgZm9yIFVCT3Mgc2l6ZWQgb3ZlciA2NTUzNiAtIGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD0zMzg4
Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImV4YW1wbGUiLCB1bmRlZmluZWQsIDIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFk
ZXInXSwgWydhX3ZlcnRleCddKTsKKyAgICB2YXIgdWJvSW5kZXggPSBnbC5JTlZBTElEX0lOREVY
OworICAgIGlmIChwcm9ncmFtKQorICAgICAgICB1Ym9JbmRleCA9IGdsLmdldFVuaWZvcm1CbG9j
a0luZGV4KHByb2dyYW0sICJjb2xvcl91Ym8iKTsKKyAgICBpZiAoIXByb2dyYW0gfHwgdWJvSW5k
ZXggPT0gZ2wuSU5WQUxJRF9JTkRFWCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJMb2FkaW5nIHBy
b2dyYW0gZmFpbGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdFBhc3NlZCgi
TG9hZGluZyBwcm9ncmFtIHN1Y2NlZWRlZCIpOworCisgICAgdmFyIHZlcnRpY2VzID0gbmV3IEZs
b2F0MzJBcnJheShbCisgICAgICAgIC0xLCAtMSwgMCwKKyAgICAgICAgIDEsIC0xLCAwLAorICAg
ICAgICAtMSwgIDEsIDAsCisgICAgICAgICAxLCAgMSwgMAorICAgIF0pOworICAgIHZhciB2ZXJ0
ZXhCdWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdmVydGV4QnVmKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVy
dGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgw
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwg
MCk7CisKKyAgICB2YXIgaW5kZXhCdWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1Zik7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IEludDE2QXJyYXkoWyAwLCAxLCAyLCAy
LCAxLCAzIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2YXIgdWJvRGF0YVNpemUgPSBnbC5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoCisgICAgICAgIHByb2dyYW0sIHVib0luZGV4
LCBnbC5VTklGT1JNX0JMT0NLX0RBVEFfU0laRSk7CisgICAgaWYgKHVib0RhdGFTaXplID09IDAp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgidW5pZm9ybSBibG9jayBkYXRhIHNpemUgaW52YWxpZCIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHVib0J1ZiA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICAgIHZhciB1Ym9EYXRhID0gbmV3IEZsb2F0MzJBcnJheSgweDIwMDAwKTsKKwor
ICAgIHZhciBvZmZzMCA9IDB4MDAwMDA7CisgICAgLy8gUmVkCisgICAgdWJvRGF0YVtvZmZzMCAr
IDBdID0gMTsKKyAgICB1Ym9EYXRhW29mZnMwICsgMV0gPSAwOworICAgIHVib0RhdGFbb2ZmczAg
KyAyXSA9IDA7CisgICAgdWJvRGF0YVtvZmZzMCArIDNdID0gMTsKKworICAgIHZhciBvZmZzMSA9
IDB4MTAwMDA7CisgICAgY29uc3QgYWxpZ25tZW50ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOSUZP
Uk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQpOworICAgIGlmIChvZmZzMSAlIGFsaWdubWVudCAh
PSAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJQbGF0Zm9ybSBoYXMgYSBzdHJhbmdlIHVuaWZvcm0g
YnVmZmVyIG9mZnNldCBhbGlnbm1lbnQgcmVxdWlyZW1lbnQ6ICIgKyBhbGlnbm1lbnQpOworCisg
ICAgLy8gR3JlZW4KKyAgICB1Ym9EYXRhW29mZnMxICsgMF0gPSAwOworICAgIHVib0RhdGFbb2Zm
czEgKyAxXSA9IDE7CisgICAgdWJvRGF0YVtvZmZzMSArIDJdID0gMDsKKyAgICB1Ym9EYXRhW29m
ZnMxICsgM10gPSAxOworCisgICAgZ2wudW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1Ym9J
bmRleCwgMCk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIDAsIHVi
b0J1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgdWJvRGF0YSwgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJObyBlcnJvcnMgZnJvbSBzZXR1cCIpOworCisgICAgZGVidWcoImRyYXcgbG93ZXIgdHJpYW5n
bGUgLSBzaG91bGQgYmUgcmVkIik7CisgICAgZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlVOSUZPUk1f
QlVGRkVSLCAwLCB1Ym9CdWYsIG9mZnMwICogNCwgMHgxMCk7CisgICAgZ2wuZHJhd0VsZW1lbnRz
KGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfU0hPUlQsIDApOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAg
ZGVidWcoImRyYXcgdXBwZXIgdHJpYW5nbGUgLSBzaG91bGQgYmUgZ3JlZW4iKTsKKyAgICB2YXIg
dWJvQnVmMiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5V
TklGT1JNX0JVRkZFUiwgMCwgdWJvQnVmLCBvZmZzMSAqIDQsIDB4MTApOworICAgIGdsLmRyYXdF
bGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX1NIT1JULCA2KTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIGVycm9ycyBmcm9tIGRyYXciKTsK
KworICAgIHZhciB3aWR0aCA9IDEwMCwgaGVpZ2h0ID0gMTAwOworICAgIHd0dS5jaGVja0NhbnZh
c1JlY3RDb2xvcihnbCwgMCwgMCwgd2lkdGgvMi01LCBoZWlnaHQvMi01LCBbMjU1LCAwLCAwLCAy
NTVdLCAyLAorICAgICAgICBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgibG93ZXIgbGVmdCBzaG91
bGQgYmUgcmVkIik7IH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeyB0ZXN0RmFpbGVkKCJsb3dlciBs
ZWZ0IHNob3VsZCBiZSByZWQiKTsgfSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdENvbG9yKGds
LCB3aWR0aC8yKzUsIGhlaWdodC8yKzUsIHdpZHRoLzItNSwgaGVpZ2h0LzItNSwgWzAsIDI1NSwg
MCwgMjU1XSwgMiwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRlc3RQYXNzZWQoInRvcCByaWdodCBz
aG91bGQgYmUgZ3JlZW4iKTsgfSwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRlc3RGYWlsZWQoInRv
cCByaWdodCBzaG91bGQgYmUgZ3JlZW4iKTsgfSk7Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0
RmFpbGVkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZCIpOworfSBlbHNlIHsKKyAgICB0
ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIHN1Y2NlZWRlZCIpOworICAgIHJ1blRl
c3QoKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvcXVlcnktdW5pZm9y
bS1ibG9ja3MtYWZ0ZXItc2hhZGVyLWRldGFjaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3VuaWZvcm1zL3F1ZXJ5LXVuaWZv
cm0tYmxvY2tzLWFmdGVyLXNoYWRlci1kZXRhY2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGM3MDYwZTVj
ZWQxZmY2MDNhYmMzNTMyNWZkODk2ODgyMzRiNzZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3VuaWZv
cm1zL3F1ZXJ5LXVuaWZvcm0tYmxvY2tzLWFmdGVyLXNoYWRlci1kZXRhY2guaHRtbApAQCAtMCww
ICsxLDkzIEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJ1ZmZlcnMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAw
IGVzCisKK2luIHZlYzQgcG9zaXRpb247CisKK3VuaWZvcm0gbG9jYWxJbnB1dHMKK3sKKyAgICBt
YXQ0IHByb2plY3Rpb25Nb2RlbFZpZXdNYXRyaXg7Cit9OworCit2b2lkIG1haW4gKCkKK3sKKyAg
ICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25Nb2RlbFZpZXdNYXRyaXggKiBwb3NpdGlvbjsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVu
dCI+I3ZlcnNpb24gMzAwIGVzCisKK291dCBsb3dwIHZlYzQgcmVzdWx0Q29sb3I7CisKK3ZvaWQg
bWFpbigpCit7CisgICAgcmVzdWx0Q29sb3IgPSB2ZWM0KDAsMSwwLDEpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisvLyBBZG9wdGVkIGZyb20gdGhl
IHRlc3QgY2FzZSBwcm92aWRlZCBpbiBjcmJ1Zy5jb20vNzM1Nzg0CisidXNlIHN0cmljdCI7Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBVQk8gYmxvY2sgbG9va3VwcyBzdGlsbCB3b3JrIGFmdGVy
IGRldGFjaGluZyBzaGFkZXJzIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxsLCAyKTsKKworZnVuY3Rp
b24gcnVuVGVzdChnbCkgeworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtRnJvbVNj
cmlwdChnbCwgInZzaGFkZXIiLCAiZnNoYWRlciIpOworICAgIGlmICghcHJvZ3JhbSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJMb2FkaW5nIHByb2dyYW0gZmFpbGVkIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YXIgc2hhZGVycyA9IGdsLmdldEF0dGFjaGVkU2hhZGVycyhwcm9n
cmFtKTsKKyAgICBpZiAoIXNoYWRlcnMgfHwgc2hhZGVycy5sZW5ndGggIT0gMikgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJnZXRBdHRhY2hlZFNoYWRlcnMgZmFpbGVkIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZ2wuZGV0YWNoU2hhZGVyIChwcm9ncmFtLCBzaGFkZXJzWzBdKTsKKyAg
ICBnbC5kZXRhY2hTaGFkZXIgKHByb2dyYW0sIHNoYWRlcnNbMV0pOworCisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJObyBHTCBlcnJvciBmcm9tIHNldCB1cCIpOwor
CisgICAgdmFyIGluZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgImxvY2Fs
SW5wdXRzIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJObyBH
TCBlcnJvciBmcm9tIGdldFVuaWZvcm1CbG9ja0luZGV4Iik7CisgICAgaWYgKGluZGV4ID09IGds
LklOVkFMSURfSU5ERVgpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0VW5pZm9ybUJsb2NrSW5k
ZXggcmV0dXJucyBJTlZBTElEX0lOREVYIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiZ2V0VW5pZm9ybUJsb2NrSW5kZXggcmV0dXJucyB2YWxpZCBpbmRleCIpOworICAgIH0K
K30KKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3Qg
ZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMi
KTsKKyAgICBydW5UZXN0KGdsKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9y
bXMvc2ltcGxlLWJ1ZmZlci1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi91bmlmb3Jtcy9zaW1wbGUtYnVmZmVyLWNo
YW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NjQ2ZmFhZTg5NmNjYjY1ZGM2NTU0MmQ0NjYxN2U4ZTc5
MDUzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvc2ltcGxlLWJ1ZmZlci1jaGFuZ2Uu
aHRtbApAQCAtMCwwICsxLDEyMiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgZHJhdyB3aXRoIHVuaWZvcm0gYmxvY2tzIGNvbmZv
cm1hbmNlIHRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworaW4gdmVjNCBhX3ZlcnRleDsKK3ZvaWQgbWFpbih2
b2lkKSB7CisgIGdsX1Bvc2l0aW9uID0gYV92ZXJ0ZXg7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcwor
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitsYXlvdXQgKHN0ZDE0MCkgdW5pZm9ybSBjb2xvcl91
Ym8geworICB2ZWM0IGNvbG9yOworfTsKK291dCB2ZWM0IGZyYWdDb2xvcjsKK3ZvaWQgbWFpbih2
b2lkKSB7CisgIGZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxMDAiLCBoZWlnaHQ9IjEwMCI+PC9jYW52
YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZWJ1ZygiIik7CisKKy8vIFBvcnRlZCBmcm9t
OiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2FuZ2xlL2Jsb2IvbWFzdGVyL3NyYy90ZXN0cy9n
bF90ZXN0cy9Vbmlmb3JtQnVmZmVyVGVzdC5jcHAjTDE0NjMKK2Rlc2NyaXB0aW9uKCJSZWdyZXNz
aW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMv
ZGV0YWlsP2lkPTc5Mjk2NiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIiwgdW5kZWZpbmVkLCAyKTsKKworZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsn
dnNoYWRlcicsICdmc2hhZGVyJ10sIFsnYV92ZXJ0ZXgnXSk7CisgICAgdmFyIHVib0luZGV4ID0g
Z2wuSU5WQUxJRF9JTkRFWDsKKyAgICBpZiAocHJvZ3JhbSkKKyAgICAgICAgdWJvSW5kZXggPSBn
bC5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCAiY29sb3JfdWJvIik7CisgICAgaWYgKCFw
cm9ncmFtIHx8IHVib0luZGV4ID09IGdsLklOVkFMSURfSU5ERVgpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiTG9hZGluZyBwcm9ncmFtIGZhaWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHRlc3RQYXNzZWQoIkxvYWRpbmcgcHJvZ3JhbSBzdWNjZWVkZWQiKTsKKworICAgIHZhciB2
ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAtMSwgLTEsIDAsCisgICAgICAg
ICAxLCAtMSwgMCwKKyAgICAgICAgLTEsICAxLCAwLAorICAgICAgICAgMSwgIDEsIDAKKyAgICBd
KTsKKyAgICB2YXIgdmVydGV4QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5B
UlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgdmFyIGluZGV4QnVmID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWYp
OworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBJbnQxNkFy
cmF5KFsgMCwgMSwgMiwgMiwgMSwgMyBdKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgdmFyIHVi
b0RhdGFTaXplID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKAorICAgICAgICBw
cm9ncmFtLCB1Ym9JbmRleCwgZ2wuVU5JRk9STV9CTE9DS19EQVRBX1NJWkUpOworICAgIGlmICh1
Ym9EYXRhU2l6ZSA9PSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoInVuaWZvcm0gYmxvY2sgZGF0
YSBzaXplIGludmFsaWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gZXJyb3JzIGZyb20gc2V0dXAiKTsKKwor
ICAgIGRlYnVnKCJkcmF3IGxvd2VyIHRyaWFuZ2xlIC0gc2hvdWxkIGJlIHJlZCIpOworICAgIHZh
ciB1Ym9CdWYxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wu
VU5JRk9STV9CVUZGRVIsIDAsIHVib0J1ZjEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9S
TV9CVUZGRVIsIHVib0RhdGFTaXplLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3Vi
RGF0YShnbC5VTklGT1JNX0JVRkZFUiwgMCwgbmV3IEZsb2F0MzJBcnJheShbIDEsIDAsIDAsIDEg
XSkpOworICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdWJvSW5kZXgsIDApOwor
ICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX1NIT1JULCAw
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIGVycm9ycyBm
cm9tIGRyYXciKTsKKworICAgIC8vIEJpbmQgYSBzZWNvbmQgYnVmZmVyIHRvIHRoZSBzYW1lIGJp
bmRpbmcgcG9pbnQgKDApLiBUaGlzIHNob3VsZCBzZXQgdG8gZHJhdyBncmVlbi4KKyAgICBkZWJ1
ZygiZHJhdyB1cHBlciB0cmlhbmdsZSAtIHNob3VsZCBiZSBncmVlbiIpOworICAgIHZhciB1Ym9C
dWYyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9S
TV9CVUZGRVIsIDAsIHVib0J1ZjIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZG
RVIsIHVib0RhdGFTaXplLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShn
bC5VTklGT1JNX0JVRkZFUiwgMCwgbmV3IEZsb2F0MzJBcnJheShbIDAsIDEsIDAsIDEgXSkpOwor
ICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX1NIT1JULCA2
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIGVycm9ycyBm
cm9tIGRyYXciKTsKKworICAgIHZhciB3aWR0aCA9IDEwMCwgaGVpZ2h0ID0gMTAwOworICAgIHd0
dS5jaGVja0NhbnZhc1JlY3RDb2xvcihnbCwgMCwgMCwgd2lkdGgvMi01LCBoZWlnaHQvMi01LCBb
MjU1LCAwLCAwLCAyNTVdLCAyLAorICAgICAgICBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgibG93
ZXIgbGVmdCBzaG91bGQgYmUgcmVkIik7IH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeyB0ZXN0RmFp
bGVkKCJsb3dlciBsZWZ0IHNob3VsZCBiZSByZWQiKTsgfSk7CisgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdENvbG9yKGdsLCB3aWR0aC8yKzUsIGhlaWdodC8yKzUsIHdpZHRoLzItNSwgaGVpZ2h0LzIt
NSwgWzAsIDI1NSwgMCwgMjU1XSwgMiwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRlc3RQYXNzZWQo
InRvcCByaWdodCBzaG91bGQgYmUgZ3JlZW4iKTsgfSwKKyAgICAgICAgZnVuY3Rpb24oKSB7IHRl
c3RGYWlsZWQoInRvcCByaWdodCBzaG91bGQgYmUgZ3JlZW4iKTsgfSk7Cit9CisKK2lmICghZ2wp
IHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZCIpOworfSBl
bHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGNyZWF0aW9uIHN1Y2NlZWRlZCIp
OworICAgIHJ1blRlc3QoKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMv
dW5pZm9ybS1ibG9ja3Mtd2l0aC1hcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi91bmlmb3Jtcy91bmlmb3JtLWJsb2Nr
cy13aXRoLWFycmF5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNDBhNjJjMDA1YTEyMDMwZTQ0MmU2YmNi
NDA2ZmQzYmYyZjVhNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdW5pZm9ybXMvdW5pZm9ybS1ibG9j
a3Mtd2l0aC1hcnJheXMuaHRtbApAQCAtMCwwICsxLDExNSBAQAorPCEtLQorQ29weXJpZ2h0IChj
KSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0
aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgdW5pZm9ybSBibG9ja3Mg
Y29udGFpbmluZyBhcnJheXMgY29uZm9ybWFuY2UgdGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2
c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVzCitpbiB2ZWM0
IHZQb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlckFycmF5c09mU3RydWN0cyIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7CitvdXQgdmVjNCBteV9GcmFnQ29sb3I7CitzdHJ1Y3QgbGlnaHRfdCB7CisgICAgdmVjNCBp
bnRlbnNpdHk7Cit9OworY29uc3QgaW50IG1heExpZ2h0cyA9IDI7CitsYXlvdXQoc3RkMTQwKSB1
bmlmb3JtIGxpZ2h0RGF0YSB7IGxpZ2h0X3QgbGlnaHRzW21heExpZ2h0c107IH07Cit2ZWM0IHBy
b2Nlc3NMaWdodCh2ZWM0IGxpZ2h0aW5nLCBsaWdodF90IGxpZ2h0KQoreworICAgIHJldHVybiBs
aWdodGluZyArIGxpZ2h0LmludGVuc2l0eTsKK30KK3ZvaWQgbWFpbigpCit7CisgICAgdmVjNCBs
aWdodGluZyA9IHZlYzQoMCwgMSwgMCwgMSk7CisgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBtYXhM
aWdodHM7IG4rKykKKyAgICAgICAgbGlnaHRpbmcgPSBwcm9jZXNzTGlnaHQobGlnaHRpbmcsIGxp
Z2h0c1tuXSk7CisgICAgbXlfRnJhZ0NvbG9yID0gbGlnaHRpbmc7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgaWQ9ImZzaGFkZXJBcnJheXNPZlN0cnVjdHNDb250YWluaW5nQXJyYXlzIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBoaWdocCBmbG9h
dDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3N0cnVjdCBsaWdodF90IHsKKyAgICB2ZWM0IGlu
dGVuc2l0eVszXTsKK307Citjb25zdCBpbnQgbWF4TGlnaHRzID0gMjsKK2xheW91dChzdGQxNDAp
IHVuaWZvcm0gbGlnaHREYXRhIHsgbGlnaHRfdCBsaWdodHNbbWF4TGlnaHRzXTsgfTsKK3ZlYzQg
cHJvY2Vzc0xpZ2h0KHZlYzQgbGlnaHRpbmcsIGxpZ2h0X3QgbGlnaHQpCit7CisgICAgcmV0dXJu
IGxpZ2h0aW5nICsgbGlnaHQuaW50ZW5zaXR5WzFdOworfQordm9pZCBtYWluKCkKK3sKKyAgICB2
ZWM0IGxpZ2h0aW5nID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAgICBmb3IgKGludCBuID0gMDsgbiA8
IG1heExpZ2h0czsgbisrKQorICAgICAgICBsaWdodGluZyA9IHByb2Nlc3NMaWdodChsaWdodGlu
ZywgbGlnaHRzW25dKTsKKyAgICBteV9GcmFnQ29sb3IgPSBsaWdodGluZzsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigp
OworCisvLyBHTFNMIEVTIDMuMDAuNiBzZWN0aW9uIDQuMy43OgorLy8gIk90aGVyd2lzZSwgYnVp
bHQtaW4gdHlwZXMsIHByZXZpb3VzbHkgZGVjbGFyZWQgc3RydWN0dXJlcywgYW5kIGFycmF5cyBv
ZiB0aGVzZSBhcmUgYWxsb3dlZCBhcyB0aGUgdHlwZSBvZiBhIGRlY2xhcmF0b3IgaW4gdGhlIHNh
bWUgbWFubmVyIHRoZXkgYXJlIGFsbG93ZWQgb3V0c2lkZSBhIGJsb2NrLiIKKwordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQs
IHVuZGVmaW5lZCwgMik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoZnJhZ1NoYWRlciwgYnVmZmVyRmxv
YXRDb3VudCwgc2hhZGVyQmxvY2tEZXNjcmlwdGlvbikgeworICAgIGRlYnVnKCcnKTsKKyAgICBk
ZWJ1ZygnVGVzdGluZyBmcmFnbWVudCBzaGFkZXIgd2l0aCBhbiB1bmlmb3JtIGJsb2NrIGNvbnRh
aW5pbmcgJyArIHNoYWRlckJsb2NrRGVzY3JpcHRpb24pOworICAgIHZhciBwcm9ncmFtID0gd3R1
LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgZnJhZ1NoYWRlcl0sIFsndlBvc2l0aW9uJ10s
IHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIkxvYWRpbmcgcHJvZ3JhbSBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgYmxvY2tJbmRleCA9IGdsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sICJsaWdo
dERhdGEiKTsKKworICAgIHZhciB1bmlmb3JtQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5VTklGT1JNX0JVRkZFUiwgdW5pZm9ybUJ1ZmZlcik7CisgICAg
Z2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShidWZmZXJG
bG9hdENvdW50KSwgZ2wuRFlOQU1JQ19SRUFEKTsKKworICAgIGdsLmJpbmRCdWZmZXJCYXNlKGds
LlVOSUZPUk1fQlVGRkVSLCAwLCB1bmlmb3JtQnVmZmVyKTsKKyAgICBnbC51bmlmb3JtQmxvY2tC
aW5kaW5nKHByb2dyYW0sIGJsb2NrSW5kZXgsIDApOworCisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJObyBlcnJvcnMgZnJvbSB1bmlmb3JtIGJ1ZmZlciBzZXR1cCIp
OworCisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiTm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAg
d3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAnc2hvdWxkIGJlIGdyZWVuJywg
MSk7Cit9CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGNyZWF0
aW9uIGZhaWxlZCIpOworfSBlbHNlIHsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgICAg
cnVuVGVzdCgiZnNoYWRlckFycmF5c09mU3RydWN0cyIsIDIgKiA0LCAnYXJyYXlzIG9mIHN0cnVj
dHMnKTsKKyAgICBydW5UZXN0KCJmc2hhZGVyQXJyYXlzT2ZTdHJ1Y3RzQ29udGFpbmluZ0FycmF5
cyIsIDIgKiAzICogNCwgJ2FycmF5cyBvZiBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzJyk7Cit9
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3ZlcnRleF9hcnJheXMvdmVydGV4LWFycmF5LW9i
amVjdC1hbmQtZGlzYWJsZWQtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3ZlcnRleF9hcnJheXMvdmVydGV4
LWFycmF5LW9iamVjdC1hbmQtZGlzYWJsZWQtYXR0cmlidXRlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
YWJiYTcyOGM4NTVhMGU5ZDZjNGQzZmFjOTJlNGE5NjNkYzgxZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZTIvdmVydGV4X2FycmF5cy92ZXJ0ZXgtYXJyYXktb2JqZWN0LWFuZC1kaXNhYmxlZC1hdHRyaWJ1
dGVzLmh0bWwKQEAgLTAsMCArMSwxMzIgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIDIgRGlzYWJsZWQgVmVydGV4IEFycmF5IE9i
amVjdCBhbmQgRGlzYWJsZWQgQXR0cmlidXRlcyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KKzwvY2FudmFz
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJzaW5nbGV2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cith
dHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfUG9zaXRpb24gPSBw
b3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJzaW5nbGVmc2hhZGVyIiB0eXBl
PSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLCAwLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZHVhbHZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKK2luIHZlYzQgcG9zaXRp
b247CitpbiB2ZWM0IGNvbG9yOworb3V0IHZlYzQgdmFyeUNvbG9yOwordm9pZCBtYWluKCkgewor
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICB2YXJ5Q29sb3IgPSBjb2xvcjsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iZHVhbGZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbiB2ZWM0IHZhcnlD
b2xvcjsKK291dCB2ZWM0IGNvbG9yT3V0Owordm9pZCBtYWluKCkgeworICBjb2xvck91dCA9IHZh
cnlDb2xvcjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorLy8gVGVzdCB0aGF0IHN3aXRjaGlu
ZyBWQU9zIGtlZXBzIHRoZSBkaXNhYmxlZCAiY3VycmVudCB2YWx1ZSIgYXR0cmlidXRlcyB1cC10
by1kYXRlLgorLy8gQmFzZWQgb24gQU5HTEUgdGVzdCAoU3RhdGVDaGFuZ2VUZXN0RVMzLCBWZXJ0
ZXhBcnJheU9iamVjdEFuZERpc2FibGVkQXR0cmlidXRlcykgZnJvbSBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2FuZ2xlL2Jsb2IvZjdmMGI4YzNhYjIxYzUyY2MyOTE1MDQ4OTU5MzYxY2Y2Mjhk
OTVmMC9zcmMvdGVzdHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcAorInVzZSBzdHJpY3Qi
OwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oKTsKKwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIsIHVuZGVmaW5lZCwgMik7CisKKy8vIExvY2F0
aW9uIG9mICJwb3NpdGlvbiIgYXR0cmlidXRlIG11c3QgbWF0Y2ggYmV0d2VlbiBzaGFkZXJzLgor
dmFyIHNpbmdsZVByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ3NpbmdsZXZzaGFkZXIn
LCAnc2luZ2xlZnNoYWRlciddLCBbJ3Bvc2l0aW9uJ10sIFswXSk7Cit2YXIgZHVhbFByb2dyYW0g
PSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbJ2R1YWx2c2hhZGVyJywgJ2R1YWxmc2hhZGVyJ10sIFsn
cG9zaXRpb24nXSwgWzBdKTsKKwordmFyIHBvc2l0aW9uTG9jYXRpb24gPSBnbC5nZXRBdHRyaWJM
b2NhdGlvbihkdWFsUHJvZ3JhbSwgInBvc2l0aW9uIik7Cit2YXIgY29sb3JMb2NhdGlvbiA9IGds
LmdldEF0dHJpYkxvY2F0aW9uKGR1YWxQcm9ncmFtLCAiY29sb3IiKTsKK3ZhciBzaW5nbGVQb3Np
dGlvbkxvY2F0aW9uID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oc2luZ2xlUHJvZ3JhbSwgInBvc2l0
aW9uIik7CisKKworZ2wudXNlUHJvZ3JhbShzaW5nbGVQcm9ncmFtKTsKKwordmFyIHBvc2l0aW9u
cyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgIC0xLCAxLAorICAgIC0xLCAtMSwKKyAgICAxLCAt
MSwKKyAgICAtMSwgMSwKKyAgICAxLCAtMSwKKyAgICAxLCAxCitdKTsKKwordmFyIHBvc2l0aW9u
QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgcG9zaXRpb25CdWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHBvc2l0
aW9ucywgZ2wuU1RBVElDX0RSQVcpOworCit2YXIgdmVydGV4QXJyYXkgPSBnbC5jcmVhdGVWZXJ0
ZXhBcnJheSgpOworZ2wuYmluZFZlcnRleEFycmF5KHZlcnRleEFycmF5KTsKKworZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKK2dsLnZlcnRleEF0dHJpYlBv
aW50ZXIoc2luZ2xlUG9zaXRpb25Mb2NhdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsK
K2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNpbmdsZVBvc2l0aW9uTG9jYXRpb24pOworCitn
bC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKK3d0dS5jaGVja0NhbnZhcyhn
bCwgWzI1NSwgMCwgMCwgMjU1XSwgInNob3VsZCBiZSByZWQiKTsKKworZ2wuYmluZFZlcnRleEFy
cmF5KG51bGwpOworZ2wudXNlUHJvZ3JhbShkdWFsUHJvZ3JhbSk7CitnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CitnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKwordmFyIGdyZWVuQnVm
ZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cit2YXIgZ3JlZW4gPSBuZXcgVWludDhBcnJheSg0ICog
Nik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKSB7CisgIHZhciBjaSA9IGkgKiA0Owor
CisgIGdyZWVuW2NpXSA9IDA7CisgIGdyZWVuW2NpICsgMV0gPSAyNTU7CisgIGdyZWVuW2NpICsg
Ml0gPSAwOworICBncmVlbltjaSArIDNdID0gMjU1OworfQorCitnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgZ3JlZW5CdWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IGdyZWVuLCBnbC5TVEFUSUNfRFJBVyk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9j
YXRpb24sIDQsIGdsLlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoY29sb3JMb2NhdGlvbik7CisKK2dsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVT
LCAwLCA2KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJl
IG5vIGVycm9ycyIpOword3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hv
dWxkIGJlIGdyZWVuIik7CisKK2dsLmJpbmRWZXJ0ZXhBcnJheSh2ZXJ0ZXhBcnJheSk7CitnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKK3d0dS5jaGVja0NhbnZhcyhnbCwg
WzAsIDAsIDAsIDI1NV0sICJzaG91bGQgYmUgYmxhY2siKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi92ZXJ0
ZXhfYXJyYXlzL3ZlcnRleC1hcnJheS1vYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi92ZXJ0ZXhfYXJyYXlzL3ZlcnRl
eC1hcnJheS1vYmplY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjBhN2Y0ZWE2MDc0MThiYTkxNDM2NTlm
YTA5NGVjMzA1NWZjNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3ZlcnRleF9hcnJheXMvdmVydGV4
LWFycmF5LW9iamVjdC5odG1sCkBAIC0wLDAgKzEsNjcxIEBACivvu788IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCB2ZXJ0ZXhfYXJyYXlf
b2JqZWN0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDog
NTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzQgYV9jb2xvcjsKK3ZhcnlpbmcgdmVj
NCB2X2NvbG9yOwordm9pZCBtYWluKHZvaWQpIHsKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247CisgICAgdl9jb2xvciA9IGFfY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfRnJh
Z0NvbG9yID0gdl9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhl
IFZlcnRleCBBcnJheSBPYmplY3RzLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgbnVsbCwgMik7Cit2YXIg
dmFvID0gbnVsbDsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4
dCBleGlzdHMiKTsKKworICAgIHJ1bkJpbmRpbmdUZXN0KCk7CisgICAgcnVuT2JqZWN0VGVzdCgp
OworICAgIHJ1bkF0dHJpYnV0ZVRlc3RzKCk7CisgICAgcnVuQXR0cmlidXRlVmFsdWVUZXN0cygp
OworICAgIHJ1bkRyYXdUZXN0cygpOworICAgIHJ1blVuYm91bmREZWxldGVUZXN0cygpOworICAg
IHJ1bkJvdW5kRGVsZXRlVGVzdHMoKTsKKyAgICBydW5BcnJheUJ1ZmZlckJpbmRUZXN0cygpOwor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJl
IG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBydW5CaW5kaW5nVGVzdCgpIHsKKyAgICBkZWJ1
ZygiVGVzdGluZyBiaW5kaW5nIGVudW0iKTsKKworICAgIHNob3VsZEJlKCJnbC5WRVJURVhfQVJS
QVlfQklORElORyIsICIweDg1QjUiKTsKKworICAgIGdsLmdldFBhcmFtZXRlcihnbC5WRVJURVhf
QVJSQVlfQklORElORyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJWRVJURVhfQVJSQVlfQklORElORyBxdWVyeSBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8g
RGVmYXVsdCB2YWx1ZSBpcyBudWxsCisgICAgaWYgKGdsLmdldFBhcmFtZXRlcihnbC5WRVJURVhf
QVJSQVlfQklORElORykgPT09IG51bGwpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiRGVmYXVsdCB2
YWx1ZSBvZiBWRVJURVhfQVJSQVlfQklORElORyBpcyBudWxsIik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiRGVmYXVsdCB2YWx1ZSBvZiBWRVJURVhfQVJSQVlfQklORElORyBp
cyBub3QgbnVsbCIpOworICAgIH0KKworICAgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgYSBWQU8i
KTsKKyAgICB2YXIgdmFvMCA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgdmFyIHZhbzEg
PSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgIHNob3VsZEJlTnVsbCgiZ2wuZ2V0UGFyYW1l
dGVyKGdsLlZFUlRFWF9BUlJBWV9CSU5ESU5HKSIpOworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2
YW8wKTsKKyAgICBpZiAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFUlRFWF9BUlJBWV9CSU5ESU5HKSA9
PSB2YW8wKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImdsLmdldFBhcmFtZXRlcihnbC5WRVJURVhf
QVJSQVlfQklORElORykgaXMgZXhwZWN0ZWQgVkFPIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFUlRFWF9BUlJBWV9CSU5ESU5HKSBpcyBu
b3QgZXhwZWN0ZWQgVkFPIikKKyAgICB9CisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzEpOwor
ICAgIGlmIChnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVSVEVYX0FSUkFZX0JJTkRJTkcpID09IHZhbzEp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFUlRFWF9BUlJBWV9C
SU5ESU5HKSBpcyBleHBlY3RlZCBWQU8iKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuVkVSVEVYX0FSUkFZX0JJTkRJTkcpIGlzIG5vdCBleHBl
Y3RlZCBWQU8iKQorICAgIH0KKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8xKTsKKyAgICBz
aG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihnbC5WRVJURVhfQVJSQVlfQklORElORykiKTsK
KyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJiaW5kaW5nIGEgZGVsZXRlZCB2ZXJ0ZXggYXJyYXkg
b2JqZWN0Iik7CisgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAgIHNob3VsZEJlTnVs
bCgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFUlRFWF9BUlJBWV9CSU5ESU5HKSIpOworICAgIGdsLmRl
bGV0ZVZlcnRleEFycmF5KHZhbzEpOworfQorCitmdW5jdGlvbiBydW5PYmplY3RUZXN0KCkgewor
ICAgIGRlYnVnKCJUZXN0aW5nIG9iamVjdCBjcmVhdGlvbiIpOworCisgICAgdmFvID0gZ2wuY3Jl
YXRlVmVydGV4QXJyYXkoKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgImNyZWF0ZVZlcnRleEFycmF5IHNob3VsZCBub3Qgc2V0IGFuIGVycm9yIik7CisgICAgc2hv
dWxkQmVOb25OdWxsKCJ2YW8iKTsKKworICAgIC8vIEV4cGVjdCBmYWxzZSBpZiBuZXZlciBib3Vu
ZAorICAgIHNob3VsZEJlRmFsc2UoImdsLmlzVmVydGV4QXJyYXkodmFvKSIpOworICAgIGdsLmJp
bmRWZXJ0ZXhBcnJheSh2YW8pOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNWZXJ0ZXhBcnJheSh2
YW8pIik7CisgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAgIHNob3VsZEJlVHJ1ZSgi
Z2wuaXNWZXJ0ZXhBcnJheSh2YW8pIik7CisKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc1ZlcnRl
eEFycmF5KG51bGwpIik7CisKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8pOworICAgIHZh
byA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJ1bkF0dHJpYnV0ZVRlc3RzKCkgeworICAgIGRlYnVn
KCJUZXN0aW5nIGF0dHJpYnV0ZXMgd29yayBhY3Jvc3MgYmluZGluZ3MiKTsKKworICAgIHZhciBz
dGF0ZXMgPSBbXTsKKworICAgIHZhciBhdHRyQ291bnQgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFY
X1ZFUlRFWF9BVFRSSUJTKTsKKyAgICBmb3IgKHZhciBuID0gMDsgbiA8IGF0dHJDb3VudDsgbisr
KSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisKKyAgICAg
ICAgdmFyIHN0YXRlID0ge307CisgICAgICAgIHN0YXRlcy5wdXNoKHN0YXRlKTsKKworICAgICAg
ICB2YXIgdmFvID0gc3RhdGUudmFvID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAg
Z2wuYmluZFZlcnRleEFycmF5KHZhbyk7CisKKyAgICAgICAgdmFyIGVuYWJsZUFycmF5ID0gKG4g
JSAyID09IDApOworICAgICAgICBpZiAoZW5hYmxlQXJyYXkpIHsKKyAgICAgICAgICAgIGdsLmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KG4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGVuYWJsZUFycmF5KSB7CisgICAgICAgICAgICB2YXIgYnVmZmVyID0gc3RhdGUuYnVmZmVyID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgYnVmZmVyKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCAxMDI0LCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIobiwgMSArIG4gJSA0LCBnbC5GTE9BVCwgdHJ1ZSwgbiAqIDQsIG4gKiA0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChlbmFibGVBcnJheSkgeworICAgICAgICAgICAgdmFyIGVsYnVm
ZmVyID0gc3RhdGUuZWxidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIGds
LmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsYnVmZmVyKTsKKyAgICAgICAg
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDEwMjQsIGdsLlNUQVRJ
Q19EUkFXKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsK
KyAgICB9CisKKyAgICB2YXIgYW55TWlzbWF0Y2ggPSBmYWxzZTsKKyAgICBmb3IgKHZhciBuID0g
MDsgbiA8IGF0dHJDb3VudDsgbisrKSB7CisgICAgICAgIHZhciBzdGF0ZSA9IHN0YXRlc1tuXTsK
KworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkoc3RhdGUudmFvKTsKKworICAgICAgICB2YXIg
c2hvdWxkQmVFbmFibGVkID0gKG4gJSAyID09IDApOworICAgICAgICB2YXIgaXNFbmFibGVkID0g
Z2wuZ2V0VmVydGV4QXR0cmliKG4sIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCk7Cisg
ICAgICAgIGlmIChzaG91bGRCZUVuYWJsZWQgIT0gaXNFbmFibGVkKSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgbm90IHByZXNlcnZlZCIpOwor
ICAgICAgICAgICAgYW55TWlzbWF0Y2ggPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmFy
IGJ1ZmZlciA9IGdsLmdldFZlcnRleEF0dHJpYihuLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JV
RkZFUl9CSU5ESU5HKTsKKyAgICAgICAgaWYgKHNob3VsZEJlRW5hYmxlZCkgeworICAgICAgICAg
ICAgaWYgKGJ1ZmZlciA9PSBzdGF0ZS5idWZmZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBNYXRj
aGVkCisgICAgICAgICAgICAgICAgaWYgKChnbC5nZXRWZXJ0ZXhBdHRyaWIobiwgZ2wuVkVSVEVY
X0FUVFJJQl9BUlJBWV9TSVpFKSA9PSAxICsgbiAlIDQpICYmCisgICAgICAgICAgICAgICAgICAg
IChnbC5nZXRWZXJ0ZXhBdHRyaWIobiwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKSA9PSBn
bC5GTE9BVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGdsLmdldFZlcnRleEF0dHJpYihuLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQpID09IHRydWUpICYmCisgICAgICAgICAg
ICAgICAgICAgIChnbC5nZXRWZXJ0ZXhBdHRyaWIobiwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9T
VFJJREUpID09IG4gKiA0KSAmJgorICAgICAgICAgICAgICAgICAgICAoZ2wuZ2V0VmVydGV4QXR0
cmliT2Zmc2V0KG4sIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUikgPT0gbiAqIDQpKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoZWQKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJWRVJURVhfQVRUUklCX0FSUkFZXyog
bm90IHByZXNlcnZlZCIpOworICAgICAgICAgICAgICAgICAgICBhbnlNaXNtYXRjaCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HIG5vdCBwcmVz
ZXJ2ZWQiKTsKKyAgICAgICAgICAgICAgICBhbnlNaXNtYXRjaCA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBHTF9DVVJSRU5UX1ZFUlRFWF9B
VFRSSUIgaXMgbm90IHByZXNlcnZlZAorICAgICAgICAgICAgaWYgKGJ1ZmZlcikgeworICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcg
bm90IHByZXNlcnZlZCIpOworICAgICAgICAgICAgICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBlbGJ1ZmZlciA9IGdsLmdldFBh
cmFtZXRlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKTsKKyAgICAgICAgaWYgKHNo
b3VsZEJlRW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKGVsYnVmZmVyID09IHN0YXRlLmVsYnVm
ZmVyKSB7CisgICAgICAgICAgICAgICAgLy8gTWF0Y2hlZAorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5H
IG5vdCBwcmVzZXJ2ZWQiKTsKKyAgICAgICAgICAgICAgICBhbnlNaXNtYXRjaCA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZWxidWZmZXIg
PT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIE1hdGNoZWQKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklO
RElORyBub3QgcHJlc2VydmVkIik7CisgICAgICAgICAgICAgICAgYW55TWlzbWF0Y2ggPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJh
eShudWxsKTsKKyAgICBpZiAoIWFueU1pc21hdGNoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFs
bCBhdHRyaWJ1dGVzIHByZXNlcnZlZCBhY3Jvc3MgYmluZGluZ3MiKTsKKyAgICB9CisKKyAgICBm
b3IgKHZhciBuID0gMDsgbiA8IGF0dHJDb3VudDsgbisrKSB7CisgICAgICAgIHZhciBzdGF0ZSA9
IHN0YXRlc1tuXTsKKyAgICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkoc3RhdGUudmFvKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkF0dHJpYnV0ZVZhbHVlVGVzdHMoKSB7CisgICAgZGVidWco
IlRlc3RpbmcgdGhhdCBhdHRyaWJ1dGUgdmFsdWVzIGFyZSBub3QgYXR0YWNoZWQgdG8gYmluZGlu
Z3MiKTsKKworICAgIHZhciB2OworICAgIHZhciB2YW8wID0gZ2wuY3JlYXRlVmVydGV4QXJyYXko
KTsKKyAgICB2YXIgYW55RmFpbGVkID0gZmFsc2U7CisKKyAgICBnbC5iaW5kVmVydGV4QXJyYXko
bnVsbCk7CisgICAgZ2wudmVydGV4QXR0cmliNGYoMCwgMCwgMSwgMiwgMyk7CisKKyAgICB2ID0g
Z2wuZ2V0VmVydGV4QXR0cmliKDAsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQik7CisgICAgaWYg
KCEodlswXSA9PSAwICYmIHZbMV0gPT0gMSAmJiB2WzJdID09IDIgJiYgdlszXSA9PSAzKSkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJWZXJ0ZXggYXR0cmliIHZhbHVlIG5vdCByb3VuZC10cmlwcGVk
PyIpOworICAgICAgICBhbnlGYWlsZWQgPSB0cnVlOworICAgIH0KKworICAgIGdsLmJpbmRWZXJ0
ZXhBcnJheSh2YW8wKTsKKworICAgIHYgPSBnbC5nZXRWZXJ0ZXhBdHRyaWIoMCwgZ2wuQ1VSUkVO
VF9WRVJURVhfQVRUUklCKTsKKyAgICBpZiAoISh2WzBdID09IDAgJiYgdlsxXSA9PSAxICYmIHZb
Ml0gPT0gMiAmJiB2WzNdID09IDMpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlZlcnRleCBhdHRy
aWIgdmFsdWUgcmVzZXQgYWNyb3NzIGJpbmRpbmdzIik7CisgICAgICAgIGFueUZhaWxlZCA9IHRy
dWU7CisgICAgfQorCisgICAgZ2wudmVydGV4QXR0cmliNGYoMCwgNCwgNSwgNiwgNyk7CisgICAg
Z2wuYmluZFZlcnRleEFycmF5KG51bGwpOworCisgICAgdiA9IGdsLmdldFZlcnRleEF0dHJpYigw
LCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpOworICAgIGlmICghKHZbMF0gPT0gNCAmJiB2WzFd
ID09IDUgJiYgdlsyXSA9PSA2ICYmIHZbM10gPT0gNykpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
VmVydGV4IGF0dHJpYiB2YWx1ZSBib3VuZCB0byBidWZmZXIiKTsKKyAgICAgICAgYW55RmFpbGVk
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWFueUZhaWxlZCkgeworICAgICAgICB0ZXN0UGFz
c2VkKCJWZXJ0ZXggYXR0cmlidXRlIHZhbHVlcyBhcmUgbm90IGF0dGFjaGVkIHRvIGJpbmRpbmdz
IikKKyAgICB9CisKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkobnVsbCk7CisgICAgZ2wuZGVsZXRl
VmVydGV4QXJyYXkodmFvMCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkRyYXdUZXN0cygpIHsKKyAgICBk
ZWJ1ZygiVGVzdGluZyBkcmF3cyB3aXRoIHZhcmlvdXMgVkFPIGJpbmRpbmdzIik7CisKKyAgICBj
YW52YXMud2lkdGggPSA1MDsgY2FudmFzLmhlaWdodCA9IDUwOworICAgIGdsLnZpZXdwb3J0KDAs
IDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICB2YXIgdmFvMCA9IGdsLmNy
ZWF0ZVZlcnRleEFycmF5KCk7CisgICAgdmFyIHZhbzEgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgp
OworCisgICAgdmFyIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gMDsKKyAgICB2YXIgb3B0X3RleGNv
b3JkTG9jYXRpb24gPSAxOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBTaW1wbGVUZXh0
dXJlUHJvZ3JhbShnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9u
KTsKKworICAgIGZ1bmN0aW9uIHNldHVwUXVhZChzKSB7CisgICAgICAgIHZhciB2ZXJ0ZXhPYmpl
Y3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgICAxLjAgKiBzLCAgMS4wICogcywg
MC4wLAorICAgICAgICAgICAgLTEuMCAqIHMsICAxLjAgKiBzLCAwLjAsCisgICAgICAgICAgICAt
MS4wICogcywgLTEuMCAqIHMsIDAuMCwKKyAgICAgICAgICAgICAxLjAgKiBzLCAgMS4wICogcywg
MC4wLAorICAgICAgICAgICAgLTEuMCAqIHMsIC0xLjAgKiBzLCAwLjAsCisgICAgICAgICAgICAg
MS4wICogcywgLTEuMCAqIHMsIDAuMF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KG9wdF9wb3NpdGlvbkxvY2F0aW9uKTsKKyAgICAgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcihvcHRfcG9zaXRpb25Mb2NhdGlvbiwgMywgZ2wuRkxPQVQsIGZh
bHNlLCAwLCAwKTsKKworICAgICAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3Qp
OworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJh
eShbCisgICAgICAgICAgICAxLjAgKiBzLCAxLjAgKiBzLAorICAgICAgICAgICAgMC4wICogcywg
MS4wICogcywKKyAgICAgICAgICAgIDAuMCAqIHMsIDAuMCAqIHMsCisgICAgICAgICAgICAxLjAg
KiBzLCAxLjAgKiBzLAorICAgICAgICAgICAgMC4wICogcywgMC4wICogcywKKyAgICAgICAgICAg
IDEuMCAqIHMsIDAuMCAqIHNdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShvcHRfdGV4Y29vcmRMb2NhdGlvbik7CisgICAgICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIob3B0X3RleGNvb3JkTG9jYXRpb24sIDIsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHJlYWRMb2NhdGlvbih4LCB5KSB7CisgICAg
ICAgIHZhciBwaXhlbHMgPSBuZXcgVWludDhBcnJheSgxICogMSAqIDQpOworICAgICAgICBnbC5y
ZWFkUGl4ZWxzKHgsIHksIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscyk7
CisgICAgICAgIHJldHVybiBwaXhlbHM7CisgICAgfTsKKyAgICBmdW5jdGlvbiB0ZXN0UGl4ZWwo
YmxvY2tMaXN0LCBhbGxvd0xpc3QpIHsKKyAgICAgICAgZnVuY3Rpb24gdGVzdExpc3QobGlzdCwg
ZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbGlzdC5sZW5ndGg7
IG4rKykgeworICAgICAgICAgICAgICAgIHZhciBsID0gbGlzdFtuXTsKKyAgICAgICAgICAgICAg
ICB2YXIgeCA9IC1NYXRoLmZsb29yKGwgKiBjYW52YXMud2lkdGggLyAyKSArIGNhbnZhcy53aWR0
aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSAtTWF0aC5mbG9vcihsICogY2FudmFzLmhl
aWdodCAvIDIpICsgY2FudmFzLmhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJj
ZSA9IHJlYWRMb2NhdGlvbih4LCB5KTsKKyAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc291
cmNlWzBdIC0gZXhwZWN0ZWQpID4gMikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRlc3RMaXN0KGJsb2NrTGlzdCwgMCkg
JiYgdGVzdExpc3QoYWxsb3dMaXN0LCAyNTUpOworICAgIH07CisgICAgZnVuY3Rpb24gdmVyaWZ5
RHJhdyhkcmF3TnVtYmVyLCBzKSB7CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCk7CisgICAgICAgIHZhciBibG9ja0xpc3QgPSBbXTsKKyAgICAgICAgdmFyIGFsbG93TGlzdCA9
IFtdOworICAgICAgICB2YXIgcG9pbnRzID0gWzAuMCwgMC4yLCAwLjQsIDAuNiwgMC44LCAxLjBd
OworICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHBvaW50cy5sZW5ndGg7IG4rKykgeworICAg
ICAgICAgICAgaWYgKHBvaW50c1tuXSA8PSBzKSB7CisgICAgICAgICAgICAgICAgYmxvY2tMaXN0
LnB1c2gocG9pbnRzW25dKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
YWxsb3dMaXN0LnB1c2gocG9pbnRzW25dKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAodGVzdFBpeGVsKGJsb2NrTGlzdCwgYWxsb3dMaXN0KSkgeworICAgICAgICAgICAg
dGVzdFBhc3NlZCgiRHJhdyAiICsgZHJhd051bWJlciArICIgcGFzc2VkIHBpeGVsIHRlc3QiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRyYXcgIiArIGRyYXdO
dW1iZXIgKyAiIGZhaWxlZCBwaXhlbCB0ZXN0Iik7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
Ly8gU2V0dXAgYWxsIGJpbmRpbmdzCisgICAgc2V0dXBRdWFkKDEpOworICAgIGdsLmJpbmRWZXJ0
ZXhBcnJheSh2YW8wKTsKKyAgICBzZXR1cFF1YWQoMC41KTsKKyAgICBnbC5iaW5kVmVydGV4QXJy
YXkodmFvMSk7CisgICAgc2V0dXBRdWFkKDAuMjUpOworCisgICAgLy8gVmVyaWZ5IGRyYXdpbmcK
KyAgICBnbC5iaW5kVmVydGV4QXJyYXkobnVsbCk7CisgICAgdmVyaWZ5RHJhdygwLCAxKTsKKyAg
ICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMCk7CisgICAgdmVyaWZ5RHJhdygxLCAwLjUpOworICAg
IGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8xKTsKKyAgICB2ZXJpZnlEcmF3KDIsIDAuMjUpOworCisg
ICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZh
bzApOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzEpOworCisgICAgLy8gRGlzYWJsZSBn
bG9iYWwgdmVydGV4IGF0dHJpYiBhcnJheQorICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShvcHRfcG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KG9wdF90ZXhjb29yZExvY2F0aW9uKTsKKworICAgIC8vIERyYXcgd2l0aCB2YWx1ZXMuCisgICAg
dmFyIHBvc2l0aW9uTG9jID0gMDsKKyAgICB2YXIgY29sb3JMb2MgPSAxOworICAgIHZhciBncmlk
UmVzID0gMTsKKyAgICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgcG9zaXRpb25M
b2MpOworICAgIC8vIFNldCB0aGUgdmVydGV4IGNvbG9yIHRvIHJlZC4KKyAgICBnbC52ZXJ0ZXhB
dHRyaWI0Zihjb2xvckxvYywgMSwgMCwgMCwgMSk7CisKKyAgICB2YXIgdmFvMCA9IGdsLmNyZWF0
ZVZlcnRleEFycmF5KCk7CisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIHZhciBw
cm9ncmFtID0gd3R1LnNldHVwU2ltcGxlVmVydGV4Q29sb3JQcm9ncmFtKGdsLCBwb3NpdGlvbkxv
YywgY29sb3JMb2MpOworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlkUmVzLCBwb3Np
dGlvbkxvYyk7CisgICAgLy8gU2V0IHRoZSB2ZXJ0ZXggY29sb3IgdG8gZ3JlZW4uCisgICAgZ2wu
dmVydGV4QXR0cmliNGYoY29sb3JMb2MsIDAsIDEsIDAsIDEpOworICAgIHd0dS5jbGVhckFuZERy
YXdJbmRleGVkUXVhZChnbCwgZ3JpZFJlcyk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwg
MjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIikKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJh
eSh2YW8wKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMpOwor
ICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVl
biIpCit9CisKK2Z1bmN0aW9uIHJ1blVuYm91bmREZWxldGVUZXN0cygpIHsKKyAgICBkZWJ1Zygi
VGVzdGluZyB1c2luZyBidWZmZXJzIHRoYXQgYXJlIGRlbGV0ZWQgd2hlbiBhdHRhY2hlZCB0byB1
bmJvdW5kIFZBT3MiKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwg
WyJ2c2hhZGVyIiwgImZzaGFkZXIiXSwgWyJhX3Bvc2l0aW9uIiwgImFfY29sb3IiXSk7CisgICAg
Z2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIHZhciBwb3NpdGlvbkJ1ZmZlciA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlv
bkJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YSgKKyAgICAgICAgZ2wuQVJSQVlfQlVGRkVSLAor
ICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgMS4wLCAgMS4wLAorICAgICAg
ICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgLTEuMCwgLTEuMCwKKyAgICAgICAgICAgMS4wLCAt
MS4wXSksCisgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIHZhciBjb2xvcnMgPSBbCisg
ICAgICBbMjU1LCAgIDAsICAgMCwgMjU1XSwKKyAgICAgIFsgIDAsIDI1NSwgICAwLCAyNTVdLAor
ICAgICAgWyAgMCwgICAwLCAyNTUsIDI1NV0sCisgICAgICBbICAwLCAyNTUsIDI1NSwgMjU1XQor
ICAgIF07CisgICAgdmFyIGNvbG9yQnVmZmVycyA9IFtdOworICAgIHZhciBlbGVtZW50QnVmZmVy
cyA9IFtdOworICAgIHZhciB2YW9zID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNv
bG9ycy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIHZhciB2YW8gPSBnbC5jcmVhdGVWZXJ0ZXhBcnJh
eSgpOworICAgICAgdmFvcy5wdXNoKHZhbyk7CisgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFv
KTsKKyAgICAgIC8vIFNldCB0aGUgcG9zaXRpb24gYnVmZmVyCisgICAgICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25CdWZmZXIpOworICAgICAgZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoMCk7CisgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgIHZhciBlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgICBlbGVtZW50QnVmZmVycy5wdXNoKGVsZW1lbnRCdWZmZXIpOworICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7
CisgICAgICBnbC5idWZmZXJEYXRhKAorICAgICAgICAgIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVS
LAorICAgICAgICAgIG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAwLCAyLCAzXSksCisgICAgICAg
ICAgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAvLyBTZXR1cCB0aGUgY29sb3IgYXR0cmliCisg
ICAgICB2YXIgY29sb3IgPSBjb2xvcnNbaWldOworICAgICAgaWYgKGlpIDwgMykgeworICAgICAg
ICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY29sb3JCdWZm
ZXJzLnB1c2goY29sb3JCdWZmZXIpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgY29sb3JCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZF
UiwgbmV3IFVpbnQ4QXJyYXkoCisgICAgICAgICAgWyBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9y
WzJdLCBjb2xvclszXSwKKyAgICAgICAgICAgIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0s
IGNvbG9yWzNdLAorICAgICAgICAgICAgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29s
b3JbM10sCisgICAgICAgICAgICBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBjb2xvclsz
XQorICAgICAgICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KDEpOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGds
LlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ2wu
dmVydGV4QXR0cmliNGYoMSwgY29sb3JbMF0gLyAyNTUsIGNvbG9yWzFdIC8gMjU1LCBjb2xvclsy
XSAvIDI1NSwgY29sb3JbM10gLyAyNTUpOworICAgICAgfQorICAgIH0KKworICAgIC8vIGRlbGV0
ZSB0aGUgY29sb3IgYnVmZmVycyBBTkQgdGhlIHBvc2l0aW9uIGJ1ZmZlci4KKyAgICBnbC5iaW5k
VmVydGV4QXJyYXkobnVsbCk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9yQnVmZmVy
cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihjb2xvckJ1ZmZlcnNbaWld
KTsKKyAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihlbGVtZW50QnVmZmVyc1tpaV0pOworICAgICAgZ2wu
YmluZFZlcnRleEFycmF5KHZhb3NbaWldKTsKKyAgICAgIHZhciBib3VuZEJ1ZmZlciA9IGdsLmdl
dFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HKTsK
KyAgICAgIC8vIFRoZSBidWZmZXJzIHNob3VsZCBzdGlsbCBiZSB2YWxpZCBhdCB0aGlzIHBvaW50
LCBzaW5jZSBpdCB3YXMgYXR0YWNoZWQgdG8gdGhlIFZBTworICAgICAgaWYoYm91bmRCdWZmZXIg
IT0gY29sb3JCdWZmZXJzW2lpXSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJidWZmZXIgcmVtb3Zl
ZCB0b28gZWFybHkiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZ2wuYmluZFZlcnRleEFycmF5KG51
bGwpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihwb3NpdGlvbkJ1ZmZlcik7CisKKyAgICAvLyBSZW5k
ZXIgd2l0aCB0aGUgZGVsZXRlZCBidWZmZXJzLiBBcyB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IFZB
T3MgdGhleQorICAgIC8vIG11c3Qgc3RpbGwgYmUgYXJvdW5kLgorICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICB2YXIgY29sb3IgPSBjb2xvcnNb
aWldOworICAgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhb3NbaWldKTsKKyAgICAgIGdsLmRyYXdF
bGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX0JZVEUsIDApOworICAgICAgd3R1
LmNoZWNrQ2FudmFzKGdsLCBjb2xvciwgInNob3VsZCBiZSAiICsgY29sb3IpOworICAgIH0KKwor
ICAgIC8vIENsZWFuIHVwLgorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBjb2xvckJ1ZmZlcnMu
bGVuZ3RoOyArK2lpKSB7CisgICAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW9zW2lpXSk7Cisg
ICAgfQorCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9yQnVmZmVycy5sZW5ndGg7ICsr
aWkpIHsKKyAgICAgIC8vIFRoZSBidWZmZXJzIHNob3VsZCBubyBsb25nZXIgYmUgdmFsaWQgbm93
IHRoYXQgdGhlIFZBT3MgYXJlIGRlbGV0ZWQKKyAgICAgIGlmKGdsLmlzQnVmZmVyKGNvbG9yQnVm
ZmVyc1tpaV0pKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImJ1ZmZlciBub3QgcHJvcGVybHkgY2xl
YW5lZCB1cCBhZnRlciBWQU8gZGVsZXRpb24iKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHJ1bkJvdW5kRGVsZXRlVGVzdHMoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgdXNpbmcgYnVm
ZmVycyB0aGF0IGFyZSBkZWxldGVkIHdoZW4gYXR0YWNoZWQgdG8gYm91bmQgVkFPcyIpOworCisg
ICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIiLCAiZnNoYWRl
ciJdLCBbImFfcG9zaXRpb24iLCAiYV9jb2xvciJdKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dy
YW0pOworCisgICAgdmFyIHBvc2l0aW9uQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAgICBnbC5i
dWZmZXJEYXRhKAorICAgICAgICBnbC5BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBGbG9hdDMy
QXJyYXkoWworICAgICAgICAgICAxLjAsICAxLjAsCisgICAgICAgICAgLTEuMCwgIDEuMCwKKyAg
ICAgICAgICAtMS4wLCAtMS4wLAorICAgICAgICAgICAxLjAsIC0xLjBdKSwKKyAgICAgICAgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgLy8gU2V0dXAgdGhlIGNvbG9yIGF0dHJpYgorICAgIHZhciBj
b2xvckJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIG5ldyBVaW50OEFycmF5KAorICAgICAgWyAyNTUsICAgMCwgICAwLCAyNTUsCisgICAgICAg
ICAgMCwgMjU1LCAgIDAsIDI1NSwKKyAgICAgICAgICAwLCAgIDAsIDI1NSwgMjU1LAorICAgICAg
ICAgIDAsIDI1NSwgMjU1LCAyNTUKKyAgICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2
YXIgdmFvcyA9IFtdOworICAgIHZhciBlbGVtZW50QnVmZmVycyA9IFtdOworICAgIGZvciAodmFy
IGlpID0gMDsgaWkgPCA0OyArK2lpKSB7CisgICAgICB2YXIgdmFvID0gZ2wuY3JlYXRlVmVydGV4
QXJyYXkoKTsKKyAgICAgIHZhb3MucHVzaCh2YW8pOworICAgICAgZ2wuYmluZFZlcnRleEFycmF5
KHZhbyk7CisKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbkJ1
ZmZlcik7CisgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgICAg
dmFyIGVsZW1lbnRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgIGVsZW1lbnRCdWZm
ZXJzLnB1c2goZWxlbWVudEJ1ZmZlcik7CisgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyKTsKKyAgICAgIGdsLmJ1ZmZlckRhdGEoCisgICAg
ICAgICAgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsCisgICAgICAgICAgbmV3IFVpbnQ4QXJyYXko
WzAsIDEsIDIsIDAsIDIsIDNdKSwKKyAgICAgICAgICBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvckJ1ZmZlcik7CisgICAgICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MSwgNCwgZ2wuVU5TSUdORURfQllURSwgdHJ1ZSwgMCwgMCk7CisgICAgfQorCisgICAgLy8gZGVs
ZXRlIHRoZSBjb2xvciBidWZmZXJzIEFORCB0aGUgcG9zaXRpb24gYnVmZmVyLCB0aGF0IGFyZSBi
b3VuZCB0byB0aGUgY3VycmVudCBWQU8KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdmFvcy5s
ZW5ndGg7ICsraWkpIHsKKyAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW9zW2lpXSk7CisKKyAg
ICAgIGdsLmRlbGV0ZUJ1ZmZlcihjb2xvckJ1ZmZlcik7CisgICAgICBnbC5kZWxldGVCdWZmZXIo
cG9zaXRpb25CdWZmZXIpOworCisgICAgICAvLyBBZnRlciB0aGUgZmlyc3QgaXRlcmF0aW9uLCBk
ZWxldGVCdWZmZXIgd2lsbCBiZSBhIG5vLW9wLCBhbmQgd2lsbCBub3QgdW5iaW5kIGl0cyBtYXRj
aGluZworICAgICAgLy8gYmluZCBwb2ludHMgb24gdGhlIG5vdy1ib3VuZCBWQU8gbGlrZSBpdCBk
aWQgb24gdGhlIGZpcnN0IGl0ZXJhdGlvbi4KKyAgICAgIHZhciBleHBlY3RSZXRhaW5lZCA9IChp
aSAhPSAwKTsKKyAgICAgIHZhciBzaG91bGRCZVN0ciA9IChleHBlY3RSZXRhaW5lZCA/ICJyZXRh
aW5lZCIgOiAiY2xlYXJlZCIpOworCisgICAgICB2YXIgYm91bmRQb3NpdGlvbkJ1ZmZlciA9IGds
LmdldFZlcnRleEF0dHJpYigwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5H
KTsKKyAgICAgIGlmIChleHBlY3RSZXRhaW5lZCAhPSAoYm91bmRQb3NpdGlvbkJ1ZmZlciA9PSBw
b3NpdGlvbkJ1ZmZlcikpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUG9zaXRpb24gYXR0cmliIHN0
b3JlZCBidWZmZXIgc2hvdWxkIGJlICIgKyBzaG91bGRCZVN0ciArICIuIik7CisgICAgICB9CisK
KyAgICAgIHZhciBib3VuZENvbG9yQnVmZmVyID0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpOworICAgICAgaWYgKGV4cGVjdFJldGFp
bmVkICE9IChib3VuZENvbG9yQnVmZmVyID09IGNvbG9yQnVmZmVyKSkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJDb2xvciBhdHRyaWIgc3RvcmVkIGJ1ZmZlciBzaG91bGQgYmUgIiArIHNob3VsZEJl
U3RyICsgIi4iKTsKKyAgICAgIH0KKworICAgICAgLy8gSWYgcmV0YWluZWQsIGV2ZXJ5dGhpbmcg
c2hvdWxkIHN0aWxsIHdvcmsuIElmIGNsZWFyZWQsIGRyYXdpbmcgc2hvdWxkIG5vdyBmYWlsLgor
ICAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwg
MCk7CisgICAgICB2YXIgZXhwZWN0ZWRFcnJvciA9IChleHBlY3RSZXRhaW5lZCA/IGdsLk5PX0VS
Uk9SIDogZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZXhwZWN0ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkRyYXcgY2FsbCBz
aG91bGQgIiArIChleHBlY3RSZXRhaW5lZCA/ICJub3QgIiA6ICIiKSArICJmYWlsLiIpOworCisg
ICAgICBpZiAoZ2wuaXNCdWZmZXIocG9zaXRpb25CdWZmZXIpKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIlJlZmVyZW5jZXMgZnJvbSB1bmJvdW5kIFZBT3MgZG9uJ3Qga2VlcCBQb3NpdGlvbiBidWZm
ZXIgYWxpdmUuIik7CisgICAgICB9CisgICAgICBpZiAoZ2wuaXNCdWZmZXIoY29sb3JCdWZmZXIp
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlJlZmVyZW5jZXMgZnJvbSB1bmJvdW5kIFZBT3MgZG9u
J3Qga2VlcCBDb2xvciBidWZmZXIgYWxpdmUiKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHJ1bkFycmF5QnVmZmVyQmluZFRlc3RzKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQg
VkFPcyBkb24ndCBlZmZlY3QgQVJSQVlfQlVGRkVSIGJpbmRpbmcuIik7CisKKyAgICBnbC5iaW5k
VmVydGV4QXJyYXkobnVsbCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsiYV9jb2xvciIsICJhX3Bvc2l0aW9uIl0pOwor
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAvLyBjcmVhdGUgc2hhcmVkIGVsZW1l
bnQgYnV1ZmZlcgorICAgIHZhciBlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgLy8gYmluZCB0byBkZWZhdWx0CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YSgKKyAgICAgICAgZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAw
LCAyLCAzXSksCisgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIC8vIGZpcnN0IGNyZWF0
ZSB0aGUgYnVmZmVycyBmb3Igbm8gdmFvIGRyYXcuCisgICAgdmFyIG5vblZBT0NvbG9yQnVmZmVy
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IG5vblZBT0NvbG9yQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
bmV3IFVpbnQ4QXJyYXkoCisgICAgICBbIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAwLCAyNTUs
IDAsIDI1NSwKKyAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisgICAgICAgIDAsIDI1NSwgMCwgMjU1
LAorICAgICAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgIC8vIHNoYXJlZCBwb3NpdGlvbiBi
dWZmZXIuCisgICAgdmFyIHBvc2l0aW9uQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmZmVyKTsKKyAgICBnbC5i
dWZmZXJEYXRhKAorICAgICAgICBnbC5BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBGbG9hdDMy
QXJyYXkoWworICAgICAgICAgICAxLjAsICAxLjAsCisgICAgICAgICAgLTEuMCwgIDEuMCwKKyAg
ICAgICAgICAtMS4wLCAtMS4wLAorICAgICAgICAgICAxLjAsIC0xLjBdKSwKKyAgICAgICAgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgLy8gYXR0YWNoIHBvc2l0aW9uIGJ1ZmZlciB0byBkZWZhdWx0
CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgLy8gbm93IGNyZWF0
ZSB2YW8KKyAgICB2YXIgdmFvID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICBnbC5iaW5k
VmVydGV4QXJyYXkodmFvKTsKKworICAgIC8vIGF0dGFjaCB0aGUgcG9zaXRpb24gYnVmZmVyIHZh
bworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJp
YlBvaW50ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHZhciB2YW9Db2xv
ckJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuVU5TSUdORURfQllU
RSwgdHJ1ZSwgMCwgMCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZhb0Nv
bG9yQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4
QXJyYXkoCisgICAgICBbIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwK
KyAgICAgICAgMjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAg
XSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsK
KyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIHRydWUs
IDAsIDApOworCisgICAgLy8gbm93IHNldCB0aGUgYnVmZmVyIGJhY2sgdG8gdGhlIG5vblZBT0Nv
bG9yQnVmZmVyCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG5vblZBT0NvbG9y
QnVmZmVyKTsKKworICAgIC8vIGJpbmQgdG8gdmFvCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGds
LlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgICAgd3R1LmNoZWNrQ2FudmFz
KGdsLCBbMjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworCisgICAgLy8gdW5iaW5k
IHZhbworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKworICAgIC8vIEF0IHRoaXMgcG9p
bnQgdGhlIG5vblZBT0NvbG9yQnVmZmVyIHNob3VsZCBiZSBzdGlsbCBiZSBib3VuZC4KKyAgICAv
LyBJZiB0aGUgV2ViR0wgaW1wbCBpcyBlbXVsYXRpbmcgVkFPcyBpdCBtdXN0IG1ha2Ugc3VyZQor
ICAgIC8vIGl0IGNvcnJlY3RseSByZXN0b3JlcyB0aGlzIGJpbmRpbmcuCisgICAgZ2wuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBn
bC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCAwKTsKKyAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJ
QU5HTEVTLCA2LCBnbC5VTlNJR05FRF9CWVRFLCAwKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2ws
IFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30KKworZGVidWcoIiIpOwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE5M2VmNzE4NjgwMjU4NzcxNGZjNjYyNzQ0ZmQw
MGM5YWJkN2Y1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvTElDRU5TRQpAQCAtMCwwICsxLDIwMiBAQAorCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAg
ICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQg
Q09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAg
MS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBh
bmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0
aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4K
KworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50
aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFu
dGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUg
dW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMg
dGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAg
ICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVm
aW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3Ig
aW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Yg
c3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3Ig
KGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAg
ICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBz
dWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRp
dmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFu
dGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRo
ZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRp
bmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9u
CisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0
IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAg
ICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVk
aW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVy
YXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlh
IHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlw
LCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxl
IHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5v
dGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAo
YW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAi
RGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ug
b3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20p
IHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBh
bm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICBy
ZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9y
IHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNo
YWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwg
b3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisg
ICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29u
dHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZwor
ICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRp
b25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3Mg
dGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5z
b3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAg
ICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1p
dCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9z
ZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0g
b2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAg
ICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQg
bm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5n
IGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJh
Y2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQor
ICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmlu
ZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNv
bnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0
aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAg
ICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwg
b3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBo
YXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNv
cnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGlj
ZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMg
TGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVh
bCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZy
ZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHBy
ZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1Ymxp
Y2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBh
bmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAg
My4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25k
aXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdy
YW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUs
IG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBz
dGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUs
CisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0
cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkg
dG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1
dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJp
YnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihz
KQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMg
c3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2Fp
bnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVy
Y2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENv
bnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVj
dAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBh
dGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZv
ciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxp
dGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJv
ZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRp
dmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1v
ZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQg
WW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlv
dSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAg
ICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAo
YikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBu
b3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5k
CisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkg
RGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5
cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3Rp
Y2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGlu
ZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAg
ICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBp
bmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRp
c3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRl
IG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRp
b24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwg
ZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRv
IGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAg
ICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBk
aXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdp
dGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92
aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRo
aW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisg
ICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVh
ci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5m
b3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhl
IExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90
aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3Np
ZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0
aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1
dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcg
dGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0
ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRp
b25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9y
IHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25z
LCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJv
dmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2Yg
dGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0
YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9u
cy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250
cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29y
aworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMg
YW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRp
b25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92
ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRl
cm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0
ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKwor
ICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24g
dG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3Ms
IG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVp
cmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisg
ICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRo
ZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
TGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBw
cm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3
YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5U
LCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAg
ICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFu
ZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBv
ZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2Yg
TGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAg
d2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhl
cndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMg
ZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZ
b3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwK
KyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFj
dGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2Yg
dGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1
dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29y
ayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBh
bGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1
Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5
IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9u
YWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVy
aXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFu
ZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRl
bW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0
cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0
aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3du
IGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisg
ICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBp
bmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxl
c3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0
ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNj
ZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBF
TkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0
aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBh
Y2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9p
bGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltd
IgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4g
KERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUg
ZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhl
IGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xh
c3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAg
ICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2ll
cgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisg
ICBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xl
czIvc2hhZGVycy9jb25kaXRpb25hbHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbmRpdGlvbmFscy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4MDMwNGM1NTE0OGY2MjhiNWEzZWU1Njk2NmQxNjg1MGU3NmY4YjkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9jb25kaXRpb25hbHMuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRl
ciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2NvbmRpdGlvbmFs
cyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CisKK3Zh
ciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93Lmxv
Y2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHF1
ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZh
bHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9u
ZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGli
cmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbmRpdGlvbmFscy50ZXN0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvY29uZGl0aW9uYWxzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I1ZjU5MTE0OTBlOTE2ZDk3ODYw
YzcyYzliZTNhZTY3MjQ2YzBjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbmRp
dGlvbmFscy50ZXN0CkBAIC0wLDAgKzEsMzMzIEBACitncm91cCBpZiAiSWYgU3RhdGVtZW50cyIK
KworCWNhc2Ugc2luZ2xlX3N0YXRlbWVudAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQg
aW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAg
fCAxLjAgfCAxLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAg
PSAwLjA7CisJCQkJaWYgKGluMCA+PSAxLjApCisJCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNvbXBvdW5kX3N0YXRlbWVudAorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91
dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAxLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBv
dXQxID0gWyAxLjAgfCAwLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCW91dDAgPSAwLjA7CisJCQkJb3V0MSA9IDEuMDsKKwkJCQlpZiAoaW4wID49IDEuMCkK
KwkJCQl7CisJCQkJCW91dDAgPSAxLjA7CisJCQkJCW91dDEgPSAwLjA7CisJCQkJfQorCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBzZXF1ZW5jZV9zdGF0ZW1lbnRzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCBdOwor
CQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IDEuMCBdOworCQkJb3V0cHV0IGZs
b2F0IG91dDEgPSBbIDEuMCB8IDAuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJb3V0MCA9IDAuMDsKKwkJCQlvdXQxID0gMS4wOworCQkJCWlmIChpbjAgPj0g
MS4wKQorCQkJCQlvdXQwID0gMS4wLCBvdXQxID0gMC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBzZXF1ZW5jZV9jb25kaXRpb24KKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIF07CisJCQlvdXRwdXQgZmxvYXQg
b3V0MCA9IFsgMC4wIHwgMS4wIHwgMS4wIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MSA9IFsgMS4w
IHwgMC4wIHwgMC4wIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQw
ID0gMC4wOworCQkJCW91dDEgPSAxLjA7CisJCQkJaWYgKGZhbHNlLCBpbjAgPj0gMS4wKQorCQkJ
CQlvdXQwID0gMS4wLCBvdXQxID0gMC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBjb21wbGV4X2NvbmRpdGlvbgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxv
YXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAw
LjAgfCAxLjAgfCAxLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQxID0gWyAxLjAgfCAwLjAgfCAw
LjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSAwLjA7CisJ
CQkJb3V0MSA9IDEuMDsKKwkJCQlpZiAoZmFsc2UgfHwgKGluMCA+PSAxLjApICYmIChpbjAgLSAy
LjAqaW4wIDwgMC4wKSkKKwkJCQkJb3V0MCA9IDEuMCwgb3V0MSA9IDAuMDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaWZfZWxzZQorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBv
dXQwID0gWyAwLjAgfCAxLjAgfCAxLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCWlmIChpbjAgPj0gMS4wKQorCQkJCQlvdXQwID0gMS4wOworCQkJCWVsc2UKKwkJCQkJ
b3V0MCA9IDAuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaWZf
ZWxzZWlmCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8
IDIuMCBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IDIuMCBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDAuMDsKKwkJCQlpZiAoaW4w
ID49IDIuMCkKKwkJCQkJb3V0MCA9IDIuMDsKKwkJCQllbHNlIGlmIChpbjAgPj0gMS4wKQorCQkJ
CQlvdXQwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
Zl9lbHNlaWZfZWxzZQorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAg
fCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAyLjAg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWlmIChpbjAgPj0gMi4wKQor
CQkJCQlvdXQwID0gMi4wOworCQkJCWVsc2UgaWYgKGluMCA+PSAxLjApCisJCQkJCW91dDAgPSAx
LjA7CisJCQkJZWxzZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtaXhlZF9pZl9lbHNlaWZfZWxzZQorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBv
dXQwID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCWlmIChpbjAgPj0gMi4wKQorCQkJCXsKKwkJCQkJb3V0MCA9IDIuMDsKKwkJCQl9CisJ
CQkJZWxzZSBpZiAoaW4wID49IDEuMCkKKwkJCQkJb3V0MCA9IDIuMCwgb3V0MCA9IDEuMDsKKwkJ
CQllbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKK2VuZCAjIGlmCisKK2dyb3VwIGludmFsaWRfaWYgIkludmFsaWQgSWYgQ29uZGl0aW9uYWxz
IgorCisJY2FzZSBtaXNzaW5nX3BhcmVudGhlc2lzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCWlmIHRydWUKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5jbG9zZWRfcGFyZW50aGVzaXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYgKHRydWUKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2NvbmRpdGlv
bgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoNSkKKwkJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50
X3plcm9fY29uZGl0aW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWlmICgwKQor
CQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfb25lX2NvbmRpdGlvbgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlpZiAoMSkKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3VuaWZvcm1fY29uZGl0aW9uCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXVuaWZvcm0gaW50IHUwOworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQlpZiAodTApCisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2NvbmRpdGlvbgorCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoNS4wKQorCQkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF96ZXJv
X2NvbmRpdGlvbgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoMC4wKQorCQkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBmbG9hdF9vbmVfY29uZGl0aW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWlmICgxLjApCisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHNhbXBsZXJfY29uZGl0aW9uCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl1bmlm
b3JtIHNhbXBsZXIyRCBzMDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYgKHMwKQorCQkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CitlbmQgIyBpbnZhbGlkX2lmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9jb25zdGFudF9leHBy
ZXNzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvY29uc3RhbnRfZXhwcmVzc2lvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYjkyYzA5ZmJmMTRkNDMzYjY0YTY0N2Q2ODFmMTY1MDU4MGY3ZDg4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvY29uc3RhbnRfZXhwcmVzc2lvbnMuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRl
ciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2NvbnN0YW50X2V4
cHJlc3Npb25zJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4i
KTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3
aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZh
bHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21w
b25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVV
UklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworCittb2R1bGVzLnNoYXJlZC5nbHNT
aGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvY29uc3RhbnRfZXhwcmVzc2lv
bnMudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbnN0YW50X2V4cHJlc3Npb25zLnRlc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzU1YTQ0MzJhMzRkNTY5N2ZiYjJiZTYzYTVjMWM1ZDNkNzQ1OTFmZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZGF0YS9nbGVzMi9zaGFkZXJzL2NvbnN0YW50X2V4cHJlc3Npb25zLnRlc3QKQEAgLTAsMCArMSwy
ODggQEAKK2dyb3VwIHRyaXZpYWwgIlRyaXZpYWwgZXhwcmVzc2lvbnMiCisKKwljYXNlIGZsb2F0
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNS4wOyB9CisJCWJvdGggIiIKKworCQkJ
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJY29uc3QgZmxvYXQgYSA9IDUuMDsKKwkJCQlvdXQwID0gYTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50CisJCXZhbHVlcyB7IG91dHB1
dCBpbnQgb3V0MCA9IDU7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgaW50
IGEgPSA1OworCQkJCW91dDAgPSBhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBib29sCisJCXZhbHVlcyB7IG91dHB1dCBib29sIG91dDAgPSB0cnVlOyB9CisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGJvb2wgYSA9IHRydWU7CisJCQkJb3V0MCA9
IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNhc3QKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJY29uc3QgZmxvYXQgYSA9IGZsb2F0KGludChib29sKHRydWUpKSk7CisJCQkJb3V0MCA9
IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIHRyaXZpYWwKKwor
Z3JvdXAgb3BlcmF0b3JzICJPcGVyYXRvcnMiCisKKwljYXNlIG1hdGhfZmxvYXQKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyLjE5OyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWNvbnN0IGZsb2F0IGEgPSA2LjAvMy41ICsgMS44KjIuNiAtIDQuMjsKKwkJCQlvdXQwID0g
YTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0aF92ZWMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxNS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCWNvbnN0IHZlYzMgYSA9ICh2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCkuenl4ICog
dmVjMygxLjAsIDEuNSwgMy4wKS54eXopLnh6eSArICh2ZWMyKDUuMCkvdmVjMigyLjUpKS54eHk7
CisJCQkJb3V0MCA9IGEueCArIGEueSArIGEuejsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWF0aF9pbnQKKwkJdmFsdWVzIHsgb3V0cHV0IGludCBvdXQwID0gNzsg
fQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gaGlnaHAgaW50OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgaW50IGEgPSA1LTEgKyAyKjMgLSA5
LzM7CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1hdGhfaXZlYworCQl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAyMTsgfQorCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gaGlnaHAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgaXZlYzMgYSA9IGl2ZWMyKDUtMSwgNCkueHh5ICsg
aXZlYzQoMSozLCA5LzMsIDErMiwgOC80KS54eXo7CisJCQkJb3V0MCA9IGEueCArIGEueSArIGEu
ejsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0aF9tYXQKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA4LjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJY29uc3QgbWF0MyBhID0gbWF0MygzLjApICogbWF0Myg0LjApOworCQkJCWNvbnN0
IG1hdDQgYiA9IG1hdDQoYVsxXVsxXSkqMi4wOworCQkJCWNvbnN0IG1hdDIgYyA9IG1hdDIoYlsw
XVswXSkgLyAzLjA7CisJCQkJb3V0MCA9IGNbMF1bMF0rY1sxXVswXTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbG9naWNhbAorCQl2YWx1ZXMgeyBvdXRwdXQgYm9v
bCBvdXQwID0gdHJ1ZTsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gaGlnaHAgaW50OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgYm9vbCBh
ID0gKCFmYWxzZSB8fCBmYWxzZSkgJiYgKHRydWUgXl4gZmFsc2UpOworCQkJCW91dDAgPSBhOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb21wYXJlCisJCXZhbHVl
cyB7IG91dHB1dCBib29sIG91dDAgPSB0cnVlOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBo
aWdocCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQljb25zdCBib29sIGEgPSAoZmFsc2UgPT0gZmFsc2UpICYmICh0cnVlICE9IGZhbHNlKSAmJiAo
MSA8IDIpICYmICgzIDw9IDMpICYmICgoMSA+IDEpICE9ICgxID49IDEpKTsKKwkJCQlvdXQwID0g
YTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugc2VsZWN0aW9uCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNS4zOyB9CisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCWNvbnN0IGZsb2F0IGEgPSBmYWxzZSA/IDAuMCA6ICh0cnVlID8gNS4zIDogMS4w
KTsKKwkJCQlvdXQwID0gYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5k
ICMgb3BlcmF0b3JzCisKK2dyb3VwIGNvbXBsZXhfdHlwZXMgIkFycmF5cywgc3RydWN0cyAmIG5l
c3RlZCBjYWxscyIKKworCWNhc2Ugc3RydWN0CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gMjYwLjkyMjsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJc3RydWN0IFMKKwkJCXsKKwkJCQl2ZWM0IGE7CisJCQkJaW50
ICBiOworCQkJfTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25zdCBTIHMgPSBTKHZl
YzQoMS41KSwgMTIzKTsKKwkJCQlvdXQwID0gbGVuZ3RoKHMuYS54eSkqZmxvYXQocy5iKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbmVzdGVkX3N0cnVjdAorCQl2
YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDk2NS45OyB9CisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlzdHJ1Y3QgUworCQkJ
eworCQkJCXZlYzQgdjsKKwkJCQlpbnQgIGk7CisJCQl9OworCisJCQlzdHJ1Y3QgVAorCQkJewor
CQkJCVMgczsKKwkJCQlib29sIGI7CisJCQkJaW50IGk7CisJCQl9OworCisJCQlzdHJ1Y3QgVQor
CQkJeworCQkJCVMgczsKKwkJCQlUIHQ7CisJCQl9OworCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWNvbnN0IFMgcyA9IFModmVjNCgxLjUpLCAxMjMpOworCQkJCWNvbnN0IFQgdCA9IFQocywg
ZmFsc2UsIDMpOworCQkJCWNvbnN0IFUgdSA9IFUocywgdCk7CisJCQkJY29uc3QgVSB2ID0gVShT
KHZlYzQoMS4zKSwgNCksIFQoUyh2ZWM0KDIuMCksIDUpLCB0cnVlLCA2KSk7CisJCQkJb3V0MCA9
IGZsb2F0KHUucy5pKnYudC5pICsgdi50LnMuaSkqdi5zLnYueDsgLy8gZmxvYXQoMTIzKjYgKyA1
KSoxLjMKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJyYXkKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wXTsKKwkJCW91dHB1
dCBmbG9hdCBvdXQwID0gWzAuMCB8IDEuMF07CisJCX0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJZmxvYXQgYVtpbnQobWF4KC0xLjAsIDIuMCkpXTsKKwkJCQlhWzBdID0gLTEuMDsKKwkJ
CQlhWzFdID0gaW4wOworCQkJCW91dDAgPSBhW2ludChtaW4oMS4wLCAyLjApKV07CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9idWlsdGluX2Z1bmNzCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMy4wNTsgfQorCQlib3RoICIiCisJCQlwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQljb25zdCBmbG9hdCBhID0gc3FydCggYXRhbihzaW4oMS41KS9jb3MoMS41KSkg
LyoxLjUqLyAqIGxvZzIoZXhwMihsb2coZXhwKDYuMikgKyAwLjEpKSArIDAuMSkgLyp+Ni4yKi8p
OworCQkJCW91dDAgPSBhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQg
IyBjb21wbGV4X3R5cGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9jb25zdGFudHMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMi9zaGFkZXJzL2NvbnN0YW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYzdjODY2MmM4YjE1OGJm
OTcxNjI3ZWViMzM3NGZmMjQ5OWNjODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9j
b25zdGFudHMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5n
bHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rl
c3ROYW1lID0gJ2NvbnN0YW50cyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0
TmFtZSArICIuIik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVl
cnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVj
b2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1
cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxlcy5z
aGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbnN0YW50
cy50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9kYXRhL2dsZXMyL3NoYWRlcnMvY29uc3RhbnRzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM4ODdlNzA4
MWYxZTRiMGI0ZDBhYzNkMmVkNTRkMDY1NmZhZjU1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9z
aGFkZXJzL2NvbnN0YW50cy50ZXN0CkBAIC0wLDAgKzEsNjYyIEBACitjYXNlIGZsb2F0X2lucHV0
CisJdmFsdWVzCisJeworCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAxLjEyMyB8IDAuNzUgfCAtNTEy
LjAgfCAtNzIuMTMgfCAxOTkuOTEgXTsKKwkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMTIzIHwg
MC43NSB8IC01MTIuMCB8IC03Mi4xMyB8IDE5OS45MSBdOworCX0KKwl2YWx1ZXMKKwl7CisJCWlu
cHV0IGZsb2F0IGluMAkJPSBbIC0xLjEyMyB8IC0wLjc1IHwgNTEyLjAgfCAtNzIuMTMgfCAtMTk5
LjkxIF07CisJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4xMjMgfCAtMC43NSB8IDUxMi4wIHwg
LTcyLjEzIHwgLTE5OS45MSBdOworCX0KKworCWJvdGggIiIKKwkJcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IGlu
MDsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0X3VuaWZvcm0KKwl2
YWx1ZXMKKwl7CisJCXVuaWZvcm0gZmxvYXQgdW5pMAk9IFsgMS4xMjMgfCAwLjc1IHwgLTUxMi4w
IHwgLTcyLjEzIHwgMTk5LjkxIF07CisJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAxLjEyMyB8IDAu
NzUgfCAtNTEyLjAgfCAtNzIuMTMgfCAxOTkuOTEgXTsKKwl9CisKKwlib3RoICIiCisJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gZmxvYXQgdW5p
MDsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IHVuaTA7CisJCQkke09VVFBVVH0KKwkJ
fQorCSIiCitlbmQKKworY2FzZSBmbG9hdF8wCisJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAg
PSAxLjEyMzsgfQorCWJvdGggIiIKKwkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xB
UkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9ICsxLjEyMzsKKwkJCSR7T1VU
UFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzEKKwl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IC0xLjEyMzsgfQorCWJvdGggIiIKKwkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
CQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IC0xLjEyMzsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzIKKwl2YWx1ZXMgeyBv
dXRwdXQgZmxvYXQgb3V0MCA9IDEyMy4wOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0g
MTIzLjsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzMKKwl2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDAuMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlv
dXQwID0gLjEyMzsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzQK
Kwl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEyMy4wOyB9CisJYm90aCAiIgorCQlwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7
CisJCQlvdXQwID0gMS4yM2UrMjsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNl
IGZsb2F0XzUKKwl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0xMjMuMDsgfQorCWJvdGgg
IiIKKwkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJb3V0MCA9IC0xLjIzRSsyOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgor
ZW5kCisKK2Nhc2UgZmxvYXRfNgorCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gLTEyMy4w
OyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05T
fQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gLTEuMjNlMjsKKwkJCSR7T1VUUFVUfQor
CQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzcKKwl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDAuMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVD
TEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMS4yM2UtMTsKKwkJCSR7
T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzgKKwl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEwMDAuMDsgfQorCWJvdGggIiIKKwkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IDFlMzsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF8wCisJdmFsdWVzIHsgb3V0
cHV0IGludCBvdXQwID0gMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMTIzOwor
CQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgaW50XzEKKwl2YWx1ZXMgeyBvdXRw
dXQgaW50IG91dDAgPSAtMzIxOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gLTMyMTsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF8yCisJdmFsdWVzIHsgb3V0
cHV0IGludCBvdXQwID0gMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMHg3QjsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF8zCisJdmFsdWVzIHsgb3V0
cHV0IGludCBvdXQwID0gMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMFg3YjsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF80CisJdmFsdWVzIHsgb3V0
cHV0IGludCBvdXQwID0gMTIzOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMDE3MzsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGJvb2xfMAorCXZhbHVlcyB7IG91
dHB1dCBib29sIG91dDAgPSB0cnVlOyB9CisJYm90aCAiIgorCQlwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gdHJ1
ZTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGJvb2xfMQorCXZhbHVlcyB7
IG91dHB1dCBib29sIG91dDAgPSBmYWxzZTsgfQorCWJvdGggIiIKKwkJcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9
IGZhbHNlOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRf
Z2xvYmFsCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAwMC4wOyB9CisJIAorCSBi
b3RoICIiCisJIAkgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCSAJICAke0RFQ0xBUkFUSU9O
U30KKwkJICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEwMDAuMDsKKwkJICB2b2lkIG1haW4o
KQorCQkgIHsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJJHtPVVRQVVR9CisJCSAgfQor
CSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfbWFpbgorCSB2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IC0xMDAwLjA7IH0KKwkgCisJIGJvdGggIiIKKwkgCSAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJIAkgICR7REVDTEFSQVRJT05TfQorCQkgIHZvaWQgbWFpbigpCisJCSAgewor
CQkgIAkgICAgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAtMTAwMC4wOworCQkJCW91dDAgPSB0
aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0KKwkJICB9CisJICIiCitlbmQKKworY2FzZSBjb25z
dF9mbG9hdF9mdW5jdGlvbgorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0wLjAxMjsg
fQorCSAKKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkgCSAgJHtE
RUNMQVJBVElPTlN9CisJCSAgZmxvYXQgZnVuYygpCisJCSAgeworCQkgIAkgICAgY29uc3QgZmxv
YXQgdGhlQ29uc3RhbnQgPSAtMC4wMTI7CisJCQkJcmV0dXJuIHRoZUNvbnN0YW50OwkJCQkKKwkJ
ICB9CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCQkJb3V0MCA9IGZ1bmMoKTsKKwkJCQkke09V
VFBVVH0KKwkJICB9CisJICIiCitlbmQKKworY2FzZSBjb25zdF9mbG9hdF9zY29wZQorCSB2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCSAKKwkgYm90aCAiIgorCSAJICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkgCSAgJHtERUNMQVJBVElPTlN9CisJCSAgdm9pZCBtYWlu
KCkKKwkJICB7CisJCQkJeworCQkJCQkgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxLjA7CisJ
CQkJCSBvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkgICAgfQorCQkJCSR7T1VUUFVUfQorCQkgIH0K
KwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X3Njb3BlX3NoYXdkb3dpbmdfMQorCSB2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCSAKKwkgYm90aCAiIgorCSAJICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkgCSAgJHtERUNMQVJBVElPTlN9CisJCSAgdm9pZCBtYWlu
KCkKKwkJICB7CisJCQkgICAgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxMDAuMDsKKwkJCQl7
CisJCQkJCSBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEuMDsKKwkJCQkJIG91dDAgPSB0aGVD
b25zdGFudDsKKwkJCSAgICB9CisJCQkJJHtPVVRQVVR9CisJCSAgfQorCSAiIgorZW5kCisKK2Nh
c2UgY29uc3RfZmxvYXRfc2NvcGVfc2hhd2Rvd2luZ18yCisJIHZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMS4wOyB9CisJIAorCSBib3RoICIiCisJIAkgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworICAgCSAgICAgICR7REVDTEFSQVRJT05TfQorCQkgIGNvbnN0IGZsb2F0IHRoZUNvbnN0
YW50ID0gMTAwLjA7CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCQkJeworCQkJCQkgY29uc3Qg
ZmxvYXQgdGhlQ29uc3RhbnQgPSAxLjA7CisJCQkJCSBvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkg
ICAgfQorCQkJCSR7T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0
X3Njb3BlX3NoYXdkb3dpbmdfMworCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCSAKKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAg
ICAke0RFQ0xBUkFUSU9OU30KKwkJICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEwMC4wOwor
CQkgIHZvaWQgbWFpbigpCisJCSAgeworIAkJCSAgICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9
IC0xMDAuMDsKKwkJCQl7CisJCQkJCSBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEuMDsKKwkJ
CQkJIG91dDAgPSB0aGVDb25zdGFudDsKKwkJCSAgICB9CisJCQkJJHtPVVRQVVR9CisJCSAgfQor
CSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfc2NvcGVfc2hhd2Rvd2luZ180CisJIHZhbHVl
cyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMi4wOyB9CisJIAorCSBib3RoICIiCisJIAkgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgCSAgICAgICR7REVDTEFSQVRJT05TfQorCQkgIGNvbnN0
IGZsb2F0IHRoZUNvbnN0YW50ID0gMTAwLjA7CisJCSAgZmxvYXQgZnVuYygpCisJCSAgeworCQkJ
CWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gMi4wOworCQkJCXJldHVybiB0aGVDb25zdGFudDsK
KwkJICB9CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisgCQkJICAgIGNvbnN0IGZsb2F0IHRoZUNv
bnN0YW50ID0gLTEwMC4wOworCQkJCXsKKwkJCQkJIGNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0g
MS4wOworCQkJCQkgb3V0MCA9IGZ1bmMoKTsKKwkJCSAgICB9CisJCQkJJHtPVVRQVVR9CisJCSAg
fQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfb3BlcmF0aW9uc193aXRoX2NvbnN0CisJ
IHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMjEuMDsgfQorCSAKKwkgYm90aCAiIgorCSAJ
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAgICAke0RFQ0xBUkFUSU9OU30KKwkJ
ICBjb25zdCBmbG9hdCB0aGVHbG9iYWxDb25zdGFudCA9IDEwLjA7CisJCSAgZmxvYXQgZnVuYygp
CisJCSAgeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gMi4wOworCQkJCXJldHVybiB0
aGVDb25zdGFudDsKKwkJICB9CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisgCQkJICAgIGNvbnN0
IGZsb2F0IHRoZUNvbnN0YW50ID0gLTEwMC4wOworCQkJCXsKKwkJCQkJIGNvbnN0IGZsb2F0IHRo
ZUNvbnN0YW50ID0gMS4wOworCQkJCQkgb3V0MCA9IGZ1bmMoKSAqIHRoZUdsb2JhbENvbnN0YW50
ICsgdGhlQ29uc3RhbnQ7CisJCQkgICAgfQorCQkJCSR7T1VUUFVUfQorCQkgIH0KKwkgIiIKK2Vu
ZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbm1lbnRfMQorCSB2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEwLjA7IH0KKwkgCisJIGJvdGggIiIKKwkgCSAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisgICAJICAgICAgJHtERUNMQVJBVElPTlN9CisJCSAgdm9pZCBtYWluKCkKKwkJICB7
CisgCQkJICAgIGNvbnN0IGZsb2F0IHRoZUNvbnN0YW50MSA9IDEwLjA7CisJCQkJY29uc3QgZmxv
YXQgdGhlQ29uc3RhbnQyID0gdGhlQ29uc3RhbnQxOworCQkJCW91dDAgPSB0aGVDb25zdGFudDI7
CisJCQkJJHtPVVRQVVR9CisJCSAgfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNz
aWdubWVudF8yCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQorCSAKKwkg
Ym90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAgICAke0RFQ0xB
UkFUSU9OU30KKwkJICB2b2lkIG1haW4oKQorCQkgIHsKKyAJCQkgICAgY29uc3QgZmxvYXQgdGhl
Q29uc3RhbnQxID0gMTAuMDsKKwkJCQl7CisJCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50MiA9
IHRoZUNvbnN0YW50MTsKKwkJCQkJb3V0MCA9IHRoZUNvbnN0YW50MjsKKwkJCQl9CisJCQkJJHtP
VVRQVVR9CisJCSAgfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNzaWdubWVudF8z
CisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQorCSAKKwkgYm90aCAiIgor
CSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAgICAke0RFQ0xBUkFUSU9OU30K
KwkgICAgICBjb25zdCBmbG9hdCB0aGVDb25zdGFudDEgPSAxMC4wOworCQkgIHZvaWQgbWFpbigp
CisJCSAgeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50MiA9IHRoZUNvbnN0YW50MTsKKwkJ
CQlvdXQwID0gdGhlQ29uc3RhbnQyOworCQkJCSR7T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAor
CitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbm1lbnRfNAorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEwLjA7IH0KKwkgCisJIGJvdGggIiIKKwkgCSAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisgICAJICAgICAgJHtERUNMQVJBVElPTlN9CisJICAgICAgY29uc3QgZmxvYXQgdGhlQ29u
c3RhbnQxID0gMTAuMDsKKwkJICBmbG9hdCBmdW5jKCkKKwkJICB7CisJCQkJY29uc3QgZmxvYXQg
dGhlQ29uc3RhbnQyID0gdGhlQ29uc3RhbnQxOworCQkJCXJldHVybiB0aGVDb25zdGFudDI7CQkJ
CQorCQkgIH0KKwkJICB2b2lkIG1haW4oKQorCQkgIHsKKwkJCQlvdXQwID0gZnVuYygpOworCQkJ
CSR7T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl91
bmlmb3JtCisJIGV4cGVjdCBjb21waWxlX2ZhaWwJIAorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEwLjA7IH0KKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgIAkgICAgICAke0RFQ0xBUkFUSU9OU30KKwkJICB1bmlmb3JtIGZsb2F0IHRoZVVuaWZvcm07
CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSB0
aGVVbmlmb3JtOworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0KKwkJICB9
CisJICIiCitlbmQKKworY2FzZSBjb25zdF9mbG9hdF9hc3NpZ25fdmFyeWluZworCSBleHBlY3Qg
Y29tcGlsZV9mYWlsCSAKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxMC4wOyB9CisJ
IHZlcnRleCAiIgorICAgCSAgICAgICR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJICB2YXJ5aW5n
IGZsb2F0IHRoZVZhcnlpbmc7CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCQkJdGhlVmFyeWlu
ZyA9IDEuMDsKKwkJCQlnbF9Qb3NpdGlvbiA9IHZlYygxLjApOworCQkgIH0JIAkKKwkgIiIKKwkg
ZnJhZ21lbnQgIiIKKwkgCSAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAJICAgICAgJHtG
UkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCSAgdmFyeWluZyBmbG9hdCB0aGVWYXJ5aW5nOworCQkg
IHZvaWQgbWFpbigpCisJCSAgeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gdGhlVmFy
eWluZzsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJ
CSAgfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfZnVuY3Rpb25fZ290Y2hhCisJIGRl
c2MgIkZ1bmN0aW9uIGNvbnN0YW50IHBhcmFtZXRlcnMgYXJlIG5vdCByZWFsbHkgY29uc3RhbnRz
LCBzbyB1c2luZyB0aGVtIGFzIGNvbnN0YW50IGV4cHJlc3Npb25zIHNob3VsZCBmYWlsLiIKKyAJ
IGV4cGVjdCBjb21waWxlX2ZhaWwJIAorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIw
LjA7IH0KKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAg
ICAke0RFQ0xBUkFUSU9OU30KKwkJICBmbG9hdCBmdW5jKGNvbnN0IGZsb2F0IGdvdGNoYSkKKwkJ
ICB7CisJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQyID0gZ290Y2hhOworCQkJCXJldHVybiB0
aGVDb25zdGFudDIqMi4wOwkJCQkKKwkJICB9CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCSAg
CSAgICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEwLjA7CisJCQkJb3V0MCA9IGZ1bmModGhl
Q29uc3RhbnQpOworCQkJCSR7T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0
X2Zsb2F0X2Zyb21faW50CisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQor
CSAKKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAgICAk
e0RFQ0xBUkFUSU9OU30KKwkgICAgICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IGZsb2F0KDEw
KTsKKwkJICB2b2lkIG1haW4oKQorCQkgIHsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJ
JHtPVVRQVVR9CisJCSAgfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfZnJvbV92ZWMy
CisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQorCSAKKwkgYm90aCAiIgor
CSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgIAkgICAgICAke0RFQ0xBUkFUSU9OU30K
KwkgICAgICBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IHZlYzIoMS4wLCAxMC4wKS55OworCQkg
IHZvaWQgbWFpbigpCisJCSAgeworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBV
VH0KKwkJICB9CisJICIiCitlbmQKKworY2FzZSBjb25zdF9mbG9hdF9mcm9tX3ZlYzMKKwkgdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxMC4wOyB9CisJIAorCSBib3RoICIiCisJIAkgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgCSAgICAgICR7REVDTEFSQVRJT05TfQorCSAgICAg
IGNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gdmVjMygxLjAsIDEwLjAsIDIwLjApLnk7CisJCSAg
dm9pZCBtYWluKCkKKwkJICB7CisJCQkJb3V0MCA9IHRoZUNvbnN0YW50OworCQkJCSR7T1VUUFVU
fQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Zyb21fdmVjNAorCSB2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEwLjA7IH0KKwkgCisJIGJvdGggIiIKKwkgCSAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAJICAgICAgJHtERUNMQVJBVElPTlN9CisJICAgICAg
Y29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSB2ZWM0KDEuMCwgMTAuMCwgMjAuMCwgLTEwLjApLnk7
CisJCSAgdm9pZCBtYWluKCkKKwkJICB7CisJCQkJb3V0MCA9IHRoZUNvbnN0YW50OworCQkJCSR7
T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl92YXJp
YWJsZV8xCisJIGV4cGVjdCBjb21waWxlX2ZhaWwJIAorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDIwLjA7IH0KKwkgYm90aCAiIgorCSAJICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgIAkgICAgICAke0RFQ0xBUkFUSU9OU30KKwkJICB2b2lkIG1haW4oKQorCQkgIHsKKwkJCQlm
bG9hdCB0aGVWYXJpYWJsZSA9IDIwLjA7CisJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSB0
aGVWYXJpYWJsZTsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJJHtPVVRQVVR9CisJCSAg
fQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNzaWduX3ZhcmlhYmxlXzIKKwkgZXhw
ZWN0IGNvbXBpbGVfZmFpbAkgCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNTAuMDsg
fQorCSBib3RoICIiCisJIAkgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgCSAgICAgICR7
REVDTEFSQVRJT05TfQorCQkgIHZvaWQgbWFpbigpCisJCSAgeworCQkJCWZsb2F0IHRoZVZhcmlh
YmxlID0gMjAuMDsKKwkJCQl0aGVWYXJpYWJsZSArPSAzMC4wOworCQkJCWNvbnN0IGZsb2F0IHRo
ZUNvbnN0YW50ID0gdGhlVmFyaWFibGU7CisJCQkJb3V0MCA9IHRoZUNvbnN0YW50OworCQkJCSR7
T1VUUFVUfQorCQkgIH0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl91c2Vy
X2Z1bmMKKwkgZXhwZWN0IGNvbXBpbGVfZmFpbAkgCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBv
dXQwID0gNTAuMDsgfQorCSBib3RoICIiCisJIAkgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
ICAgCSAgICAgICR7REVDTEFSQVRJT05TfQorCQkgIGZsb2F0IGZ1bmMoKQorCQkgIHsKKwkJCQly
ZXR1cm4gNTAuMDsKKyAgCQkgIH0KKwkJICB2b2lkIG1haW4oKQorCQkgIHsKKwkJCQljb25zdCBm
bG9hdCB0aGVDb25zdGFudCA9IGZ1bmMoKTsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJ
JHtPVVRQVVR9CisJCSAgfQorCSAiIgorZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9jb252
ZXJzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvY29udmVyc2lvbnMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MGFhOGM4NjI4OTgwYzM3NTBhZTkxZDRmYjE2YzVmOThjMzNmMjZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRh
L2dsZXMyL3NoYWRlcnMvY29udmVyc2lvbnMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2NvbnZlcnNpb25zJzsKK2Rlc2NyaXB0aW9uKCJT
aGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4iKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0
cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9
Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVy
JykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAg
IH0KK30KKworCittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwg
Z2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2ds
ZXMyL3NoYWRlcnMvY29udmVyc2lvbnMudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbnZlcnNpb25zLnRl
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTFkZDljMjM3NDlmYzMwMGE4N2VjMjM4YWE0MzQ4NjcxMzk4YmU0OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2NvbnZlcnNpb25zLnRlc3QKQEAgLTAsMCAr
MSw1OTMwIEBACisjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRG8gTk9U
IG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhlcgorIyBtb2RpZnkgdGhlIGdlbmVyYXRpbmcg
c2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2VzIHdpbGwgYmUgbG9zdCEKKworZ3JvdXAgc2Nh
bGFyX3RvX3NjYWxhciAiU2NhbGFyIHRvIFNjYWxhciBDb252ZXJzaW9ucyIKKworCWNhc2UgZmxv
YXRfdG9fZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwg
MS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJ
CW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTgu
MjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZs
b2F0X3RvX2ludAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAx
LjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJ
b3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDIgfCAzIHwgMCB8IC04IHwgLTIwIHwgMzYgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfdG9fYm9vbAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTgu
MjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgZmFsc2Ug
fCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIF07CisJCX0K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYm9vbChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTky
IHwgMjU1IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgNS4w
IHwgOC4wIHwgMTEuMCB8IC0xMi4wIHwgLTY2LjAgfCAtMTkyLjAgfCAyNTUuMCBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGludF90b19pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwg
MjU1IF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAt
MTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF90
b19ib29sCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1
IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IGJvb2wgb3V0
MCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0
cnVlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29s
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9f
ZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2Ug
XTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAxLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBib29sX3RvX2ludAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBp
bjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMCBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX2Jvb2wKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBib29sIG91dDAg
PSBbIHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJvb2wo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCitlbmQgIyBzY2FsYXJf
dG9fc2NhbGFyCitncm91cCBzY2FsYXJfdG9fdmVjdG9yICJTY2FsYXIgdG8gVmVjdG9yIENvbnZl
cnNpb25zIgorCisJY2FzZSBmbG9hdF90b192ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBm
bG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4x
MjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwgMC4wKSB8
IHZlYzIoMS4wLCAxLjApIHwgdmVjMigyLjAsIDIuMCkgfCB2ZWMyKDMuNSwgMy41KSB8IHZlYzIo
LTAuNSwgLTAuNSkgfCB2ZWMyKC04LjI1LCAtOC4yNSkgfCB2ZWMyKC0yMC4xMjUsIC0yMC4xMjUp
IHwgdmVjMigzNi44MTI1LCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZmxvYXRfdG9fdmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAg
fCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOwor
CQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAx
LjAsIDEuMCkgfCB2ZWMzKDIuMCwgMi4wLCAyLjApIHwgdmVjMygzLjUsIDMuNSwgMy41KSB8IHZl
YzMoLTAuNSwgLTAuNSwgLTAuNSkgfCB2ZWMzKC04LjI1LCAtOC4yNSwgLTguMjUpIHwgdmVjMygt
MjAuMTI1LCAtMjAuMTI1LCAtMjAuMTI1KSB8IHZlYzMoMzYuODEyNSwgMzYuODEyNSwgMzYuODEy
NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3RvX3ZlYzQKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAu
NSB8IC04LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBb
IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSB8IHZl
YzQoMi4wLCAyLjAsIDIuMCwgMi4wKSB8IHZlYzQoMy41LCAzLjUsIDMuNSwgMy41KSB8IHZlYzQo
LTAuNSwgLTAuNSwgLTAuNSwgLTAuNSkgfCB2ZWM0KC04LjI1LCAtOC4yNSwgLTguMjUsIC04LjI1
KSB8IHZlYzQoLTIwLjEyNSwgLTIwLjEyNSwgLTIwLjEyNSwgLTIwLjEyNSkgfCB2ZWM0KDM2Ljgx
MjUsIDM2LjgxMjUsIDM2LjgxMjUsIDM2LjgxMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBmbG9hdF90b19pdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0g
WyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEy
NSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigyLCAyKSB8IGl2ZWMyKDMsIDMpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtOCwgLTgp
IHwgaXZlYzIoLTIwLCAtMjApIHwgaXZlYzIoMzYsIDM2KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGl2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGZsb2F0X3RvX2l2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBp
bjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAz
Ni44MTI1IF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDIsIDIsIDIpIHwgaXZlYzMoMywgMywgMykgfCBpdmVjMygwLCAw
LCAwKSB8IGl2ZWMzKC04LCAtOCwgLTgpIHwgaXZlYzMoLTIwLCAtMjAsIC0yMCkgfCBpdmVjMygz
NiwgMzYsIDM2KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3RvX2l2ZWM0
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8
IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgaXZl
YzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0
KDIsIDIsIDIsIDIpIHwgaXZlYzQoMywgMywgMywgMykgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2
ZWM0KC04LCAtOCwgLTgsIC04KSB8IGl2ZWM0KC0yMCwgLTIwLCAtMjAsIC0yMCkgfCBpdmVjNCgz
NiwgMzYsIDM2LCAzNikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b19i
dmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAy
LjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0
IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0
cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3RvX2J2ZWMzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8
IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgYnZlYzMgb3V0
MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3RvX2J2ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0y
MC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVj
NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9f
dmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8
IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAg
PSBbIHZlYzIoMC4wLCAwLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMyKDIuMCwgMi4wKSB8IHZl
YzIoNS4wLCA1LjApIHwgdmVjMig4LjAsIDguMCkgfCB2ZWMyKDExLjAsIDExLjApIHwgdmVjMigt
MTIuMCwgLTEyLjApIHwgdmVjMigtNjYuMCwgLTY2LjApIHwgdmVjMigtMTkyLjAsIC0xOTIuMCkg
fCB2ZWMyKDI1NS4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2
ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF90
b192ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1
IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IHZlYzMgb3V0
MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKDIu
MCwgMi4wLCAyLjApIHwgdmVjMyg1LjAsIDUuMCwgNS4wKSB8IHZlYzMoOC4wLCA4LjAsIDguMCkg
fCB2ZWMzKDExLjAsIDExLjAsIDExLjApIHwgdmVjMygtMTIuMCwgLTEyLjAsIC0xMi4wKSB8IHZl
YzMoLTY2LjAsIC02Ni4wLCAtNjYuMCkgfCB2ZWMzKC0xOTIuMCwgLTE5Mi4wLCAtMTkyLjApIHwg
dmVjMygyNTUuMCwgMjU1LjAsIDI1NS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
aW50X3RvX3ZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwg
MiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgdmVj
NCBvdXQwID0gWyB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAxLjAs
IDEuMCkgfCB2ZWM0KDIuMCwgMi4wLCAyLjAsIDIuMCkgfCB2ZWM0KDUuMCwgNS4wLCA1LjAsIDUu
MCkgfCB2ZWM0KDguMCwgOC4wLCA4LjAsIDguMCkgfCB2ZWM0KDExLjAsIDExLjAsIDExLjAsIDEx
LjApIHwgdmVjNCgtMTIuMCwgLTEyLjAsIC0xMi4wLCAtMTIuMCkgfCB2ZWM0KC02Ni4wLCAtNjYu
MCwgLTY2LjAsIC02Ni4wKSB8IHZlYzQoLTE5Mi4wLCAtMTkyLjAsIC0xOTIuMCwgLTE5Mi4wKSB8
IHZlYzQoMjU1LjAsIDI1NS4wLCAyNTUuMCwgMjU1LjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpbnRfdG9faXZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBb
IDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlv
dXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDIs
IDIpIHwgaXZlYzIoNSwgNSkgfCBpdmVjMig4LCA4KSB8IGl2ZWMyKDExLCAxMSkgfCBpdmVjMigt
MTIsIC0xMikgfCBpdmVjMigtNjYsIC02NikgfCBpdmVjMigtMTkyLCAtMTkyKSB8IGl2ZWMyKDI1
NSwgMjU1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF90b19pdmVjMworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8
IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMiwgMiwgMikgfCBpdmVjMyg1LCA1
LCA1KSB8IGl2ZWMzKDgsIDgsIDgpIHwgaXZlYzMoMTEsIDExLCAxMSkgfCBpdmVjMygtMTIsIC0x
MiwgLTEyKSB8IGl2ZWMzKC02NiwgLTY2LCAtNjYpIHwgaXZlYzMoLTE5MiwgLTE5MiwgLTE5Mikg
fCBpdmVjMygyNTUsIDI1NSwgMjU1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlu
dF90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAy
IHwgNSB8IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBpdmVj
NCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MiwgMiwgMiwgMikgfCBpdmVjNCg1LCA1LCA1LCA1KSB8IGl2ZWM0KDgsIDgsIDgsIDgpIHwgaXZl
YzQoMTEsIDExLCAxMSwgMTEpIHwgaXZlYzQoLTEyLCAtMTIsIC0xMiwgLTEyKSB8IGl2ZWM0KC02
NiwgLTY2LCAtNjYsIC02NikgfCBpdmVjNCgtMTkyLCAtMTkyLCAtMTkyLCAtMTkyKSB8IGl2ZWM0
KDI1NSwgMjU1LCAyNTUsIDI1NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRf
dG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8
IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgYnZlYzIg
b3V0MCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGludF90b19idmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsK
KwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVl
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF90b19idmVjNAorCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0xMiB8
IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBib29sX3RvX3ZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVl
IHwgZmFsc2UgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMS4wLCAxLjApIHwgdmVj
MigwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9fdmVjMwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJ
b3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygxLjAsIDEuMCwgMS4wKSB8IHZlYzMoMC4wLCAwLjAs
IDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9fdmVjNAorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0
IHZlYzQgb3V0MCA9IFsgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApIHwgdmVjNCgwLjAsIDAuMCwg
MC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX2l2ZWMyCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlv
dXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9faXZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0g
WyBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYm9vbF90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAg
PSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDEsIDEs
IDEsIDEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBib29sX3RvX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1
ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
YnZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9v
bF90b19idmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBm
YWxzZSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBib29sX3RvX2J2ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsg
dHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisKK2VuZCAjIHNjYWxhcl90b192ZWN0b3IKK2dyb3VwIHZlY3Rv
cl90b19zY2FsYXIgIlZlY3RvciB0byBTY2FsYXIgQ29udmVyc2lvbnMiCisKKwljYXNlIHZlYzJf
dG9fZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwg
MC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwg
NjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IGZsb2F0
IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdmVjMl90b19pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwg
LTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
KSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07CisJCX0K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfdG9fYm9vbAorCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigt
MC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IHRydWUgfCB0cnVlIHwg
dHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fZmxvYXQK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1
KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwg
dmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8
IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
ZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVj
M190b19pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwg
MSB8IDAgfCAtMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW50KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fYm9v
bAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAu
NzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkg
fCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IHRy
dWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZl
YzRfdG9fZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAu
MCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVj
NCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0
LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1
KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8
IC0wLjc1IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF90b19pbnQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgy
NSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGlu
dCBvdXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZlYzRfdG9fYm9vbAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZl
YzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkg
fCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEu
MCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQs
IDAuMjUpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IHRydWUgfCB0cnVlIHwg
dHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX2Zsb2F0
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZl
YzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07
CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMC4wIHwgLTMyLjAgfCAwLjAg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19pbnQKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2
ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCBp
bnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpdmVjMl90b19ib29sCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBb
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0
KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGJvb2woaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZl
YzNfdG9fZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMo
MCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIs
IDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAw
LjAgfCAxLjAgfCAwLjAgfCAtMzIuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGl2ZWMzX3RvX2ludAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMz
KC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0g
WyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMz
X3RvX2Jvb2wKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwg
MCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0
LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gYm9vbChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpdmVjNF90b19mbG9hdAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0g
WyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00
LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJ
CW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAwLjAgfCAtMzIuMCB8IDAuMCBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX2ludAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZl
YzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMy
IHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjNF90b19ib29sCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAy
NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgZmFsc2Ug
fCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGJ2ZWMyX3RvX2Zsb2F0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBb
IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwg
dHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91
dHB1dCBmbG9hdCBvdXQwID0gWyAxLjAgfCAwLjAgfCAwLjAgfCAxLjAgfCAwLjAgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl90b19pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMCB8IDAgfCAxIHwgMCBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl90b19ib29sCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSB8IGZh
bHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYm9v
bChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190
b19mbG9hdAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDEuMCB8IDAuMCB8IDAu
MCB8IDEuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMzX3RvX2lu
dAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1
ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMCB8IDAgfCAxIHwgMCBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b19ib29sCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRw
dXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJvb2woaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fZmxvYXQKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDEuMCB8
IDAuMCB8IDAuMCB8IDEuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2
ZWM0X3RvX2ludAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0
cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlv
dXRwdXQgaW50IG91dDAgPSBbIDEgfCAwIHwgMCB8IDEgfCAwIF07CisJCX0KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gaW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGJ2ZWM0X3RvX2Jvb2wKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGlu
MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
NCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworZW5kICMgdmVjdG9yX3RvX3Nj
YWxhcgorZ3JvdXAgdmVjdG9yX2lsbGVnYWwgIklsbGVnYWwgVmVjdG9yIENvbnZlcnNpb25zIgor
CisJY2FzZSB2ZWMyX3RvX3ZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCXZlYzMg
b3V0MCA9IHZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgdmVjMl90b19pdmVjMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCXZlYzIgaW4wID0gdmVjMigwLjAsIDAuNSk7CisJCQkJaXZlYzMgb3V0
MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHZlYzJfdG9fYnZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCWJ2ZWMzIG91dDAg
PSBidmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2
ZWMyX3RvX3ZlYzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCXZlYzQgb3V0MCA9IHZl
YzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl90
b19pdmVjNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCXZlYzIgaW4wID0gdmVjMigwLjAsIDAuNSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2ZWM0
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfdG9f
YnZlYzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b192
ZWMzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJaXZlYzIgaW4wID0gaXZlYzIoMCwgMCk7CisJCQkJdmVjMyBvdXQwID0gdmVjMyhpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19pdmVjMwor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2
ZWMyIGluMCA9IGl2ZWMyKDAsIDApOworCQkJCWl2ZWMzIG91dDAgPSBpdmVjMyhpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19idmVjMworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMy
IGluMCA9IGl2ZWMyKDAsIDApOworCQkJCWJ2ZWMzIG91dDAgPSBidmVjMyhpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b192ZWM0CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaXZlYzIgaW4w
ID0gaXZlYzIoMCwgMCk7CisJCQkJdmVjNCBvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19pdmVjNAorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMyIGluMCA9IGl2
ZWMyKDAsIDApOworCQkJCWl2ZWM0IG91dDAgPSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19idmVjNAorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMyIGluMCA9IGl2ZWMy
KDAsIDApOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl90b192ZWMzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYnZlYzIgaW4wID0gYnZlYzIodHJ1
ZSwgZmFsc2UpOworCQkJCXZlYzMgb3V0MCA9IHZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9faXZlYzMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAgPSBidmVjMih0
cnVlLCBmYWxzZSk7CisJCQkJaXZlYzMgb3V0MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2J2ZWMzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYnZlYzIgaW4wID0gYnZl
YzIodHJ1ZSwgZmFsc2UpOworCQkJCWJ2ZWMzIG91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl90b192ZWM0CisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYnZlYzIgaW4wID0g
YnZlYzIodHJ1ZSwgZmFsc2UpOworCQkJCXZlYzQgb3V0MCA9IHZlYzQoaW4wKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9faXZlYzQKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAg
PSBidmVjMih0cnVlLCBmYWxzZSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2J2ZWM0CisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYnZlYzIg
aW4wID0gYnZlYzIodHJ1ZSwgZmFsc2UpOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX3RvX3ZlYzQKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMz
IGluMCA9IHZlYzMoMC4wLCAwLjUsIDAuNzUpOworCQkJCXZlYzQgb3V0MCA9IHZlYzQoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM190b19pdmVjNAor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXZl
YzMgaW4wID0gdmVjMygwLjAsIDAuNSwgMC43NSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2ZWM0KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fYnZl
YzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQl2ZWMzIGluMCA9IHZlYzMoMC4wLCAwLjUsIDAuNzUpOworCQkJCWJ2ZWM0IG91dDAgPSBidmVj
NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190
b192ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJaXZlYzMgaW4wID0gaXZlYzMoMCwgMCwgMCk7CisJCQkJdmVjNCBvdXQwID0gdmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190b19p
dmVjNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCWl2ZWMzIGluMCA9IGl2ZWMzKDAsIDAsIDApOworCQkJCWl2ZWM0IG91dDAgPSBpdmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190b19i
dmVjNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCWl2ZWMzIGluMCA9IGl2ZWMzKDAsIDAsIDApOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b192
ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJYnZlYzMgaW4wID0gYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKwkJCQl2ZWM0IG91dDAg
PSB2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2
ZWMzX3RvX2l2ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJYnZlYzMgaW4wID0gYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKwkJCQlp
dmVjNCBvdXQwID0gaXZlYzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYnZlYzNfdG9fYnZlYzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMyBpbjAgPSBidmVjMyh0cnVlLCBmYWxzZSwgZmFs
c2UpOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisKK2VuZCAjIHZlY3Rvcl9pbGxlZ2FsCitncm91cCB2ZWN0b3JfdG9fdmVj
dG9yICJWZWN0b3IgdG8gVmVjdG9yIENvbnZlcnNpb25zIgorCisJY2FzZSB2ZWM0X3RvX3ZlYzQK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4y
NSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0
cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAs
IDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZl
YzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSB2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHZlYzRfdG9fdmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQo
MC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2
ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwg
MjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAu
MjUpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZl
YzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygt
MzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF90b192ZWMyCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwg
MC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUs
IC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1
dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigt
MC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2l2ZWM0CisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCBp
dmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZl
YzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwg
MCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2l2ZWMzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCBp
dmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwg
LTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzRfdG9faXZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVj
NCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2
ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8
IGl2ZWMyKDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF90b19idmVj
NAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
NzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlv
dXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2J2ZWMzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwg
MC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUs
IC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1
dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHZlYzRfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0g
WyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEu
NzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0
cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gYnZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
aXZlYzRfdG9fdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVj
NCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8
IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1
dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKSB8IHZlYzQoMC4wLCAtMi4wLCAtNC4wLCA5LjApIHwgdmVjNCgtMzIuMCwgNjQu
MCwgLTUxLjAsIDI0LjApIHwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpdmVjNF90b192ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
dmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVj
NCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAw
LCAwKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZl
YzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKDAuMCwgLTIuMCwgLTQuMCkgfCB2ZWMzKC0zMi4wLCA2
NC4wLCAtNTEuMCkgfCB2ZWMzKDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpdmVjNF90b192ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAg
PSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwg
LTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDEuMCwgMS4wKSB8
IHZlYzIoMC4wLCAtMi4wKSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigwLjAsIDAuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX2l2ZWM0CisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwg
MSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBp
dmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQo
LTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGl2ZWM0X3RvX2l2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVj
NCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgw
LCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAw
KSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwg
MSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAs
IDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzRfdG9faXZlYzIKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBp
dmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAt
NTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsg
aXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQp
IHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjNF90b19i
dmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAw
LCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0z
MiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBidmVjNCBv
dXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzRfdG9fYnZlYzMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVj
NCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEs
IDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMz
KGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVj
MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjNF90
b19idmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAw
LCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0
KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBidmVj
MiBvdXQwID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90b192ZWM0CisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKSB8IHZlYzQo
MC4wLCAxLjAsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSB8IHZlYzQoMC4w
LCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9f
dmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBm
YWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
dmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMC4wLCAwLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSB8
IHZlYzMoMC4wLCAxLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIDAu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fdmVjMgorCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQw
ID0gWyB2ZWMyKDEuMCwgMC4wKSB8IHZlYzIoMC4wLCAwLjApIHwgdmVjMigwLjAsIDEuMCkgfCB2
ZWMyKDEuMCwgMS4wKSB8IHZlYzIoMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBidmVjNF90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0g
WyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMSwgMCwgMCwgMSkgfCBpdmVjNCgw
LCAwLCAwLCAxKSB8IGl2ZWM0KDAsIDEsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVj
NCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWM0X3RvX2l2
ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBp
dmVjMyBvdXQwID0gWyBpdmVjMygxLCAwLCAwKSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMCwg
MSwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYnZlYzRfdG9faXZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDEsIDApIHwgaXZl
YzIoMCwgMCkgfCBpdmVjMigwLCAxKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90b19idmVjNAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQo
dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWM0X3RvX2J2ZWMzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMz
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWM0X3Rv
X2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUs
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1
dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM190b192ZWMzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2
ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMo
LTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUy
NjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC4wLCAwLjUsIDAu
NzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkg
fCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVj
MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX3Rv
X3ZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41
LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44
NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigw
LjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMy
LjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHZlYzNfdG9faXZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkg
fCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwg
dmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0
cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVj
MygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJ
CX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM190b19pdmVjMgorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEu
MjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4w
LCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQp
IF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8
IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX3RvX2J2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4x
MjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4w
KSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJ
CW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHZlYzNfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMg
aW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2
ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVj
MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0
IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIoaW4wKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzNfdG9fdmVjMworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZl
YzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKDAuMCwgLTIuMCwgLTQuMCkgfCB2ZWMzKC0zMi4wLCA2
NC4wLCAtNTEuMCkgfCB2ZWMzKDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpdmVjM190b192ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAg
PSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwg
aXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgdmVjMiBv
dXQwID0gWyB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigwLjAsIC0yLjAp
IHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgaXZlYzNfdG9faXZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMz
IGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAt
NCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBp
dmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwg
LTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMzX3RvX2l2ZWMyCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVj
MygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJ
CQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMy
KDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpdmVjM190b19idmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIs
IC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0
IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgaXZlYzNfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMz
IGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAt
NCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBi
dmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBi
dmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b192ZWMzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMC4wLCAwLjApIHwgdmVjMygwLjAs
IDAuMCwgMC4wKSB8IHZlYzMoMC4wLCAxLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwg
dmVjMygwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZl
YzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNf
dG9fdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigxLjAsIDAuMCkg
fCB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoMC4wLCAxLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMy
KDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfdG9faXZlYzMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUs
IGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygxLCAwLCAwKSB8IGl2ZWMz
KDAsIDAsIDApIHwgaXZlYzMoMCwgMSwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAs
IDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfdG9faXZlYzIKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNl
KSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkg
XTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigxLCAwKSB8IGl2ZWMyKDAsIDApIHwg
aXZlYzIoMCwgMSkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYnZlYzNfdG9fYnZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBv
dXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGJ2ZWMzX3RvX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAg
PSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsg
YnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0
cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfdG9fdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigt
MC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIo
MS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMy
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dmVjMl90b19pdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIo
MC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0z
Mi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQg
aXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8
IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB2ZWMyX3RvX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsg
dmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZl
YzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91
dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0
cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX3ZlYzIKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91
dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMy
KDAuMCwgLTIuMCkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMC4wLCAwLjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19pdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
LTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91
dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigt
MzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZl
YzJfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIo
MCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZl
YzIoMCwgMCkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBidmVjMl90b192ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1
dCB2ZWMyIG91dDAgPSBbIHZlYzIoMS4wLCAwLjApIHwgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDAu
MCwgMS4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2l2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
dmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigxLCAwKSB8IGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMCwgMSkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZh
bHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBidmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisKK2VuZCAj
IHZlY3Rvcl90b192ZWN0b3IKK2dyb3VwIHNjYWxhcl90b19tYXRyaXggIlNjYWxhciB0byBNYXRy
aXggQ29udmVyc2lvbnMiCisKKwljYXNlIGZsb2F0X3RvX21hdDQKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1
IHwgLTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAgPSBbIG1hdDQoMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQo
Mi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMi4wKSB8IG1hdDQoMy41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDMu
NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAzLjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMy41KSB8IG1h
dDQoLTAuNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMC41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0w
LjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTAuNSkgfCBtYXQ0KC04LjI1LCAwLjAsIDAuMCwgMC4w
LCAwLjAsIC04LjI1LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC04LjI1LCAwLjAsIDAuMCwgMC4wLCAw
LjAsIC04LjI1KSB8IG1hdDQoLTIwLjEyNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1LCAw
LjAsIDAuMCwgMC4wLCAwLjAsIC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIwLjEyNSkg
fCBtYXQ0KDM2LjgxMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMzYuODEyNSwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAzNi44MTI1LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDM2LjgxMjUpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0y
MC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBtYXQzKDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MygxLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoMi4wLCAwLjAsIDAuMCwgMC4w
LCAyLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQzKDMuNSwgMC4wLCAwLjAsIDAuMCwgMy41
LCAwLjAsIDAuMCwgMC4wLCAzLjUpIHwgbWF0MygtMC41LCAwLjAsIDAuMCwgMC4wLCAtMC41LCAw
LjAsIDAuMCwgMC4wLCAtMC41KSB8IG1hdDMoLTguMjUsIDAuMCwgMC4wLCAwLjAsIC04LjI1LCAw
LjAsIDAuMCwgMC4wLCAtOC4yNSkgfCBtYXQzKC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAsIC0yMC4x
MjUsIDAuMCwgMC4wLCAwLjAsIC0yMC4xMjUpIHwgbWF0MygzNi44MTI1LCAwLjAsIDAuMCwgMC4w
LCAzNi44MTI1LCAwLjAsIDAuMCwgMC4wLCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgZmxvYXRfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
ID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYu
ODEyNSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MigyLjAsIDAuMCwgMC4wLCAyLjApIHwg
bWF0MigzLjUsIDAuMCwgMC4wLCAzLjUpIHwgbWF0MigtMC41LCAwLjAsIDAuMCwgLTAuNSkgfCBt
YXQyKC04LjI1LCAwLjAsIDAuMCwgLTguMjUpIHwgbWF0MigtMjAuMTI1LCAwLjAsIDAuMCwgLTIw
LjEyNSkgfCBtYXQyKDM2LjgxMjUsIDAuMCwgMC4wLCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW50X3RvX21hdDQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBp
bjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07
CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBt
YXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDIuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCkg
fCBtYXQ0KDUuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
NS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDUuMCkgfCBtYXQ0KDguMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgOC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDgu
MCkgfCBtYXQ0KDExLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMTEuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDExLjApIHwgbWF0NCgtMTIuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAtMTIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMTIuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAtMTIuMCkgfCBtYXQ0KC02Ni4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC02Ni4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC02Ni4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC02Ni4wKSB8
IG1hdDQoLTE5Mi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0xOTIuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAtMTkyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTE5Mi4wKSB8IG1hdDQoMjU1LjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMjU1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMjU1LjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMjU1LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
bWF0NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRf
dG9fbWF0MworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwg
NSB8IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBtYXQzIG91
dDAgPSBbIG1hdDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkg
fCBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0
MygyLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDAuMCwgMi4wKSB8IG1hdDMoNS4w
LCAwLjAsIDAuMCwgMC4wLCA1LjAsIDAuMCwgMC4wLCAwLjAsIDUuMCkgfCBtYXQzKDguMCwgMC4w
LCAwLjAsIDAuMCwgOC4wLCAwLjAsIDAuMCwgMC4wLCA4LjApIHwgbWF0MygxMS4wLCAwLjAsIDAu
MCwgMC4wLCAxMS4wLCAwLjAsIDAuMCwgMC4wLCAxMS4wKSB8IG1hdDMoLTEyLjAsIDAuMCwgMC4w
LCAwLjAsIC0xMi4wLCAwLjAsIDAuMCwgMC4wLCAtMTIuMCkgfCBtYXQzKC02Ni4wLCAwLjAsIDAu
MCwgMC4wLCAtNjYuMCwgMC4wLCAwLjAsIDAuMCwgLTY2LjApIHwgbWF0MygtMTkyLjAsIDAuMCwg
MC4wLCAwLjAsIC0xOTIuMCwgMC4wLCAwLjAsIDAuMCwgLTE5Mi4wKSB8IG1hdDMoMjU1LjAsIDAu
MCwgMC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGludF90b19tYXQyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQg
aW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBd
OworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MigyLjAsIDAuMCwgMC4wLCAyLjApIHwgbWF0Mig1
LjAsIDAuMCwgMC4wLCA1LjApIHwgbWF0Mig4LjAsIDAuMCwgMC4wLCA4LjApIHwgbWF0MigxMS4w
LCAwLjAsIDAuMCwgMTEuMCkgfCBtYXQyKC0xMi4wLCAwLjAsIDAuMCwgLTEyLjApIHwgbWF0Migt
NjYuMCwgMC4wLCAwLjAsIC02Ni4wKSB8IG1hdDIoLTE5Mi4wLCAwLjAsIDAuMCwgLTE5Mi4wKSB8
IG1hdDIoMjU1LjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGJvb2xfdG9fbWF0NAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRy
dWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgxLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjApIHwgbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBib29sX3RvX21hdDMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wg
aW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMS4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX3RvX21hdDIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4w
ID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoMS4wLCAw
LjAsIDAuMCwgMS4wKSB8IG1hdDIoMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCitlbmQgIyBzY2FsYXJfdG9fbWF0cml4Citncm91cCBtYXRyaXhfdG9fbWF0cml4
ICJNYXRyaXggdG8gTWF0cml4IENvbnZlcnNpb25zIgorCisJY2FzZSBtYXQ0X3RvX21hdDQKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMz
MzMzLCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAxMjUsIDkuOTc1
LCAtNi41NDIsIDAuMDE1NjI1LCA5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAgPSBbIG1h
dDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoNi41LCAzMi4wLCAwLjEyNSwgLTYuNzI1
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSwgLTAuNzUsIC04LjQyNSwgMC4w
MzEyNSwgLTAuMDEyNSwgOS45NzUsIC02LjU0MiwgMC4wMTU2MjUsIDkuOTc1KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWF0NF90b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBtYXQ0IGluMCA9IFsgbWF0NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIDMy
LjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAt
MC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSwg
OS45NzUpIF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41
LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDRfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgbWF0NCBpbjAgPSBbIG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoNi41
LCAzMi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAu
NSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSwgOS45NzUsIC02LjU0MiwgMC4wMTU2
MjUsIDkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigxLjAsIDAuMCwgMC4w
LCAxLjApIHwgbWF0Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMykgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDNfdG9fbWF0NAorCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgbWF0MyBpbjAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAw
LjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDMxMjUsIDAuMDYyNSwg
LTAuNzUsIDAuMDE1NjI1LCAwLjAzMTI1KSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIDMyLjAsIDAuMTI1LCAwLjAsIDEy
LjUsIDAuMDMxMjUsIDAuMDYyNSwgMC4wLCAtMC43NSwgMC4wMTU2MjUsIDAuMDMxMjUsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1h
dDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0M190
b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzIGluMCA9IFsgbWF0MygxLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoNi41LCAzMi4wLCAw
LjEyNSwgMTIuNSwgMC4wMzEyNSwgMC4wNjI1LCAtMC43NSwgMC4wMTU2MjUsIDAuMDMxMjUpIF07
CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAzMTI1
LCAwLjA2MjUsIC0wLjc1LCAwLjAxNTYyNSwgMC4wMzEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBtYXQzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hdDNfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0MyBpbjAg
PSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBt
YXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDMxMjUsIDAuMDYyNSwgLTAuNzUsIDAuMDE1
NjI1LCAwLjAzMTI1KSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigxLjAsIDAuMCwg
MC4wLCAxLjApIHwgbWF0Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDMxMjUpIF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtYXQyX3RvX21hdDQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1h
dDIgaW4wID0gWyBtYXQyKDEuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQyKDYuNSwgLTAuNzUsIDEy
LjUsIDkuOTc1KSB8IG1hdDIoNi41LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig4LjAsIC0y
NC4wLCAxNi4wLCAtMTYuMCkgfCBtYXQyKDAuMTI1LCAwLjAzMTI1LCAwLjA2MjUsIDAuMDE1NjI1
KSB8IG1hdDIoLTE4LjcyNSwgLTAuMDEyNSwgLTAuNSwgMTkuOTc1KSBdOworCQkJb3V0cHV0IG1h
dDQgb3V0MCA9IFsgbWF0NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIC0wLjc1
LCAwLjAsIDAuMCwgMTIuNSwgOS45NzUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgLTAuNzUsIDAuMCwgMC4wLCAxMi41LCA5Ljk3
NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1h
dDQoOC4wLCAtMjQuMCwgMC4wLCAwLjAsIDE2LjAsIC0xNi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCgwLjEyNSwgMC4wMzEyNSwgMC4w
LCAwLjAsIDAuMDYyNSwgMC4wMTU2MjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KC0xOC43MjUsIC0wLjAxMjUsIDAuMCwgMC4wLCAtMC41
LCAxOS45NzUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJfdG9fbWF0MworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgbWF0MiBpbjAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1h
dDIoNi41LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3
NSkgfCBtYXQyKDguMCwgLTI0LjAsIDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUs
IDAuMDYyNSwgMC4wMTU2MjUpIHwgbWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUp
IF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIC0wLjc1LCAwLjAsIDEyLjUsIDkuOTc1
LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIC0wLjc1LCAwLjAsIDEyLjUsIDkuOTc1
LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg4LjAsIC0yNC4wLCAwLjAsIDE2LjAsIC0xNi4w
LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MygwLjEyNSwgMC4wMzEyNSwgMC4wLCAwLjA2MjUs
IDAuMDE1NjI1LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MygtMTguNzI1LCAtMC4wMTI1LCAw
LjAsIC0wLjUsIDE5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWF0Ml90b19tYXQyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyIGlu
MCA9IFsgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5
Ljk3NSkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1KSB8IG1hdDIoOC4wLCAtMjQuMCwg
MTYuMCwgLTE2LjApIHwgbWF0MigwLjEyNSwgMC4wMzEyNSwgMC4wNjI1LCAwLjAxNTYyNSkgfCBt
YXQyKC0xOC43MjUsIC0wLjAxMjUsIC0wLjUsIDE5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQyIG91
dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAtMC43NSwgMTIuNSwg
OS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkgfCBtYXQyKDguMCwgLTI0LjAs
IDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUsIDAuMDYyNSwgMC4wMTU2MjUpIHwg
bWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUpIF07CisJCX0KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisKK2VuZCAjIG1hdHJpeF90b19tYXRyaXgKK2dyb3VwIHZlY3Rvcl9jb21iaW5lICJWZWN0
b3IgQ29tYmluZSBDb25zdHJ1Y3RvcnMiCisKKwljYXNlIHZlYzJfdmVjMl90b192ZWM0CisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMy
KC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCWlucHV0IHZlYzIgaW4xID0gWyB2ZWMyKC0z
Mi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC41
LCAtMi4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IHZl
YzQgb3V0MCA9IFsgdmVjNCgtMC41LCAtMi4yNSwgLTMyLjAsIDY0LjApIHwgdmVjNCgtMzIuMCwg
NjQuMCwgMS4wLCAxLjI1KSB8IHZlYzQoMS4wLCAxLjI1LCAwLjAsIDAuNSkgfCB2ZWM0KDAuMCwg
MC41LCAtMC41LCAtMi4yNSkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0
KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVj
Ml92ZWMyX3RvX2l2ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZl
YzIoMC4wLCAwLjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCWlucHV0
IHZlYzIgaW4xID0gWyB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIo
MC4wLCAwLjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIC0yLCAtMzIsIDY0KSB8
IGl2ZWM0KC0zMiwgNjQsIDEsIDEpIHwgaXZlYzQoMSwgMSwgMCwgMCkgfCBpdmVjNCgwLCAwLCAw
LCAtMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGl2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdmVjMl92ZWMyX3RvX2J2ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGlu
MCA9IFsgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAx
LjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsK
KwkJCWlucHV0IHZlYzIgaW4xID0gWyB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1
KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYnZlYzJfYnZlYzJfdG9fdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzIgaW4wID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwg
YnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4w
LCAwLjAsIDEuMCwgMC4wKSB8IHZlYzQoMS4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMC4wLCAx
LjAsIDAuMCwgMS4wKSB8IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKSB8IHZlYzQoMS4wLCAxLjAs
IDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBp
bjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl9idmVj
Ml90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMihm
YWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCQlpbnB1dCBidmVj
MiBpbjEgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVj
MihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
XTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAxLCAwKSB8IGl2ZWM0KDEs
IDAsIDAsIDApIHwgaXZlYzQoMCwgMSwgMCwgMSkgfCBpdmVjNCgwLCAwLCAxLCAxKSB8IGl2ZWM0
KDEsIDEsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4w
LCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl9i
dmVjMl90b19idmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUp
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCQlpbnB1dCBi
dmVjMiBpbjEgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUs
IGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2Us
IHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmbG9hdF9mbG9hdF9mbG9hdF9mbG9hdF90b192ZWM0CisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDEuMCB8IDAuMCB8IC0wLjUgfCAtOC4yNSB8IDMuNSB8
IC0yMC4xMjUgfCAzNi44MTI1IHwgMi4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDAuMCB8
IDM2LjgxMjUgfCAtOC4yNSB8IDIuMCB8IDMuNSB8IDEuMCB8IC0yMC4xMjUgfCAtMC41IF07CisJ
CQlpbnB1dCBmbG9hdCBpbjIgPSBbIDMuNSB8IDM2LjgxMjUgfCAtOC4yNSB8IDEuMCB8IDIuMCB8
IDAuMCB8IC0yMC4xMjUgfCAtMC41IF07CisJCQlpbnB1dCBmbG9hdCBpbjMgPSBbIDMuNSB8IDM2
LjgxMjUgfCAxLjAgfCAtOC4yNSB8IDIuMCB8IDAuMCB8IC0wLjUgfCAtMjAuMTI1IF07CisJCQlv
dXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDEuMCwgMC4wLCAzLjUsIDMuNSkgfCB2ZWM0KDAuMCwg
MzYuODEyNSwgMzYuODEyNSwgMzYuODEyNSkgfCB2ZWM0KC0wLjUsIC04LjI1LCAtOC4yNSwgMS4w
KSB8IHZlYzQoLTguMjUsIDIuMCwgMS4wLCAtOC4yNSkgfCB2ZWM0KDMuNSwgMy41LCAyLjAsIDIu
MCkgfCB2ZWM0KC0yMC4xMjUsIDEuMCwgMC4wLCAwLjApIHwgdmVjNCgzNi44MTI1LCAtMjAuMTI1
LCAtMjAuMTI1LCAtMC41KSB8IHZlYzQoMi4wLCAtMC41LCAtMC41LCAtMjAuMTI1KSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfZmxvYXRfZmxvYXRf
ZmxvYXRfdG9faXZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMS4w
IHwgMC4wIHwgLTAuNSB8IC04LjI1IHwgMy41IHwgLTIwLjEyNSB8IDM2LjgxMjUgfCAyLjAgXTsK
KwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMC4wIHwgMzYuODEyNSB8IC04LjI1IHwgMi4wIHwgMy41
IHwgMS4wIHwgLTIwLjEyNSB8IC0wLjUgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgMy41IHwg
MzYuODEyNSB8IC04LjI1IHwgMS4wIHwgMi4wIHwgMC4wIHwgLTIwLjEyNSB8IC0wLjUgXTsKKwkJ
CWlucHV0IGZsb2F0IGluMyA9IFsgMy41IHwgMzYuODEyNSB8IDEuMCB8IC04LjI1IHwgMi4wIHwg
MC4wIHwgLTAuNSB8IC0yMC4xMjUgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgx
LCAwLCAzLCAzKSB8IGl2ZWM0KDAsIDM2LCAzNiwgMzYpIHwgaXZlYzQoMCwgLTgsIC04LCAxKSB8
IGl2ZWM0KC04LCAyLCAxLCAtOCkgfCBpdmVjNCgzLCAzLCAyLCAyKSB8IGl2ZWM0KC0yMCwgMSwg
MCwgMCkgfCBpdmVjNCgzNiwgLTIwLCAtMjAsIDApIHwgaXZlYzQoMiwgMCwgMCwgLTIwKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X2Zs
b2F0X2Zsb2F0X3RvX2J2ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBb
IDEuMCB8IDAuMCB8IC0wLjUgfCAtOC4yNSB8IDMuNSB8IC0yMC4xMjUgfCAzNi44MTI1IHwgMi4w
IF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDAuMCB8IDM2LjgxMjUgfCAtOC4yNSB8IDIuMCB8
IDMuNSB8IDEuMCB8IC0yMC4xMjUgfCAtMC41IF07CisJCQlpbnB1dCBmbG9hdCBpbjIgPSBbIDMu
NSB8IDM2LjgxMjUgfCAtOC4yNSB8IDEuMCB8IDIuMCB8IDAuMCB8IC0yMC4xMjUgfCAtMC41IF07
CisJCQlpbnB1dCBmbG9hdCBpbjMgPSBbIDMuNSB8IDM2LjgxMjUgfCAxLjAgfCAtOC4yNSB8IDIu
MCB8IDAuMCB8IC0wLjUgfCAtMjAuMTI1IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZl
YzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBidmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpbnRfaW50X2ludF9pbnRfdG9fdmVjNAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgaW50IGluMCA9IFsgLTEyIHwgLTY2IHwgMiB8IDUgfCA4IHwgLTE5MiB8IDI1NSB8
IDEgfCAwIHwgMTEgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIDIgfCA1IHwgLTY2IHwgMTEgfCAt
MTkyIHwgOCB8IC0xMiB8IDEgfCAyNTUgfCAwIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAxMSB8
IDI1NSB8IDUgfCA4IHwgMiB8IC0xOTIgfCAtMTIgfCAtNjYgfCAxIHwgMCBdOworCQkJaW5wdXQg
aW50IGluMyA9IFsgLTE5MiB8IC02NiB8IDggfCAtMTIgfCAxIHwgMiB8IDAgfCAyNTUgfCA1IHwg
MTEgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoLTEyLjAsIDIuMCwgMTEuMCwgLTE5
Mi4wKSB8IHZlYzQoLTY2LjAsIDUuMCwgMjU1LjAsIC02Ni4wKSB8IHZlYzQoMi4wLCAtNjYuMCwg
NS4wLCA4LjApIHwgdmVjNCg1LjAsIDExLjAsIDguMCwgLTEyLjApIHwgdmVjNCg4LjAsIC0xOTIu
MCwgMi4wLCAxLjApIHwgdmVjNCgtMTkyLjAsIDguMCwgLTE5Mi4wLCAyLjApIHwgdmVjNCgyNTUu
MCwgLTEyLjAsIC0xMi4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMCwgLTY2LjAsIDI1NS4wKSB8IHZl
YzQoMC4wLCAyNTUuMCwgMS4wLCA1LjApIHwgdmVjNCgxMS4wLCAwLjAsIDAuMCwgMTEuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50X2lu
dF90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgLTEyIHwgLTY2
IHwgMiB8IDUgfCA4IHwgLTE5MiB8IDI1NSB8IDEgfCAwIHwgMTEgXTsKKwkJCWlucHV0IGludCBp
bjEgPSBbIDIgfCA1IHwgLTY2IHwgMTEgfCAtMTkyIHwgOCB8IC0xMiB8IDEgfCAyNTUgfCAwIF07
CisJCQlpbnB1dCBpbnQgaW4yID0gWyAxMSB8IDI1NSB8IDUgfCA4IHwgMiB8IC0xOTIgfCAtMTIg
fCAtNjYgfCAxIHwgMCBdOworCQkJaW5wdXQgaW50IGluMyA9IFsgLTE5MiB8IC02NiB8IDggfCAt
MTIgfCAxIHwgMiB8IDAgfCAyNTUgfCA1IHwgMTEgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0g
WyBpdmVjNCgtMTIsIDIsIDExLCAtMTkyKSB8IGl2ZWM0KC02NiwgNSwgMjU1LCAtNjYpIHwgaXZl
YzQoMiwgLTY2LCA1LCA4KSB8IGl2ZWM0KDUsIDExLCA4LCAtMTIpIHwgaXZlYzQoOCwgLTE5Miwg
MiwgMSkgfCBpdmVjNCgtMTkyLCA4LCAtMTkyLCAyKSB8IGl2ZWM0KDI1NSwgLTEyLCAtMTIsIDAp
IHwgaXZlYzQoMSwgMSwgLTY2LCAyNTUpIHwgaXZlYzQoMCwgMjU1LCAxLCA1KSB8IGl2ZWM0KDEx
LCAwLCAwLCAxMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjAs
IGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbnRfaW50X2ludF9pbnRfdG9fYnZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBp
bjAgPSBbIC0xMiB8IC02NiB8IDIgfCA1IHwgOCB8IC0xOTIgfCAyNTUgfCAxIHwgMCB8IDExIF07
CisJCQlpbnB1dCBpbnQgaW4xID0gWyAyIHwgNSB8IC02NiB8IDExIHwgLTE5MiB8IDggfCAtMTIg
fCAxIHwgMjU1IHwgMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMTEgfCAyNTUgfCA1IHwgOCB8
IDIgfCAtMTkyIHwgLTEyIHwgLTY2IHwgMSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjMgPSBbIC0x
OTIgfCAtNjYgfCA4IHwgLTEyIHwgMSB8IDIgfCAwIHwgMjU1IHwgNSB8IDExIF07CisJCQlvdXRw
dXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIF07
CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEsIGluMiwgaW4z
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jv
b2xfYm9vbF90b192ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1
ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlp
bnB1dCBib29sIGluMiA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsg
ZmFsc2UgfCB0cnVlIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDEuMCwgMC4wLCAx
LjAsIDAuMCkgfCB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF9ib29sX2Jvb2xfdG9faXZlYzQKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlu
cHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGJvb2wgaW4yID0gWyB0
cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4zID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJ
CW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgxLCAwLCAxLCAwKSB8IGl2ZWM0KDAsIDEsIDAs
IDEpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4wLCBpbjEsIGlu
MiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9i
b29sX2Jvb2xfYm9vbF90b19idmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAg
PSBbIHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBbIGZhbHNlIHwgdHJ1ZSBd
OworCQkJaW5wdXQgYm9vbCBpbjIgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBp
bjMgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRy
dWUsIGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEsIGluMiwg
aW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9mbG9h
dF9pbnRfYm9vbF90b192ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsg
dHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDIuMCB8IDEu
MCB8IDAuMCB8IDM2LjgxMjUgfCAtOC4yNSB8IC0wLjUgfCAzLjUgfCAtMjAuMTI1IHwgMC4wIF07
CisJCQlpbnB1dCBpbnQgaW4yID0gWyAtMTkyIHwgLTEyIHwgMiB8IC02NiB8IDI1NSB8IDggfCAw
IHwgNSB8IDExIHwgMSBdOworCQkJaW5wdXQgYm9vbCBpbjMgPSBbIHRydWUgfCB0cnVlIHwgZmFs
c2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBd
OworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgxLjAsIDEuMCwgLTE5Mi4wLCAxLjApIHwg
dmVjNCgxLjAsIDIuMCwgLTEyLjAsIDEuMCkgfCB2ZWM0KDEuMCwgMS4wLCAyLjAsIDAuMCkgfCB2
ZWM0KDAuMCwgMC4wLCAtNjYuMCwgMC4wKSB8IHZlYzQoMC4wLCAzNi44MTI1LCAyNTUuMCwgMS4w
KSB8IHZlYzQoMC4wLCAtOC4yNSwgOC4wLCAwLjApIHwgdmVjNCgxLjAsIC0wLjUsIDAuMCwgMC4w
KSB8IHZlYzQoMC4wLCAzLjUsIDUuMCwgMC4wKSB8IHZlYzQoMS4wLCAtMjAuMTI1LCAxMS4wLCAx
LjApIHwgdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2ludF9ib29sX3RvX2l2ZWM0CisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2Ug
fCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1
dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDIuMCB8IDEuMCB8IDAuMCB8IDM2LjgxMjUgfCAtOC4yNSB8
IC0wLjUgfCAzLjUgfCAtMjAuMTI1IHwgMC4wIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAtMTky
IHwgLTEyIHwgMiB8IC02NiB8IDI1NSB8IDggfCAwIHwgNSB8IDExIHwgMSBdOworCQkJaW5wdXQg
Ym9vbCBpbjMgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8
IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBb
IGl2ZWM0KDEsIDEsIC0xOTIsIDEpIHwgaXZlYzQoMSwgMiwgLTEyLCAxKSB8IGl2ZWM0KDEsIDEs
IDIsIDApIHwgaXZlYzQoMCwgMCwgLTY2LCAwKSB8IGl2ZWM0KDAsIDM2LCAyNTUsIDEpIHwgaXZl
YzQoMCwgLTgsIDgsIDApIHwgaXZlYzQoMSwgMCwgMCwgMCkgfCBpdmVjNCgwLCAzLCA1LCAwKSB8
IGl2ZWM0KDEsIC0yMCwgMTEsIDEpIHwgaXZlYzQoMCwgMCwgMSwgMSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2ludF9ib29sX3RvX2J2
ZWM0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IHRydWUgfCB0
cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNl
IF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDIuMCB8IDEuMCB8IDAuMCB8IDM2Ljgx
MjUgfCAtOC4yNSB8IC0wLjUgfCAzLjUgfCAtMjAuMTI1IHwgMC4wIF07CisJCQlpbnB1dCBpbnQg
aW4yID0gWyAtMTkyIHwgLTEyIHwgMiB8IC02NiB8IDI1NSB8IDggfCAwIHwgNSB8IDExIHwgMSBd
OworCQkJaW5wdXQgYm9vbCBpbjMgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRy
dWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IGJ2
ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVl
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xLCBpbjIs
IGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfaXZl
YzJfdG9fdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTAu
NSwgLTIuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4w
LCAxLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCBpdmVj
MiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBp
dmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0
KC0wLjUsIC0yLjI1LCAwLjAsIDAuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjAsIC0yLjApIHwgdmVj
NCgtMzIuMCwgNjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjNCgxLjAsIDEuMjUsIDAuMCwgMC4wKSB8
IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDEuMCwgMS4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX2l2ZWMyX3RvX2l2ZWM0CisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8
IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSkgXTsKKwkJCWlucHV0IGl2ZWMyIGluMSA9IFsgaXZlYzIoMCwgMCkgfCBpdmVj
MigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgXTsK
KwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAtMiwgMCwgMCkgfCBpdmVjNCgwLCAw
LCAwLCAtMikgfCBpdmVjNCgtMzIsIDY0LCAtMzIsIDY0KSB8IGl2ZWM0KDEsIDEsIDAsIDApIHwg
aXZlYzQoMCwgMCwgMSwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVj
NChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZl
YzJfaXZlYzJfdG9fYnZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2
ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2
ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJaW5w
dXQgaXZlYzIgaW4xID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwg
NjQpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAg
PSBbIGJ2ZWM0KHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjAsIGluMSk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfYnZlYzJfdG9fdmVjNAorCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTMyLjAsIDY0LjApIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxKSB8IHZlYzIoMC4wLCAwLjUpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB2
ZWM0IG91dDAgPSBbIHZlYzQoLTMyLjAsIDY0LjAsIDAuMCwgMC4wKSB8IHZlYzQoLTAuNSwgLTIu
MjUsIDEuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDEuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9idmVjMl90b19pdmVjNAorCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTMyLjAsIDY0LjApIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxKSB8IHZlYzIoMC4wLCAwLjUpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBp
dmVjNCBvdXQwID0gWyBpdmVjNCgtMzIsIDY0LCAwLCAwKSB8IGl2ZWM0KDAsIC0yLCAxLCAwKSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgMCwgMCwgMSkgfCBpdmVjNCgwLCAwLCAwLCAw
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9idmVjMl90b19idmVj
NAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTMyLjAsIDY0LjAp
IHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxKSB8IHZlYzIoMC4wLCAwLjUpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBb
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91
dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNf
ZmxvYXRfdG9fdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVj
Myh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlu
cHV0IGZsb2F0IGluMSA9IFsgLTguMjUgfCAtMjAuMTI1IHwgMi4wIHwgMC4wIHwgLTAuNSB8IDMu
NSB8IDM2LjgxMjUgfCAxLjAgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMS4wLCAw
LjAsIDAuMCwgLTguMjUpIHwgdmVjNCgwLjAsIDAuMCwgMC4wLCAtMjAuMTI1KSB8IHZlYzQoMC4w
LCAwLjAsIDAuMCwgMi4wKSB8IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAw
LjAsIDAuMCwgLTAuNSkgfCB2ZWM0KDAuMCwgMS4wLCAwLjAsIDMuNSkgfCB2ZWM0KDAuMCwgMS4w
LCAwLjAsIDM2LjgxMjUpIHwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApIF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMzX2Zsb2F0X3RvX2l2ZWM0CisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAtOC4yNSB8IC0y
MC4xMjUgfCAyLjAgfCAwLjAgfCAtMC41IHwgMy41IHwgMzYuODEyNSB8IDEuMCBdOworCQkJb3V0
cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDEsIDAsIDAsIC04KSB8IGl2ZWM0KDAsIDAsIDAsIC0y
MCkgfCBpdmVjNCgwLCAwLCAwLCAyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMCwg
MCwgMCkgfCBpdmVjNCgwLCAxLCAwLCAzKSB8IGl2ZWM0KDAsIDEsIDAsIDM2KSB8IGl2ZWM0KDEs
IDEsIDEsIDEpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4wLCBp
bjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM19mbG9h
dF90b19idmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
dHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlucHV0
IGZsb2F0IGluMSA9IFsgLTguMjUgfCAtMjAuMTI1IHwgMi4wIHwgMC4wIHwgLTAuNSB8IDMuNSB8
IDM2LjgxMjUgfCAxLjAgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBm
YWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSB2ZWMzX2Zsb2F0X3RvX3ZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQp
IHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVj
MygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAt
Mi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoMS4wLCAxLjI1
LCAxLjEyNSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMC4wIHwgMi4wIHwgMzYuODEyNSB8
IDMuNSB8IDEuMCB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgXTsKKwkJCW91dHB1dCB2ZWM0IG91
dDAgPSBbIHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4w
KSB8IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDIuMCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUs
IDM2LjgxMjUpIHwgdmVjNCgwLjAsIDAuNSwgMC43NSwgMy41KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgLTAuNSkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgLTguMjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAtMjAuMTI1KSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBpbjEpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX2Zsb2F0X3RvX2l2ZWM0CisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygt
MC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEu
MjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4w
LCAtNTEuMCkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIF07CisJCQlpbnB1dCBmbG9hdCBpbjEg
PSBbIDAuMCB8IDIuMCB8IDM2LjgxMjUgfCAzLjUgfCAxLjAgfCAtMC41IHwgLTguMjUgfCAtMjAu
MTI1IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVj
NCgwLCAwLCAwLCAyKSB8IGl2ZWM0KDAsIC0yLCAtNCwgMzYpIHwgaXZlYzQoMCwgMCwgMCwgMykg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgMCkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIC04KSB8IGl2ZWM0KDEsIDEsIDEsIC0yMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHZlYzNfZmxvYXRfdG9fYnZlYzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzMgaW4wID0gWyB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQpIHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwg
dmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41
LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoMS4wLCAx
LjI1LCAxLjEyNSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMC4wIHwgMi4wIHwgMzYuODEy
NSB8IDMuNSB8IDEuMCB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgXTsKKwkJCW91dHB1dCBidmVj
NCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBpbnRfaXZlYzJfaW50X3RvX3ZlYzQKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGludCBpbjAgPSBbIC02NiB8IDggfCAtMTkyIHwgMjU1IHwgNSB8IC0xMiB8IDAg
fCAyIHwgMSB8IDExIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZl
YzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgLTIp
IHwgaXZlYzIoMCwgMCkgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDggfCAyIHwgMTEgfCAtMTky
IHwgMjU1IHwgLTEyIHwgMCB8IC02NiB8IDEgfCA1IF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0g
WyB2ZWM0KC02Ni4wLCAwLjAsIDAuMCwgOC4wKSB8IHZlYzQoOC4wLCAwLjAsIDAuMCwgMi4wKSB8
IHZlYzQoLTE5Mi4wLCAtMzIuMCwgNjQuMCwgMTEuMCkgfCB2ZWM0KDI1NS4wLCAtMzIuMCwgNjQu
MCwgLTE5Mi4wKSB8IHZlYzQoNS4wLCAxLjAsIDEuMCwgMjU1LjApIHwgdmVjNCgtMTIuMCwgMC4w
LCAwLjAsIC0xMi4wKSB8IHZlYzQoMC4wLCAxLjAsIDEuMCwgMC4wKSB8IHZlYzQoMi4wLCAwLjAs
IC0yLjAsIC02Ni4wKSB8IHZlYzQoMS4wLCAwLjAsIC0yLjAsIDEuMCkgfCB2ZWM0KDExLjAsIDAu
MCwgMC4wLCA1LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAs
IGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50
X2l2ZWMyX2ludF90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsg
LTY2IHwgOCB8IC0xOTIgfCAyNTUgfCA1IHwgLTEyIHwgMCB8IDIgfCAxIHwgMTEgXTsKKwkJCWlu
cHV0IGl2ZWMyIGluMSA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKC0zMiwg
NjQpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIo
MSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAwKSBdOworCQkJ
aW5wdXQgaW50IGluMiA9IFsgOCB8IDIgfCAxMSB8IC0xOTIgfCAyNTUgfCAtMTIgfCAwIHwgLTY2
IHwgMSB8IDUgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgtNjYsIDAsIDAsIDgp
IHwgaXZlYzQoOCwgMCwgMCwgMikgfCBpdmVjNCgtMTkyLCAtMzIsIDY0LCAxMSkgfCBpdmVjNCgy
NTUsIC0zMiwgNjQsIC0xOTIpIHwgaXZlYzQoNSwgMSwgMSwgMjU1KSB8IGl2ZWM0KC0xMiwgMCwg
MCwgLTEyKSB8IGl2ZWM0KDAsIDEsIDEsIDApIHwgaXZlYzQoMiwgMCwgLTIsIC02NikgfCBpdmVj
NCgxLCAwLCAtMiwgMSkgfCBpdmVjNCgxMSwgMCwgMCwgNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpdmVjNChpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgaW50X2l2ZWMyX2ludF90b19idmVjNAorCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgLTY2IHwgOCB8IC0xOTIgfCAyNTUgfCA1IHwgLTEyIHwg
MCB8IDIgfCAxIHwgMTEgXTsKKwkJCWlucHV0IGl2ZWMyIGluMSA9IFsgaXZlYzIoMCwgMCkgfCBp
dmVjMigwLCAwKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAt
MikgfCBpdmVjMigwLCAwKSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgOCB8IDIgfCAxMSB8IC0x
OTIgfCAyNTUgfCAtMTIgfCAwIHwgLTY2IHwgMSB8IDUgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQw
ID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFs
c2UsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xLCBpbjIpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2l2ZWMyX3RvX3Zl
YzQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgdHJ1ZSB8IHRy
dWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZs
b2F0IGluMSA9IFsgMi4wIHwgMC4wIHwgMy41IHwgLTguMjUgfCAzNi44MTI1IHwgLTIwLjEyNSB8
IDEuMCB8IC0wLjUgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMCwgMCkgfCBpdmVj
MigwLCAwKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBp
dmVjMigwLCAtMikgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgdmVj
NCBvdXQwID0gWyB2ZWM0KDEuMCwgMi4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMC4wLCAwLjAs
IDAuMCkgfCB2ZWM0KDEuMCwgMy41LCAtMzIuMCwgNjQuMCkgfCB2ZWM0KDEuMCwgLTguMjUsIDEu
MCwgMS4wKSB8IHZlYzQoMC4wLCAzNi44MTI1LCAwLjAsIC0yLjApIHwgdmVjNCgwLjAsIC0yMC4x
MjUsIDAuMCwgLTIuMCkgfCB2ZWM0KDAuMCwgMS4wLCAxLjAsIDEuMCkgfCB2ZWM0KDAuMCwgLTAu
NSwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAs
IGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9v
bF9mbG9hdF9pdmVjMl90b19pdmVjNAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAg
PSBbIHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCBm
YWxzZSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAyLjAgfCAwLjAgfCAzLjUgfCAtOC4yNSB8
IDM2LjgxMjUgfCAtMjAuMTI1IHwgMS4wIHwgLTAuNSBdOworCQkJaW5wdXQgaXZlYzIgaW4yID0g
WyBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
MCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgxLCAyLCAwLCAwKSB8IGl2ZWM0
KDEsIDAsIDAsIDApIHwgaXZlYzQoMSwgMywgLTMyLCA2NCkgfCBpdmVjNCgxLCAtOCwgMSwgMSkg
fCBpdmVjNCgwLCAzNiwgMCwgLTIpIHwgaXZlYzQoMCwgLTIwLCAwLCAtMikgfCBpdmVjNCgwLCAx
LCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaXZlYzQoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGJvb2xfZmxvYXRfaXZlYzJfdG9fYnZlYzQKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBm
YWxzZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwgMC4w
IHwgMy41IHwgLTguMjUgfCAzNi44MTI1IHwgLTIwLjEyNSB8IDEuMCB8IC0wLjUgXTsKKwkJCWlu
cHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKC0zMiwg
NjQpIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAtMikgfCBpdmVjMigx
LCAxKSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
dHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBidmVjNChpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZmxvYXRfZmxvYXRfZmxvYXRfdG9fdmVjMworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wID0gWyAzLjUgfCAyLjAgfCAtMjAuMTI1IHwgLTguMjUgfCAzNi44
MTI1IHwgMS4wIHwgMC4wIHwgLTAuNSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAtMC41IHwg
MS4wIHwgMi4wIHwgLTIwLjEyNSB8IDAuMCB8IC04LjI1IHwgMzYuODEyNSB8IDMuNSBdOworCQkJ
aW5wdXQgZmxvYXQgaW4yID0gWyAwLjAgfCAxLjAgfCAzLjUgfCAtOC4yNSB8IC0wLjUgfCAzNi44
MTI1IHwgLTIwLjEyNSB8IDIuMCBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygzLjUs
IC0wLjUsIDAuMCkgfCB2ZWMzKDIuMCwgMS4wLCAxLjApIHwgdmVjMygtMjAuMTI1LCAyLjAsIDMu
NSkgfCB2ZWMzKC04LjI1LCAtMjAuMTI1LCAtOC4yNSkgfCB2ZWMzKDM2LjgxMjUsIDAuMCwgLTAu
NSkgfCB2ZWMzKDEuMCwgLTguMjUsIDM2LjgxMjUpIHwgdmVjMygwLjAsIDM2LjgxMjUsIC0yMC4x
MjUpIHwgdmVjMygtMC41LCAzLjUsIDIuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSB2ZWMzKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmbG9hdF9mbG9hdF9mbG9hdF90b19pdmVjMworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wID0gWyAzLjUgfCAyLjAgfCAtMjAuMTI1IHwgLTguMjUgfCAzNi44MTI1
IHwgMS4wIHwgMC4wIHwgLTAuNSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAtMC41IHwgMS4w
IHwgMi4wIHwgLTIwLjEyNSB8IDAuMCB8IC04LjI1IHwgMzYuODEyNSB8IDMuNSBdOworCQkJaW5w
dXQgZmxvYXQgaW4yID0gWyAwLjAgfCAxLjAgfCAzLjUgfCAtOC4yNSB8IC0wLjUgfCAzNi44MTI1
IHwgLTIwLjEyNSB8IDIuMCBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDMsIDAs
IDApIHwgaXZlYzMoMiwgMSwgMSkgfCBpdmVjMygtMjAsIDIsIDMpIHwgaXZlYzMoLTgsIC0yMCwg
LTgpIHwgaXZlYzMoMzYsIDAsIDApIHwgaXZlYzMoMSwgLTgsIDM2KSB8IGl2ZWMzKDAsIDM2LCAt
MjApIHwgaXZlYzMoMCwgMywgMikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
dmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgZmxvYXRfZmxvYXRfZmxvYXRfdG9fYnZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGZsb2F0IGluMCA9IFsgMy41IHwgMi4wIHwgLTIwLjEyNSB8IC04LjI1IHwgMzYuODEyNSB8IDEu
MCB8IDAuMCB8IC0wLjUgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTAuNSB8IDEuMCB8IDIu
MCB8IC0yMC4xMjUgfCAwLjAgfCAtOC4yNSB8IDM2LjgxMjUgfCAzLjUgXTsKKwkJCWlucHV0IGZs
b2F0IGluMiA9IFsgMC4wIHwgMS4wIHwgMy41IHwgLTguMjUgfCAtMC41IHwgMzYuODEyNSB8IC0y
MC4xMjUgfCAyLjAgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCB0cnVl
LCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
YnZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGludF9pbnRfaW50X3RvX3ZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBp
bjAgPSBbIDAgfCAyIHwgMSB8IDUgfCAyNTUgfCA4IHwgLTY2IHwgMTEgfCAtMTIgfCAtMTkyIF07
CisJCQlpbnB1dCBpbnQgaW4xID0gWyAyIHwgOCB8IDExIHwgLTEyIHwgLTE5MiB8IDEgfCAtNjYg
fCA1IHwgMjU1IHwgMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgLTE5MiB8IC0xMiB8IC02NiB8
IDggfCAxIHwgMiB8IDUgfCAxMSB8IDI1NSB8IDAgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoMC4wLCAyLjAsIC0xOTIuMCkgfCB2ZWMzKDIuMCwgOC4wLCAtMTIuMCkgfCB2ZWMzKDEu
MCwgMTEuMCwgLTY2LjApIHwgdmVjMyg1LjAsIC0xMi4wLCA4LjApIHwgdmVjMygyNTUuMCwgLTE5
Mi4wLCAxLjApIHwgdmVjMyg4LjAsIDEuMCwgMi4wKSB8IHZlYzMoLTY2LjAsIC02Ni4wLCA1LjAp
IHwgdmVjMygxMS4wLCA1LjAsIDExLjApIHwgdmVjMygtMTIuMCwgMjU1LjAsIDI1NS4wKSB8IHZl
YzMoLTE5Mi4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2
ZWMzKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpbnRfaW50X2ludF90b19pdmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgMCB8IDIgfCAxIHwgNSB8IDI1NSB8IDggfCAtNjYgfCAxMSB8IC0xMiB8IC0xOTIgXTsK
KwkJCWlucHV0IGludCBpbjEgPSBbIDIgfCA4IHwgMTEgfCAtMTIgfCAtMTkyIHwgMSB8IC02NiB8
IDUgfCAyNTUgfCAwIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAtMTkyIHwgLTEyIHwgLTY2IHwg
OCB8IDEgfCAyIHwgNSB8IDExIHwgMjU1IHwgMCBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBb
IGl2ZWMzKDAsIDIsIC0xOTIpIHwgaXZlYzMoMiwgOCwgLTEyKSB8IGl2ZWMzKDEsIDExLCAtNjYp
IHwgaXZlYzMoNSwgLTEyLCA4KSB8IGl2ZWMzKDI1NSwgLTE5MiwgMSkgfCBpdmVjMyg4LCAxLCAy
KSB8IGl2ZWMzKC02NiwgLTY2LCA1KSB8IGl2ZWMzKDExLCA1LCAxMSkgfCBpdmVjMygtMTIsIDI1
NSwgMjU1KSB8IGl2ZWMzKC0xOTIsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaXZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGludF9pbnRfaW50X3RvX2J2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpbnQgaW4wID0gWyAwIHwgMiB8IDEgfCA1IHwgMjU1IHwgOCB8IC02NiB8IDExIHwgLTEyIHwg
LTE5MiBdOworCQkJaW5wdXQgaW50IGluMSA9IFsgMiB8IDggfCAxMSB8IC0xMiB8IC0xOTIgfCAx
IHwgLTY2IHwgNSB8IDI1NSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC0xOTIgfCAtMTIg
fCAtNjYgfCA4IHwgMSB8IDIgfCA1IHwgMTEgfCAyNTUgfCAwIF07CisJCQlvdXRwdXQgYnZlYzMg
b3V0MCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMz
KHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfdG9fdmVjMworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQg
Ym9vbCBpbjEgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjIgPSBbIGZhbHNl
IHwgdHJ1ZSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8
IHZlYzMoMS4wLCAxLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2
ZWMzKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBib29sX2Jvb2xfYm9vbF90b19pdmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9v
bCBpbjAgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBbIGZhbHNlIHwg
dHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjIgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0
IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfdG9fYnZlYzMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJ
CWlucHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGJvb2wgaW4yID0g
WyBmYWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfZmxvYXRfaW50X3RvX3ZlYzMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0
IGZsb2F0IGluMSA9IFsgMC4wIHwgMi4wIHwgMS4wIHwgLTAuNSB8IC04LjI1IHwgMy41IHwgLTIw
LjEyNSB8IDEuMCB8IDAuMCB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC0xMiB8
IC0xOTIgfCAyIHwgNSB8IC02NiB8IDI1NSB8IDExIHwgMCB8IDggfCAxIF07CisJCQlvdXRwdXQg
dmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwgMC4wLCAtMTIuMCkgfCB2ZWMzKDEuMCwgMi4wLCAtMTky
LjApIHwgdmVjMygwLjAsIDEuMCwgMi4wKSB8IHZlYzMoMS4wLCAtMC41LCA1LjApIHwgdmVjMygw
LjAsIC04LjI1LCAtNjYuMCkgfCB2ZWMzKDEuMCwgMy41LCAyNTUuMCkgfCB2ZWMzKDAuMCwgLTIw
LjEyNSwgMTEuMCkgfCB2ZWMzKDEuMCwgMS4wLCAwLjApIHwgdmVjMygwLjAsIDAuMCwgOC4wKSB8
IHZlYzMoMS4wLCAzNi44MTI1LCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gdmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYm9vbF9mbG9hdF9pbnRfdG9faXZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsg
MC4wIHwgMi4wIHwgMS4wIHwgLTAuNSB8IC04LjI1IHwgMy41IHwgLTIwLjEyNSB8IDEuMCB8IDAu
MCB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC0xMiB8IC0xOTIgfCAyIHwgNSB8
IC02NiB8IDI1NSB8IDExIHwgMCB8IDggfCAxIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsg
aXZlYzMoMCwgMCwgLTEyKSB8IGl2ZWMzKDEsIDIsIC0xOTIpIHwgaXZlYzMoMCwgMSwgMikgfCBp
dmVjMygxLCAwLCA1KSB8IGl2ZWMzKDAsIC04LCAtNjYpIHwgaXZlYzMoMSwgMywgMjU1KSB8IGl2
ZWMzKDAsIC0yMCwgMTEpIHwgaXZlYzMoMSwgMSwgMCkgfCBpdmVjMygwLCAwLCA4KSB8IGl2ZWMz
KDEsIDM2LCAxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCwg
aW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29s
X2Zsb2F0X2ludF90b19idmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBb
IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1
ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAwLjAgfCAyLjAgfCAx
LjAgfCAtMC41IHwgLTguMjUgfCAzLjUgfCAtMjAuMTI1IHwgMS4wIHwgMC4wIHwgMzYuODEyNSBd
OworCQkJaW5wdXQgaW50IGluMiA9IFsgLTEyIHwgLTE5MiB8IDIgfCA1IHwgLTY2IHwgMjU1IHwg
MTEgfCAwIHwgOCB8IDEgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUp
IHwgYnZlYzModHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gYnZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlYzJfYm9vbF90b192ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMy
IGluMCA9IFsgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKDEuMCwgMS4yNSkg
fCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMzIuMCwgNjQuMCkg
XTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCB0
cnVlIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjApIHwgdmVjMygxLjAsIDEuMjUsIDEuMCkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAwLjAp
IHwgdmVjMygwLjAsIDAuNSwgMS4wKSB8IHZlYzMoLTMyLjAsIDY0LjAsIDEuMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9ib29sX3RvX2l2ZWMzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
fCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwg
dmVjMigtMzIuMCwgNjQuMCkgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCB0cnVlIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMo
MCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAwKSB8IGl2ZWMzKDAsIDAs
IDEpIHwgaXZlYzMoLTMyLCA2NCwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZlYzJfYm9vbF90b19idmVjMworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAg
PSBbIHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTMyLjAsIDY0LjApIF07CisJ
CQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBd
OworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX2Zsb2F0X3RvX3ZlYzMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwg
MzYuODEyNSB8IDAuMCB8IC0yMC4xMjUgfCAxLjAgfCAtMC41IHwgLTguMjUgfCAzLjUgXTsKKwkJ
CW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMS4wLCAwLjAsIDIuMCkgfCB2ZWMzKDAuMCwgMC4w
LCAzNi44MTI1KSB8IHZlYzMoMS4wLCAwLjAsIDAuMCkgfCB2ZWMzKDAuMCwgMS4wLCAtMjAuMTI1
KSB8IHZlYzMoMC4wLCAwLjAsIDEuMCkgfCB2ZWMzKDAuMCwgMS4wLCAtMC41KSB8IHZlYzMoMC4w
LCAwLjAsIC04LjI1KSB8IHZlYzMoMS4wLCAxLjAsIDMuNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSB2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYnZlYzJfZmxvYXRfdG9faXZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwgMzYuODEyNSB8
IDAuMCB8IC0yMC4xMjUgfCAxLjAgfCAtMC41IHwgLTguMjUgfCAzLjUgXTsKKwkJCW91dHB1dCBp
dmVjMyBvdXQwID0gWyBpdmVjMygxLCAwLCAyKSB8IGl2ZWMzKDAsIDAsIDM2KSB8IGl2ZWMzKDEs
IDAsIDApIHwgaXZlYzMoMCwgMSwgLTIwKSB8IGl2ZWMzKDAsIDAsIDEpIHwgaXZlYzMoMCwgMSwg
MCkgfCBpdmVjMygwLCAwLCAtOCkgfCBpdmVjMygxLCAxLCAzKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzJfZmxvYXRfdG9fYnZlYzMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwgMzYuODEy
NSB8IDAuMCB8IC0yMC4xMjUgfCAxLjAgfCAtMC41IHwgLTguMjUgfCAzLjUgXTsKKwkJCW91dHB1
dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjAsIGluMSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX2ludF90b192
ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKGZhbHNlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAwIHwgMjU1
IHwgMSB8IDIgfCA4IHwgMTEgfCAtMTkyIHwgNSB8IC0xMiB8IC02NiBdOworCQkJb3V0cHV0IHZl
YzMgb3V0MCA9IFsgdmVjMygwLjAsIDEuMCwgMC4wKSB8IHZlYzMoMC4wLCAxLjAsIDI1NS4wKSB8
IHZlYzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKDAuMCwgMC4wLCAyLjApIHwgdmVjMygwLjAsIDAu
MCwgOC4wKSB8IHZlYzMoMC4wLCAwLjAsIDExLjApIHwgdmVjMygxLjAsIDEuMCwgLTE5Mi4wKSB8
IHZlYzMoMS4wLCAwLjAsIDUuMCkgfCB2ZWMzKDEuMCwgMC4wLCAtMTIuMCkgfCB2ZWMzKDAuMCwg
MC4wLCAtNjYuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCwg
aW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfaW50
X3RvX2l2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKGZh
bHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVl
LCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAw
IHwgMjU1IHwgMSB8IDIgfCA4IHwgMTEgfCAtMTkyIHwgNSB8IC0xMiB8IC02NiBdOworCQkJb3V0
cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDEsIDApIHwgaXZlYzMoMCwgMSwgMjU1KSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMikgfCBpdmVjMygwLCAwLCA4KSB8IGl2ZWMzKDAs
IDAsIDExKSB8IGl2ZWMzKDEsIDEsIC0xOTIpIHwgaXZlYzMoMSwgMCwgNSkgfCBpdmVjMygxLCAw
LCAtMTIpIHwgaXZlYzMoMCwgMCwgLTY2KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGl2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgYnZlYzJfaW50X3RvX2J2ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBp
bjAgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlpbnB1
dCBpbnQgaW4xID0gWyAwIHwgMjU1IHwgMSB8IDIgfCA4IHwgMTEgfCAtMTkyIHwgNSB8IC0xMiB8
IC02NiBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2
ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Ym9vbF9pdmVjMl90b192ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsg
ZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBdOworCQkJaW5wdXQgaXZlYzIgaW4x
ID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMy
LCA2NCkgfCBpdmVjMigxLCAxKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAs
IDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAwLjAsIC0yLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSB8
IHZlYzMoMS4wLCAtMzIuMCwgNjQuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfaXZlYzJfdG9faXZlYzMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCB0
cnVlIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIp
IHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDEsIDEpIF07CisJCQlvdXRw
dXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAwLCAtMikgfCBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIC0zMiwgNjQpIHwgaXZlYzMoMSwgMSwgMSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfaXZlYzJfdG9fYnZlYzMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUg
fCB0cnVlIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwg
LTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDEsIDEpIF07CisJCQlv
dXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0
cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X3RvX3ZlYzIKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMi4wIHwgMy41IHwgLTguMjUgfCAtMC41IHwgMC4wIHwg
LTIwLjEyNSB8IDM2LjgxMjUgfCAxLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMy41IHwg
LTIwLjEyNSB8IC0wLjUgfCAyLjAgfCAxLjAgfCAwLjAgfCAzNi44MTI1IHwgLTguMjUgXTsKKwkJ
CW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMi4wLCAzLjUpIHwgdmVjMigzLjUsIC0yMC4xMjUp
IHwgdmVjMigtOC4yNSwgLTAuNSkgfCB2ZWMyKC0wLjUsIDIuMCkgfCB2ZWMyKDAuMCwgMS4wKSB8
IHZlYzIoLTIwLjEyNSwgMC4wKSB8IHZlYzIoMzYuODEyNSwgMzYuODEyNSkgfCB2ZWMyKDEuMCwg
LTguMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjAsIGluMSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X3Rv
X2l2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDIuMCB8IDMuNSB8
IC04LjI1IHwgLTAuNSB8IDAuMCB8IC0yMC4xMjUgfCAzNi44MTI1IHwgMS4wIF07CisJCQlpbnB1
dCBmbG9hdCBpbjEgPSBbIDMuNSB8IC0yMC4xMjUgfCAtMC41IHwgMi4wIHwgMS4wIHwgMC4wIHwg
MzYuODEyNSB8IC04LjI1IF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMiwgMykg
fCBpdmVjMigzLCAtMjApIHwgaXZlYzIoLTgsIDApIHwgaXZlYzIoMCwgMikgfCBpdmVjMigwLCAx
KSB8IGl2ZWMyKC0yMCwgMCkgfCBpdmVjMigzNiwgMzYpIHwgaXZlYzIoMSwgLTgpIF07CisJCX0K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9mbG9hdF90b19idmVjMgorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAyLjAgfCAzLjUgfCAtOC4yNSB8IC0wLjUg
fCAwLjAgfCAtMjAuMTI1IHwgMzYuODEyNSB8IDEuMCBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0g
WyAzLjUgfCAtMjAuMTI1IHwgLTAuNSB8IDIuMCB8IDEuMCB8IDAuMCB8IDM2LjgxMjUgfCAtOC4y
NSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMih0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2
ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
aW50X2ludF90b192ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyA4IHwg
MjU1IHwgLTE5MiB8IDIgfCAwIHwgMSB8IC0xMiB8IDExIHwgLTY2IHwgNSBdOworCQkJaW5wdXQg
aW50IGluMSA9IFsgLTY2IHwgMiB8IDI1NSB8IDggfCAtMTIgfCA1IHwgLTE5MiB8IDAgfCAxIHwg
MTEgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoOC4wLCAtNjYuMCkgfCB2ZWMyKDI1
NS4wLCAyLjApIHwgdmVjMigtMTkyLjAsIDI1NS4wKSB8IHZlYzIoMi4wLCA4LjApIHwgdmVjMigw
LjAsIC0xMi4wKSB8IHZlYzIoMS4wLCA1LjApIHwgdmVjMigtMTIuMCwgLTE5Mi4wKSB8IHZlYzIo
MTEuMCwgMC4wKSB8IHZlYzIoLTY2LjAsIDEuMCkgfCB2ZWMyKDUuMCwgMTEuMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2ludF90b19pdmVjMgorCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgOCB8IDI1NSB8IC0xOTIgfCAyIHwgMCB8IDEgfCAtMTIg
fCAxMSB8IC02NiB8IDUgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIC02NiB8IDIgfCAyNTUgfCA4
IHwgLTEyIHwgNSB8IC0xOTIgfCAwIHwgMSB8IDExIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9
IFsgaXZlYzIoOCwgLTY2KSB8IGl2ZWMyKDI1NSwgMikgfCBpdmVjMigtMTkyLCAyNTUpIHwgaXZl
YzIoMiwgOCkgfCBpdmVjMigwLCAtMTIpIHwgaXZlYzIoMSwgNSkgfCBpdmVjMigtMTIsIC0xOTIp
IHwgaXZlYzIoMTEsIDApIHwgaXZlYzIoLTY2LCAxKSB8IGl2ZWMyKDUsIDExKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2ludF90b19idmVjMgorCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgOCB8IDI1NSB8IC0xOTIgfCAyIHwgMCB8IDEgfCAtMTIg
fCAxMSB8IC02NiB8IDUgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIC02NiB8IDIgfCAyNTUgfCA4
IHwgLTEyIHwgNSB8IC0xOTIgfCAwIHwgMSB8IDExIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9
IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJ2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYm9vbF9ib29sX3RvX3ZlYzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJv
b2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVlIHwg
ZmFsc2UgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMS4wLCAxLjApIHwgdmVjMigw
LjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCwgaW4x
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX3Rv
X2l2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNl
IF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgaXZl
YzIgb3V0MCA9IFsgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX3RvX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsg
dHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gYnZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBmbG9hdF9pbnRfdG9fdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
ID0gWyAxLjAgfCAtMC41IHwgLTIwLjEyNSB8IDAuMCB8IDMuNSB8IC04LjI1IHwgMzYuODEyNSB8
IDIuMCB8IDEuMCB8IDAuMCBdOworCQkJaW5wdXQgaW50IGluMSA9IFsgLTE5MiB8IC02NiB8IDI1
NSB8IDEgfCAyIHwgMCB8IC0xMiB8IDUgfCAxMSB8IDggXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAg
PSBbIHZlYzIoMS4wLCAtMTkyLjApIHwgdmVjMigtMC41LCAtNjYuMCkgfCB2ZWMyKC0yMC4xMjUs
IDI1NS4wKSB8IHZlYzIoMC4wLCAxLjApIHwgdmVjMigzLjUsIDIuMCkgfCB2ZWMyKC04LjI1LCAw
LjApIHwgdmVjMigzNi44MTI1LCAtMTIuMCkgfCB2ZWMyKDIuMCwgNS4wKSB8IHZlYzIoMS4wLCAx
MS4wKSB8IHZlYzIoMC4wLCA4LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
dmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGZsb2F0X2ludF90b19pdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0g
WyAxLjAgfCAtMC41IHwgLTIwLjEyNSB8IDAuMCB8IDMuNSB8IC04LjI1IHwgMzYuODEyNSB8IDIu
MCB8IDEuMCB8IDAuMCBdOworCQkJaW5wdXQgaW50IGluMSA9IFsgLTE5MiB8IC02NiB8IDI1NSB8
IDEgfCAyIHwgMCB8IC0xMiB8IDUgfCAxMSB8IDggXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0g
WyBpdmVjMigxLCAtMTkyKSB8IGl2ZWMyKDAsIC02NikgfCBpdmVjMigtMjAsIDI1NSkgfCBpdmVj
MigwLCAxKSB8IGl2ZWMyKDMsIDIpIHwgaXZlYzIoLTgsIDApIHwgaXZlYzIoMzYsIC0xMikgfCBp
dmVjMigyLCA1KSB8IGl2ZWMyKDEsIDExKSB8IGl2ZWMyKDAsIDgpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9pbnRfdG9fYnZlYzIKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGZsb2F0IGluMCA9IFsgMS4wIHwgLTAuNSB8IC0yMC4xMjUgfCAwLjAgfCAzLjUgfCAt
OC4yNSB8IDM2LjgxMjUgfCAyLjAgfCAxLjAgfCAwLjAgXTsKKwkJCWlucHV0IGludCBpbjEgPSBb
IC0xOTIgfCAtNjYgfCAyNTUgfCAxIHwgMiB8IDAgfCAtMTIgfCA1IHwgMTEgfCA4IF07CisJCQlv
dXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwg
dHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Jvb2xfdG9fdmVjMgorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAyLjAgfCAtMjAuMTI1IHwgMC4wIHwgMS4w
IHwgLTguMjUgfCAtMC41IHwgMzYuODEyNSB8IDMuNSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBb
IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1
ZSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigyLjAsIDEuMCkgfCB2ZWMyKC0yMC4x
MjUsIDAuMCkgfCB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoMS4wLCAwLjApIHwgdmVjMigtOC4yNSwg
MS4wKSB8IHZlYzIoLTAuNSwgMS4wKSB8IHZlYzIoMzYuODEyNSwgMC4wKSB8IHZlYzIoMy41LCAx
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjAsIGluMSk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Jvb2xfdG9faXZl
YzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMi4wIHwgLTIwLjEyNSB8
IDAuMCB8IDEuMCB8IC04LjI1IHwgLTAuNSB8IDM2LjgxMjUgfCAzLjUgXTsKKwkJCWlucHV0IGJv
b2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBm
YWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigyLCAxKSB8IGl2
ZWMyKC0yMCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDApIHwgaXZlYzIoLTgsIDEpIHwg
aXZlYzIoMCwgMSkgfCBpdmVjMigzNiwgMCkgfCBpdmVjMigzLCAxKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfYm9vbF90b19idmVjMgorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wID0gWyAyLjAgfCAtMjAuMTI1IHwgMC4wIHwgMS4wIHwgLTguMjUg
fCAtMC41IHwgMzYuODEyNSB8IDMuNSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBbIHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJ
b3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFs
c2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2Jv
b2xfdG9fdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgOCB8IDI1NSB8
IDExIHwgLTY2IHwgMCB8IC0xOTIgfCAtMTIgfCAxIHwgNSB8IDIgXTsKKwkJCWlucHV0IGJvb2wg
aW4xID0gWyB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIo
OC4wLCAxLjApIHwgdmVjMigyNTUuMCwgMC4wKSB8IHZlYzIoMTEuMCwgMS4wKSB8IHZlYzIoLTY2
LjAsIDAuMCkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoLTE5Mi4wLCAwLjApIHwgdmVjMigtMTIu
MCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMig1LjAsIDAuMCkgfCB2ZWMyKDIuMCwgMS4w
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfYm9vbF90b19pdmVjMgor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgOCB8IDI1NSB8IDExIHwgLTY2IHwg
MCB8IC0xOTIgfCAtMTIgfCAxIHwgNSB8IDIgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVl
IHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBm
YWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMig4LCAxKSB8IGl2
ZWMyKDI1NSwgMCkgfCBpdmVjMigxMSwgMSkgfCBpdmVjMigtNjYsIDApIHwgaXZlYzIoMCwgMSkg
fCBpdmVjMigtMTkyLCAwKSB8IGl2ZWMyKC0xMiwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDUs
IDApIHwgaXZlYzIoMiwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVj
MihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlu
dF9ib29sX3RvX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyA4IHwg
MjU1IHwgMTEgfCAtNjYgfCAwIHwgLTE5MiB8IC0xMiB8IDEgfCA1IHwgMiBdOworCQkJaW5wdXQg
Ym9vbCBpbjEgPSBbIHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8
IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBb
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1
ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMy
KHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gYnZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisKK2VuZCAjIHZlY3Rvcl9jb21iaW5lCitncm91cCBtYXRyaXhfY29tYmluZSAiTWF0
cml4IENvbWJpbmUgQ29uc3RydWN0b3JzIgorCisJY2FzZSB2ZWMyX3ZlYzJfdG9fbWF0MgorCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigx
LjAsIDEuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxKSB8IHZlYzIoLTAuNSwgLTIuMjUpIF07CisJCQlpbnB1dCB2ZWMyIGluMSA9IFsgdmVjMigt
MC41LCAtMi4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTMyLjAs
IDY0LjApIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCW91dHB1dCBt
YXQyIG91dDAgPSBbIG1hdDIoMC4wLCAwLjUsIC0wLjUsIC0yLjI1KSB8IG1hdDIoMS4wLCAxLjI1
LCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCBtYXQyKC0zMi4wLCA2NC4wLCAtMzIuMCwgNjQu
MCkgfCBtYXQyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDAuNSkgfCBtYXQyKC0wLjUs
IC0yLjI1LCAxLjAsIDEuMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0
MihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2
ZWMyX2J2ZWMyX3RvX21hdDIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsg
YnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSBdOworCQkJaW5w
dXQgYnZlYzIgaW4xID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IHRydWUpIF07CisJCQlvdXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDEuMCwgMC4wLCAxLjAsIDEu
MCkgfCBtYXQyKDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQyKDAuMCwgMS4wLCAxLjAsIDAuMCkg
fCBtYXQyKDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQyKDEuMCwgMS4wLCAwLjAsIDEuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfZmxvYXRfZmxvYXRfZmxvYXRf
dG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAtMC41
IHwgLTIwLjEyNSB8IDIuMCB8IDM2LjgxMjUgfCAxLjAgfCAzLjUgfCAtOC4yNSBdOworCQkJaW5w
dXQgZmxvYXQgaW4xID0gWyAtOC4yNSB8IDIuMCB8IC0wLjUgfCAtMjAuMTI1IHwgMy41IHwgMS4w
IHwgMzYuODEyNSB8IDAuMCBdOworCQkJaW5wdXQgZmxvYXQgaW4yID0gWyAzNi44MTI1IHwgLTgu
MjUgfCAzLjUgfCAyLjAgfCAtMC41IHwgLTIwLjEyNSB8IDEuMCB8IDAuMCBdOworCQkJaW5wdXQg
ZmxvYXQgaW4zID0gWyAzNi44MTI1IHwgMC4wIHwgMi4wIHwgMy41IHwgLTguMjUgfCAtMC41IHwg
LTIwLjEyNSB8IDEuMCBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigwLjAsIC04LjI1
LCAzNi44MTI1LCAzNi44MTI1KSB8IG1hdDIoLTAuNSwgMi4wLCAtOC4yNSwgMC4wKSB8IG1hdDIo
LTIwLjEyNSwgLTAuNSwgMy41LCAyLjApIHwgbWF0MigyLjAsIC0yMC4xMjUsIDIuMCwgMy41KSB8
IG1hdDIoMzYuODEyNSwgMy41LCAtMC41LCAtOC4yNSkgfCBtYXQyKDEuMCwgMS4wLCAtMjAuMTI1
LCAtMC41KSB8IG1hdDIoMy41LCAzNi44MTI1LCAxLjAsIC0yMC4xMjUpIHwgbWF0MigtOC4yNSwg
MC4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGlu
MCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGludF9pbnRfaW50X2ludF90b19tYXQyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQg
aW4wID0gWyAyIHwgMCB8IC02NiB8IDggfCAxIHwgMjU1IHwgNSB8IC0xMiB8IDExIHwgLTE5MiBd
OworCQkJaW5wdXQgaW50IGluMSA9IFsgLTE5MiB8IDIgfCA1IHwgLTEyIHwgLTY2IHwgMjU1IHwg
OCB8IDEgfCAxMSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDIgfCAxMSB8IC0xOTIgfCAy
NTUgfCAxIHwgNSB8IDAgfCAtMTIgfCA4IHwgLTY2IF07CisJCQlpbnB1dCBpbnQgaW4zID0gWyAy
NTUgfCAwIHwgMTEgfCAtNjYgfCAyIHwgOCB8IC0xOTIgfCAxIHwgLTEyIHwgNSBdOworCQkJb3V0
cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigyLjAsIC0xOTIuMCwgMi4wLCAyNTUuMCkgfCBtYXQyKDAu
MCwgMi4wLCAxMS4wLCAwLjApIHwgbWF0MigtNjYuMCwgNS4wLCAtMTkyLjAsIDExLjApIHwgbWF0
Mig4LjAsIC0xMi4wLCAyNTUuMCwgLTY2LjApIHwgbWF0MigxLjAsIC02Ni4wLCAxLjAsIDIuMCkg
fCBtYXQyKDI1NS4wLCAyNTUuMCwgNS4wLCA4LjApIHwgbWF0Mig1LjAsIDguMCwgMC4wLCAtMTky
LjApIHwgbWF0MigtMTIuMCwgMS4wLCAtMTIuMCwgMS4wKSB8IG1hdDIoMTEuMCwgMTEuMCwgOC4w
LCAtMTIuMCkgfCBtYXQyKC0xOTIuMCwgMC4wLCAtNjYuMCwgNS4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfYm9vbF90b19tYXQy
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgZmFsc2UgfCB0cnVlIF07CisJ
CQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMiA9
IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsgZmFsc2UgfCB0cnVlIF07
CisJCQlvdXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQy
KDEuMCwgMS4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBt
YXQyKGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGJvb2xfZmxvYXRfaW50X2Jvb2xfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYm9vbCBpbjAgPSBbIGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwg
dHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSBdOworCQkJaW5wdXQgZmxvYXQgaW4x
ID0gWyAtMC41IHwgLTIwLjEyNSB8IDMuNSB8IDIuMCB8IDEuMCB8IDAuMCB8IDAuMCB8IDEuMCB8
IDM2LjgxMjUgfCAtOC4yNSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgLTY2IHwgLTE5MiB8IDUg
fCAyNTUgfCAwIHwgLTEyIHwgMTEgfCAxIHwgMiB8IDggXTsKKwkJCWlucHV0IGJvb2wgaW4zID0g
WyB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZh
bHNlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoMC4wLCAt
MC41LCAtNjYuMCwgMS4wKSB8IG1hdDIoMS4wLCAtMjAuMTI1LCAtMTkyLjAsIDAuMCkgfCBtYXQy
KDEuMCwgMy41LCA1LjAsIDEuMCkgfCBtYXQyKDAuMCwgMi4wLCAyNTUuMCwgMC4wKSB8IG1hdDIo
MC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDIoMS4wLCAwLjAsIC0xMi4wLCAwLjApIHwgbWF0Migx
LjAsIDAuMCwgMTEuMCwgMS4wKSB8IG1hdDIoMS4wLCAxLjAsIDEuMCwgMC4wKSB8IG1hdDIoMC4w
LCAzNi44MTI1LCAyLjAsIDEuMCkgfCBtYXQyKDAuMCwgLTguMjUsIDguMCwgMS4wKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9pdmVjMl90b19tYXQy
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2
ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSkgfCB2ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCWlucHV0IGl2ZWMyIGluMSA9IFsg
aXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMSwgMSkgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoMC4wLCAwLjUs
IC0zMi4wLCA2NC4wKSB8IG1hdDIoLTMyLjAsIDY0LjAsIDAuMCwgMC4wKSB8IG1hdDIoLTAuNSwg
LTIuMjUsIDAuMCwgLTIuMCkgfCBtYXQyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDAu
MCkgfCBtYXQyKDEuMCwgMS4yNSwgMS4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gbWF0MihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlYzJfYnZlYzJfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
MiBpbjAgPSBbIHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoMC4wLCAwLjUp
IF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoLTMyLjAs
IDY0LjAsIDAuMCwgMS4wKSB8IG1hdDIoLTAuNSwgLTIuMjUsIDAuMCwgMC4wKSB8IG1hdDIoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDEuMCwgMC4wKSB8IG1hdDIoMS4wLCAxLjI1LCAwLjAsIDAu
MCkgfCBtYXQyKDAuMCwgMC41LCAxLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYnZlYzNfZmxvYXRfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZl
YzMgaW4wID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTIwLjEyNSB8IC0wLjUgfCAzLjUgfCAt
OC4yNSB8IDAuMCB8IDEuMCB8IDIuMCB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAg
PSBbIG1hdDIoMC4wLCAxLjAsIDAuMCwgLTIwLjEyNSkgfCBtYXQyKDEuMCwgMS4wLCAxLjAsIC0w
LjUpIHwgbWF0MigwLjAsIDAuMCwgMC4wLCAzLjUpIHwgbWF0MigxLjAsIDAuMCwgMC4wLCAtOC4y
NSkgfCBtYXQyKDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyKDEuMCwgMC4wLCAwLjAsIDEuMCkg
fCBtYXQyKDAuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQyKDAuMCwgMC4wLCAwLjAsIDM2LjgxMjUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MihpbjAsIGluMSk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfZmxvYXRfdG9fbWF0Mgor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUp
IHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEs
IDAuMDUyNjMxNTc4OTQ3NCkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAs
IDAuNSwgMC43NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSBdOworCQkJaW5wdXQgZmxvYXQgaW4x
ID0gWyAtOC4yNSB8IDM2LjgxMjUgfCAtMC41IHwgLTIwLjEyNSB8IDEuMCB8IDIuMCB8IDAuMCB8
IDMuNSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigwLjAsIDAuNSwgMC43NSwgLTgu
MjUpIHwgbWF0MigxLjAsIDEuMjUsIDEuMTI1LCAzNi44MTI1KSB8IG1hdDIoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNSkgfCBtYXQyKC0wLjUsIC0yLjI1LCAt
NC44NzUsIC0yMC4xMjUpIHwgbWF0MigwLjAsIDAuNSwgMC43NSwgMS4wKSB8IG1hdDIoLTMyLjAs
IDY0LjAsIC01MS4wLCAyLjApIHwgbWF0MigtMC41LCAtMi4yNSwgLTQuODc1LCAwLjApIHwgbWF0
MigxLjAsIDEuMjUsIDEuMTI1LCAzLjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gbWF0MihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGludF9pdmVjMl9pbnRfdG9fbWF0MgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgLTY2IHwgMjU1IHwgOCB8IDAgfCA1IHwgLTEyIHwgMSB8IC0xOTIgfCAyIHwgMTEgXTsK
KwkJCWlucHV0IGl2ZWMyIGluMSA9IFsgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVj
MigtMzIsIDY0KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2
ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSBd
OworCQkJaW5wdXQgaW50IGluMiA9IFsgMCB8IC0xMiB8IDggfCAtNjYgfCAxMSB8IDUgfCAyNTUg
fCAyIHwgMSB8IC0xOTIgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoLTY2LjAsIDAu
MCwgLTIuMCwgMC4wKSB8IG1hdDIoMjU1LjAsIDAuMCwgMC4wLCAtMTIuMCkgfCBtYXQyKDguMCwg
LTMyLjAsIDY0LjAsIDguMCkgfCBtYXQyKDAuMCwgMS4wLCAxLjAsIC02Ni4wKSB8IG1hdDIoNS4w
LCAwLjAsIDAuMCwgMTEuMCkgfCBtYXQyKC0xMi4wLCAwLjAsIDAuMCwgNS4wKSB8IG1hdDIoMS4w
LCAtMzIuMCwgNjQuMCwgMjU1LjApIHwgbWF0MigtMTkyLjAsIDAuMCwgLTIuMCwgMi4wKSB8IG1h
dDIoMi4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoMTEuMCwgMS4wLCAxLjAsIC0xOTIuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xLCBpbjIpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2l2ZWMyX3Rv
X21hdDIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgdHJ1ZSB8
IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCWlucHV0
IGZsb2F0IGluMSA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgLTAuNSB8IDMuNSB8IC0yMC4xMjUgfCAz
Ni44MTI1IHwgLTguMjUgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMSwgMSkgfCBp
dmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkg
fCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQg
bWF0MiBvdXQwID0gWyBtYXQyKDEuMCwgMC4wLCAxLjAsIDEuMCkgfCBtYXQyKDEuMCwgMS4wLCAx
LjAsIDEuMCkgfCBtYXQyKDEuMCwgMi4wLCAwLjAsIC0yLjApIHwgbWF0MigwLjAsIC0wLjUsIDAu
MCwgMC4wKSB8IG1hdDIoMS4wLCAzLjUsIC0zMi4wLCA2NC4wKSB8IG1hdDIoMC4wLCAtMjAuMTI1
LCAwLjAsIC0yLjApIHwgbWF0MigwLjAsIDM2LjgxMjUsIDAuMCwgMC4wKSB8IG1hdDIoMC4wLCAt
OC4yNSwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mihp
bjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dmVjM192ZWMzX3ZlYzNfdG9fbWF0MworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAg
PSBbIHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC41
LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIF07CisJCQlpbnB1dCB2ZWMz
IGluMSA9IFsgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMo
LTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgXTsKKwkJCWlucHV0
IHZlYzMgaW4yID0gWyB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwg
MC43NSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIHwg
dmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSBdOworCQkJ
b3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygxLjAsIDEuMjUsIDEuMTI1LCAtMC41LCAtMi4yNSwg
LTQuODc1LCAtMC41LCAtMi4yNSwgLTQuODc1KSB8IG1hdDMoLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4
OTQ3NCwgMC4wLCAwLjUsIDAuNzUpIHwgbWF0MygtMzIuMCwgNjQuMCwgLTUxLjAsIDAuMCwgMC41
LCAwLjc1LCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IG1hdDMo
LTAuNSwgLTIuMjUsIC00Ljg3NSwgLTMyLjAsIDY0LjAsIC01MS4wLCAtMzIuMCwgNjQuMCwgLTUx
LjApIHwgbWF0MygwLjAsIDAuNSwgMC43NSwgMS4wLCAxLjI1LCAxLjEyNSwgMS4wLCAxLjI1LCAx
LjEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzKGluMCwgaW4xLCBp
bjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM19pdmVj
M19pdmVjM190b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2
ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlpbnB1dCBpdmVjMyBpbjEgPSBb
IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZl
YzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlpbnB1dCBpdmVjMyBpbjIg
PSBbIGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAtMiwgLTQpIF07CisJCQlvdXRwdXQgbWF0MyBv
dXQwID0gWyBtYXQzKDAuMCwgLTIuMCwgLTQuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEu
MCkgfCBtYXQzKDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0MygtMzIuMCwgNjQuMCwgLTUxLjAsIDAuMCwgLTIuMCwgLTQuMCwgMC4wLCAwLjAsIDAuMCkg
fCBtYXQzKDAuMCwgMC4wLCAwLjAsIC0zMi4wLCA2NC4wLCAtNTEuMCwgLTMyLjAsIDY0LjAsIC01
MS4wKSB8IG1hdDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMi4wLCAtNC4w
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wLCBpbjEsIGluMik7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfaXZlYzJfZmxv
YXRfZmxvYXRfaW50X2Jvb2xfYm9vbF90b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWMyIGluMCA9IFsgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKDEuMCwgMS4y
NSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC41LCAtMi4y
NSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwg
dmVjMigxLjAsIDEuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSBdOwor
CQkJaW5wdXQgaXZlYzIgaW4xID0gWyBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIF07
CisJCQlpbnB1dCBmbG9hdCBpbjIgPSBbIC0yMC4xMjUgfCAtOC4yNSB8IDMuNSB8IDEuMCB8IDEu
MCB8IC0wLjUgfCAyLjAgfCAwLjAgfCAzNi44MTI1IHwgMC4wIF07CisJCQlpbnB1dCBmbG9hdCBp
bjMgPSBbIDAuMCB8IC0wLjUgfCAxLjAgfCAtMjAuMTI1IHwgMzYuODEyNSB8IDAuMCB8IC04LjI1
IHwgMi4wIHwgMy41IHwgMS4wIF07CisJCQlpbnB1dCBpbnQgaW40ID0gWyAyIHwgMTEgfCAxIHwg
MCB8IDggfCA1IHwgLTY2IHwgMjU1IHwgLTE5MiB8IC0xMiBdOworCQkJaW5wdXQgYm9vbCBpbjUg
PSBbIGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwg
dHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjYgPSBbIGZhbHNlIHwgdHJ1
ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBm
YWxzZSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgLTMyLjAsIDY0LjAsIC0yMC4xMjUsIDAuMCwgMi4wLCAwLjAsIDAuMCkgfCBtYXQzKDEu
MCwgMS4yNSwgMC4wLCAtMi4wLCAtOC4yNSwgLTAuNSwgMTEuMCwgMS4wLCAxLjApIHwgbWF0Mygw
LjAsIDAuNSwgMS4wLCAxLjAsIDMuNSwgMS4wLCAxLjAsIDEuMCwgMC4wKSB8IG1hdDMoLTMyLjAs
IDY0LjAsIDAuMCwgMC4wLCAxLjAsIC0yMC4xMjUsIDAuMCwgMC4wLCAwLjApIHwgbWF0MygtMC41
LCAtMi4yNSwgMC4wLCAwLjAsIDEuMCwgMzYuODEyNSwgOC4wLCAwLjAsIDEuMCkgfCBtYXQzKC0z
Mi4wLCA2NC4wLCAwLjAsIC0yLjAsIC0wLjUsIDAuMCwgNS4wLCAxLjAsIDEuMCkgfCBtYXQzKC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMzIuMCwgNjQuMCwgMi4wLCAtOC4yNSwgLTY2LjAsIDAu
MCwgMS4wKSB8IG1hdDMoMS4wLCAxLjI1LCAwLjAsIDAuMCwgMC4wLCAyLjAsIDI1NS4wLCAxLjAs
IDEuMCkgfCBtYXQzKDAuMCwgMC41LCAxLjAsIDEuMCwgMzYuODEyNSwgMy41LCAtMTkyLjAsIDAu
MCwgMC4wKSB8IG1hdDMoLTAuNSwgLTIuMjUsIDAuMCwgMC4wLCAwLjAsIDEuMCwgLTEyLjAsIDEu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wLCBpbjEs
IGluMiwgaW4zLCBpbjQsIGluNSwgaW42KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYm9vbF9mbG9hdF9pbnRfdmVjMl9ib29sX2J2ZWMyX2Zsb2F0X3RvX21hdDMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IGZhbHNlIHwgZmFs
c2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgXTsK
KwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMy41IHwgLTIwLjEyNSB8IDM2LjgxMjUgfCAwLjAgfCAy
LjAgfCAtOC4yNSB8IDEuMCB8IC0wLjUgfCAxLjAgfCAwLjAgXTsKKwkJCWlucHV0IGludCBpbjIg
PSBbIDI1NSB8IC0xOTIgfCAxMSB8IDAgfCA4IHwgNSB8IC02NiB8IDIgfCAtMTIgfCAxIF07CisJ
CQlpbnB1dCB2ZWMyIGluMyA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZl
YzIoLTAuNSwgLTIuMjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2
ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigx
LjAsIDEuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0zMi4wLCA2
NC4wKSBdOworCQkJaW5wdXQgYm9vbCBpbjQgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxz
ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5w
dXQgYnZlYzIgaW41ID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwg
dHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIo
dHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSBd
OworCQkJaW5wdXQgZmxvYXQgaW42ID0gWyAwLjAgfCAzNi44MTI1IHwgMy41IHwgLTAuNSB8IC04
LjI1IHwgMS4wIHwgMC4wIHwgMS4wIHwgLTIwLjEyNSB8IDIuMCBdOworCQkJb3V0cHV0IG1hdDMg
b3V0MCA9IFsgbWF0MygwLjAsIDMuNSwgMjU1LjAsIDAuMCwgMC41LCAxLjAsIDAuMCwgMC4wLCAw
LjApIHwgbWF0MygwLjAsIC0yMC4xMjUsIC0xOTIuMCwgMC4wLCAwLjUsIDEuMCwgMC4wLCAwLjAs
IDM2LjgxMjUpIHwgbWF0MygwLjAsIDM2LjgxMjUsIDExLjAsIC0wLjUsIC0yLjI1LCAwLjAsIDEu
MCwgMS4wLCAzLjUpIHwgbWF0MygxLjAsIDAuMCwgMC4wLCAxLjAsIDEuMjUsIDAuMCwgMC4wLCAx
LjAsIC0wLjUpIHwgbWF0MygwLjAsIDIuMCwgOC4wLCAtMC41LCAtMi4yNSwgMC4wLCAxLjAsIDEu
MCwgLTguMjUpIHwgbWF0MygwLjAsIC04LjI1LCA1LjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MygxLjAsIDEuMCwgLTY2LjAsIC0zMi4wLCA2NC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0MygxLjAsIC0wLjUsIDIuMCwgMS4wLCAxLjI1LCAx
LjAsIDEuMCwgMC4wLCAxLjApIHwgbWF0MygxLjAsIDEuMCwgLTEyLjAsIC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1KSB8IG1hdDMoMS4wLCAwLjAsIDEuMCwg
LTMyLjAsIDY0LjAsIDEuMCwgMC4wLCAxLjAsIDIuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBtYXQzKGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBpbjUsIGluNik7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYnZlYzJfaW50X3ZlYzRf
Ym9vbF90b19tYXQzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8
IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1
ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIo
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwg
YnZlYzIoZmFsc2UsIHRydWUpIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAyIHwgLTY2IHwgMSB8
IDggfCAtMTIgfCAwIHwgNSB8IDExIHwgMjU1IHwgLTE5MiBdOworCQkJaW5wdXQgdmVjNCBpbjMg
PSBbIHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44
NzUsIDkuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQs
IDAuMjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAt
NTEuMCwgMjQuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDAuMCwgMC41
LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0w
LjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgXTsKKwkJCWlucHV0IGJvb2wgaW40ID0gWyBmYWxzZSB8
IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMS4wLCAxLjAsIDEuMCwg
Mi4wLCAxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAwLjApIHwgbWF0MygwLjAsIDAuMCwgMC4wLCAt
NjYuMCwgLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wLCAwLjApIHwgbWF0MygwLjAsIDAuMCwgMS4w
LCAxLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDEu
MCkgfCBtYXQzKDAuMCwgMC4wLCAwLjAsIDguMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSwgMS4w
KSB8IG1hdDMoMC4wLCAwLjAsIDAuMCwgLTEyLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAw
LjA1MjYzMTU3ODk0NzQsIDAuMjUsIDEuMCkgfCBtYXQzKDEuMCwgMS4wLCAwLjAsIDAuMCwgLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjApIHwgbWF0MygxLjAsIDAuMCwgMC4wLCA1LjAsIDAu
MCwgMC41LCAwLjc1LCAwLjgyNSwgMS4wKSB8IG1hdDMoMS4wLCAxLjAsIDEuMCwgMTEuMCwgMC4w
LCAwLjUsIDAuNzUsIDAuODI1LCAwLjApIHwgbWF0MygxLjAsIDEuMCwgMC4wLCAyNTUuMCwgLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjApIHwgbWF0MygwLjAsIDAuMCwgMS4wLCAtMTkyLjAs
IC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IG1hdDMoaW4wLCBpbjEsIGluMiwgaW4zLCBpbjQpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9idmVjNF9pdmVjMl9ib29sX2Jvb2xfdG9f
bWF0MworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAtMC41IHwgMzYuODEy
NSB8IDEuMCB8IDAuMCB8IC0yMC4xMjUgfCAyLjAgfCAtOC4yNSB8IDMuNSBdOworCQkJaW5wdXQg
YnZlYzQgaW4xID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0
cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxz
ZSkgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSB8
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkg
fCBpdmVjMigxLCAxKSB8IGl2ZWMyKC0zMiwgNjQpIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsg
dHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVl
IF07CisJCQlpbnB1dCBib29sIGluNCA9IFsgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwg
ZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBt
YXQzKC0wLjUsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wKSB8IG1hdDMo
MzYuODEyNSwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Mygx
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDMoMC4wLCAw
LjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwgMC4wLCAxLjApIHwgbWF0MygtMjAuMTI1LCAx
LjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgLTIuMCwgMS4wLCAwLjApIHwgbWF0MygyLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDMoLTguMjUsIDEuMCwgMC4w
LCAwLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMS4wKSB8IG1hdDMoMy41LCAwLjAsIDEuMCwgMC4w
LCAwLjAsIC0zMi4wLCA2NC4wLCAxLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQzKGluMCwgaW4xLCBpbjIsIGluMywgaW40KTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF92ZWM0X3ZlYzRfdmVjNF90b19tYXQ0CisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAs
IDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAw
LjI1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgXTsKKwkJCWlucHV0IHZl
YzQgaW4xID0gWyB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMzIuMCwgNjQu
MCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjI1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoMC4w
LCAwLjUsIDAuNzUsIDAuODI1KSBdOworCQkJaW5wdXQgdmVjNCBpbjIgPSBbIHZlYzQoLTMyLjAs
IDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KDEu
MCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIF07
CisJCQlpbnB1dCB2ZWM0IGluMyA9IFsgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwg
dmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAx
Ljc1KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4y
NSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAg
PSBbIG1hdDQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAxLjAsIDEuMjUsIDEuMTI1LCAxLjc1
LCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCBt
YXQ0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCwgMC4wLCAwLjUsIDAuNzUsIDAuODI1LCAtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgbWF0NCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgbWF0
NCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUpIHwgbWF0NCgwLjAsIDAuNSwgMC43NSwgMC44MjUsIDAuMCwgMC41LCAwLjc1LCAw
LjgyNSwgLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wLCAwLjAsIDAuNSwgMC43NSwgMC44MjUpIF07
CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjAsIGluMSwgaW4yLCBpbjMp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjNF9pdmVjNF9p
dmVjNF9pdmVjNF90b19tYXQ0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBb
IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgxLCAx
LCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJ
aW5wdXQgaXZlYzQgaW4xID0gWyBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoMSwgMSwgMSwg
MSkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCA2
NCwgLTUxLCAyNCkgXTsKKwkJCWlucHV0IGl2ZWM0IGluMiA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlpbnB1dCBpdmVjNCBpbjMgPSBb
IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQs
IDkpIHwgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSBdOworCQkJ
b3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwg
LTQuMCwgOS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0
KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAwLjAsIC0yLjAs
IC00LjAsIDkuMCwgMS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDQoMS4wLCAxLjAsIDEuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAtMi4wLCAtNC4w
LCA5LjApIHwgbWF0NCgwLjAsIC0yLjAsIC00LjAsIDkuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAt
MzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0KDAuMCwg
MC4wLCAwLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQ0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGJ2ZWM0X2J2ZWM0X2J2ZWM0X2J2ZWM0X3RvX21hdDQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBm
YWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSBdOworCQkJaW5wdXQgYnZlYzQgaW4xID0g
WyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlpbnB1dCBidmVjNCBpbjIgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGJ2ZWM0IGluMyA9IFsgYnZl
YzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSBdOwor
CQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4w
LCAxLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0
NCgxLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwg
MS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCgxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwg
MS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDEuMCwgMS4wLCAxLjApIHwg
bWF0NCgwLjAsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NCgwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjAsIGluMSwgaW4yLCBp
bjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9pdmVj
M19idmVjM192ZWM0X2l2ZWMyX2Zsb2F0X3ZlYzJfdG9fbWF0NAorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wID0gWyAtMC41IHwgLTIwLjEyNSB8IDEuMCB8IDIuMCB8IDMuNSB8IDM2
LjgxMjUgfCAtOC4yNSB8IDAuMCBdOworCQkJaW5wdXQgaXZlYzMgaW4xID0gWyBpdmVjMygxLCAx
LCAxKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygtMzIsIDY0LCAt
NTEpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygwLCAtMiwgLTQpIF07CisJCQlpbnB1dCBidmVjMyBpbjIgPSBbIGJ2ZWMzKHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSBdOworCQkJaW5wdXQgdmVj
NCBpbjMgPSBbIHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1
LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDAuMCwg
MC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSBd
OworCQkJaW5wdXQgaXZlYzIgaW40ID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgXTsKKwkJCWlucHV0IGZsb2F0IGluNSA9IFsgMy41
IHwgLTIwLjEyNSB8IC04LjI1IHwgMC4wIHwgMzYuODEyNSB8IC0wLjUgfCAxLjAgfCAyLjAgXTsK
KwkJCWlucHV0IHZlYzIgaW42ID0gWyB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1
KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2
ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigt
MC41LCAtMi4yNSkgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAgPSBbIG1hdDQoLTAuNSwgMS4wLCAx
LjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSwgMC4wLCAwLjAs
IDMuNSwgLTMyLjAsIDY0LjApIHwgbWF0NCgtMjAuMTI1LCAxLjAsIDEuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIDAuMCwgLTIuMCwgLTIwLjEyNSwgMS4w
LCAxLjI1KSB8IG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
NSwgMC43NSwgMC44MjUsIDAuMCwgMC4wLCAtOC4yNSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEp
IHwgbWF0NCgyLjAsIC0zMi4wLCA2NC4wLCAtNTEuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjUs
IDAuNzUsIDAuODI1LCAtMzIuMCwgNjQuMCwgMC4wLCAtMC41LCAtMi4yNSkgfCBtYXQ0KDMuNSwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAx
LjAsIDEuMCwgMzYuODEyNSwgMS4wLCAxLjI1KSB8IG1hdDQoMzYuODEyNSwgMC4wLCAtMi4wLCAt
NC4wLCAxLjAsIDAuMCwgMC4wLCAxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAwLjAsIC0yLjAsIC0w
LjUsIDAuMCwgMC41KSB8IG1hdDQoLTguMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDAuMCwgMC4w
LCAxLjAsIDAuMCwgMC41KSB8IG1hdDQoMC4wLCAwLjAsIC0yLjAsIC00LjAsIDAuMCwgMS4wLCAw
LjAsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgMS4wLCAxLjAsIDIuMCwgLTAuNSwgLTIuMjUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjAsIGluMSwgaW4yLCBp
bjMsIGluNCwgaW41LCBpbjYpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisK
K2VuZCAjIG1hdHJpeF9jb21iaW5lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9kZWNsYXJhdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZGF0YS9nbGVzMi9zaGFkZXJzL2RlY2xhcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4Zjk0
MzVmYjU3MWYyYmU2NDI0NmY5ZDNiN2E0MzNhODc2MzU2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xl
czIvc2hhZGVycy9kZWNsYXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdt
b2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2RlY2xhcmF0aW9ucyc7CitkZXNjcmlwdGlvbigiU2hh
ZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJp
bmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScp
OworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicp
CisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9
Cit9CisKKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdl
dEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
Mi9zaGFkZXJzL2RlY2xhcmF0aW9ucy50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvZGVjbGFyYXRpb25zLnRl
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGRmYjBhNGE3ZDZmNzk0MzJkZmYyMGQxMmY2MzExYzZhNzZlN2NkOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2RlY2xhcmF0aW9ucy50ZXN0CkBAIC0wLDAg
KzEsMTQwIEBACitncm91cCBpbnZhbGlkX2RlY2xhcmF0aW9ucyAiSW52YWxpZCBkZWNsYXJhdGlv
bnMiCisJY2FzZSBhdHRyaWJ1dGVfaW5fdmVydGV4X21haW4KKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2ZXJ0ZXggIiIKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJYXR0cmlidXRlIG1lZGl1
bXAgZmxvYXQgdmFsOworCQkJCWdsX1Bvc2l0aW9uID0gdmVjNCgxLjApOworCQkJfQorCQkiIgor
CQlmcmFnbWVudCAiIgorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGF0dHJpYnV0ZV9pbl9mcmFnbWVu
dAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnRleCAiIgorCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQlnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwkJZnJhZ21lbnQg
IiIKKwkJCWF0dHJpYnV0ZSBtZWRpdW1wIGZsb2F0IHZhbDsKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB1bmlmb3JtX2luX3ZlcnRleF9tYWluCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmVydGV4
ICIiCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCXVuaWZvcm0gbWVkaXVtcCBmbG9hdCB2YWw7
CisJCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIi
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9pbl9mcmFnbWVudF9tYWluCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmVydGV4ICIiCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWds
X1Bvc2l0aW9uID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCQlmcmFnbWVudCAiIgorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQl1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJCWdsX0Zy
YWdDb2xvciA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmFyeWluZ19p
bl92ZXJ0ZXhfbWFpbgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnRleCAiIgorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJCWdsX1Bv
c2l0aW9uID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCQlmcmFnbWVudCAiIgorCQkJdmFyeWlu
ZyBtZWRpdW1wIGZsb2F0IHZhbDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2YXJ5aW5nX2luX2Zy
YWdtZW50X21haW4KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2ZXJ0ZXggIiIKKwkJCXZhcnlp
bmcgbWVkaXVtcCBmbG9hdCB2YWw7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWdsX1Bvc2l0
aW9uID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCQlmcmFnbWVudCAiIgorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJCWdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YXJpYW50X2F0dHJp
YnV0ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnRleCAiIgorCQkJaW52YXJpYW50IGF0
dHJpYnV0ZSBtZWRpdW1wIGZsb2F0IHZhbDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJZ2xf
UG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIiCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW52YXJpYW50X3VuaWZvcm0KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2ZXJ0ZXggIiIKKwkJCWludmFyaWFudCB1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJ
IiIKKwkJZnJhZ21lbnQgIiIKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBpbnZhbGlkX2RlY2xhcmF0
aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvZnJhZ2RhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJz
L2ZyYWdkYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU2ZjdlODNhYzRjMzJmMmE4ODExOTNjZTVmYzQ0
NDQ4MGZkYmFlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2ZyYWdkYXRhLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFy
eScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit0ZXN0TmFtZSA9ICdmcmFn
ZGF0YSc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CisK
K3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93
LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50
KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29t
cG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVy
TGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2ZyYWdkYXRhLnRlc3QgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hh
ZGVycy9mcmFnZGF0YS50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YmE0ZjI5NTcwODUwYWY2N2M1NGM0MzVl
NmZjMTkwMWM3NjYwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9mcmFnZGF0YS50
ZXN0CkBAIC0wLDAgKzEsNzYgQEAKKworY2FzZSBpbnZhbGlkX2Fzc2lnbl90b18xCisJdmVyc2lv
biAxMDAgZXMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmVydGV4ICIiCisJCXZvaWQgbWFpbiAo
dm9pZCkKKwkJeworCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorCWZyYWdt
ZW50ICIiCisJCXZvaWQgbWFpbiAodm9pZCkKKwkJeworCQkJZ2xfRnJhZ0RhdGFbMV0gPSB2ZWM0
KDEuMCk7CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ugd3JpdGVfZnJhZ2NvbG9yX2FuZF9mcmFnZGF0
YV9zaW1wbGUKKwl2ZXJzaW9uIDEwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2ZXJ0ZXgg
IiIKKwkJdm9pZCBtYWluICh2b2lkKQorCQl7CisJCQlnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wKTsK
KwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkJdm9pZCBtYWluICh2b2lkKQorCQl7CisJCQlnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCQlnbF9GcmFnRGF0YVswXSA9IHZlYzQoMS4wKTsKKwkJ
fQorCSIiCitlbmQKKworY2FzZSB3cml0ZV9mcmFnY29sb3JfYW5kX2ZyYWdkYXRhX3N0YXRpY19p
ZgorCXZlcnNpb24gMTAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRleCAiIgorCQl2
b2lkIG1haW4gKHZvaWQpCisJCXsKKwkJCWdsX1Bvc2l0aW9uID0gdmVjNCgxLjApOworCQl9CisJ
IiIKKwlmcmFnbWVudCAiIgorCQl2b2lkIG1haW4gKHZvaWQpCisJCXsKKwkJCWlmIChmYWxzZSkK
KwkJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCQllbHNlCisJCQkJZ2xfRnJhZ0RhdGFb
MF0gPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ugd3JpdGVfZnJhZ2NvbG9yX2Fu
ZF9mcmFnZGF0YV91bnVzZWRfZnVuYworCXZlcnNpb24gMTAwIGVzCisJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCXZlcnRleCAiIgorCQl2b2lkIG1haW4gKHZvaWQpCisJCXsKKwkJCWdsX1Bvc2l0aW9u
ID0gdmVjNCgxLjApOworCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQl2b2lkIHVudXNlZCAodm9p
ZCkKKwkJeworCQkJZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEuMCk7CisJCX0KKwkJdm9pZCBtYWlu
ICh2b2lkKQorCQl7CisJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorZW5k
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9mdW5jdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2Z1
bmN0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxOTdkZjg5YTAzN2VmMGQxODBkMjk5YmFlZTRjOTcw
NzVlMzlmYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9mdW5jdGlvbnMuaHRtbApA
QCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2Z1bmN0
aW9ucyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CisK
K3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93
LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50
KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29t
cG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVy
TGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2Z1bmN0aW9ucy50ZXN0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvZnVuY3Rpb25zLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2MWE0YzgxYmMwYTZiYTMyMDI2YTQ3
YzM2OWU2ZjYwODdiMjE3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2Z1bmN0aW9u
cy50ZXN0CkBAIC0wLDAgKzEsMzQ3NSBAQAorIyBUZXN0cyB0b2RvOgorIyAtIGlub3V0IHdpdGgg
dmFyeWluZ3MsIGF0dHJpYnV0ZXMsIHVuaWZvcm1zIChhbmQgYXJyYXlzIG9mICdlbSkKKyMgLSBp
bm91dCB3aXRoIGFycmF5cywgYXJyYXkgZWxlbWVudHMKKyMgLSBpbm91dCB3aXRoIGFycmF5IGVs
ZW1lbnRzCisjIC0gaW5vdXQgYnktdmFsdWUgc2VtYW50aWNzIChhcnJheXMgJiBlbGVtZW50cyAm
IHN0cnVjdHMpCisKKyMgRG9uZToKKyMgLSBjb250cm9sIGZsb3c6IHJldHVybiwgcmV0dXJuIGlu
IGxvb3AsIGV0Yy4KKworZ3JvdXAgZGF0YXR5cGVzICJGdW5jdGlvbiBQYXJhbWV0ZXIgRGF0YSBU
eXBlcyIKKworCWNhc2UgZmxvYXRfZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0
IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQw
CT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVu
YyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLWE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZmxvYXRfdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBp
bjAJCT0gWyB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoMi4wLCAyLjUpIF07CisJCQlvdXRwdXQgZmxv
YXQgb3V0MAk9IFsgLTEuMCB8IC00LjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKHZl
YzIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhLnggKyBhLnkpOworCQkJfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3ZlYzMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzMgaW4wCQk9IFsgdmVjMygwLjAsIDEuMCwgLTIuMCkgfCB2ZWMzKDIuMCwgMi41LCAtNC4wKSBd
OworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMCB8IC0wLjUgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CWZsb2F0IGZ1bmMgKHZlYzMgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhLnggKyBhLnkgKyBhLnop
OworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3ZlYzQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgLTIuMCwgMC41
KSB8IHZlYzQoMi4wLCAyLjUsIDQuMCwgLTcuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0g
WyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jICh2ZWM0IGEpCisJCQl7
CisJCQkJcmV0dXJuIC0oYS54ICsgYS55ICsgYS56ICsgYS53KTsKKwkJCX0KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9tYXQyCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBt
YXQyIGluMAkJPSBtYXQyKDAuNSwgLTEuMCwgMC4yLCAtMS4wKTsKKwkJCW91dHB1dCBmbG9hdCBv
dXQwCT0gMC41OworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAobWF0MiBhKQorCQkJeworCQkJ
CS8vcmV0dXJuIC0oYVswXVswXSArIGFbMF1bMV0gKyBhWzFdWzBdICsgYVsxXVsxXSk7CisJCQkJ
cmV0dXJuIGFbMF1bMF07CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9
IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxv
YXRfbWF0MworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0MyBpbjAJCT0gWyBtYXQzKDAuMCwg
MS4wLCAtMi4wLCAwLjUsIDEuMCwgLTEuMCwgMi4wLCA0LjAsIC0xLjApIHwgbWF0MygyLjAsIDIu
NSwgNC4wLCAtNy4wLCAyLjUsIDMuMCwgMC41LCAtMy41LCAxLjApIF07CisJCQlvdXRwdXQgZmxv
YXQgb3V0MAk9IFsgLTQuNSB8IC01LjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKG1h
dDMgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhWzBdWzBdICsgYVswXVsxXSArIGFbMF1bMl0gKyBh
WzFdWzBdICsgYVsxXVsxXSArIGFbMV1bMl0gKyBhWzJdWzBdICsgYVsyXVsxXSArIGFbMl1bMl0p
OworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X21hdDQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wCQk9IFsgbWF0NCgwLjAsIDEuMCwgLTIuMCwgMC41
LCAxLjAsIC0xLjAsIDIuMCwgNC4wLCAtMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgLTIu
MCwgLTIuMCkgfCBtYXQ0KDIuMCwgMi41LCA0LjAsIC03LjAsIDIuNSwgMy4wLCAwLjUsIC0zLjUs
IDEuMCwgMC4wLCAyLjAsIC0xLjAsIDEuMCwgMC4wLCAtMS4wLCAzLjApIF07CisJCQlvdXRwdXQg
ZmxvYXQgb3V0MAk9IFsgLTUuNSB8IC05LjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMg
KG1hdDQgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhWzBdWzBdICsgYVswXVsxXSArIGFbMF1bMl0g
KyBhWzBdWzNdICsgYVsxXVswXSArIGFbMV1bMV0gKyBhWzFdWzJdICsgYVsxXVszXSArIGFbMl1b
MF0gKyBhWzJdWzFdICsgYVsyXVsyXSArIGFbMl1bM10gKyBhWzNdWzBdICsgYVszXVsxXSArIGFb
M11bMl0gKyBhWzNdWzNdKTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQw
ID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnRfaW50CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgLTEgfCAwIHwgMSB8
IDQgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDEgfCAwIHwgLTEgfCAtNCBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGZ1bmMgKGludCBhKQorCQkJ
eworCQkJCXJldHVybiAtYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGludF9pdmVjMgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4w
CQk9IFsgaXZlYzIoLTEsIDApIHwgaXZlYzIoMSwgNCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJ
PSBbIDEgfCAtNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
aW50IGZ1bmMgKGl2ZWMyIGEpCisJCQl7CisJCQkJcmV0dXJuIC0oYS54ICsgYS55KTsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pdmVjMwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wCQk9IFsgaXZlYzMoLTEsIDAsIDIpIHwg
aXZlYzMoMSwgNCwgLTgpIF07CisJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAtMSB8IDMgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5jIChpdmVjMyBh
KQorCQkJeworCQkJCXJldHVybiAtKGEueCArIGEueSArIGEueik7CisJCQl9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaXZlYzQKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGl2ZWM0IGluMAkJPSBbIGl2ZWM0KC0xLCAwLCAyLCAyKSB8IGl2ZWM0KDEs
IDQsIC04LCAyKSBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgLTMgfCAxIF07CisJCX0KKwor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoaXZlYzQgYSkKKwkJ
CXsKKwkJCQlyZXR1cm4gLShhLnggKyBhLnkgKyBhLnogKyBhLncpOworCQkJfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBib29sIGluMAkJPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGJv
b2wgb3V0MAk9IFsgZmFsc2UgfCB0cnVlIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGJv
b2wgYSkKKwkJCXsKKwkJCQlyZXR1cm4gIWE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2ZWMyCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjMiBpbjAJCT0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSBd
OworCQkJb3V0cHV0IGJvb2wgb3V0MAk9IFsgZmFsc2UgfCB0cnVlIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlib29sIGZ1bmMgKGJ2ZWMyIGEpCisJCQl7CisJCQkJcmV0dXJuICEoYS54ID09IGEueSk7CisJ
CQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVu
YyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2
ZWMzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAJCT0gWyBidmVjMyh0cnVlLCB0
cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYm9v
bCBvdXQwCT0gWyBmYWxzZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWJvb2wgZnVuYyAoYnZl
YzMgYSkKKwkJCXsKKwkJCQlyZXR1cm4gKGEueCA9PSBhLnkpID09IGEuejsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYnZlYzQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMAkJPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUs
IGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBm
YWxzZSwgZmFsc2UsIHRydWUpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwCT0gWyBmYWxzZSB8IHRy
dWUgfCB0cnVlIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGJ2ZWM0IGEpCisJCQl7CisJ
CQkJcmV0dXJuICgoYS54ID09IGEueSkgPT0gKGEueiA9PSBhLncpKTsKKwkJCX0KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDIKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IG1hdDIgaW4wCT0gWyBtYXQyKC0yLjAsIDAuNSwgLTEuMCwgMS4wKSB8IG1hdDIo
MS4wLCAtMy41LCAtMy41LCAyLjUpIHwgbWF0MigtMi4wLCAtMi4wLCAzLjUsIDAuMCkgXTsKKwkJ
CW91dHB1dCBtYXQyIG91dDAJPSBbIG1hdDIoNC4wLCAtMS4wLCAyLjAsIC0yLjApIHwgbWF0Migt
Mi4wLCA3LjAsIDcuMCwgLTUuMCkgfCBtYXQyKDQuMCwgNC4wLCAtNy4wLCAtMC4wKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJbWF0MiBmdW5jIChtYXQyIGEpCisJCQl7CisJCQkJcmV0dXJuIC0yLjAqYTsK
KwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBm
dW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworCWNhc2UgbWF0
MworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0MyBpbjAJPSBbIG1hdDMoMi41LCAwLjAsIDEu
MCwgLTIuNSwgMS4wLCAzLjAsIDAuMCwgMi4wLCAxLjUpIHwgbWF0MygtMy41LCAyLjAsIDAuNSwg
LTEuNSwgLTMuNSwgMi41LCAwLjAsIDEuNSwgMy4wKSB8IG1hdDMoMS41LCAzLjAsIC0xLjAsIDIu
NSwgLTAuNSwgMy41LCAzLjAsIC0zLjAsIC0yLjUpIF07CisJCQlvdXRwdXQgbWF0MyBvdXQwCT0g
WyBtYXQzKC01LjAsIC0wLjAsIC0yLjAsIDUuMCwgLTIuMCwgLTYuMCwgLTAuMCwgLTQuMCwgLTMu
MCkgfCBtYXQzKDcuMCwgLTQuMCwgLTEuMCwgMy4wLCA3LjAsIC01LjAsIC0wLjAsIC0zLjAsIC02
LjApIHwgbWF0MygtMy4wLCAtNi4wLCAyLjAsIC01LjAsIDEuMCwgLTcuMCwgLTYuMCwgNi4wLCA1
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQltYXQzIGZ1bmMgKG1hdDMgYSkKKwkJCXsKKwkJCQlyZXR1
cm4gLTIuMCphOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CisJY2FzZSBtYXQ0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0IGluMAk9IFsgbWF0NCgt
Mi4wLCAzLjUsIC0wLjUsIDEuMCwgLTEuNSwgMC4wLCAtMS4wLCAtMS4wLCAwLjUsIDAuNSwgMy4w
LCAxLjUsIDMuMCwgMi41LCAzLjUsIDEuNSkgfCBtYXQ0KC0yLjUsIDIuNSwgMy41LCAzLjAsIDAu
NSwgMS41LCAtMi4wLCAyLjUsIDAuNSwgLTEuNSwgLTMuNSwgMi41LCAzLjUsIC0zLjAsIDIuNSwg
LTAuNSkgfCBtYXQ0KC0yLjUsIC0xLjUsIDIuMCwgMy4wLCAtMy41LCAxLjAsIC0zLjUsIDEuNSwg
LTEuNSwgMy4wLCAzLjUsIDAuMCwgMy41LCAtMS41LCAtMy4wLCAwLjUpIF07CisJCQlvdXRwdXQg
bWF0NCBvdXQwCT0gWyBtYXQ0KDQuMCwgLTcuMCwgMS4wLCAtMi4wLCAzLjAsIC0wLjAsIDIuMCwg
Mi4wLCAtMS4wLCAtMS4wLCAtNi4wLCAtMy4wLCAtNi4wLCAtNS4wLCAtNy4wLCAtMy4wKSB8IG1h
dDQoNS4wLCAtNS4wLCAtNy4wLCAtNi4wLCAtMS4wLCAtMy4wLCA0LjAsIC01LjAsIC0xLjAsIDMu
MCwgNy4wLCAtNS4wLCAtNy4wLCA2LjAsIC01LjAsIDEuMCkgfCBtYXQ0KDUuMCwgMy4wLCAtNC4w
LCAtNi4wLCA3LjAsIC0yLjAsIDcuMCwgLTMuMCwgMy4wLCAtNi4wLCAtNy4wLCAtMC4wLCAtNy4w
LCAzLjAsIDYuMCwgLTEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCW1hdDQgZnVuYyAobWF0NCBhKQor
CQkJeworCQkJCXJldHVybiAtMi4wKmE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9zdHJ1Y3QKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzMgaW4wCQk9IFsgdmVjMygwLjAsIDEuMCwgLTIuMCkgfCB2ZWMzKDIuMCwgMi41LCAtNC4w
KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMCB8IC0wLjUgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXN0cnVjdCBQb3MgeyBmbG9hdCBhLCBiLCBjOyB9OworCisJCQlmbG9hdCBmdW5jIChQb3Mg
cCkKKwkJCXsKKwkJCQlyZXR1cm4gLShwLmEgKyBwLmIgKyBwLmMpOworCQkJfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCVBvcyBwID0gUG9zKGluMC54LCBpbjAueSwgaW4wLnopOworCQkJ
CW91dDAgPSBmdW5jKHApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBzdHJ1Y3Rfc3RydWN0CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMAkJPSBbIHZl
YzMoMC4wLCAxLjAsIC0yLjApIHwgdmVjMygyLjAsIDIuNSwgLTQuMCkgXTsKKwkJCW91dHB1dCBm
bG9hdCBvdXQwCT0gWyAxLjAgfCAtMC41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlzdHJ1Y3QgUG9zIHsg
ZmxvYXQgYSwgYiwgYzsgfTsKKworCQkJUG9zIGZ1bmMgKFBvcyBwKQorCQkJeworCQkJCXJldHVy
biBQb3MoLXAuYSwgLXAuYiwgLXAuYyk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJUG9zIHAgPSBQb3MoaW4wLngsIGluMC55LCBpbjAueik7CisJCQkJcCA9IGZ1bmMocCk7CisJ
CQkJb3V0MCA9IHAuYSArIHAuYiArIHAuYzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2Ugc3RydWN0X25lc3RlZF9zdHJ1Y3QKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzMgaW4wCQk9IFsgdmVjMygwLjAsIDEuMCwgLTIuMCkgfCB2ZWMzKDIuMCwgMi41LCAtNC4w
KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMCB8IC0wLjUgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXN0cnVjdCBQb3MgeyBmbG9hdCBhLCBiLCBjOyB9OworCQkJc3RydWN0IExpbmUgeyBQb3Mg
c3RhcnQsIGVuZDsgfTsKKworCQkJTGluZSBmdW5jIChQb3MgcCkKKwkJCXsKKwkJCQlyZXR1cm4g
TGluZShwLCBQb3MoLXAuYSwgLXAuYiwgLXAuYykpOworCQkJfQorCisJCQlmbG9hdCBzdW0gKFBv
cyBwKQorCQkJeworCQkJCXJldHVybiAocC5hICsgcC5iICsgcC5jKTsKKwkJCX0KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlQb3MgcCA9IFBvcyhpbjAueCwgaW4wLnksIGluMC56KTsKKwkJ
CQlMaW5lIGxpbmUgPSBmdW5jKHApOworCQkJCW91dDAgPSBzdW0obGluZS5zdGFydCkgKyAoMi4w
ICogc3VtKGxpbmUuZW5kKSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwor
ZW5kICMgZGF0YXR5cGVzCisKK2dyb3VwIHF1YWxpZmllcnMgIkZ1bmN0aW9uIFBhcmFtZXRlciBR
dWFsaWZpZXJzIgorCisJY2FzZSBpbl9mbG9hdAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxv
YXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91
dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChpbiBmbG9hdCBhKQorCQkJeworCQkJCWEg
PSAtYTsKKwkJCQlyZXR1cm4gMi4wICogYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSBpbjA7CisJCQkJZmxvYXQgZyA9IGZ1bmMoZik7
CisJCQkJb3V0MCA9IGYgKyBnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBvdXRfZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDAu
MCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjAgfCAt
MS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBmdW5jIChvdXQgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0gLTEuMDsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSAxLjA7
CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgaW5vdXRfZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGZsb2F0IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9h
dCBvdXQwCT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChpbm91dCBmbG9hdCBhKQorCQkJewor
CQkJCWEgPSAtYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCWZsb2F0IGYgPSAxLjA7CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5fbG93cF9mbG9hdAorCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIu
NSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07
CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChp
biBsb3dwIGZsb2F0IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVybiAyLjAgKiBhOwor
CQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZiA9
IGluMDsKKwkJCQlmbG9hdCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG91dF9sb3dwX2Zsb2F0CisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07
CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAob3V0IGxv
d3AgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0gLTEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSAxLjA7CisJCQkJZnVuYyhmKTsKKwkJ
CQlvdXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgaW5vdXRfbG93cF9mbG9hdAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9
IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAu
MCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIGZ1bmMgKGlub3V0IGxvd3AgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0g
LWE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBmID0gMS4wOworCQkJCWZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGluX2hpZ2hwX2Zsb2F0CisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJ
CQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGluIGhpZ2hw
IGZsb2F0IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVybiAyLjAgKiBhOworCQkJfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZiA9IGluMDsK
KwkJCQlmbG9hdCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG91dF9oaWdocF9mbG9hdAorCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJ
b3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKwor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKG91dCBoaWdocCBm
bG9hdCBhKQorCQkJeworCQkJCWEgPSAtMS4wOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZiA9IDEuMDsKKwkJCQlmdW5jKGYpOworCQkJCW91
dDAgPSBmICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bm91dF9oaWdocF9mbG9hdAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsg
MC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8
IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIGZ1bmMgKGlub3V0IGhpZ2hwIGZsb2F0IGEpCisJCQl7CisJCQkJYSA9IC1h
OworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
ZiA9IDEuMDsKKwkJCQlmdW5jKGYpOworCQkJCW91dDAgPSBmICogaW4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdF9mbG9hdAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0
cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChjb25zdCBmbG9hdCBh
KQorCQkJeworCQkJCWZsb2F0IGIgPSAtYTsKKwkJCQlyZXR1cm4gMi4wICogYjsKKwkJCX0KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSBpbjA7CisJ
CQkJZmxvYXQgZyA9IGZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKyBnOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdF9pbl9mbG9hdAorCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0
cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChjb25zdCBpbiBmbG9h
dCBhKQorCQkJeworCQkJCWZsb2F0IGIgPSAtYTsKKwkJCQlyZXR1cm4gMi4wICogYjsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSBpbjA7
CisJCQkJZmxvYXQgZyA9IGZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKyBnOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbl9pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNCBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9
IFsgMCB8IC0xIHwgMiB8IC00IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQlpbnQgZnVuYyAoaW4gaW50IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVy
biAyICogYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWludCBmID0gaW4wOworCQkJCWludCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG91dF9pbnQKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNiBdOworCQkJb3V0cHV0
IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC02IF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKG91dCBpbnQgYSkKKwkJCXsKKwkJCQlhID0g
LTE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQg
ZiA9IDE7CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5vdXRfaW50CisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpbnQgaW4wCQk9IFsgMCB8IDEgfCAtMiB8IDYgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJ
PSBbIDAgfCAtMSB8IDIgfCAtNiBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBmdW5jIChpbm91dCBpbnQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQl9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgZiA9IDE7CisJ
CQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgaW5fbG93cF9pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGlu
dCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNCBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMCB8
IC0xIHwgMiB8IC00IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlpbnQgZnVuYyAoaW4gbG93cCBpbnQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0dXJu
IDIgKiBhOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
aW50IGYgPSBpbjA7CisJCQkJaW50IGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSBmICsgZzsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2xvd3BfaW50CisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgMCB8IDEgfCAtMiB8IDYgXTsKKwkJCW91
dHB1dCBpbnQgb3V0MAkJPSBbIDAgfCAtMSB8IDIgfCAtNiBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChvdXQgbG93cCBpbnQgYSkKKwkJCXsK
KwkJCQlhID0gLTE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlpbnQgZiA9IDE7CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5vdXRfbG93cF9pbnQKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNiBdOworCQkJb3V0
cHV0IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC02IF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKGlub3V0IGxvd3AgaW50IGEpCisJCQl7
CisJCQkJYSA9IC1hOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJaW50IGYgPSAxOworCQkJCWZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGluX2hpZ2hwX2ludAorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAkJPSBbIDAgfCAxIHwgLTIgfCA0IF07CisJCQlvdXRw
dXQgaW50IG91dDAJCT0gWyAwIHwgLTEgfCAyIHwgLTQgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5jIChpbiBoaWdocCBpbnQgYSkKKwkJCXsKKwkJ
CQlhID0gLWE7CisJCQkJcmV0dXJuIDIgKiBhOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJaW50IGYgPSBpbjA7CisJCQkJaW50IGcgPSBmdW5jKGYpOwor
CQkJCW91dDAgPSBmICsgZzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2Ugb3V0X2hpZ2hwX2ludAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAkJPSBbIDAg
fCAxIHwgLTIgfCA2IF07CisJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAwIHwgLTEgfCAyIHwgLTYg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAo
b3V0IGhpZ2hwIGludCBhKQorCQkJeworCQkJCWEgPSAtMTsKKwkJCX0KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBmID0gMTsKKwkJCQlmdW5jKGYpOworCQkJ
CW91dDAgPSBmICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbm91dF9oaWdocF9pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAw
IHwgMSB8IC0yIHwgNiBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC02
IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMg
KGlub3V0IGhpZ2hwIGludCBhKQorCQkJeworCQkJCWEgPSAtYTsKKwkJCX0KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBmID0gMTsKKwkJCQlmdW5jKGYpOwor
CQkJCW91dDAgPSBmICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBjb25zdF9pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwg
MSB8IC0yIHwgNCBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC00IF07
CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoY29u
c3QgaW50IGEpCisJCQl7CisJCQkJaW50IGIgPSAtYTsKKwkJCQlyZXR1cm4gMiAqIGI7CisJCQl9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgZiA9IGluMDsK
KwkJCQlpbnQgZyA9IGZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKyBnOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdF9pbl9pbnQKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNCBdOworCQkJb3V0cHV0IGludCBvdXQw
CQk9IFsgMCB8IC0xIHwgMiB8IC00IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQlpbnQgZnVuYyAoY29uc3QgaW4gaW50IGEpCisJCQl7CisJCQkJaW50IGIgPSAt
YTsKKwkJCQlyZXR1cm4gMiAqIGI7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlpbnQgZiA9IGluMDsKKwkJCQlpbnQgZyA9IGZ1bmMoZik7CisJCQkJb3V0
MCA9IGYgKyBnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbl9i
b29sCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMAkJPSBbIHRydWUgfCBmYWxzZSBd
OworCQkJb3V0cHV0IGJvb2wgb3V0MAk9IFsgdHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CWJvb2wgZnVuYyAoaW4gYm9vbCBhKQorCQkJeworCQkJCWEgPSAhYTsKKwkJCQlyZXR1cm4gYTsK
KwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWJvb2wgZiA9
IGluMDsKKwkJCQlib29sIGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSAoZiAhPSBnKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2Jvb2wKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGJvb2wgaW4wCQk9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYm9v
bCBvdXQwCT0gWyBmYWxzZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAob3V0
IGJvb2wgYSkKKwkJCXsKKwkJCQlhID0gZmFsc2U7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29sIGYgPSB0cnVlOworCQkJCWZ1bmMoZik7CisJCQkJ
b3V0MCA9IChpbjAgPT0gZik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGlub3V0X2Jvb2wKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wCQk9IFsgdHJ1
ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwCT0gWyBmYWxzZSB8IHRydWUgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgZnVuYyAoaW5vdXQgYm9vbCBhKQorCQkJeworCQkJCWEgPSAhYTsK
KwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWJvb2wgZiA9
IHRydWU7CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0gKGluMCA9PSBmKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgcXVhbGlmaWVycworCitncm91cCBkZWNsYXJh
dGlvbnMgIkZ1bmN0aW9uIERlY2xhcmF0aW9ucyIKKworCWNhc2Ugdm9pZF92c19ub192b2lkCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwg
Mi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKCk7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJb3V0MCA9IGZ1bmMoKSAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKworCQkJZmxv
YXQgZnVuYyAodm9pZCkKKwkJCXsKKwkJCQlyZXR1cm4gLTEuMDsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgaW5fdnNfbm9faW4KKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJ
PSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAw
LjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxv
YXQgZik7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKworCQkJZmxvYXQgZnVuYyAoaW4gZmxvYXQgZikKKwkJCXsKKwkJ
CQlyZXR1cm4gLWY7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmF1bHRfdnNfZXhwbGlj
aXRfcHJlY2lzaW9uCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAg
fCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEu
MCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpOwor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisKKwkJCWZsb2F0IGZ1bmMgKG1lZGl1bXAgZmxvYXQgZikKKwkJCXsKKwkJCQly
ZXR1cm4gLWY7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGRlY2xhcmF0aW9ucworCitncm91
cCBvdmVybG9hZGluZyAiRnVuY3Rpb24gT3ZlcmxvYWRpbmciCisKKwljYXNlIHVzZXJfZnVuY19h
cmdfdHlwZV9zaW1wbGUKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDAu
MCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjAgfCAt
MS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLWE7CisJCQl9CisK
KwkJCWludCBmdW5jIChpbnQgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLWE7CisJCQl9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZ1bmMoaW4wKSAqIGZsb2F0KGZ1bmMoLTEpKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlcl9mdW5jX2FyZ19m
bG9hdF90eXBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwg
MS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAg
fCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlmbG9hdCBmdW5jIChmbG9hdCBhKSB7IHJldHVybiAtYTsgfQorCQkJdmVjMiBmdW5jICh2ZWMy
IGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCXZlYzMgZnVuYyAodmVjMyBhKSB7IHJldHVybiBhLnh4
eDsgfQorCQkJdmVjNCBmdW5jICh2ZWM0IGEpIHsgcmV0dXJuIGEud3d3dzsgfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGZ1bmMoZnVuYyhmdW5jKHZlYzQoaW4wKSku
eHl6KS54eSkueCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVz
ZXJfZnVuY19hcmdfaW50X3R5cGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9
IFsgMCB8IDEgfCAtMiB8IDYgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDAgfCAtMSB8IDIg
fCAtNiBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGZ1
bmMgKGludCBhKSB7IHJldHVybiAtYTsgfQorCQkJaXZlYzIgZnVuYyAoaXZlYzIgYSkgeyByZXR1
cm4gYS55eDsgfQorCQkJaXZlYzMgZnVuYyAoaXZlYzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJ
CWl2ZWM0IGZ1bmMgKGl2ZWM0IGEpIHsgcmV0dXJuIGEud3d3dzsgfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoZnVuYyhmdW5jKGZ1bmMoaXZl
YzQoaW4wKSkueHl6KS54eSkueCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHVzZXJfZnVuY19hcmdfYm9vbF90eXBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
Ym9vbCBpbjAJCT0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBib29sIG91dDAJPSBbIGZh
bHNlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJYm9vbCBmdW5jIChib29sIGEpIHsgcmV0dXJu
ICFhOyB9CisJCQlidmVjMiBmdW5jIChidmVjMiBhKSB7IHJldHVybiBhLnl4OyB9CisJCQlidmVj
MyBmdW5jIChidmVjMyBhKSB7IHJldHVybiBhLnh4eDsgfQorCQkJYnZlYzQgZnVuYyAoYnZlYzQg
YSkgeyByZXR1cm4gYS53d3d3OyB9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gZnVuYyhmdW5jKGZ1bmMoZnVuYyhidmVjNChpbjApKS54eXopLnh5KS54
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlcl9mdW5jX2Fy
Z19iYXNpY190eXBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4w
IHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0x
LjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQlmbG9hdCBmdW5jIChmbG9hdCBhKSB7IHJldHVybiAtYTsgfQorCQkJdmVjMiBmdW5jICh2
ZWMyIGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCXZlYzMgZnVuYyAodmVjMyBhKSB7IHJldHVybiBh
Lnh4eDsgfQorCQkJdmVjNCBmdW5jICh2ZWM0IGEpIHsgcmV0dXJuIGEud3d3dzsgfQorCQkJaW50
IGZ1bmMgKGludCBhKSB7IHJldHVybiAtYTsgfQorCQkJaXZlYzIgZnVuYyAoaXZlYzIgYSkgeyBy
ZXR1cm4gYS55eDsgfQorCQkJaXZlYzMgZnVuYyAoaXZlYzMgYSkgeyByZXR1cm4gYS54eHg7IH0K
KwkJCWl2ZWM0IGZ1bmMgKGl2ZWM0IGEpIHsgcmV0dXJuIGEud3d3dzsgfQorCQkJYm9vbCBmdW5j
IChib29sIGEpIHsgcmV0dXJuICFhOyB9CisJCQlidmVjMiBmdW5jIChidmVjMiBhKSB7IHJldHVy
biBhLnl4OyB9CisJCQlidmVjMyBmdW5jIChidmVjMyBhKSB7IHJldHVybiBhLnh4eDsgfQorCQkJ
YnZlYzQgZnVuYyAoYnZlYzQgYSkgeyByZXR1cm4gYS53d3d3OyB9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpZiAoZnVuYyhmdW5jKGJ2ZWM0KGZhbHNlKSkueCkp
CisJCQkJCW91dDAgPSBmdW5jKGluMCkgKiBmbG9hdChmdW5jKC0xKSk7CisJCQkJZWxzZQorCQkJ
CQlvdXQwID0gZmxvYXQoZnVuYyhmdW5jKGl2ZWM0KGZ1bmMoZnVuYyhmdW5jKHZlYzQoMC41KSku
eHl6KS54eSkueHh4eCkpLnh5KS54KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdXNlcl9mdW5jX2FyZ19jb21wbGV4X3R5cGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQg
ZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBQb3MgeyBmbG9hdCBhLCBiLCBjOyB9
OworCQkJc3RydWN0IExpbmUgeyBQb3Mgc3RhcnQsIGVuZDsgfTsKKworCQkJZmxvYXQgZnVuYyAo
ZmxvYXQgYSkgeyByZXR1cm4gLWE7IH0KKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGFbNF0pIHsgcmV0
dXJuIGFbMF0gKyBhWzNdOyB9CisJCQl2ZWMyIGZ1bmMgKHZlYzIgYSkgeyByZXR1cm4gYS55eDsg
fQorCQkJdmVjMyBmdW5jICh2ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQl2ZWM0IGZ1bmMg
KHZlYzQgYSkgeyByZXR1cm4gYS53d3d3OyB9CisJCQl2ZWM0IGZ1bmMgKHZlYzQgYVs0XSkgeyBy
ZXR1cm4gYVsxXSArIGFbMl07IH0KKwkJCWludCBmdW5jIChpbnQgYSkgeyByZXR1cm4gLWE7IH0K
KwkJCWl2ZWMyIGZ1bmMgKGl2ZWMyIGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCWl2ZWMzIGZ1bmMg
KGl2ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQlpdmVjNCBmdW5jIChpdmVjNCBhKSB7IHJl
dHVybiBhLnd3d3c7IH0KKwkJCWJvb2wgZnVuYyAoYm9vbCBhKSB7IHJldHVybiAhYTsgfQorCQkJ
YnZlYzIgZnVuYyAoYnZlYzIgYSkgeyByZXR1cm4gYS55eDsgfQorCQkJYnZlYzMgZnVuYyAoYnZl
YzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJCWJ2ZWM0IGZ1bmMgKGJ2ZWM0IGEpIHsgcmV0dXJu
IGEud3d3dzsgfQorCQkJUG9zIGZ1bmMgKFBvcyBhKSB7IHJldHVybiBhOyB9CisJCQlMaW5lIGZ1
bmMgKExpbmUgYSkgeyByZXR1cm4gTGluZShhLmVuZCwgYS5zdGFydCk7IH0KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGFycls0XTsKKwkJCQl2ZWM0IGFy
cjJbNF07CisJCQkJb3V0MCA9IGZ1bmMoYXJyKSArIGZ1bmMoYXJyMikueDsKKwkJCQlpZiAoZnVu
YyhmdW5jKGJ2ZWM0KGZhbHNlKSkueCkpCisJCQkJCW91dDAgPSBmdW5jKGluMCkgKiBmbG9hdChm
dW5jKC0xKSk7CisJCQkJZWxzZQorCQkJCQlvdXQwID0gZmxvYXQoZnVuYyhmdW5jKGl2ZWM0KGZ1
bmMoZnVuYyhmdW5jKHZlYzQoMC41KSkueHl6KS54eSkueHh4eCkpLnh5KS54KTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlcl9mdW5jX2FyZ3VtZW50cworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIu
NSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07
CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCXJldHVybiAt
YTsKKwkJCX0KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSwgZmxvYXQgYikKKwkJCXsKKwkJCQly
ZXR1cm4gYSAqIGI7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZ1
bmMoaW4wKSAqIGZ1bmMoLTAuNSwgLTIuMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGJ1aWx0aW5fc2luCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4w
CQk9IFsgLTEgfCAwIHwgMSB8IDQgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDEgfCAwIHwg
LTEgfCAtNCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50
IHNpbihpbnQgYSkgeyByZXR1cm4gLWE7IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBzaW4oaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYnVpbHRpbl9zdGVwCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQg
aW4wCQk9IFsgLTEgfCAwIHwgMSB8IDQgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDEgfCAw
IHwgLTEgfCAtNCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
aW50IHN0ZXAgKGZsb2F0IGksIGZsb2F0IGosIGludCBhKSB7IHJldHVybiAtYTsgfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHN0ZXAoMC4wLCAxLjAs
IGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFycmF5X3Np
emUKKwkJdmFsdWVzCisJCXsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAxLjAgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGZbM10pCisJCQl7CisJCQkJcmV0dXJuIGZbMF07
CisJCQl9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGZbNF0pCisJCQl7CisJCQkJcmV0dXJuIGZb
MV07CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxv
YXQgeFs0XTsKKwkJCQl4WzBdID0gLTEuMDsKKwkJCQl4WzFdID0gMS4wOworCQkJCXhbMl0gPSB4
WzNdID0gMC4wOworCQkJCW91dDAgPSBmdW5jKHgpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCitlbmQgIyBvdmVybG9hZGluZworCitncm91cCBhcnJheV9hcmd1bWVudHMgIkFy
cmF5cyBhcyBBcmd1bWVudHMiCisKKwljYXNlIGxvY2FsX2luX2Zsb2F0CisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB2ZWM0IGluMAkJPSBbIHZlYzQoMC4wLCAxLjAsIDIuMCwgLTQuMCkgfCB2ZWM0
KC03LjUsIDEyLjEyNSwgLTAuMjUsIDE2LjApIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwCT0gWyB2
ZWM0KDAuMCwgLTEuMCwgLTIuMCwgNC4wKSB8IHZlYzQoNy41LCAtMTIuMTI1LCAwLjI1LCAtMTYu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGluIGZsb2F0IGFbNF0pCisJCQl7CisJ
CQkJYVswXSA9IC0xLjA7CisJCQkJYVsyXSA9IC00LjA7CisJCQkJYVszXSA9IC0zLjAgKiBhWzFd
OworCQkJCXJldHVybiBhWzBdOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZs
b2F0IGFycls0XTsKKwkJCQlhcnJbMF0gPSBpbjAueDsKKwkJCQlhcnJbMV0gPSBpbjAueTsKKwkJ
CQlhcnJbMl0gPSBpbjAuejsKKwkJCQlhcnJbM10gPSBpbjAudzsKKwkJCQlmbG9hdCBmID0gZnVu
YyhhcnIpOworCQkJCW91dDAgPSBmICogdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJb
M10pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBnbG9iYWxfaW5f
ZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEu
MCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcuNSwgMTIuMTI1LCAtMC4yNSwgMTYuMCkgXTsKKwkJCW91
dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQoMC4wLCAtMS4wLCAtMi4wLCA0LjApIHwgdmVjNCg3LjUs
IC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoaW4g
ZmxvYXQgYVs0XSkKKwkJCXsKKwkJCQlhWzBdID0gLTEuMDsKKwkJCQlhWzJdID0gLTQuMDsKKwkJ
CQlhWzNdID0gLTMuMCAqIGFbMV07CisJCQkJcmV0dXJuIGFbMF07CisJCQl9CisKKwkJCWZsb2F0
IGFycls0XTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlhcnJbMF0gPSBpbjAueDsKKwkJ
CQlhcnJbMV0gPSBpbjAueTsKKwkJCQlhcnJbMl0gPSBpbjAuejsKKwkJCQlhcnJbM10gPSBpbjAu
dzsKKwkJCQlmbG9hdCBmID0gZnVuYyhhcnIpOworCQkJCW91dDAgPSBmICogdmVjNChhcnJbMF0s
IGFyclsxXSwgYXJyWzJdLCBhcnJbM10pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBsb2NhbF9pbl9pbnQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGlu
MAkJPSBbIGl2ZWM0KDAsIDEsIDIsIC00KSB8IGl2ZWM0KC03LCAtMTEsIDEzLCAxOSkgXTsKKwkJ
CW91dHB1dCBpdmVjNCBvdXQwCT0gWyBpdmVjNCgwLCAtMSwgLTIsIDQpIHwgaXZlYzQoNywgMTEs
IC0xMywgLTE5KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
aW50IGZ1bmMgKGluIGludCBhWzRdKQorCQkJeworCQkJCWFbMF0gPSAtMTsKKwkJCQlhWzJdID0g
LTQ7CisJCQkJYVszXSA9IC0zICogYVsxXTsKKwkJCQlyZXR1cm4gYVswXTsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBhcnJbNF07CisJCQkJYXJy
WzBdID0gaW4wLng7CisJCQkJYXJyWzFdID0gaW4wLnk7CisJCQkJYXJyWzJdID0gaW4wLno7CisJ
CQkJYXJyWzNdID0gaW4wLnc7CisJCQkJaW50IGYgPSBmdW5jKGFycik7CisJCQkJb3V0MCA9IGYg
KiBpdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJbM10pOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBnbG9iYWxfaW5faW50CisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpdmVjNCBpbjAJCT0gWyBpdmVjNCgwLCAxLCAyLCA0KSB8IGl2ZWM0KC03LCAtMTEs
IDEzLCAxOSkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwCT0gWyBpdmVjNCgwLCAtMSwgLTIsIC00
KSB8IGl2ZWM0KDcsIDExLCAtMTMsIC0xOSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCWludCBmdW5jIChpbiBpbnQgYVs0XSkKKwkJCXsKKwkJCQlhWzBdID0g
LTE7CisJCQkJYVsyXSA9IC00OworCQkJCWFbM10gPSAtMyAqIGFbMV07CisJCQkJcmV0dXJuIGFb
MF07CisJCQl9CisKKwkJCWludCBhcnJbNF07CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlhcnJbMF0gPSBpbjAueDsKKwkJCQlhcnJbMV0gPSBpbjAueTsKKwkJCQlh
cnJbMl0gPSBpbjAuejsKKwkJCQlhcnJbM10gPSBpbjAudzsKKwkJCQlpbnQgZiA9IGZ1bmMoYXJy
KTsKKwkJCQlvdXQwID0gZiAqIGl2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJIiIKKwllbmQKKworCWNhc2UgbG9jYWxfaW5fYm9v
bAorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wCQk9IFsgYnZlYzQodHJ1ZSwgdHJ1
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJ
CQlvdXRwdXQgYnZlYzQgb3V0MAk9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJYm9vbCBm
dW5jIChpbiBib29sIGFbNF0pCisJCQl7CisJCQkJYVswXSA9IGZhbHNlOworCQkJCWFbMl0gPSB0
cnVlOworCQkJCWFbM10gPSAhYVsxXTsKKwkJCQlyZXR1cm4gYVswXTsKKwkJCX0KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWJvb2wgYXJyWzRdOworCQkJCWFyclsw
XSA9ICFpbjAueDsKKwkJCQlhcnJbMV0gPSAhaW4wLnk7CisJCQkJYXJyWzJdID0gIWluMC56Owor
CQkJCWFyclszXSA9ICFpbjAudzsKKwkJCQlmdW5jKGFycik7CisJCQkJb3V0MCA9IGJ2ZWM0KGFy
clswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGdsb2JhbF9pbl9ib29sCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
dmVjNCBpbjAJCT0gWyBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwCT0gWyBidmVj
NChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGluIGJvb2wgYVs0XSkKKwkJCXsKKwkJ
CQlhWzBdID0gZmFsc2U7CisJCQkJYVsyXSA9IHRydWU7CisJCQkJYVszXSA9ICFhWzFdOworCQkJ
CXJldHVybiBhWzBdOworCQkJfQorCisJCQlib29sIGFycls0XTsKKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWFyclswXSA9ICFpbjAueDsKKwkJCQlhcnJbMV0gPSAh
aW4wLnk7CisJCQkJYXJyWzJdID0gIWluMC56OworCQkJCWFyclszXSA9ICFpbjAudzsKKwkJCQlm
dW5jKGFycik7CisJCQkJb3V0MCA9IGJ2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclsz
XSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHRlc3RfaGVscGVy
cworCQlkZXNjICJDaGVjayB0aGF0IGhlbHBlciBmdW5jdGlvbnMgYXJlIHN1cHBvcnRlZCBwcm9w
ZXJseS4iCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMAkJPSBbIHZlYzQoMC4wLCAx
LjAsIDIuMCwgLTQuMCkgfCB2ZWM0KC03LjUsIDEyLjEyNSwgLTAuMjUsIDE2LjApIF07CisJCQlv
dXRwdXQgZmxvYXQgb3V0MAk9IFsgMS4wIHwgMS4wIF07CisJCX0KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2ZWM0IGdl
dCAoaW4gZmxvYXQgYXJyWzRdKTsKKwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0
IHZhbCk7CisJCQl2b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKTsKKwkJCWJvb2wgdGVz
dCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZik7CisJCQlib29sIGlzRXF1YWwgKGluIGZsb2F0
IGFbNF0sIGluIGZsb2F0IGJbNF0pOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZsb2F0
IGFycls0XTsKKwkJCQlzZXQoYXJyLCBpbjApOworCQkJCW5lZ2F0ZShhcnIpOworCQkJCW91dDAg
PSBmbG9hdCh0ZXN0KGFyciwgLWluMCkpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9h
dCBhYnNEaWZmICh2ZWM0IGEsIHZlYzQgYikgeyB2ZWM0IGQgPSBhYnMoYSAtIGIpOyByZXR1cm4g
bWF4KG1heChkLngsIGQueSksIG1heChkLnosIGQudykpOyB9CisJCQl2ZWM0IGdldCAoaW4gZmxv
YXQgYXJyWzRdKSB7IHJldHVybiB2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7
IH0KKwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCkgeyBhcnJbMF0gPSB2
YWwueDsgYXJyWzFdID0gdmFsLnk7IGFyclsyXSA9IHZhbC56OyBhcnJbM10gPSB2YWwudzsgfQor
CQkJdm9pZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSkgeyBzZXQoYXJyLCAtZ2V0KGFycikp
OyB9CisJCQlib29sIHRlc3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpIHsgcmV0dXJuIChh
YnNEaWZmKGdldChhcnIpLCByZWYpIDwgMC4xKTsgfQorCQkJYm9vbCBpc0VxdWFsIChpbiBmbG9h
dCBhWzRdLCBpbiBmbG9hdCBiWzRdKSB7IHJldHVybiAoYWJzRGlmZihnZXQoYSksIGdldChiKSkg
PCAwLjEpOyB9CisJCSIiCisJZW5kCisKKwljYXNlIGNvcHlfbG9jYWxfaW5fb25fY2FsbAorCQlk
ZXNjICJDaGVjayB0aGF0IGxvY2FsICdpbicgYXJndW1lbnRzIGFyZSBjb3BpZWQgb24gY2FsbCBh
bmQgZG9uJ3QgYWxpYXMuIgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAJCT0gWyB2
ZWM0KDAuMCwgMS4wLCAyLjAsIC00LjApIHwgdmVjNCgtNy41LCAxMi4xMjUsIC0wLjI1LCAxNi4w
KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MAk9IFsgdmVjNCgwLjAsIC0xLjAsIC0yLjAsIDQuMCkg
fCB2ZWM0KDcuNSwgLTEyLjEyNSwgMC4yNSwgLTE2LjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2ZWM0
IGdldCAoaW4gZmxvYXQgYXJyWzRdKTsKKwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2
ZWM0IHZhbCk7CisJCQl2b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKTsKKwkJCWJvb2wg
dGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZik7CisJCQlib29sIGlzRXF1YWwgKGluIGZs
b2F0IGFbNF0sIGluIGZsb2F0IGJbNF0pOworCisJCQlmbG9hdCBmdW5jIChpbiBmbG9hdCBhWzRd
LCBpbiBmbG9hdCBiWzRdKQorCQkJeworCQkJCWFbMF0gPSAyLjEyMzsKKwkJCQlhWzJdID0gLTQu
MTIzOworCQkJCXJldHVybiBpc0VxdWFsKGEsIGIpID8gMS4wIDogLTEuMDsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlmbG9hdCBhcnJbNF07CisJCQkJc2V0KGFyciwgaW4wKTsK
KwkJCQlvdXQwID0gaW4wICogZnVuYyhhcnIsIGFycik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisK
KwkJCWZsb2F0IGFic0RpZmYgKHZlYzQgYSwgdmVjNCBiKSB7IHZlYzQgZCA9IGFicyhhIC0gYik7
IHJldHVybiBtYXgobWF4KGQueCwgZC55KSwgbWF4KGQueiwgZC53KSk7IH0KKwkJCXZlYzQgZ2V0
IChpbiBmbG9hdCBhcnJbNF0pIHsgcmV0dXJuIHZlYzQoYXJyWzBdLCBhcnJbMV0sIGFyclsyXSwg
YXJyWzNdKTsgfQorCQkJdm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZlYzQgdmFsKSB7IGFy
clswXSA9IHZhbC54OyBhcnJbMV0gPSB2YWwueTsgYXJyWzJdID0gdmFsLno7IGFyclszXSA9IHZh
bC53OyB9CisJCQl2b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKSB7IHNldChhcnIsIC1n
ZXQoYXJyKSk7IH0KKwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZikgeyBy
ZXR1cm4gKGFic0RpZmYoZ2V0KGFyciksIHJlZikgPCAwLjEpOyB9CisJCQlib29sIGlzRXF1YWwg
KGluIGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0pIHsgcmV0dXJuIChhYnNEaWZmKGdldChhKSwg
Z2V0KGIpKSA8IDAuMSk7IH0KKwkJIiIKKwllbmQKKworCWNhc2UgY29weV9nbG9iYWxfaW5fb25f
Y2FsbAorCQlkZXNjICJDaGVjayB0aGF0IGdsb2JhbCAnaW4nIGFyZ3VtZW50cyBhcmUgY29waWVk
IG9uIGNhbGwgYW5kIGRvbid0IGFsaWFzLiIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQg
aW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcuNSwgMTIuMTI1LCAt
MC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQoMC4wLCAtMS4wLCAt
Mi4wLCA0LjApIHwgdmVjNCg3LjUsIC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdmVjNCBnZXQgKGluIGZsb2F0IGFycls0XSk7CisJCQl2b2lkIHNldCAob3V0IGZsb2F0
IGFycls0XSwgdmVjNCB2YWwpOworCQkJdm9pZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSk7
CisJCQlib29sIHRlc3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpOworCQkJYm9vbCBpc0Vx
dWFsIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRdKTsKKworCQkJZmxvYXQgZnVuYyAoaW4g
ZmxvYXQgYVs0XSwgaW4gZmxvYXQgYls0XSkKKwkJCXsKKwkJCQlhWzBdID0gMi4xMjM7CisJCQkJ
YVsyXSA9IC00LjEyMzsKKwkJCQlyZXR1cm4gaXNFcXVhbChhLCBiKSA/IDEuMCA6IC0xLjA7CisJ
CQl9CisKKwkJCWZsb2F0IGFycls0XTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlzZXQo
YXJyLCBpbjApOworCQkJCW91dDAgPSBpbjAgKiBmdW5jKGFyciwgYXJyKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKworCQkJZmxvYXQgYWJzRGlmZiAodmVjNCBhLCB2ZWM0IGIpIHsgdmVjNCBkID0g
YWJzKGEgLSBiKTsgcmV0dXJuIG1heChtYXgoZC54LCBkLnkpLCBtYXgoZC56LCBkLncpKTsgfQor
CQkJdmVjNCBnZXQgKGluIGZsb2F0IGFycls0XSkgeyByZXR1cm4gdmVjNChhcnJbMF0sIGFyclsx
XSwgYXJyWzJdLCBhcnJbM10pOyB9CisJCQl2b2lkIHNldCAob3V0IGZsb2F0IGFycls0XSwgdmVj
NCB2YWwpIHsgYXJyWzBdID0gdmFsLng7IGFyclsxXSA9IHZhbC55OyBhcnJbMl0gPSB2YWwuejsg
YXJyWzNdID0gdmFsLnc7IH0KKwkJCXZvaWQgbmVnYXRlIChpbm91dCBmbG9hdCBhcnJbNF0pIHsg
c2V0KGFyciwgLWdldChhcnIpKTsgfQorCQkJYm9vbCB0ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZl
YzQgcmVmKSB7IHJldHVybiAoYWJzRGlmZihnZXQoYXJyKSwgcmVmKSA8IDAuMSk7IH0KKwkJCWJv
b2wgaXNFcXVhbCAoaW4gZmxvYXQgYVs0XSwgaW4gZmxvYXQgYls0XSkgeyByZXR1cm4gKGFic0Rp
ZmYoZ2V0KGEpLCBnZXQoYikpIDwgMC4xKTsgfQorCQkiIgorCWVuZAorCisJY2FzZSBjb3B5X2xv
Y2FsX2lub3V0X29uX2NhbGwKKwkJZGVzYyAiQ2hlY2sgdGhhdCBsb2NhbCAnaW4nIGFyZ3VtZW50
cyBhcmUgY29waWVkIG9uIGNhbGwgYW5kIGRvbid0IGFsaWFzLiIKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcu
NSwgMTIuMTI1LCAtMC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQo
MC4wLCAtMS4wLCAtMi4wLCA0LjApIHwgdmVjNCg3LjUsIC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdmVjNCBnZXQgKGluIGZsb2F0IGFycls0XSk7CisJCQl2b2lkIHNl
dCAob3V0IGZsb2F0IGFycls0XSwgdmVjNCB2YWwpOworCQkJdm9pZCBuZWdhdGUgKGlub3V0IGZs
b2F0IGFycls0XSk7CisJCQlib29sIHRlc3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpOwor
CQkJYm9vbCBpc0VxdWFsIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRdKTsKKworCQkJZmxv
YXQgZnVuYyAoaW5vdXQgZmxvYXQgYVs0XSwgaW5vdXQgZmxvYXQgYls0XSkKKwkJCXsKKwkJCQlu
ZWdhdGUoYSk7CisJCQkJcmV0dXJuIGlzRXF1YWwoYSwgYikgPyAxLjAgOiAtMS4wOworCQkJfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZsb2F0IGFycls0XTsKKwkJCQlzZXQoYXJyLCBp
bjApOworCQkJCWZsb2F0IG0gPSBmdW5jKGFyciwgYXJyKTsgLy8gcmV0dXJucyAtMS4wCisJCQkJ
ZmxvYXQgbiA9IGZsb2F0KHRlc3QoYXJyLCBpbjApIHx8IHRlc3QoYXJyLCAtaW4wKSk7CisJCQkJ
b3V0MCA9IGluMCAqIG0gKiBuOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9hdCBhYnNE
aWZmICh2ZWM0IGEsIHZlYzQgYikgeyB2ZWM0IGQgPSBhYnMoYSAtIGIpOyByZXR1cm4gbWF4KG1h
eChkLngsIGQueSksIG1heChkLnosIGQudykpOyB9CisJCQl2ZWM0IGdldCAoaW4gZmxvYXQgYXJy
WzRdKSB7IHJldHVybiB2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7IH0KKwkJ
CXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCkgeyBhcnJbMF0gPSB2YWwueDsg
YXJyWzFdID0gdmFsLnk7IGFyclsyXSA9IHZhbC56OyBhcnJbM10gPSB2YWwudzsgfQorCQkJdm9p
ZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSkgeyBzZXQoYXJyLCAtZ2V0KGFycikpOyB9CisJ
CQlib29sIHRlc3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpIHsgcmV0dXJuIChhYnNEaWZm
KGdldChhcnIpLCByZWYpIDwgMC4xKTsgfQorCQkJYm9vbCBpc0VxdWFsIChpbiBmbG9hdCBhWzRd
LCBpbiBmbG9hdCBiWzRdKSB7IHJldHVybiAoYWJzRGlmZihnZXQoYSksIGdldChiKSkgPCAwLjEp
OyB9CisJCSIiCisJZW5kCisKKwljYXNlIGNvcHlfZ2xvYmFsX2lub3V0X29uX2NhbGwKKwkJZGVz
YyAiQ2hlY2sgdGhhdCBnbG9iYWwgJ2luJyBhcmd1bWVudHMgYXJlIGNvcGllZCBvbiBjYWxsIGFu
ZCBkb24ndCBhbGlhcy4iCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMAkJPSBbIHZl
YzQoMC4wLCAxLjAsIDIuMCwgLTQuMCkgfCB2ZWM0KC03LjUsIDEyLjEyNSwgLTAuMjUsIDE2LjAp
IF07CisJCQlvdXRwdXQgdmVjNCBvdXQwCT0gWyB2ZWM0KDAuMCwgLTEuMCwgLTIuMCwgNC4wKSB8
IHZlYzQoNy41LCAtMTIuMTI1LCAwLjI1LCAtMTYuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZlYzQg
Z2V0IChpbiBmbG9hdCBhcnJbNF0pOworCQkJdm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZl
YzQgdmFsKTsKKwkJCXZvaWQgbmVnYXRlIChpbm91dCBmbG9hdCBhcnJbNF0pOworCQkJYm9vbCB0
ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZlYzQgcmVmKTsKKwkJCWJvb2wgaXNFcXVhbCAoaW4gZmxv
YXQgYVs0XSwgaW4gZmxvYXQgYls0XSk7CisKKwkJCWZsb2F0IGZ1bmMgKGluIGZsb2F0IGFbNF0s
IGluIGZsb2F0IGJbNF0pCisJCQl7CisJCQkJbmVnYXRlKGEpOworCQkJCXJldHVybiBpc0VxdWFs
KGEsIGIpID8gMS4wIDogLTEuMDsKKwkJCX0KKworCQkJZmxvYXQgYXJyWzRdOworCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCXNldChhcnIsIGluMCk7CisJCQkJZmxvYXQgbSA9IGZ1bmMoYXJy
LCBhcnIpOyAvLyByZXR1cm5zIC0xLjAKKwkJCQlmbG9hdCBuID0gZmxvYXQodGVzdChhcnIsIGlu
MCkgfHwgdGVzdChhcnIsIC1pbjApKTsKKwkJCQlvdXQwID0gaW4wICogbSAqIG47CisJCQkJJHtP
VVRQVVR9CisJCQl9CisKKwkJCWZsb2F0IGFic0RpZmYgKHZlYzQgYSwgdmVjNCBiKSB7IHZlYzQg
ZCA9IGFicyhhIC0gYik7IHJldHVybiBtYXgobWF4KGQueCwgZC55KSwgbWF4KGQueiwgZC53KSk7
IH0KKwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBhcnJbNF0pIHsgcmV0dXJuIHZlYzQoYXJyWzBdLCBh
cnJbMV0sIGFyclsyXSwgYXJyWzNdKTsgfQorCQkJdm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0s
IHZlYzQgdmFsKSB7IGFyclswXSA9IHZhbC54OyBhcnJbMV0gPSB2YWwueTsgYXJyWzJdID0gdmFs
Lno7IGFyclszXSA9IHZhbC53OyB9CisJCQl2b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRd
KSB7IHNldChhcnIsIC1nZXQoYXJyKSk7IH0KKwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQgYXJyWzRd
LCB2ZWM0IHJlZikgeyByZXR1cm4gKGFic0RpZmYoZ2V0KGFyciksIHJlZikgPCAwLjEpOyB9CisJ
CQlib29sIGlzRXF1YWwgKGluIGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0pIHsgcmV0dXJuIChh
YnNEaWZmKGdldChhKSwgZ2V0KGIpKSA8IDAuMSk7IH0KKwkJIiIKKwllbmQKKworIwkJCXZlYzQg
Z2V0IChpbiBmbG9hdCBhcnJbNF0pOworIwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2
ZWM0IHZhbCk7CisjCQkJdm9pZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSk7CisjCQkJYm9v
bCB0ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZlYzQgcmVmKTsKKyMJCQlib29sIGlzRXF1YWwgKGlu
IGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0pOworCisjCQkJZmxvYXQgYWJzRGlmZiAodmVjNCBh
LCB2ZWM0IGIpIHsgdmVjNCBkID0gYWJzKGEgLSBiKTsgcmV0dXJuIG1heChtYXgoZC54LCBkLnkp
LCBtYXgoZC56LCBkLncpKTsgfQorIwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBhcnJbNF0pIHsgcmV0
dXJuIHZlYzQoYXJyWzBdLCBhcnJbMV0sIGFyclsyXSwgYXJyWzNdKTsgfQorIwkJCXZvaWQgc2V0
IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCkgeyBhcnJbMF0gPSB2YWwueDsgYXJyWzFdID0g
dmFsLnk7IGFyclsyXSA9IHZhbC56OyBhcnJbM10gPSB2YWwudzsgfQorIwkJCXZvaWQgbmVnYXRl
IChpbm91dCBmbG9hdCBhcnJbNF0pIHsgc2V0KGFyciwgLWdldChhcnIpKTsgfQorIwkJCWJvb2wg
dGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZikgeyByZXR1cm4gKGFic0RpZmYoZ2V0KGFy
ciksIHJlZikgPCAwLjEpOyB9CisjCQkJYm9vbCBpc0VxdWFsIChpbiBmbG9hdCBhWzRdLCBpbiBm
bG9hdCBiWzRdKSB7IHJldHVybiAoYWJzRGlmZihnZXQoYSksIGdldChiKSkgPCAwLjEpOyB9CisK
K2VuZCAjIGFycmF5X2FyZ3VtZW50cworCisjZ3JvdXAgcXVhbGlmaWVycyAiRnVuY3Rpb24gUGFy
YW1ldGVyIFF1YWxpZmllcnMiCisjCisjZW5kICMgcXVhbGlmaWVycworCitncm91cCBjb250cm9s
X2Zsb3cgIkNvbnRyb2wgRmxvdyBJbiBGdW5jdGlvbnMiCisKKwljYXNlIHNpbXBsZV9yZXR1cm4K
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0wLjUgfCAxLjUgXTsKKwkJ
CW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9h
dCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCXJldHVybiAtYTsKKwkJCQlhID0gYSAqIC0xLjA7
CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHJldHVybl9pbl9pZgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQg
aW4wCQk9IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0x
LjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJCQl7CisJCQkJaWYg
KGEgIT0gMC4wKQorCQkJCQlyZXR1cm4gLWE7CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl9pbl9lbHNlCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41IF07CisJCQlv
dXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQg
ZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlpZiAoYSA9PSAwLjApCisJCQkJCXJldHVybiAxLjA7
CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gLWE7CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl9pbl9sb29wCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41IF07CisJCQlv
dXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQg
ZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDE7IGkrKykKKwkJ
CQkJcmV0dXJuIC1hOworCQkJCXJldHVybiAxLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZXR1cm5faW5fbG9vcF9pZgorCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0
IG91dDAJPSBbIDAuNSB8IC0xLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0
IGEpCisJCQl7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspCisJCQkJeworCQkJCQlp
ZiAoaSA9PSAxKQorCQkJCQkJcmV0dXJuIGE7CisJCQkJCWVsc2UgaWYgKGkgPiAxKQorCQkJCQkJ
cmV0dXJuIC0xLjA7CisJCQkJCWEgPSAtYTsKKwkJCQl9CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl9hZnRl
cl9sb29wCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41
IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDU7
IGkrKykKKwkJCQkJYSA9IC1hOworCQkJCXJldHVybiBhOworCQkJfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX2FmdGVyX2JyZWFrCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41IF07CisJCQlvdXRwdXQg
ZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAo
ZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKKwkJCQl7CisJ
CQkJCWEgPSAtYTsKKwkJCQkJaWYgKGkgPT0gNCkKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQly
ZXR1cm4gYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHJldHVybl9hZnRlcl9jb250aW51ZQorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQg
aW4wCQk9IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0x
LjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJCQl7CisJCQkJZm9y
IChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisJCQkJeworCQkJCQlpZiAoaSA9PSA0KQorCQkJCQkJ
Y29udGludWU7CisJCQkJCWEgPSAtYTsKKwkJCQl9CisJCQkJcmV0dXJuIGE7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZXR1cm5faW5fbmVzdGVk
X2xvb3AKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0wLjUgfCAxLjUg
XTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlmbG9hdCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgNjsg
aSsrKQorCQkJCXsKKwkJCQkJYSA9IC1hOworCQkJCQlmb3IgKGludCBqID0gMDsgaiA8IDQ7IGor
KykKKwkJCQkJeworCQkJCQkJYSA9IC1hOworCQkJCQkJaWYgKGkgPT0gMSkKKwkJCQkJCQlyZXR1
cm4gYTsKKwkJCQkJfQorCQkJCQlpZiAoaSA9PSA0KQorCQkJCQkJcmV0dXJuIDEuMDsKKwkJCQl9
CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHJldHVybl9hZnRlcl9sb29wX3NlcXVlbmNlCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0
MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkK
KwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykgLy8gbmVnYXRlIGEKKwkJCQl7
CisJCQkJCWEgPSAtYTsKKwkJCQkJaWYgKGkgPT0gNCkKKwkJCQkJCWEgPSAtYTsKKwkJCQl9CisK
KwkJCQlmb3IgKGludCBpID0gNjsgaSA8IDEwOyBpKyspIC8vIGtlZXAgYQorCQkJCXsKKwkJCQkJ
aWYgKGkgPT0gOCkKKwkJCQkJCWNvbnRpbnVlOworCQkJCQllbHNlIGlmIChpID09IDkpCisJCQkJ
CQlicmVhazsKKwkJCQkJYSA9IC1hOworCQkJCX0KKworCQkJCXJldHVybiBhOworCQkJfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWl4ZWRfcmV0dXJuX2Jy
ZWFrX2NvbnRpbnVlCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41
IHwgMS41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsg
aSA8IDY7IGkrKykKKwkJCQl7CisJCQkJCWlmIChpID09IDApCisJCQkJCQljb250aW51ZTsKKwkJ
CQkJZWxzZSBpZiAoaSA9PSAxKQorCQkJCQl7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoaSA9PSAz
KQorCQkJCQkJYnJlYWs7CisJCQkJCWVsc2UKKwkJCQkJCXJldHVybiBhOworCQkJCQlhID0gLWE7
CisJCQkJfQorCisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIGNvbnRyb2xfZmxvdworCitncm91cCBtaXNjICJNaXNjZWxs
YW5lb3VzIgorCisJY2FzZSBtdWx0aV9hcmdfZmxvYXQKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgLTIuMCwgMC41KSB8IHZlYzQoMi4wLCAyLjUs
IDQuMCwgLTcuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07ICMg
LXN1bShpbjApCisJCX0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBzdW0odmVjNCB2KSB7IHJldHVybiAodi54
ICsgdi55ICsgdi56ICsgdi53KTsgfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCBhLCB2ZWMzIGIs
IHZlYzIgYywgdmVjMiBkLCB2ZWM0IGUpCisJCQl7CisJCQkJcmV0dXJuIC1zdW0odmVjNChhLCBi
KSArIHZlYzQoYywgZCkpICsgc3VtKGUpOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wLnksIGluMC54encsIGluMC53eiwgaW4w
Lnl4LCBpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtdWx0
aV9hcmdfaW50CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAJCT0gWyBpdmVjNCgt
MSwgMCwgMiwgMikgfCBpdmVjNCgxLCA0LCAtOCwgMikgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJ
PSBbIC0zIHwgMSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
aW50IHN1bShpdmVjNCB2KSB7IHJldHVybiAodi54ICsgdi55ICsgdi56ICsgdi53KTsgfQorCisJ
CQlpbnQgZnVuYyAoaW50IGEsIGl2ZWMzIGIsIGl2ZWMyIGMsIGl2ZWMyIGQsIGl2ZWM0IGUpCisJ
CQl7CisJCQkJcmV0dXJuIC1zdW0oaXZlYzQoYSwgYikgKyBpdmVjNChjLCBkKSkgKyBzdW0oZSk7
CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
ZnVuYyhpbjAueSwgaW4wLnh6dywgaW4wLnd6LCBpbjAueXgsIGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFyZ3VtZW50X2V2YWxfb3JkZXJfMQorCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAk9IFsgIDAgfCAxIHwgMyB8IDUgXTsKKwkJCW91dHB1
dCBpbnQgb3V0MAk9IFsgLTEgfCA1IHwgMTEgfCAxNyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGZ1
bmMgKGZsb2F0IGEsIGludCBiLCBib29sIGMsIGludCBkKQorCQkJeworCQkJCWlmIChjKQorCQkJ
CQlyZXR1cm4gYiArIGludChhKSArIGQ7CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gLTE7CisJCQl9
CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdjAgPSBm
bG9hdChpbjApOworCQkJCWludCB2MSA9IGluMDsKKwkJCQlvdXQwID0gZnVuYygodjAgKz0gMS4w
KSwgdjErKywgKHYwID4gMS41KSwgdjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBhcmd1bWVudF9ldmFsX29yZGVyXzIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGludCBpbjAJPSBbIDAgfCAtMSB8IDMgfCA1IF07CisJCQlvdXRwdXQgaW50IG91dDAJPSBbIDMg
fCAtMSB8IDkgfCAxMyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGc7CisKKwkJCWludCBtb2RHIChp
bnQgdikKKwkJCXsKKwkJCQlnICs9IHY7CisJCQkJcmV0dXJuIHY7CisJCQl9CisKKwkJCWludCBm
dW5jIChmbG9hdCBhLCBpbnQgYiwgYm9vbCBjLCBpbnQgZCkKKwkJCXsKKwkJCQlpZiAoYykKKwkJ
CQkJcmV0dXJuIGIgKyBpbnQoYSkgKyBkOworCQkJCWVsc2UKKwkJCQkJcmV0dXJuIC0xOworCQkJ
fQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5j
KGZsb2F0KGcgPSBpbjApLCBtb2RHKDIpLCAtLWcgPiAwLCBnKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2luZ19yZXR1cm5zCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAgPSBbIDEuMCB8IDIuMCB8IDMuMCBdOworCQkJb3V0cHV0IGZsb2F0
IG91dDAgPSBbIC0xLjAgfCAtMi4wIHwgLTMuMCBdOworCQl9CisJCWJvdGggIiIKKwkJCS8vIE5v
dGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkIGlm
IG5vIHJldHVybgorCQkJLy8gc3RhdGVtZW50IGhhcyBiZWVuIGV4ZWN1dGVkLiBJbiB0aGlzIGNh
c2UgZnVuYygpIGlzIGNhbGxlZCBvbmx5IHdpdGgKKwkJCS8vIHBvc2l0aXZlIHZhbHVlcy4KKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0
IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJaWYgKGYgPiAwLjApCisJCQkJCXJldHVybiAtZjsK
KwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
ZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBtaXNj
CisKK2dyb3VwIGludmFsaWQgIkludmFsaWQgRnVuY3Rpb25zIgorCWNhc2UgYnJlYWtfaW5fYm9k
eQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKCkKKwkJCXsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJ
dm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY29udGludWVfaW5fYm9keQorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQl2b2lkIGZ1bmMgKCkKKwkJCXsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJdm9pZCBtYWlu
ICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX3ZhbHVlX2Zyb21fdm9pZF9mdW5jdGlvbgorCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQl2b2lkIGZ1bmMgKCkKKwkJCXsKKwkJCQlyZXR1cm4gMS4wOworCQkJfQorCisJCQl2
b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBleHRyYV9hcmd1bWVudHMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
dm9pZCBmdW5jIChmbG9hdCBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQlmdW5jKDEuMCwgMi4wKTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgx
LjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2FyZ3VtZW50cworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisJCQl2b2lkIGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQor
CQkJeworCQkJCWZ1bmMoKTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2FyZ3VtZW50X3R5cGUKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworCQkJdm9pZCBmdW5jIChpbiBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJ
CXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBhcmd1bWVudF9iYXNldHlwZV9taXNtYXRjaAorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQl2b2lkIGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQl9CisK
KwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZ1bmMoMik7CisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRf
c2NhbGFyX3ZlY3Rvcl9taXNtYXRjaAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKHZlYzIgZikKKwkJ
CXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJZnVuYygyLjApOworCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGFyZ3VtZW50X3ZlY3Rvcl9zaXplX21pc21hdGNoCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAo
dmVjMyBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQlmdW5jKHZl
YzIoMi4wKSk7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgZHVwbGljYXRlX2Z1bmN0aW9uCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQg
ZnVuYyAodmVjMyBmKTsKKworCQkJdm9pZCBmdW5jICh2ZWMzIGYpCisJCQl7CisJCQl9CisKKwkJ
CXZvaWQgZnVuYyAodmVjMyBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBwcm90b3R5cGVfbWlzbWF0Y2hfcmV0dXJuX3R5cGUKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9p
ZCBmdW5jICh2ZWMzIGYpOworCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCisJCQlmbG9hdCBmdW5jICh2ZWMzIGYp
CisJCQl7CisJCQkJcmV0dXJuIGYueDsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcHJvdG90
eXBlX3Vuc3BlY2lmaWVkX2FycmF5X3NpemUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9pZCBmdW5jICh2ZWMzIGZb
XSk7CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNhbGxfbWlzbWF0Y2hfYXJn
dW1lbnRfYXJyYXlfc2l6ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKHZlYzMgZlszXSk7CisJCQl2
b2lkIGZ1bmMgKHZlYzMgZlszXSkKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7
CisJCQkJdmVjMyBhcnJheVs0XTsKKwkJCQlmdW5jKGFycmF5KTsKKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwcm90b3R5
cGVfbWlzbWF0Y2hfYXJndW1lbnRfY29uc3QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9pZCBmdW5jICh2ZWMzIGYp
OworCQkJdm9pZCBmdW5jIChjb25zdCB2ZWMzIGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFp
biAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHByb3RvdHlwZV9taXNtYXRjaF9hcmd1bWVudF9hcnJheV9j
b25zdAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKHZlYzMgZlszXSk7CisJCQl2b2lkIGZ1bmMgKGNv
bnN0IHZlYzMgZlszXSkKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgcHJvdG90eXBlX21pc21hdGNoX2FycmF5X2lub3V0CisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVu
YyAob3V0IHZlYzMgZik7CisJCQl2b2lkIGZ1bmMgKGlub3V0IHZlYzMgZikKKwkJCXsKKwkJCX0K
KworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2luZ19yZXR1cm5fdHlwZQor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQlmdW5jIChmbG9hdCBmKTsKKwkJCWZ1bmMgKGlub3V0IHZlYzMgZlszXSkKKwkJ
CXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY2FsbF9iZWZvcmVf
ZGVmaW5pdGlvbgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQlmdW5jKDEuMCk7
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKworCQkJdm9p
ZCBmdW5jIChmbG9hdCBmKQorCQkJeworCQkJfQorCisJCSIiCisJZW5kCisKKwljYXNlIHJldHVy
bl9hcnJheV9pbl9zdHJ1Y3QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJc3RydWN0IEZvbworCQkJeworCQkJCWZsb2F0
IGY7CisJCQkJZmxvYXQgYXJyWzJdOworCQkJfTsKKworCQkJRm9vIGZ1bmMgKCkKKwkJCXsKKwkJ
CQlGb28gZjsKKwkJCQlmLmYgPSAxLjA7CisJCQkJZi5hcnJbMF0gPSAyLjA7CisJCQkJcmV0dXJu
IGY7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFyZ3VtZW50X3By
ZWNpc2lvbl9vdmVybG9hZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQlmbG9hdCBmdW5jIChsb3dwIGZsb2F0IGYpCisJ
CQl7CisJCQkJcmV0dXJuIGY7CisJCQl9CisKKwkJCWZsb2F0IGZ1bmMgKG1lZGl1bXAgZmxvYXQg
ZikKKwkJCXsKKwkJCQlyZXR1cm4gZjsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJ
CQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYXJndW1lbnRfaW5fb3V0X292ZXJsb2FkCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAo
aW4gZmxvYXQgZikKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBmdW5jIChvdXQgZmxvYXQgZikKKwkJ
CXsKKwkJCQlmID0gMS4wOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBhcmd1bWVudF9pbl9pbm91dF9vdmVybG9hZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKGluIGZs
b2F0IGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgZnVuYyAoaW5vdXQgZmxvYXQgZikKKwkJCXsK
KwkJCQlmID0gLWY7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFy
Z3VtZW50X291dF9pbm91dF9vdmVybG9hZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIGZ1bmMgKG91dCBmbG9h
dCBmKQorCQkJeworCQkJCWYgPSAtMS4wOworCQkJfQorCisJCQl2b2lkIGZ1bmMgKGlub3V0IGZs
b2F0IGYpCisJCQl7CisJCQkJZiA9IC1mOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSByZXR1cm5fdHlwZV9vdmVybG9hZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQlmbG9hdCBmdW5jIChm
bG9hdCBmKQorCQkJeworCQkJCXJldHVybiBmOworCQkJfQorCisJCQlpbnQgZnVuYyAoZmxvYXQg
ZikKKwkJCXsKKwkJCQlyZXR1cm4gaW50KGYpOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJ
CXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSByZXR1cm5fdHlwZV9wcmVjaXNpb25fb3ZlcmxvYWQKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
bG93cCBmbG9hdCBmdW5jIChmbG9hdCBmKQorCQkJeworCQkJCXJldHVybiBmOworCQkJfQorCisJ
CQltZWRpdW1wIGZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJuIGY7CisJCQl9
CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl90eXBlX2NvbnN0X292
ZXJsb2FkCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJu
IGY7CisJCQl9CisKKwkJCWNvbnN0IGZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0
dXJuIGY7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl93
aXRob3V0X3ZhbHVlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJ
cmV0dXJuOworCQkJCXJldHVybiAxLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGxvY2FsX2Z1bmN0aW9uX3Byb3RvdHlwZQorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQl2b2lkIG1haW4g
KCkKKwkJCXsKKwkJCQlmbG9hdCBmdW5jIChmbG9hdCBmKTsKKworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxvY2FsX2Z1
bmN0aW9uX2RlZmluaXRpb24KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJZmxv
YXQgZnVuYyAoZmxvYXQgZikKKwkJCQl7CisJCQkJCXJldHVybiAxLjA7CisJCQkJfQorCisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbmFtZV90eXBlX2NvbmZsaWN0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXN0cnVjdCBmb28geyBmbG9hdCBh
OyB9CisKKwkJCWZsb2F0IGZvbyAoZmxvYXQgZikKKwkJCXsKKwkJCQlyZXR1cm4gMS4wOworCQkJ
fQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdF9vdmVybG9hZAorCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQl2b2lkIGZ1bmMgKHZlYzMgZikKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBmdW5jIChj
b25zdCB2ZWMzIGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVuaWZvcm1fbG9jYWwKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9pZCBmdW5jICh2ZWMzIGYpCisJCQl7CisJ
CQkJdW5pZm9ybSBmbG9hdCB1OworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkk
e1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB2YXJ5aW5nX2xvY2FsCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAodmVjMyBmKQorCQkJewor
CQkJCXZhcnlpbmcgZmxvYXQgdjsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgYXR0cmlidXRlX2xvY2FsCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAodmVjMyBmKQorCQkJ
eworCQkJCWF0dHJpYnV0ZSBmbG9hdCBhOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSB1bmlmb3JtX2FyZ3VtZW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAodW5pZm9y
bSB2ZWMzIGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHZhcnlpbmdfYXJndW1lbnQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJdm9pZCBmdW5jICh2YXJ5aW5nIHZlYzMgZikK
KwkJCXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXR0cmlidXRl
X2FyZ3VtZW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZvaWQgZnVuYyAoYXR0cmlidXRlIHZlYzMgZikKKwkJCXsK
KwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9yZXR1cm5f
dHlwZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQl1bmlmb3JtIGZsb2F0IGZ1bmMgKHZlYzMgZikKKwkJCXsKKwkJCQly
ZXR1cm4gZi54OworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2YXJ5
aW5nX3JldHVybl90eXBlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCXZhcnlpbmcgZmxvYXQgZnVuYyAodmVjMyBmKQor
CQkJeworCQkJCXJldHVybiBmLng7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGF0dHJpYnV0ZV9yZXR1cm5fdHlwZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQlhdHRyaWJ1dGUgZmxvYXQg
ZnVuYyAodmVjMyBmKQorCQkJeworCQkJCXJldHVybiBmLng7CisJCQl9CisKKwkJCXZvaWQgbWFp
biAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1haW5faW52YWxpZF9yZXR1cm5fdHlwZQorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQlmbG9hdCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
MS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWFpbl9oYXNfYXJndW1lbnRzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCXZvaWQgbWFpbiAoZmxvYXQgZikKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYWluX21pc3Npbmdf
cmV0dXJuX3R5cGUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHdyaXRlX2Nv
bnN0X2FyZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQlmdW5jIChjb25zdCBmbG9hdCBmKQorCQkJeworCQkJCWYgPSAx
LjA7CisJCQl9CisKKwkJCW1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB3cml0ZV9jb25zdF9hcnJh
eV9hcmcKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJZnVuYyAoY29uc3QgZmxvYXQgZlszXSkKKwkJCXsKKwkJCQlmWzBd
ID0gMS4wOworCQkJfQorCisJCQltYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbW9kaWZ5X2NvbnN0
X2FyZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWludCBmdW5jIChjb25zdCBpbnQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0
dXJuIDIgKiBhOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMykpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bml0X2NvbnN0X2xvY2FsX2Zyb21fY29uc3RfYXJnCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGZ1bmMgKGNvbnN0IGludCBhKQor
CQkJeworCQkJCWNvbnN0IGludCBiID0gLWE7CisJCQkJcmV0dXJuIDIgKiBiOworCQkJfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGZ1
bmMoMykpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcnJheV9zaXplX2Zyb21fY29uc3Rf
YXJnCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJaW50IGZ1bmMgKGNvbnN0IGludCBhKQorCQkJeworCQkJCWludCBhcnJbYV07CisJCQkJ
YXJyWzFdID0gMzsKKwkJCQlyZXR1cm4gYXJyWzFdOworCQkJfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMykpOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBkb3VibGVfZGVjbGFyZQorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpOworCQkJZmxvYXQgZnVuYyAoZmxvYXQgZik7
CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJuIC1mOworCQkJfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KGZ1bmMoMS4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0
YS9nbGVzMi9zaGFkZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFk
ZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDg1YTE2YTYz
YjM4Mzg4NDQwMjMwMTIxMmE3NjAzZDg4MzY5ZDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvaW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9ucy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAnaW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9u
cyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CisKK3Zh
ciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93Lmxv
Y2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHF1
ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZh
bHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9u
ZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGli
cmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMu
dGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZGF0YS9nbGVzMi9zaGFkZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMudGVzdApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjQxZGEyMjgyMGFmMTM5ZDdlN2Q1Mzk3NTFlNzFhOGIzZTUyMDk3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9kYXRhL2dsZXMyL3NoYWRlcnMvaW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9ucy50ZXN0CkBAIC0w
LDAgKzEsOTAgQEAKKworY2FzZSB0ZXh0dXJlMmRfYmlhc19pbl92ZXJ0ZXgKKwlleHBlY3QgY29t
cGlsZV9mYWlsCisJdmFsdWVzIHt9CisKKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQl1bmlmb3JtIGxvd3Agc2FtcGxlcjJEIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJdmVjNCByID0gdGV4dHVyZTJEKHMsIHZlYzIoMS4wKSwgMS4wKTsKKwkJCSR7VkVSVEVYX09V
VFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjApOworCQl9CisJIiIKK2VuZAorCitjYXNlIHRleHR1cmVjdWJl
X2JpYXNfaW5fdmVydGV4CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCisJdmVy
dGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBsb3dwIHNhbXBsZXJD
dWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmVjNCByID0gdGV4dHVyZUN1YmUocywg
dmVjMygxLjApLCAxLjApOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVu
dCAiIgorCQl2b2lkIG1haW4oKQorCQl7CisJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJ
CX0KKwkiIgorZW5kCisKK2Nhc2UgdGV4dHVyZTJkbG9kX2luX2ZyYWdtZW50CisJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIK
KwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtGUkFHTUVOVF9E
RUNMQVJBVElPTlN9CisJCXVuaWZvcm0gc2FtcGxlcjJEIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJETG9kKHMsIHZlYzIoMCksIDEuMCk7CisJCX0K
KwkiIgorZW5kCisKK2Nhc2UgdGV4dHVyZWN1YmVsb2RfaW5fZnJhZ21lbnQKKwlleHBlY3QgY29t
cGlsZV9mYWlsCisJdmFsdWVzIHt9CisKKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgor
CWZyYWdtZW50ICIiCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJdW5pZm9ybSBzYW1wbGVyQ3ViZSBzOworCisJCXZvaWQgbWFpbigpCisJ
CXsKKwkJCWdsX0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlTG9kKHMsIHZlYzMoMCksIDEuMCk7CisJ
CX0KKwkiIgorZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9rZXl3b3Jkcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMy
L3NoYWRlcnMva2V5d29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzdiNTc2Y2E0YmM4MTg0YTZkNGU0
MzNmZDZlNjE4ZWQ5NmE5Yzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMva2V5d29y
ZHMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFk
ZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1l
ID0gJ2tleXdvcmRzJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsg
Ii4iKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMg
PSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFy
IHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklD
b21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworCittb2R1bGVzLnNoYXJlZC5n
bHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMva2V5d29yZHMudGVzdCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMi9zaGFkZXJzL2tleXdvcmRzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZmYzM5MDY1NDJmYmI4MGUz
ZDMxZDEzOGZmMDcxOTBlYjU2YWUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2tl
eXdvcmRzLnRlc3QKQEAgLTAsMCArMSwxNjEzIEBACisjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZC4gRG8gTk9UIG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhlcgorIyBt
b2RpZnkgdGhlIGdlbmVyYXRpbmcgc2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2VzIHdpbGwg
YmUgbG9zdCEKKworZ3JvdXAga2V5d29yZHMgIlVzYWdlIG9mIGtleXdvcmRzIGFzIGlkZW50aWZp
ZXJzLiIKKworCWNhc2UgYXR0cmlidXRlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVz
IHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxv
YXQgYXR0cmlidXRlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNh
c2UgY29uc3QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBjb25zdCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVuaWZvcm0KKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1bmlmb3JtID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2UgdmFyeWluZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCWZsb2F0IHZhcnlpbmcgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisJY2FzZSBicmVhaworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGJyZWFrID0g
MS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgY29udGludWUKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBjb250aW51ZSA9IDEuMDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGRvCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJZmxvYXQgZG8gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBmb3IKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmb3IgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB3aGlsZQorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IHdoaWxlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCWNhc2UgaWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBp
ZiA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGVsc2UKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBlbHNlID0gMS4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW4KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlmbG9hdCBpbiA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNl
IG91dAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IG91dCA9IDEuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlub3V0CisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJZmxvYXQgaW5vdXQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisJY2FzZSBmbG9hdAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQor
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGZs
b2F0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW50CisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaW50ID0gMS4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugdm9pZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCWZsb2F0IHZvaWQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBib29sCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgYm9vbCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHRydWUKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB0cnVlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCWNhc2UgZmFsc2UKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBmYWxzZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGxv
d3AKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBsb3dwID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgbWVkaXVtcAorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWZsb2F0IG1lZGl1bXAgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBoaWdocAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7
fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0
IGhpZ2hwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgcHJl
Y2lzaW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgcHJlY2lzaW9uID0gMS4w
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW52YXJpYW50CisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaW52YXJpYW50ID0gMS4wOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZGlzY2FyZAorCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IGRpc2NhcmQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisJY2FzZSByZXR1cm4KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBy
ZXR1cm4gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBtYXQy
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgbWF0MiA9IDEuMDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIG1hdDMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlmbG9hdCBtYXQzID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCWNhc2UgbWF0NAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IG1hdDQgPSAx
LjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB2ZWMyCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdmVjMiA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIHZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCB2ZWMzID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
dmVjNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHZlYzQgPSAxLjA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpdmVjMgorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWZsb2F0IGl2ZWMyID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2UgaXZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBp
dmVjMyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGl2ZWM0
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaXZlYzQgPSAxLjA7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBidmVjMgorCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IGJ2ZWMyID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCWNhc2UgYnZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBidmVj
MyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGJ2ZWM0CisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgYnZlYzQgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMkQKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMkQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBzYW1wbGVyQ3ViZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWZsb2F0IHNhbXBsZXJDdWJlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCWNhc2Ugc3RydWN0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgc3RydWN0
ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBrZXl3b3Jk
cworZ3JvdXAgcmVzZXJ2ZWRfa2V5d29yZHMgIlVzYWdlIG9mIHJlc2VydmVkIGtleXdvcmRzIGFz
IGlkZW50aWZpZXJzLiIKKworCWNhc2UgYXNtCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgYXNtID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
Y2xhc3MKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBjbGFzcyA9IDEuMDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVuaW9uCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgdW5pb24gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBlbnVtCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
ZW51bSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHR5cGVk
ZWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB0eXBlZGVmID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgdGVtcGxhdGUKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB0ZW1wbGF0ZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIHRoaXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCB0aGlzID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
cGFja2VkCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgcGFja2VkID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZ290bworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGdvdG8gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBzd2l0Y2gKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBzd2l0Y2ggPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBk
ZWZhdWx0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZGVmYXVsdCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlubGluZQorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGlubGluZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIG5vaW5saW5lCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJZmxvYXQgbm9pbmxpbmUgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisJY2FzZSB2b2xhdGlsZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHZvbGF0
aWxlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgcHVibGlj
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgcHVibGljID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc3RhdGljCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJZmxvYXQgc3RhdGljID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2UgZXh0ZXJuCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
ZXh0ZXJuID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZXh0
ZXJuYWwKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBleHRlcm5hbCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGludGVyZmFjZQorCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGludGVyZmFjZSA9IDEuMDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGZsYXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCBmbGF0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CWNhc2UgbG9uZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGxvbmcgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzaG9ydAorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHNob3J0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2UgZG91YmxlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgZG91YmxlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNh
c2UgaGFsZgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGhhbGYgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBmaXhlZAorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGZpeGVkID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCWNhc2UgdW5zaWduZWQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCB1bnNpZ25lZCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwlj
YXNlIHN1cGVycAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHN1cGVycCA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlucHV0CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaW5wdXQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisJY2FzZSBvdXRwdXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlmbG9hdCBvdXRwdXQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBodmVjMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGh2ZWMyID0gMS4w
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaHZlYzMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBodmVjMyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIGh2ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgaHZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSBkdmVjMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGR2ZWMyID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZHZlYzMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBkdmVjMyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKwljYXNlIGR2ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVz
IHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxv
YXQgZHZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBm
dmVjMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGZ2ZWMyID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZnZlYzMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlmbG9hdCBmdmVjMyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIGZ2ZWM0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
ZnZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1w
bGVyMUQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMUQgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyM0QKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyM0QgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMURTaGFkb3cKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMURTaGFkb3cgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMkRTaGFkb3cKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMkRTaGFkb3cgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMkRSZWN0CisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgc2FtcGxlcjJEUmVjdCA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBsZXIzRFJlY3QKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyM0RSZWN0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjJEUmVjdFNoYWRvdworCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWZsb2F0IHNhbXBsZXIyRFJlY3RTaGFkb3cgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzaXplb2YKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlmbG9hdCBzaXplb2YgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisJY2FzZSBjYXN0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgY2FzdCA9
IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIG5hbWVzcGFjZQor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IG5hbWVzcGFjZSA9IDEuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVzaW5nCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJZmxvYXQgdXNpbmcgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKK2VuZCAjIHJlc2VydmVkX2tleXdvcmRzCitncm91cCBpbnZhbGlkX2lkZW50aWZp
ZXJzICJVc2FnZSBvZiBpbnZhbGlkIGlkZW50aWZpZXJzLiIKKworCWNhc2UgZ2xfYmVnaW4KKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBnbF9JbnZhbGlkID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZGlnaXQKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlmbG9hdCAwMTIzID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCWNhc2UgZGlnaXRfYmVnaW4KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCAwaW52YWxpZCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5k
ICMgaW52YWxpZF9pZGVudGlmaWVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvbGlua2FnZS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9k
YXRhL2dsZXMyL3NoYWRlcnMvbGlua2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZjExOGI3ZGFmNDk0
N2YzMmZhM2QxYzkyYmJhMTljMTZkMTg5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVy
cy9saW5rYWdlLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQu
Z2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit0
ZXN0TmFtZSA9ICdsaW5rYWdlJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3RO
YW1lICsgIi4iKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVy
eVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNv
ZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVy
biBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworCittb2R1bGVzLnNo
YXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvbGlua2FnZS50
ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9k
YXRhL2dsZXMyL3NoYWRlcnMvbGlua2FnZS50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxOWE4NTg1OGIxYWQx
MWY2MTI1ODk3NTJjYzhjMjNjMzBmZTJhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVy
cy9saW5rYWdlLnRlc3QKQEAgLTAsMCArMSwxNzE1IEBACisjIG5vdCBkZWNsYXJlZCBpbiB2ZXJ0
ZXggc2hhZGVyLCBkZWNsYXJlZCBpbiBmcmFnbWVudCBzaGFkZXIKK2Nhc2UgdmFyeWluZ18xCisJ
ZGVzYyAidmFyeWluZyBkZWNsYXJlZCBpbiBmcmFnbWVudCBzaGFkZXIsIG5vIHJlZmVyZW5jZSBp
biB2ZXJ0ZXggc2hhZGVyIgorCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
dmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJJHtGUkFHTUVO
VF9ERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCW91dDAgPSAxLjA7CisJCQkk
e0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworIyBkZWNsYXJlZCBpbiB2ZXJ0ZXgg
c2hhZGVyLCBubyByZWZlcmVuY2UgaW4gZnJhZyBzaGFkZXIKK2Nhc2UgdmFyeWluZ18yCisJZGVz
YyAidmFyeWluZyBkZWNsYXJlZCBpbiB2ZXJ0ZXggc2hhZGVyLCBubyByZWZlcmVuY2UgaW4gZnJh
Z21lbnQgc2hhZGVyIgorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZh
cnlpbmcgbWVkaXVtcCBmbG9hdCB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7VkVSVEVY
X09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJ
Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworCQl9CisJIiIKK2VuZAorCisjIGRlY2xhcmVkIGlu
IHZlcnRleCBzaGFkZXIsIGRlY2xhcmVkIGluIGZyYWcgc2hhZGVyCitjYXNlIHZhcnlpbmdfMwor
CWRlc2MgInZhcnlpbmcgZGVjbGFyZWQgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRl
ciwgYnV0IG5vdCB1c2VkIgorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CXZhcnlpbmcgbWVkaXVtcCBmbG9hdCB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7VkVS
VEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkJdmFyeWluZyBtZWRpdW1wIGZs
b2F0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAp
OworCQl9CisJIiIKK2VuZAorCisjIGRlY2xhcmVkIGluIHZlcnRleCBzaGFkZXIsIHN0YXRpYyB1
c2UgaW4gZnJhZyBzaGFkZXIKK2Nhc2UgdmFyeWluZ180CisJZGVzYyAidmFyeWluZyBkZWNsYXJl
ZCBpbiBib3RoIHNoYWRlcnMsIHN0YXRpY2FsbHkgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiCisJ
dmFsdWVzIHsgdW5pZm9ybSBib29sIHVfZmFsc2UgPSBmYWxzZTsgfQorCXZlcnRleCAiIgorCQkk
e1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCB2YXI7CisJCXZv
aWQgbWFpbigpCisJCXsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQg
IiIKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJdW5pZm9ybSBib29sIHVfZmFsc2U7
CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCWlmICh1X2ZhbHNlKQorCQkJCWdsX0ZyYWdDb2xvciA9
IHZlYzQodmFyKTsKKwkJCWVsc2UKKwkJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCX0K
KwkiIgorZW5kCisKKyMgc3RhdGljIHVzZSBpbiB2ZXJ0ZXggc2hhZGVyLCBubyByZWZlcmVuY2Ug
aW4gZnJhZ21lbnQgc2hhZGVyCitjYXNlIHZhcnlpbmdfNQorCWRlc2MgInZhcnlpbmcgZGVjbGFy
ZWQgYW5kIHN0YXRpY2FsbHkgdXNlZCBpbiB2ZXJ0ZXggc2hhZGVyLCBubyByZWZlcmVuY2UgaW4g
ZnJhZ21lbnQgc2hhZGVyIgorCXZhbHVlcyB7IHVuaWZvcm0gYm9vbCB1X2ZhbHNlID0gZmFsc2U7
IH0KKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1
bXAgZmxvYXQgdmFyOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlpZiAodV9mYWxzZSkKKwkJCQl2
YXIgPSAxLjA7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJ
CXZvaWQgbWFpbigpCisJCXsKKwkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsKKwkJfQorCSIi
CitlbmQKKworIyBzdGF0aWMgdXNlIGluIHZlcnRleCBzaGFkZXIsIGRlY2xhcmVkIGluIGZyYWdt
ZW50IHNoYWRlcgorY2FzZSB2YXJ5aW5nXzYKKwlkZXNjICJ2YXJ5aW5nIGRlY2xhcmVkIGFuZCBz
dGF0aWNhbGx5IHVzZWQgaW4gdmVydGV4IHNoYWRlciwgb25seSBkZWNsYXJlZCBpbiBmcmFnbWVu
dCBzaGFkZXIiCisJdmFsdWVzIHsgdW5pZm9ybSBib29sIHVfZmFsc2UgPSBmYWxzZTsgfQorCXZl
cnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9h
dCB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCWlmICh1X2ZhbHNlKQorCQkJCXZhciA9IDEu
MDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkJdmFyeWlu
ZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApOworCQl9CisJIiIKK2VuZAorCisjIHN0YXRpYyB1c2UgaW4gdmVydGV4IHNo
YWRlciwgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIKK2Nhc2UgdmFyeWluZ183CisJZGVzYyAidmFy
eWluZyBzdGF0aWNhbGx5IHVzZWQgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlciIK
Kwl2YWx1ZXMgeyB1bmlmb3JtIGJvb2wgdV9mYWxzZSA9IGZhbHNlOyB9CisJdmVydGV4ICIiCisJ
CSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJ
dm9pZCBtYWluKCkKKwkJeworCQkJaWYgKHVfZmFsc2UpCisJCQkJdmFyID0gMS4wOworCQkJJHtW
RVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQkke0ZSQUdNRU5UX0RFQ0xB
UkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJaWYgKHVfZmFsc2UpCisJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2YXIpOworCQkJZWxz
ZQorCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsKKwkJfQorCSIiCitlbmQKKworY2FzZSB2
YXJ5aW5nX3R5cGVfZmxvYXQKKwlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgZmxvYXQiCisJdmFsdWVz
CisJeworCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS42NSB8IDEuMCB8IDIuMjUg
fCAzLjQgfCAxNi4wIF07CisJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4yNSB8IC0yNS42NSB8
IDEuMCB8IDIuMjUgfCAzLjQgfCAxNi4wIF07CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCB2YXI7CisJCXZvaWQgbWFpbigp
CisJCXsKKwkJCXZhciA9IGluMDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJh
Z21lbnQgIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7RlJBR01FTlRfREVDTEFS
QVRJT05TfQorCQl2YXJ5aW5nIGZsb2F0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0
MCA9IHZhcjsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHZh
cnlpbmdfdHlwZV92ZWMyCisJZGVzYyAidmFyeWluZyBvZiB0eXBlIHZlYzIiCisJdmFsdWVzCisJ
eworCQlpbnB1dCB2ZWMyIGluMAkJPSBbIHZlYzIoLTEuMjUsIDEuMjUpIHwgdmVjMigtMjUuNjUs
IC03LjI1KSB8IHZlYzIoMC4wLCAxLjApIHwgdmVjMigyLjI1LCAyLjI1KSB8IHZlYzIoMy40LCA5
LjUpIHwgdmVjMigxNi4wLCAzMi4wKSBdOworCQlvdXRwdXQgdmVjMiBvdXQwCT0gWyB2ZWMyKC0x
LjI1LCAxLjI1KSB8IHZlYzIoLTI1LjY1LCAtNy4yNSkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIo
Mi4yNSwgMi4yNSkgfCB2ZWMyKDMuNCwgOS41KSB8IHZlYzIoMTYuMCwgMzIuMCkgXTsKKwl9CisJ
dmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIHZl
YzIgdmFyOworCQl2b2lkIG1haW4oKQorCQl7CisJCQl2YXIgPSBpbjA7CisJCQkke1ZFUlRFWF9P
VVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyB2ZWMyIHZhcjsKKwkJdm9p
ZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IHZhcjsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9
CisJIiIKK2VuZAorCitjYXNlIHZhcnlpbmdfdHlwZV92ZWMzCisJZGVzYyAidmFyeWluZyBvZiB0
eXBlIHZlYzMiCisJdmFsdWVzCisJeworCQlpbnB1dCB2ZWMzIGluMAkJPSBbIHZlYzMoLTEuMjUs
IDEuMjUsIC05LjUpIHwgdmVjMygtMjUuNjUsIC03LjI1LCAxNC4yMSkgfCB2ZWMzKDAuMCwgMS4w
LCAtMS4wKSB8IHZlYzMoMi4yNSwgMi4yNSwgMjIuNSkgfCB2ZWMzKDMuNCwgOS41LCAxOS41KSB8
IHZlYzMoMTYuMCwgMzIuMCwgLTY0LjApIF07CisJCW91dHB1dCB2ZWMzIG91dDAJPSBbIHZlYzMo
LTEuMjUsIDEuMjUsIC05LjUpIHwgdmVjMygtMjUuNjUsIC03LjI1LCAxNC4yMSkgfCB2ZWMzKDAu
MCwgMS4wLCAtMS4wKSB8IHZlYzMoMi4yNSwgMi4yNSwgMjIuNSkgfCB2ZWMzKDMuNCwgOS41LCAx
OS41KSB8IHZlYzMoMTYuMCwgMzIuMCwgLTY0LjApIF07CisJfQorCXZlcnRleCAiIgorCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCB2ZWMzIHZhcjsKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJdmFyID0gaW4wOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIK
KwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtGUkFHTUVOVF9E
RUNMQVJBVElPTlN9CisJCXZhcnlpbmcgdmVjMyB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJ
CW91dDAgPSB2YXI7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2Fz
ZSB2YXJ5aW5nX3R5cGVfdmVjNAorCWRlc2MgInZhcnlpbmcgb2YgdHlwZSB2ZWM0IgorCXZhbHVl
cworCXsKKwkJaW5wdXQgdmVjNCBpbjAJCT0gWyB2ZWM0KC0xLjI1LCAxLjI1LCAtOS41LCAtMTIu
MikgfCB2ZWM0KC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNykgfCB2ZWM0KDAuMCwgMS4wLCAt
MS4wLCAyLjApIHwgdmVjNCgyLjI1LCAyLjI1LCAyMi41LCAyMjUuMCkgfCB2ZWM0KDMuNCwgOS41
LCAxOS41LCAyOS41KSB8IHZlYzQoMTYuMCwgMzIuMCwgLTY0LjAsIC0xMjguMCkgXTsKKwkJb3V0
cHV0IHZlYzQgb3V0MAk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgt
MjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8
IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjku
NSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJfQorCXZlcnRleCAiIgor
CQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZhcjsKKwkJ
dm9pZCBtYWluKCkKKwkJeworCQkJdmFyID0gaW4wOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9
CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtGUkFH
TUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgdmVjNCB2YXI7CisJCXZvaWQgbWFpbigpCisJ
CXsKKwkJCW91dDAgPSB2YXI7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQK
KworY2FzZSB2YXJ5aW5nX3R5cGVfbWF0MgorCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQyIgor
CXZhbHVlcworCXsKKwkJaW5wdXQgbWF0MiBpbjAJCT0gWyBtYXQyKDEuMCwgMS4wLCAxLjAsIDEu
MCkgfCBtYXQyKC0xLjI1LCAxLjI1LCAtOS41LCAtMTIuMikgfCBtYXQyKC0yNS42NSwgLTcuMjUs
IDE0LjIxLCAtNzcuNykgfCBtYXQyKDAuMCwgMS4wLCAtMS4wLCAyLjApIHwgbWF0MigyLjI1LCAy
LjI1LCAyMi41LCAyMjUuMCkgfCBtYXQyKDMuNCwgOS41LCAxOS41LCAyOS41KSB8IG1hdDIoMTYu
MCwgMzIuMCwgLTY0LjAsIC0xMjguMCkgXTsKKwkJb3V0cHV0IG1hdDIgb3V0MAk9IFsgbWF0Migx
LjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgbWF0
MigtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgbWF0MigwLjAsIDEuMCwgLTEuMCwgMi4w
KSB8IG1hdDIoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgbWF0MigzLjQsIDkuNSwgMTkuNSwg
MjkuNSkgfCBtYXQyKDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJfQorCXZlcnRleCAi
IgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBtYXQyIHZhcjsK
KwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmFyID0gaW4wOworCQkJJHtWRVJURVhfT1VUUFVUfQor
CQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtG
UkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWF0MiB2YXI7CisJCXZvaWQgbWFpbigp
CisJCXsKKwkJCW91dDAgPSB2YXI7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSB2YXJ5aW5nX3R5cGVfbWF0MworCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQz
IgorCXZhbHVlcworCXsKKwkJaW5wdXQgbWF0MyBpbjAJCT0gWyBtYXQzKC0xLjI1LCAxLjI1LCAt
OS41LCAtMTIuMiwgLTI1LjY1LCAtNy4yNSwgMTQuMjEsIC03Ny43LCA5LjkpIHwgbWF0MygwLjAs
IDEuMCwgLTEuMCwgMi4wLCAyLjI1LCAyLjI1LCAyMi41LCAyMjUuMCwgLTkuOSkgfCBtYXQzKDMu
NCwgOS41LCAxOS41LCAyOS41LCAxNi4wLCAzMi4wLCAtNjQuMCwgLTEyOC4wLCAyNTYuMCkgXTsK
KwkJb3V0cHV0IG1hdDMgb3V0MAk9IFsgbWF0MygtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0y
NS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNywgOS45KSB8IG1hdDMoMC4wLCAxLjAsIC0xLjAsIDIu
MCwgMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjAsIC05LjkpIHwgbWF0MygzLjQsIDkuNSwgMTkuNSwg
MjkuNSwgMTYuMCwgMzIuMCwgLTY0LjAsIC0xMjguMCwgMjU2LjApIF07CisJfQorCXZlcnRleCAi
IgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBtYXQzIHZhcjsK
KwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmFyID0gaW4wOworCQkJJHtWRVJURVhfT1VUUFVUfQor
CQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtG
UkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWF0MyB2YXI7CisJCXZvaWQgbWFpbigp
CisJCXsKKwkJCW91dDAgPSB2YXI7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSB2YXJ5aW5nX3R5cGVfbWF0NAorCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQ0
IgorCXZhbHVlcworCXsKKwkJaW5wdXQgbWF0NCBpbjAJCT0gWyBtYXQ0KC0xLjI1LCAxLjI1LCAt
OS41LCAtMTIuMiwgLTI1LjY1LCAtNy4yNSwgMTQuMjEsIC03Ny43LCAwLjAsIDEuMCwgLTEuMCwg
Mi4wLCAyLjI1LCAyLjI1LCAyMi41LCAyMjUuMCkgXTsKKwkJb3V0cHV0IG1hdDQgb3V0MAk9IFsg
bWF0NCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcu
NywgMC4wLCAxLjAsIC0xLjAsIDIuMCwgMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIF07CisJfQor
CXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBt
YXQ0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmFyID0gaW4wOworCQkJJHtWRVJURVhf
T1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWF0NCB2YXI7CisJCXZv
aWQgbWFpbigpCisJCXsKKwkJCW91dDAgPSB2YXI7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJ
fQorCSIiCitlbmQKKworIyBkaWZmZXJpbmcgcHJlY2lzaW9uIHRlc3RzCitjYXNlIHZhcnlpbmdf
ZGlmZmVyaW5nX3ByZWNpc2lvbl8xCisJZGVzYyAidmFyeWluZyBkZWNsYXJlZCBhcyBoaWdocCBp
biB2ZXJ0ZXggc2hhZGVyLCBidXQgbWVkaXVtcCBpbiBmcmFnbWVudCBzaGFkZXIiCisJdmFsdWVz
CisJeworCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS41NSB8IDEuMCB8IDIuMjUg
fCAzLjQgfCAxNi4wIF07CisJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4yNSB8IC0yNS41NSB8
IDEuMCB8IDIuMjUgfCAzLjQgfCAxNi4wIF07CisJfQorCisJdmVydGV4ICIiCisJCSR7VkVSVEVY
X0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBoaWdocCBmbG9hdCB2YXI7CisJCXZvaWQgbWFpbigp
CisJCXsKKwkJCXZhciA9IGluMDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJh
Z21lbnQgIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7RlJBR01FTlRfREVDTEFS
QVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgdmFyOworCQl2b2lkIG1haW4oKQorCQl7
CisJCQlvdXQwID0gdmFyOworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisK
KyMgZGlmZmVyaW5nIHByZWNpc2lvbiB0ZXN0cworY2FzZSB2YXJ5aW5nX2RpZmZlcmluZ19wcmVj
aXNpb25fMgorCWRlc2MgInZhcnlpbmcgZGVjbGFyZWQgYXMgaGlnaHAgaW4gdmVydGV4IHNoYWRl
ciwgYnV0IGxvd3AgaW4gZnJhZ21lbnQgc2hhZGVyIgorCXZhbHVlcworCXsKKwkJaW5wdXQgZmxv
YXQgaW4wCQk9IFsgLTEuMjUgfCAtMjUuNTYgfCAxLjAgfCAyLjI1IHwgMy40IHwgMTYuMCBdOwor
CQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgLTEuMjUgfCAtMjUuNTYgfCAxLjAgfCAyLjI1IHwgMy40
IHwgMTYuMCBdOworCX0KKworCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CXZhcnlpbmcgaGlnaHAgdmVjMiB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXZhciA9IHZl
YzIoaW4wLCAyLjAqaW4wKTsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21l
bnQgIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJ
T05TfQorCQl2YXJ5aW5nIGxvd3AgdmVjMiB2YXI7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCW91
dDAgPSB2YXIueSAtIHZhci54OworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5k
CisKKyMgZGlmZmVyaW5nIHByZWNpc2lvbiB0ZXN0cworY2FzZSB2YXJ5aW5nX2RpZmZlcmluZ19w
cmVjaXNpb25fMworCWRlc2MgInZhcnlpbmcgZGVjbGFyZWQgYXMgbG93cCBpbiB2ZXJ0ZXggc2hh
ZGVyLCBidXQgbWVkaXVtcCBpbiBmcmFnbWVudCBzaGFkZXIiCisJdmFsdWVzCisJeworCQlpbnB1
dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS4wIHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2LjAg
XTsKKwkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC0xLjI1IHwgLTI1LjAgfCAxLjAgfCAyLjI1IHwg
My40IHwgMTYuMCBdOworCX0KKworCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9
CisJCXZhcnlpbmcgbG93cCB2ZWM0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmFyID0g
dmVjNChpbjAsIDIuMCppbjAsIC1pbjAsIC1pbjApOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9
CisJIiIKKwlmcmFnbWVudCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtGUkFH
TUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZhcjsKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJb3V0MCA9IHZhci54ICsgdmFyLnkgKyB2YXIueiArIHZhci53OworCQkJ
JHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKKyMgbWlzbWF0Y2hlZCB0eXBlLCBz
dGF0aWMgdXNlIGJ1dCBubyBydW50aW1lIHVzZSBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyCitjYXNl
IHZhcnlpbmdfdHlwZV9taXNtYXRjaF8xCisJZGVzYyAidmFyeWluZyB0eXBlIG1pc21hdGNoIChm
bG9hdCB2cy4gdmVjMiksIHN0YXRpYyB1c2UgYnV0IG5vIHJ1bnRpbWUgdXNlIGluIHRoZSBmcmFn
bWVudCBzaGFkZXIiCisJZXhwZWN0IGxpbmtfZmFpbAorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCB2YXI7CisJCXZvaWQgbWFpbigp
CisJCXsKKwkJCXZhciA9IDIuMDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJh
Z21lbnQgIiIKKwkJdmFyeWluZyBtZWRpdW1wIHZlYzIgdmFyOworCQl2b2lkIG1haW4oKQorCQl7
CisJCQlpZiAoZmFsc2UpCisJCQl7CisJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2YXIueSk7CisJ
CQl9CisJCQllbHNlCisJCQl7CisJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJfQorCSIiCitlbmQKKworIyBtaXNtYXRjaGVkIHR5cGUsIHZhcnlpbmdzIHVzZWQKK2Nhc2Ug
dmFyeWluZ190eXBlX21pc21hdGNoXzIKKwlkZXNjICJ2YXJ5aW5nIHR5cGUgbWlzbWF0Y2ggKGZs
b2F0IHZzLiB2ZWMyKSIKKwlleHBlY3QgbGlua19mYWlsCisJdmVydGV4ICIiCisJCSR7VkVSVEVY
X0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJdm9pZCBtYWlu
KCkKKwkJeworCQkJdmFyID0gMi4wOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlm
cmFnbWVudCAiIgorCQl2YXJ5aW5nIG1lZGl1bXAgdmVjMiB2YXI7CisJCXZvaWQgbWFpbigpCisJ
CXsKKwkJCWdsX0ZyYWdDb2xvciA9IHZhci54eXl4OworCQl9CisJIiIKK2VuZAorCisjIG5vIGRl
Y2xhcmF0aW9uIGluIHZlcnRleCBzaGFkZXIsIGJ1dCBzdGF0aWMgdXNlIGluIGZyYWdtZW50Citj
YXNlIHZhcnlpbmdfaWxsZWdhbF91c2FnZV8xCisJZGVzYyAidmFyeWluZyBub3QgZGVjbGFyZWQg
aW4gdmVydGV4IHNoYWRlciwgYnV0IHN0YXRpY2FsbHkgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIi
CisJZXhwZWN0IGxpbmtfZmFpbAorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9
CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJh
Z21lbnQgIiIKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCh2YXIpOworCQl9CisJIiIKK2VuZAorCisjIGludGVn
ZXIgdmFyeWluZ3Mgbm90IGFsbG93ZWQKK2Nhc2UgaW52YWxpZF92YXJ5aW5nX3R5cGVfaW50CisJ
ZGVzYyAiaW50ZWdlciB2YXJ5aW5nIHVzZWQiCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRl
eCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBpbnQgdmFy
OworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZy
YWdtZW50ICIiCisJCXZhcnlpbmcgbWVkaXVtcCBpbnQgdmFyOworCQl2b2lkIG1haW4oKQorCQl7
CisJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorZW5kCisKKyMgYm9vbCB2
YXJ5aW5ncyBub3QgYWxsb3dlZAorY2FzZSBpbnZhbGlkX3ZhcnlpbmdfdHlwZV9ib29sCisJZGVz
YyAiYm9vbGVhbiB2YXJ5aW5nIHVzZWQiCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRleCAi
IgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgYm9vbCB2YXI7CisJCXZvaWQg
bWFpbigpCisJCXsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIK
KwkJdmFyeWluZyBib29sIHZhcjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApOworCQl9CisJIiIKK2VuZAorCisjIHN0cnVjdCB2YXJ5aW5ncyBub3QgYWxs
b3dlZAorY2FzZSBpbnZhbGlkX3ZhcnlpbmdfdHlwZV9zdHJ1Y3QKKwlkZXNjICJzdHJ1Y3QgdmFy
eWluZyB1c2VkIgorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhf
REVDTEFSQVRJT05TfQorCQl2YXJ5aW5nIHN0cnVjdCB7IG1lZGl1bXAgZmxvYXQgZm9vOyB9IHZh
cjsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlm
cmFnbWVudCAiIgorCQl2YXJ5aW5nIHN0cnVjdCB7IG1lZGl1bXAgZmxvYXQgZm9vOyB9IHZhcjsK
KwkJdm9pZCBtYWluKCkKKwkJeworCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApOworCQl9CisJ
IiIKK2VuZAorCitjYXNlIHZhcnlpbmdfcmVhZGJhY2tfMQorCWRlc2MgInJlYWQgYmFjayAoYW4g
YWxyZWFkeSB3cml0dGVuKSB2YXJ5aW5nIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIgorCXZhbHVlcwor
CXsKKwkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMS4wIHwgMC4wIHwgLTIuMCB8IDEwLjAgXTsKKwkJ
b3V0cHV0IGZsb2F0IG91dDAJPSBbIDMuMCB8IDAuMCB8IC02LjAgfCAzMC4wIF07CisJfQorCXZl
cnRleCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQl2YXJ5aW5nIGZsb2F0IHZhcjE7CisJCXZhcnlpbmcgZmxvYXQgdmFyMjsKKworCQl2
b2lkIG1haW4oKQorCQl7CisJCQl2YXIxID0gaW4wOworCQkJdmFyMiA9IHZhcjEgKyBpbjA7CisJ
CQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBmbG9h
dCB2YXIxOworCQl2YXJ5aW5nIGZsb2F0IHZhcjI7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJ
b3V0MCA9IHZhcjEgKyB2YXIyOworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5k
CisKK2Nhc2UgdmFyeWluZ193cml0ZWJhY2tfMQorCWRlc2MgIndyaXRlIGJhY2sgYSB2YXJ5aW5n
IGluIHRoZSBmcmFnbWVudCBzaGFkZXIiCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRleCAi
IgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQor
CQl2YXJ5aW5nIGZsb2F0IHZhcjE7CisJCXZhcnlpbmcgZmxvYXQgdmFyMjsKKworCQl2b2lkIG1h
aW4oKQorCQl7CisJCQl2YXIxID0gaW4wOworCQkJdmFyMiA9IHZhcjEgKyBpbjA7CisJCQkke1ZF
UlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBmbG9hdCB2YXIx
OworCQl2YXJ5aW5nIGZsb2F0IHZhcjI7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJdmFyMiA9
IHZhcjE7CisJCQlvdXQwID0gdmFyMTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCisjIFN0cnVjdCBsaW5rYWdlIGhhbmRsaW5nCitjYXNlIHVuaWZvcm1fc3RydWN0CisJ
ZGVzYyAiU2FtZSB1bmlmb3JtIHN0cnVjdCBpbiBib3RoIHNoYWRlcnMiCisJdmFsdWVzIHsKKwkJ
dW5pZm9ybSBmbG9hdCB2YWwuYSA9IDEuMDsKKwkJdW5pZm9ybSBmbG9hdCB2YWwuYiA9IDIuMDsK
KwkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVtcCBm
bG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0
IGR1bW15OworCQl2b2lkIG1haW4oKQorCQl7CisJCQlkdW1teSA9IHZhbC5hICsgdmFsLmI7CisJ
CQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7IG1lZGl1
bXAgZmxvYXQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBm
bG9hdCBkdW1teTsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbigpCisJ
CXsJIAorCQkJb3V0MCA9IHZhbC5iICsgdmFsLmE7CisJCQlvdXQwID0gb3V0MCArIGR1bW15Owor
CQkJb3V0MCA9IG91dDAgLSBkdW1teTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3ZlcnRleF9vbmx5CisJZGVzYyAiVW5pZm9ybSBz
dHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGluIHZlcnRleC4iCisJdmFsdWVzIHsK
KwkJdW5pZm9ybSBmbG9hdCB2YWwuYSA9IDEuMDsKKwkJdW5pZm9ybSBmbG9hdCB2YWwuYiA9IDIu
MDsKKwkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRF
WF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVt
cCBmbG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZs
b2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJcmVzID0gdmFsLmEgKyB2YWwuYjsKKwkJ
CSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVt
cCBmbG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZs
b2F0IHJlczsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbigpCisJCXsJ
IAorCQkJb3V0MCA9IHJlczsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAor
CitjYXNlIHVuaWZvcm1fc3RydWN0X2ZyYWdtZW50X29ubHkKKwlkZXNjICJVbmlmb3JtIHN0cnVj
dCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIG9ubHkgaW4gZnJhZ21lbnQuIgorCXZhbHVlcyB7CisJ
CXVuaWZvcm0gZmxvYXQgdmFsLmEgPSAxLjA7CisJCXVuaWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7
CisJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0KKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhf
REVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7IG1lZGl1bXAg
ZmxvYXQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJ
CSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVt
cCBmbG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJb3V0MCA9IHZhbC5hICsgdmFsLmI7CisJ
CQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVj
dF9wYXJ0aWFsCisJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBw
YXJ0aWFsbHkgaW4gYm90aC4iCisJdmFsdWVzIHsKKwkJdW5pZm9ybSBmbG9hdCB2YWwuYSA9IDEu
MDsKKwkJdW5pZm9ybSBmbG9hdCB2YWwuYiA9IDIuMDsKKwkJb3V0cHV0IGZsb2F0IG91dDAgPSAz
LjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBT
dHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJCXVuaWZvcm0gU3Ry
dWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJcmVzID0gdmFsLmE7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdt
ZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHtt
ZWRpdW1wIGZsb2F0IGE7IG1lZGl1bXAgZmxvYXQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7
CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVz
OworCQl2b2lkIG1haW4oKQorCQl7CSAKKwkJCW91dDAgPSByZXMgKyB2YWwuYjsKKwkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3ZlYzQK
KwlkZXNjICJTYW1lIHVuaWZvcm0gc3RydWN0IGluIGJvdGggc2hhZGVycy4gRGF0YXR5cGUgdmVj
NCIKKwl2YWx1ZXMgeworCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAs
IDQuMCk7CisJCXVuaWZvcm0gdmVjNCB2YWwuYiA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsK
KwkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZl
YzQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCBk
dW1teTsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZHVtbXkgPSB2YWwuYS54ICsgdmFsLmIueTsK
KwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRp
dW1wIHZlYzQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBm
bG9hdCBkdW1teTsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbigpCisJ
CXsJIAorCQkJb3V0MCA9IHZhbC5iLnkgKyB2YWwuYS54OworCQkJb3V0MCA9IG91dDAgKyBkdW1t
eTsKKwkJCW91dDAgPSBvdXQwIC0gZHVtbXk7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQor
CSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF92ZXJ0ZXhfb25seV92ZWM0CisJZGVzYyAi
VW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGluIHZlcnRleC4gRGF0
YXR5cGUgdmVjNAkiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAs
IDIuMCwgMy4wLCA0LjApOworCQl1bmlmb3JtIHZlYzQgdmFsLmIgPSB2ZWM0KDEuMCwgMi4wLCAz
LjAsIDQuMCk7CisJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0KKwl2ZXJ0ZXggIiIKKwkJ
JHtWRVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsg
bWVkaXVtcCB2ZWM0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1
bXAgZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2YWwuYS54ICsgdmFs
LmIueTsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBh
OyBtZWRpdW1wIHZlYzQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVk
aXVtcCBmbG9hdCByZXM7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4o
KQorCQl7CSAKKwkJCW91dDAgPSByZXM7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIi
CitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9mcmFnbWVudF9vbmx5X3ZlYzQKKwlkZXNjICJV
bmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIG9ubHkgaW4gZnJhZ21lbnQuIERh
dGF0eXBlIHZlYzQiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAs
IDIuMCwgMy4wLCA0LjApOworCQl1bmlmb3JtIHZlYzQgdmFsLmIgPSB2ZWM0KDEuMCwgMi4wLCAz
LjAsIDQuMCk7CisJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0KKwl2ZXJ0ZXggIiIKKwkJ
JHtWRVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsg
bWVkaXVtcCB2ZWM0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2b2lkIG1haW4oKQor
CQl7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsg
bWVkaXVtcCB2ZWM0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gdmFsLmEueCArIHZh
bC5iLnk7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlm
b3JtX3N0cnVjdF9wYXJ0aWFsX3ZlYzQKKwlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBp
biBib3RoLCB1c2VkIHBhcnRpYWxseSBpbiBib3RoLiBEYXRhdHlwZSB2ZWM0IgorCXZhbHVlcyB7
CisJCXVuaWZvcm0gdmVjNCB2YWwuYSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKwkJdW5p
Zm9ybSB2ZWM0IHZhbC5iID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQlvdXRwdXQgZmxv
YXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30K
KwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjNCBiO307CisJCXVu
aWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJcmVzID0gdmFsLmEueDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQor
CSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVj
dCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzQgYjt9OworCQl1bmlmb3JtIFN0
cnVjdCB2YWw7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1bXAg
ZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CSAKKwkJCW91dDAgPSByZXMgKyB2YWwuYi55
OworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgdW5pZm9ybV9z
dHJ1Y3RfdmVjNF92ZWMzCisJZGVzYyAiU2FtZSB1bmlmb3JtIHN0cnVjdCBpbiBib3RoIHNoYWRl
cnMuIERhdGF0eXBlIHZlYzQgYW5kIHZlYzMiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZh
bC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQl1bmlmb3JtIHZlYzMgdmFsLmIgPSB2
ZWMzKDEuMCwgMi4wLCAzLjApOworCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVy
dGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVt
cCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFy
eWluZyBtZWRpdW1wIGZsb2F0IGR1bW15OworCQl2b2lkIG1haW4oKQorCQl7CisJCQlkdW1teSA9
IHZhbC5hLnggKyB2YWwuYi55OworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFn
bWVudCAiIgorCSAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJc3RydWN0IFN0cnVjdCB7
bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsK
KwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IGR1bW15OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9O
U30KKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gdmFsLmIueSArIHZhbC5hLng7CisJ
CQlvdXQwID0gb3V0MCArIGR1bW15OworCQkJb3V0MCA9IG91dDAgLSBkdW1teTsKKwkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3ZlcnRl
eF9vbmx5X3ZlYzRfdmVjMworCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVkIGluIGJvdGgs
IHVzZWQgb25seSBpbiB2ZXJ0ZXguIERhdGF0eXBlIHZlYzQgYW5kIHZlYzMiCisJdmFsdWVzIHsK
KwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQl1bmlm
b3JtIHZlYzMgdmFsLmIgPSB2ZWMzKDEuMCwgMi4wLCAzLjApOworCQlvdXRwdXQgZmxvYXQgb3V0
MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJc3Ry
dWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJCXVuaWZvcm0g
U3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkK
KwkJeworCQkJcmVzID0gdmFsLmEueCArIHZhbC5iLnk7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJ
CX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlz
dHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCB2ZWMzIGI7fTsKKwkJdW5pZm9y
bSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQkke0ZSQUdNRU5U
X0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gcmVzOworCQkJ
JHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgdW5pZm9ybV9zdHJ1Y3Rf
ZnJhZ21lbnRfb25seV92ZWM0X3ZlYzMKKwlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBp
biBib3RoLCB1c2VkIG9ubHkgaW4gZnJhZ21lbnQuIERhdGF0eXBlIHZlYzQgYW5kIHZlYzMiCisJ
dmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjAp
OworCQl1bmlmb3JtIHZlYzMgdmFsLmIgPSB2ZWMzKDEuMCwgMi4wLCAzLjApOworCQlvdXRwdXQg
ZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9O
U30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJ
CXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtWRVJURVhfT1VU
UFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCSAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJ
CXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZvaWQg
bWFpbigpCisJCXsJIAorCQkJb3V0MCA9IHZhbC5hLnggKyB2YWwuYi55OworCQkJJHtGUkFHTUVO
VF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgdW5pZm9ybV9zdHJ1Y3RfcGFydGlhbF92
ZWM0X3ZlYzMKKwlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBh
cnRpYWxseSBpbiBib3RoLiBEYXRhdHlwZSB2ZWM0IGFuZCB2ZWMzIgorCXZhbHVlcyB7CisJCXVu
aWZvcm0gdmVjNCB2YWwuYSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKwkJdW5pZm9ybSB2
ZWMzIHZhbC5iID0gdmVjMygxLjAsIDIuMCwgMy4wKTsKKwkJb3V0cHV0IGZsb2F0IG91dDAgPSAz
LjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBT
dHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzMgYjt9OworCQl1bmlmb3JtIFN0cnVj
dCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsK
KwkJCXJlcyA9IHZhbC5hLng7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdt
ZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHtt
ZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCB2ZWMzIGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOwor
CQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsK
KwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gcmVzICsgdmFsLmIueTsKKwkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3ZlYzRf
ZmxvYXQKKwlkZXNjICJTYW1lIHVuaWZvcm0gc3RydWN0IGluIGJvdGggc2hhZGVycy4gRGF0YXR5
cGUgdmVjNCBhbmQgZmxvYXQiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVj
NCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQl1bmlmb3JtIGZsb2F0IHZhbC5iID0gMi4wOworCQlv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xB
UkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxvYXQg
Yjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCBkdW1t
eTsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJZHVtbXkgPSB2YWwuYS54ICsgdmFsLmI7CisJCQkk
e1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCBm
bG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0
IGR1bW15OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewkg
CisJCQlvdXQwID0gdmFsLmIgKyB2YWwuYS54OworCQkJb3V0MCA9IG91dDAgKyBkdW1teTsKKwkJ
CW91dDAgPSBvdXQwIC0gZHVtbXk7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF92ZXJ0ZXhfb25seV92ZWM0X2Zsb2F0CisJZGVzYyAi
VW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGluIHZlcnRleC4gRGF0
YXR5cGUgdmVjNCBhbmQgZmxvYXQiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWM0IHZhbC5hID0g
dmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQl1bmlmb3JtIGZsb2F0IHZhbC5iID0gMi4wOwor
CQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RF
Q0xBUkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxv
YXQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCBy
ZXM7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZhbC5hLnggKyB2YWwuYjsKKwkJCSR7
VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIGZs
b2F0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQg
cmVzOworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewkgCisJ
CQlvdXQwID0gcmVzOworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nh
c2UgdW5pZm9ybV9zdHJ1Y3RfZnJhZ21lbnRfb25seV92ZWM0X2Zsb2F0CisJZGVzYyAiVW5pZm9y
bSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGluIGZyYWdtZW50LiBEYXRhdHlw
ZSB2ZWM0IGFuZCBmbG9hdCIKKwl2YWx1ZXMgeworCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0
KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJCXVuaWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7CisJCW91
dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0KKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFS
QVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCBmbG9hdCBi
O307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtWRVJU
RVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCSAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxvYXQg
Yjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQor
CQl2b2lkIG1haW4oKQorCQl7CSAKKwkJCW91dDAgPSB2YWwuYS54ICsgdmFsLmI7CisJCQkke0ZS
QUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9wYXJ0
aWFsX3ZlYzRfZmxvYXQKKwlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1
c2VkIHBhcnRpYWxseSBpbiBib3RoLiBEYXRhdHlwZSB2ZWM0IGFuZCBmbG9hdCIKKwl2YWx1ZXMg
eworCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJCXVu
aWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7CisJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0K
Kwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHtt
ZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsK
KwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJcmVz
ID0gdmFsLmEueDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIK
KwkgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAg
dmVjNCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZS
QUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9p
ZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gcmVzICsgdmFsLmI7CisJCQkke0ZSQUdNRU5UX09V
VFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9wYXJ0aWFsX3ZlYzRf
c3RydWN0CisJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0
aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgdmVjNCBhbmQgc3RydWN0IHdpdGggdmVjNCIKKwl2YWx1
ZXMgeworCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJ
CXVuaWZvcm0gdmVjNCB2YWwuYi5jID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQlvdXRw
dXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJc3RydWN0IElubmVyIHttZWRpdW1wIHZlYzQgYzt9OworCQlzdHJ1Y3QgU3RydWN0
IHttZWRpdW1wIHZlYzQgYTsgSW5uZXIgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZh
cnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZh
bC5hLng7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgSW5uZXIge21lZGl1bXAgdmVjNCBj
O307CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBJbm5lciBiO307CisJCXVuaWZv
cm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVk
aXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJb3V0MCA9IHJlcyArIHZh
bC5iLmMueTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCisKKworY2Fz
ZSB1bmlmb3JtX3N0cnVjdF9wYXJ0aWFsX3ZlYzRfdmVjM19zdHJ1Y3QKKwlkZXNjICJVbmlmb3Jt
IHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBpbiBib3RoLiBEYXRhdHlw
ZSB2ZWM0IGFuZCBzdHJ1Y3Qgd2l0aCB2ZWMzIgorCXZhbHVlcyB7CisJCXVuaWZvcm0gdmVjNCB2
YWwuYSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKwkJdW5pZm9ybSB2ZWMzIHZhbC5iLmMg
PSB2ZWMzKDEuMCwgMi4wLCAzLjApOworCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJ
dmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJc3RydWN0IElubmVyIHttZWRp
dW1wIHZlYzMgYzt9OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgSW5uZXIgYjt9
OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJ
CXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZhbC5hLng7CisJCQkke1ZFUlRFWF9PVVRQVVR9
CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQlzdHJ1Y3QgSW5uZXIge21lZGl1bXAgdmVjMyBjO307CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1
bXAgdmVjNCBhOyBJbm5lciBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVO
VF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFp
bigpCisJCXsJIAorCQkJb3V0MCA9IHJlcyArIHZhbC5iLmMueTsKKwkJCSR7RlJBR01FTlRfT1VU
UFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3BhcnRpYWxfdmVjMl92
ZWMzCisJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0aWFs
bHkgaW4gYm90aC4gRGF0YXR5cGUgdmVjMiBhbmQgdmVjMyIKKwl2YWx1ZXMgeworCQl1bmlmb3Jt
IHZlYzIgdmFsLmEgPSB2ZWMyKDEuMCwgMi4wKTsKKwkJdW5pZm9ybSB2ZWMzIHZhbC5iID0gdmVj
MygxLjAsIDIuMCwgMy4wKTsKKwkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJfQorCXZlcnRl
eCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAg
dmVjMiBhOyBtZWRpdW1wIHZlYzMgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlp
bmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZhbC5h
Lng7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzIgYTsg
bWVkaXVtcCB2ZWMzIGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkK
KwkJewkgCisJCQlvdXQwID0gcmVzICsgdmFsLmIueTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQor
CQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3BhcnRpYWxfdmVjMl9pbnQKKwlk
ZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBpbiBi
b3RoLiBEYXRhdHlwZSB2ZWMyIGFuZCBpbnQiCisJdmFsdWVzIHsKKwkJdW5pZm9ybSB2ZWMyIHZh
bC5hID0gdmVjMigxLjAsIDIuMCk7CisJCXVuaWZvcm0gaW50IHZhbC5iID0gMjsKKwkJb3V0cHV0
IGZsb2F0IG91dDAgPSAzLjA7CisJfQorCXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElP
TlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjMiBhOyBtZWRpdW1wIGludCBiO307CisJ
CXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9p
ZCBtYWluKCkKKwkJeworCQkJcmVzID0gdmFsLmEueDsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJ
fQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0
cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjMiBhOyBtZWRpdW1wIGludCBiO307CisJCXVuaWZvcm0g
U3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVt
cCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJb3V0MCA9IHJlcyArIGZsb2F0
KHZhbC5iKTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVu
aWZvcm1fc3RydWN0X3BhcnRpYWxfaW50X2Zsb2F0CisJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVj
bGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgaW50IGFuZCBm
bG9hdCIKKwl2YWx1ZXMgeworCQl1bmlmb3JtIGZsb2F0IHZhbC5hID0gMS4wOworCQl1bmlmb3Jt
IGludCB2YWwuYiA9IDI7CisJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCX0KKwl2ZXJ0ZXgg
IiIKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZs
b2F0IGE7IG1lZGl1bXAgaW50IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5n
IG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2YWwuYTsK
KwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVk
aXVtcCBpbnQgYjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCSR7RlJBR01FTlRfREVDTEFS
QVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7
CSAKKwkJCW91dDAgPSByZXMgKyBmbG9hdCh2YWwuYik7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0K
KwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9wYXJ0aWFsX2J2ZWMyX3ZlYzIK
KwlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBp
biBib3RoLiBEYXRhdHlwZSBidmVjMiBhbmQgdmVjMiIKKwl2YWx1ZXMgeworCQl1bmlmb3JtIGJ2
ZWMyIHZhbC5hID0gYnZlYzIodHJ1ZSwgdHJ1ZSk7CisJCXVuaWZvcm0gdmVjMiB2YWwuYiA9IHZl
YzIoMS4wLCAyLjApOworCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIi
CisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7YnZlYzIgYTsgbWVk
aXVtcCB2ZWMyIGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAg
ZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSBmbG9hdCh2YWwuYS54KTsK
KwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge2J2ZWMyIGE7IG1lZGl1bXAgdmVj
MiBiO307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9
CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJ
b3V0MCA9IHJlcyArIHZhbC5iLnk7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9wYXJ0aWFsX2l2ZWMyX3ZlYzIKKwlkZXNjICJVbmlm
b3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBpbiBib3RoLiBEYXRh
dHlwZSBpdmVjMiBhbmQgdmVjMiIKKwl2YWx1ZXMgeworCQl1bmlmb3JtIGl2ZWMyIHZhbC5hID0g
aXZlYzIoMSwgMik7CisJCXVuaWZvcm0gdmVjMiB2YWwuYiA9IHZlYzIoMS4wLCAyLjApOworCQlv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xB
UkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBpdmVjMiBhOyBtZWRpdW1wIHZlYzIg
Yjt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7
CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZlYzIodmFsLmEpLng7CisJCQkke1ZFUlRF
WF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGl2ZWMyIGE7IG1lZGl1bXAgdmVjMiBi
O307CisJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJ
CXZhcnlpbmcgbWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJb3V0
MCA9IHJlcyArIHZhbC5iLnk7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitlbmQK
KworY2FzZSB1bmlmb3JtX3N0cnVjdF9wYXJ0aWFsX2l2ZWMyX2l2ZWMyCisJZGVzYyAiVW5pZm9y
bSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5
cGUgaXZlYzIgYW5kIGl2ZWMyIgorCXZhbHVlcyB7CisJCXVuaWZvcm0gaXZlYzIgdmFsLmEgPSBp
dmVjMigxLCAyKTsKKwkJdW5pZm9ybSBpdmVjMiB2YWwuYiA9IGl2ZWMyKDEsIDIpOworCQlvdXRw
dXQgZmxvYXQgb3V0MCA9IDMuMDsKKwl9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBpdmVjMiBhOyBtZWRpdW1wIGl2ZWMyIGI7
fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOwor
CQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2ZWMyKHZhbC5hKS54OworCQkJJHtWRVJURVhf
T1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCSAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBpdmVjMiBhOyBtZWRpdW1wIGl2ZWMyIGI7
fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJ
dmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQw
ID0gcmVzICsgdmVjMih2YWwuYikueTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3R5cGVfY29uZmxpY3RfMQorCWRlc2MgIkZyYWdt
ZW50IHN0cnVjdCBoYXMgb25lIGxlc3MgbWVtYmVyIHRoYW4gZnJhZ21lbnQgdmVyc2lvbiIKKwll
eHBlY3QgbGlua19mYWlsCisJdmFsdWVzIHtvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDt9CisJdmVy
dGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVt
cCBmbG9hdCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2
YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2
YWwuYTsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQg
YTt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQor
CQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CSAKKwkJCW91
dDAgPSByZXMgKyB2YWwuYTsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAor
CitjYXNlIHVuaWZvcm1fc3RydWN0X3R5cGVfY29uZmxpY3RfMgorCWRlc2MgIlZlcnRleCBzdHJ1
Y3QgaGFzIGludCwgZnJhZ21lbnQgc3RydWN0IGhhcyBmbG9hdC4iCisJZXhwZWN0IGxpbmtfZmFp
bAorCXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7fQorCXZlcnRleCAiIgorCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgaW50IGE7fTsKKwkJ
dW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lk
IG1haW4oKQorCQl7CisJCQlyZXMgPSBmbG9hdCh2YWwuYSk7CisJCQkke1ZFUlRFWF9PVVRQVVR9
CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFs
OworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJl
czsKKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gdmFsLmE7CisJCQkke0ZSQUdNRU5U
X09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF90eXBlX2NvbmZs
aWN0XzMKKwlkZXNjICJWZXJ0ZXggc3RydWN0IGhhcyB2ZWMzLCBmcmFnbWVudCBzdHJ1Y3QgaGFz
IHZlYzQuIgorCWV4cGVjdCBsaW5rX2ZhaWwKKwl2YWx1ZXMge291dHB1dCBmbG9hdCBvdXQwID0g
My4wO30KKwl2ZXJ0ZXggIiIKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3Ry
dWN0IHttZWRpdW1wIHZlYzMgYTt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcg
bWVkaXVtcCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IGZsb2F0KHZh
bC5hLngpOworCQkJJHtWRVJURVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCSAg
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0
IGE7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30K
KwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlv
dXQwID0gdmFsLmEueDsKKwkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitj
YXNlIHVuaWZvcm1fc3RydWN0X3ByZWNpc2lvbl9jb25mbGljdF8xCisJZGVzYyAiVmVydGV4IHNp
ZGUgc3RydWN0IGhhcyBoaWdocCwgZnJhZ21lbnQgc2lkZSBzdHJ1Y3QgbWVkaXVtcC4iCisJZXhw
ZWN0IGxpbmtfZmFpbAorCXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7fQorCXZlcnRl
eCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge2hpZ2hwIGZs
b2F0IGE7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQg
cmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2YWwuYTsKKwkJCSR7VkVSVEVYX09V
VFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTt9OworCQl1bmlmb3JtIFN0cnVj
dCB2YWw7CisJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQl2YXJ5aW5nIG1lZGl1bXAgZmxv
YXQgcmVzOworCQl2b2lkIG1haW4oKQorCQl7CSAKKwkJCW91dDAgPSB2YWwuYTsKKwkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVuaWZvcm1fc3RydWN0X3ByZWNp
c2lvbl9jb25mbGljdF8yCisJZGVzYyAiVmVydGV4IHNpZGUgc3RydWN0IGhhcyBtZWRpdW1wLCBm
cmFnbWVudCBzaWRlIHN0cnVjdCBsb3dwLiIKKwlleHBlY3QgbGlua19mYWlsCisJdmFsdWVzIHtv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDt9CisJdmVydGV4ICIiCisJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBmbG9hdCBhO307CisJCXVuaWZvcm0gU3Ry
dWN0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJcmVzID0gdmFsLmE7CisJCQkke1ZFUlRFWF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdt
ZW50ICIiCisJICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlzdHJ1Y3QgU3RydWN0IHts
b3dwIGZsb2F0IGE7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5UX0RFQ0xB
UkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJ
ewkgCisJCQlvdXQwID0gdmFsLmE7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF9wcmVjaXNpb25fY29uZmxpY3RfMworCWRlc2MgIlZl
cnRleCBzaWRlIHN0cnVjdCBoYXMgbG93cCwgZnJhZ21lbnQgc2lkZSBzdHJ1Y3QgbWVkaXVtcC4i
CisJZXhwZWN0IGxpbmtfZmFpbAorCXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7fQor
CXZlcnRleCAiIgorCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCXN0cnVjdCBTdHJ1Y3Qge2xv
d3AgZmxvYXQgYTt9OworCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCXZhcnlpbmcgbWVkaXVtcCBm
bG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCXJlcyA9IHZhbC5hOworCQkJJHtWRVJU
RVhfT1VUUFVUfQorCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCSAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBmbG9hdCBhO307CisJCXVuaWZvcm0g
U3RydWN0IHZhbDsKKwkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCXZhcnlpbmcgbWVkaXVt
cCBmbG9hdCByZXM7CisJCXZvaWQgbWFpbigpCisJCXsJIAorCQkJb3V0MCA9IHZhbC5hOworCQkJ
JHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgdW5pZm9ybV9zdHJ1Y3Rf
cHJlY2lzaW9uX2NvbmZsaWN0XzQKKwlkZXNjICJWZXJ0ZXggc2lkZSBzdHJ1Y3QgaGFzIGxvd3As
IGZyYWdtZW50IHNpZGUgc3RydWN0IGltcGxpY2l0IG1lZGl1bXAuIgorCWV4cGVjdCBsaW5rX2Zh
aWwKKwl2YWx1ZXMge291dHB1dCBmbG9hdCBvdXQwID0gMy4wO30KKwl2ZXJ0ZXggIiIKKwkJJHtW
RVJURVhfREVDTEFSQVRJT05TfQorCQlzdHJ1Y3QgU3RydWN0IHtsb3dwIGZsb2F0IGE7fTsKKwkJ
dW5pZm9ybSBTdHJ1Y3QgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgcmVzOworCQl2b2lk
IG1haW4oKQorCQl7CisJCQlyZXMgPSB2YWwuYTsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQor
CSIiCisJZnJhZ21lbnQgIiIKKwkgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXN0cnVj
dCBTdHJ1Y3Qge2Zsb2F0IGE7fTsKKwkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkke0ZSQUdNRU5U
X0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWlu
KCkKKwkJewkgCisJCQlvdXQwID0gdmFsLmE7CisJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJfQor
CSIiCitlbmQKKworY2FzZSB1bmlmb3JtX3N0cnVjdF91c2VfY2FzZV9yaXAKKwlkZXNjICJDb21w
bGV4IExpZ2h0IHN0cnVjdCBmcm9tIHVzZSBjYXNlIHRlc3RzLiIKKwl2YWx1ZXMgeworCQl1bmlm
b3JtIGZsb2F0IHZhbC5jb25zdGFudEF0dGVudWF0aW9uID0gMS4wOworCQl1bmlmb3JtIGZsb2F0
IHZhbC5xdWFkcmF0aWNBdHRlbnVhdGlvbiA9IDEuMDsgICAKKwkgICAgb3V0cHV0IGZsb2F0IG91
dDAgPSAyLjA7CisgICAgfQorCXZlcnRleCAiIgorICAgCQkgc3RydWN0IExpZ2h0CisgICAJCSB7
CisJCSAgICAgbWVkaXVtcCB2ZWMzCWNvbG9yOworCQkJIGhpZ2hwIHZlYzQJCXBvc2l0aW9uOwor
CQkJIGhpZ2hwIHZlYzMJCWRpcmVjdGlvbjsKKwkJCSBtZWRpdW1wIGZsb2F0CWNvbnN0YW50QXR0
ZW51YXRpb247CisJCQkgbWVkaXVtcCBmbG9hdAlsaW5lYXJBdHRlbnVhdGlvbjsKKwkJCSBtZWRp
dW1wIGZsb2F0CXF1YWRyYXRpY0F0dGVudWF0aW9uOworCSAgICB9OworCQkke1ZFUlRFWF9ERUNM
QVJBVElPTlN9CisJCXVuaWZvcm0gTGlnaHQgdmFsOworCQl2YXJ5aW5nIG1lZGl1bXAgZmxvYXQg
cmVzOworCQl2b2lkIG1haW4oKQorCQl7CisJCQlyZXMgPSB2YWwuY29uc3RhbnRBdHRlbnVhdGlv
bjsKKwkJCSR7VkVSVEVYX09VVFBVVH0KKwkJfQorCSIiCisJZnJhZ21lbnQgIiIKKwkgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgCQkgc3RydWN0IExpZ2h0CisgICAJCSB7CisJCSAg
ICAgbWVkaXVtcCB2ZWMzCWNvbG9yOworCQkJIGhpZ2hwIHZlYzQJCXBvc2l0aW9uOworCQkJIGhp
Z2hwIHZlYzMJCWRpcmVjdGlvbjsKKwkJCSBtZWRpdW1wIGZsb2F0CWNvbnN0YW50QXR0ZW51YXRp
b247CisJCQkgbWVkaXVtcCBmbG9hdAlsaW5lYXJBdHRlbnVhdGlvbjsKKwkJCSBtZWRpdW1wIGZs
b2F0CXF1YWRyYXRpY0F0dGVudWF0aW9uOworCSAgICB9OworCQlzdHJ1Y3QgU3RydWN0IHtmbG9h
dCBhO307CisJCXVuaWZvcm0gTGlnaHQgdmFsOworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30K
KwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlv
dXQwID0gcmVzICsgdmFsLnF1YWRyYXRpY0F0dGVudWF0aW9uOworCQkJJHtGUkFHTUVOVF9PVVRQ
VVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgdW5pZm9ybV9zdHJ1Y3RfdXNlX2Nhc2VfcmlwX3Nh
bnNfaGlnaHAKKwlkZXNjICJDb21wbGV4IExpZ2h0IHN0cnVjdCBmcm9tIHVzZSBjYXNlIHRlc3Rz
LCB3aXRob3V0IGhpZ2hwIHVzYWdlIgorCXZhbHVlcyB7CisJCXVuaWZvcm0gZmxvYXQgdmFsLmNv
bnN0YW50QXR0ZW51YXRpb24gPSAxLjA7CisJCXVuaWZvcm0gZmxvYXQgdmFsLnF1YWRyYXRpY0F0
dGVudWF0aW9uID0gMS4wOyAgIAorCSAgICBvdXRwdXQgZmxvYXQgb3V0MCA9IDIuMDsKKyAgICB9
CisJdmVydGV4ICIiCisgICAJCSBzdHJ1Y3QgTGlnaHQKKyAgIAkJIHsKKwkJICAgICBtZWRpdW1w
IHZlYzMJY29sb3I7CisJCQkgbWVkaXVtcCB2ZWM0CXBvc2l0aW9uOworCQkJIG1lZGl1bXAgdmVj
MwlkaXJlY3Rpb247CisJCQkgbWVkaXVtcCBmbG9hdAljb25zdGFudEF0dGVudWF0aW9uOworCQkJ
IG1lZGl1bXAgZmxvYXQJbGluZWFyQXR0ZW51YXRpb247CisJCQkgbWVkaXVtcCBmbG9hdAlxdWFk
cmF0aWNBdHRlbnVhdGlvbjsKKwkgICAgfTsKKwkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQl1
bmlmb3JtIExpZ2h0IHZhbDsKKwkJdmFyeWluZyBtZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJcmVzID0gdmFsLmNvbnN0YW50QXR0ZW51YXRpb247CisJCQkke1ZFUlRF
WF9PVVRQVVR9CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgIAkJIHN0cnVjdCBMaWdodAorICAgCQkgeworCQkgICAgIG1lZGl1bXAgdmVj
Mwljb2xvcjsKKwkJCSBtZWRpdW1wIHZlYzQJcG9zaXRpb247CisJCQkgbWVkaXVtcCB2ZWMzCWRp
cmVjdGlvbjsKKwkJCSBtZWRpdW1wIGZsb2F0CWNvbnN0YW50QXR0ZW51YXRpb247CisJCQkgbWVk
aXVtcCBmbG9hdAlsaW5lYXJBdHRlbnVhdGlvbjsKKwkJCSBtZWRpdW1wIGZsb2F0CXF1YWRyYXRp
Y0F0dGVudWF0aW9uOworCSAgICB9OworCQlzdHJ1Y3QgU3RydWN0IHtmbG9hdCBhO307CisJCXVu
aWZvcm0gTGlnaHQgdmFsOworCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJdmFyeWluZyBt
ZWRpdW1wIGZsb2F0IHJlczsKKwkJdm9pZCBtYWluKCkKKwkJewkgCisJCQlvdXQwID0gcmVzICsg
dmFsLnF1YWRyYXRpY0F0dGVudWF0aW9uOworCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCX0KKwki
IgorZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9wcmVwcm9jZXNzb3IuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9z
aGFkZXJzL3ByZXByb2Nlc3Nvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOTFkMjI4MDYxYTBhM2Y2YjBj
ZWNjYjAwOTY4YWUzMzlhOGFmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9wcmVw
cm9jZXNzb3IuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5n
bHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rl
c3ROYW1lID0gJ3ByZXByb2Nlc3Nvcic7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0
ZXN0TmFtZSArICIuIik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
cXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYn
KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAo
ZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICBy
ZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9kdWxl
cy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3ByZXBy
b2Nlc3Nvci50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvcHJlcHJvY2Vzc29yLnRlc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2UzZDI1MTQ5MzI2OTg5MDNlNjRhZDkwNjE0NWRjY2JiMjZkYjg0MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0
YS9nbGVzMi9zaGFkZXJzL3ByZXByb2Nlc3Nvci50ZXN0CkBAIC0wLDAgKzEsNDI4NyBAQAorZ3Jv
dXAgYmFzaWMgIkJhc2ljIFRlc3RzIgorCisJY2FzZSBjb3JyZWN0X3BoYXNlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSNkZWZpbmUgZSArMQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQltZWRpdW1wIGludCBuID0gMWU7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGludmFsaWRfaWRlbnRpZmllcgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJ
CSNkZWZpbmUgZSArMQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW1lZGl1bXAgaW50IDF4
eXogPSAxOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBudWxsX2RpcmVjdGl2ZQorCQl2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDAuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQkjCisJCSMgLy8gY29tbWVu
dAorCS8qc2ZkKi8JCSMgLyogKi8KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0g
MC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2Rp
cmVjdGl2ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSNkZWZpbiBBQUEK
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2lu
Z19pZGVudGlmaWVyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI2RlZmlu
ZQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbXB0
eV9vYmplY3QKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAtMS4wOyB9CisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CSMgZGVmaW5lIFZBTFVFCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTFVF
IC0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9m
dW5jdGlvbgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0xLjA7IH0KKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
IyBkZWZpbmUgVkFMVUUoYSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFM
VUUoMi4wKSAtIDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCisJY2Fz
ZSBlbXB0eV9kaXJlY3RpdmUKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0K
KwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJIworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSAxLjA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlkZW50aWZpZXJfd2l0aF9kb3Vi
bGVfdW5kZXJzY29yZQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJIyBkZWZpbmUgX19WQUxVRV9fCTEKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkvLyBf
X1ZBTFVFX18gbm90IHVzZWQgc2luY2UgaXQgbWlnaHQgYmUgc2V0IGJ5IGFuICJ1bmRlcmx5aW5n
IHNvZnR3YXJlIGxheWVyIgorCQkJCW91dDAgPSBmbG9hdCgxLjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorZW5kICMgYmFzaWMKKworZ3JvdXAgZGVmaW5pdGlvbnMgIlN5bWJv
bCBEZWZpbml0aW9uIFRlc3RzIgorCisJY2FzZSBkZWZpbmVfdmFsdWVfYW5kX2Z1bmN0aW9uCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OUzpzaW5nbGUtbGluZX0KKwkJ
CSMJZGVmaW5lCQlWQUxVRQkJCSgxLjUgKyAyLjUpCisJCQkjCWRlZmluZQkJRlVOQ1RJT04oX19M
SU5FX18sIGIpCV9fTElORV9fK2IKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0g
RlVOQ1RJT04oVkFMVUUsICgoMC4yKSArIDEuOCkgKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVfb2JqZWN0X2ludmFsaWRfc3ludGF4CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkjZGVmaW5lCQlWQUwJCQkyLjAKKwkJCSN1bmRlZgkJVkFMCXNkZmxramZkcworCQkJI2RlZmlu
ZQkJVkFMCQkJMS4wCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoVkFMKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVf
aW52YWxpZF9vYmplY3RfMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI3VuZGVmIF9fTElORV9fCisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoX19MSU5FX18pOwor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZV9pbnZhbGlkX29iamVjdF8yCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkjdW5kZWYgX19GSUxFX18KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX0ZJTEVfXyk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVuZGVmaW5lX2ludmFsaWRfb2JqZWN0XzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSN1bmRlZiBfX1ZFUlNJT05f
XworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KF9fVkVSU0lPTl9fKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVfaW52
YWxpZF9vYmplY3RfNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI3VuZGVmIEdMX0VTCisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoR0xfRVMpOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB1bmRlZmluZV9mdW5jdGlvbgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZQkJRlVOQ1RJT04oYSxiKSBhK2IKKwkJCSN1
bmRlZgkJRlVOQ1RJT04KKwkJCSNkZWZpbmUgCUZVTkNUSU9OKGEsYikgYS1iCisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IEZVTkNUSU9OKDMuMCwgMi4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgZGVmaW5pdGlvbnMKKworZ3JvdXAgaW52YWxp
ZF9kZWZpbml0aW9ucyAiSW52YWxpZCBEZWZpbml0aW9uIFRlc3RzIgorCisJY2FzZSBkZWZpbmVf
bm9uX2lkZW50aWZpZXIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSNkZWZpbmUgMTIzIDMyMQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHVuZGVmX25vbl9pZGVudGlmaWVyXzEKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSN1bmRl
ZiAxMjMKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZl9ub25faWRlbnRp
Zmllcl8yCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkjdW5kZWYgZm9vLmJhcgorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKworZW5kICMgaW52YWxpZF9kZWZpbml0aW9ucworCitncm91cCBvYmplY3RfcmVkZWZpbml0
aW9ucyAiT2JqZWN0IFJlZGVmaW5pdGlvbiBUZXN0cyIKKworCWNhc2UgaW52YWxpZF9vYmplY3Rf
aWRlbnQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEFBQSAJCTIuMAorCQkJIyBkZWZpbmUgQUFBQSAJCTIu
MQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKKwkJCSMgZGVmaW5lIFZBTFVFIChBQUFB
IC0gMS4wKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9vYmpl
Y3Rfd2hpdGVzcGFjZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgQUFBIAkJMi4wCisJCQkjIGRlZmluZSBW
QUxVRSAoQUFBIC0gMS4wKQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQS0gMS4wKQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9vYmplY3Rfb3AKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMg
ZGVmaW5lIEFBQSAJCTIuMAorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKKwkJCSMgZGVm
aW5lIFZBTFVFIChBQUEgKyAxLjApCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbnZhbGlkX29iamVjdF9mbG9hdHZhbF8xCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBBQUEgCQkyLjAK
KwkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxLjApCisJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0g
MS4xKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9vYmplY3Rf
ZmxvYXR2YWxfMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgQUFBIAkJMi4wCisJCQkjIGRlZmluZSBWQUxV
RSAoQUFBIC0gMS4wKQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMGUtMSkKKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfb2JqZWN0X2ludHZhbF8xCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkjIGRlZmluZSBBQUEgCQkyCisJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMSkKKwkJCSMg
ZGVmaW5lIFZBTFVFIChBQUEgLSAyKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgaW52YWxpZF9vYmplY3RfaW50dmFsXzIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEFBQSAJCTIKKwkJ
CSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxKQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDB4MSkK
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NChWQUxVRSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX29iamVjdF8xCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMJZGVmaW5lICBW
QUwxIDEuMAorCQkJI2RlZmluZSAJVkFMMiAyLjAKKworCQkJI2RlZmluZSBSRVMyIChSRVMxICog
VkFMMikKKwkJCSNkZWZpbmUgUkVTMQkoVkFMMiAvIFZBTDEpCisJCQkjZGVmaW5lIFJFUzIJKFJF
UzEgKiBWQUwyKQorCQkJI2RlZmluZSBWQUxVRQkoUkVTMiArIFJFUzEpCisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJb3V0MCA9IFZBTFVFOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSByZWRlZmluZV9vYmplY3RfaWZkZWYKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKworCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBBREVGSU5FIDEKKwkJCSNkZWZpbmUg
QURFRklORSAxCisKKwkJCSNpZmRlZiBBREVGSU5FCisJCQkjZGVmaW5lIFZBTFVFIDEuMAorCQkJ
I2Vsc2UKKwkJCSNkZWZpbmUgVkFMVUUgMC4wCisJCQkjZW5kaWYKKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHJlZGVmaW5lX29iamVjdF91bmRlZl9pZmRlZgorCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjZGVmaW5lIEFERUZJTkUgMQorCQkJI2RlZmlu
ZSBBREVGSU5FIDEKKwkJCSN1bmRlZiBBREVGSU5FCisKKwkJCSNpZmRlZiBBREVGSU5FCisJCQkj
ZGVmaW5lIFZBTFVFIDAuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMVUUgMS4wCisJCQkjZW5k
aWYKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX29iamVjdF9pZm5kZWYKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKworCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBBREVG
SU5FIDEKKwkJCSNkZWZpbmUgQURFRklORSAxCisKKwkJCSNpZm5kZWYgQURFRklORQorCQkJI2Rl
ZmluZSBWQUxVRSAwLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTFVFIDEuMAorCQkJI2VuZGlm
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTFVFOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWRlZmluZV9vYmplY3RfZGVmaW5lZF8xCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQURF
RklORSAxCisJCQkjZGVmaW5lIEFERUZJTkUgMQorCisJCQkjaWYgZGVmaW5lZChBREVGSU5FKQor
CQkJI2RlZmluZSBWQUxVRSAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTFVFIDAuMAorCQkJ
I2VuZGlmCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTFVFOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWRlZmluZV9vYmplY3RfZGVmaW5l
ZF8yCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZp
bmUgQURFRklORSAxCisJCQkjZGVmaW5lIEFERUZJTkUgMQorCisJCQkjaWYgZGVmaW5lZCBBREVG
SU5FCisJCQkjZGVmaW5lIFZBTFVFIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMVUUgMC4w
CisJCQkjZW5kaWYKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX29iamVjdF9j
b21tZW50CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMJ
ZGVmaW5lICBWQUwxIDEuMAorCQkJI2RlZmluZSAJVkFMMiAyLjAKKworCQkJI2RlZmluZSBSRVMy
IC8qIGZkc2prbGZkc2prbCBkc2Zqa2hmZHNqa2ggZmRzamtsaGZkc2praCAqLyAoUkVTMSAqIFZB
TDIpCisJCQkjZGVmaW5lIFJFUzEJKFZBTDIgLyBWQUwxKQorCQkJI2RlZmluZSBSRVMyCS8qIGV3
cmxramhzYWRmICovIChSRVMxICogVkFMMikKKwkJCSNkZWZpbmUgVkFMVUUJKFJFUzIgKyBSRVMx
KQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUxVRTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWZpbmVfb2JqZWN0X211bHRpbGluZV9j
b21tZW50CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CisKKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMJ
ZGVmaW5lICBWQUwxIDEuMAorCQkJI2RlZmluZSAJVkFMMiAyLjAKKworCQkJI2RlZmluZSBSRVMy
IC8qIGZkc2prbGZkc2prbAorCQkJCQkJCWRzZmpraGZkc2praAorCQkJCQkJCWZkc2prbGhmZHNq
a2ggKi8gKFJFUzEgKiBWQUwyKQorCQkJI2RlZmluZSBSRVMxCShWQUwyIC8gVkFMMSkKKwkJCSNk
ZWZpbmUgUkVTMgkvKiBld3Jsa2poc2FkZiAqLyAoUkVTMSAqIFZBTDIpCisJCQkjZGVmaW5lIFZB
TFVFCShSRVMyICsgUkVTMSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFM
VUU7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIG9iamVjdF9yZWRl
ZmluaXRpb25zCisKK2dyb3VwIGludmFsaWRfcmVkZWZpbml0aW9ucyAiSW52YWxpZCBSZWRlZmlu
aXRpb25zIFRlc3RzIgorCisJY2FzZSBpbnZhbGlkX2lkZW50aWZpZXJfMgorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBk
ZWZpbmUgR0xfVkFMVUUJMS4wCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoR0xfVkFMVUUpOworCQkJfQorCQkiIgorCWVuZAorCitlbmQg
IyBpbnZhbGlkX3JlZGVmaW5pdGlvbnMKKworZ3JvdXAgY29tbWVudHMgIkNvbW1lbnQgVGVzdHMi
CisKKwljYXNlIG11bHRpbGluZV9jb21tZW50X2RlZmluZQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDQuMjsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBWQUxVRSAvKiBjdXJyZW50CisJCQkJCQl2
YWx1ZSAqLyA0LjIKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9jb21tZW50CisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCW91dDAgPSAwLjA7CisJCQkJLyogLyogKi8KKwkJCQlvdXQwID0gMS4wOworCQkJ
CS8vICovCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNvbW1lbnRf
dHJpY2tfMQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkvKi8KKwkJCQlvdXQwID0gMC4wOworCQkJCS8qLworCQkJCW91
dDAgPSAxLjA7CisJCQkJLyoqLworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBjb21tZW50X3RyaWNrXzIKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7
IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLyoqLworCQkJCW91dDAgPSAxLjA7CisJ
CQkJLyovCisJCQkJb3V0MCA9IDAuMDsKKwkJCQkvKiovCisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfY29tbWVudAorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkvKiAvKiAqLyAqLworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSAxLjA7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9jb21tZW50XzEKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLyoKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dW50ZXJtaW5hdGVkX2NvbW1lbnRfMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCS8qCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGNvbW1lbnRzCisKK2dyb3VwIGZ1bmN0aW9uX2Rl
ZmluaXRpb25zICJGdW5jdGlvbiBEZWZpbml0aW9ucyBUZXN0cyIKKworCWNhc2Ugc2FtZV9vYmpl
Y3RfYW5kX2Z1bmN0aW9uX3BhcmFtCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4w
OyB9CisKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCSNkZWZpbmUgVkFMVUUgMS4wCisJCQkjZGVmaW5lIEZVTkNUSU9OKFZBTFVF
LCBCKQkoVkFMVUUtQikKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gRlVOQ1RJ
T04oMy4wLCAyLjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBj
b21wbGV4X2Z1bmMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA1MTguNTsgfQorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJI2RlZmluZSBBQUEoYSxiKQlhKihCQkIoYSxiKSkKKwkJCSNkZWZpbmUgQkJCKGEsYikJYS1i
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IEJCQihBQUEoOC4wLzQuMCwgMi4w
KSpCQkIoMi4wKjIuMCwwLjc1KjIuMCksIEFBQSg0MC4wLDEwLjAqQkJCKDUuMCwzLjApKSk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZ1bmN0aW9uX2RlZmluaXRp
b25fd2l0aF9jb21tZW50cworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsgfQor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJLyogc2RmbGprICovICAJIy8qIHNkZmxqayAqL2RlZmluZSAvKiBzZGZsamsgKi8gRlVO
QyggLyogamtsc2ZkKi9hIC8qc2ZkamtsaCovLCAvKnNkZmtsaiAqL2IgLypzZGZrbGoqLykJCWEr
YgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgZnVuY3Rpb25fZGVmaW5pdGlv
bnMKKworZ3JvdXAgcmVjdXJzaW9uICJSZWN1cnNpb25zIFRlc3RzIgorCisJY2FzZSByZWN1cnNp
b25fMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJIyBkZWZpbmUgQUFBCUFBQQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHJlY3Vyc2lvbl8yCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBBQUEJQkJCCisJCQkjZGVm
aW5lIEJCQiAJQUFBCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoQUFBKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVjdXJzaW9u
XzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSMgZGVmaW5lIEFBQQkoMS4wK0JCQikKKwkJCSNkZWZpbmUgQkJCIAkoMi4w
K0FBQSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChBQUEpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWN1cnNpb25fNAorCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJIyBkZWZpbmUgQUFBKGEpCUFBQShhKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSgxLjApKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgcmVjdXJzaW9uXzUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEFBQShhLCBiKQlBQUEo
YiwgYSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChBQUEoMS4wLCAyLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgcmVjdXJz
aW9uCisKK2dyb3VwIGZ1bmN0aW9uX3JlZGVmaW5pdGlvbnMgIkZ1bmN0aW9uIFJlZGVmaW5pdGlv
biBUZXN0cyIKKworCWNhc2UgZnVuY3Rpb25fcmVkZWZpbml0aW9uXzEKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgorCQkJIyBkZWZpbmUgRlVOQyggYSwg
YikJCWErYgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IEZVTkMoMS4wLCAyLjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBmdW5jdGlvbl9yZWRlZmluaXRpb25fMgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDMuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSMgZGVmaW5lIEZVTkMoYSxiKQkJKGEgICtiKQorCQkJIyBkZWZpbmUgRlVOQyggYSwgYiApKGEJ
CQkrYikKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91
dDAgPSBGVU5DKDEuMCwgMi4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgZnVuY3Rpb25fcmVkZWZpbml0aW9uXzMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSAzLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkj
IGRlZmluZSBGVU5DKGEsYikJCShhICArYikKKwkJCSMgZGVmaW5lIEZVTkMoYSxiKShhCS8qIGNv
bW1lbnQKKwkJCQkJCQkJCSAqLyArYikKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9mdW5jdGlvbl9yZWRlZmluaXRpb25fcGFy
YW1fMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKwkJCSMgZGVmaW5lIEZVTkMo
QSxiKQkJQStiCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnZhbGlkX2Z1bmN0aW9uX3JlZGVmaW5pdGlvbl9wYXJhbV8yCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBG
VU5DKGEsYikJCWErYgorCQkJIyBkZWZpbmUgRlVOQyhhLGIsYykJYStiK2MKKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwg
Mi4wLCAzLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9mdW5jdGlvbl9y
ZWRlZmluaXRpb25fcGFyYW1fMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKwkJ
CSMgZGVmaW5lIEZVTkMoYSxiKQkJYithCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCkpOworCQkJfQorCQkiIgor
CWVuZAorCitlbmQgIyBmdW5jdGlvbnNfcmVkZWZpbml0aW9ucworCitncm91cCBpbnZhbGlkX2Z1
bmN0aW9uX2RlZmluaXRpb25zICJJbnZhbGlkIEZ1bmN0aW9uIERlZmluaXRpb24gVGVzdHMiCisK
KwljYXNlIGFyZ3VtZW50c18xCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZV
TkMpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVudHNfMgorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBk
ZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBhcmd1bWVudHNfMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKCgo
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRzXzQKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVm
aW5lIEZVTkMoYSxiKQkJYStiCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQykpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBh
cmd1bWVudHNfNQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCkp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVudHNfNgorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZp
bmUgRlVOQyhhLGIpCQlhK2IKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApOworCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBhcmd1bWVudHNfNworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5D
KDEuMCwpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRzXzgKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCwgMy4wKSk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHVuaXF1ZV9wYXJhbV9uYW1lCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBG
VU5DKGEsYSkJCWErYQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBhcmd1bWVudF9saXN0XzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoYSBiKQkJYStiCisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVO
QygxLjAsMi4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFyZ3VtZW50X2xpc3RfMgor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJIyBkZWZpbmUgRlVOQyhhICsgYikJCWErYgorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVudF9saXN0XzMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5l
IEZVTkMoLGEsYikJCWErYgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOworCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBub19jbG9zaW5nX3BhcmVudGhlc2lzXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoCisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
RlVOQygxLjAsMi4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5vX2Nsb3NpbmdfcGFy
ZW50aGVzaXNfMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhBICBhK2IKKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjAp
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugbm9fY2xvc2luZ19wYXJlbnRoZXNpc18zCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkjIGRlZmluZSBGVU5DKEEsQixDICBhK2IKKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2Ugbm9fY2xvc2luZ19wYXJlbnRoZXNpc180CisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkj
IGRlZmluZSBGVU5DKAorCQkiIgorCWVuZAorCitlbmQgIyBpbnZhbGlkX2Z1bmN0aW9uX2RlZmlu
aXRpb25zCisKK2dyb3VwIHNlbWFudGljICJTZW1hbnRpYyBUZXN0cyIKKworCWNhc2Ugb3BzX2Fz
X2FyZ3VtZW50cworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIwLjA7IH0KKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CSNkZWZpbmUgRk9PKGEsIGIpCQkoMSBhIDkpIGIgMgorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCW91dDAgPSBmbG9hdChGT08oKywgKikpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBjb3JyZWN0X29yZGVyCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQkjZGVmaW5lIEZVTkMoQSkgQQorCQkJI2RlZmluZSBBIDIuMAorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DKEEgLSAxLjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBzZW1hbnRpYworCitncm91cCBwcmVkZWZp
bmVkX21hY3JvcyAiUHJlZGVmaW5lZCBNYWNyb3MgVGVzdHMiCisKKwljYXNlIHZlcnNpb24KKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxMDAuMDsgfQorCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkjZGVmaW5lIEFBQSBfX1ZFUlNJT05fXworCQkJCW91dDAgPSBmbG9hdChBQUEp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBnbF9lc18xCisJCXZh
bHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJb3V0MCA9IGZsb2F0KEdMX0VTKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZ2xfZXNfMgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEu
MDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJI2RlZmluZSBBQUEoQSkgQQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CW91dDAgPSBmbG9hdChBQUEoR0xfRVMpKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbGluZV8xCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9
CisJCWJvdGggIiIKKwkJCWNvbnN0IG1lZGl1bXAgaW50IGxpbmUgPSBfX0xJTkVfXzsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCW91dDAgPSBmbG9hdChsaW5lKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbGluZV8yCisJCSMgTm90ZTogQXJndW1lbnRzIGFyZSBtYWNybyBy
ZXBsYWNlZCBpbiB0aGUgZmlyc3Qgc3RhZ2UuCisJCSMgTWFjcm8gcmVwbGFjZW1lbnQgbGlzdCBp
cyBleHBhbmRlZCBpbiB0aGUgbGFzdCBzdGFnZS4KKwkJdmFsdWVzIHsgb3V0cHV0IHZlYzQgb3V0
MCA9IHZlYzQoMTEuMCwgMTEuMCwgOS4wLCAxMC4wKTsgfQorCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlM6c2luZ2xlLWxpbmV9CisJCQkj
ZGVmaW5lIEJCQgkJX19MSU5FX18sIC8qCisJCQkJKi8gX19MSU5FX18KKwkJCSNkZWZpbmUgQUFB
KGEsYikgQkJCLCBhLCBiCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IHZlYzQo
QUFBKF9fTElORV9fLAorCQkJCQkJX19MSU5FX18KKwkJCQkJCSkpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmaWxlCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBv
dXQwID0gMC4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmbG9hdChf
X0ZJTEVfXyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlmX2ds
X2VzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCSNpZiBHTF9FUworCQkJCW91dDAgPSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQw
ID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgaWZfdmVyc2lvbgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgX19WRVJTSU9OX18gPT0gMTAwCisJCQkJb3V0MCA9
IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAtMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBwcmVkZWZpbmVkX21hY3JvcworCitncm91cCBjb25k
aXRpb25hbF9pbmNsdXNpb24gIkNvbmRpdGlvbmFsIEluY2x1c2lvbiBUZXN0cyIKKworCWNhc2Ug
YmFzaWNfMQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkjZGVmaW5lIEFBQSBhc2RmCisKKwkjaWYgZGVmaW5lZCBBQUEgJiYg
IWRlZmluZWQoQkJCKQorCQkJCW91dDAgPSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQwID0gMC4wOwor
CSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiYXNpY18y
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCSMgTm90ZTogdGhpcyBp
cyBleHBlY3RlZCB0byBmYWlsIGNvbnRyYXJ5IHRvIG5hdGl2ZSBkRVFQLAorCQkjIHNlZSBodHRw
czovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMTUyMworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNkZWZpbmUgQUFBIGRlZmluZWQo
QkJCKQorCisJI2lmICFBQUEKKwkJCQlvdXQwID0gMS4wOworCSNlbHNlCisJCQkJb3V0MCA9IDAu
MDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYmFz
aWNfMworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjaWYgMAorCQkJCW91dDAgPSAtMS4wOworCSNlbGlmIDAKKwkJCQlvdXQw
ID0gLTIuMDsKKwkjZWxpZiAxCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAt
My4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBi
YXNpY180CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCSNpZiAwCisJCQkJb3V0MCA9IC0xLjA7CisJI2VsaWYgMAorCQkJCW91
dDAgPSAtMi4wOworCSNlbHNlCisJCQkJb3V0MCA9IDEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYmFzaWNfNQorCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMQorCQkJ
CW91dDAgPSAxLjA7CisJI2VsaWYgMAorCQkJCW91dDAgPSAtMi4wOworCSNlbHNlCisJCQkJb3V0
MCA9IC0xLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVuYXJ5X29wc18xCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAhKCh+MiA+PiAxKSAmIDEpCisJCQkJb3V0MCA9
IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAtMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmFyeV9vcHNfMgorCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgISgofigt
IC0gLSAtIC0gMSArICsgKyArICsgKzEpID4+IDEpICYgMSkKKwkJCQlvdXQwID0gLTEuMDsKKwkj
ZWxzZQorCQkJCW91dDAgPSAxLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKK2VuZCAjIGNvbmRpdGlvbmFsX2luY2x1c2lvbgorCitncm91cCBpbnZhbGlkX29w
cyAiSW52YWxpZCBPcGVyYXRpb25zIFRlc3RzIgorCisJY2FzZSBpbnZhbGlkX29wXzEKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmICEoKH4oKyArKzEgLSAtIC0gLTEpID4+IDEpICYg
MSkKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZWxzZQorCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGludmFsaWRfb3BfMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkjaWYgISgofigrICsgKzEgLSAtLSAtMSkgPj4gMSkgJiAxKQorCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KC0xLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxp
ZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI2RlZmluZSBBQUEgMQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiBkZWZpbmVkCisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
aW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfMgorCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI2RlZmluZSBB
QUEgMQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiBkZWZpbmVkKCkKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfaWRlbnRpZmllcl8zCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkj
ZGVmaW5lIEFBQSAxCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIGRlZmluZWQoCisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfNAorCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJI2RlZmluZSBBQUEgMQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiBkZWZpbmVk
KQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlmCisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVy
XzUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSNkZWZpbmUgQUFBIDEKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYg
ZGVmaW5lZCgoQUFBKSkKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEu
MCwyLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2RlZmlu
ZWRfZXhwZWN0ZWRfcnBhcmVuCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjZGVmaW5lIEFBQSAxCisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJI2lmIGRlZmluZWQoQUFBCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVmaW5lZF9k
ZWZpbmUKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkjZGVmaW5l
IGRlZmluZSAxCisJI2RlZmluZSBBQUEgMS4wCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IEFBQTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgaW52
YWxpZF9vcHMKKworZ3JvdXAgdW5kZWZpbmVkX2lkZW50aWZpZXJzICJVbmRlZmluZWQgSWRlbnRp
ZmllcnMgVGVzdHMiCisKKwljYXNlIHZhbGlkX3VuZGVmaW5lZF9pZGVudGlmaWVyXzEKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJI2lmIDEgfHwgQUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAtMS4w
OworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2YWxp
ZF91bmRlZmluZWRfaWRlbnRpZmllcl8yCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0g
MS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAwICYmIEFBQQorCQkJCW91dDAg
PSAtMS4wOworCSNlbHNlCisJCQkJb3V0MCA9IDEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfMQorCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMSAtIENDQyArICgtQUFBIHx8IEJCQikKKwkJCQkk
e1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJI2lmICFBCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZWxz
ZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOworCSNlbmRpZgorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl8zCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2
b2lkIG1haW4oKQorCQkJeworCSNpZiAtQQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4w
KTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZp
ZXJfNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgfkEKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVu
ZGVmaW5lZF9pZGVudGlmaWVyXzUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIEEg
JiYgQgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfNgorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKyAgICAjZGVmaW5lIEEgMQorCSNpZiBBICYmIEIKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVu
ZGVmaW5lZF9pZGVudGlmaWVyXzcKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisgICAgI2Rl
ZmluZSBCIDEKKwkjaWYgQSAmJiBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
MS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwor
CSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl84
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworICAgICNkZWZpbmUgQiAxCisJI2RlZmluZSBB
IDIKKwkjdW5kZWYgQQorCSNpZiBBICYmIEIKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEu
MCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVmaW5lZF9pZGVudGlm
aWVyXzkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIEEgfHwgQgorCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfMTAKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7Cisg
ICAgI2RlZmluZSBBIDAKKwkjaWYgQSB8fCBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0x
LjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRp
Zmllcl8xMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKyAgICAjZGVmaW5lIEEgMAorCSNk
ZWZpbmUgQiAyCisJI3VuZGVmIEIKKwkjaWYgQSB8fCBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KC0xLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRf
aWRlbnRpZmllcl8xMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKyAgICAjZGVmaW5lIEIg
MQorCSNpZiBBIHx8IEIKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CisJI2VuZGlm
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIHVuZGVmaW5lZF9pZGVudGlmaWVycworCitncm91
cCBpbnZhbGlkX2NvbmRpdGlvbmFscyAiSW52YWxpZCBDb25kaXRpb25hbHMgVGVzdHMiCisKKwlj
YXNlIGVtcHR5X2lmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZgorCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGVtcHR5X2lmZGVmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZmRlZgorCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGVtcHR5X2lmbmRlZgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWZuZGVmCisJ
CQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgZW1wdHlfaWZfZGVmaW5lZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkj
aWYgZGVmaW5lZAorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9pZl8xCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCSNpZiAxCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW50ZXJtaW5hdGVkX2lmXzIKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDAKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bnRlcm1pbmF0ZWRfaWZkZWYK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmZGVmIEZPT0JBUgorCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVu
dGVybWluYXRlZF9pZm5kZWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmbmRlZiBH
TF9FUworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9lbHNlXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJI2lmIDEKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9lbHNlXzIKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDAKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVy
bWluYXRlZF9lbGlmXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDAKKwkjZWxp
ZiAxCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgdW50ZXJtaW5hdGVkX2VsaWZfMgorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkjaWYgMQorCSNlbGlmIDAKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bnRlcm1pbmF0ZWRfZWxpZl8zCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAwCisJI2VsaWYgMAorCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDIuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVs
aWZfYWZ0ZXJfZWxzZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMAorCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZWxpZiAxCisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZWxzZV93aXRob3V0X2lmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNlbHNlCisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZWxpZl93aXRob3V0X2lmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCSNlbGlmIDEKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNl
bmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbmRpZl93aXRob3V0X2lmCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEu
MCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVsc2VfYWZ0ZXJfZWxzZQor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgIUdMX0VTCisJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNCgtMS4wKTsKKwkjZWxzZQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
LTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9lbGlmX3dp
dGhvdXRfaWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDEKKwkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJIwllbGlmCisJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNCgwLjApOworCSMJZW5kaWYKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgaWZfZmxvYXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDEuMjMx
CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSMJZWxpZgorCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkjCWVuZGlmCisJI2VuZGlmCisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHRva2Vuc19hZnRlcl9pZgorCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkjaWYgMSBmb29iYXIKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB0b2tlbnNfYWZ0ZXJf
ZWxpZgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMAorCSNlbGlmIGZvb2Jhcgor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlmCisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHRva2Vuc19hZnRlcl9lbHNlCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4o
KQorCQkJeworCSNpZiAxCisJI2Vsc2UgZm9vYmFyIDEuMjMxCisJI2VuZGlmCisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dG9rZW5zX2FmdGVyX2VuZGlmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAxCisJ
I2Vsc2UKKwkjZW5kaWYgZm9vYmFyCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
MS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdG9rZW5zX2FmdGVyX2lmZGVmCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZmRlZiBGT09CQVIgZm9vYmFyCisJI2Vsc2UKKwkj
ZW5kaWYKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB0b2tlbnNfYWZ0ZXJfaWZuZGVmCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4o
KQorCQkJeworCSNpZm5kZWYgRk9PQkFSICwsICstIDw8IGJhcmJhcgorCSNlbHNlCisJI2VuZGlm
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworZW5kICMgaW52YWxpZF9jb25kaXRpb25hbHMKKworZ3JvdXAgY29uZGl0aW9uYWxzICJD
b25kaXRpb25hbHMgVGVzdHMiCisKKwljYXNlIHVudGVybWluYXRlZF9uZXN0ZWRfYmxvY2tzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAxCisJIwlpZiAxCisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaWZk
ZWZfMQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
I2RlZmluZSBBQUEKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZmRlZiBBQUEKKwkJCQlvdXQwID0gMS4wOwor
CSNlbHNlCisJCQkJb3V0MCA9IC0xLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGlmZGVmXzIKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAg
PSAxLjA7IH0KKwkJYm90aCAiIgorCSNkZWZpbmUgQUFBCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgZGVm
aW5lZCAgKCBBQUEpCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAtMS4wOwor
CSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpZmRlZl8z
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCSNpZmRlZiBBQUEKKwkJCQlvdXQwID0gLTEuMDsKKwkjZWxzZQorCQkJCW91dDAg
PSAxLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGludmFsaWRfaWZkZWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmZGVmIDEKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpZm5kZWZfMQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9
IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWZuZGVmIEFBQQorCQkJCW91dDAg
PSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQwID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaWZuZGVmXzIKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkjZGVmaW5lIEFBQQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkjaWZuZGVmIEFBQQorCQkJCW91dDAgPSAtMS4wOworCSNlbHNlCisJCQkJb3V0MCA9IDEuMDsK
KwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxp
ZF9pZm5kZWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmbmRlZiAxCisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWl4ZWRfY29uZGl0aW9uYWxfaW5jbHVzaW9uCisJCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZm5kZWYg
QUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxpZiAxCisJCQkJb3V0MCA9IC0xLjA7CisJI2VuZGlm
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9pZl8xCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCSNpZiBHTF9FUworCSMJaWYgX19WRVJTSU9OX18gIT0gMTAwCisJCQkJb3V0MCA9IC0x
LjA7CisJIwllbHNlCisJCQkJb3V0MCA9IDEuMDsKKwkjCWVuZGlmCisJI2VuZGlmCisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9pZl8yCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNp
ZiAxCisJIwlpZiAwCisJCQkJb3V0MCA9IC0xLjA7CisJIwllbHNlCisJIwkJaWYgMAorCQkJCW91
dDAgPSAtMS4wOworCSMJCWVsaWYgMQorCQkJCW91dDAgPSAxLjA7CisJIwkJZWxzZQorCQkJCW91
dDAgPSAtMS4wOworCSMJCWVuZGlmCisJIwllbmRpZgorCSNlbmRpZgorCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBuZXN0ZWRfaWZfMworCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMAorCSMJ
aWYgMQorCQkJCW91dDAgPSAtMS4wOworCSMJZW5kaWYKKwkjZWxzZQorCQkJCW91dDAgPSAxLjA7
CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGNvbmRp
dGlvbmFscworCitncm91cCBkaXJlY3RpdmUgIkRpcmVjdGl2ZSBUZXN0cyIKKworCWNhc2UgdmVy
c2lvbgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
LyogYXNkZiAqLworCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVyc2lvbl9pc19sZXNz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSN2ZXJzaW9uIDk5CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVy
c2lvbl9pc19tb3JlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSN2ZXJzaW9u
IDEwMQorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlcnNpb25fbWlzc2luZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkjdmVyc2lvbgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHZlcnNpb25fbm90X2ZpcnN0X3N0YXRlbWVudF8xCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkjdmVyc2lvbiAxMDAKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVyc2lvbl9u
b3RfZmlyc3Rfc3RhdGVtZW50XzIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjZGVmaW5lIEZPTyBCQVIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlcnNpb25faW52YWxpZF90
b2tlbl8xCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSN2ZXJzaW9uIDEwMC4w
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdmVyc2lvbl9pbnZhbGlkX3Rva2VuXzIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJI3ZlcnNpb24gZm9vYmFyCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF92ZXJzaW9uCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSN2ZXJzaW9uIEFBQQorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFkZGl0aW9uYWxfdG9r
ZW5zCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSN2ZXJzaW9uIDEwMCBmb29i
YXIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBlcnJvcl93aXRoX25vX3Rva2VucworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkjZXJyb3IKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBlcnJvcgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkjZGVmaW5lIEFBQSBhc2RmCisJI2Vycm9yIDEgKiBBQUEgLyogY29tbWVudCAqLworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAj
IGRpcmVjdGl2ZQorCitncm91cCBidWlsdGluICJCdWlsdC1pbiBTeW1ib2wgVGVzdHMiCisKKwlj
YXNlIGxpbmUKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJI2xpbmUgMQorCQkJCW91dDAgPSBmbG9hdChfX0xJTkVfXyk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxpbmVfYW5kX2ZpbGUKKwkJ
dmFsdWVzIHsgb3V0cHV0IHZlYzQgb3V0MCA9IHZlYzQoMjM0LjAsIDIzNC4wLCAxMC4wLCAxMC4w
KTsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjbGluZSAyMzQgMTAKKwkJCQlvdXQwID0g
dmVjNChfX0xJTkVfXywgX19MSU5FX18sIF9fRklMRV9fLCBfX0ZJTEVfXyk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxpbmVfZXhwcmVzc2lvbgorCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIwLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkjbGluZSArMjAKKwkJCQlvdXQwID0gZmxvYXQoX19MSU5FX18pOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsaW5lX2FuZF9maWxlX2V4cHJlc3Npb24KKwkJdmFs
dWVzIHsgb3V0cHV0IHZlYzQgb3V0MCA9IHZlYzQoMjQzLjAsIDI0My4wLCAxMC4wLCAxMC4wKTsg
fQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCSNsaW5lICgyMzMgKzEwKSAoKzEwKQorCQkJ
CW91dDAgPSB2ZWM0KF9fTElORV9fLCBfX0xJTkVfXywgX19GSUxFX18sIF9fRklMRV9fKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbGluZV9kZWZpbmVkXzEKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA0LjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJI2RlZmluZSBBIDQKKwkjbGluZSBBCisJCQkJb3V0MCA9IGZsb2F0KF9fTElORV9fKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbGluZV9kZWZpbmVkXzIK
KwkJdmFsdWVzIHsgb3V0cHV0IHZlYzQgb3V0MCA9IHZlYzQoMjM0LjAsIDIzNC4wLCAxMC4wLCAx
MC4wKTsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjZGVmaW5lIEEgMTAKKwkjbGluZSAy
MzQgQQorCQkJCW91dDAgPSB2ZWM0KF9fTElORV9fLCBfX0xJTkVfXywgX19GSUxFX18sIF9fRklM
RV9fKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZW1wdHlfbGlu
ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjbGluZQorCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRf
bGluZV9maWxlXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2xpbmUgMjIgMS4yMzQK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX0xJTkVfXywgX19MSU5FX18sIF9f
RklMRV9fLCBfX0ZJTEVfXyk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfbGlu
ZV9maWxlXzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2xpbmUgMjMzIDEwIDIKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX0xJTkVfXywgX19MSU5FX18sIF9fRklM
RV9fLCBfX0ZJTEVfXyk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfbGluZV9m
aWxlXzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2xpbmUgZm9vYmFyCisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoX19MSU5FX18sIF9fTElORV9fLCBfX0ZJTEVfXywg
X19GSUxFX18pOworCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBidWlsdGluCisKK2dyb3VwIHBy
YWdtYXMgIlByYWdtYSBUZXN0cyIKKworCSMgTm90ZTogcHJhZ21hX3ZlcnRleCB3YXMgcmVtb3Zl
ZCBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGRFUVAuCisJIyBUaGlzIHRlc3Qgd2FzIGluIHRoZSBn
bGVzMi1mYWlsdXJlcy50eHQgc2tpcCBsaXN0IGluIHRoZQorCSMgbmF0aXZlIGRFUVAuIFdoaWxl
IGl0IHNlZW1lZCB0aGVvcmV0aWNhbGx5IGNvcnJlY3QsIGluCisJIyBwcmFjdGljZSwgbGlua2lu
ZyB0aGUgcHJvZ3JhbSBmYWlsZWQgb24gTWFjIE9TIG9uIGFsbCBHUFUKKwkjIHR5cGVzLiBTaW5j
ZSB0aGlzIHZlcnNpb24gb2YgdGhlIGRFUVAgaXMgdW5saWtlbHkgdG8gYmUKKwkjIHJldmlzaXRl
ZCwgdGhlIHRlc3Qgd2FzIHJlbW92ZWQgaGVyZSwgcmF0aGVyIHRoYW4gYWRkaW5nIGl0CisJIyB0
byB0Y3VTa2lwTGlzdC5qcy4KKworCSMgTm90ZTogcHJhZ21hX2ZyYWdtZW50IHdhcyByZW1vdmVk
IGNvbXBhcmVkIHRvIHRoZSBuYXRpdmUgZEVRUC4KKwkjIFRoaXMgdGVzdCB3YXMgYnVnZ3k7IGl0
IHJlcXVpcmVkIHRoYXQgYSB2YXJ5aW5nIHRoYXQgd2FzIG5vdAorCSMgaW52YXJpYW50IGluIHRo
ZSB2ZXJ0ZXggc2hhZGVyLCBidXQgaW52YXJpYW50IGluIHRoZSBmcmFnbWVudAorCSMgc2hhZGVy
LCBtdXN0IGxpbmsuIFRoZSB0ZXN0IHdhcyBpbiB0aGUgZ2xlczItZmFpbHVyZXMudHh0IHNraXAK
KwkjIGxpc3QgaW4gdGhlIG5hdGl2ZSB0ZXN0IHN1aXRlLiBUbyBhdm9pZCBjb25mdXNpb24gdGhl
IHRlc3Qgd2FzCisJIyByZW1vdmVkIGhlcmUsIHJhdGhlciB0aGFuIGFkZGluZyBpdCB0byB0Y3VT
a2lwTGlzdC5qcy4KKworCWNhc2UgcHJhZ21hX21hY3JvX2V4cAorCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJI2RlZmluZSBvZmYJSU5WQUxJRAorCS8q
IHByYWdtYSBsaW5lIG5vdCBtYWNybyBleHBhbmRlZCAqLworCSNwcmFnbWEgZGVidWcob2ZmKQor
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBwcmFnbWFfdW5yZWNvZ25pemVkX2RlYnVnCisJCWV4cGVjdCBidWls
ZF9zdWNjZXNzZnVsCisJCWJvdGggIiIKKwkJCSNwcmFnbWEgZGVidWcoMS4yMykKKworCQkJLy8g
dW5yZWNvZ25pemVkIHByZXByb2Nlc3NvciB0b2tlbgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcHJhZ21hX3VucmVjb2duaXpl
ZF90b2tlbgorCQlleHBlY3QgYnVpbGRfc3VjY2Vzc2Z1bAorCQlib3RoICIiCisJCQkjcHJhZ21h
ICoqJQorCisJCQkvLyB0cmFpbGluZyBieXRlcyBmb3JtIGEgdmFsaWQgYnV0IHVucmVjb2duaXpl
ZCBwcmVwcm9jZXNzb3IgdG9rZW4KKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIHByYWdtYXMKKworZ3JvdXAgZXh0ZW5zaW9ucyAi
RXh0ZW5zaW9uIFRlc3RzIgorCisJY2FzZSBiYXNpYworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCisKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hY3JvX2V4cAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisJI2RlZmluZSB3YXJuIGVuYWJsZQorCisJI2V4dGVuc2lvbiBhbGwgOiB3
YXJuCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1pc3NpbmdfZXh0ZW5zaW9uX25hbWUKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJI2V4dGVuc2lvbgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfZXh0ZW5zaW9u
X25hbWUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJI2V4dGVuc2lvbiAyIDog
YWxsCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbWlzc2luZ19jb2xvbgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkjZXh0ZW5zaW9uIGFsbAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGV4cGVjdGVkX2NvbG9uCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCSNleHRlbnNpb24gYWxsIDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2JlaGF2aW9yCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSNleHRlbnNpb24gYWxsIDoKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnZhbGlkX2JlaGF2aW9yXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJI2V4
dGVuc2lvbiBhbGwgOiBXQVJOCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9iZWhhdmlvcl8yCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCSNleHRlbnNpb24gYWxsIDogcmVxdWlyZQorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFs
aWRfY2hhcl9pbl9uYW1lCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSNleHRl
bnNpb24gYWxsKiA6IHdhcm4KKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2NoYXJfaW5fYmVoYXZpb3IKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJI2V4dGVuc2lvbiBhbGwgOiB3YXIqbgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVu
dGVybWluYXRlZF9jb21tZW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCSNl
eHRlbnNpb24gYWxsIDogd2FybiAvKmFzZAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEu
MCk7CisJCQl9CisJCSIiCisJZW5kCitlbmQgIyBleHRlbnNpb25zCisKK2dyb3VwIGV4cHJlc3Np
b25zICJFeHByZXNzaW9uIFRlc3RzIgorCisJY2FzZSBzaGlmdF9sZWZ0CisJCXZhbHVlcyB7IG91
dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNk
ZWZpbmUgVkFMIDQKKwkJCQlvdXQwID0gMC4wOworCQkJCSNpZiAoVkFMIDw8IDIpID09IDE2CisJ
CQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHNoaWZ0X3JpZ2h0CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0g
MS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDUKKwkJCQlv
dXQwID0gMC4wOworCQkJCSNpZiAoVkFMID4+IDEpID09IDIKKwkJCQkJb3V0MCA9IDEuMDsKKwkJ
CQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY21wX2xl
c3NfdGhhbgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVmaW5lIFZBTCA1CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkj
aWYgKFZBTCA8IDYpICYmICgtVkFMIDwgLTQpCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlm
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxlc3Nfb3JfZXF1YWwK
KwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJI2RlZmluZSBWQUwgNgorCQkJCW91dDAgPSAwLjA7CisJCQkJI2lmIChWQUwg
PD0gNikgJiYgKC1WQUwgPD0gLTYpCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlmCisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG9yCisJCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZp
bmUgVkFMIDYKKwkJCQlvdXQwID0gMC4wOworCQkJCSNpZiAoVkFMIHwgNSkgPT0gNworCQkJCQlv
dXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBhbmQKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90
aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2RlZmluZSBWQUwgNgorCQkJCW91dDAgPSAwLjA7CisJ
CQkJI2lmIChWQUwgJiA1KSA9PSA0CisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlmCisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHhvcgorCQl2YWx1ZXMgeyBvdXRw
dXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVm
aW5lIFZBTCA2CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgKFZBTCBeIDUpID09IDMKKwkJCQkJ
b3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbW9kCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJv
dGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDEyCisJCQkJb3V0MCA9IDAuMDsK
KwkJCQkjaWYgKFZBTCAlIDUpID09IDIKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfdmFsdWUK
KwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJI2RlZmluZSBWQUwgKCggICg0ICAgKSApICApCisJCQkJb3V0MCA9IDAuMDsK
KwkJCQkjaWYgVkFMID49IDQKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfdHJpY2t5CisJCXZh
bHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSNkZWZpbmUgVkFMICgoICAoNCAgICkgKQorCQkJCW91dDAgPSAwLjA7CisJCQkJI2lm
IFZBTCkgPj0gNAorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwYXJlbnRoZXNpc19pZl9ubworCQl2YWx1ZXMgeyBv
dXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkj
ZGVmaW5lIFZBTCA0CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgVkFMID49IDQKKwkJCQkJb3V0
MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgcGFyZW50aGVzaXNfaWYKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7
IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2RlZmluZSBWQUwgNAorCQkJCW91dDAg
PSAwLjA7CisJCQkJI2lmIChWQUwgPj0gNCkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfbXVs
dGlfaWYKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJI2RlZmluZSBWQUwgKDQpCisJCQkJb3V0MCA9IDAuMDsKKwkJCQkj
aWYgKCgoVkFMKSkgPj0gKDQpKQorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwYXJlbnRoZXNpc19zaW5nbGVfaWYK
KwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJI2RlZmluZSBWQUwgNAorCQkJCW91dDAgPSAwLjA7CisJCQkJI2lmIChWQUwg
Pj0gNCkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfaWZlbHNlX3RydWUKKwkJdmFsdWVzIHsg
b3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
I2RlZmluZSBWQUwgNAorCQkJCSNpZiAoVkFMID49IDQpCisJCQkJCW91dDAgPSAxLjA7CisJCQkJ
I2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfaWZlbHNlX2ZhbHNlCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSNkZWZpbmUgVkFMIDQKKwkJCQkjaWYgKFZBTCA+IDQpCisJCQkJCW91dDAgPSAwLjA7CisJCQkJ
I2Vsc2UKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgZXZhbF9iYXNpY18wCisJCXZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNpZiAtNCArIDUg
PT0gMQorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJ
I2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGV2YWxfYmFz
aWNfMQorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkjaWYgKDIgKiAyKSAtIDMgPj0gMAorCQkJCQlvdXQwID0gMS4wOwor
CQkJCSNlbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGV2YWxfc2ltcGxlX3ByZWNlZGVuY2VfMAorCQl2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkjaWYgMiAqIDMgLSAzID09IDMKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZWxzZQorCQkJ
CQlvdXQwID0gMC4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBldmFsX3NpbXBsZV9wcmVjZWRlbmNlXzEKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2lmIDIgLSAy
IC8gMiA9PSAxCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsK
KwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVm
aW5lZF8xCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjZGVm
aW5lIFggMAorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjaWYgZGVmaW5lZChYKQorCQkJCQlv
dXQwID0gMS4wOworCQkJCSNlbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJI2VuZGlmCisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmluZWRfMgorCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBYIDAKKwkJCSNkZWZp
bmUgWSAxCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNpZiBkZWZpbmVkKFgpID09IFkKKwkJ
CQkJb3V0MCA9IDEuMDsKKwkJCQkjZWxzZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSNlbmRpZgor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkZWZpbmVkXzMKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQkj
ZGVmaW5lIFkgMQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjaWYgZGVmaW5lZChYKSAmJiBk
ZWZpbmVkKFkpCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsK
KwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVm
aW5lZF80CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjZGVm
aW5lIFggMAorCQkJI2RlZmluZSBZIDEKKwkJCSN1bmRlZiBYCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSNpZiBkZWZpbmVkKFgpICYmIGRlZmluZWQoWSkKKwkJCQkJb3V0MCA9IDAuMDsKKwkJ
CQkjZWxzZQorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBkZWZpbmVkXzUKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0
IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQkjZGVmaW5lIFkgMQorCQkJI3Vu
ZGVmIFgKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2lmIGRlZmluZWQoWCkgfHwgZGVmaW5l
ZChZKQorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJ
I2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmluZWRf
NgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBY
IDAKKwkJCSNkZWZpbmUgWSAxCisJCQkjdW5kZWYgWQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkjaWYgZGVmaW5lZChYKSAmJiAoZGVmaW5lZChZKSB8fCAoWCA9PSAwKSkKKwkJCQkJb3V0MCA9
IDEuMDsKKwkJCQkjZWxzZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBleHByZXNzaW9ucworCitncm91cCBpbnZh
bGlkX2V4cHJlc3Npb25zICJJbnZhbGlkIEV4cHJlc3Npb24gVGVzdHMiCisKKwljYXNlIGludmFs
aWRfdW5hcnlfZXhwcgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgIQorCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGludmFsaWRfYmluYXJ5X2V4cHIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIi
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lm
IDMrNCsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2V4cHIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJI2lmCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9leHByXzEKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJI2lmIDQgNAorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfZXhwcl8yCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCSNpZiA0ICogKiA0CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9leHByXzMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmICg0KSg0KQorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVub3BlbmVkX3Bh
cmVudGhlc2lzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiA0KQorCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVuY2xvc2VkX3BhcmVudGhlc2lzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAo
KDQgKyA3KQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKK2VuZCAjIGludmFsaWRfZXhwcmVzc2lvbnMKKworZ3JvdXAgb3BlcmF0b3Jf
cHJlY2VkZW5jZSAiT3BlcmF0b3IgcHJlY2VkZW5jZSIKKworCisJY2FzZSBtb2R1bG9fdnNfbm90
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNp
ZiAoIDggJSAhIDAgKSA9PSAwCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZB
TCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRpdl92c19ub3QKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCAvICEgMCApID09
IDgKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbXVsX3ZzX25vdAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9
IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ICogISAwICkgPT0gOAorCSNkZWZpbmUgVkFM
IDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
b2R1bG9fdnNfYml0X2ludmVydAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisKKwkjaWYgKCA4ICUgfiA0ICkgPT0gMworCSNkZWZpbmUgVkFMIDEuMAor
CSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQw
ID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtb2R1bG9f
dnNfbWludXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCisJI2lmICggOCAlIC0gMiApID09IDAKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNk
ZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbW9kdWxvX3ZzX3BsdXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICgg
OCAlICsgMiApID09IDAKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAu
MAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGl2X3ZzX2JpdF9pbnZlcnQKKwkJdmFsdWVzIHsg
b3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCAvIH4gMiAp
ID09IC0yCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5k
aWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGRpdl92c19taW51cworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4IC8gLSAyICkgPT0gLTQKKwkjZGVm
aW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgZGl2X3ZzX3BsdXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0K
KwkJYm90aCAiIgorCisJI2lmICggOCAvICsgMiApID09IDQKKwkjZGVmaW5lIFZBTCAxLjAKKwkj
ZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9
IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbXVsX3ZzX2Jp
dF9pbnZlcnQKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCisJI2lmICggOCAqIH4gMiApID09IC0yNAorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJ
I2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtdWxfdnNfbWludXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICgg
OCAqIC0gMiApID09IC0xNgorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwg
MC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtdWxfdnNfcGx1cworCQl2YWx1ZXMgeyBvdXRw
dXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ICogKyAyICkgPT0g
MTYKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2Ugc3ViX3ZzX21vZHVsbworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4IC0gMyAlIDIgKSA9PSA3CisJI2RlZmlu
ZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHN1Yl92c19kaXYKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJ
Ym90aCAiIgorCisJI2lmICggOCAtIDMgLyAyICkgPT0gNworCSNkZWZpbmUgVkFMIDEuMAorCSNl
bHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0g
VkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBzdWJfdnNfbXVs
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNp
ZiAoIDggLSAzICogMiApID09IDIKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUg
VkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYWRkX3ZzX21vZHVsbworCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ICsgMyAl
IDIgKSA9PSA5CisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkj
ZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGFkZF92c19kaXYKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0
IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCArIDMgLyAyICkgPT0gOQorCSNk
ZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBhZGRfdnNfbXVsCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9
CisJCWJvdGggIiIKKworCSNpZiAoIDggKyAzICogMiApID09IDE0CisJI2RlZmluZSBWQUwgMS4w
CisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91
dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJzaGlm
dF92c19zdWIKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCisJI2lmICggOCA+PiAzIC0gMiApID09IDQKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQor
CSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcnNoaWZ0X3ZzX2FkZAor
CQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYg
KCA4ID4+IDMgKyAyICkgPT0gMAorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBW
QUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsc2hpZnRfdnNfc3ViCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPDwgMyAt
IDIgKSA9PSAxNgorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJ
I2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBsc2hpZnRfdnNfYWRkCisJCXZhbHVlcyB7IG91dHB1dCBm
bG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPDwgMyArIDIgKSA9PSAy
NTYKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZ3JlYXRlcl9vcl9lcXVhbF92c19yc2hpZnQKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCA+PSAzID4+IDIg
KSA9PSAxCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5k
aWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGdyZWF0ZXJfb3JfZXF1YWxfdnNfbHNoaWZ0CisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPj0gMyA8
PCAyICkgPT0gMAorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJ
I2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBsZXNzX29yX2VxdWFsX3ZzX3JzaGlmdAorCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4IDw9IDMg
Pj4gMiApID09IDAKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAor
CSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbGVzc19vcl9lcXVhbF92c19sc2hpZnQKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCA8PSAz
IDw8IDIgKSA9PSAxCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAK
KwkjZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGdyZWF0ZXJfdnNfcnNoaWZ0CisJCXZhbHVlcyB7IG91
dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPiAzID4+IDIg
KSA9PSAxCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5k
aWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGdyZWF0ZXJfdnNfbHNoaWZ0CisJCXZhbHVlcyB7IG91dHB1dCBm
bG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPiAzIDw8IDIgKSA9PSAw
CisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGxlc3NfdnNfcnNoaWZ0CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggPCAzID4+IDIgKSA9PSAwCisJI2RlZmlu
ZSBWQUwgMS4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGxlc3NfdnNfbHNoaWZ0CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9
CisJCWJvdGggIiIKKworCSNpZiAoIDggPCAzIDw8IDIgKSA9PSAxCisJI2RlZmluZSBWQUwgMS4w
CisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91
dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5vdF9l
cXVhbF92c19ncmVhdGVyX29yX2VxdWFsCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0g
MS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDggIT0gMyA+PSAyICkgPT0gMQorCSNkZWZpbmUg
VkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBub3RfZXF1YWxfdnNfbGVzc19vcl9lcXVhbAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ICE9IDMgPD0gMiApID09IDEKKwkjZGVm
aW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2Ugbm90X2VxdWFsX3ZzX2dyZWF0ZXIKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAg
PSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCAhPSAzID4gMiApID09IDEKKwkjZGVmaW5l
IFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2Ugbm90X2VxdWFsX3ZzX2xlc3MKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7
IH0KKwkJYm90aCAiIgorCisJI2lmICggOCAhPSAzIDwgMiApID09IDEKKwkjZGVmaW5lIFZBTCAx
LjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZXF1
YWxfdnNfZ3JlYXRlcl9vcl9lcXVhbAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEu
MDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ID09IDMgPj0gMiApID09IDAKKwkjZGVmaW5lIFZB
TCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZXF1YWxfdnNfbGVzc19vcl9lcXVhbAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEu
MDsgfQorCQlib3RoICIiCisKKwkjaWYgKCA4ID09IDMgPD0gMiApID09IDAKKwkjZGVmaW5lIFZB
TCAxLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZXF1YWxfdnNfZ3JlYXRlcgorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQor
CQlib3RoICIiCisKKwkjaWYgKCA4ID09IDMgPiAyICkgPT0gMAorCSNkZWZpbmUgVkFMIDEuMAor
CSNlbHNlCisJI2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQw
ID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlcXVhbF92
c19sZXNzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KworCSNpZiAoIDggPT0gMyA8IDIgKSA9PSAwCisJI2RlZmluZSBWQUwgMS4wCisJI2Vsc2UKKwkj
ZGVmaW5lIFZBTCAwLjAKKwkjZW5kaWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJpdHdpc2VfYW5kX3ZzX25v
dF9lcXVhbAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIi
CisKKwkjaWYgKCA4ICYgMyAhPSAyICkgPT0gMAorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJ
I2RlZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiaXR3aXNlX2FuZF92c19l
cXVhbAorCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisK
KwkjaWYgKCA4ICYgMyA9PSAyICkgPT0gMAorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2Rl
ZmluZSBWQUwgMC4wCisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB4b3JfdnNfYml0d2lzZV9hbmQK
KwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lm
ICggOCBeIDMgJiAyICkgPT0gMTAKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZWxzZQorCSNkZWZpbmUg
VkFMIDAuMAorCSNlbmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYml0d2lzZV9vcl92c194b3IKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCisJI2lmICggOCB8
IDMgXiAyICkgPT0gOQorCSNkZWZpbmUgVkFMIDEuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMC4w
CisJI2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2dpY2FsX2FuZF92c19iaXR3aXNlX29yCisJCXZh
bHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKworCSNpZiAoIDAg
JiYgMyB8IDIgKQorCSNkZWZpbmUgVkFMIDAuMAorCSNlbHNlCisJI2RlZmluZSBWQUwgMS4wCisJ
I2VuZGlmCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBsb2dpY2FsX2FuZF92c19iaXR3aXNlX2FuZAorCQl2YWx1
ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCAwICYm
IDQgJiAyICkKKwkjZGVmaW5lIFZBTCAwLjAKKwkjZWxzZQorCSNkZWZpbmUgVkFMIDEuMAorCSNl
bmRpZgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbG9naWNhbF9vcl92c19sb2dpY2FsX2FuZAorCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisKKwkjaWYgKCAwIHx8IDQg
JiYgMCApCisJI2RlZmluZSBWQUwgMC4wCisJI2Vsc2UKKwkjZGVmaW5lIFZBTCAxLjAKKwkjZW5k
aWYKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKK2VuZCAjIG9wZXJhdG9yX3ByZWNlZGVuY2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9z
aGFkZXJzL3F1YWxpZmljYXRpb25fb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3F1YWxpZmljYXRp
b25fb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTY2MDc1OGIxZTFjMTZkNzM5OTVkYzViYjgyNGFi
ODRhMmEwOWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvcXVhbGlmaWNhdGlvbl9v
cmRlci5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1No
YWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5h
bWUgPSAncXVhbGlmaWNhdGlvbl9vcmRlcic7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIg
KyB0ZXN0TmFtZSArICIuIik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQo
JyYnKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBp
ZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAg
ICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKKworbW9k
dWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3F1
YWxpZmljYXRpb25fb3JkZXIudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3F1YWxpZmljYXRpb25fb3JkZXIu
dGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YjIwYWQ4ZWU4NThhODkyNjUzMTQ4ZTk1MjMzMTFmZDkzMGRmYzg3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvcXVhbGlmaWNhdGlvbl9vcmRlci50ZXN0
CkBAIC0wLDAgKzEsNzg1IEBACisjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZC4gRG8gTk9UIG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhlcgorIyBtb2RpZnkgdGhlIGdl
bmVyYXRpbmcgc2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2VzIHdpbGwgYmUgbG9zdCEKKwor
Z3JvdXAgdmFyaWFibGVzICJPcmRlciBvZiBxdWFsaWZpY2F0aW9uIGluIHZhcmlhYmxlIGRlY2xh
cmF0aW9ucy4iCisKKwlncm91cCB2YWxpZCAiVmFsaWQgb3JkZXJpbmdzLiIKKworCQljYXNlIGlu
dmFyaWFudF9zdG9yYWdlX3ByZWNpc2lvbgorCQkJZXhwZWN0IHBhc3MKKwkJCXZhbHVlcyB7fQor
CisJCQl2ZXJ0ZXggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlhdHRyaWJ1
dGUgaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IHZhcnlpbmcgbG93
cCBmbG9hdCB4MDsKKworCQkJCSB1bmlmb3JtIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgYXR0
cmlidXRlIG1lZGl1bXAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
eDAgPSAxLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQki
IgorCisJCQlmcmFnbWVudCAiIgorCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkJ
aW52YXJpYW50IHZhcnlpbmcgbG93cCBmbG9hdCB4MDsKKworCQkJCSB1bmlmb3JtIG1lZGl1bXAg
ZmxvYXQgeDE7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0g
eDAgKyB4MTsKKwkJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0
LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0b3JhZ2VfcHJlY2lzaW9uCisJ
CQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJCWF0dHJpYnV0ZSBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247
CisKKwkJCQl2YXJ5aW5nIGxvd3AgZmxvYXQgeDA7CisKKwkJCQl1bmlmb3JtIG1lZGl1bXAgZmxv
YXQgeDE7CisKKwkJCQlhdHRyaWJ1dGUgbWVkaXVtcCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0
aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCQl2YXJ5aW5nIGxvd3AgZmxvYXQgeDA7CisKKwkJCQl1bmlmb3JtIG1l
ZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVz
dWx0ID0geDAgKyB4MTsKKwkJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwg
cmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludmFyaWFudF9zdG9y
YWdlCisJCQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWF0dHJpYnV0ZSBoaWdocCB2ZWM0IGRFUVBfUG9z
aXRpb247CisKKwkJCQlpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB4MDsKKworCQkJCSB1bmlmb3Jt
IGZsb2F0IHgxOworCisJCQkJIGF0dHJpYnV0ZSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigp
CisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9u
OworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCQlpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB4MDsKKworCQkJCSB1bmlmb3Jt
IGZsb2F0IHgxOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9
IHgwICsgeDE7CisJCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3Vs
dCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCWVuZCAjIHZhbGlkCisJZ3JvdXAgaW52
YWxpZCAiSW52YWxpZCBvcmRlcmluZ3MuIgorCisJCWNhc2UgaW52YXJpYW50X3ByZWNpc2lvbl9z
dG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4
ICIiCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJYXR0cmlidXRlIGhpZ2hwIHZl
YzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFudCBsb3dwIHZhcnlpbmcgZmxvYXQgeDA7
CisKKwkJCQkgbWVkaXVtcCB1bmlmb3JtIGZsb2F0IHgxOworCisJCQkJIG1lZGl1bXAgYXR0cmli
dXRlIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOwor
CQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJh
Z21lbnQgIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJCWludmFyaWFudCBs
b3dwIHZhcnlpbmcgZmxvYXQgeDA7CisKKwkJCQkgbWVkaXVtcCB1bmlmb3JtIGZsb2F0IHgxOwor
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9IHgwICsgeDE7CisJ
CQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJ
CQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBzdG9yYWdlX2ludmFyaWFudF9wcmVjaXNpb24KKwkJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlhdHRyaWJ1dGUgaGlnaHAgdmVjNCBkRVFQX1Bv
c2l0aW9uOworCisJCQkJdmFyeWluZyBpbnZhcmlhbnQgbG93cCBmbG9hdCB4MDsKKworCQkJCXVu
aWZvcm0gbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCWF0dHJpYnV0ZSBtZWRpdW1wIGZsb2F0IHgy
OworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQlnbF9Qb3Np
dGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJCXZhcnlpbmcgaW52YXJpYW50IGxvd3Ag
ZmxvYXQgeDA7CisKKwkJCQl1bmlmb3JtIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0geDAgKyB4MTsKKwkJCQkJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJ
CWVuZAorCQljYXNlIHN0b3JhZ2VfcHJlY2lzaW9uX2ludmFyaWFudAorCQkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJCWF0dHJpYnV0ZSBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJ
CQl2YXJ5aW5nIGxvd3AgaW52YXJpYW50IGZsb2F0IHgwOworCisJCQkJdW5pZm9ybSBtZWRpdW1w
IGZsb2F0IHgxOworCisJCQkJYXR0cmlidXRlIG1lZGl1bXAgZmxvYXQgeDI7CisKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Q
b3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkJdmFyeWluZyBsb3dwIGludmFyaWFudCBmbG9hdCB4MDsKKwor
CQkJCXVuaWZvcm0gbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQlmbG9hdCByZXN1bHQgPSB4MCArIHgxOworCQkJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJl
c3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ug
cHJlY2lzaW9uX2ludmFyaWFudF9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2
YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJYXR0cmlidXRlIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWxvd3AgaW52YXJp
YW50IHZhcnlpbmcgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIHVuaWZvcm0gZmxvYXQgeDE7CisK
KwkJCQltZWRpdW1wIGF0dHJpYnV0ZSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJ
eworCQkJCQl4MCA9IDEuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJ
CX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCQlsb3dwIGludmFyaWFudCB2YXJ5aW5nIGZsb2F0IHgwOworCisJCQkJbWVkaXVtcCB1
bmlmb3JtIGZsb2F0IHgxOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJl
c3VsdCA9IHgwICsgeDE7CisJCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQs
IHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNpb25fc3Rv
cmFnZV9pbnZhcmlhbnQKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJ
CQl2ZXJ0ZXggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlhdHRyaWJ1dGUg
aGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJbG93cCB2YXJ5aW5nIGludmFyaWFudCBm
bG9hdCB4MDsKKworCQkJCW1lZGl1bXAgdW5pZm9ybSBmbG9hdCB4MTsKKworCQkJCW1lZGl1bXAg
YXR0cmlidXRlIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0g
MS4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKwor
CQkJZnJhZ21lbnQgIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJCWxvd3Ag
dmFyeWluZyBpbnZhcmlhbnQgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIHVuaWZvcm0gZmxvYXQg
eDE7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0geDAgKyB4
MTsKKwkJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjAp
OworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9zdG9yYWdlCisJCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJYXR0cmlidXRlIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlv
bjsKKworCQkJCWxvd3AgdmFyeWluZyBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgdW5pZm9ybSBm
bG9hdCB4MTsKKworCQkJCW1lZGl1bXAgYXR0cmlidXRlIGZsb2F0IHgyOworCisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9z
aXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJCWxvd3AgdmFyeWluZyBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAg
dW5pZm9ybSBmbG9hdCB4MTsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCBy
ZXN1bHQgPSB4MCArIHgxOworCQkJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0
LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ugc3RvcmFnZV9pbnZh
cmlhbnQKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXgg
IiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlhdHRyaWJ1dGUgaGlnaHAgdmVj
NCBkRVFQX1Bvc2l0aW9uOworCisJCQkJdmFyeWluZyBpbnZhcmlhbnQgZmxvYXQgeDA7CisKKwkJ
CQl1bmlmb3JtIGZsb2F0IHgxOworCisJCQkJYXR0cmlidXRlIGZsb2F0IHgyOworCisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBf
UG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJCXZhcnlpbmcgaW52YXJpYW50IGZsb2F0IHgwOworCisJCQkJ
dW5pZm9ybSBmbG9hdCB4MTsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCBy
ZXN1bHQgPSB4MCArIHgxOworCQkJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0
LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwllbmQgIyBpbnZhbGlkCisK
K2VuZCAjIHZhcmlhYmxlcworZ3JvdXAgcGFyYW1ldGVycyAiT3JkZXIgb2YgcXVhbGlmaWNhdGlv
biBpbiBmdW5jdGlvbiBwYXJhbWV0ZXJzLiIKKworCWdyb3VwIHZhbGlkICJWYWxpZCBvcmRlcmlu
Z3MuIgorCisJCWNhc2Ugc3RvcmFnZV9wYXJhbWV0ZXJfcHJlY2lzaW9uCisJCQlleHBlY3QgcGFz
cworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGNvbnN0IGluIGxvd3Ag
ZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQg
Zm9vMSAoIG91dCBtZWRpdW1wIGZsb2F0IHgpCisJCQkJeworCQkJCQl4ID0gMS4wOworCQkJCX0K
KworCQkJCWZsb2F0IGZvbzIgKCBpbm91dCBtZWRpdW1wIGZsb2F0IHgpCisJCQkJeworCQkJCQly
ZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtT
RVRVUH0KKwkJCQkJZmxvYXQgcmVzdWx0OworCQkJCQlmb28xKHJlc3VsdCk7CisJCQkJCWZsb2F0
IHgwID0gZm9vMCgxLjApOworCQkJCQlmb28yKHJlc3VsdCk7CisJCQkJCSR7T1VUUFVUfQorCQkJ
CX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0b3JhZ2VfcGFyYW1ldGVyCisJCQlleHBlY3QgcGFz
cworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGNvbnN0IGluIGZsb2F0
IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIGZvbzEg
KCBvdXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQg
Zm9vMiAoIGlub3V0IGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9
CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtTRVRVUH0KKwkJCQkJZmxvYXQgcmVz
dWx0OworCQkJCQlmb28xKHJlc3VsdCk7CisJCQkJCWZsb2F0IHgwID0gZm9vMCgxLjApOworCQkJ
CQlmb28yKHJlc3VsdCk7CisJCQkJCSR7T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCQlj
YXNlIHN0b3JhZ2VfcHJlY2lzaW9uCisJCQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisKKwkJ
CWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJCWZsb2F0IGZvbzAgKGNvbnN0IGxvd3AgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJl
dHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAoIG1lZGl1bXAgZmxvYXQgeCkK
KwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoIG1lZGl1bXAg
ZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZv
bzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0
KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcGFyYW1ldGVy
X3ByZWNpc2lvbgorCQkJZXhwZWN0IHBhc3MKKwkJCXZhbHVlcyB7fQorCisJCQlib3RoICIiCisJ
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCQlm
bG9hdCBmb28wIChpbiBsb3dwIGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsK
KwkJCQl9CisKKwkJCQl2b2lkIGZvbzEgKG91dCBtZWRpdW1wIGZsb2F0IHgpCisJCQkJeworCQkJ
CQl4ID0gMS4wOworCQkJCX0KKworCQkJCWZsb2F0IGZvbzIgKGlub3V0IG1lZGl1bXAgZmxvYXQg
eCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgbWFpbigp
CisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZvbzEocmVz
dWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0KTsKKwkJ
CQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwllbmQgIyB2YWxpZAorCWdyb3Vw
IGludmFsaWQgIkludmFsaWQgb3JkZXJpbmdzLiIKKworCQljYXNlIHN0b3JhZ2VfcHJlY2lzaW9u
X3BhcmFtZXRlcgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCWJv
dGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJCWZsb2F0IGZvbzAgKGNvbnN0IGxvd3AgaW4gZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJl
dHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAoIG1lZGl1bXAgb3V0IGZsb2F0
IHgpCisJCQkJeworCQkJCQl4ID0gMS4wOworCQkJCX0KKworCQkJCWZsb2F0IGZvbzIgKCBtZWRp
dW1wIGlub3V0IGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtTRVRVUH0KKwkJCQkJZmxvYXQgcmVzdWx0
OworCQkJCQlmb28xKHJlc3VsdCk7CisJCQkJCWZsb2F0IHgwID0gZm9vMCgxLjApOworCQkJCQlm
b28yKHJlc3VsdCk7CisJCQkJCSR7T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNl
IHBhcmFtZXRlcl9zdG9yYWdlX3ByZWNpc2lvbgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJ
dmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGluIGNvbnN0IGxvd3AgZmxvYXQg
eCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAo
b3V0IG1lZGl1bXAgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJ
ZmxvYXQgZm9vMiAoaW5vdXQgbWVkaXVtcCBmbG9hdCB4KQorCQkJCXsKKwkJCQkJcmV0dXJuIHgg
KyAxLjA7CisJCQkJfQorCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7U0VUVVB9CisJ
CQkJCWZsb2F0IHJlc3VsdDsKKwkJCQkJZm9vMShyZXN1bHQpOworCQkJCQlmbG9hdCB4MCA9IGZv
bzAoMS4wKTsKKwkJCQkJZm9vMihyZXN1bHQpOworCQkJCQkke09VVFBVVH0KKwkJCQl9CisJCQki
IgorCQllbmQKKwkJY2FzZSBwYXJhbWV0ZXJfcHJlY2lzaW9uX3N0b3JhZ2UKKwkJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQlib3RoICIiCisJCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCQlmbG9hdCBmb28wIChpbiBs
b3dwIGNvbnN0IGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisK
KwkJCQl2b2lkIGZvbzEgKG91dCBtZWRpdW1wIGZsb2F0IHgpCisJCQkJeworCQkJCQl4ID0gMS4w
OworCQkJCX0KKworCQkJCWZsb2F0IGZvbzIgKGlub3V0IG1lZGl1bXAgZmxvYXQgeCkKKwkJCQl7
CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZvbzEocmVzdWx0KTsKKwkJ
CQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0KTsKKwkJCQkJJHtPVVRQ
VVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcHJlY2lzaW9uX3N0b3JhZ2VfcGFyYW1l
dGVyCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJYm90aCAiIgor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7REVDTEFSQVRJT05TfQorCisJCQkJ
ZmxvYXQgZm9vMCAobG93cCBjb25zdCBpbiBmbG9hdCB4KQorCQkJCXsKKwkJCQkJcmV0dXJuIHgg
KyAxLjA7CisJCQkJfQorCisJCQkJdm9pZCBmb28xIChtZWRpdW1wIG91dCBmbG9hdCB4KQorCQkJ
CXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBmb28yIChtZWRpdW1wIGlub3V0
IGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJJHtTRVRVUH0KKwkJCQkJZmxvYXQgcmVzdWx0OworCQkJCQlm
b28xKHJlc3VsdCk7CisJCQkJCWZsb2F0IHgwID0gZm9vMCgxLjApOworCQkJCQlmb28yKHJlc3Vs
dCk7CisJCQkJCSR7T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lv
bl9wYXJhbWV0ZXJfc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9
CisKKwkJCWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGxvd3AgaW4gY29uc3QgZmxvYXQgeCkKKwkJCQl7
CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAobWVkaXVtcCBv
dXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9v
MiAobWVkaXVtcCBpbm91dCBmbG9hdCB4KQorCQkJCXsKKwkJCQkJcmV0dXJuIHggKyAxLjA7CisJ
CQkJfQorCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7U0VUVVB9CisJCQkJCWZsb2F0
IHJlc3VsdDsKKwkJCQkJZm9vMShyZXN1bHQpOworCQkJCQlmbG9hdCB4MCA9IGZvbzAoMS4wKTsK
KwkJCQkJZm9vMihyZXN1bHQpOworCQkJCQkke09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQK
KwkJY2FzZSBwYXJhbWV0ZXJfc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFs
dWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGluIGNvbnN0IGZsb2F0IHgpCisJCQkJ
eworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIGZvbzEgKG91dCBmbG9h
dCB4KQorCQkJCXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBmb28yIChpbm91
dCBmbG9hdCB4KQorCQkJCXsKKwkJCQkJcmV0dXJuIHggKyAxLjA7CisJCQkJfQorCisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7U0VUVVB9CisJCQkJCWZsb2F0IHJlc3VsdDsKKwkJCQkJ
Zm9vMShyZXN1bHQpOworCQkJCQlmbG9hdCB4MCA9IGZvbzAoMS4wKTsKKwkJCQkJZm9vMihyZXN1
bHQpOworCQkJCQkke09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNp
b25fc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCWJv
dGggIiIKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJCWZsb2F0IGZvbzAgKGxvd3AgY29uc3QgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVy
biB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAobWVkaXVtcCBmbG9hdCB4KQorCQkJ
CXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBmb28yIChtZWRpdW1wIGZsb2F0
IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJJHtTRVRVUH0KKwkJCQkJZmxvYXQgcmVzdWx0OworCQkJCQlmb28xKHJl
c3VsdCk7CisJCQkJCWZsb2F0IHgwID0gZm9vMCgxLjApOworCQkJCQlmb28yKHJlc3VsdCk7CisJ
CQkJCSR7T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9wYXJh
bWV0ZXIKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQlib3RoICIi
CisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CQlmbG9hdCBmb28wIChsb3dwIGluIGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEu
MDsKKwkJCQl9CisKKwkJCQl2b2lkIGZvbzEgKG1lZGl1bXAgb3V0IGZsb2F0IHgpCisJCQkJewor
CQkJCQl4ID0gMS4wOworCQkJCX0KKworCQkJCWZsb2F0IGZvbzIgKG1lZGl1bXAgaW5vdXQgZmxv
YXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZvbzEo
cmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0KTsK
KwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwllbmQgIyBpbnZhbGlkCisK
K2VuZCAjIHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3Jlc2VydmVkX29wZXJh
dG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvcmVzZXJ2ZWRfb3BlcmF0b3JzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjk4Yjk3Yjc3MzhiNzkzY2M0ZGUxNTA4MDI5ODQ1MjIzNTg0Y2Y0MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZGF0YS9nbGVzMi9zaGFkZXJzL3Jlc2VydmVkX29wZXJhdG9ycy5odG1sCkBAIC0wLDAgKzEsMzYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAncmVzZXJ2ZWRfb3BlcmF0b3Jz
JzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4iKTsKKwordmFy
IGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9j
YXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVl
cnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFs
dWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25l
bnQodmFsdWVbMV0pOworICAgIH0KK30KKworCittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJy
YXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvcmVzZXJ2ZWRfb3BlcmF0b3JzLnRlc3QgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xl
czIvc2hhZGVycy9yZXNlcnZlZF9vcGVyYXRvcnMudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGExZjFhYWRl
OTdiMjU3YmEzNTM4YjJhNDYyZTI3NGE0Yzk2ZWQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvcmVzZXJ2ZWRfb3BlcmF0b3JzLnRlc3QKQEAgLTAsMCArMSwyNTAgQEAKKyMgV0FSTklO
RzogVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkLiBEbyBOT1QgbW9kaWZ5IGl0IG1hbnVhbGx5
LCBidXQgcmF0aGVyCisjIG1vZGlmeSB0aGUgZ2VuZXJhdGluZyBzY3JpcHQgZmlsZS4gT3RoZXJ3
aXNlIGNoYW5nZXMgd2lsbCBiZSBsb3N0IQorCitjYXNlIG9wZXJhdG9yX21vZHVsbworCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKworCWJvdGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkke0RFQ0xBUkFUSU9OU30K
KworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gMTAwOwor
CQkJdmFsdWUgJSAxOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIG9wZXJhdG9y
X2JpdHdpc2Vfbm90CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCisJYm90aCAi
IgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJ
CQlpbnQgdmFsdWUgPSAxMDA7CisJCQl2YWx1ZSA9IH52YWx1ZTsKKwkJCSR7T1VUUFVUfQorCQl9
CisJIiIKK2VuZAorY2FzZSBvcGVyYXRvcl9iaXR3aXNlX3NoaWZ0X2xlZnQKKwlleHBlY3QgY29t
cGlsZV9mYWlsCisJdmFsdWVzIHt9CisKKwlib3RoICIiCisJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJ
dm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCWludCB2YWx1ZSA9IDEwMDsKKwkJCXZh
bHVlIDw8IDE7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2Ugb3BlcmF0b3JfYml0
d2lzZV9zaGlmdF9yaWdodAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKworCWJv
dGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQ
fQorCQkJaW50IHZhbHVlID0gMTAwOworCQkJdmFsdWUgPj4gMTsKKwkJCSR7T1VUUFVUfQorCQl9
CisJIiIKK2VuZAorY2FzZSBvcGVyYXRvcl9iaXR3aXNlX2FuZAorCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwl2YWx1ZXMge30KKworCWJvdGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lkIG1h
aW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gMTAwOworCQkJdmFsdWUgJiAx
OworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIG9wZXJhdG9yX2JpdHdpc2VfeG9y
CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCisJYm90aCAiIgorCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCSR7REVDTEFS
QVRJT05TfQorCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQlpbnQgdmFsdWUg
PSAxMDA7CisJCQl2YWx1ZSBeIDE7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2Ug
b3BlcmF0b3JfYml0d2lzZV9vcgorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwor
CWJvdGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NF
VFVQfQorCQkJaW50IHZhbHVlID0gMTAwOworCQkJdmFsdWUgfCAxOworCQkJJHtPVVRQVVR9CisJ
CX0KKwkiIgorZW5kCitjYXNlIG9wZXJhdG9yX2Fzc2lnbl9tb2R1bG8KKwlleHBlY3QgY29tcGls
ZV9mYWlsCisJdmFsdWVzIHt9CisKKwlib3RoICIiCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9p
ZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCWludCB2YWx1ZSA9IDEwMDsKKwkJCXZhbHVl
ICU9IDE7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2Ugb3BlcmF0b3JfYXNzaWdu
X3NoaWZ0X2xlZnQKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisKKwlib3RoICIi
CisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJ
CWludCB2YWx1ZSA9IDEwMDsKKwkJCXZhbHVlIDw8PSAxOworCQkJJHtPVVRQVVR9CisJCX0KKwki
IgorZW5kCitjYXNlIG9wZXJhdG9yX2Fzc2lnbl9zaGlmdF9yaWdodAorCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwl2YWx1ZXMge30KKworCWJvdGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lk
IG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gMTAwOworCQkJdmFsdWUg
Pj49IDE7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2Ugb3BlcmF0b3JfYXNzaWdu
X2FuZAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKworCWJvdGggIiIKKwkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkke0RF
Q0xBUkFUSU9OU30KKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZh
bHVlID0gMTAwOworCQkJdmFsdWUgJj0gMTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAor
Y2FzZSBvcGVyYXRvcl9hc3NpZ25feG9yCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7
fQorCisJYm90aCAiIgorCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbigpCisJCXsKKwkJ
CSR7U0VUVVB9CisJCQlpbnQgdmFsdWUgPSAxMDA7CisJCQl2YWx1ZSBePSAxOworCQkJJHtPVVRQ
VVR9CisJCX0KKwkiIgorZW5kCitjYXNlIG9wZXJhdG9yX2Fzc2lnbl9vcgorCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwl2YWx1ZXMge30KKworCWJvdGggIiIKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2
b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gMTAwOworCQkJdmFs
dWUgfD0gMTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvc2NvcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvc2NvcGluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVkMDFlZjg0NGZhZWM2MGFmZmJiNmU4Y2EzODdiZjQ5MWI0MDc4MjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Rh
dGEvZ2xlczIvc2hhZGVycy9zY29waW5nLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
bW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit0ZXN0TmFtZSA9ICdzY29waW5nJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIg
dGVzdDogIiArIHRlc3ROYW1lICsgIi4iKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygx
KS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7Cisg
ICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAg
ICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30K
KworCittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0Rmls
dGVyKCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvc2NvcGluZy50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvc2NvcGluZy50ZXN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEzODc2MzFhZjRlMjIyMzA5Y2Y4MDc2YjE0ZjVmMTk5NzJhMDQ3NGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Rh
dGEvZ2xlczIvc2hhZGVycy9zY29waW5nLnRlc3QKQEAgLTAsMCArMSw4MjMgQEAKK2dyb3VwIHZh
bGlkICJWYWxpZCBzY29waW5nIGFuZCBuYW1lIHJlZGVjbGFyYXRpb24gY2FzZXMiCisKKwljYXNl
IGxvY2FsX3ZhcmlhYmxlX2hpZGVzX2dsb2JhbF92YXJpYWJsZQorCQl2ZXJzaW9uIDEwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIgfCAzIF07CisJCQlvdXRw
dXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQlpbnQgYSA9IC0xOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJaW50IGEgPSBpbjA7CisKKwkJCQlvdXQwID0gYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYmxvY2tfdmFyaWFibGVfaGlkZXNfbG9jYWxfdmFyaWFibGUKKwkJ
dmVyc2lvbiAxMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAy
IHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlp
bnQgYSA9IGluMDsKKwkJCQl7CisJCQkJCWludCBhID0gLTE7CisJCQkJfQorCQkJCW91dDAgPSBh
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBibG9ja192YXJpYWJs
ZV9oaWRlc19nbG9iYWxfdmFyaWFibGUKKwkJdmVyc2lvbiAxMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQwID0g
WyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGEgPSAt
MTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXsKKwkJCQkJaW50
IGEgPSBpbjA7CisKKwkJCQkJb3V0MCA9IGE7CisJCQkJfQorCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmb3JfaW5pdF9zdGF0ZW1lbnRfdmFyaWFibGVfaGlkZXNfbG9j
YWxfdmFyaWFibGUKKwkJdmVyc2lvbiAxMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGlu
dCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlpbnQgYSA9IGluMDsKKwkJCQlmb3IgKGludCBhID0gMDsgYSA8IDEwOyBh
KyspCisJCQkJeworCQkJCX0KKwkJCQlvdXQwID0gYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgZm9yX2luaXRfc3RhdGVtZW50X3ZhcmlhYmxlX2hpZGVzX2dsb2Jh
bF92YXJpYWJsZQorCQl2ZXJzaW9uIDEwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50
IGluMCA9IFsgMSB8IDIgfCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgYSA9IDU7CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmb3IgKGludCBhID0gMDsgYSA8IDEwOyBh
KyspCisJCQkJeworCQkJCX0KKwkJCQlvdXQwID0gaW4wICsgYSAtIDU7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZhcmlhYmxlX2luX2lmX2hpZGVzX2dsb2JhbF92
YXJpYWJsZQorCQl2ZXJzaW9uIDEwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgMSB8IDIgfCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgYSA9IDE7CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpZiAodHJ1ZSkKKwkJCQkJaW50IGEgPSA0MjsK
KwkJCQlvdXQwID0gYSppbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZhcmlhYmxlX2Zyb21fb3V0ZXJfc2NvcGVfdmlzaWJsZV9pbl9pbml0aWFsaXplcgorCQl2
ZXJzaW9uIDEwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIg
fCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWlu
dCBhID0gaW4wOworCQkJCXsKKwkJCQkJaW50IGEgPSBhKzUsIGIgPSBhLTU7CisJCQkJCW91dDAg
PSBiOworCQkJCQlhID0gNDI7CisJCQkJfQorCQkJCW91dDAgPSBvdXQwICsgYSAtIGluMDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbG9jYWxfaW50X3ZhcmlhYmxl
X2hpZGVzX3N0cnVjdF90eXBlCisJCXZlcnNpb24gMTAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8
IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBTIHsgaW50
IHZhbDsgfTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBT
ID0gUyhpbjApLnZhbDsKKwkJCQlvdXQwID0gUzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbG9jYWxfc3RydWN0X3ZhcmlhYmxlX2hpZGVzX3N0cnVjdF90eXBlCisJ
CXZlcnNpb24gMTAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwg
MiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBTIHsgaW50IHZhbDsgfTsKKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCVMgUyA9IFMoaW4wKTsKKwkJCQlvdXQwID0g
Uy52YWw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxvY2FsX3Zh
cmlhYmxlX2hpZGVzX2Z1bmN0aW9uCisJCXZlcnNpb24gMTAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsg
MSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmb28gKGlu
dCB4KSB7IHJldHVybiB4OyB9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlpbnQgZm9vID0gaW4wOworCQkJCW91dDAgPSBmb287CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGZ1bmN0aW9uX3BhcmFtZXRlcl9oaWRlc19nbG9iYWxfdmFy
aWFibGUKKwkJdmVyc2lvbiAxMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAg
PSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGEgPSAtMTsKKworCQkJaW50IGZ1bmMg
KGludCBhKSB7IHJldHVybiBhOyB9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmdW5jdGlvbl9wYXJhbWV0ZXJfaGlkZXNfc3RydWN0X3R5cGUKKwkJdmVyc2lv
biAxMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBd
OworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJc3RydWN0IFMgeyBpbnQgeDsgfTsKKworCQkJaW50IGZ1bmMgKGludCBT
KSB7IHJldHVybiBTOyB9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBmdW5jdGlvbl9wYXJhbWV0ZXJfaGlkZXNfZnVuY3Rpb24KKwkJdmVyc2lvbiAxMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0
cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJaW50IGZ1bmMgKGludCBmdW5jKSB7IHJldHVybiBmdW5jOyB9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2NhbF92YXJpYWJsZV9pbl9pbm5lcl9z
Y29wZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0ZXIKKwkJdmVyc2lvbiAxMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBv
dXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCWludCBm
dW5jIChpbnQgaW5wLCBpbnQgeCkgeyB7IGludCB4ID0gNTsgcmV0dXJuIGlucCArIHggLSA1OyB9
IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5j
KGluMCwgNDIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQKKworZ3Jv
dXAgaW52YWxpZCAiSW52YWxpZCBzY29waW5nIGJlaGF2aW9yIgorCisJY2FzZSByZWRlY2xhcmVf
Z2xvYmFsX3ZhcmlhYmxlCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgYTsKKwkJCWZsb2F0IGE7CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJYSA9IDEuMDsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNChhKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWNsYXJlX2xvY2FsX3Zhcmlh
YmxlCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWludCBhOworCQkJCWZsb2F0IGE7
CisJCQkJYSA9IDEuMDsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChhKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWNsYXJlX2Zvcl9pbml0X3N0YXRlbWVudF92YXJp
YWJsZQorCQl2ZXJzaW9uIDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8
IDEwOyBpKyspCisJCQkJeworCQkJCQlpbnQgaSA9IDExOworCQkJCX0KKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWRl
Y2xhcmVfZm9yX2NvbmRpdGlvbl92YXJpYWJsZQorCQl2ZXJzaW9uIDEwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlmb3IgKGludCBpID0gMDsgaW50IGEgPSAoaSA8IDEwKTsgaSsrKQorCQkJCXsKKwkJCQkJ
aW50IGEgPSAwOworCQkJCX0KKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWRlY2xhcmVfZm9yX2luaXRfc3RhdGVtZW50
X3ZhcmlhYmxlX2luX2Zvcl9jb25kaXRpb24KKwkJdmVyc2lvbiAxMDAgZXMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJZmxvYXQgYTsKKwkJCQlmb3IgKGludCBpID0gMDsgaW50IGkgPSAoaSA8IDEwKTsgaSsrKQor
CQkJCXsKKwkJCQkJYSA9IHNpbihpKTsKKwkJCQl9CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoYSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVjbGFyZV93aGlsZV9j
b25kaXRpb25fdmFyaWFibGUKKwkJdmVyc2lvbiAxMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaW50IGEg
PSAwOworCQkJCXdoaWxlIChpbnQgaSA9IChhIDwgNSkpCisJCQkJeworCQkJCQlpbnQgaSA9IDEx
OworCQkJCQlhICs9IGk7CisJCQkJfQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDAuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVjbGFyZV9mdW5jdGlvbgorCQl2
ZXJzaW9uIDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJZmxvYXQgZnVuYyhmbG9hdCB4KTsKKwkJCWZsb2F0IGZ1bmMoZmxvYXQgeCk7CisKKwkJ
CWZsb2F0IGZ1bmMoZmxvYXQgeCkgeyByZXR1cm4geCArIDEuMDsgfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMS4wKSk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX2Z1bmN0aW9uCisJCXZlcnNpb24gMTAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9h
dCBmdW5jKGZsb2F0IHgpOworCisJCQlmbG9hdCBmdW5jKGZsb2F0IHgpIHsgcmV0dXJuIHggKyAx
LjA7IH0KKwkJCWZsb2F0IGZ1bmMoZmxvYXQgeCkgeyByZXR1cm4geCArIDIuMDsgfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMo
MS4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVjbGFyZV9idWlsdGluCisJCXZl
cnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQlmbG9hdCBzaW4oZmxvYXQgeCk7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoc2luKDEuMCkpOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSByZWRlZmluZV9idWlsdGluCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBzaW4oZmxvYXQgeCkgeyBy
ZXR1cm4geCArIDEuMDsgfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KHNpbigxLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Y29uZmxpY3RfZnVuY3Rpb25fc3RydWN0CisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGYoaW50IHgpOworCQkJc3Ry
dWN0IGYgeyBpbnQgeDsgfTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY29uZmxp
Y3RfZnVuY3Rpb25fdmFyaWFibGUKKwkJdmVyc2lvbiAxMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAxMDAKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZihpbnQgeCk7CisJCQlmbG9hdCBm
OworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWYgPSAxLjA7CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoZik7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZV9nbG9i
YWxfdmFyaWFibGVfYmVmb3JlX2RlY2xhcmF0aW9uCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMoKQorCQkJ
eworCQkJCWEgPSAyLjA7CisJCQl9CisKKwkJCWZsb2F0IGE7CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJZnVuYygpOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGEpOwor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2VfbG9jYWxfdmFyaWFibGVfYmVmb3JlX2RlY2xh
cmF0aW9uCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZsb2F0IGEgPSAxLjA7CisJ
CQkJYSA9IGI7CisJCQkJZmxvYXQgYiA9IDIuMDsKKworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KGEpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2Vfc3RydWN0X3R5cGVf
YmVmb3JlX2RlY2xhcmF0aW9uCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCB4KSB7IHJldHVy
biBTKHgpLnZhbDsgfQorCQkJc3RydWN0IFMgeyBmbG9hdCB2YWw7IH07CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoZnVuYygxLjApKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlX2Z1bmN0aW9uX2JlZm9yZV9kZWNsYXJhdGlv
bgorCQl2ZXJzaW9uIDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgeCkgeyByZXR1cm4gYmFyKHgpOyB9CisJCQlm
bG9hdCBiYXIgKGZsb2F0IHgpIHsgcmV0dXJuIHg7IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jKDEuMCkpOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB1c2VfdmFyaWFibGVfZnJvbV9ibG9ja19pbl9vdXRlcl9zY29wZQor
CQl2ZXJzaW9uIDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQl7CisJCQkJCWZsb2F0IGEgPSAxLjA7CisJ
CQkJfQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGEpOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB1c2VfdmFyaWFibGVfZnJvbV9pZl9pbl9vdXRlcl9zY29wZQorCQl2ZXJz
aW9uIDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDEwMAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAodHJ1ZSkKKwkJCQkJZmxvYXQgYSA9IDEuMDsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChhKTsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdXNlX3ZhcmlhYmxlX2Zyb21fZWxzZV9pbl9vdXRlcl9zY29wZQorCQl2ZXJzaW9u
IDEwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEw
MAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoZmFsc2UpCisJCQkJCWZsb2F0IGEgPSAxLjA7CisJ
CQkJZWxzZQorCQkJCQlmbG9hdCBiID0gMi4wOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KGIpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2VfdmFyaWFibGVfZnJvbV9p
Zl9pbl9lbHNlCisJCXZlcnNpb24gMTAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMTAwCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZsb2F0IGEgPSAxLjA7
CisJCQkJaWYgKHRydWUpCisJCQkJeworCQkJCQlmbG9hdCBiID0gMi4wOworCQkJCX0KKwkJCQll
bHNlCisJCQkJeworCQkJCQlhID0gYjsKKwkJCQl9CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoYSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZV92YXJpYWJsZV9mcm9t
X2Zvcl9pbml0X3N0YXRlbWVudF9pbl9vdXRlcl9zY29wZQorCQl2ZXJzaW9uIDEwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlmbG9hdCB4ID0gMC4wOworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkr
KykKKwkJCQl7CisJCQkJCXggKz0gc2luKGkpOworCQkJCX0KKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNChmbG9hdChpKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZV92
YXJpYWJsZV9mcm9tX3doaWxlX2NvbmRpdGlvbl9pbl9vdXRlcl9zY29wZQorCQl2ZXJzaW9uIDEw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlpbnQgYSA9IDE7CisJCQkJd2hpbGUgKGJvb2wgYiA9IChhID09
IDEpKQorCQkJCXsKKwkJCQkJYSsrOworCQkJCX0KKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChmbG9hdChiKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZV9wYXJhbWV0
ZXJfbmFtZXNfZnJvbV9mdW5jdGlvbl9kZWNsYXJhdGlvbgorCQl2ZXJzaW9uIDEwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyhm
bG9hdCBhLCBmbG9hdCBiKTsKKworCQkJZmxvYXQgZnVuYyhmbG9hdCB4LCBmbG9hdCB5KSB7IHJl
dHVybiBhK2I7IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNChmdW5jKDEuMCwgMi4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHZhcmlhYmxlX25vdF92aXNpYmxlX2luX293bl9pbml0aWFsaXplcgorCQl2ZXJzaW9uIDEwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDEwMAorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQlmbG9hdCB4ID0geDsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNCh4KTsKKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgaW52YWxpZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRh
L2dsZXMyL3NoYWRlcnMvc2hhZGVyLWxpYi10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9zaGFkZXIt
bGliLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjRhZDgwNDY1OThhNTZiMmJjODZiMjlhZGU1ZjQ0
MTJlOGE2NmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvc2hhZGVyLWxpYi10ZXN0
Lmh0bWwKQEAgLTAsMCArMSw0NjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNoYWRlci11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2hh
ZGVyLWxpYnJhcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNoYWRlci1saWJyYXJ5LWNh
c2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKKyAgICAgICAgZGVz
Y3JpcHRpb24oIlRlc3RpbmcgdGhlIC50ZXN0IHBhcnNlciBjb21wb25lbnRzLiIpOworCisgICAg
ICAgIHZhciB3dHUgICAgICAgICAgICAgICAgPSBXZWJHTFRlc3RVdGlsczsKKyAgICAgICAgdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworICAgICAgICB2YXIgcGFyc2VyICAgICAgICAg
ICAgID0gbmV3IHNoYWRlckxpYnJhcnkuUGFyc2VyKCk7CisKKworICAgICAgICAvLyB0aGlzIGFy
cmF5IG9mIGZ1bmN0aW9ucyBpcyBwcm9jZXNzZWQgc2VxdWVudGlhbGx5LgorICAgICAgICAvLyBy
ZXR1cm5pbmcgZmFsc2Ugd2lsbCBhYm9ydAorICAgICAgICB2YXIgdGVzdHMgPSBbCisKKworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IHNoYWRlckxpYnJhcnkuaXNXaGl0ZXNwYWNlKCIgIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNo
ZWNraW5nIGlzV2hpdGVzcGFjZS4gUGFzc2luZyBcIiBcIi4gRXhwZWN0aW5nIHRydWUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT09IHRydWUsIHJlc3VsdAorICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gc2hhZGVyTGlicmFyeS5pc1doaXRl
c3BhY2UoInEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgaXNXaGl0ZXNwYWNlLiBQYXNzaW5n
IFwicVwiLiBFeHBlY3RpbmcgZmFsc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPT09IGZhbHNlLCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IHNoYWRlckxpYnJhcnkuaXNXaGl0ZXNwYWNlKCIgXHJcblx0Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNoZWNraW5nIGlzV2hpdGVzcGFjZS4gUGFzc2luZyBcIiBcXHJcXG5cXHRcIi4gRXhw
ZWN0aW5nIHRydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT09
IHRydWUsIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gc2hh
ZGVyTGlicmFyeS5pc1doaXRlc3BhY2UoIiBcclxuXHRxIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNr
aW5nIGlzV2hpdGVzcGFjZS4gUGFzc2luZyBcIiBcXHJcXG5cXHRxXCIuIEV4cGVjdGluZyBmYWxz
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9PT0gZmFsc2UsIHJl
c3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBzaGFkZXJMaWJyYXJ5LnJlbW92ZUV4dHJhSW5k
ZW50YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx0XHRc
dGFhYWFcblx0ICAgIFx0XHRiYmJiXG5cdFx0XHRjY2NjXHJcblx0XHRcdGRkZGQiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFi
b3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNr
aW5nIHJlbW92ZUV4dHJhSW5kZW50YXRpb24uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc2luZyBcIlx0XHRcdGFhYWFcblx0ICAgIFx0XHRiYmJiXG5cdFx0XHRjY2NjXHJc
blx0XHRcdGRkZGRcIi4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3Rp
bmcgXCJhYWFhXG5cdGJiYmJcbmNjY2NcbmRkZGRcIiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9PT0gImFhYWFcblx0YmJiYlxuY2NjY1xuZGRkZCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0sCisKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbG9va2luZyBmb3IgcHJpdmF0ZSBhY2Nlc3MgdG8gdGhlIHBhcnNlciBvYmplY3QK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHBhcnNlci5wcml2
ICE9ICd1bmRlZmluZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KCJs
b29raW5nIGZvciBwcml2YXRlIG1lbWJlciBhY2Nlc3MiLCByZXN1bHQsIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZXIu
cHJpdi5wYXJzZUludExpdGVyYWwoIjQyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFi
b3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2lu
ZyBpbnQgcGFyc2VyLiBQYXNzaW5nIFwiNDJcIi4gRXhwZWN0aW5nIDQyIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09PSA0MiwgcmVzdWx0CisgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBwYXJzZXIucHJpdi5wYXJzZUludExpdGVyYWwoIi01Iik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDaGVja2luZyBpbnQgcGFyc2VyLiBQYXNzaW5nIFwiLTVcIi4gRXhwZWN0aW5nIC01
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09PSAtNSwgcmVzdWx0
CisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZXIucHJpdi5wYXJzZUludExpdGVyYWwoIjQyLjki
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiYWJvcnRlZCI7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGludCBwYXJzZXIuIFBhc3NpbmcgXCI0
Mi45XCIuIEV4cGVjdGluZyA0MiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9PT0gNDIsIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYucGFy
c2VGbG9hdExpdGVyYWwoIjQyLjkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiYWJvcnRl
ZCI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGZs
b2F0IHBhcnNlci4gUGFzc2luZyBcIjQyLjlcIi4gRXhwZWN0aW5nIDQyLjkiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT09IDQyLjksIHJlc3VsdAorICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0sCisKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LnBhcnNlU3RyaW5nTGl0ZXJhbCgiXCJoZWxsbyB3
b3JsZFwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2luZyBzdHJpbmcgcGFyc2VyLiBQ
YXNzaW5nIFwiXCJoZWxsbyB3b3JsZFwiXCIuIEV4cGVjdGluZyBcImhlbGxvIHdvcmxkXCIiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT0gImhlbGxvIHdvcmxkIiwg
cmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZXIucHJpdi5wYXJzZVN0cmluZ0xpdGVy
YWwoIlwiaGVsbG8gd29ybGRcImV4dHJhIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFi
b3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2lu
ZyBzdHJpbmcgcGFyc2VyLiBQYXNzaW5nIFwiXCJoZWxsbyB3b3JsZFwiZXh0cmFcIi4gRXhwZWN0
aW5nIFwiaGVsbG8gd29ybGRcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9PSAiaGVsbG8gd29ybGQiLCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNl
ci5wcml2LnBhcnNlU3RyaW5nTGl0ZXJhbCgiXCJcXFwiXFxcIlxcXCJcIlxcXCJcIiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgc3RyaW5nIHBhcnNlci4gUGFzc2luZyBcIlwiXFxc
IlxcXCJcXFwiXCJcXFwiXCJcIi4gRXhwZWN0aW5nIFwiXCJcIlwiXCIiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT0gIlwiXCJcIiIsIHJlc3VsdAorICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYucGFyc2VTdHJpbmdMaXRlcmFsKCJcIm5ld2xpbmUgdGVz
dFxcbm5ld2xpbmUgdGVzdFwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChl
cnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFib3J0ZWQi
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2luZyBzdHJp
bmcgcGFyc2VyLiBQYXNzaW5nIFwiXCJuZXdsaW5lIHRlc3RcXG5uZXdsaW5lIHRlc3RcIlwiLiBF
eHBlY3RpbmcgXCJuZXdsaW5lIHRlc3Rcbm5ld2xpbmUgdGVzdFwiIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID09ICJuZXdsaW5lIHRlc3Rcbm5ld2xpbmUgdGVzdCIs
IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYucGFyc2VTdHJpbmdMaXRl
cmFsKCJcInRhYiB0ZXN0XFx0dGFiIHRlc3RcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
ICJhYm9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfcmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hl
Y2tpbmcgc3RyaW5nIHBhcnNlci4gUGFzc2luZyBcIlwidGFiIHRlc3RcXHR0YWIgdGVzdFwiXCIu
IEV4cGVjdGluZyBcInRhYiB0ZXN0XHR0YWIgdGVzdFwiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID09ICJ0YWIgdGVzdFx0dGFiIHRlc3QiLCByZXN1bHQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYucGFyc2VTaGFkZXJTb3VyY2UoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiXCJcdFx0XHRhYWFhXG5cdCAgICBc
dFx0YmJiYlxuXHRcdFx0Y2NjY1xyXG5cdFx0XHRkZGRkXCJcIiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiYWJvcnRlZCI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
cmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgcGFyc2VT
aGFkZXJTb3VyY2UuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc2luZyBc
IlwiXCJcdFx0XHRhYWFhXG5cdCAgICBcdFx0YmJiYlxuXHRcdFx0Y2NjY1xyXG5cdFx0XHRkZGRk
XCJcIlwiLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVjdGluZyBcImFh
YWFcblx0YmJiYlxuY2NjY1xuZGRkZFwiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID09PSAiYWFhYVxuXHRiYmJiXG5jY2NjXG5kZGRkIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5w
cml2LmFkdmFuY2VUb2tlblRlc3RlcigiYm9vbCB2YWx1ZSA9IHRydWU7IiwgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJDaGVja2luZyBhZHZhbmNlVG9rZW4uIFBhc3NpbmcgXCJib29sIHZhbHVl
ID0gdHJ1ZTtcIiwgMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5p
ZFR5cGUgPT0gcGFyc2VyLnByaXYuVG9rZW4uVE9LRU5fQk9PTCAmJiByZXN1bHQudmFsdWUgPT0g
ImJvb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmFtZSArICI6
ICIgKyByZXN1bHQudmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiYm9vbCB2YWx1ZSA9IHRydWU7Iiwg
NCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2luZyBhZHZhbmNlVG9rZW4uIFBhc3Npbmcg
XCJib29sIHZhbHVlID0gdHJ1ZTtcIiwgNCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5pZFR5cGUgPT0gcGFyc2VyLnByaXYuVG9rZW4uVE9LRU5fSURFTlRJRklFUiAm
JiByZXN1bHQudmFsdWUgPT0gInZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm5hbWUgKyAiOiAiICsgcmVzdWx0LnZhbHVlCisgICAgICAgICAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgLy8qCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYuYWR2
YW5jZVRva2VuVGVzdGVyKCJib29sIHZhbHVlID0gdHJ1ZTsiLCAxMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDaGVja2luZyBhZHZhbmNlVG9rZW4uIFBhc3NpbmcgXCJib29sIHZhbHVlID0gdHJ1
ZTtcIiwgMTEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWRUeXBl
ID09IHBhcnNlci5wcml2LlRva2VuLlRPS0VOX0FTU0lHTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0Lm5hbWUgKyAiOiAiICsgcmVzdWx0LnZhbHVlCisgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgLy8q
LworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNl
ci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiYm9vbCB2YWx1ZSA9IHRydWU7IiwgMTIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5jZVRva2VuLiBQYXNzaW5nIFwiYm9vbCB2
YWx1ZSA9IHRydWU7XCIsIDEyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmlkVHlwZSA9PSBwYXJzZXIucHJpdi5Ub2tlbi5UT0tFTl9UUlVFICYmIHJlc3VsdC52YWx1
ZSA9PSAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1l
ICsgIjogIiArIHJlc3VsdC52YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiYm9vbCB2YWx1ZSA9IHRydWU7
IiwgMTcpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5jZVRva2VuLiBQYXNz
aW5nIFwiYm9vbCB2YWx1ZSA9IHRydWU7XCIsIDE3IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmlkVHlwZSA9PSBwYXJzZXIucHJpdi5Ub2tlbi5UT0tFTl9TRU1JX0NP
TE9OICYmIHJlc3VsdC52YWx1ZSA9PSAiOyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5uYW1lICsgIjogIiArIHJlc3VsdC52YWx1ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiLTci
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiYWJvcnRlZCI7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGFkdmFuY2VUb2tlbi4gUGFzc2lu
ZyBcIi03XCIsIDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWRU
eXBlID09IHBhcnNlci5wcml2LlRva2VuLlRPS0VOX01JTlVTICYmIHJlc3VsdC52YWx1ZSA9PSAi
LSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lICsgIjogIiAr
IHJlc3VsdC52YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBh
cnNlci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiLTciLCAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSAiYWJvcnRlZCI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNoZWNraW5nIGFkdmFuY2VUb2tlbi4gUGFzc2luZyBcIi03XCIsIDEiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWRUeXBlID09IHBhcnNlci5wcml2LlRva2Vu
LlRPS0VOX0lOVF9MSVRFUkFMICYmIHJlc3VsdC52YWx1ZSA9PSAiNyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lICsgIjogIiArIHJlc3VsdC52YWx1ZQorICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VU
b2tlblRlc3RlcigiMy4xNDUiLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiYWJvcnRl
ZCI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGFk
dmFuY2VUb2tlbi4gUGFzc2luZyBcIjMuMTQ1XCIsIDAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuaWRUeXBlID09IHBhcnNlci5wcml2LlRva2VuLlRPS0VOX0ZMT0FU
X0xJVEVSQUwgJiYgcmVzdWx0LnZhbHVlID09ICIzLjE0NSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5uYW1lICsgIjogIiArIHJlc3VsdC52YWx1ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRl
c3RlcigiMS4wZSsxMCIsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
cmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5j
ZVRva2VuLiBQYXNzaW5nIFwiMS4wZSsxMFwiLCAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmlkVHlwZSA9PSBwYXJzZXIucHJpdi5Ub2tlbi5UT0tFTl9GTE9BVF9M
SVRFUkFMICYmIHJlc3VsdC52YWx1ZSA9PSAiMS4wZSsxMCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5uYW1lICsgIjogIiArIHJlc3VsdC52YWx1ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRl
c3RlcigiMS4wZSIsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVz
dWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5jZVRv
a2VuLiBQYXNzaW5nIFwiMS4wZVwiLCAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID09PSAiYWJvcnRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5w
cml2LmFkdmFuY2VUb2tlblRlc3RlcigiXCJcInNoYWRlciBzb3VyY2VcIlwiOyIsIDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5jZVRva2VuLiBQYXNzaW5nIFwiXCJcInNo
YWRlciBzb3VyY2VcIlwiO1wiLCAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmlkVHlwZSA9PSBwYXJzZXIucHJpdi5Ub2tlbi5UT0tFTl9TSEFERVJfU09VUkNFICYm
IHJlc3VsdC52YWx1ZSA9PSAiXCJcInNoYWRlciBzb3VyY2VcIlwiIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgKyAiOiAiICsgcmVzdWx0LnZhbHVlCisgICAg
ICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcGFyc2VyLnByaXYuYWR2YW5jZVRv
a2VuVGVzdGVyKCJcInN0cmluZ1wiOyIsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJh
Ym9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfcmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tp
bmcgYWR2YW5jZVRva2VuLiBQYXNzaW5nIFwiXCJzdHJpbmdcIjtcIiwgMCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pZFR5cGUgPT0gcGFyc2VyLnByaXYuVG9rZW4u
VE9LRU5fU1RSSU5HICYmIHJlc3VsdC52YWx1ZSA9PSAiXCJzdHJpbmdcIiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lICsgIjogIiArIHJlc3VsdC52YWx1ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFu
Y2VUb2tlblRlc3RlcigiXCdzdHJpbmdcJzsiLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSAiYWJvcnRlZCI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNo
ZWNraW5nIGFkdmFuY2VUb2tlbi4gUGFzc2luZyBcIlwnc3RyaW5nXCc7XCIsIDAiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWRUeXBlID09IHBhcnNlci5wcml2LlRv
a2VuLlRPS0VOX1NUUklORyAmJiByZXN1bHQudmFsdWUgPT0gIlwnc3RyaW5nXCciLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmFtZSArICI6ICIgKyByZXN1bHQudmFs
dWUKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZXIucHJpdi5h
ZHZhbmNlVG9rZW5UZXN0ZXIoIlwnc3RyaW5nXCI7IiwgMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDaGVja2luZyBhZHZhbmNlVG9rZW4uIFBhc3NpbmcgXCJcJ3N0cmluZ1wiO1wiLCAwIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09PSAiYWJvcnRlZCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5wcml2LmFkdmFuY2VUb2tlblRlc3RlcigiXCdzdHJp
bmdcXCIsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJhYm9ydGVkIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWR2YW5jZVRva2VuLiBQ
YXNzaW5nIFwiXCdzdHJpbmdcXFwiLCAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID09PSAiYWJvcnRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlci5w
cml2Lm1hcERhdGFUeXBlVG9rZW4ocGFyc2VyLnByaXYuVG9rZW4uVE9LRU5fSU5UKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gImFib3J0ZWQiOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJDaGVja2luZyBhZHZhbmNlVG9rZW4uIFBhc3NpbmcgcGFyc2Vy
LnByaXYuVG9rZW4uVE9LRU5fSU5UIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID09PSBzaGFkZXJVdGlscy5EYXRhVHlwZS5UWVBFX0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7aQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBd
OworCisgICAgICAgIHZhciBjdXJyZW50ID0gMDsKKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3Jl
c3VsdChkZXNjcmlwdGlvbiwgcmVzdWx0LCBhZGRpdGlvbmFsKSB7CisgICAgICAgICAgICAgICAg
c3dpdGNoICh0eXBlb2YoYWRkaXRpb25hbCkpIHsKKyAgICAgICAgICAgICAgICAgY2FzZSAidW5k
ZWZpbmVkIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICBjYXNlICJzdHJpbmciOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0g
IjogXCIiICsgYWRkaXRpb25hbCArICJcIiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uICs9ICI6ICIgKyBhZGRpdGlvbmFsOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZGVzY3JpcHRpb24pOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGRl
c2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBkb19uZXh0KCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0c1tjdXJyZW50XSgpICE9
PSBmYWxzZSAmJiB0ZXN0cy5sZW5ndGggPiArK2N1cnJlbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZG9fbmV4dCwgMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9uX2NvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25fY29tcGxldGUoKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHRlc3RQb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7
CisgICAgICAgICAgICAgICAgdGVzdFBvc3Quc3JjID0gIi4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0
UG9zdCk7CisgICAgICAgIH0KKworICAgICAgICBkb19uZXh0KCk7CisKKy8vCQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9zd2l6emxlcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRh
L2dsZXMyL3NoYWRlcnMvc3dpenpsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDJjYTkyZDBmYWI0Y2Q4
ZDMzMjc2Yzg3M2RiMGNmM2EyNjZmMGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMv
c3dpenpsZXMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5n
bHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rl
c3ROYW1lID0gJ3N3aXp6bGVzJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3RO
YW1lICsgIi4iKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVy
eVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNv
ZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVy
biBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworCittb2R1bGVzLnNo
YXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvc3dpenpsZXMu
dGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZGF0YS9nbGVzMi9zaGFkZXJzL3N3aXp6bGVzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U4MmMzZTYwZDVh
MzM2MzU5ZTJkMDQ3ODUzOTg2NWUyMDUxY2NkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMi9zaGFk
ZXJzL3N3aXp6bGVzLnRlc3QKQEAgLTAsMCArMSw2ODExIEBACisjIFdBUk5JTkc6IFRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZC4gRG8gTk9UIG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhl
cgorIyBtb2RpZnkgdGhlIGdlbmVyYXRpbmcgc2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2Vz
IHdpbGwgYmUgbG9zdCEKKworZ3JvdXAgdmVjdG9yX3N3aXp6bGVzICJWZWN0b3IgU3dpenpsZXMi
CisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfeAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVj
MiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAt
Mi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEp
IF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8
IC0wLjc1IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfeHgKKyAgCXZhbHVlcworICAJeworICAJ
CWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZl
YzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxKSBdOworICAJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjApIHwg
dmVjMigxLjAsIDEuMCkgfCB2ZWMyKC0wLjUsIC0wLjUpIHwgdmVjMigtMzIuMCwgLTMyLjApIHwg
dmVjMigtMC43NSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHg7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX3h5CisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEu
MCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMy
KDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigt
MzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJfQorCisg
IAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFU
SU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQw
ID0gaW4wLnh5OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfdmVjMl95eAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBb
IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2
ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJ
b3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjUsIDAuMCkgfCB2ZWMyKDEuMjUsIDEuMCkgfCB2
ZWMyKC0yLjI1LCAtMC41KSB8IHZlYzIoNjQuMCwgLTMyLjApIHwgdmVjMigtMC4wMzIyNTgwNjQ1
MTYxLCAtMC43NSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC55eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfeXh5CisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4y
NSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuNSwg
MC4wLCAwLjUpIHwgdmVjMygxLjI1LCAxLjAsIDEuMjUpIHwgdmVjMygtMi4yNSwgLTAuNSwgLTIu
MjUpIHwgdmVjMyg2NC4wLCAtMzIuMCwgNjQuMCkgfCB2ZWMzKC0wLjAzMjI1ODA2NDUxNjEsIC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnl4eTsKKyAgCQkJJHtP
VVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfeHl4eAor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwg
dmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8
IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9
IFsgdmVjNCgwLjAsIDAuNSwgMC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMCwgMS4wKSB8
IHZlYzQoLTAuNSwgLTIuMjUsIC0wLjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTMyLjAs
IC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1LCAtMC43NSkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC54eXh4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfdmVjMl95eXl5CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1
dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0w
LjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSkgfCB2ZWM0KDEuMjUsIDEuMjUsIDEuMjUsIDEuMjUpIHwgdmVjNCgtMi4yNSwgLTIuMjUsIC0y
LjI1LCAtMi4yNSkgfCB2ZWM0KDY0LjAsIDY0LjAsIDY0LjAsIDY0LjApIHwgdmVjNCgtMC4wMzIy
NTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgw
NjQ1MTYxKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnl5eXk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX3MKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8
IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxKSBdOworICAJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAt
MC41IHwgLTMyLjAgfCAtMC43NSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnM7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX3NzCisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEu
MCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMy
KDAuMCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigtMC41LCAtMC41KSB8IHZlYzIoLTMy
LjAsIC0zMi4wKSB8IHZlYzIoLTAuNzUsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnNzOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVj
Ml9zdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAw
LjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2
NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJb3V0cHV0IHZlYzIg
b3V0MCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0y
LjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC5zdDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAg
ZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfdHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAu
NSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxKSBdOworICAJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC41LCAwLjApIHwgdmVjMigx
LjI1LCAxLjApIHwgdmVjMigtMi4yNSwgLTAuNSkgfCB2ZWMyKDY0LjAsIC0zMi4wKSB8IHZlYzIo
LTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudHM7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX3RzdAor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwg
dmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8
IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJb3V0cHV0IHZlYzMgb3V0MCA9
IFsgdmVjMygwLjUsIDAuMCwgMC41KSB8IHZlYzMoMS4yNSwgMS4wLCAxLjI1KSB8IHZlYzMoLTIu
MjUsIC0wLjUsIC0yLjI1KSB8IHZlYzMoNjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjMygtMC4wMzIy
NTgwNjQ1MTYxLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCX0KKworICAJYm90aCAi
IgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisK
KyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC50
c3Q7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVt
cF92ZWMyX3N0c3MKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMy
KDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigt
MzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJCW91dHB1
dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1
LCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtMC41LCAtMC41KSB8IHZlYzQoLTMyLjAs
IDY0LjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43
NSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3RzczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzJfdHR0dAorICAJdmFsdWVzCisg
IAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEu
MjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpIHwgdmVjNCgxLjI1LCAxLjI1LCAxLjI1LCAxLjI1KSB8IHZlYzQoLTIu
MjUsIC0yLjI1LCAtMi4yNSwgLTIuMjUpIHwgdmVjNCg2NC4wLCA2NC4wLCA2NC4wLCA2NC4wKSB8
IHZlYzQoLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2
MSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4o
KQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC50dHR0OworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjMl9yCisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMy
KDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVj
MigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsg
MC4wIHwgMS4wIHwgLTAuNSB8IC0zMi4wIHwgLTAuNzUgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVj
Ml9ycgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAw
LjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2
NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAkJb3V0cHV0IHZlYzIg
b3V0MCA9IFsgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDEuMCwgMS4wKSB8IHZlYzIoLTAuNSwgLTAu
NSkgfCB2ZWMyKC0zMi4wLCAtMzIuMCkgfCB2ZWMyKC0wLjc1LCAtMC43NSkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC5ycjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX3ZlYzJfcmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzIgaW4wID0g
WyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwg
dmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJ
CW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwg
dmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7
CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmc7CisgIAkJCSR7T1VUUFVUfQorICAJ
CX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX2dyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4y
NSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuNSwg
MC4wKSB8IHZlYzIoMS4yNSwgMS4wKSB8IHZlYzIoLTIuMjUsIC0wLjUpIHwgdmVjMig2NC4wLCAt
MzIuMCkgfCB2ZWMyKC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1KSBdOworICAJfQorCisgIAlib3Ro
ICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30K
KworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4w
LmdyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfdmVjMl9ncmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMy
KDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigt
MzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJCW91dHB1
dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAwLjAsIDAuNSkgfCB2ZWMzKDEuMjUsIDEuMCwgMS4y
NSkgfCB2ZWMzKC0yLjI1LCAtMC41LCAtMi4yNSkgfCB2ZWMzKDY0LjAsIC0zMi4wLCA2NC4wKSB8
IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuZ3JnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKwor
ICBjYXNlIG1lZGl1bXBfdmVjMl9yZ3JyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMy
IGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0y
LjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
XTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkgfCB2
ZWM0KDEuMCwgMS4yNSwgMS4wLCAxLjApIHwgdmVjNCgtMC41LCAtMi4yNSwgLTAuNSwgLTAuNSkg
fCB2ZWM0KC0zMi4wLCA2NC4wLCAtMzIuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgLTAuNzUsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJncnI7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMyX2dnZ2cK
KyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8
IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkg
fCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAg
PSBbIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSB8IHZlYzQoMS4yNSwgMS4yNSwgMS4yNSwgMS4y
NSkgfCB2ZWM0KC0yLjI1LCAtMi4yNSwgLTIuMjUsIC0yLjI1KSB8IHZlYzQoNjQuMCwgNjQuMCwg
NjQuMCwgNjQuMCkgfCB2ZWM0KC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEsIC0w
LjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ2dn
ZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X3ZlYzNfeAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4w
LCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUs
IC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBb
IDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueDsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3Zl
YzNfegorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAw
LjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00
Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAu
NzUgfCAxLjEyNSB8IC00Ljg3NSB8IC01MS4wIHwgMC4wNTI2MzE1Nzg5NDc0IF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAuejsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX3ZlYzNfeHoKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0g
WyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0w
LjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMy
IG91dDAgPSBbIHZlYzIoMC4wLCAwLjc1KSB8IHZlYzIoMS4wLCAxLjEyNSkgfCB2ZWMyKC0wLjUs
IC00Ljg3NSkgfCB2ZWMyKC0zMi4wLCAtNTEuMCkgfCB2ZWMyKC0wLjc1LCAwLjA1MjYzMTU3ODk0
NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHo7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIi
CisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX3p6CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlp
bnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwg
MS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01
MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsK
KyAgCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuNzUsIDAuNzUpIHwgdmVjMigxLjEyNSwg
MS4xMjUpIHwgdmVjMigtNC44NzUsIC00Ljg3NSkgfCB2ZWMyKC01MS4wLCAtNTEuMCkgfCB2ZWMy
KDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJfQorCisgIAlib3RoICIi
CisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKwor
ICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnp6
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
dmVjM194eXoKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAu
NSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
eHl6OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfdmVjM196eXgKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAg
PSBbIHZlYzMoMC43NSwgMC41LCAwLjApIHwgdmVjMygxLjEyNSwgMS4yNSwgMS4wKSB8IHZlYzMo
LTQuODc1LCAtMi4yNSwgLTAuNSkgfCB2ZWMzKC01MS4wLCA2NC4wLCAtMzIuMCkgfCB2ZWMzKDAu
MDUyNjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAuenl4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfdmVjM194eHgKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2
ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUs
IC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91
dDAgPSBbIHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygt
MC41LCAtMC41LCAtMC41KSB8IHZlYzMoLTMyLjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWMzKC0wLjc1
LCAtMC43NSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAg
CQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHh4OworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjM196enoKKyAgCXZhbHVl
cworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZl
YzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygt
MzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC43NSwgMC43NSwg
MC43NSkgfCB2ZWMzKDEuMTI1LCAxLjEyNSwgMS4xMjUpIHwgdmVjMygtNC44NzUsIC00Ljg3NSwg
LTQuODc1KSB8IHZlYzMoLTUxLjAsIC01MS4wLCAtNTEuMCkgfCB2ZWMzKDAuMDUyNjMxNTc4OTQ3
NCwgMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
enp6OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfdmVjM196enkKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAg
PSBbIHZlYzMoMC43NSwgMC43NSwgMC41KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAxLjI1KSB8IHZl
YzMoLTQuODc1LCAtNC44NzUsIC0yLjI1KSB8IHZlYzMoLTUxLjAsIC01MS4wLCA2NC4wKSB8IHZl
YzMoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIC0wLjAzMjI1ODA2NDUxNjEpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAuenp5OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfdmVjM195eHkKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEy
NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjAp
IHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJ
CW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAwLjAsIDAuNSkgfCB2ZWMzKDEuMjUsIDEu
MCwgMS4yNSkgfCB2ZWMzKC0yLjI1LCAtMC41LCAtMi4yNSkgfCB2ZWMzKDY0LjAsIC0zMi4wLCA2
NC4wKSB8IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAueXh5OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfdmVjM194engKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEy
NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjAp
IHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJ
CW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC4wLCAwLjc1LCAwLjApIHwgdmVjMygxLjAsIDEu
MTI1LCAxLjApIHwgdmVjMygtMC41LCAtNC44NzUsIC0wLjUpIHwgdmVjMygtMzIuMCwgLTUxLjAs
IC0zMi4wKSB8IHZlYzMoLTAuNzUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNzUpIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAueHp4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBj
YXNlIG1lZGl1bXBfdmVjM194eXl4CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMzIGlu
MCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVj
MygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCQlvdXRwdXQg
dmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjUsIDAuMCkgfCB2ZWM0KDEuMCwgMS4yNSwg
MS4yNSwgMS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC0yLjI1LCAtMC41KSB8IHZlYzQoLTMyLjAs
IDY0LjAsIDY0LjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAz
MjI1ODA2NDUxNjEsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5eXg7CisgIAkJCSR7T1VU
UFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX3p6enoKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1
KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwg
dmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC43NSwg
MC43NSwgMC43NSwgMC43NSkgfCB2ZWM0KDEuMTI1LCAxLjEyNSwgMS4xMjUsIDEuMTI1KSB8IHZl
YzQoLTQuODc1LCAtNC44NzUsIC00Ljg3NSwgLTQuODc1KSB8IHZlYzQoLTUxLjAsIC01MS4wLCAt
NTEuMCwgLTUxLjApIHwgdmVjNCgwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgMC4w
NTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAg
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJ
dm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuenp6ejsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3Zl
YzNfcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAw
LjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00
Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAu
MCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAg
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJ
dm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuczsKKyAg
CQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzNf
cAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUs
IDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3
NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuNzUg
fCAxLjEyNSB8IC00Ljg3NSB8IC01MS4wIHwgMC4wNTI2MzE1Nzg5NDc0IF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAucDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX3ZlYzNfc3AKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2
ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUs
IC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMyIG91
dDAgPSBbIHZlYzIoMC4wLCAwLjc1KSB8IHZlYzIoMS4wLCAxLjEyNSkgfCB2ZWMyKC0wLjUsIC00
Ljg3NSkgfCB2ZWMyKC0zMi4wLCAtNTEuMCkgfCB2ZWMyKC0wLjc1LCAwLjA1MjYzMTU3ODk0NzQp
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAuc3A7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX3BwCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1
dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4x
MjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4w
KSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAg
CQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuNzUsIDAuNzUpIHwgdmVjMigxLjEyNSwgMS4x
MjUpIHwgdmVjMigtNC44NzUsIC00Ljg3NSkgfCB2ZWMyKC01MS4wLCAtNTEuMCkgfCB2ZWMyKDAu
MDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnBwOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVj
M19zdHAKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZl
YzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwg
LTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3Rw
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
dmVjM19wdHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoMC43NSwgMC41LCAwLjApIHwgdmVjMygxLjEyNSwgMS4yNSwgMS4wKSB8IHZlYzMoLTQu
ODc1LCAtMi4yNSwgLTAuNSkgfCB2ZWMzKC01MS4wLCA2NC4wLCAtMzIuMCkgfCB2ZWMzKDAuMDUy
NjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
cHRzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfdmVjM19zc3MKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAg
PSBbIHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygtMC41
LCAtMC41LCAtMC41KSB8IHZlYzMoLTMyLjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWMzKC0wLjc1LCAt
MC43NSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7
CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3NzOworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjM19wcHAKKyAgCXZhbHVlcwor
ICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMo
MS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIu
MCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC43NSwgMC43NSwgMC43
NSkgfCB2ZWMzKDEuMTI1LCAxLjEyNSwgMS4xMjUpIHwgdmVjMygtNC44NzUsIC00Ljg3NSwgLTQu
ODc1KSB8IHZlYzMoLTUxLjAsIC01MS4wLCAtNTEuMCkgfCB2ZWMzKDAuMDUyNjMxNTc4OTQ3NCwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucHBw
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
dmVjM19wcHQKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoMC43NSwgMC43NSwgMC41KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAxLjI1KSB8IHZlYzMo
LTQuODc1LCAtNC44NzUsIC0yLjI1KSB8IHZlYzMoLTUxLjAsIC01MS4wLCA2NC4wKSB8IHZlYzMo
MC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIC0wLjAzMjI1ODA2NDUxNjEpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAucHB0OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfdmVjM190c3QKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkg
fCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwg
dmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91
dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAwLjAsIDAuNSkgfCB2ZWMzKDEuMjUsIDEuMCwg
MS4yNSkgfCB2ZWMzKC0yLjI1LCAtMC41LCAtMi4yNSkgfCB2ZWMzKDY0LjAsIC0zMi4wLCA2NC4w
KSB8IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAudHN0OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfdmVjM19zcHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkg
fCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwg
dmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91
dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC4wLCAwLjc1LCAwLjApIHwgdmVjMygxLjAsIDEuMTI1
LCAxLjApIHwgdmVjMygtMC41LCAtNC44NzUsIC0wLjUpIHwgdmVjMygtMzIuMCwgLTUxLjAsIC0z
Mi4wKSB8IHZlYzMoLTAuNzUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNzUpIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAuc3BzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfdmVjM19zdHRzCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMzIGluMCA9
IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygt
MC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCQlvdXRwdXQgdmVj
NCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjUsIDAuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4y
NSwgMS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC0yLjI1LCAtMC41KSB8IHZlYzQoLTMyLjAsIDY0
LjAsIDY0LjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1
ODA2NDUxNjEsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnN0dHM7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX3BwcHAKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8
IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVj
MygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC43NSwgMC43
NSwgMC43NSwgMC43NSkgfCB2ZWM0KDEuMTI1LCAxLjEyNSwgMS4xMjUsIDEuMTI1KSB8IHZlYzQo
LTQuODc1LCAtNC44NzUsIC00Ljg3NSwgLTQuODc1KSB8IHZlYzQoLTUxLjAsIC01MS4wLCAtNTEu
MCwgLTUxLjApIHwgdmVjNCgwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2
MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9p
ZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucHBwcDsKKyAg
CQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzNf
cgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUs
IDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3
NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8
IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9p
ZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucjsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzNfYgor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAu
NzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkg
fCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuNzUgfCAx
LjEyNSB8IC00Ljg3NSB8IC01MS4wIHwgMC4wNTI2MzE1Nzg5NDc0IF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAuYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRp
dW1wX3ZlYzNfcmIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMyIG91dDAg
PSBbIHZlYzIoMC4wLCAwLjc1KSB8IHZlYzIoMS4wLCAxLjEyNSkgfCB2ZWMyKC0wLjUsIC00Ljg3
NSkgfCB2ZWMyKC0zMi4wLCAtNTEuMCkgfCB2ZWMyKC0wLjc1LCAwLjA1MjYzMTU3ODk0NzQpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAucmI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX2JiCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2
ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUp
IHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8
IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCQlv
dXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuNzUsIDAuNzUpIHwgdmVjMigxLjEyNSwgMS4xMjUp
IHwgdmVjMigtNC44NzUsIC00Ljg3NSkgfCB2ZWMyKC01MS4wLCAtNTEuMCkgfCB2ZWMyKDAuMDUy
NjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZv
aWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmJiOworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjM19y
Z2IKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41
LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44
NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMo
MC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIu
MjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAg
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJ
dm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmdiOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVj
M19iZ3IKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZl
YzMoMC43NSwgMC41LCAwLjApIHwgdmVjMygxLjEyNSwgMS4yNSwgMS4wKSB8IHZlYzMoLTQuODc1
LCAtMi4yNSwgLTAuNSkgfCB2ZWMzKC01MS4wLCA2NC4wLCAtMzIuMCkgfCB2ZWMzKDAuMDUyNjMx
NTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmdy
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
dmVjM19ycnIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygtMC41LCAt
MC41LCAtMC41KSB8IHZlYzMoLTMyLjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWMzKC0wLjc1LCAtMC43
NSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucnJyOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjM19iYmIKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4w
LCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC43NSwgMC43NSwgMC43NSkg
fCB2ZWMzKDEuMTI1LCAxLjEyNSwgMS4xMjUpIHwgdmVjMygtNC44NzUsIC00Ljg3NSwgLTQuODc1
KSB8IHZlYzMoLTUxLjAsIC01MS4wLCAtNTEuMCkgfCB2ZWMzKDAuMDUyNjMxNTc4OTQ3NCwgMC4w
NTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAg
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJ
dm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmJiOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVj
M19iYmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZl
YzMoMC43NSwgMC43NSwgMC41KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAxLjI1KSB8IHZlYzMoLTQu
ODc1LCAtNC44NzUsIC0yLjI1KSB8IHZlYzMoLTUxLjAsIC01MS4wLCA2NC4wKSB8IHZlYzMoMC4w
NTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuYmJnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKwor
ICBjYXNlIG1lZGl1bXBfdmVjM19ncmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMg
aW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2
ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVj
MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1
dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAwLjAsIDAuNSkgfCB2ZWMzKDEuMjUsIDEuMCwgMS4y
NSkgfCB2ZWMzKC0yLjI1LCAtMC41LCAtMi4yNSkgfCB2ZWMzKDY0LjAsIC0zMi4wLCA2NC4wKSB8
IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuZ3JnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKwor
ICBjYXNlIG1lZGl1bXBfdmVjM19yYnIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzMg
aW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2
ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVj
MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJCW91dHB1
dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC4wLCAwLjc1LCAwLjApIHwgdmVjMygxLjAsIDEuMTI1LCAx
LjApIHwgdmVjMygtMC41LCAtNC44NzUsIC0wLjUpIHwgdmVjMygtMzIuMCwgLTUxLjAsIC0zMi4w
KSB8IHZlYzMoLTAuNzUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAucmJyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfdmVjM19yZ2dyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWMzIGluMCA9IFsg
dmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41
LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCQlvdXRwdXQgdmVjNCBv
dXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjUsIDAuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4yNSwg
MS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC0yLjI1LCAtMC41KSB8IHZlYzQoLTMyLjAsIDY0LjAs
IDY0LjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2
NDUxNjEsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJ
eworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJnZ3I7CisgIAkJCSR7T1VUUFVUfQor
ICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWMzX2JiYmIKKyAgCXZhbHVl
cworICAJeworICAJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZl
YzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygt
MzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC43NSwgMC43NSwg
MC43NSwgMC43NSkgfCB2ZWM0KDEuMTI1LCAxLjEyNSwgMS4xMjUsIDEuMTI1KSB8IHZlYzQoLTQu
ODc1LCAtNC44NzUsIC00Ljg3NSwgLTQuODc1KSB8IHZlYzQoLTUxLjAsIC01MS4wLCAtNTEuMCwg
LTUxLjApIHwgdmVjNCgwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmJiYjsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfeAor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
NzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJ
b3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAueDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5k
CisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfdworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuODI1IHwg
MS43NSB8IDkuMCB8IDI0LjAgfCAwLjI1IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudzsKKyAgCQkJJHtP
VVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfd3gKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4y
NSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91
dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC44MjUsIDAuMCkgfCB2ZWMyKDEuNzUsIDEuMCkgfCB2
ZWMyKDkuMCwgLTAuNSkgfCB2ZWMyKDI0LjAsIC0zMi4wKSB8IHZlYzIoMC4yNSwgLTAuNzUpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAud3g7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3d6CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2
ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAu
ODI1LCAwLjc1KSB8IHZlYzIoMS43NSwgMS4xMjUpIHwgdmVjMig5LjAsIC00Ljg3NSkgfCB2ZWMy
KDI0LjAsIC01MS4wKSB8IHZlYzIoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJfQorCisg
IAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFU
SU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQw
ID0gaW4wLnd6OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfdmVjNF93d3cKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0g
WyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEu
NzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC44MjUsIDAuODI1
LCAwLjgyNSkgfCB2ZWMzKDEuNzUsIDEuNzUsIDEuNzUpIHwgdmVjMyg5LjAsIDkuMCwgOS4wKSB8
IHZlYzMoMjQuMCwgMjQuMCwgMjQuMCkgfCB2ZWMzKDAuMjUsIDAuMjUsIDAuMjUpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAud3d3OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKwor
ICBjYXNlIG1lZGl1bXBfdmVjNF95eXcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQg
aW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4x
MjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAw
LjUsIDAuODI1KSB8IHZlYzMoMS4yNSwgMS4yNSwgMS43NSkgfCB2ZWMzKC0yLjI1LCAtMi4yNSwg
OS4wKSB8IHZlYzMoNjQuMCwgNjQuMCwgMjQuMCkgfCB2ZWMzKC0wLjAzMjI1ODA2NDUxNjEsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMjUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWlu
KCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueXl3OworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF93enkKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4y
NSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91
dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC44MjUsIDAuNzUsIDAuNSkgfCB2ZWMzKDEuNzUsIDEu
MTI1LCAxLjI1KSB8IHZlYzMoOS4wLCAtNC44NzUsIC0yLjI1KSB8IHZlYzMoMjQuMCwgLTUxLjAs
IDY0LjApIHwgdmVjMygwLjI1LCAwLjA1MjYzMTU3ODk0NzQsIC0wLjAzMjI1ODA2NDUxNjEpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAud3p5OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF94eXp3CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1
dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEu
MjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQo
LTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEs
IDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0
KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwg
dmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAs
IDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAw
LjI1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkk
e1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5enc7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAg
CSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3d6eXgKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0
KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAp
IHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAg
PSBbIHZlYzQoMC44MjUsIDAuNzUsIDAuNSwgMC4wKSB8IHZlYzQoMS43NSwgMS4xMjUsIDEuMjUs
IDEuMCkgfCB2ZWM0KDkuMCwgLTQuODc1LCAtMi4yNSwgLTAuNSkgfCB2ZWM0KDI0LjAsIC01MS4w
LCA2NC4wLCAtMzIuMCkgfCB2ZWM0KDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0
NTE2MSwgLTAuNzUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7
CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3p5eDsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfeHh4eAorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1
KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44
NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZl
YzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMCwgMS4w
LCAxLjApIHwgdmVjNCgtMC41LCAtMC41LCAtMC41LCAtMC41KSB8IHZlYzQoLTMyLjAsIC0zMi4w
LCAtMzIuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuNzUsIC0wLjc1LCAtMC43NSkgXTsKKyAg
CX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtE
RUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAg
CQkJb3V0MCA9IGluMC54eHh4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfdmVjNF95eXl5CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2
ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAu
NSwgMC41LCAwLjUsIDAuNSkgfCB2ZWM0KDEuMjUsIDEuMjUsIDEuMjUsIDEuMjUpIHwgdmVjNCgt
Mi4yNSwgLTIuMjUsIC0yLjI1LCAtMi4yNSkgfCB2ZWM0KDY0LjAsIDY0LjAsIDY0LjAsIDY0LjAp
IHwgdmVjNCgtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1
MTYxLCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnl5eXk7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3d3d3cK
KyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAw
Ljc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAt
Mi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVj
NCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJ
CW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuODI1LCAwLjgyNSwgMC44MjUpIHwg
dmVjNCgxLjc1LCAxLjc1LCAxLjc1LCAxLjc1KSB8IHZlYzQoOS4wLCA5LjAsIDkuMCwgOS4wKSB8
IHZlYzQoMjQuMCwgMjQuMCwgMjQuMCwgMjQuMCkgfCB2ZWM0KDAuMjUsIDAuMjUsIDAuMjUsIDAu
MjUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3d3dzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfd3p6dworICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQo
MS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkg
fCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9
IFsgdmVjNCgwLjgyNSwgMC43NSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjc1LCAxLjEyNSwgMS4x
MjUsIDEuNzUpIHwgdmVjNCg5LjAsIC00Ljg3NSwgLTQuODc1LCA5LjApIHwgdmVjNCgyNC4wLCAt
NTEuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgwLjI1LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMx
NTc4OTQ3NCwgMC4yNSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJ
CXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53enp3OworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF93d3d5CisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQg
dmVjNCBvdXQwID0gWyB2ZWM0KDAuODI1LCAwLjgyNSwgMC44MjUsIDAuNSkgfCB2ZWM0KDEuNzUs
IDEuNzUsIDEuNzUsIDEuMjUpIHwgdmVjNCg5LjAsIDkuMCwgOS4wLCAtMi4yNSkgfCB2ZWM0KDI0
LjAsIDI0LjAsIDI0LjAsIDY0LjApIHwgdmVjNCgwLjI1LCAwLjI1LCAwLjI1LCAtMC4wMzIyNTgw
NjQ1MTYxKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnd3d3k7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3h5eHgKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2
ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5
LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91
dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjAsIDEu
MCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtMC41LCAtMC41KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC0z
Mi4wLCAtMzIuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuNzUp
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAueHl4eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfenp3egorICAJdmFsdWVzCisgIAl7CisgIAkJ
aW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4w
LCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2
ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9IFsg
dmVjNCgwLjc1LCAwLjc1LCAwLjgyNSwgMC43NSkgfCB2ZWM0KDEuMTI1LCAxLjEyNSwgMS43NSwg
MS4xMjUpIHwgdmVjNCgtNC44NzUsIC00Ljg3NSwgOS4wLCAtNC44NzUpIHwgdmVjNCgtNTEuMCwg
LTUxLjAsIDI0LjAsIC01MS4wKSB8IHZlYzQoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC56end6OworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9z
CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwg
MC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwg
LTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZl
YzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAg
CQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgLTAuNSB8IC0zMi4wIHwgLTAuNzUg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC5zOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9xCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2
ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC44MjUg
fCAxLjc1IHwgOS4wIHwgMjQuMCB8IDAuMjUgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xOworICAJCQkk
e09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9xcwor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
NzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJ
b3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjgyNSwgMC4wKSB8IHZlYzIoMS43NSwgMS4wKSB8
IHZlYzIoOS4wLCAtMC41KSB8IHZlYzIoMjQuMCwgLTMyLjApIHwgdmVjMigwLjI1LCAtMC43NSkg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC5xczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAg
ZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfcXAKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4y
NSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgt
MzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIo
MC44MjUsIDAuNzUpIHwgdmVjMigxLjc1LCAxLjEyNSkgfCB2ZWMyKDkuMCwgLTQuODc1KSB8IHZl
YzIoMjQuMCwgLTUxLjApIHwgdmVjMigwLjI1LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAucXA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNh
c2UgbWVkaXVtcF92ZWM0X3FxcQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAg
PSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwg
MS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4w
LCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3
ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjgyNSwgMC44
MjUsIDAuODI1KSB8IHZlYzMoMS43NSwgMS43NSwgMS43NSkgfCB2ZWMzKDkuMCwgOS4wLCA5LjAp
IHwgdmVjMygyNC4wLCAyNC4wLCAyNC4wKSB8IHZlYzMoMC4yNSwgMC4yNSwgMC4yNSkgXTsKKyAg
CX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtE
RUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAg
CQkJb3V0MCA9IGluMC5xcXE7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAor
CisgIGNhc2UgbWVkaXVtcF92ZWM0X3R0cQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjUs
IDAuNSwgMC44MjUpIHwgdmVjMygxLjI1LCAxLjI1LCAxLjc1KSB8IHZlYzMoLTIuMjUsIC0yLjI1
LCA5LjApIHwgdmVjMyg2NC4wLCA2NC4wLCAyNC4wKSB8IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4yNSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1h
aW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC50dHE7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3FwdAor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
NzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJ
b3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjgyNSwgMC43NSwgMC41KSB8IHZlYzMoMS43NSwg
MS4xMjUsIDEuMjUpIHwgdmVjMyg5LjAsIC00Ljg3NSwgLTIuMjUpIHwgdmVjMygyNC4wLCAtNTEu
MCwgNjQuMCkgfCB2ZWMzKDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSkg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC5xcHQ7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3N0cHEKKyAgCXZhbHVlcworICAJeworICAJCWlu
cHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVj
NCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZl
YzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkg
fCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEu
MCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQs
IDAuMjUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3RwcTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfcXB0cworICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZl
YzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDku
MCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0
MCA9IFsgdmVjNCgwLjgyNSwgMC43NSwgMC41LCAwLjApIHwgdmVjNCgxLjc1LCAxLjEyNSwgMS4y
NSwgMS4wKSB8IHZlYzQoOS4wLCAtNC44NzUsIC0yLjI1LCAtMC41KSB8IHZlYzQoMjQuMCwgLTUx
LjAsIDY0LjAsIC0zMi4wKSB8IHZlYzQoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0LCAtMC4wMzIyNTgw
NjQ1MTYxLCAtMC43NSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJ
CXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcHRzOworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9zc3NzCisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQg
dmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAx
LjAsIDEuMCkgfCB2ZWM0KC0wLjUsIC0wLjUsIC0wLjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgLTMy
LjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWM0KC0wLjc1LCAtMC43NSwgLTAuNzUsIC0wLjc1KSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLnNzc3M7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3R0dHQKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4y
NSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgt
MzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSB8IHZlYzQoMS4yNSwgMS4yNSwgMS4yNSwgMS4yNSkgfCB2ZWM0
KC0yLjI1LCAtMi4yNSwgLTIuMjUsIC0yLjI1KSB8IHZlYzQoNjQuMCwgNjQuMCwgNjQuMCwgNjQu
MCkgfCB2ZWM0KC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2
NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudHR0dDsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfcXFx
cQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUs
IDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUs
IC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2
ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07Cisg
IAkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC44MjUsIDAuODI1LCAwLjgyNSkg
fCB2ZWM0KDEuNzUsIDEuNzUsIDEuNzUsIDEuNzUpIHwgdmVjNCg5LjAsIDkuMCwgOS4wLCA5LjAp
IHwgdmVjNCgyNC4wLCAyNC4wLCAyNC4wLCAyNC4wKSB8IHZlYzQoMC4yNSwgMC4yNSwgMC4yNSwg
MC4yNSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJ
JHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcXFxOworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9xcHBxCisgIAl2YWx1ZXMKKyAgCXsK
KyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVj
NCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4w
KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQw
ID0gWyB2ZWM0KDAuODI1LCAwLjc1LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuNzUsIDEuMTI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KDkuMCwgLTQuODc1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDI0LjAs
IC01MS4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2
MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnFwcHE7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3FxcXQKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAw
LjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwg
LTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1
dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuODI1LCAwLjgyNSwgMC41KSB8IHZlYzQoMS43
NSwgMS43NSwgMS43NSwgMS4yNSkgfCB2ZWM0KDkuMCwgOS4wLCA5LjAsIC0yLjI1KSB8IHZlYzQo
MjQuMCwgMjQuMCwgMjQuMCwgNjQuMCkgfCB2ZWM0KDAuMjUsIDAuMjUsIDAuMjUsIC0wLjAzMjI1
ODA2NDUxNjEpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucXFxdDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfc3RzcworICAJdmFsdWVzCisg
IAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8
IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUs
IDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQg
b3V0MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMCwg
MS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC0wLjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTMyLjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1LCAtMC43
NSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zdHNzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAki
IgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9wcHFwCisgIAl2YWx1ZXMKKyAgCXsKKyAg
CQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgx
LjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8
IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBvdXQwID0g
WyB2ZWM0KDAuNzUsIDAuNzUsIDAuODI1LCAwLjc1KSB8IHZlYzQoMS4xMjUsIDEuMTI1LCAxLjc1
LCAxLjEyNSkgfCB2ZWM0KC00Ljg3NSwgLTQuODc1LCA5LjAsIC00Ljg3NSkgfCB2ZWM0KC01MS4w
LCAtNTEuMCwgMjQuMCwgLTUxLjApIHwgdmVjNCgwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4
OTQ3NCwgMC4yNSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZv
aWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnBwcXA7Cisg
IAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0
X3IKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41
LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41
LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwg
dmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOwor
ICAJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAtMC41IHwgLTMyLjAgfCAtMC43
NSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLnI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X2EKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4y
NSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgt
MzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjgy
NSB8IDEuNzUgfCA5LjAgfCAyNC4wIHwgMC4yNSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZv
aWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmE7CisgIAkJ
CSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X2Fy
CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwg
MC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwg
LTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZl
YzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAg
CQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuODI1LCAwLjApIHwgdmVjMigxLjc1LCAxLjAp
IHwgdmVjMig5LjAsIC0wLjUpIHwgdmVjMigyNC4wLCAtMzIuMCkgfCB2ZWMyKDAuMjUsIC0wLjc1
KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLmFyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgor
ICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9hYgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5w
dXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAx
LjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0
KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVj
MigwLjgyNSwgMC43NSkgfCB2ZWMyKDEuNzUsIDEuMTI1KSB8IHZlYzIoOS4wLCAtNC44NzUpIHwg
dmVjMigyNC4wLCAtNTEuMCkgfCB2ZWMyKDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKyAgCX0K
KworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNM
QVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJ
b3V0MCA9IGluMC5hYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAg
Y2FzZSBtZWRpdW1wX3ZlYzRfYWFhCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGlu
MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1
LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0
LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuODI1LCAw
LjgyNSwgMC44MjUpIHwgdmVjMygxLjc1LCAxLjc1LCAxLjc1KSB8IHZlYzMoOS4wLCA5LjAsIDku
MCkgfCB2ZWMzKDI0LjAsIDI0LjAsIDI0LjApIHwgdmVjMygwLjI1LCAwLjI1LCAwLjI1KSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLmFhYTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5k
CisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfZ2dhCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2
ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAu
NSwgMC41LCAwLjgyNSkgfCB2ZWMzKDEuMjUsIDEuMjUsIDEuNzUpIHwgdmVjMygtMi4yNSwgLTIu
MjUsIDkuMCkgfCB2ZWMzKDY0LjAsIDY0LjAsIDI0LjApIHwgdmVjMygtMC4wMzIyNTgwNjQ1MTYx
LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjI1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQg
bWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmdnYTsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfYWJn
CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwg
MC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwg
LTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZl
YzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAg
CQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuODI1LCAwLjc1LCAwLjUpIHwgdmVjMygxLjc1
LCAxLjEyNSwgMS4yNSkgfCB2ZWMzKDkuMCwgLTQuODc1LCAtMi4yNSkgfCB2ZWMzKDI0LjAsIC01
MS4wLCA2NC4wKSB8IHZlYzMoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0LCAtMC4wMzIyNTgwNjQ1MTYx
KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLmFiZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfcmdiYQorICAJdmFsdWVzCisgIAl7CisgIAkJ
aW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4w
LCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2
ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9IFsg
dmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1
KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01
MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3
NCwgMC4yNSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yZ2JhOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9hYmdyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwg
dmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwg
OS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVjNCBv
dXQwID0gWyB2ZWM0KDAuODI1LCAwLjc1LCAwLjUsIDAuMCkgfCB2ZWM0KDEuNzUsIDEuMTI1LCAx
LjI1LCAxLjApIHwgdmVjNCg5LjAsIC00Ljg3NSwgLTIuMjUsIC0wLjUpIHwgdmVjNCgyNC4wLCAt
NTEuMCwgNjQuMCwgLTMyLjApIHwgdmVjNCgwLjI1LCAwLjA1MjYzMTU3ODk0NzQsIC0wLjAzMjI1
ODA2NDUxNjEsIC0wLjc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFiZ3I7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X3JycnIKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAw
LjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwg
LTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1
dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKSB8IHZlYzQoLTAuNSwgLTAuNSwgLTAuNSwgLTAuNSkgfCB2ZWM0KC0zMi4wLCAt
MzIuMCwgLTMyLjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjc1LCAtMC43NSwgLTAuNzUpIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAucnJycjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAg
ZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfZ2dnZworICAJdmFsdWVzCisgIAl7CisgIAkJaW5w
dXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAx
LjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0
KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpIHwgdmVjNCgxLjI1LCAxLjI1LCAxLjI1LCAxLjI1KSB8IHZl
YzQoLTIuMjUsIC0yLjI1LCAtMi4yNSwgLTIuMjUpIHwgdmVjNCg2NC4wLCA2NC4wLCA2NC4wLCA2
NC4wKSB8IHZlYzQoLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4
MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5nZ2dnOworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9h
YWFhCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAu
NSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAu
NSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8
IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsK
KyAgCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuODI1LCAwLjgyNSwgMC44MjUsIDAuODI1
KSB8IHZlYzQoMS43NSwgMS43NSwgMS43NSwgMS43NSkgfCB2ZWM0KDkuMCwgOS4wLCA5LjAsIDku
MCkgfCB2ZWM0KDI0LjAsIDI0LjAsIDI0LjAsIDI0LjApIHwgdmVjNCgwLjI1LCAwLjI1LCAwLjI1
LCAwLjI1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFhYWE7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X2FiYmEKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2
ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5
LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91
dDAgPSBbIHZlYzQoMC44MjUsIDAuNzUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS43NSwgMS4xMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoOS4wLCAtNC44NzUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoMjQu
MCwgLTUxLjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYWJiYTsKKyAgCQkJJHtPVVRQ
VVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX3ZlYzRfYWFhZworICAJ
dmFsdWVzCisgIAl7CisgIAkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUs
IDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1
LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisgIAkJb3V0
cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC44MjUsIDAuODI1LCAwLjUpIHwgdmVjNCgx
Ljc1LCAxLjc1LCAxLjc1LCAxLjI1KSB8IHZlYzQoOS4wLCA5LjAsIDkuMCwgLTIuMjUpIHwgdmVj
NCgyNC4wLCAyNC4wLCAyNC4wLCA2NC4wKSB8IHZlYzQoMC4yNSwgMC4yNSwgMC4yNSwgLTAuMDMy
MjU4MDY0NTE2MSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5hYWFnOworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfdmVjNF9yZ3JyCisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUp
IHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3
NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKyAgCQlvdXRwdXQgdmVj
NCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4w
LCAxLjApIHwgdmVjNCgtMC41LCAtMi4yNSwgLTAuNSwgLTAuNSkgfCB2ZWM0KC0zMi4wLCA2NC4w
LCAtMzIuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0w
Ljc1KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkk
e1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJncnI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAg
CSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF92ZWM0X2JiYWIKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0
KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAp
IHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworICAJCW91dHB1dCB2ZWM0IG91dDAg
PSBbIHZlYzQoMC43NSwgMC43NSwgMC44MjUsIDAuNzUpIHwgdmVjNCgxLjEyNSwgMS4xMjUsIDEu
NzUsIDEuMTI1KSB8IHZlYzQoLTQuODc1LCAtNC44NzUsIDkuMCwgLTQuODc1KSB8IHZlYzQoLTUx
LjAsIC01MS4wLCAyNC4wLCAtNTEuMCkgfCB2ZWM0KDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjI1LCAwLjA1MjYzMTU3ODk0NzQpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAg
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJ
dm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmJhYjsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2
ZWMyX3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwg
MCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIo
MCwgMCkgXTsKKyAgCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC54OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfaXZlYzJfeHgKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2
ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsg
aXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCAtMzIp
IHwgaXZlYzIoMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJ
CXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC54eDsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMyX3h5CisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisgIAkJb3V0
cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAt
MikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHk7
CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9p
dmVjMl95eAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVj
MigwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMy
KDEsIDEpIHwgaXZlYzIoLTIsIDApIHwgaXZlYzIoNjQsIC0zMikgfCBpdmVjMigwLCAwKSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLnl4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfaXZlYzJfeXh5CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBp
dmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBp
dmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBb
IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwgMCwgLTIpIHwgaXZl
YzMoNjQsIC0zMiwgNjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC55eHk7
CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9p
dmVjMl94eXh4CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMy
KDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2
ZWMyKDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0
LCAtMzIsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5eHg7
CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9p
dmVjMl95eXl5CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMy
KDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2
ZWMyKDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtMiwgLTIsIC0yLCAtMikgfCBpdmVjNCg2NCwg
NjQsIDY0LCA2NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnl5eXk7
CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9p
dmVjMl9zCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAs
IDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMy
KDAsIDApIF07CisgIAkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAuczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5k
CisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMyX3NzCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBp
dmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBp
dmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMyIG91dDAgPSBb
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKC0zMiwgLTMy
KSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAg
CQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3M7CisgIAkJCSR7T1VUUFVUfQor
ICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjMl9zdAorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEp
IHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworICAJCW91
dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
LTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworICAJfQorCisgIAlib3RoICIi
CisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKwor
ICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnN0
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzJfdHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIo
MCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZl
YzIoMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVj
MigxLCAxKSB8IGl2ZWMyKC0yLCAwKSB8IGl2ZWMyKDY0LCAtMzIpIHwgaXZlYzIoMCwgMCkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC50czsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5k
CisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMyX3RzdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
aXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwg
aXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMyBvdXQwID0g
WyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTIsIDAsIC0yKSB8IGl2
ZWMzKDY0LCAtMzIsIDY0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudHN0
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzJfc3RzcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVj
MigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBp
dmVjMigwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAw
KSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIDAsIDApIHwgaXZlYzQoLTMyLCA2
NCwgLTMyLCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zdHNz
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzJfdHR0dAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVj
MigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBp
dmVjMigwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAw
KSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTIsIC0yLCAtMiwgLTIpIHwgaXZlYzQoNjQs
IDY0LCA2NCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC50dHR0
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzJfcgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVj
MigwLCAwKSBdOworICAJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwgMCBd
OworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAg
CQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQ
fQorICAJCQlvdXQwID0gaW4wLnI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjMl9ycgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
aXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwg
aXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMiBvdXQwID0g
WyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIC0z
MikgfCBpdmVjMigwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJyOworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzJfcmcKKyAgCXZhbHVl
cworICAJeworICAJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKyAgCQlv
dXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAs
IC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAi
IgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisK
KyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5y
ZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X2l2ZWMyX2dyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMy
KDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2
ZWMyKDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZl
YzIoMSwgMSkgfCBpdmVjMigtMiwgMCkgfCBpdmVjMig2NCwgLTMyKSB8IGl2ZWMyKDAsIDApIF07
CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJ
CSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9
CisgIAkJCW91dDAgPSBpbjAuZ3I7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjMl9ncmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8
IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC0yLCAwLCAtMikgfCBp
dmVjMyg2NCwgLTMyLCA2NCkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIi
CisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKwor
ICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmdy
ZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X2l2ZWMyX3JncnIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZl
YzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwg
aXZlYzIoMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwg
MCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAwLCAwKSB8IGl2ZWM0KC0zMiwg
NjQsIC0zMiwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmdy
cjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X2l2ZWMyX2dnZ2cKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZl
YzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwg
aXZlYzIoMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwg
MCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KC0yLCAtMiwgLTIsIC0yKSB8IGl2ZWM0KDY0
LCA2NCwgNjQsIDY0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ2dn
ZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X2l2ZWMzX3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMo
MCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIs
IDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaW50IG91dDAgPSBbIDAg
fCAxIHwgMCB8IC0zMiB8IDAgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC54OworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfegorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEs
IDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygw
LCAwLCAwKSBdOworICAJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAtNCB8IC01MSB8IDAg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC56OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfeHoKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAs
IC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlv
dXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAs
IC00KSB8IGl2ZWMyKC0zMiwgLTUxKSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
eHo7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVt
cF9pdmVjM196egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0z
MiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMiBvdXQwID0g
WyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoLTQsIC00KSB8IGl2ZWMyKC01MSwg
LTUxKSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueno7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM194eXoKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC54eXo7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM196eXgKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC00LCAtMiwgMCkgfCBpdmVjMygtNTEsIDY0LCAtMzIp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC56eXg7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM194eHgKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoLTMyLCAtMzIsIC0zMikg
fCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh4eDsKKyAgCQkJJHtPVVRQVVR9
CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX3p6egorICAJdmFs
dWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMz
KDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVj
MygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8
IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTQsIC00LCAtNCkgfCBpdmVjMygtNTEsIC01MSwgLTUx
KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuenp6OworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfenp5CisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZl
YzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2
ZWMzKDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtNCwgLTQsIC0yKSB8IGl2ZWMzKC01MSwgLTUxLCA2
NCkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnp6eTsKKyAgCQkJJHtPVVRQ
VVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX3l4eQorICAJ
dmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAw
KSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTIsIDAsIC0yKSB8IGl2ZWMzKDY0LCAtMzIsIDY0
KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueXh5OworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfeHp4CisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZl
YzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2
ZWMzKDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtNCwgMCkgfCBpdmVjMygtMzIsIC01MSwgLTMy
KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHp4OworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfeHl5eAorICAJ
dmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAw
LCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC0yLCAwKSB8IGl2ZWM0KC0z
MiwgNjQsIDY0LCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAi
IgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisK
KyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC54
eXl4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfaXZlYzNfenp6egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMz
KC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQw
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTQsIC00
LCAtNCwgLTQpIHwgaXZlYzQoLTUxLCAtNTEsIC01MSwgLTUxKSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAuenp6ejsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX3MKKyAgCXZhbHVlcworICAJeworICAJCWlu
cHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMz
KDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAg
CQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsKKyAgCX0KKworICAJ
Ym90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElP
TlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9
IGluMC5zOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfaXZlYzNfcAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMz
KC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpbnQgb3V0MCA9
IFsgMCB8IDEgfCAtNCB8IC01MSB8IDAgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1h
aW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5wOworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfc3AKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBp
dmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwg
aXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkg
fCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC00KSB8IGl2ZWMyKC0zMiwgLTUxKSB8IGl2ZWMyKDAs
IDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3A7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIi
CisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM19wcAorICAJdmFsdWVzCisgIAl7CisgIAkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZl
YzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOwor
ICAJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZl
YzIoLTQsIC00KSB8IGl2ZWMyKC01MSwgLTUxKSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAucHA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2Ug
bWVkaXVtcF9pdmVjM19zdHAKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBp
dmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMg
b3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAt
NCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJ
Ym90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElP
TlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9
IGluMC5zdHA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2Ug
bWVkaXVtcF9pdmVjM19wdHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBp
dmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMg
b3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC00LCAtMiwg
MCkgfCBpdmVjMygtNTEsIDY0LCAtMzIpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJ
Ym90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElP
TlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9
IGluMC5wdHM7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2Ug
bWVkaXVtcF9pdmVjM19zc3MKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBp
dmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMg
b3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoLTMyLCAtMzIsIC0zMikgfCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisgIAli
b3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9O
U30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0g
aW4wLnNzczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX2l2ZWMzX3BwcAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0g
WyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2
ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMyBv
dXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTQsIC00LCAt
NCkgfCBpdmVjMygtNTEsIC01MSwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAucHBwOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfaXZlYzNfcHB0CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAg
PSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwg
aXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMz
IG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtNCwgLTQs
IC0yKSB8IGl2ZWMzKC01MSwgLTUxLCA2NCkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisg
IAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFU
SU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQw
ID0gaW4wLnBwdDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX2l2ZWMzX3RzdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4w
ID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8
IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVj
MyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTIsIDAs
IC0yKSB8IGl2ZWMzKDY0LCAtMzIsIDY0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAudHN0OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfaXZlYzNfc3BzCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAg
PSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwg
aXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMz
IG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtNCwg
MCkgfCBpdmVjMygtMzIsIC01MSwgLTMyKSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAuc3BzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfaXZlYzNfc3R0cworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4w
ID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8
IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVj
NCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MCwgLTIsIC0yLCAwKSB8IGl2ZWM0KC0zMiwgNjQsIDY0LCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwg
MCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zdHRzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAki
IgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfcHBwcAorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwg
aXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBd
OworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEs
IDEsIDEsIDEpIHwgaXZlYzQoLTQsIC00LCAtNCwgLTQpIHwgaXZlYzQoLTUxLCAtNTEsIC01MSwg
LTUxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucHBwcDsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX3IK
KyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8
IC0zMiB8IDAgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yOworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfYgorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwg
aXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBd
OworICAJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAtNCB8IC01MSB8IDAgXTsKKyAgCX0K
KworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNM
QVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJ
b3V0MCA9IGluMC5iOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBj
YXNlIG1lZGl1bXBfaXZlYzNfcmIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWMzIGlu
MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkg
fCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZl
YzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC00KSB8IGl2
ZWMyKC0zMiwgLTUxKSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9p
ZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmI7CisgIAkJ
CSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM19i
YgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAw
KSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01
MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoLTQsIC00KSB8IGl2ZWMyKC01MSwgLTUxKSB8IGl2
ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM19yZ2IKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwg
MCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMo
MCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yZ2I7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM19iZ3IKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwg
MCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKC00LCAtMiwgMCkgfCBpdmVjMygtNTEsIDY0LCAtMzIpIHwgaXZlYzMo
MCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5iZ3I7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjM19ycnIKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwg
MCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoLTMyLCAtMzIsIC0zMikgfCBpdmVjMygw
LCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJycjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX2JiYgorICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEp
IHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAw
KSBdOworICAJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEs
IDEsIDEpIHwgaXZlYzMoLTQsIC00LCAtNCkgfCBpdmVjMygtNTEsIC01MSwgLTUxKSB8IGl2ZWMz
KDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYmJiOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfYmJnCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwg
MSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAs
IDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMo
MSwgMSwgMSkgfCBpdmVjMygtNCwgLTQsIC0yKSB8IGl2ZWMzKC01MSwgLTUxLCA2NCkgfCBpdmVj
MygwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJewor
ICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmJiZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWMzX2dyZworICAJdmFsdWVzCisg
IAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworICAJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMz
KDEsIDEsIDEpIHwgaXZlYzMoLTIsIDAsIC0yKSB8IGl2ZWMzKDY0LCAtMzIsIDY0KSB8IGl2ZWMz
KDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ3JnOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfcmJyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwg
MSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAs
IDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMo
MSwgMSwgMSkgfCBpdmVjMygwLCAtNCwgMCkgfCBpdmVjMygtMzIsIC01MSwgLTMyKSB8IGl2ZWMz
KDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmJyOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNfcmdncgorICAJdmFsdWVzCisg
IAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2
ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC0yLCAwKSB8IGl2ZWM0KC0zMiwgNjQsIDY0
LCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yZ2dyOworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzNf
YmJiYgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAw
LCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQs
IC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVj
NCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTQsIC00LCAtNCwgLTQp
IHwgaXZlYzQoLTUxLCAtNTEsIC01MSwgLTUxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuYmJiYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisK
KyAgY2FzZSBtZWRpdW1wX2l2ZWM0X3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0
IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAs
IC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisgIAkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAueDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAg
Y2FzZSBtZWRpdW1wX2l2ZWM0X3cKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGlu
MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0y
LCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07
CisgIAkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDkgfCAyNCB8IDAgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC53OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfaXZlYzRfd3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9
IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAt
NCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07Cisg
IAkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVj
Mig5LCAwKSB8IGl2ZWMyKDI0LCAtMzIpIHwgaXZlYzIoMCwgMCkgXTsKKyAgCX0KKworICAJYm90
aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9
CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGlu
MC53eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRp
dW1wX2l2ZWM0X3d6CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkp
IHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91
dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoOSwg
LTQpIHwgaXZlYzIoMjQsIC01MSkgfCBpdmVjMigwLCAwKSBdOworICAJfQorCisgIAlib3RoICIi
CisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKwor
ICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnd6
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzRfd3d3CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0
KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwg
aXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1
dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMo
OSwgOSwgOSkgfCBpdmVjMygyNCwgMjQsIDI0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAud3d3OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBj
YXNlIG1lZGl1bXBfaXZlYzRfeXl3CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBp
bjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAt
MiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBd
OworICAJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoLTIsIC0yLCA5KSB8IGl2ZWMzKDY0LCA2NCwgMjQpIHwgaXZlYzMoMCwgMCwg
MCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC55eXc7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIi
CisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF93enkKKyAgCXZhbHVlcworICAJeworICAJ
CWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAx
KSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0
KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMyg5LCAtNCwgLTIpIHwgaXZlYzMoMjQsIC01MSwgNjQp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53enk7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF94eXp3CisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwg
aXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwg
LTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0g
WyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00
LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAg
CX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtE
RUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAg
CQkJb3V0MCA9IGluMC54eXp3OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfaXZlYzRfd3p5eAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
aXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZl
YzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwg
MCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBp
dmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDksIC00LCAtMiwgMCkgfCBpdmVjNCgyNCwgLTUxLCA2
NCwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9p
ZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3p5eDsKKyAg
CQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0
X3h4eHgKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVj
NCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2
ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVj
NCgwLCAwLCAwLCAwKSB8IGl2ZWM0KC0zMiwgLTMyLCAtMzIsIC0zMikgfCBpdmVjNCgwLCAwLCAw
LCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkk
e1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh4eHg7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAg
CSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF95eXl5CisgIAl2YWx1ZXMKKyAgCXsK
KyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwg
MSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBp
dmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAw
LCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTIsIC0yLCAtMiwgLTIpIHwgaXZl
YzQoNjQsIDY0LCA2NCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90
aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9
CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGlu
MC55eXl5OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfaXZlYzRfd3d3dworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0g
WyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00
LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAg
CQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAx
LCAxKSB8IGl2ZWM0KDksIDksIDksIDkpIHwgaXZlYzQoMjQsIDI0LCAyNCwgMjQpIHwgaXZlYzQo
MCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53d3d3OworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzRfd3p6dworICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZl
YzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDksIC00LCAtNCwgOSkg
fCBpdmVjNCgyNCwgLTUxLCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAud3p6dzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAg
Y2FzZSBtZWRpdW1wX2l2ZWM0X3d3d3kKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0
IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAs
IC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCg5LCA5LCA5LCAtMikgfCBpdmVjNCgyNCwgMjQsIDI0LCA2NCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnd3d3k7CisgIAkJCSR7T1VU
UFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF94eXh4Cisg
IAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2
NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQw
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIs
IDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTMyLCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC54eXh4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzRfenp3egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5w
dXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KC00LCAtNCwgOSwgLTQpIHwgaXZlYzQoLTUxLCAt
NTEsIDI0LCAtNTEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC56end6
OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBf
aXZlYzRfcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgw
LCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2
ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQg
aW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsKKyAgCX0KKworICAJYm90aCAiIgor
ICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAg
CQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZl
YzRfcQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAw
LCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0
KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaW50
IG91dDAgPSBbIDAgfCAxIHwgOSB8IDI0IHwgMCBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZv
aWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnE7CisgIAkJ
CSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9x
cworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAw
LCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0z
MiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzIg
b3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDksIDApIHwgaXZlYzIo
MjQsIC0zMikgfCBpdmVjMigwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnFzOworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzRfcXAKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMyIG91dDAg
PSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMig5LCAtNCkgfCBpdmVjMigyNCwg
LTUxKSB8IGl2ZWMyKDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucXA7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9xcXEKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBp
dmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAt
NTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWMzIG91dDAgPSBb
IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMyg5LCA5LCA5KSB8IGl2ZWMz
KDI0LCAyNCwgMjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2
b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcXE7Cisg
IAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVj
NF90dHEKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVj
NCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2
ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwg
LTIsIDkpIHwgaXZlYzMoNjQsIDY0LCAyNCkgfCBpdmVjMygwLCAwLCAwKSBdOworICAJfQorCisg
IAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFU
SU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQw
ID0gaW4wLnR0cTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX2l2ZWM0X3FwdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4w
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIs
IC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsK
KyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKDksIC00LCAtMikgfCBpdmVjMygyNCwgLTUxLCA2NCkgfCBpdmVjMygwLCAwLCAw
KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLnFwdDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X3N0cHEKKyAgCXZhbHVlcworICAJeworICAJ
CWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAx
KSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0
KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMy
LCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIi
CisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKwor
ICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnN0
cHE7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVt
cF9pdmVjNF9xcHRzCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkp
IHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91
dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEp
IHwgaXZlYzQoOSwgLTQsIC0yLCAwKSB8IGl2ZWM0KDI0LCAtNTEsIDY0LCAtMzIpIHwgaXZlYzQo
MCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcHRzOworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzRfc3NzcworICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZl
YzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwg
aXZlYzQoLTMyLCAtMzIsIC0zMiwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAuc3NzczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAg
Y2FzZSBtZWRpdW1wX2l2ZWM0X3R0dHQKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0
IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAs
IC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCgtMiwgLTIsIC0yLCAtMikgfCBpdmVjNCg2NCwgNjQsIDY0LCA2
NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnR0dHQ7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9xcXFx
CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMy
LCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBv
dXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwg
OSwgOSwgOSkgfCBpdmVjNCgyNCwgMjQsIDI0LCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLnFxcXE7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9xcHBxCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1
dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBp
dmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAw
LCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwgLTQsIC00LCA5KSB8IGl2ZWM0KDI0LCAtNTEs
IC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2
b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcHBxOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZl
YzRfcXFxdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgw
LCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2
ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQg
aXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2
ZWM0KDksIDksIDksIC0yKSB8IGl2ZWM0KDI0LCAyNCwgMjQsIDY0KSB8IGl2ZWM0KDAsIDAsIDAs
IDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucXFxdDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X3N0c3MKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAx
LCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2
ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgMCwgMCkgfCBpdmVjNCgt
MzIsIDY0LCAtMzIsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3Ro
ICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30K
KworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4w
LnN0c3M7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVk
aXVtcF9pdmVjNF9wcHFwCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBb
IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQs
IDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJ
CW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoLTQsIC00LCA5LCAtNCkgfCBpdmVjNCgtNTEsIC01MSwgMjQsIC01MSkgfCBp
dmVjNCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnBwcXA7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9yCisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZl
YzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUx
LCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8
IDEgfCAwIHwgLTMyIHwgMCBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnI7CisgIAkJCSR7T1VUUFVUfQor
ICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9hCisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAy
NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEg
fCA5IHwgMjQgfCAwIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7
CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2FyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoOSwgMCkgfCBpdmVjMigyNCwgLTMyKSB8IGl2ZWMy
KDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYXI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAg
CSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9hYgorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZl
YzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkg
fCBpdmVjMigxLCAxKSB8IGl2ZWMyKDksIC00KSB8IGl2ZWMyKDI0LCAtNTEpIHwgaXZlYzIoMCwg
MCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC5hYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2FhYQorICAJdmFsdWVzCisgIAl7CisgIAkJ
aW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEp
IHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQo
MCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDksIDksIDkpIHwgaXZlYzMoMjQsIDI0LCAyNCkgfCBp
dmVjMygwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJ
eworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFhYTsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2dnYQorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZl
YzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC0yLCAtMiwgOSkgfCBpdmVjMyg2
NCwgNjQsIDI0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9p
ZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ2dhOworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZlYzRf
YWJnCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQo
LTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVj
MyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoOSwgLTQs
IC0yKSB8IGl2ZWMzKDI0LCAtNTEsIDY0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAuYWJnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfaXZlYzRfcmdiYQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4w
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIs
IC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsK
KyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAx
LCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8
IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmdiYTsKKyAgCQkJJHtPVVRQ
VVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2FiZ3IKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAg
PSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCg5LCAtNCwg
LTIsIDApIHwgaXZlYzQoMjQsIC01MSwgNjQsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLmFiZ3I7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9ycnJyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1
dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBp
dmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAw
LCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgtMzIsIC0zMiwg
LTMyLCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2
b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5ycnJyOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfaXZl
YzRfZ2dnZworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgw
LCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2
ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCQlvdXRwdXQg
aXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2
ZWM0KC0yLCAtMiwgLTIsIC0yKSB8IGl2ZWM0KDY0LCA2NCwgNjQsIDY0KSB8IGl2ZWM0KDAsIDAs
IDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ2dnZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2FhYWEKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAx
LCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8
IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAs
IDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCg5LCA5LCA5LCA5KSB8IGl2ZWM0
KDI0LCAyNCwgMjQsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
YWFhYTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRp
dW1wX2l2ZWM0X2FiYmEKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsg
aXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwg
OSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJ
b3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwg
MSkgfCBpdmVjNCg5LCAtNCwgLTQsIDkpIHwgaXZlYzQoMjQsIC01MSwgLTUxLCAyNCkgfCBpdmVj
NCgwLCAwLCAwLCAwKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJ
eworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFiYmE7CisgIAkJCSR7T1VUUFVUfQor
ICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9pdmVjNF9hYWFnCisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZl
YzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUx
LCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworICAJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBp
dmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwgOSwgOSwgLTIp
IHwgaXZlYzQoMjQsIDI0LCAyNCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC5hYWFnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBj
YXNlIG1lZGl1bXBfaXZlYzRfcmdycgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgaXZlYzQg
aW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwg
LTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkg
XTsKKyAgCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgx
LCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAwLCAwKSB8IGl2ZWM0KC0zMiwgNjQsIC0zMiwgLTMy
KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWlu
KCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmdycjsKKyAgCQkJJHtP
VVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2l2ZWM0X2JiYWIK
KyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwg
MCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIs
IDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisgIAkJb3V0cHV0IGl2ZWM0IG91
dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtNCwg
LTQsIDksIC00KSB8IGl2ZWM0KC01MSwgLTUxLCAyNCwgLTUxKSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAuYmJhYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMyX3gKKyAgCXZhbHVlcworICAJeworICAJCWlu
cHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSBdOworICAJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSB8IGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAg
CQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueDsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMyX3h4CisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAli
b3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9O
U30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0g
aW4wLnh4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfYnZlYzJfeHkKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMyIGluMCA9IFsg
YnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0
cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJCW91
dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueHk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjMl95eAorICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAi
IgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisK
KyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC55
eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1w
X2J2ZWMyX3l4eQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVj
Mih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0
IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90
aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9
CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGlu
MC55eHk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVk
aXVtcF9idmVjMl94eXh4CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBb
IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwg
dHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlv
dXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5eHg7CisgIAkJCSR7T1VU
UFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjMl95eXl5Cisg
IAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9
IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLnl5eXk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIi
CisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjMl9zCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlp
bnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnM7CisgIAkJCSR7T1VUUFVUfQor
ICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjMl9zcworICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMy
KHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJ
Ym90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElP
TlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9
IGluMC5zczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX2J2ZWMyX3N0CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBb
IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwg
dHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlv
dXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFs
c2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJewor
ICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnN0OworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzJfdHMKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIoZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxz
ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGgg
IiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQor
CisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAu
dHM7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVt
cF9idmVjMl90c3QKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZl
YzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1
dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAudHN0OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfYnZlYzJfc3RzcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzIgaW4wID0g
WyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAkJ
b3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4o
KQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zdHNzOworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzJfdHR0dAor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAg
PSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC50dHR0OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAki
IgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzJfcgorICAJdmFsdWVzCisgIAl7CisgIAkJ
aW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFs
c2UgfCB0cnVlIHwgZmFsc2UgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yOworICAJCQkke09VVFBVVH0K
KyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzJfcnIKKyAgCXZhbHVl
cworICAJeworICAJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZl
YzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVj
Mih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAucnI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2Ug
bWVkaXVtcF9idmVjMl9yZworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzIgaW4wID0g
WyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAkJ
b3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMyX2dyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFs
c2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2
ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3Ro
ICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30K
KworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4w
LmdyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1
bXBfYnZlYzJfZ3JnCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRw
dXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAli
b3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9O
U30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0g
aW4wLmdyZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX2J2ZWMyX3JncnIKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMyIGluMCA9
IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNl
LCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJ
CW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWlu
KCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucmdycjsKKyAgCQkJJHtP
VVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMyX2dnZ2cK
KyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFs
c2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQw
ID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuZ2dnZzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3gKKyAgCXZhbHVlcworICAJeworICAJ
CWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRw
dXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOwor
ICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkk
e0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQor
ICAJCQlvdXQwID0gaW4wLng7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAor
CisgIGNhc2UgbWVkaXVtcF9idmVjM196CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVj
MyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJvb2wgb3V0
MCA9IFsgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAuejsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX2J2ZWMzX3h6CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBb
IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAl9CisK
KyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFS
QVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91
dDAgPSBpbjAueHo7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNh
c2UgbWVkaXVtcF9idmVjM196egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4w
ID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMiBvdXQwID0g
WyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAg
CX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtE
RUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAg
CQkJb3V0MCA9IGluMC56ejsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisK
KyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3h5egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZl
YzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBv
dXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5ejsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2
ZWMzX3p5eAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJ
eworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnp5eDsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3h4eAorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2Up
IHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBd
OworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAueHh4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfYnZlYzNfenp6CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBi
dmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMz
IG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAi
IgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisK
KyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC56
eno7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVt
cF9idmVjM196enkKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZl
YzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkK
KyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuenp5OworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfeXh5CisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBm
YWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkg
XTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
IAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRV
UH0KKyAgCQkJb3V0MCA9IGluMC55eHk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM194engKKyAgCXZhbHVlcworICAJeworICAJCWlu
cHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQg
YnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90
aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9
CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGlu
MC54eng7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVk
aXVtcF9idmVjM194eXl4CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBb
IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2
ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC54eXl4OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfenp6egorICAJdmFsdWVzCisgIAl7CisgIAkJaW5w
dXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBi
dmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisg
IAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnp6eno7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19zCisgIAl2YWx1
ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisgIAkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVl
IHwgZmFsc2UgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zOworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfcAorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91
dHB1dCBib29sIG91dDAgPSBbIGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBd
OworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAg
CQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQ
fQorICAJCQlvdXQwID0gaW4wLnA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19zcAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
YnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVj
MiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZl
YzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NF
VFVQfQorICAJCQlvdXQwID0gaW4wLnNwOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgor
ICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfcHAKKyAgCXZhbHVlcworICAJeworICAJCWlu
cHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQg
YnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucHA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAg
CSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19zdHAKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMz
KHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlv
dXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC5zdHA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNh
c2UgbWVkaXVtcF9idmVjM19wdHMKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGlu
MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9
IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5wdHM7CisgIAkJ
CSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19z
c3MKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnNzczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3BwcAorICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJ
CW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAucHBwOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKwor
ICBjYXNlIG1lZGl1bXBfYnZlYzNfcHB0CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVj
MyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91
dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnBwdDsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2
ZWMzX3RzdAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7
CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudHN0OworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfc3BzCisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAuc3BzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfYnZlYzNfc3R0cworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
YnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVj
NCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3R0czsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3BwcHAKKyAgCXZhbHVlcwor
ICAJeworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2
b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5wcHBwOwor
ICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZl
YzNfcgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSB8
IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWlu
KCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAucjsKKyAgCQkJJHtPVVRQ
VVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX2IKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZh
bHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKyAgCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIHwgZmFsc2UgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5iOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfcmIKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAg
CQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJ
CXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yYjsKKyAgCQkJJHtPVVRQVVR9Cisg
IAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX2JiCisgIAl2YWx1ZXMK
KyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisgIAkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihm
YWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmJiOworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfcmdiCisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBm
YWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAucmdiOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgor
ICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzNfYmdyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlp
bnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0
IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAuYmdyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfYnZlYzNfcnJyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBb
IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4o
KQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5ycnI7CisgIAkJCSR7T1VU
UFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19iYmIKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUs
IGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkk
e1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmJiYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX2JiZworICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91
dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC5iYmc7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNh
c2UgbWVkaXVtcF9idmVjM19ncmcKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWMzIGlu
MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9
IFsgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQg
bWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmdyZzsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3Ji
cgorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
dHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJicjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWMzX3JnZ3IKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAg
CQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0
cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFp
bigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnJnZ3I7CisgIAkJCSR7
T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjM19iYmJi
CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0
cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAuYmJiYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX2J2ZWM0X3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworICAJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1
ZSB8IGZhbHNlIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAueDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQor
ICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3cKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUg
fCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2
b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53OworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRf
d3gKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1
dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJ
JHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3d6CisgIAl2YWx1ZXMKKyAgCXsKKyAg
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIo
dHJ1ZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAli
b3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9O
U30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0g
aW4wLnd6OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1l
ZGl1bXBfYnZlYzRfd3d3CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBb
IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
XTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJ
fQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RF
Q0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJ
CQlvdXQwID0gaW4wLnd3dzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisK
KyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3l5dworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZl
YzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
ZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkk
e1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnl5dzsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3d6eQorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMz
KHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC53enk7CisgIAkJCSR7T1VUUFVU
fQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF94eXp3CisgIAl2
YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQg
b3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnh5enc7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF93enl4CisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsg
YnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBd
OworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAg
CQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQ
fQorICAJCQlvdXQwID0gaW4wLnd6eXg7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF94eHh4CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlp
bnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQor
CisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xB
UkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlv
dXQwID0gaW4wLnh4eHg7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisg
IGNhc2UgbWVkaXVtcF9idmVjNF95eXl5CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVj
NCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3Ro
ICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30K
KworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4w
Lnl5eXk7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVk
aXVtcF9idmVjNF93d3d3CisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBb
IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
XTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBt
YWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3d3dzsKKyAgCQkJ
JHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3d6
encKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1
dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAg
CQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3p6dzsKKyAgCQkJJHtPVVRQVVR9
CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3d3d3kKKyAgCXZh
bHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBv
dXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7
U0VUVVB9CisgIAkJCW91dDAgPSBpbjAud3d3eTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJ
IiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3h5eHgKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVj
NCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAueHl4eDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5k
CisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3p6d3oKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwg
ZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC56end6OworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBj
YXNlIG1lZGl1bXBfYnZlYzRfcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4w
ID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIHwgZmFsc2UgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5zOworICAJCQkke09VVFBVVH0KKyAgCQl9
CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcQorICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1
ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworICAJfQorCisgIAlib3RoICIiCisg
IAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJ
CXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnE7Cisg
IAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVj
NF9xcworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0
cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnFzOworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcXAKKyAgCXZhbHVlcworICAJewor
ICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVj
Mih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAg
CWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJ
T05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAg
PSBpbjAucXA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2Ug
bWVkaXVtcF9idmVjNF9xcXEKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07Cisg
IAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7
REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9Cisg
IAkJCW91dDAgPSBpbjAucXFxOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfYnZlYzRfdHRxCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBi
dmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJ
CSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAudHRxOworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcXB0CisgIAl2YWx1ZXMKKyAgCXsK
KyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZl
YzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnFwdDsKKyAgCQkJJHtPVVRQ
VVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3N0cHEKKyAg
CXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVj
NCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuc3RwcTsKKyAgCQkJJHtPVVRQVVR9CisgIAkJ
fQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3FwdHMKKyAgCXZhbHVlcwor
ICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRy
dWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0g
WyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
ICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VU
VVB9CisgIAkJCW91dDAgPSBpbjAucXB0czsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIK
KyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3Nzc3MKKyAgCXZhbHVlcworICAJeworICAJ
CWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuc3NzczsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisK
KyAgY2FzZSBtZWRpdW1wX2J2ZWM0X3R0dHQKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2
ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJv
dGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05T
fQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBp
bjAudHR0dDsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBt
ZWRpdW1wX2J2ZWM0X3FxcXEKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0IGJ2ZWM0IGluMCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworICAJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lk
IG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcXFxOworICAJ
CQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRf
cXBwcQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0
cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQor
ICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcHBxOworICAJCQkke09VVFBV
VH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcXFxdAorICAJ
dmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0
IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJ
JHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5xcXF0OworICAJCQkke09VVFBVVH0KKyAgCQl9Cisg
IAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfc3RzcworICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2
ZWM0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC5zdHNzOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBl
bmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcHBxcAorICAJdmFsdWVzCisgIAl7CisgIAkJaW5w
dXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQor
CisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xB
UkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlv
dXQwID0gaW4wLnBwcXA7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisg
IGNhc2UgbWVkaXVtcF9idmVjNF9yCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBp
bjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKyAgCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8
IHRydWUgfCBmYWxzZSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJ
eworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLnI7CisgIAkJCSR7T1VUUFVUfQorICAJ
CX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9hCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0
cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisgIAl9CisKKyAgCWJvdGggIiIK
KyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisg
IAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYTsK
KyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2FzZSBtZWRpdW1wX2J2
ZWM0X2FyCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRy
dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlv
dXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7Cisg
IAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYXI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9hYgorICAJdmFsdWVzCisgIAl7
CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKwor
ICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJB
VElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0
MCA9IGluMC5hYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisKKyAgY2Fz
ZSBtZWRpdW1wX2J2ZWM0X2FhYQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4w
ID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJ
JHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0K
KyAgCQkJb3V0MCA9IGluMC5hYWE7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVu
ZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9nZ2EKKyAgCXZhbHVlcworICAJeworICAJCWlucHV0
IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAg
CQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5nZ2E7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9hYmcKKyAgCXZhbHVlcworICAJ
eworICAJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJCW91dHB1dCBidmVjMyBvdXQwID0gWyBi
dmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVDTEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWlu
KCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJCW91dDAgPSBpbjAuYWJnOworICAJCQkke09V
VFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcmdiYQor
ICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2
ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsK
KyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9IGluMC5yZ2JhOworICAJCQkke09VVFBVVH0KKyAg
CQl9CisgIAkiIgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfYWJncgorICAJdmFsdWVz
CisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
dHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAg
PSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKyAgCX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisgIAkJJHtERUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtT
RVRVUH0KKyAgCQkJb3V0MCA9IGluMC5hYmdyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAki
IgorICBlbmQKKworICBjYXNlIG1lZGl1bXBfYnZlYzRfcnJycgorICAJdmFsdWVzCisgIAl7Cisg
IAkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAg
CX0KKworICAJYm90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtE
RUNMQVJBVElPTlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAg
CQkJb3V0MCA9IGluMC5ycnJyOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQK
KworICBjYXNlIG1lZGl1bXBfYnZlYzRfZ2dnZworICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQg
YnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCX0KKworICAJ
Ym90aCAiIgorICAJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgIAkJJHtERUNMQVJBVElP
TlN9CisKKyAgCQl2b2lkIG1haW4oKQorICAJCXsKKyAgCQkJJHtTRVRVUH0KKyAgCQkJb3V0MCA9
IGluMC5nZ2dnOworICAJCQkke09VVFBVVH0KKyAgCQl9CisgIAkiIgorICBlbmQKKworICBjYXNl
IG1lZGl1bXBfYnZlYzRfYWFhYQorICAJdmFsdWVzCisgIAl7CisgIAkJaW5wdXQgYnZlYzQgaW4w
ID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIF07CisgIAkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZv
aWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFhYWE7Cisg
IAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVj
NF9hYmJhCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRy
dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlv
dXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigp
CisgIAkJeworICAJCQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFiYmE7CisgIAkJCSR7T1VU
UFVUfQorICAJCX0KKyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9hYWFnCisg
IAl2YWx1ZXMKKyAgCXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZl
YzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgCQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJ
CQkke1NFVFVQfQorICAJCQlvdXQwID0gaW4wLmFhYWc7CisgIAkJCSR7T1VUUFVUfQorICAJCX0K
KyAgCSIiCisgIGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9yZ3JyCisgIAl2YWx1ZXMKKyAg
CXsKKyAgCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsg
YnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBd
OworICAJfQorCisgIAlib3RoICIiCisgIAkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAg
CQkke0RFQ0xBUkFUSU9OU30KKworICAJCXZvaWQgbWFpbigpCisgIAkJeworICAJCQkke1NFVFVQ
fQorICAJCQlvdXQwID0gaW4wLnJncnI7CisgIAkJCSR7T1VUUFVUfQorICAJCX0KKyAgCSIiCisg
IGVuZAorCisgIGNhc2UgbWVkaXVtcF9idmVjNF9iYmFiCisgIAl2YWx1ZXMKKyAgCXsKKyAgCQlp
bnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKyAgCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFs
c2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisgIAl9
CisKKyAgCWJvdGggIiIKKyAgCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAJCSR7REVD
TEFSQVRJT05TfQorCisgIAkJdm9pZCBtYWluKCkKKyAgCQl7CisgIAkJCSR7U0VUVVB9CisgIAkJ
CW91dDAgPSBpbjAuYmJhYjsKKyAgCQkJJHtPVVRQVVR9CisgIAkJfQorICAJIiIKKyAgZW5kCisK
KworZW5kICMgdmVjdG9yX3N3aXp6bGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy90ZW1wbGF0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9kYXRhL2dsZXMyL3NoYWRlcnMvdGVtcGxhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDU2ZDRkYmUy
MTliYTU3ZjE1NjE1MDU2ODZkZWQ1Y2Y2NDI5OTZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMyL3No
YWRlcnMvdGVtcGxhdGUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNo
YXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3Rlc3ROYW1lID0gX19fVEVTVF9OQU1FX19fOworZGVzY3JpcHRpb24oIlNoYWRlciB0ZXN0
OiAiICsgdGVzdE5hbWUgKyAiLiIpOworCit2YXIgZ2V0RmlsdGVyID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHF1ZXJ5VmFycyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNw
bGl0KCcmJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5VmFycy5sZW5ndGg7IGkr
KykgeworICAgICAgICB2YXIgdmFsdWUgPSBxdWVyeVZhcnNbaV0uc3BsaXQoJz0nKTsKKyAgICAg
ICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVswXSkgPT09ICdmaWx0ZXInKQorICAgICAg
ICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVsxXSk7CisgICAgfQorfQorCisK
K21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnkucnVuKHRlc3ROYW1lLCBnZXRGaWx0ZXIo
KSkKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVy
cy9hcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2FycmF5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNzkx
MDJkMDI5NjE0YzExNWZjMTJjOGFjMzVmNjJkNjc1ZTkyNWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xl
czMvc2hhZGVycy9hcnJheXMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVz
LnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3Rlc3ROYW1lID0gJ2FycmF5cyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIg
KyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGlscy5zZXREZWZhdWx0M0RDb250ZXh0VmVy
c2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZh
cnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
dmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVV
UklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworbW9kdWxlcy5zaGFyZWQu
Z2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2FycmF5cy50ZXN0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2ds
ZXMzL3NoYWRlcnMvYXJyYXlzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYyNzY1MjJiNGYwNTdlYmI1OTIz
MmMzYjNmM2Y4M2U2ZmU3ODUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2FycmF5
cy50ZXN0CkBAIC0wLDAgKzEsMTk2MiBAQAorI1gxLiBUeXBlOiAJCQkJCWZsb2F0WzVdIAkJCQkJ
CQkJLy8gQW4gYXJyYXkgdHlwZSB3aXRoIDUgZWxlbWVudHMKKyNYMi4gUmV0dXJuIHZhbHVlOgkJ
CWZsb2F0WzVdIGZ1bmMoKSB7IC4uLiB9IAkJCQkvLyBGdW5jdGlvbiB3aXRoIGEgNS1lbGVtZW50
IGFycmF5IHJldHVybiB2YWx1ZQorI1gzLiBBcnJheSBjb25zdHJ1Y3RvcjoJCWZsb2F0WzNdICgx
LjAsIDIuMCwgNS41KQkJCQkvLyAzLWVsZW1lbnQgYXJyYXkgd2l0aCBnaXZlbiBlbGVtZW50cwor
IwkJCQkJCQkJCQkJCQkJCQkJLy8gRmFpbHMgd2l0aCBhcnJheSBvZiBtYXRyaWNlcyEKKyNYNC4g
QXMgdW5uYW1lZCBwYXJhbWV0ZXI6CXZvaWQgZnVuYyhmbG9hdFs1XSk7CisjWDUuIFZhcmlhYmxl
IGRlY2xhcmF0aW9uOglmbG9hdFs1XSBhOwkJCQkJCQkJLy8gRXF1aXZhbGVudCB0byBmbG9hdCBh
WzVdOyAoPykKKyNYNi4gRW1wdHkgYnJhY2tldHM6CQlmbG9hdCB4W10gPSBmbG9hdFtdICgxLjAs
IDIuMCwgMy4wKTsJLy8gU2l6ZSBvZiB4IGlzIDMKKyMJCQkJCQkJZmxvYXQgeVtdID0gZmxvYXRb
M10gKDEuMCwgMi4wLCAzLjApOwkvLyBTaXplIG9mIHkgaXMgMyAoZXF1aXZhbGVudCkKKyMJCQkJ
CQkJZmxvYXQgeltdID0geTsJCQkJCQkJLy8gU2l6ZSBvZiB6IGlzIDMKKyNYNy4gVGVzdGluZyB0
aGF0IDItZGltZW5zaW9uYWwgYXJyYXlzIGRvbid0IHdvcms6CWZsb2F0IGFbNV1bM107CS8vIEls
bGVnYWwKKyMJCQkJCQkJCQkJCQkJZmxvYXRbNV0gYVszXTsgCS8vIElsbGVnYWwKKyNYOC4gVGVz
dGluZyB0aGF0IGFycmF5IGRlY2xhcmF0aW9uIHdpdGggZHluYW1pYyB2YXJpYWJsZXMgYXMgYXJy
YXkgc2l6ZSB3b24ndCB3b3JrLgorI1g5LiBUZXN0aW5nIGxlbmd0aCgpIG9wZXJhdG9yOgl6Lmxl
bmd0aCgpOyAJCQkJCQkvLyBSZXR1cm5zIDMgZm9yIHogZGVmaW5lZCBiZWZvcmUKKyNYMTAuIFRl
c3QgQy9DKysgc3R5bGUge30tY29uc3RydWN0b3IKKyNYMTEuIFRlc3Qgc3RydWN0IGFycmF5cwor
I1gxMi4gVGVzdCBhcnJheSBlbGVtZW50IGFjY2VzcyBhdCBpbml0aWFsaXphdGlvbiB3aXRoIGNv
bnN0L2R5bmFtaWMgdmFsdWVzCisKK2dyb3VwIGNvbnN0cnVjdG9yICJBcnJheSBjb25zdHJ1Y3Rv
cnMiCisKKwljYXNlIGZsb2F0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2ZWMzKDcuNCwgLTEuMCwg
Mi4wKSB8IHZlYzMoMy4wLCAxLjYsIC0yLjApIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2
ZWMzKDIuMCwgMC41LCAxLjApIHwgdmVjMygyLjAsIDcuNCwgLTEuMCkgfCB2ZWMzKC0yLjAsIDMu
MCwgMS42KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXRbM10geDsKKwkJCQl4ID0gZmxvYXRbM10g
KGluMC56LCBpbjAueCwgaW4wLnkpOworCQkJCW91dDAgPSB2ZWMzKHhbMF0sIHhbMV0sIHhbMl0p
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdDQKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAu
NSwgMS4wLCAyLjAsIDAuMikgfCB2ZWM0KDcuNCwgLTEuMCwgMi4wLCAtMS4zKSB8IHZlYzQoMy4w
LCAxLjYsIC0yLjAsIDAuNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMi4wLCAw
LjUsIDAuMiwgMS4wKSB8IHZlYzQoMi4wLCA3LjQsIC0xLjMsIC0xLjApIHwgdmVjNCgtMi4wLCAz
LjAsIDAuNSwgMS42KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXRbNF0geDsKKwkJCQl4ID0gZmxv
YXRbNF0gKGluMC56LCBpbjAueCwgaW4wLncsIGluMC55KTsKKwkJCQlvdXQwID0gdmVjNCh4WzBd
LCB4WzFdLCB4WzJdLCB4WzNdKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgaW50MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzMgaW4wID0gWyBpdmVjMygwLCAxLCAyKSB8IGl2ZWMzKDcsIC0xLCAyKSB8IGl2ZWMzKDMsIDEs
IC0yKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDIsIDAsIDEpIHwgaXZlYzMo
MiwgNywgLTEpIHwgaXZlYzMoLTIsIDMsIDEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlpbnRbM10geDsKKwkJCQl4ID0gaW50WzNdIChpbjAueiwgaW4wLngs
IGluMC55KTsKKwkJCQlvdXQwID0gaXZlYzMoeFswXSwgeFsxXSwgeFsyXSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMSwgMiwgMCkgfCBp
dmVjNCg3LCAtMSwgMiwgLTEpIHwgaXZlYzQoMywgMSwgLTIsIDApIF07CisJCQlvdXRwdXQgaXZl
YzQgb3V0MCA9IFsgaXZlYzQoMiwgMCwgMCwgMSkgfCBpdmVjNCgyLCA3LCAtMSwgLTEpIHwgaXZl
YzQoLTIsIDMsIDAsIDEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlpbnRbNF0geDsKKwkJCQl4ID0gaW50WzRdIChpbjAueiwgaW4wLngsIGluMC53LCBpbjAu
eSk7CisJCQkJb3V0MCA9IGl2ZWM0KHhbMF0sIHhbMV0sIHhbMl0sIHhbM10pOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sMworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCB0cnVlLCBm
YWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCWJvb2xbM10geDsKKwkJCQl4ID0gYm9vbFszXSAoaW4wLnos
IGluMC54LCBpbjAueSk7CisJCQkJb3V0MCA9IGJ2ZWMzKHhbMF0sIHhbMV0sIHhbMl0pOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sNAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCB0
cnVlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFs
c2UsIHRydWUsIHRydWUsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYm9vbFs0XSB4OworCQkJ
CXggPSBib29sWzRdIChpbjAueiwgaW4wLngsIGluMC55LCBpbjAudyk7CisJCQkJb3V0MCA9IGJ2
ZWM0KHhbMF0sIHhbMV0sIHhbMl0sIHhbM10pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBzdHJ1Y3QzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjUsIDEuMCwgMi4wKSBdOworCQkJb3V0cHV0IHZl
YzMgb3V0MCA9IFsgdmVjMygyLjAsIC0wLjUsIC0xLjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisKKwkJ
CQlzdHJ1Y3QgdGVzdAorCQkJCXsKKwkJCQkJZmxvYXQgZjsKKwkJCQkJdmVjMyB2OworCQkJCX07
CisKKwkJCQl0ZXN0IGEgPSB0ZXN0KGluMC56LCB2ZWMzKGluMC54LCBpbjAueSwgaW4wLnopKTsK
KwkJCQl0ZXN0IGIgPSB0ZXN0KGluMC55LCB2ZWMzKC1pbjAueiwgLWluMC54LCAtaW4wLnkpKTsK
KwkJCQl0ZXN0IGMgPSB0ZXN0KGluMC54LCB2ZWMzKC1pbjAueSwgaW4wLnosIC1pbjAueCkpOwor
CisJCQkJdGVzdFszXSB4ID0gdGVzdFszXSAoYSwgYiwgYyk7CisKKwkJCQlvdXQwID0gdmVjMyh4
WzBdLmYsIHhbMV0udi55LCB4WzJdLnYueCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHN0cnVjdDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuNSwgMS4wLCAyLjAsIDEuNSkgXTsKKwkJCW91dHB1
dCB2ZWM0IG91dDAgPSBbIHZlYzQoMi4wLCAtMC41LCAtMS4wLCAtMS41KSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKworCisJCQkJc3RydWN0IHRlc3QKKwkJCQl7CisJCQkJCWZsb2F0IGY7CisJCQkJCXZlYzMg
djsKKwkJCQl9OworCisJCQkJdGVzdCBhID0gdGVzdChpbjAueiwgdmVjMyhpbjAueCwgaW4wLnks
IGluMC56KSk7CisJCQkJdGVzdCBiID0gdGVzdChpbjAueSwgdmVjMygtaW4wLnosIC1pbjAueCwg
LWluMC55KSk7CisJCQkJdGVzdCBjID0gdGVzdChpbjAueCwgdmVjMygtaW4wLnksIGluMC56LCAt
aW4wLngpKTsKKwkJCQl0ZXN0IGQgPSB0ZXN0KC1pbjAudywgdmVjMygtaW4wLncsIC1pbjAueCwg
LWluMC56KSk7CisKKwkJCQl0ZXN0WzRdIHggPSB0ZXN0WzRdIChhLCBiLCBjLCBkKTsKKworCQkJ
CW91dDAgPSB2ZWM0KHhbMF0uZiwgeFsxXS52LnksIHhbMl0udi54LCB4WzNdLnYueCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworCWNhc2UgZmxvYXRfdmVjMworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41
LCAxLjAsIDIuMCkgfCB2ZWMzKDcuNCwgLTEuMCwgMi4wKSB8IHZlYzMoMy4wLCAxLjYsIC0yLjAp
IF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuNSwgLTIuMCwgMS4wKSB8IHZlYzMo
Ny40LCAtMi4wLCAtMS4wKSB8IHZlYzMoMy4wLCAyLjAsIDEuNikgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCisJ
CQkJdmVjM1szXSB4OworCQkJCXggPSB2ZWMzWzNdICggCXZlYzMoaW4wLngsIGluMC55LCBpbjAu
eikJLAorCQkJCQkJCQl2ZWMzKC1pbjAueSwgLWluMC56LCAtaW4wLngpLAorCQkJCQkJCQl2ZWMz
KGluMC56LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJb3V0MCA9IHZlYzMoeFswXS54LCB4WzFdLnks
IHhbMl0ueik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF92
ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAg
PSBbIGl2ZWMzKDUsIDEsIDIpIHwgaXZlYzMoNywgLTEsIDIpIHwgaXZlYzMoMywgMSwgLTIpIF07
CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoNSwgLTIsIDEpIHwgaXZlYzMoNywgLTIs
IC0xKSB8IGl2ZWMzKDMsIDIsIDEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKworCQkJCWl2ZWMzWzNdIHg7CisJCQkJeCA9IGl2ZWMzWzNdICggCWl2ZWMzKGluMC54
LCBpbjAueSwgaW4wLnopCSwKKwkJCQkJCQkJaXZlYzMoLWluMC55LCAtaW4wLnosIC1pbjAueCks
CisJCQkJCQkJCWl2ZWMzKGluMC56LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJb3V0MCA9IGl2ZWMz
KHhbMF0ueCwgeFsxXS55LCB4WzJdLnopOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIF07CisJCQlvdXRw
dXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgZmFsc2UpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KworCQkJCWJ2ZWMzWzNdIHg7CisJCQkJeCA9IGJ2ZWMzWzNdICggCWJ2ZWMzKGluMC54LCBpbjAu
eSwgaW4wLnopCSwKKwkJCQkJCQkJYnZlYzMoaW4wLnksIGluMC56LCBpbjAueCksCisJCQkJCQkJ
CWJ2ZWMzKGluMC56LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJb3V0MCA9IGJ2ZWMzKHhbMF0ueCwg
eFsxXS55LCB4WzJdLnopOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBmbG9hdF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWMzIGluMCA9IFsgdmVjMygwLjUsIDEuMCwgMi4wKSB8IHZlYzMoLTEuNSwgMC4wLCAtMi4zKSBd
OworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjUsIC0xLjAsIDEuMCkgfCB2ZWMzKC0x
LjUsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJbWF0M1szXSBhID0gbWF0M1szXSAoCW1h
dDMoCWluMC54LCBpbjAueSwgaW4wLnosCisJCQkJCQkJCQkJCQlpbjAueCwgaW4wLnksIGluMC56
LAorCQkJCQkJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueikJLAorCQkJCQkJCQkJCW1hdDMoCWlu
MC56LCBpbjAueCwgLWluMC55LAorCQkJCQkJCQkJCQkJaW4wLnosIGluMC54LCAtaW4wLnksCisJ
CQkJCQkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSkJLAorCQkJCQkJCQkJCW1hdDMoCS1pbjAu
eiwgLWluMC56LCBpbjAueiwKKwkJCQkJCQkJCQkJCS1pbjAueSwgLWluMC55LCBpbjAueSwKKwkJ
CQkJCQkJCQkJCS1pbjAueCwgLWluMC54LCBpbjAueCkJKTsKKworCQkJCW1hdDMgYTAgPSBhWzBd
OworCQkJCW1hdDMgYTEgPSBhWzFdOworCQkJCW1hdDMgYTIgPSBhWzJdOworCisJCQkJZmxvYXQg
cmV0MCA9IGEwWzJdWzBdOworCQkJCWZsb2F0IHJldDEgPSBhMVswXVsyXTsKKwkJCQlmbG9hdCBy
ZXQyID0gYTJbMV1bMl07CisKKwkJCQlvdXQwID0gdmVjMyhyZXQwLCByZXQxLCByZXQyKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X21hdDMKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwg
MSwgMikgfCBpdmVjMygtMSwgMCwgLTIpIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZl
YzMoMCwgLTEsIDEpIHwgaXZlYzMoLTEsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQltYXQzWzNdIGEgPSBtYXQzWzNdICgJbWF0MygJaW4wLngsIGlu
MC55LCBpbjAueiwKKwkJCQkJCQkJCQkJCWluMC54LCBpbjAueSwgaW4wLnosCisJCQkJCQkJCQkJ
CQlpbjAueCwgaW4wLnksIGluMC56KQksCisJCQkJCQkJCQkJbWF0MygJaW4wLnosIGluMC54LCAt
aW4wLnksCisJCQkJCQkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSwKKwkJCQkJCQkJCQkJCWlu
MC56LCBpbjAueCwgLWluMC55KQksCisJCQkJCQkJCQkJbWF0MygJLWluMC56LCAtaW4wLnosIGlu
MC56LAorCQkJCQkJCQkJCQkJLWluMC55LCAtaW4wLnksIGluMC55LAorCQkJCQkJCQkJCQkJLWlu
MC54LCAtaW4wLngsIGluMC54KQkpOworCisJCQkJbWF0MyBhMCA9IGFbMF07CisJCQkJbWF0MyBh
MSA9IGFbMV07CisJCQkJbWF0MyBhMiA9IGFbMl07CisKKwkJCQlmbG9hdCByZXQwID0gYTBbMl1b
MF07CisJCQkJZmxvYXQgcmV0MSA9IGExWzBdWzJdOworCQkJCWZsb2F0IHJldDIgPSBhMlsxXVsy
XTsKKworCQkJCW91dDAgPSBpdmVjMyhyZXQwLCByZXQxLCByZXQyKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0
cnVlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW1hdDNbM10gYSA9IG1hdDNbM10gKAltYXQzKAlpbjAueCwg
aW4wLnksIGluMC56LAorCQkJCQkJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJ
CQkJCWluMC54LCBpbjAueSwgaW4wLnopCSwKKwkJCQkJCQkJCQltYXQzKAlpbjAueiwgaW4wLngs
IGluMC55LAorCQkJCQkJCQkJCQkJaW4wLnosIGluMC54LCBpbjAueSwKKwkJCQkJCQkJCQkJCWlu
MC56LCBpbjAueCwgaW4wLnkpCSwKKwkJCQkJCQkJCQltYXQzKAlpbjAueiwgaW4wLnosIGluMC56
LAorCQkJCQkJCQkJCQkJaW4wLnksIGluMC55LCBpbjAueSwKKwkJCQkJCQkJCQkJCWluMC54LCBp
bjAueCwgaW4wLngpCSk7CisKKwkJCQltYXQzIGEwID0gYVswXTsKKwkJCQltYXQzIGExID0gYVsx
XTsKKwkJCQltYXQzIGEyID0gYVsyXTsKKworCQkJCWZsb2F0IHJldDAgPSBhMFsyXVswXTsKKwkJ
CQlmbG9hdCByZXQxID0gYTFbMF1bMl07CisJCQkJZmxvYXQgcmV0MiA9IGEyWzFdWzJdOworCisJ
CQkJb3V0MCA9IGJ2ZWMzKHJldDAsIHJldDEsIHJldDIpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCitlbmQgIyB0eXBlCisKK2dyb3VwIHJldHVybiAiQXJyYXlzIGFzIHJldHVy
biB2YWx1ZSIKKworCWNhc2UgZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IHZlYzMgaW4wID0gCVsgdmVjMygwLjUsIDEuMCwgMi4wKSB8IHZlYzMoNy40LCAt
MS4wLCAyLjApIHwgdmVjMygzLjAsIDEuNiwgLTIuMCkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAg
PSBbIHZlYzMoMi4wLCAtMC41LCAxLjApIHwgdmVjMygyLjAsIC03LjQsIC0xLjApIHwgdmVjMygt
Mi4wLCAtMy4wLCAxLjYpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZs
b2F0WzNdIGZ1bmModmVjMyBhKQorCQkJeworCQkJCXJldHVybiBmbG9hdFszXSAoYS56LCAtYS54
LCBhLnkpOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXRbM10geCA9IGZ1bmMoaW4wKTsKKwkJCQlvdXQwID0gdmVjMyh4WzBdLCB4WzFdLCB4WzJd
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50CisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDQs
IDEsIDIpIHwgaXZlYzMoNywgLTEsIDIpIHwgaXZlYzMoMywgMSwgLTIpIF07CisJCQlvdXRwdXQg
aXZlYzMgb3V0MCA9CVsgaXZlYzMoMiwgLTQsIDEpIHwgaXZlYzMoMiwgLTcsIC0xKSB8IGl2ZWMz
KC0yLCAtMywgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJaW50WzNdIGZ1bmMoaXZlYzMgYSkKKwkJCXsKKwkJCQlyZXR1
cm4gaW50WzNdIChhLnosIC1hLngsIGEueSk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlpbnRbM10geCA9IGZ1bmMoaW4wKTsKKwkJCQlvdXQwID0gaXZl
YzMoeFswXSwgeFsxXSwgeFsyXSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGJvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWMzIGluMCA9IAlbIGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSBdOworCQkJb3V0cHV0IGJ2ZWMz
IG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQlib29sWzNdIGZ1bmMoYnZlYzMgYSkKKwkJCXsKKwkJCQlyZXR1cm4g
Ym9vbFszXSAoYS56LCBhLngsIGEueSk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlib29sWzNdIHggPSBmdW5jKGluMCk7CisJCQkJb3V0MCA9IGJ2ZWMz
KHhbMF0sIHhbMV0sIHhbMl0pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisK
KworCWNhc2UgZmxvYXRfdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMyBpbjAgPSAJWyB2ZWMzKDAuNSwgMS4wLCAyLjApIHwgdmVjMygtMC41LCAxMS4y
LCAtMS4wKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygxLjAsIDAuNSwgLTIuMCkg
fCB2ZWMzKDExLjIsIC0wLjUsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdmVjM1szXSBmdW5jKHZlYzNbM10gYSkKKwkJCXsKKwkJCQlyZXR1cm4gdmVjM1szXSAo
YVsxXSwgYVsyXSwgYVswXSk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQl2ZWMzWzNdIHggPSB2ZWMzWzNdKHZlYzMoaW4wLngsIGluMC55LCAtaW4wLnop
CSwKKwkJCQkJCQkJCXZlYzMoaW4wLnksIC1pbjAueiwgaW4wLngpCSwKKwkJCQkJCQkJCXZlYzMo
LWluMC56LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJeCA9IGZ1bmMoeCk7CisJCQkJb3V0MCA9IHZl
YzMoeFswXS54LCB4WzFdLnksIHhbMl0ueik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHN0cnVjdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMyBpbjAgPSAJWyB2ZWMzKDAuNSwgMS4wLCAyLjApIF07CisJCQlvdXRwdXQgdmVj
MyBvdXQwID0gWyB2ZWMzKC0xLjAsIDIuMCwgMC41KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQlzdHJ1Y3QgdGVzdAorCQkJeworCQkJCWZsb2F0IGY7CisJCQkJdmVjMyB2
OworCQkJfTsKKworCQkJdGVzdFszXSBmdW5jKHRlc3RbM10gYSkKKwkJCXsKKwkJCQlyZXR1cm4g
dGVzdFszXSAoYVsxXSwgYVsyXSwgYVswXSk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKworCQkJCXRlc3QgYSA9IHRlc3QoaW4wLnosIHZlYzMoaW4wLngsIGlu
MC55LCBpbjAueikpOworCQkJCXRlc3QgYiA9IHRlc3QoaW4wLnksIHZlYzMoLWluMC56LCAtaW4w
LngsIC1pbjAueSkpOworCQkJCXRlc3QgYyA9IHRlc3QoaW4wLngsIHZlYzMoLWluMC55LCBpbjAu
eiwgLWluMC54KSk7CisKKwkJCQl0ZXN0WzNdIHQgPSB0ZXN0WzNdIChhLCBiLCBjKTsKKwkJCQl0
ZXN0WzNdIHggPSBmdW5jKHQpOworCisJCQkJb3V0MCA9IHZlYzMoeFswXS52LnosIHhbMV0udi55
LCB4WzJdLnYueCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlu
dF92ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBp
bjAgPSAJWyBpdmVjMyg1LCAxLCAyKSB8IGl2ZWMzKC01LCAxMSwgLTEpIF07CisJCQlvdXRwdXQg
aXZlYzMgb3V0MCA9IFsgaXZlYzMoMSwgNSwgLTIpIHwgaXZlYzMoMTEsIC01LCAxKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlpdmVjM1szXSBmdW5jKGl2ZWMzWzNdIGEpCisJCQl7CisJCQkJcmV0dXJuIGl2ZWMzWzNdIChh
WzFdLCBhWzJdLCBhWzBdKTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWl2ZWMzWzNdIHggPSBpdmVjM1szXSgJaXZlYzMoaW4wLngsIGluMC55LCAtaW4w
LnopCSwKKwkJCQkJCQkJCQlpdmVjMyhpbjAueSwgLWluMC56LCBpbjAueCkJLAorCQkJCQkJCQkJ
CWl2ZWMzKC1pbjAueiwgaW4wLngsIGluMC55KQkpOworCQkJCXggPSBmdW5jKHgpOworCQkJCW91
dDAgPSBpdmVjMyh4WzBdLngsIHhbMV0ueSwgeFsyXS56KTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF92ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSAJWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQlidmVjM1szXSBmdW5jKGJ2ZWMzWzNdIGEpCisJCQl7CisJCQkJcmV0dXJuIGJ2ZWMz
WzNdIChhWzFdLCBhWzJdLCBhWzBdKTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWJ2ZWMzWzNdIHggPSBidmVjM1szXSgJYnZlYzMoaW4wLngsIGluMC55
LCBpbjAueikJLAorCQkJCQkJCQkJCWJ2ZWMzKGluMC55LCBpbjAueiwgaW4wLngpCSwKKwkJCQkJ
CQkJCQlidmVjMyhpbjAueiwgaW4wLngsIGluMC55KQkpOworCQkJCXggPSBmdW5jKHgpOworCQkJ
CW91dDAgPSBidmVjMyh4WzBdLngsIHhbMV0ueSwgeFsyXS56KTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2
ZWMzKC0xLjUsIDAuMCwgLTIuMykgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMi4w
LCAtMS4wLCAyLjApIHwgdmVjMygtMi4zLCAwLjAsIC0yLjMpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCW1hdDNbM10gZnVuYyhtYXQzWzNdIHgpCisJCQl7CisJCQkJbWF0
M1szXSByOworCQkJCXJbMF0gPSB4WzFdOworCQkJCXJbMV0gPSB4WzJdOworCQkJCXJbMl0gPSB4
WzBdOworCQkJCXJldHVybiByOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJbWF0M1szXSBhLCBiOworCQkJCWFbMF0gPSBtYXQzKGluMC54LCBpbjAueSwg
aW4wLnosCisJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQlpbjAueCwgaW4wLnks
IGluMC56KTsKKwkJCQlhWzFdID0gbWF0MyhpbjAueiwgaW4wLngsIC1pbjAueSwKKwkJCQkJCQlp
bjAueiwgaW4wLngsIC1pbjAueSwKKwkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSk7CisJCQkJ
YVsyXSA9IG1hdDMoLWluMC56LCAtaW4wLnosIGluMC56LAorCQkJCQkJCS1pbjAueSwgLWluMC55
LCBpbjAueSwKKwkJCQkJCQktaW4wLngsIC1pbjAueCwgaW4wLngpOworCisJCQkJYiA9IGZ1bmMo
YSk7CisKKwkJCQltYXQzIGIwID0gYlswXTsKKwkJCQltYXQzIGIxID0gYlsxXTsKKwkJCQltYXQz
IGIyID0gYlsyXTsKKworCQkJCWZsb2F0IHJldDAgPSBiMFswXVswXTsKKwkJCQlmbG9hdCByZXQx
ID0gYjFbMV1bMV07CisJCQkJZmxvYXQgcmV0MiA9IGIyWzJdWzJdOworCisJCQkJb3V0MCA9IHZl
YzMocmV0MCwgcmV0MSwgcmV0Mik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGludF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDUsIDEsIDIpIHwgaXZlYzMoLTEsIDAsIC0yKSBdOworCQkJ
b3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDIsIC0xLCAyKSB8IGl2ZWMzKC0yLCAwLCAtMikg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJbWF0M1szXSBmdW5jKG1hdDNbM10geCkKKwkJCXsKKwkJCQltYXQzWzNdIHI7CisJ
CQkJclswXSA9IHhbMV07CisJCQkJclsxXSA9IHhbMl07CisJCQkJclsyXSA9IHhbMF07CisJCQkJ
cmV0dXJuIHI7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQltYXQzWzNdIGEsIGI7CisJCQkJYVswXSA9IG1hdDMoaW4wLngsIGluMC55LCBpbjAueiwKKwkJ
CQkJCQlpbjAueCwgaW4wLnksIGluMC56LAorCQkJCQkJCWluMC54LCBpbjAueSwgaW4wLnopOwor
CQkJCWFbMV0gPSBtYXQzKGluMC56LCBpbjAueCwgLWluMC55LAorCQkJCQkJCWluMC56LCBpbjAu
eCwgLWluMC55LAorCQkJCQkJCWluMC56LCBpbjAueCwgLWluMC55KTsKKwkJCQlhWzJdID0gbWF0
MygtaW4wLnosIC1pbjAueiwgaW4wLnosCisJCQkJCQkJLWluMC55LCAtaW4wLnksIGluMC55LAor
CQkJCQkJCS1pbjAueCwgLWluMC54LCBpbjAueCk7CisKKwkJCQliID0gZnVuYyhhKTsKKworCQkJ
CW1hdDMgYjAgPSBiWzBdOworCQkJCW1hdDMgYjEgPSBiWzFdOworCQkJCW1hdDMgYjIgPSBiWzJd
OworCisJCQkJZmxvYXQgcmV0MCA9IGIwWzBdWzBdOworCQkJCWZsb2F0IHJldDEgPSBiMVsxXVsx
XTsKKwkJCQlmbG9hdCByZXQyID0gYjJbMl1bMl07CisKKwkJCQlvdXQwID0gaXZlYzMocmV0MCwg
cmV0MSwgcmV0Mik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJv
b2xfbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMg
aW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCBmYWxz
ZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCW1hdDNbM10gZnVuYyhtYXQzWzNdIHgpCisJCQl7CisJCQkJbWF0M1szXSByOwor
CQkJCXJbMF0gPSB4WzFdOworCQkJCXJbMV0gPSB4WzJdOworCQkJCXJbMl0gPSB4WzBdOworCQkJ
CXJldHVybiByOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJbWF0M1szXSBhLCBiOworCQkJCWFbMF0gPSBtYXQzKGluMC54LCBpbjAueSwgaW4wLnosCisJ
CQkJCQkJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQlpbjAueCwgaW4wLnksIGluMC56KTsK
KwkJCQlhWzFdID0gbWF0MyhpbjAueiwgaW4wLngsIGluMC55LAorCQkJCQkJCWluMC56LCBpbjAu
eCwgaW4wLnksCisJCQkJCQkJaW4wLnosIGluMC54LCBpbjAueSk7CisJCQkJYVsyXSA9IG1hdDMo
aW4wLnosIGluMC56LCBpbjAueiwKKwkJCQkJCQlpbjAueSwgaW4wLnksIGluMC55LAorCQkJCQkJ
CWluMC54LCBpbjAueCwgaW4wLngpOworCisJCQkJYiA9IGZ1bmMoYSk7CisKKwkJCQltYXQzIGIw
ID0gYlswXTsKKwkJCQltYXQzIGIxID0gYlsxXTsKKwkJCQltYXQzIGIyID0gYlsyXTsKKworCQkJ
CWZsb2F0IHJldDAgPSBiMFswXVswXTsKKwkJCQlmbG9hdCByZXQxID0gYjFbMV1bMV07CisJCQkJ
ZmxvYXQgcmV0MiA9IGIyWzJdWzJdOworCisJCQkJb3V0MCA9IGJ2ZWMzKHJldDAsIHJldDEsIHJl
dDIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyByZXR1cm4KKwor
Z3JvdXAgdW5uYW1lZF9wYXJhbWV0ZXIgIkFycmF5IHR5cGUgYXMgdW5uYW1lZCBwYXJhbWV0ZXIg
b2YgYSBmdW5jdGlvbiBwcm90b3R5cGUiCisKKwljYXNlIGZsb2F0CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IAlbIHZlYzMoMC41LCAxLjAsIDIu
MCkgfCB2ZWMzKDcuNCwgLTEuMCwgMi4wKSB8IHZlYzMoMy4wLCAxLjYsIC0yLjApIF07CisJCQlv
dXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDIuMCwgMC41LCAxLjApIHwgdmVjMygyLjAsIDcuNCwg
LTEuMCkgfCB2ZWMzKC0yLjAsIDMuMCwgMS42KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQlmbG9hdFszXSBmdW5jKGZsb2F0WzNdKTsKKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0WzNdIGEgPSBmbG9hdFszXSAoaW4wLngsIGluMC55
LCBpbjAueik7CisJCQkJZmxvYXRbM10gYiA9IGZ1bmMoYSk7CisJCQkJb3V0MCA9IHZlYzMoYlsw
XSwgYlsxXSwgYlsyXSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCWZsb2F0WzNdIGZ1bmMo
ZmxvYXRbM10gYSkKKwkJCXsKKwkJCQlyZXR1cm4gZmxvYXRbM10gKGFbMl0sIGFbMF0sIGFbMV0p
OworCQkJfQorCisJCSIiCisJZW5kCisKKwljYXNlIGludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gCVsgaXZlYzMoMCwgMSwgMikgfCBpdmVj
Myg3LCAtMSwgMikgfCBpdmVjMygzLCAxLCAtMikgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0g
WyBpdmVjMygyLCAwLCAxKSB8IGl2ZWMzKDIsIDcsIC0xKSB8IGl2ZWMzKC0yLCAzLCAxKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQlpbnRbM10gZnVuYyhpbnRbM10pOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJaW50WzNdIGEgPSBpbnRbM10gKGluMC54LCBpbjAueSwgaW4wLnopOworCQkJ
CWludFszXSBiID0gZnVuYyhhKTsKKwkJCQlvdXQwID0gaXZlYzMoYlswXSwgYlsxXSwgYlsyXSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCWludFszXSBmdW5jKGludFszXSBhKQorCQkJewor
CQkJCXJldHVybiBpbnRbM10gKGFbMl0sIGFbMF0sIGFbMV0pOworCQkJfQorCisJCSIiCisJZW5k
CisKKwljYXNlIGJvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWMzIGluMCA9IAlbIGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSBdOworCQkJb3V0cHV0IGJ2
ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlib29sWzNdIGZ1bmMoYm9vbFszXSk7CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29sWzNdIGEgPSBib29sWzNdIChpbjAueCwg
aW4wLnksIGluMC56KTsKKwkJCQlib29sWzNdIGIgPSBmdW5jKGEpOworCQkJCW91dDAgPSBidmVj
MyhiWzBdLCBiWzFdLCBiWzJdKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKworCQkJYm9vbFszXSBm
dW5jKGJvb2xbM10gYSkKKwkJCXsKKwkJCQlyZXR1cm4gYm9vbFszXSAoYVsyXSwgYVswXSwgYVsx
XSk7CisJCQl9CisKKwkJIiIKKwllbmQKKworCWNhc2Ugc3RydWN0CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IAlbIHZlYzMoMC41LCAxLjAsIDIu
MCkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoLTEuMCwgMi4wLCAwLjUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCB0ZXN0CisJCQl7CisJCQkJ
ZmxvYXQgZjsKKwkJCQl2ZWMzIHY7CisJCQl9OworCisJCQl0ZXN0WzNdIGZ1bmModGVzdFszXSk7
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKworCQkJCXRlc3QgYSA9IHRl
c3QoaW4wLnosIHZlYzMoaW4wLngsIGluMC55LCBpbjAueikpOworCQkJCXRlc3QgYiA9IHRlc3Qo
aW4wLnksIHZlYzMoLWluMC56LCAtaW4wLngsIC1pbjAueSkpOworCQkJCXRlc3QgYyA9IHRlc3Qo
aW4wLngsIHZlYzMoLWluMC55LCBpbjAueiwgLWluMC54KSk7CisKKwkJCQl0ZXN0WzNdIHQgPSB0
ZXN0WzNdIChhLCBiLCBjKTsKKwkJCQl0ZXN0WzNdIHggPSBmdW5jKHQpOworCQkJCW91dDAgPSB2
ZWMzKHhbMF0udi56LCB4WzFdLnYueSwgeFsyXS52LngpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CisJCQl0ZXN0WzNdIGZ1bmModGVzdFszXSBhKQorCQkJeworCQkJCXJldHVybiB0ZXN0WzNdIChh
WzFdLCBhWzJdLCBhWzBdKTsKKwkJCX0KKworCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF92ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IAlb
IHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2ZWMzKC0wLjUsIDExLjIsIC0xLjApIF07CisJCQlvdXRw
dXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMC41LCAtMi4wKSB8IHZlYzMoMTEuMiwgLTAuNSwg
MS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2ZWMzWzNdIGZ1bmMo
dmVjM1szXSk7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMz
WzNdIHggPSB2ZWMzWzNdKHZlYzMoaW4wLngsIGluMC55LCAtaW4wLnopCSwKKwkJCQkJCQkJCXZl
YzMoaW4wLnksIC1pbjAueiwgaW4wLngpCSwKKwkJCQkJCQkJCXZlYzMoLWluMC56LCBpbjAueCwg
aW4wLnkpCSk7CisJCQkJeCA9IGZ1bmMoeCk7CisJCQkJb3V0MCA9IHZlYzMoeFswXS54LCB4WzFd
LnksIHhbMl0ueik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCXZlYzNbM10gZnVuYyh2ZWMz
WzNdIGEpCisJCQl7CisJCQkJcmV0dXJuIHZlYzNbM10gKGFbMV0sIGFbMl0sIGFbMF0pOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gCVsgaXZlYzMoNSwgMSwgMikgfCBpdmVjMygt
NSwgMTEsIC0xKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDEsIDUsIC0yKSB8
IGl2ZWMzKDExLCAtNSwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaXZlYzNbM10gZnVuYyhpdmVjM1szXSk7CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpdmVjM1szXSB4ID0gaXZlYzNb
M10oCWl2ZWMzKGluMC54LCBpbjAueSwgLWluMC56KQksCisJCQkJCQkJCQkJaXZlYzMoaW4wLnks
IC1pbjAueiwgaW4wLngpCSwKKwkJCQkJCQkJCQlpdmVjMygtaW4wLnosIGluMC54LCBpbjAueSkJ
KTsKKwkJCQl4ID0gZnVuYyh4KTsKKwkJCQlvdXQwID0gaXZlYzMoeFswXS54LCB4WzFdLnksIHhb
Ml0ueik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCWl2ZWMzWzNdIGZ1bmMoaXZlYzNbM10g
YSkKKwkJCXsKKwkJCQlyZXR1cm4gaXZlYzNbM10gKGFbMV0sIGFbMl0sIGFbMF0pOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBib29sX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IAlbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkg
XTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWJ2ZWMzWzNdIGZ1bmMoYnZlYzNbM10pOworCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJYnZlYzNbM10geCA9IGJ2ZWMzWzNdKAlidmVjMyhpbjAueCwgaW4w
LnksIGluMC56KQksCisJCQkJCQkJCQkJYnZlYzMoaW4wLnksIGluMC56LCBpbjAueCkJLAorCQkJ
CQkJCQkJCWJ2ZWMzKGluMC56LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJeCA9IGZ1bmMoeCk7CisJ
CQkJb3V0MCA9IGJ2ZWMzKHhbMF0ueCwgeFsxXS55LCB4WzJdLnopOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCisJCQlidmVjM1szXSBmdW5jKGJ2ZWMzWzNdIGEpCisJCQl7CisJCQkJcmV0dXJuIGJ2
ZWMzWzNdIChhWzFdLCBhWzJdLCBhWzBdKTsKKwkJCX0KKworCQkiIgorCWVuZAorCisJY2FzZSBm
bG9hdF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMz
IGluMCA9IFsgdmVjMygwLjUsIDEuMCwgMi4wKSB8IHZlYzMoLTEuNSwgMC4wLCAtMi4zKSBdOwor
CQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygyLjAsIC0xLjAsIDIuMCkgfCB2ZWMzKC0yLjMs
IDAuMCwgLTIuMykgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJbWF0M1sz
XSBmdW5jKG1hdDNbM10pOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJbWF0M1szXSBhLCBiOworCQkJCWFbMF0gPSBtYXQzKGluMC54LCBpbjAueSwgaW4wLnosCisJ
CQkJCQkJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQlpbjAueCwgaW4wLnksIGluMC56KTsK
KwkJCQlhWzFdID0gbWF0MyhpbjAueiwgaW4wLngsIC1pbjAueSwKKwkJCQkJCQlpbjAueiwgaW4w
LngsIC1pbjAueSwKKwkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSk7CisJCQkJYVsyXSA9IG1h
dDMoLWluMC56LCAtaW4wLnosIGluMC56LAorCQkJCQkJCS1pbjAueSwgLWluMC55LCBpbjAueSwK
KwkJCQkJCQktaW4wLngsIC1pbjAueCwgaW4wLngpOworCisJCQkJYiA9IGZ1bmMoYSk7CisKKwkJ
CQltYXQzIGIwID0gYlswXTsKKwkJCQltYXQzIGIxID0gYlsxXTsKKwkJCQltYXQzIGIyID0gYlsy
XTsKKworCQkJCWZsb2F0IHJldDAgPSBiMFswXVswXTsKKwkJCQlmbG9hdCByZXQxID0gYjFbMV1b
MV07CisJCQkJZmxvYXQgcmV0MiA9IGIyWzJdWzJdOworCisJCQkJb3V0MCA9IHZlYzMocmV0MCwg
cmV0MSwgcmV0Mik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCW1hdDNbM10gZnVuYyhtYXQz
WzNdIHgpCisJCQl7CisJCQkJbWF0M1szXSByOworCQkJCXJbMF0gPSB4WzFdOworCQkJCXJbMV0g
PSB4WzJdOworCQkJCXJbMl0gPSB4WzBdOworCQkJCXJldHVybiByOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMyg1LCAxLCAyKSB8IGl2ZWMzKC0xLCAwLCAtMikgXTsK
KwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygyLCAtMSwgMikgfCBpdmVjMygtMiwgMCwg
LTIpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCW1hdDNbM10gZnVuYyhtYXQzWzNdKTsKKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW1hdDNbM10gYSwgYjsKKwkJCQlhWzBdID0gbWF0MyhpbjAu
eCwgaW4wLnksIGluMC56LAorCQkJCQkJCWluMC54LCBpbjAueSwgaW4wLnosCisJCQkJCQkJaW4w
LngsIGluMC55LCBpbjAueik7CisJCQkJYVsxXSA9IG1hdDMoaW4wLnosIGluMC54LCAtaW4wLnks
CisJCQkJCQkJaW4wLnosIGluMC54LCAtaW4wLnksCisJCQkJCQkJaW4wLnosIGluMC54LCAtaW4w
LnkpOworCQkJCWFbMl0gPSBtYXQzKC1pbjAueiwgLWluMC56LCBpbjAueiwKKwkJCQkJCQktaW4w
LnksIC1pbjAueSwgaW4wLnksCisJCQkJCQkJLWluMC54LCAtaW4wLngsIGluMC54KTsKKworCQkJ
CWIgPSBmdW5jKGEpOworCisJCQkJbWF0MyBiMCA9IGJbMF07CisJCQkJbWF0MyBiMSA9IGJbMV07
CisJCQkJbWF0MyBiMiA9IGJbMl07CisKKwkJCQlmbG9hdCByZXQwID0gYjBbMF1bMF07CisJCQkJ
ZmxvYXQgcmV0MSA9IGIxWzFdWzFdOworCQkJCWZsb2F0IHJldDIgPSBiMlsyXVsyXTsKKworCQkJ
CW91dDAgPSBpdmVjMyhyZXQwLCByZXQxLCByZXQyKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwor
CQkJbWF0M1szXSBmdW5jKG1hdDNbM10geCkKKwkJCXsKKwkJCQltYXQzWzNdIHI7CisJCQkJclsw
XSA9IHhbMV07CisJCQkJclsxXSA9IHhbMl07CisJCQkJclsyXSA9IHhbMF07CisJCQkJcmV0dXJu
IHI7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfbWF0MworCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBv
dXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFs
c2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCW1hdDNbM10gZnVuYyht
YXQzWzNdKTsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQltYXQzWzNd
IGEsIGI7CisJCQkJYVswXSA9IG1hdDMoaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQlpbjAu
eCwgaW4wLnksIGluMC56LAorCQkJCQkJCWluMC54LCBpbjAueSwgaW4wLnopOworCQkJCWFbMV0g
PSBtYXQzKGluMC56LCBpbjAueCwgaW4wLnksCisJCQkJCQkJaW4wLnosIGluMC54LCBpbjAueSwK
KwkJCQkJCQlpbjAueiwgaW4wLngsIGluMC55KTsKKwkJCQlhWzJdID0gbWF0MyhpbjAueiwgaW4w
LnosIGluMC56LAorCQkJCQkJCWluMC55LCBpbjAueSwgaW4wLnksCisJCQkJCQkJaW4wLngsIGlu
MC54LCBpbjAueCk7CisKKwkJCQliID0gZnVuYyhhKTsKKworCQkJCW1hdDMgYjAgPSBiWzBdOwor
CQkJCW1hdDMgYjEgPSBiWzFdOworCQkJCW1hdDMgYjIgPSBiWzJdOworCisJCQkJZmxvYXQgcmV0
MCA9IGIwWzBdWzBdOworCQkJCWZsb2F0IHJldDEgPSBiMVsxXVsxXTsKKwkJCQlmbG9hdCByZXQy
ID0gYjJbMl1bMl07CisKKwkJCQlvdXQwID0gYnZlYzMocmV0MCwgcmV0MSwgcmV0Mik7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisKKwkJCW1hdDNbM10gZnVuYyhtYXQzWzNdIHgpCisJCQl7CisJCQkJ
bWF0M1szXSByOworCQkJCXJbMF0gPSB4WzFdOworCQkJCXJbMV0gPSB4WzJdOworCQkJCXJbMl0g
PSB4WzBdOworCQkJCXJldHVybiByOworCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyB1bm5hbWVk
X3BhcmFtZXRlcgorCitncm91cCBkZWNsYXJhdGlvbiAiRGVjbGFyaW5nIGFycmF5cyIKKworCWNh
c2UgaW1wbGljaXRfc2l6ZV9mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2ZWMzKDcuNCwgLTEu
MCwgMi4wKSB8IHZlYzMoMy4wLCAxLjYsIC0yLjApIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0g
WyB2ZWMzKDIuMCwgMC41LCAxLjApIHwgdmVjMygyLjAsIDcuNCwgLTEuMCkgfCB2ZWMzKC0yLjAs
IDMuMCwgMS42KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXRbXSB4ID0gZmxvYXRbXSAoaW4wLnos
IGluMC54LCBpbjAueSk7CisJCQkJZmxvYXRbXSB5ID0geDsKKworCQkJCW91dDAgPSB2ZWMzKHlb
MF0sIHlbMV0sIHlbMl0pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbXBsaWNpdF9zaXplX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAxLCAyKSB8IGl2ZWMzKDcsIC0xLCAyKSB8IGl2
ZWMzKDMsIDEsIC0yKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDIsIDAsIDEp
IHwgaXZlYzMoMiwgNywgLTEpIHwgaXZlYzMoLTIsIDMsIDEpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnRbXSB4ID0gaW50W10gKGluMC56LCBpbjAueCwg
aW4wLnkpOworCQkJCWludFtdIHkgPSB4OworCisJCQkJb3V0MCA9IGl2ZWMzKHlbMF0sIHlbMV0s
IHlbMl0pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbXBsaWNp
dF9zaXplX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWMzIGluMCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIF07CisJCQlvdXRwdXQgYnZlYzMg
b3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29s
W10geCA9IGJvb2xbXSAoaW4wLnosIGluMC54LCBpbjAueSk7CisJCQkJYm9vbFtdIHkgPSB4Owor
CisJCQkJb3V0MCA9IGJ2ZWMzKHlbMF0sIHlbMV0sIHlbMl0pOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbXBsaWNpdF9zaXplX3N0cnVjdAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAs
IDIuMCkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoLTEuMCwgLTAuNSwgMi4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlzdHJ1Y3QgdGVzdAorCQkJewor
CQkJCWZsb2F0IGY7CisJCQkJdmVjMyB2OworCQkJfTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCisJCQkJdGVzdCBhID0gdGVzdChpbjAueiwgdmVjMyhpbjAueCwgaW4w
LnksIGluMC56KSk7CisJCQkJdGVzdCBiID0gdGVzdChpbjAueSwgdmVjMygtaW4wLnosIC1pbjAu
eCwgLWluMC55KSk7CisJCQkJdGVzdCBjID0gdGVzdChpbjAueCwgdmVjMygtaW4wLnksIGluMC56
LCAtaW4wLngpKTsKKworCQkJCXRlc3RbXSB4ID0gdGVzdFtdIChjLCBiLCBhKTsKKwkJCQl0ZXN0
W10geSA9IHg7CisKKwkJCQlvdXQwID0gdmVjMyh5WzBdLnYueCwgeVsxXS52LnksIHlbMl0udi56
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW1wbGljaXRfc2l6
ZV9mbG9hdF92ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWMzIGluMCA9IAlbIHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2ZWMzKC0wLjUsIDExLjIsIC0xLjAp
IF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuNSwgLTIuMCwgMS4wKSB8IHZlYzMo
LTAuNSwgMS4wLCAxMS4yKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJdmVjM1tdIHggPSB2ZWMzW10gKAl2
ZWMzKGluMC54LCBpbjAueSwgLWluMC56KQksCisJCQkJCQkJCQl2ZWMzKGluMC55LCAtaW4wLnos
IGluMC54KQksCisJCQkJCQkJCQl2ZWMzKC1pbjAueiwgaW4wLngsIGluMC55KQkpOworCQkJCXZl
YzNbXSB5ID0geDsKKwkJCQlvdXQwID0gdmVjMyh5WzBdLngsIHlbMV0ueSwgeVsyXS56KTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW1wbGljaXRfc2l6ZV9pbnRf
aXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGlu
MCA9IAlbIGl2ZWMzKDAsIDEsIDIpIHwgaXZlYzMoNSwgMTEsIC0xKSBdOworCQkJb3V0cHV0IGl2
ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIC0yLCAxKSB8IGl2ZWMzKDUsIDEsIDExKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaXZlYzNbXSB4ID0gaXZlYzNbXSAo
CWl2ZWMzKGluMC54LCBpbjAueSwgLWluMC56KQksCisJCQkJCQkJCQkJaXZlYzMoaW4wLnksIC1p
bjAueiwgaW4wLngpCSwKKwkJCQkJCQkJCQlpdmVjMygtaW4wLnosIGluMC54LCBpbjAueSkJKTsK
KwkJCQlpdmVjM1tdIHkgPSB4OworCQkJCW91dDAgPSBpdmVjMyh5WzBdLngsIHlbMV0ueSwgeVsy
XS56KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW1wbGljaXRf
c2l6ZV9ib29sX2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjMyBpbjAgPSAJWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgXTsKKwkJCW91dHB1dCBi
dmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCB0cnVlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWJ2ZWMzW10geCA9IGJ2ZWMzW10gKAlidmVjMyhpbjAueCwgaW4wLnksIGluMC56KQksCisJCQkJ
CQkJCQkJYnZlYzMoaW4wLnksIGluMC56LCBpbjAueCkJLAorCQkJCQkJCQkJCWJ2ZWMzKGluMC56
LCBpbjAueCwgaW4wLnkpCSk7CisJCQkJYnZlYzNbXSB5ID0geDsKKwkJCQlvdXQwID0gYnZlYzMo
eVswXS54LCB5WzFdLnksIHlbMl0ueik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGltcGxpY2l0X3NpemVfZmxvYXRfbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkgfCB2
ZWMzKC0xLjUsIDAuMCwgLTIuMykgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41
LCAtMS4wLCAxLjApIHwgdmVjMygtMS41LCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW1h
dDNbXSBhID0gbWF0M1tdICgJbWF0MygJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJCQkJ
aW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueikJLAor
CQkJCQkJCQkJbWF0MygJaW4wLnosIGluMC54LCAtaW4wLnksCisJCQkJCQkJCQkJCWluMC56LCBp
bjAueCwgLWluMC55LAorCQkJCQkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSkJLAorCQkJCQkJ
CQkJbWF0MygJLWluMC56LCAtaW4wLnosIGluMC56LAorCQkJCQkJCQkJCQktaW4wLnksIC1pbjAu
eSwgaW4wLnksCisJCQkJCQkJCQkJCS1pbjAueCwgLWluMC54LCBpbjAueCkJKTsKKworCQkJCW1h
dDMgYTAgPSBhWzBdOworCQkJCW1hdDMgYTEgPSBhWzFdOworCQkJCW1hdDMgYTIgPSBhWzJdOwor
CisJCQkJZmxvYXQgcmV0MCA9IGEwWzJdWzBdOworCQkJCWZsb2F0IHJldDEgPSBhMVswXVsyXTsK
KwkJCQlmbG9hdCByZXQyID0gYTJbMV1bMl07CisKKwkJCQlvdXQwID0gdmVjMyhyZXQwLCByZXQx
LCByZXQyKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW1wbGlj
aXRfc2l6ZV9pbnRfbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAxLCAyKSB8IGl2ZWMzKC0xLCAwLCAtMikgXTsKKwkJ
CW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAtMSwgMSkgfCBpdmVjMygtMSwgMCwgMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW1hdDNbXSBhID0g
bWF0M1tdICgJbWF0MygJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4wLngsIGlu
MC55LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueikJLAorCQkJCQkJCQkJ
bWF0MygJaW4wLnosIGluMC54LCAtaW4wLnksCisJCQkJCQkJCQkJCWluMC56LCBpbjAueCwgLWlu
MC55LAorCQkJCQkJCQkJCQlpbjAueiwgaW4wLngsIC1pbjAueSkJLAorCQkJCQkJCQkJbWF0MygJ
LWluMC56LCAtaW4wLnosIGluMC56LAorCQkJCQkJCQkJCQktaW4wLnksIC1pbjAueSwgaW4wLnks
CisJCQkJCQkJCQkJCS1pbjAueCwgLWluMC54LCBpbjAueCkJKTsKKworCQkJCW1hdDMgYTAgPSBh
WzBdOworCQkJCW1hdDMgYTEgPSBhWzFdOworCQkJCW1hdDMgYTIgPSBhWzJdOworCisJCQkJZmxv
YXQgcmV0MCA9IGEwWzJdWzBdOworCQkJCWZsb2F0IHJldDEgPSBhMVswXVsyXTsKKwkJCQlmbG9h
dCByZXQyID0gYTJbMV1bMl07CisKKwkJCQlvdXQwID0gaXZlYzMocmV0MCwgcmV0MSwgcmV0Mik7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGltcGxpY2l0X3NpemVf
Ym9vbF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVj
MyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91
dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW1hdDNb
XSBhID0gbWF0M1tdICgJbWF0MygJaW4wLngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4w
LngsIGluMC55LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4wLngsIGluMC55LCBpbjAueikJLAorCQkJ
CQkJCQkJbWF0MygJaW4wLnosIGluMC54LCBpbjAueSwKKwkJCQkJCQkJCQkJaW4wLnosIGluMC54
LCBpbjAueSwKKwkJCQkJCQkJCQkJaW4wLnosIGluMC54LCBpbjAueSkJLAorCQkJCQkJCQkJbWF0
MygJaW4wLnosIGluMC56LCBpbjAueiwKKwkJCQkJCQkJCQkJaW4wLnksIGluMC55LCBpbjAueSwK
KwkJCQkJCQkJCQkJaW4wLngsIGluMC54LCBpbjAueCkJKTsKKworCQkJCW1hdDMgYTAgPSBhWzBd
OworCQkJCW1hdDMgYTEgPSBhWzFdOworCQkJCW1hdDMgYTIgPSBhWzJdOworCisJCQkJZmxvYXQg
cmV0MCA9IGEwWzJdWzBdOworCQkJCWZsb2F0IHJldDEgPSBhMVswXVsyXTsKKwkJCQlmbG9hdCBy
ZXQyID0gYTJbMV1bMl07CisKKwkJCQlvdXQwID0gYnZlYzMocmV0MCwgcmV0MSwgcmV0Mik7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworCWNhc2UgY29uc3RhbnRfZXhwcmVz
c2lvbl9hcnJheV9zaXplCisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQljb25zdCBpbnQgYSA9IDQ7CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWNv
bnN0IGludCBiID0gNTsKKwkJCQlmbG9hdFthXSBhcnJheTE7CisJCQkJZmxvYXRbYl0gYXJyYXky
OworCQkJCWZsb2F0W2FycmF5MS5sZW5ndGgoKV0gYXJyYXkzOworCQkJCWZsb2F0W2ErYl0gYXJy
YXk0OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdGFudF9l
eHByZXNzaW9uX2FycmF5X2FjY2VzcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkgXTsKKwkJCW91dHB1dCB2
ZWMzIG91dDAgPSBbIHZlYzMoLTIuMCwgLTEuMCwgLTAuNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJY29uc3QgaW50IGEgPSAzOworCisJCQl2b2lkIG1haW4gKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCWNvbnN0IGludCBiID0gMjsKKwkJCQlmbG9hdCB4ID0gZmxv
YXRbXSAoaW4wLngsIGluMC55LCBpbjAueiwgLWluMC56LCAtaW4wLnksIC1pbjAueCkgW2FdOwor
CQkJCWZsb2F0IHkgPSBmbG9hdFtdIChpbjAueCwgaW4wLnksIGluMC56LCAtaW4wLnosIC1pbjAu
eSwgLWluMC54KSBbYisyXTsKKwkJCQlmbG9hdCB6ID0gZmxvYXRbXSAoaW4wLngsIGluMC55LCBp
bjAueiwgLWluMC56LCAtaW4wLnksIC1pbjAueCkgWzVdOworCQkJCW91dDAgPSB2ZWMzKHgsIHks
IHopOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkeW5hbWljX2V4
cHJlc3Npb25fYXJyYXlfYWNjZXNzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjUsIDEuMCwgMi4wKSBdOworCQkJaW5wdXQgaXZl
YzIgaW4xID0gaXZlYzIoMywgMik7CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKC0yLjAs
IC0xLjAsIC0wLjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbiAoKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgeCA9IGZsb2F0W10gKGluMC54
LCBpbjAueSwgaW4wLnosIC1pbjAueiwgLWluMC55LCAtaW4wLngpIFtpbjEueF07CisJCQkJZmxv
YXQgeSA9IGZsb2F0W10gKGluMC54LCBpbjAueSwgaW4wLnosIC1pbjAueiwgLWluMC55LCAtaW4w
LngpIFtpbjEueSsyXTsKKwkJCQlmbG9hdCB6ID0gZmxvYXRbXSAoaW4wLngsIGluMC55LCBpbjAu
eiwgLWluMC56LCAtaW4wLnksIC1pbjAueCkgW2luMS54K2luMS55XTsKKwkJCQlvdXQwID0gdmVj
Myh4LCB5LCB6KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbXVs
dGlwbGVfZGVjbGFyYXRpb25zX3NpbmdsZV9zdGF0ZW1lbnRfZXhwbGljaXQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuNSwgMS4w
LCAyLjApIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDIuMCwgLTEuMCwgMC41KSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0W10geCA9IGZsb2F0WzZdIChpbjAueCwgaW4wLnksIGlu
MC56LCAtaW4wLnosIC1pbjAueSwgLWluMC54KSwKKwkJCQkJCXkgPSBmbG9hdFsyXSAoaW4wLngs
IC1pbjAueSk7CisJCQkJb3V0MCA9IHZlYzMoeFsyXSwgeVsxXSwgeFswXSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG11bHRpcGxlX2RlY2xhcmF0aW9uc19zaW5n
bGVfc3RhdGVtZW50X2ltcGxpY2l0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDUsIDEsIDIpIF07CisJCQlvdXRwdXQgaXZlYzMg
b3V0MCA9IFsgaXZlYzMoMiwgLTEsIDUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50W10geCA9IGlu
dFtdIChpbjAueCwgaW4wLnksIGluMC56LCAtaW4wLnosIC1pbjAueSwgLWluMC54KSwKKwkJCQkJ
ICB5ID0gaW50W10gKGluMC54LCAtaW4wLnkpOworCQkJCW91dDAgPSBpdmVjMyh4WzJdLCB5WzFd
LCB4WzBdKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgZGVjbGFy
YXRpb24KKworZ3JvdXAgbGVuZ3RoICJBcnJheSBsZW5ndGggbWV0aG9kIgorCisJY2FzZSBmbG9h
dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBb
IHZlYzMoMC41LCAxLjAsIDIuMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygz
LCA1LCAxMykgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0W10geCA9IGZsb2F0WzNdIChpbjAueiwg
aW4wLngsIGluMC55KTsKKwkJCQlmbG9hdFtdIHkgPSBmbG9hdFtdIChpbjAueiwgaW4wLngsIGlu
MC55LCBpbjAueCwgaW4wLnkpOworCQkJCWZsb2F0WzEzXSB6OworCisJCQkJb3V0MCA9IGl2ZWMz
KHgubGVuZ3RoKCksIHkubGVuZ3RoKCksIHoubGVuZ3RoKCkpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMSwgMikgXTsKKwkJCW91dHB1dCBp
dmVjMyBvdXQwID0gWyBpdmVjMygzLCA1LCAxMykgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWludFtdIHggPSBpbnRbM10gKGluMC56LCBpbjAueCwgaW4wLnkp
OworCQkJCWludFtdIHkgPSBpbnRbXSAoaW4wLnosIGluMC54LCBpbjAueSwgaW4wLngsIGluMC55
KTsKKwkJCQlpbnRbMTNdIHo7CisKKwkJCQlvdXQwID0gaXZlYzMoeC5sZW5ndGgoKSwgeS5sZW5n
dGgoKSwgei5sZW5ndGgoKSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGJvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMz
IGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0
MCA9IFsgaXZlYzMoMywgNSwgMTMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29sW10geCA9IGJvb2xb
M10gKGluMC56LCBpbjAueCwgaW4wLnkpOworCQkJCWJvb2xbXSB5ID0gYm9vbFtdIChpbjAueiwg
aW4wLngsIGluMC55LCBpbjAueCwgaW4wLnkpOworCQkJCWJvb2xbMTNdIHo7CisKKwkJCQlvdXQw
ID0gaXZlYzMoeC5sZW5ndGgoKSwgeS5sZW5ndGgoKSwgei5sZW5ndGgoKSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHN0cnVjdAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC41LCAxLjAsIDIuMCkg
XTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygzLCA1LCAxMykgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJc3RydWN0IHRlc3QKKwkJCXsKKwkJCQlmbG9hdCBm
OworCQkJCXZlYzMgdjsKKwkJCX07CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKworCQkJCXRlc3QgYSA9IHRlc3QoaW4wLnosIHZlYzMoaW4wLngsIGluMC55LCBpbjAueikp
OworCQkJCXRlc3QgYiA9IHRlc3QoaW4wLnksIHZlYzMoLWluMC56LCAtaW4wLngsIC1pbjAueSkp
OworCQkJCXRlc3QgYyA9IHRlc3QoaW4wLngsIHZlYzMoLWluMC55LCBpbjAueiwgLWluMC54KSk7
CisKKwkJCQl0ZXN0W10geCA9IHRlc3RbM10gKGEsIGIsIGMpOworCQkJCXRlc3RbXSB5ID0gdGVz
dFtdIChjLCBhLCBiLCBiLCBhKTsKKwkJCQl0ZXN0WzEzXSB6OworCisJCQkJb3V0MCA9IGl2ZWMz
KHgubGVuZ3RoKCksIHkubGVuZ3RoKCksIHoubGVuZ3RoKCkpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCitlbmQgIyBsZW5ndGgKKworZ3JvdXAgaW52YWxpZCAiSW52YWxpZCBG
dW5jdGlvbnMiCisKKwljYXNlIG11bHRpZGltZW5zaW9uYWxfYXJyYXkxCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZsb2F0IGFbNV1bM107CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbXVsdGlk
aW1lbnNpb25hbF9hcnJheTIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJ
ZmxvYXRbNV0gYVszXTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtdWx0aWRpbWVuc2lvbmFsX3VuaWZvcm1fYXJyYXkK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXVuaWZvcm0gZmxvYXQgYVszXVsyXTsKKworCQkJdm9pZCBtYWluICgpCisJ
CQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbXVsdGlkaW1lbnNpb25hbF9hcnJheV9pbl91bmlmb3JtX2Jsb2NrCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl1bmlmb3JtIE15QmxvY2sKKwkJCXsKKwkJCQlmbG9hdCBhWzNdWzJdOworCQkJ
fTsKKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZHluYW1pY19leHByZXNzaW9u
X2FycmF5X3NpemUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJaW50IGEg
PSA1OworCQkJCWZsb2F0W2FdIGFycmF5OworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVtcHR5X2RlY2xhcmF0aW9uX3dp
dGhvdXRfdmFyX25hbWUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfb3JfbGlu
a19mYWlsCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsK
KwkJCQlpbnRbXTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9kZWNsYXJhdGlvbl93aXRoX3Zhcl9uYW1lCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX29yX2xpbmtfZmFpbAorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJaW50W10gYTsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBjb25zdHJ1Y3Rvcl9jLXN0eWxlMQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4gKCkK
KwkJCXsKKwkJCQlmbG9hdCBhW107CisJCQkJYSA9IGZsb2F0WzNdIHsgMS4wLCAyLjAsIDMuMCB9
OworCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgY29uc3RydWN0b3JfYy1zdHlsZTIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluICgpCisJCQl7CisJCQkJZmxvYXQgYVs1XSA9IHsgMS4wLCAyLjAsIDMuMCB9OworCisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
ZW5kICMgaW52YWxpZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29uZGl0aW9uYWxzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEv
Z2xlczMvc2hhZGVycy9jb25kaXRpb25hbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzg2ZTE0MjI0ZDk2
NzUxZDA0M2MyN2VkOGZiNmQzNzgzZDExYjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRl
cnMvY29uZGl0aW9uYWxzLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnbW9kdWxlcy5z
aGFyZWQuZ2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit0ZXN0TmFtZSA9ICdjb25kaXRpb25hbHMnOworZGVzY3JpcHRpb24oIlNoYWRlciB0ZXN0
OiAiICsgdGVzdE5hbWUgKyAiLiIpOworV2ViR0xUZXN0VXRpbHMuc2V0RGVmYXVsdDNEQ29udGV4
dFZlcnNpb24oMik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVl
cnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVj
b2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1
cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKK21vZHVsZXMuc2hh
cmVkLmdsc1NoYWRlckxpYnJhcnkucnVuKHRlc3ROYW1lLCBnZXRGaWx0ZXIoKSkKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb25kaXRpb25h
bHMudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZGF0YS9nbGVzMy9zaGFkZXJzL2NvbmRpdGlvbmFscy50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYTVi
NDc2ZmNmM2E4YWRkZmJlZTQzODBiZWQyZGVkMGU4Nzc4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xl
czMvc2hhZGVycy9jb25kaXRpb25hbHMudGVzdApAQCAtMCwwICsxLDM4MSBAQAorZ3JvdXAgaWYg
IklmIFN0YXRlbWVudHMiCisKKwljYXNlIHNpbmdsZV9zdGF0ZW1lbnQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4w
IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMS4wIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSAw
LjA7CisJCQkJaWYgKGluMCA+PSAxLjApCisJCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNvbXBvdW5kX3N0YXRlbWVudAorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAg
fCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAxLjAgXTsKKwkJ
CW91dHB1dCBmbG9hdCBvdXQxID0gWyAxLjAgfCAwLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDAuMDsKKwkJ
CQlvdXQxID0gMS4wOworCQkJCWlmIChpbjAgPj0gMS4wKQorCQkJCXsKKwkJCQkJb3V0MCA9IDEu
MDsKKwkJCQkJb3V0MSA9IDAuMDsKKwkJCQl9CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHNlcXVlbmNlX3N0YXRlbWVudHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIF07CisJCQlv
dXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMS4wIF07CisJCQlvdXRwdXQgZmxvYXQg
b3V0MSA9IFsgMS4wIHwgMC4wIHwgMC4wIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSAwLjA7CisJCQkJb3V0MSA9IDEuMDsK
KwkJCQlpZiAoaW4wID49IDEuMCkKKwkJCQkJb3V0MCA9IDEuMCwgb3V0MSA9IDAuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugc2VxdWVuY2VfY29uZGl0aW9uCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAu
MCB8IDEuMCB8IDIuMCBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IDEu
MCBdOworCQkJb3V0cHV0IGZsb2F0IG91dDEgPSBbIDEuMCB8IDAuMCB8IDAuMCBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0g
MC4wOworCQkJCW91dDEgPSAxLjA7CisJCQkJaWYgKGZhbHNlLCBpbjAgPj0gMS4wKQorCQkJCQlv
dXQwID0gMS4wLCBvdXQxID0gMC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBjb21wbGV4X2NvbmRpdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBm
bG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAxLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQxID0g
WyAxLjAgfCAwLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDAuMDsKKwkJCQlvdXQxID0gMS4wOworCQkJCWlm
IChmYWxzZSB8fCAoaW4wID49IDEuMCkgJiYgKGluMCAtIDIuMCppbjAgPCAwLjApKQorCQkJCQlv
dXQwID0gMS4wLCBvdXQxID0gMC4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpZl9lbHNlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAg
PSBbIDAuMCB8IDEuMCB8IDEuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoaW4wID49IDEuMCkKKwkJCQkJb3V0MCA9IDEuMDsK
KwkJCQllbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGlmX2Vsc2VpZgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9h
dCBvdXQwID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDAuMDsKKwkJCQlpZiAoaW4wID49
IDIuMCkKKwkJCQkJb3V0MCA9IDIuMDsKKwkJCQllbHNlIGlmIChpbjAgPj0gMS4wKQorCQkJCQlv
dXQwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpZl9l
bHNlaWZfZWxzZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxv
YXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAw
LjAgfCAxLjAgfCAyLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJaWYgKGluMCA+PSAyLjApCisJCQkJCW91dDAgPSAyLjA7CisJCQkJ
ZWxzZSBpZiAoaW4wID49IDEuMCkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQllbHNlCisJCQkJCW91
dDAgPSAwLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1peGVk
X2lmX2Vsc2VpZl9lbHNlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAg
PSBbIDAuMCB8IDEuMCB8IDIuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoaW4wID49IDIuMCkKKwkJCQl7CisJCQkJCW91dDAg
PSAyLjA7CisJCQkJfQorCQkJCWVsc2UgaWYgKGluMCA+PSAxLjApCisJCQkJCW91dDAgPSAyLjAs
IG91dDAgPSAxLjA7CisJCQkJZWxzZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBpZgorCitncm91cCBpbnZhbGlkX2lmICJJbnZhbGlk
IElmIENvbmRpdGlvbmFscyIKKworCWNhc2UgbWlzc2luZ19wYXJlbnRoZXNpcworCQl2ZXJzaW9u
IDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYgdHJ1ZQorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmNsb3NlZF9wYXJl
bnRoZXNpcworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYgKHRydWUKKwkJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgaW50X2NvbmRpdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYg
KDUpCisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGludF96ZXJvX2NvbmRpdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJaWYgKDApCisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEu
MCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9vbmVfY29uZGl0aW9uCisJCXZlcnNp
b24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoMSkKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3VuaWZvcm1f
Y29uZGl0aW9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJdW5pZm9ybSBpbnQgdTA7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaWYgKHUwKQorCQkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBm
bG9hdF9jb25kaXRpb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWlmICg1LjAp
CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGZsb2F0X3plcm9fY29uZGl0aW9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlpZiAoMC4wKQorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgx
LjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9vbmVfY29uZGl0aW9uCisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlpZiAoMS4wKQorCQkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBzYW1wbGVy
X2NvbmRpdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQl1bmlmb3JtIHNhbXBsZXIyRCBzMDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQlpZiAoczApCisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWRfaWYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMy9zaGFkZXJzL2NvbnN0YW50X2V4cHJlc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb25z
dGFudF9leHByZXNzaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NGNhNjc4ZjljYTQxZTNhNDZlZDlh
ZmNlODcyMTk4ZTk5MzEwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb25zdGFu
dF9leHByZXNzaW9ucy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hh
cmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordGVzdE5hbWUgPSAnY29uc3RhbnRfZXhwcmVzc2lvbnMnOworZGVzY3JpcHRpb24oIlNoYWRl
ciB0ZXN0OiAiICsgdGVzdE5hbWUgKyAiLiIpOworV2ViR0xUZXN0VXRpbHMuc2V0RGVmYXVsdDNE
Q29udGV4dFZlcnNpb24oMik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQo
JyYnKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBp
ZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAg
ICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKK21vZHVs
ZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnkucnVuKHRlc3ROYW1lLCBnZXRGaWx0ZXIoKSkKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb25z
dGFudF9leHByZXNzaW9ucy50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29uc3RhbnRfZXhwcmVzc2lvbnMu
dGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41OWM2Y2I2ZmZiOTlhZWVjYTZiOWZjYzBlOGQ1NzMyZWY3NTlmYTRj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29uc3RhbnRfZXhwcmVzc2lvbnMudGVz
dApAQCAtMCwwICsxLDQ4MyBAQAorZ3JvdXAgdHJpdmlhbCAiVHJpdmlhbCBleHByZXNzaW9ucyIK
KworCWNhc2UgZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0
IG91dDAgPSA1LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQljb25zdCBmbG9hdCBhID0gNS4wOworCQkJCW91dDAgPSBhOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzIHsgb3V0cHV0IGludCBvdXQwID0gNTsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGludCBhID0gNTsKKwkJCQlvdXQwID0gYTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgYm9vbCBvdXQwID0gdHJ1ZTsgfQorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGJvb2wgYSA9IHRydWU7
CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGNhc3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAx
LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlj
b25zdCBmbG9hdCBhID0gZmxvYXQoaW50KGJvb2wodHJ1ZSkpKTsKKwkJCQlvdXQwID0gYTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgdHJpdmlhbAorCitncm91cCBv
cGVyYXRvcnMgIk9wZXJhdG9ycyIKKworCWNhc2UgbWF0aF9mbG9hdAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIuMTk7IH0KKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25zdCBmbG9hdCBhID0gNi4wLzMu
NSArIDEuOCoyLjYgLSA0LjI7CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1hdGhfdmVjCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMTUuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IHZlYzMgYSA9ICh2ZWM0KDEuMCwgMi4wLCAzLjAs
IDQuMCkuenl4ICogdmVjMygxLjAsIDEuNSwgMy4wKS54eXopLnh6eSArICh2ZWMyKDUuMCkvdmVj
MigyLjUpKS54eHk7CisJCQkJb3V0MCA9IGEueCArIGEueSArIGEuejsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0aF9pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGludCBvdXQwID0gNzsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBoaWdocCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25zdCBpbnQgYSA9IDI1JTcgKyAyKjMgLSA5LzM7CisJ
CQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1h
dGhfaXZlYworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAy
MTsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBoaWdocCBp
bnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25z
dCBpdmVjMyBhID0gaXZlYzIoMjUlNywgNCkueHh5ICsgaXZlYzQoMSozLCA5LzMsIDErMiwgOC80
KS54eXo7CisJCQkJb3V0MCA9IGEueCArIGEueSArIGEuejsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWF0aF9tYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSA4LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25zdCBtYXQzIGEgPSBtYXQzKDMuMCkgKiBtYXQzKDQu
MCk7CisJCQkJY29uc3QgbWF0NCBiID0gbWF0NChhWzFdWzFdKSoyLjA7CisJCQkJY29uc3QgbWF0
MiBjID0gbWF0MihiWzBdWzBdKSAvIDMuMDsKKwkJCQlvdXQwID0gY1swXVswXStjWzFdWzBdOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiaXR3aXNlCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBpbnQgb3V0MCA9IDY3ODMzMjsgfQorCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBoaWdocCBpbnQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25zdCBpbnQgYSA9ICgo
KDB4QUJCQTw8NCkgXiAweENBRkUpIHwgKDB4RENCQSAmICgweEFCQ0Q+PjIpKSkgXiAofjB4REVB
RCAmIDB4QkVFRik7CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGxvZ2ljYWwKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0
IGJvb2wgb3V0MCA9IHRydWU7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gaGlnaHAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJY29uc3QgYm9vbCBhID0gKCFmYWxzZSB8fCBmYWxzZSkgJiYgKHRydWUgXl4g
ZmFsc2UpOworCQkJCW91dDAgPSBhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBjb21wYXJlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBib29s
IG91dDAgPSB0cnVlOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIGhpZ2hwIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCWNvbnN0IGJvb2wgYSA9IChmYWxzZSA9PSBmYWxzZSkgJiYgKHRydWUgIT0gZmFsc2Up
ICYmICgxIDwgMikgJiYgKDMgPD0gMykgJiYgKCgxID4gMSkgIT0gKDEgPj0gMSkpOworCQkJCW91
dDAgPSBhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBzZWxlY3Rp
b24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA1LjM7
IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQljb25z
dCBmbG9hdCBhID0gZmFsc2UgPyAwLjAgOiAodHJ1ZSA/IDUuMyA6IDEuMCk7CisJCQkJb3V0MCA9
IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIG9wZXJhdG9ycwor
Citncm91cCBjb21wbGV4X3R5cGVzICJBcnJheXMgJiBTdHJ1Y3RzIgorCisJY2FzZSBzdHJ1Y3QK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyNjAuOTIy
OyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBTCisJCQl7CisJCQkJdmVjNCBh
OworCQkJCWludCAgYjsKKwkJCX07CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3Qg
UyBzID0gUyh2ZWM0KDEuNSksIDEyMyk7CisJCQkJb3V0MCA9IGxlbmd0aChzLmEueHkpKmZsb2F0
KHMuYik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF9z
dHJ1Y3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA5
NjUuOTsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBoaWdo
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlzdHJ1Y3QgUworCQkJeworCQkJCXZl
YzQgdjsKKwkJCQlpbnQgIGk7CisJCQl9OworCisJCQlzdHJ1Y3QgVAorCQkJeworCQkJCVMgczsK
KwkJCQlib29sIGI7CisJCQkJaW50IGk7CisJCQl9OworCisJCQlzdHJ1Y3QgVQorCQkJeworCQkJ
CVMgczsKKwkJCQlUIHQ7CisJCQl9OworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0
IFMgcyA9IFModmVjNCgxLjUpLCAxMjMpOworCQkJCWNvbnN0IFQgdCA9IFQocywgZmFsc2UsIDMp
OworCQkJCWNvbnN0IFUgdSA9IFUocywgdCk7CisJCQkJY29uc3QgVSB2ID0gVShTKHZlYzQoMS4z
KSwgNCksIFQoUyh2ZWM0KDIuMCksIDUpLCB0cnVlLCA2KSk7CisJCQkJb3V0MCA9IGZsb2F0KHUu
cy5pKnYudC5pICsgdi50LnMuaSkqdi5zLnYueDsgLy8gZmxvYXQoMTIzKjYgKyA1KSoxLjMKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJyYXlfc2l6ZQorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAxOyB9CisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgaW50IGFbbWF4KC0x
LCAxKV0gPSBpbnRbMV0oMSk7CisJCQkJb3V0MCA9IGFbMF07CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGFycmF5X2xlbmd0aAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAyOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgaW50IGFbMV0gPSBpbnRbMV0oMSk7CisJCQkJ
b3V0MCA9IGEubGVuZ3RoKCkgKyBhWzBdOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBhcnJheQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDQuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCWNvbnN0IGZsb2F0IGFbMSsyKzVdID0gZmxvYXRbOF0oMC41LCAxLjAsIDEuNSwg
Mi4wLCAyLjUsIDMuMCwgMy41LCA0LjApOworCQkJCWNvbnN0IGZsb2F0IGYgPSBhWzErMis0XTsK
KwkJCQlvdXQwID0gZiArIGZsb2F0KGEubGVuZ3RoKCktOCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIGNvbXBsZXhfdHlwZXMKKworZ3JvdXAgb3RoZXIgIk90aGVy
IG9wZXJhdGlvbnMiCisKKwljYXNlIHN3aXRjaF9jYXNlCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuMCB8
IDQuMCB8IDUuMCBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDIgfCAzIHwgNCB8
IDEwXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJY29uc3QgaW50IF8wID0gMDsKKwkJCQljb25zdCBpbnQgXzEgPSAxOworCQkJCWNvbnN0
IGludCBfMiA9IDI7CisJCQkJY29uc3QgaW50IF8zID0gMzsKKwkJCQljb25zdCBpbnQgXzQgPSA0
OworCisJCQkJc3dpdGNoKGludChpbjApKQorCQkJCXsKKwkJCQkJY2FzZSBfMDoKKwkJCQkJCW91
dDAgPSAwOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgXzE6CisJCQkJCQlvdXQwID0gMTsKKwkJ
CQkJCWJyZWFrOworCQkJCQljYXNlIF8yOgorCQkJCQkJb3V0MCA9IDI7CisJCQkJCQlicmVhazsK
KwkJCQkJY2FzZSBfMzoKKwkJCQkJCW91dDAgPSAzOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2Ug
XzQ6CisJCQkJCQlvdXQwID0gNDsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIDU6CisJCQkJCQlv
dXQwID0gMTA7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCW91dDAgPSAxMDA7
CisKKwkJCQl9CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3Rl
ZF9idWlsdGluX2Z1bmNzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMy4wNTsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCWNvbnN0IGZsb2F0IGEgPSBzcXJ0KCBhdGFuKHNpbigxLjUpL2NvcygxLjUpKSAv
KjEuNSovICogbG9nMihleHAyKGxvZyhleHAoNi4yKSArIDAuMSkpICsgMC4xKSAvKn42LjIqLyk7
CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGNvbXBsZXgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0
IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy4wIHwgNC4wIHwgNS4wIF07CisJCQlvdXRwdXQg
aW50IG91dDAgPSBbIDAgfCAxIHwgMiB8IDMgfCA0IHwgMTBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJc3RydWN0IFQKKwkJCXsKKwkJCQl2ZWM0IHY7CisJCQl9OworCisJCQlz
dHJ1Y3QgUworCQkJeworCQkJCVQgdDsKKwkJCQlpbnQgaTsKKwkJCQlib29sIGI7CisJCQl9Owor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IFQgICB0ICA9IFQodmVjNCgxLjApKTsK
KwkJCQljb25zdCBTICAgcyAgPSBTKHQsIDQyLCB0cnVlKTsKKwkJCQljb25zdCBpbnQgXzAgPSBp
bnQoc2luKDAuMCkpOworCQkJCWNvbnN0IGludCBfMSA9IGludCgxLjApOworCQkJCWNvbnN0IGlu
dCBfMiA9IDIgKyBpbnQoZmxvYXQoXzA+XzEpKTsKKwkJCQljb25zdCBpbnQgXzMgPSBtaW4oZ2xf
TWF4VmVydGV4QXR0cmlicywgMTYpLzQgLSAxOworCQkJCWNvbnN0IGludCBfNCA9IG1pbihnbF9N
YXhEcmF3QnVmZmVycywgNCk7CisJCQkJY29uc3QgaXZlYzQgbnVtcyA9IGl2ZWM0KDAsIDEsIDIs
IDMpOworCisJCQkJc3dpdGNoKGludChpbjApKQorCQkJCXsKKwkJCQkJY2FzZSBpbnQoZmxvYXQo
XzApKToKKwkJCQkJCW91dDAgPSAoKHRydWUhPWZhbHNlKSAmJiAoIWZhbHNlKSkgPyAwIDogMjU7
CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBpdmVjMyhfMSkueDoKKwkJCQkJCW91dDAgPSAzKjE4
LzktNTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIG51bXNbXzJdOgorCQkJCQkJb3V0MCA9IGlu
dChsZW5ndGgodmVjNCgxLjApKSswLjAwMSk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBfMzoK
KwkJCQkJCW91dDAgPSAzOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgY2xhbXAoXzQsIDEsIDYp
OgorCQkJCQkJb3V0MCA9IChzLmktMikvMTA7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBtYXgo
MywgNSk6CisJCQkJCQlvdXQwID0gMTA7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJ
CQkJCW91dDAgPSAxMDA7CisKKwkJCQl9CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CitlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2NvbnN0YW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRl
cnMvY29uc3RhbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkxYWY0NmU1YTkwNTE0MzM3NjM5NGUyODA4
NDJhY2RhMGIwODY5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2NvbnN0YW50cy5o
dG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxp
YnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAn
Y29uc3RhbnRzJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4i
KTsKK1dlYkdMVGVzdFV0aWxzLnNldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKDIpOworCit2YXIg
Z2V0RmlsdGVyID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHF1ZXJ5VmFycyA9IHdpbmRvdy5sb2Nh
dGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KCcmJyk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHF1ZXJ5VmFycy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdmFsdWUgPSBxdWVy
eVZhcnNbaV0uc3BsaXQoJz0nKTsKKyAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1
ZVswXSkgPT09ICdmaWx0ZXInKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVu
dCh2YWx1ZVsxXSk7CisgICAgfQorfQorCittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5
LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29uc3RhbnRzLnRlc3QgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9j
b25zdGFudHMudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2U3MWI3MmI2MWMwNmFkNzg0YzliMTUwOTIzYzUy
MGQ5NGUxZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29uc3RhbnRzLnRlc3QK
QEAgLTAsMCArMSwxMTUzIEBACitjYXNlIGZsb2F0X2lucHV0CisJdmVyc2lvbiAzMDAgZXMKKwl2
YWx1ZXMKKwl7CisJCWlucHV0IGZsb2F0IGluMAkJPSBbIDEuMTIzIHwgMC43NSB8IC01MTIuMCB8
IC03Mi4xMyB8IDE5OS45MSBdOworCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMS4xMjMgfCAwLjc1
IHwgLTUxMi4wIHwgLTcyLjEzIHwgMTk5LjkxIF07CisJfQorCXZhbHVlcworCXsKKwkJaW5wdXQg
ZmxvYXQgaW4wCQk9IFsgLTEuMTIzIHwgLTAuNzUgfCA1MTIuMCB8IC03Mi4xMyB8IC0xOTkuOTEg
XTsKKwkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC0xLjEyMyB8IC0wLjc1IHwgNTEyLjAgfCAtNzIu
MTMgfCAtMTk5LjkxIF07CisJfQorCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJb3V0MCA9IGluMDsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZs
b2F0X3VuaWZvcm0KKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcworCXsKKwkJdW5pZm9ybSBmbG9h
dCB1bmkwCT0gWyAxLjEyMyB8IDAuNzUgfCAtNTEyLjAgfCAtNzIuMTMgfCAxOTkuOTEgXTsKKwkJ
b3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMTIzIHwgMC43NSB8IC01MTIuMCB8IC03Mi4xMyB8IDE5
OS45MSBdOworCX0KKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gZmxvYXQgdW5pMDsKKwkJ
dm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IHVuaTA7CisJCQkke09VVFBVVH0KKwkJfQorCSIi
CitlbmQKKworY2FzZSBmbG9hdF8wCisJdmVyc2lvbiAzMDAgZXMKKwl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMTIzOyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJb3V0MCA9ICsxLjEyMzsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNl
IGZsb2F0XzEKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0g
LTEuMTIzOyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9
IC0xLjEyMzsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzIKKwl2
ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTIzLjA7IH0KKwli
b3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7
REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMTIzLjsKKwkJCSR7
T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzMKKwl2ZXJzaW9uIDMwMCBlcwor
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMC4xMjM7IH0KKwlib3RoICIiCisJCSN2ZXJz
aW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQor
CQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gLjEyMzsKKwkJCSR7T1VUUFVUfQorCQl9CisJ
IiIKK2VuZAorCitjYXNlIGZsb2F0XzQKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMTIzLjA7IH0KKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQor
CQl7CisJCQlvdXQwID0gMS4yM2UrMjsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitj
YXNlIGZsb2F0XzUKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gLTEyMy4wOyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJeworCQkJb3V0
MCA9IC0xLjIzRSsyOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgZmxvYXRf
NgorCXZlcnNpb24gMzAwIGVzCisJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAtMTIzLjA7
IH0KKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gLTEuMjNl
MjsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzcKKwl2ZXJzaW9u
IDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMC4xMjM7IH0KKwlib3RoICIi
CisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFS
QVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMS4yM2UtMTsKKwkJCSR7T1VU
UFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0XzgKKwl2ZXJzaW9uIDMwMCBlcworCXZh
bHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAwMC4wOyB9CisJYm90aCAiIgorCQkjdmVyc2lv
biAzMDAgZXMKKwkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJ
dm9pZCBtYWluKCkKKwkJeworCQkJb3V0MCA9IDFlMzsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIGZsb2F0X2Zfc3VmZml4XzAKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMK
KwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1h
aW4gKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCWZsb2F0IHZhbHVlID0gMS4wZjsKKwkJCW91dDAg
PSB2YWx1ZTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGZsb2F0X2Zfc3Vm
Zml4XzEKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4w
OyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJJHtTRVRVUH0K
KwkJCWZsb2F0IHZhbHVlID0gMS4wRjsKKwkJCW91dDAgPSB2YWx1ZTsKKwkJCSR7T1VUUFVUfQor
CQl9CisJIiIKK2VuZAorCitjYXNlIGludF8wCisJdmVyc2lvbiAzMDAgZXMKKwl2YWx1ZXMgeyBv
dXRwdXQgaW50IG91dDAgPSAxMjM7IH0KKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQor
CQl7CisJCQlvdXQwID0gMTIzOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ug
aW50XzEKKwl2ZXJzaW9uIDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBpbnQgb3V0MCA9IC0zMjE7
IH0KKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gLTMyMTsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF8yCisJdmVyc2lvbiAzMDAg
ZXMKKwl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAxMjM7IH0KKwlib3RoICIiCisJCSN2ZXJz
aW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQor
CQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMHg3QjsKKwkJCSR7T1VUUFVUfQorCQl9CisJ
IiIKK2VuZAorCitjYXNlIGludF8zCisJdmVyc2lvbiAzMDAgZXMKKwl2YWx1ZXMgeyBvdXRwdXQg
aW50IG91dDAgPSAxMjM7IH0KKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJ
CQlvdXQwID0gMFg3YjsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF80
CisJdmVyc2lvbiAzMDAgZXMKKwl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAxMjM7IH0KKwli
b3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7
REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gMDE3MzsKKwkJCSR7
T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGJvb2xfMAorCXZlcnNpb24gMzAwIGVzCisJ
dmFsdWVzIHsgb3V0cHV0IGJvb2wgb3V0MCA9IHRydWU7IH0KKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl2
b2lkIG1haW4oKQorCQl7CisJCQlvdXQwID0gdHJ1ZTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIGJvb2xfMQorCXZlcnNpb24gMzAwIGVzCisJdmFsdWVzIHsgb3V0cHV0IGJv
b2wgb3V0MCA9IGZhbHNlOyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJb3V0MCA9IGZhbHNlOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgY29u
c3RfZmxvYXRfZ2xvYmFsCisJIHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMTAwMC4wOyB9CisKKwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJY29uc3QgZmxv
YXQgdGhlQ29uc3RhbnQgPSAxMDAwLjA7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAg
PSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNv
bnN0X2Zsb2F0X21haW4KKwkgdmVyc2lvbiAzMDAgZXMKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0
IG91dDAgPSAtMTAwMC4wOyB9CisKKwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAtMTAwMC4wOworCQkJCW91
dDAgPSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNl
IGNvbnN0X2Zsb2F0X2Z1bmN0aW9uCisJIHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gLTAuMDEyOyB9CisKKwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJZmxv
YXQgZnVuYygpCisJCQl7CisJCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gLTAuMDEyOwor
CQkJCXJldHVybiB0aGVDb25zdGFudDsKKwkJCX0KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IGZ1bmMoKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNv
bnN0X2Zsb2F0X3Njb3BlCisJIHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMS4wOyB9CisKKwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQl7CisJCQkJCSBjb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IDEuMDsKKwkJCQkJ
IG91dDAgPSB0aGVDb25zdGFudDsKKwkJCQl9CisJCQkJJHtPVVRQVVR9CisJCQl9CisJICIiCitl
bmQKKworY2FzZSBjb25zdF9mbG9hdF9zY29wZV9zaGF3ZG93aW5nXzEKKwkgdmVyc2lvbiAzMDAg
ZXMKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKworCSBib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0
YW50ID0gMTAwLjA7CisJCQkJeworCQkJCQkgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxLjA7
CisJCQkJCSBvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJfQorCQkJCSR7T1VUUFVUfQorCQkJfQor
CSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfc2NvcGVfc2hhd2Rvd2luZ18yCisJIHZlcnNp
b24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkgYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxMDAuMDsKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJeworCQkJCQkgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQg
PSAxLjA7CisJCQkJCSBvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJfQorCQkJCSR7T1VUUFVUfQor
CQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfc2NvcGVfc2hhd2Rvd2luZ18zCisJ
IHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisK
KwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxMDAu
MDsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAt
MTAwLjA7CisJCQkJeworCQkJCQkgY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxLjA7CisJCQkJ
CSBvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJfQorCQkJCSR7T1VUUFVUfQorCQkJfQorCSAiIgor
ZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfc2NvcGVfc2hhd2Rvd2luZ180CisJIHZlcnNpb24gMzAw
IGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMi4wOyB9CisKKwkgYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSAxMDAuMDsKKwkJCWZsb2F0
IGZ1bmMoKQorCQkJeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gMi4wOworCQkJCXJl
dHVybiB0aGVDb25zdGFudDsKKwkJCX0KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3Qg
ZmxvYXQgdGhlQ29uc3RhbnQgPSAtMTAwLjA7CisJCQkJeworCQkJCQkgY29uc3QgZmxvYXQgdGhl
Q29uc3RhbnQgPSAxLjA7CisJCQkJCSBvdXQwID0gZnVuYygpOworCQkJCX0KKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X29wZXJhdGlvbnNfd2l0aF9j
b25zdAorCSB2ZXJzaW9uIDMwMCBlcworCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIx
LjA7IH0KKworCSBib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQljb25zdCBmbG9hdCB0aGVHbG9iYWxD
b25zdGFudCA9IDEwLjA7CisJCQlmbG9hdCBmdW5jKCkKKwkJCXsKKwkJCQljb25zdCBmbG9hdCB0
aGVDb25zdGFudCA9IDIuMDsKKwkJCQlyZXR1cm4gdGhlQ29uc3RhbnQ7CisJCQl9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gLTEwMC4wOworCQkJ
CXsKKwkJCQkJIGNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gMS4wOworCQkJCQkgb3V0MCA9IGZ1
bmMoKSAqIHRoZUdsb2JhbENvbnN0YW50ICsgdGhlQ29uc3RhbnQ7CisJCQkJfQorCQkJCSR7T1VU
UFVUfQorCQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNzaWdubWVudF8xCisJ
IHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQor
CisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3Qg
ZmxvYXQgdGhlQ29uc3RhbnQxID0gMTAuMDsKKwkJCQljb25zdCBmbG9hdCB0aGVDb25zdGFudDIg
PSB0aGVDb25zdGFudDE7CisJCQkJb3V0MCA9IHRoZUNvbnN0YW50MjsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbm1lbnRfMgorCSB2ZXJz
aW9uIDMwMCBlcworCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEwLjA7IH0KKworCSBi
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGZsb2F0
IHRoZUNvbnN0YW50MSA9IDEwLjA7CisJCQkJeworCQkJCQljb25zdCBmbG9hdCB0aGVDb25zdGFu
dDIgPSB0aGVDb25zdGFudDE7CisJCQkJCW91dDAgPSB0aGVDb25zdGFudDI7CisJCQkJfQorCQkJ
CSR7T1VUUFVUfQorCQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNzaWdubWVu
dF8zCisJIHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAu
MDsgfQorCisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50
MSA9IDEwLjA7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0
YW50MiA9IHRoZUNvbnN0YW50MTsKKwkJCQlvdXQwID0gdGhlQ29uc3RhbnQyOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfYXNzaWdubWVudF80CisJ
IHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQor
CisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50MSA9IDEw
LjA7CisJCQlmbG9hdCBmdW5jKCkKKwkJCXsKKwkJCQljb25zdCBmbG9hdCB0aGVDb25zdGFudDIg
PSB0aGVDb25zdGFudDE7CisJCQkJcmV0dXJuIHRoZUNvbnN0YW50MjsKKwkJCX0KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZ1bmMoKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkg
IiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl91bmlmb3JtCisJIHZlcnNpb24gMzAw
IGVzCisJIGV4cGVjdCBjb21waWxlX2ZhaWwKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAg
PSAxMC4wOyB9CisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gZmxvYXQgdGhlVW5p
Zm9ybTsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQg
PSB0aGVVbmlmb3JtOworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl92YXJ5aW5nCisJIHZlcnNp
b24gMzAwIGVzCisJIGV4cGVjdCBjb21waWxlX2ZhaWwKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0
IG91dDAgPSAxMC4wOyB9CisJIHZlcnRleCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCQlvdXQgZmxvYXQgdGhlVmFyeWluZzsKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJdGhlVmFyeWluZyA9IDEuMDsKKwkJCQlnbF9Qb3NpdGlvbiA9IHZlYygx
LjApOworCQkJfQorCSAiIgorCSBmcmFnbWVudCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJ
aW4gZmxvYXQgdGhlVmFyeWluZzsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJY29uc3QgZmxv
YXQgdGhlQ29uc3RhbnQgPSB0aGVWYXJ5aW5nOworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJ
CQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0
X2Z1bmN0aW9uX2dvdGNoYQorCSB2ZXJzaW9uIDMwMCBlcworCSBkZXNjICJGdW5jdGlvbiBjb25z
dGFudCBwYXJhbWV0ZXJzIGFyZSBub3QgcmVhbGx5IGNvbnN0YW50cywgc28gdXNpbmcgdGhlbSBh
cyBjb25zdGFudCBleHByZXNzaW9ucyBzaG91bGQgZmFpbC4iCisJIGV4cGVjdCBjb21waWxlX2Zh
aWwKKwkgdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyMC4wOyB9CisJIGJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCWZsb2F0IGZ1bmMoY29uc3QgZmxvYXQgZ290Y2hhKQorCQkJeworCQkJCWNv
bnN0IGZsb2F0IHRoZUNvbnN0YW50MiA9IGdvdGNoYTsKKwkJCQlyZXR1cm4gdGhlQ29uc3RhbnQy
KjIuMDsKKwkJCX0KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJCWNvbnN0IGZsb2F0IHRoZUNv
bnN0YW50ID0gMTAuMDsKKwkJCQlvdXQwID0gZnVuYyh0aGVDb25zdGFudCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJICIiCitlbmQKKworY2FzZSBjb25zdF9mbG9hdF9mcm9tX2ludAorCSB2ZXJz
aW9uIDMwMCBlcworCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEwLjA7IH0KKworCSBi
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQljb25zdCBmbG9hdCB0aGVDb25zdGFudCA9IGZsb2F0KDEw
KTsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IHRoZUNvbnN0YW50OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRfZnJvbV92ZWMyCisJ
IHZlcnNpb24gMzAwIGVzCisJIHZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMTAuMDsgfQor
CisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gdmVj
MigxLjAsIDEwLjApLnk7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSB0aGVDb25z
dGFudDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0
X2Zyb21fdmVjMworCSB2ZXJzaW9uIDMwMCBlcworCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEwLjA7IH0KKworCSBib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQljb25zdCBmbG9hdCB0aGVD
b25zdGFudCA9IHZlYzMoMS4wLCAxMC4wLCAyMC4wKS55OworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlvdXQwID0gdGhlQ29uc3RhbnQ7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJICIiCitlbmQK
KworY2FzZSBjb25zdF9mbG9hdF9mcm9tX3ZlYzQKKwkgdmVyc2lvbiAzMDAgZXMKKwkgdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxMC4wOyB9CisKKwkgYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJY29uc3QgZmxvYXQgdGhlQ29uc3RhbnQgPSB2ZWM0KDEuMCwgMTAuMCwgMjAuMCwgLTEwLjAp
Lnk7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl92YXJp
YWJsZV8xCisJIHZlcnNpb24gMzAwIGVzCisJIGV4cGVjdCBjb21waWxlX2ZhaWwKKwkgdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyMC4wOyB9CisJIGJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJZmxvYXQgdGhlVmFyaWFibGUgPSAyMC4wOworCQkJCWNv
bnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gdGhlVmFyaWFibGU7CisJCQkJb3V0MCA9IHRoZUNvbnN0
YW50OworCQkJCSR7T1VUUFVUfQorCQkJfQorCSAiIgorZW5kCisKK2Nhc2UgY29uc3RfZmxvYXRf
YXNzaWduX3ZhcmlhYmxlXzIKKwkgdmVyc2lvbiAzMDAgZXMKKwkgZXhwZWN0IGNvbXBpbGVfZmFp
bAorCSB2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDUwLjA7IH0KKwkgYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlmbG9hdCB0aGVWYXJpYWJsZSA9IDIw
LjA7CisJCQkJdGhlVmFyaWFibGUgKz0gMzAuMDsKKwkJCQljb25zdCBmbG9hdCB0aGVDb25zdGFu
dCA9IHRoZVZhcmlhYmxlOworCQkJCW91dDAgPSB0aGVDb25zdGFudDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGNvbnN0X2Zsb2F0X2Fzc2lnbl91c2VyX2Z1bmMKKwkg
dmVyc2lvbiAzMDAgZXMKKwkgZXhwZWN0IGNvbXBpbGVfZmFpbAorCSB2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDUwLjA7IH0KKwkgYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJZmxvYXQgZnVu
YygpCisJCQl7CisJCQkJcmV0dXJuIDUwLjA7CisJCQl9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWNvbnN0IGZsb2F0IHRoZUNvbnN0YW50ID0gZnVuYygpOworCQkJCW91dDAgPSB0aGVDb25z
dGFudDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkgIiIKK2VuZAorCitjYXNlIGludF9kZWNpbWFs
CisJdmVyc2lvbiAzMDAgZXMKKwl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSA3OyB9CisJYm90
aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbiAo
KQorCQl7CisJCQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gNzsKKwkJCW91dDAgPSB2YWx1ZTsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF9vY3RhbAorCXZlcnNpb24g
MzAwIGVzCisJdmFsdWVzIHsgb3V0cHV0IGludCBvdXQwID0gMTU7IH0KKwlib3RoICIiCisJCSN2
ZXJzaW9uIDMwMCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJ
CSR7U0VUVVB9CisJCQlpbnQgdmFsdWUgPSAwMTc7CisJCQlvdXQwID0gdmFsdWU7CisJCQkke09V
VFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBpbnRfaGV4YWRlY2ltYWxfMAorCXZlcnNpb24g
MzAwIGVzCisJdmFsdWVzIHsgb3V0cHV0IGludCBvdXQwID0gNDc7IH0KKwlib3RoICIiCisJCSN2
ZXJzaW9uIDMwMCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJ
CSR7U0VUVVB9CisJCQlpbnQgdmFsdWUgPSAweDJmOworCQkJb3V0MCA9IHZhbHVlOworCQkJJHtP
VVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgaW50X2hleGFkZWNpbWFsXzEKKwl2ZXJzaW9u
IDMwMCBlcworCXZhbHVlcyB7IG91dHB1dCBpbnQgb3V0MCA9IDQ3OyB9CisJYm90aCAiIgorCQkj
dmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJ
CQkke1NFVFVQfQorCQkJaW50IHZhbHVlID0gMFgyZjsKKwkJCW91dDAgPSB2YWx1ZTsKKwkJCSR7
T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVpbnRfZGVjaW1hbF8wCisJdmVyc2lvbiAz
MDAgZXMKKwl2YWx1ZXMgeyBvdXRwdXQgdWludCBvdXQwID0gNzsgfQorCWJvdGggIiIKKwkJI3Zl
cnNpb24gMzAwIGVzCisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJ
JHtTRVRVUH0KKwkJCXVpbnQgdmFsdWUgPSA3dTsKKwkJCW91dDAgPSB2YWx1ZTsKKwkJCSR7T1VU
UFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVpbnRfZGVjaW1hbF8xCisJdmVyc2lvbiAzMDAg
ZXMKKwl2YWx1ZXMgeyBvdXRwdXQgdWludCBvdXQwID0gNzsgfQorCWJvdGggIiIKKwkJI3ZlcnNp
b24gMzAwIGVzCisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJJHtT
RVRVUH0KKwkJCXVpbnQgdmFsdWUgPSA3VTsKKwkJCW91dDAgPSB2YWx1ZTsKKwkJCSR7T1VUUFVU
fQorCQl9CisJIiIKK2VuZAorCitjYXNlIHVpbnRfb2N0YWxfMAorCXZlcnNpb24gMzAwIGVzCisJ
dmFsdWVzIHsgb3V0cHV0IHVpbnQgb3V0MCA9IDE1OyB9CisJYm90aCAiIgorCQkjdmVyc2lvbiAz
MDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQkke1NFVFVQ
fQorCQkJdWludCB2YWx1ZSA9IDAxN3U7CisJCQlvdXQwID0gdmFsdWU7CisJCQkke09VVFBVVH0K
KwkJfQorCSIiCitlbmQKKworY2FzZSB1aW50X29jdGFsXzEKKwl2ZXJzaW9uIDMwMCBlcworCXZh
bHVlcyB7IG91dHB1dCB1aW50IG91dDAgPSAxNTsgfQorCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAw
IGVzCisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJJHtTRVRVUH0K
KwkJCXVpbnQgdmFsdWUgPSAwMTdVOworCQkJb3V0MCA9IHZhbHVlOworCQkJJHtPVVRQVVR9CisJ
CX0KKwkiIgorZW5kCisKK2Nhc2UgdWludF9oZXhhZGVjaW1hbF8wCisJdmVyc2lvbiAzMDAgZXMK
Kwl2YWx1ZXMgeyBvdXRwdXQgdWludCBvdXQwID0gNDc7IH0KKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCSR7U0VU
VVB9CisJCQl1aW50IHZhbHVlID0gMHgyZlU7CisJCQlvdXQwID0gdmFsdWU7CisJCQkke09VVFBV
VH0KKwkJfQorCSIiCitlbmQKKworY2FzZSB1aW50X2hleGFkZWNpbWFsXzEKKwl2ZXJzaW9uIDMw
MCBlcworCXZhbHVlcyB7IG91dHB1dCB1aW50IG91dDAgPSA0NzsgfQorCWJvdGggIiIKKwkJI3Zl
cnNpb24gMzAwIGVzCisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJ
JHtTRVRVUH0KKwkJCXVpbnQgdmFsdWUgPSAwWDJmdTsKKwkJCW91dDAgPSB2YWx1ZTsKKwkJCSR7
T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGludF9mcm9tX3VpbnQKKwlleHBlY3QgY29t
cGlsZV9mYWlsCisJdmVyc2lvbiAzMDAgZXMKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcwor
CQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWludCB2YWx1ZSA9IDd1
OworCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJfQorCSIiCitlbmQK
KworY2FzZSB1aW50X2Zyb21faW50CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnNpb24gMzAw
IGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZv
aWQgbWFpbiAoKQorCQl7CisJCQl1aW50IHZhbHVlID0gNzsKKwkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDAuMCk7CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgaW50X2Zyb21fZmxvYXQK
KwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmVyc2lvbiAzMDAgZXMKKwlib3RoICIiCisJCSN2ZXJz
aW9uIDMwMCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWlu
dCB2YWx1ZSA9IDcuMDsKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJ
CX0KKwkiIgorZW5kCisKK2Nhc2UgdWludF9mcm9tX2Zsb2F0CisJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCXZlcnNpb24gMzAwIGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNM
QVJBVElPTlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQl1aW50IHZhbHVlID0gNy4wOworCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJfQorCSIiCitlbmQKKworY2Fz
ZSBib29sX2Zyb21faW50CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnNpb24gMzAwIGVzCisJ
Ym90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZvaWQgbWFp
biAoKQorCQl7CisJCQlib29sIHZhbHVlID0gMTsKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDAuMCk7CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgYm9vbF9mcm9tX3VpbnQKKwlleHBl
Y3QgY29tcGlsZV9mYWlsCisJdmVyc2lvbiAzMDAgZXMKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMw
MCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWJvb2wgdmFs
dWUgPSAxdTsKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJCX0KKwki
IgorZW5kCisKK2Nhc2UgYm9vbF9mcm9tX2Zsb2F0CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZl
cnNpb24gMzAwIGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElP
TlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlib29sIHZhbHVlID0gMS4wOworCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJfQorCSIiCitlbmQKKworY2FzZSBmbG9h
dF9pbnRfZl9zdWZmaXhfMAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2ZXJzaW9uIDMwMCBlcwor
CWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCSR7U0VUVVB9CisJCQlm
bG9hdCB2YWx1ZSA9IDFmOworCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsK
KwkJfQorCSIiCitlbmQKKworY2FzZSBmbG9hdF9pbnRfZl9zdWZmaXhfMQorCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwl2ZXJzaW9uIDMwMCBlcworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWlu
ICgpCisJCXsKKwkJCSR7U0VUVVB9CisJCQlmbG9hdCB2YWx1ZSA9IDFGOworCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJfQorCSIiCitlbmQKKworY2FzZSBpbnRfbF9z
dWZmaXgKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmVyc2lvbiAzMDAgZXMKKwlib3RoICIiCisJ
CSN2ZXJzaW9uIDMwMCBlcworCQkke0RFQ0xBUkFUSU9OU30KKwkJdm9pZCBtYWluICgpCisJCXsK
KwkJCWludCB2YWx1ZSA9IDFsOworCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4w
KTsKKwkJfQorCSIiCitlbmQKKworY2FzZSB1aW50X3VsX3N1ZmZpeAorCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwl2ZXJzaW9uIDMwMCBlcworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCSR7
REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJdWludCB2YWx1ZSA9IDF1bDsK
KwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJCX0KKwkiIgorZW5kCisK
K2Nhc2UgaW52YWxpZF9vY3RhbF8wCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnNpb24gMzAw
IGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJBVElPTlN9CisJCXZv
aWQgbWFpbiAoKQorCQl7CisJCQlpbnQgdmFsdWUgPSAwMTg7CisJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNCgwLjApOworCQl9CisJIiIKK2VuZAorCitjYXNlIGludmFsaWRfb2N0YWxf
MQorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2ZXJzaW9uIDMwMCBlcworCWJvdGggIiIKKwkJI3Zl
cnNpb24gMzAwIGVzCisJCSR7REVDTEFSQVRJT05TfQorCQl2b2lkIG1haW4gKCkKKwkJeworCQkJ
dWludCB2YWx1ZSA9IDA5VTsKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7
CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgaW52YWxpZF9oZXhhZGVjaW1hbF8wCisJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCXZlcnNpb24gMzAwIGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMK
KwkJJHtERUNMQVJBVElPTlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlpbnQgdmFsdWUgPSAw
eDJnNzsKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJCX0KKwkiIgor
ZW5kCisKK2Nhc2UgaW52YWxpZF9oZXhhZGVjaW1hbF8xCisJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CXZlcnNpb24gMzAwIGVzCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJJHtERUNMQVJB
VElPTlN9CisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQl1aW50IHZhbHVlID0gMFgxaDd1OworCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJfQorCSIiCitlbmQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZGF0YS9nbGVzMy9zaGFkZXJzL2NvbnZlcnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb252ZXJz
aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNmYzOGRlYjlmZjJhMDc4OTM0YjhlYzQ1ZDJiOGQxYjg2
NTk3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb252ZXJzaW9ucy5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
U2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnkn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAnY29udmVy
c2lvbnMnOworZGVzY3JpcHRpb24oIlNoYWRlciB0ZXN0OiAiICsgdGVzdE5hbWUgKyAiLiIpOwor
V2ViR0xUZXN0VXRpbHMuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oMik7CisKK3ZhciBnZXRG
aWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9u
LnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5VmFy
c1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzBd
KSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZh
bHVlWzFdKTsKKyAgICB9Cit9CisKK21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnkucnVu
KHRlc3ROYW1lLCBnZXRGaWx0ZXIoKSkKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9jb252ZXJzaW9ucy50ZXN0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29u
dmVyc2lvbnMudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjhjMmQyNjRmOTI1Zjg4NjgyNTI3NTYyYjc2MzNi
Y2Y3NzY3ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvY29udmVyc2lvbnMudGVz
dApAQCAtMCwwICsxLDE0MjQ2IEBACisjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZC4gRG8gTk9UIG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhlcgorIyBtb2RpZnkgdGhl
IGdlbmVyYXRpbmcgc2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2VzIHdpbGwgYmUgbG9zdCEK
KworZ3JvdXAgc2NhbGFyX3RvX3NjYWxhciAiU2NhbGFyIHRvIFNjYWxhciBDb252ZXJzaW9ucyIK
KworCWNhc2UgZmxvYXRfdG9fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04
LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAg
fCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZmxvYXQo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfdG9f
aW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAg
PSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44
MTI1IF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMiB8IDMgfCAwIHwgLTggfCAt
MjAgfCAzNiBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGZsb2F0X3RvX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1IHwgLTIw
LjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZhbHNlIHwgdHJ1ZSB8
IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYm9vbChpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fZmxvYXQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8
IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgZmxvYXQg
b3V0MCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgNS4wIHwgOC4wIHwgMTEuMCB8IC0xMi4wIHwgLTY2
LjAgfCAtMTkyLjAgfCAyNTUuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW50X3RvX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0xMiB8IC02
NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAyIHwgNSB8
IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fYm9vbAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAx
MSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZh
bHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRy
dWUgfCB0cnVlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVpbnRfdG9fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8
IDI1NSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDIuMCB8IDMuMCB8IDguMCB8
IDkuMCB8IDEyLjAgfCAxMC4wIHwgNDUuMCB8IDE5My4wIHwgMjU1LjAgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdG9faW50CisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMCB8IDIgfCAz
IHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1dCBpbnQgb3V0
MCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX2Jvb2wK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAw
IHwgMiB8IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOworCQkJb3V0cHV0
IGJvb2wgb3V0MCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8
IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJvb2woaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF90b19mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0
cHV0IGZsb2F0IG91dDAgPSBbIDEuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF90b19pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91
dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBib29sX3RvX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBi
b29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYm9vbChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b191aW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8
IDAuNSB8IDguMjUgfCAyMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgdWludCBvdXQwID0g
WyAwIHwgMSB8IDIgfCAzIHwgMCB8IDggfCAyMCB8IDM2IF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1aW50KGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF90b191aW50CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8
IDExIHwgMTIgfCA2NiB8IDE5MiB8IDI1NSBdOworCQkJb3V0cHV0IHVpbnQgb3V0MCA9IFsgMCB8
IDEgfCAyIHwgNSB8IDggfCAxMSB8IDEyIHwgNjYgfCAxOTIgfCAyNTUgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHVpbnQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b191aW50CisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMCB8IDIgfCAz
IHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1dCB1aW50IG91
dDAgPSBbIDAgfCAyIHwgMyB8IDggfCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1IF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1aW50KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9fdWlu
dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBb
IHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IHVpbnQgb3V0MCA9IFsgMSB8IDAgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHVpbnQoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCitlbmQgIyBzY2FsYXJfdG9fc2Nh
bGFyCitncm91cCBzY2FsYXJfdG9fdmVjdG9yICJTY2FsYXIgdG8gVmVjdG9yIENvbnZlcnNpb25z
IgorCisJY2FzZSBmbG9hdF90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAt
OC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMy
KDAuMCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigyLjAsIDIuMCkgfCB2ZWMyKDMuNSwg
My41KSB8IHZlYzIoLTAuNSwgLTAuNSkgfCB2ZWMyKC04LjI1LCAtOC4yNSkgfCB2ZWMyKC0yMC4x
MjUsIC0yMC4xMjUpIHwgdmVjMigzNi44MTI1LCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b192ZWMzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8
IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRw
dXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwgMC4wLCAwLjApIHwgdmVjMygxLjAsIDEuMCwgMS4w
KSB8IHZlYzMoMi4wLCAyLjAsIDIuMCkgfCB2ZWMzKDMuNSwgMy41LCAzLjUpIHwgdmVjMygtMC41
LCAtMC41LCAtMC41KSB8IHZlYzMoLTguMjUsIC04LjI1LCAtOC4yNSkgfCB2ZWMzKC0yMC4xMjUs
IC0yMC4xMjUsIC0yMC4xMjUpIHwgdmVjMygzNi44MTI1LCAzNi44MTI1LCAzNi44MTI1KSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b192
ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAg
PSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44
MTI1IF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkg
fCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkgfCB2ZWM0KDIuMCwgMi4wLCAyLjAsIDIuMCkgfCB2
ZWM0KDMuNSwgMy41LCAzLjUsIDMuNSkgfCB2ZWM0KC0wLjUsIC0wLjUsIC0wLjUsIC0wLjUpIHwg
dmVjNCgtOC4yNSwgLTguMjUsIC04LjI1LCAtOC4yNSkgfCB2ZWM0KC0yMC4xMjUsIC0yMC4xMjUs
IC0yMC4xMjUsIC0yMC4xMjUpIHwgdmVjNCgzNi44MTI1LCAzNi44MTI1LCAzNi44MTI1LCAzNi44
MTI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBm
bG9hdF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
ZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAu
MTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwg
aXZlYzIoMSwgMSkgfCBpdmVjMigyLCAyKSB8IGl2ZWMyKDMsIDMpIHwgaXZlYzIoMCwgMCkgfCBp
dmVjMigtOCwgLTgpIHwgaXZlYzIoLTIwLCAtMjApIHwgaXZlYzIoMzYsIDM2KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfdG9faXZlYzMK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsg
MC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUg
XTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMiwgMiwgMikgfCBpdmVjMygzLCAzLCAzKSB8IGl2ZWMzKDAsIDAsIDApIHwg
aXZlYzMoLTgsIC04LCAtOCkgfCBpdmVjMygtMjAsIC0yMCwgLTIwKSB8IGl2ZWMzKDM2LCAzNiwg
MzYpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBm
bG9hdF90b19pdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
ZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAu
MTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgyLCAyLCAyLCAyKSB8IGl2ZWM0KDMsIDMs
IDMsIDMpIHwgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgtOCwgLTgsIC04LCAtOCkgfCBpdmVj
NCgtMjAsIC0yMCwgLTIwLCAtMjApIHwgaXZlYzQoMzYsIDM2LCAzNiwgMzYpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b19idmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAw
LjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBd
OworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0
cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBi
dmVjMih0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gYnZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgZmxvYXRfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8
IC04LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBi
dmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b19idmVjNAorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAg
fCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0
cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fdmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8
IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0xMiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1
dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMyKDIu
MCwgMi4wKSB8IHZlYzIoNS4wLCA1LjApIHwgdmVjMig4LjAsIDguMCkgfCB2ZWMyKDExLjAsIDEx
LjApIHwgdmVjMigtMTIuMCwgLTEyLjApIHwgdmVjMigtNjYuMCwgLTY2LjApIHwgdmVjMigtMTky
LjAsIC0xOTIuMCkgfCB2ZWMyKDI1NS4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwg
MTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2
ZWMzKDAuMCwgMC4wLCAwLjApIHwgdmVjMygxLjAsIDEuMCwgMS4wKSB8IHZlYzMoMi4wLCAyLjAs
IDIuMCkgfCB2ZWMzKDUuMCwgNS4wLCA1LjApIHwgdmVjMyg4LjAsIDguMCwgOC4wKSB8IHZlYzMo
MTEuMCwgMTEuMCwgMTEuMCkgfCB2ZWMzKC0xMi4wLCAtMTIuMCwgLTEyLjApIHwgdmVjMygtNjYu
MCwgLTY2LjAsIC02Ni4wKSB8IHZlYzMoLTE5Mi4wLCAtMTkyLjAsIC0xOTIuMCkgfCB2ZWMzKDI1
NS4wLCAyNTUuMCwgMjU1LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGludF90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2
IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwg
MC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApIHwgdmVjNCgyLjAsIDIuMCwgMi4w
LCAyLjApIHwgdmVjNCg1LjAsIDUuMCwgNS4wLCA1LjApIHwgdmVjNCg4LjAsIDguMCwgOC4wLCA4
LjApIHwgdmVjNCgxMS4wLCAxMS4wLCAxMS4wLCAxMS4wKSB8IHZlYzQoLTEyLjAsIC0xMi4wLCAt
MTIuMCwgLTEyLjApIHwgdmVjNCgtNjYuMCwgLTY2LjAsIC02Ni4wLCAtNjYuMCkgfCB2ZWM0KC0x
OTIuMCwgLTE5Mi4wLCAtMTkyLjAsIC0xOTIuMCkgfCB2ZWM0KDI1NS4wLCAyNTUuMCwgMjU1LjAs
IDI1NS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbnRfdG9faXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwg
MjU1IF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDIsIDIpIHwgaXZlYzIoNSwgNSkgfCBpdmVjMig4LCA4KSB8IGl2ZWMyKDExLCAx
MSkgfCBpdmVjMigtMTIsIC0xMikgfCBpdmVjMigtNjYsIC02NikgfCBpdmVjMigtMTkyLCAtMTky
KSB8IGl2ZWMyKDI1NSwgMjU1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW50X3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwg
LTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAs
IDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygyLCAyLCAyKSB8IGl2ZWMzKDUsIDUsIDUpIHwg
aXZlYzMoOCwgOCwgOCkgfCBpdmVjMygxMSwgMTEsIDExKSB8IGl2ZWMzKC0xMiwgLTEyLCAtMTIp
IHwgaXZlYzMoLTY2LCAtNjYsIC02NikgfCBpdmVjMygtMTkyLCAtMTkyLCAtMTkyKSB8IGl2ZWMz
KDI1NSwgMjU1LCAyNTUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYg
fCAtMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwg
MCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDIsIDIsIDIsIDIpIHwgaXZlYzQoNSwgNSwg
NSwgNSkgfCBpdmVjNCg4LCA4LCA4LCA4KSB8IGl2ZWM0KDExLCAxMSwgMTEsIDExKSB8IGl2ZWM0
KC0xMiwgLTEyLCAtMTIsIC0xMikgfCBpdmVjNCgtNjYsIC02NiwgLTY2LCAtNjYpIHwgaXZlYzQo
LTE5MiwgLTE5MiwgLTE5MiwgLTE5MikgfCBpdmVjNCgyNTUsIDI1NSwgMjU1LCAyNTUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fYnZl
YzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBb
IDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlv
dXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3RvX2J2ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAw
IHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0
cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fYnZl
YzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBb
IDAgfCAxIHwgMiB8IDUgfCA4IHwgMTEgfCAtMTIgfCAtNjYgfCAtMTkyIHwgMjU1IF07CisJCQlv
dXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBi
dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50
X3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQg
aW4wID0gWyAwIHwgMiB8IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOwor
CQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDIuMCwgMi4wKSB8
IHZlYzIoMy4wLCAzLjApIHwgdmVjMig4LjAsIDguMCkgfCB2ZWMyKDkuMCwgOS4wKSB8IHZlYzIo
MTIuMCwgMTIuMCkgfCB2ZWMyKDEwLjAsIDEwLjApIHwgdmVjMig0NS4wLCA0NS4wKSB8IHZlYzIo
MTkzLjAsIDE5My4wKSB8IHZlYzIoMjU1LjAsIDI1NS4wKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8IDMgfCA4IHwg
OSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsg
dmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMi4wLCAyLjAsIDIuMCkgfCB2ZWMzKDMuMCwgMy4w
LCAzLjApIHwgdmVjMyg4LjAsIDguMCwgOC4wKSB8IHZlYzMoOS4wLCA5LjAsIDkuMCkgfCB2ZWMz
KDEyLjAsIDEyLjAsIDEyLjApIHwgdmVjMygxMC4wLCAxMC4wLCAxMC4wKSB8IHZlYzMoNDUuMCwg
NDUuMCwgNDUuMCkgfCB2ZWMzKDE5My4wLCAxOTMuMCwgMTkzLjApIHwgdmVjMygyNTUuMCwgMjU1
LjAsIDI1NS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB1aW50X3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8
IDI1NSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgdmVjNCgyLjAsIDIuMCwgMi4wLCAyLjApIHwgdmVjNCgzLjAsIDMuMCwgMy4wLCAzLjApIHwg
dmVjNCg4LjAsIDguMCwgOC4wLCA4LjApIHwgdmVjNCg5LjAsIDkuMCwgOS4wLCA5LjApIHwgdmVj
NCgxMi4wLCAxMi4wLCAxMi4wLCAxMi4wKSB8IHZlYzQoMTAuMCwgMTAuMCwgMTAuMCwgMTAuMCkg
fCB2ZWM0KDQ1LjAsIDQ1LjAsIDQ1LjAsIDQ1LjApIHwgdmVjNCgxOTMuMCwgMTkzLjAsIDE5My4w
LCAxOTMuMCkgfCB2ZWM0KDI1NS4wLCAyNTUuMCwgMjU1LjAsIDI1NS4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX2l2ZWMyCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMCB8IDIg
fCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1dCBpdmVj
MiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDIsIDIpIHwgaXZlYzIoMywgMykgfCBpdmVj
Mig4LCA4KSB8IGl2ZWMyKDksIDkpIHwgaXZlYzIoMTIsIDEyKSB8IGl2ZWMyKDEwLCAxMCkgfCBp
dmVjMig0NSwgNDUpIHwgaXZlYzIoMTkzLCAxOTMpIHwgaXZlYzIoMjU1LCAyNTUpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX2l2ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsg
MCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1
dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDIsIDIsIDIpIHwgaXZlYzMo
MywgMywgMykgfCBpdmVjMyg4LCA4LCA4KSB8IGl2ZWMzKDksIDksIDkpIHwgaXZlYzMoMTIsIDEy
LCAxMikgfCBpdmVjMygxMCwgMTAsIDEwKSB8IGl2ZWMzKDQ1LCA0NSwgNDUpIHwgaXZlYzMoMTkz
LCAxOTMsIDE5MykgfCBpdmVjMygyNTUsIDI1NSwgMjU1KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19pdmVjNAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDAgfCAyIHwgMyB8IDgg
fCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9
IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgyLCAyLCAyLCAyKSB8IGl2ZWM0KDMsIDMsIDMs
IDMpIHwgaXZlYzQoOCwgOCwgOCwgOCkgfCBpdmVjNCg5LCA5LCA5LCA5KSB8IGl2ZWM0KDEyLCAx
MiwgMTIsIDEyKSB8IGl2ZWM0KDEwLCAxMCwgMTAsIDEwKSB8IGl2ZWM0KDQ1LCA0NSwgNDUsIDQ1
KSB8IGl2ZWM0KDE5MywgMTkzLCAxOTMsIDE5MykgfCBpdmVjNCgyNTUsIDI1NSwgMjU1LCAyNTUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50
X3RvX2J2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50
IGluMCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsK
KwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVj
MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3Rv
X2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGlu
MCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJ
CW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZl
YzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90
b19idmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBp
bjAgPSBbIDAgfCAyIHwgMyB8IDggfCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1IF07CisJ
CQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBi
b29sX3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJv
b2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIo
MS4wLCAxLjApIHwgdmVjMigwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF90b192ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRw
dXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIDAuMCwgMC4w
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
dmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29s
X3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wg
aW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMS4w
LCAxLjAsIDEuMCwgMS4wKSB8IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX2l2ZWMyCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8
IGZhbHNlIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMSwgMSkgfCBpdmVjMigw
LCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Ym9vbF90b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
Ym9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJ
CW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAs
IDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBi
b29sX3RvX2J2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
b29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX2J2ZWMzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNl
IF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF90b19idmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0
cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAz
LjUgfCAwLjUgfCA4LjI1IHwgMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IHV2ZWMyIG91
dDAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigyLCAyKSB8IHV2ZWMyKDMs
IDMpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMig4LCA4KSB8IHV2ZWMyKDIwLCAyMCkgfCB1dmVjMigz
NiwgMzYpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSB1dmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBmbG9hdF90b191dmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAwLjUgfCA4LjI1IHwgMjAu
MTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMzKDAsIDAsIDAp
IHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygyLCAyLCAyKSB8IHV2ZWMzKDMsIDMsIDMpIHwgdXZl
YzMoMCwgMCwgMCkgfCB1dmVjMyg4LCA4LCA4KSB8IHV2ZWMzKDIwLCAyMCwgMjApIHwgdXZlYzMo
MzYsIDM2LCAzNikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IHV2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGZsb2F0X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IDAuNSB8IDguMjUg
fCAyMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMCwg
MCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDIsIDIsIDIsIDIpIHwgdXZlYzQo
MywgMywgMywgMykgfCB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDgsIDgsIDgsIDgpIHwgdXZl
YzQoMjAsIDIwLCAyMCwgMjApIHwgdXZlYzQoMzYsIDM2LCAzNiwgMzYpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fdXZlYzIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwg
MiB8IDUgfCA4IHwgMTEgfCAxMiB8IDY2IHwgMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgdXZlYzIg
b3V0MCA9IFsgdXZlYzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDIsIDIpIHwgdXZlYzIo
NSwgNSkgfCB1dmVjMig4LCA4KSB8IHV2ZWMyKDExLCAxMSkgfCB1dmVjMigxMiwgMTIpIHwgdXZl
YzIoNjYsIDY2KSB8IHV2ZWMyKDE5MiwgMTkyKSB8IHV2ZWMyKDI1NSwgMjU1KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3RvX3V2ZWMzCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwg
MSB8IDIgfCA1IHwgOCB8IDExIHwgMTIgfCA2NiB8IDE5MiB8IDI1NSBdOworCQkJb3V0cHV0IHV2
ZWMzIG91dDAgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygyLCAy
LCAyKSB8IHV2ZWMzKDUsIDUsIDUpIHwgdXZlYzMoOCwgOCwgOCkgfCB1dmVjMygxMSwgMTEsIDEx
KSB8IHV2ZWMzKDEyLCAxMiwgMTIpIHwgdXZlYzMoNjYsIDY2LCA2NikgfCB1dmVjMygxOTIsIDE5
MiwgMTkyKSB8IHV2ZWMzKDI1NSwgMjU1LCAyNTUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxIHwgMiB8IDUgfCA4IHwg
MTEgfCAxMiB8IDY2IHwgMTkyIHwgMjU1IF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZl
YzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDIsIDIsIDIsIDIpIHwg
dXZlYzQoNSwgNSwgNSwgNSkgfCB1dmVjNCg4LCA4LCA4LCA4KSB8IHV2ZWM0KDExLCAxMSwgMTEs
IDExKSB8IHV2ZWM0KDEyLCAxMiwgMTIsIDEyKSB8IHV2ZWM0KDY2LCA2NiwgNjYsIDY2KSB8IHV2
ZWM0KDE5MiwgMTkyLCAxOTIsIDE5MikgfCB1dmVjNCgyNTUsIDI1NSwgMjU1LCAyNTUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX3V2
ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9
IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91
dHB1dCB1dmVjMiBvdXQwID0gWyB1dmVjMigwLCAwKSB8IHV2ZWMyKDIsIDIpIHwgdXZlYzIoMywg
MykgfCB1dmVjMig4LCA4KSB8IHV2ZWMyKDksIDkpIHwgdXZlYzIoMTIsIDEyKSB8IHV2ZWMyKDEw
LCAxMCkgfCB1dmVjMig0NSwgNDUpIHwgdXZlYzIoMTkzLCAxOTMpIHwgdXZlYzIoMjU1LCAyNTUp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1
dmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50
X3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50
IGluMCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsK
KwkJCW91dHB1dCB1dmVjMyBvdXQwID0gWyB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDIsIDIsIDIp
IHwgdXZlYzMoMywgMywgMykgfCB1dmVjMyg4LCA4LCA4KSB8IHV2ZWMzKDksIDksIDkpIHwgdXZl
YzMoMTIsIDEyLCAxMikgfCB1dmVjMygxMCwgMTAsIDEwKSB8IHV2ZWMzKDQ1LCA0NSwgNDUpIHwg
dXZlYzMoMTkzLCAxOTMsIDE5MykgfCB1dmVjMygyNTUsIDI1NSwgMjU1KSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b191dmVjNAorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDAgfCAy
IHwgMyB8IDggfCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1IF07CisJCQlvdXRwdXQgdXZl
YzQgb3V0MCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgyLCAyLCAyLCAyKSB8IHV2ZWM0
KDMsIDMsIDMsIDMpIHwgdXZlYzQoOCwgOCwgOCwgOCkgfCB1dmVjNCg5LCA5LCA5LCA5KSB8IHV2
ZWM0KDEyLCAxMiwgMTIsIDEyKSB8IHV2ZWM0KDEwLCAxMCwgMTAsIDEwKSB8IHV2ZWM0KDQ1LCA0
NSwgNDUsIDQ1KSB8IHV2ZWM0KDE5MywgMTkzLCAxOTMsIDE5MykgfCB1dmVjNCgyNTUsIDI1NSwg
MjU1LCAyNTUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSB1dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBib29sX3RvX3V2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgdXZlYzIgb3V0MCA9
IFsgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF90b191dmVjMworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJ
b3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMCwgMCwgMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMz
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9f
dXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4w
ID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0gWyB1dmVjNCgxLCAx
LCAxLCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisKK2VuZCAjIHNjYWxhcl90b192ZWN0b3IKK2dyb3VwIHZlY3Rvcl90
b19zY2FsYXIgIlZlY3RvciB0byBTY2FsYXIgQ29udmVyc2lvbnMiCisKKwljYXNlIHZlYzJfdG9f
ZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4w
ID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUp
IHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOwor
CQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBm
bG9hdChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMy
X3RvX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBp
bjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4y
NSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07
CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX2Jvb2wKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAu
MCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIu
MCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IGJv
b2wgb3V0MCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fZmxvYXQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAg
PSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX3RvX2ludAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUs
IDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3
NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwg
MCB8IC0zMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB2ZWMzX3RvX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUx
LjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOwor
CQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVl
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBi
b29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzRf
dG9fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQg
aW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4x
MjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8
IC0wLjUgfCAtMzIuMCB8IC0wLjc1IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8
IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUs
IDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgaW50IG91
dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgy
NSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGJv
b2wgb3V0MCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX2Zsb2F0CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2
ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8
IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMC4w
IHwgLTMyLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGl2ZWMyX3RvX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIo
MCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGludCBv
dXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzJfdG9fYm9vbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEs
IDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJ
b3V0cHV0IGJvb2wgb3V0MCA9IFsgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2Ug
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJv
b2woaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzNf
dG9fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMz
IGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAt
NCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBm
bG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAwLjAgfCAtMzIuMCB8IDAuMCBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzNfdG9faW50CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMz
KDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMy
LCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAg
fCAxIHwgMCB8IC0zMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpdmVjM190b19ib29sCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkg
fCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDAp
IF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUg
fCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gYm9vbChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpdmVjNF90b19mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAwLjAgfCAt
MzIuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgaXZlYzRfdG9faW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkg
fCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgw
LCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAtMzIgfCAw
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
bnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzRf
dG9fYm9vbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQg
aW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwg
LTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkg
XTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8
IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHV2ZWMyX3RvX2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCB1dmVjMiBpbjAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAyKSB8
IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBb
IDAuMCB8IDEuMCB8IDAuMCB8IDMyLjAgfCAwLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWMyX3RvX2ludAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzIgaW4wID0gWyB1dmVjMigwLCAwKSB8IHV2ZWMy
KDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwgMCkgXTsKKwkJ
CW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgMzIgfCAwIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbnQoaW4wKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzJfdG9fYm9vbAorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzIgaW4wID0gWyB1dmVjMigwLCAw
KSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwg
MCkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1
ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHV2ZWMzX3RvX2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCB1dmVjMyBpbjAgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVj
MygwLCAyLCA0KSB8IHV2ZWMzKDMyLCA2NCwgNTEpIHwgdXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91
dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAwLjAgfCAzMi4wIHwgMC4wIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmbG9hdChpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjM190b19pbnQK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWMzIGluMCA9IFsg
dXZlYzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMo
MzIsIDY0LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAw
IHwgMSB8IDAgfCAzMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSB1dmVjM190b19ib29sCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB1dmVjMyBpbjAgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkg
fCB1dmVjMygwLCAyLCA0KSB8IHV2ZWMzKDMyLCA2NCwgNTEpIHwgdXZlYzMoMCwgMCwgMCkgXTsK
KwkJCW91dHB1dCBib29sIG91dDAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZh
bHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2
ZWM0X3RvX2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1
dmVjNCBpbjAgPSBbIHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkgfCB1dmVj
NCgwLCAyLCA0LCA5KSB8IHV2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAsIDAsIDAp
IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgMC4wIHwgMzIuMCB8IDAu
MCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
ZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZl
YzRfdG9faW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVj
NCBpbjAgPSBbIHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkgfCB1dmVjNCgw
LCAyLCA0LCA5KSB8IHV2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07
CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IDMyIHwgMCBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW50KGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWM0X3RvX2Jvb2wKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWM0IGluMCA9IFsgdXZlYzQo
MCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZl
YzQoMzIsIDY0LCA1MSwgMjQpIHwgdXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBib29s
IG91dDAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2Zsb2F0CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1
dCBmbG9hdCBvdXQwID0gWyAxLjAgfCAwLjAgfCAwLjAgfCAxLjAgfCAwLjAgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZsb2F0KGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2ludAorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVj
Mih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
aW50IG91dDAgPSBbIDEgfCAwIHwgMCB8IDEgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9fYm9vbAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwg
dHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0
cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYm9vbChpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b19mbG9hdAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
dHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDEuMCB8IDAuMCB8IDAuMCB8
IDEuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgYnZlYzNfdG9faW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
aW50IG91dDAgPSBbIDEgfCAwIHwgMCB8IDEgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfdG9fYm9vbAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwg
ZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJvb2woaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgYnZlYzRfdG9fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDEuMCB8IDAu
MCB8IDAuMCB8IDEuMCB8IDAuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gZmxvYXQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYnZlYzRfdG9faW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8
IDAgfCAwIHwgMSB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBidmVjNF90b19ib29sCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBib29sKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfdG9fdWludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigx
LjAsIDEuMjUpIHwgdmVjMigwLjUsIDIuMjUpIHwgdmVjMigzMi4wLCA2NC4wKSB8IHZlYzIoMC43
NSwgMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IHVpbnQgb3V0MCA9IFsgMCB8IDEgfCAw
IHwgMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSB1aW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZlYzNfdG9fdWludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEu
MTI1KSB8IHZlYzMoMC41LCAyLjI1LCA0Ljg3NSkgfCB2ZWMzKDMyLjAsIDY0LjAsIDUxLjApIHwg
dmVjMygwLjc1LCAwLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1
dCB1aW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IDMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX3VpbnQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAw
Ljc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgwLjUsIDIu
MjUsIDQuODc1LCA5LjApIHwgdmVjNCgzMi4wLCA2NC4wLCA1MS4wLCAyNC4wKSB8IHZlYzQoMC43
NSwgMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQg
dWludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAzMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHVpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzJfdG9fdWludAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMikgfCBpdmVjMigzMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsK
KwkJCW91dHB1dCB1aW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IDMyIHwgMCBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdWludChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190b191aW50CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMz
KDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAyLCA0KSB8IGl2ZWMzKDMyLCA2
NCwgNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCB1aW50IG91dDAgPSBbIDAgfCAx
IHwgMCB8IDMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpdmVjNF90b191aW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwg
MSkgfCBpdmVjNCgwLCAyLCA0LCA5KSB8IGl2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IGl2ZWM0KDAs
IDAsIDAsIDApIF07CisJCQlvdXRwdXQgdWludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAzMiB8IDAg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHVp
bnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzJf
dG9fdWludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzIg
aW4wID0gWyB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigz
MiwgNjQpIHwgdXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCB1aW50IG91dDAgPSBbIDAgfCAxIHwg
MCB8IDMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB1dmVjM190b191aW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCB1dmVjMyBpbjAgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVj
MygwLCAyLCA0KSB8IHV2ZWMzKDMyLCA2NCwgNTEpIHwgdXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91
dHB1dCB1aW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IDMyIHwgMCBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjNF90b191aW50CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVjNCBpbjAgPSBbIHV2ZWM0KDAsIDAs
IDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkgfCB1dmVjNCgwLCAyLCA0LCA5KSB8IHV2ZWM0KDMy
LCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgdWludCBvdXQw
ID0gWyAwIHwgMSB8IDAgfCAzMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IHVpbnQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9fdWludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdWludCBvdXQwID0gWyAxIHwgMCB8
IDAgfCAxIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBidmVjM190b191aW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
dWludCBvdXQwID0gWyAxIHwgMCB8IDAgfCAxIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdWludChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90b191aW50CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB1aW50
IG91dDAgPSBbIDEgfCAwIHwgMCB8IDEgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1aW50KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKworZW5kICMgdmVjdG9yX3RvX3NjYWxhcgorZ3JvdXAgdmVjdG9yX2ls
bGVnYWwgIklsbGVnYWwgVmVjdG9yIENvbnZlcnNpb25zIgorCisJY2FzZSB2ZWMyX3RvX3ZlYzMK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXZlYzIgaW4wID0gdmVjMigwLjAs
IDAuNSk7CisJCQkJdmVjMyBvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCWl2ZWMzIG91dDAg
PSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2
ZWMyX3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMyIGlu
MCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCXV2ZWMzIG91dDAgPSB1dmVjMyhpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX2J2ZWMzCisJCXZlcnNp
b24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOwor
CQkJCWJ2ZWMzIG91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB2ZWMyX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCXZlYzIgaW4wID0gdmVjMigwLjAsIDAuNSk7CisJCQkJdmVjNCBvdXQwID0gdmVjNChp
bjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX2l2
ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIo
MC4wLCAwLjUpOworCQkJCWl2ZWM0IG91dDAgPSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQl2ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCXV2ZWM0
IG91dDAgPSB1dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB2ZWMyX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl2
ZWMyIGluMCA9IHZlYzIoMC4wLCAwLjUpOworCQkJCWJ2ZWM0IG91dDAgPSBidmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b192ZWMzCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpdmVjMiBpbjAgPSBpdmVjMigwLCAw
KTsKKwkJCQl2ZWMzIG91dDAgPSB2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlpdmVjMiBpbjAgPSBpdmVjMigwLCAwKTsKKwkJCQlpdmVjMyBvdXQwID0gaXZl
YzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzJf
dG9fdXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMyIGluMCA9
IGl2ZWMyKDAsIDApOworCQkJCXV2ZWMzIG91dDAgPSB1dmVjMyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjMl90b19idmVjMworCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJaXZlYzIgaW4wID0gaXZlYzIoMCwgMCk7CisJCQkJYnZl
YzMgb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGl2ZWMyX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWl2ZWMyIGluMCA9IGl2ZWMyKDAsIDApOworCQkJCXZlYzQgb3V0MCA9IHZlYzQoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzJfdG9faXZlYzQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMyIGluMCA9IGl2ZWMyKDAsIDAp
OworCQkJCWl2ZWM0IG91dDAgPSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpdmVjMl90b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJaXZlYzIgaW4wID0gaXZlYzIoMCwgMCk7CisJCQkJdXZlYzQgb3V0MCA9IHV2
ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMy
X3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpdmVjMiBpbjAg
PSBpdmVjMigwLCAwKTsKKwkJCQlidmVjNCBvdXQwID0gYnZlYzQoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzJfdG9fdmVjMworCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJdXZlYzIgaW4wID0gdXZlYzIoMCwgMCk7CisJCQkJdmVj
MyBvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB1dmVjMl90b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
dXZlYzIgaW4wID0gdXZlYzIoMCwgMCk7CisJCQkJaXZlYzMgb3V0MCA9IGl2ZWMzKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWMyX3RvX3V2ZWMzCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl1dmVjMiBpbjAgPSB1dmVjMigwLCAw
KTsKKwkJCQl1dmVjMyBvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdXZlYzJfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCXV2ZWMyIGluMCA9IHV2ZWMyKDAsIDApOworCQkJCWJ2ZWMzIG91dDAgPSBi
dmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVj
Ml90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl1dmVjMiBpbjAg
PSB1dmVjMigwLCAwKTsKKwkJCQl2ZWM0IG91dDAgPSB2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWMyX3RvX2l2ZWM0CisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQl1dmVjMiBpbjAgPSB1dmVjMigwLCAwKTsKKwkJCQlpdmVj
NCBvdXQwID0gaXZlYzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdXZlYzJfdG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CXV2ZWMyIGluMCA9IHV2ZWMyKDAsIDApOworCQkJCXV2ZWM0IG91dDAgPSB1dmVjNChpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjMl90b19idmVjNAor
CQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJdXZlYzIgaW4wID0gdXZlYzIoMCwg
MCk7CisJCQkJYnZlYzQgb3V0MCA9IGJ2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWJ2ZWMyIGluMCA9IGJ2ZWMyKHRydWUsIGZhbHNlKTsKKwkJCQl2ZWMzIG91
dDAgPSB2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGJ2ZWMyX3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVj
MiBpbjAgPSBidmVjMih0cnVlLCBmYWxzZSk7CisJCQkJaXZlYzMgb3V0MCA9IGl2ZWMzKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX3V2ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAgPSBidmVjMih0
cnVlLCBmYWxzZSk7CisJCQkJdXZlYzMgb3V0MCA9IHV2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2J2ZWMzCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAgPSBidmVjMih0cnVlLCBmYWxzZSk7CisJ
CQkJYnZlYzMgb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGJ2ZWMyX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCWJ2ZWMyIGluMCA9IGJ2ZWMyKHRydWUsIGZhbHNlKTsKKwkJCQl2ZWM0IG91dDAgPSB2
ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMy
X3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAg
PSBidmVjMih0cnVlLCBmYWxzZSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX3V2ZWM0CisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAgPSBidmVjMih0cnVlLCBm
YWxzZSk7CisJCQkJdXZlYzQgb3V0MCA9IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlidmVjMiBpbjAgPSBidmVjMih0cnVlLCBmYWxzZSk7CisJCQkJYnZl
YzQgb3V0MCA9IGJ2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHZlYzNfdG9fdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
dmVjMyBpbjAgPSB2ZWMzKDAuMCwgMC41LCAwLjc1KTsKKwkJCQl2ZWM0IG91dDAgPSB2ZWM0KGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9faXZl
YzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXZlYzMgaW4wID0gdmVjMygw
LjAsIDAuNSwgMC43NSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fdXZlYzQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXZlYzMgaW4wID0gdmVjMygwLjAsIDAuNSwgMC43NSk7
CisJCQkJdXZlYzQgb3V0MCA9IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHZlYzNfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCXZlYzMgaW4wID0gdmVjMygwLjAsIDAuNSwgMC43NSk7CisJCQkJYnZlYzQgb3V0
MCA9IGJ2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGl2ZWMzX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMz
IGluMCA9IGl2ZWMzKDAsIDAsIDApOworCQkJCXZlYzQgb3V0MCA9IHZlYzQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzNfdG9faXZlYzQKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWl2ZWMzIGluMCA9IGl2ZWMzKDAsIDAsIDAp
OworCQkJCWl2ZWM0IG91dDAgPSBpdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpdmVjM190b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJaXZlYzMgaW4wID0gaXZlYzMoMCwgMCwgMCk7CisJCQkJdXZlYzQgb3V0MCA9
IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2
ZWMzX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpdmVjMyBp
bjAgPSBpdmVjMygwLCAwLCAwKTsKKwkJCQlidmVjNCBvdXQwID0gYnZlYzQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzNfdG9fdmVjNAorCQl2ZXJz
aW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJdXZlYzMgaW4wID0gdXZlYzMoMCwgMCwgMCk7
CisJCQkJdmVjNCBvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB1dmVjM190b19pdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJdXZlYzMgaW4wID0gdXZlYzMoMCwgMCwgMCk7CisJCQkJaXZlYzQgb3V0MCA9IGl2
ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWMz
X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQl1dmVjMyBpbjAg
PSB1dmVjMygwLCAwLCAwKTsKKwkJCQl1dmVjNCBvdXQwID0gdXZlYzQoaW4wKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzNfdG9fYnZlYzQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCXV2ZWMzIGluMCA9IHV2ZWMzKDAsIDAsIDApOwor
CQkJCWJ2ZWM0IG91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBidmVjM190b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlidmVjMyBpbjAgPSBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpOworCQkJCXZlYzQg
b3V0MCA9IHZlYzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYnZlYzNfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWJ2
ZWMzIGluMCA9IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSk7CisJCQkJaXZlYzQgb3V0MCA9IGl2
ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMz
X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlidmVjMyBpbjAg
PSBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpOworCQkJCXV2ZWM0IG91dDAgPSB1dmVjNChpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b19idmVj
NAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYnZlYzMgaW4wID0gYnZlYzMo
dHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKwkJCQlidmVjNCBvdXQwID0gYnZlYzQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCitlbmQgIyB2ZWN0b3JfaWxsZWdhbAorZ3Jv
dXAgdmVjdG9yX3RvX3ZlY3RvciAiVmVjdG9yIHRvIFZlY3RvciBDb252ZXJzaW9ucyIKKworCWNh
c2UgdmVjNF90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEu
MjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQo
LTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEs
IDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQo
MC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2
ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwg
MjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAu
MjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSB2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZl
YzRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgy
NSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZl
YzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUs
IC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVj
NF90b19pdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVj
NCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2l2ZWMzCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAs
IDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQo
LTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4w
KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkg
XTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dmVjNF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
dmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1
LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0z
Mi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAw
LjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIo
MCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZl
YzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGl2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZlYzRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVj
NCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2
ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWM0X3RvX2J2ZWMzCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgw
LjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZl
YzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAy
NC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4y
NSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF90b19idmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZl
YzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkg
fCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEu
MCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQs
IDAuMjUpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIHRydWUpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgx
LCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0
KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkgfCB2ZWM0KDAuMCwg
LTIuMCwgLTQuMCwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpdmVjNF90b192ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAs
IDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKDAuMCwgLTIuMCwgLTQuMCkg
fCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKDAuMCwgMC4wLCAwLjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMzKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX3ZlYzIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsg
aXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwg
OSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlv
dXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVj
MigwLjAsIC0yLjApIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDAuMCwgMC4wKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjNF90b19pdmVj
NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0g
WyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00
LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJ
CW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZl
YzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGl2ZWM0X3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwg
MSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBp
dmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAs
IDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwg
LTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpdmVjNF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVj
MigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBp
dmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgaXZlYzRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAx
KSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0
KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzRfdG9fYnZlYzMKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVj
NCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgYnZl
YzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX2J2ZWMyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMy
LCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91
dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzRfdG9f
dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzQgaW4w
ID0gWyB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDEsIDEsIDEsIDEpIHwgdXZlYzQoMCwgMiwg
NCwgOSkgfCB1dmVjNCgzMiwgNjQsIDUxLCAyNCkgfCB1dmVjNCgwLCAwLCAwLCAwKSBdOworCQkJ
b3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApIHwgdmVjNCgxLjAs
IDEuMCwgMS4wLCAxLjApIHwgdmVjNCgwLjAsIDIuMCwgNC4wLCA5LjApIHwgdmVjNCgzMi4wLCA2
NC4wLCA1MS4wLCAyNC4wKSB8IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjNF90b192ZWMzCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVjNCBpbjAgPSBbIHV2ZWM0
KDAsIDAsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkgfCB1dmVjNCgwLCAyLCA0LCA5KSB8IHV2
ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgdmVj
MyBvdXQwID0gWyB2ZWMzKDAuMCwgMC4wLCAwLjApIHwgdmVjMygxLjAsIDEuMCwgMS4wKSB8IHZl
YzMoMC4wLCAyLjAsIDQuMCkgfCB2ZWMzKDMyLjAsIDY0LjAsIDUxLjApIHwgdmVjMygwLjAsIDAu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB1dmVjNF90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCB1dmVjNCBpbjAgPSBbIHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkgfCB1
dmVjNCgwLCAyLCA0LCA5KSB8IHV2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAsIDAs
IDApIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoMS4w
LCAxLjApIHwgdmVjMigwLjAsIDIuMCkgfCB2ZWMyKDMyLjAsIDY0LjApIHwgdmVjMigwLjAsIDAu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZl
YzRfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2
ZWM0IGluMCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0
KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMjQpIHwgdXZlYzQoMCwgMCwgMCwgMCkg
XTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEs
IDEsIDEsIDEpIHwgaXZlYzQoMCwgMiwgNCwgOSkgfCBpdmVjNCgzMiwgNjQsIDUxLCAyNCkgfCBp
dmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gaXZlYzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdXZlYzRfdG9faXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHV2ZWM0IGluMCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAx
LCAxLCAxKSB8IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMjQpIHwgdXZl
YzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAw
KSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMiwgNCkgfCBpdmVjMygzMiwgNjQsIDUxKSB8
IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSB1dmVjNF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgdXZlYzQgaW4wID0gWyB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDEsIDEs
IDEsIDEpIHwgdXZlYzQoMCwgMiwgNCwgOSkgfCB1dmVjNCgzMiwgNjQsIDUxLCAyNCkgfCB1dmVj
NCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwg
aXZlYzIoMSwgMSkgfCBpdmVjMigwLCAyKSB8IGl2ZWMyKDMyLCA2NCkgfCBpdmVjMigwLCAwKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZl
YzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzRf
dG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWM0
IGluMCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAs
IDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMjQpIHwgdXZlYzQoMCwgMCwgMCwgMCkgXTsK
KwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB1dmVjNF90b19idmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdXZlYzQgaW4wID0gWyB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0
KDEsIDEsIDEsIDEpIHwgdXZlYzQoMCwgMiwgNCwgOSkgfCB1dmVjNCgzMiwgNjQsIDUxLCAyNCkg
fCB1dmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSB1dmVjNF90b19idmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdXZlYzQgaW4wID0gWyB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDEsIDEsIDEs
IDEpIHwgdXZlYzQoMCwgMiwgNCwgOSkgfCB1dmVjNCgzMiwgNjQsIDUxLCAyNCkgfCB1dmVjNCgw
LCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fdmVjNAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdmVjNCBv
dXQwID0gWyB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCkgfCB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCkgfCB2ZWM0KDAuMCwgMS4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkg
fCB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQw
ID0gWyB2ZWMzKDEuMCwgMC4wLCAwLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMC4w
LCAxLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVj
MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90
b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBp
bjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMS4wLCAwLjApIHwgdmVjMigw
LjAsIDAuMCkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigwLjAsIDAu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZl
YzRfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDEsIDAsIDAsIDEp
IHwgaXZlYzQoMCwgMCwgMCwgMSkgfCBpdmVjNCgwLCAxLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGJ2ZWM0X3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQw
ID0gWyBpdmVjMygxLCAwLCAwKSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMCwgMSwgMCkgfCBp
dmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgaXZl
YzIgb3V0MCA9IFsgaXZlYzIoMSwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDEpIHwgaXZl
YzIoMSwgMSkgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAg
PSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGJ2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2
ZWM0X3RvX2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
dmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1
ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gYnZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYnZlYzRfdG9fYnZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUs
IGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzRfdG9fdXZlYzQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41
LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgwLjUs
IDIuMjUsIDQuODc1LCA5LjApIHwgdmVjNCgzMi4wLCA2NC4wLCA1MS4wLCAyNC4wKSB8IHZlYzQo
MC43NSwgMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRw
dXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8
IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMjQpIHwgdXZlYzQoMCwgMCwg
MCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHZlYzRfdG9fdXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4y
NSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgwLjUsIDIuMjUsIDQuODc1LCA5LjApIHwgdmVjNCgzMi4w
LCA2NC4wLCA1MS4wLCAyNC4wKSB8IHZlYzQoMC43NSwgMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZlYzMoMCwgMCwg
MCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0LCA1MSkg
fCB1dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdmVjNF90b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZl
YzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KDAuNSwgMi4yNSwgNC44NzUsIDkuMCkg
fCB2ZWM0KDMyLjAsIDY0LjAsIDUxLjAsIDI0LjApIHwgdmVjNCgwLjc1LCAwLjAzMjI1ODA2NDUx
NjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB1dmVjMiBvdXQwID0gWyB1
dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwg
dXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGl2ZWM0X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwg
MSkgfCBpdmVjNCgwLCAyLCA0LCA5KSB8IGl2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IGl2ZWM0KDAs
IDAsIDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkg
fCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1
MSwgMjQpIHwgdXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwg
aXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAyLCA0LCA5KSB8IGl2ZWM0KDMyLCA2NCwgNTEs
IDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZl
YzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIs
IDY0LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgaXZlYzRfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBp
dmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDIsIDQsIDkpIHwgaXZlYzQoMzIsIDY0LCA1MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCB1dmVjMiBvdXQwID0gWyB1dmVj
MigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZl
YzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHV2ZWM0X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCB1dmVjNCBpbjAgPSBbIHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMSkg
fCB1dmVjNCgwLCAyLCA0LCA5KSB8IHV2ZWM0KDMyLCA2NCwgNTEsIDI0KSB8IHV2ZWM0KDAsIDAs
IDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1
dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwg
MjQpIHwgdXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWM0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHV2ZWM0X3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB1dmVjNCBpbjAgPSBbIHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZl
YzQoMSwgMSwgMSwgMSkgfCB1dmVjNCgwLCAyLCA0LCA5KSB8IHV2ZWM0KDMyLCA2NCwgNTEsIDI0
KSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZlYzMo
MCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0
LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdXZlYzRfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHV2ZWM0IGluMCA9IFsgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVj
NCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDIsIDQsIDkpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMjQp
IHwgdXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCB1dmVjMiBvdXQwID0gWyB1dmVjMigw
LCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIo
MCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGJ2ZWM0X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0gWyB1dmVjNCgxLCAwLCAw
LCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDEpIHwgdXZlYzQoMCwgMSwgMCwgMCkgfCB1dmVjNCgxLCAx
LCAxLCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF90b191dmVjMworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdXZlYzMg
b3V0MCA9IFsgdXZlYzMoMSwgMCwgMCkgfCB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDAsIDEsIDAp
IHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzRfdG9fdXZlYzIKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0
IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDEsIDApIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAxKSB8
IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwg
dmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMz
KC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwgMC41LCAw
Ljc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUp
IHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB2ZWMzX3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4w
LCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0KSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEu
MCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdmVjM190b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVj
MygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0z
Mi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQpIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBp
dmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwg
aXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGl2ZWMzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlYzNfdG9faXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAx
LjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQu
MCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0
KSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX3RvX2J2ZWMzCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVj
MygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAt
Mi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQw
ID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgdmVjM190b19idmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygx
LjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4w
LCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3
ODk0NzQpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIHRydWUpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGl2ZWMzX3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAx
LCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwg
MCwgMCkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2
ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIC0yLjAsIC00LjApIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190b192ZWMyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUx
KSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwg
MC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigwLjAsIC0yLjApIHwgdmVjMigtMzIuMCwgNjQu
MCkgfCB2ZWMyKDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpdmVjM190b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMo
MSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMz
KDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpdmVjM190b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZl
YzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVj
MigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM190b19idmVjMworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygw
LCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwg
NjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
MyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpdmVjM190b19idmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAw
LCAwKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBi
dmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdXZlYzNfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdXZlYzMgaW4wID0gWyB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDEs
IDEsIDEpIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVjMygzMiwgNjQsIDUxKSB8IHV2ZWMzKDAsIDAs
IDApIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuMCwgMC4wLCAwLjApIHwgdmVj
MygxLjAsIDEuMCwgMS4wKSB8IHZlYzMoMC4wLCAyLjAsIDQuMCkgfCB2ZWMzKDMyLjAsIDY0LjAs
IDUxLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjM190b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVjMyBpbjAgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZl
YzMoMSwgMSwgMSkgfCB1dmVjMygwLCAyLCA0KSB8IHV2ZWMzKDMyLCA2NCwgNTEpIHwgdXZlYzMo
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4wLCAwLjApIHwgdmVj
MigxLjAsIDEuMCkgfCB2ZWMyKDAuMCwgMi4wKSB8IHZlYzIoMzIuMCwgNjQuMCkgfCB2ZWMyKDAu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB1dmVjM190b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdXZlYzMgaW4wID0gWyB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMo
MCwgMiwgNCkgfCB1dmVjMygzMiwgNjQsIDUxKSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRw
dXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMz
KDAsIDIsIDQpIHwgaXZlYzMoMzIsIDY0LCA1MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzNfdG9faXZlYzIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWMzIGluMCA9IFsg
dXZlYzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMo
MzIsIDY0LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBb
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAyKSB8IGl2ZWMyKDMyLCA2NCkg
fCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdXZlYzNfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IHV2ZWMzIGluMCA9IFsgdXZlYzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8
IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjM190b19idmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzMgaW4wID0gWyB1
dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVjMygz
MiwgNjQsIDUxKSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRy
dWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b192ZWMzCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2
ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEu
MCwgMC4wLCAwLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMC4wLCAxLjAsIDAuMCkg
fCB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b192ZWMyCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMz
KHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDEuMCwg
MC4wKSB8IHZlYzIoMC4wLCAwLjApIHwgdmVjMigwLjAsIDEuMCkgfCB2ZWMyKDEuMCwgMS4wKSB8
IHZlYzIoMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGJ2ZWMzX3RvX2l2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlv
dXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMSwgMCwgMCkgfCBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDAsIDEsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfdG9faXZlYzIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsg
YnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVj
MigxLCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMSkgfCBpdmVjMigxLCAxKSB8IGl2ZWMy
KDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpdmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBidmVjM190b19idmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2
ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b19idmVjMgorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIGZh
bHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0
cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfdG9fdXZlYzMKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAw
Ljc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKDAuNSwgMi4yNSwgNC44NzUpIHwg
dmVjMygzMi4wLCA2NC4wLCA1MS4wKSB8IHZlYzMoMC43NSwgMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZlYzMoMCwgMCwgMCkg
fCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0LCA1MSkgfCB1
dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdmVjM190b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEu
MjUsIDEuMTI1KSB8IHZlYzMoMC41LCAyLjI1LCA0Ljg3NSkgfCB2ZWMzKDMyLjAsIDY0LjAsIDUx
LjApIHwgdmVjMygwLjc1LCAwLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJ
CW91dHB1dCB1dmVjMiBvdXQwID0gWyB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIo
MCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMzX3RvX3V2ZWMzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAs
IDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAyLCA0KSB8IGl2ZWMzKDMyLCA2NCwgNTEp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCB1dmVjMyBvdXQwID0gWyB1dmVjMygwLCAw
LCAwKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVjMygzMiwgNjQsIDUx
KSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSB1dmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpdmVjM190b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoMCwgMiwgNCkgfCBpdmVjMygzMiwgNjQsIDUxKSB8IGl2ZWMzKDAsIDAsIDAp
IF07CisJCQlvdXRwdXQgdXZlYzIgb3V0MCA9IFsgdXZlYzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8
IHV2ZWMyKDAsIDIpIHwgdXZlYzIoMzIsIDY0KSB8IHV2ZWMyKDAsIDApIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMihpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1dmVjM190b191dmVjMworCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdXZlYzMgaW4wID0gWyB1dmVj
MygwLCAwLCAwKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVjMygzMiwg
NjQsIDUxKSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZl
YzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIs
IDY0LCA1MSkgfCB1dmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzNfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWMzIGluMCA9IFsgdXZlYzMoMCwgMCwgMCkgfCB1dmVj
MygxLCAxLCAxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0LCA1MSkgfCB1dmVjMygw
LCAwLCAwKSBdOworCQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIo
MSwgMSkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfdG9fdXZl
YzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9
IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB1dmVjMyBvdXQwID0gWyB1
dmVjMygxLCAwLCAwKSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMCwgMSwgMCkgfCB1dmVjMygx
LCAxLCAxKSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBidmVjM190b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFs
c2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworCQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDEsIDApIHwgdXZlYzIoMCwgMCkg
fCB1dmVjMigwLCAxKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfdG9fdmVjMgorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4w
LCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4w
LCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVj
MiBvdXQwID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwg
LTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
dmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMy
X3RvX2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMy
IGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0y
LjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
XTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwg
aXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl90b19idmVjMgorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIo
MC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0z
Mi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQg
YnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBi
dmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2
ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMy
X3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMy
IGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMy
KC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIo
MC4wLCAwLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMyKDAuMCwgLTIuMCkgfCB2ZWMyKC0zMi4w
LCA2NC4wKSB8IHZlYzIoMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwg
MSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlv
dXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAs
IC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMyX3RvX2J2ZWMyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAs
IDApIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB1dmVjMl90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCB1dmVjMiBpbjAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwgMSkg
fCB1dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSBdOworCQkJb3V0cHV0
IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDEuMCwgMS4wKSB8IHZlYzIoMC4w
LCAyLjApIHwgdmVjMigzMi4wLCA2NC4wKSB8IHZlYzIoMC4wLCAwLjApIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHV2ZWMyX3RvX2l2ZWMyCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVjMiBpbjAgPSBbIHV2ZWMy
KDAsIDApIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVj
MigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIo
MSwgMSkgfCBpdmVjMigwLCAyKSB8IGl2ZWMyKDMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXZlYzJfdG9fYnZl
YzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWMyIGluMCA9
IFsgdXZlYzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDAsIDIpIHwgdXZlYzIoMzIsIDY0
KSB8IHV2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl90b192ZWMyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZh
bHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0
cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAg
PSBbIHZlYzIoMS4wLCAwLjApIHwgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZl
YzIoMS4wLCAxLjApIHwgdmVjMigwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9faXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBb
IGl2ZWMyKDEsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAxKSB8IGl2ZWMyKDEsIDEpIHwg
aXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGl2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGJ2ZWMyX3RvX2J2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3RvX3V2ZWMyCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2
ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuNSwgMi4yNSkgfCB2ZWMyKDMyLjAsIDY0LjApIHwgdmVj
MigwLjc1LCAwLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdXZlYzIgb3V0MCA9IFsgdXZl
YzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDAsIDIpIHwgdXZlYzIoMzIsIDY0KSB8IHV2
ZWMyKDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSB1dmVjMihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpdmVjMl90b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
MikgfCBpdmVjMigzMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCB1dmVjMiBvdXQw
ID0gWyB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwg
NjQpIHwgdXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHV2ZWMyX3RvX3V2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCB1dmVjMiBpbjAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwgMSkgfCB1
dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSBdOworCQkJb3V0cHV0IHV2
ZWMyIG91dDAgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAyKSB8IHV2
ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzJfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2
ZWMyKDEsIDApIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAxKSB8IHV2ZWMyKDEsIDEpIHwgdXZl
YzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IHV2ZWMyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwor
ZW5kICMgdmVjdG9yX3RvX3ZlY3RvcgorZ3JvdXAgc2NhbGFyX3RvX21hdHJpeCAiU2NhbGFyIHRv
IE1hdHJpeCBDb252ZXJzaW9ucyIKKworCWNhc2UgZmxvYXRfdG9fbWF0NAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAy
LjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0
IG1hdDQgb3V0MCA9IFsgbWF0NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NCgxLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxLjApIHwgbWF0NCgyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyLjApIHwgbWF0NCgzLjUs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMy41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDMuNSwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAzLjUpIHwgbWF0NCgtMC41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0wLjUs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgLTAuNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMC41KSB8IG1h
dDQoLTguMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTguMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
LTguMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTguMjUpIHwgbWF0NCgtMjAuMTI1LCAwLjAsIDAu
MCwgMC4wLCAwLjAsIC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIwLjEyNSwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAtMjAuMTI1KSB8IG1hdDQoMzYuODEyNSwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAzNi44MTI1LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDM2LjgxMjUsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMzYuODEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IG1hdDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgZmxvYXRfdG9fbWF0NHgzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4y
NSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4
MygwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wKSB8IG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygyLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAw
LjAsIDAuMCwgMi4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygzLjUsIDAuMCwgMC4wLCAwLjAs
IDMuNSwgMC4wLCAwLjAsIDAuMCwgMy41LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygtMC41LCAw
LjAsIDAuMCwgMC4wLCAtMC41LCAwLjAsIDAuMCwgMC4wLCAtMC41LCAwLjAsIDAuMCwgMC4wKSB8
IG1hdDR4MygtOC4yNSwgMC4wLCAwLjAsIDAuMCwgLTguMjUsIDAuMCwgMC4wLCAwLjAsIC04LjI1
LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygtMjAuMTI1LCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1
LCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygzNi44MTI1
LCAwLjAsIDAuMCwgMC4wLCAzNi44MTI1LCAwLjAsIDAuMCwgMC4wLCAzNi44MTI1LCAwLjAsIDAu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gbWF0NHgzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGZsb2F0X3RvX21hdDR4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUg
fCAtMjAuMTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IG1hdDR4MiBvdXQwID0gWyBtYXQ0eDIo
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDEuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MigyLjAsIDAuMCwgMC4wLCAy
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoMy41LCAwLjAsIDAuMCwgMy41LCAwLjAs
IDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKC0wLjUsIDAuMCwgMC4wLCAtMC41LCAwLjAsIDAuMCwg
MC4wLCAwLjApIHwgbWF0NHgyKC04LjI1LCAwLjAsIDAuMCwgLTguMjUsIDAuMCwgMC4wLCAwLjAs
IDAuMCkgfCBtYXQ0eDIoLTIwLjEyNSwgMC4wLCAwLjAsIC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAs
IDAuMCkgfCBtYXQ0eDIoMzYuODEyNSwgMC4wLCAwLjAsIDM2LjgxMjUsIDAuMCwgMC4wLCAwLjAs
IDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBmbG9hdF90b19tYXQzeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1IHwg
LTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBtYXQzeDQgb3V0MCA9IFsgbWF0M3g0KDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjApIHwgbWF0M3g0KDIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMi4wLCAwLjApIHwgbWF0M3g0KDMuNSwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAzLjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMy41LCAwLjApIHwgbWF0M3g0KC0wLjUsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgLTAuNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMC41LCAwLjApIHwgbWF0
M3g0KC04LjI1LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC04LjI1LCAwLjAsIDAuMCwgMC4wLCAwLjAs
IC04LjI1LCAwLjApIHwgbWF0M3g0KC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIwLjEy
NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1LCAwLjApIHwgbWF0M3g0KDM2LjgxMjUsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMzYuODEyNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAzNi44MTI1LCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQzeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZmxvYXRfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
ZmxvYXQgaW4wID0gWyAwLjAgfCAxLjAgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTguMjUgfCAtMjAu
MTI1IHwgMzYuODEyNSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDMoMS4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDIuMCwgMC4wLCAwLjAsIDAuMCwg
Mi4wLCAwLjAsIDAuMCwgMC4wLCAyLjApIHwgbWF0MygzLjUsIDAuMCwgMC4wLCAwLjAsIDMuNSwg
MC4wLCAwLjAsIDAuMCwgMy41KSB8IG1hdDMoLTAuNSwgMC4wLCAwLjAsIDAuMCwgLTAuNSwgMC4w
LCAwLjAsIDAuMCwgLTAuNSkgfCBtYXQzKC04LjI1LCAwLjAsIDAuMCwgMC4wLCAtOC4yNSwgMC4w
LCAwLjAsIDAuMCwgLTguMjUpIHwgbWF0MygtMjAuMTI1LCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1
LCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1KSB8IG1hdDMoMzYuODEyNSwgMC4wLCAwLjAsIDAuMCwg
MzYuODEyNSwgMC4wLCAwLjAsIDAuMCwgMzYuODEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfdG9fbWF0M3gyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIu
MCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQg
bWF0M3gyIG91dDAgPSBbIG1hdDN4MigwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1h
dDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDN4MigyLjAsIDAuMCwgMC4w
LCAyLjAsIDAuMCwgMC4wKSB8IG1hdDN4MigzLjUsIDAuMCwgMC4wLCAzLjUsIDAuMCwgMC4wKSB8
IG1hdDN4MigtMC41LCAwLjAsIDAuMCwgLTAuNSwgMC4wLCAwLjApIHwgbWF0M3gyKC04LjI1LCAw
LjAsIDAuMCwgLTguMjUsIDAuMCwgMC4wKSB8IG1hdDN4MigtMjAuMTI1LCAwLjAsIDAuMCwgLTIw
LjEyNSwgMC4wLCAwLjApIHwgbWF0M3gyKDM2LjgxMjUsIDAuMCwgMC4wLCAzNi44MTI1LCAwLjAs
IDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IG1hdDN4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBmbG9hdF90b19tYXQyeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGZsb2F0IGluMCA9IFsgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC04LjI1IHwg
LTIwLjEyNSB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgxLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoMi4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDIuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDMuNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAz
LjUsIDAuMCwgMC4wKSB8IG1hdDJ4NCgtMC41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0wLjUsIDAu
MCwgMC4wKSB8IG1hdDJ4NCgtOC4yNSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtOC4yNSwgMC4wLCAw
LjApIHwgbWF0Mng0KC0yMC4xMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIwLjEyNSwgMC4wLCAw
LjApIHwgbWF0Mng0KDM2LjgxMjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMzYuODEyNSwgMC4wLCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQyeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZmxvYXRfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0y
MC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgbWF0MngzIG91dDAgPSBbIG1hdDJ4MygwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wKSB8IG1hdDJ4MygyLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wKSB8IG1hdDJ4Mygz
LjUsIDAuMCwgMC4wLCAwLjAsIDMuNSwgMC4wKSB8IG1hdDJ4MygtMC41LCAwLjAsIDAuMCwgMC4w
LCAtMC41LCAwLjApIHwgbWF0MngzKC04LjI1LCAwLjAsIDAuMCwgMC4wLCAtOC4yNSwgMC4wKSB8
IG1hdDJ4MygtMjAuMTI1LCAwLjAsIDAuMCwgMC4wLCAtMjAuMTI1LCAwLjApIHwgbWF0MngzKDM2
LjgxMjUsIDAuMCwgMC4wLCAwLjAsIDM2LjgxMjUsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF90b19tYXQyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8IDEuMCB8
IDIuMCB8IDMuNSB8IC0wLjUgfCAtOC4yNSB8IC0yMC4xMjUgfCAzNi44MTI1IF07CisJCQlvdXRw
dXQgbWF0MiBvdXQwID0gWyBtYXQyKDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQyKDEuMCwgMC4w
LCAwLjAsIDEuMCkgfCBtYXQyKDIuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQyKDMuNSwgMC4wLCAw
LjAsIDMuNSkgfCBtYXQyKC0wLjUsIDAuMCwgMC4wLCAtMC41KSB8IG1hdDIoLTguMjUsIDAuMCwg
MC4wLCAtOC4yNSkgfCBtYXQyKC0yMC4xMjUsIDAuMCwgMC4wLCAtMjAuMTI1KSB8IG1hdDIoMzYu
ODEyNSwgMC4wLCAwLjAsIDM2LjgxMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGludF90b19tYXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEy
IHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCgy
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAyLjApIHwgbWF0NCg1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgNS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDUuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA1LjApIHwgbWF0
NCg4LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgOC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDguMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCA4LjApIHwgbWF0NCgxMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDExLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMTEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMS4w
KSB8IG1hdDQoLTEyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTEyLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgLTEyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTEyLjApIHwgbWF0NCgtNjYuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAtNjYuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtNjYuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAtNjYuMCkgfCBtYXQ0KC0xOTIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAt
MTkyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTE5Mi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0x
OTIuMCkgfCBtYXQ0KDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDI1NS4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fbWF0NHgzCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8
IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IG1h
dDR4MyBvdXQwID0gWyBtYXQ0eDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAs
IDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMi4wLCAwLjAsIDAu
MCwgMC4wLCAyLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMo
NS4wLCAwLjAsIDAuMCwgMC4wLCA1LjAsIDAuMCwgMC4wLCAwLjAsIDUuMCwgMC4wLCAwLjAsIDAu
MCkgfCBtYXQ0eDMoOC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDguMCwg
MC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMTEuMCwgMC4wLCAwLjAsIDAuMCwgMTEuMCwgMC4wLCAw
LjAsIDAuMCwgMTEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoLTEyLjAsIDAuMCwgMC4wLCAw
LjAsIC0xMi4wLCAwLjAsIDAuMCwgMC4wLCAtMTIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMo
LTY2LjAsIDAuMCwgMC4wLCAwLjAsIC02Ni4wLCAwLjAsIDAuMCwgMC4wLCAtNjYuMCwgMC4wLCAw
LjAsIDAuMCkgfCBtYXQ0eDMoLTE5Mi4wLCAwLjAsIDAuMCwgMC4wLCAtMTkyLjAsIDAuMCwgMC4w
LCAwLjAsIC0xOTIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMjU1LjAsIDAuMCwgMC4wLCAw
LjAsIDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCwgMC4wLCAwLjAsIDAuMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MyhpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fbWF0NHgy
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAw
IHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0
cHV0IG1hdDR4MiBvdXQwID0gWyBtYXQ0eDIoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjApIHwgbWF0NHgyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
KSB8IG1hdDR4MigyLjAsIDAuMCwgMC4wLCAyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0
eDIoNS4wLCAwLjAsIDAuMCwgNS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDguMCwg
MC4wLCAwLjAsIDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MigxMS4wLCAwLjAsIDAu
MCwgMTEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MigtMTIuMCwgMC4wLCAwLjAsIC0x
Mi4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKC02Ni4wLCAwLjAsIDAuMCwgLTY2LjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoLTE5Mi4wLCAwLjAsIDAuMCwgLTE5Mi4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDI1NS4wLCAwLjAsIDAuMCwgMjU1LjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfdG9fbWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2
IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBt
YXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAx
LjAsIDAuMCkgfCBtYXQzeDQoMi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAyLjAsIDAuMCkgfCBtYXQzeDQoNS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDUu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA1LjAsIDAuMCkgfCBtYXQzeDQoOC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCkgfCBtYXQzeDQoMTEu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDExLjAsIDAu
MCkgfCBtYXQzeDQoLTEyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTEyLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgLTEyLjAsIDAuMCkgfCBtYXQzeDQoLTY2LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
LTY2LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTY2LjAsIDAuMCkgfCBtYXQzeDQoLTE5Mi4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIC0xOTIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMTkyLjAsIDAu
MCkgfCBtYXQzeDQoMjU1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMjU1LjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMjU1LjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpbnRfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0xMiB8
IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQzKDEuMCwgMC4wLCAw
LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MygyLjAsIDAuMCwgMC4wLCAw
LjAsIDIuMCwgMC4wLCAwLjAsIDAuMCwgMi4wKSB8IG1hdDMoNS4wLCAwLjAsIDAuMCwgMC4wLCA1
LjAsIDAuMCwgMC4wLCAwLjAsIDUuMCkgfCBtYXQzKDguMCwgMC4wLCAwLjAsIDAuMCwgOC4wLCAw
LjAsIDAuMCwgMC4wLCA4LjApIHwgbWF0MygxMS4wLCAwLjAsIDAuMCwgMC4wLCAxMS4wLCAwLjAs
IDAuMCwgMC4wLCAxMS4wKSB8IG1hdDMoLTEyLjAsIDAuMCwgMC4wLCAwLjAsIC0xMi4wLCAwLjAs
IDAuMCwgMC4wLCAtMTIuMCkgfCBtYXQzKC02Ni4wLCAwLjAsIDAuMCwgMC4wLCAtNjYuMCwgMC4w
LCAwLjAsIDAuMCwgLTY2LjApIHwgbWF0MygtMTkyLjAsIDAuMCwgMC4wLCAwLjAsIC0xOTIuMCwg
MC4wLCAwLjAsIDAuMCwgLTE5Mi4wKSB8IG1hdDMoMjU1LjAsIDAuMCwgMC4wLCAwLjAsIDI1NS4w
LCAwLjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgaW50X3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMCB8IDEgfCAyIHwgNSB8IDggfCAxMSB8IC0x
MiB8IC02NiB8IC0xOTIgfCAyNTUgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0M3gy
KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDEuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wLCAwLjApIHwgbWF0M3gyKDIuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjApIHwgbWF0
M3gyKDUuMCwgMC4wLCAwLjAsIDUuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDguMCwgMC4wLCAwLjAs
IDguMCwgMC4wLCAwLjApIHwgbWF0M3gyKDExLjAsIDAuMCwgMC4wLCAxMS4wLCAwLjAsIDAuMCkg
fCBtYXQzeDIoLTEyLjAsIDAuMCwgMC4wLCAtMTIuMCwgMC4wLCAwLjApIHwgbWF0M3gyKC02Ni4w
LCAwLjAsIDAuMCwgLTY2LjAsIDAuMCwgMC4wKSB8IG1hdDN4MigtMTkyLjAsIDAuMCwgMC4wLCAt
MTkyLjAsIDAuMCwgMC4wKSB8IG1hdDN4MigyNTUuMCwgMC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IG1hdDN4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnRfdG9fbWF0Mng0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
bnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1
NSBdOworCQkJb3V0cHV0IG1hdDJ4NCBvdXQwID0gWyBtYXQyeDQoMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAx
LjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAs
IDAuMCkgfCBtYXQyeDQoNS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDUuMCwgMC4wLCAwLjApIHwg
bWF0Mng0KDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgx
MS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDExLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgtMTIuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAtMTIuMCwgMC4wLCAwLjApIHwgbWF0Mng0KC02Ni4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIC02Ni4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoLTE5Mi4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIC0xOTIuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDI1NS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDEx
IHwgLTEyIHwgLTY2IHwgLTE5MiB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBt
YXQyeDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQyeDMoMS4wLCAwLjAsIDAu
MCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoMi4wLCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAuMCkg
fCBtYXQyeDMoNS4wLCAwLjAsIDAuMCwgMC4wLCA1LjAsIDAuMCkgfCBtYXQyeDMoOC4wLCAwLjAs
IDAuMCwgMC4wLCA4LjAsIDAuMCkgfCBtYXQyeDMoMTEuMCwgMC4wLCAwLjAsIDAuMCwgMTEuMCwg
MC4wKSB8IG1hdDJ4MygtMTIuMCwgMC4wLCAwLjAsIDAuMCwgLTEyLjAsIDAuMCkgfCBtYXQyeDMo
LTY2LjAsIDAuMCwgMC4wLCAwLjAsIC02Ni4wLCAwLjApIHwgbWF0MngzKC0xOTIuMCwgMC4wLCAw
LjAsIDAuMCwgLTE5Mi4wLCAwLjApIHwgbWF0MngzKDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAyNTUu
MCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gbWF0MngzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGludF90b19tYXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpbnQgaW4wID0gWyAwIHwgMSB8IDIgfCA1IHwgOCB8IDExIHwgLTEyIHwgLTY2IHwgLTE5MiB8
IDI1NSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MigyLjAsIDAuMCwgMC4wLCAyLjApIHwg
bWF0Mig1LjAsIDAuMCwgMC4wLCA1LjApIHwgbWF0Mig4LjAsIDAuMCwgMC4wLCA4LjApIHwgbWF0
MigxMS4wLCAwLjAsIDAuMCwgMTEuMCkgfCBtYXQyKC0xMi4wLCAwLjAsIDAuMCwgLTEyLjApIHwg
bWF0MigtNjYuMCwgMC4wLCAwLjAsIC02Ni4wKSB8IG1hdDIoLTE5Mi4wLCAwLjAsIDAuMCwgLTE5
Mi4wKSB8IG1hdDIoMjU1LjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19tYXQ0CisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMCB8IDIgfCAzIHwgOCB8
IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAgPSBb
IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDQoMi4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4w
KSB8IG1hdDQoMy4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDMuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMy4wKSB8IG1hdDQoOC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
OC4wKSB8IG1hdDQoOS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDkuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCA5LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgOS4wKSB8IG1hdDQoMTIuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxMi4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEyLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMTIuMCkgfCBtYXQ0KDEwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMTAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEwLjApIHwgbWF0NCg0NS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDQ1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgNDUuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCA0NS4wKSB8IG1hdDQoMTkzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MTkzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMTkzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMTkz
LjApIHwgbWF0NCgyNTUuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAyNTUuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19tYXQ0eDMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8
IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDR4
MyBvdXQwID0gWyBtYXQ0eDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMi4wLCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAu
MCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMy4wLCAwLjAsIDAuMCwg
MC4wLCAzLjAsIDAuMCwgMC4wLCAwLjAsIDMuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoOC4w
LCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDguMCwgMC4wLCAwLjAsIDAuMCkg
fCBtYXQ0eDMoOS4wLCAwLjAsIDAuMCwgMC4wLCA5LjAsIDAuMCwgMC4wLCAwLjAsIDkuMCwgMC4w
LCAwLjAsIDAuMCkgfCBtYXQ0eDMoMTIuMCwgMC4wLCAwLjAsIDAuMCwgMTIuMCwgMC4wLCAwLjAs
IDAuMCwgMTIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMTAuMCwgMC4wLCAwLjAsIDAuMCwg
MTAuMCwgMC4wLCAwLjAsIDAuMCwgMTAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoNDUuMCwg
MC4wLCAwLjAsIDAuMCwgNDUuMCwgMC4wLCAwLjAsIDAuMCwgNDUuMCwgMC4wLCAwLjAsIDAuMCkg
fCBtYXQ0eDMoMTkzLjAsIDAuMCwgMC4wLCAwLjAsIDE5My4wLCAwLjAsIDAuMCwgMC4wLCAxOTMu
MCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMjU1LjAsIDAuMCwgMC4wLCAwLjAsIDI1NS4wLCAw
LjAsIDAuMCwgMC4wLCAyNTUuMCwgMC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3RvX21hdDR4MgorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDAgfCAyIHwgMyB8
IDggfCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1IF07CisJCQlvdXRwdXQgbWF0NHgyIG91
dDAgPSBbIG1hdDR4MigwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBt
YXQ0eDIoMi4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDMu
MCwgMC4wLCAwLjAsIDMuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig4LjAsIDAuMCwg
MC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoOS4wLCAwLjAsIDAuMCwgOS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDEyLjAsIDAuMCwgMC4wLCAxMi4wLCAwLjAs
IDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDEwLjAsIDAuMCwgMC4wLCAxMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjApIHwgbWF0NHgyKDQ1LjAsIDAuMCwgMC4wLCA0NS4wLCAwLjAsIDAuMCwgMC4wLCAw
LjApIHwgbWF0NHgyKDE5My4wLCAwLjAsIDAuMCwgMTkzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkg
fCBtYXQ0eDIoMjU1LjAsIDAuMCwgMC4wLCAyNTUuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgy
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdG9f
bWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGlu
MCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJ
CW91dHB1dCBtYXQzeDQgb3V0MCA9IFsgbWF0M3g0KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0M3g0KDIuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAyLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjApIHwgbWF0M3g0KDMu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAzLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMy4wLCAwLjAp
IHwgbWF0M3g0KDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgOC4wLCAwLjApIHwgbWF0M3g0KDkuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA5LjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgOS4wLCAwLjApIHwgbWF0M3g0KDEyLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMTIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMi4wLCAwLjApIHwgbWF0M3g0KDEwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMTAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMC4wLCAwLjApIHwg
bWF0M3g0KDQ1LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgNDUuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCA0NS4wLCAwLjApIHwgbWF0M3g0KDE5My4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDE5My4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDE5My4wLCAwLjApIHwgbWF0M3g0KDI1NS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDI1NS4wLCAwLjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDQoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19tYXQz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsg
MCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUgfCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1
dCBtYXQzIG91dDAgPSBbIG1hdDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCkgfCBtYXQzKDIuMCwgMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCwgMC4wLCAy
LjApIHwgbWF0MygzLjAsIDAuMCwgMC4wLCAwLjAsIDMuMCwgMC4wLCAwLjAsIDAuMCwgMy4wKSB8
IG1hdDMoOC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCwgMC4wLCAwLjAsIDguMCkgfCBtYXQz
KDkuMCwgMC4wLCAwLjAsIDAuMCwgOS4wLCAwLjAsIDAuMCwgMC4wLCA5LjApIHwgbWF0MygxMi4w
LCAwLjAsIDAuMCwgMC4wLCAxMi4wLCAwLjAsIDAuMCwgMC4wLCAxMi4wKSB8IG1hdDMoMTAuMCwg
MC4wLCAwLjAsIDAuMCwgMTAuMCwgMC4wLCAwLjAsIDAuMCwgMTAuMCkgfCBtYXQzKDQ1LjAsIDAu
MCwgMC4wLCAwLjAsIDQ1LjAsIDAuMCwgMC4wLCAwLjAsIDQ1LjApIHwgbWF0MygxOTMuMCwgMC4w
LCAwLjAsIDAuMCwgMTkzLjAsIDAuMCwgMC4wLCAwLjAsIDE5My4wKSB8IG1hdDMoMjU1LjAsIDAu
MCwgMC4wLCAwLjAsIDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19tYXQzeDIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8
IDMgfCA4IHwgOSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDN4
MiBvdXQwID0gWyBtYXQzeDIoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQzeDIo
Mi4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoMy4wLCAwLjAsIDAuMCwgMy4w
LCAwLjAsIDAuMCkgfCBtYXQzeDIoOC4wLCAwLjAsIDAuMCwgOC4wLCAwLjAsIDAuMCkgfCBtYXQz
eDIoOS4wLCAwLjAsIDAuMCwgOS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoMTIuMCwgMC4wLCAwLjAs
IDEyLjAsIDAuMCwgMC4wKSB8IG1hdDN4MigxMC4wLCAwLjAsIDAuMCwgMTAuMCwgMC4wLCAwLjAp
IHwgbWF0M3gyKDQ1LjAsIDAuMCwgMC4wLCA0NS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoMTkzLjAs
IDAuMCwgMC4wLCAxOTMuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDI1NS4wLCAwLjAsIDAuMCwgMjU1
LjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gbWF0M3gyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHVpbnRfdG9fbWF0Mng0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMCB8IDIgfCAzIHwgOCB8IDkgfCAxMiB8IDEwIHwgNDUg
fCAxOTMgfCAyNTUgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgyLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMi4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoMy4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDMuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDguMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAu
MCwgMC4wKSB8IG1hdDJ4NCg5LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgOS4wLCAwLjAsIDAuMCkg
fCBtYXQyeDQoMTIuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMi4wLCAwLjAsIDAuMCkgfCBtYXQy
eDQoMTAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxMC4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoNDUu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA0NS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoMTkzLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMTkzLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgyNTUuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAyNTUuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDQoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF90b19tYXQyeDMKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAwIHwgMiB8IDMgfCA4IHwg
OSB8IDEyIHwgMTAgfCA0NSB8IDE5MyB8IDI1NSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0g
WyBtYXQyeDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQyeDMoMi4wLCAwLjAs
IDAuMCwgMC4wLCAyLjAsIDAuMCkgfCBtYXQyeDMoMy4wLCAwLjAsIDAuMCwgMC4wLCAzLjAsIDAu
MCkgfCBtYXQyeDMoOC4wLCAwLjAsIDAuMCwgMC4wLCA4LjAsIDAuMCkgfCBtYXQyeDMoOS4wLCAw
LjAsIDAuMCwgMC4wLCA5LjAsIDAuMCkgfCBtYXQyeDMoMTIuMCwgMC4wLCAwLjAsIDAuMCwgMTIu
MCwgMC4wKSB8IG1hdDJ4MygxMC4wLCAwLjAsIDAuMCwgMC4wLCAxMC4wLCAwLjApIHwgbWF0Mngz
KDQ1LjAsIDAuMCwgMC4wLCAwLjAsIDQ1LjAsIDAuMCkgfCBtYXQyeDMoMTkzLjAsIDAuMCwgMC4w
LCAwLjAsIDE5My4wLCAwLjApIHwgbWF0MngzKDI1NS4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCwg
MC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gbWF0MngzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVpbnRfdG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
dWludCBpbjAgPSBbIDAgfCAyIHwgMyB8IDggfCA5IHwgMTIgfCAxMCB8IDQ1IHwgMTkzIHwgMjU1
IF07CisJCQlvdXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBt
YXQyKDIuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQyKDMuMCwgMC4wLCAwLjAsIDMuMCkgfCBtYXQy
KDguMCwgMC4wLCAwLjAsIDguMCkgfCBtYXQyKDkuMCwgMC4wLCAwLjAsIDkuMCkgfCBtYXQyKDEy
LjAsIDAuMCwgMC4wLCAxMi4wKSB8IG1hdDIoMTAuMCwgMC4wLCAwLjAsIDEwLjApIHwgbWF0Mig0
NS4wLCAwLjAsIDAuMCwgNDUuMCkgfCBtYXQyKDE5My4wLCAwLjAsIDAuMCwgMTkzLjApIHwgbWF0
MigyNTUuMCwgMC4wLCAwLjAsIDI1NS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX21hdDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1
dCBtYXQ0IG91dDAgPSBbIG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX3RvX21hdDR4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IG1hdDR4
MyBvdXQwID0gWyBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX3RvX21hdDR4MgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBd
OworCQkJb3V0cHV0IG1hdDR4MiBvdXQwID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gbWF0NHgyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGJvb2xfdG9fbWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgbWF0M3g0IG91
dDAgPSBbIG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3g0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJ
b3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMS4wKSB8IG1hdDMoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYm9vbF90b19tYXQzeDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9
IFsgbWF0M3gyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYm9vbF90b19tYXQyeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1
dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wKSB8IG1hdDJ4NCgwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1h
dDJ4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29s
X3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9v
bCBpbjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQy
eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQyIG91
dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoMC4wLCAwLjAsIDAuMCwgMC4w
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
bWF0MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisKK2VuZCAjIHNj
YWxhcl90b19tYXRyaXgKK2dyb3VwIG1hdHJpeF90b19tYXRyaXggIk1hdHJpeCB0byBNYXRyaXgg
Q29udmVyc2lvbnMiCisKKwljYXNlIG1hdDRfdG9fbWF0NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NCBpbjAgPSBbIG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MS4wKSB8IG1hdDQoNi41LCAzMi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMz
MzMsIDAuMDYyNSwgLTAuNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSwgOS45NzUs
IC02LjU0MiwgMC4wMTU2MjUsIDkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUs
IDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAz
MTI1LCAtMC4wMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSwgOS45NzUpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDRfdG9fbWF0NHgzCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0IGluMCA9IFsgbWF0
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUs
IDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAz
MTI1LCAtMC4wMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSwgOS45NzUpIF07CisJCQlvdXRw
dXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Myg2LjUsIDMyLjAsIDAuMTI1LCAx
Mi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgOS45
NzUsIC02LjU0MiwgMC4wMTU2MjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0eDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWF0NF90b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMz
LCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAxMjUsIDkuOTc1LCAt
Ni41NDIsIDAuMDE1NjI1LCA5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQ0eDIgb3V0MCA9IFsgbWF0
NHgyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig2LjUs
IDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSwgOS45NzUsIC02LjU0
MikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
YXQ0X3RvX21hdDN4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
bWF0NCBpbjAgPSBbIG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoNi41LCAzMi4w
LCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSwgLTAu
NzUsIC04LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSwgOS45NzUsIC02LjU0MiwgMC4wMTU2MjUsIDku
OTc1KSBdOworCQkJb3V0cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41
LCAzMi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAu
NSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQ0X3RvX21hdDMKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wID0gWyBtYXQ0KDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4w
MjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAx
MjUsIDkuOTc1LCAtNi41NDIsIDAuMDE1NjI1LCA5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQzIG91
dDAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkg
fCBtYXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAt
MC43NSwgLTguNDI1LCAwLjAzMTI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtYXQ0X3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgbWF0NCBpbjAgPSBbIG1hdDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
KSB8IG1hdDQoNi41LCAzMi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMs
IDAuMDYyNSwgLTAuNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSwgOS45NzUsIC02
LjU0MiwgMC4wMTU2MjUsIDkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDN4MiBvdXQwID0gWyBtYXQz
eDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41
LCAwLjAyMDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NF90b19tYXQyeDQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wID0gWyBtYXQ0KDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4w
MjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAx
MjUsIDkuOTc1LCAtNi41NDIsIDAuMDE1NjI1LCA5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQyeDQg
b3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8
IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywg
MC4wNjI1LCAtMC41KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gbWF0Mng0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hdDRfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBtYXQ0IGluMCA9IFsgbWF0NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0
NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1
LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1LCA5Ljk3NSwgLTYuNTQyLCAw
LjAxNTYyNSwgOS45NzUpIF07CisJCQlvdXRwdXQgbWF0MngzIG91dDAgPSBbIG1hdDJ4MygxLjAs
IDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41
LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQ0X3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDQgaW4wID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMz
MzMzLCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAxMjUsIDkuOTc1
LCAtNi41NDIsIDAuMDE1NjI1LCA5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1h
dDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMz
MzMzMzMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1hdDR4M190b19tYXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBtYXQ0eDMgaW4wID0gWyBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoNi41LCAzMi4wLCAwLjEyNSwgMTIu
NSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDkuOTc1
LCAtNi41NDIsIDAuMDE1NjI1KSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgxLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0NCg2LjUsIDMyLjAsIDAuMTI1LCAwLjAsIDEyLjUsIDAu
MDIwODMzMzMzMzMzMywgMC4wNjI1LCAwLjAsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDAuMCwg
OS45NzUsIC02LjU0MiwgMC4wMTU2MjUsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NHgzX3RvX21hdDR4MworCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NHgzIGluMCA9IFsgbWF0NHgzKDEuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
NHgzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43
NSwgLTguNDI1LCAwLjAzMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSkgXTsKKwkJCW91dHB1
dCBtYXQ0eDMgb3V0MCA9IFsgbWF0NHgzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKDYuNSwgMzIuMCwgMC4xMjUsIDEy
LjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCA5Ljk3
NSwgLTYuNTQyLCAwLjAxNTYyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtYXQ0eDNfdG9fbWF0NHgyCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBtYXQ0eDMgaW4wID0gWyBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoNi41
LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjc1LCAtOC40
MjUsIDAuMDMxMjUsIDkuOTc1LCAtNi41NDIsIDAuMDE1NjI1KSBdOworCQkJb3V0cHV0IG1hdDR4
MiBvdXQwID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0NHgyKDYuNSwgMzIuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1
LCA5Ljk3NSwgLTYuNTQyKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1hdDR4M190b19tYXQzeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IG1hdDR4MyBpbjAgPSBbIG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Myg2LjUsIDMy
LjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwg
MC4wMzEyNSwgOS45NzUsIC02LjU0MiwgMC4wMTU2MjUpIF07CisJCQlvdXRwdXQgbWF0M3g0IG91
dDAgPSBbIG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1LCAwLjAsIDEyLjUsIDAu
MDIwODMzMzMzMzMzMywgMC4wNjI1LCAwLjAsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDAuMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1h
dDN4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQ0
eDNfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0
NHgzIGluMCA9IFsgbWF0NHgzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4w
LCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAu
MDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCA5Ljk3NSwgLTYu
NTQyLCAwLjAxNTYyNSkgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMS4wLCAwLjAs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4x
MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
bWF0MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQ0
eDNfdG9fbWF0M3gyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBt
YXQ0eDMgaW4wID0gWyBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAw
LjAsIDEuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwg
MC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDkuOTc1LCAt
Ni41NDIsIDAuMDE1NjI1KSBdOworCQkJb3V0cHV0IG1hdDN4MiBvdXQwID0gWyBtYXQzeDIoMS4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41LCAwLjAy
MDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NHgzX3RvX21hdDJ4NAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NHgzIGluMCA9IFsgbWF0NHgzKDEuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
NHgzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43
NSwgLTguNDI1LCAwLjAzMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSkgXTsKKwkJCW91dHB1
dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wKSB8IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAwLjAsIDEyLjUsIDAuMDIwODMzMzMz
MzMzMywgMC4wNjI1LCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBtYXQyeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWF0NHgzX3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgbWF0NHgzIGluMCA9IFsgbWF0NHgzKDEuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKDYuNSwg
MzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1
LCAwLjAzMTI1LCA5Ljk3NSwgLTYuNTQyLCAwLjAxNTYyNSkgXTsKKwkJCW91dHB1dCBtYXQyeDMg
b3V0MCA9IFsgbWF0MngzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0MngzKDYu
NSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MngzKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDR4M190b19tYXQy
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0eDMgaW4wID0g
WyBtYXQ0eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAwLjAsIDAuMCkgfCBtYXQ0eDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMz
MzMzLCAwLjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDkuOTc1LCAtNi41NDIsIDAuMDE1
NjI1KSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjAp
IHwgbWF0Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMykgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NHgyX3RvX21hdDQKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDR4MiBpbjAgPSBbIG1hdDR4
MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoNi41LCAz
Mi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUsIDkuOTc1LCAtNi41NDIp
IF07CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkg
fCBtYXQ0KDYuNSwgMzIuMCwgMC4wLCAwLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wLCAw
LjAsIC0wLjc1LCAtOC40MjUsIDEuMCwgMC4wLCA5Ljk3NSwgLTYuNTQyLCAwLjAsIDEuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDQo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NHgyX3Rv
X21hdDR4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NHgy
IGluMCA9IFsgbWF0NHgyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8
IG1hdDR4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSwg
OS45NzUsIC02LjU0MikgXTsKKwkJCW91dHB1dCBtYXQ0eDMgb3V0MCA9IFsgbWF0NHgzKDEuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0NHgzKDYuNSwgMzIuMCwgMC4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMCwgLTAuNzUs
IC04LjQyNSwgMS4wLCA5Ljk3NSwgLTYuNTQyLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0eDMoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0NHgyX3RvX21hdDR4MgorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NHgyIGluMCA9IFsgbWF0NHgyKDEu
MCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig2LjUsIDMyLjAs
IDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSwgOS45NzUsIC02LjU0MikgXTsK
KwkJCW91dHB1dCBtYXQ0eDIgb3V0MCA9IFsgbWF0NHgyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMz
MywgLTAuNzUsIC04LjQyNSwgOS45NzUsIC02LjU0MikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQ0eDJfdG9fbWF0M3g0CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0eDIgaW4wID0gWyBtYXQ0eDIoMS4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDYuNSwgMzIuMCwg
MTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1LCA5Ljk3NSwgLTYuNTQyKSBdOwor
CQkJb3V0cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAzMi4wLCAw
LjAsIDAuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjAsIDAuMCwgLTAuNzUsIC04LjQyNSwg
MS4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQzeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWF0NHgyX3RvX21hdDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IG1hdDR4MiBpbjAgPSBbIG1hdDR4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCkgfCBtYXQ0eDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIC0w
Ljc1LCAtOC40MjUsIDkuOTc1LCAtNi41NDIpIF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0gWyBt
YXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2
LjUsIDMyLjAsIDAuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjAsIC0wLjc1LCAtOC40MjUs
IDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWF0NHgyX3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgbWF0NHgyIGluMCA9IFsgbWF0NHgyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wKSB8IG1hdDR4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUs
IC04LjQyNSwgOS45NzUsIC02LjU0MikgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0
M3gyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDYuNSwgMzIuMCwgMTIu
NSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3gyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDR4Ml90b19tYXQyeDQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDR4MiBpbjAgPSBbIG1hdDR4Migx
LjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoNi41LCAzMi4w
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUsIDkuOTc1LCAtNi41NDIpIF07
CisJCQlvdXRwdXQgbWF0Mng0IG91dDAgPSBbIG1hdDJ4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoNi41LCAzMi4wLCAwLjAsIDAuMCwgMTIuNSwgMC4w
MjA4MzMzMzMzMzMzLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtYXQ0eDJfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0eDIgaW4wID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDYuNSwgMzIuMCwgMTIuNSwgMC4w
MjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1LCA5Ljk3NSwgLTYuNTQyKSBdOworCQkJb3V0cHV0
IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBt
YXQyeDMoNi41LCAzMi4wLCAwLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MngzKGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDR4Ml90b19t
YXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0eDIgaW4w
ID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
NHgyKDYuNSwgMzIuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1LCA5Ljk3
NSwgLTYuNTQyKSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigxLjAsIDAuMCwgMC4w
LCAxLjApIHwgbWF0Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMykgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0M3g0X3RvX21hdDQK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDN4NCBpbjAgPSBb
IG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIw
ODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1
KSBdOworCQkJb3V0cHV0IG1hdDQgb3V0MCA9IFsgbWF0NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAp
IHwgbWF0NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywg
MC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1LCAwLjAsIDAuMCwg
MC4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQ0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1hdDN4NF90b19tYXQ0eDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IG1hdDN4NCBpbjAgPSBbIG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1
LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTgu
NDI1LCAwLjAzMTI1LCAtMC4wMTI1KSBdOworCQkJb3V0cHV0IG1hdDR4MyBvdXQwID0gWyBtYXQ0
eDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAs
IDAuMCkgfCBtYXQ0eDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAw
LjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0eDMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0M3g0X3RvX21hdDR4
MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0M3g0IGluMCA9
IFsgbWF0M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjApIHwgbWF0M3g0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4w
MjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAx
MjUpIF07CisJCQlvdXRwdXQgbWF0NHgyIG91dDAgPSBbIG1hdDR4MigxLjAsIDAuMCwgMC4wLCAx
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgz
MzMzMzMzMzMsIC0wLjc1LCAtOC40MjUsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDN4NF90b19tYXQzeDQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDN4NCBpbjAgPSBbIG1hdDN4NCgx
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
KSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMz
MywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1KSBdOworCQkJ
b3V0cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAzMi4wLCAwLjEy
NSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSwgLTAuNzUsIC04
LjQyNSwgMC4wMzEyNSwgLTAuMDEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtYXQzeDRfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0M3g0IGluMCA9IFsgbWF0M3g0KDEuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0M3g0KDYu
NSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0w
LjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAxMjUpIF07CisJCQlvdXRwdXQgbWF0MyBv
dXQwID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAp
IHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwg
LTAuNzUsIC04LjQyNSwgMC4wMzEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWF0M3g0X3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0M3g0IGluMCA9IFsgbWF0M3g0KDEuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0M3g0KDYu
NSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0w
LjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUsIC0wLjAxMjUpIF07CisJCQlvdXRwdXQgbWF0M3gy
IG91dDAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDN4Mig2
LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4MihpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQzeDRfdG9fbWF0
Mng0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzeDQgaW4w
ID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAzMi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAw
LjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwgLTAu
MDEyNSkgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43
MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41KSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mng0KGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDN4NF90b19tYXQyeDMKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDN4NCBpbjAgPSBbIG1h
dDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMz
MzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1LCAtMC4wMTI1KSBd
OworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAx
LjAsIDAuMCkgfCBtYXQyeDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMz
LCAwLjA2MjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQyeDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWF0M3g0X3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IG1hdDN4NCBpbjAgPSBbIG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1
LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAtMC41LCAtMC43NSwgLTgu
NDI1LCAwLjAzMTI1LCAtMC4wMTI1KSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0Migx
LjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMz
MykgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IG1hdDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0
M190b19tYXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQz
IGluMCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
KSB8IG1hdDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUs
IC0wLjc1LCAtOC40MjUsIDAuMDMxMjUpIF07CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0
KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIDAuMCwgMTIu
NSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIDAuMCwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1hdDNfdG9fbWF0NHgzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBtYXQzIGluMCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwg
MC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUpIF07CisJCQlv
dXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Myg2LjUsIDMyLjAsIDAuMTI1
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSwg
MC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDR4MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtYXQzX3RvX21hdDR4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgbWF0MyBpbjAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMz
MzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1KSBdOworCQkJb3V0cHV0IG1h
dDR4MiBvdXQwID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAw
LjApIHwgbWF0NHgyKDYuNSwgMzIuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTgu
NDI1LCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtYXQzX3RvX21hdDN4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgbWF0MyBpbjAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMz
MzMzMzMzMywgMC4wNjI1LCAtMC43NSwgLTguNDI1LCAwLjAzMTI1KSBdOworCQkJb3V0cHV0IG1h
dDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAzMi4wLCAwLjEyNSwgMC4wLCAx
Mi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgMC4wLCAtMC43NSwgLTguNDI1LCAwLjAzMTI1
LCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQzeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbWF0M190b19tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBtYXQzIGluMCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wKSB8IG1hdDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAw
LjA2MjUsIC0wLjc1LCAtOC40MjUsIDAuMDMxMjUpIF07CisJCQlvdXRwdXQgbWF0MyBvdXQwID0g
WyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0
Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUs
IC04LjQyNSwgMC4wMzEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWF0M190b19tYXQzeDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IG1hdDMgaW4wID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgz
MzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSkgXTsKKwkJCW91dHB1dCBt
YXQzeDIgb3V0MCA9IFsgbWF0M3gyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0
M3gyKDYuNSwgMzIuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1KSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3gy
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDNfdG9f
bWF0Mng0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzIGlu
MCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8
IG1hdDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0w
Ljc1LCAtOC40MjUsIDAuMDMxMjUpIF07CisJCQlvdXRwdXQgbWF0Mng0IG91dDAgPSBbIG1hdDJ4
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoNi41LCAz
Mi4wLCAwLjEyNSwgMC4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgMC4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mng0
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDNfdG9f
bWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzIGlu
MCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8
IG1hdDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0w
Ljc1LCAtOC40MjUsIDAuMDMxMjUpIF07CisJCQlvdXRwdXQgbWF0MngzIG91dDAgPSBbIG1hdDJ4
MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQzX3RvX21hdDIKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDMgaW4wID0gWyBtYXQzKDEuMCwgMC4wLCAw
LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNzUsIC04LjQyNSwgMC4wMzEyNSkg
XTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1h
dDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDN4Ml90b19tYXQ0CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzeDIgaW4wID0gWyBtYXQzeDIoMS4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41LCAwLjAy
MDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBt
YXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4wLCAwLjAsIDEy
LjUsIDAuMDIwODMzMzMzMzMzMywgMC4wLCAwLjAsIC0wLjc1LCAtOC40MjUsIDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1hdDN4Ml90b19tYXQ0eDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IG1hdDN4MiBpbjAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAxLjAs
IDAuMCwgMC4wKSB8IG1hdDN4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAu
NzUsIC04LjQyNSkgXTsKKwkJCW91dHB1dCBtYXQ0eDMgb3V0MCA9IFsgbWF0NHgzKDEuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
NHgzKDYuNSwgMzIuMCwgMC4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMCwgLTAuNzUsIC04
LjQyNSwgMS4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDN4Ml90b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDN4MiBpbjAgPSBbIG1hdDN4MigxLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDN4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMz
MzMzMywgLTAuNzUsIC04LjQyNSkgXTsKKwkJCW91dHB1dCBtYXQ0eDIgb3V0MCA9IFsgbWF0NHgy
KDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig2LjUsIDMy
LjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSwgMC4wLCAwLjApIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0eDIo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0M3gyX3Rv
X21hdDN4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0M3gy
IGluMCA9IFsgbWF0M3gyKDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDYu
NSwgMzIuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAtMC43NSwgLTguNDI1KSBdOworCQkJb3V0
cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAzMi4wLCAwLjAsIDAu
MCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjAsIDAuMCwgLTAuNzUsIC04LjQyNSwgMS4wLCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQzeDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWF0M3gyX3RvX21hdDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IG1hdDN4MiBpbjAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1h
dDN4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSkgXTsK
KwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4wLCAxMi41LCAwLjAyMDgzMzMz
MzMzMzMsIDAuMCwgLTAuNzUsIC04LjQyNSwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MyhpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQzeDJfdG9fbWF0M3gyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzeDIgaW4wID0gWyBtYXQzeDIoMS4wLCAw
LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgz
MzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJCQlvdXRwdXQgbWF0M3gyIG91dDAgPSBbIG1h
dDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDN4Mig2LjUsIDMyLjAsIDEy
LjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVj
aXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4MihpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQzeDJfdG9fbWF0Mng0CisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzeDIgaW4wID0gWyBtYXQzeDIo
MS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41LCAw
LjAyMDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJCQlvdXRwdXQgbWF0Mng0IG91dDAg
PSBbIG1hdDJ4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQy
eDQoNi41LCAzMi4wLCAwLjAsIDAuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjAsIDAuMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1h
dDJ4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQz
eDJfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBt
YXQzeDIgaW4wID0gWyBtYXQzeDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQz
eDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIC0wLjc1LCAtOC40MjUpIF07CisJ
CQlvdXRwdXQgbWF0MngzIG91dDAgPSBbIG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMCwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBt
YXQyeDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0
M3gyX3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1h
dDN4MiBpbjAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDN4
Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgLTAuNzUsIC04LjQyNSkgXTsKKwkJ
CW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41
LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJ4NF90b19tYXQ0CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyeDQgaW4wID0gWyBtYXQyeDQoMS4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDYuNSwgMzIuMCwgMC4xMjUs
IC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUpIF07CisJCQlvdXRw
dXQgbWF0NCBvdXQwID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwg
MzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUs
IDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQyeDRfdG9fbWF0NHgzCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyeDQgaW4wID0gWyBtYXQy
eDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDYuNSwg
MzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUp
IF07CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAs
IDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Myg2LjUsIDMy
LjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDR4MyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtYXQyeDRfdG9fbWF0NHgyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBtYXQyeDQgaW4wID0gWyBtYXQyeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIu
NSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUpIF07CisJCQlvdXRwdXQgbWF0NHgyIG91
dDAgPSBbIG1hdDR4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBt
YXQ0eDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMCwgMC4wLCAwLjAsIDAu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IG1hdDR4MihpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
YXQyeDRfdG9fbWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBtYXQyeDQgaW4wID0gWyBtYXQyeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAwLjApIHwgbWF0Mng0KDYuNSwgMzIuMCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMz
MzMzMzMzLCAwLjA2MjUsIC0wLjUpIF07CisJCQlvdXRwdXQgbWF0M3g0IG91dDAgPSBbIG1hdDN4
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wKSB8IG1hdDN4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMz
MzMzMywgMC4wNjI1LCAtMC41LCAwLjAsIDAuMCwgMS4wLCAwLjApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0Mng0X3RvX21hdDMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDJ4NCBpbjAgPSBbIG1hdDJ4
NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoNi41LCAz
Mi4wLCAwLjEyNSwgLTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSkg
XTsKKwkJCW91dHB1dCBtYXQzIG91dDAgPSBbIG1hdDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAs
IDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIw
ODMzMzMzMzMzMywgMC4wNjI1LCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQyeDRfdG9fbWF0M3gyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyeDQgaW4wID0gWyBtYXQyeDQoMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDYuNSwgMzIuMCwg
MC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUpIF07CisJ
CQlvdXRwdXQgbWF0M3gyIG91dDAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwg
MC4wKSB8IG1hdDN4Mig2LjUsIDMyLjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wLCAwLjAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBt
YXQzeDIoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0
Mng0X3RvX21hdDJ4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
bWF0Mng0IGluMCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwg
MC4wKSB8IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMz
MzMzMywgMC4wNjI1LCAtMC41KSBdOworCQkJb3V0cHV0IG1hdDJ4NCBvdXQwID0gWyBtYXQyeDQo
MS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDYuNSwgMzIu
MCwgMC4xMjUsIC02LjcyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUsIC0wLjUpIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQy
eDQoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0Mng0
X3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0
Mng0IGluMCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4w
KSB8IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAtNi43MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMz
MywgMC4wNjI1LCAtMC41KSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMoMS4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoNi41LCAzMi4wLCAwLjEyNSwgMTIu
NSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0Mng0X3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDJ4NCBpbjAgPSBbIG1hdDJ4NCgxLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoNi41LCAzMi4wLCAwLjEyNSwg
LTYuNzI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwgLTAuNSkgXTsKKwkJCW91dHB1
dCBtYXQyIG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAzMi4w
LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1hdDJ4M190b19tYXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBtYXQyeDMgaW4wID0gWyBtYXQyeDMoMS4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoNi41LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMz
MzMzMzMzLCAwLjA2MjUpIF07CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0KDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDYuNSwgMzIuMCwgMC4xMjUsIDAuMCwgMTIuNSwgMC4wMjA4
MzMzMzMzMzMzLCAwLjA2MjUsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQ0KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1hdDJ4M190b19tYXQ0eDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IG1hdDJ4MyBpbjAgPSBbIG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8
IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSkg
XTsKKwkJCW91dHB1dCBtYXQ0eDMgb3V0MCA9IFsgbWF0NHgzKDEuMCwgMC4wLCAwLjAsIDAuMCwg
MS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKDYuNSwgMzIu
MCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gbWF0NHgzKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hdDJ4M190b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IG1hdDJ4MyBpbjAgPSBbIG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMs
IDAuMDYyNSkgXTsKKwkJCW91dHB1dCBtYXQ0eDIgb3V0MCA9IFsgbWF0NHgyKDEuMCwgMC4wLCAw
LjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Mig2LjUsIDMyLjAsIDEyLjUsIDAu
MDIwODMzMzMzMzMzMywgMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJ4M190b19tYXQzeDQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDJ4MyBpbjAgPSBbIG1hdDJ4Mygx
LjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1LCAx
Mi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSkgXTsKKwkJCW91dHB1dCBtYXQzeDQgb3V0MCA9
IFsgbWF0M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAwLjApIHwgbWF0M3g0KDYuNSwgMzIuMCwgMC4xMjUsIDAuMCwgMTIuNSwgMC4wMjA4
MzMzMzMzMzMzLCAwLjA2MjUsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3g0KGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJ4M190b19tYXQzCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyeDMgaW4wID0gWyBt
YXQyeDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoNi41LCAzMi4wLCAw
LjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUpIF07CisJCQlvdXRwdXQgbWF0MyBv
dXQwID0gWyBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAp
IHwgbWF0Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSwg
MC4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbWF0MngzX3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgbWF0MngzIGluMCA9IFsgbWF0MngzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAwLjApIHwgbWF0MngzKDYuNSwgMzIuMCwgMC4xMjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywg
MC4wNjI1KSBdOworCQkJb3V0cHV0IG1hdDN4MiBvdXQwID0gWyBtYXQzeDIoMS4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoNi41LCAzMi4wLCAxMi41LCAwLjAyMDgzMzMzMzMz
MzMsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gbWF0M3gyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hdDJ4M190b19tYXQyeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IG1hdDJ4MyBpbjAgPSBbIG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAsIDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMs
IDAuMDYyNSkgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCg2LjUsIDMyLjAsIDAuMTI1LCAw
LjAsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1LCAwLjApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDQoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0MngzX3RvX21hdDJ4MworCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0MngzIGluMCA9IFsgbWF0
MngzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0MngzKDYuNSwgMzIuMCwgMC4x
MjUsIDEyLjUsIDAuMDIwODMzMzMzMzMzMywgMC4wNjI1KSBdOworCQkJb3V0cHV0IG1hdDJ4MyBv
dXQwID0gWyBtYXQyeDMoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgfCBtYXQyeDMoNi41
LCAzMi4wLCAwLjEyNSwgMTIuNSwgMC4wMjA4MzMzMzMzMzMzLCAwLjA2MjUpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDMoaW4wKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0MngzX3RvX21hdDIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDJ4MyBpbjAgPSBb
IG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDJ4Myg2LjUsIDMyLjAs
IDAuMTI1LCAxMi41LCAwLjAyMDgzMzMzMzMzMzMsIDAuMDYyNSkgXTsKKwkJCW91dHB1dCBtYXQy
IG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAzMi4wLCAxMi41
LCAwLjAyMDgzMzMzMzMzMzMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1hdDJfdG9fbWF0NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgbWF0MiBpbjAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIo
Ni41LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkg
fCBtYXQyKDguMCwgLTI0LjAsIDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUsIDAu
MDYyNSwgMC4wMTU2MjUpIHwgbWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUpIF07
CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAx
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBt
YXQ0KDYuNSwgLTAuNzUsIDAuMCwgMC4wLCAxMi41LCA5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoNi41LCAtMC43NSwgMC4wLCAw
LjAsIDEyLjUsIDkuOTc1LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjApIHwgbWF0NCg4LjAsIC0yNC4wLCAwLjAsIDAuMCwgMTYuMCwgLTE2LjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0KDAuMTI1
LCAwLjAzMTI1LCAwLjAsIDAuMCwgMC4wNjI1LCAwLjAxNTYyNSwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDQoLTE4LjcyNSwgLTAuMDEyNSwg
MC4wLCAwLjAsIC0wLjUsIDE5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtYXQyX3RvX21hdDR4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgbWF0MiBpbjAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIo
Ni41LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkg
fCBtYXQyKDguMCwgLTI0LjAsIDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUsIDAu
MDYyNSwgMC4wMTU2MjUpIHwgbWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUpIF07
CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4Myg2LjUsIC0wLjc1
LCAwLjAsIDEyLjUsIDkuOTc1LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0NHgzKDYuNSwgLTAuNzUsIDAuMCwgMTIuNSwgOS45NzUsIDAuMCwgMC4wLCAwLjAsIDEuMCwg
MC4wLCAwLjAsIDAuMCkgfCBtYXQ0eDMoOC4wLCAtMjQuMCwgMC4wLCAxNi4wLCAtMTYuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygwLjEyNSwgMC4wMzEyNSwg
MC4wLCAwLjA2MjUsIDAuMDE1NjI1LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0NHgzKC0xOC43MjUsIC0wLjAxMjUsIDAuMCwgLTAuNSwgMTkuOTc1LCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0eDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWF0Ml90b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDIgaW4wID0gWyBtYXQyKDEuMCwgMC4wLCAwLjAsIDEu
MCkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1KSB8IG1hdDIoNi41LCAtMC43NSwgMTIu
NSwgOS45NzUpIHwgbWF0Mig4LjAsIC0yNC4wLCAxNi4wLCAtMTYuMCkgfCBtYXQyKDAuMTI1LCAw
LjAzMTI1LCAwLjA2MjUsIDAuMDE1NjI1KSB8IG1hdDIoLTE4LjcyNSwgLTAuMDEyNSwgLTAuNSwg
MTkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDR4MiBvdXQwID0gWyBtYXQ0eDIoMS4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDYuNSwgLTAuNzUsIDEyLjUsIDku
OTc1LCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1
LCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDguMCwgLTI0LjAsIDE2LjAsIC0xNi4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDAuMTI1LCAwLjAzMTI1LCAwLjA2MjUsIDAuMDE1
NjI1LCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKC0xOC43MjUsIC0wLjAxMjUsIC0wLjUs
IDE5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJfdG9fbWF0M3g0CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQyIGluMCA9IFsgbWF0MigxLjAsIDAuMCwgMC4w
LCAxLjApIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkgfCBtYXQyKDYuNSwgLTAuNzUs
IDEyLjUsIDkuOTc1KSB8IG1hdDIoOC4wLCAtMjQuMCwgMTYuMCwgLTE2LjApIHwgbWF0MigwLjEy
NSwgMC4wMzEyNSwgMC4wNjI1LCAwLjAxNTYyNSkgfCBtYXQyKC0xOC43MjUsIC0wLjAxMjUsIC0w
LjUsIDE5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQzeDQgb3V0MCA9IFsgbWF0M3g0KDEuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0
M3g0KDYuNSwgLTAuNzUsIDAuMCwgMC4wLCAxMi41LCA5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAxLjAsIDAuMCkgfCBtYXQzeDQoNi41LCAtMC43NSwgMC4wLCAwLjAsIDEyLjUsIDkuOTc1LCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCg4LjAsIC0yNC4wLCAwLjAsIDAu
MCwgMTYuMCwgLTE2LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0M3g0KDAu
MTI1LCAwLjAzMTI1LCAwLjAsIDAuMCwgMC4wNjI1LCAwLjAxNTYyNSwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDAuMCkgfCBtYXQzeDQoLTE4LjcyNSwgLTAuMDEyNSwgMC4wLCAwLjAsIC0wLjUs
IDE5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYXQyX3RvX21hdDMKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDIgaW4wID0gWyBtYXQyKDEuMCwg
MC4wLCAwLjAsIDEuMCkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1KSB8IG1hdDIoNi41
LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig4LjAsIC0yNC4wLCAxNi4wLCAtMTYuMCkgfCBt
YXQyKDAuMTI1LCAwLjAzMTI1LCAwLjA2MjUsIDAuMDE1NjI1KSB8IG1hdDIoLTE4LjcyNSwgLTAu
MDEyNSwgLTAuNSwgMTkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygxLjAs
IDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoNi41LCAtMC43
NSwgMC4wLCAxMi41LCA5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoNi41LCAtMC43
NSwgMC4wLCAxMi41LCA5Ljk3NSwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoOC4wLCAtMjQu
MCwgMC4wLCAxNi4wLCAtMTYuMCwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoMC4xMjUsIDAu
MDMxMjUsIDAuMCwgMC4wNjI1LCAwLjAxNTYyNSwgMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMo
LTE4LjcyNSwgLTAuMDEyNSwgMC4wLCAtMC41LCAxOS45NzUsIDAuMCwgMC4wLCAwLjAsIDEuMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1h
dDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWF0Ml90
b19tYXQzeDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDIg
aW4wID0gWyBtYXQyKDEuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUs
IDkuOTc1KSB8IG1hdDIoNi41LCAtMC43NSwgMTIuNSwgOS45NzUpIHwgbWF0Mig4LjAsIC0yNC4w
LCAxNi4wLCAtMTYuMCkgfCBtYXQyKDAuMTI1LCAwLjAzMTI1LCAwLjA2MjUsIDAuMDE1NjI1KSB8
IG1hdDIoLTE4LjcyNSwgLTAuMDEyNSwgLTAuNSwgMTkuOTc1KSBdOworCQkJb3V0cHV0IG1hdDN4
MiBvdXQwID0gWyBtYXQzeDIoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQzeDIo
Ni41LCAtMC43NSwgMTIuNSwgOS45NzUsIDAuMCwgMC4wKSB8IG1hdDN4Mig2LjUsIC0wLjc1LCAx
Mi41LCA5Ljk3NSwgMC4wLCAwLjApIHwgbWF0M3gyKDguMCwgLTI0LjAsIDE2LjAsIC0xNi4wLCAw
LjAsIDAuMCkgfCBtYXQzeDIoMC4xMjUsIDAuMDMxMjUsIDAuMDYyNSwgMC4wMTU2MjUsIDAuMCwg
MC4wKSB8IG1hdDN4MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUsIDAuMCwgMC4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0
M3gyKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDJf
dG9fbWF0Mng0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQy
IGluMCA9IFsgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41
LCA5Ljk3NSkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1KSB8IG1hdDIoOC4wLCAtMjQu
MCwgMTYuMCwgLTE2LjApIHwgbWF0MigwLjEyNSwgMC4wMzEyNSwgMC4wNjI1LCAwLjAxNTYyNSkg
fCBtYXQyKC0xOC43MjUsIC0wLjAxMjUsIC0wLjUsIDE5Ljk3NSkgXTsKKwkJCW91dHB1dCBtYXQy
eDQgb3V0MCA9IFsgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4w
KSB8IG1hdDJ4NCg2LjUsIC0wLjc1LCAwLjAsIDAuMCwgMTIuNSwgOS45NzUsIDAuMCwgMC4wKSB8
IG1hdDJ4NCg2LjUsIC0wLjc1LCAwLjAsIDAuMCwgMTIuNSwgOS45NzUsIDAuMCwgMC4wKSB8IG1h
dDJ4NCg4LjAsIC0yNC4wLCAwLjAsIDAuMCwgMTYuMCwgLTE2LjAsIDAuMCwgMC4wKSB8IG1hdDJ4
NCgwLjEyNSwgMC4wMzEyNSwgMC4wLCAwLjAsIDAuMDYyNSwgMC4wMTU2MjUsIDAuMCwgMC4wKSB8
IG1hdDJ4NCgtMTguNzI1LCAtMC4wMTI1LCAwLjAsIDAuMCwgLTAuNSwgMTkuOTc1LCAwLjAsIDAu
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IG1hdDJ4NChpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
YXQyX3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
bWF0MiBpbjAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAtMC43NSwg
MTIuNSwgOS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkgfCBtYXQyKDguMCwg
LTI0LjAsIDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUsIDAuMDYyNSwgMC4wMTU2
MjUpIHwgbWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUpIF07CisJCQlvdXRwdXQg
bWF0MngzIG91dDAgPSBbIG1hdDJ4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1h
dDJ4Myg2LjUsIC0wLjc1LCAwLjAsIDEyLjUsIDkuOTc1LCAwLjApIHwgbWF0MngzKDYuNSwgLTAu
NzUsIDAuMCwgMTIuNSwgOS45NzUsIDAuMCkgfCBtYXQyeDMoOC4wLCAtMjQuMCwgMC4wLCAxNi4w
LCAtMTYuMCwgMC4wKSB8IG1hdDJ4MygwLjEyNSwgMC4wMzEyNSwgMC4wLCAwLjA2MjUsIDAuMDE1
NjI1LCAwLjApIHwgbWF0MngzKC0xOC43MjUsIC0wLjAxMjUsIDAuMCwgLTAuNSwgMTkuOTc1LCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQyeDMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWF0Ml90b19tYXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBt
YXQyIGluMCA9IFsgbWF0MigxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0Mig2LjUsIC0wLjc1LCAx
Mi41LCA5Ljk3NSkgfCBtYXQyKDYuNSwgLTAuNzUsIDEyLjUsIDkuOTc1KSB8IG1hdDIoOC4wLCAt
MjQuMCwgMTYuMCwgLTE2LjApIHwgbWF0MigwLjEyNSwgMC4wMzEyNSwgMC4wNjI1LCAwLjAxNTYy
NSkgfCBtYXQyKC0xOC43MjUsIC0wLjAxMjUsIC0wLjUsIDE5Ljk3NSkgXTsKKwkJCW91dHB1dCBt
YXQyIG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoNi41LCAtMC43NSwg
MTIuNSwgOS45NzUpIHwgbWF0Mig2LjUsIC0wLjc1LCAxMi41LCA5Ljk3NSkgfCBtYXQyKDguMCwg
LTI0LjAsIDE2LjAsIC0xNi4wKSB8IG1hdDIoMC4xMjUsIDAuMDMxMjUsIDAuMDYyNSwgMC4wMTU2
MjUpIHwgbWF0MigtMTguNzI1LCAtMC4wMTI1LCAtMC41LCAxOS45NzUpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworZW5kICMgbWF0cml4X3RvX21hdHJpeAor
Z3JvdXAgdmVjdG9yX2NvbWJpbmUgIlZlY3RvciBDb21iaW5lIENvbnN0cnVjdG9ycyIKKworCWNh
c2UgdmVjMl92ZWMyX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjAp
IHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxKSBdOworCQkJaW5wdXQgdmVjMiBpbjEgPSBbIHZlYzIoLTMyLjAsIDY0LjApIHwg
dmVjMigxLjAsIDEuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZl
YzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2
ZWM0KC0wLjUsIC0yLjI1LCAtMzIuMCwgNjQuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAxLjAsIDEu
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDAuMCwgMC41KSB8IHZlYzQoMC4wLCAwLjUsIC0wLjUsIC0y
LjI1KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHZlYzJfdmVjMl90b19pdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQu
MCkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCB2ZWMyIGluMSA9IFsgdmVjMigtMzIuMCwgNjQuMCkg
fCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwg
dmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0g
WyBpdmVjNCgwLCAtMiwgLTMyLCA2NCkgfCBpdmVjNCgtMzIsIDY0LCAxLCAxKSB8IGl2ZWM0KDEs
IDEsIDAsIDApIHwgaXZlYzQoMCwgMCwgMCwgLTIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl92
ZWMyX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWMyIGluMCA9IFsgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIo
MS4wLCAxLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSkgXTsKKwkJCWlucHV0IHZlYzIgaW4xID0gWyB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4w
LCAxLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl9idmVjMl90b192ZWM0
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBb
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwg
dHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlu
cHV0IGJ2ZWMyIGluMSA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwgMS4wLCAw
LjApIHwgdmVjNCgxLjAsIDAuMCwgMC4wLCAwLjApIHwgdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjAp
IHwgdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApIHwgdmVjNCgxLjAsIDEuMCwgMC4wLCAwLjApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0
KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZl
YzJfYnZlYzJfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVl
LCB0cnVlKSBdOworCQkJaW5wdXQgYnZlYzIgaW4xID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZl
YzQoMCwgMCwgMSwgMCkgfCBpdmVjNCgxLCAwLCAwLCAwKSB8IGl2ZWM0KDAsIDEsIDAsIDEpIHwg
aXZlYzQoMCwgMCwgMSwgMSkgfCBpdmVjNCgxLCAxLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjMl9idmVjMl90b19idmVj
NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0g
WyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCQlp
bnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2Us
IHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjAsIGluMSk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X2Zsb2F0X2Zs
b2F0X3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZs
b2F0IGluMCA9IFsgMS4wIHwgMC4wIHwgLTAuNSB8IC04LjI1IHwgMy41IHwgLTIwLjEyNSB8IDM2
LjgxMjUgfCAyLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMC4wIHwgMzYuODEyNSB8IC04
LjI1IHwgMi4wIHwgMy41IHwgMS4wIHwgLTIwLjEyNSB8IC0wLjUgXTsKKwkJCWlucHV0IGZsb2F0
IGluMiA9IFsgMy41IHwgMzYuODEyNSB8IC04LjI1IHwgMS4wIHwgMi4wIHwgMC4wIHwgLTIwLjEy
NSB8IC0wLjUgXTsKKwkJCWlucHV0IGZsb2F0IGluMyA9IFsgMy41IHwgMzYuODEyNSB8IDEuMCB8
IC04LjI1IHwgMi4wIHwgMC4wIHwgLTAuNSB8IC0yMC4xMjUgXTsKKwkJCW91dHB1dCB2ZWM0IG91
dDAgPSBbIHZlYzQoMS4wLCAwLjAsIDMuNSwgMy41KSB8IHZlYzQoMC4wLCAzNi44MTI1LCAzNi44
MTI1LCAzNi44MTI1KSB8IHZlYzQoLTAuNSwgLTguMjUsIC04LjI1LCAxLjApIHwgdmVjNCgtOC4y
NSwgMi4wLCAxLjAsIC04LjI1KSB8IHZlYzQoMy41LCAzLjUsIDIuMCwgMi4wKSB8IHZlYzQoLTIw
LjEyNSwgMS4wLCAwLjAsIDAuMCkgfCB2ZWM0KDM2LjgxMjUsIC0yMC4xMjUsIC0yMC4xMjUsIC0w
LjUpIHwgdmVjNCgyLjAsIC0wLjUsIC0wLjUsIC0yMC4xMjUpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xLCBpbjIsIGlu
Myk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0
X2Zsb2F0X2Zsb2F0X3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAgPSBbIDEuMCB8IDAuMCB8IC0wLjUgfCAtOC4yNSB8IDMuNSB8IC0y
MC4xMjUgfCAzNi44MTI1IHwgMi4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDAuMCB8IDM2
LjgxMjUgfCAtOC4yNSB8IDIuMCB8IDMuNSB8IDEuMCB8IC0yMC4xMjUgfCAtMC41IF07CisJCQlp
bnB1dCBmbG9hdCBpbjIgPSBbIDMuNSB8IDM2LjgxMjUgfCAtOC4yNSB8IDEuMCB8IDIuMCB8IDAu
MCB8IC0yMC4xMjUgfCAtMC41IF07CisJCQlpbnB1dCBmbG9hdCBpbjMgPSBbIDMuNSB8IDM2Ljgx
MjUgfCAxLjAgfCAtOC4yNSB8IDIuMCB8IDAuMCB8IC0wLjUgfCAtMjAuMTI1IF07CisJCQlvdXRw
dXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMSwgMCwgMywgMykgfCBpdmVjNCgwLCAzNiwgMzYsIDM2
KSB8IGl2ZWM0KDAsIC04LCAtOCwgMSkgfCBpdmVjNCgtOCwgMiwgMSwgLTgpIHwgaXZlYzQoMywg
MywgMiwgMikgfCBpdmVjNCgtMjAsIDEsIDAsIDApIHwgaXZlYzQoMzYsIC0yMCwgLTIwLCAwKSB8
IGl2ZWM0KDIsIDAsIDAsIC0yMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X2Zsb2F0X2Zsb2F0X3Rv
X2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBp
bjAgPSBbIDEuMCB8IDAuMCB8IC0wLjUgfCAtOC4yNSB8IDMuNSB8IC0yMC4xMjUgfCAzNi44MTI1
IHwgMi4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDAuMCB8IDM2LjgxMjUgfCAtOC4yNSB8
IDIuMCB8IDMuNSB8IDEuMCB8IC0yMC4xMjUgfCAtMC41IF07CisJCQlpbnB1dCBmbG9hdCBpbjIg
PSBbIDMuNSB8IDM2LjgxMjUgfCAtOC4yNSB8IDEuMCB8IDIuMCB8IDAuMCB8IC0yMC4xMjUgfCAt
MC41IF07CisJCQlpbnB1dCBmbG9hdCBpbjMgPSBbIDMuNSB8IDM2LjgxMjUgfCAxLjAgfCAtOC4y
NSB8IDIuMCB8IDAuMCB8IC0wLjUgfCAtMjAuMTI1IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50X2lu
dF90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQg
aW4wID0gWyAtMTIgfCAtNjYgfCAyIHwgNSB8IDggfCAtMTkyIHwgMjU1IHwgMSB8IDAgfCAxMSBd
OworCQkJaW5wdXQgaW50IGluMSA9IFsgMiB8IDUgfCAtNjYgfCAxMSB8IC0xOTIgfCA4IHwgLTEy
IHwgMSB8IDI1NSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDExIHwgMjU1IHwgNSB8IDgg
fCAyIHwgLTE5MiB8IC0xMiB8IC02NiB8IDEgfCAwIF07CisJCQlpbnB1dCBpbnQgaW4zID0gWyAt
MTkyIHwgLTY2IHwgOCB8IC0xMiB8IDEgfCAyIHwgMCB8IDI1NSB8IDUgfCAxMSBdOworCQkJb3V0
cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgtMTIuMCwgMi4wLCAxMS4wLCAtMTkyLjApIHwgdmVjNCgt
NjYuMCwgNS4wLCAyNTUuMCwgLTY2LjApIHwgdmVjNCgyLjAsIC02Ni4wLCA1LjAsIDguMCkgfCB2
ZWM0KDUuMCwgMTEuMCwgOC4wLCAtMTIuMCkgfCB2ZWM0KDguMCwgLTE5Mi4wLCAyLjAsIDEuMCkg
fCB2ZWM0KC0xOTIuMCwgOC4wLCAtMTkyLjAsIDIuMCkgfCB2ZWM0KDI1NS4wLCAtMTIuMCwgLTEy
LjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAtNjYuMCwgMjU1LjApIHwgdmVjNCgwLjAsIDI1NS4w
LCAxLjAsIDUuMCkgfCB2ZWM0KDExLjAsIDAuMCwgMC4wLCAxMS4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAsIGluMSwgaW4y
LCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaW50
X2ludF9pbnRfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGludCBpbjAgPSBbIC0xMiB8IC02NiB8IDIgfCA1IHwgOCB8IC0xOTIgfCAyNTUgfCAxIHwg
MCB8IDExIF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAyIHwgNSB8IC02NiB8IDExIHwgLTE5MiB8
IDggfCAtMTIgfCAxIHwgMjU1IHwgMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMTEgfCAyNTUg
fCA1IHwgOCB8IDIgfCAtMTkyIHwgLTEyIHwgLTY2IHwgMSB8IDAgXTsKKwkJCWlucHV0IGludCBp
bjMgPSBbIC0xOTIgfCAtNjYgfCA4IHwgLTEyIHwgMSB8IDIgfCAwIHwgMjU1IHwgNSB8IDExIF07
CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoLTEyLCAyLCAxMSwgLTE5MikgfCBpdmVj
NCgtNjYsIDUsIDI1NSwgLTY2KSB8IGl2ZWM0KDIsIC02NiwgNSwgOCkgfCBpdmVjNCg1LCAxMSwg
OCwgLTEyKSB8IGl2ZWM0KDgsIC0xOTIsIDIsIDEpIHwgaXZlYzQoLTE5MiwgOCwgLTE5MiwgMikg
fCBpdmVjNCgyNTUsIC0xMiwgLTEyLCAwKSB8IGl2ZWM0KDEsIDEsIC02NiwgMjU1KSB8IGl2ZWM0
KDAsIDI1NSwgMSwgNSkgfCBpdmVjNCgxMSwgMCwgMCwgMTEpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjAsIGluMSwgaW4yLCBp
bjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaW50X2lu
dF9pbnRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGludCBpbjAgPSBbIC0xMiB8IC02NiB8IDIgfCA1IHwgOCB8IC0xOTIgfCAyNTUgfCAxIHwgMCB8
IDExIF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAyIHwgNSB8IC02NiB8IDExIHwgLTE5MiB8IDgg
fCAtMTIgfCAxIHwgMjU1IHwgMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMTEgfCAyNTUgfCA1
IHwgOCB8IDIgfCAtMTkyIHwgLTEyIHwgLTY2IHwgMSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjMg
PSBbIC0xOTIgfCAtNjYgfCA4IHwgLTEyIHwgMSB8IDIgfCAwIHwgMjU1IHwgNSB8IDExIF07CisJ
CQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBidmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB1aW50X3VpbnRfdWludF91aW50X3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAxOTMgfCAzIHwgMjU1IHwg
OCB8IDEwIHwgOSB8IDIgfCAxMiB8IDAgfCA0NSBdOworCQkJaW5wdXQgdWludCBpbjEgPSBbIDEy
IHwgNDUgfCAxOTMgfCAyIHwgOCB8IDI1NSB8IDAgfCAzIHwgOSB8IDEwIF07CisJCQlpbnB1dCB1
aW50IGluMiA9IFsgOSB8IDggfCAxMiB8IDIgfCAyNTUgfCA0NSB8IDMgfCAwIHwgMTkzIHwgMTAg
XTsKKwkJCWlucHV0IHVpbnQgaW4zID0gWyAzIHwgOSB8IDEyIHwgMiB8IDI1NSB8IDE5MyB8IDAg
fCAxMCB8IDQ1IHwgOCBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgxOTMuMCwgMTIu
MCwgOS4wLCAzLjApIHwgdmVjNCgzLjAsIDQ1LjAsIDguMCwgOS4wKSB8IHZlYzQoMjU1LjAsIDE5
My4wLCAxMi4wLCAxMi4wKSB8IHZlYzQoOC4wLCAyLjAsIDIuMCwgMi4wKSB8IHZlYzQoMTAuMCwg
OC4wLCAyNTUuMCwgMjU1LjApIHwgdmVjNCg5LjAsIDI1NS4wLCA0NS4wLCAxOTMuMCkgfCB2ZWM0
KDIuMCwgMC4wLCAzLjAsIDAuMCkgfCB2ZWM0KDEyLjAsIDMuMCwgMC4wLCAxMC4wKSB8IHZlYzQo
MC4wLCA5LjAsIDE5My4wLCA0NS4wKSB8IHZlYzQoNDUuMCwgMTAuMCwgMTAuMCwgOC4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChp
bjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB1aW50X3VpbnRfdWludF91aW50X3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMTkzIHwgMyB8IDI1NSB8IDggfCAxMCB8
IDkgfCAyIHwgMTIgfCAwIHwgNDUgXTsKKwkJCWlucHV0IHVpbnQgaW4xID0gWyAxMiB8IDQ1IHwg
MTkzIHwgMiB8IDggfCAyNTUgfCAwIHwgMyB8IDkgfCAxMCBdOworCQkJaW5wdXQgdWludCBpbjIg
PSBbIDkgfCA4IHwgMTIgfCAyIHwgMjU1IHwgNDUgfCAzIHwgMCB8IDE5MyB8IDEwIF07CisJCQlp
bnB1dCB1aW50IGluMyA9IFsgMyB8IDkgfCAxMiB8IDIgfCAyNTUgfCAxOTMgfCAwIHwgMTAgfCA0
NSB8IDggXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgxOTMsIDEyLCA5LCAzKSB8
IGl2ZWM0KDMsIDQ1LCA4LCA5KSB8IGl2ZWM0KDI1NSwgMTkzLCAxMiwgMTIpIHwgaXZlYzQoOCwg
MiwgMiwgMikgfCBpdmVjNCgxMCwgOCwgMjU1LCAyNTUpIHwgaXZlYzQoOSwgMjU1LCA0NSwgMTkz
KSB8IGl2ZWM0KDIsIDAsIDMsIDApIHwgaXZlYzQoMTIsIDMsIDAsIDEwKSB8IGl2ZWM0KDAsIDks
IDE5MywgNDUpIHwgaXZlYzQoNDUsIDEwLCAxMCwgOCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdWludF91aW50
X3VpbnRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHVpbnQgaW4wID0gWyAxOTMgfCAzIHwgMjU1IHwgOCB8IDEwIHwgOSB8IDIgfCAxMiB8IDAgfCA0
NSBdOworCQkJaW5wdXQgdWludCBpbjEgPSBbIDEyIHwgNDUgfCAxOTMgfCAyIHwgOCB8IDI1NSB8
IDAgfCAzIHwgOSB8IDEwIF07CisJCQlpbnB1dCB1aW50IGluMiA9IFsgOSB8IDggfCAxMiB8IDIg
fCAyNTUgfCA0NSB8IDMgfCAwIHwgMTkzIHwgMTAgXTsKKwkJCWlucHV0IHVpbnQgaW4zID0gWyAz
IHwgOSB8IDEyIHwgMiB8IDI1NSB8IDE5MyB8IDAgfCAxMCB8IDQ1IHwgOCBdOworCQkJb3V0cHV0
IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCB0
cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQo
aW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgYm9vbF9ib29sX2Jvb2xfYm9vbF90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1
dCBib29sIGluMSA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMiA9IFsgZmFs
c2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlv
dXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDEuMCwgMS4wLCAwLjAsIDAuMCkgfCB2ZWM0KDAuMCwg
MC4wLCAxLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfYm9vbF90b19pdmVjNAorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUg
fCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJaW5w
dXQgYm9vbCBpbjIgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjMgPSBbIGZh
bHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDEsIDEsIDAsIDAp
IHwgaXZlYzQoMCwgMCwgMSwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF9ib29sX2Jvb2xfdG9fYnZl
YzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0g
WyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgXTsK
KwkJCWlucHV0IGJvb2wgaW4yID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGJvb2wgaW4z
ID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVl
LCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZl
YzQoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYm9vbF9mbG9hdF9pbnRfYm9vbF90b192ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8
IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIF07CisJ
CQlpbnB1dCBmbG9hdCBpbjEgPSBbIDM2LjgxMjUgfCAwLjAgfCAtOC4yNSB8IDEuMCB8IC0wLjUg
fCAwLjAgfCAyLjAgfCAtMjAuMTI1IHwgMy41IHwgMS4wIF07CisJCQlpbnB1dCBpbnQgaW4yID0g
WyAtNjYgfCAyIHwgMjU1IHwgMTEgfCAxIHwgOCB8IC0xOTIgfCAtMTIgfCAwIHwgNSBdOworCQkJ
aW5wdXQgYm9vbCBpbjMgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0
cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSBdOworCQkJb3V0cHV0IHZlYzQgb3V0
MCA9IFsgdmVjNCgxLjAsIDM2LjgxMjUsIC02Ni4wLCAxLjApIHwgdmVjNCgxLjAsIDAuMCwgMi4w
LCAxLjApIHwgdmVjNCgwLjAsIC04LjI1LCAyNTUuMCwgMC4wKSB8IHZlYzQoMC4wLCAxLjAsIDEx
LjAsIDAuMCkgfCB2ZWM0KDAuMCwgLTAuNSwgMS4wLCAxLjApIHwgdmVjNCgxLjAsIDAuMCwgOC4w
LCAxLjApIHwgdmVjNCgwLjAsIDIuMCwgLTE5Mi4wLCAwLjApIHwgdmVjNCgwLjAsIC0yMC4xMjUs
IC0xMi4wLCAxLjApIHwgdmVjNCgxLjAsIDMuNSwgMC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMCwg
NS4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSB2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGJvb2xfZmxvYXRfaW50X2Jvb2xfdG9faXZlYzQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgdHJ1
ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8
IHRydWUgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMzYuODEyNSB8IDAuMCB8IC04LjI1IHwg
MS4wIHwgLTAuNSB8IDAuMCB8IDIuMCB8IC0yMC4xMjUgfCAzLjUgfCAxLjAgXTsKKwkJCWlucHV0
IGludCBpbjIgPSBbIC02NiB8IDIgfCAyNTUgfCAxMSB8IDEgfCA4IHwgLTE5MiB8IC0xMiB8IDAg
fCA1IF07CisJCQlpbnB1dCBib29sIGluMyA9IFsgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNl
IHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIF07CisJCQlvdXRw
dXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMSwgMzYsIC02NiwgMSkgfCBpdmVjNCgxLCAwLCAyLCAx
KSB8IGl2ZWM0KDAsIC04LCAyNTUsIDApIHwgaXZlYzQoMCwgMSwgMTEsIDApIHwgaXZlYzQoMCwg
MCwgMSwgMSkgfCBpdmVjNCgxLCAwLCA4LCAxKSB8IGl2ZWM0KDAsIDIsIC0xOTIsIDApIHwgaXZl
YzQoMCwgLTIwLCAtMTIsIDEpIHwgaXZlYzQoMSwgMywgMCwgMCkgfCBpdmVjNCgxLCAxLCA1LCAw
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aXZlYzQoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYm9vbF9mbG9hdF9pbnRfYm9vbF90b19idmVjNAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCB0cnVlIHwgZmFs
c2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBd
OworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAzNi44MTI1IHwgMC4wIHwgLTguMjUgfCAxLjAgfCAt
MC41IHwgMC4wIHwgMi4wIHwgLTIwLjEyNSB8IDMuNSB8IDEuMCBdOworCQkJaW5wdXQgaW50IGlu
MiA9IFsgLTY2IHwgMiB8IDI1NSB8IDExIHwgMSB8IDggfCAtMTkyIHwgLTEyIHwgMCB8IDUgXTsK
KwkJCWlucHV0IGJvb2wgaW4zID0gWyB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVl
IHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBidmVj
NCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZh
bHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVj
NChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUs
IHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2
ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlYzJfaXZlYzJfdG9fdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjAp
IHwgdmVjMigxLjAsIDEuMjUpIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDEs
IDEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkg
fCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIC0yLjApIHwgdmVjNCgtMC41LCAt
Mi4yNSwgMC4wLCAwLjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjNCgx
LjAsIDEuMjUsIDEuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHZlYzJfaXZlYzJfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZl
YzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0z
Mi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSBdOworCQkJaW5wdXQgaXZlYzIgaW4xID0gWyBp
dmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkg
fCBpdmVjMigxLCAxKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMCwgMCwgMCwgLTIpIHwgaXZlYzQoMCwgLTIsIDAsIDApIHwgaXZlYzQoLTMy
LCA2NCwgLTMyLCA2NCkgfCBpdmVjNCgxLCAxLCAxLCAxKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4wLCBpbjEpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX2l2ZWMyX3RvX2J2ZWM0CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVj
MigwLjAsIDAuNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTAuNSwg
LTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCWlucHV0
IGl2ZWMyIGluMSA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAwKSB8
IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMSwgMSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0g
WyBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChp
bjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJf
YnZlYzJfdG9fdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
dmVjMiBpbjAgPSBbIHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMzIuMCwg
NjQuMCkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTAuNSwgLTIu
MjUpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMih0cnVlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMCwgMS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIDAuMCwg
MC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAwLjAsIDAuMCkgfCB2ZWM0KDAuMCwgMC41LCAxLjAsIDEu
MCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAxLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX2J2ZWMyX3RvX2l2ZWM0CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAx
LjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC41LCAtMi4yNSkgXTsKKwkJCWlucHV0IGJ2
ZWMyIGluMSA9IFsgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNl
KSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDEpIHwgaXZlYzQo
LTMyLCA2NCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAwLCAwKSB8IGl2ZWM0KDAsIDAsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIDEsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHZlYzJfYnZlYzJfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxKSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigw
LjAsIDAuNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSBdOworCQkJaW5wdXQgYnZlYzIgaW4xID0gWyBi
dmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIF07CisJCQlvdXRw
dXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYnZlYzNfZmxvYXRfdG9fdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2Up
IHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTAu
NSB8IDMuNSB8IDIuMCB8IDAuMCB8IC04LjI1IHwgMS4wIHwgMzYuODEyNSB8IC0yMC4xMjUgXTsK
KwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMS4wLCAwLjAsIDAuMCwgLTAuNSkgfCB2ZWM0
KDAuMCwgMC4wLCAwLjAsIDMuNSkgfCB2ZWM0KDAuMCwgMS4wLCAwLjAsIDIuMCkgfCB2ZWM0KDEu
MCwgMS4wLCAxLjAsIDAuMCkgfCB2ZWM0KDAuMCwgMC4wLCAwLjAsIC04LjI1KSB8IHZlYzQoMC4w
LCAwLjAsIDAuMCwgMS4wKSB8IHZlYzQoMS4wLCAwLjAsIDAuMCwgMzYuODEyNSkgfCB2ZWM0KDAu
MCwgMS4wLCAwLjAsIC0yMC4xMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfZmxvYXRfdG9faXZlYzQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIF07CisJCQlpbnB1dCBmbG9hdCBp
bjEgPSBbIC0wLjUgfCAzLjUgfCAyLjAgfCAwLjAgfCAtOC4yNSB8IDEuMCB8IDM2LjgxMjUgfCAt
MjAuMTI1IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMSwgMCwgMCwgMCkgfCBp
dmVjNCgwLCAwLCAwLCAzKSB8IGl2ZWM0KDAsIDEsIDAsIDIpIHwgaXZlYzQoMSwgMSwgMSwgMCkg
fCBpdmVjNCgwLCAwLCAwLCAtOCkgfCBpdmVjNCgwLCAwLCAwLCAxKSB8IGl2ZWM0KDEsIDAsIDAs
IDM2KSB8IGl2ZWM0KDAsIDEsIDAsIC0yMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfZmxvYXRfdG9fYnZlYzQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFs
c2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIF07CisJCQlpbnB1dCBm
bG9hdCBpbjEgPSBbIC0wLjUgfCAzLjUgfCAyLjAgfCAwLjAgfCAtOC4yNSB8IDEuMCB8IDM2Ljgx
MjUgfCAtMjAuMTI1IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIGZh
bHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX2Zsb2F0X3RvX3ZlYzQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKC0zMi4w
LCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3
ODk0NzQpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3
NSkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2
ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgXTsKKwkJCWlucHV0
IGZsb2F0IGluMSA9IFsgLTAuNSB8IDAuMCB8IDMuNSB8IC0yMC4xMjUgfCAyLjAgfCAtOC4yNSB8
IDEuMCB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoLTMyLjAsIDY0
LjAsIC01MS4wLCAtMC41KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMy41KSB8IHZlYzQoLTAuNSwg
LTIuMjUsIC00Ljg3NSwgLTIwLjEyNSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAyLjApIHwgdmVj
NCgtMC41LCAtMi4yNSwgLTQuODc1LCAtOC4yNSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAxLjAp
IHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjNChpbjAsIGluMSk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzNfZmxvYXRfdG9faXZlYzQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMz
KC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUs
IC00Ljg3NSkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3
NSkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgXTsKKwkJ
CWlucHV0IGZsb2F0IGluMSA9IFsgLTAuNSB8IDAuMCB8IDMuNSB8IC0yMC4xMjUgfCAyLjAgfCAt
OC4yNSB8IDEuMCB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgt
MzIsIDY0LCAtNTEsIDApIHwgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAzKSB8
IGl2ZWM0KDAsIC0yLCAtNCwgLTIwKSB8IGl2ZWM0KDAsIDAsIDAsIDIpIHwgaXZlYzQoMCwgLTIs
IC00LCAtOCkgfCBpdmVjNCgwLCAwLCAwLCAxKSB8IGl2ZWM0KDEsIDEsIDEsIDM2KSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQoaW4w
LCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX2Zs
b2F0X3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWMzIGluMCA9IFsgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2
ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKC0w
LjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4y
NSwgMS4xMjUpIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIC0wLjUgfCAwLjAgfCAzLjUgfCAt
MjAuMTI1IHwgMi4wIHwgLTguMjUgfCAxLjAgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgYnZlYzQg
b3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaXZlYzJfaW50X3RvX3Zl
YzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBb
IC0xMiB8IDExIHwgOCB8IDI1NSB8IDAgfCAxIHwgLTY2IHwgMiB8IC0xOTIgfCA1IF07CisJCQlp
bnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIo
MCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIo
LTMyLCA2NCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgXTsKKwkJ
CWlucHV0IGludCBpbjIgPSBbIDEgfCAxMSB8IDIgfCAtNjYgfCAtMTkyIHwgMCB8IC0xMiB8IDI1
NSB8IDUgfCA4IF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KC0xMi4wLCAwLjAsIC0y
LjAsIDEuMCkgfCB2ZWM0KDExLjAsIC0zMi4wLCA2NC4wLCAxMS4wKSB8IHZlYzQoOC4wLCAwLjAs
IDAuMCwgMi4wKSB8IHZlYzQoMjU1LjAsIDAuMCwgLTIuMCwgLTY2LjApIHwgdmVjNCgwLjAsIDEu
MCwgMS4wLCAtMTkyLjApIHwgdmVjNCgxLjAsIDAuMCwgMC4wLCAwLjApIHwgdmVjNCgtNjYuMCwg
LTMyLjAsIDY0LjAsIC0xMi4wKSB8IHZlYzQoMi4wLCAxLjAsIDEuMCwgMjU1LjApIHwgdmVjNCgt
MTkyLjAsIDAuMCwgMC4wLCA1LjApIHwgdmVjNCg1LjAsIDAuMCwgMC4wLCA4LjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwg
aW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRf
aXZlYzJfaW50X3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpbnQgaW4wID0gWyAtMTIgfCAxMSB8IDggfCAyNTUgfCAwIHwgMSB8IC02NiB8IDIgfCAt
MTkyIHwgNSBdOworCQkJaW5wdXQgaXZlYzIgaW4xID0gWyBpdmVjMigwLCAtMikgfCBpdmVjMigt
MzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMSwgMSkgfCBpdmVj
MigwLCAwKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSB8IGl2
ZWMyKDAsIDApIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAxIHwgMTEgfCAyIHwgLTY2IHwgLTE5
MiB8IDAgfCAtMTIgfCAyNTUgfCA1IHwgOCBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2
ZWM0KC0xMiwgMCwgLTIsIDEpIHwgaXZlYzQoMTEsIC0zMiwgNjQsIDExKSB8IGl2ZWM0KDgsIDAs
IDAsIDIpIHwgaXZlYzQoMjU1LCAwLCAtMiwgLTY2KSB8IGl2ZWM0KDAsIDEsIDEsIC0xOTIpIHwg
aXZlYzQoMSwgMCwgMCwgMCkgfCBpdmVjNCgtNjYsIC0zMiwgNjQsIC0xMikgfCBpdmVjNCgyLCAx
LCAxLCAyNTUpIHwgaXZlYzQoLTE5MiwgMCwgMCwgNSkgfCBpdmVjNCg1LCAwLCAwLCA4KSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQo
aW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGludF9pdmVjMl9pbnRfdG9fYnZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGludCBpbjAgPSBbIC0xMiB8IDExIHwgOCB8IDI1NSB8IDAgfCAxIHwgLTY2IHwg
MiB8IC0xOTIgfCA1IF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigxLCAxKSB8
IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMCwgMCkgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDEgfCAxMSB8IDIgfCAtNjYg
fCAtMTkyIHwgMCB8IC0xMiB8IDI1NSB8IDUgfCA4IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwg
ZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCwg
aW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29s
X2Zsb2F0X2l2ZWMyX3RvX3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8
IHRydWUgfCB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMS4wIHwgMC4w
IHwgMi4wIHwgMy41IHwgLTIwLjEyNSB8IC0wLjUgfCAzNi44MTI1IHwgLTguMjUgXTsKKwkJCWlu
cHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMSwgMSkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAs
IDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAtMikgfCBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDEuMCwg
MS4wLCAxLjAsIDEuMCkgfCB2ZWM0KDAuMCwgMC4wLCAtMzIuMCwgNjQuMCkgfCB2ZWM0KDAuMCwg
Mi4wLCAwLjAsIDAuMCkgfCB2ZWM0KDAuMCwgMy41LCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgLTIw
LjEyNSwgMC4wLCAtMi4wKSB8IHZlYzQoMS4wLCAtMC41LCAwLjAsIC0yLjApIHwgdmVjNCgxLjAs
IDM2LjgxMjUsIDAuMCwgMC4wKSB8IHZlYzQoMC4wLCAtOC4yNSwgMS4wLCAxLjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwg
aW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29s
X2Zsb2F0X2l2ZWMyX3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUg
fCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDAu
MCB8IDIuMCB8IDMuNSB8IC0yMC4xMjUgfCAtMC41IHwgMzYuODEyNSB8IC04LjI1IF07CisJCQlp
bnB1dCBpdmVjMiBpbjIgPSBbIGl2ZWMyKDEsIDEpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigw
LCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIo
MCwgMCkgfCBpdmVjMigxLCAxKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDEs
IDEsIDEsIDEpIHwgaXZlYzQoMCwgMCwgLTMyLCA2NCkgfCBpdmVjNCgwLCAyLCAwLCAwKSB8IGl2
ZWM0KDAsIDMsIDAsIDApIHwgaXZlYzQoMSwgLTIwLCAwLCAtMikgfCBpdmVjNCgxLCAwLCAwLCAt
MikgfCBpdmVjNCgxLCAzNiwgMCwgMCkgfCBpdmVjNCgwLCAtOCwgMSwgMSkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWM0KGluMCwgaW4x
LCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zs
b2F0X2l2ZWMyX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0
cnVlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDAuMCB8
IDIuMCB8IDMuNSB8IC0yMC4xMjUgfCAtMC41IHwgMzYuODEyNSB8IC04LjI1IF07CisJCQlpbnB1
dCBpdmVjMiBpbjIgPSBbIGl2ZWMyKDEsIDEpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAw
KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwg
MCkgfCBpdmVjMigxLCAxKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0
cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjNChpbjAsIGluMSwgaW4yKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfdXZlYzNfdG9fdmVjNAorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAxLjAg
fCAtMjAuMTI1IHwgLTguMjUgfCAtMC41IHwgMC4wIHwgMi4wIHwgMy41IHwgMzYuODEyNSBdOwor
CQkJaW5wdXQgdXZlYzMgaW4xID0gWyB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDAsIDAsIDApIHwg
dXZlYzMoMSwgMSwgMSkgfCB1dmVjMygwLCAyLCA0KSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMo
MSwgMSwgMSkgfCB1dmVjMygwLCAyLCA0KSB8IHV2ZWMzKDMyLCA2NCwgNTEpIF07CisJCQlvdXRw
dXQgdmVjNCBvdXQwID0gWyB2ZWM0KDEuMCwgMC4wLCAwLjAsIDAuMCkgfCB2ZWM0KC0yMC4xMjUs
IDAuMCwgMC4wLCAwLjApIHwgdmVjNCgtOC4yNSwgMS4wLCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjUs
IDAuMCwgMi4wLCA0LjApIHwgdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApIHwgdmVjNCgyLjAsIDEu
MCwgMS4wLCAxLjApIHwgdmVjNCgzLjUsIDAuMCwgMi4wLCA0LjApIHwgdmVjNCgzNi44MTI1LCAz
Mi4wLCA2NC4wLCA1MS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gdmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGZsb2F0X3V2ZWMzX3RvX2l2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDEuMCB8IC0yMC4xMjUgfCAtOC4y
NSB8IC0wLjUgfCAwLjAgfCAyLjAgfCAzLjUgfCAzNi44MTI1IF07CisJCQlpbnB1dCB1dmVjMyBp
bjEgPSBbIHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8
IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMCwgMCwgMCkgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMz
KDAsIDIsIDQpIHwgdXZlYzMoMzIsIDY0LCA1MSkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0g
WyBpdmVjNCgxLCAwLCAwLCAwKSB8IGl2ZWM0KC0yMCwgMCwgMCwgMCkgfCBpdmVjNCgtOCwgMSwg
MSwgMSkgfCBpdmVjNCgwLCAwLCAyLCA0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMiwg
MSwgMSwgMSkgfCBpdmVjNCgzLCAwLCAyLCA0KSB8IGl2ZWM0KDM2LCAzMiwgNjQsIDUxKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQo
aW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9h
dF91dmVjM190b19idmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgZmxvYXQgaW4wID0gWyAxLjAgfCAtMjAuMTI1IHwgLTguMjUgfCAtMC41IHwgMC4wIHwgMi4w
IHwgMy41IHwgMzYuODEyNSBdOworCQkJaW5wdXQgdXZlYzMgaW4xID0gWyB1dmVjMygwLCAwLCAw
KSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygwLCAyLCA0KSB8IHV2
ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygwLCAyLCA0KSB8IHV2ZWMzKDMy
LCA2NCwgNTEpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0
KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUp
IHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gYnZlYzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBpbnRfdXZlYzJfYm9vbF90b192ZWM0CisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgLTE5MiB8IC02NiB8
IC0xMiB8IDAgfCAyIHwgMTEgfCA4IHwgMjU1IHwgNSBdOworCQkJaW5wdXQgdXZlYzIgaW4xID0g
WyB1dmVjMigwLCAyKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAyKSB8
IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAw
KSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMCkgXTsKKwkJCWlucHV0IGJvb2wgaW4yID0gWyBm
YWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8
IGZhbHNlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMS4wLCAwLjAs
IDIuMCwgMC4wKSB8IHZlYzQoLTE5Mi4wLCAxLjAsIDEuMCwgMC4wKSB8IHZlYzQoLTY2LjAsIDAu
MCwgMC4wLCAxLjApIHwgdmVjNCgtMTIuMCwgMC4wLCAyLjAsIDEuMCkgfCB2ZWM0KDAuMCwgMzIu
MCwgNjQuMCwgMS4wKSB8IHZlYzQoMi4wLCAwLjAsIDAuMCwgMS4wKSB8IHZlYzQoMTEuMCwgMzIu
MCwgNjQuMCwgMS4wKSB8IHZlYzQoOC4wLCAwLjAsIDAuMCwgMC4wKSB8IHZlYzQoMjU1LjAsIDEu
MCwgMS4wLCAwLjApIHwgdmVjNCg1LjAsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWM0KGluMCwgaW4xLCBpbjIp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdXZlYzJfYm9v
bF90b19pdmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50
IGluMCA9IFsgMSB8IC0xOTIgfCAtNjYgfCAtMTIgfCAwIHwgMiB8IDExIHwgOCB8IDI1NSB8IDUg
XTsKKwkJCWlucHV0IHV2ZWMyIGluMSA9IFsgdXZlYzIoMCwgMikgfCB1dmVjMigxLCAxKSB8IHV2
ZWMyKDAsIDApIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwgMCkgfCB1
dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDAsIDApIF07
CisJCQlpbnB1dCBib29sIGluMiA9IFsgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgdHJ1
ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgaXZl
YzQgb3V0MCA9IFsgaXZlYzQoMSwgMCwgMiwgMCkgfCBpdmVjNCgtMTkyLCAxLCAxLCAwKSB8IGl2
ZWM0KC02NiwgMCwgMCwgMSkgfCBpdmVjNCgtMTIsIDAsIDIsIDEpIHwgaXZlYzQoMCwgMzIsIDY0
LCAxKSB8IGl2ZWM0KDIsIDAsIDAsIDEpIHwgaXZlYzQoMTEsIDMyLCA2NCwgMSkgfCBpdmVjNCg4
LCAwLCAwLCAwKSB8IGl2ZWM0KDI1NSwgMSwgMSwgMCkgfCBpdmVjNCg1LCAwLCAwLCAwKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzQo
aW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGludF91dmVjMl9ib29sX3RvX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgLTE5MiB8IC02NiB8IC0xMiB8IDAgfCAyIHwgMTEg
fCA4IHwgMjU1IHwgNSBdOworCQkJaW5wdXQgdXZlYzIgaW4xID0gWyB1dmVjMigwLCAyKSB8IHV2
ZWMyKDEsIDEpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1
dmVjMigwLCAwKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwg
dXZlYzIoMCwgMCkgXTsKKwkJCWlucHV0IGJvb2wgaW4yID0gWyBmYWxzZSB8IGZhbHNlIHwgdHJ1
ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgXTsK
KwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2Up
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGJ2ZWM0KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX3ZlYzJfdG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDMyLjAsIDY0LjAp
IHwgdmVjMigwLjc1LCAwLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDAu
NSwgMi4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCWlucHV0IHZlYzIgaW4xID0gWyB2ZWMy
KDAuNSwgMi4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDMyLjAsIDY0LjApIHwgdmVjMigw
LjAsIDAuNSkgfCB2ZWMyKDAuNzUsIDAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCB1dmVj
NCBvdXQwID0gWyB1dmVjNCgzMiwgNjQsIDAsIDIpIHwgdXZlYzQoMCwgMCwgMSwgMSkgfCB1dmVj
NCgwLCAwLCAzMiwgNjQpIHwgdXZlYzQoMCwgMiwgMCwgMCkgfCB1dmVjNCgxLCAxLCAwLCAwKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZl
YzQoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBi
dmVjMl9idmVjMl90b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1
ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIF07CisJCQlpbnB1dCBidmVjMiBpbjEgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0gWyB1
dmVjNCgxLCAwLCAxLCAxKSB8IHV2ZWM0KDAsIDEsIDAsIDApIHwgdXZlYzQoMSwgMSwgMSwgMCkg
fCB1dmVjNCgwLCAwLCAwLCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjAsIGluMSk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X2Zsb2F0
X2Zsb2F0X3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBmbG9hdCBpbjAgPSBbIDIuMCB8IDM2LjgxMjUgfCAwLjAgfCAyMC4xMjUgfCAxLjAgfCAwLjUg
fCA4LjI1IHwgMy41IF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IDguMjUgfCAyLjAg
fCAyMC4xMjUgfCAzNi44MTI1IHwgMC4wIHwgMC41IHwgMy41IF07CisJCQlpbnB1dCBmbG9hdCBp
bjIgPSBbIDAuMCB8IDguMjUgfCAyLjAgfCAxLjAgfCAzNi44MTI1IHwgMjAuMTI1IHwgMC41IHwg
My41IF07CisJCQlpbnB1dCBmbG9hdCBpbjMgPSBbIDEuMCB8IDguMjUgfCAwLjAgfCAyLjAgfCAy
MC4xMjUgfCAzLjUgfCAwLjUgfCAzNi44MTI1IF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsg
dXZlYzQoMiwgMSwgMCwgMSkgfCB1dmVjNCgzNiwgOCwgOCwgOCkgfCB1dmVjNCgwLCAyLCAyLCAw
KSB8IHV2ZWM0KDIwLCAyMCwgMSwgMikgfCB1dmVjNCgxLCAzNiwgMzYsIDIwKSB8IHV2ZWM0KDAs
IDAsIDIwLCAzKSB8IHV2ZWM0KDgsIDAsIDAsIDApIHwgdXZlYzQoMywgMywgMywgMzYpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChp
bjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBpbnRfaW50X2ludF9pbnRfdG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDE5MiB8IDIgfCAxMiB8IDExIHwgMCB8IDggfCA1
IHwgNjYgfCAxIHwgMjU1IF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyA2NiB8IDEyIHwgNSB8IDEg
fCAwIHwgMTkyIHwgOCB8IDI1NSB8IDExIHwgMiBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMTky
IHwgNSB8IDEgfCA2NiB8IDI1NSB8IDExIHwgOCB8IDEyIHwgMiB8IDAgXTsKKwkJCWlucHV0IGlu
dCBpbjMgPSBbIDI1NSB8IDUgfCAxMSB8IDEyIHwgMiB8IDEgfCA2NiB8IDAgfCA4IHwgMTkyIF07
CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMTkyLCA2NiwgMTkyLCAyNTUpIHwgdXZl
YzQoMiwgMTIsIDUsIDUpIHwgdXZlYzQoMTIsIDUsIDEsIDExKSB8IHV2ZWM0KDExLCAxLCA2Niwg
MTIpIHwgdXZlYzQoMCwgMCwgMjU1LCAyKSB8IHV2ZWM0KDgsIDE5MiwgMTEsIDEpIHwgdXZlYzQo
NSwgOCwgOCwgNjYpIHwgdXZlYzQoNjYsIDI1NSwgMTIsIDApIHwgdXZlYzQoMSwgMTEsIDIsIDgp
IHwgdXZlYzQoMjU1LCAyLCAwLCAxOTIpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3VpbnRfdWludF91aW50X3Rv
X3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGlu
MCA9IFsgMjU1IHwgOCB8IDMgfCAxOTMgfCA0NSB8IDIgfCAwIHwgMTIgfCA5IHwgMTAgXTsKKwkJ
CWlucHV0IHVpbnQgaW4xID0gWyAyNTUgfCA0NSB8IDAgfCAxMiB8IDIgfCAxMCB8IDggfCA5IHwg
MTkzIHwgMyBdOworCQkJaW5wdXQgdWludCBpbjIgPSBbIDMgfCAwIHwgMiB8IDkgfCAxMiB8IDEw
IHwgMjU1IHwgNDUgfCAxOTMgfCA4IF07CisJCQlpbnB1dCB1aW50IGluMyA9IFsgMiB8IDI1NSB8
IDEwIHwgMTkzIHwgOCB8IDEyIHwgMyB8IDkgfCAwIHwgNDUgXTsKKwkJCW91dHB1dCB1dmVjNCBv
dXQwID0gWyB1dmVjNCgyNTUsIDI1NSwgMywgMikgfCB1dmVjNCg4LCA0NSwgMCwgMjU1KSB8IHV2
ZWM0KDMsIDAsIDIsIDEwKSB8IHV2ZWM0KDE5MywgMTIsIDksIDE5MykgfCB1dmVjNCg0NSwgMiwg
MTIsIDgpIHwgdXZlYzQoMiwgMTAsIDEwLCAxMikgfCB1dmVjNCgwLCA4LCAyNTUsIDMpIHwgdXZl
YzQoMTIsIDksIDQ1LCA5KSB8IHV2ZWM0KDksIDE5MywgMTkzLCAwKSB8IHV2ZWM0KDEwLCAzLCA4
LCA0NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IHV2ZWM0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF9ib29sX2Jvb2xfdG9fdXZlYzQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxzZSB8IHRydWUg
XTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGJvb2wg
aW4yID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4zID0gWyB0cnVlIHwgZmFs
c2UgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0gWyB1dmVjNCgwLCAwLCAxLCAxKSB8IHV2ZWM0
KDEsIDEsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSB1dmVjNChpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2ludF9ib29sX3RvX3V2ZWM0CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8
IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxz
ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDIwLjEyNSB8IDAuMCB8IDEuMCB8
IDMuNSB8IDEuMCB8IDAuMCB8IDAuNSB8IDguMjUgfCAyLjAgfCAzNi44MTI1IF07CisJCQlpbnB1
dCBpbnQgaW4yID0gWyA2NiB8IDE5MiB8IDEgfCAyIHwgNSB8IDExIHwgOCB8IDEyIHwgMjU1IHwg
MCBdOworCQkJaW5wdXQgYm9vbCBpbjMgPSBbIHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBm
YWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSBdOworCQkJb3V0cHV0
IHV2ZWM0IG91dDAgPSBbIHV2ZWM0KDEsIDIwLCA2NiwgMSkgfCB1dmVjNCgwLCAwLCAxOTIsIDEp
IHwgdXZlYzQoMCwgMSwgMSwgMSkgfCB1dmVjNCgxLCAzLCAyLCAxKSB8IHV2ZWM0KDAsIDEsIDUs
IDApIHwgdXZlYzQoMSwgMCwgMTEsIDEpIHwgdXZlYzQoMSwgMCwgOCwgMCkgfCB1dmVjNCgxLCA4
LCAxMiwgMCkgfCB1dmVjNCgwLCAyLCAyNTUsIDApIHwgdXZlYzQoMCwgMzYsIDAsIDApIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChp
bjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB2ZWMyX2l2ZWMyX3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjUsIDIuMjUpIHwgdmVjMigxLjAsIDEuMjUp
IHwgdmVjMigzMi4wLCA2NC4wKSB8IHZlYzIoMC43NSwgMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIo
MC4wLCAwLjUpIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDEsIDEpIHwgaXZlYzIo
MCwgMikgfCBpdmVjMigzMiwgNjQpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAwKSBdOworCQkJ
b3V0cHV0IHV2ZWM0IG91dDAgPSBbIHV2ZWM0KDAsIDIsIDEsIDEpIHwgdXZlYzQoMSwgMSwgMCwg
MikgfCB1dmVjNCgzMiwgNjQsIDMyLCA2NCkgfCB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDAs
IDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSB1dmVjNChpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlYzJfYnZlYzJfdG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDMyLjAsIDY0LjApIHwgdmVjMigwLjc1
LCAwLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigwLjUsIDIuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2
ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCWlucHV0IGJ2ZWMyIGluMSA9IFsgYnZlYzIoZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihm
YWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSBdOworCQkJb3V0cHV0IHV2ZWM0IG91dDAg
PSBbIHV2ZWM0KDMyLCA2NCwgMCwgMCkgfCB1dmVjNCgwLCAwLCAwLCAwKSB8IHV2ZWM0KDAsIDIs
IDEsIDApIHwgdXZlYzQoMCwgMCwgMCwgMSkgfCB1dmVjNCgxLCAxLCAxLCAxKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzQoaW4wLCBp
bjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM19mbG9h
dF90b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZl
YzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBm
YWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwgMC4wIHwgMzYuODEyNSB8IDAu
NSB8IDEuMCB8IDguMjUgfCAzLjUgfCAyMC4xMjUgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0g
WyB1dmVjNCgxLCAwLCAwLCAyKSB8IHV2ZWM0KDEsIDEsIDEsIDApIHwgdXZlYzQoMCwgMSwgMCwg
MzYpIHwgdXZlYzQoMCwgMCwgMCwgMCkgfCB1dmVjNCgwLCAwLCAwLCAxKSB8IHV2ZWM0KDAsIDEs
IDAsIDgpIHwgdXZlYzQoMSwgMCwgMCwgMykgfCB1dmVjNCgwLCAwLCAwLCAyMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWM0KGluMCwg
aW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM19mbG9h
dF90b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
MyBpbjAgPSBbIHZlYzMoMC41LCAyLjI1LCA0Ljg3NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUp
IHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDAuNSwgMi4yNSwgNC44NzUpIHwgdmVjMygz
Mi4wLCA2NC4wLCA1MS4wKSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKDAuNzUsIDAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIF07
CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDguMjUgfCAxLjAgfCAwLjAgfCAzNi44MTI1IHwgMi4w
IHwgMC41IHwgMjAuMTI1IHwgMy41IF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQo
MCwgMiwgNCwgOCkgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDApIHwgdXZl
YzQoMCwgMiwgNCwgMzYpIHwgdXZlYzQoMzIsIDY0LCA1MSwgMikgfCB1dmVjNCgxLCAxLCAxLCAw
KSB8IHV2ZWM0KDAsIDAsIDAsIDIwKSB8IHV2ZWM0KDAsIDAsIDAsIDMpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjAsIGluMSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pdmVjMl9pbnRf
dG9fdXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBp
bjAgPSBbIDggfCAxIHwgMTEgfCAxOTIgfCAyNTUgfCAxMiB8IDY2IHwgMiB8IDAgfCA1IF07CisJ
CQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigx
LCAxKSB8IGl2ZWMyKDMyLCA2NCkgfCBpdmVjMigwLCAyKSB8IGl2ZWMyKDAsIDIpIHwgaXZlYzIo
MCwgMCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJ
aW5wdXQgaW50IGluMiA9IFsgMiB8IDE5MiB8IDEyIHwgMCB8IDggfCAxIHwgNjYgfCAyNTUgfCAx
MSB8IDUgXTsKKwkJCW91dHB1dCB1dmVjNCBvdXQwID0gWyB1dmVjNCg4LCAxLCAxLCAyKSB8IHV2
ZWM0KDEsIDAsIDAsIDE5MikgfCB1dmVjNCgxMSwgMSwgMSwgMTIpIHwgdXZlYzQoMTkyLCAzMiwg
NjQsIDApIHwgdXZlYzQoMjU1LCAwLCAyLCA4KSB8IHV2ZWM0KDEyLCAwLCAyLCAxKSB8IHV2ZWM0
KDY2LCAwLCAwLCA2NikgfCB1dmVjNCgyLCAwLCAwLCAyNTUpIHwgdXZlYzQoMCwgMzIsIDY0LCAx
MSkgfCB1dmVjNCg1LCAwLCAwLCA1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzQoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfZmxvYXRfaXZlYzJfdG9fdXZlYzQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVl
IHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgXTsK
KwkJCWlucHV0IGZsb2F0IGluMSA9IFsgOC4yNSB8IDAuNSB8IDIuMCB8IDIwLjEyNSB8IDAuMCB8
IDM2LjgxMjUgfCAzLjUgfCAxLjAgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMzIs
IDY0KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMikgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAs
IDApIHwgaXZlYzIoMCwgMikgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRw
dXQgdXZlYzQgb3V0MCA9IFsgdXZlYzQoMSwgOCwgMzIsIDY0KSB8IHV2ZWM0KDEsIDAsIDEsIDEp
IHwgdXZlYzQoMCwgMiwgMCwgMikgfCB1dmVjNCgwLCAyMCwgMCwgMCkgfCB1dmVjNCgxLCAwLCAw
LCAwKSB8IHV2ZWM0KDAsIDM2LCAwLCAyKSB8IHV2ZWM0KDAsIDMsIDEsIDEpIHwgdXZlYzQoMSwg
MSwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IHV2ZWM0KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBmbG9hdF91dmVjM190b191dmVjNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyA4LjI1IHwgMjAuMTI1IHwgMS4wIHwg
MC41IHwgMy41IHwgMi4wIHwgMzYuODEyNSB8IDAuMCBdOworCQkJaW5wdXQgdXZlYzMgaW4xID0g
WyB1dmVjMygwLCAwLCAwKSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVj
MygzMiwgNjQsIDUxKSB8IHV2ZWMzKDAsIDIsIDQpIHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygx
LCAxLCAxKSB8IHV2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgdXZlYzQgb3V0MCA9IFsgdXZl
YzQoOCwgMCwgMCwgMCkgfCB1dmVjNCgyMCwgMCwgMCwgMCkgfCB1dmVjNCgxLCAwLCAyLCA0KSB8
IHV2ZWM0KDAsIDMyLCA2NCwgNTEpIHwgdXZlYzQoMywgMCwgMiwgNCkgfCB1dmVjNCgyLCAxLCAx
LCAxKSB8IHV2ZWM0KDM2LCAxLCAxLCAxKSB8IHV2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjAsIGlu
MSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF91dmVjMl9i
b29sX3RvX3V2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
bnQgaW4wID0gWyAyIHwgMSB8IDExIHwgNjYgfCAxOTIgfCAxMiB8IDggfCAyNTUgfCAwIHwgNSBd
OworCQkJaW5wdXQgdXZlYzIgaW4xID0gWyB1dmVjMigxLCAxKSB8IHV2ZWMyKDAsIDApIHwgdXZl
YzIoMCwgMCkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDAsIDApIHwgdXZlYzIoMCwgMikgfCB1dmVj
MigzMiwgNjQpIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMCwgMCkgXTsK
KwkJCWlucHV0IGJvb2wgaW4yID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgZmFs
c2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsKKwkJCW91dHB1dCB1dmVj
NCBvdXQwID0gWyB1dmVjNCgyLCAxLCAxLCAxKSB8IHV2ZWM0KDEsIDAsIDAsIDApIHwgdXZlYzQo
MTEsIDAsIDAsIDApIHwgdXZlYzQoNjYsIDAsIDIsIDApIHwgdXZlYzQoMTkyLCAwLCAwLCAwKSB8
IHV2ZWM0KDEyLCAwLCAyLCAxKSB8IHV2ZWM0KDgsIDMyLCA2NCwgMSkgfCB1dmVjNCgyNTUsIDEs
IDEsIDEpIHwgdXZlYzQoMCwgMzIsIDY0LCAwKSB8IHV2ZWM0KDUsIDAsIDAsIDEpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjNChpbjAs
IGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxv
YXRfZmxvYXRfZmxvYXRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgZmxvYXQgaW4wID0gWyAtMC41IHwgMS4wIHwgMy41IHwgLTguMjUgfCAzNi44MTI1
IHwgMC4wIHwgMi4wIHwgLTIwLjEyNSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAyLjAgfCAt
MjAuMTI1IHwgMy41IHwgMzYuODEyNSB8IC04LjI1IHwgMS4wIHwgLTAuNSB8IDAuMCBdOworCQkJ
aW5wdXQgZmxvYXQgaW4yID0gWyAxLjAgfCAzLjUgfCAyLjAgfCAtOC4yNSB8IC0yMC4xMjUgfCAt
MC41IHwgMzYuODEyNSB8IDAuMCBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygtMC41
LCAyLjAsIDEuMCkgfCB2ZWMzKDEuMCwgLTIwLjEyNSwgMy41KSB8IHZlYzMoMy41LCAzLjUsIDIu
MCkgfCB2ZWMzKC04LjI1LCAzNi44MTI1LCAtOC4yNSkgfCB2ZWMzKDM2LjgxMjUsIC04LjI1LCAt
MjAuMTI1KSB8IHZlYzMoMC4wLCAxLjAsIC0wLjUpIHwgdmVjMygyLjAsIC0wLjUsIDM2LjgxMjUp
IHwgdmVjMygtMjAuMTI1LCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X2Zsb2F0X3RvX2l2ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBb
IC0wLjUgfCAxLjAgfCAzLjUgfCAtOC4yNSB8IDM2LjgxMjUgfCAwLjAgfCAyLjAgfCAtMjAuMTI1
IF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDIuMCB8IC0yMC4xMjUgfCAzLjUgfCAzNi44MTI1
IHwgLTguMjUgfCAxLjAgfCAtMC41IHwgMC4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjIgPSBbIDEu
MCB8IDMuNSB8IDIuMCB8IC04LjI1IHwgLTIwLjEyNSB8IC0wLjUgfCAzNi44MTI1IHwgMC4wIF07
CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMiwgMSkgfCBpdmVjMygxLCAtMjAs
IDMpIHwgaXZlYzMoMywgMywgMikgfCBpdmVjMygtOCwgMzYsIC04KSB8IGl2ZWMzKDM2LCAtOCwg
LTIwKSB8IGl2ZWMzKDAsIDEsIDApIHwgaXZlYzMoMiwgMCwgMzYpIHwgaXZlYzMoLTIwLCAwLCAw
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aXZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGZsb2F0X2Zsb2F0X2Zsb2F0X3RvX2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIC0wLjUgfCAxLjAgfCAzLjUgfCAtOC4y
NSB8IDM2LjgxMjUgfCAwLjAgfCAyLjAgfCAtMjAuMTI1IF07CisJCQlpbnB1dCBmbG9hdCBpbjEg
PSBbIDIuMCB8IC0yMC4xMjUgfCAzLjUgfCAzNi44MTI1IHwgLTguMjUgfCAxLjAgfCAtMC41IHwg
MC4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjIgPSBbIDEuMCB8IDMuNSB8IDIuMCB8IC04LjI1IHwg
LTIwLjEyNSB8IC0wLjUgfCAzNi44MTI1IHwgMC4wIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9
IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wLCBpbjEsIGlu
Mik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50
X3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBp
bjAgPSBbIC0xOTIgfCA1IHwgLTEyIHwgMCB8IDExIHwgOCB8IDEgfCAtNjYgfCAyNTUgfCAyIF07
CisJCQlpbnB1dCBpbnQgaW4xID0gWyA1IHwgMSB8IDggfCAwIHwgMiB8IC0xOTIgfCAtMTIgfCAy
NTUgfCAtNjYgfCAxMSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgLTE5MiB8IDEgfCAyIHwgNSB8
IC0xMiB8IDggfCAxMSB8IDAgfCAyNTUgfCAtNjYgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBb
IHZlYzMoLTE5Mi4wLCA1LjAsIC0xOTIuMCkgfCB2ZWMzKDUuMCwgMS4wLCAxLjApIHwgdmVjMygt
MTIuMCwgOC4wLCAyLjApIHwgdmVjMygwLjAsIDAuMCwgNS4wKSB8IHZlYzMoMTEuMCwgMi4wLCAt
MTIuMCkgfCB2ZWMzKDguMCwgLTE5Mi4wLCA4LjApIHwgdmVjMygxLjAsIC0xMi4wLCAxMS4wKSB8
IHZlYzMoLTY2LjAsIDI1NS4wLCAwLjApIHwgdmVjMygyNTUuMCwgLTY2LjAsIDI1NS4wKSB8IHZl
YzMoMi4wLCAxMS4wLCAtNjYuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50X3RvX2l2ZWMzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAtMTkyIHwgNSB8IC0x
MiB8IDAgfCAxMSB8IDggfCAxIHwgLTY2IHwgMjU1IHwgMiBdOworCQkJaW5wdXQgaW50IGluMSA9
IFsgNSB8IDEgfCA4IHwgMCB8IDIgfCAtMTkyIHwgLTEyIHwgMjU1IHwgLTY2IHwgMTEgXTsKKwkJ
CWlucHV0IGludCBpbjIgPSBbIC0xOTIgfCAxIHwgMiB8IDUgfCAtMTIgfCA4IHwgMTEgfCAwIHwg
MjU1IHwgLTY2IF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoLTE5MiwgNSwgLTE5
MikgfCBpdmVjMyg1LCAxLCAxKSB8IGl2ZWMzKC0xMiwgOCwgMikgfCBpdmVjMygwLCAwLCA1KSB8
IGl2ZWMzKDExLCAyLCAtMTIpIHwgaXZlYzMoOCwgLTE5MiwgOCkgfCBpdmVjMygxLCAtMTIsIDEx
KSB8IGl2ZWMzKC02NiwgMjU1LCAwKSB8IGl2ZWMzKDI1NSwgLTY2LCAyNTUpIHwgaXZlYzMoMiwg
MTEsIC02NikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGl2ZWMzKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpbnRfaW50X2ludF90b19idmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgLTE5MiB8IDUgfCAtMTIgfCAwIHwgMTEg
fCA4IHwgMSB8IC02NiB8IDI1NSB8IDIgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIDUgfCAxIHwg
OCB8IDAgfCAyIHwgLTE5MiB8IC0xMiB8IDI1NSB8IC02NiB8IDExIF07CisJCQlpbnB1dCBpbnQg
aW4yID0gWyAtMTkyIHwgMSB8IDIgfCA1IHwgLTEyIHwgOCB8IDExIHwgMCB8IDI1NSB8IC02NiBd
OworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRy
dWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBidmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdWludF91aW50X3VpbnRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDggfCA0NSB8IDIgfCAzIHwgMjU1IHwgMTkz
IHwgMTIgfCAwIHwgOSB8IDEwIF07CisJCQlpbnB1dCB1aW50IGluMSA9IFsgMTkzIHwgMiB8IDkg
fCA4IHwgMCB8IDI1NSB8IDQ1IHwgMyB8IDEwIHwgMTIgXTsKKwkJCWlucHV0IHVpbnQgaW4yID0g
WyAxMiB8IDIgfCAxOTMgfCAyNTUgfCA4IHwgMTAgfCA0NSB8IDAgfCAzIHwgOSBdOworCQkJb3V0
cHV0IHZlYzMgb3V0MCA9IFsgdmVjMyg4LjAsIDE5My4wLCAxMi4wKSB8IHZlYzMoNDUuMCwgMi4w
LCAyLjApIHwgdmVjMygyLjAsIDkuMCwgMTkzLjApIHwgdmVjMygzLjAsIDguMCwgMjU1LjApIHwg
dmVjMygyNTUuMCwgMC4wLCA4LjApIHwgdmVjMygxOTMuMCwgMjU1LjAsIDEwLjApIHwgdmVjMygx
Mi4wLCA0NS4wLCA0NS4wKSB8IHZlYzMoMC4wLCAzLjAsIDAuMCkgfCB2ZWMzKDkuMCwgMTAuMCwg
My4wKSB8IHZlYzMoMTAuMCwgMTIuMCwgOS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF91aW50X3VpbnRfdG9faXZlYzMK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyA4
IHwgNDUgfCAyIHwgMyB8IDI1NSB8IDE5MyB8IDEyIHwgMCB8IDkgfCAxMCBdOworCQkJaW5wdXQg
dWludCBpbjEgPSBbIDE5MyB8IDIgfCA5IHwgOCB8IDAgfCAyNTUgfCA0NSB8IDMgfCAxMCB8IDEy
IF07CisJCQlpbnB1dCB1aW50IGluMiA9IFsgMTIgfCAyIHwgMTkzIHwgMjU1IHwgOCB8IDEwIHwg
NDUgfCAwIHwgMyB8IDkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMyg4LCAxOTMs
IDEyKSB8IGl2ZWMzKDQ1LCAyLCAyKSB8IGl2ZWMzKDIsIDksIDE5MykgfCBpdmVjMygzLCA4LCAy
NTUpIHwgaXZlYzMoMjU1LCAwLCA4KSB8IGl2ZWMzKDE5MywgMjU1LCAxMCkgfCBpdmVjMygxMiwg
NDUsIDQ1KSB8IGl2ZWMzKDAsIDMsIDApIHwgaXZlYzMoOSwgMTAsIDMpIHwgaXZlYzMoMTAsIDEy
LCA5KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaXZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHVpbnRfdWludF91aW50X3RvX2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgOCB8IDQ1IHwgMiB8IDMgfCAyNTUgfCAx
OTMgfCAxMiB8IDAgfCA5IHwgMTAgXTsKKwkJCWlucHV0IHVpbnQgaW4xID0gWyAxOTMgfCAyIHwg
OSB8IDggfCAwIHwgMjU1IHwgNDUgfCAzIHwgMTAgfCAxMiBdOworCQkJaW5wdXQgdWludCBpbjIg
PSBbIDEyIHwgMiB8IDE5MyB8IDI1NSB8IDggfCAxMCB8IDQ1IHwgMCB8IDMgfCA5IF07CisJCQlv
dXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNl
KSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMz
KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBib29sX2Jvb2xfYm9vbF90b192ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGlu
MSA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMiA9IFsgdHJ1ZSB8IGZhbHNl
IF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygw
LjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfdG9faXZlYzMKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsK
KwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4y
ID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygxLCAx
LCAxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfdG9fYnZlYzMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwg
ZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0
IGJvb2wgaW4yID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhp
bjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Ym9vbF9mbG9hdF9pbnRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgZmxvYXQg
aW4xID0gWyAwLjAgfCAzNi44MTI1IHwgMC4wIHwgLTguMjUgfCAxLjAgfCAzLjUgfCAxLjAgfCAt
MC41IHwgLTIwLjEyNSB8IDIuMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgOCB8IC0xOTIgfCAt
NjYgfCAyIHwgMSB8IC0xMiB8IDExIHwgMjU1IHwgNSB8IDAgXTsKKwkJCW91dHB1dCB2ZWMzIG91
dDAgPSBbIHZlYzMoMS4wLCAwLjAsIDguMCkgfCB2ZWMzKDEuMCwgMzYuODEyNSwgLTE5Mi4wKSB8
IHZlYzMoMC4wLCAwLjAsIC02Ni4wKSB8IHZlYzMoMC4wLCAtOC4yNSwgMi4wKSB8IHZlYzMoMS4w
LCAxLjAsIDEuMCkgfCB2ZWMzKDAuMCwgMy41LCAtMTIuMCkgfCB2ZWMzKDEuMCwgMS4wLCAxMS4w
KSB8IHZlYzMoMC4wLCAtMC41LCAyNTUuMCkgfCB2ZWMzKDAuMCwgLTIwLjEyNSwgNS4wKSB8IHZl
YzMoMS4wLCAyLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfZmxvYXRfaW50X3RvX2l2ZWMzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IHRydWUg
fCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDAuMCB8IDM2LjgxMjUgfCAwLjAgfCAtOC4y
NSB8IDEuMCB8IDMuNSB8IDEuMCB8IC0wLjUgfCAtMjAuMTI1IHwgMi4wIF07CisJCQlpbnB1dCBp
bnQgaW4yID0gWyA4IHwgLTE5MiB8IC02NiB8IDIgfCAxIHwgLTEyIHwgMTEgfCAyNTUgfCA1IHwg
MCBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDEsIDAsIDgpIHwgaXZlYzMoMSwg
MzYsIC0xOTIpIHwgaXZlYzMoMCwgMCwgLTY2KSB8IGl2ZWMzKDAsIC04LCAyKSB8IGl2ZWMzKDEs
IDEsIDEpIHwgaXZlYzMoMCwgMywgLTEyKSB8IGl2ZWMzKDEsIDEsIDExKSB8IGl2ZWMzKDAsIDAs
IDI1NSkgfCBpdmVjMygwLCAtMjAsIDUpIHwgaXZlYzMoMSwgMiwgMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMzKGluMCwgaW4xLCBp
bjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0
X2ludF90b19idmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
Ym9vbCBpbjAgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8
IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAw
LjAgfCAzNi44MTI1IHwgMC4wIHwgLTguMjUgfCAxLjAgfCAzLjUgfCAxLjAgfCAtMC41IHwgLTIw
LjEyNSB8IDIuMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgOCB8IC0xOTIgfCAtNjYgfCAyIHwg
MSB8IC0xMiB8IDExIHwgMjU1IHwgNSB8IDAgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBi
dmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMyhpbjAsIGluMSwgaW4yKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9ib29sX3RvX3Zl
YzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0g
WyB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIo
LTMyLjAsIDY0LjApIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKDAuMCwgMC41KSBdOworCQkJ
aW5wdXQgYm9vbCBpbjEgPSBbIGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgXTsK
KwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMS4wLCAxLjI1LCAwLjApIHwgdmVjMygtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMS4wKSB8IHZlYzMoLTMyLjAsIDY0LjAsIDEuMCkgfCB2ZWMz
KC0wLjUsIC0yLjI1LCAxLjApIHwgdmVjMygwLjAsIDAuNSwgMC4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfYm9vbF90b19pdmVj
MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBb
IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigt
MzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4wLCAwLjUpIF07CisJCQlp
bnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSBdOwor
CQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDEsIDEsIDApIHwgaXZlYzMoMCwgMCwgMSkg
fCBpdmVjMygtMzIsIDY0LCAxKSB8IGl2ZWMzKDAsIC0yLCAxKSB8IGl2ZWMzKDAsIDAsIDApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVj
MyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZl
YzJfYm9vbF90b19idmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdmVjMiBpbjAgPSBbIHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4w
LCAwLjUpIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRy
dWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUs
IGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2
ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
YnZlYzJfZmxvYXRfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1
ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZl
YzIoZmFsc2UsIGZhbHNlKSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAtMjAuMTI1IHwgMi4w
IHwgMzYuODEyNSB8IDEuMCB8IDMuNSB8IDAuMCB8IC04LjI1IHwgLTAuNSBdOworCQkJb3V0cHV0
IHZlYzMgb3V0MCA9IFsgdmVjMygxLjAsIDAuMCwgLTIwLjEyNSkgfCB2ZWMzKDAuMCwgMS4wLCAy
LjApIHwgdmVjMygwLjAsIDEuMCwgMzYuODEyNSkgfCB2ZWMzKDEuMCwgMC4wLCAxLjApIHwgdmVj
MygwLjAsIDAuMCwgMy41KSB8IHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2ZWMzKDEuMCwgMS4wLCAt
OC4yNSkgfCB2ZWMzKDAuMCwgMC4wLCAtMC41KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJ2ZWMyX2Zsb2F0X3RvX2l2ZWMzCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRy
dWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2
ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlpbnB1
dCBmbG9hdCBpbjEgPSBbIC0yMC4xMjUgfCAyLjAgfCAzNi44MTI1IHwgMS4wIHwgMy41IHwgMC4w
IHwgLTguMjUgfCAtMC41IF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMSwgMCwg
LTIwKSB8IGl2ZWMzKDAsIDEsIDIpIHwgaXZlYzMoMCwgMSwgMzYpIHwgaXZlYzMoMSwgMCwgMSkg
fCBpdmVjMygwLCAwLCAzKSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgLTgpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGl2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYnZlYzJfZmxvYXRfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZl
YzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsg
LTIwLjEyNSB8IDIuMCB8IDM2LjgxMjUgfCAxLjAgfCAzLjUgfCAwLjAgfCAtOC4yNSB8IC0wLjUg
XTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
Myh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGJ2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzJfaW50X3RvX3ZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZh
bHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0
cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIDEgfCAtNjYgfCAyNTUg
fCA4IHwgLTE5MiB8IDIgfCA1IHwgMTEgfCAtMTIgfCAwIF07CisJCQlvdXRwdXQgdmVjMyBvdXQw
ID0gWyB2ZWMzKDEuMCwgMS4wLCAxLjApIHwgdmVjMygwLjAsIDAuMCwgLTY2LjApIHwgdmVjMygw
LjAsIDAuMCwgMjU1LjApIHwgdmVjMygxLjAsIDAuMCwgOC4wKSB8IHZlYzMoMC4wLCAwLjAsIC0x
OTIuMCkgfCB2ZWMzKDAuMCwgMS4wLCAyLjApIHwgdmVjMygxLjAsIDAuMCwgNS4wKSB8IHZlYzMo
MC4wLCAxLjAsIDExLjApIHwgdmVjMygwLjAsIDAuMCwgLTEyLjApIHwgdmVjMygxLjAsIDEuMCwg
MC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIGJ2ZWMyX2ludF90b19pdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIo
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8
IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0
cnVlKSBdOworCQkJaW5wdXQgaW50IGluMSA9IFsgMSB8IC02NiB8IDI1NSB8IDggfCAtMTkyIHwg
MiB8IDUgfCAxMSB8IC0xMiB8IDAgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKDAsIDAsIC02NikgfCBpdmVjMygwLCAwLCAyNTUpIHwgaXZlYzMoMSwg
MCwgOCkgfCBpdmVjMygwLCAwLCAtMTkyKSB8IGl2ZWMzKDAsIDEsIDIpIHwgaXZlYzMoMSwgMCwg
NSkgfCBpdmVjMygwLCAxLCAxMSkgfCBpdmVjMygwLCAwLCAtMTIpIHwgaXZlYzMoMSwgMSwgMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2
ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
YnZlYzJfaW50X3RvX2J2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZl
YzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAxIHwgLTY2IHwgMjU1IHwgOCB8IC0xOTIgfCAyIHwg
NSB8IDExIHwgLTEyIHwgMCBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0
cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wLCBpbjEpOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2l2ZWMyX3RvX3ZlYzMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwg
dHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2
ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2
ZWMyKC0zMiwgNjQpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDEuMCwgMC4wLCAt
Mi4wKSB8IHZlYzMoMS4wLCAwLjAsIDAuMCkgfCB2ZWMzKDAuMCwgMC4wLCAwLjApIHwgdmVjMygw
LjAsIDEuMCwgMS4wKSB8IHZlYzMoMS4wLCAtMzIuMCwgNjQuMCkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzMoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2l2ZWMyX3RvX2l2ZWMz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsg
dHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgaXZlYzIgaW4x
ID0gWyBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwg
MSkgfCBpdmVjMigtMzIsIDY0KSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDEs
IDAsIC0yKSB8IGl2ZWMzKDEsIDAsIDApIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygwLCAxLCAx
KSB8IGl2ZWMzKDEsIC0zMiwgNjQpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfaXZlYzJfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgdHJ1ZSB8IGZh
bHNlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIC0y
KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKC0zMiwg
NjQpIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUp
IHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMz
KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxv
YXRfdXZlYzJfdG9fdmVjMworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgZmxvYXQgaW4wID0gWyAtMjAuMTI1IHwgMzYuODEyNSB8IC04LjI1IHwgMi4wIHwgLTAuNSB8
IDAuMCB8IDMuNSB8IDEuMCBdOworCQkJaW5wdXQgdXZlYzIgaW4xID0gWyB1dmVjMigwLCAwKSB8
IHV2ZWMyKDAsIDIpIHwgdXZlYzIoMzIsIDY0KSB8IHV2ZWMyKDAsIDApIHwgdXZlYzIoMCwgMikg
fCB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMSwgMSkgXTsKKwkJCW91dHB1dCB2
ZWMzIG91dDAgPSBbIHZlYzMoLTIwLjEyNSwgMC4wLCAwLjApIHwgdmVjMygzNi44MTI1LCAwLjAs
IDIuMCkgfCB2ZWMzKC04LjI1LCAzMi4wLCA2NC4wKSB8IHZlYzMoMi4wLCAwLjAsIDAuMCkgfCB2
ZWMzKC0wLjUsIDAuMCwgMi4wKSB8IHZlYzMoMC4wLCAwLjAsIDAuMCkgfCB2ZWMzKDMuNSwgMS4w
LCAxLjApIHwgdmVjMygxLjAsIDEuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMyhpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X3V2ZWMyX3RvX2l2ZWMzCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIC0yMC4xMjUg
fCAzNi44MTI1IHwgLTguMjUgfCAyLjAgfCAtMC41IHwgMC4wIHwgMy41IHwgMS4wIF07CisJCQlp
bnB1dCB1dmVjMiBpbjEgPSBbIHV2ZWMyKDAsIDApIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzMiwg
NjQpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDAsIDApIHwgdXZlYzIoMSwg
MSkgfCB1dmVjMigxLCAxKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKC0yMCwg
MCwgMCkgfCBpdmVjMygzNiwgMCwgMikgfCBpdmVjMygtOCwgMzIsIDY0KSB8IGl2ZWMzKDIsIDAs
IDApIHwgaXZlYzMoMCwgMCwgMikgfCBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDMsIDEsIDEpIHwg
aXZlYzMoMSwgMSwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGl2ZWMzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZmxvYXRfdXZlYzJfdG9fYnZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgLTIwLjEyNSB8IDM2LjgxMjUgfCAt
OC4yNSB8IDIuMCB8IC0wLjUgfCAwLjAgfCAzLjUgfCAxLjAgXTsKKwkJCWlucHV0IHV2ZWMyIGlu
MSA9IFsgdXZlYzIoMCwgMCkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDMyLCA2NCkgfCB1dmVjMigw
LCAwKSB8IHV2ZWMyKDAsIDIpIHwgdXZlYzIoMCwgMCkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDEs
IDEpIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gYnZlYzMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9mbG9hdF9mbG9hdF90b191dmVjMworCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyA4LjI1IHwgMjAu
MTI1IHwgMi4wIHwgMy41IHwgMC41IHwgMzYuODEyNSB8IDEuMCB8IDAuMCBdOworCQkJaW5wdXQg
ZmxvYXQgaW4xID0gWyAxLjAgfCAwLjAgfCAzLjUgfCAzNi44MTI1IHwgOC4yNSB8IDIuMCB8IDAu
NSB8IDIwLjEyNSBdOworCQkJaW5wdXQgZmxvYXQgaW4yID0gWyAyMC4xMjUgfCAwLjUgfCA4LjI1
IHwgMzYuODEyNSB8IDEuMCB8IDAuMCB8IDMuNSB8IDIuMCBdOworCQkJb3V0cHV0IHV2ZWMzIG91
dDAgPSBbIHV2ZWMzKDgsIDEsIDIwKSB8IHV2ZWMzKDIwLCAwLCAwKSB8IHV2ZWMzKDIsIDMsIDgp
IHwgdXZlYzMoMywgMzYsIDM2KSB8IHV2ZWMzKDAsIDgsIDEpIHwgdXZlYzMoMzYsIDIsIDApIHwg
dXZlYzMoMSwgMCwgMykgfCB1dmVjMygwLCAyMCwgMikgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMzKGluMCwgaW4xLCBpbjIpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaW50X2ludF90b191dmVj
MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsg
MSB8IDI1NSB8IDE5MiB8IDIgfCA1IHwgMTIgfCAwIHwgMTEgfCA4IHwgNjYgXTsKKwkJCWlucHV0
IGludCBpbjEgPSBbIDE5MiB8IDY2IHwgNSB8IDggfCAxMSB8IDEgfCAwIHwgMjU1IHwgMTIgfCAy
IF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAxOTIgfCA1IHwgMSB8IDExIHwgNjYgfCA4IHwgMTIg
fCAwIHwgMiB8IDI1NSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMzKDEsIDE5Miwg
MTkyKSB8IHV2ZWMzKDI1NSwgNjYsIDUpIHwgdXZlYzMoMTkyLCA1LCAxKSB8IHV2ZWMzKDIsIDgs
IDExKSB8IHV2ZWMzKDUsIDExLCA2NikgfCB1dmVjMygxMiwgMSwgOCkgfCB1dmVjMygwLCAwLCAx
MikgfCB1dmVjMygxMSwgMjU1LCAwKSB8IHV2ZWMzKDgsIDEyLCAyKSB8IHV2ZWMzKDY2LCAyLCAy
NTUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSB1dmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdWludF91aW50X3VpbnRfdG9fdXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wID0gWyAxOTMgfCA5IHwgNDUgfCAyNTUgfCAyIHwg
MCB8IDEwIHwgOCB8IDEyIHwgMyBdOworCQkJaW5wdXQgdWludCBpbjEgPSBbIDMgfCA0NSB8IDIg
fCA5IHwgMTAgfCAwIHwgOCB8IDEyIHwgMjU1IHwgMTkzIF07CisJCQlpbnB1dCB1aW50IGluMiA9
IFsgMiB8IDMgfCA5IHwgMTAgfCAyNTUgfCA4IHwgMTIgfCAwIHwgMTkzIHwgNDUgXTsKKwkJCW91
dHB1dCB1dmVjMyBvdXQwID0gWyB1dmVjMygxOTMsIDMsIDIpIHwgdXZlYzMoOSwgNDUsIDMpIHwg
dXZlYzMoNDUsIDIsIDkpIHwgdXZlYzMoMjU1LCA5LCAxMCkgfCB1dmVjMygyLCAxMCwgMjU1KSB8
IHV2ZWMzKDAsIDAsIDgpIHwgdXZlYzMoMTAsIDgsIDEyKSB8IHV2ZWMzKDgsIDEyLCAwKSB8IHV2
ZWMzKDEyLCAyNTUsIDE5MykgfCB1dmVjMygzLCAxOTMsIDQ1KSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wLCBpbjEsIGluMik7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF9ib29s
X3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29s
IGluMCA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0
cnVlIF07CisJCQlpbnB1dCBib29sIGluMiA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQg
dXZlYzMgb3V0MCA9IFsgdXZlYzMoMCwgMCwgMSkgfCB1dmVjMygxLCAxLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wLCBp
bjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xf
ZmxvYXRfaW50X3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0
cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjEg
PSBbIDM2LjgxMjUgfCAyMC4xMjUgfCAxLjAgfCAwLjAgfCAzLjUgfCAxLjAgfCAyLjAgfCAwLjUg
fCAwLjAgfCA4LjI1IF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAxIHwgMCB8IDggfCA2NiB8IDIg
fCAxMSB8IDE5MiB8IDUgfCAxMiB8IDI1NSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2
ZWMzKDEsIDM2LCAxKSB8IHV2ZWMzKDAsIDIwLCAwKSB8IHV2ZWMzKDEsIDEsIDgpIHwgdXZlYzMo
MCwgMCwgNjYpIHwgdXZlYzMoMCwgMywgMikgfCB1dmVjMygxLCAxLCAxMSkgfCB1dmVjMygwLCAy
LCAxOTIpIHwgdXZlYzMoMSwgMCwgNSkgfCB1dmVjMygxLCAwLCAxMikgfCB1dmVjMygwLCA4LCAy
NTUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSB1dmVjMyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgdmVjMl9ib29sX3RvX3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDMyLjAsIDY0
LjApIHwgdmVjMigwLjUsIDIuMjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigwLjc1LCAwLjAz
MjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCBmYWxzZSB8IHRy
dWUgfCB0cnVlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMzKDAsIDAs
IDApIHwgdXZlYzMoMzIsIDY0LCAwKSB8IHV2ZWMzKDAsIDIsIDEpIHwgdXZlYzMoMSwgMSwgMSkg
fCB1dmVjMygwLCAwLCAxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBidmVjMl9mbG9hdF90b191dmVjMworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihm
YWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJaW5wdXQgZmxvYXQgaW4x
ID0gWyA4LjI1IHwgMzYuODEyNSB8IDIwLjEyNSB8IDIuMCB8IDAuMCB8IDEuMCB8IDAuNSB8IDMu
NSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMzKDEsIDEsIDgpIHwgdXZlYzMoMSwg
MCwgMzYpIHwgdXZlYzMoMCwgMSwgMjApIHwgdXZlYzMoMCwgMCwgMikgfCB1dmVjMygxLCAwLCAw
KSB8IHV2ZWMzKDAsIDEsIDEpIHwgdXZlYzMoMCwgMCwgMCkgfCB1dmVjMygwLCAwLCAzKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMo
aW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVj
Ml9pbnRfdG9fdXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgXTsK
KwkJCWlucHV0IGludCBpbjEgPSBbIDI1NSB8IDEgfCAyIHwgNSB8IDAgfCAxMSB8IDE5MiB8IDEy
IHwgOCB8IDY2IF07CisJCQlvdXRwdXQgdXZlYzMgb3V0MCA9IFsgdXZlYzMoMSwgMSwgMjU1KSB8
IHV2ZWMzKDAsIDEsIDEpIHwgdXZlYzMoMCwgMCwgMikgfCB1dmVjMygxLCAxLCA1KSB8IHV2ZWMz
KDAsIDAsIDApIHwgdXZlYzMoMSwgMCwgMTEpIHwgdXZlYzMoMCwgMCwgMTkyKSB8IHV2ZWMzKDAs
IDAsIDEyKSB8IHV2ZWMzKDAsIDEsIDgpIHwgdXZlYzMoMSwgMCwgNjYpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMyhpbjAsIGluMSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfaXZlYzJfdG9f
dXZlYzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4w
ID0gWyB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBpdmVj
MiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMikgfCBpdmVjMigxLCAxKSB8IGl2ZWMy
KDAsIDApIHwgaXZlYzIoMzIsIDY0KSBdOworCQkJb3V0cHV0IHV2ZWMzIG91dDAgPSBbIHV2ZWMz
KDEsIDAsIDApIHwgdXZlYzMoMCwgMCwgMikgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDEsIDAs
IDApIHwgdXZlYzMoMCwgMzIsIDY0KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF91dmVjMl90b191dmVjMworCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAyLjAgfCA4LjI1IHwg
MjAuMTI1IHwgMy41IHwgMC4wIHwgMC41IHwgMzYuODEyNSB8IDEuMCBdOworCQkJaW5wdXQgdXZl
YzIgaW4xID0gWyB1dmVjMigwLCAyKSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMzIsIDY0KSB8IHV2
ZWMyKDAsIDApIHwgdXZlYzIoMCwgMikgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDEsIDEpIHwgdXZl
YzIoMCwgMCkgXTsKKwkJCW91dHB1dCB1dmVjMyBvdXQwID0gWyB1dmVjMygyLCAwLCAyKSB8IHV2
ZWMzKDgsIDEsIDEpIHwgdXZlYzMoMjAsIDMyLCA2NCkgfCB1dmVjMygzLCAwLCAwKSB8IHV2ZWMz
KDAsIDAsIDIpIHwgdXZlYzMoMCwgMCwgMCkgfCB1dmVjMygzNiwgMSwgMSkgfCB1dmVjMygxLCAw
LCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gdXZlYzMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBmbG9hdF9mbG9hdF90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIC0wLjUgfCAtMjAuMTI1IHwgMS4wIHwgMi4wIHwgMy41
IHwgMzYuODEyNSB8IC04LjI1IHwgMC4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8
IC0yMC4xMjUgfCAwLjAgfCAzLjUgfCAtOC4yNSB8IDM2LjgxMjUgfCAtMC41IHwgMi4wIF07CisJ
CQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKC0wLjUsIDEuMCkgfCB2ZWMyKC0yMC4xMjUsIC0y
MC4xMjUpIHwgdmVjMigxLjAsIDAuMCkgfCB2ZWMyKDIuMCwgMy41KSB8IHZlYzIoMy41LCAtOC4y
NSkgfCB2ZWMyKDM2LjgxMjUsIDM2LjgxMjUpIHwgdmVjMigtOC4yNSwgLTAuNSkgfCB2ZWMyKDAu
MCwgMi4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gdmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGZsb2F0X2Zsb2F0X3RvX2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIC0wLjUgfCAtMjAuMTI1IHwgMS4wIHwgMi4wIHwg
My41IHwgMzYuODEyNSB8IC04LjI1IHwgMC4wIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEu
MCB8IC0yMC4xMjUgfCAwLjAgfCAzLjUgfCAtOC4yNSB8IDM2LjgxMjUgfCAtMC41IHwgMi4wIF07
CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMSkgfCBpdmVjMigtMjAsIC0yMCkg
fCBpdmVjMigxLCAwKSB8IGl2ZWMyKDIsIDMpIHwgaXZlYzIoMywgLTgpIHwgaXZlYzIoMzYsIDM2
KSB8IGl2ZWMyKC04LCAwKSB8IGl2ZWMyKDAsIDIpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2Zsb2F0X3RvX2J2ZWMyCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIC0wLjUg
fCAtMjAuMTI1IHwgMS4wIHwgMi4wIHwgMy41IHwgMzYuODEyNSB8IC04LjI1IHwgMC4wIF07CisJ
CQlpbnB1dCBmbG9hdCBpbjEgPSBbIDEuMCB8IC0yMC4xMjUgfCAwLjAgfCAzLjUgfCAtOC4yNSB8
IDM2LjgxMjUgfCAtMC41IHwgMi4wIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2
ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjAsIGluMSk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfdG9fdmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMiB8
IC02NiB8IDAgfCA1IHwgLTEyIHwgOCB8IC0xOTIgfCAxIHwgMTEgfCAyNTUgXTsKKwkJCWlucHV0
IGludCBpbjEgPSBbIC0xOTIgfCA4IHwgMSB8IDAgfCA1IHwgLTY2IHwgMiB8IDI1NSB8IDExIHwg
LTEyIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDIuMCwgLTE5Mi4wKSB8IHZlYzIo
LTY2LjAsIDguMCkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoNS4wLCAwLjApIHwgdmVjMigtMTIu
MCwgNS4wKSB8IHZlYzIoOC4wLCAtNjYuMCkgfCB2ZWMyKC0xOTIuMCwgMi4wKSB8IHZlYzIoMS4w
LCAyNTUuMCkgfCB2ZWMyKDExLjAsIDExLjApIHwgdmVjMigyNTUuMCwgLTEyLjApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCwg
aW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2ludF90
b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgMiB8IC02NiB8IDAgfCA1IHwgLTEyIHwgOCB8IC0xOTIgfCAxIHwgMTEgfCAyNTUgXTsK
KwkJCWlucHV0IGludCBpbjEgPSBbIC0xOTIgfCA4IHwgMSB8IDAgfCA1IHwgLTY2IHwgMiB8IDI1
NSB8IDExIHwgLTEyIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMiwgLTE5Mikg
fCBpdmVjMigtNjYsIDgpIHwgaXZlYzIoMCwgMSkgfCBpdmVjMig1LCAwKSB8IGl2ZWMyKC0xMiwg
NSkgfCBpdmVjMig4LCAtNjYpIHwgaXZlYzIoLTE5MiwgMikgfCBpdmVjMigxLCAyNTUpIHwgaXZl
YzIoMTEsIDExKSB8IGl2ZWMyKDI1NSwgLTEyKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaW50X3RvX2J2ZWMyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAyIHwgLTY2IHwgMCB8
IDUgfCAtMTIgfCA4IHwgLTE5MiB8IDEgfCAxMSB8IDI1NSBdOworCQkJaW5wdXQgaW50IGluMSA9
IFsgLTE5MiB8IDggfCAxIHwgMCB8IDUgfCAtNjYgfCAyIHwgMjU1IHwgMTEgfCAtMTIgXTsKKwkJ
CW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIo
dHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihp
bjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRf
dWludF90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1
aW50IGluMCA9IFsgOSB8IDEyIHwgMCB8IDI1NSB8IDggfCA0NSB8IDMgfCAyIHwgMTAgfCAxOTMg
XTsKKwkJCWlucHV0IHVpbnQgaW4xID0gWyA4IHwgOSB8IDQ1IHwgMiB8IDEyIHwgMTkzIHwgMjU1
IHwgMCB8IDMgfCAxMCBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMig5LjAsIDguMCkg
fCB2ZWMyKDEyLjAsIDkuMCkgfCB2ZWMyKDAuMCwgNDUuMCkgfCB2ZWMyKDI1NS4wLCAyLjApIHwg
dmVjMig4LjAsIDEyLjApIHwgdmVjMig0NS4wLCAxOTMuMCkgfCB2ZWMyKDMuMCwgMjU1LjApIHwg
dmVjMigyLjAsIDAuMCkgfCB2ZWMyKDEwLjAsIDMuMCkgfCB2ZWMyKDE5My4wLCAxMC4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihp
bjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRf
dWludF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
dWludCBpbjAgPSBbIDkgfCAxMiB8IDAgfCAyNTUgfCA4IHwgNDUgfCAzIHwgMiB8IDEwIHwgMTkz
IF07CisJCQlpbnB1dCB1aW50IGluMSA9IFsgOCB8IDkgfCA0NSB8IDIgfCAxMiB8IDE5MyB8IDI1
NSB8IDAgfCAzIHwgMTAgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMig5LCA4KSB8
IGl2ZWMyKDEyLCA5KSB8IGl2ZWMyKDAsIDQ1KSB8IGl2ZWMyKDI1NSwgMikgfCBpdmVjMig4LCAx
MikgfCBpdmVjMig0NSwgMTkzKSB8IGl2ZWMyKDMsIDI1NSkgfCBpdmVjMigyLCAwKSB8IGl2ZWMy
KDEwLCAzKSB8IGl2ZWMyKDE5MywgMTApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpdmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdWludF90b19idmVjMgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDkgfCAxMiB8IDAgfCAy
NTUgfCA4IHwgNDUgfCAzIHwgMiB8IDEwIHwgMTkzIF07CisJCQlpbnB1dCB1aW50IGluMSA9IFsg
OCB8IDkgfCA0NSB8IDIgfCAxMiB8IDE5MyB8IDI1NSB8IDAgfCAzIHwgMTAgXTsKKwkJCW91dHB1
dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBm
YWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjAsIGlu
MSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF90
b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGlu
MCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgdHJ1ZSB8IGZhbHNl
IF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDEuMCwgMS4wKSB8IHZlYzIoMC4wLCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSB2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYm9vbF9ib29sX3RvX2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMSA9
IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMSwgMSkg
fCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBib29sX2Jvb2xfdG9fYnZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0
IGJvb2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBi
dmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCwgaW4xKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfaW50X3RvX3ZlYzIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsg
MC4wIHwgMy41IHwgMC4wIHwgMi4wIHwgLTguMjUgfCAzNi44MTI1IHwgLTIwLjEyNSB8IDEuMCB8
IDEuMCB8IC0wLjUgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIC02NiB8IDEgfCAyNTUgfCAtMTky
IHwgOCB8IDIgfCAwIHwgNSB8IC0xMiB8IDExIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2
ZWMyKDAuMCwgLTY2LjApIHwgdmVjMigzLjUsIDEuMCkgfCB2ZWMyKDAuMCwgMjU1LjApIHwgdmVj
MigyLjAsIC0xOTIuMCkgfCB2ZWMyKC04LjI1LCA4LjApIHwgdmVjMigzNi44MTI1LCAyLjApIHwg
dmVjMigtMjAuMTI1LCAwLjApIHwgdmVjMigxLjAsIDUuMCkgfCB2ZWMyKDEuMCwgLTEyLjApIHwg
dmVjMigtMC41LCAxMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gdmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGZsb2F0X2ludF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAzLjUgfCAwLjAgfCAyLjAg
fCAtOC4yNSB8IDM2LjgxMjUgfCAtMjAuMTI1IHwgMS4wIHwgMS4wIHwgLTAuNSBdOworCQkJaW5w
dXQgaW50IGluMSA9IFsgLTY2IHwgMSB8IDI1NSB8IC0xOTIgfCA4IHwgMiB8IDAgfCA1IHwgLTEy
IHwgMTEgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAtNjYpIHwgaXZlYzIo
MywgMSkgfCBpdmVjMigwLCAyNTUpIHwgaXZlYzIoMiwgLTE5MikgfCBpdmVjMigtOCwgOCkgfCBp
dmVjMigzNiwgMikgfCBpdmVjMigtMjAsIDApIHwgaXZlYzIoMSwgNSkgfCBpdmVjMigxLCAtMTIp
IHwgaXZlYzIoMCwgMTEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpdmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGZsb2F0X2ludF90b19idmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAwLjAgfCAzLjUgfCAwLjAgfCAyLjAg
fCAtOC4yNSB8IDM2LjgxMjUgfCAtMjAuMTI1IHwgMS4wIHwgMS4wIHwgLTAuNSBdOworCQkJaW5w
dXQgaW50IGluMSA9IFsgLTY2IHwgMSB8IDI1NSB8IC0xOTIgfCA4IHwgMiB8IDAgfCA1IHwgLTEy
IHwgMTEgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgdHJ1ZSkgfCBi
dmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZh
bHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gYnZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBmbG9hdF9ib29sX3RvX3ZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMi4wIHwgMy41IHwgMS4wIHwgLTIwLjEyNSB8IC04
LjI1IHwgMC4wIHwgLTAuNSB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyBmYWxz
ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsK
KwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMi4wLCAwLjApIHwgdmVjMigzLjUsIDEuMCkg
fCB2ZWMyKDEuMCwgMS4wKSB8IHZlYzIoLTIwLjEyNSwgMC4wKSB8IHZlYzIoLTguMjUsIDAuMCkg
fCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoLTAuNSwgMC4wKSB8IHZlYzIoMzYuODEyNSwgMS4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVj
MihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZs
b2F0X2Jvb2xfdG9faXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGZsb2F0IGluMCA9IFsgMi4wIHwgMy41IHwgMS4wIHwgLTIwLjEyNSB8IC04LjI1IHwgMC4w
IHwgLTAuNSB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyBmYWxzZSB8IHRydWUg
fCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgXTsKKwkJCW91dHB1
dCBpdmVjMiBvdXQwID0gWyBpdmVjMigyLCAwKSB8IGl2ZWMyKDMsIDEpIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigtMjAsIDApIHwgaXZlYzIoLTgsIDApIHwgaXZlYzIoMCwgMSkgfCBpdmVjMigwLCAw
KSB8IGl2ZWMyKDM2LCAxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBmbG9hdF9ib29sX3RvX2J2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDIuMCB8IDMuNSB8IDEuMCB8IC0y
MC4xMjUgfCAtOC4yNSB8IDAuMCB8IC0wLjUgfCAzNi44MTI1IF07CisJCQlpbnB1dCBib29sIGlu
MSA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2Ug
fCB0cnVlIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUs
IGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBidmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9ib29sX3RvX3ZlYzIKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDI1NSB8IDIgfCAtMTIg
fCAxIHwgLTE5MiB8IDUgfCA4IHwgMCB8IC02NiB8IDExIF07CisJCQlpbnB1dCBib29sIGluMSA9
IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBm
YWxzZSB8IHRydWUgfCB0cnVlIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDI1NS4w
LCAxLjApIHwgdmVjMigyLjAsIDAuMCkgfCB2ZWMyKC0xMi4wLCAwLjApIHwgdmVjMigxLjAsIDAu
MCkgfCB2ZWMyKC0xOTIuMCwgMS4wKSB8IHZlYzIoNS4wLCAwLjApIHwgdmVjMig4LjAsIDEuMCkg
fCB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoLTY2LjAsIDEuMCkgfCB2ZWMyKDExLjAsIDEuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHZlYzIo
aW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRf
Ym9vbF90b19pdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
aW50IGluMCA9IFsgMjU1IHwgMiB8IC0xMiB8IDEgfCAtMTkyIHwgNSB8IDggfCAwIHwgLTY2IHwg
MTEgXTsKKwkJCWlucHV0IGJvb2wgaW4xID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCW91dHB1
dCBpdmVjMiBvdXQwID0gWyBpdmVjMigyNTUsIDEpIHwgaXZlYzIoMiwgMCkgfCBpdmVjMigtMTIs
IDApIHwgaXZlYzIoMSwgMCkgfCBpdmVjMigtMTkyLCAxKSB8IGl2ZWMyKDUsIDApIHwgaXZlYzIo
OCwgMSkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKC02NiwgMSkgfCBpdmVjMigxMSwgMSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGl2ZWMyKGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2Jv
b2xfdG9fYnZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGlu
dCBpbjAgPSBbIDI1NSB8IDIgfCAtMTIgfCAxIHwgLTE5MiB8IDUgfCA4IHwgMCB8IC02NiB8IDEx
IF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8
IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCB0cnVlIF07CisJCQlvdXRwdXQg
YnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBi
dmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGluMCwg
aW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3VpbnRf
dG9fdmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MCA9IFsgLTY2IHwgMSB8IC0xOTIgfCAtMTIgfCA1IHwgMjU1IHwgMTEgfCAwIHwgMiB8IDggXTsK
KwkJCWlucHV0IHVpbnQgaW4xID0gWyAxOTMgfCAwIHwgMiB8IDEwIHwgMjU1IHwgMTIgfCA0NSB8
IDggfCA5IHwgMyBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigtNjYuMCwgMTkzLjAp
IHwgdmVjMigxLjAsIDAuMCkgfCB2ZWMyKC0xOTIuMCwgMi4wKSB8IHZlYzIoLTEyLjAsIDEwLjAp
IHwgdmVjMig1LjAsIDI1NS4wKSB8IHZlYzIoMjU1LjAsIDEyLjApIHwgdmVjMigxMS4wLCA0NS4w
KSB8IHZlYzIoMC4wLCA4LjApIHwgdmVjMigyLjAsIDkuMCkgfCB2ZWMyKDguMCwgMy4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdmVjMihp
bjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF91
aW50X3RvX2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
bnQgaW4wID0gWyAtNjYgfCAxIHwgLTE5MiB8IC0xMiB8IDUgfCAyNTUgfCAxMSB8IDAgfCAyIHwg
OCBdOworCQkJaW5wdXQgdWludCBpbjEgPSBbIDE5MyB8IDAgfCAyIHwgMTAgfCAyNTUgfCAxMiB8
IDQ1IHwgOCB8IDkgfCAzIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoLTY2LCAx
OTMpIHwgaXZlYzIoMSwgMCkgfCBpdmVjMigtMTkyLCAyKSB8IGl2ZWMyKC0xMiwgMTApIHwgaXZl
YzIoNSwgMjU1KSB8IGl2ZWMyKDI1NSwgMTIpIHwgaXZlYzIoMTEsIDQ1KSB8IGl2ZWMyKDAsIDgp
IHwgaXZlYzIoMiwgOSkgfCBpdmVjMig4LCAzKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfdWludF90b19idmVjMgorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgLTY2IHwgMSB8IC0x
OTIgfCAtMTIgfCA1IHwgMjU1IHwgMTEgfCAwIHwgMiB8IDggXTsKKwkJCWlucHV0IHVpbnQgaW4x
ID0gWyAxOTMgfCAwIHwgMiB8IDEwIHwgMjU1IHwgMTIgfCA0NSB8IDggfCA5IHwgMyBdOworCQkJ
b3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGJ2ZWMyKGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF9m
bG9hdF90b192ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1
aW50IGluMCA9IFsgMTIgfCAwIHwgOCB8IDE5MyB8IDMgfCAxMCB8IDkgfCAyIHwgNDUgfCAyNTUg
XTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTIwLjEyNSB8IDAuMCB8IDMuNSB8IC04LjI1IHwg
MC4wIHwgMS4wIHwgMi4wIHwgMzYuODEyNSB8IC0wLjUgfCAxLjAgXTsKKwkJCW91dHB1dCB2ZWMy
IG91dDAgPSBbIHZlYzIoMTIuMCwgLTIwLjEyNSkgfCB2ZWMyKDAuMCwgMC4wKSB8IHZlYzIoOC4w
LCAzLjUpIHwgdmVjMigxOTMuMCwgLTguMjUpIHwgdmVjMigzLjAsIDAuMCkgfCB2ZWMyKDEwLjAs
IDEuMCkgfCB2ZWMyKDkuMCwgMi4wKSB8IHZlYzIoMi4wLCAzNi44MTI1KSB8IHZlYzIoNDUuMCwg
LTAuNSkgfCB2ZWMyKDI1NS4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSB2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF9mbG9hdF90b19pdmVjMgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdWludCBpbjAgPSBbIDEyIHwgMCB8IDggfCAx
OTMgfCAzIHwgMTAgfCA5IHwgMiB8IDQ1IHwgMjU1IF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBb
IC0yMC4xMjUgfCAwLjAgfCAzLjUgfCAtOC4yNSB8IDAuMCB8IDEuMCB8IDIuMCB8IDM2LjgxMjUg
fCAtMC41IHwgMS4wIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZlYzIoMTIsIC0yMCkg
fCBpdmVjMigwLCAwKSB8IGl2ZWMyKDgsIDMpIHwgaXZlYzIoMTkzLCAtOCkgfCBpdmVjMigzLCAw
KSB8IGl2ZWMyKDEwLCAxKSB8IGl2ZWMyKDksIDIpIHwgaXZlYzIoMiwgMzYpIHwgaXZlYzIoNDUs
IDApIHwgaXZlYzIoMjU1LCAxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaXZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB1aW50X2Zsb2F0X3RvX2J2ZWMyCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1aW50IGluMCA9IFsgMTIgfCAwIHwgOCB8IDE5MyB8
IDMgfCAxMCB8IDkgfCAyIHwgNDUgfCAyNTUgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTIw
LjEyNSB8IDAuMCB8IDMuNSB8IC04LjI1IHwgMC4wIHwgMS4wIHwgMi4wIHwgMzYuODEyNSB8IC0w
LjUgfCAxLjAgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0
cnVlLCB0cnVlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gYnZlYzIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmbG9hdF9mbG9hdF90b191dmVjMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyA4LjI1IHwgMzYuODEyNSB8IDEuMCB8IDAu
NSB8IDIwLjEyNSB8IDAuMCB8IDIuMCB8IDMuNSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAw
LjUgfCAzNi44MTI1IHwgMC4wIHwgMi4wIHwgOC4yNSB8IDIwLjEyNSB8IDEuMCB8IDMuNSBdOwor
CQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDgsIDApIHwgdXZlYzIoMzYsIDM2KSB8IHV2
ZWMyKDEsIDApIHwgdXZlYzIoMCwgMikgfCB1dmVjMigyMCwgOCkgfCB1dmVjMigwLCAyMCkgfCB1
dmVjMigyLCAxKSB8IHV2ZWMyKDMsIDMpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDAgfCAxMiB8IDggfCAxMSB8
IDI1NSB8IDY2IHwgMTkyIHwgMiB8IDUgfCAxIF07CisJCQlpbnB1dCBpbnQgaW4xID0gWyAxMSB8
IDEyIHwgMiB8IDUgfCA2NiB8IDE5MiB8IDI1NSB8IDAgfCAxIHwgOCBdOworCQkJb3V0cHV0IHV2
ZWMyIG91dDAgPSBbIHV2ZWMyKDAsIDExKSB8IHV2ZWMyKDEyLCAxMikgfCB1dmVjMig4LCAyKSB8
IHV2ZWMyKDExLCA1KSB8IHV2ZWMyKDI1NSwgNjYpIHwgdXZlYzIoNjYsIDE5MikgfCB1dmVjMigx
OTIsIDI1NSkgfCB1dmVjMigyLCAwKSB8IHV2ZWMyKDUsIDEpIHwgdXZlYzIoMSwgOCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGlu
MCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdWludF91
aW50X3RvX3V2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1
aW50IGluMCA9IFsgMyB8IDkgfCAxMCB8IDE5MyB8IDggfCAwIHwgMjU1IHwgNDUgfCAyIHwgMTIg
XTsKKwkJCWlucHV0IHVpbnQgaW4xID0gWyAwIHwgMiB8IDEyIHwgMyB8IDEwIHwgOSB8IDQ1IHwg
MTkzIHwgMjU1IHwgOCBdOworCQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDMsIDApIHwg
dXZlYzIoOSwgMikgfCB1dmVjMigxMCwgMTIpIHwgdXZlYzIoMTkzLCAzKSB8IHV2ZWMyKDgsIDEw
KSB8IHV2ZWMyKDAsIDkpIHwgdXZlYzIoMjU1LCA0NSkgfCB1dmVjMig0NSwgMTkzKSB8IHV2ZWMy
KDIsIDI1NSkgfCB1dmVjMigxMiwgOCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX3RvX3V2ZWMyCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07
CisJCQlpbnB1dCBib29sIGluMSA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgdXZlYzIg
b3V0MCA9IFsgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4wLCBpbjEpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9pbnRfdG9fdXZlYzIKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgOC4y
NSB8IDEuMCB8IDAuNSB8IDMuNSB8IDIuMCB8IDAuMCB8IDM2LjgxMjUgfCAxLjAgfCAwLjAgfCAy
MC4xMjUgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIDAgfCAyNTUgfCAxMiB8IDUgfCAxOTIgfCAy
IHwgNjYgfCAxMSB8IDEgfCA4IF07CisJCQlvdXRwdXQgdXZlYzIgb3V0MCA9IFsgdXZlYzIoOCwg
MCkgfCB1dmVjMigxLCAyNTUpIHwgdXZlYzIoMCwgMTIpIHwgdXZlYzIoMywgNSkgfCB1dmVjMigy
LCAxOTIpIHwgdXZlYzIoMCwgMikgfCB1dmVjMigzNiwgNjYpIHwgdXZlYzIoMSwgMTEpIHwgdXZl
YzIoMCwgMSkgfCB1dmVjMigyMCwgOCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfYm9vbF90b191dmVjMgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAzLjUgfCAxLjAgfCA4
LjI1IHwgMC41IHwgMi4wIHwgMzYuODEyNSB8IDAuMCB8IDIwLjEyNSBdOworCQkJaW5wdXQgYm9v
bCBpbjEgPSBbIHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZh
bHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDMsIDEpIHwgdXZl
YzIoMSwgMCkgfCB1dmVjMig4LCAxKSB8IHV2ZWMyKDAsIDApIHwgdXZlYzIoMiwgMSkgfCB1dmVj
MigzNiwgMCkgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDIwLCAxKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gdXZlYzIoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfYm9vbF90b191dmVjMgor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMTIg
fCAxMSB8IDAgfCA1IHwgOCB8IDI1NSB8IDIgfCAxIHwgNjYgfCAxOTIgXTsKKwkJCWlucHV0IGJv
b2wgaW4xID0gWyB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCW91dHB1dCB1dmVjMiBvdXQwID0gWyB1
dmVjMigxMiwgMSkgfCB1dmVjMigxMSwgMSkgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDUsIDApIHwg
dXZlYzIoOCwgMCkgfCB1dmVjMigyNTUsIDEpIHwgdXZlYzIoMiwgMCkgfCB1dmVjMigxLCAwKSB8
IHV2ZWMyKDY2LCAxKSB8IHV2ZWMyKDE5MiwgMSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IHV2ZWMyKGluMCwgaW4xKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X3VpbnRfdG9fdXZlYzIKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDggfCA1IHwgMSB8
IDAgfCAxMSB8IDEyIHwgMTkyIHwgNjYgfCAyNTUgfCAyIF07CisJCQlpbnB1dCB1aW50IGluMSA9
IFsgOCB8IDEwIHwgNDUgfCAyNTUgfCA5IHwgMTkzIHwgMiB8IDMgfCAwIHwgMTIgXTsKKwkJCW91
dHB1dCB1dmVjMiBvdXQwID0gWyB1dmVjMig4LCA4KSB8IHV2ZWMyKDUsIDEwKSB8IHV2ZWMyKDEs
IDQ1KSB8IHV2ZWMyKDAsIDI1NSkgfCB1dmVjMigxMSwgOSkgfCB1dmVjMigxMiwgMTkzKSB8IHV2
ZWMyKDE5MiwgMikgfCB1dmVjMig2NiwgMykgfCB1dmVjMigyNTUsIDApIHwgdXZlYzIoMiwgMTIp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1
dmVjMihpbjAsIGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVpbnRfZmxvYXRfdG9fdXZlYzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHVpbnQgaW4wID0gWyA5IHwgNDUgfCA4IHwgMyB8IDEwIHwgMiB8IDE5MyB8IDEyIHwg
MjU1IHwgMCBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAzLjUgfCAyMC4xMjUgfCAyLjAgfCAw
LjAgfCAxLjAgfCAzNi44MTI1IHwgOC4yNSB8IDEuMCB8IDAuMCB8IDAuNSBdOworCQkJb3V0cHV0
IHV2ZWMyIG91dDAgPSBbIHV2ZWMyKDksIDMpIHwgdXZlYzIoNDUsIDIwKSB8IHV2ZWMyKDgsIDIp
IHwgdXZlYzIoMywgMCkgfCB1dmVjMigxMCwgMSkgfCB1dmVjMigyLCAzNikgfCB1dmVjMigxOTMs
IDgpIHwgdXZlYzIoMTIsIDEpIHwgdXZlYzIoMjU1LCAwKSB8IHV2ZWMyKDAsIDApIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSB1dmVjMihpbjAs
IGluMSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworZW5kICMgdmVjdG9y
X2NvbWJpbmUKK2dyb3VwIG1hdHJpeF9jb21iaW5lICJNYXRyaXggQ29tYmluZSBDb25zdHJ1Y3Rv
cnMiCisKKwljYXNlIHZlYzJfdmVjMl90b19tYXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMzIu
MCwgNjQuMCkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEpIHwgdmVjMigwLjAsIDAuNSkgXTsKKwkJCWlucHV0IHZlYzIgaW4xID0gWyB2ZWMyKDAuMCwg
MC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwg
dmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjUsIC0yLjI1KSBdOworCQkJb3V0cHV0IG1hdDIg
b3V0MCA9IFsgbWF0MigxLjAsIDEuMjUsIDAuMCwgMC41KSB8IG1hdDIoLTMyLjAsIDY0LjAsIDEu
MCwgMS4yNSkgfCBtYXQyKC0wLjUsIC0yLjI1LCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCBt
YXQyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMzIuMCwgNjQuMCkgfCBtYXQyKDAuMCwgMC41
LCAtMC41LCAtMi4yNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBidmVjMl9idmVjMl90b19tYXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2
ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGJ2ZWMyIGluMSA9IFsgYnZlYzIo
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSBdOworCQkJb3V0cHV0IG1h
dDIgb3V0MCA9IFsgbWF0MigwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0MigxLjAsIDEuMCwgMS4w
LCAwLjApIHwgbWF0MigxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MigwLjAsIDAuMCwgMS4wLCAx
LjApIHwgbWF0MigwLjAsIDAuMCwgMC4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfZmxvYXRfZmxvYXRfZmxvYXRfdG9f
bWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
ID0gWyAtOC4yNSB8IDMuNSB8IDM2LjgxMjUgfCAyLjAgfCAtMjAuMTI1IHwgMS4wIHwgLTAuNSB8
IDAuMCBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAzLjUgfCAtMjAuMTI1IHwgMS4wIHwgMC4w
IHwgLTguMjUgfCAyLjAgfCAzNi44MTI1IHwgLTAuNSBdOworCQkJaW5wdXQgZmxvYXQgaW4yID0g
WyAzNi44MTI1IHwgMy41IHwgMC4wIHwgLTIwLjEyNSB8IC0wLjUgfCAtOC4yNSB8IDEuMCB8IDIu
MCBdOworCQkJaW5wdXQgZmxvYXQgaW4zID0gWyAtMC41IHwgMC4wIHwgLTguMjUgfCAtMjAuMTI1
IHwgMi4wIHwgMy41IHwgMS4wIHwgMzYuODEyNSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsg
bWF0MigtOC4yNSwgMy41LCAzNi44MTI1LCAtMC41KSB8IG1hdDIoMy41LCAtMjAuMTI1LCAzLjUs
IDAuMCkgfCBtYXQyKDM2LjgxMjUsIDEuMCwgMC4wLCAtOC4yNSkgfCBtYXQyKDIuMCwgMC4wLCAt
MjAuMTI1LCAtMjAuMTI1KSB8IG1hdDIoLTIwLjEyNSwgLTguMjUsIC0wLjUsIDIuMCkgfCBtYXQy
KDEuMCwgMi4wLCAtOC4yNSwgMy41KSB8IG1hdDIoLTAuNSwgMzYuODEyNSwgMS4wLCAxLjApIHwg
bWF0MigwLjAsIC0wLjUsIDIuMCwgMzYuODEyNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2ludF9pbnRfaW50X3Rv
X21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAg
PSBbIDIgfCAxIHwgLTE5MiB8IDExIHwgLTY2IHwgMjU1IHwgMCB8IDggfCAtMTIgfCA1IF07CisJ
CQlpbnB1dCBpbnQgaW4xID0gWyAxMSB8IDI1NSB8IDUgfCAtNjYgfCA4IHwgMiB8IDAgfCAtMTIg
fCAxIHwgLTE5MiBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMTEgfCAxIHwgLTEyIHwgMjU1IHwg
NSB8IDAgfCA4IHwgLTE5MiB8IDIgfCAtNjYgXTsKKwkJCWlucHV0IGludCBpbjMgPSBbIDIgfCAx
IHwgMCB8IDggfCAyNTUgfCAtNjYgfCAtMTkyIHwgMTEgfCA1IHwgLTEyIF07CisJCQlvdXRwdXQg
bWF0MiBvdXQwID0gWyBtYXQyKDIuMCwgMTEuMCwgMTEuMCwgMi4wKSB8IG1hdDIoMS4wLCAyNTUu
MCwgMS4wLCAxLjApIHwgbWF0MigtMTkyLjAsIDUuMCwgLTEyLjAsIDAuMCkgfCBtYXQyKDExLjAs
IC02Ni4wLCAyNTUuMCwgOC4wKSB8IG1hdDIoLTY2LjAsIDguMCwgNS4wLCAyNTUuMCkgfCBtYXQy
KDI1NS4wLCAyLjAsIDAuMCwgLTY2LjApIHwgbWF0MigwLjAsIDAuMCwgOC4wLCAtMTkyLjApIHwg
bWF0Mig4LjAsIC0xMi4wLCAtMTkyLjAsIDExLjApIHwgbWF0MigtMTIuMCwgMS4wLCAyLjAsIDUu
MCkgfCBtYXQyKDUuMCwgLTE5Mi4wLCAtNjYuMCwgLTEyLjApIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xLCBpbjIsIGlu
Myk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdWludF91
aW50X3VpbnRfdG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdWludCBpbjAgPSBbIDE5MyB8IDkgfCAxMiB8IDQ1IHwgMTAgfCAyIHwgOCB8IDMgfCAyNTUg
fCAwIF07CisJCQlpbnB1dCB1aW50IGluMSA9IFsgMCB8IDI1NSB8IDEyIHwgMTkzIHwgMyB8IDIg
fCA0NSB8IDkgfCA4IHwgMTAgXTsKKwkJCWlucHV0IHVpbnQgaW4yID0gWyAzIHwgOSB8IDEwIHwg
MiB8IDEyIHwgMTkzIHwgMjU1IHwgMCB8IDggfCA0NSBdOworCQkJaW5wdXQgdWludCBpbjMgPSBb
IDQ1IHwgMTIgfCA5IHwgMyB8IDIgfCAyNTUgfCAxMCB8IDggfCAxOTMgfCAwIF07CisJCQlvdXRw
dXQgbWF0MiBvdXQwID0gWyBtYXQyKDE5My4wLCAwLjAsIDMuMCwgNDUuMCkgfCBtYXQyKDkuMCwg
MjU1LjAsIDkuMCwgMTIuMCkgfCBtYXQyKDEyLjAsIDEyLjAsIDEwLjAsIDkuMCkgfCBtYXQyKDQ1
LjAsIDE5My4wLCAyLjAsIDMuMCkgfCBtYXQyKDEwLjAsIDMuMCwgMTIuMCwgMi4wKSB8IG1hdDIo
Mi4wLCAyLjAsIDE5My4wLCAyNTUuMCkgfCBtYXQyKDguMCwgNDUuMCwgMjU1LjAsIDEwLjApIHwg
bWF0MigzLjAsIDkuMCwgMC4wLCA4LjApIHwgbWF0MigyNTUuMCwgOC4wLCA4LjAsIDE5My4wKSB8
IG1hdDIoMC4wLCAxMC4wLCA0NS4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYm9vbF9ib29sX2Jvb2xf
dG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBp
bjAgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjEgPSBbIHRydWUgfCBmYWxz
ZSBdOworCQkJaW5wdXQgYm9vbCBpbjIgPSBbIHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9v
bCBpbjMgPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0Migx
LjAsIDEuMCwgMS4wLCAwLjApIHwgbWF0MigwLjAsIDAuMCwgMC4wLCAxLjApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4x
LCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJv
b2xfZmxvYXRfaW50X2Jvb2xfdG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IHRy
dWUgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSBdOworCQkJaW5wdXQgZmxv
YXQgaW4xID0gWyAyLjAgfCAtMC41IHwgMC4wIHwgMS4wIHwgMS4wIHwgMzYuODEyNSB8IDMuNSB8
IDAuMCB8IC04LjI1IHwgLTIwLjEyNSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMCB8IC0xMiB8
IDggfCAtMTkyIHwgMSB8IC02NiB8IDUgfCAxMSB8IDIgfCAyNTUgXTsKKwkJCWlucHV0IGJvb2wg
aW4zID0gWyB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAgPSBbIG1hdDIo
MC4wLCAyLjAsIDAuMCwgMS4wKSB8IG1hdDIoMS4wLCAtMC41LCAtMTIuMCwgMC4wKSB8IG1hdDIo
MC4wLCAwLjAsIDguMCwgMS4wKSB8IG1hdDIoMS4wLCAxLjAsIC0xOTIuMCwgMC4wKSB8IG1hdDIo
MS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDIoMC4wLCAzNi44MTI1LCAtNjYuMCwgMC4wKSB8IG1h
dDIoMS4wLCAzLjUsIDUuMCwgMC4wKSB8IG1hdDIoMS4wLCAwLjAsIDExLjAsIDEuMCkgfCBtYXQy
KDAuMCwgLTguMjUsIDIuMCwgMS4wKSB8IG1hdDIoMC4wLCAtMjAuMTI1LCAyNTUuMCwgMC4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0
MihpbjAsIGluMSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSB2ZWMyX2l2ZWMyX3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0zMi4wLCA2
NC4wKSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
fCB2ZWMyKDAuMCwgMC41KSBdOworCQkJaW5wdXQgaXZlYzIgaW4xID0gWyBpdmVjMigwLCAtMikg
fCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAx
KSBdOworCQkJb3V0cHV0IG1hdDIgb3V0MCA9IFsgbWF0MigxLjAsIDEuMjUsIDAuMCwgLTIuMCkg
fCBtYXQyKC0zMi4wLCA2NC4wLCAwLjAsIDAuMCkgfCBtYXQyKC0wLjUsIC0yLjI1LCAwLjAsIDAu
MCkgfCBtYXQyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMzIuMCwgNjQuMCkgfCBtYXQyKDAu
MCwgMC41LCAxLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB2ZWMyX2J2ZWMyX3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZl
YzIoLTMyLjAsIDY0LjApIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSkgfCB2ZWMyKDAuMCwgMC41KSBdOworCQkJaW5wdXQgYnZlYzIgaW4xID0gWyBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIF07CisJCQlvdXRwdXQg
bWF0MiBvdXQwID0gWyBtYXQyKC0wLjUsIC0yLjI1LCAwLjAsIDAuMCkgfCBtYXQyKC0zMi4wLCA2
NC4wLCAxLjAsIDAuMCkgfCBtYXQyKDEuMCwgMS4yNSwgMC4wLCAwLjApIHwgbWF0MigtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wLCAxLjApIHwgbWF0MigwLjAsIDAuNSwgMS4wLCAxLjApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQy
KGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZl
YzNfZmxvYXRfdG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IHRydWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMzYuODEyNSB8IC04LjI1IHwg
MS4wIHwgLTAuNSB8IDIuMCB8IC0yMC4xMjUgfCAwLjAgfCAzLjUgXTsKKwkJCW91dHB1dCBtYXQy
IG91dDAgPSBbIG1hdDIoMS4wLCAwLjAsIDAuMCwgMzYuODEyNSkgfCBtYXQyKDAuMCwgMS4wLCAw
LjAsIC04LjI1KSB8IG1hdDIoMC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoMS4wLCAxLjAsIDEu
MCwgLTAuNSkgfCBtYXQyKDEuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQyKDAuMCwgMS4wLCAwLjAs
IC0yMC4xMjUpIHwgbWF0MigwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MigwLjAsIDAuMCwgMC4w
LCAzLjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdmVjM19mbG9hdF90b19tYXQyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAu
NSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygxLjAs
IDEuMjUsIDEuMTI1KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygtMzIuMCwgNjQuMCwg
LTUxLjApIHwgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlpbnB1dCBmbG9hdCBpbjEgPSBbIC0wLjUgfCAt
MjAuMTI1IHwgMC4wIHwgMzYuODEyNSB8IDMuNSB8IC04LjI1IHwgMi4wIHwgMS4wIF07CisJCQlv
dXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDEuMCwgMS4yNSwgMS4xMjUsIC0wLjUpIHwgbWF0Migt
MC41LCAtMi4yNSwgLTQuODc1LCAtMjAuMTI1KSB8IG1hdDIoLTAuNSwgLTIuMjUsIC00Ljg3NSwg
MC4wKSB8IG1hdDIoMS4wLCAxLjI1LCAxLjEyNSwgMzYuODEyNSkgfCBtYXQyKDAuMCwgMC41LCAw
Ljc1LCAzLjUpIHwgbWF0MigtMzIuMCwgNjQuMCwgLTUxLjAsIC04LjI1KSB8IG1hdDIoMC4wLCAw
LjUsIDAuNzUsIDIuMCkgfCBtYXQyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3
ODk0NzQsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IG1hdDIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfaXZlYzJfaW50X3RvX21hdDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDggfCAtMTkyIHwgMiB8IDAgfCAtNjYgfCAy
NTUgfCA1IHwgMSB8IC0xMiB8IDExIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAs
IC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMy
KDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMSwgMSkgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDIgfCAxIHwg
LTEyIHwgMCB8IDExIHwgOCB8IDI1NSB8IC0xOTIgfCA1IHwgLTY2IF07CisJCQlvdXRwdXQgbWF0
MiBvdXQwID0gWyBtYXQyKDguMCwgMC4wLCAtMi4wLCAyLjApIHwgbWF0MigtMTkyLjAsIDAuMCwg
MC4wLCAxLjApIHwgbWF0MigyLjAsIC0zMi4wLCA2NC4wLCAtMTIuMCkgfCBtYXQyKDAuMCwgMC4w
LCAwLjAsIDAuMCkgfCBtYXQyKC02Ni4wLCAwLjAsIDAuMCwgMTEuMCkgfCBtYXQyKDI1NS4wLCAt
MzIuMCwgNjQuMCwgOC4wKSB8IG1hdDIoNS4wLCAwLjAsIDAuMCwgMjU1LjApIHwgbWF0MigxLjAs
IDAuMCwgLTIuMCwgLTE5Mi4wKSB8IG1hdDIoLTEyLjAsIDEuMCwgMS4wLCA1LjApIHwgbWF0Migx
MS4wLCAxLjAsIDEuMCwgLTY2LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2l2ZWMyX3RvX21hdDIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwg
dHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJ
CWlucHV0IGZsb2F0IGluMSA9IFsgMS4wIHwgLTAuNSB8IC0yMC4xMjUgfCAzNi44MTI1IHwgMi4w
IHwgMC4wIHwgLTguMjUgfCAzLjUgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMCwg
MCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgLTIpIF07CisJCQlv
dXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDEuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyKDEuMCwg
LTAuNSwgMC4wLCAwLjApIHwgbWF0MigxLjAsIC0yMC4xMjUsIDEuMCwgMS4wKSB8IG1hdDIoMC4w
LCAzNi44MTI1LCAwLjAsIDAuMCkgfCBtYXQyKDAuMCwgMi4wLCAxLjAsIDEuMCkgfCBtYXQyKDEu
MCwgMC4wLCAwLjAsIC0yLjApIHwgbWF0MigwLjAsIC04LjI1LCAtMzIuMCwgNjQuMCkgfCBtYXQy
KDAuMCwgMy41LCAwLjAsIC0yLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQyKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF91dmVjM190b19tYXQyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDM2LjgxMjUgfCAy
LjAgfCAtMC41IHwgMC4wIHwgLTIwLjEyNSB8IDEuMCB8IDMuNSB8IC04LjI1IF07CisJCQlpbnB1
dCB1dmVjMyBpbjEgPSBbIHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMCwgMiwgNCkgfCB1dmVjMygw
LCAyLCA0KSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMzIsIDY0LCA1MSkgfCB1dmVjMygwLCAw
LCAwKSB8IHV2ZWMzKDAsIDAsIDApIHwgdXZlYzMoMSwgMSwgMSkgXTsKKwkJCW91dHB1dCBtYXQy
IG91dDAgPSBbIG1hdDIoMzYuODEyNSwgMS4wLCAxLjAsIDEuMCkgfCBtYXQyKDIuMCwgMC4wLCAy
LjAsIDQuMCkgfCBtYXQyKC0wLjUsIDAuMCwgMi4wLCA0LjApIHwgbWF0MigwLjAsIDAuMCwgMC4w
LCAwLjApIHwgbWF0MigtMjAuMTI1LCAzMi4wLCA2NC4wLCA1MS4wKSB8IG1hdDIoMS4wLCAwLjAs
IDAuMCwgMC4wKSB8IG1hdDIoMy41LCAwLjAsIDAuMCwgMC4wKSB8IG1hdDIoLTguMjUsIDEuMCwg
MS4wLCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBtYXQyKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgaW50X3V2ZWMyX2Jvb2xfdG9fbWF0MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IC02NiB8IDUgfCAtMTkyIHwgMTEgfCAw
IHwgOCB8IDIgfCAtMTIgfCAyNTUgXTsKKwkJCWlucHV0IHV2ZWMyIGluMSA9IFsgdXZlYzIoMCwg
MikgfCB1dmVjMigzMiwgNjQpIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAwKSB8IHV2ZWMyKDAs
IDApIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigwLCAyKSB8IHV2ZWMyKDAsIDApIHwgdXZlYzIoMCwg
MCkgfCB1dmVjMigzMiwgNjQpIF07CisJCQlpbnB1dCBib29sIGluMiA9IFsgdHJ1ZSB8IGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IGZh
bHNlIF07CisJCQlvdXRwdXQgbWF0MiBvdXQwID0gWyBtYXQyKDEuMCwgMC4wLCAyLjAsIDEuMCkg
fCBtYXQyKC02Ni4wLCAzMi4wLCA2NC4wLCAwLjApIHwgbWF0Mig1LjAsIDEuMCwgMS4wLCAxLjAp
IHwgbWF0MigtMTkyLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MigxMS4wLCAwLjAsIDAuMCwgMC4w
KSB8IG1hdDIoMC4wLCAxLjAsIDEuMCwgMC4wKSB8IG1hdDIoOC4wLCAwLjAsIDIuMCwgMS4wKSB8
IG1hdDIoMi4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDIoLTEyLjAsIDAuMCwgMC4wLCAxLjApIHwg
bWF0MigyNTUuMCwgMzIuMCwgNjQuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0MihpbjAsIGluMSwgaW4yKTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM192ZWMzX3RvX21hdDJ4MworCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMo
MS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAs
IC01MS4wKSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIF07CisJCQlpbnB1dCB2ZWMzIGluMSA9IFsg
dmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZl
YzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCBtYXQyeDMg
b3V0MCA9IFsgbWF0MngzKDEuMCwgMS4yNSwgMS4xMjUsIC0zMi4wLCA2NC4wLCAtNTEuMCkgfCBt
YXQyeDMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuNSwgLTIu
MjUsIC00Ljg3NSkgfCBtYXQyeDMoLTAuNSwgLTIuMjUsIC00Ljg3NSwgMC4wLCAwLjUsIDAuNzUp
IHwgbWF0MngzKC0zMi4wLCA2NC4wLCAtNTEuMCwgMS4wLCAxLjI1LCAxLjEyNSkgfCBtYXQyeDMo
MC4wLCAwLjUsIDAuNzUsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBt
YXQyeDMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBidmVjM19idmVjM190b19tYXQyeDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMo
ZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlu
cHV0IGJ2ZWMzIGluMSA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBt
YXQyeDMgb3V0MCA9IFsgbWF0MngzKDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
MngzKDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0MngzKDEuMCwgMS4wLCAxLjAs
IDEuMCwgMC4wLCAwLjApIHwgbWF0MngzKDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0MngzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDMoaW4wLCBpbjEpOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9mbG9hdF9mbG9hdF9m
bG9hdF9mbG9hdF9mbG9hdF90b19tYXQyeDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgMS4wIHwgLTguMjUgfCAtMjAuMTI1IHwgMzYuODEy
NSB8IC0wLjUgfCAyLjAgfCAzLjUgfCAwLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTAu
NSB8IC0yMC4xMjUgfCAzNi44MTI1IHwgLTguMjUgfCAyLjAgfCAxLjAgfCAzLjUgfCAwLjAgXTsK
KwkJCWlucHV0IGZsb2F0IGluMiA9IFsgMy41IHwgMS4wIHwgMzYuODEyNSB8IC0yMC4xMjUgfCAt
OC4yNSB8IC0wLjUgfCAyLjAgfCAwLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluMyA9IFsgMS4wIHwg
LTguMjUgfCAwLjAgfCAtMjAuMTI1IHwgMi4wIHwgMy41IHwgLTAuNSB8IDM2LjgxMjUgXTsKKwkJ
CWlucHV0IGZsb2F0IGluNCA9IFsgMS4wIHwgMC4wIHwgMy41IHwgMi4wIHwgLTguMjUgfCAtMjAu
MTI1IHwgLTAuNSB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGZsb2F0IGluNSA9IFsgMi4wIHwgLTIw
LjEyNSB8IC04LjI1IHwgLTAuNSB8IDMuNSB8IDEuMCB8IDM2LjgxMjUgfCAwLjAgXTsKKwkJCW91
dHB1dCBtYXQyeDMgb3V0MCA9IFsgbWF0MngzKDEuMCwgLTAuNSwgMy41LCAxLjAsIDEuMCwgMi4w
KSB8IG1hdDJ4MygtOC4yNSwgLTIwLjEyNSwgMS4wLCAtOC4yNSwgMC4wLCAtMjAuMTI1KSB8IG1h
dDJ4MygtMjAuMTI1LCAzNi44MTI1LCAzNi44MTI1LCAwLjAsIDMuNSwgLTguMjUpIHwgbWF0Mngz
KDM2LjgxMjUsIC04LjI1LCAtMjAuMTI1LCAtMjAuMTI1LCAyLjAsIC0wLjUpIHwgbWF0MngzKC0w
LjUsIDIuMCwgLTguMjUsIDIuMCwgLTguMjUsIDMuNSkgfCBtYXQyeDMoMi4wLCAxLjAsIC0wLjUs
IDMuNSwgLTIwLjEyNSwgMS4wKSB8IG1hdDJ4MygzLjUsIDMuNSwgMi4wLCAtMC41LCAtMC41LCAz
Ni44MTI1KSB8IG1hdDJ4MygwLjAsIDAuMCwgMC4wLCAzNi44MTI1LCAzNi44MTI1LCAwLjApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQy
eDMoaW4wLCBpbjEsIGluMiwgaW4zLCBpbjQsIGluNSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50X2ludF9pbnRfaW50X3RvX21hdDJ4MworCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMiB8IDgg
fCAtMTkyIHwgMCB8IDUgfCAtMTIgfCAxIHwgMjU1IHwgLTY2IHwgMTEgXTsKKwkJCWlucHV0IGlu
dCBpbjEgPSBbIDEgfCAtMTkyIHwgOCB8IDAgfCAtMTIgfCAyIHwgMTEgfCAyNTUgfCAtNjYgfCA1
IF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAtMTkyIHwgMiB8IC02NiB8IDggfCAxMSB8IDI1NSB8
IDAgfCA1IHwgLTEyIHwgMSBdOworCQkJaW5wdXQgaW50IGluMyA9IFsgMiB8IDExIHwgMjU1IHwg
MCB8IC02NiB8IC0xMiB8IDUgfCAtMTkyIHwgOCB8IDEgXTsKKwkJCWlucHV0IGludCBpbjQgPSBb
IDggfCAwIHwgLTEyIHwgLTE5MiB8IDIgfCAtNjYgfCAxIHwgMjU1IHwgNSB8IDExIF07CisJCQlp
bnB1dCBpbnQgaW41ID0gWyAwIHwgMTEgfCA1IHwgOCB8IC0xMiB8IDI1NSB8IC0xOTIgfCAyIHwg
MSB8IC02NiBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMoMi4wLCAxLjAsIC0x
OTIuMCwgMi4wLCA4LjAsIDAuMCkgfCBtYXQyeDMoOC4wLCAtMTkyLjAsIDIuMCwgMTEuMCwgMC4w
LCAxMS4wKSB8IG1hdDJ4MygtMTkyLjAsIDguMCwgLTY2LjAsIDI1NS4wLCAtMTIuMCwgNS4wKSB8
IG1hdDJ4MygwLjAsIDAuMCwgOC4wLCAwLjAsIC0xOTIuMCwgOC4wKSB8IG1hdDJ4Myg1LjAsIC0x
Mi4wLCAxMS4wLCAtNjYuMCwgMi4wLCAtMTIuMCkgfCBtYXQyeDMoLTEyLjAsIDIuMCwgMjU1LjAs
IC0xMi4wLCAtNjYuMCwgMjU1LjApIHwgbWF0MngzKDEuMCwgMTEuMCwgMC4wLCA1LjAsIDEuMCwg
LTE5Mi4wKSB8IG1hdDJ4MygyNTUuMCwgMjU1LjAsIDUuMCwgLTE5Mi4wLCAyNTUuMCwgMi4wKSB8
IG1hdDJ4MygtNjYuMCwgLTY2LjAsIC0xMi4wLCA4LjAsIDUuMCwgMS4wKSB8IG1hdDJ4MygxMS4w
LCA1LjAsIDEuMCwgMS4wLCAxMS4wLCAtNjYuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjAsIGluMSwgaW4yLCBpbjMsIGlu
NCwgaW41KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9i
b29sX2Jvb2xfYm9vbF9ib29sX2Jvb2xfdG9fbWF0MngzCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1
dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMiA9IFsgZmFs
c2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlp
bnB1dCBib29sIGluNCA9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluNSA9IFsg
dHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgbWF0MngzIG91dDAgPSBbIG1hdDJ4MygxLjAsIDAu
MCwgMC4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDJ4MygwLjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwg
MC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gbWF0MngzKGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBpbjUpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zsb2F0X2ludF9ib29sX2Zsb2F0X2ludF90
b19tYXQyeDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wg
aW4wID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxz
ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMC4wIHwg
LTguMjUgfCAyLjAgfCAtMjAuMTI1IHwgMy41IHwgMC4wIHwgLTAuNSB8IDM2LjgxMjUgfCAxLjAg
fCAxLjAgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC02NiB8IC0xMiB8IDIgfCA4IHwgMjU1IHwg
MTEgfCAtMTkyIHwgMSB8IDUgfCAwIF07CisJCQlpbnB1dCBib29sIGluMyA9IFsgdHJ1ZSB8IGZh
bHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8
IGZhbHNlIF07CisJCQlpbnB1dCBmbG9hdCBpbjQgPSBbIDEuMCB8IDAuMCB8IC04LjI1IHwgMS4w
IHwgMy41IHwgLTIwLjEyNSB8IC0wLjUgfCAwLjAgfCAyLjAgfCAzNi44MTI1IF07CisJCQlpbnB1
dCBpbnQgaW41ID0gWyAyNTUgfCAtMTkyIHwgMSB8IDIgfCAtMTIgfCAtNjYgfCA4IHwgMCB8IDEx
IHwgNSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMoMC4wLCAwLjAsIC02Ni4w
LCAxLjAsIDEuMCwgMjU1LjApIHwgbWF0MngzKDEuMCwgLTguMjUsIC0xMi4wLCAwLjAsIDAuMCwg
LTE5Mi4wKSB8IG1hdDJ4MygwLjAsIDIuMCwgMi4wLCAxLjAsIC04LjI1LCAxLjApIHwgbWF0Mngz
KDEuMCwgLTIwLjEyNSwgOC4wLCAwLjAsIDEuMCwgMi4wKSB8IG1hdDJ4MygwLjAsIDMuNSwgMjU1
LjAsIDAuMCwgMy41LCAtMTIuMCkgfCBtYXQyeDMoMS4wLCAwLjAsIDExLjAsIDEuMCwgLTIwLjEy
NSwgLTY2LjApIHwgbWF0MngzKDAuMCwgLTAuNSwgLTE5Mi4wLCAxLjAsIC0wLjUsIDguMCkgfCBt
YXQyeDMoMS4wLCAzNi44MTI1LCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MngzKDEuMCwgMS4w
LCA1LjAsIDEuMCwgMi4wLCAxMS4wKSB8IG1hdDJ4MygwLjAsIDEuMCwgMC4wLCAwLjAsIDM2Ljgx
MjUsIDUuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IG1hdDJ4MyhpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41KTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM19pdmVjM190b19tYXQyeDMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDEu
MCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAs
IDY0LjAsIC01MS4wKSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJaW5wdXQgaXZlYzMgaW4xID0gWyBp
dmVjMygxLCAxLCAxKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAtMiwgLTQpIHwg
aXZlYzMoMCwgMCwgMCkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQw
ID0gWyBtYXQyeDMoMS4wLCAxLjI1LCAxLjEyNSwgMS4wLCAxLjAsIDEuMCkgfCBtYXQyeDMoLTAu
NSwgLTIuMjUsIC00Ljg3NSwgLTMyLjAsIDY0LjAsIC01MS4wKSB8IG1hdDJ4MygtMzIuMCwgNjQu
MCwgLTUxLjAsIDAuMCwgLTIuMCwgLTQuMCkgfCBtYXQyeDMoMC4wLCAwLjUsIDAuNzUsIDAuMCwg
MC4wLCAwLjApIHwgbWF0MngzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBtYXQyeDMoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX2J2ZWM0X3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoLTMyLjAsIDY0LjAp
IHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMS4wLCAxLjI1KSB8
IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCBidmVjNCBpbjEgPSBb
IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
XTsKKwkJCW91dHB1dCBtYXQyeDMgb3V0MCA9IFsgbWF0MngzKC0zMi4wLCA2NC4wLCAxLjAsIDAu
MCwgMC4wLCAxLjApIHwgbWF0MngzKDAuMCwgMC41LCAwLjAsIDEuMCwgMC4wLCAwLjApIHwgbWF0
MngzKC0wLjUsIC0yLjI1LCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0MngzKDEuMCwgMS4yNSwg
MS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDJ4MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
LCAwLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gbWF0MngzKGluMCwgaW4xKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYnZlYzNfZmxvYXRfaXZlYzJfdG9fbWF0MngzCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSBdOworCQkJaW5wdXQgZmxv
YXQgaW4xID0gWyAxLjAgfCAtOC4yNSB8IDM2LjgxMjUgfCAyLjAgfCAzLjUgfCAtMC41IHwgLTIw
LjEyNSB8IDAuMCBdOworCQkJaW5wdXQgaXZlYzIgaW4yID0gWyBpdmVjMigxLCAxKSB8IGl2ZWMy
KDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigxLCAxKSB8IGl2
ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCBtYXQy
eDMgb3V0MCA9IFsgbWF0MngzKDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0Mngz
KDAuMCwgMC4wLCAwLjAsIC04LjI1LCAwLjAsIDAuMCkgfCBtYXQyeDMoMS4wLCAxLjAsIDEuMCwg
MzYuODEyNSwgLTMyLjAsIDY0LjApIHwgbWF0MngzKDEuMCwgMC4wLCAwLjAsIDIuMCwgMC4wLCAt
Mi4wKSB8IG1hdDJ4MygwLjAsIDAuMCwgMC4wLCAzLjUsIDEuMCwgMS4wKSB8IG1hdDJ4MygwLjAs
IDEuMCwgMC4wLCAtMC41LCAwLjAsIC0yLjApIHwgbWF0MngzKDEuMCwgMC4wLCAwLjAsIC0yMC4x
MjUsIDAuMCwgMC4wKSB8IG1hdDJ4MygwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mngz
KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB2ZWMzX2Zsb2F0X2J2ZWMyX3RvX21hdDJ4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygt
MC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEu
MjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjAp
IHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAwLjAg
fCAzNi44MTI1IHwgMy41IHwgLTAuNSB8IC04LjI1IHwgMi4wIHwgMS4wIHwgLTIwLjEyNSBdOwor
CQkJaW5wdXQgYnZlYzIgaW4yID0gWyBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2Us
IHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIo
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IG1hdDJ4MyBvdXQwID0gWyBtYXQyeDMo
MC4wLCAwLjUsIDAuNzUsIDAuMCwgMC4wLCAwLjApIHwgbWF0MngzKC0wLjUsIC0yLjI1LCAtNC44
NzUsIDM2LjgxMjUsIDAuMCwgMS4wKSB8IG1hdDJ4MygwLjAsIDAuNSwgMC43NSwgMy41LCAxLjAs
IDAuMCkgfCBtYXQyeDMoMS4wLCAxLjI1LCAxLjEyNSwgLTAuNSwgMC4wLCAxLjApIHwgbWF0Mngz
KC0wLjUsIC0yLjI1LCAtNC44NzUsIC04LjI1LCAwLjAsIDAuMCkgfCBtYXQyeDMoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMi4wLCAxLjAsIDAuMCkgfCBtYXQyeDMo
LTMyLjAsIDY0LjAsIC01MS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDJ4MygxLjAsIDEuMjUsIDEu
MTI1LCAtMjAuMTI1LCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4MyhpbjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM192ZWMzX3ZlYzJfdG9fbWF0Mng0CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVj
MygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgXTsKKwkJCWlucHV0IHZlYzMgaW4xID0g
WyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMz
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSBdOworCQkJaW5wdXQgdmVjMiBp
bjIgPSBbIHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMzIuMCwgNjQuMCkg
fCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTAuNSwgLTIuMjUpIF07
CisJCQlvdXRwdXQgbWF0Mng0IG91dDAgPSBbIG1hdDJ4NCgtMC41LCAtMi4yNSwgLTQuODc1LCAw
LjAsIDAuNSwgMC43NSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgbWF0Mng0KC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIC0wLjUsIC0yLjI1LCAtNC44NzUsIC0z
Mi4wLCA2NC4wKSB8IG1hdDJ4NCgwLjAsIDAuNSwgMC43NSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEsIDAuMDUyNjMxNTc4OTQ3NCwgMS4wLCAxLjI1KSB8IG1hdDJ4NCgxLjAsIDEuMjUsIDEuMTI1
LCAtMzIuMCwgNjQuMCwgLTUxLjAsIDAuMCwgMC41KSB8IG1hdDJ4NCgtMzIuMCwgNjQuMCwgLTUx
LjAsIDEuMCwgMS4yNSwgMS4xMjUsIC0wLjUsIC0yLjI1KSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mng0KGluMCwgaW4xLCBpbjIpOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVjM19pdmVjM19pdmVj
Ml90b19tYXQyeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2
ZWMzIGluMCA9IFsgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwg
MSwgMSkgfCBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgXTsKKwkJCWlucHV0
IGl2ZWMzIGluMSA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAs
IC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCWlu
cHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0
MCA9IFsgbWF0Mng0KDAuMCwgLTIuMCwgLTQuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0Mng0KDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgLTIuMCkgfCBtYXQyeDQo
MS4wLCAxLjAsIDEuMCwgMC4wLCAtMi4wLCAtNC4wLCAxLjAsIDEuMCkgfCBtYXQyeDQoMC4wLCAw
LjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoLTMyLjAsIDY0
LjAsIC01MS4wLCAwLjAsIDAuMCwgMC4wLCAtMzIuMCwgNjQuMCkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDJ4NChpbjAsIGluMSwgaW4y
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjMl9pdmVjMl9m
bG9hdF9mbG9hdF9pbnRfYm9vbF90b19tYXQyeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTMyLjAs
IDY0LjApIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTMyLjAs
IDY0LjApIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
fCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDEsIDEpIHwgaXZl
YzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigwLCAwKSB8
IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDAp
IHwgaXZlYzIoMSwgMSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgLTguMjUgfCAtMC41IHwg
My41IHwgMzYuODEyNSB8IDAuMCB8IDAuMCB8IDIuMCB8IC0yMC4xMjUgfCAxLjAgfCAxLjAgXTsK
KwkJCWlucHV0IGZsb2F0IGluMyA9IFsgMS4wIHwgMi4wIHwgLTAuNSB8IDMuNSB8IDM2LjgxMjUg
fCAtOC4yNSB8IDEuMCB8IDAuMCB8IDAuMCB8IC0yMC4xMjUgXTsKKwkJCWlucHV0IGludCBpbjQg
PSBbIDI1NSB8IDggfCAxMSB8IC0xMiB8IC0xOTIgfCAwIHwgMiB8IDEgfCAtNjYgfCA1IF07CisJ
CQlpbnB1dCBib29sIGluNSA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2Ug
fCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgbWF0Mng0
IG91dDAgPSBbIG1hdDJ4NCgwLjAsIDAuNSwgMS4wLCAxLjAsIC04LjI1LCAxLjAsIDI1NS4wLCAx
LjApIHwgbWF0Mng0KC0zMi4wLCA2NC4wLCAwLjAsIC0yLjAsIC0wLjUsIDIuMCwgOC4wLCAwLjAp
IHwgbWF0Mng0KC0wLjUsIC0yLjI1LCAtMzIuMCwgNjQuMCwgMy41LCAtMC41LCAxMS4wLCAwLjAp
IHwgbWF0Mng0KDAuMCwgMC41LCAwLjAsIC0yLjAsIDM2LjgxMjUsIDMuNSwgLTEyLjAsIDEuMCkg
fCBtYXQyeDQoLTMyLjAsIDY0LjAsIDAuMCwgMC4wLCAwLjAsIDM2LjgxMjUsIC0xOTIuMCwgMC4w
KSB8IG1hdDJ4NCgxLjAsIDEuMjUsIDAuMCwgMC4wLCAwLjAsIC04LjI1LCAwLjAsIDEuMCkgfCBt
YXQyeDQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0zMi4wLCA2NC4wLCAyLjAsIDEuMCwgMi4w
LCAxLjApIHwgbWF0Mng0KDEuMCwgMS4yNSwgMC4wLCAwLjAsIC0yMC4xMjUsIDAuMCwgMS4wLCAw
LjApIHwgbWF0Mng0KC0wLjUsIC0yLjI1LCAwLjAsIDAuMCwgMS4wLCAwLjAsIC02Ni4wLCAxLjAp
IHwgbWF0Mng0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAxLjAsIDEuMCwgMS4wLCAtMjAuMTI1
LCA1LjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IG1hdDJ4NChpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41KTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9mbG9hdF9pbnRfdmVjMl9ib29s
X2J2ZWMyX3RvX21hdDJ4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYm9vbCBpbjAgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVl
IHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0g
WyAwLjAgfCAtMC41IHwgLTIwLjEyNSB8IC04LjI1IHwgMC4wIHwgMi4wIHwgMy41IHwgMS4wIHwg
MS4wIHwgMzYuODEyNSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgMiB8IDEgfCAyNTUgfCA4IHwg
LTY2IHwgMCB8IC0xMiB8IDUgfCAtMTkyIHwgMTEgXTsKKwkJCWlucHV0IHZlYzIgaW4zID0gWyB2
ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigxLjAsIDEuMjUpIHwg
dmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4w
LCAxLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKDAu
MCwgMC41KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlpbnB1dCBib29s
IGluNCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRy
dWUgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBidmVjMiBpbjUgPSBbIGJ2ZWMy
KHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRy
dWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihm
YWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgbWF0Mng0IG91
dDAgPSBbIG1hdDJ4NCgwLjAsIDAuMCwgMi4wLCAtMzIuMCwgNjQuMCwgMS4wLCAxLjAsIDAuMCkg
fCBtYXQyeDQoMS4wLCAtMC41LCAxLjAsIC0wLjUsIC0yLjI1LCAwLjAsIDEuMCwgMS4wKSB8IG1h
dDJ4NCgwLjAsIC0yMC4xMjUsIDI1NS4wLCAxLjAsIDEuMjUsIDAuMCwgMC4wLCAxLjApIHwgbWF0
Mng0KDEuMCwgLTguMjUsIDguMCwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDEuMCwgMS4wLCAx
LjApIHwgbWF0Mng0KDEuMCwgMC4wLCAtNjYuMCwgMC4wLCAwLjUsIDAuMCwgMC4wLCAwLjApIHwg
bWF0Mng0KDEuMCwgMi4wLCAwLjAsIDEuMCwgMS4yNSwgMC4wLCAwLjAsIDEuMCkgfCBtYXQyeDQo
MC4wLCAzLjUsIC0xMi4wLCAtMzIuMCwgNjQuMCwgMS4wLCAwLjAsIDAuMCkgfCBtYXQyeDQoMC4w
LCAxLjAsIDUuMCwgLTAuNSwgLTIuMjUsIDEuMCwgMC4wLCAwLjApIHwgbWF0Mng0KDAuMCwgMS4w
LCAtMTkyLjAsIDAuMCwgMC41LCAxLjAsIDAuMCwgMC4wKSB8IG1hdDJ4NCgxLjAsIDM2LjgxMjUs
IDExLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDEuMCwgMC4wKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0Mng0KGluMCwg
aW4xLCBpbjIsIGluMywgaW40LCBpbjUpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX2J2ZWMyX2ludF92ZWM0X3RvX21hdDJ4NAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIHRydWUgfCB0cnVlIHwgdHJ1
ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBd
OworCQkJaW5wdXQgYnZlYzIgaW4xID0gWyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2Us
IGZhbHNlKSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgOCB8IDEgfCA1IHwgLTY2IHwgLTE5MiB8
IDExIHwgMjU1IHwgMCB8IC0xMiB8IDIgXTsKKwkJCWlucHV0IHZlYzQgaW4zID0gWyB2ZWM0KDAu
MCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0
KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUp
IHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1
LCAxLjc1KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwg
MC4yNSkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAu
MjUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIF07CisJCQlvdXRwdXQgbWF0Mng0IG91dDAgPSBbIG1hdDJ4NCgxLjAsIDEu
MCwgMS4wLCA4LjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCBtYXQyeDQoMS4wLCAwLjAsIDAu
MCwgMS4wLCAwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgbWF0Mng0KDEuMCwgMS4wLCAwLjAsIDUu
MCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IG1hdDJ4NCgwLjAsIDAuMCwgMC4wLCAtNjYu
MCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCBtYXQyeDQoMC4wLCAxLjAsIDEuMCwgLTE5Mi4w
LCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgbWF0Mng0KDAuMCwgMS4wLCAwLjAsIDExLjAs
IDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgbWF0Mng0KDAuMCwgMC4wLCAxLjAsIDI1NS4wLCAt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IG1hdDJ4NCgw
LjAsIDAuMCwgMC4wLCAwLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUpIHwgbWF0Mng0KDEuMCwgMC4wLCAxLjAsIC0xMi4wLCAtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgbWF0Mng0KDEuMCwgMC4wLCAwLjAsIDIuMCwgLTMyLjAsIDY0LjAsIC01MS4w
LCAyNC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gbWF0Mng0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2J2ZWM0X2l2ZWMyX2Jvb2xfdG9fbWF0Mng0CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAgPSBbIDAuMCB8
IDMuNSB8IDIuMCB8IC04LjI1IHwgLTIwLjEyNSB8IDM2LjgxMjUgfCAxLjAgfCAtMC41IF07CisJ
CQlpbnB1dCBidmVjNCBpbjEgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwg
dHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworCQkJaW5wdXQgaXZlYzIgaW4yID0gWyBpdmVjMigwLCAtMikgfCBpdmVj
MigtMzIsIDY0KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAwKSB8IGl2
ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgXTsKKwkJCWlucHV0IGJvb2wg
aW4zID0gWyB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgXTsKKwkJCW91dHB1dCBtYXQyeDQgb3V0MCA9IFsgbWF0Mng0KDAuMCwgMS4wLCAw
LjAsIDAuMCwgMS4wLCAwLjAsIC0yLjAsIDEuMCkgfCBtYXQyeDQoMy41LCAxLjAsIDEuMCwgMS4w
LCAxLjAsIC0zMi4wLCA2NC4wLCAxLjApIHwgbWF0Mng0KDIuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAxLjAsIDEuMCwgMC4wKSB8IG1hdDJ4NCgtOC4yNSwgMC4wLCAxLjAsIDAuMCwgMC4wLCAxLjAs
IDEuMCwgMS4wKSB8IG1hdDJ4NCgtMjAuMTI1LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjApIHwgbWF0Mng0KDM2LjgxMjUsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAu
MCkgfCBtYXQyeDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
Mng0KC0wLjUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMi4wLCAxLjApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQyeDQoaW4wLCBp
bjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dmVjM192ZWMzX3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwgMC43
NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIF07
CisJCQlpbnB1dCB2ZWMzIGluMSA9IFsgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgfCB2ZWMzKC0zMi4wLCA2NC4w
LCAtNTEuMCkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwgMC43
NSkgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0M3gyKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDEuMCwgMS4yNSwgMS4xMjUpIHwgbWF0M3gyKC0wLjUs
IC0yLjI1LCAtNC44NzUsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQp
IHwgbWF0M3gyKDAuMCwgMC41LCAwLjc1LCAtMzIuMCwgNjQuMCwgLTUxLjApIHwgbWF0M3gyKC0z
Mi4wLCA2NC4wLCAtNTEuMCwgLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCBtYXQzeDIoMS4wLCAxLjI1
LCAxLjEyNSwgMC4wLCAwLjUsIDAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjM19idmVjM190b19tYXQzeDIKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGJ2ZWMzIGluMSA9IFsgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0M3gyKDEuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0M3gyKDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAp
IHwgbWF0M3gyKDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0M3gyKDEuMCwgMS4w
LCAxLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0M3gyKDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAw
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQzeDIoaW4wLCBpbjEpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBmbG9hdF9mbG9hdF9mbG9hdF9mbG9hdF9mbG9hdF9mbG9hdF90b19tYXQzeDIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMCA9IFsgLTguMjUg
fCAzNi44MTI1IHwgLTIwLjEyNSB8IC0wLjUgfCAzLjUgfCAxLjAgfCAyLjAgfCAwLjAgXTsKKwkJ
CWlucHV0IGZsb2F0IGluMSA9IFsgMi4wIHwgMy41IHwgLTIwLjEyNSB8IDM2LjgxMjUgfCAxLjAg
fCAwLjAgfCAtOC4yNSB8IC0wLjUgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgLTAuNSB8IDIu
MCB8IDEuMCB8IDAuMCB8IC04LjI1IHwgMzYuODEyNSB8IC0yMC4xMjUgfCAzLjUgXTsKKwkJCWlu
cHV0IGZsb2F0IGluMyA9IFsgMzYuODEyNSB8IDAuMCB8IDEuMCB8IC0wLjUgfCAyLjAgfCAzLjUg
fCAtMjAuMTI1IHwgLTguMjUgXTsKKwkJCWlucHV0IGZsb2F0IGluNCA9IFsgMzYuODEyNSB8IDIu
MCB8IDAuMCB8IC0wLjUgfCAzLjUgfCAtMjAuMTI1IHwgLTguMjUgfCAxLjAgXTsKKwkJCWlucHV0
IGZsb2F0IGluNSA9IFsgMC4wIHwgMzYuODEyNSB8IC0yMC4xMjUgfCAtMC41IHwgMy41IHwgMi4w
IHwgMS4wIHwgLTguMjUgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0M3gyKC04LjI1
LCAyLjAsIC0wLjUsIDM2LjgxMjUsIDM2LjgxMjUsIDAuMCkgfCBtYXQzeDIoMzYuODEyNSwgMy41
LCAyLjAsIDAuMCwgMi4wLCAzNi44MTI1KSB8IG1hdDN4MigtMjAuMTI1LCAtMjAuMTI1LCAxLjAs
IDEuMCwgMC4wLCAtMjAuMTI1KSB8IG1hdDN4MigtMC41LCAzNi44MTI1LCAwLjAsIC0wLjUsIC0w
LjUsIC0wLjUpIHwgbWF0M3gyKDMuNSwgMS4wLCAtOC4yNSwgMi4wLCAzLjUsIDMuNSkgfCBtYXQz
eDIoMS4wLCAwLjAsIDM2LjgxMjUsIDMuNSwgLTIwLjEyNSwgMi4wKSB8IG1hdDN4MigyLjAsIC04
LjI1LCAtMjAuMTI1LCAtMjAuMTI1LCAtOC4yNSwgMS4wKSB8IG1hdDN4MigwLjAsIC0wLjUsIDMu
NSwgLTguMjUsIDEuMCwgLTguMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
aW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wLCBpbjEsIGluMiwgaW4zLCBpbjQsIGluNSk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludF9pbnRfaW50X2lu
dF9pbnRfaW50X3RvX21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaW50IGluMCA9IFsgOCB8IC0xOTIgfCAyIHwgMTEgfCAyNTUgfCAtNjYgfCA1IHwgLTEy
IHwgMSB8IDAgXTsKKwkJCWlucHV0IGludCBpbjEgPSBbIDEgfCAyIHwgLTEyIHwgNSB8IDAgfCAy
NTUgfCA4IHwgMTEgfCAtMTkyIHwgLTY2IF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAtMTIgfCAx
MSB8IDIgfCAxIHwgOCB8IC02NiB8IC0xOTIgfCA1IHwgMjU1IHwgMCBdOworCQkJaW5wdXQgaW50
IGluMyA9IFsgLTE5MiB8IDAgfCAtMTIgfCAxMSB8IDEgfCAtNjYgfCA4IHwgMjU1IHwgMiB8IDUg
XTsKKwkJCWlucHV0IGludCBpbjQgPSBbIC0xMiB8IDUgfCAwIHwgLTY2IHwgMjU1IHwgOCB8IC0x
OTIgfCAxMSB8IDIgfCAxIF07CisJCQlpbnB1dCBpbnQgaW41ID0gWyAtNjYgfCAtMTIgfCA4IHwg
MiB8IDI1NSB8IDAgfCAtMTkyIHwgMTEgfCAxIHwgNSBdOworCQkJb3V0cHV0IG1hdDN4MiBvdXQw
ID0gWyBtYXQzeDIoOC4wLCAxLjAsIC0xMi4wLCAtMTkyLjAsIC0xMi4wLCAtNjYuMCkgfCBtYXQz
eDIoLTE5Mi4wLCAyLjAsIDExLjAsIDAuMCwgNS4wLCAtMTIuMCkgfCBtYXQzeDIoMi4wLCAtMTIu
MCwgMi4wLCAtMTIuMCwgMC4wLCA4LjApIHwgbWF0M3gyKDExLjAsIDUuMCwgMS4wLCAxMS4wLCAt
NjYuMCwgMi4wKSB8IG1hdDN4MigyNTUuMCwgMC4wLCA4LjAsIDEuMCwgMjU1LjAsIDI1NS4wKSB8
IG1hdDN4MigtNjYuMCwgMjU1LjAsIC02Ni4wLCAtNjYuMCwgOC4wLCAwLjApIHwgbWF0M3gyKDUu
MCwgOC4wLCAtMTkyLjAsIDguMCwgLTE5Mi4wLCAtMTkyLjApIHwgbWF0M3gyKC0xMi4wLCAxMS4w
LCA1LjAsIDI1NS4wLCAxMS4wLCAxMS4wKSB8IG1hdDN4MigxLjAsIC0xOTIuMCwgMjU1LjAsIDIu
MCwgMi4wLCAxLjApIHwgbWF0M3gyKDAuMCwgLTY2LjAsIDAuMCwgNS4wLCAxLjAsIDUuMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4
MihpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgYm9vbF9ib29sX2Jvb2xfYm9vbF9ib29sX2Jvb2xfdG9fbWF0M3gy
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsg
dHJ1ZSB8IGZhbHNlIF07CisJCQlpbnB1dCBib29sIGluMSA9IFsgZmFsc2UgfCB0cnVlIF07CisJ
CQlpbnB1dCBib29sIGluMiA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluMyA9
IFsgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBib29sIGluNCA9IFsgZmFsc2UgfCB0cnVlIF07
CisJCQlpbnB1dCBib29sIGluNSA9IFsgZmFsc2UgfCB0cnVlIF07CisJCQlvdXRwdXQgbWF0M3gy
IG91dDAgPSBbIG1hdDN4MigxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDN4Migw
LjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3gyKGluMCwgaW4xLCBpbjIsIGluMywgaW40
LCBpbjUpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2Zs
b2F0X2ludF9ib29sX2Zsb2F0X2ludF90b19tYXQzeDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1
ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCWlu
cHV0IGZsb2F0IGluMSA9IFsgLTIwLjEyNSB8IDAuMCB8IDMuNSB8IDAuMCB8IDEuMCB8IC04LjI1
IHwgMS4wIHwgMi4wIHwgMzYuODEyNSB8IC0wLjUgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIDI1
NSB8IC02NiB8IDggfCAtMTkyIHwgNSB8IDExIHwgMSB8IDIgfCAwIHwgLTEyIF07CisJCQlpbnB1
dCBib29sIGluMyA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVl
IHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBmbG9hdCBpbjQgPSBb
IDAuMCB8IC0yMC4xMjUgfCAxLjAgfCAtOC4yNSB8IDAuMCB8IC0wLjUgfCAyLjAgfCAzLjUgfCAx
LjAgfCAzNi44MTI1IF07CisJCQlpbnB1dCBpbnQgaW41ID0gWyAtMTkyIHwgOCB8IDIgfCAyNTUg
fCAtNjYgfCAtMTIgfCAxMSB8IDAgfCA1IHwgMSBdOworCQkJb3V0cHV0IG1hdDN4MiBvdXQwID0g
WyBtYXQzeDIoMS4wLCAtMjAuMTI1LCAyNTUuMCwgMS4wLCAwLjAsIC0xOTIuMCkgfCBtYXQzeDIo
MC4wLCAwLjAsIC02Ni4wLCAwLjAsIC0yMC4xMjUsIDguMCkgfCBtYXQzeDIoMS4wLCAzLjUsIDgu
MCwgMC4wLCAxLjAsIDIuMCkgfCBtYXQzeDIoMS4wLCAwLjAsIC0xOTIuMCwgMS4wLCAtOC4yNSwg
MjU1LjApIHwgbWF0M3gyKDAuMCwgMS4wLCA1LjAsIDAuMCwgMC4wLCAtNjYuMCkgfCBtYXQzeDIo
MS4wLCAtOC4yNSwgMTEuMCwgMS4wLCAtMC41LCAtMTIuMCkgfCBtYXQzeDIoMC4wLCAxLjAsIDEu
MCwgMS4wLCAyLjAsIDExLjApIHwgbWF0M3gyKDEuMCwgMi4wLCAyLjAsIDAuMCwgMy41LCAwLjAp
IHwgbWF0M3gyKDAuMCwgMzYuODEyNSwgMC4wLCAwLjAsIDEuMCwgNS4wKSB8IG1hdDN4MigwLjAs
IC0wLjUsIC0xMi4wLCAxLjAsIDM2LjgxMjUsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4MihpbjAsIGluMSwgaW4yLCBpbjMs
IGluNCwgaW41KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVj
M19pdmVjM190b19tYXQzeDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIHwg
dmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSBdOwor
CQkJaW5wdXQgaXZlYzMgaW4xID0gWyBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIDAsIDApIHwg
aXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBd
OworCQkJb3V0cHV0IG1hdDN4MiBvdXQwID0gWyBtYXQzeDIoMC4wLCAwLjUsIDAuNzUsIDEuMCwg
MS4wLCAxLjApIHwgbWF0M3gyKDEuMCwgMS4yNSwgMS4xMjUsIDAuMCwgMC4wLCAwLjApIHwgbWF0
M3gyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMCwgLTIuMCwg
LTQuMCkgfCBtYXQzeDIoLTMyLjAsIDY0LjAsIC01MS4wLCAtMzIuMCwgNjQuMCwgLTUxLjApIHwg
bWF0M3gyKC0wLjUsIC0yLjI1LCAtNC44NzUsIDAuMCwgMC4wLCAwLjApIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzeDIoaW4wLCBpbjEp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMyX2J2ZWM0X3Rv
X21hdDN4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBp
bjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2
ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigxLjAsIDEuMjUpIF07
CisJCQlpbnB1dCBidmVjNCBpbjEgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0
M3gyKDAuMCwgMC41LCAxLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0M3gyKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0M3gyKC0zMi4wLCA2NC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjApIHwgbWF0M3gyKC0wLjUsIC0yLjI1LCAxLjAsIDAuMCwgMC4wLCAxLjAp
IHwgbWF0M3gyKDEuMCwgMS4yNSwgMC4wLCAxLjAsIDAuMCwgMC4wKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0M3gyKGluMCwgaW4xKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYnZlYzNfZmxvYXRfaXZl
YzJfdG9fbWF0M3gyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
dmVjMyBpbjAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2Us
IGZhbHNlKSBdOworCQkJaW5wdXQgZmxvYXQgaW4xID0gWyAtOC4yNSB8IDEuMCB8IDIuMCB8IC0w
LjUgfCAtMjAuMTI1IHwgMC4wIHwgMzYuODEyNSB8IDMuNSBdOworCQkJaW5wdXQgaXZlYzIgaW4y
ID0gWyBpdmVjMigxLCAxKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAt
MikgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMy
LCA2NCkgXTsKKwkJCW91dHB1dCBtYXQzeDIgb3V0MCA9IFsgbWF0M3gyKDAuMCwgMC4wLCAwLjAs
IC04LjI1LCAxLjAsIDEuMCkgfCBtYXQzeDIoMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCkg
fCBtYXQzeDIoMC4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCkgfCBtYXQzeDIoMC4wLCAwLjAs
IDAuMCwgLTAuNSwgMC4wLCAtMi4wKSB8IG1hdDN4MigwLjAsIDEuMCwgMC4wLCAtMjAuMTI1LCAw
LjAsIDAuMCkgfCBtYXQzeDIoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQzeDIo
MC4wLCAxLjAsIDAuMCwgMzYuODEyNSwgMC4wLCAtMi4wKSB8IG1hdDN4MigxLjAsIDAuMCwgMC4w
LCAzLjUsIC0zMi4wLCA2NC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gbWF0M3gyKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2ZWMzX2Zsb2F0X2J2ZWMyX3RvX21hdDN4MgorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMo
MS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAt
Mi4yNSwgLTQuODc1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2
NC4wLCAtNTEuMCkgfCB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUp
IHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJ
aW5wdXQgZmxvYXQgaW4xID0gWyAtOC4yNSB8IDM2LjgxMjUgfCAtMC41IHwgMy41IHwgMi4wIHwg
LTIwLjEyNSB8IDAuMCB8IDEuMCBdOworCQkJaW5wdXQgYnZlYzIgaW4yID0gWyBidmVjMih0cnVl
LCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIoZmFsc2UsIHRydWUp
IHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0
IG1hdDN4MiBvdXQwID0gWyBtYXQzeDIoMS4wLCAxLjI1LCAxLjEyNSwgLTguMjUsIDEuMCwgMC4w
KSB8IG1hdDN4MigxLjAsIDEuMjUsIDEuMTI1LCAzNi44MTI1LCAwLjAsIDAuMCkgfCBtYXQzeDIo
LTAuNSwgLTIuMjUsIC00Ljg3NSwgLTAuNSwgMS4wLCAxLjApIHwgbWF0M3gyKC0wLjUsIC0yLjI1
LCAtNC44NzUsIDMuNSwgMC4wLCAwLjApIHwgbWF0M3gyKC0zMi4wLCA2NC4wLCAtNTEuMCwgMi4w
LCAwLjAsIDEuMCkgfCBtYXQzeDIoMC4wLCAwLjUsIDAuNzUsIC0yMC4xMjUsIDAuMCwgMS4wKSB8
IG1hdDN4MigwLjAsIDAuNSwgMC43NSwgMC4wLCAxLjAsIDAuMCkgfCBtYXQzeDIoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMS4wLCAwLjAsIDAuMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4MihpbjAs
IGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVj
M192ZWMzX3ZlYzNfdG9fbWF0MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygwLjAsIDAuNSwg
MC43NSkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07
CisJCQlpbnB1dCB2ZWMzIGluMSA9IFsgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0zMi4wLCA2NC4w
LCAtNTEuMCkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygwLjAsIDAuNSwgMC43
NSkgXTsKKwkJCWlucHV0IHZlYzMgaW4yID0gWyB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC41
LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKDAuMCwgMC41
LCAwLjc1KSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygxLjAsIDEuMjUsIDEuMTI1
LCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IG1hdDMoLTAuNSwgLTIuMjUsIC00Ljg3NSwg
MS4wLCAxLjI1LCAxLjEyNSwgLTMyLjAsIDY0LjAsIC01MS4wKSB8IG1hdDMoLTMyLjAsIDY0LjAs
IC01MS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgbWF0Mygw
LjAsIDAuNSwgMC43NSwgLTAuNSwgLTIuMjUsIC00Ljg3NSwgMS4wLCAxLjI1LCAxLjEyNSkgfCBt
YXQzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMCwgMC41LCAw
Ljc1LCAwLjAsIDAuNSwgMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWMzX2l2ZWMzX2l2ZWMzX3RvX21hdDMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMo
MSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygtMzIs
IDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCWlucHV0IGl2ZWMzIGluMSA9IFsgaXZl
YzMoMCwgMCwgMCkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2
ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgXTsKKwkJCWlucHV0IGl2ZWMzIGluMiA9IFsg
aXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAg
PSBbIG1hdDMoMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCkgfCBt
YXQzKDAuMCwgLTIuMCwgLTQuMCwgMC4wLCAtMi4wLCAtNC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1h
dDMoMC4wLCAwLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAp
IHwgbWF0MygtMzIuMCwgNjQuMCwgLTUxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwgLTQu
MCkgfCBtYXQzKDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQz
KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB2ZWMyX2l2ZWMyX2Zsb2F0X2Zsb2F0X2ludF9ib29sX2Jvb2xfdG9fbWF0MworCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMS4wLCAx
LjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIo
MC4wLCAwLjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgXTsKKwkJCWlucHV0IGl2ZWMyIGluMSA9IFsg
aXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8
IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKC0zMiwgNjQp
IHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSBdOworCQkJaW5wdXQgZmxvYXQgaW4yID0g
WyAtMC41IHwgMy41IHwgMC4wIHwgLTIwLjEyNSB8IDEuMCB8IC04LjI1IHwgMC4wIHwgMS4wIHwg
Mi4wIHwgMzYuODEyNSBdOworCQkJaW5wdXQgZmxvYXQgaW4zID0gWyAzLjUgfCAwLjAgfCAtMjAu
MTI1IHwgMzYuODEyNSB8IDIuMCB8IC04LjI1IHwgLTAuNSB8IDEuMCB8IDAuMCB8IDEuMCBdOwor
CQkJaW5wdXQgaW50IGluNCA9IFsgMCB8IDExIHwgNSB8IC0xOTIgfCA4IHwgLTY2IHwgMSB8IDIg
fCAyNTUgfCAtMTIgXTsKKwkJCWlucHV0IGJvb2wgaW41ID0gWyB0cnVlIHwgdHJ1ZSB8IHRydWUg
fCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsK
KwkJCWlucHV0IGJvb2wgaW42ID0gWyBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFs
c2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCW91dHB1dCBtYXQz
IG91dDAgPSBbIG1hdDMoMS4wLCAxLjI1LCAwLjAsIDAuMCwgLTAuNSwgMy41LCAwLjAsIDEuMCwg
MC4wKSB8IG1hdDMoLTAuNSwgLTIuMjUsIDAuMCwgLTIuMCwgMy41LCAwLjAsIDExLjAsIDEuMCwg
MC4wKSB8IG1hdDMoMC4wLCAwLjUsIDEuMCwgMS4wLCAwLjAsIC0yMC4xMjUsIDUuMCwgMS4wLCAx
LjApIHwgbWF0MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wLCAtMi4wLCAtMjAuMTI1LCAz
Ni44MTI1LCAtMTkyLjAsIDAuMCwgMC4wKSB8IG1hdDMoLTMyLjAsIDY0LjAsIDAuMCwgMC4wLCAx
LjAsIDIuMCwgOC4wLCAxLjAsIDAuMCkgfCBtYXQzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAw
LjAsIDAuMCwgLTguMjUsIC04LjI1LCAtNjYuMCwgMC4wLCAwLjApIHwgbWF0MygtMC41LCAtMi4y
NSwgMS4wLCAxLjAsIDAuMCwgLTAuNSwgMS4wLCAwLjAsIDEuMCkgfCBtYXQzKDEuMCwgMS4yNSwg
LTMyLjAsIDY0LjAsIDEuMCwgMS4wLCAyLjAsIDAuMCwgMS4wKSB8IG1hdDMoMC4wLCAwLjUsIDAu
MCwgMC4wLCAyLjAsIDAuMCwgMjU1LjAsIDEuMCwgMS4wKSB8IG1hdDMoLTMyLjAsIDY0LjAsIC0z
Mi4wLCA2NC4wLCAzNi44MTI1LCAxLjAsIC0xMi4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wLCBpbjEsIGlu
MiwgaW4zLCBpbjQsIGluNSwgaW42KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYm9vbF9mbG9hdF9pbnRfdmVjMl9ib29sX2J2ZWMyX2Zsb2F0X3RvX21hdDMKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyBmYWxz
ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZh
bHNlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTguMjUgfCAxLjAgfCAtMC41
IHwgMzYuODEyNSB8IDAuMCB8IDMuNSB8IC0yMC4xMjUgfCAxLjAgfCAwLjAgfCAyLjAgXTsKKwkJ
CWlucHV0IGludCBpbjIgPSBbIDggfCAtNjYgfCA1IHwgMSB8IDAgfCAyIHwgLTEyIHwgLTE5MiB8
IDExIHwgMjU1IF07CisJCQlpbnB1dCB2ZWMyIGluMyA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMy
KC0zMi4wLCA2NC4wKSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTAu
NSwgLTIuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJaW5wdXQgYm9vbCBpbjQgPSBbIHRydWUgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBm
YWxzZSBdOworCQkJaW5wdXQgYnZlYzIgaW41ID0gWyBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUs
IGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSBdOworCQkJaW5wdXQgZmxvYXQgaW42ID0gWyAtMC41IHwgMS4wIHwgMS4w
IHwgMC4wIHwgMzYuODEyNSB8IDIuMCB8IDAuMCB8IDMuNSB8IC0yMC4xMjUgfCAtOC4yNSBdOwor
CQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygwLjAsIC04LjI1LCA4LjAsIDAuMCwgMC41LCAx
LjAsIDAuMCwgMS4wLCAtMC41KSB8IG1hdDMoMS4wLCAxLjAsIC02Ni4wLCAtMzIuMCwgNjQuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDMoMS4wLCAtMC41LCA1LjAsIDEuMCwgMS4yNSwgMS4w
LCAxLjAsIDAuMCwgMS4wKSB8IG1hdDMoMS4wLCAzNi44MTI1LCAxLjAsIC0zMi4wLCA2NC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0MygxLjAsIDAuMCwgMC4wLCAtMC41LCAtMi4yNSwgMC4w
LCAxLjAsIDEuMCwgMzYuODEyNSkgfCBtYXQzKDEuMCwgMy41LCAyLjAsIC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAxLjAsIDAuMCwgMC4wLCAyLjApIHwgbWF0MygwLjAsIC0yMC4xMjUsIC0xMi4w
LCAtMC41LCAtMi4yNSwgMS4wLCAxLjAsIDAuMCwgMC4wKSB8IG1hdDMoMC4wLCAxLjAsIC0xOTIu
MCwgMC4wLCAwLjUsIDAuMCwgMC4wLCAwLjAsIDMuNSkgfCBtYXQzKDAuMCwgMC4wLCAxMS4wLCAx
LjAsIDEuMjUsIDEuMCwgMC4wLCAxLjAsIC0yMC4xMjUpIHwgbWF0MygwLjAsIDIuMCwgMjU1LjAs
IC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDEuMCwgMS4wLCAtOC4yNSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDMoaW4wLCBp
bjEsIGluMiwgaW4zLCBpbjQsIGluNSwgaW42KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYm9vbF9idmVjMl9pbnRfdmVjNF9ib29sX3RvX21hdDMKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVlIHwgZmFs
c2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8
IHRydWUgXTsKKwkJCWlucHV0IGJ2ZWMyIGluMSA9IFsgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNl
LCB0cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC0xOTIgfCAyIHwgMCB8IDUg
fCAxIHwgLTY2IHwgMTEgfCAtMTIgfCA4IHwgMjU1IF07CisJCQlpbnB1dCB2ZWM0IGluMyA9IFsg
dmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1
KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEy
NSwgMS43NSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwg
MS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMC41
LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJaW5wdXQgYm9vbCBpbjQgPSBbIGZhbHNlIHwgdHJ1
ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwg
dHJ1ZSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygxLjAsIDAuMCwgMC4wLCAtMTky
LjAsIC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCwgMC4wKSB8IG1hdDMoMC4wLCAwLjAsIDEuMCwg
Mi4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAxLjAp
IHwgbWF0MygxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4wKSB8
IG1hdDMoMS4wLCAxLjAsIDEuMCwgNS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAsIDEuMCkg
fCBtYXQzKDAuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSwgMC4wKSB8
IG1hdDMoMC4wLCAwLjAsIDAuMCwgLTY2LjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4wKSB8
IG1hdDMoMS4wLCAwLjAsIDEuMCwgMTEuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSwgMC4wKSB8
IG1hdDMoMC4wLCAxLjAsIDAuMCwgLTEyLjAsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgMS4w
KSB8IG1hdDMoMC4wLCAxLjAsIDAuMCwgOC4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIDEu
MCkgfCBtYXQzKDEuMCwgMC4wLCAwLjAsIDI1NS4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQzKGluMCwgaW4xLCBpbjIsIGluMywgaW40KTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZmxvYXRfYnZlYzRfaXZl
YzJfYm9vbF9ib29sX3RvX21hdDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGZsb2F0IGluMCA9IFsgLTguMjUgfCAyLjAgfCAzNi44MTI1IHwgMy41IHwgMS4wIHwg
LTAuNSB8IC0yMC4xMjUgfCAwLjAgXTsKKwkJCWlucHV0IGJ2ZWM0IGluMSA9IFsgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZh
bHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIF07CisJCQlpbnB1dCBpdmVjMiBp
bjIgPSBbIGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigt
MzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgfCBpdmVj
MigxLCAxKSBdOworCQkJaW5wdXQgYm9vbCBpbjMgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwg
dHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjQg
PSBbIHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwg
dHJ1ZSBdOworCQkJb3V0cHV0IG1hdDMgb3V0MCA9IFsgbWF0MygtOC4yNSwgMC4wLCAwLjAsIDAu
MCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAxLjApIHwgbWF0MygyLjAsIDAuMCwgMS4wLCAwLjAsIDAu
MCwgMC4wLCAtMi4wLCAxLjAsIDAuMCkgfCBtYXQzKDM2LjgxMjUsIDEuMCwgMC4wLCAwLjAsIDEu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDMoMy41LCAxLjAsIDEuMCwgMS4wLCAxLjAsIC0z
Mi4wLCA2NC4wLCAxLjAsIDAuMCkgfCBtYXQzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMS4wLCAxLjApIHwgbWF0MygtMC41LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCkgfCBtYXQzKC0yMC4xMjUsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAtMi4w
LCAxLjAsIDAuMCkgfCBtYXQzKDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgMC4w
LCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQzKGluMCwgaW4xLCBpbjIsIGluMywgaW40KTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF92ZWM0X3ZlYzRfdG9fbWF0M3g0CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoMS4wLCAxLjI1
LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0w
LjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgXTsK
KwkJCWlucHV0IHZlYzQgaW4xID0gWyB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVj
NCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAp
IHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSBdOworCQkJaW5wdXQgdmVjNCBpbjIgPSBb
IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwg
MS43NSkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAu
MjUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgwLjAsIDAuNSwgMC43
NSwgMC44MjUpIF07CisJCQlvdXRwdXQgbWF0M3g0IG91dDAgPSBbIG1hdDN4NCgtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwg
bWF0M3g0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwg
MS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCBtYXQzeDQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4w
LCAwLjAsIDAuNSwgMC43NSwgMC44MjUsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQsIDAuMjUpIHwgbWF0M3g0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgLTMyLjAs
IDY0LjAsIC01MS4wLCAyNC4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgbWF0M3g0KDAu
MCwgMC41LCAwLjc1LCAwLjgyNSwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSwgMC4wLCAwLjUsIDAu
NzUsIDAuODI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gbWF0M3g0KGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpdmVjNF9pdmVjNF9pdmVjNF90b19tYXQzeDQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgLTIs
IC00LCA5KSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBp
dmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIF07CisJCQlpbnB1dCBpdmVjNCBp
bjEgPSBbIGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KC0z
MiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAwLCAwLCAwKSBd
OworCQkJaW5wdXQgaXZlYzQgaW4yID0gWyBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
LTMyLCA2NCwgLTUxLCAyNCkgXTsKKwkJCW91dHB1dCBtYXQzeDQgb3V0MCA9IFsgbWF0M3g0KDAu
MCwgLTIuMCwgLTQuMCwgOS4wLCAwLjAsIC0yLjAsIC00LjAsIDkuMCwgMC4wLCAtMi4wLCAtNC4w
LCA5LjApIHwgbWF0M3g0KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0M3g0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCwgLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wLCAxLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0M3g0KDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwg
bWF0M3g0KDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMzIuMCwgNjQu
MCwgLTUxLjAsIDI0LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBtYXQzeDQoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHZlYzJfaXZlYzJfZmxvYXRfZmxvYXRfZmxvYXRfaW50X2lu
dF9ib29sX2Jvb2xfYm9vbF90b19tYXQzeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDAuMCwgMC41
KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0zMi4wLCA2NC4w
KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVj
MigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTAu
NSwgLTIuMjUpIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIo
MCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMSwgMSkgfCBpdmVj
MigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBp
dmVjMigwLCAtMikgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgMS4wIHwgLTguMjUgfCAyLjAg
fCAzLjUgfCAtMjAuMTI1IHwgMzYuODEyNSB8IDAuMCB8IDEuMCB8IC0wLjUgfCAwLjAgXTsKKwkJ
CWlucHV0IGZsb2F0IGluMyA9IFsgLTAuNSB8IDM2LjgxMjUgfCAxLjAgfCAxLjAgfCAwLjAgfCAz
LjUgfCAyLjAgfCAwLjAgfCAtOC4yNSB8IC0yMC4xMjUgXTsKKwkJCWlucHV0IGZsb2F0IGluNCA9
IFsgLTguMjUgfCAxLjAgfCAxLjAgfCAwLjAgfCAyLjAgfCAzNi44MTI1IHwgMC4wIHwgLTIwLjEy
NSB8IDMuNSB8IC0wLjUgXTsKKwkJCWlucHV0IGludCBpbjUgPSBbIDExIHwgMiB8IDggfCA1IHwg
MCB8IC0xOTIgfCAxIHwgLTEyIHwgMjU1IHwgLTY2IF07CisJCQlpbnB1dCBpbnQgaW42ID0gWyAt
MTIgfCA1IHwgOCB8IDEgfCAwIHwgMjU1IHwgMTEgfCAtMTkyIHwgLTY2IHwgMiBdOworCQkJaW5w
dXQgYm9vbCBpbjcgPSBbIHRydWUgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjggPSBb
IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNl
IHwgZmFsc2UgfCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjkgPSBbIHRydWUgfCBmYWxzZSB8
IHRydWUgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1
ZSBdOworCQkJb3V0cHV0IG1hdDN4NCBvdXQwID0gWyBtYXQzeDQoMS4wLCAxLjI1LCAwLjAsIDAu
MCwgMS4wLCAtMC41LCAtOC4yNSwgMTEuMCwgLTEyLjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0M3g0
KDAuMCwgMC41LCAwLjAsIDAuMCwgLTguMjUsIDM2LjgxMjUsIDEuMCwgMi4wLCA1LjAsIDEuMCwg
MS4wLCAwLjApIHwgbWF0M3g0KDAuMCwgMC41LCAtMzIuMCwgNjQuMCwgMi4wLCAxLjAsIDEuMCwg
OC4wLCA4LjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0M3g0KC0zMi4wLCA2NC4wLCAxLjAsIDEuMCwg
My41LCAxLjAsIDAuMCwgNS4wLCAxLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0M3g0KC0zMi4wLCA2
NC4wLCAxLjAsIDEuMCwgLTIwLjEyNSwgMC4wLCAyLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4w
KSB8IG1hdDN4NCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTMyLjAsIDY0LjAsIDM2LjgxMjUs
IDMuNSwgMzYuODEyNSwgLTE5Mi4wLCAyNTUuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQzeDQoMS4w
LCAxLjI1LCAwLjAsIDAuMCwgMC4wLCAyLjAsIDAuMCwgMS4wLCAxMS4wLCAxLjAsIDEuMCwgMC4w
KSB8IG1hdDN4NCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wLCAtMi4wLCAxLjAsIDAuMCwg
LTIwLjEyNSwgLTEyLjAsIC0xOTIuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQzeDQoLTAuNSwgLTIu
MjUsIDAuMCwgMC4wLCAtMC41LCAtOC4yNSwgMy41LCAyNTUuMCwgLTY2LjAsIDEuMCwgMC4wLCAw
LjApIHwgbWF0M3g0KC0wLjUsIC0yLjI1LCAwLjAsIC0yLjAsIDAuMCwgLTIwLjEyNSwgLTAuNSwg
LTY2LjAsIDIuMCwgMC4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVk
aXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwg
aW41LCBpbjYsIGluNywgaW44LCBpbjkpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBib29sX2Zsb2F0X2ludF92ZWMzX2Jvb2xfYnZlYzNfZmxvYXRfYm9vbF90b19t
YXQzeDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4w
ID0gWyBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwg
ZmFsc2UgfCBmYWxzZSB8IHRydWUgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgMzYuODEyNSB8
IC04LjI1IHwgMS4wIHwgMC4wIHwgMC4wIHwgMS4wIHwgMi4wIHwgMy41IHwgLTAuNSB8IC0yMC4x
MjUgXTsKKwkJCWlucHV0IGludCBpbjIgPSBbIC02NiB8IC0xOTIgfCAyNTUgfCA4IHwgMCB8IC0x
MiB8IDUgfCAyIHwgMTEgfCAxIF07CisJCQlpbnB1dCB2ZWMzIGluMyA9IFsgdmVjMygtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01
MS4wKSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQu
ODc1KSBdOworCQkJaW5wdXQgYm9vbCBpbjQgPSBbIGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVl
IHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSBdOworCQkJaW5w
dXQgYnZlYzMgaW41ID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisJCQlpbnB1dCBmbG9hdCBpbjYgPSBbIC04LjI1IHwgMS4wIHwgLTAuNSB8
IDM2LjgxMjUgfCAwLjAgfCAyLjAgfCAtMjAuMTI1IHwgMS4wIHwgMC4wIHwgMy41IF07CisJCQlp
bnB1dCBib29sIGluNyA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZh
bHNlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlvdXRwdXQgbWF0M3g0IG91
dDAgPSBbIG1hdDN4NCgwLjAsIDM2LjgxMjUsIC02Ni4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjAsIDEuMCwgMC4wLCAwLjAsIC04LjI1LCAxLjApIHwgbWF0
M3g0KDAuMCwgLTguMjUsIC0xOTIuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAxLjAsIDEuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wKSB8IG1hdDN4NCgxLjAsIDEuMCwgMjU1LjAsIDAuMCwgMC41LCAwLjc1
LCAxLjAsIDAuMCwgMS4wLCAwLjAsIC0wLjUsIDAuMCkgfCBtYXQzeDQoMS4wLCAwLjAsIDguMCwg
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMS4wLCAwLjAsIDAuMCwg
MC4wLCAzNi44MTI1LCAxLjApIHwgbWF0M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC41LCAwLjc1
LCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDN4NCgxLjAsIDEuMCwgLTEyLjAs
IC0zMi4wLCA2NC4wLCAtNTEuMCwgMC4wLCAxLjAsIDEuMCwgMS4wLCAyLjAsIDAuMCkgfCBtYXQz
eDQoMC4wLCAyLjAsIDUuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS4wLCAxLjAsIDEuMCwgMS4wLCAt
MjAuMTI1LCAxLjApIHwgbWF0M3g0KDAuMCwgMy41LCAyLjAsIDEuMCwgMS4yNSwgMS4xMjUsIDEu
MCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjApIHwgbWF0M3g0KDAuMCwgLTAuNSwgMTEuMCwgLTAu
NSwgLTIuMjUsIC00Ljg3NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkgfCBtYXQzeDQo
MS4wLCAtMjAuMTI1LCAxLjAsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMy41LCAxLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBtYXQzeDQoaW4wLCBpbjEsIGluMiwgaW4zLCBpbjQsIGluNSwgaW42LCBpbjcp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2ZWM0X2lu
dF92ZWM0X2Jvb2xfZmxvYXRfdG9fbWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBib29sIGluMCA9IFsgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBi
dmVjNCBpbjEgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRy
dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyAyNTUgfCAyIHwgLTE5MiB8IC0x
MiB8IDExIHwgMSB8IDAgfCAtNjYgfCA4IHwgNSBdOworCQkJaW5wdXQgdmVjNCBpbjMgPSBbIHZl
YzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43
NSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgwLjAsIDAuNSwgMC43NSwg
MC44MjUpIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAw
LjI1KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTMyLjAsIDY0LjAs
IC01MS4wLCAyNC4wKSB8IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgXTsKKwkJCWlucHV0IGJvb2wgaW40ID0gWyB0cnVlIHwgdHJ1ZSB8
IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFs
c2UgXTsKKwkJCWlucHV0IGZsb2F0IGluNSA9IFsgMzYuODEyNSB8IDIuMCB8IC04LjI1IHwgMC4w
IHwgMS4wIHwgMS4wIHwgLTAuNSB8IDMuNSB8IDAuMCB8IC0yMC4xMjUgXTsKKwkJCW91dHB1dCBt
YXQzeDQgb3V0MCA9IFsgbWF0M3g0KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAyNTUuMCwgLTAu
NSwgLTIuMjUsIC00Ljg3NSwgOS4wLCAxLjAsIDM2LjgxMjUpIHwgbWF0M3g0KDEuMCwgMS4wLCAw
LjAsIDAuMCwgMS4wLCAyLjAsIDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUsIDEuMCwgMi4wKSB8IG1h
dDN4NCgxLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgLTE5Mi4wLCAxLjAsIDEuMjUsIDEuMTI1LCAx
Ljc1LCAxLjAsIC04LjI1KSB8IG1hdDN4NCgxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgLTEyLjAs
IDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4wLCAwLjApIHwgbWF0M3g0KDAuMCwgMS4wLCAxLjAs
IDEuMCwgMS4wLCAxMS4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0
LCAwLjI1LCAwLjAsIDEuMCkgfCBtYXQzeDQoMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDEuMCwg
LTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjAsIDEuMCkgfCBtYXQzeDQoMC4wLCAxLjAsIDEu
MCwgMS4wLCAxLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAxLjAsIC0wLjUpIHwg
bWF0M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtNjYuMCwgMC4wLCAwLjUsIDAuNzUsIDAu
ODI1LCAxLjAsIDMuNSkgfCBtYXQzeDQoMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDguMCwgLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSwgMC4wLCAwLjApIHwg
bWF0M3g0KDEuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCA1LjAsIC0wLjUsIC0yLjI1LCAtNC44NzUs
IDkuMCwgMC4wLCAtMjAuMTI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gbWF0M3g0KGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBpbjUpOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9idmVjNF9pdmVj
NF9ib29sX2Jvb2xfaW50X3RvX21hdDN4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAzNi44MTI1IHwgMS4wIHwgMC4wIHwgMy41IHwgLTgu
MjUgfCAtMjAuMTI1IHwgMi4wIHwgMC4wIHwgMS4wIHwgLTAuNSBdOworCQkJaW5wdXQgYnZlYzQg
aW4xID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworCQkJaW5wdXQgaXZlYzQgaW4yID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2
ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIC0y
LCAtNCwgOSkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MCwgMCwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgXTsKKwkJCWlucHV0IGJvb2wgaW4zID0gWyB0cnVlIHwgZmFs
c2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwg
ZmFsc2UgXTsKKwkJCWlucHV0IGJvb2wgaW40ID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRy
dWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCWlu
cHV0IGludCBpbjUgPSBbIDEgfCA1IHwgLTEyIHwgOCB8IC0xOTIgfCAyIHwgLTY2IHwgMjU1IHwg
MTEgfCAwIF07CisJCQlvdXRwdXQgbWF0M3g0IG91dDAgPSBbIG1hdDN4NCgzNi44MTI1LCAxLjAs
IDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCkgfCBtYXQz
eDQoMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwgLTQuMCwgOS4wLCAwLjAsIDAu
MCwgNS4wKSB8IG1hdDN4NCgwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01
MS4wLCAyNC4wLCAxLjAsIDAuMCwgLTEyLjApIHwgbWF0M3g0KDMuNSwgMC4wLCAwLjAsIDAuMCwg
MS4wLCAwLjAsIC0yLjAsIC00LjAsIDkuMCwgMS4wLCAxLjAsIDguMCkgfCBtYXQzeDQoLTguMjUs
IDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgLTE5Mi4w
KSB8IG1hdDN4NCgtMjAuMTI1LCAxLjAsIDAuMCwgMC4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDEu
MCwgMS4wLCAwLjAsIDIuMCkgfCBtYXQzeDQoMi4wLCAxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIC02Ni4wKSB8IG1hdDN4NCgwLjAsIDAuMCwgMS4wLCAw
LjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjAsIDAuMCwgMjU1LjApIHwgbWF0
M3g0KDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4w
LCAxMS4wKSB8IG1hdDN4NCgtMC41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjAs
IDEuMCwgMC4wLCAxLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IG1hdDN4NChpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41KTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjM192ZWMzX3ZlYzJf
dG9fbWF0NHgyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMz
IGluMCA9IFsgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4w
KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZl
YzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCWlucHV0
IHZlYzMgaW4xID0gWyB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1
KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSBdOworCQkJ
aW5wdXQgdmVjMiBpbjIgPSBbIHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwg
dmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIo
MC4wLCAwLjUpIF07CisJCQlvdXRwdXQgbWF0NHgyIG91dDAgPSBbIG1hdDR4MigxLjAsIDEuMjUs
IDEuMTI1LCAtMzIuMCwgNjQuMCwgLTUxLjAsIDEuMCwgMS4yNSkgfCBtYXQ0eDIoLTMyLjAsIDY0
LjAsIC01MS4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAtMC41
LCAtMi4yNSkgfCBtYXQ0eDIoMC4wLCAwLjUsIDAuNzUsIC0wLjUsIC0yLjI1LCAtNC44NzUsIC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IG1hdDR4MigtMC41LCAtMi4yNSwgLTQuODc1LCAwLjAs
IDAuNSwgMC43NSwgLTMyLjAsIDY0LjApIHwgbWF0NHgyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
LCAwLjA1MjYzMTU3ODk0NzQsIDEuMCwgMS4yNSwgMS4xMjUsIDAuMCwgMC41KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCwg
aW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpdmVj
M19pdmVjM19pdmVjMl90b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8
IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkg
XTsKKwkJCWlucHV0IGl2ZWMzIGluMSA9IFsgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKDAsIDAs
IDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKC0zMiwgNjQsIC01
MSkgXTsKKwkJCWlucHV0IGl2ZWMyIGluMiA9IFsgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAw
KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgXTsKKwkJCW91dHB1
dCBtYXQ0eDIgb3V0MCA9IFsgbWF0NHgyKDAuMCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwgLTQuMCwg
LTMyLjAsIDY0LjApIHwgbWF0NHgyKDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wKSB8IG1hdDR4MigwLjAsIC0yLjAsIC00LjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wKSB8
IG1hdDR4MigwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDEuMCkgfCBtYXQ0eDIo
LTMyLjAsIDY0LjAsIC01MS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDAuMCwgLTIuMCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4Mihp
bjAsIGluMSwgaW4yKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
dmVjMl9pdmVjMl9mbG9hdF9mbG9hdF9pbnRfYm9vbF90b19tYXQ0eDIKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKC0wLjUsIC0yLjI1
KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigwLjAsIDAuNSkgfCB2
ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNSwg
LTIuMjUpIHwgdmVjMigxLjAsIDEuMjUpIF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMy
KDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigxLCAxKSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwg
aXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgMy41
IHwgLTguMjUgfCAyLjAgfCAzNi44MTI1IHwgLTAuNSB8IDEuMCB8IDEuMCB8IDAuMCB8IC0yMC4x
MjUgfCAwLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluMyA9IFsgMC4wIHwgMzYuODEyNSB8IDMuNSB8
IDEuMCB8IC0wLjUgfCAtOC4yNSB8IDIuMCB8IDAuMCB8IC0yMC4xMjUgfCAxLjAgXTsKKwkJCWlu
cHV0IGludCBpbjQgPSBbIC0xMiB8IC02NiB8IDExIHwgNSB8IDggfCAyNTUgfCAtMTkyIHwgMiB8
IDEgfCAwIF07CisJCQlpbnB1dCBib29sIGluNSA9IFsgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRy
dWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIF07CisJCQlv
dXRwdXQgbWF0NHgyIG91dDAgPSBbIG1hdDR4MigtMC41LCAtMi4yNSwgMC4wLCAtMi4wLCAzLjUs
IDAuMCwgLTEyLjAsIDEuMCkgfCBtYXQ0eDIoMC4wLCAwLjUsIDAuMCwgMC4wLCAtOC4yNSwgMzYu
ODEyNSwgLTY2LjAsIDEuMCkgfCBtYXQ0eDIoMS4wLCAxLjI1LCAtMzIuMCwgNjQuMCwgMi4wLCAz
LjUsIDExLjAsIDAuMCkgfCBtYXQ0eDIoMC4wLCAwLjUsIDEuMCwgMS4wLCAzNi44MTI1LCAxLjAs
IDUuMCwgMS4wKSB8IG1hdDR4MigtMzIuMCwgNjQuMCwgMS4wLCAxLjAsIC0wLjUsIC0wLjUsIDgu
MCwgMC4wKSB8IG1hdDR4MigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wLCAwLjAsIDEuMCwg
LTguMjUsIDI1NS4wLCAxLjApIHwgbWF0NHgyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMzIu
MCwgNjQuMCwgMS4wLCAyLjAsIC0xOTIuMCwgMC4wKSB8IG1hdDR4MigtMzIuMCwgNjQuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAyLjAsIDEuMCkgfCBtYXQ0eDIoLTAuNSwgLTIuMjUsIDAuMCwgMC4w
LCAtMjAuMTI1LCAtMjAuMTI1LCAxLjAsIDAuMCkgfCBtYXQ0eDIoMS4wLCAxLjI1LCAwLjAsIC0y
LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IG1hdDR4MihpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYm9vbF9mbG9hdF9p
bnRfdmVjMl9ib29sX2J2ZWMyX3RvX21hdDR4MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8
IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQg
ZmxvYXQgaW4xID0gWyAzNi44MTI1IHwgLTguMjUgfCAzLjUgfCAxLjAgfCAyLjAgfCAtMC41IHwg
MC4wIHwgMS4wIHwgLTIwLjEyNSB8IDAuMCBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgLTY2IHwg
MSB8IC0xOTIgfCAyIHwgMTEgfCAwIHwgMjU1IHwgOCB8IDUgfCAtMTIgXTsKKwkJCWlucHV0IHZl
YzIgaW4zID0gWyB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IHZlYzIoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDAuMCwgMC41KSB8IHZl
YzIoMS4wLCAxLjI1KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVj
MigtMzIuMCwgNjQuMCkgfCB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoLTAuNSwgLTIuMjUpIF07CisJ
CQlpbnB1dCBib29sIGluNCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNl
IHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlpbnB1dCBidmVjMiBp
bjUgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihm
YWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIF07CisJCQlvdXRw
dXQgbWF0NHgyIG91dDAgPSBbIG1hdDR4MigwLjAsIDM2LjgxMjUsIC02Ni4wLCAtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMS4wLCAwLjAsIDAuMCkgfCBtYXQ0eDIoMC4wLCAtOC4yNSwgMS4wLCAt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0eDIoMS4wLCAzLjUs
IC0xOTIuMCwgLTMyLjAsIDY0LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgyKDEuMCwgMS4wLCAy
LjAsIDAuMCwgMC41LCAwLjAsIDEuMCwgMS4wKSB8IG1hdDR4MigxLjAsIDIuMCwgMTEuMCwgMS4w
LCAxLjI1LCAwLjAsIDEuMCwgMC4wKSB8IG1hdDR4MigwLjAsIC0wLjUsIDAuMCwgMS4wLCAxLjI1
LCAxLjAsIDAuMCwgMS4wKSB8IG1hdDR4MigwLjAsIDAuMCwgMjU1LjAsIC0wLjUsIC0yLjI1LCAx
LjAsIDAuMCwgMC4wKSB8IG1hdDR4MigxLjAsIDEuMCwgOC4wLCAtMzIuMCwgNjQuMCwgMS4wLCAx
LjAsIDEuMCkgfCBtYXQ0eDIoMC4wLCAtMjAuMTI1LCA1LjAsIDAuMCwgMC41LCAwLjAsIDAuMCwg
MC4wKSB8IG1hdDR4MigxLjAsIDAuMCwgLTEyLjAsIC0wLjUsIC0yLjI1LCAxLjAsIDEuMCwgMC4w
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
bWF0NHgyKGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBpbjUpOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2ZWMyX2ludF92ZWM0X3RvX21hdDR4MgorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAgPSBbIGZhbHNl
IHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRy
dWUgfCBmYWxzZSBdOworCQkJaW5wdXQgYnZlYzIgaW4xID0gWyBidmVjMih0cnVlLCBmYWxzZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNl
LCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkg
fCBidmVjMih0cnVlLCB0cnVlKSBdOworCQkJaW5wdXQgaW50IGluMiA9IFsgLTEyIHwgOCB8IDIg
fCAyNTUgfCA1IHwgLTE5MiB8IDAgfCAxMSB8IDEgfCAtNjYgXTsKKwkJCWlucHV0IHZlYzQgaW4z
ID0gWyB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4w
LCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwg
MC4yNSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0wLjUsIC0yLjI1
LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVj
NCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIF07CisJCQlvdXRwdXQgbWF0NHgyIG91dDAgPSBbIG1h
dDR4MigwLjAsIDEuMCwgMC4wLCAtMTIuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCBtYXQ0
eDIoMC4wLCAwLjAsIDAuMCwgOC4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjI1KSB8IG1hdDR4MigxLjAsIDAuMCwgMC4wLCAyLjAsIC0zMi4wLCA2NC4wLCAt
NTEuMCwgMjQuMCkgfCBtYXQ0eDIoMC4wLCAwLjAsIDAuMCwgMjU1LjAsIC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIHwgbWF0NHgyKDEuMCwgMS4wLCAwLjAs
IDUuMCwgLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IG1hdDR4MigwLjAsIDAuMCwgMS4wLCAt
MTkyLjAsIC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCBtYXQ0eDIoMS4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgbWF0NHgyKDEuMCwgMC4wLCAxLjAsIDExLjAs
IC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCBtYXQ0eDIoMS4wLCAxLjAsIDEuMCwgMS4wLCAx
LjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IG1hdDR4MigwLjAsIDEuMCwgMS4wLCAtNjYuMCwgMC4w
LCAwLjUsIDAuNzUsIDAuODI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGlu
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gbWF0NHgyKGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X2J2ZWM0X2l2ZWMyX2Jvb2xfdG9f
bWF0NHgyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBp
bjAgPSBbIDEuMCB8IC04LjI1IHwgLTIwLjEyNSB8IDMuNSB8IC0wLjUgfCAyLjAgfCAzNi44MTI1
IHwgMC4wIF07CisJCQlpbnB1dCBidmVjNCBpbjEgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSBdOworCQkJaW5wdXQgaXZlYzIgaW4yID0gWyBpdmVjMigt
MzIsIDY0KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwgMCkgfCBpdmVj
MigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJ
CWlucHV0IGJvb2wgaW4zID0gWyB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBtYXQ0eDIgb3V0MCA9IFsgbWF0NHgy
KDEuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAtMzIuMCwgNjQuMCwgMS4wKSB8IG1hdDR4MigtOC4y
NSwgMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIC0yLjAsIDEuMCkgfCBtYXQ0eDIoLTIwLjEyNSwg
MS4wLCAxLjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MigzLjUsIDAuMCwgMS4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCkgfCBtYXQ0eDIoLTAuNSwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDR4MigyLjAsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAtMi4wLCAwLjApIHwgbWF0NHgyKDM2LjgxMjUsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCAx
LjAsIDAuMCkgfCBtYXQ0eDIoMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBt
YXQ0eDIoaW4wLCBpbjEsIGluMiwgaW4zKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdmVjNF92ZWM0X3ZlYzRfdG9fbWF0NHgzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoMC4wLCAwLjUs
IDAuNzUsIDAuODI1KSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4
OTQ3NCwgMC4yNSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgXTsKKwkJCWlucHV0
IHZlYzQgaW4xID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0wLjUsIC0y
LjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0
KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJaW5wdXQgdmVjNCBpbjIgPSBbIHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2
ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgy
NSkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUp
IF07CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygtMC41LCAtMi4yNSwgLTQuODc1
LCA5LjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8
IG1hdDR4MygxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAs
IDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgbWF0NHgzKDAuMCwgMC41LCAwLjc1LCAwLjgyNSwg
LTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgbWF0
NHgzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCBtYXQ0eDMoLTMyLjAs
IDY0LjAsIC01MS4wLCAyNC4wLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0LCAwLjI1LCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
bWF0NHgzKGluMCwgaW4xLCBpbjIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBpdmVjNF9pdmVjNF9pdmVjNF90b19tYXQ0eDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMSwgMSwgMSwgMSkgfCBp
dmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAt
NTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlpbnB1dCBpdmVjNCBpbjEgPSBbIGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAw
LCAwKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgxLCAxLCAxLCAxKSBdOworCQkJaW5w
dXQgaXZlYzQgaW4yID0gWyBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIC0yLCAt
NCwgOSkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBtYXQ0eDMgb3V0MCA9IFsgbWF0NHgzKDEuMCwgMS4wLCAx
LjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwg
bWF0NHgzKDAuMCwgMC4wLCAwLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAwLjAs
IC0yLjAsIC00LjAsIDkuMCkgfCBtYXQ0eDMoMC4wLCAtMi4wLCAtNC4wLCA5LjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDR4MygtMzIuMCwgNjQuMCwgLTUx
LjAsIDI0LjAsIDAuMCwgLTIuMCwgLTQuMCwgOS4wLCAwLjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0
NHgzKDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwgMC4w
LCAwLjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBtYXQ0eDMoaW4wLCBpbjEsIGluMik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHZlYzJfaXZlYzJfZmxvYXRfZmxvYXRfZmxvYXRfaW50X2ludF9ib29sX2Jv
b2xfYm9vbF90b19tYXQ0eDMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzIgaW4wID0gWyB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoMC4wLCAwLjUpIHwgdmVj
MigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxKSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDEuMCwg
MS4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEp
IF07CisJCQlpbnB1dCBpdmVjMiBpbjEgPSBbIGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQp
IHwgaXZlYzIoMSwgMSkgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMCwg
MCkgfCBpdmVjMigwLCAwKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwg
MSkgXTsKKwkJCWlucHV0IGZsb2F0IGluMiA9IFsgLTIwLjEyNSB8IDMuNSB8IDIuMCB8IC0wLjUg
fCAtOC4yNSB8IDAuMCB8IDEuMCB8IDAuMCB8IDEuMCB8IDM2LjgxMjUgXTsKKwkJCWlucHV0IGZs
b2F0IGluMyA9IFsgMC4wIHwgLTguMjUgfCAzNi44MTI1IHwgMS4wIHwgMC4wIHwgLTIwLjEyNSB8
IDMuNSB8IDIuMCB8IC0wLjUgfCAxLjAgXTsKKwkJCWlucHV0IGZsb2F0IGluNCA9IFsgMC4wIHwg
MS4wIHwgMy41IHwgLTIwLjEyNSB8IDAuMCB8IDM2LjgxMjUgfCAxLjAgfCAtOC4yNSB8IDIuMCB8
IC0wLjUgXTsKKwkJCWlucHV0IGludCBpbjUgPSBbIDIgfCA4IHwgMSB8IC0xOTIgfCAwIHwgLTEy
IHwgMTEgfCAyNTUgfCA1IHwgLTY2IF07CisJCQlpbnB1dCBpbnQgaW42ID0gWyAyIHwgLTEyIHwg
NSB8IDggfCAxMSB8IDI1NSB8IDAgfCAtNjYgfCAxIHwgLTE5MiBdOworCQkJaW5wdXQgYm9vbCBp
bjcgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IGZhbHNl
IHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYm9vbCBpbjggPSBbIHRydWUgfCBm
YWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCB0cnVlIHwgZmFsc2Ug
fCBmYWxzZSBdOworCQkJaW5wdXQgYm9vbCBpbjkgPSBbIGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIHwg
ZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgdHJ1ZSBdOworCQkJ
b3V0cHV0IG1hdDR4MyBvdXQwID0gWyBtYXQ0eDMoLTAuNSwgLTIuMjUsIDAuMCwgLTIuMCwgLTIw
LjEyNSwgMC4wLCAwLjAsIDIuMCwgMi4wLCAxLjAsIDEuMCwgMC4wKSB8IG1hdDR4MygwLjAsIDAu
NSwgLTMyLjAsIDY0LjAsIDMuNSwgLTguMjUsIDEuMCwgOC4wLCAtMTIuMCwgMS4wLCAwLjAsIDEu
MCkgfCBtYXQ0eDMoMC4wLCAwLjUsIDEuMCwgMS4wLCAyLjAsIDM2LjgxMjUsIDMuNSwgMS4wLCA1
LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKDEuMCwgMS4yNSwgLTMyLjAsIDY0LjAsIC0wLjUs
IDEuMCwgLTIwLjEyNSwgLTE5Mi4wLCA4LjAsIDEuMCwgMS4wLCAwLjApIHwgbWF0NHgzKC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjAsIDAuMCwgLTguMjUsIDAuMCwgMC4wLCAwLjAsIDExLjAs
IDAuMCwgMS4wLCAwLjApIHwgbWF0NHgzKC0wLjUsIC0yLjI1LCAwLjAsIDAuMCwgMC4wLCAtMjAu
MTI1LCAzNi44MTI1LCAtMTIuMCwgMjU1LjAsIDAuMCwgMC4wLCAwLjApIHwgbWF0NHgzKC0zMi4w
LCA2NC4wLCAwLjAsIDAuMCwgMS4wLCAzLjUsIDEuMCwgMTEuMCwgMC4wLCAwLjAsIDEuMCwgMS4w
KSB8IG1hdDR4MygxLjAsIDEuMjUsIDAuMCwgLTIuMCwgMC4wLCAyLjAsIC04LjI1LCAyNTUuMCwg
LTY2LjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0NHgzKC0zMi4wLCA2NC4wLCAwLjAsIDAuMCwgMS4w
LCAtMC41LCAyLjAsIDUuMCwgMS4wLCAwLjAsIDAuMCwgMS4wKSB8IG1hdDR4MygtMC43NSwgLTAu
MDMyMjU4MDY0NTE2MSwgMS4wLCAxLjAsIDM2LjgxMjUsIDEuMCwgLTAuNSwgLTY2LjAsIC0xOTIu
MCwgMS4wLCAwLjAsIDEuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IG1hdDR4MyhpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41LCBpbjYs
IGluNywgaW44LCBpbjkpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBib29sX2Zsb2F0X2ludF92ZWMzX2Jvb2xfYnZlYzNfZmxvYXRfYm9vbF90b19tYXQ0eDMKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wID0gWyB0cnVl
IHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZh
bHNlIHwgZmFsc2UgXTsKKwkJCWlucHV0IGZsb2F0IGluMSA9IFsgLTguMjUgfCAyLjAgfCAxLjAg
fCAtMC41IHwgMC4wIHwgMC4wIHwgMzYuODEyNSB8IC0yMC4xMjUgfCAzLjUgfCAxLjAgXTsKKwkJ
CWlucHV0IGludCBpbjIgPSBbIDI1NSB8IDIgfCAxMSB8IDEgfCA4IHwgLTE5MiB8IDAgfCAtNjYg
fCAtMTIgfCA1IF07CisJCQlpbnB1dCB2ZWMzIGluMyA9IFsgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSB8IHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygw
LjAsIDAuNSwgMC43NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjUsIC0y
LjI1LCAtNC44NzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTMyLjAsIDY0LjAs
IC01MS4wKSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44
NzUpIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOwor
CQkJaW5wdXQgYm9vbCBpbjQgPSBbIHRydWUgfCB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUg
fCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSBdOworCQkJaW5wdXQgYnZlYzMg
aW41ID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBm
YWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlpbnB1dCBmbG9hdCBpbjYgPSBbIDEuMCB8IDAuMCB8IC0wLjUgfCAzNi44MTI1IHwg
MS4wIHwgLTIwLjEyNSB8IDIuMCB8IDAuMCB8IC04LjI1IHwgMy41IF07CisJCQlpbnB1dCBib29s
IGluNyA9IFsgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRy
dWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIF07CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1h
dDR4MygxLjAsIC04LjI1LCAyNTUuMCwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDEuMCkgfCBtYXQ0eDMoMS4wLCAyLjAs
IDIuMCwgMC4wLCAwLjUsIDAuNzUsIDEuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAxLjApIHwgbWF0
NHgzKDAuMCwgMS4wLCAxMS4wLCAwLjAsIDAuNSwgMC43NSwgMC4wLCAwLjAsIDAuMCwgMC4wLCAt
MC41LCAwLjApIHwgbWF0NHgzKDAuMCwgLTAuNSwgMS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDAu
MCwgMC4wLCAxLjAsIDAuMCwgMzYuODEyNSwgMC4wKSB8IG1hdDR4MygxLjAsIDAuMCwgOC4wLCAt
MC41LCAtMi4yNSwgLTQuODc1LCAxLjAsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wKSB8IG1hdDR4
MygxLjAsIDAuMCwgLTE5Mi4wLCAxLjAsIDEuMjUsIDEuMTI1LCAwLjAsIDEuMCwgMC4wLCAwLjAs
IC0yMC4xMjUsIDAuMCkgfCBtYXQ0eDMoMS4wLCAzNi44MTI1LCAwLjAsIC0zMi4wLCA2NC4wLCAt
NTEuMCwgMC4wLCAxLjAsIDEuMCwgMS4wLCAyLjAsIDEuMCkgfCBtYXQ0eDMoMC4wLCAtMjAuMTI1
LCAtNjYuMCwgMS4wLCAxLjI1LCAxLjEyNSwgMC4wLCAxLjAsIDEuMCwgMS4wLCAwLjAsIDEuMCkg
fCBtYXQ0eDMoMC4wLCAzLjUsIC0xMi4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCAxLjAsIDAuMCwg
MC4wLCAwLjAsIC04LjI1LCAwLjApIHwgbWF0NHgzKDAuMCwgMS4wLCA1LjAsIC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMy41LCAx
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBtYXQ0eDMoaW4wLCBpbjEsIGluMiwgaW4zLCBpbjQsIGluNSwgaW42LCBpbjcpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2ZWM0X2ludF92ZWM0X2Jv
b2xfZmxvYXRfdG9fbWF0NHgzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBib29sIGluMCA9IFsgdHJ1ZSB8IHRydWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFs
c2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIF07CisJCQlpbnB1dCBidmVjNCBpbjEg
PSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
NCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpIF07CisJCQlpbnB1dCBpbnQgaW4yID0gWyA1IHwgMTEgfCAwIHwgLTE5MiB8IC02NiB8IDI1
NSB8IDEgfCAtMTIgfCA4IHwgMiBdOworCQkJaW5wdXQgdmVjNCBpbjMgPSBbIHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KC0zMi4wLCA2
NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgt
MC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8
IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2
NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUs
IDkuMCkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgXTsKKwkJCWlucHV0IGJvb2wgaW40ID0gWyBmYWxzZSB8IHRydWUgfCB0cnVlIHwg
ZmFsc2UgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgXTsKKwkJ
CWlucHV0IGZsb2F0IGluNSA9IFsgLTIwLjEyNSB8IDAuMCB8IDEuMCB8IC0wLjUgfCAzLjUgfCAt
OC4yNSB8IDAuMCB8IDEuMCB8IDIuMCB8IDM2LjgxMjUgXTsKKwkJCW91dHB1dCBtYXQ0eDMgb3V0
MCA9IFsgbWF0NHgzKDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCA1LjAsIC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDAuMCwgLTIwLjEyNSkgfCBtYXQ0eDMo
MS4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDExLjAsIC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCwg
MS4wLCAwLjApIHwgbWF0NHgzKDEuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4y
NSwgMS4xMjUsIDEuNzUsIDEuMCwgMS4wKSB8IG1hdDR4MygwLjAsIDEuMCwgMS4wLCAxLjAsIDEu
MCwgLTE5Mi4wLCAtMC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIDAuMCwgLTAuNSkgfCBtYXQ0eDMo
MS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIC02Ni4wLCAxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAx
LjAsIDMuNSkgfCBtYXQ0eDMoMC4wLCAxLjAsIDAuMCwgMC4wLCAxLjAsIDI1NS4wLCAtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjAsIDAuMCwgLTguMjUpIHwgbWF0NHgzKDAuMCwgMS4wLCAwLjAsIDAu
MCwgMS4wLCAxLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAu
MjUsIDEuMCwgMC4wKSB8IG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgLTEyLjAsIC0w
LjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgMS4wLCAxLjApIHwgbWF0NHgzKDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCA4LjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4wLCAyLjApIHwgbWF0NHgz
KDAuMCwgMC4wLCAwLjAsIDAuMCwgMS4wLCAyLjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4w
LCAzNi44MTI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gbWF0NHgzKGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBpbjUpOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9idmVjNF9pdmVjNF9ib29sX2Jv
b2xfaW50X3RvX21hdDR4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgZmxvYXQgaW4wID0gWyAzNi44MTI1IHwgLTAuNSB8IDMuNSB8IDIuMCB8IDEuMCB8IC0yMC4x
MjUgfCAwLjAgfCAwLjAgfCAtOC4yNSB8IDEuMCBdOworCQkJaW5wdXQgYnZlYzQgaW4xID0gWyBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSBd
OworCQkJaW5wdXQgaXZlYzQgaW4yID0gWyBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0LCAtNTEs
IDI0KSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KDAs
IC0yLCAtNCwgOSkgXTsKKwkJCWlucHV0IGJvb2wgaW4zID0gWyBmYWxzZSB8IHRydWUgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgXTsK
KwkJCWlucHV0IGJvb2wgaW40ID0gWyBmYWxzZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxz
ZSB8IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IHRydWUgXTsKKwkJCWlucHV0IGludCBp
bjUgPSBbIDIgfCAxIHwgOCB8IDExIHwgMjU1IHwgNSB8IDAgfCAtNjYgfCAtMTkyIHwgLTEyIF07
CisJCQlvdXRwdXQgbWF0NHgzIG91dDAgPSBbIG1hdDR4MygzNi44MTI1LCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDIuMCkgfCBtYXQ0eDMoLTAuNSwg
MC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxLjApIHwg
bWF0NHgzKDMuNSwgMS4wLCAwLjAsIDAuMCwgMS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAs
IDAuMCwgMC4wLCA4LjApIHwgbWF0NHgzKDIuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAxMS4wKSB8IG1hdDR4MygxLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMjU1LjApIHwgbWF0NHgzKC0yMC4x
MjUsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgNS4w
KSB8IG1hdDR4MygwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAy
NC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDR4MygwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4w
LCAxLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgLTY2LjApIHwgbWF0NHgzKC04LjI1LCAwLjAsIDEu
MCwgMC4wLCAwLjAsIDAuMCwgLTIuMCwgLTQuMCwgOS4wLCAxLjAsIDEuMCwgLTE5Mi4wKSB8IG1h
dDR4MygxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4wLCAtMi4wLCAtNC4wLCA5LjAsIDEuMCwg
MS4wLCAtMTIuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IG1hdDR4MyhpbjAsIGluMSwgaW4yLCBpbjMsIGluNCwgaW41KTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdmVjNF92ZWM0X3ZlYzRfdmVjNF90b19t
YXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9
IFsgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8
IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3
NSwgOS4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KDAuMCwgMC41LCAw
Ljc1LCAwLjgyNSkgXTsKKwkJCWlucHV0IHZlYzQgaW4xID0gWyB2ZWM0KC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUx
LjAsIDI0LjApIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgxLjAsIDEu
MjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSBdOworCQkJaW5w
dXQgdmVjNCBpbjIgPSBbIHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCB2ZWM0KC0wLjUs
IC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVj
NCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIF07CisJCQlpbnB1dCB2ZWM0IGluMyA9IFsgdmVjNCgt
MzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2
ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDku
MCkgXTsKKwkJCW91dHB1dCBtYXQ0IG91dDAgPSBbIG1hdDQoLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUy
NjMxNTc4OTQ3NCwgMC4yNSwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wLCAtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgbWF0NCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAsIC0zMi4wLCA2NC4w
LCAtNTEuMCwgMjQuMCwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwg
MC4yNSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgfCBt
YXQ0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wLCAt
MC41LCAtMi4yNSwgLTQuODc1LCA5LjAsIDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgbWF0NCgx
LjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAxLjAsIDEuMjUsIDEuMTI1LCAxLjc1LCAxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1LCAwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgbWF0NCgwLjAsIDAuNSwgMC43
NSwgMC44MjUsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwgMC4wLCAwLjUsIDAuNzUsIDAuODI1LCAt
MC41LCAtMi4yNSwgLTQuODc1LCA5LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCwgaW4xLCBpbjIsIGluMyk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGl2ZWM0X2l2ZWM0X2l2ZWM0X2l2ZWM0
X3RvX21hdDQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0
IGluMCA9IFsgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwg
aXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisJCQlpbnB1dCBpdmVjNCBpbjEgPSBbIGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwg
LTIsIC00LCA5KSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJaW5wdXQgaXZlYzQgaW4yID0gWyBpdmVjNCgtMzIs
IDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCWlucHV0IGl2ZWM0
IGluMyA9IFsgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQo
MCwgMCwgMCwgMCkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQp
IF07CisJCQlvdXRwdXQgbWF0NCBvdXQwID0gWyBtYXQ0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQu
MCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAsIDEuMCwgMS4w
LCAxLjAsIDEuMCkgfCBtYXQ0KDAuMCwgLTIuMCwgLTQuMCwgOS4wLCAwLjAsIC0yLjAsIC00LjAs
IDkuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0yLjAsIC00LjAsIDkuMCkgfCBtYXQ0KDEu
MCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIC0yLjAsIC00LjAsIDku
MCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLCAtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
KSB8IG1hdDQoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjAsIGluMSwgaW4yLCBp
bjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBidmVjNF9idmVj
NF9idmVjNF9idmVjNF90b19tYXQ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRydWUs
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgXTsKKwkJCWlucHV0IGJ2ZWM0IGluMSA9IFsgYnZlYzQoZmFs
c2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJaW5w
dXQgYnZlYzQgaW4yID0gWyBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIF07CisJCQlpbnB1dCBidmVjNCBpbjMgPSBbIGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgXTsKKwkJCW91dHB1dCBt
YXQ0IG91dDAgPSBbIG1hdDQoMC4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDEuMCwgMC4wLCAwLjAs
IDAuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDQoMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMS4wKSB8IG1hdDQoMC4wLCAxLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAx
LjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSB8IG1hdDQoMS4wLCAx
LjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMC4w
LCAxLjAsIDAuMCwgMC4wKSB8IG1hdDQoMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDEuMCwgMC4wLCAwLjAsIDEuMCwgMS4wLCAwLjAsIDAuMCwgMS4wKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gbWF0NChpbjAsIGlu
MSwgaW4yLCBpbjMpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBm
bG9hdF9pdmVjM19idmVjM192ZWM0X2l2ZWMyX2Zsb2F0X3ZlYzJfdG9fbWF0NAorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wID0gWyAyLjAgfCAxLjAg
fCAzLjUgfCAwLjAgfCAtMjAuMTI1IHwgMzYuODEyNSB8IC0wLjUgfCAtOC4yNSBdOworCQkJaW5w
dXQgaXZlYzMgaW4xID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygw
LCAtMiwgLTQpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygwLCAtMiwgLTQpIF07CisJCQlpbnB1
dCBidmVjMyBpbjIgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKSBdOworCQkJaW5wdXQgdmVjNCBpbjMgPSBbIHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KDAuMCwgMC41
LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDEu
MCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0LCAwLjI1KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZl
YzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSBdOworCQkJaW5wdXQgaXZlYzIgaW40ID0gWyBpdmVj
MigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoMCwgMCkgfCBpdmVj
MigxLCAxKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgfCBpdmVjMigwLCAtMikgXTsK
KwkJCWlucHV0IGZsb2F0IGluNSA9IFsgMi4wIHwgMy41IHwgMzYuODEyNSB8IC04LjI1IHwgMC4w
IHwgLTIwLjEyNSB8IDEuMCB8IC0wLjUgXTsKKwkJCWlucHV0IHZlYzIgaW42ID0gWyB2ZWMyKDAu
MCwgMC41KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKDAu
MCwgMC41KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIHwgdmVjMigtMC41LCAtMi4y
NSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKDEuMCwgMS4yNSkgXTsKKwkJCW91dHB1dCBtYXQ0
IG91dDAgPSBbIG1hdDQoMi4wLCAwLjAsIDAuMCwgMC4wLCAxLjAsIDAuMCwgMC4wLCAtMC41LCAt
Mi4yNSwgLTQuODc1LCA5LjAsIDAuMCwgMC4wLCAyLjAsIDAuMCwgMC41KSB8IG1hdDQoMS4wLCAt
MzIuMCwgNjQuMCwgLTUxLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUs
IDEuMCwgMS4wLCAzLjUsIC0wLjUsIC0yLjI1KSB8IG1hdDQoMy41LCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuNSwgMC43NSwgMC44MjUsIDAuMCwgLTIuMCwgMzYuODEyNSwg
LTMyLjAsIDY0LjApIHwgbWF0NCgwLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAwLjAsIC0w
LjUsIC0yLjI1LCAtNC44NzUsIDkuMCwgMC4wLCAwLjAsIC04LjI1LCAwLjAsIDAuNSkgfCBtYXQ0
KC0yMC4xMjUsIDEuMCwgMS4wLCAxLjAsIDAuMCwgMC4wLCAwLjAsIDEuMCwgMS4yNSwgMS4xMjUs
IDEuNzUsIDEuMCwgMS4wLCAwLjAsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSB8IG1hdDQoMzYu
ODEyNSwgMC4wLCAtMi4wLCAtNC4wLCAwLjAsIDEuMCwgMC4wLCAtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAtMzIuMCwgNjQuMCwgLTIwLjEyNSwgLTAuNSwg
LTIuMjUpIHwgbWF0NCgtMC41LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjAsIDAuMCwgMC4wLCAxLjAsIDEuMCwgMS4yNSkgfCBtYXQ0KC04LjI1
LCAwLjAsIC0yLjAsIC00LjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMC41LCAwLjc1LCAwLjgyNSwg
MC4wLCAtMi4wLCAtMC41LCAxLjAsIDEuMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBtYXQ0KGluMCwgaW4xLCBpbjIsIGluMywgaW40LCBp
bjUsIGluNik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworZW5kICMgbWF0
cml4X2NvbWJpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2RlY2xhcmF0aW9ucy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2ds
ZXMzL3NoYWRlcnMvZGVjbGFyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI1ZDU5MzNlMTAyZWRl
YjcxODQyZDk1ZTQ0NmY0YTQ1ZGQxNzc5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJz
L2RlY2xhcmF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hh
cmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordGVzdE5hbWUgPSAnZGVjbGFyYXRpb25zJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDog
IiArIHRlc3ROYW1lICsgIi4iKTsKK1dlYkdMVGVzdFV0aWxzLnNldERlZmF1bHQzRENvbnRleHRW
ZXJzaW9uKDIpOworCit2YXIgZ2V0RmlsdGVyID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHF1ZXJ5
VmFycyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KCcmJyk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5VmFycy5sZW5ndGg7IGkrKykgeworICAgICAg
ICB2YXIgdmFsdWUgPSBxdWVyeVZhcnNbaV0uc3BsaXQoJz0nKTsKKyAgICAgICAgaWYgKGRlY29k
ZVVSSUNvbXBvbmVudCh2YWx1ZVswXSkgPT09ICdmaWx0ZXInKQorICAgICAgICAgICAgcmV0dXJu
IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVsxXSk7CisgICAgfQorfQorCittb2R1bGVzLnNoYXJl
ZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvZGVjbGFyYXRpb25z
LnRlc3QgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2RhdGEvZ2xlczMvc2hhZGVycy9kZWNsYXJhdGlvbnMudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmY5OGQ5
ODMyZWY1MGRhZjdjN2JiYTliNWY1MDIxMzAzYjc5NTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMz
L3NoYWRlcnMvZGVjbGFyYXRpb25zLnRlc3QKQEAgLTAsMCArMSw1OTEgQEAKK2dyb3VwIGludmFs
aWRfZGVjbGFyYXRpb25zICJJbnZhbGlkIGRlY2xhcmF0aW9ucyIKKwljYXNlIGluX2luX3ZlcnRl
eF9tYWluCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmVydGV4
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJaW4gbWVkaXVtcCBmbG9hdCB2YWw7CisJCQkJZ2xfUG9zaXRp
b24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBvdXRfaW5fdmVydGV4X21haW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2ZXJ0ZXggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJJHtWRVJURVhfREVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCB2YWw7
CisJCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCWluIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJJHtGUkFH
TUVOVF9ERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7RlJBR19DT0xP
Un0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGluX2luX2ZyYWdtZW50
X21haW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2ZXJ0ZXgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJb3V0IG1lZGl1bXAgZmxvYXQgdmFsOworCQkJJHtW
RVJURVhfREVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlnbF9Qb3NpdGlv
biA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwkJZnJhZ21lbnQgIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWluIG1lZGl1bXAgZmxvYXQgdmFsOworCQkJCSR7RlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG91dF9pbl9mcmFnbWVudF9tYWluCisJCXZlcnNp
b24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmVydGV4ICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCB2YWw7CisJCQkJJHtGUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9pbl92
ZXJ0ZXhfbWFpbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZl
cnRleCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCXVuaWZvcm0gbWVkaXVtcCBmbG9hdCB2YWw7CisJCQkJ
Z2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSB1bmlmb3JtX2luX2ZyYWdtZW50X21haW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2ZXJ0ZXggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
JHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlnbF9Qb3Np
dGlvbiA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwkJZnJhZ21lbnQgIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCXVuaWZvcm0gbWVkaXVtcCBmbG9hdCB2YWw7CisJCQkJJHtGUkFHX0NPTE9SfSA9IHZl
YzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9ibG9ja19pbl9tYWlu
CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJdW5pZm9ybSBCbG9jayB7IG1lZGl1bXAgZmxvYXQgdmFsOyB9OworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhcmlhbnRfYXR0cmlidXRlCisJCXZlcnNp
b24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmVydGV4ICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCWludmFyaWFudCBpbiBtZWRpdW1wIGZsb2F0IHZhbDsKKwkJCSR7VkVSVEVY
X0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJZ2xfUG9zaXRpb24gPSB2
ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdtZW50ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZh
cmlhbnRfdW5pZm9ybQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZlcnRleCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlpbnZhcmlhbnQgdW5pZm9ybSBtZWRp
dW1wIGZsb2F0IHZhbDsKKwkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJCWZyYWdt
ZW50ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhcmlhbnRfdW5pZm9ybV9ibG9ja18xCisJCXZlcnNp
b24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlpbnZhcmlhbnQgdW5pZm9ybSBCbG9jayB7IG1lZGl1bXAgZmxvYXQgdmFsOyB9
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhcmlhbnRfdW5pZm9ybV9ibG9ja18yCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQl1bmlmb3JtIEJsb2NrIHsgaW52YXJpYW50IG1lZGl1bXAgZmxvYXQg
dmFsOyB9OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3JtX2Jsb2NrX2xheW91dF9x
dWFsaWZpZXIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCWxheW91dChmb29iYXIpIHVuaWZvcm0gQmxvY2sK
KwkJCXsKKwkJCQltZWRpdW1wIGZsb2F0IHZhbDsKKwkJCX07CisJCQkke0RFQ0xBUkFUSU9OU30K
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHVuaWZvcm1fYmxvY2tfbWVtYmVyX2xheW91dF9xdWFsaWZpZXIKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdW5pZm9ybSBCbG9jaworCQkJeworCQkJCWxheW91
dChmb29iYXIpIHVuaWZvcm0gbWVkaXVtcCBmbG9hdCB2YWw7CisJCQl9OworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9y
bV9ibG9ja19uZXN0ZWRfc3RydWN0X2RlZmluaXRpb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdW5pZm9ybSBCbG9jaworCQkJeworCQkJCXN0cnVjdCBTCisJCQkJewor
CQkJCQltZWRpdW1wIGZsb2F0IHY7CisJCQkJCXN0cnVjdCBUCisJCQkJCXsKKwkJCQkJCWhpZ2hw
IGludCBpOworCQkJCQl9IHQ7CisJCQkJfSBzOworCQkJfTsKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5lc3RlZF91bmlmb3Jt
X2Jsb2NrCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxv
Y2sKKwkJCXsKKwkJCQl1bmlmb3JtIEJsb2NrMgorCQkJCXsKKwkJCQkJbWVkaXVtcCBmbG9hdCB2
OworCQkJCX0gYmxvY2syOworCQkJfSBibG9jazsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxvY2tfc2FtcGxl
cl8yZAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJJHtERUNMQVJBVElPTlN9CisJCQl1bmlmb3JtIEJsb2Nr
CisJCQl7CisJCQkJdW5pZm9ybSBzYW1wbGVyMkQgczsKKwkJCX07CisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3JtX2Js
b2NrX3NhbXBsZXJfY3ViZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJJHtERUNMQVJBVElPTlN9CisJCQl1
bmlmb3JtIEJsb2NrCisJCQl7CisJCQkJdW5pZm9ybSBzYW1wbGVyQ3ViZSBzOworCQkJfTsKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVuaWZvcm1fYmxvY2tfbWlzc2luZ19tZW1iZXJfc2VtaWNvbG9uCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxvY2sKKwkJCXsKKwkJCQltZWRpdW1w
IGZsb2F0IHZhcgorCQkJfTsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxvY2tfbWlzc2luZ19lbmRfc2VtaWNv
bG9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxvY2sK
KwkJCXsKKwkJCQltZWRpdW1wIGZsb2F0IHZhcjsKKwkJCX0KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxvY2tf
ZHVwbGljYXRlX21lbWJlcl9uYW1lXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdW5pZm9ybSBCbG9jaworCQkJeworCQkJCW1lZGl1bXAgZmxvYXQgdmFyOworCQkJCW1l
ZGl1bXAgZmxvYXQgdmFyOworCQkJfTsKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxvY2tfZHVwbGljYXRlX21l
bWJlcl9uYW1lXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdW5pZm9y
bSBCbG9jaworCQkJeworCQkJCW1lZGl1bXAgZmxvYXQgdmFyOworCQkJfTsKKwkJCXVuaWZvcm0g
QmxvY2syCisJCQl7CisJCQkJbWVkaXVtcCBmbG9hdCB2YXI7CisJCQl9OworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9y
bV9ibG9ja19kdXBsaWNhdGVfbWVtYmVyX25hbWVfMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdmFyOworCQkJdW5pZm9ybSBCbG9j
aworCQkJeworCQkJCW1lZGl1bXAgZmxvYXQgdmFyOworCQkJfTsKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxv
Y2tfZHVwbGljYXRlX2Jsb2NrX25hbWUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdW5pZm9ybSBCbG9jaworCQkJeworCQkJCW1lZGl1bXAgZmxvYXQgdmFyOworCQkJfTsK
KwkJCXVuaWZvcm0gQmxvY2sKKwkJCXsKKwkJCQltZWRpdW1wIGZsb2F0IHZhcjI7CisJCQl9Owor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdW5pZm9ybV9ibG9ja19kdXBsaWNhdGVfaW5zdGFuY2VfbmFtZV8xCisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxvY2sKKwkJCXsKKwkJCQltZWRp
dW1wIGZsb2F0IHZhcjsKKwkJCX0gYmxvY2s7CisJCQl1bmlmb3JtIEJsb2NrMgorCQkJeworCQkJ
CW1lZGl1bXAgZmxvYXQgdmFyMjsKKwkJCX0gYmxvY2s7CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3JtX2Jsb2NrX2R1
cGxpY2F0ZV9pbnN0YW5jZV9uYW1lXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdW5pZm9ybSBtZWRpdW1wIGZsb2F0IGJsb2NrOworCQkJdW5pZm9ybSBCbG9jaworCQkJ
eworCQkJCW1lZGl1bXAgZmxvYXQgdmFyOworCQkJfSBibG9jazsKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuaWZvcm1fYmxv
Y2tfZHVwbGljYXRlX2luc3RhbmNlX25hbWVfMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl1bmlmb3JtIEJsb2NrCisJCQl7CisJCQkJbWVkaXVtcCBmbG9hdCBibG9jazsK
KwkJCX07CisJCQl1bmlmb3JtIEJsb2NrMgorCQkJeworCQkJCW1lZGl1bXAgZmxvYXQgdmFyMjsK
KwkJCX0gYmxvY2s7CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3JtX2Jsb2NrX2FycmF5X3dpdGhvdXRfaW5zdGFuY2Vf
bmFtZV8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxv
Y2tbMl0KKwkJCXsKKwkJCQltZWRpdW1wIGZsb2F0IHZhcjsKKwkJCX07CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3Jt
X2Jsb2NrX2FycmF5X3dpdGhvdXRfaW5zdGFuY2VfbmFtZV8yCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxvY2sKKwkJCXsKKwkJCQltZWRpdW1wIGZsb2F0
IHZhcjsKKwkJCX0gWzJdOworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9ibG9ja19pbgorCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl1bmlmb3JtIEJsb2NrCisJCQl7CisJCQkJaW4gbWVkaXVt
cCBmbG9hdCB2YXI7CisJCQl9OworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9ibG9ja19vdXQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdW5pZm9ybSBCbG9jaworCQkJeworCQkJCW91dCBt
ZWRpdW1wIGZsb2F0IHZhcjsKKwkJCX07CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlmb3JtX2Jsb2NrX2NvbnN0CisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXVuaWZvcm0gQmxvY2sKKwkJCXsKKwkJ
CQljb25zdCBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCX07CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBpbnZhbGlkX2RlY2xhcmF0
aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvZnJhZ2RhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJz
L2ZyYWdkYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U1MzE0MTNhZDRiMWEwNGIxZDA3ZGExYTg5N2Vj
MDU1MjgzZTA1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2ZyYWdkYXRhLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFy
eScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit0ZXN0TmFtZSA9ICdmcmFn
ZGF0YSc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitX
ZWJHTFRlc3RVdGlscy5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZp
bHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24u
c2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJz
W2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0p
ID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFs
dWVbMV0pOworICAgIH0KK30KKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4o
dGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZGF0YS9nbGVzMy9zaGFkZXJzL2ZyYWdkYXRhLnRlc3QgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9mcmFnZGF0
YS50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY3YmE0ZjI5NTcwODUwYWY2N2M1NGM0MzVlNmZjMTkwMWM3NjYw
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9mcmFnZGF0YS50ZXN0CkBAIC0wLDAg
KzEsNzYgQEAKKworY2FzZSBpbnZhbGlkX2Fzc2lnbl90b18xCisJdmVyc2lvbiAxMDAgZXMKKwll
eHBlY3QgY29tcGlsZV9mYWlsCisJdmVydGV4ICIiCisJCXZvaWQgbWFpbiAodm9pZCkKKwkJewor
CQkJZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorCWZyYWdtZW50ICIiCisJCXZv
aWQgbWFpbiAodm9pZCkKKwkJeworCQkJZ2xfRnJhZ0RhdGFbMV0gPSB2ZWM0KDEuMCk7CisJCX0K
KwkiIgorZW5kCisKK2Nhc2Ugd3JpdGVfZnJhZ2NvbG9yX2FuZF9mcmFnZGF0YV9zaW1wbGUKKwl2
ZXJzaW9uIDEwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2ZXJ0ZXggIiIKKwkJdm9pZCBt
YWluICh2b2lkKQorCQl7CisJCQlnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wKTsKKwkJfQorCSIiCisJ
ZnJhZ21lbnQgIiIKKwkJdm9pZCBtYWluICh2b2lkKQorCQl7CisJCQlnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCk7CisJCQlnbF9GcmFnRGF0YVswXSA9IHZlYzQoMS4wKTsKKwkJfQorCSIiCitlbmQK
KworY2FzZSB3cml0ZV9mcmFnY29sb3JfYW5kX2ZyYWdkYXRhX3N0YXRpY19pZgorCXZlcnNpb24g
MTAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRleCAiIgorCQl2b2lkIG1haW4gKHZv
aWQpCisJCXsKKwkJCWdsX1Bvc2l0aW9uID0gdmVjNCgxLjApOworCQl9CisJIiIKKwlmcmFnbWVu
dCAiIgorCQl2b2lkIG1haW4gKHZvaWQpCisJCXsKKwkJCWlmIChmYWxzZSkKKwkJCQlnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCk7CisJCQllbHNlCisJCQkJZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEu
MCk7CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ugd3JpdGVfZnJhZ2NvbG9yX2FuZF9mcmFnZGF0YV91
bnVzZWRfZnVuYworCXZlcnNpb24gMTAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZlcnRl
eCAiIgorCQl2b2lkIG1haW4gKHZvaWQpCisJCXsKKwkJCWdsX1Bvc2l0aW9uID0gdmVjNCgxLjAp
OworCQl9CisJIiIKKwlmcmFnbWVudCAiIgorCQl2b2lkIHVudXNlZCAodm9pZCkKKwkJeworCQkJ
Z2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEuMCk7CisJCX0KKwkJdm9pZCBtYWluICh2b2lkKQorCQl7
CisJCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CisJCX0KKwkiIgorZW5kCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEv
Z2xlczMvc2hhZGVycy9mdW5jdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2Z1bmN0aW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY1ZmY4OGZiYmU1MmEyZjcwNDc4YmU0MTVlOWFmOGNkOGU3NmNmNzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9mdW5jdGlvbnMuaHRtbApAQCAtMCwwICsxLDM2
IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2Z1bmN0aW9ucyc7CitkZXNj
cmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGls
cy5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0
cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9
Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVy
JykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAg
IH0KK30KKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdl
dEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL2Z1bmN0aW9ucy50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvZnVuY3Rpb25zLnRlc3QKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY3YTAzNTk5ZWVjZGRjZGIwNDliMTVmZmJiYzFiNTRiZjViZDQ4MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2Z1bmN0aW9ucy50ZXN0CkBAIC0wLDAgKzEsNDM0NSBA
QAorIyBUZXN0cyB0b2RvOgorIyAtIGlub3V0IHdpdGggdmFyeWluZ3MsIGF0dHJpYnV0ZXMsIHVu
aWZvcm1zIChhbmQgYXJyYXlzIG9mICdlbSkKKyMgLSBpbm91dCB3aXRoIGFycmF5cywgYXJyYXkg
ZWxlbWVudHMKKyMgLSBpbm91dCB3aXRoIGFycmF5IGVsZW1lbnRzCisjIC0gaW5vdXQgYnktdmFs
dWUgc2VtYW50aWNzIChhcnJheXMgJiBlbGVtZW50cyAmIHN0cnVjdHMpCisKKyMgRG9uZToKKyMg
LSBjb250cm9sIGZsb3c6IHJldHVybiwgcmV0dXJuIGluIGxvb3AsIGV0Yy4KKworZ3JvdXAgZGF0
YXR5cGVzICJGdW5jdGlvbiBQYXJhbWV0ZXIgRGF0YSBUeXBlcyIKKworCWNhc2UgZmxvYXRfZmxv
YXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJ
PSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAw
LjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQlmbG9hdCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCXJldHVybiAtYTsKKwkJCX0KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF92ZWMyCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMAkJPSBbIHZlYzIoMC4wLCAxLjApIHwg
dmVjMigyLjAsIDIuNSkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4wIHwgLTQuNSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jICh2ZWMyIGEp
CisJCQl7CisJCQkJcmV0dXJuIC0oYS54ICsgYS55KTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBmbG9hdF92ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCB2ZWMzIGluMAkJPSBbIHZlYzMoMC4wLCAxLjAsIC0yLjApIHwgdmVjMygyLjAs
IDIuNSwgLTQuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAxLjAgfCAtMC41IF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKHZlYzMgYSkKKwkJ
CXsKKwkJCQlyZXR1cm4gLShhLnggKyBhLnkgKyBhLnopOworCQkJfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGZsb2F0X3ZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgLTIuMCwgMC41KSB8IHZl
YzQoMi4wLCAyLjUsIDQuMCwgLTcuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUg
fCAtMS41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMg
KHZlYzQgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhLnggKyBhLnkgKyBhLnogKyBhLncpOworCQkJ
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGZsb2F0X21hdDIKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDIgaW4wCQk9IFsgbWF0MigwLjAsIDEu
MCwgLTIuMCwgMC41KSB8IG1hdDIoMi4wLCAyLjUsIDQuMCwgLTcuMCkgXTsKKwkJCW91dHB1dCBm
bG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWZsb2F0IGZ1bmMgKG1hdDIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLShhWzBdWzBdICsg
YVswXVsxXSArIGFbMV1bMF0gKyBhWzFdWzFdKTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmbG9hdF9tYXQzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBtYXQzIGluMAkJPSBbIG1hdDMoMC4wLCAxLjAsIC0yLjAsIDAuNSwgMS4wLCAtMS4w
LCAyLjAsIDQuMCwgLTEuMCkgfCBtYXQzKDIuMCwgMi41LCA0LjAsIC03LjAsIDIuNSwgMy4wLCAw
LjUsIC0zLjUsIDEuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtNC41IHwgLTUuMCBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChtYXQzIGEp
CisJCQl7CisJCQkJcmV0dXJuIC0oYVswXVswXSArIGFbMF1bMV0gKyBhWzBdWzJdICsgYVsxXVsw
XSArIGFbMV1bMV0gKyBhWzFdWzJdICsgYVsyXVswXSArIGFbMl1bMV0gKyBhWzJdWzJdKTsKKwkJ
CX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF9tYXQ0CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQ0IGluMAkJPSBbIG1hdDQoMC4wLCAx
LjAsIC0yLjAsIDAuNSwgMS4wLCAtMS4wLCAyLjAsIDQuMCwgLTEuMCwgMS4wLCAxLjAsIDEuMCwg
MS4wLCAxLjAsIC0yLjAsIC0yLjApIHwgbWF0NCgyLjAsIDIuNSwgNC4wLCAtNy4wLCAyLjUsIDMu
MCwgMC41LCAtMy41LCAxLjAsIDAuMCwgMi4wLCAtMS4wLCAxLjAsIDAuMCwgLTEuMCwgMy4wKSBd
OworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC01LjUgfCAtOS4wIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKG1hdDQgYSkKKwkJCXsKKwkJCQlyZXR1
cm4gLShhWzBdWzBdICsgYVswXVsxXSArIGFbMF1bMl0gKyBhWzBdWzNdICsgYVsxXVswXSArIGFb
MV1bMV0gKyBhWzFdWzJdICsgYVsxXVszXSArIGFbMl1bMF0gKyBhWzJdWzFdICsgYVsyXVsyXSAr
IGFbMl1bM10gKyBhWzNdWzBdICsgYVszXVsxXSArIGFbM11bMl0gKyBhWzNdWzNdKTsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaW50CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgLTEgfCAwIHwgMSB8IDQgXTsK
KwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDEgfCAwIHwgLTEgfCAtNCBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVu
YyAoaW50IGEpCisJCQl7CisJCQkJcmV0dXJuIC1hOworCQkJfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW50X2l2ZWMyCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAJCT0gWyBpdmVjMigtMSwgMCkgfCBpdmVj
MigxLCA0KSBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMSB8IC01IF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBm
dW5jIChpdmVjMiBhKQorCQkJeworCQkJCXJldHVybiAtKGEueCArIGEueSk7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnRfaXZlYzMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMAkJPSBbIGl2ZWMz
KC0xLCAwLCAyKSB8IGl2ZWMzKDEsIDQsIC04KSBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsg
LTEgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCWludCBmdW5jIChpdmVjMyBhKQorCQkJeworCQkJCXJldHVybiAtKGEu
eCArIGEueSArIGEueik7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnRfaXZlYzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGl2ZWM0IGluMAkJPSBbIGl2ZWM0KC0xLCAwLCAyLCAyKSB8IGl2ZWM0KDEsIDQsIC04
LCAyKSBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgLTMgfCAxIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5j
IChpdmVjNCBhKQorCQkJeworCQkJCXJldHVybiAtKGEueCArIGEueSArIGEueiArIGEudyk7CisJ
CQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVu
YyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3Vp
bnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHVpbnQgaW4wCQk9
IFsgMSB8IDAgfCAyIHwgNCBdOworCQkJb3V0cHV0IHVpbnQgb3V0MAk9IFsgMSB8IDAgfCA0IHwg
MTYgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdWludCBmdW5jICh1aW50IGEpCisJCQl7CisJCQkJcmV0dXJuIGEqYTsKKwkJ
CX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5j
KGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVpbnRfdXZl
YzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHV2ZWMyIGluMAkJ
PSBbIHV2ZWMyKDEsIDApIHwgdXZlYzIoMiwgNCkgXTsKKwkJCW91dHB1dCB1aW50IG91dDAJPSBb
IDEgfCA2IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXVpbnQgZnVuYyAodXZlYzIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gKGEu
eCArIGEueSk7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSB1aW50X3V2ZWMzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCB1dmVjMyBpbjAJCT0gWyB1dmVjMygxLCAwLCAyKSB8IHV2ZWMzKDEsIDQsIDgpIF07CisJCQlv
dXRwdXQgdWludCBvdXQwCQk9IFsgMyB8IDEzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXVpbnQgZnVuYyAodXZlYzMgYSkK
KwkJCXsKKwkJCQlyZXR1cm4gKGEueCArIGEueSArIGEueik7CisJCQl9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50X3V2ZWM0CisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB1dmVjNCBpbjAJCT0gWyB1dmVjNCgxLCAwLCAy
LCAyKSB8IHV2ZWM0KDEsIDQsIDgsIDIpIF07CisJCQlvdXRwdXQgdWludCBvdXQwCT0gWyA1IHwg
MTUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdWludCBmdW5jICh1dmVjNCBhKQorCQkJeworCQkJCXJldHVybiAoYS54ICsg
YS55ICsgYS56ICsgYS53KTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGJvb2xfYm9vbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYm9vbCBpbjAJCT0gWyB0cnVlIHwgZmFsc2UgXTsKKwkJCW91dHB1dCBib29sIG91
dDAJPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlib29sIGZ1bmMgKGJvb2wgYSkKKwkJCXsKKwkJCQlyZXR1cm4gIWE7CisJCQl9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBib29sX2J2ZWMyCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAJCT0gWyBidmVjMih0
cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MAk9
IFsgZmFsc2UgfCB0cnVlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWJv
b2wgZnVuYyAoYnZlYzIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gIShhLnggPT0gYS55KTsKKwkJCX0K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGlu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJvb2xfYnZlYzMK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMAkJPSBb
IGJ2ZWMzKHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBib29sIG91dDAJPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGJ2ZWMzIGEpCisJCQl7CisJCQkJcmV0dXJu
IChhLnggPT0gYS55KSA9PSBhLno7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBib29sX2J2ZWM0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBidmVjNCBpbjAJCT0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MAk9IFsgZmFsc2UgfCB0cnVlIHwg
dHJ1ZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGJ2
ZWM0IGEpCisJCQl7CisJCQkJcmV0dXJuICgoYS54ID09IGEueSkgPT0gKGEueiA9PSBhLncpKTsK
KwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBm
dW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1hdDIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDIgaW4wCT0gWyBt
YXQyKC0yLjAsIDAuNSwgLTEuMCwgMS4wKSB8IG1hdDIoMS4wLCAtMy41LCAtMy41LCAyLjUpIHwg
bWF0MigtMi4wLCAtMi4wLCAzLjUsIDAuMCkgXTsKKwkJCW91dHB1dCBtYXQyIG91dDAJPSBbIG1h
dDIoNC4wLCAtMS4wLCAyLjAsIC0yLjApIHwgbWF0MigtMi4wLCA3LjAsIDcuMCwgLTUuMCkgfCBt
YXQyKDQuMCwgNC4wLCAtNy4wLCAtMC4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQltYXQyIGZ1bmMgKG1hdDIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLTIuMCphOworCQkJ
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCisJY2FzZSBtYXQyeDMK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IG1hdDJ4MyBpbjAJPSBb
IG1hdDJ4MygyLjUsIDAuMCwgMS4wLCAtMi41LCAxLjAsIDMuMCkgfCBtYXQyeDMoMC4wLCAyLjAs
IDEuNSwgLTMuNSwgMi4wLCAwLjUpIHwgbWF0MngzKC0xLjUsIC0zLjUsIDIuNSwgMC4wLCAxLjUs
IDMuMCkgXTsKKwkJCW91dHB1dCBtYXQyeDMgb3V0MAk9IFsgbWF0MngzKC01LjAsIC0wLjAsIC0y
LjAsIDUuMCwgLTIuMCwgLTYuMCkgfCBtYXQyeDMoLTAuMCwgLTQuMCwgLTMuMCwgNy4wLCAtNC4w
LCAtMS4wKSB8IG1hdDJ4MygzLjAsIDcuMCwgLTUuMCwgLTAuMCwgLTMuMCwgLTYuMCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJbWF0MngzIGZ1bmMgKG1hdDJ4MyBhKQor
CQkJeworCQkJCXJldHVybiAtMi4wKmE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisKKwljYXNlIG1hdDJ4NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgbWF0Mng0IGluMAk9IFsgbWF0Mng0KDEuNSwgMy4wLCAtMS4wLCAyLjUs
IC0wLjUsIDMuNSwgMy4wLCAtMy4wKSB8IG1hdDJ4NCgtMi41LCAtMi4wLCAzLjUsIC0wLjUsIDEu
MCwgLTEuNSwgMC4wLCAtMS4wKSB8IG1hdDJ4NCgtMS4wLCAwLjUsIDAuNSwgMy4wLCAxLjUsIDMu
MCwgMi41LCAzLjUpIF07CisJCQlvdXRwdXQgbWF0Mng0IG91dDAJPSBbIG1hdDJ4NCgtMy4wLCAt
Ni4wLCAyLjAsIC01LjAsIDEuMCwgLTcuMCwgLTYuMCwgNi4wKSB8IG1hdDJ4NCg1LjAsIDQuMCwg
LTcuMCwgMS4wLCAtMi4wLCAzLjAsIC0wLjAsIDIuMCkgfCBtYXQyeDQoMi4wLCAtMS4wLCAtMS4w
LCAtNi4wLCAtMy4wLCAtNi4wLCAtNS4wLCAtNy4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQltYXQyeDQgZnVuYyAobWF0Mng0IGEpCisJCQl7CisJCQkJcmV0dXJuIC0y
LjAqYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworCWNh
c2UgbWF0M3gyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQz
eDIgaW4wCT0gWyBtYXQzeDIoMS41LCAtMi41LCAyLjUsIDMuNSwgMy4wLCAwLjUpIHwgbWF0M3gy
KDEuNSwgLTIuMCwgMi41LCAwLjUsIC0xLjUsIC0zLjUpIHwgbWF0M3gyKDIuNSwgMy41LCAtMy4w
LCAyLjUsIC0wLjUsIC0yLjUpIF07CisJCQlvdXRwdXQgbWF0M3gyIG91dDAJPSBbIG1hdDN4Migt
My4wLCA1LjAsIC01LjAsIC03LjAsIC02LjAsIC0xLjApIHwgbWF0M3gyKC0zLjAsIDQuMCwgLTUu
MCwgLTEuMCwgMy4wLCA3LjApIHwgbWF0M3gyKC01LjAsIC03LjAsIDYuMCwgLTUuMCwgMS4wLCA1
LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCW1hdDN4MiBmdW5jICht
YXQzeDIgYSkKKwkJCXsKKwkJCQlyZXR1cm4gLTIuMCphOworCQkJfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCisJY2FzZSBtYXQzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBtYXQzIGluMAk9IFsgbWF0MygtMS41LCAyLjAsIDMuMCwg
LTMuNSwgMS4wLCAtMy41LCAxLjUsIC0xLjUsIDMuMCkgfCBtYXQzKDMuNSwgMC4wLCAzLjUsIC0x
LjUsIC0zLjAsIDAuNSwgLTMuNSwgLTIuNSwgLTAuNSkgfCBtYXQzKDEuMCwgLTIuNSwgLTMuNSwg
My4wLCAtMS41LCAzLjUsIDMuMCwgLTEuMCwgLTAuNSkgXTsKKwkJCW91dHB1dCBtYXQzIG91dDAJ
PSBbIG1hdDMoMy4wLCAtNC4wLCAtNi4wLCA3LjAsIC0yLjAsIDcuMCwgLTMuMCwgMy4wLCAtNi4w
KSB8IG1hdDMoLTcuMCwgLTAuMCwgLTcuMCwgMy4wLCA2LjAsIC0xLjAsIDcuMCwgNS4wLCAxLjAp
IHwgbWF0MygtMi4wLCA1LjAsIDcuMCwgLTYuMCwgMy4wLCAtNy4wLCAtNi4wLCAyLjAsIDEuMCkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJbWF0MyBmdW5jIChtYXQzIGEp
CisJCQl7CisJCQkJcmV0dXJuIC0yLjAqYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKworCWNhc2UgbWF0M3g0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBtYXQzeDQgaW4wCT0gWyBtYXQzeDQoMC4wLCAxLjAsIDAuNSwgMC41
LCAxLjAsIDMuNSwgMC4wLCAtMC41LCAxLjUsIC0yLjAsIC0xLjUsIDMuNSkgfCBtYXQzeDQoMC4w
LCAwLjUsIC0zLjUsIC0wLjUsIDAuNSwgLTMuNSwgMS4wLCAxLjAsIC0zLjUsIDEuMCwgLTAuNSwg
MS41KSB8IG1hdDN4NCgtMS4wLCAxLjUsIDIuMCwgLTMuNSwgLTMuNSwgMS41LCAzLjUsIC0yLjAs
IC0wLjUsIDAuNSwgLTEuNSwgLTEuMCkgXTsKKwkJCW91dHB1dCBtYXQzeDQgb3V0MAk9IFsgbWF0
M3g0KC0wLjAsIC0yLjAsIC0xLjAsIC0xLjAsIC0yLjAsIC03LjAsIC0wLjAsIDEuMCwgLTMuMCwg
NC4wLCAzLjAsIC03LjApIHwgbWF0M3g0KC0wLjAsIC0xLjAsIDcuMCwgMS4wLCAtMS4wLCA3LjAs
IC0yLjAsIC0yLjAsIDcuMCwgLTIuMCwgMS4wLCAtMy4wKSB8IG1hdDN4NCgyLjAsIC0zLjAsIC00
LjAsIDcuMCwgNy4wLCAtMy4wLCAtNy4wLCA0LjAsIDEuMCwgLTEuMCwgMy4wLCAyLjApIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCW1hdDN4NCBmdW5jIChtYXQzeDQgYSkK
KwkJCXsKKwkJCQlyZXR1cm4gLTIuMCphOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCisJY2FzZSBtYXQ0eDIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IG1hdDR4MiBpbjAJPSBbIG1hdDR4MigtMS41LCAtMS4wLCAwLjUsIC0x
LjUsIC0xLjAsIDIuMCwgLTMuNSwgMC41KSB8IG1hdDR4MigyLjAsIC0xLjUsIC0yLjAsIDIuNSwg
LTIuMCwgLTIuNSwgLTAuNSwgMS41KSB8IG1hdDR4MigtMy4wLCAtMS41LCAtMS4wLCAyLjUsIC0w
LjUsIDIuNSwgLTIuNSwgLTEuMCkgXTsKKwkJCW91dHB1dCBtYXQ0eDIgb3V0MAk9IFsgbWF0NHgy
KDMuMCwgMi4wLCAtMS4wLCAzLjAsIDIuMCwgLTQuMCwgNy4wLCAtMS4wKSB8IG1hdDR4MigtNC4w
LCAzLjAsIDQuMCwgLTUuMCwgNC4wLCA1LjAsIDEuMCwgLTMuMCkgfCBtYXQ0eDIoNi4wLCAzLjAs
IDIuMCwgLTUuMCwgMS4wLCAtNS4wLCA1LjAsIDIuMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJbWF0NHgyIGZ1bmMgKG1hdDR4MiBhKQorCQkJeworCQkJCXJldHVybiAt
Mi4wKmE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisKKwlj
YXNlIG1hdDR4MworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0
NHgzIGluMAk9IFsgbWF0NHgzKDEuMCwgMy4wLCAtMC41LCAtMi4wLCAtMy4wLCAwLjAsIC0yLjUs
IDIuNSwgMi41LCAtMi41LCAtMS41LCAyLjUpIHwgbWF0NHgzKDEuMCwgMi41LCAtMS4wLCAtMy4w
LCAtMS41LCAyLjAsIC0xLjUsIC0xLjAsIC0wLjUsIC0wLjUsIC0wLjUsIDMuMCkgfCBtYXQ0eDMo
LTIuNSwgLTMuNSwgMy41LCAzLjAsIDMuNSwgLTAuNSwgMy41LCAzLjAsIC0yLjAsIDIuMCwgMi41
LCAxLjApIF07CisJCQlvdXRwdXQgbWF0NHgzIG91dDAJPSBbIG1hdDR4MygtMi4wLCAtNi4wLCAx
LjAsIDQuMCwgNi4wLCAtMC4wLCA1LjAsIC01LjAsIC01LjAsIDUuMCwgMy4wLCAtNS4wKSB8IG1h
dDR4MygtMi4wLCAtNS4wLCAyLjAsIDYuMCwgMy4wLCAtNC4wLCAzLjAsIDIuMCwgMS4wLCAxLjAs
IDEuMCwgLTYuMCkgfCBtYXQ0eDMoNS4wLCA3LjAsIC03LjAsIC02LjAsIC03LjAsIDEuMCwgLTcu
MCwgLTYuMCwgNC4wLCAtNC4wLCAtNS4wLCAtMi4wKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQltYXQ0eDMgZnVuYyAobWF0NHgzIGEpCisJCQl7CisJCQkJcmV0dXJuIC0y
LjAqYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworCWNh
c2UgbWF0NAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgbWF0NCBp
bjAJPSBbIG1hdDQoMC4wLCAtMS41LCAtMS4wLCAtMi4wLCAtMy4wLCAwLjUsIC0xLjUsIDIuNSwg
LTMuNSwgMy4wLCAxLjUsIDMuMCwgMy4wLCAzLjAsIDAuNSwgLTMuNSkgfCBtYXQ0KDIuMCwgLTIu
NSwgLTEuNSwgMS4wLCAwLjAsIC0wLjUsIDMuNSwgMS4wLCAtMS4wLCAtMi4wLCAyLjUsIDAuMCwg
Mi4wLCAtMS4wLCAtMi41LCAwLjUpIHwgbWF0NCgyLjUsIC0yLjUsIDIuMCwgMy4wLCAyLjUsIDIu
NSwgLTMuNSwgMS4wLCAyLjUsIC0zLjUsIC0xLjUsIC0xLjUsIDAuMCwgLTAuNSwgMC4wLCAyLjAp
IF07CisJCQlvdXRwdXQgbWF0NCBvdXQwCT0gWyBtYXQ0KC0wLjAsIDMuMCwgMi4wLCA0LjAsIDYu
MCwgLTEuMCwgMy4wLCAtNS4wLCA3LjAsIC02LjAsIC0zLjAsIC02LjAsIC02LjAsIC02LjAsIC0x
LjAsIDcuMCkgfCBtYXQ0KC00LjAsIDUuMCwgMy4wLCAtMi4wLCAtMC4wLCAxLjAsIC03LjAsIC0y
LjAsIDIuMCwgNC4wLCAtNS4wLCAtMC4wLCAtNC4wLCAyLjAsIDUuMCwgLTEuMCkgfCBtYXQ0KC01
LjAsIDUuMCwgLTQuMCwgLTYuMCwgLTUuMCwgLTUuMCwgNy4wLCAtMi4wLCAtNS4wLCA3LjAsIDMu
MCwgMy4wLCAtMC4wLCAxLjAsIC0wLjAsIC00LjApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCW1hdDQgZnVuYyAobWF0NCBhKQorCQkJeworCQkJCXJldHVybiAtMi4wKmE7
CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
ZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9h
dF9zdHJ1Y3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMg
aW4wCQk9IFsgdmVjMygwLjAsIDEuMCwgLTIuMCkgfCB2ZWMzKDIuMCwgMi41LCAtNC4wKSBdOwor
CQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMCB8IC0wLjUgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJc3RydWN0IFBvcyB7IGZsb2F0IGEsIGIsIGM7IH07CisKKwkJCWZs
b2F0IGZ1bmMgKFBvcyBwKQorCQkJeworCQkJCXJldHVybiAtKHAuYSArIHAuYiArIHAuYyk7CisJ
CQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJUG9zIHAgPSBQb3MoaW4wLngsIGluMC55
LCBpbjAueik7CisJCQkJb3V0MCA9IGZ1bmMocCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHN0cnVjdF9zdHJ1Y3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzMgaW4wCQk9IFsgdmVjMygwLjAsIDEuMCwgLTIuMCkgfCB2ZWMz
KDIuMCwgMi41LCAtNC4wKSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDEuMCB8IC0wLjUg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJc3RydWN0IFBvcyB7IGZsb2F0
IGEsIGIsIGM7IH07CisKKwkJCVBvcyBmdW5jIChQb3MgcCkKKwkJCXsKKwkJCQlyZXR1cm4gUG9z
KC1wLmEsIC1wLmIsIC1wLmMpOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCVBv
cyBwID0gUG9zKGluMC54LCBpbjAueSwgaW4wLnopOworCQkJCXAgPSBmdW5jKHApOworCQkJCW91
dDAgPSBwLmEgKyBwLmIgKyBwLmM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHN0cnVjdF9uZXN0ZWRfc3RydWN0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCB2ZWMzIGluMAkJPSBbIHZlYzMoMC4wLCAxLjAsIC0yLjApIHwgdmVjMygy
LjAsIDIuNSwgLTQuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAxLjAgfCAtMC41IF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBQb3MgeyBmbG9hdCBh
LCBiLCBjOyB9OworCQkJc3RydWN0IExpbmUgeyBQb3Mgc3RhcnQsIGVuZDsgfTsKKworCQkJTGlu
ZSBmdW5jIChQb3MgcCkKKwkJCXsKKwkJCQlyZXR1cm4gTGluZShwLCBQb3MoLXAuYSwgLXAuYiwg
LXAuYykpOworCQkJfQorCisJCQlmbG9hdCBzdW0gKFBvcyBwKQorCQkJeworCQkJCXJldHVybiAo
cC5hICsgcC5iICsgcC5jKTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlQb3Mg
cCA9IFBvcyhpbjAueCwgaW4wLnksIGluMC56KTsKKwkJCQlMaW5lIGxpbmUgPSBmdW5jKHApOwor
CQkJCW91dDAgPSBzdW0obGluZS5zdGFydCkgKyAoMi4wICogc3VtKGxpbmUuZW5kKSk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKworZW5kICMgZGF0YXR5cGVzCisKK2dyb3Vw
IHF1YWxpZmllcnMgIkZ1bmN0aW9uIFBhcmFtZXRlciBRdWFsaWZpZXJzIgorCisJY2FzZSBpbl9m
bG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
CQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBb
IDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGluIGZsb2F0IGEp
CisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVybiAyLjAgKiBhOworCQkJfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZiA9IGluMDsKKwkJCQlmbG9h
dCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG91dF9mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOwor
CQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgZnVuYyAob3V0IGZsb2F0IGEpCisJCQl7CisJCQkJYSA9IC0xLjA7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmID0gMS4wOworCQkJ
CWZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGlub3V0X2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJ
CQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBmdW5jIChpbm91dCBmbG9hdCBhKQorCQkJeworCQkJCWEgPSAtYTsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSAxLjA7CisJCQkJ
ZnVuYyhmKTsKKwkJCQlvdXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW5fbG93cF9mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOwor
CQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CWZsb2F0IGZ1bmMgKGluIGxvd3AgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0
dXJuIDIuMCAqIGE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCBmID0gaW4wOworCQkJCWZsb2F0IGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSBm
ICsgZzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2xvd3Bf
ZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGlu
MAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0g
WyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKG91dCBsb3dwIGZs
b2F0IGEpCisJCQl7CisJCQkJYSA9IC0xLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmID0gMS4wOworCQkJCWZ1bmMoZik7CisJCQkJb3V0
MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlu
b3V0X2xvd3BfZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGZsb2F0IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9h
dCBvdXQwCT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKGlu
b3V0IGxvd3AgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQl9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmID0gMS4wOworCQkJCWZ1bmMoZik7
CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGluX2hpZ2hwX2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRw
dXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQg
ZnVuYyAoaW4gaGlnaHAgZmxvYXQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0dXJuIDIu
MCAqIGE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCBmID0gaW4wOworCQkJCWZsb2F0IGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSBmICsgZzsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2hpZ2hwX2Zsb2F0
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0g
WyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4w
IHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChvdXQgaGlnaHAgZmxvYXQg
YSkKKwkJCXsKKwkJCQlhID0gLTEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGYgPSAxLjA7CisJCQkJZnVuYyhmKTsKKwkJCQlvdXQwID0g
ZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5vdXRf
aGlnaHBfZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZs
b2F0IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBv
dXQwCT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKGlub3V0
IGhpZ2hwIGZsb2F0IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZiA9IDEuMDsKKwkJCQlmdW5jKGYpOwor
CQkJCW91dDAgPSBmICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBjb25zdF9mbG9hdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZs
b2F0IG91dDAJPSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMg
KGNvbnN0IGZsb2F0IGEpCisJCQl7CisJCQkJZmxvYXQgYiA9IC1hOworCQkJCXJldHVybiAyLjAg
KiBiOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxv
YXQgZiA9IGluMDsKKwkJCQlmbG9hdCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNvbnN0X2luX2Zsb2F0CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAw
LjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwg
LTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoY29uc3QgaW4gZmxvYXQgYSkK
KwkJCXsKKwkJCQlmbG9hdCBiID0gLWE7CisJCQkJcmV0dXJuIDIuMCAqIGI7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmID0gaW4wOworCQkJ
CWZsb2F0IGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSBmICsgZzsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5faW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgMCB8IDEgfCAtMiB8IDQgXTsKKwkJCW91dHB1
dCBpbnQgb3V0MAkJPSBbIDAgfCAtMSB8IDIgfCAtNCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoaW4gaW50
IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVybiAyICogYTsKKwkJCX0KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBmID0gaW4wOworCQkJCWludCBn
ID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG91dF9pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNiBdOworCQkJb3V0cHV0IGludCBv
dXQwCQk9IFsgMCB8IC0xIHwgMiB8IC02IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAob3V0IGludCBhKQor
CQkJeworCQkJCWEgPSAtMTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWludCBmID0gMTsKKwkJCQlmdW5jKGYpOworCQkJCW91dDAgPSBmICogaW4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbm91dF9pbnQKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8
IC0yIHwgNiBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC02IF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgZnVuYyAoaW5vdXQgaW50IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50IGYgPSAxOworCQkJCWZ1
bmMoZik7CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGluX2xvd3BfaW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgMCB8IDEgfCAtMiB8IDQgXTsKKwkJCW91dHB1dCBpbnQg
b3V0MAkJPSBbIDAgfCAtMSB8IDIgfCAtNCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoaW4gbG93cCBpbnQg
YSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0dXJuIDIgKiBhOworCQkJfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50IGYgPSBpbjA7CisJCQkJaW50IGcg
PSBmdW5jKGYpOworCQkJCW91dDAgPSBmICsgZzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2Ugb3V0X2xvd3BfaW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpbnQgaW4wCQk9IFsgMCB8IDEgfCAtMiB8IDYgXTsKKwkJCW91dHB1dCBp
bnQgb3V0MAkJPSBbIDAgfCAtMSB8IDIgfCAtNiBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKG91dCBsb3dw
IGludCBhKQorCQkJeworCQkJCWEgPSAtMTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWludCBmID0gMTsKKwkJCQlmdW5jKGYpOworCQkJCW91dDAgPSBm
ICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbm91dF9s
b3dwX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGlu
MAkJPSBbIDAgfCAxIHwgLTIgfCA2IF07CisJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAwIHwgLTEg
fCAyIHwgLTYgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChpbm91dCBsb3dwIGludCBhKQorCQkJeworCQkJ
CWEgPSAtYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWludCBmID0gMTsKKwkJCQlmdW5jKGYpOworCQkJCW91dDAgPSBmICogaW4wOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbl9oaWdocF9pbnQKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwg
NCBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgMCB8IC0xIHwgMiB8IC00IF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWlu
dCBmdW5jIChpbiBoaWdocCBpbnQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQkJcmV0dXJuIDIg
KiBhOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50
IGYgPSBpbjA7CisJCQkJaW50IGcgPSBmdW5jKGYpOworCQkJCW91dDAgPSBmICsgZzsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2hpZ2hwX2ludAorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAkJPSBbIDAgfCAxIHwg
LTIgfCA2IF07CisJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAwIHwgLTEgfCAyIHwgLTYgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBmdW5jIChvdXQgaGlnaHAgaW50IGEpCisJCQl7CisJCQkJYSA9IC0xOworCQkJfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50IGYgPSAxOworCQkJ
CWZ1bmMoZik7CisJCQkJb3V0MCA9IGYgKiBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGlub3V0X2hpZ2hwX2ludAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAkJPSBbIDAgfCAxIHwgLTIgfCA2IF07CisJCQlvdXRw
dXQgaW50IG91dDAJCT0gWyAwIHwgLTEgfCAyIHwgLTYgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChpbm91
dCBoaWdocCBpbnQgYSkKKwkJCXsKKwkJCQlhID0gLWE7CisJCQl9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgZiA9IDE7CisJCQkJZnVuYyhmKTsKKwkJCQlv
dXQwID0gZiAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Y29uc3RfaW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQg
aW4wCQk9IFsgMCB8IDEgfCAtMiB8IDQgXTsKKwkJCW91dHB1dCBpbnQgb3V0MAkJPSBbIDAgfCAt
MSB8IDIgfCAtNCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoY29uc3QgaW50IGEpCisJCQl7CisJCQkJaW50
IGIgPSAtYTsKKwkJCQlyZXR1cm4gMiAqIGI7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgZiA9IGluMDsKKwkJCQlpbnQgZyA9IGZ1bmMoZik7CisJ
CQkJb3V0MCA9IGYgKyBnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBjb25zdF9pbl9pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGludCBpbjAJCT0gWyAwIHwgMSB8IC0yIHwgNCBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsg
MCB8IC0xIHwgMiB8IC00IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5jIChjb25zdCBpbiBpbnQgYSkKKwkJCXsK
KwkJCQlpbnQgYiA9IC1hOworCQkJCXJldHVybiAyICogYjsKKwkJCX0KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBmID0gaW4wOworCQkJCWludCBnID0gZnVu
YyhmKTsKKwkJCQlvdXQwID0gZiArIGc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGluX2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJvb2wgaW4wCQk9IFsgdHJ1ZSB8IGZhbHNlIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwCT0g
WyB0cnVlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlib29s
IGZ1bmMgKGluIGJvb2wgYSkKKwkJCXsKKwkJCQlhID0gIWE7CisJCQkJcmV0dXJuIGE7CisJCQl9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29sIGYgPSBpbjA7
CisJCQkJYm9vbCBnID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gKGYgIT0gZyk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG91dF9ib29sCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMAkJPSBbIHRydWUgfCBmYWxzZSBdOwor
CQkJb3V0cHV0IGJvb2wgb3V0MAk9IFsgZmFsc2UgfCB0cnVlIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAob3V0IGJvb2wgYSkKKwkJCXsKKwkJCQlhID0g
ZmFsc2U7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQli
b29sIGYgPSB0cnVlOworCQkJCWZ1bmMoZik7CisJCQkJb3V0MCA9IChpbjAgPT0gZik7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlub3V0X2Jvb2wKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJvb2wgaW4wCQk9IFsgdHJ1ZSB8IGZh
bHNlIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwCT0gWyBmYWxzZSB8IHRydWUgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jIChpbm91dCBib29sIGEpCisJCQl7
CisJCQkJYSA9ICFhOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJYm9vbCBmID0gdHJ1ZTsKKwkJCQlmdW5jKGYpOworCQkJCW91dDAgPSAoaW4wID09IGYp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBjb25zdF9ib29sCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBib29sIGluMAkJPSBbIHRy
dWUgfCBmYWxzZSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MAk9IFsgdHJ1ZSB8IHRydWUgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJYm9vbCBmdW5jIChjb25zdCBib29sIGEp
CisJCQl7CisJCQkJYm9vbCBiID0gIWE7CisJCQkJcmV0dXJuIGI7CisJCQl9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlib29sIGYgPSBpbjA7CisJCQkJYm9vbCBn
ID0gZnVuYyhmKTsKKwkJCQlvdXQwID0gKGYgIT0gZyk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKK2VuZCAjIHF1YWxpZmllcnMKKworZ3JvdXAgZGVjbGFyYXRpb25zICJGdW5j
dGlvbiBEZWNsYXJhdGlvbnMiCisKKwljYXNlIGJhc2ljCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41
IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAodm9pZCk7CisK
KwkJCWZsb2F0IGZ1bmMgKHZvaWQpCisJCQl7CisJCQkJcmV0dXJuIC0xLjA7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZ1bmMoKSAqIGluMDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYmFzaWNfYXJnCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAwLjAgfCAxLjAgfCAtMi4w
IHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4wIHwgLTEuMCB8IDIuMCB8IC0y
LjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxv
YXQgZik7CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJuIC1mOwor
CQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmluZV9hZnRlcl91c2UKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDAu
MCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjAgfCAt
MS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlm
bG9hdCBmdW5jICh2b2lkKTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVu
YygpICogaW4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9hdCBmdW5jICh2b2lkKQor
CQkJeworCQkJCXJldHVybiAtMS4wOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkb3VibGVf
ZGVjbGFyZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQg
aW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJ
PSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWZsb2F0IGZ1bmMgKHZvaWQpOworCisJCQlmbG9hdCBmdW5jICh2b2lkKTsKKwor
CQkJZmxvYXQgZnVuYyAodm9pZCkKKwkJCXsKKwkJCQlyZXR1cm4gLTEuMDsKKwkJCX0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYygpICogaW4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkZWNsYXJlX2FmdGVyX2RlZmluZQorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgMC4wIHwg
MS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuMCB8IC0xLjAg
fCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0
IGZ1bmMgKHZvaWQpCisJCQl7CisJCQkJcmV0dXJuIC0xLjA7CisJCQl9CisKKwkJCWZsb2F0IGZ1
bmMgKHZvaWQpOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmdW5jKCkgKiBp
bjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHZvaWRfdnNfbm9f
dm9pZAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
CQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBb
IDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWZsb2F0IGZ1bmMgKCk7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9
IGZ1bmMoKSAqIGluMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKworCQkJZmxvYXQgZnVuYyAodm9p
ZCkKKwkJCXsKKwkJCQlyZXR1cm4gLTEuMDsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5f
dnNfbm9faW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0
IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQw
CT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCBmKTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9hdCBm
dW5jIChpbiBmbG9hdCBmKQorCQkJeworCQkJCXJldHVybiAtZjsKKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgZGVmYXVsdF92c19leHBsaWNpdF9wcmVjaXNpb24KKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAg
fCAyLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIu
NSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9h
dCBmKTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9hdCBmdW5jIChtZWRpdW1wIGZsb2F0IGYpCisJCQl7
CisJCQkJcmV0dXJuIC1mOworCQkJfQorCQkiIgorCWVuZAorCisKK2VuZCAjIGRlY2xhcmF0aW9u
cworCitncm91cCBvdmVybG9hZGluZyAiRnVuY3Rpb24gT3ZlcmxvYWRpbmciCisKKwljYXNlIHVz
ZXJfZnVuY19hcmdfdHlwZV9zaW1wbGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDAuMCB8IDEuMCB8IC0yLjAgfCAyLjUgXTsKKwkJCW91
dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjAgfCAtMS4wIHwgMi4wIHwgLTIuNSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9h
dCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCXJldHVybiAtYTsKKwkJCX0KKworCQkJaW50IGZ1
bmMgKGludCBhKQorCQkJeworCQkJCXJldHVybiAtYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApICogZmxvYXQoZnVuYygtMSkpOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2VyX2Z1bmNfYXJnX2Zsb2F0X3R5cGVz
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0g
WyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC4w
IHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkgeyByZXR1
cm4gLWE7IH0KKwkJCXZlYzIgZnVuYyAodmVjMiBhKSB7IHJldHVybiBhLnl4OyB9CisJCQl2ZWMz
IGZ1bmMgKHZlYzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJCXZlYzQgZnVuYyAodmVjNCBhKSB7
IHJldHVybiBhLnd3d3c7IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVu
YyhmdW5jKGZ1bmMoZnVuYyh2ZWM0KGluMCkpLnh5eikueHkpLngpOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2VyX2Z1bmNfYXJnX2ludF90eXBlcworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMAkJPSBbIDAgfCAxIHwg
LTIgfCA2IF07CisJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAwIHwgLTEgfCAyIHwgLTYgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJaW50IGZ1bmMgKGludCBhKSB7IHJldHVybiAtYTsgfQorCQkJaXZlYzIgZnVuYyAoaXZlYzIg
YSkgeyByZXR1cm4gYS55eDsgfQorCQkJaXZlYzMgZnVuYyAoaXZlYzMgYSkgeyByZXR1cm4gYS54
eHg7IH0KKwkJCWl2ZWM0IGZ1bmMgKGl2ZWM0IGEpIHsgcmV0dXJuIGEud3d3dzsgfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoZnVuYyhmdW5j
KGZ1bmMoaXZlYzQoaW4wKSkueHl6KS54eSkueCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHVzZXJfZnVuY19hcmdfYm9vbF90eXBlcworCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYm9vbCBpbjAJCT0gWyB0cnVlIHwgZmFsc2UgXTsK
KwkJCW91dHB1dCBib29sIG91dDAJPSBbIGZhbHNlIHwgdHJ1ZSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlib29sIGZ1bmMgKGJvb2wgYSkgeyByZXR1cm4gIWE7IH0KKwkJ
CWJ2ZWMyIGZ1bmMgKGJ2ZWMyIGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCWJ2ZWMzIGZ1bmMgKGJ2
ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQlidmVjNCBmdW5jIChidmVjNCBhKSB7IHJldHVy
biBhLnd3d3c7IH0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBmdW5jKGZ1bmMoZnVuYyhmdW5jKGJ2ZWM0KGluMCkpLnh5eikueHkpLngpOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1c2VyX2Z1bmNfYXJnX2Jhc2ljX3R5
cGVzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJ
CT0gWyAwLjAgfCAxLjAgfCAtMi4wIHwgMi41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsg
MC4wIHwgLTEuMCB8IDIuMCB8IC0yLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVt
cCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkgeyBy
ZXR1cm4gLWE7IH0KKwkJCXZlYzIgZnVuYyAodmVjMiBhKSB7IHJldHVybiBhLnl4OyB9CisJCQl2
ZWMzIGZ1bmMgKHZlYzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJCXZlYzQgZnVuYyAodmVjNCBh
KSB7IHJldHVybiBhLnd3d3c7IH0KKwkJCWludCBmdW5jIChpbnQgYSkgeyByZXR1cm4gLWE7IH0K
KwkJCWl2ZWMyIGZ1bmMgKGl2ZWMyIGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCWl2ZWMzIGZ1bmMg
KGl2ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQlpdmVjNCBmdW5jIChpdmVjNCBhKSB7IHJl
dHVybiBhLnd3d3c7IH0KKwkJCWJvb2wgZnVuYyAoYm9vbCBhKSB7IHJldHVybiAhYTsgfQorCQkJ
YnZlYzIgZnVuYyAoYnZlYzIgYSkgeyByZXR1cm4gYS55eDsgfQorCQkJYnZlYzMgZnVuYyAoYnZl
YzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJCWJ2ZWM0IGZ1bmMgKGJ2ZWM0IGEpIHsgcmV0dXJu
IGEud3d3dzsgfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaWYg
KGZ1bmMoZnVuYyhidmVjNChmYWxzZSkpLngpKQorCQkJCQlvdXQwID0gZnVuYyhpbjApICogZmxv
YXQoZnVuYygtMSkpOworCQkJCWVsc2UKKwkJCQkJb3V0MCA9IGZsb2F0KGZ1bmMoZnVuYyhpdmVj
NChmdW5jKGZ1bmMoZnVuYyh2ZWM0KDAuNSkpLnh5eikueHkpLnh4eHgpKS54eSkueCk7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZXJfZnVuY19hcmdfY29tcGxl
eF90eXBlcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQg
aW4wCQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJ
PSBbIDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0cnVjdCBQb3MgeyBmbG9hdCBh
LCBiLCBjOyB9OworCQkJc3RydWN0IExpbmUgeyBQb3Mgc3RhcnQsIGVuZDsgfTsKKworCQkJZmxv
YXQgZnVuYyAoZmxvYXQgYSkgeyByZXR1cm4gLWE7IH0KKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGFb
NF0pIHsgcmV0dXJuIGFbMF0gKyBhWzNdOyB9CisJCQl2ZWMyIGZ1bmMgKHZlYzIgYSkgeyByZXR1
cm4gYS55eDsgfQorCQkJdmVjMyBmdW5jICh2ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQl2
ZWM0IGZ1bmMgKHZlYzQgYSkgeyByZXR1cm4gYS53d3d3OyB9CisJCQl2ZWM0IGZ1bmMgKHZlYzQg
YVs0XSkgeyByZXR1cm4gYVsxXSArIGFbMl07IH0KKwkJCWludCBmdW5jIChpbnQgYSkgeyByZXR1
cm4gLWE7IH0KKwkJCWl2ZWMyIGZ1bmMgKGl2ZWMyIGEpIHsgcmV0dXJuIGEueXg7IH0KKwkJCWl2
ZWMzIGZ1bmMgKGl2ZWMzIGEpIHsgcmV0dXJuIGEueHh4OyB9CisJCQlpdmVjNCBmdW5jIChpdmVj
NCBhKSB7IHJldHVybiBhLnd3d3c7IH0KKwkJCWJvb2wgZnVuYyAoYm9vbCBhKSB7IHJldHVybiAh
YTsgfQorCQkJYnZlYzIgZnVuYyAoYnZlYzIgYSkgeyByZXR1cm4gYS55eDsgfQorCQkJYnZlYzMg
ZnVuYyAoYnZlYzMgYSkgeyByZXR1cm4gYS54eHg7IH0KKwkJCWJ2ZWM0IGZ1bmMgKGJ2ZWM0IGEp
IHsgcmV0dXJuIGEud3d3dzsgfQorCQkJUG9zIGZ1bmMgKFBvcyBhKSB7IHJldHVybiBhOyB9CisJ
CQlMaW5lIGZ1bmMgKExpbmUgYSkgeyByZXR1cm4gTGluZShhLmVuZCwgYS5zdGFydCk7IH0KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGFycls0XTsKKwkJ
CQl2ZWM0IGFycjJbNF07CisJCQkJb3V0MCA9IGZ1bmMoYXJyKSArIGZ1bmMoYXJyMikueDsKKwkJ
CQlpZiAoZnVuYyhmdW5jKGJ2ZWM0KGZhbHNlKSkueCkpCisJCQkJCW91dDAgPSBmdW5jKGluMCkg
KiBmbG9hdChmdW5jKC0xKSk7CisJCQkJZWxzZQorCQkJCQlvdXQwID0gZmxvYXQoZnVuYyhmdW5j
KGl2ZWM0KGZ1bmMoZnVuYyhmdW5jKHZlYzQoMC41KSkueHl6KS54eSkueHh4eCkpLnh5KS54KTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlcl9mdW5jX2FyZ3Vt
ZW50cworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
CQk9IFsgMC4wIHwgMS4wIHwgLTIuMCB8IDIuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBb
IDAuMCB8IC0xLjAgfCAyLjAgfCAtMi41IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJCQl7CisJCQkJcmV0dXJuIC1hOworCQkJfQor
CisJCQlmbG9hdCBmdW5jIChmbG9hdCBhLCBmbG9hdCBiKQorCQkJeworCQkJCXJldHVybiBhICog
YjsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZnVuYyhpbjApICog
ZnVuYygtMC41LCAtMi4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYXJyYXlfc2l6ZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJb3V0cHV0
IGZsb2F0IG91dDAJPSBbIDEuMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlmbG9hdCBmdW5jIChmbG9hdCBmWzNdKQorCQkJeworCQkJCXJldHVybiBmWzBdOworCQkJfQor
CisJCQlmbG9hdCBmdW5jIChmbG9hdCBmWzRdKQorCQkJeworCQkJCXJldHVybiBmWzFdOworCQkJ
fQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0WzRdIHgg
PSBmbG9hdFs0XSAoLTEuMCwgMS4wLCAwLjAsIDAuMCk7CisJCQkJb3V0MCA9IGZ1bmMoeCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIG92ZXJsb2FkaW5nCisKK2dy
b3VwIGFycmF5X2FyZ3VtZW50cyAiQXJyYXlzIGFzIEFyZ3VtZW50cyIKKworCWNhc2UgbG9jYWxf
aW5fZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQg
aW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcuNSwgMTIuMTI1LCAt
MC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQoMC4wLCAtMS4wLCAt
Mi4wLCA0LjApIHwgdmVjNCg3LjUsIC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChpbiBmbG9hdCBhWzRdKQorCQkJ
eworCQkJCWFbMF0gPSAtMS4wOworCQkJCWFbMl0gPSAtNC4wOworCQkJCWFbM10gPSAtMy4wICog
YVsxXTsKKwkJCQlyZXR1cm4gYVswXTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQlmbG9hdCBhcnJbNF07CisJCQkJYXJyWzBdID0gaW4wLng7CisJCQkJYXJyWzFdID0gaW4wLnk7
CisJCQkJYXJyWzJdID0gaW4wLno7CisJCQkJYXJyWzNdID0gaW4wLnc7CisJCQkJZmxvYXQgZiA9
IGZ1bmMoYXJyKTsKKwkJCQlvdXQwID0gZiAqIHZlYzQoYXJyWzBdLCBhcnJbMV0sIGFyclsyXSwg
YXJyWzNdKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZ2xvYmFs
X2luX2Zsb2F0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0
IGluMAkJPSBbIHZlYzQoMC4wLCAxLjAsIDIuMCwgLTQuMCkgfCB2ZWM0KC03LjUsIDEyLjEyNSwg
LTAuMjUsIDE2LjApIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwCT0gWyB2ZWM0KDAuMCwgLTEuMCwg
LTIuMCwgNC4wKSB8IHZlYzQoNy41LCAtMTIuMTI1LCAwLjI1LCAtMTYuMCkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoaW4gZmxvYXQgYVs0XSkKKwkJ
CXsKKwkJCQlhWzBdID0gLTEuMDsKKwkJCQlhWzJdID0gLTQuMDsKKwkJCQlhWzNdID0gLTMuMCAq
IGFbMV07CisJCQkJcmV0dXJuIGFbMF07CisJCQl9CisKKwkJCWZsb2F0IGFycls0XTsKKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlhcnJbMF0gPSBpbjAueDsKKwkJCQlhcnJbMV0gPSBpbjAu
eTsKKwkJCQlhcnJbMl0gPSBpbjAuejsKKwkJCQlhcnJbM10gPSBpbjAudzsKKwkJCQlmbG9hdCBm
ID0gZnVuYyhhcnIpOworCQkJCW91dDAgPSBmICogdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJd
LCBhcnJbM10pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2Nh
bF9pbl9pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0
IGluMAkJPSBbIGl2ZWM0KDAsIDEsIDIsIC00KSB8IGl2ZWM0KC03LCAtMTEsIDEzLCAxOSkgXTsK
KwkJCW91dHB1dCBpdmVjNCBvdXQwCT0gWyBpdmVjNCgwLCAtMSwgLTIsIDQpIHwgaXZlYzQoNywg
MTEsIC0xMywgLTE5KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoaW4gaW50IGFbNF0pCisJCQl7CisJCQkJ
YVswXSA9IC0xOworCQkJCWFbMl0gPSAtNDsKKwkJCQlhWzNdID0gLTMgKiBhWzFdOworCQkJCXJl
dHVybiBhWzBdOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJaW50IGFycls0XTsKKwkJCQlhcnJbMF0gPSBpbjAueDsKKwkJCQlhcnJbMV0gPSBpbjAueTsK
KwkJCQlhcnJbMl0gPSBpbjAuejsKKwkJCQlhcnJbM10gPSBpbjAudzsKKwkJCQlpbnQgZiA9IGZ1
bmMoYXJyKTsKKwkJCQlvdXQwID0gZiAqIGl2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFy
clszXSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGdsb2JhbF9p
bl9pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGlu
MAkJPSBbIGl2ZWM0KDAsIDEsIDIsIDQpIHwgaXZlYzQoLTcsIC0xMSwgMTMsIDE5KSBdOworCQkJ
b3V0cHV0IGl2ZWM0IG91dDAJPSBbIGl2ZWM0KDAsIC0xLCAtMiwgLTQpIHwgaXZlYzQoNywgMTEs
IC0xMywgLTE5KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoaW4gaW50IGFbNF0pCisJCQl7CisJCQkJYVsw
XSA9IC0xOworCQkJCWFbMl0gPSAtNDsKKwkJCQlhWzNdID0gLTMgKiBhWzFdOworCQkJCXJldHVy
biBhWzBdOworCQkJfQorCisJCQlpbnQgYXJyWzRdOworCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJYXJyWzBdID0gaW4wLng7CisJCQkJYXJyWzFdID0gaW4wLnk7CisJ
CQkJYXJyWzJdID0gaW4wLno7CisJCQkJYXJyWzNdID0gaW4wLnc7CisJCQkJaW50IGYgPSBmdW5j
KGFycik7CisJCQkJb3V0MCA9IGYgKiBpdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJb
M10pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCSIiCisJZW5kCisKKwljYXNlIGxvY2FsX2lu
X2Jvb2wKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGlu
MAkJPSBbIGJ2ZWM0KHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAJPSBbIGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJYm9vbCBmdW5jIChpbiBib29sIGFb
NF0pCisJCQl7CisJCQkJYVswXSA9IGZhbHNlOworCQkJCWFbMl0gPSB0cnVlOworCQkJCWFbM10g
PSAhYVsxXTsKKwkJCQlyZXR1cm4gYVswXTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWJvb2wgYXJyWzRdOworCQkJCWFyclswXSA9ICFpbjAueDsKKwkJ
CQlhcnJbMV0gPSAhaW4wLnk7CisJCQkJYXJyWzJdID0gIWluMC56OworCQkJCWFyclszXSA9ICFp
bjAudzsKKwkJCQlmdW5jKGFycik7CisJCQkJb3V0MCA9IGJ2ZWM0KGFyclswXSwgYXJyWzFdLCBh
cnJbMl0sIGFyclszXSk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGdsb2JhbF9pbl9ib29sCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjNCBpbjAJCT0gWyBidmVjNCh0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwCT0gWyBi
dmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUs
IHRydWUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWJvb2wgZnVuYyAo
aW4gYm9vbCBhWzRdKQorCQkJeworCQkJCWFbMF0gPSBmYWxzZTsKKwkJCQlhWzJdID0gdHJ1ZTsK
KwkJCQlhWzNdID0gIWFbMV07CisJCQkJcmV0dXJuIGFbMF07CisJCQl9CisKKwkJCWJvb2wgYXJy
WzRdOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJYXJyWzBdID0g
IWluMC54OworCQkJCWFyclsxXSA9ICFpbjAueTsKKwkJCQlhcnJbMl0gPSAhaW4wLno7CisJCQkJ
YXJyWzNdID0gIWluMC53OworCQkJCWZ1bmMoYXJyKTsKKwkJCQlvdXQwID0gYnZlYzQoYXJyWzBd
LCBhcnJbMV0sIGFyclsyXSwgYXJyWzNdKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdGVzdF9oZWxwZXJzCisJCXZlcnNpb24gMzAwIGVzCisJCWRlc2MgIkNoZWNr
IHRoYXQgaGVscGVyIGZ1bmN0aW9ucyBhcmUgc3VwcG9ydGVkIHByb3Blcmx5LiIKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8
IHZlYzQoLTcuNSwgMTIuMTI1LCAtMC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQw
CT0gWyAxLjAgfCAxLjAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdmVj
NCBnZXQgKGluIGZsb2F0IGFycls0XSk7CisJCQl2b2lkIHNldCAob3V0IGZsb2F0IGFycls0XSwg
dmVjNCB2YWwpOworCQkJdm9pZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSk7CisJCQlib29s
IHRlc3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpOworCQkJYm9vbCBpc0VxdWFsIChpbiBm
bG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRdKTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlm
bG9hdCBhcnJbNF07CisJCQkJc2V0KGFyciwgaW4wKTsKKwkJCQluZWdhdGUoYXJyKTsKKwkJCQlv
dXQwID0gZmxvYXQodGVzdChhcnIsIC1pbjApKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKworCQkJ
ZmxvYXQgYWJzRGlmZiAodmVjNCBhLCB2ZWM0IGIpIHsgdmVjNCBkID0gYWJzKGEgLSBiKTsgcmV0
dXJuIG1heChtYXgoZC54LCBkLnkpLCBtYXgoZC56LCBkLncpKTsgfQorCQkJdmVjNCBnZXQgKGlu
IGZsb2F0IGFycls0XSkgeyByZXR1cm4gdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJb
M10pOyB9CisJCQl2b2lkIHNldCAob3V0IGZsb2F0IGFycls0XSwgdmVjNCB2YWwpIHsgYXJyWzBd
ID0gdmFsLng7IGFyclsxXSA9IHZhbC55OyBhcnJbMl0gPSB2YWwuejsgYXJyWzNdID0gdmFsLnc7
IH0KKwkJCXZvaWQgbmVnYXRlIChpbm91dCBmbG9hdCBhcnJbNF0pIHsgc2V0KGFyciwgLWdldChh
cnIpKTsgfQorCQkJYm9vbCB0ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZlYzQgcmVmKSB7IHJldHVy
biAoYWJzRGlmZihnZXQoYXJyKSwgcmVmKSA8IDAuMSk7IH0KKwkJCWJvb2wgaXNFcXVhbCAoaW4g
ZmxvYXQgYVs0XSwgaW4gZmxvYXQgYls0XSkgeyByZXR1cm4gKGFic0RpZmYoZ2V0KGEpLCBnZXQo
YikpIDwgMC4xKTsgfQorCQkiIgorCWVuZAorCisJY2FzZSBjb3B5X2xvY2FsX2luX29uX2NhbGwK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJZGVzYyAiQ2hlY2sgdGhhdCBsb2NhbCAnaW4nIGFyZ3VtZW50
cyBhcmUgY29waWVkIG9uIGNhbGwgYW5kIGRvbid0IGFsaWFzLiIKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcu
NSwgMTIuMTI1LCAtMC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQo
MC4wLCAtMS4wLCAtMi4wLCA0LjApIHwgdmVjNCg3LjUsIC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2ZWM0IGdldCAoaW4gZmxvYXQg
YXJyWzRdKTsKKwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCk7CisJCQl2
b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKTsKKwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQg
YXJyWzRdLCB2ZWM0IHJlZik7CisJCQlib29sIGlzRXF1YWwgKGluIGZsb2F0IGFbNF0sIGluIGZs
b2F0IGJbNF0pOworCisJCQlmbG9hdCBmdW5jIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRd
KQorCQkJeworCQkJCWFbMF0gPSAyLjEyMzsKKwkJCQlhWzJdID0gLTQuMTIzOworCQkJCXJldHVy
biBpc0VxdWFsKGEsIGIpID8gMS4wIDogLTEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQlmbG9hdCBhcnJbNF07CisJCQkJc2V0KGFyciwgaW4wKTsKKwkJCQlvdXQwID0gaW4w
ICogZnVuYyhhcnIsIGFycik7CisJCQkJJHtPVVRQVVR9CisJCQl9CisKKwkJCWZsb2F0IGFic0Rp
ZmYgKHZlYzQgYSwgdmVjNCBiKSB7IHZlYzQgZCA9IGFicyhhIC0gYik7IHJldHVybiBtYXgobWF4
KGQueCwgZC55KSwgbWF4KGQueiwgZC53KSk7IH0KKwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBhcnJb
NF0pIHsgcmV0dXJuIHZlYzQoYXJyWzBdLCBhcnJbMV0sIGFyclsyXSwgYXJyWzNdKTsgfQorCQkJ
dm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZlYzQgdmFsKSB7IGFyclswXSA9IHZhbC54OyBh
cnJbMV0gPSB2YWwueTsgYXJyWzJdID0gdmFsLno7IGFyclszXSA9IHZhbC53OyB9CisJCQl2b2lk
IG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKSB7IHNldChhcnIsIC1nZXQoYXJyKSk7IH0KKwkJ
CWJvb2wgdGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZikgeyByZXR1cm4gKGFic0RpZmYo
Z2V0KGFyciksIHJlZikgPCAwLjEpOyB9CisJCQlib29sIGlzRXF1YWwgKGluIGZsb2F0IGFbNF0s
IGluIGZsb2F0IGJbNF0pIHsgcmV0dXJuIChhYnNEaWZmKGdldChhKSwgZ2V0KGIpKSA8IDAuMSk7
IH0KKwkJIiIKKwllbmQKKworCWNhc2UgY29weV9nbG9iYWxfaW5fb25fY2FsbAorCQl2ZXJzaW9u
IDMwMCBlcworCQlkZXNjICJDaGVjayB0aGF0IGdsb2JhbCAnaW4nIGFyZ3VtZW50cyBhcmUgY29w
aWVkIG9uIGNhbGwgYW5kIGRvbid0IGFsaWFzLiIKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgMi4wLCAtNC4wKSB8IHZlYzQoLTcuNSwgMTIuMTI1
LCAtMC4yNSwgMTYuMCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAJPSBbIHZlYzQoMC4wLCAtMS4w
LCAtMi4wLCA0LjApIHwgdmVjNCg3LjUsIC0xMi4xMjUsIDAuMjUsIC0xNi4wKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2ZWM0IGdldCAoaW4gZmxvYXQgYXJyWzRdKTsK
KwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCk7CisJCQl2b2lkIG5lZ2F0
ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKTsKKwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2
ZWM0IHJlZik7CisJCQlib29sIGlzRXF1YWwgKGluIGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0p
OworCisJCQlmbG9hdCBmdW5jIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRdKQorCQkJewor
CQkJCWFbMF0gPSAyLjEyMzsKKwkJCQlhWzJdID0gLTQuMTIzOworCQkJCXJldHVybiBpc0VxdWFs
KGEsIGIpID8gMS4wIDogLTEuMDsKKwkJCX0KKworCQkJZmxvYXQgYXJyWzRdOworCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCXNldChhcnIsIGluMCk7CisJCQkJb3V0MCA9IGluMCAqIGZ1bmMo
YXJyLCBhcnIpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCisJCQlmbG9hdCBhYnNEaWZmICh2ZWM0
IGEsIHZlYzQgYikgeyB2ZWM0IGQgPSBhYnMoYSAtIGIpOyByZXR1cm4gbWF4KG1heChkLngsIGQu
eSksIG1heChkLnosIGQudykpOyB9CisJCQl2ZWM0IGdldCAoaW4gZmxvYXQgYXJyWzRdKSB7IHJl
dHVybiB2ZWM0KGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7IH0KKwkJCXZvaWQgc2V0
IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCkgeyBhcnJbMF0gPSB2YWwueDsgYXJyWzFdID0g
dmFsLnk7IGFyclsyXSA9IHZhbC56OyBhcnJbM10gPSB2YWwudzsgfQorCQkJdm9pZCBuZWdhdGUg
KGlub3V0IGZsb2F0IGFycls0XSkgeyBzZXQoYXJyLCAtZ2V0KGFycikpOyB9CisJCQlib29sIHRl
c3QgKGluIGZsb2F0IGFycls0XSwgdmVjNCByZWYpIHsgcmV0dXJuIChhYnNEaWZmKGdldChhcnIp
LCByZWYpIDwgMC4xKTsgfQorCQkJYm9vbCBpc0VxdWFsIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9h
dCBiWzRdKSB7IHJldHVybiAoYWJzRGlmZihnZXQoYSksIGdldChiKSkgPCAwLjEpOyB9CisJCSIi
CisJZW5kCisKKwljYXNlIGNvcHlfbG9jYWxfaW5vdXRfb25fY2FsbAorCQl2ZXJzaW9uIDMwMCBl
cworCQlkZXNjICJDaGVjayB0aGF0IGxvY2FsICdpbicgYXJndW1lbnRzIGFyZSBjb3BpZWQgb24g
Y2FsbCBhbmQgZG9uJ3QgYWxpYXMuIgorCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAJ
CT0gWyB2ZWM0KDAuMCwgMS4wLCAyLjAsIC00LjApIHwgdmVjNCgtNy41LCAxMi4xMjUsIC0wLjI1
LCAxNi4wKSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MAk9IFsgdmVjNCgwLjAsIC0xLjAsIC0yLjAs
IDQuMCkgfCB2ZWM0KDcuNSwgLTEyLjEyNSwgMC4yNSwgLTE2LjApIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBhcnJbNF0pOworCQkJdm9p
ZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZlYzQgdmFsKTsKKwkJCXZvaWQgbmVnYXRlIChpbm91
dCBmbG9hdCBhcnJbNF0pOworCQkJYm9vbCB0ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZlYzQgcmVm
KTsKKwkJCWJvb2wgaXNFcXVhbCAoaW4gZmxvYXQgYVs0XSwgaW4gZmxvYXQgYls0XSk7CisKKwkJ
CWZsb2F0IGZ1bmMgKGlub3V0IGZsb2F0IGFbNF0sIGlub3V0IGZsb2F0IGJbNF0pCisJCQl7CisJ
CQkJbmVnYXRlKGEpOworCQkJCXJldHVybiBpc0VxdWFsKGEsIGIpID8gMS4wIDogLTEuMDsKKwkJ
CX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlmbG9hdCBhcnJbNF07CisJCQkJc2V0KGFy
ciwgaW4wKTsKKwkJCQlmbG9hdCBtID0gZnVuYyhhcnIsIGFycik7IC8vIHJldHVybnMgLTEuMAor
CQkJCWZsb2F0IG4gPSBmbG9hdCh0ZXN0KGFyciwgaW4wKSB8fCB0ZXN0KGFyciwgLWluMCkpOwor
CQkJCW91dDAgPSBpbjAgKiBtICogbjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKworCQkJZmxvYXQg
YWJzRGlmZiAodmVjNCBhLCB2ZWM0IGIpIHsgdmVjNCBkID0gYWJzKGEgLSBiKTsgcmV0dXJuIG1h
eChtYXgoZC54LCBkLnkpLCBtYXgoZC56LCBkLncpKTsgfQorCQkJdmVjNCBnZXQgKGluIGZsb2F0
IGFycls0XSkgeyByZXR1cm4gdmVjNChhcnJbMF0sIGFyclsxXSwgYXJyWzJdLCBhcnJbM10pOyB9
CisJCQl2b2lkIHNldCAob3V0IGZsb2F0IGFycls0XSwgdmVjNCB2YWwpIHsgYXJyWzBdID0gdmFs
Lng7IGFyclsxXSA9IHZhbC55OyBhcnJbMl0gPSB2YWwuejsgYXJyWzNdID0gdmFsLnc7IH0KKwkJ
CXZvaWQgbmVnYXRlIChpbm91dCBmbG9hdCBhcnJbNF0pIHsgc2V0KGFyciwgLWdldChhcnIpKTsg
fQorCQkJYm9vbCB0ZXN0IChpbiBmbG9hdCBhcnJbNF0sIHZlYzQgcmVmKSB7IHJldHVybiAoYWJz
RGlmZihnZXQoYXJyKSwgcmVmKSA8IDAuMSk7IH0KKwkJCWJvb2wgaXNFcXVhbCAoaW4gZmxvYXQg
YVs0XSwgaW4gZmxvYXQgYls0XSkgeyByZXR1cm4gKGFic0RpZmYoZ2V0KGEpLCBnZXQoYikpIDwg
MC4xKTsgfQorCQkiIgorCWVuZAorCisJY2FzZSBjb3B5X2dsb2JhbF9pbm91dF9vbl9jYWxsCisJ
CXZlcnNpb24gMzAwIGVzCisJCWRlc2MgIkNoZWNrIHRoYXQgZ2xvYmFsICdpbicgYXJndW1lbnRz
IGFyZSBjb3BpZWQgb24gY2FsbCBhbmQgZG9uJ3QgYWxpYXMuIgorCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjNCBpbjAJCT0gWyB2ZWM0KDAuMCwgMS4wLCAyLjAsIC00LjApIHwgdmVjNCgtNy41
LCAxMi4xMjUsIC0wLjI1LCAxNi4wKSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MAk9IFsgdmVjNCgw
LjAsIC0xLjAsIC0yLjAsIDQuMCkgfCB2ZWM0KDcuNSwgLTEyLjEyNSwgMC4yNSwgLTE2LjApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBh
cnJbNF0pOworCQkJdm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZlYzQgdmFsKTsKKwkJCXZv
aWQgbmVnYXRlIChpbm91dCBmbG9hdCBhcnJbNF0pOworCQkJYm9vbCB0ZXN0IChpbiBmbG9hdCBh
cnJbNF0sIHZlYzQgcmVmKTsKKwkJCWJvb2wgaXNFcXVhbCAoaW4gZmxvYXQgYVs0XSwgaW4gZmxv
YXQgYls0XSk7CisKKwkJCWZsb2F0IGZ1bmMgKGluIGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0p
CisJCQl7CisJCQkJbmVnYXRlKGEpOworCQkJCXJldHVybiBpc0VxdWFsKGEsIGIpID8gMS4wIDog
LTEuMDsKKwkJCX0KKworCQkJZmxvYXQgYXJyWzRdOworCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCXNldChhcnIsIGluMCk7CisJCQkJZmxvYXQgbSA9IGZ1bmMoYXJyLCBhcnIpOyAvLyByZXR1
cm5zIC0xLjAKKwkJCQlmbG9hdCBuID0gZmxvYXQodGVzdChhcnIsIGluMCkgfHwgdGVzdChhcnIs
IC1pbjApKTsKKwkJCQlvdXQwID0gaW4wICogbSAqIG47CisJCQkJJHtPVVRQVVR9CisJCQl9CisK
KwkJCWZsb2F0IGFic0RpZmYgKHZlYzQgYSwgdmVjNCBiKSB7IHZlYzQgZCA9IGFicyhhIC0gYik7
IHJldHVybiBtYXgobWF4KGQueCwgZC55KSwgbWF4KGQueiwgZC53KSk7IH0KKwkJCXZlYzQgZ2V0
IChpbiBmbG9hdCBhcnJbNF0pIHsgcmV0dXJuIHZlYzQoYXJyWzBdLCBhcnJbMV0sIGFyclsyXSwg
YXJyWzNdKTsgfQorCQkJdm9pZCBzZXQgKG91dCBmbG9hdCBhcnJbNF0sIHZlYzQgdmFsKSB7IGFy
clswXSA9IHZhbC54OyBhcnJbMV0gPSB2YWwueTsgYXJyWzJdID0gdmFsLno7IGFyclszXSA9IHZh
bC53OyB9CisJCQl2b2lkIG5lZ2F0ZSAoaW5vdXQgZmxvYXQgYXJyWzRdKSB7IHNldChhcnIsIC1n
ZXQoYXJyKSk7IH0KKwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQgYXJyWzRdLCB2ZWM0IHJlZikgeyBy
ZXR1cm4gKGFic0RpZmYoZ2V0KGFyciksIHJlZikgPCAwLjEpOyB9CisJCQlib29sIGlzRXF1YWwg
KGluIGZsb2F0IGFbNF0sIGluIGZsb2F0IGJbNF0pIHsgcmV0dXJuIChhYnNEaWZmKGdldChhKSwg
Z2V0KGIpKSA8IDAuMSk7IH0KKwkJIiIKKwllbmQKKworIwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBh
cnJbNF0pOworIwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJyWzRdLCB2ZWM0IHZhbCk7CisjCQkJ
dm9pZCBuZWdhdGUgKGlub3V0IGZsb2F0IGFycls0XSk7CisjCQkJYm9vbCB0ZXN0IChpbiBmbG9h
dCBhcnJbNF0sIHZlYzQgcmVmKTsKKyMJCQlib29sIGlzRXF1YWwgKGluIGZsb2F0IGFbNF0sIGlu
IGZsb2F0IGJbNF0pOworCisjCQkJZmxvYXQgYWJzRGlmZiAodmVjNCBhLCB2ZWM0IGIpIHsgdmVj
NCBkID0gYWJzKGEgLSBiKTsgcmV0dXJuIG1heChtYXgoZC54LCBkLnkpLCBtYXgoZC56LCBkLncp
KTsgfQorIwkJCXZlYzQgZ2V0IChpbiBmbG9hdCBhcnJbNF0pIHsgcmV0dXJuIHZlYzQoYXJyWzBd
LCBhcnJbMV0sIGFyclsyXSwgYXJyWzNdKTsgfQorIwkJCXZvaWQgc2V0IChvdXQgZmxvYXQgYXJy
WzRdLCB2ZWM0IHZhbCkgeyBhcnJbMF0gPSB2YWwueDsgYXJyWzFdID0gdmFsLnk7IGFyclsyXSA9
IHZhbC56OyBhcnJbM10gPSB2YWwudzsgfQorIwkJCXZvaWQgbmVnYXRlIChpbm91dCBmbG9hdCBh
cnJbNF0pIHsgc2V0KGFyciwgLWdldChhcnIpKTsgfQorIwkJCWJvb2wgdGVzdCAoaW4gZmxvYXQg
YXJyWzRdLCB2ZWM0IHJlZikgeyByZXR1cm4gKGFic0RpZmYoZ2V0KGFyciksIHJlZikgPCAwLjEp
OyB9CisjCQkJYm9vbCBpc0VxdWFsIChpbiBmbG9hdCBhWzRdLCBpbiBmbG9hdCBiWzRdKSB7IHJl
dHVybiAoYWJzRGlmZihnZXQoYSksIGdldChiKSkgPCAwLjEpOyB9CisKK2VuZCAjIGFycmF5X2Fy
Z3VtZW50cworCisjZ3JvdXAgcXVhbGlmaWVycyAiRnVuY3Rpb24gUGFyYW1ldGVyIFF1YWxpZmll
cnMiCisjCisjZW5kICMgcXVhbGlmaWVycworCitncm91cCBjb250cm9sX2Zsb3cgIkNvbnRyb2wg
RmxvdyBJbiBGdW5jdGlvbnMiCisKKwljYXNlIHNpbXBsZV9yZXR1cm4KKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0wLjUgfCAxLjUgXTsK
KwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJCQl7CisJCQkJcmV0dXJu
IC1hOworCQkJCWEgPSBhICogLTEuMDsKKwkJCQlyZXR1cm4gMS4wOworCQkJfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX2luX2lmCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwg
MS41IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJ
CWlmIChhICE9IDAuMCkKKwkJCQkJcmV0dXJuIC1hOworCQkJCXJldHVybiAxLjA7CisJCQl9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjAp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZXR1cm5faW5fZWxz
ZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9
IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0xLjUgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkK
KwkJCXsKKwkJCQlpZiAoYSA9PSAwLjApCisJCQkJCXJldHVybiAxLjA7CisJCQkJZWxzZQorCQkJ
CQlyZXR1cm4gLWE7CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl9pbl9sb29wCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMC41IHwgMS41IF07CisJ
CQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgMC41IHwgLTEuNSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChmbG9hdCBhKQorCQkJeworCQkJCXdoaWxlIChh
IDwgMTAwLjApCisJCQkJCXJldHVybiAtYTsKKwkJCQlyZXR1cm4gMS4wOworCQkJfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX2luX2xvb3BfaWYK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBb
IC0wLjUgfCAxLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJ
CQl7CisJCQkJd2hpbGUgKGEgPCAxMDAuMCkKKwkJCQl7CisJCQkJCWEgPSAtYTsKKwkJCQkJaWYg
KGEgIT0gMC4wKQorCQkJCQkJcmV0dXJuIGE7CisJCQkJCWVsc2UKKwkJCQkJCXJldHVybiAtMS4w
OworCQkJCX0KKwkJCQlyZXR1cm4gMS4wOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX2FmdGVyX2xvb3AKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0wLjUgfCAxLjUgXTsKKwkJ
CW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGEpCisJCQl7CisJCQkJZm9yIChpbnQg
aSA9IDA7IGkgPCA1OyBpKyspCisJCQkJCWEgPSAtYTsKKwkJCQlyZXR1cm4gYTsKKwkJCX0KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJldHVybl9hZnRlcl9i
cmVhaworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4w
CQk9IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0xLjUg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQg
YSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKKwkJCQl7CisJCQkJCWEg
PSAtYTsKKwkJCQkJaWYgKGkgPT0gNCkKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlyZXR1cm4g
YTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJl
dHVybl9hZnRlcl9jb250aW51ZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgZmxvYXQgaW4wCQk9IFsgLTAuNSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJ
PSBbIDAuNSB8IC0xLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxv
YXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykK
KwkJCQl7CisJCQkJCWlmIChpID09IDQpCisJCQkJCQljb250aW51ZTsKKwkJCQkJYSA9IC1hOwor
CQkJCX0KKwkJCQlyZXR1cm4gYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHJldHVybl9pbl9uZXN0ZWRfbG9vcAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgLTAuNSB8IDEuNSBdOworCQkJ
b3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0xLjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsKKwkJCQlmb3IgKGludCBp
ID0gMDsgaSA8IDY7IGkrKykKKwkJCQl7CisJCQkJCWEgPSAtYTsKKwkJCQkJZm9yIChpbnQgaiA9
IDA7IGogPCA0OyBqKyspCisJCQkJCXsKKwkJCQkJCWEgPSAtYTsKKwkJCQkJCWlmIChpID09IDEp
CisJCQkJCQkJcmV0dXJuIGE7CisJCQkJCX0KKwkJCQkJaWYgKGkgPT0gNCkKKwkJCQkJCXJldHVy
biAxLjA7CisJCQkJfQorCQkJCXJldHVybiAxLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZXR1cm5fYWZ0ZXJfbG9vcF9zZXF1ZW5jZQorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgLTAu
NSB8IDEuNSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDAuNSB8IC0xLjUgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoZmxvYXQgYSkKKwkJCXsK
KwkJCQlpbnQgaTsKKwkJCQlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSAvLyBuZWdhdGUgYQorCQkJ
CXsKKwkJCQkJYSA9IC1hOworCQkJCQlpZiAoaSA9PSA0KQorCQkJCQkJYSA9IC1hOworCQkJCX0K
KworCQkJCWZvciAoOyBpIDwgMTA7IGkrKykgLy8ga2VlcCBhCisJCQkJeworCQkJCQlpZiAoaSA9
PSA4KQorCQkJCQkJY29udGludWU7CisJCQkJCWVsc2UgaWYgKGkgPT0gOSkKKwkJCQkJCWJyZWFr
OworCQkJCQlhID0gLWE7CisJCQkJfQorCisJCQkJcmV0dXJuIGE7CisJCQl9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjApOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtaXhlZF9yZXR1cm5fYnJlYWtfY29u
dGludWUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGZsb2F0IGlu
MAkJPSBbIC0wLjUgfCAxLjUgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0
IGEpCisJCQl7CisJCQkJaW50IGk7CisJCQkJZm9yIChpID0gMDsgaSA8IDY7IGkrKykKKwkJCQl7
CisJCQkJCWlmIChpID09IDApCisJCQkJCQljb250aW51ZTsKKwkJCQkJZWxzZSBpZiAoaSA9PSAx
KQorCQkJCQl7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoaSA9PSAzKQorCQkJCQkJYnJlYWs7CisJ
CQkJCWVsc2UKKwkJCQkJCXJldHVybiBhOworCQkJCQlhID0gLWE7CisJCQkJfQorCisJCQkJcmV0
dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBmdW5jKGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2Vu
ZCAjIGNvbnRyb2xfZmxvdworCitncm91cCBtaXNjICJNaXNjZWxsYW5lb3VzIgorCisJY2FzZSBt
dWx0aV9hcmdfZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzQgaW4wCQk9IFsgdmVjNCgwLjAsIDEuMCwgLTIuMCwgMC41KSB8IHZlYzQoMi4wLCAyLjUs
IDQuMCwgLTcuMCkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAwLjUgfCAtMS41IF07ICMg
LXN1bShpbjApCisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IHN1bSh2
ZWM0IHYpIHsgcmV0dXJuICh2LnggKyB2LnkgKyB2LnogKyB2LncpOyB9CisKKwkJCWZsb2F0IGZ1
bmMgKGZsb2F0IGEsIHZlYzMgYiwgdmVjMiBjLCB2ZWMyIGQsIHZlYzQgZSkKKwkJCXsKKwkJCQly
ZXR1cm4gLXN1bSh2ZWM0KGEsIGIpICsgdmVjNChjLCBkKSkgKyBzdW0oZSk7CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjAueSwg
aW4wLnh6dywgaW4wLnd6LCBpbjAueXgsIGluMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG11bHRpX2FyZ19pbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMAkJPSBbIGl2ZWM0KC0xLCAwLCAyLCAyKSB8IGl2ZWM0
KDEsIDQsIC04LCAyKSBdOworCQkJb3V0cHV0IGludCBvdXQwCQk9IFsgLTMgfCAxIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CWludCBzdW0oaXZlYzQgdikgeyByZXR1cm4gKHYueCArIHYueSArIHYueiArIHYudyk7IH0KKwor
CQkJaW50IGZ1bmMgKGludCBhLCBpdmVjMyBiLCBpdmVjMiBjLCBpdmVjMiBkLCBpdmVjNCBlKQor
CQkJeworCQkJCXJldHVybiAtc3VtKGl2ZWM0KGEsIGIpICsgaXZlYzQoYywgZCkpICsgc3VtKGUp
OworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGZ1bmMoaW4wLnksIGluMC54encsIGluMC53eiwgaW4wLnl4LCBpbjApOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVudF9ldmFsX29yZGVyXzEKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAJPSBbICAwIHwgMSB8
IDMgfCA1IF07CisJCQlvdXRwdXQgaW50IG91dDAJPSBbIC0xIHwgNSB8IDExIHwgMTcgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5jIChmbG9hdCBhLCBpbnQgYiwg
Ym9vbCBjLCBpbnQgZCkKKwkJCXsKKwkJCQlpZiAoYykKKwkJCQkJcmV0dXJuIGIgKyBpbnQoYSkg
KyBkOworCQkJCWVsc2UKKwkJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHYwID0gZmxvYXQoaW4wKTsKKwkJCQlpbnQg
djEgPSBpbjA7CisJCQkJb3V0MCA9IGZ1bmMoKHYwICs9IDEuMCksIHYxKyssICh2MCA+IDEuNSks
IHYxKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRf
ZXZhbF9vcmRlcl8yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
bnQgaW4wCT0gWyAwIHwgLTEgfCAzIHwgNSBdOworCQkJb3V0cHV0IGludCBvdXQwCT0gWyAzIHwg
LTEgfCA5IHwgMTMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBnOwor
CisJCQlpbnQgbW9kRyAoaW50IHYpCisJCQl7CisJCQkJZyArPSB2OworCQkJCXJldHVybiB2Owor
CQkJfQorCisJCQlpbnQgZnVuYyAoZmxvYXQgYSwgaW50IGIsIGJvb2wgYywgaW50IGQpCisJCQl7
CisJCQkJaWYgKGMpCisJCQkJCXJldHVybiBiICsgaW50KGEpICsgZDsKKwkJCQllbHNlCisJCQkJ
CXJldHVybiAtMTsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gZnVuYyhmbG9hdChnID0gaW4wKSwgbW9kRygyKSwgLS1nID4gMCwgZyk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIG1pc2MKKworZ3JvdXAgaW52
YWxpZCAiSW52YWxpZCBGdW5jdGlvbnMiCisJY2FzZSBicmVha19pbl9ib2R5CisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIGZ1bmMgKCkKKwkJCXsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJdm9pZCBtYWluICgp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgY29udGludWVfaW5fYm9keQorCQl2ZXJzaW9uIDMwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5j
ICgpCisJCQl7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHJldHVybl92YWx1ZV9mcm9tX3ZvaWRfZnVuY3Rpb24KKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgZnVuYyAoKQorCQkJeworCQkJCXJldHVybiAxLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAo
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGV4dHJhX2FyZ3VtZW50cworCQl2ZXJzaW9uIDMwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5j
IChmbG9hdCBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQlmdW5j
KDEuMCwgMi4wKTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2FyZ3VtZW50cworCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBmdW5jIChmbG9hdCBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJ
CQlmdW5jKCk7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2luZ19hcmd1bWVudF90eXBlCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIGZ1bmMgKGluIGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGFyZ3VtZW50X2Jhc2V0eXBlX21pc21hdGNoCisJCXZlcnNpb24gMzAwIGVzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQl9CisKKwkJCXZv
aWQgbWFpbiAoKQorCQkJeworCQkJCWZ1bmMoMik7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRfc2NhbGFy
X3ZlY3Rvcl9taXNtYXRjaAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jICh2ZWMyIGYpCisJCQl7CisJ
CQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZ1bmMoMi4wKTsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBh
cmd1bWVudF92ZWN0b3Jfc2l6ZV9taXNtYXRjaAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jICh2ZWMz
IGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZ1bmModmVjMigy
LjApKTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBkdXBsaWNhdGVfZnVuY3Rpb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVu
YyAodmVjMyBmKTsKKworCQkJdm9pZCBmdW5jICh2ZWMzIGYpCisJCQl7CisJCQl9CisKKwkJCXZv
aWQgZnVuYyAodmVjMyBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBwcm90b3R5cGVfbWlzbWF0Y2hfcmV0dXJuX3R5cGUKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
ZnVuYyAodmVjMyBmKTsKKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKworCQkJZmxvYXQgZnVuYyAodmVjMyBmKQor
CQkJeworCQkJCXJldHVybiBmLng7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHByb3RvdHlw
ZV91bnNwZWNpZmllZF9hcnJheV9zaXplCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKHZlYzMgZltd
KTsKKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY2FsbF9taXNtYXRjaF9hcmd1
bWVudF9hcnJheV9zaXplCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKHZlYzMgZlszXSk7CisJCQl2
b2lkIGZ1bmMgKHZlYzMgZlszXSkKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7
CisJCQkJdmVjMyBhcnJheVs0XTsKKwkJCQlmdW5jKGFycmF5KTsKKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwcm90b3R5
cGVfbWlzbWF0Y2hfYXJndW1lbnRfY29uc3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAodmVjMyBm
KTsKKwkJCXZvaWQgZnVuYyAoY29uc3QgdmVjMyBmKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1h
aW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBwcm90b3R5cGVfbWlzbWF0Y2hfYXJndW1lbnRfYXJyYXlf
Y29uc3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAodmVjMyBmWzNdKTsKKwkJCXZvaWQgZnVuYyAo
Y29uc3QgdmVjMyBmWzNdKQorCQkJeworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBwcm90b3R5cGVfbWlzbWF0Y2hfYXJyYXlfaW5vdXQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
ZnVuYyAob3V0IHZlYzMgZik7CisJCQl2b2lkIGZ1bmMgKGlub3V0IHZlYzMgZikKKwkJCXsKKwkJ
CX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2luZ19yZXR1cm5fdHlw
ZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJZnVuYyAoZmxvYXQgZik7CisJCQlmdW5jIChpbm91dCB2ZWMzIGZbM10p
CisJCQl7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNhbGxfYmVm
b3JlX2RlZmluaXRpb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZ1bmMo
MS4wKTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCisJ
CQl2b2lkIGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQl9CisKKwkJIiIKKwllbmQKKworCWNhc2Ug
YXJndW1lbnRfcHJlY2lzaW9uX292ZXJsb2FkCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChsb3dw
IGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJuIGY7CisJCQl9CisKKwkJCWZsb2F0IGZ1bmMgKG1l
ZGl1bXAgZmxvYXQgZikKKwkJCXsKKwkJCQlyZXR1cm4gZjsKKwkJCX0KKworCQkJdm9pZCBtYWlu
ICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRfaW5fb3V0X292ZXJsb2FkCisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIGZ1bmMgKGluIGZsb2F0IGYpCisJCQl7CisJCQl9CisKKwkJCXZvaWQgZnVuYyAob3V0
IGZsb2F0IGYpCisJCQl7CisJCQkJZiA9IDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJ
CQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYXJndW1lbnRfaW5faW5vdXRfb3ZlcmxvYWQKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgZnVuYyAoaW4gZmxvYXQgZikKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBmdW5jIChpbm91dCBm
bG9hdCBmKQorCQkJeworCQkJCWYgPSAtZjsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgYXJndW1lbnRfb3V0X2lub3V0X292ZXJsb2FkCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IGZ1bmMgKG91dCBmbG9hdCBmKQorCQkJeworCQkJCWYgPSAtMS4wOworCQkJfQorCisJCQl2b2lk
IGZ1bmMgKGlub3V0IGZsb2F0IGYpCisJCQl7CisJCQkJZiA9IC1mOworCQkJfQorCisJCQl2b2lk
IG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZXR1cm5fdHlwZV9vdmVybG9hZAorCQl2ZXJzaW9u
IDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJZmxvYXQgZnVuYyAoZmxvYXQgZikKKwkJCXsKKwkJCQlyZXR1cm4gZjsKKwkJCX0KKworCQkJ
aW50IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0dXJuIGludChmKTsKKwkJCX0KKworCQkJ
dm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmV0dXJuX3R5cGVfcHJlY2lzaW9uX292ZXJs
b2FkCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQlsb3dwIGZsb2F0IGZ1bmMgKGZsb2F0IGYpCisJCQl7CisJCQkJcmV0
dXJuIGY7CisJCQl9CisKKwkJCW1lZGl1bXAgZmxvYXQgZnVuYyAoZmxvYXQgZikKKwkJCXsKKwkJ
CQlyZXR1cm4gZjsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmV0
dXJuX3R5cGVfY29uc3Rfb3ZlcmxvYWQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYp
CisJCQl7CisJCQkJcmV0dXJuIGY7CisJCQl9CisKKwkJCWNvbnN0IGZsb2F0IGZ1bmMgKGZsb2F0
IGYpCisJCQl7CisJCQkJcmV0dXJuIGY7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHJldHVybl93aXRob3V0X3ZhbHVlCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChm
bG9hdCBmKQorCQkJeworCQkJCXJldHVybjsKKwkJCQlyZXR1cm4gMS4wOworCQkJfQorCisJCQl2
b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2NhbF9mdW5jdGlvbl9wcm90b3R5cGUKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWZsb2F0IGZ1bmMgKGZsb2F0IGYpOwor
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbG9jYWxfZnVuY3Rpb25fZGVmaW5pdGlvbgorCQl2ZXJzaW9uIDMwMCBlcwor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluICgpCisJCQl7CisJCQkJZmxvYXQgZnVuYyAoZmxvYXQgZikKKwkJCQl7CisJCQkJCXJldHVy
biAxLjA7CisJCQkJfQorCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbmFtZV90eXBlX2NvbmZsaWN0CisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlzdHJ1Y3QgZm9vIHsgZmxvYXQgYTsgfQorCisJCQlmbG9hdCBmb28gKGZsb2F0IGYpCisJCQl7
CisJCQkJcmV0dXJuIDEuMDsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgY29uc3Rfb3ZlcmxvYWQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYyAodmVjMyBmKQorCQkJewor
CQkJfQorCisJCQl2b2lkIGZ1bmMgKGNvbnN0IHZlYzMgZikKKwkJCXsKKwkJCX0KKworCQkJdm9p
ZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5pZm9ybV9sb2NhbAorCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBmdW5jICh2ZWMzIGYpCisJCQl7CisJCQkJdW5pZm9ybSBmbG9hdCB1OworCQkJfQorCisJCQl2
b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbl9sb2NhbAorCQl2ZXJzaW9uIDMwMCBlcwor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBm
dW5jICh2ZWMzIGYpCisJCQl7CisJCQkJaW4gZmxvYXQgdjsKKwkJCX0KKworCQkJdm9pZCBtYWlu
ICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2Ugb3V0X2xvY2FsCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIGZ1bmMgKHZl
YzMgZikKKwkJCXsKKwkJCQlpbiBmbG9hdCBhOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJ
CXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpbm91dF9sb2NhbAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jICh2ZWMzIGYp
CisJCQl7CisJCQkJaW5vdXQgZmxvYXQgYTsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdW5pZm9ybV9hcmd1bWVudAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBmdW5jICh1bmlm
b3JtIHZlYzMgZikKKwkJCXsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgdW5pZm9ybV9yZXR1cm5fdHlwZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdW5pZm9ybSBmbG9hdCBmdW5jICh2
ZWMzIGYpCisJCQl7CisJCQkJcmV0dXJuIGYueDsKKwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJ
CQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW5fcmV0dXJuX3R5cGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWluIGZsb2F0IGZ1bmMg
KHZlYzMgZikKKwkJCXsKKwkJCQlyZXR1cm4gZi54OworCQkJfQorCisJCQl2b2lkIG1haW4gKCkK
KwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jKHZlYzMoMS4wKSkp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBvdXRfcmV0dXJuX3R5cGUKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CW91dCBmbG9hdCBmdW5jICh2ZWMzIGYpCisJCQl7CisJCQkJcmV0dXJuIGYueDsKKwkJCX0KKwor
CQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
ZnVuYyh2ZWMzKDEuMCkpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5vdXRfcmV0dXJu
X3R5cGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCWlub3V0IGZsb2F0IGZ1bmMgKHZlYzMgZikKKwkJCXsKKwkJCQly
ZXR1cm4gZi54OworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jKHZlYzMoMS4wKSkpOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBtYWluX2ludmFsaWRfcmV0dXJuX3R5cGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IG1haW4g
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtYWluX2hhc19hcmd1bWVudHMKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbiAoZmxvYXQgZikKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgx
LjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtYWluX21pc3NpbmdfcmV0dXJuX3R5cGUK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCW1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB3cml0ZV9jb25zdF9hcmcKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWZsb2F0IGZ1bmMgKGNvbnN0IGZsb2F0IGYpCisJCQl7CisJCQkJZiA9IDEuMDsK
KwkJCX0KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugd3JpdGVfY29uc3RfYXJy
YXlfYXJnCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChjb25zdCBmbG9hdCBmWzNdKQorCQkJewor
CQkJCWZbMF0gPSAxLjA7CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVzZV9jb25zdF9hcmdfaW5fY29uc3RfZXhwcgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgZnVuYyAoY29u
c3QgaW50IGkpCisJCQl7CisJCQkJY29uc3QgaW50IHogPSBpKzE7CisJCQkJcmV0dXJuIGZsb2F0
KHopOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNChmdW5jKDEpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlX2Nv
bnN0X2FyZ19hc19hcnJheV9zaXplCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBmdW5jIChjb25zdCBpbnQg
aSkKKwkJCXsKKwkJCQlmbG9hdCBmW2ldOworCQkJCWZbMF0gPSAxLjA7CisJCQkJcmV0dXJuIGZb
MF07CisJCQl9CisKKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KGZ1bmMoMSkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBvdmVybG9h
ZF9idWlsdGluX2Z1bmN0aW9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgc2luIChpbnQgeCkKKwkJCXsKKwkJ
CQlyZXR1cm4gaW50KHNpbihmbG9hdCh4KSkpOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJ
CXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChzaW4oMSkpOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSByZWRlZmluZV9idWlsdGluX2Z1bmN0aW9uCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlm
bG9hdCBzaW4gKGZsb2F0IHgpCisJCQl7CisJCQkJcmV0dXJuIDAuMDsKKwkJCX0KKworCQkJdm9p
ZCBtYWluICgpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoc2luKDEu
MCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiYXNpY19yZWN1cnNpb24KKwkJdmVyc2lv
biAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCWZsb2F0IGZpYiAoZmxvYXQgeCkKKwkJCXsKKwkJCQlpZiAoeCA8PSAxLjApCisJCQkJCXJl
dHVybiB4OworCQkJCWVsc2UKKwkJCQkJcmV0dXJuIGZpYih4LTIuMCkgKyBmaWIoeC0xLjApOwor
CQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChmaWIoNS4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHNpbXBsZV90YWls
X3JlY3Vyc2lvbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJZmxvYXQgcmVjIChmbG9hdCB4KQorCQkJeworCQkJCWlm
ICh4IDw9IDAuMCkKKwkJCQkJcmV0dXJuIDAuMDsKKwkJCQllbHNlCisJCQkJCXJldHVybiByZWMo
eC0xLjApOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNChyZWMoNS4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGR5
bmFtaWNfY29uZGl0aW9uYWxfcmVjdXJzaW9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdW5pZm9ybSBmbG9hdCB1YTsK
KwkJCXVuaWZvcm0gZmxvYXQgdWI7CisKKwkJCWZsb2F0IGZ1bmNBIChmbG9hdCB4KTsKKwkJCWZs
b2F0IGZ1bmNCIChmbG9hdCB4KTsKKworCQkJZmxvYXQgZnVuY0EgKGZsb2F0IHgpCisJCQl7CisJ
CQkJaWYgKHViK3ggPiAwLjApCisJCQkJCWZ1bmNCKHgqMi4wKTsKKwkJCQllbHNlCisJCQkJCXJl
dHVybiB1YjsKKwkJCX0KKworCQkJZmxvYXQgZnVuY0IgKGZsb2F0IHgpCisJCQl7CisJCQkJcmV0
dXJuIHNxcnQoZnVuY0EoeCkpOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkk
e1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jQih1YSkpOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBkeW5hbWljX2xvb3BfcmVjdXJzaW9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdW5pZm9ybSBmbG9h
dCB1YTsKKwkJCXVuaWZvcm0gZmxvYXQgdWI7CisKKwkJCWZsb2F0IGZ1bmNBIChmbG9hdCB4KTsK
KwkJCWZsb2F0IGZ1bmNCIChmbG9hdCB4KTsKKworCQkJZmxvYXQgZnVuY0EgKGZsb2F0IHgpCisJ
CQl7CisJCQkJZm9yIChmbG9hdCB6ID0gMC4wOyB6IDwgdWIreDsgeisrKQorCQkJCXsKKwkJCQkJ
aWYgKHogPiAyLjApCisJCQkJCQlmdW5jQih6KjIuMCk7CisJCQkJCWVsc2UKKwkJCQkJCXJldHVy
biB6OworCQkJCX0KKwkJCX0KKworCQkJZmxvYXQgZnVuY0IgKGZsb2F0IHgpCisJCQl7CisJCQkJ
cmV0dXJuIHNxcnQoZnVuY0EoeCkpOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jQih1YSkpOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBkeW5hbWljX3N3aXRjaF9yZWN1cnNpb24KKwkJdmVyc2lvbiAzMDAgZXMK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl1bmlmb3Jt
IGZsb2F0IHVhOworCQkJdW5pZm9ybSBtZWRpdW1wIGludCB1YjsKKworCQkJZmxvYXQgZnVuY0Eg
KGZsb2F0IHgpOworCQkJZmxvYXQgZnVuY0IgKGZsb2F0IHgpOworCisJCQlmbG9hdCBmdW5jQSAo
ZmxvYXQgeCkKKwkJCXsKKwkJCQlzd2l0Y2ggKHViICsgaW50KHgpKQorCQkJCXsKKwkJCQkJY2Fz
ZSAwOiByZXR1cm4gdWEtMS4wOworCQkJCQljYXNlIDE6IHJldHVybiB1YTsKKwkJCQkJY2FzZSAy
OiByZXR1cm4gZnVuY0IoeCoyLjApOworCQkJCQlkZWZhdWx0OiByZXR1cm4gMC4wOworCQkJCX0K
KwkJCX0KKworCQkJZmxvYXQgZnVuY0IgKGZsb2F0IHgpCisJCQl7CisJCQkJcmV0dXJuIHNxcnQo
ZnVuY0EoeCkpOworCQkJfQorCisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jQih1YSkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBtb2RpZnlfY29uc3RfYXJnCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQlpbnQgZnVuYyAoY29uc3QgaW50IGEpCisJCQl7CisJCQkJYSA9IC1hOworCQkJCXJldHVybiAy
ICogYTsKKwkJCX0KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNChmdW5jKDMpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW5pdF9j
b25zdF9sb2NhbF9mcm9tX2NvbnN0X2FyZworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJaW50IGZ1bmMgKGNvbnN0IGludCBhKQorCQkJeworCQkJCWNvbnN0IGludCBiID0g
LWE7CisJCQkJcmV0dXJuIDIgKiBiOworCQkJfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMykpOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBhcnJheV9zaXplX2Zyb21fY29uc3RfYXJnCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQlpbnQgZnVuYyAoY29uc3QgaW50IGEpCisJCQl7CisJCQkJaW50
IGFyclthXTsKKwkJCQlhcnJbMV0gPSAzOworCQkJCXJldHVybiBhcnJbMV07CisJCQl9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoZnVu
YygzKSk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2lu
dmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGMxMzM4MWQzOWUzNWVi
ZGFiNTM5ZGM4MjJkYjlmZThjZjI2N2M1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMv
aW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9ucy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAnaW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9ucyc7Citk
ZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RV
dGlscy5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1
YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZh
cnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0
KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmls
dGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOwor
ICAgIH0KK30KKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUs
IGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMy9zaGFkZXJzL2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMudGVzdCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJz
L2ludmFsaWRfdGV4dHVyZV9mdW5jdGlvbnMudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGQ2NWIyMmVkZWQ2
MDc3MWY0ZGMwNzE1ZGE4OTMwM2NhY2VmMWQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRl
cnMvaW52YWxpZF90ZXh0dXJlX2Z1bmN0aW9ucy50ZXN0CkBAIC0wLDAgKzEsMTE0MyBAQAorIyBX
QVJOSU5HOiBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERvIE5PVCBtb2RpZnkgaXQgbWFu
dWFsbHksIGJ1dCByYXRoZXIKKyMgbW9kaWZ5IHRoZSBnZW5lcmF0aW5nIHNjcmlwdCBmaWxlLiBP
dGhlcndpc2UgY2hhbmdlcyB3aWxsIGJlIGxvc3QhCisKK2Nhc2UgdGV4dHVyZV9zYW1wbGVyM2Rz
aGFkb3dfdmVjNAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMw
MCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjNEU2hh
ZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmUocywgdmVjNCgwKSkpOworCQkJJHtPVVRQVVR9CisJ
CX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVfc2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVjNF9mbG9h
dAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJ
Ym90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXlTaGFkb3cg
czsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFH
X0NPTE9SfSA9IHZlYzQodGV4dHVyZShzLCB2ZWM0KDApLCBmbG9hdCgwKSkpOworCQkJJHtPVVRQ
VVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9qX3NhbXBsZXJjdWJlX3ZlYzQKKwll
eHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGgg
IiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RF
Q0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KHRleHR1cmVQcm9qKHMsIHZlYzQoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAor
Y2FzZSB0ZXh0dXJlcHJval9pc2FtcGxlcmN1YmVfdmVjNAorCWV4cGVjdCBjb21waWxlX2ZhaWwK
Kwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlm
b3JtIG1lZGl1bXAgaXNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtT
RVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qKHMsIHZl
YzQoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlcHJval91
c2FtcGxlcmN1YmVfdmVjNAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJz
aW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgdXNhbXBs
ZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qKHMsIHZlYzQoMCkpKTsKKwkJCSR7T1VU
UFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlcHJval9zYW1wbGVyY3ViZV92ZWM0X2Zs
b2F0CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisK
Kwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyQ3ViZSBzOworCisJ
CXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNCh0ZXh0dXJlUHJvaihzLCB2ZWM0KDApLCBmbG9hdCgwKSkpOworCQkJJHtPVVRQVVR9
CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9qX2lzYW1wbGVyY3ViZV92ZWM0X2Zsb2F0
CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwli
b3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
JHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBpc2FtcGxlckN1YmUgczsKKworCQl2
b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQodGV4dHVyZVByb2oocywgdmVjNCgwKSwgZmxvYXQoMCkpKTsKKwkJCSR7T1VUUFVUfQor
CQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlcHJval91c2FtcGxlcmN1YmVfdmVjNF9mbG9hdAor
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90
aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7
REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgdXNhbXBsZXJDdWJlIHM7CisKKwkJdm9p
ZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KHRleHR1cmVQcm9qKHMsIHZlYzQoMCksIGZsb2F0KDApKSk7CisJCQkke09VVFBVVH0KKwkJ
fQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXByb2pfc2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVjNAor
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90
aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7
REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXlTaGFkb3cgczsK
KworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQodGV4dHVyZVByb2oocywgdmVjNCgwKSkpOworCQkJJHtPVVRQVVR9CisJCX0K
KwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9qX3NhbXBsZXIyZGFycmF5c2hhZG93X3ZlYzRfZmxv
YXQKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKwor
CWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyREFycmF5U2hhZG93
IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qKHMsIHZlYzQoMCksIGZsb2F0KDApKSk7CisJCQkk
e09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWxvZF9zYW1wbGVyY3ViZXNoYWRv
d192ZWM0X2Zsb2F0CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24g
MzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyQ3Vi
ZVNoYWRvdyBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlTG9kKHMsIHZlYzQoMCksIGZsb2F0KDApKSk7
CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWxvZF9zYW1wbGVyMmRh
cnJheXNoYWRvd192ZWM0X2Zsb2F0CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQor
CXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBz
YW1wbGVyMkRBcnJheVNoYWRvdyBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9
CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlTG9kKHMsIHZlYzQoMCks
IGZsb2F0KDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZW9m
ZnNldF9zYW1wbGVyY3ViZV92ZWMzX2l2ZWMyCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVl
cyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVk
aXVtcCBzYW1wbGVyQ3ViZSBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlT2Zmc2V0KHMsIHZlYzMoMCks
IGl2ZWMyKDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZW9m
ZnNldF9pc2FtcGxlcmN1YmVfdmVjM19pdmVjMgorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1
ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1l
ZGl1bXAgaXNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0K
KwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVPZmZzZXQocywgdmVjMygw
KSwgaXZlYzIoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJl
b2Zmc2V0X3VzYW1wbGVyY3ViZV92ZWMzX2l2ZWMyCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZh
bHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcwor
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0g
bWVkaXVtcCB1c2FtcGxlckN1YmUgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQ
fQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZU9mZnNldChzLCB2ZWMz
KDApLCBpdmVjMigwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1
cmVvZmZzZXRfc2FtcGxlcmN1YmVfdmVjM19pdmVjMworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2
YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMK
KwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3Jt
IG1lZGl1bXAgc2FtcGxlckN1YmUgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQ
fQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZU9mZnNldChzLCB2ZWMz
KDApLCBpdmVjMygwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1
cmVvZmZzZXRfaXNhbXBsZXJjdWJlX3ZlYzNfaXZlYzMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJ
dmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVz
CisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9y
bSBtZWRpdW1wIGlzYW1wbGVyQ3ViZSBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VU
VVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlT2Zmc2V0KHMsIHZl
YzMoMCksIGl2ZWMzKDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4
dHVyZW9mZnNldF91c2FtcGxlcmN1YmVfdmVjM19pdmVjMworCWV4cGVjdCBjb21waWxlX2ZhaWwK
Kwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlm
b3JtIG1lZGl1bXAgdXNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtT
RVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVPZmZzZXQocywg
dmVjMygwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0
ZXh0dXJlb2Zmc2V0X3NhbXBsZXJjdWJlX3ZlYzNfaXZlYzJfZmxvYXQKKwlleHBlY3QgY29tcGls
ZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNp
b24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30K
KwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVPZmZz
ZXQocywgdmVjMygwKSwgaXZlYzIoMCksIGZsb2F0KDApKSk7CisJCQkke09VVFBVVH0KKwkJfQor
CSIiCitlbmQKK2Nhc2UgdGV4dHVyZW9mZnNldF9zYW1wbGVyY3ViZV92ZWMzX2l2ZWMzX2Zsb2F0
CisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwli
b3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
JHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyQ3ViZSBzOworCisJCXZv
aWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCh0ZXh0dXJlT2Zmc2V0KHMsIHZlYzMoMCksIGl2ZWMzKDApLCBmbG9hdCgwKSkpOworCQkJ
JHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVvZmZzZXRfc2FtcGxlcjJkYXJy
YXlfdmVjM19pdmVjMworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9u
IDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJE
QXJyYXkgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZU9mZnNldChzLCB2ZWMzKDApLCBpdmVjMygwKSkp
OworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVvZmZzZXRfc2FtcGxl
cjJkYXJyYXlfdmVjM19pdmVjM19mbG9hdAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMg
e30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1
bXAgc2FtcGxlcjJEQXJyYXkgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQor
CQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZU9mZnNldChzLCB2ZWMzKDAp
LCBpdmVjMygwKSwgZmxvYXQoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2Fz
ZSB0ZXh0dXJlb2Zmc2V0X3NhbXBsZXJjdWJlc2hhZG93X3ZlYzRfaXZlYzIKKwlleHBlY3QgY29t
cGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3Zl
cnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9O
U30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlU2hhZG93IHM7CisKKwkJdm9pZCBtYWlu
KCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRl
eHR1cmVPZmZzZXQocywgdmVjNCgwKSwgaXZlYzIoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJ
IiIKK2VuZAorY2FzZSB0ZXh0dXJlb2Zmc2V0X3NhbXBsZXJjdWJlc2hhZG93X3ZlYzRfaXZlYzMK
KwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJv
dGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkk
e0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlU2hhZG93IHM7CisK
KwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KHRleHR1cmVPZmZzZXQocywgdmVjNCgwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VU
UFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlb2Zmc2V0X3NhbXBsZXIyZGFycmF5c2hh
ZG93X3ZlYzRfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lv
biAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIy
REFycmF5U2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVPZmZzZXQocywgdmVjNCgwKSwgaXZl
YzIoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlb2Zmc2V0
X3NhbXBsZXIyZGFycmF5c2hhZG93X3ZlYzRfaXZlYzJfZmxvYXQKKwlleHBlY3QgY29tcGlsZV9m
YWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24g
MzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJ
dW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyREFycmF5U2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkK
KwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1
cmVPZmZzZXQocywgdmVjNCgwKSwgaXZlYzIoMCksIGZsb2F0KDApKSk7CisJCQkke09VVFBVVH0K
KwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4ZWxmZXRjaF9zYW1wbGVyY3ViZV9pdmVjM19pbnQKKwll
eHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGgg
IiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RF
Q0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KHRleGVsRmV0Y2gocywgaXZlYzMoMCksIGludCgwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwki
IgorZW5kCitjYXNlIHRleGVsZmV0Y2hfaXNhbXBsZXJjdWJlX2l2ZWMzX2ludAorCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkj
dmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJ
T05TfQorCQl1bmlmb3JtIG1lZGl1bXAgaXNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkK
KwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleGVs
RmV0Y2gocywgaXZlYzMoMCksIGludCgwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5k
CitjYXNlIHRleGVsZmV0Y2hfdXNhbXBsZXJjdWJlX2l2ZWMzX2ludAorCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lv
biAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQor
CQl1bmlmb3JtIG1lZGl1bXAgdXNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleGVsRmV0Y2go
cywgaXZlYzMoMCksIGludCgwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNl
IHRleGVsZmV0Y2hfc2FtcGxlcjJkc2hhZG93X2l2ZWMyX2ludAorCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAz
MDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1
bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEU2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJewor
CQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleGVsRmV0Y2go
cywgaXZlYzIoMCksIGludCgwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNl
IHRleGVsZmV0Y2hfc2FtcGxlcmN1YmVzaGFkb3dfaXZlYzNfaW50CisJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJ
CXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyQ3ViZVNoYWRvdyBzOworCisJCXZvaWQgbWFpbigpCisJ
CXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXhlbEZl
dGNoKHMsIGl2ZWMzKDApLCBpbnQoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAor
Y2FzZSB0ZXhlbGZldGNoX3NhbXBsZXIyZGFycmF5c2hhZG93X2l2ZWMzX2ludAorCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkj
dmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJ
T05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXlTaGFkb3cgczsKKworCQl2b2lk
IG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQodGV4ZWxGZXRjaChzLCBpdmVjMygwKSwgaW50KDApKSk7CisJCQkke09VVFBVVH0KKwkJfQor
CSIiCitlbmQKK2Nhc2UgdGV4ZWxmZXRjaF9zYW1wbGVyY3ViZV9pdmVjM19pbnRfaXZlYzMKKwll
eHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGgg
IiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RF
Q0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KHRleGVsRmV0Y2gocywgaXZlYzMoMCksIGludCgwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VUUFVU
fQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXhlbGZldGNoX3NhbXBsZXIyZHNoYWRvd19pdmVjMl9p
bnRfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAg
ZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyRFNoYWRv
dyBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCh0ZXhlbEZldGNoKHMsIGl2ZWMyKDApLCBpbnQoMCksIGl2ZWMyKDAp
KSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4ZWxmZXRjaF9zYW1wbGVy
Y3ViZXNoYWRvd19pdmVjM19pbnRfaXZlYzMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVz
IHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRp
dW1wIHNhbXBsZXJDdWJlU2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRV
UH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleGVsRmV0Y2gocywgaXZlYzMo
MCksIGludCgwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2Fz
ZSB0ZXhlbGZldGNoX3NhbXBsZXIyZGFycmF5c2hhZG93X2l2ZWMzX2ludF9pdmVjMworCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgor
CQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFS
QVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXlTaGFkb3cgczsKKworCQl2
b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQodGV4ZWxGZXRjaChzLCBpdmVjMygwKSwgaW50KDApLCBpdmVjMygwKSkpOworCQkJJHtP
VVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9qb2Zmc2V0X3NhbXBsZXJjdWJl
X3ZlYzRfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAz
MDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJl
IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qT2Zmc2V0KHMsIHZlYzQoMCksIGl2ZWMyKDApKSk7
CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXByb2pvZmZzZXRfc2Ft
cGxlcmN1YmVfdmVjNF9pdmVjMworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2
ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2Ft
cGxlckN1YmUgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZVByb2pPZmZzZXQocywgdmVjNCgwKSwgaXZl
YzMoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlcHJvam9m
ZnNldF9zYW1wbGVyY3ViZXNoYWRvd192ZWM0X2l2ZWMzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBl
cworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZv
cm0gbWVkaXVtcCBzYW1wbGVyQ3ViZVNoYWRvdyBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJ
CSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlUHJvak9m
ZnNldChzLCB2ZWM0KDApLCBpdmVjMygwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5k
CitjYXNlIHRleHR1cmVwcm9qb2Zmc2V0X3NhbXBsZXIyZGFycmF5c2hhZG93X3ZlYzRfaXZlYzIK
KwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJv
dGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkk
e0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyREFycmF5U2hhZG93IHM7
CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qT2Zmc2V0KHMsIHZlYzQoMCksIGl2ZWMyKDApKSk7CisJ
CQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXByb2pvZmZzZXRfc2FtcGxl
cjJkYXJyYXlzaGFkb3dfdmVjNF9pdmVjMworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMg
e30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1
bXAgc2FtcGxlcjJEQXJyYXlTaGFkb3cgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NF
VFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZVByb2pPZmZzZXQo
cywgdmVjNCgwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2Fz
ZSB0ZXh0dXJlbG9kb2Zmc2V0X3NhbXBsZXJjdWJlX3ZlYzNfZmxvYXRfaXZlYzIKKwlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJ
I3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFU
SU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkK
KwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1
cmVMb2RPZmZzZXQocywgdmVjMygwKSwgZmxvYXQoMCksIGl2ZWMyKDApKSk7CisJCQkke09VVFBV
VH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWxvZG9mZnNldF9zYW1wbGVyY3ViZV92ZWMz
X2Zsb2F0X2l2ZWMzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24g
MzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyQ3Vi
ZSBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlTG9kT2Zmc2V0KHMsIHZlYzMoMCksIGZsb2F0KDApLCBp
dmVjMygwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVsb2Rv
ZmZzZXRfc2FtcGxlcmN1YmVzaGFkb3dfdmVjM19mbG9hdF9pdmVjMworCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lv
biAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQor
CQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlckN1YmVTaGFkb3cgczsKKworCQl2b2lkIG1haW4oKQor
CQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVy
ZUxvZE9mZnNldChzLCB2ZWMzKDApLCBmbG9hdCgwKSwgaXZlYzMoMCkpKTsKKwkJCSR7T1VUUFVU
fQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlbG9kb2Zmc2V0X3NhbXBsZXIyZGFycmF5c2hh
ZG93X3ZlYzNfZmxvYXRfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJ
dmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNh
bXBsZXIyREFycmF5U2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0K
KwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVMb2RPZmZzZXQocywgdmVj
MygwKSwgZmxvYXQoMCksIGl2ZWMyKDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQK
K2Nhc2UgdGV4dHVyZWxvZG9mZnNldF9zYW1wbGVyMmRhcnJheXNoYWRvd192ZWMzX2Zsb2F0X2l2
ZWMzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisK
Kwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheVNoYWRv
dyBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlTG9kT2Zmc2V0KHMsIHZlYzMoMCksIGZsb2F0KDApLCBp
dmVjMygwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9q
bG9kX3NhbXBsZXJjdWJlX3ZlYzRfZmxvYXQKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVz
IHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRp
dW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qTG9kKHMsIHZlYzQoMCks
IGZsb2F0KDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXBy
b2psb2Rfc2FtcGxlcjJkYXJyYXlfdmVjNF9mbG9hdAorCWV4cGVjdCBjb21waWxlX2ZhaWwKKwl2
YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMK
KwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlmb3Jt
IG1lZGl1bXAgc2FtcGxlcjJEQXJyYXkgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkke1NF
VFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZVByb2pMb2Qocywg
dmVjNCgwKSwgZmxvYXQoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0
ZXh0dXJlcHJvamxvZF9zYW1wbGVyMmRhcnJheXNoYWRvd192ZWM0X2Zsb2F0CisJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2
ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElP
TlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheVNoYWRvdyBzOworCisJCXZvaWQg
bWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCh0ZXh0dXJlUHJvakxvZChzLCB2ZWM0KDApLCBmbG9hdCgwKSkpOworCQkJJHtPVVRQVVR9CisJ
CX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVncmFkX3NhbXBsZXIyZGFycmF5X3ZlYzNfdmVjM192
ZWMzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisK
Kwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheSBzOwor
CisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCh0ZXh0dXJlR3JhZChzLCB2ZWMzKDApLCB2ZWMzKDApLCB2ZWMzKDApKSk7CisJ
CQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWdyYWRvZmZzZXRfc2FtcGxl
cmN1YmVfdmVjM192ZWMzX3ZlYzNfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVz
IHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRp
dW1wIHNhbXBsZXJDdWJlIHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVHcmFkT2Zmc2V0KHMsIHZlYzMo
MCksIHZlYzMoMCksIHZlYzMoMCksIGl2ZWMyKDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIi
CitlbmQKK2Nhc2UgdGV4dHVyZWdyYWRvZmZzZXRfc2FtcGxlcmN1YmVfdmVjM192ZWMzX3ZlYzNf
aXZlYzMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMK
KworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7CisK
KwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KHRleHR1cmVHcmFkT2Zmc2V0KHMsIHZlYzMoMCksIHZlYzMoMCksIHZlYzMoMCks
IGl2ZWMzKDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWdy
YWRvZmZzZXRfc2FtcGxlcmN1YmVzaGFkb3dfdmVjNF92ZWMzX3ZlYzNfaXZlYzIKKwlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJ
I3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFU
SU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlU2hhZG93IHM7CisKKwkJdm9pZCBt
YWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KHRleHR1cmVHcmFkT2Zmc2V0KHMsIHZlYzQoMCksIHZlYzMoMCksIHZlYzMoMCksIGl2ZWMyKDAp
KSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZWdyYWRvZmZzZXRf
c2FtcGxlcmN1YmVzaGFkb3dfdmVjNF92ZWMzX3ZlYzNfaXZlYzMKKwlleHBlY3QgY29tcGlsZV9m
YWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24g
MzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJ
dW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlU2hhZG93IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJ
eworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVH
cmFkT2Zmc2V0KHMsIHZlYzQoMCksIHZlYzMoMCksIHZlYzMoMCksIGl2ZWMzKDApKSk7CisJCQkk
e09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXByb2pncmFkX3NhbXBsZXJjdWJl
X3ZlYzRfdmVjM192ZWMzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNp
b24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVy
Q3ViZSBzOworCisJCXZvaWQgbWFpbigpCisJCXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJlUHJvakdyYWQocywgdmVjNCgwKSwgdmVjMygwKSwg
dmVjMygwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRleHR1cmVwcm9q
Z3JhZF9zYW1wbGVyMmRhcnJheV92ZWM0X3ZlYzJfdmVjMgorCWV4cGVjdCBjb21waWxlX2ZhaWwK
Kwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCQl1bmlm
b3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXkgczsKKworCQl2b2lkIG1haW4oKQorCQl7CisJCQkk
e1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQodGV4dHVyZVByb2pHcmFk
KHMsIHZlYzQoMCksIHZlYzIoMCksIHZlYzIoMCkpKTsKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIK
K2VuZAorY2FzZSB0ZXh0dXJlcHJvamdyYWRvZmZzZXRfc2FtcGxlcmN1YmVfdmVjNF92ZWMzX3Zl
YzNfaXZlYzIKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAg
ZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5pZm9ybSBtZWRpdW1wIHNhbXBsZXJDdWJlIHM7
CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJJHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qR3JhZE9mZnNldChzLCB2ZWM0KDApLCB2ZWMzKDApLCB2
ZWMzKDApLCBpdmVjMigwKSkpOworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCitjYXNlIHRl
eHR1cmVwcm9qZ3JhZG9mZnNldF9zYW1wbGVyY3ViZV92ZWM0X3ZlYzNfdmVjM19pdmVjMworCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwl2YWx1ZXMge30KKwl2ZXJzaW9uIDMwMCBlcworCisJYm90aCAi
IgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVD
TEFSQVRJT05TfQorCQl1bmlmb3JtIG1lZGl1bXAgc2FtcGxlckN1YmUgczsKKworCQl2b2lkIG1h
aW4oKQorCQl7CisJCQkke1NFVFVQfQorCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
dGV4dHVyZVByb2pHcmFkT2Zmc2V0KHMsIHZlYzQoMCksIHZlYzMoMCksIHZlYzMoMCksIGl2ZWMz
KDApKSk7CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKK2Nhc2UgdGV4dHVyZXByb2pncmFk
b2Zmc2V0X3NhbXBsZXIyZGFycmF5X3ZlYzRfdmVjMl92ZWMyX2l2ZWMyCisJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCXZhbHVlcyB7fQorCXZlcnNpb24gMzAwIGVzCisKKwlib3RoICIiCisJCSN2ZXJz
aW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9
CisJCXVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyMkRBcnJheSBzOworCisJCXZvaWQgbWFpbigpCisJ
CXsKKwkJCSR7U0VUVVB9CisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCh0ZXh0dXJl
UHJvakdyYWRPZmZzZXQocywgdmVjNCgwKSwgdmVjMigwKSwgdmVjMigwKSwgaXZlYzIoMCkpKTsK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorY2FzZSB0ZXh0dXJlcHJvamdyYWRvZmZzZXRf
c2FtcGxlcjJkYXJyYXlfdmVjNF92ZWMyX3ZlYzJfaXZlYzMKKwlleHBlY3QgY29tcGlsZV9mYWls
CisJdmFsdWVzIHt9CisJdmVyc2lvbiAzMDAgZXMKKworCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAw
IGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKwkJdW5p
Zm9ybSBtZWRpdW1wIHNhbXBsZXIyREFycmF5IHM7CisKKwkJdm9pZCBtYWluKCkKKwkJeworCQkJ
JHtTRVRVUH0KKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KHRleHR1cmVQcm9qR3Jh
ZE9mZnNldChzLCB2ZWM0KDApLCB2ZWMyKDApLCB2ZWMyKDApLCBpdmVjMygwKSkpOworCQkJJHtP
VVRQVVR9CisJCX0KKwkiIgorZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9rZXl3b3Jkcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9k
YXRhL2dsZXMzL3NoYWRlcnMva2V5d29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODk5YTlhMjc5OTJj
ZmRjYWQwZTFmZjJhNmMyMDcxOTU2NzY2MjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRl
cnMva2V5d29yZHMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJl
ZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3Rlc3ROYW1lID0gJ2tleXdvcmRzJzsKK2Rlc2NyaXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRl
c3ROYW1lICsgIi4iKTsKK1dlYkdMVGVzdFV0aWxzLnNldERlZmF1bHQzRENvbnRleHRWZXJzaW9u
KDIpOworCit2YXIgZ2V0RmlsdGVyID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHF1ZXJ5VmFycyA9
IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KCcmJyk7CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5VmFycy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIg
dmFsdWUgPSBxdWVyeVZhcnNbaV0uc3BsaXQoJz0nKTsKKyAgICAgICAgaWYgKGRlY29kZVVSSUNv
bXBvbmVudCh2YWx1ZVswXSkgPT09ICdmaWx0ZXInKQorICAgICAgICAgICAgcmV0dXJuIGRlY29k
ZVVSSUNvbXBvbmVudCh2YWx1ZVsxXSk7CisgICAgfQorfQorCittb2R1bGVzLnNoYXJlZC5nbHNT
aGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMva2V5d29yZHMudGVzdCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL2tleXdvcmRzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU4OGNkNzRlMzM2MTA5NmMxMGRk
NGJjNTM4NmJiMmJiMDhhYTU5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL2tleXdv
cmRzLnRlc3QKQEAgLTAsMCArMSwzMjE5IEBACisjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZC4gRG8gTk9UIG1vZGlmeSBpdCBtYW51YWxseSwgYnV0IHJhdGhlcgorIyBtb2Rp
ZnkgdGhlIGdlbmVyYXRpbmcgc2NyaXB0IGZpbGUuIE90aGVyd2lzZSBjaGFuZ2VzIHdpbGwgYmUg
bG9zdCEKKworZ3JvdXAga2V5d29yZHMgIlVzYWdlIG9mIGtleXdvcmRzIGFzIGlkZW50aWZpZXJz
LiIKKworCWNhc2UgY29uc3QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJ
dmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBjb25zdCA9IDEuMDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVuaWZvcm0KKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1bmlmb3Jt
ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgbGF5b3V0CisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJZmxvYXQgbGF5b3V0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCWNhc2UgY2VudHJvaWQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJ
dmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBjZW50cm9pZCA9IDEuMDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGZsYXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmbGF0ID0g
MS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc21vb3RoCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJZmxvYXQgc21vb3RoID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CWNhc2UgYnJlYWsKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBicmVhayA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIGNvbnRpbnVlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgY29udGludWUgPSAx
LjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBkbworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZs
b2F0IGRvID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZm9y
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgZm9yID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCWNhc2Ugd2hpbGUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB3aGlsZSA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHN3aXRjaAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHN3aXRjaCA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGNhc2UKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCBjYXNlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
ZGVmYXVsdAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMw
MCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGRlZmF1bHQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisJY2FzZSBpZgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7
fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGlmID0gMS4wOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZWxzZQorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGVsc2UgPSAx
LjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpbgorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZs
b2F0IGluID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugb3V0
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgb3V0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCWNhc2UgaW5vdXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpbm91dCA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGZsb2F0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZmxvYXQgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpbnQKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBpbnQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB2b2lk
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgdm9pZCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIGJvb2wKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBib29sID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2UgdHJ1ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHRydWUgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBmYWxzZQorCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0
IGZhbHNlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW52
YXJpYW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAw
IGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgaW52YXJpYW50ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2UgZGlzY2FyZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGRpc2NhcmQgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSByZXR1cm4KKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCByZXR1cm4gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSBtYXQyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAw
IGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgbWF0MiA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIG1hdDMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQzID0gMS4wOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgbWF0NAorCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IG1hdDQgPSAx
LjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBtYXQyeDIKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlmbG9hdCBtYXQyeDIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBtYXQyeDMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQyeDMgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisJY2FzZSBtYXQyeDQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQyeDQgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBtYXQzeDIKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCBtYXQzeDIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSBtYXQzeDMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAz
MDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQzeDMgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisJY2FzZSBtYXQzeDQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQzeDQgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBtYXQ0eDIKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBtYXQ0eDIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBt
YXQ0eDMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAg
ZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQ0eDMgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBtYXQ0eDQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBtYXQ0eDQgPSAxLjA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB2ZWMyCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdmVj
MiA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHZlYzMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCB2ZWMzID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CWNhc2UgdmVjNAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9u
IDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisJY2FzZSBpdmVjMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVl
cyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGl2ZWMyID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaXZlYzMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBp
dmVjMyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGl2ZWM0
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgaXZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisJY2FzZSBidmVjMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2
ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGJ2ZWMyID0gMS4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgYnZlYzMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBidmVjMyA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGJ2ZWM0CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgYnZlYzQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSB1aW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAw
IGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgdWludCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIHV2ZWMyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdXZlYzIgPSAxLjA7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1dmVjMworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHV2ZWMz
ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgdXZlYzQKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCB1dmVjNCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KwljYXNlIGxvd3AKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBsb3dwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2UgbWVkaXVtcAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IG1lZGl1bXAgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBoaWdocAorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZs
b2F0IGhpZ2hwID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
cHJlY2lzaW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24g
MzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgcHJlY2lzaW9uID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjJECisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgc2FtcGxlcjJE
ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjNE
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgc2FtcGxlcjNEID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2Ugc2FtcGxlckN1YmUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyQ3ViZSA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBsZXIyRFNoYWRv
dworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IHNhbXBsZXIyRFNoYWRvdyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBsZXJDdWJlU2hhZG93CisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgc2Ft
cGxlckN1YmVTaGFkb3cgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBzYW1wbGVyMkRBcnJheQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQor
CQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHNhbXBsZXIyREFycmF5ID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjJEQXJyYXlTaGFk
b3cKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMK
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMkRBcnJheVNoYWRvdyA9IDEuMDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlzYW1wbGVyMkQKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpc2Ft
cGxlcjJEID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaXNh
bXBsZXIzRAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMw
MCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGlzYW1wbGVyM0QgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisJY2FzZSBpc2FtcGxlckN1YmUKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpc2FtcGxl
ckN1YmUgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpc2Ft
cGxlcjJEQXJyYXkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpc2FtcGxlcjJEQXJyYXkgPSAxLjA7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1c2FtcGxlcjJECisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
dXNhbXBsZXIyRCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNl
IHVzYW1wbGVyM0QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1c2FtcGxlcjNEID0gMS4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgdXNhbXBsZXJDdWJlCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdXNh
bXBsZXJDdWJlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ug
dXNhbXBsZXIyREFycmF5CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZl
cnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdXNhbXBsZXIyREFycmF5ID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc3RydWN0CisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQg
c3RydWN0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBr
ZXl3b3JkcworZ3JvdXAgcmVzZXJ2ZWRfa2V5d29yZHMgIlVzYWdlIG9mIHJlc2VydmVkIGtleXdv
cmRzIGFzIGlkZW50aWZpZXJzLiIKKworCWNhc2UgYXR0cmlidXRlCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgYXR0
cmlidXRlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgdmFy
eWluZworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBl
cworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWZsb2F0IHZhcnlpbmcgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBjb2hlcmVudAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVl
cyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGNvaGVyZW50ID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgcmVzdHJpY3QKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCByZXN0cmljdCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwlj
YXNlIHJlYWRvbmx5CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNp
b24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgcmVhZG9ubHkgPSAxLjA7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB3cml0ZW9ubHkKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB3cml0ZW9u
bHkgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSByZXNvdXJj
ZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IHJlc291cmNlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2UgYXRvbWljX3VpbnQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBhdG9taWNfdWludCA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIG5vcGVyc3BlY3RpdmUK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlmbG9hdCBub3BlcnNwZWN0aXZlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCWNhc2UgcGF0Y2gKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBwYXRjaCA9IDEuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBsZQorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHNh
bXBsZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHN1YnJv
dXRpbmUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAg
ZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlmbG9hdCBzdWJyb3V0aW5lID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2UgY29tbW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgY29tbW9uID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgcGFydGl0aW9uCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgcGFydGl0aW9uID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CWNhc2UgYWN0aXZlCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNp
b24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgYWN0aXZlID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2UgYXNtCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFs
dWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgYXNtID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgY2xhc3MKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBj
bGFzcyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVuaW9u
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgdW5pb24gPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisJY2FzZSBlbnVtCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZl
cnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZW51bSA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHR5cGVkZWYKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB0eXBlZGVmID0g
MS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgdGVtcGxhdGUKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCB0ZW1wbGF0ZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIHRoaXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB0aGlzID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2UgZ290bworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGdvdG8gPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpbmxpbmUKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9h
dCBpbmxpbmUgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBu
b2lubGluZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMw
MCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IG5vaW5saW5lID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2Ugdm9sYXRpbGUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB2b2xhdGlsZSA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHB1YmxpYworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWZsb2F0IHB1YmxpYyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwlj
YXNlIHN0YXRpYworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9u
IDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHN0YXRpYyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKwljYXNlIGV4dGVybgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGV4dGVybiA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGV4dGVybmFsCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgZXh0ZXJuYWwgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJ
Y2FzZSBpbnRlcmZhY2UKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpbnRlcmZhY2UgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBsb25nCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgbG9uZyA9IDEu
MDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNob3J0CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgc2hvcnQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSBkb3VibGUKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAz
MDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBkb3VibGUgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisJY2FzZSBoYWxmCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVz
IHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaGFsZiA9IDEuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGZpeGVkCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZml4
ZWQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1bnNpZ25l
ZAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IHVuc2lnbmVkID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2Ugc3VwZXJwCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgc3VwZXJwID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW5wdXQKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpbnB1
dCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIG91dHB1dAor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCWZsb2F0IG91dHB1dCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIGh2ZWMyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZl
cnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaHZlYzIgPSAxLjA7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBodmVjMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGh2ZWMzID0gMS4w
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaHZlYzQKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCBodmVjNCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNl
IGR2ZWMyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAw
IGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgZHZlYzIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisJY2FzZSBkdmVjMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7
fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGR2ZWMzID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZHZlYzQKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBkdmVj
NCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGZ2ZWMyCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJZmxvYXQgZnZlYzIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisJY2FzZSBmdmVjMworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJz
aW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGZ2ZWMzID0gMS4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCWNhc2UgZnZlYzQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBmdmVjNCA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBsZXIzRFJlY3QKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCBzYW1wbGVyM0RSZWN0ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2UgZmlsdGVyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgZmlsdGVyID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW1hZ2UxRAorCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGlt
YWdlMUQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpbWFn
ZTJECisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVz
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJZmxvYXQgaW1hZ2UyRCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIGltYWdlM0QKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpbWFnZTNEID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW1hZ2VDdWJlCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxv
YXQgaW1hZ2VDdWJlID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNh
c2UgaWltYWdlMUQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpaW1hZ2UxRCA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlpbWFnZTJECisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaWltYWdlMkQg
PSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpaW1hZ2UzRAor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCWZsb2F0IGlpbWFnZTNEID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCWNhc2UgaWltYWdlQ3ViZQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7
fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGlpbWFnZUN1YmUgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1aW1hZ2UxRAorCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZs
b2F0IHVpbWFnZTFEID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNh
c2UgdWltYWdlMkQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1aW1hZ2UyRCA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVpbWFnZTNECisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdWltYWdlM0Qg
PSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1aW1hZ2VDdWJl
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJZmxvYXQgdWltYWdlQ3ViZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIGltYWdlMURBcnJheQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZh
bHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGltYWdlMURBcnJheSA9
IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGltYWdlMkRBcnJh
eQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IGltYWdlMkRBcnJheSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKwljYXNlIGlpbWFnZTFEQXJyYXkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpaW1hZ2UxREFy
cmF5ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaWltYWdl
MkRBcnJheQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMw
MCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCWZsb2F0IGlpbWFnZTJEQXJyYXkgPSAxLjA7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1aW1hZ2UxREFycmF5CisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdWlt
YWdlMURBcnJheSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNl
IHVpbWFnZTJEQXJyYXkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1aW1hZ2UyREFycmF5ID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaW1hZ2UxRFNoYWRvdworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZs
b2F0IGltYWdlMURTaGFkb3cgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisJY2FzZSBpbWFnZTJEU2hhZG93CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaW1hZ2UyRFNoYWRvdyA9IDEuMDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGltYWdlMURBcnJheVNoYWRv
dworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IGltYWdlMURBcnJheVNoYWRvdyA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGltYWdlMkRBcnJheVNoYWRvdworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0
IGltYWdlMkRBcnJheVNoYWRvdyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIGltYWdlQnVmZmVyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9
CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaW1hZ2VCdWZmZXIgPSAxLjA7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBpaW1hZ2VCdWZmZXIKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlmbG9hdCBpaW1hZ2VCdWZmZXIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisJY2FzZSB1aW1hZ2VCdWZmZXIKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCB1aW1hZ2VCdWZmZXIgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMUQKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlmbG9hdCBzYW1wbGVyMUQgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisJY2FzZSBzYW1wbGVyMURTaGFkb3cKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMg
e30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMURTaGFkb3cgPSAx
LjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMURBcnJh
eQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcwor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCWZsb2F0IHNhbXBsZXIxREFycmF5ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjFEQXJyYXlTaGFkb3cKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBz
YW1wbGVyMURBcnJheVNoYWRvdyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIGlzYW1wbGVyMUQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpc2FtcGxlcjFEID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaXNhbXBsZXIxREFycmF5CisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJZmxvYXQgaXNhbXBsZXIxREFycmF5ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCWNhc2UgdXNhbXBsZXIxRAorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVl
cyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHVzYW1wbGVyMUQgPSAxLjA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSB1c2FtcGxlcjFEQXJyYXkK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlmbG9hdCB1c2FtcGxlcjFEQXJyYXkgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVyMkRSZWN0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgc2FtcGxlcjJE
UmVjdCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHNhbXBs
ZXIyRFJlY3RTaGFkb3cKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVy
c2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMkRSZWN0U2hhZG93ID0gMS4wOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaXNhbXBsZXIyRFJlY3QKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCBpc2FtcGxlcjJEUmVjdCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKwljYXNlIHVzYW1wbGVyMkRSZWN0CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdXNhbXBsZXIyRFJl
Y3QgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBzYW1wbGVy
QnVmZmVyCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAw
IGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJZmxvYXQgc2FtcGxlckJ1ZmZlciA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIGlzYW1wbGVyQnVmZmVyCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgaXNh
bXBsZXJCdWZmZXIgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2Fz
ZSB1c2FtcGxlckJ1ZmZlcgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2
ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IHVzYW1wbGVyQnVmZmVyID0gMS4wOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2Ugc2FtcGxlcjJETVMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlm
bG9hdCBzYW1wbGVyMkRNUyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KwljYXNlIGlzYW1wbGVyMkRNUworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQor
CQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWZsb2F0IGlzYW1wbGVyMkRNUyA9IDEuMDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVzYW1wbGVyMkRNUworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CWZsb2F0IHVzYW1wbGVyMkRNUyA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIHNhbXBsZXIyRE1TQXJyYXkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1
ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzYW1wbGVyMkRNU0FycmF5
ID0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgaXNhbXBsZXIy
RE1TQXJyYXkKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAz
MDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBpc2FtcGxlcjJETVNBcnJheSA9IDEuMDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIHVzYW1wbGVyMkRNU0FycmF5CisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
ZmxvYXQgdXNhbXBsZXIyRE1TQXJyYXkgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisJY2FzZSBzaXplb2YKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBzaXplb2YgPSAxLjA7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisJY2FzZSBjYXN0CisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJdmFsdWVzIHt9CisJCXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgY2FzdCA9
IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwljYXNlIG5hbWVzcGFjZQor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZhbHVlcyB7fQorCQl2ZXJzaW9uIDMwMCBlcworCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCWZsb2F0IG5hbWVzcGFjZSA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKwljYXNlIHVzaW5nCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHt9CisJ
CXZlcnNpb24gMzAwIGVzCisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJZmxvYXQgdXNpbmcgPSAxLjA7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIHJlc2VydmVkX2tleXdvcmRzCitncm91cCBp
bnZhbGlkX2lkZW50aWZpZXJzICJVc2FnZSBvZiBpbnZhbGlkIGlkZW50aWZpZXJzLiIKKworCWNh
c2UgZ2xfYmVnaW4KKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lv
biAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBnbF9JbnZhbGlkID0gMS4wOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZGlnaXQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCAwMTIzID0gMS4w
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCWNhc2UgZGlnaXRfYmVnaW4KKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30KKwkJdmVyc2lvbiAzMDAgZXMKKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlmbG9hdCAwaW52YWxpZCA9IDEuMDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKwljYXNlIG1heF9sZW5ndGgKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2YWx1ZXMge30K
KwkJdmVyc2lvbiAzMDAgZXMKKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlmbG9hdCBhYmNkYWJjZGFiY2RhYmNkYWJjZGFi
Y2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJj
ZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNk
YWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2Rh
YmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFi
Y2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJj
ZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNk
YWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2Rh
YmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFi
Y2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJj
ZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNk
YWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2Rh
YmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFi
Y2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJj
ZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNk
YWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2Rh
YmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFi
Y2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJj
ZGFiY2RhYmNkYWJjZGFiY2RhYmNkYWJjZGFiY2RhYmNkWCA9IDEuMDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgaW52YWxpZF9pZGVudGlmaWVycwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRh
L2dsZXMzL3NoYWRlcnMvbGlua2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvbGlua2FnZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM2ZWJiYmMwNTEwNmQ0MjNkODk1ZDEzMTNlM2Y0OTI0MGIyY2Q2YTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9saW5rYWdlLmh0bWwKQEAgLTAsMCArMSwzNiBAQAor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit0ZXN0TmFtZSA9ICdsaW5rYWdlJzsKK2Rlc2NyaXB0aW9u
KCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4iKTsKK1dlYkdMVGVzdFV0aWxzLnNldERl
ZmF1bHQzRENvbnRleHRWZXJzaW9uKDIpOworCit2YXIgZ2V0RmlsdGVyID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHF1ZXJ5VmFycyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEp
LnNwbGl0KCcmJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5VmFycy5sZW5ndGg7
IGkrKykgeworICAgICAgICB2YXIgdmFsdWUgPSBxdWVyeVZhcnNbaV0uc3BsaXQoJz0nKTsKKyAg
ICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVswXSkgPT09ICdmaWx0ZXInKQorICAg
ICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVsxXSk7CisgICAgfQorfQor
Cittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0RmlsdGVy
KCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRl
cnMvbGlua2FnZS50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvbGlua2FnZS50ZXN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
ZGFhMDYxODAwYjViMTU5MTU0MDA5ZjhjMjdhMjEwMDdjZWZlY2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEv
Z2xlczMvc2hhZGVycy9saW5rYWdlLnRlc3QKQEAgLTAsMCArMSwzODMzIEBACisKKyMgVmFyeWlu
ZyB0ZXN0cworZ3JvdXAgdmFyeWluZyAiVmFyeWluZyBsaW5rYWdlIgorCisJIyBMaW5raW5nIHJ1
bGVzCisJZ3JvdXAgcnVsZXMgIlZhcnlpbmcgbGlua2luZyBydWxlcyIKKwkJIyBub3QgZGVjbGFy
ZWQgaW4gdmVydGV4IHNoYWRlciwgZGVjbGFyZWQgaW4gZnJhZ21lbnQgc2hhZGVyCisJCWNhc2Ug
ZnJhZ21lbnRfZGVjbGFyZQorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgZGVj
bGFyZWQgaW4gZnJhZ21lbnQgc2hhZGVyLCBubyByZWZlcmVuY2UgaW4gdmVydGV4IHNoYWRlciIK
KwkJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCQl2ZXJ0ZXggIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJh
Z21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9O
U30KKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkJJHtGUkFH
TUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJIyBkZWNsYXJlZCBpbiB2ZXJ0
ZXggc2hhZGVyLCBubyByZWZlcmVuY2UgaW4gZnJhZyBzaGFkZXIKKwkJY2FzZSB2ZXJ0ZXhfZGVj
bGFyZQorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgZGVjbGFyZWQgaW4gdmVy
dGV4IHNoYWRlciwgbm8gcmVmZXJlbmNlIGluIGZyYWdtZW50IHNoYWRlciIKKwkJCXZlcnRleCAi
IgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlv
dXQgbWVkaXVtcCBmbG9hdCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVS
VEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQK
KworCQkjIGRlY2xhcmVkIGluIHZlcnRleCBzaGFkZXIsIGRlY2xhcmVkIGluIGZyYWcgc2hhZGVy
CisJCWNhc2UgYm90aF9kZWNsYXJlCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWlu
ZyBkZWNsYXJlZCBpbiBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVyLCBidXQgbm90IHVz
ZWQiCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNM
QVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIi
CisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJaW4gbWVkaXVtcCBmbG9hdCB2YXI7CisJCQkJJHtG
UkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7RlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJIyBkZWNsYXJl
ZCBpbiB2ZXJ0ZXggc2hhZGVyLCBzdGF0aWMgdXNlIGluIGZyYWcgc2hhZGVyCisJCWNhc2UgdmVy
dGV4X2RlY2xhcmVfZnJhZ21lbnRfdXNlCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFy
eWluZyBkZWNsYXJlZCBpbiBib3RoIHNoYWRlcnMsIHN0YXRpY2FsbHkgdXNlZCBpbiBmcmFnbWVu
dCBzaGFkZXIiCisJCQl2YWx1ZXMgeyB1bmlmb3JtIGJvb2wgdV9mYWxzZSA9IGZhbHNlOyB9CisJ
CQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElP
TlN9CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJaW4gbWVkaXVtcCBmbG9hdCB2YXI7CisJCQkJJHtGUkFHTUVO
VF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWlmICh1X2ZhbHNl
KQorCQkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQodmFyKTsKKwkJCQkJZWxzZQorCQkJCQkJJHtG
UkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQkjIHN0YXRp
YyB1c2UgaW4gdmVydGV4IHNoYWRlciwgbm8gcmVmZXJlbmNlIGluIGZyYWdtZW50IHNoYWRlcgor
CQljYXNlIHZlcnRleF91c2VfZnJhZ21lbnRfZGVjbGFyZQorCQkJdmVyc2lvbiAzMDAgZXMKKwkJ
CWRlc2MgInZhcnlpbmcgZGVjbGFyZWQgYW5kIHN0YXRpY2FsbHkgdXNlZCBpbiB2ZXJ0ZXggc2hh
ZGVyLCBubyByZWZlcmVuY2UgaW4gZnJhZ21lbnQgc2hhZGVyIgorCQkJdmFsdWVzIHsgdW5pZm9y
bSBib29sIHVfZmFsc2UgPSBmYWxzZTsgfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCW91dCBtZWRpdW1wIGZsb2F0IHZh
cjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJaWYgKHVfZmFsc2UpCisJCQkJCQl2YXIg
PSAxLjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQg
IiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJ
CQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJ
CQl9CisJCQkiIgorCQllbmQKKworCQkjIHN0YXRpYyB1c2UgaW4gdmVydGV4IHNoYWRlciwgZGVj
bGFyZWQgaW4gZnJhZ21lbnQgc2hhZGVyCisJCWNhc2UgdmVydGV4X3VzZV9kZWNsYXJlX2ZyYWdt
ZW50CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBkZWNsYXJlZCBhbmQgc3Rh
dGljYWxseSB1c2VkIGluIHZlcnRleCBzaGFkZXIsIG9ubHkgZGVjbGFyZWQgaW4gZnJhZ21lbnQg
c2hhZGVyIgorCQkJdmFsdWVzIHsgdW5pZm9ybSBib29sIHVfZmFsc2UgPSBmYWxzZTsgfQorCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05T
fQorCQkJCW91dCBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJaWYgKHVfZmFsc2UpCisJCQkJCQl2YXIgPSAxLjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0K
KwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlp
biBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCQl9
CisJCQkiIgorCQllbmQKKworCQkjIHN0YXRpYyB1c2UgaW4gdmVydGV4IHNoYWRlciwgdXNlZCBp
biBmcmFnbWVudCBzaGFkZXIKKwkJY2FzZSB2ZXJ0ZXhfdXNlX2ZyYWdtZW50X3VzZQorCQkJdmVy
c2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgc3RhdGljYWxseSB1c2VkIGluIGJvdGggdmVy
dGV4IGFuZCBmcmFnbWVudCBzaGFkZXIiCisJCQl2YWx1ZXMgeyB1bmlmb3JtIGJvb2wgdV9mYWxz
ZSA9IGZhbHNlOyB9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQlpZiAodV9mYWxzZSkKKwkJCQkJCXZhciA9IDEuMDsKKwkJCQkJ
JHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAg
ZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlpZiAodV9mYWxzZSkKKwkJ
CQkJCSR7RlJBR19DT0xPUn0gPSB2ZWM0KHZhcik7CisJCQkJCWVsc2UKKwkJCQkJCSR7RlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJIyBkaWZmZXJpbmcg
cHJlY2lzaW9uIHRlc3RzCisJCWNhc2UgZGlmZmVyaW5nX3ByZWNpc2lvbl8xCisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBkZWNsYXJlZCBhcyBoaWdocCBpbiB2ZXJ0ZXggc2hh
ZGVyLCBidXQgbWVkaXVtcCBpbiBmcmFnbWVudCBzaGFkZXIiCisJCQl2YWx1ZXMKKwkJCXsKKwkJ
CQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS41NSB8IDEuMCB8IDIuMjUgfCAzLjQg
fCAxNi4wIF07CisJCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC0xLjI1IHwgLTI1LjU1IHwgMS4w
IHwgMi4yNSB8IDMuNCB8IDE2LjAgXTsKKwkJCX0KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCW91dCBoaWdocCBmbG9h
dCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtW
RVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVD
TEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQllbmQKKworCQkjIGRpZmZlcmluZyBwcmVjaXNpb24gdGVzdHMKKwkJY2FzZSBkaWZm
ZXJpbmdfcHJlY2lzaW9uXzIKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIGRl
Y2xhcmVkIGFzIGhpZ2hwIGluIHZlcnRleCBzaGFkZXIsIGJ1dCBsb3dwIGluIGZyYWdtZW50IHNo
YWRlciIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0xLjI1IHwg
LTI1LjU2IHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2LjAgXTsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0
MAk9IFsgLTEuMjUgfCAtMjUuNTYgfCAxLjAgfCAyLjI1IHwgMy40IHwgMTYuMCBdOworCQkJfQor
CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJB
VElPTlN9CisJCQkJb3V0IGhpZ2hwIHZlYzIgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQl2YXIgPSB2ZWMyKGluMCwgMi4wKmluMCk7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlp
biBsb3dwIHZlYzIgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFy
LnkgLSB2YXIueDsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5k
CisKKwkJIyBkaWZmZXJpbmcgcHJlY2lzaW9uIHRlc3RzCisJCWNhc2UgZGlmZmVyaW5nX3ByZWNp
c2lvbl8zCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBkZWNsYXJlZCBhcyBs
b3dwIGluIHZlcnRleCBzaGFkZXIsIGJ1dCBtZWRpdW1wIGluIGZyYWdtZW50IHNoYWRlciIKKwkJ
CXZhbHVlcworCQkJeworCQkJCWlucHV0IGZsb2F0IGluMAkJPSBbIC0xLjI1IHwgLTI1LjAgfCAx
LjAgfCAyLjI1IHwgMy40IHwgMTYuMCBdOworCQkJCW91dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4y
NSB8IC0yNS4wIHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2LjAgXTsKKwkJCX0KKworCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CW91dCBsb3dwIHZlYzQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSB2
ZWM0KGluMCwgMi4wKmluMCwgLWluMCwgLWluMCk7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlp
biBtZWRpdW1wIHZlYzQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0g
dmFyLnggKyB2YXIueSArIHZhci56ICsgdmFyLnc7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQor
CQkJCX0KKwkJCSIiCisJCWVuZAorCisJCSMgbWlzbWF0Y2hlZCB0eXBlLCBzdGF0aWMgdXNlIGJ1
dCBubyBydW50aW1lIHVzZSBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyCisJCWNhc2UgdHlwZV9taXNt
YXRjaF8xCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyB0eXBlIG1pc21hdGNo
IChmbG9hdCB2cy4gdmVjMiksIHN0YXRpYyB1c2UgYnV0IG5vIHJ1bnRpbWUgdXNlIGluIHRoZSBm
cmFnbWVudCBzaGFkZXIiCisJCQlleHBlY3QgbGlua19mYWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1
bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSAyLjA7CisJ
CQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRp
dW1wIHZlYzIgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlpZiAoZmFsc2UpCisJ
CQkJCXsKKwkJCQkJCSR7RlJBR19DT0xPUn0gPSB2ZWM0KHZhci55KTsKKwkJCQkJfQorCQkJCQll
bHNlCisJCQkJCXsKKwkJCQkJCSR7RlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQkJCX0KKwkJ
CQl9CisJCQkiIgorCQllbmQKKworCQkjIG1pc21hdGNoZWQgdHlwZSwgdmFyeWluZ3MgdXNlZAor
CQljYXNlIHR5cGVfbWlzbWF0Y2hfMgorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlp
bmcgdHlwZSBtaXNtYXRjaCAoZmxvYXQgdnMuIHZlYzIpIgorCQkJZXhwZWN0IGxpbmtfZmFpbAor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQkJCW91dCBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJdmFyID0gMi4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCQkJaW4gbWVkaXVtcCB2ZWMyIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZhci54eXl4OworCQkJCX0KKwkJCSIiCisJCWVuZAorCisJ
CSMgbWlzbWF0Y2hlZCB0eXBlLCB2YXJ5aW5ncyB1c2VkCisJCWNhc2UgdHlwZV9taXNtYXRjaF8z
CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyB0eXBlIG1pc21hdGNoIChpbnQg
dnMuIHVpbnQpIgorCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgb3V0IG1lZGl1
bXAgaW50IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyID0gMjsKKwkJCQkJ
JHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgaW4gbWVk
aXVtcCB1aW50IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9S
fSA9IHZlYzQodmFyKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQkjIG1pc21hdGNoZWQgdHlw
ZSwgdmFyeWluZ3MgdXNlZAorCQljYXNlIHN0cnVjdF90eXBlX21pc21hdGNoXzEKKwkJCXZlcnNp
b24gMzAwIGVzCisJCQlkZXNjICJzdHJ1Y3QgbWVtYmVyIG1pc21hdGNoIgorCQkJZXhwZWN0IGxp
bmtfZmFpbAorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhf
REVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTIHsgaGlnaHAgZmxvYXQgYTsgaGlnaHAgdmVjMiBi
OyB9OworCQkJCW91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyLmEg
PSAyLjA7CisJCQkJCXZhci5iID0gdmVjMigxLjAsIDAuMCk7CisJCQkJCSR7VkVSVEVYX09VVFBV
VH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IGhpZ2hwIGZsb2F0IGE7
IGhpZ2hwIHZlYzMgYjsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQodmFyLmEsIHZhci5iKTsKKwkJCQl9CisJCQkiIgor
CQllbmQKKworCQkjIG1pc21hdGNoZWQgdHlwZSwgdmFyeWluZ3MgdW51c2VkIGluIGZyYWdtZW50
IHNoYWRlciAocnVudGltZSkKKwkJY2FzZSBzdHJ1Y3RfdHlwZV9taXNtYXRjaF8yCisJCQl2ZXJz
aW9uIDMwMCBlcworCQkJZGVzYyAic3RydWN0IG1lbWJlciBtaXNtYXRjaCIKKwkJCWV4cGVjdCBs
aW5rX2ZhaWwKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVY
X0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IGhpZ2hwIGZsb2F0IGE7IGhpZ2hwIHZlYzIg
YjsgfTsKKwkJCQlvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhci5h
ID0gMi4wOworCQkJCQl2YXIuYiA9IHZlYzIoMS4wLCAwLjApOworCQkJCQkke1ZFUlRFWF9PVVRQ
VVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBoaWdocCBmbG9hdCBh
OyBoaWdocCB2ZWMzIGI7IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCSR7RlJBR19DT0xPUn0gPSB2ZWM0KHZhci5hKTsKKwkJCQkJaWYgKGZhbHNlKQorCQkJ
CQkJJHtGUkFHX0NPTE9SfS55encgPSB2YXIuYjsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQkj
IG1pc21hdGNoZWQgdHlwZSwgdmFyeWluZ3MgdW51c2VkIGluIGJvdGggKHJ1bnRpbWUpCisJCWNh
c2Ugc3RydWN0X3R5cGVfbWlzbWF0Y2hfMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInN0
cnVjdCBtZW1iZXIgbWlzbWF0Y2giCisJCQlleHBlY3QgbGlua19mYWlsCisJCQl2ZXJ0ZXggIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3Ry
dWN0IFMgeyBoaWdocCBmbG9hdCBhOyBoaWdocCB2ZWMyIGI7IH07CisJCQkJb3V0IFMgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIuYSA9IDIuMDsKKwkJCQkJaWYgKGZhbHNl
KQorCQkJCQkJdmFyLmIgPSB2ZWMyKDEuMCwgMC4wKTsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQor
CQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7
RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTIHsgaGlnaHAgZmxvYXQgYTsgaGln
aHAgdmVjMyBiOyB9OworCQkJCWluIFMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJ
CQkke0ZSQUdfQ09MT1J9ID0gdmVjNCh2YXIuYSk7CisJCQkJCWlmIChmYWxzZSkKKwkJCQkJCSR7
RlJBR19DT0xPUn0ueXp3ID0gdmFyLmI7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJIyBpbnRl
cnBvbGF0aW9uX21pc21hdGNoCisJCWNhc2UgaW50ZXJwb2xhdGlvbl9taXNtYXRjaF8xCisJCQl2
ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBpbnRlcnBvbGF0aW9uIGRpZmZlcmVudCAo
ZmxhdCB2cy4gc21vb3RoKSIKKwkJCWV4cGVjdCBsaW5rX2ZhaWwKKworCQkJdmVydGV4ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCWluIGhp
Z2hwIGZsb2F0IGluMDsKKwkJCQlmbGF0IG91dCBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJ
CQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJ
aW4gbWVkaXVtcCBmbG9hdCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7RlJB
R19DT0xPUn0gPSB2ZWM0KHZhcik7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJIyBkaWZmZXJl
bnQgaW50ZXJwb2xhdGlvbgorCQljYXNlIGRpZmZlcmluZ19pbnRlcnBvbGF0aW9uXzIKKwkJCXZl
cnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIGludGVycG9sYXRpb24gZGlmZmVyZW50IChz
bW9vdGggdnMuIGNlbnRyb2lkKSIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0IGZsb2F0IGlu
MAkJPSBbIC0xLjI1IHwgLTI1LjAgfCAxLjAgfCAyLjI1IHwgMy40IHwgMTYuMCBdOworCQkJCW91
dHB1dCBmbG9hdCBvdXQwCT0gWyAtMS4yNSB8IC0yNS4wIHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2
LjAgXTsKKwkJCX0KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtW
RVJURVhfREVDTEFSQVRJT05TfQorCQkJCXNtb290aCBvdXQgbWVkaXVtcCBmbG9hdCB2YXI7CisJ
CQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05T
fQorCQkJCWNlbnRyb2lkIGluIG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQllbmQKKworCQkjIG5vIGRlY2xhcmF0aW9uIGluIHZlcnRleCBzaGFkZXIsIGJ1dCBz
dGF0aWMgdXNlIGluIGZyYWdtZW50CisJCWNhc2UgaWxsZWdhbF91c2FnZV8xCisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBub3QgZGVjbGFyZWQgaW4gdmVydGV4IHNoYWRlciwg
YnV0IHN0YXRpY2FsbHkgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiCisJCQlleHBlY3QgbGlua19m
YWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNM
QVJBVElPTlN9CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0K
KwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkk
e0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHZhcjsKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQodmFyKTsKKwkJCQl9
CisJCQkiIgorCQllbmQKKworCQkjIG5vbi1mbGF0IGludGVnZXIgdmFyeWluZ3Mgbm90IGFsbG93
ZWQKKwkJY2FzZSBpbnZhbGlkX3R5cGVfaW50CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAi
aW50ZWdlciB2YXJ5aW5nIHVzZWQiCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJ0ZXgg
IiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJ
b3V0IG1lZGl1bXAgaW50IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtWRVJU
RVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgaW50IHZh
cjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQkjIG5vbi1mbGF0IGludGVnZXIgdmFyeWluZ3Mg
bm90IGFsbG93ZWQKKwkJY2FzZSBpbnZhbGlkX3R5cGVfdWludAorCQkJdmVyc2lvbiAzMDAgZXMK
KwkJCWRlc2MgImludGVnZXIgdmFyeWluZyB1c2VkIgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQkJCW91dCBtZWRpdW1wIHVpbnQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVk
aXVtcCB1aW50IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQkjIGJvb2wgdmFyeWluZ3Mg
bm90IGFsbG93ZWQKKwkJY2FzZSBpbnZhbGlkX3R5cGVfYm9vbAorCQkJdmVyc2lvbiAzMDAgZXMK
KwkJCWRlc2MgImJvb2xlYW4gdmFyeWluZyB1c2VkIgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJ
T05TfQorCQkJCW91dCBib29sIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtW
RVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIGJvb2wgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgaW52YWxpZF90eXBlX3N0cnVjdF9hcnJheQor
CQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgImZsb2F0IGFycmF5IGluc2lkZSBzdHJ1Y3QiCisJ
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIGZsb2F0
IGFbM107IH07CisJCQkJb3V0IFMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2
YXIuYVswXSA9IDEuMDsKKwkJCQkJdmFyLmFbMV0gPSAxLjA7CisJCQkJCXZhci5hWzJdID0gMS4w
OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtG
UkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIGZsb2F0IGFbM107
IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7RlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBpbnZhbGlk
X3R5cGVfc3RydWN0X3N0cnVjdAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInN0cnVjdCBp
bnNpZGUgc3RydWN0IgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmVydGV4ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBT
IHsgbWVkaXVtcCBmbG9hdCBhOyB9OworCQkJCXN0cnVjdCBUIHsgUyBzOyB9OworCQkJCW91dCBU
IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyLnMuYSA9IDEuMDsKKwkJCQkJ
JHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRf
REVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTIHsgbWVkaXVtcCBmbG9hdCBhOyB9OworCQkJCXN0
cnVjdCBUIHsgUyBzOyB9OworCQkJCWluIFQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQkke0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCisJ
CWNhc2UgaW52YWxpZF90eXBlX2FycmF5X3N0cnVjdAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRl
c2MgImFycmF5IG9mIHN0cnVjdHMiCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJ0ZXgg
IiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJ
c3RydWN0IFMgeyBtZWRpdW1wIGludCBhOyB9OworCQkJCWZsYXQgb3V0IFMgdmFyWzJdOworCQkJ
CXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0KKwkJCQkJdmFyWzBdLmEg
PSAxOworCQkJCQl2YXJbMV0uYSA9IDE7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5U
X0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgaW50IGE7IH07CisJCQkJZmxh
dCBpbiBTIHZhclsyXTsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9S
fSA9IHZlYzQoMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIGludmFsaWRfdHlw
ZV9hcnJheV9hcnJheQorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgImFycmF5IG9mIGFycmF5
cyIKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCB2
YXJbMl1bMl07CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQor
CQkJCQl2YXJbMF1bMF0gPSAxLjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQki
IgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHZhclsyXVsyXTsKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsKKwkJCQkJJHtGUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCQl9CisJCQki
IgorCQllbmQKKwllbmQKKworCWdyb3VwIGJhc2ljX3R5cGVzICJCYXNpYyB2YXJ5aW5nIHR5cGVz
IgorCQljYXNlIGZsb2F0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0
eXBlIGZsb2F0IgorCQkJdmFsdWVzCisJCQl7CisJCQkJaW5wdXQgZmxvYXQgaW4wCQk9IFsgLTEu
MjUgfCAtMjUuNjUgfCAxLjAgfCAyLjI1IHwgMy40IHwgMTYuMCBdOworCQkJCW91dHB1dCBmbG9h
dCBvdXQwCT0gWyAtMS4yNSB8IC0yNS42NSB8IDEuMCB8IDIuMjUgfCAzLjQgfCAxNi4wIF07CisJ
CQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNM
QVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQl2YXIgPSBpbjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQki
IgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBmbG9hdCB2
YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVjMgorCQkJdmVy
c2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSB2ZWMyIgorCQkJdmFsdWVzCisJ
CQl7CisJCQkJaW5wdXQgdmVjMiBpbjAJCT0gWyB2ZWMyKC0xLjI1LCAxLjI1KSB8IHZlYzIoLTI1
LjY1LCAtNy4yNSkgfCB2ZWMyKDAuMCwgMS4wKSB8IHZlYzIoMi4yNSwgMi4yNSkgfCB2ZWMyKDMu
NCwgOS41KSB8IHZlYzIoMTYuMCwgMzIuMCkgXTsKKwkJCQlvdXRwdXQgdmVjMiBvdXQwCT0gWyB2
ZWMyKC0xLjI1LCAxLjI1KSB8IHZlYzIoLTI1LjY1LCAtNy4yNSkgfCB2ZWMyKDAuMCwgMS4wKSB8
IHZlYzIoMi4yNSwgMi4yNSkgfCB2ZWMyKDMuNCwgOS41KSB8IHZlYzIoMTYuMCwgMzIuMCkgXTsK
KwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RF
Q0xBUkFUSU9OU30KKwkJCQlvdXQgbWVkaXVtcCB2ZWMyIHZhcjsKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJ
IiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gdmVjMiB2
YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJB
R01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVjMworCQkJdmVy
c2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSB2ZWMzIgorCQkJdmFsdWVzCisJ
CQl7CisJCQkJaW5wdXQgdmVjMyBpbjAJCT0gWyB2ZWMzKC0xLjI1LCAxLjI1LCAtOS41KSB8IHZl
YzMoLTI1LjY1LCAtNy4yNSwgMTQuMjEpIHwgdmVjMygwLjAsIDEuMCwgLTEuMCkgfCB2ZWMzKDIu
MjUsIDIuMjUsIDIyLjUpIHwgdmVjMygzLjQsIDkuNSwgMTkuNSkgfCB2ZWMzKDE2LjAsIDMyLjAs
IC02NC4wKSBdOworCQkJCW91dHB1dCB2ZWMzIG91dDAJPSBbIHZlYzMoLTEuMjUsIDEuMjUsIC05
LjUpIHwgdmVjMygtMjUuNjUsIC03LjI1LCAxNC4yMSkgfCB2ZWMzKDAuMCwgMS4wLCAtMS4wKSB8
IHZlYzMoMi4yNSwgMi4yNSwgMjIuNSkgfCB2ZWMzKDMuNCwgOS41LCAxOS41KSB8IHZlYzMoMTYu
MCwgMzIuMCwgLTY0LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgdmVjMyB2YXI7
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtWRVJURVhf
T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJ
T05TfQorCQkJCWluIHZlYzMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQw
ID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwor
CQljYXNlIHZlYzQKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUg
dmVjNCIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgtMS4y
NSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3Ljcp
IHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1
LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjkuNSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4w
LCAtMTI4LjApIF07CisJCQkJb3V0cHV0IHZlYzQgb3V0MAk9IFsgdmVjNCgtMS4yNSwgMS4yNSwg
LTkuNSwgLTEyLjIpIHwgdmVjNCgtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgw
LjAsIDEuMCwgLTEuMCwgMi4wKSB8IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVj
NCgzLjQsIDkuNSwgMTkuNSwgMjkuNSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjAp
IF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRF
WF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgdmVjNCB2YXI7CisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0K
KwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIHZl
YzQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkk
e0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIG1hdDIKKwkJ
CXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0MiIKKwkJCXZhbHVl
cworCQkJeworCQkJCWlucHV0IG1hdDIgaW4wCQk9IFsgbWF0MigxLjAsIDEuMCwgMS4wLCAxLjAp
IHwgbWF0MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgbWF0MigtMjUuNjUsIC03LjI1LCAx
NC4yMSwgLTc3LjcpIHwgbWF0MigwLjAsIDEuMCwgLTEuMCwgMi4wKSB8IG1hdDIoMi4yNSwgMi4y
NSwgMjIuNSwgMjI1LjApIHwgbWF0MigzLjQsIDkuNSwgMTkuNSwgMjkuNSkgfCBtYXQyKDE2LjAs
IDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQkJb3V0cHV0IG1hdDIgb3V0MAk9IFsgbWF0Migx
LjAsIDEuMCwgMS4wLCAxLjApIHwgbWF0MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgbWF0
MigtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgbWF0MigwLjAsIDEuMCwgLTEuMCwgMi4w
KSB8IG1hdDIoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgbWF0MigzLjQsIDkuNSwgMTkuNSwg
MjkuNSkgfCBtYXQyKDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQl9CisJCQl2ZXJ0
ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CQkJb3V0IG1lZGl1bXAgbWF0MiB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZh
ciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVu
dCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1hdDIgdmFyOworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0K
KwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIG1hdDJ4MworCQkJdmVyc2lvbiAzMDAgZXMK
KwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQyeDMiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlp
bnB1dCBtYXQyeDMgaW4wCT0gWyBtYXQyeDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUu
NjUsIC03LjI1KSBdOworCQkJCW91dHB1dCBtYXQyeDMgb3V0MAk9IFsgbWF0MngzKC0xLjI1LCAx
LjI1LCAtOS41LCAtMTIuMiwgLTI1LjY1LCAtNy4yNSkgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlvdXQg
bWVkaXVtcCBtYXQyeDMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSBp
bjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkk
e0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtYXQyeDMgdmFyOworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIG1hdDJ4NAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJ
CWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQyeDQiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1
dCBtYXQyeDQgaW4wCT0gWyBtYXQyeDQoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUs
IC03LjI1LCAxNC4yMSwgLTc3LjcpIF07CisJCQkJb3V0cHV0IG1hdDJ4NCBvdXQwCT0gWyBtYXQy
eDQoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3Ljcp
IF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRF
WF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgbWF0Mng0IHZhcjsKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsKKwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJ
fQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4g
bWF0Mng0IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjsKKwkJ
CQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQz
eDIKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0M3gyIgor
CQkJdmFsdWVzCisJCQl7CisJCQkJaW5wdXQgbWF0M3gyIGluMAk9IFsgbWF0M3gyKC0xLjI1LCAx
LjI1LCAtOS41LCAtMTIuMiwgLTI1LjY1LCAtNy4yNSkgXTsKKwkJCQlvdXRwdXQgbWF0M3gyIG91
dDAJPSBbIG1hdDN4MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0yNS42NSwgLTcuMjUpIF07
CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgbWF0M3gyIHZhcjsKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWF0
M3gyIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjsKKwkJCQkJ
JHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQzCisJ
CQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIG1hdDMiCisJCQl2YWx1
ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQzIGluMAkJPSBbIG1hdDMoLTEuMjUsIDEuMjUsIC05LjUs
IC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDkuOSkgfCBtYXQzKDAuMCwgMS4w
LCAtMS4wLCAyLjAsIDIuMjUsIDIuMjUsIDIyLjUsIDIyNS4wLCAtOS45KSB8IG1hdDMoMy40LCA5
LjUsIDE5LjUsIDI5LjUsIDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjAsIDI1Ni4wKSBdOworCQkJ
CW91dHB1dCBtYXQzIG91dDAJPSBbIG1hdDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUu
NjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDkuOSkgfCBtYXQzKDAuMCwgMS4wLCAtMS4wLCAyLjAs
IDIuMjUsIDIuMjUsIDIyLjUsIDIyNS4wLCAtOS45KSB8IG1hdDMoMy40LCA5LjUsIDE5LjUsIDI5
LjUsIDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjAsIDI1Ni4wKSBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CW91dCBtZWRpdW1wIG1hdDMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIg
PSBpbjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQg
IiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtYXQzIHZhcjsKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJ
CQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQzeDQKKwkJCXZlcnNpb24gMzAwIGVzCisJ
CQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0M3g0IgorCQkJdmFsdWVzCisJCQl7CisJCQkJaW5w
dXQgbWF0M3g0IGluMAk9IFsgbWF0M3g0KC0xLjI1LCAxLjI1LCAtOS41LCAtMTIuMiwgLTI1LjY1
LCAtNy4yNSwgMTQuMjEsIC03Ny43LCAwLjAsIDEuMCwgLTEuMCwgMi4wKSBdOworCQkJCW91dHB1
dCBtYXQzeDQgb3V0MAk9IFsgbWF0M3g0KC0xLjI1LCAxLjI1LCAtOS41LCAtMTIuMiwgLTI1LjY1
LCAtNy4yNSwgMTQuMjEsIC03Ny43LCAwLjAsIDEuMCwgLTEuMCwgMi4wKSBdOworCQkJfQorCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05T
fQorCQkJCW91dCBtZWRpdW1wIG1hdDN4NCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXZhciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlm
cmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1hdDN4NCB2YXI7CisJ
CQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJBR01FTlRf
T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgbWF0NHgyCisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIG1hdDR4MiIKKwkJCXZhbHVlcworCQkJ
eworCQkJCWlucHV0IG1hdDR4MiBpbjAJPSBbIG1hdDR4MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEy
LjIsIC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNykgXTsKKwkJCQlvdXRwdXQgbWF0NHgyIG91
dDAJPSBbIG1hdDR4MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0yNS42NSwgLTcuMjUsIDE0
LjIxLCAtNzcuNykgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlvdXQgbWVkaXVtcCBtYXQ0eDIgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSBpbjA7CisJCQkJCSR7VkVSVEVYX09V
VFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9O
U30KKwkJCQlpbiBtYXQ0eDIgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQw
ID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwor
CQljYXNlIG1hdDR4MworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlw
ZSBtYXQ0eDMiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQ0eDMgaW4wCT0gWyBtYXQ0
eDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3Ljcs
IDAuMCwgMS4wLCAtMS4wLCAyLjApIF07CisJCQkJb3V0cHV0IG1hdDR4MyBvdXQwCT0gWyBtYXQ0
eDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3Ljcs
IDAuMCwgMS4wLCAtMS4wLCAyLjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgbWF0
NHgzIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyID0gaW4wOworCQkJCQkk
e1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9E
RUNMQVJBVElPTlN9CisJCQkJaW4gbWF0NHgzIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJb3V0MCA9IHZhcjsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIK
KwkJZW5kCisKKwkJY2FzZSBtYXQ0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWlu
ZyBvZiB0eXBlIG1hdDQiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQ0IGluMAkJPSBb
IG1hdDQoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3
LjcsIDAuMCwgMS4wLCAtMS4wLCAyLjAsIDIuMjUsIDIuMjUsIDIyLjUsIDIyNS4wKSBdOworCQkJ
CW91dHB1dCBtYXQ0IG91dDAJPSBbIG1hdDQoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUu
NjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDAuMCwgMS4wLCAtMS4wLCAyLjAsIDIuMjUsIDIuMjUs
IDIyLjUsIDIyNS4wKSBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCW91dCBtZWRpdW1wIG1hdDQgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSBpbjA7CisJCQkJCSR7VkVSVEVYX09V
VFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9O
U30KKwkJCQlpbiBtYXQ0IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9
IHZhcjsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJ
Y2FzZSBpbnQKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgaW50
IgorCQkJdmFsdWVzCisJCQl7CisJCQkJaW5wdXQgaW50IGluMAkJPSBbIC0xIHwgLTI1IHwgMSB8
IDIgfCAzIHwgMTYgXTsKKwkJCQlvdXRwdXQgaW50IG91dDAJCT0gWyAtMSB8IC0yNSB8IDEgfCAy
IHwgMyB8IDE2IF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJZmxhdCBvdXQgbWVkaXVtcCBpbnQgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0KKwkJCQkJdmFyID0g
aW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIi
CisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJ
ZmxhdCBpbiBpbnQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFy
OworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNl
IGl2ZWMyCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIGl2ZWMy
IgorCQkJdmFsdWVzCisJCQl7CisJCQkJaW5wdXQgaXZlYzIgaW4wCQk9IFsgaXZlYzIoLTEsIDEp
IHwgaXZlYzIoLTI1LCAyNSkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDIsIDMpIHwgaXZlYzIoMTYs
IDE3KSBdOworCQkJCW91dHB1dCBpdmVjMiBvdXQwCT0gWyBpdmVjMigtMSwgMSkgfCBpdmVjMigt
MjUsIDI1KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMiwgMykgfCBpdmVjMigxNiwgMTcpIF07CisJ
CQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNM
QVJBVElPTlN9CisJCQkJZmxhdCBvdXQgbWVkaXVtcCBpdmVjMiB2YXI7CisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIgPSBpbjA7CisJCQkJCSR7
VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlmbGF0IGluIGl2ZWMy
IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjsKKwkJCQkJJHtG
UkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBpdmVjMworCQkJ
dmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBpdmVjMyIKKwkJCXZhbHVl
cworCQkJeworCQkJCWlucHV0IGl2ZWMzIGluMAkJPSBbIGl2ZWMzKC0xLCAxLCAtMikgfCBpdmVj
MygtMjUsIDI1LCAtMykgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDIsIDMsIDQpIHwgaXZlYzMo
MTYsIDE3LCAxOCkgXTsKKwkJCQlvdXRwdXQgaXZlYzMgb3V0MAk9IFsgaXZlYzMoLTEsIDEsIC0y
KSB8IGl2ZWMzKC0yNSwgMjUsIC0zKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMiwgMywgNCkg
fCBpdmVjMygxNiwgMTcsIDE4KSBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgb3V0IG1lZGl1bXAg
aXZlYzMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0K
KwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCQkJZmxhdCBpbiBpdmVjMyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJ
CWVuZAorCisJCWNhc2UgaXZlYzQKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5n
IG9mIHR5cGUgaXZlYzQiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBpdmVjNCBpbjAJCT0g
WyBpdmVjNCgtMSwgMSwgLTIsIDIpIHwgaXZlYzQoLTI1LCAyNSwgLTMsIDMpIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgyLCAzLCA0LCA1KSB8IGl2ZWM0KDE2LCAxNywgMTgsIDE5KSBdOwor
CQkJCW91dHB1dCBpdmVjNCBvdXQwCT0gWyBpdmVjNCgtMSwgMSwgLTIsIDIpIHwgaXZlYzQoLTI1
LCAyNSwgLTMsIDMpIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgyLCAzLCA0LCA1KSB8IGl2
ZWM0KDE2LCAxNywgMTgsIDE5KSBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgb3V0IG1lZGl1bXAg
aXZlYzQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0K
KwkJCQkJdmFyID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCQkJZmxhdCBpbiBpdmVjNCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJ
CWVuZAorCisJCWNhc2UgdWludAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmcg
b2YgdHlwZSBpbnQiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCB1aW50IGluMAkJCT0gWyAx
IHwgMiB8IDMgfCAxNiBdOworCQkJCW91dHB1dCB1aW50IG91dDAJCT0gWyAxIHwgMiB8IDMgfCAx
NiBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJU
RVhfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgb3V0IG1lZGl1bXAgdWludCB2YXI7CisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIgPSBpbjA7CisJ
CQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlmbGF0IGlu
IHVpbnQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJ
CQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHV2ZWMy
CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIHV2ZWMyIgorCQkJ
dmFsdWVzCisJCQl7CisJCQkJaW5wdXQgdXZlYzIgaW4wCQk9IFsgdXZlYzIoMSwgMSkgfCB1dmVj
MigyNSwgMjUpIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigyLCAzKSB8IHV2ZWMyKDE2LCAxNykgXTsK
KwkJCQlvdXRwdXQgdXZlYzIgb3V0MAk9IFsgdXZlYzIoMSwgMSkgfCB1dmVjMigyNSwgMjUpIHwg
dXZlYzIoMSwgMSkgfCB1dmVjMigyLCAzKSB8IHV2ZWMyKDE2LCAxNykgXTsKKwkJCX0KKwkJCXZl
cnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30K
KwkJCQlmbGF0IG91dCBtZWRpdW1wIHV2ZWMyIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgaW4gdXZlYzIgdmFyOworCQkJ
CXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5UX09V
VFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHV2ZWMzCisJCQl2ZXJzaW9uIDMw
MCBlcworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIHV2ZWMzIgorCQkJdmFsdWVzCisJCQl7CisJ
CQkJaW5wdXQgdXZlYzMgaW4wCQk9IFsgdXZlYzMoMSwgMSwgMikgfCB1dmVjMygyNSwgMjUsIDMp
IHwgdXZlYzMoMSwgMSwgMSkgfCB1dmVjMygyLCAzLCA0KSB8IHV2ZWMzKDE2LCAxNywgMTgpIF07
CisJCQkJb3V0cHV0IHV2ZWMzIG91dDAJPSBbIHV2ZWMzKDEsIDEsIDIpIHwgdXZlYzMoMjUsIDI1
LCAzKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMiwgMywgNCkgfCB1dmVjMygxNiwgMTcsIDE4
KSBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJU
RVhfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgb3V0IG1lZGl1bXAgdXZlYzMgdmFyOworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0KKwkJCQkJdmFyID0gaW4wOwor
CQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJZmxhdCBp
biB1dmVjMyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXI7CisJ
CQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdXZl
YzQKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdXZlYzQiCisJ
CQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCB1dmVjNCBpbjAJCT0gWyB1dmVjNCgxLCAxLCAyLCAy
KSB8IHV2ZWM0KDI1LCAyNSwgMywgMykgfCB1dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDIsIDMs
IDQsIDUpIHwgdXZlYzQoMTYsIDE3LCAxOCwgMTkpIF07CisJCQkJb3V0cHV0IHV2ZWM0IG91dDAJ
PSBbIHV2ZWM0KDEsIDEsIDIsIDIpIHwgdXZlYzQoMjUsIDI1LCAzLCAzKSB8IHV2ZWM0KDEsIDEs
IDEsIDEpIHwgdXZlYzQoMiwgMywgNCwgNSkgfCB1dmVjNCgxNiwgMTcsIDE4LCAxOSkgXTsKKwkJ
CX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xB
UkFUSU9OU30KKwkJCQlmbGF0IG91dCBtZWRpdW1wIHV2ZWM0IHZhcjsKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhciA9IGluMDsKKwkJCQkJJHtW
RVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWZsYXQgaW4gdXZlYzQg
dmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZS
QUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwllbmQKKworCWdyb3VwIHN0cnVj
dCAiU3RydWN0dXJlIHZhcnlpbmdzIgorCQljYXNlIGZsb2F0CisJCQl2ZXJzaW9uIDMwMCBlcwor
CQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIGZsb2F0IGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1ZXMK
KwkJCXsKKwkJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS42NSB8IDEuMCB8IDIu
MjUgfCAzLjQgfCAxNi4wIF07CisJCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC0xLjI1IHwgLTI1
LjY1IHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2LjAgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3Qg
UyB7IG1lZGl1bXAgZmxvYXQgYTsgfTsKKwkJCQlvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0
IFMgeyBtZWRpdW1wIGZsb2F0IGE7IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJ
fQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSB2ZWMyCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVz
YyAidmFyeWluZyBvZiB0eXBlIHZlYzIgaW5zaWRlIHN0cnVjdCIKKwkJCXZhbHVlcworCQkJewor
CQkJCWlucHV0IHZlYzIgaW4wCQk9IFsgdmVjMigtMS4yNSwgMS4yNSkgfCB2ZWMyKC0yNS42NSwg
LTcuMjUpIHwgdmVjMigwLjAsIDEuMCkgfCB2ZWMyKDIuMjUsIDIuMjUpIHwgdmVjMigzLjQsIDku
NSkgfCB2ZWMyKDE2LjAsIDMyLjApIF07CisJCQkJb3V0cHV0IHZlYzIgb3V0MAk9IFsgdmVjMigt
MS4yNSwgMS4yNSkgfCB2ZWMyKC0yNS42NSwgLTcuMjUpIHwgdmVjMigwLjAsIDEuMCkgfCB2ZWMy
KDIuMjUsIDIuMjUpIHwgdmVjMigzLjQsIDkuNSkgfCB2ZWMyKDE2LjAsIDMyLjApIF07CisJCQl9
CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJB
VElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIHZlYzIgYTsgfTsKKwkJCQlvdXQgUyB2YXI7
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRF
WF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIHZlYzIgYTsgfTsKKwkJCQlpbiBTIHZhcjsK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdN
RU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHZlYzMKKwkJCXZlcnNp
b24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdmVjMyBpbnNpZGUgc3RydWN0Igor
CQkJdmFsdWVzCisJCQl7CisJCQkJaW5wdXQgdmVjMyBpbjAJCT0gWyB2ZWMzKC0xLjI1LCAxLjI1
LCAtOS41KSB8IHZlYzMoLTI1LjY1LCAtNy4yNSwgMTQuMjEpIHwgdmVjMygwLjAsIDEuMCwgLTEu
MCkgfCB2ZWMzKDIuMjUsIDIuMjUsIDIyLjUpIHwgdmVjMygzLjQsIDkuNSwgMTkuNSkgfCB2ZWMz
KDE2LjAsIDMyLjAsIC02NC4wKSBdOworCQkJCW91dHB1dCB2ZWMzIG91dDAJPSBbIHZlYzMoLTEu
MjUsIDEuMjUsIC05LjUpIHwgdmVjMygtMjUuNjUsIC03LjI1LCAxNC4yMSkgfCB2ZWMzKDAuMCwg
MS4wLCAtMS4wKSB8IHZlYzMoMi4yNSwgMi4yNSwgMjIuNSkgfCB2ZWMzKDMuNCwgOS41LCAxOS41
KSB8IHZlYzMoMTYuMCwgMzIuMCwgLTY0LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMg
eyBtZWRpdW1wIHZlYzMgYTsgfTsKKwkJCQlvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJ
IiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMg
eyBtZWRpdW1wIHZlYzMgYTsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQllbmQKKworCQljYXNlIHZlYzQKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2
YXJ5aW5nIG9mIHR5cGUgdmVjNCBpbnNpZGUgc3RydWN0IgorCQkJdmFsdWVzCisJCQl7CisJCQkJ
aW5wdXQgdmVjNCBpbjAJCT0gWyB2ZWM0KC0xLjI1LCAxLjI1LCAtOS41LCAtMTIuMikgfCB2ZWM0
KC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNykgfCB2ZWM0KDAuMCwgMS4wLCAtMS4wLCAyLjAp
IHwgdmVjNCgyLjI1LCAyLjI1LCAyMi41LCAyMjUuMCkgfCB2ZWM0KDMuNCwgOS41LCAxOS41LCAy
OS41KSB8IHZlYzQoMTYuMCwgMzIuMCwgLTY0LjAsIC0xMjguMCkgXTsKKwkJCQlvdXRwdXQgdmVj
NCBvdXQwCT0gWyB2ZWM0KC0xLjI1LCAxLjI1LCAtOS41LCAtMTIuMikgfCB2ZWM0KC0yNS42NSwg
LTcuMjUsIDE0LjIxLCAtNzcuNykgfCB2ZWM0KDAuMCwgMS4wLCAtMS4wLCAyLjApIHwgdmVjNCgy
LjI1LCAyLjI1LCAyMi41LCAyMjUuMCkgfCB2ZWM0KDMuNCwgOS41LCAxOS41LCAyOS41KSB8IHZl
YzQoMTYuMCwgMzIuMCwgLTY0LjAsIC0xMjguMCkgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3Qg
UyB7IG1lZGl1bXAgdmVjNCBhOyB9OworCQkJCW91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJdmFyLmEgPSBpbjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3Qg
UyB7IG1lZGl1bXAgdmVjNCBhOyB9OworCQkJCWluIFMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQlvdXQwID0gdmFyLmE7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0K
KwkJCSIiCisJCWVuZAorCisJCWNhc2UgbWF0MgorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2Mg
InZhcnlpbmcgb2YgdHlwZSBtYXQyIGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1ZXMKKwkJCXsKKwkJ
CQlpbnB1dCBtYXQyIGluMAkJPSBbIG1hdDIoMS4wLCAxLjAsIDEuMCwgMS4wKSB8IG1hdDIoLTEu
MjUsIDEuMjUsIC05LjUsIC0xMi4yKSB8IG1hdDIoLTI1LjY1LCAtNy4yNSwgMTQuMjEsIC03Ny43
KSB8IG1hdDIoMC4wLCAxLjAsIC0xLjAsIDIuMCkgfCBtYXQyKDIuMjUsIDIuMjUsIDIyLjUsIDIy
NS4wKSB8IG1hdDIoMy40LCA5LjUsIDE5LjUsIDI5LjUpIHwgbWF0MigxNi4wLCAzMi4wLCAtNjQu
MCwgLTEyOC4wKSBdOworCQkJCW91dHB1dCBtYXQyIG91dDAJPSBbIG1hdDIoMS4wLCAxLjAsIDEu
MCwgMS4wKSB8IG1hdDIoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yKSB8IG1hdDIoLTI1LjY1LCAt
Ny4yNSwgMTQuMjEsIC03Ny43KSB8IG1hdDIoMC4wLCAxLjAsIC0xLjAsIDIuMCkgfCBtYXQyKDIu
MjUsIDIuMjUsIDIyLjUsIDIyNS4wKSB8IG1hdDIoMy40LCA5LjUsIDE5LjUsIDI5LjUpIHwgbWF0
MigxNi4wLCAzMi4wLCAtNjQuMCwgLTEyOC4wKSBdOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBT
IHsgbWVkaXVtcCBtYXQyIGE7IH07CisJCQkJb3V0IFMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJ
CSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBT
IHsgbWVkaXVtcCBtYXQyIGE7IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQyeDMKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNj
ICJ2YXJ5aW5nIG9mIHR5cGUgbWF0MngzIGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1ZXMKKwkJCXsK
KwkJCQlpbnB1dCBtYXQyeDMgaW4wCT0gWyBtYXQyeDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4y
LCAtMjUuNjUsIC03LjI1KSBdOworCQkJCW91dHB1dCBtYXQyeDMgb3V0MAk9IFsgbWF0MngzKC0x
LjI1LCAxLjI1LCAtOS41LCAtMTIuMiwgLTI1LjY1LCAtNy4yNSkgXTsKKwkJCX0KKwkJCXZlcnRl
eCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJ
CQlzdHJ1Y3QgUyB7IG1lZGl1bXAgbWF0MngzIGE7IH07CisJCQkJb3V0IFMgdmFyOworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVU
fQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQor
CQkJCXN0cnVjdCBTIHsgbWVkaXVtcCBtYXQyeDMgYTsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09V
VFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIG1hdDJ4NAorCQkJdmVyc2lvbiAz
MDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQyeDQgaW5zaWRlIHN0cnVjdCIKKwkJ
CXZhbHVlcworCQkJeworCQkJCWlucHV0IG1hdDJ4NCBpbjAJPSBbIG1hdDJ4NCgtMS4yNSwgMS4y
NSwgLTkuNSwgLTEyLjIsIC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNykgXTsKKwkJCQlvdXRw
dXQgbWF0Mng0IG91dDAJPSBbIG1hdDJ4NCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0yNS42
NSwgLTcuMjUsIDE0LjIxLCAtNzcuNykgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1l
ZGl1bXAgbWF0Mng0IGE7IH07CisJCQkJb3V0IFMgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJ
eworCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIi
CisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTIHsg
bWVkaXVtcCBtYXQyeDQgYTsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQllbmQKKworCQljYXNlIG1hdDN4MgorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2Mg
InZhcnlpbmcgb2YgdHlwZSBtYXQzeDIgaW5zaWRlIHN0cnVjdCIKKwkJCXZhbHVlcworCQkJewor
CQkJCWlucHV0IG1hdDN4MiBpbjAJPSBbIG1hdDN4MigtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIs
IC0yNS42NSwgLTcuMjUpIF07CisJCQkJb3V0cHV0IG1hdDN4MiBvdXQwCT0gWyBtYXQzeDIoLTEu
MjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1KSBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBtYXQzeDIgYTsgfTsKKwkJCQlvdXQgUyB2YXI7CisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9
CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJ
CQkJc3RydWN0IFMgeyBtZWRpdW1wIG1hdDN4MiBhOyB9OworCQkJCWluIFMgdmFyOworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyLmE7CisJCQkJCSR7RlJBR01FTlRfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgbWF0MworCQkJdmVyc2lvbiAzMDAg
ZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBtYXQzIGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1
ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQzIGluMAkJPSBbIG1hdDMoLTEuMjUsIDEuMjUsIC05LjUs
IC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDkuOSkgfCBtYXQzKDAuMCwgMS4w
LCAtMS4wLCAyLjAsIDIuMjUsIDIuMjUsIDIyLjUsIDIyNS4wLCAtOS45KSB8IG1hdDMoMy40LCA5
LjUsIDE5LjUsIDI5LjUsIDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjAsIDI1Ni4wKSBdOworCQkJ
CW91dHB1dCBtYXQzIG91dDAJPSBbIG1hdDMoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUu
NjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDkuOSkgfCBtYXQzKDAuMCwgMS4wLCAtMS4wLCAyLjAs
IDIuMjUsIDIuMjUsIDIyLjUsIDIyNS4wLCAtOS45KSB8IG1hdDMoMy40LCA5LjUsIDE5LjUsIDI5
LjUsIDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjAsIDI1Ni4wKSBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBtYXQzIGE7IH07CisJCQkJb3V0IFMgdmFyOworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQor
CQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBtYXQzIGE7IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9
CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQzeDQKKwkJCXZlcnNpb24gMzAwIGVz
CisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0M3g0IGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1
ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQzeDQgaW4wCT0gWyBtYXQzeDQoLTEuMjUsIDEuMjUsIC05
LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDAuMCwgMS4wLCAtMS4wLCAy
LjApIF07CisJCQkJb3V0cHV0IG1hdDN4NCBvdXQwCT0gWyBtYXQzeDQoLTEuMjUsIDEuMjUsIC05
LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDAuMCwgMS4wLCAtMS4wLCAy
LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIG1hdDN4NCBhOyB9Owor
CQkJCW91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyLmEgPSBpbjA7
CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZS
QUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgbWF0M3g0IGE7IH07
CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXIu
YTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2Fz
ZSBtYXQ0eDIKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0
NHgyIGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQ0eDIgaW4w
CT0gWyBtYXQ0eDIoLTEuMjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4y
MSwgLTc3LjcpIF07CisJCQkJb3V0cHV0IG1hdDR4MiBvdXQwCT0gWyBtYXQ0eDIoLTEuMjUsIDEu
MjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIF07CisJCQl9CisJ
CQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElP
TlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIG1hdDR4MiBhOyB9OworCQkJCW91dCBTIHZhcjsK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyLmEgPSBpbjA7CisJCQkJCSR7VkVSVEVY
X09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFU
SU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgbWF0NHgyIGE7IH07CisJCQkJaW4gUyB2YXI7
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFH
TUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBtYXQ0eDMKKwkJCXZl
cnNpb24gMzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgbWF0NHgzIGluc2lkZSBzdHJ1
Y3QiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBtYXQ0eDMgaW4wCT0gWyBtYXQ0eDMoLTEu
MjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDAuMCwg
MS4wLCAtMS4wLCAyLjApIF07CisJCQkJb3V0cHV0IG1hdDR4MyBvdXQwCT0gWyBtYXQ0eDMoLTEu
MjUsIDEuMjUsIC05LjUsIC0xMi4yLCAtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcsIDAuMCwg
MS4wLCAtMS4wLCAyLjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIG1h
dDR4MyBhOyB9OworCQkJCW91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
dmFyLmEgPSBpbjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJh
Z21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAg
bWF0NHgzIGE7IH07CisJCQkJaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJ
CW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJ
ZW5kCisKKwkJY2FzZSBtYXQ0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBv
ZiB0eXBlIG1hdDQgaW5zaWRlIHN0cnVjdCIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0IG1h
dDQgaW4wCQk9IFsgbWF0NCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIsIC0yNS42NSwgLTcuMjUs
IDE0LjIxLCAtNzcuNywgMC4wLCAxLjAsIC0xLjAsIDIuMCwgMi4yNSwgMi4yNSwgMjIuNSwgMjI1
LjApIF07CisJCQkJb3V0cHV0IG1hdDQgb3V0MAk9IFsgbWF0NCgtMS4yNSwgMS4yNSwgLTkuNSwg
LTEyLjIsIC0yNS42NSwgLTcuMjUsIDE0LjIxLCAtNzcuNywgMC4wLCAxLjAsIC0xLjAsIDIuMCwg
Mi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBt
ZWRpdW1wIG1hdDQgYTsgfTsKKwkJCQlvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIK
KwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBt
ZWRpdW1wIG1hdDQgYTsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQki
IgorCQllbmQKKworCQljYXNlIGludAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlp
bmcgb2YgdHlwZSBpbnQgaW5zaWRlIHN0cnVjdCIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0
IGludCBpbjAJCT0gWyAtMSB8IC0yNSB8IDEgfCAyIHwgMyB8IDE2IF07CisJCQkJb3V0cHV0IGlu
dCBvdXQwCQk9IFsgLTEgfCAtMjUgfCAxIHwgMiB8IDMgfCAxNiBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBpbnQgYTsgfTsKKwkJCQlmbGF0IG91dCBTIHZhcjsKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhci5hID0gaW4w
OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3Ry
dWN0IFMgeyBtZWRpdW1wIGludCBhOyB9OworCQkJCWZsYXQgaW4gUyB2YXI7CisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9
CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBpdmVjMgorCQkJdmVyc2lvbiAzMDAgZXMK
KwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBpdmVjMiBpbnNpZGUgc3RydWN0IgorCQkJdmFsdWVz
CisJCQl7CisJCQkJaW5wdXQgaXZlYzIgaW4wCQk9IFsgaXZlYzIoLTEsIDEpIHwgaXZlYzIoLTI1
LCAyNSkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDIsIDMpIHwgaXZlYzIoMTYsIDE3KSBdOworCQkJ
CW91dHB1dCBpdmVjMiBvdXQwCT0gWyBpdmVjMigtMSwgMSkgfCBpdmVjMigtMjUsIDI1KSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMiwgMykgfCBpdmVjMigxNiwgMTcpIF07CisJCQl9CisJCQl2ZXJ0
ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CQkJc3RydWN0IFMgeyBtZWRpdW1wIGl2ZWMyIGE7IH07CisJCQkJZmxhdCBvdXQgUyB2YXI7CisJ
CQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIuYSA9
IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAi
IgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBpdmVjMiBhOyB9OworCQkJCWZsYXQgaW4gUyB2YXI7CisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9P
VVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBpdmVjMworCQkJdmVyc2lvbiAz
MDAgZXMKKwkJCWRlc2MgInZhcnlpbmcgb2YgdHlwZSBpdmVjMyBpbnNpZGUgc3RydWN0IgorCQkJ
dmFsdWVzCisJCQl7CisJCQkJaW5wdXQgaXZlYzMgaW4wCQk9IFsgaXZlYzMoLTEsIDEsIC0yKSB8
IGl2ZWMzKC0yNSwgMjUsIC0zKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMiwgMywgNCkgfCBp
dmVjMygxNiwgMTcsIDE4KSBdOworCQkJCW91dHB1dCBpdmVjMyBvdXQwCT0gWyBpdmVjMygtMSwg
MSwgLTIpIHwgaXZlYzMoLTI1LCAyNSwgLTMpIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygyLCAz
LCA0KSB8IGl2ZWMzKDE2LCAxNywgMTgpIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBt
ZWRpdW1wIGl2ZWMzIGE7IH07CisJCQkJZmxhdCBvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJJHtW
RVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTIHsgbWVk
aXVtcCBpdmVjMyBhOyB9OworCQkJCWZsYXQgaW4gUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CisJCQkJCW91dDAgPSB2YXIuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJZW5kCisKKwkJY2FzZSBpdmVjNAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2Mg
InZhcnlpbmcgb2YgdHlwZSBpdmVjNCBpbnNpZGUgc3RydWN0IgorCQkJdmFsdWVzCisJCQl7CisJ
CQkJaW5wdXQgaXZlYzQgaW4wCQk9IFsgaXZlYzQoLTEsIDEsIC0yLCAyKSB8IGl2ZWM0KC0yNSwg
MjUsIC0zLCAzKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMiwgMywgNCwgNSkgfCBpdmVj
NCgxNiwgMTcsIDE4LCAxOSkgXTsKKwkJCQlvdXRwdXQgaXZlYzQgb3V0MAk9IFsgaXZlYzQoLTEs
IDEsIC0yLCAyKSB8IGl2ZWM0KC0yNSwgMjUsIC0zLCAzKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMiwgMywgNCwgNSkgfCBpdmVjNCgxNiwgMTcsIDE4LCAxOSkgXTsKKwkJCX0KKwkJCXZl
cnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30K
KwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgaXZlYzQgYTsgfTsKKwkJCQlmbGF0IG91dCBTIHZhcjsK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhci5h
ID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJ
CQkJc3RydWN0IFMgeyBtZWRpdW1wIGl2ZWM0IGE7IH07CisJCQkJZmxhdCBpbiBTIHZhcjsKKwkJ
CQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5U
X09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHVpbnQKKwkJCXZlcnNpb24g
MzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdWludCBpbiBzdHJ1Y3QiCisJCQl2YWx1
ZXMKKwkJCXsKKwkJCQlpbnB1dCB1aW50IGluMAkJCT0gWyAxIHwgMiB8IDMgfCAxNiBdOworCQkJ
CW91dHB1dCB1aW50IG91dDAJCT0gWyAxIHwgMiB8IDMgfCAxNiBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCB1aW50IGE7IH07CisJCQkJZmxhdCBvdXQgUyB2YXI7CisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIuYSA9IGlu
MDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXN0
cnVjdCBTIHsgbWVkaXVtcCB1aW50IGE7IH07CisJCQkJZmxhdCBpbiBTIHZhcjsKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBV
VH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHV2ZWMyCisJCQl2ZXJzaW9uIDMwMCBl
cworCQkJZGVzYyAidmFyeWluZyBvZiB0eXBlIHV2ZWMyIGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1
ZXMKKwkJCXsKKwkJCQlpbnB1dCB1dmVjMiBpbjAJCT0gWyB1dmVjMigxLCAxKSB8IHV2ZWMyKDI1
LCAyNSkgfCB1dmVjMigxLCAxKSB8IHV2ZWMyKDIsIDMpIHwgdXZlYzIoMTYsIDE3KSBdOworCQkJ
CW91dHB1dCB1dmVjMiBvdXQwCT0gWyB1dmVjMigxLCAxKSB8IHV2ZWMyKDI1LCAyNSkgfCB1dmVj
MigxLCAxKSB8IHV2ZWMyKDIsIDMpIHwgdXZlYzIoMTYsIDE3KSBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCB1dmVjMiBhOyB9OworCQkJCWZsYXQgb3V0IFMgdmFyOworCQkJ
CXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1ZFUlRFWF9TRVRVUH0KKwkJCQkJdmFyLmEgPSBp
bjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlz
dHJ1Y3QgUyB7IG1lZGl1bXAgdXZlYzIgYTsgfTsKKwkJCQlmbGF0IGluIFMgdmFyOworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyLmE7CisJCQkJCSR7RlJBR01FTlRfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdXZlYzMKKwkJCXZlcnNpb24gMzAw
IGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdXZlYzMgaW5zaWRlIHN0cnVjdCIKKwkJCXZh
bHVlcworCQkJeworCQkJCWlucHV0IHV2ZWMzIGluMAkJPSBbIHV2ZWMzKDEsIDEsIDIpIHwgdXZl
YzMoMjUsIDI1LCAzKSB8IHV2ZWMzKDEsIDEsIDEpIHwgdXZlYzMoMiwgMywgNCkgfCB1dmVjMygx
NiwgMTcsIDE4KSBdOworCQkJCW91dHB1dCB1dmVjMyBvdXQwCT0gWyB1dmVjMygxLCAxLCAyKSB8
IHV2ZWMzKDI1LCAyNSwgMykgfCB1dmVjMygxLCAxLCAxKSB8IHV2ZWMzKDIsIDMsIDQpIHwgdXZl
YzMoMTYsIDE3LCAxOCkgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgdXZl
YzMgYTsgfTsKKwkJCQlmbGF0IG91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQ
VVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1wIHV2ZWMz
IGE7IH07CisJCQkJZmxhdCBpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
b3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQll
bmQKKworCQljYXNlIHV2ZWM0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAidmFyeWluZyBv
ZiB0eXBlIHV2ZWM0IGluc2lkZSBzdHJ1Y3QiCisJCQl2YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCB1
dmVjNCBpbjAJCT0gWyB1dmVjNCgxLCAxLCAyLCAyKSB8IHV2ZWM0KDI1LCAyNSwgMywgMykgfCB1
dmVjNCgxLCAxLCAxLCAxKSB8IHV2ZWM0KDIsIDMsIDQsIDUpIHwgdXZlYzQoMTYsIDE3LCAxOCwg
MTkpIF07CisJCQkJb3V0cHV0IHV2ZWM0IG91dDAJPSBbIHV2ZWM0KDEsIDEsIDIsIDIpIHwgdXZl
YzQoMjUsIDI1LCAzLCAzKSB8IHV2ZWM0KDEsIDEsIDEsIDEpIHwgdXZlYzQoMiwgMywgNCwgNSkg
fCB1dmVjNCgxNiwgMTcsIDE4LCAxOSkgXTsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1l
ZGl1bXAgdXZlYzQgYTsgfTsKKwkJCQlmbGF0IG91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJJHtWRVJURVhfU0VUVVB9CisJCQkJCXZhci5hID0gaW4wOworCQkJCQkke1ZF
UlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRp
dW1wIHV2ZWM0IGE7IH07CisJCQkJZmxhdCBpbiBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQllbmQKKworCQljYXNlIGZsb2F0X3ZlYzMKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlk
ZXNjICJ2YXJ5aW5ncyBvZiB0eXBlIGZsb2F0IGFuZCB2ZWMzIGluc2lkZSBzdHJ1Y3QiCisJCQl2
YWx1ZXMKKwkJCXsKKwkJCQlpbnB1dCBmbG9hdCBpbjAJCT0gWyAtMS4yNSB8IC0yNS42NSB8IDEu
MCB8IDIuMjUgfCAzLjQgfCAxNi4wIF07CisJCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIC0xLjI1
IHwgLTI1LjY1IHwgMS4wIHwgMi4yNSB8IDMuNCB8IDE2LjAgXTsKKwkJCQlpbnB1dCB2ZWMzIGlu
MQkJPSBbIHZlYzMoLTEuMjUsIDEuMjUsIC05LjUpIHwgdmVjMygtMjUuNjUsIC03LjI1LCAxNC4y
MSkgfCB2ZWMzKDAuMCwgMS4wLCAtMS4wKSB8IHZlYzMoMi4yNSwgMi4yNSwgMjIuNSkgfCB2ZWMz
KDMuNCwgOS41LCAxOS41KSB8IHZlYzMoMTYuMCwgMzIuMCwgLTY0LjApIF07CisJCQkJb3V0cHV0
IHZlYzMgb3V0MQk9IFsgdmVjMygtMS4yNSwgMS4yNSwgLTkuNSkgfCB2ZWMzKC0yNS42NSwgLTcu
MjUsIDE0LjIxKSB8IHZlYzMoMC4wLCAxLjAsIC0xLjApIHwgdmVjMygyLjI1LCAyLjI1LCAyMi41
KSB8IHZlYzMoMy40LCA5LjUsIDE5LjUpIHwgdmVjMygxNi4wLCAzMi4wLCAtNjQuMCkgXTsKKwkJ
CX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xB
UkFUSU9OU30KKwkJCQlzdHJ1Y3QgUyB7IG1lZGl1bXAgZmxvYXQgYTsgaGlnaHAgdmVjMyBiOyB9
OworCQkJCW91dCBTIHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyLmEgPSBp
bjA7CisJCQkJCXZhci5iID0gaW4xOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJ
IiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMg
eyBtZWRpdW1wIGZsb2F0IGE7IGhpZ2hwIHZlYzMgYjsgfTsKKwkJCQlpbiBTIHZhcjsKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhci5hOworCQkJCQlvdXQxID0gdmFyLmI7
CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2Ug
ZmxvYXRfdXZlYzJfdmVjMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgInZhcnlpbmdzIG9m
IHR5cGUgZmxvYXQgYW5kIHZlYzMgaW5zaWRlIHN0cnVjdCIKKwkJCXZhbHVlcworCQkJeworCQkJ
CWlucHV0IGZsb2F0IGluMAkJPSBbIC0xLjI1IHwgLTI1LjY1IHwgMS4wIHwgMi4yNSB8IDMuNCB8
IDE2LjAgXTsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0MAk9IFsgLTEuMjUgfCAtMjUuNjUgfCAxLjAg
fCAyLjI1IHwgMy40IHwgMTYuMCBdOworCQkJCWlucHV0IHV2ZWMyIGluMQkJPSBbIHV2ZWMyKDEs
IDEpIHwgdXZlYzIoMjUsIDI1KSB8IHV2ZWMyKDEsIDEpIHwgdXZlYzIoMiwgMykgfCB1dmVjMigx
NiwgMTcpIHwgdXZlYzIoOCwgNykgXTsKKwkJCQlvdXRwdXQgdXZlYzIgb3V0MQk9IFsgdXZlYzIo
MSwgMSkgfCB1dmVjMigyNSwgMjUpIHwgdXZlYzIoMSwgMSkgfCB1dmVjMigyLCAzKSB8IHV2ZWMy
KDE2LCAxNykgfCB1dmVjMig4LCA3KSBdOworCQkJCWlucHV0IHZlYzMgaW4yCQk9IFsgdmVjMygt
MS4yNSwgMS4yNSwgLTkuNSkgfCB2ZWMzKC0yNS42NSwgLTcuMjUsIDE0LjIxKSB8IHZlYzMoMC4w
LCAxLjAsIC0xLjApIHwgdmVjMygyLjI1LCAyLjI1LCAyMi41KSB8IHZlYzMoMy40LCA5LjUsIDE5
LjUpIHwgdmVjMygxNi4wLCAzMi4wLCAtNjQuMCkgXTsKKwkJCQlvdXRwdXQgdmVjMyBvdXQyCT0g
WyB2ZWMzKC0xLjI1LCAxLjI1LCAtOS41KSB8IHZlYzMoLTI1LjY1LCAtNy4yNSwgMTQuMjEpIHwg
dmVjMygwLjAsIDEuMCwgLTEuMCkgfCB2ZWMzKDIuMjUsIDIuMjUsIDIyLjUpIHwgdmVjMygzLjQs
IDkuNSwgMTkuNSkgfCB2ZWMzKDE2LjAsIDMyLjAsIC02NC4wKSBdOworCQkJfQorCQkJdmVydGV4
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJ
CXN0cnVjdCBTIHsgbWVkaXVtcCBmbG9hdCBhOyBoaWdocCB1dmVjMiBiOyBoaWdocCB2ZWMzIGM7
IH07CisJCQkJZmxhdCBvdXQgUyB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7
VkVSVEVYX1NFVFVQfQorCQkJCQl2YXIuYSA9IGluMDsKKwkJCQkJdmFyLmIgPSBpbjE7CisJCQkJ
CXZhci5jID0gaW4yOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZy
YWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFMgeyBtZWRpdW1w
IGZsb2F0IGE7IGhpZ2hwIHV2ZWMyIGI7IGhpZ2hwIHZlYzMgYzsgfTsKKwkJCQlmbGF0IGluIFMg
dmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyLmE7CisJCQkJCW91
dDEgPSB2YXIuYjsKKwkJCQkJb3V0MiA9IHZhci5jOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0K
KwkJCQl9CisJCQkiIgorCQllbmQKKwllbmQKKworCWdyb3VwIGludGVycG9sYXRpb24gIlZhcnlp
bmcgaW50ZXJwb2xhdGlvbiBtb2RlcyIKKwkJY2FzZSBzbW9vdGgKKwkJCXZlcnNpb24gMzAwIGVz
CisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdmVjNCIKKwkJCXZhbHVlcworCQkJeworCQkJCWlu
cHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgt
MjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8
IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjku
NSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQkJb3V0cHV0IHZlYzQg
b3V0MAk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgtMjUuNjUsIC03
LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8IHZlYzQoMi4y
NSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjkuNSkgfCB2ZWM0
KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc21vb3RoIG91
dCBtZWRpdW1wIHZlYzQgdmFyOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl2YXIgPSBp
bjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkk
e0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlzbW9vdGggaW4gdmVjNCB2YXI7CisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAgPSB2YXI7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVU
fQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgY2VudHJvaWQKKwkJCXZlcnNpb24gMzAw
IGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdmVjNCIKKwkJCXZhbHVlcworCQkJeworCQkJ
CWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVj
NCgtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4w
KSB8IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwg
MjkuNSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQkJb3V0cHV0IHZl
YzQgb3V0MAk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgtMjUuNjUs
IC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8IHZlYzQo
Mi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjkuNSkgfCB2
ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJY2VudHJv
aWQgb3V0IG1lZGl1bXAgdmVjNCB2YXI7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXZh
ciA9IGluMDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVu
dCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWNlbnRyb2lkIGluIHZlYzQgdmFyOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFyOworCQkJCQkke0ZSQUdNRU5U
X09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIGZsYXQKKwkJCXZlcnNpb24g
MzAwIGVzCisJCQlkZXNjICJ2YXJ5aW5nIG9mIHR5cGUgdmVjNCIKKwkJCXZhbHVlcworCQkJewor
CQkJCWlucHV0IHZlYzQgaW4wCQk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwg
dmVjNCgtMjUuNjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwg
Mi4wKSB8IHZlYzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTku
NSwgMjkuNSkgfCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQkJb3V0cHV0
IHZlYzQgb3V0MAk9IFsgdmVjNCgtMS4yNSwgMS4yNSwgLTkuNSwgLTEyLjIpIHwgdmVjNCgtMjUu
NjUsIC03LjI1LCAxNC4yMSwgLTc3LjcpIHwgdmVjNCgwLjAsIDEuMCwgLTEuMCwgMi4wKSB8IHZl
YzQoMi4yNSwgMi4yNSwgMjIuNSwgMjI1LjApIHwgdmVjNCgzLjQsIDkuNSwgMTkuNSwgMjkuNSkg
fCB2ZWM0KDE2LjAsIDMyLjAsIC02NC4wLCAtMTI4LjApIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJZmxh
dCBvdXQgbWVkaXVtcCB2ZWM0IHZhcjsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFy
ID0gaW4wOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJZmxhdCBpbiB2ZWM0IHZhcjsKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQ
VVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJZW5kCisKKwlncm91cCB1c2FnZSAiVmFyeWluZyB1
c2FnZSBpbiBzaGFkZXJzIgorCQljYXNlIHJlYWRiYWNrXzEKKwkJCXZlcnNpb24gMzAwIGVzCisJ
CQlkZXNjICJyZWFkIGJhY2sgKGFuIGFscmVhZHkgd3JpdHRlbikgdmFyeWluZyBpbiB0aGUgdmVy
dGV4IHNoYWRlciIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0IGZsb2F0IGluMAkJPSBbIDEu
MCB8IDAuMCB8IC0yLjAgfCAxMC4wIF07CisJCQkJb3V0cHV0IGZsb2F0IG91dDAJPSBbIDMuMCB8
IDAuMCB8IC02LjAgfCAzMC4wIF07CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke1ZFUlRFWF9ERUNMQVJB
VElPTlN9CisJCQkJb3V0IGZsb2F0IHZhcjE7CisJCQkJb3V0IGZsb2F0IHZhcjI7CisKKwkJCQl2
b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyMSA9IGluMDsKKwkJCQkJdmFyMiA9IHZhcjEgKyBp
bjA7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkk
e0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBmbG9hdCB2YXIxOworCQkJCWluIGZsb2F0
IHZhcjI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhcjEgKyB2YXIy
OworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNl
IHdyaXRlYmFja18xCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAid3JpdGUgYmFjayBhIHZh
cnlpbmcgaW4gdGhlIGZyYWdtZW50IHNoYWRlciIKKwkJCXZhbHVlcworCQkJeworCQkJCWlucHV0
IGZsb2F0IGluMAkJPSBbIDEuMCB8IDAuMCB8IC0yLjAgfCAxMC4wIF07CisJCQl9CisJCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJ
b3V0IGZsb2F0IHZhcjE7CisJCQkJb3V0IGZsb2F0IHZhcjI7CisKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJdmFyMSA9IGluMDsKKwkJCQkJdmFyMiA9IHZhcjEgKyBpbjA7CisJCQkJCSR7
VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJCQlpbiBmbG9hdCB2YXIxOworCQkJCWluIGZsb2F0IHZhcjI7CisKKwkJ
CQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJdmFyMiA9IHZhcjE7CisJCQkJCW91dDAgPSB2YXIx
OworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwllbmQKK2Vu
ZAorCitncm91cCB1bmlmb3JtICJVbmlmb3JtIGxpbmthZ2UiCisJZ3JvdXAgYmFzaWMgIkRlZmF1
bHQgYmxvY2sgdW5pZm9ybXMgb2Ygc2NhbGFyIGFuZCB2ZWN0b3IgdHlwZXMiCisJCWNhc2UgcHJl
Y2lzaW9uX2NvbmZsaWN0XzEKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJWZXJ0ZXggc2lk
ZSB1bmlmb3JtIGhhcyBoaWdocCwgZnJhZ21lbnQgc2lkZSB1bmlmb3JtIG1lZGl1bXAuIgorCQkJ
ZXhwZWN0IGxpbmtfZmFpbAorCQkJdmFsdWVzIHtvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDt9CisJ
CQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElP
TlN9CisJCQkJdW5pZm9ybSBoaWdocCBmbG9hdCB1X3ZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9h
dCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHVfdmFsOworCQkJCQkk
e1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJdW5pZm9ybSBmbG9h
dCB1X3ZhbDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZs
b2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHVfdmFsICsgcmVz
OworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBw
cmVjaXNpb25fY29uZmxpY3RfMgorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlZlcnRleCBz
aWRlIHVuaWZvcm0gaGFzIGhpZ2hwLCBmcmFnbWVudCBzaWRlIHVuaWZvcm0gbWVkaXVtcC4iCisJ
CQlleHBlY3QgbGlua19mYWlsCisJCQl2YWx1ZXMge291dHB1dCBmbG9hdCBvdXQwID0gMy4wO30K
KwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfdmFsOworCQkJCW91dCBtZWRpdW1wIGZs
b2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJcmVzID0gdV92YWw7CisJCQkJ
CSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkJdW5pZm9ybSBtZWRp
dW1wIGZsb2F0IHVfdmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1l
ZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdV92
YWwgKyByZXM7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAor
CQljYXNlIHByZWNpc2lvbl9jb25mbGljdF8zCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAi
VmVydGV4IHNpZGUgdW5pZm9ybSBoYXMgbG93cCwgZnJhZ21lbnQgc2lkZSB1bmlmb3JtIGhpZ2hw
LiIKKwkJCWV4cGVjdCBsaW5rX2ZhaWwKKwkJCXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAgPSAz
LjA7fQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVD
TEFSQVRJT05TfQorCQkJCXVuaWZvcm0gbG93cCBpbnQgdV92YWw7CisJCQkJb3V0IG1lZGl1bXAg
ZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlyZXMgPSBmbG9hdCh1X3Zh
bCk7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkJdW5p
Zm9ybSBoaWdocCBpbnQgdV92YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJ
aW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCW91dDAg
PSBmbG9hdCh1X3ZhbCkgKyByZXM7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJ
CSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9jb25mbGljdF80CisJCQl2ZXJzaW9uIDMwMCBl
cworCQkJZGVzYyAiVmVydGV4IHNpZGUgdW5pZm9ybSBoYXMgbG93cCwgZnJhZ21lbnQgc2lkZSB1
bmlmb3JtIG1lZGl1bXAuIgorCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmFsdWVzIHtvdXRwdXQg
ZmxvYXQgb3V0MCA9IDMuMDt9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJdW5pZm9ybSBsb3dwIHZlYzMgdV92YWw7CisJ
CQkJb3V0IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQly
ZXMgPSB1X3ZhbC55OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZy
YWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworCQkJCXVuaWZvcm0gbWVkaXVtcCB2ZWMzIHVfdmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFS
QVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJ
eworCQkJCQlvdXQwID0gdV92YWwueiArIHJlczsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJ
CQkJfQorCQkJIiIKKwkJZW5kCisJZW5kCisKKwlncm91cCBzdHJ1Y3QgIlVuaWZvcm0gc3RydWN0
cyIKKwkJIyBTdHJ1Y3QgbGlua2FnZSBoYW5kbGluZworCQljYXNlIGJhc2ljCisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJZGVzYyAiU2FtZSB1bmlmb3JtIHN0cnVjdCBpbiBib3RoIHNoYWRlcnMiCisJ
CQl2YWx1ZXMgeworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmEgPSAxLjA7CisJCQkJdW5pZm9ybSBm
bG9hdCB2YWwuYiA9IDIuMDsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwkJCX0KKwkJ
CXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9O
U30KKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7IG1lZGl1bXAgZmxvYXQgYjt9
OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCBkdW1teTsK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZHVtbXkgPSB2YWwuYSArIHZhbC5iOworCQkJ
CQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0
cnVjdCB7bWVkaXVtcCBmbG9hdCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJCQl1bmlmb3JtIFN0
cnVjdCB2YWw7CisJCQkJaW4gbWVkaXVtcCBmbG9hdCBkdW1teTsKKwkJCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhbC5iICsg
dmFsLmE7CisJCQkJCW91dDAgPSBvdXQwICsgZHVtbXk7CisJCQkJCW91dDAgPSBvdXQwIC0gZHVt
bXk7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNh
c2UgdmVydGV4X29ubHkKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJVbmlmb3JtIHN0cnVj
dCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIG9ubHkgaW4gdmVydGV4LiIKKwkJCXZhbHVlcyB7CisJ
CQkJdW5pZm9ybSBmbG9hdCB2YWwuYSA9IDEuMDsKKwkJCQl1bmlmb3JtIGZsb2F0IHZhbC5iID0g
Mi4wOworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVj
dCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJCQkJdW5pZm9y
bSBTdHJ1Y3QgdmFsOworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJcmVzID0gdmFsLmEgKyB2YWwuYjsKKwkJCQkJJHtWRVJURVhfT1VUUFVU
fQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxv
YXQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCWlu
IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gcmVzOworCQkJCQkke0ZSQUdNRU5UX09VVFBV
VH0KKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIGZyYWdtZW50X29ubHkKKwkJCXZlcnNp
b24gMzAwIGVzCisJCQlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2Vk
IG9ubHkgaW4gZnJhZ21lbnQuIgorCQkJdmFsdWVzIHsKKwkJCQl1bmlmb3JtIGZsb2F0IHZhbC5h
ID0gMS4wOworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7CisJCQkJb3V0cHV0IGZsb2F0
IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBmbG9h
dCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJ
ZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7IG1lZGl1bXAgZmxvYXQg
Yjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9O
U30KKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJb3V0MCA9IHZhbC5hICsgdmFsLmI7CisJ
CQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcGFy
dGlhbAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVk
IGluIGJvdGgsIHVzZWQgcGFydGlhbGx5IGluIGJvdGguIgorCQkJdmFsdWVzIHsKKwkJCQl1bmlm
b3JtIGZsb2F0IHZhbC5hID0gMS4wOworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7CisJ
CQkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVj
dCB7bWVkaXVtcCBmbG9hdCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVj
dCB2YWw7CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJ
eworCQkJCQlyZXMgPSB2YWwuYTsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIi
CisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVtcCBm
bG9hdCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFS
QVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJ
eworCQkJCQlvdXQwID0gcmVzICsgdmFsLmI7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJ
CX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVjNAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRl
c2MgIlNhbWUgdW5pZm9ybSBzdHJ1Y3QgaW4gYm90aCBzaGFkZXJzLiBEYXRhdHlwZSB2ZWM0Igor
CQkJdmFsdWVzIHsKKwkJCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAs
IDQuMCk7CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5iID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjAp
OworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBT
dHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzQgYjt9OworCQkJCXVuaWZvcm0gU3Ry
dWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCBkdW1teTsKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJZHVtbXkgPSB2YWwuYS54ICsgdmFsLmIueTsKKwkJCQkJJHtWRVJURVhfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAg
dmVjNCBhOyBtZWRpdW1wIHZlYzQgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlp
biBtZWRpdW1wIGZsb2F0IGR1bW15OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJ
CXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gdmFsLmIueSArIHZhbC5hLng7CisJCQkJ
CW91dDAgPSBvdXQwICsgZHVtbXk7CisJCQkJCW91dDAgPSBvdXQwIC0gZHVtbXk7CisJCQkJCSR7
RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVydGV4X29u
bHlfdmVjNAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xh
cmVkIGluIGJvdGgsIHVzZWQgb25seSBpbiB2ZXJ0ZXguIERhdGF0eXBlIHZlYzQJIgorCQkJdmFs
dWVzIHsKKwkJCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7
CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5iID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJ
CW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1Y3Qg
e21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzQgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZh
bDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXJlcyA9IHZhbC5hLnggKyB2YWwuYi55OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJ
fQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1l
ZGl1bXAgdmVjNCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCWluIG1lZGl1bXAg
ZmxvYXQgcmVzOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXZvaWQgbWFpbigp
CisJCQkJewkJCW91dDAgPSByZXM7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJ
CSIiCisJCWVuZAorCisJCWNhc2UgZnJhZ21lbnRfb25seV92ZWM0CisJCQl2ZXJzaW9uIDMwMCBl
cworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGlu
IGZyYWdtZW50LiBEYXRhdHlwZSB2ZWM0IgorCQkJdmFsdWVzIHsKKwkJCQl1bmlmb3JtIHZlYzQg
dmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5i
ID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4w
OworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhf
REVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1w
IHZlYzQgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0
cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzQgYjt9OworCQkJCXVuaWZv
cm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsJCQlvdXQwID0gdmFsLmEueCArIHZhbC5iLnk7CisJCQkJCSR7RlJBR01FTlRf
T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcGFydGlhbF92ZWM0CisJCQl2
ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwg
dXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgdmVjNCIKKwkJCXZhbHVlcyB7CisJCQkJ
dW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZv
cm0gdmVjNCB2YWwuYiA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKKwkJCQlvdXRwdXQgZmxv
YXQgb3V0MCA9IDMuMDsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZl
YzQgYTsgbWVkaXVtcCB2ZWM0IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJb3V0
IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlyZXMgPSB2
YWwuYS54OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjNCBiO307CisJCQkJ
dW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWlu
IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJewkJCW91dDAgPSByZXMg
KyB2YWwuYi55OworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQK
KworCQljYXNlIHZlYzRfdmVjMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlNhbWUgdW5p
Zm9ybSBzdHJ1Y3QgaW4gYm90aCBzaGFkZXJzLiBEYXRhdHlwZSB2ZWM0IGFuZCB2ZWMzIgorCQkJ
dmFsdWVzIHsKKwkJCQl1bmlmb3JtIHZlYzQgdmFsLmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQu
MCk7CisJCQkJdW5pZm9ybSB2ZWMzIHZhbC5iID0gdmVjMygxLjAsIDIuMCwgMy4wKTsKKwkJCQlv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHtt
ZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCB2ZWMzIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7
CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgZHVtbXk7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCWR1bW15ID0gdmFsLmEueCArIHZhbC5iLnk7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsg
bWVkaXVtcCB2ZWMzIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJaW4gbWVkaXVt
cCBmbG9hdCBkdW1teTsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsJCQlvdXQwID0gdmFsLmIueSArIHZhbC5hLng7CisJCQkJCW91dDAgPSBvdXQw
ICsgZHVtbXk7CisJCQkJCW91dDAgPSBvdXQwIC0gZHVtbXk7CisJCQkJCSR7RlJBR01FTlRfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVydGV4X29ubHlfdmVjNF92ZWMz
CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4g
Ym90aCwgdXNlZCBvbmx5IGluIHZlcnRleC4gRGF0YXR5cGUgdmVjNCBhbmQgdmVjMyIKKwkJCXZh
bHVlcyB7CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjAp
OworCQkJCXVuaWZvcm0gdmVjMyB2YWwuYiA9IHZlYzMoMS4wLCAyLjAsIDMuMCk7CisJCQkJb3V0
cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7bWVk
aXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOwor
CQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
cmVzID0gdmFsLmEueCArIHZhbC5iLnk7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJ
CQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVt
cCB2ZWMzIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJaW4gbWVkaXVtcCBmbG9h
dCByZXM7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CQkJb3V0MCA9IHJlczsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIK
KwkJZW5kCisKKwkJY2FzZSBmcmFnbWVudF9vbmx5X3ZlYzRfdmVjMworCQkJdmVyc2lvbiAzMDAg
ZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVkIGluIGJvdGgsIHVzZWQgb25seSBp
biBmcmFnbWVudC4gRGF0YXR5cGUgdmVjNCBhbmQgdmVjMyIKKwkJCXZhbHVlcyB7CisJCQkJdW5p
Zm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZvcm0g
dmVjMyB2YWwuYiA9IHZlYzMoMS4wLCAyLjAsIDMuMCk7CisJCQkJb3V0cHV0IGZsb2F0IG91dDAg
PSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1l
ZGl1bXAgdmVjMyBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCXZvaWQgbWFpbigp
CisJCQkJeworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgdmVjMyBiO307CisJCQkJ
dW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXZv
aWQgbWFpbigpCisJCQkJewkJCW91dDAgPSB2YWwuYS54ICsgdmFsLmIueTsKKwkJCQkJJHtGUkFH
TUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX3ZlYzRf
dmVjMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVk
IGluIGJvdGgsIHVzZWQgcGFydGlhbGx5IGluIGJvdGguIERhdGF0eXBlIHZlYzQgYW5kIHZlYzMi
CisJCQl2YWx1ZXMgeworCQkJCXVuaWZvcm0gdmVjNCB2YWwuYSA9IHZlYzQoMS4wLCAyLjAsIDMu
MCwgNC4wKTsKKwkJCQl1bmlmb3JtIHZlYzMgdmFsLmIgPSB2ZWMzKDEuMCwgMi4wLCAzLjApOwor
CQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1
Y3Qge21lZGl1bXAgdmVjNCBhOyBtZWRpdW1wIHZlYzMgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0
IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCXJlcyA9IHZhbC5hLng7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQki
IgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCB2
ZWMzIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJB
VElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CQkJb3V0MCA9IHJlcyArIHZhbC5iLnk7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0K
KwkJCSIiCisJCWVuZAorCisJCWNhc2UgdmVjNF9mbG9hdAorCQkJdmVyc2lvbiAzMDAgZXMKKwkJ
CWRlc2MgIlNhbWUgdW5pZm9ybSBzdHJ1Y3QgaW4gYm90aCBzaGFkZXJzLiBEYXRhdHlwZSB2ZWM0
IGFuZCBmbG9hdCIKKwkJCXZhbHVlcyB7CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgx
LjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmIgPSAyLjA7CisJCQkJ
b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7
bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxvYXQgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZh
bDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCBkdW1teTsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJZHVtbXkgPSB2YWwuYS54ICsgdmFsLmI7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsg
bWVkaXVtcCBmbG9hdCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCWluIG1lZGl1
bXAgZmxvYXQgZHVtbXk7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CQkJb3V0MCA9IHZhbC5iICsgdmFsLmEueDsKKwkJCQkJb3V0MCA9IG91dDAg
KyBkdW1teTsKKwkJCQkJb3V0MCA9IG91dDAgLSBkdW1teTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQ
VVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSB2ZXJ0ZXhfb25seV92ZWM0X2Zsb2F0
CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4g
Ym90aCwgdXNlZCBvbmx5IGluIHZlcnRleC4gRGF0YXR5cGUgdmVjNCBhbmQgZmxvYXQiCisJCQl2
YWx1ZXMgeworCQkJCXVuaWZvcm0gdmVjNCB2YWwuYSA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4w
KTsKKwkJCQl1bmlmb3JtIGZsb2F0IHZhbC5iID0gMi4wOworCQkJCW91dHB1dCBmbG9hdCBvdXQw
ID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtW
RVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjNCBhOyBt
ZWRpdW1wIGZsb2F0IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJb3V0IG1lZGl1
bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlyZXMgPSB2YWwuYS54
ICsgdmFsLmI7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21l
bnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIHZlYzQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJ
CQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCSR7
RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCXZvaWQgbWFpbigpCisJCQkJewkJCW91dDAgPSBy
ZXM7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNh
c2UgZnJhZ21lbnRfb25seV92ZWM0X2Zsb2F0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAi
VW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBvbmx5IGluIGZyYWdtZW50LiBE
YXRhdHlwZSB2ZWM0IGFuZCBmbG9hdCIKKwkJCXZhbHVlcyB7CisJCQkJdW5pZm9ybSB2ZWM0IHZh
bC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmIg
PSAyLjA7CisJCQkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3Ry
dWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxvYXQgYjt9OworCQkJCXVuaWZv
cm0gU3RydWN0IHZhbDsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtWRVJURVhfT1VU
UFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAg
dmVjNCBhOyBtZWRpdW1wIGZsb2F0IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJ
JHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CQkJb3V0MCA9
IHZhbC5hLnggKyB2YWwuYjsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIK
KwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX3ZlYzRfZmxvYXQKKwkJCXZlcnNpb24gMzAwIGVzCisJ
CQlkZXNjICJVbmlmb3JtIHN0cnVjdCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBp
biBib3RoLiBEYXRhdHlwZSB2ZWM0IGFuZCBmbG9hdCIKKwkJCXZhbHVlcyB7CisJCQkJdW5pZm9y
bSB2ZWM0IHZhbC5hID0gdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZvcm0gZmxv
YXQgdmFsLmIgPSAyLjA7CisJCQkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2
ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9
CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IG1lZGl1bXAgZmxvYXQgYjt9Owor
CQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC5hLng7CisJCQkJCSR7VkVSVEVYX09V
VFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1w
IHZlYzQgYTsgbWVkaXVtcCBmbG9hdCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJ
CSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJ
CXZvaWQgbWFpbigpCisJCQkJewkJCW91dDAgPSByZXMgKyB2YWwuYjsKKwkJCQkJJHtGUkFHTUVO
VF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX3ZlYzRfc3Ry
dWN0CisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQg
aW4gYm90aCwgdXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgdmVjNCBhbmQgc3RydWN0
IHdpdGggdmVjNCIKKwkJCXZhbHVlcyB7CisJCQkJdW5pZm9ybSB2ZWM0IHZhbC5hID0gdmVjNCgx
LjAsIDIuMCwgMy4wLCA0LjApOworCQkJCXVuaWZvcm0gdmVjNCB2YWwuYi5jID0gdmVjNCgxLjAs
IDIuMCwgMy4wLCA0LjApOworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05T
fQorCQkJCXN0cnVjdCBJbm5lciB7bWVkaXVtcCB2ZWM0IGM7fTsKKwkJCQlzdHJ1Y3QgU3RydWN0
IHttZWRpdW1wIHZlYzQgYTsgSW5uZXIgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJ
CQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJl
cyA9IHZhbC5hLng7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJh
Z21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCQlzdHJ1Y3QgSW5uZXIge21lZGl1bXAgdmVjNCBjO307CisJCQkJc3RydWN0IFN0cnVj
dCB7bWVkaXVtcCB2ZWM0IGE7IElubmVyIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJ
CQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJ
CQkJdm9pZCBtYWluKCkKKwkJCQl7CQkJb3V0MCA9IHJlcyArIHZhbC5iLmMueTsKKwkJCQkJJHtG
UkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX3Zl
YzRfdmVjM19zdHJ1Y3QKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJVbmlmb3JtIHN0cnVj
dCBkZWNsYXJlZCBpbiBib3RoLCB1c2VkIHBhcnRpYWxseSBpbiBib3RoLiBEYXRhdHlwZSB2ZWM0
IGFuZCBzdHJ1Y3Qgd2l0aCB2ZWMzIgorCQkJdmFsdWVzIHsKKwkJCQl1bmlmb3JtIHZlYzQgdmFs
LmEgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisJCQkJdW5pZm9ybSB2ZWMzIHZhbC5iLmMg
PSB2ZWMzKDEuMCwgMi4wLCAzLjApOworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJ
fQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFS
QVRJT05TfQorCQkJCXN0cnVjdCBJbm5lciB7bWVkaXVtcCB2ZWMzIGM7fTsKKwkJCQlzdHJ1Y3Qg
U3RydWN0IHttZWRpdW1wIHZlYzQgYTsgSW5uZXIgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZh
bDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXJlcyA9IHZhbC5hLng7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgor
CQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCQlzdHJ1Y3QgSW5uZXIge21lZGl1bXAgdmVjMyBjO307CisJCQkJc3RydWN0
IFN0cnVjdCB7bWVkaXVtcCB2ZWM0IGE7IElubmVyIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2
YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCBy
ZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CQkJb3V0MCA9IHJlcyArIHZhbC5iLmMueTsKKwkJ
CQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0
aWFsX3ZlYzJfdmVjMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0
IGRlY2xhcmVkIGluIGJvdGgsIHVzZWQgcGFydGlhbGx5IGluIGJvdGguIERhdGF0eXBlIHZlYzIg
YW5kIHZlYzMiCisJCQl2YWx1ZXMgeworCQkJCXVuaWZvcm0gdmVjMiB2YWwuYSA9IHZlYzIoMS4w
LCAyLjApOworCQkJCXVuaWZvcm0gdmVjMyB2YWwuYiA9IHZlYzMoMS4wLCAyLjAsIDMuMCk7CisJ
CQkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVj
dCB7bWVkaXVtcCB2ZWMyIGE7IG1lZGl1bXAgdmVjMyBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3Qg
dmFsOworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJcmVzID0gdmFsLmEueDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIi
CisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjMiBhOyBtZWRpdW1wIHZl
YzMgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFU
SU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsJ
CQlvdXQwID0gcmVzICsgdmFsLmIueTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX3ZlYzJfaW50CisJCQl2ZXJzaW9uIDMwMCBl
cworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0aWFs
bHkgaW4gYm90aC4gRGF0YXR5cGUgdmVjMiBhbmQgaW50IgorCQkJdmFsdWVzIHsKKwkJCQl1bmlm
b3JtIHZlYzIgdmFsLmEgPSB2ZWMyKDEuMCwgMi4wKTsKKwkJCQl1bmlmb3JtIGludCB2YWwuYiA9
IDI7CisJCQkJb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0
IFN0cnVjdCB7bWVkaXVtcCB2ZWMyIGE7IG1lZGl1bXAgaW50IGI7fTsKKwkJCQl1bmlmb3JtIFN0
cnVjdCB2YWw7CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQlyZXMgPSB2YWwuYS54OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCB2ZWMyIGE7IG1lZGl1
bXAgaW50IGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNM
QVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CQkJb3V0MCA9IHJlcyArIGZsb2F0KHZhbC5iKTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9
CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwYXJ0aWFsX2ludF9mbG9hdAorCQkJdmVy
c2lvbiAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVkIGluIGJvdGgsIHVz
ZWQgcGFydGlhbGx5IGluIGJvdGguIERhdGF0eXBlIGludCBhbmQgZmxvYXQiCisJCQl2YWx1ZXMg
eworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmEgPSAxLjA7CisJCQkJdW5pZm9ybSBpbnQgdmFsLmIg
PSAyOworCQkJCW91dHB1dCBmbG9hdCBvdXQwID0gMy4wOworCQkJfQorCQkJdmVydGV4ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVj
dCBTdHJ1Y3Qge21lZGl1bXAgZmxvYXQgYTsgbWVkaXVtcCBpbnQgYjt9OworCQkJCXVuaWZvcm0g
U3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCXJlcyA9IHZhbC5hOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBmbG9hdCBhOyBtZWRp
dW1wIGludCBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01FTlRfREVD
TEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJ
CQkJewkJCW91dDAgPSByZXMgKyBmbG9hdCh2YWwuYik7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVU
fQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcGFydGlhbF9idmVjMl92ZWMyCisJCQl2
ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1Y3QgZGVjbGFyZWQgaW4gYm90aCwg
dXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgYnZlYzIgYW5kIHZlYzIiCisJCQl2YWx1
ZXMgeworCQkJCXVuaWZvcm0gYnZlYzIgdmFsLmEgPSBidmVjMih0cnVlLCB0cnVlKTsKKwkJCQl1
bmlmb3JtIHZlYzIgdmFsLmIgPSB2ZWMyKDEuMCwgMi4wKTsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0
MCA9IDMuMDsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7
VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHtidmVjMiBhOyBtZWRpdW1w
IHZlYzIgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9h
dCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IGZsb2F0KHZhbC5hLngp
OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3Ry
dWN0IFN0cnVjdCB7YnZlYzIgYTsgbWVkaXVtcCB2ZWMyIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVj
dCB2YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9h
dCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CQkJb3V0MCA9IHJlcyArIHZhbC5iLnk7CisJ
CQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcGFy
dGlhbF9pdmVjMl92ZWMyCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVzYyAiVW5pZm9ybSBzdHJ1
Y3QgZGVjbGFyZWQgaW4gYm90aCwgdXNlZCBwYXJ0aWFsbHkgaW4gYm90aC4gRGF0YXR5cGUgaXZl
YzIgYW5kIHZlYzIiCisJCQl2YWx1ZXMgeworCQkJCXVuaWZvcm0gaXZlYzIgdmFsLmEgPSBpdmVj
MigxLCAyKTsKKwkJCQl1bmlmb3JtIHZlYzIgdmFsLmIgPSB2ZWMyKDEuMCwgMi4wKTsKKwkJCQlv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwkJCX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHtt
ZWRpdW1wIGl2ZWMyIGE7IG1lZGl1bXAgdmVjMiBiO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFs
OworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJcmVzID0gdmVjMih2YWwuYSkueDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJ
CSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgaXZlYzIgYTsgbWVkaXVt
cCB2ZWMyIGI7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJJHtGUkFHTUVOVF9ERUNM
QVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CQkJb3V0MCA9IHJlcyArIHZhbC5iLnk7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJ
CX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcGFydGlhbF9pdmVjMl9pdmVjMgorCQkJdmVyc2lv
biAzMDAgZXMKKwkJCWRlc2MgIlVuaWZvcm0gc3RydWN0IGRlY2xhcmVkIGluIGJvdGgsIHVzZWQg
cGFydGlhbGx5IGluIGJvdGguIERhdGF0eXBlIGl2ZWMyIGFuZCBpdmVjMiIKKwkJCXZhbHVlcyB7
CisJCQkJdW5pZm9ybSBpdmVjMiB2YWwuYSA9IGl2ZWMyKDEsIDIpOworCQkJCXVuaWZvcm0gaXZl
YzIgdmFsLmIgPSBpdmVjMigxLCAyKTsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsKKwkJ
CX0KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xB
UkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGl2ZWMyIGE7IG1lZGl1bXAgaXZl
YzIgYjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCBy
ZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZlYzIodmFsLmEpLng7CisJ
CQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3Qg
U3RydWN0IHttZWRpdW1wIGl2ZWMyIGE7IG1lZGl1bXAgaXZlYzIgYjt9OworCQkJCXVuaWZvcm0g
U3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1w
IGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsJCQlvdXQwID0gcmVzICsgdmVjMih2
YWwuYikueTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisK
KwkJY2FzZSB0eXBlX2NvbmZsaWN0XzEKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlkZXNjICJGcmFn
bWVudCBzdHJ1Y3QgaGFzIG9uZSBsZXNzIG1lbWJlciB0aGFuIGZyYWdtZW50IHZlcnNpb24iCisJ
CQlleHBlY3QgbGlua19mYWlsCisJCQl2YWx1ZXMge291dHB1dCBmbG9hdCBvdXQwID0gMy4wO30K
KwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1wIGZsb2F0IGE7IG1lZGl1bXAgZmxvYXQg
Yjt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC5hOworCQkJCQkke1ZFUlRF
WF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0cnVjdCB7bWVk
aXVtcCBmbG9hdCBhO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01FTlRf
REVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigp
CisJCQkJewkJCW91dDAgPSByZXMgKyB2YWwuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJ
CQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSB0eXBlX2NvbmZsaWN0XzIKKwkJCXZlcnNpb24g
MzAwIGVzCisJCQlkZXNjICJWZXJ0ZXggc3RydWN0IGhhcyBpbnQsIGZyYWdtZW50IHN0cnVjdCBo
YXMgZmxvYXQuIgorCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmFsdWVzIHtvdXRwdXQgZmxvYXQg
b3V0MCA9IDMuMDt9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQkke1ZF
UlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7bWVkaXVtcCBpbnQgYTt9Owor
CQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IGZsb2F0KHZhbC5hKTsKKwkJCQkJJHtWRVJU
RVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1Y3Qge21l
ZGl1bXAgZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5U
X0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsJCQlvdXQwID0gdmFsLmE7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJCX0K
KwkJCSIiCisJCWVuZAorCisJCWNhc2UgdHlwZV9jb25mbGljdF8zCisJCQl2ZXJzaW9uIDMwMCBl
cworCQkJZGVzYyAiVmVydGV4IHN0cnVjdCBoYXMgdmVjMywgZnJhZ21lbnQgc3RydWN0IGhhcyB2
ZWM0LiIKKwkJCWV4cGVjdCBsaW5rX2ZhaWwKKwkJCXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAg
PSAzLjA7fQorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhf
REVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1Y3Qge21lZGl1bXAgdmVjMyBhO307CisJCQkJ
dW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJcmVzID0gZmxvYXQodmFsLmEueCk7CisJCQkJCSR7VkVSVEVY
X09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRp
dW1wIHZlYzQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdNRU5UX0RF
Q0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsJCQlvdXQwID0gdmFsLmEueDsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJfQor
CQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwcmVjaXNpb25fY29uZmxpY3RfMQorCQkJdmVyc2lvbiAz
MDAgZXMKKwkJCWRlc2MgIlZlcnRleCBzaWRlIHN0cnVjdCBoYXMgaGlnaHAsIGZyYWdtZW50IHNp
ZGUgc3RydWN0IG1lZGl1bXAuIgorCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmFsdWVzIHtvdXRw
dXQgZmxvYXQgb3V0MCA9IDMuMDt9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7aGlnaHAgZmxv
YXQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCBy
ZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC5hOworCQkJCQkke1ZF
UlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3RydWN0IFN0cnVjdCB7
bWVkaXVtcCBmbG9hdCBhO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCSR7RlJBR01F
TlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFp
bigpCisJCQkJewkJCW91dDAgPSB2YWwuYTsKKwkJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CisJCQkJ
fQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBwcmVjaXNpb25fY29uZmxpY3RfMgorCQkJdmVyc2lv
biAzMDAgZXMKKwkJCWRlc2MgIlZlcnRleCBzaWRlIHN0cnVjdCBoYXMgbWVkaXVtcCwgZnJhZ21l
bnQgc2lkZSBzdHJ1Y3QgbG93cC4iCisJCQlleHBlY3QgbGlua19mYWlsCisJCQl2YWx1ZXMge291
dHB1dCBmbG9hdCBvdXQwID0gMy4wO30KKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KKwkJCQlzdHJ1Y3QgU3RydWN0IHttZWRpdW1w
IGZsb2F0IGE7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJb3V0IG1lZGl1bXAgZmxv
YXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlyZXMgPSB2YWwuYTsKKwkJCQkJ
JHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCXN0cnVjdCBTdHJ1
Y3Qge2xvd3AgZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZSQUdN
RU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsJCQlvdXQwID0gdmFsLmE7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQorCQkJ
CX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgcHJlY2lzaW9uX2NvbmZsaWN0XzMKKwkJCXZlcnNp
b24gMzAwIGVzCisJCQlkZXNjICJWZXJ0ZXggc2lkZSBzdHJ1Y3QgaGFzIGxvd3AsIGZyYWdtZW50
IHNpZGUgc3RydWN0IG1lZGl1bXAuIgorCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmFsdWVzIHtv
dXRwdXQgZmxvYXQgb3V0MCA9IDMuMDt9CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJc3RydWN0IFN0cnVjdCB7bG93cCBm
bG9hdCBhO307CisJCQkJdW5pZm9ybSBTdHJ1Y3QgdmFsOworCQkJCW91dCBtZWRpdW1wIGZsb2F0
IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJcmVzID0gdmFsLmE7CisJCQkJCSR7
VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1Y3QgU3RydWN0
IHttZWRpdW1wIGZsb2F0IGE7fTsKKwkJCQl1bmlmb3JtIFN0cnVjdCB2YWw7CisJCQkJJHtGUkFH
TUVOVF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CQkJb3V0MCA9IHZhbC5hOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJ
CQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIHByZWNpc2lvbl9jb25mbGljdF80CisJCQl2ZXJz
aW9uIDMwMCBlcworCQkJZGVzYyAiVmVydGV4IHNpZGUgc3RydWN0IGhhcyBsb3dwLCBmcmFnbWVu
dCBzaWRlIHN0cnVjdCBpbXBsaWNpdCBtZWRpdW1wLiIKKwkJCWV4cGVjdCBsaW5rX2ZhaWwKKwkJ
CXZhbHVlcyB7b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7fQorCQkJdmVydGV4ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQorCQkJCXN0cnVjdCBTdHJ1
Y3Qge2xvd3AgZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQlvdXQgbWVk
aXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC5h
OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJc3Ry
dWN0IFN0cnVjdCB7ZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gU3RydWN0IHZhbDsKKwkJCQkke0ZS
QUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsJCQlvdXQwID0gdmFsLmE7CisJCQkJCSR7RlJBR01FTlRfT1VUUFVUfQor
CQkJCX0KKwkJCSIiCisJCWVuZAorCisJCWNhc2UgbGlnaHRfc3RydWN0X2hpZ2hwCisJCQl2ZXJz
aW9uIDMwMCBlcworCQkJZGVzYyAiQ29tcGxleCBMaWdodCBzdHJ1Y3QgZnJvbSB1c2UgY2FzZSB0
ZXN0cy4iCisJCQl2YWx1ZXMgeworCQkJCXVuaWZvcm0gZmxvYXQgdmFsLmNvbnN0YW50QXR0ZW51
YXRpb24gPSAxLjA7CisJCQkJdW5pZm9ybSBmbG9hdCB2YWwucXVhZHJhdGljQXR0ZW51YXRpb24g
PSAxLjA7CisJCQkJb3V0cHV0IGZsb2F0IG91dDAgPSAyLjA7CisJCQl9CisJCQl2ZXJ0ZXggIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlzdHJ1Y3QgTGlnaHQKKwkJCQl7CisJCQkJCW1lZGl1
bXAgdmVjMwljb2xvcjsKKwkJCQkJaGlnaHAgdmVjNAkJcG9zaXRpb247CisJCQkJCWhpZ2hwIHZl
YzMJCWRpcmVjdGlvbjsKKwkJCQkJbWVkaXVtcCBmbG9hdAljb25zdGFudEF0dGVudWF0aW9uOwor
CQkJCQltZWRpdW1wIGZsb2F0CWxpbmVhckF0dGVudWF0aW9uOworCQkJCQltZWRpdW1wIGZsb2F0
CXF1YWRyYXRpY0F0dGVudWF0aW9uOworCQkJCX07CisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05T
fQorCQkJCXVuaWZvcm0gTGlnaHQgdmFsOworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJ
CQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJcmVzID0gdmFsLmNvbnN0YW50QXR0ZW51YXRpb247
CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJZnJhZ21lbnQgIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlzdHJ1
Y3QgTGlnaHQKKwkJCQl7CisJCQkJCW1lZGl1bXAgdmVjMwljb2xvcjsKKwkJCQkJaGlnaHAgdmVj
NAkJcG9zaXRpb247CisJCQkJCWhpZ2hwIHZlYzMJCWRpcmVjdGlvbjsKKwkJCQkJbWVkaXVtcCBm
bG9hdAljb25zdGFudEF0dGVudWF0aW9uOworCQkJCQltZWRpdW1wIGZsb2F0CWxpbmVhckF0dGVu
dWF0aW9uOworCQkJCQltZWRpdW1wIGZsb2F0CXF1YWRyYXRpY0F0dGVudWF0aW9uOworCQkJCX07
CisJCQkJc3RydWN0IFN0cnVjdCB7ZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gTGlnaHQgdmFsOwor
CQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVzOwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gcmVzICsgdmFsLnF1YWRyYXRpY0F0
dGVudWF0aW9uOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQK
KworCQljYXNlIGxpZ2h0X3N0cnVjdF9tZWRpdW1wCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZGVz
YyAiQ29tcGxleCBMaWdodCBzdHJ1Y3QgZnJvbSB1c2UgY2FzZSB0ZXN0cywgd2l0aG91dCBoaWdo
cCB1c2FnZSIKKwkJCXZhbHVlcyB7CisJCQkJdW5pZm9ybSBmbG9hdCB2YWwuY29uc3RhbnRBdHRl
bnVhdGlvbiA9IDEuMDsKKwkJCQl1bmlmb3JtIGZsb2F0IHZhbC5xdWFkcmF0aWNBdHRlbnVhdGlv
biA9IDEuMDsKKwkJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IDIuMDsKKwkJCX0KKwkJCXZlcnRleCAi
IgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXN0cnVjdCBMaWdodAorCQkJCXsKKwkJCQkJbWVk
aXVtcCB2ZWMzCWNvbG9yOworCQkJCQltZWRpdW1wIHZlYzQJcG9zaXRpb247CisJCQkJCW1lZGl1
bXAgdmVjMwlkaXJlY3Rpb247CisJCQkJCW1lZGl1bXAgZmxvYXQJY29uc3RhbnRBdHRlbnVhdGlv
bjsKKwkJCQkJbWVkaXVtcCBmbG9hdAlsaW5lYXJBdHRlbnVhdGlvbjsKKwkJCQkJbWVkaXVtcCBm
bG9hdAlxdWFkcmF0aWNBdHRlbnVhdGlvbjsKKwkJCQl9OworCQkJCSR7VkVSVEVYX0RFQ0xBUkFU
SU9OU30KKwkJCQl1bmlmb3JtIExpZ2h0IHZhbDsKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC5jb25zdGFudEF0dGVudWF0
aW9uOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJCWZyYWdtZW50ICIi
CisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJ
c3RydWN0IExpZ2h0CisJCQkJeworCQkJCQltZWRpdW1wIHZlYzMJY29sb3I7CisJCQkJCW1lZGl1
bXAgdmVjNAlwb3NpdGlvbjsKKwkJCQkJbWVkaXVtcCB2ZWMzCWRpcmVjdGlvbjsKKwkJCQkJbWVk
aXVtcCBmbG9hdAljb25zdGFudEF0dGVudWF0aW9uOworCQkJCQltZWRpdW1wIGZsb2F0CWxpbmVh
ckF0dGVudWF0aW9uOworCQkJCQltZWRpdW1wIGZsb2F0CXF1YWRyYXRpY0F0dGVudWF0aW9uOwor
CQkJCX07CisJCQkJc3RydWN0IFN0cnVjdCB7ZmxvYXQgYTt9OworCQkJCXVuaWZvcm0gTGlnaHQg
dmFsOworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQg
cmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlvdXQwID0gcmVzICsgdmFsLnF1YWRy
YXRpY0F0dGVudWF0aW9uOworCQkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCQl9CisJCQkiIgor
CQllbmQKKwllbmQKKworCWdyb3VwIGJsb2NrICJVbmlmb3JtIGJsb2NrcyIKKwkJY2FzZSB0eXBl
X21pc21hdGNoCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmVy
dGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisKKwkJCQl1bmlmb3JtIEJsb2NrCisJCQkJewor
CQkJCQloaWdocCB2ZWM0IHZhbDsKKwkJCQl9OworCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05T
fQorCQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJcmVzID0gdmFsLng7CisJCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQkJ
ZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKworCQkJCXVuaWZvcm0gQmxvY2sKKwkJ
CQl7CisJCQkJCWhpZ2hwIHZlYzMgdmFsOworCQkJCX07CisKKwkJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCQlpbiBtZWRpdW1wIGZs
b2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2
ZWM0KHZhbCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIG1lbWJlcnNfbWlz
bWF0Y2gKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlleHBlY3QgbGlua19mYWlsCisJCQl2ZXJ0ZXgg
IiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKworCQkJCXVuaWZvcm0gQmxvY2sKKwkJCQl7CisJCQkJ
CWhpZ2hwIHZlYzQgdmFsOworCQkJCX07CisKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJ
CQkJb3V0IG1lZGl1bXAgZmxvYXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQly
ZXMgPSB2YWwueDsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFn
bWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCisJCQkJdW5pZm9ybSBCbG9jaworCQkJCXsK
KwkJCQkJaGlnaHAgdmVjNCB2YWw7CisJCQkJCWxvd3AgdWludCB1OworCQkJCX07CisKKwkJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJ
CQlpbiBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZEVR
UF9GcmFnQ29sb3IgPSB2ZWM0KHZhbCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwkJY2FzZSBs
YXlvdXRfcXVhbGlmaWVyX21pc21hdGNoXzIKKwkJCXZlcnNpb24gMzAwIGVzCisJCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKworCQkJCWxh
eW91dChzaGFyZWQpIHVuaWZvcm0gQmxvY2sKKwkJCQl7CisJCQkJCWhpZ2hwIHZlYzQgdmFsOwor
CQkJCX07CisKKwkJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQkJb3V0IG1lZGl1bXAgZmxv
YXQgcmVzOworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlyZXMgPSB2YWwueDsKKwkJCQkJ
JHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIiCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCisJCQkJbGF5b3V0KHBhY2tlZCkgdW5pZm9ybSBCbG9jaworCQkJCXsKKwkJ
CQkJaGlnaHAgdmVjNCB2YWw7CisJCQkJfTsKKworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQorCQkJCWluIG1lZGl1bXAgZmxvYXQgcmVz
OworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQodmFs
KTsKKwkJCQl9CisJCQkiIgorCQllbmQKKworCQljYXNlIGxheW91dF9xdWFsaWZpZXJfbWlzbWF0
Y2hfMworCQkJdmVyc2lvbiAzMDAgZXMKKwkJCWV4cGVjdCBsaW5rX2ZhaWwKKwkJCXZlcnRleCAi
IgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCisJCQkJbGF5b3V0KHJvd19tYWpvcikgdW5pZm9ybSBC
bG9jaworCQkJCXsKKwkJCQkJaGlnaHAgdmVjNCB2YWw7CisJCQkJfTsKKworCQkJCSR7VkVSVEVY
X0RFQ0xBUkFUSU9OU30KKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCXJlcyA9IHZhbC54OworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJ
fQorCQkJIiIKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisKKwkJCQlsYXlv
dXQoY29sdW1uX21ham9yKSB1bmlmb3JtIEJsb2NrCisJCQkJeworCQkJCQloaWdocCB2ZWM0IHZh
bDsKKwkJCQl9OworCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVO
VF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNCh2YWwpOworCQkJCX0KKwkJCSIi
CisJCWVuZAorCisJCWNhc2UgbGF5b3V0X3F1YWxpZmllcl9taXNtYXRjaF80CisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJZXhwZWN0IGxpbmtfZmFpbAorCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisKKwkJCQlsYXlvdXQocm93X21ham9yKSB1bmlmb3JtIEJsb2NrCisJCQkJeworCQkJ
CQloaWdocCBtYXQzIHZhbDsKKwkJCQl9OworCisJCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQor
CQkJCW91dCBtZWRpdW1wIGZsb2F0IHJlczsKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
cmVzID0gdmFsWzBdWzFdOworCQkJCQkke1ZFUlRFWF9PVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisKKwkJCQlsYXlvdXQoY29sdW1uX21h
am9yKSB1bmlmb3JtIEJsb2NrCisJCQkJeworCQkJCQloaWdocCBtYXQzIHZhbDsKKwkJCQl9Owor
CisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVOVF9ERUNMQVJBVElP
TlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNCh2YWxbMl0sIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJ
ZW5kCisKKwkJY2FzZSBsYXlvdXRfcXVhbGlmaWVyX21pc21hdGNoXzUKKwkJCXZlcnNpb24gMzAw
IGVzCisJCQlleHBlY3QgbGlua19mYWlsCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKworCQkJCXVuaWZvcm0gQmxvY2sKKwkJCQl7CisJCQkJCWxheW91dChyb3dfbWFqb3IpIHVu
aWZvcm0gaGlnaHAgbWF0MyB2YWw7CisJCQkJfTsKKworCQkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9O
U30KKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXJlcyA9IHZhbFswXVsxXTsKKwkJCQkJJHtWRVJURVhfT1VUUFVUfQorCQkJCX0KKwkJCSIi
CisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCisJCQkJdW5pZm9ybSBCbG9j
aworCQkJCXsKKwkJCQkJbGF5b3V0KGNvbHVtbl9tYWpvcikgdW5pZm9ybSBoaWdocCBtYXQzIHZh
bDsKKwkJCQl9OworCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtGUkFHTUVO
VF9ERUNMQVJBVElPTlN9CisJCQkJaW4gbWVkaXVtcCBmbG9hdCByZXM7CisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNCh2YWxbMl0sIDEuMCk7CisJCQkJ
fQorCQkJIiIKKwkJZW5kCisJZW5kCitlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL25lZ2F0
aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9uZWdhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjM2ZTU0
MmY2MjVkMzdmY2UwYjIyZWYxMGViMzBhMDc4ZDNhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMv
c2hhZGVycy9uZWdhdGl2ZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMu
c2hhcmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordGVzdE5hbWUgPSAnbmVnYXRpdmUnOworZGVzY3JpcHRpb24oIlNoYWRlciB0ZXN0OiAi
ICsgdGVzdE5hbWUgKyAiLiIpOworV2ViR0xUZXN0VXRpbHMuc2V0RGVmYXVsdDNEQ29udGV4dFZl
cnNpb24oMik7CisKK3ZhciBnZXRGaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVlcnlW
YXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlWYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
IHZhciB2YWx1ZSA9IHF1ZXJ5VmFyc1tpXS5zcGxpdCgnPScpOworICAgICAgICBpZiAoZGVjb2Rl
VVJJQ29tcG9uZW50KHZhbHVlWzBdKSA9PT0gJ2ZpbHRlcicpCisgICAgICAgICAgICByZXR1cm4g
ZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlWzFdKTsKKyAgICB9Cit9CisKK21vZHVsZXMuc2hhcmVk
Lmdsc1NoYWRlckxpYnJhcnkucnVuKHRlc3ROYW1lLCBnZXRGaWx0ZXIoKSkKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9uZWdhdGl2ZS50ZXN0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRh
L2dsZXMzL3NoYWRlcnMvbmVnYXRpdmUudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2I4NmVkZWQ0NmY5YWQz
ODZjZDJjMzc5MzA0MDc2Yzc3YzIxMGUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMv
bmVnYXRpdmUudGVzdApAQCAtMCwwICsxLDEwMCBAQAorIyBHZW5lcmljIGludmFsaWQgY2FzZXMg
dGhhdCBkb24ndCBmYWxsIGludG8gb3RoZXIgY2F0ZWdvcmllcworCitncm91cCBjX2Nhc3QgIkMt
c3R5bGUgY2FzdHMiCisKKwljYXNlIGZsb2F0XzAKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2
ZXJzaW9uIDMwMCBlcworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBoaWdocCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluICgpCisJCQl7
CisJCQkJZmxvYXQgYSA9IDAuMDsKKwkJCQlmbG9hdCBiID0gKGZsb2F0KWE7CisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZmxvYXRfMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnNpb24gMzAwIGVzCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4gKCkKKwkJCXsKKwkJCQlpbnQgYSA9IDA7CisJCQkJ
ZmxvYXQgYiA9IChmbG9hdClhOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGIp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBmbG9hdF8yCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWhpZ2hwIGZsb2F0IGEg
PSAwLjA7CisJCQkJbWVkaXVtcCBmbG9hdCBiID0gKG1lZGl1bXAgZmxvYXQpYTsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpbnQKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQl2ZXJzaW9uIDMwMCBlcworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBoaWdocCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJZmxvYXQgYSA9IDAuMDsKKwkJ
CQlpbnQgYiA9IChpbnQpYTsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1aW50CisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbiAoKQor
CQkJeworCQkJCWZsb2F0IGEgPSAwLjA7CisJCQkJdWludCBiID0gKHVpbnQpYTsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBib29sCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbiAoKQorCQkJeworCQkJCWludCBhID0gMTsKKwkJCQli
b29sIGIgPSAoYm9vbClhOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGNhc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVy
cy9wcmVwcm9jZXNzb3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3ByZXByb2Nlc3Nvci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY0NzJjZWM0NmY5MmI1Yzc1M2QzNDU5OWUyYjcxYzRiNjhkZWIwZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9wcmVwcm9jZXNzb3IuaHRtbApAQCAtMCwwICsxLDM2IEBA
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ3ByZXByb2Nlc3Nvcic7CitkZXNj
cmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGls
cy5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0
cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9
Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVy
JykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAg
IH0KK30KKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdl
dEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL3ByZXByb2Nlc3Nvci50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvcHJlcHJvY2Vzc29yLnRl
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWJlMzg1MTk2NWJjMTEwMzFiY2I5OTFmNDAwYWQ3MTc1MjM3YzdiNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3ByZXByb2Nlc3Nvci50ZXN0CkBAIC0wLDAg
KzEsNTI1NiBAQAorZ3JvdXAgYmFzaWMgIkJhc2ljIFRlc3RzIgorCisJY2FzZSBjb3JyZWN0X3Bo
YXNlcworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2RlZmluZSBlICsxCisJCQkke0RFQ0xBUkFUSU9OU30K
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJbWVkaXVtcCBpbnQgbiA9IDFlOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2lkZW50aWZpZXIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSNkZWZpbmUgZSArMQorCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW1lZGl1bXAgaW50IDF4eXogPSAxOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBudWxsX2RpcmVjdGl2ZQorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDAuMDsgfQorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCSMKKwkJIyAvLyBjb21tZW50CisJLypzZmQqLwkJIyAvKiAqLworCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCW91dDAgPSAwLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGludmFsaWRfZGlyZWN0aXZlCisJCXZlcnNpb24gMzAwIGVzCisJCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjZGVm
aW4gQUFBCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWlzc2luZ19pZGVudGlmaWVyCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkjZGVmaW5lCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZW1w
dHlfb2JqZWN0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gLTEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCSMgZGVmaW5lIFZBTFVFCisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTFVFIC0gMS4wOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9mdW5jdGlvbgorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0xLjA7IH0KKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQkjIGRlZmluZSBWQUxVRShhKQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCW91dDAgPSBWQUxVRSgyLjApIC0gMS4wOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9kaXJlY3RpdmUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQkjCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDEuMDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaWRlbnRpZmllcl93aXRoX2RvdWJs
ZV91bmRlcnNjb3JlCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCXZl
cnNpb24gMzAwIGVzCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIF9fVkFMVUVf
XwkxCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLy8gX19WQUxVRV9fIG5vdCB1c2VkIHNp
bmNlIGl0IG1pZ2h0IGJlIHNldCBieSBhbiAidW5kZXJseWluZyBzb2Z0d2FyZSBsYXllciIKKwkJ
CQlvdXQwID0gZmxvYXQoMS4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKK2Vu
ZCAjIGJhc2ljCisKK2dyb3VwIGRlZmluaXRpb25zICJTeW1ib2wgRGVmaW5pdGlvbiBUZXN0cyIK
KworCWNhc2UgZGVmaW5lX3ZhbHVlX2FuZF9mdW5jdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDYuMDsgfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
UzpzaW5nbGUtbGluZX0KKwkJCSMJZGVmaW5lCQlWQUxVRQkJCSgxLjUgKyAyLjUpCisJCQkjCWRl
ZmluZQkJRlVOQ1RJT04oX19MSU5FX18sIGIpCV9fTElORV9fK2IKKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQlvdXQwID0gRlVOQ1RJT04oVkFMVUUsICgoMC4yKSArIDEuOCkgKTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVfb2JqZWN0X2ludmFs
aWRfc3ludGF4CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSNkZWZpbmUJCVZBTAkJCTIuMAorCQkJI3VuZGVmCQlWQUwJc2RmbGtqZmRzCisJCQkjZGVmaW5l
CQlWQUwJCQkxLjAKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHVuZGVmaW5lX2ludmFsaWRfb2JqZWN0XzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI3VuZGVmIF9fTElORV9fCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChfX0xJTkVfXyk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVmaW5lX2lu
dmFsaWRfb2JqZWN0XzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJI3VuZGVmIF9fRklMRV9fCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX0ZJTEVfXyk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVmaW5lX2ludmFsaWRfb2JqZWN0XzMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI3VuZGVmIF9fVkVSU0lP
Tl9fCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX1ZFUlNJT05fXyk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHVuZGVmaW5lX2ludmFsaWRfb2JqZWN0XzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI3VuZGVmIEdMX0VTCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNChHTF9FUyk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVmaW5lX2Z1bmN0aW9u
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkjZGVmaW5lCQlGVU5DVElPTihhLGIpIGErYgorCQkJI3VuZGVmCQlGVU5DVElPTgor
CQkJI2RlZmluZSAJRlVOQ1RJT04oYSxiKSBhLWIKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DVElPTigzLjAsIDIuMCk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGRlZmluaXRpb25zCisKK2dyb3VwIGlu
dmFsaWRfZGVmaW5pdGlvbnMgIkludmFsaWQgRGVmaW5pdGlvbiBUZXN0cyIKKworCWNhc2UgZGVm
aW5lX25vbl9pZGVudGlmaWVyCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSNkZWZpbmUgMTIzIDMyMQorCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZfbm9uX2lkZW50aWZpZXJfMQorCQl2ZXJzaW9u
IDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjdW5kZWYgMTIzCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZl9ub25f
aWRlbnRpZmllcl8yCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSN1bmRlZiBmb28uYmFyCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQki
IgorCWVuZAorCisKK2VuZCAjIGludmFsaWRfZGVmaW5pdGlvbnMKKworZ3JvdXAgb2JqZWN0X3Jl
ZGVmaW5pdGlvbnMgIk9iamVjdCBSZWRlZmluaXRpb24gVGVzdHMiCisKKwljYXNlIGludmFsaWRf
b2JqZWN0X2lkZW50CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJIyBkZWZpbmUgQUFBIAkJMi4wCisJCQkjIGRlZmluZSBB
QUFBIAkJMi4xCisJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQorCQkJIyBkZWZpbmUgVkFM
VUUgKEFBQUEgLSAxLjApCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZh
bGlkX29iamVjdF93aGl0ZXNwYWNlCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJIyBkZWZpbmUgQUFBIAkJMi4wCisJCQkj
IGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQS0gMS4wKQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9vYmplY3Rfb3AKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisJCQkjIGRlZmluZSBBQUEgCQkyLjAKKwkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxLjAp
CisJCQkjIGRlZmluZSBWQUxVRSAoQUFBICsgMS4wKQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgaW52YWxpZF9vYmplY3RfZmxvYXR2YWxfMQorCQl2ZXJzaW9uIDMwMCBlcwor
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5l
IEFBQSAJCTIuMAorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKKwkJCSMgZGVmaW5lIFZB
TFVFIChBQUEgLSAxLjEpCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZh
bGlkX29iamVjdF9mbG9hdHZhbF8yCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJIyBkZWZpbmUgQUFBIAkJMi4wCisJCQkj
IGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMGUt
MSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNChWQUxVRSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfb2JqZWN0X2lu
dHZhbF8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJIyBkZWZpbmUgQUFBIAkJMgorCQkJIyBkZWZpbmUgVkFMVUUgKEFB
QSAtIDEpCisJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMikKKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGludmFsaWRfb2JqZWN0X2ludHZhbF8yCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJIyBkZWZp
bmUgQUFBIAkJMgorCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEpCisJCQkjIGRlZmluZSBWQUxV
RSAoQUFBIC0gMHgxKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWZp
bmVfb2JqZWN0XzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSA2LjA7IH0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjCWRlZmluZSAgVkFMMSAx
LjAKKwkJCSNkZWZpbmUgCVZBTDIgMi4wCisKKwkJCSNkZWZpbmUgUkVTMiAoUkVTMSAqIFZBTDIp
CisJCQkjZGVmaW5lIFJFUzEJKFZBTDIgLyBWQUwxKQorCQkJI2RlZmluZSBSRVMyCShSRVMxICog
VkFMMikKKwkJCSNkZWZpbmUgVkFMVUUJKFJFUzIgKyBSRVMxKQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCW91dDAgPSBWQUxVRTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2lmZGVmCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJI2RlZmluZSBBREVGSU5FIDEKKwkJCSNkZWZpbmUgQURFRklORSAxCisKKwkJCSNpZmRlZiBB
REVGSU5FCisJCQkjZGVmaW5lIFZBTFVFIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMVUUg
MC4wCisJCQkjZW5kaWYKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX29iamVj
dF91bmRlZl9pZmRlZgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEuMDsgfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQURFRklO
RSAxCisJCQkjZGVmaW5lIEFERUZJTkUgMQorCQkJI3VuZGVmIEFERUZJTkUKKworCQkJI2lmZGVm
IEFERUZJTkUKKwkJCSNkZWZpbmUgVkFMVUUgMC4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUxV
RSAxLjAKKwkJCSNlbmRpZgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUxV
RTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWZpbmVfb2Jq
ZWN0X2lmbmRlZgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQURFRklORSAx
CisJCQkjZGVmaW5lIEFERUZJTkUgMQorCisJCQkjaWZuZGVmIEFERUZJTkUKKwkJCSNkZWZpbmUg
VkFMVUUgMC4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUxVRSAxLjAKKwkJCSNlbmRpZgorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUxVRTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2RlZmluZWRfMQorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQURFRklORSAxCisJCQkjZGVmaW5lIEFERUZJ
TkUgMQorCisJCQkjaWYgZGVmaW5lZChBREVGSU5FKQorCQkJI2RlZmluZSBWQUxVRSAxLjAKKwkJ
CSNlbHNlCisJCQkjZGVmaW5lIFZBTFVFIDAuMAorCQkJI2VuZGlmCisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJb3V0MCA9IFZBTFVFOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSByZWRlZmluZV9vYmplY3RfZGVmaW5lZF8yCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCQkJI2RlZmluZSBBREVGSU5FIDEKKwkJCSNkZWZpbmUgQURFRklORSAxCisKKwkJCSNp
ZiBkZWZpbmVkIEFERUZJTkUKKwkJCSNkZWZpbmUgVkFMVUUgMS4wCisJCQkjZWxzZQorCQkJI2Rl
ZmluZSBWQUxVRSAwLjAKKwkJCSNlbmRpZgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91
dDAgPSBWQUxVRTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVk
ZWZpbmVfb2JqZWN0X2NvbW1lbnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0
IGZsb2F0IG91dDAgPSA2LjA7IH0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjCWRlZmlu
ZSAgVkFMMSAxLjAKKwkJCSNkZWZpbmUgCVZBTDIgMi4wCisKKwkJCSNkZWZpbmUgUkVTMiAvKiBm
ZHNqa2xmZHNqa2wgZHNmamtoZmRzamtoIGZkc2prbGhmZHNqa2ggKi8gKFJFUzEgKiBWQUwyKQor
CQkJI2RlZmluZSBSRVMxCShWQUwyIC8gVkFMMSkKKwkJCSNkZWZpbmUgUkVTMgkvKiBld3Jsa2po
c2FkZiAqLyAoUkVTMSAqIFZBTDIpCisJCQkjZGVmaW5lIFZBTFVFCShSRVMyICsgUkVTMSkKKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX29iamVjdF9tdWx0aWxpbmVfY29tbWVu
dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDYuMDsg
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMJZGVmaW5lICBWQUwxIDEuMAorCQkJI2Rl
ZmluZSAJVkFMMiAyLjAKKworCQkJI2RlZmluZSBSRVMyIC8qIGZkc2prbGZkc2prbAorCQkJCQkJ
CWRzZmpraGZkc2praAorCQkJCQkJCWZkc2prbGhmZHNqa2ggKi8gKFJFUzEgKiBWQUwyKQorCQkJ
I2RlZmluZSBSRVMxCShWQUwyIC8gVkFMMSkKKwkJCSNkZWZpbmUgUkVTMgkvKiBld3Jsa2poc2Fk
ZiAqLyAoUkVTMSAqIFZBTDIpCisJCQkjZGVmaW5lIFZBTFVFCShSRVMyICsgUkVTMSkKKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMVUU7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIG9iamVjdF9yZWRlZmluaXRpb25zCisKK2dyb3VwIGludmFs
aWRfcmVkZWZpbml0aW9ucyAiSW52YWxpZCBSZWRlZmluaXRpb25zIFRlc3RzIgorCisJY2FzZSBp
bnZhbGlkX2lkZW50aWZpZXJfMgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIEdMX1ZBTFVFCTEuMAorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEdM
X1ZBTFVFKTsKKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgaW52YWxpZF9yZWRlZmluaXRpb25z
CisKK2dyb3VwIGNvbW1lbnRzICJDb21tZW50IFRlc3RzIgorCisJY2FzZSBtdWx0aWxpbmVfY29t
bWVudF9kZWZpbmUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSA0LjI7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBWQUxVRSAvKiBj
dXJyZW50CisJCQkJCQl2YWx1ZSAqLyA0LjIKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlv
dXQwID0gVkFMVUU7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5l
c3RlZF9jb21tZW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBv
dXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkvKiAvKiAqLworCQkJCW91dDAgPSAxLjA7CisJCQkJLy8g
Ki8KKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY29tbWVudF90cmlj
a18xCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4w
OyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLyov
CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkvKi8KKwkJCQlvdXQwID0gMS4wOworCQkJCS8qKi8KKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY29tbWVudF90cmlja18yCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLyoqLworCQkJ
CW91dDAgPSAxLjA7CisJCQkJLyovCisJCQkJb3V0MCA9IDAuMDsKKwkJCQkvKiovCisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfY29tbWVudAorCQl2ZXJz
aW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30K
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJLyogLyogKi8gKi8KKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gMS4wOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bnRlcm1pbmF0ZWRf
Y29tbWVudF8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkvKgorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSB1bnRlcm1pbmF0ZWRfY29tbWVudF8yCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkvKgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJhY2tzbGFzaF9p
bl9hX2NvbW1lbnRfMQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgYnVpbGRfc3VjY2Vzc2Z1
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCS8vIFxcbm90ZSB0aGVzZSBhcmUg
c29tZSBkZWNsYXJhdGlvbnMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQkvLyBcXG5vdGUgdGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbgorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkvLyBcXG5vdGUgdGhpcyBpcyBhIGZ1bmN0aW9uIGJvZHkKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYmFja3NsYXNoX2luX2FfY29t
bWVudF8yCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBidWlsZF9zdWNjZXNzZnVsCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJLyogXFxub3RlIHRoZXNlIGFyZSBzb21lIGRl
Y2xhcmF0aW9ucyAqLworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCS8qIFxcbm90ZSB0aGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uICovCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCS8qIFxcbm90ZSB0aGlzIGlzIGEgZnVuY3Rpb24gYm9keSAqLwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorZW5kICMgY29tbWVudHMKKworZ3JvdXAg
bGluZV9jb250aW51YXRpb24gIkxpbmUgQ29udGludWF0aW9uIFRlc3RzIgorCisJY2FzZSBjb21t
ZW50CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4w
OyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJ
b3V0MCA9IDEuMDsKKwkJCQkvLyBjb21tZW50IFxcCisJCQkJb3V0MCA9IC0xLjA7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmluZQorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQkjZGVmaW5lIEEoWCkgXFwKKwkJCQkoLTEuMCooWCkpCisKKwkJCXZvaWQgbWFp
biAoKQorCQkJeworCQkJCW91dDAgPSBBKC0xLjApOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBwcmVwcm9jZXNzaW5nX3Rva2VuCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCSNkZWZcXAorCQkJaW5lIEEoWCkgKC0xLjAqKFgpKQorCisJCQl2b2lkIG1haW4gKCkK
KwkJCXsKKwkJCQlvdXQwID0gQSgtMS4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdG9rZW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4g
KCkKKwkJCXsKKwkJCQlmbG9hdCBmXFwKKwkJCW9vID0gMS4wOworCQkJCW91dDAgPSBmb287CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1pZGRsZV9vZl9saW5lCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQSBhIFxcIGIKKwkJCSNkZWZpbmUgQiAx
LjAKKworCQkJdm9pZCBtYWluICgpCisJCQl7CisJCQkJb3V0MCA9IEI7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGxpbmVfY29udGludWF0aW9uCisKK2dyb3VwIGZ1
bmN0aW9uX2RlZmluaXRpb25zICJGdW5jdGlvbiBEZWZpbml0aW9ucyBUZXN0cyIKKworCWNhc2Ug
c2FtZV9vYmplY3RfYW5kX2Z1bmN0aW9uX3BhcmFtCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJI2RlZmluZSBWQUxVRSAxLjAKKwkJCSNkZWZpbmUgRlVOQ1RJT04oVkFMVUUsIEIpCShWQUxV
RS1CKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DVElPTigzLjAsIDIu
MCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGNvbXBsZXhfZnVu
YworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDUxOC41
OyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgQUFBKGEsYikJYSooQkJCKGEs
YikpCisJCQkjZGVmaW5lIEJCQihhLGIpCWEtYgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CW91dDAgPSBCQkIoQUFBKDguMC80LjAsIDIuMCkqQkJCKDIuMCoyLjAsMC43NSoyLjApLCBBQUEo
NDAuMCwxMC4wKkJCQig1LjAsMy4wKSkpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBmdW5jdGlvbl9kZWZpbml0aW9uX3dpdGhfY29tbWVudHMKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJLyogc2RmbGprICovICAJIy8qIHNkZmxqayAqL2RlZmluZSAvKiBzZGZs
amsgKi8gRlVOQyggLyogamtsc2ZkKi9hIC8qc2ZkamtsaCovLCAvKnNkZmtsaiAqL2IgLypzZGZr
bGoqLykJCWErYgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DKDEuMCwg
Mi4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgZnVuY3Rpb25f
ZGVmaW5pdGlvbnMKKworZ3JvdXAgcmVjdXJzaW9uICJSZWN1cnNpb25zIFRlc3RzIgorCisJY2Fz
ZSByZWN1cnNpb25fMQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIEFBQQlBQUEKKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEpOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSByZWN1cnNpb25fMgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIEFBQQlC
QkIKKwkJCSNkZWZpbmUgQkJCIAlBQUEKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEpOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSByZWN1cnNpb25fMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIEFBQQkoMS4wK0JCQikKKwkJCSNkZWZp
bmUgQkJCIAkoMi4wK0FBQSkKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWN1
cnNpb25fNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCSMgZGVmaW5lIEFBQShhKQlBQUEoYSkKKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEoMS4wKSk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlY3Vyc2lvbl81CisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJIyBkZWZpbmUg
QUFBKGEsIGIpCUFBQShiLCBhKQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSgxLjAsIDIuMCkpOworCQkJfQorCQkiIgorCWVuZAor
CitlbmQgIyByZWN1cnNpb24KKworZ3JvdXAgZnVuY3Rpb25fcmVkZWZpbml0aW9ucyAiRnVuY3Rp
b24gUmVkZWZpbml0aW9uIFRlc3RzIgorCisJY2FzZSBmdW5jdGlvbl9yZWRlZmluaXRpb25fMQor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsgfQor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKwkJCSMgZGVmaW5lIEZVTkMoIGEsIGIpCQlh
K2IKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAg
PSBGVU5DKDEuMCwgMi4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgZnVuY3Rpb25fcmVkZWZpbml0aW9uXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsg
b3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJKGEg
ICtiKQorCQkJIyBkZWZpbmUgRlVOQyggYSwgYiApKGEJCQkrYikKKworCQkJJHtERUNMQVJBVElP
TlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZnVuY3Rpb25fcmVkZWZpbml0
aW9uXzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAz
LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJKGEgICtiKQorCQkJIyBkZWZpbmUgRlVO
QyhhLGIpKGEJLyogY29tbWVudAorCQkJCQkJCQkJICovICtiKQorCisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IEZVTkMoMS4wLCAyLjApOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2Z1bmN0aW9uX3Jl
ZGVmaW5pdGlvbl9wYXJhbV8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCisJCQkjIGRlZmluZSBGVU5DKEEsYikJ
CUErYgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCkpOworCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBpbnZhbGlkX2Z1bmN0aW9uX3JlZGVmaW5pdGlvbl9wYXJhbV8yCisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMo
YSxiKQkJYStiCisJCQkjIGRlZmluZSBGVU5DKGEsYixjKQlhK2IrYworCisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoRlVOQygxLjAsIDIuMCwgMy4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlu
dmFsaWRfZnVuY3Rpb25fcmVkZWZpbml0aW9uX3BhcmFtXzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKwkJCSMg
ZGVmaW5lIEZVTkMoYSxiKQkJYithCisKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwgMi4w
KSk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGZ1bmN0aW9uc19yZWRlZmluaXRpb25zCisK
K2dyb3VwIGludmFsaWRfZnVuY3Rpb25fZGVmaW5pdGlvbnMgIkludmFsaWQgRnVuY3Rpb24gRGVm
aW5pdGlvbiBUZXN0cyIKKworCWNhc2UgYXJndW1lbnRzXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KEZVTkMpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVu
dHNfMgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRl
ZmluZSBGVU5DKGEsYikJCWErYgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygpKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1lbnRzXzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KEZVTkMoKCgpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVu
dHNfNAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRl
ZmluZSBGVU5DKGEsYikJCWErYgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQykpOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBhcmd1bWVudHNfNQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgorCisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoRlVOQygxLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1l
bnRzXzYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJIyBk
ZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFyZ3VtZW50c183CisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCisK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgYXJndW1lbnRzXzgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMo
MS4wLCAyLjAsIDMuMCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmlxdWVfcGFyYW1f
bmFtZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRl
ZmluZSBGVU5DKGEsYSkJCWErYQorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFyZ3VtZW50X2xpc3RfMQorCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKGEgYikJCWEr
YgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGFyZ3VtZW50X2xpc3RfMgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKGEgKyBiKQkJYStiCisKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9
ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYXJndW1l
bnRfbGlzdF8zCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSMgZGVmaW5lIEZVTkMoLGEsYikJCWErYgorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAs
Mi4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG5vX2Nsb3NpbmdfcGFyZW50aGVzaXNf
MQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmlu
ZSBGVU5DKAorCisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG5vX2Nsb3NpbmdfcGFyZW50aGVzaXNfMgorCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKEEgIGErYgorCisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG5vX2Nsb3NpbmdfcGFyZW50aGVzaXNfMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkjIGRlZmluZSBGVU5DKEEsQixDICBhK2IKKworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBub19j
bG9zaW5nX3BhcmVudGhlc2lzXzQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJIyBkZWZpbmUgRlVOQygKKwkJIiIKKwllbmQKKworZW5kICMgaW52YWxpZF9m
dW5jdGlvbl9kZWZpbml0aW9ucworCitncm91cCBzZW1hbnRpYyAiU2VtYW50aWMgVGVzdHMiCisK
KwljYXNlIG9wc19hc19hcmd1bWVudHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAyMC4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZp
bmUgRk9PKGEsIGIpCQkoMSBhIDkpIGIgMgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91
dDAgPSBmbG9hdChGT08oKywgKikpOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBjb3JyZWN0X29yZGVyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUg
RlVOQyhBKSBBCisJCQkjZGVmaW5lIEEgMi4wCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IEZVTkMoQSAtIDEuMCk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
K2VuZCAjIHNlbWFudGljCisKK2dyb3VwIHByZWRlZmluZWRfbWFjcm9zICJQcmVkZWZpbmVkIE1h
Y3JvcyBUZXN0cyIKKworCWNhc2UgdmVyc2lvbgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMwMC4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2RlZmluZSBBQUEgX19WRVJTSU9OX18KKwkJCQlvdXQw
ID0gZmxvYXQoQUFBKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
Z2xfZXNfMQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9
IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJb3V0MCA9IGZsb2F0KEdMX0VTKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgZ2xfZXNfMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjZGVmaW5lIEFBQShB
KSBBCisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IGZsb2F0KEFBQShHTF9FUykp
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsaW5lXzEKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyLjA7IH0KKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQljb25zdCBtZWRpdW1wIGludCBsaW5lID0gX19M
SU5FX187CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gZmxvYXQobGluZSk7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxpbmVfMgorCQl2ZXJzaW9uIDMwMCBlcwor
CQkjIE5vdGU6IEFyZ3VtZW50cyBhcmUgbWFjcm8gcmVwbGFjZWQgaW4gdGhlIGZpcnN0IHN0YWdl
LgorCQkjIE1hY3JvIHJlcGxhY2VtZW50IGxpc3QgaXMgZXhwYW5kZWQgaW4gdGhlIGxhc3Qgc3Rh
Z2UuCisJCXZhbHVlcyB7IG91dHB1dCB2ZWM0IG91dDAgPSB2ZWM0KDEyLjAsIDEyLjAsIDEwLjAs
IDExLjApOyB9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TOnNpbmdsZS1saW5lfQorCQkJI2RlZmlu
ZSBCQkIJCV9fTElORV9fLCAvKgorCQkJCSovIF9fTElORV9fCisJCQkjZGVmaW5lIEFBQShhLGIp
IEJCQiwgYSwgYgorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSB2ZWM0KEFBQShf
X0xJTkVfXywKKwkJCQkJCV9fTElORV9fCisJCQkJCQkpKTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgZmlsZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBv
dXRwdXQgZmxvYXQgb3V0MCA9IDAuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCW91dDAgPSBmbG9hdChfX0ZJTEVfXyk7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGlmX2dsX2VzCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIEdMX0VTCisJCQkJb3V0MCA9IDEuMDsKKwkj
ZWxzZQorCQkJCW91dDAgPSAtMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBpZl92ZXJzaW9uCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJI2lmIF9fVkVSU0lPTl9fID09IDMwMAorCQkJCW91dDAgPSAxLjA7
CisJI2Vsc2UKKwkJCQlvdXQwID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworZW5kICMgcHJlZGVmaW5lZF9tYWNyb3MKKworZ3JvdXAgY29uZGl0aW9u
YWxfaW5jbHVzaW9uICJDb25kaXRpb25hbCBJbmNsdXNpb24gVGVzdHMiCisKKwljYXNlIGJhc2lj
XzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7
IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjZGVmaW5l
IEFBQSBhc2RmCisKKwkjaWYgZGVmaW5lZCBBQUEgJiYgIWRlZmluZWQoQkJCKQorCQkJCW91dDAg
PSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQwID0gMC4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiYXNpY18yCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCSMgTm90ZTogdGhpcyBpcyBleHBl
Y3RlZCB0byBmYWlsIGNvbnRyYXJ5IHRvIG5hdGl2ZSBkRVFQLAorCQkjIHNlZSBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMTUyMworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2RlZmlu
ZSBBQUEgZGVmaW5lZChCQkIpCisKKwkjaWYgIUFBQQorCQkJCW91dDAgPSAxLjA7CisJI2Vsc2UK
KwkJCQlvdXQwID0gMC4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBkZWZpbmVkX21hY3JvX2RlZmluZWRfdGVzdAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQkjIE5vdGU6IHRoaXMgaXMg
ZXhwZWN0ZWQgdG8gZmFpbCBjb250cmFyeSB0byBuYXRpdmUgZEVRUCwKKwkJIyBzZWUgaHR0cHM6
Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9wdWxsLzE1MjMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNk
ZWZpbmUgQUFBIGRlZmluZWQKKworCSNpZiBBQUEgQUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxz
ZQorCQkJCW91dDAgPSAwLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGRlZmluZWRfbWFjcm9fdW5kZWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJIyBOb3RlOiB0aGlzIGlzIGV4cGVj
dGVkIHRvIGZhaWwgY29udHJhcnkgdG8gbmF0aXZlIGRFUVAsCisJCSMgc2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8xNTIzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjZGVmaW5l
IEJCQiAxCisJI2RlZmluZSBBQUEgZGVmaW5lZChCQkIpCisJI3VuZGVmIEJCQgorCisJI2lmICFB
QUEKKwkJCQlvdXQwID0gMS4wOworCSNlbHNlCisJCQkJb3V0MCA9IDAuMDsKKwkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVmaW5lX2RlZmluZWQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJ
IyBOb3RlOiB0aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwgY29udHJhcnkgdG8gbmF0aXZlIGRFUVAs
CisJCSMgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8xNTIz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjZGVmaW5lIENDQyAxCisJI2RlZmluZSBkZWZpbmVkIEJCQgorCSNkZWZp
bmUgQUFBIGRlZmluZWQKKworCSNpZiBBQUEgQ0NDCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQor
CQkJCW91dDAgPSAwLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIGRlZmluZV9kZWZpbmVkX291dHNpZGVfaWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJIyBOb3RlOiB0aGlzIGlzIGV4
cGVjdGVkIHRvIGZhaWwgY29udHJhcnkgdG8gbmF0aXZlIGRFUVAsCisJCSMgc2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8xNTIzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjZGVm
aW5lIENDQyAtIDAuNQorCSNkZWZpbmUgZGVmaW5lZCAwLjUKKwkjZGVmaW5lIEFBQSBkZWZpbmVk
CisJCQkJb3V0MCA9IDEuMCAtIChBQUEgQ0NDKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZGVmaW5lZF9pbnZhbGlkX2JlZm9yZV9hbGxfbWFjcm9zX3JlcGxhY2Vk
CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjZGVmaW5lIEZPTyAxCisJI2RlZmluZSBPUEVOIGRlZmluZWQoCisJI2Rl
ZmluZSBDTE9TRSBGT08pCisKKwkjaWYgT1BFTiBDTE9TRQorCQkJCW91dDAgPSAxLjA7CisJI2Vs
c2UKKwkJCQlvdXQwID0gMC4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBiYXNpY18zCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJI2lmIDAKKwkJCQlvdXQwID0gLTEuMDsKKwkjZWxpZiAwCisJCQkJb3V0MCA9
IC0yLjA7CisJI2VsaWYgMQorCQkJCW91dDAgPSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQwID0gLTMu
MDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgYmFz
aWNfNAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEu
MDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAw
CisJCQkJb3V0MCA9IC0xLjA7CisJI2VsaWYgMAorCQkJCW91dDAgPSAtMi4wOworCSNlbHNlCisJ
CQkJb3V0MCA9IDEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgYmFzaWNfNQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCSNpZiAxCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxpZiAwCisJCQkJb3V0MCA9IC0yLjA7
CisJI2Vsc2UKKwkJCQlvdXQwID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgdW5hcnlfb3BzXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgISgofjIgPj4gMSkgJiAxKQorCQkJCW91dDAgPSAx
LjA7CisJI2Vsc2UKKwkJCQlvdXQwID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5hcnlfb3BzXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgISgofigtIC0gLSAtIC0gMSArICsgKyArICsg
KzEpID4+IDEpICYgMSkKKwkJCQlvdXQwID0gLTEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAxLjA7
CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGNvbmRp
dGlvbmFsX2luY2x1c2lvbgorCitncm91cCBpbnZhbGlkX29wcyAiSW52YWxpZCBPcGVyYXRpb25z
IFRlc3RzIgorCisJY2FzZSBpbnZhbGlkX29wXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJ
eworCSNpZiAhKCh+KCsgKysxIC0gLSAtIC0xKSA+PiAxKSAmIDEpCisJCQkJJHtQT1NJVElPTl9G
UkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZh
bGlkX29wXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAhKCh+KCsgKyArMSAt
IC0tIC0xKSA+PiAxKSAmIDEpCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEu
MCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNl
bmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRf
aWRlbnRpZmllcl8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSNkZWZpbmUgQUFBIDEKKworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCSNpZiBkZWZpbmVkCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4w
KTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4
cGVjdGVkX2lkZW50aWZpZXJfMgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkjZGVmaW5lIEFBQSAxCisKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjaWYgZGVmaW5lZCgpCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9k
ZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfMworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkjZGVmaW5lIEFBQSAxCisKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgZGVmaW5lZCgKKwkJCQkke1BPU0lUSU9OX0ZSQUdf
Q09MT1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfaWRlbnRpZmllcl80CisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSNkZWZpbmUgQUFBIDEKKworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiBkZWZpbmVkKQorCQkJCSR7UE9TSVRJ
T05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVyXzUKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJI2RlZmluZSBBQUEgMQorCisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIGRlZmluZWQoKEFBQSkp
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKTsKKwkjZW5k
aWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX3Jw
YXJlbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkjZGVm
aW5lIEFBQSAxCisKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkj
aWYgZGVmaW5lZChBQUEKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkZWZpbmVkX2RlZmluZQorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJI2RlZmluZSBkZWZpbmUgMQorCSNkZWZpbmUgQUFBIDEuMAorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBBQUE7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWRfb3BzCisKK2dyb3VwIHVuZGVmaW5lZF9pZGVu
dGlmaWVycyAiVW5kZWZpbmVkIElkZW50aWZpZXJzIFRlc3RzIgorCisJY2FzZSB2YWxpZF91bmRl
ZmluZWRfaWRlbnRpZmllcl8xCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBm
bG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJI2lmIDEgfHwgQUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQorCQkJCW91dDAg
PSAtMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB2YWxpZF91bmRlZmluZWRfaWRlbnRpZmllcl8yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDAgJiYgQUFBCisJCQkJb3V0MCA9IC0xLjA7CisJI2Vs
c2UKKwkJCQlvdXQwID0gMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl8xCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkjaWYgMSAtIENDQyArICgtQUFBIHx8IEJCQikKKwkJCQkke1BPU0lUSU9OX0ZS
QUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9S
fSA9IHZlYzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVm
aW5lZF9pZGVudGlmaWVyXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAhQQor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfMworCQl2ZXJzaW9uIDMwMCBlcworCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJI2lmIC1BCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOworCSNlbmRp
ZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl80CisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgfkEKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVuZGVmaW5lZF9p
ZGVudGlmaWVyXzUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiBBICYmIEIKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworICAgICNkZWZpbmUgQSAxCisJI2lmIEEgJiYgQgorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgtMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVk
X2lkZW50aWZpZXJfNworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisgICAgI2RlZmluZSBC
IDEKKwkjaWYgQSAmJiBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOworCSNlbmRp
ZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl84CisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKyAgICAjZGVmaW5lIEIgMQorCSNkZWZpbmUgQSAyCisJ
I3VuZGVmIEEKKwkjaWYgQSAmJiBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
MS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwor
CSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl85
CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgQSB8fCBCCisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KC0xLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1
bmRlZmluZWRfaWRlbnRpZmllcl8xMAorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisgICAg
I2RlZmluZSBBIDAKKwkjaWYgQSB8fCBCCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQoMS4wKTsKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjAp
OworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmll
cl8xMQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisgICAgI2RlZmluZSBBIDAKKwkjZGVm
aW5lIEIgMgorCSN1bmRlZiBCCisJI2lmIEEgfHwgQgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCgtMS4wKTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdW5kZWZpbmVkX2lk
ZW50aWZpZXJfMTIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworICAgICNkZWZpbmUgQiAx
CisJI2lmIEEgfHwgQgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJ
I2Vsc2UKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKKwkjZW5kaWYK
KwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgdW5kZWZpbmVkX2lkZW50aWZpZXJzCisKK2dyb3Vw
IGludmFsaWRfY29uZGl0aW9uYWxzICJJbnZhbGlkIENvbmRpdGlvbmFscyBUZXN0cyIKKworCWNh
c2UgZW1wdHlfaWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZgorCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGVtcHR5X2lmZGVmCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWZkZWYKKwkJCQkk
e1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBlbXB0eV9pZm5kZWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZm5kZWYK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBpbnZhbGlkX2lmZGVmCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkj
aWZkZWYgMQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlm
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfaWZuZGVmCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkjaWZuZGVmIDEKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9pZl9k
ZWZpbmVkCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgZGVmaW5lZAorCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVudGVybWluYXRlZF9pZl8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYg
MQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9pZl8yCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkjaWYgMAorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9pZmRlZgorCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJI2lmZGVmIEZPT0JBUgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9pZm5k
ZWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZm5kZWYgR0xfRVMKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSB1bnRlcm1pbmF0ZWRfZWxzZV8xCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYg
MQorCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgdW50ZXJtaW5hdGVkX2Vsc2VfMgorCQl2ZXJzaW9uIDMwMCBl
cworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJI2lmIDAKKwkjZWxzZQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9lbGlm
XzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAwCisJI2VsaWYgMQorCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVudGVybWluYXRlZF9lbGlmXzIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNp
ZiAxCisJI2VsaWYgMAorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9lbGlmXzMKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCSNpZiAwCisJI2VsaWYgMAorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDIuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVsaWZfYWZ0ZXJf
ZWxzZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDAKKwkJCQkke1BPU0lUSU9O
X0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbHNlCisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoLTEuMCk7CisJI2VsaWYgMQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDAuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVsc2Vfd2l0
aG91dF9pZgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2Vsc2UKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBlbGlmX3dpdGhvdXRfaWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBp
bGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNl
bGlmIDEKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCSNlbmRpZgor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbmRpZl93aXRob3V0X2lmCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwor
CSNlbmRpZgorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBlbHNlX2FmdGVyX2Vsc2UKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAhR0xfRVMKKwkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KDEuMCk7CisJI2Vsc2UKKwkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2
ZWM0KC0xLjApOworCSNlbHNlCisJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4w
KTsKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbmVzdGVkX2VsaWZfd2l0aG91
dF9pZgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDEKKwkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJIwllbGlmCisJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNCgwLjApOworCSMJZW5kaWYKKwkjZW5kaWYKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgaWZfZmxvYXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZiAxLjIzMQor
CQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkjCWVsaWYKKwkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJIwllbmRpZgorCSNlbmRpZgorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB0b2tlbnNfYWZ0ZXJfaWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCSNpZiAxIGZvb2JhcgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDEuMCk7CisJI2VuZGlmCisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHRva2Vuc19hZnRlcl9l
bGlmCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMAorCSNlbGlmIGZvb2Jhcgor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJI2VuZGlmCisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHRva2Vuc19hZnRlcl9lbHNlCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkjaWYgMQorCSNlbHNlIGZvb2JhciAxLjIzMQorCSNlbmRpZgorCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHRva2Vuc19hZnRlcl9lbmRpZgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJI2lmIDEK
KwkjZWxzZQorCSNlbmRpZiBmb29iYXIKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB0b2tlbnNfYWZ0ZXJfaWZkZWYKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCSNpZmRlZiBGT09CQVIgZm9vYmFyCisJI2Vsc2UK
KwkjZW5kaWYKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB0b2tlbnNfYWZ0ZXJfaWZuZGVmCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjaWZuZGVmIEZPT0JBUiAsLCArLSA8PCBiYXJiYXIKKwkjZWxzZQorCSNl
bmRpZgorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIHVudGVybWluYXRlZF9uZXN0ZWRfYmxvY2tzCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkjaWYgMQorCSMJaWYgMQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWRfY29uZGl0
aW9uYWxzCisKK2dyb3VwIGNvbmRpdGlvbmFscyAiQ29uZGl0aW9uYWxzIFRlc3RzIgorCisJY2Fz
ZSBpZmRlZl8xCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gMS4wOyB9CisJCWJvdGggIiIKKwkjdmVyc2lvbiAzMDAgZXMKKwkjZGVmaW5lIEFBQQorCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJI2lmZGVmIEFBQQorCQkJCW91dDAgPSAxLjA7CisJI2Vsc2UKKwkJCQlvdXQw
ID0gLTEuMDsKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgaWZkZWZfMgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisJI3ZlcnNpb24gMzAwIGVzCisJI2RlZmluZSBBQUEKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCSNpZiBkZWZpbmVkICAoIEFBQSkKKwkJCQlvdXQwID0gMS4wOworCSNlbHNl
CisJCQkJb3V0MCA9IC0xLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGlmZGVmXzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0
IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkjaWZkZWYgQUFBCisJCQkJb3V0MCA9IC0xLjA7CisJI2Vsc2UKKwkJCQlvdXQw
ID0gMS4wOworCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBpZm5kZWZfMQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CSNpZm5kZWYgQUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAtMS4wOwor
CSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpZm5kZWZf
MgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJI2RlZmluZSBBQUEKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJI2lmbmRlZiBBQUEKKwkJCQlvdXQwID0gLTEuMDsKKwkjZWxzZQorCQkJCW91dDAgPSAx
LjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1p
eGVkX2NvbmRpdGlvbmFsX2luY2x1c2lvbgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBv
dXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCSNpZm5kZWYgQUFBCisJCQkJb3V0MCA9IDEuMDsKKwkjZWxpZiAxCisJ
CQkJb3V0MCA9IC0xLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG5lc3RlZF9pZl8xCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1
dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJI2lmIEdMX0VTCisJIwlpZiBfX1ZFUlNJT05fXyAhPSAzMDAKKwkJCQlvdXQw
ID0gLTEuMDsKKwkjCWVsc2UKKwkJCQlvdXQwID0gMS4wOworCSMJZW5kaWYKKwkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbmVzdGVkX2lmXzIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkjaWYgMQorCSMJaWYgMAor
CQkJCW91dDAgPSAtMS4wOworCSMJZWxzZQorCSMJCWlmIDAKKwkJCQlvdXQwID0gLTEuMDsKKwkj
CQllbGlmIDEKKwkJCQlvdXQwID0gMS4wOworCSMJCWVsc2UKKwkJCQlvdXQwID0gLTEuMDsKKwkj
CQllbmRpZgorCSMJZW5kaWYKKwkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbmVzdGVkX2lmXzMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkjaWYgMAorCSMJaWYgMQorCQkJCW91dDAgPSAtMS4wOworCSMJZW5kaWYK
KwkjZWxzZQorCQkJCW91dDAgPSAxLjA7CisJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKK2VuZCAjIGNvbmRpdGlvbmFscworCitncm91cCBkaXJlY3RpdmUgIkRpcmVj
dGl2ZSBUZXN0cyIKKworCWNhc2UgdmVyc2lvbl9pc19sZXNzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMjk5IGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSB2ZXJzaW9uX2lzX21vcmUKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQl2ZXJzaW9uIDMwMCBlcworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDEgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHZlcnNpb25fbWlzc2luZ19lcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCXZlcnNpb24gMzAwIGVzCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMAorCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgdmVyc2lvbl9taXNzaW5nCisJCWV4cGVjdCBjb21waWxlX2ZhaWwK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24KKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHZlcnNpb25fbm90X2ZpcnN0X3N0YXRlbWVudF8xCisJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJdmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSB2ZXJzaW9uX25vdF9maXJzdF9zdGF0ZW1lbnRfMgorCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnNpb24gMzAwIGVzCisJCWJvdGggIiIKKwkJCSNkZWZp
bmUgRk9PIEJBUgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2
ZXJzaW9uX2ludmFsaWRfdG9rZW5fMQorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZlcnNpb24g
MzAwIGVzCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcy4wCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSB2ZXJzaW9uX2ludmFsaWRfdG9rZW5fMgorCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CXZlcnNpb24gMzAwIGVzCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIGZvb2JhcgorCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgaW52YWxpZF92ZXJzaW9uCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gQUFBCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBhZGRpdGlvbmFsX3Rva2VucworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCXZl
cnNpb24gMzAwIGVzCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcyBmb29iYXIKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIGVycm9yX3dpdGhfbm9fdG9rZW5zCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkjZXJyb3IKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0
KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGVycm9yCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkjZGVmaW5lIEFBQSBhc2RmCisJCQkjZXJyb3IgMSAqIEFBQSAvKiBjb21tZW50ICovCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQor
CQkiIgorCWVuZAorCitlbmQgIyBkaXJlY3RpdmUKKworZ3JvdXAgYnVpbHRpbiAiQnVpbHQtaW4g
U3ltYm9sIFRlc3RzIgorCisJY2FzZSBsaW5lCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkjbGluZSAxCisJCQkJb3V0MCA9IGZsb2F0KF9fTElORV9fKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbGluZV9hbmRfZmlsZQor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgdmVjNCBvdXQwID0gdmVjNCgyMzQu
MCwgMjM0LjAsIDEwLjAsIDEwLjApOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJI2xpbmUgMjM0IDEwCisJCQkJb3V0MCA9IHZlYzQoX19MSU5FX18sIF9f
TElORV9fLCBfX0ZJTEVfXywgX19GSUxFX18pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBsaW5lX2V4cHJlc3Npb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyMC4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkjbGluZSArMjAKKwkJCQlvdXQwID0gZmxvYXQoX19MSU5F
X18pOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsaW5lX2FuZF9m
aWxlX2V4cHJlc3Npb24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IHZlYzQg
b3V0MCA9IHZlYzQoMjQzLjAsIDI0My4wLCAxMC4wLCAxMC4wKTsgfQorCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJI2xpbmUgKDIzMyArMTApICgrMTApCisJ
CQkJb3V0MCA9IHZlYzQoX19MSU5FX18sIF9fTElORV9fLCBfX0ZJTEVfXywgX19GSUxFX18pOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsaW5lX2RlZmluZWRfMQor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDQuMDsgfQor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJI2RlZmluZSBB
IDQKKwkJCSNsaW5lIEEKKwkJCQlvdXQwID0gZmxvYXQoX19MSU5FX18pOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsaW5lX2RlZmluZWRfMgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgdmVjNCBvdXQwID0gdmVjNCgyMzQuMCwgMjM0LjAsIDEw
LjAsIDEwLjApOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkjZGVmaW5lIEEgMTAKKwkJCSNsaW5lIDIzNCBBCisJCQkJb3V0MCA9IHZlYzQoX19MSU5F
X18sIF9fTElORV9fLCBfX0ZJTEVfXywgX19GSUxFX18pOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBlbXB0eV9saW5lCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCSNsaW5lCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9saW5lX2ZpbGVfMQorCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkjbGluZSAyMiAxLjIzNAorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KF9fTElORV9fLCBfX0xJTkVfXywgX19GSUxFX18sIF9fRklMRV9fKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9saW5lX2ZpbGVfMworCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkjbGluZSAyMzMgMTAgMgorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KF9fTElORV9fLCBfX0xJTkVfXywgX19GSUxFX18sIF9fRklMRV9fKTsKKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9saW5lX2ZpbGVfNAorCQl2ZXJzaW9uIDMw
MCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkjbGluZSBmb29iYXIKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNChfX0xJTkVfXywgX19MSU5FX18sIF9fRklMRV9fLCBfX0ZJTEVfXyk7CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIGJ1aWx0aW4KKworZ3JvdXAgcHJhZ21hcyAiUHJhZ21hIFRl
c3RzIgorCisJY2FzZSBwcmFnbWFfdmVydGV4CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCXZlcnRleCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkjcHJhZ21hCisJCQkjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpCisJCQkjcHJh
Z21hIGRlYnVnKG9mZikKKwkJCSNwcmFnbWEgb3B0aW1pemUob2ZmKQorCisJCQkke1ZFUlRFWF9E
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7VkVSVEVYX09VVFBVVH0K
KwkJCX0KKwkJIiIKKwkJZnJhZ21lbnQgIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IDEuMDsKKwkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgcHJhZ21hX2ZyYWdtZW50CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCXZlcnRleCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7VkVSVEVYX09VVFBVVH0KKwkJCX0KKwkJIiIKKwkJZnJhZ21lbnQgIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI3ByYWdtYQorCQkJI3ByYWdtYSBkZWJ1ZyhvZmYpCisJ
CQkjcHJhZ21hIG9wdGltaXplKG9mZikKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0
MCA9IDEuMDsKKwkJCQkke0ZSQUdNRU5UX09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgcHJhZ21hX21hY3JvX2V4cAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJI3ZlcnNpb24gMzAwIGVzCisJI2RlZmlu
ZSBvZmYJSU5WQUxJRAorCS8qIHByYWdtYSBsaW5lIG5vdCBtYWNybyBleHBhbmRlZCAqLworCSNw
cmFnbWEgZGVidWcob2ZmKQorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gMS4wOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwcmFnbWFfdW5yZWNvZ25pemVkX2Rl
YnVnCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBidWlsZF9zdWNjZXNzZnVsCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI3ByYWdtYSBkZWJ1ZygxLjIzKQorCisJCQkvLyB1
bnJlY29nbml6ZWQgcHJlcHJvY2Vzc29yIHRva2VuCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHByYWdtYV91bnJlY29nbml6ZWRfdG9rZW4KKwkJIyBOb3RlOiB1cHN0cmVhbSBkRVFQIHVzZXMg
dW5pY29kZSBjaGFyYWN0ZXJzIGhlcmUgYnV0IHdlIGNhbid0IHRlc3QKKwkJIyB0aGlzIGluIFdl
YkdMIGJlY2F1c2UgaXQgcmVxdWlyZXMgc3RyaW5ncyBwYXNzZWQgdG8gZ2xTaGFkZXJTb3VyY2UK
KwkJIyB0byBiZSBBU0NJSS4gVGhpcyB3b3VsZCBjYXVzZSB0aGUgdGVzdCB0byBmYWlsIGF0IGds
U2hhZGVyU291cmNlCisJCSMgaW5zdGVhZCBvZiBnbENvbXBpbGVTaGFkZXIsIHdoaWNoIGlzIG5v
dCB3aGF0IHdlIHdhbnQgdG8gdGVzdC4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGJ1aWxk
X3N1Y2Nlc3NmdWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjcHJhZ21hICoq
JQorCisJCQkvLyB0cmFpbGluZyBieXRlcyBmb3JtIGEgdmFsaWQgYnV0IHVucmVjb2duaXplZCBw
cmVwcm9jZXNzb3IgdG9rZW4KKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworZW5kICMgcHJhZ21hcworCitn
cm91cCBleHRlbnNpb25zICJFeHRlbnNpb24gVGVzdHMiCisKKwljYXNlIGJhc2ljCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCisKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1hY3JvX2V4cAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQg
ZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNk
ZWZpbmUgd2FybiBlbmFibGUKKworCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCisKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCW91dDAgPSAxLjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1pc3NpbmdfZXh0ZW5zaW9uX25hbWUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNleHRlbnNp
b24KKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfZXh0ZW5zaW9uX25hbWUKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSNleHRlbnNpb24gMiA6IGFsbAorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWlzc2luZ19jb2xvbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2V4dGVuc2lvbiBhbGwKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIGV4cGVjdGVkX2NvbG9uCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjZXh0ZW5z
aW9uIGFsbCA7CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05T
fQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVj
NCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtaXNzaW5nX2JlaGF2aW9yCisJCXZl
cnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkjZXh0ZW5zaW9uIGFsbCA6CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBp
bnZhbGlkX2JlaGF2aW9yXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNleHRlbnNpb24gYWxsIDogV0FS
TgorCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsK
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9iZWhhdmlvcl8yCisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkjZXh0ZW5zaW9uIGFsbCA6IHJlcXVpcmUKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGludmFsaWRfY2hhcl9pbl9uYW1lCisJCSMgTm90ZTogdXBzdHJlYW0gZEVRUCB1c2VzIHVuaWNv
ZGUgY2hhcmFjdGVycyBoZXJlIGJ1dCB3ZSBjYW4ndCB0ZXN0CisJCSMgdGhpcyBpbiBXZWJHTCBi
ZWNhdXNlIGl0IHJlcXVpcmVzIHN0cmluZ3MgcGFzc2VkIHRvIGdsU2hhZGVyU291cmNlCisJCSMg
dG8gYmUgQVNDSUkuIFRoaXMgd291bGQgY2F1c2UgdGhlIHRlc3QgdG8gZmFpbCBhdCBnbFNoYWRl
clNvdXJjZQorCQkjIGluc3RlYWQgb2YgZ2xDb21waWxlU2hhZGVyLCB3aGljaCBpcyBub3Qgd2hh
dCB3ZSB3YW50IHRvIHRlc3QuCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjZXh0ZW5zaW9uIGFsbCogOiB3
YXJuCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBpbnZhbGlkX2NoYXJfaW5fYmVoYXZpb3IKKwkJ
IyBOb3RlOiB1cHN0cmVhbSBkRVFQIHVzZXMgdW5pY29kZSBjaGFyYWN0ZXJzIGhlcmUgYnV0IHdl
IGNhbid0IHRlc3QKKwkJIyB0aGlzIGluIFdlYkdMIGJlY2F1c2UgaXQgcmVxdWlyZXMgc3RyaW5n
cyBwYXNzZWQgdG8gZ2xTaGFkZXJTb3VyY2UKKwkJIyB0byBiZSBBU0NJSS4gVGhpcyB3b3VsZCBj
YXVzZSB0aGUgdGVzdCB0byBmYWlsIGF0IGdsU2hhZGVyU291cmNlCisJCSMgaW5zdGVhZCBvZiBn
bENvbXBpbGVTaGFkZXIsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgdG8gdGVzdC4KKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSNleHRlbnNpb24gYWxsIDogd2FyKm4KKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIHVudGVybWluYXRlZF9jb21tZW50CisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjZXh0ZW5zaW9uIGFs
bCA6IHdhcm4gLyphc2QKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0g
PSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGFmdGVyX25vbl9wcmVwcm9j
ZXNzaW5nX3Rva2VucworCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCisK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJI2V4dGVuc2lvbiBhbGwgOiBkaXNhYmxlCisJCQkJJHtQT1NJVElP
Tl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKK2VuZCAjIGV4dGVu
c2lvbnMKKworZ3JvdXAgZXhwcmVzc2lvbnMgIkV4cHJlc3Npb24gVGVzdHMiCisKKwljYXNlIHNo
aWZ0X2xlZnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAg
PSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkjZGVmaW5lIFZBTCA0CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgKFZBTCA8PCAyKSA9PSAx
NgorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBzaGlmdF9yaWdodAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDUKKwkJCQlvdXQwID0gMC4wOworCQkJ
CSNpZiAoVkFMID4+IDEpID09IDIKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgY21wX2xlc3NfdGhhbgorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
JHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDUK
KwkJCQlvdXQwID0gMC4wOworCQkJCSNpZiAoVkFMIDwgNikgJiYgKC1WQUwgPCAtNCkKKwkJCQkJ
b3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbGVzc19vcl9lcXVhbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRw
dXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDYKKwkJCQlvdXQwID0gMC4wOworCQkJCSNpZiAo
VkFMIDw9IDYpICYmICgtVkFMIDw9IC02KQorCQkJCQlvdXQwID0gMS4wOworCQkJCSNlbmRpZgor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBvcgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMIDYKKwkJCQlv
dXQwID0gMC4wOworCQkJCSNpZiAoVkFMIHwgNSkgPT0gNworCQkJCQlvdXQwID0gMS4wOworCQkJ
CSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhbmQKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVmaW5lIFZB
TCA2CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgKFZBTCAmIDUpID09IDQKKwkJCQkJb3V0MCA9
IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgeG9yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0g
MS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
I2RlZmluZSBWQUwgNgorCQkJCW91dDAgPSAwLjA7CisJCQkJI2lmIChWQUwgXiA1KSA9PSAzCisJ
CQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1vZAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSNkZWZpbmUgVkFMIDEyCisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgKFZBTCAl
IDUpID09IDIKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfdmFsdWUKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVmaW5lIFZBTCAoKCAgKDQgICAp
ICkgICkKKwkJCQlvdXQwID0gMC4wOworCQkJCSNpZiBWQUwgPj0gNAorCQkJCQlvdXQwID0gMS4w
OworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBw
YXJlbnRoZXNpc190cmlja3kKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkjZGVmaW5lIFZBTCAoKCAgKDQgICApICkKKwkJCQlvdXQwID0gMC4wOworCQkJ
CSNpZiBWQUwpID49IDQKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfaWZfbm8KKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVmaW5lIFZBTCA0CisJ
CQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgVkFMID49IDQKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkj
ZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVz
aXNfaWYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAx
LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkj
ZGVmaW5lIFZBTCA0CisJCQkJb3V0MCA9IDAuMDsKKwkJCQkjaWYgKFZBTCA+PSA0KQorCQkJCQlv
dXQwID0gMS4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBwYXJlbnRoZXNpc19tdWx0aV9pZgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMg
eyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSNkZWZpbmUgVkFMICg0KQorCQkJCW91dDAgPSAwLjA7CisJ
CQkJI2lmICgoKFZBTCkpID49ICg0KSkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcGFyZW50aGVzaXNfc2luZ2xl
X2lmCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4w
OyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2Rl
ZmluZSBWQUwgNAorCQkJCW91dDAgPSAwLjA7CisJCQkJI2lmIChWQUwgPj0gNCkKKwkJCQkJb3V0
MCA9IDEuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgcGFyZW50aGVzaXNfaWZlbHNlX3RydWUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjZGVmaW5lIFZBTCA0CisJCQkJI2lmIChWQUwgPj0gNCkK
KwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZWxzZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSNlbmRp
ZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBwYXJlbnRoZXNpc19p
ZmVsc2VfZmFsc2UKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkjZGVmaW5lIFZBTCA0CisJCQkJI2lmIChWQUwgPiA0KQorCQkJCQlvdXQwID0gMC4wOwor
CQkJCSNlbHNlCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2VuZGlmCisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIGV2YWxfYmFzaWNfMAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNpZiAtNCArIDUgPT0gMQorCQkJCQlvdXQw
ID0gMS4wOworCQkJCSNlbHNlCisJCQkJCW91dDAgPSAwLjA7CisJCQkJI2VuZGlmCisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGV2YWxfYmFzaWNfMQorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNpZiAoMiAqIDIpIC0gMyA+
PSAwCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkj
ZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZXZhbF9zaW1w
bGVfcHJlY2VkZW5jZV8wCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9h
dCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJI2lmIDIgKiAzIC0gMyA9PSAzCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UK
KwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgZXZhbF9zaW1wbGVfcHJlY2VkZW5jZV8xCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2lmIDIgLSAyIC8gMiA9PSAxCisJCQkJ
CW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVmaW5lZF8xCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSNpZiBkZWZpbmVkKFgpCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9
IDAuMDsKKwkJCQkjZW5kaWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgZGVmaW5lZF8yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBv
dXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQkj
ZGVmaW5lIFkgMQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjaWYgZGVmaW5lZChYKSA9PSBZ
CisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkjZW5k
aWYKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVmaW5lZF8zCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQkjZGVmaW5lIFkgMQorCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjaWYgZGVmaW5lZChYKSAmJiBkZWZpbmVkKFkpCisJCQkJ
CW91dDAgPSAxLjA7CisJCQkJI2Vsc2UKKwkJCQkJb3V0MCA9IDAuMDsKKwkJCQkjZW5kaWYKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGVmaW5lZF80CisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCSNkZWZpbmUgWCAwCisJCQkjZGVmaW5lIFkgMQorCQkJI3VuZGVm
IFgKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJI2lmIGRlZmluZWQoWCkgJiYgZGVmaW5lZChZ
KQorCQkJCQlvdXQwID0gMC4wOworCQkJCSNlbHNlCisJCQkJCW91dDAgPSAxLjA7CisJCQkJI2Vu
ZGlmCisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRlZmluZWRfNQor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJJHtERUNMQVJBVElPTlN9CisJCQkjZGVmaW5lIFggMAorCQkJI2RlZmluZSBZIDEKKwkJ
CSN1bmRlZiBYCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSNpZiBkZWZpbmVkKFgpIHx8IGRl
ZmluZWQoWSkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZWxzZQorCQkJCQlvdXQwID0gMC4wOwor
CQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBkZWZp
bmVkXzYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAx
LjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJI2RlZmluZSBYIDAKKwkJCSNkZWZpbmUg
WSAxCisJCQkjdW5kZWYgWQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkjaWYgZGVmaW5lZChY
KSAmJiAoZGVmaW5lZChZKSB8fCAoWCA9PSAwKSkKKwkJCQkJb3V0MCA9IDEuMDsKKwkJCQkjZWxz
ZQorCQkJCQlvdXQwID0gMC4wOworCQkJCSNlbmRpZgorCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCitlbmQgIyBleHByZXNzaW9ucworCitncm91cCBpbnZhbGlkX2V4cHJlc3Npb25z
ICJJbnZhbGlkIEV4cHJlc3Npb24gVGVzdHMiCisKKwljYXNlIGludmFsaWRfdW5hcnlfZXhwcgor
CQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkjaWYgIQorCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRf
YmluYXJ5X2V4cHIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJI2lmIDMrNCsKKwkJ
CQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBtaXNzaW5nX2V4cHIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVf
ZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJI2lm
CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgaW52YWxpZF9leHByXzEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJI2lmIDQgNAorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGludmFsaWRfZXhwcl8yCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCSNpZiA0ICogKiA0CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZl
YzQoMS4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgaW52YWxpZF9leHByXzMKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJI2lmICg0KSg0KQorCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVub3BlbmVk
X3BhcmVudGhlc2lzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCSNpZiA0KQorCQkJ
CSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIHVuY2xvc2VkX3BhcmVudGhlc2lzCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBj
b21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCSNpZiAoKDQgKyA3KQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKK2VuZCAjIGludmFsaWRfZXhwcmVzc2lvbnMKKworZ3JvdXAg
b3BlcmF0b3JfcHJlY2VkZW5jZSAiT3BlcmF0b3IgcHJlY2VkZW5jZSIKKworCisJY2FzZSBtb2R1
bG9fdnNfbm90CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQw
ID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCAlICEg
MCApID09IDAKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAu
MAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGRpdl92c19ub3QKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4IC8gISAwICkgPT0gOAorCQkJI2RlZmluZSBWQUwg
MS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbXVsX3ZzX25vdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAo
IDggKiAhIDAgKSA9PSA4CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5l
IFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7
REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtb2R1bG9fdnNfYml0X2ludmVy
dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggJSB+IDQgKSA9PSAz
CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNl
bmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtb2R1bG9fdnNfbWludXMKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkjaWYgKCA4ICUgLSAyICkgPT0gMAorCQkJI2RlZmluZSBWQUwgMS4w
CisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbW9kdWxvX3ZzX3BsdXMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYg
KCA4ICUgKyAyICkgPT0gMAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmlu
ZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZGl2X3ZzX2JpdF9pbnZlcnQK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0K
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4IC8gfiAyICkgPT0gLTIK
KwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2Vu
ZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIGRpdl92c19taW51cworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSNpZiAoIDggLyAtIDIgKSA9PSAtNAorCQkJI2RlZmluZSBWQUwgMS4wCisJ
CQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
ZGl2X3ZzX3BsdXMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4IC8g
KyAyICkgPT0gNAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwg
MC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbXVsX3ZzX2JpdF9pbnZlcnQKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4ICogfiAyICkgPT0gLTI0CisJCQkj
ZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgor
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtdWxfdnNfbWludXMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
IHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkjaWYgKCA4ICogLSAyICkgPT0gLTE2CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNl
bHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlv
dXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtdWxf
dnNfcGx1cworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9
IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggKiArIDIg
KSA9PSAxNgorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4w
CisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFU
SU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ugc3ViX3ZzX21vZHVsbworCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggLSAzICUgMiApID09IDcKKwkJCSNkZWZpbmUg
VkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIHN1Yl92c19kaXYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0
IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkj
aWYgKCA4IC0gMyAvIDIgKSA9PSA3CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkj
ZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFM
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBzdWJfdnNfbXVsCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCAtIDMgKiAyICkgPT0gMgor
CQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5k
aWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgYWRkX3ZzX21vZHVsbworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCSNpZiAoIDggKyAzICUgMiApID09IDkKKwkJCSNkZWZpbmUgVkFMIDEuMAor
CQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGFkZF92c19kaXYKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91
dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4ICsg
MyAvIDIgKSA9PSA5CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZB
TCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVD
TEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBhZGRfdnNfbXVsCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCArIDMgKiAyICkgPT0gMTQKKwkJCSNkZWZp
bmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIHJzaGlmdF92c19zdWIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsg
b3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQkjaWYgKCA4ID4+IDMgLSAyICkgPT0gNAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxz
ZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0
MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcnNoaWZ0
X3ZzX2FkZAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9
IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggPj4gMyAr
IDIgKSA9PSAwCisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAw
LjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsc2hpZnRfdnNfc3ViCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCA8PCAzIC0gMiApID09IDE2CisJCQkjZGVm
aW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBsc2hpZnRfdnNfYWRkCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7
IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJI2lmICggOCA8PCAzICsgMiApID09IDI1NgorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkj
ZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
b3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZ3Jl
YXRlcl9vcl9lcXVhbF92c19yc2hpZnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0
cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQkjaWYgKCA4ID49IDMgPj4gMiApID09IDEKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UK
KwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAg
PSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGdyZWF0ZXJf
b3JfZXF1YWxfdnNfbHNoaWZ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBm
bG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lm
ICggOCA+PSAzIDw8IDIgKSA9PSAwCisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkj
ZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFM
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsZXNzX29yX2VxdWFs
X3ZzX3JzaGlmdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggPD0g
MyA+PiAyICkgPT0gMAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBW
QUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbGVzc19vcl9lcXVhbF92c19sc2hp
ZnQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7
IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4IDw9IDMgPDwgMiAp
ID09IDEKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAor
CQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGdyZWF0ZXJfdnNfcnNoaWZ0CisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCA+IDMgPj4gMiApID09IDEKKwkJCSNkZWZp
bmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIGdyZWF0ZXJfdnNfbHNoaWZ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJI2lmICggOCA+IDMgPDwgMiApID09IDAKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJ
I2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxl
c3NfdnNfcnNoaWZ0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBv
dXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCA8
IDMgPj4gMiApID09IDAKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUg
VkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtE
RUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxlc3NfdnNfbHNoaWZ0CisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCA8IDMgPDwgMiApID09IDEKKwkJ
CSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlm
CisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG5vdF9lcXVhbF92c19ncmVhdGVyX29yX2VxdWFsCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJI2lmICggOCAhPSAzID49IDIgKSA9PSAxCisJCQkj
ZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgor
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBub3RfZXF1YWxfdnNfbGVzc19vcl9lcXVhbAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggIT0gMyA8PSAyICkgPT0gMQorCQkJI2RlZmlu
ZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2Ugbm90X2VxdWFsX3ZzX2dyZWF0ZXIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkjaWYgKCA4ICE9IDMgPiAyICkgPT0gMQorCQkJI2RlZmluZSBWQUwgMS4wCisJ
CQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bm90X2VxdWFsX3ZzX2xlc3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZs
b2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYg
KCA4ICE9IDMgPCAyICkgPT0gMQorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2Rl
ZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZXF1YWxfdnNfZ3JlYXRl
cl9vcl9lcXVhbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0
MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggPT0g
MyA+PSAyICkgPT0gMAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBW
QUwgMC4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RF
Q0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZXF1YWxfdnNfbGVzc19vcl9lcXVh
bAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggPT0gMyA8PSAyICkg
PT0gMAorCQkJI2RlZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJ
CQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9O
U30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZXF1YWxfdnNfZ3JlYXRlcgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggPT0gMyA+IDIgKSA9PSAwCisJCQkjZGVmaW5l
IFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBlcXVhbF92c19sZXNzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91
dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJI2lmICggOCA9PSAzIDwgMiApID09IDAKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vsc2UK
KwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2VuZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAg
PSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJpdHdpc2Vf
YW5kX3ZzX25vdF9lcXVhbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxv
YXQgb3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAo
IDggJiAzICE9IDIgKSA9PSAwCisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVm
aW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBiaXR3aXNlX2FuZF92c19l
cXVhbAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEu
MDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDggJiAzID09IDIg
KSA9PSAwCisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJCSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAK
KwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB4b3JfdnNfYml0d2lzZV9hbmQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkjaWYgKCA4IF4gMyAmIDIgKSA9PSAxMAorCQkJI2Rl
ZmluZSBWQUwgMS4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZW5kaWYKKwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgYml0d2lzZV9vcl92c194b3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkjaWYgKCA4IHwgMyBeIDIgKSA9PSA5CisJCQkjZGVmaW5lIFZBTCAxLjAKKwkJ
CSNlbHNlCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQlvdXQwID0gVkFMOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBs
b2dpY2FsX2FuZF92c19iaXR3aXNlX29yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcyB7IG91
dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJI2lmICggMCAmJiAzIHwgMiApCisJCQkjZGVmaW5lIFZBTCAwLjAKKwkJCSNlbHNlCisJCQkj
ZGVmaW5lIFZBTCAxLjAKKwkJCSNlbmRpZgorCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlvdXQwID0gVkFM
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2dpY2FsX2FuZF92
c19iaXR3aXNlX2FuZAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQg
b3V0MCA9IDEuMDsgfQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDAg
JiYgNCAmIDIgKQorCQkJI2RlZmluZSBWQUwgMC4wCisJCQkjZWxzZQorCQkJI2RlZmluZSBWQUwg
MS4wCisJCQkjZW5kaWYKKworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJb3V0MCA9IFZBTDsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbG9naWNhbF9vcl92c19sb2dpY2FsX2Fu
ZAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsg
fQorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCSNpZiAoIDAgfHwgNCAmJiAwICkK
KwkJCSNkZWZpbmUgVkFMIDAuMAorCQkJI2Vsc2UKKwkJCSNkZWZpbmUgVkFMIDEuMAorCQkJI2Vu
ZGlmCisKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCW91dDAgPSBWQUw7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKK2VuZCAjIG9wZXJhdG9yX3ByZWNlZGVuY2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL3F1YWxpZmljYXRpb25fb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3F1YWxpZmlj
YXRpb25fb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzgxZjk2ZjY2YWYyNTc2NzY3MTY2MWM0NGMz
YjNhMzcxZTc2MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvcXVhbGlmaWNhdGlv
bl9vcmRlci5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgU2hhZGVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmds
c1NoYWRlckxpYnJhcnknKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVz
dE5hbWUgPSAncXVhbGlmaWNhdGlvbl9vcmRlcic7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6
ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGlscy5zZXREZWZhdWx0M0RDb250ZXh0
VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVy
eVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNv
ZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVy
biBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworbW9kdWxlcy5zaGFy
ZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3F1YWxpZmljYXRp
b25fb3JkZXIudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3F1YWxpZmljYXRpb25fb3JkZXIudGVzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MmM1YjM1N2YyZmMxYWJlN2UwMzIyNDNiYjk0YzQ5N2FkMmEyNDIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvcXVhbGlmaWNhdGlvbl9vcmRlci50ZXN0CkBAIC0wLDAg
KzEsMjcxNCBAQAorIyBXQVJOSU5HOiBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQuIERvIE5P
VCBtb2RpZnkgaXQgbWFudWFsbHksIGJ1dCByYXRoZXIKKyMgbW9kaWZ5IHRoZSBnZW5lcmF0aW5n
IHNjcmlwdCBmaWxlLiBPdGhlcndpc2UgY2hhbmdlcyB3aWxsIGJlIGxvc3QhCisKK2dyb3VwIHZh
cmlhYmxlcyAiT3JkZXIgb2YgcXVhbGlmaWNhdGlvbiBpbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMu
IgorCisJZ3JvdXAgdmFsaWQgIlZhbGlkIG9yZGVyaW5ncy4iCisKKwkJY2FzZSBpbnZhcmlhbnRf
aW50ZXJwX3N0b3JhZ2VfcHJlY2lzaW9uCisJCQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisK
KwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFu
dCBzbW9vdGggY2VudHJvaWQgb3V0IGxvd3AgZmxvYXQgeDA7CisKKwkJCQkgZmxhdCBvdXQgbWVk
aXVtcCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xf
UG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIi
CisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJ
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKwor
CQkJCSBzbW9vdGggY2VudHJvaWQgaW4gbG93cCBmbG9hdCB4MDsKKworCQkJCSBmbGF0IGluIG1l
ZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMu
MDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEu
MCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW50ZXJwX3N0b3JhZ2VfcHJlY2lzaW9u
CisJCQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZl
YzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCXNtb290aCBjZW50cm9pZCBvdXQgbG93cCBmbG9hdCB4
MDsKKworCQkJCWZsYXQgb3V0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBoaWdo
cCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJ
CQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJ
CQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZl
YzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQlzbW9vdGggY2VudHJvaWQgaW4gbG93cCBmbG9hdCB4
MDsKKworCQkJCWZsYXQgaW4gbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hw
IGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9
ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0
LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBpbnZh
cmlhbnRfaW50ZXJwX3N0b3JhZ2UKKwkJCWV4cGVjdCBwYXNzCisJCQl2YWx1ZXMge30KKworCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IHNt
b290aCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQkgZmxhdCBvdXQgZmxvYXQgeDE7CisK
KwkJCQkgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4
MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlv
bjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQkgc21vb3RoIGNlbnRyb2lkIGlu
IGZsb2F0IHgwOworCisJCQkJIGZsYXQgaW4gZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBmbG9h
dCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAg
KyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVz
dWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW52YXJpYW50
X3N0b3JhZ2VfcHJlY2lzaW9uCisJCQlleHBlY3QgcGFzcworCQkJdmFsdWVzIHt9CisKKwkJCXZl
cnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFudCBjZW50
cm9pZCBvdXQgbG93cCBmbG9hdCB4MDsKKworCQkJCSBvdXQgbWVkaXVtcCBmbG9hdCB4MTsKKwor
CQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bv
c2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0g
MCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCSBjZW50cm9pZCBpbiBs
b3dwIGZsb2F0IHgwOworCisJCQkJIGluIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9y
bSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCBy
ZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0
KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNh
c2Ugc3RvcmFnZV9wcmVjaXNpb24KKwkJCWV4cGVjdCBwYXNzCisJCQl2YWx1ZXMge30KKworCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQgb3V0
IGxvd3AgZmxvYXQgeDA7CisKKwkJCQlvdXQgbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCXVuaWZv
cm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAx
LjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJ
CQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVk
aXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJvaWQgaW4gbG93cCBmbG9hdCB4
MDsKKworCQkJCWluIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0
IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCAr
IHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1
bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBpbnRlcnBfc3Rv
cmFnZQorCQkJZXhwZWN0IHBhc3MKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdo
cCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlzbW9vdGggY2VudHJvaWQgb3V0IGZsb2F0IHgw
OworCisJCQkJZmxhdCBvdXQgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBmbG9hdCB4MjsKKwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJ
CQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFn
bWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29s
b3I7CisKKwkJCQlzbW9vdGggY2VudHJvaWQgaW4gZmxvYXQgeDA7CisKKwkJCQlmbGF0IGluIGZs
b2F0IHgxOworCisJCQkJIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBf
RnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJ
CSIiCisJCWVuZAorCQljYXNlIGludmFyaWFudF9zdG9yYWdlCisJCQlleHBlY3QgcGFzcworCQkJ
dmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKwor
CQkJCWludmFyaWFudCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQkgb3V0IGZsb2F0IHgx
OworCisJCQkJIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9z
aXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJIGNlbnRyb2lkIGluIGZs
b2F0IHgwOworCisJCQkJIGluIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gZmxvYXQgeDI7CisK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4
MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVz
dWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCisJZW5kICMgdmFsaWQKKwlncm91cCBp
bnZhbGlkICJJbnZhbGlkIG9yZGVyaW5ncy4iCisKKwkJY2FzZSBpbnZhcmlhbnRfaW50ZXJwX3By
ZWNpc2lvbl9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKwor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50
IHNtb290aCBsb3dwIGNlbnRyb2lkIG91dCBmbG9hdCB4MDsKKworCQkJCSBmbGF0IG1lZGl1bXAg
b3V0IGZsb2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Q
b3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQls
YXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJ
CQkJIHNtb290aCBsb3dwIGNlbnRyb2lkIGluIGZsb2F0IHgwOworCisJCQkJIGZsYXQgbWVkaXVt
cCBpbiBmbG9hdCB4MTsKKworCQkJCSBoaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9p
ZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4w
OworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4w
KTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBpbnZhcmlhbnRfc3RvcmFnZV9pbnRlcnBf
cHJlY2lzaW9uCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVy
dGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IGNlbnRy
b2lkIG91dCBzbW9vdGggbG93cCBmbG9hdCB4MDsKKworCQkJCSBvdXQgZmxhdCBtZWRpdW1wIGZs
b2F0IHgxOworCisJCQkJIHVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlv
biA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQo
bG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJIGNl
bnRyb2lkIGluIHNtb290aCBsb3dwIGZsb2F0IHgwOworCisJCQkJIGluIGZsYXQgbWVkaXVtcCBm
bG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJ
CQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJ
CQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBpbnZhcmlhbnRfc3RvcmFnZV9wcmVjaXNpb25faW50
ZXJwCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIi
CisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJ
aW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IGNlbnRyb2lkIG91
dCBsb3dwIHNtb290aCBmbG9hdCB4MDsKKworCQkJCSBvdXQgbWVkaXVtcCBmbGF0IGZsb2F0IHgx
OworCisJCQkJIHVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRF
UVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRp
b24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJIGNlbnRyb2lk
IGluIGxvd3Agc21vb3RoIGZsb2F0IHgwOworCisJCQkJIGluIG1lZGl1bXAgZmxhdCBmbG9hdCB4
MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQ
X0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJ
CQkiIgorCQllbmQKKwkJY2FzZSBpbnZhcmlhbnRfcHJlY2lzaW9uX2ludGVycF9zdG9yYWdlCisJ
CQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGln
aHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IGxvd3Agc21vb3RoIGNlbnRy
b2lkIG91dCBmbG9hdCB4MDsKKworCQkJCSBtZWRpdW1wIGZsYXQgb3V0IGZsb2F0IHgxOworCisJ
CQkJIGhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9z
aXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJIGxvd3Agc21vb3RoIGNl
bnRyb2lkIGluIGZsb2F0IHgwOworCisJCQkJIG1lZGl1bXAgZmxhdCBpbiBmbG9hdCB4MTsKKwor
CQkJCSBoaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdD
b2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgor
CQllbmQKKwkJY2FzZSBpbnZhcmlhbnRfcHJlY2lzaW9uX3N0b3JhZ2VfaW50ZXJwCisJCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVj
NCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IGxvd3AgY2VudHJvaWQgb3V0IHNtb290
aCBmbG9hdCB4MDsKKworCQkJCSBtZWRpdW1wIG91dCBmbGF0IGZsb2F0IHgxOworCisJCQkJIGhp
Z2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAg
PSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247
CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQg
bWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJIGxvd3AgY2VudHJvaWQgaW4gc21v
b3RoIGZsb2F0IHgwOworCisJCQkJIG1lZGl1bXAgaW4gZmxhdCBmbG9hdCB4MTsKKworCQkJCSBo
aWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZs
b2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9
IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQK
KwkJY2FzZSBpbnRlcnBfaW52YXJpYW50X3N0b3JhZ2VfcHJlY2lzaW9uCisJCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQ
X1Bvc2l0aW9uOworCisJCQkJc21vb3RoIGludmFyaWFudCBjZW50cm9pZCBvdXQgbG93cCBmbG9h
dCB4MDsKKworCQkJCWZsYXQgb3V0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBo
aWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsK
KwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9
CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1w
IHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQlzbW9vdGggIGNlbnRyb2lkIGluIGxvd3AgZmxv
YXQgeDA7CisKKwkJCQlmbGF0IGluIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBo
aWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1
bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJl
c3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ug
aW50ZXJwX2ludmFyaWFudF9wcmVjaXNpb25fc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFp
bAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlv
bjsKKworCQkJCXNtb290aCBpbnZhcmlhbnQgbG93cCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisK
KwkJCQlmbGF0IG1lZGl1bXAgb3V0IGZsb2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZvcm0gZmxv
YXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgx
ID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIK
KworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRF
UVBfRnJhZ0NvbG9yOworCisJCQkJc21vb3RoICBsb3dwIGNlbnRyb2lkIGluIGZsb2F0IHgwOwor
CisJCQkJZmxhdCBtZWRpdW1wIGluIGZsb2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZvcm0gZmxv
YXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgw
ICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJl
c3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludGVycF9z
dG9yYWdlX2ludmFyaWFudF9wcmVjaXNpb24KKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZh
bHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJ
CQlzbW9vdGggY2VudHJvaWQgb3V0IGludmFyaWFudCBsb3dwIGZsb2F0IHgwOworCisJCQkJZmxh
dCBvdXQgbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOwor
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsK
KwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZy
YWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdD
b2xvcjsKKworCQkJCXNtb290aCBjZW50cm9pZCBpbiAgbG93cCBmbG9hdCB4MDsKKworCQkJCWZs
YXQgaW4gbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOwor
CisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsg
eDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJl
c3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBpbnRlcnBfc3RvcmFnZV9w
cmVjaXNpb25faW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30K
KworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJc21vb3Ro
IGNlbnRyb2lkIG91dCBsb3dwIGludmFyaWFudCBmbG9hdCB4MDsKKworCQkJCWZsYXQgb3V0IG1l
ZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWds
X1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAi
IgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJ
CWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisK
KwkJCQlzbW9vdGggY2VudHJvaWQgaW4gbG93cCAgZmxvYXQgeDA7CisKKwkJCQlmbGF0IGluIG1l
ZGl1bXAgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMu
MDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEu
MCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW50ZXJwX3ByZWNpc2lvbl9pbnZhcmlh
bnRfc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZl
cnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCXNtb290aCBsb3dwIGlu
dmFyaWFudCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQlmbGF0IG1lZGl1bXAgb3V0IGZs
b2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlv
biA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQo
bG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJc21v
b3RoIGxvd3AgIGNlbnRyb2lkIGluIGZsb2F0IHgwOworCisJCQkJZmxhdCBtZWRpdW1wIGluIGZs
b2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJ
CWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJ
CX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludGVycF9wcmVjaXNpb25fc3RvcmFnZV9pbnZhcmlh
bnQKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlp
biBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlzbW9vdGggbG93cCBjZW50cm9pZCBv
dXQgaW52YXJpYW50IGZsb2F0IHgwOworCisJCQkJZmxhdCBtZWRpdW1wIG91dCBmbG9hdCB4MTsK
KworCQkJCSBoaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQ
X1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9u
ID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCXNtb290aCBsb3dw
IGNlbnRyb2lkIGluICBmbG9hdCB4MDsKKworCQkJCWZsYXQgbWVkaXVtcCBpbiBmbG9hdCB4MTsK
KworCQkJCSBoaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0Zy
YWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQki
IgorCQllbmQKKwkJY2FzZSBzdG9yYWdlX2ludmFyaWFudF9pbnRlcnBfcHJlY2lzaW9uCisJCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAg
dmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQgb3V0IGludmFyaWFudCBzbW9vdGgg
bG93cCBmbG9hdCB4MDsKKworCQkJCW91dCBmbGF0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1
bmlmb3JtICBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4
MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlv
bjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQljZW50cm9pZCBpbiAgc21vb3Ro
IGxvd3AgZmxvYXQgeDA7CisKKwkJCQlpbiBmbGF0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1
bmlmb3JtICBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlm
bG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3Ig
PSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5k
CisJCWNhc2Ugc3RvcmFnZV9pbnZhcmlhbnRfcHJlY2lzaW9uX2ludGVycAorCQkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVR
UF9Qb3NpdGlvbjsKKworCQkJCWNlbnRyb2lkIG91dCBpbnZhcmlhbnQgbG93cCBzbW9vdGggZmxv
YXQgeDA7CisKKwkJCQlvdXQgbWVkaXVtcCBmbGF0IGZsb2F0IHgxOworCisJCQkJdW5pZm9ybSBo
aWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsK
KwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9
CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1w
IHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQljZW50cm9pZCBpbiAgbG93cCBzbW9vdGggZmxv
YXQgeDA7CisKKwkJCQlpbiBtZWRpdW1wIGZsYXQgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhp
Z2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3Vs
dCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVz
dWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBz
dG9yYWdlX2ludGVycF9pbnZhcmlhbnRfcHJlY2lzaW9uCisJCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9u
OworCisJCQkJY2VudHJvaWQgb3V0IHNtb290aCBpbnZhcmlhbnQgbG93cCBmbG9hdCB4MDsKKwor
CQkJCW91dCBmbGF0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtICBoaWdocCBmbG9h
dCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEg
PSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgor
CisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVR
UF9GcmFnQ29sb3I7CisKKwkJCQljZW50cm9pZCBpbiBzbW9vdGggIGxvd3AgZmxvYXQgeDA7CisK
KwkJCQlpbiBmbGF0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtICBoaWdocCBmbG9h
dCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAg
KyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVz
dWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ugc3RvcmFnZV9p
bnRlcnBfcHJlY2lzaW9uX2ludmFyaWFudAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFs
dWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJ
CWNlbnRyb2lkIG91dCBzbW9vdGggbG93cCBpbnZhcmlhbnQgZmxvYXQgeDA7CisKKwkJCQlvdXQg
ZmxhdCBtZWRpdW1wIGZsb2F0IHgxOworCisJCQkJdW5pZm9ybSBoaWdocCBmbG9hdCB4MjsKKwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJ
CQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFn
bWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29s
b3I7CisKKwkJCQljZW50cm9pZCBpbiBzbW9vdGggbG93cCAgZmxvYXQgeDA7CisKKwkJCQlpbiBm
bGF0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJ
CQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIp
IC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3Vs
dCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBzdG9yYWdlX3ByZWNpc2lvbl9p
bnZhcmlhbnRfaW50ZXJwCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKwor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQg
b3V0IGxvd3AgaW52YXJpYW50IHNtb290aCBmbG9hdCB4MDsKKworCQkJCW91dCBtZWRpdW1wIGZs
YXQgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwICBmbG9hdCB4MjsKKworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bv
c2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxh
eW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJ
CQljZW50cm9pZCBpbiBsb3dwICBzbW9vdGggZmxvYXQgeDA7CisKKwkJCQlpbiBtZWRpdW1wIGZs
YXQgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwICBmbG9hdCB4MjsKKworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsK
KwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7
CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ugc3RvcmFnZV9wcmVjaXNpb25faW50ZXJwX2lu
dmFyaWFudAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRl
eCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWNlbnRyb2lkIG91dCBsb3dw
IHNtb290aCBpbnZhcmlhbnQgZmxvYXQgeDA7CisKKwkJCQlvdXQgbWVkaXVtcCBmbGF0IGZsb2F0
IHgxOworCisJCQkJdW5pZm9ybSBoaWdocCAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9
IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9j
YXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJv
aWQgaW4gbG93cCBzbW9vdGggIGZsb2F0IHgwOworCisJCQkJaW4gbWVkaXVtcCBmbGF0IGZsb2F0
IHgxOworCisJCQkJdW5pZm9ybSBoaWdocCAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRF
UVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0K
KwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9pbnZhcmlhbnRfaW50ZXJwX3N0b3JhZ2UK
KwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlpbiBo
aWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlsb3dwIGludmFyaWFudCBzbW9vdGggY2Vu
dHJvaWQgb3V0IGZsb2F0IHgwOworCisJCQkJbWVkaXVtcCBmbGF0IG91dCBmbG9hdCB4MTsKKwor
CQkJCWhpZ2hwICB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bv
c2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0g
MCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWxvd3AgIHNtb290aCBj
ZW50cm9pZCBpbiBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgZmxhdCBpbiBmbG9hdCB4MTsKKwor
CQkJCWhpZ2hwICB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdD
b2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgor
CQllbmQKKwkJY2FzZSBwcmVjaXNpb25faW52YXJpYW50X3N0b3JhZ2VfaW50ZXJwCisJCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVj
NCBkRVFQX1Bvc2l0aW9uOworCisJCQkJbG93cCBpbnZhcmlhbnQgY2VudHJvaWQgb3V0IHNtb290
aCBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgb3V0IGZsYXQgZmxvYXQgeDE7CisKKwkJCQloaWdo
cCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0g
MS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOwor
CQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1l
ZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWxvd3AgIGNlbnRyb2lkIGluIHNtb290
aCBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgaW4gZmxhdCBmbG9hdCB4MTsKKworCQkJCWhpZ2hw
IHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQg
cmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVj
NChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQlj
YXNlIHByZWNpc2lvbl9pbnRlcnBfaW52YXJpYW50X3N0b3JhZ2UKKwkJCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwkJCXZhbHVlcyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9z
aXRpb247CisKKwkJCQlsb3dwIHNtb290aCBpbnZhcmlhbnQgY2VudHJvaWQgb3V0IGZsb2F0IHgw
OworCisJCQkJbWVkaXVtcCBmbGF0IG91dCBmbG9hdCB4MTsKKworCQkJCWhpZ2hwICB1bmlmb3Jt
IGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJ
CQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJ
CSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVj
NCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWxvd3Agc21vb3RoICBjZW50cm9pZCBpbiBmbG9hdCB4
MDsKKworCQkJCW1lZGl1bXAgZmxhdCBpbiBmbG9hdCB4MTsKKworCQkJCWhpZ2hwICB1bmlmb3Jt
IGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9
ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0
LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVj
aXNpb25faW50ZXJwX3N0b3JhZ2VfaW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOwor
CisJCQkJbG93cCBzbW9vdGggY2VudHJvaWQgb3V0IGludmFyaWFudCBmbG9hdCB4MDsKKworCQkJ
CW1lZGl1bXAgZmxhdCBvdXQgZmxvYXQgeDE7CisKKwkJCQloaWdocCB1bmlmb3JtIGZsb2F0IHgy
OworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIu
MDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0Zy
YWdDb2xvcjsKKworCQkJCWxvd3Agc21vb3RoIGNlbnRyb2lkIGluICBmbG9hdCB4MDsKKworCQkJ
CW1lZGl1bXAgZmxhdCBpbiBmbG9hdCB4MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7
CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEg
KyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwg
cmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9zdG9y
YWdlX2ludmFyaWFudF9pbnRlcnAKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7
fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlsb3dw
IGNlbnRyb2lkIG91dCBpbnZhcmlhbnQgc21vb3RoIGZsb2F0IHgwOworCisJCQkJbWVkaXVtcCBv
dXQgZmxhdCBmbG9hdCB4MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gIGZsb2F0IHgyOworCisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJ
Z2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsK
KworCQkJCWxvd3AgY2VudHJvaWQgaW4gIHNtb290aCBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAg
aW4gZmxhdCBmbG9hdCB4MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gIGZsb2F0IHgyOworCisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8g
My4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwg
MS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNpb25fc3RvcmFnZV9pbnRl
cnBfaW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJbG93cCBjZW50cm9p
ZCBvdXQgc21vb3RoIGludmFyaWFudCBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgb3V0IGZsYXQg
ZmxvYXQgeDE7CisKKwkJCQloaWdocCB1bmlmb3JtICBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0
aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91
dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQls
b3dwIGNlbnRyb2lkIGluIHNtb290aCAgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIGluIGZsYXQg
ZmxvYXQgeDE7CisKKwkJCQloaWdocCB1bmlmb3JtICBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJ
CQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJ
CQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW50ZXJwX3ByZWNpc2lvbl9zdG9yYWdlCisJCQll
eHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAg
dmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJc21vb3RoIGxvd3AgY2VudHJvaWQgb3V0IGZsb2F0
IHgwOworCisJCQkJZmxhdCBtZWRpdW1wIG91dCBmbG9hdCB4MTsKKworCQkJCSBoaWdocCB1bmlm
b3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOwor
CQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0K
KwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAg
dmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCXNtb290aCBsb3dwIGNlbnRyb2lkIGluIGZsb2F0
IHgwOworCisJCQkJZmxhdCBtZWRpdW1wIGluIGZsb2F0IHgxOworCisJCQkJIGhpZ2hwIHVuaWZv
cm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0
ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1
bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0
b3JhZ2VfaW50ZXJwX3ByZWNpc2lvbgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVz
IHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWNl
bnRyb2lkIG91dCBzbW9vdGggbG93cCBmbG9hdCB4MDsKKworCQkJCW91dCBmbGF0IG1lZGl1bXAg
ZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRp
b24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0
KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWNl
bnRyb2lkIGluIHNtb290aCBsb3dwIGZsb2F0IHgwOworCisJCQkJaW4gZmxhdCBtZWRpdW1wIGZs
b2F0IHgxOworCisJCQkJdW5pZm9ybSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigp
CisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJ
ZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJ
fQorCQkJIiIKKwkJZW5kCisJCWNhc2Ugc3RvcmFnZV9wcmVjaXNpb25faW50ZXJwCisJCQlleHBl
Y3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVj
NCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQgb3V0IGxvd3Agc21vb3RoIGZsb2F0IHgw
OworCisJCQkJb3V0IG1lZGl1bXAgZmxhdCBmbG9hdCB4MTsKKworCQkJCXVuaWZvcm0gaGlnaHAg
ZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJ
CXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJ
IiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0
IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJvaWQgaW4gbG93cCBzbW9vdGggZmxvYXQgeDA7
CisKKwkJCQlpbiBtZWRpdW1wIGZsYXQgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZs
b2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4
MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCBy
ZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNp
b25faW50ZXJwX3N0b3JhZ2UKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQor
CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlsb3dwIHNt
b290aCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIGZsYXQgb3V0IGZsb2F0
IHgxOworCisJCQkJaGlnaHAgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJ
CQkJeworCQkJCQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0g
ZEVRUF9Qb3NpdGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2Nh
dGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQlsb3dwIHNt
b290aCBjZW50cm9pZCBpbiBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgZmxhdCBpbiBmbG9hdCB4
MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBf
RnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJ
CSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9zdG9yYWdlX2ludGVycAorCQkJZXhwZWN0IGNv
bXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVR
UF9Qb3NpdGlvbjsKKworCQkJCWxvd3AgY2VudHJvaWQgb3V0IHNtb290aCBmbG9hdCB4MDsKKwor
CQkJCW1lZGl1bXAgb3V0IGZsYXQgZmxvYXQgeDE7CisKKwkJCQloaWdocCB1bmlmb3JtIGZsb2F0
IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9
IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisK
KwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQ
X0ZyYWdDb2xvcjsKKworCQkJCWxvd3AgY2VudHJvaWQgaW4gc21vb3RoIGZsb2F0IHgwOworCisJ
CQkJbWVkaXVtcCBpbiBmbGF0IGZsb2F0IHgxOworCisJCQkJaGlnaHAgdW5pZm9ybSBmbG9hdCB4
MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4
MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0
LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW52YXJpYW50X3N0
b3JhZ2VfaW50ZXJwCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJaW52YXJpYW50IGNl
bnRyb2lkIG91dCBzbW9vdGggZmxvYXQgeDA7CisKKwkJCQkgb3V0IGZsYXQgZmxvYXQgeDE7CisK
KwkJCQkgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4
MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlv
bjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQkgY2VudHJvaWQgaW4gc21vb3Ro
IGZsb2F0IHgwOworCisJCQkJIGluIGZsYXQgZmxvYXQgeDE7CisKKwkJCQkgdW5pZm9ybSBmbG9h
dCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAoeDAg
KyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVz
dWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgaW50ZXJwX2lu
dmFyaWFudF9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKwor
CQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJc21vb3RoIGlu
dmFyaWFudCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQlmbGF0IG91dCBmbG9hdCB4MTsK
KworCQkJCSB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJ
CXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0
aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkg
b3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCXNtb290aCAgY2VudHJvaWQg
aW4gZmxvYXQgeDA7CisKKwkJCQlmbGF0IGluIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gZmxv
YXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgw
ICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJl
c3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludGVycF9z
dG9yYWdlX2ludmFyaWFudAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisK
KwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCXNtb290aCBj
ZW50cm9pZCBvdXQgaW52YXJpYW50IGZsb2F0IHgwOworCisJCQkJZmxhdCBvdXQgZmxvYXQgeDE7
CisKKwkJCQkgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJ
CQl4MCA9IDEuMDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3Np
dGlvbjsKKwkJCQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQlzbW9vdGggY2VudHJvaWQg
aW4gIGZsb2F0IHgwOworCisJCQkJZmxhdCBpbiBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGZs
b2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4
MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCBy
ZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBzdG9yYWdl
X2ludmFyaWFudF9pbnRlcnAKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQor
CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQljZW50cm9p
ZCBvdXQgaW52YXJpYW50IHNtb290aCBmbG9hdCB4MDsKKworCQkJCW91dCBmbGF0IGZsb2F0IHgx
OworCisJCQkJdW5pZm9ybSAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJ
CQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9z
aXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJvaWQgaW4gIHNt
b290aCBmbG9hdCB4MDsKKworCQkJCWluIGZsYXQgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtICBm
bG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9hdCByZXN1bHQgPSAo
eDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwg
cmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ugc3RvcmFn
ZV9pbnRlcnBfaW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30K
KworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJv
aWQgb3V0IHNtb290aCBpbnZhcmlhbnQgZmxvYXQgeDA7CisKKwkJCQlvdXQgZmxhdCBmbG9hdCB4
MTsKKworCQkJCXVuaWZvcm0gIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJ
CQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bv
c2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0g
MCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWNlbnRyb2lkIGluIHNt
b290aCAgZmxvYXQgeDA7CisKKwkJCQlpbiBmbGF0IGZsb2F0IHgxOworCisJCQkJdW5pZm9ybSAg
ZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0g
KHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQs
IHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludmFy
aWFudF9wcmVjaXNpb25fc3RvcmFnZQorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVz
IHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWlu
dmFyaWFudCBsb3dwIGNlbnRyb2lkIG91dCBmbG9hdCB4MDsKKworCQkJCSBtZWRpdW1wIG91dCBm
bG9hdCB4MTsKKworCQkJCSBoaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRp
b24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0
KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCSBs
b3dwIGNlbnRyb2lkIGluIGZsb2F0IHgwOworCisJCQkJIG1lZGl1bXAgaW4gZmxvYXQgeDE7CisK
KwkJCQkgaGlnaHAgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJewor
CQkJCQlmbG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFn
Q29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIK
KwkJZW5kCisJCWNhc2Ugc3RvcmFnZV9pbnZhcmlhbnRfcHJlY2lzaW9uCisJCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQ
X1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQgb3V0IGludmFyaWFudCBsb3dwIGZsb2F0IHgwOwor
CisJCQkJb3V0IG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0IHgy
OworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIu
MDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJ
CWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0Zy
YWdDb2xvcjsKKworCQkJCWNlbnRyb2lkIGluICBsb3dwIGZsb2F0IHgwOworCisJCQkJaW4gbWVk
aXVtcCBmbG9hdCB4MTsKKworCQkJCXVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7
CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjAp
OworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0b3JhZ2VfcHJlY2lzaW9uX2ludmFyaWFu
dAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWlu
IGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWNlbnRyb2lkIG91dCBsb3dwIGludmFy
aWFudCBmbG9hdCB4MDsKKworCQkJCW91dCBtZWRpdW1wIGZsb2F0IHgxOworCisJCQkJdW5pZm9y
bSBoaWdocCBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQl4MCA9IDEu
MDsKKwkJCQkJeDEgPSAyLjA7CisJCQkJCWdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlvbjsKKwkJ
CQl9CisJCQkiIgorCisJCQlmcmFnbWVudCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRp
dW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7CisKKwkJCQljZW50cm9pZCBpbiBsb3dwICBmbG9hdCB4
MDsKKworCQkJCWluIG1lZGl1bXAgZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0
IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCAr
IHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1
bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNpb25f
aW52YXJpYW50X3N0b3JhZ2UKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7fQor
CisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlsb3dwIGlu
dmFyaWFudCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIG91dCBmbG9hdCB4
MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRF
UVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRp
b24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJbG93cCAgY2Vu
dHJvaWQgaW4gZmxvYXQgeDA7CisKKwkJCQltZWRpdW1wIGluIGZsb2F0IHgxOworCisJCQkJaGln
aHAgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlmbG9h
dCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3IgPSB2
ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5kCisJ
CWNhc2UgcHJlY2lzaW9uX3N0b3JhZ2VfaW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWls
CisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9u
OworCisJCQkJbG93cCBjZW50cm9pZCBvdXQgaW52YXJpYW50IGZsb2F0IHgwOworCisJCQkJbWVk
aXVtcCBvdXQgZmxvYXQgeDE7CisKKwkJCQloaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJ
Z2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsK
KworCQkJCWxvd3AgY2VudHJvaWQgaW4gIGZsb2F0IHgwOworCisJCQkJbWVkaXVtcCBpbiBmbG9h
dCB4MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQor
CQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRF
UVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0K
KwkJCSIiCisJCWVuZAorCQljYXNlIHByZWNpc2lvbl9zdG9yYWdlCisJCQlleHBlY3QgY29tcGls
ZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJdmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bv
c2l0aW9uOworCisJCQkJbG93cCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisKKwkJCQltZWRpdW1w
IG91dCBmbG9hdCB4MTsKKworCQkJCWhpZ2hwIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lk
IG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Q
b3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIK
KwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQls
YXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJ
CQkJbG93cCBjZW50cm9pZCBpbiBmbG9hdCB4MDsKKworCQkJCW1lZGl1bXAgaW4gZmxvYXQgeDE7
CisKKwkJCQloaWdocCB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQX0Zy
YWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJCQki
IgorCQllbmQKKwkJY2FzZSBzdG9yYWdlX2ludGVycAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsK
KworCQkJCWNlbnRyb2lkIG91dCBzbW9vdGggZmxvYXQgeDA7CisKKwkJCQlvdXQgZmxhdCBmbG9h
dCB4MTsKKworCQkJCXVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsK
KwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBf
UG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJvaWQgaW4g
c21vb3RoIGZsb2F0IHgwOworCisJCQkJaW4gZmxhdCBmbG9hdCB4MTsKKworCQkJCXVuaWZvcm0g
ZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0g
KHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQs
IHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0b3Jh
Z2VfaW52YXJpYW50CisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2YWx1ZXMge30KKworCQkJ
dmVydGV4ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisJCQkJaW4gaGlnaHAgdmVjNCBkRVFQX1Bvc2l0aW9uOworCisJCQkJY2VudHJvaWQgb3V0
IGludmFyaWFudCBmbG9hdCB4MDsKKworCQkJCW91dCBmbG9hdCB4MTsKKworCQkJCXVuaWZvcm0g
ZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJ
CXgxID0gMi4wOworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJ
IiIKKworCQkJZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0
IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJY2VudHJvaWQgaW4gIGZsb2F0IHgwOworCisJCQkJaW4g
ZmxvYXQgeDE7CisKKwkJCQl1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJ
CQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlkRVFQ
X0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9CisJ
CQkiIgorCQllbmQKKwkJY2FzZSBpbnZhcmlhbnRfaW50ZXJwX3N0b3JhZ2VfcHJlY2lzaW9uX2lu
dmFyaWFudF9pbnB1dAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJ
CXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFudCBz
bW9vdGggY2VudHJvaWQgb3V0IGxvd3AgZmxvYXQgeDA7CisKKwkJCQkgZmxhdCBvdXQgbWVkaXVt
cCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBt
YWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9z
aXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJ
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5
b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJ
CWludmFyaWFudCAgc21vb3RoIGNlbnRyb2lkIGluIGxvd3AgZmxvYXQgeDA7CisKKwkJCQkgZmxh
dCBpbiBtZWRpdW1wIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisK
KwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4
MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVz
dWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludGVycF9zdG9yYWdlX3By
ZWNpc2lvbl9pbnZhcmlhbnRfaW5wdXQKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVl
cyB7fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlz
bW9vdGggY2VudHJvaWQgb3V0IGxvd3AgZmxvYXQgeDA7CisKKwkJCQlmbGF0IG91dCBtZWRpdW1w
IGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1h
aW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4wOworCQkJCQlnbF9Qb3Np
dGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJZnJhZ21lbnQgIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQlsYXlv
dXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOworCisJCQkJ
aW52YXJpYW50IHNtb290aCBjZW50cm9pZCBpbiBsb3dwIGZsb2F0IHgwOworCisJCQkJZmxhdCBp
biBtZWRpdW1wIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJ
CQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4Mikg
LyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0
LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludmFyaWFudF9pbnRlcnBfc3Rv
cmFnZV9pbnZhcmlhbnRfaW5wdXQKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZhbHVlcyB7
fQorCisJCQl2ZXJ0ZXggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCQlpbiBoaWdocCB2ZWM0IGRFUVBfUG9zaXRpb247CisKKwkJCQlpbnZh
cmlhbnQgc21vb3RoIGNlbnRyb2lkIG91dCBmbG9hdCB4MDsKKworCQkJCSBmbGF0IG91dCBmbG9h
dCB4MTsKKworCQkJCSB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7
CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQ
X1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9u
ID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWludmFyaWFudCAg
c21vb3RoIGNlbnRyb2lkIGluIGZsb2F0IHgwOworCisJCQkJIGZsYXQgaW4gZmxvYXQgeDE7CisK
KwkJCQkgdW5pZm9ybSBmbG9hdCB4MjsKKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQlm
bG9hdCByZXN1bHQgPSAoeDAgKyB4MSArIHgyKSAvIDMuMDsKKwkJCQkJZEVRUF9GcmFnQ29sb3Ig
PSB2ZWM0KHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIDEuMCk7CisJCQkJfQorCQkJIiIKKwkJZW5k
CisJCWNhc2UgaW52YXJpYW50X3N0b3JhZ2VfcHJlY2lzaW9uX2ludmFyaWFudF9pbnB1dAorCQkJ
ZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hw
IHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFudCBjZW50cm9pZCBvdXQgbG93cCBm
bG9hdCB4MDsKKworCQkJCSBvdXQgbWVkaXVtcCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGhp
Z2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOwor
CQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0K
KwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAg
dmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWludmFyaWFudCAgY2VudHJvaWQgaW4gbG93cCBm
bG9hdCB4MDsKKworCQkJCSBpbiBtZWRpdW1wIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gaGln
aHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0
ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1
bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHN0
b3JhZ2VfcHJlY2lzaW9uX2ludmFyaWFudF9pbnB1dAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsK
KworCQkJCWNlbnRyb2lkIG91dCBsb3dwIGZsb2F0IHgwOworCisJCQkJb3V0IG1lZGl1bXAgZmxv
YXQgeDE7CisKKwkJCQl1bmlmb3JtIGhpZ2hwIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJZ2xfUG9zaXRpb24g
PSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50ICIiCisJCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJbGF5b3V0KGxv
Y2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsKKworCQkJCWludmFy
aWFudCBjZW50cm9pZCBpbiBsb3dwIGZsb2F0IHgwOworCisJCQkJaW4gbWVkaXVtcCBmbG9hdCB4
MTsKKworCQkJCXVuaWZvcm0gaGlnaHAgZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4oKQorCQkJ
CXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJCWRFUVBf
RnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJCX0KKwkJ
CSIiCisJCWVuZAorCQljYXNlIGludGVycF9zdG9yYWdlX2ludmFyaWFudF9pbnB1dAorCQkJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgorCQkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWluIGhpZ2hwIHZl
YzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCXNtb290aCBjZW50cm9pZCBvdXQgZmxvYXQgeDA7CisK
KwkJCQlmbGF0IG91dCBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJ
dm9pZCBtYWluKCkKKwkJCQl7CisJCQkJCXgwID0gMS4wOworCQkJCQl4MSA9IDIuMDsKKwkJCQkJ
Z2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uOworCQkJCX0KKwkJCSIiCisKKwkJCWZyYWdtZW50
ICIiCisJCQkJI3ZlcnNpb24gMzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CQkJbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjsK
KworCQkJCWludmFyaWFudCBzbW9vdGggY2VudHJvaWQgaW4gZmxvYXQgeDA7CisKKwkJCQlmbGF0
IGluIGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gZmxvYXQgeDI7CisKKwkJCQl2b2lkIG1haW4o
KQorCQkJCXsKKwkJCQkJZmxvYXQgcmVzdWx0ID0gKHgwICsgeDEgKyB4MikgLyAzLjA7CisJCQkJ
CWRFUVBfRnJhZ0NvbG9yID0gdmVjNChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCAxLjApOworCQkJ
CX0KKwkJCSIiCisJCWVuZAorCQljYXNlIGludmFyaWFudF9zdG9yYWdlX2ludmFyaWFudF9pbnB1
dAorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJdmFsdWVzIHt9CisKKwkJCXZlcnRleCAiIgor
CQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJCWlu
IGhpZ2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjsKKworCQkJCWludmFyaWFudCBjZW50cm9pZCBvdXQg
ZmxvYXQgeDA7CisKKwkJCQkgb3V0IGZsb2F0IHgxOworCisJCQkJIHVuaWZvcm0gZmxvYXQgeDI7
CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJeDAgPSAxLjA7CisJCQkJCXgxID0gMi4w
OworCQkJCQlnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247CisJCQkJfQorCQkJIiIKKworCQkJ
ZnJhZ21lbnQgIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJCQlsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJh
Z0NvbG9yOworCisJCQkJaW52YXJpYW50ICBjZW50cm9pZCBpbiBmbG9hdCB4MDsKKworCQkJCSBp
biBmbG9hdCB4MTsKKworCQkJCSB1bmlmb3JtIGZsb2F0IHgyOworCisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCWZsb2F0IHJlc3VsdCA9ICh4MCArIHgxICsgeDIpIC8gMy4wOworCQkJCQlk
RVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTsKKwkJCQl9
CisJCQkiIgorCQllbmQKKworCWVuZCAjIGludmFsaWQKKworZW5kICMgdmFyaWFibGVzCitncm91
cCBwYXJhbWV0ZXJzICJPcmRlciBvZiBxdWFsaWZpY2F0aW9uIGluIGZ1bmN0aW9uIHBhcmFtZXRl
cnMuIgorCisJZ3JvdXAgdmFsaWQgIlZhbGlkIG9yZGVyaW5ncy4iCisKKwkJY2FzZSBzdG9yYWdl
X3BhcmFtZXRlcl9wcmVjaXNpb24KKwkJCWV4cGVjdCBwYXNzCisJCQl2ZXJzaW9uIDMwMCBlcwor
CQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZv
bzAgKGNvbnN0IGluIGxvd3AgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOwor
CQkJCX0KKworCQkJCXZvaWQgZm9vMSAoIG91dCBtZWRpdW1wIGZsb2F0IHgpCisJCQkJeworCQkJ
CQl4ID0gMS4wOworCQkJCX0KKworCQkJCWZsb2F0IGZvbzIgKCBpbm91dCBoaWdocCBmbG9hdCB4
KQorCQkJCXsKKwkJCQkJcmV0dXJuIHggKyAxLjA7CisJCQkJfQorCisJCQkJdm9pZCBtYWluKCkK
KwkJCQl7CisJCQkJCSR7U0VUVVB9CisJCQkJCWZsb2F0IHJlc3VsdDsKKwkJCQkJZm9vMShyZXN1
bHQpOworCQkJCQlmbG9hdCB4MCA9IGZvbzAoMS4wKTsKKwkJCQkJZm9vMihyZXN1bHQpOworCQkJ
CQkke09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBzdG9yYWdlX3BhcmFtZXRl
cgorCQkJZXhwZWN0IHBhc3MKKwkJCXZlcnNpb24gMzAwIGVzCisJCQl2YWx1ZXMge30KKworCQkJ
Ym90aCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCQkJCSR7REVDTEFSQVRJT05TfQorCisJCQkJZmxvYXQgZm9vMCAoY29uc3QgaW4gZmxvYXQg
eCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAo
IG91dCBmbG9hdCB4KQorCQkJCXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBm
b28yICggaW5vdXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0K
KworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1
bHQ7CisJCQkJCWZvbzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJ
CWZvbzIocmVzdWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNh
c2Ugc3RvcmFnZV9wcmVjaXNpb24KKwkJCWV4cGVjdCBwYXNzCisJCQl2ZXJzaW9uIDMwMCBlcwor
CQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZv
bzAgKGNvbnN0IGxvd3AgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJ
CX0KKworCQkJCXZvaWQgZm9vMSAoIG1lZGl1bXAgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAx
LjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoIGhpZ2hwIGZsb2F0IHgpCisJCQkJeworCQkJ
CQlyZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJ
JHtTRVRVUH0KKwkJCQkJZmxvYXQgcmVzdWx0OworCQkJCQlmb28xKHJlc3VsdCk7CisJCQkJCWZs
b2F0IHgwID0gZm9vMCgxLjApOworCQkJCQlmb28yKHJlc3VsdCk7CisJCQkJCSR7T1VUUFVUfQor
CQkJCX0KKwkJCSIiCisJCWVuZAorCQljYXNlIHBhcmFtZXRlcl9wcmVjaXNpb24KKwkJCWV4cGVj
dCBwYXNzCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGluIGxvd3AgZmxvYXQgeCkKKwkJCQl7CisJ
CQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAob3V0IG1lZGl1bXAg
ZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAo
aW5vdXQgaGlnaHAgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0K
KworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1
bHQ7CisJCQkJCWZvbzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJ
CWZvbzIocmVzdWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisKKwll
bmQgIyB2YWxpZAorCWdyb3VwIGludmFsaWQgIkludmFsaWQgb3JkZXJpbmdzLiIKKworCQljYXNl
IHN0b3JhZ2VfcHJlY2lzaW9uX3BhcmFtZXRlcgorCQkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQkJ
dmVyc2lvbiAzMDAgZXMKKwkJCXZhbHVlcyB7fQorCisJCQlib3RoICIiCisJCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCQlmbG9hdCBmb28wIChjb25zdCBsb3dwIGluIGZsb2F0IHgpCisJCQkJeworCQkJCQly
ZXR1cm4geCArIDEuMDsKKwkJCQl9CisKKwkJCQl2b2lkIGZvbzEgKCBtZWRpdW1wIG91dCBmbG9h
dCB4KQorCQkJCXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBmb28yICggaGln
aHAgaW5vdXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKwor
CQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7
CisJCQkJCWZvbzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZv
bzIocmVzdWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2Ug
cGFyYW1ldGVyX3N0b3JhZ2VfcHJlY2lzaW9uCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2
ZXJzaW9uIDMwMCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJCWZsb2F0IGZvbzAgKGluIGNvbnN0IGxvd3AgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJl
dHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAob3V0IG1lZGl1bXAgZmxvYXQg
eCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoaW5vdXQg
aGlnaHAgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJ
CXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJ
CQkJCWZvbzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIo
cmVzdWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcGFy
YW1ldGVyX3ByZWNpc2lvbl9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJz
aW9uIDMwMCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJCWZsb2F0IGZvbzAgKGluIGxvd3AgY29uc3QgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVy
biB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAob3V0IG1lZGl1bXAgZmxvYXQgeCkK
KwkJCQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoaW5vdXQgaGln
aHAgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZv
aWQgbWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJ
CWZvbzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVz
dWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcHJlY2lz
aW9uX3N0b3JhZ2VfcGFyYW1ldGVyCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJzaW9u
IDMwMCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
CWZsb2F0IGZvbzAgKGxvd3AgY29uc3QgaW4gZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4
ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAobWVkaXVtcCBvdXQgZmxvYXQgeCkKKwkJ
CQl7CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoaGlnaHAgaW5vdXQg
ZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQg
bWFpbigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZv
bzEocmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0
KTsKKwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcHJlY2lzaW9u
X3BhcmFtZXRlcl9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJzaW9uIDMw
MCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZs
b2F0IGZvbzAgKGxvd3AgaW4gY29uc3QgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsg
MS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAobWVkaXVtcCBvdXQgZmxvYXQgeCkKKwkJCQl7
CisJCQkJCXggPSAxLjA7CisJCQkJfQorCisJCQkJZmxvYXQgZm9vMiAoaGlnaHAgaW5vdXQgZmxv
YXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgbWFp
bigpCisJCQkJeworCQkJCQkke1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZvbzEo
cmVzdWx0KTsKKwkJCQkJZmxvYXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0KTsK
KwkJCQkJJHtPVVRQVVR9CisJCQkJfQorCQkJIiIKKwkJZW5kCisJCWNhc2UgcGFyYW1ldGVyX3N0
b3JhZ2UKKwkJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJCXZlcnNpb24gMzAwIGVzCisJCQl2YWx1
ZXMge30KKworCQkJYm90aCAiIgorCQkJCSN2ZXJzaW9uIDMwMCBlcworCQkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCQkJCSR7REVDTEFSQVRJT05TfQorCisJCQkJZmxvYXQgZm9vMCAoaW4g
Y29uc3QgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJ
CXZvaWQgZm9vMSAob3V0IGZsb2F0IHgpCisJCQkJeworCQkJCQl4ID0gMS4wOworCQkJCX0KKwor
CQkJCWZsb2F0IGZvbzIgKGlub3V0IGZsb2F0IHgpCisJCQkJeworCQkJCQlyZXR1cm4geCArIDEu
MDsKKwkJCQl9CisKKwkJCQl2b2lkIG1haW4oKQorCQkJCXsKKwkJCQkJJHtTRVRVUH0KKwkJCQkJ
ZmxvYXQgcmVzdWx0OworCQkJCQlmb28xKHJlc3VsdCk7CisJCQkJCWZsb2F0IHgwID0gZm9vMCgx
LjApOworCQkJCQlmb28yKHJlc3VsdCk7CisJCQkJCSR7T1VUUFVUfQorCQkJCX0KKwkJCSIiCisJ
CWVuZAorCQljYXNlIHByZWNpc2lvbl9zdG9yYWdlCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJ
CQl2ZXJzaW9uIDMwMCBlcworCQkJdmFsdWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJCWZsb2F0IGZvbzAgKGxvd3AgY29uc3QgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJl
dHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgZm9vMSAobWVkaXVtcCBmbG9hdCB4KQor
CQkJCXsKKwkJCQkJeCA9IDEuMDsKKwkJCQl9CisKKwkJCQlmbG9hdCBmb28yIChoaWdocCBmbG9h
dCB4KQorCQkJCXsKKwkJCQkJcmV0dXJuIHggKyAxLjA7CisJCQkJfQorCisJCQkJdm9pZCBtYWlu
KCkKKwkJCQl7CisJCQkJCSR7U0VUVVB9CisJCQkJCWZsb2F0IHJlc3VsdDsKKwkJCQkJZm9vMShy
ZXN1bHQpOworCQkJCQlmbG9hdCB4MCA9IGZvbzAoMS4wKTsKKwkJCQkJZm9vMihyZXN1bHQpOwor
CQkJCQkke09VVFBVVH0KKwkJCQl9CisJCQkiIgorCQllbmQKKwkJY2FzZSBwcmVjaXNpb25fcGFy
YW1ldGVyCisJCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCQl2ZXJzaW9uIDMwMCBlcworCQkJdmFs
dWVzIHt9CisKKwkJCWJvdGggIiIKKwkJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJCWZsb2F0IGZvbzAgKGxv
d3AgaW4gZmxvYXQgeCkKKwkJCQl7CisJCQkJCXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJ
CXZvaWQgZm9vMSAobWVkaXVtcCBvdXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJCXggPSAxLjA7CisJ
CQkJfQorCisJCQkJZmxvYXQgZm9vMiAoaGlnaHAgaW5vdXQgZmxvYXQgeCkKKwkJCQl7CisJCQkJ
CXJldHVybiB4ICsgMS4wOworCQkJCX0KKworCQkJCXZvaWQgbWFpbigpCisJCQkJeworCQkJCQkk
e1NFVFVQfQorCQkJCQlmbG9hdCByZXN1bHQ7CisJCQkJCWZvbzEocmVzdWx0KTsKKwkJCQkJZmxv
YXQgeDAgPSBmb28wKDEuMCk7CisJCQkJCWZvbzIocmVzdWx0KTsKKwkJCQkJJHtPVVRQVVR9CisJ
CQkJfQorCQkJIiIKKwkJZW5kCisKKwllbmQgIyBpbnZhbGlkCisKK2VuZCAjIHBhcmFtZXRlcnMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3Njb3BpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3Njb3Bp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI1YjMyYjY4NTc3MTU1YTc1ZmIzMTVmZWRiMTNiYzhkYWE4
ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvc2NvcGluZy5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVy
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnknKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordGVzdE5hbWUgPSAnc2NvcGluZyc7Citk
ZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RV
dGlscy5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1
YnN0cmluZygxKS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZh
cnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0
KCc9Jyk7CisgICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmls
dGVyJykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOwor
ICAgIH0KK30KKworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUs
IGdldEZpbHRlcigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMy9zaGFkZXJzL3Njb3BpbmcudGVzdCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3Njb3BpbmcudGVzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZjE5NTI1MGYzNmM3ZmE5ODE2NWUyNDFjNTNiZmM5MGU0NTNmYzljCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvc2NvcGluZy50ZXN0CkBAIC0wLDAgKzEsOTAxIEBACitn
cm91cCB2YWxpZCAiVmFsaWQgc2NvcGluZyBhbmQgbmFtZSByZWRlY2xhcmF0aW9uIGNhc2VzIgor
CisJY2FzZSBsb2NhbF92YXJpYWJsZV9oaWRlc19nbG9iYWxfdmFyaWFibGUKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOwor
CQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJaW50IGEgPSAtMTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCWludCBhID0gaW4wOworCisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGJsb2NrX3ZhcmlhYmxlX2hpZGVzX2xvY2FsX3Zh
cmlhYmxlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4w
ID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJaW50IGEgPSBpbjA7CisJCQkJeworCQkJCQlpbnQgYSA9IC0xOworCQkJCX0K
KwkJCQlvdXQwID0gYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
YmxvY2tfdmFyaWFibGVfaGlkZXNfZ2xvYmFsX3ZhcmlhYmxlCisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1
dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCWludCBhID0gLTE7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQl7CisJCQkJCWludCBhID0gaW4wOworCisJCQkJCW91dDAgPSBhOworCQkJCX0KKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZm9yX2luaXRfc3RhdGVtZW50X3Zh
cmlhYmxlX2hpZGVzX2xvY2FsX3ZhcmlhYmxlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0
MCA9IFsgMSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50IGEgPSBpbjA7CisJCQkJZm9yIChp
bnQgYSA9IDA7IGEgPCAxMDsgYSsrKQorCQkJCXsKKwkJCQl9CisJCQkJb3V0MCA9IGE7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHdoaWxlX2NvbmRpdGlvbl92YXJp
YWJsZV9oaWRlc19sb2NhbF92YXJpYWJsZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIgfCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAg
PSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBhID0gaW4wOworCQkJCWludCBpID0g
MDsKKwkJCQl3aGlsZSAoYm9vbCBhID0gKGkgPCAxKSkKKwkJCQl7CisJCQkJCWkrKzsKKwkJCQl9
CisJCQkJb3V0MCA9IGE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IGZvcl9pbml0X3N0YXRlbWVudF92YXJpYWJsZV9oaWRlc19nbG9iYWxfdmFyaWFibGUKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwg
MyBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJaW50IGEgPSA1OworCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJZm9yIChpbnQgYSA9IDA7IGEgPCAxMDsgYSsrKQorCQkJCXsKKwkJ
CQl9CisJCQkJb3V0MCA9IGluMCArIGEgLSA1OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSB3aGlsZV9jb25kaXRpb25fdmFyaWFibGVfaGlkZXNfZ2xvYmFsX3Zhcmlh
YmxlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0g
WyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBhID0gNTsKKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCWludCBpID0gMDsKKwkJCQl3aGlsZSAoYm9vbCBh
ID0gKGkgPCAxKSkKKwkJCQl7CisJCQkJCWkrKzsKKwkJCQl9CisJCQkJb3V0MCA9IGluMCArIGEg
LSA1OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2YXJpYWJsZV9p
bl9pZl9oaWRlc19nbG9iYWxfdmFyaWFibGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQw
ID0gWyAxIHwgMiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJaW50
IGEgPSAxOworCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaWYgKHRy
dWUpCisJCQkJCWludCBhID0gNDI7CisJCQkJb3V0MCA9IGEqaW4wOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB2YXJpYWJsZV9mcm9tX291dGVyX3Njb3BlX3Zpc2li
bGVfaW5faW5pdGlhbGl6ZXIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGludCBpbjAgPSBbIDEgfCAyIHwgMyBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAxIHwg
MiB8IDMgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgYSA9IGluMDsKKwkJCQl7CisJCQkJCWludCBhID0g
YSs1LCBiID0gYS01OworCQkJCQlvdXQwID0gYjsKKwkJCQkJYSA9IDQyOworCQkJCX0KKwkJCQlv
dXQwID0gb3V0MCArIGEgLSBpbjA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIGxvY2FsX2ludF92YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZQorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIgfCAzIF07CisJ
CQlvdXRwdXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQlzdHJ1Y3QgUyB7IGludCB2YWw7IH07CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlpbnQgUyA9IFMoaW4wKS52YWw7CisJCQkJb3V0MCA9IFM7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIGxvY2FsX3N0cnVjdF92
YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIgfCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAg
PSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlzdHJ1
Y3QgUyB7IGludCB2YWw7IH07CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlTIFMgPSBTKGluMCk7CisJCQkJb3V0MCA9IFMudmFsOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBsb2NhbF92YXJpYWJsZV9oaWRlc19mdW5jdGlvbgorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaW50IGluMCA9IFsgMSB8IDIg
fCAzIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDEgfCAyIHwgMyBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQlpbnQgZm9vIChpbnQgeCkgeyByZXR1cm4geDsgfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJaW50IGZvbyA9IGluMDsKKwkJ
CQlvdXQwID0gZm9vOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBm
dW5jdGlvbl9wYXJhbWV0ZXJfaGlkZXNfZ2xvYmFsX3ZhcmlhYmxlCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91
dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWludCBhID0gLTE7CisKKwkJCWludCBmdW5jIChpbnQgYSkgeyByZXR1cm4gYTsg
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMo
aW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZnVuY3Rpb25f
cGFyYW1ldGVyX2hpZGVzX3N0cnVjdF90eXBlCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0
MCA9IFsgMSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXN0
cnVjdCBTIHsgaW50IHg7IH07CisKKwkJCWludCBmdW5jIChpbnQgUykgeyByZXR1cm4gUzsgfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4w
KTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgZnVuY3Rpb25fcGFy
YW1ldGVyX2hpZGVzX2Z1bmN0aW9uCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsg
MSB8IDIgfCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5j
IChpbnQgZnVuYykgeyByZXR1cm4gZnVuYzsgfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGZ1bmMoaW4wKTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbG9jYWxfdmFyaWFibGVfaW5faW5uZXJfc2NvcGVfaGlkZXNfZnVu
Y3Rpb25fcGFyYW1ldGVyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpbnQgaW4wID0gWyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIg
fCAzIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQlpbnQgZnVuYyAoaW50IGlu
cCwgaW50IHgpIHsgeyBpbnQgeCA9IDU7IHJldHVybiBpbnAgKyB4IC0gNTsgfSB9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gZnVuYyhpbjAsIDQyKTsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWNsYXJlX2Z1bmN0
aW9uCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpbnQgaW4wID0g
WyAxIHwgMiB8IDMgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMSB8IDIgfCAzIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWludCBmdW5jIChpbnQgeCk7CisJCQlpbnQg
ZnVuYyAoaW50KTsKKwkJCWludCBmdW5jIChpbnQgaW5wKSB7IHJldHVybiBpbnA7IH0KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBmdW5jKGluMCk7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKK2VuZAorCitncm91cCBpbnZhbGlkICJJ
bnZhbGlkIHNjb3BpbmcgYmVoYXZpb3IiCisKKwljYXNlIHJlZGVjbGFyZV9nbG9iYWxfdmFyaWFi
bGUKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCWludCBhOworCQkJZmxvYXQgYTsKKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQlhID0gMS4wOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGEpOwor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSByZWRlY2xhcmVfbG9jYWxfdmFyaWFibGUKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJaW50IGE7CisJCQkJZmxvYXQgYTsKKwkJCQlh
ID0gMS4wOworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGEpOworCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSByZWRlY2xhcmVfZm9yX2luaXRfc3RhdGVtZW50X3ZhcmlhYmxlCisJ
CXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7
IGkrKykKKwkJCQl7CisJCQkJCWludCBpID0gMTE7CisJCQkJfQorCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KDAuMCk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVjbGFy
ZV9mb3JfY29uZGl0aW9uX3ZhcmlhYmxlCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVjdCBjb21w
aWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCWZvciAoaW50IGkgPSAwOyBpbnQgYSA9IChpIDwgMTApOyBpKyspCisJCQkJeworCQkJCQlp
bnQgYSA9IDA7CisJCQkJfQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVjbGFyZV9mb3JfaW5pdF9zdGF0ZW1lbnRf
dmFyaWFibGVfaW5fZm9yX2NvbmRpdGlvbgorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29t
cGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQlmbG9hdCBhOworCQkJCWZvciAoaW50IGkgPSAwOyBpbnQgaSA9IChpIDwgMTApOyBpKysp
CisJCQkJeworCQkJCQlhID0gc2luKGkpOworCQkJCX0KKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09M
T1J9ID0gdmVjNChhKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWNsYXJlX3doaWxl
X2NvbmRpdGlvbl92YXJpYWJsZQorCQl2ZXJzaW9uIDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9m
YWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlp
bnQgYSA9IDA7CisJCQkJd2hpbGUgKGludCBpID0gKGEgPCA1KSkKKwkJCQl7CisJCQkJCWludCBp
ID0gMTE7CisJCQkJCWEgKz0gaTsKKwkJCQl9CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMC4wKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWZpbmVfZnVuY3Rpb24K
KwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCWZsb2F0IGZ1bmMoZmxvYXQgeCk7CisKKwkJCWZsb2F0IGZ1bmMoZmxvYXQg
eCkgeyByZXR1cm4geCArIDEuMDsgfQorCQkJZmxvYXQgZnVuYyhmbG9hdCB4KSB7IHJldHVybiB4
ICsgMi4wOyB9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NP
TE9SfSA9IHZlYzQoZnVuYygxLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgcmVkZWNs
YXJlX2J1aWx0aW4KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCWZsb2F0IHNpbihmbG9hdCB4KTsKKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChzaW4oMS4wKSk7
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHJlZGVmaW5lX2J1aWx0aW4KKwkJdmVyc2lvbiAz
MDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CWZsb2F0IHNpbihmbG9hdCB4KSB7IHJldHVybiB4ICsgMS4wOyB9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoc2luKDEuMCkpOworCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBjb25mbGljdF9mdW5jdGlvbl9zdHJ1Y3QKKwkJdmVyc2lv
biAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgZihpbnQgeCk7CisJCQlzdHJ1Y3QgZiB7IGludCB4OyB9OworCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEpOworCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBjb25mbGljdF9mdW5jdGlvbl92YXJpYWJsZQorCQl2ZXJzaW9u
IDMwMCBlcworCQlleHBlY3QgY29tcGlsZV9mYWlsCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBmKGludCB4KTsKKwkJCWZsb2F0IGY7CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJZiA9IDEuMDsKKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmKTsKKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgdXNlX2dsb2JhbF92YXJpYWJsZV9iZWZvcmVfZGVjbGFyYXRp
b24KKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgZnVuYygpCisJCQl7CisJCQkJYSA9IDIuMDsKKwkJCX0KKwor
CQkJZmxvYXQgYTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQlmdW5jKCk7CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoYSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVzZV9sb2NhbF92YXJpYWJsZV9iZWZvcmVfZGVjbGFyYXRpb24KKwkJdmVyc2lvbiAzMDAgZXMK
KwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJZmxvYXQgYSA9IDEuMDsKKwkJCQlhID0gYjsKKwkJCQlmbG9hdCBi
ID0gMi4wOworCisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoYSk7CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIHVzZV9zdHJ1Y3RfdHlwZV9iZWZvcmVfZGVjbGFyYXRpb24KKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCWZsb2F0IGZ1bmMgKGZsb2F0IHgpIHsgcmV0dXJuIFMoeCkudmFsOyB9CisJCQlz
dHJ1Y3QgUyB7IGZsb2F0IHZhbDsgfTsKKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1BP
U0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChmdW5jKDEuMCkpOworCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSB1c2VfZnVuY3Rpb25fYmVmb3JlX2RlY2xhcmF0aW9uCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9h
dCBmdW5jIChmbG9hdCB4KSB7IHJldHVybiBiYXIoeCk7IH0KKwkJCWZsb2F0IGJhciAoZmxvYXQg
eCkgeyByZXR1cm4geDsgfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMS4wKSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVzZV92YXJpYWJsZV9mcm9tX2Jsb2NrX2luX291dGVyX3Njb3BlCisJCXZlcnNpb24gMzAwIGVz
CisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCXsKKwkJCQkJZmxvYXQgYSA9IDEuMDsKKwkJCQl9CisJCQkJJHtQ
T1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoYSk7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IHVzZV92YXJpYWJsZV9mcm9tX2lmX2luX291dGVyX3Njb3BlCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCWlmICh0cnVlKQorCQkJCQlmbG9hdCBhID0gMS4wOworCQkJCSR7UE9T
SVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KGEpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSB1
c2VfdmFyaWFibGVfZnJvbV9lbHNlX2luX291dGVyX3Njb3BlCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCWlmIChmYWxzZSkKKwkJCQkJZmxvYXQgYSA9IDEuMDsKKwkJCQllbHNl
CisJCQkJCWZsb2F0IGIgPSAyLjA7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
Yik7CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIHVzZV92YXJpYWJsZV9mcm9tX2lmX2luX2Vs
c2UKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJZmxvYXQgYSA9IDEuMDsKKwkJ
CQlpZiAodHJ1ZSkKKwkJCQl7CisJCQkJCWZsb2F0IGIgPSAyLjA7CisJCQkJfQorCQkJCWVsc2UK
KwkJCQl7CisJCQkJCWEgPSBiOworCQkJCX0KKwkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0g
dmVjNChhKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlX3ZhcmlhYmxlX2Zyb21fZm9y
X2luaXRfc3RhdGVtZW50X2luX291dGVyX3Njb3BlCisJCXZlcnNpb24gMzAwIGVzCisJCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCWZsb2F0IHggPSAwLjA7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsr
KQorCQkJCXsKKwkJCQkJeCArPSBzaW4oaSk7CisJCQkJfQorCQkJCSR7UE9TSVRJT05fRlJBR19D
T0xPUn0gPSB2ZWM0KGZsb2F0KGkpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlX3Zh
cmlhYmxlX2Zyb21fd2hpbGVfY29uZGl0aW9uX2luX291dGVyX3Njb3BlCisJCXZlcnNpb24gMzAw
IGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCWludCBhID0gMTsKKwkJCQl3aGlsZSAoYm9vbCBiID0gKGEg
PT0gMSkpCisJCQkJeworCQkJCQlhKys7CisJCQkJfQorCQkJCSR7UE9TSVRJT05fRlJBR19DT0xP
Un0gPSB2ZWM0KGZsb2F0KGIpKTsKKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgdXNlX3BhcmFt
ZXRlcl9uYW1lc19mcm9tX2Z1bmN0aW9uX2RlY2xhcmF0aW9uCisJCXZlcnNpb24gMzAwIGVzCisJ
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQlmbG9hdCBm
dW5jKGZsb2F0IGEsIGZsb2F0IGIpOworCisJCQlmbG9hdCBmdW5jKGZsb2F0IHgsIGZsb2F0IHkp
IHsgcmV0dXJuIGErYjsgfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7UE9TSVRJT05f
RlJBR19DT0xPUn0gPSB2ZWM0KGZ1bmMoMS4wLCAyLjApKTsKKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgdmFyaWFibGVfbm90X3Zpc2libGVfaW5fb3duX2luaXRpYWxpemVyCisJCXZlcnNpb24g
MzAwIGVzCisJCWV4cGVjdCBjb21waWxlX2ZhaWwKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCWZsb2F0IHggPSB4OworCQkJCSR7UE9TSVRJT05fRlJB
R19DT0xPUn0gPSB2ZWM0KHgpOworCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBsb2NhbF92YXJp
YWJsZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0ZXIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJZXhwZWN0
IGNvbXBpbGVfZmFpbAorCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkJJHtERUNMQVJBVElPTlN9CisJCQlmbG9hdCBmdW5jIChmbG9h
dCBpbnAsIGZsb2F0IHgpIHsgaW50IHggPSA1LjA7IHJldHVybiBpbnAgKyB4IC0gNS4wOyB9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQo
ZnVuYygxLjAsIDIuMCkpOworCQkJfQorCQkiIgorCWVuZAorCitlbmQgIyBpbnZhbGlkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2RhdGEvZ2xlczMvc2hhZGVycy9zd2l0Y2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3N3aXRjaC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljOWE1YTBlMWJlYzA0N2Y0NmNlMWQ2YmQ2MjdmMzAzNTY0ODQxYTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVycy9zd2l0Y2guaHRtbApAQCAtMCwwICsxLDM2IEBA
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Jyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ3N3aXRjaCc7CitkZXNjcmlwdGlv
bigiU2hhZGVyIHRlc3Q6ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGlscy5zZXRE
ZWZhdWx0M0RDb250ZXh0VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciBxdWVyeVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygx
KS5zcGxpdCgnJicpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7Cisg
ICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAg
ICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30K
KworbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRl
cigpKQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFk
ZXJzL3N3aXRjaC50ZXN0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvc3dpdGNoLnRlc3QKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3
ZWI3ZWJhYjRiMzc3ODI4NmQ2OGM0Y2ZiMzM2ODdhZGM2MDYzOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9n
bGVzMy9zaGFkZXJzL3N3aXRjaC50ZXN0CkBAIC0wLDAgKzEsNjMzIEBACisKK2Nhc2UgZW1wdHlf
Y29uZGl0aW9uCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJYm90aCAi
IgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVD
TEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlzd2l0Y2ggKCkKKwkJCXsKKwkJ
CQljYXNlIDE6CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9
CisKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGNvbmRpdGlvbl9mbG9hdAor
CXZlcnNpb24gMzAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCWJvdGggIiIKKwkJI3ZlcnNp
b24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30K
KworCQl2b2lkIG1haW4gKCkKKwkJeworCQkJZmxvYXQgYyA9IDEuMDsKKwkJCXN3aXRjaCAoYykK
KwkJCXsKKwkJCQljYXNlIDE6CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEu
MCk7CisJCQl9CisKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGNvbmRpdGlv
bl9ib29sCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJYm90aCAiIgor
CQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFS
QVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlib29sIGMgPSB0cnVlOworCQkJc3dp
dGNoIChjKQorCQkJeworCQkJCWNhc2UgMToKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9
IHZlYzQoMS4wKTsKKwkJCX0KKworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ug
Y29uZGl0aW9uX2l2ZWMyCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3QgY29tcGlsZV9mYWlsCisJ
Ym90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisJ
CSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlpdmVjMiBjID0gaXZl
YzIoMSwgMSk7CisJCQlzd2l0Y2ggKGMpCisJCQl7CisJCQkJY2FzZSAxOgorCQkJCQkke1BPU0lU
SU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQor
CSIiCitlbmQKKworY2FzZSBjb25kaXRpb25fc3RydWN0CisJdmVyc2lvbiAzMDAgZXMKKwlleHBl
Y3QgY29tcGlsZV9mYWlsCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCisJCXN0cnVjdCBTIHsgaW50IG07
IH07CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCVMgYyA9IFMoMSk7CisJCQlzd2l0Y2ggKGMp
CisJCQl7CisJCQkJY2FzZSAxOgorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgx
LjApOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBkdXBsaWNh
dGVfbGFiZWwKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIi
CisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNM
QVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWludCBjID0gMTsKKwkJCXN3aXRj
aCAoYykKKwkJCXsKKwkJCQljYXNlIDE6CisJCQkJY2FzZSAxOgorCQkJCQlicmVhazsKKwkJCX0K
KworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgZmxvYXRfbGFiZWwKKwl2ZXJz
aW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMw
MCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJ
dm9pZCBtYWluICgpCisJCXsKKwkJCWludCBjID0gMTsKKwkJCXN3aXRjaCAoYykKKwkJCXsKKwkJ
CQljYXNlIDEuMDoKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIG5vbl9jb25zdF9pbnRfbGFiZWwKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVj
dCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsK
KwkJCWludCBjID0gMTsKKwkJCWludCBsID0gMjsKKwkJCXN3aXRjaCAoYykKKwkJCXsKKwkJCQlj
YXNlIGw6CisJCQkJCWJyZWFrOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQK
KworY2FzZSBzdGF0ZW1lbnRfYmVmb3JlX2xhYmVsCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJ
CQlzd2l0Y2ggKDEpCisJCQl7CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEu
MCk7CisJCQkJY2FzZSAxOgorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjAp
OworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBzdGF0ZW1lbnRf
YmVmb3JlX2RlZmF1bHRfbGFiZWwKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2Zh
aWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCXN3aXRjaCAo
MSkKKwkJCXsKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCQlk
ZWZhdWx0OgorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjApOworCQkJfQor
CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBub19zdGF0ZW1lbnRfYWZ0ZXJf
bGFiZWwKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJ
CSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJB
VElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCXN3aXRjaCAoMSkKKwkJCXsKKwkJCQlj
YXNlIDA6CisJCQkJCWJyZWFrOworCQkJCWNhc2UgMToKKwkJCX0KKworCQkJJHtPVVRQVVR9CisJ
CX0KKwkiIgorZW5kCisKK2Nhc2Ugbm9fc3RhdGVtZW50X2FmdGVyX2RlZmF1bHRfbGFiZWwKKwl2
ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisK
KwkJdm9pZCBtYWluICgpCisJCXsKKwkJCXN3aXRjaCAoMSkKKwkJCXsKKwkJCQljYXNlIDA6CisJ
CQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQl9CisKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIK
K2VuZAorCitjYXNlIGNhc2VfaW5faWYKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxl
X2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWZsb2F0
IGYgPSAxLjA7CisJCQlzd2l0Y2ggKDEpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlmID0gMC4w
OworCQkJCQlpZiAoZiA+IDAuMCkKKwkJCQkJeworCQkJCQkJY2FzZSAxOgorCQkJCQkJCWYgKj0g
Mi4wOworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCWNhc2UgMjoKKwkJCQkJYnJlYWs7CisJCQl9
CisKKwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGRlZmF1bHRfaW5faWYKKwl2
ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisK
KwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWZsb2F0IGYgPSAxLjA7CisJCQlzd2l0Y2ggKDEpCisJ
CQl7CisJCQkJY2FzZSAwOgorCQkJCQlmID0gMC4wOworCQkJCQlpZiAoZiA+IDAuMCkKKwkJCQkJ
eworCQkJCQkJZGVmYXVsdDoKKwkJCQkJCQlmICo9IDIuMDsKKwkJCQkJfQorCQkJCQlicmVhazsK
KwkJCQljYXNlIDI6CisJCQkJCWJyZWFrOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIi
CitlbmQKKworY2FzZSBjYXNlX2luX2Zvcl9sb29wCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3Qg
Y29tcGlsZV9mYWlsCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJ
CQlmbG9hdCBmID0gMS4wOworCQkJc3dpdGNoICgxKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJ
ZiA9IDAuMDsKKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisJCQkJCXsKKwkJCQkJ
CWNhc2UgMToKKwkJCQkJCQlmICo9IDIuMDsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQljYXNl
IDI6CisJCQkJCWJyZWFrOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKwor
Y2FzZSBkZWZhdWx0X2luX2Zvcl9sb29wCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3QgY29tcGls
ZV9mYWlsCisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlmbG9h
dCBmID0gMS4wOworCQkJc3dpdGNoICgxKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJZiA9IDAu
MDsKKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisJCQkJCXsKKwkJCQkJCWRlZmF1
bHQ6CisJCQkJCQkJZiAqPSAyLjA7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAyOgor
CQkJCQlicmVhazsKKwkJCX0KKworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2Ug
Y2FzZV9pbl93aGlsZV9sb29wCisJdmVyc2lvbiAzMDAgZXMKKwlleHBlY3QgY29tcGlsZV9mYWls
CisJYm90aCAiIgorCQkjdmVyc2lvbiAzMDAgZXMKKwkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisJCSR7REVDTEFSQVRJT05TfQorCisJCXZvaWQgbWFpbiAoKQorCQl7CisJCQlmbG9hdCBmID0g
MS4wOworCQkJc3dpdGNoICgxKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJZiA9IDAuMDsKKwkJ
CQkJd2hpbGUgKGYgPiAwLjApCisJCQkJCXsKKwkJCQkJCWNhc2UgMToKKwkJCQkJCQlmICo9IDIu
MDsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQljYXNlIDI6CisJCQkJCWJyZWFrOworCQkJfQor
CisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBkZWZhdWx0X2luX3doaWxlX2xv
b3AKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2
ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElP
TlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCWZsb2F0IGYgPSAxLjA7CisJCQlzd2l0Y2gg
KDEpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlmID0gMC4wOworCQkJCQl3aGlsZSAoZiA+IDAu
MCkKKwkJCQkJeworCQkJCQkJZGVmYXVsdDoKKwkJCQkJCQlmICo9IDIuMDsKKwkJCQkJfQorCQkJ
CQlicmVhazsKKwkJCQljYXNlIDI6CisJCQkJCWJyZWFrOworCQkJfQorCisJCQkke09VVFBVVH0K
KwkJfQorCSIiCitlbmQKKworY2FzZSBjYXNlX2luX2RvX3doaWxlX2xvb3AKKwl2ZXJzaW9uIDMw
MCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcwor
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBt
YWluICgpCisJCXsKKwkJCWZsb2F0IGYgPSAxLjA7CisJCQlzd2l0Y2ggKDEpCisJCQl7CisJCQkJ
Y2FzZSAwOgorCQkJCQlmID0gMC4wOworCQkJCQlkbworCQkJCQl7CisJCQkJCQljYXNlIDE6CisJ
CQkJCQkJZiAqPSAyLjA7CisJCQkJCX0gd2hpbGUgKGYgPiAwLjApOworCQkJCQlicmVhazsKKwkJ
CQljYXNlIDI6CisJCQkJCWJyZWFrOworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitl
bmQKKworY2FzZSBkZWZhdWx0X2luX2RvX3doaWxlX2xvb3AKKwl2ZXJzaW9uIDMwMCBlcworCWV4
cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJ
CXsKKwkJCWZsb2F0IGYgPSAxLjA7CisJCQlzd2l0Y2ggKDEpCisJCQl7CisJCQkJY2FzZSAwOgor
CQkJCQlmID0gMC4wOworCQkJCQlkbworCQkJCQl7CisJCQkJCQlkZWZhdWx0OgorCQkJCQkJCWYg
Kj0gMi4wOworCQkJCQl9IHdoaWxlIChmID4gMC4wKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAy
OgorCQkJCQlicmVhazsKKwkJCX0KKworCQkJJHtPVVRQVVR9CisJCX0KKwkiIgorZW5kCisKK2Nh
c2UgbWlzc2luZ19jb2xvbgorCXZlcnNpb24gMzAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAor
CWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lkIG1haW4gKCkKKwkJeworCQkJc3dpdGNoICgxKQor
CQkJeworCQkJCWNhc2UgMQorCQkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjAp
OworCQkJfQorCisJCQkke09VVFBVVH0KKwkJfQorCSIiCitlbmQKKworY2FzZSBtaXNzaW5nX29w
ZW5pbmdfYnJhY2UKKwl2ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3Ro
ICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtE
RUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgpCisJCXsKKwkJCXN3aXRjaCAoMSkKKwkJCQlj
YXNlIDE6CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIG1pc3NpbmdfY2xvc2luZ19icmFj
ZQorCXZlcnNpb24gMzAwIGVzCisJZXhwZWN0IGNvbXBpbGVfZmFpbAorCWJvdGggIiIKKwkJI3Zl
cnNpb24gMzAwIGVzCisJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9O
U30KKworCQl2b2lkIG1haW4gKCkKKwkJeworCQkJc3dpdGNoICgxKQorCQkJeworCQkJCWNhc2Ug
MToKKwkJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKworCQkJJHtPVVRQ
VVR9CisJCX0KKwkiIgorZW5kCisKK2Nhc2UgZG91YmxlX2Nhc2UKKwl2ZXJzaW9uIDMwMCBlcwor
CWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9uIDMwMCBlcworCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisKKwkJdm9pZCBtYWluICgp
CisJCXsKKwkJCXN3aXRjaCAoMSkKKwkJCXsKKwkJCQljYXNlIGNhc2UgMToKKwkJCQkJJHtQT1NJ
VElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKKwkJCX0KKworCQkJJHtPVVRQVVR9CisJCX0K
KwkiIgorZW5kCisKK2Nhc2UgZG91YmxlX2RlZmF1bHRfMQorCXZlcnNpb24gMzAwIGVzCisJZXhw
ZWN0IGNvbXBpbGVfZmFpbAorCWJvdGggIiIKKwkJI3ZlcnNpb24gMzAwIGVzCisJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCQkke0RFQ0xBUkFUSU9OU30KKworCQl2b2lkIG1haW4gKCkKKwkJ
eworCQkJc3dpdGNoICgxKQorCQkJeworCQkJCWRlZmF1bHQ6CisJCQkJCWJyZWFrOworCQkJCWRl
ZmF1bHQ6CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZAorCitjYXNlIGRvdWJsZV9kZWZhdWx0XzIKKwl2
ZXJzaW9uIDMwMCBlcworCWV4cGVjdCBjb21waWxlX2ZhaWwKKwlib3RoICIiCisJCSN2ZXJzaW9u
IDMwMCBlcworCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwkJJHtERUNMQVJBVElPTlN9CisK
KwkJdm9pZCBtYWluICgpCisJCXsKKwkJCXN3aXRjaCAoMSkKKwkJCXsKKwkJCQlkZWZhdWx0IGRl
ZmF1bHQ6CisJCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CisJCQl9CisK
KwkJCSR7T1VUUFVUfQorCQl9CisJIiIKK2VuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2dsZXMzL3NoYWRlcnMvc3dp
enpsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3N3aXp6bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY2MzNi
ZTYzNmUwZTVlZTY2ZDNhZjQ5MDc1M2M5NTU2NGY4NTZjNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVz
My9zaGFkZXJzL3N3aXp6bGVzLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnbW9kdWxl
cy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit0ZXN0TmFtZSA9ICdzd2l6emxlcyc7CitkZXNjcmlwdGlvbigiU2hhZGVyIHRlc3Q6
ICIgKyB0ZXN0TmFtZSArICIuIik7CitXZWJHTFRlc3RVdGlscy5zZXREZWZhdWx0M0RDb250ZXh0
VmVyc2lvbigyKTsKKwordmFyIGdldEZpbHRlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBxdWVy
eVZhcnMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVZhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gcXVlcnlWYXJzW2ldLnNwbGl0KCc9Jyk7CisgICAgICAgIGlmIChkZWNv
ZGVVUklDb21wb25lbnQodmFsdWVbMF0pID09PSAnZmlsdGVyJykKKyAgICAgICAgICAgIHJldHVy
biBkZWNvZGVVUklDb21wb25lbnQodmFsdWVbMV0pOworICAgIH0KK30KKworbW9kdWxlcy5zaGFy
ZWQuZ2xzU2hhZGVyTGlicmFyeS5ydW4odGVzdE5hbWUsIGdldEZpbHRlcigpKQorCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3N3aXp6bGVzLnRl
c3QgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Rh
dGEvZ2xlczMvc2hhZGVycy9zd2l6emxlcy50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NzdlYmIwNjRjNWNl
ZGNjY2IzNjRkOTY0NThkY2I3YmE2YTY3MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2RhdGEvZ2xlczMvc2hhZGVy
cy9zd2l6emxlcy50ZXN0CkBAIC0wLDAgKzEsNzQ1OSBAQAorIyBXQVJOSU5HOiBUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQuIERvIE5PVCBtb2RpZnkgaXQgbWFudWFsbHksIGJ1dCByYXRoZXIK
KyMgbW9kaWZ5IHRoZSBnZW5lcmF0aW5nIHNjcmlwdCBmaWxlLiBPdGhlcndpc2UgY2hhbmdlcyB3
aWxsIGJlIGxvc3QhCisKK2dyb3VwIHZlY3Rvcl9zd2l6emxlcyAiVmVjdG9yIFN3aXp6bGVzIgor
CisJY2FzZSBtZWRpdW1wX3ZlYzJfeAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwg
dmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgLTAu
NSB8IC0zMi4wIHwgLTAuNzUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54OworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzJfeHgKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMy
KDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigt
MzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0
IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuMCkgfCB2ZWMyKDEuMCwgMS4wKSB8IHZlYzIoLTAu
NSwgLTAuNSkgfCB2ZWMyKC0zMi4wLCAtMzIuMCkgfCB2ZWMyKC0wLjc1LCAtMC43NSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMyX3h5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwg
MS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC4w
LCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4w
LCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpbjAueHk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfdmVjMl95eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuNSwgMC4wKSB8IHZl
YzIoMS4yNSwgMS4wKSB8IHZlYzIoLTIuMjUsIC0wLjUpIHwgdmVjMig2NC4wLCAtMzIuMCkgfCB2
ZWMyKC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnl4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzJfeXh5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMy
IGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0y
LjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkg
XTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAwLjAsIDAuNSkgfCB2ZWMzKDEu
MjUsIDEuMCwgMS4yNSkgfCB2ZWMzKC0yLjI1LCAtMC41LCAtMi4yNSkgfCB2ZWMzKDY0LjAsIC0z
Mi4wLCA2NC4wKSB8IHZlYzMoLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjAzMjI1ODA2NDUx
NjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueXh5OworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzJfeHl4eAorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUp
IHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4w
KSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQw
ID0gWyB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4wLCAxLjAp
IHwgdmVjNCgtMC41LCAtMi4yNSwgLTAuNSwgLTAuNSkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtMzIu
MCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUsIC0wLjc1KSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnh5eHg7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjMl95eXl5CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2
ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwg
dmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBb
IHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSB8IHZlYzQoMS4yNSwgMS4yNSwgMS4yNSwgMS4yNSkg
fCB2ZWM0KC0yLjI1LCAtMi4yNSwgLTIuMjUsIC0yLjI1KSB8IHZlYzQoNjQuMCwgNjQuMCwgNjQu
MCwgNjQuMCkgfCB2ZWM0KC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAz
MjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpbjAueXl5eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF92ZWMyX3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwg
LTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYx
KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8
IC0wLjc1IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuczsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMyX3NzCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkg
fCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjAp
IHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAg
PSBbIHZlYzIoMC4wLCAwLjApIHwgdmVjMigxLjAsIDEuMCkgfCB2ZWMyKC0wLjUsIC0wLjUpIHwg
dmVjMigtMzIuMCwgLTMyLjApIHwgdmVjMigtMC43NSwgLTAuNzUpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpbjAuc3M7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfdmVjMl9zdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVj
MigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZl
YzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2
ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnN0OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzJfdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIg
aW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIu
MjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBd
OworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjUsIDAuMCkgfCB2ZWMyKDEuMjUsIDEu
MCkgfCB2ZWMyKC0yLjI1LCAtMC41KSB8IHZlYzIoNjQuMCwgLTMyLjApIHwgdmVjMigtMC4wMzIy
NTgwNjQ1MTYxLCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC50czsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMyX3RzdAor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZl
YzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMy
KC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRw
dXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuNSwgMC4wLCAwLjUpIHwgdmVjMygxLjI1LCAxLjAsIDEu
MjUpIHwgdmVjMygtMi4yNSwgLTAuNSwgLTIuMjUpIHwgdmVjMyg2NC4wLCAtMzIuMCwgNjQuMCkg
fCB2ZWMzKC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnRzdDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMyX3N0c3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4w
LCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgw
LjAsIDAuNSwgMC4wLCAwLjApIHwgdmVjNCgxLjAsIDEuMjUsIDEuMCwgMS4wKSB8IHZlYzQoLTAu
NSwgLTIuMjUsIC0wLjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTMyLjAsIC0zMi4wKSB8
IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjc1LCAtMC43NSkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGluMC5zdHNzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtZWRpdW1wX3ZlYzJfdHR0dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAsIDEu
MjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSkgfCB2ZWM0KDEuMjUsIDEuMjUsIDEuMjUsIDEuMjUpIHwgdmVjNCgtMi4y
NSwgLTIuMjUsIC0yLjI1LCAtMi4yNSkgfCB2ZWM0KDY0LjAsIDY0LjAsIDY0LjAsIDY0LjApIHwg
dmVjNCgtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYx
LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnR0dHQ7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjMl9y
CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsg
dmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZl
YzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91
dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAtMC41IHwgLTMyLjAgfCAtMC43NSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjMl9ycgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdmVjMiBpbjAgPSBbIHZlYzIoMC4wLCAwLjUpIHwgdmVjMigxLjAs
IDEuMjUpIHwgdmVjMigtMC41LCAtMi4yNSkgfCB2ZWMyKC0zMi4wLCA2NC4wKSB8IHZlYzIoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCQlvdXRwdXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAu
MCwgMC4wKSB8IHZlYzIoMS4wLCAxLjApIHwgdmVjMigtMC41LCAtMC41KSB8IHZlYzIoLTMyLjAs
IC0zMi4wKSB8IHZlYzIoLTAuNzUsIC0wLjc1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnJyOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzJfcmcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIg
aW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIu
MjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBd
OworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4y
NSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yZzsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMyX2dyCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVj
MigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIo
LTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1
dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC41LCAwLjApIHwgdmVjMigxLjI1LCAxLjApIHwgdmVjMigt
Mi4yNSwgLTAuNSkgfCB2ZWMyKDY0LjAsIC0zMi4wKSB8IHZlYzIoLTAuMDMyMjU4MDY0NTE2MSwg
LTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuZ3I7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjMl9ncmcKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41
KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIoLTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQu
MCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQkJb3V0cHV0IHZlYzMgb3V0
MCA9IFsgdmVjMygwLjUsIDAuMCwgMC41KSB8IHZlYzMoMS4yNSwgMS4wLCAxLjI1KSB8IHZlYzMo
LTIuMjUsIC0wLjUsIC0yLjI1KSB8IHZlYzMoNjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjMygtMC4w
MzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGluMC5ncmc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfdmVjMl9yZ3JyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCB2ZWMyIGluMCA9IFsgdmVjMigwLjAsIDAuNSkgfCB2ZWMyKDEuMCwgMS4yNSkgfCB2
ZWMyKC0wLjUsIC0yLjI1KSB8IHZlYzIoLTMyLjAsIDY0LjApIHwgdmVjMigtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
MCwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAt
MC41LCAtMC41KSB8IHZlYzQoLTMyLjAsIDY0LjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWM0KC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAucmdycjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF92ZWMyX2dnZ2cKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzIgaW4wID0gWyB2ZWMyKDAuMCwgMC41KSB8IHZlYzIoMS4wLCAxLjI1KSB8IHZlYzIo
LTAuNSwgLTIuMjUpIHwgdmVjMigtMzIuMCwgNjQuMCkgfCB2ZWMyKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxKSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjUsIDAuNSwgMC41LCAw
LjUpIHwgdmVjNCgxLjI1LCAxLjI1LCAxLjI1LCAxLjI1KSB8IHZlYzQoLTIuMjUsIC0yLjI1LCAt
Mi4yNSwgLTIuMjUpIHwgdmVjNCg2NC4wLCA2NC4wLCA2NC4wLCA2NC4wKSB8IHZlYzQoLTAuMDMy
MjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4
MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5nZ2dnOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfeAorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAw
LjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00
Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgw
NjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4w
IHwgMS4wIHwgLTAuNSB8IC0zMi4wIHwgLTAuNzUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC54OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzNfegorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBp
bjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZl
YzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMz
KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQg
ZmxvYXQgb3V0MCA9IFsgMC43NSB8IDEuMTI1IHwgLTQuODc1IHwgLTUxLjAgfCAwLjA1MjYzMTU3
ODk0NzQgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC56OworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfeHoKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAw
Ljc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUp
IHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAs
IDAuNzUpIHwgdmVjMigxLjAsIDEuMTI1KSB8IHZlYzIoLTAuNSwgLTQuODc1KSB8IHZlYzIoLTMy
LjAsIC01MS4wKSB8IHZlYzIoLTAuNzUsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC54ejsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWVkaXVtcF92ZWMzX3p6CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4y
NSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAs
IC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkg
XTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC43NSwgMC43NSkgfCB2ZWMyKDEuMTI1
LCAxLjEyNSkgfCB2ZWMyKC00Ljg3NSwgLTQuODc1KSB8IHZlYzIoLTUxLjAsIC01MS4wKSB8IHZl
YzIoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAueno7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfdmVjM194eXoKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUx
LjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOwor
CQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwg
MS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0
LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3
NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54eXo7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM196eXgKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAw
Ljc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUp
IHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1
LCAwLjUsIDAuMCkgfCB2ZWMzKDEuMTI1LCAxLjI1LCAxLjApIHwgdmVjMygtNC44NzUsIC0yLjI1
LCAtMC41KSB8IHZlYzMoLTUxLjAsIDY0LjAsIC0zMi4wKSB8IHZlYzMoMC4wNTI2MzE1Nzg5NDc0
LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC56eXg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
dmVjM194eHgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMg
aW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2
ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVj
MygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0
IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAxLjAsIDEuMCkg
fCB2ZWMzKC0wLjUsIC0wLjUsIC0wLjUpIHwgdmVjMygtMzIuMCwgLTMyLjAsIC0zMi4wKSB8IHZl
YzMoLTAuNzUsIC0wLjc1LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54
eHg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVj
M196enoKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4w
ID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMz
KC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZl
YzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjc1LCAwLjc1KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAx
LjEyNSkgfCB2ZWMzKC00Ljg3NSwgLTQuODc1LCAtNC44NzUpIHwgdmVjMygtNTEuMCwgLTUxLjAs
IC01MS4wKSB8IHZlYzMoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMx
NTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC56eno7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM196enkKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVj
MygwLjc1LCAwLjc1LCAwLjUpIHwgdmVjMygxLjEyNSwgMS4xMjUsIDEuMjUpIHwgdmVjMygtNC44
NzUsIC00Ljg3NSwgLTIuMjUpIHwgdmVjMygtNTEuMCwgLTUxLjAsIDY0LjApIHwgdmVjMygwLjA1
MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC56enk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM195eHkKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMo
MS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIu
MCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjUsIDAuMCwgMC41KSB8
IHZlYzMoMS4yNSwgMS4wLCAxLjI1KSB8IHZlYzMoLTIuMjUsIC0wLjUsIC0yLjI1KSB8IHZlYzMo
NjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjMygtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC55eHk7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM194engKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsg
dmVjMygwLjAsIDAuNzUsIDAuMCkgfCB2ZWMzKDEuMCwgMS4xMjUsIDEuMCkgfCB2ZWMzKC0wLjUs
IC00Ljg3NSwgLTAuNSkgfCB2ZWMzKC0zMi4wLCAtNTEuMCwgLTMyLjApIHwgdmVjMygtMC43NSwg
MC4wNTI2MzE1Nzg5NDc0LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54
eng7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVj
M194eXl4CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGlu
MCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVj
MygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2
ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNSwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjI1LCAxLjApIHwgdmVjNCgtMC41LCAtMi4yNSwgLTIuMjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwg
NjQuMCwgNjQuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMy
MjU4MDY0NTE2MSwgLTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHl5eDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMzX3p6
enoKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0g
WyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0w
LjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzQg
b3V0MCA9IFsgdmVjNCgwLjc1LCAwLjc1LCAwLjc1LCAwLjc1KSB8IHZlYzQoMS4xMjUsIDEuMTI1
LCAxLjEyNSwgMS4xMjUpIHwgdmVjNCgtNC44NzUsIC00Ljg3NSwgLTQuODc1LCAtNC44NzUpIHwg
dmVjNCgtNTEuMCwgLTUxLjAsIC01MS4wLCAtNTEuMCkgfCB2ZWM0KDAuMDUyNjMxNTc4OTQ3NCwg
MC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC56enp6OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVj
MygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0z
Mi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgLTAuNSB8
IC0zMi4wIHwgLTAuNzUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfcAorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4w
LCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUs
IC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIy
NTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsg
MC43NSB8IDEuMTI1IHwgLTQuODc1IHwgLTUxLjAgfCAwLjA1MjYzMTU3ODk0NzQgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfc3AKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4w
LCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0KSBdOworCQkJb3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuNzUpIHwgdmVjMigx
LjAsIDEuMTI1KSB8IHZlYzIoLTAuNSwgLTQuODc1KSB8IHZlYzIoLTMyLjAsIC01MS4wKSB8IHZl
YzIoLTAuNzUsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC5zcDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92
ZWMzX3BwCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGlu
MCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVj
MygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2
ZWMyIG91dDAgPSBbIHZlYzIoMC43NSwgMC43NSkgfCB2ZWMyKDEuMTI1LCAxLjEyNSkgfCB2ZWMy
KC00Ljg3NSwgLTQuODc1KSB8IHZlYzIoLTUxLjAsIC01MS4wKSB8IHZlYzIoMC4wNTI2MzE1Nzg5
NDc0LCAwLjA1MjYzMTU3ODk0NzQpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucHA7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19z
dHAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0g
WyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0w
LjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMg
b3V0MCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwg
dmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZl
YzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGluMC5zdHA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1lZGl1bXBfdmVjM19wdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4w
LCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwg
NjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjUsIDAuMCkgfCB2
ZWMzKDEuMTI1LCAxLjI1LCAxLjApIHwgdmVjMygtNC44NzUsIC0yLjI1LCAtMC41KSB8IHZlYzMo
LTUxLjAsIDY0LjAsIC0zMi4wKSB8IHZlYzMoMC4wNTI2MzE1Nzg5NDc0LCAtMC4wMzIyNTgwNjQ1
MTYxLCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wdHM7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19zc3MKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAu
MCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1
LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMy
MjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsg
dmVjMygwLjAsIDAuMCwgMC4wKSB8IHZlYzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKC0wLjUsIC0w
LjUsIC0wLjUpIHwgdmVjMygtMzIuMCwgLTMyLjAsIC0zMi4wKSB8IHZlYzMoLTAuNzUsIC0wLjc1
LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zc3M7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19wcHAKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwg
MC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAt
NC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVj
MygwLjc1LCAwLjc1LCAwLjc1KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAxLjEyNSkgfCB2ZWMzKC00
Ljg3NSwgLTQuODc1LCAtNC44NzUpIHwgdmVjMygtNTEuMCwgLTUxLjAsIC01MS4wKSB8IHZlYzMo
MC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wcHA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19wcHQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZl
YzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygt
MzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjc1LCAw
LjUpIHwgdmVjMygxLjEyNSwgMS4xMjUsIDEuMjUpIHwgdmVjMygtNC44NzUsIC00Ljg3NSwgLTIu
MjUpIHwgdmVjMygtNTEuMCwgLTUxLjAsIDY0LjApIHwgdmVjMygwLjA1MjYzMTU3ODk0NzQsIDAu
MDUyNjMxNTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5wcHQ7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1l
ZGl1bXBfdmVjM190c3QKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEy
NSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjAp
IHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJ
b3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjUsIDAuMCwgMC41KSB8IHZlYzMoMS4yNSwgMS4w
LCAxLjI1KSB8IHZlYzMoLTIuMjUsIC0wLjUsIC0yLjI1KSB8IHZlYzMoNjQuMCwgLTMyLjAsIDY0
LjApIHwgdmVjMygtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC50c3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19zcHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8
IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVj
MygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuNzUs
IDAuMCkgfCB2ZWMzKDEuMCwgMS4xMjUsIDEuMCkgfCB2ZWMzKC0wLjUsIC00Ljg3NSwgLTAuNSkg
fCB2ZWMzKC0zMi4wLCAtNTEuMCwgLTMyLjApIHwgdmVjMygtMC43NSwgMC4wNTI2MzE1Nzg5NDc0
LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zcHM7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19zdHRzCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAs
IDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwg
LTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZl
YzQoMC4wLCAwLjUsIDAuNSwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjI1LCAxLjApIHwgdmVj
NCgtMC41LCAtMi4yNSwgLTIuMjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgNjQuMCwgLTMy
LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAu
NzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuc3R0czsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMzX3BwcHAKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41
LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44
NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgw
Ljc1LCAwLjc1LCAwLjc1LCAwLjc1KSB8IHZlYzQoMS4xMjUsIDEuMTI1LCAxLjEyNSwgMS4xMjUp
IHwgdmVjNCgtNC44NzUsIC00Ljg3NSwgLTQuODc1LCAtNC44NzUpIHwgdmVjNCgtNTEuMCwgLTUx
LjAsIC01MS4wLCAtNTEuMCkgfCB2ZWM0KDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0
LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC5wcHBwOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBtZWRpdW1wX3ZlYzNfcgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwgdmVjMygxLjAsIDEuMjUsIDEu
MTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMzKC0zMi4wLCA2NC4wLCAtNTEu
MCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQpIF07CisJ
CQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgLTAuNSB8IC0zMi4wIHwgLTAuNzUg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzNfYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjMyBpbjAgPSBbIHZlYzMoMC4wLCAwLjUsIDAuNzUpIHwg
dmVjMygxLjAsIDEuMjUsIDEuMTI1KSB8IHZlYzMoLTAuNSwgLTIuMjUsIC00Ljg3NSkgfCB2ZWMz
KC0zMi4wLCA2NC4wLCAtNTEuMCkgfCB2ZWMzKC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC43NSB8IDEuMTI1IHwg
LTQuODc1IHwgLTUxLjAgfCAwLjA1MjYzMTU3ODk0NzQgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5iOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX3ZlYzNfcmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkg
fCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwg
dmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0
cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjAsIDAuNzUpIHwgdmVjMigxLjAsIDEuMTI1KSB8IHZl
YzIoLTAuNSwgLTQuODc1KSB8IHZlYzIoLTMyLjAsIC01MS4wKSB8IHZlYzIoLTAuNzUsIDAuMDUy
NjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yYjsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWMzX2JiCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAs
IDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwg
LTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1
ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2ZWMyIG91dDAgPSBbIHZl
YzIoMC43NSwgMC43NSkgfCB2ZWMyKDEuMTI1LCAxLjEyNSkgfCB2ZWMyKC00Ljg3NSwgLTQuODc1
KSB8IHZlYzIoLTUxLjAsIC01MS4wKSB8IHZlYzIoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3
ODk0NzQpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYmI7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19yZ2IKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41
LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44
NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0
NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygw
LjAsIDAuNSwgMC43NSkgfCB2ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4y
NSwgLTQuODc1KSB8IHZlYzMoLTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5yZ2I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfdmVjM19iZ3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkg
fCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwg
dmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0
cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjUsIDAuMCkgfCB2ZWMzKDEuMTI1LCAxLjI1
LCAxLjApIHwgdmVjMygtNC44NzUsIC0yLjI1LCAtMC41KSB8IHZlYzMoLTUxLjAsIDY0LjAsIC0z
Mi4wKSB8IHZlYzMoMC4wNTI2MzE1Nzg5NDc0LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iZ3I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19ycnIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8
IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVj
MygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuMCwg
MC4wKSB8IHZlYzMoMS4wLCAxLjAsIDEuMCkgfCB2ZWMzKC0wLjUsIC0wLjUsIC0wLjUpIHwgdmVj
MygtMzIuMCwgLTMyLjAsIC0zMi4wKSB8IHZlYzMoLTAuNzUsIC0wLjc1LCAtMC43NSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5ycnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19iYmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZl
YzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygt
MzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjc1LCAw
Ljc1KSB8IHZlYzMoMS4xMjUsIDEuMTI1LCAxLjEyNSkgfCB2ZWMzKC00Ljg3NSwgLTQuODc1LCAt
NC44NzUpIHwgdmVjMygtNTEuMCwgLTUxLjAsIC01MS4wKSB8IHZlYzMoMC4wNTI2MzE1Nzg5NDc0
LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC5iYmI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfdmVjM19iYmcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAx
LjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUx
LjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOwor
CQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjc1LCAwLjc1LCAwLjUpIHwgdmVjMygxLjEy
NSwgMS4xMjUsIDEuMjUpIHwgdmVjMygtNC44NzUsIC00Ljg3NSwgLTIuMjUpIHwgdmVjMygtNTEu
MCwgLTUxLjAsIDY0LjApIHwgdmVjMygwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmc7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19ncmcK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2
ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUs
IC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0
MCA9IFsgdmVjMygwLjUsIDAuMCwgMC41KSB8IHZlYzMoMS4yNSwgMS4wLCAxLjI1KSB8IHZlYzMo
LTIuMjUsIC0wLjUsIC0yLjI1KSB8IHZlYzMoNjQuMCwgLTMyLjAsIDY0LjApIHwgdmVjMygtMC4w
MzIyNTgwNjQ1MTYxLCAtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGluMC5ncmc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfdmVjM19yYnIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMoMS4wLCAxLjI1
LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIuMCwgNjQuMCwg
LTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0KSBd
OworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjAsIDAuNzUsIDAuMCkgfCB2ZWMzKDEu
MCwgMS4xMjUsIDEuMCkgfCB2ZWMzKC0wLjUsIC00Ljg3NSwgLTAuNSkgfCB2ZWMzKC0zMi4wLCAt
NTEuMCwgLTMyLjApIHwgdmVjMygtMC43NSwgMC4wNTI2MzE1Nzg5NDc0LCAtMC43NSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yYnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjM19yZ2dyCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWMzIGluMCA9IFsgdmVjMygwLjAsIDAuNSwgMC43NSkgfCB2
ZWMzKDEuMCwgMS4yNSwgMS4xMjUpIHwgdmVjMygtMC41LCAtMi4yNSwgLTQuODc1KSB8IHZlYzMo
LTMyLjAsIDY0LjAsIC01MS4wKSB8IHZlYzMoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUy
NjMxNTc4OTQ3NCkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAu
NSwgMC4wKSB8IHZlYzQoMS4wLCAxLjI1LCAxLjI1LCAxLjApIHwgdmVjNCgtMC41LCAtMi4yNSwg
LTIuMjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgNjQuMCwgLTMyLjApIHwgdmVjNCgtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuNzUpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAucmdncjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF92ZWMzX2JiYmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IHZlYzMgaW4wID0gWyB2ZWMzKDAuMCwgMC41LCAwLjc1KSB8IHZlYzMo
MS4wLCAxLjI1LCAxLjEyNSkgfCB2ZWMzKC0wLjUsIC0yLjI1LCAtNC44NzUpIHwgdmVjMygtMzIu
MCwgNjQuMCwgLTUxLjApIHwgdmVjMygtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjc1LCAwLjc1LCAwLjc1
LCAwLjc1KSB8IHZlYzQoMS4xMjUsIDEuMTI1LCAxLjEyNSwgMS4xMjUpIHwgdmVjNCgtNC44NzUs
IC00Ljg3NSwgLTQuODc1LCAtNC44NzUpIHwgdmVjNCgtNTEuMCwgLTUxLjAsIC01MS4wLCAtNTEu
MCkgfCB2ZWM0KDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0
NzQsIDAuMDUyNjMxNTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmJi
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRf
eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBb
IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43
NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAt
NTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC4wIHwgMS4wIHwgLTAuNSB8
IC0zMi4wIHwgLTAuNzUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfdworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4w
LCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0
KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQu
MCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUp
IF07CisJCQlvdXRwdXQgZmxvYXQgb3V0MCA9IFsgMC44MjUgfCAxLjc1IHwgOS4wIHwgMjQuMCB8
IDAuMjUgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53OworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfd3gKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAw
Ljc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAt
Mi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVj
NCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJ
b3V0cHV0IHZlYzIgb3V0MCA9IFsgdmVjMigwLjgyNSwgMC4wKSB8IHZlYzIoMS43NSwgMS4wKSB8
IHZlYzIoOS4wLCAtMC41KSB8IHZlYzIoMjQuMCwgLTMyLjApIHwgdmVjMigwLjI1LCAtMC43NSkg
XTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJ
eworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53eDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3d6CisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwg
MC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUs
IC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAu
NzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1
dCB2ZWMyIG91dDAgPSBbIHZlYzIoMC44MjUsIDAuNzUpIHwgdmVjMigxLjc1LCAxLjEyNSkgfCB2
ZWMyKDkuMCwgLTQuODc1KSB8IHZlYzIoMjQuMCwgLTUxLjApIHwgdmVjMigwLjI1LCAwLjA1MjYz
MTU3ODk0NzQpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAud3o7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF93d3cKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwg
MC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgt
MC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjAp
IHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBd
OworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjgyNSwgMC44MjUsIDAuODI1KSB8IHZl
YzMoMS43NSwgMS43NSwgMS43NSkgfCB2ZWMzKDkuMCwgOS4wLCA5LjApIHwgdmVjMygyNC4wLCAy
NC4wLCAyNC4wKSB8IHZlYzMoMC4yNSwgMC4yNSwgMC4yNSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC53d3c7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfdmVjNF95eXcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwg
MS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVj
NCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2
MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVj
MygwLjUsIDAuNSwgMC44MjUpIHwgdmVjMygxLjI1LCAxLjI1LCAxLjc1KSB8IHZlYzMoLTIuMjUs
IC0yLjI1LCA5LjApIHwgdmVjMyg2NC4wLCA2NC4wLCAyNC4wKSB8IHZlYzMoLTAuMDMyMjU4MDY0
NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4yNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC55eXc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfdmVjNF93enkKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZl
YzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwg
MS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIu
MCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4w
NTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzMgb3V0MCA9IFsgdmVjMygwLjgy
NSwgMC43NSwgMC41KSB8IHZlYzMoMS43NSwgMS4xMjUsIDEuMjUpIHwgdmVjMyg5LjAsIC00Ljg3
NSwgLTIuMjUpIHwgdmVjMygyNC4wLCAtNTEuMCwgNjQuMCkgfCB2ZWMzKDAuMjUsIDAuMDUyNjMx
NTc4OTQ3NCwgLTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC53enk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
dmVjNF94eXp3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0
IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEu
MTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAs
IDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUy
NjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAw
LjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0w
LjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkg
fCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHl6dzsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3d6eXgKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4y
NSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0
cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC43NSwgMC41LCAwLjApIHwgdmVjNCgxLjc1
LCAxLjEyNSwgMS4yNSwgMS4wKSB8IHZlYzQoOS4wLCAtNC44NzUsIC0yLjI1LCAtMC41KSB8IHZl
YzQoMjQuMCwgLTUxLjAsIDY0LjAsIC0zMi4wKSB8IHZlYzQoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0
LCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC53enl4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzRfeHh4eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwg
MC4wLCAwLjAsIDAuMCkgfCB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjUsIC0w
LjUsIC0wLjUsIC0wLjUpIHwgdmVjNCgtMzIuMCwgLTMyLjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWM0
KC0wLjc1LCAtMC43NSwgLTAuNzUsIC0wLjc1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnh4eHg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfdmVjNF95eXl5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2
ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUs
IDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMy
LjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAu
MDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSB8IHZlYzQoMS4yNSwgMS4yNSwgMS4yNSwgMS4yNSkgfCB2ZWM0KC0y
LjI1LCAtMi4yNSwgLTIuMjUsIC0yLjI1KSB8IHZlYzQoNjQuMCwgNjQuMCwgNjQuMCwgNjQuMCkg
fCB2ZWM0KC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUxNjEsIC0wLjAzMjI1ODA2NDUx
NjEsIC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueXl5
eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0
X3d3d3cKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4w
ID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUs
IDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQu
MCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC44
MjUsIDAuODI1LCAwLjgyNSkgfCB2ZWM0KDEuNzUsIDEuNzUsIDEuNzUsIDEuNzUpIHwgdmVjNCg5
LjAsIDkuMCwgOS4wLCA5LjApIHwgdmVjNCgyNC4wLCAyNC4wLCAyNC4wLCAyNC4wKSB8IHZlYzQo
MC4yNSwgMC4yNSwgMC4yNSwgMC4yNSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53
d3d3OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3Zl
YzRfd3p6dworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBp
bjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEy
NSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2
NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuODI1LCAw
Ljc1LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuNzUsIDEuMTI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0
KDkuMCwgLTQuODc1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KDI0LjAsIC01MS4wLCAtNTEuMCwgMjQu
MCkgfCB2ZWM0KDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnd6enc7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF93d3d5CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43
NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIu
MjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91
dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuODI1LCAwLjgyNSwgMC41KSB8IHZlYzQo
MS43NSwgMS43NSwgMS43NSwgMS4yNSkgfCB2ZWM0KDkuMCwgOS4wLCA5LjAsIC0yLjI1KSB8IHZl
YzQoMjQuMCwgMjQuMCwgMjQuMCwgNjQuMCkgfCB2ZWM0KDAuMjUsIDAuMjUsIDAuMjUsIC0wLjAz
MjI1ODA2NDUxNjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAud3d3eTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3h5eHgKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0
KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwg
dmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAs
IDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAw
LjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC4wLCAwLjAp
IHwgdmVjNCgxLjAsIDEuMjUsIDEuMCwgMS4wKSB8IHZlYzQoLTAuNSwgLTIuMjUsIC0wLjUsIC0w
LjUpIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTMyLjAsIC0zMi4wKSB8IHZlYzQoLTAuNzUsIC0wLjAz
MjI1ODA2NDUxNjEsIC0wLjc1LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC54eXh4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzRfenp3egorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVj
NCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAx
LjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4w
LCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1
MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuNzUs
IDAuNzUsIDAuODI1LCAwLjc1KSB8IHZlYzQoMS4xMjUsIDEuMTI1LCAxLjc1LCAxLjEyNSkgfCB2
ZWM0KC00Ljg3NSwgLTQuODc1LCA5LjAsIC00Ljg3NSkgfCB2ZWM0KC01MS4wLCAtNTEuMCwgMjQu
MCwgLTUxLjApIHwgdmVjNCgwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSwg
MC4wNTI2MzE1Nzg5NDc0KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnp6d3o7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9zCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVj
NCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8
IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4w
LCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwg
MC4yNSkgXTsKKwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjAgfCAxLjAgfCAtMC41IHwgLTMy
LjAgfCAtMC43NSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnM7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9xCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAu
NSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAu
NSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8
IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsK
KwkJCW91dHB1dCBmbG9hdCBvdXQwID0gWyAwLjgyNSB8IDEuNzUgfCA5LjAgfCAyNC4wIHwgMC4y
NSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnE7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9xcworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUs
IDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1
LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0w
Ljc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRw
dXQgdmVjMiBvdXQwID0gWyB2ZWMyKDAuODI1LCAwLjApIHwgdmVjMigxLjc1LCAxLjApIHwgdmVj
Mig5LjAsIC0wLjUpIHwgdmVjMigyNC4wLCAtMzIuMCkgfCB2ZWMyKDAuMjUsIC0wLjc1KSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfcXAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgy
NSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQu
ODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwg
LTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZl
YzIgb3V0MCA9IFsgdmVjMigwLjgyNSwgMC43NSkgfCB2ZWMyKDEuNzUsIDEuMTI1KSB8IHZlYzIo
OS4wLCAtNC44NzUpIHwgdmVjMigyNC4wLCAtNTEuMCkgfCB2ZWMyKDAuMjUsIDAuMDUyNjMxNTc4
OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5xcDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3FxcQorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUs
IDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUs
IC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2
ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJ
CQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuODI1LCAwLjgyNSwgMC44MjUpIHwgdmVjMygx
Ljc1LCAxLjc1LCAxLjc1KSB8IHZlYzMoOS4wLCA5LjAsIDkuMCkgfCB2ZWMzKDI0LjAsIDI0LjAs
IDI0LjApIHwgdmVjMygwLjI1LCAwLjI1LCAwLjI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLnFxcTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF92ZWM0X3R0cQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
dmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1
LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0z
Mi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAw
LjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAu
NSwgMC41LCAwLjgyNSkgfCB2ZWMzKDEuMjUsIDEuMjUsIDEuNzUpIHwgdmVjMygtMi4yNSwgLTIu
MjUsIDkuMCkgfCB2ZWMzKDY0LjAsIDY0LjAsIDI0LjApIHwgdmVjMygtMC4wMzIyNTgwNjQ1MTYx
LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LnR0cTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92
ZWM0X3FwdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBp
bjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEy
NSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2
NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYz
MTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjMyBvdXQwID0gWyB2ZWMzKDAuODI1LCAw
Ljc1LCAwLjUpIHwgdmVjMygxLjc1LCAxLjEyNSwgMS4yNSkgfCB2ZWMzKDkuMCwgLTQuODc1LCAt
Mi4yNSkgfCB2ZWMzKDI0LjAsIC01MS4wLCA2NC4wKSB8IHZlYzMoMC4yNSwgMC4wNTI2MzE1Nzg5
NDc0LCAtMC4wMzIyNTgwNjQ1MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFw
dDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0
X3N0cHEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4w
ID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUs
IDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQu
MCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1
Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuNSwg
MC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwg
LTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZl
YzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zdHBxOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfcXB0cworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAu
ODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAt
NC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1
LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQg
dmVjNCBvdXQwID0gWyB2ZWM0KDAuODI1LCAwLjc1LCAwLjUsIDAuMCkgfCB2ZWM0KDEuNzUsIDEu
MTI1LCAxLjI1LCAxLjApIHwgdmVjNCg5LjAsIC00Ljg3NSwgLTIuMjUsIC0wLjUpIHwgdmVjNCgy
NC4wLCAtNTEuMCwgNjQuMCwgLTMyLjApIHwgdmVjNCgwLjI1LCAwLjA1MjYzMTU3ODk0NzQsIC0w
LjAzMjI1ODA2NDUxNjEsIC0wLjc1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFw
dHM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVj
NF9zc3NzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGlu
MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1
LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0
LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjAs
IDAuMCwgMC4wKSB8IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSB8IHZlYzQoLTAuNSwgLTAuNSwg
LTAuNSwgLTAuNSkgfCB2ZWM0KC0zMi4wLCAtMzIuMCwgLTMyLjAsIC0zMi4wKSB8IHZlYzQoLTAu
NzUsIC0wLjc1LCAtMC43NSwgLTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAu
c3NzczsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92
ZWM0X3R0dHQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQg
aW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4x
MjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwg
NjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2
MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjUsIDAu
NSwgMC41LCAwLjUpIHwgdmVjNCgxLjI1LCAxLjI1LCAxLjI1LCAxLjI1KSB8IHZlYzQoLTIuMjUs
IC0yLjI1LCAtMi4yNSwgLTIuMjUpIHwgdmVjNCg2NC4wLCA2NC4wLCA2NC4wLCA2NC4wKSB8IHZl
YzQoLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwgLTAuMDMyMjU4MDY0NTE2MSwg
LTAuMDMyMjU4MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC50dHR0Owor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfcXFx
cQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBb
IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43
NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAt
NTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuODI1LCAwLjgyNSwg
MC44MjUsIDAuODI1KSB8IHZlYzQoMS43NSwgMS43NSwgMS43NSwgMS43NSkgfCB2ZWM0KDkuMCwg
OS4wLCA5LjAsIDkuMCkgfCB2ZWM0KDI0LjAsIDI0LjAsIDI0LjAsIDI0LjApIHwgdmVjNCgwLjI1
LCAwLjI1LCAwLjI1LCAwLjI1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFxcXE7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9x
cHBxCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9
IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAx
Ljc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAs
IC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4
OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuNzUs
IDAuNzUsIDAuODI1KSB8IHZlYzQoMS43NSwgMS4xMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoOS4w
LCAtNC44NzUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoMjQuMCwgLTUxLjAsIC01MS4wLCAyNC4wKSB8
IHZlYzQoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucXBwcTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3FxcXQKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAw
LjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4yNSwg
LTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgtMC43
NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0
IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC44MjUsIDAuODI1LCAwLjUpIHwgdmVjNCgxLjc1
LCAxLjc1LCAxLjc1LCAxLjI1KSB8IHZlYzQoOS4wLCA5LjAsIDkuMCwgLTIuMjUpIHwgdmVjNCgy
NC4wLCAyNC4wLCAyNC4wLCA2NC4wKSB8IHZlYzQoMC4yNSwgMC4yNSwgMC4yNSwgLTAuMDMyMjU4
MDY0NTE2MSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5xcXF0OworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfc3RzcworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4w
LCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0
KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQu
MCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUp
IF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjAsIDAuMCkgfCB2
ZWM0KDEuMCwgMS4yNSwgMS4wLCAxLjApIHwgdmVjNCgtMC41LCAtMi4yNSwgLTAuNSwgLTAuNSkg
fCB2ZWM0KC0zMi4wLCA2NC4wLCAtMzIuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4
MDY0NTE2MSwgLTAuNzUsIC0wLjc1KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnN0
c3M7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVj
NF9wcHFwCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGlu
MCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1
LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0
LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMx
NTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC43NSwgMC43
NSwgMC44MjUsIDAuNzUpIHwgdmVjNCgxLjEyNSwgMS4xMjUsIDEuNzUsIDEuMTI1KSB8IHZlYzQo
LTQuODc1LCAtNC44NzUsIDkuMCwgLTQuODc1KSB8IHZlYzQoLTUxLjAsIC01MS4wLCAyNC4wLCAt
NTEuMCkgfCB2ZWM0KDAuMDUyNjMxNTc4OTQ3NCwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1LCAwLjA1
MjYzMTU3ODk0NzQpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucHBxcDsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3IKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAu
MCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVj
NCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0
LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1
KSBdOworCQkJb3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuMCB8IDEuMCB8IC0wLjUgfCAtMzIuMCB8
IC0wLjc1IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucjsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X2EKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2ZWM0KDAuMCwgMC41LCAw
Ljc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAt
Mi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVj
NCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQkJ
b3V0cHV0IGZsb2F0IG91dDAgPSBbIDAuODI1IHwgMS43NSB8IDkuMCB8IDI0LjAgfCAwLjI1IF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X2FyCisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44
MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00
Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUs
IC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2
ZWMyIG91dDAgPSBbIHZlYzIoMC44MjUsIDAuMCkgfCB2ZWMyKDEuNzUsIDEuMCkgfCB2ZWMyKDku
MCwgLTAuNSkgfCB2ZWMyKDI0LjAsIC0zMi4wKSB8IHZlYzIoMC4yNSwgLTAuNzUpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYXI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9hYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8
IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUs
IDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4w
MzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjMiBv
dXQwID0gWyB2ZWMyKDAuODI1LCAwLjc1KSB8IHZlYzIoMS43NSwgMS4xMjUpIHwgdmVjMig5LjAs
IC00Ljg3NSkgfCB2ZWMyKDI0LjAsIC01MS4wKSB8IHZlYzIoMC4yNSwgMC4wNTI2MzE1Nzg5NDc0
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmFiOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfYWFhCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43
NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIu
MjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQo
LTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91
dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC44MjUsIDAuODI1LCAwLjgyNSkgfCB2ZWMzKDEuNzUs
IDEuNzUsIDEuNzUpIHwgdmVjMyg5LjAsIDkuMCwgOS4wKSB8IHZlYzMoMjQuMCwgMjQuMCwgMjQu
MCkgfCB2ZWMzKDAuMjUsIDAuMjUsIDAuMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
bjAuYWFhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X3ZlYzRfZ2dhCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0
IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEu
MTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAs
IDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUy
NjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC41LCAw
LjUsIDAuODI1KSB8IHZlYzMoMS4yNSwgMS4yNSwgMS43NSkgfCB2ZWMzKC0yLjI1LCAtMi4yNSwg
OS4wKSB8IHZlYzMoNjQuMCwgNjQuMCwgMjQuMCkgfCB2ZWMzKC0wLjAzMjI1ODA2NDUxNjEsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuZ2dh
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRf
YWJnCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9
IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAx
Ljc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAs
IC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4
OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWMzIG91dDAgPSBbIHZlYzMoMC44MjUsIDAuNzUs
IDAuNSkgfCB2ZWMzKDEuNzUsIDEuMTI1LCAxLjI1KSB8IHZlYzMoOS4wLCAtNC44NzUsIC0yLjI1
KSB8IHZlYzMoMjQuMCwgLTUxLjAsIDY0LjApIHwgdmVjMygwLjI1LCAwLjA1MjYzMTU3ODk0NzQs
IC0wLjAzMjI1ODA2NDUxNjEpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYWJnOwor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfcmdi
YQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBb
IHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43
NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAt
NTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0
NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuMCwgMC41LCAwLjc1
LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCgtMC41LCAtMi4y
NSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUxLjAsIDI0LjApIHwgdmVjNCgt
MC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0LCAwLjI1KSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaW4wLnJnYmE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9hYmdyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAuNSwgMC43NSwgMC44MjUp
IHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3
NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0w
LjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0
IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuNzUsIDAuNSwgMC4wKSB8IHZlYzQoMS43NSwgMS4xMjUs
IDEuMjUsIDEuMCkgfCB2ZWM0KDkuMCwgLTQuODc1LCAtMi4yNSwgLTAuNSkgfCB2ZWM0KDI0LjAs
IC01MS4wLCA2NC4wLCAtMzIuMCkgfCB2ZWM0KDAuMjUsIDAuMDUyNjMxNTc4OTQ3NCwgLTAuMDMy
MjU4MDY0NTE2MSwgLTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYWJncjsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X3Jy
cnIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0g
WyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEu
NzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjAsIDAuMCwgMC4w
LCAwLjApIHwgdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApIHwgdmVjNCgtMC41LCAtMC41LCAtMC41
LCAtMC41KSB8IHZlYzQoLTMyLjAsIC0zMi4wLCAtMzIuMCwgLTMyLjApIHwgdmVjNCgtMC43NSwg
LTAuNzUsIC0wLjc1LCAtMC43NSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5ycnJy
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRf
Z2dnZworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAg
PSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwg
MS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4w
LCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3
ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVjNCBvdXQwID0gWyB2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSkgfCB2ZWM0KDEuMjUsIDEuMjUsIDEuMjUsIDEuMjUpIHwgdmVjNCgtMi4yNSwgLTIu
MjUsIC0yLjI1LCAtMi4yNSkgfCB2ZWM0KDY0LjAsIDY0LjAsIDY0LjAsIDY0LjApIHwgdmVjNCgt
MC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4wMzIyNTgwNjQ1MTYxLCAtMC4w
MzIyNTgwNjQ1MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmdnZ2c7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9hYWFhCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVj
NCgwLjAsIDAuNSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8
IHZlYzQoLTAuNSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4w
LCAyNC4wKSB8IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwg
MC4yNSkgXTsKKwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC44MjUsIDAuODI1LCAwLjgy
NSwgMC44MjUpIHwgdmVjNCgxLjc1LCAxLjc1LCAxLjc1LCAxLjc1KSB8IHZlYzQoOS4wLCA5LjAs
IDkuMCwgOS4wKSB8IHZlYzQoMjQuMCwgMjQuMCwgMjQuMCwgMjQuMCkgfCB2ZWM0KDAuMjUsIDAu
MjUsIDAuMjUsIDAuMjUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYWFhYTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X2FiYmEK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0gWyB2
ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEuNzUp
IHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwgLTUx
LjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5NDc0
LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjgyNSwgMC43NSwgMC43
NSwgMC44MjUpIHwgdmVjNCgxLjc1LCAxLjEyNSwgMS4xMjUsIDEuNzUpIHwgdmVjNCg5LjAsIC00
Ljg3NSwgLTQuODc1LCA5LjApIHwgdmVjNCgyNC4wLCAtNTEuMCwgLTUxLjAsIDI0LjApIHwgdmVj
NCgwLjI1LCAwLjA1MjYzMTU3ODk0NzQsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC5hYmJhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBtZWRpdW1wX3ZlYzRfYWFhZworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgdmVjNCBpbjAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuNzUsIDAuODI1
KSB8IHZlYzQoMS4wLCAxLjI1LCAxLjEyNSwgMS43NSkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtNC44
NzUsIDkuMCkgfCB2ZWM0KC0zMi4wLCA2NC4wLCAtNTEuMCwgMjQuMCkgfCB2ZWM0KC0wLjc1LCAt
MC4wMzIyNTgwNjQ1MTYxLCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUpIF07CisJCQlvdXRwdXQgdmVj
NCBvdXQwID0gWyB2ZWM0KDAuODI1LCAwLjgyNSwgMC44MjUsIDAuNSkgfCB2ZWM0KDEuNzUsIDEu
NzUsIDEuNzUsIDEuMjUpIHwgdmVjNCg5LjAsIDkuMCwgOS4wLCAtMi4yNSkgfCB2ZWM0KDI0LjAs
IDI0LjAsIDI0LjAsIDY0LjApIHwgdmVjNCgwLjI1LCAwLjI1LCAwLjI1LCAtMC4wMzIyNTgwNjQ1
MTYxKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmFhYWc7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfdmVjNF9yZ3JyCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCB2ZWM0IGluMCA9IFsgdmVjNCgwLjAsIDAu
NSwgMC43NSwgMC44MjUpIHwgdmVjNCgxLjAsIDEuMjUsIDEuMTI1LCAxLjc1KSB8IHZlYzQoLTAu
NSwgLTIuMjUsIC00Ljg3NSwgOS4wKSB8IHZlYzQoLTMyLjAsIDY0LjAsIC01MS4wLCAyNC4wKSB8
IHZlYzQoLTAuNzUsIC0wLjAzMjI1ODA2NDUxNjEsIDAuMDUyNjMxNTc4OTQ3NCwgMC4yNSkgXTsK
KwkJCW91dHB1dCB2ZWM0IG91dDAgPSBbIHZlYzQoMC4wLCAwLjUsIDAuMCwgMC4wKSB8IHZlYzQo
MS4wLCAxLjI1LCAxLjAsIDEuMCkgfCB2ZWM0KC0wLjUsIC0yLjI1LCAtMC41LCAtMC41KSB8IHZl
YzQoLTMyLjAsIDY0LjAsIC0zMi4wLCAtMzIuMCkgfCB2ZWM0KC0wLjc1LCAtMC4wMzIyNTgwNjQ1
MTYxLCAtMC43NSwgLTAuNzUpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucmdycjsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF92ZWM0X2Ji
YWIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IHZlYzQgaW4wID0g
WyB2ZWM0KDAuMCwgMC41LCAwLjc1LCAwLjgyNSkgfCB2ZWM0KDEuMCwgMS4yNSwgMS4xMjUsIDEu
NzUpIHwgdmVjNCgtMC41LCAtMi4yNSwgLTQuODc1LCA5LjApIHwgdmVjNCgtMzIuMCwgNjQuMCwg
LTUxLjAsIDI0LjApIHwgdmVjNCgtMC43NSwgLTAuMDMyMjU4MDY0NTE2MSwgMC4wNTI2MzE1Nzg5
NDc0LCAwLjI1KSBdOworCQkJb3V0cHV0IHZlYzQgb3V0MCA9IFsgdmVjNCgwLjc1LCAwLjc1LCAw
LjgyNSwgMC43NSkgfCB2ZWM0KDEuMTI1LCAxLjEyNSwgMS43NSwgMS4xMjUpIHwgdmVjNCgtNC44
NzUsIC00Ljg3NSwgOS4wLCAtNC44NzUpIHwgdmVjNCgtNTEuMCwgLTUxLjAsIDI0LjAsIC01MS4w
KSB8IHZlYzQoMC4wNTI2MzE1Nzg5NDc0LCAwLjA1MjYzMTU3ODk0NzQsIDAuMjUsIDAuMDUyNjMx
NTc4OTQ3NCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmFiOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMyX3gKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwg
MCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIo
MCwgMCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwgMCBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLng7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzJfeHgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91
dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
MCkgfCBpdmVjMigtMzIsIC0zMikgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnh4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWMyX3h5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikg
fCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9
IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwg
NjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54eTsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjMl95eAor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBp
dmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkg
fCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwg
aXZlYzIoMSwgMSkgfCBpdmVjMigtMiwgMCkgfCBpdmVjMig2NCwgLTMyKSB8IGl2ZWMyKDAsIDAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueXg7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzJfeXh5CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZl
YzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07
CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKC0yLCAwLCAtMikgfCBpdmVjMyg2NCwgLTMyLCA2NCkgfCBpdmVjMygwLCAwLCAw
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnl4eTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjMl94eXh4CisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwg
aXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDAp
IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgx
LCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAwLCAwKSB8IGl2ZWM0KC0zMiwgNjQsIC0zMiwgLTMy
KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAz
MDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30K
KworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHl4
eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVj
Ml95eXl5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMiBp
bjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigt
MzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQo
MCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KC0yLCAtMiwgLTIsIC0yKSB8
IGl2ZWM0KDY0LCA2NCwgNjQsIDY0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpbjAueXl5eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbWVkaXVtcF9pdmVjMl9zCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBpdmVjMiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVj
MigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgaW50
IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5zOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X2l2ZWMyX3NzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVj
MiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVj
MigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZl
YzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIDApIHwgaXZlYzIoLTMyLCAtMzIpIHwg
aXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zczsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjMl9zdAorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVj
MigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIo
MSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVjMigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuc3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzJfdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAx
KSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91
dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoLTIs
IDApIHwgaXZlYzIoNjQsIC0zMikgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnRzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWMyX3RzdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIp
IHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAg
PSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwgMCwgLTIpIHwg
aXZlYzMoNjQsIC0zMiwgNjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC50c3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfaXZlYzJfc3RzcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwg
LTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91
dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAt
MiwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0LCAtMzIsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnN0c3M7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzJfdHR0dAorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8IGl2
ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBd
OworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgtMiwgLTIsIC0yLCAtMikgfCBpdmVjNCg2NCwgNjQsIDY0LCA2NCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnR0dHQ7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzJf
cgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0g
WyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2
NCkgfCBpdmVjMigwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAgfCAt
MzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucjsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjMl9ycgorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzIgaW4wID0gWyBpdmVjMigwLCAwKSB8
IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwgaXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAw
KSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMigwLCAwKSB8IGl2ZWMyKC0zMiwgLTMyKSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAucnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1lZGl1bXBfaXZlYzJfcmcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2
ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCBp
dmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTIpIHwg
aXZlYzIoLTMyLCA2NCkgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnJnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X2l2ZWMyX2dyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVj
MiBpbjAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigwLCAtMikgfCBpdmVj
MigtMzIsIDY0KSB8IGl2ZWMyKDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzIgb3V0MCA9IFsgaXZl
YzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKC0yLCAwKSB8IGl2ZWMyKDY0LCAtMzIpIHwg
aXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5ncjsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjMl9ncmcKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIo
MCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZl
YzIoMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTIsIDAsIC0yKSB8IGl2ZWMzKDY0LCAtMzIsIDY0KSB8IGl2
ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuZ3JnOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMyX3JncnIKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMyIGluMCA9IFsgaXZl
YzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0yKSB8IGl2ZWMyKC0zMiwgNjQpIHwg
aXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAw
KSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIDAsIDApIHwgaXZlYzQoLTMyLCA2
NCwgLTMyLCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5yZ3JyOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWMyX2dnZ2cKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGl2ZWMyIGluMCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDAsIC0y
KSB8IGl2ZWMyKC0zMiwgNjQpIHwgaXZlYzIoMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQw
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTIsIC0y
LCAtMiwgLTIpIHwgaXZlYzQoNjQsIDY0LCA2NCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5nZ2dnOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMzX3gKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwg
MCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLng7CisJCQkJJHtPVVRQVVR9CisJCQl9
CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfegorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IC00IHwgLTUx
IHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLno7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfeHoKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkg
fCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEp
IHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAw
KSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTQpIHwgaXZlYzIoLTMyLCAtNTEpIHwgaXZlYzIo
MCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54ejsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM196egorCQl2ZXJzaW9uIDMw
MCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAw
KSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01
MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAs
IDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigtNCwgLTQpIHwgaXZlYzIoLTUxLCAtNTEpIHwgaXZl
YzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC56ejsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM194eXoKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwg
MCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0
LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0z
MiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnh5ejsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVt
cF9pdmVjM196eXgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2
ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0y
LCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1
dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMo
LTQsIC0yLCAwKSB8IGl2ZWMzKC01MSwgNjQsIC0zMikgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnp5eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM194eHgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMo
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygtMzIsIC0zMiwgLTMyKSB8IGl2
ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHh4OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMzX3p6egorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0z
MiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBb
IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtNCwgLTQsIC00KSB8IGl2
ZWMzKC01MSwgLTUxLCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC56eno7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfaXZlYzNfenp5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVj
MygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJ
CQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8
IGl2ZWMzKC00LCAtNCwgLTIpIHwgaXZlYzMoLTUxLCAtNTEsIDY0KSB8IGl2ZWMzKDAsIDAsIDAp
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuenp5OworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMzX3l4eQorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8
IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkg
fCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAs
IDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwgMCwgLTIpIHwgaXZlYzMoNjQsIC0zMiwg
NjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC55eHk7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNf
eHp4CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAg
PSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwg
aXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzMg
b3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC00LCAw
KSB8IGl2ZWMzKC0zMiwgLTUxLCAtMzIpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC54eng7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1lZGl1bXBfaXZlYzNfeHl5eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEp
IHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAw
KSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTIsIDApIHwgaXZlYzQoLTMyLCA2NCwgNjQsIC0z
MikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnh5
eXg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZl
YzNfenp6egorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMg
aW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00
KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2
ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVj
NCgtNCwgLTQsIC00LCAtNCkgfCBpdmVjNCgtNTEsIC01MSwgLTUxLCAtNTEpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC56enp6OworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMzX3MKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwg
MCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0
LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEg
fCAwIHwgLTMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnM7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfcAorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygw
LCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwg
NjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwg
MSB8IC00IHwgLTUxIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfc3AKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZl
YzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygt
MzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0g
WyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTQpIHwgaXZlYzIoLTMyLCAt
NTEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zcDsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM19wcAor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBp
dmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMz
KC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAg
PSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigtNCwgLTQpIHwgaXZlYzIoLTUx
LCAtNTEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wcDsK
KwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM19z
dHAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBp
dmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBv
dXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00
KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaW4wLnN0cDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWVkaXVtcF9pdmVjM19wdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8
IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkg
XTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEs
IDEpIHwgaXZlYzMoLTQsIC0yLCAwKSB8IGl2ZWMzKC01MSwgNjQsIC0zMikgfCBpdmVjMygwLCAw
LCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnB0czsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM19zc3MKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwg
MCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAt
NTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygw
LCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygtMzIsIC0z
MiwgLTMyKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAu
c3NzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2
ZWMzX3BwcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMg
aW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00
KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2
ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtNCwg
LTQsIC00KSB8IGl2ZWMzKC01MSwgLTUxLCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wcHA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfcHB0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwg
MSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAs
IDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKC00LCAtNCwgLTIpIHwgaXZlYzMoLTUxLCAtNTEsIDY0KSB8IGl2
ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucHB0OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMzX3RzdAorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVj
MygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0z
MiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBb
IGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwgMCwgLTIpIHwgaXZl
YzMoNjQsIC0zMiwgNjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC50c3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1l
ZGl1bXBfaXZlYzNfc3BzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygw
LCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlv
dXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2
ZWMzKDAsIC00LCAwKSB8IGl2ZWMzKC0zMiwgLTUxLCAtMzIpIHwgaXZlYzMoMCwgMCwgMCkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zcHM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfc3R0cworCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBp
dmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAs
IDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTIsIDApIHwgaXZlYzQoLTMy
LCA2NCwgNjQsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnN0dHM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfaXZlYzNfcHBwcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZl
YzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwg
MSwgMSkgfCBpdmVjNCgtNCwgLTQsIC00LCAtNCkgfCBpdmVjNCgtNTEsIC01MSwgLTUxLCAtNTEp
IHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5wcHBw
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWMz
X3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBp
dmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0
MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZl
YzNfYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4w
ID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8
IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBv
dXQwID0gWyAwIHwgMSB8IC00IHwgLTUxIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLmI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
aXZlYzNfcmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMz
IGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAt
NCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBp
dmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoMCwgLTQpIHwg
aXZlYzIoLTMyLCAtNTEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5yYjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVt
cF9pdmVjM19iYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIs
IC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0
IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBpdmVjMigtNCwgLTQp
IHwgaXZlYzIoLTUxLCAtNTEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5iYjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF9pdmVjM19yZ2IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAs
IC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91
dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZl
YzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnJnYjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM19iZ3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVj
MygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVjMygtMzIsIDY0LCAtNTEpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8
IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTQsIC0yLCAwKSB8IGl2ZWMzKC01MSwgNjQsIC0zMikg
fCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmJncjsKKwkJ
CQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjM19ycnIK
KwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWMzIGluMCA9IFsg
aXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDAsIC0yLCAtNCkgfCBpdmVj
MygtMzIsIDY0LCAtNTEpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQw
ID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgMCwgMCkgfCBp
dmVjMygtMzIsIC0zMiwgLTMyKSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAucnJyOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBtZWRpdW1wX2l2ZWMzX2JiYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZl
YzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkg
fCBpdmVjMygtNCwgLTQsIC00KSB8IGl2ZWMzKC01MSwgLTUxLCAtNTEpIHwgaXZlYzMoMCwgMCwg
MCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmI7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfYmJnCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDAp
IHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUx
KSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwg
MCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC00LCAtNCwgLTIpIHwgaXZlYzMoLTUxLCAt
NTEsIDY0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAu
YmJnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2
ZWMzX2dyZworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMg
aW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00
KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2
ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMygtMiwg
MCwgLTIpIHwgaXZlYzMoNjQsIC0zMiwgNjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGluMC5ncmc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1lZGl1bXBfaXZlYzNfcmJyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpdmVjMyBpbjAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwg
MSkgfCBpdmVjMygwLCAtMiwgLTQpIHwgaXZlYzMoLTMyLCA2NCwgLTUxKSB8IGl2ZWMzKDAsIDAs
IDApIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygx
LCAxLCAxKSB8IGl2ZWMzKDAsIC00LCAwKSB8IGl2ZWMzKC0zMiwgLTUxLCAtMzIpIHwgaXZlYzMo
MCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yYnI7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfcmdncgorCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygw
LCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwg
NjQsIC01MSkgfCBpdmVjMygwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTIsIDAp
IHwgaXZlYzQoLTMyLCA2NCwgNjQsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaW4wLnJnZ3I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzNfYmJiYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaXZlYzMgaW4wID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEs
IDEsIDEpIHwgaXZlYzMoMCwgLTIsIC00KSB8IGl2ZWMzKC0zMiwgNjQsIC01MSkgfCBpdmVjMygw
LCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwg
aXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtNCwgLTQsIC00LCAtNCkgfCBpdmVjNCgtNTEsIC01
MSwgLTUxLCAtNTEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5iYmJiOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWM0X3gKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2
ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAs
IDAsIDApIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAxIHwgMCB8IC0zMiB8IDAgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X3cKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVj
NCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEs
IDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaW50IG91dDAgPSBbIDAgfCAx
IHwgOSB8IDI0IHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnc7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfd3gKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQo
MCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBp
dmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQg
aXZlYzIgb3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDksIDApIHwg
aXZlYzIoMjQsIC0zMikgfCBpdmVjMigwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnd4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X2l2ZWM0X3d6CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVj
NCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgw
LCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAw
KSBdOworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkg
fCBpdmVjMig5LCAtNCkgfCBpdmVjMigyNCwgLTUxKSB8IGl2ZWMyKDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAud3o7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1lZGl1bXBfaXZlYzRfd3d3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAs
IDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMyg5LCA5LCA5KSB8IGl2ZWMzKDI0LCAyNCwg
MjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53d3c7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRf
eXl3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAg
PSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwg
LTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOwor
CQkJb3V0cHV0IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkg
fCBpdmVjMygtMiwgLTIsIDkpIHwgaXZlYzMoNjQsIDY0LCAyNCkgfCBpdmVjMygwLCAwLCAwKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnl5dzsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF93enkKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKDksIC00LCAtMikgfCBp
dmVjMygyNCwgLTUxLCA2NCkgfCBpdmVjMygwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnd6eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9pdmVjNF94eXp3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkg
fCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgw
LCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2
NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLnh5enc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1l
ZGl1bXBfaXZlYzRfd3p5eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwgLTQsIC0yLCAwKSB8IGl2ZWM0KDI0LCAtNTEs
IDY0LCAtMzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC53enl4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX2l2ZWM0X3h4eHgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2
ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAs
IDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBp
dmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoLTMyLCAtMzIsIC0z
MiwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVy
c2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFU
SU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBp
bjAueHh4eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVt
cF9pdmVjNF95eXl5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBp
dmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVj
NCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAw
LCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZl
YzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtMiwgLTIsIC0yLCAtMikgfCBpdmVjNCg2NCwgNjQsIDY0
LCA2NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
Lnl5eXk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
aXZlYzRfd3d3dworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwg
MCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwgOSwgOSwgOSkgfCBpdmVjNCgyNCwgMjQsIDI0LCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAw
IGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisK
KwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnd3d3c7
CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRf
d3p6dworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4w
ID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIs
IC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsK
KwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEs
IDEsIDEpIHwgaXZlYzQoOSwgLTQsIC00LCA5KSB8IGl2ZWM0KDI0LCAtNTEsIC01MSwgMjQpIHwg
aXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBl
cworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJ
CQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53enp3Owor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X3d3
d3kKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9
IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAt
NCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJ
CQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAx
LCAxKSB8IGl2ZWM0KDksIDksIDksIC0yKSB8IGl2ZWM0KDI0LCAyNCwgMjQsIDY0KSB8IGl2ZWM0
KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAud3d3eTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF94eXh4CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2
ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkp
IHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0
cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkg
fCBpdmVjNCgwLCAtMiwgMCwgMCkgfCBpdmVjNCgtMzIsIDY0LCAtMzIsIC0zMikgfCBpdmVjNCgw
LCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnh5eHg7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfenp3egorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVj
NCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8
IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1
dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoLTQsIC00LCA5LCAtNCkgfCBpdmVjNCgtNTEsIC01MSwgMjQsIC01MSkgfCBpdmVjNCgw
LCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnp6d3o7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfcworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgw
LCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2
ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBp
bnQgb3V0MCA9IFsgMCB8IDEgfCAwIHwgLTMyIHwgMCBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLnM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfaXZlYzRfcQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwg
MCkgXTsKKwkJCW91dHB1dCBpbnQgb3V0MCA9IFsgMCB8IDEgfCA5IHwgMjQgfCAwIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpbjAucTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9xcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEs
IDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQp
IHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigw
LCAwKSB8IGl2ZWMyKDEsIDEpIHwgaXZlYzIoOSwgMCkgfCBpdmVjMigyNCwgLTMyKSB8IGl2ZWMy
KDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucXM7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfcXAKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwg
MCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgt
MzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzIg
b3V0MCA9IFsgaXZlYzIoMCwgMCkgfCBpdmVjMigxLCAxKSB8IGl2ZWMyKDksIC00KSB8IGl2ZWMy
KDI0LCAtNTEpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5x
cDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVj
NF9xcXEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGlu
MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0y
LCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07
CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAx
KSB8IGl2ZWMzKDksIDksIDkpIHwgaXZlYzMoMjQsIDI0LCAyNCkgfCBpdmVjMygwLCAwLCAwKSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFxcTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF90dHEKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzMgb3V0MCA9
IFsgaXZlYzMoMCwgMCwgMCkgfCBpdmVjMygxLCAxLCAxKSB8IGl2ZWMzKC0yLCAtMiwgOSkgfCBp
dmVjMyg2NCwgNjQsIDI0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAudHRxOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWM0X3FwdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoOSwgLTQsIC0yKSB8IGl2ZWMzKDI0LCAtNTEsIDY0KSB8IGl2
ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucXB0OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X3N0cHEKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZl
YzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkg
fCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRw
dXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8
IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAs
IDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuc3RwcTsKKwkJCQkke09V
VFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9xcHRzCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0
KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwg
aXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0
IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBp
dmVjNCg5LCAtNCwgLTIsIDApIHwgaXZlYzQoMjQsIC01MSwgNjQsIC0zMikgfCBpdmVjNCgwLCAw
LCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFp
bigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFwdHM7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfc3NzcworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgw
LCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2
ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBp
dmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZl
YzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgtMzIsIC0zMiwgLTMyLCAtMzIpIHwgaXZlYzQoMCwgMCwg
MCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zc3NzOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X3R0dHQKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwg
MCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVj
NCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZl
YzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0
KC0yLCAtMiwgLTIsIC0yKSB8IGl2ZWM0KDY0LCA2NCwgNjQsIDY0KSB8IGl2ZWM0KDAsIDAsIDAs
IDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAudHR0dDsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9xcXFxCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQo
LTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0
IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCg5
LCA5LCA5LCA5KSB8IGl2ZWM0KDI0LCAyNCwgMjQsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucXFxcTsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9xcHBxCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDAp
IHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2
NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAg
PSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCg5LCAtNCwg
LTQsIDkpIHwgaXZlYzQoMjQsIC01MSwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFwcHE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfcXFxdAorCQl2ZXJzaW9uIDMwMCBlcwor
CQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8
IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQs
IC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0g
WyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoOSwgOSwgOSwg
LTIpIHwgaXZlYzQoMjQsIDI0LCAyNCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC5xcXF0OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X3N0c3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFs
dWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVj
NCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEs
IDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZl
YzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAwLCAwKSB8
IGl2ZWM0KC0zMiwgNjQsIC0zMiwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAuc3RzczsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9wcHFwCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQo
MSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAy
NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0
KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgtNCwgLTQsIDksIC00KSB8
IGl2ZWM0KC01MSwgLTUxLCAyNCwgLTUxKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAucHBxcDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9yCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBvdXQwID0gWyAwIHwgMSB8IDAg
fCAtMzIgfCAwIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBt
YWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucjsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9pdmVjNF9hCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAs
IDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQo
LTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGludCBv
dXQwID0gWyAwIHwgMSB8IDkgfCAyNCB8IDAgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC5hOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2
ZWM0X2FyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBp
bjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAt
MiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBd
OworCQkJb3V0cHV0IGl2ZWMyIG91dDAgPSBbIGl2ZWMyKDAsIDApIHwgaXZlYzIoMSwgMSkgfCBp
dmVjMig5LCAwKSB8IGl2ZWMyKDI0LCAtMzIpIHwgaXZlYzIoMCwgMCkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC5hcjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWVkaXVtcF9pdmVjNF9hYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEs
IDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZl
YzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMiBvdXQwID0gWyBpdmVjMigwLCAwKSB8
IGl2ZWMyKDEsIDEpIHwgaXZlYzIoOSwgLTQpIHwgaXZlYzIoMjQsIC01MSkgfCBpdmVjMigwLCAw
KSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJ
CQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmFiOworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X2FhYQorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAw
KSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwg
NjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQw
ID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2ZWMzKDEsIDEsIDEpIHwgaXZlYzMoOSwgOSwgOSkgfCBp
dmVjMygyNCwgMjQsIDI0KSB8IGl2ZWMzKDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAuYWFhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWM0X2dnYQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwg
aXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwg
MCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjMyBvdXQwID0gWyBpdmVjMygwLCAwLCAwKSB8IGl2
ZWMzKDEsIDEsIDEpIHwgaXZlYzMoLTIsIC0yLCA5KSB8IGl2ZWMzKDY0LCA2NCwgMjQpIHwgaXZl
YzMoMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5nZ2E7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfYWJnCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0
KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwg
aXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0
IGl2ZWMzIG91dDAgPSBbIGl2ZWMzKDAsIDAsIDApIHwgaXZlYzMoMSwgMSwgMSkgfCBpdmVjMyg5
LCAtNCwgLTIpIHwgaXZlYzMoMjQsIC01MSwgNjQpIHwgaXZlYzMoMCwgMCwgMCkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC5hYmc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfaXZlYzRfcmdiYQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwg
MjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVj
NCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8
IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGluMC5yZ2JhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtZWRpdW1wX2l2ZWM0X2FiZ3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgx
LCAxLCAxLCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0
KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQo
MCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDksIC00LCAtMiwgMCkgfCBp
dmVjNCgyNCwgLTUxLCA2NCwgLTMyKSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpbjAuYWJncjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQK
KworCWNhc2UgbWVkaXVtcF9pdmVjNF9ycnJyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwg
MSwgMSwgMSkgfCBpdmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkg
fCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAs
IDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KC0zMiwgLTMyLCAtMzIsIC0zMikgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaW4wLnJycnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1lZGl1bXBfaXZlYzRfZ2dnZworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgaXZlYzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEs
IDEsIDEpIHwgaXZlYzQoMCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwg
aXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAw
LCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQoLTIsIC0yLCAtMiwgLTIpIHwgaXZl
YzQoNjQsIDY0LCA2NCwgNjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGluMC5nZ2dnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBtZWRpdW1wX2l2ZWM0X2FhYWEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAx
LCAxKSB8IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2
ZWM0KDAsIDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwg
MCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDksIDksIDksIDkpIHwgaXZlYzQoMjQs
IDI0LCAyNCwgMjQpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5hYWFhOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2l2ZWM0X2FiYmEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGl2ZWM0IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8
IGl2ZWM0KDAsIC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAs
IDAsIDAsIDApIF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkg
fCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDksIC00LCAtNCwgOSkgfCBpdmVjNCgyNCwgLTUx
LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDApIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpbjAuYWJiYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF9pdmVjNF9hYWFnCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBpdmVjNCBpbjAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwgaXZlYzQoMSwgMSwgMSwgMSkgfCBp
dmVjNCgwLCAtMiwgLTQsIDkpIHwgaXZlYzQoLTMyLCA2NCwgLTUxLCAyNCkgfCBpdmVjNCgwLCAw
LCAwLCAwKSBdOworCQkJb3V0cHV0IGl2ZWM0IG91dDAgPSBbIGl2ZWM0KDAsIDAsIDAsIDApIHwg
aXZlYzQoMSwgMSwgMSwgMSkgfCBpdmVjNCg5LCA5LCA5LCAtMikgfCBpdmVjNCgyNCwgMjQsIDI0
LCA2NCkgfCBpdmVjNCgwLCAwLCAwLCAwKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LmFhYWc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
aXZlYzRfcmdycgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgaXZl
YzQgaW4wID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0KDEsIDEsIDEsIDEpIHwgaXZlYzQo
MCwgLTIsIC00LCA5KSB8IGl2ZWM0KC0zMiwgNjQsIC01MSwgMjQpIHwgaXZlYzQoMCwgMCwgMCwg
MCkgXTsKKwkJCW91dHB1dCBpdmVjNCBvdXQwID0gWyBpdmVjNCgwLCAwLCAwLCAwKSB8IGl2ZWM0
KDEsIDEsIDEsIDEpIHwgaXZlYzQoMCwgLTIsIDAsIDApIHwgaXZlYzQoLTMyLCA2NCwgLTMyLCAt
MzIpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5y
Z3JyOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2l2
ZWM0X2JiYWIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGl2ZWM0
IGluMCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgxLCAxLCAxLCAxKSB8IGl2ZWM0KDAs
IC0yLCAtNCwgOSkgfCBpdmVjNCgtMzIsIDY0LCAtNTEsIDI0KSB8IGl2ZWM0KDAsIDAsIDAsIDAp
IF07CisJCQlvdXRwdXQgaXZlYzQgb3V0MCA9IFsgaXZlYzQoMCwgMCwgMCwgMCkgfCBpdmVjNCgx
LCAxLCAxLCAxKSB8IGl2ZWM0KC00LCAtNCwgOSwgLTQpIHwgaXZlYzQoLTUxLCAtNTEsIDI0LCAt
NTEpIHwgaXZlYzQoMCwgMCwgMCwgMCkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9u
IDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05T
fQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5i
YmFiOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2
ZWMyX3gKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGlu
MCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZh
bHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOwor
CQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFs
c2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54OworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMyX3h4CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0g
WyBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzJfeHkKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIo
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRy
dWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBi
dmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGgg
IiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJ
CSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJ
CQkJb3V0MCA9IGluMC54eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbWVkaXVtcF9idmVjMl95eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIHRydWUp
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnl4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X2J2ZWMyX3l4eQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZl
YzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZl
YzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOwor
CQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJ
CQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnl4eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJ
IiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjMl94eXh4CisJCXZlcnNpb24gMzAwIGVzCisJ
CXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0
cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBi
dmVjNCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsK
KwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHl4eDsKKwkJCQkke09VVFBVVH0KKwkJCX0K
KwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjMl95eXl5CisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0g
WyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueXl5eTsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjMl9zCisJCXZlcnNpb24gMzAwIGVz
CisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBb
IHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAuczsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjMl9zcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRy
dWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LnNzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2
ZWMyX3N0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMiBp
bjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihm
YWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxz
ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVj
MihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMK
KwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJ
dm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuc3Q7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzJfdHMKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZl
YzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVl
KSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0
IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4o
KQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC50czsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjMl90c3QKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1ZSwg
ZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2ZWMy
KHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91
dDAgPSBbIGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC50c3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfYnZlYzJfc3RzcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIHRydWUs
IHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2Us
IHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLnN0c3M7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1l
ZGl1bXBfYnZlYzJfdHR0dAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnR0dHQ7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfYnZlYzJfcgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwg
ZmFsc2UpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8
IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnI7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzJfcnIKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIo
dHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2
ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5ycjsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjMl9yZworCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzIgaW4wID0gWyBidmVjMih0cnVlLCBmYWxz
ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIHRydWUpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9
IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNl
LCB0cnVlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnJnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMyX2dyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMy
KGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8
IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihm
YWxzZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpbjAuZ3I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfYnZlYzJfZ3JnCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjMiBpbjAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBm
YWxzZSkgfCBidmVjMihmYWxzZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZh
bHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuZ3JnOworCQkJCSR7T1VUUFVU
fQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMyX3JncnIKKwkJdmVyc2lv
biAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIodHJ1
ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8IGJ2
ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0
IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5yZ3JyOworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMyX2dnZ2cKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMyIGluMCA9IFsgYnZlYzIo
dHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCB0cnVlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2
ZWM0IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lk
IG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5nZ2dnOworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMzX3gKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzMo
dHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxz
ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAu
eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVj
M196CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAg
PSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyBm
YWxzZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC56OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2J2ZWMzX3h6CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZl
YzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54ejsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjM196egorCQl2ZXJzaW9uIDMwMCBl
cworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1
ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKGZhbHNlLCBmYWxzZSkg
fCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUs
IHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnp6OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1w
X2J2ZWMzX3h5egorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZl
YzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91
dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpbjAueHl6OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX2J2ZWMzX3p5eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMz
IG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0
cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAuenl4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2J2ZWMzX3h4eAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2
ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC54eHg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfYnZlYzNfenp6CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
YnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaW4wLnp6ejsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKwor
CWNhc2UgbWVkaXVtcF9idmVjM196enkKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMz
KHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91
dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJ
CWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VU
VVB9CisJCQkJb3V0MCA9IGluMC56enk7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5k
CisKKwljYXNlIG1lZGl1bXBfYnZlYzNfeXh5CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcwor
CQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJ
CQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaW4wLnl4eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9idmVjM194engKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnh6eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjM194eXl4CisJCXZlcnNpb24gMzAwIGVzCisJCXZh
bHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxz
ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0
cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnh5eXg7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfYnZlYzNfenp6egorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0
IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuenp6ejsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjM19zCisJCXZl
cnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMz
KHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFs
c2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LnM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZl
YzNfcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4w
ID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsg
ZmFsc2UgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAucDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjM19zcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5w
dXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2
ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBi
dmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFs
c2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkK
KwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuc3A7CisJCQkJJHtPVVRQVVR9CisJ
CQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzNfcHAKKwkJdmVyc2lvbiAzMDAg
ZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRy
dWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMihmYWxzZSwgZmFsc2Up
IHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0cnVl
LCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5wcDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVt
cF9idmVjM19zdHAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2
ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBv
dXQwID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1
ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLnN0cDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF9idmVjM19wdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVj
MyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgor
CQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtE
RUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlv
dXQwID0gaW4wLnB0czsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjM19zc3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBi
dmVjMyBvdXQwID0gWyBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAuc3NzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2Fz
ZSBtZWRpdW1wX2J2ZWMzX3BwcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1
ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0
IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC5wcHA7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1lZGl1bXBfYnZlYzNfcHB0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlv
dXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhm
YWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAucHB0OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMzX3RzdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwg
YnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOwor
CQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMz
KHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQor
CisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7
U0VUVVB9CisJCQkJb3V0MCA9IGluMC50c3Q7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJ
ZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzNfc3BzCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkg
fCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkg
fCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIHRydWUpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJ
fQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJ
CSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zcHM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzNfc3R0cworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFs
c2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5zdHRzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX2J2ZWMzX3BwcHAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVj
NCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJ
CQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZv
aWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnBwcHA7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzNfcgorCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVj
Myh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVj
MyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZh
bHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJz
aW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJ
T05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGlu
MC5yOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2
ZWMzX2IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGlu
MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUp
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBb
IGZhbHNlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW4wLmI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfYnZlYzNfcmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBi
dmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZh
bHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnJiOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMzX2JiCisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0
cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIoZmFsc2UsIGZhbHNl
KSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpbjAuYmI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfYnZlYzNfcmdiCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBi
dmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzMg
b3V0MCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRy
dWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5yZ2I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1l
ZGl1bXBfYnZlYzNfYmdyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZl
YzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUs
IHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC5iZ3I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfYnZlYzNfcnJyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxz
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQg
YnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW4wLnJycjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbWVkaXVtcF9idmVjM19iYmIKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1
dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNl
LCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQli
b3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
CisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQ
fQorCQkJCW91dDAgPSBpbjAuYmJiOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBtZWRpdW1wX2J2ZWMzX2JiZworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJ
eworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZl
YzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJ
b3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisK
KwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtT
RVRVUH0KKwkJCQlvdXQwID0gaW4wLmJiZzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9idmVjM19ncmcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVz
CisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZhbHNlKSB8
IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZl
YzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
Myh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0K
KworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkk
e1NFVFVQfQorCQkJCW91dDAgPSBpbjAuZ3JnOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgor
CWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMzX3JicgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1
ZXMKKwkJeworCQkJaW5wdXQgYnZlYzMgaW4wID0gWyBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2Up
IHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwgdHJ1ZSwgZmFsc2Up
IHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBd
OworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucmJyOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQki
IgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWMzX3JnZ3IKKwkJdmVyc2lvbiAzMDAgZXMKKwkJ
dmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWMzIGluMCA9IFsgYnZlYzModHJ1ZSwgZmFsc2UsIGZh
bHNlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFsc2UsIHRydWUsIGZh
bHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2Us
IHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkj
dmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xB
UkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAg
PSBpbjAucmdncjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF9idmVjM19iYmJiCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjMyBpbjAgPSBbIGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0
cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZl
YzQgb3V0MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmJiOworCQkJ
CSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3gKKwkJ
dmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZl
YzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOwor
CQkJb3V0cHV0IGJvb2wgb3V0MCA9IFsgdHJ1ZSB8IGZhbHNlIHwgZmFsc2UgfCB0cnVlIHwgZmFs
c2UgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54OworCQkJCSR7T1VUUFVUfQorCQkJ
fQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3cKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJvb2wg
b3V0MCA9IFsgdHJ1ZSB8IHRydWUgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBdOworCQl9CisKKwkJ
Ym90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRV
UH0KKwkJCQlvdXQwID0gaW4wLnc7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1lZGl1bXBfYnZlYzRfd3gKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsK
KwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZh
bHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMy
KHRydWUsIHRydWUpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8
IGJ2ZWMyKHRydWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90
aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
CQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0K
KwkJCQlvdXQwID0gaW4wLnd4OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJ
Y2FzZSBtZWRpdW1wX2J2ZWM0X3d6CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0
cnVlLCBmYWxzZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwg
YnZlYzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpbjAud3o7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfYnZlYzRfd3d3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJ
CQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAud3d3OworCQkJCSR7
T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3l5dworCQl2
ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVj
NCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRy
dWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJ
CQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzMoZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjMyh0
cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAueXl3OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVu
ZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3d6eQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMK
KwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1
ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsg
YnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIGZhbHNlLCBmYWxzZSkgfCBi
dmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
MyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24g
MzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9
CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnd6
eTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVj
NF94eXp3CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBp
bjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAueHl6dzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjNF93enl4CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAud3p5eDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF94eHh4CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0g
WyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJ
CXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueHh4eDsKKwkJCQkke09VVFBVVH0KKwkJ
CX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF95eXl5CisJCXZlcnNpb24gMzAw
IGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBi
dmVjNCBvdXQwID0gWyBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAueXl5eTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF93d3d3CisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2
ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMw
MCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQor
CisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC53d3d3
OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0
X3d6encKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGlu
MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVj
NCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBi
dmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC53enp3OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2J2ZWM0X3d3d3kKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC53d3d5OworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBtZWRpdW1wX2J2ZWM0X3h5eHgKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2
ZWM0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC54eXh4OworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3p6d3oKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0
IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQg
bWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnp6d3o7CisJCQkJJHtP
VVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfcworCQl2ZXJz
aW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0
cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlv
dXRwdXQgYm9vbCBvdXQwID0gWyB0cnVlIHwgZmFsc2UgfCBmYWxzZSB8IHRydWUgfCBmYWxzZSBd
OworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7
CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJ
CSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfcQorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYm9vbCBvdXQw
ID0gWyB0cnVlIHwgdHJ1ZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJCX0KKworCQlib3Ro
ICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJ
CQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQor
CQkJCW91dDAgPSBpbjAucTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbWVkaXVtcF9idmVjNF9xcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJ
aW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZl
YzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1
ZSwgdHJ1ZSkgfCBidmVjMih0cnVlLCBmYWxzZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIHwgYnZl
YzIodHJ1ZSwgdHJ1ZSkgfCBidmVjMihmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIi
CisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkk
e0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJ
CW91dDAgPSBpbjAucXM7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNl
IG1lZGl1bXBfYnZlYzRfcXAKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMyIG91dDAgPSBbIGJ2ZWMyKHRydWUs
IGZhbHNlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVj
Mih0cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC5xcDsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjNF9xcXEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlu
cHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5xcXE7CisJCQkJJHtPVVRQ
VVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfdHRxCisJCXZlcnNp
b24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRy
dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91
dHB1dCBidmVjMyBvdXQwID0gWyBidmVjMyhmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIGZhbHNlKSB8IGJ2ZWMzKHRydWUs
IHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC50dHE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisK
KwljYXNlIG1lZGl1bXBfYnZlYzRfcXB0CisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7
CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBm
YWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMyBvdXQwID0gWyBidmVj
Myh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWMz
KGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZh
bHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAg
ZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKwor
CQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucXB0Owor
CQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3N0
cHEKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9
IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2
ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFS
QVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9
IGluMC5zdHBxOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX2J2ZWM0X3FwdHMKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0
IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJv
dGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
KwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9
CisJCQkJb3V0MCA9IGluMC5xcHRzOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAor
CisJY2FzZSBtZWRpdW1wX2J2ZWM0X3Nzc3MKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJ
CXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2
ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJewor
CQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5zc3NzOworCQkJCSR7T1VUUFVUfQorCQkJfQor
CQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3R0dHQKKwkJdmVyc2lvbiAzMDAgZXMK
KwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQo
ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWM0
IG91dDAgPSBbIGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1h
aW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC50dHR0OworCQkJCSR7T1VU
UFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRpdW1wX2J2ZWM0X3FxcXEKKwkJdmVy
c2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQo
dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJ
b3V0cHV0IGJ2ZWM0IG91dDAgPSBbIGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZl
YzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVz
CisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJ
CXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnFxcXE7CisJ
CQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfcXBw
cQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0g
WyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRy
dWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
IF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0
KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3Zl
cnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJB
VElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0g
aW4wLnFwcHE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1
bXBfYnZlYzRfcXFxdAorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW4wLnFxcXQ7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfYnZlYzRfc3RzcworCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQo
dHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnN0c3M7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfcHBxcAorCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0
MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSB8IGJ2
ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWlu
KCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucHBxcDsKKwkJCQkke09VVFBV
VH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF9yCisJCXZlcnNpb24g
MzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUs
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8
IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1
dCBib29sIG91dDAgPSBbIHRydWUgfCBmYWxzZSB8IGZhbHNlIHwgdHJ1ZSB8IGZhbHNlIF07CisJ
CX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJ
CQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAucjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIK
KwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF9hCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBib29sIG91dDAgPSBb
IHRydWUgfCB0cnVlIHwgZmFsc2UgfCB0cnVlIHwgZmFsc2UgXTsKKwkJfQorCisJCWJvdGggIiIK
KwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7
REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJ
b3V0MCA9IGluMC5hOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBt
ZWRpdW1wX2J2ZWM0X2FyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1
dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChm
YWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFs
c2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjMiBvdXQwID0gWyBidmVjMih0cnVlLCB0
cnVlKSB8IGJ2ZWMyKHRydWUsIGZhbHNlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgfCBidmVjMih0
cnVlLCB0cnVlKSB8IGJ2ZWMyKGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJ
CSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVD
TEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0
MCA9IGluMC5hcjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVk
aXVtcF9idmVjNF9hYgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzIgb3V0MCA9IFsgYnZlYzIodHJ1ZSwgZmFs
c2UpIHwgYnZlYzIodHJ1ZSwgZmFsc2UpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSB8IGJ2ZWMyKHRy
dWUsIHRydWUpIHwgYnZlYzIoZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJ
I3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNM
QVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQw
ID0gaW4wLmFiOworCQkJCSR7T1VUUFVUfQorCQkJfQorCQkiIgorCWVuZAorCisJY2FzZSBtZWRp
dW1wX2J2ZWM0X2FhYQorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQg
YnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzMgb3V0MCA9IFsgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyh0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWMzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmFhYTsKKwkJCQkke09VVFBVVH0K
KwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF9nZ2EKKwkJdmVyc2lvbiAz
MDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJCWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0
IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwg
ZmFsc2UsIHRydWUpIHwgYnZlYzModHJ1ZSwgdHJ1ZSwgZmFsc2UpIHwgYnZlYzModHJ1ZSwgdHJ1
ZSwgdHJ1ZSkgfCBidmVjMyhmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW4wLmdnYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNh
c2UgbWVkaXVtcF9idmVjNF9hYmcKKwkJdmVyc2lvbiAzMDAgZXMKKwkJdmFsdWVzCisJCXsKKwkJ
CWlucHV0IGJ2ZWM0IGluMCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2
ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUsIGZhbHNl
LCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQkJb3V0cHV0IGJ2ZWMzIG91dDAgPSBbIGJ2ZWMzKHRy
dWUsIGZhbHNlLCBmYWxzZSkgfCBidmVjMyh0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzMoZmFs
c2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWMzKHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzMoZmFsc2Us
IGZhbHNlLCBmYWxzZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcwor
CQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2
b2lkIG1haW4oKQorCQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5hYmc7CisJCQkJ
JHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfcmdiYQor
CQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBi
dmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUs
IHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07
CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIHRydWUs
IGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNp
b24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElP
TlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4w
LnJnYmE7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBf
YnZlYzRfYWJncgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZl
YzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8
IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQo
ZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9CisKKwkJYm90aCAi
IgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworCQkJ
JHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJJHtTRVRVUH0KKwkJ
CQlvdXQwID0gaW4wLmFiZ3I7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIiCisJZW5kCisKKwlj
YXNlIG1lZGl1bXBfYnZlYzRfcnJycgorCQl2ZXJzaW9uIDMwMCBlcworCQl2YWx1ZXMKKwkJewor
CQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSBdOworCQl9
CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigpCisJCQl7CisJCQkJ
JHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLnJycnI7CisJCQkJJHtPVVRQVVR9CisJCQl9CisJCSIi
CisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfZ2dnZworCQl2ZXJzaW9uIDMwMCBlcworCQl2
YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRwdXQgYnZlYzQgb3V0
MCA9IFsgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NCh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSBdOworCQl9CisKKwkJYm90aCAiIgorCQkJI3ZlcnNpb24gMzAwIGVzCisJCQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKworCQkJJHtERUNMQVJBVElPTlN9CisKKwkJCXZvaWQgbWFpbigp
CisJCQl7CisJCQkJJHtTRVRVUH0KKwkJCQlvdXQwID0gaW4wLmdnZ2c7CisJCQkJJHtPVVRQVVR9
CisJCQl9CisJCSIiCisJZW5kCisKKwljYXNlIG1lZGl1bXBfYnZlYzRfYWFhYQorCQl2ZXJzaW9u
IDMwMCBlcworCQl2YWx1ZXMKKwkJeworCQkJaW5wdXQgYnZlYzQgaW4wID0gWyBidmVjNCh0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkg
fCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCQlvdXRw
dXQgYnZlYzQgb3V0MCA9IFsgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNCh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJ
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9p
ZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAuYWFhYTsKKwkJCQkk
e09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF9hYmJhCisJ
CXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2
ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsK
KwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp
IHwgYnZlYzQodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwgYnZlYzQoZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJCQkjdmVyc2lv
biAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RFQ0xBUkFUSU9O
U30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91dDAgPSBpbjAu
YWJiYTsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2UgbWVkaXVtcF9i
dmVjNF9hYWFnCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlpbnB1dCBidmVj
NCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpIHwg
YnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVlLCB0cnVlLCB0
cnVlLCBmYWxzZSkgfCBidmVjNCh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkgfCBidmVjNChmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRydWUsIHRydWUpIHwg
YnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKworCQlib3RoICIiCisJ
CQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisJCQkke0RF
Q0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NFVFVQfQorCQkJCW91
dDAgPSBpbjAuYWFhZzsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwllbmQKKworCWNhc2Ug
bWVkaXVtcF9idmVjNF9yZ3JyCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVlcworCQl7CisJCQlp
bnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0gWyBidmVjNCh0cnVl
LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkg
fCBidmVjNChmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSB8IGJ2ZWM0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIF07CisJCX0KKwor
CQlib3RoICIiCisJCQkjdmVyc2lvbiAzMDAgZXMKKwkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCisJCQkke0RFQ0xBUkFUSU9OU30KKworCQkJdm9pZCBtYWluKCkKKwkJCXsKKwkJCQkke1NF
VFVQfQorCQkJCW91dDAgPSBpbjAucmdycjsKKwkJCQkke09VVFBVVH0KKwkJCX0KKwkJIiIKKwll
bmQKKworCWNhc2UgbWVkaXVtcF9idmVjNF9iYmFiCisJCXZlcnNpb24gMzAwIGVzCisJCXZhbHVl
cworCQl7CisJCQlpbnB1dCBidmVjNCBpbjAgPSBbIGJ2ZWM0KHRydWUsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSB8IGJ2ZWM0KGZhbHNlLCB0
cnVlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVj
NChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgXTsKKwkJCW91dHB1dCBidmVjNCBvdXQwID0g
WyBidmVjNChmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSB8IGJ2ZWM0KGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgZmFsc2UpIHwgYnZlYzQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpIHwgYnZlYzQo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkgfCBidmVjNChmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkgXTsKKwkJfQorCisJCWJvdGggIiIKKwkJCSN2ZXJzaW9uIDMwMCBlcworCQkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisKKwkJCSR7REVDTEFSQVRJT05TfQorCisJCQl2b2lkIG1haW4oKQor
CQkJeworCQkJCSR7U0VUVVB9CisJCQkJb3V0MCA9IGluMC5iYmFiOworCQkJCSR7T1VUUFVUfQor
CQkJfQorCQkiIgorCWVuZAorCisKK2VuZCAjIHZlY3Rvcl9zd2l6emxlcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kYXRhL2ds
ZXMzL3NoYWRlcnMvdGVtcGxhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3RlbXBsYXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTE5MzdmMmNhN2ZmZmNkMzM1ZjZmOTQ5MDM1YzlhOTVlODdhZTI3NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZGF0YS9nbGVzMy9zaGFkZXJzL3RlbXBsYXRlLmh0bWwKQEAgLTAsMCArMSwzNiBAQAor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyTGlicmFyeScpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit0ZXN0TmFtZSA9IF9fX1RFU1RfTkFNRV9fXzsKK2Rlc2Ny
aXB0aW9uKCJTaGFkZXIgdGVzdDogIiArIHRlc3ROYW1lICsgIi4iKTsKK1dlYkdMVGVzdFV0aWxz
LnNldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKDIpOworCit2YXIgZ2V0RmlsdGVyID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIHF1ZXJ5VmFycyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3Ry
aW5nKDEpLnNwbGl0KCcmJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5VmFycy5s
ZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdmFsdWUgPSBxdWVyeVZhcnNbaV0uc3BsaXQoJz0n
KTsKKyAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVswXSkgPT09ICdmaWx0ZXIn
KQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVsxXSk7CisgICAg
fQorfQorCittb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5LnJ1bih0ZXN0TmFtZSwgZ2V0
RmlsdGVyKCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9kZXFwLWRlcHMu
anMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Rl
cXAtZGVwcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjM4ZGNlNmM0YTM3ZjQzNWViMmM1NTcxYjI1OGMyNDAx
YjFmNDEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9kZXFwLWRlcHMuanMKQEAgLTAsMCArMSwxNDEgQEAKKy8vIFRo
aXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9i
aW4vYnVpbGQvZGVwc3dyaXRlci5weS4KKy8vIFBsZWFzZSBkbyBub3QgZWRpdC4KK2dvb2cuYWRk
RGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUJpbGluZWFySW1h
Z2VDb21wYXJlLmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdUJpbGluZWFySW1hZ2VDb21wYXJl
J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1Q29tcHJlc3Nl
ZFRleHR1cmUuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1Q29tcHJlc3NlZFRleHR1cmUnXSwg
WydmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFt
ZXdvcmsvY29tbW9uL3RjdUZsb2F0LmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0J10s
IFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUZsb2F0Rm9ybWF0Lmpz
JywgWydmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Rm9ybWF0J10sIFsnZnJhbWV3b3JrLmNvbW1v
bi50Y3VJbnRlcnZhbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1
RnV6enlJbWFnZUNvbXBhcmUuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1RnV6enlJbWFnZUNv
bXBhcmUnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1SW1hZ2VDb21wYXJlLmpzJywg
WydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZSddLCBbJ2ZyYW1ld29yay5jb21tb24u
dGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcsICdm
cmFtZXdvcmsuY29tbW9uLnRjdUZ1enp5SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24u
dGN1TG9nSW1hZ2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21t
b24udGN1U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9j
b21tb24vdGN1SW50ZXJ2YWwuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1SW50ZXJ2YWwnXSwg
WydmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFsc2UpOworZ29vZy5hZGREZXBl
bmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1TG9nSW1hZ2UuanMnLCBb
J2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN1
cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlTWF0aCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2Rl
cXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VNYXRyaXguanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
TWF0cml4J10sIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdU1hdHJp
eFV0aWwuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4VXRpbCddLCBbJ2ZyYW1ld29y
ay5jb21tb24udGN1TWF0cml4J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4v
Li4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVBpeGVsRm9ybWF0LmpzJywgWydmcmFtZXdvcmsu
Y29tbW9uLnRjdVBpeGVsRm9ybWF0J10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3ko
Jy4uLy4uLy4uL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VSR0JBLmpzJywgWydmcmFtZXdvcmsu
Y29tbW9uLnRjdVJHQkEnXSwgWydmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24v
dGN1U2tpcExpc3QuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1U2tpcExpc3QnXSwgW10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9u
L3RjdVN0cmluZ1RlbXBsYXRlLmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBs
YXRlJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJh
bWV3b3JrL2NvbW1vbi90Y3VTdXJmYWNlLmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZh
Y2UnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1
VGVzdENhc2UuanMnLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnXSwgWydmcmFtZXdv
cmsuY29tbW9uLnRjdVNraXBMaXN0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4v
Li4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleENvbXBhcmVWZXJpZmllci5qcycsIFsn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhDb21wYXJlVmVyaWZpZXInXSwgWydmcmFtZXdvcmsuY29t
bW9uLnRjdVRleFZlcmlmaWVyVXRpbCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFz
ZS5kZU1hdGgnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Zy
YW1ld29yay9jb21tb24vdGN1VGV4TG9va3VwVmVyaWZpZXIuanMnLCBbJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4TG9va3VwVmVyaWZpZXInXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRleFZlcmlm
aWVyVXRpbCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24v
dGN1VGV4VmVyaWZpZXJVdGlsLmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRleFZlcmlmaWVy
VXRpbCddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnLCAnZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8u
Li8uLi9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1VGV4dHVyZS5qcycsIFsnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXh0dXJlJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcsICdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmcnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRk
RGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleHR1cmVVdGls
LmpzJywgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJ10sIFsnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJy4uLy4uLy4uL2RlcXAvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVNYXRoLmpzJywgWydm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgW10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZVJhbmRvbS5q
cycsIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nXSwgW10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9k
ZVN0cmluZy5qcycsIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnXSwgWydmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlVXRpbC5qcycsIFsnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJ10sIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFt
ZXdvcmsvb3BlbmdsL2dsdURyYXdVdGlsLmpzJywgWydmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdV
dGlsJ10sIFsnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdU9iamVj
dFdyYXBwZXIuanMnLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1T2JqZWN0V3JhcHBlciddLCBbXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9vcGVu
Z2wvZ2x1UGl4ZWxUcmFuc2Zlci5qcycsIFsnZnJhbWV3b3JrLm9wZW5nbC5nbHVQaXhlbFRyYW5z
ZmVyJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2ds
dVNoYWRlclByb2dyYW0uanMnLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbSdd
LCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29y
ay9vcGVuZ2wvZ2x1U2hhZGVyVXRpbC5qcycsIFsnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJV
dGlsJ10sIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdVN0clV0aWwu
anMnLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3RyVXRpbCddLCBbXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VGV4dHVyZS5q
cycsIFsnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50
Y3VDb21wcmVzc2VkVGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZVV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1l
d29yay9vcGVuZ2wvZ2x1VGV4dHVyZVV0aWwuanMnLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZVV0aWwnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUNvbXByZXNzZWRUZXh0dXJlJywgJ2Zy
YW1ld29yay5jb21tb24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVV
dGlsJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1U2hhZGVyVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4u
L2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVWYXJUeXBlLmpzJywgWydmcmFtZXdvcmsub3Blbmds
LmdsdVZhclR5cGUnXSwgWydmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1
VmFyVHlwZVV0aWwuanMnLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnXSwgWydm
cmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJU
eXBlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdv
cmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyR0xDb250ZXh0LmpzJywgWydmcmFtZXdvcmsu
b3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0J10sIFsnZnJhbWV3b3JrLmNvbW1v
bi50Y3VQaXhlbEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3
b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1h
dGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wu
Z2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnZnJh
bWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJl
ZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJEZWZzJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yck11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3MnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGUn
LCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyZXInLCAnZnJhbWV3b3JrLnJl
ZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5k
ZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xy
UmVmZXJlbmNlQ29udGV4dC5qcycsIFsnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uu
c2dsclJlZmVyZW5jZUNvbnRleHQnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCcsICdm
cmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeFV0aWwnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhl
bEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZVV0
aWxzJywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFt
JywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckRlZnMnLCAnZnJhbWV3b3JrLnJlZmVy
ZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzJywgJ2ZyYW1ld29yay5yZWZlcmVuY2Vy
ZW5kZXJlci5yclJlbmRlclN0YXRlJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJl
bmRlcmVyJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJpYiddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJhbWV3b3JrL29wZW5n
bC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LmpzJywgWydmcmFtZXdv
cmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QnXSwgWydm
cmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxG
b3JtYXQnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1RHJhd1V0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJl
ZmVyZW5jZUNvbnRleHQnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclNo
YWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRnJhZ21lbnRPcGVy
YXRpb25zJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InLCAn
ZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnLCAnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJywgJ2ZyYW1ld29yay5yZWZlcmVuY2Vy
ZW5kZXJlci5yclZlcnRleFBhY2tldCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4u
Ly4uLy4uL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5j
ZVV0aWxzLmpzJywgWydmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJl
bmNlVXRpbHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0JywgJ2ZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJEZWZzJywg
J2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InLCAnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGUnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyUmVuZGVyZXInLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGVy
cycsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWInXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvc2lt
cGxlcmVmZXJlbmNlL3NnbHJTaGFkZXJQcm9ncmFtLmpzJywgWydmcmFtZXdvcmsub3BlbmdsLnNp
bXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbSddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5k
ZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVu
ZGVyZXIucnJEZWZzJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3Bl
cmF0aW9ucycsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJywg
J2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRlcnMnLCAnZnJhbWV3b3JrLnJlZmVy
ZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRl
cmVyLnJyVmVydGV4QXR0cmliJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRl
eFBhY2tldCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyRGVmcy5qcycsIFsnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyRGVmcyddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8u
Li8uLi9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yckZyYWdtZW50T3BlcmF0aW9u
cy5qcycsIFsnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRnJhZ21lbnRPcGVyYXRpb25z
J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJHZW5l
cmljVmVjdG9yLmpzJywgWydmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVj
dG9yJ10sIFtdLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5q
cycsIFsnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZl
ckFjY2VzcyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJhbWV3b3JrL3JlZmVy
ZW5jZXJlbmRlcmVyL3JyUmVuZGVyU3RhdGUuanMnLCBbJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yclJlbmRlclN0YXRlJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJEZWZzJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yck11bHRpc2FtcGxlUGl4
ZWxCdWZmZXJBY2Nlc3MnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9k
ZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJlbmRlcmVyLmpzJywgWydmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJSZW5kZXJlciddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5k
ZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycs
ICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1w
bGVyZWZlcmVuY2Uuc2dsclNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRl
cmVyLnJyRGVmcycsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJh
dGlvbnMnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicsICdm
cmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNz
JywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlJywgJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0JywgJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclZlcnRleEF0dHJpYicsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJWZXJ0ZXhQYWNrZXQnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9k
ZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclNoYWRlcnMuanMnLCBbJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRlcnMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRl
eHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5yZWZl
cmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRl
cmVyLnJyU2hhZGluZ0NvbnRleHQnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVy
dGV4QXR0cmliJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnJhbWV3b3JrL3Jl
ZmVyZW5jZXJlbmRlcmVyL3JyU2hhZGluZ0NvbnRleHQuanMnLCBbJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0J10sIFsnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckRlZnMnLCAnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyRnJhZ21lbnRPcGVyYXRpb25zJywgJ2ZyYW1ld29yay5yZWZl
cmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclV0aWwuanMn
LCBbJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWwnXSwgWydmcmFtZXdvcmsub3Bl
bmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0JywgJ2ZyYW1ld29yay5vcGVuZ2wuc2lt
cGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVw
ZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJWZXJ0
ZXhBdHRyaWIuanMnLCBbJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJp
YiddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3In
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2ZyYW1ld29yay9y
ZWZlcmVuY2VyZW5kZXJlci9yclZlcnRleFBhY2tldC5qcycsIFsnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJl
JywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQXBpQ2FzZS5qcycs
IFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZSddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
VGVzdENhc2UnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTdHJVdGlsJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZBdHRyaWJM
b2NhdGlvblRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBdHRyaWJMb2NhdGlvblRl
c3RzJ10sIFsnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ21vZHVsZXMuc2hhcmVk
Lmdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5Lmpz
JywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCb29sZWFuU3RhdGVRdWVyeSddLCBbJ2ZyYW1ld29y
ay5jb21tb24udGN1VGVzdENhc2UnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScsICdt
b2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZCdWZmZXJDb3B5VGVzdHMuanMn
LCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1ZmZlckNvcHlUZXN0cyddLCBbJ2ZyYW1ld29yay5j
b21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlU3RyaW5nJywgJ21vZHVsZXMuc2hhcmVkLmdsc0J1ZmZlclRlc3RVdGlsJ10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZC
dWZmZXJPYmplY3RRdWVyeVRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWZmZXJP
YmplY3RRdWVyeVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlD
YXNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVz
dENhc2UnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ21vZHVsZXMuc2hh
cmVkLmdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQ2xpcHBpbmdUZXN0cy5qcycs
IFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmQ2xpcHBpbmdUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21t
b24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScsICdmcmFtZXdv
cmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcs
ICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbCcsICdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9U
ZXN0VXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9lczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLmpzJywgWydmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMnXSwgWydmcmFtZXdv
cmsuY29tbW9uLnRjdUxvZ0ltYWdlJywgJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScsICdm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
TWF0aCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVTaGFkZXJVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4v
Li4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZEcmF3VGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkRyYXdUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnLCAn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScs
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJh
d1V0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5v
cGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnLCAnZnJh
bWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlJywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJl
bmNlLnNnbHJHTENvbnRleHQnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2ds
clNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRnJhZ21lbnRP
cGVyYXRpb25zJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3In
LCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnLCAnZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJywgJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclZlcnRleFBhY2tldCcsICdtb2R1bGVzLnNoYXJlZC5nbHNEcmF3VGVzdHMn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZib0NvbG9yYnVmZmVyVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFy
ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJm
YWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9t
JywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWwnLCAnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdENhc2UnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJv
VGVzdFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmpzJywgWydmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
VGVzdENhc2UnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMnLCAnbW9k
dWxlcy5zaGFyZWQuZ2xzRmJvVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4u
Ly4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvRGVwdGhidWZmZXJUZXN0cy5qcycs
IFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvRGVwdGhidWZmZXJUZXN0cyddLCBbJ2ZyYW1ld29y
ay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScsICdm
cmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGls
JywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyVXRpbCcsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZScsICdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvSW52YWxpZGF0ZVRl
c3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMnXSwgWydm
cmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVJH
QkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRj
dVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywg
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyVXRpbCcsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZScsICdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVu
Y3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvTXVsdGlzYW1wbGVUZXN0
cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvTXVsdGlzYW1wbGVUZXN0cyddLCBbJ2Zy
YW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdC
QScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlVXRpbCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJywgJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlJywgJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RV
dGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZGYm9SZW5kZXJUZXN0LmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZG
Ym9SZW5kZXJUZXN0J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVBpeGVsRm9y
bWF0JywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1
cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9u
LnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5k
b20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFt
ZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVm
ZXJlbmNlLnNnbHJHTENvbnRleHQnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uu
c2dsclJlZmVyZW5jZUNvbnRleHQnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRp
bCcsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvU3RhdGVR
dWVyeVRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMn
XSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkFwaUNhc2UnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVRdWVyeSddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvU3Rl
bmNpbGJ1ZmZlclRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9TdGVuY2lsYnVm
ZmVyVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0
aWwnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbCcsICdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9UZXN0Q2FzZScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmRmJvVGVzdENhc2UuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RD
YXNlJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNv
bW1vbi50Y3VQaXhlbEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUn
LCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1l
d29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQnLCAnZnJhbWV3b3JrLm9w
ZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQnLCAnZnJhbWV3b3JrLnJl
ZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyZXInLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVz
dFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZkZib1Rlc3RVdGlsLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZG
Ym9UZXN0VXRpbCddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4JywgJ2ZyYW1ld29yay5j
b21tb24udGN1UkdCQScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5v
cGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQnLCAnZnJhbWV3b3JrLm9wZW5nbC5z
aW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQnLCAnZnJhbWV3b3JrLm9wZW5nbC5z
aW1wbGVyZWZlcmVuY2Uuc2dsclNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyRnJhZ21lbnRPcGVyYXRpb25zJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJl
ci5yckdlbmVyaWNWZWN0b3InLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGlu
Z0NvbnRleHQnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJywg
J2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldCddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmxv
YXRTdGF0ZVF1ZXJ5VGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZsb2F0U3RhdGVR
dWVyeVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20n
LCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0
ZVF1ZXJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2VzM2ZGcmFnRGVwdGhUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5l
czNmRnJhZ0RlcHRoVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScs
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNl
JywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29y
ay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwn
LCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ21vZHVsZXMuc2hhcmVkLmds
c1NoYWRlclJlbmRlckNhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8u
Li9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuanMnLCBbJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnXSwgWydmcmFtZXdvcmsuY29t
bW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2Zy
YW1ld29yay5jb21tb24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVV
dGlsJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZVV0aWwnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdFV0aWwnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZy
YW1lYnVmZmVyQmxpdFRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZl
ckJsaXRUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1l
d29yay5jb21tb24udGN1UkdCQScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUn
LCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVu
Y2Uuc2dsckdMQ29udGV4dCcsICdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xy
UmVmZXJlbmNlQ29udGV4dCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJywg
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlJywgJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZib1Rlc3RVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLmpzJywgWydmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmSW5z
dGFuY2VkUmVuZGVyaW5nVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFy
ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcn
LCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVuZ2wu
Z2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJ10sIGZhbHNl
KTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZB
cGlDYXNlJywgJ21vZHVsZXMuc2hhcmVkLmdsc1N0YXRlUXVlcnknXSwgZmFsc2UpOworZ29vZy5h
ZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkludGVybmFs
Rm9ybWF0UXVlcnlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmSW50ZXJuYWxGb3Jt
YXRRdWVyeVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZBcGlDYXNlJywgJ21vZHVsZXMuc2hhcmVkLmdsc1N0YXRlUXVlcnknXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZXMzZkxpZmV0aW1lVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkxpZmV0aW1l
VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnbW9kdWxlcy5zaGFyZWQuZ2xzTGlmZXRp
bWVUZXN0cycsICdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwgZmFsc2UpOwor
Z29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk11
bHRpc2FtcGxlVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk11bHRpc2FtcGxlVGVz
dHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29t
bW9uLnRjdUxvZ0ltYWdlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScsICdmcmFtZXdvcmsu
Y29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFt
ZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRo
JywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdm
cmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJl
VXRpbCcsICdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwgZmFsc2UpOworZ29v
Zy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk5lZ2F0
aXZlQnVmZmVyQXBpVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlQnVm
ZmVyQXBpVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1U3RyVXRpbCcsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJ10sIGZh
bHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
Zk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERl
cGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmTmVnYXRpdmVTaGFk
ZXJBcGlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmTmVnYXRpdmVTaGFkZXJBcGlU
ZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJQcm9ncmFtJywgJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmTmVn
YXRpdmVTdGF0ZUFwaVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdm
cmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNm
QXBpQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9lczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuanMnLCBbJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVUZXh0dXJlJywgJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5l
czNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNn
bHJHTENvbnRleHQnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmT2Nj
bHVzaW9uUXVlcnlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmT2NjbHVzaW9uUXVl
cnlUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnLCAnZnJhbWV3b3JrLmNv
bW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVT
dHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZQaXhl
bEJ1ZmZlck9iamVjdFRlc3QuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlBpeGVsQnVmZmVy
T2JqZWN0VGVzdCddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1l
d29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywg
J2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZVV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5n
bGVzMy5lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJ
bWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29yay5j
b21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgn
Li4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzJ10sIFsn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZh
Y2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycsICdmcmFt
ZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmUmJvU3RhdGVRdWVyeVRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNl
JywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkFwaUNhc2UnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVRdWVyeSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmUmVh
ZFBpeGVsVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlJlYWRQaXhlbFRlc3RzJ10s
IFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50
Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVT
dHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5v
cGVuZ2wuZ2x1VGV4dHVyZVV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8u
Li8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNhbXBsZXJPYmplY3RUZXN0cy5qcycsIFsn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2FtcGxlck9iamVjdFRlc3RzJ10sIFsnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTYW1wbGVyT2JqZWN0VGVzdCdd
LCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnVuY3Rpb25hbC5nbGVz
My5lczNmQXBpQ2FzZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5J10sIGZhbHNlKTsK
K2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZT
aGFkZXJBcGlUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyQXBpVGVzdHMn
XSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1l
d29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlD
YXNlJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1SW1h
Z2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnLCAnZnJhbWV3b3JrLmNv
bW1vbi50Y3VQaXhlbEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEnLCAnZnJhbWV3
b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
TWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZVN0cmluZycsICdmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsJywgJ2Zy
YW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNo
YWRlclV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlJywgJ2ZyYW1ld29yay5vcGVu
Z2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0JywgJ2ZyYW1ld29yay5vcGVu
Z2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9ucycsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVu
ZGVyZXIucnJHZW5lcmljVmVjdG9yJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yck11
bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyUmVuZGVyU3RhdGUnLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyZXIn
LCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnLCAnZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJywgJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclZlcnRleFBhY2tldCcsICdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJFeGVj
VXRpbCcsICdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJ10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcsICdmcmFt
ZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0
aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZVN0cmluZycsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFy
VHlwZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJFeGVjVXRpbCddLCBmYWxzZSk7Citnb29n
LmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnLCAnZnJhbWV3b3JrLmNvbW1vbi50
Y3VJbnRlcnZhbCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJywgJ2ZyYW1ld29yay5j
b21tb24udGN1TWF0cml4JywgJ2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1U3RyaW5nVGVtcGxh
dGUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1
VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnLCAnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVQaXhlbFRyYW5zZmVyJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3Jh
bScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5n
bHVUZXh0dXJlJywgJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJlbmRlckNhc2UnXSwgZmFsc2Up
OworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFt
ZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVz
dENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlJywgJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJl
bmRlckNhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlckxvb3BUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVz
My5lczNmU2hhZGVyTG9vcFRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdHJpbmdUZW1w
bGF0ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJl
bmRlckNhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlck1hdHJpeFRlc3QuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlck1hdHJpeFRlc3QnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCcs
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlTWF0aCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnbW9kdWxlcy5zaGFy
ZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4u
Ly4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5qcycs
IFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cyddLCBbJ2ZyYW1ld29y
ay5jb21tb24udGN1TWF0cml4JywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
UHJvZ3JhbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnbW9kdWxlcy5zaGFy
ZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4u
Ly4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVz
dHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3Rz
J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdU1h
dHJpeFV0aWwnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVZhclR5cGUnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyRXhlY1V0aWwn
XSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJQcmVjaXNpb25UZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnLCAn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcsICdm
cmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuanMnLCBbJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24u
dGN1TWF0cml4JywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScsICdt
b2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5j
eSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5q
cycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3RydWN0VGVzdHMnXSwgWydmcmFtZXdv
cmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1VGV4dHVyZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNl
J10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2VzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNm
U2hhZGVyU3dpdGNoVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRl
JywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzU2hh
ZGVyUmVuZGVyQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuanMnLCBb
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzJ10sIFsnZnJh
bWV3b3JrLmNvbW1vbi50Y3VNYXRyaXgnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywg
J2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdm
cmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnLCAnbW9kdWxlcy5zaGFyZWQu
Z2xzU2hhZGVyUmVuZGVyQ2FzZSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4u
Ly4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU3RyaW5nUXVlcnlUZXN0cy5qcycsIFsnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmU3RyaW5nUXVlcnlUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24u
dGN1VGVzdENhc2UnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZSddLCBmYWxzZSk7Citn
b29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU3lu
Y1Rlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTeW5jVGVzdHMnXSwgWydmcmFtZXdv
cmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9t
JywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wu
Z2x1U2hhZGVyUHJvZ3JhbSddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4u
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmpzJywgWydm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnXSwgWydmcmFtZXdvcmsu
Y29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJywg
J2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VS
R0JBJywgJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4TG9va3VwVmVyaWZpZXInLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0
aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2Zy
YW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1
cmUnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGYm9UZXN0VXRpbCcsICdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwg
ZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5qcycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZUZvcm1hdFRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VDb21wcmVzc2VkVGV4dHVy
ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFk
ZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3RyVXRpbCcsICdmcmFtZXdvcmsub3Blbmds
LmdsdVRleHR1cmUnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdtb2R1bGVz
LnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5q
cycsIFsnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJ10sIFsnZnJhbWV3
b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFn
ZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVBpeGVsRm9ybWF0JywgJ2ZyYW1ld29yay5jb21tb24u
dGN1UkdCQScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleENvbXBhcmVWZXJpZmllcics
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleExvb2t1cFZlcmlmaWVyJywgJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJywgJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0
cmluZycsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5y
ck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzVGV4dHVy
ZVRlc3RVdGlsJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmpzJywgWydmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJ10sIFsnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZScs
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVBpeGVsRm9ybWF0JywgJ2ZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJywgJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJh
bmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycsICdmcmFtZXdvcmsub3Bl
bmdsLmdsdVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdm
cmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0JywgJ2ZyYW1ld29y
ay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0JywgJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWwnLCAnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVz
dFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LmpzJywgWydmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3RhdGVRdWVyeSddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2Un
LCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnVuY3Rpb25hbC5nbGVzMy5l
czNmQXBpQ2FzZScsICdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5J10sIGZhbHNlKTsKK2dv
b2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZUZXh0
dXJlV3JhcFRlc3RzLmpzJywgWydmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3Rz
J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VDb21wcmVzc2VkVGV4dHVyZScsICdmcmFtZXdvcmsu
Y29tbW9uLnRjdVBpeGVsRm9ybWF0JywgJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScsICdm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4TG9v
a3VwVmVyaWZpZXInLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5j
b21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywg
J2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVRleHR1cmUnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcs
ICdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsu
Y29tbW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVS
YW5kb20nLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVEcmF3VXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFy
VHlwZScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGVVdGlsJ10sIGZhbHNlKTsKK2dvb2cu
YWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZVbmlmb3Jt
QXBpVGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1BcGlUZXN0cyddLCBb
J2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RD
YXNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScsICdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGgnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRp
bCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVZhclR5cGUnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8u
Li8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLmpzJywgWydm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cyddLCBbJ2ZyYW1ld29yay5jb21t
b24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
VXRpbCcsICdtb2R1bGVzLnNoYXJlZC5nbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlJywgJ21vZHVs
ZXMuc2hhcmVkLmdsc1VuaWZvcm1CbG9ja0Nhc2UnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRl
bmN5KCcuLi8uLi8uLi9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlZlcnRleEFycmF5T2JqZWN0
VGVzdHMuanMnLCBbJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMn
XSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29tbW9u
LnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmlu
ZycsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5n
bHVTaGFkZXJQcm9ncmFtJ10sIGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4v
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZWZXJ0ZXhBcnJheVRlc3RzLmpzJywgWydmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VT
dXJmYWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0
cmluZycsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVEcmF3VXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzVmVy
dGV4QXJyYXlUZXN0cyddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2Rl
cXAvbW9kdWxlcy9zaGFyZWQvZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5qcycsIFsnbW9kdWxl
cy5zaGFyZWQuZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cyddLCBbJ2ZyYW1ld29yay5jb21tb24u
dGN1U3RyaW5nVGVtcGxhdGUnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0J1ZmZlclRlc3RVdGlsLmpzJywgWydt
b2R1bGVzLnNoYXJlZC5nbHNCdWZmZXJUZXN0VXRpbCddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1
SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScsICdmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdv
cmsuY29tbW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywg
J2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlU3RyaW5nJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlVXRpbCcsICdmcmFtZXdv
cmsub3BlbmdsLmdsdURyYXdVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3Jh
bScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGRE
ZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5qcycsIFsnbW9kdWxlcy5zaGFyZWQuZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzJ10s
IFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRj
dUludGVydmFsJywgJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4JywgJ2ZyYW1ld29yay5jb21t
b24udGN1TWF0cml4VXRpbCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJh
bmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnLCAnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdm
cmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnLCAnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZl
cmVuY2Uuc2dsckdMQ29udGV4dCcsICdtb2R1bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHNVbml0VGVzdHMnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyRXhlY1V0aWwnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2ds
c0J1aWx0aW5QcmVjaXNpb25UZXN0c1VuaXRUZXN0cy5qcycsIFsnbW9kdWxlcy5zaGFyZWQuZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzVW5pdFRlc3RzJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJ
bnRlcnZhbCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCddLCBmYWxzZSk7Citnb29nLmFk
ZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzRHJhd1Rlc3RzLmpz
JywgWydtb2R1bGVzLnNoYXJlZC5nbHNEcmF3VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRj
dUZsb2F0JywgJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5j
b21tb24udGN1UGl4ZWxGb3JtYXQnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJywgJ2ZyYW1l
d29yay5jb21tb24udGN1U3VyZmFjZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywg
J2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWwnLCAn
ZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29udGV4dCcsICdmcmFtZXdv
cmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcsICdmcmFtZXdv
cmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsu
cmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnMnLCAnZnJhbWV3b3JrLnJlZmVy
ZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJTaGFkaW5nQ29udGV4dCcsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0
ZXhBdHRyaWInLCAnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0J10s
IGZhbHNlKTsKK2dvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vLi4vZGVxcC9tb2R1bGVzL3NoYXJl
ZC9nbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5qcycsIFsnbW9kdWxlcy5zaGFyZWQuZ2xzRmJvQ29t
cGxldGVuZXNzVGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1l
d29yay5vcGVuZ2wuZ2x1T2JqZWN0V3JhcHBlcicsICdmcmFtZXdvcmsub3BlbmdsLmdsdVN0clV0
aWwnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzRmJvVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVu
ZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzRmJvVXRpbC5qcycsIFsnbW9k
dWxlcy5zaGFyZWQuZ2xzRmJvVXRpbCddLCBbJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0
aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMv
c2hhcmVkL2dsc0xpZmV0aW1lVGVzdHMuanMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc0xpZmV0aW1l
VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsu
Y29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlJywgJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScs
ICdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlUmFuZG9tJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdtb2R1bGVz
LnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5
KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2Uu
anMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UnXSwgWydmcmFt
ZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0
aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScsICdmcmFtZXdvcmsub3Blbmds
LmdsdVNoYWRlclV0aWwnLCAnbW9kdWxlcy5zaGFyZWQuZ2xzVW5pZm9ybUJsb2NrQ2FzZSddLCBm
YWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9kdWxlcy9zaGFyZWQv
Z2xzU2FtcGxlck9iamVjdFRlc3QuanMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc1NhbXBsZXJPYmpl
Y3RUZXN0J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0
aWwnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nLCAnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVTdHJpbmcnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcsICdmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9k
dWxlcy9zaGFyZWQvZ2xzU2hhZGVyRXhlY1V0aWwuanMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc1No
YWRlckV4ZWNVdGlsJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXgnLCAnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VNYXRyaXhVdGlsJywgJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScsICdm
cmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
UHJvZ3JhbScsICdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnLCAnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVUZXh0dXJlVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnXSwgZmFs
c2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2ds
c1NoYWRlckxpYnJhcnkuanMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnknXSwg
WydmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyVXRpbCcsICdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Q2FzZSddLCBmYWxzZSk7
Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzU2hh
ZGVyTGlicmFyeUNhc2UuanMnLCBbJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnlDYXNl
J10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScsICdmcmFtZXdvcmsub3BlbmdsLmds
dURyYXdVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdv
cmsub3BlbmdsLmdsdVNoYWRlclV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcu
Li8uLi8uLi9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1NoYWRlclJlbmRlckNhc2UuanMnLCBbJ21v
ZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJlbmRlckNhc2UnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRj
dUltYWdlQ29tcGFyZScsICdmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCcsICdmcmFtZXdvcmsu
Y29tbW9uLnRjdVJHQkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1ld29y
ay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZVJhbmRvbScsICdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycsICdmcmFtZXdvcmsu
b3BlbmdsLmdsdURyYXdVdGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScs
ICdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4uL2RlcXAvbW9k
dWxlcy9zaGFyZWQvZ2xzU3RhdGVRdWVyeS5qcycsIFsnbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVR
dWVyeSddLCBbXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8uLi9kZXFwL21v
ZHVsZXMvc2hhcmVkL2dsc1RleHR1cmVUZXN0VXRpbC5qcycsIFsnbW9kdWxlcy5zaGFyZWQuZ2xz
VGV4dHVyZVRlc3RVdGlsJ10sIFsnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnLCAn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdCcsICdmcmFtZXdvcmsuY29tbW9uLnRjdVJH
QkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdHJpbmdUZW1wbGF0ZScsICdmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhDb21wYXJlVmVyaWZpZXIn
LCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcicsICdmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmUnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0
aWwnLCAnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJywgJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1U2hhZGVyVXRpbCddLCBmYWxzZSk7Citnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uLy4u
L2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzVW5pZm9ybUJsb2NrQ2FzZS5qcycsIFsnbW9kdWxlcy5z
aGFyZWQuZ2xzVW5pZm9ybUJsb2NrQ2FzZSddLCBbJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJywgJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJywgJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdV
dGlsJywgJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScsICdmcmFtZXdvcmsub3Bl
bmdsLmdsdVNoYWRlclV0aWwnXSwgZmFsc2UpOworZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi8u
Li9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1ZlcnRleEFycmF5VGVzdHMuanMnLCBbJ21vZHVsZXMu
c2hhcmVkLmdsc1ZlcnRleEFycmF5VGVzdHMnXSwgWydmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0
JywgJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJywgJ2ZyYW1ld29yay5jb21tb24u
dGN1TG9nSW1hZ2UnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdCcsICdmcmFtZXdv
cmsuY29tbW9uLnRjdVJHQkEnLCAnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJywgJ2ZyYW1l
d29yay5jb21tb24udGN1VGVzdENhc2UnLCAnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRo
JywgJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJywgJ2ZyYW1ld29yay5vcGVuZ2wu
Z2x1U2hhZGVyVXRpbCcsICdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xD
b250ZXh0JywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VD
b250ZXh0JywgJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9n
cmFtJywgJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9ucycs
ICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJywgJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0JywgJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclZlcnRleEF0dHJpYicsICdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJWZXJ0ZXhQYWNrZXQnXSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUJpbGlu
ZWFySW1hZ2VDb21wYXJlLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUJpbGluZWFySW1hZ2VDb21wYXJlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJjMjMxMDRjMDlkNDM5Mjg2ODkzMmJmNWEzNTRiNWQwNTdjYmNiNGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuanMKQEAg
LTAsMCArMSwyNzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxp
dHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29n
LnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZU1hdGgnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZh
ciB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1QmlsaW5lYXJJ
bWFnZUNvbXBhcmU7CisgICAgdmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
TWF0aDsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsK
KyAgICB2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKKworICAgIHZhciBE
RV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICAvLyBmb3IgYmls
aW5lYXIgaW50ZXJwb2xhdGlvbgorICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdGN1QmlsaW5l
YXJJbWFnZUNvbXBhcmUuTlVNX1NVQlBJWEVMX0JJVFMgPSA4OworCisgICAgLy8gQWxnb3JpdGht
IGFzc3VtZXMgdGhhdCBjb2xvcnMgYXJlIHBhY2tlZCB0byAzMi1iaXQgdmFsdWVzIGFzIGRpY3Rh
dGVkIGJ5CisgICAgLy8gdGN1OjpSR0JBOjoqX1NISUZUIHZhbHVlcy4KKworICAgIGZ1bmN0aW9u
IFVpbnRSR0JBOF9SKGNvbG9yKSB7CisgICAgICAgIHJldHVybiAoY29sb3IgPj4gMjQpICYgMHhm
ZjsKKyAgICB9CisgICAgZnVuY3Rpb24gVWludFJHQkE4X0coY29sb3IpIHsKKyAgICAgICAgcmV0
dXJuIChjb2xvciA+PiAxNikgJiAweGZmOworICAgIH0KKyAgICBmdW5jdGlvbiBVaW50UkdCQThf
Qihjb2xvcikgeworICAgICAgICByZXR1cm4gKGNvbG9yID4+IDgpICYgMHhmZjsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gVWludFJHQkE4X0EoY29sb3IpIHsKKyAgICAgICAgcmV0dXJuIGNvbG9yICYg
MHhmZjsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBmeDEgZGVVaW50
MzIKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBmeTEgZGVVaW50MzIKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSBwMDAgZGVVaW50OAorICAgICogQHBhcmFtIHtudW1iZXJ9IHAwMSBkZVVpbnQ4CisgICAg
KiBAcGFyYW0ge251bWJlcn0gcDEwIGRlVWludDgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBwMTEg
ZGVVaW50OAorICAgICogQHJldHVybiB7bnVtYmVyfSBkZVVpbnQ4CisgICAgKi8KKyAgICB0Y3VC
aWxpbmVhckltYWdlQ29tcGFyZS5pbnRlcnBvbGF0ZUNoYW5uZWwgPSBmdW5jdGlvbihmeDEsIGZ5
MSwgcDAwLCBwMDEsIHAxMCwgcDExKSB7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8g
dmFyIGZ4MCA9ICgxIDw8IHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLk5VTV9TVUJQSVhFTF9CSVRT
KSAtIGZ4MTsKKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgZnkwID0gKDEgPDwg
dGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuTlVNX1NVQlBJWEVMX0JJVFMpIC0gZnkxOworICAgICAg
ICAvKiogQGNvbnN0IHtudW1iZXJ9ICovCisgICAgICAgIHZhciBoYWxmID0gMSA8PCAodGN1Qmls
aW5lYXJJbWFnZUNvbXBhcmUuTlVNX1NVQlBJWEVMX0JJVFMgKiAyIC0gMSk7CisgICAgICAgIC8q
KiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHN1bSA9CisgICAgICAgICAgICAoZngwICogZnkwICog
cDAwKSArCisgICAgICAgICAgICAoZngxICogZnkwICogcDEwKSArCisgICAgICAgICAgICAoZngw
ICogZnkxICogcDAxKSArCisgICAgICAgICAgICAoZngxICogZnkxICogcDExKTsKKyAgICAgICAg
LyoqIEBjb25zdCB7bnVtYmVyfSAqLworICAgICAgICB2YXIgcm91bmRlZCA9IChzdW0gKyBoYWxm
KSA+PiAodGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuTlVNX1NVQlBJWEVMX0JJVFMgKiAyKTsKKwor
ICAgICAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5SYW5nZTMyKHJvdW5kZWQsIDAsIDB4ZmYpKTsK
KyAgICAgICAgcmV0dXJuIHJvdW5kZWQ7CisgICAgfTsKKworICAgIHRjdUJpbGluZWFySW1hZ2VD
b21wYXJlLmNvbXBhcmVVaW50UkdCQThUaHJlc2hvbGQgPSBmdW5jdGlvbihhLCBiLCB0aHIpIHsK
KyAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IHJldHVybiAoTWF0aC5hYnMoVWludFJHQkE4X1IoYSkgLSBVaW50UkdCQThfUihiKSkgPD0gdGhy
LmdldFJlZCgpICYmCisgICAgICAgICAgICBNYXRoLmFicyhVaW50UkdCQThfRyhhKSAtIFVpbnRS
R0JBOF9HKGIpKSA8PSB0aHIuZ2V0R3JlZW4oKSAmJgorICAgICAgICAgICAgTWF0aC5hYnMoVWlu
dFJHQkE4X0IoYSkgLSBVaW50UkdCQThfQihiKSkgPD0gdGhyLmdldEJsdWUoKSAmJgorICAgICAg
ICAgICAgTWF0aC5hYnMoVWludFJHQkE4X0EoYSkgLSBVaW50UkdCQThfQShiKSkgPD0gdGhyLmdl
dEFscGhhKCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUu
UkdCQThWaWV3fSB2aWV3CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gdgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VCaWxp
bmVhckltYWdlQ29tcGFyZS5iaWxpbmVhclNhbXBsZVVpbnRSR0JBOCA9IGZ1bmN0aW9uKHZpZXcs
IHUsIHYpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MCA9IHUgPj4gdGN1
QmlsaW5lYXJJbWFnZUNvbXBhcmUuTlVNX1NVQlBJWEVMX0JJVFM7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgeTAgPSB2ID4+IHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLk5VTV9T
VUJQSVhFTF9CSVRTOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgxID0geDAg
KyAxOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkxID0geTAgKyAxOworCisg
ICAgICAgIERFX0FTU0VSVCh4MSA8IHZpZXcuZ2V0V2lkdGgoKSk7CisgICAgICAgIERFX0FTU0VS
VCh5MSA8IHZpZXcuZ2V0SGVpZ2h0KCkpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgZngxID0gdSAtICh4MCA8PCB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5OVU1fU1VCUElY
RUxfQklUUyk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZnkxID0gdiAtICh5
MCA8PCB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5OVU1fU1VCUElYRUxfQklUUyk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY2hhbm5lbHNQMDAgPSB2aWV3LnJl
YWRVaW50UkdCQTgoeDAsIHkwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgY2hhbm5lbHNQMTAgPSB2aWV3LnJlYWRVaW50UkdCQTgoeDEsIHkwKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY2hhbm5lbHNQMDEgPSB2aWV3LnJlYWRV
aW50UkdCQTgoeDAsIHkxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgY2hhbm5lbHNQMTEgPSB2aWV3LnJlYWRVaW50UkdCQTgoeDEsIHkxKTsKKworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlcyA9IDA7CisKKyAgICAgICAgcmVzID0gKHRjdUJp
bGluZWFySW1hZ2VDb21wYXJlLmludGVycG9sYXRlQ2hhbm5lbChmeDEsIGZ5MSwgVWludFJHQkE4
X1IoY2hhbm5lbHNQMDApLAorICAgICAgICAgICAgVWludFJHQkE4X1IoY2hhbm5lbHNQMDEpLCBV
aW50UkdCQThfUihjaGFubmVsc1AxMCksIFVpbnRSR0JBOF9SKGNoYW5uZWxzUDExKSkgJiAweGZm
KSA8PCAyNDsKKyAgICAgICAgcmVzICs9ICh0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5pbnRlcnBv
bGF0ZUNoYW5uZWwoZngxLCBmeTEsIFVpbnRSR0JBOF9HKGNoYW5uZWxzUDAwKSwKKyAgICAgICAg
ICAgIFVpbnRSR0JBOF9HKGNoYW5uZWxzUDAxKSwgVWludFJHQkE4X0coY2hhbm5lbHNQMTApLCBV
aW50UkdCQThfRyhjaGFubmVsc1AxMSkpICYgMHhmZikgPDwgMTY7CisgICAgICAgIHJlcyArPSAo
dGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuaW50ZXJwb2xhdGVDaGFubmVsKGZ4MSwgZnkxLCBVaW50
UkdCQThfQihjaGFubmVsc1AwMCksCisgICAgICAgICAgICBVaW50UkdCQThfQihjaGFubmVsc1Aw
MSksIFVpbnRSR0JBOF9CKGNoYW5uZWxzUDEwKSwgVWludFJHQkE4X0IoY2hhbm5lbHNQMTEpKSAm
IDB4ZmYpIDw8IDg7CisgICAgICAgIHJlcyArPSB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5pbnRl
cnBvbGF0ZUNoYW5uZWwoZngxLCBmeTEsIFVpbnRSR0JBOF9BKGNoYW5uZWxzUDAwKSwKKyAgICAg
ICAgICAgIFVpbnRSR0JBOF9BKGNoYW5uZWxzUDAxKSwgVWludFJHQkE4X0EoY2hhbm5lbHNQMTAp
LCBVaW50UkdCQThfQShjaGFubmVsc1AxMSkpICYgMHhmZjsKKworICAgICAgICByZXR1cm4gcmVz
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuUkdCQThWaWV3
fSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuUkdCQThWaWV3fSByZXN1bHQK
KyAgICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdCQX0gdGhyZXNob2xkCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuY29tcGFyZVBpeGVsUkdC
QTggPSBmdW5jdGlvbihyZWZlcmVuY2UsIHJlc3VsdCwgdGhyZXNob2xkLCB4LCB5KSB7CisgICAg
ICAgIC8qKiBAY29uc3Qge3RjdVJHQkEuUkdCQX0gKi8gdmFyIHJlc1BpeCA9IHJlc3VsdC5yZWFk
VWludFJHQkE4KHgsIHkpOworCisgICAgICAgIC8vIFN0ZXAgMTogQ29tcGFyZSByZXN1bHQgcGl4
ZWwgdG8gM3gzIG5laWdoYm9yaG9vZCBwaXhlbHMgaW4gcmVmZXJlbmNlLgorICAgICAgICAvKiog
QGNvbnN0IHtudW1iZXJ9ICovIHZhciB4MCA9IE1hdGgubWF4KHggLSAxLCAwKTsKKyAgICAgICAg
LyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgeDEgPSB4OworICAgICAgICAvKiogQGNvbnN0IHtu
dW1iZXJ9ICovCisgICAgICAgIHZhciB4MiA9IE1hdGgubWluKHggKyAxLCByZWZlcmVuY2UuZ2V0
V2lkdGgoKSAtIDEpOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciB5MCA9IE1h
dGgubWF4KHkgLSAxLCAwKTsKKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgeTEg
PSB5OworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovCisgICAgICAgIHZhciB5MiA9IE1h
dGgubWluKHkgKyAxLCByZWZlcmVuY2UuZ2V0SGVpZ2h0KCkgLSAxKTsKKworICAgICAgICAvL3Rj
dUJpbGluZWFySW1hZ2VDb21wYXJlLnJlYWRSR0JBOExpc3QgKHJlZmVyZW5jZSwgeDAsIHkwLCB4
MiwgeTIpOworCisgICAgICAgIGlmICh0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5jb21wYXJlVWlu
dFJHQkE4VGhyZXNob2xkKHJlc1BpeCwgcmVmZXJlbmNlLnJlYWRVaW50UkdCQTgoeDEsIHkxKSwg
dGhyZXNob2xkKSB8fAorICAgICAgICAgICAgdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuY29tcGFy
ZVVpbnRSR0JBOFRocmVzaG9sZChyZXNQaXgsIHJlZmVyZW5jZS5yZWFkVWludFJHQkE4KHgwLCB5
MSksIHRocmVzaG9sZCkgfHwKKyAgICAgICAgICAgIHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLmNv
bXBhcmVVaW50UkdCQThUaHJlc2hvbGQocmVzUGl4LCByZWZlcmVuY2UucmVhZFVpbnRSR0JBOCh4
MiwgeTEpLCB0aHJlc2hvbGQpIHx8CisgICAgICAgICAgICB0Y3VCaWxpbmVhckltYWdlQ29tcGFy
ZS5jb21wYXJlVWludFJHQkE4VGhyZXNob2xkKHJlc1BpeCwgcmVmZXJlbmNlLnJlYWRVaW50UkdC
QTgoeDAsIHkwKSwgdGhyZXNob2xkKSB8fAorICAgICAgICAgICAgdGN1QmlsaW5lYXJJbWFnZUNv
bXBhcmUuY29tcGFyZVVpbnRSR0JBOFRocmVzaG9sZChyZXNQaXgsIHJlZmVyZW5jZS5yZWFkVWlu
dFJHQkE4KHgxLCB5MCksIHRocmVzaG9sZCkgfHwKKyAgICAgICAgICAgIHRjdUJpbGluZWFySW1h
Z2VDb21wYXJlLmNvbXBhcmVVaW50UkdCQThUaHJlc2hvbGQocmVzUGl4LCByZWZlcmVuY2UucmVh
ZFVpbnRSR0JBOCh4MiwgeTApLCB0aHJlc2hvbGQpIHx8CisgICAgICAgICAgICB0Y3VCaWxpbmVh
ckltYWdlQ29tcGFyZS5jb21wYXJlVWludFJHQkE4VGhyZXNob2xkKHJlc1BpeCwgcmVmZXJlbmNl
LnJlYWRVaW50UkdCQTgoeDAsIHkyKSwgdGhyZXNob2xkKSB8fAorICAgICAgICAgICAgdGN1Qmls
aW5lYXJJbWFnZUNvbXBhcmUuY29tcGFyZVVpbnRSR0JBOFRocmVzaG9sZChyZXNQaXgsIHJlZmVy
ZW5jZS5yZWFkVWludFJHQkE4KHgxLCB5MiksIHRocmVzaG9sZCkgfHwKKyAgICAgICAgICAgIHRj
dUJpbGluZWFySW1hZ2VDb21wYXJlLmNvbXBhcmVVaW50UkdCQThUaHJlc2hvbGQocmVzUGl4LCBy
ZWZlcmVuY2UucmVhZFVpbnRSR0JBOCh4MiwgeTIpLCB0aHJlc2hvbGQpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gU3RlcCAyOiBDb21wYXJlIHVzaW5nIGJpbGluZWFy
IHNhbXBsaW5nLgorICAgICAgICAvLyBcdG9kbyBbcHlyeV0gT3B0aW1pemUgc2FtcGxlIHBvc2l0
aW9ucyEKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciBz
X29mZnNldHMgPSBbCisgICAgICAgICAgICBbMjI2LCAxODZdLAorICAgICAgICAgICAgWzMzNSwg
MjM1XSwKKyAgICAgICAgICAgIFsyNzksIDMzNF0sCisgICAgICAgICAgICBbMTc4LCAyNzJdLAor
ICAgICAgICAgICAgWzExMiwgMjAyXSwKKyAgICAgICAgICAgIFszMDYsIDExN10sCisgICAgICAg
ICAgICBbMzk2LCAyOTldLAorICAgICAgICAgICAgWzIwNiwgMzgyXSwKKyAgICAgICAgICAgIFsx
NDYsIDk2XSwKKyAgICAgICAgICAgIFs0MjMsIDE1NV0sCisgICAgICAgICAgICBbMzYxLCA0MTJd
LAorICAgICAgICAgICAgWzg0LCAzMzldLAorICAgICAgICAgICAgWzQ4LCAxMzBdLAorICAgICAg
ICAgICAgWzM2NywgNDNdLAorICAgICAgICAgICAgWzQ1NSwgMzY3XSwKKyAgICAgICAgICAgIFsx
MDUsIDQzOV0sCisgICAgICAgICAgICBbODMsIDQ2XSwKKyAgICAgICAgICAgIFsyMTcsIDI0XSwK
KyAgICAgICAgICAgIFs0NjEsIDcxXSwKKyAgICAgICAgICAgIFs0NTAsIDQ1OV0sCisgICAgICAg
ICAgICBbMjM5LCA0NjldLAorICAgICAgICAgICAgWzY3LCAyNjddLAorICAgICAgICAgICAgWzQ1
OSwgMjU1XSwKKyAgICAgICAgICAgIFsxMywgNDE2XSwKKyAgICAgICAgICAgIFsxMCwgMTkyXSwK
KyAgICAgICAgICAgIFsxNDEsIDUwMl0sCisgICAgICAgICAgICBbNTAzLCAzMDRdLAorICAgICAg
ICAgICAgWzM4MCwgNTA2XQorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIHNhbXBsZU5k
eCA9IDA7IHNhbXBsZU5keCA8IHNfb2Zmc2V0cy5sZW5ndGg7IHNhbXBsZU5keCsrKSB7CisgICAg
ICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovCisgICAgICAgICAgICB2YXIgdSA9ICgoeCAt
IDEpIDw8IHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLk5VTV9TVUJQSVhFTF9CSVRTKSArIHNfb2Zm
c2V0c1tzYW1wbGVOZHhdWzBdOworICAgICAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLwor
ICAgICAgICAgICAgdmFyIHYgPSAoKHkgLSAxKSA8PCB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5O
VU1fU1VCUElYRUxfQklUUykgKyBzX29mZnNldHNbc2FtcGxlTmR4XVsxXTsKKworICAgICAgICAg
ICAgaWYgKCFkZU1hdGguZGVJbkJvdW5kczMyKHUsIDAsIChyZWZlcmVuY2UuZ2V0V2lkdGgoKSAt
IDEpIDw8IHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLk5VTV9TVUJQSVhFTF9CSVRTKSB8fAorICAg
ICAgICAgICAgICAgICFkZU1hdGguZGVJbkJvdW5kczMyKHYsIDAsIChyZWZlcmVuY2UuZ2V0SGVp
Z2h0KCkgLSAxKSA8PCB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5OVU1fU1VCUElYRUxfQklUUykp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICh0Y3VCaWxpbmVh
ckltYWdlQ29tcGFyZS5jb21wYXJlVWludFJHQkE4VGhyZXNob2xkKHJlc1BpeCwgdGN1QmlsaW5l
YXJJbWFnZUNvbXBhcmUuYmlsaW5lYXJTYW1wbGVVaW50UkdCQTgocmVmZXJlbmNlLCB1LCB2KSwg
dGhyZXNob2xkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlJHQkE4Vmlld30gcmVmZXJlbmNlCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJl
LlJHQkE4Vmlld30gcmVzdWx0CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVy
QWNjZXNzfSBlcnJvck1hc2sKKyAgICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdCQX0gdGhyZXNob2xk
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VCaWxpbmVhckltYWdl
Q29tcGFyZS5iaWxpbmVhckNvbXBhcmVSR0JBOCA9IGZ1bmN0aW9uKHJlZmVyZW5jZSwgcmVzdWx0
LCBlcnJvck1hc2ssIHRocmVzaG9sZCkgeworICAgICAgICBERV9BU1NFUlQocmVmZXJlbmNlLmdl
dEZvcm1hdCgpLmlzRXF1YWwobmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCgKKyAgICAgICAg
ICAgIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUu
VU5PUk1fSU5UOCkpKTsKKyAgICAgICAgREVfQVNTRVJUKHJlc3VsdC5nZXRGb3JtYXQoKS5pc0Vx
dWFsKG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQoCisgICAgICAgICAgICB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpKSk7
CisKKyAgICAgICAgLy8gQ2xlYXIgZXJyb3IgbWFzayBmaXJzdCB0byBncmVlbiAoZmFzdGVyIHRo
aXMgd2F5KS4KKyAgICAgICAgZXJyb3JNYXNrLmNsZWFyKFswLjAsIDEuMCwgMC4wLCAxLjBdKTsK
KworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBhbGxPayA9IHRydWU7CisKKyAg
ICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZWZlcmVuY2UuZ2V0SGVpZ2h0KCk7IHkrKykgewor
ICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByZWZlcmVuY2UuZ2V0V2lkdGgoKTsgeCsr
KSB7CisgICAgICAgICAgICAgICAgaWYgKCF0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5jb21wYXJl
UGl4ZWxSR0JBOChyZWZlcmVuY2UsIHJlc3VsdCwgdGhyZXNob2xkLCB4LCB5KSAmJgorICAgICAg
ICAgICAgICAgICAgICAhdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuY29tcGFyZVBpeGVsUkdCQTgo
cmVzdWx0LCByZWZlcmVuY2UsIHRocmVzaG9sZCwgeCwgeSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYWxsT2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVs
KFsxLjAsIDAuMCwgMC4wLCAxLjBdLCB4LCB5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWxsT2s7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBy
ZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vz
c30gcmVzdWx0CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBl
cnJvck1hc2sKKyAgICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdCQX0gdGhyZXNob2xkCisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5i
aWxpbmVhckNvbXBhcmUgPSBmdW5jdGlvbihyZWZlcmVuY2UsIHJlc3VsdCwgZXJyb3JNYXNrLCB0
aHJlc2hvbGQpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhyZXN1bHQuZ2V0V2lkdGgoKSA9
PSByZWZlcmVuY2UuZ2V0V2lkdGgoKSAmJiByZXN1bHQuZ2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNl
LmdldEhlaWdodCgpICYmIHJlc3VsdC5nZXREZXB0aCgpID09IHJlZmVyZW5jZS5nZXREZXB0aCgp
LAorICAgICAgICAgICAgJ1JlZmVyZW5jZSBhbmQgcmVzdWx0IGltYWdlcyBoYXZlIGRpZmZlcmVu
dCBkaW1lbnNpb25zJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
ZXJyb3JNYXNrLmdldFdpZHRoKCkgPT0gcmVmZXJlbmNlLmdldFdpZHRoKCkgJiYgZXJyb3JNYXNr
LmdldEhlaWdodCgpID09IHJlZmVyZW5jZS5nZXRIZWlnaHQoKSAmJiBlcnJvck1hc2suZ2V0RGVw
dGgoKSA9PSByZWZlcmVuY2UuZ2V0RGVwdGgoKSwKKyAgICAgICAgICAgICdSZWZlcmVuY2UgYW5k
IGVycm9yIG1hc2sgaW1hZ2VzIGhhdmUgZGlmZmVyZW50IGRpbWVuc2lvbnMnLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNFcXVhbCA9IHJlZmVy
ZW5jZS5nZXRGb3JtYXQoKS5pc0VxdWFsKAorICAgICAgICAgICAgbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCgKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JB
LAorICAgICAgICAgICAgICAgIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCkpOwor
ICAgICAgICBpZiAoaXNFcXVhbCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJl
LlJHQkE4Vmlld30gKi8gdmFyIHJlZlZpZXcgPSBuZXcgdGN1VGV4dHVyZS5SR0JBOFZpZXcocmVm
ZXJlbmNlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5SR0JBOFZpZXd9ICov
IHZhciByZXNWaWV3ID0gbmV3IHRjdVRleHR1cmUuUkdCQThWaWV3KHJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm4gdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuYmlsaW5lYXJDb21wYXJlUkdCQTgo
cmVmVmlldywgcmVzVmlldywgZXJyb3JNYXNrLCB0aHJlc2hvbGQpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZm9ybWF0IGZvciBiaWxp
bmVhciBjb21wYXJpc29uJyk7CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24v
dGN1Q29tcHJlc3NlZFRleHR1cmUuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1Q29tcHJlc3NlZFRleHR1cmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTMwOWY4MWNmZGFmYzU1Y2JkNjYxZTIzYjE0M2JmNGU5MTgzMTZhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VDb21wcmVzc2VkVGV4dHVyZS5qcwpAQCAt
MCwwICsxLDk2NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0
eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQor
ICogXGJyaWVmIE1hcCB0Y3U6OlRleHR1cmVGb3JtYXQgdG8gR0wgcGl4ZWwgdHJhbnNmZXIgZm9y
bWF0LgorICoKKyAqIE1hcHMgZ2VuZXJpYyB0ZXh0dXJlIGZvcm1hdCBkZXNjcmlwdGlvbiB0byBH
TCBwaXhlbCB0cmFuc2ZlciBmb3JtYXQuCisgKiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCB0aHJv
d3MgdGN1OjpJbnRlcm5hbEVycm9yLgorICoKKyAqIFxwYXJhbSB0ZXhGb3JtYXQgR2VuZXJpYyB0
ZXh0dXJlIGZvcm1hdC4KKyAqIFxyZXR1cm4gR0wgcGl4ZWwgdHJhbnNmZXIgZm9ybWF0LgorICov
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5j
b21tb24udGN1Q29tcHJlc3NlZFRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlTWF0aCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCit2YXIgdGN1Q29tcHJlc3Nl
ZFRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUNvbXByZXNzZWRUZXh0dXJlOwordmFyIHRj
dVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7Cit2YXIgZGVNYXRoID0gZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworCisgICAgdmFyIERFX0FTU0VSVCA9IGZ1bmN0
aW9uKHgpIHsKKyAgICAgICAgaWYgKCF4KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdB
c3NlcnQgZmFpbGVkJyk7CisgICAgfTsKKworLyoqCisgKiBAZW51bQorICovCit0Y3VDb21wcmVz
c2VkVGV4dHVyZS5Gb3JtYXQgPSB7CisgICAgRVRDMV9SR0I4OiAwLAorICAgIEVBQ19SMTE6IDEs
CisgICAgRUFDX1NJR05FRF9SMTE6IDIsCisgICAgRUFDX1JHMTE6IDMsCisgICAgRUFDX1NJR05F
RF9SRzExOiA0LAorICAgIEVUQzJfUkdCODogNSwKKyAgICBFVEMyX1NSR0I4OiA2LAorICAgIEVU
QzJfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExOiA3LAorICAgIEVUQzJfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMTogOCwKKyAgICBFVEMyX0VBQ19SR0JBODogOSwKKyAgICBFVEMyX0VBQ19TUkdC
OF9BTFBIQTg6IDEwLAorCisgICAgQVNUQ180eDRfUkdCQTogMTEsCisgICAgQVNUQ181eDRfUkdC
QTogMTIsCisgICAgQVNUQ181eDVfUkdCQTogMTMsCisgICAgQVNUQ182eDVfUkdCQTogMTQsCisg
ICAgQVNUQ182eDZfUkdCQTogMTUsCisgICAgQVNUQ184eDVfUkdCQTogMTYsCisgICAgQVNUQ184
eDZfUkdCQTogMTcsCisgICAgQVNUQ184eDhfUkdCQTogMTgsCisgICAgQVNUQ18xMHg1X1JHQkE6
IDE5LAorICAgIEFTVENfMTB4Nl9SR0JBOiAyMCwKKyAgICBBU1RDXzEweDhfUkdCQTogMjEsCisg
ICAgQVNUQ18xMHgxMF9SR0JBOiAyMiwKKyAgICBBU1RDXzEyeDEwX1JHQkE6IDIzLAorICAgIEFT
VENfMTJ4MTJfUkdCQTogMjQsCisgICAgQVNUQ180eDRfU1JHQjhfQUxQSEE4OiAyNSwKKyAgICBB
U1RDXzV4NF9TUkdCOF9BTFBIQTg6IDI2LAorICAgIEFTVENfNXg1X1NSR0I4X0FMUEhBODogMjcs
CisgICAgQVNUQ182eDVfU1JHQjhfQUxQSEE4OiAyOCwKKyAgICBBU1RDXzZ4Nl9TUkdCOF9BTFBI
QTg6IDI5LAorICAgIEFTVENfOHg1X1NSR0I4X0FMUEhBODogMzAsCisgICAgQVNUQ184eDZfU1JH
QjhfQUxQSEE4OiAzMSwKKyAgICBBU1RDXzh4OF9TUkdCOF9BTFBIQTg6IDMyLAorICAgIEFTVENf
MTB4NV9TUkdCOF9BTFBIQTg6IDMzLAorICAgIEFTVENfMTB4Nl9TUkdCOF9BTFBIQTg6IDM0LAor
ICAgIEFTVENfMTB4OF9TUkdCOF9BTFBIQTg6IDM1LAorICAgIEFTVENfMTB4MTBfU1JHQjhfQUxQ
SEE4OiAzNiwKKyAgICBBU1RDXzEyeDEwX1NSR0I4X0FMUEhBODogMzcsCisgICAgQVNUQ18xMngx
Ml9TUkdCOF9BTFBIQTg6IDM4Cit9OworCit0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVw
ID0gZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiBNYXRoLmZsb29yKGEgLyBiKSArICgoYSAl
IGIpID8gMSA6IDApOworfTsKKwordGN1Q29tcHJlc3NlZFRleHR1cmUuaXNFdGNGb3JtYXQgPSBm
dW5jdGlvbihmbXQpIHsKKyAgICAvLyBXZWJHTDIgc3VwcG9ydHMgRVRDMiBhbmQgRUFDIGZvcm1h
dHMKKyAgICBzd2l0Y2ggKGZtdCkgeworICAgICAgICAvLyBjYXNlIHRjdUNvbXByZXNzZWRUZXh0
dXJlLkZvcm1hdC5FVEMxX1JHQjg6CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUu
Rm9ybWF0LkVBQ19SMTE6CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0
LkVBQ19TSUdORURfUjExOgorICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1h
dC5FQUNfUkcxMToKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRUFD
X1NJR05FRF9SRzExOgorICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5F
VEMyX1JHQjg6CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJf
U1JHQjg6CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExOgorICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJl
LkZvcm1hdC5FVEMyX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTE6CisgICAgICAgIGNhc2UgdGN1
Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfRUFDX1JHQkE4OgorICAgICAgICBjYXNlIHRj
dUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX0VBQ19TUkdCOF9BTFBIQTg6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK307CisKK3RjdUNvbXByZXNzZWRUZXh0dXJlLmV0Y0RlY29tcHJlc3NJ
bnRlcm5hbCA9IGZ1bmN0aW9uKCkgeworCit2YXIgRVRDMl9CTE9DS19XSURUSCA9IDQ7Cit2YXIg
RVRDMl9CTE9DS19IRUlHSFQgPSA0OwordmFyIEVUQzJfVU5DT01QUkVTU0VEX1BJWEVMX1NJWkVf
QTggPSAxOwordmFyIEVUQzJfVU5DT01QUkVTU0VEX1BJWEVMX1NJWkVfUjExID0gMjsKK3ZhciBF
VEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9TSVpFX1JHMTEgPSA0OwordmFyIEVUQzJfVU5DT01QUkVT
U0VEX1BJWEVMX1NJWkVfUkdCOCA9IDM7Cit2YXIgRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0la
RV9SR0JBOCA9IDQ7Cit2YXIgRVRDMl9VTkNPTVBSRVNTRURfQkxPQ0tfU0laRV9BOCA9IEVUQzJf
QkxPQ0tfV0lEVEggKiBFVEMyX0JMT0NLX0hFSUdIVCAqIEVUQzJfVU5DT01QUkVTU0VEX1BJWEVM
X1NJWkVfQTg7Cit2YXIgRVRDMl9VTkNPTVBSRVNTRURfQkxPQ0tfU0laRV9SMTEgPSBFVEMyX0JM
T0NLX1dJRFRIICogRVRDMl9CTE9DS19IRUlHSFQgKiBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9T
SVpFX1IxMTsKK3ZhciBFVEMyX1VOQ09NUFJFU1NFRF9CTE9DS19TSVpFX1JHMTEgPSBFVEMyX0JM
T0NLX1dJRFRIICogRVRDMl9CTE9DS19IRUlHSFQgKiBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9T
SVpFX1JHMTE7Cit2YXIgRVRDMl9VTkNPTVBSRVNTRURfQkxPQ0tfU0laRV9SR0I4ID0gRVRDMl9C
TE9DS19XSURUSCAqIEVUQzJfQkxPQ0tfSEVJR0hUICogRVRDMl9VTkNPTVBSRVNTRURfUElYRUxf
U0laRV9SR0I4OwordmFyIEVUQzJfVU5DT01QUkVTU0VEX0JMT0NLX1NJWkVfUkdCQTggPSBFVEMy
X0JMT0NLX1dJRFRIICogRVRDMl9CTE9DS19IRUlHSFQgKiBFVEMyX1VOQ09NUFJFU1NFRF9QSVhF
TF9TSVpFX1JHQkE4OworCisvKioKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IHNyYyBTb3VyY2Ug
QXJyYXlCdWZmZXIKKyAqIEByZXR1cm4ge1VpbnQ4QXJyYXl9CisgKi8KK3ZhciBnZXQ2NEJpdEJs
b2NrID0gZnVuY3Rpb24oc3JjLCBibG9ja05keCkgeworICAgIHZhciBibG9jayA9IG5ldyBVaW50
OEFycmF5KHNyYywgYmxvY2tOZHggKiA4LCA4KTsKKyAgICByZXR1cm4gYmxvY2s7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IHNyYyBTb3VyY2UgQXJyYXlCdWZmZXIKKyAqIFJl
dHVybiB0aGUgZmlyc3QgNjQgYml0cyBvZiBhIDEyOCBiaXQgYmxvY2suCisgKi8KK3ZhciBnZXQx
MjhCaXRCbG9ja1N0YXJ0ID0gZnVuY3Rpb24oc3JjLCBibG9ja05keCkgeworICAgIHJldHVybiBn
ZXQ2NEJpdEJsb2NrKHNyYywgMiAqIGJsb2NrTmR4KTsKK307CisKKy8qKgorICogQHBhcmFtIHtB
cnJheUJ1ZmZlcn0gc3JjIFNvdXJjZSBBcnJheUJ1ZmZlcgorICogUmV0dXJuIHRoZSBsYXN0IDY0
IGJpdHMgb2YgYSAxMjggYml0IGJsb2NrLgorICovCit2YXIgZ2V0MTI4Qml0QmxvY2tFbmQgPSBm
dW5jdGlvbihzcmMsIGJsb2NrTmR4KSB7CisgICAgcmV0dXJuIGdldDY0Qml0QmxvY2soc3JjLCAy
ICogYmxvY2tOZHggKyAxKTsKK307CisKK3ZhciBtYXNrOCA9IGZ1bmN0aW9uKHNyYywgbG93LCBo
aWdoKSB7CisgICAgaWYgKGxvdyA+IDcgfHwgaGlnaCA8IDApCisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICB2YWx1ZTogMCwKKyAgICAgICAgICAgIGJpdHM6IDAKKyAgICAgICAgfTsKKwor
ICAgIHZhciBudW1CaXRzID0gaGlnaCAtIGxvdyArIDE7CisgICAgdmFyIG1hc2sgPSAoMSA8PCBu
dW1CaXRzKSAtIDE7CisKKyAgICByZXR1cm4geworICAgICAgICB2YWx1ZTogKHNyYyA+PiBsb3cp
ICYgbWFzaywKKyAgICAgICAgYml0czogbnVtQml0cworICAgIH07Cit9OworCit2YXIgZ2V0Qml0
czY0ID0gZnVuY3Rpb24oc3JjLCBsb3csIGhpZ2gpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAg
ICB2YXIgYml0cyA9IDA7CisgICAgdmFyIGxvd0luZGV4ID0gbG93OworICAgIHZhciBoaWdoSW5k
ZXggPSBoaWdoOworICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgeworICAgICAgICB2
YXIgdiA9IG1hc2s4KHNyY1tpXSwgTWF0aC5tYXgoMCwgbG93SW5kZXgpLCBNYXRoLm1pbig3LCBo
aWdoSW5kZXgpKTsKKyAgICAgICAgbG93SW5kZXggPSBsb3dJbmRleCAtIDg7CisgICAgICAgIGhp
Z2hJbmRleCA9IGhpZ2hJbmRleCAtIDg7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8ICh2LnZh
bHVlIDw8IGJpdHMpOworICAgICAgICBiaXRzID0gdi5iaXRzOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfTsKKwordmFyIGdldEJpdDY0ID0gZnVuY3Rpb24oc3JjLCBiaXQpIHsKKyAgICBy
ZXR1cm4gZ2V0Qml0czY0KHNyYywgYml0LCBiaXQpOworfTsKKwordmFyIGV4dGVuZFNpZ25lZDNU
bzggPSBmdW5jdGlvbihzcmMpIHsKKyAgICB2YXIgaXNOZWcgPSAoc3JjICYgKDEgPDwgMikpICE9
IDA7CisgICAgdmFyIHZhbCA9IGlzTmVnID8gc3JjIC0gOCA6IHNyYzsKKyAgICByZXR1cm4gdmFs
OworfTsKKwordmFyIGV4dGVuZDRUbzggPSBmdW5jdGlvbihzcmMpIHsKKyAgICByZXR1cm4gc3Jj
ICogMjU1IC8gMTU7Cit9OworCit2YXIgZXh0ZW5kNVRvOCA9IGZ1bmN0aW9uKHNyYykgeworICAg
IHJldHVybiBzcmMgKiAyNTUgLyAzMTsKK307CisKK3ZhciBleHRlbmQ2VG84ID0gZnVuY3Rpb24o
c3JjKSB7CisgICAgcmV0dXJuIHNyYyAqIDI1NSAvIDYzOworfTsKKwordmFyIGV4dGVuZDdUbzgg
PSBmdW5jdGlvbihzcmMpIHsKKyAgICByZXR1cm4gc3JjICogMjU1IC8gMTI3OworfTsKKwordmFy
IGV4dGVuZDExVG8xNiA9IGZ1bmN0aW9uKHNyYykgeworICAgIHJldHVybiBzcmMgKiAzMi4wMTUx
NDQ7Cit9OworCit2YXIgZXh0ZW5kMTFUbzE2V2l0aFNpZ24gPSBmdW5jdGlvbihzcmMpIHsKKyAg
ICBpZiAoc3JjIDwgMCkKKyAgICAgICAgcmV0dXJuIC1leHRlbmQxMVRvMTYoLXNyYyk7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gZXh0ZW5kMTFUbzE2KHNyYyk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7IChVaW50MTZBcnJheXxJbnQxNkFycmF5KSB9IGRzdAorICogQHBhcmFtIHtVaW50OEFy
cmF5fSBzcmMKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2lnbmVkTW9kZQorICovCit2YXIgZGVjb21w
cmVzc0VBQzExQmxvY2sgPSBmdW5jdGlvbihkc3QsIHNyYywgc2lnbmVkTW9kZSkgeworICAgIHZh
ciBtb2RpZmllclRhYmxlID0gWworICAgICAgICBbLTMsIC02LCAtOSwgLTE1LCAyLCA1LCA4LCAx
NF0sCisgICAgICAgIFstMywgLTcsIC0xMCwgLTEzLCAyLCA2LCA5LCAxMl0sCisgICAgICAgIFst
MiwgLTUsIC04LCAtMTMsIDEsIDQsIDcsIDEyXSwKKyAgICAgICAgWy0yLCAtNCwgLTYsIC0xMywg
MSwgMywgNSwgMTJdLAorICAgICAgICBbLTMsIC02LCAtOCwgLTEyLCAyLCA1LCA3LCAxMV0sCisg
ICAgICAgIFstMywgLTcsIC05LCAtMTEsIDIsIDYsIDgsIDEwXSwKKyAgICAgICAgWy00LCAtNywg
LTgsIC0xMSwgMywgNiwgNywgMTBdLAorICAgICAgICBbLTMsIC01LCAtOCwgLTExLCAyLCA0LCA3
LCAxMF0sCisgICAgICAgIFstMiwgLTYsIC04LCAtMTAsIDEsIDUsIDcsIDldLAorICAgICAgICBb
LTIsIC01LCAtOCwgLTEwLCAxLCA0LCA3LCA5XSwKKyAgICAgICAgWy0yLCAtNCwgLTgsIC0xMCwg
MSwgMywgNywgOV0sCisgICAgICAgIFstMiwgLTUsIC03LCAtMTAsIDEsIDQsIDYsIDldLAorICAg
ICAgICBbLTMsIC00LCAtNywgLTEwLCAyLCAzLCA2LCA5XSwKKyAgICAgICAgWy0xLCAtMiwgLTMs
IC0xMCwgMCwgMSwgMiwgOV0sCisgICAgICAgIFstNCwgLTYsIC04LCAtOSwgMywgNSwgNywgOF0s
CisgICAgICAgIFstMywgLTUsIC03LCAtOSwgMiwgNCwgNiwgOF0KKyAgICBdOworCisgICAgdmFy
IG11bHRpcGxpZXIgPSBnZXRCaXRzNjQoc3JjLCA1MiwgNTUpOworICAgIHZhciB0YWJsZU5keCA9
IGdldEJpdHM2NChzcmMsIDQ4LCA1MSk7CisgICAgdmFyIGJhc2VDb2Rld29yZCA9IGdldEJpdHM2
NChzcmMsIDU2LCA2Myk7CisKKyAgICBpZiAoc2lnbmVkTW9kZSkgeworICAgICAgICBpZiAoYmFz
ZUNvZGV3b3JkID4gMTI3KQorICAgICAgICAgICAgYmFzZUNvZGV3b3JkIC09IDI1NjsKKyAgICAg
ICAgaWYgKGJhc2VDb2Rld29yZCA9PSAtMTI4KQorICAgICAgICAgICAgYmFzZUNvZGV3b3JkID0g
LTEyNzsKKyAgICB9CisKKyAgICB2YXIgcGl4ZWxOZHggPSAwOworICAgIGZvciAodmFyIHggPSAw
OyB4IDwgRVRDMl9CTE9DS19XSURUSDsgeCsrKSB7CisgICAgICAgIGZvciAodmFyIHkgPSAwOyB5
IDwgRVRDMl9CTE9DS19IRUlHSFQ7IHkrKykgeworICAgICAgICAgICAgIHZhciBkc3RPZmZzZXQg
PSAoeSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4KTsKKyAgICAgICAgICAgICB2YXIgcGl4ZWxCaXRO
ZHggPSA0NSAtIDMgKiBwaXhlbE5keDsKKyAgICAgICAgICAgICB2YXIgbW9kaWZpZXJOZHggPSAo
Z2V0Qml0NjQoc3JjLCBwaXhlbEJpdE5keCArIDIpIDw8IDIpIHwgKGdldEJpdDY0KHNyYywgcGl4
ZWxCaXROZHggKyAxKSA8PCAxKSB8IGdldEJpdDY0KHNyYywgcGl4ZWxCaXROZHgpOworICAgICAg
ICAgICAgIHZhciBtb2RpZmllciA9IG1vZGlmaWVyVGFibGVbdGFibGVOZHhdW21vZGlmaWVyTmR4
XTsKKworICAgICAgICAgICAgaWYgKHNpZ25lZE1vZGUpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbGllciAhPSAwKQorICAgICAgICAgICAgICAgICAgICBkc3RbZHN0T2Zmc2V0XSA9IGRl
TWF0aC5jbGFtcChiYXNlQ29kZXdvcmQgKiA4ICsgbXVsdGlwbGllciAqIG1vZGlmaWVyICogOCwg
LTEwMjMsIDEwMjMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ZHN0W2RzdE9mZnNldF0gPSBkZU1hdGguY2xhbXAoYmFzZUNvZGV3b3JkICogOCArIG1vZGlmaWVy
LCAtMTAyMywgMTAyMyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
IChtdWx0aXBsaWVyICE9IDApCisgICAgICAgICAgICAgICAgICAgIGRzdFtkc3RPZmZzZXRdID0g
ZGVNYXRoLmNsYW1wKGJhc2VDb2Rld29yZCAqIDggKyA0ICsgbXVsdGlwbGllciAqIG1vZGlmaWVy
ICogOCwgMCwgMjA0Nyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBkc3RbZHN0T2Zmc2V0XSA9IGRlTWF0aC5jbGFtcChiYXNlQ29kZXdvcmQgKiA4ICsgNCArIG1v
ZGlmaWVyLCAwLCAyMDQ3KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBpeGVsTmR4Kys7
CisgICAgICAgIH0KKyAgICB9Cit9OworCit2YXIgZGVjb21wcmVzc0VBQ19SMTEgPSBmdW5jdGlv
bigvKmNvbnN0IHRjdTo6UGl4ZWxCdWZmZXJBY2Nlc3MmKi8gZHN0LCB3aWR0aCwgaGVpZ2h0LCBz
cmMsIHNpZ25lZE1vZGUpIHsKKyAgICAvKiogQGNvbnN0ICovIHZhciBudW1CbG9ja3NYID0gdGN1
Q29tcHJlc3NlZFRleHR1cmUuZGl2Um91bmRVcCh3aWR0aCwgNCk7CisgICAgLyoqIEBjb25zdCAq
LyB2YXIgbnVtQmxvY2tzWSA9IHRjdUNvbXByZXNzZWRUZXh0dXJlLmRpdlJvdW5kVXAoaGVpZ2h0
LCA0KTsKKyAgICB2YXIgZHN0UHRyOworICAgIHZhciBkc3RSb3dQaXRjaCA9IGRzdC5nZXRSb3dQ
aXRjaCgpOworICAgIHZhciBkc3RQaXhlbFNpemUgPSBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9T
SVpFX1IxMTsKKyAgICB2YXIgdW5jb21wcmVzc2VkQmxvY2tBcnJheSA9IG5ldyBBcnJheUJ1ZmZl
cihFVEMyX1VOQ09NUFJFU1NFRF9CTE9DS19TSVpFX1IxMSk7CisgICAgdmFyIHVuY29tcHJlc3Nl
ZEJsb2NrMTY7CisgICAgaWYgKHNpZ25lZE1vZGUpIHsKKyAgICAgICAgZHN0UHRyID0gbmV3IElu
dDE2QXJyYXkoZHN0Lm1fZGF0YSk7CisgICAgICAgIHVuY29tcHJlc3NlZEJsb2NrMTYgPSBuZXcg
SW50MTZBcnJheSh1bmNvbXByZXNzZWRCbG9ja0FycmF5KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkc3RQdHIgPSBuZXcgVWludDE2QXJyYXkoZHN0Lm1fZGF0YSk7CisgICAgICAgIHVuY29tcHJl
c3NlZEJsb2NrMTYgPSBuZXcgVWludDE2QXJyYXkodW5jb21wcmVzc2VkQmxvY2tBcnJheSk7Cisg
ICAgfQorCisgICAgZm9yICh2YXIgYmxvY2tZID0gMDsgYmxvY2tZIDwgbnVtQmxvY2tzWTsgYmxv
Y2tZKyspIHsKKyAgICAgICAgZm9yICh2YXIgYmxvY2tYID0gMDsgYmxvY2tYIDwgbnVtQmxvY2tz
WDsgYmxvY2tYKyspIHsKKyAgICAgICAgICAgIC8qY29uc3QgZGVVaW50NjQqLyB2YXIgY29tcHJl
c3NlZEJsb2NrID0gZ2V0NjRCaXRCbG9jayhzcmMsIGJsb2NrWSAqIG51bUJsb2Nrc1ggKyBibG9j
a1gpOworCisgICAgICAgICAgICAvLyBEZWNvbXByZXNzLgorICAgICAgICAgICAgZGVjb21wcmVz
c0VBQzExQmxvY2sodW5jb21wcmVzc2VkQmxvY2sxNiwgY29tcHJlc3NlZEJsb2NrLCBzaWduZWRN
b2RlKTsKKworICAgICAgICAgICAgLy8gV3JpdGUgdG8gZHN0LgorICAgICAgICAgICAgdmFyIGJh
c2VYID0gYmxvY2tYICogRVRDMl9CTE9DS19XSURUSDsKKyAgICAgICAgICAgIHZhciBiYXNlWSA9
IGJsb2NrWSAqIEVUQzJfQkxPQ0tfSEVJR0hUOworICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7
IHkgPCBNYXRoLm1pbihFVEMyX0JMT0NLX0hFSUdIVCwgaGVpZ2h0IC0gYmFzZVkpOyB5KyspIHsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IE1hdGgubWluKEVUQzJfQkxPQ0tf
V0lEVEgsIHdpZHRoIC0gYmFzZVgpOyB4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgREVfQVNT
RVJUKEVUQzJfVU5DT01QUkVTU0VEX1BJWEVMX1NJWkVfUjExID09IDIpOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChzaWduZWRNb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
c3JjSW5kZXggPSB5ICogRVRDMl9CTE9DS19XSURUSCArIHg7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgZHN0SW5kZXggPSAoYmFzZVkgKyB5KSAqIGRzdFJvd1BpdGNoIC8gZHN0UGl4ZWxT
aXplICsgYmFzZVggKyB4OworCisgICAgICAgICAgICAgICAgICAgICAgICBkc3RQdHJbZHN0SW5k
ZXhdID0gZXh0ZW5kMTFUbzE2V2l0aFNpZ24odW5jb21wcmVzc2VkQmxvY2sxNltzcmNJbmRleF0p
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNyY0luZGV4ID0geSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4OworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGRzdEluZGV4ID0gKGJhc2VZICsgeSkgKiBkc3RSb3dQaXRjaCAvIGRzdFBp
eGVsU2l6ZSArIGJhc2VYICsgeDsKKworICAgICAgICAgICAgICAgICAgICAgICAgZHN0UHRyW2Rz
dEluZGV4XSA9IGV4dGVuZDExVG8xNih1bmNvbXByZXNzZWRCbG9jazE2W3NyY0luZGV4XSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCit2YXIgZGVjb21wcmVzc0VBQ19SRzExID0gZnVuY3Rpb24o
Lypjb25zdCB0Y3U6OlBpeGVsQnVmZmVyQWNjZXNzJiovIGRzdCwgd2lkdGgsIGhlaWdodCwgc3Jj
LCBzaWduZWRNb2RlKSB7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgbnVtQmxvY2tzWCA9IHRjdUNv
bXByZXNzZWRUZXh0dXJlLmRpdlJvdW5kVXAod2lkdGgsIDQpOworICAgIC8qKiBAY29uc3QgKi8g
dmFyIG51bUJsb2Nrc1kgPSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVwKGhlaWdodCwg
NCk7CisgICAgdmFyIGRzdFB0cjsKKyAgICB2YXIgZHN0Um93UGl0Y2ggPSBkc3QuZ2V0Um93UGl0
Y2goKTsKKyAgICB2YXIgZHN0UGl4ZWxTaXplID0gRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0la
RV9SRzExOworICAgIHZhciB1bmNvbXByZXNzZWRCbG9ja0FycmF5UiA9IG5ldyBBcnJheUJ1ZmZl
cihFVEMyX1VOQ09NUFJFU1NFRF9CTE9DS19TSVpFX1IxMSk7CisgICAgdmFyIHVuY29tcHJlc3Nl
ZEJsb2NrQXJyYXlHID0gbmV3IEFycmF5QnVmZmVyKEVUQzJfVU5DT01QUkVTU0VEX0JMT0NLX1NJ
WkVfUjExKTsKKyAgICB2YXIgdW5jb21wcmVzc2VkQmxvY2tSMTY7CisgICAgdmFyIHVuY29tcHJl
c3NlZEJsb2NrRzE2OworICAgIGlmIChzaWduZWRNb2RlKSB7CisgICAgICAgIGRzdFB0ciA9IG5l
dyBJbnQxNkFycmF5KGRzdC5tX2RhdGEpOworICAgICAgICB1bmNvbXByZXNzZWRCbG9ja1IxNiA9
IG5ldyBJbnQxNkFycmF5KHVuY29tcHJlc3NlZEJsb2NrQXJyYXlSKTsKKyAgICAgICAgdW5jb21w
cmVzc2VkQmxvY2tHMTYgPSBuZXcgSW50MTZBcnJheSh1bmNvbXByZXNzZWRCbG9ja0FycmF5Ryk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHN0UHRyID0gbmV3IFVpbnQxNkFycmF5KGRzdC5tX2Rh
dGEpOworICAgICAgICB1bmNvbXByZXNzZWRCbG9ja1IxNiA9IG5ldyBVaW50MTZBcnJheSh1bmNv
bXByZXNzZWRCbG9ja0FycmF5Uik7CisgICAgICAgIHVuY29tcHJlc3NlZEJsb2NrRzE2ID0gbmV3
IFVpbnQxNkFycmF5KHVuY29tcHJlc3NlZEJsb2NrQXJyYXlHKTsKKyAgICB9CisKKyAgICBmb3Ig
KHZhciBibG9ja1kgPSAwOyBibG9ja1kgPCBudW1CbG9ja3NZOyBibG9ja1krKykgeworICAgICAg
ICBmb3IgKHZhciBibG9ja1ggPSAwOyBibG9ja1ggPCBudW1CbG9ja3NYOyBibG9ja1grKykgewor
ICAgICAgICAgICAgLypjb25zdCBkZVVpbnQ2NCovIHZhciBjb21wcmVzc2VkQmxvY2tSID0gZ2V0
MTI4Qml0QmxvY2tTdGFydChzcmMsIGJsb2NrWSAqIG51bUJsb2Nrc1ggKyBibG9ja1gpOworICAg
ICAgICAgICAgLypjb25zdCBkZVVpbnQ2NCovIHZhciBjb21wcmVzc2VkQmxvY2tHID0gZ2V0MTI4
Qml0QmxvY2tFbmQoc3JjLCBibG9ja1kgKiBudW1CbG9ja3NYICsgYmxvY2tYKTsKKworICAgICAg
ICAgICAgLy8gRGVjb21wcmVzcy4KKyAgICAgICAgICAgIGRlY29tcHJlc3NFQUMxMUJsb2NrKHVu
Y29tcHJlc3NlZEJsb2NrUjE2LCBjb21wcmVzc2VkQmxvY2tSLCBzaWduZWRNb2RlKTsKKyAgICAg
ICAgICAgIGRlY29tcHJlc3NFQUMxMUJsb2NrKHVuY29tcHJlc3NlZEJsb2NrRzE2LCBjb21wcmVz
c2VkQmxvY2tHLCBzaWduZWRNb2RlKTsKKworICAgICAgICAgICAgLy8gV3JpdGUgdG8gZHN0Lgor
ICAgICAgICAgICAgdmFyIGJhc2VYID0gYmxvY2tYICogRVRDMl9CTE9DS19XSURUSDsKKyAgICAg
ICAgICAgIHZhciBiYXNlWSA9IGJsb2NrWSAqIEVUQzJfQkxPQ0tfSEVJR0hUOworICAgICAgICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCBNYXRoLm1pbihFVEMyX0JMT0NLX0hFSUdIVCwgaGVpZ2h0
IC0gYmFzZVkpOyB5KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IE1h
dGgubWluKEVUQzJfQkxPQ0tfV0lEVEgsIHdpZHRoIC0gYmFzZVgpOyB4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgREVfQVNTRVJUKEVUQzJfVU5DT01QUkVTU0VEX1BJWEVMX1NJWkVfUkcxMSA9
PSA0KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmVkTW9kZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHNyY0luZGV4ID0geSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4Owor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRzdEluZGV4ID0gMiAqICgoYmFzZVkgKyB5KSAq
IGRzdFJvd1BpdGNoIC8gZHN0UGl4ZWxTaXplICsgYmFzZVggKyB4KTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZHN0UHRyW2RzdEluZGV4XSA9IGV4dGVuZDExVG8xNldpdGhTaWduKHVuY29t
cHJlc3NlZEJsb2NrUjE2W3NyY0luZGV4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkc3RQ
dHJbZHN0SW5kZXggKyAxXSA9IGV4dGVuZDExVG8xNldpdGhTaWduKHVuY29tcHJlc3NlZEJsb2Nr
RzE2W3NyY0luZGV4XSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3JjSW5kZXggPSB5ICogRVRDMl9CTE9DS19XSURUSCArIHg7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHN0SW5kZXggPSAyICogKChiYXNlWSArIHkpICog
ZHN0Um93UGl0Y2ggLyBkc3RQaXhlbFNpemUgKyBiYXNlWCArIHgpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBkc3RQdHJbZHN0SW5kZXhdID0gZXh0ZW5kMTFUbzE2KHVuY29tcHJlc3NlZEJs
b2NrUjE2W3NyY0luZGV4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkc3RQdHJbZHN0SW5k
ZXggKyAxXSA9IGV4dGVuZDExVG8xNih1bmNvbXByZXNzZWRCbG9ja0cxNltzcmNJbmRleF0pOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfTsKKworLy8gaWYgYWxwaGFNb2RlIGlzIHRydWUsIGRvIFBVTkNI
VEhST1VHSCBhbmQgc3RvcmUgYWxwaGEgdG8gYWxwaGFEc3Q7IG90aGVyd2lzZSBkbyBvcmRpbmFy
eSBFVEMyIFJHQjguCisvKioKKyAqIEBwYXJhbSB7VWludDhBcnJheX0gZHN0IERlc3RpbmF0aW9u
IGFycmF5CisgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHNyYyBTb3VyY2UgYXJyYXkKKyAqIEBwYXJh
bSB7VWludDhBcnJheX0gYWxwaGFEc3QgT3B0aW9uYWwgQWxwaGEgb3V0cHV0IGNoYW5uZWwKKyAq
LwordmFyIGRlY29tcHJlc3NFVEMyQmxvY2sgPSBmdW5jdGlvbihkc3QsIHNyYywgYWxwaGFEc3Qs
IGFscGhhTW9kZSkgeworICAgIC8qKgorICAgICAqIGVudW0KKyAgICAgKi8KKyAgICB2YXIgRXRj
Mk1vZGUgPSB7CisgICAgICAgIE1PREVfSU5ESVZJRFVBTDogMCwKKyAgICAgICAgTU9ERV9ESUZG
RVJFTlRJQUw6IDEsCisgICAgICAgIE1PREVfVDogMiwKKyAgICAgICAgTU9ERV9IOiAzLAorICAg
ICAgICBNT0RFX1BMQU5BUjogNAorICAgIH07CisKKyAgICB2YXIgZGlmZk9wYXF1ZUJpdCA9IGdl
dEJpdDY0KHNyYywgMzMpOworICAgIHZhciBzZWxCUiA9IGdldEJpdHM2NChzcmMsIDU5LCA2Myk7
IC8vIDUgYml0cy4KKyAgICB2YXIgc2VsQkcgPSBnZXRCaXRzNjQoc3JjLCA1MSwgNTUpOworICAg
IHZhciBzZWxCQiA9IGdldEJpdHM2NChzcmMsIDQzLCA0Nyk7CisgICAgdmFyIHNlbERSID0gZXh0
ZW5kU2lnbmVkM1RvOChnZXRCaXRzNjQoc3JjLCA1NiwgNTgpKTsgLy8gMyBiaXRzLgorICAgIHZh
ciBzZWxERyA9IGV4dGVuZFNpZ25lZDNUbzgoZ2V0Qml0czY0KHNyYywgNDgsIDUwKSk7CisgICAg
dmFyIHNlbERCID0gZXh0ZW5kU2lnbmVkM1RvOChnZXRCaXRzNjQoc3JjLCA0MCwgNDIpKTsKKwor
ICAgIHZhciBtb2RlOworCisgICAgaWYgKCFhbHBoYU1vZGUgJiYgZGlmZk9wYXF1ZUJpdCA9PSAw
KQorICAgICAgICBtb2RlID0gRXRjMk1vZGUuTU9ERV9JTkRJVklEVUFMOworICAgIGVsc2UgaWYg
KCFkZU1hdGguZGVJblJhbmdlMzIoc2VsQlIgKyBzZWxEUiwgMCwgMzEpKQorICAgICAgICBtb2Rl
ID0gRXRjMk1vZGUuTU9ERV9UOworICAgIGVsc2UgaWYgKCFkZU1hdGguZGVJblJhbmdlMzIoc2Vs
QkcgKyBzZWxERywgMCwgMzEpKQorICAgICAgICBtb2RlID0gRXRjMk1vZGUuTU9ERV9IOworICAg
IGVsc2UgaWYgKCFkZU1hdGguZGVJblJhbmdlMzIoc2VsQkIgKyBzZWxEQiwgMCwgMzEpKQorICAg
ICAgICBtb2RlID0gRXRjMk1vZGUuTU9ERV9QTEFOQVI7CisgICAgZWxzZQorICAgICAgICBtb2Rl
ID0gRXRjMk1vZGUuTU9ERV9ESUZGRVJFTlRJQUw7CisKKyAgICBpZiAobW9kZSA9PSBFdGMyTW9k
ZS5NT0RFX0lORElWSURVQUwgfHwgbW9kZSA9PSBFdGMyTW9kZS5NT0RFX0RJRkZFUkVOVElBTCkg
eworICAgICAgICAvLyBJbmRpdmlkdWFsIGFuZCBkaWZmZXJlbnRpYWwgbW9kZXMgaGF2ZSBzb21l
IHN0ZXBzIGluIGNvbW1vbiwgaGFuZGxlIHRoZW0gaGVyZS4KKyAgICAgICAgdmFyIG1vZGlmaWVy
VGFibGUgPSBbCisgICAgICAgIC8vICAgICAgMDAgMDEgMTAgMTEKKyAgICAgICAgICAgIFsyLCA4
LCAtMiwgLThdLAorICAgICAgICAgICAgWzUsIDE3LCAtNSwgLTE3XSwKKyAgICAgICAgICAgIFs5
LCAyOSwgLTksIC0yOV0sCisgICAgICAgICAgICBbMTMsIDQyLCAtMTMsIC00Ml0sCisgICAgICAg
ICAgICBbMTgsIDYwLCAtMTgsIC02MF0sCisgICAgICAgICAgICBbMjQsIDgwLCAtMjQsIC04MF0s
CisgICAgICAgICAgICBbMzMsIDEwNiwgLTMzLCAtMTA2XSwKKyAgICAgICAgICAgIFs0NywgMTgz
LCAtNDcsIC0xODNdCisgICAgICAgIF07CisKKyAgICAgICAgIHZhciBmbGlwQml0ID0gZ2V0Qml0
NjQoc3JjLCAzMik7CisgICAgICAgICB2YXIgdGFibGUgPSBbZ2V0Qml0czY0KHNyYywgMzcsIDM5
KSwgZ2V0Qml0czY0KHNyYywgMzQsIDM2KV07CisgICAgICAgIHZhciBiYXNlUiA9IFtdOworICAg
ICAgICB2YXIgYmFzZUcgPSBbXTsKKyAgICAgICAgdmFyIGJhc2VCID0gW107CisKKyAgICAgICAg
aWYgKG1vZGUgPT0gRXRjMk1vZGUuTU9ERV9JTkRJVklEVUFMKSB7CisgICAgICAgICAgICAvLyBJ
bmRpdmlkdWFsIG1vZGUsIGluaXRpYWwgdmFsdWVzLgorICAgICAgICAgICAgYmFzZVJbMF0gPSBl
eHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDYwLCA2MykpOworICAgICAgICAgICAgYmFzZVJbMV0g
PSBleHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDU2LCA1OSkpOworICAgICAgICAgICAgYmFzZUdb
MF0gPSBleHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDUyLCA1NSkpOworICAgICAgICAgICAgYmFz
ZUdbMV0gPSBleHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDQ4LCA1MSkpOworICAgICAgICAgICAg
YmFzZUJbMF0gPSBleHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDQ0LCA0NykpOworICAgICAgICAg
ICAgYmFzZUJbMV0gPSBleHRlbmQ0VG84KGdldEJpdHM2NChzcmMsIDQwLCA0MykpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRGlmZmVyZW50aWFsIG1vZGUsIGluaXRpYWwgdmFs
dWVzLgorICAgICAgICAgICAgYmFzZVJbMF0gPSBleHRlbmQ1VG84KHNlbEJSKTsKKyAgICAgICAg
ICAgIGJhc2VHWzBdID0gZXh0ZW5kNVRvOChzZWxCRyk7CisgICAgICAgICAgICBiYXNlQlswXSA9
IGV4dGVuZDVUbzgoc2VsQkIpOworCisgICAgICAgICAgICBiYXNlUlsxXSA9IGV4dGVuZDVUbzgo
KHNlbEJSICsgc2VsRFIpKTsKKyAgICAgICAgICAgIGJhc2VHWzFdID0gZXh0ZW5kNVRvOCgoc2Vs
QkcgKyBzZWxERykpOworICAgICAgICAgICAgYmFzZUJbMV0gPSBleHRlbmQ1VG84KChzZWxCQiAr
IHNlbERCKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXcml0ZSBmaW5hbCBwaXhlbHMgZm9y
IGluZGl2aWR1YWwgb3IgZGlmZmVyZW50aWFsIG1vZGUuCisgICAgICAgIHZhciBwaXhlbE5keCA9
IDA7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgRVRDMl9CTE9DS19XSURUSDsgeCsrKSB7
CisgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IEVUQzJfQkxPQ0tfSEVJR0hUOyB5Kyss
IHBpeGVsTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgdmFyIGRzdE9mZnNldCA9ICh5ICogRVRD
Ml9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0laRV9SR0I4Owor
ICAgICAgICAgICAgICAgICB2YXIgc3ViQmxvY2sgPSAoKGZsaXBCaXQgPyB5IDogeCkgPj0gMikg
PyAxIDogMDsKKyAgICAgICAgICAgICAgICAgdmFyIHRhYmxlTmR4ID0gdGFibGVbc3ViQmxvY2td
OworICAgICAgICAgICAgICAgICB2YXIgbW9kaWZpZXJOZHggPSAoZ2V0Qml0NjQoc3JjLCAxNiAr
IHBpeGVsTmR4KSA8PCAxKSB8IGdldEJpdDY0KHNyYywgcGl4ZWxOZHgpOworICAgICAgICAgICAg
ICAgICB2YXIgYWxwaGFEc3RPZmZzZXQgPSAoeSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4KSAqIEVU
QzJfVU5DT01QUkVTU0VEX1BJWEVMX1NJWkVfQTg7IC8vIE9ubHkgbmVlZGVkIGZvciBQVU5DSFRI
Uk9VR0ggdmVyc2lvbi4KKworICAgICAgICAgICAgICAgIC8vIElmIGRvaW5nIFBVTkNIVEhST1VH
SCB2ZXJzaW9uIChhbHBoYU1vZGUpLCBvcGFxdWUgYml0IG1heSBhZmZlY3QgY29sb3JzLgorICAg
ICAgICAgICAgICAgIGlmIChhbHBoYU1vZGUgJiYgZGlmZk9wYXF1ZUJpdCA9PSAwICYmIG1vZGlm
aWVyTmR4ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDBdID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDFdID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDJdID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
YWxwaGFEc3RbYWxwaGFEc3RPZmZzZXRdID0gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICB2YXIgbW9kaWZpZXI7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gUFVOQ0hUSFJPVUdIIHZlcnNpb24gYW5kIG9wYXF1ZSBiaXQgbWF5IGFsc28gYWZmZWN0IG1v
ZGlmaWVycy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhTW9kZSAmJiBkaWZmT3BhcXVl
Qml0ID09IDAgJiYgKG1vZGlmaWVyTmR4ID09IDAgfHwgbW9kaWZpZXJOZHggPT0gMikpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllciA9IDA7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gbW9kaWZpZXJUYWJsZVt0YWJs
ZU5keF1bbW9kaWZpZXJOZHhdOworCisgICAgICAgICAgICAgICAgICAgIGRzdFtkc3RPZmZzZXQg
KyAwXSA9IGRlTWF0aC5jbGFtcChiYXNlUltzdWJCbG9ja10gKyBtb2RpZmllciwgMCwgMjU1KTsK
KyAgICAgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDFdID0gZGVNYXRoLmNsYW1wKGJh
c2VHW3N1YkJsb2NrXSArIG1vZGlmaWVyLCAwLCAyNTUpOworICAgICAgICAgICAgICAgICAgICBk
c3RbZHN0T2Zmc2V0ICsgMl0gPSBkZU1hdGguY2xhbXAoYmFzZUJbc3ViQmxvY2tdICsgbW9kaWZp
ZXIsIDAsIDI1NSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhTW9kZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFscGhhRHN0W2FscGhhRHN0T2Zmc2V0XSA9IDI1NTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1v
ZGUgPT0gRXRjMk1vZGUuTU9ERV9UIHx8IG1vZGUgPT0gRXRjMk1vZGUuTU9ERV9IKSB7CisgICAg
ICAgIC8vIFQgYW5kIEggbW9kZXMgaGF2ZSBzb21lIHN0ZXBzIGluIGNvbW1vbiwgaGFuZGxlIHRo
ZW0gaGVyZS4KKyAgICAgICAgdmFyIGRpc3RUYWJsZSA9IFszLCA2LCAxMSwgMTYsIDIzLCAzMiwg
NDEsIDY0XTsKKworICAgICAgICB2YXIgcGFpbnRSID0gW107CisgICAgICAgIHZhciBwYWludEcg
PSBbXTsKKyAgICAgICAgdmFyIHBhaW50QiA9IFtdOworCisgICAgICAgIGlmIChtb2RlID09IEV0
YzJNb2RlLk1PREVfVCkgeworICAgICAgICAgICAgLy8gVCBtb2RlLCBjYWxjdWxhdGUgcGFpbnQg
dmFsdWVzLgorICAgICAgICAgICAgIHZhciBSMWEgPSBnZXRCaXRzNjQoc3JjLCA1OSwgNjApOwor
ICAgICAgICAgICAgIHZhciBSMWIgPSBnZXRCaXRzNjQoc3JjLCA1NiwgNTcpOworICAgICAgICAg
ICAgIHZhciBHMSA9IGdldEJpdHM2NChzcmMsIDUyLCA1NSk7CisgICAgICAgICAgICAgdmFyIEIx
ID0gZ2V0Qml0czY0KHNyYywgNDgsIDUxKTsKKyAgICAgICAgICAgICB2YXIgUjIgPSBnZXRCaXRz
NjQoc3JjLCA0NCwgNDcpOworICAgICAgICAgICAgIHZhciBHMiA9IGdldEJpdHM2NChzcmMsIDQw
LCA0Myk7CisgICAgICAgICAgICAgdmFyIEIyID0gZ2V0Qml0czY0KHNyYywgMzYsIDM5KTsKKyAg
ICAgICAgICAgICB2YXIgZGlzdE5keCA9IChnZXRCaXRzNjQoc3JjLCAzNCwgMzUpIDw8IDEpIHwg
Z2V0Qml0NjQoc3JjLCAzMik7CisgICAgICAgICAgICAgdmFyIGRpc3QgPSBkaXN0VGFibGVbZGlz
dE5keF07CisKKyAgICAgICAgICAgIHBhaW50UlswXSA9IGV4dGVuZDRUbzgoKFIxYSA8PCAyKSB8
IFIxYik7CisgICAgICAgICAgICBwYWludEdbMF0gPSBleHRlbmQ0VG84KEcxKTsKKyAgICAgICAg
ICAgIHBhaW50QlswXSA9IGV4dGVuZDRUbzgoQjEpOworICAgICAgICAgICAgcGFpbnRSWzJdID0g
ZXh0ZW5kNFRvOChSMik7CisgICAgICAgICAgICBwYWludEdbMl0gPSBleHRlbmQ0VG84KEcyKTsK
KyAgICAgICAgICAgIHBhaW50QlsyXSA9IGV4dGVuZDRUbzgoQjIpOworICAgICAgICAgICAgcGFp
bnRSWzFdID0gZGVNYXRoLmNsYW1wKHBhaW50UlsyXSArIGRpc3QsIDAsIDI1NSk7CisgICAgICAg
ICAgICBwYWludEdbMV0gPSBkZU1hdGguY2xhbXAocGFpbnRHWzJdICsgZGlzdCwgMCwgMjU1KTsK
KyAgICAgICAgICAgIHBhaW50QlsxXSA9IGRlTWF0aC5jbGFtcChwYWludEJbMl0gKyBkaXN0LCAw
LCAyNTUpOworICAgICAgICAgICAgcGFpbnRSWzNdID0gZGVNYXRoLmNsYW1wKHBhaW50UlsyXSAt
IGRpc3QsIDAsIDI1NSk7CisgICAgICAgICAgICBwYWludEdbM10gPSBkZU1hdGguY2xhbXAocGFp
bnRHWzJdIC0gZGlzdCwgMCwgMjU1KTsKKyAgICAgICAgICAgIHBhaW50QlszXSA9IGRlTWF0aC5j
bGFtcChwYWludEJbMl0gLSBkaXN0LCAwLCAyNTUpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gSCBtb2RlLCBjYWxjdWxhdGUgcGFpbnQgdmFsdWVzLgorICAgICAgICAgICAgdmFy
IFIxID0gZ2V0Qml0czY0KHNyYywgNTksIDYyKTsKKyAgICAgICAgICAgIHZhciBHMWEgPSBnZXRC
aXRzNjQoc3JjLCA1NiwgNTgpOworICAgICAgICAgICAgdmFyIEcxYiA9IGdldEJpdDY0KHNyYywg
NTIpOworICAgICAgICAgICAgdmFyIEIxYSA9IGdldEJpdDY0KHNyYywgNTEpOworICAgICAgICAg
ICAgdmFyIEIxYiA9IGdldEJpdHM2NChzcmMsIDQ3LCA0OSk7CisgICAgICAgICAgICB2YXIgUjIg
PSBnZXRCaXRzNjQoc3JjLCA0MywgNDYpOworICAgICAgICAgICAgdmFyIEcyID0gZ2V0Qml0czY0
KHNyYywgMzksIDQyKTsKKyAgICAgICAgICAgIHZhciBCMiA9IGdldEJpdHM2NChzcmMsIDM1LCAz
OCk7CisgICAgICAgICAgICB2YXIgYmFzZVIgPSBbXTsKKyAgICAgICAgICAgIHZhciBiYXNlRyA9
IFtdOworICAgICAgICAgICAgdmFyIGJhc2VCID0gW107CisgICAgICAgICAgICB2YXIgYmFzZVZh
bHVlID0gW107CisgICAgICAgICAgICB2YXIgZGlzdE5keDsKKyAgICAgICAgICAgIHZhciBkaXN0
OworCisgICAgICAgICAgICBiYXNlUlswXSA9IGV4dGVuZDRUbzgoUjEpOworICAgICAgICAgICAg
YmFzZUdbMF0gPSBleHRlbmQ0VG84KChHMWEgPDwgMSkgfCBHMWIpOworICAgICAgICAgICAgYmFz
ZUJbMF0gPSBleHRlbmQ0VG84KChCMWEgPDwgMykgfCBCMWIpOworICAgICAgICAgICAgYmFzZVJb
MV0gPSBleHRlbmQ0VG84KFIyKTsKKyAgICAgICAgICAgIGJhc2VHWzFdID0gZXh0ZW5kNFRvOChH
Mik7CisgICAgICAgICAgICBiYXNlQlsxXSA9IGV4dGVuZDRUbzgoQjIpOworICAgICAgICAgICAg
YmFzZVZhbHVlWzBdID0gKChiYXNlUlswXSkgPDwgMTYpIHwgKChiYXNlR1swXSkgPDwgOCkgfCBi
YXNlQlswXTsKKyAgICAgICAgICAgIGJhc2VWYWx1ZVsxXSA9ICgoYmFzZVJbMV0pIDw8IDE2KSB8
ICgoYmFzZUdbMV0pIDw8IDgpIHwgYmFzZUJbMV07CisgICAgICAgICAgICBkaXN0TmR4ID0gKGdl
dEJpdDY0KHNyYywgMzQpIDw8IDIpIHwgKGdldEJpdDY0KHNyYywgMzIpIDw8IDEpOworICAgICAg
ICAgICAgaWYgKGJhc2VWYWx1ZVswXSA+PSBiYXNlVmFsdWVbMV0pCisgICAgICAgICAgICAgICAg
ZGlzdE5keCArPSAxOworICAgICAgICAgICAgZGlzdCA9IGRpc3RUYWJsZVtkaXN0TmR4XTsKKwor
ICAgICAgICAgICAgcGFpbnRSWzBdID0gZGVNYXRoLmNsYW1wKGJhc2VSWzBdICsgZGlzdCwgMCwg
MjU1KTsKKyAgICAgICAgICAgIHBhaW50R1swXSA9IGRlTWF0aC5jbGFtcChiYXNlR1swXSArIGRp
c3QsIDAsIDI1NSk7CisgICAgICAgICAgICBwYWludEJbMF0gPSBkZU1hdGguY2xhbXAoYmFzZUJb
MF0gKyBkaXN0LCAwLCAyNTUpOworICAgICAgICAgICAgcGFpbnRSWzFdID0gZGVNYXRoLmNsYW1w
KGJhc2VSWzBdIC0gZGlzdCwgMCwgMjU1KTsKKyAgICAgICAgICAgIHBhaW50R1sxXSA9IGRlTWF0
aC5jbGFtcChiYXNlR1swXSAtIGRpc3QsIDAsIDI1NSk7CisgICAgICAgICAgICBwYWludEJbMV0g
PSBkZU1hdGguY2xhbXAoYmFzZUJbMF0gLSBkaXN0LCAwLCAyNTUpOworICAgICAgICAgICAgcGFp
bnRSWzJdID0gZGVNYXRoLmNsYW1wKGJhc2VSWzFdICsgZGlzdCwgMCwgMjU1KTsKKyAgICAgICAg
ICAgIHBhaW50R1syXSA9IGRlTWF0aC5jbGFtcChiYXNlR1sxXSArIGRpc3QsIDAsIDI1NSk7Cisg
ICAgICAgICAgICBwYWludEJbMl0gPSBkZU1hdGguY2xhbXAoYmFzZUJbMV0gKyBkaXN0LCAwLCAy
NTUpOworICAgICAgICAgICAgcGFpbnRSWzNdID0gZGVNYXRoLmNsYW1wKGJhc2VSWzFdIC0gZGlz
dCwgMCwgMjU1KTsKKyAgICAgICAgICAgIHBhaW50R1szXSA9IGRlTWF0aC5jbGFtcChiYXNlR1sx
XSAtIGRpc3QsIDAsIDI1NSk7CisgICAgICAgICAgICBwYWludEJbM10gPSBkZU1hdGguY2xhbXAo
YmFzZUJbMV0gLSBkaXN0LCAwLCAyNTUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV3JpdGUg
ZmluYWwgcGl4ZWxzIGZvciBUIG9yIEggbW9kZS4KKyAgICAgICAgdmFyIHBpeGVsTmR4ID0gMDsK
KyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBFVEMyX0JMT0NLX1dJRFRIOyB4KyspIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgRVRDMl9CTE9DS19IRUlHSFQ7IHkrKywgcGl4
ZWxOZHgrKykgeworICAgICAgICAgICAgICAgICB2YXIgZHN0T2Zmc2V0ID0gKHkgKiBFVEMyX0JM
T0NLX1dJRFRIICsgeCkgKiBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9TSVpFX1JHQjg7CisgICAg
ICAgICAgICAgICAgIHZhciBwYWludE5keCA9IChnZXRCaXQ2NChzcmMsIDE2ICsgcGl4ZWxOZHgp
IDw8IDEpIHwgZ2V0Qml0NjQoc3JjLCBwaXhlbE5keCk7CisgICAgICAgICAgICAgICAgIHZhciBh
bHBoYURzdE9mZnNldCA9ICh5ICogRVRDMl9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBS
RVNTRURfUElYRUxfU0laRV9BODsgLy8gT25seSBuZWVkZWQgZm9yIFBVTkNIVEhST1VHSCB2ZXJz
aW9uLgorCisgICAgICAgICAgICAgICAgaWYgKGFscGhhTW9kZSAmJiBkaWZmT3BhcXVlQml0ID09
IDAgJiYgcGFpbnROZHggPT0gMikgeworICAgICAgICAgICAgICAgICAgICBkc3RbZHN0T2Zmc2V0
ICsgMF0gPSAwOworICAgICAgICAgICAgICAgICAgICBkc3RbZHN0T2Zmc2V0ICsgMV0gPSAwOwor
ICAgICAgICAgICAgICAgICAgICBkc3RbZHN0T2Zmc2V0ICsgMl0gPSAwOworICAgICAgICAgICAg
ICAgICAgICBhbHBoYURzdFthbHBoYURzdE9mZnNldF0gPSAwOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRzdFtkc3RPZmZzZXQgKyAwXSA9IGRlTWF0aC5j
bGFtcChwYWludFJbcGFpbnROZHhdLCAwLCAyNTUpOworICAgICAgICAgICAgICAgICAgICBkc3Rb
ZHN0T2Zmc2V0ICsgMV0gPSBkZU1hdGguY2xhbXAocGFpbnRHW3BhaW50TmR4XSwgMCwgMjU1KTsK
KyAgICAgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDJdID0gZGVNYXRoLmNsYW1wKHBh
aW50QltwYWludE5keF0sIDAsIDI1NSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhh
TW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhRHN0W2FscGhhRHN0T2Zmc2V0XSA9
IDI1NTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBQbGFuYXIgbW9kZS4KKyAgICAgICAgdmFyIEdPMSA9IGdldEJp
dDY0KHNyYywgNTYpOworICAgICAgICB2YXIgR08yID0gZ2V0Qml0czY0KHNyYywgNDksIDU0KTsK
KyAgICAgICAgdmFyIEJPMSA9IGdldEJpdDY0KHNyYywgNDgpOworICAgICAgICB2YXIgQk8yID0g
Z2V0Qml0czY0KHNyYywgNDMsIDQ0KTsKKyAgICAgICAgdmFyIEJPMyA9IGdldEJpdHM2NChzcmMs
IDM5LCA0MSk7CisgICAgICAgIHZhciBSSDEgPSBnZXRCaXRzNjQoc3JjLCAzNCwgMzgpOworICAg
ICAgICB2YXIgUkgyID0gZ2V0Qml0NjQoc3JjLCAzMik7CisgICAgICAgIHZhciBSTyA9IGV4dGVu
ZDZUbzgoZ2V0Qml0czY0KHNyYywgNTcsIDYyKSk7CisgICAgICAgIHZhciBHTyA9IGV4dGVuZDdU
bzgoKEdPMSA8PCA2KSB8IEdPMik7CisgICAgICAgIHZhciBCTyA9IGV4dGVuZDZUbzgoKEJPMSA8
PCA1KSB8IChCTzIgPDwgMykgfCBCTzMpOworICAgICAgICB2YXIgUkggPSBleHRlbmQ2VG84KChS
SDEgPDwgMSkgfCBSSDIpOworICAgICAgICB2YXIgR0ggPSBleHRlbmQ3VG84KGdldEJpdHM2NChz
cmMsIDI1LCAzMSkpOworICAgICAgICB2YXIgQkggPSBleHRlbmQ2VG84KGdldEJpdHM2NChzcmMs
IDE5LCAyNCkpOworICAgICAgICB2YXIgUlYgPSBleHRlbmQ2VG84KGdldEJpdHM2NChzcmMsIDEz
LCAxOCkpOworICAgICAgICB2YXIgR1YgPSBleHRlbmQ3VG84KGdldEJpdHM2NChzcmMsIDYsIDEy
KSk7CisgICAgICAgIHZhciBCViA9IGV4dGVuZDZUbzgoZ2V0Qml0czY0KHNyYywgMCwgNSkpOwor
CisgICAgICAgIC8vIFdyaXRlIGZpbmFsIHBpeGVscyBmb3IgcGxhbmFyIG1vZGUuCisgICAgICAg
IGZvciAodmFyIHkgPSAwOyB5IDwgNDsgeSsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciB4ID0g
MDsgeCA8IDQ7IHgrKykgeworICAgICAgICAgICAgICAgICB2YXIgZHN0T2Zmc2V0ID0gKHkgKiBF
VEMyX0JMT0NLX1dJRFRIICsgeCkgKiBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9TSVpFX1JHQjg7
CisgICAgICAgICAgICAgICAgIHZhciB1bmNsYW1wZWRSID0gKHggKiAoUkggLSBSTykgKyB5ICog
KFJWIC0gUk8pICsgNCAqIFJPICsgMikgLyA0OworICAgICAgICAgICAgICAgICB2YXIgdW5jbGFt
cGVkRyA9ICh4ICogKEdIIC0gR08pICsgeSAqIChHViAtIEdPKSArIDQgKiBHTyArIDIpIC8gNDsK
KyAgICAgICAgICAgICAgICAgdmFyIHVuY2xhbXBlZEIgPSAoeCAqIChCSCAtIEJPKSArIHkgKiAo
QlYgLSBCTykgKyA0ICogQk8gKyAyKSAvIDQ7CisgICAgICAgICAgICAgICAgIHZhciBhbHBoYURz
dE9mZnNldCA9ICh5ICogRVRDMl9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBSRVNTRURf
UElYRUxfU0laRV9BODsgLy8gT25seSBuZWVkZWQgZm9yIFBVTkNIVEhST1VHSCB2ZXJzaW9uLgor
CisgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDBdID0gZGVNYXRoLmNsYW1wKHVuY2xh
bXBlZFIsIDAsIDI1NSk7CisgICAgICAgICAgICAgICAgZHN0W2RzdE9mZnNldCArIDFdID0gZGVN
YXRoLmNsYW1wKHVuY2xhbXBlZEcsIDAsIDI1NSk7CisgICAgICAgICAgICAgICAgZHN0W2RzdE9m
ZnNldCArIDJdID0gZGVNYXRoLmNsYW1wKHVuY2xhbXBlZEIsIDAsIDI1NSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoYWxwaGFNb2RlKQorICAgICAgICAgICAgICAgICAgICBhbHBoYURzdFthbHBo
YURzdE9mZnNldF0gPSAyNTU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9Owor
Cit2YXIgZGVjb21wcmVzc0VBQzhCbG9jayA9IGZ1bmN0aW9uKGRzdCwgc3JjKSB7CisgICAgdmFy
IG1vZGlmaWVyVGFibGUgPSBbCisgICAgICAgIFstMywgLTYsIC05LCAtMTUsIDIsIDUsIDgsIDE0
XSwKKyAgICAgICAgWy0zLCAtNywgLTEwLCAtMTMsIDIsIDYsIDksIDEyXSwKKyAgICAgICAgWy0y
LCAtNSwgLTgsIC0xMywgMSwgNCwgNywgMTJdLAorICAgICAgICBbLTIsIC00LCAtNiwgLTEzLCAx
LCAzLCA1LCAxMl0sCisgICAgICAgIFstMywgLTYsIC04LCAtMTIsIDIsIDUsIDcsIDExXSwKKyAg
ICAgICAgWy0zLCAtNywgLTksIC0xMSwgMiwgNiwgOCwgMTBdLAorICAgICAgICBbLTQsIC03LCAt
OCwgLTExLCAzLCA2LCA3LCAxMF0sCisgICAgICAgIFstMywgLTUsIC04LCAtMTEsIDIsIDQsIDcs
IDEwXSwKKyAgICAgICAgWy0yLCAtNiwgLTgsIC0xMCwgMSwgNSwgNywgOV0sCisgICAgICAgIFst
MiwgLTUsIC04LCAtMTAsIDEsIDQsIDcsIDldLAorICAgICAgICBbLTIsIC00LCAtOCwgLTEwLCAx
LCAzLCA3LCA5XSwKKyAgICAgICAgWy0yLCAtNSwgLTcsIC0xMCwgMSwgNCwgNiwgOV0sCisgICAg
ICAgIFstMywgLTQsIC03LCAtMTAsIDIsIDMsIDYsIDldLAorICAgICAgICBbLTEsIC0yLCAtMywg
LTEwLCAwLCAxLCAyLCA5XSwKKyAgICAgICAgWy00LCAtNiwgLTgsIC05LCAzLCA1LCA3LCA4XSwK
KyAgICAgICAgWy0zLCAtNSwgLTcsIC05LCAyLCA0LCA2LCA4XQorICAgIF07CisKKyAgICB2YXIg
YmFzZUNvZGV3b3JkID0gZ2V0Qml0czY0KHNyYywgNTYsIDYzKTsKKyAgICB2YXIgbXVsdGlwbGll
ciA9IGdldEJpdHM2NChzcmMsIDUyLCA1NSk7CisgICAgdmFyIHRhYmxlTmR4ID0gZ2V0Qml0czY0
KHNyYywgNDgsIDUxKTsKKworICAgIHZhciBwaXhlbE5keCA9IDA7CisgICAgZm9yICh2YXIgeCA9
IDA7IHggPCBFVEMyX0JMT0NLX1dJRFRIOyB4KyspIHsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7
IHkgPCBFVEMyX0JMT0NLX0hFSUdIVDsgeSsrLCBwaXhlbE5keCsrKSB7CisgICAgICAgICAgICB2
YXIgZHN0T2Zmc2V0ID0gKHkgKiBFVEMyX0JMT0NLX1dJRFRIICsgeCk7CisgICAgICAgICAgICB2
YXIgcGl4ZWxCaXROZHggPSA0NSAtIDMgKiBwaXhlbE5keDsKKyAgICAgICAgICAgIHZhciBtb2Rp
Zmllck5keCA9IChnZXRCaXQ2NChzcmMsIHBpeGVsQml0TmR4ICsgMikgPDwgMikgfCAoZ2V0Qml0
NjQoc3JjLCBwaXhlbEJpdE5keCArIDEpIDw8IDEpIHwgZ2V0Qml0NjQoc3JjLCBwaXhlbEJpdE5k
eCk7CisgICAgICAgICAgICB2YXIgbW9kaWZpZXIgPSBtb2RpZmllclRhYmxlW3RhYmxlTmR4XVtt
b2RpZmllck5keF07CisKKyAgICAgICAgICAgIGRzdFtkc3RPZmZzZXRdID0gZGVNYXRoLmNsYW1w
KGJhc2VDb2Rld29yZCArIG11bHRpcGxpZXIgKiBtb2RpZmllciwgMCwgMjU1KTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK3ZhciBkZWNvbXByZXNzRVRDMiA9IGZ1bmN0aW9uKC8qY29uc3QgdGN1
OjpQaXhlbEJ1ZmZlckFjY2VzcyYqLyBkc3QsIHdpZHRoLCBoZWlnaHQsIHNyYykgeworICAgIHZh
ciBudW1CbG9ja3NYID0gdGN1Q29tcHJlc3NlZFRleHR1cmUuZGl2Um91bmRVcCh3aWR0aCwgNCk7
CisgICAgdmFyIG51bUJsb2Nrc1kgPSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVwKGhl
aWdodCwgNCk7CisgICAgdmFyIGRzdFB0ciA9IG5ldyBVaW50OEFycmF5KGRzdC5tX2RhdGEpOwor
ICAgIHZhciBkc3RSb3dQaXRjaCA9IGRzdC5nZXRSb3dQaXRjaCgpOworICAgIHZhciBkc3RQaXhl
bFNpemUgPSBFVEMyX1VOQ09NUFJFU1NFRF9QSVhFTF9TSVpFX1JHQjg7CisgICAgdmFyIHVuY29t
cHJlc3NlZEJsb2NrQXJyYXkgPSBuZXcgQXJyYXlCdWZmZXIoRVRDMl9VTkNPTVBSRVNTRURfQkxP
Q0tfU0laRV9SR0I4KTsKKyAgICB2YXIgdW5jb21wcmVzc2VkQmxvY2sgPSBuZXcgVWludDhBcnJh
eSh1bmNvbXByZXNzZWRCbG9ja0FycmF5KTsKKworICAgIGZvciAodmFyIGJsb2NrWSA9IDA7IGJs
b2NrWSA8IG51bUJsb2Nrc1k7IGJsb2NrWSsrKSB7CisgICAgICAgIGZvciAodmFyIGJsb2NrWCA9
IDA7IGJsb2NrWCA8IG51bUJsb2Nrc1g7IGJsb2NrWCsrKSB7CisgICAgICAgICAgICB2YXIgY29t
cHJlc3NlZEJsb2NrID0gZ2V0NjRCaXRCbG9jayhzcmMsIGJsb2NrWSAqIG51bUJsb2Nrc1ggKyBi
bG9ja1gpOworCisgICAgICAgICAgICAvLyBEZWNvbXByZXNzLgorICAgICAgICAgICAgZGVjb21w
cmVzc0VUQzJCbG9jayh1bmNvbXByZXNzZWRCbG9jaywgY29tcHJlc3NlZEJsb2NrLCBudWxsLCBm
YWxzZSk7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIHRvIGRzdC4KKyAgICAgICAgICAgIHZhciBi
YXNlWCA9IGJsb2NrWCAqIEVUQzJfQkxPQ0tfV0lEVEg7CisgICAgICAgICAgICB2YXIgYmFzZVkg
PSBibG9ja1kgKiBFVEMyX0JMT0NLX0hFSUdIVDsKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSAw
OyB5IDwgTWF0aC5taW4oRVRDMl9CTE9DS19IRUlHSFQsIGhlaWdodCAtIGJhc2VZKTsgeSsrKSB7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBNYXRoLm1pbihFVEMyX0JMT0NL
X1dJRFRILCB3aWR0aCAtIGJhc2VYKTsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBz
cmNJbmRleCA9ICh5ICogRVRDMl9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBSRVNTRURf
UElYRUxfU0laRV9SR0I4OworICAgICAgICAgICAgICAgICAgICB2YXIgZHN0SW5kZXggPSAoYmFz
ZVkgKyB5KSAqIGRzdFJvd1BpdGNoICsgKGJhc2VYICsgeCkgKiBkc3RQaXhlbFNpemU7CisKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBFVEMyX1VOQ09NUFJFU1NFRF9Q
SVhFTF9TSVpFX1JHQjg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzdFB0cltkc3RJ
bmRleCArIGldID0gdW5jb21wcmVzc2VkQmxvY2tbc3JjSW5kZXggKyBpXTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCit2YXIgZGVjb21w
cmVzc0VUQzJfRUFDX1JHQkE4ID0gZnVuY3Rpb24oLypjb25zdCB0Y3U6OlBpeGVsQnVmZmVyQWNj
ZXNzJiovIGRzdCwgd2lkdGgsIGhlaWdodCwgc3JjKSB7CisgICAgdmFyIG51bUJsb2Nrc1ggPSB0
Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVwKHdpZHRoLCA0KTsKKyAgICB2YXIgbnVtQmxv
Y2tzWSA9IHRjdUNvbXByZXNzZWRUZXh0dXJlLmRpdlJvdW5kVXAoaGVpZ2h0LCA0KTsKKyAgICB2
YXIgZHN0UHRyID0gbmV3IFVpbnQ4QXJyYXkoZHN0Lm1fZGF0YSk7CisgICAgdmFyIGRzdFJvd1Bp
dGNoID0gZHN0LmdldFJvd1BpdGNoKCk7CisgICAgdmFyIGRzdFBpeGVsU2l6ZSA9IEVUQzJfVU5D
T01QUkVTU0VEX1BJWEVMX1NJWkVfUkdCQTg7CisgICAgdmFyIHVuY29tcHJlc3NlZEJsb2NrQXJy
YXkgPSBuZXcgQXJyYXlCdWZmZXIoRVRDMl9VTkNPTVBSRVNTRURfQkxPQ0tfU0laRV9SR0I4KTsK
KyAgICB2YXIgdW5jb21wcmVzc2VkQmxvY2sgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRC
bG9ja0FycmF5KTsKKyAgICB2YXIgdW5jb21wcmVzc2VkQmxvY2tBbHBoYUFycmF5ID0gbmV3IEFy
cmF5QnVmZmVyKEVUQzJfVU5DT01QUkVTU0VEX0JMT0NLX1NJWkVfQTgpOworICAgIHZhciB1bmNv
bXByZXNzZWRCbG9ja0FscGhhID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkQmxvY2tBbHBo
YUFycmF5KTsKKworICAgIGZvciAodmFyIGJsb2NrWSA9IDA7IGJsb2NrWSA8IG51bUJsb2Nrc1k7
IGJsb2NrWSsrKSB7CisgICAgICAgIGZvciAodmFyIGJsb2NrWCA9IDA7IGJsb2NrWCA8IG51bUJs
b2Nrc1g7IGJsb2NrWCsrKSB7CisgICAgICAgICAgICB2YXIgY29tcHJlc3NlZEJsb2NrQWxwaGEg
PSBnZXQxMjhCaXRCbG9ja1N0YXJ0KHNyYywgYmxvY2tZICogbnVtQmxvY2tzWCArIGJsb2NrWCk7
CisgICAgICAgICAgICB2YXIgY29tcHJlc3NlZEJsb2NrUkdCID0gZ2V0MTI4Qml0QmxvY2tFbmQo
c3JjLCBibG9ja1kgKiBudW1CbG9ja3NYICsgYmxvY2tYKTsKKworICAgICAgICAgICAgLy8gRGVj
b21wcmVzcy4KKyAgICAgICAgICAgIGRlY29tcHJlc3NFVEMyQmxvY2sodW5jb21wcmVzc2VkQmxv
Y2ssIGNvbXByZXNzZWRCbG9ja1JHQiwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgZGVjb21w
cmVzc0VBQzhCbG9jayh1bmNvbXByZXNzZWRCbG9ja0FscGhhLCBjb21wcmVzc2VkQmxvY2tBbHBo
YSk7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIHRvIGRzdC4KKyAgICAgICAgICAgIHZhciBiYXNl
WCA9IGJsb2NrWCAqIEVUQzJfQkxPQ0tfV0lEVEg7CisgICAgICAgICAgICB2YXIgYmFzZVkgPSBi
bG9ja1kgKiBFVEMyX0JMT0NLX0hFSUdIVDsKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5
IDwgTWF0aC5taW4oRVRDMl9CTE9DS19IRUlHSFQsIGhlaWdodCAtIGJhc2VZKTsgeSsrKSB7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBNYXRoLm1pbihFVEMyX0JMT0NLX1dJ
RFRILCB3aWR0aCAtIGJhc2VYKTsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzcmNJ
bmRleCA9ICh5ICogRVRDMl9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBSRVNTRURfUElY
RUxfU0laRV9SR0I4OworICAgICAgICAgICAgICAgICAgICB2YXIgc3JjQWxwaGFJbmRleCA9ICh5
ICogRVRDMl9CTE9DS19XSURUSCArIHgpICogRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0laRV9B
ODsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRzdEluZGV4ID0gKGJhc2VZICsgeSkgKiBkc3RS
b3dQaXRjaCArIChiYXNlWCArIHgpICogZHN0UGl4ZWxTaXplOworCisgICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0laRV9SR0JB
OCAtIDE7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzdFB0cltkc3RJbmRleCArIGld
ID0gdW5jb21wcmVzc2VkQmxvY2tbc3JjSW5kZXggKyBpXTsKKyAgICAgICAgICAgICAgICAgICAg
ZHN0UHRyW2RzdEluZGV4ICsgRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0laRV9SR0JBOCAtIDFd
ID0gdW5jb21wcmVzc2VkQmxvY2tBbHBoYVtzcmNBbHBoYUluZGV4XTsKKworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKK3ZhciBkZWNvbXBy
ZXNzRVRDMl9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTEgPSBmdW5jdGlvbigvKmNvbnN0IHRjdTo6
UGl4ZWxCdWZmZXJBY2Nlc3MmKi8gZHN0LCB3aWR0aCwgaGVpZ2h0LCBzcmMpIHsKKyAgICB2YXIg
bnVtQmxvY2tzWCA9IHRjdUNvbXByZXNzZWRUZXh0dXJlLmRpdlJvdW5kVXAod2lkdGgsIDQpOwor
ICAgIHZhciBudW1CbG9ja3NZID0gdGN1Q29tcHJlc3NlZFRleHR1cmUuZGl2Um91bmRVcChoZWln
aHQsIDQpOworICAgIHZhciBkc3RQdHIgPSBuZXcgVWludDhBcnJheShkc3QubV9kYXRhKTsKKyAg
ICB2YXIgZHN0Um93UGl0Y2ggPSBkc3QuZ2V0Um93UGl0Y2goKTsKKyAgICB2YXIgZHN0UGl4ZWxT
aXplID0gRVRDMl9VTkNPTVBSRVNTRURfUElYRUxfU0laRV9SR0JBODsKKyAgICB2YXIgdW5jb21w
cmVzc2VkQmxvY2tBcnJheSA9IG5ldyBBcnJheUJ1ZmZlcihFVEMyX1VOQ09NUFJFU1NFRF9CTE9D
S19TSVpFX1JHQjgpOworICAgIHZhciB1bmNvbXByZXNzZWRCbG9jayA9IG5ldyBVaW50OEFycmF5
KHVuY29tcHJlc3NlZEJsb2NrQXJyYXkpOworICAgIHZhciB1bmNvbXByZXNzZWRCbG9ja0FscGhh
QXJyYXkgPSBuZXcgQXJyYXlCdWZmZXIoRVRDMl9VTkNPTVBSRVNTRURfQkxPQ0tfU0laRV9BOCk7
CisgICAgdmFyIHVuY29tcHJlc3NlZEJsb2NrQWxwaGEgPSBuZXcgVWludDhBcnJheSh1bmNvbXBy
ZXNzZWRCbG9ja0FscGhhQXJyYXkpOworCisgICAgZm9yICh2YXIgYmxvY2tZID0gMDsgYmxvY2tZ
IDwgbnVtQmxvY2tzWTsgYmxvY2tZKyspIHsKKyAgICAgICAgZm9yICh2YXIgYmxvY2tYID0gMDsg
YmxvY2tYIDwgbnVtQmxvY2tzWDsgYmxvY2tYKyspIHsKKyAgICAgICAgICAgIHZhciBjb21wcmVz
c2VkQmxvY2sgPSBnZXQ2NEJpdEJsb2NrKHNyYywgYmxvY2tZICogbnVtQmxvY2tzWCArIGJsb2Nr
WCk7CisKKyAgICAgICAgICAgIC8vIERlY29tcHJlc3MuCisgICAgICAgICAgICBkZWNvbXByZXNz
RVRDMkJsb2NrKHVuY29tcHJlc3NlZEJsb2NrLCBjb21wcmVzc2VkQmxvY2ssIHVuY29tcHJlc3Nl
ZEJsb2NrQWxwaGEsIHRydWUpOworCisgICAgICAgICAgICAvLyBXcml0ZSB0byBkc3QuCisgICAg
ICAgICAgICB2YXIgYmFzZVggPSBibG9ja1ggKiBFVEMyX0JMT0NLX1dJRFRIOworICAgICAgICAg
ICAgdmFyIGJhc2VZID0gYmxvY2tZICogRVRDMl9CTE9DS19IRUlHSFQ7CisgICAgICAgICAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IE1hdGgubWluKEVUQzJfQkxPQ0tfSEVJR0hULCBoZWlnaHQgLSBi
YXNlWSk7IHkrKykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgTWF0aC5t
aW4oRVRDMl9CTE9DS19XSURUSCwgd2lkdGggLSBiYXNlWCk7IHgrKykgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgc3JjSW5kZXggPSAoeSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4KSAqIEVUQzJf
VU5DT01QUkVTU0VEX1BJWEVMX1NJWkVfUkdCODsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNy
Y0FscGhhSW5kZXggPSAoeSAqIEVUQzJfQkxPQ0tfV0lEVEggKyB4KSAqIEVUQzJfVU5DT01QUkVT
U0VEX1BJWEVMX1NJWkVfQTg7CisgICAgICAgICAgICAgICAgICAgIHZhciBkc3RJbmRleCA9IChi
YXNlWSArIHkpICogZHN0Um93UGl0Y2ggKyAoYmFzZVggKyB4KSAqIGRzdFBpeGVsU2l6ZTsKKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEVUQzJfVU5DT01QUkVTU0VE
X1BJWEVMX1NJWkVfUkdCQTggLSAxOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBkc3RQ
dHJbZHN0SW5kZXggKyBpXSA9IHVuY29tcHJlc3NlZEJsb2NrW3NyY0luZGV4ICsgaV07CisgICAg
ICAgICAgICAgICAgICAgIGRzdFB0cltkc3RJbmRleCArIEVUQzJfVU5DT01QUkVTU0VEX1BJWEVM
X1NJWkVfUkdCQTggLSAxXSA9IHVuY29tcHJlc3NlZEJsb2NrQWxwaGFbc3JjQWxwaGFJbmRleF07
CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
OworCityZXR1cm4geworICAgIGRlY29tcHJlc3NFQUNfUjExOiBkZWNvbXByZXNzRUFDX1IxMSwK
KyAgICBkZWNvbXByZXNzRUFDX1JHMTE6IGRlY29tcHJlc3NFQUNfUkcxMSwKKyAgICBkZWNvbXBy
ZXNzRVRDMjogZGVjb21wcmVzc0VUQzIsCisgICAgZGVjb21wcmVzc0VUQzJfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExOiBkZWNvbXByZXNzRVRDMl9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTEsCisg
ICAgZGVjb21wcmVzc0VUQzJfRUFDX1JHQkE4OiBkZWNvbXByZXNzRVRDMl9FQUNfUkdCQTgKK307
CisKK30oKTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7dGN1Q29tcHJlc3Nl
ZFRleHR1cmUuRm9ybWF0fSBmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBh
cmFtIHtudW1iZXJ9IGhlaWdodAorICogQHBhcmFtIHtudW1iZXI9fSBkZXB0aAorICovCit0Y3VD
b21wcmVzc2VkVGV4dHVyZS5Db21wcmVzc2VkVGV4dHVyZSA9IGZ1bmN0aW9uKGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgpIHsKKyAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAx
IDogZGVwdGg7CisgICAgdGhpcy5zZXRTdG9yYWdlKGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgpOworICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdGhpcy5tX2RhdGE7Cit9OworCisv
KioKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1Q29tcHJlc3NlZFRleHR1cmUuQ29tcHJl
c3NlZFRleHR1cmUucHJvdG90eXBlLmdldERhdGFTaXplID0gZnVuY3Rpb24oKSB7CisgICAgIHJl
dHVybiB0aGlzLm1fZGF0YS5sZW5ndGg7Cit9OworCisvKioKKyAgKiBAcmV0dXJuIHtVaW50OEFy
cmF5fQorICAqLwordGN1Q29tcHJlc3NlZFRleHR1cmUuQ29tcHJlc3NlZFRleHR1cmUucHJvdG90
eXBlLmdldERhdGEgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0aGlzLm1fZGF0YTsKK307
CisKKy8qKgorICAqIEByZXR1cm4ge251bWJlcn0KKyAgKi8KK3RjdUNvbXByZXNzZWRUZXh0dXJl
LkNvbXByZXNzZWRUZXh0dXJlLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgcmV0dXJuIHRoaXMubV93aWR0aDsKK307CisKKy8qKgorICAqIEByZXR1cm4ge251bWJlcn0K
KyAgKi8KK3RjdUNvbXByZXNzZWRUZXh0dXJlLkNvbXByZXNzZWRUZXh0dXJlLnByb3RvdHlwZS5n
ZXRIZWlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0aGlzLm1faGVpZ2h0OworfTsK
KworLyoqCisgICogQHJldHVybiB7dGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0fQorICAqLwor
dGN1Q29tcHJlc3NlZFRleHR1cmUuQ29tcHJlc3NlZFRleHR1cmUucHJvdG90eXBlLmdldEZvcm1h
dCA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRoaXMubV9mb3JtYXQ7Cit9OworCit0Y3VD
b21wcmVzc2VkVGV4dHVyZS5Db21wcmVzc2VkVGV4dHVyZS5wcm90b3R5cGUuc2V0U3RvcmFnZSA9
IGZ1bmN0aW9uKGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpIHsKKyAgICBkZXB0aCA9IGRl
cHRoID09PSB1bmRlZmluZWQgPyAxIDogZGVwdGg7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1h
dDsKKyAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0
OworICAgIHRoaXMubV9kZXB0aCA9IGRlcHRoOworCisgICAgaWYgKHRjdUNvbXByZXNzZWRUZXh0
dXJlLmlzRXRjRm9ybWF0KHRoaXMubV9mb3JtYXQpKSB7CisgICAgICAgIERFX0FTU0VSVCh0aGlz
Lm1fZGVwdGggPT0gMSk7CisKKyAgICAgICAgdmFyIGJsb2NrU2l6ZU11bHRpcGxpZXIgPSAwOyAv
LyBIb3cgbWFueSA2NC1iaXQgcGFydHMgZWFjaCBjb21wcmVzc2VkIGJsb2NrIGNvbnRhaW5zLgor
CisgICAgICAgIHN3aXRjaCAodGhpcy5tX2Zvcm1hdCkgeworICAgICAgICAgICAgY2FzZSB0Y3VD
b21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMV9SR0I4OiBibG9ja1NpemVNdWx0aXBsaWVyID0g
MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5F
QUNfUjExOiBibG9ja1NpemVNdWx0aXBsaWVyID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfU0lHTkVEX1IxMTogYmxvY2tTaXplTXVs
dGlwbGllciA9IDE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVy
ZS5Gb3JtYXQuRUFDX1JHMTE6IGJsb2NrU2l6ZU11bHRpcGxpZXIgPSAyOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVBQ19TSUdORURfUkcxMTog
YmxvY2tTaXplTXVsdGlwbGllciA9IDI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VDb21w
cmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9SR0I4OiBibG9ja1NpemVNdWx0aXBsaWVyID0gMTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMy
X1NSR0I4OiBibG9ja1NpemVNdWx0aXBsaWVyID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MTogYmxvY2tTaXplTXVsdGlwbGllciA9IDE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VD
b21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExOiBi
bG9ja1NpemVNdWx0aXBsaWVyID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXBy
ZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX0VBQ19SR0JBODogYmxvY2tTaXplTXVsdGlwbGllciA9
IDI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQu
RVRDMl9FQUNfU1JHQjhfQUxQSEE4OiBibG9ja1NpemVNdWx0aXBsaWVyID0gMjsgYnJlYWs7CisK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdV
bnN1cHBvcnRlZCBmb3JtYXQgJyArIGZvcm1hdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLm1fYXJyYXkgPSBuZXcgQXJyYXlCdWZmZXIoYmxvY2tT
aXplTXVsdGlwbGllciAqIDggKiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVwKHRoaXMu
bV93aWR0aCwgNCkgKiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3VuZFVwKHRoaXMubV9oZWln
aHQsIDQpKTsKKyAgICAgICAgdGhpcy5tX2RhdGEgPSBuZXcgVWludDhBcnJheSh0aGlzLm1fYXJy
YXkpOworICAgIH0KKyAgICAvLyBlbHNlIGlmIChpc0FTVENGb3JtYXQodGhpcy5tX2Zvcm1hdCkp
CisgICAgLy8geworICAgIC8vICAgICBpZiAodGhpcy5tX2RlcHRoID4gMSkKKyAgICAvLyAgICAg
ICAgIHRocm93IHRjdTo6SW50ZXJuYWxFcnJvcigiM0QgQVNUQyB0ZXh0dXJlcyBub3QgY3VycmVu
dGx5IHN1cHBvcnRlZCIpOworCisgICAgLy8gICAgIGNvbnN0IElWZWMzIGJsb2NrU2l6ZSA9IGdl
dEFTVENCbG9ja1NpemUodGhpcy5tX2Zvcm1hdCk7CisgICAgLy8gICAgIHRoaXMubV9kYXRhLnJl
c2l6ZShBU1RDX0JMT0NLX1NJWkVfQllURVMgKiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5kaXZSb3Vu
ZFVwKHRoaXMubV93aWR0aCwgYmxvY2tTaXplWzBdKSAqIHRjdUNvbXByZXNzZWRUZXh0dXJlLmRp
dlJvdW5kVXAodGhpcy5tX2hlaWdodCwgYmxvY2tTaXplWzFdKSAqIHRjdUNvbXByZXNzZWRUZXh0
dXJlLmRpdlJvdW5kVXAodGhpcy5tX2RlcHRoLCBibG9ja1NpemVbMl0pKTsKKyAgICAvLyB9Cisg
ICAgLy8gZWxzZQorICAgIC8vIHsKKyAgICAvLyAgICAgREVfQVNTRVJUKHRoaXMubV9mb3JtYXQg
PT0gRk9STUFUX0xBU1QpOworICAgIC8vICAgICBERV9BU1NFUlQodGhpcy5tX3dpZHRoID09IDAg
JiYgdGhpcy5tX2hlaWdodCA9PSAwICYmIHRoaXMubV9kZXB0aCA9PSAwKTsKKyAgICAvLyAgICAg
dGhpcy5tX2RhdGEucmVzaXplKDApOworICAgIC8vIH0KK307CisKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8q
IQorICogXGJyaWVmIEdldCB1bmNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQKKyAqLy8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwordGN1Q29tcHJlc3NlZFRleHR1cmUuQ29tcHJlc3NlZFRleHR1cmUucHJvdG90eXBl
LmdldFVuY29tcHJlc3NlZEZvcm1hdCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0Y3VDb21wcmVz
c2VkVGV4dHVyZS5pc0V0Y0Zvcm1hdCh0aGlzLm1fZm9ybWF0KSkgeworICAgICAgICBzd2l0Y2gg
KHRoaXMubV9mb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUu
Rm9ybWF0LkVUQzFfUkdCODogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VDgpOworICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRUFDX1Ix
MTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQxNik7CisgICAgICAgICAg
ICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfU0lHTkVEX1IxMTogcmV0dXJu
IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUiwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNik7CisgICAgICAgICAgICBjYXNlIHRj
dUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfUkcxMTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJl
LlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuVU5PUk1fSU5UMTYpOworICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4
dHVyZS5Gb3JtYXQuRUFDX1NJR05FRF9SRzExOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVy
ZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5TTk9STV9JTlQxNik7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZv
cm1hdC5FVEMyX1JHQjg6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4
KTsKKyAgICAgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfU1JH
Qjg6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLnNSR0IsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7CisgICAgICAg
ICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTsK
KyAgICAgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfU1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQo
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5P
Uk1fSU5UOCk7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5F
VEMyX0VBQ19SR0JBODogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4
KTsKKyAgICAgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfRUFD
X1NSR0I4X0FMUEhBODogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuc1JHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
OCk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignVW5zdXBwb3J0ZWQgZm9ybWF0ICcgKyB0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAvLyBlbHNlIGlmIChpc0FTVENGb3JtYXQobV9mb3JtYXQpKQorICAgIC8vIHsKKyAg
ICAvLyAgICAgaWYgKGlzQVNUQ1NSR0JGb3JtYXQobV9mb3JtYXQpKQorICAgIC8vICAgICAgICAg
cmV0dXJuIFRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsVHlwZS5zUkdCQSwgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTsKKyAgICAvLyAgICAgZWxzZQorICAgIC8vICAg
ICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsVHlwZS5SR0JBLCB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQpOworICAgIC8vIH0KKyAgICAvLyBlbHNl
CisgICAgLy8geworICAgIC8vICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgIC8vICAgICByZXR1
cm4gVGV4dHVyZUZvcm1hdCgpOworICAgIC8vIH0KK307CisKKy8qKgorICogRGVjb2RlIHRvIHVu
Y29tcHJlc3NlZCBwaXhlbCBkYXRhCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9IGRzdCBEZXN0aW5hdGlvbiBidWZmZXIKKyAqLwordGN1Q29tcHJlc3NlZFRleHR1cmUu
Q29tcHJlc3NlZFRleHR1cmUucHJvdG90eXBlLmRlY29tcHJlc3MgPSBmdW5jdGlvbihkc3QpIHsK
KyAgICBERV9BU1NFUlQoZHN0LmdldFdpZHRoKCkgPT0gdGhpcy5tX3dpZHRoICYmIGRzdC5nZXRI
ZWlnaHQoKSA9PSB0aGlzLm1faGVpZ2h0ICYmIGRzdC5nZXREZXB0aCgpID09IDEpOworICAgIHZh
ciBmb3JtYXQgPSB0aGlzLmdldFVuY29tcHJlc3NlZEZvcm1hdCgpOworICAgIGlmIChkc3QuZ2V0
Rm9ybWF0KCkub3JkZXIgIT0gZm9ybWF0Lm9yZGVyIHx8IGRzdC5nZXRGb3JtYXQoKS50eXBlICE9
IGZvcm1hdC50eXBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm1hdHMgZG8gbm90IG1h
dGNoLicpOworCisgICAgaWYgKHRjdUNvbXByZXNzZWRUZXh0dXJlLmlzRXRjRm9ybWF0KHRoaXMu
bV9mb3JtYXQpKSB7CisgICAgICAgIHN3aXRjaCAodGhpcy5tX2Zvcm1hdCkgeworICAgICAgICAg
ICAgLy8gY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMV9SR0I4OiBkZWNvbXBy
ZXNzRVRDMSAoZHN0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQsIHRoaXMubV9kYXRhKTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNf
UjExOiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5ldGNEZWNvbXByZXNzSW50ZXJuYWwuZGVjb21wcmVz
c0VBQ19SMTEoZHN0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQsIHRoaXMubV9hcnJheSwg
ZmFsc2UpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9y
bWF0LkVBQ19TSUdORURfUjExOiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5ldGNEZWNvbXByZXNzSW50
ZXJuYWwuZGVjb21wcmVzc0VBQ19SMTEoZHN0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQs
IHRoaXMubV9hcnJheSwgdHJ1ZSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVz
c2VkVGV4dHVyZS5Gb3JtYXQuRUFDX1JHMTE6IHRjdUNvbXByZXNzZWRUZXh0dXJlLmV0Y0RlY29t
cHJlc3NJbnRlcm5hbC5kZWNvbXByZXNzRUFDX1JHMTEoZHN0LCB0aGlzLm1fd2lkdGgsIHRoaXMu
bV9oZWlnaHQsIHRoaXMubV9hcnJheSwgZmFsc2UpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
dGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVBQ19TSUdORURfUkcxMTogdGN1Q29tcHJlc3Nl
ZFRleHR1cmUuZXRjRGVjb21wcmVzc0ludGVybmFsLmRlY29tcHJlc3NFQUNfUkcxMShkc3QsIHRo
aXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2FycmF5LCB0cnVlKTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1JHQjg6IHRj
dUNvbXByZXNzZWRUZXh0dXJlLmV0Y0RlY29tcHJlc3NJbnRlcm5hbC5kZWNvbXByZXNzRVRDMihk
c3QsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2FycmF5KTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1NSR0I4OiB0
Y3VDb21wcmVzc2VkVGV4dHVyZS5ldGNEZWNvbXByZXNzSW50ZXJuYWwuZGVjb21wcmVzc0VUQzIo
ZHN0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQsIHRoaXMubV9hcnJheSk7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9SR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTE6IHRjdUNvbXByZXNzZWRUZXh0dXJlLmV0Y0RlY29tcHJlc3NJbnRl
cm5hbC5kZWNvbXByZXNzRVRDMl9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTEoZHN0LCB0aGlzLm1f
d2lkdGgsIHRoaXMubV9oZWlnaHQsIHRoaXMubV9hcnJheSk7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9TUkdCOF9QVU5DSFRIUk9VR0hf
QUxQSEExOiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5ldGNEZWNvbXByZXNzSW50ZXJuYWwuZGVjb21w
cmVzc0VUQzJfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExKGRzdCwgdGhpcy5tX3dpZHRoLCB0aGlz
Lm1faGVpZ2h0LCB0aGlzLm1fYXJyYXkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1Q29t
cHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfRUFDX1JHQkE4OiB0Y3VDb21wcmVzc2VkVGV4dHVy
ZS5ldGNEZWNvbXByZXNzSW50ZXJuYWwuZGVjb21wcmVzc0VUQzJfRUFDX1JHQkE4KGRzdCwgdGhp
cy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fYXJyYXkpOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfRUFDX1NSR0I4X0FMUEhB
ODogdGN1Q29tcHJlc3NlZFRleHR1cmUuZXRjRGVjb21wcmVzc0ludGVybmFsLmRlY29tcHJlc3NF
VEMyX0VBQ19SR0JBOChkc3QsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2Fy
cmF5KTsgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmb3JtYXQgJyArIHRoaXMubV9mb3JtYXQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIC8vIGVsc2UgaWYgKGlz
QVNUQ0Zvcm1hdChtX2Zvcm1hdCkpCisgICAgLy8geworICAgIC8vICAgICBjb25zdCB0Y3U6OklW
ZWMzIGJsb2NrU2l6ZSA9IGdldEFTVENCbG9ja1NpemUobV9mb3JtYXQpOworICAgIC8vICAgICBj
b25zdCBib29sIGlzU1JHQkZvcm1hdCA9IGlzQVNUQ1NSR0JGb3JtYXQobV9mb3JtYXQpOworCisg
ICAgLy8gICAgIGlmIChibG9ja1NpemVbMl0gPiAxKQorICAgIC8vICAgICAgICAgdGhyb3cgdGN1
OjpJbnRlcm5hbEVycm9yKCIzRCBBU1RDIHRleHR1cmVzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVk
Iik7CisKKyAgICAvLyAgICAgZGVjb21wcmVzc0FTVEMoZHN0LCBtX3dpZHRoLCBtX2hlaWdodCwg
Jm1fZGF0YVswXSwgYmxvY2tTaXplWzBdLCBibG9ja1NpemVbMV0sIGlzU1JHQkZvcm1hdCwgaXNT
UkdCRm9ybWF0IHx8IHBhcmFtcy5pc0FTVENNb2RlTERSKTsKKyAgICAvLyB9IC8qKi8KKyAgICBl
bHNlCisgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZm9ybWF0ICcgKyB0aGlz
Lm1fZm9ybWF0KTsKK307CisKKyB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VGbG9hdC5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL2NvbW1vbi90Y3VGbG9hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2M3NGZlNWE5YzIwNTA5ZTE4
NjEwMzE4MTU3YzBkNDU5MWIwYTM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUZs
b2F0LmpzCkBAIC0wLDAgKzEsODYyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVt
ZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIw
MTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICog
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Jyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCit2YXIgdGN1RmxvYXQgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Owor
dmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKwordmFyIERFX0FT
U0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICBpZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignQXNzZXJ0IGZhaWxlZCcpOworfTsKKwordGN1RmxvYXQuRmxvYXRGbGFncyA9IHsKKyAgICBG
TE9BVF9IQVNfU0lHTjogKDEgPDwgMCksCisgICAgRkxPQVRfU1VQUE9SVF9ERU5PUk06ICgxIDw8
IDEpCit9OworCisvKioKKyAqIERlZmluZXMgYSB0Y3VGbG9hdC5GbG9hdERlc2NyaXB0aW9uIG9i
amVjdCwgd2hpY2ggaXMgYW4gZXNzZW50aWFsIHBhcnQgb2YgdGhlIHRjdUZsb2F0LmRlRmxvYXQg
dHlwZS4KKyAqIEhvbGRzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHNoYXBlcyB0aGUgdGN1RmxvYXQu
ZGVGbG9hdC4KKyAqIEBjb25zdHJ1Y3RvcgorICovCit0Y3VGbG9hdC5GbG9hdERlc2NyaXB0aW9u
ID0gZnVuY3Rpb24oZXhwb25lbnRCaXRzLCBtYW50aXNzYUJpdHMsIGV4cG9uZW50QmlhcywgZmxh
Z3MpIHsKKyAgICB0aGlzLkV4cG9uZW50Qml0cyA9IGV4cG9uZW50Qml0czsKKyAgICB0aGlzLk1h
bnRpc3NhQml0cyA9IG1hbnRpc3NhQml0czsKKyAgICB0aGlzLkV4cG9uZW50QmlhcyA9IGV4cG9u
ZW50QmlhczsKKyAgICB0aGlzLkZsYWdzID0gZmxhZ3M7CisKKyAgICB0aGlzLnRvdGFsQml0U2l6
ZSA9IDEgKyB0aGlzLkV4cG9uZW50Qml0cyArIHRoaXMuTWFudGlzc2FCaXRzOworICAgIHRoaXMu
dG90YWxCeXRlU2l6ZSA9IE1hdGguZmxvb3IodGhpcy50b3RhbEJpdFNpemUgLyA4KSArICgodGhp
cy50b3RhbEJpdFNpemUgJSA4KSA+IDAgPyAxIDogMCk7Cit9OworCisvKioKKyAqIEJ1aWxkcyBh
IHplcm8gZmxvYXQgb2YgdGhlIGN1cnJlbnQgYmluYXJ5IGRlc2NyaXB0aW9uLgorICogQHBhcmFt
IHtudW1iZXJ9IHNpZ24KKyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZs
b2F0LkZsb2F0RGVzY3JpcHRpb24ucHJvdG90eXBlLnplcm8gPSBmdW5jdGlvbihzaWduKSB7Cisg
ICAgcmV0dXJuIHRjdUZsb2F0Lm5ld0RlRmxvYXRGcm9tUGFyYW1ldGVycyh0aGlzLnplcm9OdW1i
ZXIoc2lnbiksIHRoaXMpOworfTsKKwordGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbi5wcm90b3R5
cGUuemVyb051bWJlciA9IGZ1bmN0aW9uKHNpZ24pIHsKKyAgICByZXR1cm4gZGVNYXRoLnNoaWZ0
TGVmdCgoc2lnbiA+IDAgPyAwIDogMSksICh0aGlzLkV4cG9uZW50Qml0cyArIHRoaXMuTWFudGlz
c2FCaXRzKSk7Cit9OworCisvKioKKyAqIEJ1aWxkcyBhbiBpbmZpbml0eSBmbG9hdCByZXByZXNl
bnRhdGlvbiBvZiB0aGUgY3VycmVudCBiaW5hcnkgZGVzY3JpcHRpb24uCisgKiBAcGFyYW0ge251
bWJlcn0gc2lnbgorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0KKyAqLwordGN1RmxvYXQu
RmxvYXREZXNjcmlwdGlvbi5wcm90b3R5cGUuaW5mID0gZnVuY3Rpb24oc2lnbikgeworICAgIHJl
dHVybiB0Y3VGbG9hdC5uZXdEZUZsb2F0RnJvbVBhcmFtZXRlcnModGhpcy5pbmZOdW1iZXIoc2ln
biksIHRoaXMpOworfTsKKwordGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbi5wcm90b3R5cGUuaW5m
TnVtYmVyID0gZnVuY3Rpb24oc2lnbikgeworICAgIHJldHVybiAoKHNpZ24gPiAwID8gMCA6IDEp
IDw8ICh0aGlzLkV4cG9uZW50Qml0cyArIHRoaXMuTWFudGlzc2FCaXRzKSkgfAorICAgICAgICBk
ZU1hdGguc2hpZnRMZWZ0KCgoMSA8PCB0aGlzLkV4cG9uZW50Qml0cykgLSAxKSwgdGhpcy5NYW50
aXNzYUJpdHMpOyAvL1VubGVzcyB1c2luZyB2ZXJ5IGxhcmdlIGV4cG9uZW50IHR5cGVzLCBuYXRp
dmUgc2hpZnQgaXMgc2FmZSBoZXJlLCBpIGd1ZXNzLgorfTsKKworLyoqCisgKiBCdWlsZHMgYSBO
YU4gZmxvYXQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgYmluYXJ5IGRlc2NyaXB0aW9u
LgorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0KKyAqLwordGN1RmxvYXQuRmxvYXREZXNj
cmlwdGlvbi5wcm90b3R5cGUubmFuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRjdUZsb2F0
Lm5ld0RlRmxvYXRGcm9tUGFyYW1ldGVycyh0aGlzLm5hbk51bWJlcigpLCB0aGlzKTsKK307CisK
K3RjdUZsb2F0LkZsb2F0RGVzY3JpcHRpb24ucHJvdG90eXBlLm5hbk51bWJlciA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBkZU1hdGguc2hpZnRMZWZ0KDEsICh0aGlzLkV4cG9uZW50Qml0cyAr
IHRoaXMuTWFudGlzc2FCaXRzKSkgLSAxOworfTsKKworLyoqCisgKiBCdWlsZHMgYSB0Y3VGbG9h
dC5kZUZsb2F0IG51bWJlciBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gYW5kIHRoZSBnaXZlbgor
ICogc2lnbiwgZXhwb25lbnQgYW5kIG1hbnRpc3NhIHZhbHVlcy4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBzaWduCisgKiBAcGFyYW0ge251bWJlcn0gZXhwb25lbnQKKyAqIEBwYXJhbSB7bnVtYmVyfSBt
YW50aXNzYQorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0KKyAqLwordGN1RmxvYXQuRmxv
YXREZXNjcmlwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0ID0gZnVuY3Rpb24oc2lnbiwgZXhwb25l
bnQsIG1hbnRpc3NhKSB7CisgICAgLy8gUmVwdXJwb3NlIHRoaXMgb3RoZXJ3aXNlIGludmFsaWQg
aW5wdXQgYXMgYSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIHplcm8gKG5vIG5lZWQgZm9yIGNhbGxl
ciB0byBjYXJlIGFib3V0IGludGVybmFsIHJlcHJlc2VudGF0aW9uKQorICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIGlzU2hvcnRoYW5kWmVybyA9IGV4cG9uZW50ID09IDAgJiYgbWFudGlz
c2EgPT0gMDsKKworICAgIC8vIEhhbmRsZXMgdGhlIHR5cGljYWwgbm90YXRpb24gZm9yIHplcm8g
KG1pbiBleHBvbmVudCwgbWFudGlzc2EgMCkuIE5vdGUgdGhhdCB0aGUgZXhwb25lbnQgdXN1YWxs
eSB1c2VkIGV4cG9uZW50ICgtRXhwb25lbnRCaWFzKSBmb3IgemVyby9zdWJub3JtYWxzIGlzIG5v
dCB1c2VkLgorICAgIC8vIEluc3RlYWQgemVyby9zdWJub3JtYWxzIGhhdmUgdGhlIChub3JtYWxs
eSBpbXBsaWNpdCkgbGVhZGluZyBtYW50aXNzYSBiaXQgc2V0IHRvIHplcm8uCisKKyAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0Rlbm9ybU9yWmVybyA9IChleHBvbmVudCA9PSAxIC0g
dGhpcy5FeHBvbmVudEJpYXMpICYmIChkZU1hdGguc2hpZnRSaWdodChtYW50aXNzYSwgdGhpcy5N
YW50aXNzYUJpdHMpID09IDApOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcyA9IGRl
TWF0aC5zaGlmdExlZnQoKHNpZ24gPCAwID8gMSA6IDApLCAodGhpcy5FeHBvbmVudEJpdHMgKyB0
aGlzLk1hbnRpc3NhQml0cykpOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhwID0g
KGlzU2hvcnRoYW5kWmVybyB8fCBpc0Rlbm9ybU9yWmVybykgPyAwIDogZXhwb25lbnQgKyB0aGlz
LkV4cG9uZW50QmlhczsKKworICAgIERFX0FTU0VSVChzaWduID09ICsxIHx8IHNpZ24gPT0gLTEp
OworICAgIERFX0FTU0VSVChpc1Nob3J0aGFuZFplcm8gfHwgaXNEZW5vcm1Pclplcm8gfHwgZGVN
YXRoLnNoaWZ0UmlnaHQobWFudGlzc2EsIHRoaXMuTWFudGlzc2FCaXRzKSA9PSAxKTsKKyAgICBE
RV9BU1NFUlQoKGV4cCA+PiB0aGlzLkV4cG9uZW50Qml0cykgPT0gMCk7IC8vTmF0aXZlIHNoaWZ0
IGlzIHNhZmUKKworICAgIHJldHVybiB0Y3VGbG9hdC5uZXdEZUZsb2F0RnJvbVBhcmFtZXRlcnMo
CisgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgK
KyAgICAgICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgIGRlTWF0aC5zaGlmdExlZnQoZXhw
LCB0aGlzLk1hbnRpc3NhQml0cyksCisgICAgICAgICAgICAgICAgZGVNYXRoLkJpbmFyeU9wLk9S
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAg
ICAgICAgIG1hbnRpc3NhLAorICAgICAgICAgICAgICAgIGRlTWF0aC5zaGlmdExlZnQoMSwgdGhp
cy5NYW50aXNzYUJpdHMpIC0gMSwKKyAgICAgICAgICAgICAgICBkZU1hdGguQmluYXJ5T3AuQU5E
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgZGVNYXRoLkJpbmFyeU9wLk9SCisgICAgICAg
ICksCisgICAgICAgIHRoaXMKKyAgICApOworfTsKKworLyoqCisgKiBCdWlsZHMgYSB0Y3VGbG9h
dC5kZUZsb2F0IG51bWJlciBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gYW5kIHRoZSBnaXZlbgor
ICogc2lnbiwgZXhwb25lbnQgYW5kIGJpbmFyeSBtYW50aXNzYSB2YWx1ZXMuCisgKiBAcGFyYW0g
e251bWJlcn0gc2lnbgorICogQHBhcmFtIHtudW1iZXJ9IGV4cG9uZW50CisgKiBAcGFyYW0ge251
bWJlcn0gbWFudGlzc2FCaXRzIFRoZSByYXcgYmluYXJ5IHJlcHJlc2VudGF0aW9uLgorICogQHJl
dHVybiB7dGN1RmxvYXQuZGVGbG9hdH0KKyAqLwordGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbi5w
cm90b3R5cGUuY29uc3RydWN0Qml0cyA9IGZ1bmN0aW9uKHNpZ24sIGV4cG9uZW50LCBtYW50aXNz
YUJpdHMpIHsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNpZ25CaXQgPSBzaWduIDwg
MCA/IDEgOiAwOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhwb25lbnRCaXRzID0g
ZXhwb25lbnQgKyB0aGlzLkV4cG9uZW50QmlhczsKKworICAgIERFX0FTU0VSVChzaWduID09ICsx
IHx8IHNpZ24gPT0gLTEpOworICAgIERFX0FTU0VSVCgoZXhwb25lbnRCaXRzID4+IHRoaXMuRXhw
b25lbnRCaXRzKSA9PSAwKTsKKyAgICBERV9BU1NFUlQoZGVNYXRoLnNoaWZ0UmlnaHQobWFudGlz
c2FCaXRzLCB0aGlzLk1hbnRpc3NhQml0cykgPT0gMCk7CisKKyAgICByZXR1cm4gdGN1RmxvYXQu
bmV3RGVGbG9hdEZyb21QYXJhbWV0ZXJzKAorICAgICAgICBkZU1hdGguYmluYXJ5T3AoCisgICAg
ICAgICAgICBkZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgZGVNYXRoLnNoaWZ0TGVm
dCgKKyAgICAgICAgICAgICAgICAgICAgc2lnbkJpdCwKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5FeHBvbmVudEJpdHMgKyB0aGlzLk1hbnRpc3NhQml0cworICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgZGVNYXRoLnNoaWZ0TGVmdChleHBvbmVudEJpdHMsIHRoaXMuTWFudGlz
c2FCaXRzKSwKKyAgICAgICAgICAgICAgICBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICBtYW50aXNzYUJpdHMsCisgICAgICAgICAgICBkZU1hdGguQmluYXJ5
T3AuT1IKKyAgICAgICAgKSwKKyAgICAgICAgdGhpcworICAgICk7Cit9OworCisvKioKKyAqIENv
bnZlcnRzIGEgdGN1RmxvYXQuZGVGbG9hdCBmcm9tIGl0J3Mgb3duIGZvcm1hdCBkZXNjcmlwdGlv
biBpbnRvIHRoZSBmb3JtYXQgZGVzY3JpYmVkCisgKiBieSB0aGlzIGRlc2NyaXB0aW9uLgorICog
QHBhcmFtIHt0Y3VGbG9hdC5kZUZsb2F0fSBvdGhlciBPdGhlciBmbG9hdCB0byBjb252ZXJ0IHRv
IHRoaXMgZm9ybWF0IGRlc2NyaXB0aW9uLgorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0g
Y29udmVydGVkIHRjdUZsb2F0LmRlRmxvYXQKKyAqLwordGN1RmxvYXQuRmxvYXREZXNjcmlwdGlv
bi5wcm90b3R5cGUuY29udmVydCA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBvdGhlckV4cG9uZW50Qml0cyA9IG90aGVyLmRlc2NyaXB0aW9uLkV4cG9u
ZW50Qml0czsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG90aGVyTWFudGlzc2FCaXRz
ID0gb3RoZXIuZGVzY3JpcHRpb24uTWFudGlzc2FCaXRzOworICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgb3RoZXJFeHBvbmVudEJpYXMgPSBvdGhlci5kZXNjcmlwdGlvbi5FeHBvbmVudEJp
YXM7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdGhlckZsYWdzID0gb3RoZXIuZGVz
Y3JpcHRpb24uRmxhZ3M7CisKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJpdERpZmY7
CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoYWxmOworICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgYmlhczsKKworICAgIGlmICghKHRoaXMuRmxhZ3MgJiB0Y3VGbG9hdC5GbG9h
dEZsYWdzLkZMT0FUX0hBU19TSUdOKSAmJiBvdGhlci5zaWduKCkgPCAwKSB7CisgICAgICAgIC8v
IE5lZ2F0aXZlIG51bWJlciwgdHJ1bmNhdGUgdG8gemVyby4KKyAgICAgICAgcmV0dXJuIHRoaXMu
emVybygrMSk7CisgICAgfSBlbHNlIGlmIChvdGhlci5pc0luZigpKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmluZihvdGhlci5zaWduKCkpOworICAgIH0gZWxzZSBpZiAob3RoZXIuaXNOYU4oKSkg
eworICAgICAgICByZXR1cm4gdGhpcy5uYW4oKTsKKyAgICB9IGVsc2UgaWYgKG90aGVyLmlzWmVy
bygpKSB7CisgICAgICAgIHJldHVybiB0aGlzLnplcm8ob3RoZXIuc2lnbigpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVNaW4gPSAxIC0gdGhpcy5F
eHBvbmVudEJpYXM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZU1heCA9ICgo
MSA8PCB0aGlzLkV4cG9uZW50Qml0cykgLSAyKSAtIHRoaXMuRXhwb25lbnRCaWFzOworCisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcyA9IGRlTWF0aC5zaGlmdExlZnQob3RoZXIu
c2lnbkJpdCgpLCAodGhpcy5FeHBvbmVudEJpdHMgKyB0aGlzLk1hbnRpc3NhQml0cykpOyAvLyBc
bm90ZSBOb3Qgc2lnbiwgYnV0IHNpZ24gYml0LgorICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGUgPSBvdGhlci5leHBvbmVudCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG0gPSBvdGhlci5tYW50aXNzYSgpOworCisgICAgICAgIC8vIE5vcm1hbGl6ZSBkZW5v
cm1hbGl6ZWQgdmFsdWVzIHByaW9yIHRvIGNvbnZlcnNpb24uCisgICAgICAgIHdoaWxlICghZGVN
YXRoLmJpbmFyeU9wKG0sIGRlTWF0aC5zaGlmdExlZnQoMSwgb3RoZXJNYW50aXNzYUJpdHMpLCBk
ZU1hdGguQmluYXJ5T3AuQU5EKSkgeworICAgICAgICAgICAgbSA9IGRlTWF0aC5zaGlmdExlZnQo
bSwgMSk7CisgICAgICAgICAgICBlIC09IDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZSA8
IGVNaW4pIHsKKyAgICAgICAgICAgIC8vIFVuZGVyZmxvdy4KKyAgICAgICAgICAgIGlmICgodGhp
cy5GbGFncyAmIHRjdUZsb2F0LkZsb2F0RmxhZ3MuRkxPQVRfU1VQUE9SVF9ERU5PUk0pICYmIChl
TWluIC0gZSAtIDEgPD0gdGhpcy5NYW50aXNzYUJpdHMpKSB7CisgICAgICAgICAgICAgICAgLy8g
U2hpZnQgYW5kIHJvdW5kIChSVEUpLgorICAgICAgICAgICAgICAgIGJpdERpZmYgPSAob3RoZXJN
YW50aXNzYUJpdHMgLSB0aGlzLk1hbnRpc3NhQml0cykgKyAoZU1pbiAtIGUpOworICAgICAgICAg
ICAgICAgIGhhbGYgPSBkZU1hdGguc2hpZnRMZWZ0KDEsIChiaXREaWZmIC0gMSkpIC0gMTsKKyAg
ICAgICAgICAgICAgICBiaWFzID0gZGVNYXRoLmJpbmFyeU9wKGRlTWF0aC5zaGlmdFJpZ2h0KG0s
IGJpdERpZmYpLCAxLCBkZU1hdGguQmluYXJ5T3AuQU5EKTsKKworICAgICAgICAgICAgICAgIHJl
dHVybiB0Y3VGbG9hdC5uZXdEZUZsb2F0RnJvbVBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAg
ICAgIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBkZU1hdGguc2hpZnRSaWdodCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtICsgaGFsZiArIGJpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0
RGlmZgorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlTWF0aC5CaW5hcnlPcC5PUgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
ICAgICAgICB0aGlzCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm8ob3RoZXIuc2lnbigpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFJlbW92ZSBsZWFkaW5nIDEuCisgICAgICAgICAgICBtID0g
ZGVNYXRoLmJpbmFyeU9wKG0sIGRlTWF0aC5iaW5hcnlOb3QoZGVNYXRoLnNoaWZ0TGVmdCgxLCBv
dGhlck1hbnRpc3NhQml0cykpLCBkZU1hdGguQmluYXJ5T3AuQU5EKTsKKworICAgICAgICAgICAg
aWYgKHRoaXMuTWFudGlzc2FCaXRzIDwgb3RoZXJNYW50aXNzYUJpdHMpIHsKKyAgICAgICAgICAg
ICAgICAvLyBSb3VuZCBtYW50aXNzYSAocm91bmQgdG8gbmVhcmVzdCBldmVuKS4KKyAgICAgICAg
ICAgICAgICBiaXREaWZmID0gb3RoZXJNYW50aXNzYUJpdHMgLSB0aGlzLk1hbnRpc3NhQml0czsK
KyAgICAgICAgICAgICAgICBoYWxmID0gZGVNYXRoLnNoaWZ0TGVmdCgxLCAoYml0RGlmZiAtIDEp
KSAtIDE7CisgICAgICAgICAgICAgICAgYmlhcyA9IGRlTWF0aC5iaW5hcnlPcChkZU1hdGguc2hp
ZnRSaWdodChtLCBiaXREaWZmKSwgMSwgZGVNYXRoLkJpbmFyeU9wLkFORCk7CisKKyAgICAgICAg
ICAgICAgICBtID0gZGVNYXRoLnNoaWZ0UmlnaHQobSArIGhhbGYgKyBiaWFzLCBiaXREaWZmKTsK
KworICAgICAgICAgICAgICAgIGlmIChkZU1hdGguYmluYXJ5T3AobSwgZGVNYXRoLnNoaWZ0TGVm
dCgxLCB0aGlzLk1hbnRpc3NhQml0cyksIGRlTWF0aC5CaW5hcnlPcC5BTkQpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIE92ZXJmbG93IGluIG1hbnRpc3NhLgorICAgICAgICAgICAgICAgICAg
ICBtID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZSArPSAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYml0RGlmZiA9IHRoaXMuTWFu
dGlzc2FCaXRzIC0gb3RoZXJNYW50aXNzYUJpdHM7CisgICAgICAgICAgICAgICAgbSA9IGRlTWF0
aC5zaGlmdExlZnQobSwgYml0RGlmZik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChlID4gZU1heCkgeworICAgICAgICAgICAgICAgIC8vIE92ZXJmbG93LgorICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLmluZihvdGhlci5zaWduKCkpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5SYW5nZTMyKGUsIGVNaW4sIGVN
YXgpKTsKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZGVNYXRoLmJpbmFyeU9wKChlICsgdGhp
cy5FeHBvbmVudEJpYXMpLCBkZU1hdGguYmluYXJ5Tm90KGRlTWF0aC5zaGlmdExlZnQoMSwgdGhp
cy5FeHBvbmVudEJpdHMpIC0gMSksIGRlTWF0aC5CaW5hcnlPcC5BTkQpID09IDApOworICAgICAg
ICAgICAgICAgIERFX0FTU0VSVChkZU1hdGguYmluYXJ5T3AobSwgZGVNYXRoLmJpbmFyeU5vdChk
ZU1hdGguc2hpZnRMZWZ0KDEsIHRoaXMuTWFudGlzc2FCaXRzKSAtIDEpLCBkZU1hdGguQmluYXJ5
T3AuQU5EKSA9PSAwKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0Y3VGbG9hdC5uZXdEZUZs
b2F0RnJvbVBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zaGlm
dExlZnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgKyB0aGlzLkV4cG9uZW50
QmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NYW50aXNzYUJpdHMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlTWF0aC5CaW5hcnlPcC5PUgorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG0sCisgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguQmlu
YXJ5T3AuT1IKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgdGhp
cworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
OworCisvKioKKyAqIHRjdUZsb2F0LmRlRmxvYXQgY2xhc3MgLSBFbXB0eSBjb25zdHJ1Y3Rvciwg
YnVpbGRzIGEgMzIgYml0IGZsb2F0IGJ5IGRlZmF1bHQKKyAqIEBjb25zdHJ1Y3RvcgorICovCit0
Y3VGbG9hdC5kZUZsb2F0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRj
dUZsb2F0LmRlc2NyaXB0aW9uMzI7CisKKyAgICB0aGlzLm1fYnVmZmVyID0gbnVsbDsKKyAgICB0
aGlzLm1fYXJyYXkgPSBudWxsOworICAgIHRoaXMubV9hcnJheTMyID0gbnVsbDsKKyAgICB0aGlz
LmJpdFZhbHVlID0gdW5kZWZpbmVkOworICAgIHRoaXMuc2lnblZhbHVlID0gdW5kZWZpbmVkOwor
ICAgIHRoaXMuZXhwVmFsdWUgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5tYW50aXNzYVZhbHVlID0g
dW5kZWZpbmVkOworCisgICAgdGhpcy5tX3ZhbHVlID0gMDsKK307CisKKy8qKgorICogYnVmZmVy
IC0gR2V0IHRoZSBkZUZsb2F0J3MgZXhpc3RpbmcgQXJyYXlCdWZmZXIgb3IgY3JlYXRlIG9uZSBp
ZiBub25lIGV4aXN0cy4KKyAqIEByZXR1cm4ge0FycmF5QnVmZmVyfQorICovCit0Y3VGbG9hdC5k
ZUZsb2F0LnByb3RvdHlwZS5idWZmZXIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIXRoaXMubV9i
dWZmZXIpCisgICAgICAgIHRoaXMubV9idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodGhpcy5kZXNj
cmlwdGlvbi50b3RhbEJ5dGVTaXplKTsKKyAgICByZXR1cm4gdGhpcy5tX2J1ZmZlcjsKK307CisK
Ky8qKgorICogYXJyYXkgLSBHZXQgdGhlIGRlRmxvYXQncyBleGlzdGluZyBVaW50OEFycmF5IG9y
IGNyZWF0ZSBvbmUgaWYgbm9uZSBleGlzdHMuCisgKiBAcmV0dXJuIHtVaW50OEFycmF5fQorICov
Cit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5hcnJheSA9IGZ1bmN0aW9uKCkgeworICAgIGlm
ICghdGhpcy5tX2FycmF5KQorICAgICAgICB0aGlzLm1fYXJyYXkgPSBuZXcgVWludDhBcnJheSh0
aGlzLmJ1ZmZlcigpKTsKKyAgICByZXR1cm4gdGhpcy5tX2FycmF5OworfTsKKworLyoqCisgKiBh
cnJheTMyIC0gR2V0IHRoZSBkZUZsb2F0J3MgZXhpc3RpbmcgVWludDMyQXJyYXkgb3IgY3JlYXRl
IG9uZSBpZiBub25lIGV4aXN0cy4KKyAqIEByZXR1cm4ge1VpbnQzMkFycmF5fQorICovCit0Y3VG
bG9hdC5kZUZsb2F0LnByb3RvdHlwZS5hcnJheTMyID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCF0
aGlzLm1fYXJyYXkzMikKKyAgICAgICAgdGhpcy5tX2FycmF5MzIgPSBuZXcgVWludDMyQXJyYXko
dGhpcy5idWZmZXIoKSk7CisgICAgcmV0dXJuIHRoaXMubV9hcnJheTMyOworfTsKKworLyoqCisg
KiBkZUZsb2F0TnVtYmVyIC0gVG8gYmUgdXNlZCBpbW1lZGlhdGVseSBhZnRlciBjb25zdHJ1Y3Rv
cgorICogQnVpbGRzIGEgMzItYml0IHRjdUZsb2F0LmRlRmxvYXQgYmFzZWQgb24gYSA2NC1iaXQg
SlMgbnVtYmVyLgorICogQHBhcmFtIHtudW1iZXJ9IGpzbnVtYmVyCisgKiBAcmV0dXJuIHt0Y3VG
bG9hdC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5kZUZsb2F0TnVt
YmVyID0gZnVuY3Rpb24oanNudW1iZXIpIHsKKyAgICB2YXIgdmlldzMyID0gbmV3IERhdGFWaWV3
KHRoaXMuYnVmZmVyKCkpOworICAgIHZpZXczMi5zZXRGbG9hdDMyKDAsIGpzbnVtYmVyLCB0cnVl
KTsgLy9saXR0bGUtZW5kaWFuCisgICAgdGhpcy5tX3ZhbHVlID0gdmlldzMyLmdldEZsb2F0MzIo
MCwgdHJ1ZSk7IC8vbGl0dGxlLWVuZGlhbgorCisgICAgLy8gQ2xlYXIgY2FjaGVkIHZhbHVlcwor
ICAgIHRoaXMuYml0VmFsdWUgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5zaWduVmFsdWUgPSB1bmRl
ZmluZWQ7CisgICAgdGhpcy5leHBWYWx1ZSA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLm1hbnRpc3Nh
VmFsdWUgPSB1bmRlZmluZWQ7CisKKyAgICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogZGVG
bG9hdE51bWJlcjY0IC0gVG8gYmUgdXNlZCBpbW1lZGlhdGVseSBhZnRlciBjb25zdHJ1Y3Rvcgor
ICogQnVpbGRzIGEgNjQtYml0IHRjdUZsb2F0LmRlRmxvYXQgYmFzZWQgb24gYSA2NC1iaXQgSlMg
bnVtYmVyLgorICogQHBhcmFtIHtudW1iZXJ9IGpzbnVtYmVyCisgKiBAcmV0dXJuIHt0Y3VGbG9h
dC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5kZUZsb2F0TnVtYmVy
NjQgPSBmdW5jdGlvbihqc251bWJlcikgeworICAgIHZhciB2aWV3NjQgPSBuZXcgRGF0YVZpZXco
dGhpcy5idWZmZXIoKSk7CisgICAgdmlldzY0LnNldEZsb2F0NjQoMCwganNudW1iZXIsIHRydWUp
OyAvL2xpdHRsZS1lbmRpYW4KKyAgICB0aGlzLm1fdmFsdWUgPSB2aWV3NjQuZ2V0RmxvYXQ2NCgw
LCB0cnVlKTsgLy9saXR0bGUtZW5kaWFuCisKKyAgICAvLyBDbGVhciBjYWNoZWQgdmFsdWVzCisg
ICAgdGhpcy5iaXRWYWx1ZSA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLnNpZ25WYWx1ZSA9IHVuZGVm
aW5lZDsKKyAgICB0aGlzLmV4cFZhbHVlID0gdW5kZWZpbmVkOworICAgIHRoaXMubWFudGlzc2FW
YWx1ZSA9IHVuZGVmaW5lZDsKKworICAgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBDb252
ZW5pZW5jZSBmdW5jdGlvbiB0byBidWlsZCBhIDMyLWJpdCB0Y3VGbG9hdC5kZUZsb2F0IGJhc2Vk
IG9uIGEgNjQtYml0IEpTIG51bWJlcgorICogQnVpbGRzIGEgMzItYml0IHRjdUZsb2F0LmRlRmxv
YXQgYmFzZWQgb24gYSA2NC1iaXQgSlMgbnVtYmVyLgorICogQHBhcmFtIHtudW1iZXJ9IGpzbnVt
YmVyCisgKiBAcmV0dXJuIHt0Y3VGbG9hdC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5uZXdEZUZs
b2F0RnJvbU51bWJlciA9IGZ1bmN0aW9uKGpzbnVtYmVyKSB7CisgICAgcmV0dXJuIG5ldyB0Y3VG
bG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcihqc251bWJlcik7Cit9OworCisvKioKKyAqIGRl
RmxvYXRCdWZmZXIgLSBUbyBiZSB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIGNvbnN0cnVjdG9yCisg
KiBCdWlsZHMgYSB0Y3VGbG9hdC5kZUZsb2F0IGJhc2VkIG9uIGEgYnVmZmVyIGFuZCBhIGZvcm1h
dCBkZXNjcmlwdGlvbi4KKyAqIFRoZSBidWZmZXIgaXMgYXNzdW1lZCB0byBjb250YWluIGRhdGEg
b2YgdGhlIGdpdmVuIGRlc2NyaXB0aW9uLgorICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYnVmZmVy
CisgKiBAcGFyYW0ge3RjdUZsb2F0LkZsb2F0RGVzY3JpcHRpb259IGRlc2NyaXB0aW9uCisgKiBA
cmV0dXJuIHt0Y3VGbG9hdC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlw
ZS5kZUZsb2F0QnVmZmVyID0gZnVuY3Rpb24oYnVmZmVyLCBkZXNjcmlwdGlvbikgeworICAgIHRo
aXMubV9idWZmZXIgPSBidWZmZXI7CisgICAgdGhpcy5tX2FycmF5ID0gbmV3IFVpbnQ4QXJyYXko
dGhpcy5tX2J1ZmZlcik7CisgICAgdGhpcy5tX2FycmF5MzIgPSBuZXcgVWludDMyQXJyYXkodGhp
cy5tX2J1ZmZlcik7CisKKyAgICB0aGlzLm1fdmFsdWUgPSBkZU1hdGguYXJyYXlUb051bWJlcih0
aGlzLm1fYXJyYXkpOworCisgICAgLy8gQ2xlYXIgY2FjaGVkIHZhbHVlcworICAgIHRoaXMuYml0
VmFsdWUgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5zaWduVmFsdWUgPSB1bmRlZmluZWQ7CisgICAg
dGhpcy5leHBWYWx1ZSA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLm1hbnRpc3NhVmFsdWUgPSB1bmRl
ZmluZWQ7CisKKyAgICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogQ29udmVuaWVuY2UgZnVu
Y3Rpb24gdG8gYnVpbGQgYSB0Y3VGbG9hdC5kZUZsb2F0IGJhc2VkIG9uIGEgYnVmZmVyIGFuZCBh
IGZvcm1hdCBkZXNjcmlwdGlvbgorICogVGhlIGJ1ZmZlciBpcyBhc3N1bWVkIHRvIGNvbnRhaW4g
ZGF0YSBvZiB0aGUgZ2l2ZW4gZGVzY3JpcHRpb24uCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBi
dWZmZXIKKyAqIEBwYXJhbSB7dGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbn0gZGVzY3JpcHRpb24K
KyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZsb2F0Lm5ld0RlRmxvYXRG
cm9tQnVmZmVyID0gZnVuY3Rpb24oYnVmZmVyLCBkZXNjcmlwdGlvbikgeworICAgIHJldHVybiBu
ZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmRlRmxvYXRCdWZmZXIoYnVmZmVyLCBkZXNjcmlwdGlvbik7
Cit9OworCisvKioKKyAqIFNldCB0aGUgdGN1RmxvYXQuZGVGbG9hdCBmcm9tIHRoZSBnaXZlbiBi
aXR3aXNlIHJlcHJlc2VudGF0aW9uLgorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBqc251bWJlciAg
VGhpcyBpcyB0YWtlbiB0byBiZSB0aGUgYml0d2lzZSByZXByZXNlbnRhdGlvbiBvZgorICogICB0
aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgZGVGbG9hdC4gSXQg
bXVzdCBiZSBhbgorICogICBpbnRlZ2VyLCBsZXNzIHRoYW4gMl41MiwgYW5kIGNvbXBhdGlibGUg
d2l0aCB0aGUgZXhpc3RpbmcgZGVzY3JpcHRpb24uCisgKiBAcmV0dXJuIHt0Y3VGbG9hdC5kZUZs
b2F0fQorICoqLwordGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuZGVGbG9hdFBhcmFtZXRlcnNO
dW1iZXIgPSBmdW5jdGlvbihqc251bWJlcikgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIganNudW1iZXJNYXggPSAtMSA+Pj4gKDMyIC0gdGhpcy5kZXNjcmlwdGlvbi50b3RhbEJpdFNp
emUpOworICAgIERFX0FTU0VSVChOdW1iZXIuaXNJbnRlZ2VyKGpzbnVtYmVyKSAmJiBqc251bWJl
ciA8PSBqc251bWJlck1heCk7CisKKyAgICB0aGlzLm1fdmFsdWUgPSBqc251bWJlcjsKKyAgICBk
ZU1hdGgubnVtYmVyVG9BcnJheSh0aGlzLm1fYXJyYXksIGpzbnVtYmVyKTsKKworICAgIC8vIENs
ZWFyIGNhY2hlZCB2YWx1ZXMKKyAgICB0aGlzLmJpdFZhbHVlID0gdW5kZWZpbmVkOworICAgIHRo
aXMuc2lnblZhbHVlID0gdW5kZWZpbmVkOworICAgIHRoaXMuZXhwVmFsdWUgPSB1bmRlZmluZWQ7
CisgICAgdGhpcy5tYW50aXNzYVZhbHVlID0gdW5kZWZpbmVkOworCisgICAgcmV0dXJuIHRoaXM7
Cit9OworCisvKioKKyAqIEluaXRpYWxpemVzIGEgdGN1RmxvYXQuZGVGbG9hdCBmcm9tIHRoZSBn
aXZlbiBiaXR3aXNlIHJlcHJlc2VudGF0aW9uLAorICogd2l0aCB0aGUgc3BlY2lmaWVkIGZvcm1h
dCBkZXNjcmlwdGlvbi4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0ganNudW1iZXIgIFRoaXMgaXMg
dGFrZW4gdG8gYmUgdGhlIGJpdHdpc2UgcmVwcmVzZW50YXRpb24gb2YKKyAqICAgdGhlIGZsb2F0
aW5nIHBvaW50IG51bWJlciByZXByZXNlbnRlZCBieSB0aGlzIGRlRmxvYXQuIEl0IG11c3QgYmUg
YW4KKyAqICAgaW50ZWdlciwgbGVzcyB0aGFuIDJeNTIsIGFuZCBjb21wYXRpYmxlIHdpdGggdGhl
IG5ldyBkZXNjcmlwdGlvbi4KKyAqIEBwYXJhbSB7dGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbn0g
ZGVzY3JpcHRpb24KKyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKiovCit0Y3VGbG9h
dC5kZUZsb2F0LnByb3RvdHlwZS5kZUZsb2F0UGFyYW1ldGVycyA9IGZ1bmN0aW9uKGpzbnVtYmVy
LCBkZXNjcmlwdGlvbikgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4VWludDUy
ID0gMHgxMDAwMDAwMDAwMDAwMDsKKyAgICBERV9BU1NFUlQoTnVtYmVyLmlzSW50ZWdlcihqc251
bWJlcikgJiYganNudW1iZXIgPCBtYXhVaW50NTIpOworICAgIGlmIChkZXNjcmlwdGlvbi50b3Rh
bEJpdFNpemUgPiA1MikgeworICAgICAgICAvLyBUaGUganNudW1iZXIgcmVwcmVzZW50YXRpb24g
Zm9yIHRoaXMgbnVtYmVyIGNhbid0IHBvc3NpYmx5IGJlIHZhbGlkLgorICAgICAgICAvLyBNYWtl
IHN1cmUgaXQgaGFzIGEgc2VudGluZWwgMCB2YWx1ZS4KKyAgICAgICAgREVfQVNTRVJUKGpzbnVt
YmVyID09PSAwKTsKKyAgICB9CisKKyAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247
CisKKyAgICB0aGlzLm1fYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHRoaXMuZGVzY3JpcHRpb24u
dG90YWxCeXRlU2l6ZSk7CisgICAgdGhpcy5tX2FycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5t
X2J1ZmZlcik7CisKKyAgICByZXR1cm4gdGhpcy5kZUZsb2F0UGFyYW1ldGVyc051bWJlcihqc251
bWJlcik7Cit9OworCisvKioKKyAqIENvbnZlbmllbmNlIGZ1bmN0aW9uLiBDcmVhdGVzIGEgdGN1
RmxvYXQuZGVGbG9hdCwgdGhlbiBpbml0aWFsaXplcyBpdCBmcm9tCisgKiB0aGUgZ2l2ZW4gYml0
d2lzZSByZXByZXNlbnRhdGlvbiwgd2l0aCB0aGUgc3BlY2lmaWVkIGZvcm1hdCBkZXNjcmlwdGlv
bi4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0ganNudW1iZXIgIFRoaXMgaXMgdGFrZW4gdG8gYmUg
dGhlIGJpdHdpc2UgcmVwcmVzZW50YXRpb24gb2YKKyAqICAgdGhlIGZsb2F0aW5nIHBvaW50IG51
bWJlciByZXByZXNlbnRlZCBieSB0aGlzIGRlRmxvYXQuIEl0IG11c3QgYmUgYW4KKyAqICAgaW50
ZWdlciwgbGVzcyB0aGFuIDJeNTIsIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIG5ldyBkZXNjcmlw
dGlvbi4KKyAqIEBwYXJhbSB7dGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbn0gZGVzY3JpcHRpb24K
KyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKiovCit0Y3VGbG9hdC5uZXdEZUZsb2F0
RnJvbVBhcmFtZXRlcnMgPSBmdW5jdGlvbihqc251bWJlciwgZGVzY3JpcHRpb24pIHsKKyAgICBy
ZXR1cm4gbmV3IHRjdUZsb2F0LmRlRmxvYXQoKS5kZUZsb2F0UGFyYW1ldGVycyhqc251bWJlciwg
ZGVzY3JpcHRpb24pOworfTsKKworLyoqCisgKiBSZXR1cm5zIGJpdCByYW5nZSBbYmVnaW4sIGVu
ZCkKKyAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpbgorICogQHBhcmFtIHtudW1iZXJ9IGVuZAorICog
QHJldHVybiB7bnVtYmVyfQorICovCit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5nZXRCaXRS
YW5nZSA9IGZ1bmN0aW9uKGJlZ2luLCBlbmQpIHsKKyAgICBpZiAodGhpcy5kZXNjcmlwdGlvbi50
b3RhbEJpdFNpemUgPD0gNTIpIHsKKyAgICAgICAgLy8gdGhpcy5iaXRzKCkgaXMgaW52YWxpZCBm
b3IgbW9yZSB0aGFuIDUyIGJpdHMuCisgICAgICAgIHJldHVybiBkZU1hdGguZ2V0Qml0UmFuZ2Uo
dGhpcy5iaXRzKCksIGJlZ2luLCBlbmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBk
ZU1hdGguZ2V0QXJyYXkzMkJpdFJhbmdlKHRoaXMuYXJyYXkzMigpLCBiZWdpbiwgZW5kKTsKKyAg
ICB9Cit9OworCisvKioKKyAqIFJldHVybnMgdGhlIHJhdyBiaW5hcnkgcmVwcmVzZW50YXRpb24g
dmFsdWUgb2YgdGhlIHRjdUZsb2F0LmRlRmxvYXQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwor
dGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuYml0cyA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0
eXBlb2YgdGhpcy5iaXRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHRoaXMuYml0VmFs
dWUgPSBkZU1hdGguYXJyYXlUb051bWJlcih0aGlzLmFycmF5KCkpOworICAgIHJldHVybiB0aGlz
LmJpdFZhbHVlOworfTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSByYXcgYmluYXJ5IHNpZ24gYml0
CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3RjdUZsb2F0LmRlRmxvYXQucHJvdG90eXBlLnNp
Z25CaXQgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodHlwZW9mIHRoaXMuc2lnblZhbHVlID09PSAn
dW5kZWZpbmVkJykKKyAgICAgICAgdGhpcy5zaWduVmFsdWUgPSB0aGlzLmdldEJpdFJhbmdlKHRo
aXMuZGVzY3JpcHRpb24udG90YWxCaXRTaXplIC0gMSwgdGhpcy5kZXNjcmlwdGlvbi50b3RhbEJp
dFNpemUpOworICAgIHJldHVybiB0aGlzLnNpZ25WYWx1ZTsKK307CisKKy8qKgorICogUmV0dXJu
cyB0aGUgcmF3IGJpbmFyeSBleHBvbmVudCBiaXRzCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8K
K3RjdUZsb2F0LmRlRmxvYXQucHJvdG90eXBlLmV4cG9uZW50Qml0cyA9IGZ1bmN0aW9uKCkgewor
ICAgIGlmICh0eXBlb2YgdGhpcy5leHBWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHRo
aXMuZXhwVmFsdWUgPSB0aGlzLmdldEJpdFJhbmdlKHRoaXMuZGVzY3JpcHRpb24uTWFudGlzc2FC
aXRzLCB0aGlzLmRlc2NyaXB0aW9uLk1hbnRpc3NhQml0cyArIHRoaXMuZGVzY3JpcHRpb24uRXhw
b25lbnRCaXRzKTsKKyAgICByZXR1cm4gdGhpcy5leHBWYWx1ZTsKK307CisKKy8qKgorICogUmV0
dXJucyB0aGUgcmF3IGJpbmFyeSBtYW50aXNzYSBiaXRzCisgKiBAcmV0dXJuIHtudW1iZXJ9Cisg
Ki8KK3RjdUZsb2F0LmRlRmxvYXQucHJvdG90eXBlLm1hbnRpc3NhQml0cyA9IGZ1bmN0aW9uKCkg
eworICAgIGlmICh0eXBlb2YgdGhpcy5tYW50aXNzYVZhbHVlID09PSAndW5kZWZpbmVkJykKKyAg
ICAgICAgdGhpcy5tYW50aXNzYVZhbHVlID0gdGhpcy5nZXRCaXRSYW5nZSgwLCB0aGlzLmRlc2Ny
aXB0aW9uLk1hbnRpc3NhQml0cyk7CisgICAgcmV0dXJuIHRoaXMubWFudGlzc2FWYWx1ZTsKK307
CisKKy8qKgorICogUmV0dXJucyB0aGUgc2lnbiBhcyBhIGZhY3RvciAoLTEgb3IgMSkKKyAqIEBy
ZXR1cm4ge251bWJlcn0KKyAqLwordGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuc2lnbiA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBzaWduID0gdGhpcy5zaWduQml0KCk7CisgICAgdmFyIHNpZ252
YWx1ZSA9IHNpZ24gPyAtMSA6IDE7CisgICAgcmV0dXJuIHNpZ252YWx1ZTsKK307CisKKy8qKgor
ICogUmV0dXJucyB0aGUgcmVhbCBleHBvbmVudCwgY2hlY2tpbmcgaWYgaXQncyBhIGRlbm9ybSBv
ciB6ZXJvIG51bWJlciBvciBub3QKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1RmxvYXQu
ZGVGbG9hdC5wcm90b3R5cGUuZXhwb25lbnQgPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5pc0Rl
bm9ybSgpID8gMSAtIHRoaXMuZGVzY3JpcHRpb24uRXhwb25lbnRCaWFzIDogdGhpcy5leHBvbmVu
dEJpdHMoKSAtIHRoaXMuZGVzY3JpcHRpb24uRXhwb25lbnRCaWFzO307CisKKy8qKgorICogUmV0
dXJucyB0aGUgKHN0aWxsIHJhdykgbWFudGlzc2EsIGNoZWNraW5nIGlmIGl0J3MgYSBkZW5vcm0g
b3IgemVybyBudW1iZXIgb3Igbm90CisgKiBNYWtlcyB0aGUgbm9ybWFsbHkgaW1wbGljaXQgYml0
IGV4cGxpY2l0LgorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VGbG9hdC5kZUZsb2F0LnBy
b3RvdHlwZS5tYW50aXNzYSA9IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmlzWmVybygpIHx8IHRo
aXMuaXNEZW5vcm0oKSA/IHRoaXMubWFudGlzc2FCaXRzKCkgOiBkZU1hdGguYmluYXJ5T3AodGhp
cy5tYW50aXNzYUJpdHMoKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCB0aGlzLmRlc2NyaXB0aW9uLk1h
bnRpc3NhQml0cyksIGRlTWF0aC5CaW5hcnlPcC5PUik7fTsKKworLyoqCisgKiBSZXR1cm5zIGlm
IHRoZSBudW1iZXIgaXMgaW5maW5pdHkgb3Igbm90LgorICogQHJldHVybiB7Ym9vbGVhbn0KKyAq
LwordGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuaXNJbmYgPSBmdW5jdGlvbigpIHtyZXR1cm4g
dGhpcy5leHBvbmVudEJpdHMoKSA9PSAoKDEgPDwgdGhpcy5kZXNjcmlwdGlvbi5FeHBvbmVudEJp
dHMpIC0gMSkgJiYgdGhpcy5tYW50aXNzYUJpdHMoKSA9PSAwO307CisKKy8qKgorICogUmV0dXJu
cyBpZiB0aGUgbnVtYmVyIGlzIE5hTiBvciBub3QuCisgKiBAcmV0dXJuIHtib29sZWFufQorICov
Cit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5pc05hTiA9IGZ1bmN0aW9uKCkge3JldHVybiB0
aGlzLmV4cG9uZW50Qml0cygpID09ICgoMSA8PCB0aGlzLmRlc2NyaXB0aW9uLkV4cG9uZW50Qml0
cykgLSAxKSAmJiB0aGlzLm1hbnRpc3NhQml0cygpICE9IDA7fTsKKworLyoqCisgKiBSZXR1cm5z
IGlmIHRoZSBudW1iZXIgaXMgemVybyBvciBub3QuCisgKiBAcmV0dXJuIHtib29sZWFufQorICov
Cit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbigpIHtyZXR1cm4g
dGhpcy5leHBvbmVudEJpdHMoKSA9PSAwICYmIHRoaXMubWFudGlzc2FCaXRzKCkgPT0gMDt9Owor
CisvKioKKyAqIFJldHVybnMgaWYgdGhlIG51bWJlciBpcyBkZW5vcm1hbGl6ZWQgb3Igbm90Lgor
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuaXNE
ZW5vcm0gPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5leHBvbmVudEJpdHMoKSA9PSAwICYmIHRo
aXMubWFudGlzc2FCaXRzKCkgIT0gMDt9OworCisvKioKKyAqIEJ1aWxkcyBhIHplcm8gZmxvYXQg
b2YgdGhlIGN1cnJlbnQgYmluYXJ5IGRlc2NyaXB0aW9uLgorICogQHBhcmFtIHtudW1iZXJ9IHNp
Z24KKyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZsb2F0LmRlRmxvYXQu
cHJvdG90eXBlLnplcm8gPSBmdW5jdGlvbihzaWduKSB7CisgICAgcmV0dXJuIHRoaXMuZGVzY3Jp
cHRpb24uemVybyhzaWduKTsKK307CisKKy8qKgorICogQnVpbGRzIGFuIGluZmluaXR5IGZsb2F0
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IGJpbmFyeSBkZXNjcmlwdGlvbi4KKyAqIEBw
YXJhbSB7bnVtYmVyfSBzaWduCisgKiBAcmV0dXJuIHt0Y3VGbG9hdC5kZUZsb2F0fQorICovCit0
Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5pbmYgPSBmdW5jdGlvbihzaWduKSB7CisgICAgcmV0
dXJuIHRoaXMuZGVzY3JpcHRpb24uaW5mKHNpZ24pOworfTsKKworLyoqCisgKiBCdWlsZHMgYSBO
YU4gZmxvYXQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgYmluYXJ5IGRlc2NyaXB0aW9u
LgorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0KKyAqLwordGN1RmxvYXQuZGVGbG9hdC5w
cm90b3R5cGUubmFuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24u
bmFuKCk7Cit9OworCisvKioKKyAqIEJ1aWxkcyBhIGZsb2F0IG9mIHRoZSBjdXJyZW50IGJpbmFy
eSBkZXNjcmlwdGlvbi4KKyAqIEdpdmVuIGEgc2lnbiwgZXhwb25lbnQgYW5kIG1hbnRpc3NhLgor
ICogQHBhcmFtIHtudW1iZXJ9IHNpZ24KKyAqIEBwYXJhbSB7bnVtYmVyfSBleHBvbmVudAorICog
QHBhcmFtIHtudW1iZXJ9IG1hbnRpc3NhCisgKiBAcmV0dXJuIHt0Y3VGbG9hdC5kZUZsb2F0fQor
ICovCit0Y3VGbG9hdC5kZUZsb2F0LnByb3RvdHlwZS5jb25zdHJ1Y3QgPSBmdW5jdGlvbihzaWdu
LCBleHBvbmVudCwgbWFudGlzc2EpIHsKKyAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbi5jb25z
dHJ1Y3Qoc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhKTsKK307CisKKy8qKgorICogQnVpbGRzIGEg
ZmxvYXQgb2YgdGhlIGN1cnJlbnQgYmluYXJ5IGRlc2NyaXB0aW9uLgorICogR2l2ZW4gYSBzaWdu
LCBleHBvbmVudCBhbmQgYSByYXcgYmluYXJ5IG1hbnRpc3NhLgorICogQHBhcmFtIHtudW1iZXJ9
IHNpZ24KKyAqIEBwYXJhbSB7bnVtYmVyfSBleHBvbmVudAorICogQHBhcmFtIHtudW1iZXJ9IG1h
bnRpc3NhQml0cyBSYXcgYmluYXJ5IG1hbnRpc3NhLgorICogQHJldHVybiB7dGN1RmxvYXQuZGVG
bG9hdH0KKyAqLwordGN1RmxvYXQuZGVGbG9hdC5wcm90b3R5cGUuY29uc3RydWN0Qml0cyA9IGZ1
bmN0aW9uKHNpZ24sIGV4cG9uZW50LCBtYW50aXNzYUJpdHMpIHsKKyAgICByZXR1cm4gdGhpcy5k
ZXNjcmlwdGlvbi5jb25zdHJ1Y3RCaXRzKHNpZ24sIGV4cG9uZW50LCBtYW50aXNzYUJpdHMpOwor
fTsKKworLyoqCisgKiBDYWxjdWxhdGVzIHRoZSBKUyBmbG9hdCBudW1iZXIgZnJvbSB0aGUgaW50
ZXJuYWwgcmVwcmVzZW50YXRpb24uCisgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBKUyBmbG9hdCB2
YWx1ZSByZXByZXNlbnRlZCBieSB0aGlzIHRjdUZsb2F0LmRlRmxvYXQuCisgKi8KK3RjdUZsb2F0
LmRlRmxvYXQucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCh0aGlz
LmRlc2NyaXB0aW9uLkZsYWdzIHwgdGN1RmxvYXQuRmxvYXRGbGFncy5GTE9BVF9IQVNfU0lHTikg
PT09IDAgJiYgdGhpcy5zaWduKCkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodGhp
cy5pc0luZigpKQorICAgICAgICByZXR1cm4gTnVtYmVyLkluZmluaXR5OworICAgIGlmICh0aGlz
LmlzTmFOKCkpCisgICAgICAgIHJldHVybiBOdW1iZXIuTmFOOworICAgIGlmICh0aGlzLmlzWmVy
bygpKQorICAgICAgICByZXR1cm4gdGhpcy5zaWduKCkgKiAwOworICAgIC8qKkB0eXBlIHtudW1i
ZXJ9ICovIHZhciBteW1hbnRpc3NhID0gdGhpcy5tYW50aXNzYSgpOworICAgIC8qKkB0eXBlIHtu
dW1iZXJ9ICovIHZhciBteWV4cG9uZW50ID0gdGhpcy5leHBvbmVudCgpOworICAgIC8qKkB0eXBl
IHtudW1iZXJ9ICovIHZhciBzaWduID0gdGhpcy5zaWduKCk7CisKKyAgICAvKipAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdmFsdWUgPSBteW1hbnRpc3NhIC8gTWF0aC5wb3coMiwgdGhpcy5kZXNjcmlw
dGlvbi5NYW50aXNzYUJpdHMpICogTWF0aC5wb3coMiwgbXlleHBvbmVudCk7CisKKyAgICBpZiAo
dGhpcy5kZXNjcmlwdGlvbi5GbGFncyB8IHRjdUZsb2F0LkZsb2F0RmxhZ3MuRkxPQVRfSEFTX1NJ
R04gIT0gMCkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIHNpZ247CisKKyAgICByZXR1cm4gdmFs
dWU7Cit9OworCit0Y3VGbG9hdC5kZXNjcmlwdGlvbjEwID0gbmV3IHRjdUZsb2F0LkZsb2F0RGVz
Y3JpcHRpb24oNSwgNSwgMTUsIDApOwordGN1RmxvYXQuZGVzY3JpcHRpb24xMSA9IG5ldyB0Y3VG
bG9hdC5GbG9hdERlc2NyaXB0aW9uKDUsIDYsIDE1LCAwKTsKK3RjdUZsb2F0LmRlc2NyaXB0aW9u
MTYgPSBuZXcgdGN1RmxvYXQuRmxvYXREZXNjcmlwdGlvbig1LCAxMCwgMTUsIHRjdUZsb2F0LkZs
b2F0RmxhZ3MuRkxPQVRfSEFTX1NJR04pOwordGN1RmxvYXQuZGVzY3JpcHRpb24zMiA9IG5ldyB0
Y3VGbG9hdC5GbG9hdERlc2NyaXB0aW9uKDgsIDIzLCAxMjcsIHRjdUZsb2F0LkZsb2F0RmxhZ3Mu
RkxPQVRfSEFTX1NJR04gfCB0Y3VGbG9hdC5GbG9hdEZsYWdzLkZMT0FUX1NVUFBPUlRfREVOT1JN
KTsKK3RjdUZsb2F0LmRlc2NyaXB0aW9uNjQgPSBuZXcgdGN1RmxvYXQuRmxvYXREZXNjcmlwdGlv
bigxMSwgNTIsIDEwMjMsIHRjdUZsb2F0LkZsb2F0RmxhZ3MuRkxPQVRfSEFTX1NJR04gfCB0Y3VG
bG9hdC5GbG9hdEZsYWdzLkZMT0FUX1NVUFBPUlRfREVOT1JNKTsKKwordGN1RmxvYXQuY29udmVy
dEZsb2F0MzJJbmxpbmUgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGZsb2F0MzJWaWV3ID0gbmV3
IEZsb2F0MzJBcnJheSgxKTsKKyAgICB2YXIgaW50MzJWaWV3ID0gbmV3IEludDMyQXJyYXkoZmxv
YXQzMlZpZXcuYnVmZmVyKTsKKworICAgIHJldHVybiBmdW5jdGlvbihmdmFsLCBkZXNjcmlwdGlv
bikgeworICAgICAgICBmbG9hdDMyVmlld1swXSA9IGZ2YWw7CisgICAgICAgIHZhciBmYml0cyA9
IGludDMyVmlld1swXTsKKworICAgICAgICB2YXIgZXhwb25lbnRCaXRzID0gKGZiaXRzID4+IDIz
KSAmIDB4ZmY7CisgICAgICAgIHZhciBtYW50aXNzYUJpdHMgPSBmYml0cyAmIDB4N2ZmZmZmOwor
ICAgICAgICB2YXIgc2lnbkJpdCA9IChmYml0cyAmIDB4ODAwMDAwMDApID8gMSA6IDA7CisgICAg
ICAgIHZhciBzaWduID0gc2lnbkJpdCA/IC0xIDogMTsKKworICAgICAgICB2YXIgaXNaZXJvID0g
ZXhwb25lbnRCaXRzID09IDAgJiYgbWFudGlzc2FCaXRzID09IDA7CisKKyAgICAgICAgdmFyIGJp
dERpZmY7CisgICAgICAgIHZhciBoYWxmOworICAgICAgICB2YXIgYmlhczsKKworICAgICAgICBp
ZiAoIShkZXNjcmlwdGlvbi5GbGFncyAmIHRjdUZsb2F0LkZsb2F0RmxhZ3MuRkxPQVRfSEFTX1NJ
R04pICYmIHNpZ24gPCAwKSB7CisgICAgICAgICAgICAvLyBOZWdhdGl2ZSBudW1iZXIsIHRydW5j
YXRlIHRvIHplcm8uCisgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24uemVyb051bWJlcigr
MSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXhwb25lbnRCaXRzID09ICgoMSA8PCB0Y3VGbG9hdC5k
ZXNjcmlwdGlvbjMyLkV4cG9uZW50Qml0cykgLSAxKSAmJiBtYW50aXNzYUJpdHMgPT0gMCkgeyAv
LyBpc0luZgorICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uLmluZk51bWJlcihzaWduKTsK
KyAgICAgICAgfSBlbHNlIGlmIChleHBvbmVudEJpdHMgPT0gKCgxIDw8IHRjdUZsb2F0LmRlc2Ny
aXB0aW9uMzIuRXhwb25lbnRCaXRzKSAtIDEpICYmIG1hbnRpc3NhQml0cyAhPSAwKSB7IC8vIGlz
TmFOCisgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24ubmFuTnVtYmVyKCk7CisgICAgICAg
IH0gZWxzZSBpZiAoaXNaZXJvKSB7CisgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24uemVy
b051bWJlcihzaWduKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBlTWluID0g
MSAtIGRlc2NyaXB0aW9uLkV4cG9uZW50QmlhczsKKyAgICAgICAgICAgIHZhciBlTWF4ID0gKCgx
IDw8IGRlc2NyaXB0aW9uLkV4cG9uZW50Qml0cykgLSAyKSAtIGRlc2NyaXB0aW9uLkV4cG9uZW50
QmlhczsKKworICAgICAgICAgICAgdmFyIGlzRGVub3JtID0gZXhwb25lbnRCaXRzID09IDAgJiYg
bWFudGlzc2FCaXRzICE9IDA7CisKKyAgICAgICAgICAgIHZhciBzID0gc2lnbkJpdCA8PCAoZGVz
Y3JpcHRpb24uRXhwb25lbnRCaXRzICsgZGVzY3JpcHRpb24uTWFudGlzc2FCaXRzKTsgLy8gXG5v
dGUgTm90IHNpZ24sIGJ1dCBzaWduIGJpdC4KKyAgICAgICAgICAgIHZhciBlID0gaXNEZW5vcm0g
PyAxIC0gdGN1RmxvYXQuZGVzY3JpcHRpb24zMi5FeHBvbmVudEJpYXMgOiBleHBvbmVudEJpdHMg
LSB0Y3VGbG9hdC5kZXNjcmlwdGlvbjMyLkV4cG9uZW50QmlhczsvLyBvdGhlci5leHBvbmVudCgp
OworICAgICAgICAgICAgdmFyIG0gPSBpc1plcm8gfHwgaXNEZW5vcm0gPyBtYW50aXNzYUJpdHMg
OiBtYW50aXNzYUJpdHMgfCAoMSA8PCB0Y3VGbG9hdC5kZXNjcmlwdGlvbjMyLk1hbnRpc3NhQml0
cyk7IC8vIG90aGVyLm1hbnRpc3NhKCk7CisKKyAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBkZW5v
cm1hbGl6ZWQgdmFsdWVzIHByaW9yIHRvIGNvbnZlcnNpb24uCisgICAgICAgICAgICB3aGlsZSAo
IShtICYgKDEgPDwgdGN1RmxvYXQuZGVzY3JpcHRpb24zMi5NYW50aXNzYUJpdHMpKSkgeworICAg
ICAgICAgICAgICAgIG0gPSBkZU1hdGguc2hpZnRMZWZ0KG0sIDEpOworICAgICAgICAgICAgICAg
IGUgLT0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGUgPCBlTWluKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVW5kZXJmbG93LgorICAgICAgICAgICAgICAgIGlmICgoZGVzY3Jp
cHRpb24uRmxhZ3MgJiB0Y3VGbG9hdC5GbG9hdEZsYWdzLkZMT0FUX1NVUFBPUlRfREVOT1JNKSAm
JiAoZU1pbiAtIGUgLSAxIDw9IGRlc2NyaXB0aW9uLk1hbnRpc3NhQml0cykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU2hpZnQgYW5kIHJvdW5kIChSVEUpLgorICAgICAgICAgICAgICAgICAg
ICBiaXREaWZmID0gKHRjdUZsb2F0LmRlc2NyaXB0aW9uMzIuTWFudGlzc2FCaXRzIC0gZGVzY3Jp
cHRpb24uTWFudGlzc2FCaXRzKSArIChlTWluIC0gZSk7CisgICAgICAgICAgICAgICAgICAgIGhh
bGYgPSAoMSA8PCAoYml0RGlmZiAtIDEpKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIGJpYXMg
PSAoKG0gPj4gYml0RGlmZikgJiAxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzIHwg
KChtICsgaGFsZiArIGJpYXMpID4+IGJpdERpZmYpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uLnplcm9OdW1iZXIoc2lnbik7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsZWFkaW5n
IDEuCisgICAgICAgICAgICAgICAgbSA9IChtICYgfigxIDw8IHRjdUZsb2F0LmRlc2NyaXB0aW9u
MzIuTWFudGlzc2FCaXRzKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24uTWFu
dGlzc2FCaXRzIDwgdGN1RmxvYXQuZGVzY3JpcHRpb24zMi5NYW50aXNzYUJpdHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gUm91bmQgbWFudGlzc2EgKHJvdW5kIHRvIG5lYXJlc3QgZXZlbiku
CisgICAgICAgICAgICAgICAgICAgIGJpdERpZmYgPSB0Y3VGbG9hdC5kZXNjcmlwdGlvbjMyLk1h
bnRpc3NhQml0cyAtIGRlc2NyaXB0aW9uLk1hbnRpc3NhQml0czsKKyAgICAgICAgICAgICAgICAg
ICAgaGFsZiA9ICgxIDw8IChiaXREaWZmIC0gMSkpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAg
YmlhcyA9ICgobSA+PiBiaXREaWZmKSAmIDEpOworCisgICAgICAgICAgICAgICAgICAgIG0gPSAo
bSArIGhhbGYgKyBiaWFzKSA+PiBiaXREaWZmOworCisgICAgICAgICAgICAgICAgICAgIGlmICgo
bSAmICgxIDw8IGRlc2NyaXB0aW9uLk1hbnRpc3NhQml0cykpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBPdmVyZmxvdyBpbiBtYW50aXNzYS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IG0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZSArPSAxOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYml0
RGlmZiA9IGRlc2NyaXB0aW9uLk1hbnRpc3NhQml0cyAtIHRjdUZsb2F0LmRlc2NyaXB0aW9uMzIu
TWFudGlzc2FCaXRzOworICAgICAgICAgICAgICAgICAgICBtID0gKG0gPDwgYml0RGlmZik7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGUgPiBlTWF4KSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIE92ZXJmbG93LgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZGVzY3JpcHRpb24uaW5mTnVtYmVyKHNpZ24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIERFX0FTU0VSVChkZU1hdGguZGVJblJhbmdlMzIoZSwgZU1pbiwg
ZU1heCkpOworICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoKChlICsgZGVzY3JpcHRpb24u
RXhwb25lbnRCaWFzKSAmIH4oKDEgPDwgZGVzY3JpcHRpb24uRXhwb25lbnRCaXRzKSAtIDEpKSA9
PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJUKChtICYgfigoMSA8PCBkZXNjcmlw
dGlvbi5NYW50aXNzYUJpdHMpIC0gMSkpID09IDApOworCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAocyB8ICgoZSArIGRlc2NyaXB0aW9uLkV4cG9uZW50QmlhcykgPDwgZGVzY3JpcHRpb24u
TWFudGlzc2FCaXRzKSkgfCBtOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07Cit9KSgpOworCisvKioKKyAqIEJ1aWxkcyBhIDEwIGJpdCB0Y3VGbG9h
dC5kZUZsb2F0CisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgKDY0LWJpdCBKUyBmbG9hdCkKKyAq
IEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZsb2F0Lm5ld0Zsb2F0MTAgPSBm
dW5jdGlvbih2YWx1ZSkgeworICAgIERFX0FTU0VSVChOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSAm
JiB2YWx1ZSA8PSAweDNmZik7CisgICAgLyoqQHR5cGUge3RjdUZsb2F0LmRlRmxvYXR9ICovIHZh
ciBvdGhlcjMyID0gbmV3IHRjdUZsb2F0LmRlRmxvYXQoKS5kZUZsb2F0TnVtYmVyKHZhbHVlKTsK
KyAgICByZXR1cm4gdGN1RmxvYXQuZGVzY3JpcHRpb24xMC5jb252ZXJ0KG90aGVyMzIpOworfTsK
KworLyoqCisgKiBCdWlsZHMgYSAxMSBiaXQgdGN1RmxvYXQuZGVGbG9hdAorICogQHBhcmFtIHtu
dW1iZXJ9IHZhbHVlICg2NC1iaXQgSlMgZmxvYXQpCisgKiBAcmV0dXJuIHt0Y3VGbG9hdC5kZUZs
b2F0fQorICovCit0Y3VGbG9hdC5uZXdGbG9hdDExID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAv
KipAdHlwZSB7dGN1RmxvYXQuZGVGbG9hdH0gKi8gdmFyIG90aGVyMzIgPSBuZXcgdGN1RmxvYXQu
ZGVGbG9hdCgpLmRlRmxvYXROdW1iZXIodmFsdWUpOworICAgIHJldHVybiB0Y3VGbG9hdC5kZXNj
cmlwdGlvbjExLmNvbnZlcnQob3RoZXIzMik7Cit9OworCisvKioKKyAqIEJ1aWxkcyBhIDE2IGJp
dCB0Y3VGbG9hdC5kZUZsb2F0CisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgKDY0LWJpdCBKUyBm
bG9hdCkKKyAqIEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZsb2F0Lm5ld0Zs
b2F0MTYgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgIC8qKkB0eXBlIHt0Y3VGbG9hdC5kZUZsb2F0
fSAqLyB2YXIgb3RoZXIzMiA9IG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcih2
YWx1ZSk7CisgICAgcmV0dXJuIHRjdUZsb2F0LmRlc2NyaXB0aW9uMTYuY29udmVydChvdGhlcjMy
KTsKK307CisKKy8qKgorICogQnVpbGRzIGEgMTYgYml0IHRjdUZsb2F0LmRlRmxvYXQgZnJvbSBy
YXcgYml0cworICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlICgxNi1iaXQgdmFsdWUpCisgKiBAcmV0
dXJuIHt0Y3VGbG9hdC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5uZXdGbG9hdDMyRnJvbTE2ID0g
ZnVuY3Rpb24odmFsdWUpIHsKKyAgICB2YXIgb3RoZXIxNiA9IHRjdUZsb2F0Lm5ld0RlRmxvYXRG
cm9tUGFyYW1ldGVycyh2YWx1ZSwgdGN1RmxvYXQuZGVzY3JpcHRpb24xNik7CisgICAgcmV0dXJu
IHRjdUZsb2F0LmRlc2NyaXB0aW9uMzIuY29udmVydChvdGhlcjE2KTsKK307CisKKy8qKgorICog
QnVpbGRzIGEgMTYgYml0IHRjdUZsb2F0LmRlRmxvYXQgd2l0aCBubyBkZW5vcm0gc3VwcG9ydAor
ICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlICg2NC1iaXQgSlMgZmxvYXQpCisgKiBAcmV0dXJuIHt0
Y3VGbG9hdC5kZUZsb2F0fQorICovCit0Y3VGbG9hdC5uZXdGbG9hdDE2Tm9EZW5vcm0gPSBmdW5j
dGlvbih2YWx1ZSkgeworICAgIC8qKkB0eXBlIHt0Y3VGbG9hdC5kZUZsb2F0fSAqLyB2YXIgb3Ro
ZXIzMiA9IG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcih2YWx1ZSk7CisgICAg
cmV0dXJuIHRjdUZsb2F0LmRlc2NyaXB0aW9uMTYuY29udmVydChvdGhlcjMyKTsKK307CisKKy8q
KgorICogQnVpbGRzIGEgMzIgYml0IHRjdUZsb2F0LmRlRmxvYXQKKyAqIEBwYXJhbSB7bnVtYmVy
fSB2YWx1ZSAoNjQtYml0IEpTIGZsb2F0KQorICogQHJldHVybiB7dGN1RmxvYXQuZGVGbG9hdH0K
KyAqLwordGN1RmxvYXQubmV3RmxvYXQzMiA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJu
IG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcih2YWx1ZSk7Cit9OworCit0Y3VG
bG9hdC5udW1iZXJUb0Zsb2F0MTEgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgIHJldHVybiB0Y3VG
bG9hdC5jb252ZXJ0RmxvYXQzMklubGluZSh2YWx1ZSwgdGN1RmxvYXQuZGVzY3JpcHRpb24xMSk7
Cit9OworCit0Y3VGbG9hdC5mbG9hdDExVG9OdW1iZXIgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHggPSB0Y3VGbG9hdC5uZXdEZUZsb2F0RnJvbVBhcmFtZXRlcnMoMCwgdGN1RmxvYXQuZGVzY3Jp
cHRpb24xMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uKGZsb2F0MTEpIHsKKyAgICAgICAgeC5kZUZs
b2F0UGFyYW1ldGVyc051bWJlcihmbG9hdDExKTsKKyAgICAgICAgcmV0dXJuIHguZ2V0VmFsdWUo
KTsKKyAgICB9OworfSkoKTsKKwordGN1RmxvYXQubnVtYmVyVG9GbG9hdDEwID0gZnVuY3Rpb24o
dmFsdWUpIHsKKyAgICByZXR1cm4gdGN1RmxvYXQuY29udmVydEZsb2F0MzJJbmxpbmUodmFsdWUs
IHRjdUZsb2F0LmRlc2NyaXB0aW9uMTApOworfTsKKwordGN1RmxvYXQuZmxvYXQxMFRvTnVtYmVy
ID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciB4ID0gdGN1RmxvYXQubmV3RGVGbG9hdEZyb21QYXJh
bWV0ZXJzKDAsIHRjdUZsb2F0LmRlc2NyaXB0aW9uMTApOworICAgIHJldHVybiBmdW5jdGlvbihm
bG9hdDEwKSB7CisgICAgICAgIHguZGVGbG9hdFBhcmFtZXRlcnNOdW1iZXIoZmxvYXQxMCk7Cisg
ICAgICAgIHJldHVybiB4LmdldFZhbHVlKCk7CisgICAgfTsKK30pKCk7CisKK3RjdUZsb2F0Lm51
bWJlclRvSGFsZkZsb2F0ID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICByZXR1cm4gdGN1RmxvYXQu
Y29udmVydEZsb2F0MzJJbmxpbmUodmFsdWUsIHRjdUZsb2F0LmRlc2NyaXB0aW9uMTYpOworfTsK
KwordGN1RmxvYXQubnVtYmVyVG9IYWxmRmxvYXROb0Rlbm9ybSA9IGZ1bmN0aW9uKHZhbHVlKSB7
CisgICAgcmV0dXJuIHRjdUZsb2F0Lm5ld0Zsb2F0MTZOb0Rlbm9ybSh2YWx1ZSkuYml0cygpOwor
fTsKKwordGN1RmxvYXQuaGFsZkZsb2F0VG9OdW1iZXIgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHggPSB0Y3VGbG9hdC5uZXdEZUZsb2F0RnJvbVBhcmFtZXRlcnMoMCwgdGN1RmxvYXQuZGVzY3Jp
cHRpb24xNik7CisgICAgcmV0dXJuIGZ1bmN0aW9uKGhhbGYpIHsKKyAgICAgICAgeC5kZUZsb2F0
UGFyYW1ldGVyc051bWJlcihoYWxmKTsKKyAgICAgICAgcmV0dXJuIHguZ2V0VmFsdWUoKTsKKyAg
ICB9OworfSkoKTsKKwordGN1RmxvYXQuaGFsZkZsb2F0VG9OdW1iZXJOb0Rlbm9ybSA9IHRjdUZs
b2F0LmhhbGZGbG9hdFRvTnVtYmVyOworCisvKioKKyAqIEJ1aWxkcyBhIDY0IGJpdCB0Y3VGbG9h
dC5kZUZsb2F0CisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgKDY0LWJpdCBKUyBmbG9hdCkKKyAq
IEByZXR1cm4ge3RjdUZsb2F0LmRlRmxvYXR9CisgKi8KK3RjdUZsb2F0Lm5ld0Zsb2F0NjQgPSBm
dW5jdGlvbih2YWx1ZSkgeworICAgIHJldHVybiBuZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmRlRmxv
YXRQYXJhbWV0ZXJzKDAsIHRjdUZsb2F0LmRlc2NyaXB0aW9uNjQpCisgICAgICAgIC5kZUZsb2F0
TnVtYmVyNjQodmFsdWUpOworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1Rmxv
YXRGb3JtYXQuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1RmxvYXRGb3JtYXQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBi
NGRjODJjZjRiNmRjM2Y4OTM4YTcyMjBmNjQ2YjgxMDgwYWU1YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3
b3JrL2NvbW1vbi90Y3VGbG9hdEZvcm1hdC5qcwpAQCAtMCwwICsxLDM0OSBAQAorLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBDb3JlCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJp
Z2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
ICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisg
KgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAq
CisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8vKiEKKyAq
IFxmaWxlCisgKiBcYnJpZWYgQWRqdXN0YWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgb3Bl
cmF0aW9ucy4KKyAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICd1c2Ugc3RyaWN0JzsKKyBnb29nLnByb3Zp
ZGUoJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXRGb3JtYXQnKTsKKworIGdvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VJbnRlcnZhbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKKworIGdvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAg
ICAgdmFyIHRjdUZsb2F0Rm9ybWF0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdEZvcm1hdDsK
KyAgICAgdmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKyAgICAg
dmFyIHRjdUludGVydmFsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VJbnRlcnZhbDsKKworICAgICAv
KioKKyAgICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlfSBjaG9pY2UKKyAg
ICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gbm8KKyAgICAgICogQHBhcmFtIHt0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0geWVzCisgICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLklu
dGVydmFsfQorICAgICAgKi8KKyAgICB0Y3VGbG9hdEZvcm1hdC5jaG9vc2VJbnRlcnZhbCA9IGZ1
bmN0aW9uKGNob2ljZSwgbm8sIHllcykgeworICAgICAgICBzd2l0Y2ggKGNob2ljZSkgeworICAg
ICAgICAgICAgY2FzZSB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlLk5POiByZXR1cm4gbm87Cisg
ICAgICAgICAgICBjYXNlIHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTOiByZXR1cm4geWVz
OworICAgICAgICAgICAgY2FzZSB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlLk1BWUJFOiByZXR1
cm4gbm8ub3BlcmF0b3JPckJpbmFyeSh5ZXMpOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cg
bmV3IEVycm9yKCdJbXBvc3NpYmxlIGNhc2UnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWF4RXhwCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGZyYWN0aW9uQml0cworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VG
bG9hdEZvcm1hdC5jb21wdXRlTWF4VmFsdWUgPSBmdW5jdGlvbihtYXhFeHAsIGZyYWN0aW9uQml0
cykgeworICAgICAgICByZXR1cm4gZGVNYXRoLmRlTGRFeHAoMSwgbWF4RXhwKSArIGRlTWF0aC5k
ZUxkRXhwKE1hdGgucG93KDIsIGZyYWN0aW9uQml0cykgLSAxLCBtYXhFeHAgLSBmcmFjdGlvbkJp
dHMpOworICAgIH07CisKKyAgICAgLyoqCisgICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICAq
LworICAgICB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlID0geworICAgICAgICBOTzogMCwKKyAg
ICAgICAgIE1BWUJFOiAxLAorICAgICAgICAgWUVTOiAyCisgICAgIH07CisKKyAgICAgLyoqCisg
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluRXhwCisgICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhFeHAKKyAgICAgICogQHBhcmFtIHtudW1iZXJ9IGZyYWN0
aW9uQml0cworICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV4YWN0UHJlY2lzaW9uCisgICAgICAq
IEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuWWVzTm9NYXliZT19IGhhc1N1Ym5vcm1hbAorICAgICAg
KiBAcGFyYW0ge3RjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmU9fSBoYXNJbmYKKyAgICAgICogQHBh
cmFtIHt0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlPX0gaGFzTmFOCisgICAgICAqLworICAgICB0
Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdCA9IGZ1bmN0aW9uKG1pbkV4cCwgbWF4RXhwLCBmcmFj
dGlvbkJpdHMsIGV4YWN0UHJlY2lzaW9uLCBoYXNTdWJub3JtYWwsIGhhc0luZiwgaGFzTmFOKSB7
CisgICAgICAgICAvLyAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgZXhwb25lbnRTaGlmdCAoaW50
IGV4cCkgY29uc3Q7CisgICAgICAgICAvLyBJbnRlcnZhbCBjbGFtcFZhbHVlIChkb3VibGUgZCkg
Y29uc3Q7CisKKyAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbWluRXhwID0g
bWluRXhwOyAvLyBNaW5pbXVtIGV4cG9uZW50LCBpbmNsdXNpdmUKKyAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1fbWF4RXhwID0gbWF4RXhwOyAvLyBNYXhpbXVtIGV4cG9uZW50
LCBpbmNsdXNpdmUKKyAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fZnJhY3Rp
b25CaXRzID0gZnJhY3Rpb25CaXRzOyAvLyBOdW1iZXIgb2YgZnJhY3Rpb25hbCBiaXRzIGluIHNp
Z25pZmljYW5kCisgICAgICAgICAvKiogQHR5cGUge3RjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmV9
ICovIHRoaXMubV9oYXNTdWJub3JtYWwgPSBoYXNTdWJub3JtYWwgPT09IHVuZGVmaW5lZCA/IHRj
dUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuTUFZQkUgOiBoYXNTdWJub3JtYWw7IC8vIERvZXMgdGhl
IGZvcm1hdCBzdXBwb3J0IGRlbm9ybWFsaXplZCBudW1iZXJzPworICAgICAgICAgLyoqIEB0eXBl
IHt0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlfSAqLyB0aGlzLm1faGFzSW5mID0gaGFzSW5mID09
PSB1bmRlZmluZWQgPyB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlLk1BWUJFIDogaGFzSW5mOyAv
LyBEb2VzIHRoZSBmb3JtYXQgc3VwcG9ydCBpbmZpbml0aWVzPworICAgICAgICAgLyoqIEB0eXBl
IHt0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlfSAqLyB0aGlzLm1faGFzTmFOID0gaGFzTmFOID09
PSB1bmRlZmluZWQgPyB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlLk1BWUJFIDogaGFzTmFOOyAv
LyBEb2VzIHRoZSBmb3JtYXQgc3VwcG9ydCBOYU5zPworICAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB0aGlzLm1fZXhhY3RQcmVjaXNpb24gPSBleGFjdFByZWNpc2lvbjsgLy8gQXJlIGxh
cmdlciBwcmVjaXNpb25zIGRpc2FsbG93ZWQ/CisgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX21heFZhbHVlID0gdGN1RmxvYXRGb3JtYXQuY29tcHV0ZU1heFZhbHVlKG1heEV4
cCwgZnJhY3Rpb25CaXRzKTsKKyAgICAgfTsKKworICAgICAvKioKKyAgICAgICogQHJldHVybiB7
bnVtYmVyfQorICAgICAgKi8KKyAgICAgdGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXQucHJvdG90
eXBlLmdldE1pbkV4cCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgcmV0dXJuIHRoaXMubV9taW5F
eHA7CisgICAgIH07CisKKyAgICAgLyoqCisgICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAg
ICovCisgICAgIHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0LnByb3RvdHlwZS5nZXRNYXhFeHAg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHJldHVybiB0aGlzLm1fbWF4RXhwOworICAgICB9Owor
CisgICAgIC8qKgorICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICAqLworICAgICB0Y3VG
bG9hdEZvcm1hdC5GbG9hdEZvcm1hdC5wcm90b3R5cGUuZ2V0TWF4VmFsdWUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgIHJldHVybiB0aGlzLm1fbWF4VmFsdWU7CisgICAgIH07CisKKyAgICAgLyoq
CisgICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgICovCisgICAgIHRjdUZsb2F0Rm9ybWF0
LkZsb2F0Rm9ybWF0LnByb3RvdHlwZS5nZXRGcmFjdGlvbkJpdHMgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgIHJldHVybiB0aGlzLm1fZnJhY3Rpb25CaXRzOworICAgICB9OworCisgICAgIC8qKgor
ICAgICAgKiBAcmV0dXJuIHt0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlfQorICAgICAgKi8KKyAg
ICAgdGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXQucHJvdG90eXBlLmhhc1N1Ym5vcm1hbCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgcmV0dXJuIHRoaXMubV9oYXNTdWJub3JtYWw7CisgICAgIH07
CisKKyAgICAgLyoqCisgICAgICAqIEByZXR1cm4ge3RjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmV9
CisgICAgICAqLworICAgICB0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdC5wcm90b3R5cGUuaGFz
SW5mID0gZnVuY3Rpb24oKSB7CisgICAgICAgICByZXR1cm4gdGhpcy5tX2hhc0luZjsKKyAgICAg
fTsKKworICAgICAvKioKKyAgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgICogQHBhcmFt
IHtudW1iZXJ9IGNvdW50CisgICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgICovCisgICAg
IHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0LnByb3RvdHlwZS51bHAgPSBmdW5jdGlvbih4LCBj
b3VudCkgeworICAgICAgICB2YXIgYnJlYWtkb3duID0gZGVNYXRoLmRlRnJhY3RFeHAoTWF0aC5h
YnMoeCkpOworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHAgPSBicmVha2Rv
d24uZXhwb25lbnQ7CisgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZyYWMgPSBi
cmVha2Rvd24uc2lnbmlmaWNhbmQ7CisKKyAgICAgICAgIGlmIChpc05hTihmcmFjKSkKKyAgICAg
ICAgICAgICByZXR1cm4gTmFOOworICAgICAgICAgZWxzZSBpZiAoIWlzRmluaXRlKGZyYWMpKQor
ICAgICAgICAgICAgIHJldHVybiBkZU1hdGguZGVMZEV4cCgxLjAsIHRoaXMubV9tYXhFeHAgLSB0
aGlzLm1fZnJhY3Rpb25CaXRzKTsKKyAgICAgICAgIGVsc2UgaWYgKGZyYWMgPT0gMS4wKSB7Cisg
ICAgICAgICAgICAgLy8gSGFycmlzb24ncyBVTFA6IGNob29zZSBkaXN0YW5jZSB0byBjbG9zZXN0
IChpLmUuIG5leHQgbG93ZXIpIGF0IGJpbmFkZQorICAgICAgICAgICAgIC8vIGJvdW5kYXJ5Lgor
ICAgICAgICAgICAgIC0tZXhwOworICAgICAgICAgfSBlbHNlIGlmIChmcmFjID09IDAuMCkKKyAg
ICAgICAgICAgICBleHAgPSB0aGlzLm1fbWluRXhwOworCisgICAgICAgICAvLyBVTFAgY2Fubm90
IGJlIGxvd2VyIHRoYW4gdGhlIHNtYWxsZXN0IHF1YW50dW0uCisgICAgICAgICBleHAgPSBNYXRo
Lm1heChleHAsIHRoaXMubV9taW5FeHApOworCisgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG9uZVVMUCA9IGRlTWF0aC5kZUxkRXhwKDEuMCwgZXhwIC0gdGhpcy5tX2ZyYWN0aW9u
Qml0cyk7CisgICAgICAgICAvLyAgICAgU2NvcGVkUm91bmRpbmdNb2RlIGN0eCAoREVfUk9VTkRJ
TkdNT0RFX1RPX1BPU0lUSVZFX0lORik7CisKKyAgICAgICAgIHJldHVybiBvbmVVTFAgKiBjb3Vu
dDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhlIGdpdmVuIG5vbWluYWwgZXhwb25lbnQgYW5kCisgICAgICogdGhlIGV4cG9uZW50IG9m
IHRoZSBsb3dlc3Qgc2lnbmlmaWNhbmQgYml0IG9mIHRoZQorICAgICAqIHJlcHJlc2VudGF0aW9u
IG9mIGEgbnVtYmVyIHdpdGggdGhpcyBmb3JtYXQuCisgICAgICogRm9yIG5vcm1hbCBudW1iZXJz
IHRoaXMgaXMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FuZCBiaXRzLCBidXQKKyAgICAgKiBmb3Ig
c3Vibm9ybWFscyBpdCBpcyBsZXNzIGFuZCBmb3IgdmFsdWVzIG9mIGV4cCB3aGVyZSAyXmV4cCBp
cyB0b28KKyAgICAgKiBzbWFsbCB0byByZXByZXNlbnQgaXQgaXMgPDAKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gZXhwCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHRjdUZs
b2F0Rm9ybWF0LkZsb2F0Rm9ybWF0LnByb3RvdHlwZS5leHBvbmVudFNoaWZ0ID0gZnVuY3Rpb24o
ZXhwKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fZnJhY3Rpb25CaXRzIC0gTWF0aC5tYXgodGhp
cy5tX21pbkV4cCAtIGV4cCwgMCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBkCisgICAgICogQHBhcmFtIHtib29sZWFufSB1cHdhcmQKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgdGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXQucHJvdG90
eXBlLnJvdW5kID0gZnVuY3Rpb24oZCwgdXB3YXJkKSB7CisgICAgICAgIHZhciBicmVha2Rvd24g
PSBkZU1hdGguZGVGcmFjdEV4cChkKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBleHAgPSBicmVha2Rvd24uZXhwb25lbnQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgZnJhYyA9IGJyZWFrZG93bi5zaWduaWZpY2FuZDsKKworICAgICAgICB2YXIgc2hpZnQg
PSB0aGlzLmV4cG9uZW50U2hpZnQoZXhwKTsKKyAgICAgICAgdmFyIHNoaWZ0RnJhYyA9IGRlTWF0
aC5kZUxkRXhwKGZyYWMsIHNoaWZ0KTsKKyAgICAgICAgdmFyIHJvdW5kRnJhYyA9IHVwd2FyZCA/
IE1hdGguY2VpbChzaGlmdEZyYWMpIDogTWF0aC5mbG9vcihzaGlmdEZyYWMpOworCisgICAgICAg
IHJldHVybiBkZU1hdGguZGVMZEV4cChyb3VuZEZyYWMsIGV4cCAtIHNoaWZ0KTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSByYW5nZSBvZiBudW1iZXJzIHRoYXQgYGRgIG1p
Z2h0IGJlIGNvbnZlcnRlZCB0byBpbiB0aGUKKyAgICAgKiBmbG9hdGZvcm1hdCwgZ2l2ZW4gaXRz
IGxpbWl0YXRpb25zIHdpdGggaW5maW5pdGllcywgc3Vibm9ybWFscyBhbmQgbWF4aW11bQorICAg
ICAqIGV4cG9uZW50LgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkCisgICAgICogQHJldHVybiB7
dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgIHRjdUZsb2F0Rm9ybWF0LkZsb2F0
Rm9ybWF0LnByb3RvdHlwZS5jbGFtcFZhbHVlID0gZnVuY3Rpb24oZCkgeworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHJTaWduID0gZGVNYXRoLmRlU2lnbihkKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByRXhwID0gMDsKKworICAgICAgICAvLyBERV9BU1NF
UlQoIWlzTmFOKGQpKTsKKworICAgICAgICB2YXIgYnJlYWtkb3duID0gZGVNYXRoLmRlRnJhY3RF
eHAoZCk7CisgICAgICAgIHJFeHAgPSBicmVha2Rvd24uZXhwb25lbnQ7CisgICAgICAgIGlmIChy
RXhwIDwgdGhpcy5tX21pbkV4cCkKKyAgICAgICAgICAgIHJldHVybiB0Y3VGbG9hdEZvcm1hdC5j
aG9vc2VJbnRlcnZhbCh0aGlzLm1faGFzU3Vibm9ybWFsLCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2
YWwoclNpZ24gKiAwLjApLCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZCkpOworICAgICAgICBl
bHNlIGlmICghaXNGaW5pdGUoZCkgfHwgckV4cCA+IHRoaXMubV9tYXhFeHApCisgICAgICAgICAg
ICByZXR1cm4gdGN1RmxvYXRGb3JtYXQuY2hvb3NlSW50ZXJ2YWwodGhpcy5tX2hhc0luZiwgbmV3
IHRjdUludGVydmFsLkludGVydmFsKHJTaWduICogdGhpcy5nZXRNYXhWYWx1ZSgpKSwgbmV3IHRj
dUludGVydmFsLkludGVydmFsKHJTaWduICogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSk7CisK
KyAgICAgICAgcmV0dXJuIG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChkKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59
IHVwd2FyZAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcm91bmRVbmRlck92ZXJmbG93CisgICAg
ICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9y
bWF0LnByb3RvdHlwZS5yb3VuZE91dERpciA9IGZ1bmN0aW9uKGQsIHVwd2FyZCwgcm91bmRVbmRl
ck92ZXJmbG93KSB7CisgICAgICAgIHZhciBicmVha2Rvd24gPSBkZU1hdGguZGVGcmFjdEV4cChk
KTsKKyAgICAgICAgdmFyIGV4cCA9IGJyZWFrZG93bi5leHBvbmVudDsKKworICAgICAgICBpZiAo
cm91bmRVbmRlck92ZXJmbG93ICYmIGV4cCA+IHRoaXMubV9tYXhFeHAgJiYgKHVwd2FyZCA9PSAo
ZCA8IDAuMCkpKQorICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5kZVNpZ24oZCkgKiB0aGlzLmdl
dE1heFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdW5k
KGQsIHVwd2FyZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2
YWwuSW50ZXJ2YWx9IHgKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJvdW5kVW5kZXJPdmVyZmxv
dworICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRj
dUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0LnByb3RvdHlwZS5yb3VuZE91dCA9IGZ1bmN0aW9uKHgs
IHJvdW5kVW5kZXJPdmVyZmxvdykgeworICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFsLklu
dGVydmFsfSAqLyB2YXIgcmV0ID0geC5uYW4oKTsKKworICAgICAgICBpZiAoIXguZW1wdHkoKSkg
eworICAgICAgICAgICAgdmFyIGEgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwodGhpcy5yb3Vu
ZE91dERpcih4LmxvKCksIGZhbHNlLCByb3VuZFVuZGVyT3ZlcmZsb3cpKTsKKyAgICAgICAgICAg
IHZhciBiID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKHRoaXMucm91bmRPdXREaXIoeC5oaSgp
LCB0cnVlLCByb3VuZFVuZGVyT3ZlcmZsb3cpKTsKKyAgICAgICAgICAgIHJldC5vcGVyYXRvck9y
QXNzaWduQmluYXJ5KHRjdUludGVydmFsLndpdGhJbnRlcnZhbHMoYSwgYikpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIC8vISBSZXR1cm4gdGhlIHJhbmdl
IG9mIG51bWJlcnMgdGhhdCBtaWdodCBiZSB1c2VkIHdpdGggdGhpcyBmb3JtYXQgdG8KKyAgICAv
LyEgcmVwcmVzZW50IGEgbnVtYmVyIHdpdGhpbiBgeGAuCisgICAgLyoqCisgICAgICogQHBhcmFt
IHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0geAorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLklu
dGVydmFsfQorICAgICAqLworICAgIHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0LnByb3RvdHlw
ZS5jb252ZXJ0ID0gZnVuY3Rpb24oeCkgeworICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFs
LkludGVydmFsfSAqLyB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIHZhciB0bXAgPSB4OworCisg
ICAgICAgIGlmICh4Lmhhc05hTigpKSB7CisgICAgICAgICAgICAvLyBJZiBOYU4gbWlnaHQgYmUg
c3VwcG9ydGVkLCBOYU4gaXMgYSBsZWdhbCByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGlmICh0
aGlzLm1faGFzTmFOICE9IHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuTk8pCisgICAgICAgICAg
ICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkobmV3IHRjdUludGVydmFsLkludGVydmFs
KE5hTikpOworCisgICAgICAgICAgICAvLyBJZiBOYU4gbWlnaHQgbm90IGJlIHN1cHBvcnRlZCwg
YW55IChub24tTmFOKSB2YWx1ZSBpcyBsZWdhbCwKKyAgICAgICAgICAgIC8vIF9zdWJqZWN0XyB0
byBjbGFtcGluZy4gSGVuY2Ugd2UgbW9kaWZ5IHRtcCwgbm90IHJldC4KKyAgICAgICAgICAgIGlm
ICh0aGlzLm1faGFzTmFOICE9IHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTKQorICAgICAg
ICAgICAgICAgIHRtcCA9IHRjdUludGVydmFsLnVuYm91bmRlZCgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUm91bmQgYm90aCBib3VuZHMgX2lud2FyZHNfIHRvIGNsb3Nlc3QgcmVwcmVzZW50
YWJsZSB2YWx1ZXMuCisgICAgICAgIGlmICghdG1wLmVtcHR5KCkpCisgICAgICAgICAgICByZXQu
b3BlcmF0b3JPckFzc2lnbkJpbmFyeSgKKyAgICAgICAgICAgICAgICB0aGlzLmNsYW1wVmFsdWUo
dGhpcy5yb3VuZCh0bXAubG8oKSwgdHJ1ZSkpLm9wZXJhdG9yT3JCaW5hcnkoCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuY2xhbXBWYWx1ZSh0aGlzLnJvdW5kKHRtcC5oaSgpLCBmYWxzZSkpKSk7
CisKKyAgICAgICAgLy8gSWYgdGhpcyBmb3JtYXQncyBwcmVjaXNpb24gaXMgbm90IGV4YWN0LCB0
aGUgKHBvc3NpYmx5IG91dC1vZi1ib3VuZHMpCisgICAgICAgIC8vIG9yaWdpbmFsIHZhbHVlIGlz
IGFsc28gYSBwb3NzaWJsZSByZXN1bHQuCisgICAgICAgIGlmICghdGhpcy5tX2V4YWN0UHJlY2lz
aW9uKQorICAgICAgICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkoeCk7CisKKyAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHgKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdGN1RmxvYXRGb3JtYXQu
RmxvYXRGb3JtYXQucHJvdG90eXBlLmZsb2F0VG9IZXggPSBmdW5jdGlvbih4KSB7CisgICAgICAg
IGlmIChpc05hTih4KSkKKyAgICAgICAgICAgIHJldHVybiAnTmFOJzsKKyAgICAgICAgZWxzZSBp
ZiAoIWlzRmluaXRlKHgpKQorICAgICAgICAgICAgcmV0dXJuICh4IDwgMC4wID8gJy0nIDogJysn
KSArICgnaW5mJyk7CisgICAgICAgIGVsc2UgaWYgKHggPT0gMC4wKSAvLyBcdG9kbyBbMjAxNC0w
My0yNyBsYXVyaV0gTmVnYXRpdmUgemVybworICAgICAgICAgICAgcmV0dXJuICcwLjAnOworCisg
ICAgICAgIHJldHVybiB4LnRvU3RyaW5nKDEwKTsKKyAgICAgICAgLy8gVE9ETworICAgICAgICAv
LyB2YXIgYnJlYWtkb3duID0gZGVNYXRoLmRlRnJhY3RFeHAoZGVBYnMoeCkpOworICAgICAgICAv
LyAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgZXhwID0gYnJlYWtkb3duLmV4cG9uZW50OworICAg
ICAgICAvLyAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgZnJhYyA9IGJyZWFrZG93bi5zaWduaWZp
Y2FuZDsKKyAgICAgICAgLy8gLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIHNoaWZ0ID0gdGhpcy5l
eHBvbmVudFNoaWZ0KGV4cCk7CisgICAgICAgIC8vIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBi
aXRzID0gZGVVaW50NjQoZGVMZEV4cChmcmFjLCBzaGlmdCkpOworICAgICAgICAvLyAvKiogQHR5
cGV7bnVtYmVyfSAqLyB2YXIgd2hvbGUgPSBiaXRzID4+IG1fZnJhY3Rpb25CaXRzOworICAgICAg
ICAvLyAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgZnJhY3Rpb24gPSBiaXRzICYgKChkZVVpbnQ2
NCgxKSA8PCBtX2ZyYWN0aW9uQml0cykgLSAxKTsKKyAgICAgICAgLy8gLyoqIEB0eXBle251bWJl
cn0gKi8gdmFyIGV4cG9uZW50ID0gZXhwICsgbV9mcmFjdGlvbkJpdHMgLSBzaGlmdDsKKyAgICAg
ICAgLy8gLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIG51bURpZ2l0cyA9ICh0aGlzLm1fZnJhY3Rp
b25CaXRzICsgMykgLyA0OworICAgICAgICAvLyAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgYWxp
Z25lZCA9IGZyYWN0aW9uIDw8IChudW1EaWdpdHMgKiA0IC0gbV9mcmFjdGlvbkJpdHMpOworICAg
ICAgICAvLyAvKiogQHR5cGV7c3RyaW5nfSAqLyB2YXIgb3NzID0gJyc7CisKKyAgICAgICAgLy8g
b3NzICsgKHggPCAwID8gJy0nIDogJycpCisgICAgICAgIC8vICAgICArICcweCcgKyB3aG9sZSAr
ICcuJworICAgICAgICAvLyAgICAgKyBzdGQ6OmhleCArIHN0ZDo6c2V0dyhudW1EaWdpdHMpICsg
c3RkOjpzZXRmaWxsKCcwJykgKyBhbGlnbmVkCisgICAgICAgIC8vICAgICArICdwJyArIHN0ZDo6
ZGVjICsgc3RkOjpzZXR3KDApICsgZXhwb25lbnQ7CisgICAgICAgIC8vcmV0dXJuIG9zczsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gaW50
ZXJ2YWwKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdGN1RmxvYXRGb3Jt
YXQuRmxvYXRGb3JtYXQucHJvdG90eXBlLmludGVydmFsVG9IZXggPSBmdW5jdGlvbihpbnRlcnZh
bCkgeworICAgICAgICBpZiAoaW50ZXJ2YWwuZW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBp
bnRlcnZhbC5oYXNOYU4oKSA/ICd7IE5hTiB9JyA6ICd7fSc7CisKKyAgICAgICAgZWxzZSBpZiAo
aW50ZXJ2YWwubG8oKSA9PSBpbnRlcnZhbC5oaSgpKQorICAgICAgICAgICAgcmV0dXJuICgoaW50
ZXJ2YWwuaGFzTmFOKCkgPyAneyBOYU4sICcgOiAneyAnKSArCisgICAgICAgICAgICAgICAgICAg
IHRoaXMuZmxvYXRUb0hleChpbnRlcnZhbC5sbygpKSArICcgfScpOworICAgICAgICBlbHNlIGlm
IChpbnRlcnZhbCA9PSB0Y3VJbnRlcnZhbC51bmJvdW5kZWQodHJ1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gJzxhbnk+JzsKKworICAgICAgICByZXR1cm4gKChpbnRlcnZhbC5oYXNOYU4oKSA/ICd7
IE5hTiB9IHwgJyA6ICcnKSArCisgICAgICAgICAgICAgICAgJ1snICsgdGhpcy5mbG9hdFRvSGV4
KGludGVydmFsLmxvKCkpICsgJywgJyArIHRoaXMuZmxvYXRUb0hleChpbnRlcnZhbC5oaSgpKSAr
ICddJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3RjdUZsb2F0Rm9ybWF0
LkZsb2F0Rm9ybWF0fQorICAgICAqLworICAgIHRjdUZsb2F0Rm9ybWF0Lm5hdGl2ZURvdWJsZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9y
bWF0KC0xMDIxIC0gMSwgLy8gbWluX2V4cG9uZW50CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAyNCAtIDEsIC8vIG1heF9leHBvbmVudAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzIC0gMSwgLy8gZGlnaXRzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgLy8gaGFz
X2Rlbm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRj
dUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTLCAvLyBoYXNfaW5maW5pdHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01h
eWJlLllFUywgLy8gaGFzX3F1aWV0X25hbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTKTsgLy8gaGFzX2Rl
bm9ybQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUZ1enp5SW1hZ2VD
b21wYXJlLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUZ1enp5SW1hZ2VDb21wYXJlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyOGQ4MzAxMDA2Njc1NTY5ZmE1MTMwMGUzYjUxMmFlMWI3NzNlZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Zy
YW1ld29yay9jb21tb24vdGN1RnV6enlJbWFnZUNvbXBhcmUuanMKQEAgLTAsMCArMSwzMzggQEAK
Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVu
R0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
KiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1l
d29yay5jb21tb24udGN1RnV6enlJbWFnZUNvbXBhcmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24u
dGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9t
Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciB0Y3VGdXp6eUltYWdlQ29tcGFy
ZSA9IGZyYW1ld29yay5jb21tb24udGN1RnV6enlJbWFnZUNvbXBhcmU7Cit2YXIgZGVNYXRoID0g
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIGRlUmFuZG9tID0gZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZTsKK3ZhciB0Y3VUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZVV0aWw7CisKKyAgICB2YXIgREVfQVNTRVJUID0gZnVuY3Rpb24oeCkgeworICAgICAg
ICBpZiAoIXgpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogdGN1RnV6enlJbWFnZUNvbXBhcmUuRnV6enlDb21w
YXJlUGFyYW1zIHN0cnVjdAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7bnVt
YmVyPX0gbWF4U2FtcGxlU2tpcF8KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG1pbkVyclRocmVz
aG9sZF8KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGVyckV4cF8KKyAgICAgKi8KKyAgICB0Y3VG
dXp6eUltYWdlQ29tcGFyZS5GdXp6eUNvbXBhcmVQYXJhbXMgPSBmdW5jdGlvbihtYXhTYW1wbGVT
a2lwXywgbWluRXJyVGhyZXNob2xkXywgZXJyRXhwXykgeworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tYXhTYW1wbGVTa2lwID0gbWF4U2FtcGxlU2tpcF8gPT09IHVuZGVmaW5l
ZCA/IDggOiBtYXhTYW1wbGVTa2lwXzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRo
aXMubWluRXJyVGhyZXNob2xkID0gbWluRXJyVGhyZXNob2xkXyA9PT0gdW5kZWZpbmVkID8gNCA6
IG1pbkVyclRocmVzaG9sZF87CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmVy
ckV4cCA9IGVyckV4cF8gPT09IHVuZGVmaW5lZCA/IDQuMCA6IGVyckV4cF87CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdgorICAgICAqIEByZXR1cm4g
e0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgdGN1RnV6enlJbWFnZUNvbXBhcmUucm91bmRB
cnJheTRUb1VpbnQ4U2F0ID0gZnVuY3Rpb24odikgeworICAgICAgICByZXR1cm4gWworICAgICAg
ICAgICAgZGVNYXRoLmNsYW1wKE1hdGgudHJ1bmModlswXSArIDAuNSksIDAsIDI1NSksCisgICAg
ICAgICAgICBkZU1hdGguY2xhbXAoTWF0aC50cnVuYyh2WzFdICsgMC41KSwgMCwgMjU1KSwKKyAg
ICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRoLnRydW5jKHZbMl0gKyAwLjUpLCAwLCAyNTUpLAor
ICAgICAgICAgICAgZGVNYXRoLmNsYW1wKE1hdGgudHJ1bmModlszXSArIDAuNSksIDAsIDI1NSkK
KyAgICAgICAgXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBwYQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGIKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbWluRXJyVGhyZXNob2xkCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LworICAgIHRjdUZ1enp5SW1hZ2VDb21wYXJlLmNvbXBhcmVDb2xvcnMgPSBmdW5jdGlvbihwYSwg
cGIsIG1pbkVyclRocmVzaG9sZCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIg
ciA9IE1hdGgubWF4KE1hdGguYWJzKHBhWzBdIC0gcGJbMF0pIC0gbWluRXJyVGhyZXNob2xkLCAw
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIGcgPSBNYXRoLm1heChNYXRoLmFi
cyhwYVsxXSAtIHBiWzFdKSAtIG1pbkVyclRocmVzaG9sZCwgMCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSovIHZhciBiID0gTWF0aC5tYXgoTWF0aC5hYnMocGFbMl0gLSBwYlsyXSkgLSBt
aW5FcnJUaHJlc2hvbGQsIDApOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgYSA9
IE1hdGgubWF4KE1hdGguYWJzKHBhWzNdIC0gcGJbM10pIC0gbWluRXJyVGhyZXNob2xkLCAwKTsK
KworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgc2NhbGUgPSAxLjAgLyAoMjU1IC0g
bWluRXJyVGhyZXNob2xkKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHNxU3Vt
ID0gKHIgKiByICsgZyAqIGcgKyBiICogYiArIGEgKiBhKSAqIChzY2FsZSAqIHNjYWxlKTsKKwor
ICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHNxU3VtKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLlJHQkE4Vmlld30gc3JjCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBO
dW1DaGFubmVscworICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAg
dGN1RnV6enlJbWFnZUNvbXBhcmUuYmlsaW5lYXJTYW1wbGUgPSBmdW5jdGlvbihzcmMsIHUsIHYs
IE51bUNoYW5uZWxzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciB3ID0gc3Jj
LndpZHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgaCA9IHNyYy5oZWlnaHQ7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHgwID0gTWF0aC5mbG9vcih1IC0g
MC41KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHgxID0geDAgKyAxOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgeTAgPSBNYXRoLmZsb29yKHYgLSAwLjUpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgeTEgPSB5MCArIDE7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIGkwID0gZGVNYXRoLmNsYW1wKHgwLCAwLCB3IC0gMSk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciBpMSA9IGRlTWF0aC5jbGFtcCh4MSwg
MCwgdyAtIDEpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgajAgPSBkZU1hdGgu
Y2xhbXAoeTAsIDAsIGggLSAxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIGox
ID0gZGVNYXRoLmNsYW1wKHkxLCAwLCBoIC0gMSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9Ki8gdmFyIGEgPSAodSAtIDAuNSkgLSBNYXRoLmZsb29yKHUgLSAwLjUpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0qLyB2YXIgYiA9ICh2IC0gMC41KSAtIE1hdGguZmxvb3IodiAtIDAu
NSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcDAwID0gc3Jj
LnJlYWQoaTAsIGowLCBOdW1DaGFubmVscyk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHAxMCA9IHNyYy5yZWFkKGkxLCBqMCwgTnVtQ2hhbm5lbHMpOworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwMDEgPSBzcmMucmVhZChpMCwgajEs
IE51bUNoYW5uZWxzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
cDExID0gc3JjLnJlYWQoaTEsIGoxLCBOdW1DaGFubmVscyk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZHN0ID0gMDsKKworICAgICAgICAvLyBJbnRlcnBvbGF0ZS4KKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSovIHZhciBmID0gW107CisgICAgICAgIGZvciAo
dmFyIGMgPSAwOyBjIDwgTnVtQ2hhbm5lbHM7IGMrKykgeworICAgICAgICAgICAgICAgIGZbY10g
PSBwMDBbY10gKiAoMS4wIC0gYSkgKiAoMS4wIC0gYikgKworICAgICAgICAgICAgICAgIChwMTBb
Y10gKiBhICogKDEuMCAtIGIpKSArCisgICAgICAgICAgICAgICAgKHAwMVtjXSAqICgxLjAgLSBh
KSAqIGIpICsKKyAgICAgICAgICAgICAgICAocDExW2NdICogYSAqIGIpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRjdUZ1enp5SW1hZ2VDb21wYXJlLnJvdW5kQXJyYXk0VG9VaW50OFNh
dChmKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlJHQkE4
Vmlld30gZHN0CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlJHQkE4Vmlld30gc3JjCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHNoaWZ0WAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaGlmdFkK
KyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGtlcm5lbFgKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGtlcm5lbFkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gRHN0Q2hhbm5lbHMK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gU3JjQ2hhbm5lbHMKKyAgICAgKi8KKyAgICB0Y3VGdXp6
eUltYWdlQ29tcGFyZS5zZXBhcmFibGVDb252b2x2ZSA9IGZ1bmN0aW9uKGRzdCwgc3JjLCBzaGlm
dFgsIHNoaWZ0WSwga2VybmVsWCwga2VybmVsWSwgRHN0Q2hhbm5lbHMsIFNyY0NoYW5uZWxzKSB7
CisgICAgICAgIERFX0FTU0VSVChkc3Qud2lkdGggPT0gc3JjLndpZHRoICYmIGRzdC5oZWlnaHQg
PT0gc3JjLmhlaWdodCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVM
ZXZlbH0gKi8gdmFyIHRtcCA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChkc3QuZ2V0Rm9y
bWF0KCksIGRzdC5oZWlnaHQsIGRzdC53aWR0aCk7CisgICAgICAgIHZhciB0bXBWaWV3ID0gbmV3
IHRjdVRleHR1cmUuUkdCQThWaWV3KHRtcC5nZXRBY2Nlc3MoKSk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBrdyA9IGtlcm5lbFgubGVuZ3RoOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGtoID0ga2VybmVsWS5sZW5ndGg7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3VtID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZjsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgcDsKKworICAgICAgICAvLyBIb3Jpem9udGFsIHBhc3MKKyAgICAgICAgLy8gXG5vdGUgVGVt
cG9yYXJ5IHN1cmZhY2UgaXMgd3JpdHRlbiBpbiBjb2x1bW4td2lzZSBvcmRlcgorICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IHNyYy5oZWlnaHQ7IGorKykgeworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzcmMud2lkdGg7IGkrKykgeworICAgICAgICAgICAgICAgIHN1bVswXSA9
IHN1bVsxXSA9IHN1bVsyXSA9IHN1bVszXSA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
a3ggPSAwOyBreCA8IGt3OyBreCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGYgPSBrZXJuZWxY
W2t3IC0ga3ggLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IHNyYy5yZWFkKGRlTWF0aC5j
bGFtcChpICsga3ggLSBzaGlmdFgsIDAsIHNyYy53aWR0aCAtIDEpLCBqLCBTcmNDaGFubmVscyk7
CisgICAgICAgICAgICAgICAgICAgIHN1bSA9IGRlTWF0aC5hZGQoc3VtLCBkZU1hdGguc2NhbGUo
cCwgZikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN1bSA9IHRjdUZ1
enp5SW1hZ2VDb21wYXJlLnJvdW5kQXJyYXk0VG9VaW50OFNhdChzdW0pOworICAgICAgICAgICAg
ICAgIHRtcFZpZXcud3JpdGUoaiwgaSwgc3VtLCBEc3RDaGFubmVscyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBWZXJ0aWNhbCBwYXNzCisgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgc3JjLmhlaWdodDsgaisrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNyYy53aWR0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3VtWzBdID0gc3VtWzFd
ID0gc3VtWzJdID0gc3VtWzNdID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBreSA9IDA7
IGt5IDwga2g7IGt5KyspIHsKKyAgICAgICAgICAgICAgICAgICAgZiA9IGtlcm5lbFlba2ggLSBr
eSAtIDFdOworICAgICAgICAgICAgICAgICAgICBwID0gdG1wVmlldy5yZWFkKGRlTWF0aC5jbGFt
cChqICsga3kgLSBzaGlmdFksIDAsIHRtcFZpZXcud2lkdGggLSAxKSwgaSwgRHN0Q2hhbm5lbHMp
OworICAgICAgICAgICAgICAgICAgICBzdW0gPSBkZU1hdGguYWRkKHN1bSwgZGVNYXRoLnNjYWxl
KHAsIGYpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzdW0gPSB0Y3VG
dXp6eUltYWdlQ29tcGFyZS5yb3VuZEFycmF5NFRvVWludDhTYXQoc3VtKTsKKyAgICAgICAgICAg
ICAgICBkc3Qud3JpdGUoaSwgaiwgc3VtLCBEc3RDaGFubmVscyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VGdXp6eUltYWdl
Q29tcGFyZS5GdXp6eUNvbXBhcmVQYXJhbXN9IHBhcmFtcworICAgICAqIEBwYXJhbSB7ZGVSYW5k
b20uUmFuZG9tfSBybmQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHBpeGVsCisgICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLlJHQkE4Vmlld30gc3VyZmFjZQorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gTnVtQ2hhbm5lbHMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1
RnV6enlJbWFnZUNvbXBhcmUuY29tcGFyZVRvTmVpZ2hib3IgPSBmdW5jdGlvbihwYXJhbXMsIHJu
ZCwgcGl4ZWwsIHN1cmZhY2UsIHgsIHksIE51bUNoYW5uZWxzKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWluRXJyID0gMTAwOworCisgICAgICAgIC8vICh4LCB5KSArICgw
LCAwKQorICAgICAgICBtaW5FcnIgPSBNYXRoLm1pbihtaW5FcnIsIHRjdUZ1enp5SW1hZ2VDb21w
YXJlLmNvbXBhcmVDb2xvcnMocGl4ZWwsIHN1cmZhY2UucmVhZCh4LCB5LCBOdW1DaGFubmVscyks
IHBhcmFtcy5taW5FcnJUaHJlc2hvbGQpKTsKKyAgICAgICAgaWYgKG1pbkVyciA9PSAwLjApCisg
ICAgICAgICAgICByZXR1cm4gbWluRXJyOworCisgICAgICAgIC8vIEFyZWEgYXJvdW5kICh4LCB5
KQorICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5LjxudW1iZXI+Pn0gKi8gdmFyIHNfY29v
cmRzID0KKyAgICAgICAgWworICAgICAgICAgICAgWy0xLCAtMV0sCisgICAgICAgICAgICBbMCwg
LTFdLAorICAgICAgICAgICAgWzEsIC0xXSwKKyAgICAgICAgICAgIFstMSwgMF0sCisgICAgICAg
ICAgICBbMSwgMF0sCisgICAgICAgICAgICBbLTEsIDFdLAorICAgICAgICAgICAgWzAsIDFdLAor
ICAgICAgICAgICAgWzEsIDFdCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBkeDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkeTsKKwor
ICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IHNfY29vcmRzLmxlbmd0aDsgZCsrKSB7CisgICAg
ICAgICAgICBkeCA9IHggKyBzX2Nvb3Jkc1tkXVswXTsKKyAgICAgICAgICAgIGR5ID0geSArIHNf
Y29vcmRzW2RdWzFdOworCisgICAgICAgICAgICBpZiAoIWRlTWF0aC5kZUluQm91bmRzMzIoZHgs
IDAsIHN1cmZhY2Uud2lkdGgpIHx8ICFkZU1hdGguZGVJbkJvdW5kczMyKGR5LCAwLCBzdXJmYWNl
LmhlaWdodCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1pbkVy
ciA9IE1hdGgubWluKG1pbkVyciwgdGN1RnV6enlJbWFnZUNvbXBhcmUuY29tcGFyZUNvbG9ycyhw
aXhlbCwgc3VyZmFjZS5yZWFkKGR4LCBkeSwgTnVtQ2hhbm5lbHMpLCBwYXJhbXMubWluRXJyVGhy
ZXNob2xkKSk7CisgICAgICAgICAgICBpZiAobWluRXJyID09IDAuMCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWluRXJyOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmFuZG9tIGJpbGluZWFy
LWludGVycG9sYXRlZCBzYW1wbGVzIGFyb3VuZCAoeCwgeSkKKyAgICAgICAgZm9yICh2YXIgcyA9
IDA7IHMgPCAzMjsgcysrKSB7CisgICAgICAgICAgICBkeCA9IHggKyBybmQuZ2V0RmxvYXQoKSAq
IDIuMCAtIDAuNTsKKyAgICAgICAgICAgIGR5ID0geSArIHJuZC5nZXRGbG9hdCgpICogMi4wIC0g
MC41OworCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzYW1w
bGUgPSB0Y3VGdXp6eUltYWdlQ29tcGFyZS5iaWxpbmVhclNhbXBsZShzdXJmYWNlLCBkeCwgZHks
IE51bUNoYW5uZWxzKTsKKworICAgICAgICAgICAgbWluRXJyID0gTWF0aC5taW4obWluRXJyLCB0
Y3VGdXp6eUltYWdlQ29tcGFyZS5jb21wYXJlQ29sb3JzKHBpeGVsLCBzYW1wbGUsIHBhcmFtcy5t
aW5FcnJUaHJlc2hvbGQpKTsKKyAgICAgICAgICAgIGlmIChtaW5FcnIgPT0gMC4wKQorICAgICAg
ICAgICAgICAgIHJldHVybiBtaW5FcnI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWlu
RXJyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGMK
KyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1RnV6enlJbWFnZUNvbXBh
cmUudG9HcmF5c2NhbGUgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIHJldHVybiAwLjIxMjYgKiBj
WzBdICsgMC43MTUyICogY1sxXSArIDAuMDcyMiAqIGNbMl07CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRjdUZ1enp5SW1hZ2VDb21wYXJlLmlzRm9y
bWF0U3VwcG9ydGVkID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBmb3JtYXQu
dHlwZSA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDggJiYgKGZvcm1hdC5vcmRl
ciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IgfHwgZm9ybWF0Lm9yZGVyID09IHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3RjdUZ1enp5SW1hZ2VDb21wYXJlLkZ1enp5Q29tcGFyZVBhcmFtc30gcGFyYW1zCisgICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlZgorICAgICAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBjbXAKKyAgICAgKiBA
cGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9yTWFzaworICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VGdXp6eUltYWdlQ29tcGFyZS5mdXp6eUNv
bXBhcmUgPSBmdW5jdGlvbihwYXJhbXMsIHJlZiwgY21wLCBlcnJvck1hc2spIHsKKyAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhyZWYuZ2V0V2lkdGgoKSA9PSBjbXAuZ2V0V2lkdGgoKSAmJiByZWYu
Z2V0SGVpZ2h0KCkgPT0gY21wLmdldEhlaWdodCgpLAorICAgICAgICAgICAgJ1JlZmVyZW5jZSBh
bmQgcmVzdWx0IGltYWdlcyBoYXZlIGRpZmZlcmVudCBkaW1lbnNpb25zJywgZmFsc2UsIHRydWUp
OworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocmVmLmdldFdpZHRoKCkgPT0gZXJyb3JNYXNr
LmdldFdpZHRoKCkgJiYgcmVmLmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRIZWlnaHQoKSwK
KyAgICAgICAgICAgICdSZWZlcmVuY2UgYW5kIGVycm9yIG1hc2sgaW1hZ2VzIGhhdmUgZGlmZmVy
ZW50IGRpbWVuc2lvbnMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgaWYgKCF0Y3VGdXp6eUlt
YWdlQ29tcGFyZS5pc0Zvcm1hdFN1cHBvcnRlZChyZWYuZ2V0Rm9ybWF0KCkpIHx8ICF0Y3VGdXp6
eUltYWdlQ29tcGFyZS5pc0Zvcm1hdFN1cHBvcnRlZChjbXAuZ2V0Rm9ybWF0KCkpKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmb3JtYXQgaW4gZnV6enkgY29tcGFy
aXNvbicpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSByZWYu
Z2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSBy
ZWYuZ2V0SGVpZ2h0KCk7CisgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2
YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSg2NjcpOworCisgICAgICAgIC8vIEZpbHRlcmVk
CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHZhciByZWZG
aWx0ZXJlZCA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5PUk1fSU5UOCksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3Rj
dVRleHR1cmUuVGV4dHVyZUxldmVsfSAqLyB2YXIgY21wRmlsdGVyZWQgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWwobmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpLCB3aWR0
aCwgaGVpZ2h0KTsKKworICAgICAgICB2YXIgcmVmVmlldyA9IG5ldyB0Y3VUZXh0dXJlLlJHQkE4
VmlldyhyZWYpOworICAgICAgICB2YXIgY21wVmlldyA9IG5ldyB0Y3VUZXh0dXJlLlJHQkE4Vmll
dyhjbXApOworICAgICAgICB2YXIgcmVmRmlsdGVyZWRWaWV3ID0gbmV3IHRjdVRleHR1cmUuUkdC
QThWaWV3KHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVMZXZlbChy
ZWZGaWx0ZXJlZCkpOworICAgICAgICB2YXIgY21wRmlsdGVyZWRWaWV3ID0gbmV3IHRjdVRleHR1
cmUuUkdCQThWaWV3KHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVM
ZXZlbChjbXBGaWx0ZXJlZCkpOworCisgICAgICAgIC8vIEtlcm5lbCA9IHswLjE1LCAwLjcsIDAu
MTV9CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGtlcm5lbCA9IFsw
LjEsIDAuOCwgMC4xXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzaGlmdCA9
IE1hdGguZmxvb3IoKGtlcm5lbC5sZW5ndGggLSAxKSAvIDIpOworCisgICAgICAgIHN3aXRjaCAo
cmVmLmdldEZvcm1hdCgpLm9yZGVyKSB7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLlJHQkE6IHRjdUZ1enp5SW1hZ2VDb21wYXJlLnNlcGFyYWJsZUNvbnZvbHZlKHJl
ZkZpbHRlcmVkVmlldywgcmVmVmlldywgc2hpZnQsIHNoaWZ0LCBrZXJuZWwsIGtlcm5lbCwgNCwg
NCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0I6
IHRjdUZ1enp5SW1hZ2VDb21wYXJlLnNlcGFyYWJsZUNvbnZvbHZlKHJlZkZpbHRlcmVkVmlldywg
cmVmVmlldywgc2hpZnQsIHNoaWZ0LCBrZXJuZWwsIGtlcm5lbCwgNCwgMyk7IGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RjdUZ1
enp5SW1hZ2VDb21wYXJlLmZ1enp5Q29tcGFyZSAtIEludmFsaWQgQ2hhbm5lbE9yZGVyJyk7Cisg
ICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGNtcC5nZXRGb3JtYXQoKS5vcmRlcikgeworICAg
ICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBOiB0Y3VGdXp6eUltYWdl
Q29tcGFyZS5zZXBhcmFibGVDb252b2x2ZShjbXBGaWx0ZXJlZFZpZXcsIGNtcFZpZXcsIHNoaWZ0
LCBzaGlmdCwga2VybmVsLCBrZXJuZWwsIDQsIDQpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCOiB0Y3VGdXp6eUltYWdlQ29tcGFyZS5zZXBhcmFi
bGVDb252b2x2ZShjbXBGaWx0ZXJlZFZpZXcsIGNtcFZpZXcsIHNoaWZ0LCBzaGlmdCwga2VybmVs
LCBrZXJuZWwsIDQsIDMpOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Y3VGdXp6eUltYWdlQ29tcGFyZS5mdXp6eUNvbXBhcmUg
LSBJbnZhbGlkIENoYW5uZWxPcmRlcicpOworICAgICAgICB9CisKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBudW1TYW1wbGVzID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBlcnJTdW0gPSAwLjA7CisKKyAgICAgICAgLy8gQ2xlYXIgZXJyb3IgbWFzayB0
byBncmVlbi4KKyAgICAgICAgZXJyb3JNYXNrLmNsZWFyKFswLjAsIDEuMCwgMC4wLCAxLjBdKTsK
KworICAgICAgICBmb3IgKHZhciB5ID0gMTsgeSA8IGhlaWdodCAtIDE7IHkrKykgeworICAgICAg
ICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB3aWR0aCAtIDE7IHggKz0gcGFyYW1zLm1heFNhbXBs
ZVNraXAgPiAwID8gcm5kLmdldEludCgwLCBwYXJhbXMubWF4U2FtcGxlU2tpcCkgOiAxKSB7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBlcnIgPSBNYXRoLm1pbih0
Y3VGdXp6eUltYWdlQ29tcGFyZS5jb21wYXJlVG9OZWlnaGJvcihwYXJhbXMsIHJuZCwgcmVmRmls
dGVyZWRWaWV3LnJlYWQoeCwgeSwgNCksIGNtcEZpbHRlcmVkVmlldywgeCwgeSwgNCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VGdXp6eUltYWdlQ29tcGFyZS5j
b21wYXJlVG9OZWlnaGJvcihwYXJhbXMsIHJuZCwgY21wRmlsdGVyZWRWaWV3LnJlYWQoeCwgeSwg
NCksIHJlZkZpbHRlcmVkVmlldywgeCwgeSwgNCkpOworCisgICAgICAgICAgICAgICAgZXJyID0g
TWF0aC5wb3coZXJyLCBwYXJhbXMuZXJyRXhwKTsKKworICAgICAgICAgICAgICAgIGVyclN1bSAr
PSBlcnI7CisgICAgICAgICAgICAgICAgbnVtU2FtcGxlcyArPSAxOworCisgICAgICAgICAgICAg
ICAgLy8gQnVpbGQgZXJyb3IgaW1hZ2UuCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciByZWQgPSBlcnIgKiA1MDAuMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGx1bWEgPSB0Y3VGdXp6eUltYWdlQ29tcGFyZS50b0dyYXlzY2FsZShj
bXAuZ2V0UGl4ZWwoeCwgeSkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgckYgPSAwLjcgKyAwLjMgKiBsdW1hOworICAgICAgICAgICAgICAgIGVycm9yTWFzay5z
ZXRQaXhlbChbcmVkICogckYsICgxLjAgLSByZWQpICogckYsIDAuMCwgMS4wXSwgeCwgeSk7CisK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNjYWxlIGVycm9yIHN1bSBi
YXNlZCBvbiBudW1iZXIgb2Ygc2FtcGxlcyB0YWtlbgorICAgICAgICBlcnJTdW0gKj0gKCh3aWR0
aCAtIDIpICogKGhlaWdodCAtIDIpKSAvIG51bVNhbXBsZXM7CisKKyAgICAgICAgcmV0dXJuIGVy
clN1bTsKKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbWFnZUNvbXBh
cmUuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2ZyYW1ld29yay9jb21tb24vdGN1SW1hZ2VDb21wYXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhODEzOGVm
MjMyNTJjYTFhNzg1ZDFmYjMyMzRjN2MwYmJiMDA3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9j
b21tb24vdGN1SW1hZ2VDb21wYXJlLmpzCkBAIC0wLDAgKzEsNzU3IEBACisvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGll
cworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
KgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoK
KyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUJpbGlu
ZWFySW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1Rmxv
YXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VGdXp6eUltYWdlQ29tcGFy
ZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVy
ZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7
CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VTdXJmYWNlOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlTWF0aDsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwor
dmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKK3Zh
ciB0Y3VGbG9hdCA9IGZyYW1ld29yay5jb21tb24udGN1RmxvYXQ7Cit2YXIgdGN1RnV6enlJbWFn
ZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUZ1enp5SW1hZ2VDb21wYXJlOwordmFyIHRj
dUJpbGluZWFySW1hZ2VDb21wYXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VCaWxpbmVhckltYWdl
Q29tcGFyZTsKK3ZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOwordmFyIHRj
dUxvZ0ltYWdlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZTsKKworLyoqCisgKiBAZW51
bQorICovCit0Y3VJbWFnZUNvbXBhcmUuQ29tcGFyZUxvZ01vZGUgPSB7CisgICAgRVZFUllUSElO
RzogMCwKKyAgICBSRVNVTFQ6IDEsCisgICAgT05fRVJST1I6IDIKK307CisKKy8qKgorICogQHBh
cmFtIHtmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30g
cmVzdWx0CisgKiBAcGFyYW0ge2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzfSByZWZlcmVuY2UKKyAqIEBwYXJhbSB7ZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M9fSBkaWZmCisgKi8KK3RjdUltYWdlQ29tcGFy
ZS5kaXNwbGF5SW1hZ2VzID0gZnVuY3Rpb24ocmVzdWx0LCByZWZlcmVuY2UsIGRpZmYpIHsKKyAg
ICAgICAgdmFyIGxpbWl0cyA9IHRjdUltYWdlQ29tcGFyZS5jb21wdXRlU2NhbGVBbmRCaWFzKHJl
ZmVyZW5jZSwgcmVzdWx0KTsKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UoJ1Jlc3VsdCcs
ICcnLCByZXN1bHQsIGxpbWl0cy5zY2FsZSwgbGltaXRzLmJpYXMpOworICAgICAgICB0Y3VMb2dJ
bWFnZS5sb2dJbWFnZSgnUmVmZXJlbmNlJywgJycsIHJlZmVyZW5jZSwgbGltaXRzLnNjYWxlLCBs
aW1pdHMuYmlhcyk7CisgICAgICAgIGlmIChkaWZmKQorICAgICAgICAgICAgdGN1TG9nSW1hZ2Uu
bG9nSW1hZ2UoJ0Vycm9yJywgJ2Vycm9yIG1hc2snLCBkaWZmKTsKK307CisKKy8qKgorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlZmVyZW5jZQorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlc3VsdAorICogQHJldHVy
biB7e3NjYWxlOiBBcnJheTxudW1iZXI+LCBiaWFzOiBBcnJheTxudW1iZXI+fX0KKyAqLwordGN1
SW1hZ2VDb21wYXJlLmNvbXB1dGVTY2FsZUFuZEJpYXMgPSBmdW5jdGlvbihyZWZlcmVuY2UsIHJl
c3VsdCkgeworICAgIHZhciBtaW5WYWwgPSBbXTsKKyAgICB2YXIgbWF4VmFsID0gW107CisgICAg
dmFyIHNjYWxlID0gW107CisgICAgdmFyIGJpYXMgPSBbXTsKKworICAgIHZhciBlcHMgPSAwLjAw
MDE7CisgICAgdmFyIHJlZmVyZW5jZVJhbmdlID0gdGN1VGV4dHVyZVV0aWwuZXN0aW1hdGVQaXhl
bFZhbHVlUmFuZ2UocmVmZXJlbmNlKTsKKyAgICB2YXIgcmVzdWx0UmFuZ2UgPSB0Y3VUZXh0dXJl
VXRpbC5lc3RpbWF0ZVBpeGVsVmFsdWVSYW5nZShyZXN1bHQpOworCisgICAgbWluVmFsWzBdID0g
TWF0aC5taW4ocmVmZXJlbmNlUmFuZ2VbMF1bMF0sIHJlc3VsdFJhbmdlWzBdWzBdKTsKKyAgICBt
aW5WYWxbMV0gPSBNYXRoLm1pbihyZWZlcmVuY2VSYW5nZVswXVsxXSwgcmVzdWx0UmFuZ2VbMF1b
MV0pOworICAgIG1pblZhbFsyXSA9IE1hdGgubWluKHJlZmVyZW5jZVJhbmdlWzBdWzJdLCByZXN1
bHRSYW5nZVswXVsyXSk7CisgICAgbWluVmFsWzNdID0gTWF0aC5taW4ocmVmZXJlbmNlUmFuZ2Vb
MF1bM10sIHJlc3VsdFJhbmdlWzBdWzNdKTsKKworICAgIG1heFZhbFswXSA9IE1hdGgubWF4KHJl
ZmVyZW5jZVJhbmdlWzFdWzBdLCByZXN1bHRSYW5nZVsxXVswXSk7CisgICAgbWF4VmFsWzFdID0g
TWF0aC5tYXgocmVmZXJlbmNlUmFuZ2VbMV1bMV0sIHJlc3VsdFJhbmdlWzFdWzFdKTsKKyAgICBt
YXhWYWxbMl0gPSBNYXRoLm1heChyZWZlcmVuY2VSYW5nZVsxXVsyXSwgcmVzdWx0UmFuZ2VbMV1b
Ml0pOworICAgIG1heFZhbFszXSA9IE1hdGgubWF4KHJlZmVyZW5jZVJhbmdlWzFdWzNdLCByZXN1
bHRSYW5nZVsxXVszXSk7CisKKyAgICBmb3IgKHZhciBjID0gMDsgYyA8IDQ7IGMrKykgeworICAg
ICAgICBpZiAobWF4VmFsW2NdIC0gbWluVmFsW2NdIDwgZXBzKSB7CisgICAgICAgICAgICBzY2Fs
ZVtjXSA9IChtYXhWYWxbY10gPCBlcHMpID8gMSA6ICgxIC8gbWF4VmFsW2NdKTsKKyAgICAgICAg
ICAgIGJpYXNbY10gPSAoYyA9PSAzKSA/ICgxIC0gbWF4VmFsW2NdICogc2NhbGVbY10pIDogKDAg
LSBtaW5WYWxbY10gKiBzY2FsZVtjXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
Y2FsZVtjXSA9IDEgLyAobWF4VmFsW2NdIC0gbWluVmFsW2NdKTsKKyAgICAgICAgICAgIGJpYXNb
Y10gPSAwIC0gbWluVmFsW2NdICogc2NhbGVbY107CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHsKKyAgICAgICAgc2NhbGU6IHNjYWxlLAorICAgICAgICBiaWFzOiBiaWFzCisgICAgfTsK
K307CisKKy8qKgorICogXGJyaWVmIFBlci1waXhlbCB0aHJlc2hvbGQtYmFzZWQgY29tcGFyaXNv
bgorICoKKyAqIFRoaXMgY29tcGFyZSBjb21wdXRlcyBwZXItcGl4ZWwgZGlmZmVyZW5jZXMgYmV0
d2VlbiByZXN1bHQgYW5kIHJlZmVyZW5jZQorICogaW1hZ2UuIENvbXBhcmlzb24gZmFpbHMgaWYg
YW55IHBpeGVscyBleGNlZWQgdGhlIGdpdmVuIHRocmVzaG9sZCB2YWx1ZS4KKyAqCisgKiBUaGlz
IGNvbXBhcmlzb24gY2FuIGJlIHVzZWQgZm9yIGludGVnZXItIGFuZCBmaXhlZC1wb2ludCB0ZXh0
dXJlIGZvcm1hdHMuCisgKiBEaWZmZXJlbmNlIGlzIGNvbXB1dGVkIGluIGludGVnZXIgc3BhY2Uu
CisgKgorICogT24gZmFpbHVyZSBlcnJvciBpbWFnZSBpcyBnZW5lcmF0ZWQgdGhhdCBzaG93cyB3
aGVyZSB0aGUgZmFpbGluZyBwaXhlbHMKKyAqIGFyZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30g
aW1hZ2VTZXROYW1lIE5hbWUgZm9yIGltYWdlIHNldCB3aGVuIGxvZ2dpbmcgcmVzdWx0cworICog
QHBhcmFtIHtzdHJpbmd9IGltYWdlU2V0RGVzYyBEZXNjcmlwdGlvbiBmb3IgaW1hZ2Ugc2V0Cisg
KiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVmZXJlbmNlIFJl
ZmVyZW5jZSBpbWFnZQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nl
c3N9IHJlc3VsdCBSZXN1bHQgaW1hZ2UKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGhyZXNo
b2xkIE1heGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlCisgKiBAcGFyYW0ge3RjdUltYWdlQ29tcGFy
ZS5Db21wYXJlTG9nTW9kZT19IGxvZ01vZGUKKyAqIEBwYXJhbSB7QXJyYXk8IEFycmF5PG51bWJl
cj4gPn0gc2tpcFBpeGVscyBwaXhlbHMgdGhhdCBhcmUgc2tpcHBlZCBjb21wYXJpc29uCisgKiBA
cmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGNvbXBhcmlzb24gcGFzc2VzLCBmYWxzZSBvdGhlcndp
c2UKKyAqLworIHRjdUltYWdlQ29tcGFyZS5pbnRUaHJlc2hvbGRDb21wYXJlID0gZnVuY3Rpb24o
aW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MsIHJlZmVyZW5jZSwgcmVzdWx0LCB0aHJlc2hvbGQs
IGxvZ01vZGUsIHNraXBQaXhlbHMpIHsKKyAgICB2YXIgd2lkdGggPSByZWZlcmVuY2UuZ2V0V2lk
dGgoKTsKKyAgICB2YXIgaGVpZ2h0ID0gcmVmZXJlbmNlLmdldEhlaWdodCgpOworICAgIHZhciBk
ZXB0aCA9IHJlZmVyZW5jZS5nZXREZXB0aCgpOworICAgIHZhciBlcnJvck1hc2sgPSBuZXcgdGN1
U3VyZmFjZS5TdXJmYWNlKHdpZHRoLCBoZWlnaHQpOworCisgICAgdmFyIG1heERpZmYgPSBbMCwg
MCwgMCwgMF07CisgICAgLy8gdmFyIHBpeGVsQmlhcyA9IFswLCAwLCAwLCAwXTsgLy8gVmVjNCAv
LyBUT0RPOiBjaGVjaywgb25seSB1c2VkIGluIGNvbXB1dGVTY2FsZUFuZEJpYXMsIHdoaWNoIGlz
IG5vdCBpbmNsdWRlZAorICAgIC8vIHZhciBwaXhlbFNjYWxlID0gWzEsIDEsIDEsIDFdOyAvLyBW
ZWM0IC8vIFRPRE86IGNoZWNrLCBvbmx5IHVzZWQgaW4gY29tcHV0ZVNjYWxlQW5kQmlhcworCisg
ICAgYXNzZXJ0TXNnT3B0aW9ucyhyZXN1bHQuZ2V0V2lkdGgoKSA9PSB3aWR0aCAmJiByZXN1bHQu
Z2V0SGVpZ2h0KCkgPT0gaGVpZ2h0ICYmIHJlc3VsdC5nZXREZXB0aCgpID09IGRlcHRoLAorICAg
ICAgICAnUmVmZXJlbmNlIGFuZCByZXN1bHQgaW1hZ2VzIGhhdmUgZGlmZmVyZW50IGRpbWVuc2lv
bnMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBmb3IgKHZhciB6ID0gMDsgeiA8IGRlcHRoOyB6Kysp
IHsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICAg
ICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgaWYg
KHNraXBQaXhlbHMgJiYgc2tpcFBpeGVscy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBza2lwID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBza2lwUGl4ZWxzLmxlbmd0aDsgKytpaSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHJlZlogPSAoc2tpcFBpeGVsc1tpaV0ubGVuZ3RoID4gMiA/IHNraXBQaXhlbHNbaWld
WzJdIDogMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBza2lwUGl4ZWxzW2lp
XVswXSAmJiB5ID09IHNraXBQaXhlbHNbaWldWzFdICYmIHogPT0gcmVmWikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNraXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChza2lwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciByZWZQ
aXggPSByZWZlcmVuY2UuZ2V0UGl4ZWxJbnQoeCwgeSwgeik7CisgICAgICAgICAgICAgICAgdmFy
IGNtcFBpeCA9IHJlc3VsdC5nZXRQaXhlbEludCh4LCB5LCB6KTsKKworICAgICAgICAgICAgICAg
IHZhciBkaWZmID0gZGVNYXRoLmFic0RpZmYocmVmUGl4LCBjbXBQaXgpOworICAgICAgICAgICAg
ICAgIHZhciBpc09rID0gZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwoZGlmZiwg
dGhyZXNob2xkKSk7CisKKyAgICAgICAgICAgICAgICBtYXhEaWZmID0gZGVNYXRoLm1heChtYXhE
aWZmLCBkaWZmKTsKKyAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBbMCwgMjU1LCAwLCAyNTVd
OworICAgICAgICAgICAgICAgIGlmICghaXNPaykKKyAgICAgICAgICAgICAgICAgICAgY29sb3Ig
PSBbMjU1LCAwLCAwLCAyNTVdOworICAgICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhlbCh4
LCB5LCBjb2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
Y29tcGFyZU9rID0gZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwobWF4RGlmZiwg
dGhyZXNob2xkKSk7CisKKyAgICBpZiAoIWNvbXBhcmVPaykgeworICAgICAgICBkZWJ1ZygnSW1h
Z2UgY29tcGFyaXNvbiBmYWlsZWQ6IG1heCBkaWZmZXJlbmNlID0gJyArIG1heERpZmYgKyAnLCB0
aHJlc2hvbGQgPSAnICsgdGhyZXNob2xkKTsKKyAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmRpc3Bs
YXlJbWFnZXMocmVzdWx0LCByZWZlcmVuY2UsIGVycm9yTWFzay5nZXRBY2Nlc3MoKSk7CisgICAg
fQorCisgICAgcmV0dXJuIGNvbXBhcmVPazsKK307CisKKy8qKgorICogXGJyaWVmIFBlci1waXhl
bCB0aHJlc2hvbGQtYmFzZWQgZGV2aWF0aW9uLWlnbm9yaW5nIGNvbXBhcmlzb24KKyAqCisgKiBU
aGlzIGNvbXBhcmUgY29tcHV0ZXMgcGVyLXBpeGVsIGRpZmZlcmVuY2VzIGJldHdlZW4gcmVzdWx0
IGFuZCByZWZlcmVuY2UKKyAqIGltYWdlLiBQaXhlbCBmYWlscyB0aGUgdGVzdCBpZiB0aGVyZSBp
cyBubyBwaXhlbCBtYXRjaGluZyB0aGUgZ2l2ZW4KKyAqIHRocmVzaG9sZCB2YWx1ZSBpbiB0aGUg
c2VhcmNoIHZvbHVtZS4gQ29tcGFyaXNvbiBmYWlscyBpZiB0aGUgbnVtYmVyIG9mCisgKiBmYWls
aW5nIHBpeGVscyBleGNlZWRzIHRoZSBnaXZlbiBsaW1pdC4KKyAqCisgKiBJZiB0aGUgc2VhcmNo
IHZvbHVtZSBjb250YWlucyBvdXQtb2YtYm91bmRzIHBpeGVscywgY29tcGFyaXNvbiBjYW4gYmUg
c2V0CisgKiB0byBlaXRoZXIgaWdub3JlIHRoZXNlIHBpeGVscyBpbiBzZWFyY2ggb3IgdG8gYWNj
ZXB0IGFueSBwaXhlbCB0aGF0IGhhcworICogb3V0LW9mLWJvdW5kcyBwaXhlbHMgaW4gaXRzIHNl
YXJjaCB2b2x1bWUuCisgKgorICogVGhpcyBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciBpbnRl
Z2VyLSBhbmQgZml4ZWQtcG9pbnQgdGV4dHVyZSBmb3JtYXRzLgorICogRGlmZmVyZW5jZSBpcyBj
b21wdXRlZCBpbiBpbnRlZ2VyIHNwYWNlLgorICoKKyAqIE9uIGZhaWx1cmUgZXJyb3IgaW1hZ2Ug
aXMgZ2VuZXJhdGVkIHRoYXQgc2hvd3Mgd2hlcmUgdGhlIGZhaWxpbmcgcGl4ZWxzCisgKiBhcmUu
CisgKgorICogQHBhcmFtIHtzdHJpbmd9IGltYWdlU2V0TmFtZSBOYW1lIGZvciBpbWFnZSBzZXQg
d2hlbiBsb2dnaW5nIHJlc3VsdHMKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbWFnZVNldERlc2MgRGVz
Y3JpcHRpb24gZm9yIGltYWdlIHNldAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxC
dWZmZXJBY2Nlc3N9IHJlZmVyZW5jZSBSZWZlcmVuY2UgaW1hZ2UKKyAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQgUmVzdWx0IGltYWdlCisgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj59IHRocmVzaG9sZCBNYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZQor
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhQb3NpdGlvbkRldmlhdGlvbiBNYXhpbXVtIGFs
bG93ZWQgZGlzdGFuY2UgaW4gdGhlIHNlYXJjaCB2b2x1bWUuCisgKiBAcGFyYW0ge2Jvb2xlYW59
IGFjY2VwdE91dE9mQm91bmRzQXNBbnlWYWx1ZSBBY2NlcHQgYW55IHBpeGVsIGluIHRoZSBib3Vu
ZGFyeSByZWdpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSBtYXhBbGxvd2VkRmFpbGluZ1BpeGVscyBN
YXhpbXVtIG51bWJlciBvZiBmYWlsaW5nIHBpeGVscworICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1
ZSBpZiBjb21wYXJpc29uIHBhc3NlcywgZmFsc2Ugb3RoZXJ3aXNlCisgKi8KK3RjdUltYWdlQ29t
cGFyZS5pbnRUaHJlc2hvbGRQb3NpdGlvbkRldmlhdGlvbkVycm9yVGhyZXNob2xkQ29tcGFyZSA9
IGZ1bmN0aW9uKAorICAgIGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjLCByZWZlcmVuY2UsIHJl
c3VsdCwgdGhyZXNob2xkLCBtYXhQb3NpdGlvbkRldmlhdGlvbiwgYWNjZXB0T3V0T2ZCb3VuZHNB
c0FueVZhbHVlLCBtYXhBbGxvd2VkRmFpbGluZ1BpeGVscykgeworICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgd2lkdGggPSByZWZlcmVuY2UuZ2V0V2lkdGgoKTsKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGhlaWdodCA9IHJlZmVyZW5jZS5nZXRIZWlnaHQoKTsKKyAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGRlcHRoID0gcmVmZXJlbmNlLmdldERlcHRoKCk7CisgICAg
LyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciBlcnJvck1hc2sgPSBuZXcgdGN1
U3VyZmFjZS5TdXJmYWNlKHdpZHRoLCBoZWlnaHQpOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbnVtRmFpbGluZ1BpeGVscyA9IHRjdUltYWdlQ29tcGFyZS5maW5kTnVtUG9zaXRpb25E
ZXZpYXRpb25GYWlsaW5nUGl4ZWxzKGVycm9yTWFzay5nZXRBY2Nlc3MoKSwgcmVmZXJlbmNlLCBy
ZXN1bHQsIHRocmVzaG9sZCwgbWF4UG9zaXRpb25EZXZpYXRpb24sIGFjY2VwdE91dE9mQm91bmRz
QXNBbnlWYWx1ZSk7CisgICAgdmFyIGNvbXBhcmVPayA9IG51bUZhaWxpbmdQaXhlbHMgPD0gbWF4
QWxsb3dlZEZhaWxpbmdQaXhlbHM7CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgcGl4ZWxCaWFzID0gWzAuMCwgMC4wLCAwLjAsIDAuMF07CisgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgcGl4ZWxTY2FsZSA9IFsxLjAsIDEuMCwgMS4wLCAxLjBdOworCisg
ICAgaWYgKCFjb21wYXJlT2spIHsKKyAgICAgICAgZGVidWcoJ1Bvc2l0aW9uIGRldmlhdGlvbiBl
cnJvciB0aHJlc2hvbGQgaW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQ6IGZhaWxlZCBwaXhlbHMgPSAn
ICsgbnVtRmFpbGluZ1BpeGVscyArICcsIHRocmVzaG9sZCA9ICcgKyB0aHJlc2hvbGQpOworICAg
ICAgICB0Y3VJbWFnZUNvbXBhcmUuZGlzcGxheUltYWdlcyhyZXN1bHQsIHJlZmVyZW5jZSwgZXJy
b3JNYXNrLmdldEFjY2VzcygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9n
SW1hZ2UoJ1Jlc3VsdCcsICcnLCByZXN1bHQpOworCisgICAgLyppZiAoIWNvbXBhcmVPaykgewor
ICAgICAgICAvLyBBbGwgZm9ybWF0cyBleGNlcHQgbm9ybWFsaXplZCB1bnNpZ25lZCBmaXhlZCBw
b2ludCBvbmVzIG5lZWQgcmVtYXBwaW5nIGluIG9yZGVyIHRvIGZpdCBpbnRvIHVub3JtIGNoYW5u
ZWxzIGluIGxvZ2dlZCBpbWFnZXMuCisgICAgICAgIGlmICh0Y3VUZXh0dXJlLmdldFRleHR1cmVD
aGFubmVsQ2xhc3MocmVmZXJlbmNlLmdldEZvcm1hdCgpLnR5cGUpICE9IHRjdVRleHR1cmUuVGV4
dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCB8fAorICAgICAgICB0Y3VUZXh0
dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MocmVzdWx0LmdldEZvcm1hdCgpLnR5cGUpICE9IHRj
dVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCkgeworICAg
ICAgICAgICAgY29tcHV0ZVNjYWxlQW5kQmlhcyhyZWZlcmVuY2UsIHJlc3VsdCwgcGl4ZWxTY2Fs
ZSwgcGl4ZWxCaWFzKTsKKyAgICAgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlIDw8ICJS
ZXN1bHQgYW5kIHJlZmVyZW5jZSBpbWFnZXMgYXJlIG5vcm1hbGl6ZWQgd2l0aCBmb3JtdWxhIHAg
KiAiIDw8IHBpeGVsU2NhbGUgPDwgIiArICIgPDwgcGl4ZWxCaWFzIDw8IFRlc3RMb2c6OkVuZE1l
c3NhZ2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNvbXBhcmVPaykKKyAgICAgICAgICAg
IGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlCisgICAgICAgICAgICAgICAgPDwgIkltYWdlIGNvbXBh
cmlzb24gZmFpbGVkOlxuIgorICAgICAgICAgICAgICAgIDw8ICJcdGFsbG93ZWQgcG9zaXRpb24g
ZGV2aWF0aW9uID0gIiA8PCBtYXhQb3NpdGlvbkRldmlhdGlvbiA8PCAiXG4iCisgICAgICAgICAg
ICAgICAgPDwgIlx0Y29sb3IgdGhyZXNob2xkID0gIiA8PCB0aHJlc2hvbGQKKyAgICAgICAgICAg
ICAgICA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworICAgICAgICBsb2cgPDwgVGVzdExvZzo6TWVz
c2FnZSA8PCAiTnVtYmVyIG9mIGZhaWxpbmcgcGl4ZWxzID0gIiA8PCBudW1GYWlsaW5nUGl4ZWxz
IDw8ICIsIG1heCBhbGxvd2VkID0gIiA8PCBtYXhBbGxvd2VkRmFpbGluZ1BpeGVscyA8PCBUZXN0
TG9nOjpFbmRNZXNzYWdlOworCisgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpJbWFnZVNldChpbWFn
ZVNldE5hbWUsIGltYWdlU2V0RGVzYykKKyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJS
ZXN1bHQiLCAiUmVzdWx0IiwgcmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgICAg
ICAgICA8PCBUZXN0TG9nOjpJbWFnZSgiUmVmZXJlbmNlIiwgIlJlZmVyZW5jZSIsIHJlZmVyZW5j
ZSwgcGl4ZWxTY2FsZSwgcGl4ZWxCaWFzKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6SW1hZ2Uo
IkVycm9yTWFzayIsICJFcnJvciBtYXNrIiwgZXJyb3JNYXNrKQorICAgICAgICAgICAgPDwgVGVz
dExvZzo6RW5kSW1hZ2VTZXQ7CisgICAgfSBlbHNlIGlmIChsb2dNb2RlID09IENPTVBBUkVfTE9H
X1JFU1VMVCkgeworICAgICAgICBpZiAocmVzdWx0LmdldEZvcm1hdCgpICE9IFRleHR1cmVGb3Jt
YXQoVGV4dHVyZUZvcm1hdDo6UkdCQSwgVGV4dHVyZUZvcm1hdDo6VU5PUk1fSU5UOCkpCisgICAg
ICAgICAgICBjb21wdXRlUGl4ZWxTY2FsZUJpYXMocmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJp
YXMpOworCisgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpJbWFnZVNldChpbWFnZVNldE5hbWUsIGlt
YWdlU2V0RGVzYykKKyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJSZXN1bHQiLCAiUmVz
dWx0IiwgcmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgICAgICAgICA8PCBUZXN0
TG9nOjpFbmRJbWFnZVNldDsKKyAgICB9Ki8KKworICAgIHJldHVybiBjb21wYXJlT2s7Cit9Owor
CisvKioKKyAqIHRjdUltYWdlQ29tcGFyZS5mbG9hdFVscFRocmVzaG9sZENvbXBhcmUKKyAqIEBw
YXJhbSB7c3RyaW5nfSBpbWFnZVNldE5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbWFnZVNldERl
c2MKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZWZlcmVu
Y2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQK
KyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGhyZXNob2xkIC0gcHJldmlvdXNseSB1c2VkIGFz
IGFuIFVpbnQzMkFycmF5CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0Y3VJbWFnZUNvbXBh
cmUuZmxvYXRVbHBUaHJlc2hvbGRDb21wYXJlID0gZnVuY3Rpb24oaW1hZ2VTZXROYW1lLCBpbWFn
ZVNldERlc2MsIHJlZmVyZW5jZSwgcmVzdWx0LCB0aHJlc2hvbGQpIHsKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHdpZHRoID0gcmVmZXJlbmNlLmdldFdpZHRoKCk7CisgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSByZWZlcmVuY2UuZ2V0SGVpZ2h0KCk7CisgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkZXB0aCA9IHJlZmVyZW5jZS5nZXREZXB0aCgpOwor
ICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgZXJyb3JNYXNrID0gbmV3
IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIG1heERpZmYgPSBbMCwgMCwgMCwgMF07IC8vIFVWZWM0CisgICAg
Ly8gdmFyIHBpeGVsQmlhcyA9IFswLCAwLCAwLCAwXTsgLy8gVmVjNAorICAgIC8vIHZhciBwaXhl
bFNjYWxlID0gWzEsIDEsIDEsIDFdOyAvLyBWZWM0CisKKyAgICBhc3NlcnRNc2dPcHRpb25zKHJl
c3VsdC5nZXRXaWR0aCgpID09IHdpZHRoICYmIHJlc3VsdC5nZXRIZWlnaHQoKSA9PSBoZWlnaHQg
JiYgcmVzdWx0LmdldERlcHRoKCkgPT0gZGVwdGgsCisgICAgICAgICAgICAnUmVmZXJlbmNlIGFu
ZCByZXN1bHQgaW1hZ2VzIGhhdmUgZGlmZmVyZW50IGRpbWVuc2lvbnMnLCBmYWxzZSwgdHJ1ZSk7
CisKKyAgICBmb3IgKHZhciB6ID0gMDsgeiA8IGRlcHRoOyB6KyspIHsKKyAgICAgICAgZm9yICh2
YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZl
cn0gKi8gdmFyIGFycmF5QnVmZmVyUmVmID0gbmV3IEFycmF5QnVmZmVyKDQgKiA0KTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyfSAqLyB2YXIgYXJyYXlCdWZmZXJDbXAg
PSBuZXcgQXJyYXlCdWZmZXIoNCAqIDQpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgcmVmUGl4ID0gcmVmZXJlbmNlLmdldFBpeGVsKHgsIHksIHop
OyAvLyBnZXRQaXhlbCByZXR1cm5zIGEgVmVjNCBwaXhlbCBjb2xvcgorCisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY21wUGl4ID0gcmVzdWx0LmdldFBp
eGVsKHgsIHksIHopOyAvLyBnZXRQaXhlbCByZXR1cm5zIGEgVmVjNCBwaXhlbCBjb2xvcgorCisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtVaW50MzJBcnJheX0gKi8gdmFyIHJlZkJpdHMgPSBu
ZXcgVWludDMyQXJyYXkoYXJyYXlCdWZmZXJSZWYpOyAvLyBVVmVjNAorICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7VWludDMyQXJyYXl9ICovIHZhciBjbXBCaXRzID0gbmV3IFVpbnQzMkFycmF5
KGFycmF5QnVmZmVyQ21wKTsgLy8gVVZlYzQKKworICAgICAgICAgICAgICAgIC8vIEluc3RlYWQg
b2YgbWVtY3B5KCksIHdoaWNoIGlzIHRoZSB3YXkgdG8gZG8gZmxvYXQtPnVpbnQzMiByZWludGVy
cHJldGF0aW9uIGluIEMrKworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVm
UGl4Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZkJpdHNbaV0gPSB0Y3VG
bG9hdC5jb252ZXJ0RmxvYXQzMklubGluZShyZWZQaXhbaV0sIHRjdUZsb2F0LmRlc2NyaXB0aW9u
MzIpOworICAgICAgICAgICAgICAgICAgICBjbXBCaXRzW2ldID0gdGN1RmxvYXQuY29udmVydEZs
b2F0MzJJbmxpbmUoY21wUGl4W2ldLCB0Y3VGbG9hdC5kZXNjcmlwdGlvbjMyKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBkaWZmID0gZGVNYXRoLmFic0RpZmYocmVmQml0cywgY21wQml0cyk7IC8vIFVWZWM0Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IGRlTWF0aC5i
b29sQWxsKGRlTWF0aC5sZXNzVGhhbkVxdWFsKGRpZmYsIHRocmVzaG9sZCkpOworCisgICAgICAg
ICAgICAgICAgbWF4RGlmZiA9IGRlTWF0aC5tYXgobWF4RGlmZiwgZGlmZik7CisKKyAgICAgICAg
ICAgICAgICBlcnJvck1hc2suc2V0UGl4ZWwoeCwgeSwgaXNPayA/IFswLCAyNTUsIDAsIDI1NV0g
OiBbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNvbXBhcmVPayA9IGRlTWF0aC5ib29sQWxs
KGRlTWF0aC5sZXNzVGhhbkVxdWFsKG1heERpZmYsIHRocmVzaG9sZCkpOworCisgICAgaWYgKCFj
b21wYXJlT2spIHsKKyAgICAgICAgZGVidWcoJ0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkOiBtYXgg
ZGlmZmVyZW5jZSA9ICcgKyBtYXhEaWZmICsgJywgdGhyZXNob2xkID0gJyArIHRocmVzaG9sZCk7
CisgICAgICAgIHRjdUltYWdlQ29tcGFyZS5kaXNwbGF5SW1hZ2VzKHJlc3VsdCwgcmVmZXJlbmNl
LCBlcnJvck1hc2suZ2V0QWNjZXNzKCkpOworICAgIH0KKworICAgIC8qaWYgKCFjb21wYXJlT2sg
fHwgbG9nTW9kZSA9PSBDT01QQVJFX0xPR19FVkVSWVRISU5HKSB7CisgICAgICAgIC8vIEFsbCBm
b3JtYXRzIGV4Y2VwdCBub3JtYWxpemVkIHVuc2lnbmVkIGZpeGVkIHBvaW50IG9uZXMgbmVlZCBy
ZW1hcHBpbmcgaW4gb3JkZXIgdG8gZml0IGludG8gdW5vcm0gY2hhbm5lbHMgaW4gbG9nZ2VkIGlt
YWdlcy4KKyAgICAgICAgaWYgKHRjdTo6Z2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhyZWZlcmVuY2Uu
Z2V0Rm9ybWF0KCkudHlwZSkgIT0gdGN1OjpURVhUVVJFQ0hBTk5FTENMQVNTX1VOU0lHTkVEX0ZJ
WEVEX1BPSU5UIHx8CisgICAgICAgICAgICB0Y3U6OmdldFRleHR1cmVDaGFubmVsQ2xhc3MocmVz
dWx0LmdldEZvcm1hdCgpLnR5cGUpICE9IHRjdTo6VEVYVFVSRUNIQU5ORUxDTEFTU19VTlNJR05F
RF9GSVhFRF9QT0lOVCkgeworICAgICAgICAgICAgY29tcHV0ZVNjYWxlQW5kQmlhcyhyZWZlcmVu
Y2UsIHJlc3VsdCwgcGl4ZWxTY2FsZSwgcGl4ZWxCaWFzKTsKKyAgICAgICAgICAgIGxvZyA8PCBU
ZXN0TG9nOjpNZXNzYWdlIDw8ICJSZXN1bHQgYW5kIHJlZmVyZW5jZSBpbWFnZXMgYXJlIG5vcm1h
bGl6ZWQgd2l0aCBmb3JtdWxhIHAgKiAiIDw8IHBpeGVsU2NhbGUgPDwgIiArICIgPDwgcGl4ZWxC
aWFzIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNv
bXBhcmVPaykKKyAgICAgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlIDw8ICJJbWFnZSBj
b21wYXJpc29uIGZhaWxlZDogbWF4IGRpZmZlcmVuY2UgPSAiIDw8IG1heERpZmYgPDwgIiwgdGhy
ZXNob2xkID0gIiA8PCB0aHJlc2hvbGQgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKKworICAgICAg
ICBsb2cgPDwgVGVzdExvZzo6SW1hZ2VTZXQoaW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MpCisg
ICAgICAgICAgICA8PCBUZXN0TG9nOjpJbWFnZSgiUmVzdWx0IiwgIlJlc3VsdCIsIHJlc3VsdCwg
cGl4ZWxTY2FsZSwgcGl4ZWxCaWFzKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6SW1hZ2UoIlJl
ZmVyZW5jZSIsICJSZWZlcmVuY2UiLCByZWZlcmVuY2UsIHBpeGVsU2NhbGUsIHBpeGVsQmlhcykK
KyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJFcnJvck1hc2siLCAiRXJyb3IgbWFzayIs
IGVycm9yTWFzaykKKyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkVuZEltYWdlU2V0OworICAgIH0g
ZWxzZSBpZiAobG9nTW9kZSA9PSBDT01QQVJFX0xPR19SRVNVTFQpIHsKKyAgICAgICAgaWYgKHJl
c3VsdC5nZXRGb3JtYXQoKSAhPSBUZXh0dXJlRm9ybWF0KFRleHR1cmVGb3JtYXQ6OlJHQkEsIFRl
eHR1cmVGb3JtYXQ6OlVOT1JNX0lOVDgpKQorICAgICAgICAgICAgY29tcHV0ZVBpeGVsU2NhbGVC
aWFzKHJlc3VsdCwgcGl4ZWxTY2FsZSwgcGl4ZWxCaWFzKTsKKworICAgICAgICBsb2cgPDwgVGVz
dExvZzo6SW1hZ2VTZXQoaW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MpCisgICAgICAgICAgICA8
PCBUZXN0TG9nOjpJbWFnZSgiUmVzdWx0IiwgIlJlc3VsdCIsIHJlc3VsdCwgcGl4ZWxTY2FsZSwg
cGl4ZWxCaWFzKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6RW5kSW1hZ2VTZXQ7CisgICAgfSov
CisKKyAgICByZXR1cm4gY29tcGFyZU9rOworfTsKKworLyoqCisgKiB0Y3VJbWFnZUNvbXBhcmUu
ZmxvYXRUaHJlc2hvbGRDb21wYXJlCisgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXROYW1lCisg
KiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXREZXNjCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29u
c3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVmZXJlbmNlCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29u
c3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVzdWx0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRo
cmVzaG9sZAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1SW1hZ2VDb21wYXJlLmZsb2F0
VGhyZXNob2xkQ29tcGFyZSA9IGZ1bmN0aW9uKGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjLCBy
ZWZlcmVuY2UsIHJlc3VsdCwgdGhyZXNob2xkKSB7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciB3aWR0aCA9IHJlZmVyZW5jZS5nZXRXaWR0aCgpOworICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgaGVpZ2h0ID0gcmVmZXJlbmNlLmdldEhlaWdodCgpOworICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZGVwdGggPSByZWZlcmVuY2UuZ2V0RGVwdGgoKTsKKyAgICAvKiogQHR5
cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNl
LlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIHZhciBtYXhEaWZmID0gWzAsIDAsIDAsIDBdOyAvLyBWZWM0CisgICAgLy8gdmFyIHBpeGVs
QmlhcyA9IFswLCAwLCAwLCAwXTsgLy8gVmVjNAorICAgIC8vIHZhciBwaXhlbFNjYWxlID0gWzEs
IDEsIDEsIDFdOyAvLyBWZWM0CisKKyAgICBhc3NlcnRNc2dPcHRpb25zKHJlc3VsdC5nZXRXaWR0
aCgpID09IHdpZHRoICYmIHJlc3VsdC5nZXRIZWlnaHQoKSA9PSBoZWlnaHQgJiYgcmVzdWx0Lmdl
dERlcHRoKCkgPT0gZGVwdGgsCisgICAgICAgICAgICAnUmVmZXJlbmNlIGFuZCByZXN1bHQgaW1h
Z2VzIGhhdmUgZGlmZmVyZW50IGRpbWVuc2lvbnMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBmb3Ig
KHZhciB6ID0gMDsgeiA8IGRlcHRoOyB6KyspIHsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkg
PCBoZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHJlZlBpeCA9IHJlZmVyZW5jZS5nZXRQaXhlbCh4
LCB5LCB6KTsgLy8gVmVjNAorICAgICAgICAgICAgICAgIHZhciBjbXBQaXggPSByZXN1bHQuZ2V0
UGl4ZWwoeCwgeSwgeik7IC8vIFZlYzQKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGRpZmYgPSBkZU1hdGguYWJzRGlmZihyZWZQaXgsIGNtcFBpeCk7
IC8vIFZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc09r
ID0gZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwoZGlmZiwgdGhyZXNob2xkKSk7
CisKKyAgICAgICAgICAgICAgICBtYXhEaWZmID0gZGVNYXRoLm1heChtYXhEaWZmLCBkaWZmKTsK
KworICAgICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhlbCh4LCB5LCBpc09rID8gWzAsIDI1
NSwgMCwgMjU1XSA6IFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgY29tcGFyZU9rID0gZGVN
YXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwobWF4RGlmZiwgdGhyZXNob2xkKSk7CisK
KyAgICBpZiAoIWNvbXBhcmVPaykgeworICAgICAgICBkZWJ1ZygnSW1hZ2UgY29tcGFyaXNvbiBm
YWlsZWQ6IG1heCBkaWZmZXJlbmNlID0gJyArIG1heERpZmYgKyAnLCB0aHJlc2hvbGQgPSAnICsg
dGhyZXNob2xkKTsKKyAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmRpc3BsYXlJbWFnZXMocmVzdWx0
LCByZWZlcmVuY2UsIGVycm9yTWFzay5nZXRBY2Nlc3MoKSk7CisgICAgfQorCisgICAgLyppZiAo
IWNvbXBhcmVPayB8fCBsb2dNb2RlID09IENPTVBBUkVfTE9HX0VWRVJZVEhJTkcpIHsKKyAgICAg
ICAgLy8gQWxsIGZvcm1hdHMgZXhjZXB0IG5vcm1hbGl6ZWQgdW5zaWduZWQgZml4ZWQgcG9pbnQg
b25lcyBuZWVkIHJlbWFwcGluZyBpbiBvcmRlciB0byBmaXQgaW50byB1bm9ybSBjaGFubmVscyBp
biBsb2dnZWQgaW1hZ2VzLgorICAgICAgICBpZiAodGN1OjpnZXRUZXh0dXJlQ2hhbm5lbENsYXNz
KHJlZmVyZW5jZS5nZXRGb3JtYXQoKS50eXBlKSAhPSB0Y3U6OlRFWFRVUkVDSEFOTkVMQ0xBU1Nf
VU5TSUdORURfRklYRURfUE9JTlQgfHwKKyAgICAgICAgICAgIHRjdTo6Z2V0VGV4dHVyZUNoYW5u
ZWxDbGFzcyhyZXN1bHQuZ2V0Rm9ybWF0KCkudHlwZSkgIT0gdGN1OjpURVhUVVJFQ0hBTk5FTENM
QVNTX1VOU0lHTkVEX0ZJWEVEX1BPSU5UKSB7CisgICAgICAgICAgICBjb21wdXRlU2NhbGVBbmRC
aWFzKHJlZmVyZW5jZSwgcmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpOworICAgICAgICAg
ICAgbG9nIDw8IFRlc3RMb2c6Ok1lc3NhZ2UgPDwgIlJlc3VsdCBhbmQgcmVmZXJlbmNlIGltYWdl
cyBhcmUgbm9ybWFsaXplZCB3aXRoIGZvcm11bGEgcCAqICIgPDwgcGl4ZWxTY2FsZSA8PCAiICsg
IiA8PCBwaXhlbEJpYXMgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghY29tcGFyZU9rKQorICAgICAgICAgICAgbG9nIDw8IFRlc3RMb2c6Ok1lc3NhZ2Ug
PDwgIkltYWdlIGNvbXBhcmlzb24gZmFpbGVkOiBtYXggZGlmZmVyZW5jZSA9ICIgPDwgbWF4RGlm
ZiA8PCAiLCB0aHJlc2hvbGQgPSAiIDw8IHRocmVzaG9sZCA8PCBUZXN0TG9nOjpFbmRNZXNzYWdl
OworCisgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpJbWFnZVNldChpbWFnZVNldE5hbWUsIGltYWdl
U2V0RGVzYykKKyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJSZXN1bHQiLCAiUmVzdWx0
IiwgcmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgICAgICAgICA8PCBUZXN0TG9n
OjpJbWFnZSgiUmVmZXJlbmNlIiwgIlJlZmVyZW5jZSIsIHJlZmVyZW5jZSwgcGl4ZWxTY2FsZSwg
cGl4ZWxCaWFzKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6SW1hZ2UoIkVycm9yTWFzayIsICJF
cnJvciBtYXNrIiwgZXJyb3JNYXNrKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6RW5kSW1hZ2VT
ZXQ7CisgICAgfSBlbHNlIGlmIChsb2dNb2RlID09IENPTVBBUkVfTE9HX1JFU1VMVCkgeworICAg
ICAgICBpZiAocmVzdWx0LmdldEZvcm1hdCgpICE9IFRleHR1cmVGb3JtYXQoVGV4dHVyZUZvcm1h
dDo6UkdCQSwgVGV4dHVyZUZvcm1hdDo6VU5PUk1fSU5UOCkpCisgICAgICAgICAgICBjb21wdXRl
UGl4ZWxTY2FsZUJpYXMocmVzdWx0LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpOworCisgICAgICAg
IGxvZyA8PCBUZXN0TG9nOjpJbWFnZVNldChpbWFnZVNldE5hbWUsIGltYWdlU2V0RGVzYykKKyAg
ICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJSZXN1bHQiLCAiUmVzdWx0IiwgcmVzdWx0LCBw
aXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgICAgICAgICA8PCBUZXN0TG9nOjpFbmRJbWFnZVNl
dDsKKyAgICB9Ki8KKworICAgIHJldHVybiBjb21wYXJlT2s7Cit9OworCisvKioKKyAqIFxicmll
ZiBQZXItcGl4ZWwgdGhyZXNob2xkLWJhc2VkIGNvbXBhcmlzb24KKyAqCisgKiBUaGlzIGNvbXBh
cmUgY29tcHV0ZXMgcGVyLXBpeGVsIGRpZmZlcmVuY2VzIGJldHdlZW4gcmVzdWx0IGFuZCByZWZl
cmVuY2UKKyAqIGltYWdlLiBDb21wYXJpc29uIGZhaWxzIGlmIGFueSBwaXhlbHMgZXhjZWVkIHRo
ZSBnaXZlbiB0aHJlc2hvbGQgdmFsdWUuCisgKgorICogT24gZmFpbHVyZSBlcnJvciBpbWFnZSBp
cyBnZW5lcmF0ZWQgdGhhdCBzaG93cyB3aGVyZSB0aGUgZmFpbGluZyBwaXhlbHMKKyAqIGFyZS4K
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXROYW1lIE5hbWUgZm9yIGltYWdlIHNldCB3
aGVuIGxvZ2dpbmcgcmVzdWx0cworICogQHBhcmFtIHtzdHJpbmd9IGltYWdlU2V0RGVzYyBEZXNj
cmlwdGlvbiBmb3IgaW1hZ2Ugc2V0CisgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVm
ZXJlbmNlIFJlZmVyZW5jZSBpbWFnZQorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJl
c3VsdCBSZXN1bHQgaW1hZ2UKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGhyZXNob2xkIE1h
eGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlCisgKiBAcGFyYW0ge3RjdUltYWdlQ29tcGFyZS5Db21w
YXJlTG9nTW9kZT19IGxvZ01vZGUKKyAqIEBwYXJhbSB7QXJyYXk8IEFycmF5PG51bWJlcj4gPn0g
c2tpcFBpeGVscyBwaXhlbHMgdGhhdCBhcmUgc2tpcHBlZCBjb21wYXJpc29uCisgKiBAcmV0dXJu
IHtib29sZWFufSB0cnVlIGlmIGNvbXBhcmlzb24gcGFzc2VzLCBmYWxzZSBvdGhlcndpc2UKKyAq
LwordGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSA9IGZ1bmN0aW9uKGltYWdl
U2V0TmFtZSwgaW1hZ2VTZXREZXNjLCByZWZlcmVuY2UsIHJlc3VsdCwgdGhyZXNob2xkLCBsb2dN
b2RlLCBza2lwUGl4ZWxzKSB7CisgICAgcmV0dXJuIHRjdUltYWdlQ29tcGFyZS5pbnRUaHJlc2hv
bGRDb21wYXJlKGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjLCByZWZlcmVuY2UuZ2V0QWNjZXNz
KCksIHJlc3VsdC5nZXRBY2Nlc3MoKSwgdGhyZXNob2xkLCBsb2dNb2RlLCBza2lwUGl4ZWxzKTsK
K307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBlcnJv
ck1hc2sKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZWZl
cmVuY2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1
bHQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGhyZXNob2xkCisgKiBAcGFyYW0ge0FycmF5
PG51bWJlcj59IG1heFBvc2l0aW9uRGV2aWF0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59IGFjY2Vw
dE91dE9mQm91bmRzQXNBbnlWYWx1ZQorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VJbWFn
ZUNvbXBhcmUuZmluZE51bVBvc2l0aW9uRGV2aWF0aW9uRmFpbGluZ1BpeGVscyA9IGZ1bmN0aW9u
KGVycm9yTWFzaywgcmVmZXJlbmNlLCByZXN1bHQsIHRocmVzaG9sZCwgbWF4UG9zaXRpb25EZXZp
YXRpb24sIGFjY2VwdE91dE9mQm91bmRzQXNBbnlWYWx1ZSkgeworICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgd2lkdGggPSByZWZlcmVuY2UuZ2V0V2lkdGgoKTsKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGhlaWdodCA9IHJlZmVyZW5jZS5nZXRIZWlnaHQoKTsKKyAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGRlcHRoID0gcmVmZXJlbmNlLmdldERlcHRoKCk7CisgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1GYWlsaW5nUGl4ZWxzID0gMDsKKworICAgIGNo
ZWNrTWVzc2FnZShyZXN1bHQuZ2V0V2lkdGgoKSA9PSB3aWR0aCAmJiByZXN1bHQuZ2V0SGVpZ2h0
KCkgPT0gaGVpZ2h0ICYmIHJlc3VsdC5nZXREZXB0aCgpID09IGRlcHRoLCAnU3VyZmFjZXMgaGF2
ZSBkaWZmZXJlbnQgZGltZW5zaW9ucycpOworCisgICAgZm9yICh2YXIgeiA9IDA7IHogPCBkZXB0
aDsgeisrKSB7CisgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJlZlBpeCA9IHJlZmVyZW5jZS5n
ZXRQaXhlbEludCh4LCB5LCB6KTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciBjbXBQaXggPSByZXN1bHQuZ2V0UGl4ZWxJbnQoeCwgeSwgeik7CisKKyAg
ICAgICAgICAgICAgICAvLyBFeGFjdCBtYXRjaAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGRpZmYgPSBkZU1hdGguYWJzRGlmZihyZWZQaXgsIGNtcFBp
eCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IGRl
TWF0aC5ib29sQWxsKGRlTWF0aC5sZXNzVGhhbkVxdWFsKGRpZmYsIHRocmVzaG9sZCkpOworCisg
ICAgICAgICAgICAgICAgaWYgKGlzT2spIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNYXNr
LnNldFBpeGVsKFswLCAweGZmLCAwLCAweGZmXSwgeCwgeSwgeik7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFj
Y2VwdCBvdmVyIHRoZSBpbWFnZSBib3VuZHMgcGl4ZWxzIHNpbmNlIHRoZXkgY291bGQgYmUgYW55
dGhpbmcKKworICAgICAgICAgICAgICAgIGlmIChhY2NlcHRPdXRPZkJvdW5kc0FzQW55VmFsdWUg
JiYKKyAgICAgICAgICAgICAgICAgICAgKHggPCBtYXhQb3NpdGlvbkRldmlhdGlvblswXSB8fCB4
ICsgbWF4UG9zaXRpb25EZXZpYXRpb25bMF0gPj0gd2lkdGggfHwKKyAgICAgICAgICAgICAgICAg
ICAgIHkgPCBtYXhQb3NpdGlvbkRldmlhdGlvblsxXSB8fCB5ICsgbWF4UG9zaXRpb25EZXZpYXRp
b25bMV0gPj0gaGVpZ2h0IHx8CisgICAgICAgICAgICAgICAgICAgICB6IDwgbWF4UG9zaXRpb25E
ZXZpYXRpb25bMl0gfHwgeiArIG1heFBvc2l0aW9uRGV2aWF0aW9uWzJdID49IGRlcHRoKSkgewor
ICAgICAgICAgICAgICAgICAgICBlcnJvck1hc2suc2V0UGl4ZWwoWzAsIDB4ZmYsIDAsIDB4ZmZd
LCB4LCB5LCB6KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gRmluZCBtYXRjaGluZyBwaXhlbHMgZm9yIGJvdGgg
cmVzdWx0IGFuZCByZWZlcmVuY2UgcGl4ZWwKKworICAgICAgICAgICAgICAgIHZhciBwaXhlbEZv
dW5kRm9yUmVmZXJlbmNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdmFyIHBpeGVsRm91bmRG
b3JSZXN1bHQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIC8vIEZpbmQgZGV2aWF0ZWQgcmVz
dWx0IHBpeGVsIGZvciByZWZlcmVuY2UKKworICAgICAgICAgICAgICAgIGZvciAodmFyIHN6ID0g
TWF0aC5tYXgoMCwgeiAtIG1heFBvc2l0aW9uRGV2aWF0aW9uWzJdKTsgc3ogPD0gTWF0aC5taW4o
ZGVwdGggLSAxLCB6ICsgbWF4UG9zaXRpb25EZXZpYXRpb25bMl0pICYmICFwaXhlbEZvdW5kRm9y
UmVmZXJlbmNlOyArK3N6KQorICAgICAgICAgICAgICAgIGZvciAodmFyIHN5ID0gTWF0aC5tYXgo
MCwgeSAtIG1heFBvc2l0aW9uRGV2aWF0aW9uWzFdKTsgc3kgPD0gTWF0aC5taW4oaGVpZ2h0IC0g
MSwgeSArIG1heFBvc2l0aW9uRGV2aWF0aW9uWzFdKSAmJiAhcGl4ZWxGb3VuZEZvclJlZmVyZW5j
ZTsgKytzeSkKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBzeCA9IE1hdGgubWF4KDAsIHggLSBt
YXhQb3NpdGlvbkRldmlhdGlvblswXSk7IHN4IDw9IE1hdGgubWluKHdpZHRoIC0gMSwgeCArIG1h
eFBvc2l0aW9uRGV2aWF0aW9uWzBdKSAmJiAhcGl4ZWxGb3VuZEZvclJlZmVyZW5jZTsgKytzeCkg
eworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBk
ZXZpYXRlZENtcFBpeCA9IHJlc3VsdC5nZXRQaXhlbEludChzeCwgc3ksIHN6KTsKKyAgICAgICAg
ICAgICAgICAgICAgZGlmZiA9IGRlTWF0aC5hYnNEaWZmKHJlZlBpeCwgZGV2aWF0ZWRDbXBQaXgp
OworICAgICAgICAgICAgICAgICAgICBpc09rID0gZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NU
aGFuRXF1YWwoZGlmZiwgdGhyZXNob2xkKSk7CisKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxG
b3VuZEZvclJlZmVyZW5jZSB8PSBpc09rOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIC8vIEZpbmQgZGV2aWF0ZWQgcmVmZXJlbmNlIHBpeGVsIGZvciByZXN1bHQKKworICAg
ICAgICAgICAgICAgIGZvciAodmFyIHN6ID0gTWF0aC5tYXgoMCwgeiAtIG1heFBvc2l0aW9uRGV2
aWF0aW9uWzJdKTsgc3ogPD0gTWF0aC5taW4oZGVwdGggLSAxLCB6ICsgbWF4UG9zaXRpb25EZXZp
YXRpb25bMl0pICYmICFwaXhlbEZvdW5kRm9yUmVzdWx0OyArK3N6KQorICAgICAgICAgICAgICAg
IGZvciAodmFyIHN5ID0gTWF0aC5tYXgoMCwgeSAtIG1heFBvc2l0aW9uRGV2aWF0aW9uWzFdKTsg
c3kgPD0gTWF0aC5taW4oaGVpZ2h0IC0gMSwgeSArIG1heFBvc2l0aW9uRGV2aWF0aW9uWzFdKSAm
JiAhcGl4ZWxGb3VuZEZvclJlc3VsdDsgKytzeSkKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBz
eCA9IE1hdGgubWF4KDAsIHggLSBtYXhQb3NpdGlvbkRldmlhdGlvblswXSk7IHN4IDw9IE1hdGgu
bWluKHdpZHRoIC0gMSwgeCArIG1heFBvc2l0aW9uRGV2aWF0aW9uWzBdKSAmJiAhcGl4ZWxGb3Vu
ZEZvclJlc3VsdDsgKytzeCkgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBkZXZpYXRlZFJlZlBpeCA9IHJlZmVyZW5jZS5nZXRQaXhlbEludChz
eCwgc3ksIHN6KTsKKyAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRlTWF0aC5hYnNEaWZmKGNt
cFBpeCwgZGV2aWF0ZWRSZWZQaXgpOworICAgICAgICAgICAgICAgICAgICBpc09rID0gZGVNYXRo
LmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwoZGlmZiwgdGhyZXNob2xkKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxGb3VuZEZvclJlc3VsdCB8PSBpc09rOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwaXhlbEZvdW5kRm9yUmVmZXJlbmNlICYmIHBp
eGVsRm91bmRGb3JSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhl
bChbMCwgMHhmZiwgMCwgMHhmZl0sIHgsIHksIHopOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBlcnJvck1hc2suc2V0UGl4ZWwoWzB4ZmYsIDAsIDAsIDB4ZmZd
LCB4LCB5LCB6KTsKKyAgICAgICAgICAgICAgICAgICAgKytudW1GYWlsaW5nUGl4ZWxzOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBudW1GYWlsaW5nUGl4ZWxzOworfTsKKworIC8qKgorICAqIHRjdUltYWdlQ29tcGFyZS5m
dXp6eUNvbXBhcmUKKyAgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXROYW1lCisgICogQHBhcmFt
IHtzdHJpbmd9IGltYWdlU2V0RGVzYworICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzfSByZWZlcmVuY2UKKyAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzc30gcmVzdWx0CisgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZAorICAq
IEBwYXJhbSB7dGN1SW1hZ2VDb21wYXJlLkNvbXBhcmVMb2dNb2RlPX0gbG9nTW9kZQorICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICovCit0Y3VJbWFnZUNvbXBhcmUuZnV6enlDb21wYXJlID0gZnVu
Y3Rpb24oaW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MsIHJlZmVyZW5jZSwgcmVzdWx0LCB0aHJl
c2hvbGQsIGxvZ01vZGUpIHsKKyAgICAvKiogQHR5cGUge3RjdUZ1enp5SW1hZ2VDb21wYXJlLkZ1
enp5Q29tcGFyZVBhcmFtc30gKi8gdmFyIHBhcmFtcyA9IG5ldyB0Y3VGdXp6eUltYWdlQ29tcGFy
ZS5GdXp6eUNvbXBhcmVQYXJhbXMoKTsgLy8gVXNlIGRlZmF1bHRzLgorICAgIC8qKiBAdHlwZSB7
dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHZhciBlcnJvck1hc2sgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5nZXRXaWR0aCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZS5nZXRIZWlnaHQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZGlmZmVyZW5jZSA9IHRjdUZ1enp5SW1hZ2VDb21wYXJlLmZ1enp5Q29tcGFyZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzLm5ld0Zyb21UZXh0dXJlTGV2ZWwoZXJyb3JN
YXNrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc09rID0gZGlm
ZmVyZW5jZSA8PSB0aHJlc2hvbGQ7CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgcGl4ZWxCaWFzID0gWzAuMCwgMC4wLCAwLjAsIDAuMF07CisgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgcGl4ZWxTY2FsZSA9IFsxLjAsIDEuMCwgMS4wLCAxLjBdOworCisg
ICAgaWYgKCFpc09rKSB7CisgICAgICAgIGRlYnVnKCdGdXp6eSBpbWFnZSBjb21wYXJpc29uIGZh
aWxlZDogZGlmZmVyZW5jZSA9ICcgKyBkaWZmZXJlbmNlICsgJywgdGhyZXNob2xkID0gJyArIHRo
cmVzaG9sZCk7CisgICAgICAgIHRjdUltYWdlQ29tcGFyZS5kaXNwbGF5SW1hZ2VzKHJlc3VsdCwg
cmVmZXJlbmNlLCBlcnJvck1hc2suZ2V0QWNjZXNzKCkpOworICAgIH0KKworICAgIC8qCisgICAg
aWYgKCFpc09rIHx8IGxvZ01vZGUgPT0gQ09NUEFSRV9MT0dfRVZFUllUSElORykgeworICAgICAg
ICAvLyBHZW5lcmF0ZSBtb3JlIGFjY3VyYXRlIGVycm9yIG1hc2suCisgICAgICAgIHBhcmFtcy5t
YXhTYW1wbGVTa2lwID0gMDsKKyAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmZ1enp5Q29tcGFyZShw
YXJhbXMsIHJlZmVyZW5jZSwgcmVzdWx0LCBlcnJvck1hc2suZ2V0QWNjZXNzKCkpOworCisgICAg
ICAgIGlmIChyZXN1bHQuZ2V0Rm9ybWF0KCkgIT0gVGV4dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0
OjpSR0JBLCBUZXh0dXJlRm9ybWF0OjpVTk9STV9JTlQ4KSAmJiByZWZlcmVuY2UuZ2V0Rm9ybWF0
KCkgIT0gVGV4dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0OjpSR0JBLCBUZXh0dXJlRm9ybWF0OjpV
Tk9STV9JTlQ4KSkKKyAgICAgICAgICAgIGNvbXB1dGVTY2FsZUFuZEJpYXMocmVmZXJlbmNlLCBy
ZXN1bHQsIHBpeGVsU2NhbGUsIHBpeGVsQmlhcyk7CisKKyAgICAgICAgaWYgKCFpc09rKQorICAg
ICAgICAgICAgbG9nIDw8IFRlc3RMb2c6Ok1lc3NhZ2UgPDwgIkltYWdlIGNvbXBhcmlzb24gZmFp
bGVkOiBkaWZmZXJlbmNlID0gIiA8PCBkaWZmZXJlbmNlIDw8ICIsIHRocmVzaG9sZCA9ICIgPDwg
dGhyZXNob2xkIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7CisKKyAgICAgICAgbG9nIDw8IFRlc3RM
b2c6OkltYWdlU2V0KGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjKQorICAgICAgICAgICAgPDwg
VGVzdExvZzo6SW1hZ2UoIlJlc3VsdCIsICJSZXN1bHQiLCByZXN1bHQsIHBpeGVsU2NhbGUsIHBp
eGVsQmlhcykKKyAgICAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJSZWZlcmVuY2UiLCAiUmVm
ZXJlbmNlIiwgcmVmZXJlbmNlLCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgICAgICAgICA8
PCBUZXN0TG9nOjpJbWFnZSgiRXJyb3JNYXNrIiwgIkVycm9yIG1hc2siLCBlcnJvck1hc2spCisg
ICAgICAgICAgICA8PCBUZXN0TG9nOjpFbmRJbWFnZVNldDsKKyAgICB9IGVsc2UgaWYgKGxvZ01v
ZGUgPT0gQ09NUEFSRV9MT0dfUkVTVUxUKSB7CisgICAgICAgIGlmIChyZXN1bHQuZ2V0Rm9ybWF0
KCkgIT0gVGV4dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0OjpSR0JBLCBUZXh0dXJlRm9ybWF0OjpV
Tk9STV9JTlQ4KSkKKyAgICAgICAgICAgIGNvbXB1dGVQaXhlbFNjYWxlQmlhcyhyZXN1bHQsIHBp
eGVsU2NhbGUsIHBpeGVsQmlhcyk7CisKKyAgICAgICAgbG9nIDw8IFRlc3RMb2c6OkltYWdlU2V0
KGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjKQorICAgICAgICAgICAgPDwgVGVzdExvZzo6SW1h
Z2UoIlJlc3VsdCIsICJSZXN1bHQiLCByZXN1bHQsIHBpeGVsU2NhbGUsIHBpeGVsQmlhcykKKyAg
ICAgICAgICAgIDw8IFRlc3RMb2c6OkVuZEltYWdlU2V0OworICAgIH0KKyAgICAqLworICAgIHJl
dHVybiBpc09rOworfTsKKwordGN1SW1hZ2VDb21wYXJlLnVuaXRUZXN0ID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHdpZHRoID0gMTI4OworICAgIHZhciBoZWlnaHQgPSAxMjg7CisKKyAgICB2YXIg
d2VpcmRMZXZlbCA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChuZXcgdGN1VGV4dHVyZS5U
ZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHLCB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlNOT1JNX0lOVDMyKSwgd2lkdGgsIGhlaWdodCk7CisgICAgdmFyIGFjY2VzcyA9IHdl
aXJkTGV2ZWwuZ2V0QWNjZXNzKCk7CisgICAgYWNjZXNzLmNsZWFyKFswLjEsIDAuNSwgMCwgMF0p
OworICAgIGFjY2Vzcy5jbGVhcihbMC4xMSwgMC41MiwgMCwgMF0sIFswLCB3aWR0aF0sIFswLCBo
ZWlnaHQgLyAyXSk7CisgICAgYWNjZXNzLmNsZWFyKFswLjEyLCAwLjUyLCAwLCAwXSwgWzAsIHdp
ZHRoXSwgW2hlaWdodCAvIDIsIGhlaWdodCAvIDIgKyBoZWlnaHQgLyA4XSk7CisgICAgdmFyIGxp
bWl0cyA9IHRjdVRleHR1cmVVdGlsLmNvbXB1dGVQaXhlbFNjYWxlQmlhcyhhY2Nlc3MpOworICAg
IGRlYnVnKCdTY2FsZTogJyArIGxpbWl0cy5zY2FsZSk7CisgICAgZGVidWcoJ0JpYXM6ICcgKyBs
aW1pdHMuYmlhcyk7CisgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UoJ1dlaXJkJywgJ3dlaXJkIGZv
cm1hdCB3aXRob3V0IHNjYWxpbmcnLCBhY2Nlc3MpOworICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdl
KCdXZWlyZCcsICd3ZWlyZCBmb3JtYXQnLCBhY2Nlc3MsIGxpbWl0cy5zY2FsZSwgbGltaXRzLmJp
YXMpOworCisgICAgdmFyIHNyY0xldmVsID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKG5l
dyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgd2lkdGgsIGhlaWdodCk7CisgICAg
dmFyIGRzdExldmVsID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKG5ldyB0Y3VUZXh0dXJl
LlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgd2lkdGgsIGhlaWdodCk7CisgICAgdmFyIHNyYyA9IHNy
Y0xldmVsLmdldEFjY2VzcygpOworICAgIHZhciBkc3QgPSBkc3RMZXZlbC5nZXRBY2Nlc3MoKTsK
KworICAgIHNyYy5jbGVhcigpOworICAgIGRzdC5jbGVhcigpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB3aWR0aCAtIDE7IGkrKykgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGhl
aWdodCAtIDE7IGorKykgeworICAgICAgICAgICAgc3JjLnNldFBpeGVsSW50KFtpLCBqLCA5MCwg
MjU1XSwgaSwgaik7CisgICAgICAgICAgICBkc3Quc2V0UGl4ZWxJbnQoW2ksIGosIDkwLCAyNTVd
LCBpICsgMSwgaiArIDEpOworICAgICAgICB9CisgICAgfQorCisgICAgZGVidWcoJ1NyYyBmb3Jt
YXQ6ICcgKyBzcmMuZ2V0Rm9ybWF0KCkpOworICAgIGRlYnVnKCdEZXN0aW5hdGlvbjogJyArIGRz
dCk7CisgICAgZGVidWcoc3JjKTsKKyAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgnU291cmNlJywg
J1NvdXJjZSBpbWFnZScsIHNyYyk7CisKKyAgICBpZiAoIXRjdUltYWdlQ29tcGFyZS5mdXp6eUNv
bXBhcmUoJ2NvbXBhcmUnLCAnY29tcGFyZSBzaW1pbGFyIGltYWdlcycsIHNyYywgZHN0LCAwLjA1
KSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wYXJlIHNob3VsZCByZXR1cm4gdHJ1ZScp
OworCisgICAgc3JjLmNsZWFyKCk7CisgICAgZHN0LmNsZWFyKCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHdpZHRoIC0gMjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
aGVpZ2h0IC0gMjsgaisrKSB7CisgICAgICAgICAgICBzcmMuc2V0UGl4ZWxJbnQoW2ksIGosIDkw
LCAyNTVdLCBpLCBqKTsKKyAgICAgICAgICAgIGRzdC5zZXRQaXhlbEludChbaSwgaiwgOTAsIDI1
NV0sIGkgKyAyLCBqICsgMik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGN1SW1hZ2VD
b21wYXJlLmZ1enp5Q29tcGFyZSgnY29tcGFyZScsICdjb21wYXJlIGRpZmZlcmVudCBpbWFnZXMn
LCBzcmMsIGRzdCwgMC4wNSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGFyZSBzaG91
bGQgcmV0dXJuIGZhbHNlJyk7CisKKyAgICBkZWJ1ZygnUGFzc2VkJyk7Cit9OworCit0Y3VJbWFn
ZUNvbXBhcmUudW5pdFRlc3QyID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHdpZHRoID0gMTI4Owor
ICAgIHZhciBoZWlnaHQgPSAxMjg7CisgICAgdmFyIHNyY0xldmVsID0gbmV3IHRjdVRleHR1cmUu
VGV4dHVyZUxldmVsKG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgd2lkdGgs
IGhlaWdodCk7CisgICAgdmFyIGRzdExldmVsID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVs
KG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdC
QSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgdmFyIHNyYyA9IHNyY0xldmVsLmdldEFjY2VzcygpOworICAgIHZhciBkc3QgPSBkc3RMZXZl
bC5nZXRBY2Nlc3MoKTsKKyAgICB2YXIgdGhyZXNob2xkID0gdGN1UkdCQS5uZXdSR0JBQ29tcG9u
ZW50cygxLCAxLCAxLCAxKTsKKyAgICBkZWJ1ZygnVGhyZXNob2xkOiAnICsgdGhyZXNob2xkKTsK
KworICAgIHNyYy5jbGVhcigpOworICAgIGRzdC5jbGVhcigpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB3aWR0aCAtIDE7IGkrKykgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGhl
aWdodCAtIDE7IGorKykgeworICAgICAgICAgICAgc3JjLnNldFBpeGVsSW50KFtpLCBqLCA5MCwg
MjU1XSwgaSwgaik7CisgICAgICAgICAgICBkc3Quc2V0UGl4ZWxJbnQoW2ksIGosIDkwLCAyNTVd
LCBpLCBqKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXRjdUltYWdlQ29tcGFyZS5iaWxp
bmVhckNvbXBhcmUoJ2NvbXBhcmUnLCAnY29tcGFyZSBzaW1pbGFyIGltYWdlcycsIHNyYywgZHN0
LCB0aHJlc2hvbGQpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBhcmUgc2hvdWxkIHJl
dHVybiB0cnVlJyk7CisgICAgZGVidWcoJ2JpbGluZWFyIGNvbXBhcmUgdGhlIHNhbWUgaW1hZ2Vz
IHBhc3NlZCcpOworCisgICAgc3JjLmNsZWFyKCk7CisgICAgZHN0LmNsZWFyKCk7CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHdpZHRoIC0gMTsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgaGVpZ2h0IC0gMTsgaisrKSB7CisgICAgICAgICAgICBzcmMuc2V0UGl4ZWxJbnQo
W2ksIGosIDkwLCAyNTVdLCBpLCBqKTsKKyAgICAgICAgICAgIGRzdC5zZXRQaXhlbEludChbaSwg
aiArIDEsIDkwLCAyNTVdLCBpLCBqICsgMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCF0
Y3VJbWFnZUNvbXBhcmUuYmlsaW5lYXJDb21wYXJlKCdjb21wYXJlJywgJ2NvbXBhcmUgc2ltaWxh
ciBpbWFnZXMnLCBzcmMsIGRzdCwgdGhyZXNob2xkKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdDb21wYXJlIHNob3VsZCByZXR1cm4gdHJ1ZScpOworICAgIGRlYnVnKCdiaWxpbmVhciBjb21w
YXJlIHZlcnkgc2ltaWxhciBpbWFnZXMgcGFzc2VkJyk7CisKKyAgICBzcmMuY2xlYXIoKTsKKyAg
ICBkc3QuY2xlYXIoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2lkdGggLSAyOyBpKysp
IHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBoZWlnaHQgLSAyOyBqKyspIHsKKyAgICAg
ICAgICAgIHNyYy5zZXRQaXhlbEludChbaSwgaiwgOTAsIDI1NV0sIGksIGopOworICAgICAgICAg
ICAgLy8gZHN0LnNldFBpeGVsSW50KFtpLCBqLCA5MCwgMjU1XSwgaSArIDIsIGogKyAyKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICh0Y3VJbWFnZUNvbXBhcmUuYmlsaW5lYXJDb21wYXJl
KCdjb21wYXJlJywgJ2NvbXBhcmUgZGlmZmVyZW50IGltYWdlcycsIHNyYywgZHN0LCB0aHJlc2hv
bGQpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBhcmUgc2hvdWxkIHJldHVybiBmYWxz
ZScpOworCisgICAgZGVidWcoJ2JpbGluZWFyIGNvbXBhcmUgdmVyeSBkaWZmZXJlbnQgaW1hZ2Vz
IHBhc3NlZCcpOworfTsKKworLyoqCisgKiBCaWxpbmVhciBpbWFnZSBjb21wYXJpc29uCisgKiBP
biBmYWlsdXJlIGVycm9yIGltYWdlIGlzIGdlbmVyYXRlZCB0aGF0IHNob3dzIHdoZXJlIHRoZSBm
YWlsaW5nIHBpeGVscworICogYXJlLgorICogQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgUkdCQSwg
VU5PUk1fSU5UOCBmb3JtYXRzCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGltYWdlU2V0TmFtZSBO
YW1lIGZvciBpbWFnZSBzZXQgd2hlbiBsb2dnaW5nIHJlc3VsdHMKKyAqIEBwYXJhbSB7c3RyaW5n
fSBpbWFnZVNldERlc2MgRGVzY3JpcHRpb24gZm9yIGltYWdlIHNldAorICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlZmVyZW5jZSBSZWZlcmVuY2UgaW1hZ2UK
KyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQgUmVz
dWx0IGltYWdlCisgKiBAcGFyYW0ge3RjdVJHQkEuUkdCQX0gdGhyZXNob2xkIE1heGltdW0gbG9j
YWwgZGlmZmVyZW5jZQorICogQHBhcmFtIHt0Y3VJbWFnZUNvbXBhcmUuQ29tcGFyZUxvZ01vZGU9
fSBsb2dNb2RlIExvZ2dpbmcgbW9kZQorICogQHJldHVybiB7Ym9vbGVhbn0gaWYgY29tcGFyaXNv
biBwYXNzZXMsIGZhbHNlIG90aGVyd2lzZQorICovCit0Y3VJbWFnZUNvbXBhcmUuYmlsaW5lYXJD
b21wYXJlID0gZnVuY3Rpb24oaW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MsIHJlZmVyZW5jZSwg
cmVzdWx0LCB0aHJlc2hvbGQsIGxvZ01vZGUpIHsKKyAgICAvKiogQHR5cGUge3RjdVRleHR1cmUu
VGV4dHVyZUxldmVsfSAqLworICAgIHZhciBlcnJvck1hc2sgPSBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlTGV2ZWwoCisgICAgICAgIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQoCisgICAgICAg
ICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsCisgICAgICAgICAgICB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpLAorICAgICAgICByZWZlcmVuY2UuZ2V0V2lkdGgoKSwK
KyAgICAgICAgcmVmZXJlbmNlLmdldEhlaWdodCgpKTsKKworICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8KKyAgICB2YXIgaXNPayA9IHRjdUJpbGluZWFySW1hZ2VDb21wYXJlLmJpbGluZWFyQ29t
cGFyZSgKKyAgICAgICAgcmVmZXJlbmNlLAorICAgICAgICByZXN1bHQsCisgICAgICAgIHRjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVMZXZlbChlcnJvck1hc2spLAor
ICAgICAgICB0aHJlc2hvbGQpOworCisgICAgaWYgKCFpc09rKSB7CisgICAgICAgIGRlYnVnKCdJ
bWFnZSBjb21wYXJpc29uIGZhaWxlZDogdGhyZXNob2xkID0gJyArIHRocmVzaG9sZCk7CisgICAg
ICAgIHRjdUltYWdlQ29tcGFyZS5kaXNwbGF5SW1hZ2VzKHJlc3VsdCwgcmVmZXJlbmNlLCBlcnJv
ck1hc2suZ2V0QWNjZXNzKCkpOworICAgIH0KKworICAgIC8vIC8qIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgcGl4ZWxCaWFzID0gWzAuMCwgMC4wLCAwLjAsIDAuMF07CisgICAgLy8gLyog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwaXhlbFNjYWxlID0gWzEuMCwgMS4wLCAxLjAs
IDEuMF07CisgICAgLy8gaWYgKCFpc09rIHx8IGxvZ01vZGUgPT0gQ09NUEFSRV9MT0dfRVZFUllU
SElORykKKyAgICAvLyB7CisgICAgLy8gICAgIGlmIChyZXN1bHQuZ2V0Rm9ybWF0KCkgIT0gVGV4
dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0OjpSR0JBLCBUZXh0dXJlRm9ybWF0OjpVTk9STV9JTlQ4
KSAmJiByZWZlcmVuY2UuZ2V0Rm9ybWF0KCkgIT0gVGV4dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0
OjpSR0JBLCBUZXh0dXJlRm9ybWF0OjpVTk9STV9JTlQ4KSkKKyAgICAvLyAgICAgICAgIGNvbXB1
dGVTY2FsZUFuZEJpYXMocmVmZXJlbmNlLCByZXN1bHQsIHBpeGVsU2NhbGUsIHBpeGVsQmlhcyk7
CisgICAgLy8KKyAgICAvLyAgICAgaWYgKCFpc09rKQorICAgIC8vICAgICAgICAgbG9nIDw8IFRl
c3RMb2c6Ok1lc3NhZ2UgPDwgIkltYWdlIGNvbXBhcmlzb24gZmFpbGVkLCB0aHJlc2hvbGQgPSAi
IDw8IHRocmVzaG9sZCA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworICAgIC8vCisgICAgLy8gICAg
IGxvZyA8PCBUZXN0TG9nOjpJbWFnZVNldChpbWFnZVNldE5hbWUsIGltYWdlU2V0RGVzYykKKyAg
ICAvLyAgICAgICAgIDw8IFRlc3RMb2c6OkltYWdlKCJSZXN1bHQiLCAiUmVzdWx0IiwgcmVzdWx0
LCBwaXhlbFNjYWxlLCBwaXhlbEJpYXMpCisgICAgLy8gICAgICAgICA8PCBUZXN0TG9nOjpJbWFn
ZSgiUmVmZXJlbmNlIiwgIlJlZmVyZW5jZSIsIHJlZmVyZW5jZSwgcGl4ZWxTY2FsZSwgcGl4ZWxC
aWFzKQorICAgIC8vICAgICAgICAgPDwgVGVzdExvZzo6SW1hZ2UoIkVycm9yTWFzayIsICJFcnJv
ciBtYXNrIiwgZXJyb3JNYXNrKQorICAgIC8vICAgICAgICAgPDwgVGVzdExvZzo6RW5kSW1hZ2VT
ZXQ7CisgICAgLy8gfQorICAgIC8vIGVsc2UgaWYgKGxvZ01vZGUgPT0gQ09NUEFSRV9MT0dfUkVT
VUxUKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKHJlc3VsdC5nZXRGb3JtYXQoKSAhPSBUZXh0
dXJlRm9ybWF0KFRleHR1cmVGb3JtYXQ6OlJHQkEsIFRleHR1cmVGb3JtYXQ6OlVOT1JNX0lOVDgp
KQorICAgIC8vICAgICAgICAgY29tcHV0ZVBpeGVsU2NhbGVCaWFzKHJlc3VsdCwgcGl4ZWxTY2Fs
ZSwgcGl4ZWxCaWFzKTsKKyAgICAvLworICAgIC8vICAgICBsb2cgPDwgVGVzdExvZzo6SW1hZ2VT
ZXQoaW1hZ2VTZXROYW1lLCBpbWFnZVNldERlc2MpCisgICAgLy8gICAgICAgICA8PCBUZXN0TG9n
OjpJbWFnZSgiUmVzdWx0IiwgIlJlc3VsdCIsIHJlc3VsdCwgcGl4ZWxTY2FsZSwgcGl4ZWxCaWFz
KQorICAgIC8vICAgICAgICAgPDwgVGVzdExvZzo6RW5kSW1hZ2VTZXQ7CisgICAgLy8gfQorCisg
ICAgcmV0dXJuIGlzT2s7Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbnRl
cnZhbC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbnRlcnZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzI5NmMxZjNm
OTEyMTZhYTliMzc2OTE3NzFmMTE1Y2I5OTA0N2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29t
bW9uL3RjdUludGVydmFsLmpzCkBAIC0wLDAgKzEsNjA5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVyIENvcmUKKyAqIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBU
aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLy8qIQorICogXGZpbGUKKyAq
IFxicmllZiBJbnRlcnZhbCBhcml0aG1ldGljIGFuZCBmbG9hdGluZyBwb2ludCBwcmVjaXNpb25z
LgorICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisgJ3VzZSBzdHJpY3QnOworIGdvb2cucHJvdmlkZSgnZnJh
bWV3b3JrLmNvbW1vbi50Y3VJbnRlcnZhbCcpOworIGdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVNYXRoJyk7CisKKyBnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAg
IHZhciB0Y3VJbnRlcnZhbCA9IGZyYW1ld29yay5jb21tb24udGN1SW50ZXJ2YWw7CisgICAgIHZh
ciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKKyAgICAvKioKKyAg
ICAgKiBAdHlwZWRlZiB7ZnVuY3Rpb24obnVtYmVyKTpudW1iZXJ9CisgICAgICovCisgICAgdGN1
SW50ZXJ2YWwuRG91YmxlRnVuYzE7CisKKyAgICAvKioKKyAgICAgKiBAdHlwZWRlZiB7ZnVuY3Rp
b24obnVtYmVyLCBudW1iZXIpOm51bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VJbnRlcnZhbC5Eb3Vi
bGVGdW5jMjsKKworICAgIC8qKgorICAgICAqIEB0eXBlZGVmIHtmdW5jdGlvbihudW1iZXIsbnVt
YmVyLG51bWJlcik6bnVtYmVyfQorICAgICAqLworICAgIHRjdUludGVydmFsLkRvdWJsZUZ1bmMz
OworCisgICAgLyoqCisgICAgICogQHR5cGVkZWYge2Z1bmN0aW9uKG51bWJlcik6dGN1SW50ZXJ2
YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuRG91YmxlSW50ZXJ2YWxGdW5j
MTsKKworICAgIC8qKgorICAgICAqIEB0eXBlZGVmIHtmdW5jdGlvbihudW1iZXIsbnVtYmVyKTp0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICB0Y3VJbnRlcnZhbC5Eb3VibGVJbnRl
cnZhbEZ1bmMyOworCisgICAgLyoqCisgICAgICogQHR5cGVkZWYge2Z1bmN0aW9uKG51bWJlcixu
dW1iZXIsbnVtYmVyKTp0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICB0Y3VJbnRl
cnZhbC5Eb3VibGVJbnRlcnZhbEZ1bmMzOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihudW1iZXIpOiBudW1iZXJ9IGZ1bmMKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLklu
dGVydmFsfSBhcmcwCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAg
ICovCisgICAgdGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTFwID0gZnVuY3Rpb24oZnVuYywgYXJn
MCkgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSB4CisgICAgICAg
ICAqIEBwYXJhbSB7bnVtYmVyPX0geQorICAgICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAg
ICAgICAqLworICAgICAgICB2YXIgYm9keSA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAg
IHggPSB4IHx8IDA7CisgICAgICAgICAgICByZXR1cm4gZnVuYyh4KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgcmV0dXJuIHRjdUludGVydmFsLmFwcGx5TW9ub3RvbmUxKGFyZzAsCisgICAgICAgICAg
ICBmdW5jdGlvbih4KSB7IHJldHVybiB0Y3VJbnRlcnZhbC5zZXRJbnRlcnZhbChib2R5LCB4KTsg
fSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyKTog
dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGZ1bmMKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLklu
dGVydmFsfSBhcmcwCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAg
ICovCisgICAgdGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTFpID0gZnVuY3Rpb24oZnVuYywgYXJn
MCkgeworICAgICAgICByZXR1cm4gdGN1SW50ZXJ2YWwud2l0aEludGVydmFscyhmdW5jKGFyZzAu
bG8oKSksIGZ1bmMoYXJnMC5oaSgpKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24obnVtYmVyLCBudW1iZXIpOiBudW1iZXJ9IGZ1bmMKKyAgICAgKiBAcGFyYW0g
e3RjdUludGVydmFsLkludGVydmFsfSBhcmcwCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5J
bnRlcnZhbH0gYXJnMQorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAg
ICAqLworICAgIHRjdUludGVydmFsLmFwcGx5TW9ub3RvbmUycCA9IGZ1bmN0aW9uKGZ1bmMsIGFy
ZzAsIGFyZzEpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0geAor
ICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IHkKKyAgICAgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIGJvZHkgPSBmdW5jdGlvbih4LCB5KSB7CisgICAg
ICAgICAgICB4ID0geCB8fCAwOworICAgICAgICAgICAgeSA9IHkgfHwgMDsKKyAgICAgICAgICAg
IHJldHVybiBmdW5jKHgsIHkpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gdGN1SW50ZXJ2
YWwuYXBwbHlNb25vdG9uZTIoYXJnMCwgYXJnMSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHgsIHkp
IHsgcmV0dXJuIHRjdUludGVydmFsLnNldEludGVydmFsKGJvZHksIHgsIHkpOyB9KTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIG51bWJlcik6IHRj
dUludGVydmFsLkludGVydmFsfSBmdW5jCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRl
cnZhbH0gYXJnMAorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGFyZzEKKyAg
ICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICB0Y3VJbnRl
cnZhbC5hcHBseU1vbm90b25lMmkgPSBmdW5jdGlvbihmdW5jLCBhcmcwLCBhcmcxKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG8wID0gYXJnMC5sbygpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGhpMCA9IGFyZzAuaGkoKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBsbzEgPSBhcmcxLmxvKCk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgaGkxID0gYXJnMS5oaSgpOworICAgICAgICB2YXIgYSA9IHRjdUludGVy
dmFsLndpdGhJbnRlcnZhbHMoZnVuYyhsbzAsIGxvMSksIGZ1bmMobG8wLCBoaTEpKTsKKyAgICAg
ICAgdmFyIGIgPSB0Y3VJbnRlcnZhbC53aXRoSW50ZXJ2YWxzKGZ1bmMoaGkwLCBsbzEpLCBmdW5j
KGhpMCwgaGkxKSk7CisgICAgICAgIHJldHVybiB0Y3VJbnRlcnZhbC53aXRoSW50ZXJ2YWxzKGEs
IGIpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFy
YW0ge251bWJlcj19IHZhbAorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsID0gZnVu
Y3Rpb24odmFsKSB7CisgICAgICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAg
ICAgdGhpcy5tX2hhc05hTiA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5tX2xvID0gTnVtYmVy
LlBPU0lUSVZFX0lORklOSVRZOworICAgICAgICAgICAgdGhpcy5tX2hpID0gTnVtYmVyLk5FR0FU
SVZFX0lORklOSVRZOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5tX2hhc05h
TiA9IGlzTmFOKHZhbCk7CisgICAgICAgICAgICB0aGlzLm1fbG8gPSB0aGlzLm1faGFzTmFOID8g
TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogdmFsOworICAgICAgICAgICAgdGhpcy5tX2hpID0g
dGhpcy5tX2hhc05hTiA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA6IHZhbDsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICB0Y3VJbnRlcnZhbC5JbnRlcnZhbC5wcm90b3R5cGUudG9TdHJpbmcg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHN0ciA9ICdJbnRlcnZhbCgnICsgdGhpcy5tX2xv
ICsgJywgJyArIHRoaXMubV9oaTsKKyAgICAgICAgaWYgKHRoaXMubV9oYXNOYU4pCisgICAgICAg
ICAgICBzdHIgKz0gJywgaGFzTmFOJzsKKyAgICAgICAgc3RyICs9ICcpJzsKKyAgICAgICAgcmV0
dXJuIHN0cjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5J
bnRlcnZhbH0gYQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGIKKyAgICAg
KiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICB0Y3VJbnRlcnZh
bC53aXRoSW50ZXJ2YWxzID0gZnVuY3Rpb24oYSwgYikgeworICAgICAgICAvKiogQHR5cGUge3Rj
dUludGVydmFsLkludGVydmFsfSAqLyB2YXIgaW50ZXJ2YWwgPSBuZXcgdGN1SW50ZXJ2YWwuSW50
ZXJ2YWwoKTsKKyAgICAgICAgaW50ZXJ2YWwubV9oYXNOYU4gPSAoYS5tX2hhc05hTiB8fCBiLm1f
aGFzTmFOKTsKKyAgICAgICAgaW50ZXJ2YWwubV9sbyA9IE1hdGgubWluKGEubV9sbywgYi5tX2xv
KTsKKyAgICAgICAgaW50ZXJ2YWwubV9oaSA9IE1hdGgubWF4KGEubV9oaSwgYi5tX2hpKTsKKyAg
ICAgICAgcmV0dXJuIGludGVydmFsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gYQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiCisgICAgICogQHJldHVybiB7dGN1
SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwud2l0aE51bWJlcnMg
PSBmdW5jdGlvbihhLCBiKSB7CisgICAgICAgIHZhciB4ID0gbmV3IHRjdUludGVydmFsLkludGVy
dmFsKGEpOworICAgICAgICB2YXIgeSA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChiKTsKKyAg
ICAgICAgcmV0dXJuIHRjdUludGVydmFsLndpdGhJbnRlcnZhbHMoeCwgeSk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTmFOXworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsb18KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGlfCisgICAgICogQHJldHVybiB7
dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwud2l0aFBhcmFt
cyA9IGZ1bmN0aW9uKGhhc05hTl8sIGxvXywgaGlfKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIHZhciBpbnRlcnZhbCA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRl
cnZhbCgpOworICAgICAgICBpbnRlcnZhbC5tX2hhc05hTiA9IGhhc05hTl87CisgICAgICAgIGlu
dGVydmFsLm1fbG8gPSBsb187CisgICAgICAgIGludGVydmFsLm1faGkgPSBoaV87CisgICAgICAg
IHJldHVybiBpbnRlcnZhbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsLnByb3RvdHlwZS5sZW5ndGgg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9oaSAtIHRoaXMubV9sbzsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHRj
dUludGVydmFsLkludGVydmFsLnByb3RvdHlwZS5sbyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5tX2xvOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBlLmhpID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1faGk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2
YWwucHJvdG90eXBlLmhhc05hTiA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5t
X2hhc05hTjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwu
SW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBlLm5h
biA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2hhc05hTiA/IG5ldyB0Y3VJ
bnRlcnZhbC5JbnRlcnZhbChOYU4pIDogbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1
SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLm1fbG8gPiB0aGlzLm1faGk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJv
dG90eXBlLmlzRmluaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBpc0Zpbml0ZSh0
aGlzLm1fbG8pICYmIGlzRmluaXRlKHRoaXMubV9oaSk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwu
cHJvdG90eXBlLmlzT3JkaW5hcnkgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICF0aGlz
Lmhhc05hTigpICYmICF0aGlzLmVtcHR5KCkgJiYgdGhpcy5pc0Zpbml0ZSgpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSBvdGhlcgorICAg
ICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRjdUludGVy
dmFsLkludGVydmFsLnByb3RvdHlwZS5vcGVyYXRvck9yQmluYXJ5ID0gZnVuY3Rpb24ob3RoZXIp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gdmFyIHRlbXAg
PSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICAgICAgdGVtcC5tX2hhc05hTiA9IHRo
aXMubV9oYXNOYU4gfHwgb3RoZXIubV9oYXNOYU47CisgICAgICAgIHRlbXAubV9sbyA9IE1hdGgu
bWluKHRoaXMubV9sbywgb3RoZXIubV9sbyk7CisgICAgICAgIHRlbXAubV9oaSA9IE1hdGgubWF4
KHRoaXMubV9oaSwgb3RoZXIubV9oaSk7CisgICAgICAgIHJldHVybiB0ZW1wOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSBvdGhlcgorICAg
ICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsLnByb3RvdHlwZS5vcGVyYXRvck9yQXNzaWdu
QmluYXJ5ID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VJbnRlcnZh
bC5JbnRlcnZhbH0gKi8gdmFyIHRlbXAgPSB0aGlzLm9wZXJhdG9yT3JCaW5hcnkob3RoZXIpOwor
ICAgICAgICB0aGlzLm1faGFzTmFOID0gdGVtcC5tX2hhc05hTjsKKyAgICAgICAgdGhpcy5tX2xv
ID0gdGVtcC5tX2xvOworICAgICAgICB0aGlzLm1faGkgPSB0ZW1wLm1faGk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IG90aGVyCisgICAg
ICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2
YWwuSW50ZXJ2YWwucHJvdG90eXBlLm9wZXJhdG9yQW5kQmluYXJ5ID0gZnVuY3Rpb24ob3RoZXIp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gdmFyIHRlbXAg
PSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICAgICAgdGVtcC5tX2hhc05hTiA9IHRo
aXMubV9oYXNOYU4gJiYgb3RoZXIubV9oYXNOYU47CisgICAgICAgIHRlbXAubV9sbyA9IE1hdGgu
bWF4KHRoaXMubV9sbywgb3RoZXIubV9sbyk7CisgICAgICAgIHRlbXAubV9oaSA9IE1hdGgubWlu
KHRoaXMubV9oaSwgb3RoZXIubV9oaSk7CisgICAgICAgIHJldHVybiB0ZW1wOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSBvdGhlcgorICAg
ICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsLnByb3RvdHlwZS5vcGVyYXRvckFuZEFzc2ln
bkJpbmFyeSA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2
YWwuSW50ZXJ2YWx9ICovIHZhciB0ZW1wID0gdGhpcy5vcGVyYXRvckFuZEJpbmFyeShvdGhlcik7
CisgICAgICAgIHRoaXMubV9oYXNOYU4gPSB0ZW1wLm1faGFzTmFOOworICAgICAgICB0aGlzLm1f
bG8gPSB0ZW1wLm1fbG87CisgICAgICAgIHRoaXMubV9oaSA9IHRlbXAubV9oaTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gb3RoZXIKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVydmFs
LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiAo
b3RoZXIubG8oKSA+PSB0aGlzLmxvKCkgJiYgb3RoZXIuaGkoKSA8PSB0aGlzLmhpKCkgJiYKKyAg
ICAgICAgICAgICAgICAoIW90aGVyLmhhc05hTigpIHx8IHRoaXMuaGFzTmFOKCkpKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gb3RoZXIK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVy
dmFsLnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0
dXJuICgob3RoZXIuaGkoKSA+PSB0aGlzLmxvKCkgJiYgb3RoZXIubG8oKSA+PSB0aGlzLmhpKCkp
IHx8CisgICAgICAgICAgICAgICAgKG90aGVyLmhhc05hTigpICYmIHRoaXMuaGFzTmFOKCkpKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9
CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBlLm9wZXJhdG9yTmVn
YXRpdmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRl
cnZhbH0gKi8gdmFyIHRlbXAgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICAgICAg
dGVtcC5tX2hhc05hTiA9IHRoaXMubV9oYXNOYU47CisgICAgICAgIHRlbXAubV9sbyA9IC10aGlz
Lm1faGk7CisgICAgICAgIHRlbXAubV9oaSA9IC10aGlzLm1fbG87CisgICAgICAgIHJldHVybiB0
ZW1wOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBuYW4KKyAg
ICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICB0Y3VJbnRl
cnZhbC51bmJvdW5kZWQgPSBmdW5jdGlvbihuYW4pIHsKKyAgICAgICAgaWYgKG5hbiA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICAgICAgbmFuID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0Y3VJbnRl
cnZhbC53aXRoUGFyYW1zKG5hbiwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBOdW1iZXIuUE9T
SVRJVkVfSU5GSU5JVFkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBlLm1pZHBvaW50
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAwLjUgKiAodGhpcy5oaSgpICsgdGhpcy5s
bygpKTsgLy8gcmV0dXJucyBOYU4gd2hlbiBub3QgYm91bmRlZAorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSBvdGhlcgorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwucHJvdG90eXBl
Lm9wZXJhdG9yQ29tcGFyZSA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiAoKHRo
aXMubV9oYXNOYU4gPT0gb3RoZXIubV9oYXNOYU4pICYmCisgICAgICAgICAgICAgICAgKCh0aGlz
LmVtcHR5KCkgJiYgb3RoZXIuZW1wdHkoKSkgfHwKKyAgICAgICAgICAgICAgICAgKHRoaXMubV9s
byA9PSBvdGhlci5tX2xvICYmIHRoaXMubV9oaSA9PSBvdGhlci5tX2hpKSkpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSB4CisgICAgICog
QHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwu
SW50ZXJ2YWwub3BlcmF0b3JQb3NpdGl2ZSA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgcmV0dXJu
IHg7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9IHgKKyAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAg
ICB0Y3VJbnRlcnZhbC5JbnRlcnZhbC5leHAyID0gZnVuY3Rpb24oeCkgeworICAgICAgICAvLyBz
dGQ6OnBvdworICAgICAgICByZXR1cm4gdGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTJwKE1hdGgu
cG93LCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoMiksIHgpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSB4CisgICAgICogQHJldHVybiB7
dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwu
ZXhwID0gZnVuY3Rpb24oeCkgeworICAgICAgICAvLyBzdGQ6OmV4cAorICAgICAgICByZXR1cm4g
dGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTFwKE1hdGguZXhwLCB4KTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0geAorICAgICAqIEByZXR1
cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVy
dmFsLnNpZ24gPSBmdW5jdGlvbih4KSB7CisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdVbmltcGxlbWVudGVkJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IHgKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFs
LkludGVydmFsfSB5CisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAg
ICovCisgICAgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwub3BlcmF0b3JTdW0gPSBmdW5jdGlvbih4LCB5
KSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIHZhciByZXQg
PSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKworICAgICAgICBpZiAoIXguZW1wdHkoKSAm
JiAheS5lbXB0eSgpKQorICAgICAgICAgICAgcmV0ID0gdGN1SW50ZXJ2YWwuc2V0SW50ZXJ2YWxC
b3VuZHMoZnVuY3Rpb24oZHVtbXkpIHtyZXR1cm4geC5sbygpICsgeS5sbygpO30sIGZ1bmN0aW9u
KGR1bW15KSB7cmV0dXJuIHguaGkoKSArIHkuaGkoKTt9KTsKKyAgICAgICAgaWYgKHguaGFzTmFO
KCkgfHwgeS5oYXNOYU4oKSkKKyAgICAgICAgICAgIHJldC5vcGVyYXRvck9yQXNzaWduQmluYXJ5
KG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChOYU4pKTsKKworICAgICAgICByZXR1cm4gcmV0Owor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSB4
CisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0geQorICAgICAqIEByZXR1cm4g
e3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVydmFs
Lm9wZXJhdG9yU3ViID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICAvKiogQHR5cGUge3RjdUlu
dGVydmFsLkludGVydmFsfSAqLyB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7
CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0geAorICAgICAgICAg
KiBAcGFyYW0ge251bWJlcj19IHkKKyAgICAgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50
ZXJ2YWx9CisgICAgICAgICAqLworICAgICAgICB2YXIgYm9keSA9IGZ1bmN0aW9uKHgsIHkpIHsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoeCAtIHkpOworICAg
ICAgICB9OworCisgICAgICAgIHJldCA9IHRjdUludGVydmFsLmFwcGx5TW9ub3RvbmUyKHgsIHks
IGJvZHkpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSB4CisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZh
bC5JbnRlcnZhbH0geQorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAg
ICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsLm9wZXJhdG9yTXVsID0gZnVuY3Rpb24oeCwg
eSkgeworICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFsLkludGVydmFsfSAqLyB2YXIgcmV0
ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0geAorICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IHkKKyAgICAg
ICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICAgICAqLworICAgICAg
ICB2YXIgYm9keSA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgdGN1
SW50ZXJ2YWwuSW50ZXJ2YWwoeCAqIHkpOworICAgICAgICB9OworCisgICAgICAgIHJldCA9IHRj
dUludGVydmFsLmFwcGx5TW9ub3RvbmUyKHgsIHksIGJvZHkpOworCisgICAgICAgIHJldHVybiBy
ZXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9IG5vbQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGRlbgorICAgICAq
IEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRjdUludGVydmFs
LkludGVydmFsLm9wZXJhdG9yRGl2ID0gZnVuY3Rpb24obm9tLCBkZW4pIHsKKyAgICAgICAgaWYg
KGRlbi5jb250YWlucyhuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoMCkpKSB7CisgICAgICAgICAg
ICAvLyBcdG9kbyBbMjAxNC0wMy0yMSBsYXVyaV0gTm9uLWluZiBlbmRwb2ludCB3aGVuIG9uZSBk
ZW4gZW5kcG9pbnQgaXMKKyAgICAgICAgICAgIC8vIHplcm8gYW5kIG5vbSBkb2Vzbid0IGNyb3Nz
IHplcm8/CisgICAgICAgICAgICByZXR1cm4gdGN1SW50ZXJ2YWwudW5ib3VuZGVkKCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFsLkludGVydmFs
fSAqLyB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisgICAgICAgICAgICAv
KioKKyAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0geAorICAgICAgICAgICAgICogQHBh
cmFtIHtudW1iZXI9fSB5CisgICAgICAgICAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRl
cnZhbH0KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgdmFyIGJvZHkgPSBmdW5jdGlvbih4
LCB5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCh4
IC8geSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5h
cHBseU1vbm90b25lMihub20sIGRlbiwgYm9keSk7CisKKyAgICAgICAgICAgIHJldHVybiByZXQ7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZh
bC5JbnRlcnZhbH0geAorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAg
ICAqLworICAgIHRjdUludGVydmFsLkludGVydmFsLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbih4
KSB7CisgICAgICAgIC8vc3RkOjphYnMKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5J
bnRlcnZhbH0gKi8gdmFyIG1vbm8gPSB0Y3VJbnRlcnZhbC5hcHBseU1vbm90b25lMXAoTWF0aC5h
YnMsIHgpOworICAgICAgICB2YXIgemVybyA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgwKTsK
KyAgICAgICAgaWYgKHguY29udGFpbnMoemVybykpCisgICAgICAgICAgICByZXR1cm4gdGN1SW50
ZXJ2YWwud2l0aEludGVydmFscyh6ZXJvLCBtb25vKTsKKworICAgICAgICByZXR1cm4gbW9ubzsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0g
eAorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRj
dUludGVydmFsLkludGVydmFsLnNxcnQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIHJldHVybiB0
Y3VJbnRlcnZhbC5hcHBseU1vbm90b25lMXAoTWF0aC5zcXJ0LCB4KTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0geAorICAgICAqIEByZXR1
cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIHRjdUludGVydmFsLkludGVy
dmFsLmludmVyc2VTcXJ0ID0gZnVuY3Rpb24oeCkgeworICAgICAgICB2YXIgcmV0ID0gbmV3IHRj
dUludGVydmFsLkludGVydmFsKDEpOworICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5JbnRlcnZh
bC5vcGVyYXRvckRpdihyZXQsIHRjdUludGVydmFsLkludGVydmFsLnNxcnQoeCkpOworICAgICAg
ICByZXR1cm4gcmV0OworICAgIH07CisKKy8qKgorICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXI9
LCBudW1iZXI9KTogbnVtYmVyfSBzZXRMb3cKKyAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyPSwg
bnVtYmVyPSk6IG51bWJlcn0gc2V0SGlnaAorICogQHBhcmFtIHtudW1iZXI9fSBhcmcwCisgKiBA
cGFyYW0ge251bWJlcj19IGFyZzEKKyAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQor
ICovCit0Y3VJbnRlcnZhbC5zZXRJbnRlcnZhbEJvdW5kcyA9IGZ1bmN0aW9uKHNldExvdywgc2V0
SGlnaCwgYXJnMCwgYXJnMSkgeworICAgIC8vIFRPRE86IE5vIHN1cHBvcnQgZm9yIHJvdW5kaW5n
IG1vZGVzLiBPcmlnaW5hbGx5LCBzZXRMb3coKSB3YXMgcm91bmRlZCBkb3duIGFuZCBzZXRIaWdo
KCkgcm91bmRlZCB1cAorICAgIHZhciBsbyA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChzZXRM
b3coYXJnMCwgYXJnMSkpOworICAgIHZhciBoaSA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChz
ZXRIaWdoKGFyZzAsIGFyZzEpKTsKKyAgICByZXR1cm4gbG8ub3BlcmF0b3JPckJpbmFyeShoaSk7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyPSwgbnVtYmVyPSk6IG51bWJl
cn0gc2V0CisgKiBAcGFyYW0ge251bWJlcj19IGFyZzAKKyAqIEBwYXJhbSB7bnVtYmVyPX0gYXJn
MQorICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgKi8KK3RjdUludGVydmFsLnNl
dEludGVydmFsID0gZnVuY3Rpb24oc2V0LCBhcmcwLCBhcmcxKSB7CisgICAgcmV0dXJuIHRjdUlu
dGVydmFsLnNldEludGVydmFsQm91bmRzKHNldCwgc2V0LCBhcmcwLCBhcmcxKTsKK307CisKKy8q
KgorICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gYXJnCisgKiBAcGFyYW0ge2Z1bmN0
aW9uKG51bWJlcik6IHRjdUludGVydmFsLkludGVydmFsfSBib2R5CisgKiBAcmV0dXJuIHt0Y3VJ
bnRlcnZhbC5JbnRlcnZhbH0KKyAqLwordGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTEgPSBmdW5j
dGlvbihhcmcsIGJvZHkpIHsKKyAgICB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFs
KCk7CisKKyAgICBpZiAoIWFyZy5lbXB0eSgpKSB7CisgICAgICAgIHZhciBsbyA9IGJvZHkoYXJn
LmxvKCkpOworICAgICAgICB2YXIgaGkgPSBib2R5KGFyZy5oaSgpKTsKKyAgICAgICAgcmV0ID0g
bG8ub3BlcmF0b3JPckJpbmFyeShoaSk7CisgICAgfQorCisgICAgaWYgKGFyZy5oYXNOYU4oKSkg
eworICAgICAgICByZXQgPSByZXQub3BlcmF0b3JPckJpbmFyeShuZXcgdGN1SW50ZXJ2YWwuSW50
ZXJ2YWwoTmFOKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK307CisKKy8qKgorICogVE9E
TzogQ2hlY2sgaWYgdGhpcyBmdW5jdGlvbiB3b3JrcyBwcm9wZXJseQorICogQHBhcmFtIHt0Y3VJ
bnRlcnZhbC5JbnRlcnZhbH0gYXJnMAorICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0g
YXJnMQorICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIG51bWJlcik6IHRjdUludGVydmFsLklu
dGVydmFsfSBib2R5CisgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAqLwordGN1
SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTIgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBib2R5KSB7Cisg
ICAgdmFyIHJldCA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgpOworCisgICAgaWYgKCFhcmcw
LmVtcHR5KCkgJiYgIWFyZzEuZW1wdHkoKSkgeworICAgICAgICB2YXIgbG8wID0gYm9keShhcmcw
LmxvKCksIGFyZzEubG8oKSk7CisgICAgICAgIHZhciBsbzEgPSBib2R5KGFyZzAubG8oKSwgYXJn
MS5oaSgpKTsKKyAgICAgICAgdmFyIGhpMCA9IGJvZHkoYXJnMC5oaSgpLCBhcmcxLmxvKCkpOwor
ICAgICAgICB2YXIgaGkxID0gYm9keShhcmcwLmhpKCksIGFyZzEuaGkoKSk7CisgICAgICAgIHZh
ciBhID0gbG8wLm9wZXJhdG9yT3JCaW5hcnkoaGkwKTsKKyAgICAgICAgdmFyIGIgPSBsbzEub3Bl
cmF0b3JPckJpbmFyeShoaTEpOworICAgICAgICByZXQgPSBhLm9wZXJhdG9yT3JCaW5hcnkoYik7
CisgICAgfQorCisgICAgaWYgKGFyZzAuaGFzTmFOKCkgfHwgYXJnMS5oYXNOYU4oKSkgeworICAg
ICAgICByZXQgPSByZXQub3BlcmF0b3JPckJpbmFyeShuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwo
TmFOKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK307CisKKy8qKgorICogVE9ETzogQ2hl
Y2sgaWYgdGhpcyBmdW5jdGlvbiB3b3JrcyBwcm9wZXJseQorICogQHBhcmFtIHt0Y3VJbnRlcnZh
bC5JbnRlcnZhbH0gYXJnMAorICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gYXJnMQor
ICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gYXJnMgorICogQHBhcmFtIHtmdW5jdGlv
bihudW1iZXIsIG51bWJlciwgbnVtYmVyKTogdGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGJvZHkKKyAq
IEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICovCit0Y3VJbnRlcnZhbC5hcHBseU1v
bm90b25lMyA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIsIGJvZHkpIHsKKyAgICB2YXIgcmV0
ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisKKyAgICBpZiAoIWFyZzAuZW1wdHkoKSAm
JiAhYXJnMS5lbXB0eSgpICYmICFhcmcyLmVtcHR5KCkpIHsKKyAgICAgICAgdmFyIGkwID0gYm9k
eShhcmcwLmxvKCksIGFyZzEubG8oKSwgYXJnMi5sbygpKTsKKyAgICAgICAgdmFyIGkxID0gYm9k
eShhcmcwLmxvKCksIGFyZzEubG8oKSwgYXJnMi5oaSgpKTsKKyAgICAgICAgdmFyIGkyID0gYm9k
eShhcmcwLmxvKCksIGFyZzEuaGkoKSwgYXJnMi5sbygpKTsKKyAgICAgICAgdmFyIGkzID0gYm9k
eShhcmcwLmxvKCksIGFyZzEuaGkoKSwgYXJnMi5oaSgpKTsKKyAgICAgICAgdmFyIGk0ID0gYm9k
eShhcmcwLmhpKCksIGFyZzEubG8oKSwgYXJnMi5sbygpKTsKKyAgICAgICAgdmFyIGk1ID0gYm9k
eShhcmcwLmhpKCksIGFyZzEubG8oKSwgYXJnMi5oaSgpKTsKKyAgICAgICAgdmFyIGk2ID0gYm9k
eShhcmcwLmhpKCksIGFyZzEuaGkoKSwgYXJnMi5sbygpKTsKKyAgICAgICAgdmFyIGk3ID0gYm9k
eShhcmcwLmhpKCksIGFyZzEuaGkoKSwgYXJnMi5oaSgpKTsKKworICAgICAgICB2YXIgbG93ID0g
TWF0aC5taW4oaTAubG8oKSwgaTEubG8oKSwgaTIubG8oKSwgaTMubG8oKSwgaTQubG8oKSwgaTUu
bG8oKSwgaTYubG8oKSwgaTcubG8oKSk7CisgICAgICAgIHZhciBoaWdoID0gTWF0aC5tYXgoaTAu
aGkoKSwgaTEuaGkoKSwgaTIuaGkoKSwgaTMuaGkoKSwgaTQuaGkoKSwgaTUuaGkoKSwgaTYuaGko
KSwgaTcuaGkoKSk7CisgICAgICAgIHZhciBoYXNOYU4gPSBpMC5oYXNOYU4oKSB8fCBpMS5oYXNO
YU4oKSB8fCBpMi5oYXNOYU4oKSB8fCBpMy5oYXNOYU4oKSB8fCBpNC5oYXNOYU4oKSB8fCBpNS5o
YXNOYU4oKSB8fCBpNi5oYXNOYU4oKSB8fCBpNy5oYXNOYU4oKTsKKworICAgICAgICByZXQgPSB0
Y3VJbnRlcnZhbC53aXRoUGFyYW1zKGhhc05hTiwgbG93LCBoaWdoKTsKKyAgICB9CisKKyAgICBp
ZiAoYXJnMC5oYXNOYU4oKSB8fCBhcmcxLmhhc05hTigpIHx8IGFyZzIuaGFzTmFOKCkpIHsKKyAg
ICAgICAgcmV0ID0gcmV0Lm9wZXJhdG9yT3JCaW5hcnkobmV3IHRjdUludGVydmFsLkludGVydmFs
KE5hTikpOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9OworCisvKiogQGNvbnN0ICovIHRj
dUludGVydmFsLlBPU0lUSVZFX0lORklOSVRZID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKElu
ZmluaXR5KTsKKy8qKiBAY29uc3QgKi8gdGN1SW50ZXJ2YWwuTkVHQVRJVkVfSU5GSU5JVFkgPSBu
ZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoLUluZmluaXR5KTsKKy8qKiBAY29uc3QgKi8gdGN1SW50
ZXJ2YWwuWkVSTyA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgwKTsKKy8qKiBAY29uc3QgKi8g
dGN1SW50ZXJ2YWwuTkFOID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKE5hTik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VMb2dJbWFnZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VMb2dJbWFn
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZGFiYzkwNjBiYWFlYmI2N2E0OTMwY2U0YzQyM2RiYjM3MDdhZDI2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdUxvZ0ltYWdlLmpzCkBAIC0wLDAgKzEs
MTYzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dy
YW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRl
KCdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRo
Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciB0Y3VMb2dJbWFnZSA9IGZyYW1l
d29yay5jb21tb24udGN1TG9nSW1hZ2U7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJm
YWNlOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKworLyoq
IEBjb25zdCAqLyB2YXIgTUFYX0lNQUdFX1NJWkVfMkQgPSA0MDk2OworLyoqCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gc3JjCisgKi8KK3RjdUxvZ0ltYWdl
LmNyZWF0ZUltYWdlID0gZnVuY3Rpb24oY3R4LCBzcmMpIHsKKyAgICB2YXIgdyA9IHNyYy5nZXRX
aWR0aCgpOworICAgIHZhciBoID0gc3JjLmdldEhlaWdodCgpOworICAgIHZhciBwaXhlbFNpemUg
PSBzcmMuZ2V0Rm9ybWF0KCkuZ2V0UGl4ZWxTaXplKCk7CisgICAgdmFyIGltZ0RhdGEgPSBjdHgu
Y3JlYXRlSW1hZ2VEYXRhKHcsIGgpOworICAgIHZhciBpbmRleCA9IDA7CisgICAgZm9yICh2YXIg
eSA9IDA7IHkgPCBoOyB5KyspIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3OyB4Kysp
IHsKKyAgICAgICAgICAgIHZhciBwaXhlbCA9IHNyYy5nZXRQaXhlbEludCh4LCBoIC0geSAtIDEs
IDApOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwaXhlbFNpemU7IGkrKykgewor
ICAgICAgICAgICAgICAgIGltZ0RhdGEuZGF0YVtpbmRleF0gPSBwaXhlbFtpXTsKKyAgICAgICAg
ICAgICAgICBpbmRleCA9IGluZGV4ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChwaXhlbFNpemUgPCA0KQorICAgICAgICAgICAgICAgIGltZ0RhdGEuZGF0YVtpbmRleCsrXSA9
IDI1NTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaW1nRGF0YTsKK307CisKKy8qKgor
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGltYWdlCisgKiBA
cGFyYW0ge3N0cmluZ30gaW5mbworICovCit0Y3VMb2dJbWFnZS5sb2dJbWFnZVdpdGhJbmZvID0g
ZnVuY3Rpb24oaW1hZ2UsIGluZm8pIHsKKyAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJyk7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzcGFuJyk7CisgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UuY291bnRlciA9IHRjdUxvZ0ltYWdl
LmxvZ0ltYWdlLmNvdW50ZXIgfHwgMDsKKyAgICB2YXIgaSA9IHRjdUxvZ0ltYWdlLmxvZ0ltYWdl
LmNvdW50ZXIrKzsKKyAgICB2YXIgd2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpOworICAgIHZhciBo
ZWlnaHQgPSBpbWFnZS5nZXRIZWlnaHQoKTsKKworICAgIGVsZW0uYXBwZW5kQ2hpbGQoc3Bhbik7
CisgICAgc3Bhbi5pbm5lckhUTUwgPSBpbmZvICsgJzxicj4gPGNhbnZhcyBpZD0ibG9nSW1hZ2Un
ICsgaSArICciIHdpZHRoPScgKyB3aWR0aCArICcgaGVpZ2h0PScgKyBoZWlnaHQgKyAnPjwvY2Fu
dmFzPjxicj4nOworCisgICAgdmFyIGltYWdlQ2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZ0ltYWdlJyArIGkpOworICAgIHZhciBjdHggPSBpbWFnZUNhbnZhcy5nZXRDb250ZXh0
KCcyZCcpOworICAgIHZhciBkYXRhID0gdGN1TG9nSW1hZ2UuY3JlYXRlSW1hZ2UoY3R4LCBpbWFn
ZSk7CisgICAgY3R4LnB1dEltYWdlRGF0YShkYXRhLCAwLCAwKTsKK307CisKKworLyoqCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj49fSBzY2FsZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0g
YmlhcworICogQHJldHVybiB7c3RyaW5nfSBIVE1MIHN0cmluZyB0byBhZGQgdG8gbG9nLgorICov
Cit0Y3VMb2dJbWFnZS5sb2dTY2FsZUFuZEJpYXMgPSBmdW5jdGlvbihzY2FsZSwgYmlhcykgewor
ICAgIGlmIChzY2FsZSAmJiBiaWFzKQorICAgICAgICByZXR1cm4gJzxicj4gSW1hZ2Ugbm9ybWFs
aXplZCB3aXRoIGZvcm11bGEgcCAqICgnICsgc2NhbGUgKyAnKSArICgnICsgYmlhcyArICcpJzsK
KyAgICBlbHNlIGlmIChzY2FsZSkKKyAgICAgICAgcmV0dXJuICc8YnI+IEltYWdlIG5vcm1hbGl6
ZWQgd2l0aCBmb3JtdWxhIHAgKiAoJyArIHNjYWxlICsgJyknOworICAgIGVsc2UgaWYgKGJpYXMp
CisgICAgICAgIHJldHVybiAnPGJyPiBJbWFnZSBub3JtYWxpemVkIHdpdGggZm9ybXVsYSBwICsg
KCcgKyBiaWFzICsgJyknOworICAgIHJldHVybiAnJzsKK307CisKKy8qKgorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGltYWdlCisgKiBAcGFyYW0ge0FycmF5
PG51bWJlcj49fSBzY2FsZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0gYmlhcworICovCit0
Y3VMb2dJbWFnZS5sb2dJbWFnZVJHQiA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBpbWFn
ZSwgc2NhbGUsIGJpYXMpIHsKKyAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJyk7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFu
Jyk7CisgICAgdmFyIGluZm8gPSBuYW1lICsgJyAnICsgZGVzY3JpcHRpb24gKyAnPGJyPiAnICsg
aW1hZ2U7CisgICAgaWYgKHNjYWxlIHx8IGJpYXMpCisgICAgICAgIGluZm8gKz0gdGN1TG9nSW1h
Z2UubG9nU2NhbGVBbmRCaWFzKHNjYWxlLCBiaWFzKTsKKyAgICB0Y3VMb2dJbWFnZS5sb2dJbWFn
ZVdpdGhJbmZvKGltYWdlLCBpbmZvKTsKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHt0Y3VUZXh0dXJl
LkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICogQHBhcmFtIHtBcnJheTxudW1iZXI+
PX0gcGl4ZWxTY2FsZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0gcGl4ZWxCaWFzCisgKi8K
K3RjdUxvZ0ltYWdlLmxvZ0ltYWdlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGFjY2Vz
cywgcGl4ZWxTY2FsZSwgcGl4ZWxCaWFzKSB7CisgICAgcGl4ZWxTY2FsZSA9IHBpeGVsU2NhbGUg
fHwgWzEsIDEsIDEsIDFdOworICAgIHBpeGVsQmlhcyA9IHBpeGVsQmlhcyB8fCBbMCwgMCwgMCwg
MF07CisgICAgdmFyIGZvcm1hdCA9IGFjY2Vzcy5nZXRGb3JtYXQoKTsKKyAgICB2YXIgd2lkdGgg
PSBhY2Nlc3MuZ2V0V2lkdGgoKTsKKyAgICB2YXIgaGVpZ2h0ID0gYWNjZXNzLmdldEhlaWdodCgp
OworICAgIHZhciBkZXB0aCA9IGFjY2Vzcy5nZXREZXB0aCgpOworICAgIHZhciBuZWVkU2NhbGlu
ZyA9IHBpeGVsQmlhc1swXSAhPSAwIHx8IHBpeGVsQmlhc1sxXSAhPSAwIHx8IHBpeGVsQmlhc1sy
XSAhPSAwIHx8IHBpeGVsQmlhc1szXSAhPSAwIHx8CisgICAgICAgIHBpeGVsU2NhbGVbMF0gIT0g
MSB8fCBwaXhlbFNjYWxlWzFdICE9IDEgfHwgcGl4ZWxTY2FsZVsyXSAhPSAxIHx8IHBpeGVsU2Nh
bGVbM10gIT0gMTsKKworICAgIGlmIChkZXB0aCA9PSAxICYmIGZvcm1hdC50eXBlID09IHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCAmJgorICAgICAgICB3aWR0aCA8PSBNQVhfSU1B
R0VfU0laRV8yRCAmJiBoZWlnaHQgPD0gTUFYX0lNQUdFX1NJWkVfMkQgJiYKKyAgICAgICAgKGZv
cm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IgfHwgdGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuUkdCQSkgJiYKKyAgICAgICAgIW5lZWRTY2FsaW5nKQorICAgICAgICAvLyBG
YXN0LXBhdGguCisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlUkdCKG5hbWUsIGRlc2NyaXB0
aW9uLCBhY2Nlc3MpOworICAgIGVsc2UgaWYgKGRlcHRoID09IDEpIHsKKyAgICAgICAgdmFyIHNh
bXBsZXIgPSBuZXcgdGN1VGV4dHVyZS5TYW1wbGVyKHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBf
VE9fRURHRSwgdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFLCB0Y3VUZXh0dXJlLldy
YXBNb2RlLkNMQU1QX1RPX0VER0UsCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkZpbHRlck1vZGUu
TElORUFSLCB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVCk7CisgICAgICAgIHZhciBsb2dJ
bWFnZVNpemUgPSBbd2lkdGgsIGhlaWdodF07IC8qIFRPRE86IEFkZCBzY2FsaW5nICovCisgICAg
ICAgIHZhciBsb2dJbWFnZUFjY2VzcyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhl
aWdodCkuZ2V0QWNjZXNzKCk7CisKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBsb2dJbWFn
ZUFjY2Vzcy5nZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsg
eCA8IGxvZ0ltYWdlQWNjZXNzLmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgICAgIHZh
ciB5ZiA9ICh5ICsgMC41KSAvIGxvZ0ltYWdlQWNjZXNzLmdldEhlaWdodCgpOworICAgICAgICAg
ICAgICAgIHZhciB4ZiA9ICh4ICsgMC41KSAvIGxvZ0ltYWdlQWNjZXNzLmdldFdpZHRoKCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHMgPSBhY2Nlc3Muc2FtcGxlMkQoc2FtcGxlciwgc2FtcGxlci5t
aW5GaWx0ZXIsIHhmLCB5ZiwgMCk7CisKKyAgICAgICAgICAgICAgICBpZiAobmVlZFNjYWxpbmcp
CisgICAgICAgICAgICAgICAgICAgIHMgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShzLCBw
aXhlbFNjYWxlKSwgcGl4ZWxCaWFzKTsKKworICAgICAgICAgICAgICAgIGxvZ0ltYWdlQWNjZXNz
LnNldFBpeGVsKHMsIHgsIHkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZh
ciBpbmZvID0gbmFtZSArICcgJyArIGRlc2NyaXB0aW9uICsgJzxicj4gJyArIGFjY2VzczsKKyAg
ICAgICAgaWYgKG5lZWRTY2FsaW5nKSB7CisgICAgICAgICAgICBpbmZvICs9IHRjdUxvZ0ltYWdl
LmxvZ1NjYWxlQW5kQmlhcyhwaXhlbFNjYWxlLCBwaXhlbEJpYXMpOworICAgICAgICB9CisKKyAg
ICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2VXaXRoSW5mbyhsb2dJbWFnZUFjY2VzcywgaW5mbyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogVE9ETzogSW1wbGVtZW50ICovCisgICAgfQorfTsK
KworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1TWF0cml4LmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3Rj
dU1hdHJpeC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjk1OWVjZGMyY2UxNmYyOWY1ZDMyZWRlODk3ZTI4Yjk2
Yjg2OWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdU1hdHJpeC5qcwpAQCAtMCww
ICsxLDM1NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisndXNlIHN0cmljdCc7Citnb29nLnByb3Zp
ZGUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisg
ICAgdmFyIHRjdU1hdHJpeCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4OworICAgIHZhciBk
ZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKKyAgICB2YXIgREVfQVNT
RVJUID0gZnVuY3Rpb24oeCkgeworICAgICAgICBpZiAoIXgpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd3MKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gY29scworICAgICAqIEBwYXJhbSB7Kj19IHZhbHVlCisgICAgICogSW5pdGlhbGl6ZSB0
byBpZGVudGl0eS4KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXguTWF0cml4ID0gZnVuY3Rpb24ocm93
cywgY29scywgdmFsdWUpIHsKKyAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PSB1bmRlZmluZWQgPyAx
IDogdmFsdWU7CisgICAgICAgIHRoaXMucm93cyA9IHJvd3M7CisgICAgICAgIHRoaXMuY29scyA9
IGNvbHM7CisgICAgICAgIHRoaXMubWF0cml4ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY29sczsgaSsrKQorICAgICAgICAgICAgdGhpcy5tYXRyaXhbaV0gPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgcm93czsgcm93KyspCisgICAgICAgICAgICBmb3Ig
KHZhciBjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykKKyAgICAgICAgICAgICAgICB0aGlzLnNl
dChyb3csIGNvbCwgKHJvdyA9PSBjb2wpID8gdmFsdWUgOiAwKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29s
cworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmVjdG9yCisgICAgICogQHJldHVybiB7
dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXgubWF0cml4RnJvbVZlY3Rv
ciA9IGZ1bmN0aW9uKHJvd3MsIGNvbHMsIHZlY3RvcikgeworICAgICAgICB2YXIgbWF0cml4ID0g
bmV3IHRjdU1hdHJpeC5NYXRyaXgocm93cywgY29scyk7CisgICAgICAgIGZvciAodmFyIHJvdyA9
IDA7IHJvdyA8IHZlY3Rvci5sZW5ndGg7IHJvdysrKQorICAgICAgICAgICAgZm9yICh2YXIgY29s
ID0gMDsgY29sIDwgdmVjdG9yLmxlbmd0aDsgY29sKyspCisgICAgICAgICAgICAgICAgbWF0cml4
Lm1hdHJpeFtjb2xdW3Jvd10gPSByb3cgPT0gY29sID8gdmVjdG9yW3Jvd10gOiAwOworICAgICAg
ICByZXR1cm4gbWF0cml4OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gcm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2xzCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBzcmMKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQorICAgICAq
LworICAgIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5ID0gZnVuY3Rpb24ocm93cywgY29s
cywgc3JjKSB7CisgICAgICAgIHZhciBtYXRyaXggPSBuZXcgdGN1TWF0cml4Lk1hdHJpeChyb3dz
LCBjb2xzKTsKKyAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgcm93czsgcm93KyspIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IGNvbHM7IGNvbCsrKSB7CisgICAg
ICAgICAgICAgICAgbWF0cml4Lm1hdHJpeFtjb2xdW3Jvd10gPSBzcmNbcm93ICogY29scyArIGNv
bF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1hdHJpeDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogRmlsbCB0aGUgTWF0cml4IHdpdGggZGF0YSBmcm9tIGFy
cmF5CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
Y29scworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYXJyYXkKKyAgICAgKiBAcmV0dXJu
IHt0Y3VNYXRyaXguTWF0cml4fQorICAgICAqLworICAgIHRjdU1hdHJpeC5tYXRyaXhGcm9tQXJy
YXkgPSBmdW5jdGlvbihyb3dzLCBjb2xzLCBhcnJheSkgeworICAgICAgICBERV9BU1NFUlQoYXJy
YXkubGVuZ3RoID09PSByb3dzICogY29scyk7CisgICAgICAgIHZhciBtYXRyaXggPSBuZXcgdGN1
TWF0cml4Lk1hdHJpeChyb3dzLCBjb2xzKTsKKyAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93
IDwgcm93czsgcm93KyspCisgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBjb2xz
OyBjb2wrKykKKyAgICAgICAgICAgICAgICBtYXRyaXgubWF0cml4W2NvbF1bcm93XSA9IGFycmF5
W3JvdyAqIGNvbHMgKyBjb2xdOworICAgICAgICByZXR1cm4gbWF0cml4OworICAgIH07CisKKyAg
ICB0Y3VNYXRyaXguTWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbih4LCB5LCB2YWx1ZSkg
eworICAgICAgICB0aGlzLmlzUmFuZ2VWYWxpZCh4LCB5KTsKKyAgICAgICAgdGhpcy5tYXRyaXhb
eV1beF0gPSB2YWx1ZTsKKyAgICB9OworCisgICAgdGN1TWF0cml4Lk1hdHJpeC5wcm90b3R5cGUu
c2V0Um93ID0gZnVuY3Rpb24ocm93LCB2YWx1ZXMpIHsKKyAgICAgICAgaWYgKCFkZU1hdGguZGVJ
bkJvdW5kczMyKHJvdywgMCwgdGhpcy5yb3dzKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignUm93cyBvdXQgb2YgcmFuZ2UnKTsKKyAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiB0aGlz
LmNvbHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBtYW55IGNvbHVtbnMnKTsK
KyAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgdmFsdWVzLmxlbmd0aDsgY29sKyspCisg
ICAgICAgICAgICB0aGlzLm1hdHJpeFtjb2xdW3Jvd10gPSB2YWx1ZXNbY29sXTsKKyAgICB9Owor
CisgICAgdGN1TWF0cml4Lk1hdHJpeC5wcm90b3R5cGUuc2V0Q29sID0gZnVuY3Rpb24oY29sLCB2
YWx1ZXMpIHsKKyAgICAgICAgaWYgKCFkZU1hdGguZGVJbkJvdW5kczMyKGNvbCwgMCwgdGhpcy5j
b2xzKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBvdXQgb2YgcmFuZ2Un
KTsKKyAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiB0aGlzLnJvd3MpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ1RvbyBtYW55IHJvd3MnKTsKKyAgICAgICAgZm9yICh2YXIgcm93ID0g
MDsgcm93IDwgdmFsdWVzLmxlbmd0aDsgcm93KyspCisgICAgICAgICAgICB0aGlzLm1hdHJpeFtj
b2xdW3Jvd10gPSB2YWx1ZXNbcm93XTsKKyAgICB9OworCisgICAgdGN1TWF0cml4Lk1hdHJpeC5w
cm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICB0aGlzLmlzUmFuZ2VWYWxp
ZCh4LCB5KTsKKyAgICAgICAgcmV0dXJuIHRoaXMubWF0cml4W3ldW3hdOworICAgIH07CisKKyAg
ICB0Y3VNYXRyaXguTWF0cml4LnByb3RvdHlwZS5nZXRDb2x1bW4gPSBmdW5jdGlvbih5KSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLm1hdHJpeFt5XTsKKyAgICB9OworCisgICAgdGN1TWF0cml4Lk1h
dHJpeC5wcm90b3R5cGUuaXNSYW5nZVZhbGlkID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICBp
ZiAoIWRlTWF0aC5kZUluQm91bmRzMzIoeCwgMCwgdGhpcy5yb3dzKSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignUm93cyBvdXQgb2YgcmFuZ2UnKTsKKyAgICAgICAgaWYgKCFkZU1hdGgu
ZGVJbkJvdW5kczMyKHksIDAsIHRoaXMuY29scykpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0NvbHVtbnMgb3V0IG9mIHJhbmdlJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgdGN1TWF0cml4Lk1hdHJpeC5wcm90
b3R5cGUuZ2V0Q29sdW1uTWFqb3JEYXRhID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGEgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgY29sID0g
MDsgY29sIDwgdGhpcy5jb2xzOyBjb2wrKykKKyAgICAgICAgICAgIGZvciAodmFyIHJvdyA9IDA7
IHJvdyA8IHRoaXMucm93czsgcm93KyspCisgICAgICAgICAgICAgICAgYS5wdXNoKHRoaXMuZ2V0
KHJvdywgY29sKSk7CisgICAgICAgIHJldHVybiBhOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG1hdHJpeEEKKyAgICAgKiBAcGFyYW0ge3RjdU1h
dHJpeC5NYXRyaXh9IG1hdHJpeEIKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQor
ICAgICAqLworICAgIHRjdU1hdHJpeC5hZGQgPSBmdW5jdGlvbihtYXRyaXhBLCBtYXRyaXhCKSB7
CisgICAgICAgIHZhciByZXMgPSBuZXcgdGN1TWF0cml4Lk1hdHJpeChtYXRyaXhBLnJvd3MsIG1h
dHJpeEIuY29scyk7CisgICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG1hdHJpeEEuY29s
czsgY29sKyspCisgICAgICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBtYXRyaXhBLnJv
d3M7IHJvdysrKQorICAgICAgICAgICAgICAgIHJlcy5zZXQocm93LCBjb2wsIG1hdHJpeEEuZ2V0
KHJvdywgY29sKSArIG1hdHJpeEIuZ2V0KHJvdywgY29sKSk7CisgICAgICAgIHJldHVybiByZXM7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1TWF0cml4Lk1hdHJpeH0gbWF0
cml4QQorICAgICAqIEBwYXJhbSB7dGN1TWF0cml4Lk1hdHJpeH0gbWF0cml4QgorICAgICAqIEBy
ZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgdGN1TWF0cml4LnN1YnRyYWN0
ID0gZnVuY3Rpb24obWF0cml4QSwgbWF0cml4QikgeworICAgICAgICB2YXIgcmVzID0gbmV3IHRj
dU1hdHJpeC5NYXRyaXgobWF0cml4QS5yb3dzLCBtYXRyaXhCLmNvbHMpOworICAgICAgICBmb3Ig
KHZhciBjb2wgPSAwOyBjb2wgPCBtYXRyaXhBLmNvbHM7IGNvbCsrKQorICAgICAgICAgICAgZm9y
ICh2YXIgcm93ID0gMDsgcm93IDwgbWF0cml4QS5yb3dzOyByb3crKykKKyAgICAgICAgICAgICAg
ICByZXMuc2V0KHJvdywgY29sLCBtYXRyaXhBLmdldChyb3csIGNvbCkgLSBtYXRyaXhCLmdldChy
b3csIGNvbCkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG1hdHJpeEEKKyAgICAgKiBAcGFyYW0ge3RjdU1h
dHJpeC5NYXRyaXh9IG1hdHJpeEIKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQor
ICAgICAqIE11bHRpcGxpY2F0aW9uIG9mIHR3byBtYXRyaWNlcy4KKyAgICAgKi8KKyAgICB0Y3VN
YXRyaXgubXVsdGlwbHkgPSBmdW5jdGlvbihtYXRyaXhBLCBtYXRyaXhCKSB7CisgICAgICAgIGlm
IChtYXRyaXhBLmNvbHMgIT0gbWF0cml4Qi5yb3dzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdXcm9uZyBtYXRyaWNlcyBzaXplcycpOworICAgICAgICB2YXIgcmVzID0gbmV3IHRjdU1h
dHJpeC5NYXRyaXgobWF0cml4QS5yb3dzLCBtYXRyaXhCLmNvbHMpOworICAgICAgICBmb3IgKHZh
ciByb3cgPSAwOyByb3cgPCBtYXRyaXhBLnJvd3M7IHJvdysrKQorICAgICAgICAgICAgZm9yICh2
YXIgY29sID0gMDsgY29sIDwgbWF0cml4Qi5jb2xzOyBjb2wrKykgeworICAgICAgICAgICAgICAg
IHZhciB2ID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBtYXRy
aXhBLmNvbHM7IG5keCsrKQorICAgICAgICAgICAgICAgICAgICB2ICs9IG1hdHJpeEEuZ2V0KHJv
dywgbmR4KSAqIG1hdHJpeEIuZ2V0KG5keCwgY29sKTsKKyAgICAgICAgICAgICAgICByZXMuc2V0
KHJvdywgY29sLCB2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSBtYXRyaXhBCisg
ICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSBtYXRyaXhCCisgICAgICogQHJldHVybiB7
dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXguZGl2aWRlID0gZnVuY3Rp
b24obWF0cml4QSwgbWF0cml4QikgeworICAgICAgICB2YXIgcmVzID0gbmV3IHRjdU1hdHJpeC5N
YXRyaXgobWF0cml4QS5yb3dzLCBtYXRyaXhBLmNvbHMpOworICAgICAgICBmb3IgKHZhciBjb2wg
PSAwOyBjb2wgPCBtYXRyaXhBLmNvbHM7IGNvbCsrKQorICAgICAgICAgICAgZm9yICh2YXIgcm93
ID0gMDsgcm93IDwgbWF0cml4QS5yb3dzOyByb3crKykKKyAgICAgICAgICAgICAgICByZXMuc2V0
KHJvdywgY29sLCBtYXRyaXhBLmdldChyb3csIGNvbCkgLyBtYXRyaXhCLmdldChyb3csIGNvbCkp
OworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3RjdU1hdHJpeC5NYXRyaXh9IG10eAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmVj
CisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXgu
bXVsdGlwbHlNYXRWZWMgPSBmdW5jdGlvbihtdHgsIHZlYykgeworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciByZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB2YWx1ZTsKKyAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbXR4LnJv
d3M7IHJvdysrKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICBmb3IgKHZh
ciBjb2wgPSAwOyBjb2wgPCBtdHguY29sczsgY29sKyspCisgICAgICAgICAgICAgICAgdmFsdWUg
Kz0gbXR4LmdldChyb3csIGNvbCkgKiB2ZWNbY29sXTsKKyAgICAgICAgICAgIHJlc1tyb3ddID0g
dmFsdWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZlYworICAgICAqIEBwYXJhbSB7dGN1
TWF0cml4Lk1hdHJpeH0gbXR4CisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAg
Ki8KKyAgICB0Y3VNYXRyaXgubXVsdGlwbHlWZWNNYXQgPSBmdW5jdGlvbih2ZWMsIG10eCkgewor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciByZXMgPSBbXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2YWx1ZTsKKyAgICAgICAgZm9yICh2YXIgY29s
ID0gMDsgY29sIDwgbXR4LmNvbHM7IGNvbCsrKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDA7Cisg
ICAgICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBtdHgucm93czsgcm93KyspCisgICAg
ICAgICAgICAgICAgdmFsdWUgKz0gbXR4LmdldChyb3csIGNvbCkgKiB2ZWNbcm93XTsKKyAgICAg
ICAgICAgIHJlc1tjb2xdID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVz
OworICAgIH07CisKKyAgICB0Y3VNYXRyaXguTWF0cml4LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgc3RyID0gJ21hdCcgKyB0aGlzLmNvbHM7CisgICAgICAg
IGlmICh0aGlzLnJvd3MgIT09IHRoaXMuY29scykKKyAgICAgICAgICAgIHN0ciArPSAneCcgKyB0
aGlzLnJvd3M7CisgICAgICAgIHN0ciArPSAnKCc7CisgICAgICAgIGZvciAodmFyIGNvbCA9IDA7
IGNvbCA8IHRoaXMuY29sczsgY29sKyspIHsKKyAgICAgICAgICAgIHN0ciArPSAnWyc7CisgICAg
ICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7CisgICAg
ICAgICAgICAgICAgc3RyICs9IHRoaXMubWF0cml4W2NvbF1bcm93XTsKKyAgICAgICAgICAgICAg
ICBpZiAocm93ICE9IHRoaXMucm93cyAtIDEpCisgICAgICAgICAgICAgICAgICAgIHN0ciArPSAn
LCAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RyICs9ICddJzsKKworICAgICAgICAg
ICAgaWYgKGNvbCAhPSB0aGlzLmNvbHMgLSAxKQorICAgICAgICAgICAgICAgIHN0ciArPSAnLCAn
OworICAgICAgICB9CisgICAgICAgIHN0ciArPSAnKSc7CisgICAgICAgIHJldHVybiBzdHI7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1TWF0cml4Lk1hdHJpeH0gbXR4Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHNjYWxhcgorICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5N
YXRyaXh9CisgICAgICovCisgICAgdGN1TWF0cml4LnN1YnRyYWN0TWF0U2NhbCA9IGZ1bmN0aW9u
KG10eCwgc2NhbGFyKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8g
dmFyIHJlcyA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KG10eC5yb3dzLCBtdHguY29scyk7CisgICAg
ICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG10eC5jb2xzOyBjb2wrKykKKyAgICAgICAgICAg
IGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG10eC5yb3dzOyByb3crKykKKyAgICAgICAgICAgICAg
ICByZXMuc2V0KHJvdywgY29sLCBtdHguZ2V0KHJvdywgY29sKSAtIHNjYWxhcik7CisKKyAgICAg
ICAgcmV0dXJuIHJlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRy
aXguTWF0cml4fSBtdHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2NhbGFyCisgICAgICogQHJl
dHVybiB7dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXguYWRkTWF0U2Nh
bCA9IGZ1bmN0aW9uKG10eCwgc2NhbGFyKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1TWF0cml4
Lk1hdHJpeH0gKi8gdmFyIHJlcyA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KG10eC5yb3dzLCBtdHgu
Y29scyk7CisgICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG10eC5jb2xzOyBjb2wrKykK
KyAgICAgICAgICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG10eC5yb3dzOyByb3crKykKKyAg
ICAgICAgICAgICAgICByZXMuc2V0KHJvdywgY29sLCBtdHguZ2V0KHJvdywgY29sKSArIHNjYWxh
cik7CisKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHt0Y3VNYXRyaXguTWF0cml4fSBtdHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2NhbGFy
CisgICAgICogQHJldHVybiB7dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICB0Y3VNYXRy
aXgubXVsdGlwbHlNYXRTY2FsID0gZnVuY3Rpb24obXR4LCBzY2FsYXIpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgcmVzID0gbmV3IHRjdU1hdHJpeC5NYXRy
aXgobXR4LnJvd3MsIG10eC5jb2xzKTsKKyAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwg
bXR4LmNvbHM7IGNvbCsrKQorICAgICAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbXR4
LnJvd3M7IHJvdysrKQorICAgICAgICAgICAgICAgIHJlcy5zZXQocm93LCBjb2wsIG10eC5nZXQo
cm93LCBjb2wpICogc2NhbGFyKTsKKworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG10eAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBzY2FsYXIKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQorICAg
ICAqLworICAgIHRjdU1hdHJpeC5kaXZpZGVNYXRTY2FsID0gZnVuY3Rpb24obXR4LCBzY2FsYXIp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgcmVzID0gbmV3
IHRjdU1hdHJpeC5NYXRyaXgobXR4LnJvd3MsIG10eC5jb2xzKTsKKyAgICAgICAgZm9yICh2YXIg
Y29sID0gMDsgY29sIDwgbXR4LmNvbHM7IGNvbCsrKQorICAgICAgICAgICAgZm9yICh2YXIgcm93
ID0gMDsgcm93IDwgbXR4LnJvd3M7IHJvdysrKQorICAgICAgICAgICAgICAgIHJlcy5zZXQocm93
LCBjb2wsIG10eC5nZXQocm93LCBjb2wpIC8gc2NhbGFyKTsKKworICAgICAgICByZXR1cm4gcmVz
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXguTWF0MiA9IGZ1bmN0
aW9uKCkgeworICAgICAgICB0Y3VNYXRyaXguTWF0cml4LmNhbGwodGhpcywgMiwgMik7CisgICAg
fTsKKworICAgIHRjdU1hdHJpeC5NYXQyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1TWF0
cml4Lk1hdHJpeC5wcm90b3R5cGUpOworICAgIHRjdU1hdHJpeC5NYXQyLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IHRjdU1hdHJpeC5NYXQyOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgdGN1TWF0
cml4Lk1hdDMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1TWF0cml4Lk1hdHJpeC5jYWxsKHRo
aXMsIDMsIDMpOworICAgIH07CisKKyAgICB0Y3VNYXRyaXguTWF0My5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKHRjdU1hdHJpeC5NYXRyaXgucHJvdG90eXBlKTsKKyAgICB0Y3VNYXRyaXguTWF0
My5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0Y3VNYXRyaXguTWF0MzsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VNYXRyaXguTWF0cml4fQorICAg
ICAqLworICAgIHRjdU1hdHJpeC5NYXQ0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdU1hdHJp
eC5NYXRyaXguY2FsbCh0aGlzLCA0LCA0KTsKKyAgICB9OworCisgICAgdGN1TWF0cml4Lk1hdDQu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VNYXRyaXguTWF0cml4LnByb3RvdHlwZSk7Cisg
ICAgdGN1TWF0cml4Lk1hdDQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdGN1TWF0cml4Lk1hdDQ7
CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdU1hdHJpeFV0aWwuanMgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21t
b24vdGN1TWF0cml4VXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2RjYWJhODcxYTMxMmZhZDM4ZmQ4OTI2
YmZjNmYwNjI3MzRlMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdU1hdHJpeFV0
aWwuanMKQEAgLTAsMCArMSw3MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVu
dHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisndXNlIHN0cmljdCc7
Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4VXRpbCcpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCcpOworCitnb29nLnNjb3BlKGZ1bmN0
aW9uKCkgeworCisgICAgdmFyIHRjdU1hdHJpeFV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdU1h
dHJpeFV0aWw7CisgICAgdmFyIHRjdU1hdHJpeCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0cmFuc2xhdGlvbgor
ICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgdGN1TWF0cml4
VXRpbC50cmFuc2xhdGlvbk1hdHJpeCA9IGZ1bmN0aW9uKHRyYW5zbGF0aW9uKSB7CisgICAgICAg
IHZhciBsZW4gPSB0cmFuc2xhdGlvbi5sZW5ndGg7CisgICAgICAgIHZhciByZXMgPSBuZXcgdGN1
TWF0cml4Lk1hdHJpeChsZW4gKyAxLCBsZW4gKyAxKTsKKyAgICAgICAgZm9yICh2YXIgcm93ID0g
MDsgcm93IDwgbGVuOyByb3crKykKKyAgICAgICAgICAgIHJlcy5zZXQocm93LCBsZW4sIHRyYW5z
bGF0aW9uW3Jvd10pOworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBGbGF0dGVuIGFuIGFycmF5IG9mIGFycmF5cyBvciBtYXRyaWNlcworICAgICAqIEBwYXJh
bSB7KEFycmF5PEFycmF5PG51bWJlcj4+IHwgQXJyYXk8dGN1TWF0cml4Lk1hdHJpeD4pfSBhCisg
ICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICB0Y3VNYXRyaXhVdGls
LmZsYXR0ZW4gPSBmdW5jdGlvbihhKSB7CisgICAgICAgIGlmIChhWzBdIGluc3RhbmNlb2YgQXJy
YXkpIHsKKyAgICAgICAgICAgIHZhciBtZXJnZWQgPSBbXTsKKyAgICAgICAgICAgIHJldHVybiBt
ZXJnZWQuY29uY2F0LmFwcGx5KG1lcmdlZCwgYSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YVswXSBpbnN0YW5jZW9mIHRjdU1hdHJpeC5NYXRyaXgpIHsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8gdmFyIG0gPSBhWzBdOworICAgICAgICAgICAgdmFyIHJv
d3MgPSBtLnJvd3M7CisgICAgICAgICAgICB2YXIgY29scyA9IG0uY29sczsKKyAgICAgICAgICAg
IHZhciBzaXplID0gYS5sZW5ndGg7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAg
ICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnB1c2goYVtpXS5nZXRDb2x1bW4oY29sKSk7CisgICAgICAgICAgICByZXR1cm4gW10u
Y29uY2F0LmFwcGx5KFtdLCByZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVv
ZihhWzBdKSA9PT0gJ251bWJlcicpCisgICAgICAgICAgICByZXR1cm4gYTsKKworICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQnKTsKKyAgICB9OworCit9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL2NvbW1vbi90Y3VQaXhlbEZvcm1hdC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VQaXhlbEZvcm1h
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYWYzMjk3YTkzNDFjMjdlNGFiY2NmOWQzNjE1MmEzZGI4OTM3Nzgz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVBpeGVsRm9ybWF0LmpzCkBAIC0wLDAg
KzEsNzkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJv
Z3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3Zp
ZGUoJ2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKKwordmFyIHRjdVBpeGVsRm9ybWF0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhl
bEZvcm1hdDsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyPX0gcgor
ICogQHBhcmFtIHtudW1iZXI9fSBnCisgKiBAcGFyYW0ge251bWJlcj19IGIKKyAqIEBwYXJhbSB7
bnVtYmVyPX0gYQorICovCit0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdCA9IGZ1bmN0aW9uKHIs
IGcsIGIsIGEpIHsKKyAgICB0aGlzLnJlZEJpdHMgPSByIHx8IDA7CisgICAgdGhpcy5ncmVlbkJp
dHMgPSBnIHx8IDA7CisgICAgdGhpcy5ibHVlQml0cyA9IGIgfHwgMDsKKyAgICB0aGlzLmFscGhh
Qml0cyA9IGEgfHwgMDsKK307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250
ZXh0fSBjb250ZXh0CisgKiBAcmV0dXJuIHt0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdH0KKyAq
LwordGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dCA9IGZ1bmN0aW9uKGNvbnRl
eHQpIHsKKyAgICB2YXIgciA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY29udGV4dC5nZXRQYXJh
bWV0ZXIoZ2wuUkVEX0JJVFMpKTsKKyAgICB2YXIgZyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAo
Y29udGV4dC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykpOworICAgIHZhciBiID0gLyoqIEB0
eXBlIHtudW1iZXJ9ICovIChjb250ZXh0LmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpKTsKKyAg
ICB2YXIgYSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoZ2wu
QUxQSEFfQklUUykpOworCisgICAgcmV0dXJuIG5ldyB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1h
dChyLCBnLCBiLCBhKTsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHIKKyAqIEBwYXJh
bSB7bnVtYmVyfSBnCisgKiBAcGFyYW0ge251bWJlcn0gYgorICogQHBhcmFtIHtudW1iZXJ9IGEK
KyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK3RjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0LnBy
b3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbihyLCBnLCBiLCBhKSB7CisgICAgcmV0dXJuIHRoaXMu
cmVkQml0cyA9PT0gciAmJgorICAgICAgICAgICAgdGhpcy5ncmVlbkJpdHMgPT09IGcgJiYKKyAg
ICAgICAgICAgIHRoaXMuYmx1ZUJpdHMgPT09IGIgJiYKKyAgICAgICAgICAgIHRoaXMuYWxwaGFC
aXRzID09PSBhOworfTsKKworLyoqCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICovCit0
Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdC5wcm90b3R5cGUuZ2V0Q29sb3JUaHJlc2hvbGQgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gWzEgPDwgKDggLSB0aGlzLnJlZEJpdHMpLAorICAgICAg
ICAgICAgMSA8PCAoOCAtIHRoaXMuZ3JlZW5CaXRzKSwKKyAgICAgICAgICAgIDEgPDwgKDggLSB0
aGlzLmJsdWVCaXRzKSwKKyAgICAgICAgICAgICh0aGlzLmFscGhhQml0cyA+IDApID8gKDEgPDwg
KDggLSB0aGlzLmFscGhhQml0cykpIDogMF07Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VSR0JBLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVJHQkEuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJhYjg0
MWQxYmE1YzNiMjg3OTA2MzM4MDhlNTM5NjQyMGI3NTMxOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VSR0JBLmpzCkBAIC0wLDAgKzEsMjc5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog
Q29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7CisKK2dv
b2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VSR0JBOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKwor
ICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBjbGFzcyB0Y3VSR0JBLlJHQkEKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAc3RydWN0CisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5PX0gdmFsdWUKKyAgICAg
Ki8KKyAgICB0Y3VSR0JBLlJHQkEgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAvKiogQHR5
cGUge2dvb2cuTnVtYmVyQXJyYXl9ICovIHRoaXMubV92YWx1ZSA9IHZhbHVlIHx8IG51bGw7CisK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKiBJbiBKUywgdGhlc2UgYXJl
IG5vdCBzaGlmdCB2YWx1ZXMsIGJ1dCBwb3NpdGlvbnMgaW4gYSB0eXBlZCBhcnJheQorICAgICAq
LworICAgIHRjdVJHQkEuUkdCQS5TaGlmdCA9IHsKKyAgICAgICAgUkVEOiAwLAorICAgICAgICBH
UkVFTjogMSwKKyAgICAgICAgQkxVRTogMiwKKyAgICAgICAgQUxQSEE6IDMKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKiBNYXNrIHVzZWQgYXMgZmxhZ3MKKyAgICAgKiBI
b3BlZnVsbHkgd2lsbCBub3QgdXNlIHR5cGVkIGFycmF5cworICAgICAqLworICAgIHRjdVJHQkEu
UkdCQS5NYXNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBS
RUQ6IGZhbHNlLAorICAgICAgICAgICAgR1JFRU46IGZhbHNlLAorICAgICAgICAgICAgQkxVRTog
ZmFsc2UsCisgICAgICAgICAgICBBTFBIQTogZmFsc2UKKyAgICAgICAgfTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQnVpbGRzIGFuIHRjdVJHQkEuUkdCQSBvYmplY3QgZnJvbSBjb2xvciBj
b21wb25lbnRzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHIKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gZworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGEK
KyAgICAgKiBAcmV0dXJuIHt0Y3VSR0JBLlJHQkF9CisgICAgICovCisgICAgdGN1UkdCQS5uZXdS
R0JBQ29tcG9uZW50cyA9IGZ1bmN0aW9uKHIsIGcsIGIsIGEpIHsKKyAgICAgICAgREVfQVNTRVJU
KGRlTWF0aC5kZUluUmFuZ2UzMihyLCAwLCAyNTUpKTsKKyAgICAgICAgREVfQVNTRVJUKGRlTWF0
aC5kZUluUmFuZ2UzMihnLCAwLCAyNTUpKTsKKyAgICAgICAgREVfQVNTRVJUKGRlTWF0aC5kZUlu
UmFuZ2UzMihiLCAwLCAyNTUpKTsKKyAgICAgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluUmFuZ2Uz
MihhLCAwLCAyNTUpKTsKKworICAgICAgICByZXR1cm4gbmV3IHRjdVJHQkEuUkdCQShbciwgZywg
YiwgYV0pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBCdWlsZHMgYW4gdGN1UkdCQS5SR0JB
IG9iamVjdCBmcm9tIGEgbnVtYmVyIGFycmF5CisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFy
cmF5fSB2CisgICAgICogQHJldHVybiB7dGN1UkdCQS5SR0JBfQorICAgICAqLworICAgIHRjdVJH
QkEubmV3UkdCQUZyb21BcnJheSA9IGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgcmV0dXJuIG5ldyB0
Y3VSR0JBLlJHQkEodi5zbGljZSgwLCA0KSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqIEByZXR1cm4ge3RjdVJHQkEuUkdCQX0KKyAgICAg
Ki8KKyAgICB0Y3VSR0JBLm5ld1JHQkFGcm9tVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAg
ICAgICB2YXIgcmdiYSA9IG5ldyB0Y3VSR0JBLlJHQkEoKTsKKyAgICAgICAgdmFyIGFycmF5MzIg
PSBuZXcgVWludDMyQXJyYXkoW3ZhbHVlXSk7CisgICAgICAgIHJnYmEubV92YWx1ZSA9IChuZXcg
VWludDhBcnJheShhcnJheTMyLmJ1ZmZlcikpOworICAgICAgICByZXR1cm4gcmdiYTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2CisgICAgICogQHJl
dHVybiB7dGN1UkdCQS5SR0JBfQorICAgICAqLworICAgIHRjdVJHQkEubmV3UkdCQUZyb21WZWMg
PSBmdW5jdGlvbiAodikgeworICAgICAgICB2YXIgciA9IGRlTWF0aC5jbGFtcCh2WzBdICogMjU1
LjAsIDAsIDI1NSk7CisgICAgICAgIHZhciBnID0gZGVNYXRoLmNsYW1wKHZbMV0gKiAyNTUuMCwg
MCwgMjU1KTsKKyAgICAgICAgdmFyIGIgPSBkZU1hdGguY2xhbXAodlsyXSAqIDI1NS4wLCAwLCAy
NTUpOworICAgICAgICB2YXIgYSA9IGRlTWF0aC5jbGFtcCh2WzNdICogMjU1LjAsIDAsIDI1NSk7
CisKKyAgICAgICAgcmV0dXJuIG5ldyB0Y3VSR0JBLlJHQkEoW3IsIGcsIGIsIGFdKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHYKKyAgICAgKi8KKyAgICB0Y3VS
R0JBLlJHQkEucHJvdG90eXBlLnNldFJlZCA9IGZ1bmN0aW9uKHYpIHsgREVfQVNTRVJUKGRlTWF0
aC5kZUluUmFuZ2UzMih2LCAwLCAyNTUpKTsgdGhpcy5tX3ZhbHVlW3RjdVJHQkEuUkdCQS5TaGlm
dC5SRURdID0gdjsgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2CisgICAg
ICovCisgICAgdGN1UkdCQS5SR0JBLnByb3RvdHlwZS5zZXRHcmVlbiA9IGZ1bmN0aW9uKHYpIHsg
REVfQVNTRVJUKGRlTWF0aC5kZUluUmFuZ2UzMih2LCAwLCAyNTUpKTsgdGhpcy5tX3ZhbHVlW3Rj
dVJHQkEuUkdCQS5TaGlmdC5HUkVFTl0gPSB2OyB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHYKKyAgICAgKi8KKyAgICB0Y3VSR0JBLlJHQkEucHJvdG90eXBlLnNldEJsdWUg
PSBmdW5jdGlvbih2KSB7IERFX0FTU0VSVChkZU1hdGguZGVJblJhbmdlMzIodiwgMCwgMjU1KSk7
IHRoaXMubV92YWx1ZVt0Y3VSR0JBLlJHQkEuU2hpZnQuQkxVRV0gPSB2OyB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHYKKyAgICAgKi8KKyAgICB0Y3VSR0JBLlJHQkEucHJv
dG90eXBlLnNldEFscGhhID0gZnVuY3Rpb24odikgeyBERV9BU1NFUlQoZGVNYXRoLmRlSW5SYW5n
ZTMyKHYsIDAsIDI1NSkpOyB0aGlzLm1fdmFsdWVbdGN1UkdCQS5SR0JBLlNoaWZ0LkFMUEhBXSA9
IHY7IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
dGN1UkdCQS5SR0JBLnByb3RvdHlwZS5nZXRSZWQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu
bV92YWx1ZVt0Y3VSR0JBLlJHQkEuU2hpZnQuUkVEXTsgfTsKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VSR0JBLlJHQkEucHJvdG90eXBlLmdldEdy
ZWVuID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fdmFsdWVbdGN1UkdCQS5SR0JBLlNoaWZ0
LkdSRUVOXTsgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8K
KyAgICB0Y3VSR0JBLlJHQkEucHJvdG90eXBlLmdldEJsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXMubV92YWx1ZVt0Y3VSR0JBLlJHQkEuU2hpZnQuQkxVRV07IH07CisKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1UkdCQS5SR0JBLnByb3RvdHlw
ZS5nZXRBbHBoYSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX3ZhbHVlW3RjdVJHQkEuUkdC
QS5TaGlmdC5BTFBIQV07IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdC
QX0gdGhyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VSR0JBLlJH
QkEucHJvdG90eXBlLmlzQmVsb3dUaHJlc2hvbGQgPSBmdW5jdGlvbih0aHIpIHsgcmV0dXJuICh0
aGlzLmdldFJlZCgpIDw9IHRoci5nZXRSZWQoKSkgJiYgKHRoaXMuZ2V0R3JlZW4oKSA8PSB0aHIu
Z2V0R3JlZW4oKSkgJiYgKHRoaXMuZ2V0Qmx1ZSgpIDw9IHRoci5nZXRCbHVlKCkpICYmICh0aGlz
LmdldEFscGhhKCkgPD0gdGhyLmdldEFscGhhKCkpOyB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtVaW50OEFycmF5fSBieXRlcworICAgICAqIEByZXR1cm4ge3RjdVJHQkEuUkdCQX0KKyAg
ICAgKi8KKyAgICB0Y3VSR0JBLlJHQkEuZnJvbUJ5dGVzID0gZnVuY3Rpb24oYnl0ZXMpIHsgcmV0
dXJuIHRjdVJHQkEubmV3UkdCQUZyb21BcnJheShieXRlcyk7IH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzCisgICAgICovCisgICAgdGN1UkdCQS5SR0JBLnBy
b3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24oYnl0ZXMpIHsgdmFyIHJlc3VsdCA9IG5ldyBVaW50
OEFycmF5KHRoaXMubV92YWx1ZSk7IGJ5dGVzWzBdID0gcmVzdWx0WzBdOyBieXRlc1sxXSA9IHJl
c3VsdFsxXTsgYnl0ZXNbMl0gPSByZXN1bHRbMl07IGJ5dGVzWzNdID0gcmVzdWx0WzNdOyB9Owor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICB0
Y3VSR0JBLlJHQkEucHJvdG90eXBlLnRvVmVjID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biBbCisgICAgICAgICAgICB0aGlzLmdldFJlZCgpIC8gMjU1LjAsCisgICAgICAgICAgICB0aGlz
LmdldEdyZWVuKCkgLyAyNTUuMCwKKyAgICAgICAgICAgIHRoaXMuZ2V0Qmx1ZSgpIC8gMjU1LjAs
CisgICAgICAgICAgICB0aGlzLmdldEFscGhhKCkgLyAyNTUuMAorICAgICAgICBdOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAg
IHRjdVJHQkEuUkdCQS5wcm90b3R5cGUudG9JVmVjID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiBbCisgICAgICAgICAgICB0aGlzLmdldFJlZCgpLAorICAgICAgICAgICAgdGhpcy5nZXRH
cmVlbigpLAorICAgICAgICAgICAgdGhpcy5nZXRCbHVlKCksCisgICAgICAgICAgICB0aGlzLmdl
dEFscGhhKCkKKyAgICAgICAgXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VSR0JBLlJHQkF9IHYKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRj
dVJHQkEuUkdCQS5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24odikgeworICAgICAgICByZXR1
cm4gKAorICAgICAgICAgICAgdGhpcy5tX3ZhbHVlWzBdID09IHYubV92YWx1ZVswXSAmJgorICAg
ICAgICAgICAgdGhpcy5tX3ZhbHVlWzFdID09IHYubV92YWx1ZVsxXSAmJgorICAgICAgICAgICAg
dGhpcy5tX3ZhbHVlWzJdID09IHYubV92YWx1ZVsyXSAmJgorICAgICAgICAgICAgdGhpcy5tX3Zh
bHVlWzNdID09IHYubV92YWx1ZVszXQorICAgICAgICApOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdCQX0gYQorICAgICAqIEBwYXJhbSB7dGN1UkdCQS5SR0JB
fSBiCisgICAgICogQHBhcmFtIHt0Y3VSR0JBLlJHQkF9IHRocmVzaG9sZAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1UkdCQS5jb21wYXJlVGhyZXNob2xkID0gZnVu
Y3Rpb24oYSwgYiwgdGhyZXNob2xkKSB7CisgICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJu
IHRydWU7IC8vIFF1aWNrLWFjY2VwdAorICAgICAgICByZXR1cm4gdGN1UkdCQS5jb21wdXRlQWJz
RGlmZihhLCBiKS5pc0JlbG93VGhyZXNob2xkKHRocmVzaG9sZCk7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7dGN1UkdCQS5SR0JBfSBhCisgICAgICogQHBhcmFtIHt0Y3VSR0JB
LlJHQkF9IGIKKyAgICAgKiBAcmV0dXJuIHt0Y3VSR0JBLlJHQkF9CisgICAgICovCisgICAgdGN1
UkdCQS5jb21wdXRlQWJzRGlmZiA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgcmV0dXJuIHRj
dVJHQkEubmV3UkdCQUNvbXBvbmVudHMoCisgICAgICAgICAgICBNYXRoLmFicyhhLmdldFJlZCgp
IC0gYi5nZXRSZWQoKSksCisgICAgICAgICAgICBNYXRoLmFicyhhLmdldEdyZWVuKCkgLSBiLmdl
dEdyZWVuKCkpLAorICAgICAgICAgICAgTWF0aC5hYnMoYS5nZXRCbHVlKCkgLSBiLmdldEJsdWUo
KSksCisgICAgICAgICAgICBNYXRoLmFicyhhLmdldEFscGhhKCkgLSBiLmdldEFscGhhKCkpCisg
ICAgICAgICk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1UkdCQS5SR0JB
fSBhCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGIKKyAgICAgKiBAcmV0dXJuIHt0Y3VSR0JBLlJH
QkF9CisgICAgICovCisgICAgdGN1UkdCQS5tdWx0aXBseSA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAg
ICAgICAgcmV0dXJuIHRjdVJHQkEubmV3UkdCQUNvbXBvbmVudHMoCisgICAgICAgICAgICBkZU1h
dGguY2xhbXAoYS5nZXRSZWQoKSAqIGIsIDAsIDI1NSksCisgICAgICAgICAgICBkZU1hdGguY2xh
bXAoYS5nZXRHcmVlbigpICogYiwgMCwgMjU1KSwKKyAgICAgICAgICAgIGRlTWF0aC5jbGFtcChh
LmdldEJsdWUoKSAqIGIsIDAsIDI1NSksCisgICAgICAgICAgICBkZU1hdGguY2xhbXAoYS5nZXRB
bHBoYSgpICogYiwgMCwgMjU1KSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
dGN1UkdCQS5SR0JBfSBhCisgICAgICogQHBhcmFtIHt0Y3VSR0JBLlJHQkF9IGIKKyAgICAgKiBA
cmV0dXJuIHt0Y3VSR0JBLlJHQkF9CisgICAgICovCisgICAgdGN1UkdCQS5tYXggPSBmdW5jdGlv
bihhLCBiKSB7CisgICAgICAgIHJldHVybiB0Y3VSR0JBLm5ld1JHQkFDb21wb25lbnRzKAorICAg
ICAgICAgICAgTWF0aC5tYXgoYS5nZXRSZWQoKSwgYi5nZXRSZWQoKSksCisgICAgICAgICAgICBN
YXRoLm1heChhLmdldEdyZWVuKCksIGIuZ2V0R3JlZW4oKSksCisgICAgICAgICAgICBNYXRoLm1h
eChhLmdldEJsdWUoKSwgYi5nZXRCbHVlKCkpLAorICAgICAgICAgICAgTWF0aC5tYXgoYS5nZXRB
bHBoYSgpLCBiLmdldEFscGhhKCkpCisgICAgICAgICk7CisgICAgfTsKKworICAgIHRjdVJHQkEu
UkdCQS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdb
JyArIHRoaXMubV92YWx1ZVswXSArICcsJyArIHRoaXMubV92YWx1ZVsxXSArICcsJyArIHRoaXMu
bV92YWx1ZVsyXSArICcsJyArIHRoaXMubV92YWx1ZVszXSArICddJzsKKyAgICB9OworCisgICAg
Ly8gQ29sb3IgY29uc3RhbnRzCisgICAgdGN1UkdCQS5SR0JBLnJlZCA9IHRjdVJHQkEubmV3UkdC
QUNvbXBvbmVudHMoMHhGRiwgMCwgMCwgMHhGRik7CisgICAgdGN1UkdCQS5SR0JBLmdyZWVuID0g
dGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cygwLCAweEZGLCAwLCAweEZGKTsKKyAgICB0Y3VSR0JB
LlJHQkEuYmx1ZSA9IHRjdVJHQkEubmV3UkdCQUNvbXBvbmVudHMoMCwgMCwgMHhGRiwgMHhGRik7
CisgICAgdGN1UkdCQS5SR0JBLmdyYXkgPSB0Y3VSR0JBLm5ld1JHQkFDb21wb25lbnRzKDB4ODAs
IDB4ODAsIDB4ODAsIDB4RkYpOworICAgIHRjdVJHQkEuUkdCQS53aGl0ZSA9IHRjdVJHQkEubmV3
UkdCQUNvbXBvbmVudHMoMHhGRiwgMHhGRiwgMHhGRiwgMHhGRik7CisgICAgdGN1UkdCQS5SR0JB
LmJsYWNrID0gdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cygwLCAwLCAwLCAweEZGKTsKKworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1U2tpcExpc3QuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1U2tp
cExpc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2YjE5NTZiZTk1MzczYmQzNDU3OWIwYzFlMTM1Y2FkYjc4
Y2FlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VTa2lwTGlzdC5qcwpAQCAtMCww
ICsxLDI0NSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisv
KioKKyAqIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgaW5kaXZpZHVhbCB0ZXN0cyB3aGljaCBhcmUg
c2tpcHBlZCBiZWNhdXNlCisgKiBvZiBncmFwaGljcyBkcml2ZXIgYnVncyB3aGljaCBzaW1wbHkg
Y2FuIG5vdCBiZSB3b3JrZWQgYXJvdW5kIGluCisgKiBXZWJHTCAyLjAgaW1wbGVtZW50YXRpb25z
LgorICoKKyAqIFRoZSBpbnRlbnQgaXMgdGhhdCB0aGlzIGxpc3QgYmUga2VwdCBhcyBzbWFsbCBh
cyBwb3NzaWJsZTsgYW5kIHRoYXQKKyAqIGJ1Z3MgYXJlIGZpbGVkIHdpdGggdGhlIHJlc3BlY3Rp
dmUgR1BVIHZlbmRvcnMgZm9yIGVudHJpZXMgaW4gdGhpcworICogbGlzdC4KKyAqCisgKiBQYXNz
IHRoZSBxdWVyeSBhcmd1bWVudCAicnVuU2tpcHBlZFRlc3RzIiBpbiB0aGUgVVJMIGluIG9yZGVy
IHRvCisgKiBmb3JjZSB0aGUgc2tpcHBlZCB0ZXN0cyB0byBiZSBydW4uIFNvLCBmb3IgZXhhbXBs
ZToKKyAqCisgKiBodHRwOi8vbG9jYWxob3N0OjgwODAvc2RrL3Rlc3RzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay5odG1sP2ZpbHRlcj10cmFuc2Zvcm1fZmVlZGJhY2su
YmFzaWNfdHlwZXMuc2VwYXJhdGUucG9pbnRzJnJ1blNraXBwZWRUZXN0cworICovCisndXNlIHN0
cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1U2tpcExpc3QnKTsKKwor
Z29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZhciB0Y3VTa2lwTGlzdCA9IGZyYW1ld29y
ay5jb21tb24udGN1U2tpcExpc3Q7CisKKyAgICB2YXIgX3NraXBFbnRyaWVzID0ge307CisgICAg
dmFyIF93aWxkY2FyZFNraXBFbnRyaWVzID0ge307CisgICAgdmFyIF9yZWFzb24gPSAiIjsKKwor
ICAgIGZ1bmN0aW9uIF9zZXRSZWFzb24ocmVhc29uKSB7CisgICAgICAgIF9yZWFzb24gPSByZWFz
b247CisgICAgfQorCisgICAgZnVuY3Rpb24gX3NraXAodGVzdE5hbWUpIHsKKyAgICAgICAgaWYo
dGVzdE5hbWUuaW5kZXhPZigiKiIpID49IDApeworICAgICAgICAgICAgdGVzdE5hbWUgPSB0ZXN0
TmFtZS5zcGxpdCgiKiIpWzBdOworICAgICAgICAgICAgX3dpbGRjYXJkU2tpcEVudHJpZXNbdGVz
dE5hbWVdID0gX3JlYXNvbjsKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICBfc2tpcEVudHJp
ZXNbdGVzdE5hbWVdID0gX3JlYXNvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBydW5T
a2lwcGVkVGVzdHMgPSBmYWxzZTsKKyAgICB2YXIgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9u
LnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHF1ZXJ5VmFycy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdmFsdWUgPSBxdWVyeVZhcnNb
aV0uc3BsaXQoJz0nKTsKKyAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVswXSkg
PT09ICdydW5Ta2lwcGVkVGVzdHMnKSB7CisgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCBwcmVz
ZW5jZSBvZiB0aGlzIHF1ZXJ5IGFyZyBpbXBsaWVzIHRvIHJ1bgorICAgICAgICAgICAgLy8gdGhl
IHNraXBwZWQgdGVzdHM7IHRoZSB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAgICAgICAgcnVuU2tp
cHBlZFRlc3RzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFydW5Ta2lwcGVkVGVzdHMpIHsKKyAgICAgICAgLy8gRXhhbXBsZSB1c2FnZToK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gX3NldFJlYXNvbigiQnVncyBpbiBGb29WZW5kb3IgMzAu
MDMgZHJpdmVyIik7CisgICAgICAgIC8vIF9za2lwKCJ0cmFuc2Zvcm1fZmVlZGJhY2suYmFzaWNf
dHlwZXMuc2VwYXJhdGUucG9pbnRzLmxvd3BfbWF0MiIpOworCisgICAgICAgIC8vIFBsZWFzZSBz
ZWUgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZXh0ZXJuYWwvZGVx
cC8rLzdjNTMyMzExNmJiMTY0ZDY0YmZlY2I2OGU4ZGExYWY2MzQzMTdiMjQKKyAgICAgICAgX3Nl
dFJlYXNvbigiTmF0aXZlIGRFUVAgYWxzbyBmYWlscyBvbiB0aGVzZSB0ZXN0cyBhbmQgc3VwcHJl
c3NlcyB0aGVtIik7CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlb2Zm
c2V0LnNhbXBsZXIzZF9maXhlZF9mcmFnbWVudCIpOworICAgICAgICBfc2tpcCgidGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZW9mZnNldC5pc2FtcGxlcjNkX2ZyYWdtZW50Iik7CisgICAgICAgIF9z
a2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlb2Zmc2V0LnVzYW1wbGVyM2RfZnJhZ21lbnQi
KTsKKyAgICAgICAgX3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qb2Zmc2V0LnNh
bXBsZXIzZF9maXhlZF9mcmFnbWVudCIpOworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlv
bnMudGV4dHVyZXByb2pvZmZzZXQuaXNhbXBsZXIzZF9mcmFnbWVudCIpOworICAgICAgICBfc2tp
cCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pvZmZzZXQudXNhbXBsZXIzZF9mcmFnbWVu
dCIpOworICAgICAgICAvLyBQbGVhc2Ugc2VlIGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2Uu
Y29tL3BsYXRmb3JtL2V4dGVybmFsL2RlcXAvKy9tYXN0ZXIvYW5kcm9pZC9jdHMvbWFzdGVyL3Ny
Yy9nbGVzMy1ody1pc3N1ZXMudHh0CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50
ZXh0dXJlcHJvamxvZC5pc2FtcGxlcjNkX3ZlcnRleCIpOworICAgICAgICBfc2tpcCgidGV4dHVy
ZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2QudXNhbXBsZXIzZF92ZXJ0ZXgiKTsKKyAgICAgICAg
Ly8gUGxlYXNlIHNlZSBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9l
eHRlcm5hbC9kZXFwLysvbWFzdGVyL2FuZHJvaWQvY3RzL21hc3Rlci9zcmMvZ2xlczMtdGVzdC1p
c3N1ZXMudHh0CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxv
ZG9mZnNldC51c2FtcGxlcjNkX3ZlcnRleCIpOworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5j
dGlvbnMudGV4dHVyZW9mZnNldC5zYW1wbGVyM2RfZmxvYXRfZnJhZ21lbnQiKTsKKyAgICAgICAg
X3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qb2Zmc2V0LnNhbXBsZXIzZF9mbG9h
dF9mcmFnbWVudCIpOworICAgICAgICAvLyBQbGVhc2Ugc2VlIGh0dHBzOi8vYW5kcm9pZC5nb29n
bGVzb3VyY2UuY29tL3BsYXRmb3JtL2V4dGVybmFsL2RlcXAvKy9tYXN0ZXIvYW5kcm9pZC9jdHMv
bWFzdGVyL3NyYy9nbGVzMy1kcml2ZXItaXNzdWVzLnR4dAorICAgICAgICBfc2tpcCgidGV4dHVy
ZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2RvZmZzZXQuaXNhbXBsZXIzZF92ZXJ0ZXgiKTsKKyAg
ICAgICAgX3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXJjdWJlc2hh
ZG93KiIpOworICAgICAgICAvLyBQbGVhc2Ugc2VlIGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3Vy
Y2UuY29tL3BsYXRmb3JtL2V4dGVybmFsL2RlcXAvKy80MGZmNTI4JTVFJTIxLworICAgICAgICAv
LyBhbmQgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0
YWlsP2lkPTMwOTQKKyAgICAgICAgX3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Rv
ZmZzZXQuc2FtcGxlcjNkX2Zsb2F0X3ZlcnRleCIpOworCisgICAgICAgIC8vIGh0dHBzOi8vYW5k
cm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL2V4dGVybmFsL2RlcXAvKy8wYzFmODNhZWU0
NzA5ZWVmN2VmMmEzZWRkMzg0ZjljMTkyZjQ3NmZkL2FuZHJvaWQvY3RzL21hc3Rlci9zcmMvZ2xl
czMtaHctaXNzdWVzLnR4dCM4MDEKKyAgICAgICAgX3NldFJlYXNvbigiVHJpY2t5IGJsaXQgcmVj
dHMgY2FuIHJlc3VsdCBpbiBpbXBlcmZlY3QgY29waWVzIG9uIHNvbWUgSFcuIik7CisgICAgICAg
IF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9tYWciKTsKKyAgICAgICAgX3Nr
aXAoImJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X21hZ19yZXZlcnNlX2RzdF94Iik7Cisg
ICAgICAgIF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9tYWdfcmV2ZXJzZV9z
cmNfZHN0X3giKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5
X21hZ19yZXZlcnNlX3NyY194Iik7CisgICAgICAgIF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9j
b25zaXN0ZW5jeV9tYWdfcmV2ZXJzZV9zcmNfeSIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0
Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWluIik7CisgICAgICAgIF9za2lwKCJibGl0LnJlY3QubmVh
cmVzdF9jb25zaXN0ZW5jeV9taW5fcmV2ZXJzZV9kc3RfeCIpOworICAgICAgICBfc2tpcCgiYmxp
dC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWluX3JldmVyc2Vfc3JjX2RzdF94Iik7CisgICAg
ICAgIF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9taW5fcmV2ZXJzZV9zcmNf
eCIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29m
X2JvdW5kc19tYWciKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3Rl
bmN5X291dF9vZl9ib3VuZHNfbWFnX3JldmVyc2VfZHN0X3giKTsKKyAgICAgICAgX3NraXAoImJs
aXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWFnX3JldmVyc2Vfc3Jj
X2RzdF94Iik7CisgICAgICAgIF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9v
dXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX3NyY194Iik7CisgICAgICAgIF9za2lwKCJibGl0LnJl
Y3QubmVhcmVzdF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX3NyY195Iik7
CisgICAgICAgIF9za2lwKCJibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91
bmRzX21pbiIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lf
b3V0X29mX2JvdW5kc19taW5fcmV2ZXJzZV9kc3RfeCIpOworICAgICAgICBfc2tpcCgiYmxpdC5y
ZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19taW5fcmV2ZXJzZV9zcmNfZHN0
X3giKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X291dF9v
Zl9ib3VuZHNfbWluX3JldmVyc2Vfc3JjX3giKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5u
ZWFyZXN0X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWluX3JldmVyc2Vfc3JjX3kiKTsKKwor
ICAgICAgICAvLyBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9leHRl
cm5hbC9kZXFwLysvMGMxZjgzYWVlNDcwOWVlZjdlZjJhM2VkZDM4NGY5YzE5MmY0NzZmZC9hbmRy
b2lkL2N0cy9tYXN0ZXIvc3JjL2dsZXMzLWRyaXZlci1pc3N1ZXMudHh0IzM4MQorICAgICAgICBf
c2V0UmVhc29uKCJUcmlja3kgYmxpdCByZWN0cyBjYW4gcmVzdWx0IGluIGltcGVyZmVjdCBjb3Bp
ZXMgb24gc29tZSBkcml2ZXJzLiIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm91dF9vZl9i
b3VuZHNfbGluZWFyIik7CisgICAgICAgIF9za2lwKCJibGl0LnJlY3Qub3V0X29mX2JvdW5kc19y
ZXZlcnNlX3NyY194X2xpbmVhciIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm91dF9vZl9i
b3VuZHNfcmV2ZXJzZV9zcmNfeV9saW5lYXIiKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5v
dXRfb2ZfYm91bmRzX3JldmVyc2VfZHN0X3hfbGluZWFyIik7CisgICAgICAgIF9za2lwKCJibGl0
LnJlY3Qub3V0X29mX2JvdW5kc19yZXZlcnNlX2RzdF95X2xpbmVhciIpOworICAgICAgICBfc2tp
cCgiYmxpdC5yZWN0Lm91dF9vZl9ib3VuZHNfcmV2ZXJzZV9zcmNfZHN0X3hfbGluZWFyIik7Cisg
ICAgICAgIF9za2lwKCJibGl0LnJlY3Qub3V0X29mX2JvdW5kc19yZXZlcnNlX3NyY19kc3RfeV9s
aW5lYXIiKTsKKworICAgICAgICAvLyBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9w
bGF0Zm9ybS9leHRlcm5hbC9kZXFwLysvMGMxZjgzYWVlNDcwOWVlZjdlZjJhM2VkZDM4NGY5YzE5
MmY0NzZmZC9hbmRyb2lkL2N0cy9tYXN0ZXIvc3JjL2dsZXMzLWRyaXZlci1pc3N1ZXMudHh0IzM2
OAorICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2Jv
dW5kc19tYWdfcmV2ZXJzZV9kc3RfeSIpOworICAgICAgICBfc2tpcCgiYmxpdC5yZWN0Lm5lYXJl
c3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19tYWdfcmV2ZXJzZV9zcmNfZHN0X3kiKTsKKyAg
ICAgICAgX3NraXAoImJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNf
bWluX3JldmVyc2VfZHN0X3kiKTsKKyAgICAgICAgX3NraXAoImJsaXQucmVjdC5uZWFyZXN0X2Nv
bnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWluX3JldmVyc2Vfc3JjX2RzdF95Iik7CisKKyAgICAg
ICAgX3NldFJlYXNvbigiTWlzc2luZyBzaGFkb3cgc2FtcGxlciBmdW5jdGlvbnMgaW4gRDNEMTEi
KTsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9pc3N1
ZXMvMTg3MAorICAgICAgICAvLyBkZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1
bmN0aW9uL3RleHR1cmUuaHRtbAorICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4
dHVyZS5zYW1wbGVyMmRhcnJheXNoYWRvd192ZXJ0ZXgiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlbG9kLmh0bWwKKyAgICAg
ICAgX3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Quc2FtcGxlcjJkc2hhZG93X3Zl
cnRleCIpOworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC5zYW1w
bGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlbG9kb2Zmc2V0Lmh0bWwKKyAgICAgICAgX3Nr
aXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2RvZmZzZXQuc2FtcGxlcjJkc2hhZG93X3Zl
cnRleCIpOworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZG9mZnNl
dC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamxvZC5odG1sCisgICAgICAg
IF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZC5zYW1wbGVyMmRzaGFkb3df
dmVydGV4Iik7CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxv
ZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamxvZG9mZnNldC5odG1sCisg
ICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZG9mZnNldC5zYW1w
bGVyMmRzaGFkb3dfdmVydGV4Iik7CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50
ZXh0dXJlcHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAg
Ly8gZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlZ3Jh
ZC5odG1sCisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1w
bGVyMmRzaGFkb3dfdmVydGV4Iik7CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50
ZXh0dXJlZ3JhZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgX3NraXAoInRl
eHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIyZGFycmF5c2hhZG93X3ZlcnRleCIp
OworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWQuc2FtcGxlcjJk
YXJyYXlzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlZ3JhZG9mZnNldC5odG1sCisgICAgICAgIF9z
a2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFkb3df
dmVydGV4Iik7CisgICAgICAgIF9za2lwKCJ0ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9m
ZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgX3NraXAoInRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZGFycmF5c2hhZG93X3ZlcnRleCIp
OworICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2Ft
cGxlcjJkYXJyYXlzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamdyYWQuaHRtbAorICAgICAg
ICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkLnNhbXBsZXIyZHNoYWRv
d192ZXJ0ZXgiKTsKKyAgICAgICAgX3NraXAoInRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9q
Z3JhZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKyAgICAgICAgLy8gZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamdyYWRvZmZzZXQuaHRt
bAorICAgICAgICBfc2tpcCgidGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkb2Zmc2V0
LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXgiKTsKKyAgICAgICAgX3NraXAoInRleHR1cmVfZnVuY3Rp
b25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQiKTsKKwor
ICAgICAgICBfc2V0UmVhc29uKCJNYWNPU1ggZHJpdmVycyBzaGFyZSBuYW1lc3BhY2VzIHdoZXJl
IHRoZXkgc2hvdWxkIG5vdCIpOworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25v
c0dyb3VwL1dlYkdML2lzc3Vlcy8xODkwCisgICAgICAgIC8vIGRlcXAvZGF0YS9nbGVzMy9zaGFk
ZXJzL3Njb3BpbmcuaHRtbAorICAgICAgICBfc2tpcCgic2NvcGluZy52YWxpZC5sb2NhbF9pbnRf
dmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVfdmVydGV4Iik7CisgICAgICAgIF9za2lwKCJzY29w
aW5nLnZhbGlkLmxvY2FsX2ludF92YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZV9mcmFnbWVudCIp
OworICAgICAgICBfc2tpcCgic2NvcGluZy52YWxpZC5sb2NhbF9zdHJ1Y3RfdmFyaWFibGVfaGlk
ZXNfc3RydWN0X3R5cGVfdmVydGV4Iik7CisgICAgICAgIF9za2lwKCJzY29waW5nLnZhbGlkLmxv
Y2FsX3N0cnVjdF92YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZV9mcmFnbWVudCIpOworICAgICAg
ICBfc2tpcCgic2NvcGluZy52YWxpZC5mdW5jdGlvbl9wYXJhbWV0ZXJfaGlkZXNfc3RydWN0X3R5
cGVfdmVydGV4Iik7CisgICAgICAgIF9za2lwKCJzY29waW5nLnZhbGlkLmZ1bmN0aW9uX3BhcmFt
ZXRlcl9oaWRlc19zdHJ1Y3RfdHlwZV9mcmFnbWVudCIpOworCisgICAgICAgIF9zZXRSZWFzb24o
Ik5WaWRpYSBMaW51eCBkcml2ZXJzIGRvZXMgbm90IGNsYW1wIGdsX0ZyYWdEZXB0aCB0byBbMC4w
LCAxLjBdIik7CisgICAgICAgIC8vIFN0YW5kYWxvbmUgVGVzdCBjYXNlOgorICAgICAgICAvLyAg
aHR0cHM6Ly9naXRodWIuY29tL0thbmd6L0dMRHJpdmVyQnVncy9ibG9iL21hc3Rlci9mcmFnX2Rl
cHRoX2NsYW1wXzMyZl9kZXB0aC9NYWluLmNwcAorICAgICAgICAvLyBkZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZmJvZGVwdGhidWZmZXIuaHRtbAorICAgICAgICBfc2tpcCgiZGVwdGguZGVwdGhfd3Jp
dGVfY2xhbXAuZGVwdGhfY29tcG9uZW50MzJmIik7CisgICAgICAgIF9za2lwKCJkZXB0aC5kZXB0
aF93cml0ZV9jbGFtcC5kZXB0aDMyZl9zdGVuY2lsOCIpOworICAgICAgICBfc2tpcCgiZGVwdGgu
ZGVwdGhfdGVzdF9jbGFtcC5kZXB0aF9jb21wb25lbnQzMmYiKTsKKyAgICAgICAgX3NraXAoImRl
cHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGgzMmZfc3RlbmNpbDgiKTsKKworICAgICAgICBfc2V0
UmVhc29uKCJOVmlkaWEgTGludXggZHJpdmVyIGJ1ZyBpbiBuZXN0ZWQgdW5pZm9ybSBibG9jayBs
b2NhdGlvbiBhc3NpZ25tZW50Iik7CisgICAgICAgIC8vIGNyYnVnLmNvbS82MjExNzgKKyAgICAg
ICAgLy8gZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1hcGkvcmFuZG9tLmh0bWwKKyAgICAg
ICAgX3NraXAoInVuaWZvcm1fYXBpLnJhbmRvbS42NCIpOworCisgICAgICAgIF9zZXRSZWFzb24o
Ik1hYyBBTUQgLyBMaW51eCBBTUQgLyBvbGRlciBtZXNhIGhhbmRsZXMgY2xpcHBpbmcgb2Ygd2lk
ZSBwb2ludHMgaW5jb3JyZWN0bHkiKTsKKyAgICAgICAgLy8gY3JidWcuY29tLzY0MjgyMgorICAg
ICAgICAvLyBkZXFwL2Z1bmN0aW9uYWwvZ2xlczMvY2xpcHBpbmcuaHRtbAorICAgICAgICBfc2tp
cCgiY2xpcHBpbmcud2lkZV9wb2ludHNfZnVsbF92aWV3cG9ydCIpOworICAgICAgICBfc2tpcCgi
Y2xpcHBpbmcud2lkZV9wb2ludHNfcGFydGlhbF92aWV3cG9ydCIpOworCisgICAgICAgIF9zZXRS
ZWFzb24oIlNvbWUgV2luZG93cyBBTUQgRDNEMTEgZHJpdmVycyBoYXZlIGlzc3VlcyB3aXRoIGJs
aXQgYW5kIGRlcHRoL3N0ZW5jaWwgZm9ybWF0cy4iKTsKKyAgICAgICAgLy8gY3JidWcuY29tLzYz
ODMyMworICAgICAgICAvLyBkZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2Rl
cHRoX3N0ZW5jaWwuaHRtbAorICAgICAgICAvLyBBbHNvIHNlZSBjb25mb3JtYW5jZTIvcmVuZGVy
aW5nL2JsaXRmcmFtZWJ1ZmZlci1zdGVuY2lsLW9ubHkuaHRtbCBmb3IgMi4wLjEgdGVzdC4KKyAg
ICAgICAgX3NraXAoImJsaXQuZGVwdGhfc3RlbmNpbC5kZXB0aDI0X3N0ZW5jaWw4X3NjYWxlIik7
CisgICAgICAgIF9za2lwKCJibGl0LmRlcHRoX3N0ZW5jaWwuZGVwdGgyNF9zdGVuY2lsOF9zdGVu
Y2lsX29ubHkiKTsKKworICAgICAgICBfc2V0UmVhc29uKCJSZW1vdmVkIGZyb20gbmF0aXZlIGRF
UVAgbXVzdHBhc3MuIE5vdCBwYXNzYWJsZSBvbiBBZHJlbm8uIik7CisgICAgICAgIC8vIFRoZXNl
IHRlc3RzIGhhdmUgYmVlbiBza2lwcGVkIGluIG5hdGl2ZSBkRVFQIHNpbmNlIDIwMTU6CisgICAg
ICAgIC8vIGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL2V4dGVybmFs
L2RlcXAvKy9lYTAyNmIzMjllNmJmNzNmMTA5Y2RhOTE0YzkwZjA4ZDVmN2E1YjhkCisgICAgICAg
IC8vIFRoZXkgZG8gbm90IHBhc3Mgb24gQW5kcm9pZC9RdWFsY29tbSAoR29vZ2xlIFBpeGVsIDEs
IFBpeGVsIDMpLgorICAgICAgICAvLyBJdCdzIG5vdCBjbGVhciBpZiB0aGUgdGVzdHMgb3IgdGhl
IGhhcmR3YXJlIGFyZSBvdXQtb2Ytc3BlYywgYnV0IHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8g
YWJvdXQgaXQgcmlnaHQgbm93LgorICAgICAgICAvLyBTZWUgYWxzbzogY3JidWcuY29tLzY5NTY3
OQorICAgICAgICBfc2tpcCgiZGVyaXZhdGUuZGZkeS5mYm9fZmxvYXQuZmxvYXRfaGlnaHAiKTsK
KyAgICAgICAgX3NraXAoImRlcml2YXRlLmRmZHkuZmJvX2Zsb2F0LnZlYzJfaGlnaHAiKTsKKyAg
ICAgICAgX3NraXAoImRlcml2YXRlLmRmZHkuZmJvX2Zsb2F0LnZlYzNfaGlnaHAiKTsKKyAgICAg
ICAgX3NraXAoImRlcml2YXRlLmRmZHkuZmJvX2Zsb2F0LnZlYzRfaGlnaHAiKTsKKyAgICAgICAg
X3NraXAoImRlcml2YXRlLmRmZHkubmljZXN0LmZib19mbG9hdC5mbG9hdF9oaWdocCIpOworICAg
ICAgICBfc2tpcCgiZGVyaXZhdGUuZGZkeS5uaWNlc3QuZmJvX2Zsb2F0LnZlYzJfaGlnaHAiKTsK
KyAgICAgICAgX3NraXAoImRlcml2YXRlLmRmZHkubmljZXN0LmZib19mbG9hdC52ZWMzX2hpZ2hw
Iik7CisgICAgICAgIF9za2lwKCJkZXJpdmF0ZS5kZmR5Lm5pY2VzdC5mYm9fZmxvYXQudmVjNF9o
aWdocCIpOworICAgICAgICBfc2tpcCgiZGVyaXZhdGUuZGZkeS5mYXN0ZXN0LmZib19mbG9hdC5m
bG9hdF9oaWdocCIpOworICAgICAgICBfc2tpcCgiZGVyaXZhdGUuZGZkeS5mYXN0ZXN0LmZib19m
bG9hdC52ZWMyX2hpZ2hwIik7CisgICAgICAgIF9za2lwKCJkZXJpdmF0ZS5kZmR5LmZhc3Rlc3Qu
ZmJvX2Zsb2F0LnZlYzNfaGlnaHAiKTsKKyAgICAgICAgX3NraXAoImRlcml2YXRlLmRmZHkuZmFz
dGVzdC5mYm9fZmxvYXQudmVjNF9oaWdocCIpOworICAgIH0gLy8gaWYgKCFydW5Ta2lwcGVkVGVz
dHMpCisKKyAgICAvKgorICAgICAqIEdldHMgdGhlIHNraXAgc3RhdHVzIG9mIHRoZSBnaXZlbiB0
ZXN0LiBSZXR1cm5zIGFuCisgICAgICogb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgInNraXAi
LCBhIGJvb2xlYW4sIGFuZCAicmVhc29uIiwgYQorICAgICAqIHN0cmluZy4KKyAgICAgKi8KKyAg
ICB0Y3VTa2lwTGlzdC5nZXRTa2lwU3RhdHVzID0gZnVuY3Rpb24odGVzdE5hbWUpIHsKKyAgICAg
ICAgdmFyIHNraXBFbnRyeSA9IF9za2lwRW50cmllc1t0ZXN0TmFtZV07CisgICAgICAgIGlmIChz
a2lwRW50cnkgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFdp
bGRjYXJkU2tpcFN0YXR1cyh0ZXN0TmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4geyAnc2tpcCc6IHRydWUsICdyZWFzb24nOiBza2lwRW50cnkgfTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8qCisgICAgICogR2V0cyB0aGUgc2tpcCBzdGF0dXMgb2YgdGhlIGdp
dmVuIHRlc3RzIGxpa2UgdGVzdHBhdGgqCisgICAgICogb2JqZWN0IHdpdGggdGhlIHByb3BlcnRp
ZXMgInNraXAiLCBhIGJvb2xlYW4sIGFuZCAicmVhc29uIiwgYQorICAgICAqIHN0cmluZy4KKyAg
ICAqLworICAgIHRjdVNraXBMaXN0Ll9nZXRXaWxkY2FyZFNraXBTdGF0dXMgPSBmdW5jdGlvbih0
ZXN0TmFtZSkgeworICAgICAgICB2YXIgc2tpcEVudHJ5OworICAgICAgICBmb3IgKHZhciBrZXkg
aW4gX3dpbGRjYXJkU2tpcEVudHJpZXMpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0TmFtZS5pbmRl
eE9mKGtleSkgPj0wICkgeworICAgICAgICAgICAgICAgIHNraXBFbnRyeSA9IF93aWxkY2FyZFNr
aXBFbnRyaWVzW2tleV07CisgICAgICAgICAgICAgICAgaWYgKHNraXBFbnRyeSAhPSB1bmRlZmlu
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgJ3NraXAnOiB0cnVlLCAncmVhc29u
Jzogc2tpcEVudHJ5IH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiB7ICdza2lwJzogZmFsc2UsICdyZWFzb24nOiAnJyB9OworICAg
IH0KKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1U3RyaW5nVGVtcGxhdGUuanMgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29y
ay9jb21tb24vdGN1U3RyaW5nVGVtcGxhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcwMDU2NzMzYmI5Mzkz
ZjgxMjE2YTg2YWM2NGFhMjg1OTcwYzJhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90
Y3VTdHJpbmdUZW1wbGF0ZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog
Q29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmlu
Z1RlbXBsYXRlJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciB0Y3VTdHJpbmdU
ZW1wbGF0ZSA9IGZyYW1ld29yay5jb21tb24udGN1U3RyaW5nVGVtcGxhdGU7CisKK3RjdVN0cmlu
Z1RlbXBsYXRlLmVzY2FwZVJlZ0V4cCA9IGZ1bmN0aW9uKHN0cmluZykgeworICAgIHJldHVybiBz
dHJpbmcucmVwbGFjZSgvKFsuKis/Xj0hOiQge30oKXxcW1xdXC9cXF0pL2csICdcXCQxJyk7Cit9
OworCit0Y3VTdHJpbmdUZW1wbGF0ZS5zcGVjaWFsaXplID0gZnVuY3Rpb24oc3RyLCBwYXJhbXMp
IHsKKyAgICB2YXIgZHN0ID0gc3RyOworICAgIGZvciAodmFyIGtleSBpbiBwYXJhbXMpIHsKKyAg
ICAgICAgdmFyIHZhbHVlID0gcGFyYW1zW2tleV07CisgICAgICAgIHZhciByZSA9IG5ldyBSZWdF
eHAodGN1U3RyaW5nVGVtcGxhdGUuZXNjYXBlUmVnRXhwKCdcJFx7JyArIGtleSArICdcfScpLCAn
ZycpOworICAgICAgICBkc3QgPSBkc3QucmVwbGFjZShyZSwgdmFsdWUpOworICAgIH0KKyAgICBy
ZXR1cm4gZHN0OworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1U3VyZmFjZS5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL2NvbW1vbi90Y3VTdXJmYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZDM2MzRhYWQ2NmE2Mjc0
NjFhMThjNDI2ZTEyMGFiNTNmNzFkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1
U3VyZmFjZS5qcwpAQCAtMCwwICsxLDE4NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3
RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdo
dCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoK
KyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgor
ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgewor
Cit2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZTsKK3ZhciB0Y3VU
ZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIGRlTWF0aCA9IGZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKK3ZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7CisKK3ZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7
CisgICAgaWYgKCF4KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsK
K307CisKKy8qKgorICogXGJyaWVmIFJHQkE4ODg4IHN1cmZhY2UKKyAqCisgKiB0Y3VTdXJmYWNl
LlN1cmZhY2UgcHJvdmlkZXMgYmFzaWMgcGl4ZWwgc3RvcmFnZSBmdW5jdGlvbmFsaXR5LiBPbmx5
IHNpbmdsZSBmb3JtYXQKKyAqIChSR0JBODg4OCkgaXMgc3VwcG9ydGVkLgorICoKKyAqIFBpeGVs
QnVmZmVyQWNjZXNzIChzZWUgdGN1VGV4dHVyZS5oKSBwcm92aWRlcyBtdWNoIG1vcmUgZmxleGli
bGUgQVBJCisgKiBmb3IgaGFuZGxpbmcgdmFyaW91cyBwaXhlbCBmb3JtYXRzLiBUaGlzIGlzIG1h
aW5seSBhIGNvbnZpbmllbmNlIGNsYXNzLgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge251
bWJlcj19IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcj19IGhlaWdodAorICovCit0Y3VTdXJmYWNl
LlN1cmZhY2UgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CisgICAgd2lkdGggPSB3aWR0aCB8
fCAwOworICAgIGhlaWdodCA9IGhlaWdodCB8fCAwOworICAgIHRoaXMuc2V0U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0g
e251bWJlcn0gaGVpZ2h0CisgKi8KK3RjdVN1cmZhY2UuU3VyZmFjZS5wcm90b3R5cGUuc2V0U2l6
ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsKKyAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsK
KyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0OworICAgIGlmICh3aWR0aCAqIGhlaWdodCA+IDAp
IHsKKyAgICAgICAgdGhpcy5tX2RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoNCAqIHdpZHRoICogaGVp
Z2h0KTsKKyAgICAgICAgdGhpcy5tX3BpeGVscyA9IG5ldyBVaW50OEFycmF5KHRoaXMubV9kYXRh
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLm1fZGF0YSA9IG51bGw7CisgICAgICAgIHRo
aXMubV9waXhlbHMgPSBudWxsOworICAgIH0KK307CisKKy8qKgorICogQHJldHVybiB7bnVtYmVy
fQorICovCit0Y3VTdXJmYWNlLlN1cmZhY2UucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24o
KSB7IHJldHVybiB0aGlzLm1fd2lkdGg7IH07CisKKy8qKgorICogQHJldHVybiB7bnVtYmVyfQor
ICovCit0Y3VTdXJmYWNlLlN1cmZhY2UucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gdGhpcy5tX2hlaWdodDsgfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0geAor
ICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29sb3IgVmVj
NCBjb2xvcgorICovCit0Y3VTdXJmYWNlLlN1cmZhY2UucHJvdG90eXBlLnNldFBpeGVsID0gZnVu
Y3Rpb24oeCwgeSwgY29sb3IpIHsKKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih4
LCAwLCB0aGlzLm1fd2lkdGgpKTsKKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih5
LCAwLCB0aGlzLm1faGVpZ2h0KSk7CisKKyAgICB2YXIgb2Zmc2V0ID0gNCAqICh4ICsgeSAqIHRo
aXMubV93aWR0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgIHRo
aXMubV9waXhlbHNbb2Zmc2V0ICsgaV0gPSBjb2xvcltpXTsKK307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fQorICovCit0Y3VTdXJmYWNlLlN1cmZhY2UucHJvdG90eXBlLmdldFBpeGVsID0gZnVuY3Rp
b24oeCwgeSkgeworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHgsIDAsIHRoaXMu
bV93aWR0aCkpOworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHksIDAsIHRoaXMu
bV9oZWlnaHQpKTsKKworICAgIHZhciBjb2xvciA9IFtdOworICAgIGNvbG9yLmxlbmd0aCA9IDQ7
CisKKyAgICB2YXIgb2Zmc2V0ID0gNCAqICh4ICsgeSAqIHRoaXMubV93aWR0aCk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgIGNvbG9yW2ldID0gdGhpcy5tX3BpeGVs
c1tvZmZzZXQgKyBpXTsKKworICAgIHJldHVybiBjb2xvcjsKK307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBAcmV0dXJuIHtudW1iZXJ9Cisg
Ki8KK3RjdVN1cmZhY2UuU3VyZmFjZS5wcm90b3R5cGUuZ2V0UGl4ZWxVaW50UkdCOCA9IGZ1bmN0
aW9uKHgsIHkpIHsKKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih4LCAwLCB0aGlz
Lm1fd2lkdGgpKTsKKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih5LCAwLCB0aGlz
Lm1faGVpZ2h0KSk7CisKKyAgICB2YXIgb2Zmc2V0ID0gNCAqICh4ICsgeSAqIHRoaXMubV93aWR0
aCk7CisgICAgcmV0dXJuICh0aGlzLm1fcGl4ZWxzW29mZnNldF0gPDwgMTYpICsKKyAgICAgICAg
KHRoaXMubV9waXhlbHNbb2Zmc2V0ICsgMV0gPDwgOCkgKworICAgICAgICB0aGlzLm1fcGl4ZWxz
W29mZnNldCArIDJdOworfTsKKworLyoqCisgKiBSZWFkIHRoZSB2aWV3cG9ydCBjb250ZW50cyBp
bnRvIHRoaXMgc3VyZmFjZQorICogQHBhcmFtIHsqPX0gY3R4IFdlYkdMIG9yIHJlZiBjb250ZXh0
CisgKiBAcGFyYW0geyhBcnJheTxudW1iZXI+fHt4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6
IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9KT19IHZpZXcKKyAqLwordGN1U3VyZmFjZS5TdXJmYWNl
LnByb3RvdHlwZS5yZWFkVmlld3BvcnQgPSBmdW5jdGlvbihjdHgsIHZpZXcpIHsKKyAgICBjdHgg
PSBjdHggfHwgZ2w7CisgICAgdmFyIHYgPSB2aWV3IHx8IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gKGN0eC5nZXRQYXJhbWV0ZXIoZ2wuVklFV1BPUlQpKTsKKyAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHg7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5OworICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGg7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBoZWlnaHQ7CisgICAgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSB8fCBBcnJheUJ1ZmZlci5p
c1ZpZXcodikpIHsKKyAgICAgICAgeCA9IHZbMF07CisgICAgICAgIHkgPSB2WzFdOworICAgICAg
ICB3aWR0aCA9IHZbMl07CisgICAgICAgIGhlaWdodCA9IHZbM107CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgeCA9IHYueDsKKyAgICAgICAgeSA9IHYueTsKKyAgICAgICAgd2lkdGggPSB2LndpZHRo
OworICAgICAgICBoZWlnaHQgPSB2LmhlaWdodDsKKyAgICB9CisgICAgaWYgKHdpZHRoICE9IHRo
aXMubV93aWR0aCB8fCBoZWlnaHQgIT0gdGhpcy5tX2hlaWdodCkKKyAgICAgICAgdGhpcy5zZXRT
aXplKHdpZHRoLCBoZWlnaHQpOworICAgIGN0eC5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHRoaXMubV9waXhlbHMpOworfTsKKworLyoq
CisgKiBAcmV0dXJuIHtVaW50OEFycmF5fQorICovCit0Y3VTdXJmYWNlLlN1cmZhY2UucHJvdG90
eXBlLmdldFBpeGVscyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX3BpeGVscyB8fCBudWxs
OyB9OworCisvKioKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IFBp
eGVsIEJ1ZmZlciBBY2Nlc3Mgb2JqZWN0CisgKi8KK3RjdVN1cmZhY2UuU3VyZmFjZS5wcm90b3R5
cGUuZ2V0QWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlBp
eGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBuZXcgdGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCksCisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0
aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5tX2hlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tX2RhdGEKKyAgICAgICAgICAgICAgICB9
KTsKKworfTsKKwordGN1U3VyZmFjZS5TdXJmYWNlLnByb3RvdHlwZS5nZXRTdWJBY2Nlc3MgPSBm
dW5jdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgLyogVE9ETzogSW1wbGVtZW50LiB0
aGUgZGVxcCBnZXRTdWJBY2Nlc3MoKSBsb29rcyBicm9rZW4uIEl0IHdpbGwgcHJvYmFibHkgZmFp
bCBpZgorICAgICAqIHggIT0gMCBvciB3aWR0aCAhPSBtX3dpZHRoCisgICAgICovCisgICAgIHRo
cm93IG5ldyBFcnJvcignVW5pbXBsZW1lbnRlZCcpOworfTsKKworfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29y
ay9jb21tb24vdGN1VGVzdENhc2UuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1VGVzdENhc2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWMwOGVlYTVjYTdlMzBlZjM3ZTcwNjJjNzQwODNlMTlmN2NiNTJmMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0Q2FzZS5qcwpAQCAtMCwwICsxLDQ5MSBAQAorLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBF
UyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgKgorICovCisKKy8qKgorICogVGhpcyBjbGFzcyBhbGxvd3Mgb25lIHRvIGNyZWF0
ZSBhIGhpZXJhcmNoeSBvZiB0ZXN0cyBhbmQgaXRlcmF0ZSBvdmVyIHRoZW0uCisgKiBJdCByZXBs
YWNlcyBUZXN0Q2FzZSBhbmQgVGVzdENhc2VHcm91cCBjbGFzc2VzLgorICovCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTa2lwTGlzdCcpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZTsKKyAgICB2YXIgdGN1U2tpcExpc3QgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVNraXBM
aXN0OworCisgICAgdGN1VGVzdENhc2UuZ2V0UXVlcnlWYWwgPSBmdW5jdGlvbihrZXkpIHsKKyAg
ICAgICAgY29uc3QgcXVlcnlWYXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmco
MSkuc3BsaXQoJyYnKTsKKyAgICAgICAgZm9yIChsZXQga3Ygb2YgcXVlcnlWYXJzKSB7CisgICAg
ICAgICAgICBrdiA9IGt2LnNwbGl0KCc9Jyk7CisgICAgICAgICAgICBpZiAoZGVjb2RlVVJJQ29t
cG9uZW50KGt2WzBdKSA9PT0ga2V5KQorICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklD
b21wb25lbnQoa3ZbMV0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH07
CisKKyAgICB0Y3VUZXN0Q2FzZS5pc1F1aWNrTW9kZSA9ICgpID0+IHRjdVRlc3RDYXNlLmdldFF1
ZXJ5VmFsKCdxdWljaycpID09PSAnMSc7CisgICAgdGN1VGVzdENhc2UuaXNRdWlldE1vZGUgPSAo
KSA9PiB0Y3VUZXN0Q2FzZS5nZXRRdWVyeVZhbCgncXVpZXQnKSA9PT0gJzEnOworCisgICAgLyoq
CisgICAgICogUmVhZHMgdGhlIGZpbHRlciBwYXJhbWV0ZXIgZnJvbSB0aGUgVVJMIHRvIGZpbHRl
ciB0ZXN0cy4KKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5nIH0KKyAgICAgKi8KKyAgICB0Y3VUZXN0
Q2FzZS5nZXRGaWx0ZXIgPSAoKSA9PiB0Y3VUZXN0Q2FzZS5nZXRRdWVyeVZhbCgnZmlsdGVyJyk7
CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIGFuIGl0ZXJhdGlvbiBv
cGVyYXRpb24uCisgICAgICogQGVudW0ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VUZXN0Q2Fz
ZS5JdGVyYXRlUmVzdWx0ID0geworICAgICAgICBTVE9QOiAwLAorICAgICAgICBDT05USU5VRTog
MQorICAgIH07CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICAgICogUnVubmVyCisgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLworCisgICAgLyoqCisgICAgKiBBIHNpbXBsZSBzdGF0ZSBtYWNoaW5lLgorICAgICogVGhl
IHB1cnBvc2Ugb2YgdGhpcyB0aGlzIG9iamVjdCBpcyB0byBicmVhaworICAgICogbG9uZyB0ZXN0
cyBpbnRvIHNtYWxsIGNodW5rcyB0aGF0IHdvbid0IGNhdXNlIGEgdGltZW91dAorICAgICogQGNv
bnN0cnVjdG9yCisgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5SdW5uZXIgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdGhpcy5jdXJyZW50
VGVzdCA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICov
IHRoaXMubmV4dFRlc3QgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRl
cXBUZXN0fSAqLyB0aGlzLnRlc3RDYXNlcyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7P3N0
cmluZyB9ICovIHRoaXMuZmlsdGVyID0gdGN1VGVzdENhc2UuZ2V0RmlsdGVyKCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gcm9vdCBUaGUg
cm9vdCB0ZXN0IG9mIHRoZSB0ZXN0IHRyZWUuCisgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5SdW5u
ZXIucHJvdG90eXBlLnNldFJvb3QgPSBmdW5jdGlvbihyb290KSB7CisgICAgICAgIHRoaXMuY3Vy
cmVudFRlc3QgPSBudWxsOworICAgICAgICB0aGlzLnRlc3RDYXNlcyA9IHJvb3Q7CisgICAgfTsK
KworICAgIHRjdVRlc3RDYXNlLlJ1bm5lci5wcm90b3R5cGUuc2V0UmFuZ2UgPSBmdW5jdGlvbihy
YW5nZSkgeworICAgICAgICB0aGlzLnJhbmdlID0gcmFuZ2U7CisgICAgfTsKKworICAgIC8qKgor
ICAgICogU2VhcmNoZXMgdGhlIHRlc3QgdHJlZSBmb3IgdGhlIG5leHQgZXhlY3V0YWJsZSB0ZXN0
CisgICAgKiBAcmV0dXJuIHs/dGN1VGVzdENhc2UuRGVxcFRlc3QgfQorICAgICovCisgICAgdGN1
VGVzdENhc2UuUnVubmVyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAg
Ly8gRmlyc3QgdGltZT8gVXNlIHJvb3QgdGVzdAorICAgICAgICBpZiAoIXRoaXMuY3VycmVudFRl
c3QpIHsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSB0aGlzLnRlc3RDYXNlczsKKwor
ICAgICAgICAgICAgLy8gUm9vdCBpcyBleGVjdXRhYmxlPyBVc2UgaXQKKyAgICAgICAgICAgIGlm
ICh0aGlzLmN1cnJlbnRUZXN0LmlzRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmN1cnJlbnRUZXN0OworICAgICAgICB9CisKKyAgICAgICAgLy8gU2hvdWxkIHdlIHBy
b2NlZWQgd2l0aCB0aGUgbmV4dCB0ZXN0PworICAgICAgICBpZiAodGN1VGVzdENhc2UubGFzdFJl
c3VsdCA9PSB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1ApIHsKKyAgICAgICAgICAgIC8v
IExvb2sgZm9yIG5leHQgZXhlY3V0YWJsZSB0ZXN0CisgICAgICAgICAgICBkbyB7CisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMucmFuZ2UpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVu
dFRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0Lm5leHRJblJhbmdlKHRoaXMuZmlsdGVyLCB0aGlzLnJh
bmdlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vy
cmVudFRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0Lm5leHQodGhpcy5maWx0ZXIpOworICAgICAgICAg
ICAgfSB3aGlsZSAodGhpcy5jdXJyZW50VGVzdCAmJiAhdGhpcy5jdXJyZW50VGVzdC5pc0V4ZWN1
dGFibGUoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGVzdDsK
KyAgICB9OworCisgICAgLyoqCisgICAgKiBTY2hlZHVsZSB0aGUgY2FsbGJhY2sgdG8gYmUgcnVu
IEFTQVAKKyAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gc2No
ZWR1bGUKKyAgICAqLworICAgIHRjdVRlc3RDYXNlLlJ1bm5lci5wcm90b3R5cGUucnVuQ2FsbGJh
Y2sgPSBmdW5jdGlvbihjYWxsYmFjaykgeworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCAwKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gYXQgdGhlIGVuZCBvZiB0
aGUgdGVzdAorICAgICovCisgICAgdGN1VGVzdENhc2UuUnVubmVyLnByb3RvdHlwZS50ZXJtaW5h
dGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICBpZiAoIXRj
dVRlc3RDYXNlLmlzUXVpZXRNb2RlKCkpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCdmaW5p
c2hUZXN0KCkgYWZ0ZXIgKGluIG1zKTonLCBwZXJmb3JtYW5jZS5ub3coKSk7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgdGN1VGVzdENhc2UucnVubmVyID0gbmV3IHRjdVRlc3RDYXNlLlJ1bm5l
cigpOworCisgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fSAqLyB0Y3VU
ZXN0Q2FzZS5sYXN0UmVzdWx0ID0gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworCisg
ICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICogRGVxcFRl
c3QKKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICAv
KioKKyAgICAqIEFzc2lnbnMgbmFtZSwgZGVzY3JpcHRpb24gYW5kIHNwZWNpZmljYXRpb24gdG8g
dGVzdAorICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAcGFyYW0gez9zdHJpbmd9IG5hbWUKKyAg
ICAqIEBwYXJhbSB7P3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAqIEBwYXJhbSB7T2JqZWN0PX0g
c3BlYworICAgICovCisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QgPSBmdW5jdGlvbihuYW1lLCBk
ZXNjcmlwdGlvbiwgc3BlYykgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lIHx8ICcnOworICAg
ICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gfHwgJyc7CisgICAgICAgIHRoaXMu
c3BlYyA9IHNwZWM7CisgICAgICAgIHRoaXMuY3VycmVudFRlc3ROZHggPSAwOworICAgICAgICB0
aGlzLnBhcmVudFRlc3QgPSBudWxsOworICAgICAgICB0aGlzLmNoaWxkcmVuVGVzdHMgPSBbXTsK
KyAgICAgICAgdGhpcy5leGVjdXRlQWx3YXlzID0gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEFic3RyYWN0IGluaXQgZnVuY3Rpb24oZWFjaCBwYXJ0aWN1bGFyIHRlc3Qgd2lsbCBp
bXBsZW1lbnQgaXQsIG9yIG5vdCkKKyAgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkge307CisKKyAgICAvKioKKyAgICAgKiBBYnN0cmFj
dCBkZWluaXQgZnVuY3Rpb24oZWFjaCBwYXJ0aWN1bGFyIHRlc3Qgd2lsbCBpbXBsZW1lbnQgaXQs
IG9yIG5vdCkKKyAgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUuZGVp
bml0ID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAqIEFic3RyYWN0IGl0ZXJhdGUg
ZnVuY3Rpb24oZWFjaCBwYXJ0aWN1bGFyIHRlc3Qgd2lsbCBpbXBsZW1lbnQgaXQsIG9yIG5vdCkK
KyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAg
IHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7IHJl
dHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7IH07CisKKyAgICAvKioKKyAgICAq
IENoZWNrcyBpZiB0aGUgdGVzdCBpcyBleGVjdXRhYmxlCisgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICovCisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlLmlzRXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlblRlc3RzLmxlbmd0
aCA9PSAwIHx8IHRoaXMuZXhlY3V0ZUFsd2F5czsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
Q2hlY2tzIGlmIHRoZSB0ZXN0IGlzIGEgbGVhZgorICAgICAqLworICAgIHRjdVRlc3RDYXNlLkRl
cXBUZXN0LnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuY2hpbGRyZW5UZXN0cy5sZW5ndGggPT0gMDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
TWFya3MgdGhlIHRlc3QgYXMgYWx3YXlzIGV4ZWN1dGFibGUKKyAgICAgKi8KKyAgICB0Y3VUZXN0
Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUubWFrZUV4ZWN1dGFibGUgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdGhpcy5leGVjdXRlQWx3YXlzID0gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAg
KiBBZGRzIGEgY2hpbGQgdGVzdCB0byB0aGUgdGVzdCdzIGNoaWxkcmVuCisgICAgKiBAcGFyYW0g
e3RjdVRlc3RDYXNlLkRlcXBUZXN0fSB0ZXN0CisgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHRlc3Qu
cGFyZW50VGVzdCA9IHRoaXM7CisgICAgICAgIHRoaXMuY2hpbGRyZW5UZXN0cy5wdXNoKHRlc3Qp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB3aG9sZSBjaGlsZHJlbiB0ZXN0
cyBhcnJheQorICAgICAqIEBwYXJhbSB7QXJyYXk8dGN1VGVzdENhc2UuRGVxcFRlc3Q+fSB0ZXN0
cworICAgICAqLworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZS5zZXRDaGlsZHJl
biA9IGZ1bmN0aW9uKHRlc3RzKSB7CisgICAgICAgIGZvciAodmFyIHRlc3QgaW4gdGVzdHMpCisg
ICAgICAgICAgICB0ZXN0c1t0ZXN0XS5wYXJlbnRUZXN0ID0gdGhpczsKKyAgICAgICAgdGhpcy5j
aGlsZHJlblRlc3RzID0gdGVzdHM7CisgICAgfTsKKworICAgIC8qKgorICAgICogUmV0dXJucyB0
aGUgbmV4dCB0ZXN0IGluIHRoZSBoaWVyYXJjaHkgb2YgdGVzdHMKKyAgICAqCisgICAgKiBAcGFy
YW0gez9zdHJpbmcgfSBwYXR0ZXJuIE9wdGlvbmFsIHBhdHRlcm4gdG8gc2VhcmNoIGZvcgorICAg
ICogQHJldHVybiB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgKi8KKyAgICB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX25leHRIb25vcmluZ1NraXBMaXN0KHBhdHRlcm4pOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIFJldHVybnMgdGhlIG5leHQgdGVzdCBpbiB0aGUgaGllcmFyY2h5IG9mIHRl
c3RzLCBob25vcmluZyB0aGUKKyAgICAqIHNraXAgbGlzdCwgYW5kIHJlcG9ydGluZyBza2lwcGVk
IHRlc3RzLgorICAgICoKKyAgICAqIEBwYXJhbSB7P3N0cmluZyB9IHBhdHRlcm4gT3B0aW9uYWwg
cGF0dGVybiB0byBzZWFyY2ggZm9yCisgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5EZXFwVGVz
dH0KKyAgICAqLworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZS5fbmV4dEhvbm9y
aW5nU2tpcExpc3QgPSBmdW5jdGlvbihwYXR0ZXJuKSB7CisgICAgICAgIHZhciB0cnlBZ2FpbiA9
IGZhbHNlOworICAgICAgICB2YXIgdGVzdCA9IG51bGw7CisgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIHRyeUFnYWluID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0ID0gdGhpcy5fbmV4dElnbm9y
aW5nU2tpcExpc3QocGF0dGVybik7CisgICAgICAgICAgICBpZiAodGVzdCAhPSBudWxsKSB7Cisg
ICAgICAgICAgICAgICAgLy8gU2VlIHdoZXRoZXIgdGhlIHNraXAgbGlzdCB2ZXRvZXMgdGhlIGV4
ZWN1dGlvbiBvZgorICAgICAgICAgICAgICAgIC8vIHRoaXMgdGVzdC4KKyAgICAgICAgICAgICAg
ICB2YXIgZnVsbFRlc3ROYW1lID0gdGVzdC5mdWxsTmFtZSgpOworICAgICAgICAgICAgICAgIHZh
ciBza2lwRGlzcG9zaXRpb24gPSB0Y3VTa2lwTGlzdC5nZXRTa2lwU3RhdHVzKGZ1bGxUZXN0TmFt
ZSk7CisgICAgICAgICAgICAgICAgaWYgKHNraXBEaXNwb3NpdGlvbi5za2lwKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRyeUFnYWluID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc2V0Q3Vy
cmVudFRlc3ROYW1lKGZ1bGxUZXN0TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTWVz
c2FnZShmYWxzZSwgJ1NraXBwaW5nIHRlc3QgZHVlIHRvIHRjdVNraXBMaXN0OiAnICsgZnVsbFRl
c3ROYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hp
bGUgKHRyeUFnYWluKTsKKyAgICAgICAgcmV0dXJuIHRlc3Q7CisgICAgfTsKKworCisgICAgLyoq
CisgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHRlc3QgaW4gdGhlIGhpZXJhcmNoeSBvZiB0ZXN0cywg
aWdub3JpbmcgdGhlCisgICAgKiBza2lwIGxpc3QuCisgICAgKgorICAgICogQHBhcmFtIHs/c3Ry
aW5nIH0gcGF0dGVybiBPcHRpb25hbCBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IKKyAgICAqIEByZXR1
cm4ge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICovCisgICAgdGN1VGVzdENhc2UuRGVxcFRl
c3QucHJvdG90eXBlLl9uZXh0SWdub3JpbmdTa2lwTGlzdCA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsK
KyAgICAgICAgaWYgKHBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZElnbm9y
aW5nU2tpcExpc3QocGF0dGVybik7CisKKyAgICAgICAgdmFyIHRlc3QgPSBudWxsOworCisgICAg
ICAgIC8vTG9vayBmb3IgdGhlIG5leHQgY2hpbGQKKyAgICAgICAgaWYgKHRoaXMuY3VycmVudFRl
c3ROZHggPCB0aGlzLmNoaWxkcmVuVGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXN0ID0g
dGhpcy5jaGlsZHJlblRlc3RzW3RoaXMuY3VycmVudFRlc3ROZHhdOworICAgICAgICAgICAgdGhp
cy5jdXJyZW50VGVzdE5keCsrOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgbm8gbW9yZSBj
aGlsZHJlbiwgZ2V0IHRoZSBuZXh0IGJyb3RoZXIKKyAgICAgICAgaWYgKHRlc3QgPT0gbnVsbCAm
JiB0aGlzLnBhcmVudFRlc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgdGVzdCA9IHRoaXMucGFy
ZW50VGVzdC5fbmV4dElnbm9yaW5nU2tpcExpc3QobnVsbCk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gdGVzdDsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBuZXh0
IHRlc3QgaW4gdGhlIGhpZXJhcmNoeSBvZiB0ZXN0cworICAgICogd2hvc2UgMXN0IGxldmVsIGlz
IGluIHRoZSBnaXZlbiByYW5nZQorICAgICoKKyAgICAqIEBwYXJhbSB7P3N0cmluZyB9IHBhdHRl
cm4gT3B0aW9uYWwgcGF0dGVybiB0byBzZWFyY2ggZm9yCisgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IHJhbmdlCisgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAq
LworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZS5uZXh0SW5SYW5nZSA9IGZ1bmN0
aW9uKHBhdHRlcm4sIHJhbmdlKSB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICB2YXIgdGVzdCA9IHRoaXMuX25leHRIb25vcmluZ1NraXBMaXN0KHBhdHRlcm4pOworICAgICAg
ICAgICAgaWYgKCF0ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAg
ICAgdmFyIHRvcExldmVsSWQgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzLmN1cnJlbnRU
ZXN0TmR4IC0gMTsKKyAgICAgICAgICAgIGlmICh0b3BMZXZlbElkID49IHJhbmdlWzBdICYmIHRv
cExldmVsSWQgPCByYW5nZVsxXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVzdDsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIFJldHVybnMgdGhlIGZ1bGwgbmFtZSBvZiB0
aGUgdGVzdAorICAgICoKKyAgICAqIEByZXR1cm4ge3N0cmluZ30gRnVsbCB0ZXN0IG5hbWUuCisg
ICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUuZnVsbE5hbWUgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMucGFyZW50VGVzdCkgeworICAgICAgICAgICAgdmFy
IHBhcmVudE5hbWUgPSB0aGlzLnBhcmVudFRlc3QuZnVsbE5hbWUoKTsKKyAgICAgICAgICAgIGlm
IChwYXJlbnROYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROYW1lICsgJy4nICsg
dGhpcy5uYW1lOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfTsK
KworICAgIC8qKgorICAgICogUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHRlc3QKKyAg
ICAqCisgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRlc3QgZGVzY3JpcHRpb24uCisgICAgKi8KKyAg
ICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUuZ2V0RGVzY3JpcHRpb24gPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247CisgICAgfTsKKworICAgIC8q
KgorICAgICogRmluZCBhIHRlc3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUuICBGYXN0LWZvcndhcmRz
IHRvIGEgdGVzdCB3aG9zZQorICAgICogZnVsbCBuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHBhdHRl
cm4uCisgICAgKgorICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdHRlcm4gUmVndWxhciBleHByZXNz
aW9uIHRvIHNlYXJjaCBmb3IKKyAgICAqIEByZXR1cm4gez90Y3VUZXN0Q2FzZS5EZXFwVGVzdCB9
IEZvdW5kIHRlc3Qgb3IgbnVsbC4KKyAgICAqLworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LnBy
b3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocGF0dGVybikgeworICAgICAgICByZXR1cm4gdGhpcy5f
ZmluZEhvbm9yaW5nU2tpcExpc3QocGF0dGVybik7CisgICAgfTsKKworICAgIC8qKgorICAgICog
RmluZCBhIHRlc3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUuIEZhc3QtZm9yd2FyZHMgdG8gYSB0ZXN0
IHdob3NlCisgICAgKiBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gcGF0dGVybiwgaG9ub3Jp
bmcgdGhlIHNraXAgbGlzdCwgYW5kCisgICAgKiByZXBvcnRpbmcgc2tpcHBlZCB0ZXN0cy4KKyAg
ICAqCisgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0dGVybiBSZWd1bGFyIGV4cHJlc3Npb24gdG8g
c2VhcmNoIGZvcgorICAgICogQHJldHVybiB7P3RjdVRlc3RDYXNlLkRlcXBUZXN0IH0gRm91bmQg
dGVzdCBvciBudWxsLgorICAgICovCisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBl
Ll9maW5kSG9ub3JpbmdTa2lwTGlzdCA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsKKyAgICAgICAgdmFy
IHRyeUFnYWluID0gZmFsc2U7CisgICAgICAgIHZhciB0ZXN0ID0gbnVsbDsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgdHJ5QWdhaW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHRlc3QgPSB0aGlz
Ll9maW5kSWdub3JpbmdTa2lwTGlzdChwYXR0ZXJuKTsKKyAgICAgICAgICAgIGlmICh0ZXN0ICE9
IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBTZWUgd2hldGhlciB0aGUgc2tpcCBsaXN0IHZl
dG9lcyB0aGUgZXhlY3V0aW9uIG9mCisgICAgICAgICAgICAgICAgLy8gdGhpcyB0ZXN0LgorICAg
ICAgICAgICAgICAgIHZhciBmdWxsVGVzdE5hbWUgPSB0ZXN0LmZ1bGxOYW1lKCk7CisgICAgICAg
ICAgICAgICAgdmFyIHNraXBEaXNwb3NpdGlvbiA9IHRjdVNraXBMaXN0LmdldFNraXBTdGF0dXMo
ZnVsbFRlc3ROYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoc2tpcERpc3Bvc2l0aW9uLnNraXAp
IHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5QWdhaW4gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBjaGVja01lc3NhZ2UoZmFsc2UsICdTa2lwcGluZyB0ZXN0IGR1ZSB0byB0Y3VTa2lwTGlz
dDogJyArIGZ1bGxUZXN0TmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9IHdoaWxlICh0cnlBZ2Fpbik7CisgICAgICAgIHJldHVybiB0ZXN0OworICAgIH07
CisKKyAgICAvKioKKyAgICAqIEZpbmQgYSB0ZXN0IHdpdGggYSBtYXRjaGluZyBuYW1lLiBGYXN0
LWZvcndhcmRzIHRvIGEgdGVzdCB3aG9zZQorICAgICogZnVsbCBuYW1lIG1hdGNoZXMgdGhlIGdp
dmVuIHBhdHRlcm4uCisgICAgKgorICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdHRlcm4gUmVndWxh
ciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IKKyAgICAqIEByZXR1cm4gez90Y3VUZXN0Q2FzZS5E
ZXFwVGVzdCB9IEZvdW5kIHRlc3Qgb3IgbnVsbC4KKyAgICAqLworICAgIHRjdVRlc3RDYXNlLkRl
cXBUZXN0LnByb3RvdHlwZS5fZmluZElnbm9yaW5nU2tpcExpc3QgPSBmdW5jdGlvbihwYXR0ZXJu
KSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGhpczsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgIHRlc3QgPSB0ZXN0Ll9uZXh0SWdub3JpbmdTa2lwTGlzdChudWxsKTsKKyAgICAg
ICAgICAgIGlmICghdGVzdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlm
ICh0ZXN0LmZ1bGxOYW1lKCkubWF0Y2gocGF0dGVybikgfHwgdGVzdC5leGVjdXRlQWx3YXlzKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXN0Owor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIFJlc2V0IHRoZSBpdGVyYXRvci4KKyAgICAqLworICAg
IHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0aGlzLmN1cnJlbnRUZXN0TmR4ID0gMDsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuY2hpbGRyZW5UZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRoaXMuY2hp
bGRyZW5UZXN0c1tpXS5yZXNldCgpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIERlZmluZXMg
YSBuZXcgdGVzdAorICAgICoKKyAgICAqIEBwYXJhbSB7P3N0cmluZ30gbmFtZSBTaG9ydCB0ZXN0
IG5hbWUKKyAgICAqIEBwYXJhbSB7P3N0cmluZ30gZGVzY3JpcHRpb24gRGVzY3JpcHRpb24gb2Yg
dGhlIHRlc3QKKyAgICAqIEBwYXJhbSB7T2JqZWN0PX0gc3BlYyBUZXN0IHNwZWNpZmljYXRpb24K
KyAgICAqCisgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gVGhlIG5ldyB0ZXN0
CisgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5uZXdUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24sIHNwZWMpIHsKKyAgICAgICAgdmFyIHRlc3QgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRl
c3QobmFtZSwgZGVzY3JpcHRpb24sIHNwZWMpOworCisgICAgICAgIHJldHVybiB0ZXN0OworICAg
IH07CisKKyAgICAvKioKKyAgICAqIERlZmluZXMgYSBuZXcgZXhlY3V0YWJsZSB0ZXN0IHNvIGl0
IGdldHMgcnVuIGV2ZW4gaWYgaXQncyBub3QgYSBsZWFmCisgICAgKgorICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUgU2hvcnQgdGVzdCBuYW1lCisgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3Jp
cHRpb24gRGVzY3JpcHRpb24gb2YgdGhlIHRlc3QKKyAgICAqIEBwYXJhbSB7T2JqZWN0PX0gc3Bl
YyBUZXN0IHNwZWNpZmljYXRpb24KKyAgICAqCisgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0gVGhlIG5ldyB0ZXN0CisgICAgKi8KKyAgICB0Y3VUZXN0Q2FzZS5uZXdFeGVjdXRh
YmxlVGVzdCA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBzcGVjKSB7CisgICAgICAgIHZh
ciB0ZXN0ID0gdGN1VGVzdENhc2UubmV3VGVzdChuYW1lLCBkZXNjcmlwdGlvbiwgc3BlYyk7Cisg
ICAgICAgIHRlc3QubWFrZUV4ZWN1dGFibGUoKTsKKworICAgICAgICByZXR1cm4gdGVzdDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBSdW4gdGhyb3VnaCB0aGUgdGVzdCBjYXNlcyBnaXZpbmcg
dGltZSB0byBzeXN0ZW0gb3BlcmF0aW9uLgorICAgICovCisgICAgdGN1VGVzdENhc2UucnVuVGVz
dENhc2VzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1
bm5lcjsKKworICAgICAgICBpZiAoc3RhdGUubmV4dCgpKSB7CisgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgIC8vIElmIHByb2NlZWRpbmcgd2l0aCB0aGUgbmV4dCB0ZXN0LCBwcmVw
YXJlIGl0LgorICAgICAgICAgICAgICAgIHZhciBmdWxsVGVzdE5hbWUgPSBzdGF0ZS5jdXJyZW50
VGVzdC5mdWxsTmFtZSgpOworICAgICAgICAgICAgICAgIHZhciBpbml0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGlmICh0Y3VUZXN0Q2FzZS5sYXN0UmVzdWx0ID09IHRjdVRlc3RDYXNlLkl0
ZXJhdGVSZXN1bHQuU1RPUCkgeworICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY3VycmVu
dCB0ZXN0IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKGZ1bGxU
ZXN0TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJbml0
IHRlc3RjYXNlOiAnICsgZnVsbFRlc3ROYW1lKTsgLy9TaG93IGFsc28gaW4gY29uc29sZSBzbyB3
ZSBjYW4gc2VlIHdoaWNoIHRlc3QgY3Jhc2hlZCB0aGUgYnJvd3NlcidzIHRhYgorCisgICAgICAg
ICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgcGFydGljdWxhciB0ZXN0CisgICAgICAgICAgICAg
ICAgICAgIGluaXRlZCA9IHN0YXRlLmN1cnJlbnRUZXN0LmluaXQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5pdGVkID0gaW5pdGVkID09PSB1bmRlZmluZWQgPyB0cnVlIDogaW5pdGVkOworCisg
ICAgICAgICAgICAgICAgICAgIC8vSWYgaXQncyBhIGxlYWYgdGVzdCwgbm90aWZ5IG9mIGl0J3Mg
ZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuY3VycmVudFRlc3QuaXNM
ZWFmKCkgJiYgaW5pdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoJzxoci8+PGJy
Lz5TdGFydCB0ZXN0Y2FzZTogJyArIGZ1bGxUZXN0TmFtZSk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKGluaXRlZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBS
dW4gdGhlIHRlc3QsIHNhdmUgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgICAgICAgICAgdGN1VGVz
dENhc2UubGFzdFJlc3VsdCA9IHN0YXRlLmN1cnJlbnRUZXN0Lml0ZXJhdGUoKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHVuaW5pdGlhbGl6
ZWQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgdGN1VGVzdENhc2UubGFzdFJlc3VsdCA9IHRj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBDbGVhbnVwCisgICAgICAgICAgICAgICAgaWYgKHRjdVRlc3RDYXNlLmxh
c3RSZXN1bHQgPT0gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QKQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5jdXJyZW50VGVzdC5kZWluaXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZXhjZXB0aW9u
IHdhcyBub3QgdGhyb3duIGJ5IGEgdGVzdCBjaGVjaywgbG9nIGl0LCBidXQgZG9uJ3QgdGhyb3cg
aXQgYWdhaW4KKyAgICAgICAgICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBUZXN0RmFpbGVk
RXhjZXB0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAvL1N0b3AgZXhlY3V0aW9uIG9mIGN1
cnJlbnQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgdGN1VGVzdENhc2UubGFzdFJlc3VsdCA9
IHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFudXAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0Y3VUZXN0Q2FzZS5sYXN0UmVzdWx0ID09IHRjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHQuU1RPUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jdXJyZW50VGVz
dC5kZWluaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoY2VycikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Vycm9yIHdoaWxlIGNsZWFu
aW5nIHVwIHRlc3Q6ICcgKyBjZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB2YXIgbXNnID0gZXJyOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLm1l
c3NhZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBlcnIubWVzc2FnZTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMobXNnLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci5ydW5DYWxsYmFjayh0
Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRj
dVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3
b3JrL2NvbW1vbi90Y3VUZXhDb21wYXJlVmVyaWZpZXIuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NDk2M2FlNjY2M2FmMjc0ODg0MTYwOWNlMGQ4
MTg5ZjRmMTRhMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1VGV4Q29tcGFyZVZl
cmlmaWVyLmpzCkBAIC0wLDAgKzEsMTM1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3
RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdo
dCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoK
KyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgor
ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhDb21wYXJlVmVy
aWZpZXInKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhWZXJpZmllclV0
aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rp
b24oKSB7CisKK3ZhciB0Y3VUZXhDb21wYXJlVmVyaWZpZXIgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVRleENvbXBhcmVWZXJpZmllcjsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXh0dXJlOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsK
K3ZhciB0Y3VUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWw7Cit2
YXIgdGN1VGV4VmVyaWZpZXJVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhWZXJpZmllclV0
aWw7CisKKy8qKgorICogXGJyaWVmIFRleHR1cmUgY29tcGFyZSAoc2hhZG93KSBsb29rdXAgcHJl
Y2lzaW9uIHBhcmFtZXRlcnMuCisgKiBAY29uc3RydWN0b3IKKyAqIEBzdHJ1Y3QKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPj19IGNvb3JkQml0cworICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0g
dXZ3Qml0cworICogQHBhcmFtIHtudW1iZXI9fSBwY2ZCaXRzCisgKiBAcGFyYW0ge251bWJlcj19
IHJlZmVyZW5jZUJpdHMKKyAqIEBwYXJhbSB7bnVtYmVyPX0gcmVzdWx0Qml0cworICovCit0Y3VU
ZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbiA9IGZ1bmN0aW9uKGNvb3JkQml0
cywgdXZ3Qml0cywgcGNmQml0cywgcmVmZXJlbmNlQml0cywgcmVzdWx0Qml0cykgeworICAgIHRo
aXMuY29vcmRCaXRzID0gY29vcmRCaXRzID09PSB1bmRlZmluZWQgPyBbMjIsIDIyLCAyMl0gOiBj
b29yZEJpdHM7CisgICAgdGhpcy51dndCaXRzID0gdXZ3Qml0cyA9PT0gdW5kZWZpbmVkID8gWzIy
LCAyMiwgMjJdIDogdXZ3Qml0czsKKyAgICB0aGlzLnBjZkJpdHMgPSBwY2ZCaXRzID09PSB1bmRl
ZmluZWQgPyAxNiA6IHBjZkJpdHM7CisgICAgdGhpcy5yZWZlcmVuY2VCaXRzID0gcmVmZXJlbmNl
Qml0cyA9PT0gdW5kZWZpbmVkID8gMTYgOiByZWZlcmVuY2VCaXRzOworICAgIHRoaXMucmVzdWx0
Qml0cyA9IHJlc3VsdEJpdHMgPT09IHVuZGVmaW5lZCA/IDE2IDogcmVzdWx0Qml0czsKK307CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAc3RydWN0CisgKi8KK3RjdVRleENvbXBhcmVWZXJp
Zmllci5DbXBSZXN1bHRTZXQgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmlzVHJ1ZSA9IGZhbHNl
OworICAgIHRoaXMuaXNGYWxzZSA9IGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuQ29tcGFyZU1vZGV9IGNvbXBhcmVNb2RlCisgKiBAcGFyYW0ge251bWJlcn0gY21wVmFs
dWVfCisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNlXworICogQHBhcmFtIHtudW1iZXJ9
IHJlZmVyZW5jZUJpdHMKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXhlZFBvaW50CisgKiBAcmV0
dXJuIHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuQ21wUmVzdWx0U2V0fQorICovCit0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUgPSBmdW5jdGlvbihjb21wYXJlTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFZhbHVlXywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNtcFJlZmVyZW5jZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWZlcmVuY2VCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNG
aXhlZFBvaW50KSB7CisgICAgdmFyIGNsYW1wVmFsdWVzID0gaXNGaXhlZFBvaW50OyAvLyBpZiBj
b21wYXJpbmcgYWdhaW5zdCBhIGZsb2F0aW5nIHBvaW50IHRleHR1cmUsIHJlZiAoYW5kIHZhbHVl
KSBpcyBub3QgY2xhbXBlZAorICAgIHZhciBjbXBWYWx1ZSA9IChjbGFtcFZhbHVlcykgPyAoZGVN
YXRoLmNsYW1wKGNtcFZhbHVlXywgMCwgMSkpIDogKGNtcFZhbHVlXyk7CisgICAgdmFyIGNtcFJl
ZmVyZW5jZSA9IChjbGFtcFZhbHVlcykgPyAoZGVNYXRoLmNsYW1wKGNtcFJlZmVyZW5jZV8sIDAs
IDEpKSA6IChjbXBSZWZlcmVuY2VfKTsKKyAgICB2YXIgZXJyID0gdGN1VGV4VmVyaWZpZXJVdGls
LmNvbXB1dGVGaXhlZFBvaW50RXJyb3IocmVmZXJlbmNlQml0cyk7CisgICAgdmFyIHJlcyA9IG5l
dyB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuQ21wUmVzdWx0U2V0KCk7CisKKyAgICBzd2l0Y2ggKGNv
bXBhcmVNb2RlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJF
TU9ERV9MRVNTOgorICAgICAgICAgICAgcmVzLmlzVHJ1ZSA9IGNtcFJlZmVyZW5jZSAtIGVyciA8
IGNtcFZhbHVlOworICAgICAgICAgICAgcmVzLmlzRmFsc2UgPSBjbXBSZWZlcmVuY2UgKyBlcnIg
Pj0gY21wVmFsdWU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTEVTU19PUl9FUVVBTDoKKyAgICAgICAgICAgIHJl
cy5pc1RydWUgPSBjbXBSZWZlcmVuY2UgLSBlcnIgPD0gY21wVmFsdWU7CisgICAgICAgICAgICBy
ZXMuaXNGYWxzZSA9IGNtcFJlZmVyZW5jZSArIGVyciA+IGNtcFZhbHVlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RF
X0dSRUFURVI6CisgICAgICAgICAgICByZXMuaXNUcnVlID0gY21wUmVmZXJlbmNlICsgZXJyID4g
Y21wVmFsdWU7CisgICAgICAgICAgICByZXMuaXNGYWxzZSA9IGNtcFJlZmVyZW5jZSAtIGVyciA8
PSBjbXBWYWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9HUkVBVEVSX09SX0VRVUFMOgorICAgICAgICAgICAg
cmVzLmlzVHJ1ZSA9IGNtcFJlZmVyZW5jZSArIGVyciA+PSBjbXBWYWx1ZTsKKyAgICAgICAgICAg
IHJlcy5pc0ZhbHNlID0gY21wUmVmZXJlbmNlIC0gZXJyIDwgY21wVmFsdWU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1P
REVfRVFVQUw6CisgICAgICAgICAgICByZXMuaXNUcnVlID0gZGVNYXRoLmRlSW5SYW5nZTMyKGNt
cFZhbHVlLCBjbXBSZWZlcmVuY2UgLSBlcnIsIGNtcFJlZmVyZW5jZSArIGVycik7CisgICAgICAg
ICAgICByZXMuaXNGYWxzZSA9IGVyciAhPSAwIHx8IGNtcFZhbHVlICE9IGNtcFJlZmVyZW5jZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21wYXJlTW9k
ZS5DT01QQVJFTU9ERV9OT1RfRVFVQUw6CisgICAgICAgICAgICByZXMuaXNUcnVlID0gZXJyICE9
IDAgfHwgY21wVmFsdWUgIT0gY21wUmVmZXJlbmNlOworICAgICAgICAgICAgcmVzLmlzRmFsc2Ug
PSBkZU1hdGguZGVJblJhbmdlMzIoY21wVmFsdWUsIGNtcFJlZmVyZW5jZSAtIGVyciwgY21wUmVm
ZXJlbmNlICsgZXJyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9BTFdBWVM6CisgICAgICAgICAgICByZXMuaXNU
cnVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9ORVZFUjoKKyAgICAgICAgICAgIHJlcy5pc0ZhbHNl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcGFyZSBtb2RlOicgKyBjb21wYXJlTW9k
ZSk7CisgICAgfQorCisgICAgYXNzZXJ0TXNnT3B0aW9ucyhyZXMuaXNUcnVlIHx8IHJlcy5pc0Zh
bHNlLCAnQm90aCB0ZXN0cyBmYWlsZWQhJywgZmFsc2UsIHRydWUpOworICAgIHJldHVybiByZXM7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQK
KyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK3RjdVRleENvbXBhcmVWZXJpZmllci5pc0ZpeGVk
UG9pbnREZXB0aFRleHR1cmVGb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKKyAgICB2YXIgY2hh
bm5lbENsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50eXBl
KTsKKworICAgIGlmIChmb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRCkg
eworICAgICAgICAvLyBkZXB0aCBpbnRlcm5hbCBmb3JtYXRzIGNhbm5vdCBiZSBub24tbm9ybWFs
aXplZCBpbnRlZ2VycworICAgICAgICByZXR1cm4gY2hhbm5lbENsYXNzICE9IHRjdVRleHR1cmUu
VGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDsKKyAgICB9IGVsc2UgaWYgKGZvcm1h
dC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykgeworICAgICAgICAvLyBjb21i
aW5lZCBmb3JtYXRzIGhhdmUgbm8gc2luZ2xlIGNoYW5uZWwgY2xhc3MsIGRldGVjdCBmb3JtYXQg
bWFudWFsbHkKKyAgICAgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgICAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVjogcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lH
TkVEX0lOVF8yNF84OiByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGV4dHVyZSBmb3JtYXQ6ICcgKyBm
b3JtYXQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoq
CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29tcGFyZU1vZGV9IGNvbXBhcmVNb2RlCisgKiBAcGFy
YW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBwcmVjCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IGRlcHRocworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBm
Qm91bmRzCisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNlCisgKiBAcGFyYW0ge251bWJl
cn0gcmVzdWx0CisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRml4ZWRQb2ludERlcHRoCisgKiBAcmV0
dXJuIHtib29sZWFufQorICovCit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNMaW5lYXJDb21wYXJl
VmFsaWQgPSBmdW5jdGlvbihjb21wYXJlTW9kZSwgcHJlYywgZGVwdGhzLCBmQm91bmRzLCBjbXBS
ZWZlcmVuY2UsIHJlc3VsdCwgaXNGaXhlZFBvaW50RGVwdGgpIHsKKyAgICBhc3NlcnRNc2dPcHRp
b25zKGZCb3VuZHNbMF0gPj0gMCAmJiBmQm91bmRzWzBdIDw9IGZCb3VuZHNbMV0gJiYgZkJvdW5k
c1sxXSA8PSAxLCAnSW52YWxpZCBmQm91bmRzJywgZmFsc2UsIHRydWUpOworCisgICAgdmFyIGQw
ID0gZGVwdGhzWzBdOworICAgIHZhciBkMSA9IGRlcHRoc1sxXTsKKworICAgIHZhciBjbXAwID0g
dGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkMCwgY21wUmVm
ZXJlbmNlLCBwcmVjLnJlZmVyZW5jZUJpdHMsIGlzRml4ZWRQb2ludERlcHRoKTsKKyAgICB2YXIg
Y21wMSA9IHRjdVRleENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZDEs
IGNtcFJlZmVyZW5jZSwgcHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7Cisg
ICAgdmFyIGNtcCA9IFtjbXAwLCBjbXAxXTsKKworICAgIHZhciBpc1RydWUgPSBnZXRNYXNrKGNt
cCwgZnVuY3Rpb24oeCkge3JldHVybiB4LmlzVHJ1ZTt9KTsKKyAgICB2YXIgaXNGYWxzZSA9IGdl
dE1hc2soY21wLCBmdW5jdGlvbih4KSB7cmV0dXJuIHguaXNGYWxzZTt9KTsKKworICAgIHZhciBm
MCA9IGZCb3VuZHNbMF07CisgICAgdmFyIGYxID0gZkJvdW5kc1sxXTsKKworICAgIHZhciBwY2ZF
cnIgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZpeGVkUG9pbnRFcnJvcihwcmVjLnBjZkJp
dHMpOworICAgIHZhciByZXNFcnIgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZpeGVkUG9p
bnRFcnJvcihwcmVjLnJlc3VsdEJpdHMpOworICAgIHZhciB0b3RhbEVyciA9IHBjZkVyciArIHJl
c0VycjsKKworICAgIGZvciAodmFyIGNvbWIgPSAwOyBjb21iIDwgNDsgY29tYisrKSB7CisgICAg
ICAgIGlmICgoKGNvbWIgJiBpc1RydWUpIHwgKH5jb21iICYgaXNGYWxzZSApKSAhPSAzKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdmFyIGNtcDBUcnVlID0gKChjb21iID4+IDAp
ICYgMSkgIT0gMDsKKyAgICAgICAgdmFyIGNtcDFUcnVlID0gKChjb21iID4+IDEpICYgMSkgIT0g
MDsKKworICAgICAgICB2YXIgcmVmMCA9IGNtcDBUcnVlID8gMSA6IDA7CisgICAgICAgIHZhciBy
ZWYxID0gY21wMVRydWUgPyAxIDogMDsKKworICAgICAgICB2YXIgdjAgPSByZWYwICogKDEgLSBm
MCkgKyByZWYxICogZjA7CisgICAgICAgIHZhciB2MSA9IHJlZjAgKiAoMSAtIGYxKSArIHJlZjEg
KiBmMTsKKyAgICAgICAgdmFyIG1pblYgPSBNYXRoLm1pbih2MCwgdjEpOworICAgICAgICB2YXIg
bWF4ViA9IE1hdGgubWF4KHYwLCB2MSk7CisgICAgICAgIHZhciBtaW5SID0gbWluViAtIHRvdGFs
RXJyOworICAgICAgICB2YXIgbWF4UiA9IG1heFYgKyB0b3RhbEVycjsKKworICAgICAgICBpZiAo
ZGVNYXRoLmRlSW5SYW5nZTMyKHJlc3VsdCwgbWluUiwgbWF4UikpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0g
e251bWJlcn0gdmFsCisgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgKiBAcmV0dXJuIHtBcnJh
eTxib29sZWFuPn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4dHJhY3RCVmVjNCA9IGZ1
bmN0aW9uKHZhbCwgb2Zmc2V0KSB7CisgICAgcmV0dXJuIFsKKyAgICAgICAgKCh2YWwgPj4gKG9m
ZnNldCArIDApKSAmIDEpICE9IDAsCisgICAgICAgICgodmFsID4+IChvZmZzZXQgKyAxKSkgJiAx
KSAhPSAwLAorICAgICAgICAoKHZhbCA+PiAob2Zmc2V0ICsgMikpICYgMSkgIT0gMCwKKyAgICAg
ICAgKCh2YWwgPj4gKG9mZnNldCArIDMpKSAmIDEpICE9IDBdOworfTsKKworLyoqCisgKiBWYWx1
ZXMgYXJlIGluIG9yZGVyICgwLDApLCAoMSwwKSwgKDAsMSksICgxLDEpCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHZhbHVlcworICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVt
YmVyfSB5CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3RjdVRleENvbXBhcmVWZXJpZmllci5i
aWxpbmVhckludGVycG9sYXRlID0gZnVuY3Rpb24odmFsdWVzLCB4LCB5KSB7CisgICAgdmFyIHYw
MCA9IHZhbHVlc1swXTsKKyAgICB2YXIgdjEwID0gdmFsdWVzWzFdOworICAgIHZhciB2MDEgPSB2
YWx1ZXNbMl07CisgICAgdmFyIHYxMSA9IHZhbHVlc1szXTsKKyAgICB2YXIgcmVzID0gdjAwICog
KDEgLSB4KSAqICgxIC0geSkgKyB2MTAgKiB4ICogKDEgLSB5KSArIHYwMSAqICgxIC0geCkgKiB5
ICsgdjExICogeCAqIHk7CisgICAgcmV0dXJuIHJlczsKK307CisKKy8qKgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLkNvbXBhcmVNb2RlfSBjb21wYXJlTW9kZQorICogQHBhcmFtIHt0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBkZXB0aHMgdmVjNAorICogQHBhcmFtIHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICog
QHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHBhcmFtIHtib29sZWFufSBpc0ZpeGVkUG9pbnRE
ZXB0aAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlz
QmlsaW5lYXJBbnlDb21wYXJlVmFsaWQgPSBmdW5jdGlvbihjb21wYXJlTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXB0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbXBSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpeGVkUG9pbnREZXB0
aCkgeworICAgIGFzc2VydE1zZ09wdGlvbnMocHJlYy5wY2ZCaXRzID09PSAwLCAnUENGIGJpdHMg
bXVzdCBiZSAwJywgZmFsc2UsIHRydWUpOworCisgICAgdmFyIGQwID0gZGVwdGhzWzBdOworICAg
IHZhciBkMSA9IGRlcHRoc1sxXTsKKyAgICB2YXIgZDIgPSBkZXB0aHNbMl07CisgICAgdmFyIGQz
ID0gZGVwdGhzWzNdOworCisgICAgdmFyIGNtcDAgPSB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuZXhl
Y0NvbXBhcmUoY29tcGFyZU1vZGUsIGQwLCBjbXBSZWZlcmVuY2UsIHByZWMucmVmZXJlbmNlQml0
cywgaXNGaXhlZFBvaW50RGVwdGgpOworICAgIHZhciBjbXAxID0gdGN1VGV4Q29tcGFyZVZlcmlm
aWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkMSwgY21wUmVmZXJlbmNlLCBwcmVjLnJlZmVy
ZW5jZUJpdHMsIGlzRml4ZWRQb2ludERlcHRoKTsKKyAgICB2YXIgY21wMiA9IHRjdVRleENvbXBh
cmVWZXJpZmllci5leGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZDIsIGNtcFJlZmVyZW5jZSwgcHJl
Yy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgdmFyIGNtcDMgPSB0Y3VU
ZXhDb21wYXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGQzLCBjbXBSZWZlcmVu
Y2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpOworCisgICAgdmFyIGNh
bkJlVHJ1ZSA9IGNtcDAuaXNUcnVlIHx8IGNtcDEuaXNUcnVlIHx8IGNtcDIuaXNUcnVlIHx8IGNt
cDMuaXNUcnVlOworICAgIHZhciBjYW5CZUZhbHNlID0gY21wMC5pc0ZhbHNlIHx8IGNtcDEuaXNG
YWxzZSB8fCBjbXAyLmlzRmFsc2UgfHwgY21wMy5pc0ZhbHNlOworCisgICAgdmFyIHJlc0VyciA9
IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRml4ZWRQb2ludEVycm9yKHByZWMucmVzdWx0Qml0
cyk7CisKKyAgICB2YXIgbWluQm91bmQgPSBjYW5CZUZhbHNlID8gMCA6IDE7CisgICAgdmFyIG1h
eEJvdW5kID0gY2FuQmVUcnVlID8gMSA6IDA7CisKKyAgICByZXR1cm4gZGVNYXRoLmRlSW5SYW5n
ZTMyKHJlc3VsdCwgbWluQm91bmQgLSByZXNFcnIsIG1heEJvdW5kICsgcmVzRXJyKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHtBcnJheTx0Y3VUZXhDb21wYXJlVmVyaWZpZXIuQ21wUmVzdWx0U2V0
Pn0gYXJyCisgKiBAcGFyYW0ge2Z1bmN0aW9uKHRjdVRleENvbXBhcmVWZXJpZmllci5DbXBSZXN1
bHRTZXQpOiBib29sZWFufSBnZXRWYWx1ZQorICogQHJldHVybiB7bnVtYmVyfQorICovCit2YXIg
Z2V0TWFzayA9IGZ1bmN0aW9uKGFyciwgZ2V0VmFsdWUpIHsKKyAgICB2YXIgbWFzayA9IDA7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHZh
bCA9IGdldFZhbHVlKGFycltpXSk7CisgICAgICAgIGlmICh2YWwpCisgICAgICAgICAgICBtYXNr
IHw9IDEgPDwgaTsKKyAgICB9CisgICAgcmV0dXJuIG1hc2s7Cit9OworCisvKioKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5Db21wYXJlTW9kZX0gY29tcGFyZU1vZGUKKyAqIEBwYXJhbSB7dGN1VGV4
Q29tcGFyZVZlcmlmaWVyLlRleENvbXBhcmVQcmVjaXNpb259IHByZWMKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gZGVwdGhzIHZlYzQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geEJvdW5k
cyB2ZWMyCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHlCb3VuZHMgdmVjMgorICogQHBhcmFt
IHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHBh
cmFtIHtib29sZWFufSBpc0ZpeGVkUG9pbnREZXB0aAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAq
LwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzQmlsaW5lYXJQQ0ZDb21wYXJlVmFsaWQgPSBmdW5j
dGlvbihjb21wYXJlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Qm91bmRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeUJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtcFJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRml4ZWRQb2lu
dERlcHRoKSB7CisgICAgYXNzZXJ0TXNnT3B0aW9ucygwLjAgPD0geEJvdW5kc1swXSAmJiB4Qm91
bmRzWzBdIDw9IHhCb3VuZHNbMV0gJiYgeEJvdW5kc1sxXSA8PSAxLjAsICd4IGNvb3JkaW5hdGUg
b3V0IG9mIGJvdW5kcycsIGZhbHNlLCB0cnVlKTsKKyAgICBhc3NlcnRNc2dPcHRpb25zKDAuMCA8
PSB5Qm91bmRzWzBdICYmIHlCb3VuZHNbMF0gPD0geUJvdW5kc1sxXSAmJiB5Qm91bmRzWzFdIDw9
IDEuMCwgJ3kgY29vcmRpbmF0ZSBvdXQgb2YgYm91bmRzJywgZmFsc2UsIHRydWUpOworICAgIGFz
c2VydE1zZ09wdGlvbnMocHJlYy5wY2ZCaXRzID4gMCwgJ1BDRiBiaXRzIG11c3QgYmUgPiAwJywg
ZmFsc2UsIHRydWUpOworCisgICAgdmFyIGQwID0gZGVwdGhzWzBdOworICAgIHZhciBkMSA9IGRl
cHRoc1sxXTsKKyAgICB2YXIgZDIgPSBkZXB0aHNbMl07CisgICAgdmFyIGQzID0gZGVwdGhzWzNd
OworCisgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VUZXhDb21wYXJlVmVyaWZpZXIuQ21wUmVzdWx0
U2V0Pn0gKi8gdmFyIGNtcCA9IFtdOworICAgIGNtcFswXSA9IHRjdVRleENvbXBhcmVWZXJpZmll
ci5leGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZDAsIGNtcFJlZmVyZW5jZSwgcHJlYy5yZWZlcmVu
Y2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgY21wWzFdID0gdGN1VGV4Q29tcGFyZVZl
cmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkMSwgY21wUmVmZXJlbmNlLCBwcmVjLnJl
ZmVyZW5jZUJpdHMsIGlzRml4ZWRQb2ludERlcHRoKTsKKyAgICBjbXBbMl0gPSB0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGQyLCBjbXBSZWZlcmVuY2UsIHBy
ZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpOworICAgIGNtcFszXSA9IHRjdVRl
eENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZDMsIGNtcFJlZmVyZW5j
ZSwgcHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisKKyAgICB2YXIgaXNU
cnVlID0gZ2V0TWFzayhjbXAsIGZ1bmN0aW9uKHgpIHtyZXR1cm4geC5pc1RydWV9KTsKKyAgICB2
YXIgaXNGYWxzZSA9IGdldE1hc2soY21wLCBmdW5jdGlvbih4KSB7cmV0dXJuIHguaXNGYWxzZX0p
OworCisgICAgLy8gSW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzCisgICAgdmFyIHgwID0geEJvdW5k
c1swXTsKKyAgICB2YXIgeDEgPSB4Qm91bmRzWzFdOworICAgIHZhciB5MCA9IHlCb3VuZHNbMF07
CisgICAgdmFyIHkxID0geUJvdW5kc1sxXTsKKworICAgIC8vIEVycm9yIHBhcmFtZXRlcnMKKyAg
ICB2YXIgcGNmRXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGaXhlZFBvaW50RXJyb3Io
cHJlYy5wY2ZCaXRzKTsKKyAgICB2YXIgcmVzRXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1
dGVGaXhlZFBvaW50RXJyb3IocHJlYy5yZXN1bHRCaXRzKTsKKyAgICB2YXIgdG90YWxFcnIgPSBw
Y2ZFcnIgKyByZXNFcnI7CisKKyAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIHZhbGlkIGNvbWJpbmF0
aW9ucy4KKyAgICAvLyBcbm90ZSBJdCBpcyBub3QgZW5vdWdoIHRvIGNvbXB1dGUgbWlubWF4IG92
ZXIgYWxsIHBvc3NpYmxlIHJlc3VsdCBzZXRzLCBhcyByYW5nZXMgbWF5CisgICAgLy8gICAgICAg
bm90IG5lY2Vzc2FyaWx5IG92ZXJsYXAsIGkuZS4gdGhlcmUgYXJlIGdhcHMgYmV0d2VlbiB2YWxp
ZCByYW5nZXMuCisgICAgZm9yICh2YXIgY29tYiA9IDA7IGNvbWIgPCAoMSA8PCA0KTsgY29tYisr
KSB7CisgICAgICAgIC8vIEZpbHRlciBvdXQgaW52YWxpZCBjb21iaW5hdGlvbnM6CisgICAgICAg
IC8vICAxKSBUcnVlIGJpdCBpcyBzZXQgaW4gY29tYiBidXQgbm90IGluIGlzVHJ1ZSA9PiBzYW1w
bGUgY2FuIG5vdCBiZSB0cnVlCisgICAgICAgIC8vICAyKSBUcnVlIGJpdCBpcyBOT1Qgc2V0IGlu
IGNvbWIgYW5kIG5vdCBpbiBpc0ZhbHNlID0+IHNhbXBsZSBjYW4gbm90IGJlIGZhbHNlCisgICAg
ICAgIGlmICgoKGNvbWIgJiBpc1RydWUpIHwgKH5jb21iICYgaXNGYWxzZSkpICE9ICgxIDw8IDQp
IC0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHZhciBjbXBUcnVlID0gdGN1
VGV4Q29tcGFyZVZlcmlmaWVyLmV4dHJhY3RCVmVjNChjb21iLCAwKTsKKyAgICAgICAgdmFyIHJl
ZlZhbCA9IHRjdVRleHR1cmVVdGlsLnNlbGVjdChbMSwgMSwgMSwgMV0sIFswLCAwLCAwLCAwXSwg
Y21wVHJ1ZSk7CisKKyAgICAgICAgdmFyIHYwID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmJpbGlu
ZWFySW50ZXJwb2xhdGUocmVmVmFsLCB4MCwgeTApOworICAgICAgICB2YXIgdjEgPSB0Y3VUZXhD
b21wYXJlVmVyaWZpZXIuYmlsaW5lYXJJbnRlcnBvbGF0ZShyZWZWYWwsIHgxLCB5MCk7CisgICAg
ICAgIHZhciB2MiA9IHRjdVRleENvbXBhcmVWZXJpZmllci5iaWxpbmVhckludGVycG9sYXRlKHJl
ZlZhbCwgeDAsIHkxKTsKKyAgICAgICAgdmFyIHYzID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmJp
bGluZWFySW50ZXJwb2xhdGUocmVmVmFsLCB4MSwgeTEpOworICAgICAgICB2YXIgbWluViA9IE1h
dGgubWluKHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgdmFyIG1heFYgPSBNYXRoLm1heCh2MCwg
djEsIHYyLCB2Myk7CisgICAgICAgIHZhciBtaW5SID0gbWluViAtIHRvdGFsRXJyOworICAgICAg
ICB2YXIgbWF4UiA9IG1heFYgKyB0b3RhbEVycjsKKworICAgICAgICBpZiAoZGVNYXRoLmRlSW5S
YW5nZTMyKHJlc3VsdCwgbWluUiwgbWF4UikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5Db21wYXJlTW9kZX0gY29tcGFyZU1vZGUKKyAqIEBwYXJhbSB7dGN1VGV4Q29tcGFyZVZlcmlm
aWVyLlRleENvbXBhcmVQcmVjaXNpb259IHByZWMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
ZGVwdGhzIHZlYzQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geEJvdW5kcyB2ZWMyCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IHlCb3VuZHMgdmVjMgorICogQHBhcmFtIHtudW1iZXJ9IGNt
cFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHBhcmFtIHtib29sZWFu
fSBpc0ZpeGVkUG9pbnREZXB0aAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmlzQmlsaW5lYXJDb21wYXJlVmFsaWQgPSBmdW5jdGlvbihjb21wYXJlTW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4Qm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeUJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlZmVy
ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRml4ZWRQb2ludERlcHRoKSB7CisgICAg
aWYgKHByZWMucGNmQml0cyA+IDApCisgICAgICAgIHJldHVybiB0Y3VUZXhDb21wYXJlVmVyaWZp
ZXIuaXNCaWxpbmVhclBDRkNvbXBhcmVWYWxpZChjb21wYXJlTW9kZSwgcHJlYywgZGVwdGhzLCB4
Qm91bmRzLCB5Qm91bmRzLCBjbXBSZWZlcmVuY2UsIHJlc3VsdCwgaXNGaXhlZFBvaW50RGVwdGgp
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHRjdVRleENvbXBhcmVWZXJpZmllci5pc0JpbGlu
ZWFyQW55Q29tcGFyZVZhbGlkKGNvbXBhcmVNb2RlLCBwcmVjLCBkZXB0aHMsIGNtcFJlZmVyZW5j
ZSwgcmVzdWx0LCBpc0ZpeGVkUG9pbnREZXB0aCk7Cit9OworLyoqCisgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhD
b21wYXJlUHJlY2lzaW9ufSBwcmVjCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkIHZl
YzIgdGV4dHVyZSBjb29yZGluYXRlcworICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWgorICogQHBh
cmFtIHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICog
QHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGluZWFyQ29t
cGFyZVJlc3VsdFZhbGlkID0gZnVuY3Rpb24obGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRaLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wUmVmZXJlbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSB7CisgICAgdmFyIGlzRml4
ZWRQb2ludERlcHRoID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzRml4ZWRQb2ludERlcHRoVGV4
dHVyZUZvcm1hdChsZXZlbC5nZXRGb3JtYXQoKSk7CisgICAgdmFyIHVCb3VuZHMgPSB0Y3VUZXhW
ZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1h
bGl6ZWRDb29yZHMsIGxldmVsLmdldFdpZHRoKCksIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1sw
XSwgcHJlYy51dndCaXRzWzBdKTsKKyAgICB2YXIgdkJvdW5kcyA9IHRjdVRleFZlcmlmaWVyVXRp
bC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIubm9ybWFsaXplZENvb3Jk
cywgbGV2ZWwuZ2V0SGVpZ2h0KCksIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51
dndCaXRzWzFdKTsKKworICAgIC8vIEludGVnZXIgY29vcmRpbmF0ZSBib3VuZHMgZm9yICh4MCx5
MCkgLSB3aXRob3V0IHdyYXAgbW9kZQorICAgIHZhciBtaW5JID0gTWF0aC5mbG9vcih1Qm91bmRz
WzBdIC0gMC41KTsKKyAgICB2YXIgbWF4SSA9IE1hdGguZmxvb3IodUJvdW5kc1sxXSAtIDAuNSk7
CisgICAgdmFyIG1pbkogPSBNYXRoLmZsb29yKHZCb3VuZHNbMF0gLSAwLjUpOworICAgIHZhciBt
YXhKID0gTWF0aC5mbG9vcih2Qm91bmRzWzFdIC0gMC41KTsKKworICAgIHZhciB3ID0gbGV2ZWwu
Z2V0V2lkdGgoKTsKKyAgICB2YXIgaCA9IGxldmVsLmdldEhlaWdodCgpOworCisgICAgLy8gXHRv
ZG8gWzIwMTMtMDctMDMgcHlyeV0gVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkgZmlyc3QgY29t
cHV0aW5nIHJhbmdlcyBiYXNlZCBvbiB3cmFwIG1vZGUuCisKKyAgICBmb3IgKHZhciBqID0gbWlu
SjsgaiA8PSBtYXhKOyBqKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IG1pbkk7IGkgPD0gbWF4
STsgaSsrKSB7CisgICAgICAgICAgICAvLyBXcmFwcGVkIGNvb3JkaW5hdGVzCisgICAgICAgICAg
ICB2YXIgeDAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpLCB3KTsK
KyAgICAgICAgICAgIHZhciB4MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3Jh
cFMsIGkgKyAxLCB3KTsKKyAgICAgICAgICAgIHZhciB5MCA9IHRjdVRleFZlcmlmaWVyVXRpbC53
cmFwKHNhbXBsZXIud3JhcFQsIGosIGgpOworICAgICAgICAgICAgdmFyIHkxID0gdGN1VGV4VmVy
aWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwgaiArIDEsIGgpOworCisgICAgICAgICAgICAv
LyBCb3VuZHMgZm9yIGZpbHRlcmluZyBmYWN0b3JzCisgICAgICAgICAgICB2YXIgbWluQSA9IGRl
TWF0aC5jbGFtcCgodUJvdW5kc1swXSAtIDAuNSkgLSBpLCAwLCAxKTsKKyAgICAgICAgICAgIHZh
ciBtYXhBID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzWzFdIC0gMC41KSAtIGksIDAsIDEpOworICAg
ICAgICAgICAgdmFyIG1pbkIgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHNbMF0gLSAwLjUpIC0gaiwg
MCwgMSk7CisgICAgICAgICAgICB2YXIgbWF4QiA9IGRlTWF0aC5jbGFtcCgodkJvdW5kc1sxXSAt
IDAuNSkgLSBqLCAwLCAxKTsKKworICAgICAgICAgICAgdmFyIGRlcHRocyA9IFsKKyAgICAgICAg
ICAgICAgICBsZXZlbC5nZXRQaXhEZXB0aCh4MCwgeTAsIGNvb3JkWiksCisgICAgICAgICAgICAg
ICAgbGV2ZWwuZ2V0UGl4RGVwdGgoeDEsIHkwLCBjb29yZFopLAorICAgICAgICAgICAgICAgIGxl
dmVsLmdldFBpeERlcHRoKHgwLCB5MSwgY29vcmRaKSwKKyAgICAgICAgICAgICAgICBsZXZlbC5n
ZXRQaXhEZXB0aCh4MSwgeTEsIGNvb3JkWikKKyAgICAgICAgICAgICAgICBdOworCisgICAgICAg
ICAgICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzQmlsaW5lYXJDb21wYXJlVmFsaWQoc2Ft
cGxlci5jb21wYXJlLCBwcmVjLCBkZXB0aHMsIFttaW5BLCBtYXhBXSwgW21pbkIsIG1heEJdLCBj
bXBSZWZlcmVuY2UsIHJlc3VsdCwgaXNGaXhlZFBvaW50RGVwdGgpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfTsK
KworLyoqCisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5DbXBSZXN1bHRTZXR9IHJl
c3VsdFNldAorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHBhcmFtIHtudW1iZXJ9IHJl
c3VsdEJpdHMKKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzUmVzdWx0SW5TZXQgPSBmdW5j
dGlvbihyZXN1bHRTZXQsIHJlc3VsdCwgcmVzdWx0Qml0cykgeworICAgIHZhciBlcnIgPSB0Y3VU
ZXhWZXJpZmllclV0aWwuY29tcHV0ZUZpeGVkUG9pbnRFcnJvcihyZXN1bHRCaXRzKTsKKyAgICB2
YXIgbWluUiA9IHJlc3VsdCAtIGVycjsKKyAgICB2YXIgbWF4UiA9IHJlc3VsdCArIGVycjsKKwor
ICAgIHJldHVybiAocmVzdWx0U2V0LmlzVHJ1ZSAmJiBkZU1hdGguZGVJblJhbmdlMzIoMSwgbWlu
UiwgbWF4UikpIHx8CisgICAgICAgICAgIChyZXN1bHRTZXQuaXNGYWxzZSAmJiBkZU1hdGguZGVJ
blJhbmdlMzIoMCwgbWluUiwgbWF4UikpOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1
cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5T
YW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21w
YXJlUHJlY2lzaW9ufSBwcmVjCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkIHZlYzIg
dGV4dHVyZSBjb29yZGluYXRlcworICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWgorICogQHBhcmFt
IHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTmVhcmVzdENvbXBh
cmVSZXN1bHRWYWxpZCA9IGZ1bmN0aW9uKGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29y
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkWiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlZmVyZW5jZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkgeworICAgIHZhciBpc0ZpeGVk
UG9pbnREZXB0aCA9IHRjdVRleENvbXBhcmVWZXJpZmllci5pc0ZpeGVkUG9pbnREZXB0aFRleHR1
cmVGb3JtYXQobGV2ZWwuZ2V0Rm9ybWF0KCkpOworICAgIHZhciB1Qm91bmRzID0gdGN1VGV4VmVy
aWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3VuZHMoc2FtcGxlci5ub3JtYWxp
emVkQ29vcmRzLCBsZXZlbC5nZXRXaWR0aCgpLCBjb29yZFswXSwgcHJlYy5jb29yZEJpdHNbMF0s
IHByZWMudXZ3Qml0c1swXSk7CisgICAgdmFyIHZCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwu
Y29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMs
IGxldmVsLmdldEhlaWdodCgpLCBjb29yZFsxXSwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3
Qml0c1sxXSk7CisKKyAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzIC0gd2l0aG91dCB3cmFwIG1v
ZGUKKyAgICB2YXIgbWluSSA9IE1hdGguZmxvb3IodUJvdW5kc1swXSk7CisgICAgdmFyIG1heEkg
PSBNYXRoLmZsb29yKHVCb3VuZHNbMV0pOworICAgIHZhciBtaW5KID0gTWF0aC5mbG9vcih2Qm91
bmRzWzBdKTsKKyAgICB2YXIgbWF4SiA9IE1hdGguZmxvb3IodkJvdW5kc1sxXSk7CisKKyAgICBm
b3IgKHZhciBqID0gbWluSjsgaiA8PSBtYXhKOyBqKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9
IG1pbkk7IGkgPD0gbWF4STsgaSsrKSB7CisgICAgICAgICAgICB2YXIgeCA9IHRjdVRleFZlcmlm
aWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGksIGxldmVsLmdldFdpZHRoKCkpOworICAgICAg
ICAgICAgdmFyIHkgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqLCBs
ZXZlbC5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICB2YXIgZGVwdGggPSBsZXZlbC5nZXRQaXhE
ZXB0aCh4LCB5LCBjb29yZFopOworICAgICAgICAgICAgdmFyIHJlc1NldCA9IHRjdVRleENvbXBh
cmVWZXJpZmllci5leGVjQ29tcGFyZShzYW1wbGVyLmNvbXBhcmUsIGRlcHRoLCBjbXBSZWZlcmVu
Y2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpOworCisgICAgICAgICAg
ICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzUmVzdWx0SW5TZXQocmVzU2V0LCByZXN1bHQs
IHByZWMucmVzdWx0Qml0cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1
VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbAorICogQHBhcmFtIHt0Y3VUZXh0
dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSBm
aWx0ZXJNb2RlCisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJl
Y2lzaW9ufSBwcmVjCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkIHZlYzIgdGV4dHVy
ZSBjb29yZGluYXRlcworICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWgorICogQHBhcmFtIHtudW1i
ZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHJldHVybiB7
Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGV2ZWxDb21wYXJlUmVzdWx0
VmFsaWQgPSBmdW5jdGlvbihsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRaLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY21wUmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0KSB7CisgICAgaWYgKGZpbHRlck1vZGUgPT0gdGN1VGV4
dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUikKKyAgICAgICAgcmV0dXJuIHRjdVRleENvbXBhcmVWZXJp
Zmllci5pc0xpbmVhckNvbXBhcmVSZXN1bHRWYWxpZChsZXZlbCwgc2FtcGxlciwgcHJlYywgY29v
cmQsIGNvb3JkWiwgY21wUmVmZXJlbmNlLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIHRjdVRleENvbXBhcmVWZXJpZmllci5pc05lYXJlc3RDb21wYXJlUmVzdWx0VmFsaWQobGV2
ZWwsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBjb29yZFosIGNtcFJlZmVyZW5jZSwgcmVzdWx0KTsK
K307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlfSBjb21wYXJlTW9k
ZQorICogQHBhcmFtIHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0g
cHJlYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkZXB0aHMwIHZlYzQKKyAqIEBwYXJhbSB7
QXJyYXk8bnVtYmVyPn0gZGVwdGhzMSB2ZWM0CisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJl
bmNlCisgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0CisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRml4
ZWRQb2ludERlcHRoCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0Y3VUZXhDb21wYXJlVmVy
aWZpZXIuaXNUcmlsaW5lYXJBbnlDb21wYXJlVmFsaWQgPSBmdW5jdGlvbihjb21wYXJlTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoczAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGhzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbXBSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRml4ZWRQb2lu
dERlcHRoKSB7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhwcmVjLnBjZkJpdHMgPT09IDAsICdQQ0Yg
Yml0cyBtdXN0IGJlIDAnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB2YXIgY21wMDAgPSB0Y3VUZXhD
b21wYXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGRlcHRoczBbMF0sIGNtcFJl
ZmVyZW5jZSwgcHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgdmFy
IGNtcDAxID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBk
ZXB0aHMwWzFdLCBjbXBSZWZlcmVuY2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50
RGVwdGgpOworICAgIHZhciBjbXAwMiA9IHRjdVRleENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFy
ZShjb21wYXJlTW9kZSwgZGVwdGhzMFsyXSwgY21wUmVmZXJlbmNlLCBwcmVjLnJlZmVyZW5jZUJp
dHMsIGlzRml4ZWRQb2ludERlcHRoKTsKKyAgICB2YXIgY21wMDMgPSB0Y3VUZXhDb21wYXJlVmVy
aWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGRlcHRoczBbM10sIGNtcFJlZmVyZW5jZSwg
cHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgdmFyIGNtcDEwID0g
dGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkZXB0aHMxWzBd
LCBjbXBSZWZlcmVuY2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpOwor
ICAgIHZhciBjbXAxMSA9IHRjdVRleENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFyZShjb21wYXJl
TW9kZSwgZGVwdGhzMVsxXSwgY21wUmVmZXJlbmNlLCBwcmVjLnJlZmVyZW5jZUJpdHMsIGlzRml4
ZWRQb2ludERlcHRoKTsKKyAgICB2YXIgY21wMTIgPSB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuZXhl
Y0NvbXBhcmUoY29tcGFyZU1vZGUsIGRlcHRoczFbMl0sIGNtcFJlZmVyZW5jZSwgcHJlYy5yZWZl
cmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgdmFyIGNtcDEzID0gdGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkZXB0aHMxWzNdLCBjbXBSZWZl
cmVuY2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpOworCisgICAgdmFy
IGNhbkJlVHJ1ZSA9IGNtcDAwLmlzVHJ1ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbXAwMS5pc1RydWUgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY21wMDIuaXNUcnVlIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtcDAzLmlzVHJ1ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbXAxMC5pc1RydWUgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY21wMTEuaXNUcnVlIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNtcDEyLmlzVHJ1ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bXAxMy5pc1RydWU7CisgICAgdmFyIGNhbkJlRmFsc2UgPSBjbXAwMC5pc0ZhbHNlIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcDAxLmlzRmFsc2UgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wMDIuaXNGYWxzZSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXAwMy5pc0ZhbHNlIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcDEwLmlzRmFsc2UgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wMTEuaXNGYWxzZSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXAxMi5pc0ZhbHNlIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcDEzLmlzRmFsc2U7CisKKyAgICB2YXIgcmVz
RXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGaXhlZFBvaW50RXJyb3IocHJlYy5yZXN1
bHRCaXRzKTsKKworICAgIHZhciBtaW5Cb3VuZCA9IGNhbkJlRmFsc2UgPyAwIDogMTsKKyAgICB2
YXIgbWF4Qm91bmQgPSBjYW5CZVRydWUgPyAxIDogMDsKKworICAgIHJldHVybiBkZU1hdGguZGVJ
blJhbmdlMzIocmVzdWx0LCBtaW5Cb3VuZCAtIHJlc0VyciwgbWF4Qm91bmQgKyByZXNFcnIpOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29tcGFyZU1vZGV9IGNvbXBhcmVNb2Rl
CisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBw
cmVjCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGRlcHRoczAgdmVjNAorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBkZXB0aHMxIHZlYzQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geEJv
dW5kczAKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geUJvdW5kczAKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0geEJvdW5kczEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geUJvdW5kczEK
KyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcworICogQHBhcmFtIHtudW1iZXJ9IGNt
cFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHBhcmFtIHtib29sZWFu
fSBpc0ZpeGVkUG9pbnREZXB0aAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmlzVHJpbGluZWFyUENGQ29tcGFyZVZhbGlkID0gZnVuY3Rpb24oY29tcGFy
ZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aHMwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoczEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeEJvdW5kczAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeUJvdW5kczAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEJvdW5k
czEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeUJvdW5kczEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJvdW5kcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbXBSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzRml4ZWRQb2ludERlcHRoKSB7CisgICAgYXNzZXJ0TXNnT3B0aW9ucygwLjAgPD0g
eEJvdW5kczBbMF0gJiYgeEJvdW5kczBbMF0gPD0geEJvdW5kczBbMV0gJiYgeEJvdW5kczBbMV0g
PD0gMS4wLCAneDAgY29vcmRpbmF0ZSBvdXQgb2YgYm91bmRzJywgZmFsc2UsIHRydWUpOworICAg
IGFzc2VydE1zZ09wdGlvbnMoMC4wIDw9IHlCb3VuZHMwWzBdICYmIHlCb3VuZHMwWzBdIDw9IHlC
b3VuZHMwWzFdICYmIHlCb3VuZHMwWzFdIDw9IDEuMCwgJ3kwIGNvb3JkaW5hdGUgb3V0IG9mIGJv
dW5kcycsIGZhbHNlLCB0cnVlKTsKKyAgICBhc3NlcnRNc2dPcHRpb25zKDAuMCA8PSB4Qm91bmRz
MVswXSAmJiB4Qm91bmRzMVswXSA8PSB4Qm91bmRzMVsxXSAmJiB4Qm91bmRzMVsxXSA8PSAxLjAs
ICd4MSBjb29yZGluYXRlIG91dCBvZiBib3VuZHMnLCBmYWxzZSwgdHJ1ZSk7CisgICAgYXNzZXJ0
TXNnT3B0aW9ucygwLjAgPD0geUJvdW5kczFbMF0gJiYgeUJvdW5kczFbMF0gPD0geUJvdW5kczFb
MV0gJiYgeUJvdW5kczFbMV0gPD0gMS4wLCAneTEgY29vcmRpbmF0ZSBvdXQgb2YgYm91bmRzJywg
ZmFsc2UsIHRydWUpOworICAgIGFzc2VydE1zZ09wdGlvbnMoMC4wIDw9IGZCb3VuZHNbMF0gJiYg
ZkJvdW5kc1swXSA8PSBmQm91bmRzWzFdICYmIGZCb3VuZHNbMV0gPD0gMS4wLCAnbGluZWFyIGZh
Y3RvciBvdXQgb2YgYm91bmRzJywgZmFsc2UsIHRydWUpOworICAgIGFzc2VydE1zZ09wdGlvbnMo
cHJlYy5wY2ZCaXRzID4gMCwgJ1BDRiBiaXRzIG11c3QgYmUgPiAwJywgZmFsc2UsIHRydWUpOwor
CisgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VUZXhDb21wYXJlVmVyaWZpZXIuQ21wUmVzdWx0U2V0
Pn0gKi8gdmFyIGNtcCA9IFtdOworICAgIGNtcC5wdXNoKHRjdVRleENvbXBhcmVWZXJpZmllci5l
eGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZGVwdGhzMFswXSwgY21wUmVmZXJlbmNlLCBwcmVjLnJl
ZmVyZW5jZUJpdHMsIGlzRml4ZWRQb2ludERlcHRoKSk7CisgICAgY21wLnB1c2godGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkZXB0aHMwWzFdLCBjbXBSZWZl
cmVuY2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpKTsKKyAgICBjbXAu
cHVzaCh0Y3VUZXhDb21wYXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGRlcHRo
czBbMl0sIGNtcFJlZmVyZW5jZSwgcHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0
aCkpOworICAgIGNtcC5wdXNoKHRjdVRleENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFyZShjb21w
YXJlTW9kZSwgZGVwdGhzMFszXSwgY21wUmVmZXJlbmNlLCBwcmVjLnJlZmVyZW5jZUJpdHMsIGlz
Rml4ZWRQb2ludERlcHRoKSk7CisgICAgY21wLnB1c2godGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4
ZWNDb21wYXJlKGNvbXBhcmVNb2RlLCBkZXB0aHMxWzBdLCBjbXBSZWZlcmVuY2UsIHByZWMucmVm
ZXJlbmNlQml0cywgaXNGaXhlZFBvaW50RGVwdGgpKTsKKyAgICBjbXAucHVzaCh0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuZXhlY0NvbXBhcmUoY29tcGFyZU1vZGUsIGRlcHRoczFbMV0sIGNtcFJlZmVy
ZW5jZSwgcHJlYy5yZWZlcmVuY2VCaXRzLCBpc0ZpeGVkUG9pbnREZXB0aCkpOworICAgIGNtcC5w
dXNoKHRjdVRleENvbXBhcmVWZXJpZmllci5leGVjQ29tcGFyZShjb21wYXJlTW9kZSwgZGVwdGhz
MVsyXSwgY21wUmVmZXJlbmNlLCBwcmVjLnJlZmVyZW5jZUJpdHMsIGlzRml4ZWRQb2ludERlcHRo
KSk7CisgICAgY21wLnB1c2godGN1VGV4Q29tcGFyZVZlcmlmaWVyLmV4ZWNDb21wYXJlKGNvbXBh
cmVNb2RlLCBkZXB0aHMxWzNdLCBjbXBSZWZlcmVuY2UsIHByZWMucmVmZXJlbmNlQml0cywgaXNG
aXhlZFBvaW50RGVwdGgpKTsKKworICAgIHZhciBpc1RydWUgPSBnZXRNYXNrKGNtcCwgZnVuY3Rp
b24oeCkge3JldHVybiB4LmlzVHJ1ZX0pOworICAgIHZhciBpc0ZhbHNlID0gZ2V0TWFzayhjbXAs
IGZ1bmN0aW9uKHgpIHtyZXR1cm4geC5pc0ZhbHNlfSk7CisKKyAgICAvLyBFcnJvciBwYXJhbWV0
ZXJzCisgICAgdmFyIHBjZkVyciA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRml4ZWRQb2lu
dEVycm9yKHByZWMucGNmQml0cyk7CisgICAgdmFyIHJlc0VyciA9IHRjdVRleFZlcmlmaWVyVXRp
bC5jb21wdXRlRml4ZWRQb2ludEVycm9yKHByZWMucmVzdWx0Qml0cyk7CisgICAgdmFyIHRvdGFs
RXJyID0gcGNmRXJyICsgcmVzRXJyOworCisgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCB2YWxpZCBj
b21iaW5hdGlvbnMuCisgICAgZm9yICh2YXIgY29tYiA9IDA7IGNvbWIgPCAoMSA8PCA4KTsgY29t
YisrKSB7CisgICAgICAgIC8vIEZpbHRlciBvdXQgaW52YWxpZCBjb21iaW5hdGlvbnMuCisgICAg
ICAgIGlmICgoKGNvbWIgJiBpc1RydWUpIHwgKH5jb21iICYgaXNGYWxzZSkpICE9ICgxIDw8IDgp
IC0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHZhciBjbXBUcnVlMCA9IHRj
dVRleENvbXBhcmVWZXJpZmllci5leHRyYWN0QlZlYzQoY29tYiwgMCk7CisgICAgICAgIHZhciBj
bXBUcnVlMSA9IHRjdVRleENvbXBhcmVWZXJpZmllci5leHRyYWN0QlZlYzQoY29tYiwgNCk7Cisg
ICAgICAgIHZhciByZWZWYWwwID0gdGN1VGV4dHVyZVV0aWwuc2VsZWN0KFsxLCAxLCAxLCAxXSwg
WzAsIDAsIDAsIDBdLCBjbXBUcnVlMCk7CisgICAgICAgIHZhciByZWZWYWwxID0gdGN1VGV4dHVy
ZVV0aWwuc2VsZWN0KFsxLCAxLCAxLCAxXSwgWzAsIDAsIDAsIDBdLCBjbXBUcnVlMSk7CisKKyAg
ICAgICAgLy8gQmlsaW5lYXIgaW50ZXJwb2xhdGlvbiB3aXRoaW4gbGV2ZWxzLgorICAgICAgICB2
YXIgdjAwID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmJpbGluZWFySW50ZXJwb2xhdGUocmVmVmFs
MCwgeEJvdW5kczBbMF0sIHlCb3VuZHMwWzBdKTsKKyAgICAgICAgdmFyIHYwMSA9IHRjdVRleENv
bXBhcmVWZXJpZmllci5iaWxpbmVhckludGVycG9sYXRlKHJlZlZhbDAsIHhCb3VuZHMwWzFdLCB5
Qm91bmRzMFswXSk7CisgICAgICAgIHZhciB2MDIgPSB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuYmls
aW5lYXJJbnRlcnBvbGF0ZShyZWZWYWwwLCB4Qm91bmRzMFswXSwgeUJvdW5kczBbMV0pOworICAg
ICAgICB2YXIgdjAzID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmJpbGluZWFySW50ZXJwb2xhdGUo
cmVmVmFsMCwgeEJvdW5kczBbMV0sIHlCb3VuZHMwWzFdKTsKKyAgICAgICAgdmFyIG1pblYwID0g
TWF0aC5taW4odjAwLCB2MDEsIHYwMiwgdjAzKTsKKyAgICAgICAgdmFyIG1heFYwID0gTWF0aC5t
YXgodjAwLCB2MDEsIHYwMiwgdjAzKTsKKworICAgICAgICB2YXIgdjEwID0gdGN1VGV4Q29tcGFy
ZVZlcmlmaWVyLmJpbGluZWFySW50ZXJwb2xhdGUocmVmVmFsMSwgeEJvdW5kczFbMF0sIHlCb3Vu
ZHMxWzBdKTsKKyAgICAgICAgdmFyIHYxMSA9IHRjdVRleENvbXBhcmVWZXJpZmllci5iaWxpbmVh
ckludGVycG9sYXRlKHJlZlZhbDEsIHhCb3VuZHMxWzFdLCB5Qm91bmRzMVswXSk7CisgICAgICAg
IHZhciB2MTIgPSB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuYmlsaW5lYXJJbnRlcnBvbGF0ZShyZWZW
YWwxLCB4Qm91bmRzMVswXSwgeUJvdW5kczFbMV0pOworICAgICAgICB2YXIgdjEzID0gdGN1VGV4
Q29tcGFyZVZlcmlmaWVyLmJpbGluZWFySW50ZXJwb2xhdGUocmVmVmFsMSwgeEJvdW5kczFbMV0s
IHlCb3VuZHMxWzFdKTsKKyAgICAgICAgdmFyIG1pblYxID0gTWF0aC5taW4odjEwLCB2MTEsIHYx
MiwgdjEzKTsKKyAgICAgICAgdmFyIG1heFYxID0gTWF0aC5tYXgodjEwLCB2MTEsIHYxMiwgdjEz
KTsKKworICAgICAgICAvLyBDb21wdXRlIG1pbi1tYXggYm91bmRzIGJ5IGZpbHRlcmluZyBiZXR3
ZWVuIG1pbmltdW0gYm91bmRzIGFuZCBtYXhpbXVtIGJvdW5kcyBiZXR3ZWVuIGxldmVscy4KKyAg
ICAgICAgLy8gSFcgY2FuIGVuZCB1cCBjaG9vc2luZyBwcmV0dHkgbXVjaCBhbnkgb2Ygc2FtcGxl
cyBiZXR3ZWVuIGxldmVscywgYW5kIHRodXMgaW50ZXJwb2xhdGluZworICAgICAgICAvLyBiZXR3
ZWVuIG1pbmltdW1zIHNob3VsZCB5aWVsZCBsb3dlciBib3VuZCBmb3IgcmFuZ2UsIGFuZCBzYW1l
IGZvciB1cHBlciBib3VuZC4KKyAgICAgICAgLy8gXHRvZG8gWzIwMTMtMDctMTcgcHlyeV0gVGhp
cyBzZWVtcyBzZXBhcmFibGU/IENhbiB0aGlzIGJlIG9wdGltaXplZD8gQXQgbGVhc3QgcmFuZ2Vz
IGNvdWxkIGJlIHByZS1jb21wdXRlZCBhbmQgbGF0ZXIgY29tYmluZWQuCisgICAgICAgIHZhciBt
aW5GMCA9IG1pblYwICogKDEgLSBmQm91bmRzWzBdKSArIG1pblYxICogZkJvdW5kc1swXTsKKyAg
ICAgICAgdmFyIG1pbkYxID0gbWluVjAgKiAoMSAtIGZCb3VuZHNbMV0pICsgbWluVjEgKiBmQm91
bmRzWzFdOworICAgICAgICB2YXIgbWF4RjAgPSBtYXhWMCAqICgxIC0gZkJvdW5kc1swXSkgKyBt
YXhWMSAqIGZCb3VuZHNbMF07CisgICAgICAgIHZhciBtYXhGMSA9IG1heFYwICogKDEgLSBmQm91
bmRzWzFdKSArIG1heFYxICogZkJvdW5kc1sxXTsKKworICAgICAgICB2YXIgbWluRiA9IE1hdGgu
bWluKG1pbkYwLCBtaW5GMSk7CisgICAgICAgIHZhciBtYXhGID0gTWF0aC5tYXgobWF4RjAsIG1h
eEYxKTsKKworICAgICAgICB2YXIgbWluUiA9IG1pbkYgLSB0b3RhbEVycjsKKyAgICAgICAgdmFy
IG1heFIgPSBtYXhGICsgdG90YWxFcnI7CisKKyAgICAgICAgaWYgKGRlTWF0aC5kZUluUmFuZ2Uz
MihyZXN1bHQsIG1pblIsIG1heFIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworCit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5D
b21wYXJlTW9kZX0gY29tcGFyZU1vZGUKKyAqIEBwYXJhbSB7dGN1VGV4Q29tcGFyZVZlcmlmaWVy
LlRleENvbXBhcmVQcmVjaXNpb259IHByZWMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGVw
dGhzMCB2ZWM0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGRlcHRoczEgdmVjNAorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSB4Qm91bmRzMAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB5
Qm91bmRzMAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4Qm91bmRzMQorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSB5Qm91bmRzMQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBmQm91bmRz
CisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNlCisgKiBAcGFyYW0ge251bWJlcn0gcmVz
dWx0CisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRml4ZWRQb2ludERlcHRoCisgKiBAcmV0dXJuIHti
b29sZWFufQorICovCit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNUcmlsaW5lYXJDb21wYXJlVmFs
aWQgPSBmdW5jdGlvbihjb21wYXJlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRo
czAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhzMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Qm91bmRzMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB5Qm91bmRzMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4Qm91bmRzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5Qm91bmRzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91
bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlZmVyZW5jZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXhlZFBvaW50RGVwdGgpIHsKKyAgICBpZiAo
cHJlYy5wY2ZCaXRzID4gMCkKKyAgICAgICAgcmV0dXJuIHRjdVRleENvbXBhcmVWZXJpZmllci5p
c1RyaWxpbmVhclBDRkNvbXBhcmVWYWxpZChjb21wYXJlTW9kZSwgcHJlYywgZGVwdGhzMCwgZGVw
dGhzMSwgeEJvdW5kczAsIHlCb3VuZHMwLCB4Qm91bmRzMSwgeUJvdW5kczEsIGZCb3VuZHMsIGNt
cFJlZmVyZW5jZSwgcmVzdWx0LCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzVHJpbGluZWFyQW55Q29tcGFyZVZhbGlk
KGNvbXBhcmVNb2RlLCBwcmVjLCBkZXB0aHMwLCBkZXB0aHMxLCBjbXBSZWZlcmVuY2UsIHJlc3Vs
dCwgaXNGaXhlZFBvaW50RGVwdGgpOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUu
Q29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwwCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29u
c3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwxCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxl
cn0gc2FtcGxlcgorICogQHBhcmFtIHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVBy
ZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZCB2ZWMyIHRleHR1
cmUgY29vcmRpbmF0ZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFoKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gZkJvdW5kcyB2ZWMyCisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNl
CisgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0
Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNMaW5lYXJNaXBtYXBMaW5lYXJDb21wYXJlUmVzdWx0VmFs
aWQgPSBmdW5jdGlvbihsZXZlbDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWwxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb29yZFosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZkJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bXBSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0KSB7CisgICAgdmFyIGlzRml4ZWRQb2ludERlcHRoID0gdGN1VGV4Q29tcGFyZVZl
cmlmaWVyLmlzRml4ZWRQb2ludERlcHRoVGV4dHVyZUZvcm1hdChsZXZlbDAuZ2V0Rm9ybWF0KCkp
OworCisgICAgLy8gXHRvZG8gWzIwMTMtMDctMDQgcHlyeV0gVGhpcyBpcyBzdHJpY3RseSBub3Qg
Y29ycmVjdCBhcyBjb29yZGluYXRlcyBiZXR3ZWVuIGxldmVscyBzaG91bGQgYmUgZGVwZW5kZW50
LgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIFJpZ2h0IG5vdyB0aGlzIGFsbG93cyBw
YWlyaW5nIGFueSB0d28gdmFsaWQgYmlsaW5lYXIgcXVhZHMuCisKKyAgICB2YXIgdzAgPSBsZXZl
bDAuZ2V0V2lkdGgoKTsKKyAgICB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICB2YXIg
aDAgPSBsZXZlbDAuZ2V0SGVpZ2h0KCk7CisgICAgdmFyIGgxID0gbGV2ZWwxLmdldEhlaWdodCgp
OworCisgICAgdmFyIHVCb3VuZHMwID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3Jt
YWxpemVkQ29vcmRCb3VuZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCB3MCwgY29vcmRbMF0s
IHByZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgIHZhciB1Qm91bmRzMSA9
IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBs
ZXIubm9ybWFsaXplZENvb3JkcywgdzEsIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1swXSwgcHJl
Yy51dndCaXRzWzBdKTsKKyAgICB2YXIgdkJvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29t
cHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIGgw
LCBjb29yZFsxXSwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3Qml0c1sxXSk7CisgICAgdmFy
IHZCb3VuZHMxID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRC
b3VuZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBoMSwgY29vcmRbMV0sIHByZWMuY29vcmRC
aXRzWzFdLCBwcmVjLnV2d0JpdHNbMV0pOworCisgICAgLy8gSW50ZWdlciBjb29yZGluYXRlcyAt
IHdpdGhvdXQgd3JhcCBtb2RlCisgICAgdmFyIG1pbkkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsw
XSAtIDAuNSk7CisgICAgdmFyIG1heEkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsxXSAtIDAuNSk7
CisgICAgdmFyIG1pbkkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVswXSAtIDAuNSk7CisgICAgdmFy
IG1heEkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVsxXSAtIDAuNSk7CisgICAgdmFyIG1pbkowID0g
TWF0aC5mbG9vcih2Qm91bmRzMFswXSAtIDAuNSk7CisgICAgdmFyIG1heEowID0gTWF0aC5mbG9v
cih2Qm91bmRzMFsxXSAtIDAuNSk7CisgICAgdmFyIG1pbkoxID0gTWF0aC5mbG9vcih2Qm91bmRz
MVswXSAtIDAuNSk7CisgICAgdmFyIG1heEoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVsxXSAtIDAu
NSk7CisKKyAgICBmb3IgKHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhKMDsgajArKykgeworICAg
ICAgICBmb3IgKHZhciBpMCA9IG1pbkkwOyBpMCA8PSBtYXhJMDsgaTArKykgeworICAgICAgICAg
ICAgdmFyIG1pbkEwID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzMFswXSAtIDAuNSkgLSBpMCwgMCwg
MSk7CisgICAgICAgICAgICB2YXIgbWF4QTAgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMwWzFdIC0g
MC41KSAtIGkwLCAwLCAxKTsKKyAgICAgICAgICAgIHZhciBtaW5CMCA9IGRlTWF0aC5jbGFtcCgo
dkJvdW5kczBbMF0gLSAwLjUpIC0gajAsIDAsIDEpOworICAgICAgICAgICAgdmFyIG1heEIwID0g
ZGVNYXRoLmNsYW1wKCh2Qm91bmRzMFsxXSAtIDAuNSkgLSBqMCwgMCwgMSk7CisgICAgICAgICAg
ICB2YXIgZGVwdGhzMCA9IFtdOworCisgICAgICAgICAgICB2YXIgeDAgPSB0Y3VUZXhWZXJpZmll
clV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpMCwgdzApOworICAgICAgICAgICAgdmFyIHgxID0g
dGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaTAgKyAxLCB3MCk7CisgICAg
ICAgICAgICB2YXIgeTAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBq
MCwgaDApOworICAgICAgICAgICAgdmFyIHkxID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2Ft
cGxlci53cmFwVCwgajAgKyAxLCBoMCk7CisKKyAgICAgICAgICAgIGRlcHRoczBbMF0gPSBsZXZl
bDAuZ2V0UGl4RGVwdGgoeDAsIHkwLCBjb29yZFopOworICAgICAgICAgICAgZGVwdGhzMFsxXSA9
IGxldmVsMC5nZXRQaXhEZXB0aCh4MSwgeTAsIGNvb3JkWik7CisgICAgICAgICAgICBkZXB0aHMw
WzJdID0gbGV2ZWwwLmdldFBpeERlcHRoKHgwLCB5MSwgY29vcmRaKTsKKyAgICAgICAgICAgIGRl
cHRoczBbM10gPSBsZXZlbDAuZ2V0UGl4RGVwdGgoeDEsIHkxLCBjb29yZFopOworCisgICAgICAg
ICAgICBmb3IgKHZhciBqMSA9IG1pbkoxOyBqMSA8PSBtYXhKMTsgajErKykgeworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkxID0gbWluSTE7IGkxIDw9IG1heEkxOyBpMSsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBtaW5BMSA9IGRlTWF0aC5jbGFtcCgodUJvdW5kczFbMF0gLSAwLjUp
IC0gaTEsIDAsIDEpOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF4QTEgPSBkZU1hdGguY2xh
bXAoKHVCb3VuZHMxWzFdIC0gMC41KSAtIGkxLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIG1pbkIxID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRzMVswXSAtIDAuNSkgLSBqMSwgMCwgMSk7
CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXhCMSA9IGRlTWF0aC5jbGFtcCgodkJvdW5kczFb
MV0gLSAwLjUpIC0gajEsIDAsIDEpOworICAgICAgICAgICAgICAgICAgICB2YXIgZGVwdGhzMSA9
IFtdOworCisgICAgICAgICAgICAgICAgICAgIHgwID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAo
c2FtcGxlci53cmFwUywgaTEsIHcxKTsKKyAgICAgICAgICAgICAgICAgICAgeDEgPSB0Y3VUZXhW
ZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpMSArIDEsIHcxKTsKKyAgICAgICAgICAg
ICAgICAgICAgeTAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqMSwg
aDEpOworICAgICAgICAgICAgICAgICAgICB5MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNh
bXBsZXIud3JhcFQsIGoxICsgMSwgaDEpOworCisgICAgICAgICAgICAgICAgICAgIGRlcHRoczFb
MF0gPSBsZXZlbDEuZ2V0UGl4RGVwdGgoeDAsIHkwLCBjb29yZFopOworICAgICAgICAgICAgICAg
ICAgICBkZXB0aHMxWzFdID0gbGV2ZWwxLmdldFBpeERlcHRoKHgxLCB5MCwgY29vcmRaKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGVwdGhzMVsyXSA9IGxldmVsMS5nZXRQaXhEZXB0aCh4MCwgeTEs
IGNvb3JkWik7CisgICAgICAgICAgICAgICAgICAgIGRlcHRoczFbM10gPSBsZXZlbDEuZ2V0UGl4
RGVwdGgoeDEsIHkxLCBjb29yZFopOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhD
b21wYXJlVmVyaWZpZXIuaXNUcmlsaW5lYXJDb21wYXJlVmFsaWQoc2FtcGxlci5jb21wYXJlLCBw
cmVjLCBkZXB0aHMwLCBkZXB0aHMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW21pbkEwLCBtYXhBMF0sIFttaW5CMCwgbWF4QjBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkExLCBtYXhBMV0sIFtt
aW5CMSwgbWF4QjFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZkJvdW5kcywgY21wUmVmZXJlbmNlLCByZXN1bHQsIGlzRml4ZWRQb2ludERlcHRoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK307
CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxl
dmVsMAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVs
MQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7dGN1
VGV4Q29tcGFyZVZlcmlmaWVyLlRleENvbXBhcmVQcmVjaXNpb259IHByZWMKKyAqIEBwYXJhbSB7
QXJyYXk8bnVtYmVyPn0gY29vcmQgdmVjMiB0ZXh0dXJlIGNvb3JkaW5hdGVzCisgKiBAcGFyYW0g
e251bWJlcn0gY29vcmRaCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGZCb3VuZHMgdmVjMgor
ICogQHBhcmFtIHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3Vs
dAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTmVh
cmVzdE1pcG1hcExpbmVhckNvbXBhcmVSZXN1bHRWYWxpZCA9IGZ1bmN0aW9uKGxldmVsMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkWiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlZmVyZW5jZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpIHsKKyAgICB2YXIgaXNG
aXhlZFBvaW50RGVwdGggPSB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNGaXhlZFBvaW50RGVwdGhU
ZXh0dXJlRm9ybWF0KGxldmVsMC5nZXRGb3JtYXQoKSk7CisKKyAgICB2YXIgdzAgPSBsZXZlbDAu
Z2V0V2lkdGgoKTsKKyAgICB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICB2YXIgaDAg
PSBsZXZlbDAuZ2V0SGVpZ2h0KCk7CisgICAgdmFyIGgxID0gbGV2ZWwxLmdldEhlaWdodCgpOwor
CisgICAgdmFyIHVCb3VuZHMwID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxp
emVkQ29vcmRCb3VuZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCB3MCwgY29vcmRbMF0sIHBy
ZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgIHZhciB1Qm91bmRzMSA9IHRj
dVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIu
bm9ybWFsaXplZENvb3JkcywgdzEsIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51
dndCaXRzWzBdKTsKKyAgICB2YXIgdkJvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0
ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIGgwLCBj
b29yZFsxXSwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3Qml0c1sxXSk7CisgICAgdmFyIHZC
b3VuZHMxID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3Vu
ZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBoMSwgY29vcmRbMV0sIHByZWMuY29vcmRCaXRz
WzFdLCBwcmVjLnV2d0JpdHNbMV0pOworCisgICAgdmFyIG1pbkkwID0gTWF0aC5mbG9vcih1Qm91
bmRzMFswXSk7CisgICAgdmFyIG1heEkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsxXSk7CisgICAg
dmFyIG1pbkkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVswXSk7CisgICAgdmFyIG1heEkxID0gTWF0
aC5mbG9vcih1Qm91bmRzMVsxXSk7CisgICAgdmFyIG1pbkowID0gTWF0aC5mbG9vcih2Qm91bmRz
MFswXSk7CisgICAgdmFyIG1heEowID0gTWF0aC5mbG9vcih2Qm91bmRzMFsxXSk7CisgICAgdmFy
IG1pbkoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVswXSk7CisgICAgdmFyIG1heEoxID0gTWF0aC5m
bG9vcih2Qm91bmRzMVsxXSk7CisKKyAgICBmb3IgKHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhK
MDsgajArKykgeworICAgICAgICBmb3IgKHZhciBpMCA9IG1pbkkwOyBpMCA8PSBtYXhJMDsgaTAr
KykgeworICAgICAgICAgICAgdmFyIHgwID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxl
ci53cmFwUywgaTAsIHcwKTsKKyAgICAgICAgICAgIHZhciB5MCA9IHRjdVRleFZlcmlmaWVyVXRp
bC53cmFwKHNhbXBsZXIud3JhcFQsIGowLCBoMCk7CisKKyAgICAgICAgICAgIC8vIERlcml2YXRl
ZCBmcm9tIEMrKyBkRVFQIGZ1bmN0aW9uIGxvb2t1cERlcHRoKCkKKyAgICAgICAgICAgIC8vIFNp
bmNlIHgwIGFuZCB5MCBhcmUgd3JhcHBlZCwgaGVyZSBsb29rdXBEZXB0aCgpIHJldHVybnMgdGhl
IHNhbWUgcmVzdWx0IGFzIGdldFBpeERlcHRoKCkKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoZGVNYXRoLmRlSW5Cb3VuZHMzMih4MCwgMCwgbGV2ZWwwLmdldFdpZHRoKCkpICYmIGRlTWF0
aC5kZUluQm91bmRzMzIoeTAsIDAsIGxldmVsMC5nZXRIZWlnaHQoKSkgJiYgZGVNYXRoLmRlSW5C
b3VuZHMzMihjb29yZFosIDAsIGxldmVsMC5nZXREZXB0aCgpKSwgJ3gwLCB5MCBvciBjb29yZFog
b3V0IG9mIGJvdW5kLicsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciBkZXB0aDAgPSBs
ZXZlbDAuZ2V0UGl4RGVwdGgoeDAsIHkwLCBjb29yZFopOworCisgICAgICAgICAgICBmb3IgKHZh
ciBqMSA9IG1pbkoxOyBqMSA8PSBtYXhKMTsgajErKykgeworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkxID0gbWluSTE7IGkxIDw9IG1heEkxOyBpMSsrKSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciB4MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGkxLCB3MSk7
CisgICAgICAgICAgICAgICAgICAgIHZhciB5MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNh
bXBsZXIud3JhcFQsIGoxLCBoMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVyaXZhdGVk
IGZyb20gQysrIGRFUVAgZnVuY3Rpb24gbG9va3VwRGVwdGgoKQorICAgICAgICAgICAgICAgICAg
ICAvLyBTaW5jZSB4MSBhbmQgeTEgYXJlIHdyYXBwZWQsIGhlcmUgbG9va3VwRGVwdGgoKSByZXR1
cm5zIHRoZSBzYW1lIHJlc3VsdCBhcyBnZXRQaXhEZXB0aCgpCisgICAgICAgICAgICAgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoZGVNYXRoLmRlSW5Cb3VuZHMzMih4MSwgMCwgbGV2ZWwxLmdldFdp
ZHRoKCkpICYmIGRlTWF0aC5kZUluQm91bmRzMzIoeTEsIDAsIGxldmVsMS5nZXRIZWlnaHQoKSks
ICd4MSBvciB5MSBvdXQgb2YgYm91bmQuJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAg
ICAgICB2YXIgZGVwdGgxID0gbGV2ZWwxLmdldFBpeERlcHRoKHgxLCB5MSwgY29vcmRaKTsKKwor
ICAgICAgICAgICAgICAgICAgICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGluZWFyQ29t
cGFyZVZhbGlkKHNhbXBsZXIuY29tcGFyZSwgcHJlYywgW2RlcHRoMCwgZGVwdGgxXSwgZkJvdW5k
cywgY21wUmVmZXJlbmNlLCByZXN1bHQsIGlzRml4ZWRQb2ludERlcHRoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK307CisKKy8qKgorICog
QHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMAorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMQorICogQHBhcmFt
IHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0
ZXJNb2RlfSBsZXZlbEZpbHRlcgorICogQHBhcmFtIHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4
Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZCB2
ZWMyIHRleHR1cmUgY29vcmRpbmF0ZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFoKKyAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcyB2ZWMyCisgKiBAcGFyYW0ge251bWJlcn0gY21w
UmVmZXJlbmNlCisgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0CisgKiBAcmV0dXJuIHtib29sZWFu
fQorICovCit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNNaXBtYXBMaW5lYXJDb21wYXJlUmVzdWx0
VmFsaWQgPSBmdW5jdGlvbihsZXZlbDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWwxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWxGaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb29yZFosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZkJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbXBSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0KSB7CisgICAgaWYgKGxldmVsRmlsdGVyID09IHRjdVRleHR1cmUuRmls
dGVyTW9kZS5MSU5FQVIpCisgICAgICAgIHJldHVybiB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNM
aW5lYXJNaXBtYXBMaW5lYXJDb21wYXJlUmVzdWx0VmFsaWQobGV2ZWwwLCBsZXZlbDEsIHNhbXBs
ZXIsIHByZWMsIGNvb3JkLCBjb29yZFosIGZCb3VuZHMsIGNtcFJlZmVyZW5jZSwgcmVzdWx0KTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybiB0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNOZWFyZXN0
TWlwbWFwTGluZWFyQ29tcGFyZVJlc3VsdFZhbGlkKGxldmVsMCwgbGV2ZWwxLCBzYW1wbGVyLCBw
cmVjLCBjb29yZCwgY29vcmRaLCBmQm91bmRzLCBjbXBSZWZlcmVuY2UsIHJlc3VsdCk7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3fSB0ZXh0dXJlCisgKiBA
cGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHt0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBjb29yZCB2ZWMyIHRleHR1cmUgY29vcmRpbmF0ZXMKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gbG9kQm91bmRzIHZlYzIgbGV2ZWwtb2YtZGV0YWlsIGJvdW5kcworICogQHBhcmFt
IHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzVGV4Q29tcGFyZVJl
c3VsdFZhbGlkMkQgPSBmdW5jdGlvbih0ZXh0dXJlLCBzYW1wbGVyLCBwcmVjLCBjb29yZCwgbG9k
Qm91bmRzLCBjbXBSZWZlcmVuY2UsIHJlc3VsdCkgeworICAgIHZhciBtaW5Mb2QgPSBsb2RCb3Vu
ZHNbMF07CisgICAgdmFyIG1heExvZCA9IGxvZEJvdW5kc1sxXTsKKyAgICB2YXIgY2FuQmVNYWdu
aWZpZWQgPSBtaW5Mb2QgPD0gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisgICAgdmFyIGNhbkJlTWlu
aWZpZWQgPSBtYXhMb2QgPiBzYW1wbGVyLmxvZFRocmVzaG9sZDsKKworICAgIGlmIChjYW5CZU1h
Z25pZmllZCkgeworICAgICAgICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGV2ZWxDb21w
YXJlUmVzdWx0VmFsaWQodGV4dHVyZS5nZXRMZXZlbCgwKSwgc2FtcGxlciwgc2FtcGxlci5tYWdG
aWx0ZXIsIHByZWMsIGNvb3JkLCAwLCBjbXBSZWZlcmVuY2UsIHJlc3VsdCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoY2FuQmVNaW5pZmllZCkgeworICAgICAg
ICB2YXIgaXNOZWFyZXN0TWlwbWFwID0gdGN1VGV4VmVyaWZpZXJVdGlsLmlzTmVhcmVzdE1pcG1h
cEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlcik7CisgICAgICAgIHZhciBpc0xpbmVhck1pcG1hcCA9
IHRjdVRleFZlcmlmaWVyVXRpbC5pc0xpbmVhck1pcG1hcEZpbHRlcihzYW1wbGVyLm1pbkZpbHRl
cik7CisgICAgICAgIHZhciBtaW5UZXhMZXZlbCA9IDA7CisgICAgICAgIHZhciBtYXhUZXhMZXZl
bCA9IHRleHR1cmUuZ2V0TnVtTGV2ZWxzKCkgLSAxOworCisgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMobWluVGV4TGV2ZWwgPCBtYXhUZXhMZXZlbCwgJ0ludmFsaWQgdGV4dHVyZSBsZXZlbHMuJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgIGlmIChpc0xpbmVhck1pcG1hcCkgeworICAgICAgICAg
ICAgdmFyIG1pbkxldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IobWluTG9kKSwgbWluVGV4
TGV2ZWwsIG1heFRleExldmVsIC0gMSk7CisgICAgICAgICAgICB2YXIgbWF4TGV2ZWwgPSBkZU1h
dGguY2xhbXAoTWF0aC5mbG9vcihtYXhMb2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAx
KTsKKworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5MZXZlbCA8PSBtYXhMZXZlbCwg
J0ludmFsaWQgdGV4dHVyZSBsZXZlbHMuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBm
b3IgKHZhciBsZXZlbCA9IG1pbkxldmVsOyBsZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykgewor
ICAgICAgICAgICAgICAgIHZhciBtaW5GID0gZGVNYXRoLmNsYW1wKG1pbkxvZCAtIGxldmVsLCAw
LCAxKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4RiA9IGRlTWF0aC5jbGFtcChtYXhMb2QgLSBs
ZXZlbCwgMCwgMSk7CisKKyAgICAgICAgICAgICAgICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVy
LmlzTWlwbWFwTGluZWFyQ29tcGFyZVJlc3VsdFZhbGlkKHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwp
LCB0ZXh0dXJlLmdldExldmVsKGxldmVsICsgMSksIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVyVXRp
bC5nZXRMZXZlbEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMsIGNvb3JkLCAwLCBbbWlu
RiwgbWF4Rl0sIGNtcFJlZmVyZW5jZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaXNOZWFyZXN0TWlw
bWFwKSB7CisgICAgICAgICAgICAvLyBcbm90ZSBUaGUgYWNjdXJhdGUgZm9ybXVsYSBmb3IgbmVh
cmVzdCBtaXBtYXBwaW5nIGlzIGxldmVsID0gY2VpbChsb2QgKyAwLjUpIC0gMSBidXQgS2hyb25v
cyBoYXMgbWFkZQorICAgICAgICAgICAgLy8gICAgICAgZGVjaXNpb24gdG8gYWxsb3cgZmxvb3Io
bG9kICsgMC41KSBhcyB3ZWxsLgorICAgICAgICAgICAgdmFyIG1pbkxldmVsID0gZGVNYXRoLmNs
YW1wKE1hdGguY2VpbChtaW5Mb2QgKyAwLjUpIC0gMSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVs
KTsKKyAgICAgICAgICAgIHZhciBtYXhMZXZlbCA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKG1h
eExvZCArIDAuNSksIG1pblRleExldmVsLCBtYXhUZXhMZXZlbCk7CisKKyAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMobWluTGV2ZWwgPD0gbWF4TGV2ZWwsICdJbnZhbGlkIHRleHR1cmUgbGV2
ZWxzLicsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSBtaW5M
ZXZlbDsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICBpZiAo
dGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGV2ZWxDb21wYXJlUmVzdWx0VmFsaWQodGV4dHVyZS5n
ZXRMZXZlbChsZXZlbCksIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVyVXRpbC5nZXRMZXZlbEZpbHRl
cihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMsIGNvb3JkLCAwLCBjbXBSZWZlcmVuY2UsIHJlc3Vs
dCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRjdVRleENvbXBhcmVWZXJpZmllci5pc0xl
dmVsQ29tcGFyZVJlc3VsdFZhbGlkKHRleHR1cmUuZ2V0TGV2ZWwoMCksIHNhbXBsZXIsIHNhbXBs
ZXIubWluRmlsdGVyLCBwcmVjLCBjb29yZCwgMCwgY21wUmVmZXJlbmNlLCByZXN1bHQpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3
fSB0ZXh0dXJlCisgKiBAcGFyYW0ge251bWJlcn0gYmFzZUxldmVsTmR4CisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHt0Y3VUZXhDb21wYXJlVmVyaWZp
ZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHt0Y3VUZXh0dXJlLkN1YmVG
YWNlQ29vcmRzfSBjb29yZHMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcyB2ZWMy
CisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNlCisgKiBAcGFyYW0ge251bWJlcn0gcmVz
dWx0CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNT
ZWFtcGxlc3NMaW5lYXJNaXBtYXBMaW5lYXJDb21wYXJlUmVzdWx0VmFsaWQgPSBmdW5jdGlvbih0
ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2VMZXZlbE5keCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZCb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wUmVmZXJlbmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkgewor
ICAgIHZhciBpc0ZpeGVkUG9pbnREZXB0aCA9IHRjdVRleENvbXBhcmVWZXJpZmllci5pc0ZpeGVk
UG9pbnREZXB0aFRleHR1cmVGb3JtYXQodGV4dHVyZS5nZXRMZXZlbEZhY2UoYmFzZUxldmVsTmR4
LCB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1gpLmdldEZvcm1hdCgpKTsK
KyAgICB2YXIgc2l6ZTAgPSB0ZXh0dXJlLmdldExldmVsRmFjZShiYXNlTGV2ZWxOZHgsIGNvb3Jk
cy5mYWNlKS5nZXRXaWR0aCgpOworICAgIHZhciBzaXplMSA9IHRleHR1cmUuZ2V0TGV2ZWxGYWNl
KGJhc2VMZXZlbE5keCArIDEsIGNvb3Jkcy5mYWNlKS5nZXRXaWR0aCgpOworCisgICAgdmFyIHVC
b3VuZHMwID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3Vu
ZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBzaXplMCwgY29vcmRzLnMsIHByZWMuY29vcmRC
aXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgIHZhciB1Qm91bmRzMSA9IHRjdVRleFZlcmlm
aWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIubm9ybWFsaXpl
ZENvb3Jkcywgc2l6ZTEsIGNvb3Jkcy5zLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRz
WzBdKTsKKyAgICB2YXIgdkJvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5v
cm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIHNpemUwLCBjb29y
ZHMudCwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3Qml0c1sxXSk7CisgICAgdmFyIHZCb3Vu
ZHMxID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3VuZHMo
c2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBzaXplMSwgY29vcmRzLnQsIHByZWMuY29vcmRCaXRz
WzFdLCBwcmVjLnV2d0JpdHNbMV0pOworCisgICAgLy8gSW50ZWdlciBjb29yZGluYXRlcyAtIHdp
dGhvdXQgd3JhcCBtb2RlCisgICAgdmFyIG1pbkkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFswXSAt
IDAuNSk7CisgICAgdmFyIG1heEkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsxXSAtIDAuNSk7Cisg
ICAgdmFyIG1pbkkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVswXSAtIDAuNSk7CisgICAgdmFyIG1h
eEkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVsxXSAtIDAuNSk7CisgICAgdmFyIG1pbkowID0gTWF0
aC5mbG9vcih2Qm91bmRzMFswXSAtIDAuNSk7CisgICAgdmFyIG1heEowID0gTWF0aC5mbG9vcih2
Qm91bmRzMFsxXSAtIDAuNSk7CisgICAgdmFyIG1pbkoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVsw
XSAtIDAuNSk7CisgICAgdmFyIG1heEoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVsxXSAtIDAuNSk7
CisKKyAgICAvKiogQHR5cGUge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vz
cz59ICovIHZhciBmYWNlczAgPSBbXTsKKyAgICAvKiogQHR5cGUge0FycmF5PHRjdVRleHR1cmUu
Q29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59ICovIHZhciBmYWNlczEgPSBbXTsKKworICAgIGZvciAo
dmFyIGtleSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisgICAgICAgIHZhciBmYWNlID0gdGN1
VGV4dHVyZS5DdWJlRmFjZVtrZXldOworICAgICAgICBmYWNlczBbZmFjZV0gPSB0ZXh0dXJlLmdl
dExldmVsRmFjZShiYXNlTGV2ZWxOZHgsIGZhY2UpOworICAgICAgICBmYWNlczFbZmFjZV0gPSB0
ZXh0dXJlLmdldExldmVsRmFjZShiYXNlTGV2ZWxOZHggKyAxLCBmYWNlKTsKKyAgICB9CisKKyAg
ICBmb3IgKHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhKMDsgajArKykgeworICAgICAgICBmb3Ig
KHZhciBpMCA9IG1pbkkwOyBpMCA8PSBtYXhJMDsgaTArKykgeworICAgICAgICAgICAgdmFyIG1p
bkEwID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzMFswXSAtIDAuNSkgLSBpMCwgMCwgMSk7CisgICAg
ICAgICAgICB2YXIgbWF4QTAgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMwWzFdIC0gMC41KSAtIGkw
LCAwLCAxKTsKKyAgICAgICAgICAgIHZhciBtaW5CMCA9IGRlTWF0aC5jbGFtcCgodkJvdW5kczBb
MF0gLSAwLjUpIC0gajAsIDAsIDEpOworICAgICAgICAgICAgdmFyIG1heEIwID0gZGVNYXRoLmNs
YW1wKCh2Qm91bmRzMFsxXSAtIDAuNSkgLSBqMCwgMCwgMSk7CisgICAgICAgICAgICB2YXIgZGVw
dGhzMCA9IFtdOworCisgICAgICAgICAgICB2YXIgYzAwID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVF
ZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTAg
KyAwLCBqMCArIDBdKSwgc2l6ZTApOworICAgICAgICAgICAgdmFyIGMxMCA9IHRjdVRleHR1cmUu
cmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyhjb29yZHMu
ZmFjZSwgW2kwICsgMSwgajAgKyAwXSksIHNpemUwKTsKKyAgICAgICAgICAgIHZhciBjMDEgPSB0
Y3VUZXh0dXJlLnJlbWFwQ3ViZUVkZ2VDb29yZHMobmV3IHRjdVRleHR1cmUuQ3ViZUZhY2VDb29y
ZHMoY29vcmRzLmZhY2UsIFtpMCArIDAsIGowICsgMV0pLCBzaXplMCk7CisgICAgICAgICAgICB2
YXIgYzExID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1
YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTAgKyAxLCBqMCArIDFdKSwgc2l6ZTApOworCisg
ICAgICAgICAgICAvLyBJZiBhbnkgb2Ygc2FtcGxlcyBpcyBvdXQgb2YgYm90aCBlZGdlcywgaW1w
bGVtZW50YXRpb25zIGNhbiBkbyBwcmV0dHkgbXVjaCBhbnl0aGluZyBhY2NvcmRpbmcgdG8gc3Bl
Yy4KKyAgICAgICAgICAgIC8vIFx0b2RvIFsyMDEzLTA3LTA4IHB5cnldIFRlc3QgdGhlIHNwZWNp
YWwgY2FzZSB3aGVyZSBhbGwgY29ybmVyIHBpeGVscyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgY29s
b3IuCisgICAgICAgICAgICBpZiAoYzAwID09IG51bGwgfHwgYzAxID09IG51bGwgfHwgYzEwID09
IG51bGwgfHwgYzExID09IG51bGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgICAgIGRlcHRoczBbMF0gPSBmYWNlczBbYzAwLmZhY2VdLmdldFBpeERlcHRoKGMwMC5z
LCBjMDAudCk7CisgICAgICAgICAgICBkZXB0aHMwWzFdID0gZmFjZXMwW2MxMC5mYWNlXS5nZXRQ
aXhEZXB0aChjMTAucywgYzEwLnQpOworICAgICAgICAgICAgZGVwdGhzMFsyXSA9IGZhY2VzMFtj
MDEuZmFjZV0uZ2V0UGl4RGVwdGgoYzAxLnMsIGMwMS50KTsKKyAgICAgICAgICAgIGRlcHRoczBb
M10gPSBmYWNlczBbYzExLmZhY2VdLmdldFBpeERlcHRoKGMxMS5zLCBjMTEudCk7CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGoxID0gbWluSjE7IGoxIDw9IG1heEoxOyBqMSsrKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaTEgPSBtaW5JMTsgaTEgPD0gbWF4STE7IGkxKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIG1pbkExID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzMVswXSAtIDAu
NSkgLSBpMSwgMCwgMSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXhBMSA9IGRlTWF0aC5j
bGFtcCgodUJvdW5kczFbMV0gLSAwLjUpIC0gaTEsIDAsIDEpOworICAgICAgICAgICAgICAgICAg
ICB2YXIgbWluQjEgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHMxWzBdIC0gMC41KSAtIGoxLCAwLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heEIxID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRz
MVsxXSAtIDAuNSkgLSBqMSwgMCwgMSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBkZXB0aHMx
ID0gW107CisKKyAgICAgICAgICAgICAgICAgICAgYzAwID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVF
ZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTEg
KyAwLCBqMSArIDBdKSwgc2l6ZTEpOworICAgICAgICAgICAgICAgICAgICBjMTAgPSB0Y3VUZXh0
dXJlLnJlbWFwQ3ViZUVkZ2VDb29yZHMobmV3IHRjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHMoY29v
cmRzLmZhY2UsIFtpMSArIDEsIGoxICsgMF0pLCBzaXplMSk7CisgICAgICAgICAgICAgICAgICAg
IGMwMSA9IHRjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJl
RmFjZUNvb3Jkcyhjb29yZHMuZmFjZSwgW2kxICsgMCwgajEgKyAxXSksIHNpemUxKTsKKyAgICAg
ICAgICAgICAgICAgICAgYzExID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0
Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTEgKyAxLCBqMSArIDFdKSwg
c2l6ZTEpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjMDAgPT0gbnVsbCB8fCBjMDEgPT0g
bnVsbCB8fCBjMTAgPT0gbnVsbCB8fCBjMTEgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIGRlcHRoczFbMF0gPSBmYWNl
czFbYzAwLmZhY2VdLmdldFBpeERlcHRoKGMwMC5zLCBjMDAudCk7CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoczFbMV0gPSBmYWNlczFbYzEwLmZhY2VdLmdldFBpeERlcHRoKGMxMC5zLCBjMTAu
dCk7CisgICAgICAgICAgICAgICAgICAgIGRlcHRoczFbMl0gPSBmYWNlczFbYzAxLmZhY2VdLmdl
dFBpeERlcHRoKGMwMS5zLCBjMDEudCk7CisgICAgICAgICAgICAgICAgICAgIGRlcHRoczFbM10g
PSBmYWNlczFbYzExLmZhY2VdLmdldFBpeERlcHRoKGMxMS5zLCBjMTEudCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRjdVRleENvbXBhcmVWZXJpZmllci5pc1RyaWxpbmVhckNvbXBhcmVW
YWxpZChzYW1wbGVyLmNvbXBhcmUsIHByZWMsIGRlcHRoczAsIGRlcHRoczEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluQTAsIG1heEEwXSwgW21p
bkIwLCBtYXhCMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbbWluQTEsIG1heEExXSwgW21pbkIxLCBtYXhCMV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLCBjbXBSZWZlcmVuY2UsIHJlc3Vs
dCwgaXNGaXhlZFBvaW50RGVwdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4
dHVyZUN1YmVWaWV3fSB0ZXh0dXJlCisgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxOZHgKKyAqIEBw
YXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge3RjdVRleENvbXBh
cmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBwcmVjCisgKiBAcGFyYW0ge3RjdVRleHR1
cmUuQ3ViZUZhY2VDb29yZHN9IGNvb3JkcworICogQHBhcmFtIHtudW1iZXJ9IGNtcFJlZmVyZW5j
ZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwor
Cit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNTZWFtbGVzc0xpbmVhckNvbXBhcmVSZXN1bHRWYWxp
ZCA9IGZ1bmN0aW9uKHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZXZlbE5keCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY21wUmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSB7CisgICAgdmFyIGlzRml4ZWRQb2ludERlcHRo
ID0gdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzRml4ZWRQb2ludERlcHRoVGV4dHVyZUZvcm1hdCh0
ZXh0dXJlLmdldExldmVsRmFjZShsZXZlbE5keCwgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFD
RV9ORUdBVElWRV9YKS5nZXRGb3JtYXQoKSk7CisgICAgdmFyIHNpemUgPSB0ZXh0dXJlLmdldExl
dmVsRmFjZShsZXZlbE5keCwgY29vcmRzLmZhY2UpLmdldFdpZHRoKCk7CisKKyAgICB2YXIgdUJv
dW5kcyA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRz
KHNhbXBsZXIubm9ybWFsaXplZENvb3Jkcywgc2l6ZSwgY29vcmRzLnMsIHByZWMuY29vcmRCaXRz
WzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgIHZhciB2Qm91bmRzID0gdGN1VGV4VmVyaWZpZXJV
dGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3VuZHMoc2FtcGxlci5ub3JtYWxpemVkQ29v
cmRzLCBzaXplLCBjb29yZHMudCwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3Qml0c1sxXSk7
CisKKyAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGUgYm91bmRzIGZvciAoeDAseTApIC0gd2l0aG91
dCB3cmFwIG1vZGUKKyAgICB2YXIgbWluSSA9IE1hdGguZmxvb3IodUJvdW5kc1swXSAtIDAuNSk7
CisgICAgdmFyIG1heEkgPSBNYXRoLmZsb29yKHVCb3VuZHNbMV0gLSAwLjUpOworICAgIHZhciBt
aW5KID0gTWF0aC5mbG9vcih2Qm91bmRzWzBdIC0gMC41KTsKKyAgICB2YXIgbWF4SiA9IE1hdGgu
Zmxvb3IodkJvdW5kc1sxXSAtIDAuNSk7CisKKyAgICAvLyBGYWNlIGFjY2Vzc2VzCisgICAgLyoq
IEB0eXBlIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+fSAqLyB2YXIg
ZmFjZXMgPSBbXTsKKworICAgIGZvciAodmFyIGtleSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7
CisgICAgICAgIHZhciBmYWNlID0gdGN1VGV4dHVyZS5DdWJlRmFjZVtrZXldOworICAgICAgICBm
YWNlc1tmYWNlXSA9IHRleHR1cmUuZ2V0TGV2ZWxGYWNlKGxldmVsTmR4LCBmYWNlKTsKKyAgICB9
CisKKyAgICBmb3IgKHZhciBqID0gbWluSjsgaiA8PSBtYXhKOyBqKyspIHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IG1pbkk7IGkgPD0gbWF4STsgaSsrKSB7CisgICAgICAgICAgICB2YXIgYzAwID0g
dGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29v
cmRzKGNvb3Jkcy5mYWNlLCBbaSArIDAsIGogKyAwXSksIHNpemUpOworICAgICAgICAgICAgdmFy
IGMxMCA9IHRjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJl
RmFjZUNvb3Jkcyhjb29yZHMuZmFjZSwgW2kgKyAxLCBqICsgMF0pLCBzaXplKTsKKyAgICAgICAg
ICAgIHZhciBjMDEgPSB0Y3VUZXh0dXJlLnJlbWFwQ3ViZUVkZ2VDb29yZHMobmV3IHRjdVRleHR1
cmUuQ3ViZUZhY2VDb29yZHMoY29vcmRzLmZhY2UsIFtpICsgMCwgaiArIDFdKSwgc2l6ZSk7Cisg
ICAgICAgICAgICB2YXIgYzExID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0
Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaSArIDEsIGogKyAxXSksIHNp
emUpOworCisgICAgICAgICAgICAvLyBJZiBhbnkgb2Ygc2FtcGxlcyBpcyBvdXQgb2YgYm90aCBl
ZGdlcywgaW1wbGVtZW50YXRpb25zIGNhbiBkbyBwcmV0dHkgbXVjaCBhbnl0aGluZyBhY2NvcmRp
bmcgdG8gc3BlYy4KKyAgICAgICAgICAgIC8vIFx0b2RvIFsyMDEzLTA3LTA4IHB5cnldIFRlc3Qg
dGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBhbGwgY29ybmVyIHBpeGVscyBoYXZlIGV4YWN0bHkgdGhl
IHNhbWUgY29sb3IuCisgICAgICAgICAgICBpZiAoIWMwMCB8fCAhYzAxIHx8ICFjMTAgfHwgIWMx
MSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgLy8gQm91bmRz
IGZvciBmaWx0ZXJpbmcgZmFjdG9ycworICAgICAgICAgICAgdmFyIG1pbkEgPSBkZU1hdGguY2xh
bXAoKHVCb3VuZHNbMF0gLSAwLjUpIC0gaSwgMCwgMSk7CisgICAgICAgICAgICB2YXIgbWF4QSA9
IGRlTWF0aC5jbGFtcCgodUJvdW5kc1sxXSAtIDAuNSkgLSBpLCAwLCAxKTsKKyAgICAgICAgICAg
IHZhciBtaW5CID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRzWzBdIC0gMC41KSAtIGosIDAsIDEpOwor
ICAgICAgICAgICAgdmFyIG1heEIgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHNbMV0gLSAwLjUpIC0g
aiwgMCwgMSk7CisKKyAgICAgICAgICAgIHZhciBkZXB0aHMgPSBbXTsKKyAgICAgICAgICAgIGRl
cHRoc1swXSA9IGZhY2VzW2MwMC5mYWNlXS5nZXRQaXhEZXB0aChjMDAucywgYzAwLnQpOworICAg
ICAgICAgICAgZGVwdGhzWzFdID0gZmFjZXNbYzEwLmZhY2VdLmdldFBpeERlcHRoKGMxMC5zLCBj
MTAudCk7CisgICAgICAgICAgICBkZXB0aHNbMl0gPSBmYWNlc1tjMDEuZmFjZV0uZ2V0UGl4RGVw
dGgoYzAxLnMsIGMwMS50KTsKKyAgICAgICAgICAgIGRlcHRoc1szXSA9IGZhY2VzW2MxMS5mYWNl
XS5nZXRQaXhEZXB0aChjMTEucywgYzExLnQpOworCisgICAgICAgICAgICBpZiAodGN1VGV4Q29t
cGFyZVZlcmlmaWVyLmlzQmlsaW5lYXJDb21wYXJlVmFsaWQoc2FtcGxlci5jb21wYXJlLCBwcmVj
LCBkZXB0aHMsIFttaW5BLCBtYXhBXSwgW21pbkIsIG1heEJdLCBjbXBSZWZlcmVuY2UsIHJlc3Vs
dCwgaXNGaXhlZFBvaW50RGVwdGgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3fSB0ZXh0dXJlCisgKiBAcGFyYW0ge251bWJlcn0g
bGV2ZWxOZHgKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVyTW9kZQorICogQHBhcmFtIHt0Y3VUZXhD
b21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSBjb29yZHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBjbXBSZWZl
cmVuY2UKKyAqIEBwYXJhbSB7bnVtYmVyfSByZXN1bHQKKyAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
Ki8KK3RjdVRleENvbXBhcmVWZXJpZmllci5pc0N1YmVMZXZlbENvbXBhcmVSZXN1bHRWYWxpZCA9
IGZ1bmN0aW9uKHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGV2ZWxOZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlZmVyZW5jZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpIHsKKyAg
ICBpZiAoZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSKSB7CisgICAg
ICAgIGlmIChzYW1wbGVyLnNlYW1sZXNzQ3ViZU1hcCkKKyAgICAgICAgICAgIHJldHVybiB0Y3VU
ZXhDb21wYXJlVmVyaWZpZXIuaXNTZWFtbGVzc0xpbmVhckNvbXBhcmVSZXN1bHRWYWxpZCh0ZXh0
dXJlLCBsZXZlbE5keCwgc2FtcGxlciwgcHJlYywgY29vcmRzLCBjbXBSZWZlcmVuY2UsIHJlc3Vs
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXhDb21wYXJlVmVyaWZp
ZXIuaXNMaW5lYXJDb21wYXJlUmVzdWx0VmFsaWQodGV4dHVyZS5nZXRMZXZlbEZhY2UobGV2ZWxO
ZHgsIGNvb3Jkcy5mYWNlKSwgc2FtcGxlciwgcHJlYywgW2Nvb3Jkcy5zLCBjb29yZHMudF0sIDAs
IGNtcFJlZmVyZW5jZSwgcmVzdWx0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHRjdVRl
eENvbXBhcmVWZXJpZmllci5pc05lYXJlc3RDb21wYXJlUmVzdWx0VmFsaWQodGV4dHVyZS5nZXRM
ZXZlbEZhY2UobGV2ZWxOZHgsIGNvb3Jkcy5mYWNlKSwgc2FtcGxlciwgcHJlYywgW2Nvb3Jkcy5z
LCBjb29yZHMudF0sIDAsIGNtcFJlZmVyZW5jZSwgcmVzdWx0KTsKK307CisKKy8qKgorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlld30gdGV4dHVyZQorICogQHBhcmFtIHtudW1i
ZXJ9IGJhc2VMZXZlbE5keAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIK
KyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSBsZXZlbEZpbHRlcgorICogQHBhcmFt
IHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSBjb29yZHMKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gZkJvdW5kcyB2ZWMyCisgKiBAcGFyYW0ge251bWJlcn0gY21wUmVmZXJlbmNlCisg
KiBAcGFyYW0ge251bWJlcn0gcmVzdWx0CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0Y3VU
ZXhDb21wYXJlVmVyaWZpZXIuaXNDdWJlTWlwbWFwTGluZWFyQ29tcGFyZVJlc3VsdFZhbGlkID0g
ZnVuY3Rpb24odGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZUxldmVsTmR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXBSZWZlcmVuY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkgeworICAg
IGlmIChsZXZlbEZpbHRlciA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSKSB7CisgICAg
ICAgIGlmIChzYW1wbGVyLnNlYW1sZXNzQ3ViZU1hcCkKKyAgICAgICAgICAgIHJldHVybiB0Y3VU
ZXhDb21wYXJlVmVyaWZpZXIuaXNTZWFtcGxlc3NMaW5lYXJNaXBtYXBMaW5lYXJDb21wYXJlUmVz
dWx0VmFsaWQodGV4dHVyZSwgYmFzZUxldmVsTmR4LCBzYW1wbGVyLCBwcmVjLCBjb29yZHMsIGZC
b3VuZHMsIGNtcFJlZmVyZW5jZSwgcmVzdWx0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmV0dXJuIHRjdVRleENvbXBhcmVWZXJpZmllci5pc0xpbmVhck1pcG1hcExpbmVhckNvbXBhcmVS
ZXN1bHRWYWxpZCh0ZXh0dXJlLmdldExldmVsRmFjZShiYXNlTGV2ZWxOZHgsIGNvb3Jkcy5mYWNl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLmdldExldmVsRmFjZShiYXNlTGV2ZWxOZHggKyAxLCBjb29yZHMuZmFjZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlciwgcHJlYywgW2Nvb3Jkcy5zLCBjb29yZHMudF0sIDAsIGZCb3VuZHMsIGNtcFJl
ZmVyZW5jZSwgcmVzdWx0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHRjdVRleENvbXBh
cmVWZXJpZmllci5pc05lYXJlc3RNaXBtYXBMaW5lYXJDb21wYXJlUmVzdWx0VmFsaWQodGV4dHVy
ZS5nZXRMZXZlbEZhY2UoYmFzZUxldmVsTmR4LCBjb29yZHMuZmFjZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS5nZXRMZXZl
bEZhY2UoYmFzZUxldmVsTmR4ICsgMSwgY29vcmRzLmZhY2UpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIsIHByZWMsIFtjb29y
ZHMucywgY29vcmRzLnRdLCAwLCBmQm91bmRzLCBjbXBSZWZlcmVuY2UsIHJlc3VsdCk7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXd9IHRleHR1cmUKKyAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge3RjdVRleENv
bXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBwcmVjCisgKiBAcGFyYW0ge0FycmF5
PG51bWJlcj59IGNvb3JkIHZlYzIgdGV4dHVyZSBjb29yZGluYXRlcworICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBsb2RCb3VuZHMgdmVjMiBsZXZlbC1vZi1kZXRhaWwgYm91bmRzCisgKiBAcGFy
YW0ge251bWJlcn0gY21wUmVmZXJlbmNlCisgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0CisgKiBA
cmV0dXJuIHtib29sZWFufQorICovCit0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNUZXhDb21wYXJl
UmVzdWx0VmFsaWRDdWJlID0gZnVuY3Rpb24odGV4dHVyZSwgc2FtcGxlciwgcHJlYywgY29vcmQs
IGxvZEJvdW5kcywgY21wUmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICAvKiogQHR5cGUge0FycmF5
PHRjdVRleHR1cmUuQ3ViZUZhY2U+fSAqL3ZhciBwb3NzaWJsZUZhY2VzID0gdGN1VGV4VmVyaWZp
ZXJVdGlsLmdldFBvc3NpYmxlQ3ViZUZhY2VzKGNvb3JkLCBwcmVjLmNvb3JkQml0cyk7CisKKyAg
ICBpZiAoIXBvc3NpYmxlRmFjZXMpCisgICAgICAgIHJldHVybiB0cnVlOyAvLyBSZXN1bHQgaXMg
dW5kZWZpbmVkLgorCisgICAgZm9yICh2YXIgdHJ5RmFjZU5keCA9IDA7IHRyeUZhY2VOZHggPCBw
b3NzaWJsZUZhY2VzLmxlbmd0aDsgdHJ5RmFjZU5keCsrKSB7CisgICAgICAgIHZhciBmYWNlID0g
cG9zc2libGVGYWNlc1t0cnlGYWNlTmR4XTsKKyAgICAgICAgdmFyIGZhY2VDb29yZHMgPSBuZXcg
dGN1VGV4dHVyZS5DdWJlRmFjZUNvb3JkcyhmYWNlLCB0Y3VUZXh0dXJlLnByb2plY3RUb0ZhY2Uo
ZmFjZSwgY29vcmQpKTsKKyAgICAgICAgdmFyIG1pbkxvZCA9IGxvZEJvdW5kc1swXTsKKyAgICAg
ICAgdmFyIG1heExvZCA9IGxvZEJvdW5kc1sxXTsKKyAgICAgICAgdmFyIGNhbkJlTWFnbmlmaWVk
ID0gbWluTG9kIDw9IHNhbXBsZXIubG9kVGhyZXNob2xkOworICAgICAgICB2YXIgY2FuQmVNaW5p
ZmllZCA9IG1heExvZCA+IHNhbXBsZXIubG9kVGhyZXNob2xkOworCisgICAgICAgIGlmIChjYW5C
ZU1hZ25pZmllZCkgeworICAgICAgICAgICAgaWYgKHRjdVRleENvbXBhcmVWZXJpZmllci5pc0N1
YmVMZXZlbENvbXBhcmVSZXN1bHRWYWxpZCh0ZXh0dXJlLCAwLCBzYW1wbGVyLCBzYW1wbGVyLm1h
Z0ZpbHRlciwgcHJlYywgZmFjZUNvb3JkcywgY21wUmVmZXJlbmNlLCByZXN1bHQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbkJlTWlu
aWZpZWQpIHsKKyAgICAgICAgICAgIHZhciBpc05lYXJlc3RNaXBtYXAgPSB0Y3VUZXhWZXJpZmll
clV0aWwuaXNOZWFyZXN0TWlwbWFwRmlsdGVyKHNhbXBsZXIubWluRmlsdGVyKTsKKyAgICAgICAg
ICAgIHZhciBpc0xpbmVhck1pcG1hcCA9IHRjdVRleFZlcmlmaWVyVXRpbC5pc0xpbmVhck1pcG1h
cEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlcik7CisgICAgICAgICAgICB2YXIgbWluVGV4TGV2ZWwg
PSAwOworICAgICAgICAgICAgdmFyIG1heFRleExldmVsID0gdGV4dHVyZS5nZXROdW1MZXZlbHMo
KSAtIDE7CisKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobWluVGV4TGV2ZWwgPCBtYXhU
ZXhMZXZlbCwgJ0ludmFsaWQgdGV4dHVyZSBsZXZlbHMuJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgICAgICBpZiAoaXNMaW5lYXJNaXBtYXApIHsKKyAgICAgICAgICAgICAgICB2YXIgbWluTGV2
ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtaW5Mb2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4
TGV2ZWwgLSAxKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4TGV2ZWwgPSBkZU1hdGguY2xhbXAo
TWF0aC5mbG9vcihtYXhMb2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAxKTsKKworICAg
ICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobWluTGV2ZWwgPD0gbWF4TGV2ZWwsICdJbnZh
bGlkIHRleHR1cmUgbGV2ZWxzLicsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGxldmVsID0gbWluTGV2ZWw7IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBtaW5GID0gZGVNYXRoLmNsYW1wKG1pbkxvZCAtIGxldmVs
LCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heEYgPSBkZU1hdGguY2xhbXAobWF4
TG9kIC0gbGV2ZWwsIDAsIDEpOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhDb21w
YXJlVmVyaWZpZXIuaXNDdWJlTWlwbWFwTGluZWFyQ29tcGFyZVJlc3VsdFZhbGlkKHRleHR1cmUs
IGxldmVsLCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxGaWx0ZXIoc2FtcGxl
ci5taW5GaWx0ZXIpLCBwcmVjLCBmYWNlQ29vcmRzLCBbbWluRiwgbWF4Rl0sIGNtcFJlZmVyZW5j
ZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOZWFyZXN0TWlwbWFwKSB7Cisg
ICAgICAgICAgICAgICAgLy8gXG5vdGUgVGhlIGFjY3VyYXRlIGZvcm11bGEgZm9yIG5lYXJlc3Qg
bWlwbWFwcGluZyBpcyBsZXZlbCA9IGNlaWwobG9kICsgMC41KSAtIDEgYnV0IEtocm9ub3MgaGFz
IG1hZGUKKyAgICAgICAgICAgICAgICAvLyAgICAgICBkZWNpc2lvbiB0byBhbGxvdyBmbG9vcihs
b2QgKyAwLjUpIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgdmFyIG1pbkxldmVsID0gZGVNYXRo
LmNsYW1wKE1hdGguY2VpbChtaW5Mb2QgKyAwLjUpIC0gMSwgbWluVGV4TGV2ZWwsIG1heFRleExl
dmVsKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4TGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5m
bG9vcihtYXhMb2QgKyAwLjUpLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwpOworCisgICAgICAg
ICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5MZXZlbCA8PSBtYXhMZXZlbCwgJ0ludmFsaWQg
dGV4dHVyZSBsZXZlbHMuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgZm9yICh2
YXIgbGV2ZWwgPSBtaW5MZXZlbDsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRjdVRleENvbXBhcmVWZXJpZmllci5pc0N1YmVMZXZlbENvbXBh
cmVSZXN1bHRWYWxpZCh0ZXh0dXJlLCBsZXZlbCwgc2FtcGxlciwgdGN1VGV4VmVyaWZpZXJVdGls
LmdldExldmVsRmlsdGVyKHNhbXBsZXIubWluRmlsdGVyKSwgcHJlYywgZmFjZUNvb3JkcywgY21w
UmVmZXJlbmNlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzQ3ViZUxldmVsQ29tcGFyZVJlc3VsdFZhbGlk
KHRleHR1cmUsIDAsIHNhbXBsZXIsIHNhbXBsZXIubWluRmlsdGVyLCBwcmVjLCBmYWNlQ29vcmRz
LCBjbXBSZWZlcmVuY2UsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fSB0ZXh0
dXJlCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHt0
Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gcHJlYworICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSBjb29yZCB2ZWMzIHRleHR1cmUgY29vcmRpbmF0ZXMKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gbG9kQm91bmRzIHZlYzIgbGV2ZWwtb2YtZGV0YWlsIGJvdW5kcwor
ICogQHBhcmFtIHtudW1iZXJ9IGNtcFJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IHJlc3Vs
dAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzVGV4
Q29tcGFyZVJlc3VsdFZhbGlkMkRBcnJheSA9IGZ1bmN0aW9uKHRleHR1cmUsIHNhbXBsZXIsIHBy
ZWMsIGNvb3JkLCBsb2RCb3VuZHMsIGNtcFJlZmVyZW5jZSwgcmVzdWx0KSB7CisgICAgdmFyIGRl
cHRoRXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGbG9hdGluZ1BvaW50RXJyb3IoY29v
cmRbMl0sIHByZWMuY29vcmRCaXRzWzJdKSArIHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRml4
ZWRQb2ludEVycm9yKHByZWMudXZ3Qml0c1syXSk7CisgICAgdmFyIG1pblogPSBjb29yZFsyXSAt
IGRlcHRoRXJyOworICAgIHZhciBtYXhaID0gY29vcmRbMl0gKyBkZXB0aEVycjsKKyAgICB2YXIg
bWluTGF5ZXIgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtaW5aICsgMC41KSwgMCwgdGV4dHVy
ZS5nZXROdW1MYXllcnMoKSAtIDEpOworICAgIHZhciBtYXhMYXllciA9IGRlTWF0aC5jbGFtcChN
YXRoLmZsb29yKG1heFogKyAwLjUpLCAwLCB0ZXh0dXJlLmdldE51bUxheWVycygpIC0gMSk7CisK
KyAgICBmb3IgKHZhciBsYXllciA9IG1pbkxheWVyOyBsYXllciA8PSBtYXhMYXllcjsgbGF5ZXIr
KykgeworICAgICAgICB2YXIgbWluTG9kID0gbG9kQm91bmRzWzBdOworICAgICAgICB2YXIgbWF4
TG9kID0gbG9kQm91bmRzWzFdOworICAgICAgICB2YXIgY2FuQmVNYWduaWZpZWQgPSBtaW5Mb2Qg
PD0gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisgICAgICAgIHZhciBjYW5CZU1pbmlmaWVkID0gbWF4
TG9kID4gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisKKyAgICAgICAgaWYgKGNhbkJlTWFnbmlmaWVk
KSB7CisgICAgICAgICAgICBpZiAodGN1VGV4Q29tcGFyZVZlcmlmaWVyLmlzTGV2ZWxDb21wYXJl
UmVzdWx0VmFsaWQodGV4dHVyZS5nZXRMZXZlbCgwKSwgc2FtcGxlciwgc2FtcGxlci5tYWdGaWx0
ZXIsIHByZWMsIGRlTWF0aC5zd2l6emxlKGNvb3JkLCBbMCwgMV0pLCBsYXllciwgY21wUmVmZXJl
bmNlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGNhbkJlTWluaWZpZWQpIHsKKyAgICAgICAgICAgIHZhciBpc05lYXJlc3RN
aXBtYXAgPSB0Y3VUZXhWZXJpZmllclV0aWwuaXNOZWFyZXN0TWlwbWFwRmlsdGVyKHNhbXBsZXIu
bWluRmlsdGVyKTsKKyAgICAgICAgICAgIHZhciBpc0xpbmVhck1pcG1hcCA9IHRjdVRleFZlcmlm
aWVyVXRpbC5pc0xpbmVhck1pcG1hcEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlcik7CisgICAgICAg
ICAgICB2YXIgbWluVGV4TGV2ZWwgPSAwOworICAgICAgICAgICAgdmFyIG1heFRleExldmVsID0g
dGV4dHVyZS5nZXROdW1MZXZlbHMoKSAtIDE7CisKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMobWluVGV4TGV2ZWwgPCBtYXhUZXhMZXZlbCwgJ0ludmFsaWQgdGV4dHVyZSBsZXZlbHMuJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBpZiAoaXNMaW5lYXJNaXBtYXApIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbWluTGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtaW5Mb2Qp
LCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAxKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4
TGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtYXhMb2QpLCBtaW5UZXhMZXZlbCwgbWF4
VGV4TGV2ZWwgLSAxKTsKKworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobWluTGV2
ZWwgPD0gbWF4TGV2ZWwsICdJbnZhbGlkIHRleHR1cmUgbGV2ZWxzLicsIGZhbHNlLCB0cnVlKTsK
KworICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsID0gbWluTGV2ZWw7IGxldmVsIDw9IG1h
eExldmVsOyBsZXZlbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtaW5GID0gZGVNYXRo
LmNsYW1wKG1pbkxvZCAtIGxldmVsLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1h
eEYgPSBkZU1hdGguY2xhbXAobWF4TG9kIC0gbGV2ZWwsIDAsIDEpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmICh0Y3VUZXhDb21wYXJlVmVyaWZpZXIuaXNNaXBtYXBMaW5lYXJDb21wYXJlUmVz
dWx0VmFsaWQodGV4dHVyZS5nZXRMZXZlbChsZXZlbCksIHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwg
KyAxKSwgc2FtcGxlciwgdGN1VGV4VmVyaWZpZXJVdGlsLmdldExldmVsRmlsdGVyKHNhbXBsZXIu
bWluRmlsdGVyKSwgcHJlYywgZGVNYXRoLnN3aXp6bGUoY29vcmQsIFswLCAxXSksIGxheWVyLCBb
bWluRiwgbWF4Rl0sIGNtcFJlZmVyZW5jZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXNOZWFyZXN0TWlwbWFwKSB7CisgICAgICAgICAgICAgICAgLy8gXG5vdGUgVGhlIGFjY3Vy
YXRlIGZvcm11bGEgZm9yIG5lYXJlc3QgbWlwbWFwcGluZyBpcyBsZXZlbCA9IGNlaWwobG9kICsg
MC41KSAtIDEgYnV0IEtocm9ub3MgaGFzIG1hZGUKKyAgICAgICAgICAgICAgICAvLyAgICAgICBk
ZWNpc2lvbiB0byBhbGxvdyBmbG9vcihsb2QgKyAwLjUpIGFzIHdlbGwuCisgICAgICAgICAgICAg
ICAgdmFyIG1pbkxldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguY2VpbChtaW5Mb2QgKyAwLjUpIC0g
MSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVsKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4TGV2
ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtYXhMb2QgKyAwLjUpLCBtaW5UZXhMZXZlbCwg
bWF4VGV4TGV2ZWwpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5MZXZl
bCA8PSBtYXhMZXZlbCwgJ0ludmFsaWQgdGV4dHVyZSBsZXZlbHMuJywgZmFsc2UsIHRydWUpOwor
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSBtaW5MZXZlbDsgbGV2ZWwgPD0gbWF4
TGV2ZWw7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleENvbXBhcmVW
ZXJpZmllci5pc0xldmVsQ29tcGFyZVJlc3VsdFZhbGlkKHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwp
LCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxGaWx0ZXIoc2FtcGxlci5taW5G
aWx0ZXIpLCBwcmVjLCBkZU1hdGguc3dpenpsZShjb29yZCwgWzAsIDFdKSwgbGF5ZXIsIGNtcFJl
ZmVyZW5jZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWYgKHRjdVRleENvbXBhcmVWZXJpZmllci5pc0xldmVsQ29tcGFyZVJlc3VsdFZhbGlkKHRleHR1
cmUuZ2V0TGV2ZWwoMCksIHNhbXBsZXIsIHNhbXBsZXIubWluRmlsdGVyLCBwcmVjLCBkZU1hdGgu
c3dpenpsZShjb29yZCwgWzAsIDFdKSwgbGF5ZXIsIGNtcFJlZmVyZW5jZSwgcmVzdWx0KSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VUZXhMb29rdXBWZXJpZmllci5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXhMb29rdXBWZXJp
Zmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YjQ3MTk5OGFhODI0ZWRkZWIxMjMyNjM5MTRkY2JhODNiNWFj
YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleExvb2t1cFZlcmlmaWVyLmpz
CkBAIC0wLDAgKzEsMjIyNSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMg
UXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
K2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcicpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleFZlcmlmaWVyVXRpbCcpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwor
ICAgIHZhciB0Y3VUZXhMb29rdXBWZXJpZmllciA9IGZyYW1ld29yay5jb21tb24udGN1VGV4TG9v
a3VwVmVyaWZpZXI7CisgICAgdmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRl
eHR1cmU7CisgICAgdmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlVXRpbDsKKyAgICB2YXIgdGN1VGV4VmVyaWZpZXJVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXhWZXJpZmllclV0aWw7CisgICAgdmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlTWF0aDsKKworICAgIC8qKiBAdHlwZWRlZiB7KHRjdVRleExvb2t1cFZlcmlmaWVyLkxv
b2t1cFByZWNpc2lvbnx7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSl9ICov
CisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuUHJlY1R5cGU7CisKKyAgICAvKioKKyAgICAgKiBH
ZW5lcmljIGxvb2t1cCBwcmVjaXNpb24gcGFyYW1ldGVycworICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBjb29yZEJpdHMK
KyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSB1dndCaXRzCisgICAgICogQHBhcmFtIHtB
cnJheTxudW1iZXI+PX0gY29sb3JUaHJlc2hvbGQKKyAgICAgKiBAcGFyYW0ge0FycmF5PGJvb2xl
YW4+PX0gY29sb3JNYXNrCisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3Vw
UHJlY2lzaW9uID0gZnVuY3Rpb24oY29vcmRCaXRzLCB1dndCaXRzLCBjb2xvclRocmVzaG9sZCwg
Y29sb3JNYXNrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5j
b29yZEJpdHMgPSBjb29yZEJpdHMgfHwgWzIyLCAyMiwgMjJdOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHRoaXMudXZ3Qml0cyA9IHV2d0JpdHMgfHwgWzE2LCAxNiwgMTZd
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMuY29sb3JUaHJlc2hv
bGQgPSBjb2xvclRocmVzaG9sZCB8fCBbMCwgMCwgMCwgMF07CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8Ym9vbGVhbj59ICovIHRoaXMuY29sb3JNYXNrID0gY29sb3JNYXNrIHx8IFt0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogTG9kIGNvbXB1dGF0
aW9uIHByZWNpc2lvbiBwYXJhbWV0ZXJzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHN0
cnVjdAorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVyaXZhdGVCaXRzCisgICAgICogQHBhcmFt
IHtudW1iZXI9fSBsb2RCaXRzCisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9k
UHJlY2lzaW9uID0gZnVuY3Rpb24oZGVyaXZhdGVCaXRzLCBsb2RCaXRzKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmRlcml2YXRlQml0cyA9IGRlcml2YXRlQml0cyA9PT0g
dW5kZWZpbmVkID8gMjIgOiBkZXJpdmF0ZUJpdHM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLmxvZEJpdHMgPSBsb2RCaXRzID09PSB1bmRlZmluZWQgPyAxNiA6IGxvZEJpdHM7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAg
dGN1VGV4TG9va3VwVmVyaWZpZXIuVGV4TG9va3VwU2NhbGVNb2RlID0geworICAgICAgICBNSU5J
Rlk6IDAsCisgICAgICAgIE1BR05JRlk6IDEKKyAgICB9OworCisgICAgLy8gR2VuZXJpYyB1dGls
aXRpZXMKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBW
ZXJpZmllci5pc1NhbXBsZXJTdXBwb3J0ZWQgPSBmdW5jdGlvbihzYW1wbGVyKSB7CisgICAgICAg
IHJldHVybiBzYW1wbGVyLmNvbXBhcmUgPT0gdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJF
TU9ERV9OT05FICYmCisgICAgICAgICAgICB0Y3VUZXhWZXJpZmllclV0aWwuaXNXcmFwTW9kZVN1
cHBvcnRlZChzYW1wbGVyLndyYXBTKSAmJgorICAgICAgICAgICAgdGN1VGV4VmVyaWZpZXJVdGls
LmlzV3JhcE1vZGVTdXBwb3J0ZWQoc2FtcGxlci53cmFwVCkgJiYKKyAgICAgICAgICAgIHRjdVRl
eFZlcmlmaWVyVXRpbC5pc1dyYXBNb2RlU3VwcG9ydGVkKHNhbXBsZXIud3JhcFIpOworICAgIH07
CisKKyAgICAvLyBDb2xvciByZWFkICYgY29tcGFyZSB1dGlsaXRpZXMKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBhY2Nlc3MKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICog
QHBhcmFtIHtudW1iZXJ9IHoKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAg
IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvb3Jkc0luQm91bmRzID0gZnVuY3Rpb24oYWNjZXNzLCB4
LCB5LCB6KSB7CisgICAgICAgIHJldHVybiBkZU1hdGguZGVJbkJvdW5kczMyKHgsIDAsIGFjY2Vz
cy5nZXRXaWR0aCgpKSAmJiBkZU1hdGguZGVJbkJvdW5kczMyKHksIDAsIGFjY2Vzcy5nZXRIZWln
aHQoKSkgJiYgZGVNYXRoLmRlSW5Cb3VuZHMzMih6LCAwLCBhY2Nlc3MuZ2V0RGVwdGgoKSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSBmb3JtYXQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRjdVRleExv
b2t1cFZlcmlmaWVyLmlzU1JHQiA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgICAgICByZXR1cm4g
Zm9ybWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0IgfHwgZm9ybWF0Lm9y
ZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0JBOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNz
CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gaQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGsKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAgIHRj
dVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cFNjYWxhciA9IGZ1bmN0aW9uKGFjY2Vzcywgc2FtcGxl
ciwgaSwgaiwgaykgeworICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuY29vcmRzSW5C
b3VuZHMoYWNjZXNzLCBpLCBqLCBrKSkKKyAgICAgICAgICAgIHJldHVybiBhY2Nlc3MuZ2V0UGl4
ZWwoaSwgaiwgayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBkZU1hdGgudG9J
VmVjKHNhbXBsZXIuYm9yZGVyQ29sb3IpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgICAgICogQHBh
cmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGsKKyAg
ICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZl
cmlmaWVyLmxvb2t1cEZsb2F0ID0gZnVuY3Rpb24oYWNjZXNzLCBzYW1wbGVyLCBpLCBqLCBrKSB7
CisgICAgICAgIC8vIFNwZWNpYWxpemF0aW9uIGZvciBmbG9hdCBsb29rdXBzOiBzUkdCIGNvbnZl
cnNpb24gaXMgcGVyZm9ybWVkIGFzIHNwZWNpZmllZCBpbiBmb3JtYXQuCisgICAgICAgIGlmICh0
Y3VUZXhMb29rdXBWZXJpZmllci5jb29yZHNJbkJvdW5kcyhhY2Nlc3MsIGksIGosIGspKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwID0gYWNjZXNzLmdl
dFBpeGVsKGksIGosIGspOworICAgICAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlmaWVy
LmlzU1JHQihhY2Nlc3MuZ2V0Rm9ybWF0KCkpID8gdGN1VGV4dHVyZVV0aWwuc1JHQlRvTGluZWFy
KHApIDogcDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gc2FtcGxlci5ib3Jk
ZXJDb2xvcjsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVy
aWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSByZWYKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNDb2xvclZh
bGlkID0gZnVuY3Rpb24ocHJlYywgcmVmLCByZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIGRlTWF0
aC5ib29sQWxsKAorICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxPckJvb2woCisgICAgICAgICAg
ICAgICAgZGVNYXRoLmxlc3NUaGFuRXF1YWwoZGVNYXRoLmFic0RpZmYocmVmLCByZXN1bHQpLCBw
cmVjLmNvbG9yVGhyZXNob2xkKSwKKyAgICAgICAgICAgICAgICBkZU1hdGgubG9naWNhbE5vdEJv
b2wocHJlYy5jb2xvck1hc2spKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBwMDAK
KyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBwMDEKKyAgICAgKiBAcGFyYW0ge0FycmF5
PG51bWJlcj49fSBwMTAKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBwMTEKKyAgICAg
Ki8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWQgPSBmdW5jdGlvbihwMDAsIHAw
MSwgcDEwLCBwMTEpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
LnAwMCA9IHAwMCB8fCBudWxsOyAvLyE8ICgwLCAwKQorICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHRoaXMucDAxID0gcDAxIHx8IG51bGw7IC8vITwgKDEsIDApCisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5wMTAgPSBwMTAgfHwgbnVsbDsgLy8h
PCAoMCwgMSkKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnAxMSA9
IHAxMSB8fCBudWxsOyAvLyE8ICgxLCAxKQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4
MAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAg
ICogQHJldHVybiB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JRdWFkfQorICAgICAqLworICAg
IHRjdVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cFF1YWQgPSBmdW5jdGlvbihsZXZlbCwgc2FtcGxl
ciwgeDAsIHgxLCB5MCwgeTEsIHopIHsKKyAgICAgICAgdmFyIHAwMCA9IHRjdVRleExvb2t1cFZl
cmlmaWVyLmxvb2t1cEZsb2F0KGxldmVsLCBzYW1wbGVyLCB4MCwgeTAsIHopOworICAgICAgICB2
YXIgcDEwID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwRmxvYXQobGV2ZWwsIHNhbXBsZXIs
IHgxLCB5MCwgeik7CisgICAgICAgIHZhciBwMDEgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29r
dXBGbG9hdChsZXZlbCwgc2FtcGxlciwgeDAsIHkxLCB6KTsKKyAgICAgICAgdmFyIHAxMSA9IHRj
dVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cEZsb2F0KGxldmVsLCBzYW1wbGVyLCB4MSwgeTEsIHop
OworICAgICAgICByZXR1cm4gbmV3IHRjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZChwMDAs
IHAwMSwgcDEwLCBwMTEpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAc3RydWN0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0gcDAKKyAgICAg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBwMQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZl
cmlmaWVyLkNvbG9yTGluZSA9IGZ1bmN0aW9uKHAwLCBwMSkgeworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHRoaXMucDAgPSBwMCB8fCBudWxsOyAvLyE8IDAKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnAxID0gcDEgfHwgbnVsbDsgLy8hPCAx
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzfSBsZXZlbAorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBz
YW1wbGVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgwCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHgxCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXhMb29r
dXBWZXJpZmllci5Db2xvckxpbmV9CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIu
bG9va3VwTGluZSA9IGZ1bmN0aW9uKGxldmVsLCBzYW1wbGVyLCB4MCwgeDEsIHkpIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyB0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvckxpbmUoCisgICAgICAgICAg
ICB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChsZXZlbCwgc2FtcGxlciwgeDAsIHks
IDApLAorICAgICAgICAgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwRmxvYXQobGV2ZWws
IHNhbXBsZXIsIHgxLCB5LCAwKQorICAgICAgICApOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZlYworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAg
ICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5taW5Db21wID0gZnVuY3Rpb24odmVjKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluVmFsID0gdmVjWzBdOworICAg
ICAgICBmb3IgKHZhciBuZHggPSAxOyBuZHggPCB2ZWMubGVuZ3RoOyBuZHgrKykKKyAgICAgICAg
ICAgIG1pblZhbCA9IE1hdGgubWluKG1pblZhbCwgdmVjW25keF0pOworICAgICAgICByZXR1cm4g
bWluVmFsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHZlYworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBW
ZXJpZmllci5tYXhDb21wID0gZnVuY3Rpb24odmVjKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbWF4VmFsID0gdmVjWzBdOworICAgICAgICBmb3IgKHZhciBuZHggPSAxOyBu
ZHggPCB2ZWMubGVuZ3RoOyBuZHgrKykKKyAgICAgICAgICAgIG1heFZhbCA9IE1hdGgubWF4KG1h
eFZhbCwgdmVjW25keF0pOworICAgICAgICByZXR1cm4gbWF4VmFsOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0g
cHJlYworICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JMaW5lfSBsaW5l
CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlm
aWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGcm9tRmxvYXRMaW5lID0gZnVuY3Rpb24ocHJl
YywgbGluZSkgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGRlTWF0aC5ib29sQWxsKGRlTWF0
aC5ncmVhdGVyVGhhbihwcmVjLmNvbG9yVGhyZXNob2xkLCBbMCwgMCwgMCwgMF0pKSwgJ1RocmVz
aG9sZCBub3QgZ3JlYXRlciB0aGFuIDAuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4U3RlcHMgPSAxIDw8IDE2OworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkID0gZGVNYXRoLmFic0RpZmYobGluZS5wMSwgbGlu
ZS5wMCk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN0ZXBDb3Vu
dCA9IGRlTWF0aC5kaXZpZGUoW2QsIGQsIGQsIGRdLCBwcmVjLmNvbG9yVGhyZXNob2xkKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgbWluU3RlcCA9
IGRlTWF0aC5kaXZpZGUoWzEsIDEsIDEsIDFdLCBkZU1hdGguYWRkKHN0ZXBDb3VudCwgWzEsIDEs
IDEsIDFdKSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RlcCA9IE1hdGgu
bWF4KHRjdVRleExvb2t1cFZlcmlmaWVyLm1pbkNvbXAobWluU3RlcCksIDEgLyBtYXhTdGVwcyk7
CisKKyAgICAgICAgcmV0dXJuIHN0ZXA7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAgICogQHBh
cmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWR9IHF1YWQKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGlu
ZWFyU2VhcmNoU3RlcEZyb21GbG9hdFF1YWQgPSBmdW5jdGlvbihwcmVjLCBxdWFkKSB7CisgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmdyZWF0ZXJUaGFuKHBy
ZWMuY29sb3JUaHJlc2hvbGQsIFswLCAwLCAwLCAwXSkpLCAnVGhyZXNob2xkIG5vdCBncmVhdGVy
IHRoYW4gMC4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBtYXhTdGVwcyA9IDEgPDwgMTY7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIGQwID0gZGVNYXRoLmFic0RpZmYocXVhZC5wMTAsIHF1YWQucDAwKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZDEgPSBkZU1hdGguYWJzRGlmZihx
dWFkLnAwMSwgcXVhZC5wMDApOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBkMiA9IGRlTWF0aC5hYnNEaWZmKHF1YWQucDExLCBxdWFkLnAxMCk7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGQzID0gZGVNYXRoLmFic0RpZmYocXVhZC5w
MTEsIHF1YWQucDAxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
bWF4RCA9IGRlTWF0aC5tYXgoZDAsIGRlTWF0aC5tYXgoZDEsIGRlTWF0aC5tYXgoZDIsIGQzKSkp
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzdGVwQ291bnQgPSBk
ZU1hdGguZGl2aWRlKG1heEQsIHByZWMuY29sb3JUaHJlc2hvbGQpOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBtaW5TdGVwID0gZGVNYXRoLmRpdmlkZShbMSwgMSwg
MSwgMV0sIGRlTWF0aC5hZGQoc3RlcENvdW50LCBbMSwgMSwgMSwgMV0pKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVwID0gTWF0aC5tYXgodGN1VGV4TG9va3VwVmVyaWZp
ZXIubWluQ29tcChtaW5TdGVwKSwgMSAvIG1heFN0ZXBzKTsKKworICAgICAgICByZXR1cm4gc3Rl
cDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmll
ci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZvclVu
b3JtID0gZnVuY3Rpb24ocHJlYykgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGRlTWF0aC5i
b29sQWxsKGRlTWF0aC5ncmVhdGVyVGhhbihwcmVjLmNvbG9yVGhyZXNob2xkLCBbMCwgMCwgMCwg
MF0pKSwgJ1RocmVzaG9sZCBub3QgZ3JlYXRlciB0aGFuIDAuJywgZmFsc2UsIHRydWUpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN0ZXBDb3VudCA9IGRlTWF0
aC5kaXZpZGUoWzEsIDEsIDEsIDFdLCBwcmVjLmNvbG9yVGhyZXNob2xkKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgbWluU3RlcCA9IGRlTWF0aC5kaXZpZGUoWzEs
IDEsIDEsIDFdLCAoZGVNYXRoLmFkZChzdGVwQ291bnQsIFsxLCAxLCAxLCAxXSkpKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVwID0gdGN1VGV4TG9va3VwVmVyaWZpZXIu
bWluQ29tcChtaW5TdGVwKTsKKworICAgICAgICByZXR1cm4gc3RlcDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259
IHByZWMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4TG9va3Vw
VmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZvclNub3JtID0gZnVuY3Rpb24ocHJl
YykgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGRlTWF0aC5ib29sQWxsKGRlTWF0aC5ncmVh
dGVyVGhhbihwcmVjLmNvbG9yVGhyZXNob2xkLCBbMCwgMCwgMCwgMF0pKSwgJ1RocmVzaG9sZCBu
b3QgZ3JlYXRlciB0aGFuIDAuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN0ZXBDb3VudCA9IGRlTWF0aC5kaXZpZGUoWzIuMCwgMi4w
LCAyLjAsIDIuMF0sIHByZWMuY29sb3JUaHJlc2hvbGQpOworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHZhciBtaW5TdGVwID0gZGVNYXRoLmRpdmlkZShbMSwgMSwgMSwgMV0s
IGRlTWF0aC5hZGQoc3RlcENvdW50LCBbMSwgMSwgMSwgMV0pKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzdGVwID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubWluQ29tcChtaW5T
dGVwKTsKKworICAgICAgICByZXR1cm4gc3RlcDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvckxpbmV9IGxpbmUKKyAgICAgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLm1p
bkxpbmUgPSBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgIHJldHVybiBkZU1hdGgubWluKGxpbmUu
cDAsIGxpbmUucDEpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4TG9v
a3VwVmVyaWZpZXIuQ29sb3JMaW5lfSBsaW5lCisgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+
fQorICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIubWF4TGluZSA9IGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgICAgdmFyIG1heCA9IGRlTWF0aC5tYXg7CisgICAgICAgIHJldHVybiBtYXgo
bGluZS5wMCwgbGluZS5wMSk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VU
ZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWR9IHF1YWQKKyAgICAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5taW5RdWFkID0gZnVuY3Rp
b24ocXVhZCkgeworICAgICAgICB2YXIgbWluID0gZGVNYXRoLm1pbjsKKyAgICAgICAgcmV0dXJu
IG1pbihxdWFkLnAwMCwgbWluKHF1YWQucDEwLCBtaW4ocXVhZC5wMDEsIHF1YWQucDExKSkpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29s
b3JRdWFkfSBxdWFkCisgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICovCisgICAg
dGN1VGV4TG9va3VwVmVyaWZpZXIubWF4UXVhZCA9IGZ1bmN0aW9uKHF1YWQpIHsKKyAgICAgICAg
dmFyIG1heCA9IGRlTWF0aC5tYXg7CisgICAgICAgIHJldHVybiBtYXgocXVhZC5wMDAsIG1heChx
dWFkLnAxMCwgbWF4KHF1YWQucDAxLCBxdWFkLnAxMSkpKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMK
KyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gcXVhZAorICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0luQ29sb3JCb3VuZHNfMVF1
YWQgPSBmdW5jdGlvbihwcmVjLCBxdWFkLCByZXN1bHQpIHsKKyAgICAgICAgdmFyIHF1YWRNaW4g
PSB0Y3VUZXhMb29rdXBWZXJpZmllci5taW5RdWFkOworICAgICAgICB2YXIgcXVhZE1heCA9IHRj
dVRleExvb2t1cFZlcmlmaWVyLm1heFF1YWQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIG1pblZhbCA9IGRlTWF0aC5zdWJ0cmFjdChxdWFkTWluKHF1YWQpLCBwcmVj
LmNvbG9yVGhyZXNob2xkKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgbWF4VmFsID0gZGVNYXRoLmFkZChxdWFkTWF4KHF1YWQpLCBwcmVjLmNvbG9yVGhyZXNob2xk
KTsKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5ib29sQWxsKAorICAgICAgICAgICAgZGVNYXRoLmxv
Z2ljYWxPckJvb2woCisgICAgICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxBbmRCb29sKAorICAg
ICAgICAgICAgICAgICAgICBkZU1hdGguZ3JlYXRlclRoYW5FcXVhbChyZXN1bHQsIG1pblZhbCks
CisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5sZXNzVGhhbkVxdWFsKHJlc3VsdCwgbWF4VmFs
KSksCisgICAgICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxOb3RCb29sKHByZWMuY29sb3JNYXNr
KSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlm
aWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVy
aWZpZXIuQ29sb3JRdWFkfSBxdWFkMAorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZp
ZXIuQ29sb3JRdWFkfSBxdWFkMQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJp
Zmllci5pc0luQ29sb3JCb3VuZHNfMlF1YWQgPSBmdW5jdGlvbihwcmVjLCBxdWFkMCwgcXVhZDEs
IHJlc3VsdCkgeworICAgICAgICB2YXIgbWluID0gZGVNYXRoLm1pbjsKKyAgICAgICAgdmFyIG1h
eCA9IGRlTWF0aC5tYXg7CisgICAgICAgIHZhciBxdWFkTWluID0gdGN1VGV4TG9va3VwVmVyaWZp
ZXIubWluUXVhZDsKKyAgICAgICAgdmFyIHF1YWRNYXggPSB0Y3VUZXhMb29rdXBWZXJpZmllci5t
YXhRdWFkOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBtaW5WYWwg
PSBkZU1hdGguc3VidHJhY3QobWluKHF1YWRNaW4ocXVhZDApLCBxdWFkTWluKHF1YWQxKSksIHBy
ZWMuY29sb3JUaHJlc2hvbGQpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBtYXhWYWwgPSBkZU1hdGguYWRkKG1heChxdWFkTWF4KHF1YWQwKSwgcXVhZE1heChxdWFk
MSkpLCBwcmVjLmNvbG9yVGhyZXNob2xkKTsKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5ib29sQWxs
KAorICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxPckJvb2woCisgICAgICAgICAgICAgICAgZGVN
YXRoLmxvZ2ljYWxBbmRCb29sKAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguZ3JlYXRlclRo
YW5FcXVhbChyZXN1bHQsIG1pblZhbCksCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5sZXNz
VGhhbkVxdWFsKHJlc3VsdCwgbWF4VmFsKSksCisgICAgICAgICAgICAgICAgZGVNYXRoLmxvZ2lj
YWxOb3RCb29sKHByZWMuY29sb3JNYXNrKSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICAq
IEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JMaW5lfSBsaW5lMAorICAgICAqIEBw
YXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JMaW5lfSBsaW5lMQorICAgICAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0luQ29sb3JCb3VuZHNfMkxpbmUgPSBmdW5j
dGlvbihwcmVjLCBsaW5lMCwgbGluZTEsIHJlc3VsdCkgeworICAgICAgICB2YXIgbWluID0gZGVN
YXRoLm1pbjsKKyAgICAgICAgdmFyIG1heCA9IGRlTWF0aC5tYXg7CisgICAgICAgIHZhciBsaW5l
TWluID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubWluTGluZTsKKyAgICAgICAgdmFyIGxpbmVNYXgg
PSB0Y3VUZXhMb29rdXBWZXJpZmllci5tYXhMaW5lOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBtaW5WYWwgPSBkZU1hdGguc3VidHJhY3QobWluKGxpbmVNaW4obGlu
ZTApLCBsaW5lTWluKGxpbmUxKSksIHByZWMuY29sb3JUaHJlc2hvbGQpOworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBtYXhWYWwgPSBkZU1hdGguYWRkKG1heChsaW5l
TWF4KGxpbmUwKSwgbGluZU1heChsaW5lMSkpLCBwcmVjLmNvbG9yVGhyZXNob2xkKTsKKyAgICAg
ICAgcmV0dXJuIGRlTWF0aC5ib29sQWxsKAorICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxPckJv
b2woCisgICAgICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxBbmRCb29sKAorICAgICAgICAgICAg
ICAgICAgICBkZU1hdGguZ3JlYXRlclRoYW5FcXVhbChyZXN1bHQsIG1pblZhbCksCisgICAgICAg
ICAgICAgICAgICAgIGRlTWF0aC5sZXNzVGhhbkVxdWFsKHJlc3VsdCwgbWF4VmFsKSksCisgICAg
ICAgICAgICAgICAgZGVNYXRoLmxvZ2ljYWxOb3RCb29sKHByZWMuY29sb3JNYXNrKSkpOworICAg
IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3Vw
UHJlY2lzaW9ufSBwcmVjCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9y
UXVhZH0gcXVhZDAwCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVh
ZH0gcXVhZDAxCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0g
cXVhZDEwCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gcXVh
ZDExCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzSW5Db2xvckJvdW5k
c180UXVhZCA9IGZ1bmN0aW9uKHByZWMsIHF1YWQwMCwgcXVhZDAxLCBxdWFkMTAsIHF1YWQxMSwg
cmVzdWx0KSB7CisgICAgICAgIHZhciBtaW4gPSBkZU1hdGgubWluOworICAgICAgICB2YXIgbWF4
ID0gZGVNYXRoLm1heDsKKyAgICAgICAgdmFyIHF1YWRNaW4gPSB0Y3VUZXhMb29rdXBWZXJpZmll
ci5taW5RdWFkOworICAgICAgICB2YXIgcXVhZE1heCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLm1h
eFF1YWQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIG1pblZhbCA9
IGRlTWF0aC5zdWJ0cmFjdChtaW4ocXVhZE1pbihxdWFkMDApLCBtaW4ocXVhZE1pbihxdWFkMDEp
LCBtaW4ocXVhZE1pbihxdWFkMTApLCBxdWFkTWluKHF1YWQxMSkpKSksIHByZWMuY29sb3JUaHJl
c2hvbGQpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBtYXhWYWwg
PSBkZU1hdGguYWRkKG1heChxdWFkTWF4KHF1YWQwMCksIG1heChxdWFkTWF4KHF1YWQwMSksIG1h
eChxdWFkTWF4KHF1YWQxMCksIHF1YWRNYXgocXVhZDExKSkpKSwgcHJlYy5jb2xvclRocmVzaG9s
ZCk7CisgICAgICAgIHJldHVybiBkZU1hdGguYm9vbEFsbCgKKyAgICAgICAgICAgIGRlTWF0aC5s
b2dpY2FsT3JCb29sKAorICAgICAgICAgICAgICAgIGRlTWF0aC5sb2dpY2FsQW5kQm9vbCgKKyAg
ICAgICAgICAgICAgICAgICAgZGVNYXRoLmdyZWF0ZXJUaGFuRXF1YWwocmVzdWx0LCBtaW5WYWwp
LAorICAgICAgICAgICAgICAgICAgICBkZU1hdGgubGVzc1RoYW5FcXVhbChyZXN1bHQsIG1heFZh
bCkpLAorICAgICAgICAgICAgICAgIGRlTWF0aC5sb2dpY2FsTm90Qm9vbChwcmVjLmNvbG9yTWFz
aykpKTsKKyAgICB9OworCisgICAgLy8gUmFuZ2Ugc2VhcmNoIHV0aWxpdGllcworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHBy
ZWMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGMwCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBjMQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcworICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVhclJhbmdlVmFsaWQg
PSBmdW5jdGlvbihwcmVjLCBjMCwgYzEsIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvLyBU
aGlzIGlzIGJhc2ljYWxseSBsaW5lIHNlZ21lbnQgLSBBQUJCIHRlc3QuIFZhbGlkIGludGVycG9s
YXRpb24gbGluZSBpcyBjaGVja2VkCisgICAgICAgIC8vIGFnYWluc3QgcmVzdWx0IEFBQkIgY29u
c3RydWN0ZWQgYnkgYXBwbHlpbmcgdGhyZXNob2xkLgorCisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIHJNaW4gPSBkZU1hdGguc3VidHJhY3QocmVzdWx0LCBwcmVjLmNv
bG9yVGhyZXNob2xkKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
ck1heCA9IGRlTWF0aC5hZGQocmVzdWx0LCBwcmVjLmNvbG9yVGhyZXNob2xkKTsKKworICAgICAg
ICAvLyBBbGdvcml0aG06IEZvciBlYWNoIGNvbXBvbmVudCBjaGVjayB3aGV0aGVyIHNlZ21lbnQg
ZW5kcG9pbnRzIGFyZSBpbnNpZGUsIG9yIGludGVyc2VjdCB3aXRoIHNsYWIuCisgICAgICAgIC8v
IElmIGFsbCBpbnRlcnNlY3Qgb3IgYXJlIGluc2lkZSwgbGluZSBzZWdtZW50IGludGVyc2VjdHMg
dGhlIHdob2xlIDREIEFBQkIuCisgICAgICAgIGZvciAodmFyIGNvbXBOZHggPSAwOyBjb21wTmR4
IDwgNDsgY29tcE5keCsrKSB7CisgICAgICAgICAgICBpZiAoIXByZWMuY29sb3JNYXNrW2NvbXBO
ZHhdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGkwID0gYzBbY29tcE5keF0gKiAoMSAtIGZCb3VuZHNbMF0pICsgYzFb
Y29tcE5keF0gKiBmQm91bmRzWzBdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBpMSA9IGMwW2NvbXBOZHhdICogKDEgLSBmQm91bmRzWzFdKSArIGMxW2NvbXBOZHhdICog
ZkJvdW5kc1sxXTsKKyAgICAgICAgICAgIGlmICgoaTAgPiByTWF4W2NvbXBOZHhdICYmIGkxID4g
ck1heFtjb21wTmR4XSkgfHwKKyAgICAgICAgICAgICAgICAoaTAgPCByTWluW2NvbXBOZHhdICYm
IGkxIDwgck1pbltjb21wTmR4XSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVj
aXNpb259IHByZWMKKyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVh
ZH0gcXVhZAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geEJvdW5kcworICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0geUJvdW5kcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWFy
Y2hTdGVwCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNCaWxpbmVh
clJhbmdlVmFsaWQgPSBmdW5jdGlvbihwcmVjLCBxdWFkLCB4Qm91bmRzLCB5Qm91bmRzLCBzZWFy
Y2hTdGVwLCByZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh4Qm91bmRzWzBdIDw9
IHhCb3VuZHNbMV0sICdPdXQgb2YgYm91bmRzOiBYIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeUJvdW5kc1swXSA8PSB5Qm91bmRzWzFdLCAnT3V0
IG9mIGJvdW5kczogWSBkaXJlY3Rpb24uJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIGlmICgh
dGN1VGV4TG9va3VwVmVyaWZpZXIuaXNJbkNvbG9yQm91bmRzXzFRdWFkKHByZWMsIHF1YWQsIHJl
c3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgeCA9
IHhCb3VuZHNbMF07IHggPCB4Qm91bmRzWzFdICsgc2VhcmNoU3RlcDsgeCArPSBzZWFyY2hTdGVw
KSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGEgPSBNYXRoLm1pbih4
LCB4Qm91bmRzWzFdKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGMwID0gZGVNYXRoLmFkZChkZU1hdGguc2NhbGUocXVhZC5wMDAsICgxIC0gYSkpLCBkZU1h
dGguc2NhbGUocXVhZC5wMTAsIGEpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGMxID0gZGVNYXRoLmFkZChkZU1hdGguc2NhbGUocXVhZC5wMDEsICgxIC0g
YSkpLCBkZU1hdGguc2NhbGUocXVhZC5wMTEsIGEpKTsKKworICAgICAgICAgICAgaWYgKHRjdVRl
eExvb2t1cFZlcmlmaWVyLmlzTGluZWFyUmFuZ2VWYWxpZChwcmVjLCBjMCwgYzEsIHlCb3VuZHMs
IHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VU
ZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAqIEBwYXJhbSB7dGN1
VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JRdWFkfSBxdWFkMAorICAgICogQHBhcmFtIHt0Y3VUZXhM
b29rdXBWZXJpZmllci5Db2xvclF1YWR9IHF1YWQxCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHhCb3VuZHMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geUJvdW5kcworICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSB6Qm91bmRzCisgICAgKiBAcGFyYW0ge251bWJlcn0gc2Vh
cmNoU3RlcAorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc1RyaWxpbmVh
clJhbmdlVmFsaWQgPSBmdW5jdGlvbihwcmVjLCBxdWFkMCwgcXVhZDEsIHhCb3VuZHMsIHlCb3Vu
ZHMsIHpCb3VuZHMsIHNlYXJjaFN0ZXAsIHJlc3VsdCkgeworICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKHhCb3VuZHNbMF0gPD0geEJvdW5kc1sxXSwgJ091dCBvZiBib3VuZHM6IFggZGlyZWN0aW9u
LicsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh5Qm91bmRzWzBdIDw9
IHlCb3VuZHNbMV0sICdPdXQgb2YgYm91bmRzOiBZIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoekJvdW5kc1swXSA8PSB6Qm91bmRzWzFdLCAnT3V0
IG9mIGJvdW5kczogWiBkaXJlY3Rpb24uJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIGlmICgh
dGN1VGV4TG9va3VwVmVyaWZpZXIuaXNJbkNvbG9yQm91bmRzXzJRdWFkKHByZWMsIHF1YWQwLCBx
dWFkMSwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3Ig
KHZhciB4ID0geEJvdW5kc1swXTsgeCA8IHhCb3VuZHNbMV0gKyBzZWFyY2hTdGVwOyB4ICs9IHNl
YXJjaFN0ZXApIHsKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSB5Qm91bmRzWzBdOyB5IDwgeUJv
dW5kc1sxXSArIHNlYXJjaFN0ZXA7IHkgKz0gc2VhcmNoU3RlcCkgeworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYSA9IE1hdGgubWluKHgsIHhCb3VuZHNbMV0pOwor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYiA9IE1hdGgubWluKHks
IHlCb3VuZHNbMV0pOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8KKyAgICAgICAgICAgICAgICB2YXIgYzAgPSBkZU1hdGguYWRkKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlTWF0aC5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlTWF0aC5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGgu
c2NhbGUocXVhZDAucDAwLCAoMSAtIGEpICogKDEgLSBiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUocXVhZDAucDEwLCBhICogKDEgLSBiKSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUocXVhZDAucDAxLCAo
MSAtIGEpICogYikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShx
dWFkMC5wMTEsIGEgKiBiKSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLworICAgICAgICAgICAgICAgIHZhciBjMSA9IGRlTWF0aC5hZGQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
TWF0aC5zY2FsZShxdWFkMS5wMDAsICgxIC0gYSkgKiAoMSAtIGIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShxdWFkMS5wMTAsIGEgKiAoMSAtIGIp
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShxdWFkMS5w
MDEsICgxIC0gYSkgKiBiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLnNj
YWxlKHF1YWQxLnAxMSwgYSAqIGIpKTsKKworICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhMb29r
dXBWZXJpZmllci5pc0xpbmVhclJhbmdlVmFsaWQocHJlYywgYzAsIGMxLCB6Qm91bmRzLCByZXN1
bHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAg
KiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAg
ICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWR9IHF1YWQwCisgICAgKiBA
cGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gcXVhZDEKKyAgICAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0geEJvdW5kczAKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
eUJvdW5kczAKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geEJvdW5kczEKKyAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0geUJvdW5kczEKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gekJvdW5kcworICAgICogQHBhcmFtIHtudW1iZXJ9IHNlYXJjaFN0ZXAKKyAgICAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICov
CisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXMyRFRyaWxpbmVhckZpbHRlclJlc3VsdFZhbGlk
ID0gZnVuY3Rpb24ocHJlYywgcXVhZDAsIHF1YWQxLCB4Qm91bmRzMCwgeUJvdW5kczAsIHhCb3Vu
ZHMxLCB5Qm91bmRzMSwgekJvdW5kcywgc2VhcmNoU3RlcCwgcmVzdWx0KSB7CisgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMoeEJvdW5kczBbMF0gPD0geEJvdW5kczBbMV0sICdPdXQgb2YgYm91bmRz
OiBYIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
eUJvdW5kczBbMF0gPD0geUJvdW5kczBbMV0sICdPdXQgb2YgYm91bmRzOiBZIGRpcmVjdGlvbi4n
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeEJvdW5kczFbMF0gPD0g
eEJvdW5kczFbMV0sICdPdXQgb2YgYm91bmRzOiBYIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeUJvdW5kczFbMF0gPD0geUJvdW5kczFbMV0sICdP
dXQgb2YgYm91bmRzOiBZIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgaWYg
KCF0Y3VUZXhMb29rdXBWZXJpZmllci5pc0luQ29sb3JCb3VuZHNfMlF1YWQocHJlYywgcXVhZDAs
IHF1YWQxLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZv
ciAodmFyIHgwID0geEJvdW5kczBbMF07IHgwIDwgeEJvdW5kczBbMV0gKyBzZWFyY2hTdGVwOyB4
MCArPSBzZWFyY2hTdGVwKSB7CisgICAgICAgICAgICBmb3IgKHZhciB5MCA9IHlCb3VuZHMwWzBd
OyB5MCA8IHlCb3VuZHMwWzFdICsgc2VhcmNoU3RlcDsgeTAgKz0gc2VhcmNoU3RlcCkgeworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYTAgPSBNYXRoLm1pbih4MCwg
eEJvdW5kczBbMV0pOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
YjAgPSBNYXRoLm1pbih5MCwgeUJvdW5kczBbMV0pOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgICAgICAgICB2YXIgYzAgPSBkZU1hdGguYWRk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZU1hdGguc2NhbGUocXVhZDAucDAwLCAoMSAtIGEwKSAqICgxIC0gYjApKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShxdWFkMC5w
MTAsIGEwICogKDEgLSBiMCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVN
YXRoLnNjYWxlKHF1YWQwLnAwMSwgKDEgLSBhMCkgKiBiMCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlTWF0aC5zY2FsZShxdWFkMC5wMTEsIGEwICogYjApKTsKKworICAgICAgICAg
ICAgICAgIGZvciAodmFyIHgxID0geEJvdW5kczFbMF07IHgxIDw9IHhCb3VuZHMxWzFdOyB4MSAr
PSBzZWFyY2hTdGVwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkxID0geUJvdW5k
czFbMF07IHkxIDw9IHlCb3VuZHMxWzFdOyB5MSArPSBzZWFyY2hTdGVwKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGExID0gTWF0aC5taW4oeDEs
IHhCb3VuZHMxWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgYjEgPSBNYXRoLm1pbih5MSwgeUJvdW5kczFbMV0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGMxID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlTWF0aC5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVNYXRoLnNjYWxlKHF1YWQxLnAwMCwgKDEgLSBhMSkgKiAoMSAtIGIxKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShxdWFkMS5w
MTAsIGExICogKDEgLSBiMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZU1hdGguc2NhbGUocXVhZDEucDAxLCAoMSAtIGExKSAqIGIxKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUocXVhZDEucDExLCBhMSAqIGIx
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5p
c0xpbmVhclJhbmdlVmFsaWQocHJlYywgYzAsIGMxLCB6Qm91bmRzLCByZXN1bHQpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4TG9v
a3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAgKiBAcGFyYW0ge3RjdVRleExv
b2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gcXVhZDAwCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1
cFZlcmlmaWVyLkNvbG9yUXVhZH0gcXVhZDAxCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZl
cmlmaWVyLkNvbG9yUXVhZH0gcXVhZDEwCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlm
aWVyLkNvbG9yUXVhZH0gcXVhZDExCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHhCb3Vu
ZHMwCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHlCb3VuZHMwCisgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHpCb3VuZHMwCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHhC
b3VuZHMxCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHlCb3VuZHMxCisgICAgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj59IHpCb3VuZHMxCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHdCb3VuZHMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWFyY2hTdGVwCisgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLwor
ICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzM0RUcmlsaW5lYXJGaWx0ZXJSZXN1bHRWYWxpZCA9
IGZ1bmN0aW9uKHByZWMsIHF1YWQwMCwgcXVhZDAxLCBxdWFkMTAsIHF1YWQxMSwgeEJvdW5kczAs
IHlCb3VuZHMwLCB6Qm91bmRzMCwgeEJvdW5kczEsIHlCb3VuZHMxLCB6Qm91bmRzMSwgd0JvdW5k
cywgc2VhcmNoU3RlcCwgcmVzdWx0KSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeEJvdW5k
czBbMF0gPD0geEJvdW5kczBbMV0sICdPdXQgb2YgYm91bmRzOiBYIGRpcmVjdGlvbi4nLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeUJvdW5kczBbMF0gPD0geUJvdW5k
czBbMV0sICdPdXQgb2YgYm91bmRzOiBZIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoekJvdW5kczBbMF0gPD0gekJvdW5kczBbMV0sICdPdXQgb2Yg
Ym91bmRzOiBaIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMoeEJvdW5kczFbMF0gPD0geEJvdW5kczFbMV0sICdPdXQgb2YgYm91bmRzOiBYIGRpcmVj
dGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeUJvdW5kczFb
MF0gPD0geUJvdW5kczFbMV0sICdPdXQgb2YgYm91bmRzOiBZIGRpcmVjdGlvbi4nLCBmYWxzZSwg
dHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoekJvdW5kczFbMF0gPD0gekJvdW5kczFb
MV0sICdPdXQgb2YgYm91bmRzOiBaIGRpcmVjdGlvbi4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAg
ICAgaWYgKCF0Y3VUZXhMb29rdXBWZXJpZmllci5pc0luQ29sb3JCb3VuZHNfNFF1YWQocHJlYywg
cXVhZDAwLCBxdWFkMDEsIHF1YWQxMCwgcXVhZDExLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGZ1bmN0aW9uIGJpSW50ZXJwKHJlc3VsdCwgcDAwLCBwMDEs
IHAxMCwgcDExLCBzMDAsIHMwMSwgczEwLCBzMTEpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCA0OyArK2lpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0W2lpXSA9IHAwMFtp
aV0gKiBzMDAgKyBwMTBbaWldICogczEwICsgcDAxW2lpXSAqIHMwMSArIHAxMVtpaV0gKiBzMTE7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBpbnRlcnAocmVz
dWx0LCBwMCwgcDEsIHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCA0OyAr
K2lpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0W2lpXSA9IHAwW2lpXSAqICgxIC0gcykgKyBw
MVtpaV0gKiBzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYzAwID0gWzAsIDAsIDAsIDBdOworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjMDEgPSBbMCwgMCwgMCwgMF07CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGMxMCA9IFswLCAwLCAwLCAwXTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYzExID0gWzAsIDAsIDAsIDBd
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjejAgPSBbMCwgMCwg
MCwgMF07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGN6MSA9IFsw
LCAwLCAwLCAwXTsKKworICAgICAgICBmb3IgKHZhciB4MCA9IHhCb3VuZHMwWzBdOyB4MCA8IHhC
b3VuZHMwWzFdICsgc2VhcmNoU3RlcDsgeDAgKz0gc2VhcmNoU3RlcCkgeworICAgICAgICAgICAg
Zm9yICh2YXIgeTAgPSB5Qm91bmRzMFswXTsgeTAgPCB5Qm91bmRzMFsxXSArIHNlYXJjaFN0ZXA7
IHkwICs9IHNlYXJjaFN0ZXApIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGEwID0gTWF0aC5taW4oeDAsIHhCb3VuZHMwWzFdKTsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGIwID0gTWF0aC5taW4oeTAsIHlCb3VuZHMwWzFdKTsK
KworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgczAwID0gKDEgLSBh
MCkgKiAoMSAtIGIwKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHMwMSA9ICgxIC0gYTApICogYjA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBzMTAgPSBhMCAqICgxIC0gYjApOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgczExID0gYTAgKiBiMDsKKworICAgICAgICAgICAgICAgIGJpSW50ZXJw
KGMwMCwgcXVhZDAwLnAwMCwgcXVhZDAwLnAwMSwgcXVhZDAwLnAxMCwgcXVhZDAwLnAxMSwgczAw
LCBzMDEsIHMxMCwgczExKTsKKyAgICAgICAgICAgICAgICBiaUludGVycChjMDEsIHF1YWQwMS5w
MDAsIHF1YWQwMS5wMDEsIHF1YWQwMS5wMTAsIHF1YWQwMS5wMTEsIHMwMCwgczAxLCBzMTAsIHMx
MSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB6MCA9IHpCb3VuZHMwWzBdOyB6MCA8IHpC
b3VuZHMwWzFdICsgc2VhcmNoU3RlcDsgejAgKz0gc2VhcmNoU3RlcCkgeworICAgICAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGMwID0gTWF0aC5taW4oejAsIHpCb3Vu
ZHMwWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJwKGN6MCwgYzAwLCBjMDEsIGMwKTsK
KworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4MSA9IHhCb3VuZHMxWzBdOyB4MSA8IHhC
b3VuZHMxWzFdICsgc2VhcmNoU3RlcDsgeDEgKz0gc2VhcmNoU3RlcCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgeTEgPSB5Qm91bmRzMVswXTsgeTEgPCB5Qm91bmRzMVsxXSAr
IHNlYXJjaFN0ZXA7IHkxICs9IHNlYXJjaFN0ZXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGExID0gTWF0aC5taW4oeDEsIHhCb3VuZHMx
WzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGIxID0gTWF0aC5taW4oeTEsIHlCb3VuZHMxWzFdKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdDAwID0gKDEgLSBhMSkgKiAoMSAt
IGIxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHQwMSA9ICgxIC0gYTEpICogYjE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB0MTAgPSBhMSAqICgxIC0gYjEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdDExID0gYTEgKiBiMTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpSW50ZXJwKGMxMCwgcXVhZDEwLnAwMCwg
cXVhZDEwLnAwMSwgcXVhZDEwLnAxMCwgcXVhZDEwLnAxMSwgdDAwLCB0MDEsIHQxMCwgdDExKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaUludGVycChjMTEsIHF1YWQxMS5wMDAsIHF1
YWQxMS5wMDEsIHF1YWQxMS5wMTAsIHF1YWQxMS5wMTEsIHQwMCwgdDAxLCB0MTAsIHQxMSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB6MSA9IHpCb3VuZHMxWzBdOyB6
MSA8IHpCb3VuZHMxWzFdICsgc2VhcmNoU3RlcDsgejEgKz0gc2VhcmNoU3RlcCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGMxID0g
TWF0aC5taW4oejEsIHpCb3VuZHMxWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ZXJwKGN6MSwgYzEwLCBjMTEsIGMxKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMaW5lYXJSYW5nZVZhbGlkKHByZWMs
IGN6MCwgY3oxLCB3Qm91bmRzLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0g
c2FtcGxlcgorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lz
aW9ufSBwcmVjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBjb29yZFkKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIu
aXNOZWFyZXN0U2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRYWUFzTnVtYmVyID0gZnVuY3Rpb24obGV2
ZWwsIHNhbXBsZXIsIHByZWMsIGNvb3JkWCwgY29vcmRZLCByZXN1bHQpIHsKKyAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyhsZXZlbC5nZXREZXB0aCgpID09IDEsICdEZXB0aCBtdXN0IGJlIDEuJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAg
ICAgICAgdmFyIHVCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6
ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgbGV2
ZWwuZ2V0V2lkdGgoKSwgY29vcmRYLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRzWzBd
KTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkkgPSBNYXRoLmZsb29y
KHVCb3VuZHNbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkgPSBN
YXRoLmZsb29yKHVCb3VuZHNbMV0pOworCisgICAgICAgIGZvciAodmFyIGkgPSBtaW5JOyBpIDw9
IG1heEk7IGkrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4ID0g
dGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaSwgbGV2ZWwuZ2V0V2lkdGgo
KSk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvcjsK
KyAgICAgICAgICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc1NSR0IobGV2ZWwuZ2V0Rm9y
bWF0KCkpKSB7CisgICAgICAgICAgICAgICAgY29sb3IgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5s
b29rdXBGbG9hdChsZXZlbCwgc2FtcGxlciwgeCwgY29vcmRZLCAwKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgY29sb3IgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29r
dXBTY2FsYXIobGV2ZWwsIHNhbXBsZXIsIHgsIGNvb3JkWSwgMCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc0NvbG9yVmFsaWQocHJlYywg
Y29sb3IsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbAorICAgICAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29r
dXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGNvb3JkIHZlYzIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29vcmRaIGludAorICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc05lYXJlc3RTYW1wbGVSZXN1
bHRWYWxpZF9Db29yZEFzVmVjMkFuZEludCA9IGZ1bmN0aW9uKGxldmVsLCBzYW1wbGVyLCBwcmVj
LCBjb29yZCwgY29vcmRaLCByZXN1bHQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLworICAgICAgICB2YXIgdUJvdW5kcyA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRl
Tm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVk
Q29vcmRzLCBsZXZlbC5nZXRXaWR0aCgpLCBjb29yZFswXSwgcHJlYy5jb29yZEJpdHNbMF0sIHBy
ZWMudXZ3Qml0c1swXSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAg
ICAgICAgdmFyIHZCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6
ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgbGV2
ZWwuZ2V0SGVpZ2h0KCksIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51dndCaXRz
WzFdKTsKKworICAgICAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzIC0gd2l0aG91dCB3cmFwIG1v
ZGUKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JID0gTWF0aC5mbG9vcih1
Qm91bmRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJID0gTWF0
aC5mbG9vcih1Qm91bmRzWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
aW5KID0gTWF0aC5mbG9vcih2Qm91bmRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhKID0gTWF0aC5mbG9vcih2Qm91bmRzWzFdKTsKKworICAgICAgICAvLyBcdG9k
byBbMjAxMy0wNy0wMyBweXJ5XSBUaGlzIGNvdWxkIGJlIG9wdGltaXplZCBieSBmaXJzdCBjb21w
dXRpbmcgcmFuZ2VzIGJhc2VkIG9uIHdyYXAgbW9kZS4KKworICAgICAgICBmb3IgKHZhciBqID0g
bWluSjsgaiA8PSBtYXhKOyBqKyspCisgICAgICAgIGZvciAodmFyIGkgPSBtaW5JOyBpIDw9IG1h
eEk7IGkrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4ID0gdGN1
VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaSwgbGV2ZWwuZ2V0V2lkdGgoKSk7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkgPSB0Y3VUZXhWZXJpZmll
clV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqLCBsZXZlbC5nZXRIZWlnaHQoKSk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvcjsKKyAgICAgICAgICAg
IGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc1NSR0IobGV2ZWwuZ2V0Rm9ybWF0KCkpKSB7Cisg
ICAgICAgICAgICAgICAgY29sb3IgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChs
ZXZlbCwgc2FtcGxlciwgeCwgeSwgY29vcmRaKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgY29sb3IgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBTY2FsYXIobGV2
ZWwsIHNhbXBsZXIsIHgsIHksIGNvb3JkWik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc0NvbG9yVmFsaWQocHJlYywgY29sb3IsIHJlc3Vs
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VUZXh0dXJl
LkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUu
U2FtcGxlcn0gc2FtcGxlcgorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29r
dXBQcmVjaXNpb259IHByZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQgdmVj
MworICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc05lYXJlc3RTYW1wbGVS
ZXN1bHRWYWxpZF9Db29yZEFzVmVjMyA9IGZ1bmN0aW9uKGxldmVsLCBzYW1wbGVyLCBwcmVjLCBj
b29yZCwgcmVzdWx0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAg
ICAgICAgdmFyIHVCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6
ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgbGV2
ZWwuZ2V0V2lkdGgoKSwgY29vcmRbMF0sIHByZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNb
MF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB2
Qm91bmRzID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3JtYWxpemVkQ29vcmRCb3Vu
ZHMoCisgICAgICAgICAgICBzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIGxldmVsLmdldEhlaWdo
dCgpLCBjb29yZFsxXSwgcHJlYy5jb29yZEJpdHNbMV0sIHByZWMudXZ3Qml0c1sxXSk7CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgdmFyIHdCb3VuZHMgPSB0
Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAg
ICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgbGV2ZWwuZ2V0RGVwdGgoKSwgY29vcmRb
Ml0sIHByZWMuY29vcmRCaXRzWzJdLCBwcmVjLnV2d0JpdHNbMl0pOworCisgICAgICAgIC8vIElu
dGVnZXIgY29vcmRpbmF0ZXMgLSB3aXRob3V0IHdyYXAgbW9kZQorICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1pbkkgPSBNYXRoLmZsb29yKHVCb3VuZHNbMF0pOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkgPSBNYXRoLmZsb29yKHVCb3VuZHNbMV0pOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkogPSBNYXRoLmZsb29yKHZCb3Vu
ZHNbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEogPSBNYXRoLmZs
b29yKHZCb3VuZHNbMV0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbksg
PSBNYXRoLmZsb29yKHdCb3VuZHNbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1heEsgPSBNYXRoLmZsb29yKHdCb3VuZHNbMV0pOworCisgICAgICAgIC8vIFx0b2RvIFsy
MDEzLTA3LTAzIHB5cnldIFRoaXMgY291bGQgYmUgb3B0aW1pemVkIGJ5IGZpcnN0IGNvbXB1dGlu
ZyByYW5nZXMgYmFzZWQgb24gd3JhcCBtb2RlLgorCisgICAgICAgIGZvciAodmFyIGsgPSBtaW5L
OyBrIDw9IG1heEs7IGsrKykgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IG1pbko7IGogPD0g
bWF4SjsgaisrKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IG1pbkk7IGkgPD0gbWF4
STsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
eCA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGksIGxldmVsLmdldFdp
ZHRoKCkpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkg
PSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqLCBsZXZlbC5nZXRIZWln
aHQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeiA9
IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFIsIGssIGxldmVsLmdldERlcHRo
KCkpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLmlz
U1JHQihsZXZlbC5nZXRGb3JtYXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9y
ID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwRmxvYXQobGV2ZWwsIHNhbXBsZXIsIHgsIHks
IHopOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY29sb3IgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBTY2FsYXIobGV2ZWwsIHNhbXBs
ZXIsIHgsIHksIHopOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzQ29sb3JWYWxpZChwcmVjLCBjb2xvciwgcmVz
dWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1
ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0g
cHJlYworICAgICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWAorICAgICogQHBhcmFtIHtudW1iZXJ9
IGNvb3JkWQorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVhclNh
bXBsZVJlc3VsdFZhbGlkX0Nvb3JkWFlBc051bWJlciA9IGZ1bmN0aW9uKGxldmVsLCBzYW1wbGVy
LCBwcmVjLCBjb29yZFgsIGNvb3JkWSwgcmVzdWx0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIHVCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5v
bk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIGxldmVsLmdl
dFdpZHRoKCksIGNvb3JkWCwgcHJlYy5jb29yZEJpdHNbMF0sIHByZWMudXZ3Qml0c1swXSk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JID0gTWF0aC5mbG9vcih1Qm91
bmRzWzBdIC0gMC41KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJID0g
TWF0aC5mbG9vcih1Qm91bmRzWzFdIC0gMC41KTsKKworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHcgPSBsZXZlbC5nZXRXaWR0aCgpOworCisgICAgICAgIGZvciAodmFyIGkgPSBt
aW5JOyBpIDw9IG1heEk7IGkrKykgeworICAgICAgICAgICAgLy8gV3JhcHBlZCBjb29yZGluYXRl
cworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MCA9IHRjdVRleFZlcmlm
aWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGksIHcpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB4MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3Jh
cFMsIGkgKyAxLCB3KTsKKworICAgICAgICAgICAgLy8gQm91bmRzIGZvciBmaWx0ZXJpbmcgZmFj
dG9ycworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5BID0gZGVNYXRo
LmNsYW1wKCh1Qm91bmRzWzBdIC0gMC41KSAtIGksIDAsIDEpOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtYXhBID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzWzFdIC0gMC41
KSAtIGksIDAsIDEpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBjb2xvckEgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChsZXZlbCwgc2Ft
cGxlciwgeDAsIGNvb3JkWSwgMCk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBjb2xvckIgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChsZXZl
bCwgc2FtcGxlciwgeDEsIGNvb3JkWSwgMCk7CisKKyAgICAgICAgICAgIGlmICh0Y3VUZXhMb29r
dXBWZXJpZmllci5pc0xpbmVhclJhbmdlVmFsaWQocHJlYywgY29sb3JBLCBjb2xvckIsIFttaW5B
LCBtYXhBXSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsCisgICAgICogQHBh
cmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFyYW0ge3RjdVRleExv
b2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gY29vcmQgdmVjMgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFogaW50Cisg
ICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGluZWFyU2FtcGxlUmVz
dWx0VmFsaWRfQ29vcmRBc1ZlYzJBbmRJbnQgPSBmdW5jdGlvbihsZXZlbCwgc2FtcGxlciwgcHJl
YywgY29vcmQsIGNvb3JkWiwgcmVzdWx0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHVCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1h
bGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIGxldmVsLmdldFdpZHRo
KCksIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRzWzBdKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdkJvdW5kcyA9IHRjdVRleFZlcmlm
aWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIubm9ybWFsaXpl
ZENvb3JkcywgbGV2ZWwuZ2V0SGVpZ2h0KCksIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwg
cHJlYy51dndCaXRzWzFdKTsKKworICAgICAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGUgYm91bmRz
IGZvciAoeDAseTApIC0gd2l0aG91dCB3cmFwIG1vZGUKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBtaW5JID0gTWF0aC5mbG9vcih1Qm91bmRzWzBdIC0gMC41KTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJID0gTWF0aC5mbG9vcih1Qm91bmRzWzFdIC0g
MC41KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5KID0gTWF0aC5mbG9v
cih2Qm91bmRzWzBdIC0gMC41KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
YXhKID0gTWF0aC5mbG9vcih2Qm91bmRzWzFdIC0gMC41KTsKKworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHcgPSBsZXZlbC5nZXRXaWR0aCgpOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGggPSBsZXZlbC5nZXRIZWlnaHQoKTsKKworICAgICAgICAvKiogQHR5
cGUge3RjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzc30gKi8KKyAgICAgICAgdmFyIHRleENs
YXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGxldmVsLmdldEZvcm1hdCgp
LnR5cGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICB2YXIgc2Vh
cmNoU3RlcCA9ICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5T
SUdORURfRklYRURfUE9JTlQpID8gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFy
U2VhcmNoU3RlcEZvclVub3JtKHByZWMpIDoKKyAgICAgICAgICAgICAgKHRleENsYXNzID09IHRj
dVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfRklYRURfUE9JTlQpID8gdGN1VGV4
TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZvclNub3JtKHByZWMpIDoK
KyAgICAgICAgICAgICAgMDsgLy8gU3RlcCBpcyBjb21wdXRlZCBmb3IgZmxvYXRpbmctcG9pbnQg
cXVhZHMgYmFzZWQgb24gdGV4ZWwgdmFsdWVzLgorCisgICAgICAgIC8vIFx0b2RvIFsyMDEzLTA3
LTAzIHB5cnldIFRoaXMgY291bGQgYmUgb3B0aW1pemVkIGJ5IGZpcnN0IGNvbXB1dGluZyByYW5n
ZXMgYmFzZWQgb24gd3JhcCBtb2RlLgorCisgICAgICAgIGZvciAodmFyIGogPSBtaW5KOyBqIDw9
IG1heEo7IGorKykKKyAgICAgICAgZm9yICh2YXIgaSA9IG1pbkk7IGkgPD0gbWF4STsgaSsrKSB7
CisgICAgICAgICAgICAvLyBXcmFwcGVkIGNvb3JkaW5hdGVzCisgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHgwID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53
cmFwUywgaSwgdyk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgxID0g
dGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaSArIDEsIHcpOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5MCA9IHRjdVRleFZlcmlmaWVyVXRpbC53
cmFwKHNhbXBsZXIud3JhcFQsIGosIGgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB5MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFQsIGogKyAx
LCBoKTsKKworICAgICAgICAgICAgLy8gQm91bmRzIGZvciBmaWx0ZXJpbmcgZmFjdG9ycworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5BID0gZGVNYXRoLmNsYW1wKCh1
Qm91bmRzWzBdIC0gMC41KSAtIGksIDAsIDEpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBtYXhBID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzWzFdIC0gMC41KSAtIGksIDAs
IDEpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5CID0gZGVNYXRo
LmNsYW1wKCh2Qm91bmRzWzBdIC0gMC41KSAtIGosIDAsIDEpOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtYXhCID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRzWzFdIC0gMC41
KSAtIGosIDAsIDEpOworCisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZlcmlm
aWVyLkNvbG9yUXVhZH0gKi8KKyAgICAgICAgICAgIHZhciBxdWFkID0gdGN1VGV4TG9va3VwVmVy
aWZpZXIubG9va3VwUXVhZChsZXZlbCwgc2FtcGxlciwgeDAsIHgxLCB5MCwgeTEsIGNvb3JkWik7
CisKKyAgICAgICAgICAgIGlmICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVs
Q2xhc3MuRkxPQVRJTkdfUE9JTlQpCisgICAgICAgICAgICAgICAgc2VhcmNoU3RlcCA9IHRjdVRl
eExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGcm9tRmxvYXRRdWFkKHBy
ZWMsIHF1YWQpOworCisgICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNCaWxp
bmVhclJhbmdlVmFsaWQocHJlYywgcXVhZCwgW21pbkEsIG1heEFdLCBbbWluQiwgbWF4Ql0sIHNl
YXJjaFN0ZXAsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBh
cmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsCisgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICAgICogQHBhcmFtIHt0Y3VUZXhMb29r
dXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gY29vcmQgdmVjMworICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5p
c0xpbmVhclNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMzID0gZnVuY3Rpb24obGV2ZWwsIHNh
bXBsZXIsIHByZWMsIGNvb3JkLCByZXN1bHQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLworICAgICAgICB2YXIgdUJvdW5kcyA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21w
dXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxp
emVkQ29vcmRzLCBsZXZlbC5nZXRXaWR0aCgpLCBjb29yZFswXSwgcHJlYy5jb29yZEJpdHNbMF0s
IHByZWMudXZ3Qml0c1swXSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8K
KyAgICAgICAgdmFyIHZCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1h
bGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3Jkcywg
bGV2ZWwuZ2V0SGVpZ2h0KCksIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51dndC
aXRzWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2
YXIgd0JvdW5kcyA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3Jk
Qm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBsZXZlbC5nZXRE
ZXB0aCgpLCBjb29yZFsyXSwgcHJlYy5jb29yZEJpdHNbMl0sIHByZWMudXZ3Qml0c1syXSk7CisK
KyAgICAgICAgLy8gSW50ZWdlciBjb29yZGluYXRlIGJvdW5kcyBmb3IgKHgwLHkwKSAtIHdpdGhv
dXQgd3JhcCBtb2RlCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSSA9IE1h
dGguZmxvb3IodUJvdW5kc1swXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWF4SSA9IE1hdGguZmxvb3IodUJvdW5kc1sxXSAtIDAuNSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSiA9IE1hdGguZmxvb3IodkJvdW5kc1swXSAtIDAuNSk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4SiA9IE1hdGguZmxvb3IodkJv
dW5kc1sxXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSyA9
IE1hdGguZmxvb3Iod0JvdW5kc1swXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4SyA9IE1hdGguZmxvb3Iod0JvdW5kc1sxXSAtIDAuNSk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3ID0gbGV2ZWwuZ2V0V2lkdGgoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoID0gbGV2ZWwuZ2V0SGVpZ2h0KCk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZCA9IGxldmVsLmdldERlcHRoKCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3N9ICovCisgICAgICAg
IHZhciB0ZXhDbGFzcyA9IHRjdVRleHR1cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhsZXZlbC5n
ZXRGb3JtYXQoKS50eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAg
IHZhciBzZWFyY2hTdGVwID0gKHRleENsYXNzID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxD
bGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCkgPyB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRl
QmlsaW5lYXJTZWFyY2hTdGVwRm9yVW5vcm0ocHJlYykgOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0ZJ
WEVEX1BPSU5UKSA/IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0
ZXBGb3JTbm9ybShwcmVjKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgMDsgLy8gU3RlcCBp
cyBjb21wdXRlZCBmb3IgZmxvYXRpbmctcG9pbnQgcXVhZHMgYmFzZWQgb24gdGV4ZWwgdmFsdWVz
LgorCisgICAgICAgIC8vIFx0b2RvIFsyMDEzLTA3LTAzIHB5cnldIFRoaXMgY291bGQgYmUgb3B0
aW1pemVkIGJ5IGZpcnN0IGNvbXB1dGluZyByYW5nZXMgYmFzZWQgb24gd3JhcCBtb2RlLgorCisg
ICAgICAgIGZvciAodmFyIGsgPSBtaW5LOyBrIDw9IG1heEs7IGsrKykgeworICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IG1pbko7IGogPD0gbWF4SjsgaisrKSB7CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IG1pbkk7IGkgPD0gbWF4STsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFdyYXBwZWQgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB4MCA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGks
IHcpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgxID0g
dGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaSArIDEsIHcpOworICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkwID0gdGN1VGV4VmVyaWZp
ZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwgaiwgaCk7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeTEgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1w
bGVyLndyYXBULCBqICsgMSwgaCk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgejAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBSLCBr
LCBkKTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB6MSA9
IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFIsIGsgKyAxLCBkKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBCb3VuZHMgZm9yIGZpbHRlcmluZyBmYWN0b3JzCisgICAgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluQSA9IGRlTWF0aC5jbGFt
cCgodUJvdW5kc1swXSAtIDAuNSkgLSBpLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhBID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzWzFdIC0g
MC41KSAtIGksIDAsIDEpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG1pbkIgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHNbMF0gLSAwLjUpIC0gaiwgMCwgMSk7
CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QiA9IGRl
TWF0aC5jbGFtcCgodkJvdW5kc1sxXSAtIDAuNSkgLSBqLCAwLCAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5DID0gZGVNYXRoLmNsYW1wKCh3Qm91
bmRzWzBdIC0gMC41KSAtIGssIDAsIDEpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1heEMgPSBkZU1hdGguY2xhbXAoKHdCb3VuZHNbMV0gLSAwLjUpIC0g
aywgMCwgMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBW
ZXJpZmllci5Db2xvclF1YWR9ICovCisgICAgICAgICAgICAgICAgICAgIHZhciBxdWFkMCA9IHRj
dVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cFF1YWQobGV2ZWwsIHNhbXBsZXIsIHgwLCB4MSwgeTAs
IHkxLCB6MCk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4TG9va3VwVmVy
aWZpZXIuQ29sb3JRdWFkfSAqLworICAgICAgICAgICAgICAgICAgICB2YXIgcXVhZDEgPSB0Y3VU
ZXhMb29rdXBWZXJpZmllci5sb29rdXBRdWFkKGxldmVsLCBzYW1wbGVyLCB4MCwgeDEsIHkwLCB5
MSwgejEpOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJl
LlRleHR1cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWFyY2hTdGVwID0gTWF0aC5taW4odGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJp
bGluZWFyU2VhcmNoU3RlcEZyb21GbG9hdFF1YWQocHJlYywgcXVhZDApLCB0Y3VUZXhMb29rdXBW
ZXJpZmllci5jb21wdXRlQmlsaW5lYXJTZWFyY2hTdGVwRnJvbUZsb2F0UXVhZChwcmVjLCBxdWFk
MSkpOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc1Ry
aWxpbmVhclJhbmdlVmFsaWQocHJlYywgcXVhZDAsIHF1YWQxLCBbbWluQSwgbWF4QV0sIFttaW5C
LCBtYXhCXSwgW21pbkMsIG1heENdLCBzZWFyY2hTdGVwLCByZXN1bHQpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioK
KyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbDAK
KyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbDEK
KyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgKiBAcGFyYW0g
e3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICogQHBhcmFt
IHtudW1iZXJ9IGNvb3JkCisgICAgKiBAcGFyYW0ge251bWJlcn0gY29vcmRZCisgICAgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj59IGZCb3VuZHMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
cmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAgdGN1VGV4TG9va3Vw
VmVyaWZpZXIuaXNOZWFyZXN0TWlwbWFwTGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRYWUFz
TnVtYmVyID0gZnVuY3Rpb24obGV2ZWwwLCBsZXZlbDEsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBj
b29yZFksIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHcwID0gbGV2ZWwwLmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovCisgICAgICAgIHZhciB1Qm91bmRzMCA9IHRjdVRleFZlcmlmaWVyVXRpbC5j
b21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3Jt
YWxpemVkQ29vcmRzLCB3MCwgY29vcmQsIHByZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNb
MF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB1
Qm91bmRzMSA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91
bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCB3MSwgY29vcmQsIHBy
ZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworCisgICAgICAgIC8vIEludGVnZXIg
Y29vcmRpbmF0ZXMgLSB3aXRob3V0IHdyYXAgbW9kZQorICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1pbkkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFswXSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4STAgPSBNYXRoLmZsb29yKHVCb3VuZHMwWzFdKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JMSA9IE1hdGguZmxvb3IodUJvdW5k
czFbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkxID0gTWF0aC5m
bG9vcih1Qm91bmRzMVsxXSk7CisKKyAgICAgICAgZm9yICh2YXIgaTAgPSBtaW5JMDsgaTAgPD0g
bWF4STA7IGkwKyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkxID0gbWluSTE7IGkxIDw9IG1h
eEkxOyBpMSsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LworICAgICAgICAgICAgICAgIHZhciBjMCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cEZs
b2F0KGxldmVsMCwgc2FtcGxlciwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFw
UywgaTAsIHcwKSwgY29vcmRZLCAwKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovCisgICAgICAgICAgICAgICAgdmFyIGMxID0gdGN1VGV4TG9va3VwVmVyaWZp
ZXIubG9va3VwRmxvYXQobGV2ZWwxLCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChz
YW1wbGVyLndyYXBTLCBpMSwgdzEpLCBjb29yZFksIDApOworCisgICAgICAgICAgICAgICAgaWYg
KHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGluZWFyUmFuZ2VWYWxpZChwcmVjLCBjMCwgYzEsIGZC
b3VuZHMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBs
ZXZlbDAKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBs
ZXZlbDEKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgKiBA
cGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZAorICAgICogQHBhcmFtIHtudW1iZXJ9IGNvb3Jk
WgorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBmQm91bmRzCisgICAgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHJlc3VsdAorICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAg
IHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTmVhcmVzdE1pcG1hcExpbmVhclNhbXBsZVJlc3VsdFZh
bGlkX0Nvb3JkQXNWZWMyQW5kSW50ID0gZnVuY3Rpb24obGV2ZWwwLCBsZXZlbDEsIHNhbXBsZXIs
IHByZWMsIGNvb3JkLCBjb29yZFosIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHcwID0gbGV2ZWwwLmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMCA9IGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMSA9IGxldmVsMS5nZXRIZWlnaHQoKTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB1Qm91bmRzMCA9
IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAg
ICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCB3MCwgY29vcmRbMF0sIHByZWMuY29v
cmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovCisgICAgICAgIHZhciB1Qm91bmRzMSA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21w
dXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxp
emVkQ29vcmRzLCB3MSwgY29vcmRbMF0sIHByZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNb
MF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB2
Qm91bmRzMCA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91
bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBoMCwgY29vcmRbMV0s
IHByZWMuY29vcmRCaXRzWzFdLCBwcmVjLnV2d0JpdHNbMV0pOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB2Qm91bmRzMSA9IHRjdVRleFZlcmlmaWVy
VXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxl
ci5ub3JtYWxpemVkQ29vcmRzLCBoMSwgY29vcmRbMV0sIHByZWMuY29vcmRCaXRzWzFdLCBwcmVj
LnV2d0JpdHNbMV0pOworCisgICAgICAgIC8vIEludGVnZXIgY29vcmRpbmF0ZXMgLSB3aXRob3V0
IHdyYXAgbW9kZQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkkwID0gTWF0
aC5mbG9vcih1Qm91bmRzMFswXSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWF4STAgPSBNYXRoLmZsb29yKHVCb3VuZHMwWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBtaW5JMSA9IE1hdGguZmxvb3IodUJvdW5kczFbMF0pOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkxID0gTWF0aC5mbG9vcih1Qm91bmRzMVsxXSk7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSjAgPSBNYXRoLmZsb29yKHZCb3Vu
ZHMwWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhKMCA9IE1hdGgu
Zmxvb3IodkJvdW5kczBbMV0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1p
bkoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVswXSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4SjEgPSBNYXRoLmZsb29yKHZCb3VuZHMxWzFdKTsKKworICAgICAgICBmb3Ig
KHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhKMDsgajArKykgeworICAgICAgICAgICAgZm9yICh2
YXIgaTAgPSBtaW5JMDsgaTAgPD0gbWF4STA7IGkwKyspIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBqMSA9IG1pbkoxOyBqMSA8PSBtYXhKMTsgajErKykgeworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpMSA9IG1pbkkxOyBpMSA8PSBtYXhJMTsgaTErKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYzAgPSB0Y3VUZXhM
b29rdXBWZXJpZmllci5sb29rdXBGbG9hdChsZXZlbDAsIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVy
VXRpbC53cmFwKHNhbXBsZXIud3JhcFMsIGkwLCB3MCksIHRjdVRleFZlcmlmaWVyVXRpbC53cmFw
KHNhbXBsZXIud3JhcFQsIGowLCBoMCksIGNvb3JkWik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjMSA9IHRjdVRleExvb2t1cFZlcmlm
aWVyLmxvb2t1cEZsb2F0KGxldmVsMSwgc2FtcGxlciwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAo
c2FtcGxlci53cmFwUywgaTEsIHcxKSwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53
cmFwVCwgajEsIGgxKSwgY29vcmRaKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRj
dVRleExvb2t1cFZlcmlmaWVyLmlzTGluZWFyUmFuZ2VWYWxpZChwcmVjLCBjMCwgYzEsIGZCb3Vu
ZHMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMAorICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMQorICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAqIEBwYXJhbSB7dGN1
VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGNvb3JkCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGZCb3VuZHMK
KyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNOZWFyZXN0TWlwbWFwTGlu
ZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzMgPSBmdW5jdGlvbihsZXZlbDAsIGxldmVs
MSwgc2FtcGxlciwgcHJlYywgY29vcmQsIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHcwID0gbGV2ZWwwLmdldFdpZHRoKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMCA9IGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMSA9IGxldmVsMS5nZXRIZWlnaHQoKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkMCA9IGxldmVsMC5nZXREZXB0aCgpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGQxID0gbGV2ZWwxLmdldERlcHRoKCk7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdUJv
dW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5k
cygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgdzAsIGNvb3JkWzBdLCBw
cmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdUJvdW5kczEgPSB0Y3VUZXhWZXJpZmllclV0
aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIu
bm9ybWFsaXplZENvb3JkcywgdzEsIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51
dndCaXRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAg
ICB2YXIgdkJvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRD
b29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgaDAsIGNv
b3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51dndCaXRzWzFdKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdkJvdW5kczEgPSB0Y3VUZXhW
ZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAg
IHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgaDEsIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sx
XSwgcHJlYy51dndCaXRzWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LworICAgICAgICB2YXIgd0JvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5v
cm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3Jk
cywgZDAsIGNvb3JkWzJdLCBwcmVjLmNvb3JkQml0c1syXSwgcHJlYy51dndCaXRzWzJdKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgd0JvdW5kczEg
PSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAg
ICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgZDEsIGNvb3JkWzJdLCBwcmVjLmNv
b3JkQml0c1syXSwgcHJlYy51dndCaXRzWzJdKTsKKworICAgICAgICAvLyBJbnRlZ2VyIGNvb3Jk
aW5hdGVzIC0gd2l0aG91dCB3cmFwIG1vZGUKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBtaW5JMCA9IE1hdGguZmxvb3IodUJvdW5kczBbMF0pOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1heEkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsxXSk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSTEgPSBNYXRoLmZsb29yKHVCb3VuZHMxWzBd
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJMSA9IE1hdGguZmxvb3Io
dUJvdW5kczFbMV0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkowID0g
TWF0aC5mbG9vcih2Qm91bmRzMFswXSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4SjAgPSBNYXRoLmZsb29yKHZCb3VuZHMwWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtaW5KMSA9IE1hdGguZmxvb3IodkJvdW5kczFbMF0pOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVsxXSk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSzAgPSBNYXRoLmZsb29yKHdC
b3VuZHMwWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhLMCA9IE1h
dGguZmxvb3Iod0JvdW5kczBbMV0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG1pbksxID0gTWF0aC5mbG9vcih3Qm91bmRzMVswXSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbWF4SzEgPSBNYXRoLmZsb29yKHdCb3VuZHMxWzFdKTsKKworICAgICAgICBm
b3IgKHZhciBrMCA9IG1pbkswOyBrMCA8PSBtYXhLMDsgazArKykgeworICAgICAgICAgICAgZm9y
ICh2YXIgajAgPSBtaW5KMDsgajAgPD0gbWF4SjA7IGowKyspIHsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpMCA9IG1pbkkwOyBpMCA8PSBtYXhJMDsgaTArKykgeworICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBrMSA9IG1pbksxOyBrMSA8PSBtYXhLMTsgazErKykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgajEgPSBtaW5KMTsgajEgPD0gbWF4SjE7IGoxKyspIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpMSA9IG1pbkkxOyBpMSA8PSBt
YXhJMTsgaTErKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBjMCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cEZs
b2F0KGxldmVsMCwgc2FtcGxlciwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFw
UywgaTAsIHcwKSwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwgajAsIGgw
KSwgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUiwgazAsIGQwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGMxID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwRmxvYXQobGV2ZWwxLCBzYW1wbGVy
LCB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpMSwgdzEpLCB0Y3VUZXhW
ZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqMSwgaDEpLCB0Y3VUZXhWZXJpZmllclV0
aWwud3JhcChzYW1wbGVyLndyYXBSLCBrMSwgZDEpKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMaW5lYXJSYW5nZVZhbGlkKHBy
ZWMsIGMwLCBjMSwgZkJvdW5kcywgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzc30gbGV2ZWwwCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzc30gbGV2ZWwxCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0g
c2FtcGxlcgorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNp
b259IHByZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSBjb29yZFoKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcwor
ICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVhck1pcG1hcExpbmVh
clNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50ID0gZnVuY3Rpb24obGV2ZWwwLCBs
ZXZlbDEsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBjb29yZFosIGZCb3VuZHMsIHJlc3VsdCkgewor
ICAgICAgICAvLyBcdG9kbyBbMjAxMy0wNy0wNCBweXJ5XSBUaGlzIGlzIHN0cmljdGx5IG5vdCBj
b3JyZWN0IGFzIGNvb3JkaW5hdGVzIGJldHdlZW4gbGV2ZWxzIHNob3VsZCBiZSBkZXBlbmRlbnQu
CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQgbm93IHRoaXMgYWxs
b3dzIHBhaXJpbmcgYW55IHR3byB2YWxpZCBiaWxpbmVhciBxdWFkcy4KKworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHcwID0gbGV2ZWwwLmdldFdpZHRoKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMCA9IGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoMSA9IGxldmVsMS5nZXRIZWlnaHQoKTsKKwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB1Qm91bmRz
MCA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAor
ICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCB3MCwgY29vcmRbMF0sIHByZWMu
Y29vcmRCaXRzWzBdLCBwcmVjLnV2d0JpdHNbMF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovCisgICAgICAgIHZhciB1Qm91bmRzMSA9IHRjdVRleFZlcmlmaWVyVXRpbC5j
b21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3Jt
YWxpemVkQ29vcmRzLCB3MSwgY29vcmRbMF0sIHByZWMuY29vcmRCaXRzWzBdLCBwcmVjLnV2d0Jp
dHNbMF0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZh
ciB2Qm91bmRzMCA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3Jk
Qm91bmRzKAorICAgICAgICAgICAgc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBoMCwgY29vcmRb
MV0sIHByZWMuY29vcmRCaXRzWzFdLCBwcmVjLnV2d0JpdHNbMV0pOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciB2Qm91bmRzMSA9IHRjdVRleFZlcmlm
aWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKAorICAgICAgICAgICAgc2Ft
cGxlci5ub3JtYWxpemVkQ29vcmRzLCBoMSwgY29vcmRbMV0sIHByZWMuY29vcmRCaXRzWzFdLCBw
cmVjLnV2d0JpdHNbMV0pOworCisgICAgICAgIC8vIEludGVnZXIgY29vcmRpbmF0ZXMgLSB3aXRo
b3V0IHdyYXAgbW9kZQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkkwID0g
TWF0aC5mbG9vcih1Qm91bmRzMFswXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4STAgPSBNYXRoLmZsb29yKHVCb3VuZHMwWzFdIC0gMC41KTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JMSA9IE1hdGguZmxvb3IodUJvdW5kczFbMF0g
LSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkxID0gTWF0aC5m
bG9vcih1Qm91bmRzMVsxXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWluSjAgPSBNYXRoLmZsb29yKHZCb3VuZHMwWzBdIC0gMC41KTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtYXhKMCA9IE1hdGguZmxvb3IodkJvdW5kczBbMV0gLSAwLjUp
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkoxID0gTWF0aC5mbG9vcih2
Qm91bmRzMVswXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4
SjEgPSBNYXRoLmZsb29yKHZCb3VuZHMxWzFdIC0gMC41KTsKKworICAgICAgICAvKiogQHR5cGUg
e3RjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzc30gKi8KKyAgICAgICAgdmFyIHRleENsYXNz
ID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGxldmVsMC5nZXRGb3JtYXQoKS50
eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjU2VhcmNoU3RlcCA9ICh0
ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURf
UE9JTlQpID8gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZv
clVub3JtKHByZWMpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVE
X0ZJWEVEX1BPSU5UKSA/IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJj
aFN0ZXBGb3JTbm9ybShwcmVjKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwOyAvLyBTdGVwIGlzIGNvbXB1dGVkIGZvciBmbG9hdGluZy1wb2ludCBx
dWFkcyBiYXNlZCBvbiB0ZXhlbCB2YWx1ZXMuCisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB4MDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5MDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB5MTsKKworICAgICAgICBmb3IgKHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhK
MDsgajArKykgeworICAgICAgICAgICAgZm9yICh2YXIgaTAgPSBtaW5JMDsgaTAgPD0gbWF4STA7
IGkwKyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNlYXJj
aFN0ZXAwOworCisgICAgICAgICAgICAgICAgeDAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChz
YW1wbGVyLndyYXBTLCBpMCwgdzApOworICAgICAgICAgICAgICAgIHgxID0gdGN1VGV4VmVyaWZp
ZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaTAgKyAxLCB3MCk7CisgICAgICAgICAgICAgICAg
eTAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqMCwgaDApOworICAg
ICAgICAgICAgICAgIHkxID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwg
ajAgKyAxLCBoMCk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZl
cmlmaWVyLkNvbG9yUXVhZH0gKi8KKyAgICAgICAgICAgICAgICB2YXIgcXVhZDAgPSB0Y3VUZXhM
b29rdXBWZXJpZmllci5sb29rdXBRdWFkKGxldmVsMCwgc2FtcGxlciwgeDAsIHgxLCB5MCwgeTEs
IGNvb3JkWik7CisKKyAgICAgICAgICAgICAgICBpZiAodGV4Q2xhc3MgPT0gdGN1VGV4dHVyZS5U
ZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UKQorICAgICAgICAgICAgICAgICAgICBz
ZWFyY2hTdGVwMCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0
ZXBGcm9tRmxvYXRRdWFkKHByZWMsIHF1YWQwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHNlYXJjaFN0ZXAwID0gY1NlYXJjaFN0ZXA7CisKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkEwID0gZGVNYXRoLmNsYW1wKCh1Qm91
bmRzMFswXSAtIDAuNSkgLSBpMCwgMCwgMSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtYXhBMCA9IGRlTWF0aC5jbGFtcCgodUJvdW5kczBbMV0gLSAwLjUpIC0g
aTAsIDAsIDEpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWlu
QjAgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHMwWzBdIC0gMC41KSAtIGowLCAwLCAxKTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEIwID0gZGVNYXRoLmNsYW1w
KCh2Qm91bmRzMFsxXSAtIDAuNSkgLSBqMCwgMCwgMSk7CisKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBqMSA9IG1pbkoxOyBqMSA8PSBtYXhKMTsgajErKykgeworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpMSA9IG1pbkkxOyBpMSA8PSBtYXhJMTsgaTErKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWFyY2hTdGVwMTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgeDAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVy
LndyYXBTLCBpMSwgdzEpOworICAgICAgICAgICAgICAgICAgICAgICAgeDEgPSB0Y3VUZXhWZXJp
ZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpMSArIDEsIHcxKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHkwID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwgajEs
IGgxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHkxID0gdGN1VGV4VmVyaWZpZXJVdGlsLndy
YXAoc2FtcGxlci53cmFwVCwgajEgKyAxLCBoMSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29sb3JRdWFkfSAqLworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHF1YWQxID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwUXVh
ZChsZXZlbDEsIHNhbXBsZXIsIHgwLCB4MSwgeTAsIHkxLCBjb29yZFopOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodGV4Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENs
YXNzLkZMT0FUSU5HX1BPSU5UKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFN0
ZXAxID0gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZyb21G
bG9hdFF1YWQocHJlYywgcXVhZDEpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFN0ZXAxID0gY1NlYXJjaFN0ZXA7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluQTEgPSBk
ZU1hdGguY2xhbXAoKHVCb3VuZHMxWzBdIC0gMC41KSAtIGkxLCAwLCAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QTEgPSBkZU1hdGguY2xh
bXAoKHVCb3VuZHMxWzFdIC0gMC41KSAtIGkxLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluQjEgPSBkZU1hdGguY2xhbXAoKHZCb3Vu
ZHMxWzBdIC0gMC41KSAtIGoxLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QjEgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHMxWzFdIC0g
MC41KSAtIGoxLCAwLCAxKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleExv
b2t1cFZlcmlmaWVyLmlzMkRUcmlsaW5lYXJGaWx0ZXJSZXN1bHRWYWxpZChwcmVjLCBxdWFkMCwg
cXVhZDEsIFttaW5BMCwgbWF4QTBdLCBbbWluQjAsIG1heEIwXSwgW21pbkExLCBtYXhBMV0sIFtt
aW5CMSwgbWF4QjFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmQm91bmRzLCBNYXRoLm1pbihzZWFyY2hTdGVwMCwgc2VhcmNoU3Rl
cDEpLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbDAKKyAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBsZXZlbDEKKyAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgKiBAcGFyYW0ge3Rj
dVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBjb29yZAorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBmQm91bmRz
CisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGluZWFyTWlwbWFwTGlu
ZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzMgPSBmdW5jdGlvbihsZXZlbDAsIGxldmVs
MSwgc2FtcGxlciwgcHJlYywgY29vcmQsIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvLyBc
dG9kbyBbMjAxMy0wNy0wNCBweXJ5XSBUaGlzIGlzIHN0cmljdGx5IG5vdCBjb3JyZWN0IGFzIGNv
b3JkaW5hdGVzIGJldHdlZW4gbGV2ZWxzIHNob3VsZCBiZSBkZXBlbmRlbnQuCisgICAgICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQgbm93IHRoaXMgYWxsb3dzIHBhaXJpbmcg
YW55IHR3byB2YWxpZCBiaWxpbmVhciBxdWFkcy4KKworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHcwID0gbGV2ZWwwLmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdzEgPSBsZXZlbDEuZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBoMCA9IGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBoMSA9IGxldmVsMS5nZXRIZWlnaHQoKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBkMCA9IGxldmVsMC5nZXREZXB0aCgpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGQxID0gbGV2ZWwxLmdldERlcHRoKCk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdUJvdW5kczAgPSB0Y3VU
ZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAg
ICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgdzAsIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0
c1swXSwgcHJlYy51dndCaXRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLworICAgICAgICB2YXIgdUJvdW5kczEgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5v
bk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENv
b3JkcywgdzEsIGNvb3JkWzBdLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRzWzBdKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdkJvdW5k
czAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygK
KyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgaDAsIGNvb3JkWzFdLCBwcmVj
LmNvb3JkQml0c1sxXSwgcHJlYy51dndCaXRzWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLworICAgICAgICB2YXIgdkJvdW5kczEgPSB0Y3VUZXhWZXJpZmllclV0aWwu
Y29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9y
bWFsaXplZENvb3JkcywgaDEsIGNvb3JkWzFdLCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51dndC
aXRzWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2
YXIgd0JvdW5kczAgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29y
ZEJvdW5kcygKKyAgICAgICAgICAgIHNhbXBsZXIubm9ybWFsaXplZENvb3JkcywgZDAsIGNvb3Jk
WzJdLCBwcmVjLmNvb3JkQml0c1syXSwgcHJlYy51dndCaXRzWzJdKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICB2YXIgd0JvdW5kczEgPSB0Y3VUZXhWZXJp
ZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcygKKyAgICAgICAgICAgIHNh
bXBsZXIubm9ybWFsaXplZENvb3JkcywgZDEsIGNvb3JkWzJdLCBwcmVjLmNvb3JkQml0c1syXSwg
cHJlYy51dndCaXRzWzJdKTsKKworICAgICAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzIC0gd2l0
aG91dCB3cmFwIG1vZGUKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JMCA9
IE1hdGguZmxvb3IodUJvdW5kczBbMF0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1heEkwID0gTWF0aC5mbG9vcih1Qm91bmRzMFsxXSAtIDAuNSk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluSTEgPSBNYXRoLmZsb29yKHVCb3VuZHMxWzBd
IC0gMC41KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJMSA9IE1hdGgu
Zmxvb3IodUJvdW5kczFbMV0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1pbkowID0gTWF0aC5mbG9vcih2Qm91bmRzMFswXSAtIDAuNSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4SjAgPSBNYXRoLmZsb29yKHZCb3VuZHMwWzFdIC0gMC41
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5KMSA9IE1hdGguZmxvb3Io
dkJvdW5kczFbMF0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1h
eEoxID0gTWF0aC5mbG9vcih2Qm91bmRzMVsxXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgbWluSzAgPSBNYXRoLmZsb29yKHdCb3VuZHMwWzBdIC0gMC41KTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhLMCA9IE1hdGguZmxvb3Iod0JvdW5k
czBbMV0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbksxID0g
TWF0aC5mbG9vcih3Qm91bmRzMVswXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4SzEgPSBNYXRoLmZsb29yKHdCb3VuZHMxWzFdIC0gMC41KTsKKworICAgICAg
ICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzc30gKi8KKyAgICAgICAg
dmFyIHRleENsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGxldmVsMC5n
ZXRGb3JtYXQoKS50eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjU2Vh
cmNoU3RlcCA9IHRleENsYXNzID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJ
R05FRF9GSVhFRF9QT0lOVCA/IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNl
YXJjaFN0ZXBGb3JVbm9ybShwcmVjKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuU0lHTkVEX0ZJWEVEX1BPSU5UID8gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGlu
ZWFyU2VhcmNoU3RlcEZvclNub3JtKHByZWMpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDA7IC8vIFN0ZXAgaXMgY29tcHV0ZWQgZm9yIGZsb2F0aW5n
LXBvaW50IHF1YWRzIGJhc2VkIG9uIHRleGVsIHZhbHVlcy4KKworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHgwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgx
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkwOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHkxOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHowOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHoxOworCisgICAgICAgIGZv
ciAodmFyIGswID0gbWluSzA7IGswIDw9IG1heEswOyBrMCsrKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBqMCA9IG1pbkowOyBqMCA8PSBtYXhKMDsgajArKykgeworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkwID0gbWluSTA7IGkwIDw9IG1heEkwOyBpMCsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2VhcmNoU3RlcDA7CisKKyAgICAgICAgICAg
ICAgICAgICAgeDAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBTLCBpMCwg
dzApOworICAgICAgICAgICAgICAgICAgICB4MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNh
bXBsZXIud3JhcFMsIGkwICsgMSwgdzApOworICAgICAgICAgICAgICAgICAgICB5MCA9IHRjdVRl
eFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFQsIGowLCBoMCk7CisgICAgICAgICAgICAg
ICAgICAgIHkxID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwVCwgajAgKyAx
LCBoMCk7CisgICAgICAgICAgICAgICAgICAgIHowID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAo
c2FtcGxlci53cmFwUiwgazAsIGQwKTsKKyAgICAgICAgICAgICAgICAgICAgejEgPSB0Y3VUZXhW
ZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBSLCBrMCArIDEsIGQwKTsKKyAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWR9ICovCisg
ICAgICAgICAgICAgICAgICAgIHZhciBxdWFkMDAgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29r
dXBRdWFkKGxldmVsMCwgc2FtcGxlciwgeDAsIHgxLCB5MCwgeTEsIHowKTsKKyAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Db2xvclF1YWR9ICovCisg
ICAgICAgICAgICAgICAgICAgIHZhciBxdWFkMDEgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29r
dXBRdWFkKGxldmVsMCwgc2FtcGxlciwgeDAsIHgxLCB5MCwgeTEsIHoxKTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNz
LkZMT0FUSU5HX1BPSU5UKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU3RlcDAgPSBN
YXRoLm1pbih0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlQmlsaW5lYXJTZWFyY2hTdGVwRnJv
bUZsb2F0UXVhZChwcmVjLCBxdWFkMDApLCB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlQmls
aW5lYXJTZWFyY2hTdGVwRnJvbUZsb2F0UXVhZChwcmVjLCBxdWFkMDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU3RlcDAgPSBjU2Vh
cmNoU3RlcDsKKworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG1pbkEwID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzMFswXSAtIDAuNSkgLSBpMCwgMCwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QTAgPSBkZU1h
dGguY2xhbXAoKHVCb3VuZHMwWzFdIC0gMC41KSAtIGkwLCAwLCAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5CMCA9IGRlTWF0aC5jbGFtcCgodkJv
dW5kczBbMF0gLSAwLjUpIC0gajAsIDAsIDEpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG1heEIwID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRzMFsxXSAtIDAu
NSkgLSBqMCwgMCwgMSk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWluQzAgPSBkZU1hdGguY2xhbXAoKHdCb3VuZHMwWzBdIC0gMC41KSAtIGswLCAwLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhDMCA9
IGRlTWF0aC5jbGFtcCgod0JvdW5kczBbMV0gLSAwLjUpIC0gazAsIDAsIDEpOworCisgICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIGsxID0gbWluSzE7IGsxIDw9IG1heEsxOyBrMSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqMSA9IG1pbkoxOyBqMSA8PSBtYXhKMTsg
ajErKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkxID0gbWluSTE7
IGkxIDw9IG1heEkxOyBpMSsrKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWFyY2hTdGVwMTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MCA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3Jh
cFMsIGkxLCB3MSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxID0gdGN1VGV4
VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxlci53cmFwUywgaTEgKyAxLCB3MSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHkwID0gdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAoc2FtcGxl
ci53cmFwVCwgajEsIGgxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEgPSB0
Y3VUZXhWZXJpZmllclV0aWwud3JhcChzYW1wbGVyLndyYXBULCBqMSArIDEsIGgxKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgejAgPSB0Y3VUZXhWZXJpZmllclV0aWwud3JhcChz
YW1wbGVyLndyYXBSLCBrMSwgZDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6
MSA9IHRjdVRleFZlcmlmaWVyVXRpbC53cmFwKHNhbXBsZXIud3JhcFIsIGsxICsgMSwgZDEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZl
cmlmaWVyLkNvbG9yUXVhZH0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHF1YWQxMCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmxvb2t1cFF1YWQobGV2ZWwxLCBzYW1wbGVy
LCB4MCwgeDEsIHkwLCB5MSwgejApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHF1YWQxMSA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmxv
b2t1cFF1YWQobGV2ZWwxLCBzYW1wbGVyLCB4MCwgeDEsIHkwLCB5MSwgejEpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1
cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWFyY2hTdGVwMSA9IE1hdGgubWluKHRjdVRleExvb2t1cFZlcmlmaWVyLmNv
bXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGcm9tRmxvYXRRdWFkKHByZWMsIHF1YWQxMCksIHRjdVRl
eExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGcm9tRmxvYXRRdWFkKHBy
ZWMsIHF1YWQxMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdGVwMSA9IGNTZWFyY2hTdGVw
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWluQTEgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMxWzBdIC0gMC41KSAtIGkxLCAwLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBtYXhBMSA9IGRlTWF0aC5jbGFtcCgodUJvdW5kczFbMV0gLSAwLjUpIC0gaTEsIDAsIDEp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1pbkIxID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRzMVswXSAtIDAuNSkgLSBqMSwgMCwgMSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4QjEgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHMxWzFdIC0gMC41KSAtIGoxLCAwLCAxKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBtaW5DMSA9IGRlTWF0aC5jbGFtcCgod0JvdW5kczFbMF0gLSAwLjUpIC0gazEsIDAsIDEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG1heEMxID0gZGVNYXRoLmNsYW1wKCh3Qm91bmRzMVsxXSAtIDAuNSkgLSBrMSwgMCwgMSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVy
LmlzM0RUcmlsaW5lYXJGaWx0ZXJSZXN1bHRWYWxpZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZWMsIHF1YWQwMCwgcXVhZDAxLCBxdWFkMTAsIHF1YWQxMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5BMCwgbWF4QTBdLCBbbWluQjAsIG1h
eEIwXSwgW21pbkMwLCBtYXhDMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbbWluQTEsIG1heEExXSwgW21pbkIxLCBtYXhCMV0sIFttaW5DMSwgbWF4QzFdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJvdW5kcywgTWF0aC5taW4oc2VhcmNoU3Rl
cDAsIHNlYXJjaFN0ZXAxKSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1
ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVyTW9kZQorICAg
ICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFkK
KyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMZXZlbFNhbXBsZVJlc3Vs
dFZhbGlkX0Nvb3JkWFlBc051bWJlciA9IGZ1bmN0aW9uKGxldmVsLCBzYW1wbGVyLCBmaWx0ZXJN
b2RlLCBwcmVjLCBjb29yZFgsIGNvb3JkWSwgcmVzdWx0KSB7CisgICAgICAgIGlmIChmaWx0ZXJN
b2RlID09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVIpCisgICAgICAgICAgICByZXR1cm4g
dGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMaW5lYXJTYW1wbGVSZXN1bHRWYWxpZF9Db29yZFhZQXNO
dW1iZXIobGV2ZWwsIHNhbXBsZXIsIHByZWMsIGNvb3JkWCwgY29vcmRZLCByZXN1bHQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNOZWFy
ZXN0U2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRYWUFzTnVtYmVyKGxldmVsLCBzYW1wbGVyLCBwcmVj
LCBjb29yZFgsIGNvb3JkWSwgcmVzdWx0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUu
RmlsdGVyTW9kZX0gZmlsdGVyTW9kZQorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmll
ci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29v
cmQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFoKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gcmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAgdGN1VGV4
TG9va3VwVmVyaWZpZXIuaXNMZXZlbFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50
ID0gZnVuY3Rpb24obGV2ZWwsIHNhbXBsZXIsIGZpbHRlck1vZGUsIHByZWMsIGNvb3JkLCBjb29y
ZFosIHJlc3VsdCkgeworICAgICAgICBpZiAoZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRl
ck1vZGUuTElORUFSKQorICAgICAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlmaWVyLmlz
TGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzJBbmRJbnQobGV2ZWwsIHNhbXBsZXIs
IHByZWMsIGNvb3JkLCBjb29yZFosIHJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc05lYXJlc3RTYW1wbGVSZXN1bHRWYWxpZF9D
b29yZEFzVmVjMkFuZEludChsZXZlbCwgc2FtcGxlciwgcHJlYywgY29vcmQsIGNvb3JkWiwgcmVz
dWx0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQ
aXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVy
fSBzYW1wbGVyCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVyTW9k
ZQorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHBy
ZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gcmVzdWx0CisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAg
dGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMZXZlbFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMz
ID0gZnVuY3Rpb24obGV2ZWwsIHNhbXBsZXIsIGZpbHRlck1vZGUsIHByZWMsIGNvb3JkLCByZXN1
bHQpIHsKKyAgICAgICAgaWYgKGZpbHRlck1vZGUgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJ
TkVBUikKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVhclNh
bXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMzKGxldmVsLCBzYW1wbGVyLCBwcmVjLCBjb29yZCwg
cmVzdWx0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZl
cmlmaWVyLmlzTmVhcmVzdFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMzKGxldmVsLCBzYW1w
bGVyLCBwcmVjLCBjb29yZCwgcmVzdWx0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwwCisgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gbGV2ZWwxCisgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICAgICogQHBhcmFtIHt0Y3VUZXh0dXJl
LkZpbHRlck1vZGV9IGxldmVsRmlsdGVyCisgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlm
aWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBj
b29yZAorICAgICogQHBhcmFtIHtudW1iZXJ9IGNvb3JkWgorICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBmQm91bmRzCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlz
TWlwbWFwTGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzJBbmRJbnQgPSBmdW5jdGlv
bihsZXZlbDAsIGxldmVsMSwgc2FtcGxlciwgbGV2ZWxGaWx0ZXIsIHByZWMsIGNvb3JkLCBjb29y
ZFosIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICBpZiAobGV2ZWxGaWx0ZXIgPT0gdGN1VGV4
dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUikKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXhMb29rdXBW
ZXJpZmllci5pc0xpbmVhck1pcG1hcExpbmVhclNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMy
QW5kSW50KGxldmVsMCwgbGV2ZWwxLCBzYW1wbGVyLCBwcmVjLCBjb29yZCwgY29vcmRaLCBmQm91
bmRzLCByZXN1bHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGN1VGV4TG9v
a3VwVmVyaWZpZXIuaXNOZWFyZXN0TWlwbWFwTGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRB
c1ZlYzJBbmRJbnQobGV2ZWwwLCBsZXZlbDEsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBjb29yZFos
IGZCb3VuZHMsIHJlc3VsdCk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMAorICAgICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGxldmVsMQorICAgICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJN
b2RlfSBsZXZlbEZpbHRlcgorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29r
dXBQcmVjaXNpb259IHByZWMKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcworICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSByZXN1bHQKKyAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICB0Y3VU
ZXhMb29rdXBWZXJpZmllci5pc01pcG1hcExpbmVhclNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNW
ZWMzID0gZnVuY3Rpb24obGV2ZWwwLCBsZXZlbDEsIHNhbXBsZXIsIGxldmVsRmlsdGVyLCBwcmVj
LCBjb29yZCwgZkJvdW5kcywgcmVzdWx0KSB7CisgICAgICAgIGlmIChsZXZlbEZpbHRlciA9PSB0
Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSKQorICAgICAgICAgICAgcmV0dXJuIHRjdVRleExv
b2t1cFZlcmlmaWVyLmlzTGluZWFyTWlwbWFwTGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRB
c1ZlYzMobGV2ZWwwLCBsZXZlbDEsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBmQm91bmRzLCByZXN1
bHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGN1VGV4TG9va3VwVmVyaWZp
ZXIuaXNOZWFyZXN0TWlwbWFwTGluZWFyU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzMobGV2
ZWwwLCBsZXZlbDEsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBmQm91bmRzLCByZXN1bHQpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZTJEVmlld30g
dGV4dHVyZQorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAg
ICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBsb2RCb3VuZHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZp
ZXIuaXNMb29rdXBSZXN1bHRWYWxpZF9UZXh0dXJlMkRWaWV3ID0gZnVuY3Rpb24odGV4dHVyZSwg
c2FtcGxlciwgcHJlYywgY29vcmQsIGxvZEJvdW5kcywgcmVzdWx0KSB7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluTG9kID0gbG9kQm91bmRzWzBdOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heExvZCA9IGxvZEJvdW5kc1sxXTsKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB2YXIgY2FuQmVNYWduaWZpZWQgPSBtaW5Mb2QgPD0gc2FtcGxl
ci5sb2RUaHJlc2hvbGQ7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNhbkJl
TWluaWZpZWQgPSBtYXhMb2QgPiBzYW1wbGVyLmxvZFRocmVzaG9sZDsKKworICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzU2FtcGxlclN1cHBvcnRlZChzYW1w
bGVyKSwgJ1NhbXBsZXIgbm90IHN1cHBvcnRlZC4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5MZXZlbDsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtYXhMZXZlbDsKKworICAgICAgICBpZiAoY2FuQmVNYWduaWZpZWQpCisg
ICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMZXZlbFNhbXBsZVJlc3VsdFZh
bGlkX0Nvb3JkQXNWZWMyQW5kSW50KHRleHR1cmUuZ2V0TGV2ZWwoMCksIHNhbXBsZXIsIHNhbXBs
ZXIubWFnRmlsdGVyLCBwcmVjLCBjb29yZCwgMCwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAoY2FuQmVNaW5pZmllZCkgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNOZWFyZXN0TWlwbWFwID0gdGN1VGV4VmVyaWZp
ZXJVdGlsLmlzTmVhcmVzdE1pcG1hcEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlcik7CisgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0xpbmVhck1pcG1hcCA9IHRjdVRleFZl
cmlmaWVyVXRpbC5pc0xpbmVhck1pcG1hcEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlcik7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pblRleExldmVsID0gMDsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4VGV4TGV2ZWwgPSB0ZXh0dXJlLmdl
dE51bUxldmVscygpIC0gMTsKKworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5UZXhM
ZXZlbCA8PSBtYXhUZXhMZXZlbCwgJ21pblRleExldmVsID4gbWF4VGV4TGV2ZWwnLCBmYWxzZSwg
dHJ1ZSk7CisKKyAgICAgICAgICAgIGlmIChpc0xpbmVhck1pcG1hcCAmJiBtaW5UZXhMZXZlbCA8
IG1heFRleExldmVsKSB7CisgICAgICAgICAgICAgICAgbWluTGV2ZWwgPSBkZU1hdGguY2xhbXAo
TWF0aC5mbG9vcihtaW5Mb2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAxKTsKKyAgICAg
ICAgICAgICAgICBtYXhMZXZlbCA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKG1heExvZCksIG1p
blRleExldmVsLCBtYXhUZXhMZXZlbCAtIDEpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0TXNn
T3B0aW9ucyhtaW5MZXZlbCA8PSBtYXhMZXZlbCwgJ21pbkxldmVsID4gbWF4TGV2ZWwnLCBmYWxz
ZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbCA9IG1pbkxldmVsOyBs
ZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG1pbkYgPSBkZU1hdGguY2xhbXAobWluTG9kIC0gbGV2ZWwsIDAs
IDEpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEYg
PSBkZU1hdGguY2xhbXAobWF4TG9kIC0gbGV2ZWwsIDAsIDEpOworCisgICAgICAgICAgICAgICAg
ICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc01pcG1hcExpbmVhclNhbXBsZVJlc3VsdFZh
bGlkX0Nvb3JkQXNWZWMyQW5kSW50KHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwpLCB0ZXh0dXJlLmdl
dExldmVsKGxldmVsICsgMSksIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVyVXRpbC5nZXRMZXZlbEZp
bHRlcihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMsIGNvb3JkLCAwLCBbbWluRiwgbWF4Rl0sIHJl
c3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmVhcmVzdE1pcG1hcCkgeworICAgICAg
ICAgICAgICAgIC8vIFxub3RlIFRoZSBhY2N1cmF0ZSBmb3JtdWxhIGZvciBuZWFyZXN0IG1pcG1h
cHBpbmcgaXMgbGV2ZWwgPSBjZWlsKGxvZCArIDAuNSkgLSAxIGJ1dCBLaHJvbm9zIGhhcyBtYWRl
CisgICAgICAgICAgICAgICAgLy8gICAgICAgICBkZWNpc2lvbiB0byBhbGxvdyBmbG9vcihsb2Qg
KyAwLjUpIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgbWluTGV2ZWwgPSBkZU1hdGguY2xhbXAo
TWF0aC5jZWlsKG1pbkxvZCArIDAuNSkgLSAxLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwpOwor
ICAgICAgICAgICAgICAgIG1heExldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IobWF4TG9k
ICsgMC41KSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVsKTsKKworICAgICAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMobWluTGV2ZWwgPD0gbWF4TGV2ZWwsICdtaW5MZXZlbCA+IG1heExldmVs
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSBtaW5M
ZXZlbDsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGV2ZWxTYW1wbGVSZXN1bHRWYWxpZF9Db29yZEFz
VmVjMkFuZEludCh0ZXh0dXJlLmdldExldmVsKGxldmVsKSwgc2FtcGxlciwgdGN1VGV4VmVyaWZp
ZXJVdGlsLmdldExldmVsRmlsdGVyKHNhbXBsZXIubWluRmlsdGVyKSwgcHJlYywgY29vcmQsIDAs
IHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0Y3VU
ZXhMb29rdXBWZXJpZmllci5pc0xldmVsU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1ZlYzJBbmRJ
bnQodGV4dHVyZS5nZXRMZXZlbCgwKSwgc2FtcGxlciwgc2FtcGxlci5taW5GaWx0ZXIsIHByZWMs
IGNvb3JkLCAwLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlld30gdGV4
dHVyZQorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgICog
QHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBsb2RCb3VuZHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIu
aXNMb29rdXBSZXN1bHRWYWxpZF9UZXh0dXJlQ3ViZVZpZXcgPSBmdW5jdGlvbih0ZXh0dXJlLCBz
YW1wbGVyLCBwcmVjLCBjb29yZCwgbG9kQm91bmRzLCByZXN1bHQpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBudW1Qb3NzaWJsZUZhY2VzID0gMDsKKworICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzU2FtcGxlclN1cHBvcnRlZChzYW1w
bGVyKSwgJ1NhbXBsZXIgbm90IHN1cHBvcnRlZC4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTx0Y3VUZXh0dXJlLkN1YmVGYWNlPn0gKi8gdmFyIHBvc3NpYmxlRmFj
ZXMgPSB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0UG9zc2libGVDdWJlRmFjZXMoY29vcmQsIHByZWMu
Y29vcmRCaXRzKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxldmVs
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heExldmVsOworCisgICAgICAg
IGlmICghcG9zc2libGVGYWNlcykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBSZXN1bHQg
aXMgdW5kZWZpbmVkLgorCisgICAgICAgIGZvciAodmFyIHRyeUZhY2VOZHggPSAwOyB0cnlGYWNl
TmR4IDwgcG9zc2libGVGYWNlcy5sZW5ndGg7IHRyeUZhY2VOZHgrKykgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSAqLworICAgICAgICAgICAgdmFy
IGZhY2VDb29yZHMgPSBuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyhwb3NzaWJsZUZhY2Vz
W3RyeUZhY2VOZHhdLCB0Y3VUZXh0dXJlLnByb2plY3RUb0ZhY2UocG9zc2libGVGYWNlc1t0cnlG
YWNlTmR4XSwgY29vcmQpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWluTG9kID0gbG9kQm91bmRzWzBdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBtYXhMb2QgPSBsb2RCb3VuZHNbMV07CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciBjYW5CZU1hZ25pZmllZCA9IG1pbkxvZCA8PSBzYW1wbGVyLmxvZFRocmVzaG9s
ZDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNhbkJlTWluaWZpZWQg
PSBtYXhMb2QgPiBzYW1wbGVyLmxvZFRocmVzaG9sZDsKKworICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+fSAqLyB2YXIgZmFjZXMg
PSBbXTsKKyAgICAgICAgICAgIGlmIChjYW5CZU1hZ25pZmllZCkgeworICAgICAgICAgICAgICAg
IHRjdVRleExvb2t1cFZlcmlmaWVyLmdldEN1YmVMZXZlbEZhY2VzKHRleHR1cmUsIDAsIGZhY2Vz
KTsKKworICAgICAgICAgICAgICAgIGlmICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc0N1YmVMZXZl
bFNhbXBsZVJlc3VsdFZhbGlkKGZhY2VzLCBzYW1wbGVyLCBzYW1wbGVyLm1hZ0ZpbHRlciwgcHJl
YywgZmFjZUNvb3JkcywgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjYW5CZU1pbmlmaWVkKSB7CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNOZWFyZXN0TWlwbWFwID0g
dGN1VGV4VmVyaWZpZXJVdGlsLmlzTmVhcmVzdE1pcG1hcEZpbHRlcihzYW1wbGVyLm1pbkZpbHRl
cik7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNMaW5lYXJN
aXBtYXAgPSB0Y3VUZXhWZXJpZmllclV0aWwuaXNMaW5lYXJNaXBtYXBGaWx0ZXIoc2FtcGxlci5t
aW5GaWx0ZXIpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWlu
VGV4TGV2ZWwgPSAwOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWF4VGV4TGV2ZWwgPSB0ZXh0dXJlLmdldE51bUxldmVscygpIC0gMTsKKworICAgICAgICAgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMobWluVGV4TGV2ZWwgPD0gbWF4VGV4TGV2ZWwsICdtaW5UZXhM
ZXZlbCA+IG1heFRleExldmVsJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgaWYg
KGlzTGluZWFyTWlwbWFwICYmIG1pblRleExldmVsIDwgbWF4VGV4TGV2ZWwpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWluTGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtaW5Mb2QpLCBt
aW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4TGV2
ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtYXhMb2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4
TGV2ZWwgLSAxKTsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG1pbkxl
dmVsIDw9IG1heExldmVsLCAnbWluTGV2ZWwgPiBtYXhMZXZlbCcsIGZhbHNlLCB0cnVlKTsKKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IG1pbkxldmVsOyBsZXZlbE5k
eCA8PSBtYXhMZXZlbDsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5GID0gZGVNYXRoLmNsYW1wKG1pbkxvZCAtIGxldmVs
TmR4LCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWF4RiA9IGRlTWF0aC5jbGFtcChtYXhMb2QgLSBsZXZlbE5keCwgMCwgMSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBp
eGVsQnVmZmVyQWNjZXNzPn0gKi8gdmFyIGZhY2VzMCA9IFtdOworICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+
fSAqLyB2YXIgZmFjZXMxID0gW107CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleExv
b2t1cFZlcmlmaWVyLmdldEN1YmVMZXZlbEZhY2VzKHRleHR1cmUsIGxldmVsTmR4LCBmYWNlczAp
OworICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuZ2V0Q3ViZUxl
dmVsRmFjZXModGV4dHVyZSwgbGV2ZWxOZHggKyAxLCBmYWNlczEpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNDdWJlTWlwbWFwTGluZWFyU2Ft
cGxlUmVzdWx0VmFsaWQoZmFjZXMwLCBmYWNlczEsIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVyVXRp
bC5nZXRMZXZlbEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMsIGZhY2VDb29yZHMsIFtt
aW5GLCBtYXhGXSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
aXNOZWFyZXN0TWlwbWFwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFxub3RlIFRoZSBhY2N1
cmF0ZSBmb3JtdWxhIGZvciBuZWFyZXN0IG1pcG1hcHBpbmcgaXMgbGV2ZWwgPSBjZWlsKGxvZCAr
IDAuNSkgLSAxIGJ1dCBLaHJvbm9zIGhhcyBtYWRlCisgICAgICAgICAgICAgICAgICAgIC8vICAg
ICAgICAgZGVjaXNpb24gdG8gYWxsb3cgZmxvb3IobG9kICsgMC41KSBhcyB3ZWxsLgorICAgICAg
ICAgICAgICAgICAgICBtaW5MZXZlbCA9IGRlTWF0aC5jbGFtcChNYXRoLmNlaWwobWluTG9kICsg
MC41KSAtIDEsIG1pblRleExldmVsLCBtYXhUZXhMZXZlbCk7CisgICAgICAgICAgICAgICAgICAg
IG1heExldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IobWF4TG9kICsgMC41KSwgbWluVGV4
TGV2ZWwsIG1heFRleExldmVsKTsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKG1pbkxldmVsIDw9IG1heExldmVsLCAnbWluTGV2ZWwgPiBtYXhMZXZlbCcsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IG1pbkxldmVs
OyBsZXZlbE5keCA8PSBtYXhMZXZlbDsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuZ2V0Q3ViZUxldmVsRmFjZXModGV4dHVyZSwgbGV2
ZWxOZHgsIGZhY2VzKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1
cFZlcmlmaWVyLmlzQ3ViZUxldmVsU2FtcGxlUmVzdWx0VmFsaWQoZmFjZXMsIHNhbXBsZXIsIHRj
dVRleFZlcmlmaWVyVXRpbC5nZXRMZXZlbEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMs
IGZhY2VDb29yZHMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5nZXRDdWJlTGV2ZWxGYWNl
cyh0ZXh0dXJlLCAwLCBmYWNlcyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRjdVRleExv
b2t1cFZlcmlmaWVyLmlzQ3ViZUxldmVsU2FtcGxlUmVzdWx0VmFsaWQoZmFjZXMsIHNhbXBsZXIs
IHNhbXBsZXIubWluRmlsdGVyLCBwcmVjLCBmYWNlQ29vcmRzLCByZXN1bHQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fSB0ZXh0dXJl
CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFy
YW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IGxvZEJvdW5kcworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xv
b2t1cFJlc3VsdFZhbGlkX1RleHR1cmUyREFycmF5VmlldyA9IGZ1bmN0aW9uKHRleHR1cmUsIHNh
bXBsZXIsIHByZWMsIGNvb3JkLCBsb2RCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBsYXllclJhbmdlID0gdGN1VGV4TG9va3VwVmVyaWZp
ZXIuY29tcHV0ZUxheWVyUmFuZ2UodGV4dHVyZS5nZXROdW1MYXllcnMoKSwgcHJlYy5jb29yZEJp
dHNbMl0sIGNvb3JkWzJdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgY29vcmRYWSA9IGRlTWF0aC5zd2l6emxlKGNvb3JkLCBbMCwgMV0pOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxvZCA9IGxvZEJvdW5kc1swXTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhMb2QgPSBsb2RCb3VuZHNbMV07CisgICAgICAgIC8q
KiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNhbkJlTWFnbmlmaWVkID0gbWluTG9kIDw9IHNhbXBs
ZXIubG9kVGhyZXNob2xkOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBjYW5C
ZU1pbmlmaWVkID0gbWF4TG9kID4gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisKKyAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyh0Y3VUZXhMb29rdXBWZXJpZmllci5pc1NhbXBsZXJTdXBwb3J0ZWQoc2Ft
cGxlciksICdTYW1wbGVyIG5vdCBzdXBwb3J0ZWQuJywgZmFsc2UsIHRydWUpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxldmVsOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG1heExldmVsOworCisgICAgICAgIGZvciAodmFyIGxheWVyID0gbGF5ZXJS
YW5nZVswXTsgbGF5ZXIgPD0gbGF5ZXJSYW5nZVsxXTsgbGF5ZXIrKykgeworICAgICAgICAgICAg
aWYgKGNhbkJlTWFnbmlmaWVkKSB7CisgICAgICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZl
cmlmaWVyLmlzTGV2ZWxTYW1wbGVSZXN1bHRWYWxpZF9Db29yZEFzVmVjMkFuZEludCh0ZXh0dXJl
LmdldExldmVsKDApLCBzYW1wbGVyLCBzYW1wbGVyLm1hZ0ZpbHRlciwgcHJlYywgY29vcmRYWSwg
bGF5ZXIsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FuQmVNaW5pZmllZCkgeworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzTmVhcmVzdE1pcG1hcCA9IHRjdVRleFZl
cmlmaWVyVXRpbC5pc05lYXJlc3RNaXBtYXBGaWx0ZXIoc2FtcGxlci5taW5GaWx0ZXIpOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzTGluZWFyTWlwbWFwID0g
dGN1VGV4VmVyaWZpZXJVdGlsLmlzTGluZWFyTWlwbWFwRmlsdGVyKHNhbXBsZXIubWluRmlsdGVy
KTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pblRleExldmVs
ID0gMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFRleExl
dmVsID0gdGV4dHVyZS5nZXROdW1MZXZlbHMoKSAtIDE7CisKKyAgICAgICAgICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKG1pblRleExldmVsIDw9IG1heFRleExldmVsLCAnbWluVGV4TGV2ZWwgPiBt
YXhUZXhMZXZlbCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIGlmIChpc0xpbmVh
ck1pcG1hcCAmJiBtaW5UZXhMZXZlbCA8IG1heFRleExldmVsKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1pbkxldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IobWluTG9kKSwgbWluVGV4TGV2
ZWwsIG1heFRleExldmVsIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIG1heExldmVsID0gZGVN
YXRoLmNsYW1wKE1hdGguZmxvb3IobWF4TG9kKSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVsIC0g
MSk7CisKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5MZXZlbCA8PSBt
YXhMZXZlbCwgJ21pbkxldmVsID4gbWF4TGV2ZWwnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSBtaW5MZXZlbDsgbGV2ZWwgPD0gbWF4TGV2ZWw7
IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWluRiA9IGRlTWF0aC5jbGFtcChtaW5Mb2QgLSBsZXZlbCwgMCwgMSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEYgPSBkZU1hdGgu
Y2xhbXAobWF4TG9kIC0gbGV2ZWwsIDAsIDEpOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNNaXBtYXBMaW5lYXJTYW1wbGVSZXN1bHRWYWxpZF9D
b29yZEFzVmVjMkFuZEludCh0ZXh0dXJlLmdldExldmVsKGxldmVsKSwgdGV4dHVyZS5nZXRMZXZl
bChsZXZlbCArIDEpLCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxGaWx0ZXIo
c2FtcGxlci5taW5GaWx0ZXIpLCBwcmVjLCBjb29yZFhZLCBsYXllciwgW21pbkYsIG1heEZdLCBy
ZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05lYXJlc3RNaXBt
YXApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gXG5vdGUgVGhlIGFjY3VyYXRlIGZvcm11bGEg
Zm9yIG5lYXJlc3QgbWlwbWFwcGluZyBpcyBsZXZlbCA9IGNlaWwobG9kICsgMC41KSAtIDEgYnV0
IEtocm9ub3MgaGFzIG1hZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICBkZWNpc2lv
biB0byBhbGxvdyBmbG9vcihsb2QgKyAwLjUpIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAg
IG1pbkxldmVsID0gZGVNYXRoLmNsYW1wKE1hdGguY2VpbChtaW5Mb2QgKyAwLjUpIC0gMSwgbWlu
VGV4TGV2ZWwsIG1heFRleExldmVsKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4TGV2ZWwgPSBk
ZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtYXhMb2QgKyAwLjUpLCBtaW5UZXhMZXZlbCwgbWF4VGV4
TGV2ZWwpOworCisgICAgICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobWluTGV2ZWwg
PD0gbWF4TGV2ZWwsICdtaW5MZXZlbCA+IG1heExldmVsJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsID0gbWluTGV2ZWw7IGxldmVsIDw9IG1heExl
dmVsOyBsZXZlbCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGN1VGV4TG9va3Vw
VmVyaWZpZXIuaXNMZXZlbFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50KHRleHR1
cmUuZ2V0TGV2ZWwobGV2ZWwpLCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxG
aWx0ZXIoc2FtcGxlci5taW5GaWx0ZXIpLCBwcmVjLCBjb29yZFhZLCBsYXllciwgcmVzdWx0KSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xldmVsU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1Zl
YzJBbmRJbnQodGV4dHVyZS5nZXRMZXZlbCgwKSwgc2FtcGxlciwgc2FtcGxlci5taW5GaWx0ZXIs
IHByZWMsIGNvb3JkWFksIGxheWVyLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuVGV4dHVyZTNEVmlld30gdGV4dHVyZQorICAgICAqIEBwYXJhbSB7dGN1
VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJp
Zmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IGNvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBsb2RCb3VuZHMKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMb29rdXBSZXN1bHRWYWxpZCA9IGZ1
bmN0aW9uKHRleHR1cmUsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCBsb2RCb3VuZHMsIHJlc3VsdCkg
eworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxvZCA9IGxvZEJvdW5kc1sw
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhMb2QgPSBsb2RCb3VuZHNb
MV07CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNhbkJlTWFnbmlmaWVkID0g
bWluTG9kIDw9IHNhbXBsZXIubG9kVGhyZXNob2xkOworICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciBjYW5CZU1pbmlmaWVkID0gbWF4TG9kID4gc2FtcGxlci5sb2RUaHJlc2hvbGQ7
CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0Y3VUZXhMb29rdXBWZXJpZmllci5pc1NhbXBs
ZXJTdXBwb3J0ZWQoc2FtcGxlciksICdTYW1wbGVyIG5vdCBzdXBwb3J0ZWQuJywgZmFsc2UsIHRy
dWUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluTGV2ZWw7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4TGV2ZWw7CisKKyAgICAgICAgaWYgKGNh
bkJlTWFnbmlmaWVkKQorICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGV2
ZWxTYW1wbGVSZXN1bHRWYWxpZF9Db29yZEFzVmVjMyh0ZXh0dXJlLmdldExldmVsKDApLCBzYW1w
bGVyLCBzYW1wbGVyLm1hZ0ZpbHRlciwgcHJlYywgY29vcmQsIHJlc3VsdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGNhbkJlTWluaWZpZWQpIHsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzTmVhcmVzdE1pcG1hcCA9IHRjdVRl
eFZlcmlmaWVyVXRpbC5pc05lYXJlc3RNaXBtYXBGaWx0ZXIoc2FtcGxlci5taW5GaWx0ZXIpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNMaW5lYXJNaXBtYXAgPSB0
Y3VUZXhWZXJpZmllclV0aWwuaXNMaW5lYXJNaXBtYXBGaWx0ZXIoc2FtcGxlci5taW5GaWx0ZXIp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5UZXhMZXZlbCA9IDA7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFRleExldmVsID0gdGV4
dHVyZS5nZXROdW1MZXZlbHMoKSAtIDE7CisKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
bWluVGV4TGV2ZWwgPD0gbWF4VGV4TGV2ZWwsICdtaW5UZXhMZXZlbCA+IG1heFRleExldmVsJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBpZiAoaXNMaW5lYXJNaXBtYXAgJiYgbWluVGV4
TGV2ZWwgPCBtYXhUZXhMZXZlbCkgeworICAgICAgICAgICAgICAgIG1pbkxldmVsID0gZGVNYXRo
LmNsYW1wKE1hdGguZmxvb3IobWluTG9kKSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVsIC0gMSk7
CisgICAgICAgICAgICAgICAgbWF4TGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtYXhM
b2QpLCBtaW5UZXhMZXZlbCwgbWF4VGV4TGV2ZWwgLSAxKTsKKworICAgICAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMobWluTGV2ZWwgPD0gbWF4TGV2ZWwsICdtaW5MZXZlbCA+IG1heExldmVs
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSBtaW5M
ZXZlbDsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5GID0gZGVNYXRoLmNsYW1wKG1pbkxvZCAtIGxl
dmVsLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBtYXhGID0gZGVNYXRoLmNsYW1wKG1heExvZCAtIGxldmVsLCAwLCAxKTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZpZXIuaXNNaXBtYXBMaW5lYXJTYW1wbGVS
ZXN1bHRWYWxpZF9Db29yZEFzVmVjMyh0ZXh0dXJlLmdldExldmVsKGxldmVsKSwgdGV4dHVyZS5n
ZXRMZXZlbChsZXZlbCArIDEpLCBzYW1wbGVyLCB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxG
aWx0ZXIoc2FtcGxlci5taW5GaWx0ZXIpLCBwcmVjLCBjb29yZCwgW21pbkYsIG1heEZdLCByZXN1
bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc05lYXJlc3RNaXBtYXApIHsKKyAgICAgICAg
ICAgICAgICAvLyBcbm90ZSBUaGUgYWNjdXJhdGUgZm9ybXVsYSBmb3IgbmVhcmVzdCBtaXBtYXBw
aW5nIGlzIGxldmVsID0gY2VpbChsb2QgKyAwLjUpIC0gMSBidXQgS2hyb25vcyBoYXMgbWFkZQor
ICAgICAgICAgICAgICAgIC8vICAgICAgICAgZGVjaXNpb24gdG8gYWxsb3cgZmxvb3IobG9kICsg
MC41KSBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIG1pbkxldmVsID0gZGVNYXRoLmNsYW1wKE1h
dGguY2VpbChtaW5Mb2QgKyAwLjUpIC0gMSwgbWluVGV4TGV2ZWwsIG1heFRleExldmVsKTsKKyAg
ICAgICAgICAgICAgICBtYXhMZXZlbCA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKG1heExvZCAr
IDAuNSksIG1pblRleExldmVsLCBtYXhUZXhMZXZlbCk7CisKKyAgICAgICAgICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKG1pbkxldmVsIDw9IG1heExldmVsLCAnbWluTGV2ZWwgPiBtYXhMZXZlbCcs
IGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsID0gbWluTGV2
ZWw7IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xldmVsU2FtcGxlUmVzdWx0VmFsaWRfQ29vcmRBc1Zl
YzModGV4dHVyZS5nZXRMZXZlbChsZXZlbCksIHNhbXBsZXIsIHRjdVRleFZlcmlmaWVyVXRpbC5n
ZXRMZXZlbEZpbHRlcihzYW1wbGVyLm1pbkZpbHRlciksIHByZWMsIGNvb3JkLCByZXN1bHQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVy
aWZpZXIuaXNMZXZlbFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMzKHRleHR1cmUuZ2V0TGV2
ZWwoMCksIHNhbXBsZXIsIHNhbXBsZXIubWluRmlsdGVyLCBwcmVjLCBjb29yZCwgcmVzdWx0KSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0gZmFjZXMgKCZm
YWNlcylbQ1VCRUZBQ0VfTEFTVF0KKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0g
c2FtcGxlcgorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lz
aW9ufSBwcmVjCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSBjb29y
ZHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNTZWFtbGVzc0xp
bmVhclNhbXBsZVJlc3VsdFZhbGlkID0gZnVuY3Rpb24oZmFjZXMsIHNhbXBsZXIsIHByZWMsIGNv
b3JkcywgcmVzdWx0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2l6ZSA9
IGZhY2VzW2Nvb3Jkcy5mYWNlXS5nZXRXaWR0aCgpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIHVCb3VuZHMgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5v
bk5vcm1hbGl6ZWRDb29yZEJvdW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIHNpemUsIGNv
b3Jkcy5zLCBwcmVjLmNvb3JkQml0c1swXSwgcHJlYy51dndCaXRzWzBdKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdkJvdW5kcyA9IHRjdVRleFZlcmlmaWVyVXRp
bC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIubm9ybWFsaXplZENvb3Jk
cywgc2l6ZSwgY29vcmRzLnQsIHByZWMuY29vcmRCaXRzWzFdLCBwcmVjLnV2d0JpdHNbMV0pOwor
CisgICAgICAgIC8vIEludGVnZXIgY29vcmRpbmF0ZSBib3VuZHMgZm9yICh4MCx5MCkgLSB3aXRo
b3V0IHdyYXAgbW9kZQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkkgPSBN
YXRoLmZsb29yKHVCb3VuZHNbMF0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG1heEkgPSBNYXRoLmZsb29yKHVCb3VuZHNbMV0gLSAwLjUpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkogPSBNYXRoLmZsb29yKHZCb3VuZHNbMF0gLSAwLjUp
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEogPSBNYXRoLmZsb29yKHZC
b3VuZHNbMV0gLSAwLjUpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJl
Q2hhbm5lbENsYXNzfSAqLyB2YXIgdGV4Q2xhc3MgPSB0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFu
bmVsQ2xhc3MoZmFjZXNbY29vcmRzLmZhY2VdLmdldEZvcm1hdCgpLnR5cGUpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNlYXJjaFN0ZXAgPSAodGV4Q2xhc3MgPT0gdGN1VGV4
dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UKSA/IHRjdVRleExv
b2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGb3JVbm9ybShwcmVjKSA6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXhDbGFzcyA9
PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0ZJWEVEX1BPSU5UKSA/IHRj
dVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVCaWxpbmVhclNlYXJjaFN0ZXBGb3JTbm9ybShwcmVj
KSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA7IC8v
IFN0ZXAgaXMgY29tcHV0ZWQgZm9yIGZsb2F0aW5nLXBvaW50IHF1YWRzIGJhc2VkIG9uIHRleGVs
IHZhbHVlcy4KKworICAgICAgICBmb3IgKHZhciBqID0gbWluSjsgaiA8PSBtYXhKOyBqKyspIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSBtaW5JOyBpIDw9IG1heEk7IGkrKykgeworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkc30gKi8gdmFyIGMw
MCA9IHRjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJlRmFj
ZUNvb3Jkcyhjb29yZHMuZmFjZSwgW2kgKyAwLCBqICsgMF0pLCBzaXplKTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHN9ICovIHZhciBjMTAgPSB0
Y3VUZXh0dXJlLnJlbWFwQ3ViZUVkZ2VDb29yZHMobmV3IHRjdVRleHR1cmUuQ3ViZUZhY2VDb29y
ZHMoY29vcmRzLmZhY2UsIFtpICsgMSwgaiArIDBdKSwgc2l6ZSk7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSAqLyB2YXIgYzAxID0gdGN1VGV4
dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNv
b3Jkcy5mYWNlLCBbaSArIDAsIGogKyAxXSksIHNpemUpOworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkc30gKi8gdmFyIGMxMSA9IHRjdVRleHR1cmUu
cmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyhjb29yZHMu
ZmFjZSwgW2kgKyAxLCBqICsgMV0pLCBzaXplKTsKKworICAgICAgICAgICAgICAgIC8vIElmIGFu
eSBvZiBzYW1wbGVzIGlzIG91dCBvZiBib3RoIGVkZ2VzLCBpbXBsZW1lbnRhdGlvbnMgY2FuIGRv
IHByZXR0eSBtdWNoIGFueXRoaW5nIGFjY29yZGluZyB0byBzcGVjLgorICAgICAgICAgICAgICAg
IC8vIFx0b2RvIFsyMDEzLTA3LTA4IHB5cnldIFRlc3QgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBh
bGwgY29ybmVyIHBpeGVscyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgY29sb3IuCisgICAgICAgICAg
ICAgICAgaWYgKGMwMCA9PSBudWxsIHx8IGMwMSA9PSBudWxsIHx8IGMxMCA9PSBudWxsIHx8IGMx
MSA9PSBudWxsIHx8CisgICAgICAgICAgICAgICAgICAgIGMwMC5mYWNlID09IG51bGwgfHwgYzAx
LmZhY2UgPT0gbnVsbCB8fCBjMTAuZmFjZSA9PSBudWxsIHx8IGMxMS5mYWNlID09IG51bGwpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gQm91
bmRzIGZvciBmaWx0ZXJpbmcgZmFjdG9ycworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbWluQSA9IGRlTWF0aC5jbGFtcCgodUJvdW5kc1swXSAtIDAuNSkgLSBpLCAw
LCAxKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEEgPSBk
ZU1hdGguY2xhbXAoKHVCb3VuZHNbMV0gLSAwLjUpIC0gaSwgMCwgMSk7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5CID0gZGVNYXRoLmNsYW1wKCh2Qm91bmRz
WzBdIC0gMC41KSAtIGosIDAsIDEpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4QiA9IGRlTWF0aC5jbGFtcCgodkJvdW5kc1sxXSAtIDAuNSkgLSBqLCAwLCAx
KTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuQ29s
b3JRdWFkfSAqLworICAgICAgICAgICAgICAgIHZhciBxdWFkID0gbmV3IHRjdVRleExvb2t1cFZl
cmlmaWVyLkNvbG9yUXVhZChbXSwgW10sIFtdLCBbXSk7CisgICAgICAgICAgICAgICAgcXVhZC5w
MDAgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChmYWNlc1tjMDAuZmFjZV0sIHNh
bXBsZXIsIGMwMC5zLCBjMDAudCwgMCk7CisgICAgICAgICAgICAgICAgcXVhZC5wMTAgPSB0Y3VU
ZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChmYWNlc1tjMTAuZmFjZV0sIHNhbXBsZXIsIGMx
MC5zLCBjMTAudCwgMCk7CisgICAgICAgICAgICAgICAgcXVhZC5wMDEgPSB0Y3VUZXhMb29rdXBW
ZXJpZmllci5sb29rdXBGbG9hdChmYWNlc1tjMDEuZmFjZV0sIHNhbXBsZXIsIGMwMS5zLCBjMDEu
dCwgMCk7CisgICAgICAgICAgICAgICAgcXVhZC5wMTEgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5s
b29rdXBGbG9hdChmYWNlc1tjMTEuZmFjZV0sIHNhbXBsZXIsIGMxMS5zLCBjMTEudCwgMCk7CisK
KyAgICAgICAgICAgICAgICBpZiAodGV4Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5l
bENsYXNzLkZMT0FUSU5HX1BPSU5UKQorICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdGVwID0g
dGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZyb21GbG9hdFF1
YWQocHJlYywgcXVhZCk7CisKKyAgICAgICAgICAgICAgICBpZiAodGN1VGV4TG9va3VwVmVyaWZp
ZXIuaXNCaWxpbmVhclJhbmdlVmFsaWQocHJlYywgcXVhZCwgW21pbkEsIG1heEFdLCBbbWluQiwg
bWF4Ql0sIHNlYXJjaFN0ZXAsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQ
aXhlbEJ1ZmZlckFjY2Vzcz59IGZhY2VzMCAoJmZhY2VzMClbQ1VCRUZBQ0VfTEFTVF0KKyAgICAg
KiBAcGFyYW0ge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59IGZhY2Vz
MSAoJmZhY2VzMSlbQ1VCRUZBQ0VfTEFTVF0KKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2Ft
cGxlcn0gc2FtcGxlcgorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3Vw
UHJlY2lzaW9ufSBwcmVjCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRz
fSBjb29yZHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGZCb3VuZHMKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNTZWFtcGxlc3NMaW5lYXJNaXBtYXBM
aW5lYXJTYW1wbGVSZXN1bHRWYWxpZCA9IGZ1bmN0aW9uKGZhY2VzMCwgZmFjZXMxLCBzYW1wbGVy
LCBwcmVjLCBjb29yZHMsIGZCb3VuZHMsIHJlc3VsdCkgeworICAgICAgICAvLyBcdG9kbyBbMjAx
My0wNy0wNCBweXJ5XSBUaGlzIGlzIHN0cmljdGx5IG5vdCBjb3JyZWN0IGFzIGNvb3JkaW5hdGVz
IGJldHdlZW4gbGV2ZWxzIHNob3VsZCBiZSBkZXBlbmRlbnQuCisgICAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmlnaHQgbm93IHRoaXMgYWxsb3dzIHBhaXJpbmcgYW55IHR3byB2
YWxpZCBiaWxpbmVhciBxdWFkcy4KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBz
aXplMCA9IGZhY2VzMFtjb29yZHMuZmFjZV0uZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzaXplMSA9IGZhY2VzMVtjb29yZHMuZmFjZV0uZ2V0V2lkdGgoKTsK
KworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB1Qm91bmRzMCA9IHRj
dVRleFZlcmlmaWVyVXRpbC5jb21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIu
bm9ybWFsaXplZENvb3Jkcywgc2l6ZTAsIGNvb3Jkcy5zLCBwcmVjLmNvb3JkQml0c1swXSwgcHJl
Yy51dndCaXRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
dUJvdW5kczEgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJv
dW5kcyhzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMsIHNpemUxLCBjb29yZHMucywgcHJlYy5jb29y
ZEJpdHNbMF0sIHByZWMudXZ3Qml0c1swXSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHZCb3VuZHMwID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVOb25Ob3Jt
YWxpemVkQ29vcmRCb3VuZHMoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzLCBzaXplMCwgY29vcmRz
LnQsIHByZWMuY29vcmRCaXRzWzFdLCBwcmVjLnV2d0JpdHNbMV0pOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2Qm91bmRzMSA9IHRjdVRleFZlcmlmaWVyVXRpbC5j
b21wdXRlTm9uTm9ybWFsaXplZENvb3JkQm91bmRzKHNhbXBsZXIubm9ybWFsaXplZENvb3Jkcywg
c2l6ZTEsIGNvb3Jkcy50LCBwcmVjLmNvb3JkQml0c1sxXSwgcHJlYy51dndCaXRzWzFdKTsKKwor
ICAgICAgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzIC0gd2l0aG91dCB3cmFwIG1vZGUKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5JMCA9IE1hdGguZmxvb3IodUJvdW5kczBb
MF0gLSAwLjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEkwID0gTWF0
aC5mbG9vcih1Qm91bmRzMFsxXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWluSTEgPSBNYXRoLmZsb29yKHVCb3VuZHMxWzBdIC0gMC41KTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhJMSA9IE1hdGguZmxvb3IodUJvdW5kczFbMV0gLSAw
LjUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkowID0gTWF0aC5mbG9v
cih2Qm91bmRzMFswXSAtIDAuNSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWF4SjAgPSBNYXRoLmZsb29yKHZCb3VuZHMwWzFdIC0gMC41KTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBtaW5KMSA9IE1hdGguZmxvb3IodkJvdW5kczFbMF0gLSAwLjUpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEoxID0gTWF0aC5mbG9vcih2Qm91
bmRzMVsxXSAtIDAuNSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVD
aGFubmVsQ2xhc3N9ICovIHZhciB0ZXhDbGFzcyA9IHRjdVRleHR1cmUuZ2V0VGV4dHVyZUNoYW5u
ZWxDbGFzcyhmYWNlczBbY29vcmRzLmZhY2VdLmdldEZvcm1hdCgpLnR5cGUpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNTZWFyY2hTdGVwID0gKHRleENsYXNzID09IHRjdVRl
eHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCkgPyB0Y3VUZXhM
b29rdXBWZXJpZmllci5jb21wdXRlQmlsaW5lYXJTZWFyY2hTdGVwRm9yVW5vcm0ocHJlYykgOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRleENsYXNz
ID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfRklYRURfUE9JTlQpID8g
dGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZvclNub3JtKHBy
ZWMpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA7
IC8vIFN0ZXAgaXMgY29tcHV0ZWQgZm9yIGZsb2F0aW5nLXBvaW50IHF1YWRzIGJhc2VkIG9uIHRl
eGVsIHZhbHVlcy4KKworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZhY2VDb29y
ZHN9ICovIHZhciBjMDA7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5DdWJlRmFjZUNv
b3Jkc30gKi8gdmFyIGMxMDsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkN1YmVGYWNl
Q29vcmRzfSAqLyB2YXIgYzAxOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZh
Y2VDb29yZHN9ICovIHZhciBjMTE7CisKKyAgICAgICAgZm9yICh2YXIgajAgPSBtaW5KMDsgajAg
PD0gbWF4SjA7IGowKyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkwID0gbWluSTA7IGkwIDw9
IG1heEkwOyBpMCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBW
ZXJpZmllci5Db2xvclF1YWR9ICovCisgICAgICAgICAgICAgICAgdmFyIHF1YWQwID0gbmV3IHRj
dVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZChbXSwgW10sIFtdLCBbXSk7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWFyY2hTdGVwMDsKKworICAgICAgICAg
ICAgICAgIGMwMCA9IHRjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVy
ZS5DdWJlRmFjZUNvb3Jkcyhjb29yZHMuZmFjZSwgW2kwICsgMCwgajAgKyAwXSksIHNpemUwKTsK
KyAgICAgICAgICAgICAgICBjMTAgPSB0Y3VUZXh0dXJlLnJlbWFwQ3ViZUVkZ2VDb29yZHMobmV3
IHRjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHMoY29vcmRzLmZhY2UsIFtpMCArIDEsIGowICsgMF0p
LCBzaXplMCk7CisgICAgICAgICAgICAgICAgYzAxID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdl
Q29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTAgKyAw
LCBqMCArIDFdKSwgc2l6ZTApOworICAgICAgICAgICAgICAgIGMxMSA9IHRjdVRleHR1cmUucmVt
YXBDdWJlRWRnZUNvb3JkcyhuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyhjb29yZHMuZmFj
ZSwgW2kwICsgMSwgajAgKyAxXSksIHNpemUwKTsKKworICAgICAgICAgICAgICAgIC8vIElmIGFu
eSBvZiBzYW1wbGVzIGlzIG91dCBvZiBib3RoIGVkZ2VzLCBpbXBsZW1lbnRhdGlvbnMgY2FuIGRv
IHByZXR0eSBtdWNoIGFueXRoaW5nIGFjY29yZGluZyB0byBzcGVjLgorICAgICAgICAgICAgICAg
IC8vIFx0b2RvIFsyMDEzLTA3LTA4IHB5cnldIFRlc3QgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBh
bGwgY29ybmVyIHBpeGVscyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgY29sb3IuCisgICAgICAgICAg
ICAgICAgaWYgKGMwMCA9PSBudWxsIHx8IGMwMSA9PSBudWxsIHx8IGMxMCA9PSBudWxsIHx8IGMx
MSA9PSBudWxsIHx8CisgICAgICAgICAgICAgICAgICAgIGMwMC5mYWNlID09IG51bGwgfHwgYzAx
LmZhY2UgPT0gbnVsbCB8fCBjMTAuZmFjZSA9PSBudWxsIHx8IGMxMS5mYWNlID09IG51bGwpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgcXVhZDAu
cDAwID0gdGN1VGV4TG9va3VwVmVyaWZpZXIubG9va3VwRmxvYXQoZmFjZXMwW2MwMC5mYWNlXSwg
c2FtcGxlciwgYzAwLnMsIGMwMC50LCAwKTsKKyAgICAgICAgICAgICAgICBxdWFkMC5wMTAgPSB0
Y3VUZXhMb29rdXBWZXJpZmllci5sb29rdXBGbG9hdChmYWNlczBbYzEwLmZhY2VdLCBzYW1wbGVy
LCBjMTAucywgYzEwLnQsIDApOworICAgICAgICAgICAgICAgIHF1YWQwLnAwMSA9IHRjdVRleExv
b2t1cFZlcmlmaWVyLmxvb2t1cEZsb2F0KGZhY2VzMFtjMDEuZmFjZV0sIHNhbXBsZXIsIGMwMS5z
LCBjMDEudCwgMCk7CisgICAgICAgICAgICAgICAgcXVhZDAucDExID0gdGN1VGV4TG9va3VwVmVy
aWZpZXIubG9va3VwRmxvYXQoZmFjZXMwW2MxMS5mYWNlXSwgc2FtcGxlciwgYzExLnMsIGMxMS50
LCAwKTsKKworICAgICAgICAgICAgICAgIGlmICh0ZXhDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1
cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQpCisgICAgICAgICAgICAgICAgICAgIHNlYXJj
aFN0ZXAwID0gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZy
b21GbG9hdFF1YWQocHJlYywgcXVhZDApOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc2VhcmNoU3RlcDAgPSBjU2VhcmNoU3RlcDsKKworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluQTAgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMw
WzBdIC0gMC41KSAtIGkwLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1heEEwID0gZGVNYXRoLmNsYW1wKCh1Qm91bmRzMFsxXSAtIDAuNSkgLSBpMCwg
MCwgMSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5CMCA9
IGRlTWF0aC5jbGFtcCgodkJvdW5kczBbMF0gLSAwLjUpIC0gajAsIDAsIDEpOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QjAgPSBkZU1hdGguY2xhbXAoKHZC
b3VuZHMwWzFdIC0gMC41KSAtIGowLCAwLCAxKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFy
IGoxID0gbWluSjE7IGoxIDw9IG1heEoxOyBqMSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkxID0gbWluSTE7IGkxIDw9IG1heEkxOyBpMSsrKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZlcmlmaWVyLkNvbG9yUXVhZH0gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWFkMSA9IG5ldyB0Y3VUZXhMb29rdXBWZXJpZmll
ci5Db2xvclF1YWQoW10sIFtdLCBbXSwgW10pOworICAgICAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWFyY2hTdGVwMTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgYzAwID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJl
LkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTEgKyAwLCBqMSArIDBdKSwgc2l6ZTEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYzEwID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29v
cmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTEgKyAxLCBq
MSArIDBdKSwgc2l6ZTEpOworICAgICAgICAgICAgICAgICAgICAgICAgYzAxID0gdGN1VGV4dHVy
ZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGNvb3Jk
cy5mYWNlLCBbaTEgKyAwLCBqMSArIDFdKSwgc2l6ZTEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYzExID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1
YmVGYWNlQ29vcmRzKGNvb3Jkcy5mYWNlLCBbaTEgKyAxLCBqMSArIDFdKSwgc2l6ZTEpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYzAwID09IG51bGwgfHwgYzAxID09IG51bGwgfHwg
YzEwID09IG51bGwgfHwgYzExID09IG51bGwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjMDAuZmFjZSA9PSBudWxsIHx8IGMwMS5mYWNlID09IG51bGwgfHwgYzEwLmZhY2UgPT0gbnVs
bCB8fCBjMTEuZmFjZSA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICBxdWFkMS5wMDAgPSB0Y3VUZXhMb29r
dXBWZXJpZmllci5sb29rdXBGbG9hdChmYWNlczFbYzAwLmZhY2VdLCBzYW1wbGVyLCBjMDAucywg
YzAwLnQsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgcXVhZDEucDEwID0gdGN1VGV4TG9v
a3VwVmVyaWZpZXIubG9va3VwRmxvYXQoZmFjZXMxW2MxMC5mYWNlXSwgc2FtcGxlciwgYzEwLnMs
IGMxMC50LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1YWQxLnAwMSA9IHRjdVRleExv
b2t1cFZlcmlmaWVyLmxvb2t1cEZsb2F0KGZhY2VzMVtjMDEuZmFjZV0sIHNhbXBsZXIsIGMwMS5z
LCBjMDEudCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBxdWFkMS5wMTEgPSB0Y3VUZXhM
b29rdXBWZXJpZmllci5sb29rdXBGbG9hdChmYWNlczFbYzExLmZhY2VdLCBzYW1wbGVyLCBjMTEu
cywgYzExLnQsIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4Q2xhc3MgPT0g
dGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlYXJjaFN0ZXAxID0gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29t
cHV0ZUJpbGluZWFyU2VhcmNoU3RlcEZyb21GbG9hdFF1YWQocHJlYywgcXVhZDEpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJj
aFN0ZXAxID0gY1NlYXJjaFN0ZXA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWluQTEgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMxWzBdIC0gMC41
KSAtIGkxLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4QTEgPSBkZU1hdGguY2xhbXAoKHVCb3VuZHMxWzFdIC0gMC41KSAtIGkxLCAw
LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWluQjEgPSBkZU1hdGguY2xhbXAoKHZCb3VuZHMxWzBdIC0gMC41KSAtIGoxLCAwLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QjEgPSBk
ZU1hdGguY2xhbXAoKHZCb3VuZHMxWzFdIC0gMC41KSAtIGoxLCAwLCAxKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLmlzMkRUcmlsaW5lYXJGaWx0
ZXJSZXN1bHRWYWxpZChwcmVjLCBxdWFkMCwgcXVhZDEsIFttaW5BMCwgbWF4QTBdLCBbbWluQjAs
IG1heEIwXSwgW21pbkExLCBtYXhBMV0sIFttaW5CMSwgbWF4QjFdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLCBNYXRo
Lm1pbihzZWFyY2hTdGVwMCwgc2VhcmNoU3RlcDEpLCByZXN1bHQpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHRjdVRleHR1cmUu
Q29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59IGxldmVsICgmbGV2ZWwpW0NVQkVGQUNFX0xBU1RdCisg
ICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFyYW0g
e3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVyTW9kZQorICAgICAqIEBwYXJhbSB7dGN1VGV4
TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAgICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSBjb29yZHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHJlc3VsdAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4
TG9va3VwVmVyaWZpZXIuaXNDdWJlTGV2ZWxTYW1wbGVSZXN1bHRWYWxpZCA9IGZ1bmN0aW9uKGxl
dmVsLCBzYW1wbGVyLCBmaWx0ZXJNb2RlLCBwcmVjLCBjb29yZHMsIHJlc3VsdCkgeworICAgICAg
ICBpZiAoZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSKSB7CisgICAg
ICAgICAgICBpZiAoc2FtcGxlci5zZWFtbGVzc0N1YmVNYXApCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzU2VhbWxlc3NMaW5lYXJTYW1wbGVSZXN1bHRWYWxp
ZChsZXZlbCwgc2FtcGxlciwgcHJlYywgY29vcmRzLCByZXN1bHQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVhclNh
bXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50KGxldmVsW2Nvb3Jkcy5mYWNlXSwgc2Ft
cGxlciwgcHJlYywgW2Nvb3Jkcy5zLCBjb29yZHMudF0sIDAsIHJlc3VsdCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTmVhcmVzdFNh
bXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50KGxldmVsW2Nvb3Jkcy5mYWNlXSwgc2Ft
cGxlciwgcHJlYywgW2Nvb3Jkcy5zLCBjb29yZHMudF0sIDAsIHJlc3VsdCk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVy
QWNjZXNzPn0gZmFjZXMwICgmZmFjZXMwKVtDVUJFRkFDRV9MQVNUXQorICAgICAqIEBwYXJhbSB7
QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0gZmFjZXMxICgmZmFjZXMx
KVtDVUJFRkFDRV9MQVNUXQorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkZpbHRlck1vZGV9IGxldmVsRmlsdGVyCisg
ICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMK
KyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHN9IGNvb3JkcworICAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZkJvdW5kcworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VU
ZXhMb29rdXBWZXJpZmllci5pc0N1YmVNaXBtYXBMaW5lYXJTYW1wbGVSZXN1bHRWYWxpZCA9IGZ1
bmN0aW9uKGZhY2VzMCwgZmFjZXMxLCBzYW1wbGVyLCBsZXZlbEZpbHRlciwgcHJlYywgY29vcmRz
LCBmQm91bmRzLCByZXN1bHQpIHsKKyAgICAgICAgaWYgKGxldmVsRmlsdGVyID09IHRjdVRleHR1
cmUuRmlsdGVyTW9kZS5MSU5FQVIpIHsKKyAgICAgICAgICAgIGlmIChzYW1wbGVyLnNlYW1sZXNz
Q3ViZU1hcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNT
ZWFtcGxlc3NMaW5lYXJNaXBtYXBMaW5lYXJTYW1wbGVSZXN1bHRWYWxpZChmYWNlczAsIGZhY2Vz
MSwgc2FtcGxlciwgcHJlYywgY29vcmRzLCBmQm91bmRzLCByZXN1bHQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xpbmVh
ck1pcG1hcExpbmVhclNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50KGZhY2VzMFtj
b29yZHMuZmFjZV0sIGZhY2VzMVtjb29yZHMuZmFjZV0sIHNhbXBsZXIsIHByZWMsIFtjb29yZHMu
cywgY29vcmRzLnRdLCAwLCBmQm91bmRzLCByZXN1bHQpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc05lYXJlc3RNaXBtYXBMaW5lYXJT
YW1wbGVSZXN1bHRWYWxpZF9Db29yZEFzVmVjMkFuZEludChmYWNlczBbY29vcmRzLmZhY2VdLCBm
YWNlczFbY29vcmRzLmZhY2VdLCBzYW1wbGVyLCBwcmVjLCBbY29vcmRzLnMsIGNvb3Jkcy50XSwg
MCwgZkJvdW5kcywgcmVzdWx0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlld30gdGV4dHVyZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsZXZlbE5keAorICAgICAqIEBwYXJhbSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVm
ZmVyQWNjZXNzPn0gb3V0ICgmb3V0KVtDVUJFRkFDRV9MQVNUXQorICAgICAqLworICAgIHRjdVRl
eExvb2t1cFZlcmlmaWVyLmdldEN1YmVMZXZlbEZhY2VzID0gZnVuY3Rpb24odGV4dHVyZSwgbGV2
ZWxOZHgsIG91dCkgeworICAgICAgICBmb3IgKHZhciBmYWNlTmR4ID0gMDsgZmFjZU5keCA8IDY7
IGZhY2VOZHgrKykKKyAgICAgICAgICAgIG91dFtmYWNlTmR4XSA9IHRleHR1cmUuZ2V0TGV2ZWxG
YWNlKGxldmVsTmR4LCAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZhY2V9ICovIChmYWNlTmR4
KSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MYXllcnMK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQ29vcmRCaXRzCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxheWVyQ29vcmQKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLwor
ICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVMYXllclJhbmdlID0gZnVuY3Rpb24obnVt
TGF5ZXJzLCBudW1Db29yZEJpdHMsIGxheWVyQ29vcmQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBlcnIgPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZsb2F0aW5nUG9p
bnRFcnJvcihsYXllckNvb3JkLCBudW1Db29yZEJpdHMpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG1pbkwgPSBNYXRoLmZsb29yKGxheWVyQ29vcmQgLSBlcnIgKyAwLjUpOyAv
LyBSb3VuZCBkb3duCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4TCA9IE1h
dGguY2VpbChsYXllckNvb3JkICsgZXJyICsgMC41KSAtIDE7IC8vIFJvdW5kIHVwCisKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5MIDw9IG1heEwsICdtaW5MID4gbWF4TCcsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICByZXR1cm4gW2RlTWF0aC5jbGFtcChtaW5MLCAwLCBudW1MYXllcnMg
LSAxKSwgZGVNYXRoLmNsYW1wKG1heEwsIDAsIG51bUxheWVycyAtIDEpXTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpdHMKKyAgICAqIEByZXR1cm4g
e0FycmF5PG51bWJlcj59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRl
Rml4ZWRQb2ludFRocmVzaG9sZCA9IGZ1bmN0aW9uKGJpdHMpIHsKKyAgICAgICAgcmV0dXJuIHRj
dVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRml4ZWRQb2ludEVycm9yX1ZlY3RvcihiaXRzKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpdHMKKyAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmFsdWUKKyAgICAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59CisgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlRmxvYXRpbmdQb2lu
dFRocmVzaG9sZCA9IGZ1bmN0aW9uKGJpdHMsIHZhbHVlKSB7CisgICAgICAgIHJldHVybiB0Y3VU
ZXhWZXJpZmllclV0aWwuY29tcHV0ZUZsb2F0aW5nUG9pbnRFcnJvcl9WZWN0b3IodmFsdWUsIGJp
dHMpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdWR4CisgICAg
KiBAcGFyYW0ge251bWJlcn0gZHZkeAorICAgICogQHBhcmFtIHtudW1iZXJ9IGR3ZHgKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBkdWR5CisgICAgKiBAcGFyYW0ge251bWJlcn0gZHZkeQorICAgICog
QHBhcmFtIHtudW1iZXJ9IGR3ZHkKKyAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIu
TG9kUHJlY2lzaW9ufSBwcmVjCisgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICov
CisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUxvZEJvdW5kc0Zyb21EZXJpdmF0ZXMg
PSBmdW5jdGlvbihkdWR4LCBkdmR4LCBkd2R4LCBkdWR5LCBkdmR5LCBkd2R5LCBwcmVjKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbXUgPSBNYXRoLm1heChNYXRoLmFicyhk
dWR4KSwgTWF0aC5hYnMoZHVkeSkpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG12ID0gTWF0aC5tYXgoTWF0aC5hYnMoZHZkeCksIE1hdGguYWJzKGR2ZHkpKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtdyA9IE1hdGgubWF4KE1hdGguYWJzKGR3ZHgpLCBN
YXRoLmFicyhkd2R5KSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluREJv
dW5kID0gTWF0aC5tYXgoTWF0aC5tYXgobXUsIG12KSwgbXcpOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1heERCb3VuZCA9IG11ICsgbXYgKyBtdzsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtaW5ERXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVG
bG9hdGluZ1BvaW50RXJyb3IobWluREJvdW5kLCBwcmVjLmRlcml2YXRlQml0cyk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4REVyciA9IHRjdVRleFZlcmlmaWVyVXRpbC5j
b21wdXRlRmxvYXRpbmdQb2ludEVycm9yKG1heERCb3VuZCwgcHJlYy5kZXJpdmF0ZUJpdHMpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxvZCA9IE1hdGgubG9nMihtaW5E
Qm91bmQgLSBtaW5ERXJyKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhM
b2QgPSBNYXRoLmxvZzIobWF4REJvdW5kICsgbWF4REVycik7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgbG9kRXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGaXhlZFBv
aW50RXJyb3IocHJlYy5sb2RCaXRzKTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG1pbkxv
ZCA8PSBtYXhMb2QsICdFcnJvcjogbWluTG9kID4gbWF4TG9kJywgZmFsc2UsIHRydWUpOworICAg
ICAgICByZXR1cm4gW21pbkxvZCAtIGxvZEVyciwgbWF4TG9kICsgbG9kRXJyXTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZHVkeAorICAgICogQHBhcmFtIHtudW1i
ZXJ9IGR2ZHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdWR5CisgICAgKiBAcGFyYW0ge251bWJl
cn0gZHZkeQorICAgICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259
IHByZWMKKyAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgKi8KKyAgICB0Y3VUZXhM
b29rdXBWZXJpZmllci5jb21wdXRlTG9kQm91bmRzRnJvbURlcml2YXRlc1VWID0gZnVuY3Rpb24o
ZHVkeCwgZHZkeCwgZHVkeSwgZHZkeSwgcHJlYykgeworICAgICAgICByZXR1cm4gdGN1VGV4TG9v
a3VwVmVyaWZpZXIuY29tcHV0ZUxvZEJvdW5kc0Zyb21EZXJpdmF0ZXMoZHVkeCwgZHZkeCwgMCwg
ZHVkeSwgZHZkeSwgMCwgcHJlYyk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtu
dW1iZXJ9IGR1ZHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdWR5CisgICAgKiBAcGFyYW0ge3Rj
dVRleExvb2t1cFZlcmlmaWVyLkxvZFByZWNpc2lvbn0gcHJlYworICAgICogQHJldHVybiB7QXJy
YXk8bnVtYmVyPn0KKyAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVMb2RC
b3VuZHNGcm9tRGVyaXZhdGVzVSA9IGZ1bmN0aW9uKGR1ZHgsIGR1ZHksIHByZWMpIHsKKyAgICAg
ICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZh
dGVzKGR1ZHgsIDAsIDAsIGR1ZHksIDAsIDAsIHByZWMpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBjb29yZER4CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZER5Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGZhY2VTaXplCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29r
dXBWZXJpZmllci5Mb2RQcmVjaXNpb259IHByZWMKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVDdWJlTG9kQm91
bmRzRnJvbURlcml2YXRlcyA9IGZ1bmN0aW9uKGNvb3JkLCBjb29yZER4LCBjb29yZER5LCBmYWNl
U2l6ZSwgcHJlYykgeworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBhbGxvd0Jy
b2tlbkVkZ2VEZXJpdmF0ZSA9IGZhbHNlOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUu
Q3ViZUZhY2V9ICovIHZhciBmYWNlID0gdGN1VGV4dHVyZS5zZWxlY3RDdWJlRmFjZShjb29yZCk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFOZHggPSAwOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNOZHggPSAwOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHROZHggPSAwOworCisgICAgICAgIC8vIFxub3RlIERlcml2YXRlIHNpZ25z
IGRvbid0IG1hdHRlciB3aGVuIGNvbXB1dGluZyBsb2QKKyAgICAgICAgc3dpdGNoIChmYWNlKSB7
CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVf
WDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElW
RV9YOiBtYU5keCA9IDA7IHNOZHggPSAyOyB0TmR4ID0gMTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWToKKyAgICAgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9ZOiBtYU5keCA9IDE7
IHNOZHggPSAwOyB0TmR4ID0gMjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUu
Q3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9aOiBtYU5keCA9IDI7IHNOZHggPSAwOyB0TmR4
ID0gMTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW52YWxpZCBDdWJlRmFjZS4nKTsKKyAgICAgICAgfQorCisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2MgPSBjb29yZFtzTmR4XTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB0YyA9IGNvb3JkW3ROZHhdOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1hID0gTWF0aC5hYnMoY29vcmRbbWFOZHhdKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2R4ID0gY29vcmREeFtzTmR4XTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB0Y2R4ID0gY29vcmREeFt0TmR4XTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYWR4ID0gTWF0aC5hYnMoY29vcmREeFttYU5keF0pOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNjZHkgPSBjb29yZER5W3NOZHhdOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRjZHkgPSBjb29yZER5W3ROZHhdOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hZHkgPSBNYXRoLmFicyhjb29yZER5
W21hTmR4XSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHVkeCA9IGZhY2VT
aXplICogMC41ICogKHNjZHggKiBtYSAtIHNjICogbWFkeCkgLyAobWEgKiBtYSk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHZkeCA9IGZhY2VTaXplICogMC41ICogKHRjZHgg
KiBtYSAtIHRjICogbWFkeCkgLyAobWEgKiBtYSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZHVkeSA9IGZhY2VTaXplICogMC41ICogKHNjZHkgKiBtYSAtIHNjICogbWFkeSkg
LyAobWEgKiBtYSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHZkeSA9IGZh
Y2VTaXplICogMC41ICogKHRjZHkgKiBtYSAtIHRjICogbWFkeSkgLyAobWEgKiBtYSk7CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGJvdW5kcyA9IHRjdVRleExvb2t1
cFZlcmlmaWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZhdGVzVVYoZHVkeCwgZHZkeCwgZHVk
eSwgZHZkeSwgcHJlYyk7CisKKyAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG1heSBjb21wdXRl
IGRlcml2YXRlIGZyb20gcHJvamVjdGVkIChzLCB0KSByZXN1bHRpbmcgaW4gaW5jb3JyZWN0IHZh
bHVlcyBhdCBlZGdlcy4KKyAgICAgICAgaWYgKGFsbG93QnJva2VuRWRnZURlcml2YXRlKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkeEVyciA9IHRjdVRl
eFZlcmlmaWVyVXRpbC5jb21wdXRlRmxvYXRpbmdQb2ludEVycm9yX1ZlY3Rvcihjb29yZER4LCBb
cHJlYy5kZXJpdmF0ZUJpdHMsIHByZWMuZGVyaXZhdGVCaXRzLCBwcmVjLmRlcml2YXRlQml0c10p
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHlFcnIgPSB0
Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZsb2F0aW5nUG9pbnRFcnJvcl9WZWN0b3IoY29vcmRE
eSwgW3ByZWMuZGVyaXZhdGVCaXRzLCBwcmVjLmRlcml2YXRlQml0cywgcHJlYy5kZXJpdmF0ZUJp
dHNdKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHhvZmZz
ID0gZGVNYXRoLmFkZChkZU1hdGguYWJzKGNvb3JkRHgpLCBkeEVycik7CisgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB5b2ZmcyA9IGRlTWF0aC5hZGQoZGVNYXRo
LmFicyhjb29yZER5KSwgZHlFcnIpOworCisgICAgICAgICAgICBpZiAodGN1VGV4dHVyZS5zZWxl
Y3RDdWJlRmFjZShkZU1hdGguYWRkKGNvb3JkLCB4b2ZmcykpICE9IGZhY2UgfHwKKyAgICAgICAg
ICAgICAgICB0Y3VUZXh0dXJlLnNlbGVjdEN1YmVGYWNlKGRlTWF0aC5zdWJ0cmFjdChjb29yZCwg
eG9mZnMpKSAhPSBmYWNlIHx8CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5zZWxlY3RDdWJl
RmFjZShkZU1hdGguYWRkKGNvb3JkLCB5b2ZmcykpICE9IGZhY2UgfHwKKyAgICAgICAgICAgICAg
ICB0Y3VUZXh0dXJlLnNlbGVjdEN1YmVGYWNlKGRlTWF0aC5zdWJ0cmFjdChjb29yZCwgeW9mZnMp
KSAhPSBmYWNlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtib3VuZHNbMF0sIDEwMDBdOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJvdW5kczsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBsb2RCb3VuZHMKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGxvZE1pbk1heAorICAgICAqIEBwYXJhbSB7dGN1
VGV4TG9va3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9ufSBwcmVjCisgICAgICogQHJldHVybiB7QXJy
YXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5jbGFtcExvZEJv
dW5kcyA9IGZ1bmN0aW9uKGxvZEJvdW5kcywgbG9kTWluTWF4LCBwcmVjKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9kRXJyID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1
dGVGaXhlZFBvaW50RXJyb3IocHJlYy5sb2RCaXRzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBhID0gbG9kTWluTWF4WzBdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGIgPSBsb2RNaW5NYXhbMV07CisgICAgICAgIHJldHVybiBbZGVNYXRoLmNsYW1wKGxv
ZEJvdW5kc1swXSwgYSAtIGxvZEVyciwgYiAtIGxvZEVyciksIGRlTWF0aC5jbGFtcChsb2RCb3Vu
ZHNbMV0sIGEgKyBsb2RFcnIsIGIgKyBsb2RFcnIpXTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgICogQHBhcmFtIHt0
Y3VUZXhMb29rdXBWZXJpZmllci5UZXhMb29rdXBTY2FsZU1vZGV9IHNjYWxlTW9kZQorICAgICAq
IEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVjCisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b29yZFoKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlc3VsdAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuaXNMZXZlbDJE
TG9va3VwUmVzdWx0VmFsaWQgPSBmdW5jdGlvbihhY2Nlc3MsIHNhbXBsZXIsIHNjYWxlTW9kZSwg
cHJlYywgY29vcmQsIGNvb3JkWiwgcmVzdWx0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4
dHVyZS5GaWx0ZXJNb2RlfSAqLworICAgICAgICB2YXIgZmlsdGVyTW9kZSA9IChzY2FsZU1vZGUg
PT0gdGN1VGV4TG9va3VwVmVyaWZpZXIuVGV4TG9va3VwU2NhbGVNb2RlLk1BR05JRlkpID8gc2Ft
cGxlci5tYWdGaWx0ZXIgOiBzYW1wbGVyLm1pbkZpbHRlcjsKKyAgICAgICAgcmV0dXJuIHRjdVRl
eExvb2t1cFZlcmlmaWVyLmlzTGV2ZWxTYW1wbGVSZXN1bHRWYWxpZF9Db29yZEFzVmVjMkFuZElu
dChhY2Nlc3MsIHNhbXBsZXIsIGZpbHRlck1vZGUsIHByZWMsIGNvb3JkLCBjb29yZFosIHJlc3Vs
dCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBp
eGVsQnVmZmVyQWNjZXNzfSBhY2Nlc3MKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxl
cn0gc2FtcGxlcgorICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuVGV4TG9va3Vw
U2NhbGVNb2RlfSBzY2FsZU1vZGUKKyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVy
Lkxvb2t1cFByZWNpc2lvbn0gcHJlYworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29v
cmQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29vcmRaCisgICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSByZXN1bHQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRj
dVRleExvb2t1cFZlcmlmaWVyLmlzTGV2ZWwyRExvb2t1cFJlc3VsdFZhbGlkX0ludCA9IGZ1bmN0
aW9uKGFjY2Vzcywgc2FtcGxlciwgc2NhbGVNb2RlLCBwcmVjLCBjb29yZCwgY29vcmRaLCByZXN1
bHQpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhzYW1wbGVyLm1pbkZpbHRlciA9PSB0Y3VU
ZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVCAmJiBzYW1wbGVyLm1hZ0ZpbHRlciA9PSB0Y3VUZXh0
dXJlLkZpbHRlck1vZGUuTkVBUkVTVCwgJ21pbkZpbHRlciBhbmQgbWFnRmlsdGVyIG11c3QgYmUg
TkVBUkVTVCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlm
aWVyLmlzTmVhcmVzdFNhbXBsZVJlc3VsdFZhbGlkX0Nvb3JkQXNWZWMyQW5kSW50KGFjY2Vzcywg
c2FtcGxlciwgcHJlYywgY29vcmQsIGNvb3JkWiwgcmVzdWx0KTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2Vz
cworICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgICAgICogQHBh
cmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5UZXhMb29rdXBTY2FsZU1vZGV9IHNjYWxlTW9kZQor
ICAgICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBwcmVj
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZAorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gcmVzdWx0CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAg
ICB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xldmVsM0RMb29rdXBSZXN1bHRWYWxpZCA9IGZ1bmN0
aW9uKGFjY2Vzcywgc2FtcGxlciwgc2NhbGVNb2RlLCBwcmVjLCBjb29yZCwgcmVzdWx0KSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSAqLworICAgICAgICB2YXIg
ZmlsdGVyTW9kZSA9IChzY2FsZU1vZGUgPT0gdGN1VGV4TG9va3VwVmVyaWZpZXIuVGV4TG9va3Vw
U2NhbGVNb2RlLk1BR05JRlkpID8gc2FtcGxlci5tYWdGaWx0ZXIgOiBzYW1wbGVyLm1pbkZpbHRl
cjsKKyAgICAgICAgcmV0dXJuIHRjdVRleExvb2t1cFZlcmlmaWVyLmlzTGV2ZWxTYW1wbGVSZXN1
bHRWYWxpZF9Db29yZEFzVmVjMyhhY2Nlc3MsIHNhbXBsZXIsIGZpbHRlck1vZGUsIHByZWMsIGNv
b3JkLCByZXN1bHQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1
cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgICAgICogQHBhcmFtIHt0Y3VUZXh0
dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAgICAgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVy
LlRleExvb2t1cFNjYWxlTW9kZX0gc2NhbGVNb2RlCisgICAgICogQHBhcmFtIHt0Y3VUZXhMb29r
dXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IHByZWMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGNvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZXN1bHQKKyAgICAg
KiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmlz
TGV2ZWwzRExvb2t1cFJlc3VsdFZhbGlkX0ludCA9IGZ1bmN0aW9uKGFjY2Vzcywgc2FtcGxlciwg
c2NhbGVNb2RlLCBwcmVjLCBjb29yZCwgcmVzdWx0KSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoc2FtcGxlci5taW5GaWx0ZXIgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QgJiYg
c2FtcGxlci5tYWdGaWx0ZXIgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsICdtaW5G
aWx0ZXIgYW5kIG1hZ0ZpbHRlciBtdXN0IGJlIE5FQVJFU1QnLCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIHJldHVybiB0Y3VUZXhMb29rdXBWZXJpZmllci5pc05lYXJlc3RTYW1wbGVSZXN1bHRWYWxp
ZF9Db29yZEFzVmVjMyhhY2Nlc3MsIHNhbXBsZXIsIHByZWMsIGNvb3JkLCByZXN1bHQpOworICAg
IH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleFZlcmlmaWVyVXRpbC5qcyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3
b3JrL2NvbW1vbi90Y3VUZXhWZXJpZmllclV0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM4OGY0NDYwODcy
YWU3YzMyZDE5N2YwMjM4NDliZGQwZWNlMzJjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1v
bi90Y3VUZXhWZXJpZmllclV0aWwuanMKQEAgLTAsMCArMSwyNjUgQEAKKy8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVz
CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq
CisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgor
ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoK
KyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4VmVyaWZpZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1Rmxv
YXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlv
bigpIHsKKworICAgIHZhciB0Y3VUZXhWZXJpZmllclV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVRleFZlcmlmaWVyVXRpbDsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoOworICAgIHZhciBkZVV0aWwgPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0
aWw7CisgICAgdmFyIHRjdUZsb2F0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdDsKKyAgICB2
YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1B
Y2N1cmF0ZUJpdHMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4
VmVyaWZpZXJVdGlsLmNvbXB1dGVGbG9hdGluZ1BvaW50RXJyb3IgPSBmdW5jdGlvbih2YWx1ZSwg
bnVtQWNjdXJhdGVCaXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVt
R2FyYmFnZUJpdHMgPSAyMyAtIG51bUFjY3VyYXRlQml0czsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtYXNrID0gKDEgPDwgbnVtR2FyYmFnZUJpdHMpIC0gMTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHAgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKHZhbHVl
KS5leHBvbmVudCgpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXQuZGVGbG9hdH0gKi8g
dmFyIHYxID0gbmV3IHRjdUZsb2F0LmRlRmxvYXQoKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VG
bG9hdC5kZUZsb2F0fSAqLyB2YXIgdjIgPSBuZXcgdGN1RmxvYXQuZGVGbG9hdCgpOworICAgICAg
ICByZXR1cm4gdjEuY29uc3RydWN0KDEsIGV4cCwgMSA8PCAyMyB8IG1hc2spLmdldFZhbHVlKCkg
LSB2Mi5jb25zdHJ1Y3QoMSwgZXhwLCAxIDw8IDIzKS5nZXRWYWx1ZSgpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQWNjdXJhdGVCaXRzCisgICAgICogQHJl
dHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRml4
ZWRQb2ludEVycm9yID0gZnVuY3Rpb24obnVtQWNjdXJhdGVCaXRzKSB7CisgICAgICAgIHJldHVy
biB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZsb2F0aW5nUG9pbnRFcnJvcigxLjAsIG51bUFj
Y3VyYXRlQml0cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gbnVtQWNjdXJhdGVCaXRzCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAg
ICAgKi8KKyAgICB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZpeGVkUG9pbnRFcnJvcl9WZWN0
b3IgPSBmdW5jdGlvbihudW1BY2N1cmF0ZUJpdHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgcmVzID0gW107CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IG51bUFjY3VyYXRlQml0cy5sZW5ndGg7IG5keCsrKQorICAgICAgICAgICAgcmVzW25keF0g
PSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZpeGVkUG9pbnRFcnJvcihudW1BY2N1cmF0ZUJp
dHNbbmR4XSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmFsdWUKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IG51bUFjY3VyYXRlQml0cworICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAg
ICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGbG9hdGluZ1BvaW50RXJyb3JfVmVj
dG9yID0gZnVuY3Rpb24odmFsdWUsIG51bUFjY3VyYXRlQml0cykgeworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKHZhbHVlLmxlbmd0aCA9PT0gbnVtQWNjdXJhdGVCaXRzLmxlbmd0aCwgJycsIGZh
bHNlLCB0cnVlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcmVz
ID0gW107CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHZhbHVlLmxlbmd0aDsgbmR4
KyspCisgICAgICAgICAgICByZXNbbmR4XSA9IHRjdVRleFZlcmlmaWVyVXRpbC5jb21wdXRlRmxv
YXRpbmdQb2ludEVycm9yKHZhbHVlW25keF0sIG51bUFjY3VyYXRlQml0c1tuZHhdKTsKKyAgICAg
ICAgcmV0dXJuIHJlczsKKyAgICB9OworCisgICAgLy8gU2FtcGxlciBpbnRyb3NwZWN0aW9uCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gbW9kZQorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGlsLmlz
TmVhcmVzdE1pcG1hcEZpbHRlciA9IGZ1bmN0aW9uKG1vZGUpIHsKKyAgICAgICAgcmV0dXJuIG1v
ZGUgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QgfHwgbW9k
ZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9ORUFSRVNUOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gbW9kZQor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGls
LmlzTGluZWFyTWlwbWFwRmlsdGVyID0gZnVuY3Rpb24obW9kZSkgeworICAgICAgICByZXR1cm4g
bW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTElORUFSIHx8IG1v
ZGUgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUl9NSVBNQVBfTElORUFSOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gbW9kZQor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGls
LmlzTWlwbWFwRmlsdGVyID0gZnVuY3Rpb24obW9kZSkgeworICAgICAgICByZXR1cm4gdGN1VGV4
VmVyaWZpZXJVdGlsLmlzTmVhcmVzdE1pcG1hcEZpbHRlcihtb2RlKSB8fCB0Y3VUZXhWZXJpZmll
clV0aWwuaXNMaW5lYXJNaXBtYXBGaWx0ZXIobW9kZSk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSBtb2RlCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICB0Y3VUZXhWZXJpZmllclV0aWwuaXNMaW5lYXJGaWx0ZXIg
PSBmdW5jdGlvbihtb2RlKSB7CisgICAgICAgIHJldHVybiBtb2RlID09IHRjdVRleHR1cmUuRmls
dGVyTW9kZS5MSU5FQVIgfHwgbW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01J
UE1BUF9ORUFSRVNUIHx8IG1vZGUgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUl9NSVBN
QVBfTElORUFSOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUu
RmlsdGVyTW9kZX0gbW9kZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
dGN1VGV4VmVyaWZpZXJVdGlsLmlzTmVhcmVzdEZpbHRlciA9IGZ1bmN0aW9uKG1vZGUpIHsKKyAg
ICAgICAgcmV0dXJuICF0Y3VUZXhWZXJpZmllclV0aWwuaXNMaW5lYXJGaWx0ZXIobW9kZSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSBt
b2RlCisgICAgICogQHJldHVybiB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfQorICAgICAqLworICAg
ICB0Y3VUZXhWZXJpZmllclV0aWwuZ2V0TGV2ZWxGaWx0ZXIgPSBmdW5jdGlvbihtb2RlKSB7Cisg
ICAgICAgIHJldHVybiB0Y3VUZXhWZXJpZmllclV0aWwuaXNMaW5lYXJGaWx0ZXIobW9kZSkgPyB0
Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSIDogdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJF
U1Q7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5XcmFwTW9k
ZX0gbW9kZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgdGN1VGV4VmVy
aWZpZXJVdGlsLmlzV3JhcE1vZGVTdXBwb3J0ZWQgPSBmdW5jdGlvbihtb2RlKSB7CisgICAgICAg
IHJldHVybiBtb2RlICE9IHRjdVRleHR1cmUuV3JhcE1vZGUuTUlSUk9SRURfUkVQRUFUX0NMICYm
IG1vZGUgIT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfQ0w7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqCisgICAgICogQHBhcmFtIHtib29sZWFufSBub3JtYWxpemVkQ29vcmRzCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGRpbQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZEJpdHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdXZC
aXRzCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICB0Y3VUZXhW
ZXJpZmllclV0aWwuY29tcHV0ZU5vbk5vcm1hbGl6ZWRDb29yZEJvdW5kcyA9IGZ1bmN0aW9uKG5v
cm1hbGl6ZWRDb29yZHMsIGRpbSwgY29vcmQsIGNvb3JkQml0cywgdXZCaXRzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29vcmRFcnIgPSB0Y3VUZXhWZXJpZmllclV0aWwu
Y29tcHV0ZUZsb2F0aW5nUG9pbnRFcnJvcihjb29yZCwgY29vcmRCaXRzKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5OID0gY29vcmQgLSBjb29yZEVycjsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhOID0gY29vcmQgKyBjb29yZEVycjsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5BID0gbm9ybWFsaXplZENvb3JkcyA/IG1p
bk4gKiBkaW0gOiBtaW5OOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEEg
PSBub3JtYWxpemVkQ29vcmRzID8gbWF4TiAqIGRpbSA6IG1heE47CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWluQyA9IG1pbkEgLSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0
ZUZpeGVkUG9pbnRFcnJvcih1dkJpdHMpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1heEMgPSBtYXhBICsgdGN1VGV4VmVyaWZpZXJVdGlsLmNvbXB1dGVGaXhlZFBvaW50RXJy
b3IodXZCaXRzKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhtaW5DIDw9IG1heEMsICcnLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBbbWluQywgbWF4Q107CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IGJpdHMKKyAgICAgKiBAcmV0dXJuIHs/QXJyYXk8dGN1VGV4dHVyZS5D
dWJlRmFjZT59CisgICAgICovCisgICAgIHRjdVRleFZlcmlmaWVyVXRpbC5nZXRQb3NzaWJsZUN1
YmVGYWNlcyA9IGZ1bmN0aW9uKGNvb3JkLCBiaXRzKSB7CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTx0Y3VUZXh0dXJlLkN1YmVGYWNlPn0gKi8gdmFyIGZhY2VzID0gW107CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4ID0gY29vcmRbMF07CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgeSA9IGNvb3JkWzFdOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHogPSBjb29yZFsyXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBheCA9IE1hdGguYWJzKHgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGF5
ID0gTWF0aC5hYnMoeSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXogPSBN
YXRoLmFicyh6KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleCA9IHRjdVRl
eFZlcmlmaWVyVXRpbC5jb21wdXRlRmxvYXRpbmdQb2ludEVycm9yKHgsIGJpdHNbMF0pOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGV5ID0gdGN1VGV4VmVyaWZpZXJVdGlsLmNv
bXB1dGVGbG9hdGluZ1BvaW50RXJyb3IoeSwgYml0c1sxXSk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZXogPSB0Y3VUZXhWZXJpZmllclV0aWwuY29tcHV0ZUZsb2F0aW5nUG9p
bnRFcnJvcih6LCBiaXRzWzJdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBu
dW1GYWNlcyA9IDA7CisKKyAgICAgICAgaWYgKGF5ICsgZXkgPCBheCAtIGV4ICYmIGF6ICsgZXog
PCBheCAtIGV4KSB7CisgICAgICAgICAgICBpZiAoeCA+PSBleCkgZmFjZXMucHVzaCh0Y3VUZXh0
dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1gpOworICAgICAgICAgICAgaWYgKHggPD0g
ZXgpIGZhY2VzLnB1c2godGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9YKTsK
KyAgICAgICAgfSBlbHNlIGlmIChheCArIGV4IDwgYXkgLSBleSAmJiBheiArIGV6IDwgYXkgLSBl
eSkgeworICAgICAgICAgICAgaWYgKHkgPj0gZXkpIGZhY2VzLnB1c2godGN1VGV4dHVyZS5DdWJl
RmFjZS5DVUJFRkFDRV9QT1NJVElWRV9ZKTsKKyAgICAgICAgICAgIGlmICh5IDw9IGV5KSBmYWNl
cy5wdXNoKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWSk7CisgICAgICAg
IH0gZWxzZSBpZiAoYXggKyBleCA8IGF6IC0gZXogJiYgYXkgKyBleSA8IGF6IC0gZXopIHsKKyAg
ICAgICAgICAgIGlmICh6ID49IGV6KSBmYWNlcy5wdXNoKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VC
RUZBQ0VfUE9TSVRJVkVfWik7CisgICAgICAgICAgICBpZiAoeiA8PSBleikgZmFjZXMucHVzaCh0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1opOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gT25lIG9yIG1vcmUgY29tcG9uZW50cyBhcmUgZXF1YWwgKG9yIHdp
dGhpbiBlcnJvciBib3VuZHMpLiBBbGxvdyBhbGwgZmFjZXMgd2hlcmUgbWFqb3IgYXhpcyBpcyBu
b3QgemVyby4KKyAgICAgICAgICAgIGlmIChheCA+IGV4KSB7CisgICAgICAgICAgICAgICAgZmFj
ZXMucHVzaCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1gpOworICAgICAg
ICAgICAgICAgIGZhY2VzLnB1c2godGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElW
RV9YKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF5ID4gZXkpIHsKKyAgICAg
ICAgICAgICAgICBmYWNlcy5wdXNoKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJ
VkVfWSk7CisgICAgICAgICAgICAgICAgZmFjZXMucHVzaCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNV
QkVGQUNFX1BPU0lUSVZFX1kpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXog
PiBleikgeworICAgICAgICAgICAgICAgIGZhY2VzLnB1c2godGN1VGV4dHVyZS5DdWJlRmFjZS5D
VUJFRkFDRV9ORUdBVElWRV9aKTsKKyAgICAgICAgICAgICAgICBmYWNlcy5wdXNoKHRjdVRleHR1
cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZmFjZXMubGVuZ3RoID09IDAgPyBudWxsIDogZmFjZXM7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgICAgICogQHJldHVybiB7dGN1VGV4dHVyZS5TYW1wbGVyfQorICAgICAqLworICAgIHRj
dVRleFZlcmlmaWVyVXRpbC5nZXRVbm5vcm1hbGl6ZWRDb29yZFNhbXBsZXIgPSBmdW5jdGlvbihz
YW1wbGVyKSB7CisgICAgICAgIHZhciBjb3B5ID0gLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlNhbXBs
ZXJ9ICovIChkZVV0aWwuY2xvbmUoc2FtcGxlcikpOworICAgICAgICBjb3B5Lm5vcm1hbGl6ZWRD
b29yZHMgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGIKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGlsLmltb2Qg
PSBmdW5jdGlvbihhLCBiKSB7CisgICAgICAgIHJldHVybiBkZU1hdGguaW1vZChhLCBiKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGEKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGlsLm1pcnJvciA9IGZ1bmN0
aW9uKGEpIHsKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5taXJyb3IoYSk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5XcmFwTW9kZX0gbW9kZQorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcmV0
dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgdGN1VGV4VmVyaWZpZXJVdGlsLndyYXAgPSBmdW5j
dGlvbihtb2RlLCBjLCBzaXplKSB7CisgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAg
ICAgLy8gXG5vdGUgQ0wgYW5kIEdMIG1vZGVzIGFyZSBoYW5kbGVkIGlkZW50aWNhbGx5IGhlcmUs
IGFzIHZlcmlmaWNhdGlvbiBwcm9jZXNzIGFjY291bnRzIGZvcgorICAgICAgICAgICAgLy8gICAg
ICAgICBhY2N1cmFjeSBkaWZmZXJlbmNlcyBjYXVzZWQgYnkgZGlmZmVyZW50IG1ldGhvZHMgKHdy
YXBwaW5nIHZzLiBkZW5vcm1hbGl6aW5nIGZpcnN0KS4KKyAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOgorICAgICAgICAgICAgICAgIHJldHVybiBkZU1h
dGguY2xhbXAoYywgMCwgc2l6ZSAtIDEpOworCisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUu
V3JhcE1vZGUuUkVQRUFUX0dMOgorICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLldyYXBNb2Rl
LlJFUEVBVF9DTDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmltb2QoYywgc2l6ZSk7
CisKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5XcmFwTW9kZS5NSVJST1JFRF9SRVBFQVRf
R0w6CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuV3JhcE1vZGUuTUlSUk9SRURfUkVQRUFU
X0NMOgorICAgICAgICAgICAgICAgIHJldHVybiAoc2l6ZSAtIDEpIC0gZGVNYXRoLm1pcnJvcihk
ZU1hdGguaW1vZChjLCAyICogc2l6ZSkgLSBzaXplKTsKKworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyYXAgbW9kZSBub3Qgc3VwcG9ydGVk
LicpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1
VGV4dHVyZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhM2EyZWQx
ZDRlZjY0YjRlZTg1Njc3ZTEzZTE4ZGU3Yzc3MGM2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9j
b21tb24vdGN1VGV4dHVyZS5qcwpAQCAtMCwwICsxLDM2MzYgQEAKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAq
LworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Jyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsK
KwordmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7Cit2YXIgZGVN
YXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIHRjdUZsb2F0ID0gZnJh
bWV3b3JrLmNvbW1vbi50Y3VGbG9hdDsKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlU3RyaW5nOwordmFyIGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
VXRpbDsKKwordmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICBpZiAoIXgpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworfTsKKworLyoqCisgKiBUZXh0
dXJlIHRjdVRleHR1cmUuY2hhbm5lbCBvcmRlcgorICogQGVudW0KKyAqLwordGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIgPSB7CisgICAgUjogMCwKKyAgICBBOiAxLAorICAgIEk6IDIsCisgICAgTDog
MywKKyAgICBMQTogNCwKKyAgICBSRzogNSwKKyAgICBSQTogNiwKKyAgICBSR0I6IDcsCisgICAg
UkdCQTogOCwKKyAgICBBUkdCOiA5LAorICAgIEJHUkE6IDEwLAorCisgICAgc1JHQjogMTEsCisg
ICAgc1JHQkE6IDEyLAorCisgICAgRDogMTMsCisgICAgUzogMTQsCisgICAgRFM6IDE1Cit9Owor
CisvKioKKyAqIFRleHR1cmUgdGN1VGV4dHVyZS5jaGFubmVsIHR5cGUKKyAqIEBlbnVtCisgKi8K
K3RjdVRleHR1cmUuQ2hhbm5lbFR5cGUgPSB7CisgICAgU05PUk1fSU5UODogMCwKKyAgICBTTk9S
TV9JTlQxNjogMSwKKyAgICBTTk9STV9JTlQzMjogMiwKKyAgICBVTk9STV9JTlQ4OiAzLAorICAg
IFVOT1JNX0lOVDE2OiA0LAorICAgIFVOT1JNX0lOVDMyOiA1LAorICAgIFVOT1JNX1NIT1JUXzU2
NTogNiwKKyAgICBVTk9STV9TSE9SVF81NTU6IDcsCisgICAgVU5PUk1fU0hPUlRfNDQ0NDogOCwK
KyAgICBVTk9STV9TSE9SVF81NTUxOiA5LAorICAgIFVOT1JNX0lOVF8xMDEwMTA6IDEwLAorICAg
IFVOT1JNX0lOVF8xMDEwMTAyX1JFVjogMTEsCisgICAgVU5TSUdORURfSU5UXzEwMTAxMDJfUkVW
OiAxMiwKKyAgICBVTlNJR05FRF9JTlRfMTFGXzExRl8xMEZfUkVWOiAxMywKKyAgICBVTlNJR05F
RF9JTlRfOTk5X0U1X1JFVjogMTQsCisgICAgVU5TSUdORURfSU5UXzI0Xzg6IDE1LAorICAgIFNJ
R05FRF9JTlQ4OiAxNiwKKyAgICBTSUdORURfSU5UMTY6IDE3LAorICAgIFNJR05FRF9JTlQzMjog
MTgsCisgICAgVU5TSUdORURfSU5UODogMTksCisgICAgVU5TSUdORURfSU5UMTY6IDIwLAorICAg
IFVOU0lHTkVEX0lOVDMyOiAyMSwKKyAgICBIQUxGX0ZMT0FUOiAyMiwKKyAgICBGTE9BVDogMjMs
CisgICAgRkxPQVRfVU5TSUdORURfSU5UXzI0XzhfUkVWOiAyNAorfTsKKworLyoqCisgKiBFbnVt
cyBmb3IgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzCisgKiBAZW51bSB7bnVtYmVyfQor
ICovCit0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MgPSB7CisKKyAgICBTSUdORURfRklY
RURfUE9JTlQ6IDAsCisgICAgVU5TSUdORURfRklYRURfUE9JTlQ6IDEsCisgICAgU0lHTkVEX0lO
VEVHRVI6IDIsCisgICAgVU5TSUdORURfSU5URUdFUjogMywKKyAgICBGTE9BVElOR19QT0lOVDog
NAorfTsKKworLyoqCisgKiBAcGFyYW0gez90Y3VUZXh0dXJlLkNoYW5uZWxUeXBlfSBjaGFubmVs
VHlwZQorICogQHJldHVybiB7dGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzfQorICovCit0
Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MgPSBmdW5jdGlvbihjaGFubmVsVHlwZSkg
eworCisgICAgc3dpdGNoIChjaGFubmVsVHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuU05PUk1fSU5UODogcmV0dXJuIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxD
bGFzcy5TSUdORURfRklYRURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5TTk9STV9JTlQxNjogcmV0dXJuIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5T
SUdORURfRklYRURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
Tk9STV9JTlQ4OiByZXR1cm4gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVE
X0ZJWEVEX1BPSU5UOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1f
SU5UMTY6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklY
RURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9S
VF81NjU6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklY
RURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9S
VF81NTU6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklY
RURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9S
VF80NDQ0OiByZXR1cm4gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJ
WEVEX1BPSU5UOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hP
UlRfNTU1MTogcmV0dXJuIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9G
SVhFRF9QT0lOVDsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VF8xMDEwMTA6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURf
RklYRURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9J
TlRfMTAxMDEwMl9SRVY6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5T
SUdORURfRklYRURfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
TlNJR05FRF9JTlRfMTAxMDEwMl9SRVY6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVs
Q2xhc3MuVU5TSUdORURfSU5URUdFUjsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOU0lHTkVEX0lOVF8xMUZfMTFGXzEwRl9SRVY6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1
cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5VTlNJR05FRF9JTlRfOTk5X0U1X1JFVjogcmV0dXJuIHRjdVRleHR1cmUuVGV4
dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlNJR05FRF9JTlQ4OiByZXR1cm4gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5l
bENsYXNzLlNJR05FRF9JTlRFR0VSOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuU0lHTkVEX0lOVDE2OiByZXR1cm4gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJ
R05FRF9JTlRFR0VSOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVE
X0lOVDMyOiByZXR1cm4gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9JTlRF
R0VSOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UODog
cmV0dXJuIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9JTlRFR0VSOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMTY6IHJldHVy
biB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfSU5URUdFUjsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyOiByZXR1cm4gdGN1
VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVI7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5IQUxGX0ZMT0FUOiByZXR1cm4gdGN1VGV4dHVyZS5U
ZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6IHJldHVybiB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuRkxPQVRJTkdfUE9JTlQ7CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiAvKiogQHR5cGUge3Rj
dVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzczxudW1iZXI+fSAqLyAoT2JqZWN0LmtleXModGN1
VGV4dHVyZS5DaGFubmVsVHlwZSkubGVuZ3RoKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAqLwordGN1VGV4dHVyZS5pc0Zp
eGVkUG9pbnREZXB0aFRleHR1cmVGb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKKyAgICB2YXIg
Y2hhbm5lbENsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50
eXBlKTsKKworICAgIGlmIChmb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
RCkgeworICAgICAgICAvLyBkZXB0aCBpbnRlcm5hbCBmb3JtYXRzIGNhbm5vdCBiZSBub24tbm9y
bWFsaXplZCBpbnRlZ2VycworICAgICAgICByZXR1cm4gY2hhbm5lbENsYXNzICE9IHRjdVRleHR1
cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDsKKyAgICB9IGVsc2UgaWYgKGZv
cm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykgeworICAgICAgICAvLyBj
b21iaW5lZCBmb3JtYXRzIGhhdmUgbm8gc2luZ2xlIGNoYW5uZWwgY2xhc3MsIGRldGVjdCBmb3Jt
YXQgbWFudWFsbHkKKyAgICAgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgICAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVjog
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
U0lHTkVEX0lOVF8yNF84OiByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAvLyB1bmtub3duIGZvcm1hdAorICAgICAgICAgICAgICAgIERFX0FTU0VS
VChmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IGNvbG9yCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29tcGFyZU1vZGV9IGNvbXBhcmUKKyAqIEBw
YXJhbSB7bnVtYmVyfSBjaGFuTmR4CisgKiBAcGFyYW0ge251bWJlcn0gcmVmXworICogQHBhcmFt
IHtib29sZWFufSBpc0ZpeGVkUG9pbnQKKyAqLwordGN1VGV4dHVyZS5leGVjQ29tcGFyZSA9IGZ1
bmN0aW9uKGNvbG9yLCBjb21wYXJlLCBjaGFuTmR4LCByZWZfLCBpc0ZpeGVkUG9pbnQpIHsKKyAg
ICB2YXIgY2xhbXBWYWx1ZXMgPSBpc0ZpeGVkUG9pbnQ7CisgICAgdmFyIGNtcCA9IGNsYW1wVmFs
dWVzID8gZGVNYXRoLmNsYW1wKGNvbG9yW2NoYW5OZHhdLCAwLjAsIDEuMCkgOiBjb2xvcltjaGFu
TmR4XTsKKyAgICB2YXIgcmVmID0gY2xhbXBWYWx1ZXMgPyBkZU1hdGguY2xhbXAocmVmXywgMC4w
LCAxLjApIDogcmVmXzsKKyAgICB2YXIgcmVzID0gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGNvbXBh
cmUpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX0xF
U1M6IHJlcyA9IHJlZiA8IGNtcDsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21w
YXJlTW9kZS5DT01QQVJFTU9ERV9MRVNTX09SX0VRVUFMOiByZXMgPSByZWYgPD0gY21wOyBicmVh
azsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX0dSRUFU
RVI6IHJlcyA9IHJlZiA+IGNtcDsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21w
YXJlTW9kZS5DT01QQVJFTU9ERV9HUkVBVEVSX09SX0VRVUFMOiByZXMgPSByZWYgPj0gY21wOyBi
cmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX0VR
VUFMOiByZXMgPSByZWYgPT0gY21wOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNv
bXBhcmVNb2RlLkNPTVBBUkVNT0RFX05PVF9FUVVBTDogcmVzID0gcmVmICE9IGNtcDsgYnJlYWs7
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9BTFdBWVM6
IHJlcyA9IHRydWU7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ29tcGFyZU1vZGUu
Q09NUEFSRU1PREVfTkVWRVI6IHJlcyA9IGZhbHNlOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlcyA/
IDEuMCA6IDAuMDsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0
UGl4ZWxCdWZmZXJBY2Nlc3M+fSBsZXZlbHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMK
KyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJl
cn0gcmVmCisgKiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBw
YXJhbSB7bnVtYmVyfSBsb2QKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gb2Zmc2V0CisgKi8K
K3RjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTJEQ29tcGFyZSA9IGZ1bmN0aW9uKGxldmVscywg
bnVtTGV2ZWxzLCBzYW1wbGVyLCByZWYsIHMsIHQsIGxvZCwgb2Zmc2V0KSB7CisgICAgdmFyIG1h
Z25pZmllZCA9IGxvZCA8PSBzYW1wbGVyLmxvZFRocmVzaG9sZDsKKyAgICB2YXIgZmlsdGVyTW9k
ZSA9IG1hZ25pZmllZCA/IHNhbXBsZXIubWFnRmlsdGVyIDogc2FtcGxlci5taW5GaWx0ZXI7CisK
KyAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRl
ck1vZGUuTkVBUkVTVDogcmV0dXJuIGxldmVsc1swXS5zYW1wbGUyRENvbXBhcmUoc2FtcGxlciwg
ZmlsdGVyTW9kZSwgcmVmLCBzLCB0LCBvZmZzZXQpOworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
RmlsdGVyTW9kZS5MSU5FQVI6IHJldHVybiBsZXZlbHNbMF0uc2FtcGxlMkRDb21wYXJlKHNhbXBs
ZXIsIGZpbHRlck1vZGUsIHJlZiwgcywgdCwgb2Zmc2V0KTsKKworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOgorICAgICAgICBjYXNlIHRj
dVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1Q6IHsKKyAgICAgICAgICAg
IHZhciBtYXhMZXZlbCA9IG51bUxldmVscyAtIDE7CisgICAgICAgICAgICB2YXIgbGV2ZWwgPSBk
ZU1hdGguY2xhbXAoTWF0aC5jZWlsKGxvZCArIDAuNSkgLSAxLCAwLCBtYXhMZXZlbCk7CisgICAg
ICAgICAgICB2YXIgbGV2ZWxGaWx0ZXIgPSBmaWx0ZXJNb2RlID09IHRjdVRleHR1cmUuRmlsdGVy
TW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1QgPyB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFS
IDogdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q7CisKKyAgICAgICAgICAgIHJldHVybiBs
ZXZlbHNbbGV2ZWxdLnNhbXBsZTJEQ29tcGFyZShzYW1wbGVyLCBsZXZlbEZpbHRlciwgcmVmLCBz
LCB0LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRl
ck1vZGUuTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmls
dGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVBUjogeworICAgICAgICAgICAgdmFyIG1heExldmVs
ID0gbnVtTGV2ZWxzIC0gMTsKKyAgICAgICAgICAgIHZhciBsZXZlbDAgPSBkZU1hdGguY2xhbXAo
TWF0aC5mbG9vcihsb2QpLCAwLCBtYXhMZXZlbCk7CisgICAgICAgICAgICB2YXIgbGV2ZWwxID0g
TWF0aC5taW4obWF4TGV2ZWwsIGxldmVsMCArIDEpOworICAgICAgICAgICAgdmFyIGxldmVsRmls
dGVyID0gZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9M
SU5FQVIgPyB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSIDogdGN1VGV4dHVyZS5GaWx0ZXJN
b2RlLk5FQVJFU1Q7CisgICAgICAgICAgICB2YXIgZiA9IGRlTWF0aC5kZUZsb2F0RnJhYyhsb2Qp
OworICAgICAgICAgICAgdmFyIHQwID0gbGV2ZWxzW2xldmVsMF0uc2FtcGxlMkRDb21wYXJlKHNh
bXBsZXIsIGxldmVsRmlsdGVyLCByZWYsIHMsIHQsIG9mZnNldCk7CisgICAgICAgICAgICB2YXIg
dDEgPSBsZXZlbHNbbGV2ZWwxXS5zYW1wbGUyRENvbXBhcmUoc2FtcGxlciwgbGV2ZWxGaWx0ZXIs
IHJlZiwgcywgdCwgb2Zmc2V0KTsKKworICAgICAgICAgICAgcmV0dXJuIHQwICogKDEuMCAtIGYp
ICsgdDEgKiBmOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERF
X0FTU0VSVChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMC4wOworICAgIH0KK307CisKKy8q
KgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2Vzcwor
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7bnVtYmVy
fSByZWYKKyAqIEBwYXJhbSB7bnVtYmVyfSB1CisgKiBAcGFyYW0ge251bWJlcn0gdgorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXhlZFBv
aW50RGVwdGhGb3JtYXQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5zYW1w
bGVMaW5lYXIyRENvbXBhcmUgPSBmdW5jdGlvbihhY2Nlc3MsIHNhbXBsZXIsIHJlZiwgdSwgdiwg
b2Zmc2V0LCBpc0ZpeGVkUG9pbnREZXB0aEZvcm1hdCkgeworICAgIHZhciB3ID0gYWNjZXNzLmdl
dFdpZHRoKCk7CisgICAgdmFyIGggPSBhY2Nlc3MuZ2V0SGVpZ2h0KCk7CisKKyAgICB2YXIgeDAg
PSBNYXRoLmZsb29yKHUgLSAwLjUpICsgb2Zmc2V0WzBdOworICAgIHZhciB4MSA9IHgwICsgMTsK
KyAgICB2YXIgeTAgPSBNYXRoLmZsb29yKHYgLSAwLjUpICsgb2Zmc2V0WzFdOworICAgIHZhciB5
MSA9IHkwICsgMTsKKworICAgIHZhciBpMCA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBT
LCB4MCwgdyk7CisgICAgdmFyIGkxID0gdGN1VGV4dHVyZS53cmFwKHNhbXBsZXIud3JhcFMsIHgx
LCB3KTsKKyAgICB2YXIgajAgPSB0Y3VUZXh0dXJlLndyYXAoc2FtcGxlci53cmFwVCwgeTAsIGgp
OworICAgIHZhciBqMSA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBULCB5MSwgaCk7CisK
KyAgICB2YXIgYSA9IGRlTWF0aC5kZUZsb2F0RnJhYyh1IC0gMC41KTsKKyAgICB2YXIgYiA9IGRl
TWF0aC5kZUZsb2F0RnJhYyh2IC0gMC41KTsKKworICAgIHZhciBpMFVzZUJvcmRlciA9IHNhbXBs
ZXIud3JhcFMgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0
aC5kZUluQm91bmRzMzIoaTAsIDAsIHcpOworICAgIHZhciBpMVVzZUJvcmRlciA9IHNhbXBsZXIu
d3JhcFMgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0aC5k
ZUluQm91bmRzMzIoaTEsIDAsIHcpOworICAgIHZhciBqMFVzZUJvcmRlciA9IHNhbXBsZXIud3Jh
cFQgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0aC5kZUlu
Qm91bmRzMzIoajAsIDAsIGgpOworICAgIHZhciBqMVVzZUJvcmRlciA9IHNhbXBsZXIud3JhcFQg
PT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0aC5kZUluQm91
bmRzMzIoajEsIDAsIGgpOworCisgICAgLy8gQm9yZGVyIGNvbG9yIGZvciBvdXQtb2YtcmFuZ2Ug
Y29vcmRpbmF0ZXMgaWYgdXNpbmcgQ0xBTVBfVE9fQk9SREVSLCBvdGhlcndpc2UgZXhlY3V0ZSBs
b29rdXBzLgorICAgIHZhciBwMDBDbHIgPSAoaTBVc2VCb3JkZXIgfHwgajBVc2VCb3JkZXIpID8g
c2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTAsIGowLCBv
ZmZzZXRbMl0pOworICAgIHZhciBwMTBDbHIgPSAoaTFVc2VCb3JkZXIgfHwgajBVc2VCb3JkZXIp
ID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTEsIGow
LCBvZmZzZXRbMl0pOworICAgIHZhciBwMDFDbHIgPSAoaTBVc2VCb3JkZXIgfHwgajFVc2VCb3Jk
ZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTAs
IGoxLCBvZmZzZXRbMl0pOworICAgIHZhciBwMTFDbHIgPSAoaTFVc2VCb3JkZXIgfHwgajFVc2VC
b3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2Vzcywg
aTEsIGoxLCBvZmZzZXRbMl0pOworCisgICAgLy8gRXhlY3V0ZSBjb21wYXJpc29ucy4KKyAgICB2
YXIgcDAwID0gdGN1VGV4dHVyZS5leGVjQ29tcGFyZShwMDBDbHIsIHNhbXBsZXIuY29tcGFyZSwg
c2FtcGxlci5jb21wYXJlQ2hhbm5lbCwgcmVmLCBpc0ZpeGVkUG9pbnREZXB0aEZvcm1hdCk7Cisg
ICAgdmFyIHAxMCA9IHRjdVRleHR1cmUuZXhlY0NvbXBhcmUocDEwQ2xyLCBzYW1wbGVyLmNvbXBh
cmUsIHNhbXBsZXIuY29tcGFyZUNoYW5uZWwsIHJlZiwgaXNGaXhlZFBvaW50RGVwdGhGb3JtYXQp
OworICAgIHZhciBwMDEgPSB0Y3VUZXh0dXJlLmV4ZWNDb21wYXJlKHAwMUNsciwgc2FtcGxlci5j
b21wYXJlLCBzYW1wbGVyLmNvbXBhcmVDaGFubmVsLCByZWYsIGlzRml4ZWRQb2ludERlcHRoRm9y
bWF0KTsKKyAgICB2YXIgcDExID0gdGN1VGV4dHVyZS5leGVjQ29tcGFyZShwMTFDbHIsIHNhbXBs
ZXIuY29tcGFyZSwgc2FtcGxlci5jb21wYXJlQ2hhbm5lbCwgcmVmLCBpc0ZpeGVkUG9pbnREZXB0
aEZvcm1hdCk7CisKKyAgICAvLyBJbnRlcnBvbGF0ZS4KKyAgICByZXR1cm4gKHAwMCAqICgxLjAg
LSBhKSAqICgxLjAgLSBiKSkgKworICAgICAgICAgICAocDEwICogKGEpICogKDEuMCAtIGIpKSAr
CisgICAgICAgICAgIChwMDEgKiAoMS4wIC0gYSkgKiAoYikpICsKKyAgICAgICAgICAgKHAxMSAq
IChhKSAqIChiKSk7Cit9OworCisvKioKKyAqIENvbnN0cnVjdCB0ZXh0dXJlIGZvcm1hdAorICog
QHBhcmFtIHs/dGN1VGV4dHVyZS5DaGFubmVsT3JkZXJ9IG9yZGVyCisgKiBAcGFyYW0gez90Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlfSB0eXBlCisgKgorICogQGNvbnN0cnVjdG9yCisgKi8KK3RjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdCA9IGZ1bmN0aW9uKG9yZGVyLCB0eXBlKSB7CisgICAgdGhpcy5v
cmRlciA9IG9yZGVyOworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9OworCisvKioKKyAqIENvbXBh
cmUgdHdvIGZvcm1hdHMKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3Jt
YXQgRm9ybWF0IHRvIGNvbXBhcmUgd2l0aAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1
VGV4dHVyZS5UZXh0dXJlRm9ybWF0LnByb3RvdHlwZS5pc0VxdWFsID0gZnVuY3Rpb24oZm9ybWF0
KSB7CisgICAgcmV0dXJuIHRoaXMub3JkZXIgPT09IGZvcm1hdC5vcmRlciAmJiB0aGlzLnR5cGUg
PT09IGZvcm1hdC50eXBlOworfTsKKwordGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0LnByb3RvdHlw
ZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAnVGV4dHVyZUZvcm1hdCgnICsg
ZGVTdHJpbmcuZW51bVRvU3RyaW5nKHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLCB0aGlzLm9yZGVy
KSArICcsICcgKworICAgICAgICBkZVN0cmluZy5lbnVtVG9TdHJpbmcodGN1VGV4dHVyZS5DaGFu
bmVsVHlwZSwgdGhpcy50eXBlKSArICcpJzsKK307CisKKy8qKgorICogSXMgZm9ybWF0IHNSR0I/
CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCit0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQucHJv
dG90eXBlLmlzU1JHQiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm9yZGVyID09PSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCIHx8IHRoaXMub3JkZXIgPT09IHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLnNSR0JBOworfTsKKwordGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0LnByb3Rv
dHlwZS5nZXROdW1TdGVuY2lsQml0cyA9IGZ1bmN0aW9uKCkgeworICAgIHN3aXRjaCAodGhpcy5v
cmRlcikgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6CisgICAgICAg
ICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4OiByZXR1cm4gODsKKyAgICAgICAgICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMTY6IHJldHVybiAxNjsKKyAg
ICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzI6
IHJldHVybiAzMjsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHR5cGU6ICcgKyB0aGlzLnR5cGUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM6CisgICAgICAg
ICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMjRfODogcmV0dXJuIDg7CisgICAgICAgICAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JF
VjogcmV0dXJuIDg7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyB0eXBlOiAnICsgdGhpcy50eXBlKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdX
cm9uZyBvcmRlcjogJyArIHRoaXMub3JkZXIpOworICAgIH0KK307CisKKy8qKgorICogR2V0IFR5
cGVkQXJyYXkgdHlwZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0ZXh0dXJlLgorICogQHBh
cmFtIHs/dGN1VGV4dHVyZS5DaGFubmVsVHlwZX0gdHlwZQorICogQHJldHVybiBUeXBlZEFycmF5
IHRoYXQgc3VwcG9ydHMgdGhlIHRjdVRleHR1cmUuY2hhbm5lbCB0eXBlLgorICovCit0Y3VUZXh0
dXJlLmdldFR5cGVkQXJyYXkgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQ4OiByZXR1cm4g
SW50OEFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5U
MTY6IHJldHVybiBJbnQxNkFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuU05PUk1fSU5UMzI6IHJldHVybiBJbnQzMkFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UODogcmV0dXJuIFVpbnQ4QXJyYXk7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQxNjogcmV0dXJuIFVpbnQxNkFycmF5
OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMzI6IHJldHVy
biBVaW50MzJBcnJheTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JN
X1NIT1JUXzU2NTogcmV0dXJuIFVpbnQxNkFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1OiByZXR1cm4gVWludDE2QXJyYXk7CisgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80NDQ0OiByZXR1cm4gVWlu
dDE2QXJyYXk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9S
VF81NTUxOiByZXR1cm4gVWludDE2QXJyYXk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwOiByZXR1cm4gVWludDMyQXJyYXk7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwMl9SRVY6IHJldHVybiBV
aW50MzJBcnJheTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVE
X0lOVF8xMDEwMTAyX1JFVjogcmV0dXJuIFVpbnQzMkFycmF5OworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzExRl8xMUZfMTBGX1JFVjogcmV0dXJuIFVp
bnQzMkFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURf
SU5UXzk5OV9FNV9SRVY6IHJldHVybiBVaW50MzJBcnJheTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84OiByZXR1cm4gVWludDMyQXJyYXk7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVDogcmV0dXJuIEZsb2F0MzJB
cnJheTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQ4OiBy
ZXR1cm4gSW50OEFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lH
TkVEX0lOVDE2OiByZXR1cm4gSW50MTZBcnJheTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLlNJR05FRF9JTlQzMjogcmV0dXJuIEludDMyQXJyYXk7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4OiByZXR1cm4gVWludDhBcnJheTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2OiByZXR1
cm4gVWludDE2QXJyYXk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJ
R05FRF9JTlQzMjogcmV0dXJuIFVpbnQzMkFycmF5OworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuSEFMRl9GTE9BVDogcmV0dXJuIFVpbnQxNkFycmF5OworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0XzhfUkVWOiByZXR1
cm4gRmxvYXQzMkFycmF5OyAvKiB0aGlzIHR5cGUgaXMgYSBzcGVjaWFsIGNhc2UgKi8KKyAgICB9
CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCB0eXBlICcgKyB0eXBlKTsKK307
CisKKy8qKgorICogQHJldHVybiB7bnVtYmVyfSBwaXhlbCBzaXplIGluIGJ5dGVzCisgKi8KK3Rj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdC5wcm90b3R5cGUuZ2V0UGl4ZWxTaXplID0gZnVuY3Rpb24o
KSB7CisgICAgaWYgKHRoaXMudHlwZSA9PSBudWxsIHx8IHRoaXMub3JkZXIgPT0gbnVsbCkgewor
ICAgICAgICAvLyBJbnZhbGlkL2VtcHR5IGZvcm1hdC4KKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9S
VF81NjUgfHwKKyAgICAgICAgICAgICB0aGlzLnR5cGUgPT0gdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTk9STV9TSE9SVF81NTUgfHwKKyAgICAgICAgICAgICB0aGlzLnR5cGUgPT0gdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80NDQ0IHx8CisgICAgICAgICAgICAgdGhpcy50eXBl
ID09IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1MSkgeworICAgICAgICBE
RV9BU1NFUlQodGhpcy5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IgfHwgdGhp
cy5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBKTsKKyAgICAgICAgcmV0dXJu
IDI7CisgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
Tk9STV9JTlRfMTAxMDEwIHx8CisgICAgICAgICAgICAgdGhpcy50eXBlID09IHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzk5OV9FNV9SRVYgfHwKKyAgICAgICAgICAgICB0aGlz
LnR5cGUgPT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTFGXzExRl8xMEZf
UkVWKSB7CisgICAgICAgIERFX0FTU0VSVCh0aGlzLm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlJHQik7CisgICAgICAgIHJldHVybiA0OworICAgIH0gZWxzZSBpZiAodGhpcy50eXBl
ID09IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UXzEwMTAxMDJfUkVWIHx8CisgICAg
ICAgICAgICAgdGhpcy50eXBlID09IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5U
XzEwMTAxMDJfUkVWKSB7CisgICAgICAgIERFX0FTU0VSVCh0aGlzLm9yZGVyID09IHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLlJHQkEpOworICAgICAgICByZXR1cm4gNDsKKyAgICB9IGVsc2UgaWYg
KHRoaXMudHlwZSA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84KSB7
CisgICAgICAgIERFX0FTU0VSVCh0aGlzLm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkQgfHwgdGhpcy5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUyk7CisgICAgICAg
IHJldHVybiA0OworICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0XzhfUkVWKSB7CisgICAgICAgIERFX0FTU0VSVCh0
aGlzLm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTKTsKKyAgICAgICAgcmV0dXJu
IDg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIG51bUNoYW5uZWxzOworICAgICAgICB2YXIg
Y2hhbm5lbFNpemU7CisKKyAgICAgICAgc3dpdGNoICh0aGlzLm9yZGVyKSB7CisgICAgICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlI6IG51bUNoYW5uZWxzID0gMTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkE6IG51bUNoYW5uZWxz
ID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkk6
IG51bUNoYW5uZWxzID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLkw6IG51bUNoYW5uZWxzID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkxBOiBudW1DaGFubmVscyA9IDI7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRzogbnVtQ2hhbm5lbHMgPSAyOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkE6IG51bUNo
YW5uZWxzID0gMjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlJHQjogbnVtQ2hhbm5lbHMgPSAzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuUkdCQTogbnVtQ2hhbm5lbHMgPSA0OyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQVJHQjogbnVtQ2hhbm5lbHMgPSA0OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQkdSQTogbnVt
Q2hhbm5lbHMgPSA0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuc1JHQjogbnVtQ2hhbm5lbHMgPSAzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQkE6IG51bUNoYW5uZWxzID0gNDsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQ6IG51bUNoYW5uZWxzID0gMTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6IG51bUNo
YW5uZWxzID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLkRTOiBudW1DaGFubmVscyA9IDI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogREVf
QVNTRVJUKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7
CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UODogY2hh
bm5lbFNpemUgPSAxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5TTk9STV9JTlQxNjogY2hhbm5lbFNpemUgPSAyOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQzMjogY2hhbm5lbFNpemUgPSA0OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4
OiBjaGFubmVsU2l6ZSA9IDE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLlVOT1JNX0lOVDE2OiBjaGFubmVsU2l6ZSA9IDI7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDMyOiBjaGFubmVsU2l6ZSA9
IDQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05F
RF9JTlQ4OiBjaGFubmVsU2l6ZSA9IDE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNjogY2hhbm5lbFNpemUgPSAyOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzI6IGNoYW5u
ZWxTaXplID0gNDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuVU5TSUdORURfSU5UODogY2hhbm5lbFNpemUgPSAxOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNjogY2hhbm5lbFNpemUgPSAy
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05F
RF9JTlQzMjogY2hhbm5lbFNpemUgPSA0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5IQUxGX0ZMT0FUOiBjaGFubmVsU2l6ZSA9IDI7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUOiBjaGFubmVsU2l6ZSA9
IDQ7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogREVfQVNTRVJUKGZhbHNlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBudW1DaGFubmVscyAqIGNoYW5uZWxTaXplOworICAgIH0K
K307CisKKy8qKgorICogQGVudW0KKyAqLwordGN1VGV4dHVyZS5DdWJlRmFjZSA9IHsKKyAgICBD
VUJFRkFDRV9ORUdBVElWRV9YOiAwLAorICAgIENVQkVGQUNFX1BPU0lUSVZFX1g6IDEsCisgICAg
Q1VCRUZBQ0VfTkVHQVRJVkVfWTogMiwKKyAgICBDVUJFRkFDRV9QT1NJVElWRV9ZOiAzLAorICAg
IENVQkVGQUNFX05FR0FUSVZFX1o6IDQsCisgICAgQ1VCRUZBQ0VfUE9TSVRJVkVfWjogNQorfTsK
KworLyoqCisgKiBSZW5hbWVkIGZyb20gQXJyYXlCdWZmZXIgZHVlIHRvIG5hbWUgY2xhc2gKKyAq
IFdyYXBzIEFycmF5QnVmZmVyLgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge251bWJlcj19
IG51bUVsZW1lbnRzCisgKi8KK3RjdVRleHR1cmUuRGVxcEFycmF5QnVmZmVyID0gZnVuY3Rpb24o
bnVtRWxlbWVudHMpIHsKKyAgICBpZiAobnVtRWxlbWVudHMpCisgICAgICAgIHRoaXMubV9wdHIg
PSBuZXcgQXJyYXlCdWZmZXIobnVtRWxlbWVudHMpOworfTsKKworLyoqCisgKiBTZXQgYXJyYXkg
c2l6ZQorICogQHBhcmFtIHtudW1iZXJ9IG51bUVsZW1lbnRzIFNpemUgaW4gYnl0ZXMKKyAqLwor
dGN1VGV4dHVyZS5EZXFwQXJyYXlCdWZmZXIucHJvdG90eXBlLnNldFN0b3JhZ2UgPSBmdW5jdGlv
bihudW1FbGVtZW50cykgeworICAgIHRoaXMubV9wdHIgPSBuZXcgQXJyYXlCdWZmZXIobnVtRWxl
bWVudHMpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHtudW1iZXJ9IEJ1ZmZlciBzaXplCisgKi8K
K3RjdVRleHR1cmUuRGVxcEFycmF5QnVmZmVyLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7
CisgICAgaWYgKHRoaXMubV9wdHIpCisgICAgICAgIHJldHVybiB0aGlzLm1fcHRyLmJ5dGVMZW5n
dGg7CisKKyAgICByZXR1cm4gMDsKK307CisKKy8qKgorICogSXMgdGhlIGJ1ZmZlciBlbXB0eSAo
emVybyBzaXplKT8KKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK3RjdVRleHR1cmUuRGVxcEFy
cmF5QnVmZmVyLnByb3RvdHlwZS5lbXB0eSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghdGhpcy5t
X3B0cikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHRoaXMuc2l6ZSgpID09IDA7
Cit9OworCisvKioKKyAqIEBlbnVtCisgKiBUaGUgdmFsdWVzIGFyZSBuZWdhdGl2ZSB0byBhdm9p
ZCBjb25mbGljdCB3aXRoIGNoYW5uZWxzIDAgLSAzCisgKi8KK3RjdVRleHR1cmUuY2hhbm5lbCA9
IHsKKyAgICBaRVJPOiAtMSwKKyAgICBPTkU6IC0yCit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1
VGV4dHVyZS5DaGFubmVsT3JkZXJ9IG9yZGVyCisgKiBAcmV0dXJuIHtBcnJheTxOdW1iZXJ8dGN1
VGV4dHVyZS5jaGFubmVsPn0KKyAqLwordGN1VGV4dHVyZS5nZXRDaGFubmVsUmVhZE1hcCA9IGZ1
bmN0aW9uKG9yZGVyKSB7CisgICAgc3dpdGNoIChvcmRlcikgeworICAgIC8qc3RhdGljIGNvbnN0
IENoYW5uZWwgSU5WW10gPSB7IHRjdVRleHR1cmUuY2hhbm5lbC5aRVJPLCB0Y3VUZXh0dXJlLmNo
YW5uZWwuWkVSTywgdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8sIHRjdVRleHR1cmUuY2hhbm5lbC5P
TkUgfTsgKi8KKworICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUjogcmV0dXJuIFsw
LCB0Y3VUZXh0dXJlLmNoYW5uZWwuWkVSTywgdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8sIHRjdVRl
eHR1cmUuY2hhbm5lbC5PTkVdOworICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQTog
cmV0dXJuIFt0Y3VUZXh0dXJlLmNoYW5uZWwuWkVSTywgdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8s
IHRjdVRleHR1cmUuY2hhbm5lbC5aRVJPLCAwXTsKKyAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLkk6IHJldHVybiBbMCwgMCwgMCwgMF07CisgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5MOiByZXR1cm4gWzAsIDAsIDAsIHRjdVRleHR1cmUuY2hhbm5lbC5PTkVdOworICAg
IGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuTEE6IHJldHVybiBbMCwgMCwgMCwgMV07Cisg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRzogcmV0dXJuIFswLCAxLCB0Y3VUZXh0
dXJlLmNoYW5uZWwuWkVSTywgdGN1VGV4dHVyZS5jaGFubmVsLk9ORV07CisgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5SQTogcmV0dXJuIFswLCB0Y3VUZXh0dXJlLmNoYW5uZWwuWkVS
TywgdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8sIDFdOworICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkdCOiByZXR1cm4gWzAsIDEsIDIsIHRjdVRleHR1cmUuY2hhbm5lbC5PTkVdOwor
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQTogcmV0dXJuIFswLCAxLCAyLCAz
XTsKKyAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkJHUkE6IHJldHVybiBbMiwgMSwg
MCwgM107CisgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5BUkdCOiByZXR1cm4gWzEs
IDIsIDMsIDBdOworICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQjogcmV0dXJu
IFswLCAxLCAyLCB0Y3VUZXh0dXJlLmNoYW5uZWwuT05FXTsKKyAgICBjYXNlIHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLnNSR0JBOiByZXR1cm4gWzAsIDEsIDIsIDNdOworICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuRDogcmV0dXJuIFswLCB0Y3VUZXh0dXJlLmNoYW5uZWwuWkVSTywg
dGN1VGV4dHVyZS5jaGFubmVsLlpFUk8sIHRjdVRleHR1cmUuY2hhbm5lbC5PTkVdOworICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUzogcmV0dXJuIFt0Y3VUZXh0dXJlLmNoYW5uZWwu
WkVSTywgdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8sIHRjdVRleHR1cmUuY2hhbm5lbC5aRVJPLCAw
XTsKKyAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOiByZXR1cm4gWzAsIHRjdVRl
eHR1cmUuY2hhbm5lbC5aRVJPLCB0Y3VUZXh0dXJlLmNoYW5uZWwuWkVSTywgMV07CisgICAgfQor
CisgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgb3JkZXIgJyArIG9yZGVyKTsKK307
CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlcn0gb3JkZXIKKyAqIEBy
ZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3RjdVRleHR1cmUuZ2V0Q2hhbm5lbFdyaXRlTWFw
ID0gZnVuY3Rpb24ob3JkZXIpIHsKKyAgICBzd2l0Y2ggKG9yZGVyKSB7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUjogcmV0dXJuIFswXTsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5BOiByZXR1cm4gWzNdOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLkk6IHJldHVybiBbMF07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuTDogcmV0dXJuIFswXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5MQTogcmV0dXJuIFswLCAzXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5SRzogcmV0dXJuIFswLCAxXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5SQTogcmV0dXJuIFswLCAzXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5SR0I6IHJldHVybiBbMCwgMSwgMl07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuUkdCQTogcmV0dXJuIFswLCAxLCAyLCAzXTsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5BUkdCOiByZXR1cm4gWzMsIDAsIDEsIDJdOworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkJHUkE6IHJldHVybiBbMiwgMSwgMCwgM107Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQjogcmV0dXJuIFswLCAxLCAy
XTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCQTogcmV0dXJuIFsw
LCAxLCAyLCAzXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EOiByZXR1
cm4gWzBdOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6IHJldHVybiBb
M107CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM6IHJldHVybiBbMCwg
M107CisgICAgfQorICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIG9yZGVyICcgKyBv
cmRlcik7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DaGFubmVsVHlwZX0gdHlw
ZQorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJlLmdldENoYW5uZWxTaXplID0g
ZnVuY3Rpb24odHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UODogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNjogcmV0dXJuIDI7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQzMjogcmV0dXJuIDQ7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OiByZXR1cm4gMTsKKyAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDE2OiByZXR1cm4gMjsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDMyOiByZXR1cm4gNDsKKyAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQ4OiByZXR1cm4gMTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNjogcmV0dXJu
IDI7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzI6IHJl
dHVybiA0OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5U
ODogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05F
RF9JTlQxNjogcmV0dXJuIDI7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
TlNJR05FRF9JTlQzMjogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5VTlNJR05FRF9JTlRfMTFGXzExRl8xMEZfUkVWOiByZXR1cm4gNDsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF85OTlfRTVfUkVWOiByZXR1cm4g
NDsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQ6IHJldHVy
biAyOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6IHJldHVybiA0
OworCisgICAgfQorICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHR5cGUgJyArIGRl
U3RyaW5nLmVudW1Ub1N0cmluZyh0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLCB0eXBlKSk7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBzcmMgU291cmNlIHZhbHVlCisgKiBAcGFyYW0ge251
bWJlcn0gYml0cyBTb3VyY2UgdmFsdWUgc2l6ZSBpbiBiaXRzCisgKiBAcmV0dXJuIHtudW1iZXJ9
IE5vcm1hbGl6ZWQgdmFsdWUKKyAqLwordGN1VGV4dHVyZS5jaGFubmVsVG9Ob3JtRmxvYXQgPSBm
dW5jdGlvbihzcmMsIGJpdHMpIHsKKyAgICB2YXIgbWF4VmFsID0gKDEgPDwgYml0cykgLSAxOwor
ICAgIHJldHVybiBzcmMgLyBtYXhWYWw7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB2
YWx1ZSBTb3VyY2UgdmFsdWUKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DaGFubmVsVHlwZX0gdHlw
ZQorICogQHJldHVybiB7bnVtYmVyfSBTb3VyY2UgdmFsdWUgY29udmVydGVkIHRvIGZsb2F0Cisg
Ki8KK3RjdVRleHR1cmUuY2hhbm5lbFRvRmxvYXQgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkgewor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUu
U05PUk1fSU5UODogcmV0dXJuIE1hdGgubWF4KC0xLCB2YWx1ZSAvIDEyNyk7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNjogcmV0dXJuIE1hdGgubWF4KC0x
LCB2YWx1ZSAvIDMyNzY3KTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNO
T1JNX0lOVDMyOiByZXR1cm4gTWF0aC5tYXgoLTEsIHZhbHVlIC8gMjE0NzQ4MzY0Nyk7CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OiByZXR1cm4gdmFsdWUg
LyAyNTU7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQxNjog
cmV0dXJuIHZhbHVlIC8gNjU1MzU7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTk9STV9JTlQzMjogcmV0dXJuIHZhbHVlIC8gNDI5NDk2NzI5NTsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQ4OiByZXR1cm4gdmFsdWU7CisgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMTY6IHJldHVybiB2YWx1ZTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQzMjogcmV0dXJu
IHZhbHVlOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5U
ODogcmV0dXJuIHZhbHVlOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5T
SUdORURfSU5UMTY6IHJldHVybiB2YWx1ZTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOU0lHTkVEX0lOVDMyOiByZXR1cm4gdmFsdWU7CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5IQUxGX0ZMT0FUOiByZXR1cm4gdGN1RmxvYXQuaGFsZkZsb2F0VG9O
dW1iZXIodmFsdWUpOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6
IHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQg
dGN1VGV4dHVyZS5jaGFubmVsIHR5cGUgJyArIHR5cGUpOworfTsKKworLyoqCisgKiBAcGFyYW0g
e251bWJlcn0gdmFsdWUgU291cmNlIHZhbHVlCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ2hhbm5l
bFR5cGV9IHR5cGUKKyAqIEByZXR1cm4ge251bWJlcn0gU291cmNlIHZhbHVlIGNvbnZlcnRlZCB0
byBpbnQKKyAqLwordGN1VGV4dHVyZS5jaGFubmVsVG9JbnQgPSBmdW5jdGlvbih2YWx1ZSwgdHlw
ZSkgeworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuSEFMRl9GTE9BVDogcmV0dXJuIE1hdGgucm91bmQodGN1RmxvYXQuaGFsZkZsb2F0VG9O
dW1iZXIodmFsdWUpKTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FU
OiByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyfSBvcmRlcgorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJl
LmdldE51bVVzZWRDaGFubmVscyA9IGZ1bmN0aW9uKG9yZGVyKSB7CisgICAgc3dpdGNoIChvcmRl
cikgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlI6IHJldHVybiAxOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkE6IHJldHVybiAxOworICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkk6IHJldHVybiAxOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkw6IHJldHVybiAxOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLkxBOiByZXR1cm4gMjsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5SRzogcmV0dXJuIDI7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkE6IHJldHVybiAyOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlJHQjogcmV0dXJuIDM7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UkdCQTogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQVJH
QjogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQkdSQTog
cmV0dXJuIDQ7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQjogcmV0
dXJuIDM7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQkE6IHJldHVy
biA0OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQ6IHJldHVybiAxOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6IHJldHVybiAxOworICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOiByZXR1cm4gMjsKKyAgICB9CisgICAg
dGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgdGN1VGV4dHVyZS5jaGFubmVsIG9yZGVyICcg
KyBvcmRlcik7Cit9OworCisvKioKKyAqIEBlbnVtCisgKi8KK3RjdVRleHR1cmUuV3JhcE1vZGUg
PSB7CisgICAgQ0xBTVBfVE9fRURHRTogMCwgLy8hIENsYW1wIHRvIGVkZ2UKKyAgICBDTEFNUF9U
T19CT1JERVI6IDEsIC8vISBVc2UgYm9yZGVyIGNvbG9yIGF0IGVkZ2UKKyAgICBSRVBFQVRfR0w6
IDIsIC8vISBSZXBlYXQgd2l0aCBPcGVuR0wgc2VtYW50aWNzCisgICAgUkVQRUFUX0NMOiAzLCAv
LyEgUmVwZWF0IHdpdGggT3BlbkNMIHNlbWFudGljcworICAgIE1JUlJPUkVEX1JFUEVBVF9HTDog
NCwgLy8hIE1pcnJvcmVkIHJlcGVhdCB3aXRoIE9wZW5HTCBzZW1hbnRpY3MKKyAgICBNSVJST1JF
RF9SRVBFQVRfQ0w6IDUgLy8hIE1pcnJvcmVkIHJlcGVhdCB3aXRoIE9wZW5DTCBzZW1hbnRpY3MK
K307CisKKy8qKgorICogQGVudW0KKyAqLwordGN1VGV4dHVyZS5GaWx0ZXJNb2RlID0geworICAg
IE5FQVJFU1Q6IDAsCisgICAgTElORUFSOiAxLAorCisgICAgTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VDogMiwKKyAgICBORUFSRVNUX01JUE1BUF9MSU5FQVI6IDMsCisgICAgTElORUFSX01JUE1BUF9O
RUFSRVNUOiA0LAorICAgIExJTkVBUl9NSVBNQVBfTElORUFSOiA1Cit9OworCisvKioKKyAqIEBl
bnVtCisgKi8KK3RjdVRleHR1cmUuQ29tcGFyZU1vZGUgPSB7CisgICAgQ09NUEFSRU1PREVfTk9O
RTogMCwKKyAgICBDT01QQVJFTU9ERV9MRVNTOiAxLAorICAgIENPTVBBUkVNT0RFX0xFU1NfT1Jf
RVFVQUw6IDIsCisgICAgQ09NUEFSRU1PREVfR1JFQVRFUjogMywKKyAgICBDT01QQVJFTU9ERV9H
UkVBVEVSX09SX0VRVUFMOiA0LAorICAgIENPTVBBUkVNT0RFX0VRVUFMOiA1LAorICAgIENPTVBB
UkVNT0RFX05PVF9FUVVBTDogNiwKKyAgICBDT01QQVJFTU9ERV9BTFdBWVM6IDcsCisgICAgQ09N
UEFSRU1PREVfTkVWRVI6IDgKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
eyF0Y3VUZXh0dXJlLldyYXBNb2RlfSB3cmFwUworICogQHBhcmFtIHshdGN1VGV4dHVyZS5XcmFw
TW9kZX0gd3JhcFQKKyAqIEBwYXJhbSB7IXRjdVRleHR1cmUuV3JhcE1vZGV9IHdyYXBSCisgKiBA
cGFyYW0geyF0Y3VUZXh0dXJlLkZpbHRlck1vZGV9IG1pbkZpbHRlcgorICogQHBhcmFtIHshdGN1
VGV4dHVyZS5GaWx0ZXJNb2RlfSBtYWdGaWx0ZXIKKyAqIEBwYXJhbSB7bnVtYmVyPX0gbG9kVGhy
ZXNob2xkCisgKiBAcGFyYW0ge2Jvb2xlYW49fSBub3JtYWxpemVkQ29vcmRzCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ29tcGFyZU1vZGU9fSBjb21wYXJlCisgKiBAcGFyYW0ge251bWJlcj19IGNv
bXBhcmVDaGFubmVsCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBib3JkZXJDb2xvcgorICog
QHBhcmFtIHtib29sZWFuPX0gc2VhbWxlc3NDdWJlTWFwCisgKi8KK3RjdVRleHR1cmUuU2FtcGxl
ciA9IGZ1bmN0aW9uKHdyYXBTLCB3cmFwVCwgd3JhcFIsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCBs
b2RUaHJlc2hvbGQsIG5vcm1hbGl6ZWRDb29yZHMsIGNvbXBhcmUsIGNvbXBhcmVDaGFubmVsLCBi
b3JkZXJDb2xvciwgc2VhbWxlc3NDdWJlTWFwKSB7CisgICAgLyoqIEB0eXBlIHshdGN1VGV4dHVy
ZS5XcmFwTW9kZX0gKi8gdGhpcy53cmFwUyA9IHdyYXBTOworICAgIC8qKiBAdHlwZSB7IXRjdVRl
eHR1cmUuV3JhcE1vZGV9ICovIHRoaXMud3JhcFQgPSB3cmFwVDsKKyAgICAvKiogQHR5cGUgeyF0
Y3VUZXh0dXJlLldyYXBNb2RlfSAqLyB0aGlzLndyYXBSID0gd3JhcFI7CisgICAgLyoqIEB0eXBl
IHshdGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSAqLyB0aGlzLm1pbkZpbHRlciA9IG1pbkZpbHRlcjsK
KyAgICAvKiogQHR5cGUgeyF0Y3VUZXh0dXJlLkZpbHRlck1vZGV9ICovIHRoaXMubWFnRmlsdGVy
ID0gbWFnRmlsdGVyOworICAgIHRoaXMubG9kVGhyZXNob2xkID0gbG9kVGhyZXNob2xkIHx8IDA7
CisgICAgdGhpcy5ub3JtYWxpemVkQ29vcmRzID0gbm9ybWFsaXplZENvb3JkcyA9PT0gdW5kZWZp
bmVkID8gdHJ1ZSA6IG5vcm1hbGl6ZWRDb29yZHM7CisgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJl
LkNvbXBhcmVNb2RlfSAqLyB0aGlzLmNvbXBhcmUgPSBjb21wYXJlIHx8IHRjdVRleHR1cmUuQ29t
cGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORTsKKyAgICB0aGlzLmNvbXBhcmVDaGFubmVsID0gY29t
cGFyZUNoYW5uZWwgfHwgMDsKKyAgICB0aGlzLmJvcmRlckNvbG9yID0gYm9yZGVyQ29sb3IgfHwg
WzAsIDAsIDAsIDBdOworICAgIHRoaXMuc2VhbWxlc3NDdWJlTWFwID0gc2VhbWxlc3NDdWJlTWFw
IHx8IGZhbHNlOworfTsKKworLyoqCisgKiBTcGVjaWFsIHVubm9ybWFsaXphdGlvbiBmb3IgUkVQ
RUFUX0NMIGFuZCBNSVJST1JFRF9SRVBFQVRfQ0wgdGN1VGV4dHVyZS53cmFwIG1vZGVzOyBvdGhl
cndpc2Ugb3JkaW5hcnkgdW5ub3JtYWxpemF0aW9uLgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLldy
YXBNb2RlfSBtb2RlCisgKiBAcGFyYW0ge251bWJlcn0gYyBWYWx1ZSB0byB0Y3VUZXh0dXJlLnVu
bm9ybWFsaXplCisgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBVbm5vcm1hbGl6ZWQgdHlwZSBzaXpl
IChpbnRlZ2VyKQorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJlLnVubm9ybWFs
aXplID0gZnVuY3Rpb24obW9kZSwgYywgc2l6ZSkgeworICAgIHN3aXRjaCAobW9kZSkgeworICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRToKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0JPUkRFUjoKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTDoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLldyYXBN
b2RlLk1JUlJPUkVEX1JFUEVBVF9HTDogLy8gRmFsbC10aHJvdWdoIChvcmRpbmFyeSBjYXNlKS4K
KyAgICAgICAgICAgIHJldHVybiBzaXplICogYzsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
V3JhcE1vZGUuUkVQRUFUX0NMOgorICAgICAgICAgICAgcmV0dXJuIHNpemUgKiAoYyAtIE1hdGgu
Zmxvb3IoYykpOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5XcmFwTW9kZS5NSVJST1JFRF9S
RVBFQVRfQ0w6CisgICAgICAgICAgICByZXR1cm4gc2l6ZSAqIE1hdGguYWJzKGMgLSAyICogZGVN
YXRoLnJpbnQoMC41ICogYykpOworICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2du
aXplZCB0Y3VUZXh0dXJlLndyYXAgbW9kZSAnICsgbW9kZSk7Cit9OworCisvKioKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5XcmFwTW9kZX0gbW9kZQorICogQHBhcmFtIHtudW1iZXJ9IGMgU291cmNl
IHZhbHVlIChpbnRlZ2VyKQorICogQHBhcmFtIHtudW1iZXJ9IHNpemUgVHlwZSBzaXplIChpbnRl
Z2VyKQorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJlLndyYXAgPSBmdW5jdGlv
bihtb2RlLCBjLCBzaXplKSB7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVI6CisgICAgICAgICAgICByZXR1cm4gZGVN
YXRoLmNsYW1wKGMsIC0xLCBzaXplKTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuV3JhcE1v
ZGUuQ0xBTVBfVE9fRURHRToKKyAgICAgICAgICAgIHJldHVybiBkZU1hdGguY2xhbXAoYywgMCwg
c2l6ZSAtIDEpOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfR0w6
CisgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmltb2QoYywgc2l6ZSk7CisKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9DTDoKKyAgICAgICAgICAgIHJldHVybiBkZU1h
dGguaW1vZChjLCBzaXplKTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuV3JhcE1vZGUuTUlS
Uk9SRURfUkVQRUFUX0dMOgorICAgICAgICAgICAgcmV0dXJuIChzaXplIC0gMSkgLSBkZU1hdGgu
bWlycm9yKGRlTWF0aC5pbW9kKGMsIDIgKiBzaXplKSAtIHNpemUpOworCisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5XcmFwTW9kZS5NSVJST1JFRF9SRVBFQVRfQ0w6CisgICAgICAgICAgICByZXR1
cm4gZGVNYXRoLmNsYW1wKGMsIDAsIHNpemUgLSAxKTsgLy8gXG5vdGUgQWN0dWFsIG1pcnJvcmlu
ZyBkb25lIGFscmVhZHkgaW4gdW5ub3JtYWxpemF0aW9uIGZ1bmN0aW9uLgorICAgIH0KKyAgICB0
aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCB0Y3VUZXh0dXJlLndyYXAgbW9kZSAnICsgbW9k
ZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBjcworICogQHJldHVybiB7bnVtYmVy
fQorICovCit0Y3VUZXh0dXJlLnNSR0JDaGFubmVsVG9MaW5lYXIgPSBmdW5jdGlvbihjcykgewor
ICAgIGlmIChjcyA8PSAwLjA0MDQ1KQorICAgICAgICByZXR1cm4gY3MgLyAxMi45MjsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiBNYXRoLnBvdygoY3MgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTsK
K307CisKKy8qKgorICogQ29udmVydCBzUkdCIHRvIGxpbmVhciBjb2xvcnNwYWNlCisgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj59IGNzIFZlYzQKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFZl
YzQKKyAqLwordGN1VGV4dHVyZS5zUkdCVG9MaW5lYXIgPSBmdW5jdGlvbihjcykgeworICAgIHJl
dHVybiBbCisgICAgICAgIHRjdVRleHR1cmUuc1JHQkNoYW5uZWxUb0xpbmVhcihjc1swXSksCisg
ICAgICAgIHRjdVRleHR1cmUuc1JHQkNoYW5uZWxUb0xpbmVhcihjc1sxXSksCisgICAgICAgIHRj
dVRleHR1cmUuc1JHQkNoYW5uZWxUb0xpbmVhcihjc1syXSksCisgICAgICAgIGNzWzNdCisgICAg
ICAgIF07Cit9OworCisvKioKKyAqIFRleGVsIHRjdVRleHR1cmUubG9va3VwIHdpdGggY29sb3Ig
Y29udmVyc2lvbi4KKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNz
fSBhY2Nlc3MKKyAqIEBwYXJhbSB7bnVtYmVyfSBpCisgKiBAcGFyYW0ge251bWJlcn0gagorICog
QHBhcmFtIHtudW1iZXJ9IGsKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFZlYzQgcGl4ZWwg
Y29sb3IKKyAqLwordGN1VGV4dHVyZS5sb29rdXAgPSBmdW5jdGlvbihhY2Nlc3MsIGksIGosIGsp
IHsKKyAgICB2YXIgcCA9IGFjY2Vzcy5nZXRQaXhlbChpLCBqLCBrKTsKKyAgICByZXR1cm4gYWNj
ZXNzLmdldEZvcm1hdCgpLmlzU1JHQigpID8gdGN1VGV4dHVyZS5zUkdCVG9MaW5lYXIocCkgOiBw
OworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vz
c30gYWNjZXNzCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBh
cmFtIHtudW1iZXJ9IHUKKyAqIEBwYXJhbSB7bnVtYmVyfSB2CisgKiBAcGFyYW0geyhudW1iZXJ8
QXJyYXk8bnVtYmVyPil9IGRlcHRoT3JPZmZzZXQgZGVwdGggKGludCkgb3Igb2Zmc2V0IChpdmVj
MykKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFZlYzQgcGl4ZWwgY29sb3IKKyAqLwordGN1
VGV4dHVyZS5zYW1wbGVMaW5lYXIyRCA9IGZ1bmN0aW9uKGFjY2Vzcywgc2FtcGxlciwgdSwgdiwg
ZGVwdGhPck9mZnNldCkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeE9mZnNldCA9
IDA7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5T2Zmc2V0ID0gMDsKKyAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHZhbHVlOworICAgIGlmIChBcnJheS5pc0FycmF5KGRlcHRo
T3JPZmZzZXQpKSB7CisgICAgICAgIHhPZmZzZXQgPSBkZXB0aE9yT2Zmc2V0WzBdOworICAgICAg
ICB5T2Zmc2V0ID0gZGVwdGhPck9mZnNldFsxXTsKKyAgICAgICAgdmFsdWUgPSBkZXB0aE9yT2Zm
c2V0WzJdOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIChkZXB0aE9yT2Zmc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHAwMAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDEwCisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwMDEKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHAxMQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGIKKyAgICAgKi8KKyAgICB2YXIgaW50ZXJwb2xhdGVRdWFkID0gZnVuY3Rpb24ocDAwLCBwMTAs
IHAwMSwgcDExLCBhLCBiKSB7CisgICAgICAgIHZhciBzMDAgPSAoMSAtIGEpICogKDEgLSBiKTsK
KyAgICAgICAgdmFyIHMxMCA9IGEgKiAoMSAtIGIpOworICAgICAgICB2YXIgczAxID0gKDEgLSBh
KSAqIGI7CisgICAgICAgIHZhciBzMTEgPSBhICogYjsKKworICAgICAgICByZXR1cm4gWworICAg
ICAgICAgICAgKHAwMFswXSAqIHMwMCkgKyAocDEwWzBdICogczEwKSArIChwMDFbMF0gKiBzMDEp
ICsgKHAxMVswXSAqIHMxMSksCisgICAgICAgICAgICAocDAwWzFdICogczAwKSArIChwMTBbMV0g
KiBzMTApICsgKHAwMVsxXSAqIHMwMSkgKyAocDExWzFdICogczExKSwKKyAgICAgICAgICAgIChw
MDBbMl0gKiBzMDApICsgKHAxMFsyXSAqIHMxMCkgKyAocDAxWzJdICogczAxKSArIChwMTFbMl0g
KiBzMTEpLAorICAgICAgICAgICAgKHAwMFszXSAqIHMwMCkgKyAocDEwWzNdICogczEwKSArIChw
MDFbM10gKiBzMDEpICsgKHAxMVszXSAqIHMxMSkKKyAgICAgICAgXTsKKyAgICB9OworCisgICAg
dmFyIHcgPSBhY2Nlc3MuZ2V0V2lkdGgoKTsKKyAgICB2YXIgaCA9IGFjY2Vzcy5nZXRIZWlnaHQo
KTsKKworICAgIHZhciB4MCA9IE1hdGguZmxvb3IodSAtIDAuNSkgKyB4T2Zmc2V0OworICAgIHZh
ciB4MSA9IHgwICsgMTsKKyAgICB2YXIgeTAgPSBNYXRoLmZsb29yKHYgLSAwLjUpICsgeU9mZnNl
dDsKKyAgICB2YXIgeTEgPSB5MCArIDE7CisKKyAgICB2YXIgaTAgPSB0Y3VUZXh0dXJlLndyYXAo
c2FtcGxlci53cmFwUywgeDAsIHcpOworICAgIHZhciBpMSA9IHRjdVRleHR1cmUud3JhcChzYW1w
bGVyLndyYXBTLCB4MSwgdyk7CisgICAgdmFyIGowID0gdGN1VGV4dHVyZS53cmFwKHNhbXBsZXIu
d3JhcFQsIHkwLCBoKTsKKyAgICB2YXIgajEgPSB0Y3VUZXh0dXJlLndyYXAoc2FtcGxlci53cmFw
VCwgeTEsIGgpOworCisgICAgdmFyIGEgPSBkZU1hdGguZGVGbG9hdEZyYWModSAtIDAuNSk7Cisg
ICAgdmFyIGIgPSBkZU1hdGguZGVGbG9hdEZyYWModiAtIDAuNSk7CisKKyAgICB2YXIgaTBVc2VC
b3JkZXIgPSBzYW1wbGVyLndyYXBTID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9S
REVSICYmICFkZU1hdGguZGVJbkJvdW5kczMyKGkwLCAwLCB3KTsKKyAgICB2YXIgaTFVc2VCb3Jk
ZXIgPSBzYW1wbGVyLndyYXBTID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVS
ICYmICFkZU1hdGguZGVJbkJvdW5kczMyKGkxLCAwLCB3KTsKKyAgICB2YXIgajBVc2VCb3JkZXIg
PSBzYW1wbGVyLndyYXBUID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSICYm
ICFkZU1hdGguZGVJbkJvdW5kczMyKGowLCAwLCBoKTsKKyAgICB2YXIgajFVc2VCb3JkZXIgPSBz
YW1wbGVyLndyYXBUID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSICYmICFk
ZU1hdGguZGVJbkJvdW5kczMyKGoxLCAwLCBoKTsKKworICAgIC8vIEJvcmRlciBjb2xvciBmb3Ig
b3V0LW9mLXJhbmdlIGNvb3JkaW5hdGVzIGlmIHVzaW5nIENMQU1QX1RPX0JPUkRFUiwgb3RoZXJ3
aXNlIGV4ZWN1dGUgbG9va3Vwcy4KKyAgICB2YXIgcDAwID0gKGkwVXNlQm9yZGVyIHx8IGowVXNl
Qm9yZGVyKSA/IHNhbXBsZXIuYm9yZGVyQ29sb3IgOiB0Y3VUZXh0dXJlLmxvb2t1cChhY2Nlc3Ms
IGkwLCBqMCwgdmFsdWUpOworICAgIHZhciBwMTAgPSAoaTFVc2VCb3JkZXIgfHwgajBVc2VCb3Jk
ZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTEs
IGowLCB2YWx1ZSk7CisgICAgdmFyIHAwMSA9IChpMFVzZUJvcmRlciB8fCBqMVVzZUJvcmRlcikg
PyBzYW1wbGVyLmJvcmRlckNvbG9yIDogdGN1VGV4dHVyZS5sb29rdXAoYWNjZXNzLCBpMCwgajEs
IHZhbHVlKTsKKyAgICB2YXIgcDExID0gKGkxVXNlQm9yZGVyIHx8IGoxVXNlQm9yZGVyKSA/IHNh
bXBsZXIuYm9yZGVyQ29sb3IgOiB0Y3VUZXh0dXJlLmxvb2t1cChhY2Nlc3MsIGkxLCBqMSwgdmFs
dWUpOworCisgICAgLy8gSW50ZXJwb2xhdGUuCisgICAgcmV0dXJuIGludGVycG9sYXRlUXVhZChw
MDAsIHAxMCwgcDAxLCBwMTEsIGEsIGIpOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1
cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgKiBAcGFyYW0ge3RjdVRleHR1cmUu
U2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9IHUKKyAqIEBwYXJhbSB7bnVtYmVy
fSB2CisgKiBAcGFyYW0ge251bWJlcn0gdworICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0gb2Zm
c2V0CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBWZWM0IHBpeGVsIGNvbG9yCisgKi8KK3Rj
dVRleHR1cmUuc2FtcGxlTGluZWFyM0QgPSBmdW5jdGlvbihhY2Nlc3MsIHNhbXBsZXIsIHUsIHYs
IHcsIG9mZnNldCkgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDAw
MAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDEwMAorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gcDAxMAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDExMAorICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDAwMQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gcDEwMQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDAxMQorICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gcDExMQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYworICAgICAqLwor
ICAgIHZhciBpbnRlcnBvbGF0ZUN1YmUgPSBmdW5jdGlvbihwMDAwLCBwMTAwLCBwMDEwLCBwMTEw
LCBwMDAxLCBwMTAxLCBwMDExLCBwMTExLCBhLCBiLCBjKSB7CisgICAgICAgIHZhciBzMDAwID0g
KDEgLSBhKSAqICgxIC0gYikgKiAoMSAtIGMpOworICAgICAgICB2YXIgczEwMCA9IGEgKiAoMSAt
IGIpICogKDEgLSBjKTsKKyAgICAgICAgdmFyIHMwMTAgPSAoMSAtIGEpICogYiAqICgxIC0gYyk7
CisgICAgICAgIHZhciBzMTEwID0gYSAqIGIgKiAoMSAtIGMpOworICAgICAgICB2YXIgczAwMSA9
ICgxIC0gYSkgKiAoMSAtIGIpICogYzsKKyAgICAgICAgdmFyIHMxMDEgPSBhICogKDEgLSBiKSAq
IGM7CisgICAgICAgIHZhciBzMDExID0gKDEgLSBhKSAqIGIgKiBjOworICAgICAgICB2YXIgczEx
MSA9IGEgKiBiICogYzsKKworICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgKHAwMDBbMF0g
KiBzMDAwKSArIChwMTAwWzBdICogczEwMCkgKyAocDAxMFswXSAqIHMwMTApICsgKHAxMTBbMF0g
KiBzMTEwKSArIChwMDAxWzBdICogczAwMSkgKyAocDEwMVswXSAqIHMxMDEpICsgKHAwMTFbMF0g
KiBzMDExKSArIChwMTExWzBdICogczExMSksCisgICAgICAgICAgICAocDAwMFsxXSAqIHMwMDAp
ICsgKHAxMDBbMV0gKiBzMTAwKSArIChwMDEwWzFdICogczAxMCkgKyAocDExMFsxXSAqIHMxMTAp
ICsgKHAwMDFbMV0gKiBzMDAxKSArIChwMTAxWzFdICogczEwMSkgKyAocDAxMVsxXSAqIHMwMTEp
ICsgKHAxMTFbMV0gKiBzMTExKSwKKyAgICAgICAgICAgIChwMDAwWzJdICogczAwMCkgKyAocDEw
MFsyXSAqIHMxMDApICsgKHAwMTBbMl0gKiBzMDEwKSArIChwMTEwWzJdICogczExMCkgKyAocDAw
MVsyXSAqIHMwMDEpICsgKHAxMDFbMl0gKiBzMTAxKSArIChwMDExWzJdICogczAxMSkgKyAocDEx
MVsyXSAqIHMxMTEpLAorICAgICAgICAgICAgKHAwMDBbM10gKiBzMDAwKSArIChwMTAwWzNdICog
czEwMCkgKyAocDAxMFszXSAqIHMwMTApICsgKHAxMTBbM10gKiBzMTEwKSArIChwMDAxWzNdICog
czAwMSkgKyAocDEwMVszXSAqIHMxMDEpICsgKHAwMTFbM10gKiBzMDExKSArIChwMTExWzNdICog
czExMSkKKyAgICAgICAgXTsKKyAgICB9OworCisgICAgdmFyIHdpZHRoID0gYWNjZXNzLmdldFdp
ZHRoKCk7CisgICAgdmFyIGhlaWdodCA9IGFjY2Vzcy5nZXRIZWlnaHQoKTsKKyAgICB2YXIgZGVw
dGggPSBhY2Nlc3MuZ2V0RGVwdGgoKTsKKworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
eE9mZnNldCA9IDA7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5T2Zmc2V0ID0gMDsK
KyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHpPZmZzZXQgPSAwOworCisgICAgaWYgKG9m
ZnNldCAhPT0gdW5kZWZpbmVkICYmIG9mZnNldC5sZW5ndGggPT09IDMpIHsKKyAgICAgICAgeE9m
ZnNldCA9IG9mZnNldFswXTsKKyAgICAgICAgeU9mZnNldCA9IG9mZnNldFsxXTsKKyAgICAgICAg
ek9mZnNldCA9IG9mZnNldFsyXTsKKyAgICB9CisKKyAgICB2YXIgeDAgPSBNYXRoLmZsb29yKHUg
LSAwLjUpICsgeE9mZnNldDsKKyAgICB2YXIgeDEgPSB4MCArIDE7CisgICAgdmFyIHkwID0gTWF0
aC5mbG9vcih2IC0gMC41KSArIHlPZmZzZXQ7CisgICAgdmFyIHkxID0geTAgKyAxOworICAgIHZh
ciB6MCA9IE1hdGguZmxvb3IodyAtIDAuNSkgKyB6T2Zmc2V0OworICAgIHZhciB6MSA9IHowICsg
MTsKKworICAgIHZhciBpMCA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBTLCB4MCwgd2lk
dGgpOworICAgIHZhciBpMSA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBTLCB4MSwgd2lk
dGgpOworICAgIHZhciBqMCA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBULCB5MCwgaGVp
Z2h0KTsKKyAgICB2YXIgajEgPSB0Y3VUZXh0dXJlLndyYXAoc2FtcGxlci53cmFwVCwgeTEsIGhl
aWdodCk7CisgICAgdmFyIGswID0gdGN1VGV4dHVyZS53cmFwKHNhbXBsZXIud3JhcFIsIHowLCBk
ZXB0aCk7CisgICAgdmFyIGsxID0gdGN1VGV4dHVyZS53cmFwKHNhbXBsZXIud3JhcFIsIHoxLCBk
ZXB0aCk7CisKKyAgICB2YXIgYSA9IGRlTWF0aC5kZUZsb2F0RnJhYyh1IC0gMC41KTsKKyAgICB2
YXIgYiA9IGRlTWF0aC5kZUZsb2F0RnJhYyh2IC0gMC41KTsKKyAgICB2YXIgYyA9IGRlTWF0aC5k
ZUZsb2F0RnJhYyh3IC0gMC41KTsKKworICAgIHZhciBpMFVzZUJvcmRlciA9IHNhbXBsZXIud3Jh
cFMgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0aC5kZUlu
Qm91bmRzMzIoaTAsIDAsIHdpZHRoKTsKKyAgICB2YXIgaTFVc2VCb3JkZXIgPSBzYW1wbGVyLndy
YXBTID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSICYmICFkZU1hdGguZGVJ
bkJvdW5kczMyKGkxLCAwLCB3aWR0aCk7CisgICAgdmFyIGowVXNlQm9yZGVyID0gc2FtcGxlci53
cmFwVCA9PSB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0JPUkRFUiAmJiAhZGVNYXRoLmRl
SW5Cb3VuZHMzMihqMCwgMCwgaGVpZ2h0KTsKKyAgICB2YXIgajFVc2VCb3JkZXIgPSBzYW1wbGVy
LndyYXBUID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSICYmICFkZU1hdGgu
ZGVJbkJvdW5kczMyKGoxLCAwLCBoZWlnaHQpOworICAgIHZhciBrMFVzZUJvcmRlciA9IHNhbXBs
ZXIud3JhcFIgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRlTWF0
aC5kZUluQm91bmRzMzIoazAsIDAsIGRlcHRoKTsKKyAgICB2YXIgazFVc2VCb3JkZXIgPSBzYW1w
bGVyLndyYXBSID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSICYmICFkZU1h
dGguZGVJbkJvdW5kczMyKGsxLCAwLCBkZXB0aCk7CisKKyAgICAvLyBCb3JkZXIgY29sb3IgZm9y
IG91dC1vZi1yYW5nZSBjb29yZGluYXRlcyBpZiB1c2luZyBDTEFNUF9UT19CT1JERVIsIG90aGVy
d2lzZSBleGVjdXRlIGxvb2t1cHMuCisgICAgdmFyIHAwMDAgPSAoaTBVc2VCb3JkZXIgfHwgajBV
c2VCb3JkZXIgfHwgazBVc2VCb3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1
cmUubG9va3VwKGFjY2VzcywgaTAsIGowLCBrMCk7CisgICAgdmFyIHAxMDAgPSAoaTFVc2VCb3Jk
ZXIgfHwgajBVc2VCb3JkZXIgfHwgazBVc2VCb3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6
IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTEsIGowLCBrMCk7CisgICAgdmFyIHAwMTAgPSAo
aTBVc2VCb3JkZXIgfHwgajFVc2VCb3JkZXIgfHwgazBVc2VCb3JkZXIpID8gc2FtcGxlci5ib3Jk
ZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTAsIGoxLCBrMCk7CisgICAgdmFy
IHAxMTAgPSAoaTFVc2VCb3JkZXIgfHwgajFVc2VCb3JkZXIgfHwgazBVc2VCb3JkZXIpID8gc2Ft
cGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTEsIGoxLCBrMCk7
CisgICAgdmFyIHAwMDEgPSAoaTBVc2VCb3JkZXIgfHwgajBVc2VCb3JkZXIgfHwgazFVc2VCb3Jk
ZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFjY2VzcywgaTAs
IGowLCBrMSk7CisgICAgdmFyIHAxMDEgPSAoaTFVc2VCb3JkZXIgfHwgajBVc2VCb3JkZXIgfHwg
azFVc2VCb3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUubG9va3VwKGFj
Y2VzcywgaTEsIGowLCBrMSk7CisgICAgdmFyIHAwMTEgPSAoaTBVc2VCb3JkZXIgfHwgajFVc2VC
b3JkZXIgfHwgazFVc2VCb3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRjdVRleHR1cmUu
bG9va3VwKGFjY2VzcywgaTAsIGoxLCBrMSk7CisgICAgdmFyIHAxMTEgPSAoaTFVc2VCb3JkZXIg
fHwgajFVc2VCb3JkZXIgfHwgazFVc2VCb3JkZXIpID8gc2FtcGxlci5ib3JkZXJDb2xvciA6IHRj
dVRleHR1cmUubG9va3VwKGFjY2VzcywgaTEsIGoxLCBrMSk7CisKKyAgICAvLyBJbnRlcnBvbGF0
ZS4KKyAgICByZXR1cm4gaW50ZXJwb2xhdGVDdWJlKHAwMDAsIHAxMDAsIHAwMTAsIHAxMTAsIHAw
MDEsIHAxMDEsIHAwMTEsIHAxMTEsIGEsIGIsIGMpOworfTsKKworLyoqCisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9IHUKKyAqIEBwYXJhbSB7
bnVtYmVyfSB2CisgKiBAcGFyYW0geyhudW1iZXJ8QXJyYXk8bnVtYmVyPil9IGRlcHRoT3JPZmZz
ZXQgZGVwdGggKGludGVnZXIpIG9yIG9mZnNldCAoaXZlYzMpCisgKiBAcmV0dXJuIHtBcnJheTxu
dW1iZXI+fSBWZWM0IHBpeGVsIGNvbG9yCisgKi8KK3RjdVRleHR1cmUuc2FtcGxlTmVhcmVzdDJE
ID0gZnVuY3Rpb24oYWNjZXNzLCBzYW1wbGVyLCB1LCB2LCBkZXB0aE9yT2Zmc2V0KSB7CisgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4T2Zmc2V0ID0gMDsKKyAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHlPZmZzZXQgPSAwOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
dmFsdWU7CisgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwdGhPck9mZnNldCkpIHsKKyAgICAgICAg
eE9mZnNldCA9IGRlcHRoT3JPZmZzZXRbMF07CisgICAgICAgIHlPZmZzZXQgPSBkZXB0aE9yT2Zm
c2V0WzFdOworICAgICAgICB2YWx1ZSA9IGRlcHRoT3JPZmZzZXRbMl07CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGRlcHRoT3JPZmZzZXQpOwor
ICAgIH0KKworICAgIHZhciB3aWR0aCA9IGFjY2Vzcy5nZXRXaWR0aCgpOworICAgIHZhciBoZWln
aHQgPSBhY2Nlc3MuZ2V0SGVpZ2h0KCk7CisKKyAgICB2YXIgeCA9IE1hdGguZmxvb3IodSkgKyB4
T2Zmc2V0OworICAgIHZhciB5ID0gTWF0aC5mbG9vcih2KSArIHlPZmZzZXQ7CisKKyAgICAvLyBD
aGVjayBmb3IgQ0xBTVBfVE9fQk9SREVSLgorICAgIGlmICgoc2FtcGxlci53cmFwUyA9PSB0Y3VU
ZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0JPUkRFUiAmJiAhZGVNYXRoLmRlSW5Cb3VuZHMzMih4
LCAwLCB3aWR0aCkpIHx8CisgICAgICAgIChzYW1wbGVyLndyYXBUID09IHRjdVRleHR1cmUuV3Jh
cE1vZGUuQ0xBTVBfVE9fQk9SREVSICYmICFkZU1hdGguZGVJbkJvdW5kczMyKHksIDAsIGhlaWdo
dCkpKQorICAgICAgICByZXR1cm4gc2FtcGxlci5ib3JkZXJDb2xvcjsKKworICAgIHZhciBpID0g
dGN1VGV4dHVyZS53cmFwKHNhbXBsZXIud3JhcFMsIHgsIHdpZHRoKTsKKyAgICB2YXIgaiA9IHRj
dVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBULCB5LCBoZWlnaHQpOworCisgICAgcmV0dXJuIHRj
dVRleHR1cmUubG9va3VwKGFjY2VzcywgaSwgaiwgdmFsdWUpOworfTsKKworLyoqCisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9IHUKKyAqIEBw
YXJhbSB7bnVtYmVyfSB2CisgKiBAcGFyYW0ge251bWJlcn0gdworICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+PX0gb2Zmc2V0CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBWZWM0IHBpeGVsIGNv
bG9yCisgKi8KK3RjdVRleHR1cmUuc2FtcGxlTmVhcmVzdDNEID0gZnVuY3Rpb24oYWNjZXNzLCBz
YW1wbGVyLCB1LCB2LCB3LCBvZmZzZXQpIHsKKyAgICB2YXIgd2lkdGggPSBhY2Nlc3MuZ2V0V2lk
dGgoKTsKKyAgICB2YXIgaGVpZ2h0ID0gYWNjZXNzLmdldEhlaWdodCgpOworICAgIHZhciBkZXB0
aCA9IGFjY2Vzcy5nZXREZXB0aCgpOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeE9m
ZnNldCA9IDA7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5T2Zmc2V0ID0gMDsKKyAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHpPZmZzZXQgPSAwOworCisgICAgaWYgKG9mZnNl
dCAhPT0gdW5kZWZpbmVkICYmIG9mZnNldC5sZW5ndGggPT09IDMpIHsKKyAgICAgICAgeE9mZnNl
dCA9IG9mZnNldFswXTsKKyAgICAgICAgeU9mZnNldCA9IG9mZnNldFsxXTsKKyAgICAgICAgek9m
ZnNldCA9IG9mZnNldFsyXTsKKyAgICB9CisKKyAgICB2YXIgeCA9IE1hdGguZmxvb3IodSkgKyB4
T2Zmc2V0OworICAgIHZhciB5ID0gTWF0aC5mbG9vcih2KSArIHlPZmZzZXQ7CisgICAgdmFyIHog
PSBNYXRoLmZsb29yKHcpICsgek9mZnNldDsKKworICAgIC8vIENoZWNrIGZvciBDTEFNUF9UT19C
T1JERVIuCisgICAgaWYgKChzYW1wbGVyLndyYXBTID09IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xB
TVBfVE9fQk9SREVSICYmICFkZU1hdGguZGVJbkJvdW5kczMyKHgsIDAsIHdpZHRoKSkgfHwKKyAg
ICAgICAgKHNhbXBsZXIud3JhcFQgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JE
RVIgJiYgIWRlTWF0aC5kZUluQm91bmRzMzIoeSwgMCwgaGVpZ2h0KSkgfHwKKyAgICAgICAgKHNh
bXBsZXIud3JhcFIgPT0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19CT1JERVIgJiYgIWRl
TWF0aC5kZUluQm91bmRzMzIoeiwgMCwgZGVwdGgpKSkKKyAgICAgICAgcmV0dXJuIHNhbXBsZXIu
Ym9yZGVyQ29sb3I7CisKKyAgICB2YXIgaSA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBT
LCB4LCB3aWR0aCk7CisgICAgdmFyIGogPSB0Y3VUZXh0dXJlLndyYXAoc2FtcGxlci53cmFwVCwg
eSwgaGVpZ2h0KTsKKyAgICB2YXIgayA9IHRjdVRleHR1cmUud3JhcChzYW1wbGVyLndyYXBSLCB6
LCBkZXB0aCk7CisKKyAgICByZXR1cm4gdGN1VGV4dHVyZS5sb29rdXAoYWNjZXNzLCBpLCBqLCBr
KTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvciBWZWM0IGNvbG9y
CisgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBjb2xvciBpbiBwYWNrZWQgMzIgYml0IGZvcm1hdAor
ICovCit0Y3VUZXh0dXJlLnBhY2tSR0I5OTlFNSA9IGZ1bmN0aW9uKGNvbG9yKSB7CisgICAgLyoq
IEBjb25zdCAqLyB2YXIgbUJpdHMgPSA5OworICAgIC8qKiBAY29uc3QgKi8gdmFyIGVCaXRzID0g
NTsKKyAgICAvKiogQGNvbnN0ICovIHZhciBlQmlhcyA9IDE1OworICAgIC8qKiBAY29uc3QgKi8g
dmFyIGVNYXggPSAoMSA8PCBlQml0cykgLSAxOworICAgIC8qKiBAY29uc3QgKi8gdmFyIG1heFZh
bCA9ICgoKDEgPDwgbUJpdHMpIC0gMSkgKiAoMSA8PCAoZU1heCAtIGVCaWFzKSkpIC8gKDEgPDwg
bUJpdHMpOworCisgICAgdmFyIHJjID0gZGVNYXRoLmNsYW1wKGNvbG9yWzBdLCAwLCBtYXhWYWwp
OworICAgIHZhciBnYyA9IGRlTWF0aC5jbGFtcChjb2xvclsxXSwgMCwgbWF4VmFsKTsKKyAgICB2
YXIgYmMgPSBkZU1hdGguY2xhbXAoY29sb3JbMl0sIDAsIG1heFZhbCk7CisgICAgdmFyIG1heGMg
PSBNYXRoLm1heChyYywgZ2MsIGJjKTsKKyAgICB2YXIgZXhwcCA9IE1hdGgubWF4KC1lQmlhcyAt
IDEsIE1hdGguZmxvb3IoTWF0aC5sb2cyKG1heGMpKSkgKyAxICsgZUJpYXM7CisgICAgdmFyIGUg
PSBNYXRoLnBvdygyLCBleHBwIC0gZUJpYXMgLSBtQml0cyk7CisgICAgdmFyIG1heHMgPSBNYXRo
LmZsb29yKG1heGMgLyBlICsgMC41KTsKKworICAgIHZhciBleHBzID0gbWF4cyA9PSAoMSA8PCBt
Qml0cykgPyBleHBwICsgMSA6IGV4cHA7CisgICAgdmFyIHJzID0gZGVNYXRoLmNsYW1wKE1hdGgu
Zmxvb3IocmMgLyBlICsgMC41KSwgMCwgKDEgPDwgOSkgLSAxKTsKKyAgICB2YXIgZ3MgPSBkZU1h
dGguY2xhbXAoTWF0aC5mbG9vcihnYyAvIGUgKyAwLjUpLCAwLCAoMSA8PCA5KSAtIDEpOworICAg
IHZhciBicyA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKGJjIC8gZSArIDAuNSksIDAsICgxIDw8
IDkpIC0gMSk7CisKKyAgICBERV9BU1NFUlQoKGV4cHMgJiB+KCgxIDw8IDUpIC0gMSkpID09IDAp
OworICAgIERFX0FTU0VSVCgocnMgJiB+KCgxIDw8IDkpIC0gMSkpID09IDApOworICAgIERFX0FT
U0VSVCgoZ3MgJiB+KCgxIDw8IDkpIC0gMSkpID09IDApOworICAgIERFX0FTU0VSVCgoYnMgJiB+
KCgxIDw8IDkpIC0gMSkpID09IDApOworCisgICAgcmV0dXJuIHJzIHwgKGdzIDw8IDkpIHwgKGJz
IDw8IDE4KSB8IChleHBzIDw8IDI3KTsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGNv
bG9yIENvbG9yIGluIHBhY2tlZCAzMiBiaXQgZm9ybWF0CisgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fSBUaGUgY29sb3IgaW4gdW5wYWNrZWQgZm9ybWF0CisgKi8KK3RjdVRleHR1cmUudW5wYWNr
UkdCOTk5RTUgPSBmdW5jdGlvbihjb2xvcikgeworICAgIHZhciBtQml0cyA9IDk7CisgICAgdmFy
IGVCaWFzID0gMTU7CisKKyAgICB2YXIgZXhwID0gKGNvbG9yID4+IDI3KSAmICgoMSA8PCA1KSAt
IDEpOworICAgIHZhciBicyA9IChjb2xvciA+PiAxOCkgJiAoKDEgPDwgOSkgLSAxKTsKKyAgICB2
YXIgZ3MgPSAoY29sb3IgPj4gOSkgJiAoKDEgPDwgOSkgLSAxKTsKKyAgICB2YXIgcnMgPSBjb2xv
ciAmICgoMSA8PCA5KSAtIDEpOworCisgICAgdmFyIGUgPSBNYXRoLnBvdygyLCAoZXhwIC0gZUJp
YXMgLSBtQml0cykpOworICAgIHZhciByID0gcnMgKiBlOworICAgIHZhciBnID0gZ3MgKiBlOwor
ICAgIHZhciBiID0gYnMgKiBlOworCisgICAgcmV0dXJuIFtyLCBnLCBiLCAxXTsKK307CisKKy8q
KgorICogXGJyaWVmIFJlYWQtb25seSBwaXhlbCBkYXRhIGFjY2VzcworICoKKyAqIHRjdVRleHR1
cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2VzcyBlbmNhcHN1bGF0ZXMgcGl4ZWwgZGF0YSBwb2ludGVy
IGFsb25nIHdpdGgKKyAqIGZvcm1hdCBhbmQgbGF5b3V0IGluZm9ybWF0aW9uLiBJdCBjYW4gYmUg
dXNlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcworICogdG8gYXJiaXRyYXJ5IHBpeGVsIGJ1ZmZlcnMu
CisgKgorICogQWNjZXNzIG9iamVjdHMgYXJlIGxpa2UgaXRlcmF0b3JzIG9yIHBvaW50ZXJzLiBU
aGV5IGNhbiBiZSBwYXNzZWQgYXJvdW5kCisgKiBhcyB2YWx1ZXMgYW5kIGFyZSB2YWxpZCBhcyBs
b25nIGFzIHRoZSBzdG9yYWdlIGRvZXNuJ3QgY2hhbmdlLgorICogQGNvbnN0cnVjdG9yCisgKi8K
K3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2VzcyA9IGZ1bmN0aW9uKGRlc2NyaXB0b3Ip
IHsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICB0aGlzLm1fb2Zmc2V0ID0gZGVzY3Jp
cHRvci5vZmZzZXQgfHwgMDsKKyAgICAgICAgdGhpcy5tX2Zvcm1hdCA9IGRlc2NyaXB0b3IuZm9y
bWF0IHx8IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVCk7CisgICAgICAgIHRoaXMubV93
aWR0aCA9IGRlc2NyaXB0b3Iud2lkdGg7CisgICAgICAgIHRoaXMubV9oZWlnaHQgPSBkZXNjcmlw
dG9yLmhlaWdodDsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGVwdGgpCisgICAgICAgICAgICB0
aGlzLm1fZGVwdGggPSBkZXNjcmlwdG9yLmRlcHRoOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLm1fZGVwdGggPSAxOworICAgICAgICB0aGlzLm1fZGF0YSA9IGRlc2NyaXB0b3IuZGF0
YTsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iucm93UGl0Y2gpCisgICAgICAgICAgICB0aGlzLm1f
cm93UGl0Y2ggPSBkZXNjcmlwdG9yLnJvd1BpdGNoOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLm1fcm93UGl0Y2ggPSB0aGlzLm1fd2lkdGggKiB0aGlzLm1fZm9ybWF0LmdldFBpeGVs
U2l6ZSgpOworCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNsaWNlUGl0Y2gpCisgICAgICAgICAg
ICB0aGlzLm1fc2xpY2VQaXRjaCA9IGRlc2NyaXB0b3Iuc2xpY2VQaXRjaDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGhpcy5tX3NsaWNlUGl0Y2ggPSB0aGlzLm1fcm93UGl0Y2ggKiB0aGlz
Lm1faGVpZ2h0OworCisgICAgICAgIGlmICh0aGlzLm1fZm9ybWF0LmlzRXF1YWwobmV3IHRjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdCgKKyAgICAgICAgICAgIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCkpKQorICAgICAgICAgICAg
dGhpcy5tX3JnYmE4VmlldyA9IG5ldyB0Y3VUZXh0dXJlLlJHQkE4Vmlldyh0aGlzKTsKKyAgICAg
ICAgZWxzZSBpZiAodGhpcy5tX2Zvcm1hdC5pc0VxdWFsKG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVG
b3JtYXQoCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCkpKQorICAgICAgICAgICAgdGhpcy5tX3JnYjhWaWV3
ID0gbmV3IHRjdVRleHR1cmUuUkdCQThWaWV3KHRoaXMpOworCisgICAgfQorCisgICAgdGhpcy5t
X2RhdGFQdHJUeXBlID0gbnVsbDsKKyAgICB0aGlzLm1fZGF0YVB0ciA9IG51bGw7Cit9OworCit0
Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHN0ciA9ICdCdWZmZXJBY2Nlc3MoZm9ybWF0OiAnICsgdGhpcy5t
X2Zvcm1hdCArCisgICAgICAgICcsIHdpZHRoOiAnICsgdGhpcy5tX3dpZHRoICsKKyAgICAgICAg
JywgaGVpZ2h0OiAnICsgdGhpcy5tX2hlaWdodDsKKyAgICBpZiAodGhpcy5tX2RlcHRoID4gMSkK
KyAgICAgICAgc3RyICs9ICcsIGRlcHRoOiAnICsgdGhpcy5tX2RlcHRoOworICAgIGlmICh0aGlz
Lm1fcm93UGl0Y2ggIT0gdGhpcy5tX3dpZHRoICogdGhpcy5tX2Zvcm1hdC5nZXRQaXhlbFNpemUo
KSkKKyAgICAgICAgc3RyICs9ICcsIHJvdyBwaXRjaDogJyArIHRoaXMubV9yb3dQaXRjaDsKKyAg
ICBpZiAodGhpcy5tX3NsaWNlUGl0Y2ggIT0gdGhpcy5tX3Jvd1BpdGNoICogdGhpcy5tX2hlaWdo
dCkKKyAgICAgICAgc3RyICs9ICcsIHNsaWNlIHBpdGNoOiAnICsgdGhpcy5tX3NsaWNlUGl0Y2g7
CisgICAgaWYgKHRoaXMubV9vZmZzZXQgPiAwKQorICAgICAgICBzdHIgKz0gJywgb2Zmc2V0OiAn
ICsgdGhpcy5tX29mZnNldDsKKyAgICBzdHIgKz0gJyknOworICAgIHJldHVybiBzdHI7Cit9Owor
CisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNj
ZXNzLnByb3RvdHlwZS5nZXREYXRhU2l6ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2Rl
cHRoICogdGhpcy5tX3NsaWNlUGl0Y2g7IH07Cit0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJB
Y2Nlc3MucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV93aWR0
aCA9PSAwIHx8IHRoaXMubV9oZWlnaHQgPT0gMCB8fCB0aGlzLm1fZGVwdGggPT0gMDsgfTsKKy8q
KiBAcmV0dXJuIHtnb29nLlR5cGVkQXJyYXl9ICovCit0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZm
ZXJBY2Nlc3MucHJvdG90eXBlLmdldERhdGFQdHIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhp
cy5tX2RhdGFQdHJUeXBlICE9IHRoaXMubV9mb3JtYXQudHlwZSkgeworICAgICAgICB0aGlzLm1f
ZGF0YVB0clR5cGUgPSB0aGlzLm1fZm9ybWF0LnR5cGU7CisgICAgICAgIHZhciBhcnJheVR5cGUg
PSB0Y3VUZXh0dXJlLmdldFR5cGVkQXJyYXkodGhpcy5tX2Zvcm1hdC50eXBlKTsKKyAgICAgICAg
dGhpcy5tX2RhdGFQdHIgPSBuZXcgYXJyYXlUeXBlKHRoaXMubV9kYXRhLCB0aGlzLm1fb2Zmc2V0
KTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMubV9kYXRhUHRyOworfTsKKy8qKiBAcmV0dXJuIHtB
cnJheUJ1ZmZlcn0gKi8KK3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5
cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubV9kYXRhOworfTsK
Ky8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nl
c3MucHJvdG90eXBlLmdldFJvd1BpdGNoID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fcm93
UGl0Y2g7IH07CisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhp
cy5tX3dpZHRoOyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUuQ29uc3RQ
aXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1faGVpZ2h0OyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUu
Q29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuZ2V0RGVwdGggPSBmdW5jdGlvbigpIHsg
cmV0dXJuIHRoaXMubV9kZXB0aDsgfTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0
dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBlLmdldFNsaWNlUGl0Y2ggPSBmdW5j
dGlvbigpIHsgcmV0dXJuIHRoaXMubV9zbGljZVBpdGNoOyB9OworLyoqIEByZXR1cm4ge3RjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8KK3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vz
cy5wcm90b3R5cGUuZ2V0Rm9ybWF0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZm9ybWF0
OyB9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQor
ICogQHBhcmFtIHtudW1iZXI9fSB6CisgKiBAcmV0dXJuIHtudW1iZXJ9IHN0ZW5jaWwgdmFsdWUK
KyAqLwordGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5nZXRQaXhT
dGVuY2lsID0gZnVuY3Rpb24oeCwgeSwgeikgeworICAgIHogPSB6IHx8IDA7CisKKyAgICBERV9B
U1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih4LCAwLCB0aGlzLm1fd2lkdGgpKTsKKyAgICBERV9B
U1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih5LCAwLCB0aGlzLm1faGVpZ2h0KSk7CisgICAgREVf
QVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeiwgMCwgdGhpcy5tX2RlcHRoKSk7CisKKyAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgcG9zaXRpb24gaXMgJ2ludGVnZXInCisgICAgeCA9IE1hdGgu
cm91bmQoeCk7CisgICAgeSA9IE1hdGgucm91bmQoeSk7CisgICAgeiA9IE1hdGgucm91bmQoeik7
CisKKyAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5tX2Zvcm1hdC5nZXRQaXhlbFNpemUoKTsKKyAg
ICB2YXIgb2Zmc2V0ID0geiAqIHRoaXMubV9zbGljZVBpdGNoICsgeSAqIHRoaXMubV9yb3dQaXRj
aCArIHggKiBwaXhlbFNpemU7CisgICAgdmFyIHBpeGVsUHRyID0gdGhpcy5nZXREYXRhUHRyKCk7
CisgICAgdmFyIHBpeGVsUHRyT2Zmc2V0ID0gb2Zmc2V0IC8gcGl4ZWxQdHIuQllURVNfUEVSX0VM
RU1FTlQ7CisKKyAgICBzd2l0Y2ggKHRoaXMubV9mb3JtYXQudHlwZSkgeworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzI0Xzg6CisgICAgICAgICAgICBz
d2l0Y2ggKHRoaXMubV9mb3JtYXQub3JkZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlM6IHJldHVybiAocGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID4+
IDgpICYgMHhmZjsKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkRTOiByZXR1cm4gcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdICYgMHhmZjsKKworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVF9VTlNJR05FRF9JTlRfMjRfOF9SRVY6Cisg
ICAgICAgICAgICBERV9BU1NFUlQodGhpcy5tX2Zvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5EUyk7CisgICAgICAgICAgICB2YXIgdTMyYXJyYXkgPSBuZXcgVWludDMyQXJy
YXkodGhpcy5tX2RhdGEsIG9mZnNldCArIHRoaXMubV9vZmZzZXQgKyA0LCAxKTsKKyAgICAgICAg
ICAgIHJldHVybiB1MzJhcnJheVswXSAmIDB4ZmY7CisKKyAgICAgICAgZGVmYXVsdDogeworICAg
ICAgICAgICAgaWYgKHRoaXMubV9mb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuUykKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1VGV4dHVyZS5jaGFubmVsVG9JbnQocGl4
ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdLCB0aGlzLm1fZm9ybWF0LnR5cGUpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgREVfQVNTRVJUKHRoaXMubV9mb3JtYXQub3JkZXIgPT0g
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFMpOworICAgICAgICAgICAgICAgIHZhciBzdGVuY2ls
Q2hhbm5lbEluZGV4ID0gMzsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1VGV4dHVyZS5jaGFu
bmVsVG9JbnQocGl4ZWxQdHJbc3RlbmNpbENoYW5uZWxJbmRleCArIHBpeGVsUHRyT2Zmc2V0XSwg
dGhpcy5tX2Zvcm1hdC50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBA
cGFyYW0ge251bWJlcj19IHoKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5D
b25zdFBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5nZXRQaXhEZXB0aCA9IGZ1bmN0aW9uKHgs
IHksIHopIHsKKyAgICBpZiAoeiA9PSBudWxsKQorICAgICAgICB6ID0gMDsKKyAgICBERV9BU1NF
UlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih4LCAwLCB0aGlzLm1fd2lkdGgpKTsKKyAgICBERV9BU1NF
UlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih5LCAwLCB0aGlzLm1faGVpZ2h0KSk7CisgICAgREVfQVNT
RVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeiwgMCwgdGhpcy5tX2RlcHRoKSk7CisKKyAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgcG9zaXRpb24gaXMgJ2ludGVnZXInCisgICAgeCA9IE1hdGgucm91
bmQoeCk7CisgICAgeSA9IE1hdGgucm91bmQoeSk7CisgICAgeiA9IE1hdGgucm91bmQoeik7CisK
KyAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5tX2Zvcm1hdC5nZXRQaXhlbFNpemUoKTsKKyAgICB2
YXIgb2Zmc2V0ID0geiAqIHRoaXMubV9zbGljZVBpdGNoICsgeSAqIHRoaXMubV9yb3dQaXRjaCAr
IHggKiBwaXhlbFNpemU7CisgICAgdmFyIHBpeGVsUHRyID0gdGhpcy5nZXREYXRhUHRyKCk7Cisg
ICAgdmFyIHBpeGVsUHRyT2Zmc2V0ID0gb2Zmc2V0IC8gcGl4ZWxQdHIuQllURVNfUEVSX0VMRU1F
TlQ7CisKKyAgICB2YXIgdWIgPSBmdW5jdGlvbihwaXhlbCwgb2Zmc2V0LCBjb3VudCkgeworICAg
ICAgICByZXR1cm4gKHBpeGVsID4+IG9mZnNldCkgJiAoKDEgPDwgY291bnQpIC0gMSk7CisgICAg
fTsKKyAgICB2YXIgbmIgPSBmdW5jdGlvbihwaXhlbCwgb2Zmc2V0LCBjb3VudCkgeworICAgICAg
ICByZXR1cm4gdGN1VGV4dHVyZS5jaGFubmVsVG9Ob3JtRmxvYXQodWIocGl4ZWwsIG9mZnNldCwg
Y291bnQpLCBjb3VudCk7CisgICAgfTsKKworICAgIC8vIFBhY2tlZCBmb3JtYXRzLgorICAgIHN3
aXRjaCAodGhpcy5tX2Zvcm1hdC50eXBlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5VTlNJR05FRF9JTlRfMjRfODoKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy5tX2Zv
cm1hdC5vcmRlcikgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuRDogLy8gZmFsbC10aHJvdWdoCisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5EUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5iKHBpeGVsUHRyW3Bp
eGVsUHRyT2Zmc2V0XSwgOCwgMjQpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdGN1VGV4dHVyZS5jaGFu
bmVsIG9yZGVyICcgKyB0aGlzLm1fZm9ybWF0Lm9yZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9B
VF9VTlNJR05FRF9JTlRfMjRfOF9SRVY6IHsKKyAgICAgICAgICAgIERFX0FTU0VSVCh0aGlzLm1f
Zm9ybWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTKTsKKyAgICAgICAgICAg
IHJldHVybiBwaXhlbFB0cltwaXhlbFB0ck9mZnNldF07CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIERFX0FTU0VSVCh0aGlz
Lm1fZm9ybWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgdGhpcy5tX2Zv
cm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUyk7CisgICAgICAgICAgICBy
ZXR1cm4gdGN1VGV4dHVyZS5jaGFubmVsVG9GbG9hdChwaXhlbFB0cltwaXhlbFB0ck9mZnNldF0s
IHRoaXMubV9mb3JtYXQudHlwZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBw
YXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXI9
fSB6CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBQaXhlbCB2YWx1ZSBhcyBWZWM0CisgKi8K
K3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuZ2V0UGl4ZWwgPSBm
dW5jdGlvbih4LCB5LCB6KSB7CisgICAgeiA9IHogfHwgMDsKKworICAgIERFX0FTU0VSVChkZU1h
dGguZGVJbkJvdW5kczMyKHgsIDAsIHRoaXMubV93aWR0aCkpOworICAgIERFX0FTU0VSVChkZU1h
dGguZGVJbkJvdW5kczMyKHksIDAsIHRoaXMubV9oZWlnaHQpKTsKKyAgICBERV9BU1NFUlQoZGVN
YXRoLmRlSW5Cb3VuZHMzMih6LCAwLCB0aGlzLm1fZGVwdGgpKTsKKworICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBwb3NpdGlvbiBpcyAnaW50ZWdlcicKKyAgICByZXR1cm4gdGhpcy5fZ2V0UGl4
ZWxJbnRlcm5hbChNYXRoLnJvdW5kKHgpLCBNYXRoLnJvdW5kKHkpLCBNYXRoLnJvdW5kKHopKTsK
K307CisKKy8vIE5PVEU6IGdldFBpeGVsIGhhcyBiZWVuIGJyb2tlbiBpbnRvIGdldFBpeGVsLCBf
Z2V0UGl4ZWxJbnRlcm5hbCwgYW5kIF9nZXRQaXhlbFBhY2tlZAorLy8gYmVjYXVzZSBoYXZpbmcg
dGhlbSBjb21iaW5lZCBwcmV2aW91c2x5IHdhcyBjYXVzaW5nIFY4IGRlcG90cwordGN1VGV4dHVy
ZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5fZ2V0UGl4ZWxJbnRlcm5hbCA9IGZ1
bmN0aW9uKHgsIHksIHopIHsKKyAgICAvLyBRdWljayBwYXRocworICAgIGlmICh6ID09IDApIHsK
KyAgICAgICAgaWYgKHRoaXMubV9yZ2JhOFZpZXcpIHsKKyAgICAgICAgICAgIHZhciBjb2xvciA9
IHRoaXMubV9yZ2JhOFZpZXcucmVhZCh4LCB5LCA0KTsKKyAgICAgICAgICAgIGNvbG9yWzBdIC89
IDI1NTsKKyAgICAgICAgICAgIGNvbG9yWzFdIC89IDI1NTsKKyAgICAgICAgICAgIGNvbG9yWzJd
IC89IDI1NTsKKyAgICAgICAgICAgIGNvbG9yWzNdIC89IDI1NTsKKyAgICAgICAgICAgIHJldHVy
biBjb2xvcjsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fcmdiOFZpZXcpIHsKKyAgICAgICAg
ICAgIHZhciBjb2xvciA9IHRoaXMubV9yZ2I4Vmlldy5yZWFkKHgsIHksIDMpOworICAgICAgICAg
ICAgY29sb3JbMF0gLz0gMjU1OworICAgICAgICAgICAgY29sb3JbMV0gLz0gMjU1OworICAgICAg
ICAgICAgY29sb3JbMl0gLz0gMjU1OworICAgICAgICAgICAgY29sb3JbM10gPSAxOworICAgICAg
ICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIHBpeGVsU2l6
ZSA9IHRoaXMubV9mb3JtYXQuZ2V0UGl4ZWxTaXplKCk7CisgICAgdmFyIG9mZnNldCA9IHogKiB0
aGlzLm1fc2xpY2VQaXRjaCArIHkgKiB0aGlzLm1fcm93UGl0Y2ggKyB4ICogcGl4ZWxTaXplOwor
CisgICAgdmFyIHBpeGVsUHRyID0gdGhpcy5nZXREYXRhUHRyKCk7CisgICAgdmFyIHBpeGVsUHRy
T2Zmc2V0ID0gb2Zmc2V0IC8gcGl4ZWxQdHIuQllURVNfUEVSX0VMRU1FTlQ7CisKKyAgICByZXR1
cm4gdGhpcy5fZ2V0UGl4ZWxQYWNrZWQocGl4ZWxQdHIsIHBpeGVsUHRyT2Zmc2V0KTsKK307CisK
K3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuX2dldFBpeGVsUGFj
a2VkID0gKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIHViID0gZnVuY3Rpb24ocGl4ZWwsIG9mZnNl
dCwgY291bnQpIHsKKyAgICAgICAgcmV0dXJuIChwaXhlbCA+PiBvZmZzZXQpICYgKCgxIDw8IGNv
dW50KSAtIDEpOworICAgIH07CisgICAgdmFyIG5iID0gZnVuY3Rpb24ocGl4ZWwsIG9mZnNldCwg
Y291bnQpIHsKKyAgICAgICAgdmFyIG1heFZhbCA9ICgxIDw8IGNvdW50KSAtIDE7CisgICAgICAg
IHJldHVybiAoKHBpeGVsID4+IG9mZnNldCkgJiAoKDEgPDwgY291bnQpIC0gMSkpIC8gbWF4VmFs
OworICAgIH07CisgICAgdmFyIGYxMSA9IHRjdUZsb2F0LmZsb2F0MTFUb051bWJlcjsKKyAgICB2
YXIgZjEwID0gdGN1RmxvYXQuZmxvYXQxMFRvTnVtYmVyOworCisgICAgcmV0dXJuIGZ1bmN0aW9u
IHRjdVRleHR1cmVfQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc19nZXRQaXhlbFBhY2tlZChwaXhlbFB0
ciwgcGl4ZWxQdHJPZmZzZXQpIHsKKyAgICAgICAgdmFyIHBpeGVsID0gcGl4ZWxQdHJbcGl4ZWxQ
dHJPZmZzZXRdOworCisgICAgICAgIC8vIFBhY2tlZCBmb3JtYXRzLgorICAgICAgICBzd2l0Y2gg
KHRoaXMubV9mb3JtYXQudHlwZSkgeworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOT1JNX1NIT1JUXzU2NTogcmV0dXJuIFtuYihwaXhlbCwgMTEsIDUpLCBuYihwaXhl
bCwgNSwgNiksIG5iKHBpeGVsLCAwLCA1KSwgMV07CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1OiByZXR1cm4gW25iKHBpeGVsLCAxMCwgNSks
IG5iKHBpeGVsLCA1LCA1KSwgbmIocGl4ZWwsIDAsIDUpLCAxXTsKKyAgICAgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80NDQ0OiByZXR1cm4gW25iKHBpeGVs
LCAxMiwgNCksIG5iKHBpeGVsLCA4LCA0KSwgbmIocGl4ZWwsIDQsIDQpLCBuYihwaXhlbCwgMCwg
NCldOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JU
XzU1NTE6IHJldHVybiBbbmIocGl4ZWwsIDExLCA1KSwgbmIocGl4ZWwsIDYsIDUpLCBuYihwaXhl
bCwgMSwgNSksIG5iKHBpeGVsLCAwLCAxKV07CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuVU5PUk1fSU5UXzEwMTAxMDogcmV0dXJuIFtuYihwaXhlbCwgMjIsIDEwKSwg
bmIocGl4ZWwsIDEyLCAxMCksIG5iKHBpeGVsLCAyLCAxMCksIDFdOworICAgICAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEwMTAyX1JFVjogcmV0dXJuIFtu
YihwaXhlbCwgMCwgMTApLCBuYihwaXhlbCwgMTAsIDEwKSwgbmIocGl4ZWwsIDIwLCAxMCksIG5i
KHBpeGVsLCAzMCwgMildOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOU0lHTkVEX0lOVF8xMDEwMTAyX1JFVjogcmV0dXJuIFt1YihwaXhlbCwgMCwgMTApLCB1Yihw
aXhlbCwgMTAsIDEwKSwgdWIocGl4ZWwsIDIwLCAxMCksIHViKHBpeGVsLCAzMCwgMildOworICAg
ICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF85OTlfRTVf
UkVWOiByZXR1cm4gdGN1VGV4dHVyZS51bnBhY2tSR0I5OTlFNShwaXhlbCk7CisKKyAgICAgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMjRfODoKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9mb3JtYXQub3JkZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gXG5vdGUgU3RlbmNpbCBpcyBhbHdheXMgaWdub3JlZC4KKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EOiByZXR1cm4gW25iKHBpeGVsLCA4
LCAyNCksIDAsIDAsIDFdOworICAgICAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLkRTOiByZXR1cm4gW25iKHBpeGVsLCA4LCAyNCksIDAsIDAsIDEgLyogKGZsb2F0
KXViKDAsIDgpICovXTsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0
XzhfUkVWOiB7CisgICAgICAgICAgICAgICAgREVfQVNTRVJUKHRoaXMubV9mb3JtYXQub3JkZXIg
PT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFMpOworICAgICAgICAgICAgICAgIC8vIFxub3Rl
IFN0ZW5jaWwgaXMgaWdub3JlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4gW3BpeGVsLCAwLCAw
LCAxXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOU0lHTkVEX0lOVF8xMUZfMTFGXzEwRl9SRVY6IHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gW2YxMSh1YihwaXhlbCwgMCwgMTEpKSwgZjExKHViKHBpeGVsLCAxMSwgMTEpKSwgZjEw
KHViKHBpeGVsLCAyMiwgMTApKSwgMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBH
ZW5lcmljIHBhdGguCisgICAgICAgIHZhciByZXN1bHQgPSBbMCwgMCwgMCwgMF07CisgICAgICAg
IHZhciBjaGFubmVsTWFwID0gdGN1VGV4dHVyZS5nZXRDaGFubmVsUmVhZE1hcCh0aGlzLm1fZm9y
bWF0Lm9yZGVyKTsKKyAgICAgICAgdmFyIGNoYW5uZWxTaXplID0gdGN1VGV4dHVyZS5nZXRDaGFu
bmVsU2l6ZSh0aGlzLm1fZm9ybWF0LnR5cGUpOworCisgICAgICAgIGZvciAodmFyIGMgPSAwOyBj
IDwgNDsgYysrKSB7CisgICAgICAgICAgICB2YXIgbWFwID0gY2hhbm5lbE1hcFtjXTsKKyAgICAg
ICAgICAgIGlmIChtYXAgPT0gdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8pCisgICAgICAgICAgICAg
ICAgcmVzdWx0W2NdID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hcCA9PSB0Y3VUZXh0dXJl
LmNoYW5uZWwuT05FKQorICAgICAgICAgICAgICAgIHJlc3VsdFtjXSA9IDE7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0W2NdID0gdGN1VGV4dHVyZS5jaGFubmVsVG9G
bG9hdChwaXhlbFB0clttYXAgKyBwaXhlbFB0ck9mZnNldF0sIHRoaXMubV9mb3JtYXQudHlwZSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07Cit9KSgpOworCisv
KioKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFt
IHtudW1iZXI9fSB6CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBQaXhlbCB2YWx1ZSBhcyBW
ZWM0CisgKi8KK3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuZ2V0
UGl4ZWxJbnQgPSBmdW5jdGlvbih4LCB5LCB6KSB7CisgICAgeiA9IHogfHwgMDsKKyAgICBERV9B
U1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih4LCAwLCB0aGlzLm1fd2lkdGgpKTsKKyAgICBERV9B
U1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMih5LCAwLCB0aGlzLm1faGVpZ2h0KSk7CisgICAgREVf
QVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeiwgMCwgdGhpcy5tX2RlcHRoKSk7CisKKyAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgcG9zaXRpb24gaXMgJ2ludGVnZXInCisgICAgeCA9IE1hdGgu
cm91bmQoeCk7CisgICAgeSA9IE1hdGgucm91bmQoeSk7CisgICAgeiA9IE1hdGgucm91bmQoeik7
CisKKyAgICAvLyBRdWljayBwYXRocworICAgIGlmICh6ID09IDApIHsKKyAgICAgICAgaWYgKHRo
aXMubV9yZ2JhOFZpZXcpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5tX3JnYmE4Vmlldy5yZWFk
KHgsIHksIDQpOworICAgICAgICBlbHNlIGlmICh0aGlzLm1fcmdiOFZpZXcpCisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5tX3JnYjhWaWV3LnJlYWQoeCwgeSwgMyk7CisgICAgfQorCisgICAgdmFy
IHBpeGVsU2l6ZSA9IHRoaXMubV9mb3JtYXQuZ2V0UGl4ZWxTaXplKCk7CisgICAgdmFyIG9mZnNl
dCA9IHogKiB0aGlzLm1fc2xpY2VQaXRjaCArIHkgKiB0aGlzLm1fcm93UGl0Y2ggKyB4ICogcGl4
ZWxTaXplOworCisgICAgdmFyIHBpeGVsUHRyID0gdGhpcy5nZXREYXRhUHRyKCk7CisgICAgdmFy
IHBpeGVsUHRyT2Zmc2V0ID0gb2Zmc2V0IC8gcGl4ZWxQdHIuQllURVNfUEVSX0VMRU1FTlQ7Cisg
ICAgdmFyIHBpeGVsID0gcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdOworCisgICAgdmFyIHViID0g
ZnVuY3Rpb24ocGl4ZWwsIG9mZnNldCwgY291bnQpIHsKKyAgICAgICAgcmV0dXJuIChwaXhlbCA+
PiBvZmZzZXQpICYgKCgxIDw8IGNvdW50KSAtIDEpOworICAgIH07CisKKyAgICAvLyBQYWNrZWQg
Zm9ybWF0cy4KKyAgICBzd2l0Y2ggKHRoaXMubV9mb3JtYXQudHlwZSkgeworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTY1OiByZXR1cm4gW3ViKHBpeGVs
LCAxMSwgNSksIHViKHBpeGVsLCA1LCA2KSwgdWIocGl4ZWwsIDAsIDUpLCAxXTsKKyAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JUXzU1NTogcmV0dXJuIFt1Yihw
aXhlbCwgMTAsIDUpLCB1YihwaXhlbCwgNSwgNSksIHViKHBpeGVsLCAwLCA1KSwgMV07CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80NDQ0OiByZXR1cm4g
W3ViKHBpeGVsLCAxMiwgNCksIHViKHBpeGVsLCA4LCA0KSwgdWIocGl4ZWwsIDQsIDQpLCB1Yihw
aXhlbCwgMCwgNCldOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1f
U0hPUlRfNTU1MTogcmV0dXJuIFt1YihwaXhlbCwgMTEsIDUpLCB1YihwaXhlbCwgNiwgNSksIHVi
KHBpeGVsLCAxLCA1KSwgdWIocGl4ZWwsIDAsIDEpXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEwMTA6IHJldHVybiBbdWIocGl4ZWwsIDIyLCAxMCks
IHViKHBpeGVsLCAxMiwgMTApLCB1YihwaXhlbCwgMiwgMTApLCAxXTsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEwMTAyX1JFVjogcmV0dXJuIFt1Yihw
aXhlbCwgMCwgMTApLCB1YihwaXhlbCwgMTAsIDEwKSwgdWIocGl4ZWwsIDIwLCAxMCksIHViKHBp
eGVsLCAzMCwgMildOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdO
RURfSU5UXzEwMTAxMDJfUkVWOiByZXR1cm4gW3ViKHBpeGVsLCAwLCAxMCksIHViKHBpeGVsLCAx
MCwgMTApLCB1YihwaXhlbCwgMjAsIDEwKSwgdWIocGl4ZWwsIDMwLCAyKV07CisKKyAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84OgorICAgICAgICAg
ICAgc3dpdGNoICh0aGlzLm1fZm9ybWF0Lm9yZGVyKSB7CisgICAgICAgICAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EOiByZXR1cm4gW3ViKHBpeGVsLCA4LCAyNCksIDAsIDAs
IDFdOworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUzogcmV0
dXJuIFswLCAwLCAwLCB1YihwaXhlbCwgOCwgMjQpXTsKKyAgICAgICAgICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOiByZXR1cm4gW3ViKHBpeGVsLCA4LCAyNCksIDAsIDAs
IHViKHBpeGVsLCAwLCA4KV07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0XzhfUkVWOiB7Cisg
ICAgICAgICAgICBERV9BU1NFUlQodGhpcy5tX2Zvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5EUyk7CisgICAgICAgICAgICB2YXIgdTMyYXJyYXkgPSBuZXcgVWludDMyQXJy
YXkodGhpcy5tX2RhdGEsIHRoaXMubV9vZmZzZXQgKyBvZmZzZXQgKyA0LCAxKTsKKyAgICAgICAg
ICAgIHJldHVybiBbcGl4ZWwsIDAsIDAsIHViKHUzMmFycmF5WzBdLCAwLCA4KV07CisgICAgICAg
IH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Ly8gR2VuZXJpYyBwYXRoLgorICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICByZXN1bHQubGVuZ3Ro
ID0gNDsKKyAgICB2YXIgY2hhbm5lbE1hcCA9IHRjdVRleHR1cmUuZ2V0Q2hhbm5lbFJlYWRNYXAo
dGhpcy5tX2Zvcm1hdC5vcmRlcik7CisgICAgdmFyIGNoYW5uZWxTaXplID0gdGN1VGV4dHVyZS5n
ZXRDaGFubmVsU2l6ZSh0aGlzLm1fZm9ybWF0LnR5cGUpOworCisgICAgZm9yICh2YXIgYyA9IDA7
IGMgPCA0OyBjKyspIHsKKyAgICAgICAgdmFyIG1hcCA9IGNoYW5uZWxNYXBbY107CisgICAgICAg
IGlmIChtYXAgPT0gdGN1VGV4dHVyZS5jaGFubmVsLlpFUk8pCisgICAgICAgICAgICByZXN1bHRb
Y10gPSAwOworICAgICAgICBlbHNlIGlmIChtYXAgPT0gdGN1VGV4dHVyZS5jaGFubmVsLk9ORSkK
KyAgICAgICAgICAgIHJlc3VsdFtjXSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
c3VsdFtjXSA9IHRjdVRleHR1cmUuY2hhbm5lbFRvSW50KHBpeGVsUHRyW21hcCArIHBpeGVsUHRy
T2Zmc2V0XSwgdGhpcy5tX2Zvcm1hdC50eXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICog
QHBhcmFtIHs/dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSBmaWx0ZXIKKyAqIEBwYXJhbSB7bnVtYmVy
fSBzCisgKiBAcGFyYW0ge251bWJlcn0gdAorICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIChpbnRl
Z2VyKQorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gU2FtcGxlIGNvbG9yCisgKi8KK3RjdVRl
eHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuc2FtcGxlMkQgPSBmdW5jdGlv
bihzYW1wbGVyLCBmaWx0ZXIsIHMsIHQsIGRlcHRoKSB7CisgICAgREVfQVNTRVJUKGRlTWF0aC5k
ZUluQm91bmRzMzIoZGVwdGgsIDAsIHRoaXMubV9kZXB0aCkpOworCisgICAgLy8gTm9uLW5vcm1h
bGl6ZWQgY29vcmRpbmF0ZXMuCisgICAgdmFyIHUgPSBzOworICAgIHZhciB2ID0gdDsKKworICAg
IGlmIChzYW1wbGVyLm5vcm1hbGl6ZWRDb29yZHMpIHsKKyAgICAgICAgdSA9IHRjdVRleHR1cmUu
dW5ub3JtYWxpemUoc2FtcGxlci53cmFwUywgcywgdGhpcy5tX3dpZHRoKTsKKyAgICAgICAgdiA9
IHRjdVRleHR1cmUudW5ub3JtYWxpemUoc2FtcGxlci53cmFwVCwgdCwgdGhpcy5tX2hlaWdodCk7
CisgICAgfQorCisgICAgc3dpdGNoIChmaWx0ZXIpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkZpbHRlck1vZGUuTkVBUkVTVDogcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTmVhcmVzdDJEKHRo
aXMsIHNhbXBsZXIsIHUsIHYsIGRlcHRoKTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRl
ck1vZGUuTElORUFSOiByZXR1cm4gdGN1VGV4dHVyZS5zYW1wbGVMaW5lYXIyRCh0aGlzLCBzYW1w
bGVyLCB1LCB2LCBkZXB0aCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0ludmFsaWQgZmlsdGVyOicgKyBmaWx0ZXIpOworICAgIH0KKyAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1VuaW1wbGVtZW50ZWQnKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0
dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7P3RjdVRleHR1cmUuRmlsdGVyTW9kZX0g
ZmlsdGVyCisgKiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gb2Zmc2V0CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBT
YW1wbGUgY29sb3IKKyAqLwordGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzLnByb3Rv
dHlwZS5zYW1wbGUyRE9mZnNldCA9IGZ1bmN0aW9uKHNhbXBsZXIsIGZpbHRlciwgcywgdCwgb2Zm
c2V0KSB7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIob2Zmc2V0WzJdLCAwLCB0
aGlzLm1fZGVwdGgpKTsKKworICAgIC8vIE5vbi1ub3JtYWxpemVkIGNvb3JkaW5hdGVzLgorICAg
IHZhciB1ID0gczsKKyAgICB2YXIgdiA9IHQ7CisKKyAgICBpZiAoc2FtcGxlci5ub3JtYWxpemVk
Q29vcmRzKSB7CisgICAgICAgIHUgPSB0Y3VUZXh0dXJlLnVubm9ybWFsaXplKHNhbXBsZXIud3Jh
cFMsIHMsIHRoaXMubV93aWR0aCk7CisgICAgICAgIHYgPSB0Y3VUZXh0dXJlLnVubm9ybWFsaXpl
KHNhbXBsZXIud3JhcFQsIHQsIHRoaXMubV9oZWlnaHQpOworICAgIH0KKworICAgIHN3aXRjaCAo
ZmlsdGVyKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q6IHJl
dHVybiB0Y3VUZXh0dXJlLnNhbXBsZU5lYXJlc3QyRCh0aGlzLCBzYW1wbGVyLCB1LCB2LCBvZmZz
ZXQpOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVI6IHJldHVybiB0
Y3VUZXh0dXJlLnNhbXBsZUxpbmVhcjJEKHRoaXMsIHNhbXBsZXIsIHUsIHYsIG9mZnNldCk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmls
dGVyOicgKyBmaWx0ZXIpOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJl
LlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7P3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmls
dGVyCisgKiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBwYXJh
bSB7bnVtYmVyfSByCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldAorICogQHJldHVy
biB7QXJyYXk8bnVtYmVyPn0gU2FtcGxlIGNvbG9yCisgKi8KK3RjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuc2FtcGxlM0RPZmZzZXQgPSBmdW5jdGlvbihzYW1wbGVy
LCBmaWx0ZXIsIHMsIHQsIHIsIG9mZnNldCkgeworICAgIC8vIE5vbi1ub3JtYWxpemVkIGNvb3Jk
aW5hdGVzLgorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdSA9IHM7CisgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB2ID0gdDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHcgPSByOworCisgICAgaWYgKHNhbXBsZXIubm9ybWFsaXplZENvb3JkcykgeworICAgICAgICB1
ID0gdGN1VGV4dHVyZS51bm5vcm1hbGl6ZShzYW1wbGVyLndyYXBTLCBzLCB0aGlzLm1fd2lkdGgp
OworICAgICAgICB2ID0gdGN1VGV4dHVyZS51bm5vcm1hbGl6ZShzYW1wbGVyLndyYXBULCB0LCB0
aGlzLm1faGVpZ2h0KTsKKyAgICAgICAgdyA9IHRjdVRleHR1cmUudW5ub3JtYWxpemUoc2FtcGxl
ci53cmFwUiwgciwgdGhpcy5tX2RlcHRoKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZpbHRlcikg
eworICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOiByZXR1cm4gdGN1
VGV4dHVyZS5zYW1wbGVOZWFyZXN0M0QodGhpcywgc2FtcGxlciwgdSwgdiwgdywgb2Zmc2V0KTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSOiByZXR1cm4gdGN1VGV4
dHVyZS5zYW1wbGVMaW5lYXIzRCh0aGlzLCBzYW1wbGVyLCB1LCB2LCB3LCBvZmZzZXQpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbHRl
cjonICsgZmlsdGVyKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5T
YW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVy
CisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgKiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFt
IHtudW1iZXJ9IHQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gb2Zmc2V0CisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5
cGUuc2FtcGxlMkRDb21wYXJlID0gZnVuY3Rpb24oc2FtcGxlciwgZmlsdGVyLCByZWYsIHMsIHQs
IG9mZnNldCkgeworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKG9mZnNldFsyXSwg
MCwgdGhpcy5tX2RlcHRoKSk7CisKKyAgICAvLyBGb3JtYXQgaW5mb3JtYXRpb24gZm9yIGNvbXBh
cmlzb24gZnVuY3Rpb24KKyAgICB2YXIgaXNGaXhlZFBvaW50RGVwdGggPSB0Y3VUZXh0dXJlLmlz
Rml4ZWRQb2ludERlcHRoVGV4dHVyZUZvcm1hdCh0aGlzLm1fZm9ybWF0KTsKKworICAgIC8vIE5v
bi1ub3JtYWxpemVkIGNvb3JkaW5hdGVzLgorICAgIHZhciB1ID0gczsKKyAgICB2YXIgdiA9IHQ7
CisKKyAgICBpZiAoc2FtcGxlci5ub3JtYWxpemVkQ29vcmRzKSB7CisgICAgICAgIHUgPSB0Y3VU
ZXh0dXJlLnVubm9ybWFsaXplKHNhbXBsZXIud3JhcFMsIHMsIHRoaXMubV93aWR0aCk7CisgICAg
ICAgIHYgPSB0Y3VUZXh0dXJlLnVubm9ybWFsaXplKHNhbXBsZXIud3JhcFQsIHQsIHRoaXMubV9o
ZWlnaHQpOworICAgIH0KKworICAgIHN3aXRjaCAoZmlsdGVyKSB7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q6IHJldHVybiB0Y3VUZXh0dXJlLmV4ZWNDb21wYXJl
KHRjdVRleHR1cmUuc2FtcGxlTmVhcmVzdDJEKHRoaXMsIHNhbXBsZXIsIHUsIHYsIG9mZnNldCks
IHNhbXBsZXIuY29tcGFyZSwgc2FtcGxlci5jb21wYXJlQ2hhbm5lbCwgcmVmLCBpc0ZpeGVkUG9p
bnREZXB0aCk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUjogcmV0
dXJuIHRjdVRleHR1cmUuc2FtcGxlTGluZWFyMkRDb21wYXJlKHRoaXMsIHNhbXBsZXIsIHJlZiwg
dSwgdiwgb2Zmc2V0LCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9
Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBA
cGFyYW0ge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gZmlsdGVyCisgKiBAcGFyYW0ge251bWJlcn0g
cworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBwYXJhbSB7bnVtYmVyfSByCisgKiBAcmV0dXJu
IHtBcnJheTxudW1iZXI+fSBTYW1wbGUgY29sb3IKKyAqLwordGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzLnByb3RvdHlwZS5zYW1wbGUzRCA9IGZ1bmN0aW9uKHNhbXBsZXIsIGZpbHRl
ciwgcywgdCwgcikgeworICAgIC8vIE5vbi1ub3JtYWxpemVkIGNvb3JkaW5hdGVzLgorICAgIHZh
ciB1ID0gczsKKyAgICB2YXIgdiA9IHQ7CisgICAgdmFyIHcgPSByOworCisgICAgaWYgKHNhbXBs
ZXIubm9ybWFsaXplZENvb3JkcykgeworICAgICAgICB1ID0gdGN1VGV4dHVyZS51bm5vcm1hbGl6
ZShzYW1wbGVyLndyYXBTLCBzLCB0aGlzLm1fd2lkdGgpOworICAgICAgICB2ID0gdGN1VGV4dHVy
ZS51bm5vcm1hbGl6ZShzYW1wbGVyLndyYXBULCB0LCB0aGlzLm1faGVpZ2h0KTsKKyAgICAgICAg
dyA9IHRjdVRleHR1cmUudW5ub3JtYWxpemUoc2FtcGxlci53cmFwUiwgciwgdGhpcy5tX2RlcHRo
KTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZpbHRlcikgeworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuRmlsdGVyTW9kZS5ORUFSRVNUOiByZXR1cm4gdGN1VGV4dHVyZS5zYW1wbGVOZWFyZXN0M0Qo
dGhpcywgc2FtcGxlciwgdSwgdiwgdyk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5GaWx0ZXJN
b2RlLkxJTkVBUjogcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGluZWFyM0QodGhpcywgc2FtcGxl
ciwgdSwgdiwgdyk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0ludmFsaWQgZmlsdGVyOicgKyBmaWx0ZXIpOworICAgIH0KKyAgICB0aHJvdyBuZXcgRXJy
b3IoJ1VuaW1wbGVtZW50ZWQnKTsKK307CisKKyAgICAvKiBUT0RPOiBkbyB3ZSBuZWVkIGFueSBv
ZiB0aGVzZT8gKi8geworICAgICAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICAv
LyBWZWN0b3I8VCwgND4gZ2V0UGl4ZWxUIChpbnQgeCwgaW50IHksIGludCB6ID0gMCkgY29uc3Q7
CisKKyAgICAgICAgLy8gVmVjNCBzYW1wbGUzRCAoY29uc3QgdGN1VGV4dHVyZS5TYW1wbGVyJiBz
YW1wbGVyLCB0Y3VUZXh0dXJlLnRjdVRleHR1cmUuU2FtcGxlci50Y3VUZXh0dXJlLkZpbHRlck1v
ZGUgZmlsdGVyLCBmbG9hdCBzLCBmbG9hdCB0LCBmbG9hdCByKSBjb25zdDsKKworICAgICAgICAv
LyBWZWM0IHNhbXBsZTJET2Zmc2V0IChjb25zdCB0Y3VUZXh0dXJlLlNhbXBsZXImIHNhbXBsZXIs
IHRjdVRleHR1cmUuU2FtcGxlcjo6dGN1VGV4dHVyZS5GaWx0ZXJNb2RlIGZpbHRlciwgZmxvYXQg
cywgZmxvYXQgdCwgY29uc3QgSVZlYzMmIG9mZnNldCkgY29uc3Q7CisgICAgICAgIC8vIFZlYzQg
c2FtcGxlM0RPZmZzZXQgKGNvbnN0IHRjdVRleHR1cmUuU2FtcGxlciYgc2FtcGxlciwgdGN1VGV4
dHVyZS5TYW1wbGVyOjp0Y3VUZXh0dXJlLkZpbHRlck1vZGUgZmlsdGVyLCBmbG9hdCBzLCBmbG9h
dCB0LCBmbG9hdCByLCBjb25zdCBJVmVjMyYgb2Zmc2V0KSBjb25zdDsKKworICAgICAgICAvLyBm
bG9hdCBzYW1wbGUyRENvbXBhcmUgKGNvbnN0IHRjdVRleHR1cmUuU2FtcGxlciYgc2FtcGxlciwg
dGN1VGV4dHVyZS5TYW1wbGVyOjp0Y3VUZXh0dXJlLkZpbHRlck1vZGUgZmlsdGVyLCBmbG9hdCBy
ZWYsIGZsb2F0IHMsIGZsb2F0IHQsIGNvbnN0IElWZWMzJiBvZmZzZXQpIGNvbnN0OworICAgIH07
CisKKy8qKiBDb21tb24gdHlwZSBsaW1pdHMKKyAqCisgKi8KK3RjdVRleHR1cmUuZGVUeXBlcyA9
IHsKKyAgICBkZUludDg6IHttaW46IC0oMSA8PCA3KSwgbWF4OiAoMSA8PCA3KSAtIDF9LAorICAg
IGRlSW50MTY6IHttaW46IC0oMSA8PCAxNSksIG1heDogKDEgPDwgMTUpIC0gMX0sCisgICAgZGVJ
bnQzMjoge21pbjogLTIxNDc0ODM2NDgsIG1heDogMjE0NzQ4MzY0N30sCisgICAgZGVVaW50ODog
e21pbjogMCwgbWF4OiAoMSA8PCA4KSAtIDF9LAorICAgIGRlVWludDE2OiB7bWluOiAwLCBtYXg6
ICgxIDw8IDE2KSAtIDF9LAorICAgIGRlVWludDMyOiB7bWluOiAwLCBtYXg6IDQyOTQ5NjcyOTV9
Cit9OworCisvKioKKyAqIFJvdW5kIHRvIGV2ZW4gYW5kIHNhdHVyYXRlCisgKiBAcGFyYW0ge3tt
YXg6IG51bWJlciwgbWluOiBudW1iZXJ9fSBkZVR5cGUgZnJvbSB0Y3VUZXh0dXJlLmRlVHlwZXMK
KyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VU
ZXh0dXJlLmNvbnZlcnRTYXRSdGUgPSBmdW5jdGlvbihkZVR5cGUsIHZhbHVlKSB7CisgICAgdmFy
IG1pblZhbCA9IGRlVHlwZS5taW47CisgICAgdmFyIG1heFZhbCA9IGRlVHlwZS5tYXg7CisgICAg
dmFyIGZsb29yID0gTWF0aC5mbG9vcih2YWx1ZSk7CisgICAgdmFyIGZyYWMgPSB2YWx1ZSAtIGZs
b29yOworICAgIGlmIChmcmFjID09IDAuNSkgeworICAgICAgICBpZiAoZmxvb3IgJSAyICE9IDAp
CisgICAgICAgICAgICBmbG9vciArPSAxOworICAgIH0gZWxzZSBpZiAoZnJhYyA+IDAuNSkgewor
ICAgICAgICBmbG9vciArPSAxOworICAgIH0KKworICAgIHJldHVybiBNYXRoLm1heChtaW5WYWws
IE1hdGgubWluKG1heFZhbCwgZmxvb3IpKTsKK307CisKKy8qKgorICogU2F0dXJhdGUgdmFsdWUg
dG8gdHlwZSByYW5nZQorICogQHBhcmFtIHsge21heDogbnVtYmVyLCBtaW46IG51bWJlcn19IGRl
VHlwZSBmcm9tIHRjdVRleHR1cmUuZGVUeXBlcworICogQHBhcmFtIHtudW1iZXJ9IHNyYworICog
QHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJlLmNvbnZlcnRTYXQgPSBmdW5jdGlvbihk
ZVR5cGUsIHNyYykgeworICAgIHZhciBtaW5WYWwgPSBkZVR5cGUubWluOworICAgIHZhciBtYXhW
YWwgPSBkZVR5cGUubWF4OworICAgIGlmIChzcmMgPCBtaW5WYWwpCisgICAgICAgIHJldHVybiBt
aW5WYWw7CisgICAgZWxzZSBpZiAoc3JjID4gbWF4VmFsKQorICAgICAgICByZXR1cm4gbWF4VmFs
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHNyYzsKK307CisKKy8qKgorICogQHBhcmFtIHtu
dW1iZXJ9IHNyYyBJbnB1dCBpbnRlZ2VyIHZhbHVlCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ2hh
bm5lbFR5cGV9IHR5cGUKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5pbnRU
b0NoYW5uZWwgPSBmdW5jdGlvbihzcmMsIHR5cGUpIHsKKyAgICB2YXIgZHN0OworICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5U
ODogZHN0ID0gdGN1VGV4dHVyZS5jb252ZXJ0U2F0KHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDgs
IHNyYyk7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1f
SU5UMTY6IGRzdCA9IHRjdVRleHR1cmUuY29udmVydFNhdCh0Y3VUZXh0dXJlLmRlVHlwZXMuZGVJ
bnQxNiwgc3JjKTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
Tk9STV9JTlQ4OiBkc3QgPSB0Y3VUZXh0dXJlLmNvbnZlcnRTYXQodGN1VGV4dHVyZS5kZVR5cGVz
LmRlVWludDgsIHNyYyk7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuVU5PUk1fSU5UMTY6IGRzdCA9IHRjdVRleHR1cmUuY29udmVydFNhdCh0Y3VUZXh0dXJlLmRl
VHlwZXMuZGVVaW50MTYsIHNyYyk7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuU0lHTkVEX0lOVDg6IGRzdCA9IHRjdVRleHR1cmUuY29udmVydFNhdCh0Y3VUZXh0
dXJlLmRlVHlwZXMuZGVJbnQ4LCBzcmMpOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNjogZHN0ID0gdGN1VGV4dHVyZS5jb252ZXJ0U2F0KHRj
dVRleHR1cmUuZGVUeXBlcy5kZUludDE2LCBzcmMpOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQzMjogZHN0ID0gdGN1VGV4dHVyZS5jb252ZXJ0
U2F0KHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDMyLCBzcmMpOyBicmVhazsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDg6IGRzdCA9IHRjdVRleHR1cmUu
Y29udmVydFNhdCh0Y3VUZXh0dXJlLmRlVHlwZXMuZGVVaW50OCwgc3JjKTsgYnJlYWs7CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNjogZHN0ID0gdGN1
VGV4dHVyZS5jb252ZXJ0U2F0KHRjdVRleHR1cmUuZGVUeXBlcy5kZVVpbnQxNiwgc3JjKTsgYnJl
YWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQzMjog
ZHN0ID0gdGN1VGV4dHVyZS5jb252ZXJ0U2F0KHRjdVRleHR1cmUuZGVUeXBlcy5kZVVpbnQzMiwg
c3JjKTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5IQUxGX0ZM
T0FUOiBkc3QgPSB0Y3VGbG9hdC5udW1iZXJUb0hhbGZGbG9hdChzcmMpOyBicmVhazsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUOiBkc3QgPSBzcmM7IGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6
ZWQgdGN1VGV4dHVyZS5jaGFubmVsIHR5cGU6ICcgKyB0eXBlKTsKKyAgICB9CisgICAgcmV0dXJu
IGRzdDsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHNyYworICogQHBhcmFtIHtudW1i
ZXJ9IGJpdHMKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5ub3JtRmxvYXRU
b0NoYW5uZWwgPSBmdW5jdGlvbihzcmMsIGJpdHMpIHsKKyAgICB2YXIgbWF4VmFsID0gKDEgPDwg
Yml0cykgLSAxOworICAgIHZhciBpbnRWYWwgPSB0Y3VUZXh0dXJlLmNvbnZlcnRTYXRSdGUodGN1
VGV4dHVyZS5kZVR5cGVzLmRlVWludDMyLCBzcmMgKiBtYXhWYWwpOworICAgIHJldHVybiBNYXRo
Lm1pbihtYXhWYWwsIGludFZhbCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBzcmMK
KyAqIEBwYXJhbSB7bnVtYmVyfSBiaXRzCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3RjdVRl
eHR1cmUudWludFRvQ2hhbm5lbCA9IGZ1bmN0aW9uKHNyYywgYml0cykgeworICAgIHZhciBtYXhW
YWwgPSAoMSA8PCBiaXRzKSAtIDE7CisgICAgcmV0dXJuIE1hdGgubWluKG1heFZhbCwgc3JjKTsK
K307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHNyYworICogQHBhcmFtIHt0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlfSB0eXBlCisgKiBAcmV0dXJuIHtudW1iZXJ9IENvbnZlcnRlZCBzcmMgY29s
b3IgdmFsdWUKKyAqLwordGN1VGV4dHVyZS5mbG9hdFRvQ2hhbm5lbCA9IGZ1bmN0aW9uKHNyYywg
dHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuU05PUk1fSU5UODogcmV0dXJuIHRjdVRleHR1cmUuY29udmVydFNhdFJ0ZSh0Y3VU
ZXh0dXJlLmRlVHlwZXMuZGVJbnQ4LCBzcmMgKiAxMjcpOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UMTY6IHJldHVybiB0Y3VUZXh0dXJlLmNvbnZlcnRTYXRS
dGUodGN1VGV4dHVyZS5kZVR5cGVzLmRlSW50MTYsIHNyYyAqIDMyNzY3KTsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDMyOiByZXR1cm4gdGN1VGV4dHVyZS5j
b252ZXJ0U2F0UnRlKHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDMyLCBzcmMgKiAyMTQ3NDgzNjQ3
KTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDg6IHJldHVy
biB0Y3VUZXh0dXJlLmNvbnZlcnRTYXRSdGUodGN1VGV4dHVyZS5kZVR5cGVzLmRlVWludDgsIHNy
YyAqIDI1NSk7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQx
NjogcmV0dXJuIHRjdVRleHR1cmUuY29udmVydFNhdFJ0ZSh0Y3VUZXh0dXJlLmRlVHlwZXMuZGVV
aW50MTYsIHNyYyAqIDY1NTM1KTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOT1JNX0lOVDMyOiByZXR1cm4gdGN1VGV4dHVyZS5jb252ZXJ0U2F0UnRlKHRjdVRleHR1cmUu
ZGVUeXBlcy5kZVVpbnQzMiwgc3JjICogNDI5NDk2NzI5NSk7CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UODogcmV0dXJuIHRjdVRleHR1cmUuY29udmVydFNh
dFJ0ZSh0Y3VUZXh0dXJlLmRlVHlwZXMuZGVJbnQ4LCBzcmMpOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDE2OiByZXR1cm4gdGN1VGV4dHVyZS5jb252ZXJ0
U2F0UnRlKHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDE2LCBzcmMpOworICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyOiByZXR1cm4gdGN1VGV4dHVyZS5jb252
ZXJ0U2F0UnRlKHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDMyLCBzcmMpOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UODogcmV0dXJuIHRjdVRleHR1cmUu
Y29udmVydFNhdFJ0ZSh0Y3VUZXh0dXJlLmRlVHlwZXMuZGVVaW50OCwgc3JjKTsKKyAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2OiByZXR1cm4gdGN1VGV4
dHVyZS5jb252ZXJ0U2F0UnRlKHRjdVRleHR1cmUuZGVUeXBlcy5kZVVpbnQxNiwgc3JjKTsKKyAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyOiByZXR1cm4g
dGN1VGV4dHVyZS5jb252ZXJ0U2F0UnRlKHRjdVRleHR1cmUuZGVUeXBlcy5kZVVpbnQzMiwgc3Jj
KTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQ6IHJldHVy
biB0Y3VGbG9hdC5udW1iZXJUb0hhbGZGbG9hdChzcmMpOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6IHJldHVybiBzcmM7CisgICAgfQorICAgIHRocm93IG5ldyBF
cnJvcignVW5yZWNvZ25pemVkIHR5cGUgJyArIHR5cGUpOworfTsKKworLyoqCisgKiBcYnJpZWYg
UmVhZC13cml0ZSBwaXhlbCBkYXRhIGFjY2VzcworICoKKyAqIFRoaXMgY2xhc3MgZXh0ZW5kcyBy
ZWFkLW9ubHkgYWNjZXNzIG9iamVjdCBieSBwcm92aWRpbmcgd3JpdGUgZnVuY3Rpb25hbGl0eS4K
KyAqCisgKiBcbm90ZSB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzIG1heSBub3QgaGF2ZSBh
bnkgZGF0YSBtZW1iZXJzIG5vciBhZGQgYW55CisgKiAgICAgICAgIHZpcnR1YWwgZnVuY3Rpb25z
LiBJdCBtdXN0IGJlIHBvc3NpYmxlIHRvIHJlaW50ZXJwcmV0X2Nhc3Q8PgorICogICAgICAgICB0
Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzIHRvIHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZl
ckFjY2Vzcy4KKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge3RjdVRleHR1cmUuQ29uc3RQ
aXhlbEJ1ZmZlckFjY2Vzc30KKyAqCisgKi8KK3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3Mg
PSBmdW5jdGlvbihkZXNjcmlwdG9yKSB7CisgICAgdGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVy
QWNjZXNzLmNhbGwodGhpcywgZGVzY3JpcHRvcik7Cit9OworCit0Y3VUZXh0dXJlLlBpeGVsQnVm
ZmVyQWNjZXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzLnByb3RvdHlwZSk7Cit0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3M7CisKKy8q
KgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvciBWZWM0IGNvbG9yIHRvIHNldAorICog
QHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBAcGFyYW0ge251bWJl
cj19IHoKKyAqLwordGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuc2V0UGl4
ZWwgPSBmdW5jdGlvbihjb2xvciwgeCwgeSwgeikgeworICAgIHogPSB6IHx8IDA7CisgICAgREVf
QVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeCwgMCwgdGhpcy5tX3dpZHRoKSk7CisgICAgREVf
QVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeSwgMCwgdGhpcy5tX2hlaWdodCkpOworICAgIERF
X0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHosIDAsIHRoaXMubV9kZXB0aCkpOworCisgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uIGlzICdpbnRlZ2VyJworICAgIHRoaXMuX3Nl
dFBpeGVsSW50ZXJuYWwoY29sb3IsIE1hdGgucm91bmQoeCksIE1hdGgucm91bmQoeSksIE1hdGgu
cm91bmQoeikpOworfTsKKworLy8gTk9URTogc2V0UGl4ZWwgaGFzIGJlZW4gYnJva2VuIGludG8g
c2V0UGl4ZWwsIF9zZXRQaXhlbEludGVybmFsLCBhbmQgX3NldFBpeGVsUGFja2VkCisvLyBiZWNh
dXNlIGhhdmluZyB0aGVtIGNvbWJpbmVkIHByZXZpb3VzbHkgd2FzIGNhdXNpbmcgVjggZGVwb3Rz
Cit0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5fc2V0UGl4ZWxJbnRlcm5h
bCA9IGZ1bmN0aW9uKGNvbG9yLCB4LCB5LCB6KSB7CisgICAgLy8gUXVpY2sgcGF0aHMKKyAgICBp
ZiAoeiA9PSAwKSB7CisgICAgICAgIGlmICh0aGlzLm1fcmdiYThWaWV3KSB7CisgICAgICAgICAg
ICBjb2xvciA9IGRlTWF0aC50b0lWZWMoY29sb3IpOworICAgICAgICAgICAgdGhpcy5tX3JnYmE4
Vmlldy53cml0ZSh4LCB5LCBjb2xvciwgNCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0gZWxzZSBpZiAodGhpcy5tX3JnYjhWaWV3KSB7CisgICAgICAgICAgICBjb2xvciA9IGRlTWF0
aC50b0lWZWMoY29sb3IpOworICAgICAgICAgICAgdGhpcy5tX3JnYjhWaWV3LndyaXRlKHgsIHks
IGNvbG9yLCAzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZhciBwaXhlbFNpemUgPSB0aGlzLm1fZm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgIHZhciBv
ZmZzZXQgPSB6ICogdGhpcy5tX3NsaWNlUGl0Y2ggKyB5ICogdGhpcy5tX3Jvd1BpdGNoICsgeCAq
IHBpeGVsU2l6ZTsKKyAgICB2YXIgcGl4ZWxQdHIgPSB0aGlzLmdldERhdGFQdHIoKTsKKyAgICB2
YXIgcGl4ZWxQdHJPZmZzZXQgPSBvZmZzZXQgLyBwaXhlbFB0ci5CWVRFU19QRVJfRUxFTUVOVDsK
KworICAgIHJldHVybiB0aGlzLl9zZXRQaXhlbFBhY2tlZChjb2xvciwgcGl4ZWxQdHIsIHBpeGVs
UHRyT2Zmc2V0KTsKK307CisKK3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBl
Ll9zZXRQaXhlbFBhY2tlZCA9IChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHBuID0gZnVuY3Rpb24o
dmFsLCBvZmZzLCBiaXRzKSB7CisgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLm5vcm1GbG9hdFRv
Q2hhbm5lbCh2YWwsIGJpdHMpIDw8IG9mZnM7CisgICAgfTsKKworICAgIHZhciBwdSA9IGZ1bmN0
aW9uKHZhbCwgb2ZmcywgYml0cykgeworICAgICAgICByZXR1cm4gdGN1VGV4dHVyZS51aW50VG9D
aGFubmVsKHZhbCwgYml0cykgPDwgb2ZmczsKKyAgICB9OworCisgICAgcmV0dXJuIGZ1bmN0aW9u
IHRjdVRleHR1cmVfUGl4ZWxCdWZmZXJBY2Nlc3Nfc2V0UGl4ZWxQYWNrZWQoY29sb3IsIHBpeGVs
UHRyLCBwaXhlbFB0ck9mZnNldCkgeworICAgICAgICAvLyBQYWNrZWQgZm9ybWF0cy4KKyAgICAg
ICAgc3dpdGNoICh0aGlzLm1fZm9ybWF0LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF81NjU6IHBpeGVsUHRyW3BpeGVsUHRyT2Zmc2V0
XSA9IHBuKGNvbG9yWzBdLCAxMSwgNSkgfCBwbihjb2xvclsxXSwgNSwgNikgfCBwbihjb2xvclsy
XSwgMCwgNSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOT1JNX1NIT1JUXzU1NTogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oY29sb3JbMF0s
IDEwLCA1KSB8IHBuKGNvbG9yWzFdLCA1LCA1KSB8IHBuKGNvbG9yWzJdLCAwLCA1KTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNDQ0
NDogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oY29sb3JbMF0sIDEyLCA0KSB8IHBuKGNv
bG9yWzFdLCA4LCA0KSB8IHBuKGNvbG9yWzJdLCA0LCA0KSB8IHBuKGNvbG9yWzNdLCAwLCA0KTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hP
UlRfNTU1MTogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oY29sb3JbMF0sIDExLCA1KSB8
IHBuKGNvbG9yWzFdLCA2LCA1KSB8IHBuKGNvbG9yWzJdLCAxLCA1KSB8IHBuKGNvbG9yWzNdLCAw
LCAxKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5P
Uk1fSU5UXzEwMTAxMDogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oY29sb3JbMF0sIDIy
LCAxMCkgfCBwbihjb2xvclsxXSwgMTIsIDEwKSB8IHBuKGNvbG9yWzJdLCAyLCAxMCk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEw
MTAyX1JFVjogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oY29sb3JbMF0sIDAsIDEwKSB8
IHBuKGNvbG9yWzFdLCAxMCwgMTApIHwgcG4oY29sb3JbMl0sIDIwLCAxMCkgfCBwbihjb2xvclsz
XSwgMzAsIDIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVY6IHBpeGVsUHRyW3BpeGVsUHRyT2Zmc2V0XSA9IHB1
KGNvbG9yWzBdLCAwLCAxMCkgfCBwdShjb2xvclsxXSwgMTAsIDEwKSB8IHB1KGNvbG9yWzJdLCAy
MCwgMTApIHwgcHUoY29sb3JbM10sIDMwLCAyKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzk5OV9FNV9SRVY6IHBpeGVsUHRyW3Bp
eGVsUHRyT2Zmc2V0XSA9IHRjdVRleHR1cmUucGFja1JHQjk5OUU1KGNvbG9yKTsgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMjRf
ODoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9mb3JtYXQub3JkZXIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gXG5vdGUgU3RlbmNpbCBpcyBhbHdheXMgaWdub3JlZC4KKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EOiBwaXhlbFB0cltw
aXhlbFB0ck9mZnNldF0gPSBwbihjb2xvclswXSwgOCwgMjQpOyBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TOiBwaXhlbFB0cltwaXhlbFB0
ck9mZnNldF0gPSBwbihjb2xvclszXSwgOCwgMjQpOyBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZz
ZXRdID0gcG4oY29sb3JbMF0sIDgsIDI0KSB8IHB1KGNvbG9yWzNdLCAwLCA4KTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRjdVRleHR1cmUuY2hhbm5lbCBvcmRlciAnICsgdGhp
cy5tX2Zvcm1hdC5vcmRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5T
SUdORURfSU5UXzI0XzhfUkVWOiB7CisgICAgICAgICAgICAgICAgcGl4ZWxQdHJbcGl4ZWxQdHJP
ZmZzZXRdID0gY29sb3JbMF07CisgICAgICAgICAgICAgICAgdmFyIHUzMmFycmF5ID0gbmV3IFVp
bnQzMkFycmF5KHRoaXMubV9kYXRhLCAocGl4ZWxQdHJPZmZzZXQgKiBwaXhlbFB0ci5CWVRFU19Q
RVJfRUxFTUVOVCkgKyB0aGlzLm1fb2Zmc2V0ICsgNCwgMSk7CisgICAgICAgICAgICAgICAgdTMy
YXJyYXlbMF0gPSBwdShjb2xvclszXSwgMCwgOCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
TlNJR05FRF9JTlRfMTFGXzExRl8xMEZfUkVWOiB7CisgICAgICAgICAgICAgICAgdmFyIGYxMSA9
IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Y3VGbG9hdC5u
dW1iZXJUb0Zsb2F0MTEodmFsdWUpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgdmFyIGYxMCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0Y3VGbG9hdC5udW1iZXJUb0Zsb2F0MTAodmFsdWUpOworICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICBwaXhlbFB0cltwaXhlbFB0ck9mZnNldF0gPSBmMTEoY29sb3JbMF0p
IHwgKGYxMShjb2xvclsxXSkgPDwgMTEpIHwgKGYxMChjb2xvclsyXSkgPDwgMjIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLkZMT0FUOgorICAgICAgICAgICAgICAgIGlmICh0aGlzLm1fZm9ybWF0
Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gY29sb3JbMF07CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBlbHNlIGZh
bGwtdGhyb3VnaCB0byBkZWZhdWx0IGNhc2UhCisKKyAgICAgICAgICAgIGRlZmF1bHQ6IHsKKyAg
ICAgICAgICAgICAgICAvLyBHZW5lcmljIHBhdGguCisgICAgICAgICAgICAgICAgdmFyIG51bUNo
YW5uZWxzID0gdGN1VGV4dHVyZS5nZXROdW1Vc2VkQ2hhbm5lbHModGhpcy5tX2Zvcm1hdC5vcmRl
cik7CisgICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRjdVRleHR1cmUuZ2V0Q2hhbm5lbFdyaXRl
TWFwKHRoaXMubV9mb3JtYXQub3JkZXIpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9
IDA7IGMgPCBudW1DaGFubmVsczsgYysrKQorICAgICAgICAgICAgICAgICAgICBwaXhlbFB0cltj
ICsgcGl4ZWxQdHJPZmZzZXRdID0gdGN1VGV4dHVyZS5mbG9hdFRvQ2hhbm5lbChjb2xvclttYXBb
Y11dLCB0aGlzLm1fZm9ybWF0LnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKK30pKCk7CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvciBWZWM0IGNv
bG9yIHRvIHNldCAodW5ub3JtYWxpemVkKQorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJh
bSB7bnVtYmVyfSB5CisgKiBAcGFyYW0ge251bWJlcj19IHoKKyAqLwordGN1VGV4dHVyZS5QaXhl
bEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUuc2V0UGl4ZWxJbnQgPSBmdW5jdGlvbihjb2xvciwgeCwg
eSwgeikgeworICAgIHogPSB6IHx8IDA7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRz
MzIoeCwgMCwgdGhpcy5tX3dpZHRoKSk7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRz
MzIoeSwgMCwgdGhpcy5tX2hlaWdodCkpOworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5k
czMyKHosIDAsIHRoaXMubV9kZXB0aCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHBv
c2l0aW9uIGlzICdpbnRlZ2VyJworICAgIHggPSBNYXRoLnJvdW5kKHgpOworICAgIHkgPSBNYXRo
LnJvdW5kKHkpOworICAgIHogPSBNYXRoLnJvdW5kKHopOworCisgICAgLy8gUXVpY2sgcGF0aHMK
KyAgICBpZiAoeiA9PSAwKSB7CisgICAgICAgIGlmICh0aGlzLm1fcmdiYThWaWV3KSB7CisgICAg
ICAgICAgICB0aGlzLm1fcmdiYThWaWV3LndyaXRlKHgsIHksIGNvbG9yLCA0KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fcmdiOFZpZXcpIHsKKyAgICAg
ICAgICAgIHRoaXMubV9yZ2I4Vmlldy53cml0ZSh4LCB5LCBjb2xvciwgMyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5t
X2Zvcm1hdC5nZXRQaXhlbFNpemUoKTsKKyAgICB2YXIgb2Zmc2V0ID0geiAqIHRoaXMubV9zbGlj
ZVBpdGNoICsgeSAqIHRoaXMubV9yb3dQaXRjaCArIHggKiBwaXhlbFNpemU7CisgICAgdmFyIHBp
eGVsUHRyID0gdGhpcy5nZXREYXRhUHRyKCk7CisgICAgdmFyIHBpeGVsUHRyT2Zmc2V0ID0gb2Zm
c2V0IC8gcGl4ZWxQdHIuQllURVNfUEVSX0VMRU1FTlQ7CisKKyAgICB2YXIgcHUgPSBmdW5jdGlv
bih2YWwsIG9mZnMsIGJpdHMpIHsKKyAgICAgICAgcmV0dXJuIHRjdVRleHR1cmUudWludFRvQ2hh
bm5lbCh2YWwsIGJpdHMpIDw8IG9mZnM7CisgICAgfTsKKworICAgIC8vIFBhY2tlZCBmb3JtYXRz
LgorICAgIHN3aXRjaCAodGhpcy5tX2Zvcm1hdC50eXBlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF81NjU6IHBpeGVsUHRyW3BpeGVsUHRyT2Zmc2V0
XSA9IHB1KGNvbG9yWzBdLCAxMSwgNSkgfCBwdShjb2xvclsxXSwgNSwgNikgfCBwdShjb2xvclsy
XSwgMCwgNSk7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5P
Uk1fU0hPUlRfNTU1OiBwaXhlbFB0cltwaXhlbFB0ck9mZnNldF0gPSBwdShjb2xvclswXSwgMTAs
IDUpIHwgcHUoY29sb3JbMV0sIDUsIDUpIHwgcHUoY29sb3JbMl0sIDAsIDUpOyBicmVhazsKKyAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JUXzQ0NDQ6IHBpeGVs
UHRyW3BpeGVsUHRyT2Zmc2V0XSA9IHB1KGNvbG9yWzBdLCAxMiwgNCkgfCBwdShjb2xvclsxXSwg
OCwgNCkgfCBwdShjb2xvclsyXSwgNCwgNCkgfCBwdShjb2xvclszXSwgMCwgNCk7IGJyZWFrOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1MTogcGl4
ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcHUoY29sb3JbMF0sIDExLCA1KSB8IHB1KGNvbG9yWzFd
LCA2LCA1KSB8IHB1KGNvbG9yWzJdLCAxLCA1KSB8IHB1KGNvbG9yWzNdLCAwLCAxKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwOiBw
aXhlbFB0cltwaXhlbFB0ck9mZnNldF0gPSBwdShjb2xvclswXSwgMjIsIDEwKSB8IHB1KGNvbG9y
WzFdLCAxMiwgMTApIHwgcHUoY29sb3JbMl0sIDIsIDEwKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwMl9SRVY6IHBpeGVsUHRyW3Bp
eGVsUHRyT2Zmc2V0XSA9IHB1KGNvbG9yWzBdLCAwLCAxMCkgfCBwdShjb2xvclsxXSwgMTAsIDEw
KSB8IHB1KGNvbG9yWzJdLCAyMCwgMTApIHwgcHUoY29sb3JbM10sIDMwLCAyKTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9S
RVY6IHBpeGVsUHRyW3BpeGVsUHRyT2Zmc2V0XSA9IHB1KGNvbG9yWzBdLCAwLCAxMCkgfCBwdShj
b2xvclsxXSwgMTAsIDEwKSB8IHB1KGNvbG9yWzJdLCAyMCwgMTApIHwgcHUoY29sb3JbM10sIDMw
LCAyKTsgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lH
TkVEX0lOVF8yNF84OgorICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1fZm9ybWF0Lm9yZGVyKSB7
CisgICAgICAgICAgICAgICAgLy8gXG5vdGUgU3RlbmNpbCBpcyBhbHdheXMgaWdub3JlZC4KKyAg
ICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQ6IHBpeGVsUHRyW3Bp
eGVsUHRyT2Zmc2V0XSA9IHB1KGNvbG9yWzBdLCA4LCAyNCk7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUzogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZz
ZXRdID0gcHUoY29sb3JbM10sIDgsIDI0KTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcHUo
Y29sb3JbMF0sIDgsIDI0KSB8IHB1KGNvbG9yWzNdLCAwLCA4KTsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1
cHBvcnRlZCB0Y3VUZXh0dXJlLmNoYW5uZWwgb3JkZXIgJyArIHRoaXMubV9mb3JtYXQub3JkZXIp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVjogeworICAgICAg
ICAgICAgcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gY29sb3JbMF07CisgICAgICAgICAgICB2
YXIgdTMyYXJyYXkgPSBuZXcgVWludDMyQXJyYXkodGhpcy5tX2RhdGEsIG9mZnNldCArIHRoaXMu
bV9vZmZzZXQgKyA0LCAxKTsKKyAgICAgICAgICAgIHUzMmFycmF5W3BpeGVsUHRyT2Zmc2V0XSA9
IHB1KGNvbG9yWzNdLCAwLCA4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgZGVmYXVsdDogeworICAgICAgICAgICAgLy8gR2VuZXJpYyBwYXRoLgorICAgICAgICAg
ICAgdmFyIG51bUNoYW5uZWxzID0gdGN1VGV4dHVyZS5nZXROdW1Vc2VkQ2hhbm5lbHModGhpcy5t
X2Zvcm1hdC5vcmRlcik7CisgICAgICAgICAgICB2YXIgbWFwID0gdGN1VGV4dHVyZS5nZXRDaGFu
bmVsV3JpdGVNYXAodGhpcy5tX2Zvcm1hdC5vcmRlcik7CisKKyAgICAgICAgICAgIGZvciAodmFy
IGMgPSAwOyBjIDwgbnVtQ2hhbm5lbHM7IGMrKykKKyAgICAgICAgICAgICAgICBwaXhlbFB0cltj
ICsgcGl4ZWxQdHJPZmZzZXRdID0gdGN1VGV4dHVyZS5pbnRUb0NoYW5uZWwoY29sb3JbbWFwW2Nd
XSwgdGhpcy5tX2Zvcm1hdC50eXBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICog
QHBhcmFtIHtBcnJheTxudW1iZXI+PX0gY29sb3IgVmVjNCBjb2xvciB0byBzZXQsIG9wdGlvbmFs
LgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0geCBSYW5nZSBpbiB4IGF4aXMsIG9wdGlvbmFs
LgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0geSBSYW5nZSBpbiB5IGF4aXMsIG9wdGlvbmFs
LgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0geiBSYW5nZSBpbiB6IGF4aXMsIG9wdGlvbmFs
LgorICovCit0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5jbGVhciA9IGZ1
bmN0aW9uKGNvbG9yLCB4LCB5LCB6KSB7CisgICAgdmFyIGMgPSBjb2xvciB8fCBbMCwgMCwgMCwg
MF07CisgICAgdmFyIGFycmF5VHlwZSA9IHRjdVRleHR1cmUuZ2V0VHlwZWRBcnJheSh0aGlzLm1f
Zm9ybWF0LnR5cGUpOworICAgIHZhciByYW5nZV94ID0geCB8fCBbMCwgdGhpcy5tX3dpZHRoXTsK
KyAgICB2YXIgcmFuZ2VfeSA9IHkgfHwgWzAsIHRoaXMubV9oZWlnaHRdOworICAgIHZhciByYW5n
ZV96ID0geiB8fCBbMCwgdGhpcy5tX2RlcHRoXTsKKyAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5t
X2Zvcm1hdC5nZXRQaXhlbFNpemUoKTsKKyAgICB2YXIgbnVtRWxlbWVudHMgPSBwaXhlbFNpemUg
LyBhcnJheVR5cGUuQllURVNfUEVSX0VMRU1FTlQ7CisgICAgdmFyIHdpZHRoID0gcmFuZ2VfeFsx
XSAtIHJhbmdlX3hbMF07CisgICAgdmFyIGhlaWdodCA9IHJhbmdlX3lbMV0gLSByYW5nZV95WzBd
OworICAgIHZhciBkZXB0aCA9IHJhbmdlX3pbMV0gLSByYW5nZV96WzBdOworICAgIGlmICh4ID09
PSB1bmRlZmluZWQgJiYgeSA9PT0gdW5kZWZpbmVkICYmIHogPT09IHVuZGVmaW5lZCAmJgorICAg
ICAgICBjWzBdID09IDAgJiYgY1sxXSA9PSAwICYmIGNbMl0gPT0gMCAmJiBjWzNdID09IDApIHsK
KyAgICAgICAgdmFyIHBpeGVsUHRyID0gbmV3IGFycmF5VHlwZSh0aGlzLm1fZGF0YSwgdGhpcy5t
X29mZnNldCk7CisgICAgICAgIHBpeGVsUHRyLmZpbGwoMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvL2NvcHkgZmlyc3QgcGl4ZWwgb3ZlciBvdGhlciBwaXhlbHMgaW4gdGhlIHJv
dworICAgIHZhciBmaWxsUm93ID0gZnVuY3Rpb24ocGl4ZWxQdHIsIG51bUVsZW1lbnRzLCB3aWR0
aCkgeworICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHdpZHRoOyBpKyspCisgICAgICAgICAg
ICBmb3IgKHZhciBjID0gMDsgYyA8IG51bUVsZW1lbnRzOyBjKyspCisgICAgICAgICAgICAgICAg
cGl4ZWxQdHJbaSAqIG51bUVsZW1lbnRzICsgY10gPSBwaXhlbFB0cltjXTsKKyAgICB9OworICAg
IC8vIGNvcHkgZmlyc3Qgcm93IHRvIG90aGVyIHJvd3MgaW4gYWxsIHBsYW5lcworICAgIHZhciBm
aWxsUGxhbmVzID0gZnVuY3Rpb24oYnVmZmVyLCBhcnJheVR5cGUsIHNyYywgb2Zmc2V0LCByb3dT
dHJpZGUsIHBsYW5lU3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkgeworICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGRlcHRoOyBqKyspCisgICAgICAgIGZvciAodmFyIGkgPSAoaiA9PSAw
ID8gMSA6IDApOyBpIDwgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAgIHZhciBkc3QgPSBuZXcg
YXJyYXlUeXBlKGJ1ZmZlciwgb2Zmc2V0ICsgaSAqIHJvd1N0cmlkZSArIGogKiBwbGFuZVN0cmlk
ZSwgd2lkdGgpOworICAgICAgICAgICAgZHN0LnNldChzcmMpOworICAgICAgICB9CisgICAgfTsK
KworICAgIHRoaXMuc2V0UGl4ZWwoYywgcmFuZ2VfeFswXSwgcmFuZ2VfeVswXSwgcmFuZ2Vfelsw
XSk7CisKKyAgICB2YXIgb2Zmc2V0ID0gcmFuZ2VfelswXSAqIHRoaXMubV9zbGljZVBpdGNoICsg
cmFuZ2VfeVswXSAqIHRoaXMubV9yb3dQaXRjaCArIHJhbmdlX3hbMF0gKiBwaXhlbFNpemU7Cisg
ICAgdmFyIHBpeGVsUHRyID0gbmV3IGFycmF5VHlwZSh0aGlzLm1fZGF0YSwgb2Zmc2V0ICsgdGhp
cy5tX29mZnNldCwgd2lkdGggKiBudW1FbGVtZW50cyk7CisKKyAgICBmaWxsUm93KHBpeGVsUHRy
LCBudW1FbGVtZW50cywgd2lkdGgpOworICAgIGZpbGxQbGFuZXModGhpcy5tX2RhdGEsIGFycmF5
VHlwZSwgcGl4ZWxQdHIsIG9mZnNldCArIHRoaXMubV9vZmZzZXQsIHRoaXMubV9yb3dQaXRjaCwg
dGhpcy5tX3NsaWNlUGl0Y2gsIHdpZHRoICogbnVtRWxlbWVudHMsIGhlaWdodCwgZGVwdGgpOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGggdG8gc2V0CisgKiBAcGFyYW0ge251
bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7bnVtYmVyPX0gegorICov
Cit0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5zZXRQaXhEZXB0aCA9IGZ1
bmN0aW9uKGRlcHRoLCB4LCB5LCB6KSB7CisgICAgaWYgKHogPT0gbnVsbCkKKyAgICAgICAgeiA9
IDA7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeCwgMCwgdGhpcy5tX3dpZHRo
KSk7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeSwgMCwgdGhpcy5tX2hlaWdo
dCkpOworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHosIDAsIHRoaXMubV9kZXB0
aCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uIGlzICdpbnRlZ2VyJwor
ICAgIHggPSBNYXRoLnJvdW5kKHgpOworICAgIHkgPSBNYXRoLnJvdW5kKHkpOworICAgIHogPSBN
YXRoLnJvdW5kKHopOworCisgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV9mb3JtYXQuZ2V0UGl4
ZWxTaXplKCk7CisgICAgdmFyIG9mZnNldCA9IHogKiB0aGlzLm1fc2xpY2VQaXRjaCArIHkgKiB0
aGlzLm1fcm93UGl0Y2ggKyB4ICogcGl4ZWxTaXplOworICAgIHZhciBwaXhlbFB0ciA9IHRoaXMu
Z2V0RGF0YVB0cigpOworICAgIHZhciBwaXhlbFB0ck9mZnNldCA9IG9mZnNldCAvIHBpeGVsUHRy
LkJZVEVTX1BFUl9FTEVNRU5UOworCisgICAgdmFyIHBuID0gZnVuY3Rpb24odmFsLCBvZmZzLCBi
aXRzKSB7CisgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLm5vcm1GbG9hdFRvQ2hhbm5lbCh2YWws
IGJpdHMpIDw8IG9mZnM7CisgICAgfTsKKworICAgIC8vIFBhY2tlZCBmb3JtYXRzLgorICAgIHN3
aXRjaCAodGhpcy5tX2Zvcm1hdC50eXBlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5VTlNJR05FRF9JTlRfMjRfODoKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy5tX2Zv
cm1hdC5vcmRlcikgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuRDogcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oZGVwdGgsIDgsIDI0KTsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzogcGl4ZWxQ
dHJbcGl4ZWxQdHJPZmZzZXRdID0gcG4oZGVwdGgsIDgsIDI0KSB8IChwaXhlbFB0cltwaXhlbFB0
ck9mZnNldF0gJiAweEZGKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB0Y3VUZXh0dXJlLmNo
YW5uZWwgb3JkZXIgJyArIHRoaXMubV9mb3JtYXQub3JkZXIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZM
T0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVjogeworICAgICAgICAgICAgREVfQVNTRVJUKHRoaXMu
bV9mb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFMpOworICAgICAgICAg
ICAgcGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRdID0gZGVwdGg7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIERFX0FTU0VSVCh0
aGlzLm1fZm9ybWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgdGhpcy5t
X2Zvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUyk7CisgICAgICAgICAg
ICBwaXhlbFB0cltwaXhlbFB0ck9mZnNldF0gPSB0Y3VUZXh0dXJlLmZsb2F0VG9DaGFubmVsKGRl
cHRoLCB0aGlzLm1fZm9ybWF0LnR5cGUpOworICAgICAgICB9CisgICAgfQorfTsKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gc3RlbmNpbCB0byBzZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB4Cisg
KiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXI9fSB6CisgKi8KK3RjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBlLnNldFBpeFN0ZW5jaWwgPSBmdW5jdGlvbihz
dGVuY2lsLCB4LCB5LCB6KSB7CisgICAgaWYgKHogPT0gbnVsbCkKKyAgICAgICAgeiA9IDA7Cisg
ICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeCwgMCwgdGhpcy5tX3dpZHRoKSk7Cisg
ICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIoeSwgMCwgdGhpcy5tX2hlaWdodCkpOwor
ICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHosIDAsIHRoaXMubV9kZXB0aCkpOwor
CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uIGlzICdpbnRlZ2VyJworICAgIHgg
PSBNYXRoLnJvdW5kKHgpOworICAgIHkgPSBNYXRoLnJvdW5kKHkpOworICAgIHogPSBNYXRoLnJv
dW5kKHopOworCisgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV9mb3JtYXQuZ2V0UGl4ZWxTaXpl
KCk7CisgICAgdmFyIG9mZnNldCA9IHogKiB0aGlzLm1fc2xpY2VQaXRjaCArIHkgKiB0aGlzLm1f
cm93UGl0Y2ggKyB4ICogcGl4ZWxTaXplOworICAgIHZhciBwaXhlbFB0ciA9IHRoaXMuZ2V0RGF0
YVB0cigpOworICAgIHZhciBwaXhlbFB0ck9mZnNldCA9IG9mZnNldCAvIHBpeGVsUHRyLkJZVEVT
X1BFUl9FTEVNRU5UOworCisgICAgdmFyIHB1ID0gZnVuY3Rpb24odmFsLCBvZmZzLCBiaXRzKSB7
CisgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLnVpbnRUb0NoYW5uZWwodmFsLCBiaXRzKSA8PCBv
ZmZzOworICAgIH07CisKKyAgICAvLyBQYWNrZWQgZm9ybWF0cy4KKyAgICBzd2l0Y2ggKHRoaXMu
bV9mb3JtYXQudHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5T
SUdORURfSU5UXzI0Xzg6CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9mb3JtYXQub3JkZXIp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6IHBpeGVs
UHRyW3BpeGVsUHRyT2Zmc2V0XSA9IHB1KHN0ZW5jaWwsIDgsIDI0KTsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzogcGl4ZWxQdHJbcGl4ZWxQ
dHJPZmZzZXRdID0gcHUoc3RlbmNpbCwgMCwgOCkgfCAocGl4ZWxQdHJbcGl4ZWxQdHJPZmZzZXRd
ICYgMHhGRkZGRkYwMCk7IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdGN1VGV4dHVyZS5jaGFu
bmVsIG9yZGVyICcgKyB0aGlzLm1fZm9ybWF0Lm9yZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9B
VF9VTlNJR05FRF9JTlRfMjRfOF9SRVY6IHsKKyAgICAgICAgICAgIHZhciB1MzJhcnJheSA9IG5l
dyBVaW50MzJBcnJheSh0aGlzLm1fZGF0YSwgdGhpcy5tX29mZnNldCArIG9mZnNldCArIDQsIDEp
OworICAgICAgICAgICAgdTMyYXJyYXlbMF0gPSBwdShzdGVuY2lsLCAwLCA4KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDogeworICAgICAgICAgICAg
aWYgKHRoaXMubV9mb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUykKKyAg
ICAgICAgICAgICAgICBwaXhlbFB0cltwaXhlbFB0ck9mZnNldF0gPSB0Y3VUZXh0dXJlLmZsb2F0
VG9DaGFubmVsKHN0ZW5jaWwsIHRoaXMubV9mb3JtYXQudHlwZSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQodGhpcy5tX2Zvcm1hdC5vcmRlciA9PSB0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5EUyk7CisgICAgICAgICAgICAgICAgcGl4ZWxQdHJbMyArIHBp
eGVsUHRyT2Zmc2V0XSA9IHRjdVRleHR1cmUuZmxvYXRUb0NoYW5uZWwoc3RlbmNpbCwgdGhpcy5t
X2Zvcm1hdC50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKKy8q
KgorICogbmV3RnJvbVRleHR1cmVMZXZlbAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVM
ZXZlbH0gbGV2ZWwKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9Cisg
Ki8KK3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVMZXZlbCA9IGZ1
bmN0aW9uKGxldmVsKSB7CisgICAgdmFyIGRlc2NyaXB0b3IgPSBuZXcgT2JqZWN0KCk7CisgICAg
ZGVzY3JpcHRvci5mb3JtYXQgPSBsZXZlbC5nZXRGb3JtYXQoKTsKKyAgICBkZXNjcmlwdG9yLndp
ZHRoID0gbGV2ZWwuZ2V0V2lkdGgoKTsKKyAgICBkZXNjcmlwdG9yLmhlaWdodCA9IGxldmVsLmdl
dEhlaWdodCgpOworICAgIGRlc2NyaXB0b3IuZGVwdGggPSBsZXZlbC5tX2RlcHRoOworICAgIGRl
c2NyaXB0b3IuZGF0YSA9IGxldmVsLm1fZGF0YS5tX3B0cjsKKworICAgIHJldHVybiBuZXcgdGN1
VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2VzcyhkZXNjcmlwdG9yKTsKK307CisKKy8qKgorICogbmV3
RnJvbVRleHR1cmVGb3JtYXQKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBm
b3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdo
dAorICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgKiBAcGFyYW0ge251bWJlcn0gcm93UGl0Y2gK
KyAqIEBwYXJhbSB7bnVtYmVyfSBzbGljZVBpdGNoCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBk
YXRhCisgKi8KK3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVGb3Jt
YXQgPSBmdW5jdGlvbihmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCByb3dQaXRjaCwgc2xp
Y2VQaXRjaCwgZGF0YSkgeworICAgIHZhciBkZXNjcmlwdG9yID0gbmV3IE9iamVjdCgpOworICAg
IGRlc2NyaXB0b3IuZm9ybWF0ID0gZm9ybWF0OworICAgIGRlc2NyaXB0b3Iud2lkdGggPSB3aWR0
aDsKKyAgICBkZXNjcmlwdG9yLmhlaWdodCA9IGhlaWdodDsKKyAgICBkZXNjcmlwdG9yLmRlcHRo
ID0gZGVwdGg7CisgICAgZGVzY3JpcHRvci5yb3dQaXRjaCA9IHJvd1BpdGNoOworICAgIGRlc2Ny
aXB0b3Iuc2xpY2VQaXRjaCA9IHNsaWNlUGl0Y2g7CisgICAgZGVzY3JpcHRvci5kYXRhID0gZGF0
YTsKKworICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2VzcyhkZXNjcmlw
dG9yKTsKK307CisKKy8qIFRPRE86IFBvcnQgKi8KKy8vIHsKKy8vIHB1YmxpYzoKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzICh2b2lk
KSB7fQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmUuUGl4ZWxCdWZm
ZXJBY2Nlc3MgKGNvbnN0IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCYgZm9ybWF0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBkZXB0aCwgdm9pZCogZGF0YSk7CisKKy8vICAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgZ2V0RGF0YVB0ciAodm9pZCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisKKy8vICAgICB2b2lkIHNldFBpeGVscyAoY29uc3Qgdm9pZCogYnVmLCBpbnQgYnVmU2l6
ZSkgY29uc3Q7CisvLyAgICAgdm9pZCBzZXRQaXhlbCAoY29uc3QgdGN1OjpWZWM0JiBjb2xvciwg
aW50IHgsIGludCB5LCBpbnQgeiA9IDApIGNvbnN0OworLy8gICAgIHZvaWQgc2V0UGl4ZWwgKGNv
bnN0IHRjdTo6SVZlYzQmIGNvbG9yLCBpbnQgeCwgaW50IHksIGludCB6ID0gMCkgY29uc3Q7Cisv
LyAgICAgdm9pZCBzZXRQaXhlbCAoY29uc3QgdGN1OjpVVmVjNCYgY29sb3IsIGludCB4LCBpbnQg
eSwgaW50IHogPSAwKSBjb25zdCB7IHNldFBpeGVsKGNvbG9yLmNhc3Q8aW50PigpLCB4LCB5LCB6
KTsgfQorCisvLyAgICAgdm9pZCBzZXRQaXhEZXB0aCAoZmxvYXQgZGVwdGgsIGludCB4LCBpbnQg
eSwgaW50IHogPSAwKSBjb25zdDsKKy8vICAgICB2b2lkIHNldFBpeFN0ZW5jaWwgKGludCBzdGVu
Y2lsLCBpbnQgeCwgaW50IHksIGludCB6ID0gMCkgY29uc3Q7CisvLyB9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAor
ICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICovCit0Y3VUZXh0dXJlLlRleHR1cmVMZXZl
bFB5cmFtaWQgPSBmdW5jdGlvbihmb3JtYXQsIG51bUxldmVscykgeworICAgIC8qIHRjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdCAqL3RoaXMubV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgLyogTGV2ZWxE
YXRhICovIHRoaXMubV9kYXRhID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1MZXZl
bHM7IGkrKykKKyAgICAgICAgdGhpcy5tX2RhdGEucHVzaChuZXcgdGN1VGV4dHVyZS5EZXFwQXJy
YXlCdWZmZXIoKSk7CisgICAgLyoge0FycmF5PHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3M+
fSAqLyB0aGlzLm1fYWNjZXNzID0gW107CisgICAgdGhpcy5tX2FjY2Vzcy5sZW5ndGggPSBudW1M
ZXZlbHM7Cit9OworCisvKiogQHJldHVybiB7Ym9vbGVhbn0gKi8KK3RjdVRleHR1cmUuVGV4dHVy
ZUxldmVsUHlyYW1pZC5wcm90b3R5cGUuaXNMZXZlbEVtcHR5ID0gZnVuY3Rpb24obGV2ZWxOZHgp
IHsgcmV0dXJuIHRoaXMubV9kYXRhW2xldmVsTmR4XS5lbXB0eSgpOyB9OworLyoqIEByZXR1cm4g
e3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZUxldmVsUHly
YW1pZC5wcm90b3R5cGUuZ2V0Rm9ybWF0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZm9y
bWF0OyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZUxldmVs
UHlyYW1pZC5wcm90b3R5cGUuZ2V0TnVtTGV2ZWxzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlz
Lm1fYWNjZXNzLmxlbmd0aDsgfTsKKy8qKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVy
QWNjZXNzfSAqLwordGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnByb3RvdHlwZS5nZXRM
ZXZlbCA9IGZ1bmN0aW9uKG5keCkgeyByZXR1cm4gdGhpcy5tX2FjY2Vzc1tuZHhdOyB9OworLyoq
IEByZXR1cm4ge0FycmF5PHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3M+fSAqLwordGN1VGV4
dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnByb3RvdHlwZS5nZXRMZXZlbHMgPSBmdW5jdGlvbigp
IHsgcmV0dXJuIHRoaXMubV9hY2Nlc3M7IH07CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGxl
dmVsTmR4CisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWln
aHQKKyAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICovCit0Y3VUZXh0dXJlLlRleHR1cmVMZXZl
bFB5cmFtaWQucHJvdG90eXBlLmFsbG9jTGV2ZWwgPSBmdW5jdGlvbihsZXZlbE5keCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgpIHsKKyAgICB2YXIgc2l6ZSA9IHRoaXMubV9mb3JtYXQuZ2V0UGl4ZWxT
aXplKCkgKiB3aWR0aCAqIGhlaWdodCAqIGRlcHRoOworCisgICAgREVfQVNTRVJUKHRoaXMuaXNM
ZXZlbEVtcHR5KGxldmVsTmR4KSk7CisKKyAgICB0aGlzLm1fZGF0YVtsZXZlbE5keF0uc2V0U3Rv
cmFnZShzaXplKTsKKyAgICB0aGlzLm1fYWNjZXNzW2xldmVsTmR4XSA9IG5ldyB0Y3VUZXh0dXJl
LlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgZm9ybWF0OiB0aGlzLm1fZm9ybWF0LAorICAg
ICAgICB3aWR0aDogd2lkdGgsCisgICAgICAgIGhlaWdodDogaGVpZ2h0LAorICAgICAgICBkZXB0
aDogZGVwdGgsCisgICAgICAgIGRhdGE6IHRoaXMubV9kYXRhW2xldmVsTmR4XS5tX3B0cgorICAg
IH0pOworfTsKKwordGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnByb3RvdHlwZS5jbGVh
ckxldmVsID0gZnVuY3Rpb24obGV2ZWxOZHgpIHsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQgKi8K
KyAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOworfTsKKworLyoqCisgKiBA
cGFyYW0ge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59IGxldmVscwor
ICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBs
ZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBzCisgKiBAcGFyYW0ge251bWJlcn0gdAor
ICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIChpbnRlZ2VyKQorICogQHBhcmFtIHtudW1iZXI9fSBs
b2QKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFZlYzQgcGl4ZWwgY29sb3IKKyAqLwordGN1
VGV4dHVyZS5zYW1wbGVMZXZlbEFycmF5MkQgPSBmdW5jdGlvbihsZXZlbHMsIG51bUxldmVscywg
c2FtcGxlciwgcywgdCwgZGVwdGgsIGxvZCkgeworICAgIC8vIHotb2Zmc2V0IGluIDJEIHRleHR1
cmVzIGlzIGxheWVyIHNlbGVjdG9yCisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxB
cnJheTJET2Zmc2V0KGxldmVscywgbnVtTGV2ZWxzLCBzYW1wbGVyLCBbcywgdF0sIGxvZCwgWzAs
IDAsIGRlcHRoXSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7QXJyYXk8dGN1VGV4dHVyZS5Db25z
dFBpeGVsQnVmZmVyQWNjZXNzPn0gbGV2ZWxzCisgKiBAcGFyYW0ge251bWJlcn0gbnVtTGV2ZWxz
CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1i
ZXJ9IHMKKyAqIEBwYXJhbSB7bnVtYmVyfSB0CisgKiBAcGFyYW0ge251bWJlcn0gcgorICogQHBh
cmFtIHtudW1iZXJ9IGxvZAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gVmVjNCBwaXhlbCBj
b2xvcgorICovCit0Y3VUZXh0dXJlLnNhbXBsZUxldmVsQXJyYXkzRCA9IGZ1bmN0aW9uKGxldmVs
cywgbnVtTGV2ZWxzLCBzYW1wbGVyLCBzLCB0LCByLCBsb2QpIHsKKyAgICByZXR1cm4gdGN1VGV4
dHVyZS5zYW1wbGVMZXZlbEFycmF5M0RPZmZzZXQobGV2ZWxzLCBudW1MZXZlbHMsIHNhbXBsZXIs
IHMsIHQsIHIsIGxvZCwgWzAsIDAsIDBdKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAcGFyYW0ge3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gY29vcmRzCisgKi8KK3RjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHMgPSBmdW5jdGlvbihm
YWNlLCBjb29yZHMpIHsKKyAgICB0aGlzLmZhY2UgPSBmYWNlOworICAgIHRoaXMucyA9IGNvb3Jk
c1swXTsKKyAgICB0aGlzLnQgPSBjb29yZHNbMV07Cit9OworCisvKioKKyAqIFxicmllZiAyRCBU
ZXh0dXJlIFZpZXcKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVs
cworICogQHBhcmFtIHs/QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0g
bGV2ZWxzCisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTJEVmlldyA9IGZ1bmN0aW9uKG51bUxldmVs
cywgbGV2ZWxzKSB7CisgICAgdGhpcy5tX251bUxldmVscyA9IG51bUxldmVsczsKKyAgICB0aGlz
Lm1fbGV2ZWxzID0gbGV2ZWxzOworfTsKKworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRl
eHR1cmUuVGV4dHVyZTJEVmlldy5wcm90b3R5cGUuZ2V0TnVtTGV2ZWxzID0gZnVuY3Rpb24oKSB7
IHJldHVybiB0aGlzLm1fbnVtTGV2ZWxzOyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3Rj
dVRleHR1cmUuVGV4dHVyZTJEVmlldy5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbigpIHsg
cmV0dXJuIHRoaXMubV9udW1MZXZlbHMgPiAwID8gdGhpcy5tX2xldmVsc1swXS5nZXRXaWR0aCgp
IDogMDsgfTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJlLlRleHR1cmUyRFZp
ZXcucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX251bUxl
dmVscyA+IDAgPyB0aGlzLm1fbGV2ZWxzWzBdLmdldEhlaWdodCgpIDogMDsgfTsKKy8qKgorICog
QHBhcmFtIHtudW1iZXJ9IG5keAorICogQHJldHVybiB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVm
ZmVyQWNjZXNzfQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXcucHJvdG90eXBlLmdldExl
dmVsID0gZnVuY3Rpb24obmR4KSB7IERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKG5keCwg
MCwgdGhpcy5tX251bUxldmVscykpOyByZXR1cm4gdGhpcy5tX2xldmVsc1tuZHhdOyB9OworLyoq
IEByZXR1cm4ge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59ICovCit0
Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXcucHJvdG90eXBlLmdldExldmVscyA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gdGhpcy5tX2xldmVsczsgfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYmFz
ZUxldmVsCisgKiBAcGFyYW0ge251bWJlcn0gbWF4TGV2ZWwKKyAqIHJldHVybiB7dGN1VGV4dHVy
ZS5UZXh0dXJlMkRWaWV3fQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXcucHJvdG90eXBl
LmdldFN1YlZpZXcgPSBmdW5jdGlvbihiYXNlTGV2ZWwsIG1heExldmVsKSB7CisgICAgdmFyIGNs
YW1wZWRCYXNlID0gZGVNYXRoLmNsYW1wKGJhc2VMZXZlbCwgMCwgdGhpcy5tX251bUxldmVscyAt
IDEpOworICAgIHZhciBjbGFtcGVkTWF4ID0gZGVNYXRoLmNsYW1wKG1heExldmVsLCBjbGFtcGVk
QmFzZSwgdGhpcy5tX251bUxldmVscyAtIDEpOworICAgIHZhciBudW1MZXZlbHMgPSBjbGFtcGVk
TWF4IC0gY2xhbXBlZEJhc2UgKyAxOworICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJl
MkRWaWV3KG51bUxldmVscywgdGhpcy5tX2xldmVscy5zbGljZShjbGFtcGVkQmFzZSwgbnVtTGV2
ZWxzKSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVy
CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge251bWJlcj19
IGxvZAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gUGl4ZWwgY29sb3IKKyAqLwordGN1VGV4
dHVyZS5UZXh0dXJlMkRWaWV3LnByb3RvdHlwZS5zYW1wbGUgPSBmdW5jdGlvbihzYW1wbGVyLCB0
ZXhDb29yZCwgbG9kKSB7CisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTJE
KHRoaXMubV9sZXZlbHMsIHRoaXMubV9udW1MZXZlbHMsIHNhbXBsZXIsIHRleENvb3JkWzBdLCB0
ZXhDb29yZFsxXSwgMCAvKiBkZXB0aCAqLywgbG9kKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4
Q29vcmQKKyAqIEBwYXJhbSB7bnVtYmVyfSBsb2QKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
b2Zmc2V0CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBQaXhlbCBjb2xvcgorICovCit0Y3VU
ZXh0dXJlLlRleHR1cmUyRFZpZXcucHJvdG90eXBlLnNhbXBsZU9mZnNldCA9IGZ1bmN0aW9uKHNh
bXBsZXIsIHRleENvb3JkLCBsb2QsIG9mZnNldCkgeworICAgIHJldHVybiB0Y3VUZXh0dXJlLnNh
bXBsZUxldmVsQXJyYXkyRE9mZnNldCh0aGlzLm1fbGV2ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBz
YW1wbGVyLCB0ZXhDb29yZCwgbG9kLCBbb2Zmc2V0WzBdLCBvZmZzZXRbMV0sIDBdKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7
bnVtYmVyfSByZWYKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJh
bSB7bnVtYmVyfSBsb2QKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5UZXh0
dXJlMkRWaWV3LnByb3RvdHlwZS5zYW1wbGVDb21wYXJlID0gZnVuY3Rpb24oc2FtcGxlciwgcmVm
LCB0ZXhDb29yZCwgbG9kKSB7CisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJh
eTJEQ29tcGFyZSh0aGlzLm1fbGV2ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBzYW1wbGVyLCByZWYs
IHRleENvb3JkWzBdLCB0ZXhDb29yZFsxXSwgbG9kLCBbMCwgMCwgMF0pOworfTsKKworLyoqCisg
KiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9
IHJlZgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAorICogQHBhcmFtIHtudW1i
ZXJ9IGxvZAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQKKyAqIEByZXR1cm4ge251
bWJlcn0KKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3LnByb3RvdHlwZS5zYW1wbGVDb21w
YXJlT2Zmc2V0ID0gZnVuY3Rpb24oc2FtcGxlciwgcmVmLCB0ZXhDb29yZCwgbG9kLCBvZmZzZXQp
IHsKKyAgICByZXR1cm4gdGN1VGV4dHVyZS5zYW1wbGVMZXZlbEFycmF5MkRDb21wYXJlKHRoaXMu
bV9sZXZlbHMsIHRoaXMubV9udW1MZXZlbHMsIHNhbXBsZXIsIHJlZiwgdGV4Q29vcmRbMF0sIHRl
eENvb3JkWzFdLCBsb2QsIFtvZmZzZXRbMF0sIG9mZnNldFsxXSwgMF0pOworfTsKKworICAgIC8q
IFRPRE86IFBvcnQKKyAgICBWZWM0IHNhbXBsZSAoY29uc3QgdGN1VGV4dHVyZS5TYW1wbGVyJiBz
YW1wbGVyLCBmbG9hdCBzLCBmbG9hdCB0LCBmbG9hdCBsb2QpIGNvbnN0OworICAgIFZlYzQgc2Ft
cGxlT2Zmc2V0IChjb25zdCB0Y3VUZXh0dXJlLlNhbXBsZXImIHNhbXBsZXIsIGZsb2F0IHMsIGZs
b2F0IHQsIGZsb2F0IGxvZCwgY29uc3QgSVZlYzImIG9mZnNldCkgY29uc3Q7CisgICAgZmxvYXQg
c2FtcGxlQ29tcGFyZSAoY29uc3QgdGN1VGV4dHVyZS5TYW1wbGVyJiBzYW1wbGVyLCBmbG9hdCBy
ZWYsIGZsb2F0IHMsIGZsb2F0IHQsIGZsb2F0IGxvZCkgY29uc3Q7CisgICAgZmxvYXQgc2FtcGxl
Q29tcGFyZU9mZnNldCAoY29uc3QgdGN1VGV4dHVyZS5TYW1wbGVyJiBzYW1wbGVyLCBmbG9hdCBy
ZWYsIGZsb2F0IHMsIGZsb2F0IHQsIGZsb2F0IGxvZCwgY29uc3QgSVZlYzImIG9mZnNldCkgY29u
c3Q7CisKKyAgICBWZWM0IGdhdGhlck9mZnNldHMgKGNvbnN0IHRjdVRleHR1cmUuU2FtcGxlciYg
c2FtcGxlciwgZmxvYXQgcywgZmxvYXQgdCwgaW50IGNvbXBvbmVudE5keCwgY29uc3QgSVZlYzIg
KCZvZmZzZXRzKVs0XSkgY29uc3Q7CisgICAgVmVjNCBnYXRoZXJPZmZzZXRzQ29tcGFyZShjb25z
dCB0Y3VUZXh0dXJlLlNhbXBsZXImIHNhbXBsZXIsIGZsb2F0IHJlZiwgZmxvYXQgcywgZmxvYXQg
dCwgY29uc3QgSVZlYzIgKCZvZmZzZXRzKVs0XSkgY29uc3Q7CisgICAgKi8KKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAqIEBwYXJhbSB7QXJy
YXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0gbGV2ZWxzCisgKi8KK3RjdVRl
eHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3ID0gZnVuY3Rpb24obnVtTGV2ZWxzLCBsZXZlbHMpIHsK
KyAgICB0aGlzLm1fbnVtTGV2ZWxzID0gbnVtTGV2ZWxzOworICAgIHRoaXMubV9sZXZlbHMgPSBs
ZXZlbHM7Cit9OworCisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVyZS5UZXh0dXJl
MkRBcnJheVZpZXcucHJvdG90eXBlLmdldE51bUxldmVscyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
dGhpcy5tX251bUxldmVsczsgfTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJl
LlRleHR1cmUyREFycmF5Vmlldy5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbigpIHsgcmV0
dXJuIHRoaXMubV9udW1MZXZlbHMgPiAwID8gdGhpcy5tX2xldmVsc1swXS5nZXRXaWR0aCgpIDog
MDsgfTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5
Vmlldy5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fbnVt
TGV2ZWxzID4gMCA/IHRoaXMubV9sZXZlbHNbMF0uZ2V0SGVpZ2h0KCkgOiAwOyB9OworLyoqIEBy
ZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3LnByb3RvdHlw
ZS5nZXROdW1MYXllcnMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9udW1MZXZlbHMgPiAw
ID8gdGhpcy5tX2xldmVsc1swXS5nZXREZXB0aCgpIDogMDsgfTsKKy8qKgorICogQHBhcmFtIHtu
dW1iZXJ9IG5keAorICogQHJldHVybiB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNz
fQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5Vmlldy5wcm90b3R5cGUuZ2V0TGV2ZWwg
PSBmdW5jdGlvbihuZHgpIHsgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIobmR4LCAwLCB0
aGlzLm1fbnVtTGV2ZWxzKSk7IHJldHVybiB0aGlzLm1fbGV2ZWxzW25keF07IH07CisvKiogQHJl
dHVybiB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0gKi8KK3RjdVRl
eHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3LnByb3RvdHlwZS5nZXRMZXZlbHMgPSBmdW5jdGlvbigp
IHsgcmV0dXJuIHRoaXMubV9sZXZlbHM7IH07CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHIK
KyAqIEByZXR1cm4ge251bWJlcn0gbGF5ZXIgY29ycmVzcG9uZGluZyB0byByZXF1ZXN0ZWQgc2Ft
cGxpbmcgJ3InIGNvb3JkaW5hdGUKKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheVZpZXcu
cHJvdG90eXBlLnNlbGVjdExheWVyID0gZnVuY3Rpb24ocikgeworICAgIERFX0FTU0VSVCh0aGlz
Lm1fbnVtTGV2ZWxzID4gMCAmJiB0aGlzLm1fbGV2ZWxzKTsKKyAgICByZXR1cm4gZGVNYXRoLmNs
YW1wKE1hdGgucm91bmQociksIDAsIHRoaXMubV9sZXZlbHNbMF0uZ2V0RGVwdGgoKSAtIDEpOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAorICogQHBhcmFtIHtudW1iZXI9fSBsb2QKKyAq
IEByZXR1cm4ge0FycmF5PG51bWJlcj59IFBpeGVsIGNvbG9yCisgKi8KK3RjdVRleHR1cmUuVGV4
dHVyZTJEQXJyYXlWaWV3LnByb3RvdHlwZS5zYW1wbGUgPSBmdW5jdGlvbihzYW1wbGVyLCB0ZXhD
b29yZCwgbG9kKSB7CisgICAgbG9kID0gbG9kIHx8IDA7CisgICAgcmV0dXJuIHRjdVRleHR1cmUu
c2FtcGxlTGV2ZWxBcnJheTJEKHRoaXMubV9sZXZlbHMsIHRoaXMubV9udW1MZXZlbHMsIHNhbXBs
ZXIsIHRleENvb3JkWzBdLCB0ZXhDb29yZFsxXSwgdGhpcy5zZWxlY3RMYXllcih0ZXhDb29yZFsy
XSksIGxvZCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1w
bGVyCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge251bWJl
cn0gbG9kCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldAorICogQHJldHVybiB7QXJy
YXk8bnVtYmVyPn0KKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheVZpZXcucHJvdG90eXBl
LnNhbXBsZU9mZnNldCA9IGZ1bmN0aW9uKHNhbXBsZXIsIHRleENvb3JkLCBsb2QsIG9mZnNldCkg
eworICAgIHJldHVybiB0Y3VUZXh0dXJlLnNhbXBsZUxldmVsQXJyYXkyRE9mZnNldCh0aGlzLm1f
bGV2ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBzYW1wbGVyLCB0ZXhDb29yZCwgbG9kLCBbb2Zmc2V0
WzBdLCBvZmZzZXRbMV0sIHRoaXMuc2VsZWN0TGF5ZXIodGV4Q29vcmRbMl0pXSk7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251
bWJlcn0gcmVmCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0g
e251bWJlcn0gbG9kCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldAorICogQHJldHVy
biB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5Vmlldy5wcm90b3R5cGUu
c2FtcGxlQ29tcGFyZU9mZnNldCA9IGZ1bmN0aW9uKHNhbXBsZXIsIHJlZiwgdGV4Q29vcmQsIGxv
ZCwgb2Zmc2V0KSB7CisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTJEQ29t
cGFyZSh0aGlzLm1fbGV2ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBzYW1wbGVyLCByZWYsIHRleENv
b3JkWzBdLCB0ZXhDb29yZFsxXSwgbG9kLCBbb2Zmc2V0WzBdLCBvZmZzZXRbMV0sIHRoaXMuc2Vs
ZWN0TGF5ZXIodGV4Q29vcmRbMl0pXSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3LnByb3RvdHlwZS5z
YW1wbGVDb21wYXJlID0gZnVuY3Rpb24oc2FtcGxlciwgcmVmLCB0ZXhDb29yZCwgbG9kKSB7Cisg
ICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTJEQ29tcGFyZSh0aGlzLm1fbGV2
ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBzYW1wbGVyLCByZWYsIHRleENvb3JkWzBdLCB0ZXhDb29y
ZFsxXSwgbG9kLCBbMCwgMCwgdGhpcy5zZWxlY3RMYXllcih0ZXhDb29yZFsyXSldKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+
fSBsZXZlbHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3Jk
CisgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNl
dAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordGN1VGV4dHVyZS5zYW1wbGVMZXZl
bEFycmF5MkRPZmZzZXQgPSBmdW5jdGlvbihsZXZlbHMsIG51bUxldmVscywgc2FtcGxlciwgdGV4
Q29vcmQsIGxvZCwgb2Zmc2V0KSB7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgbWFn
bmlmaWVkID0gbG9kIDw9IHNhbXBsZXIubG9kVGhyZXNob2xkOworICAgIC8qKiBAdHlwZSB7dGN1
VGV4dHVyZS5GaWx0ZXJNb2RlfSAqLyB2YXIgZmlsdGVyTW9kZSA9IG1hZ25pZmllZCA/IHNhbXBs
ZXIubWFnRmlsdGVyIDogc2FtcGxlci5taW5GaWx0ZXI7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhMZXZlbDsKKyAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0g
Ki8gdmFyIGxldmVsRmlsdGVyOworICAgIHN3aXRjaCAoZmlsdGVyTW9kZSkgeworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOiByZXR1cm4gbGV2ZWxzWzBdLnNhbXBs
ZTJET2Zmc2V0KHNhbXBsZXIsIGZpbHRlck1vZGUsIHRleENvb3JkWzBdLCB0ZXhDb29yZFsxXSwg
b2Zmc2V0KTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSOiByZXR1
cm4gbGV2ZWxzWzBdLnNhbXBsZTJET2Zmc2V0KHNhbXBsZXIsIGZpbHRlck1vZGUsIHRleENvb3Jk
WzBdLCB0ZXhDb29yZFsxXSwgb2Zmc2V0KTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmls
dGVyTW9kZS5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUu
RmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1Q6CisgICAgICAgICAgICBtYXhMZXZlbCA9
IG51bUxldmVscyAtIDE7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxl
dmVsID0gZGVNYXRoLmNsYW1wKE1hdGguY2VpbChsb2QgKyAwLjUpIC0gMSwgMCwgbWF4TGV2ZWwp
OworICAgICAgICAgICAgbGV2ZWxGaWx0ZXIgPSAoZmlsdGVyTW9kZSA9PT0gdGN1VGV4dHVyZS5G
aWx0ZXJNb2RlLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCkgPyB0Y3VUZXh0dXJlLkZpbHRlck1vZGUu
TElORUFSIDogdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q7CisKKyAgICAgICAgICAgIHJl
dHVybiBsZXZlbHNbbGV2ZWxdLnNhbXBsZTJET2Zmc2V0KHNhbXBsZXIsIGxldmVsRmlsdGVyLCB0
ZXhDb29yZFswXSwgdGV4Q29vcmRbMV0sIG9mZnNldCk7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLkZpbHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgICAgIG1heExl
dmVsID0gbnVtTGV2ZWxzIC0gMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbGV2ZWwwID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IobG9kKSwgMCwgbWF4TGV2ZWwpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsZXZlbDEgPSBNYXRoLm1pbiht
YXhMZXZlbCwgbGV2ZWwwICsgMSk7CisgICAgICAgICAgICBsZXZlbEZpbHRlciA9IChmaWx0ZXJN
b2RlID09PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9MSU5FQVIpID8gdGN1
VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUiA6IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNU
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmID0gZGVNYXRoLmRlRmxv
YXRGcmFjKGxvZCk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciB0MCA9IGxldmVsc1tsZXZlbDBdLnNhbXBsZTJET2Zmc2V0KHNhbXBsZXIsIGxldmVsRmlsdGVy
LCB0ZXhDb29yZFswXSwgdGV4Q29vcmRbMV0sIG9mZnNldCk7CisgICAgICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciB0MSA9IGxldmVsc1tsZXZlbDFdLnNhbXBsZTJET2Zm
c2V0KHNhbXBsZXIsIGxldmVsRmlsdGVyLCB0ZXhDb29yZFswXSwgdGV4Q29vcmRbMV0sIG9mZnNl
dCk7CisKKyAgICAgICAgICAgIHJldHVybiBkZU1hdGguYWRkKGRlTWF0aC5zY2FsZSh0MCwgKDEu
MCAtIGYpKSwgZGVNYXRoLnNjYWxlKHQxLCBmKSk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBbMC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICB9Cit9OworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICogQHBhcmFtIHtB
cnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+fSBsZXZlbHMKKyAqLwordGN1
VGV4dHVyZS5UZXh0dXJlM0RWaWV3ID0gZnVuY3Rpb24obnVtTGV2ZWxzLCBsZXZlbHMpIHsKKyAg
ICB0aGlzLm1fbnVtTGV2ZWxzID0gbnVtTGV2ZWxzOworICAgIHRoaXMubV9sZXZlbHMgPSBsZXZl
bHM7Cit9OworCisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVyZS5UZXh0dXJlM0RW
aWV3LnByb3RvdHlwZS5nZXROdW1MZXZlbHMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9u
dW1MZXZlbHM7IH07CisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVyZS5UZXh0dXJl
M0RWaWV3LnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX251
bUxldmVscyA+IDAgPyB0aGlzLm1fbGV2ZWxzWzBdLmdldFdpZHRoKCkgOiAwOyB9OworLyoqIEBy
ZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZTNEVmlldy5wcm90b3R5cGUuZ2V0
SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fbnVtTGV2ZWxzID4gMCA/IHRoaXMu
bV9sZXZlbHNbMF0uZ2V0SGVpZ2h0KCkgOiAwOyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8K
K3RjdVRleHR1cmUuVGV4dHVyZTNEVmlldy5wcm90b3R5cGUuZ2V0RGVwdGggPSBmdW5jdGlvbigp
IHsgcmV0dXJuIHRoaXMubV9udW1MZXZlbHMgPiAwID8gdGhpcy5tX2xldmVsc1swXS5nZXREZXB0
aCgpIDogMDsgfTsKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG5keAorICogQHJldHVybiB7dGN1
VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUz
RFZpZXcucHJvdG90eXBlLmdldExldmVsID0gZnVuY3Rpb24obmR4KSB7IERFX0FTU0VSVChkZU1h
dGguZGVJbkJvdW5kczMyKG5keCwgMCwgdGhpcy5tX251bUxldmVscykpOyByZXR1cm4gdGhpcy5t
X2xldmVsc1tuZHhdOyB9OworLyoqIEByZXR1cm4ge0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2Vzcz59ICovCit0Y3VUZXh0dXJlLlRleHR1cmUzRFZpZXcucHJvdG90eXBlLmdl
dExldmVscyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2xldmVsczsgfTsKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gYmFzZUxldmVsCisgKiBAcGFyYW0ge251bWJlcn0gbWF4TGV2ZWwK
KyAqIHJldHVybiB7dGN1VGV4dHVyZS5UZXh0dXJlM0RWaWV3fQorICovCit0Y3VUZXh0dXJlLlRl
eHR1cmUzRFZpZXcucHJvdG90eXBlLmdldFN1YlZpZXcgPSBmdW5jdGlvbihiYXNlTGV2ZWwsIG1h
eExldmVsKSB7CisgICAgdmFyIGNsYW1wZWRCYXNlID0gZGVNYXRoLmNsYW1wKGJhc2VMZXZlbCwg
MCwgdGhpcy5tX251bUxldmVscyAtIDEpOworICAgIHZhciBjbGFtcGVkTWF4ID0gZGVNYXRoLmNs
YW1wKG1heExldmVsLCBjbGFtcGVkQmFzZSwgdGhpcy5tX251bUxldmVscyAtIDEpOworICAgIHZh
ciBudW1MZXZlbHMgPSBjbGFtcGVkTWF4IC0gY2xhbXBlZEJhc2UgKyAxOworICAgIHJldHVybiBu
ZXcgdGN1VGV4dHVyZS5UZXh0dXJlM0RWaWV3KG51bUxldmVscywgdGhpcy5tX2xldmVscy5zbGlj
ZShjbGFtcGVkQmFzZSwgbnVtTGV2ZWxzKSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3Jk
CisgKiBAcGFyYW0ge251bWJlcj19IGxvZAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gUGl4
ZWwgY29sb3IKKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlM0RWaWV3LnByb3RvdHlwZS5zYW1wbGUg
PSBmdW5jdGlvbihzYW1wbGVyLCB0ZXhDb29yZCwgbG9kKSB7CisgICAgbG9kID0gbG9kIHx8IDA7
CisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTNEKHRoaXMubV9sZXZlbHMs
IHRoaXMubV9udW1MZXZlbHMsIHNhbXBsZXIsIHRleENvb3JkWzBdLCB0ZXhDb29yZFsxXSwgdGV4
Q29vcmRbMl0sIGxvZCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVy
fSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHRleENvb3JkCisgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgKiBAcmV0dXJuIHtudW1iZXJ9
CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTNEVmlldy5wcm90b3R5cGUuc2FtcGxlQ29tcGFyZSA9
IGZ1bmN0aW9uKHNhbXBsZXIsIHJlZiwgdGV4Q29vcmQsIGxvZCkgeworICAgIHRocm93IG5ldyBF
cnJvcignVW5pbXBsZW1lbnRlZCcpOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUu
U2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAorICog
QHBhcmFtIHtudW1iZXJ9IGxvZAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQKKyAq
IEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTNEVmlldy5w
cm90b3R5cGUuc2FtcGxlT2Zmc2V0ID0gZnVuY3Rpb24oc2FtcGxlciwgdGV4Q29vcmQsIGxvZCwg
b2Zmc2V0KSB7CisgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTNET2Zmc2V0
KHRoaXMubV9sZXZlbHMsIHRoaXMubV9udW1MZXZlbHMsIHNhbXBsZXIsIHRleENvb3JkWzBdLCB0
ZXhDb29yZFsxXSwgdGV4Q29vcmRbMl0sIGxvZCwgb2Zmc2V0KTsKK307CisKKy8qIFRPRE86IEFs
bCB2aWV3IGNsYXNzZXMgYXJlIHZlcnkgc2ltaWxhci4gVGhleSBzaG91bGQgaGF2ZSBhIGNvbW1v
biBiYXNlIGNsYXNzICovCisKKy8qKgorICogQHBhcmFtIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0
UGl4ZWxCdWZmZXJBY2Nlc3M+fSBsZXZlbHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMK
KyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJl
cn0gcworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBwYXJhbSB7bnVtYmVyfSByCisgKiBAcGFy
YW0ge251bWJlcn0gbG9kCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldAorICogQHJl
dHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordGN1VGV4dHVyZS5zYW1wbGVMZXZlbEFycmF5M0RP
ZmZzZXQgPSBmdW5jdGlvbihsZXZlbHMsIG51bUxldmVscywgc2FtcGxlciwgcywgdCwgciwgbG9k
LCBvZmZzZXQpIHsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBtYWduaWZpZWQgPSBs
b2QgPD0gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkZp
bHRlck1vZGV9ICovIHZhciBmaWx0ZXJNb2RlID0gbWFnbmlmaWVkID8gc2FtcGxlci5tYWdGaWx0
ZXIgOiBzYW1wbGVyLm1pbkZpbHRlcjsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1h
eExldmVsOworICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSAqLyB2YXIgbGV2
ZWxGaWx0ZXI7CisgICAgc3dpdGNoIChmaWx0ZXJNb2RlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q6IHJldHVybiBsZXZlbHNbMF0uc2FtcGxlM0RPZmZzZXQo
c2FtcGxlciwgZmlsdGVyTW9kZSwgcywgdCwgciwgb2Zmc2V0KTsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkZpbHRlck1vZGUuTElORUFSOiByZXR1cm4gbGV2ZWxzWzBdLnNhbXBsZTNET2Zmc2V0
KHNhbXBsZXIsIGZpbHRlck1vZGUsIHMsIHQsIHIsIG9mZnNldCk7CisKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDoKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgICAg
ICAgbWF4TGV2ZWwgPSBudW1MZXZlbHMgLSAxOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBsZXZlbCA9IGRlTWF0aC5jbGFtcChNYXRoLmNlaWwobG9kICsgMC41KSAtIDEs
IDAsIG1heExldmVsKTsKKyAgICAgICAgICAgIGxldmVsRmlsdGVyID0gKGZpbHRlck1vZGUgPT09
IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1QpID8gdGN1VGV4dHVy
ZS5GaWx0ZXJNb2RlLkxJTkVBUiA6IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworCisg
ICAgICAgICAgICByZXR1cm4gbGV2ZWxzW2xldmVsXS5zYW1wbGUzRE9mZnNldChzYW1wbGVyLCBs
ZXZlbEZpbHRlciwgcywgdCwgciwgb2Zmc2V0KTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
RmlsdGVyTW9kZS5ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5GaWx0ZXJNb2RlLkxJTkVBUl9NSVBNQVBfTElORUFSOgorICAgICAgICAgICAgbWF4TGV2ZWwg
PSBudW1MZXZlbHMgLSAxOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBs
ZXZlbDAgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihsb2QpLCAwLCBtYXhMZXZlbCk7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxldmVsMSA9IE1hdGgubWluKG1heExl
dmVsLCBsZXZlbDAgKyAxKTsKKyAgICAgICAgICAgIGxldmVsRmlsdGVyID0gKGZpbHRlck1vZGUg
PT09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVBUikgPyB0Y3VUZXh0
dXJlLkZpbHRlck1vZGUuTElORUFSIDogdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGYgPSBkZU1hdGguZGVGbG9hdEZy
YWMobG9kKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHQw
ID0gbGV2ZWxzW2xldmVsMF0uc2FtcGxlM0RPZmZzZXQoc2FtcGxlciwgbGV2ZWxGaWx0ZXIsIHMs
IHQsIHIsIG9mZnNldCk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciB0MSA9IGxldmVsc1tsZXZlbDFdLnNhbXBsZTNET2Zmc2V0KHNhbXBsZXIsIGxldmVsRmls
dGVyLCBzLCB0LCByLCBvZmZzZXQpOworCisgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmFkZChk
ZU1hdGguc2NhbGUodDAsICgxLjAgLSBmKSksIGRlTWF0aC5zY2FsZSh0MSwgZikpOworCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbHRlciBtb2RlIG5v
dCBzdXBwb3J0ZWQnKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0
aAorICogQHBhcmFtIHtudW1iZXI9fSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVyPX0gZGVwdGgK
KyAqIEByZXR1cm4ge251bWJlcn0gTnVtYmVyIG9mIHB5cmFtaWQgbGV2ZWxzCisgKi8KK3RjdVRl
eHR1cmUuY29tcHV0ZU1pcFB5cmFtaWRMZXZlbHMgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCkgeworICAgIGlmIChkZXB0aCAhPT0gdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gTWF0
aC5mbG9vcihNYXRoLmxvZzIoTWF0aC5tYXgod2lkdGgsIE1hdGgubWF4KGhlaWdodCwgZGVwdGgp
KSkpICsgMTsKKyAgICBlbHNlIGlmIChoZWlnaHQgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgcmV0
dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpKSkgKyAxOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHdpZHRoKSkgKyAx
OworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYmFzZUxldmVsU2l6ZQorICogQHBhcmFt
IHtudW1iZXJ9IGxldmVsTmR4CisgKi8KK3RjdVRleHR1cmUuZ2V0TWlwUHlyYW1pZExldmVsU2l6
ZSA9IGZ1bmN0aW9uKGJhc2VMZXZlbFNpemUsIGxldmVsTmR4KSB7CisgICAgcmV0dXJuIE1hdGgu
bWF4KGJhc2VMZXZlbFNpemUgPj4gbGV2ZWxOZHgsIDEpOworfTsKKworLyoqCisgKiBAcGFyYW0g
e0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59IGZhY2VBY2Nlc3Nlcwor
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkN1YmVGYWNlfSBiYXNlRmFjZQorICogQHBhcmFtIHtudW1i
ZXJ9IHUKKyAqIEBwYXJhbSB7bnVtYmVyfSB2CisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAq
IEByZXR1cm4ge0FycmF5PEFycmF5PG51bWJlcj4+fQorICovCit0Y3VUZXh0dXJlLmdldEN1YmVM
aW5lYXJTYW1wbGVzID0gZnVuY3Rpb24oZmFjZUFjY2Vzc2VzLCBiYXNlRmFjZSwgdSwgdiwgZGVw
dGgpIHsKKyAgICBERV9BU1NFUlQoZmFjZUFjY2Vzc2VzWzBdLmdldFdpZHRoKCkgPT0gZmFjZUFj
Y2Vzc2VzWzBdLmdldEhlaWdodCgpKTsKKyAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJl
cj4+fSAqLyB2YXIgZHN0ID0gW107CisgICAgdmFyIHNpemUgPSBmYWNlQWNjZXNzZXNbMF0uZ2V0
V2lkdGgoKTsKKyAgICB2YXIgeDAgPSBNYXRoLmZsb29yKHUgLSAwLjUpOworICAgIHZhciB4MSA9
IHgwICsgMTsKKyAgICB2YXIgeTAgPSBNYXRoLmZsb29yKHYgLSAwLjUpOworICAgIHZhciB5MSA9
IHkwICsgMTsKKyAgICB2YXIgYmFzZVNhbXBsZUNvb3JkcyA9CisgICAgWworICAgICAgICBbeDAs
IHkwXSwKKyAgICAgICAgW3gxLCB5MF0sCisgICAgICAgIFt4MCwgeTFdLAorICAgICAgICBbeDEs
IHkxXQorICAgIF07CisgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFy
IHNhbXBsZUNvbG9ycyA9IFtdOworICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZh
ciBoYXNCb3RoQ29vcmRzT3V0T2ZCb3VuZHMgPSBbXTsgLy8hPCBXaGV0aGVyIGNvcnJlY3RDdWJl
RmFjZSgpIHJldHVybnMgQ1VCRUZBQ0VfTEFTVCwgaS5lLiBib3RoIHUgYW5kIHYgYXJlIG91dCBv
ZiBib3VuZHMuCisKKyAgICAvLyBGaW5kIGNvcnJlY3QgZmFjZXMgYW5kIGNvb3JkaW5hdGVzIGZv
ciBvdXQtb2YtYm91bmRzIHNhbXBsZSBjb29yZGluYXRlcy4KKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNDsgaSsrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5DdWJlRmFjZUNv
b3Jkc30gKi8gdmFyIGNvb3JkcyA9IHRjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3JkcyhuZXcg
dGN1VGV4dHVyZS5DdWJlRmFjZUNvb3JkcyhiYXNlRmFjZSwgYmFzZVNhbXBsZUNvb3Jkc1tpXSks
IHNpemUpOworICAgICAgICBoYXNCb3RoQ29vcmRzT3V0T2ZCb3VuZHNbaV0gPSBjb29yZHMgPT0g
bnVsbDsKKyAgICAgICAgaWYgKCFoYXNCb3RoQ29vcmRzT3V0T2ZCb3VuZHNbaV0pCisgICAgICAg
ICAgICBzYW1wbGVDb2xvcnNbaV0gPSB0Y3VUZXh0dXJlLmxvb2t1cChmYWNlQWNjZXNzZXNbY29v
cmRzLmZhY2VdLCBjb29yZHMucywgY29vcmRzLnQsIGRlcHRoKTsKKyAgICB9CisKKyAgICAvLyBJ
ZiBhIHNhbXBsZSB3YXMgb3V0IG9mIGJvdW5kcyBpbiBib3RoIHUgYW5kIHYsIHdlIGdldCBpdHMg
Y29sb3IgZnJvbSB0aGUgYXZlcmFnZSBvZiB0aGUgdGhyZWUgb3RoZXIgc2FtcGxlcy4KKyAgICAv
LyBcbm90ZSBUaGlzIGF2ZXJhZ2luZyBiZWhhdmlvciBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIEdM
RVMzIHNwZWMgKHRob3VnaCBpdCBpcyByZWNvbW1lbmRlZCkuIEdMRVMzIHNwZWMgb25seQorICAg
IC8vICAgICAgICAgcmVxdWlyZXMgdGhhdCBpZiB0aGUgdGhyZWUgb3RoZXIgc2FtcGxlcyBhbGwg
aGF2ZSB0aGUgc2FtZSBjb2xvciwgdGhlbiB0aGUgZG91Ymx5LW91dC1vZi1ib3VuZHMgc2FtcGxl
CisgICAgLy8gICAgICAgICBtdXN0IGhhdmUgdGhpcyBjb2xvciBhcyB3ZWxsLgorCisgICAgdmFy
IGJvdGhPdXRPZkJvdW5kc05keCA9IC0xOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsr
KSB7CisgICAgICAgIGlmIChoYXNCb3RoQ29vcmRzT3V0T2ZCb3VuZHNbaV0pIHsKKyAgICAgICAg
ICAgIERFX0FTU0VSVChib3RoT3V0T2ZCb3VuZHNOZHggPCAwKTsgLy8gT25seSBvbmUgc2FtcGxl
IGNhbiBiZSBvdXQgb2YgYm91bmRzIGluIGJvdGggdSBhbmQgdi4KKyAgICAgICAgICAgIGJvdGhP
dXRPZkJvdW5kc05keCA9IGk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGJvdGhPdXRPZkJv
dW5kc05keCAhPSAtMSkgeworICAgICAgICBzYW1wbGVDb2xvcnNbYm90aE91dE9mQm91bmRzTmR4
XSA9IFswLCAwLCAwLCAwXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisg
ICAgICAgICAgICBpZiAoaSAhPSBib3RoT3V0T2ZCb3VuZHNOZHgpCisgICAgICAgICAgICAgICAg
c2FtcGxlQ29sb3JzW2JvdGhPdXRPZkJvdW5kc05keF0gPSBkZU1hdGguYWRkKHNhbXBsZUNvbG9y
c1tib3RoT3V0T2ZCb3VuZHNOZHhdLCBzYW1wbGVDb2xvcnNbaV0pOworCisgICAgICAgIHNhbXBs
ZUNvbG9yc1tib3RoT3V0T2ZCb3VuZHNOZHhdID0gZGVNYXRoLnNjYWxlKHNhbXBsZUNvbG9yc1ti
b3RoT3V0T2ZCb3VuZHNOZHhdLCAoMS4wIC8gMy4wKSk7CisgICAgfQorCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzYW1wbGVDb2xvcnMubGVuZ3RoOyBpKyspCisgICAgICAgIGRzdFtpXSA9IHNh
bXBsZUNvbG9yc1tpXTsKKworICAgIHJldHVybiBkc3Q7Cit9OworCisvLyBcdG9kbyBbMjAxNC0w
Mi0xOSBweXJ5XSBPcHRpbWl6ZSBmYWNlQWNjZXNzZXMKKy8qKgorICogQHBhcmFtIHtBcnJheTx0
Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+fSBmYWNlQWNjZXNzZXMKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gYmFzZUZhY2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5T
YW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFtIHtudW1iZXJ9
IHQKKyAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0K
KyAqLwordGN1VGV4dHVyZS5zYW1wbGVDdWJlU2VhbWxlc3NMaW5lYXIgPSBmdW5jdGlvbihmYWNl
QWNjZXNzZXMsIGJhc2VGYWNlLCBzYW1wbGVyLCBzLCB0LCBkZXB0aCkgeworICAgIERFX0FTU0VS
VChmYWNlQWNjZXNzZXNbMF0uZ2V0V2lkdGgoKSA9PSBmYWNlQWNjZXNzZXNbMF0uZ2V0SGVpZ2h0
KCkpOworCisgICAgdmFyIHNpemUgPSBmYWNlQWNjZXNzZXNbMF0uZ2V0V2lkdGgoKTsKKyAgICAv
LyBOb24tbm9ybWFsaXplZCBjb29yZGluYXRlcy4KKyAgICB2YXIgdSA9IHM7CisgICAgdmFyIHYg
PSB0OworCisgICAgaWYgKHNhbXBsZXIubm9ybWFsaXplZENvb3JkcykgeworICAgICAgICB1ID0g
dGN1VGV4dHVyZS51bm5vcm1hbGl6ZShzYW1wbGVyLndyYXBTLCBzLCBzaXplKTsKKyAgICAgICAg
diA9IHRjdVRleHR1cmUudW5ub3JtYWxpemUoc2FtcGxlci53cmFwVCwgdCwgc2l6ZSk7CisgICAg
fQorCisgICAgLy8gR2V0IHNhbXBsZSBjb2xvcnMuCisKKyAgICAvKiogQHR5cGUge0FycmF5PEFy
cmF5PG51bWJlcj4+fSAqLyB2YXIgc2FtcGxlQ29sb3JzID0gdGN1VGV4dHVyZS5nZXRDdWJlTGlu
ZWFyU2FtcGxlcyhmYWNlQWNjZXNzZXMsIGJhc2VGYWNlLCB1LCB2LCBkZXB0aCk7CisKKyAgICAv
LyBJbnRlcnBvbGF0ZS4KKworICAgIHZhciBhID0gZGVNYXRoLmRlRmxvYXRGcmFjKHUgLSAwLjUp
OworICAgIHZhciBiID0gZGVNYXRoLmRlRmxvYXRGcmFjKHYgLSAwLjUpOworCisgICAgcmV0dXJu
IGRlTWF0aC5hZGQoKGRlTWF0aC5zY2FsZShkZU1hdGguc2NhbGUoc2FtcGxlQ29sb3JzWzBdLCAo
MS4wIC0gYSkpLCAoMS4wIC0gYikpKSwKKyAgICAgICAgICAgZGVNYXRoLmFkZCgoZGVNYXRoLnNj
YWxlKGRlTWF0aC5zY2FsZShzYW1wbGVDb2xvcnNbMV0sIChhKSksICgxLjAgLSBiKSkpLAorICAg
ICAgICAgICBkZU1hdGguYWRkKChkZU1hdGguc2NhbGUoZGVNYXRoLnNjYWxlKHNhbXBsZUNvbG9y
c1syXSwgKDEuMCAtIGEpKSwgKGIpKSksCisgICAgICAgICAgICAgICAgICAgICAgKGRlTWF0aC5z
Y2FsZShkZU1hdGguc2NhbGUoc2FtcGxlQ29sb3JzWzNdLCAoYSkpLCAoYikpKSkpKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHtBcnJheTxBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJB
Y2Nlc3M+Pn0gZmFjZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAqIEBwYXJhbSB7
dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9
IHNhbXBsZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBzCisgKiBAcGFyYW0ge251bWJlcn0gdAorICog
QHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgKiBAcGFyYW0ge251bWJlcj19IGxvZAorICogQHJldHVy
biB7QXJyYXk8bnVtYmVyPn0KKyAqLwordGN1VGV4dHVyZS5zYW1wbGVMZXZlbEFycmF5Q3ViZVNl
YW1sZXNzID0gZnVuY3Rpb24oZmFjZXMsIG51bUxldmVscywgZmFjZSwgc2FtcGxlciwgcywgdCwg
ZGVwdGgsIGxvZCkgeworICAgIGxvZCA9IGxvZCB8fCAwOworICAgIHZhciBtYWduaWZpZWQgPSBs
b2QgPD0gc2FtcGxlci5sb2RUaHJlc2hvbGQ7CisgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkZp
bHRlck1vZGV9ICovIHZhciBmaWx0ZXJNb2RlID0gbWFnbmlmaWVkID8gc2FtcGxlci5tYWdGaWx0
ZXIgOiBzYW1wbGVyLm1pbkZpbHRlcjsKKyAgICAvKiogQHR5cGUge0FycmF5PHRjdVRleHR1cmUu
Q29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59ICovIHZhciBmYWNlQWNjZXNzZXMgPSBbXTsKKyAgICAv
KiogQHR5cGUge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0qLyB2YXIgbGV2ZWxGaWx0ZXI7CisKKyAg
ICBzd2l0Y2ggKGZpbHRlck1vZGUpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1v
ZGUuTkVBUkVTVDoKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFt
bGVzc05lYXJlc3QoZmFjZXNbZmFjZV1bMF0sIHNhbXBsZXIsIHMsIHQsIGRlcHRoKTsKKworICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVI6IHsKKyAgICAgICAgICAgIGZh
Y2VBY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPYmplY3Qu
a2V5cyh0Y3VUZXh0dXJlLkN1YmVGYWNlKS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBm
YWNlQWNjZXNzZXNbaV0gPSBmYWNlc1tpXVswXTsKKworICAgICAgICAgICAgcmV0dXJuIHRjdVRl
eHR1cmUuc2FtcGxlQ3ViZVNlYW1sZXNzTGluZWFyKGZhY2VBY2Nlc3NlcywgZmFjZSwgc2FtcGxl
ciwgcywgdCwgZGVwdGgpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZp
bHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9ORUFSRVNUOiB7CisgICAgICAgICAgICB2YXIgbWF4
TGV2ZWwgPSBudW1MZXZlbHMgLSAxOworICAgICAgICAgICAgdmFyIGxldmVsID0gZGVNYXRoLmNs
YW1wKE1hdGguY2VpbChsb2QgKyAwLjUpIC0gMSwgMCwgbWF4TGV2ZWwpOworICAgICAgICAgICAg
bGV2ZWxGaWx0ZXIgPSAoZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFS
X01JUE1BUF9ORUFSRVNUKSA/IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVIgOiB0Y3VUZXh0
dXJlLkZpbHRlck1vZGUuTkVBUkVTVDsKKworICAgICAgICAgICAgaWYgKGxldmVsRmlsdGVyID09
IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUKQorICAgICAgICAgICAgICAgIHJldHVybiB0
Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVzc05lYXJlc3QoZmFjZXNbZmFjZV1bbGV2ZWxdLCBz
YW1wbGVyLCBzLCB0LCBkZXB0aCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBERV9BU1NFUlQobGV2ZWxGaWx0ZXIgPT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUik7
CisKKyAgICAgICAgICAgICAgICBmYWNlQWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IE9iamVjdC5rZXlzKHRjdVRleHR1cmUuQ3ViZUZhY2UpLmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmYWNlQWNjZXNzZXNbaV0gPSBmYWNlc1tpXVts
ZXZlbF07CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1VGV4dHVyZS5zYW1wbGVDdWJlU2Vh
bWxlc3NMaW5lYXIoZmFjZUFjY2Vzc2VzLCBmYWNlLCBzYW1wbGVyLCBzLCB0LCBkZXB0aCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVy
TW9kZS5ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5GaWx0
ZXJNb2RlLkxJTkVBUl9NSVBNQVBfTElORUFSOiB7CisgICAgICAgICAgICB2YXIgbWF4TGV2ZWwg
PSBudW1MZXZlbHMgLSAxOworICAgICAgICAgICAgdmFyIGxldmVsMCA9IGRlTWF0aC5jbGFtcChN
YXRoLmZsb29yKGxvZCksIDAsIG1heExldmVsKTsKKyAgICAgICAgICAgIHZhciBsZXZlbDEgPSBN
YXRoLm1pbihtYXhMZXZlbCwgbGV2ZWwwICsgMSk7CisgICAgICAgICAgICBsZXZlbEZpbHRlciA9
IChmaWx0ZXJNb2RlID09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVB
UikgPyB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSIDogdGN1VGV4dHVyZS5GaWx0ZXJNb2Rl
Lk5FQVJFU1Q7CisgICAgICAgICAgICB2YXIgZiA9IGRlTWF0aC5kZUZsb2F0RnJhYyhsb2QpOwor
ICAgICAgICAgICAgdmFyIHQwID0gW107CisgICAgICAgICAgICB2YXIgdDEgPSBbXTsKKworICAg
ICAgICAgICAgaWYgKGxldmVsRmlsdGVyID09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNU
KSB7CisgICAgICAgICAgICAgICAgdDAgPSB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVzc05l
YXJlc3QoZmFjZXNbZmFjZV1bbGV2ZWwwXSwgc2FtcGxlciwgcywgdCwgZGVwdGgpOworICAgICAg
ICAgICAgICAgIHQxID0gdGN1VGV4dHVyZS5zYW1wbGVDdWJlU2VhbWxlc3NOZWFyZXN0KGZhY2Vz
W2ZhY2VdW2xldmVsMV0sIHNhbXBsZXIsIHMsIHQsIGRlcHRoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgREVfQVNTRVJUKGxldmVsRmlsdGVyID09IHRjdVRleHR1cmUu
RmlsdGVyTW9kZS5MSU5FQVIpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0
Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+fSovIHZhciBmYWNlQWNjZXNzZXMwID0g
W107CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4
ZWxCdWZmZXJBY2Nlc3M+fSovIHZhciBmYWNlQWNjZXNzZXMxID0gW107CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyh0Y3VUZXh0dXJlLkN1YmVGYWNlKS5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmYWNlQWNjZXNzZXMwW2ldID0gZmFj
ZXNbaV1bbGV2ZWwwXTsKKyAgICAgICAgICAgICAgICAgICAgZmFjZUFjY2Vzc2VzMVtpXSA9IGZh
Y2VzW2ldW2xldmVsMV07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdDAg
PSB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVzc0xpbmVhcihmYWNlQWNjZXNzZXMwLCBmYWNl
LCBzYW1wbGVyLCBzLCB0LCBkZXB0aCk7CisgICAgICAgICAgICAgICAgdDEgPSB0Y3VUZXh0dXJl
LnNhbXBsZUN1YmVTZWFtbGVzc0xpbmVhcihmYWNlQWNjZXNzZXMxLCBmYWNlLCBzYW1wbGVyLCBz
LCB0LCBkZXB0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBkZU1hdGgu
YWRkKGRlTWF0aC5zY2FsZSh0MCwgKDEuMCAtIGYpKSwgZGVNYXRoLnNjYWxlKHQxLCBmKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdVbnN1cHBvcnRlZCBmaWx0ZXIgbW9kZScpOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFt
IHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGZhY2VBY2Nlc3MKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisg
KiBAcGFyYW0ge251bWJlcn0gcworICogQHBhcmFtIHtudW1iZXJ9IHQKKyAqIEBwYXJhbSB7bnVt
YmVyPX0gZGVwdGgKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZS5zYW1wbGVD
dWJlU2VhbWxlc3NOZWFyZXN0Q29tcGFyZSA9IGZ1bmN0aW9uKGZhY2VBY2Nlc3MsIHNhbXBsZXIs
IHJlZiwgcywgdCwgZGVwdGgpIHsKKyAgICBkZXB0aCA9IGRlcHRoID8gZGVwdGggOiAwOworICAg
IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAqLyB2YXIgY2xhbXBpbmdTYW1wbGVyID0g
ZGVVdGlsLmNsb25lKHNhbXBsZXIpOworICAgIGNsYW1waW5nU2FtcGxlci53cmFwUyA9IHRjdVRl
eHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRTsKKyAgICBjbGFtcGluZ1NhbXBsZXIud3JhcFQg
PSB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0U7CisgICAgcmV0dXJuIGZhY2VBY2Nl
c3Muc2FtcGxlMkRDb21wYXJlKGNsYW1waW5nU2FtcGxlciwgdGN1VGV4dHVyZS5GaWx0ZXJNb2Rl
Lk5FQVJFU1QsIHJlZiwgcywgdCwgWzAsIDAsIGRlcHRoXSk7Cit9OworCisvKioKKyAqIEBwYXJh
bSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0gZmFjZUFjY2Vzc2Vz
CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ3ViZUZhY2V9IGJhc2VGYWNlCisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9IHJlZgorICogQHBh
cmFtIHtudW1iZXJ9IHMKKyAqIEBwYXJhbSB7bnVtYmVyfSB0CisgKiBAcmV0dXJuIHtudW1iZXJ9
CisgKi8KK3RjdVRleHR1cmUuc2FtcGxlQ3ViZVNlYW1sZXNzTGluZWFyQ29tcGFyZSA9IGZ1bmN0
aW9uKGZhY2VBY2Nlc3NlcywgYmFzZUZhY2UsIHNhbXBsZXIsIHJlZiwgcywgdCkgeworICAgIERF
X0FTU0VSVChmYWNlQWNjZXNzZXNbMF0uZ2V0V2lkdGgoKSA9PSBmYWNlQWNjZXNzZXNbMF0uZ2V0
SGVpZ2h0KCkpOworCisgICAgdmFyIHNpemUgPSBmYWNlQWNjZXNzZXNbMF0uZ2V0V2lkdGgoKTsK
KyAgICAvLyBOb24tbm9ybWFsaXplZCBjb29yZGluYXRlcy4KKyAgICB2YXIgdSA9IHM7CisgICAg
dmFyIHYgPSB0OworCisgICAgaWYgKHNhbXBsZXIubm9ybWFsaXplZENvb3JkcykgeworICAgICAg
ICB1ID0gdGN1VGV4dHVyZS51bm5vcm1hbGl6ZShzYW1wbGVyLndyYXBTLCBzLCBzaXplKTsKKyAg
ICAgICAgdiA9IHRjdVRleHR1cmUudW5ub3JtYWxpemUoc2FtcGxlci53cmFwVCwgdCwgc2l6ZSk7
CisgICAgfQorCisgICAgdmFyIHgwID0gTWF0aC5mbG9vcih1IC0gMC41KTsKKyAgICB2YXIgeDEg
PSB4MCArIDE7CisgICAgdmFyIHkwID0gTWF0aC5mbG9vcih2IC0gMC41KTsKKyAgICB2YXIgeTEg
PSB5MCArIDE7CisgICAgdmFyIGJhc2VTYW1wbGVDb29yZHMgPSBbCisgICAgICAgIFt4MCwgeTBd
LAorICAgICAgICBbeDEsIHkwXSwKKyAgICAgICAgW3gwLCB5MV0sCisgICAgICAgIFt4MSwgeTFd
CisgICAgXTsKKyAgICB2YXIgc2FtcGxlUmVzID0gW107CisgICAgdmFyIGhhc0JvdGhDb29yZHNP
dXRPZkJvdW5kcyA9IFtdOyAvLyE8IFdoZXRoZXIgY29ycmVjdEN1YmVGYWNlKCkgcmV0dXJucyBD
VUJFRkFDRV9MQVNULCBpLmUuIGJvdGggdSBhbmQgdiBhcmUgb3V0IG9mIGJvdW5kcy4KKworICAg
IC8vIEZpbmQgY29ycmVjdCBmYWNlcyBhbmQgY29vcmRpbmF0ZXMgZm9yIG91dC1vZi1ib3VuZHMg
c2FtcGxlIGNvb3JkaW5hdGVzLgorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSAqLyB2YXIgY29v
cmRzID0gdGN1VGV4dHVyZS5yZW1hcEN1YmVFZGdlQ29vcmRzKG5ldyB0Y3VUZXh0dXJlLkN1YmVG
YWNlQ29vcmRzKGJhc2VGYWNlLCBiYXNlU2FtcGxlQ29vcmRzW2ldKSwgc2l6ZSk7CisgICAgICAg
IGhhc0JvdGhDb29yZHNPdXRPZkJvdW5kc1tpXSA9IGNvb3JkcyA9PSBudWxsOworCisgICAgICAg
IGlmICghaGFzQm90aENvb3Jkc091dE9mQm91bmRzW2ldKSB7CisgICAgICAgICAgICB2YXIgaXNG
aXhlZFBvaW50RGVwdGggPSB0Y3VUZXh0dXJlLmlzRml4ZWRQb2ludERlcHRoVGV4dHVyZUZvcm1h
dChmYWNlQWNjZXNzZXNbY29vcmRzLmZhY2VdLmdldEZvcm1hdCgpKTsKKworICAgICAgICAgICAg
c2FtcGxlUmVzW2ldID0gdGN1VGV4dHVyZS5leGVjQ29tcGFyZShmYWNlQWNjZXNzZXNbY29vcmRz
LmZhY2VdLmdldFBpeGVsKGNvb3Jkcy5zLCBjb29yZHMudCksIHNhbXBsZXIuY29tcGFyZSwgc2Ft
cGxlci5jb21wYXJlQ2hhbm5lbCwgcmVmLCBpc0ZpeGVkUG9pbnREZXB0aCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBJZiBhIHNhbXBsZSB3YXMgb3V0IG9mIGJvdW5kcyBpbiBib3RoIHUg
YW5kIHYsIHdlIGdldCBpdHMgY29sb3IgZnJvbSB0aGUgYXZlcmFnZSBvZiB0aGUgdGhyZWUgb3Ro
ZXIgc2FtcGxlcy4KKyAgICAvLyBcbm90ZSBUaGlzIGF2ZXJhZ2luZyBiZWhhdmlvciBpcyBub3Qg
cmVxdWlyZWQgYnkgdGhlIEdMRVMzIHNwZWMgKHRob3VnaCBpdCBpcyByZWNvbW1lbmRlZCkuIEdM
RVMzIHNwZWMgb25seQorICAgIC8vICAgICAgICAgcmVxdWlyZXMgdGhhdCBpZiB0aGUgdGhyZWUg
b3RoZXIgc2FtcGxlcyBhbGwgaGF2ZSB0aGUgc2FtZSBjb2xvciwgdGhlbiB0aGUgZG91Ymx5LW91
dC1vZi1ib3VuZHMgc2FtcGxlCisgICAgLy8gICAgICAgICBtdXN0IGhhdmUgdGhpcyBjb2xvciBh
cyB3ZWxsLgorCisgICAgdmFyIGJvdGhPdXRPZkJvdW5kc05keCA9IC0xOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmIChoYXNCb3RoQ29vcmRzT3V0T2ZCb3Vu
ZHNbaV0pIHsKKyAgICAgICAgICAgIERFX0FTU0VSVChib3RoT3V0T2ZCb3VuZHNOZHggPCAwKTsg
Ly8gT25seSBvbmUgc2FtcGxlIGNhbiBiZSBvdXQgb2YgYm91bmRzIGluIGJvdGggdSBhbmQgdi4K
KyAgICAgICAgICAgIGJvdGhPdXRPZkJvdW5kc05keCA9IGk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKGJvdGhPdXRPZkJvdW5kc05keCAhPSAtMSkgeworICAgICAgICBzYW1wbGVSZXNbYm90
aE91dE9mQm91bmRzTmR4XSA9IDAuMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBp
KyspCisgICAgICAgICAgICBpZiAoaSAhPSBib3RoT3V0T2ZCb3VuZHNOZHgpCisgICAgICAgICAg
ICAgICAgc2FtcGxlUmVzW2JvdGhPdXRPZkJvdW5kc05keF0gKz0gc2FtcGxlUmVzW2ldOworCisg
ICAgICAgIHNhbXBsZVJlc1tib3RoT3V0T2ZCb3VuZHNOZHhdID0gc2FtcGxlUmVzW2JvdGhPdXRP
ZkJvdW5kc05keF0gKiAoMS4wIC8gMy4wKTsKKyAgICB9CisKKyAgICAvLyBJbnRlcnBvbGF0ZS4K
KworICAgIHZhciBhID0gZGVNYXRoLmRlRmxvYXRGcmFjKHUgLSAwLjUpOworICAgIHZhciBiID0g
ZGVNYXRoLmRlRmxvYXRGcmFjKHYgLSAwLjUpOworCisgICAgcmV0dXJuIChzYW1wbGVSZXNbMF0g
KiAoMS4wIC0gYSkgKiAoMS4wIC0gYikpICsKKyAgICAgICAgICAgKHNhbXBsZVJlc1sxXSAqIChh
KSAqICgxLjAgLSBiKSkgKworICAgICAgICAgICAoc2FtcGxlUmVzWzJdICogKDEuMCAtIGEpICog
KGIpKSArCisgICAgICAgICAgIChzYW1wbGVSZXNbM10gKiAoYSkgKiAoYikpOworfTsKKworLyoq
CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gZmFjZUFjY2Vz
cworICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7bnVt
YmVyfSBzCisgKiBAcGFyYW0ge251bWJlcn0gdAorICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisg
KiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICovCit0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFt
bGVzc05lYXJlc3QgPSBmdW5jdGlvbihmYWNlQWNjZXNzLCBzYW1wbGVyLCBzLCB0LCBkZXB0aCkg
eworICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAqLyB2YXIgY2xhbXBpbmdTYW1w
bGVyID0gc2FtcGxlcjsKKyAgICBjbGFtcGluZ1NhbXBsZXIud3JhcFMgPSB0Y3VUZXh0dXJlLldy
YXBNb2RlLkNMQU1QX1RPX0VER0U7CisgICAgY2xhbXBpbmdTYW1wbGVyLndyYXBUID0gdGN1VGV4
dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgIHJldHVybiBmYWNlQWNjZXNzLnNhbXBs
ZTJEKGNsYW1waW5nU2FtcGxlciwgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsIHMsIHQs
IGRlcHRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZHMgVmVj
MyBjdWJlIGNvb3JkaW5hdGVzCisgKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRz
fQorICovCit0Y3VUZXh0dXJlLmdldEN1YmVGYWNlQ29vcmRzID0gZnVuY3Rpb24oY29vcmRzKSB7
CisgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLnNlbGVjdEN1YmVGYWNlKGNvb3Jkcyk7CisgICAg
cmV0dXJuIG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzKGZhY2UsIHRjdVRleHR1cmUucHJv
amVjdFRvRmFjZShmYWNlLCBjb29yZHMpKTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxB
cnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+Pn0gZmFjZXMKKyAqIEBwYXJh
bSB7bnVtYmVyfSBudW1MZXZlbHMKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFj
ZQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7bnVt
YmVyfSByZWYKKyAqIEBwYXJhbSB7bnVtYmVyfSBzCisgKiBAcGFyYW0ge251bWJlcn0gdAorICog
QHBhcmFtIHtudW1iZXJ9IGxvZAorICogQHJldHVybiB7bnVtYmVyfQorICovCit0Y3VUZXh0dXJl
LnNhbXBsZUxldmVsQXJyYXlDdWJlU2VhbWxlc3NDb21wYXJlID0gZnVuY3Rpb24oZmFjZXMsIG51
bUxldmVscywgZmFjZSwgc2FtcGxlciwgcmVmLCBzLCB0LCBsb2QpIHsKKyAgICB2YXIgbWFnbmlm
aWVkID0gbG9kIDw9IHNhbXBsZXIubG9kVGhyZXNob2xkOworICAgIC8qKiBAdHlwZSB7dGN1VGV4
dHVyZS5GaWx0ZXJNb2RlfSovIHZhciBmaWx0ZXJNb2RlID0gbWFnbmlmaWVkID8gc2FtcGxlci5t
YWdGaWx0ZXIgOiBzYW1wbGVyLm1pbkZpbHRlcjsKKyAgICAvKiogQHR5cGUge0FycmF5PHRjdVRl
eHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59ICovIHZhciBmYWNlQWNjZXNzZXMgPSBbXTsK
KyAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gKi8gdmFyIGxldmVsRmlsdGVy
OworCisgICAgc3dpdGNoIChmaWx0ZXJNb2RlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5G
aWx0ZXJNb2RlLk5FQVJFU1Q6CisgICAgICAgICAgICByZXR1cm4gdGN1VGV4dHVyZS5zYW1wbGVD
dWJlU2VhbWxlc3NOZWFyZXN0Q29tcGFyZShmYWNlc1tmYWNlXVswXSwgc2FtcGxlciwgcmVmLCBz
LCB0KTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVI6IHsKKyAg
ICAgICAgICAgIGZhY2VBY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBPYmplY3Qua2V5cyh0Y3VUZXh0dXJlLkN1YmVGYWNlKS5sZW5ndGg7IGkrKykKKyAgICAg
ICAgICAgICAgICBmYWNlQWNjZXNzZXNbaV0gPSBmYWNlc1tpXVswXTsKKworICAgICAgICAgICAg
cmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlQ3ViZVNlYW1sZXNzTGluZWFyQ29tcGFyZShmYWNlQWNj
ZXNzZXMsIGZhY2UsIHNhbXBsZXIsIHJlZiwgcywgdCk7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOgorICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1Q6IHsKKyAg
ICAgICAgICAgIHZhciBtYXhMZXZlbCA9IG51bUxldmVscyAtIDE7CisgICAgICAgICAgICB2YXIg
bGV2ZWwgPSBkZU1hdGguY2xhbXAoTWF0aC5jZWlsKGxvZCArIDAuNSkgLSAxLCAwLCBtYXhMZXZl
bCk7CisgICAgICAgICAgICBsZXZlbEZpbHRlciA9IGZpbHRlck1vZGUgPT0gdGN1VGV4dHVyZS5G
aWx0ZXJNb2RlLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCA/IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5M
SU5FQVIgOiB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVDsKKworICAgICAgICAgICAgaWYg
KGxldmVsRmlsdGVyID09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUKQorICAgICAgICAg
ICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVzc05lYXJlc3RDb21wYXJl
KGZhY2VzW2ZhY2VdW2xldmVsXSwgc2FtcGxlciwgcmVmLCBzLCB0KTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIERFX0FTU0VSVChsZXZlbEZpbHRlciA9PSB0Y3VUZXh0dXJl
LkZpbHRlck1vZGUuTElORUFSKTsKKworICAgICAgICAgICAgICAgIGZhY2VBY2Nlc3NlcyA9IFtd
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT2JqZWN0LmtleXModGN1VGV4
dHVyZS5DdWJlRmFjZSkubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZhY2VBY2Nl
c3Nlc1tpXSA9IGZhY2VzW2ldW2xldmVsXTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0Y3VU
ZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVzc0xpbmVhckNvbXBhcmUoZmFjZUFjY2Vzc2VzLCBmYWNl
LCBzYW1wbGVyLCByZWYsIHMsIHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVBUjogewor
ICAgICAgICAgICAgdmFyIG1heExldmVsID0gbnVtTGV2ZWxzIC0gMTsKKyAgICAgICAgICAgIHZh
ciBsZXZlbDAgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihsb2QpLCAwLCBtYXhMZXZlbCk7Cisg
ICAgICAgICAgICB2YXIgbGV2ZWwxID0gTWF0aC5taW4obWF4TGV2ZWwsIGxldmVsMCArIDEpOwor
ICAgICAgICAgICAgbGV2ZWxGaWx0ZXIgPSAoZmlsdGVyTW9kZSA9PSB0Y3VUZXh0dXJlLkZpbHRl
ck1vZGUuTElORUFSX01JUE1BUF9MSU5FQVIpID8gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVB
UiA6IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworICAgICAgICAgICAgdmFyIGYgPSBk
ZU1hdGguZGVGbG9hdEZyYWMobG9kKTsKKyAgICAgICAgICAgIHZhciB0MDsKKyAgICAgICAgICAg
IHZhciB0MTsKKworICAgICAgICAgICAgaWYgKGxldmVsRmlsdGVyID09IHRjdVRleHR1cmUuRmls
dGVyTW9kZS5ORUFSRVNUKSB7CisgICAgICAgICAgICAgICAgdDAgPSB0Y3VUZXh0dXJlLnNhbXBs
ZUN1YmVTZWFtbGVzc05lYXJlc3RDb21wYXJlKGZhY2VzW2ZhY2VdW2xldmVsMF0sIHNhbXBsZXIs
IHJlZiwgcywgdCk7CisgICAgICAgICAgICAgICAgdDEgPSB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVT
ZWFtbGVzc05lYXJlc3RDb21wYXJlKGZhY2VzW2ZhY2VdW2xldmVsMV0sIHNhbXBsZXIsIHJlZiwg
cywgdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFX0FTU0VSVChs
ZXZlbEZpbHRlciA9PSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSKTsKKworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNz
Pn0gKi8gdmFyIGZhY2VBY2Nlc3NlczAgPSBbXTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e0FycmF5PHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcz59ICovIHZhciBmYWNlQWNj
ZXNzZXMxID0gW107CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPYmplY3Qu
a2V5cyh0Y3VUZXh0dXJlLkN1YmVGYWNlKS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAg
ICAgICBmYWNlQWNjZXNzZXMwW2ldID0gZmFjZXNbaV1bbGV2ZWwwXTsKKyAgICAgICAgICAgICAg
ICAgICAgZmFjZUFjY2Vzc2VzMVtpXSA9IGZhY2VzW2ldW2xldmVsMV07CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgdDAgPSB0Y3VUZXh0dXJlLnNhbXBsZUN1YmVTZWFtbGVz
c0xpbmVhckNvbXBhcmUoZmFjZUFjY2Vzc2VzMCwgZmFjZSwgc2FtcGxlciwgcmVmLCBzLCB0KTsK
KyAgICAgICAgICAgICAgICB0MSA9IHRjdVRleHR1cmUuc2FtcGxlQ3ViZVNlYW1sZXNzTGluZWFy
Q29tcGFyZShmYWNlQWNjZXNzZXMxLCBmYWNlLCBzYW1wbGVyLCByZWYsIHMsIHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdDAgKiAoMS4wIC0gZikgKyB0MSAqIGY7Cisg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdVbnN1cHBvcnRlZCBmaWx0ZXIgbW9kZScpOworICAgIH0KK307CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkfQorICog
QHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICogQHBhcmFtIHtudW1i
ZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKi8KK3RjdVRleHR1cmUuVGV4
dHVyZTJEID0gZnVuY3Rpb24oZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLmNhbGwodGhpcywgZm9ybWF0LCB0Y3VUZXh0dXJlLmNvbXB1
dGVNaXBQeXJhbWlkTGV2ZWxzKHdpZHRoLCBoZWlnaHQpKTsKKyAgICB0aGlzLm1fd2lkdGggPSB3
aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0OworICAgIHRoaXMubV92aWV3ID0gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZTJEVmlldyh0aGlzLmdldE51bUxldmVscygpLCB0aGlzLmdldExl
dmVscygpKTsKK307CisKK3RjdVRleHR1cmUuVGV4dHVyZTJELnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUodGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnByb3RvdHlwZSk7Cit0Y3VUZXh0
dXJlLlRleHR1cmUyRC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0Y3VUZXh0dXJlLlRleHR1cmUy
RDsKKwordGN1VGV4dHVyZS5UZXh0dXJlMkQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24o
KSB7IHJldHVybiB0aGlzLm1fd2lkdGg7IH07Cit0Y3VUZXh0dXJlLlRleHR1cmUyRC5wcm90b3R5
cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1faGVpZ2h0OyB9OworLyoq
IEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZTJEVmlld30gKi8KK3RjdVRleHR1cmUuVGV4dHVy
ZTJELnByb3RvdHlwZS5nZXRWaWV3ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fdmlldzsg
fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYmFzZUxldmVsCisgKiBAcGFyYW0ge251bWJl
cn0gbWF4TGV2ZWwKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZTJEVmlld30KKyAqLwor
dGN1VGV4dHVyZS5UZXh0dXJlMkQucHJvdG90eXBlLmdldFN1YlZpZXcgPSBmdW5jdGlvbihiYXNl
TGV2ZWwsIG1heExldmVsKSB7IHJldHVybiB0aGlzLm1fdmlldy5nZXRTdWJWaWV3KGJhc2VMZXZl
bCwgbWF4TGV2ZWwpOyB9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbE5keAorICov
Cit0Y3VUZXh0dXJlLlRleHR1cmUyRC5wcm90b3R5cGUuYWxsb2NMZXZlbCA9IGZ1bmN0aW9uKGxl
dmVsTmR4KSB7CisgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIobGV2ZWxOZHgsIDAs
IHRoaXMuZ2V0TnVtTGV2ZWxzKCkpKTsKKworICAgIHZhciB3aWR0aCA9IHRjdVRleHR1cmUuZ2V0
TWlwUHlyYW1pZExldmVsU2l6ZSh0aGlzLm1fd2lkdGgsIGxldmVsTmR4KTsKKyAgICB2YXIgaGVp
Z2h0ID0gdGN1VGV4dHVyZS5nZXRNaXBQeXJhbWlkTGV2ZWxTaXplKHRoaXMubV9oZWlnaHQsIGxl
dmVsTmR4KTsKKworICAgIHRjdVRleHR1cmUuVGV4dHVyZUxldmVsUHlyYW1pZC5wcm90b3R5cGUu
YWxsb2NMZXZlbC5jYWxsKHRoaXMsIGxldmVsTmR4LCB3aWR0aCwgaGVpZ2h0LCAxKTsKK307CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2
ZWxQeXJhbWlkfQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAor
ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKiBA
cGFyYW0ge251bWJlcn0gbnVtTGF5ZXJzCisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXkg
PSBmdW5jdGlvbihmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG51bUxheWVycykgeworICAgIHRjdVRl
eHR1cmUuVGV4dHVyZUxldmVsUHlyYW1pZC5jYWxsKHRoaXMsIGZvcm1hdCwgdGN1VGV4dHVyZS5j
b21wdXRlTWlwUHlyYW1pZExldmVscyh3aWR0aCwgaGVpZ2h0KSk7CisgICAgdGhpcy5tX3dpZHRo
ID0gd2lkdGg7CisgICAgdGhpcy5tX2hlaWdodCA9IGhlaWdodDsKKyAgICB0aGlzLm1fbnVtTGF5
ZXJzID0gbnVtTGF5ZXJzOworICAgIHRoaXMubV92aWV3ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVy
ZTJEQXJyYXlWaWV3KHRoaXMuZ2V0TnVtTGV2ZWxzKCksIHRoaXMuZ2V0TGV2ZWxzKCkpOworfTsK
KwordGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRleHR1cmUuVGV4dHVyZUxldmVsUHlyYW1pZC5wcm90b3R5cGUpOwordGN1VGV4dHVyZS5UZXh0
dXJlMkRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0Y3VUZXh0dXJlLlRleHR1cmUyREFy
cmF5OworLyoqIEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fSAqLwordGN1
VGV4dHVyZS5UZXh0dXJlMkRBcnJheS5wcm90b3R5cGUuZ2V0VmlldyA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gdGhpcy5tX3ZpZXc7IH07CisKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0
dXJlLlRleHR1cmUyREFycmF5LnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpcy5tX3dpZHRoOyB9OworCisvKiogQHJldHVybiB7bnVtYmVyfSAqLwordGN1VGV4dHVy
ZS5UZXh0dXJlMkRBcnJheS5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1faGVpZ2h0OyB9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbE5keAor
ICovCit0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5LnByb3RvdHlwZS5hbGxvY0xldmVsID0gZnVu
Y3Rpb24obGV2ZWxOZHgpIHsKKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlSW5Cb3VuZHMzMihsZXZl
bE5keCwgMCwgdGhpcy5nZXROdW1MZXZlbHMoKSkpOworCisgICAgdmFyIHdpZHRoID0gdGN1VGV4
dHVyZS5nZXRNaXBQeXJhbWlkTGV2ZWxTaXplKHRoaXMubV93aWR0aCwgbGV2ZWxOZHgpOworICAg
IHZhciBoZWlnaHQgPSB0Y3VUZXh0dXJlLmdldE1pcFB5cmFtaWRMZXZlbFNpemUodGhpcy5tX2hl
aWdodCwgbGV2ZWxOZHgpOworCisgICAgdGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnBy
b3RvdHlwZS5hbGxvY0xldmVsLmNhbGwodGhpcywgbGV2ZWxOZHgsIHdpZHRoLCBoZWlnaHQsIHRo
aXMubV9udW1MYXllcnMpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHt0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbFB5cmFtaWR9CisgKiBAcGFyYW0ge3RjdVRleHR1cmUu
VGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAqIEBwYXJh
bSB7bnVtYmVyfSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICovCit0Y3VUZXh0
dXJlLlRleHR1cmUzRCA9IGZ1bmN0aW9uKGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpIHsK
KyAgICB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbFB5cmFtaWQuY2FsbCh0aGlzLCBmb3JtYXQsIHRj
dVRleHR1cmUuY29tcHV0ZU1pcFB5cmFtaWRMZXZlbHMod2lkdGgsIGhlaWdodCwgZGVwdGgpKTsK
KyAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0Owor
ICAgIHRoaXMubV9kZXB0aCA9IGRlcHRoOworICAgIHRoaXMubV92aWV3ID0gbmV3IHRjdVRleHR1
cmUuVGV4dHVyZTNEVmlldyh0aGlzLmdldE51bUxldmVscygpLCB0aGlzLmdldExldmVscygpKTsK
K307CisKK3RjdVRleHR1cmUuVGV4dHVyZTNELnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1
VGV4dHVyZS5UZXh0dXJlTGV2ZWxQeXJhbWlkLnByb3RvdHlwZSk7Cit0Y3VUZXh0dXJlLlRleHR1
cmUzRC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0Y3VUZXh0dXJlLlRleHR1cmUzRDsKKwordGN1
VGV4dHVyZS5UZXh0dXJlM0QucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1fd2lkdGg7IH07Cit0Y3VUZXh0dXJlLlRleHR1cmUzRC5wcm90b3R5cGUuZ2V0SGVp
Z2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1faGVpZ2h0OyB9OwordGN1VGV4dHVyZS5U
ZXh0dXJlM0QucHJvdG90eXBlLmdldERlcHRoID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1f
ZGVwdGg7IH07Cit0Y3VUZXh0dXJlLlRleHR1cmUzRC5wcm90b3R5cGUuZ2V0VmlldyA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gdGhpcy5tX3ZpZXc7IH07CisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBi
YXNlTGV2ZWwKKyAqIEBwYXJhbSB7bnVtYmVyfSBtYXhMZXZlbAorICogQHJldHVybiB7dGN1VGV4
dHVyZS5UZXh0dXJlM0RWaWV3fQorICovCit0Y3VUZXh0dXJlLlRleHR1cmUzRC5wcm90b3R5cGUu
Z2V0U3ViVmlldyA9IGZ1bmN0aW9uKGJhc2VMZXZlbCwgbWF4TGV2ZWwpIHsgcmV0dXJuIHRoaXMu
bV92aWV3LmdldFN1YlZpZXcoYmFzZUxldmVsLCBtYXhMZXZlbCk7IH07CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IGxldmVsTmR4CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZTNELnByb3RvdHlw
ZS5hbGxvY0xldmVsID0gZnVuY3Rpb24obGV2ZWxOZHgpIHsKKyAgICBERV9BU1NFUlQoZGVNYXRo
LmRlSW5Cb3VuZHMzMihsZXZlbE5keCwgMCwgdGhpcy5nZXROdW1MZXZlbHMoKSkpOworCisgICAg
dmFyIHdpZHRoID0gdGN1VGV4dHVyZS5nZXRNaXBQeXJhbWlkTGV2ZWxTaXplKHRoaXMubV93aWR0
aCwgbGV2ZWxOZHgpOworICAgIHZhciBoZWlnaHQgPSB0Y3VUZXh0dXJlLmdldE1pcFB5cmFtaWRM
ZXZlbFNpemUodGhpcy5tX2hlaWdodCwgbGV2ZWxOZHgpOworICAgIHZhciBkZXB0aCA9IHRjdVRl
eHR1cmUuZ2V0TWlwUHlyYW1pZExldmVsU2l6ZSh0aGlzLm1fZGVwdGgsIGxldmVsTmR4KTsKKwor
ICAgIHRjdVRleHR1cmUuVGV4dHVyZUxldmVsUHlyYW1pZC5wcm90b3R5cGUuYWxsb2NMZXZlbC5j
YWxsKHRoaXMsIGxldmVsTmR4LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7Cit9OworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICogQHBhcmFtIHtB
cnJheTxBcnJheTx0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3M+Pn0gbGV2ZWxzCisg
Ki8KK3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3ID0gZnVuY3Rpb24obnVtTGV2ZWxzLCBsZXZl
bHMpIHsKKyAgICB0aGlzLm1fbnVtTGV2ZWxzID0gbnVtTGV2ZWxzOworICAgIHRoaXMubV9sZXZl
bHMgPSBsZXZlbHM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyfSBz
YW1wbGVyCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge251
bWJlcj19IGxvZAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gUGl4ZWwgY29sb3IKKyAqLwor
dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXcucHJvdG90eXBlLnNhbXBsZSA9IGZ1bmN0aW9uKHNh
bXBsZXIsIHRleENvb3JkLCBsb2QpIHsKKyAgICBERV9BU1NFUlQoc2FtcGxlci5jb21wYXJlID09
IHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORSk7CisKKyAgICAvLyBDb21w
dXRlcyAoZmFjZSwgcywgdCkuCisgICAgdmFyIGNvb3JkcyA9IHRjdVRleHR1cmUuZ2V0Q3ViZUZh
Y2VDb29yZHModGV4Q29vcmQpOworICAgIGlmIChzYW1wbGVyLnNlYW1sZXNzQ3ViZU1hcCkKKyAg
ICAgICAgcmV0dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheUN1YmVTZWFtbGVzcyh0aGlz
Lm1fbGV2ZWxzLCB0aGlzLm1fbnVtTGV2ZWxzLCBjb29yZHMuZmFjZSwgc2FtcGxlciwgY29vcmRz
LnMsIGNvb3Jkcy50LCAwIC8qIGRlcHRoICovLCBsb2QpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIHRjdVRleHR1cmUuc2FtcGxlTGV2ZWxBcnJheTJEKHRoaXMubV9sZXZlbHNbY29vcmRzLmZh
Y2VdLCB0aGlzLm1fbnVtTGV2ZWxzLCBzYW1wbGVyLCBjb29yZHMucywgY29vcmRzLnQsIDAgLyog
ZGVwdGggKi8sIGxvZCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVy
fSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHRleENvb3JkCisgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgKiBAcmV0dXJuIHtudW1iZXJ9
CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3LnByb3RvdHlwZS5zYW1wbGVDb21wYXJl
ID0gZnVuY3Rpb24oc2FtcGxlciwgcmVmLCB0ZXhDb29yZCwgbG9kKSB7CisgICAgREVfQVNTRVJU
KHNhbXBsZXIuY29tcGFyZSAhPSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX05P
TkUpOworCisgICAgLy8gQ29tcHV0ZXMgKGZhY2UsIHMsIHQpLgorICAgIHZhciBjb29yZHMgPSB0
Y3VUZXh0dXJlLmdldEN1YmVGYWNlQ29vcmRzKHRleENvb3JkKTsKKyAgICBpZiAoc2FtcGxlci5z
ZWFtbGVzc0N1YmVNYXApCisgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLnNhbXBsZUxldmVsQXJy
YXlDdWJlU2VhbWxlc3NDb21wYXJlKHRoaXMubV9sZXZlbHMsIHRoaXMubV9udW1MZXZlbHMsIGNv
b3Jkcy5mYWNlLCBzYW1wbGVyLCByZWYsIGNvb3Jkcy5zLCBjb29yZHMudCwgbG9kKTsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiB0Y3VUZXh0dXJlLnNhbXBsZUxldmVsQXJyYXkyRENvbXBhcmUo
dGhpcy5tX2xldmVsc1tjb29yZHMuZmFjZV0sIHRoaXMubV9udW1MZXZlbHMsIHNhbXBsZXIsIHJl
ZiwgY29vcmRzLnMsIGNvb3Jkcy50LCBsb2QsIFswLCAwLCAwXSk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHJldHVybiB7QXJyYXk8dGN1VGV4
dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzPn0KKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlQ3Vi
ZVZpZXcucHJvdG90eXBlLmdldEZhY2VMZXZlbHMgPSBmdW5jdGlvbihmYWNlKSB7IHJldHVybiB0
aGlzLm1fbGV2ZWxzW2ZhY2VdOyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1
cmUuVGV4dHVyZUN1YmVWaWV3LnByb3RvdHlwZS5nZXRTaXplID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1fbnVtTGV2ZWxzID4gMCA/IHRoaXMubV9sZXZlbHNbMF1bMF0uZ2V0V2lkdGgoKSA6
IDA7IH07CisKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJlLlRleHR1cmVDdWJl
Vmlldy5wcm90b3R5cGUuZ2V0TnVtTGV2ZWxzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1f
bnVtTGV2ZWxzOyB9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBuZHgKKyAqIEBwYXJhbSB7
dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHJldHVybiB7dGN1VGV4dHVyZS5Db25zdFBp
eGVsQnVmZmVyQWNjZXNzfQorICovCit0Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlldy5wcm90b3R5
cGUuZ2V0TGV2ZWxGYWNlID0gZnVuY3Rpb24obmR4LCBmYWNlKSB7CisgICAgYXNzZXJ0TXNnT3B0
aW9ucygwIDw9IG5keCAmJiBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzLCAnJywgZmFsc2UsIHRydWUp
OworICAgIHJldHVybiB0aGlzLm1fbGV2ZWxzW2ZhY2VdW25keF07Cit9OworCisvKioKKyAqIEBw
YXJhbSB7bnVtYmVyfSBiYXNlTGV2ZWwKKyAqIEBwYXJhbSB7bnVtYmVyfSBtYXhMZXZlbAorICog
QHJldHVybiB7dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXd9CisgKi8KK3RjdVRleHR1cmUuVGV4
dHVyZUN1YmVWaWV3LnByb3RvdHlwZS5nZXRTdWJWaWV3ID0gZnVuY3Rpb24oYmFzZUxldmVsLCBt
YXhMZXZlbCkgeworICAgIHZhciBjbGFtcGVkQmFzZSA9IGRlTWF0aC5jbGFtcChiYXNlTGV2ZWws
IDAsIHRoaXMubV9udW1MZXZlbHMgLSAxKTsKKyAgICB2YXIgY2xhbXBlZE1heCA9IGRlTWF0aC5j
bGFtcChtYXhMZXZlbCwgY2xhbXBlZEJhc2UsIHRoaXMubV9udW1MZXZlbHMgLSAxKTsKKyAgICB2
YXIgbnVtTGV2ZWxzID0gY2xhbXBlZE1heCAtIGNsYW1wZWRCYXNlICsgMTsKKyAgICB2YXIgbGV2
ZWxzID0gW107CisgICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKQorICAg
ICAgICBsZXZlbHMucHVzaCh0aGlzLmdldEZhY2VMZXZlbHModGN1VGV4dHVyZS5DdWJlRmFjZVtm
YWNlXSkuc2xpY2UoY2xhbXBlZEJhc2UsIG51bUxldmVscykpOworCisgICAgcmV0dXJuIG5ldyB0
Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlldyhudW1MZXZlbHMsIGxldmVscyk7Cit9OworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZv
cm1hdAorICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlQ3Vi
ZSA9IGZ1bmN0aW9uKGZvcm1hdCwgc2l6ZSkgeworICAgIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7
CisgICAgdGhpcy5tX3NpemUgPSBzaXplOworICAgIHRoaXMubV9kYXRhID0gW107CisgICAgdGhp
cy5tX2RhdGEubGVuZ3RoID0gT2JqZWN0LmtleXModGN1VGV4dHVyZS5DdWJlRmFjZSkubGVuZ3Ro
OworICAgIHRoaXMubV9hY2Nlc3MgPSBbXTsKKyAgICB0aGlzLm1fYWNjZXNzLmxlbmd0aCA9IE9i
amVjdC5rZXlzKHRjdVRleHR1cmUuQ3ViZUZhY2UpLmxlbmd0aDsKKworICAgIHZhciBudW1MZXZl
bHMgPSB0Y3VUZXh0dXJlLmNvbXB1dGVNaXBQeXJhbWlkTGV2ZWxzKHRoaXMubV9zaXplKTsKKyAg
ICB2YXIgbGV2ZWxzID0gW107CisgICAgbGV2ZWxzLmxlbmd0aCA9IE9iamVjdC5rZXlzKHRjdVRl
eHR1cmUuQ3ViZUZhY2UpLmxlbmd0aDsKKworICAgIGZvciAodmFyIGZhY2UgaW4gdGN1VGV4dHVy
ZS5DdWJlRmFjZSkgeworICAgICAgICB0aGlzLm1fZGF0YVt0Y3VUZXh0dXJlLkN1YmVGYWNlW2Zh
Y2VdXSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUxldmVsczsgaSsrKQor
ICAgICAgICAgICAgdGhpcy5tX2RhdGFbdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXV0ucHVzaChu
ZXcgdGN1VGV4dHVyZS5EZXFwQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHRoaXMubV9hY2Nlc3Nb
dGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXV0gPSBbXTsKKyAgICAgICAgdGhpcy5tX2FjY2Vzc1t0
Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdXS5sZW5ndGggPSBudW1MZXZlbHM7CisgICAgICAgIGxl
dmVsc1t0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdXSA9IHRoaXMubV9hY2Nlc3NbdGN1VGV4dHVy
ZS5DdWJlRmFjZVtmYWNlXV07CisgICAgfQorCisgICAgdGhpcy5tX3ZpZXcgPSBuZXcgdGN1VGV4
dHVyZS5UZXh0dXJlQ3ViZVZpZXcobnVtTGV2ZWxzLCBsZXZlbHMpOworfTsKKworLyoqIEByZXR1
cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZUN1YmUu
cHJvdG90eXBlLmdldEZvcm1hdCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2Zvcm1hdDsg
fTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCit0Y3VUZXh0dXJlLlRleHR1cmVDdWJlLnByb3Rv
dHlwZS5nZXRTaXplID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fc2l6ZTsgfTsKKy8qKiBA
cmV0dXJuIHt0Y3VUZXh0dXJlLlRleHR1cmVDdWJlVmlld30gKi8KK3RjdVRleHR1cmUuVGV4dHVy
ZUN1YmUucHJvdG90eXBlLmdldFZpZXcgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV92aWV3
OyB9OworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbmR4IExldmVsIGluZGV4CisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuUGl4ZWxC
dWZmZXJBY2Nlc3N9CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZUN1YmUucHJvdG90eXBlLmdldExl
dmVsRmFjZSA9IGZ1bmN0aW9uKG5keCwgZmFjZSkgeyByZXR1cm4gdGhpcy5tX2FjY2Vzc1tmYWNl
XVtuZHhdOyB9OworLyoqIEByZXR1cm4ge251bWJlcn0gKi8KK3RjdVRleHR1cmUuVGV4dHVyZUN1
YmUucHJvdG90eXBlLmdldE51bUxldmVscyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2Fj
Y2Vzc1swXS5sZW5ndGg7IH07CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9
IHNhbXBsZXIKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJhbSB7
bnVtYmVyfSBsb2QKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFBpeGVsIGNvbG9yCisgKi8K
K3RjdVRleHR1cmUuVGV4dHVyZUN1YmUucHJvdG90eXBlLnNhbXBsZSA9IGZ1bmN0aW9uKHNhbXBs
ZXIsIHRleENvb3JkLCBsb2QpIHsKKyAgICByZXR1cm4gdGhpcy5tX3ZpZXcuc2FtcGxlKHNhbXBs
ZXIsIHRleENvb3JkLCBsb2QpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYmFzZUxl
dmVsCisgKiBAcGFyYW0ge251bWJlcn0gbWF4TGV2ZWwKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUu
VGV4dHVyZUN1YmVWaWV3fQorICovCit0Y3VUZXh0dXJlLlRleHR1cmVDdWJlLnByb3RvdHlwZS5n
ZXRTdWJWaWV3ID0gZnVuY3Rpb24oYmFzZUxldmVsLCBtYXhMZXZlbCkgeyByZXR1cm4gdGhpcy5t
X3ZpZXcuZ2V0U3ViVmlldyhiYXNlTGV2ZWwsIG1heExldmVsKTsgfTsKKworLyoqCisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbE5k
eAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlQ3ViZS5wcm90
b3R5cGUuaXNMZXZlbEVtcHR5ID0gZnVuY3Rpb24oZmFjZSwgbGV2ZWxOZHgpIHsKKyAgICByZXR1
cm4gdGhpcy5tX2RhdGFbZmFjZV1bbGV2ZWxOZHhdLmVtcHR5KCk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHBhcmFtIHtudW1iZXJ9IGxldmVs
TmR4CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZUN1YmUucHJvdG90eXBlLmFsbG9jTGV2ZWwgPSBm
dW5jdGlvbihmYWNlLCBsZXZlbE5keCkgeworICAgIC8qKiBAY29uc3QgKi8gdmFyIHNpemUgPSB0
Y3VUZXh0dXJlLmdldE1pcFB5cmFtaWRMZXZlbFNpemUodGhpcy5tX3NpemUsIGxldmVsTmR4KTsK
KyAgICAvKiogQGNvbnN0Ki8gdmFyIGRhdGFTaXplID0gdGhpcy5tX2Zvcm1hdC5nZXRQaXhlbFNp
emUoKSAqIHNpemUgKiBzaXplOworICAgIERFX0FTU0VSVCh0aGlzLmlzTGV2ZWxFbXB0eShmYWNl
LCBsZXZlbE5keCkpOworCisgICAgdGhpcy5tX2RhdGFbZmFjZV1bbGV2ZWxOZHhdLnNldFN0b3Jh
Z2UoZGF0YVNpemUpOworICAgIHRoaXMubV9hY2Nlc3NbZmFjZV1bbGV2ZWxOZHhdID0gbmV3IHRj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICBmb3JtYXQ6IHRoaXMubV9mb3Jt
YXQsCisgICAgICAgIHdpZHRoOiBzaXplLAorICAgICAgICBoZWlnaHQ6IHNpemUsCisgICAgICAg
IGRlcHRoOiAxLAorICAgICAgICBkYXRhOiB0aGlzLm1fZGF0YVtmYWNlXVtsZXZlbE5keF0ubV9w
dHIKKyAgICB9KTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZHMg
Q3ViZSBjb29yZGluYXRlcworICogQHJldHVybiB7dGN1VGV4dHVyZS5DdWJlRmFjZX0KKyAqLwor
dGN1VGV4dHVyZS5zZWxlY3RDdWJlRmFjZSA9IGZ1bmN0aW9uKGNvb3JkcykgeworICAgIHZhciB4
ID0gY29vcmRzWzBdOworICAgIHZhciB5ID0gY29vcmRzWzFdOworICAgIHZhciB6ID0gY29vcmRz
WzJdOworICAgIHZhciBheCA9IE1hdGguYWJzKHgpOworICAgIHZhciBheSA9IE1hdGguYWJzKHkp
OworICAgIHZhciBheiA9IE1hdGguYWJzKHopOworCisgICAgaWYgKGF5IDwgYXggJiYgYXogPCBh
eCkKKyAgICAgICAgcmV0dXJuIHggPj0gMCA/IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0Vf
UE9TSVRJVkVfWCA6IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWDsKKyAg
ICBlbHNlIGlmIChheCA8IGF5ICYmIGF6IDwgYXkpCisgICAgICAgIHJldHVybiB5ID49IDAgPyB0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1kgOiB0Y3VUZXh0dXJlLkN1YmVG
YWNlLkNVQkVGQUNFX05FR0FUSVZFX1k7CisgICAgZWxzZSBpZiAoYXggPCBheiAmJiBheSA8IGF6
KQorICAgICAgICByZXR1cm4geiA+PSAwID8gdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9Q
T1NJVElWRV9aIDogdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9aOworICAg
IGVsc2UgeworICAgICAgICAvLyBTb21lIG9mIHRoZSBjb21wb25lbnRzIGFyZSBlcXVhbC4gVXNl
IHRpZS1icmVha2luZyBydWxlLgorICAgICAgICBpZiAoYXggPT0gYXkpIHsKKyAgICAgICAgICAg
IGlmIChheCA8IGF6KQorICAgICAgICAgICAgICAgIHJldHVybiB6ID49IDAgPyB0Y3VUZXh0dXJl
LkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1ogOiB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVG
QUNFX05FR0FUSVZFX1o7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJu
IHggPj0gMCA/IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWCA6IHRjdVRl
eHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWDsKKyAgICAgICAgfSBlbHNlIGlmIChh
eCA9PSBheikgeworICAgICAgICAgICAgaWYgKGF6IDwgYXkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHkgPj0gMCA/IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWSA6IHRj
dVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4geiA+PSAwID8gdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJF
RkFDRV9QT1NJVElWRV9aIDogdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9a
OworICAgICAgICB9IGVsc2UgaWYgKGF5ID09IGF6KSB7CisgICAgICAgICAgICBpZiAoYXkgPCBh
eCkKKyAgICAgICAgICAgICAgICByZXR1cm4geCA+PSAwID8gdGN1VGV4dHVyZS5DdWJlRmFjZS5D
VUJFRkFDRV9QT1NJVElWRV9YIDogdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElW
RV9YOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB5ID49IDAgPyB0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1kgOiB0Y3VUZXh0dXJlLkN1YmVG
YWNlLkNVQkVGQUNFX05FR0FUSVZFX1k7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0
dXJuIHggPj0gMCA/IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWCA6IHRj
dVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWDsKKyAgICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBjb29yZCBDdWJlIGNvb3JkaW5hdGVzIChWZWMzKQorICogQHJldHVybiB7QXJyYXk8
bnVtYmVyPn0gZmFjZSBjb29yZGluYXRlcyAoVmVjMikKKyAqLwordGN1VGV4dHVyZS5wcm9qZWN0
VG9GYWNlID0gZnVuY3Rpb24oZmFjZSwgY29vcmQpIHsKKyAgICB2YXIgcnggPSBjb29yZFswXTsK
KyAgICB2YXIgcnkgPSBjb29yZFsxXTsKKyAgICB2YXIgcnogPSBjb29yZFsyXTsKKyAgICB2YXIg
c2MgPSAwOworICAgIHZhciB0YyA9IDA7CisgICAgdmFyIG1hID0gMDsKKworICAgIHN3aXRjaCAo
ZmFjZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJ
VkVfWDogc2MgPSArcno7IHRjID0gLXJ5OyBtYSA9IC1yeDsgYnJlYWs7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9YOiBzYyA9IC1yejsgdGMgPSAt
cnk7IG1hID0gK3J4OyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNV
QkVGQUNFX05FR0FUSVZFX1k6IHNjID0gK3J4OyB0YyA9IC1yejsgbWEgPSAtcnk7IGJyZWFrOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWTogc2Mg
PSArcng7IHRjID0gK3J6OyBtYSA9ICtyeTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9aOiBzYyA9IC1yeDsgdGMgPSAtcnk7IG1hID0g
LXJ6OyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BP
U0lUSVZFX1o6IHNjID0gK3J4OyB0YyA9IC1yeTsgbWEgPSArcno7IGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgZmFjZSAn
ICsgZmFjZSk7CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSBzLCB0CisgICAgdmFyIHMgPSAoKHNj
IC8gbWEpICsgMSkgLyAyOworICAgIHZhciB0ID0gKCh0YyAvIG1hKSArIDEpIC8gMjsKKworICAg
IHJldHVybiBbcywgdF07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICogQHBhcmFtIHtudW1iZXI9fSB3aWR0
aAorICogQHBhcmFtIHtudW1iZXI9fSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVyPX0gZGVwdGgK
KyAqLwordGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwgPSBmdW5jdGlvbihmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKSB7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICB0aGlzLm1f
d2lkdGggPSB3aWR0aCB8fCAwOworICAgIHRoaXMubV9oZWlnaHQgPSBoZWlnaHQgfHwgMDsKKyAg
ICB0aGlzLm1fZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IGRlcHRoOworICAgIHRo
aXMubV9kYXRhID0gbmV3IHRjdVRleHR1cmUuRGVxcEFycmF5QnVmZmVyKCk7CisgICAgdGhpcy5z
ZXRTaXplKHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2RlcHRoKTsKK307CisK
K3RjdVRleHR1cmUuVGV4dHVyZUxldmVsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHRjdVRleHR1
cmUuVGV4dHVyZUxldmVsOworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9y
bWF0fSBmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyPX0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVy
PX0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcj19IGRlcHRoCisgKi8KK3RjdVRleHR1cmUuVGV4
dHVyZUxldmVsLnByb3RvdHlwZS5zZXRTdG9yYWdlID0gZnVuY3Rpb24oZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCkgeworICAgIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgdGhpcy5z
ZXRTaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1i
ZXI9fSB3aWR0aAorICogQHBhcmFtIHtudW1iZXI9fSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVy
PX0gZGVwdGgKKyAqLwordGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwucHJvdG90eXBlLnNldFNpemUg
PSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0LCBkZXB0aCkgeworICAgIHZhciBwaXhlbFNpemUgPSB0
aGlzLm1fZm9ybWF0LmdldFBpeGVsU2l6ZSgpOworCisgICAgdGhpcy5tX3dpZHRoID0gd2lkdGgg
fHwgMDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0IHx8IDA7CisgICAgdGhpcy5tX2RlcHRo
ID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiBkZXB0aDsKKworICAgIHRoaXMubV9kYXRhLnNl
dFN0b3JhZ2UodGhpcy5tX3dpZHRoICogdGhpcy5tX2hlaWdodCAqIHRoaXMubV9kZXB0aCAqIHBp
eGVsU2l6ZSk7Cit9OworCisvKioKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZUxldmVsLnByb3RvdHlwZS5nZXRBY2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nl
c3MoeworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV9mb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGhl
aWdodDogdGhpcy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGg6IHRoaXMubV9k
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tX2RhdGEubV9wdHIKKyAgICAg
ICAgICAgICAgICB9KTsKKworfTsKKworLyoqCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3Rj
dVRleHR1cmUuVGV4dHVyZUxldmVsLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiB0aGlzLm1fd2lkdGg7Cit9OworCisvKioKKyAqIEByZXR1cm4ge251bWJlcn0K
KyAqLwordGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1faGVpZ2h0OworfTsKKworLyoqCisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK3RjdVRleHR1cmUuVGV4dHVyZUxldmVsLnByb3RvdHlwZS5nZXREZXB0
aCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fZGVwdGg7Cit9OworCisvKioKKyAq
IEByZXR1cm4gez90Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9CisgKi8KK3RjdVRleHR1cmUuVGV4
dHVyZUxldmVsLnByb3RvdHlwZS5nZXRGb3JtYXQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
dGhpcy5tX2Zvcm1hdDsKK307CisKKy8qKgorICogQ2hlY2tzIGlmIG9yaWdDb29yZHMuY29vcmRz
IGlzIGluIGJvdW5kcyBkZWZpbmVkIGJ5IHNpemU7IGlmIG5vdCwgcmV0dXJuIGEgQ3ViZUZhY2VD
b29yZHMgd2l0aCBmYWNlIHNldCB0byB0aGUgYXBwcm9wcmlhdGUgbmVpZ2hib3JpbmcgZmFjZSBh
bmQgY29vcmRzIHRyYW5zZm9ybWVkIGFjY29yZGluZ2x5LgorICogXG5vdGUgSWYgYm90aCB4IGFu
ZCB5IGluIG9yaWdDb29yZHMuY29vcmRzIGFyZSBvdXQgb2YgYm91bmRzLCB0aGlzIHJldHVybnMg
d2l0aCBmYWNlIENVQkVGQUNFX0xBU1QsIHNpZ25pZnlpbmcgdGhhdCB0aGVyZSBpcyBubyB1bmlx
dWUgbmVpZ2hib3JpbmcgZmFjZS4KKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jk
c30gb3JpZ0Nvb3JkcworICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAqIEByZXR1cm4ge3RjdVRl
eHR1cmUuQ3ViZUZhY2VDb29yZHN9CisgKi8KK3RjdVRleHR1cmUucmVtYXBDdWJlRWRnZUNvb3Jk
cyA9IGZ1bmN0aW9uKG9yaWdDb29yZHMsIHNpemUpIHsKKyAgICB2YXIgdUluQm91bmRzID0gZGVN
YXRoLmRlSW5Cb3VuZHMzMihvcmlnQ29vcmRzLnMsIDAsIHNpemUpOworICAgIHZhciB2SW5Cb3Vu
ZHMgPSBkZU1hdGguZGVJbkJvdW5kczMyKG9yaWdDb29yZHMudCwgMCwgc2l6ZSk7CisKKyAgICBp
ZiAodUluQm91bmRzICYmIHZJbkJvdW5kcykKKyAgICAgICAgcmV0dXJuIG9yaWdDb29yZHM7CisK
KyAgICBpZiAoIXVJbkJvdW5kcyAmJiAhdkluQm91bmRzKQorICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgIHZhciBjb29yZHMgPSBbCisgICAgICAgIHRjdVRleHR1cmUud3JhcCh0Y3VUZXh0dXJl
LldyYXBNb2RlLkNMQU1QX1RPX0JPUkRFUiwgb3JpZ0Nvb3Jkcy5zLCBzaXplKSwKKyAgICAgICAg
dGN1VGV4dHVyZS53cmFwKHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fQk9SREVSLCBvcmln
Q29vcmRzLnQsIHNpemUpXTsKKyAgICB2YXIgY2Fub25pemVkQ29vcmRzID0gW107CisKKyAgICAv
LyBNYXAgdGhlIHV2IGNvb3JkaW5hdGVzIHRvIGNhbm9uaXplZCAzZCBjb29yZGluYXRlcy4KKwor
ICAgIHN3aXRjaCAob3JpZ0Nvb3Jkcy5mYWNlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5D
dWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9YOiBjYW5vbml6ZWRDb29yZHMgPSBbMCwgc2l6ZSAt
IDEgLSBjb29yZHNbMV0sIGNvb3Jkc1swXV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWDogY2Fub25pemVkQ29vcmRzID0gW3NpemUg
LSAxLCBzaXplIC0gMSAtIGNvb3Jkc1sxXSwgc2l6ZSAtIDEgLSBjb29yZHNbMF1dOyBicmVhazsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1k6IGNh
bm9uaXplZENvb3JkcyA9IFtjb29yZHNbMF0sIDAsIHNpemUgLSAxIC0gY29vcmRzWzFdXTsgYnJl
YWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9Z
OiBjYW5vbml6ZWRDb29yZHMgPSBbY29vcmRzWzBdLCBzaXplIC0gMSwgY29vcmRzWzFdXTsgYnJl
YWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9a
OiBjYW5vbml6ZWRDb29yZHMgPSBbc2l6ZSAtIDEgLSBjb29yZHNbMF0sIHNpemUgLSAxIC0gY29v
cmRzWzFdLCAwXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJF
RkFDRV9QT1NJVElWRV9aOiBjYW5vbml6ZWRDb29yZHMgPSBbY29vcmRzWzBdLCBzaXplIC0gMSAt
IGNvb3Jkc1sxXSwgc2l6ZSAtIDFdOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3
IEVycm9yKCdJbnZhbGlkIGN1YmUgZmFjZTonICsgb3JpZ0Nvb3Jkcy5mYWNlKTsKKyAgICB9CisK
KyAgICAvLyBGaW5kIGFuIGFwcHJvcHJpYXRlIGZhY2UgdG8gcmUtbWFwIHRoZSBjb29yZGluYXRl
cyB0by4KKworICAgIGlmIChjYW5vbml6ZWRDb29yZHNbMF0gPT0gLTEpCisgICAgICAgIHJldHVy
biBuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVG
QUNFX05FR0FUSVZFX1gsIFtjYW5vbml6ZWRDb29yZHNbMl0sIHNpemUgLSAxIC0gY2Fub25pemVk
Q29vcmRzWzFdXSk7CisKKyAgICBpZiAoY2Fub25pemVkQ29vcmRzWzBdID09IHNpemUpCisgICAg
ICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jkcyh0Y3VUZXh0dXJlLkN1YmVG
YWNlLkNVQkVGQUNFX1BPU0lUSVZFX1gsIFtzaXplIC0gMSAtIGNhbm9uaXplZENvb3Jkc1syXSwg
c2l6ZSAtIDEgLSBjYW5vbml6ZWRDb29yZHNbMV1dKTsKKworICAgIGlmIChjYW5vbml6ZWRDb29y
ZHNbMV0gPT0gLTEpCisgICAgICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5DdWJlRmFjZUNvb3Jk
cyh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1ksIFtjYW5vbml6ZWRDb29y
ZHNbMF0sIHNpemUgLSAxIC0gY2Fub25pemVkQ29vcmRzWzJdXSk7CisKKyAgICBpZiAoY2Fub25p
emVkQ29vcmRzWzFdID09IHNpemUpCisgICAgICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5DdWJl
RmFjZUNvb3Jkcyh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1ksIFtjYW5v
bml6ZWRDb29yZHNbMF0sIGNhbm9uaXplZENvb3Jkc1syXV0pOworCisgICAgaWYgKGNhbm9uaXpl
ZENvb3Jkc1syXSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLkN1YmVGYWNl
Q29vcmRzKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWiwgW3NpemUgLSAx
IC0gY2Fub25pemVkQ29vcmRzWzBdLCBzaXplIC0gMSAtIGNhbm9uaXplZENvb3Jkc1sxXV0pOwor
CisgICAgaWYgKGNhbm9uaXplZENvb3Jkc1syXSA9PSBzaXplKQorICAgICAgICByZXR1cm4gbmV3
IHRjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHModGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9Q
T1NJVElWRV9aLCBbY2Fub25pemVkQ29vcmRzWzBdLCBzaXplIC0gMSAtIGNhbm9uaXplZENvb3Jk
c1sxXV0pOworCisgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVtYXAgY3ViZSBjb29yZGlu
YXRlcycpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSBzcmMKKyAqLwordGN1VGV4dHVyZS5SR0JBOFZpZXcg
PSBmdW5jdGlvbihzcmMpIHsKKyAgICB0aGlzLnNyYyA9IHNyYzsKKyAgICB0aGlzLmRhdGEgPSBu
ZXcgVWludDhBcnJheShzcmMuZ2V0QnVmZmVyKCksIHNyYy5tX29mZnNldCk7CisgICAgdGhpcy5z
dHJpZGUgPSBzcmMuZ2V0Um93UGl0Y2goKTsKKyAgICB0aGlzLndpZHRoID0gc3JjLmdldFdpZHRo
KCk7CisgICAgdGhpcy5oZWlnaHQgPSBzcmMuZ2V0SGVpZ2h0KCk7CisgICAgdGhpcy5waXhlbFNp
emUgPSBzcmMuZ2V0Rm9ybWF0KCkuZ2V0UGl4ZWxTaXplKCk7Cit9OworCisvKioKKyAqIEByZXR1
cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0KKyAqLwordGN1VGV4dHVyZS5SR0JBOFZpZXcu
cHJvdG90eXBlLmdldEZvcm1hdCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5zcmMuZ2V0Rm9y
bWF0KCk7IH07CisKKy8qKgorICogUmVhZCBhIHBpeGVsCisgKiBAcGFyYW0ge251bWJlcn0geAor
ICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7bnVtYmVyPX0gbnVtQ2hhbm5lbHMKKyAq
IEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3RjdVRleHR1cmUuUkdCQThWaWV3LnByb3Rv
dHlwZS5yZWFkID0gZnVuY3Rpb24oeCwgeSwgbnVtQ2hhbm5lbHMpIHsKKyAgICBudW1DaGFubmVs
cyA9IG51bUNoYW5uZWxzIHx8IDQ7CisgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnN0cmlkZSAr
IHggKiB0aGlzLnBpeGVsU2l6ZTsKKyAgICAvKiBBbHdheXMgcmV0dXJuIGEgdmVjNCAqLworICAg
IHZhciByZXN1bHQgPSBbMCwgMCwgMCwgMjU1XTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51
bUNoYW5uZWxzOyBpKyspCisgICAgICAgIHJlc3VsdFtpXSA9IHRoaXMuZGF0YVtvZmZzZXQgKyBp
XTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqCisgKiBSZWFkIGEgcGl4ZWwgaW50byBh
IFVpbnQzMgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBA
cmV0dXJuIHtudW1iZXJ9CisgKi8KK3RjdVRleHR1cmUuUkdCQThWaWV3LnByb3RvdHlwZS5yZWFk
VWludFJHQkE4ID0gZnVuY3Rpb24oeCwgeSkgeworICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5z
dHJpZGUgKyB4ICogdGhpcy5waXhlbFNpemU7CisgICAgcmV0dXJuICgodGhpcy5kYXRhW29mZnNl
dF0gJiAweGZmKSA8PCAyNCkgKworICAgICAgICAoKHRoaXMuZGF0YVtvZmZzZXQgKyAxXSAmIDB4
ZmYpIDw8IDE2KSArCisgICAgICAgICgodGhpcy5kYXRhW29mZnNldCArIDJdICYgMHhmZikgPDwg
OCkgKworICAgICAgICAodGhpcy5kYXRhW29mZnNldCArIDNdICYgMHhmZik7Cit9OworCisvKioK
KyAqIFdyaXRlIGEgcGl4ZWwKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJl
cn0geQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZQorICogQHBhcmFtIHtudW1iZXI9
fSBudW1DaGFubmVscworICovCit0Y3VUZXh0dXJlLlJHQkE4Vmlldy5wcm90b3R5cGUud3JpdGUg
PSBmdW5jdGlvbih4LCB5LCB2YWx1ZSwgbnVtQ2hhbm5lbHMpIHsKKyAgICBudW1DaGFubmVscyA9
IG51bUNoYW5uZWxzIHx8IDQ7CisgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnN0cmlkZSArIHgg
KiB0aGlzLnBpeGVsU2l6ZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoYW5uZWxzOyBp
KyspCisgICAgICAgIHRoaXMuZGF0YVtvZmZzZXQgKyBpXSA9IHZhbHVlW2ldOworfTsKKwordGN1
VGV4dHVyZS5SR0JBOFZpZXcucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLndpZHRoOyB9OworCit0Y3VUZXh0dXJlLlJHQkE4Vmlldy5wcm90b3R5cGUuZ2V0SGVp
Z2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmhlaWdodDsgfTsKKworfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Zy
YW1ld29yay9jb21tb24vdGN1VGV4dHVyZVV0aWwuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9jb21tb24vdGN1VGV4dHVyZVV0
aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDA0NTBhYjM4MDE4ODY5M2FhNTQxMDhmYmIzN2I0NDY4ZTU1M2Nl
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlVXRpbC5qcwpAQCAtMCww
ICsxLDcyNSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBt
YXkgb2J0YWluIGEgdGN1VGV4dHVyZVV0aWwuY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAq
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICog
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7
CisKK3ZhciB0Y3VUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWw7
Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKK3ZhciBkZU1h
dGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgZGVSYW5kb20gPSBmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKwordmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9u
KHgpIHsKKyAgICBpZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxl
ZCcpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdAorICogQHBhcmFtIHtudW1iZXJ9
IG1pblZhbAorICogQHBhcmFtIHtudW1iZXJ9IG1heFZhbAorICogQHJldHVybiB7bnVtYmVyfQor
ICovCit0Y3VUZXh0dXJlVXRpbC5saW5lYXJJbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uKHQsIG1pblZh
bCwgbWF4VmFsKSB7CisgICAgcmV0dXJuIG1pblZhbCArIChtYXhWYWwgLSBtaW5WYWwpICogdDsK
K307CisKKy8qKiB0Y3VUZXh0dXJlVXRpbC5saW5lYXJDaGFubmVsVG9TUkdCCisgKiBAcGFyYW0g
e251bWJlcn0gY2wKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordGN1VGV4dHVyZVV0aWwubGlu
ZWFyQ2hhbm5lbFRvU1JHQiA9IGZ1bmN0aW9uKGNsKSB7CisgICAgaWYgKGNsIDw9IDAuMCkKKyAg
ICAgICAgcmV0dXJuIDAuMDsKKyAgICBlbHNlIGlmIChjbCA8IDAuMDAzMTMwOCkKKyAgICAgICAg
cmV0dXJuIDEyLjkyICogY2w7CisgICAgZWxzZSBpZiAoY2wgPCAxLjApCisgICAgICAgIHJldHVy
biAxLjA1NSAqIE1hdGgucG93KGNsLCAwLjQxNjY2KSAtIDAuMDU1OworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIDEuMDsKK307CisKKy8qKgorICogQ29udmVydCBzUkdCIHRvIGxpbmVhciBjb2xv
cnNwYWNlCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNzCisgKiBAcmV0dXJuIHtBcnJheTxu
dW1iZXI+fQorICovCit0Y3VUZXh0dXJlVXRpbC5zUkdCVG9MaW5lYXIgPSBmdW5jdGlvbihjcykg
eworICAgIHJldHVybiBbdGN1VGV4dHVyZVV0aWwuc1JHQkNoYW5uZWxUb0xpbmVhcihjc1swXSks
CisgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5zUkdCQ2hhbm5lbFRvTGluZWFyKGNzWzFdKSwK
KyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLnNSR0JDaGFubmVsVG9MaW5lYXIoY3NbMl0pLAor
ICAgICAgICAgICAgY3NbM11dOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gY3MKKyAq
IEByZXR1cm4ge251bWJlcn0KKyAqLworIHRjdVRleHR1cmVVdGlsLnNSR0JDaGFubmVsVG9MaW5l
YXIgPSBmdW5jdGlvbihjcykgeworICAgIGlmIChjcyA8PSAwLjA0MDQ1KQorICAgICAgICByZXR1
cm4gY3MgLyAxMi45MjsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBNYXRoLnBvdygoY3MgKyAw
LjA1NSkgLyAxLjA1NSwgMi40KTsKK307CisKKy8qKiB0Y3VUZXh0dXJlVXRpbC5saW5lYXJUb1NS
R0IKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY2wKKyAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59CisgKi8KK3RjdVRleHR1cmVVdGlsLmxpbmVhclRvU1JHQiA9IGZ1bmN0aW9uKGNsKSB7Cisg
ICAgcmV0dXJuIFt0Y3VUZXh0dXJlVXRpbC5saW5lYXJDaGFubmVsVG9TUkdCKGNsWzBdKSwKKyAg
ICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmxpbmVhckNoYW5uZWxUb1NSR0IoY2xbMV0pLAorICAg
ICAgICAgICAgdGN1VGV4dHVyZVV0aWwubGluZWFyQ2hhbm5lbFRvU1JHQihjbFsyXSksCisgICAg
ICAgICAgICBjbFszXQorICAgICAgICAgICAgXTsKK307CisKKy8qKgorICogdGN1VGV4dHVyZVV0
aWwuZ2V0U3VicmVnaW9uCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9
IGFjY2VzcworICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5CisgKiBA
cGFyYW0ge251bWJlcn0gegorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251
bWJlcn0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAqIEByZXR1cm4ge3RjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9CisgKi8KK3RjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lv
biA9IGZ1bmN0aW9uKGFjY2VzcywgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCwgZGVwdGgpIHsKKwor
ICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHgsIDAsIGFjY2Vzcy5nZXRXaWR0aCgp
KSAmJiBkZU1hdGguZGVJblJhbmdlMzIoeCArIHdpZHRoLCB4LCBhY2Nlc3MuZ2V0V2lkdGgoKSkp
OworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHksIDAsIGFjY2Vzcy5nZXRIZWln
aHQoKSkgJiYgZGVNYXRoLmRlSW5SYW5nZTMyKHkgKyBoZWlnaHQsIHksIGFjY2Vzcy5nZXRIZWln
aHQoKSkpOworICAgIERFX0FTU0VSVChkZU1hdGguZGVJbkJvdW5kczMyKHosIDAsIGFjY2Vzcy5n
ZXREZXB0aCgpKSAmJiBkZU1hdGguZGVJblJhbmdlMzIoeiArIGRlcHRoLCB6LCBhY2Nlc3MuZ2V0
RGVwdGgoKSkpOworCisgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
KHsKKyAgICAgICAgZm9ybWF0OiBhY2Nlc3MuZ2V0Rm9ybWF0KCksCisgICAgICAgIHdpZHRoOiB3
aWR0aCwKKyAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCisgICAgICAgIGRlcHRoOiBkZXB0aCwKKyAg
ICAgICAgcm93UGl0Y2g6IGFjY2Vzcy5nZXRSb3dQaXRjaCgpLAorICAgICAgICBzbGljZVBpdGNo
OiBhY2Nlc3MuZ2V0U2xpY2VQaXRjaCgpLAorICAgICAgICBvZmZzZXQ6IGFjY2Vzcy5tX29mZnNl
dCArIGFjY2Vzcy5nZXRGb3JtYXQoKS5nZXRQaXhlbFNpemUoKSAqIHggKyBhY2Nlc3MuZ2V0Um93
UGl0Y2goKSAqIHkgKyBhY2Nlc3MuZ2V0U2xpY2VQaXRjaCgpICogeiwKKyAgICAgICAgZGF0YTog
YWNjZXNzLmdldEJ1ZmZlcigpCisgICAgICAgIH0pOworfTsKKworLyoqCisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBtaW5WYWwKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWF4VmFsCisgKi8KK3RjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzMUQgPSBmdW5jdGlvbihhY2Nlc3Ms
IG1pblZhbCwgbWF4VmFsKSB7CisgICAgREVfQVNTRVJUKGFjY2Vzcy5nZXRIZWlnaHQoKSA9PSAx
KTsKKyAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFjY2Vzcy5nZXRXaWR0aCgpOyB4KyspIHsKKyAg
ICAgICAgdmFyIHMgPSAoeCArIDAuNSkgLyBhY2Nlc3MuZ2V0V2lkdGgoKTsKKworICAgICAgICB2
YXIgciA9IHRjdVRleHR1cmVVdGlsLmxpbmVhckludGVycG9sYXRlKHMsIG1pblZhbFswXSwgbWF4
VmFsWzBdKTsKKyAgICAgICAgdmFyIGcgPSB0Y3VUZXh0dXJlVXRpbC5saW5lYXJJbnRlcnBvbGF0
ZShzLCBtaW5WYWxbMV0sIG1heFZhbFsxXSk7CisgICAgICAgIHZhciBiID0gdGN1VGV4dHVyZVV0
aWwubGluZWFySW50ZXJwb2xhdGUocywgbWluVmFsWzJdLCBtYXhWYWxbMl0pOworICAgICAgICB2
YXIgYSA9IHRjdVRleHR1cmVVdGlsLmxpbmVhckludGVycG9sYXRlKHMsIG1pblZhbFszXSwgbWF4
VmFsWzNdKTsKKworICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwoW3IsIGcsIGIsIGFdLCB4LCAwKTsK
KyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vz
c30gYWNjZXNzCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1pblZhbAorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBtYXhWYWwKKyAqLwordGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25l
bnRHcmFkaWVudHMyRCA9IGZ1bmN0aW9uKGFjY2VzcywgbWluVmFsLCBtYXhWYWwpIHsKKyAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IGFjY2Vzcy5nZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAgIHZh
ciB0ID0gKHkgKyAwLjUpIC8gYWNjZXNzLmdldEhlaWdodCgpOworICAgICAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IGFjY2Vzcy5nZXRXaWR0aCgpOyB4KyspIHsKKyAgICAgICAgICAgIHZhciBzID0g
KHggKyAwLjUpIC8gYWNjZXNzLmdldFdpZHRoKCk7CisKKyAgICAgICAgICAgIHZhciByID0gdGN1
VGV4dHVyZVV0aWwubGluZWFySW50ZXJwb2xhdGUoKHMgKyB0KSAqIDAuNSwgbWluVmFsWzBdLCBt
YXhWYWxbMF0pOworICAgICAgICAgICAgdmFyIGcgPSB0Y3VUZXh0dXJlVXRpbC5saW5lYXJJbnRl
cnBvbGF0ZSgocyArICgxIC0gdCkpICogMC41LCBtaW5WYWxbMV0sIG1heFZhbFsxXSk7CisgICAg
ICAgICAgICB2YXIgYiA9IHRjdVRleHR1cmVVdGlsLmxpbmVhckludGVycG9sYXRlKCgoMSAtIHMp
ICsgdCkgKiAwLjUsIG1pblZhbFsyXSwgbWF4VmFsWzJdKTsKKyAgICAgICAgICAgIHZhciBhID0g
dGN1VGV4dHVyZVV0aWwubGluZWFySW50ZXJwb2xhdGUoKCgxIC0gcykgKyAoMSAtIHQpKSAqIDAu
NSwgbWluVmFsWzNdLCBtYXhWYWxbM10pOworCisgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwo
W3IsIGcsIGIsIGFdLCB4LCB5KTsKKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBkc3QKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gbWluVmFsCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1heFZhbAorICovCit0
Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50czNEID0gZnVuY3Rpb24oZHN0
LCBtaW5WYWwsIG1heFZhbCkgeworICAgIGZvciAodmFyIHogPSAwOyB6IDwgZHN0LmdldERlcHRo
KCk7IHorKykgeworICAgICAgICB2YXIgcCA9ICh6ICsgMC41KSAvIGRzdC5nZXREZXB0aCgpOwor
ICAgICAgICB2YXIgYiA9IHRjdVRleHR1cmVVdGlsLmxpbmVhckludGVycG9sYXRlKHAsIG1pblZh
bFsyXSwgbWF4VmFsWzJdKTsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBkc3QuZ2V0SGVp
Z2h0KCk7IHkrKykgeworICAgICAgICAgICAgdmFyIHQgPSAoeSArIDAuNSkgLyBkc3QuZ2V0SGVp
Z2h0KCk7CisgICAgICAgICAgICB2YXIgZyA9IHRjdVRleHR1cmVVdGlsLmxpbmVhckludGVycG9s
YXRlKHQsIG1pblZhbFsxXSwgbWF4VmFsWzFdKTsKKyAgICAgICAgICAgIGZvciAodmFyIHggPSAw
OyB4IDwgZHN0LmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgICAgIHZhciBzID0gKHgg
KyAwLjUpIC8gZHN0LmdldFdpZHRoKCk7CisgICAgICAgICAgICAgICAgdmFyIHIgPSB0Y3VUZXh0
dXJlVXRpbC5saW5lYXJJbnRlcnBvbGF0ZShzLCBtaW5WYWxbMF0sIG1heFZhbFswXSk7CisgICAg
ICAgICAgICAgICAgdmFyIGEgPSB0Y3VUZXh0dXJlVXRpbC5saW5lYXJJbnRlcnBvbGF0ZSgxIC0g
KHMgKyB0ICsgcCkgLyAzLCBtaW5WYWxbM10sIG1heFZhbFszXSk7CisgICAgICAgICAgICAgICAg
ZHN0LnNldFBpeGVsKFtyLCBnLCBiLCBhXSwgeCwgeSwgeik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzc30gYWNjZXNzCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1pblZhbAorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSBtYXhWYWwKKyAqLwordGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhD
b21wb25lbnRHcmFkaWVudHMgPSBmdW5jdGlvbihhY2Nlc3MsIG1pblZhbCwgbWF4VmFsKSB7Cisg
ICAgaWYgKGFjY2Vzcy5nZXRIZWlnaHQoKSA9PSAxICYmIGFjY2Vzcy5nZXREZXB0aCgpID09IDEp
CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzMUQoYWNj
ZXNzLCBtaW5WYWwsIG1heFZhbCk7CisgICAgZWxzZSBpZiAoYWNjZXNzLmdldERlcHRoKCkgPT0g
MSkKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMyRChh
Y2Nlc3MsIG1pblZhbCwgbWF4VmFsKTsKKyAgICBlbHNlCisgICAgICAgIHRjdVRleHR1cmVVdGls
LmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzM0QoYWNjZXNzLCBtaW5WYWwsIG1heFZhbCk7Cit9
OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gZHN0Cisg
Ki8KK3RjdVRleHR1cmVVdGlsLmZpbGxXaXRoUkdCQVF1YWRzID0gZnVuY3Rpb24oZHN0KSB7Cisg
ICAgY2hlY2tNZXNzYWdlKGRzdC5nZXREZXB0aCgpID09IDEsICdEZXB0aCBtdXN0IGJlIDEnKTsK
KyAgICB2YXIgd2lkdGggPSBkc3QuZ2V0V2lkdGgoKTsKKyAgICB2YXIgaGVpZ2h0ID0gZHN0Lmdl
dEhlaWdodCgpOworICAgIHZhciBsZWZ0ID0gd2lkdGggLyAyOworICAgIHZhciB0b3AgPSBoZWln
aHQgLyAyOworCisgICAgdGN1VGV4dHVyZVV0aWwuZ2V0U3VicmVnaW9uKGRzdCwgMCwgMCwgMCwg
bGVmdCwgdG9wLCAxKS5jbGVhcihbMS4wLCAwLjAsIDAuMCwgMS4wXSk7CisgICAgdGN1VGV4dHVy
ZVV0aWwuZ2V0U3VicmVnaW9uKGRzdCwgbGVmdCwgMCwgMCwgd2lkdGggLSBsZWZ0LCB0b3AsIDEp
LmNsZWFyKFswLjAsIDEuMCwgMC4wLCAxLjBdKTsKKyAgICB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJy
ZWdpb24oZHN0LCAwLCB0b3AsIDAsIGxlZnQsIGhlaWdodCAtIHRvcCwgMSkuY2xlYXIoWzAuMCwg
MC4wLCAxLjAsIDAuMF0pOworICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihkc3QsIGxl
ZnQsIHRvcCwgMCwgd2lkdGggLSBsZWZ0LCBoZWlnaHQgLSB0b3AsIDEpLmNsZWFyKFswLjUsIDAu
NSwgMC41LCAxLjBdKTsKK307CisKKy8vIFx0b2RvIFsyMDEyLTExLTEzIHB5cnldIFRoZXJlIGlz
IG11Y2ggYmV0dGVyIG1ldGFiYWxscyBjb2RlIGluIENMIFNJUiB2YWx1ZSBnZW5lcmF0b3JzLgor
LyoqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGRzdAorICogQHBh
cmFtIHtudW1iZXJ9IG51bUJhbGxzCisgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICovCit0Y3VU
ZXh0dXJlVXRpbC5maWxsV2l0aE1ldGFiYWxscyA9IGZ1bmN0aW9uKGRzdCwgbnVtQmFsbHMsIHNl
ZWQpIHsKKyAgICBjaGVja01lc3NhZ2UoZHN0LmdldERlcHRoKCkgPT0gMSwgJ0RlcHRoIG11c3Qg
YmUgMScpOworICAgIHZhciBwb2ludHMgPSBbXTsKKyAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9t
LlJhbmRvbShzZWVkKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQmFsbHM7IGkrKykg
eworICAgICAgICB2YXIgeCA9IHJuZC5nZXRGbG9hdCgpOworICAgICAgICB2YXIgeSA9IHJuZC5n
ZXRGbG9hdCgpOworICAgICAgICBwb2ludHNbaV0gPSBbeCwgeV07CisgICAgfQorCisgICAgZm9y
ICh2YXIgeSA9IDA7IHkgPCBkc3QuZ2V0SGVpZ2h0KCk7IHkrKykKKyAgICBmb3IgKHZhciB4ID0g
MDsgeCA8IGRzdC5nZXRXaWR0aCgpOyB4KyspIHsKKyAgICAgICAgdmFyIHAgPSBbeCAvIGRzdC5n
ZXRXaWR0aCgpLCB5IC8gZHN0LmdldEhlaWdodCgpXTsKKworICAgICAgICB2YXIgc3VtID0gMC4w
OworICAgICAgICBmb3IgKHZhciBwb2ludE5keCA9IDA7IHBvaW50TmR4IDwgcG9pbnRzLmxlbmd0
aDsgcG9pbnROZHgrKykgeworICAgICAgICAgICAgdmFyIGQgPSBkZU1hdGguc3VidHJhY3QocCwg
cG9pbnRzW3BvaW50TmR4XSk7CisgICAgICAgICAgICB2YXIgZiA9IDAuMDEgLyAoZFswXSAqIGRb
MF0gKyBkWzFdICogZFsxXSk7CisKKyAgICAgICAgICAgIHN1bSArPSBmOworICAgICAgICB9CisK
KyAgICAgICAgZHN0LnNldFBpeGVsKFtzdW0sIHN1bSwgc3VtLCBzdW1dLCB4LCB5KTsKKyAgICB9
Cit9OworCisvKioKKyAqIENyZWF0ZSB0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mby4K
KyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZU1pbgorICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZU1heAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBsb29rdXBTY2FsZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBsb29rdXBCaWFzCisgKi8K
K3RjdVRleHR1cmVVdGlsLlRleHR1cmVGb3JtYXRJbmZvID0gZnVuY3Rpb24odmFsdWVNaW4sIHZh
bHVlTWF4LCBsb29rdXBTY2FsZSwgbG9va3VwQmlhcykgeworICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdGhpcy52YWx1ZU1pbiA9IHZhbHVlTWluOworICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdGhpcy52YWx1ZU1heCA9IHZhbHVlTWF4OworICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5sb29rdXBTY2FsZSA9IGxvb2t1cFNjYWxlOworICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5sb29rdXBCaWFzID0gbG9va3VwQmlhczsK
K307CisKKy8qKgorICogQHBhcmFtIHs/dGN1VGV4dHVyZS5DaGFubmVsVHlwZX0gY2hhbm5lbFR5
cGUKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3RjdVRleHR1cmVVdGlsLmdldENo
YW5uZWxWYWx1ZVJhbmdlID0gZnVuY3Rpb24oY2hhbm5lbFR5cGUpIHsKKyAgICB2YXIgY01pbiA9
IDA7CisgICAgdmFyIGNNYXggPSAwOworCisgICAgc3dpdGNoIChjaGFubmVsVHlwZSkgeworICAg
ICAgICAvLyBTaWduZWQgbm9ybWFsaXplZCBmb3JtYXRzLgorICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UODoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlNOT1JNX0lOVDE2OiBjTWluID0gLTE7IGNNYXggPSAxOyBicmVhazsKKworICAgICAg
ICAvLyBVbnNpZ25lZCBub3JtYWxpemVkIGZvcm1hdHMuCisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5PUk1fSU5UMTY6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
Tk9STV9TSE9SVF81NjU6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9S
TV9TSE9SVF80NDQ0OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1f
SU5UXzEwMTAxMDoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VF8xMDEwMTAyX1JFVjogY01pbiA9IDA7IGNNYXggPSAxOyBicmVhazsKKworICAgICAgICAvLyBN
aXNjIGZvcm1hdHMuCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURf
SU5UODogY01pbiA9IC0xMjg7IGNNYXggPSAxMjc7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDE2OiBjTWluID0gLTMyNzY4OyBjTWF4ID0gMzI3
Njc7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lO
VDMyOiBjTWluID0gLTIxNDc0ODM2NDg7IGNNYXggPSAyMTQ3NDgzNjQ3OyBicmVhazsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDg6IGNNaW4gPSAwOyBj
TWF4ID0gMjU1OyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
U0lHTkVEX0lOVDE2OiBjTWluID0gMDsgY01heCA9IDY1NTM1OyBicmVhazsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyOiBjTWluID0gMDsgY01heCA9
IDQyOTQ5NjcyOTU7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUu
SEFMRl9GTE9BVDogY01pbiA9IC0xZTM7IGNNYXggPSAxZTM7IGJyZWFrOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6IGNNaW4gPSAtMWU1OyBjTWF4ID0gMWU1OyBi
cmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8x
MUZfMTFGXzEwRl9SRVY6IGNNaW4gPSAwOyBjTWF4ID0gMWU0OyBicmVhazsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF85OTlfRTVfUkVWOiBjTWluID0g
MDsgY01heCA9IDFlNTsgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERF
X0FTU0VSVChmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIFtjTWluLCBjTWF4XTsKK307CisK
Ky8qKgorICogQ3JlYXRlcyBhbiBhcnJheSBieSBjaG9vc2luZyBiZXR3ZWVuICdhJyBhbmQgJ2In
IGJhc2VkIG9uICdjb25kJyBhcnJheS4KKyAqIEBwYXJhbSB7QXJyYXkgfCBudW1iZXJ9IGEKKyAq
IEBwYXJhbSB7QXJyYXkgfCBudW1iZXJ9IGIKKyAqIEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGNv
bmQgQ29uZHRpb25zCisgKiBAcmV0dXJuIHtBcnJheX0KKyAqLwordGN1VGV4dHVyZVV0aWwuc2Vs
ZWN0ID0gZnVuY3Rpb24oYSwgYiwgY29uZCkgeworCisgICAgLypERV9BU1NFUlQoIShhLmxlbmd0
aCAmJiAhYi5sZW5ndGgpCisgICAgICAgICAgICAgICAgfHwgISghYS5sZW5ndGggJiYgYi5sZW5n
dGgpCisgICAgICAgICAgICAgICAgfHwgISgoYS5sZW5ndGggJiYgYi5sZW5ndGgpICYmICgoYS5s
ZW5ndGggIT0gYi5sZW5ndGgpIHx8IChiLmxlbmd0aCAhPSBjb25kLmxlbmd0aCkgfHwgKGEubGVu
Z3RoICE9IGNvbmQubGVuZ3RoKSkpKTsqLworCisgICAgaWYgKGEubGVuZ3RoICYmICFiLmxlbmd0
aCkgdGhyb3cgbmV3IEVycm9yKCdzZWNvbmQgaW5wdXQgcGFyYW1ldGVyIGlzIG5vdCBhIHZlY3Rv
cicpOworICAgIGlmICghYS5sZW5ndGggJiYgYi5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignZmly
c3QgaW5wdXQgcGFyYW1ldGVyIGlzIG5vdCBhIHZlY3RvcicpOworICAgIGlmICgoYS5sZW5ndGgg
JiYgYi5sZW5ndGgpICYmICgoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHx8IChiLmxlbmd0aCAhPSBj
b25kLmxlbmd0aCkgfHwgKGEubGVuZ3RoICE9IGNvbmQubGVuZ3RoKSkpIHRocm93IG5ldyBFcnJv
cignZGlmZmVyZW50IHNpemUgdmVjdG9ycycpOworCisgICAgdmFyIGRzdCA9IFtdOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY29uZC5sZW5ndGg7IGkrKykKKyAgICAgICAgaWYgKGNvbmRbaV0p
IHsKKyAgICAgICAgICAgIGlmIChhLmxlbmd0aCkgZHN0LnB1c2goYVtpXSk7CisgICAgICAgICAg
ICBlbHNlIGRzdC5wdXNoKGEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGIu
bGVuZ3RoKSBkc3QucHVzaChiW2ldKTsKKyAgICAgICAgICAgIGVsc2UgZHN0LnB1c2goYik7Cisg
ICAgICAgIH0KKyAgICByZXR1cm4gZHN0OworfTsKKworLyoqCisgKiBHZXQgc3RhbmRhcmQgcGFy
YW1ldGVycyBmb3IgdGVzdGluZyB0ZXh0dXJlIGZvcm1hdAorICoKKyAqIFJldHVybnMgdGN1VGV4
dHVyZVV0aWwuVGV4dHVyZUZvcm1hdEluZm8gdGhhdCBkZXNjcmliZXMgZ29vZCBwYXJhbWV0ZXJz
IGZvciBleGVyY2lzaW5nCisgKiBnaXZlbiBUZXh0dXJlRm9ybWF0LiBQYXJhbWV0ZXJzIGluY2x1
ZGUgdmFsdWUgcmFuZ2VzIHBlciBjaGFubmVsIGFuZAorICogc3VpdGFibGUgbG9va3VwIHNjYWxp
bmcgYW5kIGJpYXMgaW4gb3JkZXIgdG8gcmVkdWNlIHJlc3VsdCBiYWNrIHRvCisgKiAwLi4xIHJh
bmdlLgorICoKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAq
IEByZXR1cm4ge3RjdVRleHR1cmVVdGlsLlRleHR1cmVGb3JtYXRJbmZvfQorICovCit0Y3VUZXh0
dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIC8v
IFNwZWNpYWwgY2FzZXMuCisgICAgaWYgKGZvcm1hdC5pc0VxdWFsKG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVYpKSkKKyAgICAgICAgcmV0dXJuIG5ldyB0
Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mbyhbMCwgMCwgMCwgMF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAyMywgMTAyMywgMTAyMywgM10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMSAvIDEwMjMsIDEgLyAxMDIzLCAxIC8gMTAyMywgMSAv
IDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBdKTsKKyAg
ICBlbHNlIGlmIChmb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRCB8fCBm
b3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFMpCisgICAgICAgIHJldHVy
biBuZXcgdGN1VGV4dHVyZVV0aWwuVGV4dHVyZUZvcm1hdEluZm8oWzAsIDAsIDAsIDBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDEsIDEsIDBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWzEsIDEsIDEsIDFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWzAsIDAsIDAsIDBdKTsgLy8gRGVwdGggLyBzdGVuY2lsIGZvcm1hdHMuCisg
ICAgZWxzZSBpZiAoZm9ybWF0LmlzRXF1YWwobmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JN
X1NIT1JUXzU1NTEpKSkKKyAgICAgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlVXRpbC5UZXh0dXJl
Rm9ybWF0SW5mbyhbMCwgMCwgMCwgMC41XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsxLCAxLCAxLCAxLjVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEs
IDEsIDEsIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBd
KTsKKworICAgIHZhciBjUmFuZ2UgPSB0Y3VUZXh0dXJlVXRpbC5nZXRDaGFubmVsVmFsdWVSYW5n
ZShmb3JtYXQudHlwZSk7CisgICAgdmFyIGNobk1hc2sgPSBudWxsOworCisgICAgc3dpdGNoIChm
b3JtYXQub3JkZXIpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SOiBj
aG5NYXNrID0gW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2VdOyBicmVhazsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5BOiBjaG5NYXNrID0gW2ZhbHNlLCBmYWxzZSwgZmFs
c2UsIHRydWVdOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5M
OiBjaG5NYXNrID0gW3RydWUsIHRydWUsIHRydWUsIGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuTEE6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJH
OiBjaG5NYXNrID0gW3RydWUsIHRydWUsIGZhbHNlLCBmYWxzZV07IGJyZWFrOworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQjogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0
cnVlLCBmYWxzZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LlJHQkE6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07IGJyZWFrOworICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0I6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgZmFsc2VdOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5zUkdCQTogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRDogY2huTWFzayA9IFt0cnVlLCB0
cnVlLCB0cnVlLCBmYWxzZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLkRTOiBjaG5NYXNrID0gW3RydWUsIHRydWUsIHRydWUsIHRydWVdOyBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgfQorCisg
ICAgdmFyIHNjYWxlID0gMSAvIChjUmFuZ2VbMV0gLSBjUmFuZ2VbMF0pOworICAgIHZhciBiaWFz
ID0gLWNSYW5nZVswXSAqIHNjYWxlOworCisgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlVXRpbC5U
ZXh0dXJlRm9ybWF0SW5mbyh0Y3VUZXh0dXJlVXRpbC5zZWxlY3QoY1JhbmdlWzBdLCAwLCBjaG5N
YXNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuc2VsZWN0
KGNSYW5nZVsxXSwgMCwgY2huTWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRj
dVRleHR1cmVVdGlsLnNlbGVjdChzY2FsZSwgMSwgY2huTWFzayksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLnNlbGVjdChiaWFzLCAwLCBjaG5NYXNrKSk7Cit9
OworCisvKiogdGN1VGV4dHVyZVV0aWwuZ2V0Q2hhbm5lbEJpdERlcHRoCisgKiBAcGFyYW0gez90
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlfSBjaGFubmVsVHlwZQorICogQHJldHVybiB7QXJyYXk8bnVt
YmVyPn0KKyAqLwordGN1VGV4dHVyZVV0aWwuZ2V0Q2hhbm5lbEJpdERlcHRoID0gZnVuY3Rpb24o
Y2hhbm5lbFR5cGUpIHsKKworICAgIHN3aXRjaCAoY2hhbm5lbFR5cGUpIHsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDg6IHJldHVybiBbOCwgOCwgOCwgOF07
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNjogcmV0dXJu
IFsxNiwgMTYsIDE2LCAxNl07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5T
Tk9STV9JTlQzMjogcmV0dXJuIFszMiwgMzIsIDMyLCAzMl07CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OiByZXR1cm4gWzgsIDgsIDgsIDhdOworICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTY6IHJldHVybiBbMTYsIDE2
LCAxNiwgMTZdOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
MzI6IHJldHVybiBbMzIsIDMyLCAzMiwgMzJdOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuVU5PUk1fU0hPUlRfNTY1OiByZXR1cm4gWzUsIDYsIDUsIDBdOworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNDQ0NDogcmV0dXJuIFs0LCA0
LCA0LCA0XTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JU
XzU1NTogcmV0dXJuIFs1LCA1LCA1LCAwXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOT1JNX1NIT1JUXzU1NTE6IHJldHVybiBbNSwgNSwgNSwgMV07CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwOiByZXR1cm4gWzEwLCAx
MCwgMTAsIDBdOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
XzEwMTAxMDJfUkVWOiByZXR1cm4gWzEwLCAxMCwgMTAsIDJdOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDg6IHJldHVybiBbOCwgOCwgOCwgOF07CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMTY6IHJldHVybiBbMTYs
IDE2LCAxNiwgMTZdOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVE
X0lOVDMyOiByZXR1cm4gWzMyLCAzMiwgMzIsIDMyXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDg6IHJldHVybiBbOCwgOCwgOCwgOF07CisgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNjogcmV0dXJuIFsxNiwg
MTYsIDE2LCAxNl07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05F
RF9JTlQzMjogcmV0dXJuIFszMiwgMzIsIDMyLCAzMl07CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVY6IHJldHVybiBbMTAsIDEwLCAx
MCwgMl07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRf
MjRfODogcmV0dXJuIFsyNCwgMCwgMCwgOF07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5IQUxGX0ZMT0FUOiByZXR1cm4gWzE2LCAxNiwgMTYsIDE2XTsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUOiByZXR1cm4gWzMyLCAzMiwgMzIsIDMyXTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8xMUZfMTFG
XzEwRl9SRVY6IHJldHVybiBbMTEsIDExLCAxMCwgMF07CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfOTk5X0U1X1JFVjogcmV0dXJuIFs5LCA5LCA5LCAw
XTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVEX0lO
VF8yNF84X1JFVjogcmV0dXJuIFszMiwgMCwgMCwgOF07CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIFswLCAwLCAwLCAw
XTsKKyAgICB9Cit9OworCisvKiogdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEJpdERl
cHRoCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICovCit0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0
Qml0RGVwdGggPSBmdW5jdGlvbihmb3JtYXQpIHsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNobkJpdHMgPSB0Y3VUZXh0dXJlVXRpbC5nZXRDaGFubmVsQml0RGVwdGgo
Zm9ybWF0LnR5cGUpOyAvLyBJVmVjNAorICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICov
IHZhciBjaG5NYXNrID0gW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXTsgLy8gQlZlYzQKKyAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjaG5Td3ogPSBbMCwgMSwgMiwgM107
IC8vIElWZWM0CisKKyAgICBzd2l0Y2ggKGZvcm1hdC5vcmRlcikgeworICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlI6IGNobk1hc2sgPSBbdHJ1ZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkE6IGNo
bk1hc2sgPSBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV07IGJyZWFrOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJBOiBjaG5NYXNrID0gW3RydWUsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkw6
IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2VdOyBicmVhazsKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5JOiBjaG5NYXNrID0gW3RydWUsIHRydWUsIHRydWUs
IHRydWVdOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5MQTog
Y2huTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkc6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdC
OiBjaG5NYXNrID0gW3RydWUsIHRydWUsIHRydWUsIGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQTogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0
cnVlLCB0cnVlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
QkdSQTogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsgY2huU3d6ID0gWzIsIDEs
IDAsIDNdOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5BUkdC
OiBjaG5NYXNrID0gW3RydWUsIHRydWUsIHRydWUsIHRydWVdOyBjaG5Td3ogPSBbMSwgMiwgMywg
MF07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0I6IGNo
bk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2VdOyBicmVhazsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCQTogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVl
LCB0cnVlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRDog
Y2huTWFzayA9IFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM6IGNobk1hc2sgPSBbdHJ1ZSwgZmFsc2UsIGZh
bHNlLCB0cnVlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UzogY2huTWFzayA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXTsgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgIH0KKworICAgIHJl
dHVybiB0Y3VUZXh0dXJlVXRpbC5zZWxlY3QoZGVNYXRoLnN3aXp6bGUoY2huQml0cywgW2NoblN3
elswXSwgY2huU3d6WzFdLCBjaG5Td3pbMl0sIGNoblN3elszXV0pLCBbMCwgMCwgMCwgMF0sIGNo
bk1hc2spOworCit9OworCisvKiogdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkCisgKiBAY29u
c3QgQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBhY2Nlc3MKKyAqIEBwYXJh
bSB7bnVtYmVyfSBjZWxsU2l6ZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvckEKKyAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29sb3JCCisgKi8KK3RjdVRleHR1cmVVdGlsLmZpbGxX
aXRoR3JpZCA9IGZ1bmN0aW9uKGFjY2VzcywgY2VsbFNpemUsIGNvbG9yQSwgY29sb3JCKSB7Cisg
ICAgaWYgKGFjY2Vzcy5nZXRIZWlnaHQoKSA9PSAxICYmIGFjY2Vzcy5nZXREZXB0aCgpID09IDEp
CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZDFEKGFjY2VzcywgY2VsbFNpemUs
IGNvbG9yQSwgY29sb3JCKTsKKyAgICBlbHNlIGlmIChhY2Nlc3MuZ2V0RGVwdGgoKSA9PSAxKQor
ICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQyRChhY2Nlc3MsIGNlbGxTaXplLCBj
b2xvckEsIGNvbG9yQik7CisgICAgZWxzZQorICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0
aEdyaWQzRChhY2Nlc3MsIGNlbGxTaXplLCBjb2xvckEsIGNvbG9yQik7Cit9OworCisvKiogdGN1
VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkMUQKKyAqIEBjb25zdCBAcGFyYW0ge3RjdVRleHR1cmUu
UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICogQHBhcmFtIHtudW1iZXJ9IGNlbGxTaXplCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvbG9yQQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBjb2xvckIKKyAqLwordGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkMUQgPSBmdW5jdGlvbihh
Y2Nlc3MsIGNlbGxTaXplLCBjb2xvckEsIGNvbG9yQikgeworICAgIGZvciAodmFyIHggPSAwOyB4
IDwgYWNjZXNzLmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICB2YXIgbXggPSBNYXRoLmZsb29y
KHggLyBjZWxsU2l6ZSkgJSAyOworCisgICAgICAgIGlmIChteCkKKyAgICAgICAgICAgIGFjY2Vz
cy5zZXRQaXhlbChjb2xvckIsIHgsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhY2Nl
c3Muc2V0UGl4ZWwoY29sb3JBLCB4LCAwKTsKKyAgICB9Cit9OworCisvKiogdGN1VGV4dHVyZVV0
aWwuZmlsbFdpdGhHcmlkMkQKKyAqIEBjb25zdCBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZm
ZXJBY2Nlc3N9IGFjY2VzcworICogQHBhcmFtIHtudW1iZXJ9IGNlbGxTaXplCisgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IGNvbG9yQQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvckIK
KyAqLwordGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkMkQgPSBmdW5jdGlvbihhY2Nlc3MsIGNl
bGxTaXplLCBjb2xvckEsIGNvbG9yQikgeworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgYWNjZXNz
LmdldEhlaWdodCgpOyB5KyspCisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgYWNjZXNzLmdl
dFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgdmFyIG14ID0gTWF0aC5mbG9vcih4IC8gY2Vs
bFNpemUpICUgMjsKKyAgICAgICAgICAgIHZhciBteSA9IE1hdGguZmxvb3IoeSAvIGNlbGxTaXpl
KSAlIDI7CisKKyAgICAgICAgICAgIGlmIChteCBeIG15KQorICAgICAgICAgICAgICAgIGFjY2Vz
cy5zZXRQaXhlbChjb2xvckIsIHgsIHkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGFjY2Vzcy5zZXRQaXhlbChjb2xvckEsIHgsIHkpOworICAgICAgICB9Cit9OworCisvKiog
dGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkM0QKKyAqIEBjb25zdCBAcGFyYW0ge3RjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICogQHBhcmFtIHtudW1iZXJ9IGNlbGxTaXpl
CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvbG9yQQorICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBjb2xvckIKKyAqLwordGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkM0QgPSBmdW5jdGlv
bihhY2Nlc3MsIGNlbGxTaXplLCBjb2xvckEsIGNvbG9yQikgeworICAgIGZvciAodmFyIHogPSAw
OyB6IDwgYWNjZXNzLmdldERlcHRoKCk7IHorKykKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkg
PCBhY2Nlc3MuZ2V0SGVpZ2h0KCk7IHkrKykKKyAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4
IDwgYWNjZXNzLmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgICAgIHZhciBteCA9IE1h
dGguZmxvb3IoeCAvIGNlbGxTaXplKSAlIDI7CisgICAgICAgICAgICAgICAgdmFyIG15ID0gTWF0
aC5mbG9vcih5IC8gY2VsbFNpemUpICUgMjsKKyAgICAgICAgICAgICAgICB2YXIgbXogPSBNYXRo
LmZsb29yKHogLyBjZWxsU2l6ZSkgJSAyOworCisgICAgICAgICAgICAgICAgaWYgKG14IF4gbXkg
XiBteikKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzLnNldFBpeGVsKGNvbG9yQiwgeCwgeSwg
eik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0
UGl4ZWwoY29sb3JBLCB4LCB5LCB6KTsKKyAgICAgICAgICAgIH0KK307CisKKy8qKgorICogQGNv
bnN0IEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAqIEByZXR1cm4g
e0FycmF5PG51bWJlcj59CisgKi8KK3RjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRNYW50
aXNzYUJpdERlcHRoID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgY2huQml0cyA9IHRjdVRleHR1cmVVdGlsLmdldENoYW5uZWxNYW50aXNz
YUJpdERlcHRoKGZvcm1hdC50eXBlKTsKKyAgICAvKiogQHR5cGUge0FycmF5PGJvb2xlYW4+fSAq
LyB2YXIgY2huTWFzayA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV07CisgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY2huU3d6ID0gWzAsIDEsIDIsIDNdOworCisgICAg
c3dpdGNoIChmb3JtYXQub3JkZXIpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5SOiBjaG5NYXNrID0gW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2VdOyBicmVhazsKKyAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5BOiBjaG5NYXNrID0gW2ZhbHNlLCBm
YWxzZSwgZmFsc2UsIHRydWVdOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5SQTogY2huTWFzayA9IFt0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWVdOyBicmVhazsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5MOiBjaG5NYXNrID0gW3RydWUs
IHRydWUsIHRydWUsIGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuSTogY2huTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuTEE6IGNobk1hc2sgPSBbdHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlJHOiBjaG5NYXNrID0gW3RydWUsIHRydWUsIGZhbHNlLCBmYWxzZV07IGJyZWFrOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQjogY2huTWFzayA9IFt0cnVl
LCB0cnVlLCB0cnVlLCBmYWxzZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLlJHQkE6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07IGJyZWFr
OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkJHUkE6IGNobk1hc2sgPSBb
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07IGNoblN3eiA9IFsyLCAxLCAwLCAzXTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQVJHQjogY2huTWFzayA9IFt0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlXTsgY2huU3d6ID0gWzEsIDIsIDMsIDBdOyBicmVhazsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCOiBjaG5NYXNrID0gW3RydWUsIHRy
dWUsIHRydWUsIGZhbHNlXTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuc1JHQkE6IGNobk1hc2sgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07IGJyZWFrOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQ6IGNobk1hc2sgPSBbdHJ1ZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZV07IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLkRTOiBjaG5NYXNrID0gW3RydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZV07IGJyZWFr
OworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6IGNobk1hc2sgPSBbZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV07IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHRjdVRleHR1cmVVdGls
LnNlbGVjdChkZU1hdGguc3dpenpsZShjaG5CaXRzLCBbY2huU3d6WzBdLCBjaG5Td3pbMV0sIGNo
blN3elsyXSwgY2huU3d6WzNdXSksIFswLCAwLCAwLCAwXSwgY2huTWFzayk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7P3RjdVRleHR1cmUuQ2hhbm5lbFR5cGV9IGNoYW5uZWxUeXBlCisgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICovCit0Y3VUZXh0dXJlVXRpbC5nZXRDaGFubmVsTWFudGlz
c2FCaXREZXB0aCA9IGZ1bmN0aW9uKGNoYW5uZWxUeXBlKSB7CisgICAgc3dpdGNoIChjaGFubmVs
VHlwZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UODoK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDE2OgorICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UMzI6CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OgorICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTY6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5VTk9STV9JTlQzMjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOT1JNX1NIT1JUXzU2NToKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
T1JNX1NIT1JUXzQ0NDQ6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9S
TV9TSE9SVF81NTU6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9T
SE9SVF81NTUxOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
XzEwMTAxMDoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8x
MDEwMTAyX1JFVjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9J
TlQ4OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDE2Ogor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyOgorICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UODoKKyAgICAgICAgY2Fz
ZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2OgorICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzI6CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVY6CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMjRfODoKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF85OTlfRTVfUkVWOgorICAgICAgICAg
ICAgcmV0dXJuIHRjdVRleHR1cmVVdGlsLmdldENoYW5uZWxCaXREZXB0aChjaGFubmVsVHlwZSk7
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5IQUxGX0ZMT0FUOiByZXR1cm4g
WzEwLCAxMCwgMTAsIDEwXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZM
T0FUOiByZXR1cm4gWzIzLCAyMywgMjMsIDIzXTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8xMUZfMTFGXzEwRl9SRVY6IHJldHVybiBbNiwgNiwgNSwg
MF07CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVF9VTlNJR05FRF9J
TlRfMjRfOF9SRVY6IHJldHVybiBbMjMsIDAsIDAsIDhdOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYW5uZWxUeXBlOiAnICsgY2hhbm5l
bFR5cGUpOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVm
ZmVyQWNjZXNzfSBkc3QKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNj
ZXNzfSBzcmMKKyAqLwordGN1VGV4dHVyZVV0aWwuY29weSA9IGZ1bmN0aW9uKGRzdCwgc3JjKSB7
CisgICAgdmFyIHdpZHRoID0gZHN0LmdldFdpZHRoKCk7CisgICAgdmFyIGhlaWdodCA9IGRzdC5n
ZXRIZWlnaHQoKTsKKyAgICB2YXIgZGVwdGggPSBkc3QuZ2V0RGVwdGgoKTsKKworICAgIERFX0FT
U0VSVChzcmMuZ2V0V2lkdGgoKSA9PSB3aWR0aCAmJiBzcmMuZ2V0SGVpZ2h0KCkgPT0gaGVpZ2h0
ICYmIHNyYy5nZXREZXB0aCgpID09IGRlcHRoKTsKKworICAgIGlmIChzcmMuZ2V0Rm9ybWF0KCku
aXNFcXVhbChkc3QuZ2V0Rm9ybWF0KCkpKSB7CisgICAgICAgIHZhciBzcmNEYXRhID0gc3JjLmdl
dERhdGFQdHIoKTsKKyAgICAgICAgdmFyIGRzdERhdGEgPSBkc3QuZ2V0RGF0YVB0cigpOworCisg
ICAgICAgIGlmIChzcmNEYXRhLmxlbmd0aCA9PSBkc3REYXRhLmxlbmd0aCkgeworICAgICAgICAg
ICAgZHN0RGF0YS5zZXQoc3JjRGF0YSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgdmFyIHNyY0NsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENs
YXNzKHNyYy5nZXRGb3JtYXQoKS50eXBlKTsKKyAgICB2YXIgZHN0Q2xhc3MgPSB0Y3VUZXh0dXJl
LmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZHN0LmdldEZvcm1hdCgpLnR5cGUpOworICAgIHZhciBz
cmNJc0ludCA9IHNyY0NsYXNzID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdO
RURfSU5URUdFUiB8fCBzcmNDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3Mu
VU5TSUdORURfSU5URUdFUjsKKyAgICB2YXIgZHN0SXNJbnQgPSBkc3RDbGFzcyA9PSB0Y3VUZXh0
dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0lOVEVHRVIgfHwgZHN0Q2xhc3MgPT0gdGN1
VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVI7CisKKyAgICBpZiAo
c3JjSXNJbnQgJiYgZHN0SXNJbnQpIHsKKyAgICAgICAgZm9yICh2YXIgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQorICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAg
ICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICBkc3Quc2V0UGl4
ZWxJbnQoc3JjLmdldFBpeGVsSW50KHgsIHksIHopLCB4LCB5LCB6KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmb3IgKHZhciB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgICAgIGZvciAodmFy
IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgICAgIGRzdC5zZXRQaXhlbChzcmMuZ2V0UGl4ZWwoeCwgeSwgeiks
IHgsIHksIHopOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0
UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICovCit0Y3VUZXh0dXJlVXRpbC5lc3RpbWF0ZVBp
eGVsVmFsdWVSYW5nZSA9IGZ1bmN0aW9uKGFjY2VzcykgeworICAgIHZhciBmb3JtYXQgPSBhY2Nl
c3MuZ2V0Rm9ybWF0KCk7CisKKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4OgorICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTY6CisgICAgICAgICAgICAvLyBOb3JtYWxpemVk
IHVuc2lnbmVkIGZvcm1hdHMuCisgICAgICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICAg
IFswLCAwLCAwLCAwXSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMSwgMV0KKyAgICAgICAgICAg
IF07CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDg6Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNjoKKyAgICAgICAg
ICAgIC8vIE5vcm1hbGl6ZWQgc2lnbmVkIGZvcm1hdHMuCisgICAgICAgICAgICByZXR1cm4gWwor
ICAgICAgICAgICAgICAgIFstMSwgLTEsIC0xLCAtMV0sCisgICAgICAgICAgICAgICAgWzEsIDEs
IDEsIDFdCisgICAgICAgICAgICBdOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAv
LyBcbm90ZSBTYW1wbGVzIGV2ZXJ5IDQvOHRoIHBpeGVsLgorICAgICAgICAgICAgdmFyIG1pblZh
bCA9IFtJbmZpbml0eSwgSW5maW5pdHksIEluZmluaXR5LCBJbmZpbml0eV07CisgICAgICAgICAg
ICB2YXIgbWF4VmFsID0gWy1JbmZpbml0eSwgLUluZmluaXR5LCAtSW5maW5pdHksIC1JbmZpbml0
eV07CisKKyAgICAgICAgICAgIGZvciAodmFyIHogPSAwOyB6IDwgYWNjZXNzLmdldERlcHRoKCk7
IHogKz0gMikgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgYWNjZXNzLmdl
dEhlaWdodCgpOyB5ICs9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7
IHggPCBhY2Nlc3MuZ2V0V2lkdGgoKTsgeCArPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcCA9IGFjY2Vzcy5nZXRQaXhlbCh4LCB5LCB6KTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgbWluVmFsWzBdID0gTWF0aC5taW4obWluVmFsWzBdLCBwWzBdKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1pblZhbFsxXSA9IE1hdGgubWluKG1pblZhbFsxXSwgcFsxXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5WYWxbMl0gPSBNYXRoLm1pbihtaW5WYWxbMl0sIHBbMl0p
OworICAgICAgICAgICAgICAgICAgICAgICAgbWluVmFsWzNdID0gTWF0aC5taW4obWluVmFsWzNd
LCBwWzNdKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsWzBdID0gTWF0aC5tYXgo
bWF4VmFsWzBdLCBwWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbFsxXSA9IE1h
dGgubWF4KG1heFZhbFsxXSwgcFsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWxb
Ml0gPSBNYXRoLm1heChtYXhWYWxbMl0sIHBbMl0pOworICAgICAgICAgICAgICAgICAgICAgICAg
bWF4VmFsWzNdID0gTWF0aC5tYXgobWF4VmFsWzNdLCBwWzNdKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBbbWluVmFsLCBtYXhWYWxdOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0
dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IGFjY2VzcworICogQHJldHVybiB7e3NjYWxlOiBB
cnJheTxudW1iZXI+LCBiaWFzOiBBcnJheTxudW1iZXI+fX0KKyAqLwordGN1VGV4dHVyZVV0aWwu
Y29tcHV0ZVBpeGVsU2NhbGVCaWFzID0gZnVuY3Rpb24oYWNjZXNzKSB7CisgICAgdmFyIGxpbWl0
cyA9IHRjdVRleHR1cmVVdGlsLmVzdGltYXRlUGl4ZWxWYWx1ZVJhbmdlKGFjY2Vzcyk7CisgICAg
dmFyIG1pblZhbCA9IGxpbWl0c1swXTsKKyAgICB2YXIgbWF4VmFsID0gbGltaXRzWzFdOworCisg
ICAgdmFyIHNjYWxlID0gWzEsIDEsIDEsIDFdOworICAgIHZhciBiaWFzID0gWzAsIDAsIDAsIDBd
OworCisgICAgdmFyIGVwcyA9IDAuMDAwMTsKKworICAgIGZvciAodmFyIGMgPSAwOyBjIDwgNDsg
YysrKSB7CisgICAgICAgIGlmIChtYXhWYWxbY10gLSBtaW5WYWxbY10gPCBlcHMpIHsKKyAgICAg
ICAgICAgIHNjYWxlW2NdID0gKG1heFZhbFtjXSA8IGVwcykgPyAxIDogKDEgLyBtYXhWYWxbY10p
OworICAgICAgICAgICAgYmlhc1tjXSA9IChjID09IDMpID8gKDEgLSBtYXhWYWxbY10gKiBzY2Fs
ZVtjXSkgOiAoMCAtIG1pblZhbFtjXSAqIHNjYWxlW2NdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHNjYWxlW2NdID0gMSAvIChtYXhWYWxbY10gLSBtaW5WYWxbY10pOworICAgICAg
ICAgICAgYmlhc1tjXSA9IDAgLSBtaW5WYWxbY10gKiBzY2FsZVtjXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB7CisgICAgICAgIHNjYWxlOiBzY2FsZSwKKyAgICAgICAgYmlhczog
YmlhcworICAgIH07Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVN
YXRoLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZU1hdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJiMmE2MWZk
NzFhMzBjOThjNDEwOGY2MTA0N2Q4MjY2YTUxODZjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2Rl
bGlicy9kZWJhc2UvZGVNYXRoLmpzCkBAIC0wLDAgKzEsMTE0MyBAQAorLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMK
KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK
KyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisg
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoJyk7CisKKy8qKiBAdHlwZWRlZiB7IChJbnQ4QXJyYXl8VWludDhBcnJheXxVaW50
OENsYW1wZWRBcnJheXxJbnQxNkFycmF5fFVpbnQxNkFycmF5fEludDMyQXJyYXl8VWludDMyQXJy
YXl8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheSkgfSAqLworZ29vZy5UeXBlZEFycmF5OworCisv
KiogQHR5cGVkZWYgeyAoQXJyYXk8bnVtYmVyPnxBcnJheTxib29sZWFuPnxnb29nLlR5cGVkQXJy
YXkpIH0gKi8KK2dvb2cuTnVtYmVyQXJyYXk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisK
K3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKK3ZhciBERV9B
U1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKCF4KQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0Fzc2VydCBmYWlsZWQnKTsKK307CisKKy8qKiBAY29uc3QgKi8gZGVNYXRoLklOVDMyX1NJ
WkUgPSA0OworCitkZU1hdGguZGVJblJhbmdlMzIgPSBmdW5jdGlvbihhLCBtbiwgbXgpIHsKKyAg
ICByZXR1cm4gKGEgPj0gbW4pICYmIChhIDw9IG14KTsKK307CisKK2RlTWF0aC5kZUluQm91bmRz
MzIgPSBmdW5jdGlvbihhLCBtbiwgbXgpIHsKKyAgICByZXR1cm4gKGEgPj0gbW4pICYmIChhIDwg
bXgpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHJldHVybiB7bnVtYmVy
fQorICovCitkZU1hdGguZGVGbG9hdEZyYWMgPSBmdW5jdGlvbihhKSB7IHJldHVybiBhIC0gTWF0
aC5mbG9vcihhKTsgfTsKKworLyoqCisgKiBUcmFuc2Zvcm0gYSA2NC1iaXQgZmxvYXQgbnVtYmVy
IGludG8gYSAzMi1iaXQgZmxvYXQgbnVtYmVyLgorICogTmF0aXZlIGRFUVAgdXNlcyAzMi1iaXQg
bnVtYmVycywgc28gc29tZXRpbWVzIDY0LWJpdCBmbG9hdGluZyBudW1iZXJzIGluIEpTIHNob3Vs
ZCBiZSB0cmFuc2Zvcm1lZCBpbnRvIDMyLWJpdCBvbmVzIHRvIGVuc3VyZSB0aGUgY29ycmVjdG5l
c3Mgb2YgdGhlIHJlc3VsdC4KKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgKi8KK2RlTWF0aC50b0Zsb2F0MzIgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFyIEZMT0FU
MzJBUlJBWTEgPSBuZXcgRmxvYXQzMkFycmF5KDEpOworICAgIHJldHVybiBmdW5jdGlvbihhKSB7
CisgICAgICAgIEZMT0FUMzJBUlJBWTFbMF0gPSBhOworICAgICAgICByZXR1cm4gRkxPQVQzMkFS
UkFZMVswXTsKKyAgICB9OworfSkoKTsKKworLyoqIEBjb25zdCAqLyBkZU1hdGguSU5WX0xPR18y
X0ZMT0FUMzIgPSBkZU1hdGgudG9GbG9hdDMyKDEuNDQyNjk1MDQwODkpOyAvKiogMS4wIC8gbG9n
X2UoMi4wKSAqLworCisvKioKKyAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSBwb3dlci1vZi10d28u
CisgKiBAcGFyYW0ge251bWJlcn0gYSBJbnB1dCB2YWx1ZS4KKyAqIEByZXR1cm4ge2Jvb2xlYW59
IHJldHVybiBUcnVlIGlmIGlucHV0IGlzIGEgcG93ZXItb2YtdHdvIHZhbHVlLCBmYWxzZSBvdGhl
cndpc2UuCisgKiAoQWxzbyByZXR1cm5zIHRydWUgZm9yIHplcm8pLgorICovCitkZU1hdGguZGVJ
c1Bvd2VyT2ZUd28zMiA9IGZ1bmN0aW9uKGEpIHsKKyAgICByZXR1cm4gKChhICYgKGEgLSAxKSkg
PT0gMCk7Cit9OworCisvKioKKyAqIEFsaWduIGFuIGludGVnZXIgdG8gZ2l2ZW4gcG93ZXItb2Yt
dHdvIHNpemUuCisgKiBAcGFyYW0ge251bWJlcn0gdmFsIFRoZSBudW1iZXIgdG8gYWxpZ24uCisg
KiBAcGFyYW0ge251bWJlcn0gYWxpZ24gVGhlIHNpemUgdG8gYWxpZ24gdG8uCisgKiBAcmV0dXJu
IHtudW1iZXJ9IFRoZSBhbGlnbmVkIHZhbHVlCisgKi8KK2RlTWF0aC5kZUFsaWduMzIgPSBmdW5j
dGlvbih2YWwsIGFsaWduKSB7CisgICAgaWYgKCFkZU1hdGguZGVJc1Bvd2VyT2ZUd28zMihhbGln
bikpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgcG93ZXIgb2YgMjogJyArIGFsaWdu
KTsKKyAgICByZXR1cm4gKCh2YWwgKyBhbGlnbiAtIDEpICYgfihhbGlnbiAtIDEpKSAmIDB4RkZG
RkZGRkY7IC8vMHhGRkZGRkZGRiBtYWtlIHN1cmUgaXQgcmV0dXJucyBhIDMyIGJpdCBjYWxjdWxh
dGlvbiBpbiA2NCBiaXQgYnJvd3NlcnMuCit9OworCisvKioKKyAqIENvbXB1dGUgdGhlIGJpdCBw
b3B1bGF0aW9uIGNvdW50IG9mIGFuIGludGVnZXIuCisgKiBAcGFyYW0ge251bWJlcn0gYQorICog
QHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIG9uZSBiaXRzIGluCisgKi8KK2RlTWF0aC5k
ZVBvcDMyID0gZnVuY3Rpb24oYSkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFz
azAgPSAweDU1NTU1NTU1OyAvKiAxLWJpdCB2YWx1ZXMuICovCisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBtYXNrMSA9IDB4MzMzMzMzMzM7IC8qIDItYml0IHZhbHVlcy4gKi8KKyAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hc2syID0gMHgwZjBmMGYwZjsgLyogNC1iaXQgdmFs
dWVzLiAqLworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFzazMgPSAweDAwZmYwMGZm
OyAvKiA4LWJpdCB2YWx1ZXMuICovCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXNr
NCA9IDB4MDAwMGZmZmY7IC8qIDE2LWJpdCB2YWx1ZXMuICovCisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB0ID0gYSAmIDB4RkZGRkZGRkY7IC8qIENyb3AgdG8gMzItYml0IHZhbHVlICov
CisgICAgdCA9ICh0ICYgbWFzazApICsgKCh0ID4+IDEpICYgbWFzazApOworICAgIHQgPSAodCAm
IG1hc2sxKSArICgodCA+PiAyKSAmIG1hc2sxKTsKKyAgICB0ID0gKHQgJiBtYXNrMikgKyAoKHQg
Pj4gNCkgJiBtYXNrMik7CisgICAgdCA9ICh0ICYgbWFzazMpICsgKCh0ID4+IDgpICYgbWFzazMp
OworICAgIHQgPSAodCAmIG1hc2s0KSArICh0ID4+IDE2KTsKKyAgICByZXR1cm4gdDsKK307CisK
K2RlTWF0aC5jbGFtcCA9IGZ1bmN0aW9uKHZhbCwgbWluUGFybSwgbWF4UGFybSkgeworICAgIHJl
dHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWwsIG1pblBhcm0pLCBtYXhQYXJtKTsKK307CisKKy8q
KgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSBt
aW5QYXJtCisgKiBAcGFyYW0ge251bWJlcn0gbWF4UGFybQorICogQHJldHVybiB7QXJyYXk8bnVt
YmVyPn0KKyAqLworZGVNYXRoLmNsYW1wVmVjdG9yID0gZnVuY3Rpb24odmFsdWVzLCBtaW5QYXJt
LCBtYXhQYXJtKSB7CisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICByZXN1bHQucHVzaChkZU1hdGguY2xhbXAo
dmFsdWVzW2ldLCBtaW5QYXJtLCBtYXhQYXJtKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisK
K2RlTWF0aC5pbW9kID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZhciBtID0gYSAlIGI7CisgICAg
cmV0dXJuIG0gPCAwID8gbSArIGIgOiBtOworfTsKKworZGVNYXRoLm1pcnJvciA9IGZ1bmN0aW9u
KGEpIHsKKyAgICByZXR1cm4gYSA+PSAwID8gYSA6IC0oMSArIGEpOworfTsKKworLyoqCisgKiBA
cGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEgU291cmNlIGFycmF5CisgKiBAcGFyYW0ge2dvb2cu
TnVtYmVyQXJyYXl9IGluZGljZXMKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFN3aXp6bGVk
IGFycmF5CisgKi8KK2RlTWF0aC5zd2l6emxlID0gZnVuY3Rpb24oYSwgaW5kaWNlcykgeworICAg
IGlmICghaW5kaWNlcy5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQg
bXVzdCBiZSBhbiBhcnJheScpOworICAgIHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspCisgICAgICAgIGRzdC5wdXNoKGFbaW5kaWNlc1tp
XV0pOworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIFNoaWZ0IGxlZnQgZWxlbWVudHMg
b2YgYXJyYXkgYSBieSBlbGVtZW50cyBvZiBhcnJheSBiCisgKiBkc3Rbbl0gYVtuXSA8PCBiW25d
CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJB
cnJheX0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gUmVzdWx0IGFycmF5CisgKi8KK2Rl
TWF0aC5hcnJheVNoaWZ0TGVmdCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGgg
IT0gYi5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11c3QgaGF2ZSB0
aGUgc2FtZSBzaXplJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goYVtpXSA8PCBiW2ldKTsKKyAgICBy
ZXR1cm4gZHN0OworfTsKKworLyoqCisgKiBNdWx0aXBseSB0d28gdmVjdG9ycywgZWxlbWVudCBi
eSBlbGVtZW50CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7Z29v
Zy5OdW1iZXJBcnJheX0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gUmVzdWx0IGFycmF5
CisgKi8KKworZGVNYXRoLm11bHRpcGx5ID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmIChhLmxl
bmd0aCAhPSBiLmxlbmd0aCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheXMgbXVzdCBo
YXZlIHRoZSBzYW1lIHNpemUnKTsKKyAgICB2YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBkc3QucHVzaChhW2ldICogYltpXSk7Cisg
ICAgcmV0dXJuIGRzdDsKK307CisKKy8qKgorICogRGl2aWRlIHR3byB2ZWN0b3JzLCBlbGVtZW50
IGJ5IGVsZW1lbnQKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYQorICogQHBhcmFtIHtn
b29nLk51bWJlckFycmF5fSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBSZXN1bHQgYXJy
YXkKKyAqIEB0aHJvd3Mge0Vycm9yfQorICovCisKK2RlTWF0aC5kaXZpZGUgPSBmdW5jdGlvbihh
LCBiKSB7CisgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0FycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZScpOworICAgIHZhciBkc3QgPSBb
XTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KGJbaV0gPT09IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpdmlzaW9uIGJ5IDAn
KTsKKyAgICAgICAgZHN0LnB1c2goYVtpXSAvIGJbaV0pOworICAgIH0KKyAgICByZXR1cm4gZHN0
OworfTsKKworLyoqCisgKiBEaXZpZGUgdmVjdG9yIGJ5IGEgc2NhbGFyCisgKiBAcGFyYW0ge2dv
b2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKiBAcmV0dXJuIHtBcnJh
eTxudW1iZXI+fSBSZXN1bHQgYXJyYXkKKyAqLworZGVNYXRoLmRpdmlkZVNjYWxlID0gZnVuY3Rp
b24oYSwgYikgeworICAgIHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEu
bGVuZ3RoOyBpKyspCisgICAgICAgIGRzdC5wdXNoKGFbaV0gLyBiKTsKKyAgICByZXR1cm4gZHN0
OworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIK
KyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZGVNYXRoLm1vZCA9IGZ1bmN0aW9uKGEsIGIpIHsK
KyAgICByZXR1cm4gYSAtIGIgKiBNYXRoLmZsb29yKGEgLyBiKTsKK307CisKKy8qKgorICogTW9k
dWx1cyB2ZWN0b3IgYnkgYSBzY2FsYXIKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYQor
ICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFJlc3VsdCBh
cnJheQorICovCitkZU1hdGgubW9kU2NhbGUgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgdmFyIGRz
dCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAg
ZHN0LnB1c2goZGVNYXRoLm1vZChhW2ldLCBiKSk7CisgICAgcmV0dXJuIGRzdDsKK307CisKKy8q
KgorICogTXVsdGlwbHkgdmVjdG9yIGJ5IGEgc2NhbGFyCisgKiBAcGFyYW0ge2dvb2cuTnVtYmVy
QXJyYXl9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+
fSBSZXN1bHQgYXJyYXkKKyAqLworZGVNYXRoLnNjYWxlID0gZnVuY3Rpb24oYSwgYikgeworICAg
IHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisg
ICAgICAgIGRzdC5wdXNoKGFbaV0gKiBiKTsKKyAgICByZXR1cm4gZHN0OworfTsKKworLyoqCisg
KiBBZGQgdmVjdG9yIGFuZCBzY2FsYXIsIGVsZW1lbnQgYnkgZWxlbWVudAorICogQHBhcmFtIHtn
b29nLk51bWJlckFycmF5fSBhCisgKiBAcGFyYW0ge251bWJlcn0gYgorICogQHJldHVybiB7QXJy
YXk8bnVtYmVyPn0gUmVzdWx0IGFycmF5CisgKi8KK2RlTWF0aC5hZGRTY2FsYXIgPSBmdW5jdGlv
bihhLCBiKSB7CisgICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYXJyYXkuJyk7CisgICAgaWYgKHR5cGVv
ZiBiICE9PSAnbnVtYmVyJykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWNvbmQgYXJndW1l
bnQgbXVzdCBiZSBhIG51bWJlci4nKTsKKyAgICB2YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBkc3QucHVzaChhW2ldICsgYik7Cisg
ICAgcmV0dXJuIGRzdDsKK307CisKKy8qKgorICogQWRkIHR3byB2ZWN0b3JzLCBlbGVtZW50IGJ5
IGVsZW1lbnQKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYQorICogQHBhcmFtIHtnb29n
Lk51bWJlckFycmF5fSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBSZXN1bHQgYXJyYXkK
KyAqLworZGVNYXRoLmFkZCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0g
Yi5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11c3QgaGF2ZSB0aGUg
c2FtZSBzaXplJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goYVtpXSArIGJbaV0pOworICAgIHJldHVy
biBkc3Q7Cit9OworCisvKioKKyAqIFN1YnRyYWN0IHR3byB2ZWN0b3JzLCBlbGVtZW50IGJ5IGVs
ZW1lbnQKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYQorICogQHBhcmFtIHtnb29nLk51
bWJlckFycmF5fSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBSZXN1bHQgYXJyYXkKKyAq
LworCitkZU1hdGguc3VidHJhY3QgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgaWYgKGEubGVuZ3Ro
ICE9IGIubGVuZ3RoKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5cyBtdXN0IGhhdmUg
dGhlIHNhbWUgc2l6ZScpOworICAgIHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGRzdC5wdXNoKGFbaV0gLSBiW2ldKTsKKyAgICBy
ZXR1cm4gZHN0OworfTsKKworLyoqCisgKiBTdWJ0cmFjdCB2ZWN0b3IgYW5kIHNjYWxhciwgZWxl
bWVudCBieSBlbGVtZW50CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJh
bSB7bnVtYmVyfSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBSZXN1bHQgYXJyYXkKKyAq
LworZGVNYXRoLnN1YlNjYWxhciA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoIUFycmF5Lmlz
QXJyYXkoYSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBi
ZSBhbiBhcnJheS4nKTsKKyAgICBpZiAodHlwZW9mIGIgIT09ICdudW1iZXInKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ1NlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyLicpOworICAg
IHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisg
ICAgICAgIGRzdC5wdXNoKGFbaV0gLSBiKTsKKyAgICByZXR1cm4gZHN0OworfTsKKworLyoqCisg
KiBDYWxjdWxhdGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzCisgKiBA
cGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0g
YgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gYWJzKGRpZmYoYSAtIGIpKQorICovCitkZU1h
dGguYWJzRGlmZiA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5n
dGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBz
aXplJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5n
dGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goTWF0aC5hYnMoYVtpXSAtIGJbaV0pKTsKKyAgICBy
ZXR1cm4gZHN0OworfTsKKworLyoqCisgKiBDYWxjdWxhdGUgYWJzb2x1dGUgdmFsdWUgb2YgYSB2
ZWN0b3IKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYQorICogQHJldHVybiB7QXJyYXk8
bnVtYmVyPn0gYWJzKGEpCisgKi8KK2RlTWF0aC5hYnMgPSBmdW5jdGlvbihhKSB7CisgICAgdmFy
IGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAg
ICAgZHN0LnB1c2goTWF0aC5hYnMoYVtpXSkpOworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioK
KyAqIElzIGEgPD0gYiAoZWxlbWVudCBieSBlbGVtZW50KT8KKyAqIEBwYXJhbSB7Z29vZy5OdW1i
ZXJBcnJheX0gYQorICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBiCisgKiBAcmV0dXJuIHtB
cnJheTxib29sZWFuPn0gUmVzdWx0IGFycmF5IG9mIGJvb2xlYW5zCisgKi8KK2RlTWF0aC5sZXNz
VGhhbkVxdWFsID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0
aCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIHNp
emUnKTsKKyAgICB2YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0
aDsgaSsrKQorICAgICAgICBkc3QucHVzaChhW2ldIDw9IGJbaV0pOworICAgIHJldHVybiBkc3Q7
Cit9OworCisvKioKKyAqIElzIGEgPT09IGIgKGVsZW1lbnQgYnkgZWxlbWVudCk/CisgKiBAcGFy
YW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYgor
ICogQHJldHVybiB7Ym9vbGVhbn0gUmVzdWx0CisgKi8KK2RlTWF0aC5lcXVhbCA9IGZ1bmN0aW9u
KGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignQXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplJyk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK307CisK
Ky8qKgorICogQXJlIGFsbCB2YWx1ZXMgaW4gdGhlIGFycmF5IHRydWU/CisgKiBAcGFyYW0ge0Fy
cmF5PGJvb2xlYW4+fSBhCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitkZU1hdGguYm9vbEFs
bCA9IGZ1bmN0aW9uKGEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
CisgICAgICAgIGlmIChhW2ldID09IGZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfTsKKworLyoqCisgKiBkZU1hdGguYXNzaWduKGEsIGIpIGVsZW1l
bnQgYnkgZWxlbWVudAorICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBhCisgKiBAcmV0dXJu
IHtBcnJheTxudW1iZXI+fQorICovCitkZU1hdGguYXNzaWduID0gZnVuY3Rpb24oYSkgeworICAg
IHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisg
ICAgICAgIGRzdC5wdXNoKGFbaV0pOworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIGRl
TWF0aC5tYXgoYSwgYikgZWxlbWVudCBieSBlbGVtZW50CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVy
QXJyYXl9IGEKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYgorICogQHJldHVybiB7QXJy
YXk8bnVtYmVyPn0KKyAqLworZGVNYXRoLm1heCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAo
YS5sZW5ndGggIT0gYi5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11
c3QgaGF2ZSB0aGUgc2FtZSBzaXplJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goTWF0aC5tYXgoYVtp
XSwgYltpXSkpOworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIGRlTWF0aC5taW4oYSwg
YikgZWxlbWVudCBieSBlbGVtZW50CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAq
IEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0K
KyAqLworZGVNYXRoLm1pbiA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0g
Yi5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11c3QgaGF2ZSB0aGUg
c2FtZSBzaXplJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goTWF0aC5taW4oYVtpXSwgYltpXSkpOwor
ICAgIHJldHVybiBkc3Q7Cit9OworCisvLyBOZWFyZXN0LWV2ZW4gcm91bmRpbmcgaW4gY2FzZSBv
ZiB0aWUgKGZyYWN0aW9uYWwgcGFydCAwLjUpLCBvdGhlcndpc2Ugb3JkaW5hcnkgcm91bmRpbmcu
CitkZU1hdGgucmludCA9IGZ1bmN0aW9uKGEpIHsKKyAgICB2YXIgZmxvb3JWYWwgPSBNYXRoLmZs
b29yKGEpOworICAgIHZhciBmcmFjVmFsID0gYSAtIGZsb29yVmFsOworCisgICAgaWYgKGZyYWNW
YWwgIT0gMC41KQorICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChhKTsgLy8gT3JkaW5hcnkgY2Fz
ZS4KKworICAgIHZhciByb3VuZFVwID0gKGZsb29yVmFsICUgMikgIT0gMDsKKworICAgIHJldHVy
biBmbG9vclZhbCArIChyb3VuZFVwID8gMSA6IDApOworfTsKKworLyoqCisgKiB3cmFwIHRoZSBu
dW1iZXIsIHNvIHRoYXQgaXQgZml0cyBpbiB0aGUgcmFuZ2UgW21pblZhbHVlLCBtYXhWYWx1ZV0K
KyAqIEBwYXJhbSB7bnVtYmVyfSB2CisgKiBAcGFyYW0ge251bWJlcn0gbWluVmFsdWUKKyAqIEBw
YXJhbSB7bnVtYmVyfSBtYXhWYWx1ZQorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGgu
d3JhcCA9IGZ1bmN0aW9uKHYsIG1pblZhbHVlLCBtYXhWYWx1ZSkgeworICAgIHZhciByYW5nZSA9
IG1heFZhbHVlIC0gbWluVmFsdWUgKyAxOworCisgICAgaWYgKHYgPCBtaW5WYWx1ZSkgeworICAg
ICAgICB2ICs9IHJhbmdlICogKE1hdGguZmxvb3IoKG1pblZhbHVlIC0gdikgLyByYW5nZSkgKyAx
KTsKKyAgICB9CisgICAgcmV0dXJuIG1pblZhbHVlICsgTWF0aC5mbG9vcigodiAtIG1pblZhbHVl
KSAlIHJhbmdlKTsKK307CisKKy8qKgorICogUm91bmQgbnVtYmVyIHRvIGludCBieSBkcm9wcGlu
ZyBmcmFjdGlvbmFsIHBhcnQKKyAqIGl0IGlzIGVxdWl2YWxlbnQgb2YgR0xTTCBpbnQoKSBjb25z
dHJ1Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwor
ZGVNYXRoLmludENhc3QgPSBmdW5jdGlvbihhKSB7CisgICAgdmFyIHY7CisgICAgaWYgKGEgPj0g
MCkKKyAgICAgICAgdiA9IE1hdGguZmxvb3IoYSk7CisgICAgZWxzZQorICAgICAgICB2ID0gTWF0
aC5jZWlsKGEpOworICAgIHJldHVybiBkZU1hdGgud3JhcCh2LCAtMHg4MDAwMDAwMCwgMHg3RkZG
RkZGRik7Cit9OworCisvKioKKyAqIFJvdW5kIG51bWJlciB0byB1aW50IGJ5IGRyb3BwaW5nIGZy
YWN0aW9uYWwgcGFydAorICogaXQgaXMgZXF1aXZhbGVudCBvZiBHTFNMIHVpbnQoKSBjb25zdHJ1
Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZGVN
YXRoLnVpbnRDYXN0ID0gZnVuY3Rpb24oYSkgeworICAgIHZhciB2OworICAgIGlmIChhID49IDAp
CisgICAgICAgIHYgPSBNYXRoLmZsb29yKGEpOworICAgIGVsc2UKKyAgICAgICAgdiA9IE1hdGgu
Y2VpbChhKTsKKyAgICByZXR1cm4gZGVNYXRoLndyYXAodiwgMCwgMHhGRkZGRkZGRik7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2Rl
TWF0aC5sb2dUb0Zsb29yID0gZnVuY3Rpb24oYSkgeworICAgIGFzc2VydE1zZ09wdGlvbnMoYSA+
IDAsICdWYWx1ZSBpcyBsZXNzIG9yIGVxdWFsIHRoYW4gemVybycsIGZhbHNlLCB0cnVlKTsKKyAg
ICByZXR1cm4gMzEgLSBkZU1hdGguY2x6MzIoYSk7Cit9OworCisvKioKKyAqIEZpbmQgaW50ZXJz
ZWN0aW9uIG9mIHR3byByZWN0YW5nbGVzCisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEg
QXJyYXkgW3gsIHksIHdpZHRoLCBoZWlnaHRdCisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9
IGIgQXJyYXkgW3gsIHksIHdpZHRoLCBoZWlnaHRdCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+
fQorICovCitkZU1hdGguaW50ZXJzZWN0ID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmIChhLmxl
bmd0aCAhPSA0KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5ICJhIiBtdXN0IGhhdmUg
bGVuZ3RoIDQgYnV0IGhhcyBsZW5ndGg6ICcgKyBhLmxlbmd0aCk7CisgICAgaWYgKGIubGVuZ3Ro
ICE9IDQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgImIiIG11c3QgaGF2ZSBsZW5n
dGggNCBidXQgaGFzIGxlbmd0aDogJyArIGIubGVuZ3RoKTsKKyAgICB2YXIgeDAgPSBNYXRoLm1h
eChhWzBdLCBiWzBdKTsKKyAgICB2YXIgeTAgPSBNYXRoLm1heChhWzFdLCBiWzFdKTsKKyAgICB2
YXIgeDEgPSBNYXRoLm1pbihhWzBdICsgYVsyXSwgYlswXSArIGJbMl0pOworICAgIHZhciB5MSA9
IE1hdGgubWluKGFbMV0gKyBhWzNdLCBiWzFdICsgYlszXSk7CisgICAgdmFyIHcgPSBNYXRoLm1h
eCgwLCB4MSAtIHgwKTsKKyAgICB2YXIgaCA9IE1hdGgubWF4KDAsIHkxIC0geTApOworCisgICAg
cmV0dXJuIFt4MCwgeTAsIHcsIGhdOworfTsKKworLyoqIGRlTWF0aC5kZU1hdGhIYXNoCisgKiBA
cGFyYW0ge251bWJlcn0gYQorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGguZGVNYXRo
SGFzaCA9IGZ1bmN0aW9uKGEpIHsKKyAgICB2YXIga2V5ID0gYTsKKyAgICBrZXkgPSAoa2V5IF4g
NjEpIF4gKGtleSA+PiAxNik7CisgICAga2V5ID0ga2V5ICsgKGtleSA8PCAzKTsKKyAgICBrZXkg
PSBrZXkgXiAoa2V5ID4+IDQpOworICAgIGtleSA9IGtleSAqIDB4MjdkNGViMmQ7IC8qIHByaW1l
L29kZCBjb25zdGFudCAqLworICAgIGtleSA9IGtleSBeIChrZXkgPj4gMTUpOworICAgIHJldHVy
biBrZXk7Cit9OworCisvKioKKyAqIENvbnZlcnRzIGEgYnl0ZSBhcnJheSB0byBhIG51bWJlci4g
Q2Fubm90IGNvbnZlcnQgbnVtYmVycyBsYXJnZXIgdGhhbiA1MiBiaXRzLgorICogQHBhcmFtIHtV
aW50OEFycmF5fSBhcnJheQorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGguYXJyYXlU
b051bWJlciA9IGZ1bmN0aW9uKGFycmF5KSB7CisgICAgREVfQVNTRVJUKGFycmF5Lmxlbmd0aCA8
PSA2IHx8IChhcnJheS5sZW5ndGggPT0gNiAmJiBhcnJheVs1XSA8PSAxMjcpKTsKKyAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHJlc3VsdCA9IDA7CisKKyAgICBmb3IgKHZhciBuZHggPSAw
OyBuZHggPCBhcnJheS5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgIHJlc3VsdCArPSBhcnJheVtu
ZHhdICogTWF0aC5wb3coMjU2LCBuZHgpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9
OworCisvKioKKyAqIEZpbGxzIGEgYnl0ZSBhcnJheSB3aXRoIGEgbnVtYmVyCisgKiBAcGFyYW0g
e1VpbnQ4QXJyYXl9IGFycmF5IE91dHB1dCBhcnJheSAoYWxyZWFkeSByZXNpemVkKQorICogQHBh
cmFtIHtudW1iZXJ9IG51bWJlcgorICovCitkZU1hdGgubnVtYmVyVG9BcnJheSA9IGZ1bmN0aW9u
KGFycmF5LCBudW1iZXIpIHsKKyAgICBERV9BU1NFUlQoTnVtYmVyLmlzSW50ZWdlcihudW1iZXIp
KTsKKyAgICBmb3IgKHZhciBieXRlTmR4ID0gMDsgYnl0ZU5keCA8IGFycmF5Lmxlbmd0aDsgYnl0
ZU5keCsrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYWN1bXpuZHggPSAh
Ynl0ZU5keCA/IG51bWJlciA6IE1hdGguZmxvb3IobnVtYmVyIC8gTWF0aC5wb3coMjU2LCBieXRl
TmR4KSk7CisgICAgICAgIGFycmF5W2J5dGVOZHhdID0gYWN1bXpuZHggJiAweEZGOworICAgIH0K
K307CisKKy8qKgorICogT2J0YWlucyB0aGUgYml0IGZyYWdtZW50IGZyb20gYSBudW1iZXIKKyAq
IEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0gZmlyc3ROZHgKKyAqIEBwYXJh
bSB7bnVtYmVyfSBsYXN0TmR4CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2RlTWF0aC5nZXRC
aXRSYW5nZSA9IGZ1bmN0aW9uKHgsIGZpcnN0TmR4LCBsYXN0TmR4KSB7CisgICAgREVfQVNTRVJU
KGxhc3ROZHggLSBmaXJzdE5keCA8PSA1Mik7CisgICAgdmFyIHNoaWZ0ZWQgPSBkZU1hdGguc2hp
ZnRSaWdodCh4LCBmaXJzdE5keCk7CisgICAgdmFyIGJpdFNpemUgPSBsYXN0TmR4IC0gZmlyc3RO
ZHg7CisgICAgdmFyIG1hc2s7CisgICAgaWYgKGJpdFNpemUgPCAzMikKKyAgICAgICAgbWFzayA9
ICgxIDw8IGJpdFNpemUpIC0gMTsKKyAgICBlbHNlCisgICAgICAgIG1hc2sgPSBNYXRoLnBvdygy
LCBiaXRTaXplKSAtIDE7CisgICAgdmFyIG1hc2tlZCA9IGRlTWF0aC5iaW5hcnlBbmQoc2hpZnRl
ZCwgbWFzayk7CisgICAgcmV0dXJuIG1hc2tlZDsKK307CisKKy8qKgorICogT2J0YWlucyB0aGUg
Yml0IGZyYWdtZW50IGZyb20gYSBVaW50MzJBcnJheSByZXByZXNlbnRpbmcgYSBudW1iZXIuCisg
KiAoQXJyYXlCdWZmZXIgcmVwcmVzZW50YXRpb25zIGFyZSB1c2VkIGluIHRjdUZsb2F0LikKKyAq
CisgKiBDYW5ub3QgcmV0dXJuIG1vcmUgdGhhbiA1MiBiaXRzICgobGFzdE5keCAtIGZpcnN0TmR4
KSA8PSA1MikuCisgKgorICogQHBhcmFtIHtVaW50MzJBcnJheX0gYXJyYXkKKyAqIEBwYXJhbSB7
bnVtYmVyfSBmaXJzdE5keAorICogQHBhcmFtIHtudW1iZXJ9IGxhc3ROZHgKKyAqIEByZXR1cm4g
e251bWJlcn0KKyAqLworZGVNYXRoLmdldEFycmF5MzJCaXRSYW5nZSA9IGZ1bmN0aW9uKGFycmF5
LCBmaXJzdE5keCwgbGFzdE5keCkgeworICAgIERFX0FTU0VSVCgwIDw9IGZpcnN0TmR4ICYmIGZp
cnN0TmR4IDwgKGFycmF5Lmxlbmd0aCAqIDMyKSk7CisgICAgREVfQVNTRVJUKDAgPCBsYXN0TmR4
ICYmIGxhc3ROZHggPD0gKGFycmF5Lmxlbmd0aCAqIDMyKSk7CisgICAgREVfQVNTRVJUKChsYXN0
TmR4IC0gZmlyc3ROZHgpIDw9IDUyKTsKKworICAgIC8vIEV4YW1wbGUgb2YgaG93IHRoaXMgd29y
a3MgZm9yIGEgNjQtYml0IG51bWJlciAoVWludDMyQXJyYXkgb2YgbGVuZ3RoIDIpLgorICAgIC8v
CisgICAgLy8gKiBOb3RlIHRoYXQgdGhlIHNoaWZ0IG9wZXJhdG9ycyBpbiB0aGUgY29kZSA8PCBh
bmQgPj4+IGFyZSBwb2ludGluZyBpbgorICAgIC8vICAgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBv
ZiB0aGlzIGRpYWdyYW0sIHNpbmNlIExTQiBpcyBzaG93biBvbiB0aGUgbGVmdC4KKyAgICAvLwor
ICAgIC8vIFthcnJheVswXSwgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlbMV0gICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgLy8gWzAwMDAwMDExMTExMTExMTExMTExMTExMTExMTEx
MTExLCAxMTExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMF0KKyAgICAvLyAgXkxTQiAgICAg
ICAgICAgICAgICAgICAgICAgIE1TQl4gIF5MU0IgICAgICAgICAgICAgICAgICAgICAgICBNU0Je
CisgICAgLy8KKyAgICAvLyBbMDAwMDAwMTExMTExMTExMTExMTExMTExMTExMTExMTEsIDExMTEx
MTExMTExMTAwMDAwMDAwMDAwMDAwMDAwMDAwXQorICAgIC8vICAgICAgICBcICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8vICAgICAgICAgZmlyc3ROZHggPSA2
IChpbmNsdXNpdmUpICAgICAgICAgICAgICAgIGxhc3ROZHggPSA0NCAoZXhjbHVzaXZlKQorICAg
IC8vICAgICAgICAgYmxvY2tJbmRleEEgPSAwICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
SW5kZXhCID0gMQorICAgIC8vCisgICAgLy8gWzAwMDAwMDExMTExMTExMTExMTExMTExMTExMTEx
MTExLCAxMTExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMF0KKyAgICAvLyAgXC0tLS0tXCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwtLS0tLS0tLS0tLS0tLS0tLS0t
XAorICAgIC8vICAgYml0c1RvQmVnaW5uaW5nT2ZCbG9jayA9IDYgICAgICAgICAgICAgICAgICAg
IGJpdHNGcm9tRW5kT2ZCbG9jayA9IDIwCisgICAgLy8KKyAgICAvLyAgLS0tLS0tLS0tLS0tLWJs
b2NrQS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS1ibG9ja0ItLS0tLS0tLS0tLS0tCisgICAg
Ly8gWzAwMDAwMDExMTExMTExMTExMTExMTExMTExMTExMTExLCAxMTExMTExMTExMTEwMDAwMDAw
MDAwMDAwMDAwMDAwMF0KKyAgICAvLyAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4g
IF5eXl5eXl5eXl5eXgorICAgIC8vICAgICAgICAgICAgICAgICAgIGJsb2NrQVRydW5jYXRlZCAg
YmxvY2tCVHJ1bmNhdGVkCisgICAgLy8gICAgICAgIFwtLWJsb2NrQVRydW5jYXRlZExlbmd0aC0t
XAorICAgIC8vCisgICAgLy8gICAgICAgIDExMTExMTExMTExMTExMTExMTExMTExMTExICAxMTEx
MTExMTExMTEKKyAgICAvLyAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4tLV5eXl5e
Xl5eXl5eXiAgIHJldHVybiB2YWx1ZSAoMzggYml0cykKKworICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgYmxvY2tJbmRleEEgPSBNYXRoLmZsb29yKGZpcnN0TmR4IC8gMzIpOworICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYml0c1RvQmVnaW5uaW5nT2ZCbG9jayA9IGZpcnN0TmR4
ICUgMzI7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBibG9ja0luZGV4QiA9IE1hdGgu
Zmxvb3IoKGxhc3ROZHggLSAxKSAvIDMyKTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGJpdHNGcm9tRW5kT2ZCbG9jayA9IDMxIC0gKChsYXN0TmR4IC0gMSkgJSAzMik7CisKKyAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJsb2NrQiA9IGFycmF5W2Jsb2NrSW5kZXhCXTsKKyAg
ICAvLyBDaG9wIG9mZiB0aGUgbW9zdCBzaWduaWZpY2FudCBgYml0c0Zyb21FbmRPZkJsb2NrYCBi
aXRzIGZyb20gYmxvY2tCLgorICAgIC8vIE5vdGU6IEluaXRpYWxseSB0aGlzIGxvZ2ljIHVzZWQg
YSBiaXRtYXNrIGluc3RlYWQuIEJ1dCB0aGVyZSBhcmUgc3VidGxlCisgICAgLy8gICBjb3JuZXIg
Y2FzZXMgaW4gSlMgdGhhdCBjYXVzZWQgcmVzdWx0cyB0byBzb21ldGltZXMgY29tZSBvdXQgbmVn
YXRpdmUuCisgICAgLy8gICBUaGlzIHRydW5jYXRpb24gbWV0aG9kIGlzIGp1c3QgdXNlZCB0byBh
dm9pZCB0aGF0IGNvbXBsZXhpdHkuCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBibG9j
a0JUcnVuY2F0ZWQgPSAoYmxvY2tCIDw8IGJpdHNGcm9tRW5kT2ZCbG9jaykgPj4+IGJpdHNGcm9t
RW5kT2ZCbG9jazsKKworICAgIGlmIChibG9ja0luZGV4QSA9PSBibG9ja0luZGV4QikgeworICAg
ICAgICAvLyBmaXJzdE5keCBhbmQgbGFzdE5keCBhcmUgaW4gdGhlIHNhbWUgYmxvY2suCisgICAg
ICAgIC8vIENob3Agb2ZmIHRoZSBsZWFzdCBzaWduaWZpY2FudCBgYml0c1RvQmVnaW5uaW5nT2ZC
bG9ja2AgYml0cyBmcm9tIGJsb2NrQlRydW5jYXRlZC4KKyAgICAgICAgcmV0dXJuIGJsb2NrQlRy
dW5jYXRlZCA+Pj4gYml0c1RvQmVnaW5uaW5nT2ZCbG9jazsKKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBmaXJzdE5keCBhbmQgbGFzdE5keCBhcmUgaW4gZGlmZmVyZW50IGJsb2Nrcy4KKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBibG9ja0EgPSBhcnJheVtibG9ja0luZGV4QV07
CisgICAgICAgIC8vIENob3Agb2ZmIHRoZSBsZWFzdCBzaWduaWZpY2FudCBgYml0c1RvQmVnaW5u
aW5nT2ZCbG9ja2AgYml0cyBmcm9tIGJsb2NrQS4KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBibG9ja0FUcnVuY2F0ZWQgPSBibG9ja0EgPj4+IGJpdHNUb0JlZ2lubmluZ09mQmxv
Y2s7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmxvY2tBVHJ1bmNhdGVkTGVu
Z3RoID0gMzIgLSBiaXRzVG9CZWdpbm5pbmdPZkJsb2NrOworCisgICAgICAgIC8vIENvbmNhdGVu
YXRlIGJsb2NrQVRydW5jYXRlZCBhbmQgYmxvY2tCVHJ1bmNhdGVkLgorICAgICAgICAvLyBDb25j
ZXB0dWFsbHkgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgLy8gICAgIGJsb2NrQVRydW5jYXRlZCB8
IChibG9ja0JUcnVuY2F0ZWQgPDwgYmxvY2tBVHJ1bmNhdGVkTGVuZ3RoKQorICAgICAgICAvLyBl
eGNlcHQgdGhhdCB3b3VsZG4ndCB3b3JrIGZvciBudW1iZXJzIGxhcmdlciB0aGFuIDMyIGJpdHMu
CisgICAgICAgIHJldHVybiBibG9ja0FUcnVuY2F0ZWQgKyAoYmxvY2tCVHJ1bmNhdGVkICogTWF0
aC5wb3coMiwgYmxvY2tBVHJ1bmNhdGVkTGVuZ3RoKSk7CisgICAgfQorfTsKKworLyoqCisgKiBT
cGxpdCBhIGxhcmdlIHNpZ25lZCBudW1iZXIgaW50byBsb3cgYW5kIGhpZ2ggMzJiaXQgZHdvcmRz
LgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8K
K2RlTWF0aC5zcGxpdDMyID0gZnVuY3Rpb24oeCkgeworICAgIHZhciByZXQgPSBbXTsKKyAgICBy
ZXRbMV0gPSBNYXRoLmZsb29yKHggLyAweDEwMDAwMDAwMCk7CisgICAgcmV0WzBdID0geCAtIHJl
dFsxXSAqIDB4MTAwMDAwMDAwOworICAgIHJldHVybiByZXQ7Cit9OworCisvKioKKyAqIFNwbGl0
IGEgc2lnbmVkIG51bWJlcidzIGxvdyAzMmJpdCBkd29yZHMgaW50byBsb3cgYW5kIGhpZ2ggMTZi
aXQgZHdvcmRzLgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59CisgKi8KK2RlTWF0aC5zcGxpdDE2ID0gZnVuY3Rpb24oeCkgeworICAgIHZhciByZXQgPSBb
XTsKKyAgICB4ID0geCAmIDB4ZmZmZmZmZmY7CisgICAgcmV0WzFdID0gTWF0aC5mbG9vcih4IC8g
MHgxMDAwMCk7CisgICAgcmV0WzBdID0geCAtIHJldFsxXSAqIDB4MTAwMDA7CisgICAgcmV0dXJu
IHJldDsKK307CisKKy8qKgorICogUmVjb250cnVjdCBhIG51bWJlciBmcm9tIGhpZ2ggYW5kIGxv
dyAzMiBiaXQgZHdvcmRzCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHgKKyAqIEByZXR1cm4g
e251bWJlcn0KKyAqLworZGVNYXRoLmpvaW4zMiA9IGZ1bmN0aW9uKHgpIHsKKyAgICB2YXIgdjAg
PSB4WzBdID49IDAgPyB4WzBdIDogMHgxMDAwMDAwMDAgKyB4WzBdOworICAgIHZhciB2MSA9IHhb
MV07CisgICAgdmFyIHZhbCA9IHYxICogMHgxMDAwMDAwMDAgKyB2MDsKKyAgICByZXR1cm4gdmFs
OworfTsKKworLy9CaXQgb3BlcmF0aW9ucyB3aXRoIHRoZSBoZWxwIG9mIGFycmF5cworCisvKioK
KyAqIEBlbnVtCisgKi8KK2RlTWF0aC5CaW5hcnlPcCA9IHsKKyAgICBBTkQ6IDAsCisgICAgT1I6
IDEsCisgICAgWE9SOiAyCit9OworCisvKioKKyAqIFBlcmZvcm1zIGEgbm9ybWFsIChuYXRpdmUp
IGJpbmFyeSBvcGVyYXRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZUEgRmlyc3Qgb3BlcmFu
ZAorICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlQiBTZWNvbmQgb3BlcmFuZAorICogQHBhcmFtIHtk
ZU1hdGguQmluYXJ5T3B9IG9wZXJhdGlvbiBUaGUgZGVzaXJlZCBvcGVyYXRpb24gdG8gcGVyZm9y
bQorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGguZG9OYXRpdmVCaW5hcnlPcCA9IGZ1
bmN0aW9uKHZhbHVlQSwgdmFsdWVCLCBvcGVyYXRpb24pIHsKKyAgICBzd2l0Y2ggKG9wZXJhdGlv
bikgeworICAgICAgICBjYXNlIGRlTWF0aC5CaW5hcnlPcC5BTkQ6CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVBICYgdmFsdWVCOworICAgICAgICBjYXNlIGRlTWF0aC5CaW5hcnlPcC5PUjoKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUEgfCB2YWx1ZUI7CisgICAgICAgIGNhc2UgZGVNYXRoLkJp
bmFyeU9wLlhPUjoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUEgXiB2YWx1ZUI7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gb3BlcmF0aW9u
OiAnICsgb3BlcmF0aW9uKTsKKyAgICB9Cit9OworCisvKioKKyAqIFBlcmZvcm1zIGEgYmluYXJ5
IG9wZXJhdGlvbiBiZXR3ZWVuIHR3byBvcGVyYW5kcworICogd2l0aCB0aGUgaGVscCBvZiBhcnJh
eXMgdG8gYXZvaWQgbG9zaW5nIHRoZSBpbnRlcm5hbCBiaW5hcnkgcmVwcmVzZW50YXRpb24uCisg
KiBAcGFyYW0ge251bWJlcn0gdmFsdWVBIEZpcnN0IG9wZXJhbmQKKyAqIEBwYXJhbSB7bnVtYmVy
fSB2YWx1ZUIgU2Vjb25kIG9wZXJhbmQKKyAqIEBwYXJhbSB7ZGVNYXRoLkJpbmFyeU9wfSBiaW5h
cnlPcFBhcm0gVGhlIGRlc2lyZWQgb3BlcmF0aW9uIHRvIHBlcmZvcm0KKyAqIEByZXR1cm4ge251
bWJlcn0KKyAqLworZGVNYXRoLmJpbmFyeU9wID0gZnVuY3Rpb24odmFsdWVBLCB2YWx1ZUIsIGJp
bmFyeU9wUGFybSkgeworICAgIC8vcXVpY2sgcGF0aCBpZiB2YWx1ZXMgZml0IGluIHNpZ25lZCAz
MiBiaXQgcmFuZ2UKKyAgICBpZiAoZGVNYXRoLmRlSW5SYW5nZTMyKHZhbHVlQSwgLTB4ODAwMDAw
MDAsIDB4N0ZGRkZGRkYpICYmIGRlTWF0aC5kZUluUmFuZ2UzMih2YWx1ZUIsIC0weDgwMDAwMDAw
LCAweDdGRkZGRkZGKSkKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5kb05hdGl2ZUJpbmFyeU9wKHZh
bHVlQSwgdmFsdWVCLCBiaW5hcnlPcFBhcm0pOworCisgICAgdmFyIHggPSBkZU1hdGguc3BsaXQz
Mih2YWx1ZUEpOworICAgIHZhciB5ID0gZGVNYXRoLnNwbGl0MzIodmFsdWVCKTsKKyAgICB2YXIg
eiA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKQorICAgICAgICB6W2ldID0g
ZGVNYXRoLmRvTmF0aXZlQmluYXJ5T3AoeFtpXSwgeVtpXSwgYmluYXJ5T3BQYXJtKTsKKyAgICB2
YXIgcmV0ID0gZGVNYXRoLmpvaW4zMih6KTsKKyAgICByZXR1cm4gcmV0OworfTsKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqIEByZXR1cm4ge251
bWJlcn0KKyAqLworZGVNYXRoLmJpbmFyeUFuZCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICByZXR1
cm4gZGVNYXRoLmJpbmFyeU9wKGEsIGIsIGRlTWF0aC5CaW5hcnlPcC5BTkQpOworfTsKKworLyoq
CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisg
KiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICovCitkZU1hdGguYmluYXJ5QW5kVmVjU2NhbGFy
ID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmICghQXJyYXkuaXNBcnJheShhKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIGFycmF5LicpOworICAg
IGlmICh0eXBlb2YgYiAhPT0gJ251bWJlcicpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignU2Vj
b25kIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIuJyk7CisgICAgdmFyIGRzdCA9IFtdOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goZGVN
YXRoLmJpbmFyeU9wKGFbaV0sIGIsIGRlTWF0aC5CaW5hcnlPcC5BTkQpKTsKKyAgICByZXR1cm4g
ZHN0OworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9
IGIKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZGVNYXRoLmJpbmFyeU9yID0gZnVuY3Rpb24o
YSwgYikgeworICAgIHJldHVybiBkZU1hdGguYmluYXJ5T3AoYSwgYiwgZGVNYXRoLkJpbmFyeU9w
Lk9SKTsKK307CisKKy8qKgorICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBhCisgKiBAcGFy
YW0ge251bWJlcn0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLworZGVNYXRoLmJp
bmFyeU9yVmVjU2NhbGFyID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmICghQXJyYXkuaXNBcnJh
eShhKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFu
IGFycmF5LicpOworICAgIGlmICh0eXBlb2YgYiAhPT0gJ251bWJlcicpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignU2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIuJyk7CisgICAgdmFy
IGRzdCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAg
ICAgZHN0LnB1c2goZGVNYXRoLmJpbmFyeU9wKGFbaV0sIGIsIGRlTWF0aC5CaW5hcnlPcC5PUikp
OworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBA
cGFyYW0ge251bWJlcn0gYgorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGguYmluYXJ5
WG9yID0gZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiBkZU1hdGguYmluYXJ5T3AoYSwgYiwg
ZGVNYXRoLkJpbmFyeU9wLlhPUik7Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z29vZy5OdW1iZXJB
cnJheX0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59
CisgKi8KK2RlTWF0aC5iaW5hcnlYb3JWZWNTY2FsYXIgPSBmdW5jdGlvbihhLCBiKSB7CisgICAg
aWYgKCFBcnJheS5pc0FycmF5KGEpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcnN0IGFy
Z3VtZW50IG11c3QgYmUgYW4gYXJyYXkuJyk7CisgICAgaWYgKHR5cGVvZiBiICE9PSAnbnVtYmVy
JykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIG51
bWJlci4nKTsKKyAgICB2YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxl
bmd0aDsgaSsrKQorICAgICAgICBkc3QucHVzaChkZU1hdGguYmluYXJ5T3AoYVtpXSwgYiwgZGVN
YXRoLkJpbmFyeU9wLlhPUikpOworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIFBlcmZv
cm1zIGEgYmluYXJ5IE5PVCBvcGVyYXRpb24gb24gYW4gb3BlcmFuZAorICogQHBhcmFtIHtudW1i
ZXJ9IHZhbHVlIE9wZXJhbmQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZGVNYXRoLmJpbmFy
eU5vdCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgLy9xdWljayBwYXRoIGlmIHZhbHVlIGZpdHMg
aW4gc2lnbmVkIDMyIGJpdCByYW5nZQorICAgIGlmIChkZU1hdGguZGVJblJhbmdlMzIodmFsdWUs
IC0weDgwMDAwMDAwLCAweDdGRkZGRkZGKSkKKyAgICAgICAgcmV0dXJuIH52YWx1ZTsKKworICAg
IHZhciB4ID0gZGVNYXRoLnNwbGl0MzIodmFsdWUpOworICAgIHhbMF0gPSB+eFswXTsKKyAgICB4
WzFdID0gfnhbMV07CisgICAgdmFyIHJldCA9IGRlTWF0aC5qb2luMzIoeCk7CisgICAgcmV0dXJu
IHJldDsKK307CisKKy8qKgorICogU2hpZnRzIHRoZSBnaXZlbiB2YWx1ZSAnc3RlcHMnIGJpdHMg
dG8gdGhlIGxlZnQuIFJlcGxhY2VzIDw8IG9wZXJhdG9yCisgKiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBiZSB1c2VkIGlmIHRoZSBleHBlY3RlZCB2YWx1ZSB3aWxsIGJlIHdpZGVyIHRoYW4gMzItYml0
cy4KKyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICogQHBhcmFtIHtudW1iZXJ9IHN0ZXBzCisg
KiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2RlTWF0aC5zaGlmdExlZnQgPSBmdW5jdGlvbih2YWx1
ZSwgc3RlcHMpIHsKKyAgICAvL3F1aWNrIHBhdGgKKyAgICBpZiAoc3RlcHMgPCAzMSkgeworICAg
ICAgICB2YXIgdiA9IHZhbHVlICogKDEgPDwgc3RlcHMpOworICAgICAgICBpZiAoZGVNYXRoLmRl
SW5SYW5nZTMyKHYsIC0weDgwMDAwMDAwLCAweDdGRkZGRkZGKSkKKyAgICAgICAgICAgIHJldHVy
biB2OworICAgIH0KKworICAgIGlmIChzdGVwcyA9PSAwKQorICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgZWxzZSBpZiAoc3RlcHMgPCAzMikgeworICAgICAgICB2YXIgbWFzayA9ICgxIDw8IDMy
IC0gc3RlcHMpIC0gMTsKKyAgICAgICAgdmFyIHggPSBkZU1hdGguc3BsaXQzMih2YWx1ZSk7Cisg
ICAgICAgIHZhciBoaWdoQml0cyA9IHhbMF0gJiAofm1hc2spOworICAgICAgICB2YXIgeSA9IGhp
Z2hCaXRzID4+ICgzMiAtIHN0ZXBzKTsKKyAgICAgICAgaWYgKGhpZ2hCaXRzIDwgMCkgeworICAg
ICAgICAgICAgdmFyIG0gPSAoMSA8PCBzdGVwcykgLSAxOworICAgICAgICAgICAgeSAmPSBtOwor
ICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgcmVzdWx0WzBdID0g
eFswXSA8PCBzdGVwczsKKyAgICAgICAgcmVzdWx0WzFdID0geFsxXSA8PCBzdGVwczsKKyAgICAg
ICAgcmVzdWx0WzFdIHw9IHk7CisKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5qb2luMzIocmVzdWx0
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2YXIgeCA9IGRlTWF0aC5zcGxpdDMyKHZhbHVlKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICByZXN1bHRbMF0gPSAwOworICAgICAg
ICByZXN1bHRbMV0gPSB4WzBdIDw8IHN0ZXBzIC0gMzI7CisgICAgICAgIHJldHVybiBkZU1hdGgu
am9pbjMyKHJlc3VsdCk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKi8KK2RlTWF0aC5zaGlmdExlZnRWZWNTY2Fs
YXIgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goZGVNYXRoLnNoaWZ0TGVm
dChhW2ldLCBiKSk7CisgICAgcmV0dXJuIGRzdDsKK307CisKKy8qKgorICogU2hpZnRzIHRoZSBn
aXZlbiB2YWx1ZSAnc3RlcHMnIGJpdHMgdG8gdGhlIHJpZ2h0LiBSZXBsYWNlcyA+PiBvcGVyYXRv
cgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBpZiB0aGUgdmFsdWUgaXMgd2lkZXIg
dGhhbiAzMi1iaXRzCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVy
fSBzdGVwcworICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGguc2hpZnRSaWdodCA9IGZ1
bmN0aW9uKHZhbHVlLCBzdGVwcykgeworICAgIC8vcXVpY2sgcGF0aAorICAgIGlmIChkZU1hdGgu
ZGVJblJhbmdlMzIodmFsdWUsIC0weDgwMDAwMDAwLCAweDdGRkZGRkZGKSAmJiBzdGVwcyA8IDMy
KQorICAgICAgICByZXR1cm4gdmFsdWUgPj4gc3RlcHM7CisKKyAgICBpZiAoc3RlcHMgPT0gMCkK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGVsc2UgaWYgKHN0ZXBzIDwgMzIpIHsKKyAgICAg
ICAgaWYgKHN0ZXBzID09IDApCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHZh
ciBtYXNrID0gKDEgPDwgc3RlcHMpIC0gMTsKKyAgICAgICAgdmFyIHggPSBkZU1hdGguc3BsaXQz
Mih2YWx1ZSk7CisgICAgICAgIHZhciBsb3dCaXRzID0geFsxXSAmIG1hc2s7CisgICAgICAgIHZh
ciByZXN1bHQgPSBbXTsKKyAgICAgICAgdmFyIG0gPSAoMSA8PCAzMiAtIHN0ZXBzKSAtIDE7Cisg
ICAgICAgIHJlc3VsdFswXSA9ICh4WzBdID4+IHN0ZXBzKSAmIG07CisgICAgICAgIHJlc3VsdFsx
XSA9IHhbMV0gPj4gc3RlcHM7CisgICAgICAgIHJlc3VsdFswXSB8PSBsb3dCaXRzIDw8IDMyIC0g
c3RlcHM7CisgICAgICAgIHJldHVybiBkZU1hdGguam9pbjMyKHJlc3VsdCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdmFyIHggPSBkZU1hdGguc3BsaXQzMih2YWx1ZSk7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgcmVzdWx0WzBdID0geFsxXSA+PiBzdGVwcyAtIDMyOworICAg
ICAgICByZXN1bHRbMV0gPSB2YWx1ZSA8IDAgPyAtMSA6IDA7CisgICAgICAgIHJldHVybiBkZU1h
dGguam9pbjMyKHJlc3VsdCk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKi8KK2RlTWF0aC5zaGlmdFJpZ2h0VmVj
U2NhbGFyID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGRzdC5wdXNoKGRlTWF0aC5zaGlm
dFJpZ2h0KGFbaV0sIGIpKTsKKyAgICByZXR1cm4gZHN0OworfTsKKworLyoqIGRlTWF0aC5sb2dp
Y2FsQW5kQm9vbCBvdmVyIHR3byBhcnJheXMgb2YgYm9vbGVhbnMKKyAqIEBwYXJhbSB7QXJyYXk8
Ym9vbGVhbj59IGEKKyAqIEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGIKKyAqIEByZXR1cm4ge0Fy
cmF5PGJvb2xlYW4+fQorICovCitkZU1hdGgubG9naWNhbEFuZEJvb2wgPSBmdW5jdGlvbihhLCBi
KSB7CisgICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J1RoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbm90IGFuIGFycmF5OiAoJyArIHR5cGVvZihhKSArICcp
JyArIGEpOworICAgIGlmICghQXJyYXkuaXNBcnJheShiKSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgYW4gYXJyYXk6ICgnICsgdHlwZW9mKGIp
ICsgJyknICsgYik7CisgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ1RoZSBsZW5ndGhzIG9mIHRoZSBwYXNzZWQgYXJyYXlzIGFyZSBub3QgZXF1
aXZhbGVudC4gKCcgKyBhLmxlbmd0aCArICcgIT0gJyArIGIubGVuZ3RoICsgJyknKTsKKworICAg
IC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZhciByZXN1bHQgPSBbXTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gJiBiW2ld
KQorICAgICAgICAgICAgcmVzdWx0LnB1c2godHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisK
Ky8qKiBkZU1hdGgubG9naWNhbE9yQm9vbCBvdmVyIHR3byBhcnJheXMgb2YgYm9vbGVhbnMKKyAq
IEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGEKKyAqIEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGIK
KyAqIEByZXR1cm4ge0FycmF5PGJvb2xlYW4+fQorICovCitkZU1hdGgubG9naWNhbE9yQm9vbCA9
IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBub3QgYW4gYXJyYXk6ICgnICsg
dHlwZW9mKGEpICsgJyknICsgYSk7CisgICAgaWYgKCFBcnJheS5pc0FycmF5KGIpKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBhbiBhcnJheTog
KCcgKyB0eXBlb2YoYikgKyAnKScgKyBiKTsKKyAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGxlbmd0aHMgb2YgdGhlIHBhc3NlZCBhcnJh
eXMgYXJlIG5vdCBlcXVpdmFsZW50LiAoJyArIGEubGVuZ3RoICsgJyAhPSAnICsgYi5sZW5ndGgg
KyAnKScpOworCisgICAgLyoqIEB0eXBlIHtBcnJheTxib29sZWFuPn0gKi8gdmFyIHJlc3VsdCA9
IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAoYVtpXSB8IGJbaV0pCisgICAgICAgICAgICByZXN1bHQucHVzaCh0cnVlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVzdWx0LnB1c2goZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfTsKKworLyoqIGRlTWF0aC5sb2dpY2FsTm90Qm9vbCBvdmVyIGFuIGFycmF5IG9m
IGJvb2xlYW5zCisgKiBAcGFyYW0ge0FycmF5PGJvb2xlYW4+fSBhCisgKiBAcmV0dXJuIHtBcnJh
eTxib29sZWFuPn0KKyAqLworZGVNYXRoLmxvZ2ljYWxOb3RCb29sID0gZnVuY3Rpb24oYSkgewor
ICAgIGlmICghQXJyYXkuaXNBcnJheShhKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUg
cGFzc2VkIHZhbHVlIGlzIG5vdCBhbiBhcnJheTogKCcgKyB0eXBlb2YoYSkgKyAnKScgKyBhKTsK
KworICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZhciByZXN1bHQgPSBbXTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIHJlc3VsdC5wdXNo
KCFhW2ldKTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqIGRlTWF0aC5ncmVhdGVyVGhh
biBvdmVyIHR3byBhcnJheXMgb2YgYm9vbGVhbnMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
YQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKiBAcmV0dXJuIHtBcnJheTxib29sZWFu
Pn0KKyAqLworZGVNYXRoLmdyZWF0ZXJUaGFuID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmICgh
QXJyYXkuaXNBcnJheShhKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZmlyc3QgcGFy
YW1ldGVyIGlzIG5vdCBhbiBhcnJheTogKCcgKyB0eXBlb2YoYSkgKyAnKScgKyBhKTsKKyAgICBp
ZiAoIUFycmF5LmlzQXJyYXkoYikpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNlY29u
ZCBwYXJhbWV0ZXIgaXMgbm90IGFuIGFycmF5OiAoJyArIHR5cGVvZihiKSArICcpJyArIGIpOwor
ICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdU
aGUgbGVuZ3RocyBvZiB0aGUgcGFzc2VkIGFycmF5cyBhcmUgbm90IGVxdWl2YWxlbnQuICgnICsg
YS5sZW5ndGggKyAnICE9ICcgKyBiLmxlbmd0aCArICcpJyk7CisKKyAgICAvKiogQHR5cGUge0Fy
cmF5PGJvb2xlYW4+fSAqLyB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhLmxlbmd0aDsgaSsrKQorICAgICAgICByZXN1bHQucHVzaChhW2ldID4gYltpXSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK307CisKKy8qKiBkZU1hdGguZ3JlYXRlclRoYW4gb3ZlciB0d28gYXJy
YXlzIG9mIGJvb2xlYW5zCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7
QXJyYXk8bnVtYmVyPn0gYgorICogQHJldHVybiB7QXJyYXk8Ym9vbGVhbj59CisgKi8KK2RlTWF0
aC5ncmVhdGVyVGhhbkVxdWFsID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmICghQXJyYXkuaXNB
cnJheShhKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZmlyc3QgcGFyYW1ldGVyIGlz
IG5vdCBhbiBhcnJheTogKCcgKyB0eXBlb2YoYSkgKyAnKScgKyBhKTsKKyAgICBpZiAoIUFycmF5
LmlzQXJyYXkoYikpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNlY29uZCBwYXJhbWV0
ZXIgaXMgbm90IGFuIGFycmF5OiAoJyArIHR5cGVvZihiKSArICcpJyArIGIpOworICAgIGlmIChh
Lmxlbmd0aCAhPSBiLmxlbmd0aCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbGVuZ3Ro
cyBvZiB0aGUgcGFzc2VkIGFycmF5cyBhcmUgbm90IGVxdWl2YWxlbnQuICgnICsgYS5sZW5ndGgg
KyAnICE9ICcgKyBiLmxlbmd0aCArICcpJyk7CisKKyAgICAvKiogQHR5cGUge0FycmF5PGJvb2xl
YW4+fSAqLyB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0
aDsgaSsrKQorICAgICAgICByZXN1bHQucHVzaChhW2ldID49IGJbaV0pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9OworCisvKioKKyAqIEFycmF5IG9mIGZsb2F0IHRvIGFycmF5IG9mIGludCAoMCwg
MjU1KQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fQorICovCisKK2RlTWF0aC50b0lWZWMgPSBmdW5jdGlvbihhKSB7CisgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcmVzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhLmxlbmd0aDsgaSsrKQorICAgICAgICByZXMucHVzaChkZU1hdGguY2xhbXAoTWF0aC5mbG9v
cihhW2ldICogMjU1KSwgMCwgMjU1KSk7CisgICAgcmV0dXJuIHJlczsKK307CisKKy8qKgorICog
QHBhcmFtIHtudW1iZXJ9IGEKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworIGRlTWF0aC5jbHoz
MiA9IGZ1bmN0aW9uKGEpIHsKKyAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4VmFsdWUg
PSAyMTQ3NDgzNjQ4OyAvLyBtYXggMzIgYml0IG51bWJlcgorICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBsZWFkaW5nWmVyb3MgPSAwOworICAgd2hpbGUgKGEgPCBtYXhWYWx1ZSkgeworICAg
ICBtYXhWYWx1ZSA9IG1heFZhbHVlID4+PiAxOworICAgICBsZWFkaW5nWmVyb3MrKzsKKyAgIH0K
KyAgIHJldHVybiBsZWFkaW5nWmVyb3M7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBh
CisgKiBAcGFyYW0ge251bWJlcn0gZXhwb25lbnQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwor
ZGVNYXRoLmRlTGRFeHAgPSBmdW5jdGlvbihhLCBleHBvbmVudCkgeworICAgIHJldHVybiBkZU1h
dGgubGRleHAoYSwgZXhwb25lbnQpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQor
ICogQHBhcmFtIHtudW1iZXJ9IGV4cG9uZW50CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2Rl
TWF0aC5kZUZsb2F0TGRFeHAgPSBmdW5jdGlvbihhLCBleHBvbmVudCkgeworICAgIHJldHVybiBk
ZU1hdGgubGRleHAoYSwgZXhwb25lbnQpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0g
dmFsdWUKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK2RlTWF0aC5mcmV4cCA9IChm
dW5jdGlvbigpIHsKKyAgIHZhciBkYXRhID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcig4
KSk7CisKKyAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgIGlmICh2YWx1ZSA9PT0g
MCkgcmV0dXJuIFt2YWx1ZSwgMF07CisgICAgICAgZGF0YS5zZXRGbG9hdDY0KDAsIHZhbHVlKTsK
KyAgICAgICB2YXIgYml0cyA9IChkYXRhLmdldFVpbnQzMigwKSA+Pj4gMjApICYgMHg3RkY7Cisg
ICAgICAgaWYgKGJpdHMgPT09IDApIHsKKyAgICAgICAgICAgZGF0YS5zZXRGbG9hdDY0KDAsIHZh
bHVlICogTWF0aC5wb3coMiwgNjQpKTsKKyAgICAgICAgICAgYml0cyA9ICgoZGF0YS5nZXRVaW50
MzIoMCkgPj4+IDIwKSAmIDB4N0ZGKSAtIDY0OworICAgICAgIH0KKyAgICAgICB2YXIgZXhwb25l
bnQgPSBiaXRzIC0gMTAyMiwKKyAgICAgICAgICAgbWFudGlzc2EgPSBkZU1hdGgubGRleHAodmFs
dWUsIC1leHBvbmVudCk7CisgICAgICAgcmV0dXJuIFttYW50aXNzYSwgZXhwb25lbnRdOworICAg
fQorfSkoKTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbWFudGlzc2EKKyAqIEBwYXJhbSB7
bnVtYmVyfSBleHBvbmVudAorICogQHJldHVybiB7bnVtYmVyfQorICovCitkZU1hdGgubGRleHAg
PSBmdW5jdGlvbihtYW50aXNzYSwgZXhwb25lbnQpIHsKKyAgICByZXR1cm4gZXhwb25lbnQgPiAx
MDIzID8gLy8gYXZvaWQgbXVsdGlwbHlpbmcgYnkgaW5maW5pdHkKKyAgICAgICAgICAgIG1hbnRp
c3NhICogTWF0aC5wb3coMiwgMTAyMykgKiBNYXRoLnBvdygyLCBleHBvbmVudCAtIDEwMjMpIDoK
KyAgICAgICAgICAgIGV4cG9uZW50IDwgLTEwNzQgPyAvLyBhdm9pZCBtdWx0aXBseWluZyBieSB6
ZXJvCisgICAgICAgICAgICBtYW50aXNzYSAqIE1hdGgucG93KDIsIC0xMDc0KSAqIE1hdGgucG93
KDIsIGV4cG9uZW50ICsgMTA3NCkgOgorICAgICAgICAgICAgbWFudGlzc2EgKiBNYXRoLnBvdygy
LCBleHBvbmVudCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK2RlTWF0aC5kZUNicnQgPSBmdW5jdGlvbihhKSB7CisgICAgcmV0dXJu
IGRlTWF0aC5kZVNpZ24oYSkgKiBNYXRoLnBvdyhNYXRoLmFicyhhKSwgMS4wIC8gMy4wKTsKK307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwor
ZGVNYXRoLmRlU2lnbiA9IGZ1bmN0aW9uKHgpIHsKKyAgICByZXR1cm4gaXNOYU4oeCkgPyB4IDog
KCh4ID4gMC4wKSAtICh4IDwgMC4wKSk7Cit9OworCitkZU1hdGguZGVGcmFjdEV4cCA9IGZ1bmN0
aW9uKHgpIHsKKyAgICB2YXIgcmVzdWx0ID0geworICAgICAgICBzaWduaWZpY2FuZDogeCwKKyAg
ICAgICAgZXhwb25lbnQ6IDAKKyAgICB9OworCisgICAgaWYgKGlzRmluaXRlKHgpKSB7CisgICAg
ICAgIHZhciByID0gZGVNYXRoLmZyZXhwKHgpOworICAgICAgICByZXN1bHQuZXhwb25lbnQgPSBy
WzFdIC0gMTsKKyAgICAgICAgcmVzdWx0LnNpZ25pZmljYW5kID0gclswXSAqIDI7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2RlbGlicy9kZWJh
c2UvZGVSYW5kb20uanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlUmFuZG9tLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIyNDZhMmU5ZDM1MjdjZGFiY2VjOWJkNGUwZjRjOGI0Y2FmYzU5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Zy
YW1ld29yay9kZWxpYnMvZGViYXNlL2RlUmFuZG9tLmpzCkBAIC0wLDAgKzEsMjYwIEBACisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVT
IFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8KKworLyoqCisgKiBUaGlzIGNsYXNzIGFsbG93cyBvbmUgdG8gY3JlYXRl
IGEgcmFuZG9tIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciBvciBib29sZWFuIChUT0RP
LCBkZVJhbmRvbS5jaG9vc2UgcmFuZG9tIGl0ZW1zIGZyb20gYSBsaXN0IGFuZCBkZVJhbmRvbS5z
aHVmZmxlIGFuIGFycmF5KQorICovCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7
CisKK3ZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworCisv
KioKKyAqIEFycmF5IG9mIHBzZXVkbyByYW5kb20gbnVtYmVycyBiYXNlZCBvbiBzZWVkCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBzdHJ1Y3QKKyAqLworZGVSYW5kb20uZGVSYW5kb20gPSBmdW5jdGlv
bigpIHsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy54ID0gMDsKKyAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy55ID0gMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy56ID0gMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy53ID0gMDsKK307CisKKy8q
KgorICogZGVSYW5kb20uUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW5pdAorICogQHBhcmFtIHtk
ZVJhbmRvbS5kZVJhbmRvbX0gcm5kIEFycmF5IHRvIHN0b3JlIHJhbmRvbSBudW1iZXJzCisgKiBA
cGFyYW0ge251bWJlcn0gc2VlZCBOdW1iZXIgZm9yIHNlZWQKKyAqLworZGVSYW5kb20uZGVSYW5k
b21faW5pdCA9IGZ1bmN0aW9uKHJuZCwgc2VlZCkgeworICAgIHJuZC54ID0gKC1zZWVkIF4gMTIz
NDU2Nzg5KTsKKyAgICBybmQueSA9ICgzNjI0MzYwNjkgKiBzZWVkKTsKKyAgICBybmQueiA9ICg1
MjEyODg2MjkgXiAoc2VlZCA+PiA3KSk7CisgICAgcm5kLncgPSAoODg2NzUxMjMgXiAoc2VlZCA8
PCAzKSk7Cit9OworCisvKioKKyAqIEZ1bmN0aW9uIHRvIGdldCByYW5kb20gaW50CisgKiBAcGFy
YW0ge2RlUmFuZG9tLmRlUmFuZG9tfSBybmQgSW5pdGlhbGlzZWQgYXJyYXkgb2YgcmFuZG9tIG51
bWJlcnMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPj19IG9wdHMgTWluIGFuZCBtYXggZm9yIHJh
bmdlCisgKiBAcmV0dXJuIHtudW1iZXJ9IGRlUmFuZG9tLlJhbmRvbSBpbnQKKyAqLworZGVSYW5k
b20uZGVSYW5kb21fZ2V0SW50ID0gZnVuY3Rpb24ocm5kLCBvcHRzKSB7CisgICAgaWYgKG9wdHMg
IT0gdW5kZWZpbmVkICYmIG9wdHNbMF0gIT0gdW5kZWZpbmVkICYmIG9wdHNbMV0gIT0gdW5kZWZp
bmVkKSB7CisgICAgICAgIGlmIChvcHRzWzBdID09IDB4ODAwMDAwMDAgJiYgb3B0c1sxXSA9PSAw
eDdmZmZmZmZmKSB7CisgICAgICAgICAgICByZXR1cm4gZGVSYW5kb20uZGVSYW5kb21fZ2V0SW50
KHJuZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gb3B0c1swXSArIChk
ZVJhbmRvbS5kZVJhbmRvbV9nZXRJbnQocm5kKSAlIChvcHRzWzFdIC0gb3B0c1swXSArIDEpKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgdyA9IHJuZC53OworICAgIHZhciB0OworCisgICAg
dCA9IHJuZC54IF4gKHJuZC54IDw8IDExKTsKKyAgICBybmQueCA9IHJuZC55OworICAgIHJuZC55
ID0gcm5kLno7CisgICAgcm5kLnogPSB3OworICAgIHJuZC53ID0gdyA9ICh3IF4gKHcgPj4gMTkp
KSBeICh0IF4gKHQgPj4gOCkpOworICAgIHJldHVybiB3OworfTsKKworLyoqCisgKiBGdW5jdGlv
biB0byBnZXQgcmFuZG9tIGZsb2F0CisgKiBAcGFyYW0ge2RlUmFuZG9tLmRlUmFuZG9tfSBybmQg
SW5pdGlhbGlzZWQgYXJyYXkgb2YgcmFuZG9tIG51bWJlcnMKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPj19IG9wdHMgTWluIGFuZCBtYXggZm9yIHJhbmdlCisgKiBAcmV0dXJuIHtudW1iZXJ9IGRl
UmFuZG9tLlJhbmRvbSBmbG9hdAorICovCitkZVJhbmRvbS5kZVJhbmRvbV9nZXRGbG9hdCA9IGZ1
bmN0aW9uKHJuZCwgb3B0cykgeworICAgIGlmIChvcHRzICE9IHVuZGVmaW5lZCAmJiBvcHRzWzBd
ICE9IHVuZGVmaW5lZCAmJiBvcHRzWzFdICE9IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAob3B0
c1swXSA8PSBvcHRzWzFdKSB7CisgICAgICAgICAgICByZXR1cm4gb3B0c1swXSArIChvcHRzWzFd
IC0gb3B0c1swXSkgKiBkZVJhbmRvbS5kZVJhbmRvbV9nZXRGbG9hdChybmQpOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChkZVJhbmRvbS5kZVJhbmRvbV9nZXRJbnQo
cm5kKSAmIDB4RkZGRkZGRikgLyAoMHhGRkZGRkZGICsgMSk7CisgICAgfQorICAgIHRocm93IG5l
dyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMnKTsKK307CisKKy8qKgorICogRnVuY3Rpb24gdG8g
Z2V0IHJhbmRvbSBib29sZWFuCisgKiBAcGFyYW0ge2RlUmFuZG9tLmRlUmFuZG9tfSBybmQgSW5p
dGlhbGlzZWQgYXJyYXkgb2YgcmFuZG9tIG51bWJlcnMKKyAqIEByZXR1cm4ge2Jvb2xlYW59IGRl
UmFuZG9tLlJhbmRvbSBib29sZWFuCisgKi8KK2RlUmFuZG9tLmRlUmFuZG9tX2dldEJvb2wgPSBm
dW5jdGlvbihybmQpIHsKKyAgICB2YXIgdmFsOworICAgIHZhbCA9IGRlUmFuZG9tLmRlUmFuZG9t
X2dldEludChybmQpOworICAgIHJldHVybiAoKHZhbCAmIDB4RkZGRkZGKSA8IDB4ODAwMDAwKTsK
K307CisKKy8qKgorICogRnVuY3Rpb24gdG8gZ2V0IGEgY29tbW9uIGJhc2Ugc2VlZAorICogQHJl
dHVybiB7bnVtYmVyfSBjb25zdGFudAorICovCitkZVJhbmRvbS5nZXRCYXNlU2VlZCA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiA0MjsKK307CisKKy8qKgorICogVE9ETyBGdW5jdGlvbiB0byBk
ZVJhbmRvbS5jaG9vc2UgcmFuZG9tIGl0ZW1zIGZyb20gYSBsaXN0CisgKiBAdGVtcGxhdGUgVAor
ICogQHBhcmFtIHtkZVJhbmRvbS5kZVJhbmRvbX0gcm5kIEluaXRpYWxpc2VkIGFycmF5IG9mIHJh
bmRvbSBudW1iZXJzCisgKiBAcGFyYW0ge0FycmF5PFQ+fSBlbGVtZW50cyBBcnJheSBzZWdtZW50
IGFscmVhZHkgZGVmaW5lZAorICogQHBhcmFtIHtBcnJheTxUPj19IHJlc3VsdE91dCBBcnJheSB3
aGVyZSB0byBzdG9yZSB0aGUgZWxlbWVudHMgaW4uIElmIHVuZGVmaW5lZCwgZGVmYXVsdCB0byBh
cnJheSBvZiAobnVtKSBlbGVtZW50cy4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gbnVtIE51bWJlciBv
ZiBpdGVtcyB0byBzdG9yZSBpbiByZXN1bHRPdXQuIElmIHVuZGVmaW5lZCwgZGVmYXVsdCB0byAx
LgorICogQHJldHVybiB7QXJyYXk8VD59IEV2ZW4gdGhvdWdoIHJlc3VsdCBpcyBzdG9yZWQgaW4g
cmVzdWx0T3V0LCByZXR1cm4gaXQgaGVyZSBhcyB3ZWxsLgorICovCitkZVJhbmRvbS5jaG9vc2Ug
PSBmdW5jdGlvbihybmQsIGVsZW1lbnRzLCByZXN1bHRPdXQsIG51bSkgeworICAgIHZhciBpdGVt
cyA9IG51bSB8fCAxOworICAgIHZhciB0ZW1wID0gZWxlbWVudHMuc2xpY2UoKTsKKyAgICBpZiAo
IXJlc3VsdE91dCkKKyAgICAgICAgcmVzdWx0T3V0ID0gW107CisKKyAgICB3aGlsZSAoaXRlbXMt
LSA+IDApIHsKKyAgICAgICAgdmFyIGluZGV4ID0gZGVSYW5kb20uZGVSYW5kb21fZ2V0SW50KHJu
ZCwgWzAsIHRlbXAubGVuZ3RoIC0gMV0pOworICAgICAgICByZXN1bHRPdXQucHVzaCh0ZW1wW2lu
ZGV4XSk7CisgICAgICAgIHRlbXAuc3BsaWNlKGluZGV4LCAxKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdE91dDsKK307CisKKy8qKgorICogVE9ETyBGdW5jdGlvbiB0byBkZVJhbmRvbS5jaG9v
c2Ugd2VpZ2h0ZWQgcmFuZG9tIGl0ZW1zIGZyb20gYSBsaXN0CisgKiBAcGFyYW0ge2RlUmFuZG9t
LmRlUmFuZG9tfSBybmQgSW5pdGlhbGlzZWQgcmFuZG9taXplcgorICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBhcnJheSBBcnJheSB0byBjaG9vc2UgaXRlbXMgZnJvbQorICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSB3ZWlnaHRzIFdlaWdodHMgYXJyYXkKKyAqIEByZXR1cm4ge251bWJlcn0gUmVz
dWx0IG91dHB1dAorICovCitkZVJhbmRvbS5jaG9vc2VXZWlnaHRlZCA9IGZ1bmN0aW9uKHJuZCwg
YXJyYXksIHdlaWdodHMpIHsKKyAgICAvLyBDb21wdXRlIHdlaWdodCBzdW0KKyAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHdlaWdodFN1bSA9IDAuMDsKKyAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG5keDsKKyAgICBmb3IgKG5keCA9IDA7IG5keCA8IGFycmF5Lmxlbmd0aDsgbmR4
KyspCisgICAgICAgIHdlaWdodFN1bSArPSB3ZWlnaHRzW25keF07CisKKyAgICAvLyBSYW5kb20g
cG9pbnQgaW4gMC4ud2VpZ2h0U3VtCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwID0g
ZGVSYW5kb20uZGVSYW5kb21fZ2V0RmxvYXQocm5kLCBbMC4wLCB3ZWlnaHRTdW1dKTsKKworICAg
IC8vIEZpbmQgaXRlbSBpbiByYW5nZQorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbGFz
dE5vblplcm8gPSBhcnJheS5sZW5ndGg7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBj
dXJXZWlnaHQgPSAwLjA7CisgICAgZm9yIChuZHggPSAwOyBuZHggIT0gYXJyYXkubGVuZ3RoOyBu
ZHgrKykgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHcgPSB3ZWlnaHRzW25k
eF07CisKKyAgICAgICAgY3VyV2VpZ2h0ICs9IHc7CisKKyAgICAgICAgaWYgKHAgPCBjdXJXZWln
aHQpCisgICAgICAgICAgICByZXR1cm4gYXJyYXlbbmR4XTsKKyAgICAgICAgZWxzZSBpZiAodyA+
IDAuMCkKKyAgICAgICAgICAgIGxhc3ROb25aZXJvID0gbmR4OworICAgIH0KKworICAgIGFzc2Vy
dE1zZ09wdGlvbnMobGFzdE5vblplcm8gIT0gYXJyYXkubGVuZ3RoLCAnSW5kZXggd2VudCBvdXQg
b2YgYm91bmRzJywgZmFsc2UsIHRydWUpOworICAgIHJldHVybiBhcnJheVtsYXN0Tm9uWmVyb107
Cit9OworCisvKioKKyAqIFRPRE8gRnVuY3Rpb24gdG8gZGVSYW5kb20uc2h1ZmZsZSBhbiBhcnJh
eQorICogQHBhcmFtIHtkZVJhbmRvbS5kZVJhbmRvbX0gcm5kIEluaXRpYWxpc2VkIGFycmF5IG9m
IHJhbmRvbSBudW1iZXJzCisgKiBAcGFyYW0ge0FycmF5fSBlbGVtZW50cyBBcnJheSB0byBkZVJh
bmRvbS5zaHVmZmxlCisgKiBAcmV0dXJuIHtBcnJheX0gU2h1ZmZsZWQgYXJyYXkKKyAqLworZGVS
YW5kb20uc2h1ZmZsZSA9IGZ1bmN0aW9uKHJuZCwgZWxlbWVudHMpIHsKKyAgICB2YXIgaW5kZXgg
PSBlbGVtZW50cy5sZW5ndGg7CisKKyAgICB3aGlsZSAoaW5kZXggPiAwKSB7CisgICAgICAgIHZh
ciByYW5kb20gPSBkZVJhbmRvbS5kZVJhbmRvbV9nZXRJbnQocm5kLCBbMCwgaW5kZXggLSAxXSk7
CisgICAgICAgIGluZGV4IC09IDE7CisgICAgICAgIHZhciBlbGVtID0gZWxlbWVudHNbaW5kZXhd
OworICAgICAgICBlbGVtZW50c1tpbmRleF0gPSBlbGVtZW50c1tyYW5kb21dOworICAgICAgICBl
bGVtZW50c1tyYW5kb21dID0gZWxlbTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzOworfTsK
KworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIHRoZSBkZVJhbmRvbS5S
YW5kb20gb2JqZWN0IGFuZAorICogaW5pdGlhbGlzZSB0aGUgcmFuZG9tIG51bWJlciB3aXRoIGEg
c2VlZC4KKyAqIEl0IGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyByYW5kb20gbnVt
YmVycyBpbiBhIHZhcmlldHkgb2YgZm9ybWF0cworICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
e251bWJlcn0gc2VlZCBOdW1iZXIgdG8gdXNlIGFzIGEgc2VlZAorICovCitkZVJhbmRvbS5SYW5k
b20gPSBmdW5jdGlvbihzZWVkKSB7CisgICAgLyoqCisgICAgICogSW5zdGFuY2Ugb2YgYXJyYXkg
b2YgcHNldWRvIHJhbmRvbSBudW1iZXJzIGJhc2VkIG9uIHNlZWRzCisgICAgKi8KKyAgICB0aGlz
Lm1fcm5kID0gbmV3IGRlUmFuZG9tLmRlUmFuZG9tKCk7CisKKyAgICAvL2luaXRpYWxpc2UgdGhl
IHJhbmRvbSBudW1iZXJzIGJhc2VkIG9uIHNlZWQKKyAgICBkZVJhbmRvbS5kZVJhbmRvbV9pbml0
KHRoaXMubV9ybmQsIHNlZWQpOworfTsKKworLyoqCisgKiBGdW5jdGlvbiB0byBnZXQgcmFuZG9t
IGJvb2xlYW4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IGRlUmFuZG9tLlJhbmRvbSBib29sZWFuCisg
Ki8KK2RlUmFuZG9tLlJhbmRvbS5wcm90b3R5cGUuZ2V0Qm9vbCA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gZGVSYW5kb20uZGVSYW5kb21fZ2V0Qm9vbCh0aGlzLm1fcm5kKSA9PSB0cnVlOyB9OworLyoq
CisgKiBGdW5jdGlvbiB0byBnZXQgcmFuZG9tIGZsb2F0CisgKiBAcGFyYW0ge251bWJlcj19IG1p
biBNaW4gZm9yIHJhbmdlCisgKiBAcGFyYW0ge251bWJlcj19IG1heCBNYXggZm9yIHJhbmdlCisg
KiBAcmV0dXJuIHtudW1iZXJ9IGRlUmFuZG9tLlJhbmRvbSBmbG9hdAorICovCitkZVJhbmRvbS5S
YW5kb20ucHJvdG90eXBlLmdldEZsb2F0ID0gZnVuY3Rpb24obWluLCBtYXgpIHsgcmV0dXJuIGRl
UmFuZG9tLmRlUmFuZG9tX2dldEZsb2F0KHRoaXMubV9ybmQsIFttaW4sIG1heF0pIH07CisvKioK
KyAqIEZ1bmN0aW9uIHRvIGdldCByYW5kb20gaW50CisgKiBAcGFyYW0ge251bWJlcj19IG1pbiBN
aW4gZm9yIHJhbmdlCisgKiBAcGFyYW0ge251bWJlcj19IG1heCBNYXggZm9yIHJhbmdlCisgKiBA
cmV0dXJuIHtudW1iZXJ9IGRlUmFuZG9tLlJhbmRvbSBpbnQKKyAqLworZGVSYW5kb20uUmFuZG9t
LnByb3RvdHlwZS5nZXRJbnQgPSBmdW5jdGlvbihtaW4sIG1heCkge3JldHVybiBkZVJhbmRvbS5k
ZVJhbmRvbV9nZXRJbnQodGhpcy5tX3JuZCwgW21pbiwgbWF4XSl9OworLyoqCisgKiBUT0RPIEZ1
bmN0aW9uIHRvIGRlUmFuZG9tLmNob29zZSByYW5kb20gaXRlbXMgZnJvbSBhIGxpc3QKKyAqIEB0
ZW1wbGF0ZSBUCisgKiBAcGFyYW0ge0FycmF5PFQ+fSBlbGVtZW50cyBBcnJheSBzZWdtZW50IGFs
cmVhZHkgZGVmaW5lZAorICogQHBhcmFtIHtBcnJheTxUPj19IHJlc3VsdE91dCBBcnJheSB3aGVy
ZSB0byBzdG9yZSB0aGUgZWxlbWVudHMgaW4uIElmIHVuZGVmaW5lZCwgZGVmYXVsdCB0byBhcnJh
eSBvZiAobnVtKSBlbGVtZW50cy4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gbnVtIE51bWJlciBvZiBp
dGVtcyB0byBzdG9yZSBpbiByZXN1bHRPdXQuIElmIHVuZGVmaW5lZCwgZGVmYXVsdCB0byAxLgor
ICogQHJldHVybiB7QXJyYXk8VD59IEV2ZW4gdGhvdWdoIHJlc3VsdCBpcyBzdG9yZWQgaW4gcmVz
dWx0T3V0LCByZXR1cm4gaXQgaGVyZSBhcyB3ZWxsLgorICovCitkZVJhbmRvbS5SYW5kb20ucHJv
dG90eXBlLmNob29zZSA9IGZ1bmN0aW9uKGVsZW1lbnRzLCByZXN1bHRPdXQsIG51bSkge3JldHVy
biBkZVJhbmRvbS5jaG9vc2UodGhpcy5tX3JuZCwgZWxlbWVudHMsIHJlc3VsdE91dCwgbnVtKX07
CisvKioKKyAqIGNob29zZSB3ZWlnaHRlZCByYW5kb20gaXRlbXMgZnJvbSBhIGxpc3QKKyAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gYXJyYXkgQXJyYXkgdG8gY2hvb3NlIGl0ZW1zIGZyb20KKyAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gd2VpZ2h0cyBXZWlnaHRzIGFycmF5CisgKiBAcmV0dXJu
IHtudW1iZXJ9IFJlc3VsdCBvdXRwdXQKKyAqLworZGVSYW5kb20uUmFuZG9tLnByb3RvdHlwZS5j
aG9vc2VXZWlnaHRlZCA9IGZ1bmN0aW9uKGFycmF5LCB3ZWlnaHRzKSB7cmV0dXJuIGRlUmFuZG9t
LmNob29zZVdlaWdodGVkKHRoaXMubV9ybmQsIGFycmF5LCB3ZWlnaHRzKX07CisvKioKKyAqIFRP
RE8gRnVuY3Rpb24gdG8gZGVSYW5kb20uc2h1ZmZsZSBhbiBhcnJheQorICogQHBhcmFtIHtBcnJh
eX0gZWxlbWVudHMgQXJyYXkgdG8gZGVSYW5kb20uc2h1ZmZsZQorICogQHJldHVybiB7QXJyYXl9
IFNodWZmbGVkIGFycmF5CisgKi8KK2RlUmFuZG9tLlJhbmRvbS5wcm90b3R5cGUuc2h1ZmZsZSA9
IGZ1bmN0aW9uKGVsZW1lbnRzKSB7cmV0dXJuIGRlUmFuZG9tLnNodWZmbGUodGhpcy5tX3JuZCwg
ZWxlbWVudHMpfTsKKworLyoqCisgKiBGdW5jdGlvbiB0byBnZXQgYSBjb21tb24gYmFzZSBzZWVk
CisgKiBAcmV0dXJuIHtudW1iZXJ9IGNvbnN0YW50CisgKi8KK2RlUmFuZG9tLlJhbmRvbS5wcm90
b3R5cGUuZ2V0QmFzZVNlZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZGVSYW5kb20uZ2V0
QmFzZVNlZWQoKTsKK307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZVN0
cmluZy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVTdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM4NGE3
MjMyNzBmYWMwNzBjODM0ZmM3NThlMDYwMzhhOWFiNWJiMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3Jr
L2RlbGlicy9kZWJhc2UvZGVTdHJpbmcuanMKQEAgLTAsMCArMSwxMTEgQEAKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0
aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Cisg
KgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworCisvKioKKyAqIFRoaXMgY2xhc3MgYWxsb3dzIG9uZSB0byBjcmVhdGUgYSByYW5k
b20gaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIG9yIGJvb2xlYW4gKFRPRE8sIGNob29z
ZSByYW5kb20gaXRlbXMgZnJvbSBhIGxpc3QgYW5kIHNodWZmbGUgYW4gYXJyYXkpCisgKi8KKyd1
c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7CisK
K2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlU3RyaW5nOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlTWF0aDsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlm
ICgheCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIGhhc2ggZnJvbSBzdHJpbmcuCisgICAgICog
QHBhcmFtIHs/c3RyaW5nfSBzdHIgU3RyaW5nIHRvIGNvbXB1dGUgaGFzaCB2YWx1ZSBmb3IuCisg
ICAgICogQHJldHVybiB7bnVtYmVyfSBDb21wdXRlZCBoYXNoIHZhbHVlLgorICAgICAqLworICAg
IGRlU3RyaW5nLmRlU3RyaW5nSGFzaCA9IGZ1bmN0aW9uKHN0cikgeworICAgICAgICAvKiBcbm90
ZSBbcHlyeV0gVGhpcyBoYXNoIGlzIHVzZWQgaW4gRFRfR05VX0hBU0ggYW5kIGlzIHByb3Zlbgor
ICAgICAgICB0byBiZSByb2J1c3QgZm9yIHN5bWJvbCBoYXNoaW5nLiAqLworICAgICAgICAvKiBc
c2VlIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vbWwvYmludXRpbHMvMjAwNi0wNi9tc2cwMDQx
OC5odG1sICovCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGFzaCA9IDUzODE7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYzsKKworICAgICAgICBERV9BU1NF
UlQoc3RyICE9IHVuZGVmaW5lZCk7CisgICAgICAgIGlmIChzdHIgIT09IG51bGwpIHsKKyAgICAg
ICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkgeyAv
LyhjID0gKHVuc2lnbmVkIGludCkqc3RyKyspICE9IDApCisgICAgICAgICAgICAgICAgYyA9IHN0
ci5jaGFyQ29kZUF0KGkpOyAvL3RydW5jIHRvIDgtYml0CisgICAgICAgICAgICAgICAgaGFzaCA9
IChoYXNoIDw8IDUpICsgaGFzaCArIGM7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNoOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBDaGVja3MgaWYgYSBKUyBzdHJpbmcgaXMgZWl0aGVyIGVtcHR5IG9yIHVuZGVmaW5l
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGRlU3RyaW5nLmRlSXNTdHJpbmdFbXB0eSA9IGZ1bmN0aW9uKHN0cikgewor
ICAgICAgICBpZiAoc3RyID09PSB1bmRlZmluZWQgfHwgc3RyLmxlbmd0aCA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZW51bVR5cGUKKyAg
ICAgKiBAcGFyYW0gez99IHZhbHVlCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwor
ICAgIGRlU3RyaW5nLmdldFN0cmluZyA9IGZ1bmN0aW9uKGVudW1UeXBlLCB2YWx1ZSkgeworICAg
ICAgICBmb3IgKHZhciBwIGluIGVudW1UeXBlKQorICAgICAgICAgICAgaWYgKGVudW1UeXBlW3Bd
ID09IHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwOworCisgICAgICAgIGlmICh0eXBl
b2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKQorICAgICAgICAgICAgcmV0dXJuICd1bmRlZmluZWQn
OworCisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gJ251bGwnOworCisg
ICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygxMCk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7T2JqZWN0fSBlbnVtVHlwZQorICAgICAqIEBwYXJhbSB7P30gdmFsdWUKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZGVTdHJpbmcuZW51bVRvU3RyaW5n
ID0gZnVuY3Rpb24oZW51bVR5cGUsIHZhbHVlKSB7CisgICAgICAgIGlmICh0eXBlb2YgZGVTdHJp
bmcuZW51bVRvU3RyaW5nW2VudW1UeXBlXSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgICAgICBk
ZVN0cmluZy5lbnVtVG9TdHJpbmdbZW51bVR5cGVdID0ge307CisKKyAgICAgICAgdmFyIHRhYmxl
ID0gZGVTdHJpbmcuZW51bVRvU3RyaW5nW2VudW1UeXBlXTsKKyAgICAgICAgaWYgKHR5cGVvZiB0
YWJsZVt2YWx1ZV0gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICB2YXIgdiA9IGRlU3Ry
aW5nLmdldFN0cmluZyhlbnVtVHlwZSwgdmFsdWUpOworICAgICAgICAgICAgdGFibGVbdmFsdWVd
ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0YWJsZVt2YWx1ZV07CisgICAgfTsK
KworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlVXRpbC5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL2RlbGli
cy9kZWJhc2UvZGVVdGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2YTkwYjZmZjYxZjBhNjNiMDY2YzE4ZTk5
YTA0MTJjM2MwM2M0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlVXRp
bC5qcwpAQCAtMCwwICsxLDkwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50
cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
KiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZGVVdGlsID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVVdGlsOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7
CisKKyAgICAvLyEgR2V0IGFuIGVsZW1lbnQgb2YgYW4gYXJyYXkgd2l0aCBhIHNwZWNpZmllZCBz
aXplLgorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5CisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG9mZnNldAorICAgICAqIEByZXR1cm4geyp9CisgICAgICovCisgICAgZGVVdGls
LmdldEFycmF5RWxlbWVudCA9IGZ1bmN0aW9uKGFycmF5LCBvZmZzZXQpIHsKKyAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyhkZU1hdGguZGVJbkJvdW5kczMyKG9mZnNldCwgMCwgYXJyYXkubGVuZ3Ro
KSwgJ0FycmF5IGVsZW1lbnQgb3V0IG9mIGJvdW5kcycsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIGFycmF5W29mZnNldF07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGNsb25lIC0g
SWYgeW91IG5lZWQgdG8gcGFzcy9hc3NpZ24gYW4gb2JqZWN0IGJ5IHZhbHVlLCBjYWxsIHRoaXMK
KyAgICAgKiBAcGFyYW0geyp9IG9iagorICAgICAqIEByZXR1cm4geyp9CisgICAgICovCisgICAg
ZGVVdGlsLmNsb25lID0gZnVuY3Rpb24ob2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCB8
fCB0eXBlb2Yob2JqKSAhPSAnb2JqZWN0JykKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisKKyAg
ICAgICAgdmFyIHRlbXAgPSB7fTsKKyAgICAgICAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhvYmop
KSB7CisgICAgICAgICAgICB0ZW1wID0gbmV3IG9iai5jb25zdHJ1Y3RvcihvYmopOworICAgICAg
ICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICB0ZW1wID0g
bmV3IEFycmF5KG9iai5sZW5ndGgpOworICAgICAgICAgICAgZm9yICh2YXIgYWtleSBpbiBvYmop
CisgICAgICAgICAgICAgICAgdGVtcFtha2V5XSA9IGRlVXRpbC5jbG9uZShvYmpbYWtleV0pOwor
ICAgICAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7CisgICAgICAg
ICAgICB0ZW1wID0gbmV3IEFycmF5QnVmZmVyKG9iai5ieXRlTGVuZ3RoKTsKKyAgICAgICAgICAg
IHZhciBkc3QgPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKKyAgICAgICAgICAgIHZhciBzcmMgPSBu
ZXcgVWludDhBcnJheShvYmopOworICAgICAgICAgICAgZHN0LnNldChzcmMpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVtcCA9IE9iamVjdC5jcmVhdGUob2JqLmNvbnN0cnVjdG9y
LnByb3RvdHlwZSk7CisgICAgICAgICAgICB0ZW1wLmNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVj
dG9yOworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikKKyAgICAgICAgICAgICAgICB0
ZW1wW2tleV0gPSBkZVV0aWwuY2xvbmUob2JqW2tleV0pOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0ZW1wOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEFkZCBhIHB1c2hfdW5pcXVlIGZ1
bmN0aW9uIHRvIEFycmF5LiBXaWxsIGluc2VydCBvbmx5IGlmIHRoZXJlIGlzIG5vIGVxdWFsIGVs
ZW1lbnQuCisgICAgKiBAdGVtcGxhdGUgVAorICAgICogQHBhcmFtIHtBcnJheTxUPn0gYXJyYXkg
QW55IGFycmF5CisgICAgKiBAcGFyYW0ge1R9IG9iamVjdCBBbnkgb2JqZWN0CisgICAgKi8KKyAg
ICBkZVV0aWwuZGVQdXNoVW5pcXVlVG9BcnJheSA9IGZ1bmN0aW9uKGFycmF5LCBvYmplY3QpIHsK
KyAgICAgICAgLy9TaW1wbGVzdCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LmVxdWFs
cyAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIGlmIChvYmplY3QuZXF1YWxzKGFycmF5
W2ldKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG9iamVjdCA9PT0gYXJyYXlbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIGFycmF5LnB1c2gob2JqZWN0KTsKKyAgICB9
OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVEcmF3VXRpbC5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5n
bC9nbHVEcmF3VXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWEwNWE5NzA4YjI5OGI1ZTRhMzcxZjM4NDg5
Y2ExZDJjNmI2NzE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdURyYXdVdGlsLmpz
CkBAIC0wLDAgKzEsNTEwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBR
dWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Z29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCit2YXIgZ2x1RHJhd1V0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdV
dGlsOwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclBy
b2dyYW07CisKKy8qKgorICogRGVzY3JpcHRpb24gb2YgYSB2ZXJ0ZXggYXJyYXkgYmluZGluZwor
ICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge251bWJlcn0gdHlwZSBHTCBnbHVEcmF3VXRpbC5U
eXBlIG9mIGRhdGEKKyAqIEBwYXJhbSB7KG51bWJlcnx1bmRlZmluZWQpfSBsb2NhdGlvbiBCaW5k
aW5nIGxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gY29tcG9uZW50cyBOdW1iZXIgb2YgY29t
cG9uZW50cyBwZXIgdmVydGV4CisgKiBAcGFyYW0ge251bWJlcn0gZWxlbWVudHMgTnVtYmVyIG9m
IGVsZW1lbnRzIGluIHRoZSBhcnJheQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkYXRhIFNv
dXJjZSBkYXRhCisgKiBAcGFyYW0ge251bWJlcj19IHN0cmlkZQorICogQHBhcmFtIHtudW1iZXI9
fSBvZmZzZXQKKyAqLworZ2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nID0gZnVuY3Rpb24o
dHlwZSwgbG9jYXRpb24sIGNvbXBvbmVudHMsIGVsZW1lbnRzLCBkYXRhLCBzdHJpZGUsIG9mZnNl
dCkgeworICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9u
ID09PSB1bmRlZmluZWQgPyAtMSA6IGxvY2F0aW9uOworICAgIHRoaXMuY29tcG9uZW50cyA9IGNv
bXBvbmVudHM7CisgICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzOworICAgIHRoaXMuZGF0YSA9
IGRhdGE7CisgICAgLyoqIEB0eXBlIHs/c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBudWxsOworICAg
IHRoaXMuc3RyaWRlID0gc3RyaWRlIHx8IDA7CisgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQgfHwg
MDsKK307CisKKy8qKgorICogRGVzY3JpcHRpb24gb2YgYSB2ZXJ0ZXggYXJyYXkgYmluZGluZwor
ICogQHBhcmFtIHtnbHVEcmF3VXRpbC5CaW5kaW5nUG9pbnR9IGJpbmRpbmcKKyAqIEBwYXJhbSB7
Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlQb2ludGVyfSBwb2ludGVyCisgKiBAcGFyYW0ge251bWJl
cj19IGRhdGFUeXBlIEdMIERhdGEgVHlwZQorICogQHJldHVybiB7Z2x1RHJhd1V0aWwuVmVydGV4
QXJyYXlCaW5kaW5nfQorICovCitnbHVEcmF3VXRpbC52YWJGcm9tQmluZGluZ1BvaW50QW5kQXJy
YXlQb2ludGVyID0gZnVuY3Rpb24oYmluZGluZywgcG9pbnRlciwgZGF0YVR5cGUpIHsKKyAgICB2
YXIgdHlwZSA9IGRhdGFUeXBlID09PSB1bmRlZmluZWQgPyBnbC5GTE9BVCA6IGRhdGFUeXBlOwor
ICAgIHZhciBsb2NhdGlvbiA9IGJpbmRpbmcubG9jYXRpb247CisgICAgdmFyIGNvbXBvbmVudHMg
PSBwb2ludGVyLm51bUNvbXBvbmVudHM7CisgICAgdmFyIGVsZW1lbnRzID0gcG9pbnRlci5udW1F
bGVtZW50czsKKyAgICB2YXIgZGF0YSA9IHBvaW50ZXIuZGF0YTsKKyAgICB2YXIgdmFCaW5kaW5n
ID0gbmV3IGdsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZyh0eXBlLCBsb2NhdGlvbiwgY29t
cG9uZW50cywgZWxlbWVudHMsIGRhdGEpOworICAgIHZhQmluZGluZy5jb21wb25lbnRUeXBlID0g
cG9pbnRlci5jb21wb25lbnRUeXBlOworICAgIHZhQmluZGluZy5uYW1lID0gYmluZGluZy5uYW1l
OworICAgIHZhQmluZGluZy5jb252ZXJ0ID0gcG9pbnRlci5jb252ZXJ0OworICAgIHZhQmluZGlu
Zy5zdHJpZGUgPSBwb2ludGVyLnN0cmlkZTsKKyAgICByZXR1cm4gdmFCaW5kaW5nOworfTsKKwor
LyoqCisgKiAhIExvd2VyIG5hbWVkIGJpbmRpbmdzIHRvIGxvY2F0aW9ucyBhbmQgZWxpbWluYXRl
IGJpbmRpbmdzIHRoYXQgYXJlIG5vdCB1c2VkIGJ5IHByb2dyYW0uCisgKiBAcGFyYW0ge1dlYkdM
MlJlbmRlcmluZ0NvbnRleHR9IGdsIFdlYkdMIGNvbnRleHQKKyAqIEBwYXJhbSB7V2ViR0xQcm9n
cmFtfSBwcm9ncmFtCisgKiBAcGFyYW0ge0FycmF5fSBpbnB1dEFycmF5IC0gQXJyYXkgd2l0aCB0
aGUgbmFtZWQgYmluZGluZyBsb2NhdGlvbnMKKyAqIEBwYXJhbSB7QXJyYXk9fSBvdXRwdXRBcnJh
eSAtIEFycmF5IHdpdGggdGhlIGxvd2VyZWQgbG9jYXRpb25zCisgKiBAcmV0dXJuIHtBcnJheX0g
b3V0cHV0QXJyYXkKKyAqLworZ2x1RHJhd1V0aWwubmFtZWRCaW5kaW5nc1RvUHJvZ3JhbUxvY2F0
aW9ucyA9IGZ1bmN0aW9uKGdsLCBwcm9ncmFtLCBpbnB1dEFycmF5LCBvdXRwdXRBcnJheSkgewor
ICAgIG91dHB1dEFycmF5ID0gb3V0cHV0QXJyYXkgfHwgW107CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGlucHV0QXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGN1ciA9IGlucHV0
QXJyYXlbaV07CisgICAgICAgIGlmIChjdXIubmFtZSkgeworICAgICAgICAgICAgLy9hc3NlcnQo
YmluZGluZy5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGdsLmdl
dEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGN1ci5uYW1lKTsKKyAgICAgICAgICAgIGlmIChsb2Nh
dGlvbiA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1ci5sb2NhdGlvbiA+PSAwKQorICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbiArPSBjdXIubG9jYXRpb247CisgICAgICAgICAgICAg
ICAgLy8gQWRkIGJpbmRpbmcubG9jYXRpb24gYXMgYW4gb2Zmc2V0IHRvIGFjY29tb2RhdGUgbWF0
cmljZXMuCisgICAgICAgICAgICAgICAgb3V0cHV0QXJyYXkucHVzaChuZXcgZ2x1RHJhd1V0aWwu
VmVydGV4QXJyYXlCaW5kaW5nKGN1ci50eXBlLCBsb2NhdGlvbiwgY3VyLmNvbXBvbmVudHMsIGN1
ci5lbGVtZW50cywgY3VyLmRhdGEsIGN1ci5zdHJpZGUsIGN1ci5vZmZzZXQpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG91dHB1dEFycmF5LnB1c2goY3Vy
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBvdXRwdXRBcnJheTsKK307CisKKy8q
KgorICogQ3JlYXRlcyB2ZXJ0ZXggYnVmZmVyLCBiaW5kcyBpdCBhbmQgZHJhd3MgZWxlbWVudHMK
KyAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wgV2ViR0wgY29udGV4dAorICog
QHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0gSUQsIHZlcnRleFByb2dyYW1JRAorICogQHBh
cmFtIHtBcnJheTxnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheUJpbmRpbmc+fSB2ZXJ0ZXhBcnJheXMK
KyAqIEBwYXJhbSB7Z2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdH0gcHJpbWl0aXZlcyB0byBnbHVE
cmF3VXRpbC5kcmF3CisgKiBAcGFyYW0geyB7YmVmb3JlRHJhd0NhbGw6ZnVuY3Rpb24oKSwgYWZ0
ZXJEcmF3Q2FsbDpmdW5jdGlvbigpfT19IGNhbGxiYWNrCisgKi8KK2dsdURyYXdVdGlsLmRyYXcg
PSBmdW5jdGlvbihnbCwgcHJvZ3JhbSwgdmVydGV4QXJyYXlzLCBwcmltaXRpdmVzLCBjYWxsYmFj
aykgeworICAgIC8qKiBUT0RPOiBmaW5pc2ggaW1wbGVtZW50YXRpb24gKi8KKyAgICAvKiogQHR5
cGUge0FycmF5PFdlYkdMQnVmZmVyPn0gKi8gdmFyIG9iamVjdHMgPSBbXTsKKworICAgIC8vIExv
d2VyIGJpbmRpbmdzIHRvIGxvY2F0aW9ucworICAgIHZlcnRleEFycmF5cyA9IGdsdURyYXdVdGls
Lm5hbWVkQmluZGluZ3NUb1Byb2dyYW1Mb2NhdGlvbnMoZ2wsIHByb2dyYW0sIHZlcnRleEFycmF5
cyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZlcnRleEFycmF5cy5sZW5ndGg7IGkrKykg
eworICAgICAgICAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAqLyB2YXIgYnVmZmVyID0gZ2x1RHJh
d1V0aWwudmVydGV4QnVmZmVyKGdsLCB2ZXJ0ZXhBcnJheXNbaV0pOworICAgICAgICBvYmplY3Rz
LnB1c2goYnVmZmVyKTsKKyAgICB9CisKKyAgICBpZiAocHJpbWl0aXZlcy5pbmRpY2VzKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICovIHZhciBlbGVtQnVmZmVyID0gZ2x1RHJh
d1V0aWwuaW5kZXhCdWZmZXIoZ2wsIHByaW1pdGl2ZXMpOworICAgICAgICBnbC5iaW5kQnVmZmVy
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtQnVmZmVyKTsKKworICAgICAgICBpZiAoY2Fs
bGJhY2spCisgICAgICAgICAgICBjYWxsYmFjay5iZWZvcmVEcmF3Q2FsbCgpOworCisgICAgICAg
IGdsdURyYXdVdGlsLmRyYXdJbmRleGVkKGdsLCBwcmltaXRpdmVzLCAwKTsKKworICAgICAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjay5hZnRlckRyYXdDYWxsKCk7CisKKyAg
ICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2suYmVm
b3JlRHJhd0NhbGwoKTsKKworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsdURyYXdVdGlsLmdldFBy
aW1pdGl2ZUdMVHlwZShnbCwgcHJpbWl0aXZlcy50eXBlKSwgMCwgcHJpbWl0aXZlcy5udW1FbGVt
ZW50cyk7CisKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2suYWZ0
ZXJEcmF3Q2FsbCgpOworICAgIH0KKworICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkg
PT09IGdsLk5PX0VSUk9SLCAnZHJhd0FycmF5cycsIGZhbHNlLCB0cnVlKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHZlcnRleEFycmF5cy5sZW5ndGg7IGkrKykgeworICAgICAgICBnbC5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4QXJyYXlzW2ldLmxvY2F0aW9uKTsKKyAgICB9Cisg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKK307CisKKy8qKgorICogQ3Jl
YXRlcyB2ZXJ0ZXggYnVmZmVyLCBiaW5kcyBpdCBhbmQgZHJhd3MgZWxlbWVudHMKKyAqIEBwYXJh
bSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wgV2ViR0wgY29udGV4dAorICogQHBhcmFtIHtn
bHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0fSBwcmltaXRpdmVzIFByaW1pdGl2ZXMgdG8gZ2x1RHJh
d1V0aWwuZHJhdworICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICovCitnbHVEcmF3VXRpbC5k
cmF3SW5kZXhlZCA9IGZ1bmN0aW9uKGdsLCBwcmltaXRpdmVzLCBvZmZzZXQpIHsKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbW9kZSA9IGdsdURyYXdVdGlsLmdldFByaW1pdGl2ZUdMVHlwZShn
bCwgcHJpbWl0aXZlcy50eXBlKTsKKyAgICAvKiogVE9ETzogQysrIGltcGxlbWVudGF0aW9uIHN1
cHBvcnRzIGRpZmZlcmVudCBpbmRleCB0eXBlcywgd2UgdXNlIG9ubHkgaW50MTYuCisgICAgICAg
IENvdWxkIGl0IGNhdXNlIGFueSBpc3N1ZXM/CisKKyAgICAgICAgZGVVaW50MzIgaW5kZXhHTFR5
cGUgPSBnZXRJbmRleEdMVHlwZShwcmltaXRpdmVzLmluZGV4VHlwZSk7CisgICAgKi8KKworICAg
IGdsLmRyYXdFbGVtZW50cyhtb2RlLCBwcmltaXRpdmVzLmluZGljZXMubGVuZ3RoLCBnbC5VTlNJ
R05FRF9TSE9SVCwgb2Zmc2V0KTsKK307CisKKy8qKgorICogRW51bXMgZm9yIHByaW1pdGl2ZSB0
eXBlcworICogQGVudW0KKyAqLworZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZSA9IHsKKyAgICBU
UklBTkdMRVM6IDAsCisgICAgVFJJQU5HTEVfU1RSSVA6IDEsCisgICAgVFJJQU5HTEVfRkFOOiAy
LAorCisgICAgTElORVM6IDMsCisgICAgTElORV9TVFJJUDogNCwKKyAgICBMSU5FX0xPT1A6IDUs
CisKKyAgICBQT0lOVFM6IDYsCisKKyAgICBQQVRDSEVTOiA3Cit9OworCisvKioKKyAqIGdldCBH
TCB0eXBlIGZyb20gcHJpbWl0aXZlIHR5cGUKKyAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dH0gZ2wgV2ViR0wgY29udGV4dAorICogQHBhcmFtIHtnbHVEcmF3VXRpbC5wcmltaXRpdmVU
eXBlfSB0eXBlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUKKyAqIEByZXR1cm4ge251bWJlcn0g
R0wgcHJpbWl0aXZlIHR5cGUKKyAqLworZ2x1RHJhd1V0aWwuZ2V0UHJpbWl0aXZlR0xUeXBlID0g
ZnVuY3Rpb24oZ2wsIHR5cGUpIHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBn
bHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFUzogcmV0dXJuIGdsLlRSSUFOR0xFUzsK
KyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFX1NUUklQOiBy
ZXR1cm4gZ2wuVFJJQU5HTEVfU1RSSVA7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0
aXZlVHlwZS5UUklBTkdMRV9GQU46IHJldHVybiBnbC5UUklBTkdMRV9GQU47CisgICAgICAgIGNh
c2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FUzogcmV0dXJuIGdsLkxJTkVTOworICAg
ICAgICBjYXNlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuTElORV9TVFJJUDogcmV0dXJuIGds
LkxJTkVfU1RSSVA7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5F
X0xPT1A6IHJldHVybiBnbC5MSU5FX0xPT1A7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5QT0lOVFM6IHJldHVybiBnbC5QT0lOVFM7CisvLyAgICAgICAgY2FzZSBnbHVE
cmF3VXRpbC5wcmltaXRpdmVUeXBlLlBBVENIRVM6IHJldHVybiBnbC5QQVRDSEVTOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1pdGl2
ZSB0eXBlICcgKyB0eXBlKTsKKyAgICB9Cit9OworCisvKioKKyAqIENhbGxzIGdsdURyYXdVdGls
Lm5ld1ByaW1pdGl2ZUxpc3RGcm9tSW5kaWNlcygpIHRvIGNyZWF0ZSBwcmltaXRpdmUgbGlzdCBm
b3IgUG9pbnRzCisgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAqLworZ2x1RHJhd1V0
aWwucG9pbnRzRnJvbUVsZW1lbnRzID0gZnVuY3Rpb24obnVtRWxlbWVudHMpIHsKKyAgICByZXR1
cm4gbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlw
ZS5QT0lOVFMsIG51bUVsZW1lbnRzKTsKK307CisKKy8qKgorICogQ2FsbHMgZ2x1RHJhd1V0aWwu
bmV3UHJpbWl0aXZlTGlzdEZyb21JbmRpY2VzKCkgdG8gY3JlYXRlIHByaW1pdGl2ZSBsaXN0IGZv
ciBUcmlhbmdsZXMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gaW5kaWNlcworICovCitnbHVE
cmF3VXRpbC50cmlhbmdsZXMgPSBmdW5jdGlvbihpbmRpY2VzKSB7CisgICAgcmV0dXJuIGdsdURy
YXdVdGlsLm5ld1ByaW1pdGl2ZUxpc3RGcm9tSW5kaWNlcyhnbHVEcmF3VXRpbC5wcmltaXRpdmVU
eXBlLlRSSUFOR0xFUywgaW5kaWNlcyk7Cit9OworCisvKioKKyAqIENhbGxzIGdsdURyYXdVdGls
Lm5ld1ByaW1pdGl2ZUxpc3RGcm9tSW5kaWNlcygpIHRvIGNyZWF0ZSBwcmltaXRpdmUgbGlzdCBm
b3IgUGF0Y2hlcworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbmRpY2VzCisgKi8KK2dsdURy
YXdVdGlsLnBhdGNoZXMgPSBmdW5jdGlvbihpbmRpY2VzKSB7CisgICAgcmV0dXJuIGdsdURyYXdV
dGlsLm5ld1ByaW1pdGl2ZUxpc3RGcm9tSW5kaWNlcyhnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBl
LlBBVENIRVMsIGluZGljZXMpOworfTsKKworLyoqCisgKiBDcmVhdGVzIHByaW1pdGl2ZSBsaXN0
IGZvciBUcmlhbmdsZXMgb3IgUGF0Y2hlcywgZGVwZW5kaW5nIG9uIHR5cGUKKyAqIEBwYXJhbSB7
Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZX0gdHlwZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBl
CisgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAqIEBjb25zdHJ1Y3RvcgorICovCitn
bHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0ID0gZnVuY3Rpb24odHlwZSwgbnVtRWxlbWVudHMpIHsK
KyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgIHRoaXMuaW5kaWNlcyA9IDA7CisgICAgdGhpcy5u
dW1FbGVtZW50cyA9IG51bUVsZW1lbnRzOworfTsKKworLyoqCisgKiBAcGFyYW0ge2dsdURyYXdV
dGlsLnByaW1pdGl2ZVR5cGV9IHR5cGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gaW5kaWNl
cworICogQHJldHVybiB7Z2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdH0KKyAqLworZ2x1RHJhd1V0
aWwubmV3UHJpbWl0aXZlTGlzdEZyb21JbmRpY2VzID0gZnVuY3Rpb24odHlwZSwgaW5kaWNlcykg
eworICAgIC8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdH0gKi8gdmFyIHByaW1p
dGl2ZUxpc3QgPSBuZXcgZ2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdCh0eXBlLCAwKTsKKyAgICBw
cmltaXRpdmVMaXN0LmluZGljZXMgPSBpbmRpY2VzOworICAgIHJldHVybiBwcmltaXRpdmVMaXN0
OworfTsKKworLyoqCisgKiBDcmVhdGUgRWxlbWVudCBBcnJheSBCdWZmZXIKKyAqIEBwYXJhbSB7
V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wgV2ViR0wgY29udGV4dAorICogQHBhcmFtIHtnbHVE
cmF3VXRpbC5QcmltaXRpdmVMaXN0fSBwcmltaXRpdmVzIHRvIGNvbnN0cnVjdCB0aGUgYnVmZmVy
IGZyb20KKyAqIEByZXR1cm4ge1dlYkdMQnVmZmVyfSBpbmRleE9iamVjdCBidWZmZXIgd2l0aCBl
bGVtZW50cworICovCitnbHVEcmF3VXRpbC5pbmRleEJ1ZmZlciA9IGZ1bmN0aW9uKGdsLCBwcmlt
aXRpdmVzKSB7CisgICAgLyoqIEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGluZGV4T2JqZWN0
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgaW5kZXhPYmplY3QpOworICAgIGFzc2VydE1zZ09wdGlvbnMoZ2wuZ2V0RXJyb3Io
KSA9PT0gZ2wuTk9fRVJST1IsICdiaW5kQnVmZmVyJywgZmFsc2UsIHRydWUpOworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShwcmltaXRp
dmVzLmluZGljZXMpLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5n
ZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ2J1ZmZlckRhdGEnLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgcmV0
dXJuIGluZGV4T2JqZWN0OworfTsKKworLyoqCisgKiBDcmVhdGUgQXJyYXkgQnVmZmVyCisgKiBA
cGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGdsIFdlYkdMIGNvbnRleHQKKyAqIEBwYXJh
bSB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfSB2ZXJ0ZXhBcnJheSBwcmltaXRpdmVz
LCBBcnJheSBidWZmZXIgZGVzY3JpcHRvcgorICogQHJldHVybiB7V2ViR0xCdWZmZXJ9IGJ1ZmZl
ciBvZiB2ZXJ0aWNlcworICovCitnbHVEcmF3VXRpbC52ZXJ0ZXhCdWZmZXIgPSBmdW5jdGlvbihn
bCwgdmVydGV4QXJyYXkpIHsKKyAgICAvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0gKi8gdmFy
IHR5cGVkQXJyYXk7CisgICAgc3dpdGNoICh2ZXJ0ZXhBcnJheS50eXBlKSB7CisgICAgICAgIGNh
c2UgZ2wuQllURTogdHlwZWRBcnJheSA9IG5ldyBJbnQ4QXJyYXkodmVydGV4QXJyYXkuZGF0YSk7
IGJyZWFrOworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0JZVEU6IHR5cGVkQXJyYXkgPSBuZXcg
VWludDhBcnJheSh2ZXJ0ZXhBcnJheS5kYXRhKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZ2wuU0hP
UlQ6IHR5cGVkQXJyYXkgPSBuZXcgSW50MTZBcnJheSh2ZXJ0ZXhBcnJheS5kYXRhKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlQ6IHR5cGVkQXJyYXkgPSBuZXcgVWludDE2
QXJyYXkodmVydGV4QXJyYXkuZGF0YSk7IGJyZWFrOworICAgICAgICBjYXNlIGdsLklOVDogdHlw
ZWRBcnJheSA9IG5ldyBJbnQzMkFycmF5KHZlcnRleEFycmF5LmRhdGEpOyBicmVhazsKKyAgICAg
ICAgY2FzZSBnbC5VTlNJR05FRF9JTlQ6IHR5cGVkQXJyYXkgPSBuZXcgVWludDMyQXJyYXkodmVy
dGV4QXJyYXkuZGF0YSk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiB0eXBlZEFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhBcnJheS5kYXRhKTsgYnJlYWs7CisgICAgfQorCisgICAgLyoq
IEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGFzc2VydE1z
Z09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdiaW5kQnVmZmVyJywgZmFs
c2UsIHRydWUpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB0eXBlZEFycmF5
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09
PSBnbC5OT19FUlJPUiwgJ2J1ZmZlckRhdGEnLCBmYWxzZSwgdHJ1ZSk7CisgICAgZ2wuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodmVydGV4QXJyYXkubG9jYXRpb24pOworICAgIGFzc2VydE1zZ09w
dGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheScsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAodmVydGV4QXJyYXkudHlwZSA9PT0gZ2wuRkxP
QVQpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhBcnJheS5sb2NhdGlv
biwgdmVydGV4QXJyYXkuY29tcG9uZW50cywgdmVydGV4QXJyYXkudHlwZSwgZmFsc2UsIHZlcnRl
eEFycmF5LnN0cmlkZSwgdmVydGV4QXJyYXkub2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcih2ZXJ0ZXhBcnJheS5sb2NhdGlvbiwgdmVydGV4QXJy
YXkuY29tcG9uZW50cywgdmVydGV4QXJyYXkudHlwZSwgdmVydGV4QXJyYXkuc3RyaWRlLCB2ZXJ0
ZXhBcnJheS5vZmZzZXQpOworICAgIH0KKyAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9y
KCkgPT09IGdsLk5PX0VSUk9SLCAndmVydGV4QXR0cmliUG9pbnRlcicsIGZhbHNlLCB0cnVlKTsK
KyAgICByZXR1cm4gYnVmZmVyOworfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHJnYmEKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHVEcmF3VXRpbC5QaXhlbCA9IGZ1bmN0aW9u
KHJnYmEpIHsKKyAgICB0aGlzLnJnYmEgPSByZ2JhOworfTsKKworZ2x1RHJhd1V0aWwuUGl4ZWwu
cHJvdG90eXBlLmdldFJlZCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnJnYmFbMF07
Cit9OworZ2x1RHJhd1V0aWwuUGl4ZWwucHJvdG90eXBlLmdldEdyZWVuID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHRoaXMucmdiYVsxXTsKK307CitnbHVEcmF3VXRpbC5QaXhlbC5wcm90b3R5
cGUuZ2V0Qmx1ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnJnYmFbMl07Cit9Owor
Z2x1RHJhd1V0aWwuUGl4ZWwucHJvdG90eXBlLmdldEFscGhhID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHRoaXMucmdiYVszXTsKK307CitnbHVEcmF3VXRpbC5QaXhlbC5wcm90b3R5cGUuZXF1
YWxzID0gZnVuY3Rpb24ob3RoZXJQaXhlbCkgeworICAgIHJldHVybiB0aGlzLnJnYmFbMF0gPT0g
b3RoZXJQaXhlbC5yZ2JhWzBdICYmCisgICAgICAgICAgIHRoaXMucmdiYVsxXSA9PSBvdGhlclBp
eGVsLnJnYmFbMV0gJiYKKyAgICAgICAgICAgdGhpcy5yZ2JhWzJdID09IG90aGVyUGl4ZWwucmdi
YVsyXSAmJgorICAgICAgICAgICB0aGlzLnJnYmFbM10gPT0gb3RoZXJQaXhlbC5yZ2JhWzNdOwor
fTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZ2x1RHJhd1V0aWwuU3VyZmFjZSA9IGZ1
bmN0aW9uKCkgeworfTsKKworZ2x1RHJhd1V0aWwuU3VyZmFjZS5wcm90b3R5cGUucmVhZFN1cmZh
Y2UgPSBmdW5jdGlvbihnbCwgeCwgeSwgd2lkdGgsIGhlaWdodCkgeworICAgIHRoaXMuYnVmZmVy
ID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHRoaXMuYnVm
ZmVyKTsKKyAgICB0aGlzLnggPSB4OworICAgIHRoaXMueSA9IHk7CisgICAgdGhpcy53aWR0aCA9
IHdpZHRoOworICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIHJldHVybiB0aGlzLmJ1ZmZl
cjsKK307CisKK2dsdURyYXdVdGlsLlN1cmZhY2UucHJvdG90eXBlLmdldFBpeGVsID0gZnVuY3Rp
b24oeCwgeSkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZSA9ICh4ICsgeSAq
IHRoaXMud2lkdGgpICogNDsKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAg
dmFyIHJnYmEgPSBbCisgICAgICAgIHRoaXMuYnVmZmVyW2Jhc2VdLAorICAgICAgICB0aGlzLmJ1
ZmZlcltiYXNlICsgMV0sCisgICAgICAgIHRoaXMuYnVmZmVyW2Jhc2UgKyAyXSwKKyAgICAgICAg
dGhpcy5idWZmZXJbYmFzZSArIDNdCisgICAgICAgIF07CisgICAgcmV0dXJuIG5ldyBnbHVEcmF3
VXRpbC5QaXhlbChyZ2JhKTsKK307CisKK2dsdURyYXdVdGlsLlN1cmZhY2UucHJvdG90eXBlLmdl
dFBpeGVsVWludFJHQjggPSBmdW5jdGlvbih4LCB5KSB7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBiYXNlID0gKHggKyB5ICogdGhpcy53aWR0aCkgKiA0OworICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLworICAgIHJldHVybiAodGhpcy5idWZmZXJbYmFzZV0gPDwgMTYpICsKKyAgICAg
ICAgKHRoaXMuYnVmZmVyW2Jhc2UgKyAxXSA8PCA4KSArCisgICAgICAgIHRoaXMuYnVmZmVyW2Jh
c2UgKyAyXTsKK307CisKKy8qKgorICogQGVudW0KKyAqLworZ2x1RHJhd1V0aWwuVmVydGV4Q29t
cG9uZW50VHlwZSA9IHsKKyAgICAvLyBTdGFuZGFyZCB0eXBlczogYWxsIGNvbnZlcnNpb24gdHlw
ZXMgYXBwbHkuCisgICAgVlRYX0NPTVBfVU5TSUdORURfSU5UODogMCwKKyAgICBWVFhfQ09NUF9V
TlNJR05FRF9JTlQxNjogMSwKKyAgICBWVFhfQ09NUF9VTlNJR05FRF9JTlQzMjogMiwKKyAgICBW
VFhfQ09NUF9TSUdORURfSU5UODogMywKKyAgICBWVFhfQ09NUF9TSUdORURfSU5UMTY6IDQsCisg
ICAgVlRYX0NPTVBfU0lHTkVEX0lOVDMyOiA1LAorCisgICAgLy8gU3BlY2lhbCB0eXBlczogb25s
eSBDT05WRVJUX05PTkUgaXMgYWxsb3dlZC4KKyAgICBWVFhfQ09NUF9GSVhFRDogNiwKKyAgICBW
VFhfQ09NUF9IQUxGX0ZMT0FUOiA3LAorICAgIFZUWF9DT01QX0ZMT0FUOiA4Cit9OworCisvKioK
KyAqIEBlbnVtCisgKi8KK2dsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24gPSB7
CisgICAgVlRYX0NPTVBfQ09OVkVSVF9OT05FOiAwLCAvLyE8IE5vIGNvbnZlcnNpb246IGludGVn
ZXIgdHlwZXMsIG9yIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KKyAgICBWVFhfQ09NUF9DT05WRVJU
X05PUk1BTElaRV9UT19GTE9BVDogMSwgLy8hPCBOb3JtYWxpemUgaW50ZWdlcnMgdG8gcmFuZ2Ug
WzAsMV0gb3IgWy0xLDFdIGRlcGVuZGluZyBvbiB0eXBlLgorICAgIFZUWF9DT01QX0NPTlZFUlRf
Q0FTVF9UT19GTE9BVDogMiAvLyE8IENvbnZlcnQgdG8gZmxvYXRpbmctcG9pbnQgZGlyZWN0bHku
Cit9OworCisvKioKKyAqIGdsdURyYXdVdGlsLlZlcnRleEFycmF5UG9pbnRlcgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge2dsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudFR5cGV9IGNvbXBv
bmVudFR5cGVfCisgKiBAcGFyYW0ge2dsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNp
b259IGNvbnZlcnRfCisgKiBAcGFyYW0ge251bWJlcn0gbnVtQ29tcG9uZW50c18KKyAqIEBwYXJh
bSB7bnVtYmVyfSBudW1FbGVtZW50c18KKyAqIEBwYXJhbSB7bnVtYmVyfSBzdHJpZGVfCisgKiBA
Y29uc3QgQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkYXRhXworICovCitnbHVEcmF3VXRpbC5WZXJ0
ZXhBcnJheVBvaW50ZXIgPSBmdW5jdGlvbihjb21wb25lbnRUeXBlXywgY29udmVydF8sIG51bUNv
bXBvbmVudHNfLCBudW1FbGVtZW50c18sIHN0cmlkZV8sIGRhdGFfKSB7CisgICAgdGhpcy5jb21w
b25lbnRUeXBlID0gY29tcG9uZW50VHlwZV87CisgICAgdGhpcy5jb252ZXJ0ID0gY29udmVydF87
CisgICAgdGhpcy5udW1Db21wb25lbnRzID0gbnVtQ29tcG9uZW50c187CisgICAgdGhpcy5udW1F
bGVtZW50cyA9IG51bUVsZW1lbnRzXzsKKyAgICB0aGlzLnN0cmlkZSA9IHN0cmlkZV87CisgICAg
dGhpcy5kYXRhID0gZGF0YV87Cit9OworCisvKioKKyAqIGdsdURyYXdVdGlsLkJpbmRpbmdQb2lu
dAorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtu
dW1iZXJ9IGxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldAorICovCitnbHVEcmF3
VXRpbC5CaW5kaW5nUG9pbnQgPSBmdW5jdGlvbihuYW1lLCBsb2NhdGlvbiwgb2Zmc2V0KSB7Cisg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5vZmZzZXQgPSBvZmZzZXQgfHwgMDsKK307CisKKy8qKgorICogYmluZGlu
Z1BvaW50RnJvbUxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAqIHJldHVy
biB7Z2x1RHJhd1V0aWwuQmluZGluZ1BvaW50fQorICovCitnbHVEcmF3VXRpbC5iaW5kaW5nUG9p
bnRGcm9tTG9jYXRpb24gPSBmdW5jdGlvbihsb2NhdGlvbikgeworICAgIHJldHVybiBuZXcgZ2x1
RHJhd1V0aWwuQmluZGluZ1BvaW50KCcnLCBsb2NhdGlvbik7Cit9OworCisvKioKKyAqIGJpbmRp
bmdQb2ludEZyb21OYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtudW1i
ZXI9fSBsb2NhdGlvbgorICogcmV0dXJuIHtnbHVEcmF3VXRpbC5CaW5kaW5nUG9pbnR9CisgKi8K
K2dsdURyYXdVdGlsLmJpbmRpbmdQb2ludEZyb21OYW1lID0gZnVuY3Rpb24obmFtZSwgbG9jYXRp
b24pIHsKKyAgICBsb2NhdGlvbiA9IGxvY2F0aW9uID09PSB1bmRlZmluZWQgPyAtMSA6IGxvY2F0
aW9uOworICAgIHJldHVybiBuZXcgZ2x1RHJhd1V0aWwuQmluZGluZ1BvaW50KG5hbWUsIGxvY2F0
aW9uKTsKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7bnVt
YmVyfSBudW1Db21wb25lbnRzCisgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAqIEBw
YXJhbSB7bnVtYmVyfSBzdHJpZGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGF0YQorICog
QHJldHVybiB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfQorICovCitnbHVEcmF3VXRp
bC5uZXdJbnQzMlZlcnRleEFycmF5QmluZGluZyA9IGZ1bmN0aW9uKG5hbWUsIG51bUNvbXBvbmVu
dHMsIG51bUVsZW1lbnRzLCBzdHJpZGUsIGRhdGEpIHsKKyAgICB2YXIgYmluZGluZ1BvaW50ID0g
Z2x1RHJhd1V0aWwuYmluZGluZ1BvaW50RnJvbU5hbWUobmFtZSk7CisgICAgdmFyIGFycmF5UG9p
bnRlciA9IG5ldyBnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheVBvaW50ZXIoZ2x1RHJhd1V0aWwuVmVy
dGV4Q29tcG9uZW50VHlwZS5WVFhfQ09NUF9TSUdORURfSU5UMzIsCisgICAgICAgIGdsdURyYXdV
dGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24uVlRYX0NPTVBfQ09OVkVSVF9OT05FLCBudW1D
b21wb25lbnRzLCBudW1FbGVtZW50cywgc3RyaWRlLCBkYXRhKTsKKyAgICByZXR1cm4gZ2x1RHJh
d1V0aWwudmFiRnJvbUJpbmRpbmdQb2ludEFuZEFycmF5UG9pbnRlcihiaW5kaW5nUG9pbnQsIGFy
cmF5UG9pbnRlciwgZ2wuSU5UKTsKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7bnVtYmVyfSBudW1Db21wb25lbnRzCisgKiBAcGFyYW0ge251bWJlcn0gbnVt
RWxlbWVudHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBzdHJpZGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gZGF0YQorICogQHJldHVybiB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfQor
ICovCitnbHVEcmF3VXRpbC5uZXdVaW50MzJWZXJ0ZXhBcnJheUJpbmRpbmcgPSBmdW5jdGlvbihu
YW1lLCBudW1Db21wb25lbnRzLCBudW1FbGVtZW50cywgc3RyaWRlLCBkYXRhKSB7CisgICAgdmFy
IGJpbmRpbmdQb2ludCA9IGdsdURyYXdVdGlsLmJpbmRpbmdQb2ludEZyb21OYW1lKG5hbWUpOwor
ICAgIHZhciBhcnJheVBvaW50ZXIgPSBuZXcgZ2x1RHJhd1V0aWwuVmVydGV4QXJyYXlQb2ludGVy
KGdsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudFR5cGUuVlRYX0NPTVBfVU5TSUdORURfSU5UMzIs
CisgICAgICAgIGdsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24uVlRYX0NPTVBf
Q09OVkVSVF9OT05FLCBudW1Db21wb25lbnRzLCBudW1FbGVtZW50cywgc3RyaWRlLCBkYXRhKTsK
KyAgICByZXR1cm4gZ2x1RHJhd1V0aWwudmFiRnJvbUJpbmRpbmdQb2ludEFuZEFycmF5UG9pbnRl
cihiaW5kaW5nUG9pbnQsIGFycmF5UG9pbnRlciwgZ2wuVU5TSUdORURfSU5UKTsKK307CisKKy8q
KgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1Db21wb25l
bnRzCisgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAqIEBwYXJhbSB7bnVtYmVyfSBz
dHJpZGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGF0YQorICogQHJldHVybiB7Z2x1RHJh
d1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfQorICovCitnbHVEcmF3VXRpbC5uZXdGbG9hdFZlcnRl
eEFycmF5QmluZGluZyA9IGZ1bmN0aW9uKG5hbWUsIG51bUNvbXBvbmVudHMsIG51bUVsZW1lbnRz
LCBzdHJpZGUsIGRhdGEpIHsKKyAgICB2YXIgYmluZGluZ1BvaW50ID0gZ2x1RHJhd1V0aWwuYmlu
ZGluZ1BvaW50RnJvbU5hbWUobmFtZSk7CisgICAgdmFyIGFycmF5UG9pbnRlciA9IG5ldyBnbHVE
cmF3VXRpbC5WZXJ0ZXhBcnJheVBvaW50ZXIoZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50VHlw
ZS5WVFhfQ09NUF9GTE9BVCwKKyAgICAgICAgZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50Q29u
dmVyc2lvbi5WVFhfQ09NUF9DT05WRVJUX05PTkUsIG51bUNvbXBvbmVudHMsIG51bUVsZW1lbnRz
LCBzdHJpZGUsIGRhdGEpOworICAgIHJldHVybiBnbHVEcmF3VXRpbC52YWJGcm9tQmluZGluZ1Bv
aW50QW5kQXJyYXlQb2ludGVyKGJpbmRpbmdQb2ludCwgYXJyYXlQb2ludGVyKTsKK307CisKKy8q
KgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4KKyAq
IEBwYXJhbSB7bnVtYmVyfSByb3dzCisgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAq
IEBwYXJhbSB7bnVtYmVyfSBzdHJpZGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGF0YQor
ICogQHJldHVybiB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfQorICovCitnbHVEcmF3
VXRpbC5uZXdGbG9hdENvbHVtblZlcnRleEFycmF5QmluZGluZyA9IGZ1bmN0aW9uKG5hbWUsIGNv
bHVtbiwgcm93cywgbnVtRWxlbWVudHMsIHN0cmlkZSwgZGF0YSkgeworICAgIHZhciBiaW5kaW5n
UG9pbnQgPSBnbHVEcmF3VXRpbC5iaW5kaW5nUG9pbnRGcm9tTmFtZShuYW1lKTsKKyAgICBiaW5k
aW5nUG9pbnQubG9jYXRpb24gPSBjb2x1bW47CisgICAgdmFyIGFycmF5UG9pbnRlciA9IG5ldyBn
bHVEcmF3VXRpbC5WZXJ0ZXhBcnJheVBvaW50ZXIoZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50
VHlwZS5WVFhfQ09NUF9GTE9BVCwKKyAgICAgICAgZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50
Q29udmVyc2lvbi5WVFhfQ09NUF9DT05WRVJUX05PTkUsIHJvd3MsIG51bUVsZW1lbnRzLCBzdHJp
ZGUsIGRhdGEpOworICAgIHJldHVybiBnbHVEcmF3VXRpbC52YWJGcm9tQmluZGluZ1BvaW50QW5k
QXJyYXlQb2ludGVyKGJpbmRpbmdQb2ludCwgYXJyYXlQb2ludGVyKTsKK307CisKK30pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mcmFtZXdvcmsvb3BlbmdsL2dsdU9iamVjdFdyYXBwZXIuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1T2Jq
ZWN0V3JhcHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGY4YTI4ZjljNWRiNmZkNDIzNGEwYWRmOTljMGQ5
OGQ2ZmQwNGJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdU9iamVjdFdyYXBwZXIu
anMKQEAgLTAsMCArMSwxMTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRz
IFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBU
aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworJ3VzZSBzdHJpY3QnOwor
Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1T2JqZWN0V3JhcHBlcicpOworCitn
b29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAgIHZhciBnbHVPYmplY3RXcmFwcGVyID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVPYmplY3RXcmFwcGVyOworCisgICAgLyoqCisgICAgKiBAdHlwZWRlZiB7
ZnVuY3Rpb24odGhpczpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKTogV2ViR0xPYmplY3R9Cisg
ICAgKi8KKyAgICBnbHVPYmplY3RXcmFwcGVyLmZ1bmNHZW5UOworCisgICAgLyoqCisgICAgKiBA
dHlwZWRlZiB7ZnVuY3Rpb24odGhpczpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLCBXZWJHTE9i
amVjdCl9CisgICAgKi8KKyAgICBnbHVPYmplY3RXcmFwcGVyLmZ1bmNEZWxUOworCisgICAgLyoq
CisgICAgKiBAdHlwZWRlZiB7e25hbWU6IHN0cmluZywgZnVuY0dlbjogIWdsdU9iamVjdFdyYXBw
ZXIuZnVuY0dlblQsIGZ1bmNEZWw6ICFnbHVPYmplY3RXcmFwcGVyLmZ1bmNEZWxUfX0KKyAgICAq
LworICAgIGdsdU9iamVjdFdyYXBwZXIudHJhaXRzVDsKKworICAgIC8qKgorICAgICogUmV0dXJu
cyBhbiBvYmplY3QgY29udGFpbmluZyBhIGNvbmZpZ3VyYXRpb24gZm9yIGFuIE9iamVjdFdyYXBw
ZXIKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge2dsdU9iamVjdFdy
YXBwZXIuZnVuY0dlblR9IGZ1bmNHZW4KKyAgICAqIEBwYXJhbSB7Z2x1T2JqZWN0V3JhcHBlci5m
dW5jRGVsVH0gZnVuY0RlbAorICAgICogQHJldHVybiB7Z2x1T2JqZWN0V3JhcHBlci50cmFpdHNU
fQorICAgICovCisgICAgZ2x1T2JqZWN0V3JhcHBlci50cmFpdHMgPSBmdW5jdGlvbihuYW1lLCBm
dW5jR2VuLCBmdW5jRGVsKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBuYW1lOiBu
YW1lLAorICAgICAgICAgICAgZnVuY0dlbjogZnVuY0dlbiwKKyAgICAgICAgICAgIGZ1bmNEZWw6
IGZ1bmNEZWwKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0
b3IKKyAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKKyAgICAqIEBw
YXJhbSB7Z2x1T2JqZWN0V3JhcHBlci50cmFpdHNUfSB0cmFpdHMKKyAgICAqLworICAgIGdsdU9i
amVjdFdyYXBwZXIuT2JqZWN0V3JhcHBlciA9IGZ1bmN0aW9uKGdsLCB0cmFpdHMpIHsKKyAgICAg
ICAgLyoqCisgICAgICAgICogQHByb3RlY3RlZAorICAgICAgICAqIEB0eXBlIHtXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlfQorICAgICAgICAqLworICAgICAgICB0aGlzLm1fZ2wgPSBnbDsKKwor
ICAgICAgICAvKioKKyAgICAgICAgKiBAcHJvdGVjdGVkCisgICAgICAgICogQHR5cGUge2dsdU9i
amVjdFdyYXBwZXIudHJhaXRzVH0KKyAgICAgICAgKi8KKyAgICAgICAgdGhpcy5tX3RyYWl0cyA9
IHRyYWl0czsKKworICAgICAgICAvKioKKyAgICAgICAgKiBAcHJvdGVjdGVkCisgICAgICAgICog
QHR5cGUge1dlYkdMT2JqZWN0fQorICAgICAgICAqLworICAgICAgICB0aGlzLm1fb2JqZWN0ID0g
dGhpcy5tX3RyYWl0cy5mdW5jR2VuLmNhbGwoZ2wpOworCisgICAgfTsKKworICAgIC8qKgorICAg
ICogRGVzdG9yeXMgdGhlIFdlYkdMT2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4K
KyAgICAqLworICAgIGdsdU9iamVjdFdyYXBwZXIuT2JqZWN0V3JhcHBlci5wcm90b3R5cGUuY2xl
YXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX3RyYWl0cy5mdW5jRGVsLmNhbGwodGhp
cy5tX2dsLCB0aGlzLm1fb2JqZWN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBSZXR1cm5z
IHRoZSBXZWJHTE9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuCisgICAgKiBAcmV0
dXJuIHtXZWJHTE9iamVjdH0KKyAgICAqLworICAgIGdsdU9iamVjdFdyYXBwZXIuT2JqZWN0V3Jh
cHBlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1f
b2JqZWN0OworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICogQGV4
dGVuZHMge2dsdU9iamVjdFdyYXBwZXIuT2JqZWN0V3JhcHBlcn0KKyAgICAqIEBwYXJhbSB7V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKKyAgICAqLworICAgIGdsdU9iamVjdFdyYXBwZXIu
RnJhbWVidWZmZXIgPSBmdW5jdGlvbihnbCkgeworICAgICAgICBnbHVPYmplY3RXcmFwcGVyLk9i
amVjdFdyYXBwZXIuY2FsbCh0aGlzLCBnbCwgZ2x1T2JqZWN0V3JhcHBlci50cmFpdHMoCisgICAg
ICAgICAgICAnZnJhbWVidWZmZXInLAorICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVPYmplY3RX
cmFwcGVyLmZ1bmNHZW5UfSAqLyhnbC5jcmVhdGVGcmFtZWJ1ZmZlciksCisgICAgICAgICAgICAv
KiogQHR5cGUge2dsdU9iamVjdFdyYXBwZXIuZnVuY0RlbFR9ICovKGdsLmRlbGV0ZUZyYW1lYnVm
ZmVyKQorICAgICAgICApKTsKKyAgICB9OworICAgIGdsdU9iamVjdFdyYXBwZXIuRnJhbWVidWZm
ZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHVPYmplY3RXcmFwcGVyLk9iamVjdFdyYXBw
ZXIucHJvdG90eXBlKTsKKyAgICBnbHVPYmplY3RXcmFwcGVyLkZyYW1lYnVmZmVyLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGdsdU9iamVjdFdyYXBwZXIuRnJhbWVidWZmZXI7CisKKyAgICAvKioK
KyAgICAqIEByZXR1cm4ge1dlYkdMRnJhbWVidWZmZXJ9CisgICAgKi8KKyAgICBnbHVPYmplY3RX
cmFwcGVyLkZyYW1lYnVmZmVyLnByb3RvdHlwZS5nZXQ7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29w
ZW5nbC9nbHVQaXhlbFRyYW5zZmVyLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdVBpeGVsVHJhbnNmZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDRiODFhMmExYThlYTBlNWJlNzliYzQwZmNlNjI1YjUyMTQwNmRiZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVQaXhlbFRyYW5zZmVyLmpzCkBAIC0wLDAgKzEs
NTUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3Jh
bSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUo
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1UGl4ZWxUcmFuc2ZlcicpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIGdsdVBpeGVsVHJh
bnNmZXIgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVBpeGVsVHJhbnNmZXI7Cit2YXIgdGN1VGV4dHVy
ZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgZ2x1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsub3Bl
bmdsLmdsdVRleHR1cmVVdGlsOworCitnbHVQaXhlbFRyYW5zZmVyLmdldFRyYW5zZmVyQWxpZ25t
ZW50ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgdmFyIHBpeGVsU2l6ZSA9IGZvcm1hdC5nZXRQ
aXhlbFNpemUoKTsKKyAgICBpZiAoZGVNYXRoLmRlSXNQb3dlck9mVHdvMzIocGl4ZWxTaXplKSkK
KyAgICAgICAgcmV0dXJuIE1hdGgubWluKHBpeGVsU2l6ZSwgOCk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gMTsKK307CisKK2dsdVBpeGVsVHJhbnNmZXIucmVhZFBpeGVscyA9IGZ1bmN0aW9u
KGN0eCwgeCwgeSwgZm9ybWF0LCBkc3QpIHsKKyAgICB2YXIgd2lkdGggPSBkc3QuZ2V0V2lkdGgo
KTsKKyAgICB2YXIgaGVpZ2h0ID0gZHN0LmdldEhlaWdodCgpOworICAgIHZhciBhcnJheVR5cGUg
PSB0Y3VUZXh0dXJlLmdldFR5cGVkQXJyYXkoZm9ybWF0LnR5cGUpOworICAgIHZhciB0cmFuc2Zl
ckZvcm1hdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KGZvcm1hdCk7CisgICAg
Y3R4LnBpeGVsU3RvcmVpKGN0eC5QQUNLX0FMSUdOTUVOVCwgZ2x1UGl4ZWxUcmFuc2Zlci5nZXRU
cmFuc2ZlckFsaWdubWVudChmb3JtYXQpKTsKKyAgICB2YXIgcmVzdWx0UGl4ZWwgPSBkc3QuZ2V0
QWNjZXNzKCkuZ2V0RGF0YVB0cigpOworICAgIHJlc3VsdFBpeGVsID0gbmV3IGFycmF5VHlwZShk
c3QuZ2V0QWNjZXNzKCkuZ2V0QnVmZmVyKCkpOworICAgIGN0eC5yZWFkUGl4ZWxzKHgsIHksIHdp
ZHRoLCBoZWlnaHQsIHRyYW5zZmVyRm9ybWF0LmZvcm1hdCwgdHJhbnNmZXJGb3JtYXQuZGF0YVR5
cGUsIHJlc3VsdFBpeGVsKTsKK307CisKKy8qIFRPRE86IGltcGxlbWVudCBvdGhlciBmdW5jdGlv
bnMgaW4gQysrIGZpbGUgKi8KKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1U2hhZGVy
UHJvZ3JhbS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVTaGFkZXJQcm9ncmFtLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBj
MzQwZWUzODA5NDZiOTM1Y2M3MzU5MGY5OTEzODMyNmYxYWE2ZDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1l
d29yay9vcGVuZ2wvZ2x1U2hhZGVyUHJvZ3JhbS5qcwpAQCAtMCwwICsxLDQ4OCBAQAorLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBnbHVTaGFkZXJQcm9ncmFtLlBy
b2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92
aWRlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKKworZ29vZy5zY29wZShm
dW5jdGlvbigpIHsKKwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclByb2dyYW07CisKKy8qKgorICogZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXIgdHlwZSBl
bnVtCisgKiBAZW51bSB7bnVtYmVyfQorICovCitnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUg
PSB7CisgICAgVkVSVEVYOiAwLAorICAgIEZSQUdNRU5UOiAxCit9OworCisvKioKKyAqIGdsdVNo
YWRlclByb2dyYW0uU2hhZGVyIHR5cGUgZW51bSBuYW1lCisgKiBAcGFyYW0ge2dsdVNoYWRlclBy
b2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICogQHJldHVybiB7c3RyaW5nfQorICovCitn
bHVTaGFkZXJQcm9ncmFtLmdldFNoYWRlclR5cGVOYW1lID0gZnVuY3Rpb24oc2hhZGVyVHlwZSkg
eworICAgIHZhciBzX25hbWVzID0KKyAgICBbCisgICAgICAgICd2ZXJ0ZXgnLAorICAgICAgICAn
ZnJhZ21lbnQnCisgICAgXTsKKworICAgIHJldHVybiBzX25hbWVzW3NoYWRlclR5cGVdOworfTsK
KworLyoqCisgKiBHZXQgR0wgc2hhZGVyIHR5cGUgZnJvbSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRl
clR5cGUKKyAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wgV2ViR0wgY29udGV4
dAorICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHR5cGUgZ2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXIgVHlwZQorICogQHJldHVybiB7bnVtYmVyfSBHTCBzaGFkZXIgdHlwZQor
ICovCitnbHVTaGFkZXJQcm9ncmFtLmdldEdMU2hhZGVyVHlwZSA9IGZ1bmN0aW9uKGdsLCB0eXBl
KSB7CisgICAgdmFyIF9nbFNoYWRlclR5cGU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYOiBfZ2xTaGFkZXJUeXBlID0gZ2wu
VkVSVEVYX1NIQURFUjsgYnJlYWs7CisgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGUuRlJBR01FTlQ6IF9nbFNoYWRlclR5cGUgPSBnbC5GUkFHTUVOVF9TSEFERVI7IGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzaGFkZXIgdHlw
ZSAnICsgdHlwZSk7CisgICAgfQorICAgIHJldHVybiBfZ2xTaGFkZXJUeXBlOworfTsKKworLyoq
CisgKiBEZWNsYXJlcyBzaGFkZXIgaW5mb3JtYXRpb24KKyAqIEBjb25zdHJ1Y3RvcgorICogQHBh
cmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHR5cGUKKyAqIEBwYXJhbSB7c3RyaW5n
PX0gc291cmNlCisgKi8KK2dsdVNoYWRlclByb2dyYW0uU2hhZGVySW5mbyA9IGZ1bmN0aW9uKHR5
cGUsIHNvdXJjZSkgeworICAgIHRoaXMudHlwZSA9IHR5cGU7IC8qKiBnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlciB0eXBlLiAqLworICAgIHRoaXMuc291cmNlID0gc291cmNlOyAvKiogZ2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXIgc291cmNlLiAqLworICAgIHRoaXMuaW5mb0xvZzsgLyoqIENvbXBpbGUg
aW5mbyBsb2cuICovCisgICAgdGhpcy5jb21waWxlT2sgPSBmYWxzZTsgLyoqIERpZCBjb21waWxh
dGlvbiBzdWNjZWVkPyAqLworICAgIHRoaXMuY29tcGlsZVRpbWVVcyA9IDA7IC8qKiBDb21waWxl
IHRpbWUgaW4gbWljcm9zZWNvbmRzICh1cykuICovCit9OworCisvKioKKyAqIEdlbmVyYXRlcyB2
ZXJ0ZXggc2hhZGVyIGluZm8gZnJvbSBzb3VyY2UKKyAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UK
KyAqIEByZXR1cm4ge2dsdVNoYWRlclByb2dyYW0uU2hhZGVySW5mb30gdmVydGV4IHNoYWRlciBp
bmZvCisgKi8KK2dsdVNoYWRlclByb2dyYW0uZ2VuVmVydGV4U291cmNlID0gZnVuY3Rpb24oc291
cmNlKSB7CisvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVySW5mb30gKi8gdmFyIHNo
YWRlciA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlckluZm8oZ2x1U2hhZGVyUHJvZ3JhbS5z
aGFkZXJUeXBlLlZFUlRFWCwgc291cmNlKTsKKyAgICByZXR1cm4gc2hhZGVyOworfTsKKworLyoq
CisgKiBHZW5lcmF0ZXMgZnJhZ21lbnQgc2hhZGVyIGluZm8gZnJvbSBzb3VyY2UKKyAqIEBwYXJh
bSB7c3RyaW5nfSBzb3VyY2UKKyAqIEByZXR1cm4ge2dsdVNoYWRlclByb2dyYW0uU2hhZGVySW5m
b30gZnJhZ21lbnQgc2hhZGVyIGluZm8KKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5nZW5GcmFnbWVu
dFNvdXJjZSA9IGZ1bmN0aW9uKHNvdXJjZSkgeworLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlckluZm99ICovIHZhciBzaGFkZXIgPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJJ
bmZvKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCwgc291cmNlKTsKKyAgICBy
ZXR1cm4gc2hhZGVyOworfTsKKworLyoqCisgKiBHZW5lcmF0ZXMgc2hhZGVyIGZyb20gV2ViR0wg
Y29udGV4dCBhbmQgdHlwZQorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkdMMlJlbmRl
cmluZ0NvbnRleHR9IGdsIFdlYkdMIGNvbnRleHQKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3Jh
bS5zaGFkZXJUeXBlfSB0eXBlIGdsdVNoYWRlclByb2dyYW0uU2hhZGVyIFR5cGUKKyAqLworZ2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXIgPSBmdW5jdGlvbihnbCwgdHlwZSkgeworICAgIHRoaXMuZ2wg
PSBnbDsKKyAgICB0aGlzLmluZm8gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJJbmZvKHR5
cGUpOyAvKiogQ2xpZW50LXNpZGUgY2xvbmUgb2Ygc3RhdGUgZm9yIGRlYnVnIC8gcGVyZiByZWFz
b25zLiAqLworICAgIHRoaXMuc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsdVNoYWRlclByb2dy
YW0uZ2V0R0xTaGFkZXJUeXBlKGdsLCB0eXBlKSk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5n
ZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLCAnZ2wuY3JlYXRlU2hhZGVyKCknLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICB0aGlzLnNldFNvdXJjZXMgPSBmdW5jdGlvbihzb3VyY2UpIHsKKyAgICAgICAg
dGhpcy5nbC5zaGFkZXJTb3VyY2UodGhpcy5zaGFkZXIsIHNvdXJjZSk7CisgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnModGhpcy5nbC5nZXRFcnJvcigpID09IHRoaXMuZ2wuTk9fRVJST1IsICdnbHNo
YWRlclNvdXJjZSgpJywgZmFsc2UsIHRydWUpOworICAgICAgICB0aGlzLmluZm8uc291cmNlID0g
c291cmNlOworICAgIH07CisKKyAgICB0aGlzLmdldENvbXBpbGVTdGF0dXMgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5jb21waWxlT2s7CisgICAgfTsKKworICAgIHRo
aXMuY29tcGlsZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmluZm8uY29tcGlsZU9rID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuaW5mby5jb21waWxlVGltZVVzID0gMDsKKyAgICAgICAgdGhp
cy5pbmZvLmluZm9Mb2cgPSAnJzsKKworICAgICAgICAvKiogQHR5cGUge0RhdGV9ICovIHZhciBj
b21waWxlU3RhcnQgPSBuZXcgRGF0ZSgpOworICAgICAgICB0aGlzLmdsLmNvbXBpbGVTaGFkZXIo
dGhpcy5zaGFkZXIpOworICAgICAgICAvKiogQHR5cGUge0RhdGV9ICovIHZhciBjb21waWxlRW5k
ID0gbmV3IERhdGUoKTsKKyAgICAgICAgdGhpcy5pbmZvLmNvbXBpbGVUaW1lVXMgPSAxMDAwICog
KGNvbXBpbGVFbmQuZ2V0VGltZSgpIC0gY29tcGlsZVN0YXJ0LmdldFRpbWUoKSk7CisKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLmdsLmdldEVycm9yKCkgPT0gdGhpcy5nbC5OT19FUlJP
UiwgJ2dsLmNvbXBpbGVTaGFkZXIoKScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgY29t
cGlsZVN0YXR1cyA9IHRoaXMuZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHRoaXMuc2hhZGVyLCB0aGlz
LmdsLkNPTVBJTEVfU1RBVFVTKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLmdsLmdl
dEVycm9yKCkgPT0gdGhpcy5nbC5OT19FUlJPUiwgJ2dsR2V0U2hhZGVyUGFyYW1ldGVyKCknLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdGhpcy5pbmZvLmNvbXBpbGVPayA9IGNvbXBpbGVTdGF0
dXM7CisgICAgICAgIHRoaXMuaW5mby5pbmZvTG9nID0gdGhpcy5nbC5nZXRTaGFkZXJJbmZvTG9n
KHRoaXMuc2hhZGVyKTsKKyAgICB9OworCisgICAgdGhpcy5nZXRTaGFkZXIgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2hhZGVyOworICAgIH07CisKKyAgICB0aGlzLmRlc3Ry
b3kgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5nbC5kZWxldGVTaGFkZXIodGhpcy5zaGFk
ZXIpOworICAgIH07CisKK307CisvKioKKyAqIENyZWF0ZXMgZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9n
cmFtSW5mbworICogQGNvbnN0cnVjdG9yCisgKi8KK2dsdVNoYWRlclByb2dyYW0uUHJvZ3JhbUlu
Zm8gPSBmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gIHRoaXMuaW5mb0xv
ZyA9ICcnOyAvKiogTGluayBpbmZvIGxvZy4gKi8KKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHRoaXMubGlua09rID0gZmFsc2U7IC8qKiBEaWQgbGluayBzdWNjZWVkPyAqLworICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLmxpbmtUaW1lVXMgPSAwOyAvKiogTGluayB0aW1lIGluIG1p
Y3Jvc2Vjb25kcyAodXMpLiAqLworfTsKKworLyoqCisgKiBDcmVhdGVzIHByb2dyYW0uCisgKiBJ
bm5lciBtZXRob2RzOiBhdHRhY2ggc2hhZGVycywgYmluZCBhdHRyaWJ1dGVzIGxvY2F0aW9uLCBs
aW5rIHByb2dyYW0gYW5kIHRyYW5zZm9ybSBGZWVkYmFjayBWYXJ5aW5ncworICogQGNvbnN0cnVj
dG9yCisgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGdsIFdlYkdMIGNvbnRleHQK
KyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtPX0gcHJvZ3JhbUlECisgKi8KK2dsdVNoYWRlclByb2dy
YW0uUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsLCBwcm9ncmFtSUQpIHsKKyAgICB0aGlzLmdsID0gZ2w7
CisgICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbUlEIHx8IG51bGw7CisgICAgdGhpcy5pbmZvID0g
bmV3IGdsdVNoYWRlclByb2dyYW0uUHJvZ3JhbUluZm8oKTsKKworICAgIGlmICghcHJvZ3JhbUlE
KSB7CisgICAgICAgIHRoaXMucHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLCAnZ2wuY3JlYXRl
UHJvZ3JhbSgpJywgZmFsc2UsIHRydWUpOworICAgIH0KK307CisKKy8qKgorICogQHJldHVybiB7
V2ViR0xQcm9ncmFtfQorICovCitnbHVTaGFkZXJQcm9ncmFtLlByb2dyYW0ucHJvdG90eXBlLmdl
dFByb2dyYW0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMucHJvZ3JhbTsgfTsKKworLyoqCisg
KiBAcmV0dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlByb2dyYW1JbmZvfQorICovCitnbHVTaGFkZXJQ
cm9ncmFtLlByb2dyYW0ucHJvdG90eXBlLmdldEluZm8gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMuaW5mbzsgfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU2hhZGVyfSBzaGFkZXIKKyAqLwor
Z2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtLnByb3RvdHlwZS5hdHRhY2hTaGFkZXIgPSBmdW5jdGlv
bihzaGFkZXIpIHsKKyAgICB0aGlzLmdsLmF0dGFjaFNoYWRlcih0aGlzLnByb2dyYW0sIHNoYWRl
cik7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLmdsLmdldEVycm9yKCkgPT0gdGhpcy5nbC5O
T19FUlJPUiwgJ2dsLmF0dGFjaFNoYWRlcigpJywgZmFsc2UsIHRydWUpOworfTsKKworLyoqCisg
KiBAcGFyYW0ge1dlYkdMU2hhZGVyfSBzaGFkZXIKKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9n
cmFtLnByb3RvdHlwZS5kZXRhY2hTaGFkZXIgPSBmdW5jdGlvbihzaGFkZXIpIHsKKyAgICB0aGlz
LmdsLmRldGFjaFNoYWRlcih0aGlzLnByb2dyYW0sIHNoYWRlcik7CisgICAgYXNzZXJ0TXNnT3B0
aW9ucyh0aGlzLmdsLmdldEVycm9yKCkgPT0gdGhpcy5nbC5OT19FUlJPUiwgJ2dsLmRldGFjaFNo
YWRlcigpJywgZmFsc2UsIHRydWUpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbG9j
YXRpb24KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKi8KK2dsdVNoYWRlclByb2dyYW0uUHJv
Z3JhbS5wcm90b3R5cGUuYmluZEF0dHJpYkxvY2F0aW9uID0gZnVuY3Rpb24obG9jYXRpb24sIG5h
bWUpIHsKKyAgICB0aGlzLmdsLmJpbmRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sIGxvY2F0
aW9uLCBuYW1lKTsKKyAgICBhc3NlcnRNc2dPcHRpb25zKHRoaXMuZ2wuZ2V0RXJyb3IoKSA9PSB0
aGlzLmdsLk5PX0VSUk9SLCAnZ2wuYmluZEF0dHJpYkxvY2F0aW9uKCknLCBmYWxzZSwgdHJ1ZSk7
Cit9OworCitnbHVTaGFkZXJQcm9ncmFtLlByb2dyYW0ucHJvdG90eXBlLmxpbmsgPSBmdW5jdGlv
bigpIHsKKyAgICB0aGlzLmluZm8ubGlua09rID0gZmFsc2U7CisgICAgdGhpcy5pbmZvLmxpbmtU
aW1lVXMgPSAwOworICAgIHRoaXMuaW5mby5pbmZvTG9nID0gJyc7CisKKyAgICAvKiogQHR5cGUg
e0RhdGV9ICovIHZhciBsaW5rU3RhcnQgPSBuZXcgRGF0ZSgpOworICAgIHRoaXMuZ2wubGlua1By
b2dyYW0odGhpcy5wcm9ncmFtKTsKKyAgICAvKiogQHR5cGUge0RhdGV9ICovIHZhciBsaW5rRW5k
ID0gbmV3IERhdGUoKTsKKyAgICB0aGlzLmluZm8ubGlua1RpbWVVcyA9IDEwMDAgKiAobGlua0Vu
ZC5nZXRUaW1lKCkgLSBsaW5rU3RhcnQuZ2V0VGltZSgpKTsKKworICAgIGFzc2VydE1zZ09wdGlv
bnModGhpcy5nbC5nZXRFcnJvcigpID09IHRoaXMuZ2wuTk9fRVJST1IsICdnbC5saW5rUHJvZ3Jh
bSgpJywgZmFsc2UsIHRydWUpOworCisgICAgdmFyIGxpbmtTdGF0dXMgPSB0aGlzLmdsLmdldFBy
b2dyYW1QYXJhbWV0ZXIodGhpcy5wcm9ncmFtLCB0aGlzLmdsLkxJTktfU1RBVFVTKTsKKyAgICBh
c3NlcnRNc2dPcHRpb25zKHRoaXMuZ2wuZ2V0RXJyb3IoKSA9PSB0aGlzLmdsLk5PX0VSUk9SLCAn
Z2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcigpJywgZmFsc2UsIHRydWUpOworICAgIHRoaXMuaW5mby5s
aW5rT2sgPSBsaW5rU3RhdHVzOworICAgIHRoaXMuaW5mby5pbmZvTG9nID0gdGhpcy5nbC5nZXRQ
cm9ncmFtSW5mb0xvZyh0aGlzLnByb2dyYW0pOworICAgIGlmICghdGhpcy5pbmZvLmxpbmtPaykK
KyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoInByb2dyYW0gbGlua2luZzogIiArIHRoaXMu
aW5mby5pbmZvTG9nKTsKK307CisKKy8qKgorICogcmV0dXJuIHtib29sZWFufQorICovCitnbHVT
aGFkZXJQcm9ncmFtLlByb2dyYW0ucHJvdG90eXBlLmdldExpbmtTdGF0dXMgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gdGhpcy5pbmZvLmxpbmtPazsKK307CisKKy8qKgorICogQHBhcmFtIHtB
cnJheTxzdHJpbmc+fSB2YXJ5aW5ncworICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlck1vZGUKKyAq
LworZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtLnByb3RvdHlwZS50cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzID0gZnVuY3Rpb24odmFyeWluZ3MsIGJ1ZmZlck1vZGUpIHsKKyAgICB0aGlzLmdsLnRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModGhpcy5wcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9k
ZSk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLmdsLmdldEVycm9yKCkgPT0gdGhpcy5nbC5O
T19FUlJPUiwgJ2dsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKScsIGZhbHNlLCB0cnVlKTsK
K307CisKKy8qKgorICogQXNzaWducyBnbCBXZWJHTCBjb250ZXh0IGFuZCBwcm9ncmFtU291cmNl
cy4gRGVjbGFyZXMgYXJyYXkgb2Ygc2hhZGVycyBhbmQgbmV3IHByb2dyYW0oKQorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGdsIFdlYkdMIGNvbnRl
eHQKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtU291cmNlc30gcHJvZ3JhbVNv
dXJjZXMKKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtID0gZnVuY3Rpb24oZ2ws
IHByb2dyYW1Tb3VyY2VzKSB7CisgICAgdGhpcy5nbCA9IGdsOworICAgIHRoaXMucHJvZ3JhbVNv
dXJjZXMgPSBwcm9ncmFtU291cmNlczsKKyAgICB0aGlzLnNoYWRlcnMgPSBbXTsKKyAgICB0aGlz
LnByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtKGdsKTsKKworICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5zaGFkZXJzT0sgPSB0cnVlOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwcm9ncmFtU291cmNlcy5zb3VyY2VzLmxlbmd0aDsgaSsrKSB7CisgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlcn0gKi8gdmFyIHNoYWRlciA9IG5ldyBnbHVT
aGFkZXJQcm9ncmFtLlNoYWRlcihnbCwgcHJvZ3JhbVNvdXJjZXMuc291cmNlc1tpXS50eXBlKTsK
KyAgICAgICAgc2hhZGVyLnNldFNvdXJjZXMocHJvZ3JhbVNvdXJjZXMuc291cmNlc1tpXS5zb3Vy
Y2UpOworICAgICAgICBzaGFkZXIuY29tcGlsZSgpOworICAgICAgICB0aGlzLnNoYWRlcnMucHVz
aChzaGFkZXIpOworICAgICAgICB0aGlzLnNoYWRlcnNPSyA9IHRoaXMuc2hhZGVyc09LICYmIHNo
YWRlci5nZXRDb21waWxlU3RhdHVzKCk7CisgICAgICAgIGlmICghc2hhZGVyLmdldENvbXBpbGVT
dGF0dXMoKSkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsdVNoYWRlclBy
b2dyYW0uU2hhZGVyOlxuJyArIHByb2dyYW1Tb3VyY2VzLnNvdXJjZXNbaV0uc291cmNlKTsKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdDb21waWxlIHN0YXR1czogJyArIHNoYWRl
ci5nZXRDb21waWxlU3RhdHVzKCkpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J1NoYWRlciBpbmZvTG9nOiAnICsgc2hhZGVyLmluZm8uaW5mb0xvZyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAodGhpcy5zaGFkZXJzT0spIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLnNoYWRlcnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICB0aGlzLnByb2dyYW0u
YXR0YWNoU2hhZGVyKHRoaXMuc2hhZGVyc1tpXS5nZXRTaGFkZXIoKSk7CisKKyAgICAgICAgZm9y
ICh2YXIgYXR0cmliIGluIHByb2dyYW1Tb3VyY2VzLmF0dHJpYkxvY2F0aW9uQmluZGluZ3MpCisg
ICAgICAgICAgICB0aGlzLnByb2dyYW0uYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW1Tb3VyY2Vz
LmF0dHJpYkxvY2F0aW9uQmluZGluZ3NbYXR0cmliXSwgYXR0cmliKTsKKworICAgICAgICBpZiAo
cHJvZ3JhbVNvdXJjZXMudHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKQorICAgICAgICAgICAg
aWYgKHByb2dyYW1Tb3VyY2VzLnRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9PT0gZ2wuTk9O
RSkKKyAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHByb2dyYW1Tb3VyY2VzLnRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MubGVuZ3RoID09PSAwLCAnVHJhbnNmb3JtIGZlZWRiYWNrIHNh
bml0eSBjaGVjaycsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0aGlzLnByb2dyYW0udHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtU291cmNl
cy50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLCBwcm9ncmFtU291cmNlcy50cmFuc2Zvcm1GZWVk
YmFja0J1ZmZlck1vZGUpOworCisgICAgICAgIC8qIFRPRE86IEdMRVMgMy4xOiBzZXQgc2VwYXJh
YmxlIGZsYWcgKi8KKworICAgICAgICB0aGlzLnByb2dyYW0ubGluaygpOworCisgICAgfQorfTsK
KworLyoqCisgKiByZXR1cm4ge1dlYkdMUHJvZ3JhbX0KKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5T
aGFkZXJQcm9ncmFtLnByb3RvdHlwZS5nZXRQcm9ncmFtID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHRoaXMucHJvZ3JhbS5wcm9ncmFtOworICAgIH07CisKKy8qKgorICogQHJldHVybiB7Z2x1
U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtSW5mb30KKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtLnByb3RvdHlwZS5nZXRQcm9ncmFtSW5mbyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB0aGlzLnByb2dyYW0uaW5mbzsKK307CisKK2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3Jh
bS5wcm90b3R5cGUuaXNPayA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnNoYWRlcnNP
SyAmJiB0aGlzLnByb2dyYW0uZ2V0TGlua1N0YXR1cygpOworfTsKKworZ2x1U2hhZGVyUHJvZ3Jh
bS5jb250YWluZXJUeXBlcyA9IHsKKyAgICBBVFRSSUJfTE9DQVRJT05fQklORElORzogMCwKKyAg
ICBUUkFOU0ZPUk1fRkVFREJBQ0tfTU9ERTogMSwKKyAgICBUUkFOU0ZPUk1fRkVFREJBQ0tfVkFS
WUlORzogMiwKKyAgICBUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6IDMsCisgICAgU0hBREVS
X1NPVVJDRTogNCwKKyAgICBQUk9HUkFNX1NFUEFSQUJMRTogNSwKKyAgICBQUk9HUkFNX1NPVVJD
RVM6IDYsCisKKyAgICBDT05UQUlORVJfVFlQRV9MQVNUOiA3LAorICAgIEFUVEFDSEFCTEVfQkVH
SU46IDAsIC8vIEFUVFJJQl9MT0NBVElPTl9CSU5ESU5HCisgICAgQVRUQUNIQUJMRV9FTkQ6IDUg
KyAxIC8vIFBST0dSQU1fU0VQQVJBQkxFICsgMQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5BdHRyaWJMb2NhdGlvbkJpbmRpbmcgPSBmdW5jdGlvbihu
YW1lLCBsb2NhdGlvbikgeworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy5sb2NhdGlv
biA9IGxvY2F0aW9uOworCisgICAgdGhpcy5nZXRDb250YWluZXJUeXBlID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiBnbHVTaGFkZXJQcm9ncmFtLmNvbnRhaW5lclR5cGVzLkFUVFJJQl9M
T0NBVElPTl9CSU5ESU5HOworICAgIH07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitnbHVTaGFkZXJQcm9ncmFtLlRyYW5zZm9ybUZlZWRiYWNrTW9kZSA9IGZ1bmN0aW9uKG1vZGUp
IHsKKyAgICB0aGlzLm1vZGUgPSBtb2RlOworCisgICAgdGhpcy5nZXRDb250YWluZXJUeXBlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBnbHVTaGFkZXJQcm9ncmFtLmNvbnRhaW5lclR5
cGVzLlRSQU5TRk9STV9GRUVEQkFDS19NT0RFOworICAgIH07Cit9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5U
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcgPSBmdW5jdGlvbihuYW1lKSB7CisgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisKKyAgICB0aGlzLmdldENvbnRhaW5lclR5
cGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGdsdVNoYWRlclByb2dyYW0uY29udGFp
bmVyVHlwZXMuVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkc7CisgICAgfTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGFycmF5CisgKi8KK2ds
dVNoYWRlclByb2dyYW0uVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyA9IGZ1bmN0aW9uKGFycmF5
KSB7CisgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB0aGlzLmFycmF5ID0gYXJyYXk7
CisKKyAgICB0aGlzLmdldENvbnRhaW5lclR5cGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIGdsdVNoYWRlclByb2dyYW0uY29udGFpbmVyVHlwZXMuVFJBTlNGT1JNX0ZFRURCQUNLX1ZB
UllJTkdTOworICAgIH07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHVTaGFk
ZXJQcm9ncmFtLlByb2dyYW1TZXBhcmFibGUgPSBmdW5jdGlvbihzZXBhcmFibGUpIHsKKyAgICB0
aGlzLnNlcGFyYWJsZSA9IHNlcGFyYWJsZTsKKworICAgIHRoaXMuZ2V0Q29udGFpbmVyVHlwZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZ2x1U2hhZGVyUHJvZ3JhbS5jb250YWluZXJU
eXBlcy5QUk9HUkFNX1NFUEFSQUJMRTsKKyAgICB9OworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UgPSBmdW5jdGlvbihzdHIpIHsK
KyAgICB0aGlzLnNoYWRlclR5cGUgPSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVY
OworICAgIHRoaXMuc291cmNlID0gc3RyOworCisgICAgdGhpcy5nZXRDb250YWluZXJUeXBlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBnbHVTaGFkZXJQcm9ncmFtLmNvbnRhaW5lclR5
cGVzLlNIQURFUl9TT1VSQ0U7CisgICAgfTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
Ki8KK2dsdVNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UgPSBmdW5jdGlvbihzdHIpIHsKKyAg
ICB0aGlzLnNoYWRlclR5cGUgPSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQ7
CisgICAgdGhpcy5zb3VyY2UgPSBzdHI7CisKKyAgICB0aGlzLmdldENvbnRhaW5lclR5cGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGdsdVNoYWRlclByb2dyYW0uY29udGFpbmVyVHlw
ZXMuU0hBREVSX1NPVVJDRTsKKyAgICB9OworfTsKKworLyoqCisgKiBDcmVhdGUgZ2x1U2hhZGVy
UHJvZ3JhbS5Qcm9ncmFtU291cmNlcy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHVTaGFkZXJQ
cm9ncmFtLlByb2dyYW1Tb3VyY2VzID0gZnVuY3Rpb24oKSB7CisgICAgLyoqIEB0eXBlIHtBcnJh
eTxnbHVTaGFkZXJQcm9ncmFtLlNoYWRlckluZm8+fSAqLyB0aGlzLnNvdXJjZXMgPSBbXTsKKyAg
ICB0aGlzLmF0dHJpYkxvY2F0aW9uQmluZGluZ3MgPSBbXTsKKyAgICAvKiogQHR5cGUge0FycmF5
PHN0cmluZz59ICovIHRoaXMudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyA9IFtdOworICAgIHRo
aXMudHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID0gMDsKKyAgICB0aGlzLnNlcGFyYWJsZSA9
IGZhbHNlOworfTsKKworZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtU291cmNlcy5wcm90b3R5cGUu
Z2V0Q29udGFpbmVyVHlwZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBnbHVTaGFkZXJQcm9n
cmFtLmNvbnRhaW5lclR5cGVzLlBST0dSQU1fU09VUkNFUzsKK307CisKK2dsdVNoYWRlclByb2dy
YW0uUHJvZ3JhbVNvdXJjZXMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICB2
YXIgdHlwZSA9IHVuZGVmaW5lZDsKKyAgICBpZiAodHlwZW9mKGl0ZW0uZ2V0Q29udGFpbmVyVHlw
ZSkgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICB0eXBlID0gaXRlbS5nZXRDb250YWluZXJUeXBl
KCk7CisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHR5cGVvZih0eXBlKSAhPSAnbnVtYmVyJyB8
fAorICAgICAgICAgICAgdHlwZSA8IGdsdVNoYWRlclByb2dyYW0uY29udGFpbmVyVHlwZXMuQVRU
QUNIQUJMRV9CRUdJTiB8fAorICAgICAgICAgICAgdHlwZSA+PSBnbHVTaGFkZXJQcm9ncmFtLmNv
bnRhaW5lclR5cGVzLkFUVEFDSEFCTEVfRU5ECisgICAgICAgICkgeworICAgICAgICAgICAgdHlw
ZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgICBjYXNlIGdsdVNoYWRlclByb2dyYW0uY29udGFpbmVyVHlwZXMuQVRUUklCX0xPQ0FU
SU9OX0JJTkRJTkc6CisgICAgICAgICAgICB0aGlzLmF0dHJpYkxvY2F0aW9uQmluZGluZ3MucHVz
aChpdGVtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgZ2x1U2hhZGVyUHJv
Z3JhbS5jb250YWluZXJUeXBlcy5UUkFOU0ZPUk1fRkVFREJBQ0tfTU9ERToKKyAgICAgICAgICAg
IHRoaXMudHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID0gaXRlbS5tb2RlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLmNvbnRhaW5lclR5cGVz
LlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgorICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzLnB1c2goaXRlbS5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyUHJvZ3JhbS5jb250YWluZXJUeXBlcy5UUkFOU0ZPUk1fRkVF
REJBQ0tfVkFSWUlOR1M6CisgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MgPSB0aGlzLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuY29uY2F0KGl0ZW0uYXJyYXkpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLmNvbnRh
aW5lclR5cGVzLlNIQURFUl9TT1VSQ0U6CisgICAgICAgICAgICB0aGlzLnNvdXJjZXMucHVzaChu
ZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJJbmZvKGl0ZW0uc2hhZGVyVHlwZSwgaXRlbS5zb3Vy
Y2UpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgZ2x1U2hhZGVyUHJvZ3Jh
bS5jb250YWluZXJUeXBlcy5QUk9HUkFNX1NFUEFSQUJMRToKKyAgICAgICAgICAgIHRoaXMuc2Vw
YXJhYmxlID0gaXRlbS5zZXBhcmFibGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeXBlIFwiJyArIHR5cGUgKyAn
XCIgY2Fubm90IGJlIGFkZGVkIHRvIGdsdVNoYWRlclByb2dyYW0uUHJvZ3JhbVNvdXJjZXMuJyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKK307CisKKy8q
KgorICogLy8hIEhlbHBlciBmb3IgY29uc3RydWN0aW5nIHZlcnRleC1mcmFnbWVudCBzb3VyY2Ug
cGFpci4KKyAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJ0ZXhTcmMKKyAqIEBwYXJhbSB7c3RyaW5nfSBm
cmFnbWVudFNyYworICogQHJldHVybiB7Z2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtU291cmNlc30K
KyAqLworZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMgPSBmdW5jdGlvbih2ZXJ0
ZXhTcmMsIGZyYWdtZW50U3JjKSB7CisgICAgLyoqIEB0eXBlwqAge2dsdVNoYWRlclByb2dyYW0u
UHJvZ3JhbVNvdXJjZXN9ICovIHZhciBzb3VyY2VzID0gbmV3IGdsdVNoYWRlclByb2dyYW0uUHJv
Z3JhbVNvdXJjZXMoKTsKKyAgICBzb3VyY2VzLnNvdXJjZXMucHVzaChnbHVTaGFkZXJQcm9ncmFt
LmdlblZlcnRleFNvdXJjZSh2ZXJ0ZXhTcmMpKTsKKyAgICBzb3VyY2VzLnNvdXJjZXMucHVzaChn
bHVTaGFkZXJQcm9ncmFtLmdlbkZyYWdtZW50U291cmNlKGZyYWdtZW50U3JjKSk7CisgICAgcmV0
dXJuIHNvdXJjZXM7Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVTaGFkZXJV
dGlsLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mcmFtZXdvcmsvb3BlbmdsL2dsdVNoYWRlclV0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYwNGRiYzYx
MzczMzE0YWM2NTQ1YzM3MDI4YzhlZjY0ZmUyMTc2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29w
ZW5nbC9nbHVTaGFkZXJVdGlsLmpzCkBAIC0wLDAgKzEsNzk1IEBACisvKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcwor
ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor
ICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAq
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNo
YWRlclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRo
Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBnbHVTaGFkZXJVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlTWF0aDsKKworLyoqCisgKiBTaGFkaW5nTGFuZ3VhZ2VWZXJzaW9uCisgKiBA
ZW51bQorICovCitnbHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9uID0geworICAgIFYxMDBfRVM6IDAs
IC8vITwgR0xTTCBFUyAxLjAKKyAgICBWMzAwX0VTOiAxIC8vITwgR0xTTCBFUyAzLjAKK307CisK
Ky8qKgorICogZ2x1U2hhZGVyVXRpbC5nbHNsVmVyc2lvblVzZXNJbk91dFF1YWxpZmllcnMKKyAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbn0gdmVyc2lvbgorICogQHJldHVybiB7
Ym9vbGVhbn0KKyAqLworZ2x1U2hhZGVyVXRpbC5nbHNsVmVyc2lvblVzZXNJbk91dFF1YWxpZmll
cnMgPSBmdW5jdGlvbih2ZXJzaW9uKSB7CisgICAgcmV0dXJuIHZlcnNpb24gPT0gZ2x1U2hhZGVy
VXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTOworfTsKKworLyoqCisgKiBnbHVTaGFkZXJVdGlsLmlz
R0xTTFZlcnNpb25TdXBwb3J0ZWQKKyAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dHxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlfSBjdHgKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5H
TFNMVmVyc2lvbn0gdmVyc2lvbgorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZ2x1U2hhZGVy
VXRpbC5pc0dMU0xWZXJzaW9uU3VwcG9ydGVkID0gZnVuY3Rpb24oY3R4LCB2ZXJzaW9uKSB7Cisg
ICAgcmV0dXJuIHZlcnNpb24gPD0gZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvbihjdHgpOwor
fTsKKworLyoqCisgKiBnbHVTaGFkZXJVdGlsLmdldEdMU0xWZXJzaW9uIC0gUmV0dXJucyBhIGds
dVNoYWRlclV0aWwuR0xTTFZlcnNpb24gYmFzZWQgb24gYSBnaXZlbiB3ZWJnbCBjb250ZXh0Lgor
ICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2V9IGdsCisgKiBAcmV0dXJuIHtnbHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9ufQorICovCitnbHVT
aGFkZXJVdGlsLmdldEdMU0xWZXJzaW9uID0gZnVuY3Rpb24oZ2wpIHsKKyAgICB2YXIgZ2xzbHZl
cnNpb24gPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKTsKKwor
ICAgIC8vIFRPRE86IFZlcnNpb25zIGFyZSBub3QgeWV0IHdlbGwgaW1wbGVtZW50ZWQuLi4gRmly
ZWZveCByZXR1cm5zIEdMU0wgRVMgMS4wIGluIHNvbWUgY2FzZXMsCisgICAgLy8gYW5kIENocm9t
aXVtIHJldHVybnMgR0xTTCBFUyAyLjAgaW4gc29tZSBjYXNlcy4gUmV0dXJuaW5nIHRoZSByaWdo
dCB2ZXJzaW9uIGZvcgorICAgIC8vIHRlc3RpbmcuCisgICAgLy8gcmV0dXJuIGdsdVNoYWRlclV0
aWwuR0xTTFZlcnNpb24uVjMwMF9FUzsKKworICAgIGlmIChnbHNsdmVyc2lvbi5pbmRleE9mKCdX
ZWJHTCBHTFNMIEVTIDEuMCcpICE9IC0xKSByZXR1cm4gZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lv
bi5WMTAwX0VTOworICAgIGlmIChnbHNsdmVyc2lvbi5pbmRleE9mKCdXZWJHTCBHTFNMIEVTIDMu
MCcpICE9IC0xKSByZXR1cm4gZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTOworCisg
ICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFdlYkdMIHZlcnNpb24nKTsKK307CisKKy8qKgor
ICogZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvbkRlY2xhcmF0aW9uIC0gUmV0dXJucyBhIHN0
cmluZyBkZWNsYXJhdGlvbiBmb3IgdGhlIGdsc2wgdmVyc2lvbiBpbiBhIHNoYWRlci4KKyAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbn0gdmVyc2lvbgorICogQHJldHVybiB7c3Ry
aW5nfQorICovCitnbHVTaGFkZXJVdGlsLmdldEdMU0xWZXJzaW9uRGVjbGFyYXRpb24gPSBmdW5j
dGlvbih2ZXJzaW9uKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgc19k
ZWNsID0KKyAgICBbCisgICAgICAgICcjdmVyc2lvbiAxMDAnLAorICAgICAgICAnI3ZlcnNpb24g
MzAwIGVzJworICAgIF07CisKKyAgICBpZiAodmVyc2lvbiA+IHNfZGVjbC5sZW5ndGggLSAxKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIEdMU0wgdmVyc2lvbi4nKTsKKwor
ICAgIHJldHVybiBzX2RlY2xbdmVyc2lvbl07Cit9OworCisvKioKKyAqIGdsdVNoYWRlclV0aWwu
Z2V0R0xTTFZlcnNpb25TdHJpbmcgLSBSZXR1cm5zIHRoZSBzYW1lIHRoaW5nIGFzCisgKiBnZXRH
TFNMVmVyc2lvbkRlY2xhcmF0aW9uKCkgYnV0IHdpdGhvdXQgdGhlIHN1YnN0cmluZyAnI3ZlcnNp
b24nCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuR0xTTFZlcnNpb259IHZlcnNpb24KKyAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAqLworZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvblN0cmluZyA9
IGZ1bmN0aW9uKHZlcnNpb24pIHsKKyAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZh
ciBzX2RlY2wgPQorICAgIFsKKyAgICAgICAgJzEwMCcsCisgICAgICAgICczMDAgZXMnCisgICAg
XTsKKworICAgIGlmICh2ZXJzaW9uID4gc19kZWNsLmxlbmd0aCAtIDEpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgR0xTTCB2ZXJzaW9uLicpOworCisgICAgcmV0dXJuIHNf
ZGVjbFt2ZXJzaW9uXTsKK307CisKKy8qKgorICogQGVudW0KKyAqLworZ2x1U2hhZGVyVXRpbC5w
cmVjaXNpb24gPSB7CisgICAgUFJFQ0lTSU9OX0xPV1A6IDAsCisgICAgUFJFQ0lTSU9OX01FRElV
TVA6IDEsCisgICAgUFJFQ0lTSU9OX0hJR0hQOiAyCit9OworCitnbHVTaGFkZXJVdGlsLmdldFBy
ZWNpc2lvbk5hbWUgPSBmdW5jdGlvbihwcmVjKSB7CisgICAgdmFyIHNfbmFtZXMgPSBbCisgICAg
ICAgICdsb3dwJywKKyAgICAgICAgJ21lZGl1bXAnLAorICAgICAgICAnaGlnaHAnCisgICAgXTsK
KworICAgIHJldHVybiBzX25hbWVzW3ByZWNdOworfTsKKworLyoqCisgKiBUaGUgVHlwZSBjb25z
dGFudHMKKyAqIEBlbnVtIHtudW1iZXJ9CisgKi8KK2dsdVNoYWRlclV0aWwuRGF0YVR5cGUgPSB7
CisgICAgSU5WQUxJRDogMCwKKworICAgIEZMT0FUOiAxLAorICAgIEZMT0FUX1ZFQzI6IDIsCisg
ICAgRkxPQVRfVkVDMzogMywKKyAgICBGTE9BVF9WRUM0OiA0LAorICAgIEZMT0FUX01BVDI6IDUs
CisgICAgRkxPQVRfTUFUMlgzOiA2LAorICAgIEZMT0FUX01BVDJYNDogNywKKyAgICBGTE9BVF9N
QVQzWDI6IDgsCisgICAgRkxPQVRfTUFUMzogOSwKKyAgICBGTE9BVF9NQVQzWDQ6IDEwLAorICAg
IEZMT0FUX01BVDRYMjogMTEsCisgICAgRkxPQVRfTUFUNFgzOiAxMiwKKyAgICBGTE9BVF9NQVQ0
OiAxMywKKworICAgIElOVDogMTQsCisgICAgSU5UX1ZFQzI6IDE1LAorICAgIElOVF9WRUMzOiAx
NiwKKyAgICBJTlRfVkVDNDogMTcsCisKKyAgICBVSU5UOiAxOCwKKyAgICBVSU5UX1ZFQzI6IDE5
LAorICAgIFVJTlRfVkVDMzogMjAsCisgICAgVUlOVF9WRUM0OiAyMSwKKworICAgIEJPT0w6IDIy
LAorICAgIEJPT0xfVkVDMjogMjMsCisgICAgQk9PTF9WRUMzOiAyNCwKKyAgICBCT09MX1ZFQzQ6
IDI1LAorCisgICAgU0FNUExFUl8yRDogMjYsCisgICAgU0FNUExFUl9DVUJFOiAyNywKKyAgICBT
QU1QTEVSXzJEX0FSUkFZOiAyOCwKKyAgICBTQU1QTEVSXzNEOiAyOSwKKworICAgIFNBTVBMRVJf
MkRfU0hBRE9XOiAzMCwKKyAgICBTQU1QTEVSX0NVQkVfU0hBRE9XOiAzMSwKKyAgICBTQU1QTEVS
XzJEX0FSUkFZX1NIQURPVzogMzIsCisKKyAgICBJTlRfU0FNUExFUl8yRDogMzMsCisgICAgSU5U
X1NBTVBMRVJfQ1VCRTogMzQsCisgICAgSU5UX1NBTVBMRVJfMkRfQVJSQVk6IDM1LAorICAgIElO
VF9TQU1QTEVSXzNEOiAzNiwKKworICAgIFVJTlRfU0FNUExFUl8yRDogMzcsCisgICAgVUlOVF9T
QU1QTEVSX0NVQkU6IDM4LAorICAgIFVJTlRfU0FNUExFUl8yRF9BUlJBWTogMzksCisgICAgVUlO
VF9TQU1QTEVSXzNEOiA0MAorfTsKKworLyoqCisgKiBSZXR1cm5zIHR5cGUgb2YgZmxvYXQgc2Nh
bGFycworICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBkYXRhVHlwZQorICogQHJl
dHVybiB7c3RyaW5nfSB0eXBlIG9mIGZsb2F0IHNjYWxhcgorICovCitnbHVTaGFkZXJVdGlsLmdl
dERhdGFUeXBlRmxvYXRTY2FsYXJzID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKworICAgIHN3aXRj
aCAoZGF0YVR5cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
OiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzI6IHJldHVybiAndmVjMic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9WRUMzOiByZXR1cm4gJ3ZlYzMnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDNDogcmV0dXJuICd2ZWM0JzsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6IHJldHVybiAnbWF0Mic7CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6IHJldHVybiAnbWF0MngzJzsK
KyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYNDogcmV0dXJu
ICdtYXQyeDQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
M1gyOiByZXR1cm4gJ21hdDN4Mic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzOiByZXR1cm4gJ21hdDMnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUM1g0OiByZXR1cm4gJ21hdDN4NCc7CisgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDI6IHJldHVybiAnbWF0NHgyJzsKKyAgICAg
ICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMzogcmV0dXJuICdtYXQ0
eDMnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNDogcmV0
dXJuICdtYXQ0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVDogcmV0
dXJuICdmbG9hdCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVD
MjogcmV0dXJuICd2ZWMyJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9WRUMzOiByZXR1cm4gJ3ZlYzMnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5UX1ZFQzQ6IHJldHVybiAndmVjNCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5UOiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlRfVkVDMjogcmV0dXJuICd2ZWMyJzsKKyAgICAgICAgY2FzZSBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMzogcmV0dXJuICd2ZWMzJzsKKyAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDNDogcmV0dXJuICd2ZWM0JzsKKyAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0w6IHJldHVybiAnZmxvYXQnOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyOiByZXR1cm4gJ3ZlYzInOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzOiByZXR1cm4gJ3Zl
YzMnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0OiByZXR1
cm4gJ3ZlYzQnOworICAgIH0KKyAgICB0aHJvdyBFcnJvcignVW5yZWNvZ25pemVkIGRhdGFUeXBl
ICcgKyBkYXRhVHlwZSk7Cit9OworCisvKioKKyAqIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVW
ZWN0b3IKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gc2NhbGFyVHlwZQorICog
QHBhcmFtIHtudW1iZXJ9IHNpemUKKyAqIEByZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
CisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IgPSBmdW5jdGlvbihzY2FsYXJU
eXBlLCBzaXplKSB7CisgICAgdmFyIGZsb2F0cyA9IFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FULAorICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMy
LAorICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzLAor
ICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0XTsKKyAg
ICB2YXIgaW50cyA9IFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgICAg
ICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsCisgICAgICAgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLAorICAgICAgICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNF07CisgICAgdmFyIHVpbnRzID0gW2dsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuVUlOVF9WRUMyLAorICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UX1ZFQzMsCisgICAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRf
VkVDNF07CisgICAgdmFyIGJvb2xzID0gW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAg
ICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyLAorICAgICAg
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzMsCisgICAgICAgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNF07CisKKyAgICBzd2l0Y2gg
KHNjYWxhclR5cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
OiByZXR1cm4gZmxvYXRzW3NpemUgLSAxXTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLklOVDogcmV0dXJuIGludHNbc2l6ZSAtIDFdOworICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVDogcmV0dXJuIHVpbnRzW3NpemUgLSAxXTsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0w6IHJldHVybiBib29sc1tzaXplIC0gMV07Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjYWxhciB0eXBl
IGlzIG5vdCBhIHZlY3RvZTonICsgc2NhbGFyVHlwZSk7CisgICAgfQorfTsKKworLyoqCisgKiBn
bHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRWZWMKKyAqIEBwYXJhbSB7bnVtYmVyfSB2ZWNT
aXplCisgKiBAcmV0dXJuIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfQorICovCitnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlRmxvYXRWZWMgPSBmdW5jdGlvbih2ZWNTaXplKSB7CisgICAgcmV0dXJu
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVCwgdmVjU2l6ZSk7Cit9OworCisvKioKKyAqIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJv
b2xPckJWZWMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gZGF0YVR5cGUKKyAq
IEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJW
ZWMgPSBmdW5jdGlvbihkYXRhVHlwZSkgeworICAgIHJldHVybiAoZGF0YVR5cGUgPj0gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5CT09MKSAmJiAoZGF0YVR5cGUgPD0gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5CT09MX1ZFQzQpOworfTsKKworLyoqCisgKiBSZXR1cm5zIHR5cGUgb2Ygc2NhbGFyCisg
KiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlIHNoYWRlcgorICogQHJl
dHVybiB7c3RyaW5nfSB0eXBlIG9mIHNjYWxhciB0eXBlCisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVTY2FsYXJUeXBlID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKyAgICBzd2l0Y2ggKGRh
dGFUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDogcmV0
dXJuICdmbG9hdCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUMyOiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzM6IHJldHVybiAnZmxvYXQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDNDogcmV0dXJuICdmbG9hdCc7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYMzogcmV0dXJuICdmbG9hdCc7Cisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDQ6IHJldHVybiAn
ZmxvYXQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gy
OiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDM6IHJldHVybiAnZmxvYXQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUM1g0OiByZXR1cm4gJ2Zsb2F0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMjogcmV0dXJuICdmbG9hdCc7CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDM6IHJldHVybiAnZmxvYXQnOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNDogcmV0dXJuICdm
bG9hdCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ6IHJldHVybiAn
aW50JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyOiByZXR1
cm4gJ2ludCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMzog
cmV0dXJuICdpbnQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZF
QzQ6IHJldHVybiAnaW50JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQ6IHJldHVybiAndWludCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UX1ZFQzI6IHJldHVybiAndWludCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5UX1ZFQzM6IHJldHVybiAndWludCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5UX1ZFQzQ6IHJldHVybiAndWludCc7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5CT09MOiByZXR1cm4gJ2Jvb2wnOworICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyOiByZXR1cm4gJ2Jvb2wnOworICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzOiByZXR1cm4gJ2Jvb2wnOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0OiByZXR1cm4gJ2Jvb2wnOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRDogcmV0dXJuICdz
YW1wbGVyMkQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9D
VUJFOiByZXR1cm4gJ3NhbXBsZXJDdWJlJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlNBTVBMRVJfMkRfQVJSQVk6IHJldHVybiAnc2FtcGxlcjJEQXJyYXknOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8zRDogcmV0dXJuICdzYW1wbGVy
M0QnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF9TSEFE
T1c6IHJldHVybiAnc2FtcGxlcjJEU2hhZG93JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlNBTVBMRVJfQ1VCRV9TSEFET1c6IHJldHVybiAnc2FtcGxlckN1YmVTaGFkb3cn
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF9BUlJBWV9T
SEFET1c6IHJldHVybiAnc2FtcGxlcjJEQXJyYXlTaGFkb3cnOworICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfMkQ6IHJldHVybiAnaXNhbXBsZXIyRCc7Cisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl9DVUJFOiByZXR1
cm4gJ2lzYW1wbGVyQ3ViZSc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlRfU0FNUExFUl8yRF9BUlJBWTogcmV0dXJuICdpc2FtcGxlcjJEQXJyYXknOworICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfM0Q6IHJldHVybiAnaXNhbXBs
ZXIzRCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJf
MkQ6IHJldHVybiAndXNhbXBsZXIyRCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5UX1NBTVBMRVJfQ1VCRTogcmV0dXJuICd1c2FtcGxlckN1YmUnOworICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzJEX0FSUkFZOiByZXR1cm4g
J3VzYW1wbGVyMkRBcnJheSc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UX1NBTVBMRVJfM0Q6IHJldHVybiAndXNhbXBsZXIzRCc7CisgICAgfQorICAgdGhyb3cgbmV3
IEVycm9yKCdVbnJlY29nbml6ZWQgZGF0YXR5cGU6JyArIGRhdGFUeXBlKTsKK307CisKKy8qKgor
ICogUmV0dXJucyB0eXBlIG9mIHNjYWxhcgorICogQHBhcmFtIHs/Z2x1U2hhZGVyVXRpbC5EYXRh
VHlwZX0gZGF0YVR5cGUgc2hhZGVyCisgKiBAcmV0dXJuIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
fSB0eXBlIG9mIHNjYWxhciB0eXBlCisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2Fs
YXJUeXBlQXNEYXRhVHlwZSA9IGZ1bmN0aW9uKGRhdGFUeXBlKSB7CisgICAgc3dpdGNoIChkYXRh
VHlwZSkgeworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6IHJldHVy
biBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDMjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzOiByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjogcmV0
dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0
OiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYMjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQzOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogcmV0dXJuIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQ0WDI6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOworICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgzOiByZXR1cm4gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVD
MjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOworICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzM6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LklOVDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0OiByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5UOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOworICAg
ICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyOiByZXR1cm4gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuVUlOVF9WRUMzOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0OiByZXR1cm4gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5UOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
Qk9PTDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDsKKyAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDMjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuQk9PTDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVD
MzogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuQk9PTDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkQ6
CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSX0NVQkU6CisgICAg
ICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEX0FSUkFZOgorICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8zRDoKKyAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfU0hBRE9XOgorICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9DVUJFX1NIQURPVzoKKyAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgorICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl9DVUJFOgorICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8zRDoKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl8yRDoKKyAgICAgICAgY2FzZSBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl9DVUJFOgorICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzNEOgorICAgICAgICAgICAgcmV0dXJuIGRh
dGFUeXBlOworICAgIH0KKyAgICB0aHJvdyBFcnJvcignVW5yZWNvZ25pemVkIGRhdGFUeXBlICcg
KyBkYXRhVHlwZSk7Cit9OworCisvKioKKyAqIENoZWNrcyBpZiBkYXRhVHlwZSBpcyBpbnRlZ2Vy
IG9yIHZlY3RvcnMgb2YgaW50ZWdlcnMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZX0gZGF0YVR5cGUgc2hhZGVyCisgKiBAcmV0dXJuIHtib29sZWFufSBJcyBkYXRhVHlwZSBpbnRl
Z2VyIG9yIGludGVnZXIgdmVjdG9yCisgKi8KK2dsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUludE9y
SVZlYyA9IGZ1bmN0aW9uKGRhdGFUeXBlKSB7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgcmV0VmFsID0gZmFsc2U7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5UX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlRfVkVDMzoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0Ogor
ICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0VmFsOwor
fTsKKworLyoqCisgKiBDaGVja3MgaWYgZGF0YVR5cGUgaXMgdW5zaWduZWQgaW50ZWdlciBvciB2
ZWN0b3JzIG9mIHVuc2lnbmVkIGludGVnZXJzCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9IGRhdGFUeXBlIHNoYWRlcgorICogQHJldHVybiB7Ym9vbGVhbn0gSXMgZGF0YVR5cGUg
dW5zaWduZWQgaW50ZWdlciBvciB1bnNpZ25lZCBpbnRlZ2VyIHZlY3RvcgorICovCitnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVVaW50T3JVVmVjID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKyAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciByZXRWYWwgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGRh
dGFUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOgorICAg
ICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyOgorICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzOgorICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0OgorICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmV0VmFsOworfTsKKworLyoqCisqIFJldHVybnMgdHlwZSBvZiBz
Y2FsYXIgc2l6ZQorKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlIHNo
YWRlcgorKiBAcmV0dXJuIHtudW1iZXJ9IHdpdGggc2l6ZSBvZiB0aGUgdHlwZSBvZiBzY2FsYXIK
KyovCitnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSA9IGZ1bmN0aW9uKGRhdGFU
eXBlKSB7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgICAgICBjYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVQ6IHJldHVybiAxOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDMjogcmV0dXJuIDI7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9WRUMzOiByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ6IHJldHVybiA0OworICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6IHJldHVybiA2OworICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0OiByZXR1cm4gODsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYMjogcmV0dXJuIDY7CisgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzOiByZXR1cm4gOTsKKyAgICAg
ICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogcmV0dXJuIDEyOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgyOiByZXR1cm4g
ODsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMzogcmV0
dXJuIDEyOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNDog
cmV0dXJuIDE2OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOiByZXR1
cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyOiByZXR1
cm4gMjsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzOiByZXR1
cm4gMzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0OiByZXR1
cm4gNDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQ6IHJldHVybiAx
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyOiByZXR1cm4g
MjsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMzogcmV0dXJu
IDM7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQ6IHJldHVy
biA0OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDogcmV0dXJuIDE7
CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzI6IHJldHVybiAy
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzOiByZXR1cm4g
MzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNDogcmV0dXJu
IDQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEOiByZXR1
cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfQ1VCRTog
cmV0dXJuIDE7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJE
X0FSUkFZOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNB
TVBMRVJfM0Q6IHJldHVybiAxOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
U0FNUExFUl8yRF9TSEFET1c6IHJldHVybiAxOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuU0FNUExFUl9DVUJFX1NIQURPVzogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEX0FSUkFZX1NIQURPVzogcmV0dXJuIDE7Cisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8yRDogcmV0dXJu
IDE7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl9DVUJF
OiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9TQU1Q
TEVSXzJEX0FSUkFZOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVF9TQU1QTEVSXzNEOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlRfU0FNUExFUl8yRDogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfQ1VCRTogcmV0dXJuIDE7CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfMkRfQVJSQVk6IHJldHVybiAx
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzNEOiBy
ZXR1cm4gMTsKKyAgICB9CisgICAgdGhyb3cgRXJyb3IoJ1VucmVjb2duaXplZCBkYXRhVHlwZSAn
ICsgZGF0YVR5cGUpOworfTsKKworLyoqCisgKiBDaGVja3MgaWYgZGF0YVR5cGUgaXMgZmxvYXQg
b3IgdmVjdG9yCisgKiBAcGFyYW0gez9nbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBkYXRhVHlwZSBz
aGFkZXIKKyAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGRhdGFUeXBlIGZsb2F0IG9yIHZlY3Rvcgor
ICovCitnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjID0gZnVuY3Rpb24oZGF0YVR5
cGUpIHsKKyAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVDoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMz
OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9OworCisvKioK
KyAqIENoZWNrcyBpZiBkYXRhVHlwZSBpcyBhIG1hdHJpeAorICogQHBhcmFtIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlfSBkYXRhVHlwZSBzaGFkZXIKKyAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGRh
dGFUeXBlIG1hdHJpeCBvciBub3QKKyAqLworZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4
ID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKyAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CisgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOgorICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgzOgorICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUM1gyOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUMzoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X01BVDNYNDoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRY
MjoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMzoKKyAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQ6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisgKiBD
aGVja3MgaWYgZGF0YVR5cGUgaXMgYSB2ZWN0b3IKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZX0gZGF0YVR5cGUgc2hhZGVyCisgKiBAcmV0dXJuIHtib29sZWFufSBJcyBkYXRhVHlw
ZSB2ZWN0b3Igb3Igbm90CisgKi8KK2dsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNjYWxhciA9IGZ1
bmN0aW9uKGRhdGFUeXBlKSB7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5U
OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9OworCisvKioKKyAqIENo
ZWNrcyBpZiBkYXRhVHlwZSBpcyBhIHZlY3RvcgorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSBkYXRhVHlwZSBzaGFkZXIKKyAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGRhdGFUeXBl
IHZlY3RvciBvciBub3QKKyAqLworZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yID0gZnVu
Y3Rpb24oZGF0YVR5cGUpIHsKKyAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CisgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOgorICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMzoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX1ZFQzQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlRfVkVDMjoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzOgor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQ6CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzM6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5UX1ZFQzQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5C
T09MX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzM6
CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQ6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoqCisg
KiBDaGVja3MgaWYgZGF0YVR5cGUgaXMgYSB2ZWN0b3Igb3IgYSBzY2FsYXIgdHlwZQorICogQHBh
cmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBkYXRhVHlwZSBzaGFkZXIKKyAqIEByZXR1cm4g
e2Jvb2xlYW59IElzIGRhdGFUeXBlIHZlY3RvciBvciBzY2FsYXIgb3Igbm90CisgKi8KK2dsdVNo
YWRlclV0aWwuaXNEYXRhVHlwZVNjYWxhck9yVmVjdG9yID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsK
KyAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVDoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZF
QzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzOgorICAg
ICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNDoKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVDoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVF9WRUMyOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UX1ZFQzM6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNDoK
KyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQ6CisgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzM6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5UX1ZFQzQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09M
OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyOgorICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzOgorICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK307CisKKy8qKgorICogQ2hlY2tzIGlmIGRhdGFU
eXBlIGlzIGEgc2FtcGxlcgorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBkYXRh
VHlwZSBzaGFkZXIKKyAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGRhdGFUeXBlIHZlY3RvciBvciBz
Y2FsYXIgb3Igbm90CisgKi8KK2dsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIgPSBmdW5j
dGlvbihkYXRhVHlwZSkgeworICAgIHJldHVybiAoZGF0YVR5cGUgPj0gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5TQU1QTEVSXzJEKSAmJiAoZGF0YVR5cGUgPD0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5VSU5UX1NBTVBMRVJfM0QpOworfTsKKworLyoqCisgKiBSZXR1cm5zIGEgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZSBiYXNlZCBvbiBnaXZlbiByb3dzIGFuZCBjb2x1bW5zCisgKiBAcGFyYW0ge251
bWJlcn0gbnVtQ29scworICogQHBhcmFtIHtudW1iZXJ9IG51bVJvd3MKKyAqIEByZXR1cm4ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9CisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRy
aXggPSBmdW5jdGlvbihudW1Db2xzLCBudW1Sb3dzKSB7CisgICAgaWYgKCEoZGVNYXRoLmRlSW5S
YW5nZTMyKG51bUNvbHMsIDIsIDQpICYmIGRlTWF0aC5kZUluUmFuZ2UzMihudW1Sb3dzLCAyLCA0
KSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kczogKCcgKyBudW1Db2xz
ICsgJywnICsgbnVtUm93cyArICcpJyk7CisKKyAgICB2YXIgc2l6ZSA9IG51bUNvbHMudG9TdHJp
bmcoKSArICd4JyArIG51bVJvd3MudG9TdHJpbmcoKTsKKyAgICB2YXIgZGF0YXR5cGVzID0gewor
ICAgICAgICAnMngyJzogZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyLAorICAgICAg
ICAnMngzJzogZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDMsCisgICAgICAgICcy
eDQnOiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYNCwKKyAgICAgICAgJzN4Mic6
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gyLAorICAgICAgICAnM3gzJzogZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzLAorICAgICAgICAnM3g0JzogZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDQsCisgICAgICAgICc0eDInOiBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDRYMiwKKyAgICAgICAgJzR4Myc6IGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUNFgzLAorICAgICAgICAnNHg0JzogZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQ0CisgICAgfTsKKyAgICByZXR1cm4gZGF0YXR5cGVzW3NpemVdOworfTsKKwor
LyoqCisqIFJldHVybnMgbnVtYmVyIG9mIHJvd3Mgb2YgYSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
IE1hdHJpeAorKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlIHNoYWRl
cgorKiBAcmV0dXJuIHtudW1iZXJ9IHdpdGggbnVtYmVyIG9mIHJvd3MgZGVwZW5kaW5nIG9uIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUgTWF0cml4CisqLworZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU1hdHJpeE51bVJvd3MgPSBmdW5jdGlvbihkYXRhVHlwZSkgeworICAgIHN3aXRjaCAoZGF0YVR5
cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6IHJl
dHVybiAyOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgz
OiByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01B
VDJYNDogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQzWDI6IHJldHVybiAyOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfTUFUMzogcmV0dXJuIDM7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzWDQ6IHJldHVybiA0OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUNFgyOiByZXR1cm4gMjsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDRYMzogcmV0dXJuIDM7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0OiByZXR1cm4gNDsKKyAgICB9CisgICAgdGhyb3cgRXJy
b3IoJ1VucmVjb2duaXplZCBkYXRhVHlwZSAnICsgZGF0YVR5cGUpOworfTsKKworLyoqCisqIFJl
dHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgb2YgYSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlIE1hdHJp
eAorKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlIHNoYWRlcgorKiBA
cmV0dXJuIHtudW1iZXJ9IHdpdGggbnVtYmVyIG9mIGNvbHVtbnMgZGVwZW5kaW5nIG9uIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUgTWF0cml4CisqLworZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1h
dHJpeE51bUNvbHVtbnMgPSBmdW5jdGlvbihkYXRhVHlwZSkgeworICAgIHN3aXRjaCAoZGF0YVR5
cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6IHJl
dHVybiAyOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgz
OiByZXR1cm4gMjsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01B
VDJYNDogcmV0dXJuIDI7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQzWDI6IHJldHVybiAzOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfTUFUMzogcmV0dXJuIDM7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzWDQ6IHJldHVybiAzOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUNFgyOiByZXR1cm4gNDsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDRYMzogcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0OiByZXR1cm4gNDsKKyAgICB9CisgICAgdGhyb3cgRXJy
b3IoJ1VucmVjb2duaXplZCBkYXRhVHlwZSAnICsgZGF0YVR5cGUpOworfTsKKworLyoqCisgKiBA
cGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlCisgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOdW1Mb2NhdGlvbnMgPSBmdW5jdGlv
bihkYXRhVHlwZSkgeworICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTY2FsYXJPclZl
Y3RvcihkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiAxOworICAgIGVsc2UgaWYgKGdsdVNoYWRl
clV0aWwuaXNEYXRhVHlwZU1hdHJpeChkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBnbHVTaGFk
ZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyhkYXRhVHlwZSk7CisgICAgdGhyb3cg
RXJyb3IoJ1VucmVjb2duaXplZCBkYXRhVHlwZSAnICsgZGF0YVR5cGUpOworfTsKKworLyoqCisg
KiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlCisgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgKi8KK2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOdW1Db21wb25lbnRzID0gZnVu
Y3Rpb24oZGF0YVR5cGUpIHsKKyAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlU2NhbGFy
T3JWZWN0b3IoZGF0YVR5cGUpKQorICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZVNjYWxhclNpemUoZGF0YVR5cGUpOworICAgIGVsc2UgaWYgKGdsdVNoYWRlclV0aWwuaXNE
YXRhVHlwZU1hdHJpeChkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGlsLmdl
dERhdGFUeXBlTWF0cml4TnVtUm93cyhkYXRhVHlwZSk7CisKKyAgICB0aHJvdyBFcnJvcignVW5y
ZWNvZ25pemVkIGRhdGFUeXBlICcgKyBkYXRhVHlwZSk7Cit9OworCisvKioKKyAqIFJldHVybnMg
bmFtZSBvZiB0aGUgZGF0YVR5cGUKKyAqIEBwYXJhbSB7P2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
IGRhdGFUeXBlIHNoYWRlcgorICogQHJldHVybiB7c3RyaW5nfSBkYXRhVHlwZSBuYW1lCisgKi8K
K2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKyAg
ICBzd2l0Y2ggKGRhdGFUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5JTlZBTElEOiByZXR1cm4gJ2ludmFsaWQnOworCisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVDogcmV0dXJuICdmbG9hdCc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOiByZXR1cm4gJ3ZlYzInOworICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMzogcmV0dXJuICd2ZWMzJzsKKyAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ6IHJldHVybiAndmVjNCc7Cisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOiByZXR1cm4gJ21h
dDInOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgzOiBy
ZXR1cm4gJ21hdDJ4Myc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQyWDQ6IHJldHVybiAnbWF0Mng0JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX01BVDNYMjogcmV0dXJuICdtYXQzeDInOworICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMzogcmV0dXJuICdtYXQzJzsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogcmV0dXJuICdtYXQzeDQnOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgyOiByZXR1cm4g
J21hdDR4Mic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0
WDM6IHJldHVybiAnbWF0NHgzJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDQ6IHJldHVybiAnbWF0NCc7CisKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVDogcmV0dXJuICdpbnQnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5UX1ZFQzI6IHJldHVybiAnaXZlYzInOworICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UX1ZFQzM6IHJldHVybiAnaXZlYzMnOworICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQ6IHJldHVybiAnaXZlYzQnOworCisgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOiByZXR1cm4gJ3VpbnQnOworICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyOiByZXR1cm4gJ3V2ZWMyJzsK
KyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMzogcmV0dXJuICd1
dmVjMyc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQ6IHJl
dHVybiAndXZlYzQnOworCisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09M
OiByZXR1cm4gJ2Jvb2wnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9P
TF9WRUMyOiByZXR1cm4gJ2J2ZWMyJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkJPT0xfVkVDMzogcmV0dXJuICdidmVjMyc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5CT09MX1ZFQzQ6IHJldHVybiAnYnZlYzQnOworCisgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEOiByZXR1cm4gJ3NhbXBsZXIyRCc7CisgICAg
ICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSX0NVQkU6IHJldHVybiAnc2Ft
cGxlckN1YmUnOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8y
RF9BUlJBWTogcmV0dXJuICdzYW1wbGVyMkRBcnJheSc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5TQU1QTEVSXzNEOiByZXR1cm4gJ3NhbXBsZXIzRCc7CisKKyAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfU0hBRE9XOiByZXR1cm4gJ3Nh
bXBsZXIyRFNoYWRvdyc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1Q
TEVSX0NVQkVfU0hBRE9XOiByZXR1cm4gJ3NhbXBsZXJDdWJlU2hhZG93JzsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOiByZXR1cm4g
J3NhbXBsZXIyREFycmF5U2hhZG93JzsKKworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UX1NBTVBMRVJfMkQ6IHJldHVybiAnaXNhbXBsZXIyRCc7CisgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl9DVUJFOiByZXR1cm4gJ2lzYW1wbGVy
Q3ViZSc7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8y
RF9BUlJBWTogcmV0dXJuICdpc2FtcGxlcjJEQXJyYXknOworICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfM0Q6IHJldHVybiAnaXNhbXBsZXIzRCc7CisKKyAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl8yRDogcmV0dXJu
ICd1c2FtcGxlcjJEJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRf
U0FNUExFUl9DVUJFOiByZXR1cm4gJ3VzYW1wbGVyQ3ViZSc7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfMkRfQVJSQVk6IHJldHVybiAndXNhbXBsZXIy
REFycmF5JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExF
Ul8zRDogcmV0dXJuICd1c2FtcGxlcjNEJzsKKyAgICB9CisgICAgdGhyb3cgRXJyb3IoJ1VucmVj
b2duaXplZCBkYXRhVHlwZSAnICsgZGF0YVR5cGUpOworfTsKKworLyoqCisgKiBSZXR1cm5zIHRo
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlIGZyb20gdGhlIEdMIHR5cGUKKyAqIEBwYXJhbSB7bnVt
YmVyfSBnbFR5cGUKKyAqIEByZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9CisgKi8KK2ds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVGcm9tR0xUeXBlID0gZnVuY3Rpb24oZ2xUeXBlKSB7Cisg
ICAgc3dpdGNoIChnbFR5cGUpIHsKKyAgICAgICAgY2FzZSBnbC5GTE9BVDogcmV0dXJuIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ7CisgICAgICAgIGNhc2UgZ2wuRkxPQVRfVkVDMjogcmV0
dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMjsKKyAgICAgICAgY2FzZSBnbC5G
TE9BVF9WRUMzOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzOworICAg
ICAgICBjYXNlIGdsLkZMT0FUX1ZFQzQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzQ7CisKKyAgICAgICAgY2FzZSBnbC5GTE9BVF9NQVQyOiByZXR1cm4gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOworICAgICAgICBjYXNlIGdsLkZMT0FUX01BVDJ4Mzog
cmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgzOworICAgICAgICBjYXNl
IGdsLkZMT0FUX01BVDJ4NDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
Mlg0OworCisgICAgICAgIGNhc2UgZ2wuRkxPQVRfTUFUM3gyOiByZXR1cm4gZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQzWDI7CisgICAgICAgIGNhc2UgZ2wuRkxPQVRfTUFUMzogcmV0
dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMzsKKyAgICAgICAgY2FzZSBnbC5G
TE9BVF9NQVQzeDQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDsK
KworICAgICAgICBjYXNlIGdsLkZMT0FUX01BVDR4MjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUNFgyOworICAgICAgICBjYXNlIGdsLkZMT0FUX01BVDR4MzogcmV0dXJu
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgzOworICAgICAgICBjYXNlIGdsLkZM
T0FUX01BVDQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQ7CisKKyAg
ICAgICAgY2FzZSBnbC5JTlQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVDsKKyAg
ICAgICAgY2FzZSBnbC5JTlRfVkVDMjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
X1ZFQzI7CisgICAgICAgIGNhc2UgZ2wuSU5UX1ZFQzM6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLklOVF9WRUMzOworICAgICAgICBjYXNlIGdsLklOVF9WRUM0OiByZXR1cm4gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNDsKKworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lO
VDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVDsKKyAgICAgICAgY2FzZSBnbC5V
TlNJR05FRF9JTlRfVkVDMjogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMy
OworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVF9WRUMzOiByZXR1cm4gZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5UX1ZFQzM7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UX1ZFQzQ6
IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDNDsKKworICAgICAgICBjYXNl
IGdsLkJPT0w6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0w7CisgICAgICAgIGNh
c2UgZ2wuQk9PTF9WRUMyOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzI7
CisgICAgICAgIGNhc2UgZ2wuQk9PTF9WRUMzOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5CT09MX1ZFQzM7CisgICAgICAgIGNhc2UgZ2wuQk9PTF9WRUM0OiByZXR1cm4gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQ7CisKKyAgICAgICAgY2FzZSBnbC5TQU1QTEVSXzJEOiBy
ZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEOworICAgICAgICBjYXNlIGds
LlNBTVBMRVJfQ1VCRTogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9DVUJF
OworICAgICAgICBjYXNlIGdsLlNBTVBMRVJfMkRfQVJSQVk6IHJldHVybiBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlNBTVBMRVJfMkRfQVJSQVk7CisgICAgICAgIGNhc2UgZ2wuU0FNUExFUl8zRDog
cmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8zRDsKKworICAgICAgICBjYXNl
IGdsLlNBTVBMRVJfMkRfU0hBRE9XOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1Q
TEVSXzJEX1NIQURPVzsKKyAgICAgICAgY2FzZSBnbC5TQU1QTEVSX0NVQkVfU0hBRE9XOiByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSX0NVQkVfU0hBRE9XOworICAgICAgICBj
YXNlIGdsLlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5TQU1QTEVSXzJEX0FSUkFZX1NIQURPVzsKKworICAgICAgICBjYXNlIGdsLklOVF9TQU1Q
TEVSXzJEOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8yRDsKKyAg
ICAgICAgY2FzZSBnbC5JTlRfU0FNUExFUl9DVUJFOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlRfU0FNUExFUl9DVUJFOworICAgICAgICBjYXNlIGdsLklOVF9TQU1QTEVSXzJEX0FS
UkFZOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8yRF9BUlJBWTsK
KyAgICAgICAgY2FzZSBnbC5JTlRfU0FNUExFUl8zRDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UX1NBTVBMRVJfM0Q7CisKKyAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfU0FN
UExFUl8yRDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzJEOwor
ICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6IHJldHVybiBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl9DVUJFOworICAgICAgICBjYXNlIGdsLlVOU0lH
TkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UX1NBTVBMRVJfMkRfQVJSQVk7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UX1NBTVBM
RVJfM0Q6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl8zRDsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6
ZWQgR0wgdHlwZTonICsgZ2xUeXBlKTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3Jr
L29wZW5nbC9nbHVTdHJVdGlsLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdVN0clV0aWwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjU1NGRiMDQ3YWMwOWIyMDFhNmVjMzhjMzMxNmVhMjRlNTQ4NjViZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnJhbWV3b3JrL29wZW5nbC9nbHVTdHJVdGlsLmpzCkBAIC0wLDAgKzEsMTY2IEBACisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0
aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3Bl
bmdsLmdsdVN0clV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIGdsdVN0
clV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWw7CisKK2dsdVN0clV0aWwuZ2V0UGl4
ZWxGb3JtYXROYW1lID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZhbHVlKSB7Cisg
ICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFOiByZXR1cm4gJ2dsLkxVTUlOQU5DRSc7CisgICAgICAg
IGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOiByZXR1cm4gJ2dsLkxVTUlOQU5DRV9BTFBIQSc7Cisg
ICAgICAgIGNhc2UgZ2wuQUxQSEE6IHJldHVybiAnZ2wuQUxQSEEnOworICAgICAgICBjYXNlIGds
LlJHQjogcmV0dXJuICdnbC5SR0InOworICAgICAgICBjYXNlIGdsLlJHQkE6IHJldHVybiAnZ2wu
UkdCQSc7CisgICAgICAgIGNhc2UgZ2wuUkdCQTQ6IHJldHVybiAnZ2wuUkdCQTQnOworICAgICAg
ICBjYXNlIGdsLlJHQjVfQTE6IHJldHVybiAnZ2wuUkdCNV9BMSc7CisgICAgICAgIGNhc2UgZ2wu
UkdCNTY1OiByZXR1cm4gJ2dsLlJHQjU2NSc7CisgICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9O
RU5UMTY6IHJldHVybiAnZ2wuREVQVEhfQ09NUE9ORU5UMTYnOworICAgICAgICBjYXNlIGdsLlNU
RU5DSUxfSU5ERVg4OiByZXR1cm4gJ2dsLlNURU5DSUxfSU5ERVg4JzsKKyAgICAgICAgY2FzZSBn
bC5SRzogcmV0dXJuICdnbC5SRyc7CisgICAgICAgIGNhc2UgZ2wuUkVEOiByZXR1cm4gJ2dsLlJF
RCc7CisgICAgICAgIGNhc2UgZ2wuUkdCQV9JTlRFR0VSOiByZXR1cm4gJ2dsLlJHQkFfSU5URUdF
Uic7CisgICAgICAgIGNhc2UgZ2wuUkdCX0lOVEVHRVI6IHJldHVybiAnZ2wuUkdCX0lOVEVHRVIn
OworICAgICAgICBjYXNlIGdsLlJHX0lOVEVHRVI6IHJldHVybiAnZ2wuUkdfSU5URUdFUic7Cisg
ICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6IHJldHVybiAnZ2wuUkVEX0lOVEVHRVInOworICAg
ICAgICBjYXNlIGdsLkRFUFRIX0NPTVBPTkVOVDogcmV0dXJuICdnbC5ERVBUSF9DT01QT05FTlQn
OworICAgICAgICBjYXNlIGdsLkRFUFRIX1NURU5DSUw6IHJldHVybiAnZ2wuREVQVEhfU1RFTkNJ
TCc7CisgICAgICAgIGNhc2UgZ2wuUkdCQTMyRjogcmV0dXJuICdnbC5SR0JBMzJGJzsKKyAgICAg
ICAgY2FzZSBnbC5SR0JBMzJJOiByZXR1cm4gJ2dsLlJHQkEzMkknOworICAgICAgICBjYXNlIGds
LlJHQkEzMlVJOiByZXR1cm4gJ2dsLlJHQkEzMlVJJzsKKyAgICAgICAgLy8gY2FzZSBnbC5SR0JB
MTY6IHJldHVybiAnZ2wuUkdCQTE2JzsKKyAgICAgICAgLy8gY2FzZSBnbC5SR0JBMTZfU05PUk06
IHJldHVybiAnZ2wuUkdCQTE2X1NOT1JNJzsKKyAgICAgICAgY2FzZSBnbC5SR0JBMTZGOiByZXR1
cm4gJ2dsLlJHQkExNkYnOworICAgICAgICBjYXNlIGdsLlJHQkExNkk6IHJldHVybiAnZ2wuUkdC
QTE2SSc7CisgICAgICAgIGNhc2UgZ2wuUkdCQTE2VUk6IHJldHVybiAnZ2wuUkdCQTE2VUknOwor
ICAgICAgICBjYXNlIGdsLlJHQkE4OiByZXR1cm4gJ2dsLlJHQkE4JzsKKyAgICAgICAgY2FzZSBn
bC5SR0JBOEk6IHJldHVybiAnZ2wuUkdCQThJJzsKKyAgICAgICAgY2FzZSBnbC5SR0JBOFVJOiBy
ZXR1cm4gJ2dsLlJHQkE4VUknOworICAgICAgICBjYXNlIGdsLlNSR0I4X0FMUEhBODogcmV0dXJu
ICdnbC5TUkdCOF9BTFBIQTgnOworICAgICAgICBjYXNlIGdsLlJHQjEwX0EyOiByZXR1cm4gJ2ds
LlJHQjEwX0EyJzsKKyAgICAgICAgY2FzZSBnbC5SR0IxMF9BMlVJOiByZXR1cm4gJ2dsLlJHQjEw
X0EyVUknOworICAgICAgICBjYXNlIGdsLlJHQkE4X1NOT1JNOiByZXR1cm4gJ2dsLlJHQkE4X1NO
T1JNJzsKKyAgICAgICAgY2FzZSBnbC5SR0I4OiByZXR1cm4gJ2dsLlJHQjgnOworICAgICAgICBj
YXNlIGdsLlIxMUZfRzExRl9CMTBGOiByZXR1cm4gJ2dsLlIxMUZfRzExRl9CMTBGJzsKKyAgICAg
ICAgY2FzZSBnbC5SR0IzMkY6IHJldHVybiAnZ2wuUkdCMzJGJzsKKyAgICAgICAgY2FzZSBnbC5S
R0IzMkk6IHJldHVybiAnZ2wuUkdCMzJJJzsKKyAgICAgICAgY2FzZSBnbC5SR0IzMlVJOiByZXR1
cm4gJ2dsLlJHQjMyVUknOworICAgICAgICAvLyBjYXNlIGdsLlJHQjE2OiByZXR1cm4gJ2dsLlJH
QjE2JzsKKyAgICAgICAgLy8gY2FzZSBnbC5SR0IxNl9TTk9STTogcmV0dXJuICdnbC5SR0IxNl9T
Tk9STSc7CisgICAgICAgIGNhc2UgZ2wuUkdCMTZGOiByZXR1cm4gJ2dsLlJHQjE2Ric7CisgICAg
ICAgIGNhc2UgZ2wuUkdCMTZJOiByZXR1cm4gJ2dsLlJHQjE2SSc7CisgICAgICAgIGNhc2UgZ2wu
UkdCMTZVSTogcmV0dXJuICdnbC5SR0IxNlVJJzsKKyAgICAgICAgY2FzZSBnbC5SR0I4X1NOT1JN
OiByZXR1cm4gJ2dsLlJHQjhfU05PUk0nOworICAgICAgICBjYXNlIGdsLlJHQjhJOiByZXR1cm4g
J2dsLlJHQjhJJzsKKyAgICAgICAgY2FzZSBnbC5SR0I4VUk6IHJldHVybiAnZ2wuUkdCOFVJJzsK
KyAgICAgICAgY2FzZSBnbC5TUkdCODogcmV0dXJuICdnbC5TUkdCOCc7CisgICAgICAgIGNhc2Ug
Z2wuUkdCOV9FNTogcmV0dXJuICdnbC5SR0I5X0U1JzsKKyAgICAgICAgY2FzZSBnbC5SRzMyRjog
cmV0dXJuICdnbC5SRzMyRic7CisgICAgICAgIGNhc2UgZ2wuUkczMkk6IHJldHVybiAnZ2wuUkcz
MkknOworICAgICAgICBjYXNlIGdsLlJHMzJVSTogcmV0dXJuICdnbC5SRzMyVUknOworICAgICAg
ICAvLyBjYXNlIGdsLlJHMTY6IHJldHVybiAnZ2wuUkcxNic7CisgICAgICAgIC8vIGNhc2UgZ2wu
UkcxNl9TTk9STTogcmV0dXJuICdnbC5SRzE2X1NOT1JNJzsKKyAgICAgICAgY2FzZSBnbC5SRzE2
RjogcmV0dXJuICdnbC5SRzE2Ric7CisgICAgICAgIGNhc2UgZ2wuUkcxNkk6IHJldHVybiAnZ2wu
UkcxNkknOworICAgICAgICBjYXNlIGdsLlJHMTZVSTogcmV0dXJuICdnbC5SRzE2VUknOworICAg
ICAgICBjYXNlIGdsLlJHODogcmV0dXJuICdnbC5SRzgnOworICAgICAgICBjYXNlIGdsLlJHOEk6
IHJldHVybiAnZ2wuUkc4SSc7CisgICAgICAgIGNhc2UgZ2wuUkc4VUk6IHJldHVybiAnZ2wuUkc4
VUknOworICAgICAgICBjYXNlIGdsLlJHOF9TTk9STTogcmV0dXJuICdnbC5SRzhfU05PUk0nOwor
ICAgICAgICBjYXNlIGdsLlIzMkY6IHJldHVybiAnZ2wuUjMyRic7CisgICAgICAgIGNhc2UgZ2wu
UjMySTogcmV0dXJuICdnbC5SMzJJJzsKKyAgICAgICAgY2FzZSBnbC5SMzJVSTogcmV0dXJuICdn
bC5SMzJVSSc7CisgICAgICAgIC8vIGNhc2UgZ2wuUjE2OiByZXR1cm4gJ2dsLlIxNic7CisgICAg
ICAgIC8vIGNhc2UgZ2wuUjE2X1NOT1JNOiByZXR1cm4gJ2dsLlIxNl9TTk9STSc7CisgICAgICAg
IGNhc2UgZ2wuUjE2RjogcmV0dXJuICdnbC5SMTZGJzsKKyAgICAgICAgY2FzZSBnbC5SMTZJOiBy
ZXR1cm4gJ2dsLlIxNkknOworICAgICAgICBjYXNlIGdsLlIxNlVJOiByZXR1cm4gJ2dsLlIxNlVJ
JzsKKyAgICAgICAgY2FzZSBnbC5SODogcmV0dXJuICdnbC5SOCc7CisgICAgICAgIGNhc2UgZ2wu
UjhJOiByZXR1cm4gJ2dsLlI4SSc7CisgICAgICAgIGNhc2UgZ2wuUjhVSTogcmV0dXJuICdnbC5S
OFVJJzsKKyAgICAgICAgY2FzZSBnbC5SOF9TTk9STTogcmV0dXJuICdnbC5SOF9TTk9STSc7Cisg
ICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMzJGOiByZXR1cm4gJ2dsLkRFUFRIX0NPTVBP
TkVOVDMyRic7CisgICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMjQ6IHJldHVybiAnZ2wu
REVQVEhfQ09NUE9ORU5UMjQnOworICAgICAgICBjYXNlIGdsLkRFUFRIMzJGX1NURU5DSUw4OiBy
ZXR1cm4gJ2dsLkRFUFRIMzJGX1NURU5DSUw4JzsKKyAgICAgICAgY2FzZSBnbC5ERVBUSDI0X1NU
RU5DSUw4OiByZXR1cm4gJ2dsLkRFUFRIMjRfU1RFTkNJTDgnOworICAgICAgICAvLyBjYXNlIGds
LlJHQjEwOiByZXR1cm4gJ2dsLlJHQjEwJzsKKyAgICAgICAgLy8gY2FzZSBnbC5ERVBUSF9DT01Q
T05FTlQzMjogcmV0dXJuICdnbC5ERVBUSF9DT01QT05FTlQzMic7CisgICAgICAgIGNhc2UgZ2wu
U1JHQjogcmV0dXJuICdnbC5TUkdCJzsKKyAgICAgICAgLy8gY2FzZSBnbC5TUkdCX0FMUEhBOiBy
ZXR1cm4gJ2dsLlNSR0JfQUxQSEEnOworICAgICAgICBkZWZhdWx0OiByZXR1cm4gJyc7CisgICAg
fQorfTsKKworZ2x1U3RyVXRpbC5nZXRUeXBlTmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAg
c3dpdGNoICh2YWx1ZSkgeworICAgICAgICBjYXNlIGdsLkJZVEU6IHJldHVybiAnZ2wuQllURSc7
CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfQllURTogcmV0dXJuICdnbC5VTlNJR05FRF9CWVRF
JzsKKyAgICAgICAgY2FzZSBnbC5TSE9SVDogcmV0dXJuICdnbC5TSE9SVCc7CisgICAgICAgIGNh
c2UgZ2wuVU5TSUdORURfU0hPUlQ6IHJldHVybiAnZ2wuVU5TSUdORURfU0hPUlQnOworICAgICAg
ICBjYXNlIGdsLklOVDogcmV0dXJuICdnbC5JTlQnOworICAgICAgICBjYXNlIGdsLlVOU0lHTkVE
X0lOVDogcmV0dXJuICdnbC5VTlNJR05FRF9JTlQnOworICAgICAgICBjYXNlIGdsLkZMT0FUOiBy
ZXR1cm4gJ2dsLkZMT0FUJzsKKyAgICAgICAgLy8gY2FzZSBnbC5GSVhFRDogcmV0dXJuICdnbC5G
SVhFRCc7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNV82XzU6IHJldHVybiAnZ2wu
VU5TSUdORURfU0hPUlRfNV82XzUnOworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUXzRf
NF80XzQ6IHJldHVybiAnZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNCc7CisgICAgICAgIGNhc2Ug
Z2wuVU5TSUdORURfU0hPUlRfNV81XzVfMTogcmV0dXJuICdnbC5VTlNJR05FRF9TSE9SVF81XzVf
NV8xJzsKKyAgICAgICAgY2FzZSBnbC5IQUxGX0ZMT0FUOiByZXR1cm4gJ2dsLkhBTEZfRkxPQVQn
OworICAgICAgICBjYXNlIGdsLklOVF8yXzEwXzEwXzEwX1JFVjogcmV0dXJuICdnbC5JTlRfMl8x
MF8xMF8xMF9SRVYnOworICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
VjogcmV0dXJuICdnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYnOworICAgICAgICBjYXNl
IGdsLlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6IHJldHVybiAnZ2wuVU5TSUdORURfSU5U
XzEwRl8xMUZfMTFGX1JFVic7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UXzVfOV85Xzlf
UkVWOiByZXR1cm4gJ2dsLlVOU0lHTkVEX0lOVF81XzlfOV85X1JFVic7CisgICAgICAgIGNhc2Ug
Z2wuVU5TSUdORURfSU5UXzI0Xzg6IHJldHVybiAnZ2wuVU5TSUdORURfSU5UXzI0XzgnOworICAg
ICAgICBjYXNlIGdsLkZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVjogcmV0dXJuICdnbC5G
TE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYnOworICAgICAgICBjYXNlIGdsLlNJR05FRF9O
T1JNQUxJWkVEOiByZXR1cm4gJ2dsLlNJR05FRF9OT1JNQUxJWkVEJzsKKyAgICAgICAgY2FzZSBn
bC5VTlNJR05FRF9OT1JNQUxJWkVEOiByZXR1cm4gJ2dsLlVOU0lHTkVEX05PUk1BTElaRUQnOwor
ICAgICAgICAvLyBjYXNlIGdsLkhBTEZfRkxPQVRfT0VTOiByZXR1cm4gJ2dsLkhBTEZfRkxPQVRf
T0VTJzsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuICcnOworICAgIH0KK307CisKK2dsdVN0clV0
aWwuZ2V0RXJyb3JOYW1lID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZhbHVlKSB7
CisgICAgICAgIGNhc2UgZ2wuTk9fRVJST1I6IHJldHVybiAnZ2wuTk9fRVJST1InOworICAgICAg
ICBjYXNlIGdsLklOVkFMSURfRU5VTTogcmV0dXJuICdnbC5JTlZBTElEX0VOVU0nOworICAgICAg
ICBjYXNlIGdsLklOVkFMSURfVkFMVUU6IHJldHVybiAnZ2wuSU5WQUxJRF9WQUxVRSc7CisgICAg
ICAgIGNhc2UgZ2wuSU5WQUxJRF9PUEVSQVRJT046IHJldHVybiAnZ2wuSU5WQUxJRF9PUEVSQVRJ
T04nOworICAgICAgICBjYXNlIGdsLk9VVF9PRl9NRU1PUlk6IHJldHVybiAnZ2wuT1VUX09GX01F
TU9SWSc7CisgICAgICAgIC8vIGNhc2UgZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046
IHJldHVybiAnZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04nOworICAgICAgICBkZWZh
dWx0OiByZXR1cm4gJyc7CisgICAgfQorfTsKKworZ2x1U3RyVXRpbC5nZXRGcmFtZWJ1ZmZlclN0
YXR1c05hbWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICAg
ICAgY2FzZSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURTogcmV0dXJuICdnbC5GUkFNRUJVRkZFUl9D
T01QTEVURSc7CisgICAgICAgIGNhc2UgZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5UOiByZXR1cm4gJ2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCc7CisgICAg
ICAgIGNhc2UgZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ6IHJl
dHVybiAnZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQnOworICAg
ICAgICBjYXNlIGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzogcmV0dXJuICdn
bC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMnOworICAgICAgICBjYXNlIGdsLkZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEOiByZXR1cm4gJ2dsLkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVE
JzsKKyAgICAgICAgY2FzZSBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFOiBy
ZXR1cm4gJ2dsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUnOworICAgIC8vICAg
IGNhc2U6IGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTEFZRVJfVEFSR0VUUzogcmV0dXJuICdn
bC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0xBWUVSX1RBUkdFVFMnOworICAgICAgICBkZWZhdWx0
OiByZXR1cm4gJyc7CisgICAgfQorfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1
VGV4dHVyZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVUZXh0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjYzMzNTg4
ZTEzODhjMmQ3YjA3MDc2ZjUwYjBjYmE5Nzc1ZDcyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9v
cGVuZ2wvZ2x1VGV4dHVyZS5qcwpAQCAtMCwwICsxLDM4MCBAQAorLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAq
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq
IENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1Q29tcHJlc3NlZFRleHR1
cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rp
b24oKSB7CisKK3ZhciBnbHVUZXh0dXJlID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlOwor
dmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKK3Zh
ciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIHRjdUNvbXBy
ZXNzZWRUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VDb21wcmVzc2VkVGV4dHVyZTsKK3Zh
ciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKK3ZhciBERV9BU1NF
UlQgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKCF4KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0Fzc2VydCBmYWlsZWQnKTsKK307CisKKy8qKiBAZW51bSB7bnVtYmVyfSAqLworZ2x1VGV4dHVy
ZS5UeXBlID0geworICAgIFRZUEVfTk9ORTogMCwKKyAgICBUWVBFXzJEOiAxLAorICAgIFRZUEVf
Q1VCRV9NQVA6IDIsCisgICAgVFlQRV8yRF9BUlJBWTogMywKKyAgICBUWVBFXzNEOiA0Cit9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHVUZXh0dXJlLlRleHR1cmUyRCA9IGZ1bmN0
aW9uKGdsLCBmb3JtYXQsIGlzQ29tcHJlc3NlZCwgcmVmVGV4dHVyZSkgeworICAgIHRoaXMuZ2wg
PSBnbDsKKyAgICB0aGlzLm1fZ2xUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIHRo
aXMubV9pc0NvbXByZXNzZWQgPSBpc0NvbXByZXNzZWQ7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGZv
cm1hdDsgLy8gSW50ZXJuYWwgZm9ybWF0CisgICAgdGhpcy5tX3JlZlRleHR1cmUgPSByZWZUZXh0
dXJlOworICAgIHRoaXMubV90eXBlID0gZ2x1VGV4dHVyZS5UeXBlLlRZUEVfMkQ7Cit9OworCitn
bHVUZXh0dXJlLlRleHR1cmUyRC5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzLm1fdHlwZTsKK307CisKK2dsdVRleHR1cmUuVGV4dHVyZTJELnByb3RvdHlw
ZS5nZXRSZWZUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubV9yZWZUZXh0
dXJlOworfTsKKworZ2x1VGV4dHVyZS5UZXh0dXJlMkQucHJvdG90eXBlLmdldEdMVGV4dHVyZSA9
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fZ2xUZXh0dXJlOworfTsKKworZ2x1VGV4
dHVyZS50ZXh0dXJlMkRGcm9tRm9ybWF0ID0gZnVuY3Rpb24oZ2wsIGZvcm1hdCwgZGF0YVR5cGUs
IHdpZHRoLCBoZWlnaHQpIHsKKyAgICB2YXIgdGV4ID0gbmV3IGdsdVRleHR1cmUuVGV4dHVyZTJE
KGdsLCBmb3JtYXQsIGZhbHNlLCBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlMkQoZ2x1VGV4dHVyZVV0
aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQsIGRhdGFUeXBlKSwgd2lkdGgsIGhlaWdodCkp
OworICAgIHJldHVybiB0ZXg7Cit9OworCitnbHVUZXh0dXJlLnRleHR1cmUyREZyb21JbnRlcm5h
bEZvcm1hdCA9IGZ1bmN0aW9uKGdsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCkgewor
ICAgIHZhciB0ZXggPSBuZXcgZ2x1VGV4dHVyZS5UZXh0dXJlMkQoZ2wsIGludGVybmFsRm9ybWF0
LCBmYWxzZSwgbmV3IHRjdVRleHR1cmUuVGV4dHVyZTJEKGdsdVRleHR1cmVVdGlsLm1hcEdMSW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJu
IHRleDsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICogQHBhcmFt
IHtBcnJheTx0Y3VDb21wcmVzc2VkVGV4dHVyZS5Db21wcmVzc2VkVGV4dHVyZT59IGxldmVscwor
ICogQHJldHVybiB7Z2x1VGV4dHVyZS5UZXh0dXJlMkR9CisgKi8KK2dsdVRleHR1cmUudGV4dHVy
ZTJERnJvbUNvbXByZXNzZWRUZXh0dXJlID0gZnVuY3Rpb24oZ2wsIG51bUxldmVscywgbGV2ZWxz
KSB7CisgICAgdmFyIGxldmVsID0gbGV2ZWxzWzBdOworICAgIHZhciBmb3JtYXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRHTEZvcm1hdChsZXZlbC5nZXRGb3JtYXQoKSk7CisgICAgdmFyIHJlZlRleCA9
IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmUyRChsZXZlbC5nZXRVbmNvbXByZXNzZWRGb3JtYXQoKSwg
bGV2ZWwuZ2V0V2lkdGgoKSwgbGV2ZWwuZ2V0SGVpZ2h0KCkpOworICAgIC8qKiBAdHlwZSB7Z2x1
VGV4dHVyZS5UZXh0dXJlMkR9ICovIHZhciB0ZXgyZCA9IG5ldyBnbHVUZXh0dXJlLlRleHR1cmUy
RChnbCwgZm9ybWF0LCB0cnVlLCByZWZUZXgpOworCisgICAgdGV4MmQubG9hZENvbXByZXNzZWQo
bnVtTGV2ZWxzLCBsZXZlbHMpOworCisgICAgcmV0dXJuIHRleDJkOworfTsKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IG51bUxldmVscworICogQHBhcmFtIHtBcnJheTx0Y3VDb21wcmVzc2VkVGV4
dHVyZS5Db21wcmVzc2VkVGV4dHVyZT59IGxldmVscworICovCitnbHVUZXh0dXJlLlRleHR1cmUy
RC5wcm90b3R5cGUubG9hZENvbXByZXNzZWQgPSBmdW5jdGlvbihudW1MZXZlbHMsIGxldmVscykg
eworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29tcHJlc3NlZEZvcm1hdCA9IGdsdVRl
eHR1cmVVdGlsLmdldEdMRm9ybWF0KGxldmVsc1swXS5nZXRGb3JtYXQoKSk7CisKKyAgICBhc3Nl
cnRNc2dPcHRpb25zKHRoaXMubV9nbFRleHR1cmUsICdtX2dsVGV4dHVyZSBub3QgZGVmaW5lZCcs
IGZhbHNlLCB0cnVlKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0aGlzLm1f
Z2xUZXh0dXJlKTsKKworICAgIGZvciAodmFyIGxldmVsTmR4ID0gMDsgbGV2ZWxOZHggPCBudW1M
ZXZlbHM7IGxldmVsTmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VDb21wcmVzc2VkVGV4
dHVyZS5Db21wcmVzc2VkVGV4dHVyZX0gKi8gdmFyIGxldmVsID0gbGV2ZWxzW2xldmVsTmR4XTsK
KworICAgICAgICAvLyBEZWNvbXByZXNzIHRvIHJlZmVyZW5jZSB0ZXh0dXJlLgorICAgICAgICB0
aGlzLm1fcmVmVGV4dHVyZS5hbGxvY0xldmVsKGxldmVsTmR4KTsKKyAgICAgICAgLyoqIEB0eXBl
IHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgcmVmTGV2ZWxBY2Nlc3MgPSB0
aGlzLm1fcmVmVGV4dHVyZS5nZXRMZXZlbChsZXZlbE5keCk7CisgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMobGV2ZWwuZ2V0V2lkdGgoKSA9PSByZWZMZXZlbEFjY2Vzcy5nZXRXaWR0aCgpICYmIGxl
dmVsLmdldEhlaWdodCgpID09IHJlZkxldmVsQWNjZXNzLmdldEhlaWdodCgpLCAnbGV2ZWwgYW5k
IHJlZmVyZW5jZSBzaXplcyBub3QgZXF1YWwnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGxldmVs
LmRlY29tcHJlc3MocmVmTGV2ZWxBY2Nlc3MpOworCisgICAgICAgIC8vIFVwbG9hZCB0byBHTCB0
ZXh0dXJlIGluIGNvbXByZXNzZWQgZm9ybS4KKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgbGV2ZWxOZHgsIGNvbXByZXNzZWRGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmdldFdpZHRoKCksIGxldmVsLmdldEhlaWdodCgp
LCAwLCBsZXZlbC5nZXREYXRhKCkpOworICAgIH0KK307CisKK2dsdVRleHR1cmUuY29tcHV0ZVBp
eGVsU3RvcmUgPSBmdW5jdGlvbigvKmNvbnN0IHRjdTo6VGV4dHVyZUZvcm1hdCYqLyBmb3JtYXQp
IHsKKyAgICB2YXIgcGl4ZWxTaXplID0gZm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgIGlmIChk
ZU1hdGguZGVJc1Bvd2VyT2ZUd28zMihwaXhlbFNpemUpKQorICAgICAgICByZXR1cm4gTWF0aC5t
aW4ocGl4ZWxTaXplLCA4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAxOworfTsKKworZ2x1
VGV4dHVyZS5jdWJlRmFjZVRvR0xGYWNlID0gZnVuY3Rpb24oLyp0Y3U6OkN1YmVGYWNlKi8gZmFj
ZSkgeworICAgIHN3aXRjaCAoZmFjZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZh
Y2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWDogcmV0dXJuIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWDsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZF
X1g6IHJldHVybiBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9ZOiByZXR1cm4gZ2wuVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2Uu
Q1VCRUZBQ0VfUE9TSVRJVkVfWTogcmV0dXJuIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1o6
IHJldHVybiBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9aOiByZXR1cm4gZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9aOworICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2du
aXplZCBmYWNlOiAnICsgZmFjZSk7Cit9OworCitnbHVUZXh0dXJlLlRleHR1cmUyRC5wcm90b3R5
cGUudXBsb2FkID0gZnVuY3Rpb24oKSB7CisgICAgREVfQVNTRVJUKCF0aGlzLm1faXNDb21wcmVz
c2VkKTsKKworICAgIGlmICh0aGlzLm1fZ2xUZXh0dXJlID09IG51bGwpCisgICAgICAgIHRlc3RG
YWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gY3JlYXRlIEdMIHRleHR1cmUnLCB0cnVlKTsKKworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRoaXMubV9nbFRleHR1cmUpOworICAgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIGdsdVRleHR1cmUuY29tcHV0ZVBpeGVs
U3RvcmUodGhpcy5tX3JlZlRleHR1cmUuZ2V0Rm9ybWF0KCkpKTsKKyAgICBhc3NlcnRNc2dPcHRp
b25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAnU2V0dGluZyBwaXhlbCBzdG9yZSBm
YWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB2YXIgdHJhbnNmZXJGb3JtYXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fcmVmVGV4dHVyZS5nZXRGb3JtYXQoKSk7
CisKKyAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7IGxldmVsTmR4IDwgdGhpcy5tX3JlZlRleHR1
cmUuZ2V0TnVtTGV2ZWxzKCk7IGxldmVsTmR4KyspIHsKKyAgICAgICAgaWYgKHRoaXMubV9yZWZU
ZXh0dXJlLmlzTGV2ZWxFbXB0eShsZXZlbE5keCkpCisgICAgICAgICAgICBjb250aW51ZTsgLy8g
RG9uJ3QgdXBsb2FkLgorCisgICAgICAgIHZhciBhY2Nlc3MgPSB0aGlzLm1fcmVmVGV4dHVyZS5n
ZXRMZXZlbChsZXZlbE5keCk7CisgICAgICAgIERFX0FTU0VSVChhY2Nlc3MuZ2V0Um93UGl0Y2go
KSA9PSBhY2Nlc3MuZ2V0Rm9ybWF0KCkuZ2V0UGl4ZWxTaXplKCkgKiBhY2Nlc3MuZ2V0V2lkdGgo
KSk7CisgICAgICAgIHZhciBkYXRhID0gYWNjZXNzLmdldERhdGFQdHIoKTsKKyAgICAgICAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCBsZXZlbE5keCwgdGhpcy5tX2Zvcm1hdCwgYWNjZXNz
LmdldFdpZHRoKCksIGFjY2Vzcy5nZXRIZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIHRyYW5zZmVy
Rm9ybWF0LmZvcm1hdCwgdHJhbnNmZXJGb3JtYXQuZGF0YVR5cGUsIGFjY2Vzcy5nZXREYXRhUHRy
KCkpOworICAgIH0KKworICAgIGFzc2VydE1zZ09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wu
Tk9fRVJST1IsICdUZXh0dXJlIHVwbG9hZCBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsdVRleHR1cmUuVGV4dHVyZTJEfQor
ICovCitnbHVUZXh0dXJlLlRleHR1cmVDdWJlID0gZnVuY3Rpb24oZ2wsIGZvcm1hdCwgaXNDb21w
cmVzc2VkLCByZWZUZXh0dXJlKSB7CisgICAgZ2x1VGV4dHVyZS5UZXh0dXJlMkQuY2FsbCh0aGlz
LCBnbCwgZm9ybWF0LCBpc0NvbXByZXNzZWQsIHJlZlRleHR1cmUpOworICAgIHRoaXMubV90eXBl
ID0gZ2x1VGV4dHVyZS5UeXBlLlRZUEVfQ1VCRV9NQVA7Cit9OworCitnbHVUZXh0dXJlLlRleHR1
cmVDdWJlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2x1VGV4dHVyZS5UZXh0dXJlMkQucHJv
dG90eXBlKTsKK2dsdVRleHR1cmUuVGV4dHVyZUN1YmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Z2x1VGV4dHVyZS5UZXh0dXJlQ3ViZTsKKworZ2x1VGV4dHVyZS5UZXh0dXJlQ3ViZS5wcm90b3R5
cGUudXBsb2FkID0gZnVuY3Rpb24oKSB7CisgICAgREVfQVNTRVJUKCF0aGlzLm1faXNDb21wcmVz
c2VkKTsKKworICAgIGlmICh0aGlzLm1fZ2xUZXh0dXJlID09IG51bGwpCisgICAgICAgIHRlc3RG
YWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gY3JlYXRlIEdMIHRleHR1cmUnLCB0cnVlKTsKKworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRoaXMubV9nbFRleHR1cmUpOwor
ICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIGdsdVRleHR1cmUuY29tcHV0
ZVBpeGVsU3RvcmUodGhpcy5tX3JlZlRleHR1cmUuZ2V0Rm9ybWF0KCkpKTsKKyAgICBhc3NlcnRN
c2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAnU2V0dGluZyBwaXhlbCBz
dG9yZSBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB2YXIgdHJhbnNmZXJGb3JtYXQgPSBn
bHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fcmVmVGV4dHVyZS5nZXRGb3Jt
YXQoKSk7CisKKyAgICBmb3IgKHZhciBmYWNlIGluIHRjdVRleHR1cmUuQ3ViZUZhY2UpIHsKKyAg
ICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IHRoaXMubV9yZWZUZXh0dXJl
LmdldE51bUxldmVscygpOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICBpZiAodGhpcy5tX3Jl
ZlRleHR1cmUuaXNMZXZlbEVtcHR5KHRjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZV0sIGxldmVsTmR4
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgdXBsb2FkLgorCisgICAgICAg
ICAgICAvKnRjdTo6Q29uc3RQaXhlbEJ1ZmZlckFjY2VzcyovIHZhciBhY2Nlc3MgPSB0aGlzLm1f
cmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UobGV2ZWxOZHgsIHRjdVRleHR1cmUuQ3ViZUZhY2VbZmFj
ZV0pOworICAgICAgICAgICAgREVfQVNTRVJUKGFjY2Vzcy5nZXRSb3dQaXRjaCgpID09IGFjY2Vz
cy5nZXRGb3JtYXQoKS5nZXRQaXhlbFNpemUoKSAqIGFjY2Vzcy5nZXRXaWR0aCgpKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlMkQoZ2x1VGV4dHVyZS5jdWJlRmFjZVRvR0xGYWNlKHRjdVRleHR1
cmUuQ3ViZUZhY2VbZmFjZV0pLCBsZXZlbE5keCwgdGhpcy5tX2Zvcm1hdCwgYWNjZXNzLmdldFdp
ZHRoKCksIGFjY2Vzcy5nZXRIZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIHRyYW5zZmVyRm9ybWF0
LmZvcm1hdCwgdHJhbnNmZXJGb3JtYXQuZGF0YVR5cGUsIGFjY2Vzcy5nZXREYXRhUHRyKCkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09
PSBnbC5OT19FUlJPUiwgJ1RleHR1cmUgdXBsb2FkIGZhaWxlZCcsIGZhbHNlLCB0cnVlKTsKK307
CisKK2dsdVRleHR1cmUuY3ViZUZyb21Gb3JtYXQgPSBmdW5jdGlvbihnbCwgZm9ybWF0LCBkYXRh
VHlwZSwgc2l6ZSkgeworICAgIHZhciB0ZXggPSBuZXcgZ2x1VGV4dHVyZS5UZXh0dXJlQ3ViZShn
bCwgZm9ybWF0LCBmYWxzZSwgbmV3IHRjdVRleHR1cmUuVGV4dHVyZUN1YmUoZ2x1VGV4dHVyZVV0
aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQsIGRhdGFUeXBlKSwgc2l6ZSkpOworICAgIHJl
dHVybiB0ZXg7Cit9OworCitnbHVUZXh0dXJlLmN1YmVGcm9tSW50ZXJuYWxGb3JtYXQgPSBmdW5j
dGlvbihnbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUpIHsKKyAgICB2YXIgdGV4ID0gbmV3IGdsdVRl
eHR1cmUuVGV4dHVyZUN1YmUoZ2wsIGludGVybmFsRm9ybWF0LCBmYWxzZSwgbmV3IHRjdVRleHR1
cmUuVGV4dHVyZUN1YmUoZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRlcm5h
bEZvcm1hdCksIHNpemUpKTsKKyAgICByZXR1cm4gdGV4OworfTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBleHRlbmRzIHtnbHVUZXh0dXJlLlRleHR1cmUyRH0KKyAqLworZ2x1VGV4dHVy
ZS5UZXh0dXJlMkRBcnJheSA9IGZ1bmN0aW9uKGdsLCBmb3JtYXQsIGlzQ29tcHJlc3NlZCwgcmVm
VGV4dHVyZSkgeworICAgIGdsdVRleHR1cmUuVGV4dHVyZTJELmNhbGwodGhpcywgZ2wsIGZvcm1h
dCwgaXNDb21wcmVzc2VkLCByZWZUZXh0dXJlKTsKKyAgICB0aGlzLm1fdHlwZSA9IGdsdVRleHR1
cmUuVHlwZS5UWVBFXzJEX0FSUkFZOworfTsKKworZ2x1VGV4dHVyZS5UZXh0dXJlMkRBcnJheS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsdVRleHR1cmUuVGV4dHVyZTJELnByb3RvdHlwZSk7
CitnbHVUZXh0dXJlLlRleHR1cmUyREFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsdVRl
eHR1cmUuVGV4dHVyZTJEQXJyYXk7CisKK2dsdVRleHR1cmUuVGV4dHVyZTJEQXJyYXkucHJvdG90
eXBlLnVwbG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghZ2wudGV4SW1hZ2UzRCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdnbC5UZXhJbWFnZTNEKCkgaXMgbm90IHN1cHBvcnRlZCcpOwor
CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGhpcy5tX2dsVGV4dHVy
ZSk7CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgZ2x1VGV4dHVyZS5j
b21wdXRlUGl4ZWxTdG9yZSh0aGlzLm1fcmVmVGV4dHVyZS5nZXRGb3JtYXQoKSkpOworICAgIGFz
c2VydE1zZ09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdUZXh0dXJlIHVw
bG9hZCBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB2YXIgdHJhbnNmZXJGb3JtYXQgPSBn
bHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fcmVmVGV4dHVyZS5nZXRGb3Jt
YXQoKSk7CisKKyAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7IGxldmVsTmR4IDwgdGhpcy5tX3Jl
ZlRleHR1cmUuZ2V0TnVtTGV2ZWxzKCk7IGxldmVsTmR4KyspIHsKKyAgICAgICAgaWYgKHRoaXMu
bV9yZWZUZXh0dXJlLmlzTGV2ZWxFbXB0eShsZXZlbE5keCkpCisgICAgICAgICAgICBjb250aW51
ZTsgLy8gRG9uJ3QgdXBsb2FkLgorCisgICAgICAgIC8qdGN1OjpDb25zdFBpeGVsQnVmZmVyQWNj
ZXNzKi8gdmFyIGFjY2VzcyA9IHRoaXMubV9yZWZUZXh0dXJlLmdldExldmVsKGxldmVsTmR4KTsK
KyAgICAgICAgREVfQVNTRVJUKGFjY2Vzcy5nZXRSb3dQaXRjaCgpID09IGFjY2Vzcy5nZXRGb3Jt
YXQoKS5nZXRQaXhlbFNpemUoKSAqIGFjY2Vzcy5nZXRXaWR0aCgpKTsKKyAgICAgICAgREVfQVNT
RVJUKGFjY2Vzcy5nZXRTbGljZVBpdGNoKCkgPT0gYWNjZXNzLmdldEZvcm1hdCgpLmdldFBpeGVs
U2l6ZSgpICogYWNjZXNzLmdldFdpZHRoKCkgKiBhY2Nlc3MuZ2V0SGVpZ2h0KCkpOworICAgICAg
ICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIGxldmVsTmR4LCB0aGlzLm1fZm9y
bWF0LCBhY2Nlc3MuZ2V0V2lkdGgoKSwgYWNjZXNzLmdldEhlaWdodCgpLCBhY2Nlc3MuZ2V0RGVw
dGgoKSwgMCAvKiBib3JkZXIgKi8sIHRyYW5zZmVyRm9ybWF0LmZvcm1hdCwgdHJhbnNmZXJGb3Jt
YXQuZGF0YVR5cGUsIGFjY2Vzcy5nZXREYXRhUHRyKCkpOworICAgIH0KKworICAgIGFzc2VydE1z
Z09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdUZXh0dXJlIHVwbG9hZCBm
YWlsZWQnLCBmYWxzZSwgdHJ1ZSk7Cit9OworCitnbHVUZXh0dXJlLnRleHR1cmUyREFycmF5RnJv
bUZvcm1hdCA9IGZ1bmN0aW9uKGdsLCBmb3JtYXQsIGRhdGFUeXBlLCB3aWR0aCwgaGVpZ2h0LCBu
dW1MYXllcnMpIHsKKyAgICB2YXIgdGV4ID0gbmV3IGdsdVRleHR1cmUuVGV4dHVyZTJEQXJyYXko
Z2wsIGZvcm1hdCwgZmFsc2UsIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5KGdsdVRleHR1
cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoZm9ybWF0LCBkYXRhVHlwZSksIHdpZHRoLCBoZWln
aHQsIG51bUxheWVycykpOworICAgIHJldHVybiB0ZXg7Cit9OworCitnbHVUZXh0dXJlLnRleHR1
cmUyREFycmF5RnJvbUludGVybmFsRm9ybWF0ID0gZnVuY3Rpb24oZ2wsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBudW1MYXllcnMpIHsKKyAgICB2YXIgdGV4ID0gbmV3IGdsdVRleHR1
cmUuVGV4dHVyZTJEQXJyYXkoZ2wsIGludGVybmFsRm9ybWF0LCBmYWxzZSwgbmV3IHRjdVRleHR1
cmUuVGV4dHVyZTJEQXJyYXkoZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRl
cm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIG51bUxheWVycykpOworICAgIHJldHVybiB0ZXg7
Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsdVRleHR1cmUuVGV4
dHVyZTJEfQorICovCitnbHVUZXh0dXJlLlRleHR1cmUzRCA9IGZ1bmN0aW9uKGdsLCBmb3JtYXQs
IGlzQ29tcHJlc3NlZCwgcmVmVGV4dHVyZSkgeworICAgIGdsdVRleHR1cmUuVGV4dHVyZTJELmNh
bGwodGhpcywgZ2wsIGZvcm1hdCwgaXNDb21wcmVzc2VkLCByZWZUZXh0dXJlKTsKKyAgICB0aGlz
Lm1fdHlwZSA9IGdsdVRleHR1cmUuVHlwZS5UWVBFXzNEOworfTsKKworZ2x1VGV4dHVyZS5UZXh0
dXJlM0QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHVUZXh0dXJlLlRleHR1cmUyRC5wcm90
b3R5cGUpOworZ2x1VGV4dHVyZS5UZXh0dXJlM0QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2x1
VGV4dHVyZS5UZXh0dXJlM0Q7CisKK2dsdVRleHR1cmUuVGV4dHVyZTNELnByb3RvdHlwZS51cGxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIWdsLnRleEltYWdlM0QpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignZ2wuVGV4SW1hZ2UzRCgpIGlzIG5vdCBzdXBwb3J0ZWQnKTsKKworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfM0QsIHRoaXMubV9nbFRleHR1cmUpOworICAgIGdsLnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIGdsdVRleHR1cmUuY29tcHV0ZVBpeGVsU3Rv
cmUodGhpcy5tX3JlZlRleHR1cmUuZ2V0Rm9ybWF0KCkpKTsKKyAgICBhc3NlcnRNc2dPcHRpb25z
KGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAnVGV4dHVyZSB1cGxvYWQgZmFpbGVkJywg
ZmFsc2UsIHRydWUpOworCisgICAgdmFyIHRyYW5zZmVyRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwu
Z2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3JlZlRleHR1cmUuZ2V0Rm9ybWF0KCkpOworCisgICAg
Zm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IHRoaXMubV9yZWZUZXh0dXJlLmdldE51
bUxldmVscygpOyBsZXZlbE5keCsrKSB7CisgICAgICAgIGlmICh0aGlzLm1fcmVmVGV4dHVyZS5p
c0xldmVsRW1wdHkobGV2ZWxOZHgpKQorICAgICAgICAgICAgY29udGludWU7IC8vIERvbid0IHVw
bG9hZC4KKworICAgICAgICAvKnRjdTo6Q29uc3RQaXhlbEJ1ZmZlckFjY2VzcyovIHZhciBhY2Nl
c3MgPSB0aGlzLm1fcmVmVGV4dHVyZS5nZXRMZXZlbChsZXZlbE5keCk7CisgICAgICAgIERFX0FT
U0VSVChhY2Nlc3MuZ2V0Um93UGl0Y2goKSA9PSBhY2Nlc3MuZ2V0Rm9ybWF0KCkuZ2V0UGl4ZWxT
aXplKCkgKiBhY2Nlc3MuZ2V0V2lkdGgoKSk7CisgICAgICAgIERFX0FTU0VSVChhY2Nlc3MuZ2V0
U2xpY2VQaXRjaCgpID09IGFjY2Vzcy5nZXRGb3JtYXQoKS5nZXRQaXhlbFNpemUoKSAqIGFjY2Vz
cy5nZXRXaWR0aCgpICogYWNjZXNzLmdldEhlaWdodCgpKTsKKyAgICAgICAgZ2wudGV4SW1hZ2Uz
RChnbC5URVhUVVJFXzNELCBsZXZlbE5keCwgdGhpcy5tX2Zvcm1hdCwgYWNjZXNzLmdldFdpZHRo
KCksIGFjY2Vzcy5nZXRIZWlnaHQoKSwgYWNjZXNzLmdldERlcHRoKCksIDAgLyogYm9yZGVyICov
LCB0cmFuc2ZlckZvcm1hdC5mb3JtYXQsIHRyYW5zZmVyRm9ybWF0LmRhdGFUeXBlLCBhY2Nlc3Mu
Z2V0RGF0YVB0cigpKTsKKyAgICB9CisKKyAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9y
KCkgPT09IGdsLk5PX0VSUk9SLCAnVGV4dHVyZSB1cGxvYWQgZmFpbGVkJywgZmFsc2UsIHRydWUp
OworfTsKKworZ2x1VGV4dHVyZS50ZXh0dXJlM0RGcm9tRm9ybWF0ID0gZnVuY3Rpb24oZ2wsIGZv
cm1hdCwgZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSB7CisgICAgdmFyIHRleCA9IG5l
dyBnbHVUZXh0dXJlLlRleHR1cmUzRChnbCwgZm9ybWF0LCBmYWxzZSwgbmV3IHRjdVRleHR1cmUu
VGV4dHVyZTNEKGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoZm9ybWF0LCBkYXRh
VHlwZSksIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CisgICAgcmV0dXJuIHRleDsKK307CisKK2ds
dVRleHR1cmUudGV4dHVyZTNERnJvbUludGVybmFsRm9ybWF0ID0gZnVuY3Rpb24oZ2wsIGludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkgeworICAgIHZhciB0ZXggPSBuZXcgZ2x1
VGV4dHVyZS5UZXh0dXJlM0QoZ2wsIGludGVybmFsRm9ybWF0LCBmYWxzZSwgbmV3IHRjdVRleHR1
cmUuVGV4dHVyZTNEKGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxG
b3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOworICAgIHJldHVybiB0ZXg7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsdVRleHR1cmUuVGV4dHVyZTJEfQor
ICovCitnbHVUZXh0dXJlLkNvbXByZXNzZWQyRCA9IGZ1bmN0aW9uKGdsLCBmb3JtYXQsIGlzQ29t
cHJlc3NlZCwgcmVmVGV4dHVyZSkgeworICAgIGdsdVRleHR1cmUuVGV4dHVyZTJELmNhbGwodGhp
cywgZ2wsIGZvcm1hdCwgaXNDb21wcmVzc2VkLCByZWZUZXh0dXJlKTsKK307CisKK2dsdVRleHR1
cmUuQ29tcHJlc3NlZDJELnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2x1VGV4dHVyZS5UZXh0
dXJlMkQucHJvdG90eXBlKTsKK2dsdVRleHR1cmUuQ29tcHJlc3NlZDJELnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGdsdVRleHR1cmUuQ29tcHJlc3NlZDJEOworCitnbHVUZXh0dXJlLkNvbXByZXNz
ZWQyRC5wcm90b3R5cGUudXBsb2FkTGV2ZWwgPSBmdW5jdGlvbihsZXZlbCwgc291cmNlKSB7Cisg
ICAgREVfQVNTRVJUKHRoaXMubV9pc0NvbXByZXNzZWQpOworCisgICAgaWYgKHRoaXMubV9nbFRl
eHR1cmUgPT0gbnVsbCkKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBjcmVh
dGUgR0wgdGV4dHVyZScsIHRydWUpOworCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGhpcy5tX2dsVGV4dHVyZSk7CisKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCBsZXZlbCwgdGhpcy5tX2Zvcm1hdCwgc291cmNlLm1fd2lkdGgsIHNvdXJjZS5t
X2hlaWdodCwgMCAvKiBib3JkZXIgKi8sIHNvdXJjZS5tX2RhdGEpOworICAgIGFzc2VydE1zZ09w
dGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdUZXh0dXJlIHVwbG9hZCBmYWls
ZWQnLCBmYWxzZSwgdHJ1ZSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge2dsdVRleHR1cmUuVGV4dHVyZTJEfQorICovCitnbHVUZXh0dXJlLkNvbXByZXNzZWRDdWJl
ID0gZnVuY3Rpb24oZ2wsIGZvcm1hdCwgaXNDb21wcmVzc2VkLCByZWZUZXh0dXJlKSB7CisgICAg
Z2x1VGV4dHVyZS5UZXh0dXJlMkQuY2FsbCh0aGlzLCBnbCwgZm9ybWF0LCBpc0NvbXByZXNzZWQs
IHJlZlRleHR1cmUpOworfTsKKworZ2x1VGV4dHVyZS5Db21wcmVzc2VkQ3ViZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKGdsdVRleHR1cmUuVGV4dHVyZTJELnByb3RvdHlwZSk7CitnbHVUZXh0
dXJlLkNvbXByZXNzZWRDdWJlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsdVRleHR1cmUuQ29t
cHJlc3NlZEN1YmU7CisKK2dsdVRleHR1cmUuQ29tcHJlc3NlZEN1YmUucHJvdG90eXBlLnVwbG9h
ZExldmVsID0gZnVuY3Rpb24obGV2ZWwsIHNvdXJjZSkgeworICAgIERFX0FTU0VSVCh0aGlzLm1f
aXNDb21wcmVzc2VkKTsKKworICAgIGlmICh0aGlzLm1fZ2xUZXh0dXJlID09IG51bGwpCisgICAg
ICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gY3JlYXRlIEdMIHRleHR1cmUnLCB0cnVl
KTsKKworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRoaXMubV9nbFRl
eHR1cmUpOworCisgICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisK
KyAgICAgICAgLy8gVXBsb2FkIHRvIEdMIHRleHR1cmUgaW4gY29tcHJlc3NlZCBmb3JtLgorICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbHVUZXh0dXJlLmN1YmVGYWNlVG9HTEZhY2Uo
dGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXSksIDAsIHRoaXMubV9mb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5tX3dpZHRoLCBzb3VyY2UubV9oZWlnaHQsIDAg
LyogYm9yZGVyICovLCBzb3VyY2UubV9kYXRhKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhn
bC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ1RleHR1cmUgdXBsb2FkIGZhaWxlZCcsIGZh
bHNlLCB0cnVlKTsKKyAgICB9CisKK307CisKK2dsdVRleHR1cmUuY29tcHJlc3NlZDJERnJvbUlu
dGVybmFsRm9ybWF0ID0gZnVuY3Rpb24oZ2wsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgY29tcHJl
c3NlZCkgeworICAgIHZhciB0ZXggPSBuZXcgZ2x1VGV4dHVyZS5Db21wcmVzc2VkMkQoZ2wsIGds
dVRleHR1cmVVdGlsLmdldEdMRm9ybWF0KGZvcm1hdCksIHRydWUsIG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmUyRChjb21wcmVzc2VkLmdldFVuY29tcHJlc3NlZEZvcm1hdCgpLCB3aWR0aCwgaGVpZ2h0
KSk7CisgICAgdGV4Lm1fcmVmVGV4dHVyZS5hbGxvY0xldmVsKDApOworICAgIGNvbXByZXNzZWQu
ZGVjb21wcmVzcyh0ZXgubV9yZWZUZXh0dXJlLmdldExldmVsKDApKTsKKyAgICB0ZXgudXBsb2Fk
TGV2ZWwoMCwgY29tcHJlc3NlZCk7CisgICAgcmV0dXJuIHRleDsKK307CisKK2dsdVRleHR1cmUu
Y29tcHJlc3NlZEN1YmVGcm9tSW50ZXJuYWxGb3JtYXQgPSBmdW5jdGlvbihnbCwgZm9ybWF0LCBz
aXplLCBjb21wcmVzc2VkKSB7CisgICAgdmFyIHRleCA9IG5ldyBnbHVUZXh0dXJlLkNvbXByZXNz
ZWRDdWJlKGdsLCBnbHVUZXh0dXJlVXRpbC5nZXRHTEZvcm1hdChmb3JtYXQpLCB0cnVlLCBuZXcg
dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZShjb21wcmVzc2VkLmdldFVuY29tcHJlc3NlZEZvcm1hdCgp
LCBzaXplKSk7CisgICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7Cisg
ICAgICAgIHRleC5tX3JlZlRleHR1cmUuYWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlW2Zh
Y2VdLCAwKTsKKworICAgICAgICAvKnRjdTo6Q29uc3RQaXhlbEJ1ZmZlckFjY2VzcyovIHZhciBh
Y2Nlc3MgPSB0ZXgubV9yZWZUZXh0dXJlLmdldExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1YmVG
YWNlW2ZhY2VdKTsKKyAgICAgICAgREVfQVNTRVJUKGFjY2Vzcy5nZXRSb3dQaXRjaCgpID09IGFj
Y2Vzcy5nZXRGb3JtYXQoKS5nZXRQaXhlbFNpemUoKSAqIGFjY2Vzcy5nZXRXaWR0aCgpKTsKKyAg
ICAgICAgY29tcHJlc3NlZC5kZWNvbXByZXNzKGFjY2Vzcyk7CisgICAgfQorICAgIHRleC51cGxv
YWRMZXZlbCgwLCBjb21wcmVzc2VkKTsKKyAgICByZXR1cm4gdGV4OworfTsKKworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2ZyYW1ld29yay9vcGVuZ2wvZ2x1VGV4dHVyZVV0aWwuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VGV4dHVy
ZVV0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmM2Y1Mjg5ZDRkYzMxYmMzMzlmMjZmY2U4NTllZWUxZjU2
MTE1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVUZXh0dXJlVXRpbC5qcwpAQCAt
MCwwICsxLDEwMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxp
dHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEK
KyAqIFxicmllZiBNYXAgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0IHRvIEdMIHBpeGVsIHRyYW5z
ZmVyIGZvcm1hdC4KKyAqCisgKiBNYXBzIGdlbmVyaWMgdGV4dHVyZSBmb3JtYXQgZGVzY3JpcHRp
b24gdG8gR0wgcGl4ZWwgdHJhbnNmZXIgZm9ybWF0LgorICogSWYgbm8gbWFwcGluZyBpcyBmb3Vu
ZCwgdGhyb3dzIHRjdTo6SW50ZXJuYWxFcnJvci4KKyAqCisgKiBccGFyYW0gdGV4Rm9ybWF0IEdl
bmVyaWMgdGV4dHVyZSBmb3JtYXQuCisgKiBccmV0dXJuIEdMIHBpeGVsIHRyYW5zZmVyIGZvcm1h
dC4KKyAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFt
ZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1Q29tcHJlc3NlZFRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7CisK
K2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7Cit2YXIgZGVTdHJpbmcgPSBmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZVN0cmluZzsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXh0dXJlOwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJl
VXRpbDsKK3ZhciB0Y3VDb21wcmVzc2VkVGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1Q29t
cHJlc3NlZFRleHR1cmU7Cit2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
U2hhZGVyVXRpbDsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgKiBAcGFyYW0g
e251bWJlcn0gZGF0YVR5cGUKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHVUZXh0dXJlVXRpbC5U
cmFuc2ZlckZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCwgZGF0YVR5cGUpIHsKKyAgICB0aGlzLmZv
cm1hdCA9IGZvcm1hdDsgLy8hPCBQaXhlbCBmb3JtYXQuCisgICAgdGhpcy5kYXRhVHlwZSA9IGRh
dGFUeXBlOyAvLyE8IERhdGEgdHlwZS4KK307CisKKy8qKgorICogTWFwIHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCB0byBHTCBwaXhlbCB0cmFuc2ZlciBmb3JtYXQuCisgKgorICogTWFwcyBnZW5l
cmljIHRleHR1cmUgZm9ybWF0IGRlc2NyaXB0aW9uIHRvIEdMIHBpeGVsIHRyYW5zZmVyIGZvcm1h
dC4KKyAqIElmIG5vIG1hcHBpbmcgaXMgZm91bmQsIHRocm93cyB0Y3U6OkludGVybmFsRXJyb3Iu
CisgKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IHRleEZvcm1hdCBHZW5l
cmljIHRleHR1cmUgZm9ybWF0LgorICogQHJldHVybiB7Z2x1VGV4dHVyZVV0aWwuVHJhbnNmZXJG
b3JtYXR9IEdMIHBpeGVsIHRyYW5zZmVyIGZvcm1hdC4KKyAqIEB0aHJvd3Mge0Vycm9yfQorICov
CitnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCA9IGZ1bmN0aW9uKC8qIHRjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdCAqLyB0ZXhGb3JtYXQpIHsKKyAgICB2YXIgZm9ybWF0ID0gZ2wuTk9O
RTsKKyAgICB2YXIgdHlwZSA9IGdsLk5PTkU7CisgICAgLypib29sZWFuKi8gdmFyIGlzSW50ID0g
ZmFsc2U7CisKKyAgICBzd2l0Y2ggKHRleEZvcm1hdC50eXBlKSB7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UODoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlNJR05FRF9JTlQzMjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOU0lHTkVEX0lOVDg6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJ
R05FRF9JTlQxNjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVE
X0lOVDMyOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5U
XzEwMTAxMDJfUkVWOgorICAgICAgICAgICAgaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzSW50ID0gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHRleEZvcm1hdC5vcmRlcikgewor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkE6IGZvcm1hdCA9IGdsLkFMUEhB
OyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5MOiBmb3JtYXQg
PSBnbC5MVU1JTkFOQ0U7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLkxBOiBmb3JtYXQgPSBnbC5MVU1JTkFOQ0VfQUxQSEE7IGJyZWFrOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlI6IGZvcm1hdCA9IGlzSW50ID8gZ2wuUkVEX0lOVEVH
RVIgOiBnbC5SRUQ7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LlJHOiBmb3JtYXQgPSBpc0ludCA/IGdsLlJHX0lOVEVHRVIgOiBnbC5SRzsgYnJlYWs7CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCOiBmb3JtYXQgPSBpc0ludCA/IGds
LlJHQl9JTlRFR0VSIDogZ2wuUkdCOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5SR0JBOiBmb3JtYXQgPSBpc0ludCA/IGdsLlJHQkFfSU5URUdFUiA6IGdsLlJH
QkE7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0I6IGZv
cm1hdCA9IGdsLlJHQjsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuc1JHQkE6IGZvcm1hdCA9IGdsLlJHQkE7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLkQ6IGZvcm1hdCA9IGdsLkRFUFRIX0NPTVBPTkVOVDsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM6IGZvcm1hdCA9IGdsLkRFUFRI
X1NURU5DSUw7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlM6
IGZvcm1hdCA9IGdsLlNURU5DSUxfSU5ERVg7IGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gQ2hhbm5lbE9yZGVyICcgKyB0ZXhG
b3JtYXQub3JkZXIpOworICAgIH0KKworICAgIHN3aXRjaCAodGV4Rm9ybWF0LnR5cGUpIHsKKyAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDg6IHR5cGUgPSBnbC5C
WVRFOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lO
VDE2OiB0eXBlID0gZ2wuU0hPUlQ7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuVU5PUk1fSU5UODogdHlwZSA9IGdsLlVOU0lHTkVEX0JZVEU7IGJyZWFrOworICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTY6IHR5cGUgPSBnbC5V
TlNJR05FRF9TSE9SVDsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTk9STV9TSE9SVF81NjU6IHR5cGUgPSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNTsgYnJlYWs7
CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80NDQ0OiB0
eXBlID0gZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNDsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF81NTUxOiB0eXBlID0gZ2wuVU5TSUdORURf
U0hPUlRfNV81XzVfMTsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5TSUdORURfSU5UODogdHlwZSA9IGdsLkJZVEU7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDE2OiB0eXBlID0gZ2wuU0hPUlQ7IGJyZWFrOwor
ICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyOiB0eXBlID0g
Z2wuSU5UOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lH
TkVEX0lOVDg6IHR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOyBicmVhazsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2OiB0eXBlID0gZ2wuVU5TSUdORURf
U0hPUlQ7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdO
RURfSU5UMzI6IHR5cGUgPSBnbC5VTlNJR05FRF9JTlQ7IGJyZWFrOworICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6IHR5cGUgPSBnbC5GTE9BVDsgYnJlYWs7CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEwOiB0eXBlID0g
Z2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEwMTAyX1JFVjogdHlwZSA9IGdsLlVOU0lH
TkVEX0lOVF8yXzEwXzEwXzEwX1JFVjsgYnJlYWs7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVY6IHR5cGUgPSBnbC5VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVY7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5TSUdORURfSU5UXzExRl8xMUZfMTBGX1JFVjogdHlwZSA9IGdsLlVOU0lHTkVEX0lO
VF8xMEZfMTFGXzExRl9SRVY7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5TSUdORURfSU5UXzk5OV9FNV9SRVY6IHR5cGUgPSBnbC5VTlNJR05FRF9JTlRfNV85
XzlfOV9SRVY7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuSEFM
Rl9GTE9BVDogdHlwZSA9IGdsLkhBTEZfRkxPQVQ7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0XzhfUkVWOiB0eXBlID0gZ2wu
RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84OiB0eXBlID0gdGV4Rm9ybWF0Lm9y
ZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgPworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5VTlNJR05FRF9J
TlQgOiBnbC5VTlNJR05FRF9JTlRfMjRfODsgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2FuJ3QgbWFwIHRleHR1cmUgZm9ybWF0IHRvIEdM
IHRyYW5zZmVyIGZvcm1hdCAiICsgdGV4Rm9ybWF0LnR5cGUpOworICAgIH0KKworICAgIHJldHVy
biBuZXcgZ2x1VGV4dHVyZVV0aWwuVHJhbnNmZXJGb3JtYXQoZm9ybWF0LCB0eXBlKTsKK307CisK
Ky8qKgorICogTWFwIHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCB0byBHTCBpbnRlcm5hbCBzaXpl
ZCBmb3JtYXQuCisgKgorICogTWFwcyBnZW5lcmljIHRleHR1cmUgZm9ybWF0IGRlc2NyaXB0aW9u
IHRvIEdMIGludGVybmFsIGZvcm1hdC4KKyAqIElmIG5vIG1hcHBpbmcgaXMgZm91bmQsIHRocm93
cyBFcnJvci4KKyAqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gdGV4Rm9y
bWF0IEdlbmVyaWMgdGV4dHVyZSBmb3JtYXQuCisgKiBAcmV0dXJuIHtudW1iZXJ9IEdMIHRleHR1
cmUgZm9ybWF0LgorICogQHRocm93cyB7RXJyb3J9CisgKi8KK2dsdVRleHR1cmVVdGlsLmdldElu
dGVybmFsRm9ybWF0ID0gZnVuY3Rpb24odGV4Rm9ybWF0KSB7CisKKyAgICB2YXIgc3RyaW5naWZ5
ID0gZnVuY3Rpb24ob3JkZXIsIHR5cGUpIHsKKyAgICAgICAgcmV0dXJuICcnICsgb3JkZXIgKyAn
ICcgKyB0eXBlOworICAgIH07CisKKyAgICBzd2l0Y2ggKHN0cmluZ2lmeSh0ZXhGb3JtYXQub3Jk
ZXIsIHRleEZvcm1hdC50eXBlKSkgeworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JUXzU1
NTEpOiByZXR1cm4gZ2wuUkdCNV9BMTsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF80
NDQ0KTogcmV0dXJuIGdsLlJHQkE0OworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTY1
KTogcmV0dXJuIGdsLlJHQjU2NTsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuRCwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQxNik6IHJldHVy
biBnbC5ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4KTog
cmV0dXJuIGdsLlNURU5DSUxfSU5ERVg4OworCisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOiBy
ZXR1cm4gZ2wuUkdCQTMyRjsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzIpOiByZXR1
cm4gZ2wuUkdCQTMySTsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQzMik6IHJldHVy
biBnbC5SR0JBMzJVSTsKKyAgICAgICAgLy8gVE9ETzogQ2hlY2sgd2hpY2ggb25lcyBhcmUgdmFs
aWQgaW4gV2ViR0wgMiAtIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJH
QkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTYpOiByZXR1cm4gZ2wuUkdCQTE2
OworICAgICAgICAvL2Nhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEs
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UMTYpOiByZXR1cm4gZ2wuUkdCQTE2X1NO
T1JNOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JB
LCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQpOiByZXR1cm4gZ2wuUkdCQTE2RjsK
KyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1
VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMTYpOiByZXR1cm4gZ2wuUkdCQTE2STsKKyAg
ICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNik6IHJldHVybiBnbC5SR0JBMTZVSTsKKyAg
ICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTogcmV0dXJuIGdsLlJHQkE4OworICAgICAgICBj
YXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLlNJR05FRF9JTlQ4KTogcmV0dXJuIGdsLlJHQkE4STsKKyAgICAgICAgY2FzZSBz
dHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5VTlNJR05FRF9JTlQ4KTogcmV0dXJuIGdsLlJHQkE4VUk7CisgICAgICAgIGNhc2Ugc3Ry
aW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOT1JNX0lOVDgpOiByZXR1cm4gZ2wuU1JHQjhfQUxQSEE4OworICAgICAgICBjYXNlIHN0
cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOT1JNX0lOVF8xMDEwMTAyX1JFVik6IHJldHVybiBnbC5SR0IxMF9BMjsKKyAgICAgICAg
Y2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9SRVYpOiByZXR1cm4gZ2wuUkdCMTBfQTJV
STsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQ4KTogcmV0dXJuIGdsLlJHQkE4X1NOT1JN
OworCisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTogcmV0dXJuIGdsLlJHQjg7CisgICAg
ICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTFGXzExRl8xMEZfUkVWKTogcmV0dXJuIGdsLlIx
MUZfRzExRl9CMTBGOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOiByZXR1cm4gZ2wuUkdCMzJG
OworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyKTogcmV0dXJuIGdsLlJHQjMySTsKKyAg
ICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyKTogcmV0dXJuIGdsLlJHQjMyVUk7CisgICAg
ICAgIC8vY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDE2KTogcmV0dXJuIGdsLlJHQjE2OworICAgICAgICAv
L2Nhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5TTk9STV9JTlQxNik6IHJldHVybiBnbC5SR0IxNl9TTk9STTsKKyAgICAgICAg
Y2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLkhBTEZfRkxPQVQpOiByZXR1cm4gZ2wuUkdCMTZGOworICAgICAgICBjYXNlIHN0
cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuU0lHTkVEX0lOVDE2KTogcmV0dXJuIGdsLlJHQjE2STsKKyAgICAgICAgY2FzZSBzdHJpbmdp
ZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
U0lHTkVEX0lOVDE2KTogcmV0dXJuIGdsLlJHQjE2VUk7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5
KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9S
TV9JTlQ4KTogcmV0dXJuIGdsLlJHQjhfU05PUk07CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURf
SU5UOCk6IHJldHVybiBnbC5SR0I4STsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDgp
OiByZXR1cm4gZ2wuUkdCOFVJOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5zUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpOiByZXR1
cm4gZ2wuU1JHQjg7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfOTk5X0U1X1JFVik6
IHJldHVybiBnbC5SR0I5X0U1OworICAgICAgICAvL2Nhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlRfMTAxMDEw
Ml9SRVYpOiByZXR1cm4gZ2wuUkdCMTA7CisKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOiByZXR1
cm4gZ2wuUkczMkY7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlJHLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQzMik6IHJldHVybiBnbC5S
RzMySTsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcs
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzIpOiByZXR1cm4gZ2wuUkczMlVJ
OworICAgICAgICAvL2Nhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHLCB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDE2KTogcmV0dXJuIGdsLlJHMTY7CisgICAg
ICAgIC8vY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UMTYpOiByZXR1cm4gZ2wuUkcxNl9TTk9STTsKKyAgICAg
ICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuSEFMRl9GTE9BVCk6IHJldHVybiBnbC5SRzE2RjsKKyAgICAgICAgY2FzZSBz
dHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuU0lHTkVEX0lOVDE2KTogcmV0dXJuIGdsLlJHMTZJOworICAgICAgICBjYXNlIHN0cmluZ2lm
eSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJ
R05FRF9JTlQxNik6IHJldHVybiBnbC5SRzE2VUk7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VDgpOiByZXR1cm4gZ2wuUkc4OworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UOCk6IHJldHVy
biBnbC5SRzhJOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4KTogcmV0dXJuIGdsLlJH
OFVJOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQ4KTogcmV0dXJuIGdsLlJHOF9TTk9STTsK
KworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUKTogcmV0dXJuIGdsLlIzMkY7CisgICAgICAgIGNhc2Ug
c3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuU0lHTkVEX0lOVDMyKTogcmV0dXJuIGdsLlIzMkk7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5
KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdO
RURfSU5UMzIpOiByZXR1cm4gZ2wuUjMyVUk7CisgICAgICAgIC8vY2FzZSBzdHJpbmdpZnkodGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQx
Nik6IHJldHVybiBnbC5SMTY7CisgICAgICAgIC8vY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQxNik6IHJldHVy
biBnbC5SMTZfU05PUk07CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuSEFMRl9GTE9BVCk6IHJldHVybiBnbC5S
MTZGOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNik6IHJldHVybiBnbC5SMTZJOworICAg
ICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2KTogcmV0dXJuIGdsLlIxNlVJOworICAgICAgICBj
YXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOT1JNX0lOVDgpOiByZXR1cm4gZ2wuUjg7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5
KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVE
X0lOVDgpOiByZXR1cm4gZ2wuUjhJOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDgpOiBy
ZXR1cm4gZ2wuUjhVSTsKKyAgICAgICAgY2FzZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TTk9STV9JTlQ4KTogcmV0dXJuIGdsLlI4
X1NOT1JNOworCisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkQsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOiByZXR1cm4gZ2wuREVQVEhfQ09NUE9O
RU5UMzJGOworICAgICAgICBjYXNlIHN0cmluZ2lmeSh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5E
LCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84KTogcmV0dXJuIGdsLkRF
UFRIX0NPTVBPTkVOVDI0OworICAgICAgICAvL2Nhc2Ugc3RyaW5naWZ5KHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLkQsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzIpOiByZXR1
cm4gZ2wuREVQVEhfQ09NUE9ORU5UMzI7CisgICAgICAgIGNhc2Ugc3RyaW5naWZ5KHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLkRTLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUX1VOU0lHTkVE
X0lOVF8yNF84X1JFVik6IHJldHVybiBnbC5ERVBUSDMyRl9TVEVOQ0lMODsKKyAgICAgICAgY2Fz
ZSBzdHJpbmdpZnkodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFMsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5TSUdORURfSU5UXzI0XzgpOiByZXR1cm4gZ2wuREVQVEgyNF9TVEVOQ0lMODsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtYXAg
dGV4dHVyZSBmb3JtYXQgdG8gR0wgaW50ZXJuYWwgZm9ybWF0Iik7CisgICAgfQorfTsKKworLyoq
CisgKiBFbmFibGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyBzdXBwb3J0IGlmIGF2YWls
YWJsZSwgYnkgbWVyZ2luZyBpdAorICogaW50byB0aGUgV2ViR0wyUmVuZGVyaW5nQ29udGV4dC4K
KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgbWFueSB0aW1lcy4KKyAqCisgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGVuYWJsZWQuCisgKi8KK2dsdVRleHR1cmVVdGlsLmVu
YWJsZUNvbXByZXNzZWRUZXh0dXJlRVRDID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciBlbmFibGVk
ID0gdW5kZWZpbmVkOworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGVuYWJs
ZWQgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgZW5hYmxlZCA9IGZhbHNlOworCisgICAg
ICAgICAgICB2YXIgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyA9IGdsLmdldEV4dGVuc2lv
bigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworICAgICAgICAgICAgaWYgKFdFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9ldGMpIHsKKyAgICAgICAgICAgICAgICAvLyBFeHRlbmQgZ2wg
d2l0aCBlbnVtcyBmcm9tIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMKKyAgICAgICAgICAg
ICAgICAvLyAoaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgdGhlIGV0YyB0ZXh0dXJlIGZvcm1h
dHMpLgorICAgICAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBw
cm9wIGluIHByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm90by5oYXNPd25Qcm9w
ZXJ0eShwcm9wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcHJvcF0gPSBwcm90b1tw
cm9wXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZW5hYmxlZDsKKyAgICB9OworfSkoKTsKKworLyoqCisgKiBNYXAgZ2VuZXJpYyBj
b21wcmVzc2VkIGZvcm1hdCB0byBHTCBjb21wcmVzc2VkIGZvcm1hdCBlbnVtLgorICoKKyAqIE1h
cHMgZ2VuZXJpYyBjb21wcmVzc2VkIGZvcm1hdCB0byBHTCBjb21wcmVzc2VkIGZvcm1hdCBlbnVt
IHZhbHVlLgorICogSWYgbm8gbWFwcGluZyBpcyBmb3VuZCwgdGhyb3dzIEVycm9yLgorCisgKiBA
cGFyYW0ge3RjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdH0gZm9ybWF0IEdlbmVyaWMgY29tcHJl
c3NlZCBmb3JtYXQuCisgKiBAcmV0dXJuIHtudW1iZXJ9IEdMIGNvbXByZXNzZWQgdGV4dHVyZSBm
b3JtYXQuCisgKiBAdGhyb3dzIHtFcnJvcn0KKyAqLworZ2x1VGV4dHVyZVV0aWwuZ2V0R0xGb3Jt
YXQgPSBmdW5jdGlvbigvKiB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQgKi8gZm9ybWF0KSB7
CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgLy8gVE9ETzogY2hlY2sgd2hpY2ggYXJl
IGF2YWlsYWJsZSBpbiBXZWJHTCAyIC0gY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQu
RVRDMV9SR0I4OiByZXR1cm4gZ2wuRVRDMV9SR0I4X09FUzsKKyAgICAgICAgY2FzZSB0Y3VDb21w
cmVzc2VkVGV4dHVyZS5Gb3JtYXQuRUFDX1IxMTogcmV0dXJuIGdsLkNPTVBSRVNTRURfUjExX0VB
QzsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRUFDX1NJR05FRF9S
MTE6IHJldHVybiBnbC5DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOworICAgICAgICBjYXNlIHRj
dUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfUkcxMTogcmV0dXJuIGdsLkNPTVBSRVNTRURf
UkcxMV9FQUM7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVBQ19T
SUdORURfUkcxMTogcmV0dXJuIGdsLkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOworICAgICAg
ICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1JHQjg6IHJldHVybiBnbC5D
T01QUkVTU0VEX1JHQjhfRVRDMjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5G
b3JtYXQuRVRDMl9TUkdCODogcmV0dXJuIGdsLkNPTVBSRVNTRURfU1JHQjhfRVRDMjsKKyAgICAg
ICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9SR0I4X1BVTkNIVEhST1VH
SF9BTFBIQTE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9F
VEMyOworICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1NSR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTE6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3Jt
YXQuRVRDMl9FQUNfUkdCQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOwor
ICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX0VBQ19TUkdCOF9B
TFBIQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzsKKworICAg
ICAgICAvKmNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfNHg0X1JHQkE6IHJl
dHVybiBnbC5DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOworICAgICAgICBjYXNlIHRjdUNv
bXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzV4NF9SR0JBOiByZXR1cm4gZ2wuQ09NUFJFU1NF
RF9SR0JBX0FTVENfNXg0X0tIUjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5G
b3JtYXQuQVNUQ181eDVfUkdCQTogcmV0dXJuIGdsLkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfNng1X1JH
QkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSOworICAgICAgICBjYXNl
IHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzZ4Nl9SR0JBOiByZXR1cm4gZ2wuQ09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4
dHVyZS5Gb3JtYXQuQVNUQ184eDVfUkdCQTogcmV0dXJuIGdsLkNPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4NV9LSFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENf
OHg2X1JHQkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOworICAgICAg
ICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzh4OF9SR0JBOiByZXR1cm4g
Z2wuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVz
c2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ18xMHg1X1JHQkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg1X0tIUjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3Jt
YXQuQVNUQ18xMHg2X1JHQkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tI
UjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ18xMHg4X1JH
QkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjsKKyAgICAgICAgY2Fz
ZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ18xMHgxMF9SR0JBOiByZXR1cm4gZ2wu
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOworICAgICAgICBjYXNlIHRjdUNvbXByZXNz
ZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzEyeDEwX1JHQkE6IHJldHVybiBnbC5DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMngxMF9LSFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9y
bWF0LkFTVENfMTJ4MTJfUkdCQTogcmV0dXJuIGdsLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEy
X0tIUjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ180eDRf
U1JHQjhfQUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSOworICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzV4NF9T
UkdCOF9BTFBIQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9L
SFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfNXg1X1NS
R0I4X0FMUEhBODogcmV0dXJuIGdsLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tI
UjsKKyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ182eDVfU1JH
QjhfQUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hS
OworICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzZ4Nl9TUkdC
OF9BTFBIQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI7
CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfOHg1X1NSR0I4
X0FMUEhBODogcmV0dXJuIGdsLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjsK
KyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ184eDZfU1JHQjhf
QUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOwor
ICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzh4OF9TUkdCOF9B
TFBIQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI7Cisg
ICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfMTB4NV9TUkdCOF9B
TFBIQTg6IHJldHVybiBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOwor
ICAgICAgICBjYXNlIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5BU1RDXzEweDZfU1JHQjhf
QUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjsK
KyAgICAgICAgY2FzZSB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuQVNUQ18xMHg4X1NSR0I4
X0FMUEhBODogcmV0dXJuIGdsLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI7
CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfMTB4MTBfU1JH
QjhfQUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9L
SFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfMTJ4MTBf
U1JHQjhfQUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngx
MF9LSFI7CisgICAgICAgIGNhc2UgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkFTVENfMTJ4
MTJfU1JHQjhfQUxQSEE4OiByZXR1cm4gZ2wuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFI7Ki8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJDYW4ndCBtYXAgY29tcHJlc3NlZCBmb3JtYXQgdG8gR0wgZm9ybWF0Iik7CisgICAgfQor
fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gZGF0YVR5cGUKKyAqIEBwYXJhbSB7Ym9vbGVh
bn0gbm9ybWFsaXplZAorICogQHJldHVybiB7dGN1VGV4dHVyZS5DaGFubmVsVHlwZX0KKyAqIEB0
aHJvd3Mge0Vycm9yfQorICovCitnbHVUZXh0dXJlVXRpbC5tYXBHTENoYW5uZWxUeXBlID0gZnVu
Y3Rpb24oLyogZGVNYXRoLmRlVWludDMyICovIGRhdGFUeXBlLCAvKmJvb2xlYW4qLyBub3JtYWxp
emVkKSB7CisgICAgLy8gXG5vdGUgTm9ybWFsaXplZCBiaXQgaXMgaWdub3JlZCB3aGVyZSBpdCBk
b2Vzbid0IGFwcGx5LgorCisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgICAgICBjYXNlIGds
LlVOU0lHTkVEX0JZVEU6IHJldHVybiBub3JtYWxpemVkID8gdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTk9STV9JTlQ4IDogdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4OworICAg
ICAgICBjYXNlIGdsLkJZVEU6IHJldHVybiBub3JtYWxpemVkID8gdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5TTk9STV9JTlQ4IDogdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UODsKKyAg
ICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVDogcmV0dXJuIG5vcm1hbGl6ZWQgPyB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDE2IDogdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJ
R05FRF9JTlQxNjsKKyAgICAgICAgY2FzZSBnbC5TSE9SVDogcmV0dXJuIG5vcm1hbGl6ZWQgPyB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDE2IDogdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5TSUdORURfSU5UMTY7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UOiByZXR1cm4gbm9y
bWFsaXplZCA/IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMzIgOiB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyOworICAgICAgICBjYXNlIGdsLklOVDogcmV0dXJu
IG5vcm1hbGl6ZWQgPyB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDMyIDogdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzI7CisgICAgICAgIGNhc2UgZ2wuRkxPQVQ6IHJl
dHVybiB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUOworICAgICAgICBjYXNlIGdsLlVOU0lH
TkVEX1NIT1JUXzRfNF80XzQ6IHJldHVybiB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NI
T1JUXzQ0NDQ7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMTogcmV0dXJu
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1MTsKKyAgICAgICAgY2FzZSBn
bC5VTlNJR05FRF9TSE9SVF81XzZfNTogcmV0dXJuIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5P
Uk1fU0hPUlRfNTY1OworICAgICAgICBjYXNlIGdsLkhBTEZfRkxPQVQ6IHJldHVybiB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQ7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5U
XzJfMTBfMTBfMTBfUkVWOiByZXR1cm4gbm9ybWFsaXplZCA/IHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuVU5PUk1fSU5UXzEwMTAxMDJfUkVWIDogdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05F
RF9JTlRfMTAxMDEwMl9SRVY7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFVjogcmV0dXJuIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzExRl8x
MUZfMTBGX1JFVjsKKyAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfMjRfODogcmV0dXJuIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzI0Xzg7CisgICAgICAgIGNhc2UgZ2wu
RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOiByZXR1cm4gdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5GTE9BVF9VTlNJR05FRF9JTlRfMjRfOF9SRVY7CisgICAgICAgIGNhc2UgZ2wuVU5TSUdO
RURfSU5UXzVfOV85XzlfUkVWOiByZXR1cm4gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05F
RF9JTlRfOTk5X0U1X1JFVjsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhVHlwZSAnICsgZGF0YVR5cGUpOworICAgIH0KK307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdCBHZW5lcmljIGNvbXByZXNzZWQgZm9y
bWF0LgorICogQHBhcmFtIHtudW1iZXJ9IGRhdGFUeXBlCisgKiBAcmV0dXJuIHt0Y3VUZXh0dXJl
LlRleHR1cmVGb3JtYXR9IEdMIHRleHR1cmUgZm9ybWF0LgorICogQHRocm93cyB7RXJyb3J9Cisg
Ki8KK2dsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQs
IGRhdGFUeXBlKSB7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBnbC5BTFBI
QTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuQSwgZ2x1VGV4dHVyZVV0aWwubWFwR0xDaGFubmVsVHlwZShkYXRhVHlwZSwgdHJ1ZSkp
OworICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1
cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuTCwgZ2x1VGV4dHVyZVV0aWwubWFwR0xD
aGFubmVsVHlwZShkYXRhVHlwZSwgdHJ1ZSkpOworICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRV9B
TFBIQTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuTEEsIGdsdVRleHR1cmVVdGlsLm1hcEdMQ2hhbm5lbFR5cGUoZGF0YVR5cGUsIHRy
dWUpKTsKKyAgICAgICAgY2FzZSBnbC5SR0I6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgZ2x1VGV4dHVyZVV0aWwubWFwR0xD
aGFubmVsVHlwZShkYXRhVHlwZSwgdHJ1ZSkpOworICAgICAgICBjYXNlIGdsLlJHQkE6IHJldHVy
biBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJH
QkEsIGdsdVRleHR1cmVVdGlsLm1hcEdMQ2hhbm5lbFR5cGUoZGF0YVR5cGUsIHRydWUpKTsKKyAg
ICAgICAgLy9jYXNlIGdsLkJHUkE6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkJHUkEsIGdsdVRleHR1cmVVdGlsLm1hcEdMQ2hhbm5l
bFR5cGUoZGF0YVR5cGUsIHRydWUpKTsKKyAgICAgICAgY2FzZSBnbC5SRzogcmV0dXJuIG5ldyB0
Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIGdsdVRl
eHR1cmVVdGlsLm1hcEdMQ2hhbm5lbFR5cGUoZGF0YVR5cGUsIHRydWUpKTsKKyAgICAgICAgY2Fz
ZSBnbC5SRUQ6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlIsIGdsdVRleHR1cmVVdGlsLm1hcEdMQ2hhbm5lbFR5cGUoZGF0YVR5cGUs
IHRydWUpKTsKKyAgICAgICAgY2FzZSBnbC5SR0JBX0lOVEVHRVI6IHJldHVybiBuZXcgdGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIGdsdVRleHR1
cmVVdGlsLm1hcEdMQ2hhbm5lbFR5cGUoZGF0YVR5cGUsIGZhbHNlKSk7CisgICAgICAgIGNhc2Ug
Z2wuUkdCX0lOVEVHRVI6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgZ2x1VGV4dHVyZVV0aWwubWFwR0xDaGFubmVsVHlwZShk
YXRhVHlwZSwgZmFsc2UpKTsKKyAgICAgICAgY2FzZSBnbC5SR19JTlRFR0VSOiByZXR1cm4gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgZ2x1
VGV4dHVyZVV0aWwubWFwR0xDaGFubmVsVHlwZShkYXRhVHlwZSwgZmFsc2UpKTsKKyAgICAgICAg
Y2FzZSBnbC5SRURfSU5URUdFUjogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQo
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUiwgZ2x1VGV4dHVyZVV0aWwubWFwR0xDaGFubmVsVHlw
ZShkYXRhVHlwZSwgZmFsc2UpKTsKKworICAgICAgICBjYXNlIGdsLkRFUFRIX0NPTVBPTkVOVDog
cmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuRCwgZ2x1VGV4dHVyZVV0aWwubWFwR0xDaGFubmVsVHlwZShkYXRhVHlwZSwgdHJ1ZSkpOwor
ICAgICAgICBjYXNlIGdsLkRFUFRIX1NURU5DSUw6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTLCBnbHVUZXh0dXJlVXRpbC5tYXBH
TENoYW5uZWxUeXBlKGRhdGFUeXBlLCB0cnVlKSk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2FuJ3QgbWFwIEdMIHBpeGVsIGZvcm1hdCAoIiArIGRl
U3RyaW5nLmVudW1Ub1N0cmluZyhnbCwgZm9ybWF0KSArICcsICcgKyBkZVN0cmluZy5lbnVtVG9T
dHJpbmcoZ2wsIGRhdGFUeXBlKSArICcpIHRvIHRleHR1cmUgZm9ybWF0Jyk7CisgICAgfQorfTsK
KworIC8qKgorICogTWFwIEdMIGludGVybmFsIHRleHR1cmUgZm9ybWF0IHRvIHRjdVRleHR1cmUu
VGV4dHVyZUZvcm1hdC4KKyAqCisgKiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCB0aHJvd3MgRXJy
b3IuCisgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAqIEByZXR1cm4ge3RjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdH0gR0wgdGV4dHVyZSBmb3JtYXQuCisgKiBAdGhyb3dzIHtFcnJv
cn0KKyAqLworZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCA9IGZ1bmN0aW9uKC8q
ZGVNYXRoLmRlVWludDMyKi8gaW50ZXJuYWxGb3JtYXQpIHsKKyAgICBpZiAoaW50ZXJuYWxGb3Jt
YXQgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbGZvcm1h
dCBpcyB1bmRlZmluZWQnKTsKKworICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpIHsKKyAgICAg
ICAgY2FzZSBnbC5SR0I1X0ExOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JN
X1NIT1JUXzU1NTEpOworICAgICAgICBjYXNlIGdsLlJHQkE0OiByZXR1cm4gbmV3IHRjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JUXzQ0NDQpOworICAgICAgICBjYXNlIGdsLlJHQjU2NTog
cmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX1NIT1JUXzU2NSk7CisgICAgICAg
IGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMTY6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUu
VU5PUk1fSU5UMTYpOworICAgICAgICBjYXNlIGdsLlNURU5DSUxfSU5ERVg4OiByZXR1cm4gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDgpOworCisgICAgICAgIGNhc2UgZ2wuUkdC
QTMyRjogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVCk7CisgICAgICAgIGNh
c2UgZ2wuUkdCQTMySTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5U
MzIpOworICAgICAgICBjYXNlIGdsLlJHQkEzMlVJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOU0lHTkVEX0lOVDMyKTsKKyAgICAgICAgLy9UT0RPOiBDaGVjayB3aGljaCBhcmUg
YXZhaWxhYmxlIGluIFdlYkdMIDIgY2FzZSBnbC5SR0JBMTY6IHJldHVybiBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUu
Q2hhbm5lbFR5cGUuVU5PUk1fSU5UMTYpOworICAgICAgICAvL2Nhc2UgZ2wuUkdCQTE2X1NOT1JN
OiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDE2KTsKKyAgICAgICAg
Y2FzZSBnbC5SR0JBMTZGOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxP
QVQpOworICAgICAgICBjYXNlIGdsLlJHQkExNkk6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuU0lHTkVEX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5SR0JBMTZVSTogcmV0dXJuIG5l
dyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNik7CisgICAgICAgIGNhc2UgZ2wu
UkdCQTg6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7CisgICAg
ICAgIGNhc2UgZ2wuUkdCQThJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05F
RF9JTlQ4KTsKKyAgICAgICAgY2FzZSBnbC5SR0JBOFVJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUu
VGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNo
YW5uZWxUeXBlLlVOU0lHTkVEX0lOVDgpOworICAgICAgICBjYXNlIGdsLlNSR0I4X0FMUEhBODog
cmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuc1JHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7CisgICAgICAgIGNh
c2UgZ2wuUkdCMTBfQTI6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
XzEwMTAxMDJfUkVWKTsKKyAgICAgICAgY2FzZSBnbC5SR0IxMF9BMlVJOiByZXR1cm4gbmV3IHRj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8xMDEwMTAyX1JFVik7CisgICAgICAgIGNh
c2UgZ2wuUkdCQThfU05PUk06IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1f
SU5UOCk7CisKKyAgICAgICAgY2FzZSBnbC5SR0I4OiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5PUk1fSU5UOCk7CisgICAgICAgIGNhc2UgZ2wuUjExRl9HMTFGX0IxMEY6IHJldHVy
biBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJH
QiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTFGXzExRl8xMEZfUkVWKTsK
KyAgICAgICAgY2FzZSBnbC5SR0IzMkY6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9y
bWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5G
TE9BVCk7CisgICAgICAgIGNhc2UgZ2wuUkdCMzJJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuU0lHTkVEX0lOVDMyKTsKKyAgICAgICAgY2FzZSBnbC5SR0IzMlVJOiByZXR1cm4gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzIpOworICAgICAgICAvL2Nhc2UgZ2wu
UkdCMTY6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQxNik7CisgICAg
ICAgIC8vY2FzZSBnbC5SR0IxNl9TTk9STTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVG
b3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlNOT1JNX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5SR0IxNkY6IHJldHVybiBuZXcgdGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5IQUxGX0ZMT0FUKTsKKyAgICAgICAgY2FzZSBnbC5SR0IxNkk6IHJldHVy
biBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJH
QiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMTYpOworICAgICAgICBjYXNlIGds
LlJHQjE2VUk6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNik7
CisgICAgICAgIGNhc2UgZ2wuUkdCOF9TTk9STTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1
cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlNOT1JNX0lOVDgpOworICAgICAgICBjYXNlIGdsLlJHQjhJOiByZXR1cm4gbmV3IHRjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDgpOworICAgICAgICBjYXNlIGdsLlJHQjhVSTogcmV0
dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDgpOworICAgICAgICBjYXNl
IGdsLlNSR0I4OiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5zUkdCLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpOwor
ICAgICAgICBjYXNlIGdsLlJHQjlfRTU6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9y
bWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
TlNJR05FRF9JTlRfOTk5X0U1X1JFVik7CisgICAgICAgIC8vY2FzZSBnbC5SR0IxMDogcmV0dXJu
IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdC
LCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVF8xMDEwMTAyX1JFVik7CisKKyAgICAg
ICAgY2FzZSBnbC5SRzMyRjogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOwor
ICAgICAgICBjYXNlIGdsLlJHMzJJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdO
RURfSU5UMzIpOworICAgICAgICBjYXNlIGdsLlJHMzJVSTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJl
LlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hh
bm5lbFR5cGUuVU5TSUdORURfSU5UMzIpOworICAgICAgICAvL2Nhc2UgZ2wuUkcxNjogcmV0dXJu
IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcs
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UMTYpOworICAgICAgICAvL2Nhc2UgZ2wu
UkcxNl9TTk9STTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU05PUk1fSU5UMTYpOwor
ICAgICAgICBjYXNlIGdsLlJHMTZGOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5IQUxG
X0ZMT0FUKTsKKyAgICAgICAgY2FzZSBnbC5SRzE2STogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuU0lHTkVEX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5SRzE2VUk6IHJldHVybiBuZXcg
dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5SRzg6
IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlJHLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpOworICAgICAgICBjYXNl
IGdsLlJHOEk6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQ4KTsKKyAg
ICAgICAgY2FzZSBnbC5SRzhVSTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQo
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdO
RURfSU5UOCk7CisgICAgICAgIGNhc2UgZ2wuUkc4X1NOT1JNOiByZXR1cm4gbmV3IHRjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SRywgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5TTk9STV9JTlQ4KTsKKworICAgICAgICBjYXNlIGdsLlIzMkY6IHJldHVybiBu
ZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOworICAgICAgICBjYXNlIGdsLlIzMkk6IHJldHVy
biBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIs
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyKTsKKyAgICAgICAgY2FzZSBnbC5S
MzJVSTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQzMik7CisgICAg
ICAgIC8vY2FzZSBnbC5SMTY6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
MTYpOworICAgICAgICAvL2Nhc2UgZ2wuUjE2X1NOT1JNOiByZXR1cm4gbmV3IHRjdVRleHR1cmUu
VGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlNOT1JNX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5SMTZGOiByZXR1cm4gbmV3IHRj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQpOworICAgICAgICBjYXNlIGdsLlIxNkk6IHJldHVy
biBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlIs
IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDE2KTsKKyAgICAgICAgY2FzZSBnbC5S
MTZVSTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQxNik7CisgICAg
ICAgIGNhc2UgZ2wuUjg6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlIsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7
CisgICAgICAgIGNhc2UgZ2wuUjhJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05F
RF9JTlQ4KTsKKyAgICAgICAgY2FzZSBnbC5SOFVJOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOU0lHTkVEX0lOVDgpOworICAgICAgICBjYXNlIGdsLlI4X1NOT1JNOiByZXR1cm4gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlNOT1JNX0lOVDgpOworCisgICAgICAgIGNhc2UgZ2wuREVQVEhf
Q09NUE9ORU5UMzJGOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0
dXJlLkNoYW5uZWxPcmRlci5ELCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkZMT0FUKTsKKyAgICAg
ICAgY2FzZSBnbC5ERVBUSF9DT01QT05FTlQyNDogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1
cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRCwgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIC8vY2FzZSBnbC5ERVBUSF9DT01QT05FTlQz
MjogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuRCwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQzMik7CisgICAgICAg
IGNhc2UgZ2wuREVQVEgzMkZfU1RFTkNJTDg6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7CisgICAgICAgIGNhc2UgZ2wuREVQVEgyNF9T
VEVOQ0lMODogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuRFMsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UXzI0Xzgp
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0
IG1hcCBHTCBzaXplZCBpbnRlcm5hbCBmb3JtYXQgKCIgKyBpbnRlcm5hbEZvcm1hdC50b1N0cmlu
ZygxNikgKyAnKSB0byB0ZXh0dXJlIGZvcm1hdCcpOworICAgIH0KK307CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IGZvcm1hdAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZ2x1VGV4dHVy
ZVV0aWwuaXNHTEludGVybmFsQ29sb3JGb3JtYXRGaWx0ZXJhYmxlID0gZnVuY3Rpb24oZm9ybWF0
KSB7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBnbC5SODoKKyAgICAgICAg
Y2FzZSBnbC5SOF9TTk9STToKKyAgICAgICAgY2FzZSBnbC5SRzg6CisgICAgICAgIGNhc2UgZ2wu
Ukc4X1NOT1JNOgorICAgICAgICBjYXNlIGdsLlJHQjg6CisgICAgICAgIGNhc2UgZ2wuUkdCOF9T
Tk9STToKKyAgICAgICAgY2FzZSBnbC5SR0I1NjU6CisgICAgICAgIGNhc2UgZ2wuUkdCQTQ6Cisg
ICAgICAgIGNhc2UgZ2wuUkdCNV9BMToKKyAgICAgICAgY2FzZSBnbC5SR0JBODoKKyAgICAgICAg
Y2FzZSBnbC5SR0JBOF9TTk9STToKKyAgICAgICAgY2FzZSBnbC5SR0IxMF9BMjoKKyAgICAgICAg
Y2FzZSBnbC5TUkdCODoKKyAgICAgICAgY2FzZSBnbC5TUkdCOF9BTFBIQTg6CisgICAgICAgIGNh
c2UgZ2wuUjE2RjoKKyAgICAgICAgY2FzZSBnbC5SRzE2RjoKKyAgICAgICAgY2FzZSBnbC5SR0Ix
NkY6CisgICAgICAgIGNhc2UgZ2wuUkdCQTE2RjoKKyAgICAgICAgY2FzZSBnbC5SMTFGX0cxMUZf
QjEwRjoKKyAgICAgICAgY2FzZSBnbC5SR0I5X0U1OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgY2FzZSBnbC5SR0IxMF9BMlVJOgorICAgICAgICBjYXNlIGdsLlIzMkY6Cisg
ICAgICAgIGNhc2UgZ2wuUkczMkY6CisgICAgICAgIGNhc2UgZ2wuUkdCMzJGOgorICAgICAgICBj
YXNlIGdsLlJHQkEzMkY6CisgICAgICAgIGNhc2UgZ2wuUjhJOgorICAgICAgICBjYXNlIGdsLlI4
VUk6CisgICAgICAgIGNhc2UgZ2wuUjE2SToKKyAgICAgICAgY2FzZSBnbC5SMTZVSToKKyAgICAg
ICAgY2FzZSBnbC5SMzJJOgorICAgICAgICBjYXNlIGdsLlIzMlVJOgorICAgICAgICBjYXNlIGds
LlJHOEk6CisgICAgICAgIGNhc2UgZ2wuUkc4VUk6CisgICAgICAgIGNhc2UgZ2wuUkcxNkk6Cisg
ICAgICAgIGNhc2UgZ2wuUkcxNlVJOgorICAgICAgICBjYXNlIGdsLlJHMzJJOgorICAgICAgICBj
YXNlIGdsLlJHMzJVSToKKyAgICAgICAgY2FzZSBnbC5SR0I4SToKKyAgICAgICAgY2FzZSBnbC5S
R0I4VUk6CisgICAgICAgIGNhc2UgZ2wuUkdCMTZJOgorICAgICAgICBjYXNlIGdsLlJHQjE2VUk6
CisgICAgICAgIGNhc2UgZ2wuUkdCMzJJOgorICAgICAgICBjYXNlIGdsLlJHQjMyVUk6CisgICAg
ICAgIGNhc2UgZ2wuUkdCQThJOgorICAgICAgICBjYXNlIGdsLlJHQkE4VUk6CisgICAgICAgIGNh
c2UgZ2wuUkdCQTE2SToKKyAgICAgICAgY2FzZSBnbC5SR0JBMTZVSToKKyAgICAgICAgY2FzZSBn
bC5SR0JBMzJJOgorICAgICAgICBjYXNlIGdsLlJHQkEzMlVJOgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J1VucmVjb2duaXplZCBmb3JtYXQgJyArIGZvcm1hdCk7CisgICAgfQorfTsKKworLyoqCisgKiBA
cGFyYW0ge251bWJlcn0gd3JhcE1vZGUKKyAqIEByZXR1cm4ge3RjdVRleHR1cmUuV3JhcE1vZGV9
CisgKi8KK2dsdVRleHR1cmVVdGlsLm1hcEdMV3JhcE1vZGUgPSBmdW5jdGlvbih3cmFwTW9kZSkg
eworICAgIHN3aXRjaCAod3JhcE1vZGUpIHsKKyAgICAgICAgY2FzZSBnbC5DTEFNUF9UT19FREdF
OiByZXR1cm4gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgICAgICBjYXNl
IGdsLlJFUEVBVDogcmV0dXJuIHRjdVRleHR1cmUuV3JhcE1vZGUuUkVQRUFUX0dMOworICAgICAg
ICBjYXNlIGdsLk1JUlJPUkVEX1JFUEVBVDogcmV0dXJuIHRjdVRleHR1cmUuV3JhcE1vZGUuTUlS
Uk9SRURfUkVQRUFUX0dMOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJDYW4ndCBtYXAgR0wgd3JhcCBtb2RlICIgKyBkZVN0cmluZy5lbnVtVG9TdHJpbmco
Z2wsIHdyYXBNb2RlKSk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gZmls
dGVyTW9kZQorICogQHJldHVybiB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfQorICogQHRocm93cyB7
RXJyb3J9CisgKi8KK2dsdVRleHR1cmVVdGlsLm1hcEdMRmlsdGVyTW9kZSA9IGZ1bmN0aW9uKGZp
bHRlck1vZGUpIHsKKyAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHsKKyAgICAgICAgY2FzZSBnbC5O
RUFSRVNUOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1Q7CisgICAgICAgIGNh
c2UgZ2wuTElORUFSOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUjsKKyAgICAg
ICAgY2FzZSBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0
ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q7CisgICAgICAgIGNhc2UgZ2wuTkVBUkVTVF9N
SVBNQVBfTElORUFSOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1RfTUlQTUFQ
X0xJTkVBUjsKKyAgICAgICAgY2FzZSBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1Q6IHJldHVybiB0
Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1BUF9ORUFSRVNUOworICAgICAgICBjYXNl
IGdsLkxJTkVBUl9NSVBNQVBfTElORUFSOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJ
TkVBUl9NSVBNQVBfTElORUFSOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJDYW4ndCBtYXAgR0wgZmlsdGVyIG1vZGUiICsgZmlsdGVyTW9kZSk7CisgICAg
fQorfTsKKworLyogVE9ETzogUG9ydCB0aGUgY29kZSBiZWxvdyAqLworLy8gLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovLyohCisvLyAgKiBcYnJpZWYgTWFwIEdMIHNhbXBsZXIgcGFyYW1ldGVycyB0byB0Y3U6OlNh
bXBsZXIuCisvLyAgKgorLy8gICogSWYgbm8gbWFwcGluZyBpcyBmb3VuZCwgdGhyb3dzIHRjdTo6
SW50ZXJuYWxFcnJvci4KKy8vICAqCisvLyAgKiBccGFyYW0gd3JhcFMgUy1jb21wb25lbnQgd3Jh
cCBtb2RlCisvLyAgKiBccGFyYW0gbWluRmlsdGVyIE1pbmlmaWNhdGlvbiBmaWx0ZXIgbW9kZQor
Ly8gICogXHBhcmFtIG1hZ0ZpbHRlciBNYWduaWZpY2F0aW9uIGZpbHRlciBtb2RlCisvLyAgKiBc
cmV0dXJuIFNhbXBsZXIgZGVzY3JpcHRpb24uCisvLyAgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8vIC8q
dGN1OjpTYW1wbGVyIG1hcEdMU2FtcGxlcldyYXBTIChkZVVpbnQzMiB3cmFwUywgZGVVaW50MzIg
bWluRmlsdGVyLCBkZVVpbnQzMiBtYWdGaWx0ZXIpCisvLyB7CisvLyAgICAgcmV0dXJuIG1hcEdM
U2FtcGxlcih3cmFwUywgd3JhcFMsIHdyYXBTLCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlcik7CisvLyB9
CisvLyAqLworCisvKioKKyAqIE1hcCBHTCBzYW1wbGVyIHBhcmFtZXRlcnMgdG8gdGN1OjpTYW1w
bGVyLgorICoKKyAqIElmIG5vIG1hcHBpbmcgaXMgZm91bmQsIHRocm93cyB0Y3U6OkludGVybmFs
RXJyb3IuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IHdyYXBTIFMtY29tcG9uZW50IHdyYXAgbW9k
ZQorICogQHBhcmFtIHtudW1iZXJ9IHdyYXBUIFQtY29tcG9uZW50IHdyYXAgbW9kZQorICogQHBh
cmFtIHtudW1iZXJ9IG1pbkZpbHRlciBNaW5pZmljYXRpb24gZmlsdGVyIG1vZGUKKyAqIEBwYXJh
bSB7bnVtYmVyfSBtYWdGaWx0ZXIgTWFnbmlmaWNhdGlvbiBmaWx0ZXIgbW9kZQorICogQHJldHVy
biB7dGN1VGV4dHVyZS5TYW1wbGVyfQorICovCitnbHVUZXh0dXJlVXRpbC5tYXBHTFNhbXBsZXJX
cmFwU1QgPSBmdW5jdGlvbih3cmFwUywgd3JhcFQsIG1pbkZpbHRlciwgbWFnRmlsdGVyKSB7Cisg
ICAgcmV0dXJuIGdsdVRleHR1cmVVdGlsLm1hcEdMU2FtcGxlcih3cmFwUywgd3JhcFQsIHdyYXBT
LCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlcik7Cit9OworCisvKioKKyAqIE1hcCBHTCBzYW1wbGVyIHBh
cmFtZXRlcnMgdG8gdGN1OjpTYW1wbGVyLgorICoKKyAqIElmIG5vIG1hcHBpbmcgaXMgZm91bmQs
IHRocm93cyB0Y3U6OkludGVybmFsRXJyb3IuCisgKiBAcGFyYW0ge251bWJlcn0gd3JhcFMgUy1j
b21wb25lbnQgd3JhcCBtb2RlCisgKiBAcGFyYW0ge251bWJlcn0gd3JhcFQgVC1jb21wb25lbnQg
d3JhcCBtb2RlCisgKiBAcGFyYW0ge251bWJlcn0gd3JhcFIgUi1jb21wb25lbnQgd3JhcCBtb2Rl
CisgKiBAcGFyYW0ge251bWJlcn0gbWluRmlsdGVyIE1pbmlmaWNhdGlvbiBmaWx0ZXIgbW9kZQor
ICogQHBhcmFtIHtudW1iZXJ9IG1hZ0ZpbHRlciBNYWduaWZpY2F0aW9uIGZpbHRlciBtb2RlCisg
KiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9CisgKi8KK2dsdVRleHR1cmVVdGlsLm1hcEdM
U2FtcGxlciA9IGZ1bmN0aW9uKHdyYXBTLCB3cmFwVCwgd3JhcFIsIG1pbkZpbHRlciwgbWFnRmls
dGVyKSB7CisgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIoCisgICAgICAgIGdsdVRl
eHR1cmVVdGlsLm1hcEdMV3JhcE1vZGUod3JhcFMpLAorICAgICAgICBnbHVUZXh0dXJlVXRpbC5t
YXBHTFdyYXBNb2RlKHdyYXBUKSwKKyAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xXcmFwTW9k
ZSh3cmFwUiksCisgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMRmlsdGVyTW9kZShtaW5GaWx0
ZXIpLAorICAgICAgICBnbHVUZXh0dXJlVXRpbC5tYXBHTEZpbHRlck1vZGUobWFnRmlsdGVyKSwK
KyAgICAgICAgMC4wLAorICAgICAgICB0cnVlLAorICAgICAgICB0Y3VUZXh0dXJlLkNvbXBhcmVN
b2RlLkNPTVBBUkVNT0RFX05PTkUsCisgICAgICAgIDAsCisgICAgICAgIFswLjAsIDAuMCwgMC4w
LCAwLjBdKTsKK307CisKKy8vIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQorLy8gICogXGJyaWVmIE1hcCBH
TCBjb21wYXJlIGZ1bmN0aW9uIHRvIHRjdTo6U2FtcGxlcjo6Q29tcGFyZU1vZGUuCisvLyAgKgor
Ly8gICogSWYgbm8gbWFwcGluZyBpcyBmb3VuZCwgdGhyb3dzIHRjdTo6SW50ZXJuYWxFcnJvci4K
Ky8vICAqCisvLyAgKiBccGFyYW0gbW9kZSBHTCBjb21wYXJlIG1vZGUKKy8vICAqIFxyZXR1cm4g
Q29tcGFyZSBtb2RlCisvLyAgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKgorICogQHBhcmFtIHtudW1i
ZXJ9IG1vZGUKKyAqLworZ2x1VGV4dHVyZVV0aWwubWFwR0xDb21wYXJlRnVuYyA9IGZ1bmN0aW9u
KG1vZGUpIHsKKyAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgIGNhc2UgZ2wuTEVTUzogcmV0dXJu
IHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTEVTUzsKKyAgICAgICAgIGNhc2Ug
Z2wuTEVRVUFMOiByZXR1cm4gdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9MRVNT
X09SX0VRVUFMOworICAgICAgICAgY2FzZSBnbC5HUkVBVEVSOiByZXR1cm4gdGN1VGV4dHVyZS5D
b21wYXJlTW9kZS5DT01QQVJFTU9ERV9HUkVBVEVSOworICAgICAgICAgY2FzZSBnbC5HRVFVQUw6
IHJldHVybiB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX0dSRUFURVJfT1JfRVFV
QUw7CisgICAgICAgICBjYXNlIGdsLkVRVUFMOiByZXR1cm4gdGN1VGV4dHVyZS5Db21wYXJlTW9k
ZS5DT01QQVJFTU9ERV9FUVVBTDsKKyAgICAgICAgIGNhc2UgZ2wuTk9URVFVQUw6IHJldHVybiB0
Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX05PVF9FUVVBTDsKKyAgICAgICAgIGNh
c2UgZ2wuQUxXQVlTOiByZXR1cm4gdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9B
TFdBWVM7CisgICAgICAgICBjYXNlIGdsLk5FVkVSOiByZXR1cm4gdGN1VGV4dHVyZS5Db21wYXJl
TW9kZS5DT01QQVJFTU9ERV9ORVZFUjsKKyAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtYXAgR0wgY29tcGFyZSBtb2RlICIgKyBtb2RlKTsKKyAg
ICAgfQorfTsKKworLyoqCisgKiBHZXQgR0wgd3JhcCBtb2RlLgorICoKKyAqIElmIG5vIG1hcHBp
bmcgaXMgZm91bmQsIHRocm93cyB0Y3U6OkludGVybmFsRXJyb3IuCisgKgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLldyYXBNb2RlfSB3cmFwTW9kZQorICogQHJldHVybiB7bnVtYmVyfSBHTCB3cmFw
IG1vZGUKKyAqLworZ2x1VGV4dHVyZVV0aWwuZ2V0R0xXcmFwTW9kZSA9IGZ1bmN0aW9uKHdyYXBN
b2RlKSB7CisgICAgc3dpdGNoICh3cmFwTW9kZSkgeworICAgICAgICBjYXNlIHRjdVRleHR1cmUu
V3JhcE1vZGUuQ0xBTVBfVE9fRURHRTogcmV0dXJuIGdsLkNMQU1QX1RPX0VER0U7CisgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfR0w6IHJldHVybiBnbC5SRVBFQVQ7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5XcmFwTW9kZS5NSVJST1JFRF9SRVBFQVRfR0w6IHJldHVy
biBnbC5NSVJST1JFRF9SRVBFQVQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkNhbid0IG1hcCB3cmFwIG1vZGUiKTsKKyAgICB9Cit9OworCisvKioKKyAq
IEdldCBHTCBmaWx0ZXIgbW9kZS4KKyAqCisgKiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCB0aHJv
d3MgdGN1OjpJbnRlcm5hbEVycm9yLgorICoKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5GaWx0ZXJN
b2RlfSBmaWx0ZXJNb2RlIEZpbHRlciBtb2RlCisgKiBAcmV0dXJuIHtudW1iZXJ9IEdMIGZpbHRl
ciBtb2RlCisgKi8KK2dsdVRleHR1cmVVdGlsLmdldEdMRmlsdGVyTW9kZSA9IGZ1bmN0aW9uKGZp
bHRlck1vZGUpIHsKKyAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHsKKyAgICAgICAgY2FzZSB0Y3VU
ZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVDogcmV0dXJuIGdsLk5FQVJFU1Q7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUjogcmV0dXJuIGdsLkxJTkVBUjsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDogcmV0
dXJuIGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5G
aWx0ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX0xJTkVBUjogcmV0dXJuIGdsLk5FQVJFU1RfTUlQTUFQ
X0xJTkVBUjsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTElORUFSX01JUE1B
UF9ORUFSRVNUOiByZXR1cm4gZ2wuTElORUFSX01JUE1BUF9ORUFSRVNUOworICAgICAgICBjYXNl
IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQTUFQX0xJTkVBUjogcmV0dXJuIGdsLkxJ
TkVBUl9NSVBNQVBfTElORUFSOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJDYW4ndCBtYXAgZmlsdGVyIG1vZGUiKTsKKyAgICB9Cit9OworCisvKioKKyAq
IEdldCBHTCBjb21wYXJlIG1vZGUuCisgKgorICogSWYgbm8gbWFwcGluZyBpcyBmb3VuZCwgdGhy
b3dzIHRjdTo6SW50ZXJuYWxFcnJvci4KKyAqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29tcGFy
ZU1vZGV9IGNvbXBhcmVNb2RlIENvbXBhcmUgbW9kZQorICogQHJldHVybiB7bnVtYmVyfSBHTCBj
b21wYXJlIG1vZGUKKyAqLworZ2x1VGV4dHVyZVV0aWwuZ2V0R0xDb21wYXJlRnVuYyA9IGZ1bmN0
aW9uKGNvbXBhcmVNb2RlKSB7CisgICAgc3dpdGNoIChjb21wYXJlTW9kZSkgeworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORTogcmV0dXJuIGdsLk5P
TkU7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9MRVNT
OiByZXR1cm4gZ2wuTEVTUzsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNP
TVBBUkVNT0RFX0xFU1NfT1JfRVFVQUw6IHJldHVybiBnbC5MRVFVQUw7CisgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9HUkVBVEVSOiByZXR1cm4gZ2wuR1JF
QVRFUjsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNPTVBBUkVNT0RFX0dS
RUFURVJfT1JfRVFVQUw6IHJldHVybiBnbC5HRVFVQUw7CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9FUVVBTDogcmV0dXJuIGdsLkVRVUFMOworICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9UX0VRVUFMOiByZXR1
cm4gZ2wuTk9URVFVQUw7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01Q
QVJFTU9ERV9BTFdBWVM6IHJldHVybiBnbC5BTFdBWVM7CisgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9ORVZFUjogcmV0dXJuIGdsLk5FVkVSOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtYXAgY29tcGFy
ZSBtb2RlIik7CisgICAgfQorfTsKKworLyoqCisgKiBHZXQgR0wgY3ViZSBmYWNlLgorICoKKyAq
IElmIG5vIG1hcHBpbmcgaXMgZm91bmQsIHRocm93cyB0Y3U6OkludGVybmFsRXJyb3IuCisgKgor
ICogQHBhcmFtIHt0Y3VUZXh0dXJlLkN1YmVGYWNlfSBmYWNlIEN1YmUgZmFjZQorICogQHJldHVy
biB7bnVtYmVyfSBHTCBjdWJlIGZhY2UKKyAqLworZ2x1VGV4dHVyZVV0aWwuZ2V0R0xDdWJlRmFj
ZSA9IGZ1bmN0aW9uKGZhY2UpIHsKKyAgICBzd2l0Y2ggKGZhY2UpIHsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1g6CisgICAgICAgICAgICByZXR1
cm4gZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOworICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgIHJldHVybiBnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJl
RmFjZS5DVUJFRkFDRV9ORUdBVElWRV9ZOgorICAgICAgICAgICAgcmV0dXJuIGdsLlRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWTsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNV
QkVGQUNFX1BPU0lUSVZFX1k6CisgICAgICAgICAgICByZXR1cm4gZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9ZOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0Vf
TkVHQVRJVkVfWjoKKyAgICAgICAgICAgIHJldHVybiBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1o7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElW
RV9aOgorICAgICAgICAgICAgcmV0dXJuIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IEVycm9yKCJDYW4ndCBtYXAgY3Vi
ZSBmYWNlIik7CisgICAgfQorfTsKKworLy8gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyohCisvLyAgKiBcYnJp
ZWYgR2V0IEdMU0wgc2FtcGxlciB0eXBlIGZvciB0ZXh0dXJlIGZvcm1hdC4KKy8vICAqCisvLyAg
KiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCBnbHU6OlRZUEVfTEFTVCBpcyByZXR1cm5lZC4KKy8v
ICAqCisvLyAgKiBccGFyYW0gZm9ybWF0IFRleHR1cmUgZm9ybWF0CisvLyAgKiBccmV0dXJuIEdM
U0wgMUQgc2FtcGxlciB0eXBlIGZvciBmb3JtYXQKKy8vICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLy8g
RGF0YVR5cGUgZ2V0U2FtcGxlcjFEVHlwZSAodGN1OjpUZXh0dXJlRm9ybWF0IGZvcm1hdCkKKy8v
IHsKKy8vICAgICB1c2luZyB0Y3U6OlRleHR1cmVGb3JtYXQ7CisKKy8vICAgICBpZiAoZm9ybWF0
Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZm9ybWF0Lm9yZGVyID09IHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTKQorLy8gICAgICAgICByZXR1cm4gVFlQRV9TQU1QTEVS
XzFEOworCisvLyAgICAgaWYgKGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5TKQorLy8gICAgICAgICByZXR1cm4gVFlQRV9MQVNUOworCisvLyAgICAgc3dpdGNoICh0Y3U6
OmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZm9ybWF0LnR5cGUpKQorLy8gICAgIHsKKy8vICAgICAg
ICAgY2FzZSB0Y3U6OlRFWFRVUkVDSEFOTkVMQ0xBU1NfRkxPQVRJTkdfUE9JTlQ6CisvLyAgICAg
ICAgIGNhc2UgdGN1OjpURVhUVVJFQ0hBTk5FTENMQVNTX1NJR05FRF9GSVhFRF9QT0lOVDoKKy8v
ICAgICAgICAgY2FzZSB0Y3U6OlRFWFRVUkVDSEFOTkVMQ0xBU1NfVU5TSUdORURfRklYRURfUE9J
TlQ6CisvLyAgICAgICAgICAgICByZXR1cm4gZ2x1OjpUWVBFX1NBTVBMRVJfMUQ7CisKKy8vICAg
ICAgICAgY2FzZSB0Y3U6OlRFWFRVUkVDSEFOTkVMQ0xBU1NfU0lHTkVEX0lOVEVHRVI6CisvLyAg
ICAgICAgICAgICByZXR1cm4gZ2x1OjpUWVBFX0lOVF9TQU1QTEVSXzFEOworCisvLyAgICAgICAg
IGNhc2UgdGN1OjpURVhUVVJFQ0hBTk5FTENMQVNTX1VOU0lHTkVEX0lOVEVHRVI6CisvLyAgICAg
ICAgICAgICByZXR1cm4gZ2x1OjpUWVBFX1VJTlRfU0FNUExFUl8xRDsKKworLy8gICAgICAgICBk
ZWZhdWx0OgorLy8gICAgICAgICAgICAgcmV0dXJuIGdsdTo6VFlQRV9MQVNUOworLy8gICAgIH0K
Ky8vIH0KKworLyoqCisgKiBHZXQgR0xTTCBzYW1wbGVyIHR5cGUgZm9yIHRleHR1cmUgZm9ybWF0
LgorICogSWYgbm8gbWFwcGluZyBpcyBmb3VuZCwgZ2x1OjpUWVBFX0xBU1QgaXMgcmV0dXJuZWQu
CisgKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICogQHJl
dHVybiB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gR0xTTCAyRCBzYW1wbGVyIHR5cGUgZm9yIGZv
cm1hdAorICovCitnbHVUZXh0dXJlVXRpbC5nZXRTYW1wbGVyMkRUeXBlID0gZnVuY3Rpb24oZm9y
bWF0KSB7CisgICAgaWYgKGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5E
IHx8IGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykKKyAgICByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEOworCisgICAgaWYgKGZvcm1hdC5v
cmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TKQorICAgIHJldHVybiAvKiogQHR5cGUg
e2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIChPYmplY3Qua2V5cyhnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlKS5sZW5ndGgpOworCisgICAgc3dpdGNoICh0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFu
bmVsQ2xhc3MoZm9ybWF0LnR5cGUpKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJl
Q2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4
dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfRklYRURfUE9JTlQ6CisgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAg
ICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRDsKKworICAgICAgICBj
YXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfSU5URUdFUjoKKyAgICAg
ICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9TQU1QTEVSXzJEOworCisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVH
RVI6CisgICAgICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBM
RVJfMkQ7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAvKiogQHR5cGUg
e2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIChPYmplY3Qua2V5cyhnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlKS5sZW5ndGgpOworICAgIH0KK307CisKKy8qKgorICoKKyAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAqIEByZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9IEdMU0wgMkQgc2FtcGxlciB0eXBlIGZvciBmb3JtYXQKKyAqLworZ2x1VGV4dHVyZVV0
aWwuZ2V0U2FtcGxlcjNEVHlwZSA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIGlmIChmb3JtYXQu
b3JkZXIgPT09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZm9ybWF0Lm9yZGVyID09PSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykKKyAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuU0FNUExFUl8zRDsKKworICAgIGlmIChmb3JtYXQub3JkZXIgPT09IHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLlMpCisgICAgICAgIHJldHVybiAvKiogQHR5cGUge2dsdVNoYWRlclV0
aWwuRGF0YVR5cGV9ICovIChPYmplY3Qua2V5cyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlKS5sZW5n
dGgpOyAvLyBzaG91bGRuJ3Qgd2UgdGhyb3cgYW4gZXJyb3IgaW5zdGVhZD8KKworICAgIHN3aXRj
aCAodGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50eXBlKSkgeworICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDoK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0ZJWEVE
X1BPSU5UOgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJ
R05FRF9GSVhFRF9QT0lOVDoKKyAgICAgICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLlNBTVBMRVJfM0Q7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVs
Q2xhc3MuU0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlRfU0FNUExFUl8zRDsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVy
ZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9JTlRFR0VSOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzNEOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyAo
T2JqZWN0LmtleXMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZSkubGVuZ3RoKTsKKyAgICB9Cit9Owor
CisvKioKKyAqIFxicmllZiBHZXQgR0xTTCBzYW1wbGVyIHR5cGUgZm9yIHRleHR1cmUgZm9ybWF0
LgorICoKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAqIEBy
ZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IEdMU0wgMkQgc2FtcGxlciB0eXBlIGZvciBm
b3JtYXQKKyAqLworZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlckN1YmVUeXBlID0gZnVuY3Rpb24o
Zm9ybWF0KSB7CisgICAgaWYgKGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5EIHx8IGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykKKyAgICAg
ICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9DVUJFOworCisgICAgaWYg
KGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ05vIGN1YmUgc2FtcGxlcicpOworCisgICAgc3dpdGNoICh0Y3VUZXh0dXJl
LmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZm9ybWF0LnR5cGUpKSB7CisgICAgICAgIGNhc2UgdGN1
VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOgorICAgICAgICBjYXNl
IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfRklYRURfUE9JTlQ6CisgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BP
SU5UOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9D
VUJFOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05F
RF9JTlRFR0VSOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
X1NBTVBMRVJfQ1VCRTsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxD
bGFzcy5VTlNJR05FRF9JTlRFR0VSOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuVUlOVF9TQU1QTEVSX0NVQkU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcignTm8gY3ViZSBzYW1wbGVyJyk7CisgICAgfQorfTsKKworLyoq
CisgKiBcYnJpZWYgR2V0IEdMU0wgc2FtcGxlciB0eXBlIGZvciB0ZXh0dXJlIGZvcm1hdC4KKyAq
CisgKiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCBnbHU6OlRZUEVfTEFTVCBpcyByZXR1cm5lZC4K
KyAqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgKiBAcmV0
dXJuIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBHTFNMIDJEIHNhbXBsZXIgdHlwZSBmb3IgZm9y
bWF0CisgKi8KK2dsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIyREFycmF5VHlwZSA9IGZ1bmN0aW9u
KGZvcm1hdCkgeworCisgICAgaWYgKGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5EIHx8IGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykKKyAg
ICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF9BUlJBWTsKKwor
ICAgIGlmIChmb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUykKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdObyAyZCBhcnJheSBzYW1wbGVyJyk7CisKKyAgICBzd2l0Y2gg
KHRjdVRleHR1cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhmb3JtYXQudHlwZSkpIHsKKyAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQ6Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9GSVhFRF9Q
T0lOVDoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdO
RURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5TQU1QTEVSXzJEX0FSUkFZOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hh
bm5lbENsYXNzLlNJR05FRF9JTlRFR0VSOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfMkRfQVJSQVk7CisKKyAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgIHJl
dHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl8yRF9BUlJBWTsKKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAyZCBhcnJheSBz
YW1wbGVyJyk7CisgICAgfQorfTsKKworLyoqCisgKiBcYnJpZWYgR2V0IEdMU0wgc2FtcGxlciB0
eXBlIGZvciB0ZXh0dXJlIGZvcm1hdC4KKyAqCisgKiBJZiBubyBtYXBwaW5nIGlzIGZvdW5kLCBn
bHU6OlRZUEVfTEFTVCBpcyByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdH0gZm9ybWF0CisgKiBAcmV0dXJuIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBH
TFNMIDJEIHNhbXBsZXIgdHlwZSBmb3IgZm9ybWF0CisgKi8KK2dsdVRleHR1cmVVdGlsLmdldFNh
bXBsZXIzRCA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIGlmIChmb3JtYXQub3JkZXIgPT0gdGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuRCB8fCBmb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuRFMpCisgICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBM
RVJfM0Q7CisKKyAgICBpZiAoZm9ybWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LlMpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gM2Qgc2FtcGxlcicpOworCisgICAgc3dp
dGNoICh0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZm9ybWF0LnR5cGUpKSB7Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5U
OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfRklY
RURfUE9JTlQ6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVO
U0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuU0FNUExFUl8zRDsKKworICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5u
ZWxDbGFzcy5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVF9TQU1QTEVSXzNEOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0
dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICByZXR1cm4gZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfM0Q7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gM2Qgc2FtcGxlcicpOworICAgIH0KK307
CisKK2dsdVRleHR1cmVVdGlsLlJlbmRlcmFibGVUeXBlID0geworICAgIFJFTkRFUkFCTEVfQ09M
T1I6ICgxPDwwKSwKKyAgICBSRU5ERVJBQkxFX0RFUFRIOiAoMTw8MSksCisgICAgUkVOREVSQUJM
RV9TVEVOQ0lMOiAoMTw8MikKK307CisKKy8qKgorICogXGJyaWVmIEdldCByZW5kZXJhYmxlIGJp
dHMuCisgKiBcbm90ZSBXb3JrcyBjdXJyZW50bHkgb25seSBvbiBFUzMgY29udGV4dC4KKyAqCisg
KiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAqIEByZXR1cm4ge2dsdVRleHR1cmVV
dGlsLlJlbmRlcmFibGVUeXBlfQorICovCitnbHVUZXh0dXJlVXRpbC5nZXRSZW5kZXJhYmxlQml0
c0VTMyA9IGZ1bmN0aW9uKGludGVybmFsRm9ybWF0KQoreworICAgc3dpdGNoIChpbnRlcm5hbEZv
cm1hdCkKKyAgIHsKKyAgICAgICAvLyBDb2xvci1yZW5kZXJhYmxlIGZvcm1hdHMKKyAgICAgICBj
YXNlIGdsLlJHQkEzMkk6CisgICAgICAgY2FzZSBnbC5SR0JBMzJVSToKKyAgICAgICBjYXNlIGds
LlJHQkExNkk6CisgICAgICAgY2FzZSBnbC5SR0JBMTZVSToKKyAgICAgICBjYXNlIGdsLlJHQkE4
OgorICAgICAgIGNhc2UgZ2wuUkdCQThJOgorICAgICAgIGNhc2UgZ2wuUkdCQThVSToKKyAgICAg
ICBjYXNlIGdsLlNSR0I4X0FMUEhBODoKKyAgICAgICBjYXNlIGdsLlJHQjEwX0EyOgorICAgICAg
IGNhc2UgZ2wuUkdCMTBfQTJVSToKKyAgICAgICBjYXNlIGdsLlJHQkE0OgorICAgICAgIGNhc2Ug
Z2wuUkdCNV9BMToKKyAgICAgICBjYXNlIGdsLlJHQjg6CisgICAgICAgY2FzZSBnbC5SR0I1NjU6
CisgICAgICAgY2FzZSBnbC5SRzMySToKKyAgICAgICBjYXNlIGdsLlJHMzJVSToKKyAgICAgICBj
YXNlIGdsLlJHMTZJOgorICAgICAgIGNhc2UgZ2wuUkcxNlVJOgorICAgICAgIGNhc2UgZ2wuUkc4
OgorICAgICAgIGNhc2UgZ2wuUkc4SToKKyAgICAgICBjYXNlIGdsLlJHOFVJOgorICAgICAgIGNh
c2UgZ2wuUjMySToKKyAgICAgICBjYXNlIGdsLlIzMlVJOgorICAgICAgIGNhc2UgZ2wuUjE2SToK
KyAgICAgICBjYXNlIGdsLlIxNlVJOgorICAgICAgIGNhc2UgZ2wuUjg6CisgICAgICAgY2FzZSBn
bC5SOEk6CisgICAgICAgY2FzZSBnbC5SOFVJOgorICAgICAgICAgICByZXR1cm4gZ2x1VGV4dHVy
ZVV0aWwuUmVuZGVyYWJsZVR5cGUuUkVOREVSQUJMRV9DT0xPUjsKKworICAgICAgIC8vIEVYVF9j
b2xvcl9idWZmZXJfZmxvYXQKKyAgICAgICBjYXNlIGdsLlJHQkEzMkY6CisgICAgICAgY2FzZSBn
bC5SMTFGX0cxMUZfQjEwRjoKKyAgICAgICBjYXNlIGdsLlJHMzJGOgorICAgICAgIGNhc2UgZ2wu
UjMyRjoKKyAgICAgICBjYXNlIGdsLlJHQkExNkY6CisgICAgICAgY2FzZSBnbC5SRzE2RjoKKyAg
ICAgICBjYXNlIGdsLlIxNkY6CisgICAgICAgICAgIGlmIChnbC5nZXRFeHRlbnNpb24oIkVYVF9j
b2xvcl9idWZmZXJfZmxvYXQiKSkKKyAgICAgICAgICAgICAgIHJldHVybiBnbHVUZXh0dXJlVXRp
bC5SZW5kZXJhYmxlVHlwZS5SRU5ERVJBQkxFX0NPTE9SOworICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgIC8vIERlcHRoIGZvcm1hdHMKKyAgICAgICBj
YXNlIGdsLkRFUFRIX0NPTVBPTkVOVDMyRjoKKyAgICAgICBjYXNlIGdsLkRFUFRIX0NPTVBPTkVO
VDI0OgorICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgIHJldHVy
biBnbHVUZXh0dXJlVXRpbC5SZW5kZXJhYmxlVHlwZS5SRU5ERVJBQkxFX0RFUFRIOworCisgICAg
ICAgLy8gRGVwdGgrc3RlbmNpbCBmb3JtYXRzCisgICAgICAgY2FzZSBnbC5ERVBUSDMyRl9TVEVO
Q0lMODoKKyAgICAgICBjYXNlIGdsLkRFUFRIMjRfU1RFTkNJTDg6CisgICAgICAgICAgIHJldHVy
biBnbHVUZXh0dXJlVXRpbC5SZW5kZXJhYmxlVHlwZS5SRU5ERVJBQkxFX0RFUFRIIHwgZ2x1VGV4
dHVyZVV0aWwuUmVuZGVyYWJsZVR5cGUuUkVOREVSQUJMRV9TVEVOQ0lMOworCisgICAgICAgLy8g
U3RlbmNpbCBmb3JtYXRzCisgICAgICAgY2FzZSBnbC5TVEVOQ0lMX0lOREVYODoKKyAgICAgICAg
ICAgcmV0dXJuIGdsdVRleHR1cmVVdGlsLlJlbmRlcmFibGVUeXBlLlJFTkRFUkFCTEVfU1RFTkNJ
TDsKKworICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgIHJldHVybiAwOworICAgfQorfQorCisv
KioKKyAqIFxicmllZiBDaGVjayBpZiBzaXplZCBpbnRlcm5hbCBmb3JtYXQgaXMgY29sb3ItcmVu
ZGVyYWJsZS4KKyAqIFxub3RlIFdvcmtzIGN1cnJlbnRseSBvbmx5IG9uIEVTMyBjb250ZXh0Lgor
ICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBzaXplZEZvcm1hdAorICogQHJldHVybiB7Ym9vbGVhbn0K
KyAqLworZ2x1VGV4dHVyZVV0aWwuaXNTaXplZEZvcm1hdENvbG9yUmVuZGVyYWJsZSA9IGZ1bmN0
aW9uKHNpemVkRm9ybWF0KQoreworICAgIHZhciByZW5kZXJhYmxlID0gMDsKKyAgICByZW5kZXJh
YmxlID0gZ2x1VGV4dHVyZVV0aWwuZ2V0UmVuZGVyYWJsZUJpdHNFUzMoc2l6ZWRGb3JtYXQpOwor
ICAgIHJldHVybiAocmVuZGVyYWJsZSAmIGdsdVRleHR1cmVVdGlsLlJlbmRlcmFibGVUeXBlLlJF
TkRFUkFCTEVfQ09MT1IpICE9IDA7Cit9CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2ds
dVZhclR5cGUuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VmFyVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDVmMWMx
ZTVjODAwOTE2MjM2ZTM0YmM2NDc3MzRhNWI4ZDMyY2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsv
b3BlbmdsL2dsdVZhclR5cGUuanMKQEAgLTAsMCArMSw4MTQgQEAKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAq
LworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFy
VHlwZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsK
KworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZhciBnbHVWYXJUeXBlID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVWYXJUeXBlOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJVdGlsOworCisgICAgLyoqCisgICAgKiBnbHVWYXJUeXBlLlZhclR5
cGUgdHlwZXMgZW51bQorICAgICogQGVudW0ge251bWJlcn0KKyAgICAqLworICAgIGdsdVZhclR5
cGUuVHlwZSA9IHsKKyAgICAgICBUWVBFX0JBU0lDOiAwLAorICAgICAgIFRZUEVfQVJSQVk6IDEs
CisgICAgICAgVFlQRV9TVFJVQ1Q6IDIKKyAgICB9OworCisgICAgLyoqCisgICAgKiBnbHVWYXJU
eXBlLlR5cGVBcnJheSBzdHJ1Y3QKKyAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSBl
bGVtZW50VHlwZQorICAgICogQHBhcmFtIHtudW1iZXJ9IGFycmF5U2l6ZQorICAgICogQGNvbnN0
cnVjdG9yCisgICAgKi8KKyAgICBnbHVWYXJUeXBlLlR5cGVBcnJheSA9IGZ1bmN0aW9uKGVsZW1l
bnRUeXBlLCBhcnJheVNpemUpIHsKKyAgICAgICAvKiogQHR5cGUge2dsdVZhclR5cGUuVmFyVHlw
ZX0gKi8gdGhpcy5lbGVtZW50VHlwZSA9IGdsdVZhclR5cGUubmV3Q2xvbmUoZWxlbWVudFR5cGUp
OworICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnNpemUgPSBhcnJheVNpemU7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIGdsdVZhclR5cGUuVmFyVHlwZSBjbGFzcworICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsdVZhclR5cGUuVmFyVHlwZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAvKioKKyAgICAgICAgICogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lz
aW9ufQorICAgICAgICAgKiBAcHJpdmF0ZQorICAgICAgICAgKi8KKyAgICAgICAgdGhpcy5tX2Zs
YWdzOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQorICAgICAgICAg
KiBAcHJpdmF0ZQorICAgICAgICAgKi8KKyAgICAgICAgdGhpcy5tX3R5cGUgPSAtMTsKKworICAg
ICAgICAvKioKKyAgICAgICAgICogbV9kYXRhIHVzZWQgdG8gYmUgYSAnRGF0YScgdW5pb24gaW4g
QysrLiBVc2luZyBhIHZhciBpcyBlbm91Z2ggaGVyZS4KKyAgICAgICAgICogaXQgd2lsbCBjb250
YWluIGFueSBuZWNlc3NhcnkgdmFsdWUuCisgICAgICAgICAqIGNhc2UgVFlQRV9CQVNJQzogbnVt
YmVyCisgICAgICAgICAqIGNhc2UgVFlQRV9BUlJBWTogZ2x1VmFyVHlwZS5UeXBlQXJyYXkKKyAg
ICAgICAgICogY2FzZSBUWVBFX1NUUlVDVDogZ2x1VmFyVHlwZS5TdHJ1Y3RUeXBlCisgICAgICAg
ICAqIEBwcml2YXRlCisgICAgICAgICAqIEB0eXBlIHsobnVtYmVyfGdsdVZhclR5cGUuVHlwZUFy
cmF5fGdsdVZhclR5cGUuU3RydWN0VHlwZSl9CisgICAgICAgICovCisgICAgICAgIHRoaXMubV9k
YXRhID0gbnVsbDsKKyAgICB9OworCisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLlVOU0laRURfQVJS
QVkgPSAtMTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBiYXNpYyB0eXBlIGdsdVZhclR5
cGUuVmFyVHlwZS4gVXNlIHRoaXMgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGNhbGwuCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGJhc2ljVHlwZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5w
cmVjaXNpb259IGZsYWdzCisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5WYXJUeXBlfSBUaGUg
Y3VycmVudGx5IG1vZGlmaWVkIG9iamVjdAorICAgICAqLworICAgIGdsdVZhclR5cGUuVmFyVHlw
ZS5wcm90b3R5cGUuVmFyVHlwZUJhc2ljID0gZnVuY3Rpb24oYmFzaWNUeXBlLCBmbGFncykgewor
ICAgICAgICB0aGlzLm1fdHlwZSA9IGdsdVZhclR5cGUuVHlwZS5UWVBFX0JBU0lDOworICAgICAg
ICB0aGlzLm1fZmxhZ3MgPSBmbGFnczsKKyAgICAgICAgdGhpcy5tX2RhdGEgPSBiYXNpY1R5cGU7
CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0
ZXMgYSBiYXNpYyB0eXBlIGdsdVZhclR5cGUuVmFyVHlwZSB3aXRoIHR5cGUgYm9vbGVhbiBhbmQg
dW5kZWZpbmVkIHByZWNpc2lvbi4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYmFzaWNUeXBlCisg
ICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5WYXJUeXBlfSBUaGUgY3VycmVudGx5IG1vZGlmaWVk
IG9iamVjdAorICAgICAqLworICAgIGdsdVZhclR5cGUuVmFyVHlwZS5wcm90b3R5cGUuVmFyVHlw
ZUJvb2xlYW4gPSBmdW5jdGlvbihiYXNpY1R5cGUpIHsKKyAgICAgICAgdGhpcy5tX3R5cGUgPSBn
bHVWYXJUeXBlLlR5cGUuVFlQRV9CQVNJQzsKKyAgICAgICAgdGhpcy5tX2RhdGEgPSBiYXNpY1R5
cGU7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENy
ZWF0ZXMgYW4gYXJyYXkgdHlwZSBnbHVWYXJUeXBlLlZhclR5cGUuIFVzZSB0aGlzIGFmdGVyIHRo
ZSBjb25zdHJ1Y3RvciBjYWxsLgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSBl
bGVtZW50VHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcnJheVNpemUKKyAgICAgKiBAcmV0
dXJuIHtnbHVWYXJUeXBlLlZhclR5cGV9IFRoZSBjdXJyZW50bHkgbW9kaWZpZWQgb2JqZWN0Cisg
ICAgICovCisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLnByb3RvdHlwZS5WYXJUeXBlQXJyYXkgPSBm
dW5jdGlvbihlbGVtZW50VHlwZSwgYXJyYXlTaXplKSB7CisgICAgICAgIHRoaXMubV90eXBlID0g
Z2x1VmFyVHlwZS5UeXBlLlRZUEVfQVJSQVk7CisgICAgICAgIGlmICghKGFycmF5U2l6ZSA+PSAw
IHx8IGFycmF5U2l6ZSA9PSBnbHVWYXJUeXBlLlZhclR5cGUuVU5TSVpFRF9BUlJBWSkpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJyYXkgc2l6ZTogJyArIGFycmF5U2l6
ZSk7CisgICAgICAgIHRoaXMubV9kYXRhID0gbmV3IGdsdVZhclR5cGUuVHlwZUFycmF5KGVsZW1l
bnRUeXBlLCBhcnJheVNpemUpOworCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBDcmVhdGVzIGEgc3RydWN0IHR5cGUgZ2x1VmFyVHlwZS5WYXJUeXBlLiBV
c2UgdGhpcyBhZnRlciB0aGUgY29uc3RydWN0b3IgY2FsbC4KKyAgICAgKiBAcGFyYW0ge2dsdVZh
clR5cGUuU3RydWN0VHlwZX0gc3RydWN0UHRyCisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5W
YXJUeXBlfSBUaGUgY3VycmVudGx5IG1vZGlmaWVkIG9iamVjdAorICAgICAqLworICAgIGdsdVZh
clR5cGUuVmFyVHlwZS5wcm90b3R5cGUuVmFyVHlwZVN0cnVjdCA9IGZ1bmN0aW9uKHN0cnVjdFB0
cikgeworICAgICAgICB0aGlzLm1fdHlwZSA9IGdsdVZhclR5cGUuVHlwZS5UWVBFX1NUUlVDVDsK
KyAgICAgICAgdGhpcy5tX2RhdGEgPSBzdHJ1Y3RQdHI7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBnbHVWYXJUeXBlLlZhclR5cGUs
IHRoZSBzYW1lIHR5cGUgYXMgdGhlIHBhc3NlZCBpbiBvYmplY3QuCisgICAgICogVXNlIHRoaXMg
YWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGNhbGwuCisgICAgICogQHBhcmFtIHtnbHVWYXJUeXBlLlZh
clR5cGV9IG9iamVjdAorICAgICAqIEByZXR1cm4ge2dsdVZhclR5cGUuVmFyVHlwZX0gVGhlIGN1
cnJlbnRseSBtb2RpZmllZCBvYmplY3QKKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLlZhclR5cGUu
cHJvdG90eXBlLlZhclR5cGVDbG9uZSA9IGZ1bmN0aW9uKG9iamVjdCkgeworCisgICAgICAgIHRo
aXMubV90eXBlID0gb2JqZWN0Lm1fdHlwZTsKKworICAgICAgICBzd2l0Y2ggKHRoaXMubV90eXBl
KSB7CisgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLlR5cGUuVFlQRV9CQVNJQzoKKyAgICAgICAg
ICAgIHRoaXMubV9mbGFncyA9IG9iamVjdC5tX2ZsYWdzOworICAgICAgICAgICAgdGhpcy5tX2Rh
dGEgPSBvYmplY3QubV9kYXRhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBn
bHVWYXJUeXBlLlR5cGUuVFlQRV9CQVNJQzoKKyAgICAgICAgICAgIHRoaXMubV9kYXRhID0gbmV3
IGdsdVZhclR5cGUuVHlwZUFycmF5KG9iamVjdC5tX2RhdGEuZWxlbWVudFR5cGUsIG9iamVjdC5t
X2RhdGEuc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIGdsdVZhclR5
cGUuVHlwZS5UWVBFX1NUUlVDVDoKKyAgICAgICAgICAgIHRoaXMubV9kYXRhID0gb2JqZWN0Lm1f
ZGF0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gdHlwZTogJyArIHRoaXMubV90eXBlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAgICAvKiogaXNCYXNpY1R5
cGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBnbHVWYXJUeXBlLlZhclR5
cGUgcmVwcmVzZW50cyBhIGJhc2ljIHR5cGUuCisgICAgICovCisgICAgZ2x1VmFyVHlwZS5WYXJU
eXBlLnByb3RvdHlwZS5pc0Jhc2ljVHlwZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tX3R5cGUgPT0gZ2x1VmFyVHlwZS5UeXBlLlRZUEVfQkFTSUM7CisgICAgfTsKKworICAg
IC8qKiBpc0FycmF5VHlwZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGds
dVZhclR5cGUuVmFyVHlwZSByZXByZXNlbnRzIGFuIGFycmF5LgorICAgICAqLworICAgIGdsdVZh
clR5cGUuVmFyVHlwZS5wcm90b3R5cGUuaXNBcnJheVR5cGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMubV90eXBlID09IGdsdVZhclR5cGUuVHlwZS5UWVBFX0FSUkFZOworICAg
IH07CisKKyAgICAvKiogaXNTdHJ1Y3RUeXBlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1
ZSBpZiB0aGUgZ2x1VmFyVHlwZS5WYXJUeXBlIHJlcHJlc2VudHMgYSBzdHJ1Y3QuCisgICAgICov
CisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLnByb3RvdHlwZS5pc1N0cnVjdFR5cGUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV90eXBlID09IGdsdVZhclR5cGUuVHlwZS5UWVBF
X1NUUlVDVDsKKyAgICB9OworCisgICAgLyoqIGdldEZsYWdzCisgICAgICogQHJldHVybiB7bnVt
YmVyfSByZXR1cm5zIHRoZSBmbGFncyBvZiB0aGUgZ2x1VmFyVHlwZS5WYXJUeXBlLgorICAgICAq
LworICAgIGdsdVZhclR5cGUuVmFyVHlwZS5wcm90b3R5cGUuZ2V0RmxhZ3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9mbGFnczsKKyAgICB9OworCisgICAgLyoqIGdldEJh
c2ljVHlwZQorICAgICAqIEByZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU8bnVtYmVyPn0g
cmV0dXJucyB0aGUgYmFzaWMgZGF0YSB0eXBlIG9mIHRoZSBnbHVWYXJUeXBlLlZhclR5cGUuCisg
ICAgICovCisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLnByb3RvdHlwZS5nZXRCYXNpY1R5cGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzQmFzaWNUeXBlKCkpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1ZhclR5cGUgaXMgbm90IGEgYmFzaWMgdHlwZS4nKTsKKyAgICAg
ICAgcmV0dXJuIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZTxudW1iZXI+fSAqLyAo
dGhpcy5tX2RhdGEpOworICAgIH07CisKKyAgICAvKiogZ2V0UHJlY2lzaW9uCisgICAgICogQHJl
dHVybiB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHJldHVybnMgdGhlIHByZWNpc2lvbiBmbGFn
LgorICAgICAqLworICAgIGdsdVZhclR5cGUuVmFyVHlwZS5wcm90b3R5cGUuZ2V0UHJlY2lzaW9u
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhpcy5pc0Jhc2ljVHlwZSgpKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYXJUeXBlIGlzIG5vdCBhIGJhc2ljIHR5cGUuJyk7Cisg
ICAgICAgIHJldHVybiB0aGlzLm1fZmxhZ3M7CisgICAgIH07CisKKyAgICAvKiogZ2V0RWxlbWVu
dFR5cGUKKyAgICAgKiBAcmV0dXJuIHtnbHVWYXJUeXBlLlZhclR5cGV9IHJldHVybnMgdGhlIGds
dVZhclR5cGUuVmFyVHlwZSBvZiB0aGUgZWxlbWVudCBpbiBjYXNlIG9mIGFuIEFycmF5LgorICAg
ICAqLworICAgIGdsdVZhclR5cGUuVmFyVHlwZS5wcm90b3R5cGUuZ2V0RWxlbWVudFR5cGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzQXJyYXlUeXBlKCkpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1ZhclR5cGUgaXMgbm90IGFuIGFycmF5IHR5cGUuJyk7CisgICAg
ICAgIHJldHVybiB0aGlzLm1fZGF0YS5lbGVtZW50VHlwZTsKKyAgICB9OworCisgICAgLyoqIGdl
dEFycmF5U2l6ZQorICAgICAqIChub3QgdG8gYmUgY29uZnVzZWQgd2l0aCBhIGphdmFzY3JpcHQg
YXJyYXkpCisgICAgICogQHJldHVybiB7bnVtYmVyfSByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBh
cnJheSBpbiBjYXNlIGl0IGlzIGFuIGFycmF5LgorICAgICAqLworICAgIGdsdVZhclR5cGUuVmFy
VHlwZS5wcm90b3R5cGUuZ2V0QXJyYXlTaXplID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICgh
dGhpcy5pc0FycmF5VHlwZSgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYXJUeXBl
IGlzIG5vdCBhbiBhcnJheSB0eXBlLicpOworICAgICAgICByZXR1cm4gdGhpcy5tX2RhdGEuc2l6
ZTsKKyAgICB9OworCisgICAgLyoqIGdldFN0cnVjdAorICAgICAqIEByZXR1cm4ge2dsdVZhclR5
cGUuU3RydWN0VHlwZX0gcmV0dXJucyB0aGUgc3RydWN0dXJlIHdoZW4gaXQgaXMgYSBnbHVWYXJU
eXBlLlN0cnVjdFR5cGUuCisgICAgICovCisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLnByb3RvdHlw
ZS5nZXRTdHJ1Y3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzU3RydWN0VHlw
ZSgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYXJUeXBlIGlzIG5vdCBhIHN0cnVj
dCB0eXBlLicpOworICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5
cGV9ICovICh0aGlzLm1fZGF0YSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdldFNjYWxh
clNpemUKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IHNpemUgb2YgdGhlIHNjYWxhcgorICAgICAq
LworICAgIGdsdVZhclR5cGUuVmFyVHlwZS5wcm90b3R5cGUuZ2V0U2NhbGFyU2l6ZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBzd2l0Y2ggKHRoaXMubV90eXBlKSB7CisgICAgICAgICAgICBjYXNl
IGdsdVZhclR5cGUuVHlwZS5UWVBFX0JBU0lDOiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRp
bC5EYXRhVHlwZX0gKi8odGhpcy5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUT0RPOiBjaGVjayBpbXBsZW1lbnRhdGlvbiBiZWxvdzogcmV0dXJuIG1f
ZGF0YS5hcnJheS5lbGVtZW50VHlwZS0+Z2V0U2NhbGFyU2l6ZSgpKm1fZGF0YS5hcnJheS5zaXpl
OworICAgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLlR5cGUuVFlQRV9BUlJBWTogeworICAgICAg
ICAgICAgICAgIHZhciBtX2RhdGEgPSAvKiogQHR5cGUge2dsdVZhclR5cGUuVHlwZUFycmF5fSAq
Lyh0aGlzLm1fZGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fZGF0YS5lbGVtZW50VHlw
ZS5nZXRTY2FsYXJTaXplKCkgKiBtX2RhdGEuc2l6ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY2FzZSBnbHVWYXJUeXBlLlR5cGUuVFlQRV9TVFJVQ1Q6IHsKKyAgICAgICAgICAgICAg
ICB2YXIgc2l6ZSA9IDA7CisKKyAgICAgICAgICAgICAgICB2YXIgc3RydWN0ID0gLyoqIEB0eXBl
IHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovICh0aGlzLm1fZGF0YSk7CisKKyAgICAgICAgICAg
ICAgICAvLyBUT0RPOiBjaGVjayBsb29wIGNvbmRpdGlvbnMgYmVsb3cKKyAgICAgICAgICAgICAg
ICAvLyBmb3IgKGdsdVZhclR5cGUuU3RydWN0VHlwZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gbV9k
YXRhLnN0cnVjdFB0ci0+YmVnaW4oKTsgaXRlciAhPSBtX2RhdGEuc3RydWN0UHRyLT5lbmQoKTsg
aXRlcisrKQorICAgICAgICAgICAgICAgIGZvciAodmFyIGl0ZXIgPSAwOyBzdHJ1Y3QubV9tZW1i
ZXJzW2l0ZXJdIDwgc3RydWN0LmdldFNpemUoKTsgaXRlcisrKQorICAgICAgICAgICAgICAgICAg
ICBzaXplICs9IHN0cnVjdC5nZXRNZW1iZXIoaXRlcikubV90eXBlLmdldFNjYWxhclNpemUoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0
ZWQgdHlwZS4nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvKioKKyAgICAqIGlzCisgICAgKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm5zIHRy
dWUgaWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGVxdWl2YWxlbnQgdG8gb3RoZXIuCisgICAgKi8K
KyAgICBnbHVWYXJUeXBlLlZhclR5cGUucHJvdG90eXBlLmlzID0gZnVuY3Rpb24ob3RoZXIpIHsK
KyAgICAgICAgaWYgKHRoaXMubV90eXBlICE9IG90aGVyLm1fdHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHRoaXMubV90eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIGdsdVZhclR5cGUuVHlwZS5UWVBFX0JBU0lDOgorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLm1fZGF0YSA9PSBvdGhlci5tX2RhdGEgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5tX2ZsYWdzID09IG90aGVyLm1fZmxhZ3M7CisKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFy
VHlwZS5UeXBlLlRZUEVfQVJSQVk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubV9kYXRh
LmVsZW1lbnRUeXBlID09IG90aGVyLm1fZGF0YS5lbGVtZW50VHlwZSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fZGF0YS5zaXplID09IG90aGVyLm1fZGF0YS5zaXplOworCisgICAg
ICAgICAgICBjYXNlIGdsdVZhclR5cGUuVHlwZS5UWVBFX1NUUlVDVDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5tX2RhdGEgPT09IG90aGVyLm1fZGF0YTsKKworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgdHlw
ZS4nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBpc250CisgICAgKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm5zIHRy
dWUgaWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIG5vdCBlcXVpdmFsZW50IHRvIG90aGVyLgorICAg
ICovCisgICAgZ2x1VmFyVHlwZS5WYXJUeXBlLnByb3RvdHlwZS5pc250ID0gZnVuY3Rpb24ob3Ro
ZXIpIHsKKyAgICAgICAgcmV0dXJuICEodGhpcy5pcyhvdGhlcikpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBDcmVhdGVzIGEgYmFzaWMgdHlwZSBnbHVWYXJUeXBlLlZhclR5cGUuCisgICAg
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBiYXNpY1R5cGUKKyAgICAgKiBAcGFy
YW0ge2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb249fSBmbGFncworICAg
ICAqIEByZXR1cm4ge2dsdVZhclR5cGUuVmFyVHlwZX0KKyAgICAgKi8KKyAgICBnbHVWYXJUeXBl
Lm5ld1R5cGVCYXNpYyA9IGZ1bmN0aW9uKGJhc2ljVHlwZSwgZmxhZ3MpIHsKKyAgICAgICAgaWYg
KCFnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKGJhc2ljVHlwZSkpCisgICAgICAg
ICAgICByZXR1cm4gbmV3IGdsdVZhclR5cGUuVmFyVHlwZSgpLlZhclR5cGVCYXNpYyhiYXNpY1R5
cGUsIC8qKiBAdHlwZSB7ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0q
LyAoZmxhZ3MpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG5ldyBnbHVWYXJU
eXBlLlZhclR5cGUoKS5WYXJUeXBlQm9vbGVhbihiYXNpY1R5cGUpOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdHlwZSBnbHVWYXJUeXBlLlZhclR5cGUuCisgICAg
KiBAcGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gZWxlbWVudFR5cGUKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSBhcnJheVNpemUKKyAgICAqIEByZXR1cm4ge2dsdVZhclR5cGUuVmFyVHlwZX0KKyAg
ICAqLworICAgIGdsdVZhclR5cGUubmV3VHlwZUFycmF5ID0gZnVuY3Rpb24oZWxlbWVudFR5cGUs
IGFycmF5U2l6ZSkgeworICAgICAgIHJldHVybiBuZXcgZ2x1VmFyVHlwZS5WYXJUeXBlKCkuVmFy
VHlwZUFycmF5KGVsZW1lbnRUeXBlLCBhcnJheVNpemUpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAqIENyZWF0ZXMgYSBzdHJ1Y3QgdHlwZSBnbHVWYXJUeXBlLlZhclR5cGUuCisgICAgKiBAcGFy
YW0ge2dsdVZhclR5cGUuU3RydWN0VHlwZX0gc3RydWN0UHRyCisgICAgKiBAcmV0dXJuIHtnbHVW
YXJUeXBlLlZhclR5cGV9CisgICAgKi8KKyAgICBnbHVWYXJUeXBlLm5ld1R5cGVTdHJ1Y3QgPSBm
dW5jdGlvbihzdHJ1Y3RQdHIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBnbHVWYXJUeXBlLlZhclR5
cGUoKS5WYXJUeXBlU3RydWN0KHN0cnVjdFB0cik7CisgICAgfTsKKworICAgIC8qKgorICAgICog
Q3JlYXRlcyBhIHN0cnVjdCB0eXBlIGdsdVZhclR5cGUuVmFyVHlwZS4KKyAgICAqIEBwYXJhbSB7
Z2x1VmFyVHlwZS5WYXJUeXBlfSBvYmplY3QKKyAgICAqIEByZXR1cm4ge2dsdVZhclR5cGUuVmFy
VHlwZX0KKyAgICAqLworICAgIGdsdVZhclR5cGUubmV3Q2xvbmUgPSBmdW5jdGlvbihvYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBnbHVWYXJUeXBlLlZhclR5cGUoKS5WYXJUeXBlQ2xvbmUo
b2JqZWN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2x1VmFyVHlwZS5TdHJ1Y3RNZW1i
ZXIgY2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLlN0
cnVjdE1lbWJlciA9IGZ1bmN0aW9uKCkgeworICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0
aGlzLm1fbmFtZTsKKyAgICAgICAvKiogQHR5cGUge2dsdVZhclR5cGUuVmFyVHlwZX0gKi8gdGhp
cy5tX3R5cGU7CisgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIC8vIHRoaXMubV9mbGFncyA9
IDA7IC8vIG9ubHkgaW4gZ2xzVW5pZm9ybUJsb2NrQ2FzZQorICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBDcmVhdGVzIGEgZ2x1VmFyVHlwZS5TdHJ1Y3RNZW1iZXIuIFVzZSB0aGlzIGFmdGVyIHRo
ZSBjb25zdHJ1Y3RvciBjYWxsLgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICog
QHBhcmFtIHtnbHVWYXJUeXBlLlZhclR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtnbHVWYXJU
eXBlLlN0cnVjdE1lbWJlcn0gVGhlIGN1cnJlbnRseSBtb2RpZmllZCBvYmplY3QKKyAgICAgKi8K
KyAgICBnbHVWYXJUeXBlLlN0cnVjdE1lbWJlci5wcm90b3R5cGUuQ29uc3RydWN0b3IgPSBmdW5j
dGlvbihuYW1lLCB0eXBlKSB7CisgICAgICAgIHRoaXMubV90eXBlID0gdHlwZTsKKyAgICAgICAg
dGhpcy5tX25hbWUgPSBuYW1lOworCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAg
ICAvKiogZ2V0TmFtZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30gbmFtZSBvZiB0aGUgZ2x1VmFy
VHlwZS5TdHJ1Y3RNZW1iZXIgb2JqZWN0LgorICAgICAqLworICAgIGdsdVZhclR5cGUuU3RydWN0
TWVtYmVyLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0
aGlzLm1fbmFtZTsKKyAgICB9OworCisgICAgLyoqIGdldFR5cGUKKyAgICAgKiBAcmV0dXJuIHtn
bHVWYXJUeXBlLlZhclR5cGV9IHR5cGUgb2YgdGhlIGdsdVZhclR5cGUuU3RydWN0TWVtYmVyIG9i
amVjdC4KKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLlN0cnVjdE1lbWJlci5wcm90b3R5cGUuZ2V0
VHlwZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX3R5cGU7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBnbHVWYXJUeXBlLlN0cnVjdE1lbWJlci4KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5WYXJU
eXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5TdHJ1Y3RNZW1iZXJ9CisgICAg
ICovCisgICAgZ2x1VmFyVHlwZS5uZXdTdHJ1Y3RNZW1iZXIgPSBmdW5jdGlvbihuYW1lLCB0eXBl
KSB7CisgICAgICAgIHJldHVybiBuZXcgZ2x1VmFyVHlwZS5TdHJ1Y3RNZW1iZXIoKS5Db25zdHJ1
Y3RvcihuYW1lLCB0eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2x1VmFyVHlwZS5T
dHJ1Y3RUeXBlIGNsYXNzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2x1VmFy
VHlwZS5TdHJ1Y3RUeXBlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB0aGlzLm1fdHlwZU5hbWUgPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVW
YXJUeXBlLlN0cnVjdE1lbWJlcj59ICovIHRoaXMubV9tZW1iZXJzID0gW107CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBnbHVWYXJUeXBlLlN0cnVjdFR5cGUuIFVzZSB0aGlz
IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciBjYWxsLgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBlfSBUaGUgY3VycmVudGx5IG1v
ZGlmaWVkIG9iamVjdAorICAgICAqLworICAgIGdsdVZhclR5cGUuU3RydWN0VHlwZS5wcm90b3R5
cGUuQ29uc3RydWN0b3IgPSBmdW5jdGlvbihuYW1lKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSovIHRoaXMubV90eXBlTmFtZSA9IHRoaXMuc2V0VHlwZU5hbWUobmFtZSk7CisgICAgICAg
IHJldHVybiB0aGlzOworICAgIH07CisKKyAgICAvKiogaGFzVHlwZU5hbWUKKyAgICAgKiBDaGVj
a3MgaWYgdGhlIGdsdVZhclR5cGUuU3RydWN0VHlwZSBtX3R5cGVOYW1lIGlzIGRlZmluZWQKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsdVZhclR5cGUuU3RydWN0VHlw
ZS5wcm90b3R5cGUuaGFzVHlwZU5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICh0
aGlzLm1fdHlwZU5hbWUgIT09ICd1bmRlZmluZWQnKTsKKyAgICB9OworCisgICAgLyoqIHNldFR5
cGVOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtzdHJp
bmd9IHJldHVybnMgZ2x1VmFyVHlwZS5TdHJ1Y3RUeXBlLm1fdHlwZU5hbWUKKyAgICAgKi8KKyAg
ICBnbHVWYXJUeXBlLlN0cnVjdFR5cGUucHJvdG90eXBlLnNldFR5cGVOYW1lID0gZnVuY3Rpb24o
bmFtZSkgeworICAgICAgICByZXR1cm4gdGhpcy5tX3R5cGVOYW1lID0gbmFtZTsKKyAgICB9Owor
CisgICAgLyoqIGdldFR5cGVOYW1lCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwor
ICAgIGdsdVZhclR5cGUuU3RydWN0VHlwZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV90eXBlTmFtZTsKKyAgICB9OworCisgICAgLyoq
IGdldE51bU1lbWJlcnMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2x1
VmFyVHlwZS5TdHJ1Y3RUeXBlLnByb3RvdHlwZS5nZXROdW1NZW1iZXJzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLm1fbWVtYmVycy5sZW5ndGg7CisgICAgfTsKKworICAgIC8q
KiBnZXRNZW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWVtYmVyTmR4IFRoZSBpbmRleCBv
ZiB0aGUgbWVtYmVyIHRvIHJldHJpZXZlLgorICAgICAqIEByZXR1cm4ge2dsdVZhclR5cGUuU3Ry
dWN0TWVtYmVyfQorICAgICAqLworICAgIGdsdVZhclR5cGUuU3RydWN0VHlwZS5wcm90b3R5cGUu
Z2V0TWVtYmVyID0gZnVuY3Rpb24obWVtYmVyTmR4KSB7CisgICAgICAgIGlmIChtZW1iZXJOZHgg
Pj0gMCAmJiBtZW1iZXJOZHggPCB0aGlzLm1fbWVtYmVycy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5tX21lbWJlcnNbbWVtYmVyTmR4XTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWVtYmVyIGluZGV4IGZvciBTdHJ1Y3RUeXBl
cyBtZW1iZXJzJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqIGdldFNpemUKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBzaXplIG9mIHRoZSBtX21lbWJlcnMgYXJyYXkuCisgICAg
ICovCisgICAgZ2x1VmFyVHlwZS5TdHJ1Y3RUeXBlLnByb3RvdHlwZS5nZXRTaXplID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbWVtYmVycy5sZW5ndGg7CisgICAgfTsKKwor
ICAgIC8qKiBhZGRNZW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBw
YXJhbSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSB0eXBlCisgICAgICovCisgICAgZ2x1VmFyVHlwZS5T
dHJ1Y3RUeXBlLnByb3RvdHlwZS5hZGRNZW1iZXIgPSBmdW5jdGlvbihuYW1lLCB0eXBlKSB7Cisg
ICAgICAgIHZhciBtZW1iZXIgPSBnbHVWYXJUeXBlLm5ld1N0cnVjdE1lbWJlcihuYW1lLCB0eXBl
KTsKKyAgICAgICAgdGhpcy5tX21lbWJlcnMucHVzaChtZW1iZXIpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBDcmVhdGVzIGEgZ2x1VmFyVHlwZS5TdHJ1Y3RUeXBlLgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBlfQor
ICAgICAqLworICAgIGdsdVZhclR5cGUubmV3U3RydWN0VHlwZSA9IGZ1bmN0aW9uKG5hbWUpIHsK
KyAgICAgICAgcmV0dXJuIG5ldyBnbHVWYXJUeXBlLlN0cnVjdFR5cGUoKS5Db25zdHJ1Y3Rvcihu
YW1lKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsdVZhclR5cGUuaW5kZW50ID0g
ZnVuY3Rpb24obGV2ZWwpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzdHIg
PSAnJzsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKQorICAgICAgICAg
ICAgc3RyICs9ICdcdCc7CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSB2YXJUeXBlCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGxldmVsCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsdVZhclR5cGUuZGVjbGFyZVZhcmlhYmxlID0g
ZnVuY3Rpb24odmFyVHlwZSwgbmFtZSwgbGV2ZWwpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBzdHIgPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlZhclR5
cGV9ICovIHZhciB0eXBlID0gdmFyVHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBl
LlZhclR5cGV9ICovIHZhciBjdXJUeXBlID0gdHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgYXJyYXlTaXplcyA9IFtdOworCisgICAgICAgIC8vIEhhbmRsZSBh
cnJheXMuCisgICAgICAgIHdoaWxlIChjdXJUeXBlLmlzQXJyYXlUeXBlKCkpIHsKKyAgICAgICAg
ICAgIGFycmF5U2l6ZXMucHVzaChjdXJUeXBlLmdldEFycmF5U2l6ZSgpKTsKKyAgICAgICAgICAg
IGN1clR5cGUgPSBjdXJUeXBlLmdldEVsZW1lbnRUeXBlKCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY3VyVHlwZS5pc0Jhc2ljVHlwZSgpKSB7CisgICAgICAgICAgICBpZiAoY3VyVHlwZS5n
ZXRQcmVjaXNpb24oKSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHN0ciArPSBnbHVT
aGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUoY3VyVHlwZS5nZXRQcmVjaXNpb24oKSkgKyAnICc7
CisgICAgICAgICAgICBzdHIgKz0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoLyoqIEB0
eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyhjdXJUeXBlLmdldEJhc2ljVHlwZSgpKSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY3VyVHlwZS5pc1N0cnVjdFR5cGUoKSkgeworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1Y3RQdHIgPSBj
dXJUeXBlLmdldFN0cnVjdCgpOworCisgICAgICAgICAgICBpZiAoc3RydWN0UHRyLmhhc1R5cGVO
YW1lKCkpCisgICAgICAgICAgICAgICAgc3RyICs9IHN0cnVjdFB0ci5nZXRUeXBlTmFtZSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0ciArPSBnbHVWYXJUeXBlLmRlY2xh
cmVTdHJ1Y3RUeXBlKHN0cnVjdFB0ciwgbGV2ZWwpOyAvLyBHZW5lcmF0ZSBpbmxpbmUgZGVjbGFy
YXRpb24uCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4
cGVjdGVkIEFycmF5IHR5cGVkIFZhclR5cGUuJyk7CisKKyAgICAgICAgc3RyICs9ICcgJyArIG5h
bWU7CisKKyAgICAgICAgLy8gUHJpbnQgYXJyYXkgc2l6ZXMuCisgICAgICAgIGZvciAodmFyIHNp
emUgPSAwOyBzaXplIDwgYXJyYXlTaXplcy5sZW5ndGg7IHNpemUrKykgeyAvL3N0ZDo6dmVjdG9y
PGludD46OmNvbnN0X2l0ZXJhdG9yIHNpemVJdGVyID0gYXJyYXlTaXplcy5iZWdpbigpOyBzaXpl
SXRlciAhPSBhcnJheVNpemVzLmVuZCgpOyBzaXplSXRlcisrKSB7CisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGFyclNpemUgPSBhcnJheVNpemVzW3NpemVdOworICAgICAg
ICAgICAgaWYgKGFyclNpemUgPT0gZ2x1VmFyVHlwZS5WYXJUeXBlLlVOU0laRURfQVJSQVkpCisg
ICAgICAgICAgICAgICAgc3RyICs9ICdbXSc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc3RyICs9ICdbJyArIGFyclNpemUgKyAnXSc7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gc3RyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsdVZhclR5cGUu
U3RydWN0VHlwZX0gc3RydWN0VHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbGV2ZWwKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2x1VmFyVHlwZS5kZWNsYXJlU3Ry
dWN0VHlwZSA9IGZ1bmN0aW9uKHN0cnVjdFR5cGUsIGxldmVsKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB2YXIgc3RyID0gJ3N0cnVjdCc7CisgICAgICAgIGxldmVsID0gbGV2ZWwg
fHwgMDsKKworICAgICAgICAvLyBnbHVWYXJUeXBlLlR5cGUgbmFtZSBpcyBvcHRpb25hbC4KKyAg
ICAgICAgaWYgKHN0cnVjdFR5cGUuaGFzVHlwZU5hbWUoKSkKKyAgICAgICAgICAgIHN0ciArPSAn
ICcgKyBzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCk7CisKKyAgICAgICAgc3RyICs9ICdcbicgKyBn
bHVWYXJUeXBlLmluZGVudChsZXZlbCkgKyAnIHtcbic7CisKKyAgICAgICAgZm9yICh2YXIgbWVt
YmVyTmR4ID0gMDsgbWVtYmVyTmR4IDwgc3RydWN0VHlwZS5nZXRTaXplKCk7IG1lbWJlck5keCsr
KSB7IC8vZ2x1VmFyVHlwZS5TdHJ1Y3RUeXBlOjpDb25zdEl0ZXJhdG9yIG1lbWJlckl0ZXIgPSBk
ZWNsLnN0cnVjdFB0ci0+YmVnaW4oKTsgbWVtYmVySXRlciAhPSBkZWNsLnN0cnVjdFB0ci0+ZW5k
KCk7IG1lbWJlckl0ZXIrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0
cnVjdE1lbWJlcn0gKi8gdmFyIG1lbWJlckl0ZXIgPSBzdHJ1Y3RUeXBlLmdldE1lbWJlcihtZW1i
ZXJOZHgpOworICAgICAgICAgICAgc3RyICs9IGdsdVZhclR5cGUuaW5kZW50KGxldmVsICsgMSk7
CisgICAgICAgICAgICBzdHIgKz0gZ2x1VmFyVHlwZS5kZWNsYXJlVmFyaWFibGUobWVtYmVySXRl
ci5nZXRUeXBlKCksIG1lbWJlckl0ZXIuZ2V0TmFtZSgpLCBsZXZlbCArIDEpICsgJztcbic7Cisg
ICAgICAgIH0KKworICAgICAgICBzdHIgKz0gZ2x1VmFyVHlwZS5pbmRlbnQobGV2ZWwpICsgJ30n
OworCisgICAgICAgIHJldHVybiBzdHI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Kn0gVAorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gc2l6ZQorICAgICAqIEBwYXJhbSB7Z2x1
U2hhZGVyVXRpbC5wcmVjaXNpb249fSBwcmVjaXNpb24KKyAgICAgKiBAcmV0dXJuIHtnbHVWYXJU
eXBlLlZhclR5cGV9CisgICAgICovCisgICAgZ2x1VmFyVHlwZS5nZXRWYXJUeXBlT2YgPSBmdW5j
dGlvbihULCBzaXplLCBwcmVjaXNpb24pIHsKKyAgICAgICAgc2l6ZSA9IHNpemUgfHwgMTsKKyAg
ICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uIHx8IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9MT1dQOworICAgICAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICAgICAgICAgIGNhc2Ug
NDogcmV0dXJuIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfVkVDNCwgcHJlY2lzaW9uKTsKKyAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIGdsdVZh
clR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywgcHJl
Y2lzaW9uKTsKKyAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGdsdVZhclR5cGUubmV3VHlwZUJh
c2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwgcHJlY2lzaW9uKTsKKyAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKFQpIHsKKyAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JyA6IHJl
dHVybiBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
LCBwcmVjaXNpb24pOworICAgICAgICAgICAgY2FzZSAndmVjNCc6IHJldHVybiBnbHVWYXJUeXBl
Lm5ld1R5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIHByZWNpc2lv
bik7CisgICAgICAgICAgICBjYXNlICd2ZWMzJzogcmV0dXJuIGdsdVZhclR5cGUubmV3VHlwZUJh
c2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywgcHJlY2lzaW9uKTsKKyAgICAg
ICAgICAgIGNhc2UgJ3ZlYzInOiByZXR1cm4gZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLCBwcmVjaXNpb24pOworICAgICAgICAgICAgY2Fz
ZSAnbWF0Mic6IHJldHVybiBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX01BVDIsIHByZWNpc2lvbik7CisgICAgICAgICAgICBjYXNlICdtYXQyeDMn
OiByZXR1cm4gZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9NQVQyWDMsIHByZWNpc2lvbik7CisgICAgICAgICAgICBjYXNlICdtYXQyeDQnOiByZXR1
cm4gZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQyWDQsIHByZWNpc2lvbik7CisgICAgICAgICAgICBjYXNlICdtYXQzeDInOiByZXR1cm4gZ2x1
VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDIs
IHByZWNpc2lvbik7CisgICAgICAgICAgICBjYXNlICdtYXQzJzogcmV0dXJuIGdsdVZhclR5cGUu
bmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMywgcHJlY2lzaW9u
KTsKKyAgICAgICAgICAgIGNhc2UgJ21hdDN4NCc6IHJldHVybiBnbHVWYXJUeXBlLm5ld1R5cGVC
YXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNCwgcHJlY2lzaW9uKTsKKyAg
ICAgICAgICAgIGNhc2UgJ21hdDR4Mic6IHJldHVybiBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMiwgcHJlY2lzaW9uKTsKKyAgICAgICAg
ICAgIGNhc2UgJ21hdDR4Myc6IHJldHVybiBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMywgcHJlY2lzaW9uKTsKKyAgICAgICAgICAgIGNh
c2UgJ21hdDQnOiByZXR1cm4gZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQ0LCBwcmVjaXNpb24pOworICAgICAgICB9CisgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCB0eXBlICcgKyBUICsgJyBvciBzaXplICcgKyBzaXpl
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBnbHVWYXJU
eXBlLlN0b3JhZ2UgPSB7CisgICAgICAgICAgICBTVE9SQUdFX0lOOiAwLAorICAgICAgICAgICAg
U1RPUkFHRV9PVVQ6IDEsCisgICAgICAgICAgICBTVE9SQUdFX0NPTlNUOiAyLAorICAgICAgICAg
ICAgU1RPUkFHRV9VTklGT1JNOiAzLAorICAgICAgICAgICAgU1RPUkFHRV9CVUZGRVI6IDQKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVWYXJUeXBlLlN0b3JhZ2V9IHN0b3Jh
Z2UKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2x1VmFyVHlwZS5nZXRT
dG9yYWdlTmFtZSA9IGZ1bmN0aW9uKHN0b3JhZ2UpIHsKKyAgICAgICAgc3dpdGNoIChzdG9yYWdl
KSB7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuU3RvcmFnZS5TVE9SQUdFX0lOOiByZXR1
cm4gJ2luJzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5TdG9yYWdlLlNUT1JBR0VfT1VU
OiByZXR1cm4gJ291dCc7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuU3RvcmFnZS5TVE9S
QUdFX0NPTlNUOiByZXR1cm4gJ2NvbnN0JzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5T
dG9yYWdlLlNUT1JBR0VfVU5JRk9STTogcmV0dXJuICd1bmlmb3JtJzsKKyAgICAgICAgICAgIGNh
c2UgZ2x1VmFyVHlwZS5TdG9yYWdlLlNUT1JBR0VfQlVGRkVSOiByZXR1cm4gJ2J1ZmZlcic7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5r
bm93biBzdG9yYWdlOiAnICsgc3RvcmFnZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLkludGVycG9sYXRpb24gPSB7
CisgICAgICAgIElOVEVSUE9MQVRJT05fU01PT1RIOiAwLAorICAgICAgICBJTlRFUlBPTEFUSU9O
X0ZMQVQ6IDEsCisgICAgICAgIElOVEVSUE9MQVRJT05fQ0VOVFJPSUQ6IDIKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVWYXJUeXBlLkludGVycG9sYXRpb259IGludGVycG9s
YXRpb24KKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2x1VmFyVHlwZS5n
ZXRJbnRlcnBvbGF0aW9uTmFtZSA9IGZ1bmN0aW9uKGludGVycG9sYXRpb24pIHsKKyAgICAgICAg
c3dpdGNoIChpbnRlcnBvbGF0aW9uKSB7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuSW50
ZXJwb2xhdGlvbi5JTlRFUlBPTEFUSU9OX1NNT09USDogcmV0dXJuICdzbW9vdGgnOworICAgICAg
ICAgICAgY2FzZSBnbHVWYXJUeXBlLkludGVycG9sYXRpb24uSU5URVJQT0xBVElPTl9GTEFUOiBy
ZXR1cm4gJ2ZsYXQnOworICAgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLkludGVycG9sYXRpb24u
SU5URVJQT0xBVElPTl9DRU5UUk9JRDogcmV0dXJuICdjZW50cm9kJzsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGludGVycG9s
YXRpb246ICcgKyBpbnRlcnBvbGF0aW9uKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAZW51bQorICAgICAqLworICAgIGdsdVZhclR5cGUuRm9ybWF0TGF5b3V0ID0gewor
ICAgICAgICBGT1JNQVRMQVlPVVRfUkdCQTMyRjogMCwKKyAgICAgICAgRk9STUFUTEFZT1VUX1JH
QkExNkY6IDEsCisgICAgICAgIEZPUk1BVExBWU9VVF9SMzJGOiAyLAorICAgICAgICBGT1JNQVRM
QVlPVVRfUkdCQTg6IDMsCisgICAgICAgIEZPUk1BVExBWU9VVF9SR0JBOF9TTk9STTogNCwKKwor
ICAgICAgICBGT1JNQVRMQVlPVVRfUkdCQTMySTogNSwKKyAgICAgICAgRk9STUFUTEFZT1VUX1JH
QkExNkk6IDYsCisgICAgICAgIEZPUk1BVExBWU9VVF9SR0JBOEk6IDcsCisgICAgICAgIEZPUk1B
VExBWU9VVF9SMzJJOiA4LAorCisgICAgICAgIEZPUk1BVExBWU9VVF9SR0JBMzJVSTogOSwKKyAg
ICAgICAgRk9STUFUTEFZT1VUX1JHQkExNlVJOiAxMCwKKyAgICAgICAgRk9STUFUTEFZT1VUX1JH
QkE4VUk6IDExLAorICAgICAgICBGT1JNQVRMQVlPVVRfUjMyVUk6IDEyCisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXR9IGxheW91dAorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLmdldEZvcm1hdExh
eW91dE5hbWUgPSBmdW5jdGlvbihsYXlvdXQpIHsKKyAgICAgICAgc3dpdGNoIChsYXlvdXQpIHsK
KyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXQuRk9STUFUTEFZT1VUX1JH
QkEzMkY6IHJldHVybiAncmdiYTMyZic7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuRm9y
bWF0TGF5b3V0LkZPUk1BVExBWU9VVF9SR0JBMTZGOiByZXR1cm4gJ3JnYmExNmYnOworICAgICAg
ICAgICAgY2FzZSBnbHVWYXJUeXBlLkZvcm1hdExheW91dC5GT1JNQVRMQVlPVVRfUjMyRjogcmV0
dXJuICdyMzJmJzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXQuRk9S
TUFUTEFZT1VUX1JHQkE4OiByZXR1cm4gJ3JnYmE4JzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFy
VHlwZS5Gb3JtYXRMYXlvdXQuRk9STUFUTEFZT1VUX1JHQkE4X1NOT1JNOiByZXR1cm4gJ3JnYmE4
X3Nub3JtJzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXQuRk9STUFU
TEFZT1VUX1JHQkEzMkk6IHJldHVybiAncmdiYTMyaSc7CisgICAgICAgICAgICBjYXNlIGdsdVZh
clR5cGUuRm9ybWF0TGF5b3V0LkZPUk1BVExBWU9VVF9SR0JBMTZJOiByZXR1cm4gJ3JnYmExNmkn
OworICAgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLkZvcm1hdExheW91dC5GT1JNQVRMQVlPVVRf
UkdCQThJOiByZXR1cm4gJ3JnYmE4aSc7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuRm9y
bWF0TGF5b3V0LkZPUk1BVExBWU9VVF9SMzJJOiByZXR1cm4gJ3IzMmknOworICAgICAgICAgICAg
Y2FzZSBnbHVWYXJUeXBlLkZvcm1hdExheW91dC5GT1JNQVRMQVlPVVRfUkdCQTMyVUk6IHJldHVy
biAncmdiYTMydWknOworICAgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLkZvcm1hdExheW91dC5G
T1JNQVRMQVlPVVRfUkdCQTE2VUk6IHJldHVybiAncmdiYTE2dWknOworICAgICAgICAgICAgY2Fz
ZSBnbHVWYXJUeXBlLkZvcm1hdExheW91dC5GT1JNQVRMQVlPVVRfUkdCQThVSTogcmV0dXJuICdy
Z2JhOHVpJzsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXQuRk9STUFU
TEFZT1VUX1IzMlVJOiByZXR1cm4gJ3IzMnVpJzsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxheW91dDogJyArIGxheW91dCk7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAg
ICBnbHVWYXJUeXBlLk1hdHJpeE9yZGVyID0geworICAgICAgICBNQVRSSVhPUkRFUl9DT0xVTU5f
TUFKT1I6IDAsCisgICAgICAgIE1BVFJJWE9SREVSX1JPV19NQUpPUjogMQorICAgIH07CisKKyAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5NYXRyaXhPcmRlcn0gcXVhbGlmaWVyCisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsdVZhclR5cGUuZ2V0TWF0cml4
T3JkZXJOYW1lID0gZnVuY3Rpb24ocXVhbGlmaWVyKSB7CisgICAgICAgIHN3aXRjaCAocXVhbGlm
aWVyKSB7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuTWF0cml4T3JkZXIuTUFUUklYT1JE
RVJfQ09MVU1OX01BSk9SOiByZXR1cm4gJ2NvbHVtbl9tYWpvcic7CisgICAgICAgICAgICBjYXNl
IGdsdVZhclR5cGUuTWF0cml4T3JkZXIuTUFUUklYT1JERVJfUk9XX01BSk9SOiByZXR1cm4gJ3Jv
d19tYWpvcic7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcignVW5rbm93biBxdWFsaWZpZXI6ICcgKyBxdWFsaWZpZXIpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIGdsdVZhclR5cGUuTWVtb3J5QWNjZXNzUXVhbGlmaWVyID0geworICAgICAg
ICBNRU1PUllBQ0NFU1NRVUFMSUZJRVJfQ09IRVJFTlRfQklUOiAweDAxLAorICAgICAgICBNRU1P
UllBQ0NFU1NRVUFMSUZJRVJfVk9MQVRJTEVfQklUOiAweDAyLAorICAgICAgICBNRU1PUllBQ0NF
U1NRVUFMSUZJRVJfUkVTVFJJQ1RfQklUOiAweDA0LAorICAgICAgICBNRU1PUllBQ0NFU1NRVUFM
SUZJRVJfUkVBRE9OTFlfQklUOiAweDA4LAorICAgICAgICBNRU1PUllBQ0NFU1NRVUFMSUZJRVJf
V1JJVEVPTkxZX0JJVDogMHgxMAorICAgIH07CisgICAgZ2x1VmFyVHlwZS5NZW1vcnlBY2Nlc3NR
dWFsaWZpZXIuTUVNT1JZQUNDRVNTUVVBTElGSUVSX01BU0sgPSAoZ2x1VmFyVHlwZS5NZW1vcnlB
Y2Nlc3NRdWFsaWZpZXIuTUVNT1JZQUNDRVNTUVVBTElGSUVSX1dSSVRFT05MWV9CSVQgPDwgMSkg
LSAxOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHF1YWxpZmllcgorICAgICAq
IEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHVWYXJUeXBlLmdldE1lbW9yeUFjY2Vz
c1F1YWxpZmllck5hbWUgPSBmdW5jdGlvbihxdWFsaWZpZXIpIHsKKyAgICAgICAgc3dpdGNoIChx
dWFsaWZpZXIpIHsKKyAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZS5NZW1vcnlBY2Nlc3NRdWFs
aWZpZXIuTUVNT1JZQUNDRVNTUVVBTElGSUVSX0NPSEVSRU5UX0JJVDogcmV0dXJuICdjb2hlcmVu
dCc7CisgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGUuTWVtb3J5QWNjZXNzUXVhbGlmaWVyLk1F
TU9SWUFDQ0VTU1FVQUxJRklFUl9WT0xBVElMRV9CSVQ6IHJldHVybiAndm9sYXRpbGUnOworICAg
ICAgICAgICAgY2FzZSBnbHVWYXJUeXBlLk1lbW9yeUFjY2Vzc1F1YWxpZmllci5NRU1PUllBQ0NF
U1NRVUFMSUZJRVJfUkVTVFJJQ1RfQklUOiByZXR1cm4gJ3Jlc3RyaWN0JzsKKyAgICAgICAgICAg
IGNhc2UgZ2x1VmFyVHlwZS5NZW1vcnlBY2Nlc3NRdWFsaWZpZXIuTUVNT1JZQUNDRVNTUVVBTElG
SUVSX1JFQURPTkxZX0JJVDogcmV0dXJuICdyZWFkb25seSc7CisgICAgICAgICAgICBjYXNlIGds
dVZhclR5cGUuTWVtb3J5QWNjZXNzUXVhbGlmaWVyLk1FTU9SWUFDQ0VTU1FVQUxJRklFUl9XUklU
RU9OTFlfQklUOiByZXR1cm4gJ3dyaXRlb25seSc7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBxdWFsaWZpZXI6ICcgKyBxdWFs
aWZpZXIpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge251bWJl
cj19IGJpbmRpbmcKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldAorICAgICAqIEBwYXJh
bSB7Z2x1VmFyVHlwZS5Gb3JtYXRMYXlvdXQ9fSBmb3JtYXQKKyAgICAgKiBAcGFyYW0ge2dsdVZh
clR5cGUuTWF0cml4T3JkZXI9fSBtYXRyaXhPcmRlcgorICAgICAqLworICAgIGdsdVZhclR5cGUu
TGF5b3V0ID0gZnVuY3Rpb24obG9jYXRpb24sIGJpbmRpbmcsIG9mZnNldCwgZm9ybWF0LCBtYXRy
aXhPcmRlcikgeworICAgICAgICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIHRo
aXMuYmluZGluZyA9IGJpbmRpbmc7CisgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0OworICAg
ICAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tYXRyaXhPcmRlciA9IG1h
dHJpeE9yZGVyOworICAgIH07CisKKyAgICBnbHVWYXJUeXBlLkxheW91dC5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHN0cmluZ3MgPSBbXTsKKyAgICAgICAg
dmFyIHN0ciA9ICcnOworICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRl
ZmluZWQnKQorICAgICAgICAgICAgc3RyaW5ncy5wdXNoKCdsb2NhdGlvbj0nICsgdGhpcy5sb2Nh
dGlvbik7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaW5kaW5nICE9PSAndW5kZWZpbmVkJykK
KyAgICAgICAgICAgIHN0cmluZ3MucHVzaCgnYmluZGluZz0nICsgdGhpcy5iaW5kaW5nKTsKKyAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLm9mZnNldCAhPT0gJ3VuZGVmaW5lZCcpCisgICAgICAgICAg
ICBzdHJpbmdzLnB1c2goJ29mZnNldD0nICsgdGhpcy5vZmZzZXQpOworICAgICAgICBpZiAodHlw
ZW9mIHRoaXMuZm9ybWF0ICE9PSAndW5kZWZpbmVkJykKKyAgICAgICAgICAgIHN0cmluZ3MucHVz
aChnbHVWYXJUeXBlLmdldEZvcm1hdExheW91dE5hbWUodGhpcy5mb3JtYXQpKTsKKyAgICAgICAg
aWYgKHR5cGVvZiB0aGlzLm1hdHJpeE9yZGVyICE9PSAndW5kZWZpbmVkJykKKyAgICAgICAgICAg
IHN0cmluZ3MucHVzaChnbHVWYXJUeXBlLmdldE1hdHJpeE9yZGVyTmFtZSh0aGlzLm1hdHJpeE9y
ZGVyKSk7CisKKyAgICAgICAgaWYgKHN0cmluZ3MubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
c3RyICs9ICdsYXlvdXQoJyArIHN0cmluZ3NbMF07CisKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBzdHIgKz0gJywg
JyArIHN0cmluZ3NbaV07CisgICAgICAgICAgICBzdHIgKz0gJyknOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHN0cjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQHBhcmFtIHtnbHVWYXJUeXBlLlZhclR5cGV9IHZhclR5cGUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5TdG9yYWdlPX0gc3Rv
cmFnZQorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5JbnRlcnBvbGF0aW9uPX0gaW50ZXJwb2xh
dGlvbgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5MYXlvdXQ9fSBsYXlvdXQKKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IG1lbW9yeUFjY2Vzc1F1YWxpZmllckJpdHMKKyAgICAgKi8KKyAgICBn
bHVWYXJUeXBlLlZhcmlhYmxlRGVjbGFyYXRpb24gPSBmdW5jdGlvbih2YXJUeXBlLCBuYW1lLCBz
dG9yYWdlLCBpbnRlcnBvbGF0aW9uLCBsYXlvdXQsIG1lbW9yeUFjY2Vzc1F1YWxpZmllckJpdHMp
IHsKKyAgICAgICAgdGhpcy52YXJUeXBlID0gdmFyVHlwZTsKKyAgICAgICAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgICAgICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTsKKyAgICAgICAgdGhpcy5pbnRl
cnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjsKKyAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7
CisgICAgICAgIHRoaXMubWVtb3J5QWNjZXNzUXVhbGlmaWVyQml0cyA9IG1lbW9yeUFjY2Vzc1F1
YWxpZmllckJpdHMgfHwgMDsKKyAgICB9OworCisgICAgZ2x1VmFyVHlwZS5WYXJpYWJsZURlY2xh
cmF0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3Ry
ID0gJyc7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXlvdXQgIT09ICd1bmRlZmluZWQnKQor
ICAgICAgICAgICAgc3RyICs9IHRoaXMubGF5b3V0LnRvU3RyaW5nKCkgKyAnICc7CisKKyAgICAg
ICAgZm9yICh2YXIgYml0TmR4ID0gMDsgKDEgPDwgYml0TmR4KSAmIGdsdVZhclR5cGUuTWVtb3J5
QWNjZXNzUXVhbGlmaWVyLk1FTU9SWUFDQ0VTU1FVQUxJRklFUl9NQVNLOyArK2JpdE5keCkKKyAg
ICAgICAgICAgIGlmICh0aGlzLm1lbW9yeUFjY2Vzc1F1YWxpZmllckJpdHMgJiAoMSA8PCBiaXRO
ZHgpKQorICAgICAgICAgICAgICAgIHN0ciArPSBnbHVWYXJUeXBlLmdldE1lbW9yeUFjY2Vzc1F1
YWxpZmllck5hbWUoKDEgPDwgYml0TmR4KSkgKyAnICc7CisKKyAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLmludGVycG9sYXRpb24gIT09ICd1bmRlZmluZWQnKQorICAgICAgICAgICAgc3RyICs9IGds
dVZhclR5cGUuZ2V0SW50ZXJwb2xhdGlvbk5hbWUodGhpcy5pbnRlcnBvbGF0aW9uKSArICcgJzsK
KworICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpCisgICAg
ICAgICAgICBzdHIgKz0gZ2x1VmFyVHlwZS5nZXRTdG9yYWdlTmFtZSh0aGlzLnN0b3JhZ2UpICsg
JyAnOworCisgICAgICAgIHN0ciArPSBnbHVWYXJUeXBlLmRlY2xhcmVWYXJpYWJsZSh0aGlzLnZh
clR5cGUsIHRoaXMubmFtZSk7CisKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9OworCit9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVWYXJUeXBlVXRpbC5qcyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9nbHVW
YXJUeXBlVXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGUxOThhNjA2NDRjYWJiNGM3NWMxYzYyZmEyODQ3
ZjY4ZjFkOGUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL2dsdVZhclR5cGVVdGlsLmpz
CkBAIC0wLDAgKzEsNjkzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBR
dWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Z29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGVVdGlsJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsK
KworICAgIHZhciBnbHVWYXJUeXBlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0
aWw7CisgICAgdmFyIGdsdVZhclR5cGUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGU7Cisg
ICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisK
KyAgICBnbHVWYXJUeXBlVXRpbC5pc051bSA9IGZ1bmN0aW9uKGMpIHsgcmV0dXJuIC9eWzAtOV0k
Ly50ZXN0KGMpOyB9OworICAgIGdsdVZhclR5cGVVdGlsLmlzQWxwaGEgPSBmdW5jdGlvbihjKSB7
IHJldHVybiAvXlthLXpBLVpdJC8udGVzdChjKTsgfTsKKyAgICBnbHVWYXJUeXBlVXRpbC5pc0lk
ZW50aWZpZXJDaGFyID0gZnVuY3Rpb24oYykgeyByZXR1cm4gL15bYS16QS1aMC05X10kLy50ZXN0
KGMpOyB9OworICAgIGdsdVZhclR5cGVVdGlsLmFycmF5X29wX2VxdWl2YWxlbnQgPSBmdW5jdGlv
bihhcnIxLCBhcnIyKSB7CisgICAgICAgIGlmIChhcnIxLmxlbmd0aCAhPSBhcnIyLmxlbmd0aCkg
cmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIGlmIChhcnIxW2ldLmlzbnQoYXJyMlsxXSkpIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyIGNsYXNzLgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBzdHIKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHVWYXJUeXBl
VXRpbC5WYXJUb2tlbml6ZXIgPSBmdW5jdGlvbihzdHIpIHsKKworICAgICAgICAvKiogQHByaXZh
dGUgKi8KKyAgICAgICAgdGhpcy5tX3N0ciA9IHN0cjsKKyAgICAgICAgLyoqIEBwcml2YXRlICov
CisgICAgICAgIHRoaXMubV90b2tlbiA9IGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rv
a2VuLmxlbmd0aDsKKyAgICAgICAgLyoqIEBwcml2YXRlICovCisgICAgICAgIHRoaXMubV90b2tl
blN0YXJ0ID0gMDsKKyAgICAgICAgLyoqIEBwcml2YXRlICovCisgICAgICAgIHRoaXMubV90b2tl
bkxlbiA9IDA7CisKKyAgICAgICAgdGhpcy5hZHZhbmNlKCk7CisKKyAgICB9OworICAgIGdsdVZh
clR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2VuID0geworICAgICAgICBJREVOVElGSUVSOiAw
LAorICAgICAgICBMRUZUX0JSQUNLRVQ6IDEsCisgICAgICAgIFJJR0hUX0JSQUNLRVQ6IDIsCisg
ICAgICAgIFBFUklPRDogMywKKyAgICAgICAgTlVNQkVSOiA0LAorICAgICAgICBFTkQ6IDUKKyAg
ICB9OworICAgIGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2VuLmxlbmd0aCA9IE9i
amVjdC5rZXlzKGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2VuKS5sZW5ndGg7CisK
KyAgICBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIucHJvdG90eXBlLmdldFRva2VuID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fdG9rZW47CisgICAgfTsKKyAgICBnbHVW
YXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIucHJvdG90eXBlLmdldElkZW50aWZpZXIgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9zdHIuc3Vic3RyKHRoaXMubV90b2tlblN0YXJ0
LCB0aGlzLm1fdG9rZW5MZW4pOworICAgIH07CisgICAgZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5p
emVyLnByb3RvdHlwZS5nZXROdW1iZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHBh
cnNlSW50KHRoaXMuZ2V0SWRlbnRpZmllcigpLCAxMCk7CisgICAgfTsKKyAgICBnbHVWYXJUeXBl
VXRpbC5WYXJUb2tlbml6ZXIucHJvdG90eXBlLmdldEN1cnJlbnRUb2tlblN0YXJ0TG9jYXRpb24g
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV90b2tlblN0YXJ0OworICAgIH07
CisgICAgZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyLnByb3RvdHlwZS5nZXRDdXJyZW50VG9r
ZW5FbmRMb2NhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX3Rva2Vu
U3RhcnQgKyB0aGlzLm1fdG9rZW5MZW47CisgICAgfTsKKworICAgIGdsdVZhclR5cGVVdGlsLlZh
clRva2VuaXplci5wcm90b3R5cGUuYWR2YW5jZSA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgIGlm
ICh0aGlzLm1fdG9rZW4gPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyLnNfVG9rZW4uRU5E
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG1vcmUgdG9rZW5zLicpOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5tX3Rva2VuU3RhcnQgKz0gdGhpcy5tX3Rva2VuTGVuOwor
ICAgICAgICB0aGlzLm1fdG9rZW4gPSBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIuc19Ub2tl
bi5sZW5ndGg7CisgICAgICAgIHRoaXMubV90b2tlbkxlbiA9IDE7CisKKyAgICAgICAgaWYgKHRo
aXMubV90b2tlblN0YXJ0ID49IHRoaXMubV9zdHIubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlz
Lm1fdG9rZW4gPSBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIuc19Ub2tlbi5FTkQ7CisKKyAg
ICAgICAgfSBlbHNlIGlmICh0aGlzLm1fc3RyW3RoaXMubV90b2tlblN0YXJ0XSA9PSAnWycpIHsK
KyAgICAgICAgICAgIHRoaXMubV90b2tlbiA9IGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5z
X1Rva2VuLkxFRlRfQlJBQ0tFVDsKKworICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9zdHJbdGhp
cy5tX3Rva2VuU3RhcnRdID09ICddJykgeworICAgICAgICAgICAgdGhpcy5tX3Rva2VuID0gZ2x1
VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyLnNfVG9rZW4uUklHSFRfQlJBQ0tFVDsKKworICAgICAg
ICB9IGVsc2UgaWYgKHRoaXMubV9zdHJbdGhpcy5tX3Rva2VuU3RhcnRdID09ICcuJykgeworICAg
ICAgICAgICAgdGhpcy5tX3Rva2VuID0gZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyLnNfVG9r
ZW4uUEVSSU9EOworCisgICAgICAgIH0gZWxzZSBpZiAoZ2x1VmFyVHlwZVV0aWwuaXNOdW0odGhp
cy5tX3N0clt0aGlzLm1fdG9rZW5TdGFydF0pKSB7CisgICAgICAgICAgICB0aGlzLm1fdG9rZW4g
PSBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIuc19Ub2tlbi5OVU1CRVI7CisgICAgICAgICAg
ICB3aGlsZSAoZ2x1VmFyVHlwZVV0aWwuaXNOdW0odGhpcy5tX3N0clt0aGlzLm1fdG9rZW5TdGFy
dCArIHRoaXMubV90b2tlbkxlbl0pKSB7CisgICAgICAgICAgICAgICAgdGhpcy5tX3Rva2VuTGVu
ICs9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChnbHVWYXJUeXBlVXRp
bC5pc0lkZW50aWZpZXJDaGFyKHRoaXMubV9zdHJbdGhpcy5tX3Rva2VuU3RhcnRdKSkgeworICAg
ICAgICAgICAgdGhpcy5tX3Rva2VuID0gZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVyLnNfVG9r
ZW4uSURFTlRJRklFUjsKKyAgICAgICAgICAgIHdoaWxlIChnbHVWYXJUeXBlVXRpbC5pc0lkZW50
aWZpZXJDaGFyKHRoaXMubV9zdHJbdGhpcy5tX3Rva2VuU3RhcnQgKyB0aGlzLm1fdG9rZW5MZW5d
KSkgeworICAgICAgICAgICAgICAgIHRoaXMubV90b2tlbkxlbiArPSAxOworICAgICAgICAgICAg
fQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhw
ZWN0ZWQgY2hhcmFjdGVyJyk7CisgICAgICAgIH0KKworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBWYXJUeXBlIHN1YnR5cGUgcGF0aCB1dGlsaXRpZXMgY2xhc3MuCisgICAgICogQHBhcmFtIHtn
bHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZX0gdHlwZQorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpbmRleAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsdVZh
clR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQgPSBmdW5jdGlvbih0eXBlLCBpbmRleCkgeworICAg
ICAgICAvKiogQHR5cGUge2dsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlfSAq
LyB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXggfHwgMDsKKyAg
ICB9OworCisgICAgZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5wcm90b3R5cGUuaXMg
PSBmdW5jdGlvbihvdGhlcikgeworICAgICAgICByZXR1cm4gdGhpcy50eXBlID09IG90aGVyLnR5
cGUgJiYgdGhpcy5pbmRleCA9PSBvdGhlci5pbmRleDsKKyAgICB9OworICAgIGdsdVZhclR5cGVV
dGlsLlZhclR5cGVDb21wb25lbnQucHJvdG90eXBlLmlzbnQgPSBmdW5jdGlvbihvdGhlcikgewor
ICAgICAgICByZXR1cm4gdGhpcy50eXBlICE9IG90aGVyLnR5cGUgfHwgdGhpcy5pbmRleCAhPSBv
dGhlci5pbmRleDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAg
ICBnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZSA9IHsKKyAgICAgICAgU1RS
VUNUX01FTUJFUjogMCwKKyAgICAgICAgQVJSQVlfRUxFTUVOVDogMSwKKyAgICAgICAgTUFUUklY
X0NPTFVNTjogMiwKKyAgICAgICAgVkVDVE9SX0NPTVBPTkVOVDogMworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBUeXBlIHBhdGggZm9ybWF0dGVyLgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlw
ZS5WYXJUeXBlfSB0eXBlXworICAgICAqIEBwYXJhbSB7QXJyYXk8Z2x1VmFyVHlwZVV0aWwuVmFy
VHlwZUNvbXBvbmVudD59IHBhdGhfCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAg
Z2x1VmFyVHlwZVV0aWwuVHlwZUFjY2Vzc0Zvcm1hdCA9IGZ1bmN0aW9uKHR5cGVfLCBwYXRoXykg
eworICAgICAgICB0aGlzLnR5cGUgPSB0eXBlXzsKKyAgICAgICAgdGhpcy5wYXRoID0gcGF0aF87
CisgICAgfTsKKworICAgIGdsdVZhclR5cGVVdGlsLlR5cGVBY2Nlc3NGb3JtYXQucHJvdG90eXBl
LnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBjdXJUeXBlID0gdGhpcy50eXBl
OworICAgICAgICB2YXIgc3RyID0gJyc7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLnBhdGgubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBpdGVyID0gdGhpcy5wYXRo
W2ldOworICAgICAgICAgICAgc3dpdGNoIChpdGVyLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLkFSUkFZX0VMRU1FTlQ6
CisgICAgICAgICAgICAgICAgICAgIGN1clR5cGUgPSBjdXJUeXBlLmdldEVsZW1lbnRUeXBlKCk7
IC8vIFVwZGF0ZSBjdXJyZW50IHR5cGUuCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwtdGhy
b3VnaC4KKworICAgICAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBv
bmVudC5zX1R5cGUuTUFUUklYX0NPTFVNTjoKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVZhclR5
cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLlZFQ1RPUl9DT01QT05FTlQ6CisgICAgICAg
ICAgICAgICAgICAgIHN0ciArPSAnWycgKyBpdGVyLmluZGV4ICsgJ10nOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgZ2x1VmFyVHlwZVV0aWwuVmFy
VHlwZUNvbXBvbmVudC5zX1R5cGUuU1RSVUNUX01FTUJFUjogeworICAgICAgICAgICAgICAgICAg
ICB2YXIgbWVtYmVyID0gY3VyVHlwZS5nZXRTdHJ1Y3QoKS5nZXRNZW1iZXIoaSk7CisgICAgICAg
ICAgICAgICAgICAgIHN0ciArPSAnLicgKyBtZW1iZXIuZ2V0TmFtZSgpOworICAgICAgICAgICAg
ICAgICAgICBjdXJUeXBlID0gbWVtYmVyLmdldFR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCB0eXBlOicgKyBp
dGVyLnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0
cjsKKyAgICB9OworCisgICAgLyoqIGdsdVZhclR5cGVVdGlsLlN1YlR5cGVBY2Nlc3MKKyAgICAg
KiBAcGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdHlwZQorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqLworICAgIGdsdVZhclR5cGVVdGlsLlN1YlR5cGVBY2Nlc3MgPSBmdW5jdGlvbih0eXBl
KSB7CisKKyAgICAgICAgdGhpcy5tX3R5cGUgPSBudWxsOyAvLyBWYXJUeXBlCisgICAgICAgIHRo
aXMubV9wYXRoID0gW107IC8vIFR5cGVDb21wb25lbnRWZWN0b3IKKworICAgIH07CisKKyAgICAv
KiogQHByaXZhdGUgKi8KKyAgICBnbHVWYXJUeXBlVXRpbC5TdWJUeXBlQWNjZXNzLnByb3RvdHlw
ZS5oZWxwZXIgPSBmdW5jdGlvbih0eXBlLCBuZHgpIHsKKyAgICAgICAgdGhpcy5tX3BhdGgucHVz
aChuZXcgZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudCh0eXBlLCBuZHgpKTsKKyAgICAg
ICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAgICBnbHVWYXJUeXBl
VXRpbC5TdWJUeXBlQWNjZXNzLnByb3RvdHlwZS5tZW1iZXIgPSBmdW5jdGlvbihuZHgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuaGVscGVyKGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQu
c19UeXBlLlNUUlVDVF9NRU1CRVIsIG5keCk7CisgICAgfTsKKyAgICBnbHVWYXJUeXBlVXRpbC5T
dWJUeXBlQWNjZXNzLnByb3RvdHlwZS5lbGVtZW50ID0gZnVuY3Rpb24obmR4KSB7CisgICAgICAg
IHJldHVybiB0aGlzLmhlbHBlcihnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlw
ZS5BUlJBWV9FTEVNRU5ULCBuZHgpOworICAgIH07CisgICAgZ2x1VmFyVHlwZVV0aWwuU3ViVHlw
ZUFjY2Vzcy5wcm90b3R5cGUuY29sdW1uID0gZnVuY3Rpb24obmR4KSB7CisgICAgICAgIHJldHVy
biB0aGlzLmhlbHBlcihnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZS5NQVRS
SVhfQ09MVU1OLCBuZHgpOworICAgIH07CisgICAgZ2x1VmFyVHlwZVV0aWwuU3ViVHlwZUFjY2Vz
cy5wcm90b3R5cGUuY29tcG9uZW50ID0gZnVuY3Rpb24obmR4KSB7CisgICAgICAgIHJldHVybiB0
aGlzLmhlbHBlcihnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZS5WRUNUT1Jf
Q09NUE9ORU5ULCBuZHgpOworICAgIH07CisgICAgZ2x1VmFyVHlwZVV0aWwuU3ViVHlwZUFjY2Vz
cy5wcm90b3R5cGUucGFyZW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhpcy5tX3Bh
dGgubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5tX3BhdGgucG9wKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisK
KyAgICBnbHVWYXJUeXBlVXRpbC5TdWJUeXBlQWNjZXNzLnByb3RvdHlwZS5pc1ZhbGlkID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBnbHVWYXJUeXBlVXRpbC5pc1ZhbGlkVHlwZVBhdGgo
dGhpcy5tX3R5cGUsIHRoaXMubV9wYXRoKTsKKyAgICB9OworICAgIGdsdVZhclR5cGVVdGlsLlN1
YlR5cGVBY2Nlc3MucHJvdG90eXBlLmdldFR5cGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIGdsdVZhclR5cGVVdGlsLmdldFZhclR5cGUodGhpcy5tX3R5cGUsIHRoaXMubV9wYXRoKTsK
KyAgICB9OworICAgIGdsdVZhclR5cGVVdGlsLlN1YlR5cGVBY2Nlc3MucHJvdG90eXBlLmdldFBh
dGggPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9wYXRoOworICAgIH07Cisg
ICAgZ2x1VmFyVHlwZVV0aWwuU3ViVHlwZUFjY2Vzcy5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLm1fcGF0aC5sZW5ndGg7CisgICAgfTsKKyAgICBn
bHVWYXJUeXBlVXRpbC5TdWJUeXBlQWNjZXNzLnByb3RvdHlwZS5pcyA9IGZ1bmN0aW9uKG90aGVy
KSB7CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBnbHVWYXJUeXBlVXRpbC5hcnJheV9v
cF9lcXVpdmFsZW50KHRoaXMubV9wYXRoLCBvdGhlci5tX3BhdGgpICYmCisgICAgICAgICAgICB0
aGlzLm1fdHlwZS5pcyhvdGhlci5tX3R5cGUpCisgICAgICAgICk7CisgICAgfTsKKyAgICBnbHVW
YXJUeXBlVXRpbC5TdWJUeXBlQWNjZXNzLnByb3RvdHlwZS5pc250ID0gZnVuY3Rpb24ob3RoZXIp
IHsKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICFnbHVWYXJUeXBlVXRpbC5hcnJheV9v
cF9lcXVpdmFsZW50KHRoaXMubV9wYXRoLCBvdGhlci5tX3BhdGgpIHx8CisgICAgICAgICAgICB0
aGlzLm1fdHlwZS5pc250KG90aGVyLm1fdHlwZSkKKyAgICAgICAgKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogU3VidHlwZSBpdGVyYXRvciBwYXJlbnQgY2xhc3MuCisgICAgICogYmFzaWMg
dXNhZ2UgZm9yIGFsbCBjaGlsZCBjbGFzc2VzOgorICAgICAqICAgICBmb3IgKHZhciBpID0gbmV3
IGdsdVZhclR5cGVVdGlsLkJhc2ljVHlwZUl0ZXJhdG9yKHR5cGUpIDsgIWkuZW5kKCkgOyBpLm5l
eHQoKSkgeworICAgICAqICAgICAgICAgdmFyIGogPSBpLmdldFR5cGUoKTsKKyAgICAgKiAgICAg
fQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsdVZhclR5cGVVdGlsLlN1YlR5
cGVJdGVyYXRvciA9IGZ1bmN0aW9uKHR5cGUpIHsKKworICAgICAgICAvKiogQHByaXZhdGUgKi8K
KyAgICAgICAgdGhpcy5tX3R5cGUgPSBudWxsOyAvLyBjb25zdCBWYXJUeXBlKgorICAgICAgICAv
KiogQHByaXZhdGUgKi8KKyAgICAgICAgdGhpcy5tX3BhdGggPSBbXTsgLy8gVHlwZUNvbXBvbmVu
dFZlY3RvcgorCisgICAgICAgIGlmICh0eXBlKSB7CisgICAgICAgICAgICB0aGlzLm1fdHlwZSA9
IHR5cGU7CisgICAgICAgICAgICB0aGlzLmZpbmROZXh0KCk7CisgICAgICAgIH0KKworICAgIH07
CisKKyAgICBnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlLmlzRXhwYW5k
ZWQgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBmdW5j
dGlvbiBtdXN0IGJlIG92ZXJyaWRlbiBpbiBjaGlsZCBjbGFzcycpOworICAgIH07CisKKyAgICAv
KiogcmVtb3ZlVHJhdmVyc2VkCisgICAgICogQHByaXZhdGUKKyAgICAgKi8KKyAgICBnbHVWYXJU
eXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlLnJlbW92ZVRyYXZlcnNlZCA9IGZ1bmN0
aW9uKCkgeworCisgICAgICAgIHdoaWxlICh0aGlzLm1fcGF0aC5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIHZhciBjdXJDb21wID0gdGhpcy5tX3BhdGhbdGhpcy5tX3BhdGgubGVuZ3RoIC0gMV07IC8v
IGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQmCisgICAgICAgICAgICB2YXIgcGFyZW50
VHlwZSA9IGdsdVZhclR5cGVVdGlsLmdldFZhclR5cGUodGhpcy5tX3R5cGUsIHRoaXMubV9wYXRo
LCAwLCB0aGlzLm1fcGF0aC5sZW5ndGggLSAxKTsgLy8gVmFyVHlwZQorCisgICAgICAgICAgICBp
ZiAoY3VyQ29tcC50eXBlID09IGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBl
Lk1BVFJJWF9DT0xVTU4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdsdVNoYWRlclV0aWwuaXNE
YXRhVHlwZU1hdHJpeChwYXJlbnRUeXBlLmdldEJhc2ljVHlwZSgpKSkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lzblwndCBhIG1hdHJpeC4nKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGN1ckNvbXAuaW5kZXggKyAxIDwgZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnMocGFyZW50VHlwZS5nZXRCYXNpY1R5cGUo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGN1ckNvbXAudHlwZSA9PSBnbHVWYXJUeXBlVXRpbC5WYXJU
eXBlQ29tcG9uZW50LnNfVHlwZS5WRUNUT1JfQ09NUE9ORU5UKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVWZWN0b3IocGFyZW50VHlwZS5nZXRCYXNpY1R5
cGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJc25cJ3QgYSB2
ZWN0b3IuJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjdXJDb21w
LmluZGV4ICsgMSA8IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHBhcmVudFR5
cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJDb21wLnR5cGUgPT0gZ2x1
VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuQVJSQVlfRUxFTUVOVCkgeworICAg
ICAgICAgICAgICAgIGlmICghcGFyZW50VHlwZS5pc0FycmF5VHlwZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSXNuXCd0IGFuIGFycmF5LicpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3VyQ29tcC5pbmRleCArIDEgPCBwYXJlbnRU
eXBlLmdldEFycmF5U2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJDb21wLnR5cGUgPT0gZ2x1
VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuU1RSVUNUX01FTUJFUikgeworICAg
ICAgICAgICAgICAgIGlmICghcGFyZW50VHlwZS5pc1N0cnVjdFR5cGUoKSkgeworICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lzblwndCBhIHN0cnVjdC4nKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGN1ckNvbXAuaW5kZXggKyAxIDwgcGFyZW50
VHlwZS5nZXRTdHJ1Y3QoKS5nZXROdW1NZW1iZXJzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRoaXMubV9wYXRoLnBvcCgpOworICAgICAgICB9CisgICAgfTsKKyAgICBnbHVWYXJUeXBlVXRp
bC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlLmZpbmROZXh0ID0gZnVuY3Rpb24oKSB7CisKKyAg
ICAgICAgaWYgKHRoaXMubV9wYXRoLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIC8vIEluY3Jl
bWVudCBjaGlsZCBjb3VudGVyIGluIGN1cnJlbnQgbGV2ZWwuCisgICAgICAgICAgICB2YXIgY3Vy
Q29tcCA9IHRoaXMubV9wYXRoW3RoaXMubV9wYXRoLmxlbmd0aCAtIDFdOyAvLyBnbHVWYXJUeXBl
VXRpbC5WYXJUeXBlQ29tcG9uZW50JgorICAgICAgICAgICAgY3VyQ29tcC5pbmRleCArPSAxOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yICg7OykgeworCisgICAgICAgICAgICB2YXIgY3VyVHlw
ZSA9IGdsdVZhclR5cGVVdGlsLmdldFZhclR5cGUodGhpcy5tX3R5cGUsIHRoaXMubV9wYXRoKTsg
Ly8gVmFyVHlwZQorCisgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZGVkKGN1clR5cGUpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyBSZWN1cnNlIGludG8gY2hp
bGQgdHlwZS4KKyAgICAgICAgICAgIGlmIChjdXJUeXBlLmlzQmFzaWNUeXBlKCkpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgYmFzaWNUeXBlID0gY3VyVHlwZS5nZXRCYXNpY1R5cGUoKTsgLy8gRGF0
YVR5cGUKKworICAgICAgICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRy
aXgoYmFzaWNUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcGF0aC5wdXNoKG5l
dyBnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50KGdsdVZhclR5cGVVdGlsLlZhclR5cGVD
b21wb25lbnQuc19UeXBlLk1BVFJJWF9DT0xVTU4sIDApKTsKKworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKGJhc2ljVHlwZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX3BhdGgucHVzaChuZXcgZ2x1VmFyVHlwZVV0aWwuVmFy
VHlwZUNvbXBvbmVudChnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZS5WRUNU
T1JfQ09NUE9ORU5ULCAwKSk7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbnQgZXhwYW5kIHNjYWxhcnMgLSBpc0V4cGFu
ZGVkKCkgaXMgYnVnZ3kuJyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9IGVs
c2UgaWYgKGN1clR5cGUuaXNBcnJheVR5cGUoKSkgeworICAgICAgICAgICAgICAgIHRoaXMubV9w
YXRoLnB1c2gobmV3IGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQoZ2x1VmFyVHlwZVV0
aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuQVJSQVlfRUxFTUVOVCwgMCkpOworCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGN1clR5cGUuaXNTdHJ1Y3RUeXBlKCkpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fcGF0aC5wdXNoKG5ldyBnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50KGds
dVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLlNUUlVDVF9NRU1CRVIsIDApKTsK
KworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfTsKKyAgICBnbHVWYXJUeXBlVXRp
bC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gKHRoaXMubV90eXBlID09IG51bGwpOworICAgIH07CisgICAgLyoqIG5leHQKKyAgICAg
KiBlcXVpdmVsYW50IHRvIG9wZXJhdG9yKysoKSwgZG9lc250IHJldHVybi4KKyAgICAgKi8KKyAg
ICBnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9wYXRoLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAg
IC8vIFJlbW92ZSB0cmF2ZXJzZWQgbm9kZXMuCisgICAgICAgICAgICB0aGlzLnJlbW92ZVRyYXZl
cnNlZCgpOworCisgICAgICAgICAgICBpZiAodGhpcy5tX3BhdGgubGVuZ3RoID4gMCkKKyAgICAg
ICAgICAgICAgICB0aGlzLmZpbmROZXh0KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGhpcy5tX3R5cGUgPSBudWxsOyAvLyBVbnNldCB0eXBlIHRvIHNpZ25hbCBlbmQuCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZChnbHVWYXJU
eXBlVXRpbC5nZXRWYXJUeXBlKHRoaXMubV90eXBlLCB0aGlzLm1fcGF0aCkpKSB7CisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaXJzdCB0eXBlIHdhcyBhbHJlYWR5IGV4cGFuZGVk
LicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5tX3R5cGUgPSBudWxsOworICAg
ICAgICB9CisgICAgfTsKKyAgICBnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90
eXBlLmdldFR5cGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGdsdVZhclR5cGVVdGls
LmdldFZhclR5cGUodGhpcy5tX3R5cGUsIHRoaXMubV9wYXRoKTsKKyAgICB9OworICAgIGdsdVZh
clR5cGVVdGlsLlN1YlR5cGVJdGVyYXRvci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5tX3BhdGg7CisgICAgfTsKKworICAgIGdsdVZhclR5cGVV
dGlsLlN1YlR5cGVJdGVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHggPSBuZXcgZ2x1VmFyVHlwZVV0aWwuVHlwZUFjY2Vzc0Zvcm1hdCh0aGlzLm1f
dHlwZSwgdGhpcy5tX3BhdGgpOworICAgICAgICByZXR1cm4geC50b1N0cmluZygpOworICAgIH07
CisKKyAgICAvKiogZ2x1VmFyVHlwZVV0aWwuQmFzaWNUeXBlSXRlcmF0b3IKKyAgICAgKiBAcGFy
YW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdHlwZQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3J9CisgICAgICovCisgICAg
Z2x1VmFyVHlwZVV0aWwuQmFzaWNUeXBlSXRlcmF0b3IgPSBmdW5jdGlvbih0eXBlKSB7CisgICAg
ICAgIGdsdVZhclR5cGVVdGlsLlN1YlR5cGVJdGVyYXRvci5jYWxsKHRoaXMsIHR5cGUpOworICAg
IH07CisgICAgZ2x1VmFyVHlwZVV0aWwuQmFzaWNUeXBlSXRlcmF0b3IucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlKTsKKyAg
ICBnbHVWYXJUeXBlVXRpbC5CYXNpY1R5cGVJdGVyYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBnbHVWYXJUeXBlVXRpbC5CYXNpY1R5cGVJdGVyYXRvcjsKKworICAgIGdsdVZhclR5cGVVdGls
LkJhc2ljVHlwZUl0ZXJhdG9yLnByb3RvdHlwZS5pc0V4cGFuZGVkID0gZnVuY3Rpb24odHlwZSkg
eworICAgICAgICByZXR1cm4gdHlwZS5pc0Jhc2ljVHlwZSgpOworICAgIH07CisKKyAgICAvKiog
Z2x1VmFyVHlwZVV0aWwuVmVjdG9yVHlwZUl0ZXJhdG9yCisgICAgICogQHBhcmFtIHtnbHVWYXJU
eXBlLlZhclR5cGV9IHR5cGUKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
Z2x1VmFyVHlwZVV0aWwuU3ViVHlwZUl0ZXJhdG9yfQorICAgICAqLworICAgIGdsdVZhclR5cGVV
dGlsLlZlY3RvclR5cGVJdGVyYXRvciA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgZ2x1VmFy
VHlwZVV0aWwuU3ViVHlwZUl0ZXJhdG9yLmNhbGwodGhpcywgdHlwZSk7CisgICAgfTsKKyAgICBn
bHVWYXJUeXBlVXRpbC5WZWN0b3JUeXBlSXRlcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShnbHVWYXJUeXBlVXRpbC5TdWJUeXBlSXRlcmF0b3IucHJvdG90eXBlKTsKKyAgICBnbHVWYXJU
eXBlVXRpbC5WZWN0b3JUeXBlSXRlcmF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2x1VmFy
VHlwZVV0aWwuVmVjdG9yVHlwZUl0ZXJhdG9yOworCisgICAgZ2x1VmFyVHlwZVV0aWwuVmVjdG9y
VHlwZUl0ZXJhdG9yLnByb3RvdHlwZS5pc0V4cGFuZGVkID0gZnVuY3Rpb24odHlwZSkgeworICAg
ICAgICByZXR1cm4gdHlwZS5pc0Jhc2ljVHlwZSgpICYmIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlw
ZVNjYWxhck9yVmVjdG9yKHR5cGUuZ2V0QmFzaWNUeXBlKCkpOworICAgIH07CisKKyAgICAvKiog
Z2x1VmFyVHlwZVV0aWwuU2NhbGFyVHlwZUl0ZXJhdG9yCisgICAgICogQHBhcmFtIHtnbHVWYXJU
eXBlLlZhclR5cGV9IHR5cGUKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
Z2x1VmFyVHlwZVV0aWwuU3ViVHlwZUl0ZXJhdG9yfQorICAgICAqLworICAgICBnbHVWYXJUeXBl
VXRpbC5TY2FsYXJUeXBlSXRlcmF0b3IgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIGdsdVZh
clR5cGVVdGlsLlN1YlR5cGVJdGVyYXRvci5jYWxsKHRoaXMsIHR5cGUpOworICAgIH07CisgICAg
Z2x1VmFyVHlwZVV0aWwuU2NhbGFyVHlwZUl0ZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZ2x1VmFyVHlwZVV0aWwuU3ViVHlwZUl0ZXJhdG9yLnByb3RvdHlwZSk7CisgICAgZ2x1VmFy
VHlwZVV0aWwuU2NhbGFyVHlwZUl0ZXJhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsdVZh
clR5cGVVdGlsLlNjYWxhclR5cGVJdGVyYXRvcjsKKworICAgIGdsdVZhclR5cGVVdGlsLlNjYWxh
clR5cGVJdGVyYXRvci5wcm90b3R5cGUuaXNFeHBhbmRlZCA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAg
ICAgICAgcmV0dXJuIHR5cGUuaXNCYXNpY1R5cGUoKSAmJiBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5
cGVTY2FsYXIodHlwZS5nZXRCYXNpY1R5cGUoKSk7CisgICAgfTsKKworICAgIGdsdVZhclR5cGVV
dGlsLmluQm91bmRzID0gKGZ1bmN0aW9uKHgsIGEsIGIpIHsgcmV0dXJuIGEgPD0geCAmJiB4IDwg
YjsgfSk7CisKKyAgICAvKiogZ2x1VmFyVHlwZVV0aWwuaXNWYWxpZFR5cGVQYXRoCisgICAgICog
QHBhcmFtIHtnbHVWYXJUeXBlLlZhclR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge0FycmF5PGds
dVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQ+fSBhcnJheQorICAgICAqIEBwYXJhbSB7bnVt
YmVyPX0gYmVnaW4KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZAorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgZ2x1VmFyVHlwZVV0aWwuaXNWYWxpZFR5cGVQYXRoID0g
ZnVuY3Rpb24odHlwZSwgYXJyYXksIGJlZ2luLCBlbmQpIHsKKworICAgICAgICBpZiAodHlwZW9m
KGJlZ2luKSA9PSAndW5kZWZpbmVkJykge2JlZ2luID0gMDt9CisgICAgICAgIGlmICh0eXBlb2Yo
ZW5kKSA9PSAndW5kZWZpbmVkJykge2JlZ2luID0gYXJyYXkubGVuZ3RoO30KKworICAgICAgICB2
YXIgY3VyVHlwZSA9IHR5cGU7IC8vIGNvbnN0IFZhclR5cGUqCisgICAgICAgIHZhciBwYXRoSXRl
ciA9IGJlZ2luOyAvLyBJdGVyYXRvcgorCisgICAgICAgIC8vIFByb2Nlc3Mgc3RydWN0IG1lbWJl
ciBhbmQgYXJyYXkgZWxlbWVudCBwYXJ0cyBvZiBwYXRoLgorICAgICAgICB3aGlsZSAocGF0aEl0
ZXIgIT0gZW5kKSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFycmF5W3BhdGhJdGVyXTsK
KworICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PSBnbHVWYXJUeXBlVXRpbC5WYXJUeXBl
Q29tcG9uZW50LnNfVHlwZS5TVFJVQ1RfTUVNQkVSKSB7CisKKyAgICAgICAgICAgICAgICBpZiAo
IWN1clR5cGUuaXNTdHJ1Y3RUeXBlKCkgfHwgIWdsdVZhclR5cGVVdGlsLmluQm91bmRzKGVsZW1l
bnQuaW5kZXgsIDAsIGN1clR5cGUuZ2V0U3RydWN0KCkuZ2V0TnVtTWVtYmVycygpKSkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgY3VyVHlwZSA9IGN1clR5cGUuZ2V0U3RydWN0KCkuZ2V0TWVtYmVyKGVsZW1l
bnQuaW5kZXgpLmdldFR5cGUoKTsKKworICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5
cGUgPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuQVJSQVlfRUxFTUVO
VCkgeworICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgIWN1clR5cGUu
aXNBcnJheVR5cGUoKSB8fAorICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJUeXBlLmdldEFycmF5U2l6ZSgpICE9IGdsdVZhclR5cGUuVmFyVHlwZS5VTlNJ
WkVEX0FSUkFZICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhZ2x1VmFyVHlwZVV0aWwuaW5C
b3VuZHMoZWxlbWVudC5pbmRleCwgMCwgY3VyVHlwZS5nZXRBcnJheVNpemUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VyVHlw
ZSA9IGN1clR5cGUuZ2V0RWxlbWVudFR5cGUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICsrcGF0aEl0
ZXI7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGF0aEl0ZXIgIT0gZW5kKSB7CisgICAgICAg
ICAgICBpZiAoISgKKyAgICAgICAgICAgICAgICBhcnJheVtwYXRoSXRlcl0udHlwZSA9PSBnbHVW
YXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZS5NQVRSSVhfQ09MVU1OIHx8CisgICAg
ICAgICAgICAgICAgYXJyYXlbcGF0aEl0ZXJdLnR5cGUgPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVHlw
ZUNvbXBvbmVudC5zX1R5cGUuVkVDVE9SX0NPTVBPTkVOVAorICAgICAgICAgICAgKSkgeworICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgbWF0cml4IG9yIGEgdmVjdG9yJyk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEN1cnJlbnQgdHlwZSBzaG91bGQgYmUg
YmFzaWMgdHlwZS4KKyAgICAgICAgICAgIGlmICghY3VyVHlwZS5pc0Jhc2ljVHlwZSgpKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgYmFzaWNUeXBlID0gY3VyVHlwZS5nZXRCYXNpY1R5cGUoKTsgLy8gRGF0YVR5cGUKKwor
ICAgICAgICAgICAgaWYgKGFycmF5W3BhdGhJdGVyXS50eXBlID09IGdsdVZhclR5cGVVdGlsLlZh
clR5cGVDb21wb25lbnQuc19UeXBlLk1BVFJJWF9DT0xVTU4pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIWdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeChiYXNpY1R5cGUpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBiYXNpY1R5cGUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRWZWMoZ2x1
U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bVJvd3MoYmFzaWNUeXBlKSk7CisgICAgICAg
ICAgICAgICAgKytwYXRoSXRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBh
dGhJdGVyICE9IGVuZCAmJiBhcnJheVtwYXRoSXRlcl0udHlwZSA9PSBnbHVWYXJUeXBlVXRpbC5W
YXJUeXBlQ29tcG9uZW50LnNfVHlwZS5WRUNUT1JfQ09NUE9ORU5UKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVWZWN0b3IoYmFzaWNUeXBlKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYmFzaWNUeXBl
ID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclR5cGUoYmFzaWNUeXBlKTsKKyAgICAg
ICAgICAgICAgICArK3BhdGhJdGVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHBhdGhJdGVyID09IGVuZDsKKyAgICB9OworCisgICAgLyoqIGdsdVZhclR5cGVV
dGlsLmdldFZhclR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdHlwZQor
ICAgICAqIEBwYXJhbSB7QXJyYXk8Z2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudD59IGFy
cmF5CisgICAgICogQHBhcmFtIHtudW1iZXI9fSBzdGFydAorICAgICAqIEBwYXJhbSB7bnVtYmVy
PX0gZW5kCisgICAgICogQHJldHVybiB7Z2x1VmFyVHlwZS5WYXJUeXBlfQorICAgICAqLworICAg
IGdsdVZhclR5cGVVdGlsLmdldFZhclR5cGUgPSBmdW5jdGlvbih0eXBlLCBhcnJheSwgc3RhcnQs
IGVuZCkgeworCisgICAgICAgIGlmICh0eXBlb2Yoc3RhcnQpID09ICd1bmRlZmluZWQnKSBzdGFy
dCA9IDA7CisgICAgICAgIGlmICh0eXBlb2YoZW5kKSA9PSAndW5kZWZpbmVkJykgZW5kID0gYXJy
YXkubGVuZ3RoOworCisgICAgICAgIGlmICghZ2x1VmFyVHlwZVV0aWwuaXNWYWxpZFR5cGVQYXRo
KHR5cGUsIGFycmF5LCBzdGFydCwgZW5kKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdUeXBlIGlzIGludmFsaWQnKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXJUeXBlID0g
dHlwZTsgLy8gY29uc3QgVmFyVHlwZSoKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBudWxsOyAvLyBJ
dGVyYXRvcgorICAgICAgICB2YXIgcGF0aEl0ZXIgPSAwOworCisgICAgICAgIC8vIFByb2Nlc3Mg
c3RydWN0IG1lbWJlciBhbmQgYXJyYXkgZWxlbWVudCBwYXJ0cyBvZiBwYXRoLgorICAgICAgICBm
b3IgKHBhdGhJdGVyID0gc3RhcnQ7IHBhdGhJdGVyICE9IGVuZDsgKytwYXRoSXRlcikgeworICAg
ICAgICAgICAgZWxlbWVudCA9IGFycmF5W3BhdGhJdGVyXTsKKworICAgICAgICAgICAgaWYgKGVs
ZW1lbnQudHlwZSA9PSBnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50LnNfVHlwZS5TVFJV
Q1RfTUVNQkVSKSB7CisgICAgICAgICAgICAgICAgY3VyVHlwZSA9IGN1clR5cGUuZ2V0U3RydWN0
KCkuZ2V0TWVtYmVyKGVsZW1lbnQuaW5kZXgpLmdldFR5cGUoKTsKKworICAgICAgICAgICAgfSBl
bHNlIGlmIChlbGVtZW50LnR5cGUgPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5z
X1R5cGUuQVJSQVlfRUxFTUVOVCkgeworICAgICAgICAgICAgICAgIGN1clR5cGUgPSBjdXJUeXBl
LmdldEVsZW1lbnRUeXBlKCk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXRo
SXRlciAhPSBlbmQpIHsKKworICAgICAgICAgICAgdmFyIGJhc2ljVHlwZSA9IGN1clR5cGUuZ2V0
QmFzaWNUeXBlKCk7IC8vIERhdGFUeXBlCisgICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gY3Vy
VHlwZS5nZXRQcmVjaXNpb24oKTsgLy8gUHJlY2lzaW9uCisKKyAgICAgICAgICAgIGlmIChlbGVt
ZW50LnR5cGUgPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuTUFUUklY
X0NPTFVNTikgeworICAgICAgICAgICAgICAgIGJhc2ljVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVGbG9hdFZlYyhnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtUm93cyhi
YXNpY1R5cGUpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gYXJyYXlbKytwYXRoSXRlcl07
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXRoSXRlciAhPSBlbmQgJiYgZWxl
bWVudC50eXBlID09IGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLlZFQ1RP
Ul9DT01QT05FTlQpIHsKKyAgICAgICAgICAgICAgICBiYXNpY1R5cGUgPSBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlU2NhbGFyVHlwZUFzRGF0YVR5cGUoYmFzaWNUeXBlKTsKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gYXJyYXlbKytwYXRoSXRlcl07CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChwYXRoSXRlciAhPSBlbmQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBnbHVWYXJUeXBlLm5l
d1R5cGVCYXNpYyhiYXNpY1R5cGUsIHByZWNpc2lvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvKiBUT0RPOiBPcmlnaW5hbCBjb2RlIGNyZWF0ZWQgYW4gb2JqZWN0IGNvcHkuIFdl
IGFyZSByZXR1cm5pbmcgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdCAqLworICAgICAgICAg
ICAgcmV0dXJuIGN1clR5cGU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZ2x1VmFyVHlwZVV0
aWwucGFyc2VWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbihuYW1lV2l0aFBhdGgpIHsKKyAgICAgICAg
dmFyIHRva2VuaXplciA9IG5ldyBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIobmFtZVdpdGhQ
YXRoKTsKKyAgICAgICAgaWYgKHRva2VuaXplci5nZXRUb2tlbigpICE9IGdsdVZhclR5cGVVdGls
LlZhclRva2VuaXplci5zX1Rva2VuLklERU5USUZJRVIpIHsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcignTm90IGFuIGlkZW50aWZpZXIuJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRva2VuaXplci5nZXRJZGVudGlmaWVyKCk7CisgICAgfTsKKworICAgIC8vIHJldHVybnMgYW4g
YXJyYXkgKFR5cGVDb21wb25lbnRWZWN0b3ImIHBhdGgpCisgICAgLy8gcGFyYW1zOiBjb25zdCBj
aGFyKiwgY29uc3QgVmFyVHlwZSYKKyAgICBnbHVWYXJUeXBlVXRpbC5wYXJzZVR5cGVQYXRoID0g
ZnVuY3Rpb24obmFtZVdpdGhQYXRoLCB0eXBlKSB7CisKKyAgICAgICAgdmFyIHRva2VuaXplciA9
IG5ldyBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIobmFtZVdpdGhQYXRoKTsKKworICAgICAg
ICBpZiAodG9rZW5pemVyLmdldFRva2VuKCkgPT0gZ2x1VmFyVHlwZVV0aWwuVmFyVG9rZW5pemVy
LnNfVG9rZW4uSURFTlRJRklFUikgeworICAgICAgICAgICAgdG9rZW5pemVyLmFkdmFuY2UoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBwYXRoID0gW107CisKKyAgICAgICAgd2hpbGUgKHRv
a2VuaXplci5nZXRUb2tlbigpICE9IGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2Vu
LkVORCkgeworCisgICAgICAgICAgICB2YXIgY3VyVHlwZSA9IGdsdVZhclR5cGVVdGlsLmdldFZh
clR5cGUodHlwZSwgcGF0aCk7CisKKyAgICAgICAgICAgIGlmICh0b2tlbml6ZXIuZ2V0VG9rZW4o
KSA9PSBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIuc19Ub2tlbi5QRVJJT0QpIHsKKworICAg
ICAgICAgICAgICAgIHRva2VuaXplci5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHRv
a2VuaXplci5nZXRUb2tlbigpICE9IGdsdVZhclR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2Vu
LklERU5USUZJRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghY3VyVHlwZS5pc1N0cnVjdFR5
cGUoKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmll
bGQgc2VsZWN0b3InKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBG
aW5kIG1lbWJlci4KKyAgICAgICAgICAgICAgICB2YXIgbWVtYmVyTmFtZSA9IHRva2VuaXplci5n
ZXRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICAgICAgdmFyIG5keCA9IDA7CisgICAgICAgICAg
ICAgICAgZm9yICg7IG5keCA8IGN1clR5cGUuZ2V0U3RydWN0KCkuZ2V0U2l6ZSgpOyArK25keCkg
eworCisgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXJOYW1lID09IGN1clR5cGUuZ2V0U3Ry
dWN0KCkuZ2V0TWVtYmVyKG5keCkuZ2V0TmFtZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChuZHggPj0gY3VyVHlwZS5nZXRTdHJ1Y3QoKS5nZXRTaXplKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZW1iZXIgbm90IGZvdW5kIGlu
IHR5cGU6ICcgKyBtZW1iZXJOYW1lKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBwYXRoLnB1c2gobmV3IGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQoZ2x1VmFy
VHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuU1RSVUNUX01FTUJFUiwgbmR4KSk7Cisg
ICAgICAgICAgICAgICAgdG9rZW5pemVyLmFkdmFuY2UoKTsKKworICAgICAgICAgICAgfSBlbHNl
IGlmICh0b2tlbml6ZXIuZ2V0VG9rZW4oKSA9PSBnbHVWYXJUeXBlVXRpbC5WYXJUb2tlbml6ZXIu
c19Ub2tlbi5MRUZUX0JSQUNLRVQpIHsKKworICAgICAgICAgICAgICAgIHRva2VuaXplci5hZHZh
bmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHRva2VuaXplci5nZXRUb2tlbigpICE9IGdsdVZh
clR5cGVVdGlsLlZhclRva2VuaXplci5zX1Rva2VuLk5VTUJFUikgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB2YXIgbmR4ID0gdG9rZW5pemVyLmdldE51bWJlcigpOworCisgICAgICAgICAgICAgICAg
aWYgKGN1clR5cGUuaXNBcnJheVR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWds
dVZhclR5cGVVdGlsLmluQm91bmRzKG5keCwgMCwgY3VyVHlwZS5nZXRBcnJheVNpemUoKSkpIHRo
cm93IG5ldyBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKG5ldyBnbHVWYXJU
eXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50KGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQu
c19UeXBlLkFSUkFZX0VMRU1FTlQsIG5keCkpOworCisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChjdXJUeXBlLmlzQmFzaWNUeXBlKCkgJiYgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4
KGN1clR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghZ2x1
VmFyVHlwZVV0aWwuaW5Cb3VuZHMobmR4LCAwLCBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0
cml4TnVtQ29sdW1ucyhjdXJUeXBlLmdldEJhc2ljVHlwZSgpKSkpIHRocm93IG5ldyBFcnJvcjsK
KyAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKG5ldyBnbHVWYXJUeXBlVXRpbC5WYXJUeXBl
Q29tcG9uZW50KGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLk1BVFJJWF9D
T0xVTU4sIG5keCkpOworCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJUeXBlLmlzQmFz
aWNUeXBlKCkgJiYgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKGN1clR5cGUuZ2V0QmFz
aWNUeXBlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghZ2x1VmFyVHlwZVV0aWwuaW5C
b3VuZHMobmR4LCAwLCBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShjdXJUeXBl
LmdldEJhc2ljVHlwZSgpKSkpIHRocm93IG5ldyBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAg
cGF0aC5wdXNoKG5ldyBnbHVWYXJUeXBlVXRpbC5WYXJUeXBlQ29tcG9uZW50KGdsdVZhclR5cGVV
dGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLlZFQ1RPUl9DT01QT05FTlQsIG5keCkpOworCisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy9UQ1VfRkFJTAor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3Vic2NyaXB0Jyk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdG9rZW5pemVyLmFkdmFuY2Uo
KTsKKyAgICAgICAgICAgICAgICBpZiAodG9rZW5pemVyLmdldFRva2VuKCkgIT0gZ2x1VmFyVHlw
ZVV0aWwuVmFyVG9rZW5pemVyLnNfVG9rZW4uUklHSFRfQlJBQ0tFVCkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRva2VuIFJJR0hUX0JSQUNLRVQnKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdG9rZW5pemVyLmFkdmFuY2UoKTsK
KworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUQ1VfRkFJTAorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB0b2tlbicpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICB9OworCit9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2UvcmVmZXJlbmNlY29udGV4
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9yZWZlcmVuY2Vjb250ZXh0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjNiYTBlZDI2MjliYWE4NTQzYjBmMmM3YmJkNzg5ZjBlYWYxYzhhMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2UvcmVmZXJlbmNlY29udGV4
dC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5SZWZlcmVuY2UgY29udGV4dCB0ZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxl
cmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwg
Mik7CisKKyAgICB0cnkgeworICAgICAgZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uu
c2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LnJ1bihnbCk7CisgICAgfQorICAgIGNhdGNoKGVycikK
KyAgICB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAgfQorCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZl
cmVuY2Uvc2dsckdMQ29udGV4dC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsckdM
Q29udGV4dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Y3NWU4ZjVlNTNhNTViNmRmODcyYWM2ZGUxODkwMDFi
NDU2ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xy
R0xDb250ZXh0LmpzCkBAIC0wLDAgKzEsMjMxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRy
YXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJp
Z2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
ICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisg
KgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAq
CisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5j
ZS5zZ2xyR0xDb250ZXh0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UGl4
ZWxGb3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1
VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZl
cmVuY2Uuc2dsclNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVy
ZW5jZXJlbmRlcmVyLnJyRGVmcycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNl
cmVuZGVyZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlcmVyJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJpYicpOworCitnb29n
LnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsu
b3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0OworICAgIHZhciB0Y3VUZXh0dXJl
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAgIHZhciBkZVV0aWwgPSBmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZVV0aWw7CisgICAgdmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlTWF0aDsKKyAgICB2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmVVdGlsOworICAgIHZhciB0Y3VQaXhlbEZvcm1hdCA9IGZyYW1ld29yay5j
b21tb24udGN1UGl4ZWxGb3JtYXQ7CisgICAgdmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdv
cmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW07CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIGdsdVRleHR1cmVVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKKyAgICB2YXIgc2dsclNoYWRlclByb2dyYW0g
PSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbTsKKyAg
ICB2YXIgcnJEZWZzID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRGVmczsKKyAgICB2
YXIgcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2VzczsKKyAgICB2YXIgcnJSZW5kZXJl
ciA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlcmVyOworICAgIHZhciByclJl
bmRlclN0YXRlID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGU7Cisg
ICAgdmFyIHJyVmVydGV4QXR0cmliID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVy
dGV4QXR0cmliOworCisgICAgdmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAg
aWYgKCF4KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVkJyk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIHNnbHJHTENvbnRleHQuR0xDb250ZXh0IHdyYXBzIHRo
ZSBzdGFuZGFyZCBXZWJHTCBjb250ZXh0IHRvIGJlIGFibGUgdG8gYmUgdXNlZCBpbnRlcmNoYW5n
ZWFibHkgd2l0aCB0aGUgUmVmZXJlbmNlQ29udGV4dAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICAqIEBleHRlbmRzIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fQorICAgICAqIEBwYXJhbSB7P1dl
YkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj49fSB2aWV3cG9ydAorICAgICAqLworICAgIHNnbHJHTENvbnRleHQuR0xDb250ZXh0ID0gZnVu
Y3Rpb24oY29udGV4dCwgdmlld3BvcnQpIHsKKyAgICAgICAgREVfQVNTRVJUKGNvbnRleHQpOwor
CisgICAgICAgIHZhciBmdW5jdGlvbndyYXBwZXIgPSBmdW5jdGlvbihjb250ZXh0LCBmbmFtZSkg
eworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBjb250ZXh0W2ZuYW1lXS5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpOworICAgICAgICAgICAg
fTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgd3JhcCA9IHt9OworICAgICAgICBmb3IgKHZh
ciBpIGluIGNvbnRleHQpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgIGlmICh0
eXBlb2YgY29udGV4dFtpXSA9PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICAgICAgd3JhcFtp
XSA9IGZ1bmN0aW9ud3JhcHBlcihjb250ZXh0LCBpKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB3cmFwW2ldID0gY29udGV4dFtpXTsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0dMQ29udGV4dDogRXJyb3IgYWNjZXNzaW5nICcgKyBpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBpZiAodmlld3BvcnQpCisgICAgICAgICAgICBjb250ZXh0LnZpZXdwb3J0
KHZpZXdwb3J0WzBdLCB2aWV3cG9ydFsxXSwgdmlld3BvcnRbMl0sIHZpZXdwb3J0WzNdKTsKKwor
ICAgICAgICAvKioKKyAgICAgICAgICogY3JlYXRlUHJvZ3JhbQorICAgICAgICAgKiBAb3ZlcnJp
ZGUKKyAgICAgICAgICogQHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtPX0g
c2hhZGVyCisgICAgICAgICAqIEByZXR1cm4geyFXZWJHTFByb2dyYW19CisgICAgICAgICAqLwor
ICAgICAgICB0aGlzLmNyZWF0ZVByb2dyYW0gPSBmdW5jdGlvbihzaGFkZXIpIHsKKyAgICAgICAg
ICAgIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbSgKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMoCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFk
ZXIubV92ZXJ0U3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyLm1fZnJhZ1NyYwor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtLmlzT2soKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKHByb2dyYW0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlv
bnMoJ0NvbXBpbGUgZmFpbGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gcHJvZ3JhbS5nZXRQcm9ncmFtKCk7CisgICAgICAgIH07CisgICAgICAgIHdyYXBbJ2Ny
ZWF0ZVByb2dyYW0nXSA9IHRoaXMuY3JlYXRlUHJvZ3JhbTsKKworICAgICAgICAvKioKKyAgICAg
ICAgICogRHJhd3MgcXVhZHMgZnJvbSB2ZXJ0ZXggYXJyYXlzCisgICAgICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBwcmltaXRpdmUgUHJpbWl0aXZlIHR5cGUKKyAgICAgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGZpcnN0IEZpcnN0IHZlcnRleCB0byBiZWdpbiBkcmF3aW5nIHdpdGgKKyAgICAgICAgICog
QHBhcmFtIHtudW1iZXJ9IGNvdW50IE51bWJlciBvZiB2ZXJ0aWNlcworICAgICAgICAgKi8KKyAg
ICAgICAgdmFyIGRyYXdRdWFkcyA9IGZ1bmN0aW9uKHByaW1pdGl2ZSwgZmlyc3QsIGNvdW50KSB7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdBcnJheXMocHJpbWl0aXZlLCBmaXJzdCwgY291bnQp
OworICAgICAgICB9OworICAgICAgICB3cmFwWydkcmF3UXVhZHMnXSA9IGRyYXdRdWFkczsKKwor
ICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAgICAgKi8KKyAg
ICAgICAgdmFyIGdldFdpZHRoID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZih2aWV3cG9y
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmlld3BvcnRbMl07CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZHJhd2luZ0J1ZmZlcldpZHRoOworICAg
ICAgICB9OworICAgICAgICB3cmFwWydnZXRXaWR0aCddID0gZ2V0V2lkdGg7CisKKyAgICAgICAg
LyoqCisgICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgICAgICovCisgICAgICAgIHZh
ciBnZXRIZWlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmKHZpZXdwb3J0KQorICAg
ICAgICAgICAgICAgIHJldHVybiB2aWV3cG9ydFszXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5kcmF3aW5nQnVmZmVySGVpZ2h0OworICAgICAgICB9
OworICAgICAgICB3cmFwWydnZXRIZWlnaHQnXSA9IGdldEhlaWdodDsKKworICAgICAgICAvKioK
KyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9
IHkKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBoZWlnaHQKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAg
ICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YVR5cGUKKyAgICAgICAgICogQHBhcmFtIHtBcnJheUJ1
ZmZlcnxBcnJheUJ1ZmZlclZpZXd9IGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHZhciByZWFk
UGl4ZWxzID0gZnVuY3Rpb24oeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhVHlwZSwg
ZGF0YSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHs/QXJyYXlCdWZmZXJWaWV3fSAqLyB2YXIg
ZGF0YUFycjsKKyAgICAgICAgICAgIGlmICghQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTENoYW5uZWxUeXBl
KGRhdGFUeXBlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YUFyclR5cGUgPSB0Y3VU
ZXh0dXJlLmdldFR5cGVkQXJyYXkodHlwZSk7CisgICAgICAgICAgICAgICAgZGF0YUFyciA9IG5l
dyBkYXRhQXJyVHlwZShkYXRhKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGF0YUFyciA9IC8qKiBAdHlwZSB7P0FycmF5QnVmZmVyVmlld30gKi8gKGRhdGEpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0LnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBkYXRhVHlwZSwgZGF0YUFycik7CisgICAgICAgIH07CisgICAgICAg
IHdyYXBbJ3JlYWRQaXhlbHMnXSA9IHJlYWRQaXhlbHM7CisKKyAgICAgICAgLyoqCisgICAgICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxl
dmVsCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAgICAg
KiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdo
dAorICAgICAgICAgKi8KKyAgICAgICAgdmFyIHRleEltYWdlMkREZWxlZ2F0ZSA9IGZ1bmN0aW9u
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAg
ICAgICB2YXIgZm9ybWF0OworICAgICAgICAgICAgdmFyIGRhdGFUeXBlOworCisgICAgICAgICAg
ICBzd2l0Y2goaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBnbC5BTFBIQToKKyAgICAgICAgICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRToKKyAgICAg
ICAgICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgICAgICBjYXNl
IGdsLlJHQjoKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlJHQkE6CisgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICAgICAgICAgICAgICBkYXRhVHlw
ZSA9IGdsLlVOU0lHTkVEX0JZVEU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChnbHVU
ZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSk7CisgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IHRyYW5zZmVyRm10LmZvcm1hdDsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YVR5cGUgPSB0cmFuc2ZlckZtdC5kYXRhVHlwZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICBjb250ZXh0LnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGZvcm1hdCwgZGF0YVR5cGUsIG51bGwpOworICAgICAgICAgfTsKKyAgICAg
ICAgIHdyYXBbJ3RleEltYWdlMkREZWxlZ2F0ZSddID0gdGV4SW1hZ2UyRERlbGVnYXRlOworCisg
ICAgICAgICByZXR1cm4gd3JhcDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogY3JlYXRlUHJv
Z3JhbSAtIFRoaXMgaGFkIHRvIGJlIGFkZGVkIGhlcmUgYXMgZHVtbXkgdG8gcmVtb3ZlIGEgd2Fy
bmluZyB3aGVuIHRoZSBvbmx5IGNvbnRleHQgdXNlZCBpcyBHTENvbnRleHQgKG5vIHJlZmVyZW5j
ZSBjb250ZXh0KQorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7c2dsclNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbT19IHNoYWRlcgorICAgICAqIEByZXR1cm4geyFXZWJHTFByb2dy
YW19CisgICAgICovCisgICAgc2dsckdMQ29udGV4dC5HTENvbnRleHQucHJvdG90eXBlLmNyZWF0
ZVByb2dyYW0gPSBmdW5jdGlvbihzaGFkZXIpIHtyZXR1cm4gdGhpcy5jcmVhdGVQcm9ncmFtKCk7
fTsKKworICAgIC8qKgorICAgICogQHBhcmFtIGN0eCBHTC1saWtlIGNvbnRleHQKKyAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAg
c2dsckdMQ29udGV4dC5pc0V4dGVuc2lvblN1cHBvcnRlZCA9IGZ1bmN0aW9uKGN0eCwgbmFtZSkg
eworICAgICAgICB2YXIgZXh0bnMgPSBjdHguZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICAg
ICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGV4dG5zKSB7CisgICAgICAgICAg
ICB2YXIgaW5kZXggPSBleHRucy5pbmRleE9mKG5hbWUpOworICAgICAgICAgICAgaWYgKGluZGV4
ICE9IC0xKQorICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZm91bmQ7CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9vcGVuZ2wvc2lt
cGxlcmVmZXJlbmNlL3NnbHJSZWZlcmVuY2VDb250ZXh0LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJl
ZmVyZW5jZS9zZ2xyUmVmZXJlbmNlQ29udGV4dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjNkYmU2MDdmZmNk
YzM5YzBmOGI1NWM5ZjBjNzVjOTIyNjhkYzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3Blbmds
L3NpbXBsZXJlZmVyZW5jZS9zZ2xyUmVmZXJlbmNlQ29udGV4dC5qcwpAQCAtMCwwICsxLDQ5ODYg
QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBP
cGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Zy
YW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0Jyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuY29tbW9uLnRjdVBpeGVsRm9ybWF0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1
cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlVXRpbHMnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclNoYWRl
clByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
RGVmcycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5l
cmljVmVjdG9yJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5y
ck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyZXInKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJyk7CisKK2dvb2cuc2NvcGUoZnVu
Y3Rpb24oKSB7CisKKyAgICB2YXIgc2dsclJlZmVyZW5jZUNvbnRleHQgPSBmcmFtZXdvcmsub3Bl
bmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dDsKKyAgICB2YXIgcnJNdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2VzczsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1l
d29yay5jb21tb24udGN1VGV4dHVyZTsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoOworICAgIHZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVu
Z2wuZ2x1VGV4dHVyZVV0aWw7CisgICAgdmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXh0dXJlVXRpbDsKKyAgICB2YXIgdGN1UGl4ZWxGb3JtYXQgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVBpeGVsRm9ybWF0OworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciByclJlbmRlcmVyID0gZnJhbWV3b3JrLnJl
ZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyZXI7CisgICAgdmFyIHJyRGVmcyA9IGZyYW1ld29yay5y
ZWZlcmVuY2VyZW5kZXJlci5yckRlZnM7CisgICAgdmFyIHJyR2VuZXJpY1ZlY3RvciA9IGZyYW1l
d29yay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3I7CisgICAgdmFyIHJyVmVydGV4
QXR0cmliID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliOworICAg
IHZhciByclJlbmRlclN0YXRlID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVy
U3RhdGU7CisgICAgdmFyIHNnbHJSZWZlcmVuY2VVdGlscyA9IGZyYW1ld29yay5vcGVuZ2wuc2lt
cGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VVdGlsczsKKyAgICB2YXIgc2dsclNoYWRlclByb2dy
YW0gPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbTsK
KyAgICB2YXIgdGN1TWF0cml4ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXg7CisgICAgdmFy
IHRjdU1hdHJpeFV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeFV0aWw7CisKKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5yck1QQkEgPSByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nl
c3M7CisKKyAgICAvL1RPRE86IEltcGxlbWVudCBhdXRvbWF0aWMgZXJyb3IgY2hlY2tpbmcgaW4g
c2dsclJlZmVyZW5jZUNvbnRleHQsIG9wdGlvbmFsIG9uIGNyZWF0aW9uLgorCisgICAgLyoqIEB0
eXBlZGVmIHtXZWJHTFJlbmRlcmJ1ZmZlcnxXZWJHTFRleHR1cmV8c2dsclJlZmVyZW5jZUNvbnRl
eHQuUmVuZGVyYnVmZmVyfHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9ICov
IHNnbHJSZWZlcmVuY2VDb250ZXh0LkFueVJlbmRlcmJ1ZmZlcjsKKworICAgIC8qKiBAdHlwZWRl
ZiB7V2ViR0xGcmFtZWJ1ZmZlcnxzZ2xyUmVmZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZlcn0gKi8g
c2dsclJlZmVyZW5jZUNvbnRleHQuQW55RnJhbWVidWZmZXI7CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZXJyb3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWVzc2FnZQorICAg
ICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LkdM
VV9FWFBFQ1RfTk9fRVJST1IgPSBmdW5jdGlvbihlcnJvciwgbWVzc2FnZSkgeworICAgICAgICBp
ZiAoZXJyb3IgIT09IGdsLk5PTkUpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdBc3NlcnRpb24gZmFpbGVkIG1lc3NhZ2U6JyArIG1lc3NhZ2UpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisK
KyAgICAvLyAvKiBUT0RPOiByZW1vdmUgKi8KKyAgICAvLyAvKiogQHR5cGUge1dlYkdMMlJlbmRl
cmluZ0NvbnRleHR9ICovIHZhciBnbDsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0Lk1BWF9U
RVhUVVJFX1NJWkVfTE9HMiA9IDE0OworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0Lk1BWF9URVhU
VVJFX1NJWkUgPSAxIDw8IHNnbHJSZWZlcmVuY2VDb250ZXh0Lk1BWF9URVhUVVJFX1NJWkVfTE9H
MjsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0TnVtTWlwTGV2ZWxzMkQgPSBmdW5jdGlvbih3aWR0aCwg
aGVpZ2h0KSB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMihNYXRoLm1heCh3
aWR0aCwgaGVpZ2h0KSkgKyAxKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBkZXB0aAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5nZXROdW1NaXBMZXZlbHMzRCA9IGZ1bmN0aW9uKHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKSB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMihNYXRo
Lm1heCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpICsgMSk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlTGV2ZWxTaXplCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxldmVsTmR4CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHNnbHJSZWZl
cmVuY2VDb250ZXh0LmdldE1pcExldmVsU2l6ZSA9IGZ1bmN0aW9uKGJhc2VMZXZlbFNpemUsIGxl
dmVsTmR4KSB7CisgICAgICAgIHJldHVybiBNYXRoLm1heChiYXNlTGV2ZWxTaXplID4+IGxldmVs
TmR4LCAxKTsKKyAgICB9OworCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQubWFwR0xDdWJlRmFj
ZSA9IGZ1bmN0aW9uKGZhY2UpIHsKKyAgICAgICAgc3dpdGNoIChmYWNlKSB7CisgICAgICAgICAg
ICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDogcmV0dXJuIHRjdVRleHR1cmUu
Q3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWDsKKyAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YOiByZXR1cm4gdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFD
RV9QT1NJVElWRV9YOworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1k6IHJldHVybiB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1k7Cisg
ICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWTogcmV0dXJuIHRj
dVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWTsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOiByZXR1cm4gdGN1VGV4dHVyZS5DdWJlRmFj
ZS5DVUJFRkFDRV9ORUdBVElWRV9aOworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1o6IHJldHVybiB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lU
SVZFX1o7CisgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3Vi
ZSBmYWNlOiAnICsgZmFjZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHt0Y3VUZXh0dXJlLkZpbHRlck1vZGV9IG1vZGUKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LmlzTWlwbWFwRmlsdGVyID0g
ZnVuY3Rpb24oLypjb25zdCB0Y3U6OlNhbXBsZXI6OkZpbHRlck1vZGUqLyBtb2RlKSB7CisgICAg
ICAgIHJldHVybiBtb2RlICE9IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUICYmIG1vZGUg
IT0gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUjsKKyAgICB9OworCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHQuZ2V0TnVtTWlwTGV2ZWxzMUQgPSBmdW5jdGlvbihzaXplKSB7CisgICAgICAg
IHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMihzaXplKSkgKyAxOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0gez9zZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZX0gdHlw
ZQorICAgICAqIEByZXR1cm4ge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldH0KKyAgICAg
Ki8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC50ZXhMYXllcmVkVHlwZVRvVGFyZ2V0ID0gZnVu
Y3Rpb24odHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRF9BUlJBWTogcmV0dXJuIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldC5URVhUQVJHRVRfMkRfQVJSQVk7CisgICAgICAg
ICAgICBjYXNlIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZUEVfM0Q6IHJldHVy
biBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUXzNEOworICAgICAgICAg
ICAgY2FzZSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFX0NVQkVfTUFQX0FS
UkFZOiByZXR1cm4gc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0LlRFWFRBUkdFVF9DVUJF
X01BUF9BUlJBWTsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignSW52YWxp
ZCB0ZXh0dXJlIHR5cGU6ICcgKyB0eXBlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3JyRGVmcy5JbmRleFR5cGV9IGluZGV4VHlwZQorICAgICAqIEByZXR1
cm4ge251bWJlcn0KKyAgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5nZXRGaXhlZFJlc3RhcnRJbmRleCA9IGZ1bmN0aW9uKGluZGV4VHlwZSkg
eworICAgICAgICBzd2l0Y2ggKGluZGV4VHlwZSkgeworICAgICAgICAgICAgY2FzZSByckRlZnMu
SW5kZXhUeXBlLklOREVYVFlQRV9VSU5UODogcmV0dXJuIDB4RkY7CisgICAgICAgICAgICBjYXNl
IHJyRGVmcy5JbmRleFR5cGUuSU5ERVhUWVBFX1VJTlQxNjogcmV0dXJuIDB4RkZGRjsKKyAgICAg
ICAgICAgIGNhc2UgcnJEZWZzLkluZGV4VHlwZS5JTkRFWFRZUEVfVUlOVDMyOiByZXR1cm4gMHhG
RkZGRkZGRjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdVbnJlY29nbml6ZWQgaW5kZXggdHlwZTogJyArIGluZGV4VHlwZSk7CisgICAgICAg
ICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAcGFy
YW0ge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0KKyAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlNoYWRlclByb2dyYW1PYmplY3RDb250YWluZXIgPSBmdW5j
dGlvbihwcm9ncmFtKSB7CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gcHJvZ3JhbTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLm1fZGVsZXRlRmxhZyA9IGZhbHNlOworICAg
IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wK
KyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dExpbWl0cyA9IGZ1bmN0aW9uKGdsKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB0aGlzLm1heFRleHR1cmVJbWFnZVVuaXRzID0gMTY7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1heFRleHR1cmUyRFNpemUgPSAyMDQ4OworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tYXhUZXh0dXJlQ3ViZVNpemUgPSAyMDQ4OworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tYXhUZXh0dXJlMkRBcnJheUxheWVycyA9
IDI1NjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubWF4VGV4dHVyZTNEU2l6
ZSA9IDI1NjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubWF4UmVuZGVyYnVm
ZmVyU2l6ZSA9IDIwNDg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1heFZl
cnRleEF0dHJpYnMgPSAxNjsKKworICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAgIHRoaXMu
bWF4VGV4dHVyZUltYWdlVW5pdHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFt
ZXRlcihnbC5NQVhfVEVYVFVSRV9JTUFHRV9VTklUUykpOworICAgICAgICAgICAgdGhpcy5tYXhU
ZXh0dXJlMkRTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wu
TUFYX1RFWFRVUkVfU0laRSkpOworICAgICAgICAgICAgdGhpcy5tYXhUZXh0dXJlQ3ViZVNpemUg
PSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ1VCRV9NQVBf
VEVYVFVSRV9TSVpFKSk7CisgICAgICAgICAgICB0aGlzLm1heFJlbmRlcmJ1ZmZlclNpemUgPSAv
KiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfUkVOREVSQlVGRkVS
X1NJWkUpKTsKKyAgICAgICAgICAgIHRoaXMubWF4VmVydGV4QXR0cmlicyA9IC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUykpOworICAg
ICAgICAgICAgdGhpcy5tYXhUZXh0dXJlMkRBcnJheUxheWVycyA9IC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9BUlJBWV9URVhUVVJFX0xBWUVSUykpOworICAg
ICAgICAgICAgdGhpcy5tYXhUZXh0dXJlM0RTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYXzNEX1RFWFRVUkVfU0laRSkpOworCisgICAgICAgICAgICAv
LyBMaW1pdCB0ZXh0dXJlIHNpemVzIHRvIHN1cHBvcnRlZCB2YWx1ZXMKKyAgICAgICAgICAgIHRo
aXMubWF4VGV4dHVyZTJEU2l6ZSA9IE1hdGgubWluKHRoaXMubWF4VGV4dHVyZTJEU2l6ZSwgc2ds
clJlZmVyZW5jZUNvbnRleHQuTUFYX1RFWFRVUkVfU0laRSk7CisgICAgICAgICAgICB0aGlzLm1h
eFRleHR1cmVDdWJlU2l6ZSA9IE1hdGgubWluKHRoaXMubWF4VGV4dHVyZUN1YmVTaXplLCBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5NQVhfVEVYVFVSRV9TSVpFKTsKKyAgICAgICAgICAgIHRoaXMubWF4
VGV4dHVyZTNEU2l6ZSA9IE1hdGgubWluKHRoaXMubWF4VGV4dHVyZTNEU2l6ZSwgc2dsclJlZmVy
ZW5jZUNvbnRleHQuTUFYX1RFWFRVUkVfU0laRSk7CisKKyAgICAgICAgICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LkdMVV9FWFBFQ1RfTk9fRVJST1IoZ2wuZ2V0RXJyb3IoKSwgZ2wuTk9fRVJST1Ip
OworICAgICAgICB9CisKKyAgICAgICAgLyogVE9ETzogUG9ydAorICAgICAgICAvLyBcdG9kbyBb
cHlyeV0gRmlndXJlIG91dCBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAvLyArIHN1cHBvcnRl
ZCBmYm8gY29uZmlndXJhdGlvbnMKKyAgICAgICAgLy8gLi4uCisKKyAgICAgICAgLy8gXHRvZG8g
WzIwMTMtMDgtMDEgcHlyeV0gRG8gd2Ugd2FudCB0byBtYWtlIHRoZXNlIGNvbmRpdGlvbmFsIGJh
c2VkIG9uIHJlbmRlckN0eD8KKyAgICAgICAgYWRkRXh0ZW5zaW9uKCJnbC5FWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQiKTsKKyAgICAgICAgYWRkRXh0ZW5zaW9uKCJnbC5XRUJHTF9jb2xvcl9i
dWZmZXJfZmxvYXQiKTsKKyAgICAgICAgKi8KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAZW51
bQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVR5cGUgPSB7CisgICAg
ICAgIFRZUEVfMkQ6IDAsCisgICAgICAgIFRZUEVfQ1VCRV9NQVA6IDEsCisgICAgICAgIFRZUEVf
MkRfQVJSQVk6IDIsCisgICAgICAgIFRZUEVfM0Q6IDMsCisgICAgICAgIFRZUEVfQ1VCRV9NQVBf
QVJSQVk6IDQKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBp
bXBsZW1lbnRzIHtyckRlZnMuU2FtcGxlcn0KKyAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNv
bnRleHQuVGV4dHVyZVR5cGV9IHR5cGUKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LlRleHR1cmUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIC8vIE5hbWVkT2JqZWN0LmNhbGwo
dGhpcywgbmFtZSk7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4
dHVyZVR5cGV9ICovIHRoaXMubV90eXBlID0gdHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB0aGlzLm1faW1tdXRhYmxlID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLm1fYmFzZUxldmVsID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMubV9tYXhMZXZlbCA9IDEwMDA7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVy
ZS5TYW1wbGVyfSAqLyB0aGlzLm1fc2FtcGxlciA9IG5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIoCisg
ICAgICAgICAgICB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwKKyAgICAgICAgICAgIHRj
dVRleHR1cmUuV3JhcE1vZGUuUkVQRUFUX0dMLAorICAgICAgICAgICAgdGN1VGV4dHVyZS5XcmFw
TW9kZS5SRVBFQVRfR0wsCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVT
VF9NSVBNQVBfTElORUFSLAorICAgICAgICAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVB
UiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgdGN1VGV4
dHVyZS5Db21wYXJlTW9kZS5DT01QQVJFTU9ERV9OT05FLAorICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgIFswLCAwLCAwLCAwXSwKKyAgICAgICAgICAgIHRydWUpOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcG9zCisgICAgKiBAcGFyYW0ge251bWJl
cj19IGxvZAorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlLnByb3RvdHlwZS5zYW1wbGUgPSBmdW5jdGlvbihwb3MsIGxvZCkge3Ro
cm93IG5ldyBFcnJvcignSW50ZW50aW9uYWxseSBlbXB0eS4gQ2FsbCBtZXRob2QgZnJvbSBjaGls
ZCBjbGFzcyBpbnN0ZWFkJyk7IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7QXJyYXk8QXJy
YXk8bnVtYmVyPj59IHBhY2tldFRleGNvb3JkcworICAgICogQHBhcmFtIHtudW1iZXJ9IGxvZEJp
YXMKKyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRl
eHQuVGV4dHVyZS5wcm90b3R5cGUuc2FtcGxlNCA9IGZ1bmN0aW9uKHBhY2tldFRleGNvb3Jkcywg
bG9kQmlhcykge3Rocm93IG5ldyBFcnJvcignSW50ZW50aW9uYWxseSBlbXB0eS4gQ2FsbCBtZXRo
b2QgZnJvbSBjaGlsZCBjbGFzcyBpbnN0ZWFkJyk7IH07CisKKyAgICAvLyBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTmFtZWRPYmplY3QucHJv
dG90eXBlKTsKKyAgICAvLyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmU7CisKKyAgICAvKioKKyAg
ICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmUucHJvdG90eXBlLmdldFR5cGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV90eXBl
OyB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgKi8KKyAgICBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlLnByb3RvdHlwZS5nZXRCYXNlTGV2ZWwgPSBmdW5jdGlv
bigpIHsgcmV0dXJuIHRoaXMubV9iYXNlTGV2ZWw7IH07CisKKyAgICAvKioKKyAgICAqIEByZXR1
cm4ge251bWJlcn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUucHJv
dG90eXBlLmdldE1heExldmVsID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fbWF4TGV2ZWw7
IH07CisKKyAgICAvKioKKyAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlLnByb3RvdHlwZS5pc0ltbXV0YWJsZSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gdGhpcy5tX2ltbXV0YWJsZTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFt
IHtudW1iZXJ9IGJhc2VMZXZlbAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4
dHVyZS5wcm90b3R5cGUuc2V0QmFzZUxldmVsID0gZnVuY3Rpb24oYmFzZUxldmVsKSB7IHRoaXMu
bV9iYXNlTGV2ZWwgPSBiYXNlTGV2ZWw7IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSBtYXhMZXZlbAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZS5w
cm90b3R5cGUuc2V0TWF4TGV2ZWwgPSBmdW5jdGlvbihtYXhMZXZlbCkgeyB0aGlzLm1fbWF4TGV2
ZWwgPSBtYXhMZXZlbDsgfTsKKworICAgIC8qKgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNv
bnRleHQuVGV4dHVyZS5wcm90b3R5cGUuc2V0SW1tdXRhYmxlID0gZnVuY3Rpb24oKSB7IHRoaXMu
bV9pbW11dGFibGUgPSB0cnVlOyB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHt0Y3VUZXh0
dXJlLlNhbXBsZXJ9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlLnBy
b3RvdHlwZS5nZXRTYW1wbGVyID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fc2FtcGxlcjsg
fTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisgICAgKi8KKyAgICBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiog
QHR5cGUge0FycmF5PEFycmF5QnVmZmVyPn0gKi8gdGhpcy5tX2RhdGEgPSBbXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTx0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzPn0gKi8gdGhpcy5t
X2FjY2VzcyA9IFtdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
bGV2ZWwKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlRleHR1cmVMZXZlbEFycmF5LnByb3RvdHlwZS5oYXNMZXZlbCA9IGZ1bmN0aW9u
KGxldmVsKSB7IHJldHVybiB0aGlzLm1fZGF0YVtsZXZlbF0gIT0gbnVsbDsgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICAgICAqIEByZXR1cm4ge3RjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9CisgICAgICogQHRocm93cyB7RXJyb3J9CisgICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUxldmVsQXJyYXkucHJvdG90eXBlLmdldExl
dmVsID0gZnVuY3Rpb24obGV2ZWwpIHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0xldmVsKGxldmVs
KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTGV2ZWw6ICcgKyBsZXZlbCArICcgaXMg
bm90IGRlZmluZWQuJyk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMubV9hY2Nlc3NbbGV2ZWxdOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheTx0Y3VUZXh0dXJlLlBpeGVs
QnVmZmVyQWNjZXNzPn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
TGV2ZWxBcnJheS5wcm90b3R5cGUuZ2V0TGV2ZWxzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlz
Lm1fYWNjZXNzOyB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisg
ICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5UZXh0dXJlTGV2ZWxBcnJheS5wcm90b3R5cGUuYWxsb2NMZXZlbCA9IGZ1bmN0aW9uKGxldmVs
LCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgZGF0YVNpemUgPSBmb3JtYXQuZ2V0UGl4ZWxTaXplKCkgKiB3aWR0aCAqIGhl
aWdodCAqIGRlcHRoOworICAgICAgICBpZiAodGhpcy5oYXNMZXZlbChsZXZlbCkpCisgICAgICAg
ICAgICB0aGlzLmNsZWFyTGV2ZWwobGV2ZWwpOworCisgICAgICAgIHRoaXMubV9kYXRhW2xldmVs
XSA9IG5ldyBBcnJheUJ1ZmZlcihkYXRhU2l6ZSk7CisgICAgICAgIHRoaXMubV9hY2Nlc3NbbGV2
ZWxdID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgZm9y
bWF0OiBmb3JtYXQsCisgICAgICAgICAgICB3aWR0aDogd2lkdGgsCisgICAgICAgICAgICBoZWln
aHQ6IGhlaWdodCwKKyAgICAgICAgICAgIGRlcHRoOiBkZXB0aCwKKyAgICAgICAgICAgIGRhdGE6
IHRoaXMubV9kYXRhW2xldmVsXX0pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGV2ZWwKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
TGV2ZWxBcnJheS5wcm90b3R5cGUuY2xlYXJMZXZlbCA9IGZ1bmN0aW9uKGxldmVsKSB7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLm1fZGF0YVtsZXZlbF07CisgICAgICAgIGRlbGV0ZSB0aGlzLm1fYWNj
ZXNzW2xldmVsXTsKKyAgICB9OworCisgICAgLyoqCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMubV9kYXRhKQorICAgICAgICAgICAgZGVsZXRl
IHRoaXMubV9kYXRhW2tleV07CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMubV9hY2Nl
c3MpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5tX2FjY2Vzc1trZXldOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICogQGV4dGVuZHMge3NnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmV9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
MkQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZS5j
YWxsKHRoaXMsIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZUEVfMkQpOworICAg
ICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZTJEVmlld30gKi8gdGhpcy5tX3ZpZXcg
PSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3KDAsIG51bGwpOworICAgICAgICAvKiogQHR5
cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVMZXZlbEFycmF5fSAqLyB0aGlzLm1fbGV2
ZWxzID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVMZXZlbEFycmF5KCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJE
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZS5w
cm90b3R5cGUpOworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkQ7CisKKyAgICBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkQucHJvdG90eXBlLmNsZWFyTGV2ZWxzID0gZnVuY3Rp
b24oKSB7IHRoaXMubV9sZXZlbHMuY2xlYXIoKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFt
IHtudW1iZXJ9IGxldmVsCisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAgc2ds
clJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJELnByb3RvdHlwZS5oYXNMZXZlbCA9IGZ1bmN0aW9u
KGxldmVsKSB7IHJldHVybiB0aGlzLm1fbGV2ZWxzLmhhc0xldmVsKGxldmVsKTsgfTsKKworICAg
IC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisgICAgKiBAcmV0dXJuIHt0Y3VUZXh0
dXJlLlBpeGVsQnVmZmVyQWNjZXNzfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQu
VGV4dHVyZTJELnByb3RvdHlwZS5nZXRMZXZlbCA9IGZ1bmN0aW9uKGxldmVsKSB7IHJldHVybiB0
aGlzLm1fbGV2ZWxzLmdldExldmVsKGxldmVsKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFt
IHtudW1iZXJ9IGxldmVsCisgICAgKiBAcGFyYW0gez90Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9
IGZvcm1hdAorICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgKiBAcGFyYW0ge251bWJl
cn0gaGVpZ2h0CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkQucHJv
dG90eXBlLmFsbG9jTGV2ZWwgPSBmdW5jdGlvbihsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSB7IHRoaXMubV9sZXZlbHMuYWxsb2NMZXZlbChsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCAxKTsgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJELnByb3RvdHlwZS5pc0NvbXBsZXRlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZUxldmVs
ID0gdGhpcy5nZXRCYXNlTGV2ZWwoKTsKKworICAgICAgICBpZiAodGhpcy5oYXNMZXZlbChiYXNl
TGV2ZWwpKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9ICovIHZhciBsZXZlbDAgPSB0aGlzLmdldExldmVsKGJhc2VMZXZlbCk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBtaXBtYXAgPSBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5pc01pcG1hcEZpbHRlcih0aGlzLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIpOworCisgICAg
ICAgICAgICBpZiAobWlwbWFwKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0
dXJlLlRleHR1cmVGb3JtYXR9ICovIHZhciBmb3JtYXQgPSBsZXZlbDAuZ2V0Rm9ybWF0KCk7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3ID0gbGV2ZWwwLmdldFdp
ZHRoKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoID0gbGV2
ZWwwLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtTGV2ZWxzID0gTWF0aC5taW4odGhpcy5nZXRNYXhMZXZlbCgpIC0gYmFzZUxldmVsICsg
MSwgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0TnVtTWlwTGV2ZWxzMkQodywgaCkpOworCisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAxOyBsZXZlbE5keCA8IG51bUxldmVsczsg
bGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNMZXZlbChiYXNl
TGV2ZWwgKyBsZXZlbE5keCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGxldmVsID0gdGhpcy5nZXRMZXZl
bChiYXNlTGV2ZWwgKyBsZXZlbE5keCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGV4cGVjdGVkVyA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE1p
cExldmVsU2l6ZSh3LCBsZXZlbE5keCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGV4cGVjdGVkSCA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE1p
cExldmVsU2l6ZShoLCBsZXZlbE5keCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChs
ZXZlbC5nZXRXaWR0aCgpICE9IGV4cGVjdGVkVyB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxldmVsLmdldEhlaWdodCgpICE9IGV4cGVjdGVkSCB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICFsZXZlbC5nZXRGb3JtYXQoKS5pc0VxdWFsKGZvcm1hdCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJELnByb3RvdHlwZS51cGRhdGVW
aWV3ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFz
ZUxldmVsID0gdGhpcy5nZXRCYXNlTGV2ZWwoKTsKKworICAgICAgICBpZiAodGhpcy5oYXNMZXZl
bChiYXNlTGV2ZWwpICYmICF0aGlzLmdldExldmVsKGJhc2VMZXZlbCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAvLyBVcGRhdGUgbnVtYmVyIG9mIGxldmVscyBpbiBtaXBtYXAgcHlyYW1pZC4K
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSB0aGlzLmdldExl
dmVsKGJhc2VMZXZlbCkuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgaGVpZ2h0ID0gdGhpcy5nZXRMZXZlbChiYXNlTGV2ZWwpLmdldEhlaWdodCgpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNNaXBtYXAgPSBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5pc01pcG1hcEZpbHRlcih0aGlzLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1MZXZlbHMgPSBpc01p
cG1hcCA/IE1hdGgubWluKHRoaXMuZ2V0TWF4TGV2ZWwoKSAtIGJhc2VMZXZlbCArIDEsIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExldmVsczJEKHdpZHRoLCBoZWlnaHQpKSA6IDE7CisK
KyAgICAgICAgICAgIHRoaXMubV92aWV3ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZTJEVmlldyhu
dW1MZXZlbHMsIHRoaXMubV9sZXZlbHMuZ2V0TGV2ZWxzKCkuc2xpY2UoYmFzZUxldmVsKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5tX3ZpZXcgPSBuZXcgdGN1VGV4dHVyZS5U
ZXh0dXJlMkRWaWV3KDAsIG51bGwpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHBvcworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbG9kCisgICAgICog
QHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5UZXh0dXJlMkQucHJvdG90eXBlLnNhbXBsZSA9IGZ1bmN0aW9uKHBvcywgbG9kKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1fdmlldy5zYW1wbGUodGhpcy5nZXRTYW1wbGVyKCksIHBvcywgbG9k
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge0FycmF5PEFycmF5PG51bWJlcj4+
fSBwYWNrZXRUZXhjb29yZHMgNCB2ZWMyIGNvb3JkaW5hdGVzCisgICAgKiBAcGFyYW0ge251bWJl
cn0gbG9kQmlhc18KKyAgICAqIEByZXR1cm4ge0FycmF5PEFycmF5PG51bWJlcj4+fSA0IHZlYzQg
c2FtcGxlcworICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJELnByb3Rv
dHlwZS5zYW1wbGU0ID0gZnVuY3Rpb24ocGFja2V0VGV4Y29vcmRzLCBsb2RCaWFzXykgeworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZEJpYXMgPSBsb2RCaWFzXyB8fCAwOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRleFdpZHRoID0gdGhpcy5tX3ZpZXcu
Z2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0ZXhIZWlnaHQg
PSB0aGlzLm1fdmlldy5nZXRIZWlnaHQoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJh
eTxudW1iZXI+Pn0qLyB2YXIgb3V0cHV0ID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSovIHZhciBkRmR4MCA9IGRlTWF0aC5zdWJ0cmFjdChwYWNrZXRUZXhjb29yZHNb
MV0sIHBhY2tldFRleGNvb3Jkc1swXSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0qLyB2YXIgZEZkeDEgPSBkZU1hdGguc3VidHJhY3QocGFja2V0VGV4Y29vcmRzWzNdLCBwYWNr
ZXRUZXhjb29yZHNbMl0pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59Ki8gdmFy
IGRGZHkwID0gZGVNYXRoLnN1YnRyYWN0KHBhY2tldFRleGNvb3Jkc1syXSwgcGFja2V0VGV4Y29v
cmRzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSovIHZhciBkRmR5MSA9
IGRlTWF0aC5zdWJ0cmFjdChwYWNrZXRUZXhjb29yZHNbM10sIHBhY2tldFRleGNvb3Jkc1sxXSk7
CisKKyAgICAgICAgZm9yICh2YXIgZnJhZ05keCA9IDA7IGZyYWdOZHggPCA0OyArK2ZyYWdOZHgp
IHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0qL3ZhciBkRmR4ID0gKGZy
YWdOZHggJiAyKSA/IGRGZHgxIDogZEZkeDA7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59Ki92YXIgZEZkeSA9IChmcmFnTmR4ICYgMSkgPyBkRmR5MSA6IGRGZHkwOworCisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG11ID0gTWF0aC5tYXgoTWF0aC5h
YnMoZEZkeFswXSksIE1hdGguYWJzKGRGZHlbMF0pKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgbXYgPSBNYXRoLm1heChNYXRoLmFicyhkRmR4WzFdKSwgTWF0aC5hYnMo
ZEZkeVsxXSkpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwID0gTWF0
aC5tYXgobXUgKiB0ZXhXaWR0aCwgbXYgKiB0ZXhIZWlnaHQpOworCisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGxvZCA9IE1hdGgubG9nMihwKSArIGxvZEJpYXM7CisKKyAg
ICAgICAgICAgIG91dHB1dC5wdXNoKHRoaXMuc2FtcGxlKFtwYWNrZXRUZXhjb29yZHNbZnJhZ05k
eF1bMF0sIHBhY2tldFRleGNvb3Jkc1tmcmFnTmR4XVsxXV0sIGxvZCkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAqIEBleHRlbmRzIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlfQorICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUN1YmUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZS5jYWxsKHRoaXMsIHNnbHJSZWZl
cmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZUEVfQ1VCRV9NQVApOworICAgICAgICAvKiogQHR5
cGUge3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3fSAqLyB0aGlzLm1fdmlldyA9IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmVDdWJlVmlldygwLCBudWxsKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheT59ICovIHRoaXMubV9sZXZl
bHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKQor
ICAgICAgICAgICAgdGhpcy5tX2xldmVsc1t0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdXSA9IG5l
dyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheSgpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZS5wcm90b3R5
cGUpOworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRDsKKworICAgIHNnbHJSZWZl
cmVuY2VDb250ZXh0LlRleHR1cmVDdWJlLnByb3RvdHlwZS5jbGVhckxldmVscyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBmb3IgKHZhciBmYWNlIGluIHRjdVRleHR1cmUuQ3ViZUZhY2UpCisgICAg
ICAgICAgICB0aGlzLm1fbGV2ZWxzW3RjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZV1dLmNsZWFyKCk7
CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisgICAgKiBA
cGFyYW0ge3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ3ViZS5wcm90b3R5cGUu
aGFzRmFjZSA9IGZ1bmN0aW9uKGxldmVsLCBmYWNlKSB7IHJldHVybiB0aGlzLm1fbGV2ZWxzW2Zh
Y2VdLmhhc0xldmVsKGxldmVsKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9
IGxldmVsCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAgICAqIEBy
ZXR1cm4ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9CisgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXh0dXJlQ3ViZS5wcm90b3R5cGUuZ2V0RmFjZSA9IGZ1bmN0aW9uKGxl
dmVsLCBmYWNlKSB7IHJldHVybiB0aGlzLm1fbGV2ZWxzW2ZhY2VdLmdldExldmVsKGxldmVsKTsg
fTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisgICAgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAgICAqIEBwYXJhbSB7P3RjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdH0gZm9ybWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmVDdWJlLnByb3RvdHlwZS5hbGxvY0xldmVsID0gZnVuY3Rpb24obGV2ZWwsIGZhY2UsIGZv
cm1hdCwgd2lkdGgsIGhlaWdodCkgeworICAgICAgICB0aGlzLm1fbGV2ZWxzW2ZhY2VdLmFsbG9j
TGV2ZWwobGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSk7CisgICAgfTsKKworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJlLnByb3RvdHlwZS5pc0NvbXBsZXRlID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBiYXNlTGV2ZWwgPSB0aGlzLmdldEJhc2VMZXZlbCgpOwor
CisgICAgICAgIGlmICh0aGlzLmhhc0ZhY2UoYmFzZUxldmVsLCB0Y3VUZXh0dXJlLkN1YmVGYWNl
LkNVQkVGQUNFX05FR0FUSVZFX1gpKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWwgPSB0aGlzLmdl
dEZhY2UoYmFzZUxldmVsLCB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1gp
OworICAgICAgICAgICAgdmFyIHdpZHRoID0gbGV2ZWwuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAg
IHZhciBoZWlnaHQgPSBsZXZlbC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHZhciBmb3JtYXQg
PSBsZXZlbC5nZXRGb3JtYXQoKTsKKyAgICAgICAgICAgIHZhciBtaXBtYXAgPSBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5pc01pcG1hcEZpbHRlcih0aGlzLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIpOwor
ICAgICAgICAgICAgdmFyIG51bUxldmVscyA9IG1pcG1hcCA/IE1hdGgubWluKHRoaXMuZ2V0TWF4
TGV2ZWwoKSAtIGJhc2VMZXZlbCArIDEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExl
dmVsczJEKHdpZHRoLCBoZWlnaHQpKSA6IDE7CisKKyAgICAgICAgICAgIGlmICh3aWR0aCAhPSBo
ZWlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBOb24tc3F1YXJlIGlzIG5v
dCBzdXBwb3J0ZWQuCisKKyAgICAgICAgICAgIC8vIFxub3RlIExldmVsIDAgaXMgYWx3YXlzIGNo
ZWNrZWQgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7
IGxldmVsTmR4IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFy
IGxldmVsVyA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE1pcExldmVsU2l6ZSh3aWR0aCwgbGV2
ZWxOZHgpOworICAgICAgICAgICAgICAgIHZhciBsZXZlbEggPSBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5nZXRNaXBMZXZlbFNpemUoaGVpZ2h0LCBsZXZlbE5keCk7CisKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBmYWNlIGluIHRjdVRleHR1cmUuQ3ViZUZhY2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRoaXMuaGFzRmFjZShiYXNlTGV2ZWwgKyBsZXZlbE5keCwgdGN1VGV4dHVyZS5DdWJl
RmFjZVtmYWNlXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gdGhpcy5nZXRG
YWNlKGJhc2VMZXZlbCArIGxldmVsTmR4LCB0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsLmdldFdpZHRoKCkgIT0gbGV2ZWxXIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZ2V0SGVpZ2h0KCkgIT0gbGV2ZWxI
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxldmVsLmdldEZvcm1hdCgpLmlzRXF1
YWwoZm9ybWF0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH07CisKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ3ViZS5wcm90b3R5cGUu
dXBkYXRlVmlldyA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgIHZhciBiYXNlTGV2ZWwgPSB0aGlz
LmdldEJhc2VMZXZlbCgpOworICAgICAgICB2YXIgZmFjZXMgPSBbXTsKKworICAgICAgICBpZiAo
dGhpcy5pc0NvbXBsZXRlKCkpIHsKKyAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5nZXRGYWNl
KGJhc2VMZXZlbCwgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9YKS5nZXRX
aWR0aCgpOworICAgICAgICAgICAgdmFyIGlzTWlwbWFwID0gc2dsclJlZmVyZW5jZUNvbnRleHQu
aXNNaXBtYXBGaWx0ZXIodGhpcy5nZXRTYW1wbGVyKCkubWluRmlsdGVyKTsKKyAgICAgICAgICAg
IHZhciBudW1MZXZlbHMgPSBpc01pcG1hcCA/IE1hdGgubWluKHRoaXMuZ2V0TWF4TGV2ZWwoKSAt
IGJhc2VMZXZlbCArIDEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExldmVsczFEKHNp
emUpKSA6IDE7CisKKyAgICAgICAgICAgIGZvciAodmFyIGZhY2UgaW4gdGN1VGV4dHVyZS5DdWJl
RmFjZSkKKyAgICAgICAgICAgICAgICBmYWNlc1t0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdXSA9
IHRoaXMubV9sZXZlbHNbdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXV0uZ2V0TGV2ZWxzKCkuc2xp
Y2UoYmFzZUxldmVsKTsKKworICAgICAgICAgICAgdGhpcy5tX3ZpZXcgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlQ3ViZVZpZXcobnVtTGV2ZWxzLCBmYWNlcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgdGhpcy5tX3ZpZXcgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXcoMCwg
bnVsbCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
cG9zCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBsb2QKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxu
dW1iZXI+fQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJlLnBy
b3RvdHlwZS5zYW1wbGUgPSBmdW5jdGlvbihwb3MsIGxvZCkgeyByZXR1cm4gdGhpcy5tX3ZpZXcu
c2FtcGxlKHRoaXMuZ2V0U2FtcGxlcigpLCBwb3MsIGxvZCkgfTsKKworICAgIC8qKgorICAgICog
QGNvbnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVy
ZX0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5ID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUuY2FsbCh0aGlz
LCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzJEX0FSUkFZKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5Vmlld30gKi8gdGhpcy5tX3Zp
ZXcgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheVZpZXcoMCwgbnVsbCk7CisgICAgICAg
IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUxldmVsQXJyYXl9ICovIHRo
aXMubV9sZXZlbHMgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUxldmVsQXJyYXko
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5U
ZXh0dXJlMkRBcnJheS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHNnbHJSZWZlcmVuY2VDb250
ZXh0LlRleHR1cmUucHJvdG90eXBlKTsKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
MkRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlMkRBcnJheTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5LnBy
b3RvdHlwZS5jbGVhckxldmVscyA9IGZ1bmN0aW9uKCkgeyB0aGlzLm1fbGV2ZWxzLmNsZWFyKCk7
IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICAgICogQHJldHVy
biB7Ym9vbGVhbn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFy
cmF5LnByb3RvdHlwZS5oYXNMZXZlbCA9IGZ1bmN0aW9uKGxldmVsKSB7IHJldHVybiB0aGlzLm1f
bGV2ZWxzLmhhc0xldmVsKGxldmVsKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxldmVsCisgICAgKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfQor
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEQXJyYXkucHJvdG90eXBl
LmdldExldmVsID0gZnVuY3Rpb24obGV2ZWwpIHsgcmV0dXJuIHRoaXMubV9sZXZlbHMuZ2V0TGV2
ZWwobGV2ZWwpOyB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAg
ICAqIEBwYXJhbSB7P3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgICAgKiBAcGFy
YW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBudW1MYXllcnMKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LlRleHR1cmUyREFycmF5LnByb3RvdHlwZS5hbGxvY0xldmVsID0gZnVuY3Rpb24obGV2ZWwsIGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgbnVtTGF5ZXJzKSB7CisgICAgICAgIHRoaXMubV9sZXZlbHMu
YWxsb2NMZXZlbChsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudW1MYXllcnMpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5LnByb3RvdHlwZS5pc0NvbXBsZXRlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZUxldmVs
ID0gdGhpcy5nZXRCYXNlTGV2ZWwoKTsKKworICAgICAgICBpZiAodGhpcy5oYXNMZXZlbChiYXNl
TGV2ZWwpKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9ICovIHZhciBsZXZlbDAgPSB0aGlzLmdldExldmVsKGJhc2VMZXZlbCk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBtaXBtYXAgPSBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5pc01pcG1hcEZpbHRlcih0aGlzLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIpOworCisgICAg
ICAgICAgICBpZiAobWlwbWFwKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0
dXJlLlRleHR1cmVGb3JtYXR9ICovIHZhciBmb3JtYXQgPSBsZXZlbDAuZ2V0Rm9ybWF0KCk7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3ID0gbGV2ZWwwLmdldFdp
ZHRoKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoID0gbGV2
ZWwwLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtTGF5ZXJzID0gbGV2ZWwwLmdldERlcHRoKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBudW1MZXZlbHMgPSBNYXRoLm1pbih0aGlzLmdldE1heExldmVs
KCkgLSBiYXNlTGV2ZWwgKyAxLCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5nZXROdW1NaXBMZXZlbHMy
RCh3LCBoKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDE7IGxldmVs
TmR4IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLmhhc0xldmVsKGJhc2VMZXZlbCArIGxldmVsTmR4KSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgbGV2
ZWwgPSB0aGlzLmdldExldmVsKGJhc2VMZXZlbCArIGxldmVsTmR4KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhwZWN0ZWRXID0gc2dsclJlZmVy
ZW5jZUNvbnRleHQuZ2V0TWlwTGV2ZWxTaXplKHcsIGxldmVsTmR4KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhwZWN0ZWRIID0gc2dsclJlZmVy
ZW5jZUNvbnRleHQuZ2V0TWlwTGV2ZWxTaXplKGgsIGxldmVsTmR4KTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxldmVsLmdldFdpZHRoKCkgIT0gZXhwZWN0ZWRXIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZ2V0SGVpZ2h0KCkgIT0gZXhwZWN0ZWRIIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZ2V0RGVwdGgoKSAhPSBudW1MYXllcnMg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbGV2ZWwuZ2V0Rm9ybWF0KCkuaXNFcXVh
bChmb3JtYXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1
cmUyREFycmF5LnByb3RvdHlwZS51cGRhdGVWaWV3ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZUxldmVsID0gdGhpcy5nZXRCYXNlTGV2ZWwoKTsK
KworICAgICAgICBpZiAodGhpcy5oYXNMZXZlbChiYXNlTGV2ZWwpICYmICF0aGlzLmdldExldmVs
KGJhc2VMZXZlbCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgbnVtYmVyIG9m
IGxldmVscyBpbiBtaXBtYXAgcHlyYW1pZC4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgd2lkdGggPSB0aGlzLmdldExldmVsKGJhc2VMZXZlbCkuZ2V0V2lkdGgoKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gdGhpcy5nZXRMZXZl
bChiYXNlTGV2ZWwpLmdldEhlaWdodCgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB2YXIgaXNNaXBtYXAgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc01pcG1hcEZpbHRlcih0
aGlzLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1MZXZlbHMgPSBpc01pcG1hcCA/IE1hdGgubWluKHRoaXMuZ2V0TWF4TGV2
ZWwoKSAtIGJhc2VMZXZlbCArIDEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExldmVs
czJEKHdpZHRoLCBoZWlnaHQpKSA6IDE7CisKKyAgICAgICAgICAgIHRoaXMubV92aWV3ID0gbmV3
IHRjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3KG51bUxldmVscywgdGhpcy5tX2xldmVscy5n
ZXRMZXZlbHMoKS5zbGljZShiYXNlTGV2ZWwpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB0aGlzLm1fdmlldyA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5VmlldygwLCBudWxs
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwb3MK
KyAgICAgKiBAcGFyYW0ge251bWJlcj19IGxvZAorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59CisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEQXJyYXkucHJv
dG90eXBlLnNhbXBsZSA9IGZ1bmN0aW9uKHBvcywgbG9kKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm1fdmlldy5zYW1wbGUodGhpcy5nZXRTYW1wbGVyKCksIHBvcywgbG9kKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHtzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVy
ZTNEID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUu
Y2FsbCh0aGlzLCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzJEX0FSUkFZ
KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUzRFZpZXd9ICovIHRoaXMu
bV92aWV3ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZTNEVmlldygwLCBudWxsKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheX0gKi8gdGhp
cy5tX2xldmVscyA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlTGV2ZWxBcnJheSgp
OworICAgIH07CisKKyAgICAvKioKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmUzRC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmUucHJvdG90eXBlKTsKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlM0QucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTNEOworCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTNELnByb3RvdHlwZS5jbGVhckxldmVscyA9
IGZ1bmN0aW9uKCkgeyB0aGlzLm1fbGV2ZWxzLmNsZWFyKCk7IH07CisKKyAgICAvKioKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLwor
ICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUzRC5wcm90b3R5cGUuaGFzTGV2ZWwgPSBm
dW5jdGlvbihsZXZlbCkgeyByZXR1cm4gdGhpcy5tX2xldmVscy5oYXNMZXZlbChsZXZlbCk7IH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICAgICogQHJldHVybiB7
dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmUzRC5wcm90b3R5cGUuZ2V0TGV2ZWwgPSBmdW5jdGlvbihsZXZlbCkgeyBy
ZXR1cm4gdGhpcy5tX2xldmVscy5nZXRMZXZlbChsZXZlbCk7IH07CisKKyAgICAvKioKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICAgICogQHBhcmFtIHs/dGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0fSBmb3JtYXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICogQHBhcmFt
IHtudW1iZXJ9IGhlaWdodAorICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlM0QucHJvdG90eXBlLmFsbG9jTGV2ZWwgPSBm
dW5jdGlvbihsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkgeworICAgICAgICB0
aGlzLm1fbGV2ZWxzLmFsbG9jTGV2ZWwobGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAq
LworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUzRC5wcm90b3R5cGUuaXNDb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJhc2VM
ZXZlbCA9IHRoaXMuZ2V0QmFzZUxldmVsKCk7CisKKyAgICAgICAgaWYgKHRoaXMuaGFzTGV2ZWwo
YmFzZUxldmVsKSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVm
ZmVyQWNjZXNzfSAqLyB2YXIgbGV2ZWwwID0gdGhpcy5nZXRMZXZlbChiYXNlTGV2ZWwpOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgbWlwbWFwID0gc2dsclJlZmVyZW5j
ZUNvbnRleHQuaXNNaXBtYXBGaWx0ZXIodGhpcy5nZXRTYW1wbGVyKCkubWluRmlsdGVyKTsKKwor
ICAgICAgICAgICAgaWYgKG1pcG1hcCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgZm9ybWF0ID0gbGV2ZWwwLmdldEZvcm1hdCgp
OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdyA9IGxldmVsMC5n
ZXRXaWR0aCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaCA9
IGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGQgPSBsZXZlbDAuZ2V0RGVwdGgoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG51bUxldmVscyA9IE1hdGgubWluKHRoaXMuZ2V0TWF4TGV2ZWwoKSAt
IGJhc2VMZXZlbCArIDEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExldmVsczNEKHcs
IGgsIGQpKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsTmR4ID0gMTsgbGV2ZWxO
ZHggPCBudW1MZXZlbHM7IGxldmVsTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMuaGFzTGV2ZWwoYmFzZUxldmVsICsgbGV2ZWxOZHgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBsZXZl
bCA9IHRoaXMuZ2V0TGV2ZWwoYmFzZUxldmVsICsgbGV2ZWxOZHgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHBlY3RlZFcgPSBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5nZXRNaXBMZXZlbFNpemUodywgbGV2ZWxOZHgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHBlY3RlZEggPSBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5nZXRNaXBMZXZlbFNpemUoaCwgbGV2ZWxOZHgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHBlY3RlZEQgPSBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5nZXRNaXBMZXZlbFNpemUoZCwgbGV2ZWxOZHgpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGV2ZWwuZ2V0V2lkdGgoKSAhPSBleHBlY3RlZFcgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZXZlbC5nZXRIZWlnaHQoKSAhPSBleHBlY3RlZEggfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5nZXREZXB0aCgpICE9IGV4cGVjdGVkRCB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsZXZlbC5nZXRGb3JtYXQoKS5pc0VxdWFs
KGZvcm1hdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVy
ZTNELnByb3RvdHlwZS51cGRhdGVWaWV3ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgYmFzZUxldmVsID0gdGhpcy5nZXRCYXNlTGV2ZWwoKTsKKworICAg
ICAgICBpZiAodGhpcy5oYXNMZXZlbChiYXNlTGV2ZWwpICYmICF0aGlzLmdldExldmVsKGJhc2VM
ZXZlbCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgbnVtYmVyIG9mIGxldmVs
cyBpbiBtaXBtYXAgcHlyYW1pZC4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgd2lkdGggPSB0aGlzLmdldExldmVsKGJhc2VMZXZlbCkuZ2V0V2lkdGgoKTsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gdGhpcy5nZXRMZXZlbChiYXNl
TGV2ZWwpLmdldEhlaWdodCgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNNaXBtYXAgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc01pcG1hcEZpbHRlcih0aGlzLmdl
dFNhbXBsZXIoKS5taW5GaWx0ZXIpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBudW1MZXZlbHMgPSBpc01pcG1hcCA/IE1hdGgubWluKHRoaXMuZ2V0TWF4TGV2ZWwoKSAt
IGJhc2VMZXZlbCArIDEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldE51bU1pcExldmVsczJEKHdp
ZHRoLCBoZWlnaHQpKSA6IDE7CisKKyAgICAgICAgICAgIHRoaXMubV92aWV3ID0gbmV3IHRjdVRl
eHR1cmUuVGV4dHVyZTNEVmlldyhudW1MZXZlbHMsIHRoaXMubV9sZXZlbHMuZ2V0TGV2ZWxzKCku
c2xpY2UoYmFzZUxldmVsKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5tX3Zp
ZXcgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlM0RWaWV3KDAsIG51bGwpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHBvcworICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gbG9kCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlM0QucHJvdG90eXBlLnNhbXBsZSA9IGZ1bmN0
aW9uKHBvcywgbG9kKSB7IHJldHVybiB0aGlzLm1fdmlldy5zYW1wbGUodGhpcy5nZXRTYW1wbGVy
KCksIHBvcywgbG9kKSB9OworCisgICAgLyoqCisgICAgKiBBIGNvbnRhaW5lciBvYmplY3QgZm9y
IHN0b3Jpbmcgb25lIG9mIHRleHR1cmUgdHlwZXM7CisgICAgKiBAY29uc3RydWN0b3IKKyAgICAq
LworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXIgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkQgfCBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ3ViZXxzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlMkRBcnJheXxzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlM0R9ICovCisgICAgICAgICB0
aGlzLnRleHR1cmUgPSBudWxsOworICAgICAgICAvKiogQHR5cGUgez9zZ2xyUmVmZXJlbmNlQ29u
dGV4dC5UZXh0dXJlVHlwZX0gKi8gdGhpcy50ZXh0dXJlVHlwZSA9IG51bGw7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4gez9zZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlw
ZX0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyLnBy
b3RvdHlwZS5nZXRUeXBlID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLnRleHR1cmVUeXBlOyB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAgICAqIEB0aHJv
d3Mge0Vycm9yfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250
YWluZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgc3dpdGNo
ICh0YXJnZXQpIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAgICAgICAg
ICAgICB0aGlzLnRleHR1cmUgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEKCk7
CisgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlVHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0
LlRleHR1cmVUeXBlLlRZUEVfMkQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJl
ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJlKCk7CisgICAgICAgICAgICAg
ICAgdGhpcy50ZXh0dXJlVHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZ
UEVfQ1VCRV9NQVA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
LlRFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gbmV3IHNn
bHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5KCk7CisgICAgICAgICAgICAgICAgdGhp
cy50ZXh0dXJlVHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZUEVfMkRf
QVJSQVk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlRFWFRV
UkVfM0Q6CisgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gbmV3IHNnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmUzRCgpOworICAgICAgICAgICAgICAgIHRoaXMudGV4dHVyZVR5cGUgPSBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzNEOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgLyogVE9ETzogSW1wbGVtZW50IG90aGVyIHR5cGVzICovCisg
ICAgICAgICAgICAvLyBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVBfQVJSQVk6CisgICAgICAgICAg
ICAvLyAgICAgdGhpcy50ZXh0dXJlVHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVU
eXBlLlRZUEVfQ1VCRV9NQVBfQVJSQVk7CisgICAgICAgICAgICAvLyAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCB0YXJnZXQ6ICcg
KyB0YXJnZXQpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQGVudW0KKyAg
ICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludCA9IHsKKyAgICAg
ICAgQVRUQUNITUVOVFBPSU5UX0NPTE9SMDogMCwKKyAgICAgICAgQVRUQUNITUVOVFBPSU5UX0RF
UFRIOiAxLAorICAgICAgICBBVFRBQ0hNRU5UUE9JTlRfU1RFTkNJTDogMgorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYXR0YWNobWVudAorICAgICAqIEByZXR1cm4g
e3NnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludH0KKyAgICAgKiBAdGhyb3dzIHtF
cnJvcn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5tYXBHTEF0dGFjaG1lbnRQ
b2ludCA9IGZ1bmN0aW9uKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50
KSB7CisgICAgICAgICAgICBjYXNlIGdsLkNPTE9SX0FUVEFDSE1FTlQwOiByZXR1cm4gc2dsclJl
ZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFBvaW50LkFUVEFDSE1FTlRQT0lOVF9DT0xPUjA7Cisg
ICAgICAgICAgICBjYXNlIGdsLkRFUFRIX0FUVEFDSE1FTlQ6IHJldHVybiBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5BdHRhY2htZW50UG9pbnQuQVRUQUNITUVOVFBPSU5UX0RFUFRIOworICAgICAgICAg
ICAgY2FzZSBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQ6IHJldHVybiBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5BdHRhY2htZW50UG9pbnQuQVRUQUNITUVOVFBPSU5UX1NURU5DSUw7CisgICAgICAgICAgICBk
ZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGF0dGFjaG1lbnQgcG9pbnQ6JyArIGF0dGFj
aG1lbnQpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQGVudW0KKyAgICAq
LworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRUeXBlID0geworICAgICAgICBB
VFRBQ0hNRU5UVFlQRV9SRU5ERVJCVUZGRVI6IDAsCisgICAgICAgIEFUVEFDSE1FTlRUWVBFX1RF
WFRVUkU6IDEKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAZW51bQorICAgICovCisgICAgc2ds
clJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0ID0geworICAgICAgICBURVhUQVJHRVRfMkQ6IDAs
CisgICAgICAgIFRFWFRBUkdFVF9DVUJFX01BUF9QT1NJVElWRV9YOiAxLAorICAgICAgICBURVhU
QVJHRVRfQ1VCRV9NQVBfUE9TSVRJVkVfWTogMiwKKyAgICAgICAgVEVYVEFSR0VUX0NVQkVfTUFQ
X1BPU0lUSVZFX1o6IDMsCisgICAgICAgIFRFWFRBUkdFVF9DVUJFX01BUF9ORUdBVElWRV9YOiA0
LAorICAgICAgICBURVhUQVJHRVRfQ1VCRV9NQVBfTkVHQVRJVkVfWTogNSwKKyAgICAgICAgVEVY
VEFSR0VUX0NVQkVfTUFQX05FR0FUSVZFX1o6IDYsCisgICAgICAgIFRFWFRBUkdFVF8yRF9BUlJB
WTogNywKKyAgICAgICAgVEVYVEFSR0VUXzNEOiA4LAorICAgICAgICBURVhUQVJHRVRfQ1VCRV9N
QVBfQVJSQVk6IDkKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4VGFyZ2V0fSB0YXJnZXQKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXh0dXJl
LkN1YmVGYWNlfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LnRleFRhcmdldFRv
RmFjZSA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkgeworICAg
ICAgICAgICAgY2FzZSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUX0NV
QkVfTUFQX05FR0FUSVZFX1g6IHJldHVybiB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05F
R0FUSVZFX1g7CisgICAgICAgICAgICBjYXNlIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdl
dC5URVhUQVJHRVRfQ1VCRV9NQVBfUE9TSVRJVkVfWDogcmV0dXJuIHRjdVRleHR1cmUuQ3ViZUZh
Y2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWDsKKyAgICAgICAgICAgIGNhc2Ugc2dsclJlZmVyZW5jZUNv
bnRleHQuVGV4VGFyZ2V0LlRFWFRBUkdFVF9DVUJFX01BUF9ORUdBVElWRV9ZOiByZXR1cm4gdGN1
VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9ZOworICAgICAgICAgICAgY2FzZSBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUX0NVQkVfTUFQX1BPU0lUSVZF
X1k6IHJldHVybiB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1k7CisgICAg
ICAgICAgICBjYXNlIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldC5URVhUQVJHRVRfQ1VC
RV9NQVBfTkVHQVRJVkVfWjogcmV0dXJuIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVH
QVRJVkVfWjsKKyAgICAgICAgICAgIGNhc2Ugc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0
LlRFWFRBUkdFVF9DVUJFX01BUF9QT1NJVElWRV9aOiByZXR1cm4gdGN1VGV4dHVyZS5DdWJlRmFj
ZS5DVUJFRkFDRV9QT1NJVElWRV9aOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKCdJbnZhbGlkIHRhcmdldCAnICsgdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldH0gdGFy
Z2V0CisgICAgICogQHJldHVybiB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0fQorICAg
ICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1h
cEdMRmJvVGV4VGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgICAgIHN3aXRjaCAodGFy
Z2V0KSB7CisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6IHJldHVybiBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUXzJEOworICAgICAgICAgICAgY2FzZSBnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6IHJldHVybiBzZ2xyUmVmZXJlbmNlQ29udGV4dC5U
ZXhUYXJnZXQuVEVYVEFSR0VUX0NVQkVfTUFQX1BPU0lUSVZFX1g7CisgICAgICAgICAgICBjYXNl
IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWTogcmV0dXJuIHNnbHJSZWZlcmVuY2VDb250
ZXh0LlRleFRhcmdldC5URVhUQVJHRVRfQ1VCRV9NQVBfUE9TSVRJVkVfWTsKKyAgICAgICAgICAg
IGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOiByZXR1cm4gc2dsclJlZmVyZW5j
ZUNvbnRleHQuVGV4VGFyZ2V0LlRFWFRBUkdFVF9DVUJFX01BUF9QT1NJVElWRV9aOworICAgICAg
ICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6IHJldHVybiBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUX0NVQkVfTUFQX05FR0FUSVZFX1g7Cisg
ICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWTogcmV0dXJuIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldC5URVhUQVJHRVRfQ1VCRV9NQVBfTkVHQVRJVkVf
WTsKKyAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOiByZXR1
cm4gc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0LlRFWFRBUkdFVF9DVUJFX01BUF9ORUdB
VElWRV9aOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdXcm9uZyB0ZXh0
dXJlIHRhcmdldDonICsgdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNo
bWVudCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUgez9zZ2xyUmVmZXJlbmNlQ29u
dGV4dC5BdHRhY2htZW50VHlwZX0gKi8gdGhpcy50eXBlID0gbnVsbDsKKyAgICAgICAgLyoqIEB0
eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlbmRlcmJ1ZmZlcn0gKi8gdGhpcy5vYmplY3QgPSBudWxsOyAvLyBUT0RPOiBmaXgg
cmVzZXJ2ZWQgd29yZAorICAgICAgICAvKiogQHR5cGUgez9zZ2xyUmVmZXJlbmNlQ29udGV4dC5U
ZXhUYXJnZXR9ICovIHRoaXMudGV4VGFyZ2V0ID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHRoaXMubGV2ZWwgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5sYXllciA9IDA7CisgICAgfTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisg
ICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAvKiogQHR5cGUge0FycmF5PHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1l
bnQ+fSAqLyB0aGlzLm1fYXR0YWNobWVudHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIga2V5IGlu
IHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludCkKKyAgICAgICAgICAgIHRoaXMu
bV9hdHRhY2htZW50c1tzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50UG9pbnRba2V5XV0g
PSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudCgpOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFBvaW50fSBw
b2ludAorICAgICogQHJldHVybiB7c2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudH0KKyAg
ICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1lYnVmZmVyLnByb3RvdHlwZS5nZXRB
dHRhY2htZW50ID0gZnVuY3Rpb24ocG9pbnQpIHsgcmV0dXJuIHRoaXMubV9hdHRhY2htZW50c1tw
b2ludF07IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNvbnRleHQu
QXR0YWNobWVudFBvaW50fSBwb2ludAorICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4
dC5BdHRhY2htZW50fSBhdHRhY2htZW50CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5GcmFtZWJ1ZmZlci5wcm90b3R5cGUuc2V0QXR0YWNobWVudCA9IGZ1bmN0aW9uKHBvaW50LCBh
dHRhY2htZW50KSB7IHRoaXMubV9hdHRhY2htZW50c1twb2ludF0gPSBhdHRhY2htZW50OyB9Owor
CisgICAgLy8gLyoqCisgICAgLy8gICogQGVudW0KKyAgICAvLyAgKi8KKyAgICAvLyB2YXIgRm9y
bWF0ID0geworICAgIC8vICAgICBGT1JNQVRfREVQVEhfQ09NUE9ORU5UMTY6IDAsCisgICAgLy8g
ICAgIEZPUk1BVF9SR0JBNDogMSwKKyAgICAvLyAgICAgRk9STUFUX1JHQjVfQTE6IDIsCisgICAg
Ly8gICAgIEZPUk1BVF9SR0I1NjU6IDMsCisgICAgLy8gICAgIEZPUk1BVF9TVEVOQ0lMX0lOREVY
ODogNAorICAgIC8vIH07CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVuZGVyYnVmZmVyID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHRoaXMubV9kYXRhOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSBmb3JtYXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICogQHBhcmFtIHtudW1i
ZXJ9IGhlaWdodAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVuZGVyYnVmZmVy
LnByb3RvdHlwZS5zZXRTdG9yYWdlID0gZnVuY3Rpb24oZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7
CisgICAgICAgIHRoaXMubV9kYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251
bWJlcn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZW5kZXJidWZmZXIucHJv
dG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZGF0YS5nZXRXaWR0
aCgpOyB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlbmRlcmJ1ZmZlci5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0g
ZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZGF0YS5nZXRIZWlnaHQoKTsgfTsKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4gez90Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9CisgICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVuZGVyYnVmZmVyLnByb3RvdHlwZS5nZXRGb3JtYXQg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9kYXRhLmdldEZvcm1hdCgpOyB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30KKyAgICAg
Ki8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZW5kZXJidWZmZXIucHJvdG90eXBlLmdldEFj
Y2VzcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2RhdGEuZ2V0QWNjZXNzKCk7IH07CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWF4
VmVydGV4QXR0cmlicworICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlZlcnRleEFy
cmF5ID0gZnVuY3Rpb24obWF4VmVydGV4QXR0cmlicykgeworICAgICAgICAvKiogQHR5cGUge3Nn
bHJSZWZlcmVuY2VDb250ZXh0LkRhdGFCdWZmZXJ9ICovIHRoaXMubV9lbGVtZW50QXJyYXlCdWZm
ZXJCaW5kaW5nID0gbnVsbDsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlZlcnRleEFycmF5LlZlcnRleEF0dHJpYkFycmF5Pn0gKi90aGlzLm1fYXJyYXlz
ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4VmVydGV4QXR0cmliczsgaSsr
KQorICAgICAgICAgICAgdGhpcy5tX2FycmF5cy5wdXNoKG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5WZXJ0ZXhBcnJheS5WZXJ0ZXhBdHRyaWJBcnJheSgpKTsKKyAgICB9OworCisgICAgLyoqIEBj
b25zdHJ1Y3RvciAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlZlcnRleEFycmF5LlZlcnRl
eEF0dHJpYkFycmF5ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNl
OworICAgICAgICB0aGlzLnNpemUgPSA0OworICAgICAgICB0aGlzLnN0cmlkZSA9IDA7CisgICAg
ICAgIHRoaXMudHlwZSA9IGdsLkZMT0FUOworCisgICAgICAgIHRoaXMubm9ybWFsaXplZCA9IGZh
bHNlOworICAgICAgICB0aGlzLmludGVnZXIgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5kaXZpc29y
ID0gMDsKKyAgICAgICAgdGhpcy5vZmZzZXQgPSAwOworICAgICAgICB0aGlzLmJ1ZmZlckJpbmRp
bmcgPSBudWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuRGF0YUJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAvKiogQHR5cGUgez9BcnJheUJ1ZmZlcn0gKi8gdGhpcy5tX2RhdGEgPSBudWxsOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LkRhdGFCdWZmZXIucHJvdG90eXBlLnNldFN0b3JhZ2UgPSBm
dW5jdGlvbihzaXplKSB7dGhpcy5tX2RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7IH07CisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHQuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNpemUgPSAwOworICAgICAgICBpZiAo
dGhpcy5tX2RhdGEpCisgICAgICAgICAgICBzaXplID0gdGhpcy5tX2RhdGEuYnl0ZUxlbmd0aDsK
KyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
ez9BcnJheUJ1ZmZlcn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVm
ZmVyLnByb3RvdHlwZS5nZXREYXRhID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZGF0YTsg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ8Z29vZy5OdW1iZXJBcnJh
eX0gZGF0YQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LkRhdGFCdWZmZXIucHJv
dG90eXBlLnNldERhdGEgPSBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXlCdWZmZXJ9ICovIHZhciBidWZmZXI7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgb2Zmc2V0ID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBieXRlTGVu
Z3RoID0gZGF0YS5ieXRlTGVuZ3RoOworICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5
QnVmZmVyKQorICAgICAgICAgICAgYnVmZmVyID0gZGF0YTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKKyAgICAgICAgICAgIG9mZnNldCA9IGRhdGEu
Ynl0ZU9mZnNldDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJ1ZmZlcicpOworCisgICAgICAgIHRoaXMubV9k
YXRhID0gYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0g
e2dvb2cuTnVtYmVyQXJyYXl9IGRhdGEKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5EYXRhQnVmZmVyLnByb3RvdHlwZS5zZXRTdWJEYXRhID0gZnVuY3Rpb24ob2Zmc2V0LCBkYXRh
KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJ9ICovIHZhciBidWZmZXI7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3JjT2Zmc2V0ID0gMDsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBieXRlTGVuZ3RoID0gZGF0YS5ieXRlTGVuZ3RoOworICAg
ICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKQorICAgICAgICAgICAgYnVmZmVy
ID0gZGF0YTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXIgPSBkYXRhLmJ1ZmZl
cjsKKyAgICAgICAgICAgIHNyY09mZnNldCA9IGRhdGEuYnl0ZU9mZnNldDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZh
bGlkIGJ1ZmZlcicpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z29vZy5OdW1iZXJBcnJheX0gKi8g
dmFyIHNyYyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgc3JjT2Zmc2V0LCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtnb29nLk51bWJlckFycmF5fSAqLyB2YXIgZHN0ID0gbmV3IFVp
bnQ4QXJyYXkodGhpcy5tX2RhdGEsIG9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGRzdC5z
ZXQoc3JjKTsKKyAgICB9OworCisgICAgLy8gLyoqCisgICAgLy8gICogQGNvbnN0cnVjdG9yCisg
ICAgLy8gICovCisgICAgLy8gdmFyIE9iamVjdE1hbmFnZXIgPSBmdW5jdGlvbigpIHsKKyAgICAv
LyAgICAgdGhpcy5tX29iamVjdHMgPSB7fTsKKyAgICAvLyB9OworCisgICAgLy8gT2JqZWN0TWFu
YWdlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24ob2JqKSB7CisgICAgLy8gICAgIHZhciBu
YW1lID0gb2JqLmdldE5hbWUoKTsKKyAgICAvLyAgICAgaWYgKCFuYW1lKQorICAgIC8vICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5zZXJ0IHVubmFtZWQgb2JqZWN0Iik7CisgICAg
Ly8gICAgIHRoaXMubV9vYmplY3RzW25hbWVdID0gb2JqOworICAgIC8vIH07CisKKyAgICAvLyBP
YmplY3RNYW5hZ2VyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gdGhp
cy5tX29iamVjdHNbbmFtZV07IH07CisKKyAgICAvLyBPYmplY3RNYW5hZ2VyLnByb3RvdHlwZS5h
Y3F1aXJlUmVmZXJlbmNlID0gZnVuY3Rpb24ob2JqKSB7CisgICAgLy8gICAgIGlmICh0aGlzLmZp
bmQob2JqLmdldE5hbWUoKSkgIT09IG9iaikKKyAgICAvLyAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiT2JqZWN0IGlzIG5vdCBpbiB0aGUgb2JqZWN0IG1hbmFnZXIiKTsKKyAgICAvLyAgICAgb2Jq
LmluY1JlZkNvdW50KCk7CisgICAgLy8gfTsKKworICAgIC8vIE9iamVjdE1hbmFnZXIucHJvdG90
eXBlLnJlbGVhc2VSZWZlcmVuY2UgPSBmdW5jdGlvbihvYmopIHsKKyAgICAvLyAgICAgaWYgKHRo
aXMuZmluZChvYmouZ2V0TmFtZSgpKSAhPT0gb2JqKQorICAgIC8vICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJPYmplY3QgaXMgbm90IGluIHRoZSBvYmplY3QgbWFuYWdlciIpOworCisgICAgLy8g
ICAgIG9iai5kZWNSZWZDb3VudCgpOworCisgICAgLy8gICAgIGlmIChvYmouZ2V0UmVmQ291bnQo
KSA9PSAwKQorICAgIC8vICAgICAgICAgZGVsZXRlIHRoaXMubV9vYmplY3RzW29iai5nZXROYW1l
KCldOworICAgIC8vIH07CisKKyAgICAvLyBPYmplY3RNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGwg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9vYmplY3RzOyB9OworCisgICAgLyoqCisgICAg
KiBAY29uc3RydWN0b3IKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVV
bml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7P3NnbHJSZWZlcmVuY2VDb250
ZXh0LlRleHR1cmVDb250YWluZXJ9ICovIHRoaXMudGV4MkRCaW5kaW5nID0gbnVsbDsKKyAgICAg
ICAgLyoqIEB0eXBlIHs/c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gKi8g
dGhpcy50ZXhDdWJlQmluZGluZyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7P3NnbHJSZWZl
cmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9ICovIHRoaXMudGV4MkRBcnJheUJpbmRpbmcg
PSBudWxsOworICAgICAgICAvKiogQHR5cGUgez9zZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
Q29udGFpbmVyfSAqLyB0aGlzLnRleDNEQmluZGluZyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7P3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9ICovIHRoaXMudGV4Q3Vi
ZUFycmF5QmluZGluZyA9IG51bGw7CisgICAgfTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVj
dG9yCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5TdGVuY2lsU3RhdGUgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuZnVuYyA9IGdsLkFM
V0FZUzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMucmVmID0gMDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMub3BNYXNrID0gfjA7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm9wU3RlbmNpbEZhaWwgPSBnbC5LRUVQOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5vcERlcHRoRmFpbCA9IGdsLktFRVA7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm9wRGVwdGhQYXNzID0gZ2wuS0VFUDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMud3JpdGVNYXNrID0gfjA7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9IHBpeGVs
Rm10CisgICAgICogQHJldHVybiB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fQorICAgICAqIEB0
aHJvd3Mge0Vycm9yfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LnRvVGV4dHVy
ZUZvcm1hdCA9IGZ1bmN0aW9uKHBpeGVsRm10KSB7CisgICAgICAgIGlmIChwaXhlbEZtdC5lcXVh
bHMoOCwgOCwgOCwgOCkpCisgICAgICAgICAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVy
ZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOT1JNX0lOVDgpOworICAgICAgICBlbHNlIGlmIChwaXhlbEZtdC5lcXVhbHMoOCwgOCwg
OCwgMCkpCisgICAgICAgICAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0IsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1f
SU5UOCk7CisgICAgICAgIGVsc2UgaWYgKHBpeGVsRm10LmVxdWFscyg0LCA0LCA0LCA0KSkKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNDQ0
NCk7CisgICAgICAgIGVsc2UgaWYgKHBpeGVsRm10LmVxdWFscyg1LCA1LCA1LCAxKSkKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fU0hPUlRfNTU1MSk7
CisgICAgICAgIGVsc2UgaWYgKHBpeGVsRm10LmVxdWFscyg1LCA2LCA1LCAwKSkKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9TSE9SVF81NjUpOworCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IG1hcCBwaXhlbCBmb3JtYXQ6JyArIHBp
eGVsRm10KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRo
Qml0cworICAgICAqIEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0KKyAgICAgKiBA
dGhyb3dzIHtFcnJvcn0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5nZXREZXB0
aEZvcm1hdCA9IGZ1bmN0aW9uKGRlcHRoQml0cykgeworICAgICAgICBzd2l0Y2ggKGRlcHRoQml0
cykgeworICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZv
cm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5ELCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
T1JNX0lOVDgpOworICAgICAgICAgICAgY2FzZSAxNjogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRCwgdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5VTk9STV9JTlQxNik7CisgICAgICAgICAgICBjYXNlIDI0OiByZXR1cm4gbmV3IHRjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5ELCB0Y3VUZXh0dXJl
LkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8yNF84KTsKKyAgICAgICAgICAgIGNhc2UgMzI6IHJl
dHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkQsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQpOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1hcCBkZXB0aCBidWZmZXIg
Zm9ybWF0LCBiaXRzOiAiICsgZGVwdGhCaXRzKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RlbmNpbEJpdHMKKyAgICAgKiBAcmV0dXJuIHt0
Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9CisgICAgICogQHRocm93cyB7RXJyb3J9CisgICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0U3RlbmNpbEZvcm1hdCA9IGZ1bmN0aW9uKHN0
ZW5jaWxCaXRzKSB7CisgICAgICAgIHN3aXRjaCAoc3RlbmNpbEJpdHMpIHsKKyAgICAgICAgICAg
IGNhc2UgODogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5D
aGFubmVsT3JkZXIuUywgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4KTsKKyAg
ICAgICAgICAgIGNhc2UgMTY6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlMsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURf
SU5UMTYpOworICAgICAgICAgICAgY2FzZSAyNDogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1
cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUywgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5VTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgICAgICBjYXNlIDMyOiByZXR1cm4gbmV3IHRj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TLCB0Y3VUZXh0
dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtYXAgc3RlbmNpbCBidWZmZXIg
Zm9ybWF0LCBiaXRzOiAiICsgc3RlbmNpbEJpdHMpOworICAgICAgICB9CisgICAgfTsKKworICAg
IC8qKgorICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAcGFyYW0ge3RjdVBpeGVsRm9ybWF0LlBp
eGVsRm9ybWF0fSBjb2xvckJpdHMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aEJpdHMKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVuY2lsQml0cworICAgICogQHBhcmFtIHtudW1iZXJ9IHdp
ZHRoCisgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgKiBAcGFyYW0ge251bWJlcj19
IHNhbXBsZXNfCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250
ZXh0QnVmZmVycyA9IGZ1bmN0aW9uKGNvbG9yQml0cywgZGVwdGhCaXRzLCBzdGVuY2lsQml0cywg
d2lkdGgsIGhlaWdodCwgc2FtcGxlc18pIHsKKyAgICAgICAgaWYgKHNhbXBsZXNfID09PSB1bmRl
ZmluZWQpCisgICAgICAgICAgICBzYW1wbGVzXyA9IDE7CisKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBzYW1wbGVzID0gc2FtcGxlc187CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHRoaXMubV9jb2xvcmJ1ZmZlciA9IG5ldyB0Y3VUZXh0
dXJlLlRleHR1cmVMZXZlbChzZ2xyUmVmZXJlbmNlQ29udGV4dC50b1RleHR1cmVGb3JtYXQoY29s
b3JCaXRzKSwgc2FtcGxlcywgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgaWYgKGRlcHRoQml0
cyA+IDApCisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUxldmVsfSAq
LyB0aGlzLm1fZGVwdGhidWZmZXIgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwoc2dsclJl
ZmVyZW5jZUNvbnRleHQuZ2V0RGVwdGhGb3JtYXQoZGVwdGhCaXRzKSwgc2FtcGxlcywgd2lkdGgs
IGhlaWdodCk7CisKKyAgICAgICAgaWYgKHN0ZW5jaWxCaXRzID4gMCkKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHRoaXMubV9zdGVuY2lsYnVmZmVy
ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldFN0
ZW5jaWxGb3JtYXQoc3RlbmNpbEJpdHMpLCBzYW1wbGVzLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNj
ZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9CisgICAgICovCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dEJ1ZmZlcnMucHJvdG90eXBlLmdldENvbG9yYnVm
ZmVyID0gZnVuY3Rpb24oKSB7IHJldHVybiByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3Mu
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5mcm9tTXVsdGlzYW1wbGVBY2Nlc3ModGhpcy5t
X2NvbG9yYnVmZmVyLmdldEFjY2VzcygpKTsgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
ez9yck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFj
Y2Vzc30KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0
QnVmZmVycy5wcm90b3R5cGUuZ2V0RGVwdGhidWZmZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMubV9kZXB0aGJ1ZmZlciAhPT0gdW5kZWZpbmVkID8gcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVy
QWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuZnJvbU11bHRpc2FtcGxlQWNjZXNz
KHRoaXMubV9kZXB0aGJ1ZmZlci5nZXRBY2Nlc3MoKSkgOiBudWxsOyB9OworCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7P3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBs
ZVBpeGVsQnVmZmVyQWNjZXNzfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJl
ZmVyZW5jZUNvbnRleHRCdWZmZXJzLnByb3RvdHlwZS5nZXRTdGVuY2lsYnVmZmVyID0gZnVuY3Rp
b24oKSB7IHJldHVybiB0aGlzLm1fc3RlbmNpbGJ1ZmZlciAhPT0gdW5kZWZpbmVkID8gcnJNdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuZnJv
bU11bHRpc2FtcGxlQWNjZXNzKHRoaXMubV9zdGVuY2lsYnVmZmVyLmdldEFjY2VzcygpKSA6IG51
bGw7IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dExpbWl0c30gbGltaXRzCisgICAgKiBAcGFyYW0ge3JyTXVsdGlzYW1wbGVQ
aXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfSBjb2xvcmJ1ZmZl
cgorICAgICogQHBhcmFtIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1w
bGVQaXhlbEJ1ZmZlckFjY2Vzc30gZGVwdGhidWZmZXIKKyAgICAqIEBwYXJhbSB7cnJNdWx0aXNh
bXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9IHN0ZW5j
aWxidWZmZXIKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNv
bnRleHQuUmVmZXJlbmNlQ29udGV4dCA9IGZ1bmN0aW9uKGxpbWl0cywgY29sb3JidWZmZXIsIGRl
cHRoYnVmZmVyLCBzdGVuY2lsYnVmZmVyKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dExpbWl0c30gKi8gdGhpcy5tX2xpbWl0cyA9IGxp
bWl0czsKKyAgICAgICAgLyoqIEB0eXBlIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3Mu
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdGhpcy5tX2RlZmF1bHRDb2xvcmJ1ZmZl
ciA9IGNvbG9yYnVmZmVyOworICAgICAgICAvKiogQHR5cGUge3JyTXVsdGlzYW1wbGVQaXhlbEJ1
ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfSAqLyB0aGlzLm1fZGVmYXVs
dERlcHRoYnVmZmVyID0gZGVwdGhidWZmZXI7CisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNh
bXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHRo
aXMubV9kZWZhdWx0U3RlbmNpbGJ1ZmZlciA9IHN0ZW5jaWxidWZmZXI7CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3ZpZXdwb3J0ID0gWzAsIDAsIGNvbG9yYnVm
ZmVyLnJhdygpLmdldEhlaWdodCgpLCBjb2xvcmJ1ZmZlci5yYXcoKS5nZXREZXB0aCgpXTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVW5pdD59
ICovIHRoaXMubV90ZXh0dXJlVW5pdHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1fbGltaXRzLm1heFRleHR1cmVJbWFnZVVuaXRzOyBpKyspCisgICAgICAgICAgICB0
aGlzLm1fdGV4dHVyZVVuaXRzLnB1c2gobmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVV
bml0KCkpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2FjdGl2ZVRleHR1
cmUgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2xhc3RFcnJvciA9
IGdsLk5PX0VSUk9SOworICAgICAgICAvLyB0aGlzLm1fdGV4dHVyZXMgPSBuZXcgT2JqZWN0TWFu
YWdlcigpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3BpeGVsVW5wYWNr
Um93TGVuZ3RoID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9waXhl
bFVucGFja1NraXBSb3dzID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bV9waXhlbFVucGFja1NraXBQaXhlbHMgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX3BpeGVsVW5wYWNrSW1hZ2VIZWlnaHQgPSAwOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdGhpcy5tX3BpeGVsVW5wYWNrU2tpcEltYWdlcyA9IDA7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fcGl4ZWxVbnBhY2tBbGlnbm1lbnQgPSA0OworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3BpeGVsUGFja0FsaWdubWVudCA9IDQ7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2NsZWFyQ29sb3Ig
PSBbMCwgMCwgMCwgMF07CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fY2xl
YXJEZXB0aCA9IDE7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fY2xlYXJT
dGVuY2lsID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1f
c2Npc3NvckJveCA9IHRoaXMubV92aWV3cG9ydDsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB0aGlzLm1fYmxlbmRFbmFibGVkID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdGhpcy5tX3NjaXNzb3JFbmFibGVkID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX2RlcHRoVGVzdEVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLm1fc3RlbmNpbFRlc3RFbmFibGVkID0gZmFsc2U7
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX3BvbHlnb25PZmZzZXRGaWxs
RW5hYmxlZCA9IGZhbHNlOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV9w
cmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleCA9IHRydWU7IC8vYWx3YXlzIG9uCisgICAgICAgIC8q
KiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX3ByaW1pdGl2ZVJlc3RhcnRTZXR0YWJsZUluZGV4
ID0gdHJ1ZTsgLy9hbHdheXMgb24KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzZ2xyUmVmZXJl
bmNlQ29udGV4dC5TdGVuY2lsU3RhdGU+fSAqLyB0aGlzLm1fc3RlbmNpbCA9IFtdOworICAgICAg
ICBmb3IgKHZhciB0eXBlIGluIHJyRGVmcy5GYWNlVHlwZSkKKyAgICAgICAgICAgIHRoaXMubV9z
dGVuY2lsW3JyRGVmcy5GYWNlVHlwZVt0eXBlXV0gPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQu
U3RlbmNpbFN0YXRlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fZGVw
dGhGdW5jID0gZ2wuTEVTUzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9k
ZXB0aFJhbmdlTmVhciA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1f
ZGVwdGhSYW5nZUZhciA9IDE7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1f
cG9seWdvbk9mZnNldEZhY3RvciA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0
aGlzLm1fcG9seWdvbk9mZnNldFVuaXRzID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMubV9ibGVuZE1vZGVSR0IgPSBnbC5GVU5DX0FERDsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubV9ibGVuZE1vZGVBbHBoYSA9IGdsLkZVTkNfQUREOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2JsZW5kRmFjdG9yU3JjUkdCID0gZ2wuT05F
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2JsZW5kRmFjdG9yRHN0UkdC
ID0gZ2wuWkVSTzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9ibGVuZEZh
Y3RvclNyY0FscGhhID0gZ2wuT05FOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX2JsZW5kRmFjdG9yRHN0QWxwaGEgPSBnbC5aRVJPOworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHRoaXMubV9ibGVuZENvbG9yID0gWzAsIDAsIDAsIDBdOworICAgICAg
ICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV9zUkdCVXBkYXRlRW5hYmxlZCA9IHRydWU7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHRoaXMubV9jb2xvck1hc2sg
PSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0g
Ki8gdGhpcy5tX2RlcHRoTWFzayA9IHRydWU7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVmVydGV4QXJyYXl9ICovIHRoaXMubV9kZWZhdWx0VkFPID0gbmV3IHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlZlcnRleEFycmF5KHRoaXMubV9saW1pdHMubWF4VmVydGV4QXR0cmli
cyk7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVmVydGV4QXJyYXl9
ICovIHRoaXMubV92ZXJ0ZXhBcnJheUJpbmRpbmcgPSB0aGlzLm1fZGVmYXVsdFZBTzsKKyAgICAg
ICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfSAqLyB0aGlzLm1f
YXJyYXlCdWZmZXJCaW5kaW5nID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJl
bmNlQ29udGV4dC5EYXRhQnVmZmVyfSAqLyB0aGlzLm1fY29weVJlYWRCdWZmZXJCaW5kaW5nID0g
bnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVy
fSAqLyB0aGlzLm1fY29weVdyaXRlQnVmZmVyQmluZGluZyA9IG51bGw7CisgICAgICAgIC8qKiBA
dHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuRGF0YUJ1ZmZlcn0gKi8gdGhpcy5tX2RyYXdJbmRp
cmVjdEJ1ZmZlckJpbmRpbmcgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVu
Y2VDb250ZXh0LkRhdGFCdWZmZXJ9ICovIHRoaXMubV9waXhlbFBhY2tCdWZmZXJCaW5kaW5nID0g
bnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVy
fSAqLyB0aGlzLm1fcGl4ZWxVbnBhY2tCdWZmZXJCaW5kaW5nID0gbnVsbDsKKyAgICAgICAgLyoq
IEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfSAqLyB0aGlzLm1fdHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5nID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xy
UmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfSAqLyB0aGlzLm1fdW5pZm9ybUJ1ZmZlckJpbmRp
bmcgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1l
YnVmZmVyfSAqLyB0aGlzLm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZyA9IG51bGw7CisgICAgICAg
IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuRnJhbWVidWZmZXJ9ICovIHRoaXMubV9k
cmF3RnJhbWVidWZmZXJCaW5kaW5nID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5SZW5kZXJidWZmZXJ9ICovIHRoaXMubV9yZW5kZXJidWZmZXJCaW5kaW5n
ID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9n
cmFtfSAqLyB0aGlzLm1fY3VycmVudFByb2dyYW0gPSBudWxsOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjND59ICovIHRoaXMubV9jdXJyZW50QXR0
cmlicyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubV9saW1pdHMubWF4
VmVydGV4QXR0cmliczsgaSsrKQorICAgICAgICAgICAgdGhpcy5tX2N1cnJlbnRBdHRyaWJzLnB1
c2gobmV3IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjNCgpKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubV9saW5lV2lkdGggPSAxOworCisgICAgICAgIC8qKiBAdHlwZSB7
c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gKi8gdGhpcy5tX2VtcHR5VGV4
MkQgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcigpOworICAgICAg
ICB0aGlzLm1fZW1wdHlUZXgyRC5pbml0KGdsLlRFWFRVUkVfMkQpOworICAgICAgICB0aGlzLm1f
ZW1wdHlUZXgyRC50ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFwUyA9IHRjdVRleHR1cmUuV3JhcE1v
ZGUuQ0xBTVBfVE9fRURHRTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkQudGV4dHVyZS5nZXRT
YW1wbGVyKCkud3JhcFQgPSB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0U7CisgICAg
ICAgIHRoaXMubV9lbXB0eVRleDJELnRleHR1cmUuZ2V0U2FtcGxlcigpLm1pbkZpbHRlciA9IHRj
dVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworICAgICAgICB0aGlzLm1fZW1wdHlUZXgyRC50
ZXh0dXJlLmdldFNhbXBsZXIoKS5tYWdGaWx0ZXIgPSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVB
UkVTVDsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkQudGV4dHVyZS5hbGxvY0xldmVsKDAsIG5l
dyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwg
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgMSwgMSk7CisgICAgICAgIHRoaXMu
bV9lbXB0eVRleDJELnRleHR1cmUuZ2V0TGV2ZWwoMCkuc2V0UGl4ZWwoWzAsIDAsIDAsIDFdLCAw
LCAwKTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkQudGV4dHVyZS51cGRhdGVWaWV3KCk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVy
fSAqLyB0aGlzLm1fZW1wdHlUZXhDdWJlID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1
cmVDb250YWluZXIoKTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4Q3ViZS5pbml0KGdsLlRFWFRV
UkVfQ1VCRV9NQVApOworICAgICAgICB0aGlzLm1fZW1wdHlUZXhDdWJlLnRleHR1cmUuZ2V0U2Ft
cGxlcigpLndyYXBTID0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgICAg
ICB0aGlzLm1fZW1wdHlUZXhDdWJlLnRleHR1cmUuZ2V0U2FtcGxlcigpLndyYXBUID0gdGN1VGV4
dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgICAgICB0aGlzLm1fZW1wdHlUZXhDdWJl
LnRleHR1cmUuZ2V0U2FtcGxlcigpLm1pbkZpbHRlciA9IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5O
RUFSRVNUOworICAgICAgICB0aGlzLm1fZW1wdHlUZXhDdWJlLnRleHR1cmUuZ2V0U2FtcGxlcigp
Lm1hZ0ZpbHRlciA9IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworCisgICAgICAgIGZv
ciAodmFyIGZhY2UgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgdGhpcy5t
X2VtcHR5VGV4Q3ViZS50ZXh0dXJlLmFsbG9jTGV2ZWwoMCwgdGN1VGV4dHVyZS5DdWJlRmFjZVtm
YWNlXSwKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5U
OCksIDEsIDEpOworICAgICAgICAgICAgdGhpcy5tX2VtcHR5VGV4Q3ViZS50ZXh0dXJlLmdldEZh
Y2UoMCwgdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXSkuc2V0UGl4ZWwoWzAsIDAsIDAsIDFdLCAw
LCAwKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm1fZW1wdHlUZXhDdWJlLnRleHR1cmUudXBk
YXRlVmlldygpOworCisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4
dHVyZUNvbnRhaW5lcn0gKi8gdGhpcy5tX2VtcHR5VGV4MkRBcnJheSA9IG5ldyBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyKCk7CisgICAgICAgIHRoaXMubV9lbXB0eVRleDJE
QXJyYXkuaW5pdChnbC5URVhUVVJFXzJEX0FSUkFZKTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4
MkRBcnJheS50ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFwUyA9IHRjdVRleHR1cmUuV3JhcE1vZGUu
Q0xBTVBfVE9fRURHRTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkRBcnJheS50ZXh0dXJlLmdl
dFNhbXBsZXIoKS53cmFwVCA9IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRTsKKyAg
ICAgICAgdGhpcy5tX2VtcHR5VGV4MkRBcnJheS50ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFwUiA9
IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRTsKKyAgICAgICAgdGhpcy5tX2VtcHR5
VGV4MkRBcnJheS50ZXh0dXJlLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIgPSB0Y3VUZXh0dXJlLkZp
bHRlck1vZGUuTkVBUkVTVDsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkRBcnJheS50ZXh0dXJl
LmdldFNhbXBsZXIoKS5tYWdGaWx0ZXIgPSB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVDsK
KyAgICAgICAgdGhpcy5tX2VtcHR5VGV4MkRBcnJheS50ZXh0dXJlLmFsbG9jTGV2ZWwoMCwgbmV3
IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0
Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpLCAxLCAxKTsKKyAgICAgICAgdGhpcy5t
X2VtcHR5VGV4MkRBcnJheS50ZXh0dXJlLmdldExldmVsKDApLnNldFBpeGVsKFswLCAwLCAwLCAx
XSwgMCwgMCk7CisgICAgICAgIHRoaXMubV9lbXB0eVRleDJEQXJyYXkudGV4dHVyZS51cGRhdGVW
aWV3KCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
Q29udGFpbmVyfSAqLyB0aGlzLm1fZW1wdHlUZXgzRCA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5UZXh0dXJlQ29udGFpbmVyKCk7CisgICAgICAgIHRoaXMubV9lbXB0eVRleDNELmluaXQoZ2wu
VEVYVFVSRV8zRCk7CisgICAgICAgIHRoaXMubV9lbXB0eVRleDNELnRleHR1cmUuZ2V0U2FtcGxl
cigpLndyYXBTID0gdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgICAgICB0
aGlzLm1fZW1wdHlUZXgzRC50ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFwVCA9IHRjdVRleHR1cmUu
V3JhcE1vZGUuQ0xBTVBfVE9fRURHRTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4M0QudGV4dHVy
ZS5nZXRTYW1wbGVyKCkud3JhcFIgPSB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0U7
CisgICAgICAgIHRoaXMubV9lbXB0eVRleDNELnRleHR1cmUuZ2V0U2FtcGxlcigpLm1pbkZpbHRl
ciA9IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworICAgICAgICB0aGlzLm1fZW1wdHlU
ZXgzRC50ZXh0dXJlLmdldFNhbXBsZXIoKS5tYWdGaWx0ZXIgPSB0Y3VUZXh0dXJlLkZpbHRlck1v
ZGUuTkVBUkVTVDsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4M0QudGV4dHVyZS5hbGxvY0xldmVs
KDAsIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwgMSwgMSk7CisgICAgICAg
IHRoaXMubV9lbXB0eVRleDNELnRleHR1cmUuZ2V0TGV2ZWwoMCkuc2V0UGl4ZWwoWzAsIDAsIDAs
IDFdLCAwLCAwKTsKKyAgICAgICAgdGhpcy5tX2VtcHR5VGV4M0QudGV4dHVyZS51cGRhdGVWaWV3
KCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlw
ZX0gKi8gdGhpcy5tX3R5cGU7CisKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlz
Lm1faW1tdXRhYmxlOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAq
LyB0aGlzLm1fc2FtcGxlcjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9i
YXNlTGV2ZWw7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbWF4TGV2ZWw7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5nZXRXaWR0
aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2RlZmF1bHRDb2xvcmJ1ZmZlci5yYXcoKS5n
ZXRIZWlnaHQoKTsgfTsKKworICAgIC8qKgorICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZ2V0
SGVpZ2h0ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZGVmYXVsdENvbG9yYnVmZmVyLnJh
dygpLmdldERlcHRoKCk7IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Cisg
ICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAg
KiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS52aWV3cG9ydCA9IGZ1bmN0aW9uKHgsIHksIHdp
ZHRoLCBoZWlnaHQpIHsgdGhpcy5tX3ZpZXdwb3J0ID0gW3gsIHksIHdpZHRoLCBoZWlnaHRdOyB9
OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gdGV4dHVyZQorICAgICovCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYWN0aXZlVGV4
dHVyZSA9IGZ1bmN0aW9uKHRleHR1cmUpIHsKKyAgICAgICAgaWYgKGRlTWF0aC5kZUluQm91bmRz
MzIodGV4dHVyZSwgZ2wuVEVYVFVSRTAsIGdsLlRFWFRVUkUwICsgdGhpcy5tX3RleHR1cmVVbml0
cy5sZW5ndGgpKQorICAgICAgICAgICAgdGhpcy5tX2FjdGl2ZVRleHR1cmUgPSB0ZXh0dXJlIC0g
Z2wuVEVYVFVSRTA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0g
ZXJyb3IKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQu
cHJvdG90eXBlLnNldEVycm9yID0gZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgaWYgKHRoaXMu
bV9sYXN0RXJyb3IgPT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICB0aGlzLm1fbGFzdEVycm9y
ID0gZXJyb3I7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHJldHVybiB7bnVtYmVyfSBlcnJv
cgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90
b3R5cGUuZ2V0RXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBlcnIgPSB0aGlzLm1fbGFzdEVycm9yOworICAgICAgICB0aGlzLm1fbGFzdEVycm9y
ID0gZ2wuTk9fRVJST1I7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY29uZGl0aW9uCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGVycm9yCisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4
dC5wcm90b3R5cGUuY29uZGl0aW9uYWxTZXRFcnJvciA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZXJy
b3IpIHsKKyAgICAgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgICAgIHRoaXMuc2V0RXJyb3Io
ZXJyb3IpOworICAgICAgICByZXR1cm4gY29uZGl0aW9uOworICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNv
bnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gdGV4dHVyZQorICAgICogQHRocm93cyB7RXJyb3J9Cisg
ICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlw
ZS5iaW5kVGV4dHVyZSA9IGZ1bmN0aW9uKHRhcmdldCwgdGV4dHVyZSkgeworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHVuaXROZHggPSB0aGlzLm1fYWN0aXZlVGV4dHVyZTsKKwor
ICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKCh0YXJnZXQgIT0gZ2wuVEVYVFVS
RV8yRCAmJgorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIT0gZ2wuVEVYVFVSRV9DVUJFX01B
UCAmJgorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIT0gZ2wuVEVYVFVSRV8yRF9BUlJBWSAm
JgorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIT0gZ2wuVEVYVFVSRV8zRCksIC8vICYmCisg
ICAgICAgICAgICAgICAgICAgIC8vIHRhcmdldCAhPSBnbC5URVhUVVJFX0NVQkVfTUFQX0FSUkFZ
KSwKKyAgICAgICAgICAgICAgICAgICAgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIXRleHR1cmUpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIGJp
bmRpbmcuCisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgICAgICAgICAgICAgIGNh
c2UgZ2wuVEVYVFVSRV8yRDogdGhpcy5zZXRUZXgyREJpbmRpbmcodW5pdE5keCwgbnVsbCk7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUDogdGhpcy5zZXRU
ZXhDdWJlQmluZGluZyh1bml0TmR4LCBudWxsKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBnbC5URVhUVVJFXzJEX0FSUkFZOiB0aGlzLnNldFRleDJEQXJyYXlCaW5kaW5nKHVuaXROZHgs
IG51bGwpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfM0Q6IHRoaXMu
c2V0VGV4M0RCaW5kaW5nKHVuaXROZHgsIG51bGwpOyBicmVhazsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXpl
ZCB0YXJnZXQ6ICcgKyB0YXJnZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKHRleHR1cmUudGV4dHVyZVR5cGUgPT0gbnVsbCkgeworICAgICAgICAg
ICAgICAgIHRleHR1cmUuaW5pdCh0YXJnZXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAvLyBWYWxpZGF0ZSB0eXBlLgorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVR5cGV9ICovIHZhciBleHBlY3RlZFR5cGU7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBnbC5URVhUVVJFXzJEOiBleHBlY3RlZFR5cGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlVHlwZS5UWVBFXzJEOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5URVhU
VVJFX0NVQkVfTUFQOiBleHBlY3RlZFR5cGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
VHlwZS5UWVBFX0NVQkVfTUFQOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5U
RVhUVVJFXzJEX0FSUkFZOiBleHBlY3RlZFR5cGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlVHlwZS5UWVBFXzJEX0FSUkFZOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBn
bC5URVhUVVJFXzNEOiBleHBlY3RlZFR5cGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
VHlwZS5UWVBFXzNEOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cg
bmV3IEVycm9yKCdVbnJlY29nbml6ZWQgdGFyZ2V0OiAnICsgdGFyZ2V0KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcigodGV4
dHVyZS50ZXh0dXJlVHlwZSAhPSBleHBlY3RlZFR5cGUpLCBnbC5JTlZBTElEX09QRVJBVElPTikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHN3aXRjaCAodGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEOiB0
aGlzLnNldFRleDJEQmluZGluZyh1bml0TmR4LCB0ZXh0dXJlKTsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVfTUFQOiB0aGlzLnNldFRleEN1YmVCaW5kaW5nKHVu
aXROZHgsIHRleHR1cmUpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVf
MkRfQVJSQVk6IHRoaXMuc2V0VGV4MkRBcnJheUJpbmRpbmcodW5pdE5keCwgdGV4dHVyZSk7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8zRDogdGhpcy5zZXRUZXgzREJp
bmRpbmcodW5pdE5keCwgdGV4dHVyZSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHRhcmdl
dDogJyArIHRhcmdldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gdW5pdE5keAorICAgICogQHBhcmFtIHs/c2dsclJl
ZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gdGV4dHVyZQorICAgICovCisgICAgc2ds
clJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuc2V0VGV4Q3ViZUJp
bmRpbmcgPSBmdW5jdGlvbih1bml0TmR4LCB0ZXh0dXJlKSB7CisgICAgICAgIGlmICh0aGlzLm1f
dGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleEN1YmVCaW5kaW5nKSB7CisgICAgICAgICAgICB0aGlz
Lm1fdGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleEN1YmVCaW5kaW5nID0gbnVsbDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0ZXh0dXJlKSB7CisgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZVVu
aXRzW3VuaXROZHhdLnRleEN1YmVCaW5kaW5nID0gdGV4dHVyZTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB1bml0TmR4CisgICAgKiBAcGFyYW0g
ez9zZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfSB0ZXh0dXJlCisgICAgKi8K
KyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5zZXRU
ZXgyREJpbmRpbmcgPSBmdW5jdGlvbih1bml0TmR4LCB0ZXh0dXJlKSB7CisgICAgICAgIGlmICh0
aGlzLm1fdGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleDJEQmluZGluZykgeworICAgICAgICAgICAg
Ly8gdGhpcy5tX3RleHR1cmVzLnJlbGVhc2VSZWZlcmVuY2UodGhpcy5tX3RleHR1cmVVbml0c1t1
bml0TmR4XS50ZXgyREJpbmRpbmcpOworICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVVbml0c1t1
bml0TmR4XS50ZXgyREJpbmRpbmcgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRl
eHR1cmUpIHsKKyAgICAgICAgICAgIC8vIHRoaXMubV90ZXh0dXJlcy5hY3F1aXJlUmVmZXJlbmNl
KHRleHR1cmUpOworICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVVbml0c1t1bml0TmR4XS50ZXgy
REJpbmRpbmcgPSB0ZXh0dXJlOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICog
QHBhcmFtIHtudW1iZXJ9IHVuaXROZHgKKyAgICAqIEBwYXJhbSB7P3NnbHJSZWZlcmVuY2VDb250
ZXh0LlRleHR1cmVDb250YWluZXJ9IHRleHR1cmUKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnNldFRleDJEQXJyYXlCaW5kaW5nID0g
ZnVuY3Rpb24odW5pdE5keCwgdGV4dHVyZSkgeworICAgICAgICBpZiAodGhpcy5tX3RleHR1cmVV
bml0c1t1bml0TmR4XS50ZXgyREFycmF5QmluZGluZykgeworICAgICAgICAgICAgLy8gdGhpcy5t
X3RleHR1cmVzLnJlbGVhc2VSZWZlcmVuY2UodGhpcy5tX3RleHR1cmVVbml0c1t1bml0TmR4XS50
ZXgyREFycmF5QmluZGluZyk7CisgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZVVuaXRzW3VuaXRO
ZHhdLnRleDJEQXJyYXlCaW5kaW5nID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0
ZXh0dXJlKSB7CisgICAgICAgICAgICAvLyB0aGlzLm1fdGV4dHVyZXMuYWNxdWlyZVJlZmVyZW5j
ZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlVW5pdHNbdW5pdE5keF0udGV4
MkRBcnJheUJpbmRpbmcgPSB0ZXh0dXJlOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgor
ICAgICogQHBhcmFtIHtudW1iZXJ9IHVuaXROZHgKKyAgICAqIEBwYXJhbSB7P3NnbHJSZWZlcmVu
Y2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9IHRleHR1cmUKKyAgICAqLworICAgIHNnbHJSZWZl
cmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnNldFRleDNEQmluZGluZyA9
IGZ1bmN0aW9uKHVuaXROZHgsIHRleHR1cmUpIHsKKyAgICAgICAgaWYgKHRoaXMubV90ZXh0dXJl
VW5pdHNbdW5pdE5keF0udGV4M0RCaW5kaW5nKSB7CisgICAgICAgICAgICAvLyB0aGlzLm1fdGV4
dHVyZXMucmVsZWFzZVJlZmVyZW5jZSh0aGlzLm1fdGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleDNE
QmluZGluZyk7CisgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleDNE
QmluZGluZyA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGV4dHVyZSkgeworICAg
ICAgICAgICAgLy8gdGhpcy5tX3RleHR1cmVzLmFjcXVpcmVSZWZlcmVuY2UodGV4dHVyZSk7Cisg
ICAgICAgICAgICB0aGlzLm1fdGV4dHVyZVVuaXRzW3VuaXROZHhdLnRleDNEQmluZGluZyA9IHRl
eHR1cmU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtzZ2xy
UmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfQorICAgICovCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWlu
ZXIoKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5U
ZXh0dXJlfSB0ZXh0dXJlCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVu
Y2VDb250ZXh0LnByb3RvdHlwZS5kZWxldGVUZXh0dXJlID0gZnVuY3Rpb24odGV4dHVyZSkgeyAv
KmVtcHR5Ki8gfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAg
ICogQHBhcmFtIHtmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNl
Q29udGV4dC5GcmFtZWJ1ZmZlcn0gZmJvCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5iaW5kRnJhbWVidWZmZXIgPSBmdW5jdGlvbih0
YXJnZXQsIGZibykgeworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKCh0YXJn
ZXQgIT0gZ2wuRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ICE9IGds
LkRSQVdfRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ICE9IGdsLlJF
QURfRlJBTUVCVUZGRVIpLCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJpbmRpbmdUYXJnZXQgPSBuZHggPyBn
bC5EUkFXX0ZSQU1FQlVGRkVSIDogZ2wuUkVBRF9GUkFNRUJVRkZFUjsKKworICAgICAgICAgICAg
aWYgKHRhcmdldCAhPSBnbC5GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gYmluZGluZ1RhcmdldCkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9lc24ndCBtYXRjaCB0aGlzIHRhcmdldC4K
KworICAgICAgICAgICAgaWYgKG5keCkKKyAgICAgICAgICAgICAgICB0aGlzLm1fZHJhd0ZyYW1l
YnVmZmVyQmluZGluZyA9IGZibzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
aGlzLm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZyA9IGZibzsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICAvKioKKyAgICAqIEByZXR1cm4ge3NnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1lYnVmZmVy
fQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90
b3R5cGUuY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZlcigpOyB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0g
e3NnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1lYnVmZmVyfSBmYm8KKyAgICAqLworICAgIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmRlbGV0ZUZyYW1lYnVm
ZmVyID0gZnVuY3Rpb24oZmJvKSB7IC8qZW1wdHkqLyB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJl
bmRlcmJ1ZmZlcn0gcmJvCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVu
Y2VDb250ZXh0LnByb3RvdHlwZS5iaW5kUmVuZGVyYnVmZmVyID0gZnVuY3Rpb24odGFyZ2V0LCBy
Ym8pIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0YXJnZXQgIT0gZ2wu
UkVOREVSQlVGRkVSLCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMubV9yZW5kZXJidWZmZXJCaW5kaW5nID0gcmJvOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEByZXR1cm4ge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJlbmRlcmJ1ZmZlcn0KKyAg
ICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBl
LmNyZWF0ZVJlbmRlcmJ1ZmZlciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlbmRlcmJ1ZmZlcigpOyB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3Nn
bHJSZWZlcmVuY2VDb250ZXh0LlJlbmRlcmJ1ZmZlcn0gcmJvCisgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kZWxldGVSZW5kZXJidWZm
ZXIgPSBmdW5jdGlvbihyYm8pIHsgLyplbXB0eSovIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSBwbmFtZQorICAgICogQHBhcmFtIHtudW1iZXJ9IHBhcmFtCisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5waXhlbFN0
b3JlaSA9IGZ1bmN0aW9uKHBuYW1lLCBwYXJhbSkgeworICAgICAgICBzd2l0Y2ggKHBuYW1lKSB7
CisgICAgICAgICAgICBjYXNlIGdsLlVOUEFDS19BTElHTk1FTlQ6CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcigocGFyYW0gIT0gMSAmJiBwYXJhbSAhPSAyICYm
IHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCksIGdsLklOVkFMSURfVkFMVUUpKSByZXR1cm47Cisg
ICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsVW5wYWNrQWxpZ25tZW50ID0gcGFyYW07CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2wuUEFDS19BTElHTk1FTlQ6
CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcigocGFyYW0gIT0g
MSAmJiBwYXJhbSAhPSAyICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCksIGdsLklOVkFMSURf
VkFMVUUpKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsUGFja0FsaWdubWVu
dCA9IHBhcmFtOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGds
LlVOUEFDS19ST1dfTEVOR1RIOgorICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IocGFyYW0gPCAwLCBnbC5JTlZBTElEX1ZBTFVFKSkgcmV0dXJuOworICAgICAgICAg
ICAgICAgIHRoaXMubV9waXhlbFVucGFja1Jvd0xlbmd0aCA9IHBhcmFtOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsLlVOUEFDS19TS0lQX1JPV1M6CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihwYXJhbSA8IDAsIGdsLklO
VkFMSURfVkFMVUUpKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsVW5wYWNr
U2tpcFJvd3MgPSBwYXJhbTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Y2FzZSBnbC5VTlBBQ0tfU0tJUF9QSVhFTFM6CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcihwYXJhbSA8IDAsIGdsLklOVkFMSURfVkFMVUUpKSByZXR1cm47Cisg
ICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsVW5wYWNrU2tpcFBpeGVscyA9IHBhcmFtOworICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsLlVOUEFDS19JTUFHRV9I
RUlHSFQ6CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihwYXJh
bSA8IDAsIGdsLklOVkFMSURfVkFMVUUpKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5t
X3BpeGVsVW5wYWNrSW1hZ2VIZWlnaHQgPSBwYXJhbTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBnbC5VTlBBQ0tfU0tJUF9JTUFHRVM6CisgICAgICAgICAgICAg
ICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihwYXJhbSA8IDAsIGdsLklOVkFMSURfVkFM
VUUpKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsVW5wYWNrU2tpcEltYWdl
cyA9IHBhcmFtOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWQKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBncmVlbgorICAgICogQHBhcmFtIHtudW1iZXJ9IGJsdWUKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBhbHBoYQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQu
UmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuY2xlYXJDb2xvciA9IGZ1bmN0aW9uKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKSB7CisgICAgICAgIHRoaXMubV9jbGVhckNvbG9yID0gW2RlTWF0aC5j
bGFtcChyZWQsIDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5jbGFt
cChncmVlbiwgMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmNsYW1w
KGJsdWUsIDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5jbGFtcChh
bHBoYSwgMCwgMSldOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBk
ZXB0aAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5w
cm90b3R5cGUuY2xlYXJEZXB0aGYgPSBmdW5jdGlvbihkZXB0aCkgeworICAgICAgICB0aGlzLm1f
Y2xlYXJEZXB0aCA9IGRlTWF0aC5jbGFtcChkZXB0aCwgMCwgMSk7CisgICAgfTsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZW5jaWwKKyAgICAqLworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmNsZWFyU3RlbmNpbCA9IGZ1bmN0
aW9uKHN0ZW5jaWwpIHsKKyAgICAgICAgdGhpcy5tX2NsZWFyU3RlbmNpbCA9IHN0ZW5jaWw7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSB5CisgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSBoZWlnaHQKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNv
bnRleHQucHJvdG90eXBlLnNjaXNzb3IgPSBmdW5jdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7
CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Iod2lkdGggPCAwIHx8IGhlaWdo
dCA8IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLm1fc2Npc3NvckJveCA9IFt4LCB5LCB3aWR0aCwgaGVpZ2h0XTsKKyAgICB9OworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gY2FwCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbihjYXAp
IHsKKyAgICAgICAgc3dpdGNoIChjYXApIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuQkxFTkQ6IHRo
aXMubV9ibGVuZEVuYWJsZWQgPSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuU0NJ
U1NPUl9URVNUOiB0aGlzLm1fc2Npc3NvckVuYWJsZWQgPSB0cnVlOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuREVQVEhfVEVTVDogdGhpcy5tX2RlcHRoVGVzdEVuYWJsZWQgPSB0cnVlOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuU1RFTkNJTF9URVNUOiB0aGlzLm1fc3RlbmNpbFRl
c3RFbmFibGVkID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlBPTFlHT05fT0ZG
U0VUX0ZJTEw6IHRoaXMubV9wb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQgPSB0cnVlOyBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBnbC5ESVRIRVI6CisgICAgICAgICAgICAgICAgLy8gTm90IGlt
cGxlbWVudGVkIC0ganVzdCBpZ25vcmVkLgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoZ2wuSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBjYXAKKyAgICAqLworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbihj
YXApIHsKKyAgICAgICAgc3dpdGNoIChjYXApIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuQkxFTkQ6
IHRoaXMubV9ibGVuZEVuYWJsZWQgPSBmYWxzZTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
LlNDSVNTT1JfVEVTVDogdGhpcy5tX3NjaXNzb3JFbmFibGVkID0gZmFsc2U7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbC5ERVBUSF9URVNUOiB0aGlzLm1fZGVwdGhUZXN0RW5hYmxlZCA9IGZh
bHNlOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuU1RFTkNJTF9URVNUOiB0aGlzLm1fc3Rl
bmNpbFRlc3RFbmFibGVkID0gZmFsc2U7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5QT0xZ
R09OX09GRlNFVF9GSUxMOiB0aGlzLm1fcG9seWdvbk9mZnNldEZpbGxFbmFibGVkID0gZmFsc2U7
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsLkRJVEhFUjoKKyAgICAgICAgICAgICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgLSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihn
bC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGZ1bmMKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSByZWYKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXNrCisgICAgKi8KKyAgICBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5zdGVuY2lsRnVuYyA9
IGZ1bmN0aW9uKGZ1bmMsIHJlZiwgbWFzaykgeworICAgICAgICB0aGlzLnN0ZW5jaWxGdW5jU2Vw
YXJhdGUoZ2wuRlJPTlRfQU5EX0JBQ0ssIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfTsKKworICAg
IC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGZhY2UKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBm
dW5jCisgICAgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgICAgKiBAcGFyYW0ge251bWJlcn0gbWFz
aworICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90
b3R5cGUuc3RlbmNpbEZ1bmNTZXBhcmF0ZSA9IGZ1bmN0aW9uKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
aykgeworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzZXRGcm9udCA9IGZhY2Ug
PT0gZ2wuRlJPTlQgfHwgZmFjZSA9PSBnbC5GUk9OVF9BTkRfQkFDSzsKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgc2V0QmFjayA9IGZhY2UgPT0gZ2wuQkFDSyB8fCBmYWNlID09
IGdsLkZST05UX0FORF9CQUNLOworCisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IoIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRDb21wYXJlRnVuYyhmdW5jKSwgZ2wuSU5W
QUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0
aW9uYWxTZXRFcnJvcighc2V0RnJvbnQgJiYgIXNldEJhY2ssIGdsLklOVkFMSURfRU5VTSkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHJyRGVmcy5GYWNl
VHlwZSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0eXBlID0gcnJE
ZWZzLkZhY2VUeXBlW2tleV07CisgICAgICAgICAgICBpZiAoKHR5cGUgPT0gcnJEZWZzLkZhY2VU
eXBlLkZBQ0VUWVBFX0ZST05UICYmIHNldEZyb250KSB8fAorICAgICAgICAgICAgICAgICh0eXBl
ID09IHJyRGVmcy5GYWNlVHlwZS5GQUNFVFlQRV9CQUNLICYmIHNldEJhY2spKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5tX3N0ZW5jaWxbdHlwZV0uZnVuYyA9IGZ1bmM7CisgICAgICAgICAgICAg
ICAgdGhpcy5tX3N0ZW5jaWxbdHlwZV0ucmVmID0gcmVmOworICAgICAgICAgICAgICAgIHRoaXMu
bV9zdGVuY2lsW3R5cGVdLm9wTWFzayA9IG1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZnVuYworICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRD
b21wYXJlRnVuYyA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICAgICAgc3dpdGNoIChmdW5jKSB7Cisg
ICAgICAgICAgICBjYXNlIGdsLk5FVkVSOgorICAgICAgICAgICAgY2FzZSBnbC5MRVNTOgorICAg
ICAgICAgICAgY2FzZSBnbC5MRVFVQUw6CisgICAgICAgICAgICBjYXNlIGdsLkdSRUFURVI6Cisg
ICAgICAgICAgICBjYXNlIGdsLkdFUVVBTDoKKyAgICAgICAgICAgIGNhc2UgZ2wuRVFVQUw6Cisg
ICAgICAgICAgICBjYXNlIGdsLk5PVEVRVUFMOgorICAgICAgICAgICAgY2FzZSBnbC5BTFdBWVM6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtudW1iZXJ9IG9wCisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuaXNWYWxpZFN0ZW5jaWxPcCA9IGZ1bmN0aW9u
KG9wKSB7CisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuS0VFUDoK
KyAgICAgICAgICAgIGNhc2UgZ2wuWkVSTzoKKyAgICAgICAgICAgIGNhc2UgZ2wuUkVQTEFDRToK
KyAgICAgICAgICAgIGNhc2UgZ2wuSU5DUjoKKyAgICAgICAgICAgIGNhc2UgZ2wuSU5DUl9XUkFQ
OgorICAgICAgICAgICAgY2FzZSBnbC5ERUNSOgorICAgICAgICAgICAgY2FzZSBnbC5ERUNSX1dS
QVA6CisgICAgICAgICAgICBjYXNlIGdsLklOVkVSVDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0g
c2ZhaWwKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkcGZhaWwKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBkcHBhc3MKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRl
eHQucHJvdG90eXBlLnN0ZW5jaWxPcCA9IGZ1bmN0aW9uKHNmYWlsLCBkcGZhaWwsIGRwcGFzcykg
eworICAgICAgICB0aGlzLnN0ZW5jaWxPcFNlcGFyYXRlKGdsLkZST05UX0FORF9CQUNLLCBzZmFp
bCwgZHBmYWlsLCBkcHBhc3MpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSBmYWNlCisgICAgKiBAcGFyYW0ge251bWJlcn0gc2ZhaWwKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSBkcGZhaWwKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkcHBhc3MKKyAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnN0ZW5jaWxPcFNl
cGFyYXRlID0gZnVuY3Rpb24oZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHNldEZyb250ID0gZmFjZSA9PSBnbC5GUk9OVCB8
fCBmYWNlID09IGdsLkZST05UX0FORF9CQUNLOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBzZXRCYWNrID0gZmFjZSA9PSBnbC5CQUNLIHx8IGZhY2UgPT0gZ2wuRlJPTlRfQU5E
X0JBQ0s7CisKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcigoIXNnbHJSZWZl
cmVuY2VDb250ZXh0LmlzVmFsaWRTdGVuY2lsT3Aoc2ZhaWwpIHx8CisgICAgICAgICAgICAgICAg
ICAgICFzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc1ZhbGlkU3RlbmNpbE9wKGRwZmFpbCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRTdGVuY2lsT3Ao
ZHBwYXNzKSksCisgICAgICAgICAgICAgICAgICAgIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighc2V0
RnJvbnQgJiYgIXNldEJhY2ssIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKHZhciBrZXkgaW4gcnJEZWZzLkZhY2VUeXBlKSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHR5cGUgPSByckRlZnMuRmFjZVR5cGVba2V5XTsKKyAg
ICAgICAgICAgIGlmICgodHlwZSA9PSByckRlZnMuRmFjZVR5cGUuRkFDRVRZUEVfRlJPTlQgJiYg
c2V0RnJvbnQpIHx8CisgICAgICAgICAgICAgICAgKHR5cGUgPT0gcnJEZWZzLkZhY2VUeXBlLkZB
Q0VUWVBFX0JBQ0sgJiYgc2V0QmFjaykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1fc3RlbmNp
bFt0eXBlXS5vcFN0ZW5jaWxGYWlsID0gc2ZhaWw7CisgICAgICAgICAgICAgICAgdGhpcy5tX3N0
ZW5jaWxbdHlwZV0ub3BEZXB0aEZhaWwgPSBkcGZhaWw7CisgICAgICAgICAgICAgICAgdGhpcy5t
X3N0ZW5jaWxbdHlwZV0ub3BEZXB0aFBhc3MgPSBkcHBhc3M7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZnVuYworICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUu
ZGVwdGhGdW5jID0gZnVuY3Rpb24oZnVuYykgeworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKCFzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc1ZhbGlkQ29tcGFyZUZ1bmMoZnVuYyks
IGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMubV9k
ZXB0aEZ1bmMgPSBmdW5jOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBuCisgICAgKiBAcGFyYW0ge251bWJlcn0gZgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNv
bnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZGVwdGhSYW5nZSA9IGZ1bmN0aW9uKG4s
IGYpIHsKKyAgICAgICAgdGhpcy5tX2RlcHRoUmFuZ2VOZWFyID0gZGVNYXRoLmNsYW1wKG4sIDAs
IDEpOworICAgICAgICB0aGlzLm1fZGVwdGhSYW5nZUZhciA9IGRlTWF0aC5jbGFtcChmLCAwLCAx
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZmFjdG9yCisgICAg
KiBAcGFyYW0ge251bWJlcn0gdW5pdHMKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnBvbHlnb25PZmZzZXQgPSBmdW5jdGlvbihmYWN0
b3IsIHVuaXRzKSB7CisgICAgICAgIHRoaXMubV9wb2x5Z29uT2Zmc2V0RmFjdG9yID0gZmFjdG9y
OworICAgICAgICB0aGlzLm1fcG9seWdvbk9mZnNldFVuaXRzID0gdW5pdHM7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc1ZhbGlkQmxlbmRFcXVhdGlv
biA9IGZ1bmN0aW9uKG1vZGUpIHsKKyAgICAgICAgcmV0dXJuIG1vZGUgPT0gZ2wuRlVOQ19BREQg
fHwKKyAgICAgICAgICAgIG1vZGUgPT0gZ2wuRlVOQ19TVUJUUkFDVCB8fAorICAgICAgICAgICAg
bW9kZSA9PSBnbC5GVU5DX1JFVkVSU0VfU1VCVFJBQ1QgfHwKKyAgICAgICAgICAgIG1vZGUgPT0g
Z2wuTUlOIHx8CisgICAgICAgICAgICBtb2RlID09IGdsLk1BWDsKKyAgICB9OworCisgICAgLyoq
CisgICAgKiBAcGFyYW0ge251bWJlcn0gZmFjdG9yCisgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuaXNWYWxpZEJsZW5kRmFjdG9yID0gZnVu
Y3Rpb24oZmFjdG9yKSB7CisgICAgICAgIHN3aXRjaCAoZmFjdG9yKSB7CisgICAgICAgICAgICBj
YXNlIGdsLlpFUk86CisgICAgICAgICAgICBjYXNlIGdsLk9ORToKKyAgICAgICAgICAgIGNhc2Ug
Z2wuU1JDX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SOgor
ICAgICAgICAgICAgY2FzZSBnbC5EU1RfQ09MT1I6CisgICAgICAgICAgICBjYXNlIGdsLk9ORV9N
SU5VU19EU1RfQ09MT1I6CisgICAgICAgICAgICBjYXNlIGdsLlNSQ19BTFBIQToKKyAgICAgICAg
ICAgIGNhc2UgZ2wuT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICAgIGNhc2UgZ2wuRFNU
X0FMUEhBOgorICAgICAgICAgICAgY2FzZSBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAg
ICAgICAgY2FzZSBnbC5DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICAgIGNhc2UgZ2wuT05FX01J
TlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBnbC5DT05TVEFOVF9BTFBIQToK
KyAgICAgICAgICAgIGNhc2UgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAg
ICAgY2FzZSBnbC5TUkNfQUxQSEFfU0FUVVJBVEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IG1v
ZGUKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJv
dG90eXBlLmJsZW5kRXF1YXRpb24gPSBmdW5jdGlvbihtb2RlKSB7CisgICAgICAgIGlmICh0aGlz
LmNvbmRpdGlvbmFsU2V0RXJyb3IoIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCbGVuZEVx
dWF0aW9uKG1vZGUpLCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLm1fYmxlbmRNb2RlUkdCID0gbW9kZTsKKyAgICAgICAgdGhpcy5tX2JsZW5kTW9k
ZUFscGhhID0gbW9kZTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0g
bW9kZVJHQgorICAgICogQHBhcmFtIHtudW1iZXJ9IG1vZGVBbHBoYQorICAgICovCisgICAgc2ds
clJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYmxlbmRFcXVhdGlv
blNlcGFyYXRlID0gZnVuY3Rpb24obW9kZVJHQiwgbW9kZUFscGhhKSB7CisgICAgICAgIGlmICh0
aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCbGVu
ZEVxdWF0aW9uKG1vZGVSR0IpIHx8CisgICAgICAgICAgICAgICAgICAgICFzZ2xyUmVmZXJlbmNl
Q29udGV4dC5pc1ZhbGlkQmxlbmRFcXVhdGlvbihtb2RlQWxwaGEpLAorICAgICAgICAgICAgICAg
ICAgICBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMubV9ibGVuZE1vZGVSR0IgPSBtb2RlUkdCOworICAgICAgICB0aGlzLm1fYmxlbmRNb2RlQWxw
aGEgPSBtb2RlQWxwaGE7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9
IHNyYworICAgICogQHBhcmFtIHtudW1iZXJ9IGRzdAorICAgICovCisgICAgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYmxlbmRGdW5jID0gZnVuY3Rpb24o
c3JjLCBkc3QpIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighc2dsclJl
ZmVyZW5jZUNvbnRleHQuaXNWYWxpZEJsZW5kRmFjdG9yKHNyYykgfHwKKyAgICAgICAgICAgICAg
ICAgICAgIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCbGVuZEZhY3Rvcihkc3QpLAorICAg
ICAgICAgICAgICAgICAgICBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMubV9ibGVuZEZhY3RvclNyY1JHQiA9IHNyYzsKKyAgICAgICAgdGhpcy5t
X2JsZW5kRmFjdG9yU3JjQWxwaGEgPSBzcmM7CisgICAgICAgIHRoaXMubV9ibGVuZEZhY3RvckRz
dFJHQiA9IGRzdDsKKyAgICAgICAgdGhpcy5tX2JsZW5kRmFjdG9yRHN0QWxwaGEgPSBkc3Q7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY1JHQgorICAgICogQHBh
cmFtIHtudW1iZXJ9IGRzdFJHQgorICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0FscGhhCisgICAg
KiBAcGFyYW0ge251bWJlcn0gZHN0QWxwaGEKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250
ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmJsZW5kRnVuY1NlcGFyYXRlID0gZnVuY3Rp
b24oc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkgeworICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKCFzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc1ZhbGlkQmxlbmRG
YWN0b3Ioc3JjUkdCKSB8fAorICAgICAgICAgICAgICAgICAgICAhc2dsclJlZmVyZW5jZUNvbnRl
eHQuaXNWYWxpZEJsZW5kRmFjdG9yKGRzdFJHQikgfHwKKyAgICAgICAgICAgICAgICAgICAgIXNn
bHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCbGVuZEZhY3RvcihzcmNBbHBoYSkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCbGVuZEZhY3Rvcihk
c3RBbHBoYSksCisgICAgICAgICAgICAgICAgICAgIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5tX2JsZW5kRmFjdG9yU3JjUkdCID0gc3JjUkdC
OworICAgICAgICB0aGlzLm1fYmxlbmRGYWN0b3JTcmNBbHBoYSA9IHNyY0FscGhhOworICAgICAg
ICB0aGlzLm1fYmxlbmRGYWN0b3JEc3RSR0IgPSBkc3RSR0I7CisgICAgICAgIHRoaXMubV9ibGVu
ZEZhY3RvckRzdEFscGhhID0gZHN0QWxwaGE7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBh
cmFtIHtudW1iZXJ9IHJlZAorICAgICogQHBhcmFtIHtudW1iZXJ9IGdyZWVuCisgICAgKiBAcGFy
YW0ge251bWJlcn0gYmx1ZQorICAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhCisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5ibGVuZENv
bG9yID0gZnVuY3Rpb24ocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpIHsKKyAgICAgICAgdGhpcy5t
X2JsZW5kQ29sb3IgPSBbZGVNYXRoLmNsYW1wKHJlZCwgMCwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVNYXRoLmNsYW1wKGdyZWVuLCAwLCAxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZU1hdGguY2xhbXAoYmx1ZSwgMCwgMSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVNYXRoLmNsYW1wKGFscGhhLCAwLCAxKV07CisgICAgfTsKKworICAgIC8qKgor
ICAgICogQHBhcmFtIHtib29sZWFufSByCisgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGcKKyAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gYgorICAgICogQHBhcmFtIHtib29sZWFufSBhCisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5jb2xvck1h
c2sgPSBmdW5jdGlvbihyLCBnLCBiLCBhKSB7CisgICAgICAgIHRoaXMubV9jb2xvck1hc2sgPSBb
ciwgZywgYiwgYV07CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtib29sZWFufSBt
YXNrCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnBy
b3RvdHlwZS5kZXB0aE1hc2sgPSBmdW5jdGlvbihtYXNrKSB7CisgICAgICAgIHRoaXMubV9kZXB0
aE1hc2sgPSBtYXNrOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBt
YXNrCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnBy
b3RvdHlwZS5zdGVuY2lsTWFzayA9IGZ1bmN0aW9uKG1hc2spIHsKKyAgICAgICAgdGhpcy5zdGVu
Y2lsTWFza1NlcGFyYXRlKGdsLkZST05UX0FORF9CQUNLLCBtYXNrKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZmFjZQorICAgICogQHBhcmFtIHtudW1iZXJ9IG1h
c2sKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJv
dG90eXBlLnN0ZW5jaWxNYXNrU2VwYXJhdGUgPSBmdW5jdGlvbihmYWNlLCBtYXNrKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHNldEZyb250ID0gZmFjZSA9PSBnbC5GUk9O
VCB8fCBmYWNlID09IGdsLkZST05UX0FORF9CQUNLOworICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciBzZXRCYWNrID0gZmFjZSA9PSBnbC5CQUNLIHx8IGZhY2UgPT0gZ2wuRlJPTlRf
QU5EX0JBQ0s7CisKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighc2V0RnJv
bnQgJiYgIXNldEJhY2ssIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKHNldEZyb250KSB0aGlzLm1fc3RlbmNpbFtyckRlZnMuRmFjZVR5cGUuRkFD
RVRZUEVfRlJPTlRdLndyaXRlTWFzayA9IG1hc2s7CisgICAgICAgIGlmIChzZXRCYWNrKSB0aGlz
Lm1fc3RlbmNpbFtyckRlZnMuRmFjZVR5cGUuRkFDRVRZUEVfQkFDS10ud3JpdGVNYXNrID0gbWFz
azsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0
LlZlcnRleEFycmF5fSBhcnJheQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYmluZFZlcnRleEFycmF5ID0gZnVuY3Rpb24oYXJyYXkp
IHsKKyAgICAgICAgaWYgKGFycmF5KQorICAgICAgICAgICAgdGhpcy5tX3ZlcnRleEFycmF5Qmlu
ZGluZyA9IGFycmF5OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLm1fdmVydGV4QXJy
YXlCaW5kaW5nID0gdGhpcy5tX2RlZmF1bHRWQU87CisgICAgfTsKKworICAgIC8qKgorICAgICog
QHJldHVybiB7c2dsclJlZmVyZW5jZUNvbnRleHQuVmVydGV4QXJyYXl9CisgICAgKi8KKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5jcmVhdGVWZXJ0
ZXhBcnJheSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlZl
cnRleEFycmF5KHRoaXMubV9saW1pdHMubWF4VmVydGV4QXR0cmlicyk7IH07CisKKyAgICAvKioK
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcnJheQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNv
bnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZGVsZXRlVmVydGV4QXJyYXkgPSBmdW5j
dGlvbihhcnJheSkge307CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAor
ICAgICogQHBhcmFtIHtudW1iZXJ9IHJhd1NpemUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0eXBl
CisgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vcm1hbGl6ZWQKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzdHJpZGUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAqLworICAgIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnZlcnRleEF0dHJpYlBv
aW50ZXIgPSBmdW5jdGlvbihpbmRleCwgcmF3U2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRl
LCBvZmZzZXQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYWxsb3dCR1JB
ID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZWZmZWN0aXZlU2l6
ZSA9IHJhd1NpemU7CisKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihpbmRl
eCA+PSB0aGlzLm1fbGltaXRzLm1heFZlcnRleEF0dHJpYnMsIGdsLklOVkFMSURfVkFMVUUpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9y
KGVmZmVjdGl2ZVNpemUgPD0gMCB8fCBlZmZlY3RpdmVTaXplID4gNCwgZ2wuSU5WQUxJRF9WQUxV
RSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0
RXJyb3IodHlwZSAhPSBnbC5CWVRFICYmIHR5cGUgIT0gZ2wuVU5TSUdORURfQllURSAmJgorICAg
ICAgICAgICAgICAgICAgICB0eXBlICE9IGdsLlNIT1JUICYmIHR5cGUgIT0gZ2wuVU5TSUdORURf
U0hPUlQgJiYKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBnbC5JTlQgJiYgdHlwZSAhPSBn
bC5VTlNJR05FRF9JTlQgJiYKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBnbC5GTE9BVCAm
JiB0eXBlICE9IGdsLkhBTEZfRkxPQVQgJiYKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBn
bC5JTlRfMl8xMF8xMF8xMF9SRVYgJiYgdHlwZSAhPSBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8x
MF9SRVYsIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Iobm9ybWFsaXplZCAhPSB0cnVlICYmIG5vcm1hbGl6
ZWQgIT0gZmFsc2UsIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Ioc3RyaWRlIDwgMCwgZ2wuSU5WQUxJRF9W
QUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IoKHR5cGUgPT0gZ2wuSU5UXzJfMTBfMTBfMTBfUkVWIHx8IHR5cGUgPT0gZ2wuVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKSAmJiBlZmZlY3RpdmVTaXplICE9IDQsIGdsLklOVkFM
SURfT1BFUkFUSU9OKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcih0aGlzLm1fdmVydGV4QXJyYXlCaW5kaW5nICE9IG51bGwgJiYgdGhp
cy5tX2FycmF5QnVmZmVyQmluZGluZyA9PSBudWxsICYmIG9mZnNldCAhPSAwLCBnbC5JTlZBTElE
X09QRVJBVElPTikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLyoqIEB0eXBlIHs/
KHNnbHJSZWZlcmVuY2VDb250ZXh0LlZlcnRleEFycmF5LlZlcnRleEF0dHJpYkFycmF5KX0gKi8g
dmFyIGFycmF5XyA9IHRoaXMubV92ZXJ0ZXhBcnJheUJpbmRpbmcubV9hcnJheXNbaW5kZXhdOyAv
LyBUT0RPOiBmaXggdHlwZQorCisgICAgICAgIGFycmF5Xy5zaXplID0gcmF3U2l6ZTsKKyAgICAg
ICAgYXJyYXlfLnN0cmlkZSA9IHN0cmlkZTsKKyAgICAgICAgYXJyYXlfLnR5cGUgPSB0eXBlOwor
ICAgICAgICBhcnJheV8ubm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQ7CisgICAgICAgIGFycmF5Xy5p
bnRlZ2VyID0gZmFsc2U7CisgICAgICAgIGFycmF5Xy5vZmZzZXQgPSBvZmZzZXQ7CisKKyAgICAg
ICAgYXJyYXlfLmJ1ZmZlckJpbmRpbmcgPSB0aGlzLm1fYXJyYXlCdWZmZXJCaW5kaW5nOworICAg
IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICAgICogQHBhcmFt
IHtudW1iZXJ9IHNpemUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlCisgICAgKiBAcGFyYW0g
e251bWJlcn0gc3RyaWRlCisgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS52ZXJ0ZXhB
dHRyaWJJUG9pbnRlciA9IGZ1bmN0aW9uKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNl
dCkgeworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMu
bV9saW1pdHMubWF4VmVydGV4QXR0cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Ioc2l6ZSA8PSAw
IHx8IHNpemUgPiA0LCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0eXBlICE9IGdsLkJZVEUgJiYgdHlw
ZSAhPSBnbC5VTlNJR05FRF9CWVRFICYmCisgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gZ2wu
U0hPUlQgJiYgdHlwZSAhPSBnbC5VTlNJR05FRF9TSE9SVCAmJgorICAgICAgICAgICAgICAgICAg
ICB0eXBlICE9IGdsLklOVCAmJiB0eXBlICE9IGdsLlVOU0lHTkVEX0lOVCwgZ2wuSU5WQUxJRF9F
TlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxT
ZXRFcnJvcihzdHJpZGUgPCAwLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0aGlzLm1fdmVydGV4QXJy
YXlCaW5kaW5nICE9IG51bGwgJiYgdGhpcy5tX2FycmF5QnVmZmVyQmluZGluZyA9PSBudWxsICYm
IG9mZnNldCAhPSAwLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgLyoqIEB0eXBlIHs/KHNnbHJSZWZlcmVuY2VDb250ZXh0LlZlcnRleEFycmF5
LlZlcnRleEF0dHJpYkFycmF5KX0gKi8gdmFyIGFycmF5XyA9IHRoaXMubV92ZXJ0ZXhBcnJheUJp
bmRpbmcubV9hcnJheXNbaW5kZXhdOyAvLyBUT0RPOiBmaXggdHlwZQorCisgICAgICAgIGFycmF5
Xy5zaXplID0gc2l6ZTsKKyAgICAgICAgYXJyYXlfLnN0cmlkZSA9IHN0cmlkZTsKKyAgICAgICAg
YXJyYXlfLnR5cGUgPSB0eXBlOworICAgICAgICBhcnJheV8ubm9ybWFsaXplZCA9IGZhbHNlOwor
ICAgICAgICBhcnJheV8uaW50ZWdlciA9IHRydWU7CisgICAgICAgIGFycmF5Xy5vZmZzZXQgPSBv
ZmZzZXQ7CisKKyAgICAgICAgYXJyYXlfLmJ1ZmZlckJpbmRpbmcgPSB0aGlzLm1fYXJyYXlCdWZm
ZXJCaW5kaW5nOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90
b3R5cGUuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgPSBmdW5jdGlvbihpbmRleCkgeworICAgICAg
ICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4
VmVydGV4QXR0cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5tX3ZlcnRleEFycmF5QmluZGluZy5tX2FycmF5c1tpbmRleF0uZW5hYmxl
ZCA9IHRydWU7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4
CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3Rv
dHlwZS5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBmdW5jdGlvbihpbmRleCkgeworICAgICAg
ICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4
VmVydGV4QXR0cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5tX3ZlcnRleEFycmF5QmluZGluZy5tX2FycmF5c1tpbmRleF0uZW5hYmxl
ZCA9IGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eAorICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlzb3IKKyAgICAqLworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnZlcnRleEF0dHJpYkRpdmlzb3Ig
PSBmdW5jdGlvbihpbmRleCwgZGl2aXNvcikgeworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4VmVydGV4QXR0cmlicywgZ2wuSU5W
QUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5tX3ZlcnRl
eEFycmF5QmluZGluZy5tX2FycmF5c1tpbmRleF0uZGl2aXNvciA9IGRpdmlzb3I7CisgICAgfTsK
KworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgKiBAcGFyYW0ge251
bWJlcn0geAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4
dC5wcm90b3R5cGUudmVydGV4QXR0cmliMWYgPSBmdW5jdGlvbihpbmRleCwgeCkgeworICAgICAg
ICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4
VmVydGV4QXR0cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5tX2N1cnJlbnRBdHRyaWJzW2luZGV4XSA9IG5ldyByckdlbmVyaWNWZWN0
b3IuR2VuZXJpY1ZlYzQoeCwgMCwgMCwgMSk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBh
cmFtIHtudW1iZXJ9IGluZGV4CisgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFt
IHtudW1iZXJ9IHkKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNv
bnRleHQucHJvdG90eXBlLnZlcnRleEF0dHJpYjJmID0gZnVuY3Rpb24oaW5kZXgsIHgsIHkpIHsK
KyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihpbmRleCA+PSB0aGlzLm1fbGlt
aXRzLm1heFZlcnRleEF0dHJpYnMsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMubV9jdXJyZW50QXR0cmlic1tpbmRleF0gPSBuZXcgcnJHZW5l
cmljVmVjdG9yLkdlbmVyaWNWZWM0KHgsIHksIDAsIDEpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSB5CisgICAgKiBAcGFyYW0ge251bWJlcn0gegorICAgICovCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudmVydGV4QXR0
cmliM2YgPSBmdW5jdGlvbihpbmRleCwgeCwgeSwgeikgeworICAgICAgICBpZiAodGhpcy5jb25k
aXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4VmVydGV4QXR0cmlicywg
Z2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5t
X2N1cnJlbnRBdHRyaWJzW2luZGV4XSA9IG5ldyByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlYzQo
eCwgeSwgeiwgMSk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGlu
ZGV4CisgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgKiBAcGFyYW0ge251bWJlcn0gdworICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudmVydGV4
QXR0cmliNGYgPSBmdW5jdGlvbihpbmRleCwgeCwgeSwgeiwgdykgeworICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1pdHMubWF4VmVydGV4QXR0
cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5tX2N1cnJlbnRBdHRyaWJzW2luZGV4XSA9IG5ldyByckdlbmVyaWNWZWN0b3IuR2VuZXJp
Y1ZlYzQoeCwgeSwgeiwgdyk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1i
ZXJ9IGluZGV4CisgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFtIHtudW1iZXJ9
IHkKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgKiBAcGFyYW0ge251bWJlcn0gdworICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUu
dmVydGV4QXR0cmliSTRpID0gZnVuY3Rpb24oaW5kZXgsIHgsIHksIHosIHcpIHsKKyAgICAgICAg
aWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihpbmRleCA+PSB0aGlzLm1fbGltaXRzLm1heFZl
cnRleEF0dHJpYnMsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMubV9jdXJyZW50QXR0cmlic1tpbmRleF0gPSBuZXcgcnJHZW5lcmljVmVjdG9y
LkdlbmVyaWNWZWM0KHgsIHksIHosIHcpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpbmRleAorICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSB5CisgICAgKiBAcGFyYW0ge251bWJlcn0gegorICAgICogQHBhcmFtIHtudW1iZXJ9
IHcKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJv
dG90eXBlLnZlcnRleEF0dHJpYkk0dWkgPSBmdW5jdGlvbihpbmRleCwgeCwgeSwgeiwgdykgewor
ICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGluZGV4ID49IHRoaXMubV9saW1p
dHMubWF4VmVydGV4QXR0cmlicywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5tX2N1cnJlbnRBdHRyaWJzW2luZGV4XSA9IG5ldyByckdlbmVy
aWNWZWN0b3IuR2VuZXJpY1ZlYzQoeCwgeSwgeiwgdyk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSBwcm9ncmFtCisgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZ2V0QXR0
cmliTG9jYXRpb24gPSBmdW5jdGlvbihwcm9ncmFtLCBuYW1lKSB7CisgICAgICAgIGlmICh0aGlz
LmNvbmRpdGlvbmFsU2V0RXJyb3IoIShwcm9ncmFtKSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQor
ICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJv
Z3JhbS5tX2F0dHJpYnV0ZU5hbWVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHByb2dy
YW0ubV9hdHRyaWJ1dGVOYW1lc1tpXSA9PT0gbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
aTsKKworICAgICAgICByZXR1cm4gLTE7CisgICAgfTsKKworICAgLyoqCisgICAgKiBAcGFyYW0g
e251bWJlcn0gcG5hbWUKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5j
ZUNvbnRleHQucHJvdG90eXBlLmdldFBhcmFtZXRlciA9IGZ1bmN0aW9uKHBuYW1lKSB7CisgICAg
ICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgKGdsLlZJRVdQT1JUKTogcmV0
dXJuIG5ldyBJbnQzMkFycmF5KHRoaXMubV92aWV3cG9ydCk7CisgICAgICAgICAgICBjYXNlIChn
bC5TQ0lTU09SX0JPWCk6IHJldHVybiBuZXcgSW50MzJBcnJheSh0aGlzLm1fc2Npc3NvckJveCk7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
VW5pbXBsZW1lbnRlZCcpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBh
cmFtIHtudW1iZXJ9IGxvY2F0aW9uCisgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5
cGV9IHR5cGUKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmFsdWUKKyAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnVuaWZvcm1W
YWx1ZSA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB0eXBlLCB2YWx1ZSkgeworICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKCF0aGlzLm1fY3VycmVudFByb2dyYW0sIGdsLklOVkFMSURf
T1BFUkFUSU9OKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobG9jYXRpb24g
PT09IG51bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xy
U2hhZGVyUHJvZ3JhbS5Vbmlmb3JtfSAqLyB2YXIgdW5pZm9ybSA9IHRoaXMubV9jdXJyZW50UHJv
Z3JhbS5tX3VuaWZvcm1zW2xvY2F0aW9uXTsKKworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKCF1bmlmb3JtLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIodW5p
Zm9ybS50eXBlKSkgeworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0
eXBlICE9IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULCBnbC5JTlZBTElEX09QRVJBVElPTikp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZGl0
aW9uYWxTZXRFcnJvcih1bmlmb3JtLnR5cGUgIT0gdHlwZSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04p
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvKiBUT0RPOiBEbyB3ZSBuZWVkIHRvIGNv
cHkgb2JqZWN0cz8gKi8KKyAgICAgICAgdW5pZm9ybS52YWx1ZSA9IHZhbHVlOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0g
e251bWJlcn0geAorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNv
bnRleHQucHJvdG90eXBlLnVuaWZvcm0xZiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB4KSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnVuaWZvcm1WYWx1ZShsb2NhdGlvbiwgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVCwgW3hdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4CisgICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudW5pZm9y
bTFmdiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB4KSB7CisgICAgICAgIHJldHVybiB0aGlzLnVuaWZv
cm1WYWx1ZShsb2NhdGlvbiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCwgeCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2NhdGlvbgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB4CisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJl
bmNlQ29udGV4dC5wcm90b3R5cGUudW5pZm9ybTFpID0gZnVuY3Rpb24obG9jYXRpb24sIHgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybVZhbHVlKGxvY2F0aW9uLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVCwgW3hdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4CisgICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudW5p
Zm9ybTFpdiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB4KSB7CisgICAgICAgIHJldHVybiB0aGlzLnVu
aWZvcm1WYWx1ZShsb2NhdGlvbiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsIHgpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAgKiBA
cGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICovCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudW5pZm9ybTJm
ID0gZnVuY3Rpb24obG9jYXRpb24sIHgsIHkpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9y
bVZhbHVlKGxvY2F0aW9uLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIsIFt4LCB5
XSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2NhdGlvbgor
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geAorICAgICAqLworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnVuaWZvcm0yZnYgPSBmdW5jdGlv
bihsb2NhdGlvbiwgeCkgeworICAgICAgICByZXR1cm4gdGhpcy51bmlmb3JtVmFsdWUobG9jYXRp
b24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwgeCk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS51bmlmb3JtMmkgPSBmdW5jdGlv
bihsb2NhdGlvbiwgeCwgeSkgeworICAgICAgICByZXR1cm4gdGhpcy51bmlmb3JtVmFsdWUobG9j
YXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsIFt4LCB5XSk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2NhdGlvbgorICAgICAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0geAorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJl
ZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnVuaWZvcm0yaXYgPSBmdW5jdGlvbihsb2NhdGlvbiwg
eCkgeworICAgICAgICByZXR1cm4gdGhpcy51bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsIHgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHoKKyAgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS51bmlmb3Jt
M2YgPSBmdW5jdGlvbihsb2NhdGlvbiwgeCwgeSwgeikgeworICAgICAgICByZXR1cm4gdGhpcy51
bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywg
W3gsIHksIHpdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxv
Y2F0aW9uCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4CisgICAgICovCisgICAgc2ds
clJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudW5pZm9ybTNmdiA9
IGZ1bmN0aW9uKGxvY2F0aW9uLCB4KSB7CisgICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1WYWx1
ZShsb2NhdGlvbiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzLCB4KTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvY2F0aW9uCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB6CisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29u
dGV4dC5wcm90b3R5cGUudW5pZm9ybTNpID0gZnVuY3Rpb24obG9jYXRpb24sIHgsIHksIHopIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybVZhbHVlKGxvY2F0aW9uLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVF9WRUMzLCBbeCwgeSwgel0pOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHgKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnBy
b3RvdHlwZS51bmlmb3JtM2l2ID0gZnVuY3Rpb24obG9jYXRpb24sIHgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMudW5pZm9ybVZhbHVlKGxvY2F0aW9uLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9WRUMzLCB4KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxv
Y2F0aW9uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
eQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHcKKyAg
ICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlw
ZS51bmlmb3JtNGYgPSBmdW5jdGlvbihsb2NhdGlvbiwgeCwgeSwgeiwgdykgeworICAgICAgICBy
ZXR1cm4gdGhpcy51bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfVkVDNCwgW3gsIHksIHosIHddKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4Cisg
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5
cGUudW5pZm9ybTRmdiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB4KSB7CisgICAgICAgIHJldHVybiB0
aGlzLnVuaWZvcm1WYWx1ZShsb2NhdGlvbiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUM0LCB4KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvY2F0
aW9uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHcKKyAgICAg
Ki8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS51
bmlmb3JtNGkgPSBmdW5jdGlvbihsb2NhdGlvbiwgeCwgeSwgeiwgdykgeworICAgICAgICByZXR1
cm4gdGhpcy51bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
X1ZFQzQsIFt4LCB5LCB6LCB3XSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geAorICAgICAq
LworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnVu
aWZvcm00aXYgPSBmdW5jdGlvbihsb2NhdGlvbiwgeCkgeworICAgICAgICByZXR1cm4gdGhpcy51
bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQsIHgp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxzdHJpbmc+fQorICAg
ICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBl
LmdldFN1cHBvcnRlZEV4dGVuc2lvbnMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGV4dGVu
c2lvbnMgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7IC8vVE9ETzogTGV0J3MganVzdCBy
ZXR1cm4gZ2wncyBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3Igbm93CisgICAgICAgIHJldHVybiBl
eHRlbnNpb25zOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqIEByZXR1cm4geyp9CisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQu
UmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZ2V0RXh0ZW5zaW9uID0gZnVuY3Rpb24obmFtZSkg
eworICAgICAgICByZXR1cm4gZ2wuZ2V0RXh0ZW5zaW9uKG5hbWUpOyAvL1RPRE86IExldCdzIGp1
c3QgcmV0dXJuIGdsJ3Mgc3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIG5vdworICAgIH07CisKKyAg
ICAvKiogdHJhbnNwb3NlIG1hdHJpeCAneCcgb2YgJ3NpemUnIGNvbHVtbnMgYW5kIHJvd3MKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
eAorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHQudHJhbnMgPSBmdW5jdGlvbihzaXplLCB4KSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBy
b3cgPSAwOyByb3cgPCBzaXplOyArK3JvdykKKyAgICAgICAgICAgIGZvciAodmFyIGNvbCA9IDA7
IGNvbCA8IHNpemU7ICsrY29sKQorICAgICAgICAgICAgcmVzdWx0W3JvdyAqIHNpemUgKyBjb2xd
ID0geFtjb2wgKiBzaXplICsgcm93XTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj59IHgKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5S
ZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS51bmlmb3JtTWF0cml4MmZ2ID0gZnVuY3Rpb24obG9j
YXRpb24sIHRyYW5zcG9zZSwgeCkgeworICAgICAgICAvKiBjaGFuZ2UgZnJvbSBjb2x1bW4tbWFq
b3IgdG8gaW50ZXJuYWwgcm93LW1ham9yIGlmIHRyYW5zcG9zZSBpZiBGQUxTRSAqLworICAgICAg
ICByZXR1cm4gdGhpcy51bmlmb3JtVmFsdWUobG9jYXRpb24sIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUMiwgIXRyYW5zcG9zZSA/IHNnbHJSZWZlcmVuY2VDb250ZXh0LnRyYW5zKDIs
IHgpIDogeCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2Nh
dGlvbgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0geAorICAgICAqLworICAgIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLnVuaWZvcm1NYXRyaXgz
ZnYgPSBmdW5jdGlvbihsb2NhdGlvbiwgdHJhbnNwb3NlLCB4KSB7CisgICAgICAgIC8qIGNoYW5n
ZSBmcm9tIGNvbHVtbi1tYWpvciB0byBpbnRlcm5hbCByb3ctbWFqb3IgaWYgdHJhbnNwb3NlIGlm
IEZBTFNFICovCisgICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1WYWx1ZShsb2NhdGlvbiwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzLCAhdHJhbnNwb3NlID8gc2dsclJlZmVyZW5j
ZUNvbnRleHQudHJhbnMoMywgeCkgOiB4KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB4Cisg
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5
cGUudW5pZm9ybU1hdHJpeDRmdiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHgpIHsK
KyAgICAgICAgLyogY2hhbmdlIGZyb20gY29sdW1uLW1ham9yIHRvIGludGVybmFsIHJvdy1tYWpv
ciBpZiB0cmFuc3Bvc2UgaWYgRkFMU0UgKi8KKyAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybVZh
bHVlKGxvY2F0aW9uLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQsICF0cmFuc3Bv
c2UgPyBzZ2xyUmVmZXJlbmNlQ29udGV4dC50cmFucyg0LCB4KSA6IHgpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIEBwYXJhbSB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gcHJv
Z3JhbQorICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90
eXBlLmdldFVuaWZvcm1Mb2NhdGlvbiA9IGZ1bmN0aW9uKHByb2dyYW0sIG5hbWUpIHsKKyAgICAg
ICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighcHJvZ3JhbSwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04pKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcHJvZ3JhbS5tX3VuaWZvcm1zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHBy
b2dyYW0ubV91bmlmb3Jtc1tpXS5uYW1lID09PSBuYW1lKQorICAgICAgICAgICAgICAgIHJldHVy
biBpOworCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge251bWJlcn0gdworICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNl
Q29udGV4dC5wcm90b3R5cGUubGluZVdpZHRoID0gZnVuY3Rpb24odykgeworICAgICAgICBpZiAo
dGhpcy5jb25kaXRpb25hbFNldEVycm9yKHcgPCAwLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5tX2xpbmVXaWR0aCA9IHc7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCdWZmZXJUYXJn
ZXQgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2wuQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgY2FzZSBnbC5DT1BZX1JF
QURfQlVGRkVSOgorICAgICAgICAgICAgY2FzZSBnbC5DT1BZX1dSSVRFX0JVRkZFUjoKKyAgICAg
ICAgICAgIGNhc2UgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICBjYXNlIGds
LlBJWEVMX1BBQ0tfQlVGRkVSOgorICAgICAgICAgICAgY2FzZSBnbC5QSVhFTF9VTlBBQ0tfQlVG
RkVSOgorICAgICAgICAgICAgY2FzZSBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAg
ICAgICAgICAgY2FzZSBnbC5VTklGT1JNX0JVRkZFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0g
dGFyZ2V0CisgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0LkRhdGFCdWZmZXJ9IGJ1
ZmZlcgorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5zZXRCdWZmZXJCaW5kaW5nID0gZnVuY3Rp
b24odGFyZ2V0LCBidWZmZXIpIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuQVJSQVlfQlVGRkVSOiB0aGlzLm1fYXJyYXlCdWZmZXJCaW5kaW5nID0gYnVm
ZmVyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuQ09QWV9SRUFEX0JVRkZFUjogdGhpcy5t
X2NvcHlSZWFkQnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsLkNPUFlfV1JJVEVfQlVGRkVSOiB0aGlzLm1fY29weVdyaXRlQnVmZmVyQmluZGluZyA9IGJ1
ZmZlcjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSOiB0
aGlzLm1fdmVydGV4QXJyYXlCaW5kaW5nLm1fZWxlbWVudEFycmF5QnVmZmVyQmluZGluZyA9IGJ1
ZmZlcjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlBJWEVMX1BBQ0tfQlVGRkVSOiB0aGlz
Lm1fcGl4ZWxQYWNrQnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGdsLlBJWEVMX1VOUEFDS19CVUZGRVI6IHRoaXMubV9waXhlbFVucGFja0J1ZmZlckJpbmRp
bmcgPSBidWZmZXI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSOiB0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5nID0gYnVmZmVy
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5JRk9STV9CVUZGRVI6IHRoaXMubV91bmlm
b3JtQnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHRhcmdldDogJyAr
IHRhcmdldCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251
bWJlcn0gdGFyZ2V0CisgICAgKiBAcmV0dXJuIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVm
ZmVyfQorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5nZXRCdWZmZXJCaW5kaW5nID0gZnVuY3Rp
b24odGFyZ2V0KSB7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgICAgICAgICBjYXNl
IGdsLkFSUkFZX0JVRkZFUjogcmV0dXJuIHRoaXMubV9hcnJheUJ1ZmZlckJpbmRpbmc7CisgICAg
ICAgICAgICBjYXNlIGdsLkNPUFlfUkVBRF9CVUZGRVI6IHJldHVybiB0aGlzLm1fY29weVJlYWRC
dWZmZXJCaW5kaW5nOworICAgICAgICAgICAgY2FzZSBnbC5DT1BZX1dSSVRFX0JVRkZFUjogcmV0
dXJuIHRoaXMubV9jb3B5V3JpdGVCdWZmZXJCaW5kaW5nOworICAgICAgICAgICAgY2FzZSBnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUjogcmV0dXJuIHRoaXMubV92ZXJ0ZXhBcnJheUJpbmRpbmcubV9l
bGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nOworICAgICAgICAgICAgY2FzZSBnbC5QSVhFTF9QQUNL
X0JVRkZFUjogcmV0dXJuIHRoaXMubV9waXhlbFBhY2tCdWZmZXJCaW5kaW5nOworICAgICAgICAg
ICAgY2FzZSBnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSOiByZXR1cm4gdGhpcy5tX3BpeGVsVW5wYWNr
QnVmZmVyQmluZGluZzsKKyAgICAgICAgICAgIGNhc2UgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUjogcmV0dXJuIHRoaXMubV90cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJpbmRpbmc7CisgICAg
ICAgICAgICBjYXNlIGdsLlVOSUZPUk1fQlVGRkVSOiByZXR1cm4gdGhpcy5tX3VuaWZvcm1CdWZm
ZXJCaW5kaW5nOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1VucmVjb2duaXplZCB0YXJnZXQ6ICcgKyB0YXJnZXQpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAgICogQHBh
cmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfSBidWZmZXIKKyAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmJpbmRCdWZm
ZXIgPSBmdW5jdGlvbih0YXJnZXQsIGJ1ZmZlcikgeworICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25hbFNldEVycm9yKCFzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc1ZhbGlkQnVmZmVyVGFyZ2V0KHRh
cmdldCksIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5zZXRCdWZmZXJCaW5kaW5nKHRhcmdldCwgYnVmZmVyKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgKiBAcmV0dXJuIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfQorICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuY3Jl
YXRlQnVmZmVyID0gZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQu
RGF0YUJ1ZmZlcigpOyB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVy
CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3Rv
dHlwZS5kZWxldGVCdWZmZXIgPSBmdW5jdGlvbihidWZmZXIpIHt9OworCisgICAgLyoqCisgICAg
KiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge251bWJlcnxnb29nLk51bWJl
ckFycmF5fSBpbnB1dAorICAgICogQHBhcmFtIHtudW1iZXJ9IHVzYWdlCisgICAgKi8KKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5idWZmZXJEYXRh
ID0gZnVuY3Rpb24odGFyZ2V0LCBpbnB1dCwgdXNhZ2UpIHsKKyAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcighc2dsclJlZmVyZW5jZUNvbnRleHQuaXNWYWxpZEJ1ZmZlclRhcmdl
dCh0YXJnZXQpLCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkRhdGFCdWZmZXJ9ICovIHZhciBidWZm
ZXIgPSB0aGlzLmdldEJ1ZmZlckJpbmRpbmcodGFyZ2V0KTsKKyAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcighYnVmZmVyLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PSAnbnVtYmVyJykgewor
ICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihpbnB1dCA8IDAsIGdsLklO
VkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJ1ZmZl
ci5zZXRTdG9yYWdlKGlucHV0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZl
ci5zZXREYXRhKGlucHV0KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAq
IEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gZGF0YQorICAgICovCisgICAgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYnVmZmVyU3ViRGF0YSA9IGZ1bmN0
aW9uKHRhcmdldCwgb2Zmc2V0LCBkYXRhKSB7CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IoIXNnbHJSZWZlcmVuY2VDb250ZXh0LmlzVmFsaWRCdWZmZXJUYXJnZXQodGFyZ2V0
KSwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRo
aXMuY29uZGl0aW9uYWxTZXRFcnJvcihvZmZzZXQgPCAwLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4
dC5EYXRhQnVmZmVyfSAqLyB2YXIgYnVmZmVyID0gdGhpcy5nZXRCdWZmZXJCaW5kaW5nKHRhcmdl
dCk7CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIWJ1ZmZlciwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlz
LmNvbmRpdGlvbmFsU2V0RXJyb3Iob2Zmc2V0ICsgZGF0YS5ieXRlTGVuZ3RoID4gYnVmZmVyLmdl
dFNpemUoKSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGJ1ZmZlci5zZXRTdWJEYXRhKG9mZnNldCwgZGF0YSk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgKiBAcGFy
YW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlCisgICAgKiBA
cGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IHBpeGVscworICAgICovCisgICAgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUucmVhZFBpeGVscyA9IGZ1bmN0aW9u
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3N9ICovIHZhciBzcmMgPSB0aGlzLmdldFJlYWRDb2xvcmJ1ZmZlcigpOworCisg
ICAgICAgIC8vIE1hcCB0cmFuc2ZlciBmb3JtYXQuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5t
YXBHTFRyYW5zZmVyRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisKKyAgICAgICAgLy8gQ2xhbXAgaW5w
dXQgdmFsdWVzCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29weVggPSBkZU1h
dGguY2xhbXAoeCwgMCwgc3JjLnJhdygpLmdldEhlaWdodCgpKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBjb3B5WSA9IGRlTWF0aC5jbGFtcCh5LCAwLCBzcmMucmF3KCkuZ2V0
RGVwdGgoKSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29weVdpZHRoID0g
ZGVNYXRoLmNsYW1wKHdpZHRoLCAwLCBzcmMucmF3KCkuZ2V0SGVpZ2h0KCkgLSB4KTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb3B5SGVpZ2h0ID0gZGVNYXRoLmNsYW1wKGhl
aWdodCwgMCwgc3JjLnJhdygpLmdldERlcHRoKCkgLSB5KTsKKworICAgICAgICAvKiogQHR5cGUg
ez9BcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGE7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgb2Zmc2V0OworICAgICAgICBpZiAodGhpcy5tX3BpeGVsUGFja0J1ZmZlckJpbmRpbmcp
IHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodHlwZW9mIHBpeGVs
cyAhPT0gJ251bWJlcicsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1fcGl4ZWxQYWNrQnVmZmVyQmluZGluZy5nZXRE
YXRhKCk7CisgICAgICAgICAgICBvZmZzZXQgPSBwaXhlbHMuYnl0ZU9mZnNldDsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwaXhlbHMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikg
eworICAgICAgICAgICAgICAgIGRhdGEgPSBwaXhlbHM7CisgICAgICAgICAgICAgICAgb2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IHBpeGVs
cy5idWZmZXI7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcGl4ZWxzLmJ5dGVPZmZzZXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUu
UGl4ZWxCdWZmZXJBY2Nlc3N9ICovCisgICAgICAgIHZhciBkc3QgPSBuZXcgdGN1VGV4dHVyZS5Q
aXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICBmb3JtYXQ6IHRyYW5zZmVyRm10LAorICAg
ICAgICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCisgICAg
ICAgICAgICBkZXB0aDogMSwKKyAgICAgICAgICAgIHJvd1BpdGNoOiBkZU1hdGguZGVBbGlnbjMy
KHdpZHRoICogdHJhbnNmZXJGbXQuZ2V0UGl4ZWxTaXplKCksIHRoaXMubV9waXhlbFBhY2tBbGln
bm1lbnQpLAorICAgICAgICAgICAgc2xpY2VQaXRjaDogMCwKKyAgICAgICAgICAgIGRhdGE6IGRh
dGEsCisgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldH0pOworCisgICAgICAgIHNyYyA9IHNyYy5n
ZXRTdWJyZWdpb24oW2NvcHlYLCBjb3B5WSwgY29weVdpZHRoLCBjb3B5SGVpZ2h0XSk7CisgICAg
ICAgIHNyYy5yZXNvbHZlTXVsdGlzYW1wbGVDb2xvckJ1ZmZlcih0Y3VUZXh0dXJlVXRpbC5nZXRT
dWJyZWdpb24oZHN0LCAwLCAwLCAwLCBjb3B5V2lkdGgsIGNvcHlIZWlnaHQsIDEpKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5nZXRUeXBlID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fdHlwZTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfQorICAgICovCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQubnVsbEFjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgd2lk
dGg6IDAsCisgICAgICAgICAgICBoZWlnaHQ6IDB9KTsKKyAgICB9OworCisgICAgLyoqCisgICAg
KiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1lYnVmZmVyfSBmcmFtZWJ1ZmZlcgor
ICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50UG9pbnR9IHBvaW50
CisgICAgKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfQorICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuZ2V0RmJv
QXR0YWNobWVudCA9IGZ1bmN0aW9uKGZyYW1lYnVmZmVyLCBwb2ludCkgeworICAgICAgICAvKiog
QHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnR9ICovIHZhciBhdHRhY2htZW50
ID0gZnJhbWVidWZmZXIuZ2V0QXR0YWNobWVudChwb2ludCk7CisKKyAgICAgICAgc3dpdGNoIChh
dHRhY2htZW50LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ugc2dsclJlZmVyZW5jZUNvbnRleHQu
QXR0YWNobWVudFR5cGUuQVRUQUNITUVOVFRZUEVfVEVYVFVSRTogeworICAgICAgICAgICAgICAg
IHZhciBjb250YWluZXIgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVD
b250YWluZXJ9ICovIChhdHRhY2htZW50Lm9iamVjdCk7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHs/c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVR5cGV9ICovIHZhciB0eXBlID0gY29u
dGFpbmVyLmdldFR5cGUoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGNvbnRhaW5l
ci50ZXh0dXJlOworCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gc2dsclJlZmVyZW5jZUNv
bnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmUuZ2V0TGV2ZWwoYXR0YWNobWVudC5sZXZlbCk7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAodHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFX0NVQkVfTUFQ
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZS5nZXRGYWNlKGF0dGFjaG1lbnQu
bGV2ZWwsIHNnbHJSZWZlcmVuY2VDb250ZXh0LnRleFRhcmdldFRvRmFjZShhdHRhY2htZW50LnRl
eFRhcmdldCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gc2dsclJlZmVyZW5j
ZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRF9BUlJBWSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzNEIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmVUeXBlLlRZUEVfQ1VCRV9NQVBfQVJSQVkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgbGV2ZWwgPSB0ZXh0
dXJlLmdldExldmVsKGF0dGFjaG1lbnQubGV2ZWwpOworCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQ6IGxldmVsLmdldEZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGg6IGxldmVsLmdldFdpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQ6IGxldmVsLmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGg6IDEs
CisgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogbGV2ZWwuZ2V0Um93UGl0Y2goKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlUGl0Y2g6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhOiBsZXZlbC5nZXRCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9mZnNldDogbGV2ZWwuZ2V0U2xpY2VQaXRjaCgpICogYXR0YWNobWVudC5sYXllcn0pOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2dsclJlZmVy
ZW5jZUNvbnRleHQubnVsbEFjY2VzcygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
YXNlIHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRUeXBlLkFUVEFDSE1FTlRUWVBFX1JF
TkRFUkJVRkZFUjogeworICAgICAgICAgICAgICAgIHZhciByYm8gPSAvKiogQHR5cGUge3NnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlbmRlcmJ1ZmZlcn0gKi8gKGF0dGFjaG1lbnQub2JqZWN0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmJvLmdldEFjY2VzcygpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5udWxsQWNjZXNzKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAg
KiBAcmV0dXJuIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhl
bEJ1ZmZlckFjY2Vzc30KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5j
ZUNvbnRleHQucHJvdG90eXBlLmdldFJlYWRDb2xvcmJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBpZiAodGhpcy5tX3JlYWRGcmFtZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAgICByZXR1
cm4gcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MuZnJvbVNpbmdsZXNhbXBsZUFjY2Vzcyh0aGlzLmdldEZib0F0dGFjaG1lbnQodGhpcy5t
X3JlYWRGcmFtZWJ1ZmZlckJpbmRpbmcsIHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQ
b2ludC5BVFRBQ0hNRU5UUE9JTlRfQ09MT1IwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLm1fZGVmYXVsdENvbG9yYnVmZmVyOworICAgIH07CisKKyAgICAvLyBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kcmF3QXJyYXlzID0g
ZnVuY3Rpb24obW9kZSwgZmlyc3QsIGNvdW50KSB7CisgICAgLy8gICAgIHRoaXMuZHJhd0FycmF5
c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIDEpOworICAgIC8vIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMgPSBmdW5j
dGlvbih0YXJnZXQpIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0YXJn
ZXQgIT0gZ2wuRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ICE9IGds
LkRSQVdfRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ICE9IGdsLlJF
QURfRlJBTUVCVUZGRVIsIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICAvLyBTZWxlY3QgYmluZGluZyBwb2ludC4KKyAgICAgICAgLyoqIEB0eXBlIHtz
Z2xyUmVmZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZlcn0gKi8gdmFyIGZyYW1lYnVmZmVyQmluZGlu
ZyA9ICh0YXJnZXQgPT0gZ2wuRlJBTUVCVUZGRVIgfHwgdGFyZ2V0ID09IGdsLkRSQVdfRlJBTUVC
VUZGRVIpID8gdGhpcy5tX2RyYXdGcmFtZWJ1ZmZlckJpbmRpbmcgOiB0aGlzLm1fcmVhZEZyYW1l
YnVmZmVyQmluZGluZzsKKworICAgICAgICAvLyBEZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGFsd2F5
cyBjb21wbGV0ZS4KKyAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAg
ICByZXR1cm4gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEU7CisKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB3aWR0aCA9IC0xOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGhlaWdodCA9IC0xOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBoYXNB
dHRhY2htZW50ID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGF0
dGFjaG1lbnRDb21wbGV0ZSA9IHRydWU7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8g
dmFyIGRpbWVuc2lvbnNPayA9IHRydWU7CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludCkgeworICAgICAgICAgICAgLyoqIEB0eXBl
IHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50UG9pbnR9ICovIHZhciBwb2ludCA9IHNn
bHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludFtrZXldOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50fSAqLyB2YXIgYXR0YWNobWVu
dCA9IGZyYW1lYnVmZmVyQmluZGluZy5nZXRBdHRhY2htZW50KHBvaW50KTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXR0YWNobWVudFdpZHRoID0gMDsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXR0YWNobWVudEhlaWdodCA9IDA7CisgICAg
ICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIGF0dGFj
aG1lbnRGb3JtYXQ7CisKKyAgICAgICAgICAgIGlmIChhdHRhY2htZW50LnR5cGUgPT0gc2dsclJl
ZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFR5cGUuQVRUQUNITUVOVFRZUEVfVEVYVFVSRSkgewor
ICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmVDb250YWluZXJ9ICovIChhdHRhY2htZW50Lm9iamVjdCk7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9ICov
IHZhciBsZXZlbDsKKworICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50LnRleFRhcmdldCA9
PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUXzJEKSB7CisgICAgICAg
ICAgICAgICAgICAgIERFX0FTU0VSVChjb250YWluZXIudGV4dHVyZVR5cGUgPT0gc2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRCk7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEfSAqLyB2YXIgdGV4MkQgPSAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRH0gKi8gKGNvbnRhaW5lci50
ZXh0dXJlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAodGV4MkQuaGFzTGV2ZWwoYXR0YWNo
bWVudC5sZXZlbCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IHRleDJELmdldExl
dmVsKGF0dGFjaG1lbnQubGV2ZWwpOworICAgICAgICAgICAgICAgIC8vIFRPRE86IGltcGxlbWVu
dCBDVUJFX01BUCwgMkRfQVJSQVksIDNELCBDVUJFX01BUF9BUlJBWQorICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZGVNYXRoLmRlSW5SYW5nZTMyKGF0dGFjaG1lbnQudGV4VGFyZ2V0LCBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUX0NVQkVfTUFQX1BPU0lUSVZFX1gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldC5URVhUQVJHRVRfQ1VCRV9NQVBfTkVHQVRJ
VkVfWikpIHsKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJUKGNvbnRhaW5lci50ZXh0dXJl
VHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFX0NVQkVfTUFQKTsK
KworICAgICAgICAgICAgICAgICAgICB2YXIgdGV4Q3ViZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZUN1YmV9ICovIChjb250YWluZXIudGV4dHVyZSk7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBmYWNlID0gc2dsclJlZmVyZW5jZUNvbnRleHQudGV4VGFyZ2V0VG9G
YWNlKGF0dGFjaG1lbnQudGV4VGFyZ2V0KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAodGV4
Q3ViZS5oYXNGYWNlKGF0dGFjaG1lbnQubGV2ZWwsIGZhY2UpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbGV2ZWwgPSB0ZXhDdWJlLmdldEZhY2UoYXR0YWNobWVudC5sZXZlbCwgZmFjZSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2htZW50LnRleFRhcmdldCA9PSBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUXzJEX0FSUkFZKSB7CisgICAgICAgICAg
ICAgICAgICAgIERFX0FTU0VSVChjb250YWluZXIudGV4dHVyZVR5cGUgPT0gc2dsclJlZmVyZW5j
ZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRF9BUlJBWSk7CisgICAgICAgICAgICAgICAgICAg
IHZhciB0ZXgyREFyciA9IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJE
QXJyYXl9ICovIChjb250YWluZXIudGV4dHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRleDJEQXJyLmhhc0xldmVsKGF0dGFjaG1lbnQubGV2ZWwpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbGV2ZWwgPSB0ZXgyREFyci5nZXRMZXZlbChhdHRhY2htZW50LmxldmVsKTsgLy8gXG5v
dGUgU2xpY2UgZG9lc24ndCBtYXR0ZXIgaGVyZS4KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGF0dGFjaG1lbnQudGV4VGFyZ2V0ID09IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleFRhcmdldC5U
RVhUQVJHRVRfM0QpIHsKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJUKGNvbnRhaW5lci50
ZXh0dXJlVHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzNEKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHRleDNEID0gLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlM0R9ICovIChjb250YWluZXIudGV4dHVyZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRleDNELmhhc0xldmVsKGF0dGFjaG1lbnQubGV2ZWwpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWwgPSB0ZXgzRC5nZXRMZXZlbChhdHRhY2htZW50LmxldmVsKTsg
Ly8gXG5vdGUgU2xpY2UgZG9lc24ndCBtYXR0ZXIgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyB9
IGVsc2UgaWYgKGF0dGFjaG1lbnQudGV4VGFyZ2V0ID09IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eFRhcmdldC5URVhUQVJHRVRfQ1VCRV9NQVBfQVJSQVkpIHsKKyAgICAgICAgICAgICAgICAvLyAg
ICAgREVfQVNTRVJUKGNvbnRhaW5lci50ZXh0dXJlVHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5UZXh0dXJlVHlwZS5UWVBFX0NVQkVfTUFQX0FSUkFZKTsKKyAgICAgICAgICAgICAgICAvLyAg
ICAgdmFyIHRleEN1YmVBcnIgPSBjb250YWluZXIudGV4dHVyZTsKKyAgICAgICAgICAgICAgICAv
LworICAgICAgICAgICAgICAgIC8vICAgICBpZiAodGV4Q3ViZUFyci5oYXNMZXZlbChhdHRhY2ht
ZW50LmxldmVsKSkKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgIGxldmVsID0gdGV4Q3ViZUFy
ci5nZXRMZXZlbChhdHRhY2htZW50LmxldmVsKTsgLy8gXG5vdGUgU2xpY2UgZG9lc24ndCBtYXR0
ZXIgaGVyZS4KKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdzZ2xyUmVmZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZlciBhdHRhY2hlZCB0
byBhIHRleHR1cmUgYnV0IG5vIHZhbGlkIHRhcmdldCBzcGVjaWZpZWQuJyk7CisKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50V2lkdGggPSBsZXZlbC5nZXRXaWR0aCgpOworICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRIZWlnaHQgPSBsZXZlbC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAg
ICBhdHRhY2htZW50Rm9ybWF0ID0gbGV2ZWwuZ2V0Rm9ybWF0KCk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGF0dGFjaG1lbnQudHlwZSA9PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50
VHlwZS5BVFRBQ0hNRU5UVFlQRV9SRU5ERVJCVUZGRVIpIHsKKyAgICAgICAgICAgICAgICB2YXIg
cmVuZGVyYnVmZmVyID0gYXR0YWNobWVudC5vYmplY3Q7CisKKyAgICAgICAgICAgICAgICBhdHRh
Y2htZW50V2lkdGggPSByZW5kZXJidWZmZXIuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgICAgICBh
dHRhY2htZW50SGVpZ2h0ID0gcmVuZGVyYnVmZmVyLmdldEhlaWdodCgpOworICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRGb3JtYXQgPSByZW5kZXJidWZmZXIuZ2V0Rm9ybWF0KCk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gU2tpcCByZXN0IG9mIGNo
ZWNrcy4KKworICAgICAgICAgICAgaWYgKCFoYXNBdHRhY2htZW50ICYmIGF0dGFjaG1lbnRXaWR0
aCA+IDAgJiYgYXR0YWNobWVudEhlaWdodCA+IDApIHsKKyAgICAgICAgICAgICAgICB3aWR0aCA9
IGF0dGFjaG1lbnRXaWR0aDsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBhdHRhY2htZW50SGVp
Z2h0OworICAgICAgICAgICAgICAgIGhhc0F0dGFjaG1lbnQgPSB0cnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChhdHRhY2htZW50V2lkdGggIT0gd2lkdGggfHwgYXR0YWNobWVudEhlaWdodCAh
PSBoZWlnaHQpCisgICAgICAgICAgICAgICAgZGltZW5zaW9uc09rID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIC8vIFZhbGlkYXRlIGF0dGFjaG1lbnQgcG9pbnQgY29tcGF0aWJpbGl0eS4KKyAgICAg
ICAgICAgIHN3aXRjaCAoYXR0YWNobWVudEZvcm1hdC5vcmRlcikgeworICAgICAgICAgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUjoKKyAgICAgICAgICAgICAgICBjYXNlIHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHOgorICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkdCOgorICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFu
bmVsT3JkZXIuUkdCQToKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLnNSR0I6CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5z
UkdCQToKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50ICE9IHNnbHJSZWZlcmVuY2VDb250
ZXh0LkF0dGFjaG1lbnRQb2ludC5BVFRBQ0hNRU5UUE9JTlRfQ09MT1IwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0YWNobWVudENvbXBsZXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5EOgorICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnQgIT0gc2dsclJlZmVyZW5jZUNvbnRl
eHQuQXR0YWNobWVudFBvaW50LkFUVEFDSE1FTlRQT0lOVF9ERVBUSCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRDb21wbGV0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50ICE9IHNnbHJSZWZlcmVuY2VDb250ZXh0
LkF0dGFjaG1lbnRQb2ludC5BVFRBQ0hNRU5UUE9JTlRfU1RFTkNJTCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRDb21wbGV0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
RFM6CisgICAgICAgICAgICAgICAgICAgIGlmIChwb2ludCAhPSBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5BdHRhY2htZW50UG9pbnQuQVRUQUNITUVOVFBPSU5UX0RFUFRIICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICBwb2ludCAhPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50UG9pbnQu
QVRUQUNITUVOVFBPSU5UX1NURU5DSUwpCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2ht
ZW50Q29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J1Vuc3VwcG9ydGVkIGF0dGFjaG1lbnQgY2hhbm5lbCBvcmRlcjonICsgYXR0YWNobWVudEZvcm1h
dC5vcmRlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWF0dGFj
aG1lbnRDb21wbGV0ZSkKKyAgICAgICAgICAgIHJldHVybiBnbC5GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIGVsc2UgaWYgKCFoYXNBdHRhY2htZW50KQorICAgICAg
ICAgICAgcmV0dXJuIGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5U
OworICAgICAgICBlbHNlIGlmICghZGltZW5zaW9uc09rKQorICAgICAgICAgICAgcmV0dXJuIGds
LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbW9kZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5
cGUucHJlZHJhd0Vycm9yQ2hlY2tzID0gZnVuY3Rpb24obW9kZSkgeworICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKG1vZGUgIT0gZ2wuUE9JTlRTICYmCisgICAgICAgICAgICAg
ICAgICAgIG1vZGUgIT0gZ2wuTElORV9TVFJJUCAmJiBtb2RlICE9IGdsLkxJTkVfTE9PUCAmJiBt
b2RlICE9IGdsLkxJTkVTICYmCisgICAgICAgICAgICAgICAgICAgIG1vZGUgIT0gZ2wuVFJJQU5H
TEVfU1RSSVAgJiYgbW9kZSAhPSBnbC5UUklBTkdMRV9GQU4gJiYgbW9kZSAhPSBnbC5UUklBTkdM
RVMsCisgICAgICAgICAgICAgICAgICAgIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gXHRvZG8gW2phcmtrb10gVW5jb21tZW50IGZvbGxv
d2luZyBjb2RlIHdoZW4gdGhlIGJ1ZmZlciBtYXBwaW5nIHN1cHBvcnQgaXMgYWRkZWQKKyAgICAg
ICAgLy9mb3IgKHNpemVfdCBuZHggPSAwOyBuZHggPCB2YW8ubV9hcnJheXMubGVuZ3RoOyArK25k
eCkKKyAgICAgICAgLy8gIGlmICh2YW8ubV9hcnJheXNbbmR4XS5lbmFibGVkICYmIHZhby5tX2Fy
cmF5c1tuZHhdLmJ1ZmZlckJpbmRpbmcgJiYgdmFvLm1fYXJyYXlzW25keF0uYnVmZmVyQmluZGlu
Zy0+aXNNYXBwZWQpCisgICAgICAgIC8vICAgICAgUkNfRVJST1JfUkVUKGdsLklOVkFMSURfT1BF
UkFUSU9OLCBSQ19SRVRfVk9JRCk7CisKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRF
cnJvcih0aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRFJBV19GUkFNRUJVRkZFUikgIT0g
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBEcmF3cyBxdWFkcyBmcm9tIHZlcnRleCBhcnJheXMKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlIEdMIHByaW1pdGl2ZSB0eXBlIHRvIGRyYXcgd2l0aC4K
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBmaXJzdCBGaXJzdCB2ZXJ0ZXggdG8gYmVnaW4gZHJhd2lu
ZyB3aXRoCisgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgSG93IG1hbnkgdmVydGljZXMgdG8g
ZHJhdyAobm90IGNvdW50aW5nIHZlcnRpY2VzIGJlZm9yZSBmaXJzdCkKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSBpbnN0YW5jZUNvdW50CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5S
ZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kcmF3QXJyYXlzSW5zdGFuY2VkID0gZnVuY3Rpb24o
bW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KSB7CisgICAgICAgIGlmICh0aGlzLmNv
bmRpdGlvbmFsU2V0RXJyb3IoZmlyc3QgPCAwIHx8IGNvdW50IDwgMCB8fCBpbnN0YW5jZUNvdW50
IDwgMCwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKCF0aGlzLnByZWRyYXdFcnJvckNoZWNrcyhtb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBBbGwgaXMgb2sKKyAgICAgICAgdGhpcy5kcmF3UXVhZHMobW9kZSwgZmly
c3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge251bWJlcn0gbW9kZSBHTCBwcmltaXRpdmUgdHlwZSB0byBkcmF3IHdpdGguCisgICAgKiBA
cGFyYW0ge251bWJlcn0gc3RhcnQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBjb3VudCBIb3cgbWFueSB2ZXJ0aWNlcyB0byBkcmF3IChub3QgY291bnRp
bmcgdmVydGljZXMgYmVmb3JlIGZpcnN0KQorICAgICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgRGF0
YSB0eXBlCisgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kcmF3UmFuZ2VFbGVtZW50
cyA9IGZ1bmN0aW9uKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBvZmZzZXQpIHsKKyAg
ICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihlbmQgPCBzdGFydCwgZ2wuSU5WQUxJ
RF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5kcmF3RWxlbWVu
dHMobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCk7CisgICAgfTsKKworICAgIC8qKgorICAgICog
QHBhcmFtIHtudW1iZXJ9IG1vZGUgR0wgcHJpbWl0aXZlIHR5cGUgdG8gZHJhdyB3aXRoLgorICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IEhvdyBtYW55IHZlcnRpY2VzIHRvIGRyYXcgKG5vdCBj
b3VudGluZyB2ZXJ0aWNlcyBiZWZvcmUgZmlyc3QpCisgICAgKiBAcGFyYW0ge251bWJlcn0gdHlw
ZSBEYXRhIHR5cGUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmRyYXdFbGVtZW50
cyA9IGZ1bmN0aW9uKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQpIHsKKyAgICAgICAgdGhpcy5k
cmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgMSk7CisgICAg
fTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IG1vZGUgR0wgcHJpbWl0aXZlIHR5
cGUgdG8gZHJhdyB3aXRoLgorICAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IEhvdyBtYW55IHZl
cnRpY2VzIHRvIGRyYXcgKG5vdCBjb3VudGluZyB2ZXJ0aWNlcyBiZWZvcmUgZmlyc3QpCisgICAg
KiBAcGFyYW0ge251bWJlcn0gdHlwZSBEYXRhIHR5cGUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBv
ZmZzZXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnN0YW5jZUNvdW50CisgICAgKi8KKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQgPSBmdW5jdGlvbihtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBpbnN0YW5j
ZUNvdW50KSB7CisgICAgICAgIHRoaXMuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCht
b2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBpbnN0YW5jZUNvdW50LCAwKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gbW9kZSBHTCBwcmltaXRpdmUgdHlwZSB0byBk
cmF3IHdpdGguCisgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgSG93IG1hbnkgdmVydGljZXMg
dG8gZHJhdyAobm90IGNvdW50aW5nIHZlcnRpY2VzIGJlZm9yZSBmaXJzdCkKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSB0eXBlIERhdGEgdHlwZQorICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAor
ICAgICogQHBhcmFtIHtudW1iZXJ9IGluc3RhbmNlQ291bnQKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBiYXNlVmVydGV4CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VD
b250ZXh0LnByb3RvdHlwZS5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4ID0gZnVuY3Rp
b24obW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRleCkg
eworICAgICAgICB2YXIgdmFvID0gdGhpcy5tX3ZlcnRleEFycmF5QmluZGluZzsKKworICAgICAg
ICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKHR5cGUgIT0gZ2wuVU5TSUdORURfQllURSAm
JgorICAgICAgICAgICAgICAgICAgICB0eXBlICE9IGdsLlVOU0lHTkVEX1NIT1JUICYmCisgICAg
ICAgICAgICAgICAgICAgIHR5cGUgIT0gZ2wuVU5TSUdORURfSU5ULCBnbC5JTlZBTElEX0VOVU0p
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVy
cm9yKGNvdW50IDwgMCB8fCBpbnN0YW5jZUNvdW50IDwgMCwgZ2wuSU5WQUxJRF9WQUxVRSkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLnByZWRyYXdFcnJvckNoZWNr
cyhtb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25hbFNldEVycm9yKGNvdW50ID4gMCAmJiAhdmFvLm1fZWxlbWVudEFycmF5QnVmZmVyQmluZGlu
ZywgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAv
LyBBbGwgaXMgb2sKKyAgICAgICAgdmFyIGRhdGEgPSB2YW8ubV9lbGVtZW50QXJyYXlCdWZmZXJC
aW5kaW5nLmdldERhdGEoKTsKKyAgICAgICAgdmFyIGluZGljZXMgPSBuZXcgcnJSZW5kZXJlci5E
cmF3SW5kaWNlcyhkYXRhLCBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xJbmRleFR5cGUodHlwZSks
IG9mZnNldCwgYmFzZVZlcnRleCk7CisKKyAgICAgICAgdGhpcy5kcmF3UXVhZHMobW9kZSwgaW5k
aWNlcywgY291bnQsIGluc3RhbmNlQ291bnQpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBw
YXJhbSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZm
ZXJBY2Nlc3N9IGFjY2VzcworICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAqLwor
ICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldEJ1ZmZlclJlY3QgPSBmdW5jdGlvbihhY2Nlc3Mp
IHsgcmV0dXJuIFswLCAwLCBhY2Nlc3MucmF3KCkuZ2V0SGVpZ2h0KCksIGFjY2Vzcy5yYXcoKS5n
ZXREZXB0aCgpXTsgfTsKKworICAgIC8qKgorICAgICogQHJldHVybiB7cnJNdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9CisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5nZXREcmF3
Q29sb3JidWZmZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9kcmF3RnJhbWVi
dWZmZXJCaW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIHJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZl
ckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLmZyb21TaW5nbGVzYW1wbGVBY2Nl
c3ModGhpcy5nZXRGYm9BdHRhY2htZW50KHRoaXMubV9kcmF3RnJhbWVidWZmZXJCaW5kaW5nLCBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50UG9pbnQuQVRUQUNITUVOVFBPSU5UX0NPTE9S
MCkpOworICAgICAgICByZXR1cm4gdGhpcy5tX2RlZmF1bHRDb2xvcmJ1ZmZlcjsKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3Mu
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmdldERyYXdEZXB0aGJ1ZmZlciA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5tX2RyYXdGcmFtZWJ1ZmZlckJpbmRpbmcpCisg
ICAgICAgICAgICByZXR1cm4gcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2Ft
cGxlUGl4ZWxCdWZmZXJBY2Nlc3MuZnJvbVNpbmdsZXNhbXBsZUFjY2Vzcyh0aGlzLmdldEZib0F0
dGFjaG1lbnQodGhpcy5tX2RyYXdGcmFtZWJ1ZmZlckJpbmRpbmcsIHNnbHJSZWZlcmVuY2VDb250
ZXh0LkF0dGFjaG1lbnRQb2ludC5BVFRBQ0hNRU5UUE9JTlRfREVQVEgpKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMubV9kZWZhdWx0RGVwdGhidWZmZXI7CisgICAgfTsKKworICAgIC8qKgorICAgICog
QHJldHVybiB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3N9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VD
b250ZXh0LnByb3RvdHlwZS5nZXREcmF3U3RlbmNpbGJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBpZiAodGhpcy5tX2RyYXdGcmFtZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAgICByZXR1
cm4gcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MuZnJvbVNpbmdsZXNhbXBsZUFjY2Vzcyh0aGlzLmdldEZib0F0dGFjaG1lbnQodGhpcy5t
X2RyYXdGcmFtZWJ1ZmZlckJpbmRpbmcsIHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQ
b2ludC5BVFRBQ0hNRU5UUE9JTlRfU1RFTkNJTCkpOworICAgICAgICByZXR1cm4gdGhpcy5tX2Rl
ZmF1bHRTdGVuY2lsYnVmZmVyOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEByZXR1cm4ge3Jy
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNz
fQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90
b3R5cGUuZ2V0UmVhZERlcHRoYnVmZmVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlz
Lm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZykKKyAgICAgICAgICAgIHJldHVybiByck11bHRpc2Ft
cGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5mcm9tU2lu
Z2xlc2FtcGxlQWNjZXNzKHRoaXMuZ2V0RmJvQXR0YWNobWVudCh0aGlzLm1fcmVhZEZyYW1lYnVm
ZmVyQmluZGluZywgc2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFBvaW50LkFUVEFDSE1F
TlRQT0lOVF9ERVBUSCkpOworICAgICAgICByZXR1cm4gdGhpcy5tX2RlZmF1bHREZXB0aGJ1ZmZl
cjsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtyck11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30KKyAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmdldFJlYWRTdGVu
Y2lsYnVmZmVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLm1fcmVhZEZyYW1lYnVm
ZmVyQmluZGluZykKKyAgICAgICAgICAgIHJldHVybiByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5mcm9tU2luZ2xlc2FtcGxlQWNjZXNz
KHRoaXMuZ2V0RmJvQXR0YWNobWVudCh0aGlzLm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZywgc2ds
clJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFBvaW50LkFUVEFDSE1FTlRQT0lOVF9TVEVOQ0lM
KSk7CisgICAgICAgIHJldHVybiB0aGlzLm1fZGVmYXVsdFN0ZW5jaWxidWZmZXI7CisgICAgfTsK
KworICAgIC8qKgorICAgICogQHBhcmFtIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3Mu
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgICAgKiBAcGFyYW0ge251bWJl
cn0gcworICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB5Cisg
ICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250
ZXh0LndyaXRlRGVwdGhPbmx5ID0gZnVuY3Rpb24oYWNjZXNzLCBzLCB4LCB5LCBkZXB0aCkgeyBh
Y2Nlc3MucmF3KCkuc2V0UGl4RGVwdGgoZGVwdGgsIHMsIHgsIHkpOyB9OworCisgICAgLyoqCisg
ICAgKiBAcGFyYW0ge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzfSBhY2Nlc3MKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisgICAgKiBA
cGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzdGVuY2lsCisgICAgKiBAcGFyYW0ge251bWJlcn0gd3JpdGVNYXNrCisgICAgKi8K
KyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC53cml0ZVN0ZW5jaWxPbmx5ID0gZnVuY3Rpb24oYWNj
ZXNzLCBzLCB4LCB5LCBzdGVuY2lsLCB3cml0ZU1hc2spIHsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBvbGRWYWwgPSBhY2Nlc3MucmF3KCkuZ2V0UGl4ZWxJbnQocywgeCwgeSlb
M107CisgICAgICAgIGFjY2Vzcy5yYXcoKS5zZXRQaXhTdGVuY2lsKChvbGRWYWwgJiB+d3JpdGVN
YXNrKSB8IChzdGVuY2lsICYgd3JpdGVNYXNrKSwgcywgeCwgeSk7CisgICAgfTsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdHMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisg
ICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5t
YXNrU3RlbmNpbCA9IGZ1bmN0aW9uKGJpdHMsIHMpIHsgcmV0dXJuIHMgJiAoKDEgPDwgYml0cykg
LSAxKTsgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlcnMKKyAgICAq
LworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmNs
ZWFyID0gZnVuY3Rpb24oYnVmZmVycykgeworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNl
dEVycm9yKChidWZmZXJzICYgfihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVS
X0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpICE9IDAsIGdsLklOVkFMSURfVkFMVUUpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBjb2xv
ckJ1ZjAgPSB0aGlzLmdldERyYXdDb2xvcmJ1ZmZlcigpOworICAgICAgICAvKiogQHR5cGUge3Jy
TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNz
fSAqLyB2YXIgZGVwdGhCdWYgPSB0aGlzLmdldERyYXdEZXB0aGJ1ZmZlcigpOworICAgICAgICAv
KiogQHR5cGUge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVs
QnVmZmVyQWNjZXNzfSAqLyB2YXIgc3RlbmNpbEJ1ZiA9IHRoaXMuZ2V0RHJhd1N0ZW5jaWxidWZm
ZXIoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaGFzQ29sb3IwID0gLyoq
IEB0eXBlIHshYm9vbGVhbn0gKi8gKGNvbG9yQnVmMCAmJiAhY29sb3JCdWYwLmlzRW1wdHkoKSk7
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc0RlcHRoID0gLyoqIEB0eXBl
IHshYm9vbGVhbn0gKi8gKGRlcHRoQnVmICYmICFkZXB0aEJ1Zi5pc0VtcHR5KCkpOworICAgICAg
ICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBoYXNTdGVuY2lsID0gLyoqIEB0eXBlIHshYm9v
bGVhbn0gKi8gKHN0ZW5jaWxCdWYgJiYgIXN0ZW5jaWxCdWYuaXNFbXB0eSgpKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYmFzZUFyZWEgPSB0aGlzLm1fc2Npc3Nv
ckVuYWJsZWQgPyB0aGlzLm1fc2Npc3NvckJveCA6IFswLCAwLCAweDdmZmZmZmZmLCAweDdmZmZm
ZmZmXTsKKworICAgICAgICAvKiogQHR5cGUge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vz
cy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgYWNjZXNzOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1NoYXJlZERlcHRoU3RlbmNpbDsKKworICAgICAg
ICBpZiAoaGFzQ29sb3IwICYmIChidWZmZXJzICYgZ2wuQ09MT1JfQlVGRkVSX0JJVCkgIT0gMCkg
eworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3JBcmVh
ID0gZGVNYXRoLmludGVyc2VjdChiYXNlQXJlYSwgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0QnVm
ZmVyUmVjdChjb2xvckJ1ZjApKTsKKyAgICAgICAgICAgIGFjY2VzcyA9IGNvbG9yQnVmMC5nZXRT
dWJyZWdpb24oY29sb3JBcmVhKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8g
dmFyIGlzU1JHQiA9IGNvbG9yQnVmMC5yYXcoKS5nZXRGb3JtYXQoKS5pc1NSR0IoKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGMgPSAoaXNTUkdCICYmIHRo
aXMubV9zUkdCVXBkYXRlRW5hYmxlZCkgPyB0Y3VUZXh0dXJlVXRpbC5saW5lYXJUb1NSR0IodGhp
cy5tX2NsZWFyQ29sb3IpIDogdGhpcy5tX2NsZWFyQ29sb3I7CisgICAgICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBtYXNrVXNlZCA9ICF0aGlzLm1fY29sb3JNYXNrWzBdIHx8ICF0
aGlzLm1fY29sb3JNYXNrWzFdIHx8ICF0aGlzLm1fY29sb3JNYXNrWzJdIHx8ICF0aGlzLm1fY29s
b3JNYXNrWzNdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgbWFza1pl
cm8gPSAhdGhpcy5tX2NvbG9yTWFza1swXSAmJiAhdGhpcy5tX2NvbG9yTWFza1sxXSAmJiAhdGhp
cy5tX2NvbG9yTWFza1syXSAmJiAhdGhpcy5tX2NvbG9yTWFza1szXTsKKworICAgICAgICAgICAg
aWYgKCFtYXNrVXNlZCkKKyAgICAgICAgICAgICAgICBhY2Nlc3MuY2xlYXIoYyk7CisgICAgICAg
ICAgICBlbHNlIGlmICghbWFza1plcm8pIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0g
MDsgeSA8IGFjY2Vzcy5yYXcoKS5nZXREZXB0aCgpOyB5KyspCisgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIHggPSAwOyB4IDwgYWNjZXNzLnJhdygpLmdldEhlaWdodCgpOyB4KyspCisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGFjY2Vzcy5nZXROdW1TYW1w
bGVzKCk7IHMrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MucmF3KCkuc2V0
UGl4ZWwodGN1VGV4dHVyZVV0aWwuc2VsZWN0KGMsIGFjY2Vzcy5yYXcoKS5nZXRQaXhlbChzLCB4
LCB5KSwgdGhpcy5tX2NvbG9yTWFzayksIHMsIHgsIHkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLy8gZWxzZSBhbGwgY2hhbm5lbHMgbWFza2VkIG91dAorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGhhc0RlcHRoICYmIChidWZmZXJzICYgZ2wuREVQVEhfQlVGRkVSX0JJVCkgIT0gMCAm
JiB0aGlzLm1fZGVwdGhNYXNrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBkZXB0aEFyZWEgPSBkZU1hdGguaW50ZXJzZWN0KGJhc2VBcmVhLCBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5nZXRCdWZmZXJSZWN0KGRlcHRoQnVmKSk7CisgICAgICAgICAgICBhY2Nl
c3MgPSBkZXB0aEJ1Zi5nZXRTdWJyZWdpb24oZGVwdGhBcmVhKTsKKyAgICAgICAgICAgIGlzU2hh
cmVkRGVwdGhTdGVuY2lsID0gZGVwdGhCdWYucmF3KCkuZ2V0Rm9ybWF0KCkub3JkZXIgIT0gdGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuRDsKKworICAgICAgICAgICAgaWYgKGlzU2hhcmVkRGVwdGhT
dGVuY2lsKSB7CisgICAgICAgICAgICAgICAgLy8gU2xvdyBwYXRoIHdoZXJlIHN0ZW5jaWwgaXMg
bWFza2VkIG91dCBpbiB3cml0ZS4KKyAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8
IGFjY2Vzcy5yYXcoKS5nZXREZXB0aCgpOyB5KyspCisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIHggPSAwOyB4IDwgYWNjZXNzLnJhdygpLmdldEhlaWdodCgpOyB4KyspCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGFjY2Vzcy5nZXROdW1TYW1wbGVzKCk7
IHMrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC53
cml0ZURlcHRoT25seShhY2Nlc3MsIHMsIHgsIHksIHRoaXMubV9jbGVhckRlcHRoKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGFjY2Vzcy5jbGVhcihbdGhpcy5tX2NsZWFy
RGVwdGgsIDAsIDAsIDBdKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNTdGVuY2lsICYm
IChidWZmZXJzICYgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwKSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzdGVuY2lsQXJlYSA9IGRlTWF0aC5pbnRl
cnNlY3QoYmFzZUFyZWEsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldEJ1ZmZlclJlY3Qoc3RlbmNp
bEJ1ZikpOworICAgICAgICAgICAgYWNjZXNzID0gc3RlbmNpbEJ1Zi5nZXRTdWJyZWdpb24oc3Rl
bmNpbEFyZWEpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVuY2ls
Qml0cyA9IHN0ZW5jaWxCdWYucmF3KCkuZ2V0Rm9ybWF0KCkuZ2V0TnVtU3RlbmNpbEJpdHMoKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RlbmNpbCA9IHNnbHJSZWZl
cmVuY2VDb250ZXh0Lm1hc2tTdGVuY2lsKHN0ZW5jaWxCaXRzLCB0aGlzLm1fY2xlYXJTdGVuY2ls
KTsKKyAgICAgICAgICAgIGlzU2hhcmVkRGVwdGhTdGVuY2lsID0gc3RlbmNpbEJ1Zi5yYXcoKS5n
ZXRGb3JtYXQoKS5vcmRlciAhPSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5TOworCisgICAgICAg
ICAgICBpZiAoaXNTaGFyZWREZXB0aFN0ZW5jaWwgfHwgKCh0aGlzLm1fc3RlbmNpbFtyckRlZnMu
RmFjZVR5cGUuRkFDRVRZUEVfRlJPTlRdLndyaXRlTWFzayAmICgoMSA8PCBzdGVuY2lsQml0cykg
LSAxKSkgIT0gKCgxIDw8IHN0ZW5jaWxCaXRzKSAtIDEpKSkgeworICAgICAgICAgICAgICAgIC8v
IFNsb3cgcGF0aCB3aGVyZSBkZXB0aCBvciBzdGVuY2lsIGlzIG1hc2tlZCBvdXQgaW4gd3JpdGUu
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBhY2Nlc3MucmF3KCkuZ2V0RGVw
dGgoKTsgeSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFjY2Vz
cy5yYXcoKS5nZXRIZWlnaHQoKTsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgcyA9IDA7IHMgPCBhY2Nlc3MuZ2V0TnVtU2FtcGxlcygpOyBzKyspCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2dsclJlZmVyZW5jZUNvbnRleHQud3JpdGVTdGVuY2lsT25seShhY2Nl
c3MsIHMsIHgsIHksIHN0ZW5jaWwsIHRoaXMubV9zdGVuY2lsW3JyRGVmcy5GYWNlVHlwZS5GQUNF
VFlQRV9GUk9OVF0ud3JpdGVNYXNrKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGFjY2Vzcy5jbGVhcihbMCwgMCwgMCwgc3RlbmNpbF0pOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlcgorICAgICogQHBhcmFtIHtu
dW1iZXJ9IGRyYXdidWZmZXIKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmFsdWUKKyAg
ICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuY2xlYXJCdWZmZXJpdiA9IGZ1bmN0aW9uKGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJv
cihidWZmZXIgIT0gZ2wuQ09MT1IgJiYgYnVmZmVyICE9IGdsLlNURU5DSUwsIGdsLklOVkFMSURf
RU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IoZHJhd2J1ZmZlciAhPSAwLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBiYXNl
QXJlYSA9IHRoaXMubV9zY2lzc29yRW5hYmxlZCA/IHRoaXMubV9zY2lzc29yQm94IDogWzAsIDAs
IDB4N2ZmZmZmZmYsIDB4N2ZmZmZmZmZdOworCisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNh
bXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZh
ciBhY2Nlc3M7CisKKyAgICAgICAgaWYgKGJ1ZmZlciA9PSBnbC5DT0xPUikgeworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQ
aXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGNvbG9yQnVmID0gdGhpcy5nZXREcmF3Q29sb3JidWZm
ZXIoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIG1hc2tVc2VkID0g
IXRoaXMubV9jb2xvck1hc2tbMF0gfHwgIXRoaXMubV9jb2xvck1hc2tbMV0gfHwgIXRoaXMubV9j
b2xvck1hc2tbMl0gfHwgIXRoaXMubV9jb2xvck1hc2tbM107CisgICAgICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBtYXNrWmVybyA9ICF0aGlzLm1fY29sb3JNYXNrWzBdICYmICF0
aGlzLm1fY29sb3JNYXNrWzFdICYmICF0aGlzLm1fY29sb3JNYXNrWzJdICYmICF0aGlzLm1fY29s
b3JNYXNrWzNdOworCisgICAgICAgICAgICBpZiAoIWNvbG9yQnVmLmlzRW1wdHkoKSAmJiAhbWFz
a1plcm8pIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciBjb2xvckFyZWEgPSBkZU1hdGguaW50ZXJzZWN0KGJhc2VBcmVhLCBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5nZXRCdWZmZXJSZWN0KGNvbG9yQnVmKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzID0g
Y29sb3JCdWYuZ2V0U3VicmVnaW9uKGNvbG9yQXJlYSk7CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFtYXNrVXNlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5jbGVhcih2YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciB5ID0gMDsgeSA8IGFjY2Vzcy5yYXcoKS5nZXREZXB0aCgpOyB5KyspCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFjY2Vzcy5yYXcoKS5nZXRIZWlnaHQo
KTsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwg
YWNjZXNzLmdldE51bVNhbXBsZXMoKTsgcysrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3MucmF3KCkuc2V0UGl4ZWwodGN1VGV4dHVyZVV0aWwuc2VsZWN0KHZhbHVlLCBh
Y2Nlc3MucmF3KCkuZ2V0UGl4ZWwocywgeCwgeSksIHRoaXMubV9jb2xvck1hc2spLCBzLCB4LCB5
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPT0gZ2wuU1RFTkNJTCkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgYnVmZmVyIHR5cGU6ICcgKyBidWZmZXIpOwor
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nl
c3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIHN0ZW5jaWxCdWYgPSB0aGlz
LmdldERyYXdTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAgICAgICAgIGlmICghc3RlbmNpbEJ1Zi5p
c0VtcHR5KCkgJiYgdGhpcy5tX3N0ZW5jaWxbcnJEZWZzLkZhY2VUeXBlLkZBQ0VUWVBFX0ZST05U
XS53cml0ZU1hc2sgIT0gMCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGFyZWEgPSBkZU1hdGguaW50ZXJzZWN0KGJhc2VBcmVhLCBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5nZXRCdWZmZXJSZWN0KHN0ZW5jaWxCdWYpKTsKKyAgICAgICAgICAgICAgICBh
Y2Nlc3MgPSBzdGVuY2lsQnVmLmdldFN1YnJlZ2lvbihhcmVhKTsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN0ZW5jaWwgPSB2YWx1ZVswXTsKKworICAgICAgICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCBhY2Nlc3MucmF3KCkuZ2V0RGVwdGgoKTsgeSsrKQorICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFjY2Vzcy5yYXcoKS5nZXRIZWln
aHQoKTsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCBh
Y2Nlc3MuZ2V0TnVtU2FtcGxlcygpOyBzKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQud3JpdGVTdGVuY2lsT25seShhY2Nlc3MsIHMsIHgsIHksIHN0
ZW5jaWwsIHRoaXMubV9zdGVuY2lsW3JyRGVmcy5GYWNlVHlwZS5GQUNFVFlQRV9GUk9OVF0ud3Jp
dGVNYXNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXIKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkcmF3YnVm
ZmVyCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZhbHVlCisgICAgKiBAdGhyb3dzIHtF
cnJvcn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQu
cHJvdG90eXBlLmNsZWFyQnVmZmVyZnYgPSBmdW5jdGlvbihidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlKSB7CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoYnVmZmVyICE9IGds
LkNPTE9SICYmIGJ1ZmZlciAhPSBnbC5ERVBUSCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihkcmF3YnVm
ZmVyICE9IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGJhc2VBcmVhID0gdGhpcy5tX3Nj
aXNzb3JFbmFibGVkID8gdGhpcy5tX3NjaXNzb3JCb3ggOiBbMCwgMCwgMHg3ZmZmZmZmZiwgMHg3
ZmZmZmZmZl07CisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNj
ZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBhY2Nlc3M7CisgICAgICAg
IGlmIChidWZmZXIgPT0gZ2wuQ09MT1IpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICov
IHZhciBjb2xvckJ1ZiA9IHRoaXMuZ2V0RHJhd0NvbG9yYnVmZmVyKCk7CisgICAgICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBtYXNrVXNlZCA9ICF0aGlzLm1fY29sb3JNYXNrWzBd
IHx8ICF0aGlzLm1fY29sb3JNYXNrWzFdIHx8ICF0aGlzLm1fY29sb3JNYXNrWzJdIHx8ICF0aGlz
Lm1fY29sb3JNYXNrWzNdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIg
bWFza1plcm8gPSAhdGhpcy5tX2NvbG9yTWFza1swXSAmJiAhdGhpcy5tX2NvbG9yTWFza1sxXSAm
JiAhdGhpcy5tX2NvbG9yTWFza1syXSAmJiAhdGhpcy5tX2NvbG9yTWFza1szXTsKKworICAgICAg
ICAgICAgaWYgKCFjb2xvckJ1Zi5pc0VtcHR5KCkgJiYgIW1hc2taZXJvKSB7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3JBcmVhID0gZGVNYXRo
LmludGVyc2VjdChiYXNlQXJlYSwgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0QnVmZmVyUmVjdChj
b2xvckJ1ZikpOworICAgICAgICAgICAgICAgIGFjY2VzcyA9IGNvbG9yQnVmLmdldFN1YnJlZ2lv
bihjb2xvckFyZWEpOworICAgICAgICAgICAgICAgIHZhciBjb2xvciA9IHZhbHVlOworCisgICAg
ICAgICAgICAgICAgaWYgKHRoaXMubV9zUkdCVXBkYXRlRW5hYmxlZCAmJiBhY2Nlc3MucmF3KCku
Z2V0Rm9ybWF0KCkuaXNTUkdCKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gdGN1VGV4
dHVyZVV0aWwubGluZWFyVG9TUkdCKGNvbG9yKTsKKworICAgICAgICAgICAgICAgIGlmICghbWFz
a1VzZWQpCisgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5jbGVhcihjb2xvcik7CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwg
YWNjZXNzLnJhdygpLmdldERlcHRoKCk7IHkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIHggPSAwOyB4IDwgYWNjZXNzLnJhdygpLmdldEhlaWdodCgpOyB4KyspCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCBhY2Nlc3MuZ2V0TnVtU2Ft
cGxlcygpOyBzKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5yYXco
KS5zZXRQaXhlbCh0Y3VUZXh0dXJlVXRpbC5zZWxlY3QoY29sb3IsIGFjY2Vzcy5yYXcoKS5nZXRQ
aXhlbChzLCB4LCB5KSwgdGhpcy5tX2NvbG9yTWFzayksIHMsIHgsIHkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChi
dWZmZXIgIT09IGdsLkRFUFRIKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5l
eHBlY3RlZCBidWZmZXIgdHlwZTogJyArIGJ1ZmZlcik7CisKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3N9ICovIHZhciBkZXB0aEJ1ZiA9IHRoaXMuZ2V0RHJhd0RlcHRoYnVmZmVyKCk7CisKKyAg
ICAgICAgICAgIGlmICghZGVwdGhCdWYuaXNFbXB0eSgpICYmIHRoaXMubV9kZXB0aE1hc2spIHsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhcmVhID0g
ZGVNYXRoLmludGVyc2VjdChiYXNlQXJlYSwgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0QnVmZmVy
UmVjdChkZXB0aEJ1ZikpOworICAgICAgICAgICAgICAgIGFjY2VzcyA9IGRlcHRoQnVmLmdldFN1
YnJlZ2lvbihhcmVhKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGRlcHRoID0gdmFsdWVbMF07CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8
IGFjY2Vzcy5yYXcoKS5nZXREZXB0aCgpOyB5KyspCisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIHggPSAwOyB4IDwgYWNjZXNzLnJhdygpLmdldEhlaWdodCgpOyB4KyspCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGFjY2Vzcy5nZXROdW1TYW1wbGVzKCk7
IHMrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC53
cml0ZURlcHRoT25seShhY2Nlc3MsIHMsIHgsIHksIGRlcHRoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXIK
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkcmF3YnVmZmVyCisgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IHZhbHVlCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VD
b250ZXh0LnByb3RvdHlwZS5jbGVhckJ1ZmZlcnVpdiA9IGZ1bmN0aW9uKGJ1ZmZlciwgZHJhd2J1
ZmZlciwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihidWZm
ZXIgIT0gZ2wuQ09MT1IsIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoZHJhd2J1ZmZlciAhPSAwLCBnbC5J
TlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBiYXNlQXJlYSA9IHRoaXMubV9zY2lzc29yRW5hYmxlZCA/
IHRoaXMubV9zY2lzc29yQm94IDogWzAsIDAsIDB4N2ZmZmZmZmYsIDB4N2ZmZmZmZmZdOworCisg
ICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2Ft
cGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBjb2xvckJ1ZiA9IHRoaXMuZ2V0RHJhd0NvbG9y
YnVmZmVyKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIG1hc2tVc2VkID0g
IXRoaXMubV9jb2xvck1hc2tbMF0gfHwgIXRoaXMubV9jb2xvck1hc2tbMV0gfHwgIXRoaXMubV9j
b2xvck1hc2tbMl0gfHwgIXRoaXMubV9jb2xvck1hc2tbM107CisgICAgICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIG1hc2taZXJvID0gIXRoaXMubV9jb2xvck1hc2tbMF0gJiYgIXRoaXMu
bV9jb2xvck1hc2tbMV0gJiYgIXRoaXMubV9jb2xvck1hc2tbMl0gJiYgIXRoaXMubV9jb2xvck1h
c2tbM107CisKKyAgICAgICAgaWYgKCFjb2xvckJ1Zi5pc0VtcHR5KCkgJiYgIW1hc2taZXJvKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvckFyZWEg
PSBkZU1hdGguaW50ZXJzZWN0KGJhc2VBcmVhLCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5nZXRCdWZm
ZXJSZWN0KGNvbG9yQnVmKSk7CisgICAgICAgICAgICAvKiogQHR5cGUge3JyTXVsdGlzYW1wbGVQ
aXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgYWNj
ZXNzID0gY29sb3JCdWYuZ2V0U3VicmVnaW9uKGNvbG9yQXJlYSk7CisKKyAgICAgICAgICAgIGlm
ICghbWFza1VzZWQpCisgICAgICAgICAgICAgICAgYWNjZXNzLmNsZWFyKHZhbHVlKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBhY2Nlc3MucmF3
KCkuZ2V0RGVwdGgoKTsgeSsrKQorICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwg
YWNjZXNzLnJhdygpLmdldEhlaWdodCgpOyB4KyspCisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIHMgPSAwOyBzIDwgYWNjZXNzLmdldE51bVNhbXBsZXMoKTsgcysrKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjZXNzLnJhdygpLnNldFBpeGVsKHRjdVRleHR1cmVVdGlsLnNlbGVjdCh2
YWx1ZSwgYWNjZXNzLnJhdygpLmdldFBpeGVsKHMsIHgsIHkpLCB0aGlzLm1fY29sb3JNYXNrKSwg
cywgeCwgeSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisg
ICAgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVyCisgICAgKiBAcGFyYW0ge251bWJlcn0gZHJhd2J1
ZmZlcgorICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgICAgKiBAcGFyYW0ge251bWJlcn0g
c3RlbmNpbAorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4
dC5wcm90b3R5cGUuY2xlYXJCdWZmZXJmaSA9IGZ1bmN0aW9uKGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpIHsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihi
dWZmZXIgIT0gZ2wuREVQVEhfU1RFTkNJTCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5jbGVhckJ1ZmZlcmZ2KGdsLkRFUFRILCBkcmF3YnVmZmVy
LCBbZGVwdGhdKTsKKyAgICAgICAgdGhpcy5jbGVhckJ1ZmZlcml2KGdsLlNURU5DSUwsIGRyYXdi
dWZmZXIsIFtzdGVuY2lsXSk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1i
ZXJ9IHRhcmdldAorICAgICogQHBhcmFtIHtudW1iZXJ9IGF0dGFjaG1lbnQKKyAgICAqIEBwYXJh
bSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0fSB0ZXh0YXJnZXQKKyAgICAqIEBwYXJh
bSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gdGV4dHVyZQorICAgICog
QHBhcmFtIHtudW1iZXJ9IGxldmVsCisgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEID0gZnVuY3Rpb24odGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRl
eHR1cmUsIGxldmVsKSB7CisgICAgICAgIGlmIChhdHRhY2htZW50ID09IGdsLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkgeworICAgICAgICAgICAgLy8gQXR0YWNoIHRvIGJvdGggZGVwdGggYW5k
IHN0ZW5jaWwuCisgICAgICAgICAgICB0aGlzLmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwg
Z2wuREVQVEhfQVRUQUNITUVOVCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgICAg
ICAgICB0aGlzLmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgZ2wuU1RFTkNJTF9BVFRBQ0hN
RU5ULCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudFBvaW50fSAq
LyB2YXIgcG9pbnQgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5tYXBHTEF0dGFjaG1lbnRQb2ludChh
dHRhY2htZW50KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQu
VGV4VGFyZ2V0fSAqLyB2YXIgZmJvVGV4VGFyZ2V0ID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFw
R0xGYm9UZXhUYXJnZXQodGV4dGFyZ2V0KTsKKworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0
aW9uYWxTZXRFcnJvcih0YXJnZXQgIT0gZ2wuRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRhcmdldCAhPSBnbC5EUkFXX0ZSQU1FQlVGRkVSICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXQgIT0gZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuSU5WQUxJRF9FTlVN
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25hbFNldEVycm9yKHBvaW50ID09IHVuZGVmaW5lZCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIFNlbGVjdCBiaW5kaW5nIHBvaW50
LgorICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5GcmFtZWJ1ZmZl
cn0gKi8gdmFyIGZyYW1lYnVmZmVyQmluZGluZyA9ICh0YXJnZXQgPT0gZ2wuRlJBTUVCVUZGRVIg
fHwgdGFyZ2V0ID09IGdsLkRSQVdfRlJBTUVCVUZGRVIpID8gdGhpcy5tX2RyYXdGcmFtZWJ1ZmZl
ckJpbmRpbmcgOiB0aGlzLm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsKKyAgICAgICAgICAgIGlm
ICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIWZyYW1lYnVmZmVyQmluZGluZywgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYg
KHRleHR1cmUpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9y
KGxldmVsICE9IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS5nZXRUeXBlKCkgPT0gc2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGZib1RleFRhcmdldCAhPSBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXhUYXJnZXQuVEVYVEFSR0VUXzJELCBnbC5JTlZBTElEX09QRVJBVElPTikpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLmdldFR5cGUoKSA9PSBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFX0NVQkVfTUFQKQorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB0ZXh0dXJlIHR5cGUnKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighZGVNYXRoLmRlSW5S
YW5nZTMyKGZib1RleFRhcmdldCwgc2dsclJlZmVyZW5jZUNvbnRleHQuVGV4VGFyZ2V0LlRFWFRB
UkdFVF9DVUJFX01BUF9QT1NJVElWRV9YLCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXhUYXJnZXQu
VEVYVEFSR0VUX0NVQkVfTUFQX05FR0FUSVZFX1opLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkF0
dGFjaG1lbnR9ICovIHZhciBmYm9BdHRhY2htZW50ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0
LkF0dGFjaG1lbnQoKTsKKworICAgICAgICAgICAgaWYgKHRleHR1cmUpIHsKKyAgICAgICAgICAg
ICAgICBmYm9BdHRhY2htZW50LnR5cGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5BdHRhY2htZW50
VHlwZS5BVFRBQ0hNRU5UVFlQRV9URVhUVVJFOworICAgICAgICAgICAgICAgIGZib0F0dGFjaG1l
bnQub2JqZWN0ID0gdGV4dHVyZTsKKyAgICAgICAgICAgICAgICBmYm9BdHRhY2htZW50LnRleFRh
cmdldCA9IGZib1RleFRhcmdldDsKKyAgICAgICAgICAgICAgICBmYm9BdHRhY2htZW50LmxldmVs
ID0gbGV2ZWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFtZWJ1ZmZlckJpbmRpbmcu
c2V0QXR0YWNobWVudChwb2ludCwgZmJvQXR0YWNobWVudCk7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge251
bWJlcn0gYXR0YWNobWVudAorICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlQ29udGFpbmVyfSB0ZXh0dXJlCisgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsYXllcgorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5mcmFtZWJ1
ZmZlclRleHR1cmVMYXllciA9IGZ1bmN0aW9uKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwg
bGV2ZWwsIGxheWVyKSB7CisgICAgICAgIGlmIChhdHRhY2htZW50ID09IGdsLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkgeworICAgICAgICAgICAgLy8gQXR0YWNoIHRvIGJvdGggZGVwdGggYW5k
IHN0ZW5jaWwuCisgICAgICAgICAgICB0aGlzLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdl
dCwgZ2wuREVQVEhfQVRUQUNITUVOVCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICAgICAg
ICAgIHRoaXMuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRQb2ludH0gKi8g
dmFyIHBvaW50ID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFwR0xBdHRhY2htZW50UG9pbnQoYXR0
YWNobWVudCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodGFy
Z2V0ICE9IGdsLkZSQU1FQlVGRkVSICYmCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQg
IT0gZ2wuRFJBV19GUkFNRUJVRkZFUiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
ICE9IGdsLlJFQURfRlJBTUVCVUZGRVIsIGdsLklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihwb2lu
dCA9PT0gdW5kZWZpbmVkLCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgLy8gU2VsZWN0IGJpbmRpbmcgcG9pbnQuCisgICAgICAgICAgICAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkZyYW1lYnVmZmVyfSAqLyB2YXIgZnJhbWVi
dWZmZXJCaW5kaW5nID0gKHRhcmdldCA9PSBnbC5GUkFNRUJVRkZFUiB8fCB0YXJnZXQgPT0gZ2wu
RFJBV19GUkFNRUJVRkZFUikgPyB0aGlzLm1fZHJhd0ZyYW1lYnVmZmVyQmluZGluZyA6IHRoaXMu
bV9yZWFkRnJhbWVidWZmZXJCaW5kaW5nOworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9u
YWxTZXRFcnJvcighZnJhbWVidWZmZXJCaW5kaW5nLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAodGV4dHVyZSkgeworICAg
ICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IobGV2ZWwgIT0gMCwgZ2wu
SU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodGV4dHVyZS5nZXRUeXBlKCkgIT0g
c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVR5cGUuVFlQRV8yRF9BUlJBWSAmJgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUuZ2V0VHlwZSgpICE9IHNnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmVUeXBlLlRZUEVfM0QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlLmdldFR5cGUoKSAhPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5U
WVBFX0NVQkVfTUFQX0FSUkFZLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLmdldFR5cGUoKSA9
PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzJEX0FSUkFZIHx8IHRleHR1
cmUuZ2V0VHlwZSgpID09IHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVUeXBlLlRZUEVfQ1VC
RV9NQVBfQVJSQVkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxT
ZXRFcnJvcigobGF5ZXIgPCAwKSB8fCAobGF5ZXIgPj0gZ2wuTUFYX0FSUkFZX1RFWFRVUkVfTEFZ
RVJTKSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoKGxldmVs
IDwgMCkgfHwgKGxldmVsID4gTWF0aC5mbG9vcihNYXRoLmxvZzIoZ2wuTUFYX1RFWFRVUkVfU0la
RSkpKSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0dXJlLmdldFR5cGUoKSA9PSBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXh0dXJlVHlwZS5UWVBFXzNEKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoKGxheWVyIDwgMCkgfHwgKGxheWVyID49IGds
Lk1BWF8zRF9URVhUVVJFX1NJWkUpLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9u
YWxTZXRFcnJvcigobGV2ZWwgPCAwKSB8fCAobGV2ZWwgPiBNYXRoLmZsb29yKE1hdGgubG9nMihn
bC5NQVhfM0RfVEVYVFVSRV9TSVpFKSkpLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVudH0g
Ki8gdmFyIGZib0F0dGFjaG1lbnQgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuQXR0YWNobWVu
dCgpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZSkgeworICAgICAgICAgICAgICAgIGZib0F0
dGFjaG1lbnQudHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRUeXBlLkFUVEFD
SE1FTlRUWVBFX1RFWFRVUkU7CisgICAgICAgICAgICAgICAgZmJvQXR0YWNobWVudC5vYmplY3Qg
PSB0ZXh0dXJlOworICAgICAgICAgICAgICAgIGZib0F0dGFjaG1lbnQudGV4VGFyZ2V0ID0gc2ds
clJlZmVyZW5jZUNvbnRleHQudGV4TGF5ZXJlZFR5cGVUb1RhcmdldCh0ZXh0dXJlLmdldFR5cGUo
KSk7CisgICAgICAgICAgICAgICAgZmJvQXR0YWNobWVudC5sZXZlbCA9IGxldmVsOworICAgICAg
ICAgICAgICAgIGZib0F0dGFjaG1lbnQubGF5ZXIgPSBsYXllcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZyYW1lYnVmZmVyQmluZGluZy5zZXRBdHRhY2htZW50KHBvaW50LCBmYm9BdHRh
Y2htZW50KTsKKworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtu
dW1iZXJ9IHRhcmdldAorICAgICogQHBhcmFtIHtudW1iZXJ9IGF0dGFjaG1lbnQKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSByZW5kZXJidWZmZXJ0YXJnZXQKKyAgICAqIEBwYXJhbSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuUmVuZGVyYnVmZmVyfSByZW5kZXJidWZmZXIKKyAgICAqLworICAgIHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyID0gZnVuY3Rpb24odGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIHJlbmRlcmJ1ZmZlcikgeworICAgICAgICBpZiAoYXR0YWNobWVudCA9PSBnbC5ERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQpIHsKKyAgICAgICAgICAgIC8vIEF0dGFjaCBib3RoIHRvIGRlcHRo
IGFuZCBzdGVuY2lsLgorICAgICAgICAgICAgdGhpcy5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0
YXJnZXQsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVm
ZmVyKTsKKyAgICAgICAgICAgIHRoaXMuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBn
bC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNv
bnRleHQuQXR0YWNobWVudFBvaW50fSAqLyB2YXIgcG9pbnQgPSBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5tYXBHTEF0dGFjaG1lbnRQb2ludChhdHRhY2htZW50KTsKKworICAgICAgICAgICAgaWYgKHRo
aXMuY29uZGl0aW9uYWxTZXRFcnJvcih0YXJnZXQgIT0gZ2wuRlJBTUVCVUZGRVIgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldCAhPSBnbC5EUkFXX0ZSQU1FQlVGRkVSICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIT0gZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuSU5W
QUxJRF9FTlVNKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKHBvaW50ID09IHVuZGVmaW5lZCwgZ2wuSU5WQUxJRF9FTlVN
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIFNlbGVjdCBiaW5k
aW5nIHBvaW50LgorICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5G
cmFtZWJ1ZmZlcn0gKi8gdmFyIGZyYW1lYnVmZmVyQmluZGluZyA9ICh0YXJnZXQgPT0gZ2wuRlJB
TUVCVUZGRVIgfHwgdGFyZ2V0ID09IGdsLkRSQVdfRlJBTUVCVUZGRVIpID8gdGhpcy5tX2RyYXdG
cmFtZWJ1ZmZlckJpbmRpbmcgOiB0aGlzLm1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsKKyAgICAg
ICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIWZyYW1lYnVmZmVyQmluZGluZywg
Z2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKHJlbmRlcmJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRp
dGlvbmFsU2V0RXJyb3IocmVuZGVyYnVmZmVydGFyZ2V0ICE9IGdsLlJFTkRFUkJVRkZFUiwgZ2wu
SU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1l
bnR9ICovIHZhciBmYm9BdHRhY2htZW50ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFj
aG1lbnQoKTsKKworICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlcikgeworICAgICAgICAgICAg
ICAgIGZib0F0dGFjaG1lbnQudHlwZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0LkF0dGFjaG1lbnRU
eXBlLkFUVEFDSE1FTlRUWVBFX1JFTkRFUkJVRkZFUjsKKyAgICAgICAgICAgICAgICBmYm9BdHRh
Y2htZW50Lm9iamVjdCA9IHJlbmRlcmJ1ZmZlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGZyYW1lYnVmZmVyQmluZGluZy5zZXRBdHRhY2htZW50KHBvaW50LCBmYm9BdHRhY2htZW50KTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJn
ZXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbGZvcm1hdAorICAgICogQHBhcmFtIHtu
dW1iZXJ9IHdpZHRoCisgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgKi8KKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5yZW5kZXJidWZm
ZXJTdG9yYWdlID0gZnVuY3Rpb24odGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCkgeworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFy
IGZvcm1hdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3Jt
YXQpOworCisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodGFyZ2V0ICE9IGds
LlJFTkRFUkJVRkZFUiwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighdGhpcy5tX3JlbmRlcmJ1ZmZlckJp
bmRpbmcsIGdsLklOVkFMSURfT1BFUkFUSU9OKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighZGVNYXRoLmRlSW5SYW5nZTMyKHdpZHRo
LCAwLCB0aGlzLm1fbGltaXRzLm1heFJlbmRlcmJ1ZmZlclNpemUpIHx8CisgICAgICAgICAgICAg
ICAgICAgICFkZU1hdGguZGVJblJhbmdlMzIoaGVpZ2h0LCAwLCB0aGlzLm1fbGltaXRzLm1heFJl
bmRlcmJ1ZmZlclNpemUpLAorICAgICAgICAgICAgICAgICAgICBnbC5JTlZBTElEX09QRVJBVElP
TikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0
RXJyb3IoIWZvcm1hdCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLm1fcmVuZGVyYnVmZmVyQmluZGluZy5zZXRTdG9yYWdlKGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0
YXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2FtcGxlcworICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpbnRlcm5hbGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUgPSBmdW5jdGlvbih0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSB7CisgICAgICAgIHRoaXMucmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0g
e3JyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZX0gZGVyaXZlZFR5cGUKKyAgICAqIEByZXR1cm4ge3Jy
UmVuZGVyZXIuUHJpbWl0aXZlVHlwZX0KKyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0UHJpbWl0aXZlQmFzZVR5cGUgPSBmdW5jdGlvbihk
ZXJpdmVkVHlwZSkgeworICAgICAgICBzd2l0Y2ggKGRlcml2ZWRUeXBlKSB7CisgICAgICAgICAg
ICBjYXNlIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5UUklBTkdMRVM6CisgICAgICAgICAgICBj
YXNlIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAg
IGNhc2UgcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlRSSUFOR0xFX0ZBTjoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlRSSUFOR0xFUzsKKworICAgICAg
ICAgICAgY2FzZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuTElORVM6CisgICAgICAgICAgICBj
YXNlIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5MSU5FX1NUUklQOgorICAgICAgICAgICAgY2Fz
ZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuTElORV9MT09QOgorICAgICAgICAgICAgICAgIHJl
dHVybiByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuTElORVM7CisKKyAgICAgICAgICAgIGNhc2Ug
cnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlBPSU5UUzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
cnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlBPSU5UUzsKKworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBwcmltaXRpdmUg
dHlwZTonICsgZGVyaXZlZFR5cGUpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAg
ICogY3JlYXRlUHJvZ3JhbQorICAgICogQHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtfSBwcm9ncmFtCisgICAgKiBAcmV0dXJuIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4
dC5wcm90b3R5cGUuY3JlYXRlUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHsKKyAgICAgICAg
cmV0dXJuIHByb2dyYW07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGRlbGV0ZVByb2dyYW0K
KyAgICAgKiBAcGFyYW0ge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0K
KyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3Rv
dHlwZS5kZWxldGVQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSkge307CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gcHJvZ3JhbQorICAg
ICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUu
dXNlUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHsKKyAgICAgICAgdGhpcy5tX2N1cnJlbnRQ
cm9ncmFtID0gcHJvZ3JhbTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBEcmF3cyBxdWFkcyBm
cm9tIHZlcnRleCBhcnJheXMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBwcmltaXRpdmUgR0wgcHJp
bWl0aXZlIHR5cGUgdG8gZHJhdyB3aXRoLgorICAgICogQHBhcmFtIHtudW1iZXJ9IGZpcnN0IEZp
cnN0IHZlcnRleCB0byBiZWdpbiBkcmF3aW5nIHdpdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b3VudCBIb3cgbWFueSB2ZXJ0aWNlcyB0byBkcmF3IChub3QgY291bnRpbmcgdmVydGljZXMgYmVm
b3JlIGZpcnN0KQorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29u
dGV4dC5wcm90b3R5cGUuZHJhd0FycmF5cyA9IGZ1bmN0aW9uKHByaW1pdGl2ZSwgZmlyc3QsIGNv
dW50KSB7CisgICAgICAgIHRoaXMuZHJhd1F1YWRzKHByaW1pdGl2ZSwgZmlyc3QsIGNvdW50LCAx
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBEcmF3cyBxdWFkcyBmcm9tIHZlcnRleCBhcnJh
eXMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBwcmltaXRpdmUgR0wgcHJpbWl0aXZlIHR5cGUgdG8g
ZHJhdyB3aXRoLgorICAgICogQHBhcmFtIHsobnVtYmVyfHJyUmVuZGVyZXIuRHJhd0luZGljZXMp
fSBmaXJzdCBGaXJzdCB2ZXJ0ZXggdG8gYmVnaW4gZHJhd2luZyB3aXRoCisgICAgKiBAcGFyYW0g
e251bWJlcn0gY291bnQgTnVtYmVyIG9mIHZlcnRpY2VzCisgICAgKiBAcGFyYW0ge251bWJlcj19
IGluc3RhbmNlcyBOdW1iZXIgb2YgaW5zdGFuY2VzCisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNl
Q29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5kcmF3UXVhZHMgPSBmdW5jdGlvbihw
cmltaXRpdmUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VzKSB7CisgICAgICAgIC8vIHVuZGVmaW5l
ZCByZXN1bHRzCisgICAgICAgIGlmICghdGhpcy5tX2N1cnJlbnRQcm9ncmFtKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2VzID09PSAndW5kZWZpbmVk
JykKKyAgICAgICAgICAgIGluc3RhbmNlcyA9IDE7CisKKyAgICAgICAgLyoqIEB0eXBlIHtyck11
bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30g
Ki8gdmFyIGNvbG9yQnVmMCA9IHRoaXMuZ2V0RHJhd0NvbG9yYnVmZmVyKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3N9ICovIHZhciBkZXB0aEJ1ZiA9IHRoaXMuZ2V0RHJhd0RlcHRoYnVmZmVyKCk7
CisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRp
c2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBzdGVuY2lsQnVmID0gdGhpcy5nZXREcmF3
U3RlbmNpbGJ1ZmZlcigpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBoYXNT
dGVuY2lsID0gLyoqIEB0eXBlIHshYm9vbGVhbn0gKi8gKHN0ZW5jaWxCdWYgJiYgIXN0ZW5jaWxC
dWYuaXNFbXB0eSgpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVuY2ls
Qml0cyA9IChoYXNTdGVuY2lsKSA/IHN0ZW5jaWxCdWYucmF3KCkuZ2V0Rm9ybWF0KCkuZ2V0TnVt
U3RlbmNpbEJpdHMoKSA6IDA7CisKKyAgICAgICAgLyoqIEB0eXBlIHtyclJlbmRlcmVyLlJlbmRl
clRhcmdldH0gKi8gdmFyIHJlbmRlclRhcmdldCA9IG5ldyByclJlbmRlcmVyLlJlbmRlclRhcmdl
dChjb2xvckJ1ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVwdGhCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RlbmNpbEJ1Zik7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSB0aGlzLm1fY3VycmVudFBy
b2dyYW07CisKKyAgICAgICAgLypuZXcgcnJSZW5kZXJlci5Qcm9ncmFtKAorICAgICAgICAqICAg
dGhpcy5tX2N1cnJlbnRQcm9ncmFtLmdldFZlcnRleFNoYWRlcigpLAorICAgICAgICAqICAgdGhp
cy5tX2N1cnJlbnRQcm9ncmFtLmdldEZyYWdtZW50U2hhZGVyKCkpOyovCisKKyAgICAgICAgLyoq
IEB0eXBlIHtyclJlbmRlclN0YXRlLlZpZXdwb3J0U3RhdGV9ICovIHZhciB2aWV3cG9ydFN0YXRl
ID0gbmV3IHJyUmVuZGVyU3RhdGUuVmlld3BvcnRTdGF0ZShjb2xvckJ1ZjApOworICAgICAgICAv
KiogQHR5cGUge3JyUmVuZGVyU3RhdGUuUmVuZGVyU3RhdGV9ICovIHZhciBzdGF0ZSA9IG5ldyBy
clJlbmRlclN0YXRlLlJlbmRlclN0YXRlKHZpZXdwb3J0U3RhdGUpOworCisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliPn0gKi8gdmFyIHZlcnRleEF0
dHJpYnMgPSBbXTsKKworICAgICAgICAvLyBHZW4gc3RhdGUKKyAgICAgICAgLyoqIEB0eXBlIHty
clJlbmRlcmVyLlByaW1pdGl2ZVR5cGV9ICovIHZhciBiYXNlVHlwZSA9IHJyUmVuZGVyZXIuUHJp
bWl0aXZlVHlwZS5UUklBTkdMRVM7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFy
IHBvbHlnb25PZmZzZXRFbmFibGVkID0KKyAgICAgICAgICAgIChiYXNlVHlwZSA9PSByclJlbmRl
cmVyLlByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTKSA/CisgICAgICAgICAgICAodGhpcy5tX3BvbHln
b25PZmZzZXRGaWxsRW5hYmxlZCkgOgorICAgICAgICAgICAgKGZhbHNlKTsKKworICAgICAgICAv
L3N0YXRlLmN1bGxNb2RlID0gbV9jdWxsTW9kZQorCisgICAgICAgIHN0YXRlLmZyYWdPcHMuc2Np
c3NvclRlc3RFbmFibGVkID0gdGhpcy5tX3NjaXNzb3JFbmFibGVkOworICAgICAgICBzdGF0ZS5m
cmFnT3BzLnNjaXNzb3JSZWN0YW5nbGUgPSBuZXcgcnJSZW5kZXJTdGF0ZS5XaW5kb3dSZWN0YW5n
bGUodGhpcy5tX3NjaXNzb3JCb3gpOworCisgICAgICAgIHN0YXRlLmZyYWdPcHMubnVtU3RlbmNp
bEJpdHMgPSBzdGVuY2lsQml0czsKKyAgICAgICAgc3RhdGUuZnJhZ09wcy5zdGVuY2lsVGVzdEVu
YWJsZWQgPSB0aGlzLm1fc3RlbmNpbFRlc3RFbmFibGVkOworCisgICAgICAgIGZvciAodmFyIGtl
eSBpbiByckRlZnMuRmFjZVR5cGUpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgZmFjZVR5cGUgPSByckRlZnMuRmFjZVR5cGVba2V5XTsKKyAgICAgICAgICAgIHN0YXRl
LmZyYWdPcHMuc3RlbmNpbFN0YXRlc1tmYWNlVHlwZV0uY29tcE1hc2sgPSB0aGlzLm1fc3RlbmNp
bFtmYWNlVHlwZV0ub3BNYXNrOworICAgICAgICAgICAgc3RhdGUuZnJhZ09wcy5zdGVuY2lsU3Rh
dGVzW2ZhY2VUeXBlXS53cml0ZU1hc2sgPSB0aGlzLm1fc3RlbmNpbFtmYWNlVHlwZV0ud3JpdGVN
YXNrOworICAgICAgICAgICAgc3RhdGUuZnJhZ09wcy5zdGVuY2lsU3RhdGVzW2ZhY2VUeXBlXS5y
ZWYgPSB0aGlzLm1fc3RlbmNpbFtmYWNlVHlwZV0ucmVmOworICAgICAgICAgICAgc3RhdGUuZnJh
Z09wcy5zdGVuY2lsU3RhdGVzW2ZhY2VUeXBlXS5mdW5jID0gc2dsclJlZmVyZW5jZVV0aWxzLm1h
cEdMVGVzdEZ1bmModGhpcy5tX3N0ZW5jaWxbZmFjZVR5cGVdLmZ1bmMpOworICAgICAgICAgICAg
c3RhdGUuZnJhZ09wcy5zdGVuY2lsU3RhdGVzW2ZhY2VUeXBlXS5zRmFpbCA9IHNnbHJSZWZlcmVu
Y2VVdGlscy5tYXBHTFN0ZW5jaWxPcCh0aGlzLm1fc3RlbmNpbFtmYWNlVHlwZV0ub3BTdGVuY2ls
RmFpbCk7CisgICAgICAgICAgICBzdGF0ZS5mcmFnT3BzLnN0ZW5jaWxTdGF0ZXNbZmFjZVR5cGVd
LmRwRmFpbCA9IHNnbHJSZWZlcmVuY2VVdGlscy5tYXBHTFN0ZW5jaWxPcCh0aGlzLm1fc3RlbmNp
bFtmYWNlVHlwZV0ub3BEZXB0aEZhaWwpOworICAgICAgICAgICAgc3RhdGUuZnJhZ09wcy5zdGVu
Y2lsU3RhdGVzW2ZhY2VUeXBlXS5kcFBhc3MgPSBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xTdGVu
Y2lsT3AodGhpcy5tX3N0ZW5jaWxbZmFjZVR5cGVdLm9wRGVwdGhQYXNzKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRlLmZyYWdPcHMuZGVwdGhUZXN0RW5hYmxlZCA9IHRoaXMubV9kZXB0aFRl
c3RFbmFibGVkOworICAgICAgICBzdGF0ZS5mcmFnT3BzLmRlcHRoRnVuYyA9IHNnbHJSZWZlcmVu
Y2VVdGlscy5tYXBHTFRlc3RGdW5jKHRoaXMubV9kZXB0aEZ1bmMpOworICAgICAgICBzdGF0ZS5m
cmFnT3BzLmRlcHRoTWFzayA9IHRoaXMubV9kZXB0aE1hc2s7CisKKyAgICAgICAgc3RhdGUuZnJh
Z09wcy5ibGVuZE1vZGUgPSB0aGlzLm1fYmxlbmRFbmFibGVkID8gcnJSZW5kZXJTdGF0ZS5CbGVu
ZE1vZGUuU1RBTkRBUkQgOiByclJlbmRlclN0YXRlLkJsZW5kTW9kZS5OT05FOworICAgICAgICBz
dGF0ZS5mcmFnT3BzLmJsZW5kUkdCU3RhdGUuZXF1YXRpb24gPSBzZ2xyUmVmZXJlbmNlVXRpbHMu
bWFwR0xCbGVuZEVxdWF0aW9uKHRoaXMubV9ibGVuZE1vZGVSR0IpOworICAgICAgICBzdGF0ZS5m
cmFnT3BzLmJsZW5kUkdCU3RhdGUuc3JjRnVuYyA9IHNnbHJSZWZlcmVuY2VVdGlscy5tYXBHTEJs
ZW5kRnVuYyh0aGlzLm1fYmxlbmRGYWN0b3JTcmNSR0IpOworICAgICAgICBzdGF0ZS5mcmFnT3Bz
LmJsZW5kUkdCU3RhdGUuZHN0RnVuYyA9IHNnbHJSZWZlcmVuY2VVdGlscy5tYXBHTEJsZW5kRnVu
Yyh0aGlzLm1fYmxlbmRGYWN0b3JEc3RSR0IpOworICAgICAgICBzdGF0ZS5mcmFnT3BzLmJsZW5k
QVN0YXRlLmVxdWF0aW9uID0gc2dsclJlZmVyZW5jZVV0aWxzLm1hcEdMQmxlbmRFcXVhdGlvbih0
aGlzLm1fYmxlbmRNb2RlQWxwaGEpOworICAgICAgICBzdGF0ZS5mcmFnT3BzLmJsZW5kQVN0YXRl
LnNyY0Z1bmMgPSBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xCbGVuZEZ1bmModGhpcy5tX2JsZW5k
RmFjdG9yU3JjQWxwaGEpOworICAgICAgICBzdGF0ZS5mcmFnT3BzLmJsZW5kQVN0YXRlLmRzdEZ1
bmMgPSBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xCbGVuZEZ1bmModGhpcy5tX2JsZW5kRmFjdG9y
RHN0QWxwaGEpOworICAgICAgICBzdGF0ZS5mcmFnT3BzLmJsZW5kQ29sb3IgPSB0aGlzLm1fYmxl
bmRDb2xvcjsKKworICAgICAgICBzdGF0ZS5mcmFnT3BzLmNvbG9yTWFzayA9IHRoaXMubV9jb2xv
ck1hc2s7CisKKyAgICAgICAgc3RhdGUudmlld3BvcnQucmVjdCA9IG5ldyByclJlbmRlclN0YXRl
LldpbmRvd1JlY3RhbmdsZSh0aGlzLm1fdmlld3BvcnQpOworICAgICAgICBzdGF0ZS52aWV3cG9y
dC56biA9IHRoaXMubV9kZXB0aFJhbmdlTmVhcjsKKyAgICAgICAgc3RhdGUudmlld3BvcnQuemYg
PSB0aGlzLm1fZGVwdGhSYW5nZUZhcjsKKworICAgICAgICAvL3N0YXRlLnBvaW50LnBvaW50U2l6
ZSA9IHRoaXMubV9wb2ludFNpemU7CisgICAgICAgIHN0YXRlLmxpbmUubGluZVdpZHRoID0gdGhp
cy5tX2xpbmVXaWR0aDsKKworICAgICAgICBzdGF0ZS5mcmFnT3BzLnBvbHlnb25PZmZzZXRFbmFi
bGVkID0gcG9seWdvbk9mZnNldEVuYWJsZWQ7CisgICAgICAgIHN0YXRlLmZyYWdPcHMucG9seWdv
bk9mZnNldEZhY3RvciA9IHRoaXMubV9wb2x5Z29uT2Zmc2V0RmFjdG9yOworICAgICAgICBzdGF0
ZS5mcmFnT3BzLnBvbHlnb25PZmZzZXRVbml0cyA9IHRoaXMubV9wb2x5Z29uT2Zmc2V0VW5pdHM7
CisKKyAgICAgICAgc3RhdGUucHJvdm9raW5nVmVydGV4Q29udmVudGlvbiA9ICh0aGlzLm1fcHJv
dm9raW5nRmlyc3RWZXJ0ZXhDb252ZW50aW9uKSA/IChyckRlZnMuUHJvdm9raW5nVmVydGV4LlBS
T1ZPS0lOR1ZFUlRFWF9GSVJTVCkgOiAocnJEZWZzLlByb3Zva2luZ1ZlcnRleC5QUk9WT0tJTkdW
RVJURVhfTEFTVCk7CisKKyAgICAgICAgLy8gZ2VuIGF0dHJpYnV0ZXMKKyAgICAgICAgLyoqIEB0
eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5WZXJ0ZXhBcnJheX0gKi8gdmFyIHZhbyA9IHRoaXMu
bV92ZXJ0ZXhBcnJheUJpbmRpbmc7CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHZh
by5tX2FycmF5cy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWJzW25k
eF0gPSBuZXcgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliKCk7CisgICAgICAgICAgICBpZiAo
IXZhby5tX2FycmF5c1tuZHhdLmVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBdHRy
aWJzW25keF0udHlwZSA9IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuRE9OVF9DQVJF
OyAvLyByZWFkaW5nIHdpdGggd3JvbmcgdHlwZSBpcyBhbGxvd2VkLCBidXQgcmVzdWx0cyBhcmUg
dW5kZWZpbmVkCisgICAgICAgICAgICAgICAgdmVydGV4QXR0cmlic1tuZHhdLmdlbmVyaWMgPSB0
aGlzLm1fY3VycmVudEF0dHJpYnNbbmR4XTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdmVydGV4QXR0cmlic1tuZHhdLnR5cGUgPSAodmFvLm1fYXJyYXlzW25keF0uaW50
ZWdlcikgPworICAgICAgICAgICAgICAgIChzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xQdXJlSW50
ZWdlclZlcnRleEF0dHJpYnV0ZVR5cGUodmFvLm1fYXJyYXlzW25keF0udHlwZSkpIDoKKyAgICAg
ICAgICAgICAgICAoc2dsclJlZmVyZW5jZVV0aWxzLm1hcEdMRmxvYXRWZXJ0ZXhBdHRyaWJ1dGVU
eXBlKHZhby5tX2FycmF5c1tuZHhdLnR5cGUsIHZhby5tX2FycmF5c1tuZHhdLm5vcm1hbGl6ZWQs
IHZhby5tX2FycmF5c1tuZHhdLnNpemUpKTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWJz
W25keF0uc2l6ZSA9IHNnbHJSZWZlcmVuY2VVdGlscy5tYXBHTFNpemUodmFvLm1fYXJyYXlzW25k
eF0uc2l6ZSk7CisgICAgICAgICAgICAgICAgdmVydGV4QXR0cmlic1tuZHhdLnN0cmlkZSA9IHZh
by5tX2FycmF5c1tuZHhdLnN0cmlkZTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWJzW25k
eF0uaW5zdGFuY2VEaXZpc29yID0gdmFvLm1fYXJyYXlzW25keF0uZGl2aXNvcjsKKyAgICAgICAg
ICAgICAgICB2ZXJ0ZXhBdHRyaWJzW25keF0ucG9pbnRlciA9IHZhby5tX2FycmF5c1tuZHhdLmJ1
ZmZlckJpbmRpbmcuZ2V0RGF0YSgpOworICAgICAgICAgICAgICAgIHZlcnRleEF0dHJpYnNbbmR4
XS5vZmZzZXQgPSB2YW8ubV9hcnJheXNbbmR4XS5vZmZzZXQ7CisgICAgICAgICAgICAgICAgdmVy
dGV4QXR0cmlic1tuZHhdLmNvbXBvbmVudENvdW50ID0gdmFvLm1fYXJyYXlzW25keF0uc2l6ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCBzaGFkZXIgc2FtcGxl
cnMKKyAgICAgICAgZm9yICh2YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZvcm1OZHggPCB0aGlzLm1f
Y3VycmVudFByb2dyYW0ubV91bmlmb3Jtcy5sZW5ndGg7ICsrdW5pZm9ybU5keCkgeworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0ZXhOZHggPSB0aGlzLm1fY3VycmVudFBy
b2dyYW0ubV91bmlmb3Jtc1t1bmlmb3JtTmR4XS52YWx1ZVswXTsKKworICAgICAgICAgICAgc3dp
dGNoICh0aGlzLm1fY3VycmVudFByb2dyYW0ubV91bmlmb3Jtc1t1bmlmb3JtTmR4XS50eXBlKSB7
CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkQ6
CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExF
Ul8yRDoKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NB
TVBMRVJfMkQ6IHsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNl
Q29udGV4dC5UZXh0dXJlMkR9ICovIHZhciB0ZXg7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRleE5keCA+PSAwICYmIHRleE5keCA8IHRoaXMubV90ZXh0dXJlVW5pdHMubGVuZ3RoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4ID0gLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4
dC5UZXh0dXJlMkR9ICovICh0aGlzLm1fdGV4dHVyZVVuaXRzW3RleE5keF0udGV4MkRCaW5kaW5n
LnRleHR1cmUpOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXggJiYgdGV4LmlzQ29tcGxl
dGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4LnVwZGF0ZVZpZXcoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZvcm1zW3VuaWZv
cm1OZHhdLnNhbXBsZXIgPSB0ZXg7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX2N1cnJlbnRQcm9ncmFtLm1fdW5pZm9ybXNbdW5pZm9y
bU5keF0uc2FtcGxlciA9IHRoaXMubV9lbXB0eVRleDJELnRleHR1cmU7CisKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSX0NVQkU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl9DVUJFOgorICAgICAgICAgICAg
ICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl9DVUJFOiB7CisgICAg
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUN1
YmV9ICovIHZhciB0ZXhDdWJlOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXhOZHggPj0g
MCAmJiB0ZXhOZHggPCB0aGlzLm1fdGV4dHVyZVVuaXRzLmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRleEN1YmUgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1
cmVDdWJlfSAqLyAodGhpcy5tX3RleHR1cmVVbml0c1t0ZXhOZHhdLnRleEN1YmVCaW5kaW5nLnRl
eHR1cmUpOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXhDdWJlICYmIHRleEN1YmUuaXND
b21wbGV0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXhDdWJlLnVwZGF0ZVZpZXco
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZv
cm1zW3VuaWZvcm1OZHhdLnNhbXBsZXIgPSB0ZXhDdWJlOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3Vu
aWZvcm1zW3VuaWZvcm1OZHhdLnNhbXBsZXIgPSB0aGlzLm1fZW1wdHlUZXhDdWJlLnRleHR1cmU7
CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEX0FSUkFZOgor
ICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJf
MkRfQVJSQVk6CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9TQU1QTEVSXzJEX0FSUkFZOiB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c2ds
clJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEQXJyYXl9ICovIHZhciB0ZXgyREFycmF5OworCisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXhOZHggPj0gMCAmJiB0ZXhOZHggPCB0aGlzLm1fdGV4
dHVyZVVuaXRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleDJEQXJyYXkgPSAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5fSAqLyAodGhpcy5t
X3RleHR1cmVVbml0c1t0ZXhOZHhdLnRleDJEQXJyYXlCaW5kaW5nLnRleHR1cmUpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXgyREFycmF5ICYmIHRleDJEQXJyYXkuaXNDb21wbGV0ZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXgyREFycmF5LnVwZGF0ZVZpZXcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZvcm1zW3Vu
aWZvcm1OZHhdLnNhbXBsZXIgPSB0ZXgyREFycmF5OworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZv
cm1zW3VuaWZvcm1OZHhdLnNhbXBsZXIgPSB0aGlzLm1fZW1wdHlUZXgyREFycmF5LnRleHR1cmU7
CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzNEOgorICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfM0Q6Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9TQU1QTEVSXzNE
OiB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQu
VGV4dHVyZTNEfSAqLyB2YXIgdGV4M0Q7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleE5k
eCA+PSAwICYmIHRleE5keCA8IHRoaXMubV90ZXh0dXJlVW5pdHMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4M0QgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRl
eHR1cmUzRH0gKi8gKHRoaXMubV90ZXh0dXJlVW5pdHNbdGV4TmR4XS50ZXgzREJpbmRpbmcudGV4
dHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleDNEICYmIHRleDNELmlzQ29tcGxl
dGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4M0QudXBkYXRlVmlldygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2N1cnJlbnRQcm9ncmFtLm1fdW5pZm9ybXNbdW5p
Zm9ybU5keF0uc2FtcGxlciA9IHRleDNEOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZvcm1zW3Vu
aWZvcm1OZHhdLnNhbXBsZXIgPSB0aGlzLm1fZW1wdHlUZXgzRC50ZXh0dXJlOworCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAv
KiBUT0RPOiBQb3J0CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LlNBTVBMRVJfQ1VCRV9BUlJBWToKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuVUlOVF9TQU1QTEVSX0NVQkVfQVJSQVk6CisgICAgICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9TQU1QTEVSX0NVQkVfQVJSQVk6eworICAgICAgICAg
ICAgICAgICAgICByYzo6VGV4dHVyZUN1YmVBcnJheSogdGV4ID0gREVfTlVMTDsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAodGV4TmR4ID49IDAgJiYgKHNpemVfdCl0ZXhOZHggPCBtX3RleHR1
cmVVbml0cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXggPSAodGhpcy5tX3Rl
eHR1cmVVbml0c1t0ZXhOZHhdLnRleEN1YmVBcnJheUJpbmRpbmcpID8gKHRoaXMubV90ZXh0dXJl
VW5pdHNbdGV4TmR4XS50ZXhDdWJlQXJyYXlCaW5kaW5nKSA6ICgmdGhpcy5tX3RleHR1cmVVbml0
c1t0ZXhOZHhdLmRlZmF1bHRDdWJlQXJyYXlUZXgpOworCisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXggJiYgdGV4LmlzQ29tcGxldGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4
LnVwZGF0ZVZpZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdXJyZW50UHJv
Z3JhbS5tX3VuaWZvcm1zW3VuaWZvcm1OZHhdLnNhbXBsZXIudGV4Q3ViZUFycmF5ID0gdGV4Owor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV9jdXJyZW50UHJvZ3JhbS5tX3VuaWZvcm1zW3VuaWZvcm1OZHhdLnNhbXBsZXIudGV4Q3ViZUFy
cmF5ID0gJnRoaXMubV9lbXB0eVRleEN1YmVBcnJheTsKKworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFy
IHByaW1pdGl2ZVR5cGUgPSBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xQcmltaXRpdmVUeXBlKHBy
aW1pdGl2ZSk7CisKKyAgICAgICAgdmFyIHJlbmRlckZ1bmN0aW9uID0gcnJSZW5kZXJlci5kcmF3
VHJpYW5nbGVzOworICAgICAgICBpZiAocHJpbWl0aXZlVHlwZSA9PSByclJlbmRlcmVyLlByaW1p
dGl2ZVR5cGUuTElORVMgfHwKKyAgICAgICAgICAgIHByaW1pdGl2ZVR5cGUgPT0gcnJSZW5kZXJl
ci5QcmltaXRpdmVUeXBlLkxJTkVfU1RSSVAgfHwKKyAgICAgICAgICAgIHByaW1pdGl2ZVR5cGUg
PT0gcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLkxJTkVfTE9PUCkKKyAgICAgICAgICAgIHJlbmRl
ckZ1bmN0aW9uID0gcnJSZW5kZXJlci5kcmF3TGluZXM7CisgICAgICAgIGVsc2UgaWYgKHByaW1p
dGl2ZVR5cGUgPT0gcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlBPSU5UUykKKyAgICAgICAgICAg
IHJlbmRlckZ1bmN0aW9uID0gcnJSZW5kZXJlci5kcmF3UG9pbnRzOworCisgICAgICAgIGZvciAo
dmFyIGluc3RhbmNlSUQgPSAwOyBpbnN0YW5jZUlEIDwgaW5zdGFuY2VzOyBpbnN0YW5jZUlEKysp
CisgICAgICAgICAgICByZW5kZXJGdW5jdGlvbihzdGF0ZSwgcmVuZGVyVGFyZ2V0LCBwcm9ncmFt
LCB2ZXJ0ZXhBdHRyaWJzLCBwcmltaXRpdmVUeXBlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlSUQp
OworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVjdAor
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LmlzRW1wdHkgPSBmdW5jdGlvbihyZWN0KSB7IHJldHVybiByZWN0WzJdID09IDAgfHwgcmVjdFsz
XSA9PSAwOyB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gbWFzaworICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBzcmNSZWN0CisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGRzdFJlY3QKKyAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmxpcFgKKyAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gZmxpcFkKKyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgc2dsclJl
ZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYmxpdFJlc29sdmVNdWx0
aXNhbXBsZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24obWFzaywgc3JjUmVjdCwgZHN0UmVjdCwgZmxp
cFgsIGZsaXBZKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pbXBsZW1lbnRlZCcpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNYMAorICAgICogQHBh
cmFtIHtudW1iZXJ9IHNyY1kwCisgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjWDEKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBzcmNZMQorICAgICogQHBhcmFtIHtudW1iZXJ9IGRzdFgwCisgICAgKiBA
cGFyYW0ge251bWJlcn0gZHN0WTAKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBkc3RYMQorICAgICog
QHBhcmFtIHtudW1iZXJ9IGRzdFkxCisgICAgKiBAcGFyYW0ge251bWJlcn0gbWFzaworICAgICog
QHBhcmFtIHtudW1iZXJ9IGZpbHRlcgorICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQu
UmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUuYmxpdEZyYW1lYnVmZmVyID0gZnVuY3Rpb24oc3Jj
WDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNr
LCBmaWx0ZXIpIHsKKyAgICAgICAgLy8gcDAgaW4gaW5jbHVzaXZlLCBwMSBleGNsdXNpdmUuCisg
ICAgICAgIC8vIE5lZ2F0aXZlIHdpZHRoL2hlaWdodCBtZWFucyBzd2FwLgorICAgICAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciBzd2FwU3JjWCA9IHNyY1gxIDwgc3JjWDA7CisgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHN3YXBTcmNZID0gc3JjWTEgPCBzcmNZMDsKKyAg
ICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgc3dhcERzdFggPSBkc3RYMSA8IGRzdFgw
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzd2FwRHN0WSA9IGRzdFkxIDwg
ZHN0WTA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3JjVyA9IE1hdGguYWJz
KHNyY1gxIC0gc3JjWDApOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNyY0gg
PSBNYXRoLmFicyhzcmNZMSAtIHNyY1kwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBkc3RXID0gTWF0aC5hYnMoZHN0WDEgLSBkc3RYMCk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZHN0SCA9IE1hdGguYWJzKGRzdFkxIC0gZHN0WTApOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzY2FsZSA9IHNyY1cgIT0gZHN0VyB8fCBzcmNIICE9
IGRzdEg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3JjT3JpZ2luWCA9IHN3
YXBTcmNYID8gc3JjWDEgOiBzcmNYMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBzcmNPcmlnaW5ZID0gc3dhcFNyY1kgPyBzcmNZMSA6IHNyY1kwOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGRzdE9yaWdpblggPSBzd2FwRHN0WCA/IGRzdFgxIDogZHN0WDA7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHN0T3JpZ2luWSA9IHN3YXBEc3RZ
ID8gZHN0WTEgOiBkc3RZMDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgc3JjUmVjdCA9IFtzcmNPcmlnaW5YLCBzcmNPcmlnaW5ZLCBzcmNXLCBzcmNIXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHN0UmVjdCA9IFtkc3RPcmlnaW5Y
LCBkc3RPcmlnaW5ZLCBkc3RXLCBkc3RIXTsKKworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKGZpbHRlciAhPSBnbC5ORUFSRVNUICYmIGZpbHRlciAhPSBnbC5MSU5FQVIsIGds
LklOVkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNv
bmRpdGlvbmFsU2V0RXJyb3IoKG1hc2sgJiAoZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5D
SUxfQlVGRkVSX0JJVCkpICE9IDAgJiYgZmlsdGVyICE9IGdsLk5FQVJFU1QsIGdsLklOVkFMSURf
T1BFUkFUSU9OKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBWYWxpZGF0ZSB0
aGF0IGJvdGggdGFyZ2V0cyBhcmUgY29tcGxldGUuCisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlv
bmFsU2V0RXJyb3IodGhpcy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkRSQVdfRlJBTUVCVUZG
RVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIHx8CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5SRUFEX0ZSQU1FQlVGRkVSKSAhPSBnbC5GUkFN
RUJVRkZFUl9DT01QTEVURSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIC8vIENoZWNrIHNhbXBsZXMgY291bnQgaXMgdmFsaWQKKyAgICAgICAg
aWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0aGlzLmdldERyYXdDb2xvcmJ1ZmZlcigpLmdl
dE51bVNhbXBsZXMoKSAhPSAxLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gQ2hlY2sgc2l6ZSByZXN0cmljdGlvbnMgb2YgbXVsdGlzYW1w
bGVkIGNhc2UKKyAgICAgICAgaWYgKHRoaXMuZ2V0UmVhZENvbG9yYnVmZmVyKCkuZ2V0TnVtU2Ft
cGxlcygpICE9IDEpIHsKKyAgICAgICAgICAgIC8vIFNyYyBhbmQgRHN0IHJlY3QgZGltZW5zaW9u
cyBtdXN0IGJlIHRoZSBzYW1lCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVy
cm9yKHNyY1cgIT0gZHN0VyB8fCBzcmNIICE9IGRzdEgsIGdsLklOVkFMSURfT1BFUkFUSU9OKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIHNnbHJSZWZlcmVuY2VD
b250ZXh0LkZyYW1lYnVmZmVyIGZvcm1hdHMgbXVzdCBtYXRjaAorICAgICAgICAgICAgaWYgKG1h
c2sgJiBnbC5DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRp
dGlvbmFsU2V0RXJyb3IodGhpcy5nZXRSZWFkQ29sb3JidWZmZXIoKS5yYXcoKS5nZXRGb3JtYXQo
KSAhPSB0aGlzLmdldERyYXdDb2xvcmJ1ZmZlcigpLnJhdygpLmdldEZvcm1hdCgpLCBnbC5JTlZB
TElEX09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGlmIChtYXNrICYgZ2wuREVQVEhfQlVGRkVSX0JJVCkKKyAgICAgICAgICAgICAgICBpZiAodGhp
cy5jb25kaXRpb25hbFNldEVycm9yKHRoaXMuZ2V0UmVhZERlcHRoYnVmZmVyKCkucmF3KCkuZ2V0
Rm9ybWF0KCkgIT0gdGhpcy5nZXREcmF3RGVwdGhidWZmZXIoKS5yYXcoKS5nZXRGb3JtYXQoKSwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBpZiAobWFzayAmIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkKKyAgICAgICAgICAgIGlm
ICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodGhpcy5nZXRSZWFkU3RlbmNpbGJ1ZmZlcigpLnJh
dygpLmdldEZvcm1hdCgpICE9IHRoaXMuZ2V0RHJhd1N0ZW5jaWxidWZmZXIoKS5yYXcoKS5nZXRG
b3JtYXQoKSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXB1dGUgYWN0dWFsIHNvdXJjZSByZWN0LgorICAg
ICAgICBzcmNSZWN0ID0gKG1hc2sgJiBnbC5DT0xPUl9CVUZGRVJfQklUKSA/IGRlTWF0aC5pbnRl
cnNlY3Qoc3JjUmVjdCwgc2dsclJlZmVyZW5jZUNvbnRleHQuZ2V0QnVmZmVyUmVjdCh0aGlzLmdl
dFJlYWRDb2xvcmJ1ZmZlcigpKSkgOiBzcmNSZWN0OworICAgICAgICBzcmNSZWN0ID0gKG1hc2sg
JiBnbC5ERVBUSF9CVUZGRVJfQklUKSA/IGRlTWF0aC5pbnRlcnNlY3Qoc3JjUmVjdCwgc2dsclJl
ZmVyZW5jZUNvbnRleHQuZ2V0QnVmZmVyUmVjdCh0aGlzLmdldFJlYWREZXB0aGJ1ZmZlcigpKSkg
OiBzcmNSZWN0OworICAgICAgICBzcmNSZWN0ID0gKG1hc2sgJiBnbC5TVEVOQ0lMX0JVRkZFUl9C
SVQpID8gZGVNYXRoLmludGVyc2VjdChzcmNSZWN0LCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5nZXRC
dWZmZXJSZWN0KHRoaXMuZ2V0UmVhZFN0ZW5jaWxidWZmZXIoKSkpIDogc3JjUmVjdDsKKworICAg
ICAgICAvLyBDb21wdXRlIGRlc3RpbmF0aW9uIHJlY3QuCisgICAgICAgIGRzdFJlY3QgPSAobWFz
ayAmIGdsLkNPTE9SX0JVRkZFUl9CSVQpID8gZGVNYXRoLmludGVyc2VjdChkc3RSZWN0LCBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5nZXRCdWZmZXJSZWN0KHRoaXMuZ2V0RHJhd0NvbG9yYnVmZmVyKCkp
KSA6IGRzdFJlY3Q7CisgICAgICAgIGRzdFJlY3QgPSAobWFzayAmIGdsLkRFUFRIX0JVRkZFUl9C
SVQpID8gZGVNYXRoLmludGVyc2VjdChkc3RSZWN0LCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5nZXRC
dWZmZXJSZWN0KHRoaXMuZ2V0RHJhd0RlcHRoYnVmZmVyKCkpKSA6IGRzdFJlY3Q7CisgICAgICAg
IGRzdFJlY3QgPSAobWFzayAmIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkgPyBkZU1hdGguaW50ZXJz
ZWN0KGRzdFJlY3QsIHNnbHJSZWZlcmVuY2VDb250ZXh0LmdldEJ1ZmZlclJlY3QodGhpcy5nZXRE
cmF3U3RlbmNpbGJ1ZmZlcigpKSkgOiBkc3RSZWN0OworICAgICAgICBkc3RSZWN0ID0gdGhpcy5t
X3NjaXNzb3JFbmFibGVkID8gZGVNYXRoLmludGVyc2VjdChkc3RSZWN0LCB0aGlzLm1fc2Npc3Nv
ckJveCkgOiBkc3RSZWN0OworCisgICAgICAgIGlmIChzZ2xyUmVmZXJlbmNlQ29udGV4dC5pc0Vt
cHR5KHNyY1JlY3QpIHx8IHNnbHJSZWZlcmVuY2VDb250ZXh0LmlzRW1wdHkoZHN0UmVjdCkpCisg
ICAgICAgICAgICByZXR1cm47IC8vIERvbid0IGF0dGVtcHQgY29weS4KKworICAgICAgICAvLyBN
dWx0aXNhbXBsZWQgcmVhZCBidWZmZXIgaXMgYSBzcGVjaWFsIGNhc2UKKyAgICAgICAgaWYgKHRo
aXMuZ2V0UmVhZENvbG9yYnVmZmVyKCkuZ2V0TnVtU2FtcGxlcygpICE9IDEpIHsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHN3YXBYID0gc3dhcFNyY1ggXiBzd2FwRHN0
WCA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFy
IHN3YXBZID0gc3dhcFNyY1kgXiBzd2FwRHN0WSA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgICAg
IHZhciBlcnJvciA9IHRoaXMuYmxpdFJlc29sdmVNdWx0aXNhbXBsZUZyYW1lYnVmZmVyKG1hc2ss
IHNyY1JlY3QsIGRzdFJlY3QsIHN3YXBYLCBzd2FwWSk7CisKKyAgICAgICAgICAgIGlmIChlcnJv
ciAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAgICB0aGlzLnNldEVycm9yKGVycm9yKTsK
KworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gXG5vdGUgTXVs
dGlzYW1wbGUgcGl4ZWwgYnVmZmVycyBjYW4gbm93IGJlIGFjY2Vzc2VkIGxpa2Ugbm9uLW11bHRp
c2FtcGxlZCBiZWNhdXNlIG11bHRpc2FtcGxlIHJlYWQgYnVmZmVyIGNhc2UgaXMgYWxyZWFkeSBo
YW5kbGVkLiA9PiBzYW1wbGUgY291bnQgbXVzdCBiZSAxCisKKyAgICAgICAgLy8gQ29vcmRpbmF0
ZSB0cmFuc2Zvcm1hdGlvbjoKKyAgICAgICAgLy8gRHN0IG9mZnNldCBzcGFjZSAtPiBkc3QgcmVj
dGFuZ2xlIHNwYWNlIC0+IHNyYyByZWN0YW5nbGUgc3BhY2UgLT4gc3JjIG9mZnNldCBzcGFjZS4K
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgbWF0cml4ID0gdGN1
TWF0cml4VXRpbC50cmFuc2xhdGlvbk1hdHJpeChbc3JjWDAgLSBzcmNSZWN0WzBdLCBzcmNZMCAt
IHNyY1JlY3RbMV1dKTsKKyAgICAgICAgbWF0cml4ID0gdGN1TWF0cml4Lm11bHRpcGx5KG1hdHJp
eCwgdGN1TWF0cml4Lm1hdHJpeEZyb21WZWN0b3IoMywgMywgWyhzcmNYMSAtIHNyY1gwKSAvIChk
c3RYMSAtIGRzdFgwKSwgKHNyY1kxIC0gc3JjWTApIC8gKGRzdFkxIC0gZHN0WTApLCAxXSkpOwor
ICAgICAgICBtYXRyaXggPSB0Y3VNYXRyaXgubXVsdGlwbHkobWF0cml4LCB0Y3VNYXRyaXhVdGls
LnRyYW5zbGF0aW9uTWF0cml4KFtkc3RSZWN0WzBdIC0gZHN0WDAsIGRzdFJlY3RbMV0gLSBkc3RZ
MF0pKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAgICAgKi8KKyAgICAgICAgdmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uKHgsIHkpIHsgcmV0dXJu
IG1hdHJpeC5nZXQoeCwgeSk7IH07CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBkWDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkWTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzWDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBzWTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
fHJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNj
ZXNzfSAqLyB2YXIgc3JjOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZm
ZXJBY2Nlc3N8cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3N9ICovIHZhciBkc3Q7CisKKyAgICAgICAgaWYgKG1hc2sgJiBnbC5DT0xPUl9C
VUZGRVJfQklUKSB7CisgICAgICAgICAgICBzcmMgPSB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdp
b24odGhpcy5nZXRSZWFkQ29sb3JidWZmZXIoKS50b1NpbmdsZXNhbXBsZUFjY2VzcygpLCBzcmNS
ZWN0WzBdLCBzcmNSZWN0WzFdLCAwLCBzcmNSZWN0WzJdLCBzcmNSZWN0WzNdLCAxKTsKKyAgICAg
ICAgICAgIGRzdCA9IHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbih0aGlzLmdldERyYXdDb2xv
cmJ1ZmZlcigpLnRvU2luZ2xlc2FtcGxlQWNjZXNzKCksIGRzdFJlY3RbMF0sIGRzdFJlY3RbMV0s
IDAsIGRzdFJlY3RbMl0sIGRzdFJlY3RbM10sIDEpOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0
Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3N9ICovIHZhciBkc3RDbGFzcyA9IHRjdVRleHR1
cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhkc3QuZ2V0Rm9ybWF0KCkudHlwZSk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBkc3RJc0Zsb2F0ID0gZHN0Q2xhc3MgPT0g
dGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdENsYXNz
ID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkc3RDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0ZJWEVE
X1BPSU5UOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkZpbHRlck1vZGV9ICov
IHZhciBzRmlsdGVyID0gKHNjYWxlICYmIGZpbHRlciA9PSBnbC5MSU5FQVIpID8gdGN1VGV4dHVy
ZS5GaWx0ZXJNb2RlLkxJTkVBUiA6IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9ICovIHZhciBzYW1wbGVyID0g
bmV3IHRjdVRleHR1cmUuU2FtcGxlcih0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0Us
IHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwgdGN1VGV4dHVyZS5XcmFwTW9kZS5D
TEFNUF9UT19FREdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzRmlsdGVyLCBzRmlsdGVyLCAwLjAgLyogbG9kIHRocmVzaG9sZCAqLywg
ZmFsc2UgLyogbm9uLW5vcm1hbGl6ZWQgY29vcmRzICovKTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdmFyIHNyY0lzU1JHQiA9IHNyYy5nZXRGb3JtYXQoKS5vcmRlciA9PSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCIHx8IHNyYy5nZXRGb3JtYXQoKS5vcmRlciA9PSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCQTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIGRzdElzU1JHQiA9IGRzdC5nZXRGb3JtYXQoKS5vcmRlciA9PSB0Y3VUZXh0
dXJlLkNoYW5uZWxPcmRlci5zUkdCIHx8IGRzdC5nZXRGb3JtYXQoKS5vcmRlciA9PSB0Y3VUZXh0
dXJlLkNoYW5uZWxPcmRlci5zUkdCQTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0g
Ki8gdmFyIGNvbnZlcnRTUkdCID0gdGhpcy5tX3NSR0JVcGRhdGVFbmFibGVkOworCisgICAgICAg
ICAgICAvLyBcbm90ZSBXZSBkb24ndCBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgY29udmVyc2lvbnMs
IHVubGlrZSBzcGVjIHJlcXVpcmVzLgorCisgICAgICAgICAgICBmb3IgKHZhciB5byA9IDA7IHlv
IDwgZHN0UmVjdFszXTsgeW8rKykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHhvID0gMDsg
eG8gPCBkc3RSZWN0WzJdOyB4bysrKSB7CisgICAgICAgICAgICAgICAgICAgIGRYID0geG8gKyAw
LjU7CisgICAgICAgICAgICAgICAgICAgIGRZID0geW8gKyAwLjU7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gXG5vdGUgT25seSBhZmZpbmUgcGFydCBpcyB1c2VkLgorICAgICAgICAgICAgICAg
ICAgICBzWCA9IHRyYW5zZm9ybSgwLCAwKSAqIGRYICsgdHJhbnNmb3JtKDAsIDEpICogZFkgKyB0
cmFuc2Zvcm0oMCwgMik7CisgICAgICAgICAgICAgICAgICAgIHNZID0gdHJhbnNmb3JtKDEsIDAp
ICogZFggKyB0cmFuc2Zvcm0oMSwgMSkgKiBkWSArIHRyYW5zZm9ybSgxLCAyKTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBkbyBub3QgY29weSBwaXhlbHMgb3V0c2lkZSB0aGUgbW9kaWZpZWQg
c291cmNlIHJlZ2lvbiAobW9kaWZpZWQgYnkgYnVmZmVyIGludGVyc2VjdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNYIDwgMC4wIHx8IHNYID49IHNyY1JlY3RbMl0gfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNZIDwgMC4wIHx8IHNZID49IHNyY1JlY3RbM10pCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoZHN0SXNG
bG9hdCB8fCBzcmNJc1NSR0IgfHwgZmlsdGVyID09IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5F
QVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHAgPSBzcmMuc2FtcGxlMkQoc2FtcGxlciwgc2FtcGxlci5taW5GaWx0ZXIsIHNYLCBz
WSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkc3Quc2V0UGl4ZWwoKGRzdElzU1JHQiAm
JiBjb252ZXJ0U1JHQikgPyB0Y3VUZXh0dXJlVXRpbC5saW5lYXJUb1NSR0IocCkgOiBwLCB4bywg
eW8pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRzdC5zZXRQaXhlbEludChzcmMuZ2V0UGl4ZWxJbnQoTWF0aC5mbG9vcihzWCksIE1hdGguZmxv
b3Ioc1kpKSwgeG8sIHlvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoKG1hc2sgJiBnbC5ERVBUSF9CVUZGRVJfQklUKSAmJiB0aGlz
Lm1fZGVwdGhNYXNrKSB7CisgICAgICAgICAgICBzcmMgPSB0aGlzLmdldFJlYWREZXB0aGJ1ZmZl
cigpLmdldFN1YnJlZ2lvbihzcmNSZWN0KTsKKyAgICAgICAgICAgIGRzdCA9IHRoaXMuZ2V0RHJh
d0RlcHRoYnVmZmVyKCkuZ2V0U3VicmVnaW9uKGRzdFJlY3QpOworCisgICAgICAgICAgICBmb3Ig
KHZhciB5byA9IDA7IHlvIDwgZHN0UmVjdFszXTsgeW8rKykgeworICAgICAgICAgICAgICAgIGZv
ciAodmFyIHhvID0gMDsgeG8gPCBkc3RSZWN0WzJdOyB4bysrKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBzYW1wbGVOZHggPSAwOyAvLyBtdWx0aXNhbXBsZSByZWFkIGJ1ZmZlciBjYXNlIGlz
IGFscmVhZHkgaGFuZGxlZAorCisgICAgICAgICAgICAgICAgICAgIGRYID0geG8gKyAwLjU7Cisg
ICAgICAgICAgICAgICAgICAgIGRZID0geW8gKyAwLjU7CisgICAgICAgICAgICAgICAgICAgIHNY
ID0gdHJhbnNmb3JtKDAsIDApICogZFggKyB0cmFuc2Zvcm0oMCwgMSkgKiBkWSArIHRyYW5zZm9y
bSgwLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgc1kgPSB0cmFuc2Zvcm0oMSwgMCkgKiBkWCAr
IHRyYW5zZm9ybSgxLCAxKSAqIGRZICsgdHJhbnNmb3JtKDEsIDIpOworCisgICAgICAgICAgICAg
ICAgICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LndyaXRlRGVwdGhPbmx5KGRzdCwgc2FtcGxlTmR4
LCB4bywgeW8sIHNyYy5yYXcoKS5nZXRQaXhlbChzYW1wbGVOZHgsIE1hdGguZmxvb3Ioc1gpLCBN
YXRoLmZsb29yKHNZKSlbMF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtYXNrICYgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSB7Cisg
ICAgICAgICAgICBzcmMgPSB0aGlzLmdldFJlYWRTdGVuY2lsYnVmZmVyKCkuZ2V0U3VicmVnaW9u
KHNyY1JlY3QpOworICAgICAgICAgICAgZHN0ID0gdGhpcy5nZXREcmF3U3RlbmNpbGJ1ZmZlcigp
LmdldFN1YnJlZ2lvbihkc3RSZWN0KTsKKworICAgICAgICAgICAgZm9yICh2YXIgeW8gPSAwOyB5
byA8IGRzdFJlY3RbM107IHlvKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB4byA9IDA7
IHhvIDwgZHN0UmVjdFsyXTsgeG8rKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgc2FtcGxl
TmR4ID0gMDsgLy8gbXVsdGlzYW1wbGUgcmVhZCBidWZmZXIgY2FzZSBpcyBhbHJlYWR5IGhhbmRs
ZWQKKworICAgICAgICAgICAgICAgICAgICBkWCA9IHhvICsgMC41OworICAgICAgICAgICAgICAg
ICAgICBkWSA9IHlvICsgMC41OworICAgICAgICAgICAgICAgICAgICBzWCA9IHRyYW5zZm9ybSgw
LCAwKSAqIGRYICsgdHJhbnNmb3JtKDAsIDEpICogZFkgKyB0cmFuc2Zvcm0oMCwgMik7CisgICAg
ICAgICAgICAgICAgICAgIHNZID0gdHJhbnNmb3JtKDEsIDApICogZFggKyB0cmFuc2Zvcm0oMSwg
MSkgKiBkWSArIHRyYW5zZm9ybSgxLCAyKTsKKworICAgICAgICAgICAgICAgICAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dC53cml0ZVN0ZW5jaWxPbmx5KGRzdCwgc2FtcGxlTmR4LCB4bywgeW8sIHNy
Yy5yYXcoKS5nZXRQaXhlbEludChzYW1wbGVOZHgsIE1hdGguZmxvb3Ioc1gpLCBNYXRoLmZsb29y
KHNZKSlbM10sIHRoaXMubV9zdGVuY2lsW3JyRGVmcy5GYWNlVHlwZS5GQUNFVFlQRV9GUk9OVF0u
d3JpdGVNYXNrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQK
KyAgICAqIEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0KKyAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0Lm1hcEludGVybmFsRm9ybWF0ID0gZnVuY3Rpb24oaW50ZXJuYWxG
b3JtYXQpIHsKKyAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkgeworICAgICAgICAgICAg
Y2FzZSBnbC5BTFBIQTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4
dHVyZS5DaGFubmVsT3JkZXIuQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTsK
KyAgICAgICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFOiByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5MLCB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLlVOT1JNX0lOVDgpOworICAgICAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0VfQUxQSEE6IHJl
dHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkxBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpOworICAgICAgICAgICAgY2Fz
ZSBnbC5SR0I6IHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHQiwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KTsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuUkdCQTogcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3Jt
YXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5V
Tk9STV9JTlQ4KTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4
ZWxCdWZmZXJBY2Nlc3N9IGRzdAorICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxC
dWZmZXJBY2Nlc3N9IHNyYworICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuZGVwdGhW
YWx1ZUZsb2F0Q2xhbXBDb3B5ID0gZnVuY3Rpb24oZHN0LCBzcmMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9IGRzdC5nZXRXaWR0aCgpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGhlaWdodCA9IGRzdC5nZXRIZWlnaHQoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkZXB0aCA9IGRzdC5nZXREZXB0aCgpOworCisgICAg
ICAgIERFX0FTU0VSVChzcmMuZ2V0V2lkdGgoKSA9PSB3aWR0aCAmJiBzcmMuZ2V0SGVpZ2h0KCkg
PT0gaGVpZ2h0ICYmIHNyYy5nZXREZXB0aCgpID09IGRlcHRoKTsKKworICAgICAgICAvLyBjbGFt
cGluZyBjb3B5CisgICAgICAgIGZvciAodmFyIHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgZm9yICh2YXIgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBkYXRhID0gc3JjLmdldFBpeGVsKHgsIHksIHopOworICAgICAgICAgICAgZHN0
LnNldFBpeGVsKFtkZU1hdGguY2xhbXAoZGF0YVswXSwgMC4wLCAxLjApLCBkYXRhWzFdLCBkYXRh
WzJdLCBkYXRhWzNdXSwgeCwgeSwgeik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisg
ICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwK
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICogQHBhcmFtIHtudW1i
ZXJ9IHdpZHRoCisgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgKi8KKyAgICBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS50ZXhJbWFnZTJERGVs
ZWdhdGUgPSBmdW5jdGlvbiAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpIHsKKyAgICAgICAgdmFyIGZvcm1hdDsKKyAgICAgICAgdmFyIGRhdGFUeXBlOworCisg
ICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNh
c2UgZ2wuQUxQSEE6CisgICAgICAgICAgICBjYXNlIGdsLkxVTUlOQU5DRToKKyAgICAgICAgICAg
IGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBnbC5SR0I6CisgICAg
ICAgICAgICBjYXNlIGdsLlJHQkE6CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSBHTC5VTlNJR05FRF9CWVRFOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFu
c2ZlckZvcm1hdChnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gdHJhbnNmZXJGbXQuZm9ybWF0OworICAg
ICAgICAgICAgICAgIGRhdGFUeXBlID0gdHJhbnNmZXJGbXQuZGF0YVR5cGU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGhpcy50ZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBm
b3JtYXQsIGRhdGFUeXBlLCBudWxsKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0g
e251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisg
ICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgKiBAcGFyYW0ge251bWJlcn0gYm9yZGVy
CisgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gdHlw
ZQorICAgICogQHBhcmFtIHtudW1iZXJ9IHBpeGVscworICAgICovCisgICAgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudGV4SW1hZ2UyRCA9IGZ1bmN0aW9u
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKSB7CisgICAgICAgIHRoaXMudGV4SW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7CisgICAgfTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5j
ZUNvbnRleHQucHJvdG90eXBlLnRleEltYWdlM0QgPSBmdW5jdGlvbih0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlVW5pdH0gKi92YXIgdW5pdCA9IHRoaXMubV90ZXh0dXJlVW5pdHNbdGhpcy5tX2FjdGl2ZVRl
eHR1cmVdOworICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyfSAqLyB2YXIgZGF0YSA9IG51
bGw7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb2Zmc2V0ID0gMDsKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgZHN0Owor
ICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gKi8g
dmFyIHNyYzsKKyAgICAgICAgaWYgKHRoaXMubV9waXhlbFVucGFja0J1ZmZlckJpbmRpbmcpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IodHlwZW9mIHBpeGVscyAh
PT0gJ251bWJlcicsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1fcGl4ZWxVbnBhY2tCdWZmZXJCaW5kaW5nLmdldERh
dGEoKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHBpeGVsczsKKyAgICAgICAgfSBlbHNlIGlmIChw
aXhlbHMpIHsKKyAgICAgICAgICAgIGlmIChwaXhlbHMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikg
eworICAgICAgICAgICAgICAgIGRhdGEgPSBwaXhlbHM7CisgICAgICAgICAgICAgICAgb2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IHBpeGVs
cy5idWZmZXI7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcGl4ZWxzLmJ5dGVPZmZzZXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNEc3RGbG9hdERlcHRoRm9ybWF0ID0gKGludGVybmFsRm9ybWF0ID09IGdsLkRFUFRIX0NP
TVBPTkVOVDMyRiB8fCBpbnRlcm5hbEZvcm1hdCA9PSBnbC5ERVBUSDMyRl9TVEVOQ0lMOCk7IC8v
IGRlcHRoIGNvbXBvbmVudHMgYXJlIGxpbWl0ZWQgdG8gWzAsMV0gcmFuZ2UKKworICAgICAgICBp
ZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGJvcmRlciAhPSAwLCBnbC5JTlZBTElEX1ZBTFVF
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRF
cnJvcih3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8fCBkZXB0aCA8IDAgfHwgbGV2ZWwgPCAwLCBn
bC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBNYXAg
c3RvcmFnZSBmb3JtYXQuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9y
bWF0fSAqLyB2YXIgc3RvcmFnZUZtdCA9IHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1hcEludGVybmFs
Rm9ybWF0KGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRF
cnJvcighc3RvcmFnZUZtdCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBNYXAgdHJhbnNmZXIgZm9ybWF0LgorICAgICAgICAvKiogQHR5cGUge3Rj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0
aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQsIHR5cGUpOworICAgICAgICBpZiAodGhpcy5j
b25kaXRpb25hbFNldEVycm9yKCF0cmFuc2ZlckZtdCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQpIHsK
KyAgICAgICAgICAgIC8vIFZhbGlkYXRlIHNpemUgYW5kIGxldmVsLgorICAgICAgICAgICAgaWYg
KHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih3aWR0aCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVy
ZTJEU2l6ZSB8fCBoZWlnaHQgPiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUgfHwgZGVw
dGggIT0gMSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihsZXZlbCA+IE1hdGgubG9nMih0
aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUpLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5j
ZUNvbnRleHQuVGV4dHVyZTJEfSAqLworICAgICAgICAgICAgdmFyIHRleHR1cmUgPSAvKiogQHR5
cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRH0gKi8gKHVuaXQudGV4MkRCaW5kaW5n
LnRleHR1cmUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZS5pc0ltbXV0YWJsZSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcighdGV4dHVyZS5oYXNM
ZXZlbChsZXZlbCksIGdsLklOVkFMSURfT1BFUkFUSU9OKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgLy9OT1RFOiByZXBsYWNlcyB0aGlzOiB2YXIgZHN0
ID0gdGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcy5uZXdGcm9tVGV4dHVyZUxldmVsKHRleHR1
cmUuZ2V0TGV2ZWwobGV2ZWwpKTsKKyAgICAgICAgICAgICAgICBkc3QgPSB0ZXh0dXJlLmdldExl
dmVsKGxldmVsKTsKKworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IoIXN0b3JhZ2VGbXQuaXNFcXVhbChkc3QuZ2V0Rm9ybWF0KCkpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGggIT0gZHN0LmdldFdpZHRoKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQgIT0gZHN0LmdldEhlaWdodCgpLCBnbC5JTlZBTElEX09QRVJB
VElPTikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHRleHR1cmUuYWxsb2NMZXZlbChsZXZlbCwgc3RvcmFnZUZtdCwgd2lk
dGgsIGhlaWdodCk7CisKKyAgICAgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICAgICAg
dmFyIHJvd0xlbiA9IHRoaXMubV9waXhlbFVucGFja1Jvd0xlbmd0aCA+IDAgPyB0aGlzLm1fcGl4
ZWxVbnBhY2tSb3dMZW5ndGggOiB3aWR0aDsKKyAgICAgICAgICAgICAgICB2YXIgcm93UGl0Y2gg
PSBkZU1hdGguZGVBbGlnbjMyKHJvd0xlbiAqIHRyYW5zZmVyRm10LmdldFBpeGVsU2l6ZSgpLCB0
aGlzLm1fcGl4ZWxVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICAgICAgICAgIHZhciBza2lwID0g
dGhpcy5tX3BpeGVsVW5wYWNrU2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9waXhlbFVucGFj
a1NraXBQaXhlbHMgKiB0cmFuc2ZlckZtdC5nZXRQaXhlbFNpemUoKTsKKyAgICAgICAgICAgICAg
ICBzcmMgPSBuZXcgdGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0OiB0cmFuc2ZlckZtdCwKKyAgICAgICAgICAgICAgICAgICAgd2lk
dGg6IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBkYXRh
OiBkYXRhLAorICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCArIHNraXB9KTsKKwor
ICAgICAgICAgICAgICAgIC8vTk9URTogcmVwbGFjZXMgdGhpczogdmFyIGRzdCA9IHRjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3MubmV3RnJvbVRleHR1cmVMZXZlbCh0ZXh0dXJlLmdldExldmVs
KGxldmVsKSk7CisgICAgICAgICAgICAgICAgZHN0ID0gdGV4dHVyZS5nZXRMZXZlbChsZXZlbCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoaXNEc3RGbG9hdERlcHRoRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5kZXB0aFZhbHVlRmxvYXRDbGFtcENvcHko
ZHN0LCBzcmMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGN1
VGV4dHVyZVV0aWwuY29weShkc3QsIHNyYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIC8vIE5vIGRhdGEgc3VwcGxpZWQsIGNsZWFyIHRvIGJsYWNrLgorCisgICAgICAg
ICAgICAgICAgLy9OT1RFOiByZXBsYWNlcyB0aGlzOiB2YXIgZHN0ID0gdGN1VGV4dHVyZS5QaXhl
bEJ1ZmZlckFjY2Vzcy5uZXdGcm9tVGV4dHVyZUxldmVsKHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwp
KTsKKyAgICAgICAgICAgICAgICBkc3QgPSB0ZXh0dXJlLmdldExldmVsKGxldmVsKTsKKyAgICAg
ICAgICAgICAgICBkc3QuY2xlYXIoWzAuMCwgMC4wLCAwLjAsIDEuMF0pOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1ggfHwKKyAgICAgICAgICAgICAgICAgdGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCB8fAorICAgICAgICAgICAgICAgICB0YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZIHx8CisgICAgICAgICAgICAgICAgIHRhcmdldCA9PSBnbC5URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1kgfHwKKyAgICAgICAgICAgICAgICAgdGFyZ2V0ID09IGdsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiB8fAorICAgICAgICAgICAgICAgICB0YXJnZXQgPT0g
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aKSB7CisgICAgICAgICAgICAvLyBWYWxpZGF0
ZSBzaXplIGFuZCBsZXZlbC4KKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3Iod2lkdGggIT0gaGVpZ2h0IHx8IHdpZHRoID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlQ3Vi
ZVNpemUgfHwgZGVwdGggIT0gMSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihsZXZlbCA+
IE1hdGguZmxvb3IoTWF0aC5sb2cyKHRoaXMubV9saW1pdHMubWF4VGV4dHVyZUN1YmVTaXplKSks
IGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgdmFyIHRleHR1cmVDdWJlID0gLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlQ3ViZX0gKi8gKHVuaXQudGV4Q3ViZUJpbmRpbmcudGV4dHVyZSk7CisKKyAgICAgICAgICAg
IHZhciBmYWNlID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFwR0xDdWJlRmFjZSh0YXJnZXQpOwor
CisgICAgICAgICAgICBpZiAodGV4dHVyZUN1YmUuaXNJbW11dGFibGUoKSkgeworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIXRleHR1cmVDdWJlLmhhc0ZhY2Uo
bGV2ZWwsIGZhY2UpLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIGRzdCA9IHRleHR1cmVDdWJlLmdldEZhY2UobGV2
ZWwsIGZhY2UpOworCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJv
cighc3RvcmFnZUZtdC5pc0VxdWFsKGRzdC5nZXRGb3JtYXQoKSkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aCAhPSBkc3QuZ2V0V2lkdGgoKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCAhPSBkc3QuZ2V0SGVpZ2h0KCksIGdsLklOVkFMSURfT1BFUkFU
SU9OKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgdGV4dHVyZUN1YmUuYWxsb2NMZXZlbChsZXZlbCwgZmFjZSwgc3RvcmFn
ZUZtdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHJvd0xlbiA9IHRoaXMubV9waXhlbFVucGFja1Jvd0xlbmd0aCA+IDAgPyB0
aGlzLm1fcGl4ZWxVbnBhY2tSb3dMZW5ndGggOiB3aWR0aDsKKyAgICAgICAgICAgICAgICB2YXIg
cm93UGl0Y2ggPSBkZU1hdGguZGVBbGlnbjMyKHJvd0xlbiAqIHRyYW5zZmVyRm10LmdldFBpeGVs
U2l6ZSgpLCB0aGlzLm1fcGl4ZWxVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICAgICAgICAgIHZh
ciBza2lwID0gdGhpcy5tX3BpeGVsVW5wYWNrU2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9w
aXhlbFVucGFja1NraXBQaXhlbHMgKiB0cmFuc2ZlckZtdC5nZXRQaXhlbFNpemUoKTsKKyAgICAg
ICAgICAgICAgICBzcmMgPSBuZXcgdGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzKHsK
KyAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0cmFuc2ZlckZtdCwKKyAgICAgICAgICAgICAg
ICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCArIHNr
aXB9KTsKKworICAgICAgICAgICAgICAgIGRzdCA9IHRleHR1cmVDdWJlLmdldEZhY2UobGV2ZWws
IGZhY2UpOworCisgICAgICAgICAgICAgICAgaWYgKGlzRHN0RmxvYXREZXB0aEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuZGVwdGhWYWx1ZUZsb2F0Q2xh
bXBDb3B5KGRzdCwgc3JjKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRjdVRleHR1cmVVdGlsLmNvcHkoZHN0LCBzcmMpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBObyBkYXRhIHN1cHBsaWVkLCBjbGVhciB0byBibGFjay4KKyAg
ICAgICAgICAgICAgICBkc3QgPSB0ZXh0dXJlQ3ViZS5nZXRGYWNlKGxldmVsLCBmYWNlKTsKKyAg
ICAgICAgICAgICAgICBkc3QuY2xlYXIoWzAuMCwgMC4wLCAwLjAsIDEuMF0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJFXzJEX0FSUkFZKSB7
CisgICAgICAgICAgICAvLyBWYWxpZGF0ZSBzaXplIGFuZCBsZXZlbC4KKyAgICAgICAgICAgIGlm
ICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Iod2lkdGggPiB0aGlzLm1fbGltaXRzLm1heFRleHR1
cmUyRFNpemUgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IHRoaXMubV9saW1p
dHMubWF4VGV4dHVyZTJEU2l6ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGggPiB0
aGlzLm1fbGltaXRzLm1heFRleHR1cmUyREFycmF5TGF5ZXJzLCBnbC5JTlZBTElEX1ZBTFVFKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKGxldmVsID4gTWF0aC5mbG9vcihNYXRoLmxvZzIodGhpcy5tX2xpbWl0cy5tYXhU
ZXh0dXJlMkRTaXplKSksIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJl
MkRBcnJheX0gKi8KKyAgICAgICAgICAgIHZhciB0ZXh0dXJlMkRBcnJheSA9IC8qKiBAdHlwZSB7
c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEQXJyYXl9ICovICh1bml0LnRleDJEQXJyYXlC
aW5kaW5nLnRleHR1cmUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZTJEQXJyYXkuaXNJbW11
dGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Io
IXRleHR1cmUyREFycmF5Lmhhc0xldmVsKGxldmVsKSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBkc3QgPSB0ZXh0
dXJlMkRBcnJheS5nZXRMZXZlbChsZXZlbCk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcighc3RvcmFnZUZtdC5pc0VxdWFsKGRzdC5nZXRGb3JtYXQoKSkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAhPSBkc3QuZ2V0V2lkdGgoKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAhPSBkc3QuZ2V0SGVpZ2h0KCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCAhPSBkc3QuZ2V0RGVwdGgoKSwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXh0dXJlMkRBcnJheS5hbGxvY0xldmVsKGxl
dmVsLCBzdG9yYWdlRm10LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisKKyAgICAgICAgICAgIGlm
IChkYXRhKSB7CisgICAgICAgICAgICAgICAgdmFyIHJvd0xlbiA9IHRoaXMubV9waXhlbFVucGFj
a1Jvd0xlbmd0aCA+IDAgPyB0aGlzLm1fcGl4ZWxVbnBhY2tSb3dMZW5ndGggOiB3aWR0aDsKKyAg
ICAgICAgICAgICAgICB2YXIgaW1hZ2VIZWlnaHQgPSB0aGlzLm1fcGl4ZWxVbnBhY2tJbWFnZUhl
aWdodCA+IDAgPyB0aGlzLm1fcGl4ZWxVbnBhY2tJbWFnZUhlaWdodCA6IGhlaWdodDsKKyAgICAg
ICAgICAgICAgICB2YXIgcm93UGl0Y2ggPSBkZU1hdGguZGVBbGlnbjMyKHJvd0xlbiAqIHRyYW5z
ZmVyRm10LmdldFBpeGVsU2l6ZSgpLCB0aGlzLm1fcGl4ZWxVbnBhY2tBbGlnbm1lbnQpOworICAg
ICAgICAgICAgICAgIHZhciBzbGljZVBpdGNoID0gaW1hZ2VIZWlnaHQgKiByb3dQaXRjaDsKKyAg
ICAgICAgICAgICAgICB2YXIgc2tpcCA9IHRoaXMubV9waXhlbFVucGFja1NraXBJbWFnZXMgKiBz
bGljZVBpdGNoICsgdGhpcy5tX3BpeGVsVW5wYWNrU2tpcFJvd3MgKiByb3dQaXRjaCArCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMubV9waXhlbFVucGFja1NraXBQaXhlbHMgKiB0cmFuc2ZlckZt
dC5nZXRQaXhlbFNpemUoKTsKKyAgICAgICAgICAgICAgICBzcmMgPSBuZXcgdGN1VGV4dHVyZS5D
b25zdFBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0cmFu
c2ZlckZtdCwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGg6IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgIHNsaWNlUGl0Y2g6IHNsaWNlUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6
IGRhdGEsCisgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0ICsgc2tpcH0pOworCisg
ICAgICAgICAgICAgICAgZHN0ID0gdGV4dHVyZTJEQXJyYXkuZ2V0TGV2ZWwobGV2ZWwpOworCisg
ICAgICAgICAgICAgICAgaWYgKGlzRHN0RmxvYXREZXB0aEZvcm1hdCkKKyAgICAgICAgICAgICAg
ICAgICAgc2dsclJlZmVyZW5jZUNvbnRleHQuZGVwdGhWYWx1ZUZsb2F0Q2xhbXBDb3B5KGRzdCwg
c3JjKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1
cmVVdGlsLmNvcHkoZHN0LCBzcmMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBObyBkYXRhIHN1cHBsaWVkLCBjbGVhciB0byBibGFjay4KKyAgICAgICAgICAgICAg
ICBkc3QgPSB0ZXh0dXJlMkRBcnJheS5nZXRMZXZlbChsZXZlbCk7CisgICAgICAgICAgICAgICAg
ZHN0LmNsZWFyKFswLjAsIDAuMCwgMC4wLCAxLjBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8zRCkgeworICAgICAgICAgICAgLy8gVmFs
aWRhdGUgc2l6ZSBhbmQgbGV2ZWwuCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNl
dEVycm9yKHdpZHRoID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlM0RTaXplIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICBoZWlnaHQgPiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUzRFNpemUg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0
dXJlM0RTaXplLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGxldmVsID4gTWF0aC5mbG9v
cihNYXRoLmxvZzIodGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlM0RTaXplKSksIGdsLklOVkFMSURf
VkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIHRleHR1
cmUzRCA9IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTNEfSAqLyAodW5p
dC50ZXgzREJpbmRpbmcudGV4dHVyZSk7CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlM0QuaXNJ
bW11dGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IoIXRleHR1cmUzRC5oYXNMZXZlbChsZXZlbCksIGdsLklOVkFMSURfT1BFUkFUSU9OKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgZHN0ID0gdGV4dHVy
ZTNELmdldExldmVsKGxldmVsKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKCFzdG9yYWdlRm10LmlzRXF1YWwoZHN0LmdldEZvcm1hdCgpKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICE9IGRzdC5nZXRXaWR0aCgpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICE9IGRzdC5nZXRIZWlnaHQoKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoICE9IGRzdC5nZXREZXB0aCgpLCBnbC5JTlZBTElE
X09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHRleHR1cmUzRC5hbGxvY0xldmVsKGxldmVsLCBzdG9yYWdl
Rm10LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisKKyAgICAgICAgICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJvd0xlbiA9IHRoaXMubV9waXhlbFVucGFja1Jvd0xlbmd0aCA+
IDAgPyB0aGlzLm1fcGl4ZWxVbnBhY2tSb3dMZW5ndGggOiB3aWR0aDsKKyAgICAgICAgICAgICAg
ICB2YXIgaW1hZ2VIZWlnaHQgPSB0aGlzLm1fcGl4ZWxVbnBhY2tJbWFnZUhlaWdodCA+IDAgPyB0
aGlzLm1fcGl4ZWxVbnBhY2tJbWFnZUhlaWdodCA6IGhlaWdodDsKKyAgICAgICAgICAgICAgICB2
YXIgcm93UGl0Y2ggPSBkZU1hdGguZGVBbGlnbjMyKHJvd0xlbiAqIHRyYW5zZmVyRm10LmdldFBp
eGVsU2l6ZSgpLCB0aGlzLm1fcGl4ZWxVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICAgICAgICAg
IHZhciBzbGljZVBpdGNoID0gaW1hZ2VIZWlnaHQgKiByb3dQaXRjaDsKKyAgICAgICAgICAgICAg
ICB2YXIgc2tpcCA9IHRoaXMubV9waXhlbFVucGFja1NraXBJbWFnZXMgKiBzbGljZVBpdGNoICsg
dGhpcy5tX3BpeGVsVW5wYWNrU2tpcFJvd3MgKiByb3dQaXRjaCArCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV9waXhlbFVucGFja1NraXBQaXhlbHMgKiB0cmFuc2ZlckZtdC5nZXRQaXhlbFNp
emUoKTsKKyAgICAgICAgICAgICAgICBzcmMgPSBuZXcgdGN1VGV4dHVyZS5Db25zdFBpeGVsQnVm
ZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0cmFuc2ZlckZtdCwKKyAg
ICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBoZWln
aHQ6IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGg6IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNsaWNl
UGl0Y2g6IHNsaWNlUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAg
ICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0ICsgc2tpcH0pOworCisgICAgICAgICAgICAg
ICAgZHN0ID0gdGV4dHVyZTNELmdldExldmVsKGxldmVsKTsKKworICAgICAgICAgICAgICAgIGlm
IChpc0RzdEZsb2F0RGVwdGhGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LmRlcHRoVmFsdWVGbG9hdENsYW1wQ29weShkc3QsIHNyYyk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5jb3B5KGRzdCwg
c3JjKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBkYXRh
IHN1cHBsaWVkLCBjbGVhciB0byBibGFjay4KKyAgICAgICAgICAgICAgICBkc3QgPSB0ZXh0dXJl
M0QuZ2V0TGV2ZWwobGV2ZWwpOworICAgICAgICAgICAgICAgIGRzdC5jbGVhcihbMC4wLCAwLjAs
IDAuMCwgMS4wXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gZWxzZSBp
ZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBfQVJSQVkpCisgICAgICAgIC8vIHsKKyAg
ICAgICAgLy8gICAgIC8vIFZhbGlkYXRlIHNpemUgYW5kIGxldmVsLgorICAgICAgICAvLyAgICAg
UkNfSUZfRVJST1Iod2lkdGggIT0gaGVpZ2h0IHx8CisgICAgICAgIC8vICAgICAgICAgICAgICAg
ICB3aWR0aCA+IG1fbGltaXRzLm1heFRleHR1cmUyRFNpemUgfHwKKyAgICAgICAgLy8gICAgICAg
ICAgICAgICAgIGRlcHRoICUgNiAhPSAwIHx8CisgICAgICAgIC8vICAgICAgICAgICAgICAgICBk
ZXB0aCA+IG1fbGltaXRzLm1heFRleHR1cmUyREFycmF5TGF5ZXJzLCBnbC5JTlZBTElEX1ZBTFVF
LCBSQ19SRVRfVk9JRCk7CisgICAgICAgIC8vICAgICBSQ19JRl9FUlJPUihsZXZlbCA+IGRlTG9n
MkZsb29yMzIobV9saW1pdHMubWF4VGV4dHVyZTJEU2l6ZSksIGdsLklOVkFMSURfVkFMVUUsIFJD
X1JFVF9WT0lEKTsKKworICAgICAgICAvLyAgICAgVGV4dHVyZUN1YmVBcnJheSogdGV4dHVyZSA9
IHVuaXQudGV4Q3ViZUFycmF5QmluZGluZyA/IHVuaXQudGV4Q3ViZUFycmF5QmluZGluZyA6ICZ1
bml0LmRlZmF1bHRDdWJlQXJyYXlUZXg7CisKKyAgICAgICAgLy8gICAgIGlmICh0ZXh0dXJlLT5p
c0ltbXV0YWJsZSgpKQorICAgICAgICAvLyAgICAgeworICAgICAgICAvLyAgICAgICAgIFJDX0lG
X0VSUk9SKCF0ZXh0dXJlLT5oYXNMZXZlbChsZXZlbCksIGdsLklOVkFMSURfT1BFUkFUSU9OLCBS
Q19SRVRfVk9JRCk7CisKKyAgICAgICAgLy8gICAgICAgICBDb25zdFBpeGVsQnVmZmVyQWNjZXNz
IGRzdCh0ZXh0dXJlLT5nZXRMZXZlbChsZXZlbCkpOworICAgICAgICAvLyAgICAgICAgIFJDX0lG
X0VSUk9SKHN0b3JhZ2VGbXQgIT0gZHN0LmdldEZvcm1hdCgpIHx8CisgICAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgd2lkdGggIT0gZHN0LmdldFdpZHRoKCkgfHwKKyAgICAgICAgLy8gICAg
ICAgICAgICAgICAgICAgICBoZWlnaHQgIT0gZHN0LmdldEhlaWdodCgpIHx8CisgICAgICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgZGVwdGggIT0gZHN0LmdldERlcHRoKCksIGdsLklOVkFMSURf
T1BFUkFUSU9OLCBSQ19SRVRfVk9JRCk7CisgICAgICAgIC8vICAgICB9CisgICAgICAgIC8vICAg
ICBlbHNlCisgICAgICAgIC8vICAgICAgICAgdGV4dHVyZS0+YWxsb2NMZXZlbChsZXZlbCwgc3Rv
cmFnZUZtdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworCisgICAgICAgIC8vICAgICBpZiAodW5w
YWNrUHRyKQorICAgICAgICAvLyAgICAgeworICAgICAgICAvLyAgICAgICAgIENvbnN0UGl4ZWxC
dWZmZXJBY2Nlc3Mgc3JjID0gZ2V0VW5wYWNrM0RBY2Nlc3ModHJhbnNmZXJGbXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCB1bnBhY2tQdHIpOworICAgICAgICAvLyAgICAgICAgIFBpeGVsQnVmZmVy
QWNjZXNzIGRzdCAodGV4dHVyZS0+Z2V0TGV2ZWwobGV2ZWwpKTsKKworICAgICAgICAvLyAgICAg
ICAgIGlmIChpc0RzdEZsb2F0RGVwdGhGb3JtYXQpCisgICAgICAgIC8vICAgICAgICAgICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0LmRlcHRoVmFsdWVGbG9hdENsYW1wQ29weShkc3QsIHNyYyk7Cisg
ICAgICAgIC8vICAgICAgICAgZWxzZQorICAgICAgICAvLyAgICAgICAgICAgICB0Y3U6OmNvcHko
ZHN0LCBzcmMpOworICAgICAgICAvLyAgICAgfQorICAgICAgICAvLyAgICAgZWxzZQorICAgICAg
ICAvLyAgICAgeworICAgICAgICAvLyAgICAgICAgIC8vIE5vIGRhdGEgc3VwcGxpZWQsIGNsZWFy
IHRvIGJsYWNrLgorICAgICAgICAvLyAgICAgICAgIFBpeGVsQnVmZmVyQWNjZXNzIGRzdCA9IHRl
eHR1cmUtPmdldExldmVsKGxldmVsKTsKKyAgICAgICAgLy8gICAgICAgICB0Y3U6OmNsZWFyKGRz
dCwgVmVjNCgwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKSk7CisgICAgICAgIC8vICAgICB9CisgICAg
ICAgIC8vIH0gLyoqLworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnNldEVycm9yKGds
LklOVkFMSURfRU5VTSk7CisgICAgfTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVy
ZW5jZUNvbnRleHQucHJvdG90eXBlLnRleFN1YkltYWdlMkQgPSBmdW5jdGlvbih0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykgeworICAgICAgICB0aGlzLnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAg
IH07CisKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlw
ZS50ZXhTdWJJbWFnZTNEID0gZnVuY3Rpb24odGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVVuaXR9ICov
dmFyIHVuaXQgPSB0aGlzLm1fdGV4dHVyZVVuaXRzW3RoaXMubV9hY3RpdmVUZXh0dXJlXTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGEgPSBudWxsOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9mZnNldCA9IDA7CisgICAgICAgIC8qKiBAdHlw
ZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGRzdDsKKyAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgc3ViOworICAgICAg
ICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIHNy
YzsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNEc3RGbG9hdERlcHRoRm9y
bWF0OworICAgICAgICBpZiAodGhpcy5tX3BpeGVsVW5wYWNrQnVmZmVyQmluZGluZykgeworICAg
ICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0eXBlb2YgcGl4ZWxzICE9PSAn
bnVtYmVyJywgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgZGF0YSA9IHRoaXMubV9waXhlbFVucGFja0J1ZmZlckJpbmRpbmcuZ2V0RGF0YSgp
OworICAgICAgICAgICAgb2Zmc2V0ID0gcGl4ZWxzOworICAgICAgICB9IGVsc2UgaWYgKHBpeGVs
cykgeworICAgICAgICAgICAgaWYgKHBpeGVscyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YSA9IHBpeGVsczsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSAw
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkYXRhID0gcGl4ZWxzLmJ1
ZmZlcjsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBwaXhlbHMuYnl0ZU9mZnNldDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwgem9mZnNldCA8IDAsIGdsLklOVkFMSURf
VkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IGRlcHRoIDwgMCB8fCBsZXZlbCA8
IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8v
IE1hcCB0cmFuc2ZlciBmb3JtYXQuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0
dXJlRm9ybWF0fSAqLyB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5z
ZmVyRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0
RXJyb3IoIXRyYW5zZmVyRm10LCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAg
Ly8gVmFsaWRhdGUgc2l6ZSBhbmQgbGV2ZWwuCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25hbFNldEVycm9yKHdpZHRoID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlMkRTaXplIHx8IGhl
aWdodCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTJEU2l6ZSB8fCBkZXB0aCAhPSAxLCBnbC5J
TlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAo
dGhpcy5jb25kaXRpb25hbFNldEVycm9yKGxldmVsID4gTWF0aC5sb2cyKHRoaXMubV9saW1pdHMu
bWF4VGV4dHVyZTJEU2l6ZSksIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlMkR9ICovCisgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZTJEfSAqLyAodW5pdC50ZXgyREJpbmRpbmcudGV4dHVyZSk7CisK
KyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIXRleHR1cmUuaGFzTGV2
ZWwobGV2ZWwpLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAvL05PVEU6IHJlcGxhY2VzIHRoaXM6IHZhciBkc3QgPSB0Y3VUZXh0
dXJlLlBpeGVsQnVmZmVyQWNjZXNzLm5ld0Zyb21UZXh0dXJlTGV2ZWwodGV4dHVyZS5nZXRMZXZl
bChsZXZlbCkpOworICAgICAgICAgICAgZHN0ID0gdGV4dHVyZS5nZXRMZXZlbChsZXZlbCk7CisK
KyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoeG9mZnNldCArIHdpZHRo
ID4gZHN0LmdldFdpZHRoKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5b2Zmc2V0ICsgaGVpZ2h0ID4gZHN0LmdldEhlaWdodCgpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgem9mZnNldCArIGRlcHRoID4gZHN0LmdldERlcHRo
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuSU5WQUxJRF9W
QUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgcm93TGVu
ID0gdGhpcy5tX3BpeGVsVW5wYWNrUm93TGVuZ3RoID4gMCA/IHRoaXMubV9waXhlbFVucGFja1Jv
d0xlbmd0aCA6IHdpZHRoOworICAgICAgICAgICAgdmFyIHJvd1BpdGNoID0gZGVNYXRoLmRlQWxp
Z24zMihyb3dMZW4gKiB0cmFuc2ZlckZtdC5nZXRQaXhlbFNpemUoKSwgdGhpcy5tX3BpeGVsVW5w
YWNrQWxpZ25tZW50KTsKKyAgICAgICAgICAgIHZhciBza2lwID0gdGhpcy5tX3BpeGVsVW5wYWNr
U2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9waXhlbFVucGFja1NraXBQaXhlbHMgKiB0cmFu
c2ZlckZtdC5nZXRQaXhlbFNpemUoKTsKKyAgICAgICAgICAgIHNyYyA9IG5ldyB0Y3VUZXh0dXJl
LkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdHJhbnNm
ZXJGbXQsCisgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAgICAgIGhl
aWdodDogaGVpZ2h0LAorICAgICAgICAgICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0ICsg
c2tpcH0pOworCisgICAgICAgICAgICBzdWIgPSB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdpb24o
ZHN0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7Cisg
ICAgICAgICAgICBpc0RzdEZsb2F0RGVwdGhGb3JtYXQgPSAoZHN0LmdldEZvcm1hdCgpLm9yZGVy
ID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZHN0LmdldEZvcm1hdCgpLm9yZGVyID09
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTKTsgLy8gZGVwdGggY29tcG9uZW50cyBhcmUgbGlt
aXRlZCB0byBbMCwxXSByYW5nZQorCisgICAgICAgICAgICBpZiAoaXNEc3RGbG9hdERlcHRoRm9y
bWF0KQorICAgICAgICAgICAgICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LmRlcHRoVmFsdWVGbG9h
dENsYW1wQ29weShzdWIsIHNyYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGN1VGV4dHVyZVV0aWwuY29weShzdWIsIHNyYyk7CisgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0
ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCB8fAorICAgICAgICAgICAgICAgICB0
YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIHx8CisgICAgICAgICAgICAg
ICAgIHRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgfHwKKyAgICAgICAg
ICAgICAgICAgdGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSB8fAorICAg
ICAgICAgICAgICAgICB0YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aIHx8
CisgICAgICAgICAgICAgICAgIHRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1opIHsKKyAgICAgICAgICAgIHZhciB0ZXh0dXJlQ3ViZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZUN1YmV9ICovICh1bml0LnRleEN1YmVCaW5kaW5nLnRleHR1cmUp
OworCisgICAgICAgICAgICB2YXIgZmFjZSA9IHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1hcEdMQ3Vi
ZUZhY2UodGFyZ2V0KTsKKworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJv
cighdGV4dHVyZUN1YmUuaGFzRmFjZShsZXZlbCwgZmFjZSksIGdsLklOVkFMSURfT1BFUkFUSU9O
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRzdCA9IHRleHR1cmVD
dWJlLmdldEZhY2UobGV2ZWwsIGZhY2UpOworCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25hbFNldEVycm9yKHhvZmZzZXQgKyB3aWR0aCA+IGRzdC5nZXRXaWR0aCgpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCArIGhlaWdodCA+IGRzdC5n
ZXRIZWlnaHQoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpv
ZmZzZXQgKyBkZXB0aCA+IGRzdC5nZXREZXB0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgdmFyIHJvd0xlbiA9IHRoaXMubV9waXhlbFVucGFja1Jvd0xlbmd0
aCA+IDAgPyB0aGlzLm1fcGl4ZWxVbnBhY2tSb3dMZW5ndGggOiB3aWR0aDsKKyAgICAgICAgICAg
IHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFsaWduMzIocm93TGVuICogdHJhbnNmZXJGbXQuZ2V0
UGl4ZWxTaXplKCksIHRoaXMubV9waXhlbFVucGFja0FsaWdubWVudCk7CisgICAgICAgICAgICB2
YXIgc2tpcCA9IHRoaXMubV9waXhlbFVucGFja1NraXBSb3dzICogcm93UGl0Y2ggKyB0aGlzLm1f
cGl4ZWxVbnBhY2tTa2lwUGl4ZWxzICogdHJhbnNmZXJGbXQuZ2V0UGl4ZWxTaXplKCk7CisgICAg
ICAgICAgICBzcmMgPSBuZXcgdGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzKHsKKyAg
ICAgICAgICAgICAgICBmb3JtYXQ6IHRyYW5zZmVyRm10LAorICAgICAgICAgICAgICAgIHdpZHRo
OiB3aWR0aCwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgc2xpY2VQaXRhY2g6IHNsaWNl
UGl0Y2gsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKKyAgICAgICAgICAgICAgICBvZmZz
ZXQ6IG9mZnNldCArIHNraXB9KTsKKworICAgICAgICAgICAgc3ViID0gdGN1VGV4dHVyZVV0aWwu
Z2V0U3VicmVnaW9uKGRzdCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgpOworICAgICAgICAgICAgaXNEc3RGbG9hdERlcHRoRm9ybWF0ID0gKGRzdC5nZXRG
b3JtYXQoKS5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EIHx8IGRzdC5nZXRGb3Jt
YXQoKS5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUyk7IC8vIGRlcHRoIGNvbXBv
bmVudHMgYXJlIGxpbWl0ZWQgdG8gWzAsMV0gcmFuZ2UKKworICAgICAgICAgICAgaWYgKGlzRHN0
RmxvYXREZXB0aEZvcm1hdCkKKyAgICAgICAgICAgICAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dC5k
ZXB0aFZhbHVlRmxvYXRDbGFtcENvcHkoc3ViLCBzcmMpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmNvcHkoc3ViLCBzcmMpOworICAgICAgICB9IGVs
c2UgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJFXzJEX0FSUkFZKSB7CisgICAgICAgICAgICAvLyBW
YWxpZGF0ZSBzaXplIGFuZCBsZXZlbC4KKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3Iod2lkdGggPiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTJEU2l6
ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGggPiB0aGlzLm1fbGltaXRzLm1heFRl
eHR1cmUyREFycmF5TGF5ZXJzLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGxldmVsID4g
TWF0aC5mbG9vcihNYXRoLmxvZzIodGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlMkRTaXplKSksIGds
LklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkRBcnJheX0gKi8KKyAgICAg
ICAgICAgIHZhciB0ZXh0dXJlMkRBcnJheSA9IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRl
eHQuVGV4dHVyZTJEQXJyYXl9ICovICh1bml0LnRleDJEQXJyYXlCaW5kaW5nLnRleHR1cmUpOwor
CisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKCF0ZXh0dXJlMkRBcnJh
eS5oYXNMZXZlbChsZXZlbCksIGdsLklOVkFMSURfT1BFUkFUSU9OKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGRzdCA9IHRleHR1cmUyREFycmF5LmdldExldmVsKGxl
dmVsKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoeG9mZnNldCAr
IHdpZHRoID4gZHN0LmdldFdpZHRoKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5b2Zmc2V0ICsgaGVpZ2h0ID4gZHN0LmdldEhlaWdodCgpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9mZnNldCArIGRlcHRoID4gZHN0Lmdl
dERlcHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuSU5W
QUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIg
cm93TGVuID0gdGhpcy5tX3BpeGVsVW5wYWNrUm93TGVuZ3RoID4gMCA/IHRoaXMubV9waXhlbFVu
cGFja1Jvd0xlbmd0aCA6IHdpZHRoOworICAgICAgICAgICAgdmFyIGltYWdlSGVpZ2h0ID0gdGhp
cy5tX3BpeGVsVW5wYWNrSW1hZ2VIZWlnaHQgPiAwID8gdGhpcy5tX3BpeGVsVW5wYWNrSW1hZ2VI
ZWlnaHQgOiBoZWlnaHQ7CisgICAgICAgICAgICB2YXIgcm93UGl0Y2ggPSBkZU1hdGguZGVBbGln
bjMyKHJvd0xlbiAqIHRyYW5zZmVyRm10LmdldFBpeGVsU2l6ZSgpLCB0aGlzLm1fcGl4ZWxVbnBh
Y2tBbGlnbm1lbnQpOworICAgICAgICAgICAgdmFyIHNsaWNlUGl0Y2ggPSBpbWFnZUhlaWdodCAq
IHJvd1BpdGNoOworICAgICAgICAgICAgdmFyIHNraXAgPSB0aGlzLm1fcGl4ZWxVbnBhY2tTa2lw
SW1hZ2VzICogc2xpY2VQaXRjaCArIHRoaXMubV9waXhlbFVucGFja1NraXBSb3dzICogcm93UGl0
Y2ggKworICAgICAgICAgICAgICAgIHRoaXMubV9waXhlbFVucGFja1NraXBQaXhlbHMgKiB0cmFu
c2ZlckZtdC5nZXRQaXhlbFNpemUoKTsKKyAgICAgICAgICAgIHNyYyA9IG5ldyB0Y3VUZXh0dXJl
LkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdHJhbnNm
ZXJGbXQsCisgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLAorICAgICAgICAgICAgICAgIGhl
aWdodDogaGVpZ2h0LAorICAgICAgICAgICAgICAgIGRlcHRoOiBkZXB0aCwKKyAgICAgICAgICAg
ICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgc2xpY2VQaXRjaDogc2xp
Y2VQaXRjaCwKKyAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgICAgIG9m
ZnNldDogb2Zmc2V0ICsgc2tpcH0pOworCisgICAgICAgICAgICBzdWIgPSB0Y3VUZXh0dXJlVXRp
bC5nZXRTdWJyZWdpb24oZHN0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCk7CisgICAgICAgICAgICBpc0RzdEZsb2F0RGVwdGhGb3JtYXQgPSAoZHN0Lmdl
dEZvcm1hdCgpLm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZHN0LmdldEZv
cm1hdCgpLm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTKTsgLy8gZGVwdGggY29t
cG9uZW50cyBhcmUgbGltaXRlZCB0byBbMCwxXSByYW5nZQorCisgICAgICAgICAgICBpZiAoaXNE
c3RGbG9hdERlcHRoRm9ybWF0KQorICAgICAgICAgICAgICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0
LmRlcHRoVmFsdWVGbG9hdENsYW1wQ29weShzdWIsIHNyYyk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuY29weShzdWIsIHNyYyk7CisgICAgICAgIH0g
ZWxzZSBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfM0QpIHsKKyAgICAgICAgICAgIC8vIFZhbGlk
YXRlIHNpemUgYW5kIGxldmVsLgorICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRF
cnJvcih3aWR0aCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTNEU2l6ZSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0ID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlM0RTaXplIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVy
ZTNEU2l6ZSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihsZXZlbCA+IE1hdGguZmxvb3Io
TWF0aC5sb2cyKHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTNEU2l6ZSkpLCBnbC5JTlZBTElEX1ZB
TFVFKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciB0ZXh0dXJl
M0QgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUzRH0gKi8gKHVuaXQu
dGV4M0RCaW5kaW5nLnRleHR1cmUpOworCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKCF0ZXh0dXJlM0QuaGFzTGV2ZWwobGV2ZWwpLCBnbC5JTlZBTElEX09QRVJBVElP
TikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkc3QgPSB0ZXh0dXJl
M0QuZ2V0TGV2ZWwobGV2ZWwpOworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRF
cnJvcih4b2Zmc2V0ICsgd2lkdGggPiBkc3QuZ2V0V2lkdGgoKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQgKyBoZWlnaHQgPiBkc3QuZ2V0SGVpZ2h0
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b2Zmc2V0ICsg
ZGVwdGggPiBkc3QuZ2V0RGVwdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHZhciByb3dMZW4gPSB0aGlzLm1fcGl4ZWxVbnBhY2tSb3dMZW5ndGggPiAwID8g
dGhpcy5tX3BpeGVsVW5wYWNrUm93TGVuZ3RoIDogd2lkdGg7CisgICAgICAgICAgICB2YXIgaW1h
Z2VIZWlnaHQgPSB0aGlzLm1fcGl4ZWxVbnBhY2tJbWFnZUhlaWdodCA+IDAgPyB0aGlzLm1fcGl4
ZWxVbnBhY2tJbWFnZUhlaWdodCA6IGhlaWdodDsKKyAgICAgICAgICAgIHZhciByb3dQaXRjaCA9
IGRlTWF0aC5kZUFsaWduMzIocm93TGVuICogdHJhbnNmZXJGbXQuZ2V0UGl4ZWxTaXplKCksIHRo
aXMubV9waXhlbFVucGFja0FsaWdubWVudCk7CisgICAgICAgICAgICB2YXIgc2xpY2VQaXRjaCA9
IGltYWdlSGVpZ2h0ICogcm93UGl0Y2g7CisgICAgICAgICAgICB2YXIgc2tpcCA9IHRoaXMubV9w
aXhlbFVucGFja1NraXBJbWFnZXMgKiBzbGljZVBpdGNoICsgdGhpcy5tX3BpeGVsVW5wYWNrU2tp
cFJvd3MgKiByb3dQaXRjaCArCisgICAgICAgICAgICAgICAgdGhpcy5tX3BpeGVsVW5wYWNrU2tp
cFBpeGVscyAqIHRyYW5zZmVyRm10LmdldFBpeGVsU2l6ZSgpOworICAgICAgICAgICAgc3JjID0g
bmV3IHRjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICAgICAg
Zm9ybWF0OiB0cmFuc2ZlckZtdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsCisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCisgICAgICAgICAgICAgICAgZGVwdGg6IGRlcHRo
LAorICAgICAgICAgICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAgICAgICAgICAgICBz
bGljZVBpdGNoOiBzbGljZVBpdGNoLAorICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAg
ICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgKyBza2lwfSk7CisKKyAgICAgICAgICAgIHN1YiA9
IHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihkc3QsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKworICAgICAgICAgICAgaXNEc3RGbG9hdERlcHRo
Rm9ybWF0ID0gKGRzdC5nZXRGb3JtYXQoKS5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5EIHx8IGRzdC5nZXRGb3JtYXQoKS5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5E
Uyk7IC8vIGRlcHRoIGNvbXBvbmVudHMgYXJlIGxpbWl0ZWQgdG8gWzAsMV0gcmFuZ2UKKyAgICAg
ICAgICAgIGlmIChpc0RzdEZsb2F0RGVwdGhGb3JtYXQpCisgICAgICAgICAgICAgICAgc2dsclJl
ZmVyZW5jZUNvbnRleHQuZGVwdGhWYWx1ZUZsb2F0Q2xhbXBDb3B5KHN1Yiwgc3JjKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5jb3B5KHN1Yiwgc3Jj
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLnNldEVycm9yKGdsLklOVkFMSURf
RU5VTSk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAor
ICAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJu
YWxGb3JtYXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgKiBAcGFyYW0ge251bWJlcn0g
eQorICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgKiBAcGFyYW0ge251bWJlcn0gaGVp
Z2h0CisgICAgKiBAcGFyYW0ge251bWJlcn0gYm9yZGVyCisgICAgKi8KKyAgICBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS5jb3B5VGV4SW1hZ2UyRCA9IGZ1
bmN0aW9uKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlVW5pdH0gKi92YXIgdW5pdCA9IHRoaXMubV90ZXh0dXJlVW5pdHNbdGhpcy5tX2FjdGl2ZVRl
eHR1cmVdOworICAgICAgICAvKiogQHR5cGUge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vz
cy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgc3JjID0gdGhpcy5nZXRSZWFk
Q29sb3JidWZmZXIoKTsKKworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGJv
cmRlciAhPSAwLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8
fCBsZXZlbCA8IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKHNyYy5pc0VtcHR5KCksIGdsLklOVkFM
SURfT1BFUkFUSU9OKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBNYXAgc3Rv
cmFnZSBmb3JtYXQuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSAqLyB2YXIgc3RvcmFnZUZtdCA9IHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1hcEludGVybmFsRm9y
bWF0KGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJv
cighc3RvcmFnZUZtdCwgZ2wuSU5WQUxJRF9FTlVNKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIC8vIFZh
bGlkYXRlIHNpemUgYW5kIGxldmVsLgorICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxT
ZXRFcnJvcih3aWR0aCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTJEU2l6ZSB8fCBoZWlnaHQg
PiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUsIGdsLklOVkFMSURfVkFMVUUpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0
RXJyb3IobGV2ZWwgPiBNYXRoLmZsb29yKE1hdGgubG9nMih0aGlzLm1fbGltaXRzLm1heFRleHR1
cmUyRFNpemUpKSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRH0g
Ki8KKyAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5UZXh0dXJlMkR9ICovICh1bml0LnRleDJEQmluZGluZy50ZXh0dXJlKTsKKworICAgICAg
ICAgICAgaWYgKHRleHR1cmUuaXNJbW11dGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmICh0
aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIXRleHR1cmUuaGFzTGV2ZWwobGV2ZWwpLCBnbC5JTlZB
TElEX09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGRz
dCA9IHRleHR1cmUuZ2V0TGV2ZWwobGV2ZWwpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNv
bmRpdGlvbmFsU2V0RXJyb3Ioc3RvcmFnZUZtdCAhPSBkc3QuZ2V0Rm9ybWF0KCkgfHwgd2lkdGgg
IT0gZHN0LmdldFdpZHRoKCkgfHwgaGVpZ2h0ICE9IGRzdC5nZXRIZWlnaHQoKSwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHRleHR1cmUuYWxsb2NMZXZlbChsZXZlbCwgc3RvcmFn
ZUZtdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENv
cHkgZnJvbSBjdXJyZW50IGZyYW1lYnVmZmVyLgorICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VU
ZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgZHN0ID0gdGV4dHVyZS5nZXRMZXZlbChs
ZXZlbCk7CisgICAgICAgICAgICBmb3IgKHZhciB5byA9IDA7IHlvIDwgaGVpZ2h0OyB5bysrKSB7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgeG8gPSAwOyB4byA8IHdpZHRoOyB4bysrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghZGVNYXRoLmRlSW5Cb3VuZHMzMih4K3hvLCAwLCBzcmMu
cmF3KCkuZ2V0SGVpZ2h0KCkpIHx8ICFkZU1hdGguZGVJbkJvdW5kczMyKHkreW8sIDAsIHNyYy5y
YXcoKS5nZXREZXB0aCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBV
bmRlZmluZWQgcGl4ZWwuCisKKyAgICAgICAgICAgICAgICAgICAgZHN0LnNldFBpeGVsKHNyYy5y
ZXNvbHZlTXVsdGlzYW1wbGVQaXhlbCh4K3hvLCB5K3lvKSwgeG8sIHlvKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGdsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCB8fAorICAgICAgICAgICAgICAgICAgIHRhcmdldCA9
PSBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggfHwKKyAgICAgICAgICAgICAgICAgICB0
YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIHx8CisgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSB8fAorICAgICAg
ICAgICAgICAgICAgIHRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogfHwK
KyAgICAgICAgICAgICAgICAgICB0YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9aKSB7CisgICAgICAgICAgICAvLyBWYWxpZGF0ZSBzaXplIGFuZCBsZXZlbC4KKyAgICAgICAg
ICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Iod2lkdGggIT0gaGVpZ2h0IHx8IHdpZHRo
ID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlQ3ViZVNpemUsIGdsLklOVkFMSURfVkFMVUUpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IobGV2ZWwgPiBNYXRoLmZsb29yKE1hdGgubG9nMih0aGlzLm1fbGltaXRzLm1heFRl
eHR1cmVDdWJlU2l6ZSkpLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVy
ZUN1YmV9ICovCisgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZUN1YmV9ICovICh1bml0LnRleEN1YmVCaW5kaW5nLnRleHR1cmUp
OworICAgICAgICAgICAgdmFyIGZhY2UgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5tYXBHTEN1YmVG
YWNlKHRhcmdldCk7CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlLmlzSW1tdXRhYmxlKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKCF0ZXh0dXJlLmhh
c0ZhY2UobGV2ZWwsIGZhY2UpLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5Q
aXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGRzdCA9IHRleHR1cmUuZ2V0RmFjZShsZXZlbCwgZmFj
ZSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcihzdG9yYWdl
Rm10ICE9IGRzdC5nZXRGb3JtYXQoKSB8fCB3aWR0aCAhPSBkc3QuZ2V0V2lkdGgoKSB8fCBoZWln
aHQgIT0gZHN0LmdldEhlaWdodCgpLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dGV4dHVyZS5hbGxvY0xldmVsKGxldmVsLCBmYWNlLCBzdG9yYWdlRm10LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ29weSBmcm9tIGN1cnJlbnQgZnJh
bWVidWZmZXIuCisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9ICovIHZhciBkc3QgPSB0ZXh0dXJlLmdldEZhY2UobGV2ZWwsIGZhY2UpOworICAgICAg
ICAgICAgZm9yICh2YXIgeW8gPSAwOyB5byA8IGhlaWdodDsgeW8rKykgeworICAgICAgICAgICAg
ICAgIGZvciAodmFyIHhvID0gMDsgeG8gPCB3aWR0aDsgeG8rKykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoIWRlTWF0aC5kZUluQm91bmRzMzIoeCt4bywgMCwgc3JjLnJhdygpLmdldEhlaWdo
dCgpKSB8fCAhZGVNYXRoLmRlSW5Cb3VuZHMzMih5K3lvLCAwLCBzcmMucmF3KCkuZ2V0RGVwdGgo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gVW5kZWZpbmVkIHBpeGVs
LgorCisgICAgICAgICAgICAgICAgICAgIGRzdC5zZXRQaXhlbChzcmMucmVzb2x2ZU11bHRpc2Ft
cGxlUGl4ZWwoeCt4bywgeSt5byksIHhvLCB5byk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihnbC5J
TlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBAcGFyYW0g
e251bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAgICAqIEBwYXJh
bSB7bnVtYmVyfSB4b2Zmc2V0CisgICAgKiBAcGFyYW0ge251bWJlcn0geW9mZnNldAorICAgICog
QHBhcmFtIHtudW1iZXJ9IHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgKiBAcGFyYW0g
e251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAqLworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmNvcHlUZXhT
dWJJbWFnZTJEID0gZnVuY3Rpb24odGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwg
eSwgd2lkdGgsIGhlaWdodCkgeworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250
ZXh0LlRleHR1cmVVbml0fSAqL3ZhciB1bml0ID0gdGhpcy5tX3RleHR1cmVVbml0c1t0aGlzLm1f
YWN0aXZlVGV4dHVyZV07CisgICAgICAgIC8qKiBAdHlwZSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVm
ZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBzcmMgPSB0aGlz
LmdldFJlYWRDb2xvcmJ1ZmZlcigpOworCisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0
RXJyb3IoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKHdp
ZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IGxldmVsIDwgMCwgZ2wuSU5WQUxJRF9WQUxVRSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Io
c3JjLmlzRW1wdHkoKSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlMkR9ICovCisgICAgICAgICAg
ICB2YXIgdGV4dHVyZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJE
fSAqLyAodW5pdC50ZXgyREJpbmRpbmcudGV4dHVyZSk7CisKKyAgICAgICAgICAgIGlmICh0aGlz
LmNvbmRpdGlvbmFsU2V0RXJyb3IoIXRleHR1cmUuaGFzTGV2ZWwobGV2ZWwpLCBnbC5JTlZBTElE
X1ZBTFVFKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGRzdCA9IHRleHR1cmUuZ2V0
TGV2ZWwobGV2ZWwpOworCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9y
KHhvZmZzZXQgKyB3aWR0aCA+IGRzdC5nZXRXaWR0aCgpIHx8IHlvZmZzZXQgKyBoZWlnaHQgPiBk
c3QuZ2V0SGVpZ2h0KCksIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZm9yICh2YXIgeW8gPSAwOyB5byA8IGhlaWdodDsgeW8rKykgewor
ICAgICAgICAgICAgICAgIGZvciAodmFyIHhvID0gMDsgeG8gPCB3aWR0aDsgeG8rKykgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWRlTWF0aC5kZUluQm91bmRzMzIoeCt4bywgMCwgc3JjLnJh
dygpLmdldEhlaWdodCgpKSB8fCAhZGVNYXRoLmRlSW5Cb3VuZHMzMih5K3lvLCAwLCBzcmMucmF3
KCkuZ2V0RGVwdGgoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgICAgICAgICBkc3Quc2V0UGl4ZWwoc3JjLnJlc29sdmVNdWx0aXNhbXBsZVBpeGVs
KHgreG8sIHkreW8pLCB4byt4b2Zmc2V0LCB5byt5b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGdsLlRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWCB8fAorICAgICAgICAgICAgICAgICAgIHRhcmdldCA9PSBnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggfHwKKyAgICAgICAgICAgICAgICAgICB0YXJnZXQg
PT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIHx8CisgICAgICAgICAgICAgICAgICAg
dGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSB8fAorICAgICAgICAgICAg
ICAgICAgIHRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogfHwKKyAgICAg
ICAgICAgICAgICAgICB0YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDdWJl
fSAqLworICAgICAgICAgICAgdmFyIHRleHR1cmUgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VD
b250ZXh0LlRleHR1cmVDdWJlfSAqLyAodW5pdC50ZXhDdWJlQmluZGluZy50ZXh0dXJlKTsKKyAg
ICAgICAgICAgIHZhciBmYWNlID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFwR0xDdWJlRmFjZSh0
YXJnZXQpOworCisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKCF0ZXh0
dXJlLmhhc0ZhY2UobGV2ZWwsIGZhY2UpLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1
ZmZlckFjY2Vzc30gKi8gdmFyIGRzdCA9IHRleHR1cmUuZ2V0RmFjZShsZXZlbCwgZmFjZSk7CisK
KyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoeG9mZnNldCArIHdpZHRo
ID4gZHN0LmdldFdpZHRoKCkgfHwgeW9mZnNldCArIGhlaWdodCA+IGRzdC5nZXRIZWlnaHQoKSwg
Z2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBmb3IgKHZhciB5byA9IDA7IHlvIDwgaGVpZ2h0OyB5bysrKSB7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgeG8gPSAwOyB4byA8IHdpZHRoOyB4bysrKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghZGVNYXRoLmRlSW5Cb3VuZHMzMih4K3hvLCAwLCBzcmMucmF3KCkuZ2V0SGVpZ2h0KCkp
IHx8ICFkZU1hdGguZGVJbkJvdW5kczMyKHkreW8sIDAsIHNyYy5yYXcoKS5nZXREZXB0aCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAg
IGRzdC5zZXRQaXhlbChzcmMucmVzb2x2ZU11bHRpc2FtcGxlUGl4ZWwoeCt4bywgeSt5byksIHhv
K3hvZmZzZXQsIHlvK3lvZmZzZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoZ2wuSU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVy
ZW5jZUNvbnRleHQucHJvdG90eXBlLnRleFN0b3JhZ2UzRCA9IGZ1bmN0aW9uKHRhcmdldCwgbGV2
ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlVW5pdH0gKi92YXIgdW5pdCA9IHRo
aXMubV90ZXh0dXJlVW5pdHNbdGhpcy5tX2FjdGl2ZVRleHR1cmVdOworCisgICAgICAgIGlmICh0
aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Iod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCwgZ2wuSU5W
QUxJRF9WQUxVRSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLmNvbmRp
dGlvbmFsU2V0RXJyb3IobGV2ZWxzIDwgMSB8fCBsZXZlbHMgPiBNYXRoLmZsb29yKE1hdGgubG9n
MihNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSkpICsgMSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gTWFwIHN0b3JhZ2UgZm9ybWF0LgorICAgICAg
ICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIHN0b3JhZ2VGbXQg
PSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5tYXBJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCk7
CisgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IoIXN0b3JhZ2VGbXQsIGdsLklO
VkFMSURfRU5VTSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRhcmdldCA9
PSBnbC5URVhUVVJFXzJEX0FSUkFZKSB7CisgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKHdpZHRoID4gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlMkRTaXplIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gdGhpcy5tX2xpbWl0
cy5tYXhUZXh0dXJlMkRTaXplIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVwdGggPj0gdGhpcy5tX2xpbWl0cy5tYXhUZXh0dXJlMkRBcnJheUxheWVycywgZ2wu
SU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyREFycmF5fSAqLworICAgICAg
ICAgICAgdmFyIHRleHR1cmVBcnJheSA9IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQu
VGV4dHVyZTJEQXJyYXl9ICovICh1bml0LnRleDJEQXJyYXlCaW5kaW5nLnRleHR1cmUpOworICAg
ICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0ZXh0dXJlQXJyYXkuaXNJbW11
dGFibGUoKSwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgdGV4dHVyZUFycmF5LmNsZWFyTGV2ZWxzKCk7CisgICAgICAgICAgICB0
ZXh0dXJlQXJyYXkuc2V0SW1tdXRhYmxlKCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGxldmVs
ID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgbGV2
ZWxXID0gTWF0aC5tYXgoMSwgd2lkdGggPj4gbGV2ZWwpOworICAgICAgICAgICAgICAgIHZhciBs
ZXZlbEggPSBNYXRoLm1heCgxLCBoZWlnaHQgPj4gbGV2ZWwpOworCisgICAgICAgICAgICAgICAg
dGV4dHVyZUFycmF5LmFsbG9jTGV2ZWwobGV2ZWwsIHN0b3JhZ2VGbXQsIGxldmVsVywgbGV2ZWxI
LCBkZXB0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IGds
LlRFWFRVUkVfM0QpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3Io
d2lkdGggPiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiB0aGlzLm1fbGltaXRzLm1heFRleHR1
cmUyRFNpemUgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0
aCA+PSB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUzRFNpemUsIGdsLklOVkFMSURfVkFMVUUpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXh0dXJlM0R9ICovCisgICAgICAgICAgICB2YXIgdGV4dHVyZTNEID0g
LyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlM0R9ICovICh1bml0LnRleDNE
QmluZGluZy50ZXh0dXJlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IodGV4dHVyZTNELmlzSW1tdXRhYmxlKCksIGdsLklOVkFMSURfT1BFUkFUSU9OKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRleHR1cmUzRC5jbGVhckxldmVscygp
OworICAgICAgICAgICAgdGV4dHVyZTNELnNldEltbXV0YWJsZSgpOworCisgICAgICAgICAgICBm
b3IgKHZhciBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGxldmVsVyA9IE1hdGgubWF4KDEsIHdpZHRoID4+IGxldmVsKTsKKyAgICAgICAg
ICAgICAgICB2YXIgbGV2ZWxIID0gTWF0aC5tYXgoMSwgaGVpZ2h0ID4+IGxldmVsKTsKKyAgICAg
ICAgICAgICAgICB2YXIgbGV2ZWxEID0gTWF0aC5tYXgoMSwgZGVwdGggPj4gbGV2ZWwpOworCisg
ICAgICAgICAgICAgICAgdGV4dHVyZTNELmFsbG9jTGV2ZWwobGV2ZWwsIHN0b3JhZ2VGbXQsIGxl
dmVsVywgbGV2ZWxILCBsZXZlbEQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuc2V0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICB9OworCisgICAg
c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dC5wcm90b3R5cGUudGV4U3RvcmFn
ZTJEID0gZnVuY3Rpb24odGFyZ2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZVVu
aXR9ICovdmFyIHVuaXQgPSB0aGlzLm1fdGV4dHVyZVVuaXRzW3RoaXMubV9hY3RpdmVUZXh0dXJl
XTsKKworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKHdpZHRoIDw9IDAgfHwg
aGVpZ2h0IDw9IDAsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKGxldmVscyA8IDEgfHwgbGV2ZWxzID4g
TWF0aC5mbG9vcihNYXRoLmxvZzIoTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpKSArIDEsIGdsLklO
VkFMSURfVkFMVUUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIE1hcCBzdG9y
YWdlIGZvcm1hdC4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9
ICovIHZhciBzdG9yYWdlRm10ID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFwSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9y
KCFzdG9yYWdlRm10LCBnbC5JTlZBTElEX0VOVU0pKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmICh0YXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgaWYgKHRo
aXMuY29uZGl0aW9uYWxTZXRFcnJvcih3aWR0aCA+IHRoaXMubV9saW1pdHMubWF4VGV4dHVyZTJE
U2l6ZSB8fCBoZWlnaHQgPiB0aGlzLm1fbGltaXRzLm1heFRleHR1cmUyRFNpemUsIGdsLklOVkFM
SURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZTJEfSAqLworICAgICAgICAgICAg
dmFyIHRleHR1cmUgPSAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmUyRH0g
Ki8gKHVuaXQudGV4MkRCaW5kaW5nLnRleHR1cmUpOworICAgICAgICAgICAgaWYgKHRoaXMuY29u
ZGl0aW9uYWxTZXRFcnJvcih0ZXh0dXJlLmlzSW1tdXRhYmxlKCksIGdsLklOVkFMSURfT1BFUkFU
SU9OKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRleHR1cmUuY2xl
YXJMZXZlbHMoKTsKKyAgICAgICAgICAgIHRleHR1cmUuc2V0SW1tdXRhYmxlKCk7CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgoMSwgd2lkdGggPj4gbGV2ZWwpOwor
ICAgICAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCBoZWlnaHQgPj4gbGV2ZWwp
OworCisgICAgICAgICAgICAgICAgdGV4dHVyZS5hbGxvY0xldmVsKGxldmVsLCBzdG9yYWdlRm10
LCBsZXZlbFcsIGxldmVsSCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGFy
Z2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbmRp
dGlvbmFsU2V0RXJyb3Iod2lkdGggIT0gaGVpZ2h0IHx8IHdpZHRoID4gdGhpcy5tX2xpbWl0cy5t
YXhUZXh0dXJlQ3ViZVNpemUsIGdsLklOVkFMSURfVkFMVUUpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHZhciB0ZXh0dXJlQ3ViZSA9IC8qKiBAdHlwZSB7c2dsclJlZmVy
ZW5jZUNvbnRleHQuVGV4dHVyZUN1YmV9ICovICh1bml0LnRleEN1YmVCaW5kaW5nLnRleHR1cmUp
OworICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxTZXRFcnJvcih0ZXh0dXJlQ3ViZS5p
c0ltbXV0YWJsZSgpLCBnbC5JTlZBTElEX09QRVJBVElPTikpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB0ZXh0dXJlQ3ViZS5jbGVhckxldmVscygpOworICAgICAgICAg
ICAgdGV4dHVyZUN1YmUuc2V0SW1tdXRhYmxlKCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGxl
dmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICB2YXIg
bGV2ZWxXID0gTWF0aC5tYXgoMSwgd2lkdGggPj4gbGV2ZWwpOworICAgICAgICAgICAgICAgIHZh
ciBsZXZlbEggPSBNYXRoLm1heCgxLCBoZWlnaHQgPj4gbGV2ZWwpOworCisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKQorICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlQ3ViZS5hbGxvY0xldmVsKGxldmVsLCB0Y3VUZXh0dXJlLkN1YmVGYWNlW2Zh
Y2VdLCBzdG9yYWdlRm10LCBsZXZlbFcsIGxldmVsSCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcmV0
dXJuIHs/dGN1VGV4dHVyZS5XcmFwTW9kZX0KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5tYXBHTFdyYXBNb2RlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgc3dpdGNoICh2
YWx1ZSkgeworICAgICAgICAgICAgY2FzZSBnbC5DTEFNUF9UT19FREdFOiByZXR1cm4gdGN1VGV4
dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFOworICAgICAgICAgICAgY2FzZSBnbC5SRVBFQVQ6
IHJldHVybiB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTDsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuTUlSUk9SRURfUkVQRUFUOiByZXR1cm4gdGN1VGV4dHVyZS5XcmFwTW9kZS5NSVJST1JFRF9S
RVBFQVRfR0w7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfTsKKworICAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHs/dGN1
VGV4dHVyZS5GaWx0ZXJNb2RlfQorICAgICAqLworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1h
cEdMRmlsdGVyTW9kZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHN3aXRjaCAodmFsdWUp
IHsKKyAgICAgICAgICAgIGNhc2UgZ2wuTkVBUkVTVDogcmV0dXJuIHRjdVRleHR1cmUuRmlsdGVy
TW9kZS5ORUFSRVNUOworICAgICAgICAgICAgY2FzZSBnbC5MSU5FQVI6IHJldHVybiB0Y3VUZXh0
dXJlLkZpbHRlck1vZGUuTElORUFSOworICAgICAgICAgICAgY2FzZSBnbC5ORUFSRVNUX01JUE1B
UF9ORUFSRVNUOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX05F
QVJFU1Q7CisgICAgICAgICAgICBjYXNlIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUjogcmV0dXJu
IHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUX01JUE1BUF9MSU5FQVI7CisgICAgICAgICAg
ICBjYXNlIGdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVDogcmV0dXJuIHRjdVRleHR1cmUuRmlsdGVy
TW9kZS5MSU5FQVJfTUlQTUFQX05FQVJFU1Q7CisgICAgICAgICAgICBjYXNlIGdsLkxJTkVBUl9N
SVBNQVBfTElORUFSOiByZXR1cm4gdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUl9NSVBNQVBf
TElORUFSOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBw
bmFtZQorICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlCisgICAgKi8KKyAgICBzZ2xyUmVmZXJl
bmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0LnByb3RvdHlwZS50ZXhQYXJhbWV0ZXJpID0gZnVu
Y3Rpb24odGFyZ2V0LCBwbmFtZSwgdmFsdWUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5UZXh0dXJlVW5pdH0gKi8gdmFyIHVuaXQgPSB0aGlzLm1fdGV4dHVyZVVu
aXRzW3RoaXMubV9hY3RpdmVUZXh0dXJlXTsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJl
bmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfSAqLyB2YXIgY29udGFpbmVyID0gbnVsbDsKKwor
ICAgICAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJE
OiBjb250YWluZXIgPSB1bml0LnRleDJEQmluZGluZzsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsLlRFWFRVUkVfQ1VCRV9NQVA6IGNvbnRhaW5lciA9IHVuaXQudGV4Q3ViZUJpbmRpbmc7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEX0FSUkFZOiBjb250YWluZXIgPSB1
bml0LnRleDJEQXJyYXlCaW5kaW5nOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVS
RV8zRDogY29udGFpbmVyID0gdW5pdC50ZXgzREJpbmRpbmc7IGJyZWFrOworCisgICAgICAgICAg
ICBkZWZhdWx0OiB0aGlzLnNldEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmV9ICovCisgICAgICAgIHZhciB0
ZXh0dXJlID0gY29udGFpbmVyLnRleHR1cmU7CisKKyAgICAgICAgc3dpdGNoIChwbmFtZSkgewor
ICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFX1dSQVBfUzogeworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7P3RjdVRleHR1cmUuV3JhcE1vZGV9ICovIHZhciB3cmFwUyA9IHNnbHJSZWZlcmVu
Y2VDb250ZXh0Lm1hcEdMV3JhcE1vZGUodmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh0aGlz
LmNvbmRpdGlvbmFsU2V0RXJyb3IobnVsbCA9PSB3cmFwUywgZ2wuSU5WQUxJRF9WQUxVRSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLmdldFNh
bXBsZXIoKS53cmFwUyA9IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5XcmFwTW9kZX0gKi8gKHdyYXBT
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y2FzZSBnbC5URVhUVVJFX1dSQVBfVDogeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7P3Rj
dVRleHR1cmUuV3JhcE1vZGV9ICovIHZhciB3cmFwVCA9IHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1h
cEdMV3JhcE1vZGUodmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFs
U2V0RXJyb3IobnVsbCA9PSB3cmFwVCwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFw
VCA9IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5XcmFwTW9kZX0gKi8gKHdyYXBUKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBnbC5URVhU
VVJFX1dSQVBfUjogeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7P3RjdVRleHR1cmUuV3Jh
cE1vZGV9ICovIHZhciB3cmFwUiA9IHNnbHJSZWZlcmVuY2VDb250ZXh0Lm1hcEdMV3JhcE1vZGUo
dmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJyb3IobnVs
bCA9PSB3cmFwUiwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLmdldFNhbXBsZXIoKS53cmFwUiA9IC8qKiBAdHlw
ZSB7dGN1VGV4dHVyZS5XcmFwTW9kZX0gKi8gKHdyYXBSKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFX01JTl9GSUxU
RVI6IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUgez90Y3VUZXh0dXJlLkZpbHRlck1vZGV9
ICovIHZhciBtaW5Nb2RlID0gc2dsclJlZmVyZW5jZUNvbnRleHQubWFwR0xGaWx0ZXJNb2RlKHZh
bHVlKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFNldEVycm9yKG51bGwg
PT0gbWluTW9kZSwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLmdldFNhbXBsZXIoKS5taW5GaWx0ZXIgPSAvKiog
QHR5cGUge3RjdVRleHR1cmUuRmlsdGVyTW9kZX0gKi8gKG1pbk1vZGUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUjogeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7P3RjdVRleHR1cmUuRmls
dGVyTW9kZX0gKi8gdmFyIG1hZ01vZGUgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dC5tYXBHTEZpbHRl
ck1vZGUodmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsU2V0RXJy
b3IobnVsbCA9PSBtYWdNb2RlLCBnbC5JTlZBTElEX1ZBTFVFKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRleHR1cmUuZ2V0U2FtcGxlcigpLm1hZ0ZpbHRl
ciA9IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5GaWx0ZXJNb2RlfSAqLyAobWFnTW9kZSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgZ2wu
VEVYVFVSRV9NQVhfTEVWRUw6IHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25h
bFNldEVycm9yKHZhbHVlIDwgMCwgZ2wuSU5WQUxJRF9WQUxVRSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLnNldE1heExldmVsKHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB0aGlzLnNldEVycm9yKGdsLklOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfTsKKworICAgIHNnbHJSZWZl
cmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmludmFsaWRhdGVGcmFtZWJ1
ZmZlciA9IGZ1bmN0aW9uKHRhcmdldCwgYXR0YWNobWVudHMpIHt9OworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQucHJvdG90eXBlLmludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlciA9IGZ1bmN0aW9uKHRhcmdldCwgYXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQp
IHt9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJl
ZmVyZW5jZUNvbnRleHRUZXN0LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyUmVm
ZXJlbmNlQ29udGV4dFRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M4YWJmNTk2OWJmN2U1ODkxYWI3NjI5
MDcxNzQzNzEwMWM3NTIzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZl
cmVuY2Uvc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LmpzCkBAIC0wLDAgKzEsODM0IEBACisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVT
IFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLm9w
ZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0Jyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdVJHQkEnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJm
YWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hh
ZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWInKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0Jyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdCA9IGZyYW1ld29y
ay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdDsKKyAgICB2
YXIgc2dsclJlZmVyZW5jZUNvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5j
ZS5zZ2xyUmVmZXJlbmNlQ29udGV4dDsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciB0Y3VQaXhlbEZvcm1hdCA9IGZyYW1ld29yay5j
b21tb24udGN1UGl4ZWxGb3JtYXQ7CisgICAgdmFyIGdsdURyYXdVdGlsID0gZnJhbWV3b3JrLm9w
ZW5nbC5nbHVEcmF3VXRpbDsKKyAgICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24u
dGN1U3VyZmFjZTsKKyAgICB2YXIgdGN1TG9nSW1hZ2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUxv
Z0ltYWdlOworICAgIHZhciBzZ2xyU2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuc2lt
cGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFtOworICAgIHZhciByckdlbmVyaWNWZWN0b3Ig
PSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yOworICAgIHZhciBy
clZlcnRleEF0dHJpYiA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJp
YjsKKyAgICB2YXIgcnJTaGFkaW5nQ29udGV4dCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJl
ci5yclNoYWRpbmdDb250ZXh0OworICAgIHZhciByclZlcnRleFBhY2tldCA9IGZyYW1ld29yay5y
ZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldDsKKyAgICB2YXIgcnJGcmFnbWVudE9wZXJh
dGlvbnMgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnM7
CisgICAgdmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkE7CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRl
c3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzY3JpcHRpb24KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuQ2xlYXJD
b250ZXh0ID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgdGN1VGVzdENh
c2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgfTsKKworICAg
IHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5DbGVhckNvbnRleHQucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIHNnbHJSZWZlcmVu
Y2VDb250ZXh0VGVzdC5DbGVhckNvbnRleHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc2dsclJl
ZmVyZW5jZUNvbnRleHRUZXN0LkNsZWFyQ29udGV4dDsKKworICAgIHNnbHJSZWZlcmVuY2VDb250
ZXh0VGVzdC5DbGVhckNvbnRleHQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHt9OworCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkNsZWFyQ29udGV4dC5wcm90b3R5cGUuaXRlcmF0
ZSA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgIHZhciB3aWR0aCA9IDIwMDsKKyAgICAgICAgdmFy
IGhlaWdodCA9IDE4ODsKKyAgICAgICAgdmFyIHNhbXBsZXMgPSAxOworICAgICAgICB2YXIgbGlt
aXRzID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHRMaW1pdHMoZ2wp
OworICAgICAgICB2YXIgZm9ybWF0ID0gbmV3IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0KDgs
IDgsIDgsIDgpOworICAgICAgICB2YXIgYnVmZmVycyA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0QnVmZmVycyhmb3JtYXQsIDI0LCA4LCB3aWR0aCwgaGVpZ2h0LCBz
YW1wbGVzKTsKKyAgICAgICAgdmFyIGN0eCA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZl
cmVuY2VDb250ZXh0KGxpbWl0cywgYnVmZmVycy5nZXRDb2xvcmJ1ZmZlcigpLCBidWZmZXJzLmdl
dERlcHRoYnVmZmVyKCksIGJ1ZmZlcnMuZ2V0U3RlbmNpbGJ1ZmZlcigpKTsKKyAgICAgICAgY3R4
LmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgICAgIGN0eC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7Cisg
ICAgICAgIHZhciBwaXhlbHMgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBjdHgucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBwaXhlbHMuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpKTsKKworICAg
ICAgICB2YXIgbnVtRmFpbGVkUGl4ZWxzID0gMDsKKyAgICAgICAgdmFyIHJlZFBpeGVsID0gbmV3
IGdsdURyYXdVdGlsLlBpeGVsKFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhl
aWdodDsgeSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHBpeGVsID0gbmV3IGdsdURyYXdVdGls
LlBpeGVsKHBpeGVscy5nZXRQaXhlbCh4LCB5KSk7CisgICAgICAgICAgICAgICAgaWYgKCFwaXhl
bC5lcXVhbHMocmVkUGl4ZWwpKQorICAgICAgICAgICAgICAgICAgICBudW1GYWlsZWRQaXhlbHMg
Kz0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB2YXIgYWNjZXNzID0gcGl4ZWxzLmdldEFj
Y2VzcygpOworCisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZXN1bHQnLCAnJywgYWNj
ZXNzKTsKKworICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID4gMCkKKyAgICAgICAgICAgIHRl
c3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJpc29uIGZhaWxlZCwgZ290ICcgKyBudW1GYWls
ZWRQaXhlbHMgKyAnIG5vbi1lcXVhbCBwaXhlbHMuJywgZmFsc2UpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnSW1hZ2UgY29tcGFyaXNvbiBzdWNjZWVkJywg
dHJ1ZSk7CisKKyAgICAgICAgY3R4LnNjaXNzb3Iod2lkdGggLyA0LCBoZWlnaHQgLyA0LCB3aWR0
aCAvIDIsIGhlaWdodCAvIDIpOworICAgICAgICBjdHguZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7
CisgICAgICAgIGN0eC5jbGVhckNvbG9yKDAsIDEsIDEsIDEpOworICAgICAgICBjdHguY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JV
RkZFUl9CSVQpOworICAgICAgICBjdHgucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbHMuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigp
KTsKKworICAgICAgICBudW1GYWlsZWRQaXhlbHMgPSAwOworICAgICAgICB2YXIgZ3JlZW5CbHVl
UGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwoWzAsIDI1NSwgMjU1LCAyNTVdKTsKKyAgICAg
ICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgZm9yICh2YXIg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IG5l
dyBnbHVEcmF3VXRpbC5QaXhlbChwaXhlbHMuZ2V0UGl4ZWwoeCwgeSkpOworICAgICAgICAgICAg
ICAgIGlmICgoeCA+PSB3aWR0aCAvIDQgJiYgeCA8IHdpZHRoIC0gd2lkdGggLyA0KSAmJiAoeSA+
PSBoZWlnaHQgLyA0ICYmIHkgPCBoZWlnaHQgLSBoZWlnaHQgLyA0KSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBpeGVsLmVxdWFscyhncmVlbkJsdWVQaXhlbCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBudW1GYWlsZWRQaXhlbHMgKz0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFwaXhlbC5lcXVhbHMocmVkUGl4ZWwpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtRmFpbGVkUGl4ZWxzICs9IDE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgYWNjZXNzID0gcGl4ZWxzLmdldEFjY2VzcygpOworCisgICAgICAgIHRjdUxvZ0lt
YWdlLmxvZ0ltYWdlKCdSZXN1bHQnLCAnJywgYWNjZXNzKTsKKworICAgICAgICBpZiAobnVtRmFp
bGVkUGl4ZWxzID4gMCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21w
YXJpc29uIGZhaWxlZCwgZ290ICcgKyBudW1GYWlsZWRQaXhlbHMgKyAnIG5vbi1lcXVhbCBwaXhl
bHMuJywgZmFsc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9u
cygnSW1hZ2UgY29tcGFyaXNvbiBzdWNjZWVkJywgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0
aW9uCisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkZyYW1lYnVmZmVyID0g
ZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRl
c3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgfTsKKworICAgIHNnbHJSZWZl
cmVuY2VDb250ZXh0VGVzdC5GcmFtZWJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRU
ZXN0LkZyYW1lYnVmZmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHNnbHJSZWZlcmVuY2VDb250
ZXh0VGVzdC5GcmFtZWJ1ZmZlcjsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5GcmFt
ZWJ1ZmZlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkge307CisKKyAgICBzZ2xyUmVmZXJl
bmNlQ29udGV4dFRlc3QuRnJhbWVidWZmZXIucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIGxpbWl0cyA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVu
Y2VDb250ZXh0TGltaXRzKGdsKTsKKyAgICAgICAgdmFyIGZvcm1hdCA9IG5ldyB0Y3VQaXhlbEZv
cm1hdC5QaXhlbEZvcm1hdCg4LCA4LCA4LCA4KTsKKyAgICAgICAgdmFyIHdpZHRoID0gMjAwOwor
ICAgICAgICB2YXIgaGVpZ2h0ID0gMTg4OworICAgICAgICB2YXIgc2FtcGxlcyA9IDE7CisgICAg
ICAgIHZhciBidWZmZXJzID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRl
eHRCdWZmZXJzKGZvcm1hdCwgMjQsIDgsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAg
ICB2YXIgY3R4ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQobGlt
aXRzLCBidWZmZXJzLmdldENvbG9yYnVmZmVyKCksIGJ1ZmZlcnMuZ2V0RGVwdGhidWZmZXIoKSwg
YnVmZmVycy5nZXRTdGVuY2lsYnVmZmVyKCkpOworICAgICAgICBjdHguY2xlYXJDb2xvcigwLCAw
LCAxLCAxKTsKKyAgICAgICAgY3R4LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgdmFyIGZibyA9
IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICB2YXIgcmJvID0gY3R4LmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOworICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm8pOworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJi
byk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wu
UkdCQTgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIs
IHJibyk7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGcmFtZWJ1ZmZlciBzdGF0dXM6
ICcgKyAoY3R4LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpID09IGdsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSk7CisgICAgICAgIGN0eC5jbGVhckNvbG9yKDEsIDAsIDAsIDEp
OworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZF
Ul9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICB2YXIgcGl4ZWxzID0gbmV3
IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgY3R4LnJlYWRQaXhl
bHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgcGl4ZWxz
LmdldEFjY2VzcygpLmdldERhdGFQdHIoKSk7CisgICAgICAgIHZhciBudW1GYWlsZWRQaXhlbHMg
PSAwOworICAgICAgICB2YXIgcmVkUGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwoWzI1NSwg
MCwgMCwgMjU1XSk7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAg
ICAgICB2YXIgcGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwocGl4ZWxzLmdldFBpeGVsKHgs
IHkpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXBpeGVsLmVxdWFscyhyZWRQaXhlbCkpCisgICAg
ICAgICAgICAgICAgICAgIG51bUZhaWxlZFBpeGVscyArPSAxOworICAgICAgICAgICAgfQorICAg
ICAgICB2YXIgYWNjZXNzID0gcGl4ZWxzLmdldEFjY2VzcygpOworICAgICAgICB0Y3VMb2dJbWFn
ZS5sb2dJbWFnZSgnUmVzdWx0JywgJycsIGFjY2Vzcyk7CisKKyAgICAgICAgaWYgKG51bUZhaWxl
ZFBpeGVscyA+IDApCisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnSW1hZ2UgY29tcGFy
aXNvbiBmYWlsZWQsIGdvdCAnICsgbnVtRmFpbGVkUGl4ZWxzICsgJyBub24tZXF1YWwgcGl4ZWxz
LicsIGZhbHNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZE9wdGlvbnMo
J0ltYWdlIGNvbXBhcmlzb24gc3VjY2VlZCcsIHRydWUpOworCisgICAgICAgIGN0eC5zY2lzc29y
KHdpZHRoIC8gNCwgaGVpZ2h0IC8gNCwgd2lkdGggLyAyLCBoZWlnaHQgLyAyKTsKKyAgICAgICAg
Y3R4LmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgICAgICBjdHguY2xlYXJDb2xvcigwLCAx
LCAxLCAxKTsKKyAgICAgICAgY3R4LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgY3R4LnJlYWRQ
aXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgcGl4
ZWxzLmdldEFjY2VzcygpLmdldERhdGFQdHIoKSk7CisKKyAgICAgICAgbnVtRmFpbGVkUGl4ZWxz
ID0gMDsKKyAgICAgICAgdmFyIGdyZWVuQmx1ZVBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVs
KFswLCAyNTUsIDI1NSwgMjU1XSk7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7
IHgrKykKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwocGl4ZWxzLmdl
dFBpeGVsKHgsIHkpKTsKKyAgICAgICAgICAgICAgICBpZiAoKHggPj0gd2lkdGggLyA0ICYmIHgg
PCB3aWR0aCAtIHdpZHRoIC8gNCkgJiYgKHkgPj0gaGVpZ2h0IC8gNCAmJiB5IDwgaGVpZ2h0IC0g
aGVpZ2h0IC8gNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwaXhlbC5lcXVhbHMoZ3Jl
ZW5CbHVlUGl4ZWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgbnVtRmFpbGVkUGl4ZWxzICs9
IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlmICghcGl4
ZWwuZXF1YWxzKHJlZFBpeGVsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bUZhaWxlZFBp
eGVscyArPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgIGFjY2VzcyA9IHBpeGVscy5nZXRB
Y2Nlc3MoKTsKKworICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgnUmVzdWx0JywgJycsIGFj
Y2Vzcyk7CisKKyAgICAgICAgaWYgKG51bUZhaWxlZFBpeGVscyA+IDApCisgICAgICAgICAgICB0
ZXN0RmFpbGVkT3B0aW9ucygnSW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQsIGdvdCAnICsgbnVtRmFp
bGVkUGl4ZWxzICsgJyBub24tZXF1YWwgcGl4ZWxzLicsIGZhbHNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdFBhc3NlZE9wdGlvbnMoJ0ltYWdlIGNvbXBhcmlzb24gc3VjY2VlZCcs
IHRydWUpOworCisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51
bGwpOworICAgICAgICBjdHgucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbHMuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpKTsKKwor
ICAgICAgICB2YXIgYmx1ZVBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVsKFswLCAwLCAyNTUs
IDI1NV0pOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAg
ICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisgICAgICAgICAgICAgICAg
dmFyIHBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVsKHBpeGVscy5nZXRQaXhlbCh4LCB5KSk7
CisgICAgICAgICAgICAgICAgaWYgKCFwaXhlbC5lcXVhbHMoYmx1ZVBpeGVsKSkKKyAgICAgICAg
ICAgICAgICAgICAgbnVtRmFpbGVkUGl4ZWxzICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAg
IGFjY2VzcyA9IHBpeGVscy5nZXRBY2Nlc3MoKTsKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1h
Z2UoJ1Jlc3VsdCcsICcnLCBhY2Nlc3MpOworCisgICAgICAgIGlmIChudW1GYWlsZWRQaXhlbHMg
PiAwKQorICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIGNvbXBhcmlzb24gZmFp
bGVkLCBnb3QgJyArIG51bUZhaWxlZFBpeGVscyArICcgbm9uLWVxdWFsIHBpeGVscy4nLCBmYWxz
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdJbWFnZSBj
b21wYXJpc29uIHN1Y2NlZWQnLCB0cnVlKTsKKworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2Uu
SXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAg
Ki8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuU2hhZGVyID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBu
YW1lLCBkZXNjcmlwdGlvbik7CisgICAgfTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0VGVz
dC5TaGFkZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5TaGFkZXIucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LlNoYWRlcjsKKworICAgIHNn
bHJSZWZlcmVuY2VDb250ZXh0VGVzdC5TaGFkZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigp
IHt9OworCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LlNoYWRlci5wcm90b3R5cGUuaXRl
cmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbGltaXRzID0gbmV3IHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHRMaW1pdHMoZ2wpOworICAgICAgICB2YXIgZm9ybWF0
ID0gbmV3IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0KDgsIDgsIDgsIDgpOworICAgICAgICB2
YXIgd2lkdGggPSAyMDA7CisgICAgICAgIHZhciBoZWlnaHQgPSAxODg7CisgICAgICAgIHZhciBz
YW1wbGVzID0gMTsKKyAgICAgICAgdmFyIGJ1ZmZlcnMgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRl
eHQuUmVmZXJlbmNlQ29udGV4dEJ1ZmZlcnMoZm9ybWF0LCAyNCwgOCwgd2lkdGgsIGhlaWdodCwg
c2FtcGxlcyk7CisgICAgICAgIHZhciBjdHggPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dChsaW1pdHMsIGJ1ZmZlcnMuZ2V0Q29sb3JidWZmZXIoKSwgYnVmZmVycy5n
ZXREZXB0aGJ1ZmZlcigpLCBidWZmZXJzLmdldFN0ZW5jaWxidWZmZXIoKSk7CisgICAgICAgIGN0
eC5jbGVhckNvbG9yKDAsIDAsIDEsIDEpOworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOwor
CisgICAgICAgIHZhciB2ZXJ0aWNlcyA9IFsKKyAgICAgICAgICAgIC0wLjUsIDAuNSwKKyAgICAg
ICAgICAgIDAuNSwgMC41LAorICAgICAgICAgICAgLTAuNSwgLTAuNSwKKyAgICAgICAgICAgIDAu
NSwgMC41LAorICAgICAgICAgICAgMC41LCAtMC41LAorICAgICAgICAgICAgLTAuNSwgLTAuNQor
ICAgICAgICBdOworCisgICAgICAgIHZhciB2ZXJ0aWNlczMyID0gbmV3IEZsb2F0MzJBcnJheSh2
ZXJ0aWNlcyk7CisKKyAgICAgICAgdmFyIHNxdWFyZVZlcnRpY2VzQnVmZmVyID0gY3R4LmNyZWF0
ZUJ1ZmZlcigpOworICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHNxdWFy
ZVZlcnRpY2VzQnVmZmVyKTsKKyAgICAgICAgY3R4LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCB2ZXJ0aWNlczMyLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgdmFyIGNvbG9ycyA9IFsK
KyAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAxLCAwLCAwLCAxLAorICAgICAg
ICAgICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAx
LCAwLCAwLCAxLAorICAgICAgICAgICAgMSwgMCwgMCwgMQorICAgICAgICBdOworCisgICAgICAg
IHZhciBjb2xvcnMzMiA9IG5ldyBGbG9hdDMyQXJyYXkoY29sb3JzKTsKKworICAgICAgICB2YXIg
c3F1YXJlQ29sb3JzQnVmZmVyID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjdHguYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHNxdWFyZUNvbG9yc0J1ZmZlcik7CisgICAgICAgIGN0
eC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JzMzIsIGdsLlNUQVRJQ19EUkFXKTsK
KworICAgICAgICAvKiogQHR5cGUge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNs
YXJhdGlvbn0gKi8gdmFyIHByb2dEZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW1EZWNsYXJhdGlvbigpOworCisgICAgICAgIHByb2dEZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1
dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYVZlcnRleFBvc2l0aW9u
JywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgcHJv
Z0RlY2wucHVzaFZlcnRleEF0dHJpYnV0ZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4QXR0
cmlidXRlKCdhVmVydGV4Q29sb3InLCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxP
QVQpKTsKKworICAgICAgICBwcm9nRGVjbC5wdXNoVmVydGV4U291cmNlKG5ldyBzZ2xyU2hhZGVy
UHJvZ3JhbS5WZXJ0ZXhTb3VyY2UoJycpKTsKKworICAgICAgICBwcm9nRGVjbC5wdXNoRnJhZ21l
bnRPdXRwdXQobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZyYWdtZW50T3V0cHV0KHJyR2VuZXJpY1Zl
Y3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworCisgICAgICAgIHByb2dEZWNsLnB1c2hGcmFn
bWVudFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UoJycpKTsKKwor
ICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5Db250ZXh0U2hhZGVy
UHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkNv
bnRleHRTaGFkZXJQcm9ncmFtKHByb2dEZWNsKTsKKworICAgICAgICAvL0NyZWF0ZSBwcm9ncmFt
CisgICAgICAgIGN0eC5jcmVhdGVQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIC8vVXNlIHBy
b2dyYW0KKyAgICAgICAgY3R4LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgdmFyIHZl
cnRleFBvc2l0aW9uQXR0cmlidXRlID0gY3R4LmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdh
VmVydGV4UG9zaXRpb24nKTsKKyAgICAgICAgdmFyIHZlcnRleENvbG9yQXR0cmlidXRlID0gY3R4
LmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdhVmVydGV4Q29sb3InKTsKKyAgICAgICAgY3R4
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRleFBvc2l0aW9uQXR0cmlidXRlKTsKKyAgICAg
ICAgY3R4LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRleENvbG9yQXR0cmlidXRlKTsKKwor
ICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHNxdWFyZVZlcnRpY2VzQnVm
ZmVyKTsKKyAgICAgICAgY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4UG9zaXRpb25BdHRy
aWJ1dGUsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgY3R4LmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVhcmVDb2xvcnNCdWZmZXIpOworICAgICAgICBjdHgudmVy
dGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhDb2xvckF0dHJpYnV0ZSwgNCwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKKworICAgICAgICBjdHguZHJhd1F1YWRzKGdsLlRSSUFOR0xFUywgMCwgNik7CisK
KyAgICAgICAgdmFyIHBpeGVscyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIGN0eC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscy5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisg
ICAgICAgIHZhciBudW1GYWlsZWRQaXhlbHMgPSAwOworCisgICAgICAgIHZhciByZWRQaXhlbCA9
IG5ldyBnbHVEcmF3VXRpbC5QaXhlbChbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICAgICAgdmFyIGJs
dWVQaXhlbCA9IG5ldyBnbHVEcmF3VXRpbC5QaXhlbChbMCwgMCwgMjU1LCAyNTVdKTsKKworICAg
ICAgICB2YXIgcGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwocGl4ZWxzLmdldFBpeGVsKDAs
IDApKTsKKyAgICAgICAgaWYgKCFwaXhlbC5lcXVhbHMoYmx1ZVBpeGVsKSkKKyAgICAgICAgICAg
IG51bUZhaWxlZFBpeGVscyArPSAxOworCisgICAgICAgIHBpeGVsID0gbmV3IGdsdURyYXdVdGls
LlBpeGVsKHBpeGVscy5nZXRQaXhlbCgxMDAsIDk0KSk7CisgICAgICAgIGlmICghcGl4ZWwuZXF1
YWxzKHJlZFBpeGVsKSkKKyAgICAgICAgICAgIG51bUZhaWxlZFBpeGVscyArPSAxOworCisgICAg
ICAgIHZhciBhY2Nlc3MgPSBwaXhlbHMuZ2V0QWNjZXNzKCk7CisKKyAgICAgICAgdGN1TG9nSW1h
Z2UubG9nSW1hZ2UoJ1Jlc3VsdCcsICcnLCBhY2Nlc3MpOworCisgICAgICAgIGlmIChudW1GYWls
ZWRQaXhlbHMgPiAwKQorICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIGNvbXBh
cmlzb24gZmFpbGVkLCBnb3QgJyArIG51bUZhaWxlZFBpeGVscyArICcgbm9uLWVxdWFsIHBpeGVs
cy4nLCBmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25z
KCdJbWFnZSBjb21wYXJpc29uIHN1Y2NlZWQnLCB0cnVlKTsKKworICAgICAgICByZXR1cm4gdGN1
VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRp
b24KKyAgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuVHJpYW5nbGVTdHJpcCA9
IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBU
ZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworICAgIH07CisKKyAgICBzZ2xyUmVm
ZXJlbmNlQ29udGV4dFRlc3QuVHJpYW5nbGVTdHJpcC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgc2dsclJlZmVyZW5jZUNvbnRl
eHRUZXN0LlRyaWFuZ2xlU3RyaXAucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc2dsclJlZmVyZW5j
ZUNvbnRleHRUZXN0LlRyaWFuZ2xlU3RyaXA7CisKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRl
c3QuVHJpYW5nbGVTdHJpcC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkge307CisKKyAgICBz
Z2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuVHJpYW5nbGVTdHJpcC5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbGltaXRzID0gbmV3IHNnbHJSZWZlcmVuY2VDb250
ZXh0LlJlZmVyZW5jZUNvbnRleHRMaW1pdHMoZ2wpOworICAgICAgICB2YXIgZm9ybWF0ID0gbmV3
IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0KDgsIDgsIDgsIDgpOworICAgICAgICB2YXIgd2lk
dGggPSAyMDA7CisgICAgICAgIHZhciBoZWlnaHQgPSAxODg7CisgICAgICAgIHZhciBzYW1wbGVz
ID0gMTsKKyAgICAgICAgdmFyIGJ1ZmZlcnMgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVm
ZXJlbmNlQ29udGV4dEJ1ZmZlcnMoZm9ybWF0LCAyNCwgOCwgd2lkdGgsIGhlaWdodCwgc2FtcGxl
cyk7CisgICAgICAgIHZhciBjdHggPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNl
Q29udGV4dChsaW1pdHMsIGJ1ZmZlcnMuZ2V0Q29sb3JidWZmZXIoKSwgYnVmZmVycy5nZXREZXB0
aGJ1ZmZlcigpLCBidWZmZXJzLmdldFN0ZW5jaWxidWZmZXIoKSk7CisgICAgICAgIGN0eC5jbGVh
ckNvbG9yKDAsIDAsIDEsIDEpOworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAg
ICAgIHZhciB2ZXJ0aWNlcyA9IFsKKyAgICAgICAgICAgIC0wLjUsIDAuNSwKKyAgICAgICAgICAg
IDAuNSwgMC41LAorICAgICAgICAgICAgLTAuNSwgMCwKKyAgICAgICAgICAgIDAuNSwgMCwKKyAg
ICAgICAgICAgIC0wLjUsIC0wLjUsCisgICAgICAgICAgICAwLjUsIC0wLjUKKyAgICAgICAgXTsK
KworICAgICAgICB2YXIgdmVydGljZXMzMiA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpOwor
CisgICAgICAgIHZhciBzcXVhcmVWZXJ0aWNlc0J1ZmZlciA9IGN0eC5jcmVhdGVCdWZmZXIoKTsK
KyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVhcmVWZXJ0aWNlc0J1
ZmZlcik7CisgICAgICAgIGN0eC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVydGljZXMz
MiwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIHZhciBjb2xvcnMgPSBbCisgICAgICAgICAg
ICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgIDEsIDAs
IDAsIDEsCisgICAgICAgICAgICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgMSwgMCwgMCwgMSwK
KyAgICAgICAgICAgIDEsIDAsIDAsIDEKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgY29sb3Jz
MzIgPSBuZXcgRmxvYXQzMkFycmF5KGNvbG9ycyk7CisKKyAgICAgICAgdmFyIHNxdWFyZUNvbG9y
c0J1ZmZlciA9IGN0eC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCBzcXVhcmVDb2xvcnNCdWZmZXIpOworICAgICAgICBjdHguYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9yczMyLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259ICov
IHZhciBwcm9nRGVjbCA9IG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFy
YXRpb24oKTsKKworICAgICAgICBwcm9nRGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xy
U2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUoJ2FWZXJ0ZXhQb3NpdGlvbicsIHJyR2VuZXJp
Y1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworCisgICAgICAgIHByb2dEZWNsLnB1c2hW
ZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYVZl
cnRleENvbG9yJywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAg
ICAgICAgcHJvZ0RlY2wucHVzaFZlcnRleFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVy
dGV4U291cmNlKCcnKSk7CisKKyAgICAgICAgcHJvZ0RlY2wucHVzaEZyYWdtZW50T3V0cHV0KG5l
dyBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVudE91dHB1dChyckdlbmVyaWNWZWN0b3IuR2VuZXJp
Y1ZlY1R5cGUuRkxPQVQpKTsKKworICAgICAgICBwcm9nRGVjbC5wdXNoRnJhZ21lbnRTb3VyY2Uo
bmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZyYWdtZW50U291cmNlKCcnKSk7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuQ29udGV4dFNoYWRlclByb2dyYW19ICov
IHZhciBwcm9ncmFtID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5Db250ZXh0U2hhZGVy
UHJvZ3JhbShwcm9nRGVjbCk7CisKKyAgICAgICAgLy9DcmVhdGUgcHJvZ3JhbQorICAgICAgICBj
dHguY3JlYXRlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAvL1VzZSBwcm9ncmFtCisgICAg
ICAgIGN0eC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIHZhciB2ZXJ0ZXhQb3NpdGlv
bkF0dHJpYnV0ZSA9IGN0eC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYVZlcnRleFBvc2l0
aW9uJyk7CisgICAgICAgIHZhciB2ZXJ0ZXhDb2xvckF0dHJpYnV0ZSA9IGN0eC5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCAnYVZlcnRleENvbG9yJyk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhQb3NpdGlvbkF0dHJpYnV0ZSk7CisgICAgICAgIGN0eC5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhDb2xvckF0dHJpYnV0ZSk7CisKKyAgICAgICAgY3R4
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVhcmVWZXJ0aWNlc0J1ZmZlcik7CisgICAg
ICAgIGN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleFBvc2l0aW9uQXR0cmlidXRlLCAyLCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZ
X0JVRkZFUiwgc3F1YXJlQ29sb3JzQnVmZmVyKTsKKyAgICAgICAgY3R4LnZlcnRleEF0dHJpYlBv
aW50ZXIodmVydGV4Q29sb3JBdHRyaWJ1dGUsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisK
KyAgICAgICAgY3R4LmRyYXdRdWFkcyhnbC5UUklBTkdMRV9TVFJJUCwgMCwgNik7CisKKyAgICAg
ICAgdmFyIHBpeGVscyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIGN0eC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIHBpeGVscy5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisgICAgICAg
IHZhciBudW1GYWlsZWRQaXhlbHMgPSAwOworCisgICAgICAgIHZhciByZWRQaXhlbCA9IG5ldyBn
bHVEcmF3VXRpbC5QaXhlbChbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICAgICAgdmFyIGJsdWVQaXhl
bCA9IG5ldyBnbHVEcmF3VXRpbC5QaXhlbChbMCwgMCwgMjU1LCAyNTVdKTsKKworICAgICAgICB2
YXIgcGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwocGl4ZWxzLmdldFBpeGVsKDAsIDApKTsK
KyAgICAgICAgaWYgKCFwaXhlbC5lcXVhbHMoYmx1ZVBpeGVsKSkKKyAgICAgICAgICAgIG51bUZh
aWxlZFBpeGVscyArPSAxOworCisgICAgICAgIHBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVs
KHBpeGVscy5nZXRQaXhlbCgxMDAsIDk0KSk7CisgICAgICAgIGlmICghcGl4ZWwuZXF1YWxzKHJl
ZFBpeGVsKSkKKyAgICAgICAgICAgIG51bUZhaWxlZFBpeGVscyArPSAxOworCisgICAgICAgIHZh
ciBhY2Nlc3MgPSBwaXhlbHMuZ2V0QWNjZXNzKCk7CisKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9n
SW1hZ2UoJ1Jlc3VsdCcsICcnLCBhY2Nlc3MpOworCisgICAgICAgIGlmIChudW1GYWlsZWRQaXhl
bHMgPiAwKQorICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIGNvbXBhcmlzb24g
ZmFpbGVkLCBnb3QgJyArIG51bUZhaWxlZFBpeGVscyArICcgbm9uLWVxdWFsIHBpeGVscy4nLCBm
YWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdJbWFn
ZSBjb21wYXJpc29uIHN1Y2NlZWQnLCB0cnVlKTsKKworICAgICAgICByZXR1cm4gdGN1VGVzdENh
c2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAg
ICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuVHJpYW5nbGVGYW4gPSBmdW5jdGlv
bihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxs
KHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uKTsKKyAgICB9OworCisgICAgc2dsclJlZmVyZW5jZUNv
bnRleHRUZXN0LlRyaWFuZ2xlRmFuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENh
c2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuVHJp
YW5nbGVGYW4ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0
LlRyaWFuZ2xlRmFuOworCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LlRyaWFuZ2xlRmFu
LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7fTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250
ZXh0VGVzdC5UcmlhbmdsZUZhbi5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgbGltaXRzID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRl
eHRMaW1pdHMoZ2wpOworICAgICAgICB2YXIgZm9ybWF0ID0gbmV3IHRjdVBpeGVsRm9ybWF0LlBp
eGVsRm9ybWF0KDgsIDgsIDgsIDgpOworICAgICAgICB2YXIgd2lkdGggPSAyMDA7CisgICAgICAg
IHZhciBoZWlnaHQgPSAxODg7CisgICAgICAgIHZhciBzYW1wbGVzID0gMTsKKyAgICAgICAgdmFy
IGJ1ZmZlcnMgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dEJ1ZmZl
cnMoZm9ybWF0LCAyNCwgOCwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcyk7CisgICAgICAgIHZhciBj
dHggPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dChsaW1pdHMsIGJ1
ZmZlcnMuZ2V0Q29sb3JidWZmZXIoKSwgYnVmZmVycy5nZXREZXB0aGJ1ZmZlcigpLCBidWZmZXJz
LmdldFN0ZW5jaWxidWZmZXIoKSk7CisgICAgICAgIGN0eC5jbGVhckNvbG9yKDAsIDAsIDEsIDEp
OworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZF
Ul9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgICAgIHZhciB2ZXJ0aWNlcyA9
IFsKKyAgICAgICAgICAgIC0wLjUsIDAsCisgICAgICAgICAgICAtMC41LCAwLjUsCisgICAgICAg
ICAgICAwLjUsIDAuNSwKKyAgICAgICAgICAgIDAuNSwgMCwKKyAgICAgICAgICAgIDAuNSwgLTAu
NSwKKyAgICAgICAgICAgIC0wLjUsIC0wLjUKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgdmVy
dGljZXMzMiA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpOworCisgICAgICAgIHZhciBzcXVh
cmVWZXJ0aWNlc0J1ZmZlciA9IGN0eC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVhcmVWZXJ0aWNlc0J1ZmZlcik7CisgICAgICAgIGN0
eC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVydGljZXMzMiwgZ2wuU1RBVElDX0RSQVcp
OworCisgICAgICAgIHZhciBjb2xvcnMgPSBbCisgICAgICAgICAgICAxLCAwLCAwLCAxLAorICAg
ICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAg
ICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgIDEsIDAs
IDAsIDEKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgY29sb3JzMzIgPSBuZXcgRmxvYXQzMkFy
cmF5KGNvbG9ycyk7CisKKyAgICAgICAgdmFyIHNxdWFyZUNvbG9yc0J1ZmZlciA9IGN0eC5jcmVh
dGVCdWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVh
cmVDb2xvcnNCdWZmZXIpOworICAgICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IGNvbG9yczMyLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259ICovIHZhciBwcm9nRGVjbCA9IG5l
dyBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24oKTsKKworICAgICAg
ICBwcm9nRGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0
ZXhBdHRyaWJ1dGUoJ2FWZXJ0ZXhQb3NpdGlvbicsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVj
VHlwZS5GTE9BVCkpOworCisgICAgICAgIHByb2dEZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3
IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYVZlcnRleENvbG9yJywgcnJHZW5l
cmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgcHJvZ0RlY2wucHVz
aFZlcnRleFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4U291cmNlKCcnKSk7CisK
KyAgICAgICAgcHJvZ0RlY2wucHVzaEZyYWdtZW50T3V0cHV0KG5ldyBzZ2xyU2hhZGVyUHJvZ3Jh
bS5GcmFnbWVudE91dHB1dChyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsK
KworICAgICAgICBwcm9nRGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9n
cmFtLkZyYWdtZW50U291cmNlKCcnKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJl
bmNlQ29udGV4dFRlc3QuQ29udGV4dFNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3
IHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5Db250ZXh0U2hhZGVyUHJvZ3JhbShwcm9nRGVjbCk7
CisKKyAgICAgICAgLy9DcmVhdGUgcHJvZ3JhbQorICAgICAgICBjdHguY3JlYXRlUHJvZ3JhbShw
cm9ncmFtKTsKKworICAgICAgICAvL1VzZSBwcm9ncmFtCisgICAgICAgIGN0eC51c2VQcm9ncmFt
KHByb2dyYW0pOworCisgICAgICAgIHZhciB2ZXJ0ZXhQb3NpdGlvbkF0dHJpYnV0ZSA9IGN0eC5n
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYVZlcnRleFBvc2l0aW9uJyk7CisgICAgICAgIHZh
ciB2ZXJ0ZXhDb2xvckF0dHJpYnV0ZSA9IGN0eC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAn
YVZlcnRleENvbG9yJyk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0
ZXhQb3NpdGlvbkF0dHJpYnV0ZSk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSh2ZXJ0ZXhDb2xvckF0dHJpYnV0ZSk7CisKKyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCBzcXVhcmVWZXJ0aWNlc0J1ZmZlcik7CisgICAgICAgIGN0eC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKHZlcnRleFBvc2l0aW9uQXR0cmlidXRlLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAs
IDApOworCisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgc3F1YXJlQ29s
b3JzQnVmZmVyKTsKKyAgICAgICAgY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4Q29sb3JB
dHRyaWJ1dGUsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgY3R4LmRyYXdR
dWFkcyhnbC5UUklBTkdMRV9GQU4sIDAsIDYpOworCisgICAgICAgIHZhciBwaXhlbHMgPSBuZXcg
dGN1U3VyZmFjZS5TdXJmYWNlKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjdHgucmVhZFBpeGVs
cygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBwaXhlbHMu
Z2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpKTsKKworICAgICAgICB2YXIgbnVtRmFpbGVkUGl4ZWxz
ID0gMDsKKworICAgICAgICB2YXIgcmVkUGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwuUGl4ZWwoWzI1
NSwgMCwgMCwgMjU1XSk7CisgICAgICAgIHZhciBibHVlUGl4ZWwgPSBuZXcgZ2x1RHJhd1V0aWwu
UGl4ZWwoWzAsIDAsIDI1NSwgMjU1XSk7CisKKyAgICAgICAgdmFyIHBpeGVsID0gbmV3IGdsdURy
YXdVdGlsLlBpeGVsKHBpeGVscy5nZXRQaXhlbCgwLCAwKSk7CisgICAgICAgIGlmICghcGl4ZWwu
ZXF1YWxzKGJsdWVQaXhlbCkpCisgICAgICAgICAgICBudW1GYWlsZWRQaXhlbHMgKz0gMTsKKwor
ICAgICAgICBwaXhlbCA9IG5ldyBnbHVEcmF3VXRpbC5QaXhlbChwaXhlbHMuZ2V0UGl4ZWwoMTAw
LCA5NCkpOworICAgICAgICBpZiAoIXBpeGVsLmVxdWFscyhyZWRQaXhlbCkpCisgICAgICAgICAg
ICBudW1GYWlsZWRQaXhlbHMgKz0gMTsKKworICAgICAgICB2YXIgYWNjZXNzID0gcGl4ZWxzLmdl
dEFjY2VzcygpOworCisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZXN1bHQnLCAnJywg
YWNjZXNzKTsKKworICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID4gMCkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJpc29uIGZhaWxlZCwgZ290ICcgKyBudW1G
YWlsZWRQaXhlbHMgKyAnIG5vbi1lcXVhbCBwaXhlbHMuJywgZmFsc2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnSW1hZ2UgY29tcGFyaXNvbiBzdWNjZWVk
JywgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RP
UDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICovCisgICAgc2dsclJlZmVy
ZW5jZUNvbnRleHRUZXN0LkRyYXdFbGVtZW50cyA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9u
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3Jp
cHRpb24pOworICAgIH07CisKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuRHJhd0VsZW1l
bnRzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90
eXBlKTsKKyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuRHJhd0VsZW1lbnRzLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5EcmF3RWxlbWVudHM7CisK
KyAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuRHJhd0VsZW1lbnRzLnByb3RvdHlwZS5pbml0
ID0gZnVuY3Rpb24oKSB7fTsKKworICAgIHNnbHJSZWZlcmVuY2VDb250ZXh0VGVzdC5EcmF3RWxl
bWVudHMucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGxpbWl0
cyA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0TGltaXRzKGdsKTsK
KyAgICAgICAgdmFyIGZvcm1hdCA9IG5ldyB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdCg4LCA4
LCA4LCA4KTsKKyAgICAgICAgdmFyIHdpZHRoID0gMjAwOworICAgICAgICB2YXIgaGVpZ2h0ID0g
MTg4OworICAgICAgICB2YXIgc2FtcGxlcyA9IDE7CisgICAgICAgIHZhciBidWZmZXJzID0gbmV3
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHRCdWZmZXJzKGZvcm1hdCwgMjQs
IDgsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAgICB2YXIgY3R4ID0gbmV3IHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQobGltaXRzLCBidWZmZXJzLmdldENvbG9y
YnVmZmVyKCksIGJ1ZmZlcnMuZ2V0RGVwdGhidWZmZXIoKSwgYnVmZmVycy5nZXRTdGVuY2lsYnVm
ZmVyKCkpOworICAgICAgICBjdHguY2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKKyAgICAgICAgY3R4
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RF
TkNJTF9CVUZGRVJfQklUKTsKKworICAgICAgICB2YXIgdmVydGljZXMgPSBbCisgICAgICAgICAg
ICAtMC41LCAwLjUsCisgICAgICAgICAgICAwLCAwLjUsCisgICAgICAgICAgICAwLjQsIDAuNSwK
KworICAgICAgICAgICAgLTAuNSwgMC4xLAorICAgICAgICAgICAgMCwgMC4xLAorICAgICAgICAg
ICAgMC40LCAwLjEsCisKKyAgICAgICAgICAgIC0wLjUsIC0wLjcsCisgICAgICAgICAgICAwLCAt
MC43LAorICAgICAgICAgICAgMC40LCAtMC43CisgICAgICAgIF07CisKKyAgICAgICAgdmFyIHZl
cnRpY2VzMzIgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKTsKKworICAgICAgICB2YXIgc3F1
YXJlVmVydGljZXNCdWZmZXIgPSBjdHguY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGN0eC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgc3F1YXJlVmVydGljZXNCdWZmZXIpOworICAgICAgICBj
dHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzMzIsIGdsLlNUQVRJQ19EUkFX
KTsKKworICAgICAgICB2YXIgaW5kaWNlcyA9IFsKKyAgICAgICAgICAgIDAsIDEsIDMsIDEsIDMs
IDQsCisgICAgICAgICAgICAxLCAyLCA0LCAyLCA0LCA1LAorICAgICAgICAgICAgMywgNCwgNiwg
NCwgNiwgNywKKyAgICAgICAgICAgIDQsIDUsIDcsIDUsIDcsIDgKKyAgICAgICAgXTsKKyAgICAg
ICAgdmFyIGluZGljZXNCdWZmZXIgPSBjdHguY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGN0eC5i
aW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzQnVmZmVyKTsKKyAgICAg
ICAgY3R4LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJh
eShpbmRpY2VzKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIHZhciBjb2xvcnMgPSBbCisg
ICAgICAgICAgICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgMCwgMSwgMCwgMSwKKyAgICAgICAg
ICAgIDAsIDAsIDEsIDEsCisgICAgICAgICAgICAxLCAxLCAxLCAxLAorICAgICAgICAgICAgMSwg
MSwgMCwgMSwKKyAgICAgICAgICAgIDAsIDEsIDEsIDEsCisgICAgICAgICAgICAxLCAwLCAxLCAx
LAorICAgICAgICAgICAgMC41LCAwLjUsIDAuNSwgMSwKKyAgICAgICAgICAgIDAsIDAsIDAsIDAK
KyAgICAgICAgXTsKKworICAgICAgICB2YXIgY29sb3JzMzIgPSBuZXcgRmxvYXQzMkFycmF5KGNv
bG9ycyk7CisKKyAgICAgICAgdmFyIHNxdWFyZUNvbG9yc0J1ZmZlciA9IGN0eC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBzcXVhcmVDb2xv
cnNCdWZmZXIpOworICAgICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9y
czMyLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259ICovIHZhciBwcm9nRGVjbCA9IG5ldyBzZ2xy
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24oKTsKKworICAgICAgICBwcm9n
RGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRy
aWJ1dGUoJ2FWZXJ0ZXhQb3NpdGlvbicsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5G
TE9BVCkpOworCisgICAgICAgIHByb2dEZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJT
aGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYVZlcnRleENvbG9yJywgcnJHZW5lcmljVmVj
dG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgcHJvZ0RlY2wucHVzaFZlcnRl
eFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4U291cmNlKCcnKSk7CisKKyAgICAg
ICAgcHJvZ0RlY2wucHVzaEZyYWdtZW50T3V0cHV0KG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFn
bWVudE91dHB1dChyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsKKworICAg
ICAgICBwcm9nRGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZy
YWdtZW50U291cmNlKCcnKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29u
dGV4dFRlc3QuQ29udGV4dFNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IHNnbHJS
ZWZlcmVuY2VDb250ZXh0VGVzdC5Db250ZXh0U2hhZGVyUHJvZ3JhbShwcm9nRGVjbCk7CisKKyAg
ICAgICAgLy9DcmVhdGUgcHJvZ3JhbQorICAgICAgICBjdHguY3JlYXRlUHJvZ3JhbShwcm9ncmFt
KTsKKworICAgICAgICAvL1VzZSBwcm9ncmFtCisgICAgICAgIGN0eC51c2VQcm9ncmFtKHByb2dy
YW0pOworCisgICAgICAgIHZhciB2ZXJ0ZXhQb3NpdGlvbkF0dHJpYnV0ZSA9IGN0eC5nZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCAnYVZlcnRleFBvc2l0aW9uJyk7CisgICAgICAgIHZhciB2ZXJ0
ZXhDb2xvckF0dHJpYnV0ZSA9IGN0eC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYVZlcnRl
eENvbG9yJyk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhQb3Np
dGlvbkF0dHJpYnV0ZSk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0
ZXhDb2xvckF0dHJpYnV0ZSk7CisKKyAgICAgICAgY3R4LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBzcXVhcmVWZXJ0aWNlc0J1ZmZlcik7CisgICAgICAgIGN0eC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKHZlcnRleFBvc2l0aW9uQXR0cmlidXRlLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwor
CisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgc3F1YXJlQ29sb3JzQnVm
ZmVyKTsKKyAgICAgICAgY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4Q29sb3JBdHRyaWJ1
dGUsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgY3R4LmRyYXdFbGVtZW50
cyhnbC5UUklBTkdMRVMsIGluZGljZXMubGVuZ3RoLCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisK
KyAgICAgICAgdmFyIHBpeGVscyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIGN0eC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscy5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisg
ICAgICAgIHZhciBudW1GYWlsZWRQaXhlbHMgPSAwOworCisgICAgICAgIHZhciBhY2Nlc3MgPSBw
aXhlbHMuZ2V0QWNjZXNzKCk7CisKKyAgICAgICAgdmFyIHBpeGVsc1RvdGVzdCA9IFsKKyAgICAg
ICAgICAgIC8vIGxvY2F0aW9uLCBjb2xvcgorICAgICAgICAgICAgWzIsIDFdLCBbMCwgMCwgMjU1
LCAyNTVdLAorICAgICAgICAgICAgLy8gVGhlIHJlZCB2ZXJ0ZXggaXMgYmV0d2VlbiAxNDAgYW5k
IDE0MSBzbyBhY2NvdW50IGZvciBzb21lIGJsZW5kaW5nIHdpdGggdGhlIHdoaXRlIHZlcnRleAor
ICAgICAgICAgICAgWzUwLCAxNDBdLCBbMjU1LCA1LCA1LCAyNTVdLAorICAgICAgICAgICAgWzUw
LCAyOF0sIFsyNTUsIDAsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgIFsxMzksIDI4XSwgWzAsIDAs
IDAsIDI1NV0sCisgICAgICAgICAgICBbNTAsIDEwMl0sIFsyNTUsIDI1NSwgMjU1LCAyNTVdLAor
ICAgICAgICAgICAgWzEzOSwgMTAyXSwgWzAsIDI1NSwgMjU1LCAyNTVdCisgICAgICAgIF07CisK
KyAgICAgICAgdmFyIHRocmVzaG9sZCA9IG5ldyB0Y3VSR0JBLlJHQkEoWzUsIDUsIDUsIDVdKTsK
KworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBpeGVsc1RvdGVzdC5sZW5ndGg7IGkgKz0g
MikgeworICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gcGl4ZWxzVG90ZXN0W2ldOworICAgICAg
ICAgICAgdmFyIHJlZmVyZW5jZSA9IG5ldyB0Y3VSR0JBLlJHQkEocGl4ZWxzVG90ZXN0W2kgKyAx
XSk7CisgICAgICAgICAgICB2YXIgY29sb3IgPSBhY2Nlc3MuZ2V0UGl4ZWxJbnQobG9jYXRpb25b
MF0sIGxvY2F0aW9uWzFdKTsKKyAgICAgICAgICAgIHZhciBwaXhlbCA9IG5ldyB0Y3VSR0JBLlJH
QkEoY29sb3IpOworICAgICAgICAgICAgaWYgKCF0Y3VSR0JBLmNvbXBhcmVUaHJlc2hvbGQocGl4
ZWwsIHJlZmVyZW5jZSwgdGhyZXNob2xkKSkKKyAgICAgICAgICAgICAgICBudW1GYWlsZWRQaXhl
bHMrKzsKKyAgICAgICAgfQorCisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZXN1bHQn
LCAnJywgYWNjZXNzKTsKKworICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID4gMCkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJpc29uIGZhaWxlZCwgZ290ICcg
KyBudW1GYWlsZWRQaXhlbHMgKyAnIG5vbi1lcXVhbCBwaXhlbHMuJywgZmFsc2UpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnSW1hZ2UgY29tcGFyaXNvbiBz
dWNjZWVkJywgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19CisgICAgICogQHBhcmFt
IHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259IHByb2dEZWNsCisg
ICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkNvbnRleHRTaGFkZXJQcm9ncmFt
ID0gZnVuY3Rpb24ocHJvZ0RlY2wpIHsKKyAgICAgICAgc2dsclNoYWRlclByb2dyYW0uU2hhZGVy
UHJvZ3JhbS5jYWxsKHRoaXMsIHByb2dEZWNsKTsKKyAgICB9OworCisgICAgc2dsclJlZmVyZW5j
ZUNvbnRleHRUZXN0LkNvbnRleHRTaGFkZXJQcm9ncmFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUpOworICAgIHNnbHJS
ZWZlcmVuY2VDb250ZXh0VGVzdC5Db250ZXh0U2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuQ29udGV4dFNoYWRlclByb2dyYW07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJp
Yj59IGlucHV0cworICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFj
a2V0Pn0gcGFja2V0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICov
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkNvbnRleHRTaGFkZXJQcm9ncmFtLnByb3Rv
dHlwZS5zaGFkZVZlcnRpY2VzID0gZnVuY3Rpb24oaW5wdXRzLCBwYWNrZXRzLCBudW1QYWNrZXRz
KSB7CisgICAgICAgIGZvciAodmFyIHBhY2tldE5keCA9IDA7IHBhY2tldE5keCA8IG51bVBhY2tl
dHM7ICsrcGFja2V0TmR4KSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHZhcnlpbmdMb2NDb2xvciA9IDA7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7cnJWZXJ0ZXhQ
YWNrZXQuVmVydGV4UGFja2V0fSAqLyB2YXIgcGFja2V0ID0gcGFja2V0c1twYWNrZXROZHhdOwor
CisgICAgICAgICAgICAvLyBDYWxjIG91dHB1dCBjb2xvcgorICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmQgPSBbMS4wLCAxLjBdOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3IgPSBbMS4wLCAxLjAsIDEuMF07
CisKKyAgICAgICAgICAgIGZvciAodmFyIGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IHRoaXMu
Z2V0VmVydGV4U2hhZGVyKCkuZ2V0SW5wdXRzKCkubGVuZ3RoOyBhdHRyaWJOZHgrKykgeworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQ29tcG9uZW50cyA9IGlu
cHV0c1thdHRyaWJOZHhdLmNvbXBvbmVudENvdW50OworCisgICAgICAgICAgICAgICAgdmFyIGF0
dHJpYlZhbHVlID0gcnJWZXJ0ZXhBdHRyaWIucmVhZFZlcnRleEF0dHJpYihpbnB1dHNbYXR0cmli
TmR4XSwgcGFja2V0Lmluc3RhbmNlTmR4LCBwYWNrZXQudmVydGV4TmR4LCB0aGlzLmdldFZlcnRl
eFNoYWRlcigpLmdldElucHV0cygpW2F0dHJpYk5keF0udHlwZSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoYXR0cmliTmR4ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY29vcmRbMF0gPSBh
dHRyaWJWYWx1ZVswXTsKKyAgICAgICAgICAgICAgICAgICAgY29vcmRbMV0gPSBhdHRyaWJWYWx1
ZVsxXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb2xv
clswXSA9IGF0dHJpYlZhbHVlWzBdICogYXR0cmliVmFsdWVbM107CisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yWzFdID0gYXR0cmliVmFsdWVbMV0gKiBhdHRyaWJWYWx1ZVszXTsKKyAgICAgICAg
ICAgICAgICAgICAgY29sb3JbMl0gPSBhdHRyaWJWYWx1ZVsyXSAqIGF0dHJpYlZhbHVlWzNdOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHJhbnNm
b3JtIHBvc2l0aW9uCisgICAgICAgICAgICBwYWNrZXQucG9zaXRpb24gPSBbY29vcmRbMF0sIGNv
b3JkWzFdLCAxLjAsIDEuMF07CisKKyAgICAgICAgICAgIC8vIFBhc3MgY29sb3IgdG8gRlMKKyAg
ICAgICAgICAgIHBhY2tldC5vdXRwdXRzW3ZhcnlpbmdMb2NDb2xvcl0gPSBbY29sb3JbMF0sIGNv
bG9yWzFdLCBjb2xvclsyXSwgMS4wXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gcGFja2V0
cworICAgICAqIEBwYXJhbSB7cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRpbmdDb250ZXh0
fSBjb250ZXh0CisgICAgICovCisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkNvbnRleHRT
aGFkZXJQcm9ncmFtLnByb3RvdHlwZS5zaGFkZUZyYWdtZW50cyA9IGZ1bmN0aW9uKHBhY2tldHMs
IGNvbnRleHQpIHsKKyAgICAgICAgdmFyIHZhcnlpbmdMb2NDb2xvciA9IDA7CisKKyAgICAgICAg
Ly8gTm9ybWFsIHNoYWRpbmcKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsgcGFja2V0
TmR4IDwgcGFja2V0cy5sZW5ndGg7ICsrcGFja2V0TmR4KQorICAgICAgICAgICAgcGFja2V0c1tw
YWNrZXROZHhdLnZhbHVlID0gcnJTaGFkaW5nQ29udGV4dC5yZWFkVHJpYW5nbGVWYXJ5aW5nKHBh
Y2tldHNbcGFja2V0TmR4XSwgY29udGV4dCwgdmFyeWluZ0xvY0NvbG9yKTsKKyAgICB9OworCisg
ICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgICAgICAvKiogQHR5cGUge3RjdVRl
c3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgdGVzdEdyb3VwID0gc3RhdGUudGVzdENhc2VzOworCisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciByZWZlcmVuY2VD
b250ZXh0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdyZWZlcmVuY2VfY29udGV4dCcsICdU
ZXN0IHJlZmVyZW5jZSBjb250ZXh0Jyk7CisKKyAgICAgICAgcmVmZXJlbmNlQ29udGV4dEdyb3Vw
LmFkZENoaWxkKG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuQ2xlYXJDb250ZXh0KCdjbGVh
cl9jb250ZXh0JywgJ0NsZWFyIENvbnRleHQgVGVzdCcpKTsKKyAgICAgICAgcmVmZXJlbmNlQ29u
dGV4dEdyb3VwLmFkZENoaWxkKG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuRnJhbWVidWZm
ZXIoJ0ZyYW1lYnVmZmVyJywgJ0ZyYW1lYnVmZmVyIFRlc3QnKSk7CisgICAgICAgIHJlZmVyZW5j
ZUNvbnRleHRHcm91cC5hZGRDaGlsZChuZXcgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LlNoYWRl
cignU2hhZGVycycsICdEcmF3aW5nIHVzaW5nIFRSSUFOR0xFUycpKTsKKyAgICAgICAgcmVmZXJl
bmNlQ29udGV4dEdyb3VwLmFkZENoaWxkKG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuVHJp
YW5nbGVTdHJpcCgnVHJpYW5nbGVTdHJpcCcsICdEcmF3aW5nIHVzaW5nIFRSSUFOR0xFX1NUUklQ
JykpOworICAgICAgICByZWZlcmVuY2VDb250ZXh0R3JvdXAuYWRkQ2hpbGQobmV3IHNnbHJSZWZl
cmVuY2VDb250ZXh0VGVzdC5UcmlhbmdsZUZhbignVHJpYW5nbGVGYW4nLCAnRHJhd2luZyB1c2lu
ZyBUUklBTkdMRV9GQU4nKSk7CisgICAgICAgIHJlZmVyZW5jZUNvbnRleHRHcm91cC5hZGRDaGls
ZChuZXcgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LkRyYXdFbGVtZW50cygnRHJhd0VsZW1lbnRz
JywgJ0RyYXdpbmcgdXNpbmcgRHJhd0VsZW1lbnRzIGFuZCBUUklBTkdMRVMnKSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKHJlZmVyZW5jZUNvbnRleHRHcm91cCk7CisKKyAgICB9Owor
CisgICAgc2dsclJlZmVyZW5jZUNvbnRleHRUZXN0LnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsK
KyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1l
dGVycworICAgICAgICB2YXIgdGVzdE5hbWUgPSAnc2luZ2xlX3JlZmVyZW5jZV9jb250ZXh0JzsK
KyAgICAgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdTaW5nbGUgUmVmZXJlbmNlIENvbnRleHQg
VGVzdHMnOworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAg
ICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUudGVzdENhc2VzID0g
dGN1VGVzdENhc2UubmV3VGVzdCh0ZXN0TmFtZSwgdGVzdERlc2NyaXB0aW9uLCBudWxsKTsKKwor
ICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVz
LgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlw
dGlvbih0ZXN0RGVzY3JpcHRpb24pOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0Ny
ZWF0ZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICBzZ2xyUmVmZXJlbmNlQ29udGV4dFRlc3QuaW5p
dCgpOworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENh
c2UucnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRjdVRlc3RD
YXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorCisgICAgfTsKKworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJSZWZlcmVuY2VVdGlscy5qcyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3
b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5jZVV0aWxzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNiOTNkZDhmOWY0YmFhZjFmOWM1NDk5MWYzZDczYzc2MjViOGRiZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJSZWZlcmVuY2VVdGlscy5qcwpA
QCAtMCwwICsxLDMxNyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVh
bGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBB
bmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAq
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJy
aWVmIFJlZmVyZW5jZSBjb250ZXh0IHV0aWxzCisgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworJ3VzZSBz
dHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5z
Z2xyUmVmZXJlbmNlVXRpbHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VG
bG9hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRGVmcycpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRl
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlcmVy
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRlcnMn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0
cmliJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgc2dsclJlZmVyZW5j
ZVV0aWxzID0gZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZVV0
aWxzOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cisg
ICAgdmFyIHRjdUZsb2F0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdDsKKyAgICB2YXIgcnJH
ZW5lcmljVmVjdG9yID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3Rv
cjsKKyAgICB2YXIgcnJWZXJ0ZXhBdHRyaWIgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJWZXJ0ZXhBdHRyaWI7CisgICAgdmFyIHJyUmVuZGVyZXIgPSBmcmFtZXdvcmsucmVmZXJlbmNl
cmVuZGVyZXIucnJSZW5kZXJlcjsKKyAgICB2YXIgcnJEZWZzID0gZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyRGVmczsKKyAgICB2YXIgcnJTaGFkZXJzID0gZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyU2hhZGVyczsKKyAgICB2YXIgcnJSZW5kZXJTdGF0ZSA9IGZyYW1ld29yay5y
ZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlOworCisgICAgLyoqCisgICAgKiBAcGFyYW0g
e251bWJlcn0gdHlwZSAoMzItYml0LCB1bnNpZ2VuZCkKKyAgICAqIEByZXR1cm4ge3JyVmVydGV4
QXR0cmliLlZlcnRleEF0dHJpYlR5cGV9CisgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAqLwor
ICAgIHNnbHJSZWZlcmVuY2VVdGlscy5tYXBHTFB1cmVJbnRlZ2VyVmVydGV4QXR0cmlidXRlVHlw
ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIGdsLlVOU0lHTkVEX0JZVEU6IHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRy
aWJUeXBlLlBVUkVfVUlOVDg7CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUOiBy
ZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5QVVJFX1VJTlQxNjsKKyAgICAg
ICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UOiByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4
QXR0cmliVHlwZS5QVVJFX1VJTlQzMjsKKyAgICAgICAgICAgIGNhc2UgZ2wuQllURTogcmV0dXJu
IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuUFVSRV9JTlQ4OworICAgICAgICAgICAg
Y2FzZSBnbC5TSE9SVDogcmV0dXJuIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuUFVS
RV9JTlQxNjsKKyAgICAgICAgICAgIGNhc2UgZ2wuSU5UOiByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIu
VmVydGV4QXR0cmliVHlwZS5QVVJFX0lOVDMyOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIHRvIGRvIG1hcHBpbmcgbm90IGNvbXBh
dGlibGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0eXBlICgzMi1iaXQsIHVuc2lnZW5kKQorICAgICogQHBhcmFtIHtib29sZWFufSBub3Jt
YWxpemVkSW50ZWdlcgorICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAqIEByZXR1cm4g
e3JyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGV9IGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHR5
cGUgdG8gVmVydGV4QXR0cmliVHlwZQorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAg
ICBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xGbG9hdFZlcnRleEF0dHJpYnV0ZVR5cGUgPSBmdW5j
dGlvbih0eXBlLCBub3JtYWxpemVkSW50ZWdlciwgc2l6ZSkgeworCisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdmFyIHVzZUNsYW1waW5nTm9ybWFsaXphdGlvbiA9IHRydWU7CisKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsLkZMT0FUOgorICAgICAg
ICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkZMT0FUOwor
ICAgICAgICAgICAgY2FzZSBnbC5IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgIHJldHVybiBy
clZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkhBTEY7CisgICAgICAgICAgICAvKiBOb3Qg
c3VwcG9ydGVkIGluIFdlYkdMIDEvMiBjYXNlIGdsLkZJWEVEOgorICAgICAgICAgICAgICAgIHJl
dHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkZJWEVEOworICAgICAgICAgICAg
Y2FzZSBnbC5ET1VCTEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJyVmVydGV4QXR0cmliLlZl
cnRleEF0dHJpYlR5cGUuRE9VQkxFOyAqLworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZEludGVnZXIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVf
VUlOVDg7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VOT1JNODsKKworICAgICAg
ICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICBpZiAoIW5vcm1h
bGl6ZWRJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIu
VmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VJTlQxNjsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBl
Lk5PTlBVUkVfVU5PUk0xNjsKKworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlQ6Cisg
ICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkSW50ZWdlcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VSU5UMzI7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0
ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VOT1JNMzI7CisKKyAgICAgICAgICAg
IGNhc2UgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgICAgIGlm
ICghbm9ybWFsaXplZEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByclZlcnRl
eEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfVUlOVF8yXzEwXzEwXzEwX1JFVjsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByclZlcnRleEF0
dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfVU5PUk1fMl8xMF8xMF8xMF9SRVY7CisKKyAg
ICAgICAgICAgIGNhc2UgZ2wuQllURToKKyAgICAgICAgICAgICAgICBpZiAoIW5vcm1hbGl6ZWRJ
bnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4
QXR0cmliVHlwZS5OT05QVVJFX0lOVDg7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodXNlQ2xh
bXBpbmdOb3JtYWxpemF0aW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhB
dHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNOF9DTEFNUDsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0
ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk04X1NDQUxFOworCisgICAgICAgICAgICBjYXNlIGds
LlNIT1JUOgorICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZEludGVnZXIpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBV
UkVfSU5UMTY7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodXNlQ2xhbXBpbmdOb3JtYWxpemF0
aW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0
cmliVHlwZS5OT05QVVJFX1NOT1JNMTZfQ0xBTVA7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5O
T05QVVJFX1NOT1JNMTZfU0NBTEU7CisKKyAgICAgICAgICAgIGNhc2UgZ2wuSU5UOgorICAgICAg
ICAgICAgICAgIGlmICghbm9ybWFsaXplZEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfSU5UMzI7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAodXNlQ2xhbXBpbmdOb3JtYWxpemF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJF
X1NOT1JNMzJfQ0xBTVA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNMzJf
U0NBTEU7CisKKyAgICAgICAgICAgIGNhc2UgZ2wuSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAg
ICAgICAgICAgIGlmICghbm9ybWFsaXplZEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfSU5UXzJfMTBfMTBf
MTBfUkVWOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZUNsYW1waW5nTm9ybWFsaXphdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJp
YlR5cGUuTk9OUFVSRV9TTk9STV8yXzEwXzEwXzEwX1JFVl9DTEFNUDsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByclZlcnRleEF0dHJpYi5WZXJ0ZXhB
dHRyaWJUeXBlLk5PTlBVUkVfU05PUk1fMl8xMF8xMF8xMF9SRVZfU0NBTEU7CisKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSB0byBk
byBtYXBwaW5nIG5vdCBjb21wYXRpYmxlJyk7CisKKyAgICAgICAgfQorCisgICAgfTsKKworICAg
IC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgc2dsclJlZmVyZW5jZVV0aWxzLm1h
cEdMU2l6ZSA9IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAgICAgc3dpdGNoIChzaXplKSB7CisgICAg
ICAgICAgICBjYXNlIDE6IHJldHVybiAxOworICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gMjsK
KyAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIDM7CisgICAgICAgICAgICBjYXNlIDQ6IHJldHVy
biA0OworICAgICAgICAgICAgLyogTk9UIGluIEdMCisgICAgICAgICAgICBjYXNlIGdsLkJHUkE6
IHJldHVybiA0OworICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIHRvIGRvIG1hcHBpbmcgbm90IGNvbXBh
dGlibGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0eXBlICgzMi1iaXQsIHVuc2lnbmVkKQorICAgICogQHJldHVybiB7cnJSZW5kZXJlci5Q
cmltaXRpdmVUeXBlfQorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVm
ZXJlbmNlVXRpbHMubWFwR0xQcmltaXRpdmVUeXBlID0gZnVuY3Rpb24odHlwZSkgeworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2wuVFJJQU5HTEVTOiByZXR1cm4g
cnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLlRSSUFOR0xFUzsKKyAgICAgICAgICAgIGNhc2UgZ2wu
VFJJQU5HTEVfU1RSSVA6IHJldHVybiByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuVFJJQU5HTEVf
U1RSSVA7CisgICAgICAgICAgICBjYXNlIGdsLlRSSUFOR0xFX0ZBTjogcmV0dXJuIHJyUmVuZGVy
ZXIuUHJpbWl0aXZlVHlwZS5UUklBTkdMRV9GQU47CisgICAgICAgICAgICBjYXNlIGdsLkxJTkVT
OiByZXR1cm4gcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLkxJTkVTOworICAgICAgICAgICAgY2Fz
ZSBnbC5MSU5FX1NUUklQOiByZXR1cm4gcnJSZW5kZXJlci5QcmltaXRpdmVUeXBlLkxJTkVfU1RS
SVA7CisgICAgICAgICAgICBjYXNlIGdsLkxJTkVfTE9PUDogcmV0dXJuIHJyUmVuZGVyZXIuUHJp
bWl0aXZlVHlwZS5MSU5FX0xPT1A7CisgICAgICAgICAgICBjYXNlIGdsLlBPSU5UUzogcmV0dXJu
IHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5QT0lOVFM7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSB0byBkbyBtYXBwaW5nIG5v
dCBjb21wYXRpYmxlJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge251bWJlcn0gdHlwZSAoMzItYml0LCB1bnNpZ25lZCkKKyAgICAqIEByZXR1cm4ge3JyRGVm
cy5JbmRleFR5cGV9CisgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAqLworICAgIHNnbHJSZWZl
cmVuY2VVdGlscy5tYXBHTEluZGV4VHlwZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0JZVEU6IHJldHVybiBy
ckRlZnMuSW5kZXhUeXBlLklOREVYVFlQRV9VSU5UODsKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5T
SUdORURfU0hPUlQ6IHJldHVybiByckRlZnMuSW5kZXhUeXBlLklOREVYVFlQRV9VSU5UMTY7Cisg
ICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0lOVDogcmV0dXJuIHJyRGVmcy5JbmRleFR5cGUu
SU5ERVhUWVBFX1VJTlQzMjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdWYWx1ZSB0byBkbyBtYXBwaW5nIG5vdCBjb21wYXRpYmxlJyk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZnVuYyAo
ZGVVaW50MzIpCisgICAgKiBAcmV0dXJuIHtyclJlbmRlclN0YXRlLlRlc3RGdW5jfQorICAgICog
QHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xUZXN0
RnVuYyA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICAgICAgc3dpdGNoIChmdW5jKSB7CisgICAgICAg
ICAgICBjYXNlIGdsLkFMV0FZUzogcmV0dXJuIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuQUxXQVlT
OworICAgICAgICAgICAgY2FzZSBnbC5FUVVBTDogcmV0dXJuIHJyUmVuZGVyU3RhdGUuVGVzdEZ1
bmMuRVFVQUw7CisgICAgICAgICAgICBjYXNlIGdsLkdFUVVBTDogcmV0dXJuIHJyUmVuZGVyU3Rh
dGUuVGVzdEZ1bmMuR0VRVUFMOworICAgICAgICAgICAgY2FzZSBnbC5HUkVBVEVSOiByZXR1cm4g
cnJSZW5kZXJTdGF0ZS5UZXN0RnVuYy5HUkVBVEVSOworICAgICAgICAgICAgY2FzZSBnbC5MRVFV
QUw6IHJldHVybiByclJlbmRlclN0YXRlLlRlc3RGdW5jLkxFUVVBTDsKKyAgICAgICAgICAgIGNh
c2UgZ2wuTEVTUzogcmV0dXJuIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuTEVTUzsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuTkVWRVI6IHJldHVybiByclJlbmRlclN0YXRlLlRlc3RGdW5jLk5FVkVSOwor
ICAgICAgICAgICAgY2FzZSBnbC5OT1RFUVVBTDogcmV0dXJuIHJyUmVuZGVyU3RhdGUuVGVzdEZ1
bmMuTk9URVFVQUw7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignVmFsdWUgdG8gZG8gbWFwcGluZyBub3QgY29tcGF0aWJsZScpOworICAgICAg
ICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IG9wIChkZVVpbnQz
MikKKyAgICAqIEByZXR1cm4ge3JyUmVuZGVyU3RhdGUuU3RlbmNpbE9wfQorICAgICogQHRocm93
cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xTdGVuY2lsT3Ag
PSBmdW5jdGlvbihvcCkgeworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgICAgICBjYXNl
IGdsLktFRVA6IHJldHVybiByclJlbmRlclN0YXRlLlN0ZW5jaWxPcC5LRUVQOworICAgICAgICAg
ICAgY2FzZSBnbC5aRVJPOiByZXR1cm4gcnJSZW5kZXJTdGF0ZS5TdGVuY2lsT3AuWkVSTzsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuUkVQTEFDRTogcmV0dXJuIHJyUmVuZGVyU3RhdGUuU3RlbmNpbE9w
LlJFUExBQ0U7CisgICAgICAgICAgICBjYXNlIGdsLklOQ1I6IHJldHVybiByclJlbmRlclN0YXRl
LlN0ZW5jaWxPcC5JTkNSOworICAgICAgICAgICAgY2FzZSBnbC5ERUNSOiByZXR1cm4gcnJSZW5k
ZXJTdGF0ZS5TdGVuY2lsT3AuREVDUjsKKyAgICAgICAgICAgIGNhc2UgZ2wuSU5DUl9XUkFQOiBy
ZXR1cm4gcnJSZW5kZXJTdGF0ZS5TdGVuY2lsT3AuSU5DUl9XUkFQOworICAgICAgICAgICAgY2Fz
ZSBnbC5ERUNSX1dSQVA6IHJldHVybiByclJlbmRlclN0YXRlLlN0ZW5jaWxPcC5ERUNSX1dSQVA7
CisgICAgICAgICAgICBjYXNlIGdsLklOVkVSVDogcmV0dXJuIHJyUmVuZGVyU3RhdGUuU3RlbmNp
bE9wLklOVkVSVDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdWYWx1ZSB0byBkbyBtYXBwaW5nIG5vdCBjb21wYXRpYmxlJyk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZXF1YXRpb24gKGRl
VWludDMyKQorICAgICogQHJldHVybiB7cnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9ufQorICAg
ICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xC
bGVuZEVxdWF0aW9uID0gZnVuY3Rpb24oZXF1YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChlcXVh
dGlvbikgeworICAgICAgICAgICAgY2FzZSBnbC5GVU5DX0FERDogcmV0dXJuIHJyUmVuZGVyU3Rh
dGUuQmxlbmRFcXVhdGlvbi5BREQ7CisgICAgICAgICAgICBjYXNlIGdsLkZVTkNfU1VCVFJBQ1Q6
IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb24uU1VCVFJBQ1Q7CisgICAgICAgICAg
ICBjYXNlIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVDogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxl
bmRFcXVhdGlvbi5SRVZFUlNFX1NVQlRSQUNUOworICAgICAgICAgICAgY2FzZSBnbC5NSU46IHJl
dHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb24uTUlOOworICAgICAgICAgICAgY2FzZSBn
bC5NQVg6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb24uTUFYOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIHRvIGRv
IG1hcHBpbmcgbm90IGNvbXBhdGlibGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcXVhdGlvbiAoZGVVaW50MzIpCisgICAgKiBAcmV0dXJu
IHtyclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZH0KKyAgICAqIEB0aHJvd3Mge0Vy
cm9yfQorICAgICovCisgICAgLypzZ2xyUmVmZXJlbmNlVXRpbHMubWFwR0xCbGVuZEVxdWF0aW9u
QWR2YW5jZWQgPSBmdW5jdGlvbihlcXVhdGlvbikgeworICAgICAgICBzd2l0Y2ggKGVxdWF0aW9u
KSB7CisgICAgICAgICAgICBjYXNlIGdsLk1VTFRJUExZX0tIUjogcmV0dXJuIHJyUmVuZGVyU3Rh
dGUuQmxlbmRFcXVhdGlvbkFkdmFuY2VkLk1VTFRJUExZOworICAgICAgICAgICAgY2FzZSBnbC5T
Q1JFRU5fS0hSOiByZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQuU0NS
RUVOOworICAgICAgICAgICAgY2FzZSBnbC5PVkVSTEFZX0tIUjogcmV0dXJuIHJyUmVuZGVyU3Rh
dGUuQmxlbmRFcXVhdGlvbkFkdmFuY2VkLk9WRVJMQVk7CisgICAgICAgICAgICBjYXNlIGdsLkRB
UktFTl9LSFI6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZC5EQVJL
RU47CisgICAgICAgICAgICBjYXNlIGdsLkxJR0hURU5fS0hSOiByZXR1cm4gcnJSZW5kZXJTdGF0
ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQuTElHSFRFTjsKKyAgICAgICAgICAgIGNhc2UgZ2wuQ09M
T1JET0RHRV9LSFI6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZC5D
T0xPUkRPREdFOworICAgICAgICAgICAgY2FzZSBnbC5DT0xPUkJVUk5fS0hSOiByZXR1cm4gcnJS
ZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQuQ09MT1JCVVJOOworICAgICAgICAgICAg
Y2FzZSBnbC5IQVJETElHSFRfS0hSOiByZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9u
QWR2YW5jZWQuSEFSRExJR0hUOworICAgICAgICAgICAgY2FzZSBnbC5TT0ZUTElHSFRfS0hSOiBy
ZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQuU09GVExJR0hUOworICAg
ICAgICAgICAgY2FzZSBnbC5ESUZGRVJFTkNFX0tIUjogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxl
bmRFcXVhdGlvbkFkdmFuY2VkLkRJRkZFUkVOQ0U7CisgICAgICAgICAgICBjYXNlIGdsLkVYQ0xV
U0lPTl9LSFI6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZC5FWENM
VVNJT047CisgICAgICAgICAgICBjYXNlIGdsLkhTTF9IVUVfS0hSOiByZXR1cm4gcnJSZW5kZXJT
dGF0ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQuSFNMX0hVRTsKKyAgICAgICAgICAgIGNhc2UgZ2wu
SFNMX1NBVFVSQVRJT05fS0hSOiByZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uQWR2
YW5jZWQuSFNMX1NBVFVSQVRJT047CisgICAgICAgICAgICBjYXNlIGdsLkhTTF9DT0xPUl9LSFI6
IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZC5IU0xfQ09MT1I7Cisg
ICAgICAgICAgICBjYXNlIGdsLkhTTF9MVU1JTk9TSVRZX0tIUjogcmV0dXJuIHJyUmVuZGVyU3Rh
dGUuQmxlbmRFcXVhdGlvbkFkdmFuY2VkLkhTTF9MVU1JTk9TSVRZOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlZhbHVlIHRvIGRvIG1hcHBp
bmcgbm90IGNvbXBhdGlibGUiKTsKKyAgICAgICAgfQorICAgIH07Ki8KKworICAgIC8qKgorICAg
ICogQHBhcmFtIHtudW1iZXJ9IGZ1bmMgKGRlVWludDMyKQorICAgICogQHJldHVybiB7cnJSZW5k
ZXJTdGF0ZS5CbGVuZEZ1bmN9CisgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAqLworICAgIHNn
bHJSZWZlcmVuY2VVdGlscy5tYXBHTEJsZW5kRnVuYyA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICAg
ICAgc3dpdGNoIChmdW5jKSB7CisgICAgICAgICAgICBjYXNlIGdsLlpFUk86IHJldHVybiByclJl
bmRlclN0YXRlLkJsZW5kRnVuYy5aRVJPOworICAgICAgICAgICAgY2FzZSBnbC5PTkU6IHJldHVy
biByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkU7CisgICAgICAgICAgICBjYXNlIGdsLlNSQ19D
T0xPUjogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLlNSQ19DT0xPUjsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuT05FX01JTlVTX1NSQ19DT0xPUjogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxl
bmRGdW5jLk9ORV9NSU5VU19TUkNfQ09MT1I7CisgICAgICAgICAgICBjYXNlIGdsLkRTVF9DT0xP
UjogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLkRTVF9DT0xPUjsKKyAgICAgICAgICAg
IGNhc2UgZ2wuT05FX01JTlVTX0RTVF9DT0xPUjogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRG
dW5jLk9ORV9NSU5VU19EU1RfQ09MT1I7CisgICAgICAgICAgICBjYXNlIGdsLlNSQ19BTFBIQTog
cmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLlNSQ19BTFBIQTsKKyAgICAgICAgICAgIGNh
c2UgZ2wuT05FX01JTlVTX1NSQ19BTFBIQTogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5j
Lk9ORV9NSU5VU19TUkNfQUxQSEE7CisgICAgICAgICAgICBjYXNlIGdsLkRTVF9BTFBIQTogcmV0
dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLkRTVF9BTFBIQTsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuT05FX01JTlVTX0RTVF9BTFBIQTogcmV0dXJuIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLk9O
RV9NSU5VU19EU1RfQUxQSEE7CisgICAgICAgICAgICBjYXNlIGdsLkNPTlNUQU5UX0NPTE9SOiBy
ZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuQ09OU1RBTlRfQ09MT1I7CisgICAgICAgICAg
ICBjYXNlIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogcmV0dXJuIHJyUmVuZGVyU3RhdGUu
QmxlbmRGdW5jLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUjsKKyAgICAgICAgICAgIGNhc2UgZ2wu
Q09OU1RBTlRfQUxQSEE6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5DT05TVEFOVF9B
TFBIQTsKKyAgICAgICAgICAgIGNhc2UgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOiByZXR1
cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOworICAg
ICAgICAgICAgY2FzZSBnbC5TUkNfQUxQSEFfU0FUVVJBVEU6IHJldHVybiByclJlbmRlclN0YXRl
LkJsZW5kRnVuYy5TUkNfQUxQSEFfU0FUVVJBVEU7CisgICAgLy8gICAgICAgICBjYXNlIGdsLlNS
QzFfQ09MT1I6IHJldHVybiByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5TUkMxX0NPTE9SOworICAg
IC8vICAgICAgICAgY2FzZSBnbC5PTkVfTUlOVVNfU1JDMV9DT0xPUjogcmV0dXJuIHJyUmVuZGVy
U3RhdGUuQmxlbmRGdW5jLk9ORV9NSU5VU19TUkMxX0NPTE9SOworICAgIC8vICAgICAgICAgY2Fz
ZSBnbC5TUkMxX0FMUEhBOiByZXR1cm4gcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuU1JDMV9BTFBI
QTsKKyAgICAvLyAgICAgICAgIGNhc2UgZ2wuT05FX01JTlVTX1NSQzFfQUxQSEE6IHJldHVybiBy
clJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkVfTUlOVVNfU1JDMV9BTFBIQTsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSB0byBkbyBt
YXBwaW5nIG5vdCBjb21wYXRpYmxlJyk7CisgICAgICAgIH0KKyAgICB9OworfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Zy
YW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJTaGFkZXJQcm9ncmFtLmpzIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsv
b3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyU2hhZGVyUHJvZ3JhbS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NTIwMWE1MzE1YTNkODdjNzJhZTgyYmYwM2I2YWYzYzcwYjM5MjZiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFt
ZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyU2hhZGVyUHJvZ3JhbS5qcwpAQCAtMCww
ICsxLDMzNiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJv
dmlkZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclNoYWRlclByb2dyYW0n
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Blbmds
LmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yckRlZnMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyRnJhZ21lbnRPcGVyYXRpb25zJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJl
ZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGVycycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWInKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0Jyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgc2dsclNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3Bl
bmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbTsKKyAgICB2YXIgcnJTaGFkZXJz
ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGVyczsKKyAgICB2YXIgcnJHZW5l
cmljVmVjdG9yID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcjsK
KyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAgICB2
YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciBnbHVU
ZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7CisgICAgdmFyIGds
dVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIHRj
dVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKKyAgICB2YXIg
cnJEZWZzID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyRGVmczsKKyAgICB2YXIgcnJG
cmFnbWVudE9wZXJhdGlvbnMgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVu
dE9wZXJhdGlvbnM7CisgICAgdmFyIHJyVmVydGV4QXR0cmliID0gZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliOworICAgIHZhciByclZlcnRleFBhY2tldCA9IGZyYW1l
d29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldDsKKyAgICB2YXIgcnJTaGFkaW5n
Q29udGV4dCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0Owor
CisgICAgdmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgaWYgKCF4KQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVkJyk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIHNnbHJTaGFkZXJQcm9ncmFtLlZhcnlpbmdGbGFncworICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5W
YXJ5aW5nRmxhZ3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5OT05FID0gdHJ1ZTsgLy9U
T0RPOiBpcyBOT05FIG5lY2Vzc2FyeT8KKyAgICAgICAgdGhpcy5GTEFUU0hBREUgPSBmYWxzZTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogc2dsclNoYWRlclByb2dyYW0uVmVydGV4QXR0cmli
dXRlCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVfCisg
ICAgICogQHBhcmFtIHtyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGV9IHR5cGVfCisgICAg
ICovCisgICAgc2dsclNoYWRlclByb2dyYW0uVmVydGV4QXR0cmlidXRlID0gZnVuY3Rpb24obmFt
ZV8sIHR5cGVfKSB7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWVfOworICAgICAgICB0aGlzLnR5
cGUgPSB0eXBlXzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogc2dsclNoYWRlclByb2dyYW0u
VmVydGV4VG9GcmFnbWVudFZhcnlpbmcKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFy
YW0ge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZX0gdHlwZV8KKyAgICAgKiBAcGFyYW0g
e3NnbHJTaGFkZXJQcm9ncmFtLlZhcnlpbmdGbGFncz19IGZsYWdzCisgICAgICovCisgICAgc2ds
clNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFnbWVudFZhcnlpbmcgPSBmdW5jdGlvbih0eXBlXywg
ZmxhZ3MpIHsKKyAgICAgICAgdGhpcy50eXBlID0gdHlwZV87CisgICAgICAgIHRoaXMuZmxhdHNo
YWRlID0gZmxhZ3MgPT09IHVuZGVmaW5lZCA/IG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WYXJ5aW5n
RmxhZ3MoKS5GTEFUU0hBREUgOiBmbGFncy5GTEFUU0hBREU7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIHNnbHJTaGFkZXJQcm9ncmFtLkZyYWdtZW50T3V0cHV0CisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQHBhcmFtIHtyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGV9IHR5cGVf
CisgICAgICovCisgICAgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQgPSBmdW5jdGlv
bih0eXBlXykgeworICAgICAgICAvKiogQHR5cGUge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVj
VHlwZX0gKi8gdGhpcy50eXBlID0gdHlwZV87CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHNn
bHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZV8KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
IHR5cGVfCisgICAgICovCisgICAgc2dsclNoYWRlclByb2dyYW0uVW5pZm9ybSA9IGZ1bmN0aW9u
KG5hbWVfLCB0eXBlXykgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1l
ID0gbmFtZV87CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8g
dGhpcy50eXBlID0gdHlwZV87CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dGhpcy52YWx1ZTsKKyAgICAgICAgLyoqIEB0eXBlIHs/cnJEZWZzLlNhbXBsZXJ9ICovIHRoaXMu
c2FtcGxlciA9IG51bGw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHNnbHJTaGFkZXJQcm9n
cmFtLlZlcnRleFNvdXJjZQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBzdHIKKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UgPSBm
dW5jdGlvbihzdHIpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuc291cmNl
ID0gc3RyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFn
bWVudFNvdXJjZQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBz
dHIKKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVudFNvdXJjZSA9IGZ1bmN0
aW9uKHN0cikgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5zb3VyY2UgPSBz
dHI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW1EZWNsYXJhdGlvbgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIHNnbHJT
aGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZT59
ICovIHRoaXMubV92ZXJ0ZXhBdHRyaWJ1dGVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8c2dsclNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFnbWVudFZhcnlpbmc+fSAqLyB0aGlzLm1f
dmVydGV4VG9GcmFnbWVudFZhcnlpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
c2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQ+fSAqLyB0aGlzLm1fZnJhZ21lbnRPdXRw
dXRzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c2dsclNoYWRlclByb2dyYW0uVW5p
Zm9ybT59ICovIHRoaXMubV91bmlmb3JtcyA9IFtdOworICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdGhpcy5tX3ZlcnRleFNvdXJjZTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMubV9mcmFnbWVudFNvdXJjZTsKKworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHRoaXMubV92ZXJ0ZXhTaGFkZXJTZXQgPSBmYWxzZTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB0aGlzLm1fZnJhZ21lbnRTaGFkZXJTZXQgPSBmYWxzZTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQWRkIGEgdmVydGV4IGF0dHJpYnV0ZSB0byB0aGUgc2hhZGVyIHByb2dyYW0g
ZGVjbGFyYXRpb24uCisgICAgICogQHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRy
aWJ1dGV9IHYKKyAgICAgKiBAcmV0dXJuIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
RGVjbGFyYXRpb259CisgICAgICovCisgICAgc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3Jh
bURlY2xhcmF0aW9uLnByb3RvdHlwZS5wdXNoVmVydGV4QXR0cmlidXRlID0gZnVuY3Rpb24odikg
eworICAgICAgICB0aGlzLm1fdmVydGV4QXR0cmlidXRlcy5wdXNoKHYpOworICAgICAgICByZXR1
cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQWRkIGEgdmVydGV4IHRvIGZyYWdt
ZW50IHZhcnlpbmcgdG8gdGhlIHNoYWRlciBwcm9ncmFtIGRlY2xhcmF0aW9uLgorICAgICAqIEBw
YXJhbSB7c2dsclNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFnbWVudFZhcnlpbmd9IHYKKyAgICAg
KiBAcmV0dXJuIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259Cisg
ICAgICovCisgICAgc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9uLnBy
b3RvdHlwZS5wdXNoVmVydGV4VG9GcmFnbWVudFZhcnlpbmcgPSBmdW5jdGlvbih2KSB7CisgICAg
ICAgIHRoaXMubV92ZXJ0ZXhUb0ZyYWdtZW50VmFyeWluZ3MucHVzaCh2KTsKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEFkZCBhIGZyYWdtZW50IG91dHB1
dCB0byB0aGUgc2hhZGVyIHByb2dyYW0gZGVjbGFyYXRpb24uCisgICAgICogQHBhcmFtIHtzZ2xy
U2hhZGVyUHJvZ3JhbS5GcmFnbWVudE91dHB1dH0gdgorICAgICAqIEByZXR1cm4ge3NnbHJTaGFk
ZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbn0KKyAgICAgKi8KKyAgICBzZ2xyU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24ucHJvdG90eXBlLnB1c2hGcmFnbWVu
dE91dHB1dCA9IGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgdGhpcy5tX2ZyYWdtZW50T3V0cHV0cy5w
dXNoKHYpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QWRkIGEgdW5pZm9ybSB0byB0aGUgc2hhZGVyIHByb2dyYW0gZGVjbGFyYXRpb24uCisgICAgICog
QHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtfSB2CisgICAgICogQHJldHVybiB7c2ds
clNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9ufQorICAgICAqLworICAgIHNn
bHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbi5wcm90b3R5cGUucHVzaFVu
aWZvcm0gPSBmdW5jdGlvbih2KSB7CisgICAgICAgIHRoaXMubV91bmlmb3Jtcy5wdXNoKHYpOwor
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
Z2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2V9IGMKKyAgICAgKiBAcmV0dXJuIHtzZ2xyU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259CisgICAgICovCisgICAgc2dsclNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9uLnByb3RvdHlwZS5wdXNoVmVydGV4
U291cmNlID0gZnVuY3Rpb24oYykgeworICAgICAgICBERV9BU1NFUlQoIXRoaXMubV92ZXJ0ZXhT
aGFkZXJTZXQpOworICAgICAgICB0aGlzLm1fdmVydGV4U291cmNlID0gYy5zb3VyY2U7CisgICAg
ICAgIHRoaXMubV92ZXJ0ZXhTaGFkZXJTZXQgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpczsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFn
bWVudFNvdXJjZX0gYworICAgICAqIEByZXR1cm4ge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW1EZWNsYXJhdGlvbn0KKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtRGVjbGFyYXRpb24ucHJvdG90eXBlLnB1c2hGcmFnbWVudFNvdXJjZSA9IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgREVfQVNTRVJUKCF0aGlzLm1fZnJhZ21lbnRTb3VyY2UpOworICAgICAg
ICAvKiogQHR5cGUge3NnbHJTaGFkZXJQcm9ncmFtLkZyYWdtZW50U291cmNlfSAqLyB0aGlzLm1f
ZnJhZ21lbnRTb3VyY2UgPSBjLnNvdXJjZTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LyB0aGlzLm1fZnJhZ21lbnRTaGFkZXJTZXQgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpczsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAg
ICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24ucHJvdG90eXBlLnZh
bGlkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhpcy5tX3ZlcnRleFNoYWRlclNldCB8
fCAhdGhpcy5tX2ZyYWdtZW50U2hhZGVyU2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIGlmICh0aGlzLm1fZnJhZ21lbnRPdXRwdXRzLmxlbmd0aCA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgc2dsclNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9uLnByb3RvdHlwZS5nZXRWZXJ0ZXhJbnB1dENv
dW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fdmVydGV4QXR0cmlidXRl
cy5sZW5ndGg7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAg
ICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24ucHJv
dG90eXBlLmdldFZlcnRleE91dHB1dENvdW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB0aGlzLm1fdmVydGV4VG9GcmFnbWVudFZhcnlpbmdzLmxlbmd0aDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHNnbHJTaGFkZXJQcm9n
cmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbi5wcm90b3R5cGUuZ2V0RnJhZ21lbnRJbnB1dENv
dW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fdmVydGV4VG9GcmFnbWVu
dFZhcnlpbmdzLmxlbmd0aDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJh
dGlvbi5wcm90b3R5cGUuZ2V0RnJhZ21lbnRPdXRwdXRDb3VudCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5tX2ZyYWdtZW50T3V0cHV0cy5sZW5ndGg7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c2dsclNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9ufSBkZWNsCisgICAgICovCisgICAgc2dsclNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbSA9IGZ1bmN0aW9uKGRlY2wpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtyclNoYWRlcnMuVmVydGV4U2hhZGVyfSAqLyB0aGlzLnZlcnRleFNoYWRlciA9IG5ldyBy
clNoYWRlcnMuVmVydGV4U2hhZGVyKGRlY2wuZ2V0VmVydGV4SW5wdXRDb3VudCgpLCBkZWNsLmdl
dFZlcnRleE91dHB1dENvdW50KCkpOworICAgICAgICAvKiogQHR5cGUge3JyU2hhZGVycy5GcmFn
bWVudFNoYWRlcn0gKi8gdGhpcy5mcmFnbWVudFNoYWRlciA9IG5ldyByclNoYWRlcnMuRnJhZ21l
bnRTaGFkZXIoZGVjbC5nZXRGcmFnbWVudElucHV0Q291bnQoKSwgZGVjbC5nZXRGcmFnbWVudE91
dHB1dENvdW50KCkpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdGhp
cy5tX2F0dHJpYnV0ZU5hbWVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c2dsclNo
YWRlclByb2dyYW0uVW5pZm9ybT59ICovIHRoaXMubV91bmlmb3JtcyA9IFtdOworICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX3ZlcnRTcmMgPSBkZWNsLm1fdmVydGV4U291cmNl
OworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX2ZyYWdTcmMgPSBkZWNsLm1f
ZnJhZ21lbnRTb3VyY2U7CisKKyAgICAgICAgREVfQVNTRVJUKGRlY2wudmFsaWQoKSk7CisKKyAg
ICAgICAgLy8gU2V0IHVwIHNoYWRlciBJTworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IGRlY2wubV92ZXJ0ZXhBdHRyaWJ1dGVzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgICAg
IHRoaXMudmVydGV4U2hhZGVyLm1faW5wdXRzW25keF0udHlwZSA9IGRlY2wubV92ZXJ0ZXhBdHRy
aWJ1dGVzW25keF0udHlwZTsKKyAgICAgICAgICAgIHRoaXMubV9hdHRyaWJ1dGVOYW1lc1tuZHhd
ID0gZGVjbC5tX3ZlcnRleEF0dHJpYnV0ZXNbbmR4XS5uYW1lOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgZGVjbC5tX3ZlcnRleFRvRnJhZ21lbnRWYXJ5aW5n
cy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICB0aGlzLnZlcnRleFNoYWRlci5tX291dHB1
dHNbbmR4XS50eXBlID0gZGVjbC5tX3ZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nc1tuZHhdLnR5cGU7
CisgICAgICAgICAgICB0aGlzLnZlcnRleFNoYWRlci5tX291dHB1dHNbbmR4XS5mbGF0c2hhZGUg
PSBkZWNsLm1fdmVydGV4VG9GcmFnbWVudFZhcnlpbmdzW25keF0uZmxhdHNoYWRlOworCisgICAg
ICAgICAgICB0aGlzLmZyYWdtZW50U2hhZGVyLm1faW5wdXRzW25keF0gPSB0aGlzLnZlcnRleFNo
YWRlci5tX291dHB1dHNbbmR4XTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IGRlY2wubV9mcmFnbWVudE91dHB1dHMubGVuZ3RoOyArK25keCkKKyAgICAgICAg
ICAgIHRoaXMuZnJhZ21lbnRTaGFkZXIubV9vdXRwdXRzW25keF0udHlwZSA9IGRlY2wubV9mcmFn
bWVudE91dHB1dHNbbmR4XS50eXBlOworCisgICAgICAgIC8vIFNldCB1cCB1bmlmb3JtcworCisg
ICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGRlY2wubV91bmlmb3Jtcy5sZW5ndGg7ICsr
bmR4KQorICAgICAgICAgICAgdGhpcy5tX3VuaWZvcm1zW25keF0gPSBuZXcgc2dsclNoYWRlclBy
b2dyYW0uVW5pZm9ybShkZWNsLm1fdW5pZm9ybXNbbmR4XS5uYW1lLCBkZWNsLm1fdW5pZm9ybXNb
bmR4XS50eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7cnJTaGFkZXJz
LlZlcnRleFNoYWRlcn0KKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9n
cmFtLnByb3RvdHlwZS5nZXRWZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMudmVydGV4U2hhZGVyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHtyclNoYWRlcnMuRnJhZ21lbnRTaGFkZXJ9CisgICAgICovCisgICAgc2dsclNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuZ2V0RnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZnJhZ21lbnRTaGFkZXI7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHJldHVybiB7c2dsclNoYWRl
clByb2dyYW0uVW5pZm9ybX0KKyAgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAgKi8KKyAgICBz
Z2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5nZXRVbmlmb3JtQnlOYW1l
ID0gZnVuY3Rpb24obmFtZSkgeworICAgICAgICBERV9BU1NFUlQobmFtZSk7CisKKyAgICAgICAg
Zm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX3VuaWZvcm1zLmxlbmd0aDsgKytuZHgpCisg
ICAgICAgICAgICBpZiAodGhpcy5tX3VuaWZvcm1zW25keF0ubmFtZSA9PSBuYW1lKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLm1fdW5pZm9ybXNbbmR4XTsKKworICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0ludmFsaWQgdW5pZm9ybSBuYW1lLCB1bmlmb3JtIG5vdCBmb3VuZC4nKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogc2hhZGVGcmFnbWVudHMgLSBhYnN0cmFjdCBmdW5jdGlv
biwgdG8gYmUgaW1wbGVtZW50ZWQgYnkgY2hpbGRyZW4gY2xhc3NlcworICAgICAqIEBwYXJhbSB7
QXJyYXk8cnJGcmFnbWVudE9wZXJhdGlvbnMuRnJhZ21lbnQ+fSBwYWNrZXRzCisgICAgICogQHBh
cmFtIHtyclNoYWRpbmdDb250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAg
ICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAgKi8KKyAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFk
ZXJQcm9ncmFtLnByb3RvdHlwZS5zaGFkZUZyYWdtZW50cyA9IGZ1bmN0aW9uKHBhY2tldHMsIGNv
bnRleHQpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGZ1bmN0aW9uIG5lZWRzIHRv
IGJlIG92ZXJ3cml0dGVuIGluIGEgY2hpbGQgY2xhc3MuJyk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIHNoYWRlVmVydGljZXMgLSBhYnN0cmFjdCBmdW5jdGlvbiwgdG8gYmUgaW1wbGVtZW50
ZWQgYnkgY2hpbGRyZW4gY2xhc3NlcworICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhBdHRy
aWIuVmVydGV4QXR0cmliPn0gaW5wdXRzCisgICAgICogQHBhcmFtIHtBcnJheTxyclZlcnRleFBh
Y2tldC5WZXJ0ZXhQYWNrZXQ+fSBwYWNrZXRzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bVBh
Y2tldHMKKyAgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAgKi8KKyAgICAgc2dsclNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuc2hhZGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKGlu
cHV0cywgcGFja2V0cywgbnVtUGFja2V0cykgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Ro
aXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gaW4gYSBjaGlsZCBjbGFzcy4nKTsK
KyAgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yckRlZnMu
anMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Zy
YW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yckRlZnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0MDA0NjVl
NGY0ZDY3ZTQxMTcxZjA4YjEzYzk5OGRjYTk0MjEwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3Jl
ZmVyZW5jZXJlbmRlcmVyL3JyRGVmcy5qcwpAQCAtMCwwICsxLDcyIEBACisvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGll
cworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
KgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoK
KyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsucmVmZXJlbmNl
cmVuZGVyZXIucnJEZWZzJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciByckRl
ZnMgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJEZWZzOworCisvKioKKyAqIEBlbnVt
CisgKi8KK3JyRGVmcy5GYWNlVHlwZSA9IHsKKyAgICBGQUNFVFlQRV9GUk9OVDogMCwKKyAgICBG
QUNFVFlQRV9CQUNLOiAxCit9OworCisvKioKKyAqIEBlbnVtCisgKi8KK3JyRGVmcy5JbmRleFR5
cGUgPSB7CisgICAgSU5ERVhUWVBFX1VJTlQ4OiAwLAorICAgIElOREVYVFlQRV9VSU5UMTY6IDEs
CisgICAgSU5ERVhUWVBFX1VJTlQzMjogMgorfTsKKworLyoqCisgKiBAZW51bQorICovCityckRl
ZnMuUHJvdm9raW5nVmVydGV4ID0geworICAgIFBST1ZPS0lOR1ZFUlRFWF9GSVJTVDogMSwKKyAg
ICBQUk9WT0tJTkdWRVJURVhfTEFTVDogMiAvLyBcbm90ZSB2YWxpZCB2YWx1ZSwgImxhc3QgdmVy
dGV4Iiwgbm90IGxhc3Qgb2YgZW51bQorfTsKKworLyoqCisgKiBAaW50ZXJmYWNlCisgKi8KK3Jy
RGVmcy5TYW1wbGVyID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IHBvcworICogQHBhcmFtIHtudW1iZXI9fSBsb2QKKyAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59CisgKi8KK3JyRGVmcy5TYW1wbGVyLnByb3RvdHlwZS5zYW1wbGUgPSBmdW5jdGlvbihw
b3MsIGxvZCkge307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gcGFj
a2V0VGV4Y29vcmRzIDQgY29vcmRpbmF0ZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSBsb2RCaWFzCisg
KiBAcmV0dXJuIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gNCB2ZWM0IHNhbXBsZXMKKyAqLworcnJE
ZWZzLlNhbXBsZXIucHJvdG90eXBlLnNhbXBsZTQgPSBmdW5jdGlvbihwYWNrZXRUZXhjb29yZHMs
IGxvZEJpYXMpIHt9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3Jy
RnJhZ21lbnRPcGVyYXRpb25zLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJGcmFnbWVudE9w
ZXJhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTljMmExZjQ2NDNkY2Y4M2I4ZjllMWM1NmQ5YjA3YTA4
YmY0YjQxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyRnJhZ21l
bnRPcGVyYXRpb25zLmpzCkBAIC0wLDAgKzEsNTgzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq
IGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29w
eXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0
aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlJyk7
CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciByckZyYWdtZW50T3BlcmF0aW9ucyA9
IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9uczsKK3ZhciBk
ZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgcnJSZW5kZXJTdGF0
ZSA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRlclN0YXRlOwordmFyIHRjdVRl
eHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7Cit2YXIgdGN1VGV4dHVyZVV0aWwg
PSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsOworCisvKiogUmV0dXJuIG9sZFZhbHVl
IHdpdGggdGhlIGJpdHMgaW5kaWNhdGVkIGJ5IG1hc2sgcmVwbGFjZWQgYnkgY29ycmVzcG9uZGlu
ZyBiaXRzIG9mIG5ld1ZhbHVlLgorICogQHBhcmFtIHtudW1iZXJ9IG9sZFZhbHVlCisgKiBAcGFy
YW0ge251bWJlcn0gbmV3VmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBtYXNrCisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLm1hc2tlZEJpdFJlcGxhY2UgPSBm
dW5jdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUsIG1hc2spIHsKKyAgICByZXR1cm4gKG9sZFZhbHVl
ICYgfm1hc2spIHwgKG5ld1ZhbHVlICYgbWFzayk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gcG9pbnQKKyAqIEBwYXJhbSB7P30gcmVjdAorICogQHJldHVybiB7Ym9vbGVh
bn0KKyAqLworcnJGcmFnbWVudE9wZXJhdGlvbnMuaXNJbnNpZGVSZWN0ID0gZnVuY3Rpb24ocG9p
bnQsIHJlY3QpIHsKKyAgICByZXR1cm4gZGVNYXRoLmRlSW5Cb3VuZHMzMihwb2ludFswXSwgcmVj
dC5sZWZ0LCByZWN0LmxlZnQgKyByZWN0LndpZHRoKSAmJgorICAgICAgICAgICBkZU1hdGguZGVJ
bkJvdW5kczMyKHBvaW50WzFdLCByZWN0LmJvdHRvbSwgcmVjdC5ib3R0b20gKyByZWN0LmhlaWdo
dCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBjb2VmZmljZW50cworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZHMKKyAqIEBwYXJh
bSB7bnVtYmVyfSBkZXB0aAorICovCityckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudCA9IGZ1
bmN0aW9uKGNvZWZmaWNlbnRzLCBjb29yZHMsIGRlcHRoKSB7CisgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB0aGlzLmJhcnljZW50cmljID0gY29lZmZpY2VudHM7CisgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnBpeGVsQ29vcmQgPSBjb29yZHM7CisgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB0aGlzLmlzQWxpdmUgPSB0cnVlOworICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdGhpcy5zdGVuY2lsUGFzc2VkID0gdHJ1ZTsKKyAgICAvKiogQHR5cGUge2Jv
b2xlYW59ICovIHRoaXMuZGVwdGhQYXNzZWQgPSB0cnVlOworICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdGhpcy5zYW1wbGVEZXB0aHMgPSBbZGVwdGhdOworICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5jbGFtcGVkQmxlbmRTcmNDb2xvciA9IFtdOworICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5jbGFtcGVkQmxlbmRTcmMxQ29sb3IgPSBb
XTsKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMuY2xhbXBlZEJsZW5kRHN0
Q29sb3IgPSBbXTsKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMuYmxlbmRT
cmNGYWN0b3JSR0IgPSBbXTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5ibGVuZFNy
Y0ZhY3RvckEgPSBOYU47CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLmJs
ZW5kRHN0RmFjdG9yUkdCID0gW107CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuYmxl
bmREc3RGYWN0b3JBID0gTmFOOworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhp
cy5ibGVuZGVkUkdCID0gW107CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuYmxlbmRl
ZEEgPSBOYU47CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnNpZ25lZFZh
bHVlID0gW107IC8vITwgaW50ZWdlciB0YXJnZXRzCisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB0aGlzLnVuc2lnbmVkVmFsdWUgPSBbXTsgLy8hPCB1bnNpZ25lZCBpbnRlZ2VyIHRh
cmdldHMKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMudmFsdWUgPSBbXTsg
LypUT0RPOiB3aGF0IHR5cGUgc2hvdWxkIGl0IGJlPyAqLworICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdGhpcy52YWx1ZTEgPSBbXTsgLypUT0RPOiB3aGF0IHR5cGUgc2hvdWxkIGl0
IGJlPyAqLworfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25z
LkZyYWdtZW50Pn0gaW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRvIHdyaXRlCisgKiBAcGFyYW0g
e3JyUmVuZGVyU3RhdGUuV2luZG93UmVjdGFuZ2xlfSBzY2lzc29yUmVjdAorICovCityckZyYWdt
ZW50T3BlcmF0aW9ucy5leGVjdXRlU2Npc3NvclRlc3QgPSBmdW5jdGlvbihpbnB1dEZyYWdtZW50
cywgc2Npc3NvclJlY3QpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0RnJhZ21lbnRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBmcmFnID0gaW5wdXRGcmFnbWVudHNbaV07Cisg
ICAgICAgIGlmIChmcmFnLmlzQWxpdmUpIHsKKyAgICAgICAgICAgIGlmICghcnJGcmFnbWVudE9w
ZXJhdGlvbnMuaXNJbnNpZGVSZWN0KGZyYWcucGl4ZWxDb29yZCwgc2Npc3NvclJlY3QpKQorICAg
ICAgICAgICAgICAgIGZyYWcuaXNBbGl2ZSA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorfTsK
KworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0g
aW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRvIHdyaXRlCisgKiBAcGFyYW0ge3JyUmVuZGVyU3Rh
dGUuU3RlbmNpbFN0YXRlfSBzdGVuY2lsU3RhdGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1TdGVu
Y2lsQml0cworICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBzdGVuY2ls
QnVmZmVyCisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVTdGVuY2lsQ29tcGFyZSA9
IGZ1bmN0aW9uKGlucHV0RnJhZ21lbnRzLCBzdGVuY2lsU3RhdGUsIG51bVN0ZW5jaWxCaXRzLCBz
dGVuY2lsQnVmZmVyKSB7CisgICAgdmFyIGNsYW1wZWRTdGVuY2lsUmVmID0gZGVNYXRoLmNsYW1w
KHN0ZW5jaWxTdGF0ZS5yZWYsIDAsICgxIDw8IG51bVN0ZW5jaWxCaXRzKSAtIDEpOworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXI9LG51bWJlcj0pOmJvb2xlYW59IGV4
cHJlc3Npb24KKyAgICAgKi8KKyAgICB2YXIgc2FtcGxlX3JlZ2lzdGVyX3N0ZW5jaWxfY29tcGFy
ZSA9IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBp
bnB1dEZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIGZyYWcgPSBpbnB1
dEZyYWdtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChmcmFnLmlzQWxpdmUpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZnJhZ1NhbXBsZU5keCA9IDA7CisgICAgICAgICAgICAgICAgdmFyIHN0ZW5j
aWxCdWZmZXJWYWx1ZSA9IHN0ZW5jaWxCdWZmZXIuZ2V0UGl4U3RlbmNpbChmcmFnU2FtcGxlTmR4
LCBmcmFnLnBpeGVsQ29vcmRbMF0sIGZyYWcucGl4ZWxDb29yZFsxXSk7CisgICAgICAgICAgICAg
ICAgdmFyIG1hc2tlZFJlZiA9IHN0ZW5jaWxTdGF0ZS5jb21wTWFzayAmIGNsYW1wZWRTdGVuY2ls
UmVmOworICAgICAgICAgICAgICAgIHZhciBtYXNrZWRCdWYgPSBzdGVuY2lsU3RhdGUuY29tcE1h
c2sgJiBzdGVuY2lsQnVmZmVyVmFsdWU7CisgICAgICAgICAgICAgICAgZnJhZy5zdGVuY2lsUGFz
c2VkID0gZXhwcmVzc2lvbihtYXNrZWRSZWYsIG1hc2tlZEJ1Zik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgc3dpdGNoIChzdGVuY2lsU3RhdGUuZnVuYykgeworICAg
ICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuTkVWRVI6IHNhbXBsZV9yZWdpc3Rlcl9z
dGVuY2lsX2NvbXBhcmUoZnVuY3Rpb24obWFza2VkUmVmLCBtYXNrZWRCdWYpIHsgcmV0dXJuIGZh
bHNlO30pOyBicmVhazsKKyAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLlRlc3RGdW5jLkFMV0FZ
Uzogc2FtcGxlX3JlZ2lzdGVyX3N0ZW5jaWxfY29tcGFyZShmdW5jdGlvbihtYXNrZWRSZWYsIG1h
c2tlZEJ1ZikgeyByZXR1cm4gdHJ1ZTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJT
dGF0ZS5UZXN0RnVuYy5MRVNTOiBzYW1wbGVfcmVnaXN0ZXJfc3RlbmNpbF9jb21wYXJlKGZ1bmN0
aW9uKG1hc2tlZFJlZiwgbWFza2VkQnVmKSB7IHJldHVybiBtYXNrZWRSZWYgPCBtYXNrZWRCdWY7
fSk7IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuTEVRVUFMOiBz
YW1wbGVfcmVnaXN0ZXJfc3RlbmNpbF9jb21wYXJlKGZ1bmN0aW9uKG1hc2tlZFJlZiwgbWFza2Vk
QnVmKSB7IHJldHVybiBtYXNrZWRSZWYgPD0gbWFza2VkQnVmO30pOyBicmVhazsKKyAgICAgICAg
Y2FzZSByclJlbmRlclN0YXRlLlRlc3RGdW5jLkdSRUFURVI6IHNhbXBsZV9yZWdpc3Rlcl9zdGVu
Y2lsX2NvbXBhcmUoZnVuY3Rpb24obWFza2VkUmVmLCBtYXNrZWRCdWYpIHsgcmV0dXJuIG1hc2tl
ZFJlZiA+IG1hc2tlZEJ1Zjt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5U
ZXN0RnVuYy5HRVFVQUw6IHNhbXBsZV9yZWdpc3Rlcl9zdGVuY2lsX2NvbXBhcmUoZnVuY3Rpb24o
bWFza2VkUmVmLCBtYXNrZWRCdWYpIHsgcmV0dXJuIG1hc2tlZFJlZiA+PSBtYXNrZWRCdWY7fSk7
IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuRVFVQUw6IHNhbXBs
ZV9yZWdpc3Rlcl9zdGVuY2lsX2NvbXBhcmUoZnVuY3Rpb24obWFza2VkUmVmLCBtYXNrZWRCdWYp
IHsgcmV0dXJuIG1hc2tlZFJlZiA9PSBtYXNrZWRCdWY7fSk7IGJyZWFrOworICAgICAgICBjYXNl
IHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuTk9URVFVQUw6IHNhbXBsZV9yZWdpc3Rlcl9zdGVuY2ls
X2NvbXBhcmUoZnVuY3Rpb24obWFza2VkUmVmLCBtYXNrZWRCdWYpIHsgcmV0dXJuIG1hc2tlZFJl
ZiAhPSBtYXNrZWRCdWY7fSk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgc3RlbmNpbCB0ZXN0IGZ1bmN0aW9uOicgKyBz
dGVuY2lsU3RhdGUuZnVuYyk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJy
RnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gaW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRv
IHdyaXRlCisgKiBAcGFyYW0ge3JyUmVuZGVyU3RhdGUuU3RlbmNpbFN0YXRlfSBzdGVuY2lsU3Rh
dGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1TdGVuY2lsQml0cworICogQHBhcmFtIHt0Y3VUZXh0
dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBzdGVuY2lsQnVmZmVyCisgKi8KK3JyRnJhZ21lbnRPcGVy
YXRpb25zLmV4ZWN1dGVTdGVuY2lsU0ZhaWwgPSBmdW5jdGlvbihpbnB1dEZyYWdtZW50cywgc3Rl
bmNpbFN0YXRlLCBudW1TdGVuY2lsQml0cywgc3RlbmNpbEJ1ZmZlcikgeworICAgIHZhciBjbGFt
cGVkU3RlbmNpbFJlZiA9IGRlTWF0aC5jbGFtcChzdGVuY2lsU3RhdGUucmVmLCAwLCAoMSA8PCBu
dW1TdGVuY2lsQml0cykgLSAxKTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51
bWJlcixudW1iZXIpOm51bWJlcn0gZXhwcmVzc2lvbgorICAgICAqLworICAgIHZhciBzYW1wbGVf
cmVnaXN0ZXJfc2ZhaWwgPSBmdW5jdGlvbihleHByZXNzaW9uKSB7CisgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBpbnB1dEZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFy
IGZyYWcgPSBpbnB1dEZyYWdtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChmcmFnLmlzQWxpdmUg
JiYgIWZyYWcuc3RlbmNpbFBhc3NlZCkgeworICAgICAgICAgICAgICAgIHZhciBmcmFnU2FtcGxl
TmR4ID0gMDsKKyAgICAgICAgICAgICAgICB2YXIgc3RlbmNpbEJ1ZmZlclZhbHVlID0gc3RlbmNp
bEJ1ZmZlci5nZXRQaXhTdGVuY2lsKGZyYWdTYW1wbGVOZHgsIGZyYWcucGl4ZWxDb29yZFswXSwg
ZnJhZy5waXhlbENvb3JkWzFdKTsKKyAgICAgICAgICAgICAgICBzdGVuY2lsQnVmZmVyLnNldFBp
eFN0ZW5jaWwocnJGcmFnbWVudE9wZXJhdGlvbnMubWFza2VkQml0UmVwbGFjZShzdGVuY2lsQnVm
ZmVyVmFsdWUsIGV4cHJlc3Npb24oc3RlbmNpbEJ1ZmZlclZhbHVlLCBudW1TdGVuY2lsQml0cyks
IHN0ZW5jaWxTdGF0ZS53cml0ZU1hc2spLCBmcmFnU2FtcGxlTmR4LCBmcmFnLnBpeGVsQ29vcmRb
MF0sIGZyYWcucGl4ZWxDb29yZFsxXSk7CisgICAgICAgICAgICAgICAgZnJhZy5pc0FsaXZlID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3dpdGNoIChz
dGVuY2lsU3RhdGUuc0ZhaWwpIHsKKyAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLlN0ZW5jaWxP
cC5LRUVQOgorICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX3NmYWlsKGZ1bmN0aW9uKHN0ZW5j
aWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpIHsgcmV0dXJuIHN0ZW5jaWxCdWZmZXJWYWx1
ZTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5TdGVuY2lsT3AuWkVSTzoK
KyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9zZmFpbChmdW5jdGlvbihzdGVuY2lsQnVmZmVy
VmFsdWUsIG51bVN0ZW5jaWxCaXRzKSB7IHJldHVybiAwO30pOyBicmVhazsKKyAgICAgICAgY2Fz
ZSByclJlbmRlclN0YXRlLlN0ZW5jaWxPcC5SRVBMQUNFOgorICAgICAgICAgICAgc2FtcGxlX3Jl
Z2lzdGVyX3NmYWlsKGZ1bmN0aW9uKHN0ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMp
IHsgcmV0dXJuIGNsYW1wZWRTdGVuY2lsUmVmO30pOyBicmVhazsKKyAgICAgICAgY2FzZSByclJl
bmRlclN0YXRlLlN0ZW5jaWxPcC5JTkNSOgorICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX3Nm
YWlsKGZ1bmN0aW9uKHN0ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpIHsgcmV0dXJu
IGRlTWF0aC5jbGFtcChzdGVuY2lsQnVmZmVyVmFsdWUgKyAxLCAwLCAoMSA8PCBudW1TdGVuY2ls
Qml0cykgLSAxKTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5TdGVuY2ls
T3AuREVDUjoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9zZmFpbChmdW5jdGlvbihzdGVu
Y2lsQnVmZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRzKSB7IHJldHVybiBkZU1hdGguY2xhbXAoc3Rl
bmNpbEJ1ZmZlclZhbHVlIC0gMSwgMCwgKDEgPDwgbnVtU3RlbmNpbEJpdHMpIC0gMSk7fSk7IGJy
ZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuU3RlbmNpbE9wLklOQ1JfV1JBUDoKKyAg
ICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9zZmFpbChmdW5jdGlvbihzdGVuY2lsQnVmZmVyVmFs
dWUsIG51bVN0ZW5jaWxCaXRzKSB7IHJldHVybiAoc3RlbmNpbEJ1ZmZlclZhbHVlICsgMSkgJiAo
KDEgPDwgbnVtU3RlbmNpbEJpdHMpIC0gMSk7fSk7IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVu
ZGVyU3RhdGUuU3RlbmNpbE9wLkRFQ1JfV1JBUDoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rl
cl9zZmFpbChmdW5jdGlvbihzdGVuY2lsQnVmZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRzKSB7IHJl
dHVybiAoc3RlbmNpbEJ1ZmZlclZhbHVlIC0gMSkgJiAoKDEgPDwgbnVtU3RlbmNpbEJpdHMpIC0g
MSk7fSk7IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuU3RlbmNpbE9wLklOVkVS
VDoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9zZmFpbChmdW5jdGlvbihzdGVuY2lsQnVm
ZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRzKSB7IHJldHVybiAofnN0ZW5jaWxCdWZmZXJWYWx1ZSkg
JiAoKDEgPDwgbnVtU3RlbmNpbEJpdHMpIC0gMSk7fSk7IGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgc3RlbmNpbCBvcDon
ICsgc3RlbmNpbFN0YXRlLnNGYWlsKTsKKyAgICB9CisKK307CisKKy8qKgorICogQHBhcmFtIHtB
cnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IGlucHV0RnJhZ21lbnRzIEZyYWdt
ZW50cyB0byB3cml0ZQorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLlRlc3RGdW5jfSBkZXB0aEZ1
bmMKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gZGVwdGhCdWZmZXIK
KyAqLworcnJGcmFnbWVudE9wZXJhdGlvbnMuZXhlY3V0ZURlcHRoQ29tcGFyZSA9IGZ1bmN0aW9u
KGlucHV0RnJhZ21lbnRzLCBkZXB0aEZ1bmMsIGRlcHRoQnVmZmVyKSB7CisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXI9LG51bWJlcj0pOmJvb2xlYW59IGV4cHJlc3Npb24K
KyAgICAgKi8KKyAgICB2YXIgY29udmVydFRvRGVwdGhCdWZmZXIgPSBmYWxzZTsKKworICAgIHZh
ciBhY2Nlc3M7CisgICAgaWYgKGRlcHRoQnVmZmVyLmdldEZvcm1hdCgpLnR5cGUgIT0gdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5GTE9BVCAmJgorICAgICAgICBkZXB0aEJ1ZmZlci5nZXRGb3JtYXQo
KS50eXBlICE9IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVRfVU5TSUdORURfSU5UXzI0Xzhf
UkVWKSB7CisgICAgICAgIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
KHsKKyAgICAgICAgICAgIGZvcm1hdDogZGVwdGhCdWZmZXIuZ2V0Rm9ybWF0KCksCisgICAgICAg
ICAgICB3aWR0aDogMSwKKyAgICAgICAgICAgIGhlaWdodDogMSwKKyAgICAgICAgICAgIGRlcHRo
OiAxLAorICAgICAgICAgICAgZGF0YTogbmV3IEFycmF5QnVmZmVyKDgpCisgICAgICAgIH0pOwor
ICAgICAgICBjb252ZXJ0VG9EZXB0aEJ1ZmZlciA9IHRydWU7CisgICAgfQorCisgICAgdmFyIHNh
bXBsZV9yZWdpc3Rlcl9kZXB0aF9jb21wYXJlID0gZnVuY3Rpb24oZXhwcmVzc2lvbikgeworICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dEZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgdmFyIGZyYWcgPSBpbnB1dEZyYWdtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChm
cmFnLmlzQWxpdmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgZnJhZ1NhbXBsZU5keCA9IDA7Cisg
ICAgICAgICAgICAgICAgdmFyIGRlcHRoQnVmZmVyVmFsdWUgPSBkZXB0aEJ1ZmZlci5nZXRQaXhE
ZXB0aChmcmFnU2FtcGxlTmR4LCBmcmFnLnBpeGVsQ29vcmRbMF0sIGZyYWcucGl4ZWxDb29yZFsx
XSk7CisgICAgICAgICAgICAgICAgdmFyIHNhbXBsZURlcHRoRmxvYXQgPSBmcmFnLnNhbXBsZURl
cHRoc1tmcmFnU2FtcGxlTmR4XTsKKworICAgICAgICAgICAgICAgIHZhciBzYW1wbGVEZXB0aDsK
KyAgICAgICAgICAgICAgICBpZiAoY29udmVydFRvRGVwdGhCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLyogY29udmVydCBpbnB1dCBmbG9hdCB0byB0YXJnZXQgYnVmZmVyIGZvcm1hdCBm
b3IgY29tcGFyaXNvbiAqLworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4RGVwdGgo
c2FtcGxlRGVwdGhGbG9hdCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHNhbXBsZURl
cHRoID0gYWNjZXNzLmdldFBpeERlcHRoKDAsIDAsIDApOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHNhbXBsZURlcHRoID0gZGVNYXRoLmNsYW1wKHNhbXBs
ZURlcHRoRmxvYXQsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBmcmFnLmRlcHRoUGFzc2VkID0gZXhwcmVzc2lvbihzYW1wbGVEZXB0aCwgZGVwdGhCdWZm
ZXJWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3dpdGNo
IChkZXB0aEZ1bmMpIHsKKyAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLlRlc3RGdW5jLk5FVkVS
OiBzYW1wbGVfcmVnaXN0ZXJfZGVwdGhfY29tcGFyZShmdW5jdGlvbihzYW1wbGVEZXB0aCwgZGVw
dGhCdWZmZXJWYWx1ZSkgeyByZXR1cm4gZmFsc2U7fSk7IGJyZWFrOworICAgICAgICBjYXNlIHJy
UmVuZGVyU3RhdGUuVGVzdEZ1bmMuQUxXQVlTOiBzYW1wbGVfcmVnaXN0ZXJfZGVwdGhfY29tcGFy
ZShmdW5jdGlvbihzYW1wbGVEZXB0aCwgZGVwdGhCdWZmZXJWYWx1ZSkgeyByZXR1cm4gdHJ1ZTt9
KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5UZXN0RnVuYy5MRVNTOiBzYW1w
bGVfcmVnaXN0ZXJfZGVwdGhfY29tcGFyZShmdW5jdGlvbihzYW1wbGVEZXB0aCwgZGVwdGhCdWZm
ZXJWYWx1ZSkgeyByZXR1cm4gc2FtcGxlRGVwdGggPCBkZXB0aEJ1ZmZlclZhbHVlO30pOyBicmVh
azsKKyAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLlRlc3RGdW5jLkxFUVVBTDogc2FtcGxlX3Jl
Z2lzdGVyX2RlcHRoX2NvbXBhcmUoZnVuY3Rpb24oc2FtcGxlRGVwdGgsIGRlcHRoQnVmZmVyVmFs
dWUpIHsgcmV0dXJuIHNhbXBsZURlcHRoIDw9IGRlcHRoQnVmZmVyVmFsdWU7fSk7IGJyZWFrOwor
ICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuVGVzdEZ1bmMuR1JFQVRFUjogc2FtcGxlX3JlZ2lz
dGVyX2RlcHRoX2NvbXBhcmUoZnVuY3Rpb24oc2FtcGxlRGVwdGgsIGRlcHRoQnVmZmVyVmFsdWUp
IHsgcmV0dXJuIHNhbXBsZURlcHRoID4gZGVwdGhCdWZmZXJWYWx1ZTt9KTsgYnJlYWs7CisgICAg
ICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5UZXN0RnVuYy5HRVFVQUw6IHNhbXBsZV9yZWdpc3Rlcl9k
ZXB0aF9jb21wYXJlKGZ1bmN0aW9uKHNhbXBsZURlcHRoLCBkZXB0aEJ1ZmZlclZhbHVlKSB7IHJl
dHVybiBzYW1wbGVEZXB0aCA+PSBkZXB0aEJ1ZmZlclZhbHVlO30pOyBicmVhazsKKyAgICAgICAg
Y2FzZSByclJlbmRlclN0YXRlLlRlc3RGdW5jLkVRVUFMOiBzYW1wbGVfcmVnaXN0ZXJfZGVwdGhf
Y29tcGFyZShmdW5jdGlvbihzYW1wbGVEZXB0aCwgZGVwdGhCdWZmZXJWYWx1ZSkgeyByZXR1cm4g
c2FtcGxlRGVwdGggPT0gZGVwdGhCdWZmZXJWYWx1ZTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
cnJSZW5kZXJTdGF0ZS5UZXN0RnVuYy5OT1RFUVVBTDogc2FtcGxlX3JlZ2lzdGVyX2RlcHRoX2Nv
bXBhcmUoZnVuY3Rpb24oc2FtcGxlRGVwdGgsIGRlcHRoQnVmZmVyVmFsdWUpIHsgcmV0dXJuIHNh
bXBsZURlcHRoICE9IGRlcHRoQnVmZmVyVmFsdWU7fSk7IGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgZGVwdGggZnVuY3Rp
b246JyArIGRlcHRoRnVuYyk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJy
RnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gaW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRv
IHdyaXRlCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGRlcHRoQnVm
ZmVyCisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVEZXB0aFdyaXRlID0gZnVuY3Rp
b24oaW5wdXRGcmFnbWVudHMsIGRlcHRoQnVmZmVyKSB7CisgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGlucHV0RnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZnJhZyA9
IGlucHV0RnJhZ21lbnRzW2ldOworICAgICAgICAgICAgaWYgKGZyYWcuaXNBbGl2ZSAmJiBmcmFn
LmRlcHRoUGFzc2VkKSB7CisgICAgICAgICAgICAgICAgdmFyIGZyYWdTYW1wbGVOZHggPSAwOwor
ICAgICAgICAgICAgICAgIHZhciBjbGFtcGVkRGVwdGggPSBkZU1hdGguY2xhbXAoZnJhZy5zYW1w
bGVEZXB0aHNbZnJhZ1NhbXBsZU5keF0sIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICBkZXB0
aEJ1ZmZlci5zZXRQaXhEZXB0aChjbGFtcGVkRGVwdGgsIGZyYWdTYW1wbGVOZHgsIGZyYWcucGl4
ZWxDb29yZFswXSwgZnJhZy5waXhlbENvb3JkWzFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdt
ZW50Pn0gaW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRvIHdyaXRlCisgKiBAcGFyYW0ge3JyUmVu
ZGVyU3RhdGUuU3RlbmNpbFN0YXRlfSBzdGVuY2lsU3RhdGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBu
dW1TdGVuY2lsQml0cworICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBz
dGVuY2lsQnVmZmVyCisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVTdGVuY2lsRHBG
YWlsQW5kUGFzcyA9IGZ1bmN0aW9uKGlucHV0RnJhZ21lbnRzLCBzdGVuY2lsU3RhdGUsIG51bVN0
ZW5jaWxCaXRzLCBzdGVuY2lsQnVmZmVyKSB7CisgICB2YXIgY2xhbXBlZFN0ZW5jaWxSZWYgPSBk
ZU1hdGguY2xhbXAoc3RlbmNpbFN0YXRlLnJlZiwgMCwgKDEgPDwgbnVtU3RlbmNpbEJpdHMpIC0g
MSk7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGJvb2xlYW4pOmJvb2xlYW59
IGNvbmRpdGlvbgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLG51bWJlcik6bnVtYmVy
fSBleHByZXNzaW9uCisgICAgICovCisgICAgdmFyIHNhbXBsZV9yZWdpc3Rlcl9kcGZhaWxfb3Jf
ZHBwYXNzID0gZnVuY3Rpb24oY29uZGl0aW9uLCBleHByZXNzaW9uKSB7CisgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBpbnB1dEZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgICAgIHZhciBmcmFnID0gaW5wdXRGcmFnbWVudHNbaV07CisgICAgICAgICAgICAgICAgaWYg
KGZyYWcuaXNBbGl2ZSAmJiBjb25kaXRpb24oZnJhZy5kZXB0aFBhc3NlZCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGZyYWdTYW1wbGVOZHggPSAwOworICAgICAgICAgICAgICAgICAgICB2
YXIgc3RlbmNpbEJ1ZmZlclZhbHVlID0gc3RlbmNpbEJ1ZmZlci5nZXRQaXhTdGVuY2lsKGZyYWdT
YW1wbGVOZHgsIGZyYWcucGl4ZWxDb29yZFswXSwgZnJhZy5waXhlbENvb3JkWzFdKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3RlbmNpbEJ1ZmZlci5zZXRQaXhTdGVuY2lsKHJyRnJhZ21lbnRPcGVy
YXRpb25zLm1hc2tlZEJpdFJlcGxhY2Uoc3RlbmNpbEJ1ZmZlclZhbHVlLCBleHByZXNzaW9uKHN0
ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpLCBzdGVuY2lsU3RhdGUud3JpdGVNYXNr
KSwgZnJhZ1NhbXBsZU5keCwgZnJhZy5waXhlbENvb3JkWzBdLCBmcmFnLnBpeGVsQ29vcmRbMV0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICB2YXIgc3dpdGNo
X2RwZmFpbF9vcl9kcHBhc3MgPSBmdW5jdGlvbihvcF9uYW1lLCBjb25kaXRpb24pIHsKKyAgICAg
ICAgc3dpdGNoIChzdGVuY2lsU3RhdGVbb3BfbmFtZV0pIHsKKyAgICAgICAgICAgIGNhc2UgcnJS
ZW5kZXJTdGF0ZS5TdGVuY2lsT3AuS0VFUDogc2FtcGxlX3JlZ2lzdGVyX2RwZmFpbF9vcl9kcHBh
c3MoY29uZGl0aW9uLCBmdW5jdGlvbihzdGVuY2lsQnVmZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRz
KSB7IHJldHVybiBzdGVuY2lsQnVmZmVyVmFsdWU7fSk7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSByclJlbmRlclN0YXRlLlN0ZW5jaWxPcC5aRVJPOiBzYW1wbGVfcmVnaXN0ZXJfZHBmYWlsX29y
X2RwcGFzcyhjb25kaXRpb24sIGZ1bmN0aW9uKHN0ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNp
bEJpdHMpIHsgcmV0dXJuIDA7fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0
YXRlLlN0ZW5jaWxPcC5SRVBMQUNFOiBzYW1wbGVfcmVnaXN0ZXJfZHBmYWlsX29yX2RwcGFzcyhj
b25kaXRpb24sIGZ1bmN0aW9uKHN0ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpIHsg
cmV0dXJuIGNsYW1wZWRTdGVuY2lsUmVmO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJS
ZW5kZXJTdGF0ZS5TdGVuY2lsT3AuSU5DUjogc2FtcGxlX3JlZ2lzdGVyX2RwZmFpbF9vcl9kcHBh
c3MoY29uZGl0aW9uLCBmdW5jdGlvbihzdGVuY2lsQnVmZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRz
KSB7IHJldHVybiBkZU1hdGguY2xhbXAoc3RlbmNpbEJ1ZmZlclZhbHVlICsgMSwgMCwgKDEgPDwg
bnVtU3RlbmNpbEJpdHMpIC0gMSk7fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRl
clN0YXRlLlN0ZW5jaWxPcC5ERUNSOiBzYW1wbGVfcmVnaXN0ZXJfZHBmYWlsX29yX2RwcGFzcyhj
b25kaXRpb24sIGZ1bmN0aW9uKHN0ZW5jaWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpIHsg
cmV0dXJuIGRlTWF0aC5jbGFtcChzdGVuY2lsQnVmZmVyVmFsdWUgLSAxLCAwLCAoMSA8PCBudW1T
dGVuY2lsQml0cykgLSAxKTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3Rh
dGUuU3RlbmNpbE9wLklOQ1JfV1JBUDogc2FtcGxlX3JlZ2lzdGVyX2RwZmFpbF9vcl9kcHBhc3Mo
Y29uZGl0aW9uLCBmdW5jdGlvbihzdGVuY2lsQnVmZmVyVmFsdWUsIG51bVN0ZW5jaWxCaXRzKSB7
IHJldHVybiAoc3RlbmNpbEJ1ZmZlclZhbHVlICsgMSkgJiAoKDEgPDwgbnVtU3RlbmNpbEJpdHMp
IC0gMSk7fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLlN0ZW5jaWxP
cC5ERUNSX1dSQVA6IHNhbXBsZV9yZWdpc3Rlcl9kcGZhaWxfb3JfZHBwYXNzKGNvbmRpdGlvbiwg
ZnVuY3Rpb24oc3RlbmNpbEJ1ZmZlclZhbHVlLCBudW1TdGVuY2lsQml0cykgeyByZXR1cm4gKHN0
ZW5jaWxCdWZmZXJWYWx1ZSAtIDEpICYgKCgxIDw8IG51bVN0ZW5jaWxCaXRzKSAtIDEpO30pOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5TdGVuY2lsT3AuSU5WRVJUOiBz
YW1wbGVfcmVnaXN0ZXJfZHBmYWlsX29yX2RwcGFzcyhjb25kaXRpb24sIGZ1bmN0aW9uKHN0ZW5j
aWxCdWZmZXJWYWx1ZSwgbnVtU3RlbmNpbEJpdHMpIHsgcmV0dXJuICh+c3RlbmNpbEJ1ZmZlclZh
bHVlKSAmICgoMSA8PCBudW1TdGVuY2lsQml0cykgLSAxKTt9KTsgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVk
IHN0ZW5jaWwgb3BlcmF0aW9uOicgKyBvcF9uYW1lKTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICB2YXIgcGFzc2VkID0gZnVuY3Rpb24oZGVwdGhQYXNzZWQpIHsgcmV0dXJuIGRlcHRoUGFzc2Vk
O307CisgICAgdmFyIGZhaWxlZCA9IGZ1bmN0aW9uKGRlcHRoUGFzc2VkKSB7IHJldHVybiAhZGVw
dGhQYXNzZWQ7fTsKKworICAgIHN3aXRjaF9kcGZhaWxfb3JfZHBwYXNzKCdkcEZhaWwnLCBmYWls
ZWQpOworICAgIHN3aXRjaF9kcGZhaWxfb3JfZHBwYXNzKCdkcFBhc3MnLCBwYXNzZWQpOworfTsK
KworLyoqCisgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0g
aW5wdXRGcmFnbWVudHMgRnJhZ21lbnRzIHRvIHdyaXRlCisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGJsZW5kQ29sb3IKKyAqIEBwYXJhbSB7cnJSZW5kZXJTdGF0ZS5CbGVuZFN0YXRlfSBibGVu
ZFJHQlN0YXRlCisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVCbGVuZEZhY3RvckNv
bXB1dGVSR0IgPSBmdW5jdGlvbihpbnB1dEZyYWdtZW50cywgYmxlbmRDb2xvciwgYmxlbmRSR0JT
dGF0ZSkgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmYWN0b3JfbmFtZQorICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXk8bnVtYmVyPiwgQXJyYXk8bnVtYmVyPiwgQXJyYXk8
bnVtYmVyPik6QXJyYXk8bnVtYmVyPn0gZXhwcmVzc2lvbgorICAgICAqLworICAgIHZhciBzYW1w
bGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yID0gZnVuY3Rpb24oZmFjdG9yX25hbWUsIGV4cHJlc3Np
b24pIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0RnJhZ21lbnRzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICB2YXIgZnJhZyA9IGlucHV0RnJhZ21lbnRzW2ldOworICAgICAg
ICAgICAgaWYgKGZyYWcuaXNBbGl2ZSkgeworICAgICAgICAgICAgICAgIHZhciBzcmMgPSBmcmFn
LmNsYW1wZWRCbGVuZFNyY0NvbG9yOworICAgICAgICAgICAgICAgIHZhciBzcmMxID0gZnJhZy5j
bGFtcGVkQmxlbmRTcmMxQ29sb3I7CisgICAgICAgICAgICAgICAgdmFyIGRzdCA9IGZyYWcuY2xh
bXBlZEJsZW5kRHN0Q29sb3I7CisgICAgICAgICAgICAgICAgZnJhZ1tmYWN0b3JfbmFtZV0gPSBk
ZU1hdGguY2xhbXBWZWN0b3IoZXhwcmVzc2lvbihzcmMsIHNyYzEsIGRzdCksIDAsIDEpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHZhciBzd2l0Y2hfc3JjX29yX2Rz
dF9mYWN0b3JfcmdiID0gZnVuY3Rpb24oZnVuY19uYW1lLCBmYWN0b3JfbmFtZSkgeworICAgICAg
ICBzd2l0Y2ggKGJsZW5kUkdCU3RhdGVbZnVuY19uYW1lXSkgeworICAgICAgICAgICAgY2FzZSBy
clJlbmRlclN0YXRlLkJsZW5kRnVuYy5aRVJPOgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdp
c3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7
IHJldHVybiBbMCwgMCwgMF07fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0
YXRlLkJsZW5kRnVuYy5PTkU6CisgICAgICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX2JsZW5k
X2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBkc3QpIHsgcmV0dXJuIFsx
LCAxLCAxXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRG
dW5jLlNSQ19DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFj
dG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gZGVNYXRo
LnN3aXp6bGUoc3JjLCBbMCwgMSwgMl0pO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJS
ZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgICAgICAg
ICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMs
IHNyYzEsIGRzdCkgeyByZXR1cm4gZGVNYXRoLnN1YnRyYWN0KFsxLCAxLCAxXSwgZGVNYXRoLnN3
aXp6bGUoc3JjLCBbMCwgMSwgMl0pKTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVu
ZGVyU3RhdGUuQmxlbmRGdW5jLkRTVF9DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVn
aXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkg
eyByZXR1cm4gZGVNYXRoLnN3aXp6bGUoZHN0LCBbMCwgMSwgMl0pO30pOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuT05FX01JTlVTX0RTVF9DT0xPUjoK
KyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1l
LCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gZGVNYXRoLnN1YnRyYWN0KFsxLCAx
LCAxXSwgZGVNYXRoLnN3aXp6bGUoZHN0LCBbMCwgMSwgMl0pKTt9KTsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLlNSQ19BTFBIQToKKyAgICAgICAgICAg
ICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihz
cmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gW3NyY1szXSwgc3JjWzNdLCBzcmNbM11dO30pOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuT05FX01JTlVTX1NS
Q19BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZh
Y3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gWzEuMCAtIHNyY1sz
XSwgMS4wIC0gc3JjWzNdLCAxLjAgLSBzcmNbM11dO30pOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuRFNUX0FMUEhBOgorICAgICAgICAgICAgICAgIHNh
bXBsZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3Jj
MSwgZHN0KSB7IHJldHVybiBbZHN0WzNdLCBkc3RbM10sIGRzdFszXV07fSk7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkVfTUlOVVNfRFNUX0FMUEhB
OgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25h
bWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7IHJldHVybiBbMS4wIC0gZHN0WzNdLCAxLjAg
LSBkc3RbM10sIDEuMCAtIGRzdFszXV07fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJl
bmRlclN0YXRlLkJsZW5kRnVuYy5DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1w
bGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEs
IGRzdCkgeyByZXR1cm4gZGVNYXRoLnN3aXp6bGUoYmxlbmRDb2xvciwgWzAsIDEsIDJdKTt9KTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLk9ORV9NSU5V
U19DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRf
ZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gZGVN
YXRoLnN1YnRyYWN0KFsxLCAxLCAxXSwgZGVNYXRoLnN3aXp6bGUoYmxlbmRDb2xvciwgWzAsIDEs
IDJdKSk7fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVu
Yy5DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRf
ZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gW2Js
ZW5kQ29sb3JbM10sIGJsZW5kQ29sb3JbM10sIGJsZW5kQ29sb3JbM11dO30pOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuT05FX01JTlVTX0NPTlNUQU5U
X0FMUEhBOgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFj
dG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7IHJldHVybiBbMS4wIC0gYmxlbmRD
b2xvclszXSwgMS4wIC0gYmxlbmRDb2xvclszXSwgMS4wIC0gYmxlbmRDb2xvclszXV07fSk7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5TUkNfQUxQSEFf
U0FUVVJBVEU6CisgICAgICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX2JsZW5kX2ZhY3Rvcihm
YWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBkc3QpIHsgcmV0dXJuIFtNYXRoLm1pbihz
cmNbM10sIDEuMCAtIGRzdFszXSksIE1hdGgubWluKHNyY1szXSwgMS4wIC0gZHN0WzNdKSwgTWF0
aC5taW4oc3JjWzNdLCAxLjAgLSBkc3RbM10pXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLlNSQzFfQ09MT1I6CisgICAgICAgICAgICAgICAgc2Ft
cGxlX3JlZ2lzdGVyX2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMx
LCBkc3QpIHsgcmV0dXJuIGRlTWF0aC5zd2l6emxlKHNyYzEsIFswLCAxLCAyXSk7fSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkVfTUlOVVNfU1JD
MV9DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZh
Y3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gZGVNYXRoLnN1YnRy
YWN0KFsxLCAxLCAxXSwgZGVNYXRoLnN3aXp6bGUoc3JjMSwgWzAsIDEsIDJdKSk7fSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5TUkMxX0FMUEhBOgor
ICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUs
IGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7IHJldHVybiBbc3JjMVszXSwgc3JjMVszXSwgc3Jj
MVszXV07fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVu
Yy5PTkVfTUlOVVNfU1JDMV9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJf
YmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1
cm4gWzEuMCAtIHNyYzFbM10sIDEuMCAtIHNyYzFbM10sIDEuMCAtIHNyYzFbM11dO30pOyBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdVbnJlY29nbml6ZWQgYmxlbmQgZnVuY3Rpb246JyArIGZ1bmNfbmFtZSk7CisgICAgICAgICAg
ICB9CisgICAgfTsKKworICAgIHN3aXRjaF9zcmNfb3JfZHN0X2ZhY3Rvcl9yZ2IoJ3NyY0Z1bmMn
LCAnYmxlbmRTcmNGYWN0b3JSR0InKTsKKyAgICBzd2l0Y2hfc3JjX29yX2RzdF9mYWN0b3Jfcmdi
KCdkc3RGdW5jJywgJ2JsZW5kRHN0RmFjdG9yUkdCJyk7CisKK307CisKKy8qKgorICogQHBhcmFt
IHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IGlucHV0RnJhZ21lbnRzIEZy
YWdtZW50cyB0byB3cml0ZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBibGVuZENvbG9yCisg
KiBAcGFyYW0ge3JyUmVuZGVyU3RhdGUuQmxlbmRTdGF0ZX0gYmxlbmRBU3RhdGUKKyAqLworcnJG
cmFnbWVudE9wZXJhdGlvbnMuZXhlY3V0ZUJsZW5kRmFjdG9yQ29tcHV0ZUEgPSBmdW5jdGlvbihp
bnB1dEZyYWdtZW50cywgYmxlbmRDb2xvciwgYmxlbmRBU3RhdGUpIHsKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZmFjdG9yX25hbWUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFy
cmF5PG51bWJlcj4sIEFycmF5PG51bWJlcj4sIEFycmF5PG51bWJlcj4pOm51bWJlcn0gZXhwcmVz
c2lvbgorICAgICAqLworICAgIHZhciBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yID0gZnVu
Y3Rpb24oZmFjdG9yX25hbWUsIGV4cHJlc3Npb24pIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGlucHV0RnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZnJhZyA9
IGlucHV0RnJhZ21lbnRzW2ldOworICAgICAgICAgICAgaWYgKGZyYWcuaXNBbGl2ZSkgeworICAg
ICAgICAgICAgICAgIHZhciBzcmMgPSBmcmFnLmNsYW1wZWRCbGVuZFNyY0NvbG9yOworICAgICAg
ICAgICAgICAgIHZhciBzcmMxID0gZnJhZy5jbGFtcGVkQmxlbmRTcmMxQ29sb3I7CisgICAgICAg
ICAgICAgICAgdmFyIGRzdCA9IGZyYWcuY2xhbXBlZEJsZW5kRHN0Q29sb3I7CisgICAgICAgICAg
ICAgICAgZnJhZ1tmYWN0b3JfbmFtZV0gPSBkZU1hdGguY2xhbXAoZXhwcmVzc2lvbihzcmMsIHNy
YzEsIGRzdCksIDAsIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAg
IHZhciBzd2ljdGNoX3NyY19vcl9kc3RfZmFjdG9yX2EgPSBmdW5jdGlvbihmdW5jX25hbWUsIGZh
Y3Rvcl9uYW1lKSB7CisgICAgICAgIHN3aXRjaCAoYmxlbmRBU3RhdGVbZnVuY19uYW1lXSkgewor
ICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5aRVJPOgorICAgICAgICAg
ICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9u
KHNyYywgc3JjMSwgZHN0KSB7IHJldHVybiAwLjA7fSk7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkU6CisgICAgICAgICAgICAgICAgc2FtcGxlX3Jl
Z2lzdGVyX2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBkc3Qp
IHsgcmV0dXJuIDEuMDt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUu
QmxlbmRGdW5jLlNSQ19DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxl
bmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4g
c3JjWzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1
bmMuT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJf
YmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1
cm4gMS4wIC0gc3JjWzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0
ZS5CbGVuZEZ1bmMuRFNUX0NPTE9SOgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9i
bGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7IHJldHVy
biBkc3RbM107fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5k
RnVuYy5PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rl
cl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7IHJl
dHVybiAxLjAgLSBkc3RbM107fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0
YXRlLkJsZW5kRnVuYy5TUkNfQUxQSEE6CisgICAgICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVy
X2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBkc3QpIHsgcmV0
dXJuIHNyY1szXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxl
bmRGdW5jLk9ORV9NSU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgICAgICAgc2FtcGxlX3JlZ2lz
dGVyX2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBkc3QpIHsg
cmV0dXJuIDEuMCAtIHNyY1szXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVy
U3RhdGUuQmxlbmRGdW5jLkRTVF9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0
ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyBy
ZXR1cm4gZHN0WzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5C
bGVuZEZ1bmMuT05FX01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVn
aXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkg
eyByZXR1cm4gMS4wIC0gZHN0WzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5k
ZXJTdGF0ZS5CbGVuZEZ1bmMuQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAgICAgICAgc2FtcGxl
X3JlZ2lzdGVyX2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rpb24oc3JjLCBzcmMxLCBk
c3QpIHsgcmV0dXJuIGJsZW5kQ29sb3JbM107fSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBy
clJlbmRlclN0YXRlLkJsZW5kRnVuYy5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAg
ICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX2JsZW5kX2ZhY3RvcihmYWN0b3JfbmFtZSwgZnVuY3Rp
b24oc3JjLCBzcmMxLCBkc3QpIHsgcmV0dXJuIDEuMCAtIGJsZW5kQ29sb3JbM107fSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRnVuYy5DT05TVEFOVF9BTFBI
QToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9u
YW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gYmxlbmRDb2xvclszXTt9KTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLk9ORV9NSU5V
U19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRf
ZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1cm4gMS4w
IC0gYmxlbmRDb2xvclszXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3Rh
dGUuQmxlbmRGdW5jLlNSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgICAgICBzYW1wbGVf
cmVnaXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRz
dCkgeyByZXR1cm4gMS4wO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0
ZS5CbGVuZEZ1bmMuU1JDMV9DT0xPUjoKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJf
YmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkgeyByZXR1
cm4gc3JjMVszXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxl
bmRGdW5jLk9ORV9NSU5VU19TUkMxX0NPTE9SOgorICAgICAgICAgICAgICAgIHNhbXBsZV9yZWdp
c3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwgZHN0KSB7
IHJldHVybiAxLjAgLSBzcmMxWzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJSZW5k
ZXJTdGF0ZS5CbGVuZEZ1bmMuU1JDMV9BTFBIQToKKyAgICAgICAgICAgICAgICBzYW1wbGVfcmVn
aXN0ZXJfYmxlbmRfZmFjdG9yKGZhY3Rvcl9uYW1lLCBmdW5jdGlvbihzcmMsIHNyYzEsIGRzdCkg
eyByZXR1cm4gc3JjMVszXTt9KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyUmVuZGVyU3Rh
dGUuQmxlbmRGdW5jLk9ORV9NSU5VU19TUkMxX0FMUEhBOgorICAgICAgICAgICAgICAgIHNhbXBs
ZV9yZWdpc3Rlcl9ibGVuZF9mYWN0b3IoZmFjdG9yX25hbWUsIGZ1bmN0aW9uKHNyYywgc3JjMSwg
ZHN0KSB7IHJldHVybiAxLjAgLSBzcmMxWzNdO30pOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgYmxlbmQg
ZnVuY3Rpb246JyArIGZ1bmNfbmFtZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3dpY3Rj
aF9zcmNfb3JfZHN0X2ZhY3Rvcl9hKCdzcmNGdW5jJywgJ2JsZW5kU3JjRmFjdG9yQScpOworICAg
IHN3aWN0Y2hfc3JjX29yX2RzdF9mYWN0b3JfYSgnZHN0RnVuYycsICdibGVuZERzdEZhY3RvckEn
KTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFn
bWVudD59IGlucHV0RnJhZ21lbnRzIEZyYWdtZW50cyB0byB3cml0ZQorICogQHBhcmFtIHtyclJl
bmRlclN0YXRlLkJsZW5kU3RhdGV9IGJsZW5kUkdCU3RhdGUKKyAqIEBwYXJhbSB7cnJSZW5kZXJT
dGF0ZS5CbGVuZFN0YXRlfSBibGVuZEFTdGF0ZQorICovCityckZyYWdtZW50T3BlcmF0aW9ucy5l
eGVjdXRlQmxlbmQgPSBmdW5jdGlvbihpbnB1dEZyYWdtZW50cywgYmxlbmRSR0JTdGF0ZSwgYmxl
bmRBU3RhdGUpIHsKKyAgICB2YXIgc2FtcGxlX3JlZ2lzdGVyX2JsZW5kZWRfY29sb3IgPSBmdW5j
dGlvbihjb2xvcl9uYW1lLCBleHByZXNzaW9uKSB7CisgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBpbnB1dEZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIGZyYWcgPSBp
bnB1dEZyYWdtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChmcmFnLmlzQWxpdmUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgc3JjID0gZnJhZy5jbGFtcGVkQmxlbmRTcmNDb2xvcjsKKyAgICAgICAg
ICAgICAgICB2YXIgZHN0ID0gZnJhZy5jbGFtcGVkQmxlbmREc3RDb2xvcjsKKyAgICAgICAgICAg
ICAgICBmcmFnW2NvbG9yX25hbWVdID0gZXhwcmVzc2lvbihzcmMsIGRzdCwgZnJhZyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3dpdGNoIChibGVuZFJHQlN0YXRl
LmVxdWF0aW9uKSB7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uLkFE
RDoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZGVkX2NvbG9yKCdibGVuZGVkUkdC
JywgZnVuY3Rpb24oc3JjLCBkc3QsIGZyYWcpIHsgcmV0dXJuIGRlTWF0aC5hZGQoZGVNYXRoLm11
bHRpcGx5KGRlTWF0aC5zd2l6emxlKHNyYywgWzAsIDEsIDJdKSwgZnJhZy5ibGVuZFNyY0ZhY3Rv
clJHQiksIGRlTWF0aC5tdWx0aXBseShkZU1hdGguc3dpenpsZShkc3QsIFswLCAxLCAyXSksIGZy
YWcuYmxlbmREc3RGYWN0b3JSR0IpKTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5kZXJT
dGF0ZS5CbGVuZEVxdWF0aW9uLlNVQlRSQUNUOgorICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVy
X2JsZW5kZWRfY29sb3IoJ2JsZW5kZWRSR0InLCBmdW5jdGlvbihzcmMsIGRzdCwgZnJhZykgeyBy
ZXR1cm4gZGVNYXRoLnN1YnRyYWN0KGRlTWF0aC5tdWx0aXBseShkZU1hdGguc3dpenpsZShzcmMs
IFswLCAxLCAyXSksIGZyYWcuYmxlbmRTcmNGYWN0b3JSR0IpLCBkZU1hdGgubXVsdGlwbHkoZGVN
YXRoLnN3aXp6bGUoZHN0LCBbMCwgMSwgMl0pLCBmcmFnLmJsZW5kRHN0RmFjdG9yUkdCKSk7fSk7
IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRFcXVhdGlvbi5SRVZFUlNF
X1NVQlRSQUNUOgorICAgICAgICAgICAgc2FtcGxlX3JlZ2lzdGVyX2JsZW5kZWRfY29sb3IoJ2Js
ZW5kZWRSR0InLCBmdW5jdGlvbihzcmMsIGRzdCwgZnJhZykgeyByZXR1cm4gZGVNYXRoLnN1YnRy
YWN0KGRlTWF0aC5tdWx0aXBseShkZU1hdGguc3dpenpsZShkc3QsIFswLCAxLCAyXSksIGZyYWcu
YmxlbmREc3RGYWN0b3JSR0IpLCBkZU1hdGgubXVsdGlwbHkoZGVNYXRoLnN3aXp6bGUoc3JjLCBb
MCwgMSwgMl0pLCBmcmFnLmJsZW5kU3JjRmFjdG9yUkdCKSk7fSk7IGJyZWFrOworICAgICAgICBj
YXNlIHJyUmVuZGVyU3RhdGUuQmxlbmRFcXVhdGlvbi5NSU46CisgICAgICAgICAgICBzYW1wbGVf
cmVnaXN0ZXJfYmxlbmRlZF9jb2xvcignYmxlbmRlZFJHQicsIGZ1bmN0aW9uKHNyYywgZHN0LCBm
cmFnKSB7IHJldHVybiBkZU1hdGgubWluKGRlTWF0aC5zd2l6emxlKHNyYywgWzAsIDEsIDJdKSwg
ZGVNYXRoLnN3aXp6bGUoZHN0LCBbMCwgMSwgMl0pKTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
cnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uLk1BWDoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdp
c3Rlcl9ibGVuZGVkX2NvbG9yKCdibGVuZGVkUkdCJywgZnVuY3Rpb24oc3JjLCBkc3QsIGZyYWcp
IHsgcmV0dXJuIGRlTWF0aC5tYXgoZGVNYXRoLnN3aXp6bGUoc3JjLCBbMCwgMSwgMl0pLCBkZU1h
dGguc3dpenpsZShkc3QsIFswLCAxLCAyXSkpO30pOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIGJsZW5kIGVxdWF0aW9u
OicgKyBibGVuZFJHQlN0YXRlLmVxdWF0aW9uKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGJsZW5k
QVN0YXRlLmVxdWF0aW9uKSB7CisgICAgICAgIGNhc2UgcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0
aW9uLkFERDoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9ibGVuZGVkX2NvbG9yKCdibGVu
ZGVkQScsIGZ1bmN0aW9uKHNyYywgZHN0LCBmcmFnKSB7IHJldHVybiBzcmNbM10gKiBmcmFnLmJs
ZW5kU3JjRmFjdG9yQSArIGRzdFszXSAqIGZyYWcuYmxlbmREc3RGYWN0b3JBO30pOyBicmVhazsK
KyAgICAgICAgY2FzZSByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb24uU1VCVFJBQ1Q6CisgICAg
ICAgICAgICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRlZF9jb2xvcignYmxlbmRlZEEnLCBmdW5jdGlv
bihzcmMsIGRzdCwgZnJhZykgeyByZXR1cm4gc3JjWzNdICogZnJhZy5ibGVuZFNyY0ZhY3RvckEg
LSBkc3RbM10gKiBmcmFnLmJsZW5kRHN0RmFjdG9yQTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
cnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uLlJFVkVSU0VfU1VCVFJBQ1Q6CisgICAgICAgICAg
ICBzYW1wbGVfcmVnaXN0ZXJfYmxlbmRlZF9jb2xvcignYmxlbmRlZEEnLCBmdW5jdGlvbihzcmMs
IGRzdCwgZnJhZykgeyByZXR1cm4gZHN0WzNdICogZnJhZy5ibGVuZERzdEZhY3RvckEgLSBzcmNb
M10gKiBmcmFnLmJsZW5kU3JjRmFjdG9yQTt9KTsgYnJlYWs7CisgICAgICAgIGNhc2UgcnJSZW5k
ZXJTdGF0ZS5CbGVuZEVxdWF0aW9uLk1JTjoKKyAgICAgICAgICAgIHNhbXBsZV9yZWdpc3Rlcl9i
bGVuZGVkX2NvbG9yKCdibGVuZGVkQScsIGZ1bmN0aW9uKHNyYywgZHN0LCBmcmFnKSB7IHJldHVy
biBNYXRoLm1pbihzcmNbM10sIGRzdFszXSk7fSk7IGJyZWFrOworICAgICAgICBjYXNlIHJyUmVu
ZGVyU3RhdGUuQmxlbmRFcXVhdGlvbi5NQVg6CisgICAgICAgICAgICBzYW1wbGVfcmVnaXN0ZXJf
YmxlbmRlZF9jb2xvcignYmxlbmRlZEEnLCBmdW5jdGlvbihzcmMsIGRzdCwgZnJhZykgeyByZXR1
cm4gTWF0aC5tYXgoc3JjWzNdLCBkc3RbM10pO30pOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIGJsZW5kIGVxdWF0aW9u
OicgKyBibGVuZEFTdGF0ZS5lcXVhdGlvbik7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0g
e0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gaW5wdXRGcmFnbWVudHMKKyAq
IEBwYXJhbSB7Ym9vbGVhbn0gaXNTUkdCCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZm
ZXJBY2Nlc3N9IGNvbG9yQnVmZmVyCisgKi8KK3JyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVD
b2xvcldyaXRlID0gZnVuY3Rpb24oaW5wdXRGcmFnbWVudHMsIGlzU1JHQiwgY29sb3JCdWZmZXIp
IHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0RnJhZ21lbnRzLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgICB2YXIgZnJhZyA9IGlucHV0RnJhZ21lbnRzW2ldOworICAgICAgICAg
ICAgaWYgKGZyYWcuaXNBbGl2ZSkgeworICAgICAgICAgICAgICAgIHZhciBjb21iaW5lZENvbG9y
ID0gZnJhZy5ibGVuZGVkUkdCLnNsaWNlKCk7CisgICAgICAgICAgICAgICAgY29tYmluZWRDb2xv
clszXSA9IGZyYWcuYmxlbmRlZEE7CisgICAgICAgICAgICAgICAgaWYgKGlzU1JHQikKKyAgICAg
ICAgICAgICAgICAgICAgY29tYmluZWRDb2xvciA9IHRjdVRleHR1cmVVdGlsLmxpbmVhclRvU1JH
Qihjb21iaW5lZENvbG9yKTsKKworICAgICAgICAgICAgICAgIGNvbG9yQnVmZmVyLnNldFBpeGVs
KGNvbWJpbmVkQ29sb3IsIDAsIGZyYWcucGl4ZWxDb29yZFswXSwgZnJhZy5waXhlbENvb3JkWzFd
KTsKKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxyckZyYWdt
ZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IGlucHV0RnJhZ21lbnRzCisgKiBAcGFyYW0ge0FycmF5
PGJvb2xlYW4+fSBjb2xvck1hc2tGYWN0b3IKKyAqIEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGNv
bG9yTWFza05lZ2F0aW9uRmFjdG9yCisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzU1JHQgorICogQHBh
cmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBjb2xvckJ1ZmZlcgorICovCityckZy
YWdtZW50T3BlcmF0aW9ucy5leGVjdXRlTWFza2VkQ29sb3JXcml0ZSA9IGZ1bmN0aW9uKGlucHV0
RnJhZ21lbnRzLCBjb2xvck1hc2tGYWN0b3IsIGNvbG9yTWFza05lZ2F0aW9uRmFjdG9yLCBpc1NS
R0IsIGNvbG9yQnVmZmVyKSB7CisgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dEZyYWdt
ZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIGZyYWcgPSBpbnB1dEZyYWdtZW50
c1tpXTsKKyAgICAgICAgICAgIGlmIChmcmFnLmlzQWxpdmUpIHsKKyAgICAgICAgICAgICAgICB2
YXIgZnJhZ1NhbXBsZU5keCA9IDA7CisgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsQ29sb3Ig
PSBjb2xvckJ1ZmZlci5nZXRQaXhlbChmcmFnU2FtcGxlTmR4LCBmcmFnLnBpeGVsQ29vcmRbMF0s
IGZyYWcucGl4ZWxDb29yZFsxXSk7CisgICAgICAgICAgICAgICAgdmFyIG5ld0NvbG9yID0gZnJh
Zy5ibGVuZGVkUkdCLnNsaWNlKCk7CisgICAgICAgICAgICAgICAgbmV3Q29sb3JbM10gPSBmcmFn
LmJsZW5kZWRBOworCisgICAgICAgICAgICAgICAgaWYgKGlzU1JHQikKKyAgICAgICAgICAgICAg
ICAgICAgbmV3Q29sb3IgPSB0Y3VUZXh0dXJlVXRpbC5saW5lYXJUb1NSR0IobmV3Q29sb3IpOwor
CisgICAgICAgICAgICAgICAgbmV3Q29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShj
b2xvck1hc2tGYWN0b3IsIG5ld0NvbG9yKSwgZGVNYXRoLm11bHRpcGx5KGNvbG9yTWFza05lZ2F0
aW9uRmFjdG9yLCBvcmlnaW5hbENvbG9yKSk7CisKKyAgICAgICAgICAgICAgICBjb2xvckJ1ZmZl
ci5zZXRQaXhlbChuZXdDb2xvciwgZnJhZ1NhbXBsZU5keCwgZnJhZy5waXhlbENvb3JkWzBdLCBm
cmFnLnBpeGVsQ29vcmRbMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7QXJyYXk8cnJGcmFnbWVudE9wZXJhdGlvbnMuRnJhZ21lbnQ+fSBpbnB1dEZy
YWdtZW50cworICogQHBhcmFtIHtBcnJheTxib29sZWFuPn0gY29sb3JNYXNrCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGNvbG9yQnVmZmVyCisgKi8KK3JyRnJhZ21l
bnRPcGVyYXRpb25zLmV4ZWN1dGVTaWduZWRWYWx1ZVdyaXRlID0gZnVuY3Rpb24oaW5wdXRGcmFn
bWVudHMsIGNvbG9yTWFzaywgY29sb3JCdWZmZXIpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaW5wdXRGcmFnbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBmcmFnID0g
aW5wdXRGcmFnbWVudHNbaV07CisgICAgICAgICAgICBpZiAoZnJhZy5pc0FsaXZlKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGZyYWdTYW1wbGVOZHggPSAwOworICAgICAgICAgICAgICAgIHZhciBv
cmlnaW5hbFZhbHVlID0gY29sb3JCdWZmZXIuZ2V0UGl4ZWxJbnQoZnJhZ1NhbXBsZU5keCwgZnJh
Zy5waXhlbENvb3JkWzBdLCBmcmFnLnBpeGVsQ29vcmRbMV0pOworICAgICAgICAgICAgICAgIHZh
ciBuZXdWYWx1ZSA9IHRjdVRleHR1cmVVdGlsLnNlbGVjdChmcmFnLnNpZ25lZFZhbHVlLCBvcmln
aW5hbFZhbHVlLCBjb2xvck1hc2spOworCisgICAgICAgICAgICAgICAgY29sb3JCdWZmZXIuc2V0
UGl4ZWxJbnQobmV3VmFsdWUsIGZyYWdTYW1wbGVOZHgsIGZyYWcucGl4ZWxDb29yZFswXSwgZnJh
Zy5waXhlbENvb3JkWzFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorfTsKKworLyoqCisg
KiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gaW5wdXRGcmFn
bWVudHMKKyAqIEBwYXJhbSB7QXJyYXk8Ym9vbGVhbj59IGNvbG9yTWFzaworICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBjb2xvckJ1ZmZlcgorICovCityckZyYWdtZW50
T3BlcmF0aW9ucy5leGVjdXRlVW5zaWduZWRWYWx1ZVdyaXRlID0gZnVuY3Rpb24oaW5wdXRGcmFn
bWVudHMsIGNvbG9yTWFzaywgY29sb3JCdWZmZXIpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaW5wdXRGcmFnbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBmcmFnID0g
aW5wdXRGcmFnbWVudHNbaV07CisgICAgICAgICAgICBpZiAoZnJhZy5pc0FsaXZlKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGZyYWdTYW1wbGVOZHggPSAwOworICAgICAgICAgICAgICAgIHZhciBv
cmlnaW5hbFZhbHVlID0gY29sb3JCdWZmZXIuZ2V0UGl4ZWxJbnQoZnJhZ1NhbXBsZU5keCwgZnJh
Zy5waXhlbENvb3JkWzBdLCBmcmFnLnBpeGVsQ29vcmRbMV0pOworICAgICAgICAgICAgICAgIHZh
ciBuZXdWYWx1ZSA9IHRjdVRleHR1cmVVdGlsLnNlbGVjdChmcmFnLnVuc2lnbmVkVmFsdWUsIG9y
aWdpbmFsVmFsdWUsIGNvbG9yTWFzayk7CisKKyAgICAgICAgICAgICAgICBjb2xvckJ1ZmZlci5z
ZXRQaXhlbEludChuZXdWYWx1ZSwgZnJhZ1NhbXBsZU5keCwgZnJhZy5waXhlbENvb3JkWzBdLCBm
cmFnLnBpeGVsQ29vcmRbMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cit9OworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICovCityckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudFByb2Nl
c3NvciA9IGZ1bmN0aW9uKCkgeworICAgIC8qIFRPRE86IGltcGxlbWVudCAqLworfTsKKworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yckdlbmVyaWNWZWN0b3IuanMgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29y
ay9yZWZlcmVuY2VyZW5kZXJlci9yckdlbmVyaWNWZWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhOTJh
NDIyNzFkNzI5OGY4NTNlMTVjNjJmMDc0YTkwNDQ3ZTJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyR2VuZXJpY1ZlY3Rvci5qcwpAQCAtMCwwICsxLDU0IEBACisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdM
IEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICog
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJyk7CisKK2dvb2cuc2NvcGUoZnVu
Y3Rpb24oKSB7CisKK3ZhciByckdlbmVyaWNWZWN0b3IgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVu
ZGVyZXIucnJHZW5lcmljVmVjdG9yOworCisgICAgdmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgp
IHsKKyAgICAgICAgaWYgKCF4KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQg
ZmFpbGVkJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHJyR2VuZXJpY1ZlY3Rvci5HZW5l
cmljVmVjVHlwZQorICAgICAqIEBlbnVtCisgICAgICovCisgICAgcnJHZW5lcmljVmVjdG9yLkdl
bmVyaWNWZWNUeXBlID0geworICAgICAgICBGTE9BVDogMCwKKyAgICAgICAgVUlOVDMyOiAxLAor
ICAgICAgICBJTlQzMjogMgorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAcGFyYW0ge251bWJlcj19IGEKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGIKKyAg
ICAgKiBAcGFyYW0ge251bWJlcj19IGMKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGQKKyAgICAg
Ki8KKyAgICByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlYzQgPSBmdW5jdGlvbihhLCBiLCBjLCBk
KSB7CisgICAgICAgIHRoaXMuZGF0YSA9IFthIHx8IDAsIGIgfHwgMCwgYyB8fCAwLCBkIHx8IDBd
OworICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJNdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJNdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZTFjYTI3MDE3OGI5Zjc3
Nzg3NTNiOTVjODkwYmZhNDRmNmY3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2Vy
ZW5kZXJlci9yck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuanMKQEAgLTAsMCArMSwxOTAg
QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBP
cGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Zy
YW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3Mn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24o
KSB7CisKK3ZhciByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MgPSBmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzOwordmFyIHRjdVRl
eHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7Cit2YXIgZGVNYXRoID0gZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKKwordmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsK
KyAgICBpZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOwor
fTsKKworLyoqCisgKiBcYnJpZWYgUmVhZC13cml0ZSBwaXhlbCBkYXRhIGFjY2VzcyB0byBtdWx0
aXNhbXBsZWQgYnVmZmVycy4KKyAqCisgKiBNdWx0aXNhbXBsZWQgZGF0YSBhY2Nlc3MgZm9sbG93
cyB0aGUgbXVsdGlzYW1wbGVkIGluZGV4aW5nIGNvbnZlbnRpb24uCisgKgorICogUHJldmVudHMg
YWNjaWRlbnRhbCB1c2FnZSBvZiBub24tbXVsdGlzYW1wbGVkIGJ1ZmZlciBhcyBtdWx0aXNhbXBs
ZWQKKyAqIHdpdGggUGl4ZWxCdWZmZXJBY2Nlc3MuCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcz19IHJhd0FjY2VzcworICovCityck11bHRp
c2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2VzcyA9IGZ1
bmN0aW9uKHJhd0FjY2VzcykgeworICAgIHRoaXMubV9hY2Nlc3MgPSByYXdBY2Nlc3MgfHwgbmV3
IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwfSk7Cit9OworCisvKioKKyAqIEByZXR1cm4ge3Rj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9CisgKi8KK3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZl
ckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5yYXcgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIHRoaXMubV9hY2Nlc3M7IH07CisKKy8qKgorICogQHJldHVybiB7Ym9v
bGVhbn0KKyAqLworcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4
ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMubV9hY2Nlc3MuaXNFbXB0eSgpOyB9OworCisvKioKKyAqIEByZXR1cm4ge251bWJlcn0KKyAq
LworcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MucHJvdG90eXBlLmdldE51bVNhbXBsZXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu
cmF3KCkuZ2V0V2lkdGgoKTsgfTsKKworLyoqCisgKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVs
QnVmZmVyQWNjZXNzfQorICovCityck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlz
YW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUudG9TaW5nbGVzYW1wbGVBY2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICBERV9BU1NFUlQodGhpcy5nZXROdW1TYW1wbGVzKCkgPT0gMSk7CisK
KyAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX2FjY2Vzcy5nZXRGb3JtYXQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5tX2FjY2Vz
cy5nZXRIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6
IHRoaXMubV9hY2Nlc3MuZ2V0RGVwdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXB0aDogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRj
aDogdGhpcy5tX2FjY2Vzcy5nZXRTbGljZVBpdGNoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xpY2VQaXRjaDogdGhpcy5tX2FjY2Vzcy5nZXRTbGljZVBpdGNoKCkgKiB0
aGlzLm1fYWNjZXNzLmdldERlcHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YTogdGhpcy5tX2FjY2Vzcy5tX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0OiB0aGlzLm1fYWNjZXNzLm1fb2Zmc2V0fSk7Cit9OworCisvKioKKyAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gb3JpZ2luYWwKKyAqIEByZXR1
cm4ge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVy
QWNjZXNzfQorICovCityck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQ
aXhlbEJ1ZmZlckFjY2Vzcy5mcm9tU2luZ2xlc2FtcGxlQWNjZXNzID0gZnVuY3Rpb24ob3JpZ2lu
YWwpIHsKKyAgICByZXR1cm4gbmV3IHJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0
aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzKAorICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXh0dXJl
LlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0OiBvcmlnaW5hbC5nZXRGb3JtYXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGg6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogb3Jp
Z2luYWwuZ2V0V2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGg6
IG9yaWdpbmFsLmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3dQaXRjaDogb3JpZ2luYWwuZ2V0Rm9ybWF0KCkuZ2V0UGl4ZWxTaXplKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsaWNlUGl0Y2g6IG9yaWdpbmFsLmdldFJvd1BpdGNoKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG9yaWdpbmFsLm1fZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBvcmlnaW5hbC5tX29mZnNl
dH0pKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
fSBtdWx0aXNhbXBsZWRBY2Nlc3MKKyAqIEByZXR1cm4ge3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZl
ckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzfQorICovCityck11bHRpc2FtcGxl
UGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5mcm9tTXVsdGlz
YW1wbGVBY2Nlc3MgPSBmdW5jdGlvbihtdWx0aXNhbXBsZWRBY2Nlc3MpIHsKKyAgICByZXR1cm4g
bmV3IHJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVy
QWNjZXNzKG11bHRpc2FtcGxlZEFjY2Vzcyk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gcmVnaW9uCisgKiBAcmV0dXJuIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nl
c3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30KKyAqLworcnJNdWx0aXNhbXBsZVBpeGVs
QnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MucHJvdG90eXBlLmdldFN1
YnJlZ2lvbiA9IGZ1bmN0aW9uKHJlZ2lvbikgeworICAgIHZhciB4ID0gcmVnaW9uWzBdOworICAg
IHZhciB5ID0gcmVnaW9uWzFdOworICAgIHZhciB3aWR0aCA9IHJlZ2lvblsyXTsKKyAgICB2YXIg
aGVpZ2h0ID0gcmVnaW9uWzNdOworCisgICAgcmV0dXJuIHJyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZl
ckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLmZyb21NdWx0aXNhbXBsZUFjY2Vz
cyh0Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdpb24odGhpcy5yYXcoKSwgMCwgeCwgeSwgdGhpcy5n
ZXROdW1TYW1wbGVzKCksIHdpZHRoLCBoZWlnaHQpKTsKK307CisKKy8qKgorICogQHJldHVybiB7
QXJyYXk8bnVtYmVyPn0gW3gsIHksIHdpZHRoLCBoZWlnaHRdCisgKi8KK3JyTXVsdGlzYW1wbGVQ
aXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5n
ZXRCdWZmZXJTaXplID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIFswLCAwLCB0aGlzLnJhdygp
LmdldEhlaWdodCgpLCB0aGlzLnJhdygpLmdldERlcHRoKCldOworfTsKKworLyoqCisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGRzdAorICovCityck11bHRpc2FtcGxl
UGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5wcm90b3R5cGUu
cmVzb2x2ZU11bHRpc2FtcGxlQ29sb3JCdWZmZXIgPSBmdW5jdGlvbihkc3QpIHsKKyAgICB2YXIg
c3JjID0gdGhpczsKKyAgICBERV9BU1NFUlQoZHN0LmdldFdpZHRoKCkgPT0gc3JjLnJhdygpLmdl
dEhlaWdodCgpKTsKKyAgICBERV9BU1NFUlQoZHN0LmdldEhlaWdodCgpID09IHNyYy5yYXcoKS5n
ZXREZXB0aCgpKTsKKworICAgIHZhciBudW1TYW1wbGVzID0gc3JjLmdldE51bVNhbXBsZXMoKTsK
KyAgICB2YXIgc3VtID0gWzAsIDAsIDAsIDBdOworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgZHN0
LmdldEhlaWdodCgpOyB5KyspIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBkc3QuZ2V0
V2lkdGgoKTsgeCsrKSB7CisgICAgICAgICAgICBzdW1bMF0gPSAwOworICAgICAgICAgICAgc3Vt
WzFdID0gMDsKKyAgICAgICAgICAgIHN1bVsyXSA9IDA7CisgICAgICAgICAgICBzdW1bM10gPSAw
OworCisgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHNyYy5yYXcoKS5nZXRXaWR0aCgp
OyBzKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgcGl4ZWwgPSBzcmMucmF3KCkuZ2V0UGl4ZWwo
cywgeCwgeSk7CisgICAgICAgICAgICAgICAgc3VtWzBdICs9IHBpeGVsWzBdOworICAgICAgICAg
ICAgICAgIHN1bVsxXSArPSBwaXhlbFsxXTsKKyAgICAgICAgICAgICAgICBzdW1bMl0gKz0gcGl4
ZWxbMl07CisgICAgICAgICAgICAgICAgc3VtWzNdICs9IHBpeGVsWzNdOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBzdW1bMF0gLz0gbnVtU2FtcGxlczsKKyAgICAgICAgICAgIHN1bVsx
XSAvPSBudW1TYW1wbGVzOworICAgICAgICAgICAgc3VtWzJdIC89IG51bVNhbXBsZXM7CisgICAg
ICAgICAgICBzdW1bM10gLz0gbnVtU2FtcGxlczsKKworICAgICAgICAgICAgZHN0LnNldFBpeGVs
KHN1bSwgeCwgeSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0K
KyAqLworcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZm
ZXJBY2Nlc3MucHJvdG90eXBlLnJlc29sdmVNdWx0aXNhbXBsZVBpeGVsID0gZnVuY3Rpb24oeCwg
eSkgeworICAgIHZhciBzdW0gPSBbMCwgMCwgMCwgMF07CisgICAgZm9yICh2YXIgcyA9IDA7IHMg
PCB0aGlzLmdldE51bVNhbXBsZXMoKTsgcysrKQorICAgICAgICBzdW0gPSBkZU1hdGguYWRkKHN1
bSwgdGhpcy5yYXcoKS5nZXRQaXhlbChzLCB4LCB5KSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHN1bS5sZW5ndGg7IGkrKykKKyAgICAgICAgc3VtW2ldID0gc3VtW2ldIC8gdGhpcy5nZXRO
dW1TYW1wbGVzKCk7CisKKyAgICByZXR1cm4gc3VtOworfTsKKworLyoqCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGNvbG9yCisgKi8KK3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5N
dWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKGNv
bG9yKSB7CisgICAgdGhpcy5yYXcoKS5jbGVhcihjb2xvcik7Cit9OworCit9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyU3RhdGUuanMgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2Vy
ZW5kZXJlci9yclJlbmRlclN0YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhYzRkYzU2YTMwYTMzYjE3MTcz
ODI0MDRkMDNmY2RmMGFhZGU5MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5k
ZXJlci9yclJlbmRlclN0YXRlLmpzCkBAIC0wLDAgKzEsMzIzIEBACisvKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gUmVmZXJlbmNlIFJlbmRlcmVyCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq
IENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICov
LyohCisgKiBcZmlsZQorICogXGJyaWVmIFJlZmVyZW5jZSByZW5kZXJlciByZW5kZXIgc3RhdGUu
CisgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVu
ZGVyZXIucnJEZWZzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJl
ci5yck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MnKTsKKworZ29vZy5zY29wZShmdW5jdGlv
bigpIHsKKwordmFyIHJyUmVuZGVyU3RhdGUgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJSZW5kZXJTdGF0ZTsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKK3ZhciBy
ck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzOwordmFyIHJyRGVmcyA9IGZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yckRlZnM7CisKKy8qKgorICogRW51bSBmb3IgcnJSZW5kZXJT
dGF0ZS5Ib3Jpem9udGFsRmlsbCB2YWx1ZXMuCisgKiBAZW51bSB7bnVtYmVyfQorICovCityclJl
bmRlclN0YXRlLkhvcml6b250YWxGaWxsID0geworICAgIExFRlQ6IDAsCisgICAgUklHSFQ6IDEK
K307CisKKy8qKgorICogRW51bSBmb3IgcnJSZW5kZXJTdGF0ZS5WZXJ0aWNhbEZpbGwgdmFsdWVz
LgorICogQGVudW0ge251bWJlcn0KKyAqLworcnJSZW5kZXJTdGF0ZS5WZXJ0aWNhbEZpbGwgPSB7
CisgICAgVE9QOiAwLAorICAgIEJPVFRPTTogMQorfTsKKworLyoqCisgKiBFbnVtIGZvciByclJl
bmRlclN0YXRlLldpbmRpbmcgdmFsdWVzLgorICogQGVudW0ge251bWJlcn0KKyAqLworcnJSZW5k
ZXJTdGF0ZS5XaW5kaW5nID0geworICAgIENDVzogMCwKKyAgICBDQzogMQorfTsKKworLyoqCisg
KiBFbnVtIGZvciByclJlbmRlclN0YXRlLkN1bGxNb2RlIHZhbHVlcy4KKyAqIEBlbnVtIHtudW1i
ZXJ9CisgKi8KK3JyUmVuZGVyU3RhdGUuQ3VsbE1vZGUgPSB7CisgICAgTk9ORTogMCwKKyAgICBC
QUNLOiAxLAorICAgIEZST05UOiAyCit9OworCisvKipyclJlbmRlclN0YXRlLldpbmRpbmcgOiBy
clJlbmRlclN0YXRlLldpbmRpbmcsCisKKyAqIEBjb25zdHJ1Y3RvcgorICovCityclJlbmRlclN0
YXRlLlJhc3Rlcml6YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLndpbmRpbmcgPSByclJlbmRlclN0YXRlLldpbmRpbmcuQ0NXOworICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmhvcml6b250YWxGaWxsID0gcnJSZW5kZXJTdGF0ZS5I
b3Jpem9udGFsRmlsbC5MRUZUOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnZlcnRp
Y2FsRmlsbCA9IHJyUmVuZGVyU3RhdGUuVmVydGljYWxGaWxsLkJPVFRPTTsKK307CisKKy8qKgor
ICogRW51bSBmb3IgcnJSZW5kZXJTdGF0ZS5UZXN0RnVuYyB2YWx1ZXMuCisgKiBAZW51bSB7bnVt
YmVyfQorICovCityclJlbmRlclN0YXRlLlRlc3RGdW5jID0geworICAgIE5FVkVSOiAwLAorICAg
IEFMV0FZUzogMSwKKyAgICBMRVNTOiAyLAorICAgIExFUVVBTDogMywKKyAgICBHUkVBVEVSOiA0
LAorICAgIEdFUVVBTDogNSwKKyAgICBFUVVBTDogNiwKKyAgICBOT1RFUVVBTDogNworfTsKKwor
LyoqCisgKiBFbnVtIGZvciByclJlbmRlclN0YXRlLlN0ZW5jaWxPcCB2YWx1ZXMuCisgKiBAZW51
bSB7bnVtYmVyfQorICovCityclJlbmRlclN0YXRlLlN0ZW5jaWxPcCA9IHsKKyAgICBLRUVQOiAw
LAorICAgIFpFUk86IDEsCisgICAgUkVQTEFDRTogMiwKKyAgICBJTkNSOiAzLCAvLyE8IEluY3Jl
bWVudCB3aXRoIHNhdHVyYXRpb24uCisgICAgREVDUjogNCwgLy8hPCBEZWNyZW1lbnQgd2l0aCBz
YXR1cmF0aW9uLgorICAgIElOQ1JfV1JBUDogNSwKKyAgICBERUNSX1dSQVA6IDYsCisgICAgSU5W
RVJUOiA3Cit9OworCisvKioKKyAqIEVudW0gZm9yIHJyUmVuZGVyU3RhdGUuQmxlbmRNb2RlIHZh
bHVlcy4KKyAqIEBlbnVtIHtudW1iZXJ9CisgKi8KK3JyUmVuZGVyU3RhdGUuQmxlbmRNb2RlID0g
eworICAgIE5PTkU6IDAsIC8vITwgTm8gYmxlbmRpbmcuCisgICAgU1RBTkRBUkQ6IDEgLy8hPCBT
dGFuZGFyZCBibGVuZGluZy4KKy8vIEFkdmFuY2VkIGJsZW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQK
Ky8vICAgIEFEVkFOQ0VEIDogMiAvLyE8IEFkdmFuY2VkIGJsZW5kaW5nIG1vZGUsIGFzIGRlZmlu
ZWQgaW4gZ2wuS0hSX2JsZW5kX2VxdWF0aW9uX2FkdmFuY2VkLgorfTsKKworLyoqCisgKiBFbnVt
IGZvciByclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb24gdmFsdWVzLgorICogQGVudW0ge251bWJl
cn0KKyAqLworcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uID0geworICAgIEFERDogMCwKKyAg
ICBTVUJUUkFDVDogMSwKKyAgICBSRVZFUlNFX1NVQlRSQUNUOiAyLAorICAgIE1JTjogMywKKyAg
ICBNQVg6IDQKK307CisKKy8vIC8qKgorLy8gICogRW51bSBmb3IgcnJSZW5kZXJTdGF0ZS5CbGVu
ZEVxdWF0aW9uQWR2YW5jZWQgdmFsdWVzLgorLy8gICogQGVudW0ge251bWJlcn0KKy8vICAqLwor
Ly8gcnJSZW5kZXJTdGF0ZS5CbGVuZEVxdWF0aW9uQWR2YW5jZWQgPSB7CisvLyAgICAgTVVMVElQ
TFkgOiAwLAorLy8gICAgIFNDUkVFTiA6IDEsCisvLyAgICAgT1ZFUkxBWSA6IDIsCisvLyAgICAg
REFSS0VOIDogMywKKy8vICAgICBMSUdIVEVOIDogNCwKKy8vICAgICBDT0xPUkRPREdFIDogNSwK
Ky8vICAgICBDT0xPUkJVUk4gOiA2LAorLy8gICAgIEhBUkRMSUdIVCA6IDcsCisvLyAgICAgU09G
VExJR0hUIDogOCwKKy8vICAgICBESUZGRVJFTkNFIDogOSwKKy8vICAgICBFWENMVVNJT04gOiAx
MCwKKy8vICAgICBIU0xfSFVFIDogMTEsCisvLyAgICAgSFNMX1NBVFVSQVRJT04gOiAxMiwKKy8v
ICAgICBIU0xfQ09MT1IgOiAxMywKKy8vICAgICBIU0xfTFVNSU5PU0lUWSA6IDE0CisvLyB9Owor
CisvKioKKyAqIEVudW0gZm9yIHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jIHZhbHVlcy4KKyAqIEBl
bnVtIHtudW1iZXJ9CisgKi8KK3JyUmVuZGVyU3RhdGUuQmxlbmRGdW5jID0geworICAgIFpFUk86
IDAsCisgICAgT05FOiAxLAorICAgIFNSQ19DT0xPUjogMiwKKyAgICBPTkVfTUlOVVNfU1JDX0NP
TE9SOiAzLAorICAgIERTVF9DT0xPUjogNCwKKyAgICBPTkVfTUlOVVNfRFNUX0NPTE9SOiA1LAor
ICAgIFNSQ19BTFBIQTogNiwKKyAgICBPTkVfTUlOVVNfU1JDX0FMUEhBOiA3LAorICAgIERTVF9B
TFBIQTogOCwKKyAgICBPTkVfTUlOVVNfRFNUX0FMUEhBOiA5LAorICAgIENPTlNUQU5UX0NPTE9S
OiAxMCwKKyAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6IDExLAorICAgIENPTlNUQU5UX0FM
UEhBOiAxMiwKKyAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6IDEzLAorICAgIFNSQ19BTFBI
QV9TQVRVUkFURTogMTQsCisgICAgU1JDMV9DT0xPUjogMTUsCisgICAgT05FX01JTlVTX1NSQzFf
Q09MT1I6IDE2LAorICAgIFNSQzFfQUxQSEE6IDE3LAorICAgIE9ORV9NSU5VU19TUkMxX0FMUEhB
OiAxOAorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworcnJSZW5kZXJTdGF0ZS5TdGVu
Y2lsU3RhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5m
dW5jID0gcnJSZW5kZXJTdGF0ZS5UZXN0RnVuYy5BTFdBWVM7CisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMucmVmID0gMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5jb21w
TWFzayA9IH4wOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnNGYWlsID0gcnJSZW5k
ZXJTdGF0ZS5TdGVuY2lsT3AuS0VFUDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5k
cEZhaWwgPSByclJlbmRlclN0YXRlLlN0ZW5jaWxPcC5LRUVQOworICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLmRwUGFzcyA9IHJyUmVuZGVyU3RhdGUuU3RlbmNpbE9wLktFRVA7CisgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMud3JpdGVNYXNrID0gfjA7Cit9OworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICovCityclJlbmRlclN0YXRlLkJsZW5kU3RhdGUgPSBmdW5jdGlvbigp
IHsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5lcXVhdGlvbiA9IHJyUmVuZGVyU3Rh
dGUuQmxlbmRFcXVhdGlvbi5BREQ7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuc3Jj
RnVuYyA9IHJyUmVuZGVyU3RhdGUuQmxlbmRGdW5jLk9ORTsKKyAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5kc3RGdW5jID0gcnJSZW5kZXJTdGF0ZS5CbGVuZEZ1bmMuWkVSTzsKK307CisK
Ky8qKgorICogQHBhcmFtIHsoQXJyYXk8bnVtYmVyPnxudW1iZXIpfSBsZWZ0XworICogQHBhcmFt
IHtudW1iZXI9fSBib3R0b21fCisgKiBAcGFyYW0ge251bWJlcj19IHdpZHRoXworICogQHBhcmFt
IHtudW1iZXI9fSBoZWlnaHRfCisgKiBAY29uc3RydWN0b3IKKyAqLworcnJSZW5kZXJTdGF0ZS5X
aW5kb3dSZWN0YW5nbGUgPSBmdW5jdGlvbihsZWZ0XywgYm90dG9tXywgd2lkdGhfLCBoZWlnaHRf
KSB7CisgICAgLy8gSXMgZmlyc3QgcGFyYW1ldGVyIGFuIGFycmF5PyBVc2UgaXQKKyAgICBpZiAo
bGVmdF8ubGVuZ3RoICYmIGxlZnRfLmxlbmd0aCA9PSA0KSB7CisgICAgICAgIHRoaXMubGVmdCA9
IGxlZnRfWzBdOworICAgICAgICB0aGlzLmJvdHRvbSA9IGxlZnRfWzFdOworICAgICAgICB0aGlz
LndpZHRoID0gbGVmdF9bMl07CisgICAgICAgIHRoaXMuaGVpZ2h0ID0gbGVmdF9bM107CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdF87CisgICAgICAgIHRoaXMuYm90dG9t
ID0gYm90dG9tXzsKKyAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoXzsKKyAgICAgICAgdGhpcy5o
ZWlnaHQgPSBoZWlnaHRfOworICAgIH0KK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
K3JyUmVuZGVyU3RhdGUuRnJhZ21lbnRPcGVyYXRpb25TdGF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5zY2lzc29yVGVzdEVuYWJsZWQgPSBmYWxzZTsK
KyAgICAvKiogQHR5cGUge3JyUmVuZGVyU3RhdGUuV2luZG93UmVjdGFuZ2xlfSAqLyB0aGlzLnNj
aXNzb3JSZWN0YW5nbGUgPSBuZXcgcnJSZW5kZXJTdGF0ZS5XaW5kb3dSZWN0YW5nbGUoMCwgMCwg
MSwgMSk7CisKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMuc3RlbmNpbFRlc3RFbmFi
bGVkID0gZmFsc2U7CisKKyAgICAvKiogQHR5cGUge0FycmF5PHJyUmVuZGVyU3RhdGUuU3RlbmNp
bFN0YXRlPn0gKi8gdGhpcy5zdGVuY2lsU3RhdGVzID0gW107CisgICAgZm9yICh2YXIgdHlwZSBp
biByckRlZnMuRmFjZVR5cGUpCisgICAgICAgIHRoaXMuc3RlbmNpbFN0YXRlc1tyckRlZnMuRmFj
ZVR5cGVbdHlwZV1dID0gbmV3IHJyUmVuZGVyU3RhdGUuU3RlbmNpbFN0YXRlKCk7CisKKyAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMuZGVwdGhUZXN0RW5hYmxlZCA9IGZhbHNlOworICAg
IC8qKiBAdHlwZSB7cnJSZW5kZXJTdGF0ZS5UZXN0RnVuY30gKi8gdGhpcy5kZXB0aEZ1bmMgPSBy
clJlbmRlclN0YXRlLlRlc3RGdW5jLkxFU1M7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0
aGlzLmRlcHRoTWFzayA9IHRydWU7CisKKyAgICAvKiogQHR5cGUge3JyUmVuZGVyU3RhdGUuQmxl
bmRNb2RlfSAqLyB0aGlzLmJsZW5kTW9kZSA9IHJyUmVuZGVyU3RhdGUuQmxlbmRNb2RlLk5PTkU7
CisgICAgLyoqIEB0eXBlIHtyclJlbmRlclN0YXRlLkJsZW5kU3RhdGV9ICovIHRoaXMuYmxlbmRS
R0JTdGF0ZSA9IG5ldyByclJlbmRlclN0YXRlLkJsZW5kU3RhdGUoKTsKKyAgICAvKiogQHR5cGUg
e3JyUmVuZGVyU3RhdGUuQmxlbmRTdGF0ZX0gKi8gdGhpcy5ibGVuZEFTdGF0ZSA9IG5ldyByclJl
bmRlclN0YXRlLkJsZW5kU3RhdGUoKTsKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHRoaXMuYmxlbmRDb2xvciA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOworLy8gICAgLyoqIEB0eXBl
IHtyclJlbmRlclN0YXRlLkJsZW5kRXF1YXRpb25BZHZhbmNlZH0gKi8gdGhpcy5ibGVuZEVxdWF0
aW9uQWR2YW5jZWQgPSBudWxsOworCisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLnNS
R0JFbmFibGVkID0gdHJ1ZTsKKworICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5kZXB0
aENsYW1wRW5hYmxlZCA9IGZhbHNlOworCisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlz
LnBvbHlnb25PZmZzZXRFbmFibGVkID0gZmFsc2U7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMucG9seWdvbk9mZnNldEZhY3RvciA9IDAuMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMgPSAwLjA7CisKKyAgICAvKiogQHR5cGUge0FycmF5
PGJvb2xlYW4+fSAqLyB0aGlzLmNvbG9yTWFzayA9IFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsK
KworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm51bVN0ZW5jaWxCaXRzID0gODsKK307
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK3JyUmVuZGVyU3RhdGUuUG9pbnRTdGF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnBvaW50U2l6ZSA9
IDEuMDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK3JyUmVuZGVyU3RhdGUuTGlu
ZVN0YXRlID0gZnVuY3Rpb24oKSB7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubGlu
ZVdpZHRoID0gMS4wOworfTsKKworLyoqCisgKiBDb25zdHJ1Y3RvciBjaGVja3MgaWYgdGhlIHBh
cmFtZXRlciBoYXMgYSAicmF3IiBtZW1iZXIgdG8gZGV0ZWN0IGlmIHRoZSBpbnN0YW5jZSBpcwor
ICogb2YgdHlwZSByclJlbmRlclN0YXRlLldpbmRvd1JlY3RhbmdsZSBvciBNdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzLgorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLldpbmRvd1JlY3Rhbmds
ZXxyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFj
Y2Vzc30gcmVjdF8KKyAqIEBjb25zdHJ1Y3RvcgorICovCityclJlbmRlclN0YXRlLlZpZXdwb3J0
U3RhdGUgPSBmdW5jdGlvbihyZWN0XykgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
LnpuID0gMC4wOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnpmID0gMS4wOworICAg
IC8qKiBAdHlwZSB7cnJSZW5kZXJTdGF0ZS5XaW5kb3dSZWN0YW5nbGV9ICovIHRoaXMucmVjdDsK
KworICAgIGlmIChyZWN0Xy5yYXcpIHsKKyAgICAgICAgdGhpcy5yZWN0ID0gbmV3IHJyUmVuZGVy
U3RhdGUuV2luZG93UmVjdGFuZ2xlKDAsIDAsIHJlY3RfLnJhdygpLmdldEhlaWdodCgpLAorICAg
ICAgICAgICAgcmVjdF8ucmF3KCkuZ2V0RGVwdGgoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpcy5yZWN0ID0gLyoqIEB0eXBlIHtyclJlbmRlclN0YXRlLldpbmRvd1JlY3RhbmdsZX0gKi8g
KHJlY3RfKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCityclJlbmRl
clN0YXRlLlJlc3RhcnRTdGF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdGhpcy5lbmFibGVkID0gZmFsc2U7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRo
aXMucmVzdGFydEluZGV4ID0gMHhGRkZGRkZGRjsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAcGFyYW0ge3JyUmVuZGVyU3RhdGUuVmlld3BvcnRTdGF0ZX0gdmlld3BvcnRfCisgKi8K
K3JyUmVuZGVyU3RhdGUuUmVuZGVyU3RhdGUgPSBmdW5jdGlvbih2aWV3cG9ydF8pIHsKKyAgICAv
KiogQHR5cGUge3JyUmVuZGVyU3RhdGUuQ3VsbE1vZGV9ICovIHRoaXMuY3VsbE1vZGUgPSByclJl
bmRlclN0YXRlLkN1bGxNb2RlLk5PTkU7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
cHJvdm9raW5nVmVydGV4Q29udmVudGlvbjsKKyAgICAvKiogQHR5cGUge3JyUmVuZGVyU3RhdGUu
Vmlld3BvcnRTdGF0ZX0gKi8gdGhpcy52aWV3cG9ydCA9IHZpZXdwb3J0XzsKKworICAgIC8qKiBA
dHlwZSB7cnJSZW5kZXJTdGF0ZS5SYXN0ZXJpemF0aW9uU3RhdGV9ICovIHRoaXMucmFzdGVyaXph
dGlvbiA9IG5ldyByclJlbmRlclN0YXRlLlJhc3Rlcml6YXRpb25TdGF0ZSgpOworICAgIC8qKiBA
dHlwZSB7cnJSZW5kZXJTdGF0ZS5GcmFnbWVudE9wZXJhdGlvblN0YXRlfSAqLyB0aGlzLmZyYWdP
cHMgPSBuZXcgcnJSZW5kZXJTdGF0ZS5GcmFnbWVudE9wZXJhdGlvblN0YXRlKCk7CisgICAgLyoq
IEB0eXBlIHtyclJlbmRlclN0YXRlLlBvaW50U3RhdGV9ICovIHRoaXMucG9pbnQgPSBuZXcgcnJS
ZW5kZXJTdGF0ZS5Qb2ludFN0YXRlKCk7CisgICAgLyoqIEB0eXBlIHtyclJlbmRlclN0YXRlLkxp
bmVTdGF0ZX0gKi8gdGhpcy5saW5lID0gbmV3IHJyUmVuZGVyU3RhdGUuTGluZVN0YXRlKCk7Cisg
ICAgLyoqIEB0eXBlIHtyclJlbmRlclN0YXRlLlJlc3RhcnRTdGF0ZX0gKi8gdGhpcy5yZXN0YXJ0
ID0gbmV3IHJyUmVuZGVyU3RhdGUuUmVzdGFydFN0YXRlKCk7Cit9OworCit9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyZXIuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5k
ZXJlci9yclJlbmRlcmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkNTc1MmIyYzQ5ZWRiYmY1YzZiZWE1MTA5
MzE1ZmE0ZTk4YjU4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9y
clJlbmRlcmVyLmpzCkBAIC0wLDAgKzEsMTI3NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBk
cmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHly
aWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
KyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
ICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisg
KgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
UmVuZGVyZXInKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Bl
bmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJEZWZzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5yZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9ucycpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yck11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3MnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyUmVuZGVyU3RhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRl
cmVyLnJyU2hhZGluZ0NvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZl
cmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkg
eworCit2YXIgcnJSZW5kZXJlciA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclJlbmRl
cmVyOwordmFyIHJyVmVydGV4UGFja2V0ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
VmVydGV4UGFja2V0OwordmFyIHJyRGVmcyA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5y
ckRlZnM7Cit2YXIgcnJGcmFnbWVudE9wZXJhdGlvbnMgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVu
ZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnM7Cit2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoOwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXh0dXJlVXRpbDsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlOwordmFyIHJyUmVuZGVyU3RhdGUgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJS
ZW5kZXJTdGF0ZTsKK3ZhciByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MgPSBmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzOwordmFy
IHJyU2hhZGluZ0NvbnRleHQgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5n
Q29udGV4dDsKK3ZhciByckdlbmVyaWNWZWN0b3IgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJHZW5lcmljVmVjdG9yOwordmFyIHNnbHJTaGFkZXJQcm9ncmFtID0gZnJhbWV3b3JrLm9w
ZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclNoYWRlclByb2dyYW07Cit2YXIgcnJWZXJ0ZXhBdHRy
aWIgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWI7Cit2YXIgZGVT
dHJpbmcgPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZzsKK3ZhciBkZVV0aWwgPSBm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWw7CisKKy8qKgorICogQGVudW0KKyAqLworcnJS
ZW5kZXJlci5QcmltaXRpdmVUeXBlID0geworICAgIFRSSUFOR0xFUzogMCwgLy8hPCBTZXBhcmF0
ZSByclJlbmRlcmVyLnRyaWFuZ2xlcworICAgIFRSSUFOR0xFX1NUUklQOiAxLCAvLyE8IHJyUmVu
ZGVyZXIuVHJpYW5nbGUgc3RyaXAKKyAgICBUUklBTkdMRV9GQU46IDIsIC8vITwgcnJSZW5kZXJl
ci5UcmlhbmdsZSBmYW4KKworICAgIExJTkVTOiAzLCAvLyE8IFNlcGFyYXRlIGxpbmVzCisgICAg
TElORV9TVFJJUDogNCwgLy8hPCBMaW5lIHN0cmlwCisgICAgTElORV9MT09QOiA1LCAvLyE8IExp
bmUgbG9vcAorCisgICAgUE9JTlRTOiA2IC8vITwgUG9pbnRzCit9OworCisvLyAvKioKKy8vICAq
IEBjb25zdHJ1Y3RvcgorLy8gICogQHBhcmFtIHtib29sZWFufSBkZXB0aEVuYWJsZWQgSXMgZGVw
dGggYnVmZmVyIGVuYWJsZWQKKy8vICAqLworLy8gcnJSZW5kZXJlci5SYXN0ZXJpemF0aW9uSW50
ZXJuYWxCdWZmZXJzID0gZnVuY3Rpb24oZGVwdGhFbmFibGVkKSB7CisvLyAgICAgLypzdGQ6OnZl
Y3RvcjxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD4qLyB0aGlzLmZyYWdtZW50UGFja2V0
cyA9IFtdOworLy8gICAgIC8qc3RkOjp2ZWN0b3I8R2VuZXJpY1ZlYzQ+Ki8gdGhpcy5zaGFkZXJP
dXRwdXRzID0gW107CisvLyAgICAgLypzdGQ6OnZlY3RvcjxGcmFnbWVudD4qLyB0aGlzLnNoYWRl
ZEZyYWdtZW50cyA9IFtdOworLy8gICAgIC8qZmxvYXQqKi8gdGhpcy5mcmFnbWVudERlcHRoQnVm
ZmVyID0gZGVwdGhFbmFibGVkID8gW10gOiBudWxsOworLy8gfTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyPX0gaWQKKyAqLworcnJSZW5kZXJlci5EcmF3Q29udGV4
dCA9IGZ1bmN0aW9uKGlkKSB7CisgICAgdGhpcy5wcmltaXRpdmVJRCA9IGlkIHx8IDA7CisKK307
CisKKy8qKgorICogVHJhbnNmb3JtIFt4LCB5XSB0byB3aW5kb3cgKHBpeGVsKSBjb29yZGluYXRl
cy4KKyAqIHogYW5kIHcgYXJlIHVuY2hhbmdlZAorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLlJl
bmRlclN0YXRlfSBzdGF0ZQorICogQHBhcmFtIHtyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9
IHBhY2tldAorICogV3JldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLworcnJSZW5kZXJlci50cmFu
c2Zvcm1HTFRvV2luZG93Q29vcmRzID0gZnVuY3Rpb24oc3RhdGUsIHBhY2tldCkgeworICAgIHZh
ciB0cmFuc2Zvcm1lZCA9IFtwYWNrZXQucG9zaXRpb25bMF0gLyBwYWNrZXQucG9zaXRpb25bM10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvblsxXSAvIHBh
Y2tldC5wb3NpdGlvblszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0
LnBvc2l0aW9uWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQucG9z
aXRpb25bM11dOworICAgIHZhciB2aWV3cG9ydCA9IHN0YXRlLnZpZXdwb3J0LnJlY3Q7CisgICAg
dmFyIGhhbGZXID0gdmlld3BvcnQud2lkdGggLyAyOworICAgIHZhciBoYWxmSCA9IHZpZXdwb3J0
LmhlaWdodCAvIDI7CisgICAgdmFyIG9YID0gdmlld3BvcnQubGVmdCArIGhhbGZXOworICAgIHZh
ciBvWSA9IHZpZXdwb3J0LmJvdHRvbSArIGhhbGZIOworCisgICAgcmV0dXJuIFsKKyAgICAgICAg
dHJhbnNmb3JtZWRbMF0gKiBoYWxmVyArIG9YLAorICAgICAgICB0cmFuc2Zvcm1lZFsxXSAqIGhh
bGZIICsgb1ksCisgICAgICAgIHRyYW5zZm9ybWVkWzJdLAorICAgICAgICB0cmFuc2Zvcm1lZFsz
XQorICAgIF07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtyck11bHRp
c2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzc30gY29s
b3JNdWx0aXNhbXBsZUJ1ZmZlcgorICogQHBhcmFtIHtyck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcz19IGRlcHRoTXVsdGlzYW1wbGVCdWZm
ZXIKKyAqIEBwYXJhbSB7cnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxl
UGl4ZWxCdWZmZXJBY2Nlc3M9fSBzdGVuY2lsTXVsdGlzYW1wbGVCdWZmZXIKKyAqLworcnJSZW5k
ZXJlci5SZW5kZXJUYXJnZXQgPSBmdW5jdGlvbihjb2xvck11bHRpc2FtcGxlQnVmZmVyLCBkZXB0
aE11bHRpc2FtcGxlQnVmZmVyLCBzdGVuY2lsTXVsdGlzYW1wbGVCdWZmZXIpIHsKKyAgICB0aGlz
Lk1BWF9DT0xPUl9CVUZGRVJTID0gNDsKKyAgICB0aGlzLmNvbG9yQnVmZmVycyA9IFtdOworICAg
IHRoaXMuY29sb3JCdWZmZXJzWzBdID0gY29sb3JNdWx0aXNhbXBsZUJ1ZmZlcjsKKyAgICB0aGlz
LmRlcHRoQnVmZmVyID0gZGVwdGhNdWx0aXNhbXBsZUJ1ZmZlciB8fCBuZXcgcnJNdWx0aXNhbXBs
ZVBpeGVsQnVmZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MoKTsKKyAgICB0
aGlzLnN0ZW5jaWxCdWZmZXIgPSBzdGVuY2lsTXVsdGlzYW1wbGVCdWZmZXIgfHwgbmV3IHJyTXVs
dGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzKCk7
CisgICAgdGhpcy5udW1Db2xvckJ1ZmZlcnMgPSAxOworfTsKKworLy8gTk9URTogUHJvZ3JhbSBv
YmplY3QgaXMgdXNlbGVzcy4gTGV0J3MganVzdCB1c2UgdGhlIHNnbHJTaGFkZXJQcm9ncmFtCisv
LyAvKioKKy8vICAqIEBjb25zdHJ1Y3RvcgorLy8gICogQHBhcmFtIHtyclNoYWRlcnMuVmVydGV4
U2hhZGVyfSB2ZXJ0ZXhTaGFkZXJfCisvLyAgKiBAcGFyYW0ge3JyU2hhZGVycy5GcmFnbWVudFNo
YWRlcn0gZnJhZ21lbnRTaGFkZXJfCisvLyAgKi8KKy8vIHZhciBQcm9ncmFtID0gZnVuY3Rpb24o
dmVydGV4U2hhZGVyXywgZnJhZ21lbnRTaGFkZXJfKSB7CisvLyAgICAgdGhpcy52ZXJ0ZXhTaGFk
ZXIgPSB2ZXJ0ZXhTaGFkZXJfOworLy8gICAgIHRoaXMuZnJhZ21lbnRTaGFkZXIgPSBmcmFnbWVu
dFNoYWRlcl87CisvLyB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJh
eUJ1ZmZlcn0gZGF0YQorICogQHBhcmFtIHtyckRlZnMuSW5kZXhUeXBlfSB0eXBlCisgKiBAcGFy
YW0ge251bWJlcn0gb2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcj19IGJhc2VWZXJ0ZXhfCisgKi8K
K3JyUmVuZGVyZXIuRHJhd0luZGljZXMgPSBmdW5jdGlvbihkYXRhLCB0eXBlLCBvZmZzZXQsIGJh
c2VWZXJ0ZXhfKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdGhpcy5kYXRhID0g
ZGF0YTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5iYXNlVmVydGV4ID0gYmFzZVZl
cnRleF8gfHwgMDsKKyAgICAvKiogQHR5cGUge3JyRGVmcy5JbmRleFR5cGV9ICovIHRoaXMuaW5k
ZXhUeXBlID0gdHlwZTsKKyAgICAvKiogQHR5cGUge2dvb2cuTnVtYmVyQXJyYXl9ICovIHRoaXMu
YWNjZXNzID0gbnVsbDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSByckRlZnMu
SW5kZXhUeXBlLklOREVYVFlQRV9VSU5UODogdGhpcy5hY2Nlc3MgPSBuZXcgVWludDhBcnJheShk
YXRhKS5zdWJhcnJheShvZmZzZXQpOyBicmVhazsKKyAgICAgICAgY2FzZSByckRlZnMuSW5kZXhU
eXBlLklOREVYVFlQRV9VSU5UMTY6IHRoaXMuYWNjZXNzID0gbmV3IFVpbnQxNkFycmF5KGRhdGEp
LnN1YmFycmF5KG9mZnNldCAvIDIpOyBicmVhazsKKyAgICAgICAgY2FzZSByckRlZnMuSW5kZXhU
eXBlLklOREVYVFlQRV9VSU5UMzI6IHRoaXMuYWNjZXNzID0gbmV3IFVpbnQzMkFycmF5KGRhdGEp
LnN1YmFycmF5KG9mZnNldCAvIDQpOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3
IEVycm9yKCdJbnZhbGlkIHR5cGU6ICcgKyB0eXBlKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBy
ZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci5EcmF3SW5kaWNlcy5wcm90b3R5cGUucmVh
ZEluZGV4QXJyYXkgPSBmdW5jdGlvbihpbmRleCkgeyByZXR1cm4gdGhpcy5hY2Nlc3NbaW5kZXhd
OyB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtyclJlbmRlcmVyLlByaW1p
dGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1FbGVtZW50cwor
ICogQHBhcmFtIHsobnVtYmVyfHJyUmVuZGVyZXIuRHJhd0luZGljZXMpfSBpbmRpY2VzCisgKi8K
K3JyUmVuZGVyZXIuUHJpbWl0aXZlTGlzdCA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUsIG51bUVs
ZW1lbnRzLCBpbmRpY2VzKSB7CisgICAgLyoqIEB0eXBlIHtyclJlbmRlcmVyLlByaW1pdGl2ZVR5
cGV9ICovIHRoaXMubV9wcmltaXRpdmVUeXBlID0gcHJpbWl0aXZlVHlwZTsKKyAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy5tX251bUVsZW1lbnRzID0gbnVtRWxlbWVudHM7CisgICAgaWYg
KHR5cGVvZiBpbmRpY2VzID09ICdudW1iZXInKSB7CisgICAgICAgIC8vICE8IHByaW1pdGl2ZSBs
aXN0IGZvciBkcmF3QXJyYXlzLWxpa2UgY2FsbAorICAgICAgICB0aGlzLm1faW5kaWNlcyA9IG51
bGw7CisgICAgICAgIHRoaXMubV9pbmRleFR5cGUgPSBudWxsOworICAgICAgICB0aGlzLm1fYmFz
ZVZlcnRleCA9IGluZGljZXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gITwgcHJpbWl0aXZl
IGxpc3QgZm9yIGRyYXdFbGVtZW50cy1saWtlIGNhbGwKKyAgICAgICAgdGhpcy5tX2luZGljZXMg
PSBpbmRpY2VzOworICAgICAgICB0aGlzLm1faW5kZXhUeXBlID0gaW5kaWNlcy5pbmRleFR5cGU7
CisgICAgICAgIHRoaXMubV9iYXNlVmVydGV4ID0gaW5kaWNlcy5iYXNlVmVydGV4OworICAgIH0K
KyAgICB0aGlzLm1faXRlcmF0b3IgPSAwOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0g
ZWxlbWVudE5keAorICogQHJldHVybiB7bnVtYmVyfQorICovCityclJlbmRlcmVyLlByaW1pdGl2
ZUxpc3QucHJvdG90eXBlLmdldEluZGV4ID0gZnVuY3Rpb24oZWxlbWVudE5keCkgeworICAgIGlm
ICh0aGlzLm1faW5kaWNlcykgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLm1fYmFzZVZlcnRl
eCArIHRoaXMubV9pbmRpY2VzLnJlYWRJbmRleEFycmF5KGVsZW1lbnROZHgpOworICAgICAgICBp
ZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmRleCBtdXN0IG5v
dCBiZSBuZWdhdGl2ZScpOworCisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9IGVsc2UKKyAg
ICAgICAgcmV0dXJuIHRoaXMubV9iYXNlVmVydGV4ICsgZWxlbWVudE5keDsKK307CisKKy8qKgor
ICogQHBhcmFtIHtudW1iZXJ9IGVsZW1lbnROZHgKKyAqIEBwYXJhbSB7bnVtYmVyfSByZXN0YXJ0
SW5kZXgKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK3JyUmVuZGVyZXIuUHJpbWl0aXZlTGlz
dC5wcm90b3R5cGUuaXNSZXN0YXJ0SW5kZXggPSBmdW5jdGlvbihlbGVtZW50TmR4LCByZXN0YXJ0
SW5kZXgpIHsKKyAgICAvLyBpbXBsaWNpdCBpbmRleCBvciBleHBsaWNpdCBpbmRleCAod2l0aG91
dCBiYXNlIHZlcnRleCkgZXF1YWxzIHJlc3RhcnQKKyAgICBpZiAodGhpcy5tX2luZGljZXMpCisg
ICAgICAgIHJldHVybiB0aGlzLm1faW5kaWNlcy5yZWFkSW5kZXhBcnJheShlbGVtZW50TmR4KSA9
PSByZXN0YXJ0SW5kZXg7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZWxlbWVudE5keCA9PSBy
ZXN0YXJ0SW5kZXg7Cit9OworCisvKioKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5k
ZXJlci5QcmltaXRpdmVMaXN0LnByb3RvdHlwZS5nZXROdW1FbGVtZW50cyA9IGZ1bmN0aW9uKCkg
e3JldHVybiB0aGlzLm1fbnVtRWxlbWVudHM7fTsKKworLyoqCisgKiBAcmV0dXJuIHtyclJlbmRl
cmVyLlByaW1pdGl2ZVR5cGV9CisgKi8KK3JyUmVuZGVyZXIuUHJpbWl0aXZlTGlzdC5wcm90b3R5
cGUuZ2V0UHJpbWl0aXZlVHlwZSA9IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLm1fcHJpbWl0aXZl
VHlwZTt9OworCisvKioKKyAqIEByZXR1cm4gez9yckRlZnMuSW5kZXhUeXBlfQorICovCityclJl
bmRlcmVyLlByaW1pdGl2ZUxpc3QucHJvdG90eXBlLmdldEluZGV4VHlwZSA9IGZ1bmN0aW9uKCkg
e3JldHVybiB0aGlzLm1faW5kZXhUeXBlO307CisKKy8qKgorICogR2VuZXJhdGUgYSBwcmltaXRp
dmUgZnJvbSBpbmRpY2VzCisgKiBAcGFyYW0ge2Jvb2xlYW49fSByZXNldCBSZXN0YXJ0IGdlbmVy
YXRpbmcgcHJpbWl0aXZlcy4gRGVmYXVsdCBmYWxzZQorICogQHJldHVybiB7QXJyYXk8bnVtYmVy
Pn0KKyAqLworcnJSZW5kZXJlci5QcmltaXRpdmVMaXN0LnByb3RvdHlwZS5nZXROZXh0UHJpbWl0
aXZlID0gZnVuY3Rpb24ocmVzZXQpIHsKKyAgICBpZiAocmVzZXQpCisgICAgICAgIHRoaXMubV9p
dGVyYXRvciA9IDA7CisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIHZhciBpID0gdGhpcy5tX2l0
ZXJhdG9yOworICAgIHN3aXRjaCAodGhpcy5tX3ByaW1pdGl2ZVR5cGUpIHsKKyAgICAgICAgY2Fz
ZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTOgorICAgICAgICAgICAgaWYgKHRo
aXMubV9pdGVyYXRvciArIDMgPD0gdGhpcy5tX251bUVsZW1lbnRzKSB7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gW2ksIGkgKyAxLCBpICsgMl07CisgICAgICAgICAgICAgICAgdGhpcy5tX2l0
ZXJhdG9yICs9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuVFJJQU5HTEVfU1RSSVA6CisgICAgICAgICAg
ICBpZiAodGhpcy5tX2l0ZXJhdG9yICsgMyA8PSB0aGlzLm1fbnVtRWxlbWVudHMpIHsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBbaSwgaSArIDEsIGkgKyAyXTsKKyAgICAgICAgICAgICAgICB0
aGlzLm1faXRlcmF0b3IgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5UUklBTkdMRV9GQU46CisgICAg
ICAgICAgICBpZiAodGhpcy5tX2l0ZXJhdG9yICsgMyA8PSB0aGlzLm1fbnVtRWxlbWVudHMpIHsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBbMCwgaSArIDEsIGkgKyAyXTsKKyAgICAgICAgICAg
ICAgICB0aGlzLm1faXRlcmF0b3IgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5MSU5FUzoKKyAgICAg
ICAgICAgIGlmICh0aGlzLm1faXRlcmF0b3IgKyAyIDw9IHRoaXMubV9udW1FbGVtZW50cykgewor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtpLCBpICsgMV07CisgICAgICAgICAgICAgICAgdGhp
cy5tX2l0ZXJhdG9yICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuTElORV9TVFJJUDoKKyAgICAgICAg
ICAgIGlmICh0aGlzLm1faXRlcmF0b3IgKyAyIDw9IHRoaXMubV9udW1FbGVtZW50cykgeworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IFtpLCBpICsgMV07CisgICAgICAgICAgICAgICAgdGhpcy5t
X2l0ZXJhdG9yICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSByclJlbmRlcmVyLlByaW1pdGl2ZVR5cGUuTElORV9MT09QOgorICAgICAgICAgICAg
aWYgKHRoaXMubV9pdGVyYXRvciA9PSB0aGlzLm1fbnVtRWxlbWVudHMpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBpZiAodGhpcy5tX2l0ZXJhdG9yICsgMiA8PSB0aGlzLm1f
bnVtRWxlbWVudHMpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gW2ksIGkgKyAxXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBbaSwgMF07CisgICAgICAgICAg
ICB0aGlzLm1faXRlcmF0b3IgKz0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5QT0lOVFM6CisgICAgICAgICAgICBpZiAodGhpcy5t
X2l0ZXJhdG9yID09IHRoaXMubV9udW1FbGVtZW50cykKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBbaV07CisgICAgICAg
ICAgICB0aGlzLm1faXRlcmF0b3IgKz0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcmltaXRp
dmUgdHlwZTogJyArIGRlU3RyaW5nLmVudW1Ub1N0cmluZyhyclJlbmRlcmVyLlByaW1pdGl2ZVR5
cGUsIHRoaXMubV9wcmltaXRpdmVUeXBlKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K307CisKKy8qKgorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLlJlbmRlclN0YXRlfSBzdGF0ZQor
ICogQHBhcmFtIHtyclJlbmRlcmVyLlJlbmRlclRhcmdldH0gcmVuZGVyVGFyZ2V0CisgKiBAcGFy
YW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gZnJhZ21lbnRzIEZyYWdt
ZW50cyB0byB3cml0ZQorKi8KK3JyUmVuZGVyZXIud3JpdGVGcmFnbWVudHMgPSBmdW5jdGlvbihz
dGF0ZSwgcmVuZGVyVGFyZ2V0LCBmcmFnbWVudHMpIHsKKyAgICAvKiBUT0RPOiBBZGQgYmxlbmRp
bmcsIGRlcHRoLCBzdGVuY2lsIC4uLiAqLworICAgIHZhciBjb2xvcmJ1ZmZlciA9IHJlbmRlclRh
cmdldC5jb2xvckJ1ZmZlcnNbMF0ucmF3KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFn
bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGZyYWdtZW50ID0gZnJhZ21lbnRzW2ld
OworICAgICAgICBjb2xvcmJ1ZmZlci5zZXRQaXhlbChmcmFnbWVudC52YWx1ZSwgMCwgZnJhZ21l
bnQucGl4ZWxDb29yZFswXSwgZnJhZ21lbnQucGl4ZWxDb29yZFsxXSk7CisgICAgfQorCit9Owor
CisvKioKKyAqIEBwYXJhbSB7cnJSZW5kZXJTdGF0ZS5SZW5kZXJTdGF0ZX0gcmVuZGVyU3RhdGUK
KyAqIEBwYXJhbSB7cnJSZW5kZXJlci5SZW5kZXJUYXJnZXR9IHJlbmRlclRhcmdldAorICogQHBh
cmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IGZyYWdtZW50cyBGcmFn
bWVudHMgdG8gd3JpdGUKKyovCityclJlbmRlcmVyLndyaXRlRnJhZ21lbnRzMiA9IGZ1bmN0aW9u
KHJlbmRlclN0YXRlLCByZW5kZXJUYXJnZXQsIGZyYWdtZW50cykgeworICAgIC8qCit2b2lkIEZy
YWdtZW50UHJvY2Vzc29yOjpyZW5kZXIgKGNvbnN0IHJyOjpNdWx0aXNhbXBsZVBpeGVsQnVmZmVy
QWNjZXNzJiBtc0NvbG9yQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBycjo6TXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2VzcyYgbXNEZXB0aEJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnI6Ok11bHRpc2FtcGxlUGl4ZWxC
dWZmZXJBY2Nlc3MmIG1zU3RlbmNpbEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRnJhZ21lbnQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVu
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1GcmFnbWVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY2VUeXBlIGZyYWdtZW50RmFjaW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFnbWVudE9wZXJhdGlvblN0
YXRlJiBzdGF0ZSkKKyovCisKKyAgICAvKiogQGNvbnN0ICovIHZhciBmcmFnbWVudEZhY2luZyA9
IHJyRGVmcy5GYWNlVHlwZS5GQUNFVFlQRV9GUk9OVDsKKyAgICB2YXIgY29sb3JCdWZmZXIgPSBy
ZW5kZXJUYXJnZXQuY29sb3JCdWZmZXJzWzBdLnJhdygpOworICAgIHZhciBkZXB0aEJ1ZmZlciA9
IHJlbmRlclRhcmdldC5kZXB0aEJ1ZmZlci5yYXcoKTsKKyAgICB2YXIgc3RlbmNpbEJ1ZmZlciA9
IHJlbmRlclRhcmdldC5zdGVuY2lsQnVmZmVyLnJhdygpOworICAgIHZhciBzdGF0ZSA9IHJlbmRl
clN0YXRlLmZyYWdPcHM7CisKKyAgICB2YXIgaGFzRGVwdGggPSBkZXB0aEJ1ZmZlci5nZXRXaWR0
aCgpID4gMCAmJiBkZXB0aEJ1ZmZlci5nZXRIZWlnaHQoKSA+IDAgJiYgZGVwdGhCdWZmZXIuZ2V0
RGVwdGgoKSA+IDA7CisgICAgdmFyIGhhc1N0ZW5jaWwgPSBzdGVuY2lsQnVmZmVyLmdldFdpZHRo
KCkgPiAwICYmIHN0ZW5jaWxCdWZmZXIuZ2V0SGVpZ2h0KCkgPiAwICYmIHN0ZW5jaWxCdWZmZXIu
Z2V0RGVwdGgoKSA+IDA7CisgICAgdmFyIGRvRGVwdGhUZXN0ID0gaGFzRGVwdGggJiYgc3RhdGUu
ZGVwdGhUZXN0RW5hYmxlZDsKKyAgICB2YXIgZG9TdGVuY2lsVGVzdCA9IGhhc1N0ZW5jaWwgJiYg
c3RhdGUuc3RlbmNpbFRlc3RFbmFibGVkOworCisgICAgdmFyIGNvbG9yYnVmZmVyQ2xhc3MgPSB0
Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MoY29sb3JCdWZmZXIuZ2V0Rm9ybWF0KCku
dHlwZSk7CisgICAgdmFyIGZyYWdtZW50RGF0YVR5cGUgPSByckdlbmVyaWNWZWN0b3IuR2VuZXJp
Y1ZlY1R5cGUuRkxPQVQ7CisgICAgc3dpdGNoIChjb2xvcmJ1ZmZlckNsYXNzKSB7CisgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9JTlRFR0VSOgorICAg
ICAgICAgICAgZnJhZ21lbnREYXRhVHlwZSA9IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlw
ZS5JTlQzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4
dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9JTlRFR0VSOgorICAgICAgICAgICAgZnJhZ21lbnRE
YXRhVHlwZSA9IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5VSU5UMzI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoISgoIWhhc0RlcHRoIHx8IGNvbG9yQnVmZmVy
LmdldFdpZHRoKCkgPT0gZGVwdGhCdWZmZXIuZ2V0V2lkdGgoKSkgJiYgKCFoYXNTdGVuY2lsIHx8
IGNvbG9yQnVmZmVyLmdldFdpZHRoKCkgPT0gc3RlbmNpbEJ1ZmZlci5nZXRXaWR0aCgpKSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignQXR0YWNobWVudCBtdXN0IGhhdmUgdGhlIHNhbWUgd2lk
dGgnKTsKKyAgICBpZiAoISgoIWhhc0RlcHRoIHx8IGNvbG9yQnVmZmVyLmdldEhlaWdodCgpID09
IGRlcHRoQnVmZmVyLmdldEhlaWdodCgpKSAmJiAoIWhhc1N0ZW5jaWwgfHwgY29sb3JCdWZmZXIu
Z2V0SGVpZ2h0KCkgPT0gc3RlbmNpbEJ1ZmZlci5nZXRIZWlnaHQoKSkpKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ0F0dGFjaG1lbnQgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodCcpOworICAg
IGlmICghKCghaGFzRGVwdGggfHwgY29sb3JCdWZmZXIuZ2V0RGVwdGgoKSA9PSBkZXB0aEJ1ZmZl
ci5nZXREZXB0aCgpKSAmJiAoIWhhc1N0ZW5jaWwgfHwgY29sb3JCdWZmZXIuZ2V0RGVwdGgoKSA9
PSBzdGVuY2lsQnVmZmVyLmdldERlcHRoKCkpKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdB
dHRhY2htZW50IG11c3QgaGF2ZSB0aGUgc2FtZSBkZXB0aCcpOworCisgICAgdmFyIHN0ZW5jaWxT
dGF0ZSA9IHN0YXRlLnN0ZW5jaWxTdGF0ZXNbZnJhZ21lbnRGYWNpbmddOworICAgIHZhciBjb2xv
ck1hc2tGYWN0b3IgPSBbc3RhdGUuY29sb3JNYXNrWzBdID8gMSA6IDAsIHN0YXRlLmNvbG9yTWFz
a1sxXSA/IDEgOiAwLCBzdGF0ZS5jb2xvck1hc2tbMl0gPyAxIDogMCwgc3RhdGUuY29sb3JNYXNr
WzNdID8gMSA6IDBdOworICAgIHZhciBjb2xvck1hc2tOZWdhdGlvbkZhY3RvciA9IFtzdGF0ZS5j
b2xvck1hc2tbMF0gPyBmYWxzZSA6IHRydWUsIHN0YXRlLmNvbG9yTWFza1sxXSA/IGZhbHNlIDog
dHJ1ZSwgc3RhdGUuY29sb3JNYXNrWzJdID8gZmFsc2UgOiB0cnVlLCBzdGF0ZS5jb2xvck1hc2tb
M10gPyBmYWxzZSA6IHRydWVdOworICAgIHZhciBzUkdCVGFyZ2V0ID0gc3RhdGUuc1JHQkVuYWJs
ZWQgJiYgY29sb3JCdWZmZXIuZ2V0Rm9ybWF0KCkuaXNTUkdCKCk7CisKKyAgICAvLyBTY2lzc29y
IHRlc3QuCisKKyAgICBpZiAoc3RhdGUuc2Npc3NvclRlc3RFbmFibGVkKQorICAgICAgICByckZy
YWdtZW50T3BlcmF0aW9ucy5leGVjdXRlU2Npc3NvclRlc3QoZnJhZ21lbnRzLCBzdGF0ZS5zY2lz
c29yUmVjdGFuZ2xlKTsKKworICAgIC8vIFN0ZW5jaWwgdGVzdC4KKworICAgIGlmIChkb1N0ZW5j
aWxUZXN0KSB7CisgICAgICAgIHJyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVTdGVuY2lsQ29t
cGFyZShmcmFnbWVudHMsIHN0ZW5jaWxTdGF0ZSwgc3RhdGUubnVtU3RlbmNpbEJpdHMsIHN0ZW5j
aWxCdWZmZXIpOworICAgICAgICByckZyYWdtZW50T3BlcmF0aW9ucy5leGVjdXRlU3RlbmNpbFNG
YWlsKGZyYWdtZW50cywgc3RlbmNpbFN0YXRlLCBzdGF0ZS5udW1TdGVuY2lsQml0cywgc3RlbmNp
bEJ1ZmZlcik7CisgICAgfQorCisgICAgLy8gRGVwdGggdGVzdC4KKyAgICAvLyBcbm90ZSBDdXJy
ZW50IHZhbHVlIG9mIGlzQWxpdmUgaXMgbmVlZGVkIGZvciBkcFBhc3MgYW5kIGRwRmFpbCwgc28g
aXQncyBvbmx5IHVwZGF0ZWQgYWZ0ZXIgdGhlbSBhbmQgbm90IHJpZ2h0IGFmdGVyIGRlcHRoIHRl
c3QuCisKKyAgICBpZiAoZG9EZXB0aFRlc3QpIHsKKyAgICAgICAgcnJGcmFnbWVudE9wZXJhdGlv
bnMuZXhlY3V0ZURlcHRoQ29tcGFyZShmcmFnbWVudHMsIHN0YXRlLmRlcHRoRnVuYywgZGVwdGhC
dWZmZXIpOworCisgICAgICAgIGlmIChzdGF0ZS5kZXB0aE1hc2spCisgICAgICAgICAgICByckZy
YWdtZW50T3BlcmF0aW9ucy5leGVjdXRlRGVwdGhXcml0ZShmcmFnbWVudHMsIGRlcHRoQnVmZmVy
KTsKKyAgICB9CisKKyAgICAvLyBEbyBkcEZhaWwgYW5kIGRwUGFzcyBzdGVuY2lsIHdyaXRlcy4K
KworICAgIGlmIChkb1N0ZW5jaWxUZXN0KQorICAgICAgICByckZyYWdtZW50T3BlcmF0aW9ucy5l
eGVjdXRlU3RlbmNpbERwRmFpbEFuZFBhc3MoZnJhZ21lbnRzLCBzdGVuY2lsU3RhdGUsIHN0YXRl
Lm51bVN0ZW5jaWxCaXRzLCBzdGVuY2lsQnVmZmVyKTsKKworICAgIC8vIEtpbGwgdGhlIHNhbXBs
ZXMgdGhhdCBmYWlsZWQgZGVwdGggdGVzdC4KKworICAgIGlmIChkb0RlcHRoVGVzdCkgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgIGZyYWdtZW50c1tpXS5pc0FsaXZlID0gZnJhZ21lbnRzW2ldLmlzQWxpdmUgJiYgZnJhZ21l
bnRzW2ldLmRlcHRoUGFzc2VkOworICAgIH0KKworICAgIC8vIFBhaW50IGZyYWdtZW50cyB0byB0
YXJnZXQKKworICAgIHN3aXRjaCAoZnJhZ21lbnREYXRhVHlwZSkgeworICAgICAgICBjYXNlIHJy
R2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVDoKKyAgICAgICAgICAgIC8vIEJsZW5k
IGNhbGN1bGF0aW9uIC0gb25seSBpZiB1c2luZyBibGVuZC4KKyAgICAgICAgICAgIGlmIChzdGF0
ZS5ibGVuZE1vZGUgPT0gcnJSZW5kZXJTdGF0ZS5CbGVuZE1vZGUuU1RBTkRBUkQpIHsKKyAgICAg
ICAgICAgICAgICAvLyBQdXQgZHN0IGNvbG9yIHRvIHJlZ2lzdGVyLCBkb2luZyBzcmdiLXRvLWxp
bmVhciBjb252ZXJzaW9uIGlmIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIg
ZnJhZyA9IGZyYWdtZW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWcuaXNBbGl2
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRzdENvbG9yID0gY29sb3JCdWZmZXIu
Z2V0UGl4ZWwoMCwgZnJhZy5waXhlbENvb3JkWzBdLCBmcmFnLnBpeGVsQ29vcmRbMV0pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPOiBDaGVjayBmcmFnLnZhbHVlIGFuZCBmcmFn
LnZhbHVlMSB0eXBlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgZnJhZy5jbGFtcGVkQmxl
bmRTcmNDb2xvciA9IGRlTWF0aC5jbGFtcFZlY3RvcihmcmFnLnZhbHVlLCAwLCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYWcuY2xhbXBlZEJsZW5kU3JjMUNvbG9yID0gZGVNYXRoLmNs
YW1wVmVjdG9yKGZyYWcudmFsdWUxLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YWcuY2xhbXBlZEJsZW5kRHN0Q29sb3IgPSBkZU1hdGguY2xhbXBWZWN0b3Ioc1JHQlRhcmdldCA/
IHRjdVRleHR1cmUuc1JHQlRvTGluZWFyKGRzdENvbG9yKSA6IGRzdENvbG9yLCAwLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIENhbGN1bGF0ZSBibGVuZCBmYWN0b3JzIHRvIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAg
IHJyRnJhZ21lbnRPcGVyYXRpb25zLmV4ZWN1dGVCbGVuZEZhY3RvckNvbXB1dGVSR0IoZnJhZ21l
bnRzLCBzdGF0ZS5ibGVuZENvbG9yLCBzdGF0ZS5ibGVuZFJHQlN0YXRlKTsKKyAgICAgICAgICAg
ICAgICByckZyYWdtZW50T3BlcmF0aW9ucy5leGVjdXRlQmxlbmRGYWN0b3JDb21wdXRlQShmcmFn
bWVudHMsIHN0YXRlLmJsZW5kQ29sb3IsIHN0YXRlLmJsZW5kQVN0YXRlKTsKKworICAgICAgICAg
ICAgICAgIC8vIENvbXB1dGUgYmxlbmRlZCBjb2xvci4KKyAgICAgICAgICAgICAgICByckZyYWdt
ZW50T3BlcmF0aW9ucy5leGVjdXRlQmxlbmQoZnJhZ21lbnRzLCBzdGF0ZS5ibGVuZFJHQlN0YXRl
LCBzdGF0ZS5ibGVuZEFTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIE5vdCB1c2luZyBibGVuZCAtIGp1c3QgcHV0IHZhbHVlcyB0byByZWdpc3RlciBhcy1p
cy4KKworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhZ21lbnRzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBmcmFnID0gZnJhZ21lbnRzW2ldOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZnJhZy5pc0FsaXZlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFnLmJsZW5kZWRSR0IgPSBkZU1hdGguc3dpenpsZShmcmFnLnZhbHVlLCBbMCwg
MSwgMl0pOworICAgICAgICAgICAgICAgICAgICAgICAgZnJhZy5ibGVuZGVkQSA9IGZyYWcudmFs
dWVbM107CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIHdyaXRlIHRoZSBjb2xvcnMgdG8gdGhl
IGNvbG9yIGJ1ZmZlci4KKworICAgICAgICAgICAgaWYgKHN0YXRlLmNvbG9yTWFza1swXSAmJiBz
dGF0ZS5jb2xvck1hc2tbMV0gJiYgc3RhdGUuY29sb3JNYXNrWzJdICYmIHN0YXRlLmNvbG9yTWFz
a1szXSkgeworICAgICAgICAgICAgICAgIC8qIFRPRE86IEFkZCBxdWljayBwYXRoICovCisgICAg
ICAgICAgICAgICAgLy8gaWYgKGNvbG9yQnVmZmVyLmdldEZvcm1hdCgpLmlzRXF1YWwobmV3IHRj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VU
ZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpKSkKKyAgICAgICAgICAgICAgICAvLyAgICAg
ZXhlY3V0ZVJHQkE4Q29sb3JXcml0ZShmcmFnbWVudHMsIGNvbG9yQnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICAvLyBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJyRnJhZ21lbnRPcGVyYXRpb25z
LmV4ZWN1dGVDb2xvcldyaXRlKGZyYWdtZW50cywgc1JHQlRhcmdldCwgY29sb3JCdWZmZXIpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5jb2xvck1hc2tbMF0gfHwgc3RhdGUuY29sb3JN
YXNrWzFdIHx8IHN0YXRlLmNvbG9yTWFza1syXSB8fCBzdGF0ZS5jb2xvck1hc2tbM10pCisgICAg
ICAgICAgICAgICAgcnJGcmFnbWVudE9wZXJhdGlvbnMuZXhlY3V0ZU1hc2tlZENvbG9yV3JpdGUo
ZnJhZ21lbnRzLCBjb2xvck1hc2tGYWN0b3IsIGNvbG9yTWFza05lZ2F0aW9uRmFjdG9yLCBzUkdC
VGFyZ2V0LCBjb2xvckJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5JTlQzMjoKKyAgICAgICAgICAgIC8vIFdy
aXRlIGZyYWdtZW50cworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFnbWVudHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgZnJhZyA9IGZyYWdtZW50c1tpXTsK
KyAgICAgICAgICAgICAgICBpZiAoZnJhZy5pc0FsaXZlKSB7CisgICAgICAgICAgICAgICAgICAg
IGZyYWcuc2lnbmVkVmFsdWUgPSBmcmFnLnZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0YXRlLmNvbG9yTWFza1swXSB8fCBzdGF0ZS5j
b2xvck1hc2tbMV0gfHwgc3RhdGUuY29sb3JNYXNrWzJdIHx8IHN0YXRlLmNvbG9yTWFza1szXSkK
KyAgICAgICAgICAgICAgICByckZyYWdtZW50T3BlcmF0aW9ucy5leGVjdXRlU2lnbmVkVmFsdWVX
cml0ZShmcmFnbWVudHMsIHN0YXRlLmNvbG9yTWFzaywgY29sb3JCdWZmZXIpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUu
VUlOVDMyOgorICAgICAgICAgICAgLy8gV3JpdGUgZnJhZ21lbnRzCisgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAg
dmFyIGZyYWcgPSBmcmFnbWVudHNbaV07CisgICAgICAgICAgICAgICAgaWYgKGZyYWcuaXNBbGl2
ZSkgeworICAgICAgICAgICAgICAgICAgICBmcmFnLnVuc2lnbmVkVmFsdWUgPSBmcmFnLnZhbHVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0
YXRlLmNvbG9yTWFza1swXSB8fCBzdGF0ZS5jb2xvck1hc2tbMV0gfHwgc3RhdGUuY29sb3JNYXNr
WzJdIHx8IHN0YXRlLmNvbG9yTWFza1szXSkKKyAgICAgICAgICAgICAgICByckZyYWdtZW50T3Bl
cmF0aW9ucy5leGVjdXRlVW5zaWduZWRWYWx1ZVdyaXRlKGZyYWdtZW50cywgc3RhdGUuY29sb3JN
YXNrLCBjb2xvckJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgZnJhZ21lbnQgZGF0
YSB0eXBlOicgKyBmcmFnbWVudERhdGFUeXBlKTsKKyAgICB9Cit9OworCisvKioKKyAqIERldGVy
bWluZXMgdGhlIGluZGV4IG9mIHRoZSBjb3JyZXNwb25kaW5nIHZlcnRleCBhY2NvcmRpbmcgdG8g
dG9wL3JpZ2h0IGNvbmRpdGlvbnMuCisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVG9wCisgKiBAcGFy
YW0ge2Jvb2xlYW59IGlzUmlnaHQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJl
ci5nZXRJbmRleE9mQ29ybmVyID0gZnVuY3Rpb24oaXNUb3AsIGlzUmlnaHQsIHZlcnRleFBhY2tl
dHMpIHsKKyAgICB2YXIgeCA9IG51bGw7CisgICAgdmFyIHkgPSBudWxsOworCisgICAgdmFyIHhj
cml0ZXJpYSA9IGlzUmlnaHQgPyBNYXRoLm1heCA6IE1hdGgubWluOworICAgIHZhciB5Y3JpdGVy
aWEgPSBpc1RvcCA/IE1hdGgubWF4IDogTWF0aC5taW47CisKKyAgICAvLyBEZXRlcm1pbmUgY29y
bmVyIHZhbHVlcworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmVydGV4UGFja2V0cy5sZW5ndGg7
IGkrKykgeworICAgICAgICB4ID0geCAhPSBudWxsID8geGNyaXRlcmlhKHZlcnRleFBhY2tldHNb
aV0ucG9zaXRpb25bMF0sIHgpIDogdmVydGV4UGFja2V0c1tpXS5wb3NpdGlvblswXTsKKyAgICAg
ICAgeSA9IHkgIT0gbnVsbCA/IHljcml0ZXJpYSh2ZXJ0ZXhQYWNrZXRzW2ldLnBvc2l0aW9uWzFd
LCB5KSA6IHZlcnRleFBhY2tldHNbaV0ucG9zaXRpb25bMV07CisgICAgfQorCisgICAgLy8gU2Vh
cmNoIGZvciBtYXRjaGluZyB2ZXJ0ZXgKKyAgICBmb3IgKHZhciB2ID0gMDsgdiA8IHZlcnRleFBh
Y2tldHMubGVuZ3RoOyB2KyspCisgICAgICAgIGlmICh2ZXJ0ZXhQYWNrZXRzW3ZdLnBvc2l0aW9u
WzBdID09IHggJiYKKyAgICAgICAgICAgIHZlcnRleFBhY2tldHNbdl0ucG9zaXRpb25bMV0gPT0g
eSkKKyAgICAgICAgICAgIHJldHVybiB2OworCisgICAgdGhyb3cgbmV3IEVycm9yKCdDb3JuZXIg
bm90IGZvdW5kJyk7Cit9OworCisvKioKKyAqIENoZWNrIHRoYXQgcG9pbnQgaXMgaW4gdGhlIGNs
aXBwaW5nIHZvbHVtZQorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5
CisgKiBAcGFyYW0ge251bWJlcn0gegorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLldpbmRvd1Jl
Y3RhbmdsZX0gcmVjdAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworcnJSZW5kZXJlci5jbGlw
VGVzdCA9IGZ1bmN0aW9uKHgsIHksIHosIHJlY3QpIHsKKyAgICB4ID0gTWF0aC5yb3VuZCh4KTsK
KyAgICB5ID0gTWF0aC5yb3VuZCh5KTsKKyAgICBpZiAoIWRlTWF0aC5kZUluQm91bmRzMzIoeCwg
cmVjdC5sZWZ0LCByZWN0LmxlZnQgKyByZWN0LndpZHRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVNYXRoLmRlSW5Cb3VuZHMzMih5LCByZWN0LmJvdHRvbSwgcmVjdC5ib3R0
b20gKyByZWN0LmhlaWdodCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoeiA8IDAg
fHwgeiA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK307CisK
Ky8vIFJhc3Rlcml6ZXIgY29uZmlndXJhdGlvbgorcnJSZW5kZXJlci5SQVNURVJJWkVSX1NVQlBJ
WEVMX0JJVFMgPSA4OworcnJSZW5kZXJlci5SQVNURVJJWkVSX01BWF9TQU1QTEVTX1BFUl9GUkFH
TUVOVCA9IDE2OworCisvLyBSZWZlcmVuY2VkIGZyb20gcnJSYXN0ZXJpemVyLmhwcAorCisvKioK
KyAqIEdldCBjb3ZlcmFnZSBiaXQgdmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1TYW1wbGVz
CisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7
bnVtYmVyfSBzYW1wbGVOZHgKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci5n
ZXRDb3ZlcmFnZUJpdCA9IGZ1bmN0aW9uKG51bVNhbXBsZXMsIHgsIHksIHNhbXBsZU5keCkgewor
ICAgIHZhciBtYXhTYW1wbGVzID0gMTY7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhtYXhTYW1wbGVz
ID49IHJyUmVuZGVyZXIuUkFTVEVSSVpFUl9NQVhfU0FNUExFU19QRVJfRlJBR01FTlQsICdtYXhT
YW1wbGVzIHNob3VsZCBub3QgZ3JlYXRlciB0aGFuICcgKyByclJlbmRlcmVyLlJBU1RFUklaRVJf
TUFYX1NBTVBMRVNfUEVSX0ZSQUdNRU5ULCBmYWxzZSwgdHJ1ZSk7CisgICAgYXNzZXJ0TXNnT3B0
aW9ucyhkZU1hdGguZGVJblJhbmdlMzIobnVtU2FtcGxlcywgMSwgbWF4U2FtcGxlcykgJiYgZGVN
YXRoLmRlSW5Cb3VuZHMzMih4LCAwLCAyKSAmJiBkZU1hdGguZGVJbkJvdW5kczMyKHksIDAsIDIp
LCAnbnVtU2FtcGxlcywgeCBvciB5IG5vdCBpbiBib3VuZCcsIGZhbHNlLCB0cnVlKTsKKyAgICBy
ZXR1cm4gMSA8PCAoKHggKiAyICsgeSkgKiBudW1TYW1wbGVzICsgc2FtcGxlTmR4KTsKK307CisK
Ky8qKgorICogR2V0IGFsbCBzYW1wbGUgYml0cyBmb3IgZnJhZ21lbnQKKyAqIEBwYXJhbSB7bnVt
YmVyfSBudW1TYW1wbGVzCisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9
IHkKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci5nZXRDb3ZlcmFnZUZyYWdt
ZW50U2FtcGxlQml0cyA9IGZ1bmN0aW9uKG51bVNhbXBsZXMsIHgsIHkpIHsKKyAgICBhc3NlcnRN
c2dPcHRpb25zKGRlTWF0aC5kZUluQm91bmRzMzIoeCwgMCwgMikgJiYgZGVNYXRoLmRlSW5Cb3Vu
ZHMzMih5LCAwLCAyKSwgJ3ggb3IgeSBpcyBub3QgaW4gYm91bmQgMCB0byAyJywgZmFsc2UsIHRy
dWUpOworICAgIHZhciBmcmFnTWFzayA9ICgxIDw8IG51bVNhbXBsZXMpIC0gMTsKKyAgICByZXR1
cm4gZnJhZ01hc2sgPDwgKHggKiAyICsgeSkgKiBudW1TYW1wbGVzOworfTsKKworLyoqCisgKiBT
ZXQgY292ZXJhZ2UgYml0IGluIGNvdmVyYWdlIG1hc2sKKyAqIEBwYXJhbSB7bnVtYmVyfSBtYXNr
CisgKiBAcGFyYW0ge251bWJlcn0gbnVtU2FtcGxlcworICogQHBhcmFtIHtudW1iZXJ9IHgKKyAq
IEBwYXJhbSB7bnVtYmVyfSB5CisgKiBAcGFyYW0ge251bWJlcn0gc2FtcGxlTmR4CisgKiBAcGFy
YW0ge251bWJlcn0gdmFsCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3JyUmVuZGVyZXIuc2V0
Q292ZXJhZ2VWYWx1ZSA9IGZ1bmN0aW9uKG1hc2ssIG51bVNhbXBsZXMsIHgsIHksIHNhbXBsZU5k
eCwgdmFsKSB7CisgICAgdmFyIGJpdCA9IHJyUmVuZGVyZXIuZ2V0Q292ZXJhZ2VCaXQobnVtU2Ft
cGxlcywgeCwgeSwgc2FtcGxlTmR4KTsKKyAgICByZXR1cm4gdmFsID8gKG1hc2sgfCBiaXQpIDog
KG1hc2sgJiB+Yml0KTsKK307CisKKy8qKgorICogVGVzdCBpZiBhbnkgc2FtcGxlIGZvciBmcmFn
bWVudCBpcyBsaXZlCisgKiBAcGFyYW0ge251bWJlcn0gbWFzaworICogQHBhcmFtIHtudW1iZXJ9
IG51bVNhbXBsZXMKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQor
ICogQHJldHVybiB7bnVtYmVyfQorICovCityclJlbmRlcmVyLmdldENvdmVyYWdlQW55RnJhZ21l
bnRTYW1wbGVMaXZlID0gZnVuY3Rpb24obWFzaywgbnVtU2FtcGxlcywgeCwgeSkgeworICAgIHJl
dHVybiAobWFzayAmIHJyUmVuZGVyZXIuZ2V0Q292ZXJhZ2VGcmFnbWVudFNhbXBsZUJpdHMobnVt
U2FtcGxlcywgeCwgeSkpICE9IDA7Cit9OworCisvLyBSZWZlcmVuY2VkIGZyb20gcnJSYXN0ZXJp
emVyLmNwcAorCisvKioKKyAqIFBpeGVsIGNvb3JkIHRvIHN1YiBwaXhlbCBjb29yZAorICogQHBh
cmFtIHtudW1iZXJ9IHYKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci50b1N1
YnBpeGVsQ29vcmQgPSBmdW5jdGlvbih2KSB7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModiAqICgx
IDw8IHJyUmVuZGVyZXIuUkFTVEVSSVpFUl9TVUJQSVhFTF9CSVRTKSArICh2IDwgMCA/IC0wLjUg
OiAwLjUpKTsKK307CisKKy8qKgorICogRmxvb3Igc3ViIHBpeGVsIGNvb3JkIHRvIHBpeGVsIGNv
b3JkCisgKiBAcGFyYW0ge251bWJlcn0gY29vcmQKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gZmlsbEVk
Z2UKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci5mbG9vclN1YnBpeGVsVG9Q
aXhlbENvb3JkID0gZnVuY3Rpb24oY29vcmQsIGZpbGxFZGdlKSB7CisgICAgaWYgKGNvb3JkID49
IDApCisgICAgICAgIHJldHVybiBNYXRoLnRydW5jKChjb29yZCAtIChmaWxsRWRnZSA/IDEgOiAw
KSkgPj4gcnJSZW5kZXJlci5SQVNURVJJWkVSX1NVQlBJWEVMX0JJVFMpOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoKGNvb3JkIC0gKCgxIDw8IHJyUmVuZGVyZXIuUkFTVEVS
SVpFUl9TVUJQSVhFTF9CSVRTKSAtIChmaWxsRWRnZSA/IDAgOiAxKSkpID4+IHJyUmVuZGVyZXIu
UkFTVEVSSVpFUl9TVUJQSVhFTF9CSVRTKTsKK307CisKKy8qKgorICogQ2VpbCBzdWIgcGl4ZWwg
Y29vcmQgdG8gcGl4ZWwgY29vcmQKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZAorICogQHBhcmFt
IHtib29sZWFufSBmaWxsRWRnZQorICogQHJldHVybiB7bnVtYmVyfQorICovCityclJlbmRlcmVy
LmNlaWxTdWJwaXhlbFRvUGl4ZWxDb29yZCA9IGZ1bmN0aW9uKGNvb3JkLCBmaWxsRWRnZSkgewor
ICAgIGlmIChjb29yZCA+PSAwKQorICAgICAgICByZXR1cm4gTWF0aC50cnVuYygoY29vcmQgKyAo
MSA8PCByclJlbmRlcmVyLlJBU1RFUklaRVJfU1VCUElYRUxfQklUUykgLSAoZmlsbEVkZ2UgPyAw
IDogMSkpID4+IHJyUmVuZGVyZXIuUkFTVEVSSVpFUl9TVUJQSVhFTF9CSVRTKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBNYXRoLnRydW5jKChjb29yZCArIChmaWxsRWRnZSA/IDEgOiAwKSkg
Pj4gcnJSZW5kZXJlci5SQVNURVJJWkVSX1NVQlBJWEVMX0JJVFMpOworfTsKKworLyoqCisgKiBc
YnJpZWYgRWRnZSBmdW5jdGlvbiAtIHJlZmVyZW5jZWQgZnJvbSBzdHJ1Y3QgRWRnZUZ1bmN0aW9u
IGluIHJyUmFzdGVyaXplci5ocHAKKyAqCisgKiBFZGdlIGZ1bmN0aW9uIGNhbiBiZSBldmFsdWF0
ZWQgZm9yIHBvaW50IFAgKGluIGEgZml4ZWQtcG9pbnQgY29vcmRpbmF0ZXMKKyAqIHdpdGggUkFT
VEVSSVpFUl9TVUJQSVhFTF9CSVRTIGZyYWN0aW9uYWwgcGFydCkgYnkgY29tcHV0aW5nCisgKiBE
ID0gYSAqIFB4ICsgYiAqIFB5ICsgYworICoKKyAqIEQgd2lsbCBiZSBmaXhlZC1wb2ludCB2YWx1
ZSB3aGVyZSBsb3dlciAoUkFTVEVSSVpFUl9TVUJQSVhFTF9CSVRTICogMikgYml0cworICogd2ls
bCBiZSBmcmFjdGlvbmFsIHBhcnQuCisgKgorICogTWVtYmVyIGZ1bmN0aW9uIGV2YWx1YXRlRWRn
ZSwgcmV2ZXJzZUVkZ2UgYW5kIGlzSW5zaWRlQ0NXIGFyZSByZWZlcmVuY2VkIGZyb20gcnJSYXN0
ZXJpemVyLmNwcC4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9
IGIKKyAqIEBwYXJhbSB7bnVtYmVyfSBjCisgKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1c2l2ZQor
ICovCityclJlbmRlcmVyLmVkZ2VGdW5jdGlvbiA9IGZ1bmN0aW9uKGEsIGIsIGMsIGluY2x1c2l2
ZSkgeworICAgIHRoaXMuYSA9IGE7CisgICAgdGhpcy5iID0gYjsKKyAgICB0aGlzLmMgPSBjOwor
ICAgIHRoaXMuaW5jbHVzaXZlID0gaW5jbHVzaXZlOyAvLyBUcnVlIGlmIGVkZ2UgaXMgaW5jbHVz
aXZlIGFjY29yZGluZyB0byBmaWxsIHJ1bGVzCit9OworCisvKioKKyAqIEV2YWx1YXRlIHBvaW50
ICh4LHkpCisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBy
ZXR1cm4ge251bWJlcn0KKyAqLworcnJSZW5kZXJlci5lZGdlRnVuY3Rpb24ucHJvdG90eXBlLmV2
YWx1YXRlRWRnZSA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICByZXR1cm4gdGhpcy5hICogeCArIHRo
aXMuYiAqIHkgKyB0aGlzLmM7Cit9OworCisvKioKKyAqIFJldmVyc2UgZWRnZSAoZS5nLiBmcm9t
IENDVyB0byBDVykKKyAqLworcnJSZW5kZXJlci5lZGdlRnVuY3Rpb24ucHJvdG90eXBlLnJldmVy
c2VFZGdlID0gZnVuY3Rpb24gKCkgeworICAgIHRoaXMuYSA9IC10aGlzLmE7CisgICAgdGhpcy5i
ID0gLXRoaXMuYjsKKyAgICB0aGlzLmMgPSAtdGhpcy5jOworICAgIHRoaXMuaW5jbHVzaXZlID0g
IXRoaXMuaW5jbHVzaXZlOworfTsKKworLyoqCisgKiBEZXRlcm1pbmUgaWYgYSBwb2ludCB3aXRo
IHZhbHVlIGVkZ2VWYWwgaXMgaW5zaWRlIHRoZSBDQ1cgcmVnaW9uIG9mIHRoZSBlZGdlCisgKiBA
cGFyYW0ge251bWJlcn0gZWRnZVZhbAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworcnJSZW5k
ZXJlci5lZGdlRnVuY3Rpb24ucHJvdG90eXBlLmlzSW5zaWRlQ0NXID0gZnVuY3Rpb24oZWRnZVZh
bCkgeworICAgIHJldHVybiB0aGlzLmluY2x1c2l2ZSA/IGVkZ2VWYWwgPj0gMCA6IGVkZ2VWYWwg
PiAwOworfTsKKworLyoqCisgKiBJbml0IGFuIGVkZ2UgZnVuY3Rpb24gaW4gY291bnRlci1jbG9j
a3dpc2UgKENDVykgb3JpZW50YXRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSBob3Jpem9udGFsRmls
bAorICogQHBhcmFtIHtudW1iZXJ9IHZlcnRpY2FsRmlsbAorICogQHBhcmFtIHtudW1iZXJ9IHgw
CisgKiBAcGFyYW0ge251bWJlcn0geTAKKyAqIEBwYXJhbSB7bnVtYmVyfSB4MQorICogQHBhcmFt
IHtudW1iZXJ9IHkxCisgKiBAcmV0dXJuIHtyclJlbmRlcmVyLmVkZ2VGdW5jdGlvbn0KKyAqLwor
cnJSZW5kZXJlci5pbml0RWRnZUNDVyA9IGZ1bmN0aW9uKGhvcml6b250YWxGaWxsLCB2ZXJ0aWNh
bEZpbGwsIHgwLCB5MCwgeDEsIHkxKSB7CisgICAgdmFyIHhkID0geDEgLSB4MDsKKyAgICB2YXIg
eWQgPSB5MSAtIHkwOworICAgIHZhciBpbmNsdXNpdmUgPSBmYWxzZTsKKworICAgIGlmICh5ZCA9
PSAwKQorICAgICAgICBpbmNsdXNpdmUgPSB2ZXJ0aWNhbEZpbGwgPT0gcnJSZW5kZXJTdGF0ZS5W
ZXJ0aWNhbEZpbGwuQk9UVE9NID8geGQgPj0gMCA6IHhkIDw9IDA7CisgICAgZWxzZQorICAgICAg
ICBpbmNsdXNpdmUgPSBob3Jpem9udGFsRmlsbCA9PSByclJlbmRlclN0YXRlLkhvcml6b250YWxG
aWxsLkxFRlQgPyB5ZCA8PSAwIDogeWQgPj0wOworCisgICAgcmV0dXJuIG5ldyByclJlbmRlcmVy
LmVkZ2VGdW5jdGlvbih5MCAtIHkxLCB4MSAtIHgwLCB4MCAqIHkxIC0geTAgKiB4MSwgaW5jbHVz
aXZlKTsKK307CisKKy8qKgorICogXGJyaWVmIFRyaWFuZ2xlIHJhc3Rlcml6ZXIgLSByZWZlcmVu
Y2VkIGZyb20gY2xhc3MgVHJpYW5nbGVSYXN0ZXJpemVyIGluIHJyUmFzdGVyaXplci5ocHAKKyAq
CisgKiBUcmlhbmdsZSByYXN0ZXJpemVyIGltcGxlbWVudHMgZm9sbG93aW5nIGZlYXR1cmVzOgor
ICogLSBSYXN0ZXJpemF0aW9uIHVzaW5nIGZpeGVkLXBvaW50IGNvb3JkaW5hdGVzCisgKiAtIDEt
c2FtcGxlIHJhc3Rlcml6YXRpb24gKHRoZSB2YWx1ZSBvZiBudW1TYW1wbGVzIGFsd2F5cyBlcXVh
bHMgMSBpbiBzZ2xyUmVmZXJlbmNlQ29udGV4dCkKKyAqIC0gRGVwdGggaW50ZXJwb2xhdGlvbgor
ICogLSBQZXJzcGVjdGl2ZS1jb3JyZWN0IGJhcnljZW50cmljIGNvbXB1dGF0aW9uIGZvciBpbnRl
cnBvbGF0aW9uCisgKiAtIFZpc2libGUgZmFjZSBkZXRlcm1pbmF0aW9uCisgKiAtIENsaXBwaW5n
IC0gbmF0aXZlIGRFUVAgZG9lcyBjbGlwcGluZyBiZWZvcmUgcmFzdGVyaXphdGlvbjsgc2VlIGZ1
bmN0aW9uIGRyYXdCYXNpY1ByaW1pdGl2ZXMKKyAqICAgICAgICAgICAgICBpbiByclJlbmRlcmVy
LmNwcCBmb3IgbW9yZSBkZXRhaWxzCisgKgorICogSXQgZG9lcyBub3QgKGFuZCB3aWxsIG5vdCkg
aW1wbGVtZW50IGZvbGxvd2luZzoKKyAqIC0gVHJpYW5nbGUgc2V0dXAKKyAqIC0gRGVnZW5lcmF0
ZSBlbGltaW5hdGlvbgorICogLSBDb29yZGluYXRlIHRyYW5zZm9ybWF0aW9uIChpbnB1dHMgYXJl
IGluIHNjcmVlbi1zcGFjZSkKKyAqIC0gQ3VsbGluZyAtIGxvZ2ljIGNhbiBiZSBpbXBsZW1lbnRl
ZCBvdXRzaWRlIGJ5IHF1ZXJ5aW5nIHZpc2libGUgZmFjZQorICogLSBTY2lzc29yaW5nIC0gKHRo
aXMgY2FuIGJlIGRvbmUgYnkgY29udHJvbGxpbmcgdmlld3BvcnQgcmVjdGFuZ2xlKQorICogLSBB
bnkgcGVyLWZyYWdtZW50IG9wZXJhdGlvbnMKKyAqCisgKiBAcGFyYW0ge3JyUmVuZGVyU3RhdGUu
UmVuZGVyU3RhdGV9IHN0YXRlCisgKi8KK3JyUmVuZGVyZXIudHJpYW5nbGVSYXN0ZXJpemVyID0g
ZnVuY3Rpb24oc3RhdGUpIHsKKyAgICB0aGlzLm1fdmlld3BvcnQgPSBzdGF0ZS52aWV3cG9ydDsK
KyAgICB0aGlzLm1fd2luZGluZyA9IHN0YXRlLnJhc3Rlcml6YXRpb24ud2luZGluZzsKKyAgICB0
aGlzLm1faG9yaXpvbnRhbEZpbGwgPSBzdGF0ZS5yYXN0ZXJpemF0aW9uLmhvcml6b250YWxGaWxs
OworICAgIHRoaXMubV92ZXJ0aWNhbEZpbGwgPSBzdGF0ZS5yYXN0ZXJpemF0aW9uLnZlcnRpY2Fs
RmlsbDsKK307CisKKy8qKgorICogSW5pdGlhbGl6ZSB0cmlhbmdsZSByYXN0ZXJpemF0aW9uCisg
KiBAcGFyYW0ge3ZlY30gdjAgIFNjcmVlbi1zcGFjZSBjb29yZGluYXRlcyAoeCwgeSwgeikgYW5k
IDEvdyBmb3IgdmVydGV4IDAKKyAqIEBwYXJhbSB7dmVjfSB2MSAgU2NyZWVuLXNwYWNlIGNvb3Jk
aW5hdGVzICh4LCB5LCB6KSBhbmQgMS93IGZvciB2ZXJ0ZXggMQorICogQHBhcmFtIHt2ZWN9IHYy
ICBTY3JlZW4tc3BhY2UgY29vcmRpbmF0ZXMgKHgsIHksIHopIGFuZCAxL3cgZm9yIHZlcnRleCAy
CisgKi8KK3JyUmVuZGVyZXIudHJpYW5nbGVSYXN0ZXJpemVyLnByb3RvdHlwZS5pbml0ID0gZnVu
Y3Rpb24odjAsIHYxLCB2MikgeworICAgIHRoaXMubV92MCA9IHYwOworICAgIHRoaXMubV92MSA9
IHYxOworICAgIHRoaXMubV92MiA9IHYyOworCisgICAgLy8gUG9zaXRpb25zIGluIGZpeGVkLXBv
aW50IGNvb3JkaW5hdGVzCisgICAgdmFyIHgwID0gcnJSZW5kZXJlci50b1N1YnBpeGVsQ29vcmQo
djBbMF0pOworICAgIHZhciB5MCA9IHJyUmVuZGVyZXIudG9TdWJwaXhlbENvb3JkKHYwWzFdKTsK
KyAgICB2YXIgeDEgPSByclJlbmRlcmVyLnRvU3VicGl4ZWxDb29yZCh2MVswXSk7CisgICAgdmFy
IHkxID0gcnJSZW5kZXJlci50b1N1YnBpeGVsQ29vcmQodjFbMV0pOworICAgIHZhciB4MiA9IHJy
UmVuZGVyZXIudG9TdWJwaXhlbENvb3JkKHYyWzBdKTsKKyAgICB2YXIgeTIgPSByclJlbmRlcmVy
LnRvU3VicGl4ZWxDb29yZCh2MlsxXSk7CisKKyAgICAvLyBJbml0aWFsaXplIGVkZ2UgZnVuY3Rp
b25zCisgICAgaWYgKHRoaXMubV93aW5kaW5nID09IHJyUmVuZGVyU3RhdGUuV2luZGluZy5DQ1cp
IHsKKyAgICAgICAgdGhpcy5tX2VkZ2UwMSA9IHJyUmVuZGVyZXIuaW5pdEVkZ2VDQ1codGhpcy5t
X2hvcml6b250YWxGaWxsLCB0aGlzLm1fdmVydGljYWxGaWxsLCB4MCwgeTAsIHgxLCB5MSk7Cisg
ICAgICAgIHRoaXMubV9lZGdlMTIgPSByclJlbmRlcmVyLmluaXRFZGdlQ0NXKHRoaXMubV9ob3Jp
em9udGFsRmlsbCwgdGhpcy5tX3ZlcnRpY2FsRmlsbCwgeDEsIHkxLCB4MiwgeTIpOworICAgICAg
ICB0aGlzLm1fZWRnZTIwID0gcnJSZW5kZXJlci5pbml0RWRnZUNDVyh0aGlzLm1faG9yaXpvbnRh
bEZpbGwsIHRoaXMubV92ZXJ0aWNhbEZpbGwsIHgyLCB5MiwgeDAsIHkwKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBSZXZlcnNlIGVkZ2VzCisgICAgICAgIHRoaXMubV9lZGdlMDEgPSByclJl
bmRlcmVyLmluaXRFZGdlQ0NXKHRoaXMubV9ob3Jpem9udGFsRmlsbCwgdGhpcy5tX3ZlcnRpY2Fs
RmlsbCwgeDEsIHkxLCB4MCwgeTApOworICAgICAgICB0aGlzLm1fZWRnZTEyID0gcnJSZW5kZXJl
ci5pbml0RWRnZUNDVyh0aGlzLm1faG9yaXpvbnRhbEZpbGwsIHRoaXMubV92ZXJ0aWNhbEZpbGws
IHgyLCB5MiwgeDEsIHkxKTsKKyAgICAgICAgdGhpcy5tX2VkZ2UyMCA9IHJyUmVuZGVyZXIuaW5p
dEVkZ2VDQ1codGhpcy5tX2hvcml6b250YWxGaWxsLCB0aGlzLm1fdmVydGljYWxGaWxsLCB4MCwg
eTAsIHgyLCB5Mik7CisgICAgfQorCisgICAgLy8gRGV0ZXJtaW5lIGZhY2UKKyAgICB2YXIgcyA9
IHRoaXMubV9lZGdlMDEuZXZhbHVhdGVFZGdlKHgyLCB5Mik7CisgICAgdmFyIHBvc2l0aXZlQXJl
YSA9ICh0aGlzLm1fd2luZGluZyA9PSByclJlbmRlclN0YXRlLldpbmRpbmcuQ0NXICkgPyBzID4g
MCA6IHMgPCAwOworICAgIHRoaXMubV9mYWNlID0gcG9zaXRpdmVBcmVhID8gcnJEZWZzLkZhY2VU
eXBlLkZBQ0VUWVBFX0ZST05UIDogcnJEZWZzLkZhY2VUeXBlLkZBQ0VUWVBFX0JBQ0s7CisgICAg
aWYgKCFwb3NpdGl2ZUFyZWEpIHsKKyAgICAgICAgLy8gUmV2ZXJzZSBlZGdlcyBzbyB0aGF0IHdl
IGNhbiB1c2UgQ0NXIGFyZWEgdGVzdHMgJiBpbnRlcnBvbGF0aW9uCisgICAgICAgIHRoaXMubV9l
ZGdlMDEucmV2ZXJzZUVkZ2UoKTsKKyAgICAgICAgdGhpcy5tX2VkZ2UxMi5yZXZlcnNlRWRnZSgp
OworICAgICAgICB0aGlzLm1fZWRnZTIwLnJldmVyc2VFZGdlKCk7CisgICAgfQorCisgICAgLy8g
Qm91bmRpbmcgYm94CisgICAgdmFyIG1pblggPSBNYXRoLm1pbih4MCwgeDEsIHgyKTsKKyAgICB2
YXIgbWF4WCA9IE1hdGgubWF4KHgwLCB4MSwgeDIpOworICAgIHZhciBtaW5ZID0gTWF0aC5taW4o
eTAsIHkxLCB5Mik7CisgICAgdmFyIG1heFkgPSBNYXRoLm1heCh5MCwgeTEsIHkyKTsKKworICAg
IHRoaXMubV9iYm94TWluID0gW107CisgICAgdGhpcy5tX2Jib3hNYXggPSBbXTsKKyAgICB0aGlz
Lm1fYmJveE1pblswXSA9IHJyUmVuZGVyZXIuZmxvb3JTdWJwaXhlbFRvUGl4ZWxDb29yZChtaW5Y
LCB0aGlzLm1faG9yaXpvbnRhbEZpbGwgPT0gcnJSZW5kZXJTdGF0ZS5Ib3Jpem9udGFsRmlsbC5M
RUZUKTsKKyAgICB0aGlzLm1fYmJveE1pblsxXSA9IHJyUmVuZGVyZXIuZmxvb3JTdWJwaXhlbFRv
UGl4ZWxDb29yZChtaW5ZLCB0aGlzLm1fdmVydGljYWxGaWxsID09IHJyUmVuZGVyU3RhdGUuVmVy
dGljYWxGaWxsLkJPVFRPTSk7CisgICAgdGhpcy5tX2Jib3hNYXhbMF0gPSByclJlbmRlcmVyLmNl
aWxTdWJwaXhlbFRvUGl4ZWxDb29yZChtYXhYLCB0aGlzLm1faG9yaXpvbnRhbEZpbGwgPT0gcnJS
ZW5kZXJTdGF0ZS5Ib3Jpem9udGFsRmlsbC5SSUdIVCk7CisgICAgdGhpcy5tX2Jib3hNYXhbMV0g
PSByclJlbmRlcmVyLmNlaWxTdWJwaXhlbFRvUGl4ZWxDb29yZChtYXhZLCB0aGlzLm1fdmVydGlj
YWxGaWxsID09IHJyUmVuZGVyU3RhdGUuVmVydGljYWxGaWxsLlRPUCk7CisKKyAgICAvLyBDbGFt
cCB0byB2aWV3cG9ydAorICAgIHZhciB3WDAgPSB0aGlzLm1fdmlld3BvcnQucmVjdC5sZWZ0Owor
ICAgIHZhciB3WTAgPSB0aGlzLm1fdmlld3BvcnQucmVjdC5ib3R0b207CisgICAgdmFyIHdYMSA9
IHdYMCArIHRoaXMubV92aWV3cG9ydC5yZWN0LndpZHRoIC0gMTsKKyAgICB2YXIgd1kxID0gd1kw
ICsgdGhpcy5tX3ZpZXdwb3J0LnJlY3QuaGVpZ2h0IC0gMTsKKworICAgIHRoaXMubV9iYm94TWlu
WzBdID0gZGVNYXRoLmNsYW1wKHRoaXMubV9iYm94TWluWzBdLCB3WDAsIHdYMSk7CisgICAgdGhp
cy5tX2Jib3hNaW5bMV0gPSBkZU1hdGguY2xhbXAodGhpcy5tX2Jib3hNaW5bMV0sIHdZMCwgd1kx
KTsKKyAgICB0aGlzLm1fYmJveE1heFswXSA9IGRlTWF0aC5jbGFtcCh0aGlzLm1fYmJveE1heFsw
XSwgd1gwLCB3WDEpOworICAgIHRoaXMubV9iYm94TWF4WzFdID0gZGVNYXRoLmNsYW1wKHRoaXMu
bV9iYm94TWF4WzFdLCB3WTAsIHdZMSk7CisKKyAgICB0aGlzLm1fY3VyUG9zID0gW3RoaXMubV9i
Ym94TWluWzBdLCB0aGlzLm1fYmJveE1pblsxXV07Cit9OworCityclJlbmRlcmVyLnRyaWFuZ2xl
UmFzdGVyaXplci5wcm90b3R5cGUucmFzdGVyaXplID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGZy
YWdtZW50UGFja2V0cyA9IFtdOworICAgIHZhciBoYWxmUGl4ZWwgPSAxIDw8IChyclJlbmRlcmVy
LlJBU1RFUklaRVJfU1VCUElYRUxfQklUUyAtIDEpOworCisgICAgLy8gRm9yIGRlcHRoIGludGVy
cG9sYXRpb247IGdpdmVuIGJhcnljZW50cmljcyBBLCBCLCBDID0gKDEgLSBBIC1CKQorICAgIC8v
IFdlIGNhbiByZWZvcm11bGF0ZSB0aGUgdXN1YWwgeiA9IHowICogQSArIHoxICogQiArIHoyICog
QyBpbnRvIG1vcmUKKyAgICAvLyBzdGFibGUgZXF1YXRpb24geiA9IEEgKiAoejAgLSB6MikgKyBC
ICogKHoxIC0gejIpICsgejIKKyAgICB2YXIgemEgPSB0aGlzLm1fdjBbMl0gLSB0aGlzLm1fdjJb
Ml07CisgICAgdmFyIHpiID0gdGhpcy5tX3YxWzJdIC0gdGhpcy5tX3YyWzJdOworICAgIHZhciB6
YyA9IHRoaXMubV92MlsyXTsKKworICAgIHZhciB6biA9IHRoaXMubV92aWV3cG9ydC56bjsKKyAg
ICB2YXIgemYgPSB0aGlzLm1fdmlld3BvcnQuemY7CisgICAgdmFyIGRlcHRoU2NhbGUgPSAoemYg
LSB6bikgLyAyOworICAgIHZhciBkZXB0aEJpYXMgPSAoemYgKyB6bikgLyAyOworCisgICAgd2hp
bGUgKHRoaXMubV9jdXJQb3NbMV0gPD0gdGhpcy5tX2Jib3hNYXhbMV0pIHsKKyAgICAgICAgdmFy
IHgwID0gdGhpcy5tX2N1clBvc1swXTsKKyAgICAgICAgdmFyIHkwID0gdGhpcy5tX2N1clBvc1sx
XTsKKworICAgICAgICAvLyBTdWJwaXhlbCBjb29yZHMgb2YgKHgwLCB5MCksICh4MCArIDEsIHkw
KSwgKHgwLCB5MCArIDEpLCAoeDAgKyAxLCB5MCArIDEpCisgICAgICAgIHZhciBzeDAgPSByclJl
bmRlcmVyLnRvU3VicGl4ZWxDb29yZCh4MCkgKyBoYWxmUGl4ZWw7CisgICAgICAgIHZhciBzeDEg
PSByclJlbmRlcmVyLnRvU3VicGl4ZWxDb29yZCh4MCArIDEpICsgaGFsZlBpeGVsOworICAgICAg
ICB2YXIgc3kwID0gcnJSZW5kZXJlci50b1N1YnBpeGVsQ29vcmQoeTApICsgaGFsZlBpeGVsOwor
ICAgICAgICB2YXIgc3kxID0gcnJSZW5kZXJlci50b1N1YnBpeGVsQ29vcmQoeTAgKyAxKSArIGhh
bGZQaXhlbDsKKworICAgICAgICB2YXIgc3ggPSBbc3gwLCBzeDEsIHN4MCwgc3gxXTsKKyAgICAg
ICAgdmFyIHN5ID0gW3N5MCwgc3kwLCBzeTEsIHN5MV07CisKKyAgICAgICAgLy8gVmlld3BvcnQg
dGVzdAorICAgICAgICB2YXIgb3V0WDEgPSB4MCArIDEgPT0gdGhpcy5tX3ZpZXdwb3J0LnJlY3Qu
bGVmdCArIHRoaXMubV92aWV3cG9ydC5yZWN0LndpZHRoOworICAgICAgICB2YXIgb3V0WTEgPSB5
MCArIDEgPT0gdGhpcy5tX3ZpZXdwb3J0LnJlY3QuYm90dG9tICsgdGhpcy5tX3ZpZXdwb3J0LnJl
Y3QuaGVpZ2h0OworCisgICAgICAgIC8vIENvdmVyYWdlCisgICAgICAgIHZhciBjb3ZlcmFnZSA9
IDA7CisKKyAgICAgICAgLy8gRXZhbHVhdGUgZWRnZSB2YWx1ZXMKKyAgICAgICAgdmFyIGUwMSA9
IFtdOworICAgICAgICB2YXIgZTEyID0gW107CisgICAgICAgIHZhciBlMjAgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgIGUwMS5wdXNoKHRo
aXMubV9lZGdlMDEuZXZhbHVhdGVFZGdlKHN4W2ldLCBzeVtpXSkpOworICAgICAgICAgICAgZTEy
LnB1c2godGhpcy5tX2VkZ2UxMi5ldmFsdWF0ZUVkZ2Uoc3hbaV0sIHN5W2ldKSk7CisgICAgICAg
ICAgICBlMjAucHVzaCh0aGlzLm1fZWRnZTIwLmV2YWx1YXRlRWRnZShzeFtpXSwgc3lbaV0pKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXB1dGUgY292ZXJhZ2UgbWFzaworICAgICAgICBj
b3ZlcmFnZSA9IHJyUmVuZGVyZXIuc2V0Q292ZXJhZ2VWYWx1ZShjb3ZlcmFnZSwgMSwgMCwgMCwg
MCwgdGhpcy5tX2VkZ2UwMS5pc0luc2lkZUNDVyhlMDFbMF0pICYmIHRoaXMubV9lZGdlMTIuaXNJ
bnNpZGVDQ1coZTEyWzBdKSAmJiB0aGlzLm1fZWRnZTIwLmlzSW5zaWRlQ0NXKGUyMFswXSkpOwor
ICAgICAgICBjb3ZlcmFnZSA9IHJyUmVuZGVyZXIuc2V0Q292ZXJhZ2VWYWx1ZShjb3ZlcmFnZSwg
MSwgMSwgMCwgMCwgIW91dFgxICYmIHRoaXMubV9lZGdlMDEuaXNJbnNpZGVDQ1coZTAxWzFdKSAm
JiB0aGlzLm1fZWRnZTEyLmlzSW5zaWRlQ0NXKGUxMlsxXSkgJiYgdGhpcy5tX2VkZ2UyMC5pc0lu
c2lkZUNDVyhlMjBbMV0pKTsKKyAgICAgICAgY292ZXJhZ2UgPSByclJlbmRlcmVyLnNldENvdmVy
YWdlVmFsdWUoY292ZXJhZ2UsIDEsIDAsIDEsIDAsICFvdXRZMSAmJiB0aGlzLm1fZWRnZTAxLmlz
SW5zaWRlQ0NXKGUwMVsyXSkgJiYgdGhpcy5tX2VkZ2UxMi5pc0luc2lkZUNDVyhlMTJbMl0pICYm
IHRoaXMubV9lZGdlMjAuaXNJbnNpZGVDQ1coZTIwWzJdKSk7CisgICAgICAgIGNvdmVyYWdlID0g
cnJSZW5kZXJlci5zZXRDb3ZlcmFnZVZhbHVlKGNvdmVyYWdlLCAxLCAxLCAxLCAwLCAhb3V0WDEg
JiYgIW91dFkxICYmIHRoaXMubV9lZGdlMDEuaXNJbnNpZGVDQ1coZTAxWzNdKSAmJiB0aGlzLm1f
ZWRnZTEyLmlzSW5zaWRlQ0NXKGUxMlszXSkgJiYgdGhpcy5tX2VkZ2UyMC5pc0luc2lkZUNDVyhl
MjBbM10pKTsKKworICAgICAgICAvLyBBZHZhbmNlIHRvIG5leHQgbG9jYXRpb24KKyAgICAgICAg
dGhpcy5tX2N1clBvc1swXSArPSAyOworICAgICAgICBpZiAodGhpcy5tX2N1clBvc1swXSA+IHRo
aXMubV9iYm94TWF4WzBdKSB7CisgICAgICAgICAgICB0aGlzLm1fY3VyUG9zWzBdID0gdGhpcy5t
X2Jib3hNaW5bMF07CisgICAgICAgICAgICB0aGlzLm1fY3VyUG9zWzFdICs9IDI7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoY292ZXJhZ2UgPT0gMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBEaXNjYXJkCisKKyAgICAgICAgLy8gQ29tcHV0ZSBkZXB0aCBhbmQgYmFyeWNlbnRyaWMgY29v
cmRpbmF0ZXMKKyAgICAgICAgdmFyIGVkZ2VTdW0gPSBkZU1hdGguYWRkKGRlTWF0aC5hZGQoZTAx
LCBlMTIpLCBlMjApOworICAgICAgICB2YXIgejAgPSBkZU1hdGguZGl2aWRlKGUxMiwgZWRnZVN1
bSk7CisgICAgICAgIHZhciB6MSA9IGRlTWF0aC5kaXZpZGUoZTIwLCBlZGdlU3VtKTsKKworICAg
ICAgICB2YXIgYjAgPSBkZU1hdGgubXVsdGlwbHkoZTEyLCBbdGhpcy5tX3YwWzNdLCB0aGlzLm1f
djBbM10sIHRoaXMubV92MFszXSwgdGhpcy5tX3YwWzNdXSk7CisgICAgICAgIHZhciBiMSA9IGRl
TWF0aC5tdWx0aXBseShlMjAsIFt0aGlzLm1fdjFbM10sIHRoaXMubV92MVszXSwgdGhpcy5tX3Yx
WzNdLCB0aGlzLm1fdjFbM11dKTsKKyAgICAgICAgdmFyIGIyID0gZGVNYXRoLm11bHRpcGx5KGUw
MSwgW3RoaXMubV92MlszXSwgdGhpcy5tX3YyWzNdLCB0aGlzLm1fdjJbM10sIHRoaXMubV92Mlsz
XV0pOworICAgICAgICB2YXIgYlN1bSA9IGRlTWF0aC5hZGQoZGVNYXRoLmFkZChiMCwgYjEpLCBi
Mik7CisgICAgICAgIHZhciBiYXJ5Y2VudHJpYzAgPSBkZU1hdGguZGl2aWRlKGIwLCBiU3VtKTsK
KyAgICAgICAgdmFyIGJhcnljZW50cmljMSA9IGRlTWF0aC5kaXZpZGUoYjEsIGJTdW0pOworICAg
ICAgICB2YXIgYmFyeWNlbnRyaWMyID0gZGVNYXRoLnN1YnRyYWN0KGRlTWF0aC5zdWJ0cmFjdChb
MSwgMSwgMSwgMV0sIGJhcnljZW50cmljMCksIGJhcnljZW50cmljMSk7CisKKyAgICAgICAgLy8g
SW4gbmF0aXZlIGRFUVAsIGFmdGVyIHJhc3Rlcml6YXRpb24sIHRoZSBwaXhlbCAoeDAsIHkwKSBh
Y3R1YWxseSByZXByZXNlbnRzIGZvdXIgcGl4ZWxzOgorICAgICAgICAvLyAoeDAsIHkwKSwgKHgw
ICsgMSwgeTApLCAoeDAsIHkwICsgMSkgYW5kICh4MCArIDEsIHkwICsgMSkuCisgICAgICAgIC8v
IFRoZSBiYXJ5Y2VudHJpY3MgYW5kIGRlcHRocyBvZiB0aGVzZSBmb3VyIHBpeGVscyBhcmUgdG8g
YmUgY29tcHV0ZWQgYWZ0ZXIgcmFzdGVyaXphdGlvbjoKKyAgICAgICAgLy8gYmFyeWNlbnRyaWNz
IGFyZSBjb21wdXRlZCBpbiBmdW5jdGlvbiBzaGFkZUZyYWdtZW50cyBpbiBlczNmRmJvVGVzdFV0
aWwuY3BwOworICAgICAgICAvLyBkZXB0aHMgYXJlIGNvbXB1dGVkIGluIGZ1bmN0aW9uIHdyaXRl
RnJhZ21lbnRQYWNrZXRzIGluIHJyUmVuZGVyZXIuY3BwLgorCisgICAgICAgIC8vIEluIGpzLCBw
aXhlbHMgYXJlIHByb2Nlc3NlZCBvbmUgYWZ0ZXIgYW5vdGhlciwgc28gdGhlaXIgZGVwdGhzIGFu
ZCBiYXJ5Y2VudHJpY3Mgc2hvdWxkIGJlIGNvbXB1dGVkIGltbWVkaWF0ZWx5LgorCisgICAgICAg
IC8vIERldGVybWluZSBpZiAoeDAsIHkwKSwgKHgwICsgMSwgeTApLCAoeDAsIHkwICsgMSksICh4
MCArIDEsIHkwICsgMSkgY2FuIGJlIHJlbmRlcmVkCisgICAgICAgIGZvciAodmFyIGZyYWdOZHgg
PSAwOyBmcmFnTmR4IDwgNDsgZnJhZ05keCsrKSB7CisgICAgICAgICAgICB2YXIgeG8gPSBmcmFn
TmR4ICUgMjsKKyAgICAgICAgICAgIHZhciB5byA9IE1hdGgudHJ1bmMoZnJhZ05keCAvIDIpOwor
ICAgICAgICAgICAgdmFyIHggPSB4MCArIHhvOworICAgICAgICAgICAgdmFyIHkgPSB5MCArIHlv
OworCisgICAgICAgICAgICAvLyBUaGUgdmFsdWUgb2YgbnVtU2FtcGxlcyBhbHdheXMgZXF1YWxz
IDEgaW4gc2dsclJlZmVyZW5jZUNvbnRleHQuCisgICAgICAgICAgICBpZihyclJlbmRlcmVyLmdl
dENvdmVyYWdlQW55RnJhZ21lbnRTYW1wbGVMaXZlKGNvdmVyYWdlLCAxLCB4bywgeW8pKSB7Cisg
ICAgICAgICAgICAgICAgLy8gQmFyeWNlbnRyaWMgY29vcmRpbmF0ZXMgLSByZWZlcmVuY2VkIGZy
b20gZnVuY3Rpb24gcmVhZFRyaWFuZ2xlVmFyeWluZyBpbiByclNoYWRpbmdDb250ZXh0LmhwcAor
ICAgICAgICAgICAgICAgIHZhciBiID0gW2JhcnljZW50cmljMFtmcmFnTmR4XSwgYmFyeWNlbnRy
aWMxW2ZyYWdOZHhdLCBiYXJ5Y2VudHJpYzJbZnJhZ05keF1dOworCisgICAgICAgICAgICAgICAg
Ly8gRGVwdGggLSByZWZlcmVuY2VkIGZyb20gd3JpdGVGcmFnbWVudFBhY2tldHMgaW4gcnJSZW5k
ZXJlci5jcHAKKyAgICAgICAgICAgICAgICB2YXIgZGVwdGggPSB6MFtmcmFnTmR4XSAqIHphICsg
ejFbZnJhZ05keF0gKiB6YiArIHpjOworICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKiBk
ZXB0aFNjYWxlICsgZGVwdGhCaWFzOworCisgICAgICAgICAgICAgICAgLy8gQ2xpcCB0ZXN0Cisg
ICAgICAgICAgICAgICAgLy8gTmF0aXZlIGRFUVAgZG9lcyBjbGlwcGluZyB0ZXN0IGJlZm9yZSBy
YXN0ZXJpemF0aW9uLgorICAgICAgICAgICAgICAgIGlmICghcnJSZW5kZXJlci5jbGlwVGVzdCh4
LCB5LCBkZXB0aCwgdGhpcy5tX3ZpZXdwb3J0LnJlY3QpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIGZyYWdtZW50UGFja2V0cy5wdXNoKG5ldyByckZy
YWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudChiLCBbeCwgeV0sIGRlcHRoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZyYWdtZW50UGFja2V0czsKK307CisK
Ky8qKgorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLlJlbmRlclN0YXRlfSBzdGF0ZQorICogQHBh
cmFtIHtyclJlbmRlcmVyLlJlbmRlclRhcmdldH0gcmVuZGVyVGFyZ2V0CisgKiBAcGFyYW0ge3Nn
bHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0KKyAqIEBwYXJhbSB7QXJyYXk8
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliPn0gdmVydGV4QXR0cmlicworICogQHBhcmFtIHty
clJlbmRlcmVyLlByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZQorICogQHBhcmFtIHsobnVtYmVyfHJy
UmVuZGVyZXIuRHJhd0luZGljZXMpfSBmaXJzdCBJbmRleCBvZiBmaXJzdCBxdWFkIHZlcnRleAor
ICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IE51bWJlciBvZiBpbmRpY2VzCisgKiBAcGFyYW0ge251
bWJlcn0gaW5zdGFuY2VJRAorICovCityclJlbmRlcmVyLmRyYXdUcmlhbmdsZXMgPSBmdW5jdGlv
bihzdGF0ZSwgcmVuZGVyVGFyZ2V0LCBwcm9ncmFtLCB2ZXJ0ZXhBdHRyaWJzLCBwcmltaXRpdmUs
IGZpcnN0LCBjb3VudCwgaW5zdGFuY2VJRCkgeworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
cnJheTxyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fSB2ZXJ0aWNlcworICAgICAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gaW5kaWNlcworICAgICAqIEByZXR1cm4ge0FycmF5PHJyVmVydGV4
UGFja2V0LlZlcnRleFBhY2tldD59CisgICAgICovCisgICAgdmFyIHNlbGVjdFZlcnRpY2VzID0g
ZnVuY3Rpb24odmVydGljZXMsIGluZGljZXMpIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICByZXN1bHQucHVzaCh2ZXJ0aWNlc1tpbmRpY2VzW2ldXSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfTsKKworICAgIC8vIFJlZmVyZW5jZWQgZnJvbSBuYXRpdmUgZEVRUCBSZW5k
ZXJlcjo6ZHJhd0luc3RhbmNlZCgpIGluIHJyUmVuZGVyZXIuY3BwCisKKyAgICB2YXIgcHJpbWl0
aXZlcyA9IG5ldyByclJlbmRlcmVyLlByaW1pdGl2ZUxpc3QocHJpbWl0aXZlLCBjb3VudCwgZmly
c3QpOworICAgIC8vIERvIG5vdCBkcmF3IGlmIG5vdGhpbmcgdG8gZHJhdworICAgIGlmIChwcmlt
aXRpdmVzLmdldE51bUVsZW1lbnRzKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
UHJlcGFyZSB0cmFuc2Zvcm1hdGlvbgorICAgIHZhciBudW1WYXJ5aW5ncyA9IHByb2dyYW0udmVy
dGV4U2hhZGVyLmdldE91dHB1dHMoKS5sZW5ndGg7CisgICAgdmFyIHZwYWxsb2MgPSBuZXcgcnJW
ZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0QWxsb2NhdG9yKG51bVZhcnlpbmdzKTsKKyAgICB2YXIg
dmVydGV4UGFja2V0cyA9IHZwYWxsb2MuYWxsb2NBcnJheShwcmltaXRpdmVzLmdldE51bUVsZW1l
bnRzKCkpOworICAgIHZhciBkcmF3Q29udGV4dCA9IG5ldyByclJlbmRlcmVyLkRyYXdDb250ZXh0
KCk7CisgICAgZHJhd0NvbnRleHQucHJpbWl0aXZlSUQgPSAwOworCisgICAgdmFyIG51bWJlck9m
VmVydGljZXMgPSBwcmltaXRpdmVzLmdldE51bUVsZW1lbnRzKCk7CisgICAgdmFyIG51bVZlcnRl
eFBhY2tldHMgPSAwOworICAgIGZvciAodmFyIGVsZW1lbnROZHggPSAwOyBlbGVtZW50TmR4IDwg
bnVtYmVyT2ZWZXJ0aWNlczsgKytlbGVtZW50TmR4KSB7CisKKyAgICAgICAgLy8gaW5wdXQKKyAg
ICAgICAgdmVydGV4UGFja2V0c1tudW1WZXJ0ZXhQYWNrZXRzXS5pbnN0YW5jZU5keCA9IGluc3Rh
bmNlSUQ7CisgICAgICAgIHZlcnRleFBhY2tldHNbbnVtVmVydGV4UGFja2V0c10udmVydGV4TmR4
ID0gcHJpbWl0aXZlcy5nZXRJbmRleChlbGVtZW50TmR4KTsKKworICAgICAgICAvLyBvdXRwdXQK
KyAgICAgICAgdmVydGV4UGFja2V0c1tudW1WZXJ0ZXhQYWNrZXRzXS5wb2ludFNpemUgPSBzdGF0
ZS5wb2ludC5wb2ludFNpemU7IC8vIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgY3VycmVudCBzdGF0
ZQorICAgICAgICB2ZXJ0ZXhQYWNrZXRzW251bVZlcnRleFBhY2tldHNdLnBvc2l0aW9uID0gWzAs
IDAsIDAsIDBdOyAvLyBubyB1bmRlZmluZWQgdmFsdWVzCisKKyAgICAgICAgKytudW1WZXJ0ZXhQ
YWNrZXRzOworCisgICAgfQorICAgIHByb2dyYW0uc2hhZGVWZXJ0aWNlcyh2ZXJ0ZXhBdHRyaWJz
LCB2ZXJ0ZXhQYWNrZXRzLCBudW1WZXJ0ZXhQYWNrZXRzKTsKKworICAgIC8vIFJlZmVyZW5jZWQg
ZnJvbSBuYXRpdmUgZEVRUCBSZW5kZXJlcjo6cmFzdGVyaXplUHJpbWl0aXZlKCkgZm9yIHRyaWFu
Z2xlIHJhc3Rlcml6YXRpb24gaW4gcnJSZW5kZXJlci5jcHAKKworICAgIC8vIEluIG5hdGl2ZSBk
RVFQLCBvbmx5IG1heEZyYWdtZW50UGFja2V0cyBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgcGVyIHJh
c3Rlcml6ZS1zaGFkZS13cml0ZSBsb29wOworICAgIC8vIGluIGpzIGFsbCBwYWNrZXRzIGFyZSBw
cm9jZXNzZWQgaW4gb25lIGxvb3AuCisKKyAgICB2YXIgcmFzdGVyaXplciA9IG5ldyByclJlbmRl
cmVyLnRyaWFuZ2xlUmFzdGVyaXplcihzdGF0ZSk7CisKKyAgICBmb3IgKHZhciBwcmltID0gcHJp
bWl0aXZlcy5nZXROZXh0UHJpbWl0aXZlKHRydWUpOyBwcmltLmxlbmd0aCA+IDA7IHByaW0gPSBw
cmltaXRpdmVzLmdldE5leHRQcmltaXRpdmUoKSkgeworICAgICAgICB2YXIgdmVydGljZXMgPSBz
ZWxlY3RWZXJ0aWNlcyh2ZXJ0ZXhQYWNrZXRzLCBwcmltKTsKKworICAgICAgICB2YXIgdjAgPSBy
clJlbmRlcmVyLnRyYW5zZm9ybUdMVG9XaW5kb3dDb29yZHMoc3RhdGUsIHZlcnRpY2VzWzBdKTsK
KyAgICAgICAgdmFyIHYxID0gcnJSZW5kZXJlci50cmFuc2Zvcm1HTFRvV2luZG93Q29vcmRzKHN0
YXRlLCB2ZXJ0aWNlc1sxXSk7CisgICAgICAgIHZhciB2MiA9IHJyUmVuZGVyZXIudHJhbnNmb3Jt
R0xUb1dpbmRvd0Nvb3JkcyhzdGF0ZSwgdmVydGljZXNbMl0pOworCisgICAgICAgIHJhc3Rlcml6
ZXIuaW5pdCh2MCwgdjEsIHYyKTsKKworICAgICAgICAvLyBDdWxsaW5nCisgICAgICAgIGlmICgo
c3RhdGUuY3VsbE1vZGUgPT0gcnJSZW5kZXJTdGF0ZS5DdWxsTW9kZS5GUk9OVCAmJiByYXN0ZXJp
emVyLm1fZmFjZSA9PSByckRlZnMuRmFjZVR5cGUuRkFDRVRZUEVfRlJPTlQpIHx8CisgICAgICAg
ICAgICAoc3RhdGUuY3VsbE1vZGUgPT0gcnJSZW5kZXJTdGF0ZS5DdWxsTW9kZS5CQUNLICYmIHJh
c3Rlcml6ZXIubV9mYWNlID09IHJyRGVmcy5GYWNlVHlwZS5GQUNFVFlQRV9CQUNLKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8qIFRPRE86IEFkZCBQb2x5Z29uIE9mZnNldCBhbmQgRGVw
dGggQ2xhbXAgKi8KKworICAgICAgICAvLyBDb21wdXRlIGEgY29uc2VydmF0aXZlIGludGVnZXIg
Ym91bmRpbmcgYm94IGZvciB0aGUgdHJpYW5nbGUKKyAgICAgICAgdmFyIG1pblggPSBNYXRoLmZs
b29yKE1hdGgubWluKHYwWzBdLCB2MVswXSwgdjJbMF0pKTsKKyAgICAgICAgdmFyIG1heFggPSBN
YXRoLmNlaWwoTWF0aC5tYXgodjBbMF0sIHYxWzBdLCB2MlswXSkpOworICAgICAgICB2YXIgbWlu
WSA9IE1hdGguZmxvb3IoTWF0aC5taW4odjBbMV0sIHYxWzFdLCB2MlsxXSkpOworICAgICAgICB2
YXIgbWF4WSA9IE1hdGguY2VpbChNYXRoLm1heCh2MFsxXSwgdjFbMV0sIHYyWzFdKSk7CisKKyAg
ICAgICAgLy8gU2hhZGluZyBjb250ZXh0CisgICAgICAgIHZhciBzaGFkaW5nQ29udGV4dCA9IG5l
dyByclNoYWRpbmdDb250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRleHQoCisgICAgICAgICAgICB2
ZXJ0aWNlc1swXS5vdXRwdXRzLAorICAgICAgICAgICAgdmVydGljZXNbMV0ub3V0cHV0cywKKyAg
ICAgICAgICAgIHZlcnRpY2VzWzJdLm91dHB1dHMKKyAgICAgICAgKTsKKyAgICAgICAgc2hhZGlu
Z0NvbnRleHQuc2V0U2l6ZShtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpOworCisgICAgICAgIC8v
IFJhc3Rlcml6ZQorICAgICAgICB2YXIgZnJhZ21lbnRQYWNrZXRzID0gcmFzdGVyaXplci5yYXN0
ZXJpemUoKTsKKworICAgICAgICAvLyBTaGFkZQorICAgICAgICBwcm9ncmFtLnNoYWRlRnJhZ21l
bnRzKGZyYWdtZW50UGFja2V0cywgc2hhZGluZ0NvbnRleHQpOworCisgICAgICAgIC8vIEhhbmRs
ZSBmcmFnbWVudCBzaGFkZXIgb3V0cHV0cworICAgICAgICByclJlbmRlcmVyLndyaXRlRnJhZ21l
bnRzMihzdGF0ZSwgcmVuZGVyVGFyZ2V0LCBmcmFnbWVudFBhY2tldHMpOworICAgIH0KK307CisK
Ky8qKgorICogQHBhcmFtIHtyclJlbmRlclN0YXRlLlJlbmRlclN0YXRlfSBzdGF0ZQorICogQHBh
cmFtIHtyclJlbmRlcmVyLlJlbmRlclRhcmdldH0gcmVuZGVyVGFyZ2V0CisgKiBAcGFyYW0ge3Nn
bHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0KKyAqIEBwYXJhbSB7QXJyYXk8
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliPn0gdmVydGV4QXR0cmlicworICogQHBhcmFtIHty
clJlbmRlcmVyLlByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZQorICogQHBhcmFtIHsobnVtYmVyfHJy
UmVuZGVyZXIuRHJhd0luZGljZXMpfSBmaXJzdCBJbmRleCBvZiBmaXJzdCBxdWFkIHZlcnRleAor
ICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IE51bWJlciBvZiBpbmRpY2VzCisgKiBAcGFyYW0ge251
bWJlcn0gaW5zdGFuY2VJRAorICovCityclJlbmRlcmVyLmRyYXdMaW5lcyA9IGZ1bmN0aW9uKHN0
YXRlLCByZW5kZXJUYXJnZXQsIHByb2dyYW0sIHZlcnRleEF0dHJpYnMsIHByaW1pdGl2ZSwgZmly
c3QsIGNvdW50LCBpbnN0YW5jZUlEKSB7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5
PHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldD59IHZlcnRpY2VzCisgICAgICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBpbmRpY2VzCisgICAgICogQHJldHVybiB7QXJyYXk8cnJWZXJ0ZXhQYWNr
ZXQuVmVydGV4UGFja2V0Pn0KKyAgICAgKi8KKyAgICB2YXIgc2VsZWN0VmVydGljZXMgPSBmdW5j
dGlvbih2ZXJ0aWNlcywgaW5kaWNlcykgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
IHJlc3VsdC5wdXNoKHZlcnRpY2VzW2luZGljZXNbaV1dKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9OworCisgICAgdmFyIGxlbmd0aFNxdWFyZWQgPSBmdW5jdGlvbihhKSB7CisgICAg
ICAgIHZhciBzcVN1bSA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIHNxU3VtICs9IGFbaV0gKiBhW2ldOworICAgICAgICByZXR1cm4g
c3FTdW07CisgICAgfTsKKworICAgIHZhciBkb3QgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgICAg
IHZhciByZXMgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
CisgICAgICAgICAgICByZXMgKz0gYVtpXSAqIGJbaV07CisgICAgICAgIHJldHVybiByZXM7Cisg
ICAgfTsKKworICAgIHZhciByYXN0ZXJpemVMaW5lID0gZnVuY3Rpb24odjAsIHYxKSB7CisgICAg
ICAgIHZhciBkID0gWworICAgICAgICAgICAgTWF0aC5hYnModjFbMF0gLSB2MFswXSksCisgICAg
ICAgICAgICBNYXRoLmFicyh2MVsxXSAtIHYwWzFdKV07CisgICAgICAgIHZhciB4c3RlcCA9IHYw
WzBdIDwgdjFbMF0gPyAxIDogLTE7CisgICAgICAgIHZhciB5c3RlcCA9IHYwWzFdIDwgdjFbMV0g
PyAxIDogLTE7CisgICAgICAgIHZhciB4ID0gdjBbMF07CisgICAgICAgIHZhciB5ID0gdjBbMV07
CisgICAgICAgIHZhciBvZmZzZXQgPSBkWzBdIC0gZFsxXTsKKyAgICAgICAgdmFyIGxlblYgPSBb
djFbMF0gLSB2MFswXSwgdjFbMV0gLSB2MFsxXV07CisgICAgICAgIHZhciBsZW5TcSA9IGxlbmd0
aFNxdWFyZWQobGVuVik7CisKKyAgICAgICAgdmFyIHBhY2tldHMgPSBbXTsKKworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgdmFyIHQgPSBkb3QoW3ggLSB2MFswXSwgeSAtIHYw
WzFdXSwgbGVuVikgLyBsZW5TcTsKKyAgICAgICAgICAgIHZhciBkZXB0aCA9ICgxIC0gdCkgKiB2
MFsyXSArIHQgKiB2MVsyXTsKKyAgICAgICAgICAgIHZhciBiID0gWzAsIDAsIDBdOworICAgICAg
ICAgICAgYlswXSA9IDEgLSB0OworICAgICAgICAgICAgYlsxXSA9IHQ7CisKKyAgICAgICAgICAg
IGlmICh4ID09IHYxWzBdICYmIHkgPT0gdjFbMV0pCisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKiBkZXB0aFNjYWxlICsgZGVwdGhCaWFzOworICAg
ICAgICAgICAgcGFja2V0cy5wdXNoKG5ldyByckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudChi
LCBbeCwgeV0sIGRlcHRoKSk7CisKKyAgICAgICAgICAgIHZhciBvZmZzZXQyID0gMiAqIG9mZnNl
dDsKKyAgICAgICAgICAgIGlmIChvZmZzZXQyID4gLTEgKiBkWzFdKSB7CisgICAgICAgICAgICAg
ICAgeCArPSB4c3RlcDsKKyAgICAgICAgICAgICAgICBvZmZzZXQgLT0gZFsxXTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKG9mZnNldDIgPCBkWzBdKSB7CisgICAgICAgICAgICAg
ICAgeSArPSB5c3RlcDsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gZFswXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFja2V0czsKKyAgICB9OworCisgICAg
dmFyIHByaW1pdGl2ZXMgPSBuZXcgcnJSZW5kZXJlci5QcmltaXRpdmVMaXN0KHByaW1pdGl2ZSwg
Y291bnQsIGZpcnN0KTsKKyAgICAvLyBEbyBub3QgZHJhdyBpZiBub3RoaW5nIHRvIGRyYXcKKyAg
ICBpZiAocHJpbWl0aXZlcy5nZXROdW1FbGVtZW50cygpID09IDApCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFByZXBhcmUgdHJhbnNmb3JtYXRpb24KKyAgICB2YXIgbnVtVmFyeWluZ3MgPSBw
cm9ncmFtLnZlcnRleFNoYWRlci5nZXRPdXRwdXRzKCkubGVuZ3RoOworICAgIHZhciB2cGFsbG9j
ID0gbmV3IHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldEFsbG9jYXRvcihudW1WYXJ5aW5ncyk7
CisgICAgdmFyIHZlcnRleFBhY2tldHMgPSB2cGFsbG9jLmFsbG9jQXJyYXkocHJpbWl0aXZlcy5n
ZXROdW1FbGVtZW50cygpKTsKKyAgICB2YXIgZHJhd0NvbnRleHQgPSBuZXcgcnJSZW5kZXJlci5E
cmF3Q29udGV4dCgpOworICAgIGRyYXdDb250ZXh0LnByaW1pdGl2ZUlEID0gMDsKKworICAgIHZh
ciBudW1iZXJPZlZlcnRpY2VzID0gcHJpbWl0aXZlcy5nZXROdW1FbGVtZW50cygpOworICAgIHZh
ciBudW1WZXJ0ZXhQYWNrZXRzID0gMDsKKyAgICBmb3IgKHZhciBlbGVtZW50TmR4ID0gMDsgZWxl
bWVudE5keCA8IG51bWJlck9mVmVydGljZXM7ICsrZWxlbWVudE5keCkgeworCisgICAgICAgIC8v
IGlucHV0CisgICAgICAgIHZlcnRleFBhY2tldHNbbnVtVmVydGV4UGFja2V0c10uaW5zdGFuY2VO
ZHggPSBpbnN0YW5jZUlEOworICAgICAgICB2ZXJ0ZXhQYWNrZXRzW251bVZlcnRleFBhY2tldHNd
LnZlcnRleE5keCA9IHByaW1pdGl2ZXMuZ2V0SW5kZXgoZWxlbWVudE5keCk7CisKKyAgICAgICAg
Ly8gb3V0cHV0CisgICAgICAgIHZlcnRleFBhY2tldHNbbnVtVmVydGV4UGFja2V0c10ucG9pbnRT
aXplID0gc3RhdGUucG9pbnQucG9pbnRTaXplOyAvLyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGN1
cnJlbnQgc3RhdGUKKyAgICAgICAgdmVydGV4UGFja2V0c1tudW1WZXJ0ZXhQYWNrZXRzXS5wb3Np
dGlvbiA9IFswLCAwLCAwLCAwXTsgLy8gbm8gdW5kZWZpbmVkIHZhbHVlcworCisgICAgICAgICsr
bnVtVmVydGV4UGFja2V0czsKKworICAgIH0KKyAgICBwcm9ncmFtLnNoYWRlVmVydGljZXModmVy
dGV4QXR0cmlicywgdmVydGV4UGFja2V0cywgbnVtVmVydGV4UGFja2V0cyk7CisKKyAgICB2YXIg
em4gPSBzdGF0ZS52aWV3cG9ydC56bjsKKyAgICB2YXIgemYgPSBzdGF0ZS52aWV3cG9ydC56ZjsK
KyAgICB2YXIgZGVwdGhTY2FsZSA9ICh6ZiAtIHpuKSAvIDI7CisgICAgdmFyIGRlcHRoQmlhcyA9
ICh6ZiArIHpuKSAvIDI7CisKKyAgICAvLyBGb3IgZWFjaCBxdWFkLCB3ZSBnZXQgYSBncm91cCBv
ZiBzaXggdmVydGV4IHBhY2tldHMKKyAgICBmb3IgKHZhciBwcmltID0gcHJpbWl0aXZlcy5nZXRO
ZXh0UHJpbWl0aXZlKHRydWUpOyBwcmltLmxlbmd0aCA+IDA7IHByaW0gPSBwcmltaXRpdmVzLmdl
dE5leHRQcmltaXRpdmUoKSkgeworICAgICAgICB2YXIgbGluZVBhY2tldHMgPSBzZWxlY3RWZXJ0
aWNlcyh2ZXJ0ZXhQYWNrZXRzLCBwcmltKTsKKworICAgICAgICB2YXIgdjAgPSByclJlbmRlcmVy
LnRyYW5zZm9ybUdMVG9XaW5kb3dDb29yZHMoc3RhdGUsIGxpbmVQYWNrZXRzWzBdKTsKKyAgICAg
ICAgdmFyIHYxID0gcnJSZW5kZXJlci50cmFuc2Zvcm1HTFRvV2luZG93Q29vcmRzKHN0YXRlLCBs
aW5lUGFja2V0c1sxXSk7CisgICAgICAgIHYwWzJdID0gbGluZVBhY2tldHNbMF0ucG9zaXRpb25b
Ml07CisgICAgICAgIHYxWzJdID0gbGluZVBhY2tldHNbMV0ucG9zaXRpb25bMl07CisKKyAgICAg
ICAgdjBbMF0gPSBNYXRoLmZsb29yKHYwWzBdKTsKKyAgICAgICAgdjBbMV0gPSBNYXRoLmZsb29y
KHYwWzFdKTsKKyAgICAgICAgdjFbMF0gPSBNYXRoLmZsb29yKHYxWzBdKTsKKyAgICAgICAgdjFb
MV0gPSBNYXRoLmZsb29yKHYxWzFdKTsKKworICAgICAgICB2YXIgbGluZVdpZHRoID0gc3RhdGUu
bGluZS5saW5lV2lkdGg7CisKKyAgICAgICAgdmFyIHNoYWRpbmdDb250ZXh0ID0gbmV3IHJyU2hh
ZGluZ0NvbnRleHQuRnJhZ21lbnRTaGFkaW5nQ29udGV4dCgKKyAgICAgICAgICAgIGxpbmVQYWNr
ZXRzWzBdLm91dHB1dHMsCisgICAgICAgICAgICBsaW5lUGFja2V0c1sxXS5vdXRwdXRzLAorICAg
ICAgICAgICAgbnVsbAorICAgICAgICApOworICAgICAgICB2YXIgaXNYbWFqb3IgPSBNYXRoLmFi
cyh2MVswXSAtIHYwWzBdKSA+PSBNYXRoLmFicyh2MVsxXSAtIHYwWzFdKTsKKyAgICAgICAgdmFy
IHBhY2tldHMgPSBbXTsKKyAgICAgICAgaWYgKGlzWG1ham9yKQorICAgICAgICAgICAgcGFja2V0
cyA9IHJhc3Rlcml6ZUxpbmUoW3YwWzBdLCB2MFsxXSAtIChsaW5lV2lkdGggLSAxKSAvIDIsIHYw
WzJdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2MVswXSwgdjFbMV0g
LSAobGluZVdpZHRoIC0gMSkgLyAyLCB2MVsyXV0pOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYWNrZXRzID0gcmFzdGVyaXplTGluZShbdjBbMF0gLSAobGluZVdpZHRoIC0gMSkgLyAyLCB2
MFsxXSwgdjBbMl1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3YxWzBd
IC0gKGxpbmVXaWR0aCAtIDEpIC8gMiwgdjFbMV0sIHYxWzJdXSk7CisgICAgICAgIHZhciBudW1Q
YWNrZXRzID0gcGFja2V0cy5sZW5ndGg7CisgICAgICAgIGlmIChsaW5lV2lkdGggPiAxKQorICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1QYWNrZXRzOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcCA9IHBhY2tldHNbaV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDE7IGogPCBsaW5lV2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBk
ZVV0aWwuY2xvbmUocCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1htYWpvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHAyLnBpeGVsQ29vcmRbMV0gKz0gajsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcDIucGl4ZWxDb29yZFswXSArPSBq
OworICAgICAgICAgICAgICAgICAgICBwYWNrZXRzLnB1c2gocDIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICB2YXIgY2xpcHBlZCA9IFtdOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHBhY2tldHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZh
ciBwID0gcGFja2V0c1tpXTsKKyAgICAgICAgICAgIGlmIChyclJlbmRlcmVyLmNsaXBUZXN0KHAu
cGl4ZWxDb29yZFswXSwgcC5waXhlbENvb3JkWzFdLCBwLnNhbXBsZURlcHRoc1swXSwgc3RhdGUu
dmlld3BvcnQucmVjdCkpCisgICAgICAgICAgICAgICAgY2xpcHBlZC5wdXNoKHApOworICAgICAg
ICB9CisgICAgICAgIHByb2dyYW0uc2hhZGVGcmFnbWVudHMoY2xpcHBlZCwgc2hhZGluZ0NvbnRl
eHQpOworCisgICAgICAgIHJyUmVuZGVyZXIud3JpdGVGcmFnbWVudHMyKHN0YXRlLCByZW5kZXJU
YXJnZXQsIGNsaXBwZWQpOworICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtyclJlbmRlclN0
YXRlLlJlbmRlclN0YXRlfSBzdGF0ZQorICogQHBhcmFtIHtyclJlbmRlcmVyLlJlbmRlclRhcmdl
dH0gcmVuZGVyVGFyZ2V0CisgKiBAcGFyYW0ge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dy
YW19IHByb2dyYW0KKyAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmli
Pn0gdmVydGV4QXR0cmlicworICogQHBhcmFtIHtyclJlbmRlcmVyLlByaW1pdGl2ZVR5cGV9IHBy
aW1pdGl2ZQorICogQHBhcmFtIHsobnVtYmVyfHJyUmVuZGVyZXIuRHJhd0luZGljZXMpfSBmaXJz
dCBJbmRleCBvZiBmaXJzdCBxdWFkIHZlcnRleAorICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IE51
bWJlciBvZiBpbmRpY2VzCisgKiBAcGFyYW0ge251bWJlcn0gaW5zdGFuY2VJRAorICovCityclJl
bmRlcmVyLmRyYXdQb2ludHMgPSBmdW5jdGlvbihzdGF0ZSwgcmVuZGVyVGFyZ2V0LCBwcm9ncmFt
LCB2ZXJ0ZXhBdHRyaWJzLCBwcmltaXRpdmUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VJRCkgewor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0
Pn0gdmVydGljZXMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGluZGljZXMKKyAgICAg
KiBAcmV0dXJuIHtBcnJheTxyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fQorICAgICAqLwor
ICAgIHZhciBzZWxlY3RWZXJ0aWNlcyA9IGZ1bmN0aW9uKHZlcnRpY2VzLCBpbmRpY2VzKSB7Cisg
ICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRp
Y2VzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcmVzdWx0LnB1c2godmVydGljZXNbaW5kaWNl
c1tpXV0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICB2YXIgcHJpbWl0
aXZlcyA9IG5ldyByclJlbmRlcmVyLlByaW1pdGl2ZUxpc3QocHJpbWl0aXZlLCBjb3VudCwgZmly
c3QpOworICAgIC8vIERvIG5vdCBkcmF3IGlmIG5vdGhpbmcgdG8gZHJhdworICAgIGlmIChwcmlt
aXRpdmVzLmdldE51bUVsZW1lbnRzKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
UHJlcGFyZSB0cmFuc2Zvcm1hdGlvbgorICAgIHZhciBudW1WYXJ5aW5ncyA9IHByb2dyYW0udmVy
dGV4U2hhZGVyLmdldE91dHB1dHMoKS5sZW5ndGg7CisgICAgdmFyIHZwYWxsb2MgPSBuZXcgcnJW
ZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0QWxsb2NhdG9yKG51bVZhcnlpbmdzKTsKKyAgICB2YXIg
dmVydGV4UGFja2V0cyA9IHZwYWxsb2MuYWxsb2NBcnJheShwcmltaXRpdmVzLmdldE51bUVsZW1l
bnRzKCkpOworICAgIHZhciBkcmF3Q29udGV4dCA9IG5ldyByclJlbmRlcmVyLkRyYXdDb250ZXh0
KCk7CisgICAgZHJhd0NvbnRleHQucHJpbWl0aXZlSUQgPSAwOworCisgICAgdmFyIG51bWJlck9m
VmVydGljZXMgPSBwcmltaXRpdmVzLmdldE51bUVsZW1lbnRzKCk7CisgICAgdmFyIG51bVZlcnRl
eFBhY2tldHMgPSAwOworICAgIGZvciAodmFyIGVsZW1lbnROZHggPSAwOyBlbGVtZW50TmR4IDwg
bnVtYmVyT2ZWZXJ0aWNlczsgKytlbGVtZW50TmR4KSB7CisKKyAgICAgICAgLy8gaW5wdXQKKyAg
ICAgICAgdmVydGV4UGFja2V0c1tudW1WZXJ0ZXhQYWNrZXRzXS5pbnN0YW5jZU5keCA9IGluc3Rh
bmNlSUQ7CisgICAgICAgIHZlcnRleFBhY2tldHNbbnVtVmVydGV4UGFja2V0c10udmVydGV4TmR4
ID0gcHJpbWl0aXZlcy5nZXRJbmRleChlbGVtZW50TmR4KTsKKworICAgICAgICAvLyBvdXRwdXQK
KyAgICAgICAgdmVydGV4UGFja2V0c1tudW1WZXJ0ZXhQYWNrZXRzXS5wb2ludFNpemUgPSBzdGF0
ZS5wb2ludC5wb2ludFNpemU7IC8vIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgY3VycmVudCBzdGF0
ZQorICAgICAgICB2ZXJ0ZXhQYWNrZXRzW251bVZlcnRleFBhY2tldHNdLnBvc2l0aW9uID0gWzAs
IDAsIDAsIDBdOyAvLyBubyB1bmRlZmluZWQgdmFsdWVzCisKKyAgICAgICAgKytudW1WZXJ0ZXhQ
YWNrZXRzOworCisgICAgfQorICAgIHByb2dyYW0uc2hhZGVWZXJ0aWNlcyh2ZXJ0ZXhBdHRyaWJz
LCB2ZXJ0ZXhQYWNrZXRzLCBudW1WZXJ0ZXhQYWNrZXRzKTsKKworICAgIHZhciB6biA9IHN0YXRl
LnZpZXdwb3J0LnpuOworICAgIHZhciB6ZiA9IHN0YXRlLnZpZXdwb3J0LnpmOworICAgIHZhciBk
ZXB0aFNjYWxlID0gKHpmIC0gem4pIC8gMjsKKyAgICB2YXIgZGVwdGhCaWFzID0gKHpmICsgem4p
IC8gMjsKKworICAgIC8vIEZvciBlYWNoIHByaW1pdGl2ZSwgd2UgZHJhdyBhIHBvaW50LgorICAg
IGZvciAodmFyIHByaW0gPSBwcmltaXRpdmVzLmdldE5leHRQcmltaXRpdmUodHJ1ZSk7IHByaW0u
bGVuZ3RoID4gMDsgcHJpbSA9IHByaW1pdGl2ZXMuZ2V0TmV4dFByaW1pdGl2ZSgpKSB7CisgICAg
ICAgIHZhciBwb2ludFBhY2tldHMgPSBzZWxlY3RWZXJ0aWNlcyh2ZXJ0ZXhQYWNrZXRzLCBwcmlt
KTsKKworICAgICAgICB2YXIgdjAgPSByclJlbmRlcmVyLnRyYW5zZm9ybUdMVG9XaW5kb3dDb29y
ZHMoc3RhdGUsIHBvaW50UGFja2V0c1swXSk7CisgICAgICAgIHYwWzJdID0gcG9pbnRQYWNrZXRz
WzBdLnBvc2l0aW9uWzJdOworICAgICAgICB2YXIgcG9pbnRTaXplID0gcG9pbnRQYWNrZXRzWzBd
LnBvaW50U2l6ZTsKKworICAgICAgICB2YXIgc2hhZGluZ0NvbnRleHQgPSBuZXcgcnJTaGFkaW5n
Q29udGV4dC5GcmFnbWVudFNoYWRpbmdDb250ZXh0KAorICAgICAgICAgICAgcG9pbnRQYWNrZXRz
WzBdLm91dHB1dHMsCisgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgbnVsbAorICAgICAg
ICApOworICAgICAgICB2YXIgcGFja2V0cyA9IFtdOworCisgICAgICAgIHZhciB4ID0gdjBbMF07
CisgICAgICAgIHZhciB5ID0gdjBbMV07CisgICAgICAgIHZhciBkZXB0aCA9IHYwWzJdOworICAg
ICAgICB2YXIgYiA9IFsxLCAwLCAwXTsKKyAgICAgICAgZGVwdGggPSBkZXB0aCAqIGRlcHRoU2Nh
bGUgKyBkZXB0aEJpYXM7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IE1hdGguZmxvb3IoeCAtIHBv
aW50U2l6ZSAvIDIpOyBpIDwgeCArIHBvaW50U2l6ZSAvIDI7IGkrKykgeworICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IE1hdGguZmxvb3IoeSAtIHBvaW50U2l6ZSAvIDIpOyBqIDwgeSArIHBvaW50
U2l6ZSAvIDI7IGorKykgeworICAgICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gaSArIDAuNTsK
KyAgICAgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGogKyAwLjU7CisgICAgICAgICAgICAgICAg
aWYgKE1hdGguYWJzKGNlbnRlclggLSB4KSA8PSBwb2ludFNpemUgLyAyICYmCisgICAgICAgICAg
ICAgICAgICAgIE1hdGguYWJzKGNlbnRlclkgLSB5KSA8PSBwb2ludFNpemUgLyAyICYmCisgICAg
ICAgICAgICAgICAgICAgIHJyUmVuZGVyZXIuY2xpcFRlc3QoaSwgaiwgZGVwdGgsIHN0YXRlLnZp
ZXdwb3J0LnJlY3QpKQorICAgICAgICAgICAgICAgICAgICBwYWNrZXRzLnB1c2gobmV3IHJyRnJh
Z21lbnRPcGVyYXRpb25zLkZyYWdtZW50KGIsIFtpLCBqXSwgZGVwdGgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHByb2dyYW0uc2hhZGVGcmFnbWVudHMocGFja2V0cywg
c2hhZGluZ0NvbnRleHQpOworCisgICAgICAgIHJyUmVuZGVyZXIud3JpdGVGcmFnbWVudHMyKHN0
YXRlLCByZW5kZXJUYXJnZXQsIHBhY2tldHMpOworICAgIH0KK307CisKK30pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFt
ZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFkZXJzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVy
ZXIvcnJTaGFkZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0M2Q5YjcyODljZjRkODgzZWZkNDI1ODAyNWJh
ZjUyYmVjM2M3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclNo
YWRlcnMuanMKQEAgLTAsMCArMSwxMjMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0Vs
ZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQg
MjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0
cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRl
cnMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0Jyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJpYicp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhQYWNr
ZXQnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIHJyU2hhZGVycyA9IGZyYW1l
d29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRlcnM7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1l
d29yay5jb21tb24udGN1VGV4dHVyZTsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGg7Cit2YXIgcnJHZW5lcmljVmVjdG9yID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyR2VuZXJpY1ZlY3RvcjsKK3ZhciByclNoYWRpbmdDb250ZXh0ID0gZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQ7Cit2YXIgcnJWZXJ0ZXhBdHRyaWIg
PSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWI7Cit2YXIgcnJWZXJ0
ZXhQYWNrZXQgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhQYWNrZXQ7CisK
KyAgICAvKioKKyAgICAgKiBWZXJ0ZXggc2hhZGVyIGlucHV0IGluZm9ybWF0aW9uCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICovCisgICAgcnJTaGFkZXJzLlZlcnRleElucHV0SW5mbyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVj
VHlwZX0gKi8gdGhpcy50eXBlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBTaGFkZXIgdmFy
eWluZyBpbmZvcm1hdGlvbgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIHJyU2hh
ZGVycy5WZXJ0ZXhWYXJ5aW5nSW5mbyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUg
e3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZX0gKi8gdGhpcy50eXBlOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBmbGF0c2hhZGUgPSBmYWxzZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogRnJhZ21lbnQgc2hhZGVyIG91dHB1dCBpbmZvcm1hdGlvbgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIHJyU2hhZGVycy5GcmFnbWVudE91dHB1dEluZm8g
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy9TZW5zaWJsZSBkZWZhdWx0cworICAgICAgICAvKiog
QHR5cGUge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZX0gKi8gdGhpcy50eXBlOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBWZXJ0ZXggc2hhZGVyIGludGVyZmFjZQorICAgICAqCisg
ICAgICogVmVydGV4IHNoYWRlcnMgZXhlY3V0ZSBzaGFkaW5nIGZvciBzZXQgb2YgdmVydGV4IHBh
Y2tldHMuIFNlZSBWZXJ0ZXhQYWNrZXQKKyAgICAgKiBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRl
dGFpbHMgb24gc2hhZGluZyBBUEkuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG51bUlucHV0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1PdXRwdXRzCisg
ICAgICovCisgICAgcnJTaGFkZXJzLlZlcnRleFNoYWRlciA9IGZ1bmN0aW9uKG51bUlucHV0cywg
bnVtT3V0cHV0cykgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PHJyU2hhZGVycy5WZXJ0ZXhJ
bnB1dEluZm8+fSAqLyB0aGlzLm1faW5wdXRzID0gW107CisgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IG51bUlucHV0czsgbmR4KyspIHRoaXMubV9pbnB1dHNbbmR4XSA9IG5ldyByclNo
YWRlcnMuVmVydGV4SW5wdXRJbmZvKCk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8cnJTaGFk
ZXJzLlZlcnRleFZhcnlpbmdJbmZvPn0gKi8gdGhpcy5tX291dHB1dHMgPSBbXTsKKyAgICAgICAg
Zm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtT3V0cHV0czsgbmR4KyspIHRoaXMubV9vdXRwdXRz
W25keF0gPSBuZXcgcnJTaGFkZXJzLlZlcnRleFZhcnlpbmdJbmZvKCk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIGdldElucHV0cworICAgICAqIEByZXR1cm4ge0FycmF5PHJyU2hhZGVycy5W
ZXJ0ZXhJbnB1dEluZm8+fQorICAgICAqLworICAgIHJyU2hhZGVycy5WZXJ0ZXhTaGFkZXIucHJv
dG90eXBlLmdldElucHV0cyA9IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLm1faW5wdXRzO307CisK
KyAgICAvKioKKyAgICAgKiBnZXRPdXRwdXRzCisgICAgICogQHJldHVybiB7QXJyYXk8cnJTaGFk
ZXJzLlZlcnRleFZhcnlpbmdJbmZvPn0KKyAgICAgKi8KKyAgICByclNoYWRlcnMuVmVydGV4U2hh
ZGVyLnByb3RvdHlwZS5nZXRPdXRwdXRzID0gZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMubV9vdXRw
dXRzO307CisKKyAgICAvKioKKyAgICAgKiBGcmFnbWVudCBzaGFkZXIgaW50ZXJmYWNlCisgICAg
ICoKKyAgICAgKiBGcmFnbWVudCBzaGFkZXIgZXhlY3V0ZXMgc2hhZGluZyBmb3IgbGlzdCBvZiBm
cmFnbWVudCBwYWNrZXRzLiBTZWUKKyAgICAgKiBGcmFnbWVudFBhY2tldCBkb2N1bWVudGF0aW9u
IGZvciBtb3JlIGRldGFpbHMgb24gc2hhZGluZyBBUEkuCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUlucHV0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBu
dW1PdXRwdXRzCisgICAgICovCisgICAgcnJTaGFkZXJzLkZyYWdtZW50U2hhZGVyID0gZnVuY3Rp
b24obnVtSW5wdXRzLCBudW1PdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8cnJT
aGFkZXJzLlZlcnRleFZhcnlpbmdJbmZvPn0gKi8gdGhpcy5tX2lucHV0cyA9IFtdOworICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1JbnB1dHM7IG5keCsrKSB0aGlzLm1faW5wdXRz
W25keF0gPSBuZXcgcnJTaGFkZXJzLlZlcnRleFZhcnlpbmdJbmZvKCk7CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8cnJTaGFkZXJzLkZyYWdtZW50T3V0cHV0SW5mbz59ICovIHRoaXMubV9vdXRw
dXRzID0gW107CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IG51bU91dHB1dHM7IG5k
eCsrKSB0aGlzLm1fb3V0cHV0c1tuZHhdID0gbmV3IHJyU2hhZGVycy5GcmFnbWVudE91dHB1dElu
Zm8oKTsKKyAgICAgICAgLyoqIEB0eXBlIHsqfSAqLyB0aGlzLm1fY29udGFpbmVyOyAvLyBvd25l
ciBvYmplY3QKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2V0SW5wdXRzCisgICAgICogQHJl
dHVybiB7QXJyYXk8cnJTaGFkZXJzLlZlcnRleFZhcnlpbmdJbmZvPn0KKyAgICAgKi8KKyAgICBy
clNoYWRlcnMuRnJhZ21lbnRTaGFkZXIucHJvdG90eXBlLmdldElucHV0cyA9IGZ1bmN0aW9uKCkg
e3JldHVybiB0aGlzLm1faW5wdXRzO307CisKKyAgICAvKioKKyAgICAgKiBnZXRPdXRwdXRzCisg
ICAgICogQHJldHVybiB7QXJyYXk8cnJTaGFkZXJzLkZyYWdtZW50T3V0cHV0SW5mbz59CisgICAg
ICovCisgICAgcnJTaGFkZXJzLkZyYWdtZW50U2hhZGVyLnByb3RvdHlwZS5nZXRPdXRwdXRzID0g
ZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMubV9vdXRwdXRzO307CisKK30pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdv
cmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFkaW5nQ29udGV4dC5qcyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJl
bmRlcmVyL3JyU2hhZGluZ0NvbnRleHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhiOWQyMDFmOTUxZTg1NTY1
YjNjNGU1Zjg0YmNjOTc3YTI0ZTlhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJl
bmRlcmVyL3JyU2hhZGluZ0NvbnRleHQuanMKQEAgLTAsMCArMSwxMTMgQEAKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0
aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Cisg
KgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5y
ZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9ucycpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyRGVmcycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicpOworCitnb29nLnNjb3Bl
KGZ1bmN0aW9uKCkgeworCisgICAgdmFyIHJyU2hhZGluZ0NvbnRleHQgPSBmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dDsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciByckRlZnMgPSBmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJEZWZzOworICAgIHZhciByckZyYWdtZW50T3BlcmF0aW9ucyA9IGZy
YW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9uczsKKyAgICB2YXIg
cnJHZW5lcmljVmVjdG9yID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1Zl
Y3RvcjsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgh
eCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBGcmFnbWVudCBzaGFkaW5nIGNvbnRleHQKKyAgICAgKgorICAg
ICAqIENvbnRhaW5zIHBlci1wcmltaXRpdmUgaW5mb3JtYXRpb24gdXNlZCBpbiBmcmFnbWVudCBz
aGFkaW5nCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtBcnJheTxBcnJheTxu
dW1iZXI+Pn0gdmFyeWluZzAgKEdlbmVyaWNWZWM0KikKKyAgICAgKiBAcGFyYW0ge0FycmF5PEFy
cmF5PG51bWJlcj4+fSB2YXJ5aW5nMSAoR2VuZXJpY1ZlYzQqKQorICAgICAqIEBwYXJhbSB7QXJy
YXk8QXJyYXk8bnVtYmVyPj59IHZhcnlpbmcyIChHZW5lcmljVmVjNCopCisgICAgICovCisgICAg
cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRpbmdDb250ZXh0ID0gZnVuY3Rpb24odmFyeWlu
ZzAsIHZhcnlpbmcxLCB2YXJ5aW5nMikgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5
PEFycmF5PG51bWJlcj4+Pn0gKi8gdGhpcy52YXJ5aW5ncyA9IFt2YXJ5aW5nMCwgdmFyeWluZzEs
IHZhcnlpbmcyXTsgLy8hPCBWZXJ0ZXggc2hhZGVyIG91dHB1dHMuIFBvaW50ZXIgd2lsbCBiZSBO
VUxMIGlmIHRoZXJlIGlzIG5vIHN1Y2ggdmVydGV4LgorICAgICAgICB0aGlzLm1fd2lkdGggPSAw
eEZGRkZGRkZGOworICAgICAgICB0aGlzLm1faGVpZ2h0ID0gMHhGRkZGRkZGRjsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGhlaWdodAorICAgICAqLworICAgIHJyU2hhZGluZ0NvbnRleHQuRnJhZ21lbnRTaGFk
aW5nQ29udGV4dC5wcm90b3R5cGUuc2V0U2l6ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsK
KyAgICAgICAgdGhpcy5tX3dpZHRoID0gd2lkdGg7CisgICAgICAgIHRoaXMubV9oZWlnaHQgPSBo
ZWlnaHQ7CisgICAgfTsKKworICAgIHJyU2hhZGluZ0NvbnRleHQuRnJhZ21lbnRTaGFkaW5nQ29u
dGV4dC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubV93aWR0aDsKKyAgICB9OworCisgICAgcnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRp
bmdDb250ZXh0LnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubV9oZWlnaHQ7CisgICAgfTsKKworICAgIC8vIFJlYWQgVmFyeWluZworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudH0gcGFja2V0
CisgICAgICogQHBhcmFtIHtyclNoYWRpbmdDb250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9
IGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFyeWluZ0xvYworICAgICAqIEByZXR1
cm4ge0FycmF5PG51bWJlcj59IChWZWN0b3I8VCwgND4pCisgICAgICovCisgICAgcnJTaGFkaW5n
Q29udGV4dC5yZWFkVHJpYW5nbGVWYXJ5aW5nID0gZnVuY3Rpb24ocGFja2V0LCBjb250ZXh0LCB2
YXJ5aW5nTG9jKSB7CisgICAgICAgIHZhciByZXN1bHQgPSBkZU1hdGguc2NhbGUoCisgICAgICAg
ICAgICBjb250ZXh0LnZhcnlpbmdzWzBdW3ZhcnlpbmdMb2NdLAorICAgICAgICAgICAgcGFja2V0
LmJhcnljZW50cmljWzBdCisgICAgICAgICk7CisKKyAgICAgICAgaWYgKGNvbnRleHQudmFyeWlu
Z3NbMV0pCisgICAgICAgICAgICByZXN1bHQgPSBkZU1hdGguYWRkKHJlc3VsdCwgZGVNYXRoLnNj
YWxlKAorICAgICAgICAgICAgICAgIGNvbnRleHQudmFyeWluZ3NbMV1bdmFyeWluZ0xvY10sCisg
ICAgICAgICAgICAgICAgcGFja2V0LmJhcnljZW50cmljWzFdCisgICAgICAgICAgICApKTsKKwor
ICAgICAgICBpZiAoY29udGV4dC52YXJ5aW5nc1syXSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGRl
TWF0aC5hZGQocmVzdWx0LCBkZU1hdGguc2NhbGUoCisgICAgICAgICAgICAgICAgY29udGV4dC52
YXJ5aW5nc1syXVt2YXJ5aW5nTG9jXSwKKyAgICAgICAgICAgICAgICBwYWNrZXQuYmFyeWNlbnRy
aWNbMl0KKyAgICAgICAgICAgICkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7cnJGcmFnbWVudE9wZXJhdGlvbnMuRnJhZ21lbnR9
IHBhY2tldAorICAgICAqIEBwYXJhbSB7cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRpbmdD
b250ZXh0fSBjb250ZXh0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhcnlpbmdMb2MKKyAgICAg
KiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSAoVmVjdG9yPFQsIDQ+KQorICAgICAqLworICAgIHJy
U2hhZGluZ0NvbnRleHQucmVhZFZhcnlpbmcgPSBmdW5jdGlvbihwYWNrZXQsIGNvbnRleHQsIHZh
cnlpbmdMb2MpIHsKKyAgICAgICAgcmV0dXJuIHJyU2hhZGluZ0NvbnRleHQucmVhZFRyaWFuZ2xl
VmFyeWluZyhwYWNrZXQsIGNvbnRleHQsIHZhcnlpbmdMb2MpOworICAgIH07CisKK30pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJVdGlsLmpzIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVu
ZGVyZXIvcnJVdGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzYTU4MTY4ZmMwNTk3ODE3NjJhNWRhYjllNmYz
OGQ5YmM5ZGM2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclV0
aWwuanMKQEAgLTAsMCArMSwxMTUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1l
bnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAx
NCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWwnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29u
dGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5z
Z2xyUmVmZXJlbmNlQ29udGV4dCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAg
dmFyIHJyVXRpbCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWw7CisgICAgdmFy
IHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xD
b250ZXh0OworICAgIHZhciBzZ2xyUmVmZXJlbmNlQ29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wu
c2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzZ2xyR0xDb250ZXh0LkdMQ29udGV4dCB8IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQg
fCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFy
YW0ge251bWJlcnxPYmplY3R9IHByb2dyYW0KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHAwCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwMQorICAgICAqLworICAgIHJyVXRp
bC5kcmF3UXVhZCA9IGZ1bmN0aW9uKGN0eCwgcHJvZ3JhbSwgcDAsIHAxKSB7CisgICAgICAgIC8v
IFZlcnRleCBkYXRhLgorICAgICAgICB2YXIgaHogPSAocDBbMl0gKyBwMVsyXSkgKiAwLjU7Cisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHBvc2l0aW9uID0gWworICAg
ICAgICBwMFswXSwgcDBbMV0sIHAwWzJdLCAxLjAsCisgICAgICAgIHAwWzBdLCBwMVsxXSwgaHos
IDEuMCwKKyAgICAgICAgcDFbMF0sIHAwWzFdLCBoeiwgMS4wLAorICAgICAgICBwMVswXSwgcDFb
MV0sIHAxWzJdLCAxLjAKKyAgICAgICAgXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgY29vcmQgPSBbCisgICAgICAgIDAuMCwgMC4wLAorICAgICAgICAwLjAsIDEu
MCwKKyAgICAgICAgMS4wLCAwLjAsCisgICAgICAgIDEuMCwgMS4wCisgICAgICAgIF07CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGluZGljZXMgPSBbMCwgMSwgMiwg
MiwgMSwgM107CisKKyAgICAgICAgdmFyIHBvc0xvYyA9IGN0eC5nZXRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCAnYV9wb3NpdGlvbicpOworICAgICAgICBpZiAocG9zTG9jID09IC0xKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdhX3Bvc2l0aW9uIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5l
ZC4nKTsKKworICAgICAgICB2YXIgY29vcmRMb2MgPSBjdHguZ2V0QXR0cmliTG9jYXRpb24ocHJv
Z3JhbSwgJ2FfY29vcmQnKTsKKyAgICAgICAgdmFyIHZhb0lEOworICAgICAgICB2YXIgYnVmSURz
ID0gW107CisKKyAgICAgICAgdmFvSUQgPSBjdHguY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAg
ICAgY3R4LmJpbmRWZXJ0ZXhBcnJheSh2YW9JRCk7CisKKyAgICAgICAgYnVmSURzWzBdID0gY3R4
LmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBidWZJRHNbMV0gPSBjdHguY3JlYXRlQnVmZmVyKCk7
CisKKyAgICAgICAgY3R4LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgaWYgKHBvc0xv
YyA+PSAwKSB7CisgICAgICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZklEc1swXSk7CisgICAgICAgICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkocG9zaXRpb24pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAg
IGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NMb2MpOworICAgICAgICAgICAgY3R4LnZl
cnRleEF0dHJpYlBvaW50ZXIocG9zTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisg
ICAgICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvb3JkTG9jID49IDApIHsKKyAgICAgICAgICAgIGN0eC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmSURzWzFdKTsKKyAgICAgICAgICAgIGN0eC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShjb29yZCksIGdsLlNUQVRJ
Q19EUkFXKTsKKworICAgICAgICAgICAgY3R4LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvb3Jk
TG9jKTsKKyAgICAgICAgICAgIGN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvb3JkTG9jLCAyLCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIG5keElEID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOworCisgICAgICAgICAgICBjdHguYmluZEJ1
ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmR4SUQpOworICAgICAgICAgICAgY3R4LmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShpbmRpY2Vz
KSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICBjdHguZHJhd0VsZW1lbnRzKGdsLlRS
SUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworCisgICAgICAgICAgICBjdHguYmlu
ZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgICAgICBjdHgu
ZGVsZXRlQnVmZmVyKG5keElEKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0eC5iaW5kVmVydGV4
QXJyYXkobnVsbCk7CisgICAgICAgIGN0eC5kZWxldGVCdWZmZXIoYnVmSURzWzBdKTsKKyAgICAg
ICAgY3R4LmRlbGV0ZUJ1ZmZlcihidWZJRHNbMV0pOworICAgICAgICBjdHguZGVsZXRlVmVydGV4
QXJyYXkodmFvSUQpOworCisgICAgICAgIGlmIChwb3NMb2MgPj0gMCkKKyAgICAgICAgICBjdHgu
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc0xvYyk7CisKKyAgICAgICAgaWYgKGNvb3JkTG9j
ID49IDApCisgICAgICAgICAgY3R4LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb29yZExvYyk7
CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclZlcnRl
eEF0dHJpYi5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyVmVydGV4QXR0cmliLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2MDk1ZTJjYzliZjdmNTcyOTU4YWNlNzUxMTQyZTNiMmJkMGFkZDQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclZlcnRleEF0dHJpYi5qcwpAQCAtMCww
ICsxLDY0MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJv
dmlkZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5y
ZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InKTsKKworZ29vZy5zY29wZShmdW5jdGlv
bigpIHsKKwordmFyIHJyVmVydGV4QXR0cmliID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyVmVydGV4QXR0cmliOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
TWF0aDsKK3ZhciB0Y3VGbG9hdCA9IGZyYW1ld29yay5jb21tb24udGN1RmxvYXQ7Cit2YXIgcnJH
ZW5lcmljVmVjdG9yID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3Rv
cjsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiByclZlcnRleEF0dHJpYi5Ob3JtYWxPcmRlcgorICAgICAqIEBlbnVt
CisgICAgICovCisgICAgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIgPSB7CisgICAgICAgIFQw
OiAwLAorICAgICAgICBUMTogMSwKKyAgICAgICAgVDI6IDIsCisgICAgICAgIFQzOiAzCisgICAg
fTsKKworICAgIC8qKgorICAgICAqIHJyVmVydGV4QXR0cmliLkJHUkFPcmRlcgorICAgICAqIEBl
bnVtCisgICAgICovCisgICAgcnJWZXJ0ZXhBdHRyaWIuQkdSQU9yZGVyID0geworICAgICAgICBU
MDogMiwKKyAgICAgICAgVDE6IDEsCisgICAgICAgIFQyOiAwLAorICAgICAgICBUMzogMworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlIGVu
dW0KKyAgICAgKiBAZW51bQorICAgICAqLworICAgIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJp
YlR5cGUgPSB7CisgICAgICAgIC8vIENhbiBvbmx5IGJlIHJyVmVydGV4QXR0cmliLnJlYWQgYXMg
ZmxvYXRzCisgICAgICAgIEZMT0FUOiAwLAorICAgICAgICBIQUxGOiAxLAorICAgICAgICBGSVhF
RDogMiwKKyAgICAgICAgRE9VQkxFOiAzLAorCisgICAgICAgIC8vIENhbiBvbmx5IGJlIHJyVmVy
dGV4QXR0cmliLnJlYWQgYXMgZmxvYXRzLCB3aWxsIGJlIG5vcm1hbGl6ZWQKKyAgICAgICAgTk9O
UFVSRV9VTk9STTg6IDQsCisgICAgICAgIE5PTlBVUkVfVU5PUk0xNjogNSwKKyAgICAgICAgTk9O
UFVSRV9VTk9STTMyOiA2LAorICAgICAgICBOT05QVVJFX1VOT1JNXzJfMTBfMTBfMTBfUkVWOiA3
LCAvLyE8IFBhY2tlZCBmb3JtYXQsIG9ubHkgc2l6ZSA9IDQgaXMgYWxsb3dlZAorCisgICAgICAg
IC8vIENsYW1wZWQgZm9ybWF0cywgR0xFUzMtc3R5bGUgY29udmVyc2lvbjogbWF4e2MgLyAoMl4o
Yi0xKSAtIDEpLCAtMSB9CisgICAgICAgIE5PTlBVUkVfU05PUk04X0NMQU1QOiA4LAorICAgICAg
ICBOT05QVVJFX1NOT1JNMTZfQ0xBTVA6IDksCisgICAgICAgIE5PTlBVUkVfU05PUk0zMl9DTEFN
UDogMTAsCisgICAgICAgIE5PTlBVUkVfU05PUk1fMl8xMF8xMF8xMF9SRVZfQ0xBTVA6IDExLCAv
LyE8IFBhY2tlZCBmb3JtYXQsIG9ubHkgc2l6ZSA9IDQgaXMgYWxsb3dlZAorCisgICAgICAgIC8v
IFNjYWxlZCBmb3JtYXRzLCBHTEVTMi1zdHlsZSBjb252ZXJzaW9uOiAoMmMgKyAxKSAvICgyXmIg
LSAxKQorICAgICAgICBOT05QVVJFX1NOT1JNOF9TQ0FMRTogMTIsCisgICAgICAgIE5PTlBVUkVf
U05PUk0xNl9TQ0FMRTogMTMsCisgICAgICAgIE5PTlBVUkVfU05PUk0zMl9TQ0FMRTogMTQsCisg
ICAgICAgIE5PTlBVUkVfU05PUk1fMl8xMF8xMF8xMF9SRVZfU0NBTEU6IDE1LCAvLyE8IFBhY2tl
ZCBmb3JtYXQsIG9ubHkgc2l6ZSA9IDQgaXMgYWxsb3dlZAorCisgICAgICAgIC8vIGNhbiBvbmx5
IGJlIHJyVmVydGV4QXR0cmliLnJlYWQgYXMgZmxvYXQsIHdpbGwgbm90IGJlIG5vcm1hbGl6ZWQK
KyAgICAgICAgTk9OUFVSRV9VSU5UODogMTYsCisgICAgICAgIE5PTlBVUkVfVUlOVDE2OiAxNywK
KyAgICAgICAgTk9OUFVSRV9VSU5UMzI6IDE4LAorCisgICAgICAgIE5PTlBVUkVfSU5UODogMTks
CisgICAgICAgIE5PTlBVUkVfSU5UMTY6IDIwLAorICAgICAgICBOT05QVVJFX0lOVDMyOiAyMSwK
KworICAgICAgICBOT05QVVJFX1VJTlRfMl8xMF8xMF8xMF9SRVY6IDIyLCAvLyE8IFBhY2tlZCBm
b3JtYXQsIG9ubHkgc2l6ZSA9IDQgaXMgYWxsb3dlZAorICAgICAgICBOT05QVVJFX0lOVF8yXzEw
XzEwXzEwX1JFVjogMjMsIC8vITwgUGFja2VkIGZvcm1hdCwgb25seSBzaXplID0gNCBpcyBhbGxv
d2VkCisKKyAgICAgICAgLy8gY2FuIG9ubHkgYmUgcnJWZXJ0ZXhBdHRyaWIucmVhZCBhcyBpbnRl
Z2VycworICAgICAgICBQVVJFX1VJTlQ4OiAyNCwKKyAgICAgICAgUFVSRV9VSU5UMTY6IDI1LAor
ICAgICAgICBQVVJFX1VJTlQzMjogMjYsCisKKyAgICAgICAgUFVSRV9JTlQ4OiAyNywKKyAgICAg
ICAgUFVSRV9JTlQxNjogMjgsCisgICAgICAgIFBVUkVfSU5UMzI6IDI5LAorCisgICAgICAgIC8v
IHJlb3JkZXJlZCBmb3JtYXRzIG9mIGdsLkFSQl92ZXJ0ZXhfYXJyYXlfYmdyYQorICAgICAgICBO
T05QVVJFX1VOT1JNOF9CR1JBOiAzMCwKKyAgICAgICAgTk9OUFVSRV9VTk9STV8yXzEwXzEwXzEw
X1JFVl9CR1JBOiAzMSwKKyAgICAgICAgTk9OUFVSRV9TTk9STV8yXzEwXzEwXzEwX1JFVl9DTEFN
UF9CR1JBOiAzMiwKKyAgICAgICAgTk9OUFVSRV9TTk9STV8yXzEwXzEwXzEwX1JFVl9TQ0FMRV9C
R1JBOiAzMywKKworICAgICAgICAvLyBjYW4gYmUgcnJWZXJ0ZXhBdHRyaWIucmVhZCBhcyBhbnl0
aGluZworICAgICAgICBET05UX0NBUkU6IDM0IC8vITwgRG8gbm90IGVuZm9yY2UgdHlwZSBjaGVj
a2luZyB3aGVuIHJlYWRpbmcgR0VORVJJQyBhdHRyaWJ1dGUuIFVzZWQgZm9yIGN1cnJlbnQgY2xp
ZW50IHNpZGUgYXR0cmlidXRlcy4KKyAgICB9OworCisgICAgLyoqCisgICAgICogcnJWZXJ0ZXhB
dHRyaWIuVmVydGV4QXR0cmliIGNsYXNzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisg
ICAgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZX0gKi8gdGhpcy50eXBlID0g
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5GTE9BVDsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMuc2l6ZSA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLnN0cmlkZSA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmlu
c3RhbmNlRGl2aXNvciA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm9m
ZnNldCA9IDA7IC8vQWRkZWQgdGhpcyBwcm9wZXJ0eSB0byBjb21wZW5zYXRlIGZ1bmN0aW9uYWxp
dHkgKG5vdCBpbiBvcmlnaW5hbCBkRVFQKS4KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZl
cn0gKi8gdGhpcy5wb2ludGVyID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjNH0gKi8gdGhpcy5nZW5lcmljOyAvLyE8IEdl
bmVyaWMgYXR0cmlidXRlLCB1c2VkIGlmIHBvaW50ZXIgaXMgbnVsbC4KKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtyclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlfSB0eXBl
CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHJyVmVydGV4QXR0cmliLmdl
dENvbXBvbmVudFNpemUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkZMT0FU
OiByZXR1cm4gNDsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmli
VHlwZS5IQUxGOiByZXR1cm4gMjsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVy
dGV4QXR0cmliVHlwZS5GSVhFRDogcmV0dXJuIDQ7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4
QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuRE9VQkxFOiByZXR1cm4gODsgLy9zaXplb2YoZG91Ymxl
KTsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05Q
VVJFX1VOT1JNODogcmV0dXJuIDE7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZl
cnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VTk9STTE2OiByZXR1cm4gMjsKKyAgICAgICAgICAgIGNh
c2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VOT1JNMzI6IHJldHVy
biA0OworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5P
TlBVUkVfVU5PUk1fMl8xMF8xMF8xMF9SRVY6IHJldHVybiAxOyAvL3NpemVvZihkZVVpbnQzMikv
NDsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05Q
VVJFX1NOT1JNOF9DTEFNUDogcmV0dXJuIDE7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0
cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9STTE2X0NMQU1QOiByZXR1cm4gMjsKKyAg
ICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NO
T1JNMzJfQ0xBTVA6IHJldHVybiA0OworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5W
ZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk1fMl8xMF8xMF8xMF9SRVZfQ0xBTVA6IHJldHVy
biAxOyAvL3NpemVvZihkZVVpbnQzMikvNDsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRy
aWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNOF9TQ0FMRTogcmV0dXJuIDE7CisgICAg
ICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9S
TTE2X1NDQUxFOiByZXR1cm4gMjsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVy
dGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNMzJfU0NBTEU6IHJldHVybiA0OworICAgICAgICAg
ICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk1fMl8x
MF8xMF8xMF9SRVZfU0NBTEU6IHJldHVybiAxOyAvL3NpemVvZihkZVVpbnQzMikvNDsKKyAgICAg
ICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VJTlQ4
OiByZXR1cm4gMTsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmli
VHlwZS5OT05QVVJFX1VJTlQxNjogcmV0dXJuIDI7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4
QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VSU5UMzI6IHJldHVybiA0OworICAgICAg
ICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfSU5UODog
cmV0dXJuIDE7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5
cGUuTk9OUFVSRV9JTlQxNjogcmV0dXJuIDI7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0
cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9JTlQzMjogcmV0dXJuIDQ7CisgICAgICAgICAg
ICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VSU5UXzJfMTBf
MTBfMTBfUkVWOiByZXR1cm4gMTsgLy9zaXplb2YoZGVVaW50MzIpLzQ7CisgICAgICAgICAgICBj
YXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9JTlRfMl8xMF8xMF8x
MF9SRVY6IHJldHVybiAxOyAvL3NpemVvZihkZVVpbnQzMikvNDsKKyAgICAgICAgICAgIGNhc2Ug
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5QVVJFX1VJTlQ4OiByZXR1cm4gMTsKKyAg
ICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5QVVJFX1VJTlQx
NjogcmV0dXJuIDI7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJp
YlR5cGUuUFVSRV9VSU5UMzI6IHJldHVybiA0OworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0
dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLlBVUkVfSU5UODogcmV0dXJuIDE7CisgICAgICAgICAgICBj
YXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuUFVSRV9JTlQxNjogcmV0dXJuIDI7
CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuUFVSRV9J
TlQzMjogcmV0dXJuIDQ7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0
dHJpYlR5cGUuTk9OUFVSRV9VTk9STThfQkdSQTogcmV0dXJuIDE7CisgICAgICAgICAgICBjYXNl
IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VTk9STV8yXzEwXzEwXzEw
X1JFVl9CR1JBOiByZXR1cm4gMTsgLy9zaXplb2YoZGVVaW50MzIpLzQ7CisgICAgICAgICAgICBj
YXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9STV8yXzEwXzEw
XzEwX1JFVl9DTEFNUF9CR1JBOiByZXR1cm4gMTsgLy9zaXplb2YoZGVVaW50MzIpLzQ7CisgICAg
ICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9S
TV8yXzEwXzEwXzEwX1JFVl9TQ0FMRV9CR1JBOiByZXR1cm4gMTsgLy9zaXplb2YoZGVVaW50MzIp
LzQ7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigncnJWZXJ0ZXhBdHRyaWIuZ2V0Q29tcG9uZW50U2l6ZSAtIEludmFsaWQgdHlwZScpOworICAg
ICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHJyVmVydGV4QXR0cmliLmlzVmFsaWRW
ZXJ0ZXhBdHRyaWIgZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0ge3JyVmVydGV4QXR0cmliLlZlcnRl
eEF0dHJpYn0gdmVydGV4QXR0cmliCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICByclZlcnRleEF0dHJpYi5pc1ZhbGlkVmVydGV4QXR0cmliID0gZnVuY3Rpb24odmVydGV4
QXR0cmliKSB7CisgICAgICAgIC8vIFRyaXZpYWwgcmFuZ2UgY2hlY2tzLgorICAgICAgICBpZiAo
IWRlTWF0aC5kZUluQm91bmRzMzIodmVydGV4QXR0cmliLnR5cGUsIDAsIE9iamVjdC5rZXlzKHJy
VmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUpLmxlbmd0aCkgfHwKKyAgICAgICAgICAgICFk
ZU1hdGguZGVJblJhbmdlMzIodmVydGV4QXR0cmliLnNpemUsIDAsIDQpIHx8CisgICAgICAgICAg
ICB2ZXJ0ZXhBdHRyaWIuaW5zdGFuY2VEaXZpc29yIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAvLyBHZW5lcmljIGF0dHJpYnV0ZXMKKyAgICAgICAgaWYgKCF2ZXJ0
ZXhBdHRyaWIucG9pbnRlciAmJiB2ZXJ0ZXhBdHRyaWIudHlwZSAhPSByclZlcnRleEF0dHJpYi5W
ZXJ0ZXhBdHRyaWJUeXBlLkRPTlRfQ0FSRSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAvLyBQYWNrZWQgZm9ybWF0cworICAgICAgICBpZiAoKHZlcnRleEF0dHJpYi50eXBl
ID09IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9JTlRfMl8xMF8xMF8x
MF9SRVYgfHwKKyAgICAgICAgICAgIHZlcnRleEF0dHJpYi50eXBlID09IHJyVmVydGV4QXR0cmli
LlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VSU5UXzJfMTBfMTBfMTBfUkVWIHx8CisgICAgICAg
ICAgICB2ZXJ0ZXhBdHRyaWIudHlwZSA9PSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBl
Lk5PTlBVUkVfVU5PUk1fMl8xMF8xMF8xMF9SRVYgfHwKKyAgICAgICAgICAgIHZlcnRleEF0dHJp
Yi50eXBlID09IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9STV8y
XzEwXzEwXzEwX1JFVl9DTEFNUCB8fAorICAgICAgICAgICAgdmVydGV4QXR0cmliLnR5cGUgPT0g
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNXzJfMTBfMTBfMTBf
UkVWX1NDQUxFIHx8CisgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWIudHlwZSA9PSByclZlcnRleEF0
dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfVU5PUk1fMl8xMF8xMF8xMF9SRVZfQkdSQSB8
fAorICAgICAgICAgICAgdmVydGV4QXR0cmliLnR5cGUgPT0gcnJWZXJ0ZXhBdHRyaWIuVmVydGV4
QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNXzJfMTBfMTBfMTBfUkVWX0NMQU1QX0JHUkEgfHwKKyAg
ICAgICAgICAgIHZlcnRleEF0dHJpYi50eXBlID09IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJp
YlR5cGUuTk9OUFVSRV9TTk9STV8yXzEwXzEwXzEwX1JFVl9TQ0FMRV9CR1JBKSAmJgorICAgICAg
ICAgICAgdmVydGV4QXR0cmliLnNpemUgIT0gNCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogcnJWZXJ0
ZXhBdHRyaWIucmVhZFZlcnRleEF0dHJpYiBmdW5jdGlvbgorICAgICAqIEBwYXJhbSB7cnJWZXJ0
ZXhBdHRyaWIuVmVydGV4QXR0cmlifSB2ZXJ0ZXhBdHRyaWIKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaW5zdGFuY2VOZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmVydGV4TmR4CisgICAgICog
QHBhcmFtIHtyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGV9IGdlbmVyaWNUeXBlCisgICAg
ICogQHJldHVybiB7Z29vZy5OdW1iZXJBcnJheX0KKyAgICAgKi8KKyAgICByclZlcnRleEF0dHJp
Yi5yZWFkVmVydGV4QXR0cmliID0gZnVuY3Rpb24odmVydGV4QXR0cmliLCBpbnN0YW5jZU5keCwg
dmVydGV4TmR4LCBnZW5lcmljVHlwZSkgeworICAgICAgICBERV9BU1NFUlQocnJWZXJ0ZXhBdHRy
aWIuaXNWYWxpZFZlcnRleEF0dHJpYih2ZXJ0ZXhBdHRyaWIpKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtnb29nLk51bWJlckFycmF5fSAqLyB2YXIgZHN0OworCisgICAgICAgIHZhciBhcnJheVR5cGUg
PSBudWxsOworICAgICAgICBzd2l0Y2ggKGdlbmVyaWNUeXBlKSB7CisgICAgICAgICAgICBjYXNl
IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5JTlQzMjoKKyAgICAgICAgICAgICAgICBh
cnJheVR5cGUgPSBJbnQzMkFycmF5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuVUlOVDMyOgorICAgICAgICAg
ICAgICAgIGFycmF5VHlwZSA9IFVpbnQzMkFycmF5OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgYXJyYXlUeXBlID0gRmxvYXQzMkFycmF5OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHZlcnRleEF0dHJpYi5wb2ludGVyKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVsZW1lbnROZHggPSAodmVy
dGV4QXR0cmliLmluc3RhbmNlRGl2aXNvciAhPSAwKSA/IChpbnN0YW5jZU5keCAvIHZlcnRleEF0
dHJpYi5pbnN0YW5jZURpdmlzb3IpIDogdmVydGV4TmR4OworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBjb21wU2l6ZSA9IHJyVmVydGV4QXR0cmliLmdldENvbXBvbmVudFNp
emUodmVydGV4QXR0cmliLnR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBzdHJpZGUgPSAodmVydGV4QXR0cmliLnN0cmlkZSAhPSAwKSA/ICh2ZXJ0ZXhBdHRyaWIu
c3RyaWRlKSA6ICh2ZXJ0ZXhBdHRyaWIuc2l6ZSAqIGNvbXBTaXplKTsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnl0ZU9mZnNldCA9IHZlcnRleEF0dHJpYi5vZmZzZXQg
KyAoZWxlbWVudE5keCAqIHN0cmlkZSk7CisKKyAgICAgICAgICAgIGRzdCA9IFswLCAwLCAwLCAx
XTsgLy8gZGVmYXVsdHMKKworICAgICAgICAgICAgaWYgKGFycmF5VHlwZSAhPSBudWxsKSB7Cisg
ICAgICAgICAgICAgICAgZHN0ID0gbmV3IGFycmF5VHlwZShkc3QpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkKGRzdCwgdmVydGV4QXR0cmliLnR5cGUs
IHZlcnRleEF0dHJpYi5zaXplLCBuZXcgVWludDhBcnJheSh2ZXJ0ZXhBdHRyaWIucG9pbnRlciwg
Ynl0ZU9mZnNldCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZHN0ID0gbmV3IGFy
cmF5VHlwZSgvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZlcnRleEF0dHJpYi5nZW5lcmlj
LmRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogcnJWZXJ0ZXhBdHRyaWIucmVhZEhhbGYKKyAgICAgKiBAcGFyYW0ge2dvb2cu
TnVtYmVyQXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICogQHBh
cmFtIHtVaW50OEFycmF5fSBwdHIKKyAgICAgKi8KKyAgICByclZlcnRleEF0dHJpYi5yZWFkSGFs
ZiA9IGZ1bmN0aW9uKGRzdCwgc2l6ZSwgcHRyKSB7CisgICAgICAgIHZhciBhcnJheXNpemUxNiA9
IDI7IC8vMiBieXRlcworCisgICAgICAgIHZhciBwdHJjbG9uZSA9IG5ldyBVaW50OEFycmF5KHB0
ci5zdWJhcnJheSgwLCBzaXplICogYXJyYXlzaXplMTYpKTsgLy9TbWFsbCBidWZmZXIgY29weSAo
bWF4LiA4IGJ5dGVzKQorICAgICAgICB2YXIgYWxpZ25lZCA9IG5ldyBVaW50MTZBcnJheShwdHJj
bG9uZS5idWZmZXIpOworCisgICAgICAgIC8vUmVpbnRlcnByZXQgYWxpZ25lZCdzIHZhbHVlcyBp
bnRvIHRoZSBkc3QgdmVjdG9yLgorICAgICAgICBkc3RbMF0gPSB0Y3VGbG9hdC5uZXdGbG9hdDMy
RnJvbTE2KGFsaWduZWRbMF0pLmdldFZhbHVlKCk7CisgICAgICAgIGlmIChzaXplID49IDIpIGRz
dFsxXSA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzJGcm9tMTYoYWxpZ25lZFsxXSkuZ2V0VmFsdWUoKTsK
KyAgICAgICAgaWYgKHNpemUgPj0gMykgZHN0WzJdID0gdGN1RmxvYXQubmV3RmxvYXQzMkZyb20x
NihhbGlnbmVkWzJdKS5nZXRWYWx1ZSgpOworICAgICAgICBpZiAoc2l6ZSA+PSA0KSBkc3RbM10g
PSB0Y3VGbG9hdC5uZXdGbG9hdDMyRnJvbTE2KGFsaWduZWRbM10pLmdldFZhbHVlKCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIHJyVmVydGV4QXR0cmliLnJlYWRGaXhlZAorICAgICAqIEBw
YXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gZHN0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUK
KyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHB0cgorICAgICAqLworICAgIC8qcnJWZXJ0ZXhB
dHRyaWIucmVhZEZpeGVkID0gZnVuY3Rpb24oZHN0LCBzaXplLCBwdHIpIHsKKyAgICAgICAgdmFy
IGFycmF5c2l6ZTMyID0gNDsgLy80IGJ5dGVzCisKKyAgICAgICAgLy9SZWludGVycHJldCBwdHIg
YXMgYSB1aW50MTYgYXJyYXksCisgICAgICAgIC8vYXNzdW1pbmcgb3JpZ2luYWwgcHRyIGlzIDgt
Yml0cyBwZXIgZWxlbWVudAorICAgICAgICB2YXIgYWxpZ25lZCA9IG5ldyBJbnQzMkFycmF5KHB0
ci5idWZmZXIpLnN1YmFycmF5KAorICAgICAgICAgICAgcHRyLmJ5dGVPZmZzZXQgLyBhcnJheXNp
emUzMiwKKyAgICAgICAgICAgIChwdHIuYnl0ZU9mZnNldCArIHB0ci5ieXRlTGVuZ3RoKSAvIGFy
cmF5c2l6ZTMyKTsKKworICAgICAgICAvL1JlaW50ZXJwcmV0IGFsaWduZWQncyB2YWx1ZXMgaW50
byB0aGUgZHN0IHZlY3Rvci4KKyAgICAgICAgZHN0WzBdID0gYWxpZ25lZFswXSAvICgxIDw8IDE2
KTsKKyAgICAgICAgaWYgKHNpemUgPj0gMikgZHN0WzFdID0gYWxpZ25lZFsxXSAvICgxIDw8IDE2
KTsKKyAgICAgICAgaWYgKHNpemUgPj0gMykgZHN0WzJdID0gYWxpZ25lZFsyXSAvICgxIDw8IDE2
KTsKKyAgICAgICAgaWYgKHNpemUgPj0gNCkgZHN0WzNdID0gYWxpZ25lZFszXSAvICgxIDw8IDE2
KTsKKyAgICB9OyovCisKKyAgICAvKioKKyAgICAgKiBUT0RPOiBDaGVjayA2NCBiaXQgbnVtYmVy
cyBhcmUgaGFuZGxlZCBvaworICAgICAqIHJyVmVydGV4QXR0cmliLnJlYWREb3VibGUKKyAgICAg
KiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
aXplCisgICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwdHIKKyAgICAgKi8KKyAgICAvKnJyVmVy
dGV4QXR0cmliLnJlYWREb3VibGUgPSBmdW5jdGlvbihkc3QsIHNpemUsIHB0cikgeworICAgICAg
ICB2YXIgYXJyYXlzaXplNjQgPSA4OyAvLzggYnl0ZXMKKworICAgICAgICAvL1JlaW50ZXJwcmV0
ICdwdHInIGludG8gJ2FsaWduZWQnIGFzIGEgZmxvYXQ2NCBhcnJheSwKKyAgICAgICAgLy9hc3N1
bWluZyBvcmlnaW5hbCBwdHIgaXMgOC1iaXRzIHBlciBlbGVtZW50LgorICAgICAgICB2YXIgYWxp
Z25lZCA9IG5ldyBGbG9hdDY0QXJyYXkocHRyLmJ1ZmZlcikuc3ViYXJyYXkoCisgICAgICAgICAg
ICBwdHIuYnl0ZU9mZnNldCAvIGFycmF5c2l6ZTY0LAorICAgICAgICAgICAgKHB0ci5ieXRlT2Zm
c2V0ICsgcHRyLmJ5dGVMZW5ndGgpIC8gYXJyYXlzaXplNjQpOworCisgICAgICAgIC8vUmVpbnRl
cnByZXQgYWxpZ25lZCdzIHZhbHVlcyBpbnRvIHRoZSBkc3QgdmVjdG9yLgorICAgICAgICBkc3Rb
MF0gPSBhbGlnbmVkWzBdOworICAgICAgICBpZiAoc2l6ZSA+PSAyKSBkc3RbMV0gPSBhbGlnbmVk
WzFdOworICAgICAgICBpZiAoc2l6ZSA+PSAzKSBkc3RbMl0gPSBhbGlnbmVkWzJdOworICAgICAg
ICBpZiAoc2l6ZSA+PSA0KSBkc3RbM10gPSBhbGlnbmVkWzNdOworICAgIH07Ki8KKworICAgIC8q
KgorICAgICAqIGV4dGVuZFNpZ24KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZWdlckxlbgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlZ2VyXyAoZGVVaW50MzIpCisgICAgICogQHJldHVy
biB7bnVtYmVyfSAoZGVJbnQzMikKKyAgICAgKi8KKyAgICByclZlcnRleEF0dHJpYi5leHRlbmRT
aWduID0gZnVuY3Rpb24oaW50ZWdlckxlbiwgaW50ZWdlcl8pIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBJbnQzMkFycmF5KFsKKyAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAg
ICAgICAwIC0KKyAgICAgICAgICAgICAgICBkZU1hdGguc2hpZnRMZWZ0KAorICAgICAgICAgICAg
ICAgICAgICBkZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2Vy
XywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zaGlmdExlZnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdl
ckxlbiAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGVNYXRoLkJpbmFyeU9wLkFORAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgKSAsCisKK2ludGVnZXJfLAorICAgICAg
ICAgICAgICAgIGRlTWF0aC5CaW5hcnlPcC5PUgorICAgICAgICAgICAgKQorICAgICAgICBdKVsw
XTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogcnJWZXJ0ZXhBdHRyaWIucmVhZFVpbnQyMTAx
MDEwUmV2CisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBkc3QKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gcHRyCisgICAgICov
CisgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZFVpbnQyMTAxMDEwUmV2ID0gZnVuY3Rpb24oZHN0LCBz
aXplLCBwdHIpIHsKKyAgICAgICAgdmFyIGFycmF5c2l6ZTMyID0gNDsgLy80IGJ5dGVzCisKKyAg
ICAgICAgdmFyIHB0cmNsb25lID0gbmV3IFVpbnQ4QXJyYXkocHRyLnN1YmFycmF5KDAsIHNpemUg
KiBhcnJheXNpemUzMikpOyAvL1NtYWxsIGJ1ZmZlciBjb3B5IChtYXguIDE2IGJ5dGVzKQorICAg
ICAgICB2YXIgYWxpZ25lZCA9IG5ldyBVaW50MzJBcnJheShwdHJjbG9uZS5idWZmZXIpWzBdOwor
CisgICAgICAgIGRzdFswXSA9IGRlTWF0aC5iaW5hcnlPcChkZU1hdGguc2hpZnRSaWdodChhbGln
bmVkLCAwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAxMCkgLSAxLCBkZU1hdGguQmluYXJ5T3AuQU5E
KTsKKyAgICAgICAgaWYgKHNpemUgPj0gMikgZHN0WzFdID0gZGVNYXRoLmJpbmFyeU9wKGRlTWF0
aC5zaGlmdFJpZ2h0KGFsaWduZWQsIDEwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAxMCkgLSAxLCBk
ZU1hdGguQmluYXJ5T3AuQU5EKTsKKyAgICAgICAgaWYgKHNpemUgPj0gMykgZHN0WzJdID0gZGVN
YXRoLmJpbmFyeU9wKGRlTWF0aC5zaGlmdFJpZ2h0KGFsaWduZWQsIDIwKSwgZGVNYXRoLnNoaWZ0
TGVmdCgxLCAxMCkgLSAxLCBkZU1hdGguQmluYXJ5T3AuQU5EKTsKKyAgICAgICAgaWYgKHNpemUg
Pj0gNCkgZHN0WzNdID0gZGVNYXRoLmJpbmFyeU9wKGRlTWF0aC5zaGlmdFJpZ2h0KGFsaWduZWQs
IDMwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAyKSAtIDEsIGRlTWF0aC5CaW5hcnlPcC5BTkQpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiByclZlcnRleEF0dHJpYi5yZWFkSW50MjEwMTAxMFJl
dgorICAgICAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gZHN0CisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHB0cgorICAgICAqLworICAg
IHJyVmVydGV4QXR0cmliLnJlYWRJbnQyMTAxMDEwUmV2ID0gZnVuY3Rpb24oZHN0LCBzaXplLCBw
dHIpIHsKKyAgICAgICAgdmFyIGFycmF5c2l6ZTMyID0gNDsgLy80IGJ5dGVzCisKKyAgICAgICAg
dmFyIHB0cmNsb25lID0gbmV3IFVpbnQ4QXJyYXkocHRyLnN1YmFycmF5KDAsIHNpemUgKiBhcnJh
eXNpemUzMikpOyAvL1NtYWxsIGJ1ZmZlciBjb3B5IChtYXguIDE2IGJ5dGVzKQorICAgICAgICB2
YXIgYWxpZ25lZCA9IG5ldyBVaW50MzJBcnJheShwdHJjbG9uZS5idWZmZXIpWzBdOworCisgICAg
ICAgIGRzdFswXSA9IHJyVmVydGV4QXR0cmliLmV4dGVuZFNpZ24oMTAsIGRlTWF0aC5iaW5hcnlP
cChkZU1hdGguc2hpZnRSaWdodChhbGlnbmVkLCAwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAxMCkg
LSAxLCBkZU1hdGguQmluYXJ5T3AuQU5EKSk7CisgICAgICAgIGlmIChzaXplID49IDIpIGRzdFsx
XSA9IHJyVmVydGV4QXR0cmliLmV4dGVuZFNpZ24oMTAsIGRlTWF0aC5iaW5hcnlPcChkZU1hdGgu
c2hpZnRSaWdodChhbGlnbmVkLCAxMCksIGRlTWF0aC5zaGlmdExlZnQoMSwgMTApIC0gMSwgZGVN
YXRoLkJpbmFyeU9wLkFORCkpOworICAgICAgICBpZiAoc2l6ZSA+PSAzKSBkc3RbMl0gPSByclZl
cnRleEF0dHJpYi5leHRlbmRTaWduKDEwLCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNoaWZ0Umln
aHQoYWxpZ25lZCwgMjApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDEwKSAtIDEsIGRlTWF0aC5CaW5h
cnlPcC5BTkQpKTsKKyAgICAgICAgaWYgKHNpemUgPj0gNCkgZHN0WzNdID0gcnJWZXJ0ZXhBdHRy
aWIuZXh0ZW5kU2lnbigyLCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNoaWZ0UmlnaHQoYWxpZ25l
ZCwgMzApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDIpIC0gMSwgZGVNYXRoLkJpbmFyeU9wLkFORCkp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiByclZlcnRleEF0dHJpYi5yZWFkVW5vcm0yMTAx
MDEwUmV2T3JkZXIKKyAgICAgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGRzdAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwdHIKKyAg
ICAgKiBAcGFyYW0ge09iamVjdDxyclZlcnRleEF0dHJpYi5Ob3JtYWxPcmRlcnxyclZlcnRleEF0
dHJpYi5CR1JBT3JkZXI+fSBvcmRlcgorICAgICAqLworICAgIHJyVmVydGV4QXR0cmliLnJlYWRV
bm9ybTIxMDEwMTBSZXZPcmRlciA9IGZ1bmN0aW9uKGRzdCwgc2l6ZSwgcHRyLCBvcmRlcikgewor
ICAgICAgICB2YXIgYXJyYXlzaXplMzIgPSA0OyAvLzQgYnl0ZXMKKworICAgICAgICAvL0xlZnQg
c2hpZnQgd2l0aGluIDMyLWJpdCByYW5nZSBhcyAzMi1iaXQgaW50LgorICAgICAgICB2YXIgcmFu
Z2UxMCA9IG5ldyBVaW50MzJBcnJheShbZGVNYXRoLnNoaWZ0TGVmdCgxLCAxMCkgLSAxXSlbMF07
CisgICAgICAgIHZhciByYW5nZTIgPSBuZXcgVWludDMyQXJyYXkoW2RlTWF0aC5zaGlmdExlZnQo
MSwgMikgLSAxXSlbMF07CisKKyAgICAgICAgdmFyIHB0cmNsb25lID0gbmV3IFVpbnQ4QXJyYXko
cHRyLnN1YmFycmF5KDAsIHNpemUgKiBhcnJheXNpemUzMikpOyAvL1NtYWxsIGJ1ZmZlciBjb3B5
IChtYXguIDE2IGJ5dGVzKQorICAgICAgICB2YXIgYWxpZ25lZCA9IG5ldyBVaW50MzJBcnJheShw
dHJjbG9uZS5idWZmZXIpWzBdOworCisgICAgICAgIGRzdFtvcmRlci5UMF0gPSBkZU1hdGguYmlu
YXJ5T3AoZGVNYXRoLnNoaWZ0UmlnaHQoYWxpZ25lZCwgMCksIGRlTWF0aC5zaGlmdExlZnQoMSwg
MTApIC0gMSwgZGVNYXRoLkJpbmFyeU9wLkFORCkgLyByYW5nZTEwOworICAgICAgICBpZiAoc2l6
ZSA+PSAyKSBkc3Rbb3JkZXIuVDFdID0gZGVNYXRoLmJpbmFyeU9wKGRlTWF0aC5zaGlmdFJpZ2h0
KGFsaWduZWQsIDEwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAxMCkgLSAxLCBkZU1hdGguQmluYXJ5
T3AuQU5EKSAvIHJhbmdlMTA7CisgICAgICAgIGlmIChzaXplID49IDMpIGRzdFtvcmRlci5UMl0g
PSBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNoaWZ0UmlnaHQoYWxpZ25lZCwgMjApLCBkZU1hdGgu
c2hpZnRMZWZ0KDEsIDEwKSAtIDEsIGRlTWF0aC5CaW5hcnlPcC5BTkQpIC8gcmFuZ2UxMDsKKyAg
ICAgICAgaWYgKHNpemUgPj0gNCkgZHN0W29yZGVyLlQzXSA9IGRlTWF0aC5iaW5hcnlPcChkZU1h
dGguc2hpZnRSaWdodChhbGlnbmVkLCAzMCksIGRlTWF0aC5zaGlmdExlZnQoMSwgMikgLSAxLCBk
ZU1hdGguQmluYXJ5T3AuQU5EKSAvIHJhbmdlMjsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
cnJWZXJ0ZXhBdHRyaWIucmVhZFNub3JtMjEwMTAxMFJldkNsYW1wT3JkZXIKKyAgICAgKiBAcGFy
YW0ge2dvb2cuTnVtYmVyQXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisg
ICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwdHIKKyAgICAgKiBAcGFyYW0ge09iamVjdDxyclZl
cnRleEF0dHJpYi5Ob3JtYWxPcmRlcnxyclZlcnRleEF0dHJpYi5CR1JBT3JkZXI+fSBvcmRlcgor
ICAgICAqLworICAgIHJyVmVydGV4QXR0cmliLnJlYWRTbm9ybTIxMDEwMTBSZXZDbGFtcE9yZGVy
ID0gZnVuY3Rpb24oZHN0LCBzaXplLCBwdHIsIG9yZGVyKSB7CisgICAgICAgIHZhciBhcnJheXNp
emUzMiA9IDQ7IC8vNCBieXRlcworCisgICAgICAgIC8vTGVmdCBzaGlmdCB3aXRoaW4gMzItYml0
IHJhbmdlIGFzIDMyLWJpdCBpbnQuCisgICAgICAgIHZhciByYW5nZTEwID0gbmV3IFVpbnQzMkFy
cmF5KFtkZU1hdGguc2hpZnRMZWZ0KDEsIDEwIC0gMSkgLSAxXSlbMF07CisgICAgICAgIHZhciBy
YW5nZTIgPSBuZXcgVWludDMyQXJyYXkoW2RlTWF0aC5zaGlmdExlZnQoMSwgMiAtIDEpIC0gMV0p
WzBdOworCisgICAgICAgIHZhciBwdHJjbG9uZSA9IG5ldyBVaW50OEFycmF5KHB0ci5zdWJhcnJh
eSgwLCBzaXplICogYXJyYXlzaXplMzIpKTsgLy9TbWFsbCBidWZmZXIgY29weSAobWF4LiAxNiBi
eXRlcykKKyAgICAgICAgdmFyIGFsaWduZWQgPSBuZXcgVWludDMyQXJyYXkocHRyY2xvbmUuYnVm
ZmVyKVswXTsKKworICAgICAgICBkc3Rbb3JkZXIuVDBdID0gTWF0aC5tYXgoLTEuMCwgbmV3IEZs
b2F0MzJBcnJheShbcnJWZXJ0ZXhBdHRyaWIuZXh0ZW5kU2lnbigxMCwgZGVNYXRoLmJpbmFyeU9w
KGRlTWF0aC5zaGlmdFJpZ2h0KGFsaWduZWQsIDApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDEwKSAt
IDEsIGRlTWF0aC5CaW5hcnlPcC5BTkQpKV0pWzBdIC8gcmFuZ2UxMCk7CisgICAgICAgIGlmIChz
aXplID49IDIpIGRzdFtvcmRlci5UMV0gPSBNYXRoLm1heCgtMS4wLCBuZXcgRmxvYXQzMkFycmF5
KFtyclZlcnRleEF0dHJpYi5leHRlbmRTaWduKDEwLCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNo
aWZ0UmlnaHQoYWxpZ25lZCwgMTApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDEwKSAtIDEsIGRlTWF0
aC5CaW5hcnlPcC5BTkQpKV0pWzBdIC8gcmFuZ2UxMCk7CisgICAgICAgIGlmIChzaXplID49IDMp
IGRzdFtvcmRlci5UMl0gPSBNYXRoLm1heCgtMS4wLCBuZXcgRmxvYXQzMkFycmF5KFtyclZlcnRl
eEF0dHJpYi5leHRlbmRTaWduKDEwLCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNoaWZ0UmlnaHQo
YWxpZ25lZCwgMjApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDEwKSAtIDEsIGRlTWF0aC5CaW5hcnlP
cC5BTkQpKV0pWzBdIC8gcmFuZ2UxMCk7CisgICAgICAgIGlmIChzaXplID49IDQpIGRzdFtvcmRl
ci5UM10gPSBNYXRoLm1heCgtMS4wLCBuZXcgRmxvYXQzMkFycmF5KFtyclZlcnRleEF0dHJpYi5l
eHRlbmRTaWduKDIsIGRlTWF0aC5iaW5hcnlPcChkZU1hdGguc2hpZnRSaWdodChhbGlnbmVkLCAz
MCksIGRlTWF0aC5zaGlmdExlZnQoMSwgMikgLSAxLCBkZU1hdGguQmluYXJ5T3AuQU5EKSldKVsw
XSAvIHJhbmdlMik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHJyVmVydGV4QXR0cmliLnJl
YWRTbm9ybTIxMDEwMTBSZXZTY2FsZU9yZGVyCisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFy
cmF5fSBkc3QKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWlu
dDhBcnJheX0gcHRyCisgICAgICogQHBhcmFtIHtPYmplY3Q8cnJWZXJ0ZXhBdHRyaWIuTm9ybWFs
T3JkZXJ8cnJWZXJ0ZXhBdHRyaWIuQkdSQU9yZGVyPn0gb3JkZXIKKyAgICAgKi8KKyAgICByclZl
cnRleEF0dHJpYi5yZWFkU25vcm0yMTAxMDEwUmV2U2NhbGVPcmRlciA9IGZ1bmN0aW9uKGRzdCwg
c2l6ZSwgcHRyLCBvcmRlcikgeworICAgICAgICB2YXIgYXJyYXlzaXplMzIgPSA0OyAvLzQgYnl0
ZXMKKworICAgICAgICAvL0xlZnQgc2hpZnQgd2l0aGluIDMyLWJpdCByYW5nZSBhcyAzMi1iaXQg
aW50LgorICAgICAgICB2YXIgcmFuZ2UxMCA9IG5ldyBVaW50MzJBcnJheShbZGVNYXRoLnNoaWZ0
TGVmdCgxLCAxMCkgLSAxXSlbMF07CisgICAgICAgIHZhciByYW5nZTIgPSBuZXcgVWludDMyQXJy
YXkoW2RlTWF0aC5zaGlmdExlZnQoMSwgMikgLSAxXSlbMF07CisKKyAgICAgICAgdmFyIHB0cmNs
b25lID0gbmV3IFVpbnQ4QXJyYXkocHRyLnN1YmFycmF5KDAsIHNpemUgKiBhcnJheXNpemUzMikp
OyAvL1NtYWxsIGJ1ZmZlciBjb3B5IChtYXguIDE2IGJ5dGVzKQorICAgICAgICB2YXIgYWxpZ25l
ZCA9IG5ldyBVaW50MzJBcnJheShwdHJjbG9uZS5idWZmZXIpWzBdOworCisgICAgICAgIGRzdFtv
cmRlci5UMF0gPSBuZXcgRmxvYXQzMkFycmF5KFtyclZlcnRleEF0dHJpYi5leHRlbmRTaWduKDEw
LCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNoaWZ0UmlnaHQoYWxpZ25lZCwgMCksIGRlTWF0aC5z
aGlmdExlZnQoMSwgMTApIC0gMSwgZGVNYXRoLkJpbmFyeU9wLkFORCkpICogMi4wICsgMS4wXSlb
MF0gLyByYW5nZTEwOworICAgICAgICBpZiAoc2l6ZSA+PSAyKSBkc3Rbb3JkZXIuVDFdID0gbmV3
IEZsb2F0MzJBcnJheShbcnJWZXJ0ZXhBdHRyaWIuZXh0ZW5kU2lnbigxMCwgZGVNYXRoLmJpbmFy
eU9wKGRlTWF0aC5zaGlmdFJpZ2h0KGFsaWduZWQsIDEwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAx
MCkgLSAxLCBkZU1hdGguQmluYXJ5T3AuQU5EKSkgKiAyLjAgKyAxLjBdKVswXSAvIHJhbmdlMTA7
CisgICAgICAgIGlmIChzaXplID49IDMpIGRzdFtvcmRlci5UMl0gPSBuZXcgRmxvYXQzMkFycmF5
KFtyclZlcnRleEF0dHJpYi5leHRlbmRTaWduKDEwLCBkZU1hdGguYmluYXJ5T3AoZGVNYXRoLnNo
aWZ0UmlnaHQoYWxpZ25lZCwgMjApLCBkZU1hdGguc2hpZnRMZWZ0KDEsIDEwKSAtIDEsIGRlTWF0
aC5CaW5hcnlPcC5BTkQpKSAqIDIuMCArIDEuMF0pWzBdIC8gcmFuZ2UxMDsKKyAgICAgICAgaWYg
KHNpemUgPj0gNCkgZHN0W29yZGVyLlQzXSA9IG5ldyBGbG9hdDMyQXJyYXkoW3JyVmVydGV4QXR0
cmliLmV4dGVuZFNpZ24oMiwgZGVNYXRoLmJpbmFyeU9wKGRlTWF0aC5zaGlmdFJpZ2h0KGFsaWdu
ZWQsIDMwKSwgZGVNYXRoLnNoaWZ0TGVmdCgxLCAyKSAtIDEsIGRlTWF0aC5CaW5hcnlPcC5BTkQp
KSAqIDIuMCArIDEuMF0pWzBdIC8gcmFuZ2UyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBy
clZlcnRleEF0dHJpYi5yZWFkVW5vcm1PcmRlcgorICAgICAqIEBwYXJhbSB7Z29vZy5OdW1iZXJB
cnJheX0gZHN0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge1Vp
bnQ4QXJyYXl9IHB0cgorICAgICAqIEBwYXJhbSB7T2JqZWN0PHJyVmVydGV4QXR0cmliLk5vcm1h
bE9yZGVyfHJyVmVydGV4QXR0cmliLkJHUkFPcmRlcj59IG9yZGVyCisgICAgICogQHBhcmFtIHJl
YWRBc1R5cGVBcnJheQorICAgICAqLworICAgIHJyVmVydGV4QXR0cmliLnJlYWRVbm9ybU9yZGVy
ID0gZnVuY3Rpb24oZHN0LCBzaXplLCBwdHIsIG9yZGVyLCByZWFkQXNUeXBlQXJyYXkpIHsKKyAg
ICAgICAgdmFyIGFycmF5ZWxlbWVudHNpemUgPSByZWFkQXNUeXBlQXJyYXkuQllURVNfUEVSX0VM
RU1FTlQ7CisKKyAgICAgICAgLy9MZWZ0IHNoaWZ0IHdpdGhpbiAzMi1iaXQgcmFuZ2UgYXMgMzIt
Yml0IGZsb2F0LgorICAgICAgICB2YXIgcmFuZ2UgPSBuZXcgRmxvYXQzMkFycmF5KFtkZU1hdGgu
c2hpZnRMZWZ0KDEsIGFycmF5ZWxlbWVudHNpemUgKiA4KSAtIDFdKVswXTsKKworICAgICAgICB2
YXIgcHRyY2xvbmUgPSBuZXcgVWludDhBcnJheShwdHIuc3ViYXJyYXkoMCwgc2l6ZSAqIGFycmF5
ZWxlbWVudHNpemUpKTsgLy9TbWFsbCBidWZmZXIgY29weSAobWF4LiAxNiBieXRlcykKKyAgICAg
ICAgdmFyIGFsaWduZWQgPSBuZXcgcmVhZEFzVHlwZUFycmF5KHB0cmNsb25lLmJ1ZmZlcik7CisK
KyAgICAgICAgLy9SZWludGVycHJldCBhbGlnbmVkJ3MgdmFsdWVzIGludG8gdGhlIGRzdCB2ZWN0
b3IuCisgICAgICAgIGRzdFtvcmRlci5UMF0gPSBhbGlnbmVkWzBdIC8gcmFuZ2U7CisgICAgICAg
IGlmIChzaXplID49IDIpIGRzdFtvcmRlci5UMV0gPSBhbGlnbmVkWzFdIC8gcmFuZ2U7CisgICAg
ICAgIGlmIChzaXplID49IDMpIGRzdFtvcmRlci5UMl0gPSBhbGlnbmVkWzJdIC8gcmFuZ2U7Cisg
ICAgICAgIGlmIChzaXplID49IDQpIGRzdFtvcmRlci5UM10gPSBhbGlnbmVkWzNdIC8gcmFuZ2U7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIHJyVmVydGV4QXR0cmliLnJlYWRTbm9ybUNsYW1w
CisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBkc3QKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gcHRyCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbihuZXc6QXJyYXlCdWZmZXJWaWV3LChBcnJheTxudW1iZXI+fEFycmF5QnVmZmVy
fEFycmF5QnVmZmVyVmlld3xudWxsfG51bWJlciksIG51bWJlcj0sIG51bWJlcj0pfSByZWFkQXNU
eXBlQXJyYXkKKyAgICAgKi8KKyAgICByclZlcnRleEF0dHJpYi5yZWFkU25vcm1DbGFtcCA9IGZ1
bmN0aW9uKGRzdCwgc2l6ZSwgcHRyLCByZWFkQXNUeXBlQXJyYXkpIHsKKyAgICAgICAgdmFyIGFy
cmF5ZWxlbWVudHNpemUgPSByZWFkQXNUeXBlQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7CisKKyAg
ICAgICAgLy9MZWZ0IHNoaWZ0IHdpdGhpbiAzMi1iaXQgcmFuZ2UgYXMgMzItYml0IGZsb2F0Lgor
ICAgICAgICB2YXIgcmFuZ2UgPSBuZXcgRmxvYXQzMkFycmF5KFtkZU1hdGguc2hpZnRMZWZ0KDEs
IGFycmF5ZWxlbWVudHNpemUgKiA4IC0gMSkgLSAxXSlbMF07CisKKyAgICAgICAgdmFyIHB0cmNs
b25lID0gbmV3IFVpbnQ4QXJyYXkocHRyLnN1YmFycmF5KDAsIHNpemUgKiBhcnJheWVsZW1lbnRz
aXplKSk7IC8vU21hbGwgYnVmZmVyIGNvcHkgKG1heC4gMTYgYnl0ZXMpCisgICAgICAgIHZhciBh
bGlnbmVkID0gbmV3IHJlYWRBc1R5cGVBcnJheShwdHJjbG9uZS5idWZmZXIpOworCisgICAgICAg
IC8vUmVpbnRlcnByZXQgYWxpZ25lZCdzIHZhbHVlcyBpbnRvIHRoZSBkc3QgdmVjdG9yLgorICAg
ICAgICBkc3RbMF0gPSBNYXRoLm1heCgtMSwgYWxpZ25lZFswXSAvIHJhbmdlKTsKKyAgICAgICAg
aWYgKHNpemUgPj0gMikgZHN0WzFdID0gTWF0aC5tYXgoLTEsIGFsaWduZWRbMV0gLyByYW5nZSk7
CisgICAgICAgIGlmIChzaXplID49IDMpIGRzdFsyXSA9IE1hdGgubWF4KC0xLCBhbGlnbmVkWzJd
IC8gcmFuZ2UpOworICAgICAgICBpZiAoc2l6ZSA+PSA0KSBkc3RbM10gPSBNYXRoLm1heCgtMSwg
YWxpZ25lZFszXSAvIHJhbmdlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogcnJWZXJ0ZXhB
dHRyaWIucmVhZE9yZGVyCisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBkc3QKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gcHRy
CisgICAgICogQHBhcmFtIHtPYmplY3Q8cnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXJ8cnJWZXJ0
ZXhBdHRyaWIuQkdSQU9yZGVyPn0gb3JkZXIgTm9ybWFsT3JkZXIgb3IgQkdSQU9yZGVyCisgICAg
ICogQHBhcmFtIHJlYWRBc1R5cGVBcnJheSBUeXBlZCBBcnJheSB0eXBlCisgICAgICovCisgICAg
cnJWZXJ0ZXhBdHRyaWIucmVhZE9yZGVyID0gZnVuY3Rpb24oZHN0LCBzaXplLCBwdHIsIG9yZGVy
LCByZWFkQXNUeXBlQXJyYXkpIHsKKyAgICAgICAgdmFyIGFycmF5ZWxlbWVudHNpemUgPSByZWFk
QXNUeXBlQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7CisKKyAgICAgICAgdmFyIHB0cmNsb25lID0g
bmV3IFVpbnQ4QXJyYXkocHRyLnN1YmFycmF5KDAsIHNpemUgKiBhcnJheWVsZW1lbnRzaXplKSk7
IC8vU21hbGwgYnVmZmVyIGNvcHkgKG1heC4gMTYgYnl0ZXMpCisgICAgICAgIHZhciBhbGlnbmVk
ID0gbmV3IHJlYWRBc1R5cGVBcnJheShwdHJjbG9uZS5idWZmZXIpOworCisgICAgICAgIC8vUmVp
bnRlcnByZXQgYWxpZ25lZCdzIHZhbHVlcyBpbnRvIHRoZSBkc3QgdmVjdG9yLgorICAgICAgICAv
LyhhdXRvbWF0aWMgaW4gSlMgdHlwZWQgYXJyYXlzKS4KKyAgICAgICAgZHN0W29yZGVyLlQwXSA9
IGFsaWduZWRbMF07CisgICAgICAgIGlmIChzaXplID49IDIpIGRzdFtvcmRlci5UMV0gPSBhbGln
bmVkWzFdOworICAgICAgICBpZiAoc2l6ZSA+PSAzKSBkc3Rbb3JkZXIuVDJdID0gYWxpZ25lZFsy
XTsKKyAgICAgICAgaWYgKHNpemUgPj0gNCkgZHN0W29yZGVyLlQzXSA9IGFsaWduZWRbM107Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIFRPRE86IEltcGxlbWVudCByZWFkU05vcm1TY2FsZS4K
KyAgICAgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7cnJW
ZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzaXplCisgICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwdHIKKyAgICAgKi8KKyAgICByclZl
cnRleEF0dHJpYi5yZWFkID0gZnVuY3Rpb24oZHN0LCB0eXBlLCBzaXplLCBwdHIpIHsKKyAgICAg
ICAgdmFyIG9yZGVyOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2Fz
ZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkZMT0FUOgorICAgICAgICAgICAgICAg
IHJyVmVydGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIu
Tm9ybWFsT3JkZXIsIEZsb2F0MzJBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuSEFMRjoKKyAgICAg
ICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkSGFsZihkc3QsIHNpemUsIHB0cik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKmNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVy
dGV4QXR0cmliVHlwZS5GSVhFRDoKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFk
Rml4ZWQoZHN0LCBzaXplLCBwdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLkRPVUJMRToKKyAgICAgICAg
ICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkRG91YmxlKGRzdCwgc2l6ZSwgcHRyKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsqLworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0
ZXhBdHRyaWJUeXBlLk5PTlBVUkVfVU5PUk04OgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0
cmliLnJlYWRVbm9ybU9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZlcnRleEF0dHJpYi5Ob3JtYWxP
cmRlciwgVWludDhBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9VTk9STTE2OgorICAg
ICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRVbm9ybU9yZGVyKGRzdCwgc2l6ZSwgcHRy
LCByclZlcnRleEF0dHJpYi5Ob3JtYWxPcmRlciwgVWludDE2QXJyYXkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJU
eXBlLk5PTlBVUkVfVU5PUk0zMjoKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFk
VW5vcm1PcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIsIFVp
bnQzMkFycmF5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJW
ZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VOT1JNXzJfMTBfMTBfMTBfUkVW
OgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRVbm9ybTIxMDEwMTBSZXZPcmRl
cihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRy
aWJUeXBlLk5PTlBVUkVfU05PUk04X0NMQU1QOiAvL0ludDgKKyAgICAgICAgICAgICAgICByclZl
cnRleEF0dHJpYi5yZWFkU25vcm1DbGFtcChkc3QsIHNpemUsIHB0ciwgSW50OEFycmF5KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVy
dGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNMTZfQ0xBTVA6IC8vSW50MTYKKyAgICAgICAgICAg
ICAgICByclZlcnRleEF0dHJpYi5yZWFkU25vcm1DbGFtcChkc3QsIHNpemUsIHB0ciwgSW50MTZB
cnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJyVmVydGV4
QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9STTMyX0NMQU1QOiAvL0ludDMyCisg
ICAgICAgICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZFNub3JtQ2xhbXAoZHN0LCBzaXplLCBw
dHIsIEludDMyQXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk1fMl8xMF8xMF8x
MF9SRVZfQ0xBTVA6CisgICAgICAgICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZFNub3JtMjEw
MTAxMFJldkNsYW1wT3JkZXIoZHN0LCBzaXplLCBwdHIsIHJyVmVydGV4QXR0cmliLk5vcm1hbE9y
ZGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qY2FzZSByclZlcnRl
eEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk04X1NDQUxFOiAvL0ludDgKKyAg
ICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkU25vcm1TY2FsZShkc3QsIHNpemUsIHB0
ciwgSW50OEFycmF5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1NOT1JNMTZfU0NBTEU6IC8v
SW50MTYKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkU25vcm1TY2FsZShkc3Qs
IHNpemUsIHB0ciwgSW50MTZBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9TTk9STTMy
X1NDQUxFOiAvL0ludDMyCisgICAgICAgICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZFNub3Jt
U2NhbGUoZHN0LCBzaXplLCBwdHIsIEludDMyQXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFr
OyovCisgICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9O
UFVSRV9TTk9STV8yXzEwXzEwXzEwX1JFVl9TQ0FMRToKKyAgICAgICAgICAgICAgICByclZlcnRl
eEF0dHJpYi5yZWFkU25vcm0yMTAxMDEwUmV2U2NhbGVPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJW
ZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfVUlOVF8y
XzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkVWludDIx
MDEwMTBSZXYoZHN0LCBzaXplLCBwdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfSU5UXzJf
MTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRJbnQyMTAx
MDEwUmV2KGRzdCwgc2l6ZSwgcHRyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VOT1JNOF9C
R1JBOgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRVbm9ybU9yZGVyKGRzdCwg
c2l6ZSwgcHRyLCByclZlcnRleEF0dHJpYi5CR1JBT3JkZXIsIFVpbnQ4QXJyYXkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhB
dHRyaWJUeXBlLk5PTlBVUkVfVU5PUk1fMl8xMF8xMF8xMF9SRVZfQkdSQToKKyAgICAgICAgICAg
ICAgICByclZlcnRleEF0dHJpYi5yZWFkVW5vcm0yMTAxMDEwUmV2T3JkZXIoZHN0LCBzaXplLCBw
dHIsIHJyVmVydGV4QXR0cmliLkJHUkFPcmRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9T
Tk9STV8yXzEwXzEwXzEwX1JFVl9DTEFNUF9CR1JBOgorICAgICAgICAgICAgICAgIHJyVmVydGV4
QXR0cmliLnJlYWRTbm9ybTIxMDEwMTBSZXZDbGFtcE9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZl
cnRleEF0dHJpYi5CR1JBT3JkZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVfU05PUk1fMl8x
MF8xMF8xMF9SRVZfU0NBTEVfQkdSQToKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5y
ZWFkU25vcm0yMTAxMDEwUmV2U2NhbGVPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRy
aWIuQkdSQU9yZGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliVHlwZS5OT05QVVJFX1VJTlQ4OgorICAgICAgICAg
ICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhB
dHRyaWIuTm9ybWFsT3JkZXIsIFVpbnQ4QXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLk5PTlBVUkVf
VUlOVDE2OgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNp
emUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIsIFVpbnQxNkFycmF5KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4
QXR0cmliVHlwZS5OT05QVVJFX1VJTlQzMjoKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJp
Yi5yZWFkT3JkZXIoZHN0LCBzaXplLCBwdHIsIHJyVmVydGV4QXR0cmliLk5vcm1hbE9yZGVyLCBV
aW50MzJBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJy
VmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9JTlQ4OgorICAgICAgICAgICAg
ICAgIHJyVmVydGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRy
aWIuTm9ybWFsT3JkZXIsIEludDhBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuTk9OUFVSRV9JTlQx
NjoKKyAgICAgICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkT3JkZXIoZHN0LCBzaXplLCBw
dHIsIHJyVmVydGV4QXR0cmliLk5vcm1hbE9yZGVyLCBJbnQxNkFycmF5KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmli
VHlwZS5OT05QVVJFX0lOVDMyOgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRP
cmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIsIEludDMyQXJy
YXkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0
dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLlBVUkVfVUlOVDg6CisgICAgICAgICAgICAgICAgcnJWZXJ0
ZXhBdHRyaWIucmVhZE9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZlcnRleEF0dHJpYi5Ob3JtYWxP
cmRlciwgVWludDhBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuUFVSRV9VSU5UMTY6CisgICAgICAg
ICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZE9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZlcnRl
eEF0dHJpYi5Ob3JtYWxPcmRlciwgVWludDE2QXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLlBVUkVf
VUlOVDMyOgorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNp
emUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFsT3JkZXIsIFVpbnQzMkFycmF5KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4
QXR0cmliVHlwZS5QVVJFX0lOVDg6CisgICAgICAgICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVh
ZE9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZlcnRleEF0dHJpYi5Ob3JtYWxPcmRlciwgSW50OEFy
cmF5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcnJWZXJ0ZXhB
dHRyaWIuVmVydGV4QXR0cmliVHlwZS5QVVJFX0lOVDE2OgorICAgICAgICAgICAgICAgIHJyVmVy
dGV4QXR0cmliLnJlYWRPcmRlcihkc3QsIHNpemUsIHB0ciwgcnJWZXJ0ZXhBdHRyaWIuTm9ybWFs
T3JkZXIsIEludDE2QXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSByclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWJUeXBlLlBVUkVfSU5UMzI6CisgICAgICAg
ICAgICAgICAgcnJWZXJ0ZXhBdHRyaWIucmVhZE9yZGVyKGRzdCwgc2l6ZSwgcHRyLCByclZlcnRl
eEF0dHJpYi5Ob3JtYWxPcmRlciwgSW50MzJBcnJheSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdyclZlcnRleEF0dHJpYi5yZWFkIC0gSW52YWxpZCB0eXBlJyk7CisgICAgICAgIH0KKyAgICB9
OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyVmVydGV4UGFja2V0
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
cmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJWZXJ0ZXhQYWNrZXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWMwMGUxN2QxOTMxYzdmOTA3ZDdmNzE0YTJiMWVjYThkNGQ4ODI1NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyVmVydGV4UGFja2V0LmpzCkBAIC0wLDAgKzEsMTAx
IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0g
T3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdm
cmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhQYWNrZXQnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCit2
YXIgcnJWZXJ0ZXhQYWNrZXQgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhQ
YWNrZXQ7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKK3Zh
ciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKKyAgICAvKioKKyAg
ICAgKiByclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQgY2xhc3MuIChTaG91bGQgb25seSBiZSBj
cmVhdGVkIGJ5IHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldEFsbG9jYXRvcikKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKi8KKyAgICByclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuaW5zdGFuY2VO
ZHg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnZlcnRleE5keDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtnb29nLk51bWJlckFycmF5fSAqLyB0aGlzLnBvc2l0aW9uOyAvLyE8IFRy
YW5zZm9ybWVkIHBvc2l0aW9uIC0gbXVzdCBiZSB3cml0dGVuIGFsd2F5cy4KKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMucG9pbnRTaXplOyAvLyE8IFBvaW50IHNpemUsIHJlcXVp
cmVkIHdoZW4gcmVuZGVyaW5nIHBvaW50cy4KKyAgICAgICAgLy8gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMucHJpbWl0aXZlSUQ7IC8vITwgR2VvbWV0cnkgc2hhZGVyIG91dHB1dCAoTm90IHVz
ZWQgaW4gd2ViR0wpCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z29vZy5OdW1iZXJBcnJheT59
ICovIHRoaXMub3V0cHV0cyA9IFtbMCwgMCwgMCwgMF1dOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiByclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXRBbGxvY2F0b3IgY2xhc3MKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyT2ZWZXJ0ZXhPdXRwdXRz
CisgICAgICovCisgICAgcnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0QWxsb2NhdG9yID0gZnVu
Y3Rpb24obnVtYmVyT2ZWZXJ0ZXhPdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fbnVtYmVyT2ZWZXJ0ZXhPdXRwdXRzID0gbnVtYmVyT2ZWZXJ0ZXhPdXRwdXRz
OworICAgICAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHRoaXMubV9hbGxvY2F0aW9uczsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fSAq
LyB0aGlzLm1fc2luZ2xlQWxsb2NQb29sID0gW107CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICByclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNr
ZXRBbGxvY2F0b3IucHJvdG90eXBlLmdldE51bVZlcnRleE91dHB1dHMgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMubV9udW1iZXJPZlZlcnRleE91dHB1dHM7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIGFsbG9jQXJyYXkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQK
KyAgICAgKiBAcmV0dXJuIHtBcnJheTxyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fQorICAg
ICAqLworICAgIHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldEFsbG9jYXRvci5wcm90b3R5cGUu
YWxsb2NBcnJheSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAgICAgIGlmICghY291bnQpCisgICAg
ICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBl
eHRyYVZhcnlpbmdzID0gKHRoaXMubV9udW1iZXJPZlZlcnRleE91dHB1dHMgPT0gMCkgPyAoMCkg
OiAodGhpcy5tX251bWJlck9mVmVydGV4T3V0cHV0cyAtIDEpOworICAgICAgICAvLyAvKiogQHR5
cGUge251bWJlcn0gVE9ETzogQ2hlY2sgd2hhdCB0aGlzIHNpemUgaXMgdXNlZCBmb3IgKi8gdmFy
IHBhY2tldFNpemUgPSBzaXplb2YocnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0KSArIGV4dHJh
VmFyeWluZ3MgKiBzaXplb2YoR2VuZXJpY1ZlYzQpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gKi8gdmFyIHJldFZhbCA9IFtdOworICAg
ICAgICAvLyAvKiogQHR5cGUge1VpbnQ4QXJyYXl9IFRPRE86IHNhbWUgYXMgYWJvdmUgKi8gdmFy
IHB0ciA9IG5ldyBkZUludDhbcGFja2V0U2l6ZSAqIGNvdW50XTsgLy8gdGhyb3dzIGJhZF9hbGxv
YyA9PiBvaworCisgICAgICAgIC8vcnVuIGN0b3JzCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHJldFZhbC5wdXNoKG5ldyByclZlcnRleFBhY2tl
dC5WZXJ0ZXhQYWNrZXQoKSk7CisKKyAgICAgICAgLyoqIFRPRE86IHNhbWUgYXMgcHJldmlvdXMg
LSB0aGlzLm1fYWxsb2NhdGlvbnMucHVzaF9iYWNrKHB0cik7ICovCisKKyAgICAgICAgcmV0dXJu
IHJldFZhbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7cnJWZXJ0ZXhQYWNr
ZXQuVmVydGV4UGFja2V0fQorICAgICAqLworICAgIHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tl
dEFsbG9jYXRvci5wcm90b3R5cGUuYWxsb2MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBwb29sU2l6ZSA9IDg7CisKKyAgICAgICAgaWYgKHRoaXMubV9z
aW5nbGVBbGxvY1Bvb2wubGVuZ3RoID09IDApCisgICAgICAgICAgICB0aGlzLm1fc2luZ2xlQWxs
b2NQb29sID0gdGhpcy5hbGxvY0FycmF5KHBvb2xTaXplKTsKKworICAgICAgICAvKiogQHR5cGUg
e3JyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldH0gKi8gdmFyIHBhY2tldCA9IHRoaXMubV9zaW5n
bGVBbGxvY1Bvb2wucG9wKCk7CisKKyAgICAgICAgcmV0dXJuIHBhY2tldDsKKyAgICB9OworCit9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9hdHRyaWJsb2NhdGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2F0dHJpYmxvY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWViMTJlNzc4MmU1YTdmZWU3MjBlOGY1
YWUyOTc5NDQyYzRiNTI4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9hdHRyaWJsb2Nh
dGlvbi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgQXR0cmlidXRlIExvY2F0aW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkF0
dHJpYkxvY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkF0dHJpYkxvY2F0aW9u
VGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2Jvb2xlYW5zdGF0ZXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYm9vbGVhbnN0YXRl
cXVlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDIzZGQ0NGY4NWY0ZjM5N2NkNTlmNjE0MjQ0M2IwOGU3
OWVmMTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Jvb2xlYW5zdGF0ZXF1ZXJ5Lmh0
bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBCb29sZWFuIFN0YXRlIFF1ZXJ5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJvb2xlYW5T
dGF0ZVF1ZXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IHtzdGVuY2lsOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJvb2xlYW5TdGF0
ZVF1ZXJ5LnJ1bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9idWZmZXJjb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVmZmVyY29weS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA0YzFkMTFiZmEwNTkzZmUwMmZiN2VjMzgzOTNmM2Q2ZDllZWEwZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVmZmVyY29weS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVmZmVyIENvcHkgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmQnVmZmVyQ29weVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWZmZXJD
b3B5VGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1ZmZlcm9iamVjdHF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVmZmVyb2Jq
ZWN0cXVlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGZhMmYzNThjYTViYzQwYjg3MjE5MTRlYWViNjNk
YzAwZTc0ZGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1ZmZlcm9iamVjdHF1ZXJ5
Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBCdWZmZXIgT2JqZWN0IFF1ZXJ5IFRlc3RzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1ZmZlck9i
amVjdFF1ZXJ5VGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYWJzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
YnVpbHRpbnByZWNpc2lvbi9hYnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzM5NWU5NGRlYjMwNTIwYTkw
MDg2MTQ5ODg1ZGIwYTc3NGMyM2RjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0
aW5wcmVjaXNpb24vYWJzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFz
Jyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblBy
ZWNpc2lvblRlc3RzLnJ1bihnbCwgMjYpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9hY29zLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvYnVpbHRpbnByZWNpc2lvbi9hY29zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MyN2Q0YTM1MGI0ZTY4
NGI2NWE3YTQ5Y2JjODBhMTc4YjhlYWVlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL2Fjb3MuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
YW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWls
dGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAxMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2Fjb3NoLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9hY29zaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MzFhNjAy
NjAxZGE3ZmJmYjRhMGY1Mzk3YjU3ZDQwMjRlMWRkODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvYnVpbHRpbnByZWNpc2lvbi9hY29zaC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIx
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDE3KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYWRkLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9hZGQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODE3
Mjk5MzQ5ZGVmMjk4ZmYzZWUxYzBlZjAxNzE1YmEwOGJjNzFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYWRkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2FzaW4u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2FzaW4uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YjhiZDFhODM4NzIyMzBhMzI2MDQ5OWE0ZWQ3ODA0ZWVkNTNhM2RlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYXNpbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lv
bl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9h
c2luaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYXNpbmguaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZTg0ZGY5NGE4ZTYwZmNhZTc3N2RiMTFhZDVhNzUyNWI4MGE2MTNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYXNpbmguaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5w
cmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAxNik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJl
Y2lzaW9uL2F0YW4uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2F0YW4uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMGY1MGMwM2NiOTc0ZmIyYzRlMTYzZmZhMDZlNzYyOThlYzkwMDE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vYXRhbi5odG1sCkBAIC0w
LDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVp
bHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9u
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25U
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDExKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0
aW5wcmVjaXNpb24vYXRhbjIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2F0YW4y
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTk2ZGUwMDYwZjM2MWVmNjAyMTc0NjQzMjBhYTM1Y2MzZjg0ZjAz
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2F0YW4yLmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQ
cmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblBy
ZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihn
bCwgMTIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvYnVpbHRpbnByZWNpc2lvbi9hdGFuaC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNp
b24vYXRhbmguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTE3NjY2ZThlM2IxYjI3Y2M1ZjE2OTVjZDM2OTBj
OWEzNTdhZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24v
YXRhbmguaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBC
dWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZC
dWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVz
dHMucnVuKGdsLCAxOCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2NlaWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlu
cHJlY2lzaW9uL2NlaWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGQ1OTI0NDA3MjA1MzViYjZjZTU0NGNm
MzdjYWM1ZGMxNmQ2NDUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVj
aXNpb24vY2VpbC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNp
b25UZXN0cy5ydW4oZ2wsIDMyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vY2xhbXAuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL2NsYW1wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE4MjA2NTJhMWI0MTliMGIy
Njg2ZGRiNTdjMTdlNTA1NTFjYzdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWls
dGlucHJlY2lzaW9uL2NsYW1wLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Fu
dmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRp
blByZWNpc2lvblRlc3RzLnJ1bihnbCwgNDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9jb3MuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9idWlsdGlucHJlY2lzaW9uL2Nvcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4MTQxOWU4OTczYWNl
MjQ5YjY1ZGE2OTY3ZDUzNTA4MmVhOTJiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
YnVpbHRpbnByZWNpc2lvbi9jb3MuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
YW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWls
dGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCA3KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vY29zaC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vY29zaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjOWMyNmI2Mzcx
Y2ZlNDM4ZmZjMTAxNmVhOWZjOGRmMzdjZWVjM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvYnVpbHRpbnByZWNpc2lvbi9jb3NoLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
QnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMTQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9jcm9zcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vY3Jvc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2I5
NmVhZGE0OWYwZDNhYjgwZTFkMmVkNWQ5YzZjNzJjYjRkNjRmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vY3Jvc3MuaHRtbApAQCAtMCwwICsxLDMyIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCA0NSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2Rl
Z3JlZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2RlZ3JlZXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOWVkMGY4MGU2OGM5OGQ4MzE1NTFiNjU5OGY2NjZmMzFlMmY4MjhiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZGVncmVlcy5odG1sCkBAIC0w
LDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVp
bHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9u
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25U
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDUpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRp
bnByZWNpc2lvbi9kZXRlcm1pbmFudC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24v
ZGV0ZXJtaW5hbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmFkMDRlYjQxY2IzMjJkNDNjNWJkYTYwNDE4
MDFmY2I2ZDUwMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNp
b24vZGV0ZXJtaW5hbnQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMn
KTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJl
Y2lzaW9uVGVzdHMucnVuKGdsLCA1Myk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2Rpc3RhbmNlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvYnVpbHRpbnByZWNpc2lvbi9kaXN0YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmOWNmZWJh
ZjY2ZjQ1YjRiMDczZmE3NjE4NjQ0M2M3ZTIyMmY2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvYnVpbHRpbnByZWNpc2lvbi9kaXN0YW5jZS5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0
PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDQzKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZGl2
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9kaXYuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YzJjNWNlNzIzMjljZDBlMWFiNmE5Zjg2MjkxYTdlYjg4MWExM2VkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZGl2Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9u
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMyk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2Rv
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZG90Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTA2ZmQzOTVkYWQyZWQzYjQyYzQwZDljMWU2OGZmZTU5OTAwOTEwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2RvdC5odG1sCkBAIC0wLDAgKzEsMzIgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lv
bl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDQ0KTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24v
ZXhwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9leHAuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMWNiNmE4MjZmNDEyMTk5MTlmMjU0YTE4MzEzZjdiYjYwZDFhNTg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZXhwLmh0bWwKQEAgLTAsMCArMSwzMiBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lz
aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMjApOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lv
bi9leHAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9leHAyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2Y4NzU1Y2QyNDZkMDM4ZmU2Y2E5YjhlZTUwZjNhYTg0NDU2OTlmMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2V4cDIuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5w
cmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAyMSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJl
Y2lzaW9uL2ZhY2Vmb3J3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9mYWNl
Zm9yd2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjYWJlOWNkZjkzMzQ5MzQ4MGUxZTFlMDdkNDUxZjdj
NWI1ZmY2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9m
YWNlZm9yd2FyZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNp
b25UZXN0cy5ydW4oZ2wsIDQ3KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZmxvb3IuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL2Zsb29yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMwNjBmMTNiYjhkMjViNTJl
NDBlZDZmODBiZWM1YzJmM2JiOTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWls
dGlucHJlY2lzaW9uL2Zsb29yLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Fu
dmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRp
blByZWNpc2lvblRlc3RzLnJ1bihnbCwgMjgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9mcmFjdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vZnJhY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTc3OGYzYWI2
M2Q3Yzk4MjA5NTBlMWRmMTA4MTZjMzQxZWUwNjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2J1aWx0aW5wcmVjaXNpb24vZnJhY3QuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAzMyk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2ludmVyc2Uu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2ludmVyc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMGIyZTU4NzZiMWU0NWRiYzc0YWIzMmU5NTk2YjNjMTdlNjM2MWQ1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vaW52ZXJzZS5odG1sCkBAIC0wLDAgKzEs
MzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnBy
ZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIw
MCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDU0KTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVj
aXNpb24vaW52ZXJzZXNxcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2ludmVy
c2VzcXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM0ZWM1NTY5Y2QwYjFkNDc0YWYyOWIxOTU4YjgxM2Jh
YTc2ZGYyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2lu
dmVyc2VzcXJ0Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lv
blRlc3RzLnJ1bihnbCwgMjUpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9sZW5ndGguaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL2xlbmd0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0OWY3MTZjNzlkOTMzNGI5
ODM4NGM4ZmY1MmUwYzkwMjk3YjFmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVp
bHRpbnByZWNpc2lvbi9sZW5ndGguaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
YW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWls
dGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCA0Mik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL2xvZy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbG9nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUyOGNlZWYyNWNi
MDFmNTczYWE5YTllYzVmZGIwZDFkZjdmN2U1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9idWlsdGlucHJlY2lzaW9uL2xvZy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1
aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDIyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbG9nMi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbG9nMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZWZkNTlh
MzJiNmM3ODJlMjIzNGM5OTg5MzBjNmRmMzFhNzM0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvYnVpbHRpbnByZWNpc2lvbi9sb2cyLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMjMpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9tYXRyaXhj
b21wbXVsdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbWF0cml4Y29tcG11bHQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOGM4MWU3NWY2NmRlYmMyMjg5YmZlZWY5NTdmN2I3YTZkNTM3MWI2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbWF0cml4Y29t
cG11bHQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBC
dWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZC
dWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVz
dHMucnVuKGdsLCA1MCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL21heC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5w
cmVjaXNpb24vbWF4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU0MjBhYmUxZGViY2ZiODU4NDFkM2RmNzQ4
ZDVhZWZiMTJjMmM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lz
aW9uL21heC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25U
ZXN0cy5ydW4oZ2wsIDM3KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbWluLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRp
bnByZWNpc2lvbi9taW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjMwMzUxNDI2MmI2M2QyZjAzMGQ3MDM4
ZjIyOTlmMzk1N2IzZGIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVj
aXNpb24vbWluLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lv
blRlc3RzLnJ1bihnbCwgMzYpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9taXguaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWls
dGlucHJlY2lzaW9uL21peC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzcwNDM3MGU0ODk1OTEyMGZiMDc2
YTY1ZWRhYmQ2ZGVmNTNhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnBy
ZWNpc2lvbi9taXguaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lz
aW9uVGVzdHMucnVuKGdsLCAzOCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL21vZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1
aWx0aW5wcmVjaXNpb24vbW9kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JlMTA3NzNkMThjNGQ2NjQ1ZDQ1
YzRlYTVlNDk0ODA0N2RiNGQzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlu
cHJlY2lzaW9uL21vZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycp
OwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVj
aXNpb25UZXN0cy5ydW4oZ2wsIDM0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbW9kZi5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2J1aWx0aW5wcmVjaXNpb24vbW9kZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTNkZjUxYTBhYjM5OWI0
NzliZDY4ZTczODdhZWI3Mjg1MTM2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVp
bHRpbnByZWNpc2lvbi9tb2RmLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Fu
dmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRp
blByZWNpc2lvblRlc3RzLnJ1bihnbCwgMzUpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9tdWwuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9idWlsdGlucHJlY2lzaW9uL211bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0NzNmZDhjMDYyZGM3
MjAyNjgzMjBkNmUwZDdkYzA5ZWI3M2NhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
YnVpbHRpbnByZWNpc2lvbi9tdWwuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
YW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWls
dGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbm9ybWFsaXplLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9ub3JtYWxpemUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Mjc4N2Q3YTMwNDE2Y2YwOTQ4YTk4OTkwYjVlNWExNzFmYTdjN2I0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vbm9ybWFsaXplLmh0bWwKQEAgLTAsMCArMSwz
MiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJl
Y2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgNDYpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNp
c2lvbi9vdXRlcnByb2R1Y3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL291dGVy
cHJvZHVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZTJiNmQ4MTBjNDM1NGE4NTYzNjZlOTBlYmVmOTFh
ZDBlYmFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9v
dXRlcnByb2R1Y3QuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lz
aW9uVGVzdHMucnVuKGdsLCA1MSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3Bvdy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1
aWx0aW5wcmVjaXNpb24vcG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc5M2Q3NDBkNTk2ZTAyZGQ4ZjEx
MWMyNGM0MDY2ODI1ZTRiNDg3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlu
cHJlY2lzaW9uL3Bvdy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycp
OwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVj
aXNpb25UZXN0cy5ydW4oZ2wsIDE5KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vcmFkaWFucy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2J1aWx0aW5wcmVjaXNpb24vcmFkaWFucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MDhhY2JhMTdh
YmU0ZjlmNTA0MjNjYTIyNTQ0NmVkOWI5OWMxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvYnVpbHRpbnByZWNpc2lvbi9yYWRpYW5zLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgNCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3JlZmxlY3Qu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3JlZmxlY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44N2JhMTNkNWUxYjkzNGVjNmFmYzZmNzJjNTUzODU3YjRmZTAzYTE2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vcmVmbGVjdC5odG1sCkBAIC0wLDAgKzEs
MzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnBy
ZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIw
MCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDQ4KTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVj
aXNpb24vcmVmcmFjdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vcmVmcmFjdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4ZDk2N2Q1NTcwODFhMGM5ZmFhYWM5ODhhNDQ2YTc0MmVhNjNmZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9yZWZyYWN0Lmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQ
cmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblBy
ZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihn
bCwgNDkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvYnVpbHRpbnByZWNpc2lvbi9yb3VuZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNp
b24vcm91bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTg2ZDY3OTVjNzRhN2JjY2M4OTg0ZTZmNGY0MzBj
MTE3YmM5M2U1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24v
cm91bmQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBC
dWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZC
dWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVz
dHMucnVuKGdsLCAzMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3JvdW5kZXZlbi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1
aWx0aW5wcmVjaXNpb24vcm91bmRldmVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxZjkxZWRhN2VjOWNk
ODBhMGU2Nzc5ZWI4ODFjNzQzZGM4YzI4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL3JvdW5kZXZlbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NhbnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDMxKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vc2lnbi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vc2lnbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNGNm
MjhhYzQ5MDU2Nzg5NWU1Y2M3NGZjMjhjZDAyMzc5YTg5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zaWduLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMjcpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zaW4u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3Npbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVl
OTVkODBhZjRiYTJkMjNlNGU2YTQ3MDk1OGZjZjA2YTRkNDhlNDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zaW4uaHRtbApAQCAtMCwwICsxLDMyIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCA2KTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vc2lu
aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vc2luaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4MDVhNzAzYTFmNWIxZjUzZjIyNWRjYjQ4ZTg1ZDRmNTI3MmRmMzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zaW5oLmh0bWwKQEAgLTAsMCArMSwzMiBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lz
aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgMTMpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lv
bi9zbW9vdGhzdGVwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zbW9vdGhzdGVw
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGRkNGQ3YzliMjVmNDYyZTEzNmE5YmYxMDVjMGQ4Y2Q0MDY1MmFl
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3Ntb290aHN0
ZXAuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWls
dGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWls
dGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMu
cnVuKGdsLCA0MCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3NxcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJl
Y2lzaW9uL3NxcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDc1MTkyMzdiZDliMzg2NWIyNDEzZDhjYzc2
MzdmZDdjMWRkODczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNp
b24vc3FydC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25U
ZXN0cy5ydW4oZ2wsIDI0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vc3RlcC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0
aW5wcmVjaXNpb24vc3RlcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZDE0M2JiNDk0MTZhNGE3NjZiNTM4
ZDQ4ZWEwMmIxMTA4YWI2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnBy
ZWNpc2lvbi9zdGVwLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNp
c2lvblRlc3RzLnJ1bihnbCwgMzkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi9zdWIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9i
dWlsdGlucHJlY2lzaW9uL3N1Yi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMjJlOTRkYjA2YTMwYmJjNjYz
Mjg2YmRmMWZiMDEzZTEzMzEwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRp
bnByZWNpc2lvbi9zdWIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBCdWlsdGluIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMn
KTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJl
Y2lzaW9uVGVzdHMucnVuKGdsLCAxKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vdGFuLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
YnVpbHRpbnByZWNpc2lvbi90YW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDQyZjgzYmZjZjE5OGNmNTcx
ZGRmMzYzYmIwN2IzMmRkNWUwNjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0
aW5wcmVjaXNpb24vdGFuLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJlY2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFz
Jyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblBy
ZWNpc2lvblRlc3RzLnJ1bihnbCwgOCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9idWlsdGlucHJlY2lzaW9uL3RhbmguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9idWlsdGlucHJlY2lzaW9uL3RhbmguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDAxM2VkNmQ2ZTdjNmFm
ODFhODFkZTdkYjM0Y2EwNTYzYWJhNmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1
aWx0aW5wcmVjaXNpb24vdGFuaC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYnVpbHRpbnByZWNpc2lvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIEJ1aWx0aW4gUHJlY2lzaW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nh
bnZhcycpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJ1aWx0
aW5QcmVjaXNpb25UZXN0cy5ydW4oZ2wsIDE1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vdHJhbnNwb3NlLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNpc2lvbi90cmFuc3Bvc2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OGQ1NWZlYmY4ZmMzNTU2NWIxYzhhN2Q0YzdiMmFlYzVkNGYyYmE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vdHJhbnNwb3NlLmh0bWwKQEAgLTAsMCArMSwz
MiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBidWlsdGlucHJl
Y2lzaW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgQnVpbHRpbiBQcmVjaXNpb24gQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLnJ1bihnbCwgNTIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvYnVpbHRpbnByZWNp
c2lvbi90cnVuYy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vdHJ1bmMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMDk2NTZkOWFjODVhNzgzMzJmYmNiMTAzNWU0Y2E4NjllOTg5Mzg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2J1aWx0aW5wcmVjaXNpb24vdHJ1bmMuaHRtbApAQCAt
MCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJ1
aWx0aW5wcmVjaXNpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBCdWlsdGluIFByZWNpc2lv
biBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMucnVuKGdsLCAyOSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9jbGlw
cGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2NsaXBwaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIyYjJiZDc3
ZmIxMTU0NWJmMmMzNjY2ZGNhOGE3NGY4YTY2ZjlmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9jbGlwcGluZy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ2xpcHBpbmcgdGVzdHMgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmQ2xpcHBpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmQ2xpcHBpbmdUZXN0cy5y
dW4oZ2wpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZGVmYXVsdHZlcnRleGF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RlZmF1bHR2ZXJ0ZXhh
dHRyaWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmNhOTlhZDcwZGIwZTA4NWY4ZGJlYzZhYjhmNzdj
YWNlZmVhZDBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RlZmF1bHR2ZXJ0ZXhhdHRy
aWJ1dGUuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIERlZmF1bHQgVmVydGV4IEF0dHJpYnV0ZXMgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RyYXcvZHJhd19hcnJheXMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9kcmF3L2RyYXdfYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU5NjU1ZGYxNGU0
ZThjZWI4N2I5OTI0MzIwZWU2NjZlZTkzZTdmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9kcmF3L2RyYXdfYXJyYXlzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBkcmF3X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
RHJhdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZEcmF3VGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAi
IGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkRyYXdUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfYXJy
YXlzX2luc3RhbmNlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RyYXcvZHJhd19hcnJheXNfaW5zdGFuY2Vk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjgyMTllZTA3M2NkZmZkOGY2ZGQzZmYxNzUxNTJiODRhOWFkMGE5
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfYXJyYXlzX2luc3RhbmNl
ZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gZHJhd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIERyYXcgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRHJhd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZEcmF3VGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZHJhdy9kcmF3X2VsZW1lbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZHJhdy9kcmF3X2VsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZiMWE1YzE2MDk1YWQ0
NWNjMWUzYjNmYWUwNzZiMjZjNTU5ZDJlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9k
cmF3L2RyYXdfZWxlbWVudHMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGRyYXdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBE
cmF3IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkRyYXdUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIg
aGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmRHJhd1Rlc3RzLnJ1bihnbCwgWzEsIDJdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RyYXcvZHJhd19lbGVt
ZW50c19pbnN0YW5jZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfZWxlbWVudHNfaW5zdGFu
Y2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRjNGIzYjk4MDhjMTRmMGE0YjhiYjQ3YThjMTYyYzQ5MTA1
MzljZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfZWxlbWVudHNfaW5z
dGFuY2VkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBkcmF3X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRHJhdyBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZEcmF3VGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkRyYXdUZXN0cy5ydW4oZ2wsIFszLCA0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfcmFuZ2VfZWxlbWVudHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2RyYXdfcmFuZ2VfZWxlbWVudHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZjJmN2E5MmJiZjRkYzZhZjRjN2VjNDRmYjIwM2YxYmFhYjM4ODRhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2RyYXcvZHJhd19yYW5nZV9lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZHJhd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIERyYXcgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmRHJhd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZEcmF3VGVzdHMucnVu
KGdsLCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZHJhdy9pbnN0YW5jaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZHJhdy9pbnN0YW5jaW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY4ZDc5MTBiZWM3Zjg2ODhiOGNiY2IyYTRiZmQ0ZTYyMDkzMGMw
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9kcmF3L2luc3RhbmNpbmcuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGRy
YXdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBEcmF3IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkRyYXdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRHJhd1Rl
c3RzLnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2RyYXcvcmFuZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZHJhdy9yYW5kb20u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYzZmMDJmOWMyZDA1YzljYzg0NGI3MDE5N2M1NGZmM2Q0NmI0ZDYx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2RyYXcvcmFuZG9tLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBkcmF3X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRHJhdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZEcmF3VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkRyYXdUZXN0cy5y
dW4oZ2wsIFs2LCA3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmQXBpQ2FzZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQXBpQ2FzZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMjM4ZTZjMmVmYmI1NTYxNjVkMmUyZjQ1NjViODE0N2IyNTAzMjA1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZBcGlDYXNlLmpzCkBAIC0wLDAgKzEsMTYxIEBACisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdM
IEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICog
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmQXBpQ2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3RyVXRpbCcp
OworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGVzM2ZBcGlDYXNlID0gZnVu
Y3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZTsKKyAgICB2YXIgZ2x1U3RyVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1U3RyVXRpbDsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRlc3RDYXNlOworCisgICAgLy8gZm9ybWF0IG51bWJlcnMgYXMgdGhleSBhcHBlYXIg
aW4gZ2wuaAorICAgIHZhciBnZXRIZXhTdHIgPSBmdW5jdGlvbihudW0pIHsKKyAgICAgICAgdmFy
IG51bXN0ciA9IG51bS50b1N0cmluZygxNik7CisgICAgICAgIHZhciBwcmVmaXggPSAnMHgnOwor
ICAgICAgICBmb3IgKAorICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSAobnVtIDwgMHgxMDAwMCA/
IDQgOiA4KSAtIG51bXN0ci5sZW5ndGg7CisgICAgICAgICAgICBwYWRkaW5nLS0gPiAwOworICAg
ICAgICApIHByZWZpeCArPSAnMCc7CisgICAgICAgIHJldHVybiBwcmVmaXggKyBudW1zdHI7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBBUEkgdGVzdHMu
CisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVz
dH0KKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
YworICAgICovCisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2Ms
IGdsKSB7CisgICAgICAgIGdsID0gZ2wgfHwgd2luZG93LmdsOworICAgICAgICBpZiAodGhpcy50
ZXN0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pbXBs
ZW1lbnRlZCB2aXJ0dWFsIGZ1bmN0aW9uOiBlczNmQXBpQ2FzZS5BcGlDYXNlLnRlc3QnKTsKKyAg
ICAgICAgfQorICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRl
c2MpOworCisgICAgICAgIHRoaXMubV9nbCA9IGdsOworICAgICAgICB0aGlzLm1fcGFzcyA9IHRy
dWU7CisgICAgICAgIHRoaXMubV9jb21tZW50ID0gJyc7CisKKyAgICB9OworCisgICAgZXMzZkFw
aUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBU
ZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmQXBpQ2FzZS5BcGlDYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHti
b29sZWFufSBjb25kaXRpb24KKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UKKyAgICAg
Ki8KKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZS5jaGVjayA9IGZ1bmN0aW9uKGNv
bmRpdGlvbiwgbWVzc2FnZSkgeworICAgICAgICBpZiAodGhpcy5tX3Bhc3MgJiYgIWNvbmRpdGlv
bikgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0NvbmRpdGlvbiBpcyBmYWxz
ZS4gVGVzdCBmYWlsZWQuJyk7CisgICAgICAgICAgICBpZiAobWVzc2FnZSkKKyAgICAgICAgICAg
ICAgICB0aGlzLm1fY29tbWVudCArPSAnICcgKyBtZXNzYWdlOworICAgICAgICAgICAgdGhpcy5t
X3Bhc3MgPSBjb25kaXRpb247CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjsK
KyAgICB9OworCisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1
bmN0aW9uKCkgeworCisgICAgICAgIHRoaXMudGVzdCgpOworCisgICAgICAgIGlmICh0aGlzLm1f
cGFzcykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQodGhpcy5tX2NvbW1lbnQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucyh0aGlzLm1fY29tbWVudCwgdHJ1ZSk7
CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9
OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj58bnVtYmVyfSBleHBlY3Rl
ZAorICAgICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJucyB0cnVlIGlmIGdsLmdldEVycm9yIHJl
dHVybnMgYW4gZXhwZWN0ZWQgZXJyb3IgY29kZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICov
CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUuZXhwZWN0RXJyb3IgPSBmdW5jdGlv
bihleHBlY3RlZCkgeworICAgICAgICBpZiAoZXhwZWN0ZWQuY29uc3RydWN0b3IgPT09IE51bWJl
cikKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW2V4cGVjdGVkXTsKKworICAgICAgICB2YXIgZXJy
ID0gdGhpcy5tX2dsLmdldEVycm9yKCk7CisgICAgICAgIHZhciBjb25mb3JtYW50ID0gZXhwZWN0
ZWQuaW5kZXhPZihlcnIpID49IDA7CisKKyAgICAgICAgaWYgKCFjb25mb3JtYW50KSB7CisKKyAg
ICAgICAgICAgIHZhciBsID0gZXhwZWN0ZWQubGVuZ3RoOworICAgICAgICAgICAgdmFyIG1zZyA9
ICdFeHBlY3RlZCAnOworCisgICAgICAgICAgICBpZiAobCA+IDEpCisgICAgICAgICAgICAgICAg
bXNnICs9IChsID09IDIgPyAnZWl0aGVyICcgOiAnb25lIG9mICcpOworCisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGw7ICsraSkgbXNnICs9ICgKKyAgICAgICAgICAgICAgICAoZ2x1
U3RyVXRpbC5nZXRFcnJvck5hbWUoZXhwZWN0ZWRbaV0pIHx8IGdldEhleFN0cihleHBlY3RlZFtp
XSkpICsKKyAgICAgICAgICAgICAgICAobCAtIGkgPT0gMiA/ICcgb3IgJyA6ICcsICcpCisgICAg
ICAgICAgICApOworCisgICAgICAgICAgICBtc2cgKz0gJ2J1dCBnb3QgJyArIChnbHVTdHJVdGls
LmdldEVycm9yTmFtZShlcnIpIHx8IGdldEhleFN0cihlcnIpKSArICcuJzsKKworICAgICAgICAg
ICAgdGhpcy50ZXN0RmFpbGVkKG1zZyk7CisKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBj
b25mb3JtYW50OworICAgIH07CisKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZS50
ZXN0RmFpbGVkID0gZnVuY3Rpb24oY29tbWVudCkgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZShjb21tZW50KTsKKyAgICAgICAgaWYgKHRoaXMubV9wYXNzKSB7CisgICAgICAgICAgICB0
aGlzLm1fY29tbWVudCA9IGNvbW1lbnQ7CisgICAgICAgICAgICB0aGlzLm1fcGFzcyA9IGZhbHNl
OworICAgICAgICB9CisgICAgfTsKKworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBl
LmV4cGVjdFRocm93Tm9FcnJvciA9IGZ1bmN0aW9uKGYpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGYoKTsKKyAgICAgICAgICAgIHRoaXMudGVzdEZhaWxlZCgic2hvdWxkIGhhdmUgdGhy
b3duIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKHRoaXMubV9nbC5OT19FUlJPUik7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvKioKKyAgICAqIEJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgQVBJIHRlc3RzLgorICAgICogQGNv
bnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICogQHBh
cmFtIHtmdW5jdGlvbih0aGlzOmVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjayl9IGNhbGxiYWNr
CisgICAgKi8KKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2sgPSBmdW5jdGlvbihuYW1l
LCBkZXNjLCBnbCwgY2FsbGJhY2spIHsKKyAgICAgICAgdGhpcy50ZXN0ID0gY2FsbGJhY2s7Cisg
ICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBnbCk7Cisg
ICAgfTsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2sucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZkFwaUNhc2Uu
QXBpQ2FzZUNhbGxiYWNrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZBcGlDYXNlLkFwaUNh
c2VDYWxsYmFjazsKKworLyoKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZS5leHBl
Y3RFcnJvciAvLyAoZXJyb3IpIG9yIChlcnJvcjAsIGVycm9yMSkKKyAgICBlczNmQXBpQ2FzZS5B
cGlDYXNlLnByb3RvdHlwZS5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zIC8vIChudW1iZXIgbnVtU3Vw
cG9ydGVkVmFsdWVzLCBudW1iZXIgZXh0ZW5zaW9uLCBbbnVtYmVyXSB2YWx1ZXMgKQorICAgIGVz
M2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlLmNoZWNrQm9vbGVhbnMgLy8gKGNoYXIgdmFsdWUs
IGNoYXIgZXhwZWN0ZWQpOworLy8qLworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkF0
dHJpYkxvY2F0aW9uVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTNmOTFlY2ExZDdiMGQxN2M2Y2I0MDgwNTY1NjY5YjFlNTZmYTdiMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQXR0cmliTG9jYXRpb25UZXN0cy5qcwpA
QCAtMCwwICsxLDI2NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVh
bGl0eSBQcm9ncmFtIE9wZW5HTCBFUyAzLjAgTW9kdWxlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8vKiEKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQXR0cmlidXRlIGxvY2F0aW9uIHRlc3QKKyAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworJ3VzZSBz
dHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBdHRyaWJMb2NhdGlv
blRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcp
OworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZXMzZkF0dHJpYkxvY2F0
aW9uVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBdHRyaWJMb2NhdGlvblRlc3RzOworICAg
IHZhciBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzID0gbW9kdWxlcy5zaGFyZWQuZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0czsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9u
LnRjdVRlc3RDYXNlOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5n
bHVTaGFkZXJVdGlsOworCisgICAgZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMuY3JlYXRlQXR0cmli
dXRlTG9jYXRpb25UZXN0cyA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlPn0gKi8KKyAgICAgICAgdmFy
IHR5cGVzID0gWworICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0
cmliVHlwZSgnZmxvYXQnLCAxLCBnbC5GTE9BVCksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWMyJywgMSwgZ2wuRkxPQVRfVkVDMiksCisg
ICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWMz
JywgMSwgZ2wuRkxPQVRfVkVDMyksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wuRkxPQVRfVkVDNCksCisKKyAgICAgICAg
ICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ21hdDInLCAyLCBn
bC5GTE9BVF9NQVQyKSwKKyAgICAgICAgICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkF0dHJpYlR5cGUoJ21hdDMnLCAzLCBnbC5GTE9BVF9NQVQzKSwKKyAgICAgICAgICAgIG5ldyBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ21hdDQnLCA0LCBnbC5GTE9BVF9N
QVQ0KSwKKworICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
VHlwZSgnaW50JywgMSwgZ2wuSU5UKSwKKyAgICAgICAgICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkF0dHJpYlR5cGUoJ2l2ZWMyJywgMSwgZ2wuSU5UX1ZFQzIpLAorICAgICAgICAg
ICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgnaXZlYzMnLCAxLCBn
bC5JTlRfVkVDMyksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5B
dHRyaWJUeXBlKCdpdmVjNCcsIDEsIGdsLklOVF9WRUM0KSwKKworICAgICAgICAgICAgbmV3IGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndWludCcsIDEsIGdsLlVOU0lHTkVE
X0lOVCksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJU
eXBlKCd1dmVjMicsIDEsIGdsLlVOU0lHTkVEX0lOVF9WRUMyKSwKKyAgICAgICAgICAgIG5ldyBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ3V2ZWMzJywgMSwgZ2wuVU5TSUdO
RURfSU5UX1ZFQzMpLAorICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QXR0cmliVHlwZSgndXZlYzQnLCAxLCBnbC5VTlNJR05FRF9JTlRfVkVDNCksCisKKyAgICAgICAg
ICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ21hdDJ4MicsIDIs
IGdsLkZMT0FUX01BVDIpLAorICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuQXR0cmliVHlwZSgnbWF0MngzJywgMiwgZ2wuRkxPQVRfTUFUMngzKSwKKyAgICAgICAgICAg
IG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ21hdDJ4NCcsIDIsIGds
LkZMT0FUX01BVDJ4NCksCisKKyAgICAgICAgICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLkF0dHJpYlR5cGUoJ21hdDN4MicsIDMsIGdsLkZMT0FUX01BVDN4MiksCisgICAgICAgICAg
ICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCdtYXQzeDMnLCAzLCBn
bC5GTE9BVF9NQVQzKSwKKyAgICAgICAgICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkF0dHJpYlR5cGUoJ21hdDN4NCcsIDMsIGdsLkZMT0FUX01BVDN4NCksCisKKyAgICAgICAgICAg
IG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ21hdDR4MicsIDQsIGds
LkZMT0FUX01BVDR4MiksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5BdHRyaWJUeXBlKCdtYXQ0eDMnLCA0LCBnbC5GTE9BVF9NQVQ0eDMpLAorICAgICAgICAgICAg
bmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgnbWF0NHg0JywgNCwgZ2wu
RkxPQVRfTUFUNCkKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZT59ICovCisgICAgICAgIHZhciBlczJUeXBl
cyA9IFsKKyAgICAgICAgICAgIG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5
cGUoJ2Zsb2F0JywgMSwgZ2wuRkxPQVQpLAorICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndmVjMicsIDEsIGdsLkZMT0FUX1ZFQzIpLAorICAgICAg
ICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndmVjMycsIDEs
IGdsLkZMT0FUX1ZFQzMpLAorICAgICAgICAgICAgbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuQXR0cmliVHlwZSgndmVjNCcsIDEsIGdsLkZMT0FUX1ZFQzQpLAorCisgICAgICAgICAgICBu
ZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCdtYXQyJywgMiwgZ2wuRkxP
QVRfTUFUMiksCisgICAgICAgICAgICBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRy
aWJUeXBlKCdtYXQzJywgMywgZ2wuRkxPQVRfTUFUMyksCisgICAgICAgICAgICBuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCdtYXQ0JywgNCwgZ2wuRkxPQVRfTUFUNCkK
KyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAq
LworICAgICAgICB2YXIgcm9vdCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ2F0dHJpYnV0ZV9sb2Nh
dGlvbicsICdBdHRyaWJ1dGUgbG9jYXRpb24gdGVzdHMnKTsKKworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHR5cGVOZHg7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlfSAqLyB2YXIgdHlwZTsKKworICAgICAgICAvLyBCYXNp
YyBiaW5kIGF0dHJpYnV0ZSB0ZXN0cworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRl
cXBUZXN0fSAqLworICAgICAgICB2YXIgYmluZEF0dHJpYnV0ZUdyb3VwID0gdGN1VGVzdENhc2Uu
bmV3VGVzdCgnYmluZCcsICdCYXNpYyBiaW5kIGF0dHJpYnV0ZSBsb2NhdGlvbiB0ZXN0cy4nKTsK
KworICAgICAgICByb290LmFkZENoaWxkKGJpbmRBdHRyaWJ1dGVHcm91cCk7CisKKyAgICAgICAg
Zm9yICh0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHR5cGVzLmxlbmd0aDsgdHlwZU5keCsrKSB7Cisg
ICAgICAgICAgICB0eXBlID0gdHlwZXNbdHlwZU5keF07CisgICAgICAgICAgICBiaW5kQXR0cmli
dXRlR3JvdXAuYWRkQ2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZEF0dHJp
YnV0ZVRlc3QodHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQmluZCBtYXggbnVtYmVy
IG9mIGF0dHJpYnV0ZXMKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8KKyAgICAgICAgdmFyIGJpbmRNYXhBdHRyaWJ1dGVHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rl
c3QoJ2JpbmRfbWF4X2F0dHJpYnV0ZXMnLCAnVXNlIGJpbmQgd2l0aCBtYXhpbXVtIG51bWJlciBv
ZiBhdHRyaWJ1dGVzLicpOworCisgICAgICAgIHJvb3QuYWRkQ2hpbGQoYmluZE1heEF0dHJpYnV0
ZUdyb3VwKTsKKworICAgICAgICBmb3IgKHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgdHlwZXMubGVu
Z3RoOyB0eXBlTmR4KyspIHsKKyAgICAgICAgICAgIHR5cGUgPSB0eXBlc1t0eXBlTmR4XTsKKyAg
ICAgICAgICAgIGJpbmRNYXhBdHRyaWJ1dGVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5CaW5kTWF4QXR0cmlidXRlc1Rlc3QodHlwZSkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gVGVzdCBmaWxsaW5nIGhvbGVzIGluIGF0dHJpYnV0ZSBsb2NhdGlvbgorICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgaG9s
ZUdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYmluZF9ob2xlJywgJ0JpbmQgYWxsLCBidXQg
b25lIGF0dHJpYnV0ZSBhbmQgbGVhdmUgaG9sZSBpbiBsb2NhdGlvbiBzcGFjZSBmb3IgaXQuJyk7
CisKKyAgICAgICAgcm9vdC5hZGRDaGlsZChob2xlR3JvdXApOworCisgICAgICAgIGZvciAodHlw
ZU5keCA9IDA7IHR5cGVOZHggPCB0eXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworICAgICAgICAg
ICAgdHlwZSA9IHR5cGVzW3R5cGVOZHhdOworCisgICAgICAgICAgICAvLyBCaW5kIGZpcnN0IGxv
Y2F0aW9uLCBsZWF2ZSBob2xlIHNpemUgb2YgdHlwZSBhbmQgZmlsbCByZXN0IG9mIGxvY2F0aW9u
cworICAgICAgICAgICAgaG9sZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkJpbmRIb2xlQXR0cmlidXRlVGVzdCh0eXBlKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBUZXN0IGJpbmRpbmcgYXQgZGlmZmVyZW50IHRpbWVzCisgICAgICAgIC8qKiBAdHlwZSB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBiaW5kVGltZUdyb3VwID0gdGN1
VGVzdENhc2UubmV3VGVzdCgnYmluZF90aW1lJywgJ0JpbmQgdGltZSB0ZXN0cy4gVGVzdCBiaW5k
aW5nIGF0IGRpZmZlcmVudCBzdGFnZXMuJyk7CisKKyAgICAgICAgcm9vdC5hZGRDaGlsZChiaW5k
VGltZUdyb3VwKTsKKworICAgICAgICBiaW5kVGltZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLlByZUF0dGFjaEJpbmRBdHRyaWJ1dGVUZXN0KCkpOworICAgICAg
ICBiaW5kVGltZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLlBy
ZUxpbmtCaW5kQXR0cmlidXRlVGVzdCgpKTsKKyAgICAgICAgYmluZFRpbWVHcm91cC5hZGRDaGls
ZChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Qb3N0TGlua0JpbmRBdHRyaWJ1dGVUZXN0
KCkpOworICAgICAgICBiaW5kVGltZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkJpbmRSZWxpbmtBdHRyaWJ1dGVUZXN0KCkpOworICAgICAgICBiaW5kVGltZUdy
b3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmRSZWF0dGFjaEF0
dHJpYnV0ZVRlc3QoKSk7CisKKyAgICAgICAgLy8gQmFzaWMgbGF5b3V0IGxvY2F0aW9uIGF0dHJp
YnV0ZSB0ZXN0cworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLwor
ICAgICAgICB2YXIgbGF5b3V0QXR0cmlidXRlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCds
YXlvdXQnLCAnQmFzaWMgbGF5b3V0IGxvY2F0aW9uIHRlc3RzLicpOworCisgICAgICAgIHJvb3Qu
YWRkQ2hpbGQobGF5b3V0QXR0cmlidXRlR3JvdXApOworCisgICAgICAgIGZvciAodHlwZU5keCA9
IDA7IHR5cGVOZHggPCB0eXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdHlw
ZSA9IHR5cGVzW3R5cGVOZHhdOworICAgICAgICAgICAgbGF5b3V0QXR0cmlidXRlR3JvdXAuYWRk
Q2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25BdHRyaWJ1dGVUZXN0
KHR5cGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgbWF4IGF0dHJpYnV0ZXMgd2l0
aCBsYXlvdXQgbG9jYXRpb25zCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRl
c3R9ICovCisgICAgICAgIHZhciBsYXlvdXRNYXhBdHRyaWJ1dGVHcm91cCA9IHRjdVRlc3RDYXNl
Lm5ld1Rlc3QoJ2xheW91dF9tYXhfYXR0cmlidXRlcycsICdNYXhpbXVtIGF0dHJpYnV0ZXMgdXNl
ZCB3aXRoIGxheW91dCBsb2NhdGlvbiBxdWFsaWZpZXJzLicpOworCisgICAgICAgIHJvb3QuYWRk
Q2hpbGQobGF5b3V0TWF4QXR0cmlidXRlR3JvdXApOworCisgICAgICAgIGZvciAodHlwZU5keCA9
IDA7IHR5cGVOZHggPCB0eXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdHlw
ZSA9IHR5cGVzW3R5cGVOZHhdOworICAgICAgICAgICAgbGF5b3V0TWF4QXR0cmlidXRlR3JvdXAu
YWRkQ2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25NYXhBdHRyaWJ1
dGVzVGVzdCh0eXBlKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IGZpbGxpbmcgaG9s
ZXMgaW4gYXR0cmlidXRlIGxvY2F0aW9uCisgICAgICAgIGhvbGVHcm91cCA9IHRjdVRlc3RDYXNl
Lm5ld1Rlc3QoJ2xheW91dF9ob2xlJywgJ0RlZmluZSBsYXlvdXQgbG9jYXRpb24gZm9yIGFsbCwg
YnV0IG9uZSBhdHRyaWJ1dGUgY29uc3VtaW5nIG1heCBhdHRyaWJ1dGUgbG9jYXRpb25zLicpOwor
CisgICAgICAgIHJvb3QuYWRkQ2hpbGQoaG9sZUdyb3VwKTsKKworICAgICAgICBmb3IgKHR5cGVO
ZHggPSAwOyB0eXBlTmR4IDwgdHlwZXMubGVuZ3RoOyB0eXBlTmR4KyspIHsKKyAgICAgICAgICAg
IHR5cGUgPSB0eXBlc1t0eXBlTmR4XTsKKworICAgICAgICAgICAgLy8gTG9jYXRpb24gZmlyc3Qg
bG9jYXRpb24sIGxlYXZlIGhvbGUgc2l6ZSBvZiB0eXBlIGFuZCBmaWxsIHJlc3Qgb2YgbG9jYXRp
b25zCisgICAgICAgICAgICBob2xlR3JvdXAuYWRkQ2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuTG9jYXRpb25Ib2xlQXR0cmlidXRlVGVzdCh0eXBlKSk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBCYXNpYyBtaXhlZCBtaXhlZCBhdHRyaWJ1dGUgdGVzdHMKKyAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIG1peGVkQXR0cmli
dXRlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdtaXhlZCcsICdCYXNpYyBtaXhlZCBsb2Nh
dGlvbiB0ZXN0cy4nKTsKKworICAgICAgICByb290LmFkZENoaWxkKG1peGVkQXR0cmlidXRlR3Jv
dXApOworCisgICAgICAgIGZvciAodHlwZU5keCA9IDA7IHR5cGVOZHggPCB0eXBlcy5sZW5ndGg7
IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdHlwZSA9IHR5cGVzW3R5cGVOZHhdOworICAgICAg
ICAgICAgbWl4ZWRBdHRyaWJ1dGVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5NaXhlZEF0dHJpYnV0ZVRlc3QodHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIG1peGVkTWF4
QXR0cmlidXRlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdtaXhlZF9tYXhfYXR0cmlidXRl
cycsICdNYXhpbXVtIGF0dHJpYnV0ZXMgdXNlZCB3aXRoIG1peGVkIGJpbmRpbmcgYW5kIGxheW91
dCBxdWFsaWZpZXJzLicpOworCisgICAgICAgIHJvb3QuYWRkQ2hpbGQobWl4ZWRNYXhBdHRyaWJ1
dGVHcm91cCk7CisKKyAgICAgICAgZm9yICh0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHR5cGVzLmxl
bmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAgICAgICB0eXBlID0gdHlwZXNbdHlwZU5keF07Cisg
ICAgICAgICAgICBtaXhlZE1heEF0dHJpYnV0ZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLk1peGVkTWF4QXR0cmlidXRlc1Rlc3QodHlwZSkpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGVzdCBtaXhlZCBiaW5kaW5nIGF0IGRpZmZlcmVudCB0aW1lcworICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgbWl4
ZWRUaW1lR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdtaXhlZF90aW1lJywgJ0JpbmQgdGlt
ZSB0ZXN0cy4gVGVzdCBiaW5kaW5nIGF0IGRpZmZlcmVudCBzdGFnZXMuJyk7CisKKyAgICAgICAg
cm9vdC5hZGRDaGlsZChtaXhlZFRpbWVHcm91cCk7CisKKyAgICAgICAgbWl4ZWRUaW1lR3JvdXAu
YWRkQ2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUHJlQXR0YWNoTWl4ZWRBdHRy
aWJ1dGVUZXN0KCkpOworICAgICAgICBtaXhlZFRpbWVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5QcmVMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0KCkpOworICAgICAg
ICBtaXhlZFRpbWVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Q
b3N0TGlua01peGVkQXR0cmlidXRlVGVzdCgpKTsKKyAgICAgICAgbWl4ZWRUaW1lR3JvdXAuYWRk
Q2hpbGQobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRSZWxpbmtBdHRyaWJ1dGVU
ZXN0KCkpOworICAgICAgICBtaXhlZFRpbWVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5NaXhlZFJlYXR0YWNoQXR0cmlidXRlVGVzdCgpKTsKKworICAgICAgICBo
b2xlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdtaXhlZF9ob2xlJywgJ1VzZSBsYXlvdXQg
bG9jYXRpb24gcXVhbGlmaWVycyBhbmQgYmluZGluZy4gTGVhdmUgaG9sZSBpbiBsb2NhdGlvbiBz
cGFjZSBmb3Igb25seSBmcmVlIGF0dHJpYnV0ZS4nKTsKKworICAgICAgICByb290LmFkZENoaWxk
KGhvbGVHcm91cCk7CisKKyAgICAgICAgZm9yICh0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHR5cGVz
Lmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAgICAgICB0eXBlID0gdHlwZXNbdHlwZU5keF07
CisKKyAgICAgICAgICAgIGhvbGVHcm91cC5hZGRDaGlsZChuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5NaXhlZEhvbGVBdHRyaWJ1dGVUZXN0KHR5cGUpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRlc3QgaG9sZSBpbiBsb2NhdGlvbiBzcGFjZSB0aGF0IG1vdmVzIHdoZW4gcmVsaW5r
aW5nCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAg
IHZhciByZWxpbmtCaW5kSG9sZUdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYmluZF9yZWxp
bmtfaG9sZScsICdUZXN0IHJlbGlua2luZyB3aXRoIG1vdmluZyBob2xlIGluIGF0dHJpYnV0ZSBs
b2NhdGlvbiBzcGFjZS4nKTsKKworICAgICAgICByb290LmFkZENoaWxkKHJlbGlua0JpbmRIb2xl
R3JvdXApOworCisgICAgICAgIGZvciAodHlwZU5keCA9IDA7IHR5cGVOZHggPCB0eXBlcy5sZW5n
dGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdHlwZSA9IHR5cGVzW3R5cGVOZHhdOworCisg
ICAgICAgICAgICByZWxpbmtCaW5kSG9sZUdyb3VwLmFkZENoaWxkKG5ldyBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkJpbmRSZWxpbmtIb2xlQXR0cmlidXRlVGVzdCh0eXBlKSk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBUZXN0IGhvbGUgaW4gbG9jYXRpb24gc3BhY2UgdGhhdCBtb3ZlcyB3
aGVuIHJlbGlua2luZworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAq
LworICAgICAgICB2YXIgcmVsaW5rTWl4ZWRIb2xlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0
KCdtaXhlZF9yZWxpbmtfaG9sZScsICdUZXN0IHJlbGlua2luZyB3aXRoIG1vdmluZyBob2xlIGlu
IGF0dHJpYnV0ZSBsb2NhdGlvbiBzcGFjZS4nKTsKKworICAgICAgICByb290LmFkZENoaWxkKHJl
bGlua01peGVkSG9sZUdyb3VwKTsKKworICAgICAgICBmb3IgKHR5cGVOZHggPSAwOyB0eXBlTmR4
IDwgdHlwZXMubGVuZ3RoOyB0eXBlTmR4KyspIHsKKyAgICAgICAgICAgIHR5cGUgPSB0eXBlc1t0
eXBlTmR4XTsKKworICAgICAgICAgICAgcmVsaW5rTWl4ZWRIb2xlR3JvdXAuYWRkQ2hpbGQobmV3
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRSZWxpbmtIb2xlQXR0cmlidXRlVGVzdCh0
eXBlKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcm9vdDsKKyAgICB9OworCisgICAg
ZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCkgeworICAgICAg
ICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8vU2V0IHVwIHJvb3QgVGVzdAorICAgICAgICB2YXIg
c3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAgICAgdmFyIHRlc3QgPSBlczNmQXR0
cmliTG9jYXRpb25UZXN0cy5jcmVhdGVBdHRyaWJ1dGVMb2NhdGlvblRlc3RzKCk7CisgICAgICAg
IHZhciB0ZXN0TmFtZSA9IHRlc3QuZnVsbE5hbWUoKTsKKyAgICAgICAgdmFyIHRlc3REZXNjcmlw
dGlvbiA9IHRlc3QuZ2V0RGVzY3JpcHRpb24oKSA9PT0gdW5kZWZpbmVkID8gJycgOiB0ZXN0Lmdl
dERlc2NyaXB0aW9uKCk7CisKKyAgICAgICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAg
ICAgICAgc3RhdGUuc2V0Um9vdCh0ZXN0KTsKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVz
Y3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1l
KHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9uKTsKKworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgLy9DcmVhdGUgdGVzdCBjYXNlcworICAgICAgICAgICAg
dGVzdC5pbml0KCk7CisgICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0
Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJy
KSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRXhjZXB0aW9uOiAnICsgZXJy
KTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZkF0dHJpYkxv
Y2F0aW9uVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2Uu
cnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKK30pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQm9vbGVh
blN0YXRlUXVlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczZGVhMDk0NmRkNGE5YzU3MGFhNDg2Njk2YWIw
ZTA1YTQ1NTQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQm9vbGVhblN0YXRl
UXVlcnkuanMKQEAgLTAsMCArMSwzNzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0Vs
ZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQg
MjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0
cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkJvb2xlYW5TdGF0ZVF1
ZXJ5Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScpOworZ29vZy5yZXF1aXJl
KCdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24o
KSB7Cit2YXIgZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5ID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmQm9v
bGVhblN0YXRlUXVlcnk7Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRl
c3RDYXNlOwordmFyIGdsc1N0YXRlUXVlcnkgPSBtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5
OwordmFyIGVzM2ZBcGlDYXNlID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZTsKKwordmFy
IHNldFBhcmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxkLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gdGFy
Z2V0TmFtZQorICogQHBhcmFtIHtib29sZWFufSB2YWx1ZQorICovCitlczNmQm9vbGVhblN0YXRl
UXVlcnkuSXNFbmFibGVkU3RhdGVUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9u
LCB0YXJnZXROYW1lLCB2YWx1ZSkgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgIHRoaXMubV90YXJnZXROYW1lID0gdGFyZ2V0
TmFtZTsKKyAgICB0aGlzLm1faW5pdGlhbCA9IHZhbHVlOworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LklzRW5hYmxlZFN0YXRlVGVzdENhc2UsIGVzM2ZBcGlDYXNl
LkFwaUNhc2UpOworCitlczNmQm9vbGVhblN0YXRlUXVlcnkuSXNFbmFibGVkU3RhdGVUZXN0Q2Fz
ZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIGNoZWNrIGluaXRhbCB2YWx1
ZQorICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90YXJnZXRO
YW1lLCB0aGlzLm1faW5pdGlhbCk7CisKKyAgICAvLyBjaGVjayB0b2dnbGUKKworICAgIGdsLmVu
YWJsZSh0aGlzLm1fdGFyZ2V0TmFtZSk7CisKKyAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1
ZXJ5LnZlcmlmeSh0aGlzLm1fdGFyZ2V0TmFtZSwgdHJ1ZSk7CisKKyAgICBnbC5kaXNhYmxlKHRo
aXMubV90YXJnZXROYW1lKTsKKworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVy
aWZ5KHRoaXMubV90YXJnZXROYW1lLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZCb29sZWFuU3Rh
dGVRdWVyeS5EZXB0aFdyaXRlTWFza1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRp
b24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRp
b24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZCb29sZWFuU3RhdGVRdWVyeS5EZXB0
aFdyaXRlTWFza1Rlc3RDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkJvb2xlYW5T
dGF0ZVF1ZXJ5LkRlcHRoV3JpdGVNYXNrVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlv
bigpIHsKKyAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5ERVBUSF9X
UklURU1BU0ssIHRydWUpOworCisgICAgZ2wuZGVwdGhNYXNrKGZhbHNlKTsKKyAgICB0aGlzLm1f
cGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5ERVBUSF9XUklURU1BU0ssIGZhbHNlKTsK
KworICAgIGdsLmRlcHRoTWFzayh0cnVlKTsKKyAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1
ZXJ5LnZlcmlmeShnbC5ERVBUSF9XUklURU1BU0ssIHRydWUpOworfTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmQm9v
bGVhblN0YXRlUXVlcnkuU2FtcGxlQ292ZXJhZ2VJbnZlcnRUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2NyaXB0aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmQm9vbGVhblN0
YXRlUXVlcnkuU2FtcGxlQ292ZXJhZ2VJbnZlcnRUZXN0Q2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZSk7CisKK2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5TYW1wbGVDb3ZlcmFnZUludmVydFRlc3RDYXNl
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3Rh
dGVRdWVyeS52ZXJpZnkoZ2wuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCwgZmFsc2UpOworCisgICAg
Z2wuc2FtcGxlQ292ZXJhZ2UoMSwgdHJ1ZSk7CisgICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3RhdGVR
dWVyeS52ZXJpZnkoZ2wuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCwgdHJ1ZSk7CisKKyAgICBnbC5z
YW1wbGVDb3ZlcmFnZSgxLCBmYWxzZSk7CisgICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3RhdGVRdWVy
eS52ZXJpZnkoZ2wuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCwgZmFsc2UpOworfTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBh
cmFtIHtudW1iZXJ9IHRhcmdldE5hbWUKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUKKyAqLwor
ZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LkluaXRpYWxCb29sZWFuVGVzdENhc2UgPSBmdW5jdGlvbihu
YW1lLCBkZXNjcmlwdGlvbiwgdGFyZ2V0TmFtZSwgdmFsdWUpIHsKKyAgICBlczNmQXBpQ2FzZS5B
cGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICB0aGlzLm1fdGFy
Z2V0TmFtZSA9IHRhcmdldE5hbWU7CisgICAgdGhpcy5tX2luaXRpYWwgPSB2YWx1ZTsKK307CisK
K3NldFBhcmVudENsYXNzKGVzM2ZCb29sZWFuU3RhdGVRdWVyeS5Jbml0aWFsQm9vbGVhblRlc3RD
YXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LkluaXRp
YWxCb29sZWFuVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBj
aGVjayBpbml0YWwgdmFsdWUKKyAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eSh0aGlzLm1fdGFyZ2V0TmFtZSwgdGhpcy5tX2luaXRpYWwpOworfTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmQm9v
bGVhblN0YXRlUXVlcnkuQ29sb3JNYXNrVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LkNv
bG9yTWFza1Rlc3RDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkJvb2xlYW5TdGF0
ZVF1ZXJ5LkNvbG9yTWFza1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuQ09MT1JfV1JJVEVNQVNL
LCBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0pOworCisgICAgdmFyIHRlc3RNYXNrcyA9IFsKKyAg
ICAgICAgW3RydWUsIHRydWUsIHRydWUsIHRydWVdLAorICAgICAgICBbdHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgZmFsc2VdLAorICAgICAgICBbdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWVdLAorICAgICAgICBb
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgW3RydWUsIGZhbHNlLCB0cnVlLCB0
cnVlXSwKKyAgICAgICAgW3RydWUsIGZhbHNlLCB0cnVlLCBmYWxzZV0sCisgICAgICAgIFt0cnVl
LCBmYWxzZSwgZmFsc2UsIHRydWVdLAorICAgICAgICBbdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZV0sCisgICAgICAgIFtmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgIFtmYWxzZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICBbZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlXSwK
KyAgICAgICAgW2ZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICBbZmFsc2UsIGZh
bHNlLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgW2ZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdLAor
ICAgICAgICBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgIFtmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZV0KKyAgICBdOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dGVzdE1hc2tzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgdmFyIG1hc2sgPSB0ZXN0TWFza3Nb
bmR4XTsKKyAgICAgICAgZ2wuY29sb3JNYXNrKG1hc2tbMF0sIG1hc2tbMV0sIG1hc2tbMl0sIG1h
c2tbM10pOworICAgICAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5D
T0xPUl9XUklURU1BU0ssIG1hc2spOworICAgIH0KK307CisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZkJvb2xlYW5TdGF0
ZVF1ZXJ5LlRyYW5zZm9ybUZlZWRiYWNrVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworICAgIC8qKiBAdHlwZSB7V2ViR0xUcmFuc2Zvcm1GZWVkYmFja30gKi8gdGhp
cy5tX3RyYW5zZm9ybWZlZWRiYWNrID0gbnVsbDsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZC
b29sZWFuU3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja1Rlc3RDYXNlLCBlczNmQXBpQ2FzZS5B
cGlDYXNlKTsKKworZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LlRyYW5zZm9ybUZlZWRiYWNrVGVzdENh
c2UucHJvdG90eXBlLnRlc3RUcmFuc2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkgeworICAgIHRo
cm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4nKTsKK307CisKK2VzM2ZCb29sZWFuU3Rh
dGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIHRyYW5zZm9ybUZlZWRiYWNrVGVzdFZlcnRTb3VyY2UgPSAnI3ZlcnNp
b24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCk7XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nOworICAg
IHZhciB0cmFuc2Zvcm1GZWVkYmFja1Rlc3RGcmFnU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF5
b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7JyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm9pZCBtYWluICh2b2lk
KVxuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
e1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
IGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ31cbic7CisKKyAgICB0aGlzLm1fdHJhbnNmb3JtZmVlZGJh
Y2sgPSBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOworCisgICAgdmFyIHNoYWRlclZlcnQg
PSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNl
KHNoYWRlclZlcnQsIHRyYW5zZm9ybUZlZWRiYWNrVGVzdFZlcnRTb3VyY2UpOworICAgIGdsLmNv
bXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3RhdGVRdWVy
eS52ZXJpZnlTaGFkZXIoc2hhZGVyVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMsIHRydWUpOworCisg
ICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsK
KyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyRnJhZywgdHJhbnNmb3JtRmVlZGJhY2tUZXN0RnJh
Z1NvdXJjZSk7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICB0aGlzLm1f
cGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJGcmFnLCBnbC5DT01QSUxF
X1NUQVRVUywgdHJ1ZSk7CisKKyAgICB2YXIgc2hhZGVyUHJvZyA9IGdsLmNyZWF0ZVByb2dyYW0o
KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIoc2hhZGVyUHJvZywgc2hhZGVyVmVydCk7CisgICAgZ2wu
YXR0YWNoU2hhZGVyKHNoYWRlclByb2csIHNoYWRlckZyYWcpOworICAgIHZhciB0cmFuc2Zvcm1f
ZmVlZGJhY2tfb3V0cHV0cyA9IFsnZ2xfUG9zaXRpb24nXTsKKyAgICBnbC50cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKHNoYWRlclByb2csIHRyYW5zZm9ybV9mZWVkYmFja19vdXRwdXRzLCBnbC5J
TlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICBnbC5saW5rUHJvZ3JhbShzaGFkZXJQcm9nKTsKKyAg
ICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVByb2dyYW0oc2hhZGVyUHJvZywg
Z2wuTElOS19TVEFUVVMsIHRydWUpOworCisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGds
LlRSQU5TRk9STV9GRUVEQkFDSywgdGhpcy5tX3RyYW5zZm9ybWZlZWRiYWNrKTsKKworICAgIHZh
ciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxNiwgZ2wuRFlOQU1JQ19SRUFEKTsKKyAgICBnbC5iaW5k
QnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWZmZXIpOworCisg
ICAgZ2wudXNlUHJvZ3JhbShzaGFkZXJQcm9nKTsKKworICAgIHRoaXMudGVzdFRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisKKyAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgIGdsLmJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwpOworICAgIGdsLmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKHRoaXMubV90cmFuc2Zvcm1mZWVkYmFjayk7CisgICAgZ2wuZGVsZXRl
QnVmZmVyKGJ1ZmZlcik7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGds
LmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHNoYWRlclBy
b2cpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQm9vbGVh
blN0YXRlUXVlcnkuVHJhbnNmb3JtRmVlZGJhY2tUZXN0Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgKi8KK2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja0Jhc2lj
VGVzdENhc2UgPSBmdW5jdGlvbihuYW1lKSB7CisgICAgZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LlRy
YW5zZm9ybUZlZWRiYWNrVGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCAnVGVzdCBUUkFOU0ZPUk1f
RkVFREJBQ0tfQUNUSVZFIGFuZCBUUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEJyk7Cit9OworCitz
ZXRQYXJlbnRDbGFzcyhlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNmb3JtRmVlZGJhY2tCYXNp
Y1Rlc3RDYXNlLCBlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNmb3JtRmVlZGJhY2tUZXN0Q2Fz
ZSk7CisKK2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja0Jhc2ljVGVzdENh
c2UucHJvdG90eXBlLnRlc3RUcmFuc2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkgeworICAgIGds
LmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soZ2wuUE9JTlRTKTsKKworICAgIHRoaXMubV9wYXNzICY9
IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUsIHRydWUp
OworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9G
RUVEQkFDS19QQVVTRUQsIGZhbHNlKTsKKworICAgIGdsLnBhdXNlVHJhbnNmb3JtRmVlZGJhY2so
KTsKKworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19BQ1RJVkUsIHRydWUpOworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVl
cnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQsIHRydWUpOworCisgICAgZ2wu
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRl
UXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUsIHRydWUpOworICAgIHRo
aXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19Q
QVVTRUQsIGZhbHNlKTsKKworICAgIGdsLmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICB0
aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QUNUSVZFLCBmYWxzZSk7CisgICAgdGhpcy5tX3Bhc3MgJj0gZ2xzU3RhdGVRdWVyeS52ZXJpZnko
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKi8KK2VzM2ZCb29sZWFu
U3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja0ltcGxpY2l0UmVzdW1lVGVzdENhc2UgPSBmdW5j
dGlvbihuYW1lKSB7CisgICAgZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LlRyYW5zZm9ybUZlZWRiYWNr
VGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCAnRW5kVHJhbnNmb3JtRmVlZGJhY2sgcGVyZm9ybXMg
YW4gaW1wbGljaXQgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2suJyk7Cit9OworCitzZXRQYXJlbnRD
bGFzcyhlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNmb3JtRmVlZGJhY2tJbXBsaWNpdFJlc3Vt
ZVRlc3RDYXNlLCBlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNmb3JtRmVlZGJhY2tUZXN0Q2Fz
ZSk7CisKK2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFja0ltcGxpY2l0UmVz
dW1lVGVzdENhc2UucHJvdG90eXBlLnRlc3RUcmFuc2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkg
eworICAgIGdsLmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soZ2wuUE9JTlRTKTsKKworICAgIHRoaXMu
bV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJ
VkUsIHRydWUpOworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRS
QU5TRk9STV9GRUVEQkFDS19QQVVTRUQsIGZhbHNlKTsKKworICAgIGdsLnBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKTsKKworICAgIHRoaXMubV9wYXNzICY9IGdsc1N0YXRlUXVlcnkudmVyaWZ5KGds
LlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUsIHRydWUpOworICAgIHRoaXMubV9wYXNzICY9IGds
c1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQsIHRydWUpOwor
CisgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIHRoaXMubV9wYXNzICY9IGds
c1N0YXRlUXVlcnkudmVyaWZ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUsIGZhbHNlKTsK
KyAgICB0aGlzLm1fcGFzcyAmPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfUEFVU0VELCBmYWxzZSk7Cit9OworCisvKioKKyogQGNvbnN0cnVjdG9yCisqIEBleHRl
bmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyovCitlczNmQm9vbGVhblN0YXRlUXVlcnkuQm9v
bGVhblN0YXRlUXVlcnkgPSBmdW5jdGlvbigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5j
YWxsKHRoaXMsICdib29sZWFuJywgJ0Jvb2xlYW4gU3RhdGUgUXVlcnkgdGVzdHMnKTsKK307CisK
K2VzM2ZCb29sZWFuU3RhdGVRdWVyeS5Cb29sZWFuU3RhdGVRdWVyeS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNmQm9vbGVhblN0
YXRlUXVlcnkuQm9vbGVhblN0YXRlUXVlcnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkJv
b2xlYW5TdGF0ZVF1ZXJ5LkJvb2xlYW5TdGF0ZVF1ZXJ5OworCitlczNmQm9vbGVhblN0YXRlUXVl
cnkuQm9vbGVhblN0YXRlUXVlcnkucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgdGVzdFJvb3QgPSB0aGlzOworICAgIHZhciBpc0VuYWJsZWRzID0gWworICAgICAgICBbJ3Jh
c3Rlcml6ZXJfZGlzY2FyZCcsICdSQVNURVJJWkVSX0RJU0NBUkQnLCBnbC5SQVNURVJJWkVSX0RJ
U0NBUkQsIGZhbHNlXSwKKyAgICAgICAgWydjdWxsX2ZhY2UnLCAnQ1VMTF9GQUNFJywgZ2wuQ1VM
TF9GQUNFLCBmYWxzZV0sCisgICAgICAgIFsncG9seWdvbl9vZmZzZXRfZmlsbCcsICdQT0xZR09O
X09GRlNFVF9GSUxMJywgZ2wuUE9MWUdPTl9PRkZTRVRfRklMTCwgZmFsc2VdLAorICAgICAgICBb
J3NhbXBsZV9hbHBoYV90b19jb3ZlcmFnZScsICdTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UnLCBn
bC5TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UsIGZhbHNlXSwKKyAgICAgICAgWydzYW1wbGVfY292
ZXJhZ2UnLCAnU0FNUExFX0NPVkVSQUdFJywgZ2wuU0FNUExFX0NPVkVSQUdFLCBmYWxzZV0sCisg
ICAgICAgIFsnc2Npc3Nvcl90ZXN0JywgJ1NDSVNTT1JfVEVTVCcsIGdsLlNDSVNTT1JfVEVTVCwg
ZmFsc2VdLAorICAgICAgICBbJ3N0ZW5jaWxfdGVzdCcsICdTVEVOQ0lMX1RFU1QnLCBnbC5TVEVO
Q0lMX1RFU1QsIGZhbHNlXSwKKyAgICAgICAgWydkZXB0aF90ZXN0JywgJ0RFUFRIX1RFU1QnLCBn
bC5ERVBUSF9URVNULCBmYWxzZV0sCisgICAgICAgIFsnYmxlbmQnLCAnQkxFTkQnLCBnbC5CTEVO
RCwgZmFsc2VdLAorICAgICAgICBbJ2RpdGhlcicsICdESVRIRVInLCBnbC5ESVRIRVIsIHRydWVd
CisgICAgXTsKKyAgICBpc0VuYWJsZWRzLmZvckVhY2goZnVuY3Rpb24oZWxlbSkgeworICAgICAg
ICB2YXIgbmFtZSA9IGVsZW1bMF07CisgICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGVsZW1bMV07
CisgICAgICAgIHZhciB0YXJnZXROYW1lID0gZWxlbVsyXTsKKyAgICAgICAgdmFyIHZhbHVlID0g
ZWxlbVszXTsKKyAgICAgICAgdGVzdFJvb3QuYWRkQ2hpbGQobmV3IGVzM2ZCb29sZWFuU3RhdGVR
dWVyeS5Jc0VuYWJsZWRTdGF0ZVRlc3RDYXNlKG5hbWUsIGRlc2NyaXB0aW9uLCB0YXJnZXROYW1l
LCB2YWx1ZSkpOworICAgIH0pOworCisgICAgdGVzdFJvb3QuYWRkQ2hpbGQobmV3IGVzM2ZCb29s
ZWFuU3RhdGVRdWVyeS5Db2xvck1hc2tUZXN0Q2FzZSgnY29sb3Jfd3JpdGVtYXNrJywgJ0NPTE9S
X1dSSVRFTUFTSycpKTsKKyAgICB0ZXN0Um9vdC5hZGRDaGlsZChuZXcgZXMzZkJvb2xlYW5TdGF0
ZVF1ZXJ5LkRlcHRoV3JpdGVNYXNrVGVzdENhc2UoJ2RlcHRoX3dyaXRlbWFzaycsICdERVBUSF9X
UklURU1BU0snKSk7CisgICAgdGVzdFJvb3QuYWRkQ2hpbGQobmV3IGVzM2ZCb29sZWFuU3RhdGVR
dWVyeS5TYW1wbGVDb3ZlcmFnZUludmVydFRlc3RDYXNlKCdzYW1wbGVfY292ZXJhZ2VfaW52ZXJ0
JywgJ1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQnKSk7CisgICAgdGVzdFJvb3QuYWRkQ2hpbGQobmV3
IGVzM2ZCb29sZWFuU3RhdGVRdWVyeS5Jbml0aWFsQm9vbGVhblRlc3RDYXNlKCd0cmFuc2Zvcm1f
ZmVlZGJhY2tfYWN0aXZlX2luaXRpYWwnLCAnaW5pdGlhbCBUUkFOU0ZPUk1fRkVFREJBQ0tfQUNU
SVZFJywgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRSwgZmFsc2UpKTsKKyAgICB0ZXN0Um9v
dC5hZGRDaGlsZChuZXcgZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LkluaXRpYWxCb29sZWFuVGVzdENh
c2UoJ3RyYW5zZm9ybV9mZWVkYmFja19wYXVzZWRfaW5pdGlhbCcsICdpbml0aWFsIFRSQU5TRk9S
TV9GRUVEQkFDS19QQVVTRUQnLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VELCBmYWxzZSkp
OworICAgIHRlc3RSb290LmFkZENoaWxkKG5ldyBlczNmQm9vbGVhblN0YXRlUXVlcnkuVHJhbnNm
b3JtRmVlZGJhY2tCYXNpY1Rlc3RDYXNlKCd0cmFuc2Zvcm1fZmVlZGJhY2snKSk7CisgICAgdGVz
dFJvb3QuYWRkQ2hpbGQobmV3IGVzM2ZCb29sZWFuU3RhdGVRdWVyeS5UcmFuc2Zvcm1GZWVkYmFj
a0ltcGxpY2l0UmVzdW1lVGVzdENhc2UoJ3RyYW5zZm9ybV9mZWVkYmFja19pbXBsaWNpdF9yZXN1
bWUnKSk7Cit9OworCisvKioKKyogUnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdD
b250ZXh0fSBjb250ZXh0CisqLworZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LnJ1biA9IGZ1bmN0aW9u
KGNvbnRleHQpIHsKKyAgICBnbCA9IGNvbnRleHQ7CisgICAgLy9TZXQgdXAgVGVzdCBSb290IHBh
cmFtZXRlcnMKKyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgc3RhdGUu
c2V0Um9vdChuZXcgZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5LkJvb2xlYW5TdGF0ZVF1ZXJ5KCkpOwor
CisgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4K
KyAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAg
IGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgIHRy
eSB7CisgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENhc2UucnVuVGVz
dENhc2VzKCk7CisgICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9w
dGlvbnMoJ0ZhaWxlZCB0byBlczNmQm9vbGVhblN0YXRlUXVlcnkucnVuIHRlc3RzJywgZmFsc2Up
OworICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgfQorfTsKKwor
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkJ1ZmZlckNvcHlUZXN0cy5qcyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmQnVmZmVyQ29weVRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMTg2MjMxYTZmYzY3MTI1
OGQ0MjJhODk4OGQ1NTk5ZmMwOTgxYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMz
ZkJ1ZmZlckNvcHlUZXN0cy5qcwpAQCAtMCwwICsxLDM1NSBAQAorLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAq
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq
IENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVm
ZmVyQ29weVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUo
J21vZHVsZXMuc2hhcmVkLmdsc0J1ZmZlclRlc3RVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rp
b24oKSB7CisKKyAgICB2YXIgZXMzZkJ1ZmZlckNvcHlUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMu
ZXMzZkJ1ZmZlckNvcHlUZXN0czsKKyAgICB2YXIgZ2xzQnVmZmVyVGVzdFV0aWwgPSBtb2R1bGVz
LnNoYXJlZC5nbHNCdWZmZXJUZXN0VXRpbDsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdv
cmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZU1hdGg7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVTdHJpbmc7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVSYW5kb207CisKKyAgICAvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZh
ciBnbDsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtn
bHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3Jj
VGFyZ2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY1NpemUKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gc3JjSGludAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkc3RUYXJnZXQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZHN0U2l6ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkc3RIaW50Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGNvcHlTcmNPZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gY29weURzdE9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb3B5U2l6ZQorICAgICAq
IEBwYXJhbSB7Z2xzQnVmZmVyVGVzdFV0aWwuVmVyaWZ5VHlwZX0gdmVyaWZ5VHlwZQorICAgICAq
LworICAgIGVzM2ZCdWZmZXJDb3B5VGVzdHMuQmFzaWNCdWZmZXJDb3B5Q2FzZSA9IGZ1bmN0aW9u
KG5hbWUsIGRlc2MsIHNyY1RhcmdldCwgc3JjU2l6ZSwgc3JjSGludCwgZHN0VGFyZ2V0LCBkc3RT
aXplLCBkc3RIaW50LCBjb3B5U3JjT2Zmc2V0LCBjb3B5RHN0T2Zmc2V0LCBjb3B5U2l6ZSwgdmVy
aWZ5VHlwZSkgeworICAgICAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzYyk7CisKKyAgICAgICAgdGhpcy5tX3NyY1RhcmdldCA9IHNyY1RhcmdldDsK
KyAgICAgICAgdGhpcy5tX3NyY1NpemUgPSBzcmNTaXplOworICAgICAgICB0aGlzLm1fc3JjSGlu
dCA9IHNyY0hpbnQ7CisgICAgICAgIHRoaXMubV9kc3RUYXJnZXQgPSBkc3RUYXJnZXQ7CisgICAg
ICAgIHRoaXMubV9kc3RTaXplID0gZHN0U2l6ZTsKKyAgICAgICAgdGhpcy5tX2RzdEhpbnQgPSBk
c3RIaW50OworICAgICAgICB0aGlzLm1fY29weVNyY09mZnNldCA9IGNvcHlTcmNPZmZzZXQ7Cisg
ICAgICAgIHRoaXMubV9jb3B5RHN0T2Zmc2V0ID0gY29weURzdE9mZnNldDsKKyAgICAgICAgdGhp
cy5tX2NvcHlTaXplID0gY29weVNpemU7CisgICAgICAgIHRoaXMubV92ZXJpZnlUeXBlID0gdmVy
aWZ5VHlwZTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGRlTWF0aC5kZUluQm91bmRzMzIo
dGhpcy5tX2NvcHlTcmNPZmZzZXQsIDAsIHRoaXMubV9zcmNTaXplKSAmJiBkZU1hdGguZGVJblJh
bmdlMzIodGhpcy5tX2NvcHlTcmNPZmZzZXQgKyB0aGlzLm1fY29weVNpemUsIHRoaXMubV9jb3B5
U3JjT2Zmc2V0LCB0aGlzLm1fc3JjU2l6ZSksICdDb3B5IHBhcmFtZXRlcnMgYXJlIG91dCBvZiBi
dWZmZXJcJ3MgcmFuZ2UnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
ZGVNYXRoLmRlSW5Cb3VuZHMzMih0aGlzLm1fY29weURzdE9mZnNldCwgMCwgdGhpcy5tX2RzdFNp
emUpICYmIGRlTWF0aC5kZUluUmFuZ2UzMih0aGlzLm1fY29weURzdE9mZnNldCArIHRoaXMubV9j
b3B5U2l6ZSwgdGhpcy5tX2NvcHlEc3RPZmZzZXQsIHRoaXMubV9kc3RTaXplKSwgJ0NvcHkgcGFy
YW1ldGVycyBhcmUgb3V0IG9mIGJ1ZmZlclwncyByYW5nZScsIGZhbHNlLCB0cnVlKTsKKyAgICB9
OworCisgICAgZXMzZkJ1ZmZlckNvcHlUZXN0cy5CYXNpY0J1ZmZlckNvcHlDYXNlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyQ2FzZS5wcm90b3R5cGUp
OworICAgIGVzM2ZCdWZmZXJDb3B5VGVzdHMuQmFzaWNCdWZmZXJDb3B5Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmQnVmZmVyQ29weVRlc3RzLkJhc2ljQnVmZmVyQ29weUNhc2U7CisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAg
ICAqLworICAgIGVzM2ZCdWZmZXJDb3B5VGVzdHMuQmFzaWNCdWZmZXJDb3B5Q2FzZS5wcm90b3R5
cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge2dsc0J1ZmZlclRl
c3RVdGlsLkJ1ZmZlclZlcmlmaWVyfSAqLyB2YXIgdmVyaWZpZXIgPSBuZXcgZ2xzQnVmZmVyVGVz
dFV0aWwuQnVmZmVyVmVyaWZpZXIodGhpcy5tX3ZlcmlmeVR5cGUpOworICAgICAgICB2YXIgc3Jj
UmVmID0gbmV3IGdsc0J1ZmZlclRlc3RVdGlsLlJlZmVyZW5jZUJ1ZmZlcigpOworICAgICAgICB2
YXIgZHN0UmVmID0gbmV3IGdsc0J1ZmZlclRlc3RVdGlsLlJlZmVyZW5jZUJ1ZmZlcigpOworICAg
ICAgICB2YXIgc3JjQnVmID0gMDsKKyAgICAgICAgdmFyIGRzdEJ1ZiA9IDA7CisgICAgICAgIHZh
ciBzcmNTZWVkID0gZGVNYXRoLmJpbmFyeU9wKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1
bGxOYW1lKCkpLCAweGFiY2QsIGRlTWF0aC5CaW5hcnlPcC5YT1IpOworICAgICAgICB2YXIgZHN0
U2VlZCA9IGRlTWF0aC5iaW5hcnlPcChkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5mdWxsTmFt
ZSgpKSwgMHhlZjAxLCBkZU1hdGguQmluYXJ5T3AuWE9SKTsKKyAgICAgICAgdmFyIGlzT2sgPSB0
cnVlOworCisgICAgICAgIHNyY1JlZi5zZXRTaXplKHRoaXMubV9zcmNTaXplKTsKKyAgICAgICAg
Z2xzQnVmZmVyVGVzdFV0aWwuZmlsbFdpdGhSYW5kb21CeXRlcyhzcmNSZWYuZ2V0UHRyKCksIHRo
aXMubV9zcmNTaXplLCBzcmNTZWVkKTsKKworICAgICAgICBkc3RSZWYuc2V0U2l6ZSh0aGlzLm1f
ZHN0U2l6ZSk7CisgICAgICAgIGdsc0J1ZmZlclRlc3RVdGlsLmZpbGxXaXRoUmFuZG9tQnl0ZXMo
ZHN0UmVmLmdldFB0cigpLCB0aGlzLm1fZHN0U2l6ZSwgZHN0U2VlZCk7CisKKyAgICAgICAgLy8g
Q3JlYXRlIHNvdXJjZSBidWZmZXIgYW5kIGZpbGwgd2l0aCBkYXRhLgorICAgICAgICBzcmNCdWYg
PSB0aGlzLmdlbkJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKHRoaXMubV9zcmNUYXJn
ZXQsIHNyY0J1Zik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEodGhpcy5tX3NyY1RhcmdldCwgc3Jj
UmVmLmdldFB0cigpLCB0aGlzLm1fc3JjSGludCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGRlc3Rp
bmF0aW9uIGJ1ZmZlciBhbmQgZmlsbCB3aXRoIGRhdGEuCisgICAgICAgIGRzdEJ1ZiA9IHRoaXMu
Z2VuQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIodGhpcy5tX2RzdFRhcmdldCwgZHN0
QnVmKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YSh0aGlzLm1fZHN0VGFyZ2V0LCBkc3RSZWYuZ2V0
UHRyKCksIHRoaXMubV9kc3RIaW50KTsKKworICAgICAgICAvLyBWZXJpZnkgYm90aCBidWZmZXJz
IGJlZm9yZSBleGVjdXRpbmcgY29weS4KKyAgICAgICAgaXNPayA9IHZlcmlmaWVyLnZlcmlmeShz
cmNCdWYsIHNyY1JlZi5nZXRQdHIoKSwgMCwgdGhpcy5tX3NyY1NpemUsIHRoaXMubV9zcmNUYXJn
ZXQpICYmIGlzT2s7CisgICAgICAgIGlzT2sgPSB2ZXJpZmllci52ZXJpZnkoZHN0QnVmLCBkc3RS
ZWYuZ2V0UHRyKCksIDAsIHRoaXMubV9kc3RTaXplLCB0aGlzLm1fZHN0VGFyZ2V0KSAmJiBpc09r
OworCisgICAgICAgIC8vIEV4ZWN1dGUgY29weS4KKyAgICAgICAgZHN0UmVmLmdldFB0cigpLnNl
dChzcmNSZWYuZ2V0UHRyKCkuc3ViYXJyYXkodGhpcy5tX2NvcHlTcmNPZmZzZXQsIHRoaXMubV9j
b3B5U3JjT2Zmc2V0ICsgdGhpcy5tX2NvcHlTaXplKSwgdGhpcy5tX2NvcHlEc3RPZmZzZXQpOwor
CisgICAgICAgIGdsLmJpbmRCdWZmZXIodGhpcy5tX3NyY1RhcmdldCwgc3JjQnVmKTsKKyAgICAg
ICAgZ2wuYmluZEJ1ZmZlcih0aGlzLm1fZHN0VGFyZ2V0LCBkc3RCdWYpOworICAgICAgICBnbC5j
b3B5QnVmZmVyU3ViRGF0YSh0aGlzLm1fc3JjVGFyZ2V0LCB0aGlzLm1fZHN0VGFyZ2V0LCB0aGlz
Lm1fY29weVNyY09mZnNldCwgdGhpcy5tX2NvcHlEc3RPZmZzZXQsIHRoaXMubV9jb3B5U2l6ZSk7
CisKKyAgICAgICAgLy8gVmVyaWZ5IGJvdGggYnVmZmVycyBhZnRlciBjb3B5LgorICAgICAgICBp
c09rID0gdmVyaWZpZXIudmVyaWZ5KHNyY0J1Ziwgc3JjUmVmLmdldFB0cigpLCAwLCB0aGlzLm1f
c3JjU2l6ZSwgdGhpcy5tX3NyY1RhcmdldCkgJiYgaXNPazsKKyAgICAgICAgaXNPayA9IHZlcmlm
aWVyLnZlcmlmeShkc3RCdWYsIGRzdFJlZi5nZXRQdHIoKSwgMCwgdGhpcy5tX2RzdFNpemUsIHRo
aXMubV9kc3RUYXJnZXQpICYmIGlzT2s7CisKKyAgICAgICAgaWYgKGlzT2spCisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCcnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgn
QnVmZmVyIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsKKworICAgICAgICByZXR1cm4gdGN1VGVzdENh
c2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvLyBDYXNlIEI6IHNhbWUgYnVm
ZmVyLCB0YWtlIHJhbmdlIGFzIHBhcmFtZXRlcgorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlckNhc2V9CisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNUYXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZHN0
VGFyZ2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhpbnQKKyAgICAgKiBAcGFyYW0ge2dsc0J1
ZmZlclRlc3RVdGlsLlZlcmlmeVR5cGV9IHZlcmlmeVR5cGUKKyAgICAgKi8KKyAgICBlczNmQnVm
ZmVyQ29weVRlc3RzLlNpbmdsZUJ1ZmZlckNvcHlDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywg
c3JjVGFyZ2V0LCBkc3RUYXJnZXQsIGhpbnQsIHZlcmlmeVR5cGUpIHsKKyAgICAgICAgZ2xzQnVm
ZmVyVGVzdFV0aWwuQnVmZmVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICB0
aGlzLm1fc3JjVGFyZ2V0ID0gc3JjVGFyZ2V0OworICAgICAgICB0aGlzLm1fZHN0VGFyZ2V0ID0g
ZHN0VGFyZ2V0OworICAgICAgICB0aGlzLm1faGludCA9IGhpbnQ7CisgICAgICAgIHRoaXMubV92
ZXJpZnlUeXBlID0gdmVyaWZ5VHlwZTsKKyAgICB9OworCisgICAgZXMzZkJ1ZmZlckNvcHlUZXN0
cy5TaW5nbGVCdWZmZXJDb3B5Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1ZmZl
clRlc3RVdGlsLkJ1ZmZlckNhc2UucHJvdG90eXBlKTsKKyAgICBlczNmQnVmZmVyQ29weVRlc3Rz
LlNpbmdsZUJ1ZmZlckNvcHlDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZCdWZmZXJD
b3B5VGVzdHMuU2luZ2xlQnVmZmVyQ29weUNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAgICBlczNmQnVmZmVyQ29w
eVRlc3RzLlNpbmdsZUJ1ZmZlckNvcHlDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHZhciBzaXplID0gMTAwMDsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNCdWZm
ZXJUZXN0VXRpbC5CdWZmZXJWZXJpZmllcn0gKi8gdmFyIHZlcmlmaWVyID0gbmV3IGdsc0J1ZmZl
clRlc3RVdGlsLkJ1ZmZlclZlcmlmaWVyKHRoaXMubV92ZXJpZnlUeXBlKTsKKyAgICAgICAgdmFy
IHJlZiA9IG5ldyBnbHNCdWZmZXJUZXN0VXRpbC5SZWZlcmVuY2VCdWZmZXIoKTsKKyAgICAgICAg
dmFyIGJhc2VTZWVkID0gZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMuZnVsbE5hbWUoKSk7Cisg
ICAgICAgIHZhciBpc09rID0gdHJ1ZTsKKworICAgICAgICByZWYuc2V0U2l6ZShzaXplKTsKKwor
ICAgICAgICAvLyBDcmVhdGUgYnVmZmVyLgorICAgICAgICB2YXIgYnVmID0gdGhpcy5nZW5CdWZm
ZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcih0aGlzLm1fc3JjVGFyZ2V0LCBidWYpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8e3NyY09mZnNldDogbnVtYmVyLCBkc3RPZmZzZXQ6IG51
bWJlciwgY29weVNpemU6IG51bWJlcn0+fSAqLworICAgICAgICB2YXIgY29weVJhbmdlcyA9IFt7
CisgICAgICAgICAgICAgICAgc3JjT2Zmc2V0OiA1NywgZHN0T2Zmc2V0OiA3MDEsIGNvcHlTaXpl
OiAxMDEgLy8gTm9uLWFkamVjZW50LCBmcm9tIGxvdyB0byBoaWdoLgorICAgICAgICAgICAgfSx7
CisgICAgICAgICAgICAgICAgc3JjT2Zmc2V0OiA2NDAsIGRzdE9mZnNldDogMTAxLCBjb3B5U2l6
ZTogMTAxIC8vIE5vbi1hZGplY2VudCwgZnJvbSBoaWdoIHRvIGxvdy4KKyAgICAgICAgICAgIH0s
eworICAgICAgICAgICAgICAgIHNyY09mZnNldDogMCwgZHN0T2Zmc2V0OiA1MDAsIGNvcHlTaXpl
OiA1MDAgLy8gTG93ZXIgaGFsZiB0byB1cHBlciBoYWxmLgorICAgICAgICAgICAgfSx7CisgICAg
ICAgICAgICAgICAgc3JjT2Zmc2V0OiA1MDAsIGRzdE9mZnNldDogMCwgY29weVNpemU6IDUwMCAv
LyBVcHBlciBoYWxmIHRvIGxvd2VyIGhhbGYuCisgICAgICAgIH1dOworCisgICAgICAgIGZvciAo
dmFyIG5keCA9IDA7IG5keCA8IGNvcHlSYW5nZXMubGVuZ3RoICYmIGlzT2s7IG5keCsrKSB7Cisg
ICAgICAgICAgICB2YXIgc3JjT2Zmc2V0ID0gY29weVJhbmdlc1tuZHhdLnNyY09mZnNldDsKKyAg
ICAgICAgICAgIHZhciBkc3RPZmZzZXQgPSBjb3B5UmFuZ2VzW25keF0uZHN0T2Zmc2V0OworICAg
ICAgICAgICAgdmFyIGNvcHlTaXplID0gY29weVJhbmdlc1tuZHhdLmNvcHlTaXplOworCisgICAg
ICAgICAgICBnbHNCdWZmZXJUZXN0VXRpbC5maWxsV2l0aFJhbmRvbUJ5dGVzKHJlZi5nZXRQdHIo
KSwgc2l6ZSwgZGVNYXRoLmJpbmFyeU9wKGJhc2VTZWVkLCBkZU1hdGguZGVNYXRoSGFzaChuZHgp
LCBkZU1hdGguQmluYXJ5T3AuWE9SKSk7CisKKyAgICAgICAgICAgIC8vIEZpbGwgd2l0aCBkYXRh
LgorICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcih0aGlzLm1fc3JjVGFyZ2V0LCBidWYpOworICAg
ICAgICAgICAgZ2wuYnVmZmVyRGF0YSh0aGlzLm1fc3JjVGFyZ2V0LCByZWYuZ2V0UHRyKCksIHRo
aXMubV9oaW50KTsKKworICAgICAgICAgICAgLy8gRXhlY3V0ZSBjb3B5LgorICAgICAgICAgICAg
cmVmLmdldFB0cigpLnNldChyZWYuZ2V0UHRyKCkuc3ViYXJyYXkoc3JjT2Zmc2V0LCBzcmNPZmZz
ZXQgKyBjb3B5U2l6ZSksIGRzdE9mZnNldCk7CisKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIo
dGhpcy5tX2RzdFRhcmdldCwgYnVmKTsKKyAgICAgICAgICAgIGdsLmNvcHlCdWZmZXJTdWJEYXRh
KHRoaXMubV9zcmNUYXJnZXQsIHRoaXMubV9kc3RUYXJnZXQsIHNyY09mZnNldCwgZHN0T2Zmc2V0
LCBjb3B5U2l6ZSk7CisKKyAgICAgICAgICAgIC8vIFZlcmlmeSBidWZmZXIgYWZ0ZXIgY29weS4K
KyAgICAgICAgICAgIGlzT2sgPSB2ZXJpZmllci52ZXJpZnkoYnVmLCByZWYuZ2V0UHRyKCksIDAs
IHNpemUsIHRoaXMubV9kc3RUYXJnZXQpICYmIGlzT2s7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaXNPaykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoJycpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdCdWZmZXIgdmVyaWZpY2F0aW9uIGZhaWxlZCcpOworCisgICAg
ICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmQnVmZmVyQ29weVRlc3RzLkJ1ZmZlckNvcHlUZXN0
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMs
ICdjb3B5JywgJ0J1ZmZlciBjb3B5IHRlc3RzJyk7CisgICAgICAgIHRoaXMubWFrZUV4ZWN1dGFi
bGUoKTsKKyAgICB9OworCisgICAgZXMzZkJ1ZmZlckNvcHlUZXN0cy5CdWZmZXJDb3B5VGVzdHMu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUp
OworICAgIGVzM2ZCdWZmZXJDb3B5VGVzdHMuQnVmZmVyQ29weVRlc3RzLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGVzM2ZCdWZmZXJDb3B5VGVzdHMuQnVmZmVyQ29weVRlc3RzOworCisgICAgZXMz
ZkJ1ZmZlckNvcHlUZXN0cy5CdWZmZXJDb3B5VGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNCdWZmZXJUZXN0VXRpbC5WZXJpZnlUeXBlfSAq
LyB2YXIgdmVyaWZ5OworCisgICAgICAgIHZhciBidWZmZXJUYXJnZXRzID0gWworICAgICAgICAg
ICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgICAgICAgZ2wuQ09QWV9SRUFEX0JVRkZFUiwKKyAg
ICAgICAgICAgIGdsLkNPUFlfV1JJVEVfQlVGRkVSLAorICAgICAgICAgICAgZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIsCisgICAgICAgICAgICBnbC5QSVhFTF9QQUNLX0JVRkZFUiwKKyAgICAgICAg
ICAgIGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsCisgICAgICAgICAgICBnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLAorICAgICAgICAgICAgZ2wuVU5JRk9STV9CVUZGRVIKKyAgICAgICAgXTsK
KworICAgICAgICAvLyAuYmFzaWMKKworICAgICAgICB2YXIgYmFzaWNHcm91cCA9IG5ldyB0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdCgnYmFzaWMnLCAnQmFzaWMgYnVmZmVyIGNvcHkgY2FzZXMnKTsKKyAg
ICAgICAgdGhpcy5hZGRDaGlsZChiYXNpY0dyb3VwKTsKKworICAgICAgICBmb3IgKHZhciBzcmNU
YXJnZXROZHggPSAwOyBzcmNUYXJnZXROZHggPCBidWZmZXJUYXJnZXRzLmxlbmd0aDsgc3JjVGFy
Z2V0TmR4KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGRzdFRhcmdldE5keCA9IDA7IGRzdFRh
cmdldE5keCA8IGJ1ZmZlclRhcmdldHMubGVuZ3RoOyBkc3RUYXJnZXROZHgrKykgeworICAgICAg
ICAgICAgICAgIGlmIChzcmNUYXJnZXROZHggPT0gZHN0VGFyZ2V0TmR4KQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIEluIFdlYkdMIDIsIGEgY29w
eSBiZXR3ZWVuIGFuIEVMRU1FTlRfQVJSQVlfQlVGRkVSIGFuZCBvdGhlciBkYXRhIGJ1ZmZlcgor
ICAgICAgICAgICAgICAgIC8vIChub3QgQ09QWV9XUklURV9CVUZGRVIgbm9yIENPUFlfUkVBRF9C
VUZGRVIgbm9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSKQorICAgICAgICAgICAgICAgIC8vIGNhbm5v
dCBiZSBtYWRlLCBzbyBsZXQncyBza2lwIHRob3NlIGNhc2VzLgorICAgICAgICAgICAgICAgIGlm
IChidWZmZXJUYXJnZXRzW3NyY1RhcmdldE5keF0gPT0gZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIg
fHwKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyVGFyZ2V0c1tkc3RUYXJnZXROZHhdID09IGds
LkVMRU1FTlRfQVJSQVlfQlVGRkVSKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIHZhciBzcmNUYXJnZXQgPSBidWZmZXJUYXJnZXRzW3NyY1RhcmdldE5k
eF07CisgICAgICAgICAgICAgICAgdmFyIGRzdFRhcmdldCA9IGJ1ZmZlclRhcmdldHNbZHN0VGFy
Z2V0TmR4XTsKKyAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IDEwMTc7CisgICAgICAgICAgICAg
ICAgdmFyIGhpbnQgPSBnbC5TVEFUSUNfRFJBVzsKKyAgICAgICAgICAgICAgICB2ZXJpZnkgPSBn
bHNCdWZmZXJUZXN0VXRpbC5WZXJpZnlUeXBlLkFTX1ZFUlRFWF9BUlJBWTsKKyAgICAgICAgICAg
ICAgICB2YXIgbmFtZSA9IGdsc0J1ZmZlclRlc3RVdGlsLmdldEJ1ZmZlclRhcmdldE5hbWUoc3Jj
VGFyZ2V0KSArICdfJyArIGdsc0J1ZmZlclRlc3RVdGlsLmdldEJ1ZmZlclRhcmdldE5hbWUoZHN0
VGFyZ2V0KTsKKworICAgICAgICAgICAgICAgIGJhc2ljR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZC
dWZmZXJDb3B5VGVzdHMuQmFzaWNCdWZmZXJDb3B5Q2FzZShuYW1lLCAnJywgc3JjVGFyZ2V0LCBz
aXplLCBoaW50LCBkc3RUYXJnZXQsIHNpemUsIGhpbnQsIDAsIDAsIHNpemUsIHZlcmlmeSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gLnN1YnJhbmdlCisKKyAgICAg
ICAgdmFyIHN1YnJhbmdlR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ3N1YnJhbmdl
JywgJ0J1ZmZlciBzdWJyYW5nZSBjb3B5IHRlc3RzJyk7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQo
c3VicmFuZ2VHcm91cCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0eXBlIHtBcnJheTx7
bmFtZTogc3RyaW5nLCBzcmNTaXplOiBudW1iZXIsIGRzdFNpemU6IG51bWJlciwgc3JjT2Zmc2V0
OiBudW1iZXIsIGRzdE9mZnNldDogbnVtYmVyLCBjb3B5U2l6ZTogbnVtYmVyfT59CisgICAgICAg
ICAqLworICAgICAgICB2YXIgY2FzZXMgPSBbeworICAgICAgICAgICAgICAgIG5hbWU6ICdtaWRk
bGUnLCBzcmNTaXplOiAxMDAwLCBkc3RTaXplOiAxMDAwLCBzcmNPZmZzZXQ6IDI1MCwgZHN0T2Zm
c2V0OiAyNTAsIGNvcHlTaXplOiA1MDAKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAg
IG5hbWU6ICdzbWFsbF90b19sYXJnZScsIHNyY1NpemU6IDEwMCwgZHN0U2l6ZTogMTAwMCwgc3Jj
T2Zmc2V0OiAwLCBkc3RPZmZzZXQ6IDQwOSwgY29weVNpemU6IDEwMAorICAgICAgICAgICAgfSx7
CisgICAgICAgICAgICAgICAgbmFtZTogJ2xhcmdlX3RvX3NtYWxsJywgc3JjU2l6ZTogMTAwMCwg
ZHN0U2l6ZTogMTAwLCBzcmNPZmZzZXQ6IDQwOSwgZHN0T2Zmc2V0OiAwLCBjb3B5U2l6ZTogMTAw
CisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnbG93X3RvX2hpZ2hfMScs
IHNyY1NpemU6IDEwMDAsIGRzdFNpemU6IDEwMDAsIHNyY09mZnNldDogMCwgZHN0T2Zmc2V0OiA1
MDAsIGNvcHlTaXplOiA1MDAKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIG5hbWU6
ICdsb3dfdG9faGlnaF8yJywgc3JjU2l6ZTogOTk3LCBkc3RTaXplOiAxMDI3LCBzcmNPZmZzZXQ6
IDAsIGRzdE9mZnNldDogNzAxLCBjb3B5U2l6ZTogMTExCisgICAgICAgICAgICB9LHsKKyAgICAg
ICAgICAgICAgICBuYW1lOiAnaGlnaF90b19sb3dfMScsIHNyY1NpemU6IDEwMDAsIGRzdFNpemU6
IDEwMDAsIHNyY09mZnNldDogNTAwLCBkc3RPZmZzZXQ6IDAsIGNvcHlTaXplOiA1MDAKKyAgICAg
ICAgICAgIH0seworICAgICAgICAgICAgICAgIG5hbWU6ICdoaWdoX3RvX2xvd18yJywgc3JjU2l6
ZTogMTAyNywgZHN0U2l6ZTogOTk3LCBzcmNPZmZzZXQ6IDcwMSwgZHN0T2Zmc2V0OiAxNywgY29w
eVNpemU6IDExMQorICAgICAgICB9XTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCBjYXNlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgc3JjVGFyZ2V0ID0gZ2wu
Q09QWV9SRUFEX0JVRkZFUjsKKyAgICAgICAgICAgIHZhciBkc3RUYXJnZXQgPSBnbC5DT1BZX1dS
SVRFX0JVRkZFUjsKKyAgICAgICAgICAgIHZhciBoaW50ID0gZ2wuU1RBVElDX0RSQVc7CisgICAg
ICAgICAgICB2ZXJpZnkgPSBnbHNCdWZmZXJUZXN0VXRpbC5WZXJpZnlUeXBlLkFTX1ZFUlRFWF9B
UlJBWTsKKworICAgICAgICAgICAgc3VicmFuZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
ICAgICBuZXcgZXMzZkJ1ZmZlckNvcHlUZXN0cy5CYXNpY0J1ZmZlckNvcHlDYXNlKAorICAgICAg
ICAgICAgICAgICAgICBjYXNlc1tuZHhdLm5hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICBz
cmNUYXJnZXQsIGNhc2VzW25keF0uc3JjU2l6ZSwgaGludCwKKyAgICAgICAgICAgICAgICAgICAg
ZHN0VGFyZ2V0LCBjYXNlc1tuZHhdLmRzdFNpemUsIGhpbnQsCisgICAgICAgICAgICAgICAgICAg
IGNhc2VzW25keF0uc3JjT2Zmc2V0LCBjYXNlc1tuZHhdLmRzdE9mZnNldCwgY2FzZXNbbmR4XS5j
b3B5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5CisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIC5zaW5nbGVfYnVmZmVyCisK
KyAgICAgICAgdmFyIHNpbmdsZUJ1Zkdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCdz
aW5nbGVfYnVmZmVyJywgJ0NvcGllcyB3aXRoaW4gc2luZ2xlIGJ1ZmZlcicpOworICAgICAgICB0
aGlzLmFkZENoaWxkKHNpbmdsZUJ1Zkdyb3VwKTsKKworICAgICAgICBmb3IgKHZhciBzcmNUYXJn
ZXROZHggPSAwOyBzcmNUYXJnZXROZHggPCBidWZmZXJUYXJnZXRzLmxlbmd0aDsgc3JjVGFyZ2V0
TmR4KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGRzdFRhcmdldE5keCA9IDA7IGRzdFRhcmdl
dE5keCA8IGJ1ZmZlclRhcmdldHMubGVuZ3RoOyBkc3RUYXJnZXROZHgrKykgeworICAgICAgICAg
ICAgICAgIGlmIChzcmNUYXJnZXROZHggPT0gZHN0VGFyZ2V0TmR4KQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIEluIFdlYkdMIDIsIHdlIGNhbid0
IHJlYmluZCBhbiBFTEVNRU5UX0FSUkFZX0JVRkZFUiBvciBUUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSIGFzIGEKKyAgICAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgdHlwZSBvZiBidWZmZXIsIHNv
IHdlIHNraXAgdGhvc2UgY2FzZXMuCisgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclRhcmdldHNb
c3JjVGFyZ2V0TmR4XSA9PSBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiB8fCBidWZmZXJUYXJnZXRz
W3NyY1RhcmdldE5keF0gPT0gZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiB8fAorICAgICAg
ICAgICAgICAgICAgICBidWZmZXJUYXJnZXRzW2RzdFRhcmdldE5keF0gPT0gZ2wuRUxFTUVOVF9B
UlJBWV9CVUZGRVIgfHwgYnVmZmVyVGFyZ2V0c1tkc3RUYXJnZXROZHhdID09IGdsLlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgdmFyIHNyY1RhcmdldCA9IGJ1ZmZlclRhcmdldHNbc3JjVGFyZ2V0TmR4XTsK
KyAgICAgICAgICAgICAgICB2YXIgZHN0VGFyZ2V0ID0gYnVmZmVyVGFyZ2V0c1tkc3RUYXJnZXRO
ZHhdOworICAgICAgICAgICAgICAgIHZhciBoaW50ID0gZ2wuU1RBVElDX0RSQVc7CisgICAgICAg
ICAgICAgICAgdmVyaWZ5ID0gZ2xzQnVmZmVyVGVzdFV0aWwuVmVyaWZ5VHlwZS5BU19WRVJURVhf
QVJSQVk7CisgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBnbHNCdWZmZXJUZXN0VXRpbC5nZXRC
dWZmZXJUYXJnZXROYW1lKHNyY1RhcmdldCkgKyAnXycgKyBnbHNCdWZmZXJUZXN0VXRpbC5nZXRC
dWZmZXJUYXJnZXROYW1lKGRzdFRhcmdldCk7CisKKyAgICAgICAgICAgICAgICBzaW5nbGVCdWZH
cm91cC5hZGRDaGlsZChuZXcgZXMzZkJ1ZmZlckNvcHlUZXN0cy5TaW5nbGVCdWZmZXJDb3B5Q2Fz
ZShuYW1lLCAnJywgc3JjVGFyZ2V0LCBkc3RUYXJnZXQsIGhpbnQsIHZlcmlmeSkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhbmQg
ZXhlY3V0ZSB0aGUgdGVzdCBjYXNlcworICAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dH0gY29udGV4dAorICAgICAqLworICAgICBlczNmQnVmZmVyQ29weVRlc3RzLnJ1biA9IGZ1
bmN0aW9uKGNvbnRleHQpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1
cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5y
dW5uZXI7CisKKyAgICAgICAgc3RhdGUuc2V0Um9vdChuZXcgZXMzZkJ1ZmZlckNvcHlUZXN0cy5C
dWZmZXJDb3B5VGVzdHMoKSk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRp
b24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRl
LnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICAgICAgZGVzY3JpcHRpb24oc3RhdGUudGVzdENh
c2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL1J1
biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAg
ICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0
aW9ucygnRmFpbGVkIHRvIHJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRlc3RD
YXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0Mzg0ZDNhZTdmYjJi
MDc4MTNlNmQwMWFhNTQ2ZWJkNzg3NGZmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuanMKQEAgLTAsMCArMSwxNzcgQEAKKy8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRp
bGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICdMaWNlbnNlJyk7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlD
YXNlJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZkJ1ZmZlck9iamVjdFF1
ZXJ5VGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzOwor
dmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBlczNm
QXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7Cit2YXIgZGVSYW5kb20gPSBm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKwordmFyIHNldFBhcmVudENsYXNzID0g
ZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gY2hpbGQ7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZB
cGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlckNh
c2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNh
c2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xh
c3MoZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuQnVmZmVyQ2FzZSwgZXMzZkFwaUNhc2UuQXBp
Q2FzZSk7CisKK2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlckNhc2UucHJvdG90eXBl
LnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgYnVmZmVyVGFyZ2V0cyA9IFsKKyAgICAgICAg
Z2wuQVJSQVlfQlVGRkVSLCBnbC5DT1BZX1JFQURfQlVGRkVSLAorICAgICAgICBnbC5UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSLCBnbC5VTklGT1JNX0JVRkZFUiwKKworICAgICAgICBnbC5DT1BZ
X1dSSVRFX0JVRkZFUiwgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsCisgICAgICAgIGdsLlBJWEVM
X1BBQ0tfQlVGRkVSLCBnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSCisgICAgXTsKKworICAgIC8vIG1v
c3QgdGVzdCBuZWVkIG9ubHkgdG8gYmUgcnVuIHdpdGggYSBzdWJzZXQgb2YgdGFyZ2V0cworICAg
dmFyIHRhcmdldHMgPSB0aGlzLm1fdGVzdEFsbFRhcmdldHMgPyBidWZmZXJUYXJnZXRzLmxlbmd0
aCA6IDQ7CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0YXJnZXRzOyArK25keCkgewor
ICAgICAgICB0aGlzLm1fYnVmZmVyVGFyZ2V0ID0gYnVmZmVyVGFyZ2V0c1tuZHhdOworCisgICAg
ICAgIHZhciBidWZmZXJJZCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVm
ZmVyKHRoaXMubV9idWZmZXJUYXJnZXQsIGJ1ZmZlcklkKTsKKworICAgICAgICB0aGlzLnRlc3RC
dWZmZXIoKTsKKworICAgICAgICBnbC5iaW5kQnVmZmVyKHRoaXMubV9idWZmZXJUYXJnZXQsIG51
bGwpOworICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmZmVySWQpOworICAgIH0KK307CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVz
dHMuQnVmZmVyQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzY3JpcHRpb24KKyAqLworZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuQnVmZmVyU2l6
ZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZCdWZmZXJPYmpl
Y3RRdWVyeVRlc3RzLkJ1ZmZlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7Cisg
ICAgdGhpcy5tX3Rlc3RBbGxUYXJnZXRzID0gdHJ1ZTsKK307CisKK3NldFBhcmVudENsYXNzKGVz
M2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlclNpemVDYXNlLCBlczNmQnVmZmVyT2JqZWN0
UXVlcnlUZXN0cy5CdWZmZXJDYXNlKTsKKworZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuQnVm
ZmVyU2l6ZUNhc2UucHJvdG90eXBlLnRlc3RCdWZmZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAgICB2YXIgc2l6ZSA9IC8q
KiB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRCdWZmZXJQYXJhbWV0ZXIodGhpcy5tX2J1ZmZlclRh
cmdldCwgZ2wuQlVGRkVSX1NJWkUpKTsKKyAgICB0aGlzLmNoZWNrKHNpemUgPT0gMCwgJ0luaXRp
YWwgc2l6ZSBzaG91bGQgYmUgMDsgZ290ICcgKyBzaXplKTsKKworICAgIHZhciBudW1JdGVyYXRp
b25zID0gMTY7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsK
KyAgICAgICAgdmFyIGxlbiA9IHJuZC5nZXRJbnQoMCwgMTAyNCk7CisgICAgICAgIGdsLmJ1ZmZl
ckRhdGEodGhpcy5tX2J1ZmZlclRhcmdldCwgbGVuLCBnbC5TVFJFQU1fRFJBVyk7CisKKyAgICAg
ICAgc2l6ZSA9IC8qKiB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRCdWZmZXJQYXJhbWV0ZXIodGhp
cy5tX2J1ZmZlclRhcmdldCwgZ2wuQlVGRkVSX1NJWkUpKTsKKyAgICAgICAgdGhpcy5jaGVjayhz
aXplID09IGxlbiwgJ0J1ZmZlciBzaXplIHNob3VsZCBiZSAnICsgbGVuICsgJyA7IGdvdCAnICsg
c2l6ZSk7CisgICAgfQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtl
czNmQnVmZmVyT2JqZWN0UXVlcnlUZXN0cy5CdWZmZXJDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmQnVmZmVyT2Jq
ZWN0UXVlcnlUZXN0cy5CdWZmZXJVc2FnZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlv
bikgeworICAgIGVzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlckNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgdGhpcy5tX3Rlc3RBbGxUYXJnZXRzID0gZmFsc2U7
Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmQnVmZmVyT2JqZWN0UXVlcnlUZXN0cy5CdWZmZXJV
c2FnZUNhc2UsIGVzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlckNhc2UpOworCitlczNm
QnVmZmVyT2JqZWN0UXVlcnlUZXN0cy5CdWZmZXJVc2FnZUNhc2UucHJvdG90eXBlLnRlc3RCdWZm
ZXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdXNhZ2UgPSAvKiogdHlwZSB7bnVtYmVyfSAqLyAo
Z2wuZ2V0QnVmZmVyUGFyYW1ldGVyKHRoaXMubV9idWZmZXJUYXJnZXQsIGdsLkJVRkZFUl9VU0FH
RSkpOworICAgIHRoaXMuY2hlY2sodXNhZ2UgPT0gZ2wuU1RBVElDX0RSQVcsICdJbml0aWFsIHVz
YWdlIHNob3VsZCBiZSBTVEFUSUNfRFJBVzsgZ290ICcgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2ws
IHVzYWdlKSk7CisKKyAgICB2YXIgdXNhZ2VzID0gWworICAgICAgICBnbC5TVFJFQU1fRFJBVywg
Z2wuU1RSRUFNX1JFQUQsCisgICAgICAgIGdsLlNUUkVBTV9DT1BZLCBnbC5TVEFUSUNfRFJBVywK
KyAgICAgICAgZ2wuU1RBVElDX1JFQUQsIGdsLlNUQVRJQ19DT1BZLAorICAgICAgICBnbC5EWU5B
TUlDX0RSQVcsIGdsLkRZTkFNSUNfUkVBRCwKKyAgICAgICAgZ2wuRFlOQU1JQ19DT1BZCisgICAg
XTsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHVzYWdlcy5sZW5ndGg7ICsrbmR4KSB7
CisgICAgICAgIGdsLmJ1ZmZlckRhdGEodGhpcy5tX2J1ZmZlclRhcmdldCwgMTYsIHVzYWdlc1tu
ZHhdKTsKKworICAgICAgICB1c2FnZSA9IC8qKiB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRCdWZm
ZXJQYXJhbWV0ZXIodGhpcy5tX2J1ZmZlclRhcmdldCwgZ2wuQlVGRkVSX1VTQUdFKSk7CisgICAg
ICAgIHRoaXMuY2hlY2sodXNhZ2UgPT0gdXNhZ2VzW25keF0sICdCdWZmZXIgdXNhZ2Ugc2hvdWxk
IGJlICcgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHVzYWdlc1tuZHhdKSArICcgOyBnb3QgJyAr
IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdXNhZ2UpKTsKKyAgICB9Cit9OworCisvKioKKyogQGNv
bnN0cnVjdG9yCisqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyovCitlczNmQnVm
ZmVyT2JqZWN0UXVlcnlUZXN0cy5CdWZmZXJPYmplY3RRdWVyeVRlc3RzID0gZnVuY3Rpb24oKSB7
CisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnYnVmZmVyX29iamVjdCcsICdC
dWZmZXIgT2JqZWN0IFF1ZXJ5IHRlc3RzJyk7Cit9OworCitlczNmQnVmZmVyT2JqZWN0UXVlcnlU
ZXN0cy5CdWZmZXJPYmplY3RRdWVyeVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1
VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKK2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3Rz
LkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkJ1ZmZl
ck9iamVjdFF1ZXJ5VGVzdHMuQnVmZmVyT2JqZWN0UXVlcnlUZXN0czsKKworZXMzZkJ1ZmZlck9i
amVjdFF1ZXJ5VGVzdHMuQnVmZmVyT2JqZWN0UXVlcnlUZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1
bmN0aW9uKCkgeworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZCdWZmZXJPYmplY3RRdWVyeVRl
c3RzLkJ1ZmZlclNpemVDYXNlKCdidWZmZXJfc2l6ZScgLCAnQlVGRkVSX1NJWkUnKSk7CisgICAg
dGhpcy5hZGRDaGlsZChuZXcgZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuQnVmZmVyVXNhZ2VD
YXNlKCdidWZmZXJfdXNhZ2UnICwgJ0JVRkZFUl9VU0FHRScpKTsKK307CisKKy8qKgorKiBSdW4g
dGVzdAorKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyovCitlczNm
QnVmZmVyT2JqZWN0UXVlcnlUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wg
PSBjb250ZXh0OworICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHN0
YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZCdWZm
ZXJPYmplY3RRdWVyeVRlc3RzLkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMoKSk7CisKKyAgICAvL1Nl
dCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIHNldEN1
cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgZGVzY3JpcHRp
b24oc3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsK
KyAgICB9CisgICAgY2F0Y2ggKGVycikgeworICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFp
bGVkIHRvIGVzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAg
ICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgIH0KK307CisKK30pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMuanMgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTc4NjE4MGIz
NGFjMjFhNTcwYjg3ZWU0OTUyNTRmMThmNjAxYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2VzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMuanMKQEAgLTAsMCArMSw4NyBAQAorLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyAz
LjAgTW9kdWxlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8vKiEKKyAqIFxmaWxlCisgKiBcYnJpZWYgVGVzdHMgZm9yIHByZWNpc2lv
biBhbmQgcmFuZ2Ugb2YgR0xTTCBidWlsdGlucyBhbmQgdHlwZXMuCisgKi8vKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQnVp
bHRpblByZWNpc2lvblRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9n
cmFtJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cycpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGVzM2ZCdWlsdGlu
UHJlY2lzaW9uVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZCdWlsdGluUHJlY2lzaW9uVGVz
dHM7CisgICAgdmFyIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cyA9IG1vZHVsZXMuc2hhcmVkLmds
c0J1aWx0aW5QcmVjaXNpb25UZXN0czsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBj
b250ZXh0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNhc2VJZCB0ZXN0IGNhc2UgSWQKKyAgICAg
KiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmQnVpbHRp
blByZWNpc2lvblRlc3RzLmNyZWF0ZUJ1aWx0aW5QcmVjaXNpb25UZXN0cyA9IGZ1bmN0aW9uKGNv
bnRleHQsIGNhc2VJZCkgeworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fSAqLworICAgICAgICB2YXIgZ3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdwcmVjaXNpb24n
LCAnQnVpbHRpbiBwcmVjaXNpb24gdGVzdHMnKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5
PGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZT59ICovIHZhciBzaGFkZXJUeXBlcyA9IFtdOwor
ICAgICAgICB2YXIgZXMzQ2FzZXMgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3JlYXRlRVMz
QnVpbHRpbkNhc2VzKGNhc2VJZCk7CisKKyAgICAgICAgc2hhZGVyVHlwZXMucHVzaChnbHVTaGFk
ZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYKTsKKyAgICAgICAgc2hhZGVyVHlwZXMucHVzaChn
bHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQpOworCisgICAgICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5hZGRCdWlsdGluUHJlY2lzaW9uVGVzdHMoZXMzQ2FzZXMsIHNoYWRl
clR5cGVzLCBncm91cCk7CisgICAgICAgIHJldHVybiBncm91cDsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQ3JlYXRlIGFuZCBleGVjdXRlIHRoZSB0ZXN0IGNhc2VzCisgICAgICogQHBhcmFt
IHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGNhc2VJZCB0ZXN0IGNhc2UgSWQKKyAgICAgKi8KKyAgICBlczNmQnVpbHRpblByZWNpc2lvblRl
c3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQsIGNhc2VJZCkgeworICAgICAgICBnbCA9IGNvbnRl
eHQ7CisgICAgICAgIC8vIFNldCB1cCByb290IFRlc3QKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1
VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHZhciB0ZXN0ID0gZXMzZkJ1aWx0aW5QcmVjaXNp
b25UZXN0cy5jcmVhdGVCdWlsdGluUHJlY2lzaW9uVGVzdHMoY29udGV4dCwgY2FzZUlkKTsKKyAg
ICAgICAgdmFyIHRlc3ROYW1lID0gdGVzdC5mdWxsTmFtZSgpOworICAgICAgICB2YXIgdGVzdERl
c2NyaXB0aW9uID0gdGVzdC5nZXREZXNjcmlwdGlvbigpID09PSB1bmRlZmluZWQgPyAnJyA6IHRl
c3QuZ2V0RGVzY3JpcHRpb24oKTsKKworICAgICAgICBzdGF0ZS50ZXN0TmFtZSA9IHRlc3ROYW1l
OworICAgICAgICBzdGF0ZS5zZXRSb290KHRlc3QpOworICAgICAgICAvL1NldCB1cCBuYW1lIGFu
ZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVz
dE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlwdGlvbih0ZXN0RGVzY3JpcHRpb24pOwor
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0NyZWF0ZSB0ZXN0IGNhc2VzCisgICAgICAg
ICAgICB0ZXN0LmluaXQoKTsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAg
ICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB9IGNhdGNoIChlcnIpIHsK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFeGNlcHRpb246ICcgKyBlcnIpOwor
ICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmQXR0cmliTG9jYXRp
b25UZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5u
ZXIudGVybWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9lczNmQ2xpcHBpbmdUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmQ2xpcHBpbmdUZXN0
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMjYxY2RlYTYzM2NkYmE5ZTg3OWIyYzJmZDJiNWM0ODU1OTY3NzBk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZDbGlwcGluZ1Rlc3RzLmpzCkBAIC0w
LDAgKzEsNDA2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5
IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisg
KiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMg
SVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5w
cm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZDbGlwcGluZ1Rlc3RzJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5jb21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
TWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbCcpOworZ29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9u
KCkgewordmFyIGVzM2ZDbGlwcGluZ1Rlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmQ2xpcHBp
bmdUZXN0czsKK3ZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdl
Q29tcGFyZTsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7
Cit2YXIgZXMzZkZib1Rlc3RDYXNlID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdENhc2U7
Cit2YXIgZXMzZkZib1Rlc3RVdGlsID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdFV0aWw7
Cit2YXIgcnJVdGlsID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbDsKK3ZhciBn
bHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIGRlUmFu
ZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIgZGVNYXRoID0gZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVJHQkE7CisKKy8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gKi8gdmFy
IGdsOworCit2YXIgc2V0UGFyZW50Q2xhc3MgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7Cisg
ICAgY2hpbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJvdG90eXBlKTsKKyAg
ICBjaGlsZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjaGlsZDsKK307CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlfQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHZpZXdwb3J0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJhbmdl
WAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByYW5nZVkKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gcmFuZ2VaCisgKi8KK2VzM2ZDbGlwcGluZ1Rlc3RzLlRyaWFuZ2xlQ2FzZSA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2MsIHZpZXdwb3J0LCByYW5nZVgsIHJhbmdlWSwgcmFuZ2VaKSB7CisgICAg
ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAg
dGhpcy5tX3ZpZXdwb3J0ID0gdmlld3BvcnQ7CisgICAgdGhpcy5tX3JhbmdlWCA9IHJhbmdlWDsK
KyAgICB0aGlzLm1fcmFuZ2VZID0gcmFuZ2VZOworICAgIHRoaXMubV9yYW5nZVogPSByYW5nZVo7
Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmQ2xpcHBpbmdUZXN0cy5UcmlhbmdsZUNhc2UsIGVz
M2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZSk7CisKK2VzM2ZDbGlwcGluZ1Rlc3RzLlRyaWFuZ2xl
Q2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHgg
PSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIHZhciB4ID0gdGhpcy5tX3ZpZXdw
b3J0WzBdOworICAgICAgICB2YXIgeSA9IHRoaXMubV92aWV3cG9ydFsxXTsKKyAgICAgICAgdmFy
IHdpZHRoID0gdGhpcy5tX3ZpZXdwb3J0WzJdOworICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5t
X3ZpZXdwb3J0WzNdOworICAgICAgICBjdHgudmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7
CisgICAgICAgIGN0eC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgICAgICBjdHguY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJv
VGVzdFV0aWwuR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0
KTsKKyAgICAgICAgdmFyIHByb2dyYW0gPSBjdHguY3JlYXRlUHJvZ3JhbShzaGFkZXIpOworICAg
ICAgICBzaGFkZXIuc2V0R3JhZGllbnQoY3R4LCBwcm9ncmFtLCBbMCwgMCwgMCwgMF0sIFsxLCAx
LCAxLCAxXSk7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgcHJvZ3JhbSwKKyAgICAg
ICAgICAgIFt0aGlzLm1fcmFuZ2VYWzBdLCB0aGlzLm1fcmFuZ2VZWzBdLCB0aGlzLm1fcmFuZ2Va
WzBdXSwKKyAgICAgICAgICAgIFt0aGlzLm1fcmFuZ2VYWzFdLCB0aGlzLm1fcmFuZ2VZWzFdLCB0
aGlzLm1fcmFuZ2VaWzFdXSk7CisgICAgICAgIGRzdC5yZWFkVmlld3BvcnQoY3R4LCB0aGlzLm1f
dmlld3BvcnQpOworfTsKKworLyoqCisgKiBNb3ZlIHRoZSB2ZXJ0ZXggY29vcmRpbmF0ZSB0byBw
aXhlbCBjZW50ZXIKKyAqLwordmFyIGNlbnRlciA9IGZ1bmN0aW9uKHgsIHdpZHRoKSB7CisgICAg
dmFyIGhhbGYgPSB3aWR0aCAvIDI7CisgICAgdmFyIHBvcyA9IGhhbGYgKyB4ICogaGFsZjsKKyAg
ICAvLyBhbG1vc3QgdG8gdGhlIGNlbnRlciB0byBhdm9pZCBwcm9ibGVtcyB3aGVuIHJvdW5kaW5n
CisgICAgLy8gdGhlIHBvc2l0aW9uIHRoZSBwaXhlbCBlZGdlCisgICAgcG9zID0gTWF0aC5yb3Vu
ZChwb3MpICsgMC40OTsKKyAgICByZXR1cm4gKHBvcyAtIGhhbGYpIC8gaGFsZjsKK307CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RD
YXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZpZXdwb3J0CisgKiBAcGFyYW0ge251bWJlcn0gbGlu
ZVdpZHRoCisgKi8KK2VzM2ZDbGlwcGluZ1Rlc3RzLkxpbmVzQ2FzZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2MsIHZpZXdwb3J0LCBsaW5lV2lkdGgpIHsKKyAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVz
dENhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICB0aGlzLm1fdmlld3BvcnQgPSB2aWV3
cG9ydDsKKyAgICB0aGlzLm1fbGluZVdpZHRoID0gbGluZVdpZHRoOworfTsKKworc2V0UGFyZW50
Q2xhc3MoZXMzZkNsaXBwaW5nVGVzdHMuTGluZXNDYXNlLCBlczNmRmJvVGVzdENhc2UuRmJvVGVz
dENhc2UpOworCitlczNmQ2xpcHBpbmdUZXN0cy5MaW5lc0Nhc2UucHJvdG90eXBlLmNvbXBhcmUg
PSBmdW5jdGlvbihyZWZlcmVuY2UsIHJlc3VsdCkgeworICAgIHJldHVybiB0Y3VJbWFnZUNvbXBh
cmUuYmlsaW5lYXJDb21wYXJlKCdSZXN1bHQnLCAnSW1hZ2UgY29tcGFyaXNvbiByZXN1bHQnLAor
ICAgICAgICByZWZlcmVuY2UuZ2V0QWNjZXNzKCksCisgICAgICAgIHJlc3VsdC5nZXRBY2Nlc3Mo
KSwKKyAgICAgICAgdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cygzLCAzLCAzLCAzKSk7Cit9Owor
CitlczNmQ2xpcHBpbmdUZXN0cy5MaW5lc0Nhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9u
KGRzdCkgeworICAgICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAg
ICAgICB2YXIgeCA9IHRoaXMubV92aWV3cG9ydFswXTsKKyAgICAgICAgdmFyIHkgPSB0aGlzLm1f
dmlld3BvcnRbMV07CisgICAgICAgIHZhciB3aWR0aCA9IHRoaXMubV92aWV3cG9ydFsyXTsKKyAg
ICAgICAgdmFyIGhlaWdodCA9IHRoaXMubV92aWV3cG9ydFszXTsKKyAgICAgICAgY3R4LnZpZXdw
b3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjdHguY2xlYXJDb2xvcigwLCAwLCAw
LCAxKTsKKyAgICAgICAgY3R4LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAg
IHZhciBzaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAgICAgIHZhciBwcm9ncmFtID0gY3R4LmNy
ZWF0ZVByb2dyYW0oc2hhZGVyKTsKKyAgICAgICAgc2hhZGVyLnNldEdyYWRpZW50KGN0eCwgcHJv
Z3JhbSwgWzAsIDAsIDAsIDBdLCBbMSwgMSwgMSwgMV0pOworCisgICAgICAgIC8vIHBvc2l0aW9u
cworICAgICAgICB2YXIgcG9zTG9jID0gY3R4LmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdh
X3Bvc2l0aW9uJyk7CisgICAgICAgIGlmIChwb3NMb2MgPT0gLTEpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2FfcG9zaXRpb24gYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLicpOworCisg
ICAgICAgIHZhciBidWZmZXIgPSBjdHguY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGN0eC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKworICAgICAgICBjdHgubGluZVdpZHRo
KHRoaXMubV9saW5lV2lkdGgpOworCisgICAgICAgIHZhciB5MSA9IGNlbnRlcigtMC41LCBoZWln
aHQpOworICAgICAgICB2YXIgeTIgPSBjZW50ZXIoLTAuMiwgaGVpZ2h0KTsKKyAgICAgICAgdmFy
IHkzID0gY2VudGVyKDAuMiwgaGVpZ2h0KTsKKyAgICAgICAgdmFyIHk0ID0gY2VudGVyKDAuNSwg
aGVpZ2h0KTsKKyAgICAgICAgdmFyIHk1ID0gY2VudGVyKDAsIGhlaWdodCk7CisgICAgICAgIHZh
ciB4MSA9IGNlbnRlcigtMC41LCB3aWR0aCk7CisgICAgICAgIHZhciB4MiA9IGNlbnRlcigtMC4y
LCB3aWR0aCk7CisgICAgICAgIHZhciB4MyA9IGNlbnRlcigwLjIsIHdpZHRoKTsKKyAgICAgICAg
dmFyIHg0ID0gY2VudGVyKDAuNSwgd2lkdGgpOworICAgICAgICB2YXIgcG9zaXRpb25zID0gWwor
ICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBjaGVjaworICAgICAgICAgICAgLy8gYm90aCBlbmRz
IG91dHNpZGUgdmlld3BvcnQKKyAgICAgICAgICAgIC0xIC0gMSAvIHdpZHRoLCB5MSwgMCwgMSwK
KyAgICAgICAgICAgIDEgKyAxIC8gd2lkdGgsIHkxLCAwLCAxLAorICAgICAgICAgICAgLy8gb25l
IGVuZCBpbnNpZGUgdmlld3BvcnQKKyAgICAgICAgICAgIC0xICsgMSAvIHdpZHRoLCB5MiwgMCwg
MSwKKyAgICAgICAgICAgIDEgKyAxIC8gd2lkdGgsIHkyLCAwLCAxLAorCisgICAgICAgICAgICAt
MSAtIDEgLyB3aWR0aCwgeTMsIDAsIDEsCisgICAgICAgICAgICAxIC0gMSAvIHdpZHRoLCB5Mywg
MCwgMSwKKyAgICAgICAgICAgIC8vIGJvdGggZW5kcyBpbnNpZGUgdmlld3BvcnQKKworICAgICAg
ICAgICAgLTEgKyAxIC8gd2lkdGgsIHk0LCAwLCAxLAorICAgICAgICAgICAgMSAtIDEgLyB3aWR0
aCwgeTQsIDAsIDEsCisKKyAgICAgICAgICAgIC8vdmVydGljYWwgY2hlY2sKKyAgICAgICAgICAg
IC8vIGJvdGggZW5kcyBvdXRzaWRlIHZpZXdwb3J0CisgICAgICAgICAgICB4MSwgLTEgLSAxIC8g
aGVpZ2h0LCAwLCAxLAorICAgICAgICAgICAgeDEsIDEgKyAxIC8gaGVpZ2h0LCAwLCAxLAorCisg
ICAgICAgICAgICAvLyBvbmUgZW5kIGluc2lkZSB2aWV3cG9ydAorICAgICAgICAgICAgeDIsIC0x
ICsgMSAvIGhlaWdodCwgMCwgMSwKKyAgICAgICAgICAgIHgyLCAxICsgMSAvIGhlaWdodCwgMCwg
MSwKKworICAgICAgICAgICAgeDMsIC0xIC0gMSAvIGhlaWdodCwgMCwgMSwKKyAgICAgICAgICAg
IHgzLCAxIC0gMSAvIGhlaWdodCwgMCwgMSwKKyAgICAgICAgICAgIC8vYm90aCBlbmRzIGluc2lk
ZSB2aWV3cG9ydAorICAgICAgICAgICAgeDQsIC0xICsgMSAvIGhlaWdodCwgMCwgMSwKKyAgICAg
ICAgICAgIHg0LCAxIC0gMSAvIGhlaWdodCwgMCwgMSwKKworICAgICAgICAgICAgLy9kZXB0aCBj
aGVjaworICAgICAgICAgICAgLTEsIHk1LCAtMS41LCAxLAorICAgICAgICAgICAgMSwgeTUsIDEu
MSwgMQorICAgICAgICBdOworICAgICAgICB2YXIgbnVtVmVydGljZXMgPSBwb3NpdGlvbnMubGVu
Z3RoIC8gNDsKKworICAgICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBG
bG9hdDMyQXJyYXkocG9zaXRpb25zKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIGN0eC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NMb2MpOworICAgICAgICBjdHgudmVydGV4QXR0cmli
UG9pbnRlcihwb3NMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgLy9j
b2xvcnMKKyAgICAgICAgdmFyIGNvb3JkTG9jID0gY3R4LmdldEF0dHJpYkxvY2F0aW9uKHByb2dy
YW0sICdhX2Nvb3JkJyk7CisgICAgICAgIGlmIChjb29yZExvYyA9PSAtMSkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcignYV9jb29yZCBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQuJyk7CisK
KyAgICAgICAgdmFyIGJ1ZmZlcjIgPSBjdHguY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGN0eC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyMik7CisKKyAgICAgICAgdmFyIGNvb3Jk
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVZlcnRpY2VzIC8gMjsgaSsr
KSB7CisgICAgICAgICAgICBjb29yZHMucHVzaCgwLCAwLCAxLCAxKTsKKyAgICAgICAgfQorICAg
ICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoY29v
cmRzKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShjb29yZExvYyk7CisgICAgICAgIGN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNvb3JkTG9j
LCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIGN0eC5kcmF3QXJyYXlzKGds
LkxJTkVTLCAwLCBudW1WZXJ0aWNlcyk7CisgICAgICAgIGN0eC5kaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkocG9zTG9jKTsKKyAgICAgICAgY3R4LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb29y
ZExvYyk7CisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7Cisg
ICAgICAgIGN0eC5kZWxldGVCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgY3R4LmRlbGV0ZUJ1ZmZl
cihidWZmZXIyKTsKKyAgICAgICAgZHN0LnJlYWRWaWV3cG9ydChjdHgsIHRoaXMubV92aWV3cG9y
dCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9UZXN0
Q2FzZS5GYm9UZXN0Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0
cmluZ30gZGVzYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2aWV3cG9ydAorICogQHBhcmFt
IHtudW1iZXJ9IHBvaW50U2l6ZQorICovCitlczNmQ2xpcHBpbmdUZXN0cy5Qb2ludHNDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzYywgdmlld3BvcnQsIHBvaW50U2l6ZSkgeworICAgIGVzM2ZGYm9U
ZXN0Q2FzZS5GYm9UZXN0Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgIHRoaXMubV92
aWV3cG9ydCA9IHZpZXdwb3J0OworICAgIHRoaXMubV9wb2ludFNpemUgPSBwb2ludFNpemU7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmQ2xpcHBpbmdUZXN0cy5Qb2ludHNDYXNlLCBlczNmRmJv
VGVzdENhc2UuRmJvVGVzdENhc2UpOworCitlczNmQ2xpcHBpbmdUZXN0cy5Qb2ludHNDYXNlLnBy
b3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICByZXR1
cm4gdGN1SW1hZ2VDb21wYXJlLmJpbGluZWFyQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBh
cmlzb24gcmVzdWx0JywKKyAgICAgICAgcmVmZXJlbmNlLmdldEFjY2VzcygpLAorICAgICAgICBy
ZXN1bHQuZ2V0QWNjZXNzKCksCisgICAgICAgIHRjdVJHQkEubmV3UkdCQUNvbXBvbmVudHMoMywg
MywgMywgMykpOworfTsKKworZXMzZkNsaXBwaW5nVGVzdHMuUG9pbnRzQ2FzZS5wcm90b3R5cGUu
cmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJl
bnRDb250ZXh0KCk7CisgICAgICAgIHZhciB4ID0gdGhpcy5tX3ZpZXdwb3J0WzBdOworICAgICAg
ICB2YXIgeSA9IHRoaXMubV92aWV3cG9ydFsxXTsKKyAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5t
X3ZpZXdwb3J0WzJdOworICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5tX3ZpZXdwb3J0WzNdOwor
ICAgICAgICBjdHgudmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGN0eC5j
bGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisKKyAgICAgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENv
bG9yU2hhZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgdGhpcy5tX3BvaW50
U2l6ZSk7CisgICAgICAgIHZhciBwcm9ncmFtID0gY3R4LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsK
KyAgICAgICAgc2hhZGVyLnNldENvbG9yKGN0eCwgcHJvZ3JhbSwgWzAsIDEsIDAsIDFdKTsKKwor
ICAgICAgICAvLyBwb3NpdGlvbnMKKyAgICAgICAgdmFyIHBvc0xvYyA9IGN0eC5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCAnYV9wb3NpdGlvbicpOworICAgICAgICBpZiAocG9zTG9jID09IC0x
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhX3Bvc2l0aW9uIGF0dHJpYnV0ZSBpcyBu
b3QgZGVmaW5lZC4nKTsKKworICAgICAgICB2YXIgYnVmZmVyID0gY3R4LmNyZWF0ZUJ1ZmZlcigp
OworICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAg
ICAgICAgdmFyIHBvc2l0aW9ucyA9IFsKKyAgICAgICAgICAgIC8vIGNsaXBwaW5nIGluIFggYXhp
cworICAgICAgICAgICAgLTEgLSAxIC8gd2lkdGgsIC0wLjUsIDAsIDEsCisgICAgICAgICAgICAt
MSwgMCwgMCwgMSwKKyAgICAgICAgICAgIC0xICsgMSAvIHdpZHRoLCAwLjUsIDAsIDEsCisgICAg
ICAgICAgICAxICsgMSAvIHdpZHRoLCAtMC41LCAwLCAxLAorICAgICAgICAgICAgMSwgMCwgMCwg
MSwKKyAgICAgICAgICAgIDEgLSAxIC8gd2lkdGgsIDAuNSwgMCwgMSwKKyAgICAgICAgICAgIC8v
IGNsaXBwaW5nIGluIFkgYXhpcworICAgICAgICAgICAgLTAuNSwgLTEgLSAxIC8gaGVpZ2h0LCAw
LCAxLAorICAgICAgICAgICAgMCwgLTEsIDAsIDEsCisgICAgICAgICAgICAwLjUsIC0xICsgMSAv
IGhlaWdodCwgMCwgMSwKKyAgICAgICAgICAgIC0wLjUsIDEgLSAxIC8gaGVpZ2h0LCAwLCAxLAor
ICAgICAgICAgICAgMCwgMSwgMCwgMSwKKyAgICAgICAgICAgIDAuNSwgMSArIDEgLyBoZWlnaHQs
IDAsIDEsCisgICAgICAgICAgICAvLyBjbGlwcGluZyBpbiBaIGF4aXMKKyAgICAgICAgICAgIC0w
LjUsIC0wLjUsIC0xLjUsIDEsCisgICAgICAgICAgICAwLCAwLCAwLCAxLAorICAgICAgICAgICAg
MC41LCAwLjUsIDEuNSwgMQorICAgICAgICBdOworICAgICAgICAvLyBtb3ZlIHRoZSB2ZXJ0aWNl
cyB0byBwaXhlbCBjZW50ZXJzIHRvIGF2b2lkIG9mZi1ieS0xIGRpZmZlcmVuY2VzCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSA0KSB7CisgICAgICAg
ICAgICBwb3NpdGlvbnNbaSArIDBdID0gY2VudGVyKHBvc2l0aW9uc1tpICsgMF0sIHdpZHRoKTsK
KyAgICAgICAgICAgIHBvc2l0aW9uc1tpICsgMV0gPSBjZW50ZXIocG9zaXRpb25zW2kgKyAxXSwg
aGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICAvLyBwb3NpdGlvbnMgPSBbLTEgKyAzL3dpZHRo
ICsgMC4wMDEsIDEgKyAxL2hlaWdodCArIDAuMDAxLCAwLCAxXTsKKyAgICAgICAgLy8gcG9zaXRp
b25zID0gWy0xLCAtMSwgMCwgMV07CisKKyAgICAgICAgdmFyIG51bVZlcnRpY2VzID0gcG9zaXRp
b25zLmxlbmd0aCAvIDQ7CisKKyAgICAgICAgY3R4LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAg
ICBjdHguZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zTG9jKTsKKyAgICAgICAgY3R4LnZlcnRl
eEF0dHJpYlBvaW50ZXIocG9zTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAg
ICAgIGN0eC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgbnVtVmVydGljZXMpOworICAgICAgICBj
dHguZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc0xvYyk7CisgICAgICAgIGN0eC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgIGN0eC5kZWxldGVCdWZmZXIoYnVm
ZmVyKTsKKyAgICAgICAgZHN0LnJlYWRWaWV3cG9ydChjdHgsIHRoaXMubV92aWV3cG9ydCk7Cit9
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fQorICovCitlczNmQ2xpcHBpbmdUZXN0cy5DbGlwcGluZ1Rlc3RzID0gZnVuY3Rpb24oKSB7
CisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnY2xpcHBpbmcnLCAnQ2xpcHBp
bmcgdGVzdHMnKTsKK307CisKK2VzM2ZDbGlwcGluZ1Rlc3RzLkNsaXBwaW5nVGVzdHMucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworZXMz
ZkNsaXBwaW5nVGVzdHMuQ2xpcHBpbmdUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
Q2xpcHBpbmdUZXN0cy5DbGlwcGluZ1Rlc3RzOworCitlczNmQ2xpcHBpbmdUZXN0cy5DbGlwcGlu
Z1Rlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHdpZHRoID0gZ2wu
ZHJhd2luZ0J1ZmZlcldpZHRoOworICAgIHZhciBoZWlnaHQgPSBnbC5kcmF3aW5nQnVmZmVySGVp
Z2h0OworICAgIC8qKiBAY29uc3QgKi8gdmFyIFdJREVfUE9JTlQgPSA1OworICAgIC8qKiBAY29u
c3QgKi8gdmFyIFdJREVfTElORSA9IDU7CisgICAgdmFyIHZpZXdwb3J0cyA9IFt7IG5hbWU6ICdm
dWxsX3ZpZXdwb3J0JywgdjogWzAsIDAsIHdpZHRoLCBoZWlnaHRdIH0sIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZTogJ3BhcnRpYWxfdmlld3BvcnQnLCB2OiBbd2lkdGggKiAwLjMgLCBo
ZWlnaHQgKiAwLjIgLCB3aWR0aCAqIDAuNiwgaGVpZ2h0ICogMC41XSB9CisgICAgXTsKKyAgICB2
YXIgcG9pbnRTaXplUmFuZ2UgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9QT0lOVF9TSVpF
X1JBTkdFKTsKKyAgICB2YXIgbGluZVdpZHRoUmFuZ2UgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJ
QVNFRF9MSU5FX1dJRFRIX1JBTkdFKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlld3Bv
cnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB2ID0gdmlld3BvcnRzW2ldLnYubWFwKE1h
dGguZmxvb3IpOworICAgICAgICB2YXIgdk5hbWUgPSB2aWV3cG9ydHNbaV0ubmFtZTsKKyAgICAg
ICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkNsaXBwaW5nVGVzdHMuTGluZXNDYXNlKCduYXJyb3df
bGluZXNfJyArIHZOYW1lLCAnbGluZXMnLCB2LCAxKSk7CisgICAgICAgIGlmIChsaW5lV2lkdGhS
YW5nZVsxXSA+PSBXSURFX0xJTkUpCisgICAgICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNm
Q2xpcHBpbmdUZXN0cy5MaW5lc0Nhc2UoJ3dpZGVfbGluZXNfJyArIHZOYW1lLCAnbGluZXMnLCB2
LCBXSURFX0xJTkUpKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkNsaXBwaW5nVGVz
dHMuUG9pbnRzQ2FzZSgnc21hbGxfcG9pbnRzXycgKyB2TmFtZSwgJ3BvaW50cycsIHYsIDEpKTsK
KyAgICAgICAgaWYgKHBvaW50U2l6ZVJhbmdlWzFdID49IFdJREVfUE9JTlQpCisgICAgICAgICAg
ICB0aGlzLmFkZENoaWxkKG5ldyBlczNmQ2xpcHBpbmdUZXN0cy5Qb2ludHNDYXNlKCd3aWRlX3Bv
aW50c18nICsgdk5hbWUsICdwb2ludHMnLCB2LCBXSURFX1BPSU5UKSk7CisgICAgfQorCisgICAg
dmFyIHJhbmdlc1ggPSBbCisgICAgICAgIFstMS4yLCAxLjJdLAorICAgICAgICBbLTEuMiwgMC44
XSwKKyAgICAgICAgWy0wLjgsIDEuMl0KKyAgICBdOworICAgIHZhciByYW5nZXNZID0gWworICAg
ICAgICBbLTEuMiwgMS4yXSwKKyAgICAgICAgWy0xLjIsIDAuOF0sCisgICAgICAgIFstMC44LCAx
LjJdCisgICAgXTsKKyAgICB2YXIgcmFuZ2VzWiA9IFsKKyAgICAgICAgWy0xLjIsIDEuMl0sCisg
ICAgICAgIFsxLjIsIC0xLjJdCisgICAgXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXdw
b3J0cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdiA9IHZpZXdwb3J0c1tpXS52Lm1hcChN
YXRoLmZsb29yKTsKKyAgICAgICAgdmFyIHZOYW1lID0gdmlld3BvcnRzW2ldLm5hbWU7CisgICAg
ICAgIGZvciAodmFyIHggPSAwOyB4IDwgcmFuZ2VzWC5sZW5ndGg7IHgrKykKKyAgICAgICAgZm9y
ICh2YXIgeSA9IDA7IHkgPCByYW5nZXNZLmxlbmd0aDsgeSsrKQorICAgICAgICBmb3IgKHZhciB6
ID0gMDsgeiA8IHJhbmdlc1oubGVuZ3RoOyB6KyspIHsKKyAgICAgICAgICAgIHZhciByYW5nZVgg
PSByYW5nZXNYW3hdOworICAgICAgICAgICAgdmFyIHJhbmdlWSA9IHJhbmdlc1lbeV07CisgICAg
ICAgICAgICB2YXIgcmFuZ2VaID0gcmFuZ2VzWlt6XTsKKyAgICAgICAgICAgIHZhciBuYW1lID0g
J3RyaWFuZ2xlc18nICsgdmlld3BvcnRzW2ldLm5hbWUgKyAnXycgKworICAgICAgICAgICAgICAg
ICAgICAgICAgJygnICsgcmFuZ2VYWzBdICsgJywnICsgcmFuZ2VZWzBdICsgJywnICsgcmFuZ2Va
WzBdICsgJyktJyArCisgICAgICAgICAgICAgICAgICAgICAgICAnKCcgKyByYW5nZVhbMV0gKyAn
LCcgKyByYW5nZVlbMV0gKyAnLCcgKyByYW5nZVpbMV0gKyAnKSc7CisgICAgICAgICAgICB0aGlz
LmFkZENoaWxkKG5ldyBlczNmQ2xpcHBpbmdUZXN0cy5UcmlhbmdsZUNhc2UobmFtZSwgJ3RyaWFu
Z2xlcycsIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VYLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJhbmdlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
YW5nZVopKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogUnVuIHRlc3QKKyAqIEBw
YXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICovCitlczNmQ2xpcHBpbmdU
ZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wgPSBjb250ZXh0OworICAgIC8v
U2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2Uu
cnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZDbGlwcGluZ1Rlc3RzLkNsaXBwaW5n
VGVzdHMoKSk7CisKKyAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRl
c3Qgc2VyaWVzLgorICAgIHNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5h
bWUoKSk7CisgICAgZGVzY3JpcHRpb24oc3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkp
OworCisgICAgdHJ5IHsKKyAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICB0Y3VUZXN0
Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICB9CisgICAgY2F0Y2ggKGVycikgeworICAgICAgICB0
ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZDbGlwcGluZ1Rlc3RzLnJ1biB0ZXN0cycs
IGZhbHNlKTsKKyAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgIH0K
K307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZEZWZhdWx0VmVydGV4QXR0cmli
dXRlVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NjNiYzRkZWRhNjNhNWQ5MWY0NTI2ZDc4YTlmYWFmZTkwYTkyMzgzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVz
dHMuanMKQEAgLTAsMCArMSw1NDYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1l
bnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAx
NCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkRlZmF1bHRWZXJ0ZXhBdHRy
aWJ1dGVUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdl
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
b3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZkRl
ZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkRlZmF1bHRW
ZXJ0ZXhBdHRyaWJ1dGVUZXN0czsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24u
dGN1VGVzdENhc2U7Cit2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFj
ZTsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgZ2x1
U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKK3ZhciBn
bHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIHRjdUxv
Z0ltYWdlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZTsKKwordmFyIHNldFBhcmVudENs
YXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxkLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gY2hpbGQ7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitlczNmRGVm
YXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZlcnRleEF0dHJpYjFmID0gZnVuY3Rpb24o
KSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhfYXR0cmliXzFmJzsKKyAgICB0aGlzLm5h
bWUgPSAnVmVydGV4QXR0cmliMWYnOworICAgIHRoaXMuc2lnbmVkID0gdHJ1ZTsKKyAgICB0aGlz
LmxvYWQgPSBmdW5jdGlvbihpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0cmli
MWYoaW5kZXgsIHZhbHVlWzBdKTsKKyAgICAgICAgcmV0dXJuIFt2YWx1ZVswXSwgMCwgMCwgMV07
CisgICAgfTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2VzM2ZEZWZhdWx0VmVy
dGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmliMmYgPSBmdW5jdGlvbigpIHsKKyAg
ICB0aGlzLmNhc2VOYW1lID0gJ3ZlcnRleF9hdHRyaWJfMmYnOworICAgIHRoaXMubmFtZSA9ICdW
ZXJ0ZXhBdHRyaWIyZic7CisgICAgdGhpcy5zaWduZWQgPSB0cnVlOworICAgIHRoaXMubG9hZCA9
IGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgeworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdmFsdWVbMF0sIHZhbHVlWzFdKTsKKyAgICAgICAgcmV0dXJuIFt2YWx1ZVswXSwgdmFsdWVb
MV0sIDAsIDFdOworICAgIH07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitlczNm
RGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZlcnRleEF0dHJpYjNmID0gZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhfYXR0cmliXzNmJzsKKyAgICB0aGlz
Lm5hbWUgPSAnVmVydGV4QXR0cmliM2YnOworICAgIHRoaXMuc2lnbmVkID0gdHJ1ZTsKKyAgICB0
aGlzLmxvYWQgPSBmdW5jdGlvbihpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0
cmliM2YoaW5kZXgsIHZhbHVlWzBdLCB2YWx1ZVsxXSwgdmFsdWVbMl0pOworICAgICAgICByZXR1
cm4gW3ZhbHVlWzBdLCB2YWx1ZVsxXSwgdmFsdWVbMl0sIDFdOworICAgIH07Cit9OworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxv
YWRlclZlcnRleEF0dHJpYjRmID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2
ZXJ0ZXhfYXR0cmliXzRmJzsKKyAgICB0aGlzLm5hbWUgPSAnVmVydGV4QXR0cmliNGYnOworICAg
IHRoaXMuc2lnbmVkID0gdHJ1ZTsKKyAgICB0aGlzLmxvYWQgPSBmdW5jdGlvbihpbmRleCwgdmFs
dWUpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliNGYoaW5kZXgsIHZhbHVlWzBdLCB2YWx1ZVsx
XSwgdmFsdWVbMl0sIHZhbHVlWzNdKTsKKyAgICAgICAgcmV0dXJuIFt2YWx1ZVswXSwgdmFsdWVb
MV0sIHZhbHVlWzJdLCB2YWx1ZVszXV07CisgICAgfTsKK307CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKi8KK2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0
cmliMWZ2ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhfYXR0cmli
XzFmdic7CisgICAgdGhpcy5uYW1lID0gJ1ZlcnRleEF0dHJpYjFmdic7CisgICAgdGhpcy5zaWdu
ZWQgPSB0cnVlOworICAgIHRoaXMubG9hZCA9IGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgeworICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIHZhbHVlLnNsaWNlKDAsIDEpKTsKKyAgICAg
ICAgcmV0dXJuIFt2YWx1ZVswXSwgMCwgMCwgMV07CisgICAgfTsKK307CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKi8KK2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVy
dGV4QXR0cmliMmZ2ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhf
YXR0cmliXzJmdic7CisgICAgdGhpcy5uYW1lID0gJ1ZlcnRleEF0dHJpYjJmdic7CisgICAgdGhp
cy5zaWduZWQgPSB0cnVlOworICAgIHRoaXMubG9hZCA9IGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkg
eworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHZhbHVlLnNsaWNlKDAsIDIpKTsK
KyAgICAgICAgcmV0dXJuIFt2YWx1ZVswXSwgdmFsdWVbMV0sIDAsIDFdOworICAgIH07Cit9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRl
c3RzLkxvYWRlclZlcnRleEF0dHJpYjNmdiA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuY2FzZU5h
bWUgPSAndmVydGV4X2F0dHJpYl8zZnYnOworICAgIHRoaXMubmFtZSA9ICdWZXJ0ZXhBdHRyaWIz
ZnYnOworICAgIHRoaXMuc2lnbmVkID0gdHJ1ZTsKKyAgICB0aGlzLmxvYWQgPSBmdW5jdGlvbihp
bmRleCwgdmFsdWUpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliM2Z2KGluZGV4LCB2YWx1ZS5z
bGljZSgwLCAzKSk7CisgICAgICAgIHJldHVybiBbdmFsdWVbMF0sIHZhbHVlWzFdLCB2YWx1ZVsy
XSwgMV07CisgICAgfTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2VzM2ZEZWZh
dWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmliNGZ2ID0gZnVuY3Rpb24o
KSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhfYXR0cmliXzRmdic7CisgICAgdGhpcy5u
YW1lID0gJ1ZlcnRleEF0dHJpYjRmdic7CisgICAgdGhpcy5zaWduZWQgPSB0cnVlOworICAgIHRo
aXMubG9hZCA9IGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgeworICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWI0ZnYoaW5kZXgsIHZhbHVlLnNsaWNlKDAsIDQpKTsKKyAgICAgICAgcmV0dXJuIFt2YWx1ZVsw
XSwgdmFsdWVbMV0sIHZhbHVlWzJdLCB2YWx1ZVszXV07CisgICAgfTsKK307CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKi8KK2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVy
VmVydGV4QXR0cmliSTRpID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0
ZXhfYXR0cmliXzRpJzsKKyAgICB0aGlzLm5hbWUgPSAnVmVydGV4QXR0cmliSTRpJzsKKyAgICB0
aGlzLnNpZ25lZCA9IHRydWU7CisgICAgdGhpcy5sb2FkID0gZnVuY3Rpb24oaW5kZXgsIHZhbHVl
KSB7CisgICAgICAgIHZhciB2ID0gbmV3IEludDMyQXJyYXkodmFsdWUpOworICAgICAgICBnbC52
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHZbMF0sIHZbMV0sIHZbMl0sIHZbM10pOworICAgICAgICBy
ZXR1cm4gW3ZbMF0sIHZbMV0sIHZbMl0sIHZbM11dOworICAgIH07Cit9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICovCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZl
cnRleEF0dHJpYkk0aXYgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmNhc2VOYW1lID0gJ3ZlcnRl
eF9hdHRyaWJfNGl2JzsKKyAgICB0aGlzLm5hbWUgPSAnVmVydGV4QXR0cmliSTRpdic7CisgICAg
dGhpcy5zaWduZWQgPSB0cnVlOworICAgIHRoaXMubG9hZCA9IGZ1bmN0aW9uKGluZGV4LCB2YWx1
ZSkgeworICAgICAgICB2YXIgdiA9IG5ldyBJbnQzMkFycmF5KHZhbHVlKTsKKyAgICAgICAgZ2wu
dmVydGV4QXR0cmliSTRpdihpbmRleCwgdik7CisgICAgICAgIHJldHVybiBbdlswXSwgdlsxXSwg
dlsyXSwgdlszXV07CisgICAgfTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2Vz
M2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmliSTR1aSA9IGZ1
bmN0aW9uKCkgeworICAgIHRoaXMuY2FzZU5hbWUgPSAndmVydGV4X2F0dHJpYl80dWknOworICAg
IHRoaXMubmFtZSA9ICdWZXJ0ZXhBdHRyaWJJNHVpJzsKKyAgICB0aGlzLnNpZ25lZCA9IGZhbHNl
OworICAgIHRoaXMubG9hZCA9IGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgeworICAgICAgICB2YXIg
diA9IG5ldyBVaW50MzJBcnJheSh2YWx1ZSk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYkk0dWko
aW5kZXgsIHZbMF0sIHZbMV0sIHZbMl0sIHZbM10pOworICAgICAgICByZXR1cm4gW3ZbMF0sIHZb
MV0sIHZbMl0sIHZbM11dOworICAgIH07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZlcnRleEF0dHJpYkk0dWl2
ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jYXNlTmFtZSA9ICd2ZXJ0ZXhfYXR0cmliXzR1aXYn
OworICAgIHRoaXMubmFtZSA9ICdWZXJ0ZXhBdHRyaWJJNHVpdic7CisgICAgdGhpcy5zaWduZWQg
PSBmYWxzZTsKKyAgICB0aGlzLmxvYWQgPSBmdW5jdGlvbihpbmRleCwgdmFsdWUpIHsKKyAgICAg
ICAgdmFyIHYgPSBuZXcgVWludDMyQXJyYXkodmFsdWUpOworICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJJNHVpdihpbmRleCwgdik7CisgICAgICAgIHJldHVybiBbdlswXSwgdlsxXSwgdlsyXSwgdlsz
XV07CisgICAgfTsKK307CisKKy8qKiBAY29uc3QgKi8gdmFyIFJFTkRFUl9TSVpFID0gMzI7Cisv
KiogQGNvbnN0ICovIHZhciBzX3ZhbHVlUmFuZ2UgPSAxMDsKKy8qKiBAY29uc3QgKi8gdmFyIHNf
cGFzc1Rocm91Z2hGcmFnbWVudFNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lu
IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tcbicg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGZyYWdDb2xvciA9IHZfY29sb3I7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbic7CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgKi8KK2VzM2ZEZWZhdWx0
VmVydGV4QXR0cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZSA9IGZ1bmN0aW9uKGxvYWRlclR5cGUs
IGRhdGFUeXBlKSB7CisgICAgdmFyIGxvYWRlciA9IG5ldyBsb2FkZXJUeXBlKCk7CisgICAgdmFy
IG5hbWUgPSBsb2FkZXIuY2FzZU5hbWU7CisgICAgdmFyIGRlc2NyaXB0aW9uID0gJ1Rlc3QgJyAr
IGxvYWRlci5uYW1lOworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24pOworICAgIHRoaXMubV9mdW5jTmFtZSA9IGxvYWRlci5uYW1lOworICAgIHRo
aXMubV91c2VOZWdhdGl2ZVZhbHVlcyA9IGxvYWRlci5zaWduZWQ7CisgICAgdGhpcy5tX2RhdGFU
eXBlID0gZGF0YVR5cGU7CisgICAgdGhpcy5tX2FsbEl0ZXJhdGlvbnNQYXNzZWQgPSB0cnVlOwor
ICAgIHRoaXMubV9sb2FkZXIgPSBsb2FkZXI7CisgICAgdGhpcy5tX2l0ZXJhdGlvbiA9IDA7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkF0dHJp
YnV0ZUNhc2UsIHRjdVRlc3RDYXNlLkRlcXBUZXN0KTsKKworZXMzZkRlZmF1bHRWZXJ0ZXhBdHRy
aWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgLy8gbG9nIHRlc3QgaW5mbworCisgICAgdmFyIG1heFJhbmdlID0gc192YWx1ZVJhbmdlOwor
ICAgIHZhciBtaW5SYW5nZSA9ICh0aGlzLm1fdXNlTmVnYXRpdmVWYWx1ZXMpID8gKC1tYXhSYW5n
ZSkgOiAoMC4wKTsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKAorICAgICAgICAnTG9hZGlu
ZyBhdHRyaWJ1dGUgdmFsdWVzIHVzaW5nICcgKyB0aGlzLm1fZnVuY05hbWUgKyAnXG4nICsKKyAg
ICAgICAgJ0F0dHJpYnV0ZSB0eXBlOiAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUo
dGhpcy5tX2RhdGFUeXBlKSArICdcbicgKworICAgICAgICAnQXR0cmlidXRlIHZhbHVlIHJhbmdl
OiBbJyArIG1pblJhbmdlICsgJywgJyArIG1heFJhbmdlICsgJ10nKTsKKworICAgIC8vIGdlbiBz
aGFkZXIgYW5kIGJhc2UgcXVhZAorCisgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291
cmNlcyh0aGlzLmdlblZlcnRleFNvdXJjZSgpLCBzX3Bhc3NUaHJvdWdoRnJhZ21lbnRTaGFkZXJT
b3VyY2UpKTsKKyAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkKKyAgICAgICAgdGVzdEZh
aWxlZE9wdGlvbnMoJ2NvdWxkIG5vdCBidWlsZCBwcm9ncmFtJywgdHJ1ZSk7CisKKyAgICB2YXIg
ZnVsbHNjcmVlblF1YWQgPSBbCisgICAgICAgICAxLjAsIDEuMCwgMC4wLCAxLjAsCisgICAgICAg
ICAxLjAsIC0xLjAsIDAuMCwgMS4wLAorICAgICAgICAtMS4wLCAxLjAsIDAuMCwgMS4wLAorICAg
ICAgICAtMS4wLCAtMS4wLCAwLjAsIDEuMAorICAgIF07CisKKyAgICB0aGlzLm1fYnVmSUQgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhp
cy5tX2J1ZklEKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0
MzJBcnJheShmdWxsc2NyZWVuUXVhZCksIGdsLlNUQVRJQ19EUkFXKTsKK307CisKK2VzM2ZEZWZh
dWx0VmVydGV4QXR0cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0g
ZnVuY3Rpb24oKSB7CisgICAgdGhpcy5tX2xvYWRlciA9IG51bGw7CisKKyAgICBnbC51c2VQcm9n
cmFtKG51bGwpOworICAgIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKworICAgIGlmICh0aGlzLm1f
YnVmSUQpIHsKKyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKHRoaXMubV9idWZJRCk7CisgICAgICAg
IHRoaXMubV9idWZJRCA9IG51bGw7CisgICAgfQorfTsKKworZXMzZkRlZmF1bHRWZXJ0ZXhBdHRy
aWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHRlc3RWYWx1ZXMgPSBbCisgICAgICAgIFswLjAsIDAuNSwgMC4yLCAxLjBdLAor
ICAgICAgICBbMC4xLCAwLjcsIDEuMCwgMC42XSwKKyAgICAgICAgWzAuNCwgMC4yLCAwLjAsIDAu
NV0sCisgICAgICAgIFswLjUsIDAuMCwgMC45LCAwLjFdLAorICAgICAgICBbMC42LCAwLjIsIDAu
MiwgMC45XSwKKyAgICAgICAgWzAuOSwgMS4wLCAwLjAsIDAuMF0sCisgICAgICAgIFsxLjAsIDAu
NSwgMC4zLCAwLjhdCisgICAgXTsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJdGVyYXRp
b24gJyArICh0aGlzLm1faXRlcmF0aW9uICsgMSkgKyAnLycgKyB0ZXN0VmFsdWVzLmxlbmd0aCk7
CisKKyAgICB2YXIgdGVzdFZhbHVlID0gdGhpcy5tX3VzZU5lZ2F0aXZlVmFsdWVzID8KKyAgICAg
ICAgZGVNYXRoLnN1YlNjYWxhcihkZU1hdGguc2NhbGUodGVzdFZhbHVlc1t0aGlzLm1faXRlcmF0
aW9uXSwgMiksIDEpIDoKKyAgICAgICAgZGVNYXRoLnNjYWxlKHRlc3RWYWx1ZXNbdGhpcy5tX2l0
ZXJhdGlvbl0sIHNfdmFsdWVSYW5nZSk7CisKKyAgICBpZiAoIXRoaXMucmVuZGVyV2l0aFZhbHVl
KHRlc3RWYWx1ZSkpCisgICAgICAgIHRoaXMubV9hbGxJdGVyYXRpb25zUGFzc2VkID0gZmFsc2U7
CisKKyAgICAvLyBjb250aW51ZQorCisgICAgaWYgKCsrdGhpcy5tX2l0ZXJhdGlvbiA8IHRlc3RW
YWx1ZXMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5D
T05USU5VRTsKKworICAgIGlmICh0aGlzLm1fYWxsSXRlcmF0aW9uc1Bhc3NlZCkKKyAgICAgICAg
dGVzdFBhc3NlZCgpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0
ZWQgdmFsdWVzJyk7CisKKyAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9Q
OworfTsKKworZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlLnBy
b3RvdHlwZS5nZW5WZXJ0ZXhTb3VyY2UgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdmVjdG9yU2l6
ZSA9IChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodGhpcy5tX2RhdGFUeXBlKSkgPyAo
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bVJvd3ModGhpcy5tX2RhdGFUeXBlKSkg
OiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKHRoaXMubV9kYXRhVHlwZSkpID8gKGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHRoaXMubV9kYXRhVHlwZSkpIDogKC0x
KTsKKyAgICB2YXIgdmVjdG9yVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKChn
bHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodGhpcy5tX2RhdGFUeXBlKSkgPyAoZ2x1U2hh
ZGVyVXRpbC5nZXREYXRhVHlwZVZlY3RvcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULCB2
ZWN0b3JTaXplKSkgOiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKHRoaXMubV9kYXRh
VHlwZSkpID8gKGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IoZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVCwgdmVjdG9yU2l6ZSkpIDogKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVQpKTsKKyAgICB2YXIgY29tcG9uZW50cyA9IChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRy
aXgodGhpcy5tX2RhdGFUeXBlKSkgPyAoZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51
bVJvd3ModGhpcy5tX2RhdGFUeXBlKSkgOiAoZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxh
clNpemUodGhpcy5tX2RhdGFUeXBlKSk7CisKKyAgICB2YXIgYnVmID0gJyN2ZXJzaW9uIDMwMCBl
c1xuJyArCisgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisgICAg
ICAgICAgICAnaW4gaGlnaHAgJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHRoaXMu
bV9kYXRhVHlwZSkgKyAnIGFfdmFsdWU7XG4nICsKKyAgICAgICAgICAgICdvdXQgaGlnaHAgdmVj
NCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAg
ICAgICAgICAne1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtc
bicgKworICAgICAgICAgICAgJ1xuJzsKKworICAgIGJ1ZiArPSAnIGhpZ2hwICcgKyB2ZWN0b3JU
eXBlICsgJyBub3JtYWxpemVkVmFsdWUgPSAnICsgKChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
U2NhbGFyVHlwZSh0aGlzLm1fZGF0YVR5cGUpID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVQpID8gKCcnKSA6ICh2ZWN0b3JUeXBlKSkgKyAnKGFfdmFsdWUnICsgKChnbHVTaGFkZXJVdGls
LmlzRGF0YVR5cGVNYXRyaXgodGhpcy5tX2RhdGFUeXBlKSkgPyAoJ1sxXScpIDogKCcnKSkgKyAn
KSAvIGZsb2F0KCcgKyBzX3ZhbHVlUmFuZ2UgKyAnKTtcbic7CisKKyAgICBpZiAodGhpcy5tX3Vz
ZU5lZ2F0aXZlVmFsdWVzKQorICAgICAgICBidWYgKz0gJyBoaWdocCAnICsgdmVjdG9yVHlwZSAr
ICcgcG9zaXRpdmVOb3JtYWxpemVkVmFsdWUgPSAobm9ybWFsaXplZFZhbHVlICsgJyArIHZlY3Rv
clR5cGUgKyAnKDEuMCkpIC8gMi4wO1xuJzsKKyAgICBlbHNlCisgICAgICAgIGJ1ZiArPSAnIGhp
Z2hwICcgKyB2ZWN0b3JUeXBlICsgJyBwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZSA9IG5vcm1hbGl6
ZWRWYWx1ZTtcbic7CisKKyAgICBpZiAoY29tcG9uZW50cyA9PSAxKQorICAgICAgICBidWYgKz0g
JyB2X2NvbG9yID0gdmVjNChwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZSwgMC4wLCAwLjAsIDEuMCk7
XG4nOworICAgIGVsc2UgaWYgKGNvbXBvbmVudHMgPT0gMikKKyAgICAgICAgYnVmICs9ICcgdl9j
b2xvciA9IHZlYzQocG9zaXRpdmVOb3JtYWxpemVkVmFsdWUueHksIDAuMCwgMS4wKTtcbic7Cisg
ICAgZWxzZSBpZiAoY29tcG9uZW50cyA9PSAzKQorICAgICAgICBidWYgKz0gJyB2X2NvbG9yID0g
dmVjNChwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZS54eXosIDEuMCk7XG4nOworICAgIGVsc2UgaWYg
KGNvbXBvbmVudHMgPT0gNCkKKyAgICAgICAgYnVmICs9ICcgdl9jb2xvciA9IHZlYzQoKHBvc2l0
aXZlTm9ybWFsaXplZFZhbHVlLnh5ICsgcG9zaXRpdmVOb3JtYWxpemVkVmFsdWUuenopIC8gMi4w
LCBwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZS53LCAxLjApO1xuJzsKKyAgICBlbHNlCisgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdXcm9uZyBjb21wb25lbnQgc2l6ZTogJyArIGNvbXBvbmVudHMpOwor
CisgICAgYnVmICs9ICd9XG4nOworCisgICAgcmV0dXJuIGJ1ZjsKK307CisKK2VzM2ZEZWZhdWx0
VmVydGV4QXR0cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZS5wcm90b3R5cGUucmVuZGVyV2l0aFZh
bHVlID0gZnVuY3Rpb24odikgeworICAgIHZhciBwb3NpdGlvbkluZGV4ID0gZ2wuZ2V0QXR0cmli
TG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9wb3NpdGlvbicpOworICAg
IHZhciB2YWx1ZUluZGV4ID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0
UHJvZ3JhbSgpLCAnYV92YWx1ZScpOworICAgIHZhciBkZXN0ID0gbmV3IHRjdVN1cmZhY2UuU3Vy
ZmFjZShSRU5ERVJfU0laRSwgUkVOREVSX1NJWkUpOworCisgICAgZ2wuY2xlYXJDb2xvcigwLjAs
IDAuMCwgMC4wLCAwLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IGdsLnZpZXdwb3J0KDAsIDAsIFJFTkRFUl9TSVpFLCBSRU5ERVJfU0laRSk7CisKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy5tX2J1ZklEKTsKKyAgICBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKHBvc2l0aW9uSW5kZXgsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Cisg
ICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25JbmRleCk7CisKKyAgICAvLyB0
cmFuc2ZlciB0ZXN0IHZhbHVlLiBMb2FkIHRvIHRoZSBzZWNvbmQgY29sdW1uIGluIHRoZSBtYXRy
aXggY2FzZQorICAgIHZhciBsb2FkZWRWYWx1ZSA9IHRoaXMubV9sb2FkZXIubG9hZCgoZ2x1U2hh
ZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHRoaXMubV9kYXRhVHlwZSkpID8gKHZhbHVlSW5kZXgg
KyAxKSA6ICh2YWx1ZUluZGV4KSwgdik7CisKKyAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9n
cmFtLmdldFByb2dyYW0oKSk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwg
MCwgNCk7CisgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAvLyBUaGUgb3JpZ2luYWwgYysr
IHRlc3QgZG9lcyBub3QgZGlzYWJsZSB2ZXJ0ZXggYXR0cmliIGFycmF5LCB3aGljaCBpcyB3cm9u
Zy4KKyAgICAvLyBPbiBtb3N0IGRyaXZlcnMgYWxsIHRlc3RzIHBhc3MgYmVjYXVzZSBhX3Bvc2l0
aW9uIGlzIGFzc2lnbmVkIGxvY2F0aW9uIDAuCisgICAgLy8gT24gTWFjT1NYIHNvbWUgdGVzdHMg
ZmFpbCBiZWNhdXNlIGFfdmFsdWUgaXMgYXNzaWduZWQgbG9jYXRpb24gMCBhbmQgdmVydGV4Cisg
ICAgLy8gYXR0cmliIGFycmF5IGlzIGxlZnQgZW5hYmxlZCBhbmQgYWZmZWN0cyBsYXRlciB0ZXN0
cy4KKyAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25JbmRleCk7CisgICAg
ZGVzdC5yZWFkVmlld3BvcnQoZ2wpOworCisgICAgLy8gY2hlY2sgd2hvbGUgcmVzdWx0IGlzIGNv
bG9yZWQgY29ycmVjdGx5CisgICAgcmV0dXJuIHRoaXMudmVyaWZ5VW5pY29sb3JlZEJ1ZmZlcihk
ZXN0LCB0aGlzLmNvbXB1dGVDb2xvcihsb2FkZWRWYWx1ZSkpOworfTsKKworZXMzZkRlZmF1bHRW
ZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlLnByb3RvdHlwZS5jb21wdXRlQ29sb3Ig
PSBmdW5jdGlvbih2YWx1ZSkgeworICAgIHZhciBub3JtYWxpemVkVmFsdWUgPSBkZU1hdGguc2Nh
bGUodmFsdWUsIDEgLyBzX3ZhbHVlUmFuZ2UpOworICAgIHZhciBwb3NpdGl2ZU5vcm1hbGl6ZWRW
YWx1ZSA9IHRoaXMubV91c2VOZWdhdGl2ZVZhbHVlcyA/CisgICAgICAgIGRlTWF0aC5zY2FsZShk
ZU1hdGguYWRkU2NhbGFyKG5vcm1hbGl6ZWRWYWx1ZSwgMSksIDAuNSkgOgorICAgICAgICBub3Jt
YWxpemVkVmFsdWU7CisgICAgdmFyIGNvbXBvbmVudHMgPSAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlTWF0cml4KHRoaXMubV9kYXRhVHlwZSkpID8gKGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVN
YXRyaXhOdW1Sb3dzKHRoaXMubV9kYXRhVHlwZSkpIDogKGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVTY2FsYXJTaXplKHRoaXMubV9kYXRhVHlwZSkpOworCisgICAgaWYgKGNvbXBvbmVudHMgPT0g
MSkKKyAgICAgICAgcmV0dXJuIFtwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZVswXSwgMC4wLCAwLjAs
IDEuMF07CisgICAgZWxzZSBpZiAoY29tcG9uZW50cyA9PSAyKQorICAgICAgICByZXR1cm4gW3Bv
c2l0aXZlTm9ybWFsaXplZFZhbHVlWzBdLCBwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZVsxXSwgMC4w
LCAxLjBdOworICAgIGVsc2UgaWYgKGNvbXBvbmVudHMgPT0gMykKKyAgICAgICAgcmV0dXJuIFtw
b3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZVswXSwgcG9zaXRpdmVOb3JtYWxpemVkVmFsdWVbMV0sIHBv
c2l0aXZlTm9ybWFsaXplZFZhbHVlWzJdLCAxLjBdOworICAgIGVsc2UgaWYgKGNvbXBvbmVudHMg
PT0gNCkKKyAgICAgICAgcmV0dXJuIFsocG9zaXRpdmVOb3JtYWxpemVkVmFsdWVbMF0gKyBwb3Np
dGl2ZU5vcm1hbGl6ZWRWYWx1ZVsyXSkgLyAyLjAsIChwb3NpdGl2ZU5vcm1hbGl6ZWRWYWx1ZVsx
XSArIHBvc2l0aXZlTm9ybWFsaXplZFZhbHVlWzJdKSAvIDIuMCwgcG9zaXRpdmVOb3JtYWxpemVk
VmFsdWVbM10sIDEuMF07CisgICAgZWxzZQorICAgICAgIHRocm93IG5ldyBFcnJvcignV3Jvbmcg
Y29tcG9uZW50IHNpemU6ICcgKyBjb21wb25lbnRzKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0
Y3VTdXJmYWNlLlN1cmZhY2V9IHNjZW5lCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJlZkNv
bG9yCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0
ZVRlc3RzLkF0dHJpYnV0ZUNhc2UucHJvdG90eXBlLnZlcmlmeVVuaWNvbG9yZWRCdWZmZXIgPSBm
dW5jdGlvbihzY2VuZSwgcmVmQ29sb3IpIHsKKyAgICB2YXIgYWNjZXNzID0gc2NlbmUuZ2V0QWNj
ZXNzKCk7CisgICAgdmFyIGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoUkVOREVS
X1NJWkUsIFJFTkRFUl9TSVpFKTsKKyAgICB2YXIgY29sb3JUaHJlc2hvbGQgPSBbNiwgNiwgNiwg
Nl07CisgICAgdmFyIGVycm9yID0gZmFsc2U7CisKKyAgICBlcnJvck1hc2suZ2V0QWNjZXNzKCku
Y2xlYXIoWzAsIDEsIDAsIDFdKTsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdWZXJpZnlp
bmcgcmVuZGVyZWQgaW1hZ2UuIEV4cGVjdGluZyBjb2xvciAnICsgcmVmQ29sb3IgKyAnLCB0aHJl
c2hvbGQgJyArIGNvbG9yVGhyZXNob2xkKTsKKworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgUkVO
REVSX1NJWkU7ICsreSkKKyAgICBmb3IgKHZhciB4ID0gMDsgeCA8IFJFTkRFUl9TSVpFOyArK3gp
IHsKKyAgICAgICAgdmFyIGNvbG9yID0gYWNjZXNzLmdldFBpeGVsKHgsIHkpOworCisgICAgICAg
IGlmIChNYXRoLmFicyhjb2xvclswXSAtIHJlZkNvbG9yWzBdKSA+IGNvbG9yVGhyZXNob2xkWzBd
IHx8CisgICAgICAgICAgICBNYXRoLmFicyhjb2xvclsxXSAtIHJlZkNvbG9yWzFdKSA+IGNvbG9y
VGhyZXNob2xkWzFdIHx8CisgICAgICAgICAgICBNYXRoLmFicyhjb2xvclsyXSAtIHJlZkNvbG9y
WzJdKSA+IGNvbG9yVGhyZXNob2xkWzJdKSB7CisKKyAgICAgICAgICAgIC8vIGZpcnN0IGVycm9y
CisgICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAgIGRlYnVnKCdGb3VuZCBp
bnZhbGlkIHBpeGVsKHMpLiBQaXhlbCBhdCAoJyArIHggKyAnLCAnICsgeSArICcpIGNvbG9yOiAn
ICsgY29sb3IpOworCisgICAgICAgICAgICBlcnJvciA9IHRydWU7CisgICAgICAgICAgICBlcnJv
ck1hc2suc2V0UGl4ZWwoeCwgeSwgWzEsIDAsIDAsIDFdKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmICghZXJyb3IpCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZW5kZXJlZCBp
bWFnZSBpcyB2YWxpZC4nKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1h
Z2UoJ1Jlc3VsdCcsICcnLCBhY2Nlc3MpOworICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgn
RXJyb3IgbWFzaycsICcnLCBlcnJvck1hc2suZ2V0QWNjZXNzKCkpOworICAgIH0KKworICAgIHJl
dHVybiAhZXJyb3I7Cit9OworCisvKioKKyogQGNvbnN0cnVjdG9yCisqIEBleHRlbmRzIHt0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdH0KKyovCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkRl
ZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIHRjdVRlc3RDYXNl
LkRlcXBUZXN0LmNhbGwodGhpcywgJ2RlZmF1bHRfdmVydGV4X2F0dHJpYicsICdUZXN0IGRlZmF1
bHQgdmVydGV4IGF0dHJpYnV0ZXMnKTsKK307CisKK2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRl
VGVzdHMuRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKK2VzM2ZEZWZhdWx0VmVydGV4QXR0
cmlidXRlVGVzdHMuRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuRGVmYXVsdFZlcnRleEF0dHJp
YnV0ZVRlc3RzOworCitlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkRlZmF1bHRWZXJ0
ZXhBdHRyaWJ1dGVUZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0
ZXN0cyA9IHRoaXM7CisgICAgdmFyIGZsb2F0VGFyZ2V0cyA9IFsKKyAgICAgICAgWydmbG9hdCcs
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQsIGZhbHNlXSwKKyAgICAgICAgWyd2ZWMyJywg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLCB0cnVlXSwKKyAgICAgICAgWyd2ZWMz
JywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzLCB0cnVlXSwKKyAgICAgICAgWyd2
ZWM0JywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0LCBmYWxzZV0sCisgICAgICAg
IFsnbWF0MicsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMiwgdHJ1ZV0sCisgICAg
ICAgIFsnbWF0MngzJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDMsIHRydWVd
LAorICAgICAgICBbJ21hdDJ4NCcsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0
LCB0cnVlXSwKKyAgICAgICAgWydtYXQzJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQzLCB0cnVlXSwKKyAgICAgICAgWydtYXQzeDInLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDNYMiwgdHJ1ZV0sCisgICAgICAgIFsnbWF0M3g0JywgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9NQVQzWDQsIHRydWVdLAorICAgICAgICBbJ21hdDQnLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDQsIGZhbHNlXSwKKyAgICAgICAgWydtYXQ0eDInLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMiwgdHJ1ZV0sCisgICAgICAgIFsnbWF0NHgzJywg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDMsIHRydWVdCisgICAgXTsKKworICAg
IGZsb2F0VGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW0pIHsKKyAgICAgICAgdmFyIG5hbWUg
PSBlbGVtWzBdOworICAgICAgICB2YXIgZGF0YVR5cGUgPSBlbGVtWzFdOworICAgICAgICB2YXIg
cmVkdWNlZCA9IGVsZW1bMl07CisgICAgICAgIHZhciBncm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdChuYW1lLCAndGVzdCB3aXRoICcgKyBuYW1lKTsKKyAgICAgICAgdGVzdHMuYWRkQ2hp
bGQoZ3JvdXApOworICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZkRlZmF1bHRWZXJ0ZXhB
dHRyaWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlKGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVz
dHMuTG9hZGVyVmVydGV4QXR0cmliMWYsIGRhdGFUeXBlKSk7CisgICAgICAgIGlmICghcmVkdWNl
ZCkgeworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZEZWZhdWx0VmVydGV4QXR0
cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZShlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3Rz
LkxvYWRlclZlcnRleEF0dHJpYjJmLCBkYXRhVHlwZSkpOworICAgICAgICAgICAgZ3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZShl
czNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZlcnRleEF0dHJpYjNmLCBkYXRh
VHlwZSkpOworICAgICAgICB9CisgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmRGVmYXVs
dFZlcnRleEF0dHJpYnV0ZVRlc3RzLkF0dHJpYnV0ZUNhc2UoZXMzZkRlZmF1bHRWZXJ0ZXhBdHRy
aWJ1dGVUZXN0cy5Mb2FkZXJWZXJ0ZXhBdHRyaWI0ZiwgZGF0YVR5cGUpKTsKKworICAgICAgICBn
cm91cC5hZGRDaGlsZChuZXcgZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5BdHRyaWJ1
dGVDYXNlKGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmli
MWZ2LCBkYXRhVHlwZSkpOworICAgICAgICBpZiAoIXJlZHVjZWQpIHsKKyAgICAgICAgICAgIGdy
b3VwLmFkZENoaWxkKG5ldyBlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkF0dHJpYnV0
ZUNhc2UoZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5Mb2FkZXJWZXJ0ZXhBdHRyaWIy
ZnYsIGRhdGFUeXBlKSk7CisgICAgICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZkRlZmF1
bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlKGVzM2ZEZWZhdWx0VmVydGV4QXR0
cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmliM2Z2LCBkYXRhVHlwZSkpOworICAgICAgICB9
CisgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRl
c3RzLkF0dHJpYnV0ZUNhc2UoZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5Mb2FkZXJW
ZXJ0ZXhBdHRyaWI0ZnYsIGRhdGFUeXBlKSk7CisKKyAgICB9KTsKKworICAgIHZhciBpbnRUYXJn
ZXRzID0gWworICAgICAgICBbJ2ludCcsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULCBmYWxz
ZV0sCisgICAgICAgIFsnaXZlYzInLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLCB0
cnVlXSwKKyAgICAgICAgWydpdmVjMycsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMs
IHRydWVdLAorICAgICAgICBbJ2l2ZWM0JywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVD
NCwgZmFsc2VdCisgICAgXTsKKworICAgaW50VGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW0p
IHsKKyAgICAgICAgdmFyIG5hbWUgPSBlbGVtWzBdOworICAgICAgICB2YXIgZGF0YVR5cGUgPSBl
bGVtWzFdOworICAgICAgICB2YXIgcmVkdWNlZCA9IGVsZW1bMl07CisgICAgICAgIHZhciBncm91
cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdChuYW1lLCAndGVzdCB3aXRoICcgKyBuYW1lKTsK
KyAgICAgICAgdGVzdHMuYWRkQ2hpbGQoZ3JvdXApOworICAgICAgICBncm91cC5hZGRDaGlsZChu
ZXcgZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5BdHRyaWJ1dGVDYXNlKGVzM2ZEZWZh
dWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVyVmVydGV4QXR0cmliSTRpLCBkYXRhVHlwZSkp
OworICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVU
ZXN0cy5BdHRyaWJ1dGVDYXNlKGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuTG9hZGVy
VmVydGV4QXR0cmliSTRpdiwgZGF0YVR5cGUpKTsKKyAgICB9KTsKKworICAgIHZhciB1aW50VGFy
Z2V0cyA9IFsKKyAgICAgICAgWyd1aW50JywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBm
YWxzZV0sCisgICAgICAgIFsndXZlYzInLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVD
MiwgdHJ1ZV0sCisgICAgICAgIFsndXZlYzMnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRf
VkVDMywgdHJ1ZV0sCisgICAgICAgIFsndXZlYzQnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlRfVkVDNCwgZmFsc2VdCisgICAgXTsKKworICAgdWludFRhcmdldHMuZm9yRWFjaChmdW5jdGlv
bihlbGVtKSB7CisgICAgICAgIHZhciBuYW1lID0gZWxlbVswXTsKKyAgICAgICAgdmFyIGRhdGFU
eXBlID0gZWxlbVsxXTsKKyAgICAgICAgdmFyIHJlZHVjZWQgPSBlbGVtWzJdOworICAgICAgICB2
YXIgZ3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QobmFtZSwgJ3Rlc3Qgd2l0aCAnICsg
bmFtZSk7CisgICAgICAgIHRlc3RzLmFkZENoaWxkKGdyb3VwKTsKKyAgICAgICAgZ3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuQXR0cmlidXRlQ2FzZShl
czNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkxvYWRlclZlcnRleEF0dHJpYkk0dWksIGRh
dGFUeXBlKSk7CisgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmRGVmYXVsdFZlcnRleEF0
dHJpYnV0ZVRlc3RzLkF0dHJpYnV0ZUNhc2UoZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0
cy5Mb2FkZXJWZXJ0ZXhBdHRyaWJJNHVpdiwgZGF0YVR5cGUpKTsKKyAgICB9KTsKKworfTsKKwor
LyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4
dAorKi8KK2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMucnVuID0gZnVuY3Rpb24oY29u
dGV4dCkgeworICAgIGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1l
dGVycworICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBzdGF0ZS5zZXRS
b290KG5ldyBlczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLkRlZmF1bHRWZXJ0ZXhBdHRy
aWJ1dGVUZXN0cygpKTsKKworICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRo
aXMgdGVzdCBzZXJpZXMuCisgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5m
dWxsTmFtZSgpKTsKKyAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRp
b24oKSk7CisKKyAgICB0cnkgeworICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRj
dVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgIH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAg
ICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1
dGVUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50
ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
RHJhd1Rlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZEcmF3VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY0
MmFjODE5M2VlMGU2NzJmYzRlMGQzNjUyZDZhYjdkNDE2OTAyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmRHJhd1Rlc3RzLmpzCkBAIC0wLDAgKzEsMTE1NSBAQAorLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGls
aXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmRHJhd1Rlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TG9n
SW1hZ2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFz
ZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5k
b20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Blbmds
LmdsdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBl
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJH
TENvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVu
Y2Uuc2dsclNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyRnJhZ21lbnRPcGVyYXRpb25zJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5yZWZlcmVuY2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3InKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldCcpOworZ29v
Zy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNEcmF3VGVzdHMnKTsKKworZ29vZy5zY29wZShm
dW5jdGlvbigpIHsKKworICAgIHZhciBlczNmRHJhd1Rlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5l
czNmRHJhd1Rlc3RzOworICAgIHZhciBnbHVEcmF3VXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
RHJhd1V0aWw7CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNo
YWRlclV0aWw7CisgICAgdmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclByb2dyYW07CisgICAgdmFyIGdsdVRleHR1cmUgPSBmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmU7CisgICAgdmFyIGdsdVZhclR5cGUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5
cGU7CisgICAgdmFyIHRjdUxvZ0ltYWdlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZTsK
KyAgICB2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKKyAgICB2YXIgdGN1
VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciB0Y3VTdXJm
YWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOworICAgIHZhciB0Y3VUZXh0dXJlID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVTdHJpbmc7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVSYW5kb207CisgICAgdmFyIGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlVXRpbDsKKyAgICB2YXIgZ2xzRHJhd1Rlc3RzID0gbW9kdWxlcy5zaGFyZWQuZ2xzRHJhd1Rl
c3RzOworICAgIHZhciBzZ2xyU2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxl
cmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFtOworICAgIHZhciBzZ2xyR0xDb250ZXh0ID0gZnJh
bWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29udGV4dDsKKyAgICB2YXIgcnJG
cmFnbWVudE9wZXJhdGlvbnMgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVu
dE9wZXJhdGlvbnM7CisgICAgdmFyIHJyR2VuZXJpY1ZlY3RvciA9IGZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yckdlbmVyaWNWZWN0b3I7CisgICAgdmFyIHJyU2hhZGluZ0NvbnRleHQgPSBm
cmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dDsKKyAgICB2YXIgcnJW
ZXJ0ZXhBdHRyaWIgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWI7
CisgICAgdmFyIHJyVmVydGV4UGFja2V0ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
VmVydGV4UGFja2V0OworCisgICAgLyoqIEB0eXBlIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSov
IHZhciBnbDsKKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZXMzZkRyYXdU
ZXN0cy5UZXN0SXRlcmF0aW9uVHlwZSA9IHsKKyAgICAgICAgRFJBV19DT1VOVDogMCwgLy8gITwg
dGVzdCB3aXRoIDIsIDYsIGFuZCAyNiBwcmltaXRpdmVzCisgICAgICAgIElOU1RBTkNFX0NPVU5U
OiAxLCAvLyAhPCB0ZXN0IHdpdGggMiwgNCwgYW5kIDEyIGluc3RhbmNlcworICAgICAgICBJTkRF
WF9SQU5HRTogMgorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0
cy5EcmF3VGVzdH0gdGVzdAorICAgICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Y30gYmFzZVNwZWMKKyAgICAgKiBAcGFyYW0gez9lczNmRHJhd1Rlc3RzLlRlc3RJdGVyYXRpb25U
eXBlfSB0eXBlCisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5hZGRUZXN0SXRlcmF0aW9ucyA9
IGZ1bmN0aW9uKHRlc3QsIGJhc2VTcGVjLCB0eXBlKSB7CisgICAgICAgIHZhciBzcGVjID0gLyoq
IEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjfSAqLyAoZGVVdGlsLmNsb25lKGJhc2VT
cGVjKSk7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gZXMzZkRyYXdUZXN0cy5UZXN0SXRlcmF0aW9u
VHlwZS5EUkFXX0NPVU5UKSB7CisgICAgICAgICAgICBzcGVjLnByaW1pdGl2ZUNvdW50ID0gMTsK
KyAgICAgICAgICAgIHRlc3QuYWRkSXRlcmF0aW9uKHNwZWMsICdkcmF3IGNvdW50ID0gJyArIHNw
ZWMucHJpbWl0aXZlQ291bnQpOworCisgICAgICAgICAgICBzcGVjLnByaW1pdGl2ZUNvdW50ID0g
NTsKKyAgICAgICAgICAgIHRlc3QuYWRkSXRlcmF0aW9uKHNwZWMsICdkcmF3IGNvdW50ID0gJyAr
IHNwZWMucHJpbWl0aXZlQ291bnQpOworCisgICAgICAgICAgICBzcGVjLnByaW1pdGl2ZUNvdW50
ID0gMjU7CisgICAgICAgICAgICB0ZXN0LmFkZEl0ZXJhdGlvbihzcGVjLCAnZHJhdyBjb3VudCA9
ICcgKyBzcGVjLnByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IGVz
M2ZEcmF3VGVzdHMuVGVzdEl0ZXJhdGlvblR5cGUuSU5TVEFOQ0VfQ09VTlQpIHsKKyAgICAgICAg
ICAgIHNwZWMuaW5zdGFuY2VDb3VudCA9IDE7CisgICAgICAgICAgICB0ZXN0LmFkZEl0ZXJhdGlv
bihzcGVjLCAnaW5zdGFuY2UgY291bnQgPSAnICsgc3BlYy5pbnN0YW5jZUNvdW50KTsKKworICAg
ICAgICAgICAgc3BlYy5pbnN0YW5jZUNvdW50ID0gNDsKKyAgICAgICAgICAgIHRlc3QuYWRkSXRl
cmF0aW9uKHNwZWMsICdpbnN0YW5jZSBjb3VudCA9ICcgKyBzcGVjLmluc3RhbmNlQ291bnQpOwor
CisgICAgICAgICAgICBzcGVjLmluc3RhbmNlQ291bnQgPSAxMTsKKyAgICAgICAgICAgIHRlc3Qu
YWRkSXRlcmF0aW9uKHNwZWMsICdpbnN0YW5jZSBjb3VudCA9ICcgKyBzcGVjLmluc3RhbmNlQ291
bnQpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZXMzZkRyYXdUZXN0cy5UZXN0SXRlcmF0
aW9uVHlwZS5JTkRFWF9SQU5HRSkgeworICAgICAgICAgICAgc3BlYy5pbmRleE1pbiA9IDA7Cisg
ICAgICAgICAgICBzcGVjLmluZGV4TWF4ID0gMjM7CisgICAgICAgICAgICB0ZXN0LmFkZEl0ZXJh
dGlvbihzcGVjLCAnaW5kZXggcmFuZ2UgPSBbJyArIHNwZWMuaW5kZXhNaW4gKyAnLCAnICsgc3Bl
Yy5pbmRleE1heCArICddJyk7CisKKyAgICAgICAgICAgIHNwZWMuaW5kZXhNaW4gPSAyMzsKKyAg
ICAgICAgICAgIHNwZWMuaW5kZXhNYXggPSA0MDsKKyAgICAgICAgICAgIHRlc3QuYWRkSXRlcmF0
aW9uKHNwZWMsICdpbmRleCByYW5nZSA9IFsnICsgc3BlYy5pbmRleE1pbiArICcsICcgKyBzcGVj
LmluZGV4TWF4ICsgJ10nKTsKKworICAgICAgICAgICAgLy8gT25seSBtYWtlcyBzZW5zZSB3aXRo
IHBvaW50cworICAgICAgICAgICAgaWYgKHNwZWMucHJpbWl0aXZlID09IGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuUHJpbWl0aXZlLlBPSU5UUykgeworICAgICAgICAgICAgICAgIHNwZWMuaW5k
ZXhNaW4gPSA1OworICAgICAgICAgICAgICAgIHNwZWMuaW5kZXhNYXggPSA1OworICAgICAgICAg
ICAgICAgIHRlc3QuYWRkSXRlcmF0aW9uKHNwZWMsICdpbmRleCByYW5nZSA9IFsnICsgc3BlYy5p
bmRleE1pbiArICcsICcgKyBzcGVjLmluZGV4TWF4ICsgJ10nKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGVzdCBp
dGVyYXRpb24gdHlwZScpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWN9IHNwZWMKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9IG1ldGhvZAorICAgICAqLworICAgIGVzM2ZEcmF3VGVz
dHMuZ2VuQmFzaWNTcGVjID0gZnVuY3Rpb24oc3BlYywgbWV0aG9kKSB7CisgICAgICAgIC8vc3Bl
Yy5hcGlUeXBlID0gZ2x1OjpBcGlUeXBlOjplcygzLDApOworICAgICAgICBzcGVjLnByaW1pdGl2
ZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFUzsKKyAgICAg
ICAgc3BlYy5wcmltaXRpdmVDb3VudCA9IDY7CisgICAgICAgIHNwZWMuZHJhd01ldGhvZCA9IG1l
dGhvZDsKKyAgICAgICAgc3BlYy5pbmRleFR5cGUgPSBudWxsOworICAgICAgICBzcGVjLmluZGV4
UG9pbnRlck9mZnNldCA9IDA7CisgICAgICAgIHNwZWMuaW5kZXhTdG9yYWdlID0gbnVsbDsKKyAg
ICAgICAgc3BlYy5maXJzdCA9IDA7CisgICAgICAgIHNwZWMuaW5kZXhNaW4gPSAwOworICAgICAg
ICBzcGVjLmluZGV4TWF4ID0gMDsKKyAgICAgICAgc3BlYy5pbnN0YW5jZUNvdW50ID0gMTsKKwor
ICAgICAgICBzcGVjLmF0dHJpYnMucHVzaChuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5B
dHRyaWJ1dGVTcGVjKCkpOworCisgICAgICAgIHNwZWMuYXR0cmlic1swXS5pbnB1dFR5cGUgPSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDsKKyAgICAgICAgc3BlYy5h
dHRyaWJzWzBdLm91dHB1dFR5cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5
cGUuVkVDMjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0b3JhZ2UgPSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0udXNh
Z2UgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlLlNUQVRJQ19EUkFXOworICAgICAg
ICBzcGVjLmF0dHJpYnNbMF0uY29tcG9uZW50Q291bnQgPSA0OworICAgICAgICBzcGVjLmF0dHJp
YnNbMF0ub2Zmc2V0ID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0cmlkZSA9IDA7Cisg
ICAgICAgIHNwZWMuYXR0cmlic1swXS5ub3JtYWxpemUgPSBmYWxzZTsKKyAgICAgICAgc3BlYy5h
dHRyaWJzWzBdLmluc3RhbmNlRGl2aXNvciA9IDA7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS51
c2VEZWZhdWx0QXR0cmlidXRlID0gZmFsc2U7CisKKyAgICAgICAgc3BlYy5hdHRyaWJzLnB1c2go
bmV3IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlYygpKTsKKworICAgICAg
ICBzcGVjLmF0dHJpYnNbMV0uaW5wdXRUeXBlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5J
bnB1dFR5cGUuRkxPQVQ7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5vdXRwdXRUeXBlID0gZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzI7CisgICAgICAgIHNwZWMuYXR0
cmlic1sxXS5zdG9yYWdlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJVRkZF
UjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzFdLnVzYWdlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5Vc2FnZS5TVEFUSUNfRFJBVzsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzFdLmNvbXBvbmVu
dENvdW50ID0gMjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzFdLm9mZnNldCA9IDA7CisgICAgICAg
IHNwZWMuYXR0cmlic1sxXS5zdHJpZGUgPSAwOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0ubm9y
bWFsaXplID0gZmFsc2U7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5pbnN0YW5jZURpdmlzb3Ig
PSAwOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0udXNlRGVmYXVsdEF0dHJpYnV0ZSA9IGZhbHNl
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3IKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9IGRyYXdNZXRob2QKKyAgICAgKiBAcGFyYW0gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZX0gcHJpbWl0aXZlCisgICAgICogQHBhcmFt
IHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGV9IGluZGV4VHlwZQorICAgICAq
IEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZX0gaW5kZXhTdG9yYWdl
CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5BdHRyaWJ1dGVHcm91cCA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2NyLCBkcmF3TWV0aG9kLCBwcmltaXRpdmUsIGluZGV4VHlwZSwgaW5kZXhTdG9yYWdl
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3Ip
OworICAgICAgICB0aGlzLm1fbWV0aG9kID0gZHJhd01ldGhvZDsKKyAgICAgICAgdGhpcy5tX3By
aW1pdGl2ZSA9IHByaW1pdGl2ZTsKKyAgICAgICAgdGhpcy5tX2luZGV4VHlwZSA9IGluZGV4VHlw
ZTsKKyAgICAgICAgdGhpcy5tX2luZGV4U3RvcmFnZSA9IGluZGV4U3RvcmFnZTsKKyAgICAgICAg
dGhpcy5tYWtlRXhlY3V0YWJsZSgpOworICAgIH07CisKKyAgICBlczNmRHJhd1Rlc3RzLkF0dHJp
YnV0ZUdyb3VwLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3Qu
cHJvdG90eXBlKTsKKyAgICBlczNmRHJhd1Rlc3RzLkF0dHJpYnV0ZUdyb3VwLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IGVzM2ZEcmF3VGVzdHMuQXR0cmlidXRlR3JvdXA7CisKKyAgICBlczNmRHJh
d1Rlc3RzLkF0dHJpYnV0ZUdyb3VwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIC8vIHNlbGVjdCB0ZXN0IHR5cGUKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaW5zdGFuY2VkID0gdGhpcy5tX21ldGhvZCA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LkRyYXdNZXRob2QuRFJBV0FSUkFZU19JTlNUQU5DRUQgfHwKKyAgICAgICAgICAgIHRoaXMubV9t
ZXRob2QgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdFTEVNRU5U
U19JTlNUQU5DRUQ7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHJhbmdlZCA9
IHRoaXMubV9tZXRob2QgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRS
QVdFTEVNRU5UU19SQU5HRUQ7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkRyYXdUZXN0cy5UZXN0
SXRlcmF0aW9uVHlwZX0gKi8gdmFyIHRlc3RUeXBlID0gaW5zdGFuY2VkID8gZXMzZkRyYXdUZXN0
cy5UZXN0SXRlcmF0aW9uVHlwZS5JTlNUQU5DRV9DT1VOVCA6CisgICAgICAgICAgICAocmFuZ2Vk
ID8gZXMzZkRyYXdUZXN0cy5UZXN0SXRlcmF0aW9uVHlwZS5JTkRFWF9SQU5HRSA6IGVzM2ZEcmF3
VGVzdHMuVGVzdEl0ZXJhdGlvblR5cGUuRFJBV19DT1VOVCk7CisKKyAgICAgICAgLy8gU2luZ2xl
IGF0dHJpYnV0ZQorICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVzdH0gKi8g
dmFyIHRlc3QgPSBuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0KG51bGwsICdzaW5nbGVfYXR0cmli
dXRlJywgJ1NpbmdsZSBhdHRyaWJ1dGUgYXJyYXkuJyk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlY30gKi8gdmFyIHNwZWMgPSBuZXcgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYygpOworCisgICAgICAgIC8vc3BlYy5hcGlUeXBlID0gZ2x1OjpBcGlUeXBlOjpl
cygzLDApOworICAgICAgICBzcGVjLnByaW1pdGl2ZSA9IHRoaXMubV9wcmltaXRpdmU7CisgICAg
ICAgIHNwZWMucHJpbWl0aXZlQ291bnQgPSA1OworICAgICAgICBzcGVjLmRyYXdNZXRob2QgPSB0
aGlzLm1fbWV0aG9kOworICAgICAgICBzcGVjLmluZGV4VHlwZSA9IHRoaXMubV9pbmRleFR5cGU7
CisgICAgICAgIHNwZWMuaW5kZXhQb2ludGVyT2Zmc2V0ID0gMDsKKyAgICAgICAgc3BlYy5pbmRl
eFN0b3JhZ2UgPSB0aGlzLm1faW5kZXhTdG9yYWdlOworICAgICAgICBzcGVjLmZpcnN0ID0gMDsK
KyAgICAgICAgc3BlYy5pbmRleE1pbiA9IDA7CisgICAgICAgIHNwZWMuaW5kZXhNYXggPSAwOwor
ICAgICAgICBzcGVjLmluc3RhbmNlQ291bnQgPSAxOworCisgICAgICAgIHNwZWMuYXR0cmlicy5s
ZW5ndGggPSAwOworCisgICAgICAgIHNwZWMuYXR0cmlicy5wdXNoKG5ldyBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWMoKSk7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5p
bnB1dFR5cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDsKKyAg
ICAgICAgc3BlYy5hdHRyaWJzWzBdLm91dHB1dFR5cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLk91dHB1dFR5cGUuVkVDMjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0b3JhZ2UgPSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSOworICAgICAgICBzcGVjLmF0
dHJpYnNbMF0udXNhZ2UgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlLlNUQVRJQ19E
UkFXOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0uY29tcG9uZW50Q291bnQgPSAyOworICAgICAg
ICBzcGVjLmF0dHJpYnNbMF0ub2Zmc2V0ID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0
cmlkZSA9IDA7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5ub3JtYWxpemUgPSBmYWxzZTsKKyAg
ICAgICAgc3BlYy5hdHRyaWJzWzBdLmluc3RhbmNlRGl2aXNvciA9IDA7CisgICAgICAgIHNwZWMu
YXR0cmlic1swXS51c2VEZWZhdWx0QXR0cmlidXRlID0gZmFsc2U7CisKKyAgICAgICAgZXMzZkRy
YXdUZXN0cy5hZGRUZXN0SXRlcmF0aW9ucyh0ZXN0LCBzcGVjLCB0ZXN0VHlwZSk7CisKKyAgICAg
ICAgdGhpcy5hZGRDaGlsZCh0ZXN0KTsKKworICAgICAgICAvLyBNdWx0aXBsZSBhdHRyaWJ1dGUK
KworICAgICAgICB0ZXN0ID0gbmV3IGdsc0RyYXdUZXN0cy5EcmF3VGVzdChudWxsLCAnbXVsdGlw
bGVfYXR0cmlidXRlcycsICdNdWx0aXBsZSBhdHRyaWJ1dGUgYXJyYXlzLicpOworICAgICAgICBz
cGVjLnByaW1pdGl2ZSA9IHRoaXMubV9wcmltaXRpdmU7CisgICAgICAgIHNwZWMucHJpbWl0aXZl
Q291bnQgPSA1OworICAgICAgICBzcGVjLmRyYXdNZXRob2QgPSB0aGlzLm1fbWV0aG9kOworICAg
ICAgICBzcGVjLmluZGV4VHlwZSA9IHRoaXMubV9pbmRleFR5cGU7CisgICAgICAgIHNwZWMuaW5k
ZXhQb2ludGVyT2Zmc2V0ID0gMDsKKyAgICAgICAgc3BlYy5pbmRleFN0b3JhZ2UgPSB0aGlzLm1f
aW5kZXhTdG9yYWdlOworICAgICAgICBzcGVjLmZpcnN0ID0gMDsKKyAgICAgICAgc3BlYy5pbmRl
eE1pbiA9IDA7CisgICAgICAgIHNwZWMuaW5kZXhNYXggPSAwOworICAgICAgICBzcGVjLmluc3Rh
bmNlQ291bnQgPSAxOworCisgICAgICAgIHNwZWMuYXR0cmlicy5sZW5ndGggPSAwOworCisgICAg
ICAgIHNwZWMuYXR0cmlicy5wdXNoKG5ldyBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkF0dHJp
YnV0ZVNwZWMoKSk7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5pbnB1dFR5cGUgPSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDsKKyAgICAgICAgc3BlYy5hdHRyaWJz
WzBdLm91dHB1dFR5cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVD
MjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0b3JhZ2UgPSBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLlN0b3JhZ2UuQlVGRkVSOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0udXNhZ2UgPSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlLlNUQVRJQ19EUkFXOworICAgICAgICBzcGVj
LmF0dHJpYnNbMF0uY29tcG9uZW50Q291bnQgPSA0OworICAgICAgICBzcGVjLmF0dHJpYnNbMF0u
b2Zmc2V0ID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnN0cmlkZSA9IDA7CisgICAgICAg
IHNwZWMuYXR0cmlic1swXS5ub3JtYWxpemUgPSBmYWxzZTsKKyAgICAgICAgc3BlYy5hdHRyaWJz
WzBdLmluc3RhbmNlRGl2aXNvciA9IDA7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS51c2VEZWZh
dWx0QXR0cmlidXRlID0gZmFsc2U7CisKKyAgICAgICAgc3BlYy5hdHRyaWJzLnB1c2gobmV3IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlYygpKTsKKyAgICAgICAgc3BlYy5h
dHRyaWJzWzFdLmlucHV0VHlwZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBl
LkZMT0FUOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0ub3V0cHV0VHlwZSA9IGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUMyOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0u
c3RvcmFnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVI7CisgICAg
ICAgIHNwZWMuYXR0cmlic1sxXS51c2FnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNh
Z2UuU1RBVElDX0RSQVc7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5jb21wb25lbnRDb3VudCA9
IDI7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5vZmZzZXQgPSAwOworICAgICAgICBzcGVjLmF0
dHJpYnNbMV0uc3RyaWRlID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzFdLm5vcm1hbGl6ZSA9
IGZhbHNlOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0uaW5zdGFuY2VEaXZpc29yID0gMDsKKyAg
ICAgICAgc3BlYy5hdHRyaWJzWzFdLnVzZURlZmF1bHRBdHRyaWJ1dGUgPSBmYWxzZTsKKworICAg
ICAgICBlczNmRHJhd1Rlc3RzLmFkZFRlc3RJdGVyYXRpb25zKHRlc3QsIHNwZWMsIHRlc3RUeXBl
KTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKHRlc3QpOworCisgICAgICAgIC8vIE11bHRpcGxl
IGF0dHJpYnV0ZSwgc2Vjb25kIG9uZSBkaXZpZGVkCisKKyAgICAgICAgdGVzdCA9IG5ldyBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3QobnVsbCwgJ2luc3RhbmNlZF9hdHRyaWJ1dGVzJywgJ0luc3RhbmNl
ZCBhdHRyaWJ1dGUgYXJyYXkuJyk7CisKKyAgICAgICAgLy9zcGVjLmFwaVR5cGUgPSBnbHU6OkFw
aVR5cGU6OmVzKDMsMCk7CisgICAgICAgIHNwZWMucHJpbWl0aXZlID0gdGhpcy5tX3ByaW1pdGl2
ZTsKKyAgICAgICAgc3BlYy5wcmltaXRpdmVDb3VudCA9IDU7CisgICAgICAgIHNwZWMuZHJhd01l
dGhvZCA9IHRoaXMubV9tZXRob2Q7CisgICAgICAgIHNwZWMuaW5kZXhUeXBlID0gdGhpcy5tX2lu
ZGV4VHlwZTsKKyAgICAgICAgc3BlYy5pbmRleFBvaW50ZXJPZmZzZXQgPSAwOworICAgICAgICBz
cGVjLmluZGV4U3RvcmFnZSA9IHRoaXMubV9pbmRleFN0b3JhZ2U7CisgICAgICAgIHNwZWMuZmly
c3QgPSAwOworICAgICAgICBzcGVjLmluZGV4TWluID0gMDsKKyAgICAgICAgc3BlYy5pbmRleE1h
eCA9IDA7CisgICAgICAgIHNwZWMuaW5zdGFuY2VDb3VudCA9IDE7CisKKyAgICAgICAgc3BlYy5h
dHRyaWJzLmxlbmd0aCA9IDA7CisKKyAgICAgICAgc3BlYy5hdHRyaWJzLnB1c2gobmV3IGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlYygpKTsKKyAgICAgICAgc3BlYy5hdHRy
aWJzWzBdLmlucHV0VHlwZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkZM
T0FUOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0ub3V0cHV0VHlwZSA9IGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUMyOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0uc3Rv
cmFnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVI7CisgICAgICAg
IHNwZWMuYXR0cmlic1swXS51c2FnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNhZ2Uu
U1RBVElDX0RSQVc7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5jb21wb25lbnRDb3VudCA9IDQ7
CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5vZmZzZXQgPSAwOworICAgICAgICBzcGVjLmF0dHJp
YnNbMF0uc3RyaWRlID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLm5vcm1hbGl6ZSA9IGZh
bHNlOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0uaW5zdGFuY2VEaXZpc29yID0gMDsKKyAgICAg
ICAgc3BlYy5hdHRyaWJzWzBdLnVzZURlZmF1bHRBdHRyaWJ1dGUgPSBmYWxzZTsKKworICAgICAg
ICAvLyBBZGQgYW5vdGhlciBwb3NpdGlvbiBjb21wb25lbnQgc28gdGhlIGluc3RhbmNlcyB3b250
IGJlIGRyYXduIG9uIGVhY2ggb3RoZXIKKyAgICAgICAgc3BlYy5hdHRyaWJzLnB1c2gobmV3IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlYygpKTsKKyAgICAgICAgc3BlYy5h
dHRyaWJzWzFdLmlucHV0VHlwZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBl
LkZMT0FUOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0ub3V0cHV0VHlwZSA9IGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUMyOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0u
c3RvcmFnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVI7CisgICAg
ICAgIHNwZWMuYXR0cmlic1sxXS51c2FnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNh
Z2UuU1RBVElDX0RSQVc7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5jb21wb25lbnRDb3VudCA9
IDI7CisgICAgICAgIHNwZWMuYXR0cmlic1sxXS5vZmZzZXQgPSAwOworICAgICAgICBzcGVjLmF0
dHJpYnNbMV0uc3RyaWRlID0gMDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzFdLm5vcm1hbGl6ZSA9
IGZhbHNlOworICAgICAgICBzcGVjLmF0dHJpYnNbMV0uaW5zdGFuY2VEaXZpc29yID0gMTsKKyAg
ICAgICAgc3BlYy5hdHRyaWJzWzFdLnVzZURlZmF1bHRBdHRyaWJ1dGUgPSBmYWxzZTsKKyAgICAg
ICAgc3BlYy5hdHRyaWJzWzFdLmFkZGl0aW9uYWxQb3NpdGlvbkF0dHJpYnV0ZSA9IHRydWU7CisK
KyAgICAgICAgLy8gSW5zdGFuY2VkIGNvbG9yCisgICAgICAgIHNwZWMuYXR0cmlicy5wdXNoKG5l
dyBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWMoKSk7CisgICAgICAgIHNw
ZWMuYXR0cmlic1syXS5pbnB1dFR5cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0
VHlwZS5GTE9BVDsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzJdLm91dHB1dFR5cGUgPSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVDMjsKKyAgICAgICAgc3BlYy5hdHRyaWJz
WzJdLnN0b3JhZ2UgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSOwor
ICAgICAgICBzcGVjLmF0dHJpYnNbMl0udXNhZ2UgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LlVzYWdlLlNUQVRJQ19EUkFXOworICAgICAgICBzcGVjLmF0dHJpYnNbMl0uY29tcG9uZW50Q291
bnQgPSAzOworICAgICAgICBzcGVjLmF0dHJpYnNbMl0ub2Zmc2V0ID0gMDsKKyAgICAgICAgc3Bl
Yy5hdHRyaWJzWzJdLnN0cmlkZSA9IDA7CisgICAgICAgIHNwZWMuYXR0cmlic1syXS5ub3JtYWxp
emUgPSBmYWxzZTsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzJdLmluc3RhbmNlRGl2aXNvciA9IDE7
CisgICAgICAgIHNwZWMuYXR0cmlic1syXS51c2VEZWZhdWx0QXR0cmlidXRlID0gZmFsc2U7CisK
KyAgICAgICAgZXMzZkRyYXdUZXN0cy5hZGRUZXN0SXRlcmF0aW9ucyh0ZXN0LCBzcGVjLCB0ZXN0
VHlwZSk7CisKKyAgICAgICAgdGhpcy5hZGRDaGlsZCh0ZXN0KTsKKworICAgICAgICAvLyBNdWx0
aXBsZSBhdHRyaWJ1dGUsIHNlY29uZCBvbmUgZGVmYXVsdAorICAgICAgICB0ZXN0ID0gbmV3IGds
c0RyYXdUZXN0cy5EcmF3VGVzdChudWxsLCAnZGVmYXVsdF9hdHRyaWJ1dGUnLCAnQXR0cmlidXRl
IHNwZWNpZmllZCB3aXRoIGdsVmVydGV4QXR0cmliKi4nKTsKKworICAgICAgICAvL3NwZWMuYXBp
VHlwZSA9IGdsdTo6QXBpVHlwZTo6ZXMoMywwKTsKKyAgICAgICAgc3BlYy5wcmltaXRpdmUgPSB0
aGlzLm1fcHJpbWl0aXZlOworICAgICAgICBzcGVjLnByaW1pdGl2ZUNvdW50ID0gNTsKKyAgICAg
ICAgc3BlYy5kcmF3TWV0aG9kID0gdGhpcy5tX21ldGhvZDsKKyAgICAgICAgc3BlYy5pbmRleFR5
cGUgPSB0aGlzLm1faW5kZXhUeXBlOworICAgICAgICBzcGVjLmluZGV4UG9pbnRlck9mZnNldCA9
IDA7CisgICAgICAgIHNwZWMuaW5kZXhTdG9yYWdlID0gdGhpcy5tX2luZGV4U3RvcmFnZTsKKyAg
ICAgICAgc3BlYy5maXJzdCA9IDA7CisgICAgICAgIHNwZWMuaW5kZXhNaW4gPSAwOworICAgICAg
ICBzcGVjLmluZGV4TWF4ID0gMTc7IC8vIFxub3RlIGFkZFRlc3RJdGVyYXRpb25zIGlzIG5vdCBj
YWxsZWQgZm9yIHRoZSBzcGVjLCBzbyB3ZSBtdXN0IGVuc3VyZSBbaW5kZXhNaW4sIGluZGV4TWF4
XSBpcyBhIGdvb2QgcmFuZ2UKKyAgICAgICAgc3BlYy5pbnN0YW5jZUNvdW50ID0gMTsKKworICAg
ICAgICBzcGVjLmF0dHJpYnMubGVuZ3RoID0gMDsKKworICAgICAgICBzcGVjLmF0dHJpYnMucHVz
aChuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjKCkpOworICAgICAg
ICBzcGVjLmF0dHJpYnNbMF0uaW5wdXRUeXBlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5J
bnB1dFR5cGUuRkxPQVQ7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5vdXRwdXRUeXBlID0gZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzI7CisgICAgICAgIHNwZWMuYXR0
cmlic1swXS5zdG9yYWdlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJVRkZF
UjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLnVzYWdlID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5Vc2FnZS5TVEFUSUNfRFJBVzsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLmNvbXBvbmVu
dENvdW50ID0gMjsKKyAgICAgICAgc3BlYy5hdHRyaWJzWzBdLm9mZnNldCA9IDA7CisgICAgICAg
IHNwZWMuYXR0cmlic1swXS5zdHJpZGUgPSAwOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0ubm9y
bWFsaXplID0gZmFsc2U7CisgICAgICAgIHNwZWMuYXR0cmlic1swXS5pbnN0YW5jZURpdmlzb3Ig
PSAwOworICAgICAgICBzcGVjLmF0dHJpYnNbMF0udXNlRGVmYXVsdEF0dHJpYnV0ZSA9IGZhbHNl
OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8e2lucHV0Oj9nbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLklucHV0VHlwZSwgb3V0cHV0Oj9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1
dFR5cGUsIGNvbXBvbmVudENvdW50Om51bWJlcn0+fSAqLyB2YXIgaW9wYWlycyA9IFsKKyAgICAg
ICAgICAgIHtpbnB1dDogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuRkxPQVQs
IG91dHB1dDogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzIsIGNvbXBv
bmVudENvdW50OiA0fSwKKyAgICAgICAgICAgIHtpbnB1dDogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbnB1dFR5cGUuRkxPQVQsIG91dHB1dDogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5P
dXRwdXRUeXBlLlZFQzQsIGNvbXBvbmVudENvdW50OiAyfSwKKyAgICAgICAgICAgIHtpbnB1dDog
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuSU5ULCBvdXRwdXQ6IGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5JVkVDMywgY29tcG9uZW50Q291bnQ6IDR9LAor
ICAgICAgICAgICAge2lucHV0OiBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5V
TlNJR05FRF9JTlQsIG91dHB1dDogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBl
LlVWRUMyLCBjb21wb25lbnRDb3VudDogNH0KKyAgICAgICAgXTsKKworICAgICAgICBzcGVjLmF0
dHJpYnMucHVzaChuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjKCkp
OworICAgICAgICBmb3IgKHZhciBpb05keCA9IDA7IGlvTmR4IDwgaW9wYWlycy5sZW5ndGg7ICsr
aW9OZHgpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZGVzYyA9IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5wdXRUeXBlVG9TdHJpbmcoaW9wYWlyc1tpb05keF0u
aW5wdXQpICsgaW9wYWlyc1tpb05keF0uY29tcG9uZW50Q291bnQgKyAnIHRvICcgKyBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLm91dHB1dFR5cGVUb1N0cmluZyhpb3BhaXJzW2lvTmR4XS5vdXRw
dXQpOworCisgICAgICAgICAgICBzcGVjLmF0dHJpYnNbMV0uaW5wdXRUeXBlID0gaW9wYWlyc1tp
b05keF0uaW5wdXQ7CisgICAgICAgICAgICBzcGVjLmF0dHJpYnNbMV0ub3V0cHV0VHlwZSA9IGlv
cGFpcnNbaW9OZHhdLm91dHB1dDsKKyAgICAgICAgICAgIHNwZWMuYXR0cmlic1sxXS5zdG9yYWdl
ID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJVRkZFUjsKKyAgICAgICAgICAg
IHNwZWMuYXR0cmlic1sxXS51c2FnZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNhZ2Uu
U1RBVElDX0RSQVc7CisgICAgICAgICAgICBzcGVjLmF0dHJpYnNbMV0uY29tcG9uZW50Q291bnQg
PSBpb3BhaXJzW2lvTmR4XS5jb21wb25lbnRDb3VudDsKKyAgICAgICAgICAgIHNwZWMuYXR0cmli
c1sxXS5vZmZzZXQgPSAwOworICAgICAgICAgICAgc3BlYy5hdHRyaWJzWzFdLnN0cmlkZSA9IDA7
CisgICAgICAgICAgICBzcGVjLmF0dHJpYnNbMV0ubm9ybWFsaXplID0gZmFsc2U7CisgICAgICAg
ICAgICBzcGVjLmF0dHJpYnNbMV0uaW5zdGFuY2VEaXZpc29yID0gMDsKKyAgICAgICAgICAgIHNw
ZWMuYXR0cmlic1sxXS51c2VEZWZhdWx0QXR0cmlidXRlID0gdHJ1ZTsKKworICAgICAgICAgICAg
dGVzdC5hZGRJdGVyYXRpb24oc3BlYywgZGVzYyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlz
LmFkZENoaWxkKHRlc3QpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3IKKyAgICAgKiBAcGFyYW0g
ez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9IGRyYXdNZXRob2QKKyAgICAg
Ki8KKyAgICBlczNmRHJhd1Rlc3RzLkluZGV4R3JvdXAgPSBmdW5jdGlvbihuYW1lLCBkZXNjciwg
ZHJhd01ldGhvZCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyKTsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5EcmF3TWV0aG9kfSAqLyB0aGlzLm1fbWV0aG9kID0gZHJhd01ldGhvZDsKKyAgICAgICAgdGhp
cy5tYWtlRXhlY3V0YWJsZSgpOworICAgIH07CisKKyAgICBlczNmRHJhd1Rlc3RzLkluZGV4R3Jv
dXAucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5
cGUpOworICAgIGVzM2ZEcmF3VGVzdHMuSW5kZXhHcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBlczNmRHJhd1Rlc3RzLkluZGV4R3JvdXA7CisKKyAgICBlczNmRHJhd1Rlc3RzLkluZGV4R3Jv
dXAucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTx7c3RvcmFnZTogP2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZSwgdHlwZTogP2ds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBlLCBhbGlnbmVkOiBib29sZWFuLCBvZmZz
ZXRzOiBBcnJheTxudW1iZXI+fT59ICovIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgICAgIHtzdG9y
YWdlOiBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSLCB0eXBlOiBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4VHlwZS5CWVRFLCBhbGlnbmVkOiB0cnVlLCBvZmZz
ZXRzOiBbMCwgMSwgLTFdfSwKKyAgICAgICAgICAgIHtzdG9yYWdlOiBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSLCB0eXBlOiBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LkluZGV4VHlwZS5TSE9SVCwgYWxpZ25lZDogdHJ1ZSwgb2Zmc2V0czogWzAsIDIsIC0xXX0sCisg
ICAgICAgICAgICB7c3RvcmFnZTogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJV
RkZFUiwgdHlwZTogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGUuSU5ULCBhbGln
bmVkOiB0cnVlLCBvZmZzZXRzOiBbMCwgNCwgLTFdfSwKKworICAgICAgICAgICAge3N0b3JhZ2U6
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVIsIHR5cGU6IGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBlLlNIT1JULCBhbGlnbmVkOiBmYWxzZSwgb2Zmc2V0
czogWzEsIDMsIC0xXX0sCisgICAgICAgICAgICB7c3RvcmFnZTogZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5TdG9yYWdlLkJVRkZFUiwgdHlwZTogZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5J
bmRleFR5cGUuSU5ULCBhbGlnbmVkOiBmYWxzZSwgb2Zmc2V0czogWzIsIDMsIC0xXX0KKyAgICAg
ICAgXTsKKworICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWN9ICov
IHZhciBzcGVjID0gbmV3IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMoKTsKKyAgICAgICAgZXMz
ZkRyYXdUZXN0cy5nZW5CYXNpY1NwZWMoc3BlYywgdGhpcy5tX21ldGhvZCk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGJ1ZmZlckdyb3VwID0gbmV3
IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCdidWZmZXInLCAnYnVmZmVyJyk7CisgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciB1bmFsaWduZWRCdWZmZXJHcm91cCA9
IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgndW5hbGlnbmVkX2J1ZmZlcicsICd1bmFsaWduZWQg
YnVmZmVyJyk7CisKKyAgICAgICAgdGhpcy5hZGRDaGlsZChidWZmZXJHcm91cCk7CisgICAgICAg
IHRoaXMuYWRkQ2hpbGQodW5hbGlnbmVkQnVmZmVyR3JvdXApOworCisgICAgICAgIGZvciAodmFy
IHRlc3ROZHggPSAwOyB0ZXN0TmR4IDwgdGVzdHMubGVuZ3RoOyArK3Rlc3ROZHgpIHsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7e3N0b3JhZ2U6ID9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0
b3JhZ2UsIHR5cGU6ID9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4VHlwZSwgYWxpZ25l
ZDogYm9vbGVhbiwgb2Zmc2V0czogQXJyYXk8bnVtYmVyPn19ICovCisgICAgICAgICAgICB2YXIg
aW5kZXhUZXN0ID0gdGVzdHNbdGVzdE5keF07CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRl
c3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZ3JvdXAgPSBpbmRleFRlc3QuYWxpZ25lZCA/IGJ1ZmZl
ckdyb3VwIDogdW5hbGlnbmVkQnVmZmVyR3JvdXA7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgbmFtZSA9ICdpbmRleF8nICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5pbmRleFR5cGVUb1N0cmluZyhpbmRleFRlc3QudHlwZSk7CisgICAgICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIGRlc2MgPSAnaW5kZXggJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuaW5kZXhUeXBlVG9TdHJpbmcoaW5kZXhUZXN0LnR5cGUpICsgJyBpbiAnICsgZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5zdG9yYWdlVG9TdHJpbmcoaW5kZXhUZXN0LnN0b3JhZ2UpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3R9ICovIHZhciB0ZXN0
ID0gbmV3IGdsc0RyYXdUZXN0cy5EcmF3VGVzdChudWxsLCBuYW1lLCBkZXNjKTsKKworICAgICAg
ICAgICAgc3BlYy5pbmRleFR5cGUgPSBpbmRleFRlc3QudHlwZTsKKyAgICAgICAgICAgIHNwZWMu
aW5kZXhTdG9yYWdlID0gaW5kZXhUZXN0LnN0b3JhZ2U7CisKKyAgICAgICAgICAgIGZvciAodmFy
IGl0ZXJhdGlvbk5keCA9IDA7IGl0ZXJhdGlvbk5keCA8IGluZGV4VGVzdC5vZmZzZXRzLmxlbmd0
aCAmJiBpbmRleFRlc3Qub2Zmc2V0c1tpdGVyYXRpb25OZHhdICE9IC0xOyArK2l0ZXJhdGlvbk5k
eCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgaXRlcmF0aW9u
RGVzYyA9ICdvZmZzZXQgJyArIGluZGV4VGVzdC5vZmZzZXRzW2l0ZXJhdGlvbk5keF07CisgICAg
ICAgICAgICAgICAgc3BlYy5pbmRleFBvaW50ZXJPZmZzZXQgPSBpbmRleFRlc3Qub2Zmc2V0c1tp
dGVyYXRpb25OZHhdOworICAgICAgICAgICAgICAgIHRlc3QuYWRkSXRlcmF0aW9uKHNwZWMsIGl0
ZXJhdGlvbkRlc2MpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3BlYy5pc0Nv
bXBhdGliaWxpdHlUZXN0KCkgIT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Db21wYXRpYmls
aXR5VGVzdFR5cGUuVU5BTElHTkVEX09GRlNFVCAmJgorICAgICAgICAgICAgICAgIHNwZWMuaXND
b21wYXRpYmlsaXR5VGVzdCgpICE9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQ29tcGF0aWJp
bGl0eVRlc3RUeXBlLlVOQUxJR05FRF9TVFJJREUpCisgICAgICAgICAgICAgICAgZ3JvdXAuYWRk
Q2hpbGQodGVzdCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyCisgICAgICog
QHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kfSBkcmF3TWV0aG9k
CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5GaXJzdEdyb3VwID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3IsIGRyYXdNZXRob2QpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0
aGlzLCBuYW1lLCBkZXNjcik7CisgICAgICAgIC8qKiBAdHlwZSB7P2dsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuRHJhd01ldGhvZH0gKi8gdGhpcy5tX21ldGhvZCA9IGRyYXdNZXRob2Q7CisgICAg
ICAgIHRoaXMubWFrZUV4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgZXMzZkRyYXdUZXN0cy5G
aXJzdEdyb3VwLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3Qu
cHJvdG90eXBlKTsKKyAgICBlczNmRHJhd1Rlc3RzLkZpcnN0R3JvdXAucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gZXMzZkRyYXdUZXN0cy5GaXJzdEdyb3VwOworCisgICAgLyoqCisgICAgICogaW5p
dAorICAgICAqLworICAgIGVzM2ZEcmF3VGVzdHMuRmlyc3RHcm91cC5wcm90b3R5cGUuaW5pdCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZmlyc3RzID0KKyAgICAgICAgWworICAgICAgICAg
ICAgMSwgMywgMTcKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWN9ICovIHZhciBzcGVjID0gbmV3IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNw
ZWMoKTsKKyAgICAgICAgZXMzZkRyYXdUZXN0cy5nZW5CYXNpY1NwZWMoc3BlYywgdGhpcy5tX21l
dGhvZCk7CisKKyAgICAgICAgZm9yICh2YXIgZmlyc3ROZHggPSAwOyBmaXJzdE5keCA8IGZpcnN0
cy5sZW5ndGg7ICsrZmlyc3ROZHgpIHsKKyAgICAgICAgICAgIHZhciBuYW1lID0gJ2ZpcnN0Xycg
KyBmaXJzdHNbZmlyc3ROZHhdOworICAgICAgICAgICAgdmFyIGRlc2MgPSAnZmlyc3QgJyArIGZp
cnN0c1tmaXJzdE5keF07CisgICAgICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3
VGVzdH0gKi8gdmFyIHRlc3QgPSBuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0KG51bGwsIG5hbWUs
IGRlc2MpOworCisgICAgICAgICAgICBzcGVjLmZpcnN0ID0gZmlyc3RzW2ZpcnN0TmR4XTsKKwor
ICAgICAgICAgICAgZXMzZkRyYXdUZXN0cy5hZGRUZXN0SXRlcmF0aW9ucyh0ZXN0LCBzcGVjLCBl
czNmRHJhd1Rlc3RzLlRlc3RJdGVyYXRpb25UeXBlLkRSQVdfQ09VTlQpOworCisgICAgICAgICAg
ICB0aGlzLmFkZENoaWxkKHRlc3QpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNj
cgorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZH0g
ZHJhd01ldGhvZAorICAgICAqLworICAgIGVzM2ZEcmF3VGVzdHMuTWV0aG9kR3JvdXAgPSBmdW5j
dGlvbihuYW1lLCBkZXNjciwgZHJhd01ldGhvZCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyKTsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kfSAqLyB0aGlzLm1fbWV0aG9kID0gZHJhd01l
dGhvZDsKKyAgICAgICAgdGhpcy5tYWtlRXhlY3V0YWJsZSgpOworICAgIH07CisKKyAgICBlczNm
RHJhd1Rlc3RzLk1ldGhvZEdyb3VwLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENh
c2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmRHJhd1Rlc3RzLk1ldGhvZEdyb3VwLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZEcmF3VGVzdHMuTWV0aG9kR3JvdXA7CisKKyAgICAv
KioKKyAgICAgKiBpbml0CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5NZXRob2RHcm91cC5w
cm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5kZXhlZCA9ICh0aGlz
Lm1fbWV0aG9kID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxF
TUVOVFMpIHx8ICh0aGlzLm1fbWV0aG9kID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJh
d01ldGhvZC5EUkFXRUxFTUVOVFNfSU5TVEFOQ0VEKSB8fCAodGhpcy5tX21ldGhvZCA9PSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJBV0VMRU1FTlRTX1JBTkdFRCk7Cisg
ICAgICAgIHZhciBoYXNGaXJzdCA9ICh0aGlzLm1fbWV0aG9kID09IGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXQVJSQVlTKSB8fCAodGhpcy5tX21ldGhvZCA9PSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJBV0FSUkFZU19JTlNUQU5DRUQpOwor
CisgICAgICAgIHZhciBwcmltaXRpdmUgPQorICAgICAgICBbCisgICAgICAgICAgICBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5QT0lOVFMsCisgICAgICAgICAgICBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRVMsCisgICAgICAgICAgICBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9GQU4sCisgICAgICAgICAg
ICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9TVFJJUCwKKyAg
ICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVTLAorICAg
ICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuTElORV9TVFJJUCwK
KyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVfTE9P
UAorICAgICAgICBdOworCisgICAgICAgIGlmIChoYXNGaXJzdCkgeworICAgICAgICAgICAgLy8g
Rmlyc3QtdGVzdHMKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZEcmF3VGVzdHMu
Rmlyc3RHcm91cCgnZmlyc3QnLCAnRmlyc3QgdGVzdHMnLCB0aGlzLm1fbWV0aG9kKSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoaW5kZXhlZCkgeworICAgICAgICAgICAgLy8gSW5kZXgtdGVz
dHMKKyAgICAgICAgICAgIGlmICh0aGlzLm1fbWV0aG9kICE9IGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFNfUkFOR0VEKQorICAgICAgICAgICAgICAgIHRo
aXMuYWRkQ2hpbGQobmV3IGVzM2ZEcmF3VGVzdHMuSW5kZXhHcm91cCgnaW5kaWNlcycsICdJbmRl
eCB0ZXN0cycsIHRoaXMubV9tZXRob2QpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFy
IG5keCA9IDA7IG5keCA8IHByaW1pdGl2ZS5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICB2
YXIgbmFtZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMucHJpbWl0aXZlVG9TdHJpbmcocHJp
bWl0aXZlW25keF0pOworICAgICAgICAgICAgdmFyIGRlc2MgPSBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLnByaW1pdGl2ZVRvU3RyaW5nKHByaW1pdGl2ZVtuZHhdKTsKKworICAgICAgICAgICAg
dGhpcy5hZGRDaGlsZChuZXcgZXMzZkRyYXdUZXN0cy5BdHRyaWJ1dGVHcm91cChuYW1lLCBkZXNj
LCB0aGlzLm1fbWV0aG9kLCBwcmltaXRpdmVbbmR4XSwgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5JbmRleFR5cGUuU0hPUlQsIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZG
RVIpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRHJhd1Rlc3Rz
LkdyaWRQcm9ncmFtCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3NnbHJT
aGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5H
cmlkUHJvZ3JhbSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge3NnbHJTaGFkZXJQ
cm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbn0gKi8gdmFyIGRlY2wgPSBuZXcgc2dsclNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9uKCk7CisKKyAgICAgICAgZGVjbC5w
dXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUo
J2FfcG9zaXRpb24nLCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsKKyAg
ICAgICAgZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0
ZXhBdHRyaWJ1dGUoJ2Ffb2Zmc2V0JywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZM
T0FUKSk7CisgICAgICAgIGRlY2wucHVzaFZlcnRleEF0dHJpYnV0ZShuZXcgc2dsclNoYWRlclBy
b2dyYW0uVmVydGV4QXR0cmlidXRlKCdhX2NvbG9yJywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNW
ZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4VG9GcmFnbWVudFZhcnlp
bmcobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nKHJyR2VuZXJp
Y1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hGcmFnbWVu
dE91dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQocnJHZW5lcmljVmVj
dG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4U291
cmNlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UoCisgICAgICAgICAgICAnI3Zl
cnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247
XG4nICsKKyAgICAgICAgICAgICdpbiBoaWdocCB2ZWM0IGFfb2Zmc2V0O1xuJyArCisgICAgICAg
ICAgICAnaW4gaGlnaHAgdmVjNCBhX2NvbG9yO1xuJyArCisgICAgICAgICAgICAnb3V0IG1lZGl1
bXAgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluKHZvaWQpXG4nICsK
KyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0
aW9uICsgYV9vZmZzZXQ7XG4nICsKKyAgICAgICAgICAgICcgdl9jb2xvciA9IGFfY29sb3I7XG4n
ICsKKyAgICAgICAgICAgICd9XG4nCisgICAgICAgICkpOworICAgICAgICBkZWNsLnB1c2hGcmFn
bWVudFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UoCisgICAgICAg
ICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yO1xuJyArCisgICAgICAgICAgICAn
aW4gbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4odm9p
ZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBkRVFQX0ZyYWdDb2xv
ciA9IHZfY29sb3I7XG4nICsKKyAgICAgICAgICAgICd9XG4nCisgICAgICAgICkpOworCisgICAg
ICAgIHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0uY2FsbCh0aGlzLCBkZWNsKTsKKyAg
ICB9OworCisgICAgZXMzZkRyYXdUZXN0cy5HcmlkUHJvZ3JhbS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0ucHJvdG90eXBlKTsKKyAgICBl
czNmRHJhd1Rlc3RzLkdyaWRQcm9ncmFtLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZEcmF3
VGVzdHMuR3JpZFByb2dyYW07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVy
dGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAqIEBwYXJhbSB7QXJyYXk8cnJW
ZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5HcmlkUHJvZ3JhbS5wcm90
b3R5cGUuc2hhZGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKGlucHV0cywgcGFja2V0cywgbnVtUGFja2V0
cykgeworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1QYWNrZXRzOyArK25keCkg
eworICAgICAgICAgICAgcGFja2V0c1tuZHhdLnBvc2l0aW9uID0gZGVNYXRoLmFkZCgKKyAgICAg
ICAgICAgICAgICByclZlcnRleEF0dHJpYi5yZWFkVmVydGV4QXR0cmliKGlucHV0c1swXSwgcGFj
a2V0c1tuZHhdLmluc3RhbmNlTmR4LCBwYWNrZXRzW25keF0udmVydGV4TmR4LCByckdlbmVyaWNW
ZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpLAorICAgICAgICAgICAgICAgIHJyVmVydGV4QXR0
cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzWzFdLCBwYWNrZXRzW25keF0uaW5zdGFuY2VOZHgs
IHBhY2tldHNbbmR4XS52ZXJ0ZXhOZHgsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5G
TE9BVCkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBwYWNrZXRzW25keF0ub3V0cHV0c1sw
XSA9IHJyVmVydGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzWzJdLCBwYWNrZXRzW25k
eF0uaW5zdGFuY2VOZHgsIHBhY2tldHNbbmR4XS52ZXJ0ZXhOZHgsIHJyR2VuZXJpY1ZlY3Rvci5H
ZW5lcmljVmVjVHlwZS5GTE9BVCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IHBhY2tldHMK
KyAgICAgKiBAcGFyYW0ge3JyU2hhZGluZ0NvbnRleHQuRnJhZ21lbnRTaGFkaW5nQ29udGV4dH0g
Y29udGV4dAorICAgICAqLworICAgIGVzM2ZEcmF3VGVzdHMuR3JpZFByb2dyYW0ucHJvdG90eXBl
LnNoYWRlRnJhZ21lbnRzID0gZnVuY3Rpb24ocGFja2V0cywgY29udGV4dCkgeworICAgICAgICBm
b3IgKHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHggPCBwYWNrZXRzLmxlbmd0aDsgKytwYWNr
ZXROZHgpCisgICAgICAgIGZvciAodmFyIGZyYWdOZHggPSAwOyBmcmFnTmR4IDwgNDsgKytmcmFn
TmR4KQorICAgICAgICAgICAgcGFja2V0c1twYWNrZXROZHhdLnZhbHVlID0gcnJTaGFkaW5nQ29u
dGV4dC5yZWFkVHJpYW5nbGVWYXJ5aW5nKHBhY2tldHNbcGFja2V0TmR4XSwgY29udGV4dCwgZnJh
Z05keCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEluc3RhbmNlZEdyaWRSZW5kZXJUZXN0
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZ3JpZFNpZGUKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHVzZUluZGljZXMKKyAgICAgKi8KKyAgICBlczNmRHJhd1Rlc3RzLkluc3RhbmNlZEdy
aWRSZW5kZXJUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzYywgZ3JpZFNpZGUsIHVzZUluZGljZXMp
IHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsK
KyAgICAgICAgdGhpcy5tX2dyaWRTaWRlID0gZ3JpZFNpZGU7CisgICAgICAgIHRoaXMubV91c2VJ
bmRpY2VzID0gdXNlSW5kaWNlczsKKyAgICB9OworCisgICAgZXMzZkRyYXdUZXN0cy5JbnN0YW5j
ZWRHcmlkUmVuZGVyVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRl
cXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZkRyYXdUZXN0cy5JbnN0YW5jZWRHcmlkUmVuZGVy
VGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRHJhd1Rlc3RzLkluc3RhbmNlZEdyaWRS
ZW5kZXJUZXN0OworCisgICAgLyoqCisgICAgICogaXRlcmF0ZQorICAgICAqIEByZXR1cm4ge3Rj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5JbnN0
YW5jZWRHcmlkUmVuZGVyVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgcmVuZGVyVGFyZ2V0V2lkdGggPSBNYXRoLm1pbigxMDI0LCBnbC5jYW52YXMud2lk
dGgpOworICAgICAgICB2YXIgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gTWF0aC5taW4oMTAyNCwgZ2wu
Y2FudmFzLmhlaWdodCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyR0xDb250ZXh0LkdMQ29u
dGV4dH0gKi8gdmFyIGN0eCA9IG5ldyBzZ2xyR0xDb250ZXh0LkdMQ29udGV4dChnbCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgc3VyZmFjZSA9IG5ldyB0
Y3VTdXJmYWNlLlN1cmZhY2UocmVuZGVyVGFyZ2V0V2lkdGgsIHJlbmRlclRhcmdldEhlaWdodCk7
CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkRyYXdUZXN0cy5HcmlkUHJvZ3JhbX0gKi8gdmFyIHBy
b2dyYW0gPSBuZXcgZXMzZkRyYXdUZXN0cy5HcmlkUHJvZ3JhbSgpOworCisgICAgICAgIC8vIHJl
bmRlcgorCisgICAgICAgIHRoaXMucmVuZGVyVG8oY3R4LCBwcm9ncmFtLCBzdXJmYWNlKTsKKwor
ICAgICAgICAvLyB2ZXJpZnkgaW1hZ2UKKworICAgICAgICBpZiAodGhpcy52ZXJpZnlJbWFnZShz
dXJmYWNlKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoJycpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdJbmNvcnJlY3QgcmVuZGVyaW5nIHJlc3VsdCcpOworICAgICAg
ICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3NnbHJHTENvbnRleHQuR0xDb250ZXh0fSBjdHgKKyAgICAgKiBA
cGFyYW0ge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0KKyAgICAgKiBA
cGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0
cy5JbnN0YW5jZWRHcmlkUmVuZGVyVGVzdC5wcm90b3R5cGUucmVuZGVyVG8gPSBmdW5jdGlvbihj
dHgsIHByb2dyYW0sIGRzdCkgeworICAgICAgICB2YXIgZ3JlZW4gPSBbMCwgMSwgMCwgMV07Cisg
ICAgICAgIHZhciB5ZWxsb3cgPSBbMSwgMSwgMCwgMV07CisKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTEJ1ZmZlcn0gKi8gdmFyIHBvc2l0aW9uQnVmID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBl
IHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIG9mZnNldEJ1ZiA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xCdWZmZXJ9ICovIHZhciBjb2xvckJ1ZiA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xCdWZmZXJ9ICovIHZhciBpbmRleEJ1ZiA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbUlEID0gY3R4LmNyZWF0ZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcG9zTG9jYXRpb24gPSBj
dHguZ2V0QXR0cmliTG9jYXRpb24oLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovIChwcm9ncmFt
SUQpLCAnYV9wb3NpdGlvbicpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9m
ZnNldExvY2F0aW9uID0gY3R4LmdldEF0dHJpYkxvY2F0aW9uKC8qKiBAdHlwZSB7V2ViR0xQcm9n
cmFtfSAqLyAocHJvZ3JhbUlEKSwgJ2Ffb2Zmc2V0Jyk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgY29sb3JMb2NhdGlvbiA9IGN0eC5nZXRBdHRyaWJMb2NhdGlvbigvKiogQHR5
cGUge1dlYkdMUHJvZ3JhbX0gKi8gKHByb2dyYW1JRCksICdhX2NvbG9yJyk7CisKKyAgICAgICAg
dmFyIGNlbGxXID0gMi4wIC8gdGhpcy5tX2dyaWRTaWRlOworICAgICAgICB2YXIgY2VsbEggPSAy
LjAgLyB0aGlzLm1fZ3JpZFNpZGU7CisgICAgICAgIHZhciB2ZXJ0ZXhQb3NpdGlvbnMgPSBuZXcg
RmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgIDAsIDAsIDAsIDEsCisgICAgICAgICAgICBjZWxs
VywgMCwgMCwgMSwKKyAgICAgICAgICAgIDAsIGNlbGxILCAwLCAxLAorCisgICAgICAgICAgICAw
LCBjZWxsSCwgMCwgMSwKKyAgICAgICAgICAgIGNlbGxXLCAwLCAwLCAxLAorICAgICAgICAgICAg
Y2VsbFcsIGNlbGxILCAwLCAxCisgICAgICAgIF0pOworCisgICAgICAgIHZhciBpbmRpY2VzID0g
bmV3IFVpbnQxNkFycmF5KFsKKyAgICAgICAgICAgIDAsIDQsIDMsCisgICAgICAgICAgICAyLCAx
LCA1CisgICAgICAgIF0pOworCisgICAgICAgIHZhciBvZmZzZXRzID0gW107CisgICAgICAgIGZv
ciAodmFyIHggPSAwOyB4IDwgdGhpcy5tX2dyaWRTaWRlOyArK3gpCisgICAgICAgIGZvciAodmFy
IHkgPSAwOyB5IDwgdGhpcy5tX2dyaWRTaWRlOyArK3kpIHsKKyAgICAgICAgICAgIG9mZnNldHMu
cHVzaCh4ICogY2VsbFcgLSAxLjApOworICAgICAgICAgICAgb2Zmc2V0cy5wdXNoKHkgKiBjZWxs
VyAtIDEuMCk7CisgICAgICAgICAgICBvZmZzZXRzLnB1c2goMCwgMCk7CisgICAgICAgIH0KKyAg
ICAgICAgb2Zmc2V0cyA9IG5ldyBGbG9hdDMyQXJyYXkob2Zmc2V0cyk7CisKKyAgICAgICAgdmFy
IGNvbG9ycyA9IFtdOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHRoaXMubV9ncmlkU2lk
ZTsgKyt4KQorICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHRoaXMubV9ncmlkU2lkZTsgKyt5
KSB7CisgICAgICAgICAgICB2YXIgY29sb3JUb1B1c2ggPSAoKHggKyB5KSAlIDIgPT0gMCkgPyAo
Z3JlZW4pIDogKHllbGxvdyk7CisgICAgICAgICAgICBjb2xvcnMucHVzaChjb2xvclRvUHVzaFsw
XSk7CisgICAgICAgICAgICBjb2xvcnMucHVzaChjb2xvclRvUHVzaFsxXSk7CisgICAgICAgICAg
ICBjb2xvcnMucHVzaChjb2xvclRvUHVzaFsyXSk7CisgICAgICAgICAgICBjb2xvcnMucHVzaChj
b2xvclRvUHVzaFszXSk7CisgICAgICAgIH0KKyAgICAgICAgY29sb3JzID0gbmV3IEZsb2F0MzJB
cnJheShjb2xvcnMpOworCisgICAgICAgIHBvc2l0aW9uQnVmID0gY3R4LmNyZWF0ZUJ1ZmZlcigp
OworICAgICAgICBjdHguYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQnVmKTsK
KyAgICAgICAgY3R4LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3NpdGlvbnMs
IGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIocG9zTG9j
YXRpb24sIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIGN0eC52ZXJ0ZXhBdHRy
aWJEaXZpc29yKHBvc0xvY2F0aW9uLCAwKTsKKyAgICAgICAgY3R4LmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc0xvY2F0aW9uKTsKKworICAgICAgICBvZmZzZXRCdWYgPSBjdHguY3JlYXRlQnVm
ZmVyKCk7CisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0QnVm
KTsKKyAgICAgICAgY3R4LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvZmZzZXRzLCBnbC5T
VEFUSUNfRFJBVyk7CisgICAgICAgIGN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9mZnNldExvY2F0
aW9uLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgICBjdHgudmVydGV4QXR0cmli
RGl2aXNvcihvZmZzZXRMb2NhdGlvbiwgMSk7CisgICAgICAgIGN0eC5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShvZmZzZXRMb2NhdGlvbik7CisKKyAgICAgICAgY29sb3JCdWYgPSBjdHguY3JlYXRl
QnVmZmVyKCk7CisgICAgICAgIGN0eC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JC
dWYpOworICAgICAgICBjdHguYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9ycywgZ2wu
U1RBVElDX0RSQVcpOworICAgICAgICBjdHgudmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0
aW9uLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgICBjdHgudmVydGV4QXR0cmli
RGl2aXNvcihjb2xvckxvY2F0aW9uLCAxKTsKKyAgICAgICAgY3R4LmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGNvbG9yTG9jYXRpb24pOworCisgICAgICAgIGlmICh0aGlzLm1fdXNlSW5kaWNlcykg
eworICAgICAgICAgICAgaW5kZXhCdWYgPSBjdHguY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAg
ICBjdHguYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWYpOworICAg
ICAgICAgICAgY3R4LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMs
IGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0eC5jbGVhckNvbG9yKDAs
IDAsIDAsIDEpOworICAgICAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAg
ICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIGRzdC5nZXRXaWR0aCgpLCBkc3QuZ2V0SGVpZ2h0KCkp
OworCisgICAgICAgIGN0eC51c2VQcm9ncmFtKHByb2dyYW1JRCk7CisgICAgICAgIGlmICh0aGlz
Lm1fdXNlSW5kaWNlcykKKyAgICAgICAgICAgIGN0eC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wu
VFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgdGhpcy5tX2dyaWRTaWRlICogdGhp
cy5tX2dyaWRTaWRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3R4LmRyYXdBcnJheXNJ
bnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCA2LCB0aGlzLm1fZ3JpZFNpZGUgKiB0aGlzLm1fZ3Jp
ZFNpZGUpOworICAgICAgICBjdHgudXNlUHJvZ3JhbShudWxsKTsKKworICAgICAgICBpZiAodGhp
cy5tX3VzZUluZGljZXMpCisgICAgICAgICAgICBjdHguZGVsZXRlQnVmZmVyKGluZGV4QnVmKTsK
KyAgICAgICAgY3R4LmRlbGV0ZUJ1ZmZlcihjb2xvckJ1Zik7CisgICAgICAgIGN0eC5kZWxldGVC
dWZmZXIob2Zmc2V0QnVmKTsKKyAgICAgICAgY3R4LmRlbGV0ZUJ1ZmZlcihwb3NpdGlvbkJ1Zik7
CisgICAgICAgIGN0eC5kZWxldGVQcm9ncmFtKHByb2dyYW1JRCk7CisKKyAgICAgICAgY3R4LmZp
bmlzaCgpOworICAgICAgICBkc3QucmVhZFZpZXdwb3J0KGN0eCwgWzAgLCAwLCBkc3QuZ2V0V2lk
dGgoKSwgZHN0LmdldEhlaWdodCgpXSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBpbWFnZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5JbnN0YW5jZWRHcmlkUmVuZGVyVGVzdC5wcm90b3R5
cGUudmVyaWZ5SW1hZ2UgPSBmdW5jdGlvbihpbWFnZSkgeworICAgICAgICAvLyBcbm90ZSB0aGUg
Z3JlZW4veWVsbG93IHBhdHRlcm4gaXMgb25seSBmb3IgY2xhcml0eS4gVGhlIHRlc3Qgd2lsbCBv
bmx5IHZlcmlmeSB0aGF0IGFsbCBpbnN0YW5jZXMgd2VyZSBkcmF3biBieSBsb29raW5nIGZvciBh
bnl0aGluZyBub24tZ3JlZW4veWVsbG93LgorCisgICAgICAgIHZhciBncmVlbiA9IFswLCAyNTUs
IDAsIDI1NV07CisgICAgICAgIHZhciB5ZWxsb3cgPSBbMjU1LCAyNTUsIDAsIDI1NV07CisgICAg
ICAgIHZhciBjb2xvclRocmVzaG9sZCA9IDIwOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3Vy
ZmFjZS5TdXJmYWNlfSAqLyB2YXIgZXJyb3IgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKGltYWdl
LmdldFdpZHRoKCksIGltYWdlLmdldEhlaWdodCgpKTsKKyAgICAgICAgdmFyIGlzT2sgPSB0cnVl
OworCisgICAgICAgIGZvciAodmFyIHkgPSAxOyB5IDwgaW1hZ2UuZ2V0SGVpZ2h0KCkgLSAxOyB5
KyspCisgICAgICAgIGZvciAodmFyIHggPSAxOyB4IDwgaW1hZ2UuZ2V0V2lkdGgoKSAtIDE7IHgr
KykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciBwaXhlbCA9
IG5ldyB0Y3VSR0JBLlJHQkEoaW1hZ2UuZ2V0UGl4ZWwoeCwgeSkpOworICAgICAgICAgICAgdmFy
IHBpeGVsT2sgPSB0cnVlOworCisgICAgICAgICAgICAvLyBBbnkgcGl4ZWwgd2l0aCAhKEcgfj0g
MjU1KSBpcyBmYXVsdHkgKG5vdCBhIGxpbmVhciBjb21iaW5hdGlvbnMgb2YgZ3JlZW4gYW5kIHll
bGxvdykKKyAgICAgICAgICAgIGlmIChNYXRoLmFicyhwaXhlbC5nZXRHcmVlbigpIC0gMjU1KSA+
IGNvbG9yVGhyZXNob2xkKQorICAgICAgICAgICAgICAgIHBpeGVsT2sgPSBmYWxzZTsKKworICAg
ICAgICAgICAgLy8gQW55IHBpeGVsIHdpdGggIShCIH49IDApIGlzIGZhdWx0eSAobm90IGEgbGlu
ZWFyIGNvbWJpbmF0aW9ucyBvZiBncmVlbiBhbmQgeWVsbG93KQorICAgICAgICAgICAgaWYgKE1h
dGguYWJzKHBpeGVsLmdldEJsdWUoKSAtIDApID4gY29sb3JUaHJlc2hvbGQpCisgICAgICAgICAg
ICAgICAgcGl4ZWxPayA9IGZhbHNlOworCisgICAgICAgICAgICBlcnJvci5zZXRQaXhlbCh4LCB5
LCBwaXhlbE9rID8gWzAsIDI1NSwgMCwgMjU1XSA6IFsyNTUsIDAsIDAsIDI1NV0pOworICAgICAg
ICAgICAgaXNPayA9IGlzT2sgJiYgcGl4ZWxPazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
aXNPaykgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ltYWdlIHZlcmlmaWNh
dGlvbiBmYWlsZWQuJyk7CisgICAgICAgICAgICBkZWJ1ZygnVmVyZmljYXRpb24gcmVzdWx0Jyk7
CisgICAgICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZVdpdGhJbmZvKGltYWdlLmdldEFjY2Vz
cygpLCAnUmVzdWx0Jyk7CisgICAgICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZVdpdGhJbmZv
KGVycm9yLmdldEFjY2VzcygpLCAnRXJyb3IgbWFzaycpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZGVidWcoJ1ZlcmZpY2F0aW9uIHJlc3VsdCcpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGlzT2s7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEluc3RhbmNpbmdHcm91
cAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0KKyAgICAgKi8KKyAgICBlczNmRHJhd1Rlc3RzLkluc3RhbmNpbmdHcm91cCA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2NyKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhp
cywgbmFtZSwgZGVzY3IpOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgfTsK
KworICAgIGVzM2ZEcmF3VGVzdHMuSW5zdGFuY2luZ0dyb3VwLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmRHJhd1Rlc3Rz
Lkluc3RhbmNpbmdHcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRHJhd1Rlc3RzLklu
c3RhbmNpbmdHcm91cDsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBlczNm
RHJhd1Rlc3RzLkluc3RhbmNpbmdHcm91cC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgZ3JpZFdpZHRocyA9IFsKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICA1
LAorICAgICAgICAgICAgMTAsCisgICAgICAgICAgICAzMiwKKyAgICAgICAgICAgIDEwMAorICAg
ICAgICBdOworCisgICAgICAgIC8vIGRyYXdBcnJheXMKKyAgICAgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgZ3JpZFdpZHRocy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICB2YXIgbmFt
ZSA9ICdkcmF3X2FycmF5c19pbnN0YW5jZWRfZ3JpZF8nICsgZ3JpZFdpZHRoc1tuZHhdICsgJ3gn
ICsgZ3JpZFdpZHRoc1tuZHhdOworICAgICAgICAgICAgdmFyIGRlc2MgPSAnRHJhd0FycmF5c0lu
c3RhbmNlZCwgR3JpZCBzaXplICcgKyBncmlkV2lkdGhzW25keF0gKyAneCcgKyBncmlkV2lkdGhz
W25keF07CisKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZEcmF3VGVzdHMuSW5z
dGFuY2VkR3JpZFJlbmRlclRlc3QobmFtZSwgZGVzYywgZ3JpZFdpZHRoc1tuZHhdLCBmYWxzZSkp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gZHJhd0VsZW1lbnRzCisgICAgICAgIGZvciAodmFy
IG5keCA9IDA7IG5keCA8IGdyaWRXaWR0aHMubGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAg
dmFyIG5hbWUgPSAnZHJhd19lbGVtZW50c19pbnN0YW5jZWRfZ3JpZF8nICsgZ3JpZFdpZHRoc1tu
ZHhdICsgJ3gnICsgZ3JpZFdpZHRoc1tuZHhdOworICAgICAgICAgICAgdmFyIGRlc2MgPSAnRHJh
d0VsZW1lbnRzSW5zdGFuY2VkLCBHcmlkIHNpemUgJyArIGdyaWRXaWR0aHNbbmR4XSArICd4JyAr
IGdyaWRXaWR0aHNbbmR4XTsKKworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkRy
YXdUZXN0cy5JbnN0YW5jZWRHcmlkUmVuZGVyVGVzdChuYW1lLCBkZXNjLCBncmlkV2lkdGhzW25k
eF0sIHRydWUpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqLworICAgIGVzM2ZEcmF3
VGVzdHMuVW5pZm9ybVdlaWdodEFycmF5ID0gZnVuY3Rpb24oc2l6ZSkgeworICAgICAgICB0aGlz
LndlaWdodHMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgICAgIHRoaXMud2VpZ2h0c1tpXSA9IDEuMDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogUmFuZG9tR3JvdXAKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGVzY3IKKyAgICAgKi8KKyAgICBlczNmRHJhd1Rlc3RzLlJhbmRv
bUdyb3VwID0gZnVuY3Rpb24obmFtZSwgZGVzY3IpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVx
cFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcik7CisgICAgICAgIHRoaXMubWFrZUV4ZWN1dGFi
bGUoKTsKKyAgICB9OworCisgICAgZXMzZkRyYXdUZXN0cy5SYW5kb21Hcm91cC5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMz
ZkRyYXdUZXN0cy5SYW5kb21Hcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRHJhd1Rl
c3RzLlJhbmRvbUdyb3VwOworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLworICAgIGVz
M2ZEcmF3VGVzdHMuUmFuZG9tR3JvdXAucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1BdHRlbXB0cyA9IDMwMDsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhdHRyaWJDb3VudHMgPSBbMSwg
MiwgNV07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGF0dHJpYldl
aWdodHMgPSBbMzAsIDEwLCAxXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgcHJpbWl0aXZlQ291bnRzID0gWzIsIDYsIDY0XTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgcHJpbWl0aXZlQ291bnRXZWlnaHRzID0gWzIwLCAxMCwgMV07
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGluZGV4T2Zmc2V0cyA9
IFswLCA3LCAxM107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGlu
ZGV4T2Zmc2V0V2VpZ2h0cyA9IFsyMCwgMjAsIDFdOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBmaXJzdHMgPSBbMCwgNiwgMTJdOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBmaXJzdFdlaWdodHMgPSBbMjAsIDIwLCAxXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5zdGFuY2VDb3VudHMgPSBbMSwg
MiwgMTYsIDE3XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5z
dGFuY2VXZWlnaHRzID0gWzIwLCAxMCwgNSwgMV07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIGluZGV4TWlucyA9IFswLCAxLCAzLCA5XTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kZXhNYXhzID0gWzUsIDksIDEyOSwgMjU3XTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kZXhXZWlnaHRzID0g
WzUwLCA1MCwgNTAsIDUwXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgb2Zmc2V0cyA9IFswLCAxLCA1LCAxMl07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIG9mZnNldFdlaWdodHMgPSBbNTAsIDEwLCAxMCwgMTBdOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzdHJpZGVzID0gWzAsIDcsIDE2LCAxN107
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN0cmlkZVdlaWdodHMg
PSBbNTAsIDEwLCAxMCwgMTBdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBpbnN0YW5jZURpdmlzb3JzID0gWzAsIDEsIDMsIDEyOV07CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGluc3RhbmNlRGl2aXNvcldlaWdodHMgPSBbNzAsIDMw
LCAxMCwgMTBdOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5QcmltaXRpdmU+fSAqLyB2YXIgcHJpbWl0aXZlcyA9IFsKKyAgICAgICAgICAgIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlBPSU5UUywKKyAgICAgICAgICAgIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFUywKKyAgICAgICAgICAg
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFX0ZBTiwKKyAgICAg
ICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFX1NUUklQ
LAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuTElORVMs
CisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX1NU
UklQLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuTElO
RV9MT09QCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkRyYXdUZXN0cy5Vbmlm
b3JtV2VpZ2h0QXJyYXl9ICovIHZhciBwcmltaXRpdmVXZWlnaHRzID0gbmV3IGVzM2ZEcmF3VGVz
dHMuVW5pZm9ybVdlaWdodEFycmF5KHByaW1pdGl2ZXMubGVuZ3RoKTsKKworICAgICAgICAvKiog
QHR5cGUge0FycmF5PGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZD59ICovIHZh
ciBkcmF3TWV0aG9kcyA9IFsKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
RHJhd01ldGhvZC5EUkFXQVJSQVlTLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5EcmF3TWV0aG9kLkRSQVdBUlJBWVNfSU5TVEFOQ0VELAorICAgICAgICAgICAgZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdFTEVNRU5UUywKKyAgICAgICAgICAg
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFNfUkFOR0VE
LAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdF
TEVNRU5UU19JTlNUQU5DRUQKKyAgICAgICAgXTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRHJh
d1Rlc3RzLlVuaWZvcm1XZWlnaHRBcnJheX0gKi8gdmFyIGRyYXdNZXRob2RXZWlnaHRzID0gbmV3
IGVzM2ZEcmF3VGVzdHMuVW5pZm9ybVdlaWdodEFycmF5KGRyYXdNZXRob2RzLmxlbmd0aCk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4
VHlwZT59ICovIHZhciBpbmRleFR5cGVzID0gWworICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5JbmRleFR5cGUuQllURSwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuSW5kZXhUeXBlLlNIT1JULAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5JbmRleFR5cGUuSU5UCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7ZXMz
ZkRyYXdUZXN0cy5Vbmlmb3JtV2VpZ2h0QXJyYXl9ICovIHZhciBpbmRleFR5cGVXZWlnaHRzID0g
bmV3IGVzM2ZEcmF3VGVzdHMuVW5pZm9ybVdlaWdodEFycmF5KGluZGV4VHlwZXMubGVuZ3RoKTsK
KworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3Rv
cmFnZT59ICovIHZhciBzdG9yYWdlcyA9IFsKKyAgICAgICAgICAgIC8vZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5TdG9yYWdlLlVTRVIsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLlN0b3JhZ2UuQlVGRkVSCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7ZXMz
ZkRyYXdUZXN0cy5Vbmlmb3JtV2VpZ2h0QXJyYXl9ICovIHZhciBzdG9yYWdlV2VpZ2h0cyA9IG5l
dyBlczNmRHJhd1Rlc3RzLlVuaWZvcm1XZWlnaHRBcnJheShzdG9yYWdlcy5sZW5ndGgpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5
cGU+fSAqLyB2YXIgaW5wdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuSW5wdXRUeXBlLkZMT0FULAorICAgICAgICAgICAgLy9nbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLklucHV0VHlwZS5GSVhFRCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuSW5wdXRUeXBlLkJZVEUsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLklucHV0VHlwZS5TSE9SVCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVCwKKyAgICAgICAgICAgIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVCwKKyAgICAgICAgICAgIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkhBTEYsCisgICAgICAgICAgICBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCwK
KyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVF8yXzEw
XzEwXzEwCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkRyYXdUZXN0cy5Vbmlm
b3JtV2VpZ2h0QXJyYXl9ICovIHZhciBpbnB1dFR5cGVXZWlnaHRzID0gbmV3IGVzM2ZEcmF3VGVz
dHMuVW5pZm9ybVdlaWdodEFycmF5KGlucHV0VHlwZXMubGVuZ3RoKTsKKworICAgICAgICAvKiog
QHR5cGUge0FycmF5PGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZT59ICovIHZh
ciBvdXRwdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
T3V0cHV0VHlwZS5GTE9BVCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
T3V0cHV0VHlwZS5WRUMyLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5P
dXRwdXRUeXBlLlZFQzMsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91
dHB1dFR5cGUuVkVDNCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0
cHV0VHlwZS5JTlQsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1
dFR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5JVkVDMiwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5JVkVDMywKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5JVkVDNCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5VVkVDMiwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5VVkVDMywKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5VVkVDNAorICAgICAgICBdOworICAgICAgICAvKiogQHR5cGUge2VzM2ZEcmF3VGVzdHMu
VW5pZm9ybVdlaWdodEFycmF5fSAqLyB2YXIgb3V0cHV0VHlwZVdlaWdodHMgPSBuZXcgZXMzZkRy
YXdUZXN0cy5Vbmlmb3JtV2VpZ2h0QXJyYXkob3V0cHV0VHlwZXMubGVuZ3RoKTsKKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNhZ2U+fSAqLyB2
YXIgdXNhZ2VzID0gWworICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Vc2Fn
ZS5EWU5BTUlDX0RSQVcsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVz
YWdlLlNUQVRJQ19EUkFXLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5V
c2FnZS5TVFJFQU1fRFJBVywKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
VXNhZ2UuU1RSRUFNX1JFQUQsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LlVzYWdlLlNUUkVBTV9DT1BZLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5Vc2FnZS5TVEFUSUNfUkVBRCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNw
ZWMuVXNhZ2UuU1RBVElDX0NPUFksCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLlVzYWdlLkRZTkFNSUNfUkVBRCwKKyAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuVXNhZ2UuRFlOQU1JQ19DT1BZCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZkRyYXdUZXN0cy5Vbmlmb3JtV2VpZ2h0QXJyYXl9ICovIHZhciB1c2FnZVdlaWdodHMgPSBu
ZXcgZXMzZkRyYXdUZXN0cy5Vbmlmb3JtV2VpZ2h0QXJyYXkodXNhZ2VzLmxlbmd0aCk7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5zZXJ0ZWRIYXNoZXMgPSBb
XTsgLy8nc2V0JyBzdHJ1Y3R1cmUKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBp
bnNlcnRlZENvdW50ID0gMDsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1B
dHRlbXB0czsgKytuZHgpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9t
fSAqLyB2YXIgcmFuZG9tID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGM1NTEzOTMgKyBuZHgpOyAv
LyByYW5kb20gZG9lcyBub3QgZGVwZW5kIG9uIHByZXZpb3VzIGNhc2VzCisKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXR0cmlidXRlQ291bnQgPSByYW5kb20uY2hvb3Nl
V2VpZ2h0ZWQoYXR0cmliQ291bnRzLCBhdHRyaWJXZWlnaHRzKTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlY30gKi8gdmFyIHNwZWMgPSBuZXcgZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYygpOworCisgICAgICAgICAgICAvL3NwZWMuYXBpVHlwZSA9IGds
dTo6QXBpVHlwZTo6ZXMoMywwKTsKKyAgICAgICAgICAgIHNwZWMucHJpbWl0aXZlID0gLyoqIEB0
eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZX0gKi8gKHJhbmRvbS5jaG9v
c2VXZWlnaHRlZChwcmltaXRpdmVzLCBwcmltaXRpdmVXZWlnaHRzLndlaWdodHMpKTsKKyAgICAg
ICAgICAgIHNwZWMucHJpbWl0aXZlQ291bnQgPSByYW5kb20uY2hvb3NlV2VpZ2h0ZWQocHJpbWl0
aXZlQ291bnRzLCBwcmltaXRpdmVDb3VudFdlaWdodHMpOworICAgICAgICAgICAgc3BlYy5kcmF3
TWV0aG9kID0gLyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9
ICovIChyYW5kb20uY2hvb3NlV2VpZ2h0ZWQoZHJhd01ldGhvZHMsIGRyYXdNZXRob2RXZWlnaHRz
LndlaWdodHMpKTsKKyAgICAgICAgICAgIHNwZWMuaW5kZXhUeXBlID0gLyoqIEB0eXBlIHtnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4VHlwZX0gKi8gKHJhbmRvbS5jaG9vc2VXZWlnaHRl
ZChpbmRleFR5cGVzLCBpbmRleFR5cGVXZWlnaHRzLndlaWdodHMpKTsKKyAgICAgICAgICAgIHNw
ZWMuaW5kZXhQb2ludGVyT2Zmc2V0ID0gcmFuZG9tLmNob29zZVdlaWdodGVkKGluZGV4T2Zmc2V0
cywgaW5kZXhPZmZzZXRXZWlnaHRzKTsKKyAgICAgICAgICAgIHNwZWMuaW5kZXhTdG9yYWdlID0g
LyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2V9ICovIChyYW5kb20u
Y2hvb3NlV2VpZ2h0ZWQoc3RvcmFnZXMsIHN0b3JhZ2VXZWlnaHRzLndlaWdodHMpKTsKKyAgICAg
ICAgICAgIHNwZWMuZmlyc3QgPSByYW5kb20uY2hvb3NlV2VpZ2h0ZWQoZmlyc3RzLCBmaXJzdFdl
aWdodHMpOworICAgICAgICAgICAgc3BlYy5pbmRleE1pbiA9IHJhbmRvbS5jaG9vc2VXZWlnaHRl
ZChpbmRleE1pbnMsIGluZGV4V2VpZ2h0cyk7CisgICAgICAgICAgICBzcGVjLmluZGV4TWF4ID0g
cmFuZG9tLmNob29zZVdlaWdodGVkKGluZGV4TWF4cywgaW5kZXhXZWlnaHRzKTsKKyAgICAgICAg
ICAgIHNwZWMuaW5zdGFuY2VDb3VudCA9IHJhbmRvbS5jaG9vc2VXZWlnaHRlZChpbnN0YW5jZUNv
dW50cywgaW5zdGFuY2VXZWlnaHRzKTsKKworICAgICAgICAgICAgLy8gY2hlY2sgc3BlYyBpcyBs
ZWdhbAorICAgICAgICAgICAgaWYgKCFzcGVjLnZhbGlkKCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIHZhciBoYXNaZXJvRGl2aXNvciA9IGZhbHNlOworICAgICAg
ICAgICAgZm9yICh2YXIgYXR0ck5keCA9IDA7IGF0dHJOZHggPCBhdHRyaWJ1dGVDb3VudDspIHsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciB2YWxpZDsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRl
U3BlY30gKi8gdmFyIGF0dHJpYlNwZWMgPSBuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5B
dHRyaWJ1dGVTcGVjKCk7CisKKyAgICAgICAgICAgICAgICBhdHRyaWJTcGVjLmlucHV0VHlwZSA9
IC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9ICovIChyYW5k
b20uY2hvb3NlV2VpZ2h0ZWQoaW5wdXRUeXBlcywgaW5wdXRUeXBlV2VpZ2h0cy53ZWlnaHRzKSk7
CisgICAgICAgICAgICAgICAgYXR0cmliU3BlYy5vdXRwdXRUeXBlID0gLyoqIEB0eXBlIHtnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGV9ICovIChyYW5kb20uY2hvb3NlV2VpZ2h0
ZWQob3V0cHV0VHlwZXMsIG91dHB1dFR5cGVXZWlnaHRzLndlaWdodHMpKTsKKyAgICAgICAgICAg
ICAgICBhdHRyaWJTcGVjLnN0b3JhZ2UgPSAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuU3RvcmFnZX0gKi8gKHJhbmRvbS5jaG9vc2VXZWlnaHRlZChzdG9yYWdlcywgc3RvcmFn
ZVdlaWdodHMud2VpZ2h0cykpOworICAgICAgICAgICAgICAgIGF0dHJpYlNwZWMudXNhZ2UgPSAv
KiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNhZ2V9ICovIChyYW5kb20uY2hv
b3NlV2VpZ2h0ZWQodXNhZ2VzLCB1c2FnZVdlaWdodHMud2VpZ2h0cykpOworICAgICAgICAgICAg
ICAgIGF0dHJpYlNwZWMuY29tcG9uZW50Q291bnQgPSByYW5kb20uZ2V0SW50KDEsIDQpOworICAg
ICAgICAgICAgICAgIGF0dHJpYlNwZWMub2Zmc2V0ID0gcmFuZG9tLmNob29zZVdlaWdodGVkKG9m
ZnNldHMsIG9mZnNldFdlaWdodHMpOworICAgICAgICAgICAgICAgIGF0dHJpYlNwZWMuc3RyaWRl
ID0gcmFuZG9tLmNob29zZVdlaWdodGVkKHN0cmlkZXMsIHN0cmlkZVdlaWdodHMpOworICAgICAg
ICAgICAgICAgIGF0dHJpYlNwZWMubm9ybWFsaXplID0gcmFuZG9tLmdldEJvb2woKTsKKyAgICAg
ICAgICAgICAgICBhdHRyaWJTcGVjLmluc3RhbmNlRGl2aXNvciA9IHJhbmRvbS5jaG9vc2VXZWln
aHRlZChpbnN0YW5jZURpdmlzb3JzLCBpbnN0YW5jZURpdmlzb3JXZWlnaHRzKTsKKyAgICAgICAg
ICAgICAgICBhdHRyaWJTcGVjLnVzZURlZmF1bHRBdHRyaWJ1dGUgPSByYW5kb20uZ2V0Qm9vbCgp
OworCisgICAgICAgICAgICAgICAgLy8gY2hlY2sgc3BlYyBpcyBsZWdhbAorICAgICAgICAgICAg
ICAgIHZhbGlkID0gYXR0cmliU3BlYy52YWxpZCgvKnNwZWMuYXBpVHlwZSovKTsKKworICAgICAg
ICAgICAgICAgIC8vIHdlIGRvIG5vdCB3YW50IGludGVybGVhdmVkIGVsZW1lbnRzLiAoTWlnaHQg
cmVzdWx0IGluIHNvbWUgd2VpcmQgZmxvYXRpbmcgcG9pbnQgdmFsdWVzKQorICAgICAgICAgICAg
ICAgIGlmIChhdHRyaWJTcGVjLnN0cmlkZSAmJiBhdHRyaWJTcGVjLmNvbXBvbmVudENvdW50ICog
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbnB1dFR5cGVTaXplKGF0dHJpYlNwZWMuaW5wdXRU
eXBlKSA+IGF0dHJpYlNwZWMuc3RyaWRlKQorICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworCisgICAgICAgICAgICAgICAgLy8gdHJ5IGFnYWluIGlmIG5vdCB2YWxpZAorICAgICAg
ICAgICAgICAgIGlmICh2YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBzcGVjLmF0dHJpYnMu
cHVzaChhdHRyaWJTcGVjKTsKKyAgICAgICAgICAgICAgICAgICAgKythdHRyTmR4OworICAgICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmliU3BlYy5pbnN0YW5jZURpdmlzb3IgPT0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGhhc1plcm9EaXZpc29yID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIERvIG5vdCBjb2xsYXBzZSBhbGwg
dmVydGV4IHBvc2l0aW9ucyB0byBhIHNpbmdsZSBwb3NpdGlvbnMKKyAgICAgICAgICAgIGlmIChz
cGVjLnByaW1pdGl2ZSAhPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5QT0lO
VFMpIHsKKyAgICAgICAgICAgICAgICBzcGVjLmF0dHJpYnNbMF0uaW5zdGFuY2VEaXZpc29yID0g
MDsKKyAgICAgICAgICAgICAgICBoYXNaZXJvRGl2aXNvciA9IHRydWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZW5hYmxlZCB2
ZXJ0ZXggYXR0cmlidXRlIGFycmF5IHRoYXQgaGFzIGEgZGl2aXNvciBvZiB6ZXJvIGluIFdlYkdM
LgorICAgICAgICAgICAgLy8gVGhpcyBsaW1pdGF0aW9uIGlzIGFkZGVkIHRvIGtlZXAgY29tcGF0
aWJsZSB3aXRoIEQzRC4gSXQgZGlmZmVycyBmcm9tIHRoZSBmZWF0dXJlIGluIGdsZXMuCisgICAg
ICAgICAgICAvLyBTZWUgdGhlIHNlY3Rpb24gPEVuYWJsZWQgQXR0cmlidXRlPiBpbiBXZWJHTCBz
cGVjOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zcGVjcy9sYXRlc3Qv
Mi4wLyM1LjYKKyAgICAgICAgICAgIGlmIChoYXNaZXJvRGl2aXNvciA9PSBmYWxzZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSXMgcmVuZGVyIHJlc3VsdCBt
ZWFuaW5nZnVsPworICAgICAgICAgICAgLy8gT25seSBvbmUgdmVydGV4CisgICAgICAgICAgICBp
ZiAoc3BlYy5kcmF3TWV0aG9kID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhv
ZC5EUkFXRUxFTUVOVFNfUkFOR0VEICYmIHNwZWMuaW5kZXhNaW4gPT0gc3BlYy5pbmRleE1heCAm
JiBzcGVjLnByaW1pdGl2ZSAhPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5Q
T0lOVFMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoc3BlYy5h
dHRyaWJzWzBdLnVzZURlZmF1bHRBdHRyaWJ1dGUgJiYgc3BlYy5wcmltaXRpdmUgIT0gZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuUE9JTlRTKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAvLyBUcmlhbmdsZSBvbmx5IG9uIG9uZSBheGlzCisgICAg
ICAgICAgICBpZiAoc3BlYy5wcmltaXRpdmUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Q
cmltaXRpdmUuVFJJQU5HTEVTIHx8IHNwZWMucHJpbWl0aXZlID09IGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFX0ZBTiB8fCBzcGVjLnByaW1pdGl2ZSA9PSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9TVFJJUCkgeworICAgICAg
ICAgICAgICAgIGlmIChzcGVjLmF0dHJpYnNbMF0uY29tcG9uZW50Q291bnQgPT0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKHNwZWMuYXR0cmli
c1swXS5vdXRwdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5G
TE9BVCB8fCBzcGVjLmF0dHJpYnNbMF0ub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLk91dHB1dFR5cGUuSU5UIHx8IHNwZWMuYXR0cmlic1swXS5vdXRwdXRUeXBlID09IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VSU5UKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoc3BlYy5kcmF3TWV0aG9kID09IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFNfUkFOR0VEICYm
IChzcGVjLmluZGV4TWF4IC0gc3BlYy5pbmRleE1pbikgPCAyKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIGNhc2UKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGFzaCA9IHNwZWMuaGFzaCgpOwor
ICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5keCA9IDA7IGF0dHJOZHggPCBhdHRyaWJ1dGVDb3Vu
dDsgKythdHRyTmR4KQorICAgICAgICAgICAgICAgIGhhc2ggPSBkZU1hdGguYmluYXJ5T3AoZGVN
YXRoLnNoaWZ0TGVmdChoYXNoLCAyKSwgc3BlYy5hdHRyaWJzW2F0dHJOZHhdLmhhc2goKSwgZGVN
YXRoLkJpbmFyeU9wLlhPUik7CisKKyAgICAgICAgICAgIGlmIChpbnNlcnRlZEhhc2hlcy5pbmRl
eE9mKGhhc2gpID09IC0xKSB7CisgICAgICAgICAgICAgICAgLy8gT25seSBwcm9wZXJseSBhbGln
bmVkCisgICAgICAgICAgICAgICAgaWYgKHNwZWMuaXNDb21wYXRpYmlsaXR5VGVzdCgpICE9IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQ29tcGF0aWJpbGl0eVRlc3RUeXBlLlVOQUxJR05FRF9P
RkZTRVQgJiYKKyAgICAgICAgICAgICAgICAgICAgc3BlYy5pc0NvbXBhdGliaWxpdHlUZXN0KCkg
IT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Db21wYXRpYmlsaXR5VGVzdFR5cGUuVU5BTElH
TkVEX1NUUklERSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3Qoc3BlYywgaW5zZXJ0ZWRDb3VudCArICcnLCBzcGVjLmdldERlc2Mo
KSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZVV0aWwuZGVQdXNoVW5p
cXVlVG9BcnJheShpbnNlcnRlZEhhc2hlcywgaGFzaCk7CisKKyAgICAgICAgICAgICAgICArK2lu
c2VydGVkQ291bnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fQorICAgICAqLworICAgIGVzM2ZEcmF3VGVzdHMuRHJhd1Rlc3QgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnZHJhdycsICdEcmF3aW5n
IHRlc3RzJyk7CisgICAgICAgIHRoaXMubWFrZUV4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAg
ZXMzZkRyYXdUZXN0cy5EcmF3VGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RD
YXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZkRyYXdUZXN0cy5EcmF3VGVzdC5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRHJhd1Rlc3RzLkRyYXdUZXN0OworCisgICAgLyoqCisg
ICAgICogaW5pdAorICAgICAqLworICAgIGVzM2ZEcmF3VGVzdHMuRHJhd1Rlc3QucHJvdG90eXBl
LmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQmFzaWMKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2Q+fSAqLyB2YXIgYmFz
aWNNZXRob2RzID0gWworICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3
TWV0aG9kLkRSQVdBUlJBWVMsCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LkRyYXdNZXRob2QuRFJBV0VMRU1FTlRTLAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdBUlJBWVNfSU5TVEFOQ0VELAorICAgICAgICAgICAgZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdFTEVNRU5UU19JTlNUQU5DRUQs
CisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJBV0VM
RU1FTlRTX1JBTkdFRAorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IGJhc2ljTWV0aG9kcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuZHJhd01ldGhvZFRvU3RyaW5nKGJhc2ljTWV0aG9k
c1tuZHhdKTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5kcmF3TWV0aG9kVG9TdHJpbmcoYmFzaWNNZXRob2RzW25keF0pOworCisgICAgICAgICAgICB0
aGlzLmFkZENoaWxkKG5ldyBlczNmRHJhd1Rlc3RzLk1ldGhvZEdyb3VwKG5hbWUsIGRlc2MsIGJh
c2ljTWV0aG9kc1tuZHhdKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBleHRyZW1lIGluc3Rh
bmNpbmcKKworICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmRHJhd1Rlc3RzLkluc3RhbmNp
bmdHcm91cCgnaW5zdGFuY2luZycsICdkcmF3IHRlc3RzIHdpdGggYSBsYXJnZSBpbnN0YW5jZSBj
b3VudC4nKSk7CisKKyAgICAgICAgLy8gUmFuZG9tCisKKyAgICAgICAgdGhpcy5hZGRDaGlsZChu
ZXcgZXMzZkRyYXdUZXN0cy5SYW5kb21Hcm91cCgncmFuZG9tJywgJ3JhbmRvbSBkcmF3IGNvbW1h
bmRzLicpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGFuZCBleGVjdXRlIHRo
ZSB0ZXN0IGNhc2VzCisgICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250
ZXh0CisgICAgICovCisgICAgZXMzZkRyYXdUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0LCBy
YW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8vU2V0IHVwIFRlc3QgUm9v
dCBwYXJhbWV0ZXJzCisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKwor
ICAgICAgICB2YXIgcm9vdFRlc3QgPSBuZXcgZXMzZkRyYXdUZXN0cy5EcmF3VGVzdCgpOworICAg
ICAgICBzdGF0ZS5zZXRSb290KHJvb3RUZXN0KTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFu
ZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVz
dE5hbWUocm9vdFRlc3QuZnVsbE5hbWUoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHJvb3RUZXN0
LmdldERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAocmFu
Z2UpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2Fz
ZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIHJ1biBkcmF3IHRlc3RzJywgZmFs
c2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAg
ICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZib0NvbG9yYnVm
ZmVyVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGViNjkyYTdiNjAzOThmZWJjM2M4OTVhMjliZWVhNTg3ZTQ2ZjE1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5qcwpAQCAtMCwwICsx
LDEwNDkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJv
Z3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycg
QkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3Zp
ZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdENhc2Un
KTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdFV0aWwnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7
CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMg
PSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzOwordmFyIGVzM2ZGYm9U
ZXN0Q2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlOwordmFyIGVzM2ZGYm9U
ZXN0VXRpbCA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsOwordmFyIHRjdVRlc3RD
YXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJh
bWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwordmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmU7Cit2YXIgZ2x1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmVVdGlsOwordmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkE7Cit2
YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKK3ZhciB0Y3VJ
bWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKK3ZhciB0Y3VU
ZXh0dXJlVXRpbCA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWw7Cit2YXIgcnJVdGls
ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbDsKK3ZhciBkZU1hdGggPSBmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsKKworLyoqIEB0eXBlIHtXZWJHTDJSZW5kZXJpbmdDb250
ZXh0fSAqLyB2YXIgZ2w7CisKKy8qKiBAY29uc3QqLyB2YXIgTUlOX1RIUkVTSE9MRCA9IG5ldyB0
Y3VSR0JBLlJHQkEoWzEyLCAxMiwgMTIsIDEyXSk7CisKK2xldCBjYW52YXNXSCA9IDI1NjsKK2xl
dCB0ZXhQb3RTaXplID0gWzEyOCwgMTI4LCA1XTsKK2xldCB0ZXhOcG90U2l6ZUEgPSBbMTI5LCAx
MTddOworbGV0IHRleE5wb3RTaXplQiA9IFs5OSwgMTI4XTsKK2lmICh0Y3VUZXN0Q2FzZS5pc1F1
aWNrTW9kZSgpKSB7CisgICAgY2FudmFzV0ggPSAzMjsKKyAgICB0ZXhQb3RTaXplID0gWzE2LCAx
NiwgNV07CisgICAgdGV4TnBvdFNpemVBID0gWzEyLCAxMV07CisgICAgdGV4TnBvdFNpemVCID0g
WzksIDE2XTsKK30KK2NvbnN0IHRleFcgPSB0ZXhQb3RTaXplWzBdOworY29uc3QgdGV4SCA9IHRl
eFBvdFNpemVbMV07CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJl
bnQpIHsKKyAgICBjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5
cGUpOworICAgIGNoaWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsKKworLyoq
CisgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IG1pblZhbAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhWYWwKKyAqIEByZXR1cm4g
e0FycmF5PG51bWJlcj59CisgKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLnJhbmRvbVZlY3Rv
ciA9IGZ1bmN0aW9uKHJuZCwgbWluVmFsLCBtYXhWYWwpIHsKKyAgICB2YXIgcmVzID0gW107Cisg
ICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbWluVmFsLmxlbmd0aDsgbmR4KyspCisgICAgICAg
IHJlc1tuZHhdID0gcm5kLmdldEZsb2F0KG1pblZhbFtuZHhdLCBtYXhWYWxbbmR4XSk7CisgICAg
cmV0dXJuIHJlczsKK307CisKKy8qKgorICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAor
ICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLworZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMu
Z2VuZXJhdGVSYW5kb21Db2xvciA9IGZ1bmN0aW9uKHJuZCkgeworICAgIHZhciByZXRWYWwgPSBb
XTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICByZXRWYWxbaV0g
PSBybmQuZ2V0RmxvYXQoKTsKKyAgICByZXRWYWxbM10gPSAxOworCisgICAgcmV0dXJuIHJldFZh
bDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RD
YXNlLkZib1Rlc3RDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjCisgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgKi8KK2VzM2ZGYm9Db2xvcmJ1
ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGZvcm1h
dCkgeworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRl
c2MpOworICAgIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7Cit9OworCitzZXRQYXJlbnRDbGFzcyhl
czNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvcmJ1ZmZlckNhc2UsIGVzM2ZGYm9UZXN0Q2Fz
ZS5GYm9UZXN0Q2FzZSk7CisKKy8qKgorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJl
ZmVyZW5jZQorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJlc3VsdAorICogQHJldHVy
biB7Ym9vbGVhbn0KKyAqLworZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JidWZmZXJD
YXNlLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciB0aHJlc2hvbGQgPSB0Y3VSR0JB
Lm1heChlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0VGhyZXNob2xkKHRoaXMubV9mb3JtYXQpLCBN
SU5fVEhSRVNIT0xEKTsKKworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQ29tcGFyaW5n
IGltYWdlcywgdGhyZXNob2xkOiAnICsgdGhyZXNob2xkKTsKKworICAgICAgICByZXR1cm4gdGN1
SW1hZ2VDb21wYXJlLmJpbGluZWFyQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24g
cmVzdWx0JywgcmVmZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQuZ2V0QWNjZXNzKCksIHRocmVz
aG9sZCk7CisgICAgfTsKKworLyoqCisgKiBEZWluaXQuIENsZWFyIHNvbWUgR0wgc3RhdGUgdmFy
aWFibGVzCisgKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2FzZS5w
cm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRleHR1cmUgc3RhdGUK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gT25seSBURVhUVVJFMCBhbmQgVEVYVFVSRTEgYXJl
IHVzZWQgaW4gdGhpcyB0ZXN0CisgICAgICAgICAgICB2YXIgbnVtVGV4VW5pdHMgPSAyOworCisg
ICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1UZXhVbml0czsgbmR4KyspIHsK
KyAgICAgICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgbmR4KTsKKwor
ICAgICAgICAgICAgICAgIC8vIFJlc2V0IDJEIHRleHR1cmUKKyAgICAgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKworICAgICAgICAgICAgICAgIC8vIFJl
c2V0IGN1YmUgbWFwIHRleHR1cmUKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFX0NVQkVfTUFQLCBudWxsKTsKKworICAgICAgICAgICAgICAgIC8vIFJlc2V0IDJEIGFy
cmF5IHRleHR1cmUKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
X0FSUkFZLCBudWxsKTsKKworICAgICAgICAgICAgICAgIC8vIFJlc2V0IDNEIHRleHR1cmUKKyAg
ICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCBudWxsKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBQaXhlbCBvcGVyYXRpb25zCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsLmRpc2FibGUoZ2wuU0NJU1NPUl9URVNUKTsKKyAgICAgICAgICAgIGdsLmRpc2Fi
bGUoZ2wuQkxFTkQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRnJhbWVidWZmZXIgY29udHJv
bAorICAgICAgICB7CisgICAgICAgICAgICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAu
MCk7CisgICAgICAgIH0KKyAgICB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2FzZX0KKyAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICogQHBhcmFtIHtudW1i
ZXJ9IGZvcm1hdAorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcn0g
aGVpZ2h0CisgKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yQ2xlYXJDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzYywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgZXMzZkZi
b0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JidWZmZXJDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
YywgZm9ybWF0KTsKKyAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0
ID0gaGVpZ2h0OworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMu
RmJvQ29sb3JDbGVhckNhc2UsIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVy
Q2FzZSk7CisKK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yQ2xlYXJDYXNlLnByb3Rv
dHlwZS5wcmVDaGVjayA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNoZWNrRm9ybWF0U3Vw
cG9ydCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlv
biB0aHJvd24KKyAgICB9OworCitlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvckNsZWFy
Q2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHgg
PSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIHZhciBmYm9Gb3JtYXQgPSBnbHVU
ZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9mb3JtYXQpOworICAgICAgICB2
YXIgZm10Q2xhc3MgPSB0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZmJvRm9ybWF0
LnR5cGUpOworICAgICAgICB2YXIgZm10SW5mbyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVG
b3JtYXRJbmZvKGZib0Zvcm1hdCk7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFu
ZG9tKDE3KTsKKyAgICAgICAgdmFyIG51bUNsZWFycyA9IDE2OworCisgICAgICAgIHZhciBmYm8g
PSBjdHguY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgdmFyIHJibyA9IGN0eC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKKworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIHJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJV
RkZFUiwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKyAgICAg
ICAgdGhpcy5jaGVja0Vycm9yKCk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYm8p
OworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAgICAgdGhpcy5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAgICBjdHgudmlld3BvcnQoMCwgMCwg
dGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKworICAgICAgICAvLyBJbml0aWFsaXplIHRv
IHRyYW5zcGFyZW50IGJsYWNrLgorICAgICAgICBzd2l0Y2ggKGZtdENsYXNzKSB7CisgICAgICAg
ICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDoK
KyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9G
SVhFRF9QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENs
YXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAgICAgICAgIGN0eC5jbGVhckJ1ZmZl
cmZ2KGdsLkNPTE9SLCAwLCBuZXcgRmxvYXQzMkFycmF5KDQpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3Mu
VU5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjdHguY2xlYXJCdWZmZXJ1aXYoZ2wu
Q09MT1IsIDAsIG5ldyBVaW50MzJBcnJheSg0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9J
TlRFR0VSOgorICAgICAgICAgICAgICAgIGN0eC5jbGVhckJ1ZmZlcml2KGdsLkNPTE9SLCAwLCBu
ZXcgSW50MzJBcnJheSg0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYW5u
ZWxjbGFzcyAnICsgZm10Q2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gcmFuZG9t
IHNjaXNzb3JlZCBjbGVhcnMuCisgICAgICAgIGN0eC5lbmFibGUoZ2wuU0NJU1NPUl9URVNUKTsK
KyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtQ2xlYXJzOyBuZHgrKykgeworICAg
ICAgICAgICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIHRoaXMubV93aWR0aCAtIDEpOworICAgICAg
ICAgICAgdmFyIHkgPSBybmQuZ2V0SW50KDAsIHRoaXMubV9oZWlnaHQgLSAxKTsKKyAgICAgICAg
ICAgIHZhciB3ID0gcm5kLmdldEludCgxLCB0aGlzLm1fd2lkdGggLSB4KTsKKyAgICAgICAgICAg
IHZhciBoID0gcm5kLmdldEludCgxLCB0aGlzLm1faGVpZ2h0IC0geSk7CisgICAgICAgICAgICB2
YXIgY29sb3IgPSBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5yYW5kb21WZWN0b3Iocm5kLCBmbXRJ
bmZvLnZhbHVlTWluLCBmbXRJbmZvLnZhbHVlTWF4KTsKKworICAgICAgICAgICAgY3R4LnNjaXNz
b3IoeCwgeSwgdywgaCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZm10Q2xhc3MpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9BVElOR19Q
T0lOVDoKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFz
cy5TSUdORURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRl
eHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICAgICAg
ICAgIGN0eC5jbGVhckJ1ZmZlcmZ2KGdsLkNPTE9SLCAwLCBjb2xvcik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVD
aGFubmVsQ2xhc3MuVU5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgY3R4LmNs
ZWFyQnVmZmVydWl2KGdsLkNPTE9SLCAwLCBjb2xvcik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuU0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIGN0eC5jbGVhckJ1ZmZlcml2
KGdsLkNPTE9SLCAwLCBjb2xvcik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdJbnZhbGlkIGNoYW5uZWxjbGFzcyAnICsgZm10Q2xhc3MpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gUmVhZCByZXN1bHRzIGZyb20gcmVuZGVyYnVmZmVyLgorICAg
ICAgICB0aGlzLnJlYWRQaXhlbHNVc2luZ0Zvcm1hdChkc3QsIDAsIDAsIHRoaXMubV93aWR0aCwg
dGhpcy5tX2hlaWdodCwgZmJvRm9ybWF0LCBmbXRJbmZvLmxvb2t1cFNjYWxlLCBmbXRJbmZvLmxv
b2t1cEJpYXMpOworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICB9OworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0Nv
bG9yYnVmZmVyQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzYworICogQHBhcmFtIHtudW1iZXJ9IHRleDBGbXQKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gdGV4MFNpemUKKyAqIEBwYXJhbSB7bnVtYmVyfSB0ZXgxRm10CisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHRleDFTaXplCisgKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0Nv
bG9yTXVsdGlUZXgyRENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCB0ZXgwRm10LCB0ZXgwU2l6
ZSwgdGV4MUZtdCwgdGV4MVNpemUpIHsKKyAgICBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9D
b2xvcmJ1ZmZlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCB0ZXgwRm10KTsKKyAgICB0aGlz
Lm1fdGV4MEZtdCA9IHRleDBGbXQ7CisgICAgdGhpcy5tX3RleDBTaXplID0gdGV4MFNpemU7Cisg
ICAgdGhpcy5tX3RleDFGbXQgPSB0ZXgxRm10OworICAgIHRoaXMubV90ZXgxU2l6ZSA9IHRleDFT
aXplOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29s
b3JNdWx0aVRleDJEQ2FzZSwgZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JidWZmZXJD
YXNlKTsKKworZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JNdWx0aVRleDJEQ2FzZS5w
cm90b3R5cGUucHJlQ2hlY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5jaGVja0Zvcm1h
dFN1cHBvcnQodGhpcy5tX3RleDBGbXQpOworICAgICAgICB0aGlzLmNoZWNrRm9ybWF0U3VwcG9y
dCh0aGlzLm1fdGV4MUZtdCk7CisgICAgICAgIHJldHVybiB0cnVlOyAvLyBObyBleGNlcHRpb24g
dGhyb3duCisgICAgfTsKKworZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JNdWx0aVRl
eDJEQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBj
dHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIHZhciB0ZXhGbXQwID0gZ2x1
VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fdGV4MEZtdCk7CisgICAgICAg
IHZhciB0ZXhGbXQxID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1f
dGV4MUZtdCk7CisgICAgICAgIHZhciBmbXRJbmZvMCA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1
cmVGb3JtYXRJbmZvKHRleEZtdDApOworICAgICAgICB2YXIgZm10SW5mbzEgPSB0Y3VUZXh0dXJl
VXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyh0ZXhGbXQxKTsKKworICAgICAgICAvKiogQHR5cGUg
e2VzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXJ9ICovCisgICAgICAgIHZhciB0ZXhUb0Zi
bzBTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAg
ICAgIFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRdLCBlczNmRmJvVGVzdFV0aWwu
Z2V0RnJhZ21lbnRPdXRwdXRUeXBlKHRleEZtdDApLAorICAgICAgICAgICAgZGVNYXRoLnN1YnRy
YWN0KGZtdEluZm8wLnZhbHVlTWF4LCBmbXRJbmZvMC52YWx1ZU1pbiksCisgICAgICAgICAgICBm
bXRJbmZvMC52YWx1ZU1pbik7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4VG9GYm8xU2hhZGVyID0gbmV3IGVz
M2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5TQU1QTEVSXzJEXSwgZXMzZkZib1Rlc3RVdGlsLmdldEZyYWdtZW50T3V0cHV0
VHlwZSh0ZXhGbXQxKSwKKyAgICAgICAgICAgIGRlTWF0aC5zdWJ0cmFjdChmbXRJbmZvMS52YWx1
ZU1heCwgZm10SW5mbzEudmFsdWVNaW4pLAorICAgICAgICAgICAgZm10SW5mbzEudmFsdWVNaW4p
OworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0g
Ki8KKyAgICAgICAgdmFyIG11bHRpVGV4U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0
dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEVHlw
ZSh0ZXhGbXQwKSwgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEVHlwZSh0ZXhGbXQxKV0sCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgICAg
IHZhciB0ZXhUb0ZibzBTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRleFRvRmJvMFNoYWRl
cik7CisgICAgICAgIHZhciB0ZXhUb0ZibzFTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRl
eFRvRmJvMVNoYWRlcik7CisgICAgICAgIHZhciBtdWx0aVRleFNoYWRlcklEID0gY3R4LmNyZWF0
ZVByb2dyYW0obXVsdGlUZXhTaGFkZXIpOworCisgICAgICAgIC8vIFNldHVwIHNoYWRlcnMKKyAg
ICAgICAgbXVsdGlUZXhTaGFkZXIuc2V0VGV4U2NhbGVCaWFzKDAsIGRlTWF0aC5zY2FsZShmbXRJ
bmZvMC5sb29rdXBTY2FsZSwgMC41KSwgZGVNYXRoLnNjYWxlKGZtdEluZm8wLmxvb2t1cEJpYXMs
IDAuNSkpOworICAgICAgICBtdWx0aVRleFNoYWRlci5zZXRUZXhTY2FsZUJpYXMoMSwgZGVNYXRo
LnNjYWxlKGZtdEluZm8xLmxvb2t1cFNjYWxlLCAwLjUpLCBkZU1hdGguc2NhbGUoZm10SW5mbzEu
bG9va3VwQmlhcywgMC41KSk7CisgICAgICAgIHRleFRvRmJvMFNoYWRlci5zZXRVbmlmb3Jtcyhj
dHgsIHRleFRvRmJvMFNoYWRlcklEKTsKKyAgICAgICAgdGV4VG9GYm8xU2hhZGVyLnNldFVuaWZv
cm1zKGN0eCwgdGV4VG9GYm8xU2hhZGVySUQpOworICAgICAgICBtdWx0aVRleFNoYWRlci5zZXRV
bmlmb3JtcyhjdHgsIG11bHRpVGV4U2hhZGVySUQpOworCisgICAgICAgIHZhciBmYm8wID0gY3R4
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIHZhciBmYm8xID0gY3R4LmNyZWF0ZUZyYW1l
YnVmZmVyKCk7CisgICAgICAgIHZhciB0ZXgwID0gY3R4LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgdmFyIHRleDEgPSBjdHguY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBn
bHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChuZHggPyB0ZXhGbXQxIDogdGV4Rm10MCk7
CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0gbmR4ID8gdGhpcy5tX3RleDFGbXQgOiB0aGlzLm1f
dGV4MEZtdDsKKyAgICAgICAgICAgIHZhciBpc0ZpbHRlcmFibGUgPSBnbHVUZXh0dXJlVXRpbC5p
c0dMSW50ZXJuYWxDb2xvckZvcm1hdEZpbHRlcmFibGUoZm9ybWF0KTsKKyAgICAgICAgICAgIHZh
ciBzaXplID0gbmR4ID8gdGhpcy5tX3RleDFTaXplIDogdGhpcy5tX3RleDBTaXplOworICAgICAg
ICAgICAgdmFyIGZibyA9IG5keCA/IGZibzEgOiBmYm8wOworICAgICAgICAgICAgdmFyIHRleCA9
IG5keCA/IHRleDEgOiB0ZXgwOworCisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4KTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0
eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFN
UF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgaXNGaWx0ZXJhYmxlID8gZ2wuTElORUFSIDogZ2wuTkVB
UkVTVCk7CisgICAgICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01BR19GSUxURVIsIGlzRmlsdGVyYWJsZSA/IGdsLkxJTkVBUiA6IGdsLk5FQVJFU1Qp
OworICAgICAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBz
aXplWzBdLCBzaXplWzFdLCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFU
eXBlLCBudWxsKTsKKworICAgICAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKKyAgICAgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7Cisg
ICAgICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAgICAgICAgIHRoaXMuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgIH0KKworICAgICAgICAvLyBS
ZW5kZXIgdGV4dHVyZXMgdG8gYm90aCBmcmFtZWJ1ZmZlcnMuCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0gZ2wuUkdC
QTsKKyAgICAgICAgICAgIHZhciBkYXRhVHlwZSA9IGdsLlVOU0lHTkVEX0JZVEU7CisgICAgICAg
ICAgICB2YXIgdG1wVGV4OworICAgICAgICAgICAgdmFyIGZibyA9IG5keCA/IGZibzEgOiBmYm8w
OworICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gbmR4ID8gdGhpcy5tX3RleDFTaXplIDogdGhp
cy5tX3RleDBTaXplOworICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlTGV2ZWwoZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQsIGRhdGFU
eXBlKSwgdGV4VywgdGV4SCwgMSk7CisKKyAgICAgICAgICAgIGlmIChuZHggPT0gMCkKKyAgICAg
ICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cyhkYXRh
LmdldEFjY2VzcygpLCBbMCwgMCwgMCwgMF0sIFsxLCAxLCAxLCAxXSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGRhdGEuZ2V0
QWNjZXNzKCksIDgsIFswLjIsIDAuNywgMC4xLCAxLjBdLCBbMC43LCAwLjEsIDAuNSwgMC44XSk7
CisKKyAgICAgICAgICAgIHRtcFRleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAg
ICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdG1wVGV4KTsKKyAgICAgICAgICAgIGN0
eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFN
UF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElO
RUFSKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGN0eC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgdGV4VywgdGV4SCwgMCwgZm9ybWF0LCBkYXRhVHlw
ZSwgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisgICAgICAgICAgICBjdHguYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgY3R4LnZpZXdw
b3J0KDAsIDAsIHZpZXdwb3J0WzBdLCB2aWV3cG9ydFsxXSk7CisgICAgICAgICAgICByclV0aWwu
ZHJhd1F1YWQoY3R4LCBuZHggPyB0ZXhUb0ZibzFTaGFkZXJJRCA6IHRleFRvRmJvMFNoYWRlcklE
LCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFJlbmRlciB0byBmcmFtZWJ1ZmZlci4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgIGN0eC52aWV3cG9ydCgwLCAwLCBjdHgu
Z2V0V2lkdGgoKSwgY3R4LmdldEhlaWdodCgpKTsKKyAgICAgICAgY3R4LmFjdGl2ZVRleHR1cmUo
Z2wuVEVYVFVSRTApOworICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
MCk7CisgICAgICAgIGN0eC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICAgICAgY3R4
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOworICAgICAgICByclV0aWwuZHJhd1F1
YWQoY3R4LCBtdWx0aVRleFNoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAw
LjBdKTsKKworICAgICAgICB0aGlzLnJlYWRQaXhlbHMoZHN0LCAwLCAwLCBjdHguZ2V0V2lkdGgo
KSwgY3R4LmdldEhlaWdodCgpKTsKKyAgICB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2FzZX0KKyAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICogQHBhcmFt
IHtudW1iZXJ9IHRleEZtdAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhTaXplCisgKi8K
K2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yVGV4Q3ViZUNhc2UgPSBmdW5jdGlvbihu
YW1lLCBkZXNjLCB0ZXhGbXQsIHRleFNpemUpIHsKKyAgICBlczNmRmJvQ29sb3JidWZmZXJUZXN0
cy5GYm9Db2xvcmJ1ZmZlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCB0ZXhGbXQpOworICAg
IHRoaXMubV90ZXhTaXplID0gdGV4U2l6ZTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9D
b2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yVGV4Q3ViZUNhc2UsIGVzM2ZGYm9Db2xvcmJ1ZmZlclRl
c3RzLkZib0NvbG9yYnVmZmVyQ2FzZSk7CisKK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0Nv
bG9yVGV4Q3ViZUNhc2UucHJvdG90eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHRoaXMuY2hlY2tGb3JtYXRTdXBwb3J0KHRoaXMubV9mb3JtYXQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsgLy8gTm8gZXhjZXB0aW9uIHRocm93bgorICAgIH07CisKK2VzM2ZGYm9Db2xvcmJ1ZmZl
clRlc3RzLkZib0NvbG9yVGV4Q3ViZUNhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRz
dCkgeworICAgICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgICAg
ICB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1f
Zm9ybWF0KTsKKyAgICAgICAgdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJl
Rm9ybWF0SW5mbyh0ZXhGbXQpOworCisgICAgICAgIHZhciBjdWJlR0xGYWNlcyA9IFsKKyAgICAg
ICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgICAgICAgIGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWiwKKyAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WCwKKyAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgICAgICAg
ICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWgorICAgICAgICBdOworCisgICAgICAg
IHZhciBjdWJlVGV4RmFjZXMgPSBbCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNV
QkVGQUNFX1BPU0lUSVZFX1gsCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVG
QUNFX1BPU0lUSVZFX1ksCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNF
X1BPU0lUSVZFX1osCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05F
R0FUSVZFX1gsCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FU
SVZFX1ksCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZF
X1oKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgy
MSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVy
fSAqLworICAgICAgICB2YXIgdGV4VG9GYm9TaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRl
eHR1cmUyRFNoYWRlcigKKyAgICAgICAgICAgIFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBM
RVJfMkRdLCBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRPdXRwdXRUeXBlKHRleEZtdCksCisg
ICAgICAgICAgICBkZU1hdGguc3VidHJhY3QoZm10SW5mby52YWx1ZU1heCwgZm10SW5mby52YWx1
ZU1pbiksCisgICAgICAgICAgICBmbXRJbmZvLnZhbHVlTWluKTsKKworICAgICAgICAvKiogQHR5
cGUge2VzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlQ3ViZVNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGN1
YmVUZXhTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmVDdWJlU2hhZGVyKAorICAg
ICAgICAgICAgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlckN1YmVUeXBlKHRleEZtdCksCisgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgICAgIHZh
ciB0ZXhUb0Zib1NoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0odGV4VG9GYm9TaGFkZXIpOwor
ICAgICAgICB2YXIgY3ViZVRleFNoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0oY3ViZVRleFNo
YWRlcik7CisKKyAgICAgICAgLy8gU2V0dXAgc2hhZGVycworICAgICAgICB0ZXhUb0Zib1NoYWRl
ci5zZXRVbmlmb3JtcyhjdHgsIHRleFRvRmJvU2hhZGVySUQpOworICAgICAgICBjdWJlVGV4U2hh
ZGVyLnNldFRleFNjYWxlQmlhcyhmbXRJbmZvLmxvb2t1cFNjYWxlLCBmbXRJbmZvLmxvb2t1cEJp
YXMpOworCisgICAgICAgIC8vIEZyYW1lYnVmZmVycy4KKyAgICAgICAgdmFyIGZib3MgPSBbXTsK
KyAgICAgICAgdmFyIHRleDsKKworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJl
VXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0ZXhGbXQpOworICAgICAgICB2YXIgaXNGaWx0ZXJhYmxl
ID0gZ2x1VGV4dHVyZVV0aWwuaXNHTEludGVybmFsQ29sb3JGb3JtYXRGaWx0ZXJhYmxlKHRoaXMu
bV9mb3JtYXQpOworICAgICAgICB2YXIgc2l6ZSA9IHRoaXMubV90ZXhTaXplOworCisgICAgICAg
IHRleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAg
ICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGlzRmlsdGVyYWJsZSA/IGds
LkxJTkVBUiA6IGdsLk5FQVJFU1QpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01BR19GSUxURVIsIGlzRmlsdGVyYWJsZSA/IGdsLkxJ
TkVBUiA6IGdsLk5FQVJFU1QpOworCisgICAgICAgIC8vIEdlbmVyYXRlIGFuIGltYWdlIGFuZCBG
Qk8gZm9yIGVhY2ggY3ViZSBmYWNlCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGN1
YmVHTEZhY2VzLmxlbmd0aDsgbmR4KyspCisgICAgICAgICAgICBjdHgudGV4SW1hZ2UyRChjdWJl
R0xGYWNlc1tuZHhdLCAwLCB0aGlzLm1fZm9ybWF0LCBzaXplWzBdLCBzaXplWzFdLCAwLCB0cmFu
c2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBudWxsKTsKKyAgICAgICAgdGhp
cy5jaGVja0Vycm9yKCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgY3ViZUdM
RmFjZXMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxheWVyRmJvID0gY3R4LmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBsYXllckZibyk7CisgICAgICAgICAgICBjdHguZnJhbWVidWZmZXJUZXh0dXJl
MkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjdWJlR0xGYWNlc1tuZHhd
LCB0ZXgsIDApOworICAgICAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgICAgICB0
aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisgICAgICAgICAg
ICBmYm9zLnB1c2gobGF5ZXJGYm8pOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVuZGVyIHRl
c3QgaW1hZ2VzIHRvIHJhbmRvbSBjdWJlIGZhY2VzCisgICAgICAgIHZhciBvcmRlciA9IFtdOwor
CisgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgZmJvcy5sZW5ndGg7IG4rKykKKyAgICAgICAg
ICAgIG9yZGVyLnB1c2gobik7CisgICAgICAgIHJuZC5zaHVmZmxlKG9yZGVyKTsKKworICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCA0OyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGZh
Y2UgPSBvcmRlcltuZHhdOworICAgICAgICAgICAgdmFyIGZvcm1hdCA9IGdsLlJHQkE7CisgICAg
ICAgICAgICB2YXIgZGF0YVR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICAgICAgICAgICAgdmFy
IHRtcFRleDsKKyAgICAgICAgICAgIHZhciBmYm8gPSBmYm9zW2ZhY2VdOworICAgICAgICAgICAg
dmFyIHZpZXdwb3J0ID0gdGhpcy5tX3RleFNpemU7CisgICAgICAgICAgICB2YXIgZGF0YSA9IG5l
dyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9y
bWF0KGZvcm1hdCwgZGF0YVR5cGUpLCB0ZXhXLCB0ZXhILCAxKTsKKworICAgICAgICAgICAgdGN1
VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGRhdGEuZ2V0QWNjZXNzKCksIDgsIGVzM2ZGYm9Db2xv
cmJ1ZmZlclRlc3RzLmdlbmVyYXRlUmFuZG9tQ29sb3Iocm5kKSwgWzAsIDAsIDAsIDBdKTsKKwor
ICAgICAgICAgICAgdG1wVGV4ID0gY3R4LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGN0
eC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0bXBUZXgpOworICAgICAgICAgICAgY3R4LnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RP
X0VER0UpOworICAgICAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgY3R4LnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIp
OworICAgICAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB0ZXhXLCB0ZXhILCAwLCBmb3JtYXQsIGRhdGFUeXBlLCBk
YXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKSk7CisKKyAgICAgICAgICAgIGN0eC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBjdHgudmlld3BvcnQo
MCwgMCwgdmlld3BvcnRbMF0sIHZpZXdwb3J0WzFdKTsKKyAgICAgICAgICAgIHJyVXRpbC5kcmF3
UXVhZChjdHgsIHRleFRvRmJvU2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAs
IDAuMF0pOworICAgICAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisKKyAgICAgICAgICAgIC8v
IFJlbmRlciB0byBmcmFtZWJ1ZmZlcgorICAgICAgICAgICAgdmFyIHAwID0gWyhuZHggJSAyKSAt
IDEuMCwgTWF0aC5mbG9vcihuZHggLyAyKSAtIDEuMCwgMC4wXTsKKyAgICAgICAgICAgIHZhciBw
MSA9IGRlTWF0aC5hZGQocDAsIFsxLjAsIDEuMCwgMC4wXSk7CisKKyAgICAgICAgICAgIGN0eC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgY3R4LnZp
ZXdwb3J0KDAsIDAsIGN0eC5nZXRXaWR0aCgpLCBjdHguZ2V0SGVpZ2h0KCkpOworCisgICAgICAg
ICAgICBjdHguYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7CisgICAgICAgICAgICBjdHguYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsKKworICAgICAgICAgICAgY3ViZVRl
eFNoYWRlci5zZXRGYWNlKGN1YmVUZXhGYWNlc1tmYWNlXSk7CisgICAgICAgICAgICBjdWJlVGV4
U2hhZGVyLnNldFVuaWZvcm1zKGN0eCwgY3ViZVRleFNoYWRlcklEKTsKKworICAgICAgICAgICAg
cnJVdGlsLmRyYXdRdWFkKGN0eCwgY3ViZVRleFNoYWRlcklELCBwMCwgcDEpOworICAgICAgICAg
ICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnJlYWRQaXhl
bHMoZHN0LCAwLCAwLCBjdHguZ2V0V2lkdGgoKSwgY3R4LmdldEhlaWdodCgpKTsKKyAgICB9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9Db2xvcmJ1ZmZlclRl
c3RzLkZib0NvbG9yYnVmZmVyQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFy
YW0ge3N0cmluZ30gZGVzYworICogQHBhcmFtIHtudW1iZXJ9IHRleEZtdAorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSB0ZXhTaXplCisgKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0Nv
bG9yVGV4MkRBcnJheUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCB0ZXhGbXQsIHRleFNpemUp
IHsKKyAgICBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvcmJ1ZmZlckNhc2UuY2FsbCh0
aGlzLCBuYW1lLCBkZXNjLCB0ZXhGbXQpOworICAgIHRoaXMubV90ZXhTaXplID0gdGV4U2l6ZTsK
K307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yVGV4
MkRBcnJheUNhc2UsIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2FzZSk7
CisKK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yVGV4MkRBcnJheUNhc2UucHJvdG90
eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuY2hlY2tGb3JtYXRTdXBw
b3J0KHRoaXMubV9mb3JtYXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gZXhjZXB0aW9u
IHRocm93bgorICAgIH07CisKKyAgICBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvclRl
eDJEQXJyYXlDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihkc3QpIHsKKyAgICAgICAg
dmFyIGN0eCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgdmFyIHRleEZtdCA9
IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2Zvcm1hdCk7CisgICAg
ICAgIHZhciBmbXRJbmZvID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8odGV4
Rm10KTsKKyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMTAwKTsKKworICAg
ICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXJ9ICovCisgICAg
ICAgIHZhciB0ZXhUb0Zib1NoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hh
ZGVyKAorICAgICAgICAgICAgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF0sIGVz
M2ZGYm9UZXN0VXRpbC5nZXRGcmFnbWVudE91dHB1dFR5cGUodGV4Rm10KSwKKyAgICAgICAgICAg
IGRlTWF0aC5zdWJ0cmFjdChmbXRJbmZvLnZhbHVlTWF4LCBmbXRJbmZvLnZhbHVlTWluKSwKKyAg
ICAgICAgICAgIGZtdEluZm8udmFsdWVNaW4pOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZi
b1Rlc3RVdGlsLlRleHR1cmUyREFycmF5U2hhZGVyfSAqLworICAgICAgICB2YXIgYXJyYXlUZXhT
aGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyREFycmF5U2hhZGVyKAorICAgICAg
ICAgICAgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEQXJyYXlUeXBlKHRleEZtdCksCisgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgICAgIHZh
ciB0ZXhUb0Zib1NoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0odGV4VG9GYm9TaGFkZXIpOwor
ICAgICAgICB2YXIgYXJyYXlUZXhTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGFycmF5VGV4
U2hhZGVyKTsKKworICAgICAgICAvLyBTZXR1cCB0ZXh0dXJlcworICAgICAgICB0ZXhUb0Zib1No
YWRlci5zZXRVbmlmb3JtcyhjdHgsIHRleFRvRmJvU2hhZGVySUQpOworICAgICAgICBhcnJheVRl
eFNoYWRlci5zZXRUZXhTY2FsZUJpYXMoZm10SW5mby5sb29rdXBTY2FsZSwgZm10SW5mby5sb29r
dXBCaWFzKTsKKworICAgICAgICAvLyBGcmFtZWJ1ZmZlcnMuCisgICAgICAgIHZhciBmYm9zID0g
W107CisgICAgICAgIHZhciB0ZXg7CisKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4
dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQodGV4Rm10KTsKKyAgICAgICAgdmFyIGlzRmlsdGVy
YWJsZSA9IGdsdVRleHR1cmVVdGlsLmlzR0xJbnRlcm5hbENvbG9yRm9ybWF0RmlsdGVyYWJsZSh0
aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgdmFyIHNpemUgPSB0aGlzLm1fdGV4U2l6ZTsKKworICAg
ICAgICB0ZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIGN0eC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkRfQVJSQVksIGdsLlRFWFRV
UkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRF9BUlJBWSwgZ2wuVEVYVFVSRV9XUkFQX1IsIGdsLkNMQU1QX1RPX0VER0Up
OworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGlzRmlsdGVyYWJsZSA/IGdsLkxJTkVBUiA6IGdsLk5FQVJFU1QpOwor
ICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGlzRmlsdGVyYWJsZSA/IGdsLkxJTkVBUiA6IGdsLk5FQVJFU1QpOworICAg
ICAgICBjdHgudGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCB0aGlzLm1fZm9ybWF0
LCBzaXplWzBdLCBzaXplWzFdLCBzaXplWzJdLCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5z
ZmVyRm10LmRhdGFUeXBlLCBudWxsKTsKKworICAgICAgICAvLyBHZW5lcmF0ZSBhbiBGQk8gZm9y
IGVhY2ggbGF5ZXIKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX3RleFNp
emVbMl07IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGF5ZXJGYm8gPSBjdHguY3JlYXRlRnJh
bWVidWZmZXIoKTsKKyAgICAgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGxheWVyRmJvKTsKKyAgICAgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleCwgMCwgbmR4KTsKKyAgICAg
ICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAgICAgICAgICAgdGhpcy5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAgICAgICAgZmJvcy5wdXNoKGxheWVy
RmJvKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbmRlciB0ZXN0IGltYWdlcyB0byByYW5k
b20gdGV4dHVyZSBsYXllcnMKKyAgICAgICAgdmFyIG9yZGVyID0gW107CisKKyAgICAgICAgZm9y
ICh2YXIgbiA9IDA7IG4gPCBmYm9zLmxlbmd0aDsgbisrKQorICAgICAgICAgICAgb3JkZXIucHVz
aChuKTsKKyAgICAgICAgcm5kLnNodWZmbGUob3JkZXIpOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDQ7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGF5ZXIgPSBvcmRlcltu
ZHhdOworICAgICAgICAgICAgdmFyIGZvcm1hdCA9IGdsLlJHQkE7CisgICAgICAgICAgICB2YXIg
ZGF0YVR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICAgICAgICAgICAgdmFyIGZibyA9IGZib3Nb
bGF5ZXJdOworICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gdGhpcy5tX3RleFNpemU7CisgICAg
ICAgICAgICB2YXIgZGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChnbHVUZXh0dXJl
VXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KGZvcm1hdCwgZGF0YVR5cGUpLCB0ZXhXLCB0ZXhILCAx
KTsKKworICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGRhdGEuZ2V0QWNj
ZXNzKCksIDgsIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLmdlbmVyYXRlUmFuZG9tQ29sb3Iocm5k
KSwgWzAsIDAsIDAsIDBdKTsKKworICAgICAgICAgICAgdmFyIHRtcFRleCA9IGN0eC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdG1w
VGV4KTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdF
KTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAg
ICAgICAgIGN0eC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgdGV4VywgdGV4
SCwgMCwgZm9ybWF0LCBkYXRhVHlwZSwgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOwor
CisgICAgICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwor
ICAgICAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIHZpZXdwb3J0WzBdLCB2aWV3cG9ydFsxXSk7
CisgICAgICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCB0ZXhUb0Zib1NoYWRlcklELCBbLTEu
MCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdKTsKKyAgICAgICAgICAgIHRoaXMuY2hlY2tF
cnJvcigpOworCisgICAgICAgICAgICAvLyBSZW5kZXIgdG8gZnJhbWVidWZmZXIKKyAgICAgICAg
ICAgIHZhciBwMCA9IFsobmR4ICUgMikgLSAxLjAsIE1hdGguZmxvb3IobmR4IC8gMikgLSAxLjAs
IDAuMF07CisgICAgICAgICAgICB2YXIgcDEgPSBkZU1hdGguYWRkKHAwLCBbMS4wLCAxLjAsIDAu
MF0pOworICAgICAgICAgICAgZGVidWcoJ0xheWVyOicgKyBsYXllciArICcgcmVjdGFuZ2xlOiAn
ICsgcDAgKyAnICcgKyBwMSk7CisKKyAgICAgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIGN0eC5n
ZXRXaWR0aCgpLCBjdHguZ2V0SGVpZ2h0KCkpOworCisgICAgICAgICAgICBjdHguYWN0aXZlVGV4
dHVyZShnbC5URVhUVVJFMCk7CisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgdGV4KTsKKworICAgICAgICAgICAgYXJyYXlUZXhTaGFkZXIuc2V0TGF5ZXIo
bGF5ZXIpOworICAgICAgICAgICAgYXJyYXlUZXhTaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCBhcnJh
eVRleFNoYWRlcklEKTsKKworICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgYXJyYXlU
ZXhTaGFkZXJJRCwgcDAsIHAxKTsKKyAgICAgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5yZWFkUGl4ZWxzKGRzdCwgMCwgMCwgY3R4LmdldFdpZHRo
KCksIGN0eC5nZXRIZWlnaHQoKSk7CisgICAgfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvcmJ1ZmZlckNhc2V9Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAqIEBwYXJh
bSB7bnVtYmVyfSB0ZXhGbXQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4U2l6ZQorICov
CitlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvclRleDNEQ2FzZSA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2MsIHRleEZtdCwgdGV4U2l6ZSkgeworICAgIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3Rz
LkZib0NvbG9yYnVmZmVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIHRleEZtdCk7CisgICAg
dGhpcy5tX3RleFNpemUgPSB0ZXhTaXplOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0Nv
bG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JUZXgzRENhc2UsIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3Rz
LkZib0NvbG9yYnVmZmVyQ2FzZSk7CisKK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9y
VGV4M0RDYXNlLnByb3RvdHlwZS5wcmVDaGVjayA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlz
LmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAgICB9OworCisgICAgZXMzZkZib0NvbG9yYnVmZmVy
VGVzdHMuRmJvQ29sb3JUZXgzRENhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkg
eworICAgICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICB2
YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZm9y
bWF0KTsKKyAgICAgICAgdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9y
bWF0SW5mbyh0ZXhGbXQpOworICAgICAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgx
MDApOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRl
cn0gKi8KKyAgICAgICAgdmFyIHRleFRvRmJvU2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5U
ZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1Q
TEVSXzJEXSwgZXMzZkZib1Rlc3RVdGlsLmdldEZyYWdtZW50T3V0cHV0VHlwZSh0ZXhGbXQpLAor
ICAgICAgICAgICAgZGVNYXRoLnN1YnRyYWN0KGZtdEluZm8udmFsdWVNYXgsIGZtdEluZm8udmFs
dWVNaW4pLAorICAgICAgICAgICAgZm10SW5mby52YWx1ZU1pbik7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTNEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGRU
ZXhTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUzRFNoYWRlcigKKyAgICAgICAg
ICAgIGdsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIzRCh0ZXhGbXQpLAorICAgICAgICAgICAgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKworICAgICAgICB2YXIgdGV4VG9GYm9T
aGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRleFRvRmJvU2hhZGVyKTsKKyAgICAgICAgdmFy
IHRkVGV4U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbSh0ZFRleFNoYWRlcik7CisKKyAgICAg
ICAgLy8gU2V0dXAgdGV4dHVyZXMKKyAgICAgICAgdGV4VG9GYm9TaGFkZXIuc2V0VW5pZm9ybXMo
Y3R4LCB0ZXhUb0Zib1NoYWRlcklEKTsKKyAgICAgICAgdGRUZXhTaGFkZXIuc2V0VGV4U2NhbGVC
aWFzKGZtdEluZm8ubG9va3VwU2NhbGUsIGZtdEluZm8ubG9va3VwQmlhcyk7CisKKyAgICAgICAg
Ly8gRnJhbWVidWZmZXJzLgorICAgICAgICB2YXIgZmJvcyA9IFtdOworICAgICAgICB2YXIgdGV4
O3sKKyAgICAgICAgICAgIHZhciB0cmFuc2ZlckZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5z
ZmVyRm9ybWF0KHRleEZtdCk7CisgICAgICAgICAgICB2YXIgc2l6ZSA9IHRoaXMubV90ZXhTaXpl
OworCisgICAgICAgICAgICB0ZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgICAg
ICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4KTsKKyAgICAgICAgICAgIGN0eC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGds
LlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfV1JBUF9SLCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAgICBjdHgudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOwor
ICAgICAgICAgICAgY3R4LnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgdGhpcy5tX2Zvcm1h
dCwgc2l6ZVswXSwgc2l6ZVsxXSwgc2l6ZVsyXSwgMCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFu
c2ZlckZtdC5kYXRhVHlwZSwgbnVsbCk7CisKKyAgICAgICAgICAgIC8vIEdlbmVyYXRlIGFuIEZC
TyBmb3IgZWFjaCBsYXllcgorICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhp
cy5tX3RleFNpemVbMl07IG5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGxheWVyRmJvID0g
Y3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgY3R4LmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgbGF5ZXJGYm8pOworICAgICAgICAgICAgICAgIGN0eC5mcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IHRleCwgMCwgbmR4KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOwor
CisgICAgICAgICAgICAgICAgZmJvcy5wdXNoKGxheWVyRmJvKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFJlbmRlciB0ZXN0IGltYWdlcyB0byByYW5kb20gdGV4dHVy
ZSBsYXllcnMKKyAgICAgICAgdmFyIG9yZGVyID0gW107CisKKyAgICAgICAgZm9yICh2YXIgbiA9
IDA7IG4gPCBmYm9zLmxlbmd0aDsgbisrKQorICAgICAgICAgICAgb3JkZXIucHVzaChuKTsKKyAg
ICAgICAgcm5kLnNodWZmbGUob3JkZXIpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IDQ7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGF5ZXIgPSBvcmRlcltuZHhdOworICAg
ICAgICAgICAgdmFyIGZvcm1hdCA9IGdsLlJHQkE7CisgICAgICAgICAgICB2YXIgZGF0YVR5cGUg
PSBnbC5VTlNJR05FRF9CWVRFOworICAgICAgICAgICAgdmFyIGZibyA9IGZib3NbbGF5ZXJdOwor
ICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gdGhpcy5tX3RleFNpemU7CisgICAgICAgICAgICB2
YXIgZGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChnbHVUZXh0dXJlVXRpbC5tYXBH
TFRyYW5zZmVyRm9ybWF0KGZvcm1hdCwgZGF0YVR5cGUpLCB0ZXhXLCB0ZXhILCAxKTsKKworICAg
ICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGRhdGEuZ2V0QWNjZXNzKCksIDgs
IGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLmdlbmVyYXRlUmFuZG9tQ29sb3Iocm5kKSwgWzAsIDAs
IDAsIDBdKTsKKworICAgICAgICAgICAgdmFyIHRtcFRleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdG1wVGV4KTsKKyAg
ICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAg
ICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGN0
eC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgdGV4VywgdGV4SCwgMCwgZm9y
bWF0LCBkYXRhVHlwZSwgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisgICAgICAg
ICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAg
ICAgY3R4LnZpZXdwb3J0KDAsIDAsIHZpZXdwb3J0WzBdLCB2aWV3cG9ydFsxXSk7CisgICAgICAg
ICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCB0ZXhUb0Zib1NoYWRlcklELCBbLTEuMCwgLTEuMCwg
MC4wXSwgWzEuMCwgMS4wLCAwLjBdKTsKKyAgICAgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOwor
CisgICAgICAgICAgICAvLyBSZW5kZXIgdG8gZnJhbWVidWZmZXIKKyAgICAgICAgICAgIHZhciBw
MCA9IFsobmR4ICUgMikgLSAxLjAsIE1hdGguZmxvb3IobmR4IC8gMikgLSAxLjAsIDAuMF07Cisg
ICAgICAgICAgICB2YXIgcDEgPSBkZU1hdGguYWRkKHAwLCBbMS4wLCAxLjAsIDAuMF0pOworICAg
ICAgICAgICAgZGVidWcoJ0xheWVyOicgKyBsYXllciArICcgcmVjdGFuZ2xlOiAnICsgcDAgKyAn
ICcgKyBwMSk7CisKKyAgICAgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICAgICAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIGN0eC5nZXRXaWR0aCgp
LCBjdHguZ2V0SGVpZ2h0KCkpOworCisgICAgICAgICAgICBjdHguYWN0aXZlVGV4dHVyZShnbC5U
RVhUVVJFMCk7CisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4
KTsKKworICAgICAgICAgICAgdGRUZXhTaGFkZXIuc2V0RGVwdGgobGF5ZXIgLyAodGhpcy5tX3Rl
eFNpemVbMl0gLSAxKSk7CisgICAgICAgICAgICB0ZFRleFNoYWRlci5zZXRVbmlmb3JtcyhjdHgs
IHRkVGV4U2hhZGVySUQpOworCisgICAgICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCB0ZFRl
eFNoYWRlcklELCBwMCwgcDEpOworICAgICAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLnJlYWRQaXhlbHMoZHN0LCAwLCAwLCBjdHguZ2V0V2lkdGgo
KSwgY3R4LmdldEhlaWdodCgpKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0
ZW5kcyB7ZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JidWZmZXJDYXNlfQorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgKiBAcGFyYW0ge251
bWJlcn0gZm9ybWF0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHNpemUKKyAqIEBwYXJhbSB7
bnVtYmVyfSBmdW5jUkdCCisgKiBAcGFyYW0ge251bWJlcn0gZnVuY0FscGhhCisgKiBAcGFyYW0g
e251bWJlcn0gc3JjUkdCCisgKiBAcGFyYW0ge251bWJlcn0gZHN0UkdCCisgKiBAcGFyYW0ge251
bWJlcn0gc3JjQWxwaGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBkc3RBbHBoYQorICovCitlczNmRmJv
Q29sb3JidWZmZXJUZXN0cy5GYm9CbGVuZENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBmb3Jt
YXQsIHNpemUsIGZ1bmNSR0IsIGZ1bmNBbHBoYSwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSkgeworICAgIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyQ2Fz
ZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIGZvcm1hdCk7CisgICAgdGhpcy5tX3NpemUgPSBzaXpl
OworICAgIHRoaXMubV9mdW5jUkdCID0gZnVuY1JHQjsKKyAgICB0aGlzLm1fZnVuY0FscGhhID0g
ZnVuY0FscGhhOworICAgIHRoaXMubV9zcmNSR0IgPSBzcmNSR0I7CisgICAgdGhpcy5tX2RzdFJH
QiA9IGRzdFJHQjsKKyAgICB0aGlzLm1fc3JjQWxwaGEgPSBzcmNBbHBoYTsKKyAgICB0aGlzLm1f
ZHN0QWxwaGEgPSBkc3RBbHBoYQorfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0NvbG9yYnVm
ZmVyVGVzdHMuRmJvQmxlbmRDYXNlLCBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvcmJ1
ZmZlckNhc2UpOworCitlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9CbGVuZENhc2UucHJvdG90
eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuY2hlY2tGb3JtYXRTdXBw
b3J0KHRoaXMubV9mb3JtYXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gZXhjZXB0aW9u
IHRocm93bgorICAgIH0KKworICAgIGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0JsZW5kQ2Fz
ZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIC8vIFxub3RlIEFz
c3VtZXMgZmxvYXRpbmctcG9pbnQgb3IgZml4ZWQtcG9pbnQgZm9ybWF0LgorICAgICAgICB2YXIg
Y3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICB2YXIgZmJvRm10ID0gZ2x1
VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAg
dmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhmYm9GbXQp
OworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0g
Ki8KKyAgICAgICAgdmFyIHRleFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJE
U2hhZGVyKAorICAgICAgICAgICAgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF0s
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXJ9ICovCisgICAgICAgIHZhciBncmFkU2hh
ZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcihnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgICAgIHZhciB0ZXhTaGFkZXJJRCA9IGN0eC5jcmVh
dGVQcm9ncmFtKHRleFNoYWRlcik7CisgICAgICAgIHZhciBncmFkU2hhZGVySUQgPSBjdHguY3Jl
YXRlUHJvZ3JhbShncmFkU2hhZGVyKTsKKworICAgICAgICAvLyBTZXR1cCBzaGFkZXJzCisgICAg
ICAgIHRleFNoYWRlci5zZXRVbmlmb3JtcyAoY3R4LCB0ZXhTaGFkZXJJRCk7CisgICAgICAgIGdy
YWRTaGFkZXIuc2V0R3JhZGllbnQoY3R4LCBncmFkU2hhZGVySUQsIFswLCAwLCAwLCAwXSwgWzEs
IDEsIDEsIDFdKTsKKworICAgICAgICB2YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7
CisgICAgICAgIHZhciByYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgICAgICAg
Y3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pOworICAgICAgICBjdHgu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9mb3JtYXQsIHRoaXMu
bV9zaXplWzBdLCB0aGlzLm1fc2l6ZVsxXSk7CisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOwor
CisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
ICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICAgICAgdGhpcy5jaGVja0Vy
cm9yKCk7CisgICAgICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
Uik7CisKKyAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIHRoaXMubV9zaXplWzBdLCB0aGlzLm1f
c2l6ZVsxXSk7CisKKyAgICAgICAgLy8gRmlsbCBmcmFtZWJ1ZmZlciB3aXRoIGdyaWQgcGF0dGVy
bi4KKyAgICAgICAgdmFyIGZvcm1hdCA9IGdsLlJHQkE7CisgICAgICAgIHZhciBkYXRhVHlwZSA9
IGdsLlVOU0lHTkVEX0JZVEU7CisgICAgICAgIHZhciBkYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUxldmVsKGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoZm9ybWF0LCBkYXRh
VHlwZSksIHRleFcsIHRleEgsIDEpOworCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRo
R3JpZChkYXRhLmdldEFjY2VzcygpLCA4LCBbMC4yLCAwLjcsIDAuMSwgMS4wXSwgWzAuNywgMC4x
LCAwLjUsIDAuOF0pOworCisgICAgICAgIHZhciBncmlkVGV4ID0gY3R4LmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGdyaWRUZXgpOworICAg
ICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywg
Z2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgY3R4LnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5F
QVIpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgIGN0eC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGZvcm1hdCwgdGV4VywgdGV4SCwgMCwgZm9ybWF0LCBkYXRhVHlwZSwgZGF0YS5n
ZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkpOworCisgICAgICAgIHJyVXRpbC5kcmF3UXVhZChjdHgs
IHRleFNoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdKTsKKyAgICAg
ICAgdGhpcy5jaGVja0Vycm9yKCk7CisKKyAgICAgICAgLy8gU2V0dXAgYmxlbmQuCisgICAgICAg
IGN0eC5lbmFibGUoZ2wuQkxFTkQpOworICAgICAgICBjdHguYmxlbmRFcXVhdGlvblNlcGFyYXRl
KHRoaXMubV9mdW5jUkdCLCB0aGlzLm1fZnVuY0FscGhhKTsKKyAgICAgICAgY3R4LmJsZW5kRnVu
Y1NlcGFyYXRlKHRoaXMubV9zcmNSR0IsIHRoaXMubV9kc3RSR0IsIHRoaXMubV9zcmNBbHBoYSwg
dGhpcy5tX2RzdEFscGhhKTsKKworICAgICAgICAvLyBSZW5kZXIgZ3JhZGllbnQgd2l0aCBibGVu
ZC4KKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZ3JhZFNoYWRlcklELCBbLTEuMCwgLTEu
MCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdKTsKKworICAgICAgICBlczNmRmJvVGVzdFV0aWwucmVh
ZFBpeGVscyhjdHgsIGRzdCwgMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXplWzFdLCBm
Ym9GbXQsIFsxLCAxLCAxLCAxXSwgWzAsIDAsIDAsIDBdKTsKKyAgICB9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICovCitlczNm
RmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvcmJ1ZmZlclRlc3RzID0gZnVuY3Rpb24oKSB7Cisg
ICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnY29sb3InLCAnQ29sb3JidWZmZXIg
dGVzdHMnKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZi
b0NvbG9yYnVmZmVyVGVzdHMsIHRjdVRlc3RDYXNlLkRlcXBUZXN0KTsKKworZXMzZkZib0NvbG9y
YnVmZmVyVGVzdHMuRmJvQ29sb3JidWZmZXJUZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBjb2xvckZvcm1hdHMgPSBbCisgICAgICAgIC8vIFJHQkEgZm9ybWF0cwor
ICAgICAgICBnbC5SR0JBMzJJLAorICAgICAgICBnbC5SR0JBMzJVSSwKKyAgICAgICAgZ2wuUkdC
QTE2SSwKKyAgICAgICAgZ2wuUkdCQTE2VUksCisgICAgICAgIGdsLlJHQkE4LAorICAgICAgICBn
bC5SR0JBOEksCisgICAgICAgIGdsLlJHQkE4VUksCisgICAgICAgIGdsLlNSR0I4X0FMUEhBOCwK
KyAgICAgICAgZ2wuUkdCMTBfQTIsCisgICAgICAgIGdsLlJHQjEwX0EyVUksCisgICAgICAgIGds
LlJHQkE0LAorICAgICAgICBnbC5SR0I1X0ExLAorCisgICAgICAgIC8vIFJHQiBmb3JtYXRzCisg
ICAgICAgIGdsLlJHQjgsCisgICAgICAgIGdsLlJHQjU2NSwKKworICAgICAgICAvLyBSRyBmb3Jt
YXRzCisgICAgICAgIGdsLlJHMzJJLAorICAgICAgICBnbC5SRzMyVUksCisgICAgICAgIGdsLlJH
MTZJLAorICAgICAgICBnbC5SRzE2VUksCisgICAgICAgIGdsLlJHOCwKKyAgICAgICAgZ2wuUkc4
SSwKKyAgICAgICAgZ2wuUkc4VUksCisKKyAgICAgICAgLy8gUiBmb3JtYXRzCisgICAgICAgIGds
LlIzMkksCisgICAgICAgIGdsLlIzMlVJLAorICAgICAgICBnbC5SMTZJLAorICAgICAgICBnbC5S
MTZVSSwKKyAgICAgICAgZ2wuUjgsCisgICAgICAgIGdsLlI4SSwKKyAgICAgICAgZ2wuUjhVSSwK
KworICAgICAgICAvLyBnbC5FWFRfY29sb3JfYnVmZmVyX2Zsb2F0CisgICAgICAgIGdsLlJHQkEz
MkYsCisgICAgICAgIGdsLlJHQkExNkYsCisgICAgICAgIGdsLlIxMUZfRzExRl9CMTBGLAorICAg
ICAgICBnbC5SRzMyRiwKKyAgICAgICAgZ2wuUkcxNkYsCisgICAgICAgIGdsLlIzMkYsCisgICAg
ICAgIGdsLlIxNkYsCisKKyAgICAgICAgLy8gZ2wuRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
IGlzIG5vdCBleHBvc2VkIGluIFdlYkdMIDIuMC4KKyAgICAgICAgLy8gZ2wuUkdCMTZGCisgICAg
XTsKKworICAgIC8vIC5jbGVhcgorICAgIHZhciBjbGVhckdyb3VwID0gdGN1VGVzdENhc2UubmV3
VGVzdCgiY2xlYXIiLCAiQ29sb3IgY2xlYXJzIik7CisgICAgdGhpcy5hZGRDaGlsZChjbGVhckdy
b3VwKTsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGNvbG9yRm9ybWF0cy5sZW5ndGg7
IG5keCsrKSB7CisgICAgICAgIGNsZWFyR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9Db2xvcmJ1
ZmZlclRlc3RzLkZib0NvbG9yQ2xlYXJDYXNlKAorICAgICAgICAgICAgZXMzZkZib1Rlc3RVdGls
LmdldEZvcm1hdE5hbWUoY29sb3JGb3JtYXRzW25keF0pLCAiIiwgY29sb3JGb3JtYXRzW25keF0s
IHRleE5wb3RTaXplQVswXSwgdGV4TnBvdFNpemVBWzFdKSk7CisgICAgfQorCisgICAgdmFyIG51
bUdyb3VwcyA9IDY7CisKKyAgICAvLyAudGV4MmQKKyAgICB2YXIgdGV4MkRHcm91cCA9IFtdOwor
ICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1Hcm91cHM7ICsraWkpIHsKKyAgICAgICAgdGV4
MkRHcm91cFtpaV0gPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJ0ZXgyZCIsICJUZXh0dXJlIDJEIHRl
c3RzIik7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQodGV4MkRHcm91cFtpaV0pOworICAgIH0KKyAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBjb2xvckZvcm1hdHMubGVuZ3RoOyBuZHgrKykgewor
ICAgICAgICB0ZXgyREdyb3VwW25keCAlIG51bUdyb3Vwc10uYWRkQ2hpbGQobmV3IGVzM2ZGYm9D
b2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yTXVsdGlUZXgyRENhc2UoCisgICAgICAgICAgICBlczNm
RmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShjb2xvckZvcm1hdHNbbmR4XSksICIiLCBjb2xvckZv
cm1hdHNbbmR4XSwgdGV4TnBvdFNpemVBLCBjb2xvckZvcm1hdHNbbmR4XSwgdGV4TnBvdFNpemVC
KSk7CisgICAgfQorCisgICAgLy8gLnRleGN1YmUKKyAgICB2YXIgdGV4Q3ViZUdyb3VwID0gW107
CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG51bUdyb3VwczsgKytpaSkgeworICAgICAgICB0
ZXhDdWJlR3JvdXBbaWldID0gdGN1VGVzdENhc2UubmV3VGVzdCgidGV4Y3ViZSIsICJUZXh0dXJl
IGN1YmUgbWFwIHRlc3RzIik7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQodGV4Q3ViZUdyb3VwW2lp
XSk7CisgICAgfQorICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGNvbG9yRm9ybWF0cy5sZW5n
dGg7IG5keCsrKSB7CisgICAgICAgIHRleEN1YmVHcm91cFtuZHggJSBudW1Hcm91cHNdLmFkZENo
aWxkKG5ldyBlczNmRmJvQ29sb3JidWZmZXJUZXN0cy5GYm9Db2xvclRleEN1YmVDYXNlKAorICAg
ICAgICAgICAgZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5hbWUoY29sb3JGb3JtYXRzW25keF0p
LCAiIiwgY29sb3JGb3JtYXRzW25keF0sIHRleFBvdFNpemUpKTsKKyAgICB9CisKKyAgICAvLyAu
dGV4MmRhcnJheQorICAgIHZhciB0ZXgyREFycmF5R3JvdXAgPSBbXTsKKyAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgbnVtR3JvdXBzOyArK2lpKSB7CisgICAgICAgIHRleDJEQXJyYXlHcm91cFtp
aV0gPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJ0ZXgyZGFycmF5IiwgIlRleHR1cmUgMkQgYXJyYXkg
dGVzdHMiKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZCh0ZXgyREFycmF5R3JvdXBbaWldKTsKKyAg
ICB9CisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgbmR4
KyspIHsKKyAgICAgICAgdGV4MkRBcnJheUdyb3VwW25keCAlIG51bUdyb3Vwc10uYWRkQ2hpbGQo
bmV3IGVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yVGV4MkRBcnJheUNhc2UoCisgICAg
ICAgICAgICBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShjb2xvckZvcm1hdHNbbmR4XSks
ICIiLCBjb2xvckZvcm1hdHNbbmR4XSwgdGV4UG90U2l6ZSkpOworICAgIH0KKworICAgIC8vIC50
ZXgzZAorICAgIHZhciB0ZXgzREdyb3VwID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IG51bUdyb3VwczsgKytpaSkgeworICAgICAgICB0ZXgzREdyb3VwW2lpXSA9IHRjdVRlc3RDYXNl
Lm5ld1Rlc3QoInRleDNkIiwgIlRleHR1cmUgM0QgdGVzdHMiKTsKKyAgICAgICAgdGhpcy5hZGRD
aGlsZCh0ZXgzREdyb3VwW2lpXSk7CisgICAgfQorICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8
IGNvbG9yRm9ybWF0cy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgIHRleDNER3JvdXBbbmR4ICUg
bnVtR3JvdXBzXS5hZGRDaGlsZChuZXcgZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuRmJvQ29sb3JU
ZXgzRENhc2UoCisgICAgICAgICAgICBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShjb2xv
ckZvcm1hdHNbbmR4XSksICIiLCBjb2xvckZvcm1hdHNbbmR4XSwgdGV4UG90U2l6ZSkpOworICAg
IH0KKworICAgIC8vIC5ibGVuZAorICAgIHZhciBibGVuZEdyb3VwID0gdGN1VGVzdENhc2UubmV3
VGVzdCgiYmxlbmQiLCAiQmxlbmRpbmcgdGVzdHMiKTsKKyAgICB0aGlzLmFkZENoaWxkKGJsZW5k
R3JvdXApOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0
aDsgbmR4KyspIHsKKyAgICAgICAgdmFyIGZvcm1hdCA9IGNvbG9yRm9ybWF0c1tuZHhdOworICAg
ICAgICB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChmb3Jt
YXQpOworICAgICAgICB2YXIgZm10Q2xhc3MgPSB0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVs
Q2xhc3ModGV4Rm10LnR5cGUpOworICAgICAgICB2YXIgZm10TmFtZSA9IGVzM2ZGYm9UZXN0VXRp
bC5nZXRGb3JtYXROYW1lKGZvcm1hdCk7CisKKyAgICAgICAgaWYgKHRleEZtdC50eXBlID09IHRj
dVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQgfHwKKyAgICAgICAgICAgIGZtdENsYXNzID09IHRj
dVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfSU5URUdFUiB8fAorICAgICAgICAg
ICAgZm10Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lO
VEVHRVIpCisgICAgICAgICAgICBjb250aW51ZTsgLy8gQmxlbmRpbmcgaXMgbm90IHN1cHBvcnRl
ZC4KKworICAgICAgICBibGVuZEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvQ29sb3JidWZmZXJU
ZXN0cy5GYm9CbGVuZENhc2UoZm10TmFtZSArICJfc3JjX292ZXIiLCAiIiwgZm9ybWF0LAorICAg
ICAgICAgICAgdGV4TnBvdFNpemVBLCBnbC5GVU5DX0FERCwgZ2wuRlVOQ19BREQsIGdsLlNSQ19B
TFBIQSwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSwgZ2wuWkVSTywgZ2wuT05FKSk7CisgICAgfQor
fTsKKworLyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0g
Y29udGV4dAorKi8KK2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRl
eHQsIHJhbmdlKSB7CisgICAgZ2wgPSBjb250ZXh0OworCisgICAgY29uc3QgY2FudmFzID0gZ2wu
Y2FudmFzOworICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1dIOworICAgIGNhbnZhcy5oZWlnaHQg
PSBjYW52YXNXSDsKKworICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFy
IHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZG
Ym9Db2xvcmJ1ZmZlclRlc3RzLkZib0NvbG9yYnVmZmVyVGVzdHMoKSk7CisKKyAgICAvL1NldCB1
cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIHNldEN1cnJl
bnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgZGVzY3JpcHRpb24o
c3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgdHJ5IHsKKyAgICAgICAg
aWYgKHJhbmdlKQorICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAgICAv
L1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAg
IH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQg
dG8gZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICB0
Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgfQorfTsKKworfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWU2OGZjOGM3YjNkMzgxZmI5
ODU2M2Y2MjY4YjY2MDIxY2Q4NzZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5qcwpAQCAtMCwwICsxLDU2NyBAQAorCisvLyBGYm9Db21wbGV0
ZW5lc3NUZXN0cworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc0Zib0Nv
bXBsZXRlbmVzc1Rlc3RzJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc0Zib1V0
aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZhciBlczNmRmJvQ29tcGxl
dGVuZXNzVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0czsK
KyAgICB2YXIgZ2xzRmJvVXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc0Zib1V0aWw7CisgICAgdmFy
IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzID0gbW9kdWxlcy5zaGFyZWQuZ2xzRmJvQ29tcGxldGVu
ZXNzVGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0
Q2FzZTsKKworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5pbml0R2xEZXBlbmRlbnRzID0g
ZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJv
dyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2wgb2JqZWN0Jyk7CisKKyAgICAgICAgLyoqCisgICAgICAg
ICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICovCisgICAgICAgIGVzM2ZGYm9Db21w
bGV0ZW5lc3NUZXN0cy5zX2VzM0NvbG9yUmVuZGVyYWJsZXMgPSBbCisgICAgICAgICAgICAvLyBH
TEVTMywgNC40LjQ6ICJBbiBpbnRlcm5hbCBmb3JtYXQgaXMgY29sb3ItcmVuZGVyYWJsZSBpZiBp
dCBpcyBvbmUgb2YKKyAgICAgICAgICAgIC8vIHRoZSBmb3JtYXRzIGZyb20gdGFibGUgMy4xMiBu
b3RlZCBhcyBjb2xvci1yZW5kZXJhYmxlLi4uIgorICAgICAgICAgICAgZ2wuUjgsIGdsLlJHOCwg
Z2wuUkdCOCwgZ2wuUkdCNTY1LCBnbC5SR0JBNCwgZ2wuUkdCNV9BMSwgZ2wuUkdCQTgsCisgICAg
ICAgICAgICBnbC5SR0IxMF9BMiwgZ2wuUkdCMTBfQTJVSSwgZ2wuU1JHQjhfQUxQSEE4LAorICAg
ICAgICAgICAgZ2wuUjhJLCBnbC5SOFVJLCBnbC5SMTZJLCBnbC5SMTZVSSwgZ2wuUjMySSwgZ2wu
UjMyVUksCisgICAgICAgICAgICBnbC5SRzhJLCBnbC5SRzhVSSwgZ2wuUkcxNkksIGdsLlJHMTZV
SSwgZ2wuUkczMkksIGdsLlJHMzJVSSwKKyAgICAgICAgICAgIGdsLlJHQkE4MSwgZ2wuUkdCQThV
SSwgZ2wuUkdCMTZJLCBnbC5SR0JBMTZVSSwgZ2wuUkdCQTMySSwgZ2wuUkdCQTMyVUkKKyAgICAg
ICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0KKyAg
ICAgICAgKi8KKyAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXMzVW5zaXplZENv
bG9yUmVuZGVyYWJsZXMgPSBbCisgICAgICAgICAgICAvLyAiLi4ub3IgaWYgaXQgaXMgdW5zaXpl
ZCBmb3JtYXQgUkdCQSBvciBSR0IuIgorICAgICAgICAgICAgLy8gU2VlIFRhYmxlIDMuMyBpbiBH
TEVTMy4KKyAgICAgICAgICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUpLAorICAgICAgICAgICAgZ2xzRmJvVXRpbC5mb3JtYXRrZXkoZ2wuUkdCQSwgZ2wu
VU5TSUdORURfU0hPUlRfNF80XzRfNCksCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtl
eShnbC5SR0JBLCBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xKSwKKyAgICAgICAgICAgIGdsc0Zi
b1V0aWwuZm9ybWF0a2V5KGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSksCisgICAgICAgICAgICBn
bHNGYm9VdGlsLmZvcm1hdGtleShnbC5SR0IsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81KQorICAg
ICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAqIEB0eXBlIHtBcnJheTxudW1iZXI+fQor
ICAgICAgICAqLworICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuc19lczNEZXB0aFJl
bmRlcmFibGVzID0gWworICAgICAgICAgICAgLy8gR0xFUzMsIDQuNC40OiAiQW4gaW50ZXJuYWwg
Zm9ybWF0IGlzIGRlcHRoLXJlbmRlcmFibGUgaWYgaXQgaXMgb25lIG9mCisgICAgICAgICAgICAv
LyB0aGUgZm9ybWF0cyBmcm9tIHRhYmxlIDMuMTMuIgorICAgICAgICAgICAgZ2wuREVQVEhfQ09N
UE9ORU5UMTYsIGdsLkRFUFRIX0NPTVBPTkVOVDI0LCBnbC5ERVBUSF9DT01QT05FTlQzMkYsCisg
ICAgICAgICAgICBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5ERVBUSDMyRl9TVEVOQ0lMOAorICAg
ICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAqIEB0eXBlIHtBcnJheTxudW1iZXI+fQor
ICAgICAgICAqLworICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuc19lczNTdGVuY2ls
UmJvUmVuZGVyYWJsZXMgPSBbCisgICAgICAgICAgICAvLyBHTEVTMywgNC40LjQ6ICJBbiBpbnRl
cm5hbCBmb3JtYXQgaXMgc3RlbmNpbC1yZW5kZXJhYmxlIGlmIGl0IGlzCisgICAgICAgICAgICAv
LyBTVEVOQ0lMX0lOREVYOC4uLiIKKyAgICAgICAgICAgIGdsLlNURU5DSUxfSU5ERVg4CisgICAg
ICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59Cisg
ICAgICAgICovCisgICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX2VzM1N0ZW5jaWxS
ZW5kZXJhYmxlcyA9IFsKKyAgICAgICAgICAgIC8vICIuLi5vciBvbmUgb2YgdGhlIGZvcm1hdHMg
ZnJvbSB0YWJsZSAzLjEzIHdob3NlIGJhc2UgaW50ZXJuYWwgZm9ybWF0IGlzCisgICAgICAgICAg
ICAvLyBERVBUSF9TVEVOQ0lMLiIKKyAgICAgICAgICAgIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGds
LkRFUFRIMzJGX1NURU5DSUw4CisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICog
QHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICovCisgICAgICAgIGVzM2ZGYm9Db21wbGV0
ZW5lc3NUZXN0cy5zX2VzM1RleHR1cmVGbG9hdEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbC5S
R0JBMzJGLCBnbC5SR0JBMTZGLCBnbC5SMTFGX0cxMUZfQjEwRiwKKyAgICAgICAgICAgIGdsLlJH
MzJGLCBnbC5SRzE2RiwgZ2wuUjMyRiwgZ2wuUjE2RiwKKyAgICAgICAgICAgIGdsLlJHQkExNkYs
IGdsLlJHQjE2RiwgZ2wuUkcxNkYsIGdsLlIxNkYKKyAgICAgICAgXTsKKworICAgICAgICAvKioK
KyAgICAgICAgKiBAdHlwZSB7QXJyYXk8Z2xzRmJvVXRpbC5mb3JtYXRUPn0KKyAgICAgICAgKi8K
KyAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXMzRm9ybWF0cyA9IFsKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIGdsc0Zib1V0
aWwuRm9ybWF0RmxhZ3MuUkVRVUlSRURfUkVOREVSQUJMRSB8CisgICAgICAgICAgICAgICAgICAg
IGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuQ09MT1JfUkVOREVSQUJMRSB8CisgICAgICAgICAgICAg
ICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuVEVYVFVSRV9WQUxJRAorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGVzM2ZGYm9Db21w
bGV0ZW5lc3NUZXN0cy5zX2VzM1Vuc2l6ZWRDb2xvclJlbmRlcmFibGVzKQorICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAg
IGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVRVUlSRURfUkVOREVSQUJMRSB8CisgICAgICAgICAg
ICAgICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuQ09MT1JfUkVOREVSQUJMRSB8CisgICAg
ICAgICAgICAgICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVOREVSQlVGRkVSX1ZBTElE
IHwKKyAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5URVhUVVJFX1ZB
TElECisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdl
QXJyYXkoZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXMzQ29sb3JSZW5kZXJhYmxlcykKKyAg
ICAgICAgICAgIF0sIFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVRVUlSRURfUkVOREVSQUJMRSB8CisgICAgICAgICAgICAg
ICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuREVQVEhfUkVOREVSQUJMRSB8CisgICAgICAg
ICAgICAgICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVOREVSQlVGRkVSX1ZBTElEIHwK
KyAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5URVhUVVJFX1ZBTElE
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJy
YXkoZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXMzRGVwdGhSZW5kZXJhYmxlcykKKyAgICAg
ICAgICAgIF0sIFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIGdsc0Zi
b1V0aWwuRm9ybWF0RmxhZ3MuUkVRVUlSRURfUkVOREVSQUJMRSB8CisgICAgICAgICAgICAgICAg
ICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuU1RFTkNJTF9SRU5ERVJBQkxFIHwKKyAgICAgICAg
ICAgICAgICAgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5SRU5ERVJCVUZGRVJfVkFMSUQKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGdsc0Zib1V0aWwucmFuZ2VBcnJheShl
czNmRmJvQ29tcGxldGVuZXNzVGVzdHMuc19lczNTdGVuY2lsUmJvUmVuZGVyYWJsZXMpCisgICAg
ICAgICAgICBdLCBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICBnbHNG
Ym9VdGlsLkZvcm1hdEZsYWdzLlJFUVVJUkVEX1JFTkRFUkFCTEUgfAorICAgICAgICAgICAgICAg
ICAgICBnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLlNURU5DSUxfUkVOREVSQUJMRSB8CisgICAgICAg
ICAgICAgICAgICAgIGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVOREVSQlVGRkVSX1ZBTElEIHwK
KyAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5URVhUVVJFX1ZBTElE
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJy
YXkoZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXMzU3RlbmNpbFJlbmRlcmFibGVzKQorICAg
ICAgICAgICAgXSwKKworICAgICAgICAgICAgLy8gVGhlc2UgYXJlIG5vdCBjb2xvci1yZW5kZXJh
YmxlIGluIHZhbmlsbGEgRVMzLCBidXQgd2UgbmVlZCB0byBtYXJrIHRoZW0KKyAgICAgICAgICAg
IC8vIGFzIHZhbGlkIGZvciB0ZXh0dXJlcywgc2luY2UgRVhUX2NvbG9yX2J1ZmZlcl8oaGFsZl8p
ZmxvYXQgYnJpbmdzIGluCisgICAgICAgICAgICAvLyBjb2xvci1yZW5kZXJhYmlsaXR5IGFuZCBv
bmx5IHJlbmRlcmJ1ZmZlci12YWxpZGl0eS4KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLlRFWFRVUkVfVkFMSUQsCisgICAgICAgICAgICAgICAg
Z2xzRmJvVXRpbC5yYW5nZUFycmF5KGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX2VzM1RleHR1
cmVGbG9hdEZvcm1hdHMpCisgICAgICAgICAgICBdCisgICAgICAgIF07CisKKyAgICAgICAgLy8g
Z2wuRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdAorICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVz
dHMuc19leHRDb2xvckJ1ZmZlckZsb2F0Rm9ybWF0cyA9IFsKKyAgICAgICAgICAgIGdsLlJHQkEz
MkYsIGdsLlJHQkExNkYsIGdsLlIxMUZfRzExRl9CMTBGLCBnbC5SRzMyRiwgZ2wuUkcxNkYsIGds
LlIzMkYsIGdsLlIxNkYKKyAgICAgICAgXTsKKworICAgICAgICAvLyBnbC5PRVNfdGV4dHVyZV9z
dGVuY2lsOAorICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuc19leHRPRVNUZXh0dXJl
U3RlbmNpbDggPSBbCisgICAgICAgICAgICBnbC5TVEVOQ0lMX0lOREVYOAorICAgICAgICBdOwor
CisgICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX2VzM0V4dEZvcm1hdHMgPSBbewor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6ICdnbC5FWFRfY29sb3JfYnVmZmVyX2Zsb2F0JywK
KyAgICAgICAgICAgICAgICBmbGFnczogZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5SRVFVSVJFRF9S
RU5ERVJBQkxFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLkZvcm1h
dEZsYWdzLkNPTE9SX1JFTkRFUkFCTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVOREVSQlVGRkVSX1ZBTElELAorICAgICAgICAgICAgICAg
IGZvcm1hdHM6IG5ldyBnbHNGYm9VdGlsLlJhbmdlKGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5z
X2V4dENvbG9yQnVmZmVyRmxvYXRGb3JtYXRzKQorICAgICAgICAgICAgfSwgeworICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnM6ICdnbC5PRVNfdGV4dHVyZV9zdGVuY2lsOCcsCisgICAgICAgICAg
ICAgICAgZmxhZ3M6IGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuUkVRVUlSRURfUkVOREVSQUJMRSB8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5TVEVO
Q0lMX1JFTkRFUkFCTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc0Zib1V0aWwu
Rm9ybWF0RmxhZ3MuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBmb3JtYXRzOiBuZXcg
Z2xzRmJvVXRpbC5SYW5nZShlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuc19leHRPRVNUZXh0dXJl
U3RlbmNpbDgpCisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgZ2xzRmJvQ29t
cGxldGVuZXNzVGVzdHMuaW5pdEdsRGVwZW5kZW50cyhnbCk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLkNoZWNrZXJ9
CisgICAgICovCisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLkVTM0NoZWNrZXIgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZ2xzRmJvVXRpbC5DaGVja2VyLmNhbGwodGhpcywgZ2wpOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX251bVNhbXBsZXMgPSAtMTsgLy8gR0xz
aXplaQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2RlcHRoU3RlbmNpbElt
YWdlID0gMDsgLy8gR0x1aW50CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1f
ZGVwdGhTdGVuY2lsVHlwZSA9IGdsLk5PTkU7CisgICAgfTsKKyAgICBlczNmRmJvQ29tcGxldGVu
ZXNzVGVzdHMuRVMzQ2hlY2tlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0Zib1V0aWwu
Q2hlY2tlci5wcm90b3R5cGUpOworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5FUzNDaGVj
a2VyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5FUzND
aGVja2VyOworCisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLkVTM0NoZWNrZXIucHJvdG90
eXBlLmNoZWNrID0gZnVuY3Rpb24oYXR0UG9pbnQsIGF0dCwgaW1hZ2UpIHsKKworICAgICAgICB2
YXIgaW1nU2FtcGxlcyA9IGdsc0Zib1V0aWwuaW1hZ2VOdW1TYW1wbGVzKGltYWdlKTsKKworICAg
ICAgICBpZiAodGhpcy5tX251bVNhbXBsZXMgPT0gLTEpIHsKKyAgICAgICAgICAgIHRoaXMubV9u
dW1TYW1wbGVzID0gaW1nU2FtcGxlczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEdMRVMzOiAiVGhlIHZhbHVlIG9mIFJFTkRFUkJVRkZFUl9TQU1QTEVTIGlzIHRoZSBzYW1lIGZv
ciBhbGwgYXR0YWNoZWQKKyAgICAgICAgICAgIC8vIHJlbmRlcmJ1ZmZlcnMgYW5kLCBpZiB0aGUg
YXR0YWNoZWQgaW1hZ2VzIGFyZSBhIG1peCBvZiByZW5kZXJidWZmZXJzCisgICAgICAgICAgICAv
LyBhbmQgdGV4dHVyZXMsIHRoZSB2YWx1ZSBvZiBSRU5ERVJCVUZGRVJfU0FNUExFUyBpcyB6ZXJv
LiIKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBPbiBjcmVhdGluZyBhIHJlbmRlcmJ1
ZmZlcjogIklmIF9zYW1wbGVzXyBpcyB6ZXJvLCB0aGVuCisgICAgICAgICAgICAvLyBSRU5ERVJC
VUZGRVJfU0FNUExFUyBpcyBzZXQgdG8gemVyby4gT3RoZXJ3aXNlIFsuLi5dIHRoZSByZXN1bHRp
bmcKKyAgICAgICAgICAgIC8vIHZhbHVlIGZvciBSRU5ERVJCVUZGRVJfU0FNUExFUyBpcyBndWFy
YW50ZWVkIHRvIGJlIGdyZWF0ZXIgdGhhbiBvcgorICAgICAgICAgICAgLy8gZXF1YWwgdG8gX3Nh
bXBsZXNfIGFuZCBubyBtb3JlIHRoYW4gdGhlIG5leHQgbGFyZ2VyIHNhbXBsZSBjb3VudAorICAg
ICAgICAgICAgLy8gc3VwcG9ydGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4iCisKKyAgICAgICAg
ICAgIC8vIEVpdGhlciBhbGwgYXR0YWNobWVudHMgYXJlIHplcm8tc2FtcGxlIHJlbmRlcmJ1ZmZl
cnMgYW5kL29yCisgICAgICAgICAgICAvLyB0ZXh0dXJlcywgb3Igbm9uZSBvZiB0aGVtIGFyZS4K
KyAgICAgICAgICAgIHRoaXMuYWRkRkJPU3RhdHVzKAorICAgICAgICAgICAgICAgICh0aGlzLm1f
bnVtU2FtcGxlcyA9PSAwKSA9PSAoaW1nU2FtcGxlcyA9PSAwKSwKKyAgICAgICAgICAgICAgICBn
bC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFCisgICAgICAgICAgICApOworCisg
ICAgICAgICAgICAvLyBJZiB0aGUgYXR0YWNobWVudHMgcmVxdWVzdGVkIGEgZGlmZmVyZW50IG51
bWJlciBvZiBzYW1wbGVzLCB0aGUKKyAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGlzIGFs
bG93ZWQgdG8gcmVwb3J0IHRoaXMgYXMgaW5jb21wbGV0ZS4gSG93ZXZlciwgaXQKKyAgICAgICAg
ICAgIC8vIGlzIGFsc28gcG9zc2libGUgdGhhdCBkZXNwaXRlIHRoZSBkaWZmZXJlbnQgcmVxdWVz
dHMsIHRoZQorICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb24gYWxsb2NhdGVkIHRoZSBzYW1l
IG51bWJlciBvZiBzYW1wbGVzIHRvIGJvdGguIEhlbmNlCisgICAgICAgICAgICAvLyByZXBvcnRp
bmcgdGhlIGZyYW1lYnVmZmVyIGFzIGNvbXBsZXRlIGlzIGFsc28gbGVnYWwuCisgICAgICAgICAg
ICB0aGlzLmFkZFBvdGVudGlhbEZCT1N0YXR1cygKKyAgICAgICAgICAgICAgICB0aGlzLm1fbnVt
U2FtcGxlcyA9PSBpbWdTYW1wbGVzLAorICAgICAgICAgICAgICAgIGdsLkZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfTVVMVElTQU1QTEUKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyAiRGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNobWVudHMsIGlmIHByZXNlbnQsIGFyZSB0aGUg
c2FtZSBpbWFnZS4iCisgICAgICAgIGlmIChhdHRQb2ludCA9PSBnbC5ERVBUSF9BVFRBQ0hNRU5U
IHx8IGF0dFBvaW50ID09IGdsLlNURU5DSUxfQVRUQUNITUVOVCkgeworICAgICAgICAgICAgaWYg
KHRoaXMubV9kZXB0aFN0ZW5jaWxJbWFnZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy5t
X2RlcHRoU3RlbmNpbEltYWdlID0gYXR0LmltYWdlTmFtZTsKKyAgICAgICAgICAgICAgICB0aGlz
Lm1fZGVwdGhTdGVuY2lsVHlwZSA9IGdsc0Zib1V0aWwuYXR0YWNobWVudFR5cGUoYXR0KTsKKwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmFkZEZCT1N0YXR1cygK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2RlcHRoU3RlbmNpbEltYWdlID09IGF0dC5pbWFn
ZU5hbWUgJiYgdGhpcy5tX2RlcHRoU3RlbmNpbFR5cGUgPT0gZ2xzRmJvVXRpbC5hdHRhY2htZW50
VHlwZShhdHQpLAorICAgICAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH07
CisKKyAgICAvKioKKyAgICAqIEB0eXBlZGVmIHt7dGV4dHVyZUtpbmQ6IG51bWJlciwgbnVtTGF5
ZXJzOiBudW1iZXIsIGF0dGFjaG1lbnRMYXllcjogbnVtYmVyfX0KKyAgICAqLworICAgIGVzM2ZG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXNUOworCisgICAgLyoqCisgICAgKiBA
cGFyYW0ge251bWJlcn0gdGV4dHVyZUtpbmQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MYXll
cnMKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRhY2htZW50TGF5ZXIKKyAgICAqIEByZXR1cm4g
e2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXNUfQorICAgICovCisgICAg
ZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bUxheWVyc1BhcmFtcyA9IGZ1bmN0aW9uKHRleHR1
cmVLaW5kLCBudW1MYXllcnMsIGF0dGFjaG1lbnRMYXllcikgeworICAgICAgICBpZiAodHlwZW9m
KGF0dGFjaG1lbnRMYXllcikgPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHRleHR1cmVL
aW5kID0gMDsKKyAgICAgICAgICAgIG51bUxheWVycyA9IDA7CisgICAgICAgICAgICBhdHRhY2ht
ZW50TGF5ZXIgPSAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0
ZXh0dXJlS2luZDogdGV4dHVyZUtpbmQsIC8vPCBnbC5URVhUVVJFXzNEIG9yIGdsLlRFWFRVUkVf
MkRfQVJSQVkKKyAgICAgICAgICAgIG51bUxheWVyczogbnVtTGF5ZXJzLCAvLzwgTnVtYmVyIG9m
IGxheWVycyBpbiB0ZXh0dXJlCisgICAgICAgICAgICBhdHRhY2htZW50TGF5ZXI6IGF0dGFjaG1l
bnRMYXllciAvLzwgTGF5ZXIgcmVmZXJlbmNlZCBieSBhdHRhY2htZW50CisgICAgICAgIH07Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXll
cnNQYXJhbXMuZ2V0TmFtZQorICAgICAqIEBwYXJhbSB7ZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3Rz
Lm51bUxheWVyc1BhcmFtc1R9IHBhcmFtcworICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KKyAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtTGF5ZXJzUGFyYW1zLmdldE5hbWUg
PSBmdW5jdGlvbihwYXJhbXMpIHsKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIChwYXJh
bXMudGV4dHVyZUtpbmQgPT0gZ2wuVEVYVFVSRV8zRCA/ICczZCcgOiAnMmRhcnInKSArICdfJyAr
CisgICAgICAgICAgICBwYXJhbXMubnVtTGF5ZXJzICsgJ18nICsKKyAgICAgICAgICAgIHBhcmFt
cy5hdHRhY2htZW50TGF5ZXIKKyAgICAgICAgKTsKKyAgICB9OworICAgIC8qKgorICAgICAqIGVz
M2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXMuZ2V0RGVzY3JpcHRpb24KKyAg
ICAgKiBAcGFyYW0ge2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXNUfSBw
YXJhbXMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZkZib0NvbXBs
ZXRlbmVzc1Rlc3RzLm51bUxheWVyc1BhcmFtcy5nZXREZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKHBh
cmFtcykgeworICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgKHBhcmFtcy50ZXh0dXJlS2lu
ZCA9PSBnbC5URVhUVVJFXzNEID8gJzNEIFRleHR1cmUnIDogJzJEIEFycmF5IFRleHR1cmUnKSAr
ICcsICcgKworICAgICAgICAgICAgcGFyYW1zLm51bUxheWVycyArICcgbGF5ZXJzLCAnICsKKyAg
ICAgICAgICAgICdhdHRhY2hlZCBsYXllciAnICsgcGFyYW1zLmF0dGFjaG1lbnRMYXllciArICcu
JworICAgICAgICApOworICAgIH07CisKKyAgICAvLyBzdHJpbmcsIHN0cmluZywgZ2xzRmJvQ29t
cGxldGVuZXNzOjpjb250ZXh0LCBwYXJhbXMuCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IK
KyAgICAqIEBleHRlbmRzIHtnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5UZXN0QmFzZX0KKyAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICog
QHBhcmFtIHtnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5Db250ZXh0fSBjdHgKKyAgICAqIEBwYXJh
bSB7ZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bUxheWVyc1BhcmFtc1R9IHBhcmFtcworICAg
ICovCisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLk51bUxheWVyc1Rlc3QgPSBmdW5jdGlv
bihuYW1lLCBkZXNjLCBjdHgsIHBhcmFtcykgeworICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5UZXN0QmFzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIHBhcmFtcyk7CisgICAgICAgIHRo
aXMubV9jdHggPSBjdHg7CisgICAgfTsKKworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5O
dW1MYXllcnNUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMuVGVzdEJhc2UucHJvdG90eXBlKTsKKyAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMu
TnVtTGF5ZXJzVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRmJvQ29tcGxldGVuZXNz
VGVzdHMuTnVtTGF5ZXJzVGVzdDsKKworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5OdW1M
YXllcnNUZXN0LnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIGdsKSB7CisKKyAg
ICAgICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFs
aWQgZ2wgb2JqZWN0Jyk7CisKKyAgICAgICAgdmFyIHRhcmdldCA9IGdsLkNPTE9SX0FUVEFDSE1F
TlQwOworICAgICAgICB2YXIgdGV4Q2ZnID0gYnVpbGRlci5tYWtlQ29uZmlnKAorICAgICAgICAg
ICAgZnVuY3Rpb24oa2luZCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAg
ICAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfM0Q6IHJldHVybiBnbHNGYm9VdGlsLlRl
eHR1cmUzRDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEX0FSUkFZOiBy
ZXR1cm4gZ2xzRmJvVXRpbC5UZXh0dXJlMkRBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDogdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIGNhc2UnKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9KHRoaXMubV9wYXJhbXMudGV4dHVyZUtpbmQpCisgICAgICAgICk7
CisKKyAgICAgICAgdGV4Q2ZnLmludGVybmFsRm9ybWF0ID0gdGhpcy5nZXREZWZhdWx0Rm9ybWF0
KHRhcmdldCwgZ2wuVEVYVFVSRSwgZ2wpOworICAgICAgICB0ZXhDZmcud2lkdGggPSA2NDsKKyAg
ICAgICAgdGV4Q2ZnLmhlaWdodCA9IDY0OworICAgICAgICB0ZXhDZmcubnVtTGF5ZXJzID0gdGhp
cy5tX3BhcmFtcy5udW1MYXllcnM7CisgICAgICAgIHZhciB0ZXggPSBidWlsZGVyLmdsQ3JlYXRl
VGV4dHVyZSh0ZXhDZmcpOworCisgICAgICAgIHZhciBhdHQgPSBidWlsZGVyLm1ha2VDb25maWco
Z2xzRmJvVXRpbC5UZXh0dXJlTGF5ZXJBdHRhY2htZW50KTsKKyAgICAgICAgYXR0LmxheWVyID0g
dGhpcy5tX3BhcmFtcy5hdHRhY2htZW50TGF5ZXI7CisgICAgICAgIGF0dC5pbWFnZU5hbWUgPSB0
ZXg7CisKKyAgICAgICAgYnVpbGRlci5nbEF0dGFjaCh0YXJnZXQsIGF0dCk7CisKKyAgICAvLyAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworLy9lczNmRmJv
Q29tcGxldGVuZXNzVGVzdHMuTnVtTGF5ZXJzVGVzdC5wcm90b3R5cGUuaXNFeGVjdXRhYmxlID0g
ZnVuY3Rpb24oKSB7CisvLyAgICByZXR1cm4gZmFsc2U7CisvL307CisKKyAgICAvKioKKyAgICAg
KiBAZW51bQorICAgICAqLworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5lX3NhbXBsZXMg
PSB7CisgICAgICAgIE5PTkU6IC0yLAorICAgICAgICBURVhUVVJFOiAtMQorICAgIH07CisKKyAg
ICAvKioKKyAgICAqIEB0eXBlZGVmIHt7bnVtU2FtcGxlczogQXJyYXk8bnVtYmVyPn19CisgICAg
Ki8KKyAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtc1Q7CisKKyAg
ICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2xvdXIKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBkZXB0aAorICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZW5jaWwKKyAgICAqIEByZXR1cm4ge2Vz
M2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1TYW1wbGVzUGFyYW1zVH0KKyAgICAqLworICAgIGVz
M2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1TYW1wbGVzUGFyYW1zID0gZnVuY3Rpb24oY29sb3Vy
LCBkZXB0aCwgc3RlbmNpbCkgeworICAgICAgICB2YXIgcmV0ID0geworICAgICAgICAgICAgbnVt
U2FtcGxlczogbmV3IEFycmF5KDMpCisgICAgICAgIH07CisgICAgICAgIGlmIChjb2xvdXIgIT09
IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgcmV0Lm51bVNhbXBsZXNbMF0gPSBjb2xvdXI7Cisg
ICAgICAgICAgICBpZiAoZGVwdGggIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIHJl
dC5udW1TYW1wbGVzWzFdID0gZGVwdGg7CisgICAgICAgICAgICAgICAgaWYgKHN0ZW5jaWwgIT09
IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgICAgICByZXQubnVtU2FtcGxlc1syXSA9IHN0
ZW5jaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtlczNmRmJv
Q29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtc1R9IHBhcmFtcworICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICovCisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bVNhbXBs
ZXNQYXJhbXMuZ2V0TmFtZSA9IGZ1bmN0aW9uKHBhcmFtcykgeworICAgICAgICB2YXIgb3V0ID0g
Jyc7CisKKyAgICAgICAgdmFyIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChmaXJzdCkKKyAgICAgICAgICAgICAgICBm
aXJzdCA9IGZhbHNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dCArPSAn
Xyc7CisKKyAgICAgICAgICAgIHN3aXRjaCAocGFyYW1zLm51bVNhbXBsZXNbaV0pIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5lX3NhbXBsZXMuTk9ORTog
b3V0ICs9ICdub25lJzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBlczNmRmJvQ29tcGxl
dGVuZXNzVGVzdHMuZV9zYW1wbGVzLlRFWFRVUkU6IG91dCArPSAndGV4JzsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDogb3V0ICs9ICdyYm8nOyBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0OworICAgIH07CisgICAgLyoqCisgICAgKiBA
cGFyYW0ge2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1TYW1wbGVzUGFyYW1zVH0gcGFyYW1z
CisgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgKi8KKyAgICBlczNmRmJvQ29tcGxldGVuZXNz
VGVzdHMubnVtU2FtcGxlc1BhcmFtcy5nZXREZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKHBhcmFtcykg
eworICAgICAgICB2YXIgb3V0ID0gJyc7CisgICAgICAgIHZhciBuYW1lcyA9IFsnY29sb3InLCAn
ZGVwdGgnLCAnc3RlbmNpbCddOworICAgICAgICB2YXIgZmlyc3QgPSB0cnVlOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgICAgICBpZiAoZmlyc3QpCisg
ICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBvdXQgKz0gJywgJzsKKworICAgICAgICAgICAgaWYgKHBhcmFtcy5udW1TYW1wbGVz
W2ldID09IGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5lX3NhbXBsZXMuVEVYVFVSRSkgeworICAg
ICAgICAgICAgICAgIG91dCArPSAndGV4dHVyZSAnICsgbmFtZXNbaV0gKyAnIGF0dGFjaG1lbnQn
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQgKz0gcGFyYW1zLm51
bVNhbXBsZXNbaV0gKyAnLXNhbXBsZSByZW5kZXJidWZmZXIgJyArIG5hbWVzW2ldICsgJyBhdHRh
Y2htZW50JzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0Owor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICogQGV4dGVuZHMge2ds
c0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlfQorICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgKiBAcGFyYW0ge2dsc0Zib0NvbXBs
ZXRlbmVzc1Rlc3RzLkNvbnRleHR9IGN0eAorICAgICogQHBhcmFtIHtlczNmRmJvQ29tcGxldGVu
ZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtc1R9IHBhcmFtcworICAgICovCisgICAgZXMzZkZib0Nv
bXBsZXRlbmVzc1Rlc3RzLk51bVNhbXBsZXNUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzYywgY3R4
LCBwYXJhbXMpIHsKKyAgICAgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuVGVzdEJhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjLCBwYXJhbXMpOworICAgICAgICB0aGlzLm1fY3R4ID0gY3R4Owor
ICAgIH07CisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLk51bVNhbXBsZXNUZXN0LnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuVGVzdEJhc2UucHJv
dG90eXBlKTsKKyAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuTnVtU2FtcGxlc1Rlc3QucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLk51bVNhbXBsZXNU
ZXN0OworCisgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLk51bVNhbXBsZXNUZXN0LnByb3Rv
dHlwZS5idWlsZCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIGdsKSB7CisgICAgICAgIGlmICghKGdsID0g
Z2wgfHwgd2luZG93LmdsKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdsIG9iamVjdCcpOwor
CisgICAgICAgIHZhciBzX3RhcmdldHMgPSBbCisgICAgICAgICAgICBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuQ09MT1JfQVRUQUNITUVOVDEsIGdsLkRFUFRIX0FUVEFDSE1FTlQKKyAgICAgICAg
XTsKKyAgICAgICAgLy8gTm9uLWludGVnZXIgZm9ybWF0cyBmb3IgZWFjaCBhdHRhY2htZW50IHR5
cGUuCisgICAgICAgIC8vIFx0b2RvIFsyMDEzLTEyLTE3IGxhdXJpXSBBZGQgZml4ZWQvZmxvYXRp
bmcvaW50ZWdlciBtZXRhZGF0YSBmb3IgZm9ybWF0cyBzbworICAgICAgICAvLyB3ZSBjYW4gcGlj
ayBvbmUgc21hcnRseSBvciBtYXliZSB0cnkgc2V2ZXJhbC4KKyAgICAgICAgdmFyIHNfZm9ybWF0
cyA9IFsKKyAgICAgICAgICAgIGdsLlJHQkE4LCBnbC5SR0I1NjUsIGdsLkRFUFRIX0NPTVBPTkVO
VDI0CisgICAgICAgIF07CisKKyAgICAgICAgdmFyIGwgPSBzX3RhcmdldHMubGVuZ3RoOworICAg
ICAgICBpZiAodGhpcy5tX3BhcmFtcy5udW1TYW1wbGVzLmxlbmd0aCAhPSBsKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBudW1iZXIgb2YgcGFyYW1zLicpOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0g
c190YXJnZXRzW2ldOworICAgICAgICAgICAgdmFyIGZtdCA9IG5ldyBnbHNGYm9VdGlsLkltYWdl
Rm9ybWF0KHNfZm9ybWF0c1tpXSwgZ2wuTk9ORSk7CisKKyAgICAgICAgICAgIHZhciBucyA9IHRo
aXMubV9wYXJhbXMubnVtU2FtcGxlc1tpXTsKKyAgICAgICAgICAgIGlmIChucyA9PSBlczNmRmJv
Q29tcGxldGVuZXNzVGVzdHMuZV9zYW1wbGVzLk5PTkUpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAobnMgPT0gZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmVfc2Ft
cGxlcy5URVhUVVJFKSB7CisgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2hUYXJnZXRUb05ldyh0
YXJnZXQsIGdsLlRFWFRVUkUsIGZtdCwgNjQsIDY0LCBidWlsZGVyLCBnbCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciByYm9DZmcgPSBidWlsZGVyLm1ha2VDb25m
aWcoZ2xzRmJvVXRpbC5SZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgIHJib0NmZy5pbnRl
cm5hbEZvcm1hdCA9IGZtdDsKKyAgICAgICAgICAgICAgICByYm9DZmcud2lkdGggPSByYm9DZmcu
aGVpZ2h0ID0gNjQ7CisgICAgICAgICAgICAgICAgcmJvQ2ZnLm51bVNhbXBsZXMgPSBuczsKKwor
ICAgICAgICAgICAgICAgIHZhciByYm8gPSBidWlsZGVyLmdsQ3JlYXRlUmJvKHJib0NmZyk7Cisg
ICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIGRvIG5vdCBuZWNlc3NhcmlseSBzdXBw
b3J0IHNhbXBsZSBzaXplcyBncmVhdGVyIHRoYW4gMS4KKyAgICAgICAgICAgICAgICBpZiAoYnVp
bGRlci5nZXRFcnJvcigpID09IGdsLklOVkFMSURfT1BFUkFUSU9OKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHNhbXBsZXMuJyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBhdHQgPSBidWlsZGVyLm1h
a2VDb25maWcoZ2xzRmJvVXRpbC5SZW5kZXJidWZmZXJBdHRhY2htZW50KTsKKyAgICAgICAgICAg
ICAgICBhdHQuaW1hZ2VOYW1lID0gcmJvOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuZ2xBdHRh
Y2godGFyZ2V0LCBhdHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfTsKKworICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5pbml0ID0g
ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgLy8odGVzdEN0eCwgcmVuZGVyQ3R4LCBmYWN0b3J5KSB7
CisgICAgICAgIHZhciBmYm9DdHggPSBuZXcgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuQ29udGV4
dChudWxsLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IGVzM2ZGYm9D
b21wbGV0ZW5lc3NUZXN0cy5FUzNDaGVja2VyKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGZi
b0N0eC5hZGRGb3JtYXRzKGdsc0Zib1V0aWwucmFuZ2VBcnJheShlczNmRmJvQ29tcGxldGVuZXNz
VGVzdHMuc19lczNGb3JtYXRzKSk7CisKKyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7dGN1VGVz
dENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5y
dW5uZXIudGVzdENhc2VzOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChmYm9DdHguY3Jl
YXRlUmVuZGVyYWJsZVRlc3RzKGdsKSk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChmYm9D
dHguY3JlYXRlQXR0YWNobWVudFRlc3RzKGdsKSk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChmYm9DdHguY3JlYXRlU2l6ZVRlc3RzKGdsKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIGxheWVyVGVzdHMgPSB0Y3VUZXN0Q2Fz
ZS5uZXdUZXN0KCdsYXllcicsICdUZXN0cyBmb3IgbGF5ZXIgYXR0YWNobWVudHMnKTsKKworICAg
ICAgICAvKiogQHN0YXRpYyAqLworICAgICAgICB2YXIgc19sYXllcnNQYXJhbXMgPSBbCisgICAg
ICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtTGF5ZXJzUGFyYW1zKGdsLlRFWFRV
UkVfMkRfQVJSQVksIDEsIDApLAorICAgICAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3Rz
Lm51bUxheWVyc1BhcmFtcyhnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCAzKSwKKyAgICAgICAgICAg
IGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXMoZ2wuVEVYVFVSRV8yRF9B
UlJBWSwgNCwgMyksCisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtTGF5
ZXJzUGFyYW1zKGdsLlRFWFRVUkVfMkRfQVJSQVksIDQsIDE1KSwKKyAgICAgICAgICAgIGVzM2ZG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXMoZ2wuVEVYVFVSRV8zRCwgMSwgMCks
CisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtTGF5ZXJzUGFyYW1zKGds
LlRFWFRVUkVfM0QsIDEsIDE1KSwKKyAgICAgICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0
cy5udW1MYXllcnNQYXJhbXMoZ2wuVEVYVFVSRV8zRCwgNCwgMTUpLAorICAgICAgICAgICAgZXMz
ZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bUxheWVyc1BhcmFtcyhnbC5URVhUVVJFXzNELCA2NCwg
MTUpCisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX2xheWVyc1Bh
cmFtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIG5hbWUgPSAnbmFtZSc7CisgICAg
ICAgICAgICB2YXIgZGVzYyA9ICdkZXNjJzsKKyAgICAgICAgICAgIGxheWVyVGVzdHMuYWRkQ2hp
bGQobmV3IGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5OdW1MYXllcnNUZXN0KAorICAgICAgICAg
ICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1MYXllcnNQYXJhbXMuZ2V0TmFtZShz
X2xheWVyc1BhcmFtc1tpXSksCisgICAgICAgICAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rl
c3RzLm51bUxheWVyc1BhcmFtcy5nZXREZXNjcmlwdGlvbihzX2xheWVyc1BhcmFtc1tpXSksCisg
ICAgICAgICAgICAgICAgZmJvQ3R4LCBzX2xheWVyc1BhcmFtc1tpXQorICAgICAgICAgICAgKSk7
CisgICAgICAgIH0KKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGxheWVyVGVzdHMpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBz
YW1wbGVUZXN0cyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3NhbXBsZScsICdUZXN0cyBmb3IgbXVs
dGlzYW1wbGUgYXR0YWNobWVudHMnKTsKKyAgICAgICAgLy8gc29tZSBzaG9ydCBoYW5kCisgICAg
ICAgIHZhciBzYW1wbGVzID0gZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmVfc2FtcGxlczsKKyAg
ICAgICAgLy8gc2FtcGxlIHRlc3RzCisgICAgICAgIC8qKiBAc3RhdGljICovCisgICAgICAgIHZh
ciBzX3NhbXBsZXNQYXJhbXMgPSBbCisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVz
dHMubnVtU2FtcGxlc1BhcmFtcygwLCBzYW1wbGVzLk5PTkUsIHNhbXBsZXMuTk9ORSksCisgICAg
ICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtcygxLCBzYW1w
bGVzLk5PTkUsIHNhbXBsZXMuTk9ORSksCisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNz
VGVzdHMubnVtU2FtcGxlc1BhcmFtcygyLCBzYW1wbGVzLk5PTkUsIHNhbXBsZXMuTk9ORSksCisg
ICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtcygwLCBz
YW1wbGVzLlRFWFRVUkUsIHNhbXBsZXMuTk9ORSksCisgICAgICAgICAgICBlczNmRmJvQ29tcGxl
dGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtcygxLCBzYW1wbGVzLlRFWFRVUkUsIHNhbXBsZXMu
Tk9ORSksCisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1Bh
cmFtcygyLCBzYW1wbGVzLlRFWFRVUkUsIHNhbXBsZXMuTk9ORSksCisgICAgICAgICAgICBlczNm
RmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtcygyLCAxLCBzYW1wbGVzLk5PTkUp
LAorICAgICAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bVNhbXBsZXNQYXJhbXMo
MiwgMiwgc2FtcGxlcy5OT05FKSwKKyAgICAgICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0
cy5udW1TYW1wbGVzUGFyYW1zKDAsIDAsIHNhbXBsZXMuVEVYVFVSRSksCisgICAgICAgICAgICBl
czNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxlc1BhcmFtcygxLCAyLCAwKSwKKyAgICAg
ICAgICAgIGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5udW1TYW1wbGVzUGFyYW1zKDIsIDIsIDAp
LAorICAgICAgICAgICAgZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bVNhbXBsZXNQYXJhbXMo
MSwgMSwgMSksCisgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxl
c1BhcmFtcygxLCAyLCA0KQorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc19zYW1wbGVzUGFyYW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9
ICduYW1lJzsKKyAgICAgICAgICAgIHZhciBkZXNjID0gJ2Rlc2MnOworICAgICAgICAgICAgc2Ft
cGxlVGVzdHMuYWRkQ2hpbGQobmV3IGVzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5OdW1TYW1wbGVz
VGVzdCgKKyAgICAgICAgICAgICAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVzdHMubnVtU2FtcGxl
c1BhcmFtcy5nZXROYW1lKHNfc2FtcGxlc1BhcmFtc1tpXSksCisgICAgICAgICAgICAgICAgZXMz
ZkZib0NvbXBsZXRlbmVzc1Rlc3RzLm51bVNhbXBsZXNQYXJhbXMuZ2V0RGVzY3JpcHRpb24oc19z
YW1wbGVzUGFyYW1zW2ldKSwKKyAgICAgICAgICAgICAgICBmYm9DdHgsIHNfc2FtcGxlc1BhcmFt
c1tpXQorICAgICAgICAgICAgKSk7CisgICAgICAgIH0KKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKHNhbXBsZVRlc3RzKTsKKworICAgIH07CisKKyAgICBlczNmRmJvQ29tcGxldGVuZXNzVGVz
dHMucnVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXN0TmFtZSA9ICdjb21wbGV0ZW5l
c3MnOworICAgICAgICB2YXIgdGVzdERlc2NyaXB0aW9uID0gJ0NvbXBsZXRlbmVzcyB0ZXN0cyc7
CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICBzdGF0
ZS50ZXN0TmFtZSA9IHRlc3ROYW1lOworICAgICAgICBzdGF0ZS50ZXN0Q2FzZXMgPSB0Y3VUZXN0
Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwpOworCisgICAgICAg
IC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAg
ICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHRl
c3REZXNjcmlwdGlvbik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlczNmRmJvQ29tcGxl
dGVuZXNzVGVzdHMuaW5pdCgpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnJ1bkNh
bGxiYWNrKHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycikg
eworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRj
dVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorCisgICAgfTsKKworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuanMgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY2MmEzNzY0ZWVl
M2Q4YmQwNDQ1YzhjM2U1ZTc0YmQ0NmFmZDExNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmRmJvRGVwdGhidWZmZXJUZXN0cy5qcwpAQCAtMCwwICsxLDM4NSBAQAorLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGls
aXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmRmJvRGVwdGhidWZmZXJUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0
Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuY29tbW9uLnRjdVJHQkEnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNv
bXBhcmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKK3ZhciBlczNmRmJvRGVwdGhidWZmZXJUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZib0RlcHRoYnVmZmVyVGVzdHM7Cit2YXIgZXMzZkZib1Rlc3RDYXNlID0gZnVuY3Rpb25h
bC5nbGVzMy5lczNmRmJvVGVzdENhc2U7Cit2YXIgZXMzZkZib1Rlc3RVdGlsID0gZnVuY3Rpb25h
bC5nbGVzMy5lczNmRmJvVGVzdFV0aWw7Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRlc3RDYXNlOwordmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1
cmZhY2U7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKK3Zh
ciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7Cit2YXIg
dGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKK3ZhciBkZVJhbmRvbSA9IGZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOwordmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1l
d29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3
b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKK3ZhciByclV0aWwgPSBmcmFtZXdvcmsucmVmZXJl
bmNlcmVuZGVyZXIucnJVdGlsOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlTWF0aDsKK3ZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJV
dGlsOworCisvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZhciBnbDsKKwor
dmFyIHNldFBhcmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxk
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGV4dGVuZHMge2VzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZX0KKyAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICogQHBhcmFtIHtudW1iZXJ9
IGZvcm1hdAorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcn0gaGVp
Z2h0CisgKi8KK2VzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLkJhc2ljRmJvRGVwdGhDYXNlID0gZnVu
Y3Rpb24obmFtZSwgZGVzYywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgZXMzZkZib1Rl
c3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgdGhpcy5tX2Zv
cm1hdCA9IGZvcm1hdDsKKyAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLm1faGVp
Z2h0ID0gaGVpZ2h0OworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0RlcHRoYnVmZmVyVGVz
dHMuQmFzaWNGYm9EZXB0aENhc2UsIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZSk7CisKK2Vz
M2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLkJhc2ljRmJvRGVwdGhDYXNlLnByb3RvdHlwZS5wcmVDaGVj
ayA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1f
Zm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAg
ICB9OworCitlczNmRmJvRGVwdGhidWZmZXJUZXN0cy5CYXNpY0Zib0RlcHRoQ2FzZS5wcm90b3R5
cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLmdldEN1
cnJlbnRDb250ZXh0KCk7CisgICAgICAgIHZhciBjb2xvckZvcm1hdCA9IGdsLlJHQkE4OworICAg
ICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcn0gKi8KKyAgICAg
ICAgdmFyIGdyYWRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4U2hhZGVy
ID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEXSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUM0KTsKKyAgICAgICAgdmFyIHRleFNoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0o
dGV4U2hhZGVyKTsKKyAgICAgICAgdmFyIGdyYWRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFt
KGdyYWRTaGFkZXIpOworICAgICAgICB2YXIgY2xlYXJEZXB0aCA9IDE7CisKKyAgICAgICAgLy8g
U2V0dXAgc2hhZGVycworICAgICAgICBncmFkU2hhZGVyLnNldEdyYWRpZW50KGN0eCwgZ3JhZFNo
YWRlcklELCBbMCwgMCwgMCwgMF0sIFsxLCAxLCAxLCAxXSk7CisgICAgICAgIHRleFNoYWRlci5z
ZXRVbmlmb3JtcyhjdHgsIHRleFNoYWRlcklEKTsKKworICAgICAgICAvLyBTZXR1cCBGQk8KKwor
ICAgICAgICB2YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIHZhciBj
b2xvclJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgdmFyIGRlcHRoUmJv
ID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisgICAgICAgIGN0eC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JSYm8pOworICAgICAgICBjdHgucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGNvbG9yRm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRoaXMu
bV9oZWlnaHQpOworCisgICAgICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgZGVwdGhSYm8pOworICAgICAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJC
VUZGRVIsIHRoaXMubV9mb3JtYXQsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCk7CisKKyAg
ICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAg
Y3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvclJibyk7CisgICAgICAgIGN0eC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
UkVOREVSQlVGRkVSLCBkZXB0aFJibyk7CisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAg
ICAgICB0aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisgICAg
ICAgIGN0eC52aWV3cG9ydCgwLCAwLCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpOworCisg
ICAgICAgIC8vIENsZWFyIGRlcHRoIHRvIDEKKyAgICAgICAgY3R4LmNsZWFyQnVmZmVyZnYoZ2wu
REVQVEgsIDAsIFtjbGVhckRlcHRoXSk7CisKKyAgICAgICAgLy8gUmVuZGVyIGdyYWRpZW50IHdp
dGggZGVwdGggPSBbLTEuLjFdCisgICAgICAgIGN0eC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7Cisg
ICAgICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIC0x
LjBdLCBbMS4wLCAxLjAsIDEuMF0pOworCisgICAgICAgIC8vIFJlbmRlciBncmlkIHBhdHRlcm4g
d2l0aCBkZXB0aCA9IDAKKyAgICAgICAgdmFyIGZvcm1hdCA9IGdsLlJHQkE7CisgICAgICAgIHZh
ciBkYXRhVHlwZSA9IGdsLlVOU0lHTkVEX0JZVEU7CisgICAgICAgIHZhciB0ZXhXID0gMTI4Owor
ICAgICAgICB2YXIgdGV4SCA9IDEyODsKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWwoZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQs
IGRhdGFUeXBlKSwgdGV4VywgdGV4SCwgMSk7CisKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmls
bFdpdGhHcmlkKGRhdGEuZ2V0QWNjZXNzKCksIDgsIFswLjIsIDAuNywgMC4xLCAxLjBdLCBbMC43
LCAwLjEsIDAuNSwgMC44XSk7CisKKyAgICAgICAgdmFyIGdyaWRUZXggPSBjdHguY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZ3JpZFRleCk7
CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICBj
dHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
LkxJTkVBUik7CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB0ZXhXLCB0ZXhILCAwLCBmb3JtYXQsIGRhdGFUeXBlLCBk
YXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKSk7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFk
KGN0eCwgdGV4U2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuMF0pOwor
ICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKworICAgICAgICAvLyBSZWFkIHJlc3VsdHMuCisg
ICAgICAgIHRoaXMucmVhZFBpeGVsc1VzaW5nRm9ybWF0KGRzdCwgMCwgMCwgdGhpcy5tX3dpZHRo
LCB0aGlzLm1faGVpZ2h0LAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5h
bEZvcm1hdChjb2xvckZvcm1hdCksCisgICAgICAgICAgICAgWzEsIDEsIDEsIDFdLCBbMCwgMCwg
MCwgMF0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmRmJv
VGVzdENhc2UuRmJvVGVzdENhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFt
IHtzdHJpbmd9IGRlc2MKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAqIEBwYXJhbSB7bnVt
YmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICovCitlczNmRmJvRGVwdGhi
dWZmZXJUZXN0cy5EZXB0aFdyaXRlQ2xhbXBDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNh
bGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICB0
aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0OworfTsKKwor
c2V0UGFyZW50Q2xhc3MoZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuRGVwdGhXcml0ZUNsYW1wQ2Fz
ZSwgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlKTsKKworZXMzZkZib0RlcHRoYnVmZmVyVGVz
dHMuRGVwdGhXcml0ZUNsYW1wQ2FzZS5wcm90b3R5cGUucHJlQ2hlY2sgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQodGhpcy5tX2Zvcm1hdCk7CisgICAgICAg
IHJldHVybiB0cnVlOyAvLyBObyBleGNlcHRpb24gdGhyb3duCisgICAgfTsKKworZXMzZkZib0Rl
cHRoYnVmZmVyVGVzdHMuRGVwdGhXcml0ZUNsYW1wQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVu
Y3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7
CisgICAgICAgIHZhciBjb2xvckZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICB2YXIgdHJhbnNm
ZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChnbHVUZXh0dXJlVXRpbC5t
YXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9mb3JtYXQpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmRmJvVGVzdFV0aWwuRGVwdGhHcmFkaWVudFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGdyYWRT
aGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkRlcHRoR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKworICAgICAgICB2YXIgZ3JhZFNoYWRlcklEID0g
Y3R4LmNyZWF0ZVByb2dyYW0oZ3JhZFNoYWRlcik7CisgICAgICAgIHZhciBjbGVhckRlcHRoID0g
MTsKKyAgICAgICAgdmFyIHJlZCA9IFsxLCAwLCAwLCAxXTsKKyAgICAgICAgdmFyIGdyZWVuID0g
WzAsIDEsIDAsIDFdOworCisgICAgICAgIC8vIFNldHVwIEZCTworCisgICAgICAgIHZhciBmYm8g
PSBjdHguY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgdmFyIGNvbG9yUmJvID0gY3R4LmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICB2YXIgZGVwdGhUZXh0dXJlID0gY3R4LmNyZWF0
ZVRleHR1cmUoKTsKKworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZG
RVIsIGNvbG9yUmJvKTsKKyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBjb2xvckZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKworICAg
ICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZGVwdGhUZXh0dXJlKTsKKyAgICAg
ICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5t
X3dpZHRoLCB0aGlzLm1faGVpZ2h0LCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10
LmRhdGFUeXBlLCBudWxsKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgY3R4LnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNU
KTsKKworICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwor
ICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJvKTsKKyAgICAgICAgY3R4
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBnbC5URVhUVVJFXzJELCBkZXB0aFRleHR1cmUsIDApOworICAgICAgICB0aGlzLmNoZWNrRXJy
b3IoKTsKKyAgICAgICAgdGhpcy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KTsKKworICAgICAgICBjdHgudmlld3BvcnQoMCwgMCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVp
Z2h0KTsKKworICAgICAgICAvLyBDbGVhciBkZXB0aCB0byAxCisgICAgICAgIGN0eC5jbGVhckJ1
ZmZlcmZ2KGdsLkRFUFRILCAwLCBbY2xlYXJEZXB0aF0pOworCisgICAgICAgIC8vIFJlbmRlciBn
cmFkaWVudCB3aXRoIGRlcHRoID0gWy0xLi4xXQorICAgICAgICBjdHguZW5hYmxlKGdsLkRFUFRI
X1RFU1QpOworICAgICAgICBjdHguZGVwdGhGdW5jKGdsLkFMV0FZUyk7CisgICAgICAgIGdyYWRT
aGFkZXIuc2V0VW5pZm9ybXMoY3R4LCBncmFkU2hhZGVySUQsIC0xLCAyLCBncmVlbik7CisgICAg
ICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIC0xLjBd
LCBbMS4wLCAxLjAsIDEuMF0pOworICAgICAgICBjdHguZGVwdGhNYXNrKGZhbHNlKTsKKworICAg
ICAgICAvLyBUZXN0IGlmIGFueSBmcmFnbWVudCBoYXMgZ3JlYXRlciBkZXB0aCB0aGFuIDE7IHRo
ZXJlIHNob3VsZCBiZSBub25lCisgICAgICAgIGN0eC5kZXB0aEZ1bmMoZ2wuTEVTUyk7IC8vICgx
IDwgZGVwdGgpID8KKyAgICAgICAgZ3JhZFNoYWRlci5zZXRVbmlmb3JtcyhjdHgsIGdyYWRTaGFk
ZXJJRCwgMSwgMSwgcmVkKTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZ3JhZFNoYWRl
cklELCBbLTEuMCwgLTEuMCwgLTEuMF0sIFsxLjAsIDEuMCwgMS4wXSk7CisKKyAgICAgICAgLy8g
VGVzdCBpZiBhbnkgZnJhZ21lbnQgaGFzIHNtYWxsZXIgZGVwdGggdGhhbiAwOyB0aGVyZSBzaG91
bGQgYmUgbm9uZQorICAgICAgICBjdHguZGVwdGhGdW5jKGdsLkdSRUFURVIpOyAvLyAoMCA+IGRl
cHRoKSA/CisgICAgICAgIGdyYWRTaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCBncmFkU2hhZGVySUQs
IDAsIDAsIHJlZCk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwg
Wy0xLjAsIC0xLjAsIC0xLjBdLCBbMS4wLCAxLjAsIDEuMF0pOworCisgICAgICAgIC8vIFJlYWQg
cmVzdWx0cy4KKyAgICAgICAgdGhpcy5yZWFkUGl4ZWxzVXNpbmdGb3JtYXQoZHN0LCAwLCAwLCB0
aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQsCisgICAgICAgICAgICBnbHVUZXh0dXJlVXRpbC5t
YXBHTEludGVybmFsRm9ybWF0KGNvbG9yRm9ybWF0KSwKKyAgICAgICAgICAgICBbMSwgMSwgMSwg
MV0sIFswLCAwLCAwLCAwXSk7CisKKyAgICAgICAgY3R4LmRlcHRoTWFzayh0cnVlKTsKK307CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rl
c3RDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNj
CisgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAq
IEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAqLworZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuRGVw
dGhUZXN0Q2xhbXBDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSB7CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzYyk7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICB0aGlzLm1fd2lkdGggPSB3
aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0OworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuRGVwdGhUZXN0Q2xhbXBDYXNlLCBlczNmRmJvVGVzdENh
c2UuRmJvVGVzdENhc2UpOworCitlczNmRmJvRGVwdGhidWZmZXJUZXN0cy5EZXB0aFRlc3RDbGFt
cENhc2UucHJvdG90eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuY2hl
Y2tGb3JtYXRTdXBwb3J0KHRoaXMubV9mb3JtYXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g
Tm8gZXhjZXB0aW9uIHRocm93bgorICAgIH07CisKK2VzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLkRl
cHRoVGVzdENsYW1wQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAg
ICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIHZhciBjb2xv
ckZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJl
VXRpbC5nZXRUcmFuc2ZlckZvcm1hdChnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0
KHRoaXMubV9mb3JtYXQpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuRGVw
dGhHcmFkaWVudFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGdyYWRTaGFkZXIgPSBuZXcgZXMzZkZi
b1Rlc3RVdGlsLkRlcHRoR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0KTsKKworICAgICAgICB2YXIgZ3JhZFNoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0o
Z3JhZFNoYWRlcik7CisgICAgICAgIHZhciBjbGVhckRlcHRoID0gMTsKKyAgICAgICAgdmFyIHll
bGxvdyA9IFsxLCAxLCAwLCAxXTsKKyAgICAgICAgdmFyIGdyZWVuID0gWzAsIDEsIDAsIDFdOwor
CisgICAgICAgIC8vIFNldHVwIEZCTworCisgICAgICAgIHZhciBmYm8gPSBjdHguY3JlYXRlRnJh
bWVidWZmZXIoKTsKKyAgICAgICAgdmFyIGNvbG9yUmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICAgICAgICB2YXIgZGVwdGhUZXh0dXJlID0gY3R4LmNyZWF0ZVRleHR1cmUoKTsKKwor
ICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJvKTsK
KyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBjb2xvckZv
cm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKworICAgICAgICBjdHguYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgZGVwdGhUZXh0dXJlKTsKKyAgICAgICAgY3R4LnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1f
aGVpZ2h0LCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBudWxs
KTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICAgICAgICBj
dHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBjdHguZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyVGV4
dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJFXzJE
LCBkZXB0aFRleHR1cmUsIDApOworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAgICAg
dGhpcy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAgICBj
dHgudmlld3BvcnQoMCwgMCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKworICAgICAg
ICAvLyBDbGVhciBkZXB0aCB0byAxCisgICAgICAgIGN0eC5jbGVhckJ1ZmZlcmZ2KGdsLkRFUFRI
LCAwLCBbY2xlYXJEZXB0aF0pOworCisgICAgICAgIC8vIFRlc3QgdmFsdWVzIHVzZWQgaW4gZGVw
dGggdGVzdCBhcmUgY2xhbXBlZAorCisgICAgICAgIC8vIFJlbmRlciBncmVlbiBxdWFkLCBkZXB0
aCBncmFkaWVudCA9IFstMS4uMl0KKyAgICAgICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsK
KyAgICAgICAgY3R4LmRlcHRoRnVuYyhnbC5BTFdBWVMpOworCisgICAgICAgIGdyYWRTaGFkZXIu
c2V0VW5pZm9ybXMoY3R4LCBncmFkU2hhZGVySUQsIC0xLCAyLCBncmVlbik7CisgICAgICAgIHJy
VXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIC0xLjBdLCBbMS4w
LCAxLjAsIDEuMF0pOworCisgICAgICAgIC8vIFJlbmRlciB5ZWxsb3cgcXVhZCwgZGVwdGggZ3Jh
ZGllbnQgPSBbLTAuNS4uM10uIEdyYWRpZW50cyBoYXZlIGVxdWFsIHZhbHVlcyBvbmx5IG91dHNp
ZGUgWzAsIDFdIHJhbmdlIGR1ZSB0byBjbGFtcGluZworICAgICAgICBjdHguZGVwdGhGdW5jKGds
LkVRVUFMKTsKKworICAgICAgICBncmFkU2hhZGVyLnNldFVuaWZvcm1zKGN0eCwgZ3JhZFNoYWRl
cklELCAtMC41LCAzLCB5ZWxsb3cpOworICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCBncmFk
U2hhZGVySUQsIFstMS4wLCAtMS4wLCAtMS4wXSwgWzEuMCwgMS4wLCAxLjBdKTsKKworICAgICAg
ICAvLyBSZWFkIHJlc3VsdHMuCisgICAgICAgIHRoaXMucmVhZFBpeGVsc1VzaW5nRm9ybWF0KGRz
dCwgMCwgMCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LAorICAgICAgICAgICAgZ2x1VGV4
dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChjb2xvckZvcm1hdCksCisgICAgICAgICAgICAg
WzEsIDEsIDEsIDFdLCBbMCwgMCwgMCwgMF0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqLworZXMzZkZib0RlcHRoYnVm
ZmVyVGVzdHMuRmJvRGVwdGhidWZmZXJUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIHRjdVRlc3RD
YXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2RlcHRoJywgJ2RlcHRoIHRlc3RzJyk7Cit9OworCitz
ZXRQYXJlbnRDbGFzcyhlczNmRmJvRGVwdGhidWZmZXJUZXN0cy5GYm9EZXB0aGJ1ZmZlclRlc3Rz
LCB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCk7CisKK2VzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLkZib0Rl
cHRoYnVmZmVyVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZGVw
dGhGb3JtYXRzID0gWworICAgICAgICBnbC5ERVBUSF9DT01QT05FTlQzMkYsCisgICAgICAgIGds
LkRFUFRIX0NPTVBPTkVOVDI0LAorICAgICAgICBnbC5ERVBUSF9DT01QT05FTlQxNiwKKyAgICAg
ICAgZ2wuREVQVEgzMkZfU1RFTkNJTDgsCisgICAgICAgIGdsLkRFUFRIMjRfU1RFTkNJTDgKKyAg
ICBdOworCisgICAgLy8gLmJhc2ljCisgICAgdmFyIGJhc2ljR3JvdXAgPSB0Y3VUZXN0Q2FzZS5u
ZXdUZXN0KCdiYXNpYycsICdCYXNpYyBkZXB0aCB0ZXN0cycpOworICAgIHRoaXMuYWRkQ2hpbGQo
YmFzaWNHcm91cCk7CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBkZXB0aEZvcm1hdHMu
bGVuZ3RoOyBuZHgrKykKKyAgICAgICAgYmFzaWNHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0Rl
cHRoYnVmZmVyVGVzdHMuQmFzaWNGYm9EZXB0aENhc2UoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1h
dE5hbWUoZGVwdGhGb3JtYXRzW25keF0pLCAnJywgZGVwdGhGb3JtYXRzW25keF0sIDExOSwgMTI3
KSk7CisKKyAgICAvLyAuZGVwdGhfd3JpdGVfY2xhbXAKKyAgICB2YXIgZGVwdGhDbGFtcEdyb3Vw
ID0gdGN1VGVzdENhc2UubmV3VGVzdCgnZGVwdGhfd3JpdGVfY2xhbXAnLCAnRGVwdGggd3JpdGUg
Y2xhbXBpbmcgdGVzdHMnKTsKKyAgICB0aGlzLmFkZENoaWxkKGRlcHRoQ2xhbXBHcm91cCk7CisK
KyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBkZXB0aEZvcm1hdHMubGVuZ3RoOyBuZHgrKykK
KyAgICAgICAgZGVwdGhDbGFtcEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvRGVwdGhidWZmZXJU
ZXN0cy5EZXB0aFdyaXRlQ2xhbXBDYXNlKGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1lKGRl
cHRoRm9ybWF0c1tuZHhdKSwgJycsIGRlcHRoRm9ybWF0c1tuZHhdLCAxMTksIDEyNykpOworCisg
ICAgLy8gLmRlcHRoX3Rlc3RfY2xhbXAKKyAgICB2YXIgZGVwdGhUZXN0R3JvdXAgPSB0Y3VUZXN0
Q2FzZS5uZXdUZXN0KCdkZXB0aF90ZXN0X2NsYW1wJywgJ0RlcHRoIHRlc3QgdmFsdWUgY2xhbXBp
bmcgdGVzdHMnKTsKKyAgICB0aGlzLmFkZENoaWxkKGRlcHRoVGVzdEdyb3VwKTsKKworICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IGRlcHRoRm9ybWF0cy5sZW5ndGg7IG5keCsrKQorICAgICAg
ICBkZXB0aFRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMuRGVw
dGhUZXN0Q2xhbXBDYXNlKGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1lKGRlcHRoRm9ybWF0
c1tuZHhdKSwgJycsIGRlcHRoRm9ybWF0c1tuZHhdLCAxMTksIDEyNykpOworCit9OworCisvKioK
KyogUnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0Cisq
LworZXMzZkZib0RlcHRoYnVmZmVyVGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCkgeworICAg
IGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgIHZh
ciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBzdGF0ZS5zZXRSb290KG5ldyBlczNm
RmJvRGVwdGhidWZmZXJUZXN0cy5GYm9EZXB0aGJ1ZmZlclRlc3RzKCkpOworCisgICAgLy9TZXQg
dXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICBzZXRDdXJy
ZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgIGRlc2NyaXB0aW9u
KHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgIHRyeSB7CisgICAgICAg
IC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7Cisg
ICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxl
ZCB0byBlczNmRmJvRGVwdGhidWZmZXJUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAg
IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvSW52YWxpZGF0ZVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZGYm9JbnZhbGlkYXRlVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E5MGNjZWNjZDRkMTgzMTYzMGFl
YjM0MDMzNjMwOGNjMmI1OTJjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJv
SW52YWxpZGF0ZVRlc3RzLmpzCkBAIC0wLDAgKzEsMTQ3MSBAQAorLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAq
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq
IENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vu
c2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJv
SW52YWxpZGF0ZVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1SW1h
Z2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxp
YnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNo
YWRlclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRp
bCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlJyk7Citnb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsJyk7CisKK2dvb2cuc2Nv
cGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZkZib0ludmFsaWRhdGVUZXN0cyA9IGZ1bmN0aW9uYWwu
Z2xlczMuZXMzZkZib0ludmFsaWRhdGVUZXN0czsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29y
ay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgZXMzZkZib1Rlc3RDYXNlID0gZnVuY3Rpb25hbC5n
bGVzMy5lczNmRmJvVGVzdENhc2U7Cit2YXIgZXMzZkZib1Rlc3RVdGlsID0gZnVuY3Rpb25hbC5n
bGVzMy5lczNmRmJvVGVzdFV0aWw7Cit2YXIgcnJVdGlsID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyVXRpbDsKK3ZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJVdGlsOwordmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0
dXJlVXRpbDsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwor
dmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKK3Zh
ciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgdGN1UkdCQSA9
IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKK3ZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdv
cmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKKworLyoqIEB0eXBlIHtXZWJHTDJSZW5kZXJpbmdD
b250ZXh0fSAqLyB2YXIgZ2w7CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxk
LCBwYXJlbnQpIHsKKyAgICBjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5w
cm90b3R5cGUpOworICAgIGNoaWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsK
KwordmFyIGdldERlZmF1bHRGQkRpc2NhcmRBdHRhY2htZW50cyA9IGZ1bmN0aW9uKGRpc2NhcmRC
dWZmZXJCaXRzKSB7CisgICAgdmFyIGF0dGFjaG1lbnRzID0gW107CisKKyAgICBpZiAoZGlzY2Fy
ZEJ1ZmZlckJpdHMgJiBnbC5DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICBhdHRhY2htZW50cy5w
dXNoKGdsLkNPTE9SKTsKKworICAgIGlmIChkaXNjYXJkQnVmZmVyQml0cyAmIGdsLkRFUFRIX0JV
RkZFUl9CSVQpCisgICAgICAgIGF0dGFjaG1lbnRzLnB1c2goZ2wuREVQVEgpOworCisgICAgaWYg
KGRpc2NhcmRCdWZmZXJCaXRzICYgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKQorICAgICAgICBhdHRh
Y2htZW50cy5wdXNoKGdsLlNURU5DSUwpOworCisgICAgcmV0dXJuIGF0dGFjaG1lbnRzOworfTsK
KwordmFyIGdldEZCT0Rpc2NhcmRBdHRhY2htZW50cyA9IGZ1bmN0aW9uKGRpc2NhcmRCdWZmZXJC
aXRzKSB7CisgICAgdmFyIGF0dGFjaG1lbnRzID0gW107CisKKyAgICBpZiAoZGlzY2FyZEJ1ZmZl
ckJpdHMgJiBnbC5DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICBhdHRhY2htZW50cy5wdXNoKGds
LkNPTE9SX0FUVEFDSE1FTlQwKTsKKworICAgIC8vIFxub3RlIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCBpcyBhbGxvd2VkIHdoZW4gZGlzY2FyZGluZyBGQk8sIGJ1dCBub3Qgd2l0aCBkZWZhdWx0
IEZCCisgICAgaWYgKChkaXNjYXJkQnVmZmVyQml0cyAmIChnbC5ERVBUSF9CVUZGRVJfQklUIHwg
Z2wuU1RFTkNJTF9CVUZGRVJfQklUKSkgPT0gKGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVO
Q0lMX0JVRkZFUl9CSVQpKQorICAgICAgICBhdHRhY2htZW50cy5wdXNoKGdsLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCk7CisgICAgZWxzZSBpZiAoZGlzY2FyZEJ1ZmZlckJpdHMgJiBnbC5ERVBU
SF9CVUZGRVJfQklUKQorICAgICAgICBhdHRhY2htZW50cy5wdXNoKGdsLkRFUFRIX0FUVEFDSE1F
TlQpOworICAgIGVsc2UgaWYgKGRpc2NhcmRCdWZmZXJCaXRzICYgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUKQorICAgICAgICBhdHRhY2htZW50cy5wdXNoKGdsLlNURU5DSUxfQVRUQUNITUVOVCk7CisK
KyAgICByZXR1cm4gYXR0YWNobWVudHM7Cit9OworCit2YXIgZ2V0Q29tcGF0aWJsZUNvbG9yRm9y
bWF0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlZEJpdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wu
UkVEX0JJVFMpOworICAgIHZhciBncmVlbkJpdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5f
QklUUyk7CisgICAgdmFyIGJsdWVCaXRzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMVUVfQklUUyk7
CisgICAgdmFyIGFscGhhQml0cyA9IGdsLmdldFBhcmFtZXRlcihnbC5BTFBIQV9CSVRTKTsKKyAg
ICBzd2l0Y2ggKCcnICsgcmVkQml0cyArIGdyZWVuQml0cyArIGJsdWVCaXRzICsgYWxwaGFCaXRz
KSB7CisgICAgICAgIGNhc2UgJzg4ODgnIDogcmV0dXJuIGdsLlJHQkE4OworICAgICAgICBjYXNl
ICc4ODgwJyA6IHJldHVybiBnbC5SR0I4OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGJpdCBkZXB0aCcpOworICAgIH0KK307CisKK3Zh
ciBnZXRDb21wYXRpYmxlRGVwdGhTdGVuY2lsRm9ybWF0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
IGRlcHRoQml0cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLkRF
UFRIX0JJVFMpKTsKKyAgICB2YXIgc3RlbmNpbEJpdHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8g
KGdsLmdldFBhcmFtZXRlcihnbC5TVEVOQ0lMX0JJVFMpKTsKKyAgICB2YXIgaGFzRGVwdGggPSBk
ZXB0aEJpdHMgPiAwOworICAgIHZhciBoYXNTdGVuY2lsID0gc3RlbmNpbEJpdHMgPiAwOworCisg
ICAgaWYgKCFoYXNEZXB0aCB8fCAhaGFzU3RlbmNpbCB8fCAoc3RlbmNpbEJpdHMgIT0gOCkpCisg
ICAgICAgIHJldHVybiBnbC5OT05FOworCisgICAgaWYgKGRlcHRoQml0cyA9PSAzMikKKyAgICAg
ICAgcmV0dXJuIGdsLkRFUFRIMzJGX1NURU5DSUw4OworICAgIGVsc2UgaWYgKGRlcHRoQml0cyA9
PSAyNCkKKyAgICAgICAgcmV0dXJuIGdsLkRFUFRIMjRfU1RFTkNJTDg7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gZ2wuTk9ORTsKK307CisKK3ZhciBoYXNBdHRhY2htZW50ID0gZnVuY3Rpb24o
YXR0YWNobWVudHMsIGF0dGFjaG1lbnQpIHsKKyAgICByZXR1cm4gYXR0YWNobWVudHMuaW5kZXhP
ZihhdHRhY2htZW50KSA+PSAwOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXJzCisg
KiBAcGFyYW0ge251bWJlcj19IHRhcmdldAorICovCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLklu
dmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJSZW5kZXJDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
YywgYnVmZmVycywgdGFyZ2V0KSB7CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNh
bGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgdGhpcy5tX2J1ZmZlcnMgPSBidWZmZXJzOworICAg
IHRoaXMubV9mYm9UYXJnZXQgPSB0YXJnZXQgfHwgZ2wuRlJBTUVCVUZGRVI7Cit9OworCitzZXRQ
YXJlbnRDbGFzcyhlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0RnJhbWVi
dWZmZXJSZW5kZXJDYXNlLCBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UpOworCitlczNmRmJv
SW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJSZW5kZXJDYXNlLnBy
b3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihkc3QpIHsKKyAgICB2YXIgY3R4ID0gdGhpcy5nZXRD
dXJyZW50Q29udGV4dCgpOworICAgIHZhciBhdHRhY2htZW50cyA9IGdldERlZmF1bHRGQkRpc2Nh
cmRBdHRhY2htZW50cyh0aGlzLm1fYnVmZmVycyk7CisKKyAgICB2YXIgc2hhZGVyID0gbmV3IGVz
M2ZGYm9UZXN0VXRpbC5GbGF0Q29sb3JTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0KTsKKyAgICB2YXIgcHJvZ3JhbSA9IGN0eC5jcmVhdGVQcm9ncmFtKHNoYWRlcik7Cisg
ICAgc2hhZGVyLnNldENvbG9yKGN0eCwgcHJvZ3JhbSwgWzEsIDAsIDAsIDFdKTsKKyAgICBjdHgu
Y2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAg
Y3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVT
VCk7CisgICAgY3R4LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5SRVBMQUNFKTsKKyAg
ICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAxLCAweGZmKTsKKworICAgIHJyVXRpbC5kcmF3
UXVhZChjdHgsIHByb2dyYW0sIFstMSwgLTEsIC0xXSwgWzEsIDEsIDFdKTsKKyAgICBjdHguaW52
YWxpZGF0ZUZyYW1lYnVmZmVyKHRoaXMubV9mYm9UYXJnZXQsIGF0dGFjaG1lbnRzKTsKKworICAg
IGlmICgodGhpcy5tX2J1ZmZlcnMgJiBnbC5DT0xPUl9CVUZGRVJfQklUKSAhPSAwKSB7CisgICAg
ICAgIC8vIENvbG9yIHdhcyBub3QgcHJlc2VydmVkIC0gZmlsbCB3aXRoIGdyZWVuLgorICAgICAg
ICBjdHguZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgY3R4LmRpc2FibGUoZ2wuU1RF
TkNJTF9URVNUKTsKKworICAgICAgICBzaGFkZXIuc2V0Q29sb3IoY3R4LCBwcm9ncmFtLCBbMCwg
MSwgMCwgMV0pOworICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCBwcm9ncmFtLCBbLTEsIC0x
LCAwXSwgWzEsIDEsIDBdKTsKKworICAgICAgICBjdHguZW5hYmxlKGdsLkRFUFRIX1RFU1QpOwor
ICAgICAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgfQorCisgICAgaWYgKCh0
aGlzLm1fYnVmZmVycyAmIGdsLkRFUFRIX0JVRkZFUl9CSVQpICE9IDApIHsKKyAgICAgICAgLy8g
RGVwdGggd2FzIG5vdCBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5kZXB0aEZ1bmMoZ2wuQUxXQVlT
KTsKKyAgICB9CisKKyAgICBpZiAoKHRoaXMubV9idWZmZXJzICYgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUKSA9PSAwKSB7CisgICAgICAgIC8vIFN0ZW5jaWwgd2FzIHByZXNlcnZlZC4KKyAgICAgICAg
Y3R4LnN0ZW5jaWxGdW5jKGdsLkVRVUFMLCAxLCAweGZmKTsKKyAgICB9CisKKyAgICBjdHguZW5h
YmxlKGdsLkJMRU5EKTsKKyAgICBjdHguYmxlbmRGdW5jKGdsLk9ORSwgZ2wuT05FKTsKKyAgICBj
dHguYmxlbmRFcXVhdGlvbihnbC5GVU5DX0FERCk7CisKKyAgICBzaGFkZXIuc2V0Q29sb3IoY3R4
LCBwcm9ncmFtLCBbMCwgMCwgMSwgMV0pOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIHByb2dy
YW0sIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0pOworICAgIGRzdC5yZWFkVmlld3BvcnQoY3R4KTsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNl
LkZib1Rlc3RDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjCisgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVycworICovCitlczNmRmJvSW52YWxpZGF0
ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJCaW5kQ2FzZSA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2MsIGJ1ZmZlcnMpIHsKKyAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICB0aGlzLm1fYnVmZmVycyA9IGJ1ZmZlcnM7Cit9Owor
CitzZXRQYXJlbnRDbGFzcyhlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0
RnJhbWVidWZmZXJCaW5kQ2FzZSwgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlKTsKKworZXMz
ZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdEZyYW1lYnVmZmVyQmluZENhc2Uu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkgeworICAgIHZhciBjdHggPSB0aGlzLmdl
dEN1cnJlbnRDb250ZXh0KCk7CisgICAgdmFyIGF0dGFjaG1lbnRzID0gZ2V0RGVmYXVsdEZCRGlz
Y2FyZEF0dGFjaG1lbnRzKHRoaXMubV9idWZmZXJzKTsKKworICAgIHZhciBzaGFkZXIgPSBuZXcg
ZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzQpOworICAgIHZhciBwcm9ncmFtID0gY3R4LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsK
KworICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0gKi8KKyAg
ICB2YXIgdGV4U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisg
ICAgICAgIFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRdLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwu
R3JhZGllbnRTaGFkZXJ9ICovCisgICAgdmFyIGdyYWRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RV
dGlsLkdyYWRpZW50U2hhZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisK
KyAgICB2YXIgdGV4U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbSh0ZXhTaGFkZXIpOworICAg
IHZhciBncmFkU2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbShncmFkU2hhZGVyKTsKKyAgICBj
dHguY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAg
IC8vIENyZWF0ZSBmYm8uCisgICAgdmFyIGZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgIHZhciB0ZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworICAgIGN0eC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXgpOworICAgIGN0eC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLlJHQkE4LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0SGVpZ2h0KCksIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBjdHguYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGN0eC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQs
IHRleCwgMCk7CisgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAg
IHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICBjdHgu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgIGN0eC5lbmFibGUo
Z2wuREVQVEhfVEVTVCk7CisgICAgY3R4LmVuYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgIGN0
eC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuUkVQTEFDRSk7CisgICAgY3R4LnN0ZW5j
aWxGdW5jKGdsLkFMV0FZUywgMSwgMHhmZik7CisKKyAgICBzaGFkZXIuc2V0Q29sb3IoY3R4LCBw
cm9ncmFtLCBbMSwgMCwgMCwgMV0pOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIHByb2dyYW0s
IFstMSwgLTEsIC0xXSwgWzEsIDEsIDFdKTsKKworICAgIGN0eC5pbnZhbGlkYXRlRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRzKTsKKworICAgIC8vIFN3aXRjaCB0byBmYm8g
YW5kIHJlbmRlciBncmFkaWVudCBpbnRvIGl0LgorICAgIGN0eC5kaXNhYmxlKGdsLkRFUFRIX1RF
U1QpOworICAgIGN0eC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgY3R4LmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworICAgIGdyYWRTaGFkZXIuc2V0R3JhZGll
bnQoY3R4LCBncmFkU2hhZGVySUQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdKTsKKyAgICBy
clV0aWwuZHJhd1F1YWQoY3R4LCBncmFkU2hhZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0p
OworICAgIC8vIFJlc3RvcmUgZGVmYXVsdCBmYm8uCisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICBpZiAoKHRoaXMubV9idWZmZXJzICYgZ2wuQ09M
T1JfQlVGRkVSX0JJVCkgIT0gMCkgeworICAgICAgICAvLyBDb2xvciB3YXMgbm90IHByZXNlcnZl
ZCAtIGZpbGwgd2l0aCBncmVlbi4KKyAgICAgICAgc2hhZGVyLnNldENvbG9yKGN0eCwgcHJvZ3Jh
bSwgWzAsIDEsIDAsIDFdKTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgcHJvZ3JhbSwg
Wy0xLCAtMSwgMF0sIFsxLCAxLCAwXSk7CisgICAgfQorCisgICAgaWYgKCh0aGlzLm1fYnVmZmVy
cyAmIGdsLkRFUFRIX0JVRkZFUl9CSVQpICE9IDApIHsKKyAgICAgICAgLy8gRGVwdGggd2FzIG5v
dCBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5kZXB0aEZ1bmMoZ2wuQUxXQVlTKTsKKyAgICB9CisK
KyAgICBpZiAoKHRoaXMubV9idWZmZXJzICYgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSA9PSAwKSB7
CisgICAgICAgIC8vIFN0ZW5jaWwgd2FzIHByZXNlcnZlZC4KKyAgICAgICAgY3R4LnN0ZW5jaWxG
dW5jKGdsLkVRVUFMLCAxLCAweGZmKTsKKyAgICB9CisKKyAgICBjdHguZW5hYmxlKGdsLkRFUFRI
X1RFU1QpOworICAgIGN0eC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICBjdHguZW5hYmxl
KGdsLkJMRU5EKTsKKyAgICBjdHguYmxlbmRGdW5jKGdsLk9ORSwgZ2wuT05FKTsKKyAgICBjdHgu
YmxlbmRFcXVhdGlvbihnbC5GVU5DX0FERCk7CisgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisKKyAgICB0ZXhTaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCB0ZXhTaGFkZXJJ
RCk7CisgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgdGV4U2hhZGVySUQsIFstMSwgLTEsIDBdLCBb
MSwgMSwgMF0pOworCisgICAgZHN0LnJlYWRWaWV3cG9ydChjdHgpOworfTsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2V9Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAqIEBwYXJh
bSB7bnVtYmVyfSBidWZmZXJzCisgKiBAcGFyYW0ge251bWJlcj19IHRhcmdldAorICovCitlczNm
RmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVidWZmZXJSZW5kZXJD
YXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgYnVmZmVycywgdGFyZ2V0KSB7CisgICAgZXMzZkZi
b1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgdGhpcy5t
X2J1ZmZlcnMgPSBidWZmZXJzOworICAgIHRoaXMubV9mYm9UYXJnZXQgPSB0YXJnZXQgfHwgZ2wu
RlJBTUVCVUZGRVI7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvSW52YWxpZGF0ZVRlc3Rz
LkludmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVidWZmZXJSZW5kZXJDYXNlLCBlczNmRmJvVGVzdENh
c2UuRmJvVGVzdENhc2UpOworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZh
dWx0U3ViRnJhbWVidWZmZXJSZW5kZXJDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihk
c3QpIHsKKyAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgIHZhciBp
bnZhbGlkYXRlWCA9IHRoaXMuZ2V0V2lkdGgoKSAvIDQ7CisgICAgdmFyIGludmFsaWRhdGVZID0g
dGhpcy5nZXRIZWlnaHQoKSAvIDQ7CisgICAgdmFyIGludmFsaWRhdGVXID0gdGhpcy5nZXRXaWR0
aCgpIC8gMjsKKyAgICB2YXIgaW52YWxpZGF0ZUggPSB0aGlzLmdldEhlaWdodCgpIC8gMjsKKyAg
ICB2YXIgYXR0YWNobWVudHMgPSBnZXREZWZhdWx0RkJEaXNjYXJkQXR0YWNobWVudHModGhpcy5t
X2J1ZmZlcnMpOworCisgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENv
bG9yU2hhZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAgdmFyIHBy
b2dyYW0gPSBjdHguY3JlYXRlUHJvZ3JhbShzaGFkZXIpOworICAgIHNoYWRlci5zZXRDb2xvcihj
dHgsIHByb2dyYW0sIFsxLCAwLCAwLCAxXSk7CisgICAgY3R4LmNsZWFyQ29sb3IoMCwgMCwgMCwg
MSk7CisgICAgY3R4LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJf
QklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGN0eC5lbmFibGUoZ2wuREVQVEhf
VEVTVCk7CisgICAgY3R4LmVuYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgIGN0eC5zdGVuY2ls
T3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuUkVQTEFDRSk7CisgICAgY3R4LnN0ZW5jaWxGdW5jKGds
LkFMV0FZUywgMSwgMHhmZik7CisKKyAgICByclV0aWwuZHJhd1F1YWQoY3R4LCBwcm9ncmFtLCBb
LTEsIC0xLCAtMV0sIFsxLCAxLCAxXSk7CisgICAgY3R4LmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cih0aGlzLm1fZmJvVGFyZ2V0LCBhdHRhY2htZW50cywgaW52YWxpZGF0ZVgsIGludmFsaWRhdGVZ
LCBpbnZhbGlkYXRlVywgaW52YWxpZGF0ZUgpOworCisgICAgLy8gQ2xlYXIgaW52YWxpZGF0ZWQg
YnVmZmVycy4KKyAgICBjdHguY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBjdHguY2xlYXJT
dGVuY2lsKDEpOworICAgIGN0eC5zY2lzc29yKGludmFsaWRhdGVYLCBpbnZhbGlkYXRlWSwgaW52
YWxpZGF0ZVcsIGludmFsaWRhdGVIKTsKKyAgICBjdHguZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7
CisgICAgY3R4LmNsZWFyKHRoaXMubV9idWZmZXJzKTsKKyAgICBjdHguZGlzYWJsZShnbC5TQ0lT
U09SX1RFU1QpOworCisgICAgY3R4LmVuYWJsZShnbC5CTEVORCk7CisgICAgY3R4LmJsZW5kRnVu
YyhnbC5PTkUsIGdsLk9ORSk7CisgICAgY3R4LmJsZW5kRXF1YXRpb24oZ2wuRlVOQ19BREQpOwor
CisgICAgc2hhZGVyLnNldENvbG9yKGN0eCwgcHJvZ3JhbSwgWzAsIDAsIDEsIDFdKTsKKyAgICBy
clV0aWwuZHJhd1F1YWQoY3R4LCBwcm9ncmFtLCBbLTEsIC0xLCAwXSwgWzEsIDEsIDBdKTsKKyAg
ICBkc3QucmVhZFZpZXdwb3J0KGN0eCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge2VzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZl
cnMKKyAqLworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdFN1YkZyYW1l
YnVmZmVyQmluZENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBidWZmZXJzKSB7CisgICAgZXMz
ZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgdGhp
cy5tX2J1ZmZlcnMgPSBidWZmZXJzOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0ludmFs
aWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdFN1YkZyYW1lYnVmZmVyQmluZENhc2UsIGVzM2ZG
Ym9UZXN0Q2FzZS5GYm9UZXN0Q2FzZSk7CisKK2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxp
ZGF0ZURlZmF1bHRTdWJGcmFtZWJ1ZmZlckJpbmRDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5j
dGlvbihkc3QpIHsKKyAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAg
IHZhciBhdHRhY2htZW50cyA9IGdldERlZmF1bHRGQkRpc2NhcmRBdHRhY2htZW50cyh0aGlzLm1f
YnVmZmVycyk7CisgICAgdmFyIGludmFsaWRhdGVYID0gdGhpcy5nZXRXaWR0aCgpIC8gNDsKKyAg
ICB2YXIgaW52YWxpZGF0ZVkgPSB0aGlzLmdldEhlaWdodCgpIC8gNDsKKyAgICB2YXIgaW52YWxp
ZGF0ZVcgPSB0aGlzLmdldFdpZHRoKCkgLyAyOworICAgIHZhciBpbnZhbGlkYXRlSCA9IHRoaXMu
Z2V0SGVpZ2h0KCkgLyAyOworCisgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwu
RmxhdENvbG9yU2hhZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAg
dmFyIHByb2dyYW0gPSBjdHguY3JlYXRlUHJvZ3JhbShzaGFkZXIpOworCisgICAgLyoqIEB0eXBl
IHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgIHZhciB0ZXhTaGFkZXIg
PSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAgW2dsdVNoYWRl
clV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRF0sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
VkVDNCk7CisKKyAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcn0g
Ki8KKyAgICB2YXIgZ3JhZFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFk
ZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKworICAgIHZhciB0ZXhTaGFk
ZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRleFNoYWRlcik7CisgICAgdmFyIGdyYWRTaGFkZXJJ
RCA9IGN0eC5jcmVhdGVQcm9ncmFtKGdyYWRTaGFkZXIpOworICAgIGN0eC5jbGVhckNvbG9yKDAs
IDAsIDAsIDEpOworICAgIGN0eC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgLy8gQ3JlYXRlIGZiby4K
KyAgICB2YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgdmFyIHRleCA9IGN0
eC5jcmVhdGVUZXh0dXJlKCk7CisgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eCk7CisgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTgsIHRoaXMu
Z2V0V2lkdGgoKSwgdGhpcy5nZXRIZWlnaHQoKSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgY3R4LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgICBj
dHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgdGhpcy5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgIGN0eC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIG51bGwpOworCisgICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsK
KyAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgY3R4LnN0ZW5jaWxPcChnbC5L
RUVQLCBnbC5LRUVQLCBnbC5SRVBMQUNFKTsKKyAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlT
LCAxLCAweGZmKTsKKworICAgIHNoYWRlci5zZXRDb2xvcihjdHgsIHByb2dyYW0sIFsxLCAwLCAw
LCAxXSk7CisgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgcHJvZ3JhbSwgWy0xLCAtMSwgLTFdLCBb
MSwgMSwgMV0pOworCisgICAgY3R4LmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgYXR0YWNobWVudHMsIGludmFsaWRhdGVYLCBpbnZhbGlkYXRlWSwgaW52YWxpZGF0ZVcs
IGludmFsaWRhdGVIKTsKKworICAgIC8vIFN3aXRjaCB0byBmYm8gYW5kIHJlbmRlciBncmFkaWVu
dCBpbnRvIGl0LgorICAgIGN0eC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIGN0eC5kaXNh
YmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKKworICAgIGdyYWRTaGFkZXIuc2V0R3JhZGllbnQoY3R4LCBncmFkU2hhZGVy
SUQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdKTsKKyAgICByclV0aWwuZHJhd1F1YWQoY3R4
LCBncmFkU2hhZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0pOworICAgIC8vIFJlc3RvcmUg
ZGVmYXVsdCBmYm8uCisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVs
bCk7CisKKyAgICBpZiAoKHRoaXMubV9idWZmZXJzICYgZ2wuQ09MT1JfQlVGRkVSX0JJVCkgIT0g
MCkgeworICAgICAgICAvLyBDb2xvciB3YXMgbm90IHByZXNlcnZlZCAtIGZpbGwgd2l0aCBncmVl
bi4KKyAgICAgICAgc2hhZGVyLnNldENvbG9yKGN0eCwgcHJvZ3JhbSwgWzAsIDEsIDAsIDFdKTsK
KyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgcHJvZ3JhbSwgWy0xLCAtMSwgMF0sIFsxLCAx
LCAwXSk7CisgICAgfQorCisgICAgLy8gQ2xlYXIgaW52YWxpZGF0ZWQgYnVmZmVycy4KKyAgICBj
dHguY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBjdHguY2xlYXJTdGVuY2lsKDEpOworICAg
IGN0eC5zY2lzc29yKGludmFsaWRhdGVYLCBpbnZhbGlkYXRlWSwgaW52YWxpZGF0ZVcsIGludmFs
aWRhdGVIKTsKKyAgICBjdHguZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY3R4LmNsZWFy
KHRoaXMubV9idWZmZXJzKTsKKyAgICBjdHguZGlzYWJsZShnbC5TQ0lTU09SX1RFU1QpOworCisg
ICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxf
VEVTVCk7CisgICAgY3R4LmVuYWJsZShnbC5CTEVORCk7CisgICAgY3R4LmJsZW5kRnVuYyhnbC5P
TkUsIGdsLk9ORSk7CisgICAgY3R4LmJsZW5kRXF1YXRpb24oZ2wuRlVOQ19BREQpOworICAgIGN0
eC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgdGV4U2hhZGVyLnNldFVu
aWZvcm1zKGN0eCwgdGV4U2hhZGVySUQpOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIHRleFNo
YWRlcklELCBbLTEsIC0xLCAwXSwgWzEsIDEsIDBdKTsKKworICAgIGRzdC5yZWFkVmlld3BvcnQo
Y3R4KTsKKyAgICBjdHguZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZGlzYWJsZShn
bC5TVEVOQ0lMX1RFU1QpOworICAgIGN0eC5kaXNhYmxlKGdsLkJMRU5EKTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNl
fQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgKiBA
cGFyYW0ge251bWJlcn0gY29sb3JGbXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aFN0ZW5jaWxG
bXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbnZhbGlkYXRlQnVmZmVycworICovCitlczNmRmJvSW52
YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVGYm9SZW5kZXJDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
YywgY29sb3JGbXQsIGRlcHRoU3RlbmNpbEZtdCwgaW52YWxpZGF0ZUJ1ZmZlcnMpIHsKKyAgICBl
czNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICB0
aGlzLm1fY29sb3JGbXQgPSBjb2xvckZtdDsKKyAgICB0aGlzLm1fZGVwdGhTdGVuY2lsRm10ID0g
ZGVwdGhTdGVuY2lsRm10OworICAgIHRoaXMubV9pbnZhbGlkYXRlQnVmZmVycyA9IGludmFsaWRh
dGVCdWZmZXJzOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib0ludmFsaWRhdGVUZXN0cy5J
bnZhbGlkYXRlRmJvUmVuZGVyQ2FzZSwgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlKTsKKwor
ZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUu
cHJlQ2hlY2sgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5tX2NvbG9yRm10ICE9IGdsLk5P
TkUpIHRoaXMuY2hlY2tGb3JtYXRTdXBwb3J0KHRoaXMubV9jb2xvckZtdCk7CisgICAgaWYgKHRo
aXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSkgdGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQo
dGhpcy5tX2RlcHRoU3RlbmNpbEZtdCk7CisgICAgcmV0dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlv
biB0aHJvd24KK307CisKK2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1JlbmRl
ckNhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkgeworICAgIHZhciBjdHggPSB0
aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgdmFyIGNvbG9yRm10ID0gZ2x1VGV4dHVyZVV0
aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fY29sb3JGbXQpOworICAgIHZhciBkZXB0aFN0
ZW5jaWxGbXQgPSB0aGlzLm1fZGVwdGhTdGVuY2lsRm10ICE9IGdsLk5PTkUgPyBnbHVUZXh0dXJl
VXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQpIDogbmV3IHRj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdChudWxsLCBudWxsKTsKKyAgICB2YXIgY29sb3JGbXRJbmZv
ID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8oY29sb3JGbXQpOworICAgIHZh
ciBkZXB0aCA9IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5EIHx8IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5E
UzsKKyAgICB2YXIgc3RlbmNpbCA9IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5TIHx8IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNo
YW5uZWxPcmRlci5EUzsKKyAgICB2YXIgY0JpYXMgPSBjb2xvckZtdEluZm8udmFsdWVNaW47Cisg
ICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdChjb2xvckZtdEluZm8udmFsdWVNYXgsIGNv
bG9yRm10SW5mby52YWx1ZU1pbik7CisgICAgdmFyIGZsYXRTaGFkZXIgPSBuZXcgZXMzZkZib1Rl
c3RVdGlsLkZsYXRDb2xvclNoYWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQp
OworICAgIHZhciBhdHRhY2htZW50cyA9IGdldEZCT0Rpc2NhcmRBdHRhY2htZW50cyh0aGlzLm1f
aW52YWxpZGF0ZUJ1ZmZlcnMpOworICAgIHZhciBmbGF0U2hhZGVySUQgPSBjdHguY3JlYXRlUHJv
Z3JhbShmbGF0U2hhZGVyKTsKKworICAgIC8vIENyZWF0ZSBmYm8uCisgICAgdmFyIGNvbG9yUmJv
ID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgY29sb3JSYm8pOworICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgdGhpcy5tX2NvbG9yRm10LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0
SGVpZ2h0KCkpOworCisgICAgaWYgKHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSkg
eworICAgICAgICB2YXIgZGVwdGhTdGVuY2lsUmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
OworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3Rl
bmNpbFJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgdGhpcy5tX2RlcHRoU3RlbmNpbEZtdCwgdGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdo
dCgpKTsKKyAgICB9CisKKyAgICB2YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7Cisg
ICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBjdHguZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJvKTsKKworICAgIGlmIChkZXB0aCkKKyAgICAgICAg
Y3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7CisKKyAgICBpZiAoc3Rl
bmNpbCkKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsUmJv
KTsKKworICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisK
KyAgICBjdHguY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBjdHguY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQp
OworCisgICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZW5hYmxlKGdsLlNU
RU5DSUxfVEVTVCk7CisgICAgY3R4LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5SRVBM
QUNFKTsKKyAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAxLCAweGZmKTsKKworICAgIGZs
YXRTaGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRoLm11
bHRpcGx5KFsxLCAwLCAwLCAxXSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICByclV0aWwuZHJhd1F1
YWQoY3R4LCBmbGF0U2hhZGVySUQsIFstMSwgLTEsIC0xXSwgWzEsIDEsIDFdKTsKKworICAgIGN0
eC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRzKTsKKwor
ICAgIGlmICgodGhpcy5tX2ludmFsaWRhdGVCdWZmZXJzICYgZ2wuQ09MT1JfQlVGRkVSX0JJVCkg
IT0gMCkgeworICAgICAgICAvLyBDb2xvciB3YXMgbm90IHByZXNlcnZlZCAtIGZpbGwgd2l0aCBn
cmVlbi4KKyAgICAgICAgY3R4LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAgIGN0eC5k
aXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAgICAgZmxhdFNoYWRlci5zZXRDb2xvcihj
dHgsIGZsYXRTaGFkZXJJRCwgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoWzAsIDEsIDAsIDFd
LCBjU2NhbGUpLCBjQmlhcykpOworICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCBmbGF0U2hh
ZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0pOworCisgICAgICAgIGN0eC5lbmFibGUoZ2wu
REVQVEhfVEVTVCk7CisgICAgICAgIGN0eC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICB9
CisKKyAgICBpZiAoKHRoaXMubV9pbnZhbGlkYXRlQnVmZmVycyAmIGdsLkRFUFRIX0JVRkZFUl9C
SVQpICE9IDApIHsKKyAgICAgICAgLy8gRGVwdGggd2FzIG5vdCBwcmVzZXJ2ZWQuCisgICAgICAg
IGN0eC5kZXB0aEZ1bmMoZ2wuQUxXQVlTKTsKKyAgICB9CisKKyAgICBpZiAoKHRoaXMubV9pbnZh
bGlkYXRlQnVmZmVycyAmIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkgPT0gMCkgeworICAgICAgICAv
LyBTdGVuY2lsIHdhcyBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5zdGVuY2lsRnVuYyhnbC5FUVVB
TCwgMSwgMHhmZik7CisgICAgfQorCisgICAgY3R4LmVuYWJsZShnbC5CTEVORCk7CisgICAgY3R4
LmJsZW5kRnVuYyhnbC5PTkUsIGdsLk9ORSk7CisgICAgY3R4LmJsZW5kRXF1YXRpb24oZ2wuRlVO
Q19BREQpOworCisgICAgZmxhdFNoYWRlci5zZXRDb2xvcihjdHgsIGZsYXRTaGFkZXJJRCwgZGVN
YXRoLmFkZChkZU1hdGgubXVsdGlwbHkoWzAsIDAsIDEsIDFdLCBjU2NhbGUpLCBjQmlhcykpOwor
ICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGZsYXRTaGFkZXJJRCwgWy0xLCAtMSwgMF0sIFsxLCAx
LCAwXSk7CisKKyAgICBlczNmRmJvVGVzdFV0aWwucmVhZFBpeGVscyhjdHgsIGRzdCwgMCwgMCwg
dGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdodCgpLCBjb2xvckZtdCwgY29sb3JGbXRJbmZv
Lmxvb2t1cFNjYWxlLCBjb2xvckZtdEluZm8ubG9va3VwQmlhcyk7Cit9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZX0KKyAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICogQHBhcmFt
IHtudW1iZXJ9IGNvbG9yRm10CisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGhTdGVuY2lsRm10Cisg
KiBAcGFyYW0ge251bWJlcn0gaW52YWxpZGF0ZUJ1ZmZlcnMKKyAqLworZXMzZkZib0ludmFsaWRh
dGVUZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kUmVhZENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
LCBjb2xvckZtdCwgZGVwdGhTdGVuY2lsRm10LCBpbnZhbGlkYXRlQnVmZmVycykgeworICAgIGVz
M2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgIHRo
aXMubV9jb2xvckZtdCA9IGNvbG9yRm10OworICAgIHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgPSBk
ZXB0aFN0ZW5jaWxGbXQ7CisgICAgdGhpcy5tX2ludmFsaWRhdGVCdWZmZXJzID0gaW52YWxpZGF0
ZUJ1ZmZlcnM7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvSW52YWxpZGF0ZVRlc3RzLklu
dmFsaWRhdGVGYm9VbmJpbmRSZWFkQ2FzZSwgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlKTsK
KworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kUmVhZENhc2UucHJv
dG90eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMubV9jb2xvckZtdCAh
PSBnbC5OT05FKSB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fY29sb3JGbXQpOworICAg
IGlmICh0aGlzLm1fZGVwdGhTdGVuY2lsRm10ICE9IGdsLk5PTkUpIHRoaXMuY2hlY2tGb3JtYXRT
dXBwb3J0KHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQpOworICAgIHJldHVybiB0cnVlOyAvLyBObyBl
eGNlcHRpb24gdGhyb3duCit9OworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVG
Ym9VbmJpbmRSZWFkQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAg
dmFyIGN0eCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICB2YXIgY29sb3JGbXQgPSBn
bHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9jb2xvckZtdCk7CisgICAg
dmFyIGRlcHRoU3RlbmNpbEZtdCA9IHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSA/
IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2RlcHRoU3RlbmNpbEZt
dCkgOiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KG51bGwsIG51bGwpOworICAgIHZhciBj
b2xvckZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhjb2xvckZt
dCk7CisgICAgdmFyIGRlcHRoID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLkQgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hh
bm5lbE9yZGVyLkRTOworICAgIHZhciBzdGVuY2lsID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlMgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOworICAgIHZhciBhdHRhY2htZW50cyA9IGdldEZCT0Rp
c2NhcmRBdHRhY2htZW50cyh0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMpOworICAgIC8vIENyZWF0
ZSBmYm8uCisgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJG
b3JtYXQoY29sb3JGbXQpOworICAgIHZhciBncmFkU2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRp
bC5HcmFkaWVudFNoYWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworICAg
IHZhciBncmFkU2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbShncmFkU2hhZGVyKTsKKworICAg
IHZhciBjb2xvclRleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7CisgICAgY3R4LmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIGNvbG9yVGV4KTsKKyAgICBjdHgudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCB0aGlzLm1fY29sb3JGbXQsIHRoaXMuZ2V0V2lkdGgoKSwgdGhpcy5nZXRIZWlnaHQo
KSwgMCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFuc2ZlckZtdC5kYXRhVHlwZSwgbnVsbCk7Cisg
ICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVS
LCBnbC5MSU5FQVIpOworCisgICAgaWYgKHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9O
RSkgeworICAgICAgICB0cmFuc2ZlckZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9y
bWF0KGRlcHRoU3RlbmNpbEZtdCk7CisKKyAgICAgICAgdmFyIGRlcHRoU3RlbmNpbFRleCA9IGN0
eC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGN0eC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCBkZXB0aFN0ZW5jaWxUZXgpOworICAgICAgICBjdHgudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCB0aGlzLm1fZGVwdGhTdGVuY2lsRm10LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0SGVp
Z2h0KCksIDAsIHRyYW5zZmVyRm10LmZvcm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsIG51bGwp
OworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIH0KKworICAg
IHZhciBmYm8gPSBjdHguY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBjdHguYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGN0eC5mcmFtZWJ1ZmZlclRleHR1cmUyRChn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIGNvbG9y
VGV4LCAwKTsKKworICAgIGlmIChkZXB0aCkKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJFXzJELCBk
ZXB0aFN0ZW5jaWxUZXgsIDApOworCisgICAgaWYgKHN0ZW5jaWwpCisgICAgICAgIGN0eC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBn
bC5URVhUVVJFXzJELCBkZXB0aFN0ZW5jaWxUZXgsIDApOworCisgICAgdGhpcy5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgIGN0eC5jbGVhckNvbG9yKDAsIDAs
IDAsIDEpOworICAgIGN0eC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVG
RkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBjdHguZW5hYmxlKGdsLkRF
UFRIX1RFU1QpOworICAgIGN0eC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICBjdHguc3Rl
bmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLlJFUExBQ0UpOworICAgIGN0eC5zdGVuY2lsRnVu
YyhnbC5BTFdBWVMsIDEsIDB4ZmYpOworCisgICAgZ3JhZFNoYWRlci5zZXRHcmFkaWVudChjdHgs
IGdyYWRTaGFkZXJJRCwgY29sb3JGbXRJbmZvLnZhbHVlTWluLCBjb2xvckZtdEluZm8udmFsdWVN
YXgpOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwgWy0xLCAtMSwgLTFd
LCBbMSwgMSwgMV0pOworCisgICAgY3R4LmludmFsaWRhdGVGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgYXR0YWNobWVudHMpOworCisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgbnVsbCk7CisgICAgY3R4LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgY3R4LmRp
c2FibGUoZ2wuU1RFTkNJTF9URVNUKTsKKworICAgIGlmICgodGhpcy5tX2ludmFsaWRhdGVCdWZm
ZXJzICYgZ2wuREVQVEhfQlVGRkVSX0JJVCkgIT0gMCkgeworICAgICAgICAvLyBSZW5kZXIgY29s
b3IuCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0g
Ki8KKyAgICAgICAgdmFyIHRleFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJE
U2hhZGVyKAorICAgICAgICAgICAgW2dsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIyRFR5cGUoY29s
b3JGbXQpXSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgdmFy
IHRleFNoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0odGV4U2hhZGVyKTsKKworICAgICAgICB0
ZXhTaGFkZXIuc2V0VGV4U2NhbGVCaWFzKDAsIGNvbG9yRm10SW5mby5sb29rdXBTY2FsZSwgY29s
b3JGbXRJbmZvLmxvb2t1cEJpYXMpOworICAgICAgICB0ZXhTaGFkZXIuc2V0VW5pZm9ybXMoY3R4
LCB0ZXhTaGFkZXJJRCk7CisKKyAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IGNvbG9yVGV4KTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgdGV4U2hhZGVySUQsIFst
MSwgLTEsIDBdLCBbMSwgMSwgMF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFJlbmRlciBk
ZXB0aC4KKyAgICAgICAgdGV4U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRT
aGFkZXIoCisgICAgICAgICAgICBbZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEVHlwZShkZXB0
aFN0ZW5jaWxGbXQpXSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAg
ICAgdGV4U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbSh0ZXhTaGFkZXIpOworCisgICAgICAg
IHRleFNoYWRlci5zZXRVbmlmb3JtcyhjdHgsIHRleFNoYWRlcklEKTsKKworICAgICAgICBjdHgu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZGVwdGhTdGVuY2lsVGV4KTsKKyAgICAgICAgcnJV
dGlsLmRyYXdRdWFkKGN0eCwgdGV4U2hhZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0pOwor
ICAgIH0KKworICAgIGRzdC5yZWFkVmlld3BvcnQoY3R4KTsKK307CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlfQorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgKiBAcGFyYW0ge251
bWJlcn0gbnVtU2FtcGxlcworICogQHBhcmFtIHtudW1iZXJ9IGludmFsaWRhdGVCdWZmZXJzCisg
Ki8KK2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1VuYmluZEJsaXRDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzYywgbnVtU2FtcGxlcywgaW52YWxpZGF0ZUJ1ZmZlcnMpIHsKKy8v
IFxub3RlIFVzZSBmdWxsc2NyZWVuIHZpZXdwb3J0IHdoZW4gbXVsdGlzYW1wbGluZyAtIHdlIGNh
bid0IGFsbG93IEdMRVMzQ29udGV4dCBkbyBpdHMKKy8vICAgICAgIGJlaGluZy10aGUtc2NlbmVz
IHZpZXdwb3J0IHBvc2l0aW9uIHJhbmRvbWl6YXRpb24sIGJlY2F1c2Ugd2l0aCBnbEJsaXRGcmFt
ZWJ1ZmZlciwKKy8vICAgICAgIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBtdXN0
IG1hdGNoIHdoZW4gbXVsdGlzYW1wbGluZy4KKyAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENh
c2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBudW1TYW1wbGVzID4gMCk7CisgICAgdGhpcy5tX251
bVNhbXBsZXMgPSBudW1TYW1wbGVzOworICAgIHRoaXMubV9jb2xvckZtdCA9IGdldENvbXBhdGli
bGVDb2xvckZvcm1hdCgpOworICAgIHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgPSBnZXRDb21wYXRp
YmxlRGVwdGhTdGVuY2lsRm9ybWF0KCk7CisgICAgdGhpcy5tX2ludmFsaWRhdGVCdWZmZXJzID0g
aW52YWxpZGF0ZUJ1ZmZlcnM7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvSW52YWxpZGF0
ZVRlc3RzLkludmFsaWRhdGVGYm9VbmJpbmRCbGl0Q2FzZSwgZXMzZkZib1Rlc3RDYXNlLkZib1Rl
c3RDYXNlKTsKKworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kQmxp
dENhc2UucHJvdG90eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMubV9j
b2xvckZtdCAhPSBnbC5OT05FKSB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fY29sb3JG
bXQpOworICAgIGlmICh0aGlzLm1fZGVwdGhTdGVuY2lsRm10ICE9IGdsLk5PTkUpIHRoaXMuY2hl
Y2tGb3JtYXRTdXBwb3J0KHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQpOworICAgIHJldHVybiB0cnVl
OyAvLyBObyBleGNlcHRpb24gdGhyb3duCit9OworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLklu
dmFsaWRhdGVGYm9VbmJpbmRCbGl0Q2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0
KSB7CisgICAgdmFyIGN0eCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICB2YXIgcXVh
ZFNpemVQaXhlbHMgPSBbdGhpcy5tX251bVNhbXBsZXMgPT0gMCA/IHRoaXMuZ2V0V2lkdGgoKSA6
IE1hdGgubWluKDEyOCwgdGhpcy5nZXRXaWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX251bVNhbXBsZXMgPT0gMCA/IHRo
aXMuZ2V0SGVpZ2h0KCkgOiBNYXRoLm1pbigxMjgsIHRoaXMuZ2V0SGVpZ2h0KCkpXTsKKyAgICB2
YXIgcXVhZE5EQ0xlZnRCb3R0b21YWSA9IFstMSwgLTFdOworICAgIHZhciBxdWFkTkRDU2l6ZSA9
IFsyICogcXVhZFNpemVQaXhlbHNbMF0gLyB0aGlzLmdldFdpZHRoKCksIDIgKiBxdWFkU2l6ZVBp
eGVsc1sxXSAvIHRoaXMuZ2V0SGVpZ2h0KCldOworICAgIHZhciBxdWFkTkRDUmlnaHRUb3BYWSA9
IGRlTWF0aC5hZGQocXVhZE5EQ0xlZnRCb3R0b21YWSwgcXVhZE5EQ1NpemUpOworICAgIHZhciBk
ZXB0aFN0ZW5jaWxGbXQgPSB0aGlzLm1fZGVwdGhTdGVuY2lsRm10ICE9IGdsLk5PTkUgPyBnbHVU
ZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQpIDog
bmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdChudWxsLCBudWxsKTsKKyAgICB2YXIgZGVwdGgg
PSBkZXB0aFN0ZW5jaWxGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRCB8fCBk
ZXB0aFN0ZW5jaWxGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM7CisgICAg
dmFyIHN0ZW5jaWwgPSBkZXB0aFN0ZW5jaWxGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVs
T3JkZXIuUyB8fCBkZXB0aFN0ZW5jaWxGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuRFM7CisgICAgdmFyIGZsYXRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xv
clNoYWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworICAgIHZhciBhdHRh
Y2htZW50cyA9IGdldEZCT0Rpc2NhcmRBdHRhY2htZW50cyh0aGlzLm1faW52YWxpZGF0ZUJ1ZmZl
cnMpOworICAgIHZhciBmbGF0U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbShmbGF0U2hhZGVy
KTsKKworICAgIGN0eC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgIGN0eC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVS
X0JJVCk7CisKKyAgICAvLyBDcmVhdGUgZmJvLgorICAgIHZhciBjb2xvclJibyA9IGN0eC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZG
RVIsIGNvbG9yUmJvKTsKKyAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGds
LlJFTkRFUkJVRkZFUiwgdGhpcy5tX251bVNhbXBsZXMsIHRoaXMubV9jb2xvckZtdCwgcXVhZFNp
emVQaXhlbHNbMF0sIHF1YWRTaXplUGl4ZWxzWzFdKTsKKworICAgIGlmICh0aGlzLm1fZGVwdGhT
dGVuY2lsRm10ICE9IGdsLk5PTkUpIHsKKyAgICAgICAgdmFyIGRlcHRoU3RlbmNpbFJibyA9IGN0
eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxSYm8pOworICAgICAgICBjdHgucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX251bVNhbXBsZXMsIHRo
aXMubV9kZXB0aFN0ZW5jaWxGbXQsIHF1YWRTaXplUGl4ZWxzWzBdLCBxdWFkU2l6ZVBpeGVsc1sx
XSk7CisgICAgfQorCisgICAgdmFyIGZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
IGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgY3R4LmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCBjb2xvclJibyk7CisKKyAgICBpZiAoZGVwdGgpCisgICAgICAgIGN0
eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNI
TUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxSYm8pOworCisgICAgaWYgKHN0ZW5j
aWwpCisgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7
CisKKyAgICB0aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisg
ICAgY3R4LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwg
Z2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGN0eC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7
CisgICAgY3R4LmVuYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgIGN0eC5zdGVuY2lsT3AoZ2wu
S0VFUCwgZ2wuS0VFUCwgZ2wuUkVQTEFDRSk7CisgICAgY3R4LnN0ZW5jaWxGdW5jKGdsLkFMV0FZ
UywgMSwgMHhmZik7CisKKyAgICBmbGF0U2hhZGVyLnNldENvbG9yKGN0eCwgZmxhdFNoYWRlcklE
LCBbMSwgMCwgMCwgMV0pOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGZsYXRTaGFkZXJJRCwK
KyAgICAgICAgW3F1YWRORENMZWZ0Qm90dG9tWFlbMF0sIHF1YWRORENMZWZ0Qm90dG9tWFlbMV0s
IC0xXSwKKyAgICAgICAgW3F1YWRORENSaWdodFRvcFhZWzBdLCBxdWFkTkRDUmlnaHRUb3BYWVsx
XSwgMV0pOworCisgICAgY3R4LmludmFsaWRhdGVGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudHMpOworCisgICAgLy8gU2V0IGRlZmF1bHQgZnJhbWVidWZmZXIgYXMgZHJhdyBm
cmFtZWJ1ZmZlciBhbmQgYmxpdCBwcmVzZXJ2ZWQgYnVmZmVycy4KKyAgICBjdHguYmluZEZyYW1l
YnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGN0eC5ibGl0RnJhbWVidWZm
ZXIoMCwgMCwgcXVhZFNpemVQaXhlbHNbMF0sIHF1YWRTaXplUGl4ZWxzWzFdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIHF1YWRTaXplUGl4ZWxzWzBdLCBxdWFkU2l6ZVBpeGVsc1sx
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpICYgfnRoaXMubV9pbnZhbGlk
YXRlQnVmZmVycywgZ2wuTkVBUkVTVCk7CisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFE
X0ZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgIGlmICgodGhpcy5tX2ludmFsaWRhdGVCdWZmZXJz
ICYgZ2wuQ09MT1JfQlVGRkVSX0JJVCkgIT0gMCkgeworICAgICAgICAvLyBDb2xvciB3YXMgbm90
IHByZXNlcnZlZCAtIGZpbGwgd2l0aCBncmVlbi4KKyAgICAgICAgY3R4LmRpc2FibGUoZ2wuREVQ
VEhfVEVTVCk7CisgICAgICAgIGN0eC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAg
ICAgZmxhdFNoYWRlci5zZXRDb2xvcihjdHgsIGZsYXRTaGFkZXJJRCwgWzAsIDEsIDAsIDFdKTsK
KyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZmxhdFNoYWRlcklELAorICAgICAgICAgICAg
W3F1YWRORENMZWZ0Qm90dG9tWFlbMF0sIHF1YWRORENMZWZ0Qm90dG9tWFlbMV0sIDBdLAorICAg
ICAgICAgICAgW3F1YWRORENSaWdodFRvcFhZWzBdLCBxdWFkTkRDUmlnaHRUb3BYWVsxXSwgMF0p
OworCisgICAgICAgIGN0eC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAgIGN0eC5lbmFi
bGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICB9CisKKyAgICBpZiAoKHRoaXMubV9pbnZhbGlkYXRl
QnVmZmVycyAmIGdsLkRFUFRIX0JVRkZFUl9CSVQpICE9IDApIHsKKyAgICAgICAgLy8gRGVwdGgg
d2FzIG5vdCBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5kZXB0aEZ1bmMoZ2wuQUxXQVlTKTsKKyAg
ICB9CisKKyAgICBpZiAoKHRoaXMubV9pbnZhbGlkYXRlQnVmZmVycyAmIGdsLlNURU5DSUxfQlVG
RkVSX0JJVCkgPT0gMCkgeworICAgICAgICAvLyBTdGVuY2lsIHdhcyBwcmVzZXJ2ZWQuCisgICAg
ICAgIGN0eC5zdGVuY2lsRnVuYyhnbC5FUVVBTCwgMSwgMHhmZik7CisgICAgfQorCisgICAgY3R4
LmVuYWJsZShnbC5CTEVORCk7CisgICAgY3R4LmJsZW5kRnVuYyhnbC5PTkUsIGdsLk9ORSk7Cisg
ICAgY3R4LmJsZW5kRXF1YXRpb24oZ2wuRlVOQ19BREQpOworCisgICAgZmxhdFNoYWRlci5zZXRD
b2xvcihjdHgsIGZsYXRTaGFkZXJJRCwgWzAsIDAsIDEsIDFdKTsKKyAgICByclV0aWwuZHJhd1F1
YWQoY3R4LCBmbGF0U2hhZGVySUQsCisgICAgICAgIFtxdWFkTkRDTGVmdEJvdHRvbVhZWzBdLCBx
dWFkTkRDTGVmdEJvdHRvbVhZWzFdLCAwXSwKKyAgICAgICAgW3F1YWRORENSaWdodFRvcFhZWzBd
LCBxdWFkTkRDUmlnaHRUb3BYWVsxXSwgMF0pOworCisgICAgZHN0LnJlYWRWaWV3cG9ydChjdHgs
IFswLCAwLCBxdWFkU2l6ZVBpeGVsc1swXSwgcXVhZFNpemVQaXhlbHNbMV1dKTsKK307CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RD
YXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
KiBAcGFyYW0ge251bWJlcn0gY29sb3JGbXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aFN0ZW5j
aWxGbXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbnZhbGlkYXRlQnVmZmVycworICovCitlczNmRmJv
SW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9VbmJpbmRSZWFkQ2FzZSA9IGZ1bmN0aW9u
KG5hbWUsIGRlc2MsIGNvbG9yRm10LCBkZXB0aFN0ZW5jaWxGbXQsIGludmFsaWRhdGVCdWZmZXJz
KSB7CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Yyk7CisgICAgdGhpcy5tX2NvbG9yRm10ID0gY29sb3JGbXQ7CisgICAgdGhpcy5tX2RlcHRoU3Rl
bmNpbEZtdCA9IGRlcHRoU3RlbmNpbEZtdDsKKyAgICB0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMg
PSBpbnZhbGlkYXRlQnVmZmVyczsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9JbnZhbGlk
YXRlVGVzdHMuSW52YWxpZGF0ZVN1YkZib1VuYmluZFJlYWRDYXNlLCBlczNmRmJvVGVzdENhc2Uu
RmJvVGVzdENhc2UpOworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9V
bmJpbmRSZWFkQ2FzZS5wcm90b3R5cGUucHJlQ2hlY2sgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAo
dGhpcy5tX2NvbG9yRm10ICE9IGdsLk5PTkUpIHRoaXMuY2hlY2tGb3JtYXRTdXBwb3J0KHRoaXMu
bV9jb2xvckZtdCk7CisgICAgaWYgKHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSkg
dGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQodGhpcy5tX2RlcHRoU3RlbmNpbEZtdCk7CisgICAgcmV0
dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KK307CisKK2VzM2ZGYm9JbnZhbGlkYXRl
VGVzdHMuSW52YWxpZGF0ZVN1YkZib1VuYmluZFJlYWRDYXNlLnByb3RvdHlwZS5jb21wYXJlID0g
ZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICB2YXIgdGhyZXNob2xkID0gdGN1UkdC
QS5tYXgoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdFRocmVzaG9sZCh0aGlzLm1fY29sb3JGbXQp
LCBuZXcgdGN1UkdCQS5SR0JBKFsxMiwgMTIsIDEyLCAxMl0pKTsKKyAgICByZXR1cm4gdGN1SW1h
Z2VDb21wYXJlLmJpbGluZWFyQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVz
dWx0JywgcmVmZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQuZ2V0QWNjZXNzKCksIHRocmVzaG9s
ZCk7Cit9OworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9VbmJpbmRS
ZWFkQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgdmFyIGN0eCA9
IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICB2YXIgY29sb3JGbXQgPSBnbHVUZXh0dXJl
VXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9jb2xvckZtdCk7CisgICAgdmFyIGRlcHRo
U3RlbmNpbEZtdCA9IHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSA/IGdsdVRleHR1
cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2RlcHRoU3RlbmNpbEZtdCkgOiBuZXcg
dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KG51bGwsIG51bGwpOworICAgIHZhciBjb2xvckZtdElu
Zm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhjb2xvckZtdCk7CisgICAg
dmFyIGRlcHRoID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLkQgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkRTOworICAgIHZhciBzdGVuY2lsID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLlMgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLkRTOworICAgIHZhciBhdHRhY2htZW50cyA9IGdldEZCT0Rpc2NhcmRBdHRh
Y2htZW50cyh0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMpOworICAgIC8vIENyZWF0ZSBmYm8uCisg
ICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoY29s
b3JGbXQpOworICAgIHZhciBncmFkU2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVu
dFNoYWRlcihlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRPdXRwdXRUeXBlKGNvbG9yRm10KSk7
CisgICAgdmFyIGdyYWRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGdyYWRTaGFkZXIpOwor
ICAgIHZhciBpbnZhbGlkYXRlWCA9IDA7CisgICAgdmFyIGludmFsaWRhdGVZID0gMDsKKyAgICB2
YXIgaW52YWxpZGF0ZVcgPSB0aGlzLmdldFdpZHRoKCkgLyAyOworICAgIHZhciBpbnZhbGlkYXRl
SCA9IHRoaXMuZ2V0SGVpZ2h0KCk7CisgICAgdmFyIHJlYWRYID0gaW52YWxpZGF0ZVc7CisgICAg
dmFyIHJlYWRZID0gMDsKKyAgICB2YXIgcmVhZFcgPSB0aGlzLmdldFdpZHRoKCkgLyAyOworICAg
IHZhciByZWFkSCA9IHRoaXMuZ2V0SGVpZ2h0KCk7CisKKyAgICB2YXIgY29sb3JUZXggPSBjdHgu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGN0eC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb2xv
clRleCk7CisgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2NvbG9y
Rm10LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0SGVpZ2h0KCksIDAsIHRyYW5zZmVyRm10LmZv
cm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsIG51bGwpOworICAgIGN0eC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAg
Y3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBn
bC5ORUFSRVNUKTsKKworICAgIGlmICh0aGlzLm1fZGVwdGhTdGVuY2lsRm10ICE9IGdsLk5PTkUp
IHsKKyAgICAgICAgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1h
dChkZXB0aFN0ZW5jaWxGbXQpOworCisgICAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXggPSBjdHgu
Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
ZGVwdGhTdGVuY2lsVGV4KTsKKyAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgdGhpcy5tX2RlcHRoU3RlbmNpbEZtdCwgdGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdo
dCgpLCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBudWxsKTsK
KyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICB9CisKKyAgICB2
YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBjdHguZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBjb2xvclRl
eCwgMCk7CisKKyAgICBpZiAoZGVwdGgpCisgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuVEVYVFVSRV8yRCwgZGVw
dGhTdGVuY2lsVGV4LCAwKTsKKworICAgIGlmIChzdGVuY2lsKQorICAgICAgICBjdHguZnJhbWVi
dWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wu
VEVYVFVSRV8yRCwgZGVwdGhTdGVuY2lsVGV4LCAwKTsKKworICAgIHRoaXMuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICB0aGlzLmNsZWFyQ29sb3JCdWZmZXIo
Y29sb3JGbXQsIFswLjAsIDAuMCwgMC4wLCAxLjBdKTsKKyAgICBjdHguY2xlYXIoZ2wuREVQVEhf
QlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBjdHguZW5hYmxlKGds
LkRFUFRIX1RFU1QpOworICAgIGN0eC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICBjdHgu
c3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLlJFUExBQ0UpOworICAgIGN0eC5zdGVuY2ls
RnVuYyhnbC5BTFdBWVMsIDEsIDB4ZmYpOworCisgICAgZ3JhZFNoYWRlci5zZXRHcmFkaWVudChj
dHgsIGdyYWRTaGFkZXJJRCwgY29sb3JGbXRJbmZvLnZhbHVlTWluLCBjb2xvckZtdEluZm8udmFs
dWVNYXgpOworICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJJRCwgWy0xLCAtMSwg
LTFdLCBbMSwgMSwgMV0pOworCisgICAgY3R4LmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgYXR0YWNobWVudHMsIGludmFsaWRhdGVYLCBpbnZhbGlkYXRlWSwgaW52YWxp
ZGF0ZVcsIGludmFsaWRhdGVIKTsKKworICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG51bGwpOworICAgIGN0eC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIGN0eC5k
aXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICBjdHguY2xlYXJDb2xvcigwLjI1LCAwLjUs
IDAuNzUsIDEpOworICAgIGN0eC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBMaW1pdCByZWFk
IGFyZWEgdXNpbmcgc2Npc3Nvci4KKyAgICBjdHguc2Npc3NvcihyZWFkWCwgcmVhZFksIHJlYWRX
LCByZWFkSCk7CisgICAgY3R4LmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworCisgICAgaWYgKCh0
aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMgJiBnbC5DT0xPUl9CVUZGRVJfQklUKSAhPSAwKSB7Cisg
ICAgICAgIC8vIFJlbmRlciBjb2xvci4KKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0
aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4U2hhZGVyID0gbmV3IGVzM2ZG
Ym9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1VGV4dHVyZVV0aWwu
Z2V0U2FtcGxlcjJEVHlwZShjb2xvckZtdCldLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X1ZFQzQpOworICAgICAgICB2YXIgdGV4U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbSh0ZXhT
aGFkZXIpOworCisgICAgICAgIHRleFNoYWRlci5zZXRUZXhTY2FsZUJpYXMoMCwgY29sb3JGbXRJ
bmZvLmxvb2t1cFNjYWxlLCBjb2xvckZtdEluZm8ubG9va3VwQmlhcyk7CisgICAgICAgIHRleFNo
YWRlci5zZXRVbmlmb3JtcyhjdHgsIHRleFNoYWRlcklEKTsKKworICAgICAgICBjdHguYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgY29sb3JUZXgpOworICAgICAgICByclV0aWwuZHJhd1F1YWQo
Y3R4LCB0ZXhTaGFkZXJJRCwgWy0xLCAtMSwgMF0sIFsxLCAxLCAwXSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gUmVuZGVyIGRlcHRoLgorICAgICAgICB0ZXhTaGFkZXIgPSBuZXcgZXMzZkZi
b1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAgICAgIFtnbHVUZXh0dXJlVXRpbC5n
ZXRTYW1wbGVyMkRUeXBlKGRlcHRoU3RlbmNpbEZtdCldLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzQpOworICAgICAgICB0ZXhTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRl
eFNoYWRlcik7CisKKyAgICAgICAgdGV4U2hhZGVyLnNldFVuaWZvcm1zKGN0eCwgdGV4U2hhZGVy
SUQpOworCisgICAgICAgIGN0eC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBkZXB0aFN0ZW5j
aWxUZXgpOworICAgICAgICByclV0aWwuZHJhd1F1YWQoY3R4LCB0ZXhTaGFkZXJJRCwgWy0xLCAt
MSwgMF0sIFsxLCAxLCAwXSk7CisgICAgfQorCisgICAgZHN0LnJlYWRWaWV3cG9ydChjdHgpOwor
fTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmRmJvVGVzdENhc2Uu
RmJvVGVzdENhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9
IGRlc2MKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb2xvckZtdAorICogQHBhcmFtIHtudW1iZXJ9IGRl
cHRoU3RlbmNpbEZtdAorICogQHBhcmFtIHtudW1iZXJ9IGludmFsaWRhdGVCdWZmZXJzCisgKi8K
K2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZVN1YkZib1JlbmRlckNhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjLCBjb2xvckZtdCwgZGVwdGhTdGVuY2lsRm10LCBpbnZhbGlkYXRlQnVm
ZmVycykgeworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5jYWxsKHRoaXMsIG5hbWUs
IGRlc2MpOworICAgIHRoaXMubV9jb2xvckZtdCA9IGNvbG9yRm10OworICAgIHRoaXMubV9kZXB0
aFN0ZW5jaWxGbXQgPSBkZXB0aFN0ZW5jaWxGbXQ7CisgICAgdGhpcy5tX2ludmFsaWRhdGVCdWZm
ZXJzID0gaW52YWxpZGF0ZUJ1ZmZlcnM7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvSW52
YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9SZW5kZXJDYXNlLCBlczNmRmJvVGVzdENhc2Uu
RmJvVGVzdENhc2UpOworCitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9S
ZW5kZXJDYXNlLnByb3RvdHlwZS5wcmVDaGVjayA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlz
Lm1fY29sb3JGbXQgIT0gZ2wuTk9ORSkgdGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQodGhpcy5tX2Nv
bG9yRm10KTsKKyAgICBpZiAodGhpcy5tX2RlcHRoU3RlbmNpbEZtdCAhPSBnbC5OT05FKSB0aGlz
LmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZGVwdGhTdGVuY2lsRm10KTsKKyAgICByZXR1cm4g
dHJ1ZTsgLy8gTm8gZXhjZXB0aW9uIHRocm93bgorfTsKKworZXMzZkZib0ludmFsaWRhdGVUZXN0
cy5JbnZhbGlkYXRlU3ViRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24o
ZHN0KSB7CisgICAgdmFyIGN0eCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICB2YXIg
Y29sb3JGbXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9jb2xv
ckZtdCk7CisgICAgdmFyIGRlcHRoU3RlbmNpbEZtdCA9IHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQg
IT0gZ2wuTk9ORSA/IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2Rl
cHRoU3RlbmNpbEZtdCkgOiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KG51bGwsIG51bGwp
OworICAgIHZhciBjb2xvckZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0
SW5mbyhjb2xvckZtdCk7CisgICAgdmFyIGRlcHRoID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOworICAgIHZhciBzdGVuY2lsID0gZGVwdGhTdGVuY2ls
Rm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlMgfHwgZGVwdGhTdGVuY2lsRm10
Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkRTOworICAgIHZhciBjQmlhcyA9IGNv
bG9yRm10SW5mby52YWx1ZU1pbjsKKyAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRyYWN0KGNv
bG9yRm10SW5mby52YWx1ZU1heCwgY29sb3JGbXRJbmZvLnZhbHVlTWluKTsKKyAgICB2YXIgZmxh
dFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyKGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAgdmFyIGF0dGFjaG1lbnRzID0gZ2V0RkJPRGlz
Y2FyZEF0dGFjaG1lbnRzKHRoaXMubV9pbnZhbGlkYXRlQnVmZmVycyk7CisgICAgdmFyIGZsYXRT
aGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGZsYXRTaGFkZXIpOworICAgIHZhciBpbnZhbGlk
YXRlWCA9IHRoaXMuZ2V0V2lkdGgoKSAvIDQ7CisgICAgdmFyIGludmFsaWRhdGVZID0gdGhpcy5n
ZXRIZWlnaHQoKSAvIDQ7CisgICAgdmFyIGludmFsaWRhdGVXID0gdGhpcy5nZXRXaWR0aCgpIC8g
MjsKKyAgICB2YXIgaW52YWxpZGF0ZUggPSB0aGlzLmdldEhlaWdodCgpIC8gMjsKKworICAgIC8v
IENyZWF0ZSBmYm8uCisgICAgdmFyIGNvbG9yUmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
OworICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JSYm8pOwor
ICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX2NvbG9y
Rm10LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0SGVpZ2h0KCkpOworCisgICAgaWYgKHRoaXMu
bV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSkgeworICAgICAgICB2YXIgZGVwdGhTdGVuY2ls
UmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjdHguYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7CisgICAgICAgIGN0eC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX2RlcHRoU3RlbmNpbEZtdCwg
dGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdodCgpKTsKKyAgICB9CisKKyAgICB2YXIgZmJv
ID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJv
KTsKKworICAgIGlmIChkZXB0aCkKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRl
cHRoU3RlbmNpbFJibyk7CisKKyAgICBpZiAoc3RlbmNpbCkKKyAgICAgICAgY3R4LmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGds
LlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsUmJvKTsKKworICAgIHRoaXMuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICBjdHguY2xlYXJCdWZmZXJmdihnbC5D
T0xPUiwgMCwgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoWzAsIDAsIDAsIDFdLCBjU2NhbGUp
LCBjQmlhcykpOworICAgIGN0eC5jbGVhckJ1ZmZlcmZpKGdsLkRFUFRIX1NURU5DSUwsIDAsIDEs
IDApOworCisgICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZW5hYmxlKGds
LlNURU5DSUxfVEVTVCk7CisgICAgY3R4LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5S
RVBMQUNFKTsKKyAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAxLCAweGZmKTsKKworICAg
IGZsYXRTaGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRo
Lm11bHRpcGx5KFsxLCAwLCAwLCAxXSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICByclV0aWwuZHJh
d1F1YWQoY3R4LCBmbGF0U2hhZGVySUQsIFstMSwgLTEsIC0xXSwgWzEsIDEsIDFdKTsKKworICAg
IGN0eC5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRz
LCBpbnZhbGlkYXRlWCwgaW52YWxpZGF0ZVksIGludmFsaWRhdGVXLCBpbnZhbGlkYXRlSCk7CisK
KyAgICAvLyBDbGVhciBpbnZhbGlkYXRlZCBidWZmZXJzLgorICAgIGN0eC5zY2lzc29yKGludmFs
aWRhdGVYLCBpbnZhbGlkYXRlWSwgaW52YWxpZGF0ZVcsIGludmFsaWRhdGVIKTsKKyAgICBjdHgu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICBpZiAodGhpcy5tX2ludmFsaWRhdGVCdWZm
ZXJzICYgZ2wuQ09MT1JfQlVGRkVSX0JJVCkKKyAgICAgICAgY3R4LmNsZWFyQnVmZmVyZnYoZ2wu
Q09MT1IsIDAsIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KFswLCAxLCAwLCAxXSwgY1NjYWxl
KSwgY0JpYXMpKTsKKworICAgIGN0eC5jbGVhcih0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMgJiB+
Z2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgY3R4LmRpc2FibGUoZ2wuU0NJU1NPUl9URVNUKTsK
KworICAgIGN0eC5lbmFibGUoZ2wuQkxFTkQpOworICAgIGN0eC5ibGVuZEZ1bmMoZ2wuT05FLCBn
bC5PTkUpOworICAgIGN0eC5ibGVuZEVxdWF0aW9uKGdsLkZVTkNfQUREKTsKKworICAgIGZsYXRT
aGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRp
cGx5KFswLCAwLCAxLCAxXSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICByclV0aWwuZHJhd1F1YWQo
Y3R4LCBmbGF0U2hhZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0pOworCisgICAgZXMzZkZi
b1Rlc3RVdGlsLnJlYWRQaXhlbHMoY3R4LCBkc3QsIDAsIDAsIHRoaXMuZ2V0V2lkdGgoKSwgdGhp
cy5nZXRIZWlnaHQoKSwgY29sb3JGbXQsIGNvbG9yRm10SW5mby5sb29rdXBTY2FsZSwgY29sb3JG
bXRJbmZvLmxvb2t1cEJpYXMpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1TYW1wbGVz
CisgKiBAcGFyYW0ge251bWJlcn0gaW52YWxpZGF0ZUJ1ZmZlcnMKKyAqLworZXMzZkZib0ludmFs
aWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvVW5iaW5kQmxpdENhc2UgPSBmdW5jdGlvbihuYW1l
LCBkZXNjLCBudW1TYW1wbGVzLCBpbnZhbGlkYXRlQnVmZmVycykgeworLy8gXG5vdGUgVXNlIGZ1
bGxzY3JlZW4gdmlld3BvcnQgd2hlbiBtdWx0aXNhbXBsaW5nIC0gd2UgY2FuJ3QgYWxsb3cgR0xF
UzNDb250ZXh0IGRvIGl0cworLy8gICAgICAgYmVoaW5nLXRoZS1zY2VuZXMgdmlld3BvcnQgcG9z
aXRpb24gcmFuZG9taXphdGlvbiwgYmVjYXVzZSB3aXRoIGdsQmxpdEZyYW1lYnVmZmVyLAorLy8g
ICAgICAgc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIG11c3QgbWF0Y2ggd2hlbiBt
dWx0aXNhbXBsaW5nLgorICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5jYWxsKHRoaXMs
IG5hbWUsIGRlc2MsIG51bVNhbXBsZXMgPiAwKTsKKyAgICB0aGlzLm1fbnVtU2FtcGxlcyA9IG51
bVNhbXBsZXM7CisgICAgdGhpcy5tX2NvbG9yRm10ID0gZ2V0Q29tcGF0aWJsZUNvbG9yRm9ybWF0
KCk7CisgICAgdGhpcy5tX2RlcHRoU3RlbmNpbEZtdCA9IGdldENvbXBhdGlibGVEZXB0aFN0ZW5j
aWxGb3JtYXQoKTsKKyAgICB0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMgPSBpbnZhbGlkYXRlQnVm
ZmVyczsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxp
ZGF0ZVN1YkZib1VuYmluZEJsaXRDYXNlLCBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UpOwor
CitlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9VbmJpbmRCbGl0Q2FzZS5w
cm90b3R5cGUucHJlQ2hlY2sgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5tX2NvbG9yRm10
ICE9IGdsLk5PTkUpIHRoaXMuY2hlY2tGb3JtYXRTdXBwb3J0KHRoaXMubV9jb2xvckZtdCk7Cisg
ICAgaWYgKHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSkgdGhpcy5jaGVja0Zvcm1h
dFN1cHBvcnQodGhpcy5tX2RlcHRoU3RlbmNpbEZtdCk7CisgICAgcmV0dXJuIHRydWU7IC8vIE5v
IGV4Y2VwdGlvbiB0aHJvd24KK307CisKK2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0
ZVN1YkZib1VuYmluZEJsaXRDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihkc3QpIHsK
KyAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgIHZhciBxdWFkU2l6
ZVBpeGVscyA9IFt0aGlzLm1fbnVtU2FtcGxlcyA9PSAwID8gdGhpcy5nZXRXaWR0aCgpIDogTWF0
aC5taW4oMTI4LCB0aGlzLmdldFdpZHRoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fbnVtU2FtcGxlcyA9PSAwID8gdGhpcy5n
ZXRIZWlnaHQoKSA6IE1hdGgubWluKDEyOCwgdGhpcy5nZXRIZWlnaHQoKSldOworICAgIHZhciBx
dWFkTkRDTGVmdEJvdHRvbVhZID0gWy0xLCAtMV07CisgICAgdmFyIHF1YWRORENTaXplID0gWzIg
KiBxdWFkU2l6ZVBpeGVsc1swXSAvIHRoaXMuZ2V0V2lkdGgoKSwgMiAqIHF1YWRTaXplUGl4ZWxz
WzFdIC8gdGhpcy5nZXRIZWlnaHQoKV07CisgICAgdmFyIHF1YWRORENSaWdodFRvcFhZID0gZGVN
YXRoLmFkZChxdWFkTkRDTGVmdEJvdHRvbVhZLCBxdWFkTkRDU2l6ZSk7CisgICAgdmFyIGRlcHRo
U3RlbmNpbEZtdCA9IHRoaXMubV9kZXB0aFN0ZW5jaWxGbXQgIT0gZ2wuTk9ORSA/IGdsdVRleHR1
cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2RlcHRoU3RlbmNpbEZtdCkgOiBuZXcg
dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KG51bGwsIG51bGwpOworICAgIHZhciBkZXB0aCA9IGRl
cHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EIHx8IGRlcHRo
U3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzsKKyAgICB2YXIg
c3RlbmNpbCA9IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5TIHx8IGRlcHRoU3RlbmNpbEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5E
UzsKKyAgICB2YXIgZmxhdFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hh
ZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAgdmFyIGF0dGFjaG1l
bnRzID0gZ2V0RkJPRGlzY2FyZEF0dGFjaG1lbnRzKHRoaXMubV9pbnZhbGlkYXRlQnVmZmVycyk7
CisgICAgdmFyIGZsYXRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGZsYXRTaGFkZXIpOwor
ICAgIHZhciBpbnZhbGlkYXRlWCA9IDA7CisgICAgdmFyIGludmFsaWRhdGVZID0gMDsKKyAgICB2
YXIgaW52YWxpZGF0ZVcgPSBxdWFkU2l6ZVBpeGVsc1swXSAvIDI7CisgICAgdmFyIGludmFsaWRh
dGVIID0gcXVhZFNpemVQaXhlbHNbMV07CisgICAgdmFyIGJsaXRYMCA9IGludmFsaWRhdGVXOwor
ICAgIHZhciBibGl0WTAgPSAwOworICAgIHZhciBibGl0WDEgPSBibGl0WDAgKyBxdWFkU2l6ZVBp
eGVsc1swXSAvIDI7CisgICAgdmFyIGJsaXRZMSA9IGJsaXRZMCArIHF1YWRTaXplUGl4ZWxzWzFd
OworCisgICAgY3R4LmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgY3R4LmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUKTsKKworICAgIC8vIENyZWF0ZSBmYm8uCisgICAgdmFyIGNvbG9yUmJvID0gY3R4LmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpOworICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgY29sb3JSYm8pOworICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wu
UkVOREVSQlVGRkVSLCB0aGlzLm1fbnVtU2FtcGxlcywgdGhpcy5tX2NvbG9yRm10LCBxdWFkU2l6
ZVBpeGVsc1swXSwgcXVhZFNpemVQaXhlbHNbMV0pOworCisgICAgaWYgKHRoaXMubV9kZXB0aFN0
ZW5jaWxGbXQgIT0gZ2wuTk9ORSkgeworICAgICAgICB2YXIgZGVwdGhTdGVuY2lsUmJvID0gY3R4
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCB0aGlzLm1fbnVtU2FtcGxlcywgdGhp
cy5tX2RlcHRoU3RlbmNpbEZtdCwgcXVhZFNpemVQaXhlbHNbMF0sIHF1YWRTaXplUGl4ZWxzWzFd
KTsKKyAgICB9CisKKyAgICB2YXIgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
Y3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBjdHguZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5SRU5ERVJCVUZGRVIsIGNvbG9yUmJvKTsKKworICAgIGlmIChkZXB0aCkKKyAgICAgICAgY3R4
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7CisKKyAgICBpZiAoc3RlbmNp
bCkKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsUmJvKTsK
KworICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAg
ICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBn
bC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgY3R4LmVuYWJsZShnbC5ERVBUSF9URVNUKTsK
KyAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgY3R4LnN0ZW5jaWxPcChnbC5L
RUVQLCBnbC5LRUVQLCBnbC5SRVBMQUNFKTsKKyAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlT
LCAxLCAweGZmKTsKKworICAgIGZsYXRTaGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQs
IFsxLCAwLCAwLCAxXSk7CisgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZmxhdFNoYWRlcklELAor
ICAgICAgICBbcXVhZE5EQ0xlZnRCb3R0b21YWVswXSwgcXVhZE5EQ0xlZnRCb3R0b21YWVsxXSwg
LTFdLAorICAgICAgICBbcXVhZE5EQ1JpZ2h0VG9wWFlbMF0sIHF1YWRORENSaWdodFRvcFhZWzFd
LCAxXSk7CisKKyAgICBjdHguaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBhdHRhY2htZW50cywgaW52YWxpZGF0ZVgsIGludmFsaWRhdGVZLCBpbnZhbGlkYXRlVywgaW52
YWxpZGF0ZUgpOworCisgICAgLy8gU2V0IGRlZmF1bHQgZnJhbWVidWZmZXIgYXMgZHJhdyBmcmFt
ZWJ1ZmZlciBhbmQgYmxpdCBwcmVzZXJ2ZWQgYnVmZmVycy4KKyAgICBjdHguYmluZEZyYW1lYnVm
ZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGN0eC5ibGl0RnJhbWVidWZmZXIo
YmxpdFgwLCBibGl0WTAsIGJsaXRYMSwgYmxpdFkxLCBibGl0WDAsIGJsaXRZMCwgYmxpdFgxLCBi
bGl0WTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSAmIH50aGlzLm1faW52
YWxpZGF0ZUJ1ZmZlcnMsIGdsLk5FQVJFU1QpOworICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wu
UkVBRF9GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICBpZiAoKHRoaXMubV9pbnZhbGlkYXRlQnVm
ZmVycyAmIGdsLkNPTE9SX0JVRkZFUl9CSVQpICE9IDApIHsKKyAgICAgICAgLy8gQ29sb3Igd2Fz
IG5vdCBwcmVzZXJ2ZWQgLSBmaWxsIHdpdGggZ3JlZW4uCisgICAgICAgIGN0eC5kaXNhYmxlKGds
LkRFUFRIX1RFU1QpOworICAgICAgICBjdHguZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworCisg
ICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIFswLCAxLCAwLCAx
XSk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGZsYXRTaGFkZXJJRCwKKyAgICAgICAg
ICAgIFtxdWFkTkRDTGVmdEJvdHRvbVhZWzBdLCBxdWFkTkRDTGVmdEJvdHRvbVhZWzFdLCAwXSwK
KyAgICAgICAgICAgIFtxdWFkTkRDUmlnaHRUb3BYWVswXSwgcXVhZE5EQ1JpZ2h0VG9wWFlbMV0s
IDBdKTsKKworICAgICAgICBjdHguZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgICAgICBjdHgu
ZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgfQorCisgICAgaWYgKCh0aGlzLm1faW52YWxp
ZGF0ZUJ1ZmZlcnMgJiBnbC5ERVBUSF9CVUZGRVJfQklUKSAhPSAwKSB7CisgICAgICAgIC8vIERl
cHRoIHdhcyBub3QgcHJlc2VydmVkLgorICAgICAgICBjdHguZGVwdGhGdW5jKGdsLkFMV0FZUyk7
CisgICAgfQorCisgICAgaWYgKCh0aGlzLm1faW52YWxpZGF0ZUJ1ZmZlcnMgJiBnbC5TVEVOQ0lM
X0JVRkZFUl9CSVQpID09IDApIHsKKyAgICAgICAgLy8gU3RlbmNpbCB3YXMgcHJlc2VydmVkLgor
ICAgICAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuRVFVQUwsIDEsIDB4ZmYpOworICAgIH0KKworICAg
IGN0eC5lbmFibGUoZ2wuQkxFTkQpOworICAgIGN0eC5ibGVuZEZ1bmMoZ2wuT05FLCBnbC5PTkUp
OworICAgIGN0eC5ibGVuZEVxdWF0aW9uKGdsLkZVTkNfQUREKTsKKworICAgIGZsYXRTaGFkZXIu
c2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIFswLCAwLCAxLCAxXSk7CisgICAgcnJVdGlsLmRy
YXdRdWFkKGN0eCwgZmxhdFNoYWRlcklELAorICAgICAgICBbcXVhZE5EQ0xlZnRCb3R0b21YWVsw
XSwgcXVhZE5EQ0xlZnRCb3R0b21YWVsxXSwgMF0sCisgICAgICAgIFtxdWFkTkRDUmlnaHRUb3BY
WVswXSwgcXVhZE5EQ1JpZ2h0VG9wWFlbMV0sIDBdKTsKKworICAgIGRzdC5yZWFkVmlld3BvcnQo
Y3R4LCBbMCwgMCwgcXVhZFNpemVQaXhlbHNbMF0sIHF1YWRTaXplUGl4ZWxzWzFdXSk7Cit9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9UZXN0Q2FzZS5GYm9U
ZXN0Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVz
YworICogQHBhcmFtIHtudW1iZXJ9IGJvdW5kVGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gaW52
YWxpZGF0ZVRhcmdldAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbnZhbGlkYXRlQXR0YWNo
bWVudHMKKyAqLworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVGFyZ2V0Q2Fz
ZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGJvdW5kVGFyZ2V0LCBpbnZhbGlkYXRlVGFyZ2V0LCBp
bnZhbGlkYXRlQXR0YWNobWVudHMpIHsKKyAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICB0aGlzLm1fYm91bmRUYXJnZXQgPSBib3VuZFRh
cmdldDsKKyAgICB0aGlzLm1faW52YWxpZGF0ZVRhcmdldCA9IGludmFsaWRhdGVUYXJnZXQ7Cisg
ICAgdGhpcy5tX2ludmFsaWRhdGVBdHRhY2htZW50cyA9IGludmFsaWRhdGVBdHRhY2htZW50czsK
K307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZi
b1RhcmdldENhc2UsIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZSk7CisKK2VzM2ZGYm9JbnZh
bGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1RhcmdldENhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1
bmN0aW9uKGRzdCkgeworICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7Cisg
ICAgdmFyIGNvbG9yRm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgdmFyIGRlcHRoU3RlbmNpbEZvcm1h
dCA9IGdsLkRFUFRIMjRfU1RFTkNJTDg7CisgICAgdmFyIGNvbG9yRm10ID0gZ2x1VGV4dHVyZVV0
aWwubWFwR0xJbnRlcm5hbEZvcm1hdChjb2xvckZvcm1hdCk7CisgICAgdmFyIGNvbG9yRm10SW5m
byA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKGNvbG9yRm10KTsKKyAgICB2
YXIgY0JpYXMgPSBjb2xvckZtdEluZm8udmFsdWVNaW47CisgICAgdmFyIGNTY2FsZSA9IGRlTWF0
aC5zdWJ0cmFjdChjb2xvckZtdEluZm8udmFsdWVNYXgsIGNvbG9yRm10SW5mby52YWx1ZU1pbik7
CisgICAgdmFyIGlzRGlzY2FyZGVkID0gKHRoaXMubV9ib3VuZFRhcmdldCA9PSBnbC5GUkFNRUJV
RkZFUikgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1faW52
YWxpZGF0ZVRhcmdldCA9PSBnbC5GUkFNRUJVRkZFUiAmJiB0aGlzLm1fYm91bmRUYXJnZXQgPT0g
Z2wuRFJBV19GUkFNRUJVRkZFUikgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh0aGlzLm1faW52YWxpZGF0ZVRhcmdldCA9PSB0aGlzLm1fYm91bmRUYXJnZXQpOworICAg
IHZhciBpc0NvbG9yRGlzY2FyZGVkID0gaXNEaXNjYXJkZWQgJiYgaGFzQXR0YWNobWVudCh0aGlz
Lm1faW52YWxpZGF0ZUF0dGFjaG1lbnRzLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCk7CisgICAgdmFy
IGlzRGVwdGhEaXNjYXJkZWQgPSBpc0Rpc2NhcmRlZCAmJiAoaGFzQXR0YWNobWVudCh0aGlzLm1f
aW52YWxpZGF0ZUF0dGFjaG1lbnRzLCBnbC5ERVBUSF9BVFRBQ0hNRU5UKSB8fCBoYXNBdHRhY2ht
ZW50KHRoaXMubV9pbnZhbGlkYXRlQXR0YWNobWVudHMsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCkpOworICAgIHZhciBpc1N0ZW5jaWxEaXNjYXJkZWQgPSBpc0Rpc2NhcmRlZCAmJiAoaGFz
QXR0YWNobWVudCh0aGlzLm1faW52YWxpZGF0ZUF0dGFjaG1lbnRzLCBnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQpIHx8IGhhc0F0dGFjaG1lbnQodGhpcy5tX2ludmFsaWRhdGVBdHRhY2htZW50cywgZ2wu
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisKKyAgICB2YXIgZmxhdFNoYWRlciA9IG5ldyBl
czNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfVkVDNCk7CisgICAgdmFyIGZsYXRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGZsYXRT
aGFkZXIpOworCisgICAgLy8gQ3JlYXRlIGZiby4KKyAgICB2YXIgY29sb3JSYm8gPSBjdHguY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7CisgICAgY3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVG
RkVSLCBjb2xvclJibyk7CisgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVG
RkVSLCBjb2xvckZvcm1hdCwgdGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdodCgpKTsKKwor
ICAgIHZhciBkZXB0aFN0ZW5jaWxSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAg
Y3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxSYm8pOwor
ICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
Rm9ybWF0LCB0aGlzLmdldFdpZHRoKCksIHRoaXMuZ2V0SGVpZ2h0KCkpOworCisgICAgdmFyIGZi
byA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZibyk7CisgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvclJi
byk7CisgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5E
RVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbFJibyk7CisgICAg
Y3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FU
VEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsUmJvKTsKKworICAgIHRoaXMu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICBjdHguY2xlYXJD
b2xvcigwLCAwLCAwLCAxKTsKKyAgICBjdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgY3R4LmVu
YWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7Cisg
ICAgY3R4LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5LRUVQKTsKKyAgICBjdHguc3Rl
bmNpbEZ1bmMoZ2wuQUxXQVlTLCAxLCAweGZmKTsKKworICAgIGZsYXRTaGFkZXIuc2V0Q29sb3Io
Y3R4LCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KFsxLCAwLCAwLCAx
XSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICByclV0aWwuZHJhd1F1YWQoY3R4LCBmbGF0U2hhZGVy
SUQsIFstMSwgLTEsIC0xXSwgWzEsIDEsIDFdKTsKKworICAgIC8vIEJvdW5kIEZCTyB0byB0ZXN0
IHRhcmdldCBhbmQgZGVmYXVsdCB0byBvdGhlcgorICAgIGlmICh0aGlzLm1fYm91bmRUYXJnZXQg
IT0gZ2wuRlJBTUVCVUZGRVIpIHsKKyAgICAgICAgLy8gRHVtbXkgZmJvIGlzIHVzZWQgYXMgY29t
cGxlbWV0aW5nIHRhcmdldCAocmVhZCB3aGVuIGRpc2NhcmRpbmcgZHJhdyBmb3IgZXhhbXBsZSku
CisgICAgICAgIC8vIFxub3RlIEZyYW1ld29yayB0YWtlcyBjYXJlIG9mIGRlbGV0aW5nIG9iamVj
dHMgYXQgdGhlIGVuZCBvZiB0ZXN0IGNhc2UuCisgICAgICAgIHZhciBkdW1teVRhcmdldCA9IHRo
aXMubV9ib3VuZFRhcmdldCA9PSBnbC5EUkFXX0ZSQU1FQlVGRkVSID8gZ2wuUkVBRF9GUkFNRUJV
RkZFUiA6IGdsLkRSQVdfRlJBTUVCVUZGRVI7CisKKyAgICAgICAgdmFyIGR1bW15Q29sb3JSYm8g
PSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgZHVtbXlDb2xvclJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIDY0LCA2NCk7CisgICAgICAgIHZh
ciBkdW1teUZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjdHguYmluZEZy
YW1lYnVmZmVyKGR1bW15VGFyZ2V0LCBkdW1teUZibyk7CisgICAgICAgIGN0eC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihkdW1teVRhcmdldCwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRF
UkJVRkZFUiwgZHVtbXlDb2xvclJibyk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcih0
aGlzLm1fYm91bmRUYXJnZXQsIGZibyk7CisgICAgfQorCisgICAgY3R4LmludmFsaWRhdGVGcmFt
ZWJ1ZmZlcih0aGlzLm1faW52YWxpZGF0ZVRhcmdldCwgdGhpcy5tX2ludmFsaWRhdGVBdHRhY2ht
ZW50cyk7CisKKyAgICBpZiAodGhpcy5tX2JvdW5kVGFyZ2V0ICE9IGdsLkZSQU1FQlVGRkVSKQor
ICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworCisgICAg
aWYgKGlzQ29sb3JEaXNjYXJkZWQpIHsKKyAgICAgICAgLy8gQ29sb3Igd2FzIG5vdCBwcmVzZXJ2
ZWQgLSBmaWxsIHdpdGggZ3JlZW4uCisgICAgICAgIGN0eC5kaXNhYmxlKGdsLkRFUFRIX1RFU1Qp
OworICAgICAgICBjdHguZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworCisgICAgICAgIGZsYXRT
aGFkZXIuc2V0Q29sb3IoY3R4LCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRp
cGx5KFswLCAxLCAwLCAxXSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICAgICAgcnJVdGlsLmRyYXdR
dWFkKGN0eCwgZmxhdFNoYWRlcklELCBbLTEsIC0xLCAwXSwgWzEsIDEsIDBdKTsKKworICAgICAg
ICBjdHguZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgICAgICBjdHguZW5hYmxlKGdsLlNURU5D
SUxfVEVTVCk7CisgICAgfQorCisgICAgaWYgKGlzRGVwdGhEaXNjYXJkZWQpIHsKKyAgICAgICAg
Ly8gRGVwdGggd2FzIG5vdCBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5kZXB0aEZ1bmMoZ2wuQUxX
QVlTKTsKKyAgICB9CisKKyAgICBpZiAoIWlzU3RlbmNpbERpc2NhcmRlZCkgeworICAgICAgICAv
LyBTdGVuY2lsIHdhcyBwcmVzZXJ2ZWQuCisgICAgICAgIGN0eC5zdGVuY2lsRnVuYyhnbC5FUVVB
TCwgMSwgMHhmZik7CisgICAgfQorCisgICAgY3R4LmVuYWJsZShnbC5CTEVORCk7CisgICAgY3R4
LmJsZW5kRnVuYyhnbC5PTkUsIGdsLk9ORSk7CisgICAgY3R4LmJsZW5kRXF1YXRpb24oZ2wuRlVO
Q19BREQpOworCisgICAgZmxhdFNoYWRlci5zZXRDb2xvcihjdHgsIGZsYXRTaGFkZXJJRCwgZGVN
YXRoLmFkZChkZU1hdGgubXVsdGlwbHkoWzAsIDAsIDEsIDFdLCBjU2NhbGUpLCBjQmlhcykpOwor
ICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGZsYXRTaGFkZXJJRCwgWy0xLCAtMSwgMF0sIFsxLCAx
LCAwXSk7CisKKyAgICBlczNmRmJvVGVzdFV0aWwucmVhZFBpeGVscyhjdHgsIGRzdCwgMCwgMCwg
dGhpcy5nZXRXaWR0aCgpLCB0aGlzLmdldEhlaWdodCgpLCBjb2xvckZtdCwgY29sb3JGbXRJbmZv
Lmxvb2t1cFNjYWxlLCBjb2xvckZtdEluZm8ubG9va3VwQmlhcyk7Cit9OworCisvKioKKyogQGNv
bnN0cnVjdG9yCisqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyovCitlczNmRmJv
SW52YWxpZGF0ZVRlc3RzLkZib0ludmFsaWRhdGVUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIHRj
dVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2ludmFsaWRhdGUnLCAnRnJhbWVidWZmZXIg
aW52YWxpZGF0ZSB0ZXN0cycpOworfTsKKworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5GYm9JbnZh
bGlkYXRlVGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5wcm90b3R5cGUpOworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5GYm9JbnZhbGlkYXRlVGVzdHMu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib0ludmFsaWRhdGVUZXN0cy5GYm9JbnZhbGlk
YXRlVGVzdHM7CisKK2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuRmJvSW52YWxpZGF0ZVRlc3RzLnBy
b3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRlZmF1bHRGYkdyb3VwID0gbmV3
IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCdkZWZhdWx0JywgJ0RlZmF1bHQgZnJhbWVidWZmZXIgaW52
YWxpZGF0ZSB0ZXN0cycpOworICAgIHRoaXMuYWRkQ2hpbGQoZGVmYXVsdEZiR3JvdXApOworCisg
ICAgZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52
YWxpZGF0ZURlZmF1bHRGcmFtZWJ1ZmZlclJlbmRlckNhc2UoJ3JlbmRlcl9ub25lJywgJ0ludmFs
aWRhdGluZyBubyBmcmFtZWJ1ZmZlcnMgKHJlZiknLCAwKSk7CisgICAgZGVmYXVsdEZiR3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlclJlbmRlckNhc2UoJ3JlbmRlcl9jb2xvcicsICdSZW5kZXJpbmcgYWZ0ZXIgaW52YWxp
ZGF0aW5nIGNvbG9yYnVmZmVyJywgZ2wuQ09MT1JfQlVGRkVSX0JJVCkpOworICAgIGRlZmF1bHRG
Ykdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZh
dWx0RnJhbWVidWZmZXJSZW5kZXJDYXNlKCdyZW5kZXJfZGVwdGgnLCAnUmVuZGVyaW5nIGFmdGVy
IGludmFsaWRhdGluZyBkZXB0aGJ1ZmZlcicsIGdsLkRFUFRIX0JVRkZFUl9CSVQpKTsKKyAgICBk
ZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlk
YXRlRGVmYXVsdEZyYW1lYnVmZmVyUmVuZGVyQ2FzZSgncmVuZGVyX3N0ZW5jaWwnLCAnUmVuZGVy
aW5nIGFmdGVyIGludmFsaWRhdGluZyBzdGVuY2lsYnVmZmVyJywgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUKSk7CisgICAgZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRl
VGVzdHMuSW52YWxpZGF0ZURlZmF1bHRGcmFtZWJ1ZmZlclJlbmRlckNhc2UoJ3JlbmRlcl9kZXB0
aF9zdGVuY2lsJywgJ1JlbmRlcmluZyBhZnRlciBpbnZhbGlkYXRpbmcgZGVwdGgtIGFuZCBzdGVu
Y2lsYnVmZmVycycsIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQp
KTsKKyAgICBkZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0
cy5JbnZhbGlkYXRlRGVmYXVsdEZyYW1lYnVmZmVyUmVuZGVyQ2FzZSgncmVuZGVyX2FsbCcsICdS
ZW5kZXJpbmcgYWZ0ZXIgaW52YWxpZGF0aW5nIGFsbCBidWZmZXJzJywgZ2wuQ09MT1JfQlVGRkVS
X0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAg
ICBkZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZh
bGlkYXRlRGVmYXVsdEZyYW1lYnVmZmVyQmluZENhc2UoJ2JpbmRfY29sb3InLCAnQmluZGluZyBm
Ym8gYWZ0ZXIgaW52YWxpZGF0aW5nIGNvbG9yYnVmZmVyJywgZ2wuQ09MT1JfQlVGRkVSX0JJVCkp
OworICAgIGRlZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3Rz
LkludmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJCaW5kQ2FzZSgnYmluZF9kZXB0aCcsICdCaW5k
aW5nIGZibyBhZnRlciBpbnZhbGlkYXRpbmcgZGVwdGhidWZmZXInLCBnbC5ERVBUSF9CVUZGRVJf
QklUKSk7CisgICAgZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRl
VGVzdHMuSW52YWxpZGF0ZURlZmF1bHRGcmFtZWJ1ZmZlckJpbmRDYXNlKCdiaW5kX3N0ZW5jaWwn
LCAnQmluZGluZyBmYm8gYWZ0ZXIgaW52YWxpZGF0aW5nIHN0ZW5jaWxidWZmZXInLCBnbC5TVEVO
Q0lMX0JVRkZFUl9CSVQpKTsKKyAgICBkZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZi
b0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdEZyYW1lYnVmZmVyQmluZENhc2UoJ2Jp
bmRfZGVwdGhfc3RlbmNpbCcsICdCaW5kaW5nIGZibyBhZnRlciBpbnZhbGlkYXRpbmcgZGVwdGgt
IGFuZCBzdGVuY2lsYnVmZmVycycsIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JV
RkZFUl9CSVQpKTsKKyAgICBkZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFs
aWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdEZyYW1lYnVmZmVyQmluZENhc2UoJ2JpbmRfYWxs
JywgJ0JpbmRpbmcgZmJvIGFmdGVyIGludmFsaWRhdGluZyBhbGwgYnVmZmVycycsIGdsLkNPTE9S
X0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklU
KSk7CisgICAgZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVz
dHMuSW52YWxpZGF0ZURlZmF1bHRTdWJGcmFtZWJ1ZmZlclJlbmRlckNhc2UoJ3N1Yl9yZW5kZXJf
Y29sb3InLCAnUmVuZGVyaW5nIGFmdGVyIGludmFsaWRhdGluZyBjb2xvcmJ1ZmZlcicsIGdsLkNP
TE9SX0JVRkZFUl9CSVQpKTsKKyAgICBkZWZhdWx0RmJHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZi
b0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVsdFN1YkZyYW1lYnVmZmVyUmVuZGVyQ2Fz
ZSgnc3ViX3JlbmRlcl9kZXB0aCcsICdSZW5kZXJpbmcgYWZ0ZXIgaW52YWxpZGF0aW5nIGRlcHRo
YnVmZmVyJywgZ2wuREVQVEhfQlVGRkVSX0JJVCkpOworICAgIGRlZmF1bHRGYkdyb3VwLmFkZENo
aWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVi
dWZmZXJSZW5kZXJDYXNlKCdzdWJfcmVuZGVyX3N0ZW5jaWwnLCAnUmVuZGVyaW5nIGFmdGVyIGlu
dmFsaWRhdGluZyBzdGVuY2lsYnVmZmVyJywgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAg
ZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxp
ZGF0ZURlZmF1bHRTdWJGcmFtZWJ1ZmZlclJlbmRlckNhc2UoJ3N1Yl9yZW5kZXJfZGVwdGhfc3Rl
bmNpbCcsICdSZW5kZXJpbmcgYWZ0ZXIgaW52YWxpZGF0aW5nIGRlcHRoLSBhbmQgc3RlbmNpbGJ1
ZmZlcnMnLCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7Cisg
ICAgZGVmYXVsdEZiR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52
YWxpZGF0ZURlZmF1bHRTdWJGcmFtZWJ1ZmZlclJlbmRlckNhc2UoJ3N1Yl9yZW5kZXJfYWxsJywg
J1JlbmRlcmluZyBhZnRlciBpbnZhbGlkYXRpbmcgYWxsIGJ1ZmZlcnMnLCBnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOwor
ICAgIGRlZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLklu
dmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVidWZmZXJCaW5kQ2FzZSgnc3ViX2JpbmRfY29sb3InLCAn
QmluZGluZyBmYm8gYWZ0ZXIgaW52YWxpZGF0aW5nIGNvbG9yYnVmZmVyJywgZ2wuQ09MT1JfQlVG
RkVSX0JJVCkpOworICAgIGRlZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxp
ZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVidWZmZXJCaW5kQ2FzZSgnc3ViX2Jp
bmRfZGVwdGgnLCAnQmluZGluZyBmYm8gYWZ0ZXIgaW52YWxpZGF0aW5nIGRlcHRoYnVmZmVyJywg
Z2wuREVQVEhfQlVGRkVSX0JJVCkpOworICAgIGRlZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5ldyBl
czNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0U3ViRnJhbWVidWZmZXJCaW5k
Q2FzZSgnc3ViX2JpbmRfc3RlbmNpbCcsICdCaW5kaW5nIGZibyBhZnRlciBpbnZhbGlkYXRpbmcg
c3RlbmNpbGJ1ZmZlcicsIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOworICAgIGRlZmF1bHRGYkdy
b3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0
U3ViRnJhbWVidWZmZXJCaW5kQ2FzZSgnc3ViX2JpbmRfZGVwdGhfc3RlbmNpbCcsICdCaW5kaW5n
IGZibyBhZnRlciBpbnZhbGlkYXRpbmcgZGVwdGgtIGFuZCBzdGVuY2lsYnVmZmVycycsIGdsLkRF
UFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICBkZWZhdWx0RmJH
cm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRGVmYXVs
dFN1YkZyYW1lYnVmZmVyQmluZENhc2UoJ3N1Yl9iaW5kX2FsbCcsICdCaW5kaW5nIGZibyBhZnRl
ciBpbnZhbGlkYXRpbmcgYWxsIGJ1ZmZlcnMnLCBnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQ
VEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOworICAgIGRlZmF1bHRGYkdy
b3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0
RnJhbWVidWZmZXJSZW5kZXJDYXNlKCdkcmF3X2ZyYW1lYnVmZmVyX2NvbG9yJywgJ0ludmFsaWRh
dGluZyBnbC5DT0xPUiBpbiBnbC5EUkFXX0ZSQU1FQlVGRkVSJywgZ2wuQ09MT1JfQlVGRkVSX0JJ
VCwgZ2wuRFJBV19GUkFNRUJVRkZFUikpOworICAgIGRlZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5l
dyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJSZW5k
ZXJDYXNlKCdkcmF3X2ZyYW1lYnVmZmVyX2FsbCcsICdJbnZhbGlkYXRpbmcgYWxsIGluIGdsLkRS
QVdfRlJBTUVCVUZGRVInLCBnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJ
VCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCwgZ2wuRFJBV19GUkFNRUJVRkZFUikpOworICAgIGRl
ZmF1bHRGYkdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRh
dGVEZWZhdWx0RnJhbWVidWZmZXJSZW5kZXJDYXNlKCdyZWFkX2ZyYW1lYnVmZmVyX2NvbG9yJywg
J0ludmFsaWRhdGluZyBnbC5DT0xPUiBpbiBnbC5SRUFEX0ZSQU1FQlVGRkVSJywgZ2wuQ09MT1Jf
QlVGRkVSX0JJVCwgZ2wuUkVBRF9GUkFNRUJVRkZFUikpOworICAgIGRlZmF1bHRGYkdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVEZWZhdWx0RnJhbWVi
dWZmZXJSZW5kZXJDYXNlKCdyZWFkX2ZyYW1lYnVmZmVyX2FsbCcsICdJbnZhbGlkYXRpbmcgYWxs
IGluIGdsLlJFQURfRlJBTUVCVUZGRVInLCBnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhf
QlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCwgZ2wuUkVBRF9GUkFNRUJVRkZFUikp
OworCisgICAgLy8gaW52YWxpZGF0ZS53aG9sZS4KKyAgICB2YXIgd2hvbGVGYm9Hcm91cCA9IG5l
dyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgnd2hvbGUnLCAnSW52YWxpZGF0aW5nIHdob2xlIGZyYW1l
YnVmZmVyIG9iamVjdCcpOworICAgIHRoaXMuYWRkQ2hpbGQod2hvbGVGYm9Hcm91cCk7CisgICAg
d2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlk
YXRlRmJvUmVuZGVyQ2FzZSgncmVuZGVyX25vbmUnLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRIMjRf
U1RFTkNJTDgsIDApKTsKKyAgICB3aG9sZUZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52
YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVGYm9SZW5kZXJDYXNlKCdyZW5kZXJfY29sb3InLCAnJywg
Z2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGdsLkNPTE9SX0JVRkZFUl9CSVQpKTsKKyAg
ICB3aG9sZUZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFs
aWRhdGVGYm9SZW5kZXJDYXNlKCdyZW5kZXJfZGVwdGgnLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRI
MjRfU1RFTkNJTDgsIGdsLkRFUFRIX0JVRkZFUl9CSVQpKTsKKyAgICB3aG9sZUZib0dyb3VwLmFk
ZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVGYm9SZW5kZXJDYXNl
KCdyZW5kZXJfc3RlbmNpbCcsICcnLCBnbC5SR0JBOCwgZ2wuREVQVEgyNF9TVEVOQ0lMOCwgZ2wu
U1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvUmVuZGVyQ2FzZSgncmVuZGVyX2RlcHRo
X3N0ZW5jaWwnLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGdsLkRFUFRIX0JV
RkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICB3aG9sZUZib0dyb3VwLmFk
ZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVGYm9SZW5kZXJDYXNl
KCdyZW5kZXJfYWxsJywgJycsIGdsLlJHQkE4LCBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5DT0xP
Ul9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJ
VCkpOworCisgICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVU
ZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX2NvbG9yJywgJycs
IGdsLlJHQkE4LCBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5DT0xPUl9CVUZGRVJfQklUKSk7Cisg
ICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZh
bGlkYXRlRmJvVW5iaW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX2RlcHRoJywgJycsIGdsLlJHQkE4
LCBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5ERVBUSF9CVUZGRVJfQklUKSk7CisgICAgd2hvbGVG
Ym9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJv
VW5iaW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX3N0ZW5jaWwnLCAnJywgZ2wuUkdCQTgsIGdsLkRF
UFRIMjRfU1RFTkNJTDgsIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOworICAgIHdob2xlRmJvR3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1VuYmlu
ZFJlYWRDYXNlKCd1bmJpbmRfcmVhZF9kZXB0aF9zdGVuY2lsJywgJycsIGdsLlJHQkE4LCBnbC5E
RVBUSDI0X1NURU5DSUw4LCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUKSk7CisgICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVU
ZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX2NvbG9yX3N0ZW5j
aWwnLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKworICAgIGlmIChnZXRDb21wYXRpYmxlRGVw
dGhTdGVuY2lsRm9ybWF0KCkgIT09IGdsLk5PTkUpIHsKKyAgICAgICAgd2hvbGVGYm9Hcm91cC5h
ZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kQmxp
dENhc2UoJ3VuYmluZF9ibGl0X2NvbG9yJywgJycsIDAsIGdsLkNPTE9SX0JVRkZFUl9CSVQpKTsK
KyAgICAgICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0
cy5JbnZhbGlkYXRlRmJvVW5iaW5kQmxpdENhc2UoJ3VuYmluZF9ibGl0X2RlcHRoJywgJycsIDAs
IGdsLkRFUFRIX0JVRkZFUl9CSVQpKTsKKyAgICAgICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVW5iaW5kQmxpdENhc2UoJ3Vu
YmluZF9ibGl0X3N0ZW5jaWwnLCAnJywgMCwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAg
ICAgIHdob2xlRmJvR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52
YWxpZGF0ZUZib1VuYmluZEJsaXRDYXNlKCd1bmJpbmRfYmxpdF9kZXB0aF9zdGVuY2lsJywgJycs
IDAsIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICAg
ICAgd2hvbGVGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZh
bGlkYXRlRmJvVW5iaW5kQmxpdENhc2UoJ3VuYmluZF9ibGl0X21zYWFfY29sb3InLCAnJywgNCwg
Z2wuQ09MT1JfQlVGRkVSX0JJVCkpOworICAgICAgICB3aG9sZUZib0dyb3VwLmFkZENoaWxkKG5l
dyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVGYm9VbmJpbmRCbGl0Q2FzZSgndW5i
aW5kX2JsaXRfbXNhYV9kZXB0aCcsICcnLCA0LCBnbC5ERVBUSF9CVUZGRVJfQklUKSk7CisgICAg
ICAgIHdob2xlRmJvR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52
YWxpZGF0ZUZib1VuYmluZEJsaXRDYXNlKCd1bmJpbmRfYmxpdF9tc2FhX3N0ZW5jaWwnLCAnJywg
NCwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAgICAgIHdob2xlRmJvR3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1VuYmluZEJsaXRDYXNl
KCd1bmJpbmRfYmxpdF9tc2FhX2RlcHRoX3N0ZW5jaWwnLCAnJywgNCwgZ2wuREVQVEhfQlVGRkVS
X0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOworICAgIH0KKworICAgIC8vIGludmFsaWRh
dGUuc3ViLgorICAgIHZhciBzdWJGYm9Hcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgn
c3ViJywgJ0ludmFsaWRhdGluZyBzdWJzZWN0aW9uIG9mIGZyYW1lYnVmZmVyIG9iamVjdCcpOwor
ICAgIHRoaXMuYWRkQ2hpbGQoc3ViRmJvR3JvdXApOworICAgIHN1YkZib0dyb3VwLmFkZENoaWxk
KG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9SZW5kZXJDYXNlKCdy
ZW5kZXJfbm9uZScsICcnLCBnbC5SR0JBOCwgZ2wuREVQVEgyNF9TVEVOQ0lMOCwgMCkpOworICAg
IHN1YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRh
dGVTdWJGYm9SZW5kZXJDYXNlKCdyZW5kZXJfY29sb3InLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRI
MjRfU1RFTkNJTDgsIGdsLkNPTE9SX0JVRkZFUl9CSVQpKTsKKyAgICBzdWJGYm9Hcm91cC5hZGRD
aGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvUmVuZGVyQ2Fz
ZSgncmVuZGVyX2RlcHRoJywgJycsIGdsLlJHQkE4LCBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5E
RVBUSF9CVUZGRVJfQklUKSk7CisgICAgc3ViRmJvR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGYm9J
bnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZVN1YkZib1JlbmRlckNhc2UoJ3JlbmRlcl9zdGVuY2ls
JywgJycsIGdsLlJHQkE4LCBnbC5ERVBUSDI0X1NURU5DSUw4LCBnbC5TVEVOQ0lMX0JVRkZFUl9C
SVQpKTsKKyAgICBzdWJGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0
cy5JbnZhbGlkYXRlU3ViRmJvUmVuZGVyQ2FzZSgncmVuZGVyX2RlcHRoX3N0ZW5jaWwnLCAnJywg
Z2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5T
VEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICBzdWJGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZi
b0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvUmVuZGVyQ2FzZSgncmVuZGVyX2FsbCcs
ICcnLCBnbC5SR0JBOCwgZ2wuREVQVEgyNF9TVEVOQ0lMOCwgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8
IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKworICAgIHN1
YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVT
dWJGYm9VbmJpbmRSZWFkQ2FzZSgndW5iaW5kX3JlYWRfY29sb3InLCAnJywgZ2wuUkdCQTgsIGds
LkRFUFRIMjRfU1RFTkNJTDgsIGdsLkNPTE9SX0JVRkZFUl9CSVQpKTsKKyAgICBzdWJGYm9Hcm91
cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvVW5i
aW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX2RlcHRoJywgJycsIGdsLlJHQkE4LCBnbC5ERVBUSDI0
X1NURU5DSUw4LCBnbC5ERVBUSF9CVUZGRVJfQklUKSk7CisgICAgc3ViRmJvR3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZVN1YkZib1VuYmluZFJlYWRD
YXNlKCd1bmJpbmRfcmVhZF9zdGVuY2lsJywgJycsIGdsLlJHQkE4LCBnbC5ERVBUSDI0X1NURU5D
SUw4LCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICBzdWJGYm9Hcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvVW5iaW5kUmVhZENhc2Uo
J3VuYmluZF9yZWFkX2RlcHRoX3N0ZW5jaWwnLCAnJywgZ2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RF
TkNJTDgsIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAg
ICBzdWJGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlk
YXRlU3ViRmJvVW5iaW5kUmVhZENhc2UoJ3VuYmluZF9yZWFkX2NvbG9yX3N0ZW5jaWwnLCAnJywg
Z2wuUkdCQTgsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5T
VEVOQ0lMX0JVRkZFUl9CSVQpKTsKKworICAgIGlmIChnZXRDb21wYXRpYmxlRGVwdGhTdGVuY2ls
Rm9ybWF0KCkgIT09IGdsLk5PTkUpIHsKKyAgICAgICAgc3ViRmJvR3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZVN1YkZib1VuYmluZEJsaXRDYXNlKCd1
bmJpbmRfYmxpdF9jb2xvcicsICcnLCAwLCBnbC5DT0xPUl9CVUZGRVJfQklUKSk7CisgICAgICAg
IHN1YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRh
dGVTdWJGYm9VbmJpbmRCbGl0Q2FzZSgndW5iaW5kX2JsaXRfZGVwdGgnLCAnJywgMCwgZ2wuREVQ
VEhfQlVGRkVSX0JJVCkpOworICAgICAgICBzdWJGYm9Hcm91cC5hZGRDaGlsZChuZXcgZXMzZkZi
b0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvVW5iaW5kQmxpdENhc2UoJ3VuYmluZF9i
bGl0X3N0ZW5jaWwnLCAnJywgMCwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAgICAgIHN1
YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVT
dWJGYm9VbmJpbmRCbGl0Q2FzZSgndW5iaW5kX2JsaXRfZGVwdGhfc3RlbmNpbCcsICcnLCAwLCBn
bC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAgICAgIHN1
YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVT
dWJGYm9VbmJpbmRCbGl0Q2FzZSgndW5iaW5kX2JsaXRfbXNhYV9jb2xvcicsICcnLCA0LCBnbC5D
T0xPUl9CVUZGRVJfQklUKSk7CisgICAgICAgIHN1YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNm
RmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRhdGVTdWJGYm9VbmJpbmRCbGl0Q2FzZSgndW5iaW5k
X2JsaXRfbXNhYV9kZXB0aCcsICcnLCA0LCBnbC5ERVBUSF9CVUZGRVJfQklUKSk7CisgICAgICAg
IHN1YkZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkludmFsaWRh
dGVTdWJGYm9VbmJpbmRCbGl0Q2FzZSgndW5iaW5kX2JsaXRfbXNhYV9zdGVuY2lsJywgJycsIDQs
IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpOworICAgICAgICBzdWJGYm9Hcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlU3ViRmJvVW5iaW5kQmxpdENhc2Uo
J3VuYmluZF9ibGl0X21zYWFfZGVwdGhfc3RlbmNpbCcsICcnLCA0LCBnbC5ERVBUSF9CVUZGRVJf
QklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSk7CisgICAgfQorICAgIC8vIGludmFsaWRhdGUu
Zm9ybWF0LgorICAgIHZhciBudW1Gb3JtYXRTdWJHcm91cHMgPSAzOworICAgIHZhciBmb3JtYXRH
cm91cCA9IFtdOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1Gb3JtYXRTdWJHcm91cHM7
ICsraWkpIHsKKyAgICAgICAgZm9ybWF0R3JvdXBbaWldID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBU
ZXN0KCdmb3JtYXQnLCAnSW52YWxpZGF0aW5nIGZyYW1lYnVmZmVycyB3aXRoIHNlbGVjdGVkIGZv
cm1hdHMnKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChmb3JtYXRHcm91cFtpaV0pOworICAgIH0K
KyAgICAvLyBDb2xvciBidWZmZXIgZm9ybWF0cy4KKyAgICB2YXIgY29sb3JGb3JtYXRzID0gWwor
ICAgICAgICAvLyBSR0JBIGZvcm1hdHMKKyAgICAgICAgZ2wuUkdCQTMySSwKKyAgICAgICAgZ2wu
UkdCQTMyVUksCisgICAgICAgIGdsLlJHQkExNkksCisgICAgICAgIGdsLlJHQkExNlVJLAorICAg
ICAgICBnbC5SR0JBOCwKKyAgICAgICAgZ2wuUkdCQThJLAorICAgICAgICBnbC5SR0JBOFVJLAor
ICAgICAgICBnbC5TUkdCOF9BTFBIQTgsCisgICAgICAgIGdsLlJHQjEwX0EyLAorICAgICAgICBn
bC5SR0IxMF9BMlVJLAorICAgICAgICBnbC5SR0JBNCwKKyAgICAgICAgZ2wuUkdCNV9BMSwKKwor
ICAgICAgICAvLyBSR0IgZm9ybWF0cworICAgICAgICBnbC5SR0I4LAorICAgICAgICBnbC5SR0I1
NjUsCisKKyAgICAgICAgLy8gUkcgZm9ybWF0cworICAgICAgICBnbC5SRzMySSwKKyAgICAgICAg
Z2wuUkczMlVJLAorICAgICAgICBnbC5SRzE2SSwKKyAgICAgICAgZ2wuUkcxNlVJLAorICAgICAg
ICBnbC5SRzgsCisgICAgICAgIGdsLlJHOEksCisgICAgICAgIGdsLlJHOFVJLAorCisgICAgICAg
IC8vIFIgZm9ybWF0cworICAgICAgICBnbC5SMzJJLAorICAgICAgICBnbC5SMzJVSSwKKyAgICAg
ICAgZ2wuUjE2SSwKKyAgICAgICAgZ2wuUjE2VUksCisgICAgICAgIGdsLlI4LAorICAgICAgICBn
bC5SOEksCisgICAgICAgIGdsLlI4VUksCisKKyAgICAgICAgLy8gZ2wuRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdAorICAgICAgICBnbC5SR0JBMzJGLAorICAgICAgICBnbC5SR0JBMTZGLAorICAgICAg
ICBnbC5SMTFGX0cxMUZfQjEwRiwKKyAgICAgICAgZ2wuUkczMkYsCisgICAgICAgIGdsLlJHMTZG
LAorICAgICAgICBnbC5SMzJGLAorICAgICAgICBnbC5SMTZGCisgICAgXTsKKworICAgIC8vIERl
cHRoL3N0ZW5jaWxidWZmZXIgZm9ybWF0cy4KKyAgICB2YXIgZGVwdGhTdGVuY2lsRm9ybWF0cyA9
IFsKKyAgICAgICAgZ2wuREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgICBnbC5ERVBUSF9DT01Q
T05FTlQyNCwKKyAgICAgICAgZ2wuREVQVEhfQ09NUE9ORU5UMTYsCisgICAgICAgIGdsLkRFUFRI
MzJGX1NURU5DSUw4LAorICAgICAgICBnbC5ERVBUSDI0X1NURU5DSUw4LAorICAgICAgICBnbC5T
VEVOQ0lMX0lOREVYOAorICAgIF07CisKKyAgICAvLyBDb2xvcmJ1ZmZlciB0ZXN0cyB1c2UgaW52
YWxpZGF0ZSwgdW5iaW5kLCByZWFkIHRlc3QuCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
Y29sb3JGb3JtYXRzLmxlbmd0aDsgbmR4KyspCisgICAgICAgIGZvcm1hdEdyb3VwW25keCAlIG51
bUZvcm1hdFN1Ykdyb3Vwc10uYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52
YWxpZGF0ZVN1YkZib1VuYmluZFJlYWRDYXNlKGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1l
KGNvbG9yRm9ybWF0c1tuZHhdKSwgJycsIGNvbG9yRm9ybWF0c1tuZHhdLCBnbC5OT05FLCBnbC5D
T0xPUl9CVUZGRVJfQklUKSk7CisKKyAgICAvLyBEZXB0aC9zdGVuY2lsYnVmZmVyIHRlc3RzIHVz
ZSBpbnZhbGlkYXRlLCByZW5kZXIgdGVzdC4KKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBk
ZXB0aFN0ZW5jaWxGb3JtYXRzLmxlbmd0aDsgbmR4KyspCisgICAgICAgIGZvcm1hdEdyb3VwW25k
eCAlIG51bUZvcm1hdFN1Ykdyb3Vwc10uYWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVz
dHMuSW52YWxpZGF0ZVN1YkZib1JlbmRlckNhc2UoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5h
bWUoZGVwdGhTdGVuY2lsRm9ybWF0c1tuZHhdKSwgJycsIGdsLlJHQkE4LCBkZXB0aFN0ZW5jaWxG
b3JtYXRzW25keF0sIGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQp
KTsKKworICAgIC8vIGludmFsaWRhdGUudGFyZ2V0CisgICAgdmFyIHRhcmdldEdyb3VwID0gbmV3
IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCd0YXJnZXQnLCAnSW52YWxpZGF0ZSB0YXJnZXQnKTsKKyAg
ICB0aGlzLmFkZENoaWxkKHRhcmdldEdyb3VwKTsKKworICAgIHZhciBzX3RhcmdldENhc2VzID0g
WworICAgICAgICBbJ2ZyYW1lYnVmZmVyX2ZyYW1lYnVmZmVyJywgZ2wuRlJBTUVCVUZGRVIsIGds
LkZSQU1FQlVGRkVSXSwKKyAgICAgICAgWydmcmFtZWJ1ZmZlcl9yZWFkX2ZyYW1lYnVmZmVyJywg
Z2wuRlJBTUVCVUZGRVIsIGdsLlJFQURfRlJBTUVCVUZGRVJdLAorICAgICAgICBbJ2ZyYW1lYnVm
ZmVyX2RyYXdfZnJhbWVidWZmZXInLCBnbC5GUkFNRUJVRkZFUiwgZ2wuRFJBV19GUkFNRUJVRkZF
Ul0sCisgICAgICAgIFsncmVhZF9mcmFtZWJ1ZmZlcl9mcmFtZWJ1ZmZlcicsIGdsLlJFQURfRlJB
TUVCVUZGRVIsIGdsLkZSQU1FQlVGRkVSXSwKKyAgICAgICAgWydyZWFkX2ZyYW1lYnVmZmVyX3Jl
YWRfZnJhbWVidWZmZXInLCBnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5SRUFEX0ZSQU1FQlVGRkVS
XSwKKyAgICAgICAgWydyZWFkX2ZyYW1lYnVmZmVyX2RyYXdfZnJhbWVidWZmZXInLCBnbC5SRUFE
X0ZSQU1FQlVGRkVSLCBnbC5EUkFXX0ZSQU1FQlVGRkVSXSwKKyAgICAgICAgWydkcmF3X2ZyYW1l
YnVmZmVyX2ZyYW1lYnVmZmVyJywgZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuRlJBTUVCVUZGRVJd
LAorICAgICAgICBbJ2RyYXdfZnJhbWVidWZmZXJfcmVhZF9mcmFtZWJ1ZmZlcicsIGdsLkRSQVdf
RlJBTUVCVUZGRVIsIGdsLlJFQURfRlJBTUVCVUZGRVJdLAorICAgICAgICBbJ2RyYXdfZnJhbWVi
dWZmZXJfZHJhd19mcmFtZWJ1ZmZlcicsIGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkRSQVdfRlJB
TUVCVUZGRVJdCisgICAgXTsKKworICAgIHZhciBjb2xvckF0dGFjaG1lbnQgPSBbZ2wuQ09MT1Jf
QVRUQUNITUVOVDBdOworICAgIHZhciBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gW2dsLkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVF07CisgICAgdmFyIGFsbEF0dGFjaG1lbnRzID0gW2dsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlRd
OworCisgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBzX3RhcmdldENhc2VzLmxl
bmd0aDsgY2FzZU5keCsrKSB7CisgICAgICAgIHZhciBiYXNlTmFtZSA9IHNfdGFyZ2V0Q2FzZXNb
Y2FzZU5keF1bMF07CisgICAgICAgIHZhciBpbnZhbGlkYXRlVCA9IHNfdGFyZ2V0Q2FzZXNbY2Fz
ZU5keF1bMV07CisgICAgICAgIHZhciBib3VuZFQgPSBzX3RhcmdldENhc2VzW2Nhc2VOZHhdWzFd
OworCisgICAgICAgIHRhcmdldEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvSW52YWxpZGF0ZVRl
c3RzLkludmFsaWRhdGVGYm9UYXJnZXRDYXNlKGJhc2VOYW1lICsgJ19jb2xvcicsICcnLCBib3Vu
ZFQsIGludmFsaWRhdGVULCBjb2xvckF0dGFjaG1lbnQpKTsKKyAgICAgICAgdGFyZ2V0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuSW52YWxpZGF0ZUZib1RhcmdldENh
c2UoYmFzZU5hbWUgKyAnX2RlcHRoX3N0ZW5jaWwnLCAnJywgYm91bmRULCBpbnZhbGlkYXRlVCwg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudCkpOworICAgICAgICB0YXJnZXRHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkZib0ludmFsaWRhdGVUZXN0cy5JbnZhbGlkYXRlRmJvVGFyZ2V0Q2FzZShiYXNlTmFt
ZSArICdfYWxsJywgJycsIGJvdW5kVCwgaW52YWxpZGF0ZVQsIGFsbEF0dGFjaG1lbnRzKSk7Cisg
ICAgfQorCit9OworCisvKioKKyogUnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdD
b250ZXh0fSBjb250ZXh0CisqLworZXMzZkZib0ludmFsaWRhdGVUZXN0cy5ydW4gPSBmdW5jdGlv
bihjb250ZXh0LCByYW5nZSkgeworICAgIGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0
IFJvb3QgcGFyYW1ldGVycworICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAg
ICBzdGF0ZS5zZXRSb290KG5ldyBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLkZib0ludmFsaWRhdGVU
ZXN0cygpKTsKKworICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVz
dCBzZXJpZXMuCisgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxsTmFt
ZSgpKTsKKyAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7
CisKKyAgICB0cnkgeworICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICBzdGF0ZS5zZXRS
YW5nZShyYW5nZSk7CisgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENh
c2UucnVuVGVzdENhc2VzKCk7CisgICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVz
dEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmRmJvSW52YWxpZGF0ZVRlc3RzLnJ1biB0ZXN0
cycsIGZhbHNlKTsKKyAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAg
IH0KK307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZGYm9NdWx0aXNhbXBsZVRl
c3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI2MWRhMDA3MzQxMmE3MDg0ZTYwZGQ2NTJlZTVhMWM2YjE3ZjU5YTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZXMzZkZib011bHRpc2FtcGxlVGVzdHMuanMKQEAgLTAsMCArMSwzNzcg
QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBP
cGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZib011bHRpc2FtcGxlVGVzdHMnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Blbmds
LmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVz
dENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVzdFV0aWwn
KTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIGVzM2ZGYm9NdWx0aXNhbXBsZVRl
c3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvTXVsdGlzYW1wbGVUZXN0czsKK3ZhciBlczNm
RmJvVGVzdENhc2UgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0Q2FzZTsKK3ZhciBlczNm
RmJvVGVzdFV0aWwgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbDsKK3ZhciB0Y3VU
ZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgdGN1U3VyZmFjZSA9
IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZTsKK3ZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VSR0JBOwordmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1
SW1hZ2VDb21wYXJlOwordmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1
cmU7Cit2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGls
OwordmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIg
ZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIGdsdVRleHR1cmVV
dGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKK3ZhciByclV0aWwgPSBmcmFt
ZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsOworCisvKiogQHR5cGUge1dlYkdMMlJlbmRl
cmluZ0NvbnRleHR9ICovIHZhciBnbDsKKwordmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsK
KyAgICBpZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOwor
fTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNm
RmJvVGVzdENhc2UuRmJvVGVzdENhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2xvckZv
cm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aFN0ZW5jaWxGb3JtYXQKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IHNpemUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtU2Ft
cGxlcworICAgICAqLworICAgIGVzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLkJhc2ljRmJvTXVsdGlz
YW1wbGVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgY29sb3JGb3JtYXQsIGRlcHRoU3RlbmNp
bEZvcm1hdCwgc2l6ZSwgbnVtU2FtcGxlcykgeworICAgICAgICBlczNmRmJvVGVzdENhc2UuRmJv
VGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubV9jb2xvckZvcm1hdCA9IGNvbG9yRm9ybWF0OworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy5tX2RlcHRoU3RlbmNpbEZvcm1hdCA9IGRlcHRoU3RlbmNpbEZv
cm1hdDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fc2l6ZSA9
IHNpemU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtU2FtcGxlcyA9
IG51bVNhbXBsZXM7CisgICAgfTsKKworICAgIGVzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLkJhc2lj
RmJvTXVsdGlzYW1wbGVDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkZib1Rlc3RD
YXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZkZib011bHRpc2FtcGxlVGVzdHMu
QmFzaWNGYm9NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib011
bHRpc2FtcGxlVGVzdHMuQmFzaWNGYm9NdWx0aXNhbXBsZUNhc2U7CisKKyAgICBlczNmRmJvTXVs
dGlzYW1wbGVUZXN0cy5CYXNpY0Zib011bHRpc2FtcGxlQ2FzZS5wcm90b3R5cGUucHJlQ2hlY2sg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQodGhpcy5tX2Nv
bG9yRm9ybWF0KTsKKyAgICAgICAgaWYgKCF0aGlzLmNoZWNrU2FtcGxlQ291bnQodGhpcy5tX2Nv
bG9yRm9ybWF0LCB0aGlzLm1fbnVtU2FtcGxlcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKHRoaXMubV9kZXB0aFN0ZW5jaWxGb3JtYXQgIT0gZ2wuTk9ORSkgewor
ICAgICAgICAgICAgdGhpcy5jaGVja0Zvcm1hdFN1cHBvcnQodGhpcy5tX2RlcHRoU3RlbmNpbEZv
cm1hdCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tTYW1wbGVDb3VudCh0aGlzLm1fZGVw
dGhTdGVuY2lsRm9ybWF0LCB0aGlzLm1fbnVtU2FtcGxlcykpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOyAvLyBObyBleGNlcHRp
b24gdGhyb3duCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5T
dXJmYWNlfSBkc3QKKyAgICAgKi8KKyAgICBlczNmRmJvTXVsdGlzYW1wbGVUZXN0cy5CYXNpY0Zi
b011bHRpc2FtcGxlQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAg
ICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgY29sb3JGbXQgPSBnbHVUZXh0dXJl
VXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9jb2xvckZvcm1hdCk7CisgICAgICAgIC8q
KiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgZGVwdGhTdGVuY2lsRm10
ID0gdGhpcy5tX2RlcHRoU3RlbmNpbEZvcm1hdCAhPSBnbC5OT05FID8gZ2x1VGV4dHVyZVV0aWwu
bWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZGVwdGhTdGVuY2lsRm9ybWF0KSA6IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmVGb3JtYXQobnVsbCwgbnVsbCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGV4dHVyZVV0aWwuVGV4dHVyZUZvcm1hdEluZm99ICovIHZhciBjb2xvckZtdEluZm8gPSB0Y3VU
ZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhjb2xvckZtdCk7CisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGRlcHRoID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRl
eHR1cmUuQ2hhbm5lbE9yZGVyLkRTOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBzdGVuY2lsID0gZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9y
ZGVyLlMgfHwgZGVwdGhTdGVuY2lsRm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVy
LkRTOworICAgICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcn0g
Ki8gdmFyIGdyYWRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKGVz
M2ZGYm9UZXN0VXRpbC5nZXRGcmFnbWVudE91dHB1dFR5cGUoY29sb3JGbXQpKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyfSAqLyB2YXIgZmxhdFNo
YWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyKGVzM2ZGYm9UZXN0VXRp
bC5nZXRGcmFnbWVudE91dHB1dFR5cGUoY29sb3JGbXQpKTsKKyAgICAgICAgdmFyIGdyYWRTaGFk
ZXJJRCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKS5jcmVhdGVQcm9ncmFtKGdyYWRTaGFkZXIp
OworICAgICAgICB2YXIgZmxhdFNoYWRlcklEID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLmNy
ZWF0ZVByb2dyYW0oZmxhdFNoYWRlcik7CisgICAgICAgIHZhciBtc2FhRmJvID0gbnVsbDsKKyAg
ICAgICAgdmFyIHJlc29sdmVGYm8gPSBudWxsOworICAgICAgICB2YXIgbXNhYUNvbG9yUmJvID0g
bnVsbDsKKyAgICAgICAgdmFyIHJlc29sdmVDb2xvclJibyA9IG51bGw7CisgICAgICAgIHZhciBt
c2FhRGVwdGhTdGVuY2lsUmJvID0gbnVsbDsKKyAgICAgICAgdmFyIHJlc29sdmVEZXB0aFN0ZW5j
aWxSYm8gPSBudWxsOworCisgICAgICAgIC8vIENyZWF0ZSBmcmFtZWJ1ZmZlcnMuCisgICAgICAg
IG1zYWFDb2xvclJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY3R4LmJp
bmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBtc2FhQ29sb3JSYm8pOworICAgICAgICBj
dHgucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5t
X251bVNhbXBsZXMsIHRoaXMubV9jb2xvckZvcm1hdCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9z
aXplWzFdKTsKKworICAgICAgICBpZiAoZGVwdGggfHwgc3RlbmNpbCkgeworICAgICAgICAgICAg
bXNhYURlcHRoU3RlbmNpbFJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAg
ICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbXNhYURlcHRoU3RlbmNp
bFJibyk7CisgICAgICAgICAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGds
LlJFTkRFUkJVRkZFUiwgdGhpcy5tX251bVNhbXBsZXMsIHRoaXMubV9kZXB0aFN0ZW5jaWxGb3Jt
YXQsIHRoaXMubV9zaXplWzBdLCB0aGlzLm1fc2l6ZVsxXSk7CisgICAgICAgIH0KKworICAgICAg
ICBtc2FhRmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGN0eC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG1zYWFGYm8pOworICAgICAgICBjdHguZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5S
RU5ERVJCVUZGRVIsIG1zYWFDb2xvclJibyk7CisgICAgICAgIGlmIChkZXB0aCkKKyAgICAgICAg
ICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhf
QVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBtc2FhRGVwdGhTdGVuY2lsUmJvKTsKKyAgICAg
ICAgaWYgKHN0ZW5jaWwpCisgICAgICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBt
c2FhRGVwdGhTdGVuY2lsUmJvKTsKKworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAg
ICAgdGhpcy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAg
ICByZXNvbHZlQ29sb3JSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGN0
eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVzb2x2ZUNvbG9yUmJvKTsKKyAg
ICAgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIs
IDAsIHRoaXMubV9jb2xvckZvcm1hdCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXplWzFdKTsK
KworICAgICAgICBpZiAoZGVwdGggfHwgc3RlbmNpbCkgeworICAgICAgICAgICAgcmVzb2x2ZURl
cHRoU3RlbmNpbFJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgIGN0
eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVzb2x2ZURlcHRoU3RlbmNpbFJi
byk7CisgICAgICAgICAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJF
TkRFUkJVRkZFUiwgMCwgdGhpcy5tX2RlcHRoU3RlbmNpbEZvcm1hdCwgdGhpcy5tX3NpemVbMF0s
IHRoaXMubV9zaXplWzFdKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmVGYm8gPSBjdHgu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgcmVzb2x2ZUZibyk7CisgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwg
cmVzb2x2ZUNvbG9yUmJvKTsKKyAgICAgICAgaWYgKGRlcHRoKQorICAgICAgICAgICAgY3R4LmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBnbC5SRU5ERVJCVUZGRVIsIHJlc29sdmVEZXB0aFN0ZW5jaWxSYm8pOworICAgICAgICBpZiAo
c3RlbmNpbCkKKyAgICAgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJlc29sdmVE
ZXB0aFN0ZW5jaWxSYm8pOworCisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAgICAgICB0
aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisgICAgICAgIGN0
eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG1zYWFGYm8pOworICAgICAgICBjdHgu
dmlld3BvcnQoMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXplWzFdKTsKKworICAgICAg
ICAvLyBDbGVhciBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgorICAgICAgICBjdHguY2xlYXJC
dWZmZXJmaShnbC5ERVBUSF9TVEVOQ0lMLCAwLCAxLjAsIDApOworCisgICAgICAgIC8vIEZpbGwg
TVNBQSBmYm8gd2l0aCBncmFkaWVudCwgZGVwdGggPSBbLTEuLjFdCisgICAgICAgIGN0eC5lbmFi
bGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAgIGdyYWRTaGFkZXIuc2V0R3JhZGllbnQodGhpcy5n
ZXRDdXJyZW50Q29udGV4dCgpLCBncmFkU2hhZGVySUQsIGNvbG9yRm10SW5mby52YWx1ZU1pbiwg
Y29sb3JGbXRJbmZvLnZhbHVlTWF4KTsKKworICAgICAgICByclV0aWwuZHJhd1F1YWQodGhpcy5n
ZXRDdXJyZW50Q29udGV4dCgpLCBncmFkU2hhZGVySUQsIFstMS4wLCAtMS4wLCAtMS4wXSwgWzEu
MCwgMS4wLCAxLjBdKTsKKworICAgICAgICAvLyBSZW5kZXIgcmFuZG9tLWNvbG9yZWQgcXVhZHMu
CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIG51bVF1YWRzID0gODsKKworICAg
ICAgICAvLyBUaGUgY2hvaWNlIG9mIHJhbmRvbSBzZWVkIGFmZmVjdHMgdGhlIGNvcnJlY3RuZXNz
IG9mIHRoZSB0ZXN0cywKKyAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBib3VuZGFy
eSBjb25kaXRpb25zIHdoaWNoIGFyZW4ndCBoYW5kbGVkCisgICAgICAgIC8vIGNvcnJlY3RseSBl
dmVuIGluIHRoZSBDKysgZEVRUCB0ZXN0cy4KKyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRvbS5S
YW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKDcpOworCisgICAgICAgIGN0
eC5kZXB0aEZ1bmMoZ2wuQUxXQVlTKTsKKyAgICAgICAgY3R4LmVuYWJsZShnbC5TVEVOQ0lMX1RF
U1QpOworICAgICAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAwLCAweGZmKTsKKyAgICAg
ICAgY3R4LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5JTkNSKTsKKworICAgICAgICBm
b3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1RdWFkczsgbmR4KyspIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgciA9IHJuZC5nZXRGbG9hdCgpOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBnID0gcm5kLmdldEZsb2F0KCk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGIgPSBybmQuZ2V0RmxvYXQoKTsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYSA9IHJuZC5nZXRGbG9hdCgpOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MCA9IHJuZC5nZXRGbG9hdCgtMS4wLCAx
LjApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5MCA9IHJuZC5nZXRG
bG9hdCgtMS4wLCAxLjApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB6
MCA9IHJuZC5nZXRGbG9hdCgtMS4wLCAxLjApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB4MSA9IHJuZC5nZXRGbG9hdCgtMS4wLCAxLjApOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB5MSA9IHJuZC5nZXRGbG9hdCgtMS4wLCAxLjApOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB6MSA9IHJuZC5nZXRGbG9hdCgtMS4w
LCAxLjApOworCisgICAgICAgICAgICBmbGF0U2hhZGVyLnNldENvbG9yKHRoaXMuZ2V0Q3VycmVu
dENvbnRleHQoKSwgZmxhdFNoYWRlcklELCBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShbciwg
ZywgYiwgYV0sIGRlTWF0aC5zdWJ0cmFjdChjb2xvckZtdEluZm8udmFsdWVNYXgsIGNvbG9yRm10
SW5mby52YWx1ZU1pbikpLCBjb2xvckZtdEluZm8udmFsdWVNaW4pKTsKKyAgICAgICAgICAgIHJy
VXRpbC5kcmF3UXVhZCh0aGlzLmdldEN1cnJlbnRDb250ZXh0KCksIGZsYXRTaGFkZXJJRCwgW3gw
LCB5MCwgejBdLCBbeDEsIHkxLCB6MV0pOworICAgICAgICB9CisKKyAgICAgICAgY3R4LmRpc2Fi
bGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAgIGN0eC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7
CisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworCisgICAgICAgIC8vIFJlc29sdmUgdXNpbmcg
Z2xCbGl0RnJhbWVidWZmZXIoKS4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFX
X0ZSQU1FQlVGRkVSLCByZXNvbHZlRmJvKTsKKyAgICAgICAgY3R4LmJsaXRGcmFtZWJ1ZmZlcigw
LCAwLCB0aGlzLm1fc2l6ZVswXSwgdGhpcy5tX3NpemVbMV0sIDAsIDAsIHRoaXMubV9zaXplWzBd
LCB0aGlzLm1fc2l6ZVsxXSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IChkZXB0aCA/IGdsLkRFUFRI
X0JVRkZFUl9CSVQgOiAwKSB8IChzdGVuY2lsID8gZ2wuU1RFTkNJTF9CVUZGRVJfQklUIDogMCks
IGdsLk5FQVJFU1QpOworCisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFN
RUJVRkZFUiwgcmVzb2x2ZUZibyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBudW1TdGVwczsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVwOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgYzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzOworICAg
ICAgICBpZiAoZGVwdGgpIHsKKyAgICAgICAgICAgIC8vIFZpc3VhbGl6ZSBkZXB0aC4KKyAgICAg
ICAgICAgIG51bVN0ZXBzID0gODsKKyAgICAgICAgICAgIHN0ZXAgPSAyLjAgLyBudW1TdGVwczsK
KyAgICAgICAgICAgIGN0eC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAgICAgICBjdHgu
ZGVwdGhGdW5jKGdsLkxFU1MpOworICAgICAgICAgICAgY3R4LmRlcHRoTWFzayhmYWxzZSk7Cisg
ICAgICAgICAgICBjdHguY29sb3JNYXNrKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworCisg
ICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1TdGVwczsgbmR4KyspIHsKKyAg
ICAgICAgICAgICAgICBkID0gLTEuMCArIHN0ZXAgKiBuZHg7CisgICAgICAgICAgICAgICAgYyA9
IG5keCAvIChudW1TdGVwcyAtIDEpOworCisgICAgICAgICAgICAgICAgZmxhdFNoYWRlci5zZXRD
b2xvcih0aGlzLmdldEN1cnJlbnRDb250ZXh0KCksIGZsYXRTaGFkZXJJRCwgZGVNYXRoLmFkZChk
ZU1hdGgubXVsdGlwbHkoWzAuMCwgMC4wLCBjLCAxLjBdLCBkZU1hdGguc3VidHJhY3QoY29sb3JG
bXRJbmZvLnZhbHVlTWF4LCBjb2xvckZtdEluZm8udmFsdWVNaW4pKSwgY29sb3JGbXRJbmZvLnZh
bHVlTWluKSk7CisgICAgICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKHRoaXMuZ2V0Q3VycmVu
dENvbnRleHQoKSwgZmxhdFNoYWRlcklELCBbLTEuMCwgLTEuMCwgZF0sIFsxLjAsIDEuMCwgZF0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjdHguZGlzYWJsZShnbC5ERVBUSF9URVNU
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGVuY2lsKSB7CisgICAgICAgICAgICAvLyBW
aXN1YWxpemUgc3RlbmNpbC4KKyAgICAgICAgICAgIG51bVN0ZXBzID0gNDsKKyAgICAgICAgICAg
IHN0ZXAgPSAxOworCisgICAgICAgICAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7Cisg
ICAgICAgICAgICBjdHguc3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLktFRVApOworICAg
ICAgICAgICAgY3R4LmNvbG9yTWFzayhmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKworICAg
ICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtU3RlcHM7IG5keCsrKSB7CisgICAg
ICAgICAgICAgICAgcyA9IHN0ZXAgKiBuZHg7CisgICAgICAgICAgICAgICAgYyA9IG5keCAvIChu
dW1TdGVwcyAtIDEpOworCisgICAgICAgICAgICAgICAgY3R4LnN0ZW5jaWxGdW5jKGdsLkVRVUFM
LCBzLCAweGZmKTsKKworICAgICAgICAgICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3IodGhpcy5n
ZXRDdXJyZW50Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRp
cGx5KFswLjAsIGMsIDAuMCwgMS4wXSwgZGVNYXRoLnN1YnRyYWN0KGNvbG9yRm10SW5mby52YWx1
ZU1heCwgY29sb3JGbXRJbmZvLnZhbHVlTWluKSksIGNvbG9yRm10SW5mby52YWx1ZU1pbikpOwor
ICAgICAgICAgICAgICAgIHJyVXRpbC5kcmF3UXVhZCh0aGlzLmdldEN1cnJlbnRDb250ZXh0KCks
IGZsYXRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGN0eC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLnJlYWRQaXhlbHNVc2luZ0Zvcm1hdChkc3QsIDAsIDAs
IHRoaXMubV9zaXplWzBdLCB0aGlzLm1fc2l6ZVsxXSwgY29sb3JGbXQsIGNvbG9yRm10SW5mby5s
b29rdXBTY2FsZSwgY29sb3JGbXRJbmZvLmxvb2t1cEJpYXMpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVmZXJlbmNlCisgICAgICogQHBh
cmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJlc3VsdAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCisgICAgZXMzZkZib011bHRpc2FtcGxlVGVzdHMuQmFzaWNGYm9NdWx0aXNhbXBs
ZUNhc2UucHJvdG90eXBlLmNvbG9yQ29tcGFyZSA9IGZ1bmN0aW9uKHJlZmVyZW5jZSwgcmVzdWx0
KSB7CisgICAgICAgIC8qKiBAY29uc3Qge3RjdVJHQkEuUkdCQX0gKi8gdmFyIHRocmVzaG9sZCA9
IHRjdVJHQkEubWF4KGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXRUaHJlc2hvbGQodGhpcy5tX2Nv
bG9yRm9ybWF0KSwgdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cygxMiwgMTIsIDEyLCAxMikpOwor
ICAgICAgICByZXR1cm4gdGN1SW1hZ2VDb21wYXJlLmJpbGluZWFyQ29tcGFyZSgnUmVzdWx0Jywg
J0ltYWdlIGNvbXBhcmlzb24gcmVzdWx0JywgcmVmZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQu
Z2V0QWNjZXNzKCksIHRocmVzaG9sZCwgdGN1SW1hZ2VDb21wYXJlLkNvbXBhcmVMb2dNb2RlLlJF
U1VMVCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJm
YWNlfSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmRmJvTXVsdGlzYW1w
bGVUZXN0cy5CYXNpY0Zib011bHRpc2FtcGxlQ2FzZS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0
aW9uKHJlZmVyZW5jZSwgcmVzdWx0KSB7CisgICAgICAgIGlmICh0aGlzLm1fZGVwdGhTdGVuY2ls
Rm9ybWF0ICE9IGdsLk5PTkUpCisgICAgICAgICAgICByZXR1cm4gZXMzZkZib1Rlc3RDYXNlLkZi
b1Rlc3RDYXNlLnByb3RvdHlwZS5jb21wYXJlKHJlZmVyZW5jZSwgcmVzdWx0KTsgLy8gRmJvVGVz
dENhc2UuY29tcGFyZQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xv
ckNvbXBhcmUocmVmZXJlbmNlLCByZXN1bHQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAg
ICovCisgICAgZXMzZkZib011bHRpc2FtcGxlVGVzdHMuRmJvTXVsdGlzYW1wbGVUZXN0cyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdtc2Fh
JywgJ011bHRpc2FtcGxlIEZCTyB0ZXN0cycpOworICAgIH07CisKKyAgICBlczNmRmJvTXVsdGlz
YW1wbGVUZXN0cy5GYm9NdWx0aXNhbXBsZVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
dGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmRmJvTXVsdGlzYW1wbGVU
ZXN0cy5GYm9NdWx0aXNhbXBsZVRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGYm9N
dWx0aXNhbXBsZVRlc3RzLkZib011bHRpc2FtcGxlVGVzdHM7CisKKyAgICBlczNmRmJvTXVsdGlz
YW1wbGVUZXN0cy5GYm9NdWx0aXNhbXBsZVRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvckZvcm1h
dHMgPSBbCisgICAgICAgICAgICAvLyBSR0JBIGZvcm1hdHMKKyAgICAgICAgICAgIGdsLlJHQkE4
LAorICAgICAgICAgICAgZ2wuU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgZ2wuUkdCMTBfQTIs
CisgICAgICAgICAgICBnbC5SR0JBNCwKKyAgICAgICAgICAgIGdsLlJHQjVfQTEsCisKKyAgICAg
ICAgICAgIC8vIFJHQiBmb3JtYXRzCisgICAgICAgICAgICBnbC5SR0I4LAorICAgICAgICAgICAg
Z2wuUkdCNTY1LAorCisgICAgICAgICAgICAvLyBSRyBmb3JtYXRzCisgICAgICAgICAgICBnbC5S
RzgsCisKKyAgICAgICAgICAgIC8vIFIgZm9ybWF0cworICAgICAgICAgICAgZ2wuUjgsCisKKyAg
ICAgICAgICAgIC8vIGdsLkVYVF9jb2xvcl9idWZmZXJfZmxvYXQKKyAgICAgICAgICAgIC8vIE11
bHRpLXNhbXBsZSBmbG9hdGluZy1wb2ludCBjb2xvciBidWZmZXJzIGNhbiBiZSBvcHRpb25hbCBz
dXBwb3J0ZWQsIHNlZSBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9leHRl
bnNpb25zL0VYVF9jb2xvcl9idWZmZXJfZmxvYXQvCisgICAgICAgICAgICBnbC5SR0JBMzJGLAor
ICAgICAgICAgICAgZ2wuUkdCQTE2RiwKKyAgICAgICAgICAgIGdsLlIxMUZfRzExRl9CMTBGLAor
ICAgICAgICAgICAgZ2wuUkczMkYsCisgICAgICAgICAgICBnbC5SRzE2RiwKKyAgICAgICAgICAg
IGdsLlIzMkYsCisgICAgICAgICAgICBnbC5SMTZGCisgICAgICAgIF07CisKKyAgICAgICAgLyoq
IEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGRlcHRoU3RlbmNpbEZvcm1hdHMgPSBbCisg
ICAgICAgICAgICBnbC5ERVBUSF9DT01QT05FTlQzMkYsCisgICAgICAgICAgICBnbC5ERVBUSF9D
T01QT05FTlQyNCwKKyAgICAgICAgICAgIGdsLkRFUFRIX0NPTVBPTkVOVDE2LAorICAgICAgICAg
ICAgZ2wuREVQVEgzMkZfU1RFTkNJTDgsCisgICAgICAgICAgICBnbC5ERVBUSDI0X1NURU5DSUw4
LAorICAgICAgICAgICAgZ2wuU1RFTkNJTF9JTkRFWDgKKyAgICAgICAgXTsKKworICAgICAgICAv
KiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc2FtcGxlQ291bnRzID0gWzIsIDQsIDhd
OworCisgICAgICAgIGZvciAodmFyIHNhbXBsZUNudE5keCBpbiBzYW1wbGVDb3VudHMpIHsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2FtcGxlcyA9IHNhbXBsZUNvdW50
c1tzYW1wbGVDbnROZHhdOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0gKi8KKyAgICAgICAgICAgIHZhciBzYW1wbGVDb3VudEdyb3VwID0gdGN1VGVzdENhc2Uu
bmV3VGVzdChzYW1wbGVzICsgJ19zYW1wbGVzJywgJycpOworICAgICAgICAgICAgdGhpcy5hZGRD
aGlsZChzYW1wbGVDb3VudEdyb3VwKTsKKworICAgICAgICAgICAgLy8gQ29sb3IgZm9ybWF0cy4K
KyAgICAgICAgICAgIGZvciAodmFyIGZtdE5keCBpbiBjb2xvckZvcm1hdHMpCisgICAgICAgICAg
ICAgICAgc2FtcGxlQ291bnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib011bHRpc2FtcGxlVGVz
dHMuQmFzaWNGYm9NdWx0aXNhbXBsZUNhc2UoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5hbWUo
Y29sb3JGb3JtYXRzW2ZtdE5keF0pLCAnJywgY29sb3JGb3JtYXRzW2ZtdE5keF0sIGdsLk5PTkUs
IFsxMTksIDEzMV0sIHNhbXBsZXMpKTsKKworICAgICAgICAgICAgLy8gRGVwdGgvc3RlbmNpbCBm
b3JtYXRzLgorICAgICAgICAgICAgZm9yICh2YXIgZm10TmR4IGluIGRlcHRoU3RlbmNpbEZvcm1h
dHMpCisgICAgICAgICAgICAgICAgc2FtcGxlQ291bnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZi
b011bHRpc2FtcGxlVGVzdHMuQmFzaWNGYm9NdWx0aXNhbXBsZUNhc2UoZXMzZkZib1Rlc3RVdGls
LmdldEZvcm1hdE5hbWUoZGVwdGhTdGVuY2lsRm9ybWF0c1tmbXROZHhdKSwgJycsIGdsLlJHQkE4
LCBkZXB0aFN0ZW5jaWxGb3JtYXRzW2ZtdE5keF0sIFsxMTksIDEzMV0sIHNhbXBsZXMpKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICBlczNmRmJvTXVsdGlzYW1wbGVUZXN0cy5ydW4gPSBmdW5j
dGlvbihjb250ZXh0LCByYW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8v
U2V0IHVwIHJvb3QgVGVzdAorICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7
CisKKyAgICAgICAgdmFyIHRlc3QgPSBuZXcgZXMzZkZib011bHRpc2FtcGxlVGVzdHMuRmJvTXVs
dGlzYW1wbGVUZXN0cygpOworICAgICAgICB2YXIgdGVzdE5hbWUgPSB0ZXN0LmZ1bGxOYW1lKCk7
CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSB0ZXN0LmdldERlc2NyaXB0aW9uKCk7CisK
KyAgICAgICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9v
dCh0ZXN0KTsKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0
ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAg
ICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9uKTsKKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgLy9DcmVhdGUgdGVzdCBjYXNlcworICAgICAgICAgICAgdGVzdC5pbml0KCk7CisgICAg
ICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2Up
OworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2Uu
cnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAg
ICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmRmJvTXVsdGlzYW1wbGVUZXN0
cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVy
bWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmRmJvUmVuZGVyVGVzdC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvUmVuZGVyVGVzdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODIyOWRlNDQ3YjEyN2QyMzBhYWRhYTYxMWQ0MzUyYjkxNWYwNGE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZGYm9SZW5kZXJUZXN0LmpzCkBAIC0wLDAgKzEs
MjM4OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9n
cmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlk
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvUmVuZGVyVGVzdCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuY29tbW9uLnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24u
dGN1UGl4ZWxGb3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JB
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJh
bmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29udGV4dCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJyk7Citn
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsJyk7CisKK2dvb2cu
c2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZXMzZkZib1JlbmRlclRlc3QgPSBmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0OworICAgIHZhciBlczNmRmJvVGVzdFV0aWwgPSBm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbDsKKyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9
IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsKKyAgICB2YXIgZ2x1VGV4dHVyZVV0aWwg
PSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOworICAgIHZhciB0Y3VJbWFnZUNvbXBh
cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKKyAgICB2YXIgdGN1TG9nSW1h
Z2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlOworICAgIHZhciB0Y3VQaXhlbEZvcm1h
dCA9IGZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQ7CisgICAgdmFyIHRjdVJHQkEgPSBm
cmFtZXdvcmsuY29tbW9uLnRjdVJHQkE7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21t
b24udGN1U3VyZmFjZTsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZTsKKyAgICB2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRl
eHR1cmVVdGlsOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1h
dGg7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207
CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7Cisg
ICAgdmFyIGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlVXRpbDsKKyAgICB2YXIg
c2dsckdMQ29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENv
bnRleHQ7CisgICAgdmFyIHNnbHJSZWZlcmVuY2VDb250ZXh0ID0KKyAgICAgICAgZnJhbWV3b3Jr
Lm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQ7CisgICAgdmFyIHJy
VXRpbCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWw7CisKKyAgICAvKiogQHR5
cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZhciBnbDsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYnVmZmVyc18KKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IGNvbG9yVHlwZV8KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGNvbG9y
Rm9ybWF0XworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVwdGhTdGVuY2lsVHlwZV8KKyAgICAg
KiBAcGFyYW0ge251bWJlcj19IGRlcHRoU3RlbmNpbEZvcm1hdF8KKyAgICAgKiBAcGFyYW0ge251
bWJlcj19IHdpZHRoXworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gaGVpZ2h0XworICAgICAqIEBw
YXJhbSB7bnVtYmVyPX0gc2FtcGxlc18KKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5G
Ym9Db25maWcgPSBmdW5jdGlvbigKKyAgICAgICAgYnVmZmVyc18sIGNvbG9yVHlwZV8sIGNvbG9y
Rm9ybWF0XywgZGVwdGhTdGVuY2lsVHlwZV8sCisgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdF8s
IHdpZHRoXywgaGVpZ2h0Xywgc2FtcGxlc18KKyAgICApIHsKKyAgICAgICAgLy8gQnVmZmVyIGJp
dCBtYXNrIChnbC5DT0xPUl9CVUZGRVJfQklUfGdsLkRFUFRIX0JVRkZFUl9CSVR8Li4uKQorICAg
ICAgICB0aGlzLmJ1ZmZlcnMgPSBidWZmZXJzXyA/IGJ1ZmZlcnNfIDogMDsKKyAgICAgICAgLy8g
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuUkVOREVSQlVGRkVSCisgICAg
ICAgIHRoaXMuY29sb3JUeXBlID0gY29sb3JUeXBlXyA/IGNvbG9yVHlwZV8gOiBnbC5OT05FOwor
ICAgICAgICAvLyBJbnRlcm5hbCBmb3JtYXQgZm9yIGNvbG9yIGJ1ZmZlciB0ZXh0dXJlIG9yIHJl
bmRlcmJ1ZmZlcgorICAgICAgICB0aGlzLmNvbG9yRm9ybWF0ID0gY29sb3JGb3JtYXRfID8gY29s
b3JGb3JtYXRfIDogZ2wuTk9ORTsKKyAgICAgICAgdGhpcy5kZXB0aFN0ZW5jaWxUeXBlID0gZGVw
dGhTdGVuY2lsVHlwZV8/CisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxUeXBlXyA6IGdsLk5PTkU7
CisgICAgICAgIHRoaXMuZGVwdGhTdGVuY2lsRm9ybWF0ID0gZGVwdGhTdGVuY2lsRm9ybWF0XyA/
CisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxGb3JtYXRfIDogZ2wuTk9ORTsKKyAgICAgICAgdGhp
cy53aWR0aCA9IHdpZHRoXyA/IHdpZHRoXyA6IDA7CisgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVp
Z2h0XyA/IGhlaWdodF8gOiAwOworICAgICAgICB0aGlzLnNhbXBsZXMgPSBzYW1wbGVzXz8gc2Ft
cGxlc18gOiAwOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdHlw
ZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICAgZXMzZkZib1JlbmRlclRl
c3QuZ2V0VHlwZU5hbWUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEOiByZXR1cm4gJ3RleDJkJzsKKyAgICAg
ICAgICAgIGNhc2UgZ2wuUkVOREVSQlVGRkVSOiByZXR1cm4gJ3Jibyc7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1Vua25vd24gdHlwZScpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAnU2hvdWxkIG5vdCBnZXQgdG8gdGhpcyBwb2ludCc7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBl
czNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWcucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIG5hbWUgPSAnJzsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCh0
aGlzLmJ1ZmZlcnMgJiBnbC5DT0xPUl9CVUZGRVJfQklUKSAhPSAwLAorICAgICAgICAgICAgJ0Nv
bG9yIGJ1ZmZlciBpcyBub3Qgc3BlY2lmaWVkJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIG5h
bWUgKz0gZXMzZkZib1JlbmRlclRlc3QuZ2V0VHlwZU5hbWUodGhpcy5jb2xvclR5cGUpICsgJ18n
ICsKKyAgICAgICAgICAgICAgICBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZSh0aGlzLmNv
bG9yRm9ybWF0KTsKKworICAgICAgICBpZiAodGhpcy5idWZmZXJzICYgZ2wuREVQVEhfQlVGRkVS
X0JJVCkKKyAgICAgICAgICAgIG5hbWUgKz0gJ19kZXB0aCc7CisgICAgICAgIGlmICh0aGlzLmJ1
ZmZlcnMgJiBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpCisgICAgICAgICAgICBuYW1lICs9ICdfc3Rl
bmNpbCc7CisKKyAgICAgICAgaWYgKHRoaXMuYnVmZmVycyAmIChnbC5ERVBUSF9CVUZGRVJfQklU
IHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSkKKyAgICAgICAgICAgIG5hbWUgKz0gJ18nICsgZXMz
ZkZib1JlbmRlclRlc3QuZ2V0VHlwZU5hbWUodGhpcy5kZXB0aFN0ZW5jaWxUeXBlKSArCisgICAg
ICAgICAgICAgICAgICAgJ18nICsgZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5hbWUodGhpcy5k
ZXB0aFN0ZW5jaWxGb3JtYXQpOworCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgICogQHJldHVybiB7QXJy
YXk8c3RyaW5nPn0KKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5nZXRFbmFibGluZ0V4
dGVuc2lvbnMgPSBmdW5jdGlvbihmb3JtYXQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxz
dHJpbmc+fSAqLyB2YXIgb3V0ID0gW107CisKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuUkdCMTZGOgorICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoZmFsc2UsICJOb3QgcGFydCBvZiB0aGUgdGVzdGVkIGZvcm1hdHMiLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTE2RjoK
KyAgICAgICAgICAgIGNhc2UgZ2wuUkcxNkY6CisgICAgICAgICAgICBjYXNlIGdsLlIxNkY6Cisg
ICAgICAgICAgICBjYXNlIGdsLlJHQkEzMkY6CisgICAgICAgICAgICBjYXNlIGdsLlJHQjMyRjoK
KyAgICAgICAgICAgIGNhc2UgZ2wuUjExRl9HMTFGX0IxMEY6CisgICAgICAgICAgICBjYXNlIGds
LlJHMzJGOgorICAgICAgICAgICAgY2FzZSBnbC5SMzJGOgorICAgICAgICAgICAgICAgIG91dC5w
dXNoKCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb3V0Owor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9zZ2xyR0xDb250ZXh0LkdMQ29udGV4
dHxzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fQorICAgICAqIGNvbnRleHQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEByZXR1cm4geyp9CisgICAgICov
CisgICAgZXMzZkZib1JlbmRlclRlc3QuaXNFeHRlbnNpb25TdXBwb3J0ZWQgPSBmdW5jdGlvbihj
b250ZXh0LCBuYW1lKSB7CisgICAgICAgIHJldHVybiBjb250ZXh0LmdldEV4dGVuc2lvbihuYW1l
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/c2dsckdMQ29udGV4dC5HTENv
bnRleHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0KKyAgICAgKiBjb250
ZXh0CisgICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSByZXF1aXJlZEV4dHMKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LmlzQW55RXh0
ZW5zaW9uU3VwcG9ydGVkID0gZnVuY3Rpb24oCisgICAgICAgIGNvbnRleHQsIHJlcXVpcmVkRXh0
cykgeworCisgICAgICAgIGlmICghcmVxdWlyZWRFeHRzIHx8IHJlcXVpcmVkRXh0cy5sZW5ndGgg
PT0gMCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGZvciAodmFyIGV4dE5k
eCA9IDA7IGV4dE5keCA8IHJlcXVpcmVkRXh0cy5sZW5ndGg7IGV4dE5keCsrKSB7CisgICAgICAg
ICAgICB2YXIgZXh0ZW5zaW9uID0gcmVxdWlyZWRFeHRzW2V4dE5keF07CisKKyAgICAgICAgICAg
IGlmIChlczNmRmJvUmVuZGVyVGVzdC5pc0V4dGVuc2lvblN1cHBvcnRlZChjb250ZXh0LCBleHRl
bnNpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5
fSBsaXN0CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcAorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5qb2luID0gZnVuY3Rpb24obGlzdCwg
c2VwKSB7CisgICAgICAgIHZhciBvdXQgPSAnJzsKKworICAgICAgICBmb3IgKHZhciBlbGVtTmR4
ID0gMDsgZWxlbU5keCA8IGxpc3QubGVuZ3RoOyBlbGVtTmR4KyspIHsKKyAgICAgICAgICAgIGlm
IChlbGVtTmR4ICE9IDApCisgICAgICAgICAgICAgICAgb3V0ICs9IHNlcDsKKyAgICAgICAgICAg
IG91dCArPSBsaXN0W2VsZW1OZHhdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91dDsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/c2dsckdMQ29udGV4dC5HTENvbnRl
eHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0KKyAgICAgKiBjb250ZXh0
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemVkRm9ybWF0CisgICAgICovCisgICAgZXMzZkZi
b1JlbmRlclRlc3QuY2hlY2tDb2xvckZvcm1hdFN1cHBvcnQgPSBmdW5jdGlvbihjb250ZXh0LCBz
aXplZEZvcm1hdCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciBy
ZXF1aXJlZEV4dHMgPQorICAgICAgICAgICAgZXMzZkZib1JlbmRlclRlc3QuZ2V0RW5hYmxpbmdF
eHRlbnNpb25zKHNpemVkRm9ybWF0KTsKKworICAgICAgICBpZiAoIWVzM2ZGYm9SZW5kZXJUZXN0
LmlzQW55RXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnRleHQsIHJlcXVpcmVkRXh0cykpIHsKKyAgICAg
ICAgICAgIHZhciBlcnJNc2cgPSAnRm9ybWF0IG5vdCBzdXBwb3J0ZWQsIHJlcXVpcmVzICcgKyAo
CisgICAgICAgICAgICAgICAgKHJlcXVpcmVkRXh0cy5sZW5ndGggPT0gMSkgPyByZXF1aXJlZEV4
dHNbMF0gOgorICAgICAgICAgICAgICAgICcgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICcgKworICAg
ICAgICAgICAgICAgIHJlcXVpcmVkRXh0cy5qb2luKCcsICcpCisgICAgICAgICAgICApOworICAg
ICAgICAgICAgY2hlY2tNZXNzYWdlKGZhbHNlLCBlcnJNc2cpOworCisgICAgICAgICAgICB0aHJv
dyBuZXcgVGVzdEZhaWxlZEV4Y2VwdGlvbihlcnJNc2cpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7P3NnbHJHTENvbnRl
eHQuR0xDb250ZXh0fHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9CisgICAg
ICogY29udGV4dAorICAgICAqIEBwYXJhbSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSBj
b25maWcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5BbnlGcmFtZWJ1
ZmZlcj19IGZibworICAgICAqIEBwYXJhbSB7c2dsclJlZmVyZW5jZUNvbnRleHQuQW55UmVuZGVy
YnVmZmVyPX0gY29sb3JCdWZmZXJOYW1lCisgICAgICogQHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29u
dGV4dC5BbnlSZW5kZXJidWZmZXI9fSBkZXB0aFN0ZW5jaWxCdWZmZXJOYW1lCisgICAgICovCisg
ICAgZXMzZkZib1JlbmRlclRlc3QuRnJhbWVidWZmZXIgPSBmdW5jdGlvbigKKyAgICAgICAgY29u
dGV4dCwgY29uZmlnLCB3aWR0aCwgaGVpZ2h0LCBmYm8sCisgICAgICAgIGNvbG9yQnVmZmVyTmFt
ZSwgZGVwdGhTdGVuY2lsQnVmZmVyTmFtZSkgeworCisgICAgICAgIHRoaXMubV9jb25maWcgPSBj
b25maWc7CisgICAgICAgIHRoaXMubV9jb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgdGhpcy5t
X2ZyYW1lYnVmZmVyID0gZmJvID8gZmJvIDogbnVsbDsKKyAgICAgICAgdGhpcy5tX2NvbG9yQnVm
ZmVyID0gY29sb3JCdWZmZXJOYW1lID8gY29sb3JCdWZmZXJOYW1lIDogbnVsbDsKKyAgICAgICAg
dGhpcy5tX2RlcHRoU3RlbmNpbEJ1ZmZlciA9IGRlcHRoU3RlbmNpbEJ1ZmZlck5hbWUgPworICAg
ICAgICAgICAgZGVwdGhTdGVuY2lsQnVmZmVyTmFtZSA6IG51bGw7CisKKyAgICAgICAgLy8gVmVy
aWZ5IHRoYXQgY29sb3IgZm9ybWF0IGlzIHN1cHBvcnRlZAorICAgICAgICBlczNmRmJvUmVuZGVy
VGVzdC5jaGVja0NvbG9yRm9ybWF0U3VwcG9ydChjb250ZXh0LCBjb25maWcuY29sb3JGb3JtYXQp
OworCisgICAgICAgIGlmICghdGhpcy5tX2ZyYW1lYnVmZmVyKQorICAgICAgICAgICAgdGhpcy5t
X2ZyYW1lYnVmZmVyID0gY29udGV4dC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb250
ZXh0LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5tX2ZyYW1lYnVmZmVyKTsK
KworICAgICAgICBpZiAodGhpcy5tX2NvbmZpZy5idWZmZXJzICYgKGdsLkNPTE9SX0JVRkZFUl9C
SVQpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9jb25maWcuY29sb3JUeXBlKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEOgorICAgICAgICAgICAgICAgICAgICB0
aGlzLm1fY29sb3JCdWZmZXIgPSB0aGlzLmNyZWF0ZVRleDJEKAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIChjb2xvckJ1ZmZlck5hbWUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2NvbmZpZy5jb2xvckZvcm1hdCwgd2lkdGgsIGhl
aWdodAorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICAgICAgICAgICAgICAgICAgICBn
bC5URVhUVVJFXzJELCB0aGlzLm1fY29sb3JCdWZmZXIsIDAKKyAgICAgICAgICAgICAgICAgICAg
KTsKKworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
Z2wuUkVOREVSQlVGRkVSOgorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY29sb3JCdWZmZXIg
PSB0aGlzLmNyZWF0ZVJibygKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2Vi
R0xSZW5kZXJidWZmZXJ9ICovIChjb2xvckJ1ZmZlck5hbWUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5tX2NvbmZpZy5jb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodAorICAgICAgICAg
ICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5SRU5ERVJCVUZG
RVIsIHRoaXMubV9jb2xvckJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5zdXBwb3J0ZWQgdHlwZScpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9jb25maWcuYnVmZmVycyAmCisgICAg
ICAgICAgICAoZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCkpIHsK
KworICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1fY29uZmlnLmRlcHRoU3RlbmNpbFR5cGUpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgICAg
IHRoaXMubV9kZXB0aFN0ZW5jaWxCdWZmZXIgPSB0aGlzLmNyZWF0ZVRleDJEKAorICAgICAgICAg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAoZGVwdGhTdGVuY2lsQnVmZmVyTmFtZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLm1fY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodAorICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIGdsLlJFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X2RlcHRoU3RlbmNpbEJ1ZmZlciA9IHRoaXMuY3JlYXRlUmJvKAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtXZWJHTFJlbmRlcmJ1ZmZlcn0gKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIChkZXB0aFN0ZW5jaWxCdWZmZXJOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMubV9jb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0CisgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5zdXBwb3J0
ZWQgdHlwZScpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIg
bmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBiaXQgPSBuZHggPyBn
bC5TVEVOQ0lMX0JVRkZFUl9CSVQgOiBnbC5ERVBUSF9CVUZGRVJfQklUOworICAgICAgICAgICAg
dmFyIHBvaW50ID0gbmR4ID8gZ2wuU1RFTkNJTF9BVFRBQ0hNRU5UIDogZ2wuREVQVEhfQVRUQUNI
TUVOVDsKKworICAgICAgICAgICAgaWYgKCh0aGlzLm1fY29uZmlnLmJ1ZmZlcnMgJiBiaXQpID09
IDApCisgICAgICAgICAgICAgICAgY29udGludWU7IC8qIE5vdCB1c2VkLiAqLworCisgICAgICAg
ICAgICBzd2l0Y2ggKHRoaXMubV9jb25maWcuZGVwdGhTdGVuY2lsVHlwZSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5m
cmFtZWJ1ZmZlclRleHR1cmUyRCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLkZSQU1FQlVG
RkVSLCBwb2ludCwgZ2wuVEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV9kZXB0aFN0ZW5jaWxCdWZmZXIsIDAKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5SRU5ERVJCVUZGRVI6
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgcG9pbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9kZXB0aFN0ZW5jaWxCdWZmZXIK
KyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdJbnZhbGlkIGRlcHRoIHN0ZW5jaWwgdHlwZScpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtlczNmRmJvUmVuZGVyVGVzdC5G
Ym9Db25maWd9CisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuRnJhbWVidWZmZXIucHJv
dG90eXBlLmdldENvbmZpZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2Nv
bmZpZzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7P3NnbHJSZWZlcmVuY2VD
b250ZXh0LkFueUZyYW1lYnVmZmVyfQorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZy
YW1lYnVmZmVyLnByb3RvdHlwZS5nZXRGcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tX2ZyYW1lYnVmZmVyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHs/c2dsclJlZmVyZW5jZUNvbnRleHQuQW55UmVuZGVyYnVmZmVyfQorICAgICAqLwor
ICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZyYW1lYnVmZmVyLnByb3RvdHlwZS5nZXRDb2xvckJ1ZmZl
ciA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2NvbG9yQnVmZmVyOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHs/c2dsclJlZmVyZW5jZUNvbnRleHQuQW55
UmVuZGVyYnVmZmVyfQorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZyYW1lYnVmZmVy
LnByb3RvdHlwZS5nZXREZXB0aFN0ZW5jaWxCdWZmZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubV9kZXB0aFN0ZW5jaWxCdWZmZXI7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIGRlaW5pdAorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZyYW1lYnVmZmVyLnBy
b3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuZGVs
ZXRlRnJhbWVidWZmZXIoCisgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJ9
ICovICh0aGlzLm1fZnJhbWVidWZmZXIpCisgICAgICAgICk7CisgICAgICAgIHRoaXMuZGVzdHJv
eUJ1ZmZlcih0aGlzLm1fY29sb3JCdWZmZXIsIHRoaXMubV9jb25maWcuY29sb3JUeXBlKTsKKyAg
ICAgICAgdGhpcy5kZXN0cm95QnVmZmVyKAorICAgICAgICAgICAgdGhpcy5tX2RlcHRoU3RlbmNp
bEJ1ZmZlciwgdGhpcy5tX2NvbmZpZy5kZXB0aFN0ZW5jaWxUeXBlCisgICAgICAgICk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIGNoZWNrQ29tcGxldGVuZXNzCisgICAgICovCisgICAgZXMz
ZkZib1JlbmRlclRlc3QuRnJhbWVidWZmZXIucHJvdG90eXBlLmNoZWNrQ29tcGxldGVuZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgdGhpcy5tX2ZyYW1lYnVmZmVyKTsKKyAgICAgICAgdmFyIHN0YXR1cyA9IHRo
aXMubV9jb250ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAg
ICAgICB0aGlzLm1fY29udGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworICAgICAgICBpZiAoc3RhdHVzICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IGVzM2ZGYm9UZXN0VXRpbC5GYm9JbmNvbXBsZXRlRXhjZXB0aW9uKHN0
YXR1cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1dlYkdMVGV4dHVyZXxz
Z2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfSBuYW1lCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKiBAcmV0dXJuIHs/V2ViR0xUZXh0dXJlfHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9CisgICAgICovCisgICAgZXMzZkZib1Jl
bmRlclRlc3QuRnJhbWVidWZmZXIucHJvdG90eXBlLmNyZWF0ZVRleDJEID0gZnVuY3Rpb24oCisg
ICAgICAgIG5hbWUsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCkgeworCisgICAgICAgIGlmICghbmFt
ZSkKKyAgICAgICAgICAgIG5hbWUgPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisK
KyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbmFtZSk7
CisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkREZWxlZ2F0ZSgKKyAgICAgICAgICAg
IGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodAorICAgICAgICApOworCisg
ICAgICAgIGlmICghZGVNYXRoLmRlSXNQb3dlck9mVHdvMzIod2lkdGgpIHx8CisgICAgICAgICAg
ICAhZGVNYXRoLmRlSXNQb3dlck9mVHdvMzIoaGVpZ2h0KSkgeworCisgICAgICAgICAgICAvLyBT
ZXQgd3JhcCBtb2RlIHRvIGNsYW1wIGZvciBOUE9UIEZCT3MKKyAgICAgICAgICAgIHRoaXMubV9j
b250ZXh0LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7CisgICAgICAg
ICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFCisgICAgICAgICAg
ICApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4UGFyYW1ldGVyaSgK
KyAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVAorICAgICAgICApOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAor
ICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUCisgICAgICAgICk7CisKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7P1dlYkdMUmVuZGVyYnVmZmVyfHNnbHJSZWZlcmVuY2VDb250ZXh0
LlJlbmRlcmJ1ZmZlcn0gbmFtZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0Cisg
ICAgICogQHJldHVybiB7P1dlYkdMUmVuZGVyYnVmZmVyfHNnbHJSZWZlcmVuY2VDb250ZXh0LlJl
bmRlcmJ1ZmZlcn0KKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5GcmFtZWJ1ZmZlci5w
cm90b3R5cGUuY3JlYXRlUmJvID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGZvcm1hdCwgd2lk
dGgsIGhlaWdodCkgeworCisgICAgICAgIGlmICghbmFtZSkKKyAgICAgICAgICAgIG5hbWUgPSB0
aGlzLm1fY29udGV4dC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgICAgICB0aGlzLm1fY29u
dGV4dC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbmFtZSk7CisgICAgICAgIHRo
aXMubV9jb250ZXh0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoCisgICAgICAgICAgICBnbC5SRU5ERVJC
VUZGRVIsIGZvcm1hdCwgd2lkdGgsIGhlaWdodAorICAgICAgICApOworCisgICAgICAgIHJldHVy
biBuYW1lOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9zZ2xyUmVmZXJlbmNl
Q29udGV4dC5BbnlSZW5kZXJidWZmZXJ9IG5hbWUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdHlw
ZQorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZyYW1lYnVmZmVyLnByb3RvdHlwZS5k
ZXN0cm95QnVmZmVyID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIHR5cGUpIHsKKworICAgICAg
ICBpZiAodHlwZSA9PSBnbC5URVhUVVJFXzJEIHx8IHR5cGUgPT0gZ2wuVEVYVFVSRV9DVUJFX01B
UCkKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LmRlbGV0ZVRleHR1cmUoLyoqIEB0eXBlIHs/
V2ViR0xUZXh0dXJlfSAqLyAobmFtZSkpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IGdsLlJF
TkRFUkJVRkZFUikKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LmRlbGV0ZVJlbmRlcmJ1ZmZl
cigKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUgez9XZWJHTFJlbmRlcmJ1ZmZlcn0gKi8gKG5h
bWUpCisgICAgICAgICAgICApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnRNc2dP
cHRpb25zKAorICAgICAgICAgICAgICAgIHR5cGUgPT0gZ2wuTk9ORSwgJ0ludmFsaWQgYnVmZmVy
IHR5cGUnLCBmYWxzZSwgdHJ1ZQorICAgICAgICAgICAgKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHs/c2dsckdMQ29udGV4dC5HTENvbnRleHR8c2dsclJlZmVyZW5jZUNvbnRl
eHQuUmVmZXJlbmNlQ29udGV4dH0KKyAgICAgKiBjb250ZXh0CisgICAgICogQHBhcmFtIHtXZWJH
TFRleHR1cmV8c2dsclJlZmVyZW5jZUNvbnRleHQuVGV4dHVyZUNvbnRhaW5lcn0gbmFtZQorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YVR5
cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aGVpZ2h0CisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuY3JlYXRlTWV0YWJhbGxzVGV4
MkQgPSBmdW5jdGlvbigKKyAgICAgICAgY29udGV4dCwgbmFtZSwgZm9ybWF0LCBkYXRhVHlwZSwg
d2lkdGgsIGhlaWdodCkgeworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0fSAqLyB2YXIgdGV4Rm9ybWF0ID0KKyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1h
cEdMVHJhbnNmZXJGb3JtYXQoZm9ybWF0LCBkYXRhVHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7
dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHZhciBsZXZlbCA9CisgICAgICAgICAgICBuZXcg
dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwodGV4Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAg
ICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aE1ldGFiYWxscygKKyAgICAgICAgICAgIGxldmVs
LmdldEFjY2VzcygpLCA1LCAvKm5hbWUgXiovIHdpZHRoIF4gaGVpZ2h0CisgICAgICAgICk7CisK
KyAgICAgICAgY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBuYW1lKTsKKyAgICAg
ICAgY29udGV4dC50ZXhJbWFnZTJEKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsCisgICAgICAgICAgICBkYXRhVHlwZSwgbGV2
ZWwuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICk7CisgICAgICAgIGNvbnRleHQu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJ
TkVBUik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P3NnbHJHTENvbnRleHQu
R0xDb250ZXh0fHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9CisgICAgICog
Y29udGV4dAorICAgICAqIEBwYXJhbSB7V2ViR0xUZXh0dXJlfHNnbHJSZWZlcmVuY2VDb250ZXh0
LlRleHR1cmVDb250YWluZXJ9IG5hbWUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGFUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdp
ZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqLworICAgIGVzM2ZGYm9S
ZW5kZXJUZXN0LmNyZWF0ZVF1YWRzVGV4MkQgPSBmdW5jdGlvbigKKyAgICAgICAgY29udGV4dCwg
bmFtZSwgZm9ybWF0LCBkYXRhVHlwZSwgd2lkdGgsIGhlaWdodCkgeworCisgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLworICAgICAgICB2YXIgdGV4Rm9ybWF0
ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdChmb3JtYXQsIGRhdGFUeXBlKTsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbH0gKi8KKyAgICAgICAg
dmFyIGxldmVsID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKHRleEZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7CisKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhSR0JBUXVhZHMobGV2
ZWwuZ2V0QWNjZXNzKCkpOworCisgICAgICAgIGNvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgbmFtZSk7CisgICAgICAgIGNvbnRleHQudGV4SW1hZ2UyRCgKKyAgICAgICAgICAgIGds
LlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwKKyAgICAgICAgICAgIGZv
cm1hdCwgZGF0YVR5cGUsIGxldmVsLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAgICAp
OworICAgICAgICBjb250ZXh0LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24K
KyAgICAgKiBAcGFyYW0ge2VzM2ZGYm9SZW5kZXJUZXN0LkZib0NvbmZpZ30gY29uZmlnCisgICAg
ICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2NyaXB0aW9uLCBjb25maWcpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIHRoaXMubV9jb25maWcgPSBjb25m
aWc7CisgICAgfTsKKworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UucHJvdG90
eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5
cGUpOworCisgICAgZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPQorICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJDYXNlOworCisg
ICAgLyoqCisgICAgICogTXVzdCBiZSBvdmVycmlkZGVuCisgICAgICogQHBhcmFtIHs/c2dsckdM
Q29udGV4dC5HTENvbnRleHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0K
KyAgICAgKiAgICAgIGZib0NvbnRleHQKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFj
ZX0gZHN0CisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90
b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oCisgICAgICAgIGZib0NvbnRleHQsIGRzdCkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IG92ZXJyaWRlJyk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICov
CisgICAgZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY2xlYXJDb2xvciA9IFswLjEyNSwgMC4yNSwgMC41
LCAxLjBdOworICAgICAgICAvKiogQHR5cGUgez9zdHJpbmd9ICovIHZhciBmYWlsUmVhc29uID0g
IiI7CisKKyAgICAgICAgLy8gUG9zaXRpb24gJiBzaXplIGZvciBjb250ZXh0CisgICAgICAgIHZh
ciBybmQgPSBuZXcgZGVSYW5kb20uZGVSYW5kb20oKTsKKyAgICAgICAgZGVSYW5kb20uZGVSYW5k
b21faW5pdChybmQsIGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKwor
ICAgICAgICB2YXIgd2lkdGggPSBNYXRoLm1pbihnbC5jYW52YXMud2lkdGgsIDEyOCk7CisgICAg
ICAgIHZhciBoZWlnaHQgPSBNYXRoLm1pbihnbC5jYW52YXMuaGVpZ2h0LCAxMjgpOworICAgICAg
ICB2YXIgeE1heCA9IGdsLmNhbnZhcy53aWR0aCAtIHdpZHRoICsgMTsKKyAgICAgICAgdmFyIHlN
YXggPSBnbC5jYW52YXMuaGVpZ2h0IC0gaGVpZ2h0ICsgMTsKKyAgICAgICAgdmFyIHggPSBNYXRo
LmFicyhkZVJhbmRvbS5kZVJhbmRvbV9nZXRJbnQocm5kKSkgJSB4TWF4OworICAgICAgICB2YXIg
eSA9IE1hdGguYWJzKGRlUmFuZG9tLmRlUmFuZG9tX2dldEludChybmQpKSAlIHlNYXg7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAgICAgIHZhciBnbGVz
M0ZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAgICAgIHZhciByZWZGcmFtZSA9
IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBnbGVzM0Vycm9yID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciByZWZFcnJvciA9IDA7CisKKyAgICAgICAgLy8gUmVuZGVyIHVzaW5nIEdM
RVMzCisgICAgICAgIC8qKgorICAgICAgICAgKiBAdHlwZSB7c2dsckdMQ29udGV4dC5HTENvbnRl
eHR8CisgICAgICAgICAqIHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9Cisg
ICAgICAgICAqLworICAgICAgICB2YXIgY29udGV4dDsKKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgY29udGV4dCA9IG5ldyBzZ2xyR0xDb250ZXh0LkdMQ29udGV4dChnbCwgW3gsIHksIHdp
ZHRoLCBoZWlnaHRdKTsKKworICAgICAgICAgICAgY29udGV4dC5jbGVhckNvbG9yKAorICAgICAg
ICAgICAgICAgIGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNs
ZWFyQ29sb3JbM10KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXIo
CisgICAgICAgICAgICAgICAgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8CisgICAgICAgICAgICAgICAg
Z2wuREVQVEhfQlVGRkVSX0JJVCB8CisgICAgICAgICAgICAgICAgZ2wuU1RFTkNJTF9CVUZGRVJf
QklUCisgICAgICAgICAgICApOworCisgICAgICAgICAgICB0aGlzLnJlbmRlcihjb250ZXh0LCBn
bGVzM0ZyYW1lKTsgLy8gQ2FsbCBhY3R1YWwgcmVuZGVyIGZ1bmMKKyAgICAgICAgICAgIGdsZXMz
RXJyb3IgPSBjb250ZXh0LmdldEVycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgZXMzZkZib1Rlc3RVdGlsLkZib0luY29t
cGxldGVFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBlLm1lc3NhZ2UgPSBXZWJHTFRlc3RV
dGlscy5nbEVudW1Ub1N0cmluZyhnbCwgZS5nZXRSZWFzb24oKSk7CisgICAgICAgICAgICAgICAg
aWYoZS5nZXRSZWFzb24oKSA9PSBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBNYXJrIHRlc3QgY2FzZSBhcyB1bnN1cHBvcnRlZAorICAgICAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlICsgJzogJyArIGUubWVzc2FnZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ05vdCBzdXBwb3J0ZWQnKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBl
cnJvcgorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbmRl
ciByZWZlcmVuY2UgaW1hZ2UKKworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250
ZXh0LlJlZmVyZW5jZUNvbnRleHRCdWZmZXJzfSAqLworICAgICAgICB2YXIgYnVmZmVycyA9IG5l
dyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0QnVmZmVycygKKyAgICAgICAg
ICAgIG5ldyB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdCgKKyAgICAgICAgICAgICAgICA4LCA4
LCA4LAorICAgICAgICAgICAgICAgIGdsLmdldFBhcmFtZXRlcihnbC5BTFBIQV9CSVRTKSA/IDgg
OiAwCisgICAgICAgICAgICApLAorICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIChn
bC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklUUykpLAorICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSksCisgICAgICAgICAg
ICB3aWR0aCwKKyAgICAgICAgICAgIGhlaWdodAorICAgICAgICApOworICAgICAgICBjb250ZXh0
ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQoCisgICAgICAgICAg
ICBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dExpbWl0cyhnbCksCisg
ICAgICAgICAgICBidWZmZXJzLmdldENvbG9yYnVmZmVyKCksCisgICAgICAgICAgICBidWZmZXJz
LmdldERlcHRoYnVmZmVyKCksCisgICAgICAgICAgICBidWZmZXJzLmdldFN0ZW5jaWxidWZmZXIo
KQorICAgICAgICApOworCisgICAgICAgIGNvbnRleHQuY2xlYXJDb2xvcigKKyAgICAgICAgICAg
IGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3Jb
M10KKyAgICAgICAgKTsKKworICAgICAgICBjb250ZXh0LmNsZWFyKAorICAgICAgICAgICAgZ2wu
Q09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZF
Ul9CSVQKKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLnJlbmRlcihjb250ZXh0LCByZWZGcmFt
ZSk7CisgICAgICAgIHJlZkVycm9yID0gY29udGV4dC5nZXRFcnJvcigpOworCisgICAgICAgIC8v
IENvbXBhcmUgZXJyb3IgY29kZXMKKyAgICAgICAgdmFyIGVycm9yQ29kZXNPayA9IChnbGVzM0Vy
cm9yID09IHJlZkVycm9yKTsKKworICAgICAgICBpZiAoIWVycm9yQ29kZXNPaykgeworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUgKAorICAgICAgICAgICAgICAgICdFcnJvciBjb2Rl
IG1pc21hdGNoOiBnb3QgJyArCisgICAgICAgICAgICAgICAgV2ViR0xUZXN0VXRpbHMuZ2xFbnVt
VG9TdHJpbmcoZ2wsIGdsZXMzRXJyb3IpICsgJywgZXhwZWN0ZWQgJyArCisgICAgICAgICAgICAg
ICAgV2ViR0xUZXN0VXRpbHMuZ2xFbnVtVG9TdHJpbmcoZ2wsIHJlZkVycm9yKQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIGZhaWxSZWFzb24gPSAnR290IHVuZXhwZWN0ZWQgZXJyb3InOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcGFyZSBpbWFnZXMKKyAgICAgICAgdmFyIGltYWdl
c09rID0gdGhpcy5jb21wYXJlKHJlZkZyYW1lLCBnbGVzM0ZyYW1lKTsKKworICAgICAgICBpZiAo
IWltYWdlc09rICYmICFmYWlsUmVhc29uKQorICAgICAgICAgICAgZmFpbFJlYXNvbiA9ICdJbWFn
ZSBjb21wYXJpc29uIGZhaWxlZCc7CisKKyAgICAgICAgLy8gU3RvcmUgdGVzdCByZXN1bHQKKyAg
ICAgICAgdmFyIGlzT2sgPSBlcnJvckNvZGVzT2sgJiYgaW1hZ2VzT2s7CisgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoaXNPaywgZmFpbFJlYXNvbiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJlZmVyZW5jZQorICAgICAqIEBwYXJh
bSB7dGN1U3VyZmFjZS5TdXJmYWNlfSByZXN1bHQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UucHJvdG90eXBlLmNv
bXBhcmUgPSBmdW5jdGlvbigKKyAgICAgICAgcmVmZXJlbmNlLCByZXN1bHQpIHsKKworICAgICAg
ICB2YXIgdGhyZXNob2xkID0gbmV3IHRjdVJHQkEuUkdCQSgKKyAgICAgICAgICAgIC8qIFRPRE86
IHRjdTo6bWF4KGdldEZvcm1hdFRocmVzaG9sZCh0aGlzLm1fY29uZmlnLmNvbG9yRm9ybWF0KSwq
LworICAgICAgICAgICAgWzEyLCAxMiwgMTIsIDEyXQorICAgICAgICApOworCisgICAgICAgIHJl
dHVybiB0Y3VJbWFnZUNvbXBhcmUuYmlsaW5lYXJDb21wYXJlKAorICAgICAgICAgICAgJ0NvbXBh
cmlzb25SZXN1bHQnLCAnSW1hZ2UgY29tcGFyaXNvbiByZXN1bHQnLAorICAgICAgICAgICAgcmVm
ZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQuZ2V0QWNjZXNzKCksCisgICAgICAgICAgICB0aHJl
c2hvbGQsIHRjdUltYWdlQ29tcGFyZS5Db21wYXJlTG9nTW9kZS5SRVNVTFQKKyAgICAgICAgKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogZGVpbml0CisgICAgICovCisgICAgZXMzZkZib1Jl
bmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAgICAgZ2wuY2xl
YXJEZXB0aCgxLjApOworICAgICAgICBnbC5jbGVhclN0ZW5jaWwoMCk7CisKKyAgICAgICAgZ2wu
ZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RF
U1QpOworICAgICAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKworICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgfTsKKworICAgIC8vIEZib0Nhc2VzCisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZkZib1Jl
bmRlclRlc3QuRmJvUmVuZGVyQ2FzZX0KKyAgICAgKiBAcGFyYW0ge2VzM2ZGYm9SZW5kZXJUZXN0
LkZib0NvbmZpZ30gY29uZmlnCisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuU3RlbmNp
bENsZWFyc1Rlc3QgPSBmdW5jdGlvbihjb25maWcpIHsKKyAgICAgICAgZXMzZkZib1JlbmRlclRl
c3QuRmJvUmVuZGVyQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgY29uZmlnLmdldE5hbWUo
KSwgJ1N0ZW5jaWwgY2xlYXJzJywgY29uZmlnCisgICAgICAgICk7CisgICAgfTsKKworICAgIGVz
M2ZGYm9SZW5kZXJUZXN0LlN0ZW5jaWxDbGVhcnNUZXN0LnByb3RvdHlwZSA9CisgICAgICAgIE9i
amVjdC5jcmVhdGUoZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUpOwor
CisgICAgZXMzZkZib1JlbmRlclRlc3QuU3RlbmNpbENsZWFyc1Rlc3QucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0KKyAgICAgICAgZXMzZkZib1JlbmRlclRlc3QuU3RlbmNpbENsZWFyc1Rlc3Q7CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9zZ2xyR0xDb250ZXh0LkdMQ29udGV4dHxzZ2xyUmVm
ZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fQorICAgICAqIGNvbnRleHQKKyAgICAgKiBA
cGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkZib1JlbmRl
clRlc3QuU3RlbmNpbENsZWFyc1Rlc3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKAorICAg
ICAgICBjb250ZXh0LCBkc3QpIHsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdH0gKi8KKyAgICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwu
bWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV9jb25maWcuY29sb3JGb3Jt
YXQKKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5
cGV9ICovCisgICAgICAgIHZhciBmYm9TYW1wbGVyVHlwZSA9IC8qKiBAdHlwZSB7Z2x1U2hhZGVy
VXRpbC5EYXRhVHlwZX0gKi8gKAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxl
cjJEVHlwZShjb2xvckZvcm1hdCkKKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9ICovCisgICAgICAgIHZhciBmYm9PdXRwdXRUeXBlID0gZXMz
ZkZib1Rlc3RVdGlsLmdldEZyYWdtZW50T3V0cHV0VHlwZShjb2xvckZvcm1hdCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8KKyAgICAg
ICAgdmFyIGZib1JhbmdlSW5mbyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZv
KGNvbG9yRm9ybWF0KTsKKworICAgICAgICB2YXIgZmJvT3V0U2NhbGUgPSBkZU1hdGguc3VidHJh
Y3QoCisgICAgICAgICAgICBmYm9SYW5nZUluZm8udmFsdWVNYXgsIGZib1JhbmdlSW5mby52YWx1
ZU1pbgorICAgICAgICApOworCisgICAgICAgIHZhciBmYm9PdXRCaWFzID0gZmJvUmFuZ2VJbmZv
LnZhbHVlTWluOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUy
RFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIHRleFRvRmJvU2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0
VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5TQU1QTEVSXzJEXSwgZmJvT3V0cHV0VHlwZQorICAgICAgICApOworCisgICAgICAgIC8qKiBA
dHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIHRl
eEZyb21GYm9TaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAg
ICAgICAgICAgIFtmYm9TYW1wbGVyVHlwZV0sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
VkVDNCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0ZXhUb0Zib1NoYWRl
cklEID0KKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlUHJvZ3JhbSh0ZXhUb0Zib1NoYWRlcik7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0ZXhGcm9tRmJvU2hhZGVySUQg
PQorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVQcm9ncmFtKHRleEZyb21GYm9TaGFkZXIpOwor
CisgICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMVGV4dHVyZXxzZ2xyUmVmZXJlbmNlQ29udGV4dC5U
ZXh0dXJlQ29udGFpbmVyfSAqLworICAgICAgICB2YXIgbWV0YWJhbGxzVGV4ID0gY29udGV4dC5j
cmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHs/V2ViR0xUZXh0dXJlfHNnbHJS
ZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9ICovCisgICAgICAgIHZhciBxdWFkc1Rl
eCA9IGNvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgd2lkdGggPSAxMjg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
aGVpZ2h0ID0gMTI4OworCisgICAgICAgIHRleFRvRmJvU2hhZGVyLnNldE91dFNjYWxlQmlhcyhm
Ym9PdXRTY2FsZSwgZmJvT3V0Qmlhcyk7CisgICAgICAgIHRleEZyb21GYm9TaGFkZXIuc2V0VGV4
U2NhbGVCaWFzKAorICAgICAgICAgICAgMCwgZmJvUmFuZ2VJbmZvLmxvb2t1cFNjYWxlLCBmYm9S
YW5nZUluZm8ubG9va3VwQmlhcworICAgICAgICApOworCisgICAgICAgIGVzM2ZGYm9SZW5kZXJU
ZXN0LmNyZWF0ZVF1YWRzVGV4MkQoCisgICAgICAgICAgICBjb250ZXh0LCBxdWFkc1RleCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgd2lkdGgsIGhlaWdodAorICAgICAgICApOworCisgICAg
ICAgIGVzM2ZGYm9SZW5kZXJUZXN0LmNyZWF0ZU1ldGFiYWxsc1RleDJEKAorICAgICAgICAgICAg
Y29udGV4dCwgbWV0YWJhbGxzVGV4LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB3aWR0aCwg
aGVpZ2h0CisgICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvUmVuZGVyVGVz
dC5GcmFtZWJ1ZmZlcn0gKi8KKyAgICAgICAgdmFyIGZibyA9IG5ldyBlczNmRmJvUmVuZGVyVGVz
dC5GcmFtZWJ1ZmZlcigKKyAgICAgICAgICAgIGNvbnRleHQsIHRoaXMubV9jb25maWcsIHdpZHRo
LCBoZWlnaHQKKyAgICAgICAgKTsKKyAgICAgICAgZmJvLmNoZWNrQ29tcGxldGVuZXNzKCk7CisK
KyAgICAgICAgLy8gQmluZCBmcmFtZWJ1ZmZlciBhbmQgY2xlYXIKKyAgICAgICAgY29udGV4dC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiby5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAg
ICAgICAgY29udGV4dC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgY29u
dGV4dC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGNvbnRleHQuY2xl
YXIoCisgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJ
VCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVAorICAgICAgICApOworCisgICAgICAgIC8vIERvIHN0
ZW5jaWwgY2xlYXJzCisgICAgICAgIGNvbnRleHQuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7Cisg
ICAgICAgIGNvbnRleHQuc2Npc3NvcigxMCwgMTYsIDMyLCAxMjApOworICAgICAgICBjb250ZXh0
LmNsZWFyU3RlbmNpbCgxKTsKKyAgICAgICAgY29udGV4dC5jbGVhcihnbC5TVEVOQ0lMX0JVRkZF
Ul9CSVQpOworICAgICAgICBjb250ZXh0LnNjaXNzb3IoMTYsIDMyLCAxMDAsIDY0KTsKKyAgICAg
ICAgY29udGV4dC5jbGVhclN0ZW5jaWwoMik7CisgICAgICAgIGNvbnRleHQuY2xlYXIoZ2wuU1RF
TkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgY29udGV4dC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVT
VCk7CisKKyAgICAgICAgLy8gRHJhdyAyIHRleHR1cmVzIHdpdGggc3RlY2lsIHRlc3RzCisgICAg
ICAgIGNvbnRleHQuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAgICAgY29udGV4dC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBxdWFkc1RleCk7CisgICAgICAgIGNvbnRleHQuc3Rl
bmNpbEZ1bmMoZ2wuRVFVQUwsIDEsIDB4ZmYpOworCisgICAgICAgIHRleFRvRmJvU2hhZGVyLnNl
dFVuaWZvcm1zKGNvbnRleHQsIHRleFRvRmJvU2hhZGVySUQpOworICAgICAgICByclV0aWwuZHJh
d1F1YWQoCisgICAgICAgICAgICBjb250ZXh0LCB0ZXhUb0Zib1NoYWRlcklELCBbLTEuMCwgLTEu
MCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICk7CisKKyAgICAgICAgY29udGV4dC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBtZXRhYmFsbHNUZXgpOworICAgICAgICBjb250ZXh0
LnN0ZW5jaWxGdW5jKGdsLkVRVUFMLCAyLCAweGZmKTsKKworICAgICAgICB0ZXhUb0Zib1NoYWRl
ci5zZXRVbmlmb3Jtcyhjb250ZXh0LCB0ZXhUb0Zib1NoYWRlcklEKTsKKyAgICAgICAgcnJVdGls
LmRyYXdRdWFkKAorICAgICAgICAgICAgY29udGV4dCwgdGV4VG9GYm9TaGFkZXJJRCwgWy0xLjAs
IC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAgICApOworCisgICAgICAgIGNvbnRl
eHQuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworCisgICAgICAgIGlmIChmYm8uZ2V0Q29uZmln
KCkuY29sb3JUeXBlID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIGNvbnRleHQuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnRleHQu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZmJvLmdldENvbG9yQnVmZmVyKCkpOworICAgICAg
ICAgICAgY29udGV4dC52aWV3cG9ydCgwLCAwLCBjb250ZXh0LmdldFdpZHRoKCksIGNvbnRleHQu
Z2V0SGVpZ2h0KCkpOworCisgICAgICAgICAgICB0ZXhGcm9tRmJvU2hhZGVyLnNldFVuaWZvcm1z
KGNvbnRleHQsIHRleEZyb21GYm9TaGFkZXJJRCk7CisgICAgICAgICAgICByclV0aWwuZHJhd1F1
YWQoCisgICAgICAgICAgICAgICAgY29udGV4dCwgdGV4RnJvbUZib1NoYWRlcklELCBbLTEuMCwg
LTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICAgICApOworCisgICAgICAgICAg
ICBkc3QucmVhZFZpZXdwb3J0KAorICAgICAgICAgICAgICAgIGNvbnRleHQsIFswLCAwLCBjb250
ZXh0LmdldFdpZHRoKCksIGNvbnRleHQuZ2V0SGVpZ2h0KCldCisgICAgICAgICAgICApOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5yZWFkUGl4ZWxzKAorICAg
ICAgICAgICAgICAgIGNvbnRleHQsIGRzdCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgY29sb3JGb3Jt
YXQsCisgICAgICAgICAgICAgICAgZmJvUmFuZ2VJbmZvLmxvb2t1cFNjYWxlLCBmYm9SYW5nZUlu
Zm8ubG9va3VwQmlhcworICAgICAgICAgICAgKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRl
ckNhc2V9CisgICAgICogQHBhcmFtIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWd9IGNvbmZp
ZworICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LlNoYXJlZENvbG9yYnVmZmVyVGVzdCA9
IGZ1bmN0aW9uKGNvbmZpZykgeworICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJD
YXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBjb25maWcuZ2V0TmFtZSgpLCAnU2hhcmVkIGNv
bG9yYnVmZmVyJywgY29uZmlnCisgICAgICAgICk7CisgICAgfTsKKworICAgIGVzM2ZGYm9SZW5k
ZXJUZXN0LlNoYXJlZENvbG9yYnVmZmVyVGVzdC5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3Qu
Y3JlYXRlKGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UucHJvdG90eXBlKTsKKworICAg
IGVzM2ZGYm9SZW5kZXJUZXN0LlNoYXJlZENvbG9yYnVmZmVyVGVzdC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPQorICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWRDb2xvcmJ1ZmZlclRlc3Q7
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9zZ2xyR0xDb250ZXh0LkdMQ29udGV4dHxzZ2xy
UmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fQorICAgICAqIGNvbnRleHQKKyAgICAg
KiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkZib1Jl
bmRlclRlc3QuU2hhcmVkQ29sb3JidWZmZXJUZXN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlv
bigKKyAgICAgICAgY29udGV4dCwgZHN0KSB7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJv
VGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4U2hhZGVyID0gbmV3
IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEXSwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfVkVDNAorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZi
b1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGZsYXRTaGFkZXIgPSBu
ZXcgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlcigKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNAorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworICAgICAgICB2YXIgdGV4U2hhZGVySUQgPSBjb250ZXh0LmNyZWF0ZVBy
b2dyYW0odGV4U2hhZGVyKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAg
IHZhciBmbGF0U2hhZGVySUQgPSBjb250ZXh0LmNyZWF0ZVByb2dyYW0oZmxhdFNoYWRlcik7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9IDEyODsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSAxMjg7CisKKyAgICAgICAgLyoqIEB0
eXBlIHs/V2ViR0xUZXh0dXJlfHNnbHJSZWZlcmVuY2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ9
ICovCisgICAgICAgIHZhciBxdWFkc1RleCA9IGNvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMVGV4dHVyZXxzZ2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0
dXJlQ29udGFpbmVyfSAqLworICAgICAgICB2YXIgbWV0YWJhbGxzVGV4ID0gY29udGV4dC5jcmVh
dGVUZXh0dXJlKCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgc3RlbmNp
bCA9CisgICAgICAgICAgICAodGhpcy5tX2NvbmZpZy5idWZmZXJzICYgZ2wuU1RFTkNJTF9CVUZG
RVJfQklUKSAhPSAwOworCisgICAgICAgIGNvbnRleHQuZGlzYWJsZShnbC5ESVRIRVIpOworCisg
ICAgICAgIC8vIFRleHR1cmVzCisgICAgICAgIGVzM2ZGYm9SZW5kZXJUZXN0LmNyZWF0ZVF1YWRz
VGV4MkQoCisgICAgICAgICAgICBjb250ZXh0LCBxdWFkc1RleCwgZ2wuUkdCLCBnbC5VTlNJR05F
RF9CWVRFLCA2NCwgNjQKKyAgICAgICAgKTsKKyAgICAgICAgZXMzZkZib1JlbmRlclRlc3QuY3Jl
YXRlTWV0YWJhbGxzVGV4MkQoCisgICAgICAgICAgICBjb250ZXh0LCBtZXRhYmFsbHNUZXgsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIDY0LCA2NAorICAgICAgICApOworCisgICAgICAgIGNv
bnRleHQudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgLy8gRmJvIEEK
KyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvUmVuZGVyVGVzdC5GcmFtZWJ1ZmZlcn0gKi8KKyAg
ICAgICAgdmFyIGZib0EgPSBuZXcgZXMzZkZib1JlbmRlclRlc3QuRnJhbWVidWZmZXIoCisgICAg
ICAgICAgICAgICAgY29udGV4dCwgdGhpcy5tX2NvbmZpZywgd2lkdGgsIGhlaWdodAorICAgICAg
ICApOworICAgICAgICBmYm9BLmNoZWNrQ29tcGxldGVuZXNzKCk7CisKKyAgICAgICAgLy8gRmJv
IEIgLSBkb24ndCBjcmVhdGUgY29sb3JidWZmZXIKKworICAgICAgICAvKiogQHR5cGUge2VzM2ZG
Ym9SZW5kZXJUZXN0LkZib0NvbmZpZ30gKi8KKyAgICAgICAgdmFyIGNmZyA9IC8qKiBAdHlwZSB7
ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSAqLworICAgICAgICAgICAgKGRlVXRpbC5jbG9u
ZSh0aGlzLm1fY29uZmlnKSk7CisKKyAgICAgICAgY2ZnLmJ1ZmZlcnMgPSBkZU1hdGguYmluYXJ5
T3AoCisgICAgICAgICAgICBjZmcuYnVmZmVycywKKyAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlO
b3QoZ2wuQ09MT1JfQlVGRkVSX0JJVCksCisgICAgICAgICAgICBkZU1hdGguQmluYXJ5T3AuQU5E
CisgICAgICAgICk7CisgICAgICAgIGNmZy5jb2xvclR5cGUgPSBnbC5OT05FOworICAgICAgICBj
ZmcuY29sb3JGb3JtYXQgPSBnbC5OT05FOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Jl
bmRlclRlc3QuRnJhbWVidWZmZXJ9ICovCisgICAgICAgIHZhciBmYm9CID0gbmV3IGVzM2ZGYm9S
ZW5kZXJUZXN0LkZyYW1lYnVmZmVyKAorICAgICAgICAgICAgY29udGV4dCwgY2ZnLCB3aWR0aCwg
aGVpZ2h0CisgICAgICAgICk7CisKKyAgICAgICAgLy8gQXR0YWNoIGNvbG9yIGJ1ZmZlciBmcm9t
IGZibyBBCisgICAgICAgIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBm
Ym9CLmdldEZyYW1lYnVmZmVyKCkpOworICAgICAgICBzd2l0Y2ggKHRoaXMubV9jb25maWcuY29s
b3JUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAg
ICAgY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgKKyAgICAgICAgICAgICAgICAgICAgZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLAorICAgICAgICAgICAgICAgICAgICBn
bC5URVhUVVJFXzJELCBmYm9BLmdldENvbG9yQnVmZmVyKCksIDAKKyAgICAgICAgICAgICAgICAp
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsLlJFTkRFUkJV
RkZFUjoKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAor
ICAgICAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
CisgICAgICAgICAgICAgICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgZmJvQS5nZXRDb2xvckJ1ZmZl
cigpCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQg
Y29sb3IgdHlwZScpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYXIgZGVwdGggYW5kIHN0
ZW5jaWwgaW4gZmJvIEIKKyAgICAgICAgY29udGV4dC5jbGVhcihnbC5ERVBUSF9CVUZGRVJfQklU
IHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgICAgICAvLyBSZW5kZXIgcXVhZHMgdG8g
ZmJvIDEsIHdpdGggZGVwdGggMC4wCisgICAgICAgIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm9BLmdldEZyYW1lYnVmZmVyKCkpOworICAgICAgICBjb250ZXh0LmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHF1YWRzVGV4KTsKKyAgICAgICAgY29udGV4dC5jbGVh
ckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGNvbnRleHQuY2xlYXIoCisgICAg
ICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNU
RU5DSUxfQlVGRkVSX0JJVAorICAgICAgICApOworCisgICAgICAgIGlmIChzdGVuY2lsKSB7Cisg
ICAgICAgICAgICAvLyBTdGVuY2lsIHRvIDEgaW4gZmJvIEEKKyAgICAgICAgICAgIGNvbnRleHQu
Y2xlYXJTdGVuY2lsKDEpOworICAgICAgICAgICAgY29udGV4dC5jbGVhcihnbC5TVEVOQ0lMX0JV
RkZFUl9CSVQpOworICAgICAgICB9CisKKyAgICAgICAgdGV4U2hhZGVyLnNldFVuaWZvcm1zKGNv
bnRleHQsIHRleFNoYWRlcklEKTsKKworICAgICAgICBjb250ZXh0LmVuYWJsZShnbC5ERVBUSF9U
RVNUKTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgY29udGV4dCwgdGV4
U2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuMF0KKyAgICAgICAgKTsK
KyAgICAgICAgY29udGV4dC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworCisgICAgICAgIC8vIEJs
ZW5kIG1ldGFiYWxscyB0byBmYm8gMgorICAgICAgICBjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZmJvQi5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAgICAgICAgY29udGV4dC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBtZXRhYmFsbHNUZXgpOworICAgICAgICBjb250ZXh0
LmVuYWJsZShnbC5CTEVORCk7CisgICAgICAgIGNvbnRleHQuYmxlbmRGdW5jU2VwYXJhdGUoCisg
ICAgICAgICAgICBnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIGdsLlpFUk8s
IGdsLk9ORQorICAgICAgICApOworICAgICAgICByclV0aWwuZHJhd1F1YWQoCisgICAgICAgICAg
ICBjb250ZXh0LCB0ZXhTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4w
XQorICAgICAgICApOworCisgICAgICAgIC8vIFJlbmRlciBzbWFsbCBxdWFkIHRoYXQgaXMgb25s
eSB2aXNpYmxlIGlmIGRlcHRoIGJ1ZmZlcgorICAgICAgICAvLyBpcyBub3Qgc2hhcmVkIHdpdGgg
ZmJvIEEgLSBvciB0aGVyZSBpcyBubyBkZXB0aCBiaXRzCisgICAgICAgIGNvbnRleHQuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgcXVhZHNUZXgpOworICAgICAgICBjb250ZXh0LmVuYWJsZShn
bC5ERVBUSF9URVNUKTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGNvbnRleHQsIHRleFNoYWRl
cklELCBbMC41LCAwLjUsIDAuNV0sIFsxLjAsIDEuMCwgMC41XSk7CisgICAgICAgIGNvbnRleHQu
ZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKworICAgICAgICBpZiAoc3RlbmNpbCkgeworICAgICAg
ICAgICAgZmxhdFNoYWRlci5zZXRDb2xvcihjb250ZXh0LCBmbGF0U2hhZGVySUQsIFswLjAsIDEu
MCwgMC4wLCAxLjBdKTsKKworICAgICAgICAgICAgLy8gQ2xlYXIgc3Vic2V0IG9mIHN0ZW5jaWwg
YnVmZmVyIHRvIDEKKyAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7
CisgICAgICAgICAgICBjb250ZXh0LnNjaXNzb3IoMTAsIDEwLCAxMiwgMjUpOworICAgICAgICAg
ICAgY29udGV4dC5jbGVhclN0ZW5jaWwoMSk7CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyKGds
LlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICBjb250ZXh0LmRpc2FibGUoZ2wuU0NJ
U1NPUl9URVNUKTsKKworICAgICAgICAgICAgLy8gUmVuZGVyIHF1YWQgd2l0aCBzdGVuY2lsIG1h
c2sgPT0gMQorICAgICAgICAgICAgY29udGV4dC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuc3RlbmNpbEZ1bmMoZ2wuRVFVQUwsIDEsIDB4ZmYpOworICAgICAg
ICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgICAgIGNvbnRleHQsIGZsYXRTaGFk
ZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gR2V0IHJlc3VsdHMKKyAgICAgICAgaWYgKGZib0EuZ2V0Q29uZmlnKCku
Y29sb3JUeXBlID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIHRleFNoYWRlci5zZXRV
bmlmb3Jtcyhjb250ZXh0LCB0ZXhTaGFkZXJJRCk7CisKKyAgICAgICAgICAgIGNvbnRleHQuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnRleHQu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZmJvQS5nZXRDb2xvckJ1ZmZlcigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQudmlld3BvcnQoMCwgMCwgY29udGV4dC5nZXRXaWR0aCgpLCBjb250ZXh0
LmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LCB0ZXhTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwg
MC4wXQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGRzdC5yZWFkVmlld3BvcnQoCisgICAg
ICAgICAgICAgICAgY29udGV4dCwgWzAsIDAsIGNvbnRleHQuZ2V0V2lkdGgoKSwgY29udGV4dC5n
ZXRIZWlnaHQoKV0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ZXMzZkZib1Rlc3RVdGlsLnJlYWRQaXhlbHMoCisgICAgICAgICAgICAgICAgY29udGV4dCwgZHN0
LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1h
cEdMSW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGZib0EuZ2V0Q29uZmlnKCku
Y29sb3JGb3JtYXQKKyAgICAgICAgICAgICAgICApLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSwgWzAu
MCwgMC4wLCAwLjAsIDAuMF0KKyAgICAgICAgICAgICk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9S
ZW5kZXJDYXNlfQorICAgICAqIEBwYXJhbSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSBj
b25maWcKKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWRDb2xvcmJ1ZmZlckNs
ZWFyc1Rlc3QgPSBmdW5jdGlvbihjb25maWcpIHsKKyAgICAgICAgZXMzZkZib1JlbmRlclRlc3Qu
RmJvUmVuZGVyQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgY29uZmlnLmdldE5hbWUoKSwg
J1NoYXJlZCBjb2xvcmJ1ZmZlciBjbGVhcnMnLCBjb25maWcKKyAgICAgICAgKTsKKyAgICB9Owor
CisgICAgZXMzZkZib1JlbmRlclRlc3QuU2hhcmVkQ29sb3JidWZmZXJDbGVhcnNUZXN0LnByb3Rv
dHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVy
Q2FzZS5wcm90b3R5cGUpOworCisgICAgZXMzZkZib1JlbmRlclRlc3QuU2hhcmVkQ29sb3JidWZm
ZXJDbGVhcnNUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZGYm9SZW5k
ZXJUZXN0LlNoYXJlZENvbG9yYnVmZmVyQ2xlYXJzVGVzdDsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7P3NnbHJHTENvbnRleHQuR0xDb250ZXh0fHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVy
ZW5jZUNvbnRleHR9CisgICAgICogY29udGV4dAorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5T
dXJmYWNlfSBkc3QKKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWRDb2xvcmJ1
ZmZlckNsZWFyc1Rlc3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKAorICAgICAgICBjb250
ZXh0LCBkc3QpIHsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dH0gKi8KKyAgICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRl
cm5hbEZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV9jb25maWcuY29sb3JGb3JtYXQKKyAgICAg
ICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovCisg
ICAgICAgIHZhciBmYm9TYW1wbGVyVHlwZSA9IGdsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIyRFR5
cGUoY29sb3JGb3JtYXQpOworCisgICAgICAgIHZhciB3aWR0aCA9IDEyODsKKyAgICAgICAgdmFy
IGhlaWdodCA9IDEyODsKKyAgICAgICAgdmFyIGNvbG9yYnVmZmVyID0gdGhpcy5tX2NvbmZpZy5j
b2xvclR5cGUgPT0gZ2wuVEVYVFVSRV8yRD8KKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlVGV4
dHVyZSgpIDoKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAg
ICAgICAgLy8gQ2hlY2sgZm9yIGZvcm1hdCBzdXBwb3J0LgorICAgICAgICBlczNmRmJvUmVuZGVy
VGVzdC5jaGVja0NvbG9yRm9ybWF0U3VwcG9ydCgKKyAgICAgICAgICAgIGNvbnRleHQsIHRoaXMu
bV9jb25maWcuY29sb3JGb3JtYXQKKyAgICAgICAgKTsKKworICAgICAgICAvLyBTaW5nbGUgY29s
b3JidWZmZXIKKyAgICAgICAgaWYgKHRoaXMubV9jb25maWcuY29sb3JUeXBlID09IGdsLlRFWFRV
UkVfMkQpIHsKKyAgICAgICAgICAgIGNvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
Y29sb3JidWZmZXIpOworICAgICAgICAgICAgY29udGV4dC50ZXhJbWFnZTJERGVsZWdhdGUoCisg
ICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2NvbmZpZy5jb2xvckZvcm1h
dCwgd2lkdGgsIGhlaWdodAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGNvbnRleHQudGV4
UGFyYW1ldGVyaSgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLk5FQVJFU1QKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBjb250ZXh0
LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUCisgICAgICAgICAgICApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAgICB0aGlzLm1f
Y29uZmlnLmNvbG9yVHlwZSA9PSBnbC5SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgJ05v
dCBhIHJlbmRlciBidWZmZXIgdHlwZScsIGZhbHNlLCB0cnVlCisgICAgICAgICAgICApOworICAg
ICAgICAgICAgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3Ji
dWZmZXIpOworICAgICAgICAgICAgY29udGV4dC5yZW5kZXJidWZmZXJTdG9yYWdlKAorICAgICAg
ICAgICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX2NvbmZpZy5jb2xvckZvcm1hdCwgd2lk
dGgsIGhlaWdodAorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE11bHRp
cGxlIGZyYW1lYnVmZmVycyBzaGFyaW5nIHRoZSBjb2xvcmJ1ZmZlcgorICAgICAgICB2YXIgZmJv
ID0gWworICAgICAgICAgICAgY29udGV4dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLAorICAgICAgICAg
ICAgY29udGV4dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLAorICAgICAgICAgICAgY29udGV4dC5jcmVh
dGVGcmFtZWJ1ZmZlcigpCisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgZmJvaSA9IDA7
IGZib2kgPCBmYm8ubGVuZ3RoOyBmYm9pKyspIHsKKyAgICAgICAgICAgIGNvbnRleHQuYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm9bZmJvaV0pOworCisgICAgICAgICAgICBpZiAo
dGhpcy5tX2NvbmZpZy5jb2xvclR5cGUgPT0gZ2wuVEVYVFVSRV8yRCkKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKAorICAgICAgICAgICAgICAgICAgICBnbC5G
UkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfMkQsIGNvbG9yYnVmZmVyLCAwCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KAorICAgICAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsCisgICAgICAgICAgICAgICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgY29sb3JidWZmZXIKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZib1swXSk7CisKKyAgICAgICAgLy8gQ2hlY2sgY29tcGxl
dGVuZXNzCisKKyAgICAgICAgdmFyIHN0YXR1cyA9IGNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUpCisgICAgICAgICAgICB0aHJvdyBuZXcgZXMzZkZib1Rlc3RVdGlsLkZib0lu
Y29tcGxldGVFeGNlcHRpb24oc3RhdHVzKTsKKworICAgICAgICAvLyBSZW5kZXIgdG8gdGhlbQor
ICAgICAgICBjb250ZXh0LnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBj
b250ZXh0LmNsZWFyQ29sb3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgY29udGV4dC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBjb250ZXh0LmVuYWJsZShnbC5T
Q0lTU09SX1RFU1QpOworCisgICAgICAgIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBmYm9bMV0pOworICAgICAgICBjb250ZXh0LmNsZWFyQ29sb3IoMC42LCAwLjAsIDAu
MCwgMS4wKTsKKyAgICAgICAgY29udGV4dC5zY2lzc29yKDEwLCAxMCwgNjQsIDY0KTsKKyAgICAg
ICAgY29udGV4dC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgY29udGV4dC5j
bGVhckNvbG9yKDAuMCwgMC42LCAwLjAsIDEuMCk7CisgICAgICAgIGNvbnRleHQuc2Npc3Nvcig2
MCwgNjAsIDQwLCAyMCk7CisgICAgICAgIGNvbnRleHQuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJ
VCk7CisKKyAgICAgICAgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
b1syXSk7CisgICAgICAgIGNvbnRleHQuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC42LCAxLjApOwor
ICAgICAgICBjb250ZXh0LnNjaXNzb3IoMjAsIDIwLCAxMDAsIDEwKTsKKyAgICAgICAgY29udGV4
dC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBjb250ZXh0LmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvWzBdKTsKKyAgICAgICAgY29udGV4dC5jbGVhckNv
bG9yKDAuNiwgMC4wLCAwLjYsIDEuMCk7CisgICAgICAgIGNvbnRleHQuc2Npc3NvcigyMCwgMjAs
IDUsIDEwMCk7CisgICAgICAgIGNvbnRleHQuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICAgICAgY29udGV4dC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICAgICAgaWYg
KHRoaXMubV9jb25maWcuY29sb3JUeXBlID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcn0gKi8KKyAgICAgICAg
ICAgIHZhciBzaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAg
ICAgICAgICAgICAgICBbZmJvU2FtcGxlclR5cGVdLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB2YXIgc2hhZGVySUQgPSBjb250
ZXh0LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKworICAgICAgICAgICAgc2hhZGVyLnNldFVuaWZv
cm1zKGNvbnRleHQsIHNoYWRlcklEKTsKKworICAgICAgICAgICAgY29udGV4dC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgY29udGV4dC52aWV3cG9y
dCgwLCAwLCBjb250ZXh0LmdldFdpZHRoKCksIGNvbnRleHQuZ2V0SGVpZ2h0KCkpOworICAgICAg
ICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgICAgIGNvbnRleHQsIHNoYWRlcklE
LCBbLTAuOSwgLTAuOSwgMC4wXSwgWzAuOSwgMC45LCAwLjBdCisgICAgICAgICAgICApOworICAg
ICAgICAgICAgZHN0LnJlYWRWaWV3cG9ydCgKKyAgICAgICAgICAgICAgICBjb250ZXh0LCBbMCwg
MCwgY29udGV4dC5nZXRXaWR0aCgpLCBjb250ZXh0LmdldEhlaWdodCgpXQorICAgICAgICAgICAg
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlczNmRmJvVGVzdFV0aWwucmVhZFBpeGVs
cygKKyAgICAgICAgICAgICAgICBjb250ZXh0LCBkc3QsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGNv
bG9yRm9ybWF0LAorICAgICAgICAgICAgICAgIFsxLjAsIDEuMCwgMS4wLCAxLjBdLCBbMC4wLCAw
LjAsIDAuMCwgMC4wXQorICAgICAgICAgICAgKTsKKworICAgICAgICAvL2RlbGV0ZSBGQk9zCisg
ICAgICAgIGZvciAoZmJvaSA9IDA7IGZib2kgPCBmYm8ubGVuZ3RoOyBmYm9pKyspCisgICAgICAg
ICAgICBjb250ZXh0LmRlbGV0ZUZyYW1lYnVmZmVyKGZib1tmYm9pXSk7CisKKyAgICAgICAgLy9k
ZWxldGUgVGV4dHVyZS9SZW5kZXJidWZmZXIKKyAgICAgICAgaWYgKHRoaXMubV9jb25maWcuY29s
b3JUeXBlID09IGdsLlRFWFRVUkVfMkQpCisgICAgICAgICAgICBjb250ZXh0LmRlbGV0ZVRleHR1
cmUoY29sb3JidWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250ZXh0LmRlbGV0
ZVJlbmRlcmJ1ZmZlcihjb2xvcmJ1ZmZlcik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJD
YXNlfQorICAgICAqIEBwYXJhbSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSBjb25maWcK
KyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWREZXB0aFN0ZW5jaWxUZXN0ID0g
ZnVuY3Rpb24oY29uZmlnKSB7CisgICAgICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNh
c2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIGNvbmZpZy5nZXROYW1lKCksICdTaGFyZWQgZGVw
dGgvc3RlbmNpbGJ1ZmZlcicsIGNvbmZpZworICAgICAgICApOworICAgIH07CisKKyAgICBlczNm
RmJvUmVuZGVyVGVzdC5TaGFyZWREZXB0aFN0ZW5jaWxUZXN0LnByb3RvdHlwZSA9CisgICAgICAg
IE9iamVjdC5jcmVhdGUoZXMzZkZib1JlbmRlclRlc3QuRmJvUmVuZGVyQ2FzZS5wcm90b3R5cGUp
OworCisgICAgZXMzZkZib1JlbmRlclRlc3QuU2hhcmVkRGVwdGhTdGVuY2lsVGVzdC5wcm90b3R5
cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWREZXB0aFN0
ZW5jaWxUZXN0OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmRmJvUmVuZGVyVGVzdC5G
Ym9Db25maWd9IGNvbmZpZworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
ZXMzZkZib1JlbmRlclRlc3QuU2hhcmVkRGVwdGhTdGVuY2lsVGVzdC5wcm90b3R5cGUuaXNDb25m
aWdTdXBwb3J0ZWQgPQorICAgIGZ1bmN0aW9uKGNvbmZpZykgeworICAgICAgICByZXR1cm4gZGVN
YXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgY29uZmlnLmJ1ZmZlcnMsCisgICAgICAgICAgICBk
ZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgZ2wuREVQVEhfQlVGRkVSX0JJVCwgZ2wu
U1RFTkNJTF9CVUZGRVJfQklULCBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAgICAgICAgICksIGRl
TWF0aC5CaW5hcnlPcC5BTkQKKyAgICAgICAgKSAhPSAwOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0gez9zZ2xyR0xDb250ZXh0LkdMQ29udGV4dHxzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0fQorICAgICAqIGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge3RjdVN1
cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuU2hhcmVk
RGVwdGhTdGVuY2lsVGVzdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oCisgICAgICAgIGNv
bnRleHQsIGRzdCkgeworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1
cmUyRFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIHRleFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0
aWwuVGV4dHVyZTJEU2hhZGVyKAorICAgICAgICAgICAgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUu
U0FNUExFUl8yRF0sCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZF
QzQKKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5GbGF0
Q29sb3JTaGFkZXJ9ICovCisgICAgICAgIHZhciBmbGF0U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0
VXRpbC5GbGF0Q29sb3JTaGFkZXIoCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzQKKyAgICAgICAgKTsKKworICAgICAgICB2YXIgdGV4U2hhZGVySUQgPSBjb250
ZXh0LmNyZWF0ZVByb2dyYW0odGV4U2hhZGVyKTsKKyAgICAgICAgdmFyIGZsYXRTaGFkZXJJRCA9
IGNvbnRleHQuY3JlYXRlUHJvZ3JhbShmbGF0U2hhZGVyKTsKKyAgICAgICAgdmFyIHdpZHRoID0g
MTI4OworICAgICAgICB2YXIgaGVpZ2h0ID0gMTI4OworICAgICAgICAvLyBib29sIGRlcHRoID0g
KHRoaXMubV9jb25maWcuYnVmZmVycyAmIGdsLkRFUFRIX0JVRkZFUl9CSVQpICE9IDA7CisgICAg
ICAgIC8qKkB0eXBlIHtib29sZWFufSAqLyB2YXIgc3RlbmNpbCA9CisgICAgICAgICAgICAodGhp
cy5tX2NvbmZpZy5idWZmZXJzICYgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwOworCisgICAg
ICAgIC8vIFRleHR1cmVzCisgICAgICAgIHZhciBtZXRhYmFsbHNUZXggPSBjb250ZXh0LmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgdmFyIHF1YWRzVGV4ID0gY29udGV4dC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIGVzM2ZGYm9SZW5kZXJUZXN0LmNyZWF0ZU1ldGFiYWxsc1RleDJEKAorICAg
ICAgICAgICAgY29udGV4dCwgbWV0YWJhbGxzVGV4LCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUs
IDY0LCA2NAorICAgICAgICApOworICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5jcmVhdGVRdWFk
c1RleDJEKAorICAgICAgICAgICAgY29udGV4dCwgcXVhZHNUZXgsIGdsLlJHQiwgZ2wuVU5TSUdO
RURfQllURSwgNjQsIDY0CisgICAgICAgICk7CisKKyAgICAgICAgY29udGV4dC52aWV3cG9ydCgw
LCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBGYm8gQQorICAgICAgICAvKiogQHR5
cGUge2VzM2ZGYm9SZW5kZXJUZXN0LkZyYW1lYnVmZmVyfSAqLworICAgICAgICB2YXIgZmJvQSA9
IG5ldyBlczNmRmJvUmVuZGVyVGVzdC5GcmFtZWJ1ZmZlcigKKyAgICAgICAgICAgIGNvbnRleHQs
IHRoaXMubV9jb25maWcsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgKTsKKworICAgICAgICBmYm9B
LmNoZWNrQ29tcGxldGVuZXNzKCk7CisKKyAgICAgICAgLy8gRmJvIEIKKyAgICAgICAgLyoqIEB0
eXBlIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWd9ICovCisgICAgICAgIHZhciBjZmcgPSAv
KiogQHR5cGUge2VzM2ZGYm9SZW5kZXJUZXN0LkZib0NvbmZpZ30gKi8KKyAgICAgICAgICAgIChk
ZVV0aWwuY2xvbmUodGhpcy5tX2NvbmZpZykpOworCisgICAgICAgIGNmZy5idWZmZXJzID0gZGVN
YXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgY2ZnLmJ1ZmZlcnMsCisgICAgICAgICAgICBkZU1h
dGguYmluYXJ5Tm90KGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQp
LAorICAgICAgICAgICAgZGVNYXRoLkJpbmFyeU9wLkFORAorICAgICAgICApOworICAgICAgICBj
ZmcuZGVwdGhTdGVuY2lsVHlwZSA9IGdsLk5PTkU7CisgICAgICAgIGNmZy5kZXB0aFN0ZW5jaWxG
b3JtYXQgPSBnbC5OT05FOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1JlbmRlclRlc3Qu
RnJhbWVidWZmZXJ9ICovCisgICAgICAgIHZhciBmYm9CID0gbmV3IGVzM2ZGYm9SZW5kZXJUZXN0
LkZyYW1lYnVmZmVyKAorICAgICAgICAgICAgY29udGV4dCwgY2ZnLCB3aWR0aCwgaGVpZ2h0Cisg
ICAgICAgICk7CisKKyAgICAgICAgLy8gQmluZCBkZXB0aC9zdGVuY2lsIGJ1ZmZlcnMgZnJvbSBm
Ym8gQSB0byBmYm8gQgorICAgICAgICBjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvQi5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBiaXQgPSBuZHggPyBnbC5TVEVOQ0lM
X0JVRkZFUl9CSVQgOiBnbC5ERVBUSF9CVUZGRVJfQklUOworICAgICAgICAgICAgdmFyIHBvaW50
ID0gbmR4ID8gZ2wuU1RFTkNJTF9BVFRBQ0hNRU5UIDogZ2wuREVQVEhfQVRUQUNITUVOVDsKKwor
ICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5tX2NvbmZpZy5idWZmZXJzLCBiaXQsIGRlTWF0aC5CaW5hcnlP
cC5BTkQKKyAgICAgICAgICAgICAgICApID09IDAKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1fY29uZmlnLmRlcHRo
U3RlbmNpbFR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgcG9pbnQsIGdsLlRFWFRVUkVfMkQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBmYm9BLmdldERlcHRoU3RlbmNpbEJ1ZmZlcigpLCAwCisgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgZ2wuUkVOREVSQlVGRkVSOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgZ2wuRlJB
TUVCVUZGRVIsIHBvaW50LCBnbC5SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBmYm9BLmdldERlcHRoU3RlbmNpbEJ1ZmZlcigpCisgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ05vdCBpbXBsZW1lbnRlZCcpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0dXAgdW5pZm9ybXMKKyAgICAgICAgdGV4
U2hhZGVyLnNldFVuaWZvcm1zKGNvbnRleHQsIHRleFNoYWRlcklEKTsKKworICAgICAgICAvLyBD
bGVhciBjb2xvciB0byByZWQgYW5kIHN0ZW5jaWwgdG8gMSBpbiBmYm8gQi4KKyAgICAgICAgY29u
dGV4dC5jbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGNvbnRleHQuY2xl
YXJTdGVuY2lsKDEpOworICAgICAgICBjb250ZXh0LmNsZWFyKAorICAgICAgICAgICAgZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9C
SVQKKyAgICAgICAgKTsKKworICAgICAgICBjb250ZXh0LmVuYWJsZShnbC5ERVBUSF9URVNUKTsK
KworICAgICAgICAvLyBSZW5kZXIgcXVhZCB0byBmYm8gQQorICAgICAgICBjb250ZXh0LmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvQS5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAgICAg
ICAgY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBxdWFkc1RleCk7CisgICAgICAg
IHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgIGNvbnRleHQsIHRleFNoYWRlcklELCBbLTEu
MCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICk7CisKKyAgICAgICAgaWYg
KHN0ZW5jaWwpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIHN1YnNldCBvZiBzdGVuY2lsIGJ1ZmZl
ciB0byAwIGluIGZibyBBCisgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShnbC5TQ0lTU09SX1RF
U1QpOworICAgICAgICAgICAgY29udGV4dC5zY2lzc29yKDEwLCAxMCwgMTIsIDI1KTsKKyAgICAg
ICAgICAgIGNvbnRleHQuY2xlYXJTdGVuY2lsKDApOworICAgICAgICAgICAgY29udGV4dC5jbGVh
cihnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICAgICAgY29udGV4dC5kaXNhYmxlKGds
LlNDSVNTT1JfVEVTVCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW5kZXIgbWV0YWJhbGxz
IHRvIGZibyBCCisgICAgICAgIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm9CLmdldEZyYW1lYnVmZmVyKCkpOworICAgICAgICBjb250ZXh0LmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIG1ldGFiYWxsc1RleCk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAg
ICAgICAgICAgIGNvbnRleHQsIHRleFNoYWRlcklELCBbLTEuMCwgLTEuMCwgLTEuMF0sIFsxLjAs
IDEuMCwgMS4wXQorICAgICAgICApOworCisgICAgICAgIGNvbnRleHQuZGlzYWJsZShnbC5ERVBU
SF9URVNUKTsKKworICAgICAgICBpZiAoc3RlbmNpbCkgeworICAgICAgICAgICAgLy8gUmVuZGVy
IHF1YWQgd2l0aCBzdGVuY2lsIG1hc2sgPT0gMAorICAgICAgICAgICAgY29udGV4dC5lbmFibGUo
Z2wuU1RFTkNJTF9URVNUKTsKKyAgICAgICAgICAgIGNvbnRleHQuc3RlbmNpbEZ1bmMoZ2wuRVFV
QUwsIDAsIDB4ZmYpOworICAgICAgICAgICAgY29udGV4dC51c2VQcm9ncmFtKGZsYXRTaGFkZXJJ
RCk7CisgICAgICAgICAgICBmbGF0U2hhZGVyLnNldENvbG9yKGNvbnRleHQsIGZsYXRTaGFkZXJJ
RCwgWzAuMCwgMS4wLCAwLjAsIDEuMF0pOworICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAor
ICAgICAgICAgICAgICAgIGNvbnRleHQsIGZsYXRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0s
IFsxLjAsIDEuMCwgMC4wXQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGNvbnRleHQuZGlz
YWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9j
b25maWcuY29sb3JUeXBlID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIC8vIFJlbmRl
ciBib3RoIHRvIHNjcmVlbgorICAgICAgICAgICAgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgY29udGV4dC52aWV3cG9ydCgwLCAwLCBj
b250ZXh0LmdldFdpZHRoKCksIGNvbnRleHQuZ2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgY29u
dGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYm9BLmdldENvbG9yQnVmZmVyKCkpOwor
ICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgICAgIGNvbnRleHQsIHRl
eFNoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzAuMCwgMS4wLCAwLjBdCisgICAgICAgICAg
ICApOworICAgICAgICAgICAgY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYm9C
LmdldENvbG9yQnVmZmVyKCkpOworICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAg
ICAgICAgICAgIGNvbnRleHQsIHRleFNoYWRlcklELCBbMC4wLCAtMS4wLCAwLjBdLCBbMS4wLCAx
LjAsIDAuMF0KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGRzdC5yZWFkVmlld3BvcnQo
CisgICAgICAgICAgICAgICAgY29udGV4dCwgWzAsIDAsIGNvbnRleHQuZ2V0V2lkdGgoKSwgY29u
dGV4dC5nZXRIZWlnaHQoKV0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBSZWFkIHJlc3VsdHMgZnJvbSBmYm8gQgorICAgICAgICAgICAgZXMzZkZib1Rl
c3RVdGlsLnJlYWRQaXhlbHMoCisgICAgICAgICAgICAgICAgY29udGV4dCwgZHN0LCAwLCAwLCB3
aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJu
YWxGb3JtYXQodGhpcy5tX2NvbmZpZy5jb2xvckZvcm1hdCksCisgICAgICAgICAgICAgICAgWzEu
MCwgMS4wLCAxLjAsIDEuMF0sIFswLjAsIDAuMCwgMC4wLCAwLjBdCisgICAgICAgICAgICApOwor
ICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJDYXNlfQorICAgICAqIEBwYXJh
bSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSBjb25maWcKKyAgICAgKi8KKyAgICBlczNm
RmJvUmVuZGVyVGVzdC5SZXNpemVUZXN0ID0gZnVuY3Rpb24oY29uZmlnKSB7CisgICAgICAgIGVz
M2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIGNv
bmZpZy5nZXROYW1lKCksICdSZXNpemUgZnJhbWVidWZmZXInLCBjb25maWcKKyAgICAgICAgKTsK
KyAgICB9OworCisgICAgZXMzZkZib1JlbmRlclRlc3QuUmVzaXplVGVzdC5wcm90b3R5cGUgPQor
ICAgICAgICBPYmplY3QuY3JlYXRlKGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UucHJv
dG90eXBlKTsKKworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LlJlc2l6ZVRlc3QucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0KKyAgICAgICAgZXMzZkZib1JlbmRlclRlc3QuUmVzaXplVGVzdDsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7P3NnbHJHTENvbnRleHQuR0xDb250ZXh0fHNnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9CisgICAgICogY29udGV4dAorICAgICAqIEBwYXJh
bSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAgICAgKi8KKyAgICBlczNmRmJvUmVuZGVyVGVz
dC5SZXNpemVUZXN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihjb250ZXh0LCBkc3QpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovCisgICAgICAg
IHZhciBjb2xvckZvcm1hdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoCisg
ICAgICAgICAgICB0aGlzLm1fY29uZmlnLmNvbG9yRm9ybWF0CisgICAgICAgICk7CisgICAgICAg
IC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8KKyAgICAgICAgdmFyIGZib1Nh
bXBsZXJUeXBlID0gZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEVHlwZShjb2xvckZvcm1hdCk7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8KKyAgICAgICAg
dmFyIGZib091dHB1dFR5cGUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRPdXRwdXRUeXBl
KGNvbG9yRm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJl
Rm9ybWF0SW5mb30gKi8KKyAgICAgICAgdmFyIGZib1JhbmdlSW5mbyA9IHRjdVRleHR1cmVVdGls
LmdldFRleHR1cmVGb3JtYXRJbmZvKGNvbG9yRm9ybWF0KTsKKyAgICAgICAgdmFyIGZib091dFNj
YWxlID0gZGVNYXRoLnN1YnRyYWN0KAorICAgICAgICAgICAgZmJvUmFuZ2VJbmZvLnZhbHVlTWF4
LCBmYm9SYW5nZUluZm8udmFsdWVNaW4KKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGZib091dEJp
YXMgPSBmYm9SYW5nZUluZm8udmFsdWVNaW47CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJv
VGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4VG9GYm9TaGFkZXIg
PSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAgICAgIFtnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRdLCBmYm9PdXRwdXRUeXBlCisgICAgICAgICk7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAq
LworICAgICAgICB2YXIgdGV4RnJvbUZib1NoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4
dHVyZTJEU2hhZGVyKAorICAgICAgICAgICAgW2Zib1NhbXBsZXJUeXBlXSwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9WRUM0CisgICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyfSAqLworICAgICAgICB2YXIgZmxhdFNoYWRl
ciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyKGZib091dHB1dFR5cGUpOwor
ICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8KKyAgICAgICAgdmFyIHRleFRvRmJv
U2hhZGVySUQgPSBjb250ZXh0LmNyZWF0ZVByb2dyYW0odGV4VG9GYm9TaGFkZXIpOworICAgICAg
ICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8KKyAgICAgICAgdmFyIHRleEZyb21GYm9TaGFk
ZXJJRCA9IGNvbnRleHQuY3JlYXRlUHJvZ3JhbSh0ZXhGcm9tRmJvU2hhZGVyKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovCisgICAgICAgIHZhciBmbGF0U2hhZGVySUQgPSBj
b250ZXh0LmNyZWF0ZVByb2dyYW0oZmxhdFNoYWRlcik7CisKKyAgICAgICAgdmFyIHF1YWRzVGV4
ID0gY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHZhciBtZXRhYmFsbHNUZXggPSBj
b250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKworICAgICAgICB2YXIgZGVwdGggPSBkZU1hdGguYmlu
YXJ5T3AoCisgICAgICAgICAgICB0aGlzLm1fY29uZmlnLmJ1ZmZlcnMsIGdsLkRFUFRIX0JVRkZF
Ul9CSVQsIGRlTWF0aC5CaW5hcnlPcC5BTkQKKyAgICAgICAgKSAhPSAwOworICAgICAgICB2YXIg
c3RlbmNpbCA9IGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgIHRoaXMubV9jb25maWcuYnVm
ZmVycywgZ2wuU1RFTkNJTF9CVUZGRVJfQklULCBkZU1hdGguQmluYXJ5T3AuQU5ECisgICAgICAg
ICkgIT0gMDsKKworICAgICAgICB2YXIgaW5pdGlhbFdpZHRoID0gMTI4OworICAgICAgICB2YXIg
aW5pdGlhbEhlaWdodCA9IDEyODsKKyAgICAgICAgdmFyIG5ld1dpZHRoID0gNjQ7CisgICAgICAg
IHZhciBuZXdIZWlnaHQgPSAzMjsKKworICAgICAgICB0ZXhUb0Zib1NoYWRlci5zZXRPdXRTY2Fs
ZUJpYXMoZmJvT3V0U2NhbGUsIGZib091dEJpYXMpOworICAgICAgICB0ZXhGcm9tRmJvU2hhZGVy
LnNldFRleFNjYWxlQmlhcygKKyAgICAgICAgICAgIDAsIGZib1JhbmdlSW5mby5sb29rdXBTY2Fs
ZSwgZmJvUmFuZ2VJbmZvLmxvb2t1cEJpYXMKKyAgICAgICAgKTsKKworICAgICAgICBlczNmRmJv
UmVuZGVyVGVzdC5jcmVhdGVRdWFkc1RleDJEKAorICAgICAgICAgICAgY29udGV4dCwgcXVhZHNU
ZXgsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgNjQsIDY0CisgICAgICAgICk7CisgICAgICAg
IGVzM2ZGYm9SZW5kZXJUZXN0LmNyZWF0ZU1ldGFiYWxsc1RleDJEKAorICAgICAgICAgICAgY29u
dGV4dCwgbWV0YWJhbGxzVGV4LCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIDMyLCAzMgorICAg
ICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1JlbmRlclRlc3QuRnJhbWVidWZm
ZXJ9ICovCisgICAgICAgIHZhciBmYm8gPSBuZXcgZXMzZkZib1JlbmRlclRlc3QuRnJhbWVidWZm
ZXIoCisgICAgICAgICAgICBjb250ZXh0LCB0aGlzLm1fY29uZmlnLCBpbml0aWFsV2lkdGgsIGlu
aXRpYWxIZWlnaHQKKyAgICAgICAgKTsKKyAgICAgICAgZmJvLmNoZWNrQ29tcGxldGVuZXNzKCk7
CisKKyAgICAgICAgLy8gU2V0dXAgc2hhZGVycworICAgICAgICB0ZXhUb0Zib1NoYWRlci5zZXRV
bmlmb3Jtcyhjb250ZXh0LCB0ZXhUb0Zib1NoYWRlcklEKTsKKyAgICAgICAgdGV4RnJvbUZib1No
YWRlci5zZXRVbmlmb3Jtcyhjb250ZXh0LCB0ZXhGcm9tRmJvU2hhZGVySUQpOworICAgICAgICBm
bGF0U2hhZGVyLnNldENvbG9yKAorICAgICAgICAgICAgY29udGV4dCwgZmxhdFNoYWRlcklELCBk
ZU1hdGguYWRkKAorICAgICAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseShbMC4wLCAxLjAsIDAu
MCwgMS4wXSwgZmJvT3V0U2NhbGUpLCBmYm9PdXRCaWFzCisgICAgICAgICAgICApCisgICAgICAg
ICk7CisKKyAgICAgICAgLy8gUmVuZGVyIHF1YWRzCisgICAgICAgIGNvbnRleHQuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8uZ2V0RnJhbWVidWZmZXIoKSk7CisgICAgICAgIGNv
bnRleHQudmlld3BvcnQoMCwgMCwgaW5pdGlhbFdpZHRoLCBpbml0aWFsSGVpZ2h0KTsKKyAgICAg
ICAgZXMzZkZib1Rlc3RVdGlsLmNsZWFyQ29sb3JCdWZmZXIoCisgICAgICAgICAgICBjb250ZXh0
LCBjb2xvckZvcm1hdCwgWzAuMCwgMC4wLCAwLjAsIDEuMF0KKyAgICAgICAgKTsKKyAgICAgICAg
Y29udGV4dC5jbGVhcihnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklU
KTsKKyAgICAgICAgY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBxdWFkc1RleCk7
CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgIGNvbnRleHQsIHRleFRvRmJv
U2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuMF0KKyAgICAgICAgKTsK
KworICAgICAgICBpZiAoZmJvLmdldENvbmZpZygpLmNvbG9yVHlwZSA9PSBnbC5URVhUVVJFXzJE
KSB7CisgICAgICAgICAgICAvLyBSZW5kZXIgZmJvIHRvIHNjcmVlbgorICAgICAgICAgICAgY29u
dGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAg
Y29udGV4dC52aWV3cG9ydCgwLCAwLCBjb250ZXh0LmdldFdpZHRoKCksIGNvbnRleHQuZ2V0SGVp
Z2h0KCkpOworICAgICAgICAgICAgY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBm
Ym8uZ2V0Q29sb3JCdWZmZXIoKSk7CisgICAgICAgICAgICByclV0aWwuZHJhd1F1YWQoCisgICAg
ICAgICAgICAgICAgY29udGV4dCwgdGV4RnJvbUZib1NoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4w
XSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICAgICApOworICAgICAgICAgICAgLy8gUmVzdG9y
ZSBiaW5kaW5nCisgICAgICAgICAgICBjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvLmdldEZyYW1lYnVmZmVyKCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVz
aXplIGJ1ZmZlcnMKKyAgICAgICAgc3dpdGNoIChmYm8uZ2V0Q29uZmlnKCkuY29sb3JUeXBlKSB7
CisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgY29udGV4
dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYm8uZ2V0Q29sb3JCdWZmZXIoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC50ZXhJbWFnZTJERGVsZWdhdGUoCisgICAgICAgICAgICAgICAg
ICAgIGdsLlRFWFRVUkVfMkQsIDAsIGZiby5nZXRDb25maWcoKS5jb2xvckZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgbmV3V2lkdGgsIG5ld0hlaWdodAorICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2wuUkVOREVSQlVGRkVS
OgorICAgICAgICAgICAgICAgIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZG
RVIsIGZiby5nZXRDb2xvckJ1ZmZlcigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnJlbmRl
cmJ1ZmZlclN0b3JhZ2UoCisgICAgICAgICAgICAgICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgZmJv
LmdldENvbmZpZygpLmNvbG9yRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBuZXdXaWR0aCwg
bmV3SGVpZ2h0CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nv
bG9yIHR5cGUgdW5zdXBwb3J0ZWQnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXB0aCB8
fCBzdGVuY2lsKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGZiby5nZXRDb25maWcoKS5kZXB0aFN0
ZW5jaWxUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzJEOgorICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmJpbmRUZXh0dXJlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuVEVYVFVSRV8yRCwgZmJvLmdldERlcHRoU3RlbmNpbEJ1ZmZlcigpCisgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGV4SW1hZ2UyRERlbGVn
YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgMCwgZmJvLmdldENv
bmZpZygpLmRlcHRoU3RlbmNpbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1dp
ZHRoLCBuZXdIZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlJFTkRFUkJVRkZFUjoKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKAorICAgICAgICAgICAgICAg
ICAgICAgICAgZ2wuUkVOREVSQlVGRkVSLCBmYm8uZ2V0RGVwdGhTdGVuY2lsQnVmZmVyKCkKKyAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW5kZXJi
dWZmZXJTdG9yYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkVOREVSQlVGRkVSLCBm
Ym8uZ2V0Q29uZmlnKCkuZGVwdGhTdGVuY2lsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3V2lkdGgsIG5ld0hlaWdodAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVwdGggLyBzdGVuY2lsIHR5cGUgdW5zdXBwb3J0
ZWQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbmRlciB0byBy
ZXNpemVkIGZibworICAgICAgICBjb250ZXh0LnZpZXdwb3J0KDAsIDAsIG5ld1dpZHRoLCBuZXdI
ZWlnaHQpOworICAgICAgICBlczNmRmJvVGVzdFV0aWwuY2xlYXJDb2xvckJ1ZmZlcigKKyAgICAg
ICAgICAgIGNvbnRleHQsIGNvbG9yRm9ybWF0LCBbMS4wLCAwLjAsIDAuMCwgMS4wXQorICAgICAg
ICApOworICAgICAgICBjb250ZXh0LmNsZWFyKGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVO
Q0lMX0JVRkZFUl9CSVQpOworCisgICAgICAgIGNvbnRleHQuZW5hYmxlKGdsLkRFUFRIX1RFU1Qp
OworCisgICAgICAgIGNvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbWV0YWJhbGxz
VGV4KTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgY29udGV4dCwgdGV4
VG9GYm9TaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAg
ICApOworCisgICAgICAgIGNvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgcXVhZHNU
ZXgpOworICAgICAgICByclV0aWwuZHJhd1F1YWQoCisgICAgICAgICAgICBjb250ZXh0LCB0ZXhU
b0Zib1NoYWRlcklELCBbMC4wLCAwLjAsIC0xLjBdLCBbMS4wLCAxLjAsIDEuMF0KKyAgICAgICAg
KTsKKworICAgICAgICBjb250ZXh0LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICAgICAg
aWYgKHN0ZW5jaWwpIHsKKyAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGdsLlNDSVNTT1JfVEVT
VCk7CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyU3RlbmNpbCgxKTsKKyAgICAgICAgICAgIGNv
bnRleHQuc2Npc3NvcigxMCwgMTAsIDUsIDE1KTsKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXIo
Z2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgIGNvbnRleHQuZGlzYWJsZShnbC5T
Q0lTU09SX1RFU1QpOworCisgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShnbC5TVEVOQ0lMX1RF
U1QpOworICAgICAgICAgICAgY29udGV4dC5zdGVuY2lsRnVuYyhnbC5FUVVBTCwgMSwgMHhmZik7
CisgICAgICAgICAgICByclV0aWwuZHJhd1F1YWQoCisgICAgICAgICAgICAgICAgY29udGV4dCwg
ZmxhdFNoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAg
ICAgICApOworICAgICAgICAgICAgY29udGV4dC5kaXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5tX2NvbmZpZy5jb2xvclR5cGUgPT0gZ2wuVEVY
VFVSRV8yRCkgeworICAgICAgICAgICAgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG51bGwpOworICAgICAgICAgICAgY29udGV4dC52aWV3cG9ydCgwLCAwLCBjb250ZXh0
LmdldFdpZHRoKCksIGNvbnRleHQuZ2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgY29udGV4dC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYm8uZ2V0Q29sb3JCdWZmZXIoKSk7CisgICAgICAg
ICAgICByclV0aWwuZHJhd1F1YWQoCisgICAgICAgICAgICAgICAgY29udGV4dCwgdGV4RnJvbUZi
b1NoYWRlcklELCBbLTAuNSwgLTAuNSwgMC4wXSwgWzAuNSwgMC41LCAwLjBdCisgICAgICAgICAg
ICApOworICAgICAgICAgICAgZHN0LnJlYWRWaWV3cG9ydCgKKyAgICAgICAgICAgICAgICBjb250
ZXh0LCBbMCwgMCwgY29udGV4dC5nZXRXaWR0aCgpLCBjb250ZXh0LmdldEhlaWdodCgpXQorICAg
ICAgICAgICAgKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlczNmRmJvVGVzdFV0aWwu
cmVhZFBpeGVscygKKyAgICAgICAgICAgICAgICBjb250ZXh0LCBkc3QsIDAsIDAsIG5ld1dpZHRo
LCBuZXdIZWlnaHQsIGNvbG9yRm9ybWF0LAorICAgICAgICAgICAgICAgIGZib1JhbmdlSW5mby5s
b29rdXBTY2FsZSwgZmJvUmFuZ2VJbmZvLmxvb2t1cEJpYXMKKyAgICAgICAgICAgICk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNm
RmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJDYXNlfQorICAgICAqIEBwYXJhbSB7ZXMzZkZib1JlbmRl
clRlc3QuRmJvQ29uZmlnfSBjb25maWcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVycwor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmViaW5kCisgICAgICovCisgICAgZXMzZkZib1JlbmRl
clRlc3QuUmVjcmVhdGVCdWZmZXJzVGVzdCA9IGZ1bmN0aW9uKGNvbmZpZywgYnVmZmVycywgcmVi
aW5kKSB7CisgICAgICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UuY2FsbCgKKyAg
ICAgICAgICAgIHRoaXMsIGNvbmZpZy5nZXROYW1lKCkgKworICAgICAgICAgICAgKHJlYmluZCA/
ICcnIDogJ19ub19yZWJpbmQnKSwKKyAgICAgICAgICAgICdSZWNyZWF0ZSBidWZmZXJzJywgY29u
ZmlnCisgICAgICAgICk7CisgICAgICAgIHRoaXMubV9idWZmZXJzID0gYnVmZmVyczsKKyAgICAg
ICAgdGhpcy5tX3JlYmluZCA9IHJlYmluZDsKKyAgICB9OworCisgICAgZXMzZkZib1JlbmRlclRl
c3QuUmVjcmVhdGVCdWZmZXJzVGVzdC5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRl
KGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlckNhc2UucHJvdG90eXBlKTsKKworICAgIGVzM2ZG
Ym9SZW5kZXJUZXN0LlJlY3JlYXRlQnVmZmVyc1Rlc3QucHJvdG90eXBlLmNvbnN0cnV0b3IgPQor
ICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5SZWNyZWF0ZUJ1ZmZlcnNUZXN0OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHs/c2dsckdMQ29udGV4dC5HTENvbnRleHR8c2dsclJlZmVyZW5jZUNv
bnRleHQuUmVmZXJlbmNlQ29udGV4dH0KKyAgICAgKiBjdHgKKyAgICAgKiBAcGFyYW0ge3RjdVN1
cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkZib1JlbmRlclRlc3QuUmVjcmVh
dGVCdWZmZXJzVGVzdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oCisgICAgICAgIGN0eCwg
ZHN0KSB7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICov
CisgICAgICAgIHZhciBjb2xvckZvcm1hdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxG
b3JtYXQoCisgICAgICAgICAgICB0aGlzLm1fY29uZmlnLmNvbG9yRm9ybWF0CisgICAgICAgICk7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8KKyAgICAgICAg
dmFyIGZib1NhbXBsZXJUeXBlID0gZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEVHlwZShjb2xv
ckZvcm1hdCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8K
KyAgICAgICAgdmFyIGZib091dHB1dFR5cGUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRP
dXRwdXRUeXBlKGNvbG9yRm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRp
bC5UZXh0dXJlRm9ybWF0SW5mb30gKi8KKyAgICAgICAgdmFyIGZib1JhbmdlSW5mbyA9IHRjdVRl
eHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKGNvbG9yRm9ybWF0KTsKKyAgICAgICAgdmFy
IGZib091dFNjYWxlID0gZGVNYXRoLnN1YnRyYWN0KAorICAgICAgICAgICAgZmJvUmFuZ2VJbmZv
LnZhbHVlTWF4LCBmYm9SYW5nZUluZm8udmFsdWVNaW4KKyAgICAgICAgKTsKKyAgICAgICAgdmFy
IGZib091dEJpYXMgPSBmYm9SYW5nZUluZm8udmFsdWVNaW47CisKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4VG9G
Ym9TaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAg
ICAgIFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRdLCBmYm9PdXRwdXRUeXBlCisg
ICAgICAgICk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNo
YWRlcn0gKi8KKyAgICAgICAgdmFyIHRleEZyb21GYm9TaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RV
dGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAgICAgIFtmYm9TYW1wbGVyVHlwZV0sIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNAorICAgICAgICApOworCisgICAgICAgIC8qKiBA
dHlwZSB7ZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGZs
YXRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlcihmYm9PdXRwdXRU
eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAgIHZhciB0ZXhUb0Zi
b1NoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0odGV4VG9GYm9TaGFkZXIpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgdmFyIHRleEZyb21GYm9TaGFkZXJJRCA9IGN0
eC5jcmVhdGVQcm9ncmFtKHRleEZyb21GYm9TaGFkZXIpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8KKyAgICAgICAgdmFyIGZsYXRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGZs
YXRTaGFkZXIpOworCisgICAgICAgIHZhciB3aWR0aCA9IDEyODsKKyAgICAgICAgdmFyIGhlaWdo
dCA9IDEyODsKKyAgICAgICAgdmFyIG1ldGFiYWxsc1RleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgIHZhciBxdWFkc1RleCA9IGN0eC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHZh
ciBzdGVuY2lsID0gZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgdGhpcy5tX2NvbmZpZy5i
dWZmZXJzLCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQsIGRlTWF0aC5CaW5hcnlPcC5BTkQKKyAgICAg
ICAgKSAhPSAwOworCisgICAgICAgIGVzM2ZGYm9SZW5kZXJUZXN0LmNyZWF0ZVF1YWRzVGV4MkQo
CisgICAgICAgICAgICBjdHgsIHF1YWRzVGV4LCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIDY0
LCA2NAorICAgICAgICApOworICAgICAgICBlczNmRmJvUmVuZGVyVGVzdC5jcmVhdGVNZXRhYmFs
bHNUZXgyRCgKKyAgICAgICAgICAgIGN0eCwgbWV0YWJhbGxzVGV4LCBnbC5SR0IsIGdsLlVOU0lH
TkVEX0JZVEUsIDY0LCA2NAorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZi
b1JlbmRlclRlc3QuRnJhbWVidWZmZXJ9ICovCisgICAgICAgIHZhciBmYm8gPSBuZXcgZXMzZkZi
b1JlbmRlclRlc3QuRnJhbWVidWZmZXIoCisgICAgICAgICAgICBjdHgsIHRoaXMubV9jb25maWcs
IHdpZHRoLCBoZWlnaHQKKyAgICAgICAgKTsKKyAgICAgICAgZmJvLmNoZWNrQ29tcGxldGVuZXNz
KCk7CisKKyAgICAgICAgLy8gU2V0dXAgc2hhZGVycworICAgICAgICB0ZXhUb0Zib1NoYWRlci5z
ZXRPdXRTY2FsZUJpYXMoZmJvT3V0U2NhbGUsIGZib091dEJpYXMpOworICAgICAgICB0ZXhGcm9t
RmJvU2hhZGVyLnNldFRleFNjYWxlQmlhcygKKyAgICAgICAgICAgIDAsIGZib1JhbmdlSW5mby5s
b29rdXBTY2FsZSwgZmJvUmFuZ2VJbmZvLmxvb2t1cEJpYXMKKyAgICAgICAgKTsKKyAgICAgICAg
dGV4VG9GYm9TaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCB0ZXhUb0Zib1NoYWRlcklEKTsKKyAgICAg
ICAgdGV4RnJvbUZib1NoYWRlci5zZXRVbmlmb3JtcyhjdHgsIHRleEZyb21GYm9TaGFkZXJJRCk7
CisgICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3IoCisgICAgICAgICAgICBjdHgsIGZsYXRTaGFk
ZXJJRCwgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzAuMCwg
MC4wLCAxLjAsIDEuMF0sIGZib091dFNjYWxlCisgICAgICAgICAgICApLCBmYm9PdXRCaWFzKQor
ICAgICAgICApOworCisgICAgICAgIC8vIERyYXcgc2NlbmUKKyAgICAgICAgY3R4LmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvLmdldEZyYW1lYnVmZmVyKCkpOworICAgICAgICBj
dHgudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVzM2ZGYm9UZXN0VXRp
bC5jbGVhckNvbG9yQnVmZmVyKAorICAgICAgICAgICAgY3R4LCBjb2xvckZvcm1hdCwgWzEuMCwg
MC4wLCAwLjAsIDEuMF0KKyAgICAgICAgKTsKKyAgICAgICAgY3R4LmNsZWFyKGdsLkRFUFRIX0JV
RkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgICAgIGN0eC5lbmFibGUo
Z2wuREVQVEhfVEVTVCk7CisKKyAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHF1YWRzVGV4KTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgY3R4LCB0
ZXhUb0Zib1NoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAg
ICAgICk7CisKKyAgICAgICAgY3R4LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICAgICAg
aWYgKHN0ZW5jaWwpIHsKKyAgICAgICAgICAgIGN0eC5lbmFibGUoZ2wuU0NJU1NPUl9URVNUKTsK
KyAgICAgICAgICAgIGN0eC5zY2lzc29yKAorICAgICAgICAgICAgICAgIE1hdGguZmxvb3Iod2lk
dGggLyA0KSwgTWF0aC5mbG9vcihoZWlnaHQgLyA0KSwKKyAgICAgICAgICAgICAgICBNYXRoLmZs
b29yKHdpZHRoIC8gMiksIE1hdGguZmxvb3IoaGVpZ2h0IC8gMikKKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICBjdHguY2xlYXJTdGVuY2lsKDEpOworICAgICAgICAgICAgY3R4LmNsZWFyKGds
LlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICBjdHguZGlzYWJsZShnbC5TQ0lTU09S
X1RFU1QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVjcmVhdGUgYnVmZmVycworICAgICAg
ICBpZiAoIXRoaXMubV9yZWJpbmQpCisgICAgICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAg
ICAgICAgZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgICAgIHRoaXMubV9idWZmZXJzLCBk
ZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgICAgIGdsLkRFUFRIX0JVRkZFUl9CSVQs
CisgICAgICAgICAgICAgICAgICAgIGdsLlNURU5DSUxfQlVGRkVSX0JJVCwKKyAgICAgICAgICAg
ICAgICAgICAgZGVNYXRoLkJpbmFyeU9wLk9SCisgICAgICAgICAgICAgICAgKSwgZGVNYXRoLkJp
bmFyeU9wLkFORAorICAgICAgICAgICAgKSA9PSAwIHx8IGRlTWF0aC5iaW5hcnlPcCgKKyAgICAg
ICAgICAgICAgICB0aGlzLm1fYnVmZmVycywgZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAg
ICAgICAgICBnbC5ERVBUSF9CVUZGRVJfQklULAorICAgICAgICAgICAgICAgICAgICBnbC5TVEVO
Q0lMX0JVRkZFUl9CSVQsCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5CaW5hcnlPcC5PUgor
ICAgICAgICAgICAgICAgICksIGRlTWF0aC5CaW5hcnlPcC5BTkQKKyAgICAgICAgICAgICkgPT0g
ZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY29uZmlnLmJ1ZmZl
cnMsIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLkRFUFRIX0JV
RkZFUl9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQs
CisgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAgICAgICAg
ICAgICAgICAgKSwgZGVNYXRoLkJpbmFyeU9wLkFORAorICAgICAgICAgICAgKSwgJ0RlcHRoL3N0
ZW5jaWwgYnVmZmVycyBhcmUgbm90IGRpc2FibGVkIG9yIG5vdCAnICsKKyAgICAgICAgICAgICdl
cXVhbCB0byB0aGUgY29uZmlnXCdzIGRlcHRoL3N0ZW5jaWwgYnVmZmVyIHN0YXRlJywKKyAgICAg
ICAgICAgIGZhbHNlLCB0cnVlCisgICAgICAgICk7CisKKyAgICAgICAgLy8gUmVjcmVhdGUuCisg
ICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAgICAgICAgICB2
YXIgYml0ID0gbmR4ID09IDAgPyBnbC5DT0xPUl9CVUZGRVJfQklUIDoKKyAgICAgICAgICAgICAg
ICAoZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgICAg
ICAgICB2YXIgdHlwZSA9IG5keCA9PSAwID8gZmJvLmdldENvbmZpZygpLmNvbG9yVHlwZSA6Cisg
ICAgICAgICAgICAgICAgZmJvLmdldENvbmZpZygpLmRlcHRoU3RlbmNpbFR5cGU7CisgICAgICAg
ICAgICB2YXIgZm9ybWF0ID0gbmR4ID09IDAgPyBmYm8uZ2V0Q29uZmlnKCkuY29sb3JGb3JtYXQg
OgorICAgICAgICAgICAgICAgIGZiby5nZXRDb25maWcoKS5kZXB0aFN0ZW5jaWxGb3JtYXQ7Cisg
ICAgICAgICAgICB2YXIgYnVmID0gbmR4ID09IDAgPyBmYm8uZ2V0Q29sb3JCdWZmZXIoKSA6Cisg
ICAgICAgICAgICAgICAgZmJvLmdldERlcHRoU3RlbmNpbEJ1ZmZlcigpOworCisgICAgICAgICAg
ICBpZiAoZGVNYXRoLmJpbmFyeU9wKHRoaXMubV9idWZmZXJzLCBiaXQsIGRlTWF0aC5CaW5hcnlP
cC5BTkQpID09IDApCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgICAgICAgICAgY3R4LmRlbGV0ZVRleHR1cmUoLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9
ICovIChidWYpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmID0gY3R4LmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIGJ1
Zik7CisgICAgICAgICAgICAgICAgICAgIGN0eC50ZXhJbWFnZTJERGVsZWdhdGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQK
KyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LnRleFBhcmFt
ZXRlcmkoCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01JTl9GSUxURVIsIGdsLk5FQVJFU1QKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgICAgICAgICBn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QKKyAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBjYXNlIGdsLlJFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgICAgICAgICAgY3R4LmRlbGV0
ZVJlbmRlcmJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xS
ZW5kZXJidWZmZXJ9ICovIChidWYpCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgICAgIGJ1ZiA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBidWYpOworICAgICAg
ICAgICAgICAgICAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLlJFTkRFUkJVRkZFUiwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0CisgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBv
cnRlZCBidWZmZXIgdHlwZScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobmR4
ID09IDApIHsKKyAgICAgICAgICAgICAgICBmYm8ubV9jb2xvckJ1ZmZlciA9IGJ1ZjsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmJvLm1fZGVwdGhTdGVuY2lsQnVmZmVy
ID0gYnVmOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmViaW5kLgor
ICAgICAgICBpZiAodGhpcy5tX3JlYmluZCkgeworICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgMzsgbmR4KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgYml0ID0gbmR4ID09IDAg
PyBnbC5DT0xPUl9CVUZGRVJfQklUIDoKKyAgICAgICAgICAgICAgICAgICAgbmR4ID09IDEgPyBn
bC5ERVBUSF9CVUZGRVJfQklUIDoKKyAgICAgICAgICAgICAgICAgICAgbmR4ID09IDIgPyBnbC5T
VEVOQ0lMX0JVRkZFUl9CSVQgOiAwOworICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IG5keCA9
PSAwID8gZ2wuQ09MT1JfQVRUQUNITUVOVDAgOgorICAgICAgICAgICAgICAgICAgICBuZHggPT0g
MSA/IGdsLkRFUFRIX0FUVEFDSE1FTlQgOgorICAgICAgICAgICAgICAgICAgICBuZHggPT0gMiA/
IGdsLlNURU5DSUxfQVRUQUNITUVOVCA6IDA7CisgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBu
ZHggPT0gMCA/IGZiby5nZXRDb25maWcoKS5jb2xvclR5cGUgOgorICAgICAgICAgICAgICAgICAg
ICBmYm8uZ2V0Q29uZmlnKCkuZGVwdGhTdGVuY2lsVHlwZTsKKyAgICAgICAgICAgICAgICB2YXIg
YnVmID0gbmR4ID09IDAgPyBmYm8uZ2V0Q29sb3JCdWZmZXIoKSA6CisgICAgICAgICAgICAgICAg
ICAgIGZiby5nZXREZXB0aFN0ZW5jaWxCdWZmZXIoKTsKKworICAgICAgICAgICAgICAgIGlmIChk
ZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fYnVmZmVycywg
Yml0LCBkZU1hdGguQmluYXJ5T3AuQU5EKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjdHguZnJh
bWVidWZmZXJUZXh0dXJlMkQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuRlJBTUVC
VUZGRVIsIHBvaW50LCBnbC5URVhUVVJFXzJELCBidWYsIDAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICBjYXNlIGdsLlJFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5G
UkFNRUJVRkZFUiwgcG9pbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmCisgICAgICAgICAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignSW52YWxpZCBidWZmZXIgdHlwZScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5tX3JlYmluZCkKKyAgICAgICAgICAg
IGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZiby5nZXRGcmFtZWJ1ZmZlcigp
KTsKKworICAgICAgICBjdHguY2xlYXJTdGVuY2lsKDApOworCisgICAgICAgIC8vIFxub3RlIENs
ZWFyIG9ubHkgYnVmZmVycyB0aGF0IHdlcmUgcmUtY3JlYXRlZAorICAgICAgICBjdHguY2xlYXIo
CisgICAgICAgICAgICBkZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgdGhpcy5tX2J1
ZmZlcnMsCisgICAgICAgICAgICAgICAgZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgICAg
ICAgICBnbC5ERVBUSF9CVUZGRVJfQklULAorICAgICAgICAgICAgICAgICAgICBnbC5TVEVOQ0lM
X0JVRkZFUl9CSVQsCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5CaW5hcnlPcC5PUgorICAg
ICAgICAgICAgICAgICksIGRlTWF0aC5CaW5hcnlPcC5BTkQKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKTsKKworICAgICAgICBpZiAoZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgdGhpcy5t
X2J1ZmZlcnMsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGRlTWF0aC5CaW5hcnlPcC5BTkQpKSB7Cisg
ICAgICAgICAgICAvLyBDbGVhcmluZyBvZiBpbnRlZ2VyIGJ1ZmZlcnMgaXMgdW5kZWZpbmVkCisg
ICAgICAgICAgICAvLyBzbyBkbyBjbGVhcmluZyBieSByZW5kZXJpbmcgZmxhdCBjb2xvci4KKyAg
ICAgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgICAgICBjdHgsIGZsYXRTaGFk
ZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAgICAgICAgKTsK
KyAgICAgICAgfQorCisgICAgICAgIGN0eC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICAg
ICAgaWYgKHN0ZW5jaWwpIHsKKyAgICAgICAgICAgIC8vIFxub3RlIFN0ZW5jaWwgdGVzdCBlbmFi
bGVkIG9ubHkgaWYgd2UgaGF2ZSBzdGVuY2lsIGJ1ZmZlcgorICAgICAgICAgICAgY3R4LmVuYWJs
ZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICAgICAgY3R4LnN0ZW5jaWxGdW5jKGdsLkVRVUFM
LCAwLCAweGZmKTsKKyAgICAgICAgfQorICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgbWV0YWJhbGxzVGV4KTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAg
ICAgY3R4LCB0ZXhUb0Zib1NoYWRlcklELCBbLTEuMCwgLTEuMCwgMS4wXSwgWzEuMCwgMS4wLCAt
MS4wXQorICAgICAgICApOworICAgICAgICBpZiAoc3RlbmNpbCkKKyAgICAgICAgICAgIGN0eC5k
aXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAgICAgICAgY3R4LmRpc2FibGUoZ2wuREVQVEhf
VEVTVCk7CisKKyAgICAgICAgaWYgKGZiby5nZXRDb25maWcoKS5jb2xvclR5cGUgPT0gZ2wuVEVY
VFVSRV8yRCkgeworICAgICAgICAgICAgLy8gVW5iaW5kIGZibworICAgICAgICAgICAgY3R4LmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgICAgIC8vIERy
YXcgdG8gc2NyZWVuCisgICAgICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
ZmJvLmdldENvbG9yQnVmZmVyKCkpOworICAgICAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIGN0
eC5nZXRXaWR0aCgpLCBjdHguZ2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgcnJVdGlsLmRyYXdR
dWFkKAorICAgICAgICAgICAgICAgIGN0eCwgdGV4RnJvbUZib1NoYWRlcklELCBbLTEuMCwgLTEu
MCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICAgICApOworCisgICAgICAgICAgICAv
LyBSZWFkIGZyb20gc2NyZWVuCisgICAgICAgICAgICBkc3QucmVhZFZpZXdwb3J0KGN0eCwgWzAs
IDAsIGN0eC5nZXRXaWR0aCgpLCBjdHguZ2V0SGVpZ2h0KCldKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIFJlYWQgZnJvbSBmYm8KKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRp
bC5yZWFkUGl4ZWxzKAorICAgICAgICAgICAgICAgIGN0eCwgZHN0LCAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCBjb2xvckZvcm1hdCwKKyAgICAgICAgICAgICAgICBmYm9SYW5nZUluZm8ubG9va3VwU2Nh
bGUsIGZib1JhbmdlSW5mby5sb29rdXBCaWFzCisgICAgICAgICAgICApOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8vIEZib0dyb3VwcworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVz
M2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlclRlc3RHcm91cCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdyZW5kZXInLCAnUmVuZGVyaW5nIFRl
c3RzJyk7CisgICAgfTsKKworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRlclRlc3RHcm91
cC5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0
LnByb3RvdHlwZSk7CisKKyAgICBlczNmRmJvUmVuZGVyVGVzdC5GYm9SZW5kZXJUZXN0R3JvdXAu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZkZib1JlbmRlclRlc3QuRmJvUmVu
ZGVyVGVzdEdyb3VwOworCisgICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0KKyAgICAgKi8K
KyAgICB2YXIgRm9ybWF0VHlwZSA9IHsKKyAgICAgICAgRkxPQVQ6IDAsCisgICAgICAgIElOVDog
MSwKKyAgICAgICAgVUlOVDogMgorICAgIH07CisKKyAgICAvLyBSZXF1aXJlZCBieSBzcGVjaWZp
Y2F0aW9uLgorICAgIC8qKgorICAgICAqIEB0eXBlZGVmIHt7Zm9ybWF0OiBudW1iZXIsIHR5cGU6
IEZvcm1hdFR5cGV9fQorICAgICAqLworICAgIHZhciBDb2xvckZvcm1hdFN0cnVjdDsKKworICAg
IC8qKgorICAgICAqIEB0eXBlZGVmIHt7Zm9ybWF0OiBudW1iZXIsIGRlcHRoOiBib29sZWFuLCBz
dGVuY2lsOiBib29sZWFufX0KKyAgICAgKi8KKyAgICB2YXIgRGVwdGhTdGVuY2lsRm9ybWF0U3Ry
dWN0OworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJU
ZXN0LkZib1JlbmRlclRlc3RHcm91cC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgb2JqZWN0VHlwZXMgPSBbCisgICAgICAgICAgICBnbC5URVhUVVJFXzJELAorICAg
ICAgICAgICAgZ2wuUkVOREVSQlVGRkVSCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxDb2xvckZvcm1hdFN0cnVjdD59ICovIHZhciBjb2xvckZvcm1hdHMgPSBbeworICAg
ICAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCQTMyRiwgdHlwZTogRm9ybWF0VHlwZS5GTE9BVAor
ICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0JBMzJJLCB0eXBl
OiBGb3JtYXRUeXBlLklOVAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0
OiBnbC5SR0JBMzJVSSwgdHlwZTogRm9ybWF0VHlwZS5VSU5UCisgICAgICAgICAgICB9LHsKKyAg
ICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQkExNkYsIHR5cGU6IEZvcm1hdFR5cGUuRkxPQVQK
KyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCQTE2SSwgdHlw
ZTogRm9ybWF0VHlwZS5JTlQKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGZvcm1h
dDogZ2wuUkdCQTE2VUksIHR5cGU6IEZvcm1hdFR5cGUuVUlOVAorICAgICAgICAgICAgfSwvKnsK
KyAgICAgICAgICAgICAgICAvLyBSR0IxNkYgaXNuJ3QgbWFkZSBjb2xvci1yZW5kZXJhYmxlIHRo
cm91Z2ggV2ViR0wncyBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0CisgICAgICAgICAgICAgICAgZm9y
bWF0OiBnbC5SR0IxNkYsIHR5cGU6IEZvcm1hdFR5cGUuRkxPQVQKKyAgICAgICAgICAgIH0sKi97
CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0JBOEksIHR5cGU6IEZvcm1hdFR5cGUuSU5U
CisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQkE4VUksIHR5
cGU6IEZvcm1hdFR5cGUuVUlOVAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9y
bWF0OiBnbC5SR0IxMF9BMlVJLCB0eXBlOiBGb3JtYXRUeXBlLlVJTlQKKyAgICAgICAgICAgIH0s
eworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUjExRl9HMTFGX0IxMEYsIHR5cGU6IEZvcm1h
dFR5cGUuRkxPQVQKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wu
UkczMkYsIHR5cGU6IEZvcm1hdFR5cGUuRkxPQVQKKyAgICAgICAgICAgIH0seworICAgICAgICAg
ICAgICAgIGZvcm1hdDogZ2wuUkczMkksIHR5cGU6IEZvcm1hdFR5cGUuSU5UCisgICAgICAgICAg
ICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHMzJVSSwgdHlwZTogRm9ybWF0VHlw
ZS5VSU5UCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHMTZG
LCB0eXBlOiBGb3JtYXRUeXBlLkZMT0FUCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAg
ICBmb3JtYXQ6IGdsLlJHMTZJLCB0eXBlOiBGb3JtYXRUeXBlLklOVAorICAgICAgICAgICAgfSx7
CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SRzE2VUksIHR5cGU6IEZvcm1hdFR5cGUuVUlO
VAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SRzgsIHR5cGU6
IEZvcm1hdFR5cGUuRkxPQVQKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGZvcm1h
dDogZ2wuUkc4SSwgdHlwZTogRm9ybWF0VHlwZS5JTlQKKyAgICAgICAgICAgIH0seworICAgICAg
ICAgICAgICAgIGZvcm1hdDogZ2wuUkc4VUksIHR5cGU6IEZvcm1hdFR5cGUuVUlOVAorICAgICAg
ICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SMzJGLCB0eXBlOiBGb3JtYXRU
eXBlLkZMT0FUCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlIz
MkksIHR5cGU6IEZvcm1hdFR5cGUuSU5UCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAg
ICBmb3JtYXQ6IGdsLlIzMlVJLCB0eXBlOiBGb3JtYXRUeXBlLlVJTlQKKyAgICAgICAgICAgIH0s
eworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUjE2RiwgdHlwZTogRm9ybWF0VHlwZS5GTE9B
VAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SMTZJLCB0eXBl
OiBGb3JtYXRUeXBlLklOVAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0
OiBnbC5SMTZVSSwgdHlwZTogRm9ybWF0VHlwZS5VSU5UCisgICAgICAgICAgICB9LHsKKyAgICAg
ICAgICAgICAgICBmb3JtYXQ6IGdsLlI4LCB0eXBlOiBGb3JtYXRUeXBlLkZMT0FUCisgICAgICAg
ICAgICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlI4SSwgdHlwZTogRm9ybWF0VHlw
ZS5JTlQKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuUjhVSSwg
dHlwZTogRm9ybWF0VHlwZS5VSU5UCisgICAgICAgIH1dOworCisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8RGVwdGhTdGVuY2lsRm9ybWF0U3RydWN0Pn0gKi8KKyAgICAgICAgdmFyIGRlcHRoU3Rl
bmNpbEZvcm1hdHMgPSBbeworICAgICAgICAgICAgICAgIGZvcm1hdDogZ2wuREVQVEhfQ09NUE9O
RU5UMzJGLCBkZXB0aDogdHJ1ZSwgc3RlbmNpbDogZmFsc2UKKyAgICAgICAgICAgIH0seworICAg
ICAgICAgICAgICAgIGZvcm1hdDogZ2wuREVQVEhfQ09NUE9ORU5UMjQsIGRlcHRoOiB0cnVlLCBz
dGVuY2lsOiBmYWxzZQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBn
bC5ERVBUSF9DT01QT05FTlQxNiwgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNlCisgICAgICAg
ICAgICB9LHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLkRFUFRIMzJGX1NURU5DSUw4LCBk
ZXB0aDogdHJ1ZSwgc3RlbmNpbDogdHJ1ZQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAg
ICAgZm9ybWF0OiBnbC5ERVBUSDI0X1NURU5DSUw4LCBkZXB0aDogdHJ1ZSwgc3RlbmNpbDogdHJ1
ZQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5TVEVOQ0lMX0lO
REVYOCwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiB0cnVlCisgICAgICAgIH1dOworCisgICAgICAg
IC8qKiBAdHlwZSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnfSAqLyB2YXIgY29uZmlnOwor
ICAgICAgICB2YXIgY29sb3JUeXBlOworICAgICAgICB2YXIgc3RlbmNpbFR5cGU7CisgICAgICAg
IHZhciBjb2xvckZtdDsKKyAgICAgICAgdmFyIGRlcHRoOworICAgICAgICB2YXIgc3RlbmNpbDsK
KyAgICAgICAgdmFyIGRlcHRoU3RlbmNpbFR5cGU7CisgICAgICAgIHZhciBkZXB0aFN0ZW5jaWxG
b3JtYXQ7CisKKyAgICAgICAgLy8gLnN0ZW5jaWxfY2xlYXIKKyAgICAgICAgLyoqIEB0eXBlIHt0
Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHN0ZW5jaWxDbGVhckdyb3VwID0g
bmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ3N0ZW5jaWxfY2xlYXInLCAn
U3RlbmNpbCBidWZmZXIgY2xlYXJzJworICAgICAgICApOworCisgICAgICAgIHRoaXMuYWRkQ2hp
bGQoc3RlbmNpbENsZWFyR3JvdXApOworCisgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7IGZt
dE5keCA8IGRlcHRoU3RlbmNpbEZvcm1hdHMubGVuZ3RoOyBmbXROZHgrKykgeworICAgICAgICAg
ICAgY29sb3JUeXBlID0gZ2wuVEVYVFVSRV8yRDsKKyAgICAgICAgICAgIHN0ZW5jaWxUeXBlID0g
Z2wuUkVOREVSQlVGRkVSOworICAgICAgICAgICAgY29sb3JGbXQgPSBnbC5SR0JBODsKKworICAg
ICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxGb3JtYXRzW2ZtdE5keF0uc3RlbmNpbCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY29uZmlnID0gbmV3IGVzM2ZGYm9S
ZW5kZXJUZXN0LkZib0NvbmZpZygKKyAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklU
IHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklULAorICAgICAgICAgICAgICAgIGNvbG9yVHlwZSwgY29s
b3JGbXQsIHN0ZW5jaWxUeXBlLAorICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdHNb
Zm10TmR4XS5mb3JtYXQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBzdGVuY2lsQ2xlYXJH
cm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZkZib1JlbmRlclRlc3QuU3Rl
bmNpbENsZWFyc1Rlc3QoY29uZmlnKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIC5zaGFyZWRfY29sb3JidWZmZXJfY2xlYXIKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHNoYXJlZENvbG9yYnVmZmVyQ2xlYXJH
cm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICdzaGFyZWRfY29s
b3JidWZmZXJfY2xlYXInLCAnU2hhZGVyIGNvbG9yYnVmZmVyIGNsZWFycycKKyAgICAgICAgKTsK
KworICAgICAgICB0aGlzLmFkZENoaWxkKHNoYXJlZENvbG9yYnVmZmVyQ2xlYXJHcm91cCk7CisK
KyAgICAgICAgZm9yICh2YXIgY29sb3JGbXROZHggPSAwOworICAgICAgICAgICAgY29sb3JGbXRO
ZHggPCBjb2xvckZvcm1hdHMubGVuZ3RoOworICAgICAgICAgICAgY29sb3JGbXROZHgrKykgewor
CisgICAgICAgICAgICAvLyBDbGVhcmluZyBvZiBpbnRlZ2VyIGJ1ZmZlcnMgaXMgdW5kZWZpbmVk
LgorICAgICAgICAgICAgaWYgKGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0udHlwZSA9PSBGb3Jt
YXRUeXBlLklOVCB8fAorICAgICAgICAgICAgICAgIGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0u
dHlwZSA9PSBGb3JtYXRUeXBlLlVJTlQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGZvciAodmFyIHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgb2JqZWN0VHlwZXMubGVu
Z3RoOyB0eXBlTmR4KyspIHsKKyAgICAgICAgICAgICAgICBjb25maWcgPSBuZXcgZXMzZkZib1Jl
bmRlclRlc3QuRmJvQ29uZmlnKAorICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJf
QklULCBvYmplY3RUeXBlc1t0eXBlTmR4XSwKKyAgICAgICAgICAgICAgICAgICAgY29sb3JGb3Jt
YXRzW2NvbG9yRm10TmR4XS5mb3JtYXQsIGdsLk5PTkUsIGdsLk5PTkUKKyAgICAgICAgICAgICAg
ICApOworICAgICAgICAgICAgICAgIHNoYXJlZENvbG9yYnVmZmVyQ2xlYXJHcm91cC5hZGRDaGls
ZCgKKyAgICAgICAgICAgICAgICAgICAgbmV3IGVzM2ZGYm9SZW5kZXJUZXN0LlNoYXJlZENvbG9y
YnVmZmVyQ2xlYXJzVGVzdChjb25maWcpCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5zaGFyZWRfY29sb3JidWZmZXIKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTx0Y3VUZXN0Q2FzZS5EZXFwVGVzdD59ICovIHZhciBzaGFyZWRDb2xv
cmJ1ZmZlckdyb3VwID0gW107CisgICAgICAgIHZhciBudW1TaGFyZWRDb2xvcmJ1ZmZlckdyb3Vw
cyA9IDM7CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1TaGFyZWRDb2xvcmJ1ZmZl
ckdyb3VwczsgKytpaSkgeworICAgICAgICAgICAgc2hhcmVkQ29sb3JidWZmZXJHcm91cFtpaV0g
PSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAgJ3NoYXJlZF9jb2xv
cmJ1ZmZlcicsICdTaGFyZWQgY29sb3JidWZmZXIgdGVzdHMnCisgICAgICAgICAgICApOworICAg
ICAgICAgICAgdGhpcy5hZGRDaGlsZChzaGFyZWRDb2xvcmJ1ZmZlckdyb3VwW2lpXSk7CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKHZhciBjb2xvckZtdE5keCA9IDA7IGNvbG9yRm10TmR4IDwg
Y29sb3JGb3JtYXRzLmxlbmd0aDsgY29sb3JGbXROZHgrKykgeworCisgICAgICAgICAgICBkZXB0
aFN0ZW5jaWxUeXBlID0gZ2wuUkVOREVSQlVGRkVSOworICAgICAgICAgICAgZGVwdGhTdGVuY2ls
Rm9ybWF0ID0gZ2wuREVQVEgyNF9TVEVOQ0lMODsKKworICAgICAgICAgICAgLy8gQmxlbmRpbmcg
d2l0aCBpbnRlZ2VyIGJ1ZmZlcnMgYW5kIGZwMzIgdGFyZ2V0cyBpcyBub3Qgc3VwcG9ydGVkLgor
ICAgICAgICAgICAgaWYgKGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0udHlwZSA9PSBGb3JtYXRU
eXBlLklOVCB8fAorICAgICAgICAgICAgICAgIGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0udHlw
ZSA9PSBGb3JtYXRUeXBlLlVJTlQgfHwKKyAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHNbY29s
b3JGbXROZHhdLmZvcm1hdCA9PSBnbC5SR0JBMzJGIHx8CisgICAgICAgICAgICAgICAgY29sb3JG
b3JtYXRzW2NvbG9yRm10TmR4XS5mb3JtYXQgPT0gZ2wuUkdCMzJGIHx8CisgICAgICAgICAgICAg
ICAgY29sb3JGb3JtYXRzW2NvbG9yRm10TmR4XS5mb3JtYXQgPT0gZ2wuUkczMkYgfHwKKyAgICAg
ICAgICAgICAgICBjb2xvckZvcm1hdHNbY29sb3JGbXROZHhdLmZvcm1hdCA9PSBnbC5SMzJGKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKHZhciB0eXBlTmR4
ID0gMDsgdHlwZU5keCA8IG9iamVjdFR5cGVzLmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWd9ICovCisgICAg
ICAgICAgICAgICAgdmFyIGNvbG9yT25seUNvbmZpZyA9IG5ldyBlczNmRmJvUmVuZGVyVGVzdC5G
Ym9Db25maWcoCisgICAgICAgICAgICAgICAgICAgIGdsLkNPTE9SX0JVRkZFUl9CSVQsIG9iamVj
dFR5cGVzW3R5cGVOZHhdLAorICAgICAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHNbY29sb3JG
bXROZHhdLmZvcm1hdCwgZ2wuTk9ORSwgZ2wuTk9ORQorICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWd9ICovCisg
ICAgICAgICAgICAgICAgdmFyIGNvbG9yRGVwdGhDb25maWcgPSBuZXcgZXMzZkZib1JlbmRlclRl
c3QuRmJvQ29uZmlnKAorICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwg
Z2wuREVQVEhfQlVGRkVSX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlwZXNbdHlw
ZU5keF0sIGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0uZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICBkZXB0aFN0ZW5jaWxUeXBlLCBkZXB0aFN0ZW5jaWxGb3JtYXQKKyAgICAgICAgICAgICAg
ICApOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1JlbmRlclRlc3QuRmJvQ29u
ZmlnfSAqLworICAgICAgICAgICAgICAgIHZhciBjb2xvckRlcHRoU3RlbmNpbENvbmZpZyA9Cisg
ICAgICAgICAgICAgICAgICAgIG5ldyBlczNmRmJvUmVuZGVyVGVzdC5GYm9Db25maWcoCisgICAg
ICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdsLkRFUFRIX0JVRkZFUl9CSVQgfAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2wuU1RFTkNJTF9CVUZGRVJfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlw
ZXNbdHlwZU5keF0sIGNvbG9yRm9ybWF0c1tjb2xvckZtdE5keF0uZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsVHlwZSwgZGVwdGhTdGVuY2lsRm9ybWF0CisgICAg
ICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHNoYXJlZENvbG9yYnVmZmVyR3JvdXBb
MF0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgIG5ldyBlczNmRmJvUmVuZGVyVGVzdC5T
aGFyZWRDb2xvcmJ1ZmZlclRlc3QoY29sb3JPbmx5Q29uZmlnKQorICAgICAgICAgICAgICAgICk7
CisKKyAgICAgICAgICAgICAgICBzaGFyZWRDb2xvcmJ1ZmZlckdyb3VwWzFdLmFkZENoaWxkKAor
ICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZkZib1JlbmRlclRlc3QuU2hhcmVkQ29sb3JidWZm
ZXJUZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JEZXB0aENvbmZpZworICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHNo
YXJlZENvbG9yYnVmZmVyR3JvdXBbMl0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgIG5l
dyBlczNmRmJvUmVuZGVyVGVzdC5TaGFyZWRDb2xvcmJ1ZmZlclRlc3QoCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb2xvckRlcHRoU3RlbmNpbENvbmZpZworICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IC8vIC5zaGFyZWRfZGVwdGhfc3RlbmNpbAorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgc2hhcmVkRGVwdGhTdGVuY2lsR3JvdXAgPSBuZXcg
dGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAnc2hhcmVkX2RlcHRoX3N0ZW5jaWwn
LCAnU2hhcmVkIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMnCisgICAgICAgICk7CisKKyAgICAg
ICAgdGhpcy5hZGRDaGlsZChzaGFyZWREZXB0aFN0ZW5jaWxHcm91cCk7CisKKyAgICAgICAgZm9y
ICh2YXIgZm10TmR4ID0gMDsgZm10TmR4IDwgZGVwdGhTdGVuY2lsRm9ybWF0cy5sZW5ndGg7IGZt
dE5keCsrKSB7CisgICAgICAgICAgICBjb2xvclR5cGUgPSBnbC5URVhUVVJFXzJEOworICAgICAg
ICAgICAgY29sb3JGbXQgPSBnbC5SR0JBODsKKyAgICAgICAgICAgIGRlcHRoID0gZGVwdGhTdGVu
Y2lsRm9ybWF0c1tmbXROZHhdLmRlcHRoOworICAgICAgICAgICAgc3RlbmNpbCA9IGRlcHRoU3Rl
bmNpbEZvcm1hdHNbZm10TmR4XS5zdGVuY2lsOworCisgICAgICAgICAgICBpZiAoIWRlcHRoKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBOb3QgdmVyaWZpZWQuCisKKyAgICAgICAgICAg
IC8vIERlcHRoIGFuZCBzdGVuY2lsOiBib3RoIHJibyBhbmQgdGV4dHVyZXMKKyAgICAgICAgICAg
IGZvciAodmFyIHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgb2JqZWN0VHlwZXMubGVuZ3RoOyB0eXBl
TmR4KyspIHsKKyAgICAgICAgICAgICAgICBjb25maWcgPSBuZXcgZXMzZkZib1JlbmRlclRlc3Qu
RmJvQ29uZmlnKAorICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwKKyAg
ICAgICAgICAgICAgICAgICAgKGRlcHRoID8gZ2wuREVQVEhfQlVGRkVSX0JJVCA6IDApIHwKKyAg
ICAgICAgICAgICAgICAgICAgKHN0ZW5jaWwgPyBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQgOiAwKSwK
KyAgICAgICAgICAgICAgICAgICAgY29sb3JUeXBlLCBjb2xvckZtdCwgb2JqZWN0VHlwZXNbdHlw
ZU5keF0sCisgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdHNbZm10TmR4XS5m
b3JtYXQKKyAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgc2hhcmVkRGVwdGhT
dGVuY2lsR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgIG5ldyBlczNmRmJvUmVu
ZGVyVGVzdC5TaGFyZWREZXB0aFN0ZW5jaWxUZXN0KGNvbmZpZykKKyAgICAgICAgICAgICAgICAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gLnJlc2l6ZQorICAgICAg
ICAvKiogQHR5cGUge0FycmF5PHRjdVRlc3RDYXNlLkRlcXBUZXN0Pn0gKi8gdmFyIHJlc2l6ZUdy
b3VwID0gW107CisgICAgICAgIHZhciBudW1SZXNpemVHcm91cHMgPSA0OworICAgICAgICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgbnVtUmVzaXplR3JvdXBzOyArK2lpKSB7CisgICAgICAgICAgICBy
ZXNpemVHcm91cFtpaV0gPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ3Jlc2l6ZScsICdGQk8g
cmVzaXplIHRlc3RzJyk7CisgICAgICAgICAgICB0aGlzLmFkZENoaWxkKHJlc2l6ZUdyb3VwW2lp
XSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBjb2xvckZtdE5keCA9IDA7IGNvbG9y
Rm10TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgY29sb3JGbXROZHgrKykgeworCisgICAgICAg
ICAgICB2YXIgY29sb3JGb3JtYXQgPSBjb2xvckZvcm1hdHNbY29sb3JGbXROZHhdLmZvcm1hdDsK
KworICAgICAgICAgICAgLy8gQ29sb3Itb25seS4KKyAgICAgICAgICAgIGZvciAodmFyIHR5cGVO
ZHggPSAwOyB0eXBlTmR4IDwgb2JqZWN0VHlwZXMubGVuZ3RoOyB0eXBlTmR4KyspIHsKKyAgICAg
ICAgICAgICAgICBjb25maWcgPSBuZXcgZXMzZkZib1JlbmRlclRlc3QuRmJvQ29uZmlnKAorICAg
ICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklULCBvYmplY3RUeXBlc1t0eXBlTmR4
XSwKKyAgICAgICAgICAgICAgICAgICAgY29sb3JGb3JtYXQsIGdsLk5PTkUsIGdsLk5PTkUKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIHJlc2l6ZUdyb3VwW2NvbG9yRm10TmR4
ICUgbnVtUmVzaXplR3JvdXBzXS5hZGRDaGlsZChuZXcgZXMzZkZib1JlbmRlclRlc3QuUmVzaXpl
VGVzdChjb25maWcpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRm9yIHNlbGVj
dGVkIGNvbG9yIGZvcm1hdHMgdGVzdHMgZGVwdGggJiBzdGVuY2lsIHZhcmlhbnRzLgorICAgICAg
ICAgICAgaWYgKGNvbG9yRm9ybWF0ID09IGdsLlJHQkE4IHx8IGNvbG9yRm9ybWF0ID09IGdsLlJH
QkExNkYpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBkZXB0aFN0ZW5jaWxGbXROZHggPSAw
OyBkZXB0aFN0ZW5jaWxGbXROZHggPCBkZXB0aFN0ZW5jaWxGb3JtYXRzLmxlbmd0aDsgZGVwdGhT
dGVuY2lsRm10TmR4KyspIHsKKworICAgICAgICAgICAgICAgICAgICBjb2xvclR5cGUgPSBnbC5U
RVhUVVJFXzJEOworICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoU3RlbmNpbEZvcm1h
dHNbZGVwdGhTdGVuY2lsRm10TmR4XS5kZXB0aDsKKyAgICAgICAgICAgICAgICAgICAgc3RlbmNp
bCA9IGRlcHRoU3RlbmNpbEZvcm1hdHNbZGVwdGhTdGVuY2lsRm10TmR4XS5zdGVuY2lsOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIERlcHRoIGFuZCBzdGVuY2lsOiBib3RoIHJibyBhbmQgdGV4
dHVyZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZU5keCA9IDA7IHR5cGVOZHgg
PCBvYmplY3RUeXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWRlcHRoICYmIG9iamVjdFR5cGVzW3R5cGVOZHhdICE9IGdsLlJFTkRFUkJVRkZF
UikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gTm90IHN1cHBvcnRl
ZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gbmV3IGVzM2ZGYm9SZW5kZXJU
ZXN0LkZib0NvbmZpZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZG
RVJfQklUIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVwdGggPyBnbC5ERVBUSF9C
VUZGRVJfQklUIDogMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVuY2lsID8g
Z2wuU1RFTkNJTF9CVUZGRVJfQklUIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sb3JUeXBlLCBjb2xvckZvcm1hdCwgb2JqZWN0VHlwZXNbdHlwZU5keF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5jaWxGbXROZHhd
LmZvcm1hdAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzaXplR3JvdXBbY29sb3JGbXROZHggJSBudW1SZXNpemVHcm91cHNdLmFkZENoaWxk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBlczNmRmJvUmVuZGVyVGVzdC5SZXNp
emVUZXN0KGNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyAucmVjcmVhdGVfY29sb3IKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdD59ICovIHZhciByZWNyZWF0ZUNvbG9yR3JvdXAgPSBbXTsKKyAgICAg
ICAgdmFyIG51bVJlY3JlYXRlQ29sb3JHcm91cHMgPSA3OworICAgICAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgbnVtUmVjcmVhdGVDb2xvckdyb3VwczsgKytpaSkgeworICAgICAgICAgICAgcmVj
cmVhdGVDb2xvckdyb3VwW2lpXSA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgncmVjcmVhdGVf
Y29sb3InLCAnUmVjcmVhdGUgY29sb3JidWZmZXIgdGVzdHMnKTsKKyAgICAgICAgICAgIHRoaXMu
YWRkQ2hpbGQocmVjcmVhdGVDb2xvckdyb3VwW2lpXSk7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKHZhciBjb2xvckZtdE5keCA9IDA7IGNvbG9yRm10TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0
aDsgY29sb3JGbXROZHgrKykgeworCisgICAgICAgICAgICBjb2xvckZvcm1hdCA9IGNvbG9yRm9y
bWF0c1tjb2xvckZtdE5keF0uZm9ybWF0OworICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0
ID0gZ2wuREVQVEgyNF9TVEVOQ0lMODsKKyAgICAgICAgICAgIGRlcHRoU3RlbmNpbFR5cGUgPSBn
bC5SRU5ERVJCVUZGRVI7CisKKyAgICAgICAgICAgIC8vIENvbG9yLW9ubHkuCisgICAgICAgICAg
ICBmb3IgKHZhciB0eXBlTmR4ID0gMDsgdHlwZU5keCA8IG9iamVjdFR5cGVzLmxlbmd0aDsgdHlw
ZU5keCsrKSB7CisgICAgICAgICAgICAgICAgY29uZmlnID0gbmV3IGVzM2ZGYm9SZW5kZXJUZXN0
LkZib0NvbmZpZygKKyAgICAgICAgICAgICAgICAgICAgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8Cisg
ICAgICAgICAgICAgICAgICAgIGdsLkRFUFRIX0JVRkZFUl9CSVQgfAorICAgICAgICAgICAgICAg
ICAgICBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQsCisgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5
cGVzW3R5cGVOZHhdLCBjb2xvckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVu
Y2lsVHlwZSwgZGVwdGhTdGVuY2lsRm9ybWF0CisgICAgICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgICAgIHJlY3JlYXRlQ29sb3JHcm91cFtjb2xvckZtdE5keCAlIG51bVJlY3JlYXRlQ29s
b3JHcm91cHNdLmFkZENoaWxkKAorICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZkZib1JlbmRl
clRlc3QuUmVjcmVhdGVCdWZmZXJzVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
ZywgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgdHJ1ZSAvKiByZWJpbmQgKi8KKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyAucmVjcmVhdGVfZGVwdGhfc3RlbmNpbAorICAgICAgICAvKiogQHR5cGUge3Rj
dVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgcmVjcmVhdGVEZXB0aFN0ZW5jaWxH
cm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICdyZWNyZWF0ZV9k
ZXB0aF9zdGVuY2lsJywgJ1JlY3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMnCisgICAg
ICAgICk7CisKKyAgICAgICAgdGhpcy5hZGRDaGlsZChyZWNyZWF0ZURlcHRoU3RlbmNpbEdyb3Vw
KTsKKworICAgICAgICBmb3IgKHZhciBmbXROZHggPSAwOyBmbXROZHggPCBkZXB0aFN0ZW5jaWxG
b3JtYXRzLmxlbmd0aDsgZm10TmR4KyspIHsKKyAgICAgICAgICAgIGNvbG9yVHlwZSA9IGdsLlRF
WFRVUkVfMkQ7CisgICAgICAgICAgICBjb2xvckZtdCA9IGdsLlJHQkE4OworICAgICAgICAgICAg
ZGVwdGggPSBkZXB0aFN0ZW5jaWxGb3JtYXRzW2ZtdE5keF0uZGVwdGg7CisgICAgICAgICAgICBz
dGVuY2lsID0gZGVwdGhTdGVuY2lsRm9ybWF0c1tmbXROZHhdLnN0ZW5jaWw7CisKKyAgICAgICAg
ICAgIC8vIERlcHRoIGFuZCBzdGVuY2lsOiBib3RoIHJibyBhbmQgdGV4dHVyZXMKKyAgICAgICAg
ICAgIGZvciAodmFyIHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgb2JqZWN0VHlwZXMubGVuZ3RoOyB0
eXBlTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRlcHRoICYmIG9iamVjdFR5cGVzW3R5
cGVOZHhdICE9IGdsLlJFTkRFUkJVRkZFUikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBjb25maWcgPSBuZXcgZXMzZkZib1JlbmRlclRlc3QuRmJvQ29u
ZmlnKAorICAgICAgICAgICAgICAgICAgICBnbC5DT0xPUl9CVUZGRVJfQklUIHwKKyAgICAgICAg
ICAgICAgICAgICAgKGRlcHRoID8gZ2wuREVQVEhfQlVGRkVSX0JJVCA6IDApIHwKKyAgICAgICAg
ICAgICAgICAgICAgKHN0ZW5jaWwgPyBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQgOiAwKSwKKyAgICAg
ICAgICAgICAgICAgICAgY29sb3JUeXBlLCBjb2xvckZtdCwgb2JqZWN0VHlwZXNbdHlwZU5keF0s
CisgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdHNbZm10TmR4XS5mb3JtYXQK
KyAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgcmVjcmVhdGVEZXB0aFN0ZW5j
aWxHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgbmV3IGVzM2ZGYm9SZW5kZXJU
ZXN0LlJlY3JlYXRlQnVmZmVyc1Rlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAoZGVwdGggPyBnbC5ERVBUSF9CVUZGRVJfQklUIDog
MCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZW5jaWwgPyBnbC5TVEVOQ0lMX0JVRkZF
Ul9CSVQgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgLyogcmViaW5kICovCisg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhbmQgZXhlY3V0ZSB0
aGUgdGVzdCBjYXNlcworICAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29u
dGV4dAorICAgICAqLworICAgIGVzM2ZGYm9SZW5kZXJUZXN0LnJ1biA9IGZ1bmN0aW9uKGNvbnRl
eHQsIHJhbmdlKSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgVGVz
dCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVy
OworCisgICAgICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZGYm9SZW5kZXJUZXN0LkZib1JlbmRl
clRlc3RHcm91cCgpKTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBv
ZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVz
dENhc2VzLmZ1bGxOYW1lKCkpOworICAgICAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMu
Z2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7CisgICAgICAgICAgICAv
L1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsK
KyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
T3B0aW9ucygnRmFpbGVkIHRvIHJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRl
c3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07Cit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvU3RhdGVRdWVyeVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc5NTc5MGVmNDdlYWE4NTM3YTVi
NzVkM2I0OWUwZjFjYTlkMDNkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJv
U3RhdGVRdWVyeVRlc3RzLmpzCkBAIC0wLDAgKzEsNzk2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog
Q29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5z
ZScpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9T
dGF0ZVF1ZXJ5VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0
Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJyk7Citn
b29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1N0YXRlUXVlcnknKTsKKworZ29vZy5zY29w
ZShmdW5jdGlvbigpIHsKK3ZhciBlczNmRmJvU3RhdGVRdWVyeVRlc3RzID0gZnVuY3Rpb25hbC5n
bGVzMy5lczNmRmJvU3RhdGVRdWVyeVRlc3RzOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBnbHNTdGF0ZVF1ZXJ5ID0gbW9kdWxlcy5zaGFyZWQu
Z2xzU3RhdGVRdWVyeTsKK3ZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFw
aUNhc2U7CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsK
KyAgICBjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpOwor
ICAgIGNoaWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsKKworLy8gV2ViR0wg
Yml0IGRlcHRocworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jb2xvckJpdHMgPSBbOCwgOCwgOCwg
OF07CitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLmRlcHRoQml0cyA9IDA7CitlczNmRmJvU3RhdGVR
dWVyeVRlc3RzLnN0ZW5jaWxCaXRzID0gMDsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IGZyYW1lYnVm
ZmVyVGFyZ2V0CisgKi8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuRGVmYXVsdEZyYW1lYnVmZmVy
Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBmcmFtZWJ1ZmZlclRhcmdldCkgewor
ICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wp
OworICAgIHRoaXMubV9mcmFtZWJ1ZmZlclRhcmdldCA9IGZyYW1lYnVmZmVyVGFyZ2V0OworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5EZWZhdWx0RnJhbWVidWZm
ZXJDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5E
ZWZhdWx0RnJhbWVidWZmZXJDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIGhhc0NvbG9yQnVmZmVyID0gZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jb2xvckJpdHNbMF0g
PiAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZkZib1N0YXRlUXVlcnlUZXN0
cy5jb2xvckJpdHNbMV0gPiAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZkZi
b1N0YXRlUXVlcnlUZXN0cy5jb2xvckJpdHNbMl0gPiAwIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jb2xvckJpdHNbM10gPiAwOworICAgIHZh
ciBhdHRhY2htZW50cyA9IFsKKyAgICAgICAgZ2wuQkFDSywKKyAgICAgICAgZ2wuREVQVEgsCisg
ICAgICAgIGdsLlNURU5DSUwKKyAgICBdOworICAgIHZhciBhdHRhY2htZW50RXhpc3RzID0gWwor
ICAgICAgICBoYXNDb2xvckJ1ZmZlciwKKyAgICAgICAgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5k
ZXB0aEJpdHMgPiAwLAorICAgICAgICBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLnN0ZW5jaWxCaXRz
ID4gMAorICAgIF07CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBhdHRhY2htZW50cy5s
ZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIHZhciBvYmpUeXBlID0gZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKHRoaXMubV9mcmFtZWJ1ZmZlclRhcmdldCwgYXR0YWNobWVudHNb
bmR4XSwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgICAgIGlm
IChhdHRhY2htZW50RXhpc3RzW25keF0pIHsKKyAgICAgICAgICAgIHRoaXMuY2hlY2sob2JqVHlw
ZSA9PT0gZ2wuRlJBTUVCVUZGRVJfREVGQVVMVCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBcbm90ZSBbamFya2tvXSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBF
ICJpZGVudGlmZXMgdGhlIHR5cGUgb2Ygb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSBhdHRhY2hl
ZCBpbWFnZSIuIEhvd2V2ZXIsIGl0CisgICAgICAgICAgICAvLyBpcyB1bmNsZWFyIGlmIGFuIG9i
amVjdCBvZiB0eXBlIEZSQU1FQlVGRkVSX0RFRkFVTFQgY2FuIGNvbnRhaW4gYSBudWxsIGltYWdl
IChvciBhIDAtYml0cy1wZXItcGl4ZWwgaW1hZ2UpLiBBY2NlcHQgYm90aAorICAgICAgICAgICAg
Ly8gRlJBTUVCVUZGRVJfREVGQVVMVCBhbmQgTk9ORSBhcyB2YWxpZCByZXN1bHRzIGluIHRoZXNl
IGNhc2VzLgorICAgICAgICAgICAgdGhpcy5jaGVjayhvYmpUeXBlID09PSBnbC5GUkFNRUJVRkZF
Ul9ERUZBVUxUIHx8IG9ialR5cGUgPT09IGdsLk5PTkUpOworICAgICAgICB9CisgICAgfQorfTsK
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNl
fQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
bgorICovCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRPYmplY3RDYXNlID0gZnVu
Y3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwo
dGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZG
Ym9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudE9iamVjdENhc2UsIGVzM2ZBcGlDYXNlLkFwaUNh
c2UpOworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRPYmplY3RDYXNlLnByb3Rv
dHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGZyYW1lYnVmZmVySUQgPSBnbC5jcmVh
dGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZnJhbWVidWZmZXJJRCk7CisKKyAgICAvLyBpbml0aWFsCisgICAgdGhpcy5jaGVjayhnbHNTdGF0
ZVF1ZXJ5LnZlcmlmeUF0dGFjaG1lbnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1F
TlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFLCBnbC5OT05FKSk7Cisg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUF0dGFjaG1lbnQoZ2wuRlJBTUVCVUZG
RVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9OQU1FLCBudWxsKSk7CisKKyAgICAvLyB0ZXh0dXJlCisgICAgdmFyIHRleHR1cmVJRCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0
dXJlSUQpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTgsIDEy
OCwgMTI4LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworICAgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZUlELCAwKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS52ZXJpZnlDb2xvckF0dGFjaG1lbnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsIGdsLlRFWFRVUkUpKTsKKyAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVSLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FLCB0ZXh0dXJlSUQpKTsKKworICAgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuVEVYVFVSRV8yRCwgbnVsbCwgMCk7CisKKyAgICAvLyByYgorICAgIHZhciByZW5kZXJidWZm
ZXJJRCA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIo
Z2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisgICAgZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQjgsIDEyOCwgMTI4KTsKKworICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVSLCBnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFLCBnbC5SRU5ERVJCVUZGRVIpKTsKKyAgICB0aGlz
LmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVS
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FLCByZW5kZXJidWZmZXJJRCkp
OworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZVJl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJJRCk7CisKKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcklEKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2ht
ZW50VGV4dHVyZUxldmVsQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAg
ZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRUZXh0
dXJlTGV2ZWxDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkZib1N0YXRlUXVlcnlU
ZXN0cy5BdHRhY2htZW50VGV4dHVyZUxldmVsQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBmcmFtZWJ1ZmZlcklEID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVySUQpOworICAg
IGZvciAodmFyIG1pcG1hcExldmVsID0gMDsgbWlwbWFwTGV2ZWwgPCA3OyArK21pcG1hcExldmVs
KSB7CisgICAgICAgIHZhciB0ZXh0dXJlSUQgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVJRCk7CisgICAgICAgIGdsLnRl
eFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCA3LCBnbC5SR0I4LCAxMjgsIDEyOCk7CisKKyAgICAg
ICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlSUQsIG1pcG1hcExldmVsKTsKKworICAgICAg
ICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1F
QlVGRkVSLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwsIG1pcG1hcExl
dmVsKSk7CisKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgICAgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSUQpOworICAgIH0KKyAgICBnbC5kZWxldGVGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlcklEKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0
ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5B
dHRhY2htZW50VGV4dHVyZUN1YmVNYXBGYWNlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0
dGFjaG1lbnRUZXh0dXJlQ3ViZU1hcEZhY2VDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKwor
ZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50VGV4dHVyZUN1YmVNYXBGYWNlQ2FzZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBmcmFtZWJ1ZmZlcklEID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZyYW1lYnVmZmVySUQpOworICAgIHZhciB0ZXh0dXJlSUQgPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZUlEKTsK
KworICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQLCAxLCBnbC5SR0I4LCAx
MjgsIDEyOCk7CisKKyAgICB2YXIgZmFjZXMgPSBbCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCwgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICBn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWSwKKyAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCBnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1oKKyAgICBdOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgZmFjZXMubGVuZ3RoOyArK25keCkgeworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGZhY2VzW25keF0sIHRleHR1
cmVJRCwgMCk7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlDb2xvckF0
dGFjaG1lbnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVS
RV9DVUJFX01BUF9GQUNFLCBmYWNlc1tuZHhdKSk7CisgICAgfQorCisgICAgZ2wuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhU
VVJFXzJELCBudWxsLCAwKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVJRCk7CisgICAg
Z2wuZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJJRCk7Cit9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZGYm9T
dGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFRleHR1cmVMYXllckNhc2UgPSBmdW5jdGlvbihuYW1l
LCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1l
LCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib1N0YXRlUXVl
cnlUZXN0cy5BdHRhY2htZW50VGV4dHVyZUxheWVyQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7
CisKK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFRleHR1cmVMYXllckNhc2UucHJv
dG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZnJhbWVidWZmZXJJRCA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmcmFtZWJ1ZmZlcklEKTsKKyAgICAvLyB0ZXgzZAorICAgIHZhciB0ZXh0dXJlSUQgPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVy
ZUlEKTsKKyAgICBnbC50ZXhTdG9yYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMSwgZ2wuUkdCQTgsIDE2
LCAxNiwgMTYpOworCisgICAgZm9yICh2YXIgbGF5ZXIgPSAwOyBsYXllciA8IDE2OyArK2xheWVy
KSB7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZUlELCAwLCBsYXllcik7CisgICAgICAgIHRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlDb2xvckF0dGFjaG1lbnQoZ2wuRlJBTUVCVUZGRVIs
IGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUiwgbGF5ZXIpKTsKKyAgICB9
CisKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgIGdsLmRlbGV0ZVRleHR1
cmUodGV4dHVyZUlEKTsKKyAgICAvLyB0ZXgyZCBhcnJheQorICAgIHRleHR1cmVJRCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0
ZXh0dXJlSUQpOworICAgIGdsLnRleFN0b3JhZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAxLCBn
bC5SR0JBOCwgMTYsIDE2LCAxNik7CisKKyAgICBmb3IgKHZhciBsYXllciA9IDA7IGxheWVyIDwg
MTY7ICsrbGF5ZXIpIHsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlSUQsIDAsIGxheWVyKTsKKyAg
ICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUNvbG9yQXR0YWNobWVudChnbC5G
UkFNRUJVRkZFUiwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSLCBsYXll
cikpOworICAgIH0KKworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwgMCk7CisgICAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSUQpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1l
YnVmZmVySUQpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNm
QXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRU
ZXh0dXJlQ29sb3JDb2RpbmdDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAg
ICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsK
K307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFRl
eHR1cmVDb2xvckNvZGluZ0Nhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmRmJvU3Rh
dGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRUZXh0dXJlQ29sb3JDb2RpbmdDYXNlLnByb3RvdHlwZS50
ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGZyYW1lYnVmZmVySUQgPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVi
dWZmZXJJRCk7CisgICAgLy8gcmdiOCBjb2xvcgorICAgIHZhciByZW5kZXJidWZmZXJJRCA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVS
QlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5S
RU5ERVJCVUZGRVIsIGdsLlJHQjgsIDEyOCwgMTI4KTsKKworICAgIGdsLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVS
QlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVSLCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTE9SX0VOQ09ESU5HLCBnbC5MSU5FQVIpKTsKKworICAgIGdsLmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVO
REVSQlVGRkVSLCBudWxsKTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVy
SUQpOworCisgICAgLy8gc3JnYjhfYWxwaGE4IGNvbG9yCisgICAgcmVuZGVyYnVmZmVySUQgPSBn
bC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRF
UkJVRkZFUiwgcmVuZGVyYnVmZmVySUQpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5TUkdCOF9BTFBIQTgsIDEyOCwgMTI4KTsKKworICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVSLCBnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HLCBnbC5TUkdCKSk7CisKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcklEKTsKKworICAgIC8vIGRlcHRoCisgICAgcmVuZGVyYnVmZmVySUQgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVySUQpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgMTI4LCAxMjgpOworCisgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGds
LlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVySUQpOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0
ZVF1ZXJ5LnZlcmlmeUF0dGFjaG1lbnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1F
TlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcsIGdsLkxJTkVBUikp
OworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZVJl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJJRCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZnJh
bWVidWZmZXJJRCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2Vz
M2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVu
dFRleHR1cmVDb21wb25lbnRUeXBlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7
CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBn
bCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1l
bnRUZXh0dXJlQ29tcG9uZW50VHlwZUNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNm
RmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRUZXh0dXJlQ29tcG9uZW50VHlwZUNhc2UucHJv
dG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZnJhbWVidWZmZXJJRCA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmcmFtZWJ1ZmZlcklEKTsKKyAgICAvLyBjb2xvci1yZW5kZXJhYmxlIHJlcXVpcmVkIHRleHR1
cmUgZm9ybWF0cworICAgIHZhciByZXF1aXJlZENvbG9yZm9ybWF0cyA9IFsKKyAgICAgICAgW2ds
LlI4LCBnbC5VTlNJR05FRF9OT1JNQUxJWkVEXSwKKyAgICAgICAgW2dsLlJHOCwgZ2wuVU5TSUdO
RURfTk9STUFMSVpFRF0sCisgICAgICAgIFtnbC5SR0I4LCBnbC5VTlNJR05FRF9OT1JNQUxJWkVE
XSwKKyAgICAgICAgW2dsLlJHQjU2NSwgZ2wuVU5TSUdORURfTk9STUFMSVpFRF0sCisgICAgICAg
IFtnbC5SR0JBNCwgZ2wuVU5TSUdORURfTk9STUFMSVpFRF0sCisgICAgICAgIFtnbC5SR0I1X0Ex
LCBnbC5VTlNJR05FRF9OT1JNQUxJWkVEXSwKKyAgICAgICAgW2dsLlJHQkE4LCBnbC5VTlNJR05F
RF9OT1JNQUxJWkVEXSwKKyAgICAgICAgW2dsLlJHQjEwX0EyLCBnbC5VTlNJR05FRF9OT1JNQUxJ
WkVEXSwKKyAgICAgICAgW2dsLlJHQjEwX0EyVUksIGdsLlVOU0lHTkVEX0lOVF0sCisgICAgICAg
IFtnbC5TUkdCOF9BTFBIQTgsIGdsLlVOU0lHTkVEX05PUk1BTElaRURdLAorICAgICAgICBbZ2wu
UjhJLCBnbC5JTlRdLAorICAgICAgICBbZ2wuUjhVSSwgZ2wuVU5TSUdORURfSU5UXSwKKyAgICAg
ICAgW2dsLlIxNkksIGdsLklOVF0sCisgICAgICAgIFtnbC5SMTZVSSwgZ2wuVU5TSUdORURfSU5U
XSwKKyAgICAgICAgW2dsLlIzMkksIGdsLklOVF0sCisgICAgICAgIFtnbC5SMzJVSSwgZ2wuVU5T
SUdORURfSU5UXSwKKyAgICAgICAgW2dsLlJHOEksIGdsLklOVF0sCisgICAgICAgIFtnbC5SRzhV
SSwgZ2wuVU5TSUdORURfSU5UXSwKKyAgICAgICAgW2dsLlJHMTZJLCBnbC5JTlRdLAorICAgICAg
ICBbZ2wuUkcxNlVJLCBnbC5VTlNJR05FRF9JTlRdLAorICAgICAgICBbZ2wuUkczMkksIGdsLklO
VF0sCisgICAgICAgIFtnbC5SRzMyVUksIGdsLlVOU0lHTkVEX0lOVF0sCisgICAgICAgIFtnbC5S
R0JBOEksIGdsLklOVF0sCisgICAgICAgIFtnbC5SR0JBOFVJLCBnbC5VTlNJR05FRF9JTlRdLAor
ICAgICAgICBbZ2wuUkdCQTE2SSwgZ2wuSU5UXSwKKyAgICAgICAgW2dsLlJHQkExNlVJLCBnbC5V
TlNJR05FRF9JTlRdLAorICAgICAgICBbZ2wuUkdCQTMySSwgZ2wuSU5UXSwKKyAgICAgICAgW2ds
LlJHQkEzMlVJLCBnbC5VTlNJR05FRF9JTlRdCisgICAgXTsKKworICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IHJlcXVpcmVkQ29sb3Jmb3JtYXRzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAg
dmFyIGNvbG9yRm9ybWF0ID0gcmVxdWlyZWRDb2xvcmZvcm1hdHNbbmR4XVswXTsKKyAgICAgICAg
dmFyIGNvbXBvbmVudFR5cGUgPSByZXF1aXJlZENvbG9yZm9ybWF0c1tuZHhdWzFdOworCisgICAg
ICAgIHZhciB0ZXh0dXJlSUQgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVJRCk7CisgICAgICAgIGdsLnRleFN0b3JhZ2Uy
RChnbC5URVhUVVJFXzJELCAxLCBjb2xvckZvcm1hdCwgMTI4LCAxMjgpOworCisgICAgICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZUlELCAwKTsKKworICAgICAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50KGdsLkZSQU1FQlVGRkVSLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFLCBjb21wb25lbnRUeXBlKSk7CisKKyAg
ICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlSUQpOworICAgIH0KKyAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1
ZmZlcklEKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFw
aUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzY3JpcHRpb24KKyAqLworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50U2l6
ZUluaXRpYWxDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBp
Q2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3Nl
dFBhcmVudENsYXNzKGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVJbml0aWFs
Q2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0
YWNobWVudFNpemVJbml0aWFsQ2FzZS5wcm90b3R5cGUuYXR0YWNobWVudEV4aXN0cyA9IGZ1bmN0
aW9uKGF0dGFjaG1lbnQpIHsKKyAgICB2YXIgb2JqVHlwZSA9IGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgcmV0dXJuIG9ialR5cGUgIT09IGdsLk5P
TkU7Cit9OworCisvKioKKyAqIEB0aGlzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICovCit2YXIg
Y2hlY2tBdHRhY2htZW50Q29tcG9uZW50U2l6ZUF0TGVhc3QgPSBmdW5jdGlvbih0YXJnZXQsIGF0
dGFjaG1lbnQsIHIsIGcsIGIsIGEsIGQsIHMpIHsKKyAgICB2YXIgcmVmZXJlbmNlU2l6ZXMgPSBb
ciwgZywgYiwgYSwgZCwgc107CisgICAgdmFyIHBhcmFtTmFtZXMgPSBbCisgICAgICAgIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkUsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
R1JFRU5fU0laRSwKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUs
IGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSwKKyAgICAgICAgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NU
RU5DSUxfU0laRQorICAgIF07CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCByZWZlcmVu
Y2VTaXplcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGlmIChyZWZlcmVuY2VTaXplc1tuZHhd
ID09IC0xKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdmFyIHZhbHVlID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
dGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWVzW25keF0pKTsKKworICAgICAgICB0aGlzLmNo
ZWNrKHZhbHVlID49IHJlZmVyZW5jZVNpemVzW25keF0sICdFeHBlY3RlZCBncmVhdGVyIG9yIGVx
dWFsIHRvICcgKyByZWZlcmVuY2VTaXplc1tuZHhdICsgJyBnb3QgJyArIHZhbHVlKTsKKyAgICB9
Cit9OworCisvKioKKyAqIEB0aGlzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICovCit2YXIgY2hl
Y2tBdHRhY2htZW50Q29tcG9uZW50U2l6ZUV4YWN0bHkgPSBmdW5jdGlvbih0YXJnZXQsIGF0dGFj
aG1lbnQsIHIsIGcsIGIsIGEsIGQsIHMpIHsKKyAgICB2YXIgcmVmZXJlbmNlU2l6ZXMgPSBbciwg
ZywgYiwgYSwgZCwgc107CisgICAgdmFyIHBhcmFtTmFtZXMgPSBbCisgICAgICAgIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkUsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JF
RU5fU0laRSwKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUsIGds
LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSwKKyAgICAgICAgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5D
SUxfU0laRQorICAgIF07CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCByZWZlcmVuY2VT
aXplcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGlmIChyZWZlcmVuY2VTaXplc1tuZHhdID09
IC0xKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdmFyIHZhbHVlID0gZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1O
YW1lc1tuZHhdKTsKKworICAgICAgICB0aGlzLmNoZWNrKHZhbHVlID09IHJlZmVyZW5jZVNpemVz
W25keF0sICdFeHBlY3RlZCBlcXVhbCB0byAnICsgcmVmZXJlbmNlU2l6ZXNbbmR4XSArICcgZ290
ICcgKyB2YWx1ZSk7CisgICAgfQorfTsKKworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2ht
ZW50U2l6ZUluaXRpYWxDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgLy8g
Y2hlY2sgZGVmYXVsdAorICAgIGlmICh0aGlzLmF0dGFjaG1lbnRFeGlzdHMoZ2wuQkFDSykpIHsK
KyAgICAgICAgY2hlY2tBdHRhY2htZW50Q29tcG9uZW50U2l6ZUF0TGVhc3QuYmluZCh0aGlzLAor
ICAgICAgICAgICAgZ2wuRlJBTUVCVUZGRVIsCisgICAgICAgICAgICBnbC5CQUNLLAorICAgICAg
ICAgICAgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jb2xvckJpdHNbMF0sCisgICAgICAgICAgICBl
czNmRmJvU3RhdGVRdWVyeVRlc3RzLmNvbG9yQml0c1sxXSwKKyAgICAgICAgICAgIGVzM2ZGYm9T
dGF0ZVF1ZXJ5VGVzdHMuY29sb3JCaXRzWzJdLAorICAgICAgICAgICAgZXMzZkZib1N0YXRlUXVl
cnlUZXN0cy5jb2xvckJpdHNbM10sCisgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgIC0xKTsK
KyAgICB9CisKKyAgICBpZiAodGhpcy5hdHRhY2htZW50RXhpc3RzKGdsLkRFUFRIKSkgeworICAg
ICAgICBjaGVja0F0dGFjaG1lbnRDb21wb25lbnRTaXplQXRMZWFzdC5iaW5kKHRoaXMsCisgICAg
ICAgICAgICBnbC5GUkFNRUJVRkZFUiwKKyAgICAgICAgICAgIGdsLkRFUFRILAorICAgICAgICAg
ICAgLTEsCisgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgLTEs
CisgICAgICAgICAgICBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLmRlcHRoQml0cywKKyAgICAgICAg
ICAgIC0xKTsKKyAgICB9CisKKyAgICBpZiAodGhpcy5hdHRhY2htZW50RXhpc3RzKGdsLlNURU5D
SUwpKSB7CisgICAgICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNpemVBdExlYXN0LmJpbmQo
dGhpcywKKyAgICAgICAgICAgIGdsLkZSQU1FQlVGRkVSLAorICAgICAgICAgICAgZ2wuU1RFTkNJ
TCwKKyAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAtMSwKKyAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgLTEsCisgICAgICAgICAgICBlczNmRmJvU3RhdGVR
dWVyeVRlc3RzLnN0ZW5jaWxCaXRzKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZGYm9TdGF0ZVF1
ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24p
IHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24s
IGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNo
bWVudFNpemVDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkZib1N0YXRlUXVlcnlU
ZXN0cy5BdHRhY2htZW50U2l6ZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgZnJhbWVidWZmZXJJRCA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcklEKTsKKyAgICAvLyBjaGVj
ayBzb21lIGNvbG9yIHRhcmdldHMKKworICAgIHZhciBjb2xvckF0dGFjaG1lbnRzID0gWworICAg
ICAgICAvL2Zvcm1hdCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEKKyAgICAgICAgW2dsLlJHQkE4
LCA4LCA4LCA4LCA4XSwKKyAgICAgICAgW2dsLlJHQjU2NSwgNSwgNiwgNSwgMF0sCisgICAgICAg
IFtnbC5SR0JBNCwgNCwgNCwgNCwgNF0sCisgICAgICAgIFtnbC5SR0I1X0ExLCA1LCA1LCA1LCAx
XSwKKyAgICAgICAgW2dsLlJHQkE4SSwgOCwgOCwgOCwgOF0sCisgICAgICAgIFtnbC5SRzMyVUks
IDMyLCAzMiwgMCwgMF0KKyAgICBdOworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGNvbG9y
QXR0YWNobWVudHMubGVuZ3RoOyArK25keCkKKyAgICAgICAgdGhpcy50ZXN0Q29sb3JBdHRhY2ht
ZW50KGNvbG9yQXR0YWNobWVudHNbbmR4XVswXSwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9y
QXR0YWNobWVudHNbbmR4XVsxXSwgY29sb3JBdHRhY2htZW50c1tuZHhdWzJdLCBjb2xvckF0dGFj
aG1lbnRzW25keF1bM10sIGNvbG9yQXR0YWNobWVudHNbbmR4XVs0XSk7CisKKyAgICAvLyBjaGVj
ayBzb21lIGRlcHRoIHRhcmdldHMKKworICAgIHZhciBkZXB0aEF0dGFjaG1lbnRzID0gWworICAg
ICAgICAvLyBmb3JtYXQsIGF0dGFjaG1lbnQsIGRlcHRoLCBzdGVuY2lsCisgICAgICAgIFtnbC5E
RVBUSF9DT01QT05FTlQxNiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgMTYsIDBdLAorICAgICAgICBb
Z2wuREVQVEhfQ09NUE9ORU5UMjQsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIDI0LCAwXSwKKyAgICAg
ICAgW2dsLkRFUFRIX0NPTVBPTkVOVDMyRiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgMzIsIDBdLAor
ICAgICAgICBbZ2wuREVQVEgyNF9TVEVOQ0lMOCwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCAyNCwgOF0sCisgICAgICAgIFtnbC5ERVBUSDMyRl9TVEVOQ0lMOCwgZ2wuREVQVEhfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCAzMiwgOF0KKyAgICBdOworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8
IGRlcHRoQXR0YWNobWVudHMubGVuZ3RoOyArK25keCkKKyAgICAgICAgdGhpcy50ZXN0RGVwdGhB
dHRhY2htZW50KGRlcHRoQXR0YWNobWVudHNbbmR4XVswXSwgZGVwdGhBdHRhY2htZW50c1tuZHhd
WzFdLCBkZXB0aEF0dGFjaG1lbnRzW25keF1bMl0sIGRlcHRoQXR0YWNobWVudHNbbmR4XVszXSk7
CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJJRCk7Cit9OworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNo
bWVudFNpemVDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjcmlwdGlvbgorICovCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRTaXpl
UmJvQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgZXMzZkZib1N0YXRl
UXVlcnlUZXN0cy5BdHRhY2htZW50U2l6ZUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlv
bik7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1l
bnRTaXplUmJvQ2FzZSwgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50U2l6ZUNhc2Up
OworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRTaXplUmJvQ2FzZS5wcm90b3R5
cGUudGVzdENvbG9yQXR0YWNobWVudCA9IGZ1bmN0aW9uKGludGVybmFsRm9ybWF0LCBhdHRhY2ht
ZW50LCByLCBnLCBiLCBhKSB7CisgICAgdmFyIHJlbmRlcmJ1ZmZlcklEID0gZ2wuY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJl
bmRlcmJ1ZmZlcklEKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgaW50ZXJuYWxGb3JtYXQsIDEyOCwgMTI4KTsKKworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIHJlbmRl
cmJ1ZmZlcklEKTsKKworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNpemVBdExlYXN0LmJp
bmQodGhpcywgZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIHIsIGcsIGIsIGEsIC0xLCAtMSk7
CisgICAgY2hlY2tBdHRhY2htZW50Q29tcG9uZW50U2l6ZUV4YWN0bHkuYmluZCh0aGlzLCBnbC5G
UkFNRUJVRkZFUiwgYXR0YWNobWVudCwgLTEsIC0xLCAtMSwgLTEsIDAsIDApOworCisgICAgZ2wu
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJF
TkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZl
cklEKTsKK307CisKK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVSYm9DYXNl
LnByb3RvdHlwZS50ZXN0RGVwdGhBdHRhY2htZW50ID0gZnVuY3Rpb24oaW50ZXJuYWxGb3JtYXQs
IGF0dGFjaG1lbnQsIGRlcHRoLCBzdGVuY2lsKSB7CisgICAgdmFyIHJlbmRlcmJ1ZmZlcklEID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcklEKTsKKyAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgaW50ZXJuYWxGb3JtYXQsIDEyOCwgMTI4KTsKKworICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJC
VUZGRVIsIHJlbmRlcmJ1ZmZlcklEKTsKKworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNp
emVBdExlYXN0LmJpbmQodGhpcywgZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIC0xLCAtMSwg
LTEsIC0xLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgY2hlY2tBdHRhY2htZW50Q29tcG9uZW50U2l6
ZUV4YWN0bHkuYmluZCh0aGlzLCBnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgMCwgMCwgMCwg
MCwgLTEsIC0xKTsKKworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZVJl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJJRCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVDYXNlfQor
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgor
ICovCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRTaXplVGV4dHVyZUNhc2UgPSBm
dW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMu
QXR0YWNobWVudFNpemVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworfTsKKwor
c2V0UGFyZW50Q2xhc3MoZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50U2l6ZVRleHR1
cmVDYXNlLCBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRTaXplQ2FzZSk7CisKK2Vz
M2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVUZXh0dXJlQ2FzZS5wcm90b3R5cGUu
dGVzdENvbG9yQXR0YWNobWVudCA9IGZ1bmN0aW9uKGludGVybmFsRm9ybWF0LCBhdHRhY2htZW50
LCByLCBnLCBiLCBhKSB7CisgICAgdmFyIHRleHR1cmVJRCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsK
KyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlSUQpOworICAgIGdsLnRl
eFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBpbnRlcm5hbEZvcm1hdCwgMTI4LCAxMjgpOwor
CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQs
IGdsLlRFWFRVUkVfMkQsIHRleHR1cmVJRCwgMCk7CisKKyAgICBjaGVja0F0dGFjaG1lbnRDb21w
b25lbnRTaXplQXRMZWFzdC5iaW5kKHRoaXMsIGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBy
LCBnLCBiLCBhLCAtMSwgLTEpOworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNpemVFeGFj
dGx5LmJpbmQodGhpcywgZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIC0xLCAtMSwgLTEsIC0x
LCAwLCAwKTsKKworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBh
dHRhY2htZW50LCBnbC5URVhUVVJFXzJELCBudWxsLCAwKTsKKyAgICBnbC5kZWxldGVUZXh0dXJl
KHRleHR1cmVJRCk7Cit9OworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRTaXpl
VGV4dHVyZUNhc2UucHJvdG90eXBlLnRlc3REZXB0aEF0dGFjaG1lbnQgPSBmdW5jdGlvbihpbnRl
cm5hbEZvcm1hdCwgYXR0YWNobWVudCwgZGVwdGgsIHN0ZW5jaWwpIHsKKyAgICAvLyBkb24ndCB0
ZXN0IHN0ZW5jaWwgZm9ybWF0cyB3aXRoIHRleHR1cmVzCisgICAgaWYgKGF0dGFjaG1lbnQgPT0g
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIg
dGV4dHVyZUlEID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleHR1cmVJRCk7CisgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQs
IDEsIGludGVybmFsRm9ybWF0LCAxMjgsIDEyOCk7CisKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1
cmUyRChnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZUlE
LCAwKTsKKworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNpemVBdExlYXN0LmJpbmQodGhp
cywgZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIC0xLCAtMSwgLTEsIC0xLCBkZXB0aCwgc3Rl
bmNpbCk7CisgICAgY2hlY2tBdHRhY2htZW50Q29tcG9uZW50U2l6ZUV4YWN0bHkuYmluZCh0aGlz
LCBnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgMCwgMCwgMCwgMCwgLTEsIC0xKTsKKworICAg
IGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5U
RVhUVVJFXzJELCBudWxsLCAwKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVJRCk7Cit9
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNh
c2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0
aW9uCisgKi8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2htZW50VGV4
dHVyZUNvbG9yQ29kaW5nQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAg
ZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0
YWNobWVudFRleHR1cmVDb2xvckNvZGluZ0Nhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitl
czNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0YWNobWVudFRleHR1cmVDb2xvckNv
ZGluZ0Nhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZnJhbWVidWZm
ZXJJRCA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcklEKTsKKyAgICAvLyBjb2xvcgorICAgIHZhciByZW5k
ZXJidWZmZXJJRCA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVySUQpOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0
ZVF1ZXJ5LnZlcmlmeUNvbG9yQXR0YWNobWVudChnbC5GUkFNRUJVRkZFUiwgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORywgZ2wuTElORUFSKSk7CisKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcklEKTsKKworICAgIC8vIGRlcHRoCisgICAgcmVuZGVyYnVmZmVySUQgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVySUQpOworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVy
YnVmZmVySUQpOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUF0dGFjaG1l
bnQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcsIGdsLkxJTkVBUikpOworCisgICAgZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5S
RU5ERVJCVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZm
ZXJJRCk7CisgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJJRCk7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisg
Ki8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2htZW50U2l6ZUNhc2Ug
PSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRTaXplQ2FzZSwgZXMz
ZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRB
dHRhY2htZW50U2l6ZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
ZnJhbWVidWZmZXJJRCA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcklEKTsKKyAgICAvLyBjaGVjayBjb2xv
ciB0YXJnZXQKKyAgICB0aGlzLnRlc3RDb2xvckF0dGFjaG1lbnQoKTsKKworICAgIC8vIGNoZWNr
IGRlcHRoIHRhcmdldAorICAgIHRoaXMudGVzdERlcHRoQXR0YWNobWVudCgpOworICAgIGdsLmRl
bGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVySUQpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0YWNo
bWVudFNpemVDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjcmlwdGlvbgorICovCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0
YWNobWVudFNpemVSYm9DYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBl
czNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0YWNobWVudFNpemVDYXNlLmNhbGwo
dGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib1N0
YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRTaXplUmJvQ2FzZSwgZXMzZkZib1N0
YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRTaXplQ2FzZSk7CisKK2VzM2ZGYm9T
dGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2htZW50U2l6ZVJib0Nhc2UucHJvdG90eXBl
LnRlc3RDb2xvckF0dGFjaG1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVuZGVyYnVmZmVy
SUQgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVySUQpOworCisgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJC
VUZGRVIsIHJlbmRlcmJ1ZmZlcklEKTsKKworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNp
emVFeGFjdGx5LmJpbmQodGhpcywgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCAwLCAwLCAwLCAwLCAwLCAwKTsKKworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBudWxs
KTsKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVySUQpOworfTsKKworZXMz
ZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRTaXplUmJvQ2FzZS5wcm90
b3R5cGUudGVzdERlcHRoQXR0YWNobWVudCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZW5kZXJi
dWZmZXJJRCA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVO
REVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICBjaGVja0F0dGFjaG1lbnRDb21wb25l
bnRTaXplRXhhY3RseS5iaW5kKHRoaXMsIGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hN
RU5ULCAwLCAwLCAwLCAwLCAwLCAwKTsKKworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIG51
bGwpOworICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJJRCk7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMu
VW5zcGVjaWZpZWRBdHRhY2htZW50U2l6ZUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVz
dHMuVW5zcGVjaWZpZWRBdHRhY2htZW50U2l6ZVRleHR1cmVDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0
YWNobWVudFNpemVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworfTsKKworc2V0
UGFyZW50Q2xhc3MoZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRT
aXplVGV4dHVyZUNhc2UsIGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2ht
ZW50U2l6ZUNhc2UpOworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0YWNo
bWVudFNpemVUZXh0dXJlQ2FzZS5wcm90b3R5cGUudGVzdENvbG9yQXR0YWNobWVudCA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciB0ZXh0dXJlSUQgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZUlEKTsKKworICAgIGdsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVY
VFVSRV8yRCwgdGV4dHVyZUlELCAwKTsKKworICAgIGNoZWNrQXR0YWNobWVudENvbXBvbmVudFNp
emVFeGFjdGx5LmJpbmQodGhpcywgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCAwLCAwLCAwLCAwLCAwLCAwKTsKKworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwgMCk7
CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSUQpOworfTsKKworZXMzZkZib1N0YXRlUXVl
cnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRTaXplVGV4dHVyZUNhc2UucHJvdG90eXBlLnRl
c3REZXB0aEF0dGFjaG1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGV4dHVyZUlEID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1
cmVJRCk7CisKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wu
REVQVEhfQVRUQUNITUVOVCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZUlELCAwKTsKKworICAgIGNo
ZWNrQXR0YWNobWVudENvbXBvbmVudFNpemVFeGFjdGx5LmJpbmQodGhpcywgZ2wuRlJBTUVCVUZG
RVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIDAsIDAsIDAsIDAsIDAsIDApOworCisgICAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGds
LlRFWFRVUkVfMkQsIG51bGwsIDApOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZUlEKTsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBp
Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3Jp
cHRpb24KKyAqLworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmllZEF0dGFjaG1lbnRU
ZXh0dXJlQ29tcG9uZW50VHlwZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgewor
ICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wp
OworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNwZWNpZmll
ZEF0dGFjaG1lbnRUZXh0dXJlQ29tcG9uZW50VHlwZUNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2Up
OworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLlVuc3BlY2lmaWVkQXR0YWNobWVudFRleHR1cmVD
b21wb25lbnRUeXBlQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworfTsKKworLyoq
CisqIEBjb25zdHJ1Y3RvcgorKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisqLwor
ZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5GYm9TdGF0ZVF1ZXJ5VGVzdHMgPSBmdW5jdGlvbigpIHsK
KyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdmYm8nLCAnRmJvIFN0YXRlIFF1
ZXJ5IHRlc3RzJyk7Cit9OworCitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkZib1N0YXRlUXVlcnlU
ZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3Rv
dHlwZSk7CitlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkZib1N0YXRlUXVlcnlUZXN0cy5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkZib1N0YXRlUXVlcnlUZXN0
czsKKworZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5GYm9TdGF0ZVF1ZXJ5VGVzdHMucHJvdG90eXBl
LmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVkID0gLyoqIEB0eXBlIHtudW1iZXJ9ICov
IChnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMpKTsKKyAgICB2YXIgZ3JlZW4gPSAvKiogQHR5
cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5HUkVFTl9CSVRTKSk7CisgICAgdmFy
IGJsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJ
VFMpKTsKKyAgICB2YXIgYWxwaGEgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFt
ZXRlcihnbC5BTFBIQV9CSVRTKSk7CisgICAgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jb2xvckJp
dHMgPSBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdOworICAgIGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVz
dHMuZGVwdGhCaXRzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wu
REVQVEhfQklUUykpOworICAgIGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuc3RlbmNpbEJpdHMgPSAv
KiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5TVEVOQ0lMX0JJVFMpKTsK
KworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuRGVmYXVsdEZy
YW1lYnVmZmVyQ2FzZSgnZHJhd19mcmFtZWJ1ZmZlcl9kZWZhdWx0X2ZyYW1lYnVmZmVyJywgJ2Rl
ZmF1bHQgZnJhbWVidWZmZXInLCBnbC5EUkFXX0ZSQU1FQlVGRkVSKSk7CisgICAgdGhpcy5hZGRD
aGlsZChuZXcgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5EZWZhdWx0RnJhbWVidWZmZXJDYXNlKCdy
ZWFkX2ZyYW1lYnVmZmVyX2RlZmF1bHRfZnJhbWVidWZmZXInLCAnZGVmYXVsdCBmcmFtZWJ1ZmZl
cicsIGdsLlJFQURfRlJBTUVCVUZGRVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmRmJv
U3RhdGVRdWVyeVRlc3RzLkF0dGFjaG1lbnRPYmplY3RDYXNlKCdmcmFtZWJ1ZmZlcl9hdHRhY2ht
ZW50X29iamVjdCcsICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFIGFuZCBGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3
IGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFRleHR1cmVMZXZlbENhc2UoJ2ZyYW1l
YnVmZmVyX2F0dGFjaG1lbnRfdGV4dHVyZV9sZXZlbCcsICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfTEVWRUwnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0YXRlUXVl
cnlUZXN0cy5BdHRhY2htZW50VGV4dHVyZUN1YmVNYXBGYWNlQ2FzZSgnZnJhbWVidWZmZXJfYXR0
YWNobWVudF90ZXh0dXJlX2N1YmVfbWFwX2ZhY2UnLCAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0NVQkVfTUFQX0ZBQ0UnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0
YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50VGV4dHVyZUxheWVyQ2FzZSgnZnJhbWVidWZmZXJfYXR0
YWNobWVudF90ZXh0dXJlX2xheWVyJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9M
QVlFUicpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkF0
dGFjaG1lbnRUZXh0dXJlQ29sb3JDb2RpbmdDYXNlKCdmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2Nv
bG9yX2VuY29kaW5nJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcnKSk7
CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50
VGV4dHVyZUNvbXBvbmVudFR5cGVDYXNlKCdmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2NvbXBvbmVu
dF90eXBlJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUnKSk7CisgICAg
dGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50U2l6ZUlu
aXRpYWxDYXNlKCdmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3hfc2l6ZV9pbml0aWFsJywgJ0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfeF9TSVpFJykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZG
Ym9TdGF0ZVF1ZXJ5VGVzdHMuQXR0YWNobWVudFNpemVSYm9DYXNlKCdmcmFtZWJ1ZmZlcl9hdHRh
Y2htZW50X3hfc2l6ZV9yYm8nLCAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF94X1NJWkUnKSk7Cisg
ICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5BdHRhY2htZW50U2l6
ZVRleHR1cmVDYXNlKCdmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3hfc2l6ZV90ZXh0dXJlJywgJ0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfeF9TSVpFJykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2htZW50VGV4dHVyZUNvbG9yQ29k
aW5nQ2FzZSgnZnJhbWVidWZmZXJfdW5zcGVjaWZpZWRfYXR0YWNobWVudF9jb2xvcl9lbmNvZGlu
ZycsICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HJykpOworICAgIHRoaXMu
YWRkQ2hpbGQobmV3IGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRBdHRhY2htZW50
VGV4dHVyZUNvbXBvbmVudFR5cGVDYXNlKCdmcmFtZWJ1ZmZlcl91bnNwZWNpZmllZF9hdHRhY2ht
ZW50X2NvbXBvbmVudF90eXBlJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZ
UEUnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5VbnNw
ZWNpZmllZEF0dGFjaG1lbnRTaXplUmJvQ2FzZSgnZnJhbWVidWZmZXJfdW5zcGVjaWZpZWRfYXR0
YWNobWVudF94X3NpemVfcmJvJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfeF9TSVpFJykpOwor
ICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuVW5zcGVjaWZpZWRB
dHRhY2htZW50U2l6ZVRleHR1cmVDYXNlKCdmcmFtZWJ1ZmZlcl91bnNwZWNpZmllZF9hdHRhY2ht
ZW50X3hfc2l6ZV90ZXh0dXJlJywgJ0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfeF9TSVpFJykpOwor
fTsKKworLyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0g
Y29udGV4dAorKi8KK2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4
dCkgeworICAgIGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVy
cworICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBzdGF0ZS5zZXRSb290
KG5ldyBlczNmRmJvU3RhdGVRdWVyeVRlc3RzLkZib1N0YXRlUXVlcnlUZXN0cygpKTsKKworICAg
IC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAg
c2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICBkZXNj
cmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICB0cnkgewor
ICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNl
cygpOworICAgIH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25z
KCdGYWlsZWQgdG8gZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7Cisg
ICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCit9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLmpzIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2VzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNlYmU3ZTRh
OTgyMTIxZmMzZWRlNDJiZDc1YzNjNDI3NDc1ZmM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLmpzCkBAIC0wLDAgKzEsMzI1IEBACisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVT
IFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisK
KyAgICB2YXIgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZib1N0ZW5jaWxidWZmZXJUZXN0czsKKyAgICB2YXIgZXMzZkZib1Rlc3RDYXNlID0gZnVuY3Rp
b25hbC5nbGVzMy5lczNmRmJvVGVzdENhc2U7CisgICAgdmFyIGVzM2ZGYm9UZXN0VXRpbCA9IGZ1
bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZy
YW1ld29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdv
cmsuY29tbW9uLnRjdVN1cmZhY2U7CisgICAgdmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmU7CisgICAgdmFyIHJyVXRpbCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yclV0aWw7CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclV0aWw7CisgICAgdmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5n
bHVUZXh0dXJlVXRpbDsKKworICAgIC8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0g
Ki8gdmFyIGdsOworCisgICAgdmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAg
aWYgKCF4KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVkJyk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtl
czNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3Jt
YXQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHNpemUKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHVzZURlcHRoCisgICAgICovCisgICAgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5C
YXNpY0Zib1N0ZW5jaWxDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgZm9ybWF0LCBzaXplLCB1
c2VEZXB0aCkgeworICAgICAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9mb3Jt
YXQgPSBmb3JtYXQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5t
X3NpemUgPSBzaXplOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV91c2VE
ZXB0aCA9IHVzZURlcHRoOworICAgIH07CisKKyAgICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3Rz
LkJhc2ljRmJvU3RlbmNpbENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmRmJvVGVz
dENhc2UuRmJvVGVzdENhc2UucHJvdG90eXBlKTsKKyAgICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRl
c3RzLkJhc2ljRmJvU3RlbmNpbENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib1N0
ZW5jaWxidWZmZXJUZXN0cy5CYXNpY0Zib1N0ZW5jaWxDYXNlOworCisgICAgZXMzZkZib1N0ZW5j
aWxidWZmZXJUZXN0cy5CYXNpY0Zib1N0ZW5jaWxDYXNlLnByb3RvdHlwZS5wcmVDaGVjayA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZm9ybWF0
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGRzdAorICAgICAq
LworICAgIGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuQmFzaWNGYm9TdGVuY2lsQ2FzZS5wcm90
b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLmdl
dEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIGNv
bG9yRm9ybWF0ID0gZ2wuUkdCQTg7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0
aWwuR3JhZGllbnRTaGFkZXJ9ICovIHZhciBncmFkU2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRp
bC5HcmFkaWVudFNoYWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworICAg
ICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5GbGF0Q29sb3JTaGFkZXJ9ICovIHZhciBm
bGF0U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5GbGF0Q29sb3JTaGFkZXIoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgdmFyIGZsYXRTaGFkZXJJRCA9IHRo
aXMuZ2V0Q3VycmVudENvbnRleHQoKS5jcmVhdGVQcm9ncmFtKGZsYXRTaGFkZXIpOworICAgICAg
ICB2YXIgZ3JhZFNoYWRlcklEID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLmNyZWF0ZVByb2dy
YW0oZ3JhZFNoYWRlcik7CisKKyAgICAgICAgdmFyIGZibyA9IDA7CisgICAgICAgIHZhciBjb2xv
clJibyA9IDA7CisgICAgICAgIHZhciBkZXB0aFN0ZW5jaWxSYm8gPSAwOworCisgICAgICAgIC8v
IENvbG9yYnVmZmVyLgorICAgICAgICBjb2xvclJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIo
KTsKKyAgICAgICAgY3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvclJi
byk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgY29s
b3JGb3JtYXQsIHRoaXMubV9zaXplWzBdLCB0aGlzLm1fc2l6ZVsxXSk7CisKKyAgICAgICAgLy8g
U3RlbmNpbCAoYW5kIGRlcHRoKSBidWZmZXIuCisgICAgICAgIGRlcHRoU3RlbmNpbFJibyA9IGN0
eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY3R4LmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxSYm8pOworICAgICAgICBjdHgucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9mb3JtYXQsIHRoaXMubV9zaXplWzBdLCB0
aGlzLm1fc2l6ZVsxXSk7CisKKyAgICAgICAgLy8gRnJhbWVidWZmZXIuCisgICAgICAgIGZibyA9
IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNv
bG9yUmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
UmJvKTsKKyAgICAgICAgaWYgKHRoaXMubV91c2VEZXB0aCkKKyAgICAgICAgICAgIGN0eC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwg
Z2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxSYm8pOworICAgICAgICB0aGlzLmNoZWNrRXJy
b3IoKTsKKyAgICAgICAgdGhpcy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KTsKKworICAgICAgICBjdHgudmlld3BvcnQoMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9z
aXplWzFdKTsKKworICAgICAgICAvLyBDbGVhciBmcmFtZWJ1ZmZlci4KKyAgICAgICAgY3R4LmNs
ZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDAsIFswLjAsIDAuMCwgMC4wLCAwLjBdKTsKKyAgICAgICAg
Y3R4LmNsZWFyQnVmZmVyZmkoZ2wuREVQVEhfU1RFTkNJTCwgMCwgMS4wLCAwKTsKKworICAgICAg
ICAvLyBSZW5kZXIgaW50ZXJzZWN0aW5nIHF1YWRzIC0gaW5jcmVtZW50IHN0ZW5jaWwgb24gZGVw
dGggcGFzcworICAgICAgICBjdHguZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgICAgICBjdHgu
ZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgICAgIGN0eC5zdGVuY2lsRnVuYyhnbC5BTFdB
WVMsIDAsIDB4ZmYpOworICAgICAgICBjdHguc3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGds
LklOQ1IpOworCisgICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3IodGhpcy5nZXRDdXJyZW50Q29u
dGV4dCgpLCBmbGF0U2hhZGVySUQsIFsxLjAsIDAuMCwgMC4wLCAxLjBdKTsKKworICAgICAgICBy
clV0aWwuZHJhd1F1YWQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIFst
MS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuMF0pOworCisgICAgICAgIGdyYWRTaGFkZXIu
c2V0R3JhZGllbnQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBncmFkU2hhZGVySUQsIFswLjAs
IDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisKKyAgICAgICAgcnJVdGls
LmRyYXdRdWFkKHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKSwgZ3JhZFNoYWRlcklELCBbLTEuMCwg
LTEuMCwgLTEuMF0sIFsxLjAsIDEuMCwgMS4wXSk7CisKKyAgICAgICAgY3R4LmRpc2FibGUoZ2wu
REVQVEhfVEVTVCk7CisKKyAgICAgICAgLy8gRHJhdyBxdWFkIHdpdGggc3RlbmNpbCB0ZXN0IChz
dGVuY2lsID09IDEgb3IgMiBkZXBlbmRpbmcgb24gZGVwdGgpIC0gZGVjcmVtZW50IG9uIHN0ZW5j
aWwgZmFpbHVyZQorICAgICAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuRVFVQUwsIHRoaXMubV91c2VE
ZXB0aCA/IDIgOiAxLCAweGZmKTsKKyAgICAgICAgY3R4LnN0ZW5jaWxPcChnbC5ERUNSLCBnbC5L
RUVQLCBnbC5LRUVQKTsKKworICAgICAgICBmbGF0U2hhZGVyLnNldENvbG9yKHRoaXMuZ2V0Q3Vy
cmVudENvbnRleHQoKSwgZmxhdFNoYWRlcklELCBbMC4wLCAxLjAsIDAuMCwgMS4wXSk7CisKKyAg
ICAgICAgcnJVdGlsLmRyYXdRdWFkKHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKSwgZmxhdFNoYWRl
cklELCBbLTAuNSwgLTAuNSwgMC4wXSwgWzAuNSwgMC41LCAwLjBdKTsKKworICAgICAgICAvLyBE
cmF3IHF1YWQgd2l0aCBzdGVuY2lsIHRlc3Qgd2hlcmUgc3RlbmNpbCA+IDEgb3IgMiBkZXBlbmRp
bmcgb24gZGVwdGggYnVmZmVyCisgICAgICAgIGN0eC5zdGVuY2lsRnVuYyhnbC5HUkVBVEVSLCB0
aGlzLm1fdXNlRGVwdGggPyAxIDogMiwgMHhmZik7CisKKyAgICAgICAgZmxhdFNoYWRlci5zZXRD
b2xvcih0aGlzLmdldEN1cnJlbnRDb250ZXh0KCksIGZsYXRTaGFkZXJJRCwgWzAuMCwgMC4wLCAx
LjAsIDEuMF0pOworCisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCh0aGlzLmdldEN1cnJlbnRDb250
ZXh0KCksIGZsYXRTaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXSk7
CisKKyAgICAgICAgdGhpcy5yZWFkUGl4ZWxzVXNpbmdGb3JtYXQoZHN0LCAwLCAwLCB0aGlzLm1f
c2l6ZVswXSwgdGhpcy5tX3NpemVbMV0sIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3Jt
YXQoY29sb3JGb3JtYXQpLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSwgWzAuMCwgMC4wLCAwLjAsIDAu
MF0pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7ZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gYXR0YWNoRGVwdGgKKyAgICAgKi8KKyAgICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkRl
cHRoU3RlbmNpbEF0dGFjaENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBhdHRhY2hEZXB0aCwg
YXR0YWNoU3RlbmNpbCkgeworICAgICAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bV9hdHRhY2hEZXB0aCA9IGF0dGFjaERlcHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX2F0dGFjaFN0ZW5jaWwgPSBhdHRhY2hTdGVuY2lsOworICAgICAgICBERV9BU1NF
UlQodGhpcy5tX2F0dGFjaERlcHRoID09IGdsLkRFUFRIX0FUVEFDSE1FTlQgfHwgdGhpcy5tX2F0
dGFjaERlcHRoID09IGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCB8fCB0aGlzLm1fYXR0YWNo
RGVwdGggPT0gZ2wuTk9ORSk7CisgICAgICAgIERFX0FTU0VSVCh0aGlzLm1fYXR0YWNoU3RlbmNp
bCA9PSBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQgfHwgdGhpcy5tX2F0dGFjaFN0ZW5jaWwgPT0gZ2wu
Tk9ORSk7CisgICAgICAgIERFX0FTU0VSVCh0aGlzLm1fYXR0YWNoRGVwdGggIT0gZ2wuREVQVEhf
U1RFTkNJTCB8fCB0aGlzLm1fYXR0YWNoU3RlbmNpbCA9PSBnbC5OT05FKTsKKyAgICB9OworCisg
ICAgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5EZXB0aFN0ZW5jaWxBdHRhY2hDYXNlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLnByb3RvdHlw
ZSk7CisgICAgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5EZXB0aFN0ZW5jaWxBdHRhY2hDYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuRGVwdGhT
dGVuY2lsQXR0YWNoQ2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5T
dXJmYWNlfSBkc3QKKyAgICAgKi8KKyAgICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkRlcHRo
U3RlbmNpbEF0dGFjaENhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkgeworCisg
ICAgICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIC8qKiBA
Y29uc3Qge251bWJlcn0gKi8gdmFyIGNvbG9yRm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgICAgIC8q
KiBAY29uc3Qge251bWJlcn0gKi8gdmFyIGRlcHRoU3RlbmNpbEZvcm1hdCA9IGdsLkRFUFRIMjRf
U1RFTkNJTDg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHdpZHRoID0gMTI4
OworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSAxMjg7CisgICAg
ICAgIC8qKiBAY29uc3Qge2Jvb2xlYW59ICovIHZhciBoYXNEZXB0aCA9IHRoaXMubV9hdHRhY2hE
ZXB0aCA9PSBnbC5ERVBUSF9TVEVOQ0lMIHx8IHRoaXMubV9hdHRhY2hEZXB0aCA9PSBnbC5ERVBU
SF9BVFRBQ0hNRU5UOworICAgICAgICAvLyAvKiogQGNvbnN0IHtib29sZWFufSAqLyB2YXIgaGFz
U3RlbmNpbCA9IHRoaXMubV9hdHRhY2hEZXB0aCA9PSBnbC5ERVBUSF9TVEVOQ0lMIHx8IHRoaXMu
bV9hdHRhY2hTdGVuY2lsID09IGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCk7IC8vIGNvbW1l
bnRlZCBvdXQgaW4gb3JpZ2luYWwgY29kZQorCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rl
c3RVdGlsLkdyYWRpZW50U2hhZGVyfSAqLyB2YXIgZ3JhZFNoYWRlciA9IG5ldyBlczNmRmJvVGVz
dFV0aWwuR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsK
KyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyfSAqLyB2
YXIgZmxhdFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisgICAgICAgIHZhciBmbGF0U2hhZGVySUQg
PSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCkuY3JlYXRlUHJvZ3JhbShmbGF0U2hhZGVyKTsKKyAg
ICAgICAgdmFyIGdyYWRTaGFkZXJJRCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKS5jcmVhdGVQ
cm9ncmFtKGdyYWRTaGFkZXIpOworCisgICAgICAgIHZhciBmYm8gPSAwOworICAgICAgICB2YXIg
Y29sb3JSYm8gPSAwOworICAgICAgICB2YXIgZGVwdGhTdGVuY2lsUmJvID0gMDsKKworICAgICAg
ICAvLyBDb2xvcmJ1ZmZlci4KKyAgICAgICAgY29sb3JSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVm
ZmVyKCk7CisgICAgICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29s
b3JSYm8pOworICAgICAgICBjdHgucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIs
IGNvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBEZXB0aC1zdGVuY2ls
IGJ1ZmZlci4KKyAgICAgICAgZGVwdGhTdGVuY2lsUmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRo
U3RlbmNpbFJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJV
RkZFUiwgZGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBG
cmFtZWJ1ZmZlci4KKyAgICAgICAgZmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
ICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgIGN0
eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgY29sb3JSYm8pOworCisgICAgICAgIGlmICh0aGlzLm1f
YXR0YWNoRGVwdGggIT0gZ2wuTk9ORSkKKyAgICAgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5tX2F0dGFjaERlcHRoLCBnbC5SRU5ERVJCVUZG
RVIsIGRlcHRoU3RlbmNpbFJibyk7CisgICAgICAgIGlmICh0aGlzLm1fYXR0YWNoU3RlbmNpbCAh
PSBnbC5OT05FKQorICAgICAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCB0aGlzLm1fYXR0YWNoU3RlbmNpbCwgZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0
ZW5jaWxSYm8pOworCisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAgICAgICB0aGlzLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisgICAgICAgIGN0eC52aWV3
cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBDbGVhciBmcmFtZWJ1ZmZl
ci4KKyAgICAgICAgY3R4LmNsZWFyQnVmZmVyZnYoZ2wuQ09MT1IsIDAsIFswLjAsIDAuMCwgMC4w
LCAwLjBdKTsKKyAgICAgICAgY3R4LmNsZWFyQnVmZmVyZmkoZ2wuREVQVEhfU1RFTkNJTCwgMCwg
MS4wLCAwKTsKKworICAgICAgICAvLyBSZW5kZXIgaW50ZXJzZWN0aW5nIHF1YWRzIC0gaW5jcmVt
ZW50IHN0ZW5jaWwgb24gZGVwdGggcGFzcworICAgICAgICBjdHguZW5hYmxlKGdsLkRFUFRIX1RF
U1QpOworICAgICAgICBjdHguZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgICAgIGN0eC5z
dGVuY2lsRnVuYyhnbC5BTFdBWVMsIDAsIDB4ZmYpOworICAgICAgICBjdHguc3RlbmNpbE9wKGds
LktFRVAsIGdsLktFRVAsIGdsLklOQ1IpOworCisgICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3Io
dGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIFsxLjAsIDAuMCwgMC4wLCAx
LjBdKTsKKworICAgICAgICByclV0aWwuZHJhd1F1YWQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgp
LCBmbGF0U2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuMF0pOworCisg
ICAgICAgIGdyYWRTaGFkZXIuc2V0R3JhZGllbnQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBn
cmFkU2hhZGVySUQsIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7
CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKSwgZ3Jh
ZFNoYWRlcklELCBbLTEuMCwgLTEuMCwgLTEuMF0sIFsxLjAsIDEuMCwgMS4wXSk7CisKKyAgICAg
ICAgY3R4LmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7CisKKyAgICAgICAgLy8gRHJhdyBxdWFkIHdp
dGggc3RlbmNpbCB0ZXN0IChzdGVuY2lsID09IDEgb3IgMiBkZXBlbmRpbmcgb24gZGVwdGgpIC0g
ZGVjcmVtZW50IG9uIHN0ZW5jaWwgZmFpbHVyZQorICAgICAgICBjdHguc3RlbmNpbEZ1bmMoZ2wu
RVFVQUwsIGhhc0RlcHRoID8gMiA6IDEsIDB4ZmYpOworICAgICAgICBjdHguc3RlbmNpbE9wKGds
LkRFQ1IsIGdsLktFRVAsIGdsLktFRVApOworCisgICAgICAgIGZsYXRTaGFkZXIuc2V0Q29sb3Io
dGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIFswLjAsIDEuMCwgMC4wLCAx
LjBdKTsKKworICAgICAgICByclV0aWwuZHJhd1F1YWQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgp
LCBmbGF0U2hhZGVySUQsIFstMC41LCAtMC41LCAwLjBdLCBbMC41LCAwLjUsIDAuMF0pOworCisg
ICAgICAgIC8vIERyYXcgcXVhZCB3aXRoIHN0ZW5jaWwgdGVzdCB3aGVyZSBzdGVuY2lsID4gMSBv
ciAyIGRlcGVuZGluZyBvbiBkZXB0aCBidWZmZXIKKyAgICAgICAgY3R4LnN0ZW5jaWxGdW5jKGds
LkdSRUFURVIsIGhhc0RlcHRoID8gMSA6IDIsIDB4ZmYpOworCisgICAgICAgIGZsYXRTaGFkZXIu
c2V0Q29sb3IodGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIFswLjAsIDAu
MCwgMS4wLCAxLjBdKTsKKworICAgICAgICByclV0aWwuZHJhd1F1YWQodGhpcy5nZXRDdXJyZW50
Q29udGV4dCgpLCBmbGF0U2hhZGVySUQsIFstMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDAu
MF0pOworCisgICAgICAgIHRoaXMucmVhZFBpeGVsc1VzaW5nRm9ybWF0KGRzdCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChjb2xvckZvcm1h
dCksIFsxLjAsIDEuMCwgMS4wLCAxLjBdLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0
Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkZi
b1N0ZW5jaWxUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5jYWxsKHRoaXMsICdzdGVuY2lsJywgJ0ZCTyBTdGVuY2lsYnVmZmVyIHRlc3RzJyk7CisgICAg
fTsKKworICAgIGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuRmJvU3RlbmNpbFRlc3RzLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAg
ICBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkZib1N0ZW5jaWxUZXN0cy5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkZib1N0ZW5jaWxUZXN0czsKKwor
ICAgIGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuRmJvU3RlbmNpbFRlc3RzLnByb3RvdHlwZS5p
bml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICov
IHZhciBzdGVuY2lsRm9ybWF0cyA9IFsKKyAgICAgICAgICAgIGdsLkRFUFRIMzJGX1NURU5DSUw4
LAorICAgICAgICAgICAgZ2wuREVQVEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgICAgIGdsLlNURU5D
SUxfSU5ERVg4CisgICAgICAgIF07CisKKyAgICAgICAgLy8gLmJhc2ljCisgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBiYXNpY0dyb3VwID0g
dGN1VGVzdENhc2UubmV3VGVzdCgnYmFzaWMnLCAnQmFzaWMgc3RlbmNpbCB0ZXN0cycpOworICAg
ICAgICB0aGlzLmFkZENoaWxkKGJhc2ljR3JvdXApOworCisgICAgICAgIGZvciAodmFyIGZtdE5k
eCA9IDA7IGZtdE5keCA8IHN0ZW5jaWxGb3JtYXRzLmxlbmd0aDsgZm10TmR4KyspIHsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZm9ybWF0ID0gc3RlbmNpbEZvcm1hdHNb
Zm10TmR4XTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSAqLyB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChmb3Jt
YXQpOworCisgICAgICAgICAgICBiYXNpY0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvU3RlbmNp
bGJ1ZmZlclRlc3RzLkJhc2ljRmJvU3RlbmNpbENhc2UoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1h
dE5hbWUoZm9ybWF0KSwgJycsIGZvcm1hdCwgWzExMSwgMTMyXSwgZmFsc2UpKTsKKworICAgICAg
ICAgICAgaWYgKHRleEZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUykKKyAg
ICAgICAgICAgICAgICBiYXNpY0dyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvU3RlbmNpbGJ1ZmZl
clRlc3RzLkJhc2ljRmJvU3RlbmNpbENhc2UoZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5hbWUo
Zm9ybWF0KSArICdfZGVwdGgnLCAnJywgZm9ybWF0LCBbMTExLCAxMzJdLCB0cnVlKSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyAuYXR0YWNoCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENh
c2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBhdHRhY2hHcm91cCA9IHRjdVRlc3RDYXNlLm5l
d1Rlc3QoJ2F0dGFjaCcsICdBdHRhY2hpbmcgZGVwdGggc3RlbmNpbCcpOworICAgICAgICB0aGlz
LmFkZENoaWxkKGF0dGFjaEdyb3VwKTsKKworICAgICAgICBhdHRhY2hHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5EZXB0aFN0ZW5jaWxBdHRhY2hDYXNlKCdkZXB0
aF9vbmx5JywgJ09ubHkgZGVwdGggcGFydCBvZiBkZXB0aC1zdGVuY2lsIFJCTyBhdHRhY2hlZCcs
IGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLk5PTkUpKTsKKyAgICAgICAgYXR0YWNoR3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuRGVwdGhTdGVuY2lsQXR0YWNoQ2Fz
ZSgnc3RlbmNpbF9vbmx5JywgJ09ubHkgc3RlbmNpbCBwYXJ0IG9mIGRlcHRoLXN0ZW5jaWwgUkJP
IGF0dGFjaGVkJywgZ2wuTk9ORSwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisgICAgICAgIGF0
dGFjaEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkRlcHRoU3Rl
bmNpbEF0dGFjaENhc2UoJ2RlcHRoX3N0ZW5jaWxfc2VwYXJhdGUnLCAnRGVwdGggYW5kIHN0ZW5j
aWwgYXR0YWNoZWQgc2VwYXJhdGVseScsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlNURU5DSUxf
QVRUQUNITUVOVCkpOworICAgICAgICBhdHRhY2hHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZib1N0
ZW5jaWxidWZmZXJUZXN0cy5EZXB0aFN0ZW5jaWxBdHRhY2hDYXNlKCdkZXB0aF9zdGVuY2lsX2F0
dGFjaG1lbnQnLCAnRGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNoZWQgd2l0aCBERVBUSF9TVEVOQ0lM
X0FUVEFDSE1FTlQnLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLk5PTkUpKTsKKyAg
ICB9OworCisgICAgZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250
ZXh0KSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgcm9vdCBUZXN0
CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICB2YXIg
dGVzdCA9IG5ldyBlczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLkZib1N0ZW5jaWxUZXN0cygpOwor
ICAgICAgICB2YXIgdGVzdE5hbWUgPSB0ZXN0LmZ1bGxOYW1lKCk7CisgICAgICAgIHZhciB0ZXN0
RGVzY3JpcHRpb24gPSB0ZXN0LmdldERlc2NyaXB0aW9uKCk7CisKKyAgICAgICAgc3RhdGUudGVz
dE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9vdCh0ZXN0KTsKKyAgICAgICAg
Ly9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAg
ICAgc2V0Q3VycmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVz
dERlc2NyaXB0aW9uKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9DcmVhdGUgdGVz
dCBjYXNlcworICAgICAgICAgICAgdGVzdC5pbml0KCk7CisgICAgICAgICAgICAvL1J1biB0ZXN0
IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAg
fQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygn
RmFpbGVkIHRvIGVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOwor
ICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9Cisg
ICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZib1Rlc3RDYXNlLmpzIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZGYm9UZXN0Q2FzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGFhN2QzNTJmODk1MTIx
ZDg2MjExNzBkMTllZmRhNDU3ZjA3ZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZGYm9UZXN0Q2FzZS5qcwpAQCAtMCwwICsxLDQ4MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
KiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENv
cHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICog
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvVGVz
dENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdCcpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFu
ZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENv
bnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uu
c2dsclJlZmVyZW5jZUNvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyUmVuZGVyZXInKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmRmJvVGVzdFV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIGVzM2ZG
Ym9UZXN0Q2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RDYXNlOwordmFyIHRjdVRl
c3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBkZU1hdGggPSBmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5j
b21tb24udGN1U3VyZmFjZTsKK3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXh0dXJlOwordmFyIHJyUmVuZGVyZXIgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJS
ZW5kZXJlcjsKK3ZhciBzZ2xyUmVmZXJlbmNlQ29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wuc2lt
cGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0OwordmFyIHRjdVBpeGVsRm9ybWF0ID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdDsKK3ZhciB0Y3VJbWFnZUNvbXBhcmUgPSBm
cmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29y
ay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOwordmFyIHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsu
b3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0OwordmFyIGVzM2ZGYm9UZXN0VXRp
bCA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsOwordmFyIGRlUmFuZG9tID0gZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207CisKKy8qKiBAdHlwZWRlZiB7KHNnbHJHTENv
bnRleHQuR0xDb250ZXh0IHwgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCB8IHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHQpfSAqLworZXMzZkZib1Rlc3RDYXNlLkNvbnRleHQ7CisK
K3ZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKCF4KQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsKK307CisKKyAgICAvKioKKyAgICAqIGVzM2ZG
Ym9UZXN0Q2FzZS5GYm9UZXN0Q2FzZSBjbGFzcywgaW5oZXJpdHMgZnJvbSBUZXN0Q2FzZSBhbmQg
c2dsckNvbnRleHRXcmFwcGVyCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0
Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHVzZVNj
cmVlblNpemVkVmlld3BvcnQKKyAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2Fz
ZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB1c2VTY3JlZW5TaXplZFZpZXdwb3J0IC8q
PSBmYWxzZSAqLykgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV92
aWV3cG9ydFdpZHRoID0gdXNlU2NyZWVuU2l6ZWRWaWV3cG9ydCA9PT0gdW5kZWZpbmVkID8gZ2wu
ZHJhd2luZ0J1ZmZlcldpZHRoIDogMTI4OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5tX3ZpZXdwb3J0SGVpZ2h0ID0gdXNlU2NyZWVuU2l6ZWRWaWV3cG9ydCA9PT0gdW5kZWZp
bmVkID8gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCA6IDEyODsKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmRmJvVGVzdENhc2UuQ29udGV4dH0gKi8gdGhpcy5tX2N1ckN0eCA9IG51bGw7CisgICAgfTsK
KworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZkZib1Rlc3RDYXNl
LkZib1Rlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGYm9UZXN0Q2FzZS5GYm9U
ZXN0Q2FzZTsKKworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUuZ2V0
V2lkdGggPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgubWluKGdsLmRyYXdpbmdC
dWZmZXJXaWR0aCwgdGhpcy5tX3ZpZXdwb3J0V2lkdGgpOworICAgIH07CisKKyAgICBlczNmRmJv
VGVzdENhc2UuRmJvVGVzdENhc2UucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gTWF0aC5taW4oZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCwgdGhpcy5tX3Zp
ZXdwb3J0SGVpZ2h0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVu
dCBjb250ZXh0IChpbmhlcml0ZWQgZnJvbSBzZ2xyQ29udGV4dFdyYXBwZXIpCisgICAgICogQHBh
cmFtIHtlczNmRmJvVGVzdENhc2UuQ29udGV4dH0gY29udGV4dAorICAgICAqLworICAgIGVzM2ZG
Ym9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKGNv
bnRleHQpIHsKKyAgICAgICAgdGhpcy5tX2N1ckN0eCA9IGNvbnRleHQ7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEdldHMgdGhlIGN1cnJlbnQgY29udGV4dCAoaW5oZXJpdGVkIGZyb20gc2ds
ckNvbnRleHRXcmFwcGVyKQorICAgICAqIEByZXR1cm4ge2VzM2ZGYm9UZXN0Q2FzZS5Db250ZXh0
fQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUuZ2V0
Q3VycmVudENvbnRleHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9jdXJD
dHg7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNl
fSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0Cisg
ICAgICovCisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZS5jb21wYXJl
ID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHRjdUltYWdl
Q29tcGFyZS5mdXp6eUNvbXBhcmUoJ1Jlc3VsdCcsICdJbWFnZSBjb21wYXJpc29uIHJlc3VsdCcs
IHJlZmVyZW5jZS5nZXRBY2Nlc3MoKSwgcmVzdWx0LmdldEFjY2VzcygpLCAwLjA1LCB0Y3VJbWFn
ZUNvbXBhcmUuQ29tcGFyZUxvZ01vZGUuUkVTVUxUKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHNpemVkRm9ybWF0CisgICAgICovCisgICAgZXMzZkZib1Rlc3RD
YXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZS5jaGVja0Zvcm1hdFN1cHBvcnQgPSBmdW5jdGlvbihz
aXplZEZvcm1hdCkgeworICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtib29sZWFufSAqLyB2YXIg
aXNDb3JlRm9ybWF0ID0gZXMzZkZib1Rlc3RDYXNlLmlzUmVxdWlyZWRGb3JtYXQoc2l6ZWRGb3Jt
YXQpOworICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgcmVx
dWlyZWRFeHRzID0gKCFpc0NvcmVGb3JtYXQpID8gZXMzZkZib1Rlc3RDYXNlLmdldEVuYWJsaW5n
RXh0ZW5zaW9ucyhzaXplZEZvcm1hdCkgOiBbXTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IHdl
IGRvbid0IHRyeSB0byB1c2UgaW52YWxpZCBmb3JtYXRzLgorICAgICAgICBERV9BU1NFUlQoaXND
b3JlRm9ybWF0IHx8IHJlcXVpcmVkRXh0cyk7CisgICAgICAgIGlmIChyZXF1aXJlZEV4dHMubGVu
Z3RoID4gMCAmJiAhZXMzZkZib1Rlc3RDYXNlLmlzQW55RXh0ZW5zaW9uU3VwcG9ydGVkKGdsLCBy
ZXF1aXJlZEV4dHMpKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ1NLSVA6IEZvcm1hdCAnICsg
V2ViR0xUZXN0VXRpbHMuZ2xFbnVtVG9TdHJpbmcoZ2wsIHNpemVkRm9ybWF0KSArICcgbm90IHN1
cHBvcnRlZCc7CisgICAgICAgICAgICBkZWJ1Zyhtc2cpOworICAgICAgICAgICAgdGhyb3cgbmV3
IFRlc3RGYWlsZWRFeGNlcHRpb24obXNnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplZEZvcm1hdCBkZVVpbnQzMgorICAgICogQHBhcmFt
IHtudW1iZXJ9IG51bVNhbXBsZXMKKyAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0
Q2FzZS5wcm90b3R5cGUuY2hlY2tTYW1wbGVDb3VudCA9IGZ1bmN0aW9uKHNpemVkRm9ybWF0LCBu
dW1TYW1wbGVzKSB7CisgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gdmFyIG1p
blNhbXBsZUNvdW50ID0gZXMzZkZib1Rlc3RDYXNlLmdldE1pbmltdW1TYW1wbGVDb3VudChzaXpl
ZEZvcm1hdCk7CisKKyAgICAgICAgaWYgKG51bVNhbXBsZXMgPiBtaW5TYW1wbGVDb3VudCkgewor
ICAgICAgICAgICAgLy8gRXhjZWVkcyBzcGVjLW1hbmRhdGVkIG1pbmltdW0gLSBuZWVkIHRvIGNo
ZWNrLgorICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7Z29vZy5OdW1iZXJBcnJheX0gKi8g
dmFyIHN1cHBvcnRlZFNhbXBsZUNvdW50cyA9IGVzM2ZGYm9UZXN0Q2FzZS5xdWVyeVNhbXBsZUNv
dW50cyhzaXplZEZvcm1hdCk7CisgICAgICAgICAgICB2YXIgc3VwcG9ydGVkID0gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoc3VwcG9ydGVkU2FtcGxlQ291bnRzKTsKKyAgICAgICAgICAgIGlm
IChzdXBwb3J0ZWQuaW5kZXhPZihudW1TYW1wbGVzKSA9PSAtMSkgeworICAgICAgICAgICAgICAg
IGlmIChtaW5TYW1wbGVDb3VudCA9PSAwIHx8IG51bVNhbXBsZXMgPiBnbC5nZXRQYXJhbWV0ZXIo
Z2wuTUFYX1NBTVBMRVMpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTWVzc2FnZShmYWxz
ZSwgIlNhbXBsZSBjb3VudCBub3Qgc3VwcG9ydGVkLCBidXQgaXQgaXMgYWxsb3dlZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2FtcGxlIGNvdW50IG5vdCBz
dXBwb3J0ZWQnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZHN0CisgICAgKiBA
cGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSB3aWR0aAorICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICogQHBhcmFt
IHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBzY2FsZSBWZWM0CisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpYXMgVmVj
NAorICAgICovCisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZS5yZWFk
UGl4ZWxzVXNpbmdGb3JtYXQgPSBmdW5jdGlvbihkc3QsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgc2NhbGUsIGJpYXMpIHsKKyAgICAgICAgZHN0LnNldFNpemUod2lkdGgsIGhlaWdodCk7
CisgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5yZWFkUGl4ZWxzKHRoaXMuZ2V0Q3VycmVudENvbnRl
eHQoKSwgZHN0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNjYWxlLCBiaWFzKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZHN0Cisg
ICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICov
CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZS5yZWFkUGl4ZWxzID0g
ZnVuY3Rpb24oZHN0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAgIGRzdC5yZWFkVmll
d3BvcnQodGhpcy5nZXRDdXJyZW50Q29udGV4dCgpLCBbeCwgeSwgd2lkdGgsIGhlaWdodF0pOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAgICAqLwor
ICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHN0YXR1cyA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKS5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKHRhcmdldCk7CisgICAgICAgIGlmIChzdGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09N
UExFVEUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZyYW1lYnVmZmVyIFN0YXR1czog
JyArIFdlYkdMVGVzdFV0aWxzLmdsRW51bVRvU3RyaW5nKGdsLCBzdGF0dXMpKTsKKyAgICB9Owor
CisgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNlLnByb3RvdHlwZS5jaGVja0Vycm9yID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXJyID0gdGhp
cy5nZXRDdXJyZW50Q29udGV4dCgpLmdldEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9
IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2xFcnJvcjog
JyArIFdlYkdMVGVzdFV0aWxzLmdsRW51bVRvU3RyaW5nKGdsLCBlcnIpKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0Cisg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSB2YWx1ZSBWZWM0CisgICAgKi8KKyAgICBlczNm
RmJvVGVzdENhc2UuRmJvVGVzdENhc2UucHJvdG90eXBlLmNsZWFyQ29sb3JCdWZmZXIgPSBmdW5j
dGlvbihmb3JtYXQsIHZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB2
YWx1ZSA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOworICAgICAgICBlczNmRmJvVGVzdFV0aWwuY2xl
YXJDb2xvckJ1ZmZlcih0aGlzLmdldEN1cnJlbnRDb250ZXh0KCksIGZvcm1hdCwgdmFsdWUpOwor
ICAgIH07CisKKyAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UucHJvdG90eXBlLml0ZXJh
dGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVmlld3BvcnQuCisgICAgICAgIC8qKiBAdHlw
ZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0
cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgd2lkdGggPSBNYXRoLm1pbihnbC5kcmF3aW5nQnVmZmVyV2lkdGgsIHRoaXMubV92
aWV3cG9ydFdpZHRoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQg
PSBNYXRoLm1pbihnbC5kcmF3aW5nQnVmZmVySGVpZ2h0LCB0aGlzLm1fdmlld3BvcnRIZWlnaHQp
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHggPSBybmQuZ2V0SW50KDAsIGds
LmRyYXdpbmdCdWZmZXJXaWR0aCAtIHdpZHRoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB5ID0gcm5kLmdldEludCgwLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0IC0gaGVpZ2h0
KTsKKworICAgICAgICAvLyBTdXJmYWNlIGZvcm1hdCBhbmQgc3RvcmFnZSBpcyBjaG9vc2VuIGJ5
IHJlbmRlcigpLgorICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFy
IHJlZmVyZW5jZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVzdWx0ID0gbmV3IHRj
dVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBDYWxsIHByZUNo
ZWNrKCkgdGhhdCBjYW4gdGhyb3cgZXhjZXB0aW9uIGlmIHNvbWUgcmVxdWlyZW1lbnQgaXMgbm90
IG1ldC4KKyAgICAgICAgaWYgKHRoaXMucHJlQ2hlY2sgJiYgIXRoaXMucHJlQ2hlY2soKSkKKyAg
ICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisKKyAgICAg
ICAgLy8gUmVuZGVyIHVzaW5nIEdMRVMzLgorICAgICAgICB0cnkgeworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzZ2xyR0xDb250ZXh0LkdMQ29udGV4dH0gKi8gdmFyIGNvbnRleHQgPSBuZXcgc2ds
ckdMQ29udGV4dC5HTENvbnRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3gsIHksIHdpZHRoLCBoZWlnaHRd
KTsKKworICAgICAgICAgICAgIHRoaXMuc2V0Q29udGV4dChjb250ZXh0KTsKKyAgICAgICAgICAg
ICB0aGlzLnJlbmRlcihyZXN1bHQpOworCisgICAgICAgICAgICAgLy8gQ2hlY2sgZXJyb3IuCisg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBlcnIgPSBjb250ZXh0LmdldEVy
cm9yKCk7CisgICAgICAgICAgICAgaWYgKGVyciAhPSBnbC5OT19FUlJPUikKKyAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbEVycm9yOiAnICsgY29udGV4dCk7CisKKyAgICAgICAg
ICAgICB0aGlzLnNldENvbnRleHQobnVsbCk7CisgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBlczNmRmJvVGVzdFV0aWwuRmJvSW5jb21wbGV0ZUV4
Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAgaWYgKGUuZ2V0UmVhc29uKCkgPT0gZ2wuRlJBTUVC
VUZGRVJfVU5TVVBQT1JURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIGxvZyA8PCBlOwor
ICAgICAgICAgICAgICAgICAgICAgLy8gbV90ZXN0Q3R4LnNldFRlc3RSZXN1bHQoUVBfVEVTVF9S
RVNVTFRfTk9UX1NVUFBPUlRFRCwgJ05vdCBzdXBwb3J0ZWQnKTsKKyAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoZmFsc2UsICdOb3Qgc3VwcG9ydGVkJywgdHJ1ZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQu
U1RPUDsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAg
ICB9CisKKyAgICAgICAgLy8gUmVuZGVyIHJlZmVyZW5jZS4KKyAgICAgICAgdmFyIGFscGhhQml0
cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMUEhBX0JJVFMp
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250
ZXh0QnVmZmVyc30gKi8KKyAgICAgICAgdmFyIGJ1ZmZlcnMgPSBuZXcgc2dsclJlZmVyZW5jZUNv
bnRleHQuUmVmZXJlbmNlQ29udGV4dEJ1ZmZlcnMobmV3IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9y
bWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhQml0cyA+IDAgPyA4IDog
MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVy
KGdsLkRFUFRIX0JJVFMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIChn
bC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHR9ICovCisgICAgICAgIHZhciByZWZDb250ZXh0ID0gbmV3
IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQobmV3IHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHRMaW1pdHMoZ2wpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnMuZ2V0Q29s
b3JidWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWZmZXJzLmdldERlcHRoYnVmZmVyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVycy5nZXRTdGVuY2lsYnVmZmVyKCkpOworICAgICAgICByZWZDb250ZXh0LmdldEVycm9yKCk7
CisgICAgICAgIHRoaXMuc2V0Q29udGV4dChyZWZDb250ZXh0KTsKKyAgICAgICAgdGhpcy5yZW5k
ZXIocmVmZXJlbmNlKTsKKyAgICAgICAgdGhpcy5zZXRDb250ZXh0KG51bGwpOworCisgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSB0aGlzLmNvbXBhcmUocmVmZXJlbmNl
LCByZXN1bHQpOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoaXNPaywgJycsIHRydWUsIGZh
bHNlKTsKKworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAqIERlaW5pdC4gQ2xlYXIgc29tZSBHTCBzdGF0ZSB2YXJp
YWJsZXMKKyAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUu
ZGVpbml0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAvLyBQaXhlbCBvcGVyYXRpb25zCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsLmRpc2FibGUoZ2wuU0NJU1NPUl9URVNUKTsKKworICAgICAg
ICAgICAgZ2wuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICAgICAgZ2wuc3RlbmNp
bEZ1bmMoZ2wuQUxXQVlTLCAwLCAweGZmZmYpOworICAgICAgICAgICAgZ2wuc3RlbmNpbE9wKGds
LktFRVAsIGdsLktFRVAsIGdsLktFRVApOworCisgICAgICAgICAgICBnbC5kaXNhYmxlKGdsLkRF
UFRIX1RFU1QpOworICAgICAgICAgICAgZ2wuZGVwdGhGdW5jKGdsLkxFU1MpOworCisgICAgICAg
ICAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKyAgICAgICAgICAgIGdsLmJsZW5kRnVuYyhnbC5P
TkUsIGdsLlpFUk8pOworICAgICAgICAgICAgZ2wuYmxlbmRFcXVhdGlvbihnbC5GVU5DX0FERCk7
CisgICAgICAgICAgICBnbC5ibGVuZENvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CisKKyAgICAg
ICAgICAgIGdsLmVuYWJsZShnbC5ESVRIRVIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRnJh
bWVidWZmZXIgY29udHJvbAorICAgICAgICB7CisgICAgICAgICAgICBnbC5jb2xvck1hc2sodHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBnbC5kZXB0aE1hc2sodHJ1ZSk7Cisg
ICAgICAgICAgICBnbC5zdGVuY2lsTWFzaygweGZmZmYpOworCisgICAgICAgICAgICBnbC5jbGVh
ckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgICAgICAgICBnbC5jbGVhckRlcHRoKDEu
MCk7CisgICAgICAgICAgICBnbC5jbGVhclN0ZW5jaWwoMC4wKTsKKyAgICAgICAgICAgIC8vIERv
IG5vdCBjYWxsIGNsZWFyKCkgaGVyZSBiZWNhdXNlIGl0IG1pZ2h0IGdlbmVyYXRlIGFuIElOVkFM
SURfT1BFUkFUSU9OIGlmCisgICAgICAgICAgICAvLyBzb21lIGNvbG9yIGJ1ZmZlcnMgYXJlIG9m
IGludGVnZXIgZm9ybWF0cyBkdWUgdG8gV2ViR0wyIHNwZWNpZmljIGNvbnN0cmFpbnQuCisgICAg
ICAgICAgICAvLyBUaGUgdGVzdHMgZG8gbm90IHJlbHkgb24gY2xlYXIoKSBoZXJlLgorICAgICAg
ICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5pc1JlcXVp
cmVkRm9ybWF0ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7
CisgICAgICAgICAgICAvLyBDb2xvci1yZW5kZXJhYmxlIGZvcm1hdHMKKyAgICAgICAgICAgIGNh
c2UgZ2wuUkdCQTMySToKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTMyVUk6CisgICAgICAgICAg
ICBjYXNlIGdsLlJHQkExNkk6CisgICAgICAgICAgICBjYXNlIGdsLlJHQkExNlVJOgorICAgICAg
ICAgICAgY2FzZSBnbC5SR0JBODoKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQThJOgorICAgICAg
ICAgICAgY2FzZSBnbC5SR0JBOFVJOgorICAgICAgICAgICAgY2FzZSBnbC5TUkdCOF9BTFBIQTg6
CisgICAgICAgICAgICBjYXNlIGdsLlJHQjEwX0EyOgorICAgICAgICAgICAgY2FzZSBnbC5SR0Ix
MF9BMlVJOgorICAgICAgICAgICAgY2FzZSBnbC5SR0JBNDoKKyAgICAgICAgICAgIGNhc2UgZ2wu
UkdCNV9BMToKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCODoKKyAgICAgICAgICAgIGNhc2UgZ2wu
UkdCNTY1OgorICAgICAgICAgICAgY2FzZSBnbC5SRzMySToKKyAgICAgICAgICAgIGNhc2UgZ2wu
UkczMlVJOgorICAgICAgICAgICAgY2FzZSBnbC5SRzE2SToKKyAgICAgICAgICAgIGNhc2UgZ2wu
UkcxNlVJOgorICAgICAgICAgICAgY2FzZSBnbC5SRzg6CisgICAgICAgICAgICBjYXNlIGdsLlJH
OEk6CisgICAgICAgICAgICBjYXNlIGdsLlJHOFVJOgorICAgICAgICAgICAgY2FzZSBnbC5SMzJJ
OgorICAgICAgICAgICAgY2FzZSBnbC5SMzJVSToKKyAgICAgICAgICAgIGNhc2UgZ2wuUjE2SToK
KyAgICAgICAgICAgIGNhc2UgZ2wuUjE2VUk6CisgICAgICAgICAgICBjYXNlIGdsLlI4OgorICAg
ICAgICAgICAgY2FzZSBnbC5SOEk6CisgICAgICAgICAgICBjYXNlIGdsLlI4VUk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIC8vIERlcHRoIGZvcm1hdHMKKyAg
ICAgICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMzJGOgorICAgICAgICAgICAgY2FzZSBn
bC5ERVBUSF9DT01QT05FTlQyNDoKKyAgICAgICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5U
MTY6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIC8vIERlcHRo
K3N0ZW5jaWwgZm9ybWF0cworICAgICAgICAgICAgY2FzZSBnbC5ERVBUSDMyRl9TVEVOQ0lMODoK
KyAgICAgICAgICAgIGNhc2UgZ2wuREVQVEgyNF9TVEVOQ0lMODoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgLy8gU3RlbmNpbCBmb3JtYXRzCisgICAgICAgICAg
ICBjYXNlIGdsLlNURU5DSUxfSU5ERVg4OgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQg
ZGVVaW50MzIKKyAgICAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59CisgICAgKi8KKyAgICBlczNm
RmJvVGVzdENhc2UuZ2V0RW5hYmxpbmdFeHRlbnNpb25zID0gZnVuY3Rpb24oZm9ybWF0KSB7Cisg
ICAgICAgIC8qKiBAcmV0dXJuIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgb3V0ID0gW107CisKKyAg
ICAgICAgREVfQVNTRVJUKCFlczNmRmJvVGVzdENhc2UuaXNSZXF1aXJlZEZvcm1hdChmb3JtYXQp
KTsKKworICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBnbC5SR0JB
MTZGOgorICAgICAgICAgICAgY2FzZSBnbC5SRzE2RjoKKyAgICAgICAgICAgIGNhc2UgZ2wuUjE2
RjoKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTMyRjoKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdC
MzJGOgorICAgICAgICAgICAgY2FzZSBnbC5SMTFGX0cxMUZfQjEwRjoKKyAgICAgICAgICAgIGNh
c2UgZ2wuUkczMkY6CisgICAgICAgICAgICBjYXNlIGdsLlIzMkY6CisgICAgICAgICAgICAgICAg
b3V0LnB1c2goJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCMTZGOgorICAgICAgICAgICAgICAgIC8vIEVYVF9j
b2xvcl9idWZmZXJfaGFsZl9mbG9hdCBpcyBub3QgZXhwb3NlZCBpbiBXZWJHTCAyLjAuCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9OworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge2VzM2ZGYm9UZXN0Q2FzZS5Db250ZXh0fSBjb250ZXh0CisgICAg
KiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHJlcXVpcmVkRXh0cworICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAqLworICAgIGVzM2ZGYm9UZXN0Q2FzZS5pc0FueUV4dGVuc2lvblN1cHBvcnRl
ZCA9IGZ1bmN0aW9uKGNvbnRleHQsIHJlcXVpcmVkRXh0cykgeworICAgICAgICBmb3IgKHZhciBp
dGVyIGluIHJlcXVpcmVkRXh0cykgeworICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgZXh0ZW5zaW9uID0gcmVxdWlyZWRFeHRzW2l0ZXJdOworCisgICAgICAgICAg
ICBpZiAoc2dsckdMQ29udGV4dC5pc0V4dGVuc2lvblN1cHBvcnRlZChnbCwgZXh0ZW5zaW9uKSkg
eworICAgICAgICAgICAgICAgIC8vIGVuYWJsZSB0aGUgZXh0ZW5zaW9uCisgICAgICAgICAgICAg
ICAgZ2wuZ2V0RXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0IEdMIGZvcm1hdAorICogQHJl
dHVybiB7bnVtYmVyfQorICovCitlczNmRmJvVGVzdENhc2UuZ2V0TWluaW11bVNhbXBsZUNvdW50
ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgLy8g
Q29yZSBmb3JtYXRzCisgICAgICAgIGNhc2UgZ2wuUkdCQTMySToKKyAgICAgICAgY2FzZSBnbC5S
R0JBMzJVSToKKyAgICAgICAgY2FzZSBnbC5SR0JBMTZJOgorICAgICAgICBjYXNlIGdsLlJHQkEx
NlVJOgorICAgICAgICBjYXNlIGdsLlJHQkE4OgorICAgICAgICBjYXNlIGdsLlJHQkE4SToKKyAg
ICAgICAgY2FzZSBnbC5SR0JBOFVJOgorICAgICAgICBjYXNlIGdsLlNSR0I4X0FMUEhBODoKKyAg
ICAgICAgY2FzZSBnbC5SR0IxMF9BMjoKKyAgICAgICAgY2FzZSBnbC5SR0IxMF9BMlVJOgorICAg
ICAgICBjYXNlIGdsLlJHQkE0OgorICAgICAgICBjYXNlIGdsLlJHQjVfQTE6CisgICAgICAgIGNh
c2UgZ2wuUkdCODoKKyAgICAgICAgY2FzZSBnbC5SR0I1NjU6CisgICAgICAgIGNhc2UgZ2wuUkcz
Mkk6CisgICAgICAgIGNhc2UgZ2wuUkczMlVJOgorICAgICAgICBjYXNlIGdsLlJHMTZJOgorICAg
ICAgICBjYXNlIGdsLlJHMTZVSToKKyAgICAgICAgY2FzZSBnbC5SRzg6CisgICAgICAgIGNhc2Ug
Z2wuUkc4SToKKyAgICAgICAgY2FzZSBnbC5SRzhVSToKKyAgICAgICAgY2FzZSBnbC5SMzJJOgor
ICAgICAgICBjYXNlIGdsLlIzMlVJOgorICAgICAgICBjYXNlIGdsLlIxNkk6CisgICAgICAgIGNh
c2UgZ2wuUjE2VUk6CisgICAgICAgIGNhc2UgZ2wuUjg6CisgICAgICAgIGNhc2UgZ2wuUjhJOgor
ICAgICAgICBjYXNlIGdsLlI4VUk6CisgICAgICAgIGNhc2UgZ2wuREVQVEhfQ09NUE9ORU5UMzJG
OgorICAgICAgICBjYXNlIGdsLkRFUFRIX0NPTVBPTkVOVDI0OgorICAgICAgICBjYXNlIGdsLkRF
UFRIX0NPTVBPTkVOVDE2OgorICAgICAgICBjYXNlIGdsLkRFUFRIMzJGX1NURU5DSUw4OgorICAg
ICAgICBjYXNlIGdsLkRFUFRIMjRfU1RFTkNJTDg6CisgICAgICAgIGNhc2UgZ2wuU1RFTkNJTF9J
TkRFWDg6CisgICAgICAgICAgICByZXR1cm4gNDsKKworICAgICAgICAvLyBnbC5FWFRfY29sb3Jf
YnVmZmVyX2Zsb2F0CisgICAgICAgIGNhc2UgZ2wuUjExRl9HMTFGX0IxMEY6CisgICAgICAgIGNh
c2UgZ2wuUkcxNkY6CisgICAgICAgIGNhc2UgZ2wuUjE2RjoKKyAgICAgICAgICAgIHJldHVybiA0
OworCisgICAgICAgIGNhc2UgZ2wuUkdCQTMyRjoKKyAgICAgICAgY2FzZSBnbC5SR0JBMTZGOgor
ICAgICAgICBjYXNlIGdsLlJHMzJGOgorICAgICAgICBjYXNlIGdsLlIzMkY6CisgICAgICAgICAg
ICByZXR1cm4gMDsKKworICAgICAgICAvLyBnbC5FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQK
KyAgICAgICAgY2FzZSBnbC5SR0IxNkY6CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZvcm1hdDon
ICsgZm9ybWF0KTsKKyAgICB9Cit9OworCitlczNmRmJvVGVzdENhc2UucXVlcnlTYW1wbGVDb3Vu
dHMgPSBmdW5jdGlvbihmb3JtYXQpIHsKKyAgICByZXR1cm4gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBmb3JtYXQsIGdsLlNBTVBMRVMpOworfTsKKworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZib1Rlc3RVdGlsLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZGYm9UZXN0VXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDE1MmE0M2U0ZjQzOGMyYWYxYTMyZGY3MDhh
OTc1OWU1YTkxNTRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZGYm9UZXN0VXRp
bC5qcwpAQCAtMCwwICsxLDEzMjQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1l
bnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAx
NCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclNoYWRl
clByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
RnJhZ21lbnRPcGVyYXRpb25zJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2Vy
ZW5kZXJlci5yckdlbmVyaWNWZWN0b3InKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVy
ZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4QXR0cmliJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldCcpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCit2YXIgZXMzZkZib1Rlc3RVdGlsID0gZnVuY3Rpb25hbC5nbGVzMy5lczNm
RmJvVGVzdFV0aWw7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVy
ZTsKK3ZhciB0Y3VUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWw7
Cit2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKK3ZhciBnbHVUZXh0dXJl
VXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7Cit2YXIgZGVNYXRoID0gZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIHJyU2hhZGluZ0NvbnRleHQgPSBmcmFt
ZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dDsKK3ZhciByclZlcnRleFBh
Y2tldCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleFBhY2tldDsKK3ZhciBy
clZlcnRleEF0dHJpYiA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJp
YjsKK3ZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwor
dmFyIHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xy
R0xDb250ZXh0OwordmFyIHNnbHJSZWZlcmVuY2VDb250ZXh0ID0gZnJhbWV3b3JrLm9wZW5nbC5z
aW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQ7Cit2YXIgc2dsclNoYWRlclByb2dy
YW0gPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbTsK
K3ZhciByckdlbmVyaWNWZWN0b3IgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5l
cmljVmVjdG9yOwordmFyIHRjdU1hdHJpeCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4Owor
dmFyIHJyRnJhZ21lbnRPcGVyYXRpb25zID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJy
RnJhZ21lbnRPcGVyYXRpb25zOwordmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVN1cmZhY2U7CisKK3ZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKCF4KQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsKK307CisKKy8qKgorICog
RGVmaW5lcyB0aGUgZXhjZXB0aW9uIHR5cGUgZm9yIGEgdGVzdCBmYWlsdXJlLgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge251bWJlcn0gcmVhc29uIFRoZSBlcnJvciBjb2RlLgorICovCitl
czNmRmJvVGVzdFV0aWwuRmJvSW5jb21wbGV0ZUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKHJlYXNvbikg
eworICAgdGhpcy5yZWFzb24gPSByZWFzb247CisgICB0aGlzLm5hbWUgPSAnZXMzZkZib1Rlc3RV
dGlsLkZib0luY29tcGxldGVFeGNlcHRpb24nOworfTsKKworLyoqIEB0eXBlZGVmIHsgKFdlYkdM
MlJlbmRlcmluZ0NvbnRleHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dCl9
ICovCitlczNmRmJvVGVzdFV0aWwuQ29udGV4dDsKKworZXMzZkZib1Rlc3RVdGlsLkZib0luY29t
cGxldGVFeGNlcHRpb24ucHJvdG90eXBlLmdldFJlYXNvbiA9IGZ1bmN0aW9uKCkge3JldHVybiB0
aGlzLnJlYXNvbjsgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVj
VHlwZX0KKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwubWFwRGF0YVR5cGVUb0dlbmVyaWNW
ZWNUeXBlID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0OiByZXR1cm4gcnJH
ZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUOworICAgICAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0OiByZXR1cm4gcnJHZW5lcmljVmVjdG9yLkdlbmVy
aWNWZWNUeXBlLklOVDMyOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LlVJTlRfVkVDNDogcmV0dXJuIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5VSU5UMzI7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
VW5yZWNvZ25pemVkIHR5cGU6ICcgKyB0eXBlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGlucHV0CisgICAgICogQHBhcmFtIHt7
bWF4OiBudW1iZXIsIG1pbjogbnVtYmVyfX0gdHlwZSBtaW4sIG1heCBpbmZvcm1hdGlvbgorICAg
ICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGls
LmNhc3RWZWN0b3JTYXR1cmF0ZSA9IGZ1bmN0aW9uKGlucHV0LCB0eXBlKSB7CisgICAgICAgIHJl
dHVybiBbCisgICAgICAgICAgICAoaW5wdXRbMF0gKyAwLjUgPj0gdHlwZS5tYXgpID8gKHR5cGUu
bWF4KSA6ICgoaW5wdXRbMF0gLSAwLjUgPD0gdHlwZS5taW4pID8gKHR5cGUubWluKSA6IE1hdGgu
cm91bmQoaW5wdXRbMF0pKSwKKyAgICAgICAgICAgIChpbnB1dFsxXSArIDAuNSA+PSB0eXBlLm1h
eCkgPyAodHlwZS5tYXgpIDogKChpbnB1dFsxXSAtIDAuNSA8PSB0eXBlLm1pbikgPyAodHlwZS5t
aW4pIDogTWF0aC5yb3VuZChpbnB1dFsxXSkpLAorICAgICAgICAgICAgKGlucHV0WzJdICsgMC41
ID49IHR5cGUubWF4KSA/ICh0eXBlLm1heCkgOiAoKGlucHV0WzJdIC0gMC41IDw9IHR5cGUubWlu
KSA/ICh0eXBlLm1pbikgOiBNYXRoLnJvdW5kKGlucHV0WzJdKSksCisgICAgICAgICAgICAoaW5w
dXRbM10gKyAwLjUgPj0gdHlwZS5tYXgpID8gKHR5cGUubWF4KSA6ICgoaW5wdXRbM10gLSAwLjUg
PD0gdHlwZS5taW4pID8gKHR5cGUubWluKSA6IE1hdGgucm91bmQoaW5wdXRbM10pKQorICAgICAg
ICBdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9y
U2hhZGVyIGluaGVyaXRzIGZyb20gc2dsclNoYWRlclByb2dyYW0KKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0KKyAg
ICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IG91dHB1dFR5cGUKKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IHBvaW50U2l6ZQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5G
bGF0Q29sb3JTaGFkZXIgPSBmdW5jdGlvbihvdXRwdXRUeXBlLCBwb2ludFNpemUpIHsKKyAgICAg
ICAgcG9pbnRTaXplID0gcG9pbnRTaXplIHx8IDE7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9ufSAqLworICAgICAgICB2YXIgZGVj
bCA9IG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24oKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB0aGlzLm1fb3V0cHV0
VHlwZSA9IG91dHB1dFR5cGU7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5l
dyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUoJ2FfcG9zaXRpb24nLCByckdlbmVy
aWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4
VG9GcmFnbWVudFZhcnlpbmcobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJhZ21lbnRW
YXJ5aW5nKHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBk
ZWNsLnB1c2hGcmFnbWVudE91dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRw
dXQoZXMzZkZib1Rlc3RVdGlsLm1hcERhdGFUeXBlVG9HZW5lcmljVmVjVHlwZShvdXRwdXRUeXBl
KSkpOworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlm
b3JtKCd1X2NvbG9yJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KSk7CisgICAg
ICAgIGRlY2wucHVzaFZlcnRleFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4U291
cmNlKAorICAgICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAnaW4g
aGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lk
KVxuJyArCisgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0g
YV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgJyBnbF9Qb2ludFNpemUgPSAnICsgcG9pbnRT
aXplICsgJy4wO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOworICAgICAgICBkZWNsLnB1c2hG
cmFnbWVudFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UoCisgICAg
ICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hw
IHZlYzQgdV9jb2xvcjtcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBoaWdocCAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3V0cHV0VHlwZSkgKyAn
IG9fY29sb3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAg
ICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgb19jb2xvciA9ICcgKyBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlTmFtZShvdXRwdXRUeXBlKSArICcodV9jb2xvcik7XG4nICsKKyAgICAgICAg
ICAgICd9XG4nKSk7CisgICAgICAgIHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0uY2Fs
bCh0aGlzLCBkZWNsKTsKKyAgICAgICAgdGhpcy5tX3BvaW50U2l6ZSA9IHBvaW50U2l6ZTsKKyAg
ICB9OworCisgICAgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlci5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0ucHJvdG90eXBlKTsK
KyAgICBlczNmRmJvVGVzdFV0aWwuRmxhdENvbG9yU2hhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IGVzM2ZGYm9UZXN0VXRpbC5GbGF0Q29sb3JTaGFkZXI7CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0geyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0fHNnbHJHTENvbnRleHQuR0xDb250ZXh0fHNn
bHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHQpfSBjb250ZXh0CisgICAgICogQHBh
cmFtIHByb2dyYW0gR0wgcHJvZ3JhbSBvYmplY3QKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGNvbG9yCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlci5w
cm90b3R5cGUuc2V0Q29sb3IgPSBmdW5jdGlvbihjb250ZXh0LCBwcm9ncmFtLCBjb2xvcikgewor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvY2F0aW9uID0gY29udGV4dC5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VfY29sb3InKTsKKworICAgICAgICBjb250ZXh0LnVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwg
Y29sb3IpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVydGV4
QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0
ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBu
dW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRlci5w
cm90b3R5cGUuc2hhZGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKGlucHV0cywgcGFja2V0cywgbnVtUGFj
a2V0cykgeworICAgICAgICBmb3IgKHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHggPCBudW1Q
YWNrZXRzOyArK3BhY2tldE5keCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtyclZlcnRleFBh
Y2tldC5WZXJ0ZXhQYWNrZXR9ICovIHZhciBwYWNrZXQgPSBwYWNrZXRzW3BhY2tldE5keF07Cisg
ICAgICAgICAgICBwYWNrZXQucG9zaXRpb24gPSByclZlcnRleEF0dHJpYi5yZWFkVmVydGV4QXR0
cmliKGlucHV0c1swXSwgcGFja2V0Lmluc3RhbmNlTmR4LCBwYWNrZXQudmVydGV4TmR4LCByckdl
bmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpOworICAgICAgICAgICAgcGFja2V0LnBv
aW50U2l6ZSA9IHRoaXMubV9wb2ludFNpemU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVudD59IHBh
Y2tldAorICAgICAqIEBwYXJhbSB7cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRpbmdDb250
ZXh0fSBjb250ZXh0CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNoYWRl
ci5wcm90b3R5cGUuc2hhZGVGcmFnbWVudHMgPSBmdW5jdGlvbihwYWNrZXQsIGNvbnRleHQpIHsK
KyAgICAgICAgdmFyIG51bVBhY2tldHMgPSBwYWNrZXQubGVuZ3RoOworICAgICAgICAvKiogQGNv
bnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3IgPSB0aGlzLm1fdW5pZm9ybXNbMF0udmFs
dWU7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciBpY29sb3IgPSBl
czNmRmJvVGVzdFV0aWwuY2FzdFZlY3RvclNhdHVyYXRlKGNvbG9yLCB0Y3VUZXh0dXJlLmRlVHlw
ZXMuZGVJbnQzMik7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciB1
aWNvbG9yID0gZXMzZkZib1Rlc3RVdGlsLmNhc3RWZWN0b3JTYXR1cmF0ZShjb2xvciwgdGN1VGV4
dHVyZS5kZVR5cGVzLmRlVWludDMyKTsKKworICAgICAgICBpZiAodGhpcy5tX291dHB1dFR5cGUg
PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHggPCBudW1QYWNrZXRzOyArK3BhY2tldE5keCkK
KyAgICAgICAgICAgICAgICBwYWNrZXRbcGFja2V0TmR4XS52YWx1ZSA9IGNvbG9yOworICAgICAg
ICB9IGVsc2UgaWYgKHRoaXMubV9vdXRwdXRUeXBlID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UX1ZFQzQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIHBhY2tldE5keCA9IDA7IHBhY2tldE5k
eCA8IG51bVBhY2tldHM7ICsrcGFja2V0TmR4KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNr
ZXROZHhdLnZhbHVlID0gaWNvbG9yOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9vdXRwdXRU
eXBlID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0KSB7CisgICAgICAgICAgICBm
b3IgKHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHggPCBudW1QYWNrZXRzOyArK3BhY2tldE5k
eCkKKyAgICAgICAgICAgICAgICBwYWNrZXRbcGFja2V0TmR4XS52YWx1ZSA9IHVpY29sb3I7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG91dHB1
dCB0eXBlOiAnICsgdGhpcy5tX291dHB1dFR5cGUpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBlczNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXIgaW5oZXJpdHMgZnJvbSBzZ2xyU2hhZGVy
UHJvZ3JhbQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtzZ2xyU2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtfQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRh
VHlwZX0gb3V0cHV0VHlwZQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNo
YWRlciA9IGZ1bmN0aW9uKG91dHB1dFR5cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259ICovCisgICAgICAgIHZhciBkZWNs
ID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbigpOworICAg
ICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHRoaXMubV9vdXRwdXRU
eXBlID0gb3V0cHV0VHlwZTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBz
Z2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUoJ2FfcG9zaXRpb24nLCByckdlbmVyaWNW
ZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4QXR0
cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUoJ2FfY29vcmQnLCBy
ckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsKKyAgICAgICAgZGVjbC5wdXNo
VmVydGV4VG9GcmFnbWVudFZhcnlpbmcobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJh
Z21lbnRWYXJ5aW5nKHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAg
ICAgICBkZWNsLnB1c2hGcmFnbWVudE91dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21l
bnRPdXRwdXQoZXMzZkZib1Rlc3RVdGlsLm1hcERhdGFUeXBlVG9HZW5lcmljVmVjVHlwZShvdXRw
dXRUeXBlKSkpOworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3Jh
bS5Vbmlmb3JtKCd1X2dyYWRpZW50TWluJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUM0KSk7CisgICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVu
aWZvcm0oJ3VfZ3JhZGllbnRNYXgnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQp
KTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4U291cmNlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5W
ZXJ0ZXhTb3VyY2UoCisgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAg
ICAgICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICdpbiBoaWdo
cCB2ZWM0IGFfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICdvdXQgaGlnaHAgdmVjNCB2X2Nvb3Jk
O1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAn
e1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbicgKworICAg
ICAgICAgICAgJyB2X2Nvb3JkID0gYV9jb29yZDtcbicgKworICAgICAgICAgICAgJ31cbicpKTsK
KyAgICAgICAgZGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZy
YWdtZW50U291cmNlKAorICAgICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAg
ICAgICAnaW4gaGlnaHAgdmVjNCB2X2Nvb3JkO1xuJyArCisgICAgICAgICAgICAndW5pZm9ybSBo
aWdocCB2ZWM0IHVfZ3JhZGllbnRNaW47XG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hw
IHZlYzQgdV9ncmFkaWVudE1heDtcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9
IDApIG91dCBoaWdocCAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3V0cHV0VHlw
ZSkgKyAnIG9fY29sb3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsK
KyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgaGlnaHAgZmxvYXQgeCA9IHZfY29v
cmQueDtcbicgKworICAgICAgICAgICAgJyBoaWdocCBmbG9hdCB5ID0gdl9jb29yZC55O1xuJyAr
CisgICAgICAgICAgICAnIGhpZ2hwIGZsb2F0IGYwID0gKHggKyB5KSAqIDAuNTtcbicgKworICAg
ICAgICAgICAgJyBoaWdocCBmbG9hdCBmMSA9IDAuNSArICh4IC0geSkgKiAwLjU7XG4nICsKKyAg
ICAgICAgICAgICcgaGlnaHAgdmVjNCBmdiA9IHZlYzQoZjAsIGYxLCAxLjBmLWYwLCAxLjBmLWYx
KTtcbicgKworICAgICAgICAgICAgJyBvX2NvbG9yID0gJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVOYW1lKG91dHB1dFR5cGUpICsgJyh1X2dyYWRpZW50TWluICsgKHVfZ3JhZGllbnRNYXgt
dV9ncmFkaWVudE1pbikqZnYpO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOworICAgICAgICBz
Z2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtLmNhbGwodGhpcywgZGVjbCk7CisgICAgfTsK
KworICAgIGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlci5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0ucHJvdG90eXBlKTsKKyAgICBl
czNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMz
ZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtl
czNmRmJvVGVzdFV0aWwuQ29udGV4dH0gY3R4IEdMLWxpa2UgY29udGV4dAorICAgICAqIEBwYXJh
bSBwcm9ncmFtIEdMIHByb2dyYW0KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGdyYWRp
ZW50TWluCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBncmFkaWVudE1heAorICAgICAq
LworICAgIGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlci5wcm90b3R5cGUuc2V0R3JhZGll
bnQgPSBmdW5jdGlvbihjdHgsIHByb2dyYW0sIGdyYWRpZW50TWluLCBncmFkaWVudE1heCkgewor
ICAgICAgICBjdHgudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgY3R4LnVuaWZvcm00ZnYo
Y3R4LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9ncmFkaWVudE1pbicpLCBncmFkaWVu
dE1pbik7CisgICAgICAgIGN0eC51bmlmb3JtNGZ2KGN0eC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgJ3VfZ3JhZGllbnRNYXgnKSwgZ3JhZGllbnRNYXgpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0
cworICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFj
a2V0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMz
ZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyLnByb3RvdHlwZS5zaGFkZVZlcnRpY2VzID0gZnVu
Y3Rpb24oaW5wdXRzLCBwYWNrZXRzLCBudW1QYWNrZXRzKSB7CisgICAgICAgIGZvciAodmFyIHBh
Y2tldE5keCA9IDA7IHBhY2tldE5keCA8IG51bVBhY2tldHM7ICsrcGFja2V0TmR4KSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge3JyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldH0gKi8gdmFyIHBh
Y2tldCA9IHBhY2tldHNbcGFja2V0TmR4XTsKKworICAgICAgICAgICAgcGFja2V0LnBvc2l0aW9u
ID0gcnJWZXJ0ZXhBdHRyaWIucmVhZFZlcnRleEF0dHJpYihpbnB1dHNbMF0sIHBhY2tldC5pbnN0
YW5jZU5keCwgcGFja2V0LnZlcnRleE5keCwgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBl
LkZMT0FUKTsKKyAgICAgICAgICAgIHBhY2tldC5vdXRwdXRzWzBdID0gcnJWZXJ0ZXhBdHRyaWIu
cmVhZFZlcnRleEF0dHJpYihpbnB1dHNbMV0sIHBhY2tldC5pbnN0YW5jZU5keCwgcGFja2V0LnZl
cnRleE5keCwgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVy
YXRpb25zLkZyYWdtZW50Pn0gcGFja2V0CisgICAgICogQHBhcmFtIHtyclNoYWRpbmdDb250ZXh0
LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmRmJvVGVz
dFV0aWwuR3JhZGllbnRTaGFkZXIucHJvdG90eXBlLnNoYWRlRnJhZ21lbnRzID0gZnVuY3Rpb24o
cGFja2V0LCBjb250ZXh0KSB7CisgICAgICAgIHZhciBudW1QYWNrZXRzID0gcGFja2V0Lmxlbmd0
aDsKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGdyYWRpZW50TWlu
ID0gdGhpcy5tX3VuaWZvcm1zWzBdLnZhbHVlOworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgZ3JhZGllbnRNYXggPSB0aGlzLm1fdW5pZm9ybXNbMV0udmFsdWU7CisK
KyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsgcGFja2V0TmR4IDwgbnVtUGFja2V0czsg
KytwYWNrZXROZHgpIHsKKyAgICAgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICov
IHZhciBjb29yZCA9IHJyU2hhZGluZ0NvbnRleHQucmVhZFRyaWFuZ2xlVmFyeWluZyhwYWNrZXRb
cGFja2V0TmR4XSwgY29udGV4dCwgMCk7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9
ICovIHZhciB4ID0gY29vcmRbMF07CisgICAgICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICov
IHZhciB5ID0gY29vcmRbMV07CisgICAgICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZh
ciBmMCA9ICh4ICsgeSkgKiAwLjU7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICov
IHZhciBmMSA9IDAuNSArICh4IC0geSkgKiAwLjU7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgZnYgPSBbZjAsIGYxLCAxLjAgLSBmMCwgMS4wIC0gZjFdOwor
CisgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3IgPSBk
ZU1hdGguYWRkKGdyYWRpZW50TWluLCBkZU1hdGgubXVsdGlwbHkoZGVNYXRoLnN1YnRyYWN0KGdy
YWRpZW50TWF4LCBncmFkaWVudE1pbiksIGZ2KSk7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgaWNvbG9yID0gZXMzZkZib1Rlc3RVdGlsLmNhc3RWZWN0b3JT
YXR1cmF0ZShjb2xvciwgdGN1VGV4dHVyZS5kZVR5cGVzLmRlSW50MzIpOworICAgICAgICAgICAg
LyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHVpY29sb3IgPSBlczNmRmJvVGVzdFV0
aWwuY2FzdFZlY3RvclNhdHVyYXRlKGNvbG9yLCB0Y3VUZXh0dXJlLmRlVHlwZXMuZGVVaW50MzIp
OworCisgICAgICAgICAgICBpZiAodGhpcy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZh
bHVlID0gY29sb3I7CisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1fb3V0cHV0VHlwZSA9PSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtw
YWNrZXROZHhdLnZhbHVlID0gaWNvbG9yOworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tX291
dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQpCisgICAgICAgICAg
ICAgICAgcGFja2V0W3BhY2tldE5keF0udmFsdWUgPSB1aWNvbG9yOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvdXRwdXQgdHlwZTog
JyArIHRoaXMubV9vdXRwdXRUeXBlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59IHNhbXBsZXJUeXBlcwor
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBvdXRwdXRUeXBlCisgICAgKiBA
cmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLmdlblRleEZyYWdt
ZW50U2hhZGVyID0gZnVuY3Rpb24oc2FtcGxlclR5cGVzLCBvdXRwdXRUeXBlKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcHJlY2lzaW9uID0gJ2hpZ2hwJzsKKyAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzcmMgPSAnJzsKKworICAgICAgICBzcmMgPSAnI3Zl
cnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBoaWdocCAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3V0cHV0VHlwZSkgKyAn
IG9fY29sb3IwO1xuJyArCisgICAgICAgICAgICAgICdpbiBoaWdocCB2ZWMyIHZfY29vcmQ7XG4n
OworCisgICAgICAgIGZvciAodmFyIHNhbXBsZXJOZHggPSAwOyBzYW1wbGVyTmR4IDwgc2FtcGxl
clR5cGVzLmxlbmd0aDsgc2FtcGxlck5keCsrKSB7CisgICAgICAgICAgICBzcmMgKz0gJ3VuaWZv
cm0gJyArIHByZWNpc2lvbiArICcgJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHNh
bXBsZXJUeXBlc1tzYW1wbGVyTmR4XSkgKyAnIHVfc2FtcGxlcicgKyBzYW1wbGVyTmR4ICsgJztc
bicgKworICAgICAgICAgICAgICAgICAgICd1bmlmb3JtICcgKyBwcmVjaXNpb24gKyAnIHZlYzQg
dV90ZXhTY2FsZScgKyBzYW1wbGVyTmR4ICsgJztcbicgKworICAgICAgICAgICAgICAgICAgICd1
bmlmb3JtICcgKyBwcmVjaXNpb24gKyAnIHZlYzQgdV90ZXhCaWFzJyArIHNhbXBsZXJOZHggKyAn
O1xuJzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE91dHB1dCBzY2FsZSAmIGJpYXMKKyAgICAg
ICAgc3JjICs9ICd1bmlmb3JtICcgKyBwcmVjaXNpb24gKyAnIHZlYzQgdV9vdXRTY2FsZTA7XG4n
ICsKKyAgICAgICAgICAgICAgICd1bmlmb3JtICcgKyBwcmVjaXNpb24gKyAnIHZlYzQgdV9vdXRC
aWFzMDtcbic7CisKKyAgICAgICAgc3JjICs9ICdcbicgKworICAgICAgICAgICAgICAgJ3ZvaWQg
bWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgICAg
JyAnICsgcHJlY2lzaW9uICsgJyB2ZWM0IG91dDAgPSB2ZWM0KDAuMCk7XG4nOworCisgICAgICAg
IC8vIFRleHR1cmUgaW5wdXQgZmV0Y2ggYW5kIGNvbWJpbmUuCisgICAgICAgIGZvciAodmFyIGlu
TmR4ID0gMDsgaW5OZHggPCBzYW1wbGVyVHlwZXMubGVuZ3RoOyBpbk5keCsrKQorICAgICAgICAg
ICAgc3JjICs9ICdcdG91dDAgKz0gdmVjNCgnICsKKyAgICAgICAgICAgICAgICAgICAndGV4dHVy
ZSh1X3NhbXBsZXInICsgaW5OZHggKyAnLCB2X2Nvb3JkKSkgKiB1X3RleFNjYWxlJyArIGluTmR4
ICsgJyArIHVfdGV4QmlhcycgKyBpbk5keCArICc7XG4nOworCisgICAgICAgIC8vIFdyaXRlIG91
dHB1dC4KKyAgICAgICAgc3JjICs9ICcgb19jb2xvcjAgPSAnICsgZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZU5hbWUob3V0cHV0VHlwZSkgKyAnKG91dDAgKiB1X291dFNjYWxlMCArIHVfb3V0Qmlh
czApO1xuJyArCisgICAgICAgICAgICAgICAnfVxuJzsKKworICAgICAgICByZXR1cm4gc3JjOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0
YVR5cGU+fSBzYW1wbGVyVHlwZXMKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5
cGV9IG91dHB1dFR5cGUKKyAgICAgKiBAcmV0dXJuIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtRGVjbGFyYXRpb259CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLmdlblRleHR1
cmUyRFNoYWRlckRlY2wgPSBmdW5jdGlvbihzYW1wbGVyVHlwZXMsIG91dHB1dFR5cGUpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRp
b259ICovCisgICAgICAgIHZhciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW1EZWNsYXJhdGlvbigpOworCisgICAgICAgIGRlY2wucHVzaFZlcnRleEF0dHJpYnV0ZShu
ZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4QXR0cmlidXRlKCdhX3Bvc2l0aW9uJywgcnJHZW5l
cmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisgICAgICAgIGRlY2wucHVzaFZlcnRl
eEF0dHJpYnV0ZShuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4QXR0cmlidXRlKCdhX2Nvb3Jk
JywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisgICAgICAgIGRlY2wu
cHVzaFZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhU
b0ZyYWdtZW50VmFyeWluZyhyckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpKTsK
KyAgICAgICAgZGVjbC5wdXNoRnJhZ21lbnRPdXRwdXQobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZy
YWdtZW50T3V0cHV0KGVzM2ZGYm9UZXN0VXRpbC5tYXBEYXRhVHlwZVRvR2VuZXJpY1ZlY1R5cGUo
b3V0cHV0VHlwZSkpKTsKKworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhTb3VyY2UobmV3IHNnbHJT
aGFkZXJQcm9ncmFtLlZlcnRleFNvdXJjZSgKKyAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNc
bicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAg
ICAgICAgJ2luIGhpZ2hwIHZlYzIgYV9jb29yZDtcbicgKworICAgICAgICAgICAgJ291dCBoaWdo
cCB2ZWMyIHZfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4odm9pZClcbicgKwor
ICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247XG4nICsKKyAgICAgICAgICAgICcgdl9jb29yZCA9IGFfY29vcmQ7XG4nICsKKyAgICAgICAg
ICAgICd9XG4nKSk7CisKKyAgICAgICAgZGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJT
aGFkZXJQcm9ncmFtLkZyYWdtZW50U291cmNlKGVzM2ZGYm9UZXN0VXRpbC5nZW5UZXhGcmFnbWVu
dFNoYWRlcihzYW1wbGVyVHlwZXMsIG91dHB1dFR5cGUpKSk7CisKKyAgICAgICAgZGVjbC5wdXNo
VW5pZm9ybShuZXcgc2dsclNoYWRlclByb2dyYW0uVW5pZm9ybSgndV9vdXRTY2FsZTAnLCBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpKTsKKyAgICAgICAgZGVjbC5wdXNoVW5pZm9y
bShuZXcgc2dsclNoYWRlclByb2dyYW0uVW5pZm9ybSgndV9vdXRCaWFzMCcsIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCkpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHNhbXBsZXJUeXBlcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICBkZWNsLnB1c2hV
bmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X3NhbXBsZXInICsgbmR4LCBz
YW1wbGVyVHlwZXNbbmR4XSkpOworICAgICAgICAgICAgZGVjbC5wdXNoVW5pZm9ybShuZXcgc2ds
clNoYWRlclByb2dyYW0uVW5pZm9ybSgndV90ZXhTY2FsZScgKyBuZHgsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDNCkpOworICAgICAgICAgICAgZGVjbC5wdXNoVW5pZm9ybShuZXcg
c2dsclNoYWRlclByb2dyYW0uVW5pZm9ybSgndV90ZXhCaWFzJyArIG5keCwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9WRUM0KSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVj
bDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRm9yIHVzZSBpbiBlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZTJEU2hhZGVyCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZkZi
b1Rlc3RVdGlsLklucHV0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLnVuaXROZHg7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dGhpcy5zY2FsZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLmJp
YXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRT
aGFkZXIgaW5oZXJpdHMgZnJvbSBzZ2xyU2hhZGVyUHJvZ3JhbQorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBleHRlbmRzIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfQorICAg
ICAqIEBwYXJhbSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59IHNhbXBsZXJUeXBlcwor
ICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gb3V0cHV0VHlwZQorICAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPj19IG91dFNjYWxlIC0gZGVmYXVsdCBbMS4wLCAxLjAsIDEu
MCwgMS4wXQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPj19IG91dEJpYXMgLSBkZWZhdWx0
IFswLjAsIDAuMCwgMC4wLCAwLjBdCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1
cmUyRFNoYWRlciA9IGZ1bmN0aW9uKHNhbXBsZXJUeXBlcywgb3V0cHV0VHlwZSwgb3V0U2NhbGUs
IG91dEJpYXMpIHsKKyAgICAgICAgaWYgKG91dFNjYWxlID09PSB1bmRlZmluZWQpIG91dFNjYWxl
ID0gWzEuMCwgMS4wLCAxLjAsIDEuMF07CisgICAgICAgIGlmIChvdXRCaWFzID09PSB1bmRlZmlu
ZWQpIG91dEJpYXMgPSBbMC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgc2dsclNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbS5jYWxsKHRoaXMsIGVzM2ZGYm9UZXN0VXRpbC5nZW5UZXh0dXJl
MkRTaGFkZXJEZWNsKHNhbXBsZXJUeXBlcywgb3V0cHV0VHlwZSkpOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PGVzM2ZGYm9UZXN0VXRpbC5JbnB1dD59ICovIHRoaXMubV9pbnB1dHMgPSBbXTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fb3V0U2NhbGUgPSBv
dXRTY2FsZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fb3V0
QmlhcyA9IG91dEJpYXM7CisgICAgICAgIC8qKiBAY29uc3Qge2dsdVNoYWRlclV0aWwuRGF0YVR5
cGV9ICovIHRoaXMubV9vdXRwdXRUeXBlID0gb3V0cHV0VHlwZTsKKyAgICAgICAgZm9yICh2YXIg
bmR4ID0gMDsgbmR4IDwgc2FtcGxlclR5cGVzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAg
IHZhciBpbnB1dCA9IG5ldyBlczNmRmJvVGVzdFV0aWwuSW5wdXQoKTsKKyAgICAgICAgICAgIGlu
cHV0LnVuaXROZHggPSBuZHg7CisgICAgICAgICAgICBpbnB1dC5zY2FsZSA9IFsxLjAsIDEuMCwg
MS4wLCAxLjBdOworICAgICAgICAgICAgaW5wdXQuYmlhcyA9IFswLjAsIDAuMCwgMC4wLCAwLjBd
OworICAgICAgICAgICAgdGhpcy5tX2lucHV0c1tuZHhdID0gaW5wdXQ7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlci5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0ucHJvdG90eXBlKTsK
KyAgICBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXI7CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW5wdXROZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdW5pdE5keAor
ICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIucHJvdG90eXBlLnNl
dFVuaXQgPSBmdW5jdGlvbihpbnB1dE5keCwgdW5pdE5keCkgeworICAgICAgICB0aGlzLm1faW5w
dXRzW2lucHV0TmR4XS51bml0TmR4ID0gdW5pdE5keDsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGlucHV0TmR4CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBzY2FsZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYmlhcworICAgICAqLworICAg
IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIucHJvdG90eXBlLnNldFRleFNjYWxlQmlh
cyA9IGZ1bmN0aW9uKGlucHV0TmR4LCBzY2FsZSwgYmlhcykgeworICAgICAgICB0aGlzLm1faW5w
dXRzW2lucHV0TmR4XS5zY2FsZSA9IHNjYWxlOworICAgICAgICB0aGlzLm1faW5wdXRzW2lucHV0
TmR4XS5iaWFzID0gYmlhczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBzY2FsZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYmlhcworICAg
ICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIucHJvdG90eXBlLnNldE91
dFNjYWxlQmlhcyA9IGZ1bmN0aW9uKHNjYWxlLCBiaWFzKSB7CisgICAgICAgIHRoaXMubV9vdXRT
Y2FsZSA9IHNjYWxlOworICAgICAgICB0aGlzLm1fb3V0QmlhcyA9IGJpYXM7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSBjb250ZXh0IEdMLWxpa2UgY29udGV4dAorICAgICAqIEBw
YXJhbSBwcm9ncmFtCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRl
ci5wcm90b3R5cGUuc2V0VW5pZm9ybXMgPSBmdW5jdGlvbihjb250ZXh0LCBwcm9ncmFtKSB7Cisg
ICAgICAgIGNvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICBmb3IgKHZhciB0
ZXhOZHggPSAwOyB0ZXhOZHggPCB0aGlzLm1faW5wdXRzLmxlbmd0aDsgdGV4TmR4KyspIHsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc2FtcGxlck5hbWUgPSAndV9zYW1w
bGVyJyArIHRleE5keDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc2Nh
bGVOYW1lID0gJ3VfdGV4U2NhbGUnICsgdGV4TmR4OworICAgICAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciBiaWFzTmFtZSA9ICd1X3RleEJpYXMnICsgdGV4TmR4OworCisgICAgICAg
ICAgICBjb250ZXh0LnVuaWZvcm0xaShjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBzYW1wbGVyTmFtZSksIHRoaXMubV9pbnB1dHNbdGV4TmR4XS51bml0TmR4KTsKKyAgICAgICAg
ICAgIGNvbnRleHQudW5pZm9ybTRmdihjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBzY2FsZU5hbWUpLCB0aGlzLm1faW5wdXRzW3RleE5keF0uc2NhbGUpOworICAgICAgICAgICAg
Y29udGV4dC51bmlmb3JtNGZ2KGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIGJp
YXNOYW1lKSwgdGhpcy5tX2lucHV0c1t0ZXhOZHhdLmJpYXMpOworICAgICAgICB9CisKKyAgICAg
ICAgY29udGV4dC51bmlmb3JtNGZ2KGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICd1X291dFNjYWxlMCcpLCB0aGlzLm1fb3V0U2NhbGUpOworICAgICAgICBjb250ZXh0LnVuaWZv
cm00ZnYoY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3Vfb3V0QmlhczAnKSwg
dGhpcy5tX291dEJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5
PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAqIEBwYXJhbSB7QXJy
YXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUy
RFNoYWRlci5wcm90b3R5cGUuc2hhZGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKGlucHV0cywgcGFja2V0
cywgbnVtUGFja2V0cykgeworICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgcnJWZXJ0ZXhBdHRy
aWIucmVhZFZlcnRleEF0dHJpYkZsb2F0CisgICAgICAgIGZvciAodmFyIHBhY2tldE5keCA9IDA7
IHBhY2tldE5keCA8IG51bVBhY2tldHM7ICsrcGFja2V0TmR4KSB7CisgICAgICAgICAgICAvKiog
QHR5cGUge3JyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldH0gKi8gdmFyIHBhY2tldCA9IHBhY2tl
dHNbcGFja2V0TmR4XTsKKyAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHJyVmVydGV4QXR0
cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzWzBdLCBwYWNrZXQuaW5zdGFuY2VOZHgsIHBhY2tl
dC52ZXJ0ZXhOZHgsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCk7CisgICAg
ICAgICAgICBwYWNrZXQub3V0cHV0c1swXSA9IHJyVmVydGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRy
aWIoaW5wdXRzWzFdLCBwYWNrZXQuaW5zdGFuY2VOZHgsIHBhY2tldC52ZXJ0ZXhOZHgsIHJyR2Vu
ZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5GcmFnbWVu
dD59IHBhY2tldAorICAgICAqIEBwYXJhbSB7cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVudFNoYWRp
bmdDb250ZXh0fSBjb250ZXh0CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUy
RFNoYWRlci5wcm90b3R5cGUuc2hhZGVGcmFnbWVudHMgPSBmdW5jdGlvbihwYWNrZXQsIGNvbnRl
eHQpIHsKKyAgICAgICAgdmFyIG51bVBhY2tldHMgPSBwYWNrZXQubGVuZ3RoOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBvdXRTY2FsZSA9IHRoaXMubV91bmlmb3Jt
c1swXS52YWx1ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgb3V0
QmlhcyA9IHRoaXMubV91bmlmb3Jtc1sxXS52YWx1ZTsKKyAgICAgICAgdmFyIHRleENvb3JkcyA9
IFtdOworICAgICAgICB2YXIgY29sb3JzID0gW107CisKKyAgICAgICAgZm9yICh2YXIgcGFja2V0
TmR4ID0gMDsgcGFja2V0TmR4IDwgbnVtUGFja2V0czsgKytwYWNrZXROZHgpIHsKKyAgICAgICAg
ICAgIC8vIHNldHVwIHRleCBjb29yZHMKKyAgICAgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgY29vcmQgPSByclNoYWRpbmdDb250ZXh0LnJlYWRUcmlhbmdsZVZh
cnlpbmcocGFja2V0W3BhY2tldE5keF0sIGNvbnRleHQsIDApOworICAgICAgICAgICAgICAgIHRl
eENvb3JkcyA9IFtjb29yZFswXSwgY29vcmRbMV1dOworCisgICAgICAgICAgICAvLyBjbGVhciBy
ZXN1bHQKKyAgICAgICAgICAgIGNvbG9ycyA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOworCisgICAg
ICAgICAgICAvLyBzYW1wbGUgZWFjaCB0ZXh0dXJlCisgICAgICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCB0aGlzLm1faW5wdXRzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgICAg
ICB2YXIgdGV4ID0gdGhpcy5tX3VuaWZvcm1zWzIgKyBuZHggKiAzXS5zYW1wbGVyOworICAgICAg
ICAgICAgICAgIHZhciByYXRpb1ggPSB0ZXgubV92aWV3LmdldFdpZHRoKCkgLyBjb250ZXh0Lmdl
dFdpZHRoKCk7CisgICAgICAgICAgICAgICAgdmFyIHJhdGlvWSA9IHRleC5tX3ZpZXcuZ2V0SGVp
Z2h0KCkgLyBjb250ZXh0LmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIHZhciBsb2QgPSBN
YXRoLmZsb29yKE1hdGgubG9nMihNYXRoLm1heChyYXRpb1gsIHJhdGlvWSkpKTsKKworICAgICAg
ICAgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciBzY2FsZSA9IHRoaXMu
bV91bmlmb3Jtc1syICsgbmR4ICogMyArIDFdLnZhbHVlOworICAgICAgICAgICAgICAgIC8qKiBA
Y29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciBiaWFzID0gdGhpcy5tX3VuaWZvcm1zWzIgKyBu
ZHggKiAzICsgMl0udmFsdWU7CisKKyAgICAgICAgICAgICAgICB2YXIgdG1wQ29sb3JzID0gdGV4
LnNhbXBsZSh0ZXhDb29yZHMsIGxvZCk7CisKKyAgICAgICAgICAgICAgICBjb2xvcnMgPSBkZU1h
dGguYWRkKGNvbG9ycywgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkodG1wQ29sb3JzLCBzY2Fs
ZSksIGJpYXMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gd3JpdGUgb3V0Cisg
ICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3IgPSBkZU1h
dGguYWRkKGRlTWF0aC5tdWx0aXBseShjb2xvcnMsIG91dFNjYWxlKSwgb3V0Qmlhcyk7CisgICAg
ICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaWNvbG9yID0gZXMzZkZi
b1Rlc3RVdGlsLmNhc3RWZWN0b3JTYXR1cmF0ZShjb2xvciwgdGN1VGV4dHVyZS5kZVR5cGVzLmRl
SW50MzIpOworICAgICAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHVp
Y29sb3IgPSBlczNmRmJvVGVzdFV0aWwuY2FzdFZlY3RvclNhdHVyYXRlKGNvbG9yLCB0Y3VUZXh0
dXJlLmRlVHlwZXMuZGVVaW50MzIpOworCisgICAgICAgICAgICBpZiAodGhpcy5tX291dHB1dFR5
cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KQorICAgICAgICAgICAgICAg
IHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gY29sb3I7CisgICAgICAgICAgICBlbHNlIGlmICh0
aGlzLm1fb3V0cHV0VHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0KQorICAg
ICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gaWNvbG9yOworICAgICAgICAg
ICAgZWxzZSBpZiAodGhpcy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UX1ZFQzQpCisgICAgICAgICAgICAgICAgcGFja2V0W3BhY2tldE5keF0udmFsdWUgPSB1aWNv
bG9yOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZGYm9UZXN0VXRp
bC5UZXh0dXJlQ3ViZVNoYWRlciBpbmhlcml0cyBmcm9tIHNnbHJTaGFkZXJQcm9ncmFtCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3NnbHJTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW19CisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBzYW1wbGVy
VHlwZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gb3V0cHV0VHlwZQor
ICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlQ3ViZVNoYWRlciA9IGZ1bmN0aW9u
KHNhbXBsZXJUeXBlLCBvdXRwdXRUeXBlKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9ufSAqLworICAgICAgICB2YXIgZGVjbCA9
IG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb24oKTsKKyAgICAg
ICAgZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhB
dHRyaWJ1dGUoJ2FfcG9zaXRpb24nLCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxP
QVQpKTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJv
Z3JhbS5WZXJ0ZXhBdHRyaWJ1dGUoJ2FfY29vcmQnLCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1Zl
Y1R5cGUuRkxPQVQpKTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4VG9GcmFnbWVudFZhcnlpbmco
bmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nKHJyR2VuZXJpY1Zl
Y3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hGcmFnbWVudE91
dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQoZXMzZkZib1Rlc3RVdGls
Lm1hcERhdGFUeXBlVG9HZW5lcmljVmVjVHlwZShvdXRwdXRUeXBlKSkpOworICAgICAgICBkZWNs
LnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X2Nvb3JkTWF0Jywg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzKSk7CisgICAgICAgIGRlY2wucHVzaFVu
aWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3Vfc2FtcGxlcjAnLCBzYW1wbGVy
VHlwZSkpOworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5V
bmlmb3JtKCd1X3NjYWxlJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KSk7Cisg
ICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3Vf
YmlhcycsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCkpOworICAgICAgICBkZWNs
LnB1c2hWZXJ0ZXhTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFNvdXJjZSgKKyAg
ICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZl
YzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMiBhX2Nvb3Jk
O1xuJyArCisgICAgICAgICAgICAndW5pZm9ybSBtYXQzIHVfY29vcmRNYXQ7XG4nICsKKyAgICAg
ICAgICAgICdvdXQgbWVkaXVtcCB2ZWMzIHZfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICd2b2lk
IG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnIHZfY29vcmQgPSB1X2Nv
b3JkTWF0ICogdmVjMyhhX2Nvb3JkLCAxLjApO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOwor
ICAgICAgICBkZWNsLnB1c2hGcmFnbWVudFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uRnJh
Z21lbnRTb3VyY2UoCisgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAg
ICAgICd1bmlmb3JtIGhpZ2hwICcgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShzYW1w
bGVyVHlwZSkgKyAnIHVfc2FtcGxlcjA7XG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hw
IHZlYzQgdV9zY2FsZTtcbicgKworICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X2Jp
YXM7XG4nICsKKyAgICAgICAgICAgICdpbiBtZWRpdW1wIHZlYzMgdl9jb29yZDtcbicgKworICAg
ICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBoaWdocCAnICsgZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU5hbWUob3V0cHV0VHlwZSkgKyAnIG9fY29sb3I7XG4nICsKKyAgICAgICAg
ICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAg
ICAgICcgb19jb2xvciA9ICcgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShvdXRwdXRU
eXBlKSArICcodmVjNCh0ZXh0dXJlKHVfc2FtcGxlcjAsIHZfY29vcmQpKSAqIHVfc2NhbGUgKyB1
X2JpYXMpO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOworICAgICAgICBzZ2xyU2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtLmNhbGwodGhpcywgZGVjbCk7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3RleFNjYWxlID0gWzEuMCwgMS4wLCAxLjAsIDEuMF07
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3RleEJpYXMgPSBb
MC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0M30g
Ki8gdGhpcy5tX2Nvb3JkTWF0OworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9ICovIHRoaXMubV9vdXRwdXRUeXBlID0gb3V0cHV0VHlwZTsKKyAgICB9OworCisgICAg
ZXMzZkZib1Rlc3RVdGlsLlRleHR1cmVDdWJlU2hhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUpOworICAgIGVzM2ZG
Ym9UZXN0VXRpbC5UZXh0dXJlQ3ViZVNoYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
RmJvVGVzdFV0aWwuVGV4dHVyZUN1YmVTaGFkZXI7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ3ViZUZhY2V9IGZhY2UKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZUN1YmVTaGFkZXIucHJvdG90eXBlLnNldEZhY2UgPSBmdW5jdGlvbihmYWNlKSB7Cisg
ICAgICAgIC8qKiBAY29uc3Qge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgc19jdWJlVHJh
bnNmb3JtcyA9IFsKKyAgICAgICAgICAgIC8vIEZhY2UgLVg6ICh4LCB5LCAxKSAtPiAoLTEsIC0o
Mip5LTEpLCArKDIqeC0xKSkKKyAgICAgICAgICAgIFswLCAwLCAtMSwKKyAgICAgICAgICAgICAw
LCAtMiwgMSwKKyAgICAgICAgICAgICAyLCAwLCAtMV0sCisgICAgICAgICAgICAvLyBGYWNlICtY
OiAoeCwgeSwgMSkgLT4gKCsxLCAtKDIqeS0xKSwgLSgyKngtMSkpCisgICAgICAgICAgICBbMCwg
MCwgMSwKKyAgICAgICAgICAgICAwLCAtMiwgMSwKKyAgICAgICAgICAgIC0yLCAwLCAxXSwKKyAg
ICAgICAgICAgIC8vIEZhY2UgLVk6ICh4LCB5LCAxKSAtPiAoKygyKngtMSksIC0xLCAtKDIqeS0x
KSkKKyAgICAgICAgICAgIFsyLCAwLCAtMSwKKyAgICAgICAgICAgICAwLCAwLCAtMSwKKyAgICAg
ICAgICAgICAwLCAtMiwgMV0sCisgICAgICAgICAgICAvLyBGYWNlICtZOiAoeCwgeSwgMSkgLT4g
KCsoMip4LTEpLCArMSwgKygyKnktMSkpCisgICAgICAgICAgICBbMiwgMCwgLTEsCisgICAgICAg
ICAgICAgMCwgMCwgMSwKKyAgICAgICAgICAgICAwLCAyLCAtMV0sCisgICAgICAgICAgICAvLyBG
YWNlIC1aOiAoeCwgeSwgMSkgLT4gKC0oMip4LTEpLCAtKDIqeS0xKSwgLTEpCisgICAgICAgICAg
ICBbLTIsIDAsIDEsCisgICAgICAgICAgICAgMCwgLTIsIDEsCisgICAgICAgICAgICAgIDAsIDAs
IC0xXSwKKyAgICAgICAgICAgIC8vIEZhY2UgK1o6ICh4LCB5LCAxKSAtPiAoKygyKngtMSksIC0o
Mip5LTEpLCArMSkKKyAgICAgICAgICAgIFsyLCAwLCAtMSwKKyAgICAgICAgICAgICAwLCAtMiwg
MSwKKyAgICAgICAgICAgICAwLCAwLCAxXV07CisgICAgICAgIHRoaXMubV9jb29yZE1hdCA9IC8q
KiBAdHlwZSB7dGN1TWF0cml4Lk1hdDN9ICovICh0Y3VNYXRyaXgubWF0cml4RnJvbUFycmF5KDMs
IDMsIHNfY3ViZVRyYW5zZm9ybXNbZmFjZV0pKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBzY2FsZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gYmlhcworICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlQ3ViZVNoYWRlci5w
cm90b3R5cGUuc2V0VGV4U2NhbGVCaWFzID0gZnVuY3Rpb24oc2NhbGUsIGJpYXMpIHsKKyAgICAg
ICAgdGhpcy5tX3RleFNjYWxlID0gc2NhbGU7CisgICAgICAgIHRoaXMubV90ZXhCaWFzID0gYmlh
czsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIGN0eCBHTC1saWtlIGNvbnRleHQK
KyAgICAgKiBAcGFyYW0gcHJvZ3JhbQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0
dXJlQ3ViZVNoYWRlci5wcm90b3R5cGUuc2V0VW5pZm9ybXMgPSBmdW5jdGlvbihjdHgsIHByb2dy
YW0pIHsKKyAgICAgICAgY3R4LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgY3R4LnVu
aWZvcm0xaShjdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X3NhbXBsZXIwJyksIDAp
OworICAgICAgICBjdHgudW5pZm9ybU1hdHJpeDNmdihjdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICd1X2Nvb3JkTWF0JyksIGZhbHNlLCB0aGlzLm1fY29vcmRNYXQuZ2V0Q29sdW1uTWFq
b3JEYXRhKCkpOworICAgICAgICBjdHgudW5pZm9ybTRmdihjdHguZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICd1X3NjYWxlJyksIHRoaXMubV90ZXhTY2FsZSk7CisgICAgICAgIGN0eC51bmlm
b3JtNGZ2KGN0eC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VfYmlhcycpLCB0aGlzLm1f
dGV4Qmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0
ZXhBdHRyaWIuVmVydGV4QXR0cmliPn0gaW5wdXRzCisgICAgICogQHBhcmFtIHtBcnJheTxyclZl
cnRleFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fSBwYWNrZXRzCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IG51bVBhY2tldHMKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZUN1YmVTaGFk
ZXIucHJvdG90eXBlLnNoYWRlVmVydGljZXMgPSBmdW5jdGlvbihpbnB1dHMsIHBhY2tldHMsIG51
bVBhY2tldHMpIHsKKyAgICAvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhciB0ZXhD
b29yZE1hdCA9IHRjdU1hdHJpeC5tYXRyaXhGcm9tQXJyYXkoMywgMywgdGhpcy5tX3VuaWZvcm1z
WzBdLnZhbHVlKTsKKworICAgICAgICBmb3IgKHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHgg
PCBudW1QYWNrZXRzOyArK3BhY2tldE5keCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtyclZl
cnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9ICovIHZhciBwYWNrZXQgPSBwYWNrZXRzW3BhY2tldE5k
eF07CisgICAgICAgICAgICB2YXIgeCA9IHJyVmVydGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRyaWIo
aW5wdXRzWzFdLCBwYWNrZXQuaW5zdGFuY2VOZHgsIHBhY2tldC52ZXJ0ZXhOZHgsIHJyR2VuZXJp
Y1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVClbMF07CisgICAgICAgICAgICB2YXIgeSA9IHJy
VmVydGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzWzFdLCBwYWNrZXQuaW5zdGFuY2VO
ZHgsIHBhY2tldC52ZXJ0ZXhOZHgsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9B
VClbMV07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhX2Nv
b3JkID0gW3gsIHldOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgdl9jb29yZCA9IHRjdU1hdHJpeC5tdWx0aXBseU1hdFZlYyh0ZXhDb29yZE1hdCwgW2FfY29v
cmRbMF0sIGFfY29vcmRbMV0sIDEuMF0pOworCisgICAgICAgICAgICBwYWNrZXQucG9zaXRpb24g
PSByclZlcnRleEF0dHJpYi5yZWFkVmVydGV4QXR0cmliKGlucHV0c1swXSwgcGFja2V0Lmluc3Rh
bmNlTmR4LCBwYWNrZXQudmVydGV4TmR4LCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUu
RkxPQVQpOworICAgICAgICAgICAgcGFja2V0Lm91dHB1dHNbMF0gPSBbdl9jb29yZFswXSwgdl9j
b29yZFsxXSwgdl9jb29yZFsyXSwgMC4wXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50Pn0gcGFj
a2V0CisgICAgICogQHBhcmFtIHtyclNoYWRpbmdDb250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRl
eHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZUN1YmVTaGFk
ZXIucHJvdG90eXBlLnNoYWRlRnJhZ21lbnRzID0gZnVuY3Rpb24ocGFja2V0LCBjb250ZXh0KSB7
CisgICAgICAgIHZhciBudW1QYWNrZXRzID0gcGFja2V0Lmxlbmd0aDsKKyAgICAgICAgLyoqIEBj
b25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHRleFNjYWxlID0gdGhpcy5tX3VuaWZvcm1zWzJd
LnZhbHVlOworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGV4Qmlh
cyA9IHRoaXMubV91bmlmb3Jtc1szXS52YWx1ZTsKKworICAgICAgICB2YXIgdGV4Q29vcmRzID0g
W107CisgICAgICAgIHZhciBjb2xvcnMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBwYWNrZXRO
ZHggPSAwOyBwYWNrZXROZHggPCBudW1QYWNrZXRzOyArK3BhY2tldE5keCkgeworICAgICAgICAg
ICAgdmFyIHRleCA9IHRoaXMubV91bmlmb3Jtc1sxXS5zYW1wbGVyOworICAgICAgICAgICAgdmFy
IHJhdGlvWCA9IHRleC5tX3ZpZXcuZ2V0U2l6ZSgpIC8gY29udGV4dC5nZXRXaWR0aCgpOworICAg
ICAgICAgICAgdmFyIHJhdGlvWSA9IHRleC5tX3ZpZXcuZ2V0U2l6ZSgpIC8gY29udGV4dC5nZXRI
ZWlnaHQoKTsKKyAgICAgICAgICAgIHZhciBsb2QgPSBNYXRoLmZsb29yKE1hdGgubG9nMihNYXRo
Lm1heChyYXRpb1gsIHJhdGlvWSkpKTsKKworICAgICAgICAgICAgdmFyIGNvb3JkID0gcnJTaGFk
aW5nQ29udGV4dC5yZWFkVHJpYW5nbGVWYXJ5aW5nKHBhY2tldFtwYWNrZXROZHhdLCBjb250ZXh0
LCAwKTsKKyAgICAgICAgICAgIHRleENvb3JkcyA9IFtjb29yZFswXSwgY29vcmRbMV0sIGNvb3Jk
WzJdXTsKKworICAgICAgICAgICAgY29sb3JzID0gdGV4LnNhbXBsZSh0ZXhDb29yZHMsIGxvZCk7
CisKKyAgICAgICAgICAgIHZhciBjb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGNv
bG9ycywgdGV4U2NhbGUpLCB0ZXhCaWFzKTsKKyAgICAgICAgICAgIHZhciBpY29sb3IgPSBlczNm
RmJvVGVzdFV0aWwuY2FzdFZlY3RvclNhdHVyYXRlKGNvbG9yLCB0Y3VUZXh0dXJlLmRlVHlwZXMu
ZGVJbnQzMik7CisgICAgICAgICAgICB2YXIgdWljb2xvciA9IGVzM2ZGYm9UZXN0VXRpbC5jYXN0
VmVjdG9yU2F0dXJhdGUoY29sb3IsIHRjdVRleHR1cmUuZGVUeXBlcy5kZVVpbnQzMik7CisKKyAg
ICAgICAgICAgIGlmICh0aGlzLm1fb3V0cHV0VHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzQpCisgICAgICAgICAgICAgICAgcGFja2V0W3BhY2tldE5keF0udmFsdWUgPSBj
b2xvcjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubV9vdXRwdXRUeXBlID09IGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQpCisgICAgICAgICAgICAgICAgcGFja2V0W3BhY2tldE5k
eF0udmFsdWUgPSBpY29sb3I7CisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1fb3V0cHV0VHlw
ZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDNCkKKyAgICAgICAgICAgICAgICBw
YWNrZXRbcGFja2V0TmR4XS52YWx1ZSA9IHVpY29sb3I7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgLyoqCisgICAgICogZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyREFycmF5U2hhZGVyIGluaGVy
aXRzIGZyb20gc2dsclNoYWRlclByb2dyYW0KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
ZXh0ZW5kcyB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0KKyAgICAgKiBAcGFyYW0g
e2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHNhbXBsZXJUeXBlCisgICAgICogQHBhcmFtIHtnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlfSBvdXRwdXRUeXBlCisgICAgICovCisgICAgZXMzZkZib1Rlc3RV
dGlsLlRleHR1cmUyREFycmF5U2hhZGVyID0gZnVuY3Rpb24oc2FtcGxlclR5cGUsIG91dHB1dFR5
cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
RGVjbGFyYXRpb259ICovCisgICAgICAgIHZhciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbigpOworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhBdHRy
aWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYV9wb3NpdGlvbics
IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1
c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgn
YV9jb29yZCcsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAg
ICBkZWNsLnB1c2hWZXJ0ZXhUb0ZyYWdtZW50VmFyeWluZyhuZXcgc2dsclNoYWRlclByb2dyYW0u
VmVydGV4VG9GcmFnbWVudFZhcnlpbmcocnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZM
T0FUKSk7CisgICAgICAgIGRlY2wucHVzaEZyYWdtZW50T3V0cHV0KG5ldyBzZ2xyU2hhZGVyUHJv
Z3JhbS5GcmFnbWVudE91dHB1dChlczNmRmJvVGVzdFV0aWwubWFwRGF0YVR5cGVUb0dlbmVyaWNW
ZWNUeXBlKG91dHB1dFR5cGUpKSk7CisgICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJT
aGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3Vfc2FtcGxlcjAnLCBzYW1wbGVyVHlwZSkpOworICAgICAg
ICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X3NjYWxl
JywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KSk7CisgICAgICAgIGRlY2wucHVz
aFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3VfYmlhcycsIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCkpOworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5l
dyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X2xheWVyJywgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQpKTsKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4U291cmNlKG5ldyBzZ2xyU2hhZGVy
UHJvZ3JhbS5WZXJ0ZXhTb3VyY2UoCisgICAgICAgICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xu
JyArCisgICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAg
ICAgICAgICAgICAgICdpbiBoaWdocCB2ZWMyIGFfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICAg
ICAnb3V0IGhpZ2hwIHZlYzIgdl9jb29yZDtcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAg
JyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICAgICAnIHZfY29v
cmQgPSBhX2Nvb3JkO1xuJyArCisgICAgICAgICAgICAgICAgJ31cbicpKTsKKyAgICAgICAgZGVj
bC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZyYWdtZW50U291cmNl
KAorICAgICAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAg
ICd1bmlmb3JtIGhpZ2hwICcgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShzYW1wbGVy
VHlwZSkgKyAnIHVfc2FtcGxlcjA7XG4nICsKKyAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdo
cCB2ZWM0IHVfc2NhbGU7XG4nICsKKyAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWM0
IHVfYmlhcztcbicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hwIGludCB1X2xheWVy
O1xuJyArCisgICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzIgdl9jb29yZDtcbicgKworICAg
ICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGlnaHAgJyArIGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVOYW1lKG91dHB1dFR5cGUpICsgJyBvX2NvbG9yO1xuJyArCisgICAg
ICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICd7XG4n
ICsKKyAgICAgICAgICAgICAgICAnIG9fY29sb3IgPSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZU5hbWUob3V0cHV0VHlwZSkgKyAnKHZlYzQodGV4dHVyZSh1X3NhbXBsZXIwLCB2ZWMzKHZf
Y29vcmQsIHVfbGF5ZXIpKSkgKiB1X3NjYWxlICsgdV9iaWFzKTtcbicgKworICAgICAgICAgICAg
ICAgICd9XG4nKSk7CisgICAgICAgIHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0uY2Fs
bCh0aGlzLCBkZWNsKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
Lm1fdGV4U2NhbGUgPSBbMS4wLCAxLjAsIDEuMCwgMS4wXTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB0aGlzLm1fdGV4QmlhcyA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2xheWVyID0gMDsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB0aGlzLm1fb3V0cHV0VHlwZSA9
IG91dHB1dFR5cGU7CisgICAgfTsKKworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRBcnJh
eVNoYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW0ucHJvdG90eXBlKTsKKyAgICBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEQXJyYXlT
aGFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyREFy
cmF5U2hhZGVyOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxheWVyCisgICAg
ICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyREFycmF5U2hhZGVyLnByb3RvdHlwZS5z
ZXRMYXllciA9IGZ1bmN0aW9uKGxheWVyKSB7CisgICAgICAgIHRoaXMubV9sYXllciA9IGxheWVy
OworICAgIH07CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzY2FsZQor
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYmlhcworICAgICAqLworICAgIGVzM2ZGYm9U
ZXN0VXRpbC5UZXh0dXJlMkRBcnJheVNoYWRlci5wcm90b3R5cGUuc2V0VGV4U2NhbGVCaWFzID0g
ZnVuY3Rpb24oc2NhbGUsIGJpYXMpIHsKKyAgICAgICAgdGhpcy5tX3RleFNjYWxlID0gc2NhbGU7
CisgICAgICAgIHRoaXMubV90ZXhCaWFzID0gYmlhczsKKyAgICB9OworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7ZXMzZkZib1Rlc3RVdGlsLkNvbnRleHR9IGN0eCBHTC1saWtlIGNvbnRleHQKKyAg
ICAgKiBAcGFyYW0gcHJvZ3JhbQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJl
MkRBcnJheVNoYWRlci5wcm90b3R5cGUuc2V0VW5pZm9ybXMgPSBmdW5jdGlvbihjdHgsIHByb2dy
YW0pIHsKKyAgICAgICAgY3R4LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgY3R4LnVu
aWZvcm0xaShjdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X3NhbXBsZXIwJyksIDAp
OworICAgICAgICBjdHgudW5pZm9ybTFpKGN0eC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
J3VfbGF5ZXInKSwgdGhpcy5tX2xheWVyKTsKKyAgICAgICAgY3R4LnVuaWZvcm00ZnYoY3R4Lmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9zY2FsZScpLCB0aGlzLm1fdGV4U2NhbGUpOwor
ICAgICAgICBjdHgudW5pZm9ybTRmdihjdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1
X2JpYXMnKSwgdGhpcy5tX3RleEJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0FycmF5PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAqIEBw
YXJhbSB7QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGls
LlRleHR1cmUyREFycmF5U2hhZGVyLnByb3RvdHlwZS5zaGFkZVZlcnRpY2VzID0gZnVuY3Rpb24o
aW5wdXRzLCBwYWNrZXRzLCBudW1QYWNrZXRzKSB7CisgICAgICAgIGZvciAodmFyIHBhY2tldE5k
eCA9IDA7IHBhY2tldE5keCA8IG51bVBhY2tldHM7ICsrcGFja2V0TmR4KSB7CisgICAgICAgICAg
ICAvKiogQHR5cGUge3JyVmVydGV4UGFja2V0LlZlcnRleFBhY2tldH0gKi8gdmFyIHBhY2tldCA9
IHBhY2tldHNbcGFja2V0TmR4XTsKKworICAgICAgICAgICAgcGFja2V0LnBvc2l0aW9uID0gcnJW
ZXJ0ZXhBdHRyaWIucmVhZFZlcnRleEF0dHJpYihpbnB1dHNbMF0sIHBhY2tldC5pbnN0YW5jZU5k
eCwgcGFja2V0LnZlcnRleE5keCwgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FU
KTsKKyAgICAgICAgICAgIHBhY2tldC5vdXRwdXRzWzBdID0gcnJWZXJ0ZXhBdHRyaWIucmVhZFZl
cnRleEF0dHJpYihpbnB1dHNbMV0sIHBhY2tldC5pbnN0YW5jZU5keCwgcGFja2V0LnZlcnRleE5k
eCwgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKTsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyRnJhZ21lbnRPcGVyYXRpb25z
LkZyYWdtZW50Pn0gcGFja2V0CisgICAgICogQHBhcmFtIHtyclNoYWRpbmdDb250ZXh0LkZyYWdt
ZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZTJEQXJyYXlTaGFkZXIucHJvdG90eXBlLnNoYWRlRnJhZ21lbnRzID0gZnVuY3Rpb24o
cGFja2V0LCBjb250ZXh0KSB7CisgICAgICAgIHZhciBudW1QYWNrZXRzID0gcGFja2V0Lmxlbmd0
aDsKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHRleFNjYWxlID0g
dGhpcy5tX3VuaWZvcm1zWzFdLnZhbHVlOworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgdGV4QmlhcyA9IHRoaXMubV91bmlmb3Jtc1syXS52YWx1ZTsKKyAgICAgICAg
LyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgbGF5ZXIgPSB0aGlzLm1fdW5pZm9ybXNbM10udmFs
dWVbMF07CisKKyAgICAgICAgdmFyIHRleENvb3JkcyA9IFtdOworICAgICAgICB2YXIgY29sb3Jz
ID0gW107CisKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsgcGFja2V0TmR4IDwgbnVt
UGFja2V0czsgKytwYWNrZXROZHgpIHsKKyAgICAgICAgICAgIHZhciB0ZXggPSB0aGlzLm1fdW5p
Zm9ybXNbMF0uc2FtcGxlcjsKKyAgICAgICAgICAgIHZhciByYXRpb1ggPSB0ZXgubV92aWV3Lmdl
dFdpZHRoKCkgLyBjb250ZXh0LmdldFdpZHRoKCk7CisgICAgICAgICAgICB2YXIgcmF0aW9ZID0g
dGV4Lm1fdmlldy5nZXRIZWlnaHQoKSAvIGNvbnRleHQuZ2V0SGVpZ2h0KCk7CisgICAgICAgICAg
ICB2YXIgbG9kID0gTWF0aC5mbG9vcihNYXRoLmxvZzIoTWF0aC5tYXgocmF0aW9YLCByYXRpb1kp
KSk7CisKKyAgICAgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovIHZhciBjb29y
ZCA9IHJyU2hhZGluZ0NvbnRleHQucmVhZFRyaWFuZ2xlVmFyeWluZyhwYWNrZXRbcGFja2V0TmR4
XSwgY29udGV4dCwgMCk7CisgICAgICAgICAgICB0ZXhDb29yZHMgPSBbY29vcmRbMF0sIGNvb3Jk
WzFdLCBsYXllcl07CisKKyAgICAgICAgICAgIGNvbG9ycyA9IHRleC5zYW1wbGUodGV4Q29vcmRz
LCBsb2QpOworCisgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
Y29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShjb2xvcnMsIHRleFNjYWxlKSwgdGV4
Qmlhcyk7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaWNv
bG9yID0gZXMzZkZib1Rlc3RVdGlsLmNhc3RWZWN0b3JTYXR1cmF0ZShjb2xvciwgdGN1VGV4dHVy
ZS5kZVR5cGVzLmRlSW50MzIpOworICAgICAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIHVpY29sb3IgPSBlczNmRmJvVGVzdFV0aWwuY2FzdFZlY3RvclNhdHVyYXRlKGNv
bG9yLCB0Y3VUZXh0dXJlLmRlVHlwZXMuZGVVaW50MzIpOworCisgICAgICAgICAgICBpZiAodGhp
cy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KQorICAg
ICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gY29sb3I7CisgICAgICAgICAg
ICBlbHNlIGlmICh0aGlzLm1fb3V0cHV0VHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gaWNvbG9y
OworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5UX1ZFQzQpCisgICAgICAgICAgICAgICAgcGFja2V0W3BhY2tldE5keF0u
dmFsdWUgPSB1aWNvbG9yOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVz
M2ZGYm9UZXN0VXRpbC5UZXh0dXJlM0RTaGFkZXIgaW5oZXJpdHMgZnJvbSBzZ2xyU2hhZGVyUHJv
Z3JhbQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtzZ2xyU2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtfQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZX0gc2FtcGxlclR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IG91
dHB1dFR5cGUKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTNEU2hhZGVyID0g
ZnVuY3Rpb24oc2FtcGxlclR5cGUsIG91dHB1dFR5cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtz
Z2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259ICovCisgICAgICAgIHZh
ciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbigp
OworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFt
LlZlcnRleEF0dHJpYnV0ZSgnYV9wb3NpdGlvbicsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVj
VHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJT
aGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYV9jb29yZCcsIHJyR2VuZXJpY1ZlY3Rvci5H
ZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhUb0ZyYWdtZW50
VmFyeWluZyhuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFnbWVudFZhcnlpbmcocnJH
ZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisgICAgICAgIGRlY2wucHVzaEZy
YWdtZW50T3V0cHV0KG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVudE91dHB1dChlczNmRmJv
VGVzdFV0aWwubWFwRGF0YVR5cGVUb0dlbmVyaWNWZWNUeXBlKG91dHB1dFR5cGUpKSk7CisgICAg
ICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3Vfc2Ft
cGxlcjAnLCBzYW1wbGVyVHlwZSkpOworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xy
U2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X3NjYWxlJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUM0KSk7CisgICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9n
cmFtLlVuaWZvcm0oJ3VfYmlhcycsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCkp
OworICAgICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3Jt
KCd1X2RlcHRoJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNs
LnB1c2hWZXJ0ZXhTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFNvdXJjZSgKKyAg
ICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZl
YzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzIgYV9jb29yZDtc
bicgKworICAgICAgICAgICAgJ291dCBoaWdocCB2ZWMyIHZfY29vcmQ7XG4nICsKKyAgICAgICAg
ICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAg
ICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnIHZfY29v
cmQgPSBhX2Nvb3JkO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOworICAgICAgICBkZWNsLnB1
c2hGcmFnbWVudFNvdXJjZShuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UoCisg
ICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhp
Z2hwICcgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShzYW1wbGVyVHlwZSkgKyAnIHVf
c2FtcGxlcjA7XG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9zY2FsZTtc
bicgKworICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X2JpYXM7XG4nICsKKyAgICAg
ICAgICAgICd1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfZGVwdGg7XG4nICsKKyAgICAgICAgICAgICdp
biBoaWdocCB2ZWMyIHZfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgaGlnaHAgJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKG91dHB1dFR5
cGUpICsgJyBvX2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyAr
CisgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAnIG9fY29sb3IgPSAnICsgZ2x1U2hh
ZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3V0cHV0VHlwZSkgKyAnKHZlYzQodGV4dHVyZSh1X3Nh
bXBsZXIwLCB2ZWMzKHZfY29vcmQsIHVfZGVwdGgpKSkgKiB1X3NjYWxlICsgdV9iaWFzKTtcbicg
KworICAgICAgICAgICAgJ31cbicpKTsKKyAgICAgICAgc2dsclNoYWRlclByb2dyYW0uU2hhZGVy
UHJvZ3JhbS5jYWxsKHRoaXMsIGRlY2wpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHRoaXMubV90ZXhTY2FsZSA9IFsxLjAsIDEuMCwgMS4wLCAxLjBdOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV90ZXhCaWFzID0gWzAuMCwgMC4wLCAw
LjAsIDAuMF07CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fZGVwdGggPSAw
LjA7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdGhpcy5t
X291dHB1dFR5cGUgPSBvdXRwdXRUeXBlOworICAgIH07CisKKyAgICBlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZTNEU2hhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc2dsclNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUpOworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJl
M0RTaGFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUz
RFNoYWRlcjsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAq
LworICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlM0RTaGFkZXIucHJvdG90eXBlLnNldERlcHRo
ID0gZnVuY3Rpb24oZGVwdGgpIHsKKyAgICAgICAgdGhpcy5tX2RlcHRoID0gZGVwdGg7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gc2NhbGUKKyAgICAg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpYXMKKyAgICAgKi8KKyAgICBlczNmRmJvVGVzdFV0
aWwuVGV4dHVyZTNEU2hhZGVyLnByb3RvdHlwZS5zZXRUZXhTY2FsZUJpYXMgPSBmdW5jdGlvbihz
Y2FsZSwgYmlhcykgeworICAgICAgICB0aGlzLm1fdGV4U2NhbGUgPSBzY2FsZTsKKyAgICAgICAg
dGhpcy5tX3RleEJpYXMgPSBiaWFzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
Y29udGV4dCBHTC1saWtlIGNvbnRleHQKKyAgICAgKiBAcGFyYW0gcHJvZ3JhbQorICAgICAqLwor
ICAgIGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlM0RTaGFkZXIucHJvdG90eXBlLnNldFVuaWZvcm1z
ID0gZnVuY3Rpb24oY29udGV4dCwgcHJvZ3JhbSkgeworICAgICAgICBjb250ZXh0LnVzZVByb2dy
YW0ocHJvZ3JhbSk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTFpKGNvbnRleHQuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICd1X3NhbXBsZXIwJyksIDApOworICAgICAgICBjb250ZXh0LnVu
aWZvcm0xZihjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9kZXB0aCcpLCB0
aGlzLm1fZGVwdGgpOworICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYoY29udGV4dC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3Vfc2NhbGUnKSwgdGhpcy5tX3RleFNjYWxlKTsKKyAgICAg
ICAgY29udGV4dC51bmlmb3JtNGZ2KGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICd1X2JpYXMnKSwgdGhpcy5tX3RleEJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0FycmF5PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAq
IEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkZib1Rlc3RV
dGlsLlRleHR1cmUzRFNoYWRlci5wcm90b3R5cGUuc2hhZGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKGlu
cHV0cywgcGFja2V0cywgbnVtUGFja2V0cykgeworICAgICAgICBmb3IgKHZhciBwYWNrZXROZHgg
PSAwOyBwYWNrZXROZHggPCBudW1QYWNrZXRzOyArK3BhY2tldE5keCkgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHtyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9ICovIHZhciBwYWNrZXQgPSBw
YWNrZXRzW3BhY2tldE5keF07CisKKyAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHJyVmVy
dGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzWzBdLCBwYWNrZXQuaW5zdGFuY2VOZHgs
IHBhY2tldC52ZXJ0ZXhOZHgsIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCk7
CisgICAgICAgICAgICBwYWNrZXQub3V0cHV0c1swXSA9IHJyVmVydGV4QXR0cmliLnJlYWRWZXJ0
ZXhBdHRyaWIoaW5wdXRzWzFdLCBwYWNrZXQuaW5zdGFuY2VOZHgsIHBhY2tldC52ZXJ0ZXhOZHgs
IHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxyckZyYWdtZW50T3BlcmF0aW9ucy5G
cmFnbWVudD59IHBhY2tldAorICAgICAqIEBwYXJhbSB7cnJTaGFkaW5nQ29udGV4dC5GcmFnbWVu
dFNoYWRpbmdDb250ZXh0fSBjb250ZXh0CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLlRl
eHR1cmUzRFNoYWRlci5wcm90b3R5cGUuc2hhZGVGcmFnbWVudHMgPSBmdW5jdGlvbihwYWNrZXQs
IGNvbnRleHQpIHsKKyAgICAgICAgdmFyIG51bVBhY2tldHMgPSBwYWNrZXQubGVuZ3RoOworICAg
ICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGV4U2NhbGUgPSB0aGlzLm1f
dW5pZm9ybXNbMV0udmFsdWU7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICov
IHZhciB0ZXhCaWFzID0gdGhpcy5tX3VuaWZvcm1zWzJdLnZhbHVlOworICAgICAgICAvKiogQGNv
bnN0IHtudW1iZXJ9ICovIHZhciBkZXB0aCA9IHRoaXMubV91bmlmb3Jtc1szXS52YWx1ZVswXTsK
KworICAgICAgICB2YXIgdGV4Q29vcmRzID0gW107CisgICAgICAgIHZhciBjb2xvcnMgPSBbXTsK
KworICAgICAgICBmb3IgKHZhciBwYWNrZXROZHggPSAwOyBwYWNrZXROZHggPCBudW1QYWNrZXRz
OyArK3BhY2tldE5keCkgeworICAgICAgICAgICAgdmFyIHRleCA9IHRoaXMubV91bmlmb3Jtc1sw
XS5zYW1wbGVyOworICAgICAgICAgICAgdmFyIHJhdGlvWCA9IHRleC5tX3ZpZXcuZ2V0V2lkdGgo
KSAvIGNvbnRleHQuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgIHZhciByYXRpb1kgPSB0ZXgubV92
aWV3LmdldEhlaWdodCgpIC8gY29udGV4dC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIC8vIFRP
RE86IHdoYXQgdG8gZG8gd2l0aCBaIGNvb3JkaW5hdGU/CisgICAgICAgICAgICB2YXIgbG9kID0g
TWF0aC5mbG9vcihNYXRoLmxvZzIoTWF0aC5tYXgocmF0aW9YLCByYXRpb1kpKSk7CisKKyAgICAg
ICAgICAgIHZhciBjb29yZCA9IHJyU2hhZGluZ0NvbnRleHQucmVhZFRyaWFuZ2xlVmFyeWluZyhw
YWNrZXRbcGFja2V0TmR4XSwgY29udGV4dCwgMCk7CisgICAgICAgICAgICB0ZXhDb29yZHMgPSBb
Y29vcmRbMF0sIGNvb3JkWzFdLCBkZXB0aF07CisKKyAgICAgICAgICAgIGNvbG9ycyA9IHRleC5z
YW1wbGUodGV4Q29vcmRzLCBsb2QpOworCisgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShjb2xvcnMs
IHRleFNjYWxlKSwgdGV4Qmlhcyk7CisgICAgICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgaWNvbG9yID0gZXMzZkZib1Rlc3RVdGlsLmNhc3RWZWN0b3JTYXR1cmF0ZShj
b2xvciwgdGN1VGV4dHVyZS5kZVR5cGVzLmRlSW50MzIpOworICAgICAgICAgICAgLyoqIEBjb25z
dCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHVpY29sb3IgPSBlczNmRmJvVGVzdFV0aWwuY2FzdFZl
Y3RvclNhdHVyYXRlKGNvbG9yLCB0Y3VUZXh0dXJlLmRlVHlwZXMuZGVVaW50MzIpOworCisgICAg
ICAgICAgICBpZiAodGhpcy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gY29s
b3I7CisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1fb3V0cHV0VHlwZSA9PSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhd
LnZhbHVlID0gaWNvbG9yOworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tX291dHB1dFR5cGUg
PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQpCisgICAgICAgICAgICAgICAgcGFj
a2V0W3BhY2tldE5keF0udmFsdWUgPSB1aWNvbG9yOworICAgICAgICB9CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIGVzM2ZGYm9UZXN0VXRpbC5EZXB0aEdyYWRpZW50U2hhZGVyIGluaGVyaXRz
IGZyb20gc2dsclNoYWRlclByb2dyYW0KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0KKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9IG91dHB1dFR5cGUKKyAgICAgKi8KKyAgICBlczNmRmJvVGVz
dFV0aWwuRGVwdGhHcmFkaWVudFNoYWRlciA9IGZ1bmN0aW9uKG91dHB1dFR5cGUpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFyYXRpb259
ICovCisgICAgICAgIHZhciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dy
YW1EZWNsYXJhdGlvbigpOworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNn
bHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYV9wb3NpdGlvbicsIHJyR2VuZXJpY1Zl
Y3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hWZXJ0ZXhBdHRy
aWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnYV9jb29yZCcsIHJy
R2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hW
ZXJ0ZXhUb0ZyYWdtZW50VmFyeWluZyhuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFn
bWVudFZhcnlpbmcocnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisgICAg
ICAgIGRlY2wucHVzaEZyYWdtZW50T3V0cHV0KG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVu
dE91dHB1dChlczNmRmJvVGVzdFV0aWwubWFwRGF0YVR5cGVUb0dlbmVyaWNWZWNUeXBlKG91dHB1
dFR5cGUpKSk7CisgICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFt
LlVuaWZvcm0oJ3VfbWF4R3JhZGllbnQnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSk7
CisgICAgICAgIGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0o
J3VfbWluR3JhZGllbnQnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSk7CisgICAgICAg
IGRlY2wucHVzaFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3VfY29sb3In
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpKTsKKyAgICAgICAgZGVjbC5wdXNo
VmVydGV4U291cmNlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UoCisgICAgICAg
ICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2luIGhpZ2hw
IHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICdpbiBoaWdocCB2ZWM0IGFf
Y29vcmQ7XG4nICsKKyAgICAgICAgICAgICAgICAnb3V0IGhpZ2hwIHZlYzQgdl9jb29yZDtcbicg
KworICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAg
ICAne1xuJyArCisgICAgICAgICAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4n
ICsKKyAgICAgICAgICAgICAgICAnIHZfY29vcmQgPSBhX2Nvb3JkO1xuJyArCisgICAgICAgICAg
ICAgICAgJ31cbicpKTsKKyAgICAgICAgZGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJT
aGFkZXJQcm9ncmFtLkZyYWdtZW50U291cmNlKAorICAgICAgICAgICAgICAgICAgICAnI3ZlcnNp
b24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgdl9jb29y
ZDtcbicgKworICAgICAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdocCBmbG9hdCB1X21pbkdy
YWRpZW50O1xuJyArCisgICAgICAgICAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hwIGZsb2F0IHVf
bWF4R3JhZGllbnQ7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVj
NCB1X2NvbG9yO1xuJyArCisgICAgICAgICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgaGlnaHAgJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKG91dHB1dFR5cGUp
ICsgJyBvX2NvbG9yO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgICAgICAgICAn
IGhpZ2hwIGZsb2F0IHggPSB2X2Nvb3JkLng7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyBo
aWdocCBmbG9hdCB5ID0gdl9jb29yZC55O1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgaGln
aHAgZmxvYXQgZjAgPSAoeCArIHkpICogMC41O1xuJyArCisgICAgICAgICAgICAgICAgICAgICcg
Z2xfRnJhZ0RlcHRoID0gdV9taW5HcmFkaWVudCArICh1X21heEdyYWRpZW50LXVfbWluR3JhZGll
bnQpKmYwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgb19jb2xvciA9ICcgKyBnbHVTaGFk
ZXJVdGlsLmdldERhdGFUeXBlTmFtZShvdXRwdXRUeXBlKSArICcodV9jb2xvcik7XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJ31cbicpKTsKKyAgICAgICAgdGhpcy5tX291dHB1dFR5cGUgPSBv
dXRwdXRUeXBlOworICAgICAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtLmNhbGwo
dGhpcywgZGVjbCk7CisgICAgICAgIC8qKiBAY29uc3Qge3NnbHJTaGFkZXJQcm9ncmFtLlVuaWZv
cm19ICovIHRoaXMudV9taW5HcmFkaWVudCA9IHRoaXMuZ2V0VW5pZm9ybUJ5TmFtZSgndV9taW5H
cmFkaWVudCcpOworICAgICAgICAvKiogQGNvbnN0IHtzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3Jt
fSAqLyB0aGlzLnVfbWF4R3JhZGllbnQgPSB0aGlzLmdldFVuaWZvcm1CeU5hbWUoJ3VfbWF4R3Jh
ZGllbnQnKTsKKyAgICAgICAgLyoqIEBjb25zdCB7c2dsclNoYWRlclByb2dyYW0uVW5pZm9ybX0g
Ki8gdGhpcy51X2NvbG9yID0gdGhpcy5nZXRVbmlmb3JtQnlOYW1lKCd1X2NvbG9yJyk7CisgICAg
fTsKKworICAgIGVzM2ZGYm9UZXN0VXRpbC5EZXB0aEdyYWRpZW50U2hhZGVyLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUp
OworICAgIGVzM2ZGYm9UZXN0VXRpbC5EZXB0aEdyYWRpZW50U2hhZGVyLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGVzM2ZGYm9UZXN0VXRpbC5EZXB0aEdyYWRpZW50U2hhZGVyOworCisgICAgLyoq
CisgICAgICogQHBhcmFtIGN0eCBHTC1saWtlIGNvbnRleHQKKyAgICAgKiBAcGFyYW0gcHJvZ3Jh
bQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBncmFkaWVudE1pbgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBncmFkaWVudE1heAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29sb3IKKyAg
ICAgKi8KKyAgICBlczNmRmJvVGVzdFV0aWwuRGVwdGhHcmFkaWVudFNoYWRlci5wcm90b3R5cGUu
c2V0VW5pZm9ybXMgPSBmdW5jdGlvbihjdHgsIHByb2dyYW0sIGdyYWRpZW50TWluLCBncmFkaWVu
dE1heCwgY29sb3IpIHsKKyAgICAgICAgY3R4LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAg
IGN0eC51bmlmb3JtMWZ2KGN0eC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VfbWluR3Jh
ZGllbnQnKSwgW2dyYWRpZW50TWluXSk7CisgICAgICAgIGN0eC51bmlmb3JtMWZ2KGN0eC5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VfbWF4R3JhZGllbnQnKSwgW2dyYWRpZW50TWF4XSk7
CisgICAgICAgIGN0eC51bmlmb3JtNGZ2KGN0eC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
J3VfY29sb3InKSwgY29sb3IpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYj59IGlucHV0cworICAgICAqIEBwYXJhbSB7
QXJyYXk8cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0Pn0gcGFja2V0cworICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBudW1QYWNrZXRzCisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLkRlcHRo
R3JhZGllbnRTaGFkZXIucHJvdG90eXBlLnNoYWRlVmVydGljZXMgPSBmdW5jdGlvbihpbnB1dHMs
IHBhY2tldHMsIG51bVBhY2tldHMpIHsKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsg
cGFja2V0TmR4IDwgbnVtUGFja2V0czsgKytwYWNrZXROZHgpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7cnJWZXJ0ZXhQYWNrZXQuVmVydGV4UGFja2V0fSAqLyB2YXIgcGFja2V0ID0gcGFja2V0
c1twYWNrZXROZHhdOworCisgICAgICAgICAgICBwYWNrZXQucG9zaXRpb24gPSByclZlcnRleEF0
dHJpYi5yZWFkVmVydGV4QXR0cmliKGlucHV0c1swXSwgcGFja2V0Lmluc3RhbmNlTmR4LCBwYWNr
ZXQudmVydGV4TmR4LCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpOworICAg
ICAgICAgICAgcGFja2V0Lm91dHB1dHNbMF0gPSByclZlcnRleEF0dHJpYi5yZWFkVmVydGV4QXR0
cmliKGlucHV0c1sxXSwgcGFja2V0Lmluc3RhbmNlTmR4LCBwYWNrZXQudmVydGV4TmR4LCByckdl
bmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJGcmFnbWVudE9wZXJhdGlvbnMuRnJhZ21l
bnQ+fSBwYWNrZXQKKyAgICAgKiBAcGFyYW0ge3JyU2hhZGluZ0NvbnRleHQuRnJhZ21lbnRTaGFk
aW5nQ29udGV4dH0gY29udGV4dAorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5EZXB0aEdy
YWRpZW50U2hhZGVyLnByb3RvdHlwZS5zaGFkZUZyYWdtZW50cyA9IGZ1bmN0aW9uKHBhY2tldCwg
Y29udGV4dCkgeworICAgICAgICB2YXIgbnVtUGFja2V0cyA9IHBhY2tldC5sZW5ndGg7CisgICAg
ICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIGdyYWRpZW50TWluID0gdGhpcy51X21pbkdy
YWRpZW50LnZhbHVlWzBdOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBncmFk
aWVudE1heCA9IHRoaXMudV9tYXhHcmFkaWVudC52YWx1ZVswXTsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29sb3IgPSB0aGlzLnVfY29sb3IudmFsdWU7CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGljb2xvciA9IGVzM2ZGYm9UZXN0
VXRpbC5jYXN0VmVjdG9yU2F0dXJhdGUoY29sb3IsIHRjdVRleHR1cmUuZGVUeXBlcy5kZUludDMy
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdWljb2xvciA9IGVz
M2ZGYm9UZXN0VXRpbC5jYXN0VmVjdG9yU2F0dXJhdGUoY29sb3IsIHRjdVRleHR1cmUuZGVUeXBl
cy5kZVVpbnQzMik7CisKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsgcGFja2V0TmR4
IDwgbnVtUGFja2V0czsgKytwYWNrZXROZHgpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGNvb3JkID0gcnJTaGFkaW5nQ29udGV4dC5yZWFkVHJpYW5nbGVW
YXJ5aW5nKHBhY2tldFtwYWNrZXROZHhdLCBjb250ZXh0LCAwKTsKKyAgICAgICAgICAgIC8qKiBA
Y29uc3Qge251bWJlcn0gKi8gdmFyIHggPSBjb29yZFswXTsKKyAgICAgICAgICAgIC8qKiBAY29u
c3Qge251bWJlcn0gKi8gdmFyIHkgPSBjb29yZFsxXTsKKyAgICAgICAgICAgIC8qKiBAY29uc3Qg
e251bWJlcn0gKi8gdmFyIGYwID0gKHggKyB5KSAqIDAuNTsKKworICAgICAgICAgICAgcGFja2V0
W3BhY2tldE5keF0uc2FtcGxlRGVwdGhzWzBdID0gZ3JhZGllbnRNaW4gKyAoZ3JhZGllbnRNYXgg
LSBncmFkaWVudE1pbikgKiBmMDsKKworICAgICAgICAgICAgaWYgKHRoaXMubV9vdXRwdXRUeXBl
ID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCkKKyAgICAgICAgICAgICAgICBw
YWNrZXRbcGFja2V0TmR4XS52YWx1ZSA9IGNvbG9yOworICAgICAgICAgICAgZWxzZSBpZiAodGhp
cy5tX291dHB1dFR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNCkKKyAgICAg
ICAgICAgICAgICBwYWNrZXRbcGFja2V0TmR4XS52YWx1ZSA9IGljb2xvcjsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHRoaXMubV9vdXRwdXRUeXBlID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VF9WRUM0KQorICAgICAgICAgICAgICAgIHBhY2tldFtwYWNrZXROZHhdLnZhbHVlID0gdWljb2xv
cjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFt
ZSA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAg
ICAgICAgY2FzZSBnbC5SR0I1NjU6IHJldHVybiAncmdiNTY1JzsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuUkdCNV9BMTogcmV0dXJuICdyZ2I1X2ExJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTQ6
IHJldHVybiAncmdiYTQnOworICAgICAgICAgICAgY2FzZSBnbC5ERVBUSF9DT01QT05FTlQxNjog
cmV0dXJuICdkZXB0aF9jb21wb25lbnQxNic7CisgICAgICAgICAgICBjYXNlIGdsLlNURU5DSUxf
SU5ERVg4OiByZXR1cm4gJ3N0ZW5jaWxfaW5kZXg4JzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdC
QTMyRjogcmV0dXJuICdyZ2JhMzJmJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTMySTogcmV0
dXJuICdyZ2JhMzJpJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQTMyVUk6IHJldHVybiAncmdi
YTMydWknOworICAgICAgICAgICAgY2FzZSBnbC5SR0JBMTZGOiByZXR1cm4gJ3JnYmExNmYnOwor
ICAgICAgICAgICAgY2FzZSBnbC5SR0JBMTZJOiByZXR1cm4gJ3JnYmExNmknOworICAgICAgICAg
ICAgY2FzZSBnbC5SR0JBMTZVSTogcmV0dXJuICdyZ2JhMTZ1aSc7CisgICAgICAgICAgICBjYXNl
IGdsLlJHQkE4OiByZXR1cm4gJ3JnYmE4JzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdCQThJOiBy
ZXR1cm4gJ3JnYmE4aSc7CisgICAgICAgICAgICBjYXNlIGdsLlJHQkE4VUk6IHJldHVybiAncmdi
YTh1aSc7CisgICAgICAgICAgICBjYXNlIGdsLlNSR0I4X0FMUEhBODogcmV0dXJuICdzcmdiOF9h
bHBoYTgnOworICAgICAgICAgICAgY2FzZSBnbC5SR0IxMF9BMjogcmV0dXJuICdyZ2IxMF9hMic7
CisgICAgICAgICAgICBjYXNlIGdsLlJHQjEwX0EyVUk6IHJldHVybiAncmdiMTBfYTJ1aSc7Cisg
ICAgICAgICAgICBjYXNlIGdsLlJHQkE4X1NOT1JNOiByZXR1cm4gJ3JnYmE4X3Nub3JtJzsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuUkdCODogcmV0dXJuICdyZ2I4JzsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuUjExRl9HMTFGX0IxMEY6IHJldHVybiAncjExZl9nMTFmX2IxMGYnOworICAgICAgICAgICAg
Y2FzZSBnbC5SR0IzMkY6IHJldHVybiAncmdiMzJmJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkdC
MzJJOiByZXR1cm4gJ3JnYjMyaSc7CisgICAgICAgICAgICBjYXNlIGdsLlJHQjMyVUk6IHJldHVy
biAncmdiMzJ1aSc7CisgICAgICAgICAgICBjYXNlIGdsLlJHQjE2RjogcmV0dXJuICdyZ2IxNmYn
OworICAgICAgICAgICAgY2FzZSBnbC5SR0IxNkk6IHJldHVybiAncmdiMTZpJzsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuUkdCMTZVSTogcmV0dXJuICdyZ2IxNnVpJzsKKyAgICAgICAgICAgIGNhc2Ug
Z2wuUkdCOF9TTk9STTogcmV0dXJuICdyZ2I4X3Nub3JtJzsKKyAgICAgICAgICAgIGNhc2UgZ2wu
UkdCOEk6IHJldHVybiAncmdiOGknOworICAgICAgICAgICAgY2FzZSBnbC5SR0I4VUk6IHJldHVy
biAncmdiOHVpJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuU1JHQjg6IHJldHVybiAnc3JnYjgnOwor
ICAgICAgICAgICAgY2FzZSBnbC5SR0I5X0U1OiByZXR1cm4gJ3JnYjlfZTUnOworICAgICAgICAg
ICAgY2FzZSBnbC5SRzMyRjogcmV0dXJuICdyZzMyZic7CisgICAgICAgICAgICBjYXNlIGdsLlJH
MzJJOiByZXR1cm4gJ3JnMzJpJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkczMlVJOiByZXR1cm4g
J3JnMzJ1aSc7CisgICAgICAgICAgICBjYXNlIGdsLlJHMTZGOiByZXR1cm4gJ3JnMTZmJzsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuUkcxNkk6IHJldHVybiAncmcxNmknOworICAgICAgICAgICAgY2Fz
ZSBnbC5SRzE2VUk6IHJldHVybiAncmcxNnVpJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUkc4OiBy
ZXR1cm4gJ3JnOCc7CisgICAgICAgICAgICBjYXNlIGdsLlJHOEk6IHJldHVybiAncmc4aSc7Cisg
ICAgICAgICAgICBjYXNlIGdsLlJHOFVJOiByZXR1cm4gJ3JnOHVpJzsKKyAgICAgICAgICAgIGNh
c2UgZ2wuUkc4X1NOT1JNOiByZXR1cm4gJ3JnOF9zbm9ybSc7CisgICAgICAgICAgICBjYXNlIGds
LlIzMkY6IHJldHVybiAncjMyZic7CisgICAgICAgICAgICBjYXNlIGdsLlIzMkk6IHJldHVybiAn
cjMyaSc7CisgICAgICAgICAgICBjYXNlIGdsLlIzMlVJOiByZXR1cm4gJ3IzMnVpJzsKKyAgICAg
ICAgICAgIGNhc2UgZ2wuUjE2RjogcmV0dXJuICdyMTZmJzsKKyAgICAgICAgICAgIGNhc2UgZ2wu
UjE2STogcmV0dXJuICdyMTZpJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuUjE2VUk6IHJldHVybiAn
cjE2dWknOworICAgICAgICAgICAgY2FzZSBnbC5SODogcmV0dXJuICdyOCc7CisgICAgICAgICAg
ICBjYXNlIGdsLlI4STogcmV0dXJuICdyOGknOworICAgICAgICAgICAgY2FzZSBnbC5SOFVJOiBy
ZXR1cm4gJ3I4dWknOworICAgICAgICAgICAgY2FzZSBnbC5SOF9TTk9STTogcmV0dXJuICdyOF9z
bm9ybSc7CisgICAgICAgICAgICBjYXNlIGdsLkRFUFRIX0NPTVBPTkVOVDMyRjogcmV0dXJuICdk
ZXB0aF9jb21wb25lbnQzMmYnOworICAgICAgICAgICAgY2FzZSBnbC5ERVBUSF9DT01QT05FTlQy
NDogcmV0dXJuICdkZXB0aF9jb21wb25lbnQyNCc7CisgICAgICAgICAgICBjYXNlIGdsLkRFUFRI
MzJGX1NURU5DSUw4OiByZXR1cm4gJ2RlcHRoMzJmX3N0ZW5jaWw4JzsKKyAgICAgICAgICAgIGNh
c2UgZ2wuREVQVEgyNF9TVEVOQ0lMODogcmV0dXJuICdkZXB0aDI0X3N0ZW5jaWw4JzsKKworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25v
d24gZm9ybWF0IGluIGdldEZyb21hdE5hbWUoKScpOworICAgICAgICB9CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAg
ICAgKiBAcmV0dXJuIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfQorICAgICAqLworICAgIGVzM2ZG
Ym9UZXN0VXRpbC5nZXRGcmFnbWVudE91dHB1dFR5cGUgPSBmdW5jdGlvbihmb3JtYXQpIHsKKyAg
ICAgICAgc3dpdGNoICh0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVsQ2xhc3MoZm9ybWF0LnR5
cGUpKSB7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5G
TE9BVElOR19QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5l
bENsYXNzLlNJR05FRF9GSVhFRF9QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5U
ZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAgICAgICAg
IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ7CisKKyAgICAgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0Owor
CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURf
SU5URUdFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlRfVkVDNDsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1Vua25vd24gZm9ybWF0Jyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICAgICAq
IEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0KKyAgICAgKi8KKyAgICBlczNmRmJv
VGVzdFV0aWwuZ2V0RnJhbWVidWZmZXJSZWFkRm9ybWF0ID0gZnVuY3Rpb24oZm9ybWF0KSB7Cisg
ICAgICAgIHN3aXRjaCAodGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50
eXBlKSkgeworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3Mu
RkxPQVRJTkdfUE9JTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5GTE9BVCk7CisKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hh
bm5lbENsYXNzLlNJR05FRF9GSVhFRF9QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7CisKKyAgICAg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVH
RVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQo
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJ
R05FRF9JTlQzMik7CisKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5l
bENsYXNzLlNJR05FRF9JTlRFR0VSOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1
cmUuQ2hhbm5lbFR5cGUuU0lHTkVEX0lOVDMyKTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZm9ybWF0IGluIGVzM2ZGYm9U
ZXN0VXRpbC5nZXRGcmFtZWJ1ZmZlclJlYWRGb3JtYXQoKScpOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZkZib1Rlc3RVdGlsLkNvbnRleHR9IGN0eCBH
TC1saWtlIGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0g
Zm9ybWF0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZQorICAgICAqLworICAg
IGVzM2ZGYm9UZXN0VXRpbC5jbGVhckNvbG9yQnVmZmVyID0gZnVuY3Rpb24oY3R4LCBmb3JtYXQs
IHZhbHVlKSB7CisgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUNo
YW5uZWxDbGFzc30gKi8KKyAgICAgICAgdmFyIGZtdENsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0
dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50eXBlKTsKKworICAgICAgICBzd2l0Y2ggKGZtdENsYXNz
KSB7CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5GTE9B
VElOR19QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENs
YXNzLlNJR05FRF9GSVhFRF9QT0lOVDoKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0
dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAgICAgICAgIGN0
eC5jbGVhckJ1ZmZlcmZ2KGdsLkNPTE9SLCAwLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVO
U0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgY3R4LmNsZWFyQnVmZmVydWl2KGdsLkNP
TE9SLCAwLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9JTlRFR0VSOgorICAgICAg
ICAgICAgICAgIGN0eC5jbGVhckJ1ZmZlcml2KGdsLkNPTE9SLCAwLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYW5uZWwgY2xhc3M6ICcgKyBmbXRDbGFzcyk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXR9IGZvcm1hdAorICAgICAqIEByZXR1cm4ge3RjdVJHQkEuUkdCQX0KKyAgICAg
Ki8KKyAgICBlczNmRmJvVGVzdFV0aWwuZ2V0VGhyZXNob2xkRnJvbVRleHR1cmVGb3JtYXQgPSBm
dW5jdGlvbihmb3JtYXQpIHsKKyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIGJpdHMgPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0TWFudGlzc2FC
aXREZXB0aChmb3JtYXQpOworICAgICAgICByZXR1cm4gdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50
cygKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5jYWxjdWxhdGVVOENvbnZlcnNpb25FcnJv
cihiaXRzWzBdKSwKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5jYWxjdWxhdGVVOENvbnZl
cnNpb25FcnJvcihiaXRzWzFdKSwKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5jYWxjdWxh
dGVVOENvbnZlcnNpb25FcnJvcihiaXRzWzJdKSwKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRp
bC5jYWxjdWxhdGVVOENvbnZlcnNpb25FcnJvcihiaXRzWzNdKQorICAgICAgICApOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZ2xGb3JtYXQKKyAgICAgKiBAcmV0
dXJuIHt0Y3VSR0JBLlJHQkF9CisgICAgICovCisgICAgZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1h
dFRocmVzaG9sZCA9IGZ1bmN0aW9uKGdsRm9ybWF0KSB7CisgICAgICAgIC8qKiBAY29uc3QgQHR5
cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIGZvcm1hdCA9IGdsdVRleHR1cmVV
dGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoZ2xGb3JtYXQpOworICAgICAgICByZXR1cm4gZXMzZkZi
b1Rlc3RVdGlsLmdldFRocmVzaG9sZEZyb21UZXh0dXJlRm9ybWF0KGZvcm1hdCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNCaXRzCisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5nZXRUb1NSR0I4Q29udmVy
c2lvbkVycm9yID0gZnVuY3Rpb24oc3JjQml0cykgeworICAgICAgICAvLyBcbm90ZSBUaGVzZSBh
cmUgcHJlLWNvbXB1dGVkIGJhc2VkIG9uIHNpbXVsYXRpb24gcmVzdWx0cy4KKyAgICAgICAgLyoq
IEBjb25zdCBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGVycm9ycyA9IFsKKyAgICAgICAg
ICAgIDEsIC8vIDAgYml0cyAtIHJvdW5kaW5nCisgICAgICAgICAgICAyNTUsIC8vIDEgYml0cwor
ICAgICAgICAgICAgMTU3LCAvLyAyIGJpdHMKKyAgICAgICAgICAgIDEwNiwgLy8gMyBiaXRzCisg
ICAgICAgICAgICA3NCwgLy8gNCBiaXRzCisgICAgICAgICAgICA1MSwgLy8gNSBiaXRzCisgICAg
ICAgICAgICAzNCwgLy8gNiBiaXRzCisgICAgICAgICAgICAyMiwgLy8gNyBiaXRzCisgICAgICAg
ICAgICAxMywgLy8gOCBiaXRzCisgICAgICAgICAgICA3LCAvLyA5IGJpdHMKKyAgICAgICAgICAg
IDQsIC8vIDEwIGJpdHMKKyAgICAgICAgICAgIDMsIC8vIDExIGJpdHMKKyAgICAgICAgICAgIDIg
Ly8gMTIgYml0cworICAgICAgICAgICAgLy8gMSBmcm9tIHRoaXMgb24KKyAgICAgICAgXTsKKwor
ICAgICAgICBERV9BU1NFUlQoc3JjQml0cyA+PSAwKTsKKyAgICAgICAgaWYgKHNyY0JpdHMgPCBl
cnJvcnMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yc1tzcmNCaXRzXTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBzcmMKKyAgICAgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZHN0CisgICAgICogQHJldHVybiB7dGN1UkdCQS5SR0JB
fQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRpbC5nZXRUb1NSR0JDb252ZXJzaW9uVGhyZXNo
b2xkID0gZnVuY3Rpb24oc3JjLCBkc3QpIHsKKyAgICAgICAgLy8gT25seSBTUkdCOCBhbmQgU1JH
QjhfQUxQSEE4IGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgREVfQVNTRVJUKGRzdC50
eXBlID09IHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCk7CisgICAgICAgIERFX0FT
U0VSVChkc3Qub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQiB8fCBkc3Qub3Jk
ZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JHQkEpOworCisgICAgICAgIC8qKiBAY29u
c3QgQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBiaXRzID0gdGN1VGV4dHVyZVV0aWwuZ2V0
VGV4dHVyZUZvcm1hdE1hbnRpc3NhQml0RGVwdGgoc3JjKTsKKyAgICAgICAgLyoqIEBjb25zdCBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGRzdEhhc0FscGhhID0gZHN0Lm9yZGVyID09IHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLnNSR0JBOworCisgICAgICAgIHJldHVybiB0Y3VSR0JBLm5ld1JHQkFD
b21wb25lbnRzKAorICAgICAgICAgICAgZXMzZkZib1Rlc3RVdGlsLmdldFRvU1JHQjhDb252ZXJz
aW9uRXJyb3IoYml0c1swXSksCisgICAgICAgICAgICBlczNmRmJvVGVzdFV0aWwuZ2V0VG9TUkdC
OENvbnZlcnNpb25FcnJvcihiaXRzWzFdKSwKKyAgICAgICAgICAgIGVzM2ZGYm9UZXN0VXRpbC5n
ZXRUb1NSR0I4Q29udmVyc2lvbkVycm9yKGJpdHNbMl0pLAorICAgICAgICAgICAgZHN0SGFzQWxw
aGEgPyBlczNmRmJvVGVzdFV0aWwuY2FsY3VsYXRlVThDb252ZXJzaW9uRXJyb3IoYml0c1szXSkg
OiAwKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZib1Rlc3RVdGlsLnJlYWRQaXhl
bHMoKQorICAgICAqIEBwYXJhbSB7KFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8c2dsckdMQ29udGV4
dC5HTENvbnRleHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dCl9IGN0eAor
ICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7dGN1
VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHNjYWxlCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiaWFzCisgICAgICovCisg
ICAgZXMzZkZib1Rlc3RVdGlsLnJlYWRQaXhlbHMgPSBmdW5jdGlvbihjdHgsIGRzdCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzY2FsZSwgYmlhcykgeworICAgICAgICAvKiogQHR5cGUg
e3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIHJlYWRGb3JtYXQgPSBlczNmRmJvVGVz
dFV0aWwuZ2V0RnJhbWVidWZmZXJSZWFkRm9ybWF0KGZvcm1hdCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2x1VGV4dHVyZVV0aWwuVHJhbnNmZXJGb3JtYXR9ICovIHZhciB0cmFuc2ZlckZtdCA9IGds
dVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KHJlYWRGb3JtYXQpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGFsaWdubWVudCA9IDQ7IC8vIFxub3RlIGdsLlBBQ0tfQUxJ
R05NRU5UID0gNCBpcyBhc3N1bWVkLgorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHJvd1NpemUgPSBkZU1hdGguZGVBbGlnbjMyKHJlYWRGb3JtYXQuZ2V0UGl4ZWxTaXplKCkgKiB3
aWR0aCwgYWxpZ25tZW50KTsKKyAgICAgICAgdmFyIHR5cGVkQXJyYXlUeXBlID0gdGN1VGV4dHVy
ZS5nZXRUeXBlZEFycmF5KHJlYWRGb3JtYXQudHlwZSk7CisgICAgICAgIHZhciBkYXRhID0gbmV3
IHR5cGVkQXJyYXlUeXBlKHJvd1NpemUgKiBoZWlnaHQpOworICAgICAgICBjdHgucmVhZFBpeGVs
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRh
dGFUeXBlLCBkYXRhKTsKKworICAgICAgICAvLyBDb252ZXJ0IHRvIHN1cmZhY2UuCisgICAgICAg
IHZhciBjcGJhRGVzY3JpcHRvciA9IHsKKyAgICAgICAgICAgIGZvcm1hdDogcmVhZEZvcm1hdCwK
KyAgICAgICAgICAgIHdpZHRoOiB3aWR0aCwKKyAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAor
ICAgICAgICAgICAgZGVwdGg6IDEsCisgICAgICAgICAgICByb3dQaXRjaDogcm93U2l6ZSwKKyAg
ICAgICAgICAgIHNsaWNlUGl0Y2g6IDAsCisgICAgICAgICAgICBkYXRhOiBkYXRhLmJ1ZmZlcgor
ICAgICAgICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVm
ZmVyQWNjZXNzfSAqLworICAgICAgICB2YXIgc3JjID0gbmV3IHRjdVRleHR1cmUuQ29uc3RQaXhl
bEJ1ZmZlckFjY2VzcyhjcGJhRGVzY3JpcHRvcik7CisKKyAgICAgICAgZHN0LnNldFNpemUod2lk
dGgsIGhlaWdodCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFj
Y2Vzc30gKi8gdmFyIGRzdEFjY2VzcyA9IGRzdC5nZXRBY2Nlc3MoKTsKKworICAgICAgICBmb3Ig
KHZhciB5byA9IDA7IHlvIDwgaGVpZ2h0OyB5bysrKQorICAgICAgICBmb3IgKHZhciB4byA9IDA7
IHhvIDwgd2lkdGg7IHhvKyspCisgICAgICAgICAgICBkc3RBY2Nlc3Muc2V0UGl4ZWwoZGVNYXRo
LmFkZChkZU1hdGgubXVsdGlwbHkoc3JjLmdldFBpeGVsKHhvLCB5byksIHNjYWxlKSwgYmlhcyks
IHhvLCB5byk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNC
aXRzCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZGYm9UZXN0VXRp
bC5jYWxjdWxhdGVVOENvbnZlcnNpb25FcnJvciA9IGZ1bmN0aW9uKHNyY0JpdHMpIHsKKyAgICAg
ICAgaWYgKHNyY0JpdHMgPiAwKSB7CisgICAgICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBjbGFtcGVkQml0cyA9IGRlTWF0aC5jbGFtcChzcmNCaXRzLCAwLCA4KTsKKyAg
ICAgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gdmFyIHNyY01heFZhbHVlID0g
TWF0aC5tYXgoKDEgPDwgY2xhbXBlZEJpdHMpIC0gMSwgMSk7CisgICAgICAgICAgICAvKiogQGNv
bnN0IEB0eXBlIHtudW1iZXJ9ICovIHZhciBlcnJvciA9IE1hdGguZmxvb3IoTWF0aC5jZWlsKDI1
NS4wICogMi4wIC8gc3JjTWF4VmFsdWUpKTsKKworICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5j
bGFtcChlcnJvciwgMCwgMjU1KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRmxvYXRTdGF0ZVF1
ZXJ5VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiNTQzMTA2MWUwZTczM2E2ZmZlYTU3MDg5YjgxYzNjMjY5ZGJhYjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmpzCkBAIC0wLDAg
KzEsNDMxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFBy
b2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMn
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92
aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cycpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZBcGlDYXNlJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1N0YXRlUXVl
cnknKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwl2YXIgZXMzZkZsb2F0U3RhdGVRdWVy
eVRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHM7CisgICAg
dmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKwl2YXIgZGVS
YW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKwl2YXIgZGVNYXRoID0g
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworCXZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0
aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisJdmFyIGdsc1N0YXRlUXVlcnkgPSBtb2R1bGVzLnNo
YXJlZC5nbHNTdGF0ZVF1ZXJ5OworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVu
ZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8KKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVz
dHMuRGVwdGhSYW5nZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworCQllczNm
QXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKwl9Owor
CisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkRlcHRoUmFuZ2VDYXNlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworCWVzM2ZGbG9hdFN0
YXRlUXVlcnlUZXN0cy5EZXB0aFJhbmdlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
RmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuRGVwdGhSYW5nZUNhc2U7CisKKwllczNmRmxvYXRTdGF0ZVF1
ZXJ5VGVzdHMuRGVwdGhSYW5nZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwkJ
LyoqIEB0eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFu
ZG9tKDB4YWJjZGVmKTsKKworCQl0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkRF
UFRIX1JBTkdFLCBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDEuMF0pKSk7CisKKwkJLyoqIEB0eXBl
IHtBcnJheTxGbG9hdDMyQXJyYXk+fSAqLyB2YXIgZml4ZWRUZXN0cyA9IFsKKwkJCW5ldyBGbG9h
dDMyQXJyYXkoWzAuNSwgMS4wXSksCisJCQluZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuNV0pLAor
CQkJbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjBdKSwKKwkJCW5ldyBGbG9hdDMyQXJyYXkoWzEu
MCwgMS4wXSkKKwkJXTsKKworCQlmb3IgKHZhciBuZHggPSAwOyBuZHggPCBmaXhlZFRlc3RzLmxl
bmd0aDsgKytuZHgpIHsKKwkJCWdsLmRlcHRoUmFuZ2UoZml4ZWRUZXN0c1tuZHhdWzBdLCBmaXhl
ZFRlc3RzW25keF1bMV0pOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5E
RVBUSF9SQU5HRSwgZml4ZWRUZXN0c1tuZHhdKSk7CisJCX0KKworCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAxMjA7CisJCWZvciAodmFyIGkgPSAwOyBpIDwgbnVt
SXRlcmF0aW9uczsgKytpKSB7CisJCQkvLyBbZGFnXSBzb3J0aW5nIHRvIGtlZXAgek5lYXIgPCB6
RmFyCisJCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2YWx1ZXMgPSBbcm5kLmdl
dEZsb2F0KDAsIDEpLCBybmQuZ2V0RmxvYXQoMCwgMSldLnNvcnQoKTsKKwkJCS8qKiBAdHlwZSB7
RmxvYXQzMkFycmF5fSAqLyB2YXIgZGVwdGggPSBuZXcgRmxvYXQzMkFycmF5KHZhbHVlcyk7CisJ
CQlnbC5kZXB0aFJhbmdlKGRlcHRoWzBdLCBkZXB0aFsxXSk7CisJCQl0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5KGdsLkRFUFRIX1JBTkdFLCBkZXB0aCkpOworCQl9CisJfTsKKworCS8q
KgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQor
CSAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisJICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisJICovCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkxpbmVXaWR0aENhc2UgPSBmdW5jdGlv
bihuYW1lLCBkZXNjcmlwdGlvbikgeworCQllczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywg
bmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKwl9OworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3Rz
LkxpbmVXaWR0aENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlD
YXNlLnByb3RvdHlwZSk7CisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkxpbmVXaWR0aENhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkxpbmVXaWR0
aENhc2U7CisKKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuTGluZVdpZHRoQ2FzZS5wcm90b3R5
cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8g
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmNkZWYpOworCisJCXRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuTElORV9XSURUSCwgMS4wKSk7CisKKwkJLyoqIEB0eXBl
IHtGbG9hdDMyQXJyYXl9ICovIHZhciByYW5nZSA9IC8qKiBAdHlwZSB7RmxvYXQzMkFycmF5fSAq
LyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMSUFTRURfTElORV9XSURUSF9SQU5HRSkpOworCisJCS8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtSXRlcmF0aW9ucyA9IDEyMDsKKwkJZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgcmVmZXJlbmNlID0gcm5kLmdldEZsb2F0KHJhbmdlWzBdLCByYW5nZVsxXSk7CisKKwkJ
CWdsLmxpbmVXaWR0aChyZWZlcmVuY2UpOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5MSU5FX1dJRFRILCByZWZlcmVuY2UpKTsKKwkJfQorCX07CisKKwkvKioKKwkgKiBA
Y29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKwkgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSAqLwor
CWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0RmFjdG9yQ2FzZSA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisJCWVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworCX07CisKKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVz
dHMuUG9seWdvbk9mZnNldEZhY3RvckNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNm
QXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLlBv
bHlnb25PZmZzZXRGYWN0b3JDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGbG9hdFN0
YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0RmFjdG9yQ2FzZTsKKworCWVzM2ZGbG9hdFN0YXRl
UXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0RmFjdG9yQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0
aW9uKCkgeworCQkvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBk
ZVJhbmRvbS5SYW5kb20oMHhhYmNkZWYpOworCisJCXRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnkoZ2wuUE9MWUdPTl9PRkZTRVRfRkFDVE9SLCAwLjApKTsKKworCQkvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHZhciBmaXhlZFRlc3RzID0gWzAuMCwgMC41LCAtMC41LCAxLjVdOwor
CisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IGZpeGVkVGVzdHMubGVuZ3RoOyArK25keCkgewor
CQkJZ2wucG9seWdvbk9mZnNldChmaXhlZFRlc3RzW25keF0sIDApOworCQkJdGhpcy5jaGVjayhn
bHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5QT0xZR09OX09GRlNFVF9GQUNUT1IsIGZpeGVkVGVzdHNb
bmR4XSkpOworCQl9CisKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1JdGVyYXRpb25z
ID0gMTIwOworCQlmb3IgKHZhciBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgeworCQkJ
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZlcmVuY2UgPSBybmQuZ2V0RmxvYXQoLTY0MDAw
LCA2NDAwMCk7CisKKwkJCWdsLnBvbHlnb25PZmZzZXQocmVmZXJlbmNlLCAwKTsKKwkJCXRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuUE9MWUdPTl9PRkZTRVRfRkFDVE9SLCByZWZl
cmVuY2UpKTsKKwkJfQorCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5k
cyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKwkgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorCSAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSAqLworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0
cy5Qb2x5Z29uT2Zmc2V0VW5pdHNDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsK
KwkJZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7
CisJfTsKKworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0VW5pdHNDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUp
OworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0VW5pdHNDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zmc2V0
VW5pdHNDYXNlOworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLlBvbHlnb25PZmZzZXRVbml0
c0Nhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwkJLyoqIEB0eXBlIHtkZVJhbmRv
bS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKDB4YWJjZGVmKTsKKwor
CQl0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlBPTFlHT05fT0ZGU0VUX1VOSVRT
LCAwLjApKTsKKworCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmaXhlZFRlc3Rz
ID0gWzAuMCwgMC41LCAtMC41LCAxLjVdOworCisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IGZp
eGVkVGVzdHMubGVuZ3RoOyArK25keCkgeworCQkJZ2wucG9seWdvbk9mZnNldCgwLCBmaXhlZFRl
c3RzW25keF0pOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5QT0xZR09O
X09GRlNFVF9VTklUUywgZml4ZWRUZXN0c1tuZHhdKSk7CisJCX0KKworCQkvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAxMjA7CisJCWZvciAodmFyIGkgPSAwOyBpIDwg
bnVtSXRlcmF0aW9uczsgKytpKSB7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZmVy
ZW5jZSA9IHJuZC5nZXRGbG9hdCgtNjQwMDAsIDY0MDAwKTsKKworCQkJZ2wucG9seWdvbk9mZnNl
dCgwLCByZWZlcmVuY2UpOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5Q
T0xZR09OX09GRlNFVF9VTklUUywgcmVmZXJlbmNlKSk7CisJCX0KKwl9OworCisJLyoqCisJICog
QGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8K
KwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlQ292ZXJhZ2VDYXNlID0gZnVuY3Rpb24o
bmFtZSwgZGVzY3JpcHRpb24pIHsKKwkJZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uLCBnbCk7CisJfTsKKworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5T
YW1wbGVDb3ZlcmFnZUNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5B
cGlDYXNlLnByb3RvdHlwZSk7CisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLlNhbXBsZUNvdmVy
YWdlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMu
U2FtcGxlQ292ZXJhZ2VDYXNlOworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLlNhbXBsZUNv
dmVyYWdlQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge2Rl
UmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmNkZWYp
OworCisJCXRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuU0FNUExFX0NPVkVSQUdF
X1ZBTFVFLCAxLjApKTsKKworCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmaXhl
ZFRlc3RzID0gWzAuMCwgMC41LCAwLjQ1LCAwLjU1XTsKKworCQlmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBmaXhlZFRlc3RzLmxlbmd0aDsgKytuZHgpIHsKKwkJCWdsLnNhbXBsZUNvdmVyYWdlKGZp
eGVkVGVzdHNbbmR4XSwgZmFsc2UpOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eShnbC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUsIGZpeGVkVGVzdHNbbmR4XSkpOworCQl9CisKKwkJ
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY2xhbXBUZXN0cyA9IFstMS4wLCAtMS41
LCAxLjQ1LCAzLjU1XTsKKworCQlmb3IgKHZhciBuZHggPSAwOyBuZHggPCBjbGFtcFRlc3RzLmxl
bmd0aDsgKytuZHgpIHsKKwkJCWdsLnNhbXBsZUNvdmVyYWdlKGNsYW1wVGVzdHNbbmR4XSwgZmFs
c2UpOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5TQU1QTEVfQ09WRVJB
R0VfVkFMVUUsIGRlTWF0aC5jbGFtcChjbGFtcFRlc3RzW25keF0sIDAuMCwgMS4wKSkpOworCQl9
CisKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1JdGVyYXRpb25zID0gMTIwOworCQlm
b3IgKHZhciBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgeworCQkJLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciByZWZlcmVuY2UJPSBybmQuZ2V0RmxvYXQoMCwgMSk7CisJCQkvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBpbnZlcnQgPSBybmQuZ2V0Qm9vbCgpID8gdHJ1ZSA6IGZhbHNl
OworCisJCQlnbC5zYW1wbGVDb3ZlcmFnZShyZWZlcmVuY2UsIGludmVydCk7CisJCQl0aGlzLmNo
ZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSwgcmVmZXJl
bmNlKSk7CisJCX0KKwl9OworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMg
e2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFy
YW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8KKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMu
QmxlbmRDb2xvckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworCQllczNmQXBp
Q2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKwl9OworCisJ
ZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkJsZW5kQ29sb3JDYXNlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworCWVzM2ZGbG9hdFN0YXRl
UXVlcnlUZXN0cy5CbGVuZENvbG9yQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRmxv
YXRTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRDb2xvckNhc2U7CisKKwllczNmRmxvYXRTdGF0ZVF1ZXJ5
VGVzdHMuQmxlbmRDb2xvckNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwkJLyoq
IEB0eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9t
KDB4YWJjZGVmKTsKKworCQl0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkJMRU5E
X0NPTE9SLCBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAwXSkpKTsKKworCQkvKiogQHR5cGUg
e0FycmF5PEZsb2F0MzJBcnJheT59ICovIHZhciBmaXhlZFRlc3RzID0gWworCQkJbmV3IEZsb2F0
MzJBcnJheShbMC41LCAxLjAsIDAuNSwgMS4wXSksCisJCQluZXcgRmxvYXQzMkFycmF5KFswLjAs
IDAuNSwgMC4wLCAwLjVdKSwKKwkJCW5ldyBGbG9hdDMyQXJyYXkoWzAuMCwgMC4wLCAwLjAsIDAu
MF0pLAorCQkJbmV3IEZsb2F0MzJBcnJheShbMS4wLCAxLjAsIDEuMCwgMS4wXSkKKwkJXTsKKwkJ
Zm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgZml4ZWRUZXN0cy5sZW5ndGg7ICsrbmR4KSB7CisJCQln
bC5ibGVuZENvbG9yKGZpeGVkVGVzdHNbbmR4XVswXSwgZml4ZWRUZXN0c1tuZHhdWzFdLCBmaXhl
ZFRlc3RzW25keF1bMl0sIGZpeGVkVGVzdHNbbmR4XVszXSk7CisJCQl0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5KGdsLkJMRU5EX0NPTE9SLCBmaXhlZFRlc3RzW25keF0pKTsKKwkJfQor
CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtSXRlcmF0aW9ucyA9IDEyMDsKKwkJZm9y
ICh2YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKKwkJCS8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgciA9IHJuZC5nZXRGbG9hdCgwLCAxKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZyA9IHJuZC5nZXRGbG9hdCgwLCAxKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgYiA9IHJuZC5nZXRGbG9hdCgwLCAxKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgYSA9IHJuZC5nZXRGbG9hdCgwLCAxKTsKKworCQkJZ2wuYmxlbmRDb2xvcihyLCBnLCBiLCBh
KTsKKwkJCXRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuQkxFTkRfQ09MT1IsIG5l
dyBGbG9hdDMyQXJyYXkoW3IsIGcsIGIsIGFdKSkpOworCQl9CisJfTsKKworCS8qKgorCSAqIEBj
b25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorCSAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisJICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisJICovCisJ
ZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkNvbG9yQ2xlYXJDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKwkJZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRl
c2NyaXB0aW9uLCBnbCk7CisJfTsKKworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Db2xvckNs
ZWFyQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJv
dG90eXBlKTsKKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuQ29sb3JDbGVhckNhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkNvbG9yQ2xlYXJDYXNl
OworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkNvbG9yQ2xlYXJDYXNlLnByb3RvdHlwZS50
ZXN0ID0gZnVuY3Rpb24oKSB7CisJCS8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKwkJLy8gW2RhZ10gSW4gdGhl
IEMrKyBkRVFQIGNvZGUsIGluaXRpYWwgY29sb3IgY2xlYXIgdmFsdWUgY2hlY2sgaXMgdGVtb3Jh
cmlseSByZW1vdmVkLiAodW50aWwgdGhlIGZyYW1ld29yayBkb2VzIG5vdCBhbHRlciBpdCkKKwkJ
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5DT0xPUl9DTEVBUl9WQUxVRSwgbmV3
IEZsb2F0MzJBcnJheShbMCwgMCwgMCwgMF0pKSk7CisKKwkJLyoqIEB0eXBlIHtBcnJheTxGbG9h
dDMyQXJyYXk+fSAqLyB2YXIgZml4ZWRUZXN0cyA9IFsKKwkJCW5ldyBGbG9hdDMyQXJyYXkoWzAu
NSwgMS4wLCAwLjUsIDEuMF0pLAorCQkJbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjUsIDAuMCwg
MC41XSksCisJCQluZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMCwgMC4wLCAwLjBdKSwKKwkJCW5l
dyBGbG9hdDMyQXJyYXkoWzEuMCwgMS4wLCAxLjAsIDEuMF0pCisJCV07CisJCWZvciAodmFyIG5k
eCA9IDA7IG5keCA8IGZpeGVkVGVzdHMubGVuZ3RoOyArK25keCkgeworCQkJZ2wuY2xlYXJDb2xv
cihmaXhlZFRlc3RzW25keF1bMF0sIGZpeGVkVGVzdHNbbmR4XVsxXSwgZml4ZWRUZXN0c1tuZHhd
WzJdLCBmaXhlZFRlc3RzW25keF1bM10pOworCQkJdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5DT0xPUl9DTEVBUl9WQUxVRSwgZml4ZWRUZXN0c1tuZHhdKSk7CisJCX0KKworCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAxMjA7CisJCWZvciAodmFy
IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7CisJCQkvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHIgPSBybmQuZ2V0RmxvYXQoMCwgMSk7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGcgPSBybmQuZ2V0RmxvYXQoMCwgMSk7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGIgPSBybmQuZ2V0RmxvYXQoMCwgMSk7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGEg
PSBybmQuZ2V0RmxvYXQoMCwgMSk7CisKKwkJCWdsLmNsZWFyQ29sb3IociwgZywgYiwgYSk7CisJ
CQl0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkNPTE9SX0NMRUFSX1ZBTFVFLCBu
ZXcgRmxvYXQzMkFycmF5KFtyLCBnLCBiLCBhXSkpKTsKKwkJfQorCX07CisKKwkvKioKKwkgKiBA
Y29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKwkgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSAqLwor
CWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5EZXB0aENsZWFyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2NyaXB0aW9uKSB7CisJCWVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBk
ZXNjcmlwdGlvbiwgZ2wpOworCX07CisKKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuRGVwdGhD
bGVhckNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnBy
b3RvdHlwZSk7CisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkRlcHRoQ2xlYXJDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5EZXB0aENsZWFyQ2Fz
ZTsKKworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5EZXB0aENsZWFyQ2FzZS5wcm90b3R5cGUu
dGVzdCA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFy
IHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmNkZWYpOworCisJCXRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnkoZ2wuREVQVEhfQ0xFQVJfVkFMVUUsIDEpKTsKKworCQkvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAxMjA7CisJCWZvciAodmFyIGkgPSAw
OyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHJlZiA9IHJuZC5nZXRGbG9hdCgwLCAxKTsKKworCQkJZ2wuY2xlYXJEZXB0aChyZWYpOworCQkJ
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5ERVBUSF9DTEVBUl9WQUxVRSwgcmVm
KSk7CisJCX0KKwl9OworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMge2Vz
M2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8KKwllczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuTWF4
VGV4dHVyZUxPREJpYXNDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKwkJZXMz
ZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisJfTsK
KworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5NYXhUZXh0dXJlTE9EQmlhc0Nhc2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisJZXMz
ZkZsb2F0U3RhdGVRdWVyeVRlc3RzLk1heFRleHR1cmVMT0RCaWFzQ2FzZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuTWF4VGV4dHVyZUxPREJpYXNDYXNl
OworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLk1heFRleHR1cmVMT0RCaWFzQ2FzZS5wcm90
b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworCQl0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVy
aWZ5R3JlYXRlck9yRXF1YWwoZ2wuTUFYX1RFWFRVUkVfTE9EX0JJQVMsIDIuMCkpOworCX07CisK
KwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2Fz
ZX0KKwkgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlw
dGlvbgorCSAqLworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkUG9pbnRTaXplUmFu
Z2VDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKwkJZXMzZkFwaUNhc2UuQXBp
Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisJfTsKKworCWVzM2ZGbG9h
dFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkUG9pbnRTaXplUmFuZ2VDYXNlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworCWVzM2ZGbG9hdFN0
YXRlUXVlcnlUZXN0cy5BbGlhc2VkUG9pbnRTaXplUmFuZ2VDYXNlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkUG9pbnRTaXplUmFuZ2VDYXNl
OworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkFsaWFzZWRQb2ludFNpemVSYW5nZUNhc2Uu
cHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwkJdmFyIHBvaW50U2l6ZVJhbmdlID0gLyoq
IEB0eXBlIHtGbG9hdDMyQXJyYXl9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9QT0lO
VF9TSVpFX1JBTkdFKSk7CisJCS8qKiBAdHlwZSB7RmxvYXQzMkFycmF5fSAqLyB2YXIgcmVmZXJl
bmNlID0gbmV3IEZsb2F0MzJBcnJheShbMSwgMV0pOworCQl0aGlzLmNoZWNrKHBvaW50U2l6ZVJh
bmdlWzBdIDw9IHJlZmVyZW5jZVswXSAmJiBwb2ludFNpemVSYW5nZVsxXSA+PSByZWZlcmVuY2Vb
MV0pOworCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7ZXMzZkFw
aUNhc2UuQXBpQ2FzZX0KKwkgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorCSAqLworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2Vk
TGluZVdpZHRoUmFuZ2VDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKwkJZXMz
ZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisJfTsK
KworCWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkTGluZVdpZHRoUmFuZ2VDYXNlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOwor
CWVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkTGluZVdpZHRoUmFuZ2VDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkTGluZVdp
ZHRoUmFuZ2VDYXNlOworCisJZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkFsaWFzZWRMaW5lV2lk
dGhSYW5nZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwkJdmFyIGxpbmVXaWR0
aFJhbmdlID0gLyoqIEB0eXBlIHtGbG9hdDMyQXJyYXl9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wu
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKSk7CisJCS8qKiBAdHlwZSB7RmxvYXQzMkFycmF5fSAq
LyB2YXIgcmVmZXJlbmNlID0gbmV3IEZsb2F0MzJBcnJheShbMSwgMV0pOworCQl0aGlzLmNoZWNr
KGxpbmVXaWR0aFJhbmdlWzBdIDw9IHJlZmVyZW5jZVswXSAmJiBsaW5lV2lkdGhSYW5nZVsxXSA+
PSByZWZlcmVuY2VbMV0pOworCX07CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICovCisgICAgZXMzZkZsb2F0
U3RhdGVRdWVyeVRlc3RzLkZsb2F0U3RhdGVRdWVyeVRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2Zsb2F0cycsICdGbG9hdCBWYWx1
ZXMnKTsKKyAgICB9OworCisgICAgZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkZsb2F0U3RhdGVR
dWVyeVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3Qu
cHJvdG90eXBlKTsKKyAgICBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuRmxvYXRTdGF0ZVF1ZXJ5
VGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkZs
b2F0U3RhdGVRdWVyeVRlc3RzOworCisgICAgZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkZsb2F0
U3RhdGVRdWVyeVRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisJCXRoaXMuYWRk
Q2hpbGQobmV3IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5EZXB0aFJhbmdlQ2FzZSgnZGVwdGhf
cmFuZ2UnLCAnREVQVEhfUkFOR0UnKSk7CisJCXRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZGbG9hdFN0
YXRlUXVlcnlUZXN0cy5MaW5lV2lkdGhDYXNlKCdsaW5lX3dpZHRoJywgJ0xJTkVfV0lEVEgnKSk7
CisJCXRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5Qb2x5Z29uT2Zm
c2V0RmFjdG9yQ2FzZSgncG9seWdvbl9vZmZzZXRfZmFjdG9yJywgJ1BPTFlHT05fT0ZGU0VUX0ZB
Q1RPUicpKTsKKwkJdGhpcy5hZGRDaGlsZChuZXcgZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLlBv
bHlnb25PZmZzZXRVbml0c0Nhc2UoJ3BvbHlnb25fb2Zmc2V0X3VuaXRzJywgJ1BPTFlHT05fT0ZG
U0VUX1VOSVRTJykpOworCQl0aGlzLmFkZENoaWxkKG5ldyBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVz
dHMuU2FtcGxlQ292ZXJhZ2VDYXNlKCdzYW1wbGVfY292ZXJhZ2VfdmFsdWUnLCAnU0FNUExFX0NP
VkVSQUdFX1ZBTFVFJykpOworCQl0aGlzLmFkZENoaWxkKG5ldyBlczNmRmxvYXRTdGF0ZVF1ZXJ5
VGVzdHMuQmxlbmRDb2xvckNhc2UoJ2JsZW5kX2NvbG9yJywgJ0JMRU5EX0NPTE9SJykpOworCQl0
aGlzLmFkZENoaWxkKG5ldyBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuQ29sb3JDbGVhckNhc2Uo
J2NvbG9yX2NsZWFyX3ZhbHVlJywgJ0NPTE9SX0NMRUFSX1ZBTFVFJykpOworCQl0aGlzLmFkZENo
aWxkKG5ldyBlczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuRGVwdGhDbGVhckNhc2UoJ2RlcHRoX2Ns
ZWFyX3ZhbHVlJywgJ0RFUFRIX0NMRUFSX1ZBTFVFJykpOworCQl0aGlzLmFkZENoaWxkKG5ldyBl
czNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuTWF4VGV4dHVyZUxPREJpYXNDYXNlKCdtYXhfdGV4dHVy
ZV9sb2RfYmlhcycsICdNQVhfVEVYVFVSRV9MT0RfQklBUycpKTsKKwkJdGhpcy5hZGRDaGlsZChu
ZXcgZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLkFsaWFzZWRQb2ludFNpemVSYW5nZUNhc2UoJ2Fs
aWFzZWRfcG9pbnRfc2l6ZV9yYW5nZScsICdBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UnKSk7CisJ
CXRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5BbGlhc2VkTGluZVdp
ZHRoUmFuZ2VDYXNlKCdhbGlhc2VkX2xpbmVfd2lkdGhfcmFuZ2UnLCAnQUxJQVNFRF9MSU5FX1dJ
RFRIX1JBTkdFJykpOworCisgICAgfTsKKworICAgIC8qKgorICAgICogUnVuIHRlc3QKKyAgICAq
IEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICAgICovCisgICAgZXMz
ZkZsb2F0U3RhdGVRdWVyeVRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICAJZ2wg
PSBjb250ZXh0OworICAgIAkvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgIAl2YXIg
c3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgCXN0YXRlLnNldFJvb3QobmV3IGVzM2ZG
bG9hdFN0YXRlUXVlcnlUZXN0cy5GbG9hdFN0YXRlUXVlcnlUZXN0cygpKTsKKworICAgIAkvL1Nl
dCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIAlzZXRD
dXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgIAlkZXNjcmlw
dGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICAJdHJ5IHsKKyAg
ICAJCS8vUnVuIHRlc3QgY2FzZXMKKyAgICAJCXRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOwor
ICAgIAl9CisgICAgCWNhdGNoIChlcnIpIHsKKyAgICAJCXRlc3RGYWlsZWRPcHRpb25zKCdGYWls
ZWQgdG8gZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAJ
CXRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAJfQorICAgIH07CisKK30pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZGcmFnRGVwdGhUZXN0cy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9l
czNmRnJhZ0RlcHRoVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE4OTJhMDkyNjdkMDYyMTI4MzhiZmE5
ZDJlZGFjMmM0ZGNmMzdmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRnJhZ0Rl
cHRoVGVzdHMuanMKQEAgLTAsMCArMSw1OTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJh
d0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmln
aHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisg
KiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAq
CisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoK
KyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNl
IHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdEZXB0aFRl
c3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVS
YW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWly
ZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZScpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCXZhciBlczNmRnJhZ0RlcHRoVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZGcmFnRGVwdGhUZXN0czsKKwl2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoOworCXZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9t
OworCXZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworCXZh
ciBnbHNTaGFkZXJSZW5kZXJDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyUmVuZGVyQ2Fz
ZTsKKwl2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbTsKKwl2YXIgZ2x1RHJhd1V0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsOwor
CXZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsK
Kwl2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKKwl2YXIgdGN1U3VyZmFj
ZSA9IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZTsKKwl2YXIgdGN1VGVzdENhc2UgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworCS8qKiBAdHlwZWRlZiB7ZnVuY3Rpb24oQXJyYXk8
bnVtYmVyPik6bnVtYmVyfSAqLyBlczNmRnJhZ0RlcHRoVGVzdHMuRXZhbEZyYWdEZXB0aEZ1bmM7
CisKKwkvKiogQGNvbnN0IHtzdHJpbmd9ICovIGVzM2ZGcmFnRGVwdGhUZXN0cy5zX3ZlcnRleFNo
YWRlclNyYyA9ICcnICsKKwkJJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisJCSdpbiBoaWdocCB2ZWM0
IGFfcG9zaXRpb247XG4nICsKKwkJJ2luIGhpZ2hwIHZlYzIgYV9jb29yZDtcbicgKworCQknb3V0
IGhpZ2hwIHZlYzIgdl9jb29yZDtcbicgKworCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCSd7
XG4nICsKKwkJJwlnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsKKwkJJwl2X2Nvb3JkID0g
YV9jb29yZDtcbicgKworCQknfVxuJzsKKworCS8qKiBAY29uc3Qge3N0cmluZ30gKi8gZXMzZkZy
YWdEZXB0aFRlc3RzLnNfZGVmYXVsdEZyYWdtZW50U2hhZGVyU3JjID0gJycgKworCQknI3ZlcnNp
b24gMzAwIGVzXG4nICsKKwkJJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X2NvbG9yO1xuJyArCisJCSds
YXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsKKwkJJ3Zv
aWQgbWFpbiAodm9pZClcbicgKworCQkne1xuJyArCisJCScJb19jb2xvciA9IHVfY29sb3I7XG4n
ICsKKwkJJ31cbic7CisKKwkvKioKKwkgKiBAcGFyYW0ge251bWJlcn0gZnVuYworCSAqIEBwYXJh
bSB7Kn0gYQorCSAqIEBwYXJhbSB7Kn0gYgorCSAqIEByZXR1cm4ge2Jvb2xlYW59CisJICovCisJ
ZXMzZkZyYWdEZXB0aFRlc3RzLmNvbXBhcmUgPSBmdW5jdGlvbihmdW5jLCBhLCBiKQl7CisJCXN3
aXRjaCAoZnVuYykgeworCQkJY2FzZSBnbC5ORVZFUjogcmV0dXJuIGZhbHNlOworCQkJY2FzZSBn
bC5BTFdBWVM6IHJldHVybiB0cnVlOworCQkJY2FzZSBnbC5MRVNTOiByZXR1cm4gYSA8IGI7CisJ
CQljYXNlIGdsLkxFUVVBTDogcmV0dXJuIGEgPD0gYjsKKwkJCWNhc2UgZ2wuRVFVQUw6IHJldHVy
biBhID09PSBiOworCQkJY2FzZSBnbC5OT1RFUVVBTDogcmV0dXJuIGEgIT09IGI7CisJCQljYXNl
IGdsLkdFUVVBTDogcmV0dXJuIGEgPj0gYjsKKwkJCWNhc2UgZ2wuR1JFQVRFUjogcmV0dXJuIGEg
PiBiOworCQl9CisJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdDb21wYXJlIGZ1bmN0aW9uIG5vdCBz
dXBwb3J0ZWQuJyk7CisJCXJldHVybiBmYWxzZTsKKwl9OworCisJLyoqCisJICogQGNvbnN0cnVj
dG9yCisJICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorCSAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisJICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKwkgKiBAcGFyYW0ge3N0cmluZ30g
ZnJhZ1NyYworCSAqIEBwYXJhbSB7P2VzM2ZGcmFnRGVwdGhUZXN0cy5FdmFsRnJhZ0RlcHRoRnVu
Y30gZXZhbEZ1bmMKKwkgKiBAcGFyYW0ge251bWJlcn0gY29tcGFyZUZ1bmMKKwkgKi8KKwllczNm
RnJhZ0RlcHRoVGVzdHMuRnJhZ0RlcHRoQ29tcGFyZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
LCBmcmFnU3JjLCBldmFsRnVuYywgY29tcGFyZUZ1bmMpIHsKKwkJdGN1VGVzdENhc2UuRGVxcFRl
c3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKwkJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMu
bV9mcmFnU3JjID0gZnJhZ1NyYzsKKwkJLyoqIEB0eXBlIHs/ZXMzZkZyYWdEZXB0aFRlc3RzLkV2
YWxGcmFnRGVwdGhGdW5jfSAqLyB0aGlzLm1fZXZhbEZ1bmMgPSBldmFsRnVuYzsKKwkJLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMubV9jb21wYXJlRnVuYyA9IGNvbXBhcmVGdW5jOworCX07CisK
KwllczNmRnJhZ0RlcHRoVGVzdHMuRnJhZ0RlcHRoQ29tcGFyZUNhc2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworCWVzM2ZGcmFnRGVw
dGhUZXN0cy5GcmFnRGVwdGhDb21wYXJlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
RnJhZ0RlcHRoVGVzdHMuRnJhZ0RlcHRoQ29tcGFyZUNhc2U7CisKKwkvKioKKwkgKiBAcmV0dXJu
IHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorCSAqLworCWVzM2ZGcmFnRGVwdGhUZXN0cy5G
cmFnRGVwdGhDb21wYXJlQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworCQkv
KiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5k
b20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkpOworCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHZpZXdwb3J0VyA9IE1hdGgubWluKDEyOCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRo
KTsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9ydEggPSBNYXRoLm1pbigxMjgs
IGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZp
ZXdwb3J0WCA9IHJuZC5nZXRJbnQoMCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIC0gdmlld3BvcnRX
KTsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9ydFkgPSBybmQuZ2V0SW50KDAs
IGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQgLSB2aWV3cG9ydEgpOworCQkvKiogQHR5cGUge3RjdVN1
cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkRnJhbWUgPSBuZXcgdGN1U3VyZmFjZS5TdXJm
YWNlKHZpZXdwb3J0Vywgdmlld3BvcnRIKTsKKwkJLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZh
Y2V9ICovIHZhciByZWZlcmVuY2VGcmFtZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uodmlld3Bv
cnRXLCB2aWV3cG9ydEgpOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbnN0RGVwdGgg
PSAwLjE7CisJCXZhciBkZXB0aEJpdHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBh
cmFtZXRlcihnbC5ERVBUSF9CSVRTKSk7CisKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4
ZjsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkOworCQkvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBkcGFzczsKKworCQlpZiAoZGVwdGhCaXRzID09IDApCisJCQl0aHJvdyBuZXcgRXJy
b3IoJ0RlcHRoIGJ1ZmZlciBpcyByZXF1aXJlZCcpOworCisJCWdsLmRlcHRoTWFzayh0cnVlKTsK
KwkJZ2wudmlld3BvcnQodmlld3BvcnRYLCB2aWV3cG9ydFksIHZpZXdwb3J0Vywgdmlld3BvcnRI
KTsKKwkJZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQg
fCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCQlnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisK
KwkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcXVhZEluZGljZXMgPSBbMCwgMSwg
MiwgMiwgMSwgM107CisKKwkJLy8gRmlsbCB2aWV3cG9ydCB3aXRoIDIgcXVhZHMgLSBvbmUgd2l0
aCBjb25zdGFudCBkZXB0aCBhbmQgYW5vdGhlciB3aXRoIGQgPSBbLTEuLjFdCisJCS8qKiBAdHlw
ZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLworCQl2YXIgYmFzaWNRdWFkUHJv
Z3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclBy
b2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKGVzM2ZGcmFnRGVwdGhUZXN0cy5zX3ZlcnRleFNoYWRl
clNyYywgZXMzZkZyYWdEZXB0aFRlc3RzLnNfZGVmYXVsdEZyYWdtZW50U2hhZGVyU3JjKSk7CisK
KwkJaWYgKCFiYXNpY1F1YWRQcm9ncmFtLmlzT2soKSkgeworCQkJYnVmZmVyZWRMb2dUb0NvbnNv
bGUoYmFzaWNRdWFkUHJvZ3JhbS5nZXRQcm9ncmFtSW5mbygpLmluZm9Mb2cpOworCQkJdGhyb3cg
bmV3IEVycm9yKCdDb21waWxlIGZhaWxlZCcpOworCQl9CisKKwkJLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgY29uc3REZXB0aENvb3JkID0gWworCQkJIC0xLjAsIC0xLjAsIGNvbnN0
RGVwdGgsIDEuMCwKKwkJCSAtMS4wLCAxLjAsIGNvbnN0RGVwdGgsIDEuMCwKKwkJCSAwLjAsIC0x
LjAsIGNvbnN0RGVwdGgsIDEuMCwKKwkJCSAwLjAsIDEuMCwgY29uc3REZXB0aCwgMS4wCisJCV07
CisKKwkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmFyeWluZ0RlcHRoQ29vcmQg
PSBbCisJCQkgMC4wLCAtMS4wLCAxLjAsIDEuMCwKKwkJCSAwLjAsIDEuMCwgMC4wLCAxLjAsCisJ
CQkgMS4wLCAtMS4wLCAwLjAsIDEuMCwKKwkJCSAxLjAsIDEuMCwgLTEuMCwgMS4wCisJCV07CisK
KwkJZ2wudXNlUHJvZ3JhbShiYXNpY1F1YWRQcm9ncmFtLmdldFByb2dyYW0oKSk7CisJCWdsLnVu
aWZvcm00ZihnbC5nZXRVbmlmb3JtTG9jYXRpb24oYmFzaWNRdWFkUHJvZ3JhbS5nZXRQcm9ncmFt
KCksICd1X2NvbG9yJyksIDAuMCwgMC4wLCAxLjAsIDEuMCk7CisJCWdsLmRlcHRoRnVuYyhnbC5B
TFdBWVMpOworCisJCS8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nfSAq
LyB2YXIgcG9zQmluZGluZyA9IGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5n
KCdhX3Bvc2l0aW9uJywgNCwgNCwgMCwgY29uc3REZXB0aENvb3JkKTsKKwkJZ2x1RHJhd1V0aWwu
ZHJhdyhnbCwgYmFzaWNRdWFkUHJvZ3JhbS5nZXRQcm9ncmFtKCksIFtwb3NCaW5kaW5nXSwgZ2x1
RHJhd1V0aWwudHJpYW5nbGVzKHF1YWRJbmRpY2VzKSk7CisKKwkJcG9zQmluZGluZyA9IGdsdURy
YXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uJywgNCwgNCwgMCwg
dmFyeWluZ0RlcHRoQ29vcmQpOworCQlnbHVEcmF3VXRpbC5kcmF3KGdsLCBiYXNpY1F1YWRQcm9n
cmFtLmdldFByb2dyYW0oKSwgW3Bvc0JpbmRpbmddLCBnbHVEcmF3VXRpbC50cmlhbmdsZXMocXVh
ZEluZGljZXMpKTsKKworCQkvLyBSZW5kZXIgd2l0aCBkZXB0aCB0ZXN0LgorCQkvKiogQHR5cGUg
e2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8KKwkJdmFyIHByb2dyYW0gPSBuZXcg
Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VW
dHhGcmFnU291cmNlcyhlczNmRnJhZ0RlcHRoVGVzdHMuc192ZXJ0ZXhTaGFkZXJTcmMsIHRoaXMu
bV9mcmFnU3JjKSk7CisJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKHByb2dyYW0uZ2V0UHJvZ3JhbUlu
Zm8oKS5pbmZvTG9nKTsKKworCQlpZiAoIXByb2dyYW0uaXNPaygpKQorCQkJdGhyb3cgbmV3IEVy
cm9yKCdDb21waWxlIGZhaWxlZCcpOworCisJCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGNvb3JkID0gWworCQkJMC4wLCAwLjAsCisJCQkwLjAsIDEuMCwKKwkJCTEuMCwgMC4wLAor
CQkJMS4wLCAxLjAKKwkJXTsKKworCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBw
b3NpdGlvbiA9IFsKKwkJCS0xLjAsIC0xLjAsIDEuMCwgMS4wLAorCQkJLTEuMCwgMS4wLCAwLjAs
IDEuMCwKKwkJCTEuMCwgLTEuMCwgMC4wLCAxLjAsCisJCQkxLjAsIDEuMCwgLTEuMCwgMS4wCisJ
CV07CisKKwkJZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisJCWdsLmRlcHRo
RnVuYyh0aGlzLm1fY29tcGFyZUZ1bmMpOworCQlnbC51bmlmb3JtNGYoZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndV9jb2xvcicpLCAwLjAsIDEuMCwgMC4wLCAx
LjApOworCisJCS8vIFNldHVwIGRlZmF1bHQgaGVscGVyIHVuaWZvcm1zLgorCQlnbHNTaGFkZXJS
ZW5kZXJDYXNlLnNldHVwRGVmYXVsdFVuaWZvcm1zKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKwor
CQkvKiogQHR5cGUge0FycmF5PGdsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZz59ICovIHZh
ciAgdmVydGV4QXJyYXlzID0gWworCQkJZ2x1RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJheUJp
bmRpbmcoJ2FfcG9zaXRpb24nLCA0LCA0LCAwLCBwb3NpdGlvbiksCisJCQlnbHVEcmF3VXRpbC5u
ZXdGbG9hdFZlcnRleEFycmF5QmluZGluZygnYV9jb29yZCcsIDIsIDQsIDAsIGNvb3JkKQorCQld
OworCisJCWdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCB2ZXJ0ZXhB
cnJheXMsIGdsdURyYXdVdGlsLnRyaWFuZ2xlcyhxdWFkSW5kaWNlcykpOworCisJCXJlbmRlcmVk
RnJhbWUucmVhZFZpZXdwb3J0KGdsLCBbdmlld3BvcnRYLCB2aWV3cG9ydFksIHZpZXdwb3J0Vywg
dmlld3BvcnRIXSk7CisKKwkJLy8gUmVuZGVyIHJlZmVyZW5jZS4KKwkJZm9yICh2YXIgeSA9IDA7
IHkgPCByZWZlcmVuY2VGcmFtZS5nZXRIZWlnaHQoKTsgeSsrKSB7CisJCQkvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHlmID0gKHkgKyAwLjUpIC8gcmVmZXJlbmNlRnJhbWUuZ2V0SGVpZ2h0KCk7
CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGhhbGYgPSBkZU1hdGguY2xhbXAoTWF0aC5m
bG9vcihyZWZlcmVuY2VGcmFtZS5nZXRXaWR0aCgpICogMC41ICsgMC41KSwgMCwgcmVmZXJlbmNl
RnJhbWUuZ2V0V2lkdGgoKSk7CisKKwkJCS8vIEZpbGwgbGVmdCBoYWxmIC0gY29tcGFyaXNvbiB0
byBjb25zdGFudCAwLjUKKwkJCWZvciAodmFyIHggPSAwOyB4IDwgaGFsZjsgeCsrKSB7CisJCQkJ
eGYgPSAoeCArIDAuNSkgLyByZWZlcmVuY2VGcmFtZS5nZXRXaWR0aCgpOworCQkJCWQgPSB0aGlz
Lm1fZXZhbEZ1bmMoW3hmLCB5Zl0pOworCQkJCWRwYXNzID0gZXMzZkZyYWdEZXB0aFRlc3RzLmNv
bXBhcmUodGhpcy5tX2NvbXBhcmVGdW5jLCBkLCBjb25zdERlcHRoICogMC41ICsgMC41KTsKKwor
CQkJCXJlZmVyZW5jZUZyYW1lLnNldFBpeGVsKHgsIHksIGRwYXNzID8gdGN1UkdCQS5SR0JBLmdy
ZWVuLnRvSVZlYygpIDogdGN1UkdCQS5SR0JBLmJsdWUudG9JVmVjKCkpOworCQkJfQorCisJCQkv
LyBGaWxsIHJpZ2h0IGhhbGYgLSBjb21wYXJpc29uIHRvIGludGVycG9sYXRlZCBkZXB0aAorCQkJ
Zm9yICh2YXIgeCA9IGhhbGY7IHggPCByZWZlcmVuY2VGcmFtZS5nZXRXaWR0aCgpOyB4KyspIHsK
KwkJCQl4ZiA9ICh4ICsgMC41KSAvIHJlZmVyZW5jZUZyYW1lLmdldFdpZHRoKCk7CisJCQkJLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB4aCA9ICh4IC0gaGFsZiArIDAuNSkgLyAocmVmZXJlbmNl
RnJhbWUuZ2V0V2lkdGgoKSAtIGhhbGYpOworCQkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
cmQgPSAxLjAgLSAoeGggKyB5ZikgKiAwLjU7CisJCQkJZCA9IHRoaXMubV9ldmFsRnVuYyhbeGYs
IHlmXSk7CisJCQkJZHBhc3MgPSBlczNmRnJhZ0RlcHRoVGVzdHMuY29tcGFyZSh0aGlzLm1fY29t
cGFyZUZ1bmMsIGQsIHJkKTsKKworCQkJCXJlZmVyZW5jZUZyYW1lLnNldFBpeGVsKHgsIHksIGRw
YXNzID8gdGN1UkdCQS5SR0JBLmdyZWVuLnRvSVZlYygpIDogdGN1UkdCQS5SR0JBLmJsdWUudG9J
VmVjKCkpOworCQkJfQorCQl9CisKKwkJLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9
IHRjdUltYWdlQ29tcGFyZS5mdXp6eUNvbXBhcmUoJ1Jlc3VsdCcsICdJbWFnZSBjb21wYXJpc29u
IHJlc3VsdCcsIHJlZmVyZW5jZUZyYW1lLmdldEFjY2VzcygpLCByZW5kZXJlZEZyYW1lLmdldEFj
Y2VzcygpLCAwLjA1KTsKKworCQlpZiAoIWlzT2spCisJCQl0ZXN0RmFpbGVkT3B0aW9ucygnRmFp
bCcsIGZhbHNlKTsKKwkJZWxzZQorCQkJdGVzdFBhc3NlZE9wdGlvbnMoJ1Bhc3MnLCB0cnVlKTsK
KworCQlyZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworCX07CisKKwkvKioK
KwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisJ
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworCSAqIEBw
YXJhbSB7c3RyaW5nfSBmcmFnU3JjCisJICogQHBhcmFtIHtlczNmRnJhZ0RlcHRoVGVzdHMuRXZh
bEZyYWdEZXB0aEZ1bmN9IGV2YWxGdW5jCisJICovCisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdE
ZXB0aFdyaXRlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGZyYWdTcmMsIGV2YWxGdW5jKSB7
CisJCXRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisJCS8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fZnJhZ1NyYyA9IGZyYWdTcmM7CisJCS8qKiBAdHlwZSB7
ZXMzZkZyYWdEZXB0aFRlc3RzLkV2YWxGcmFnRGVwdGhGdW5jfSAqLyB0aGlzLm1fZXZhbEZ1bmMg
PSBldmFsRnVuYzsKKwl9OworCisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFdyaXRlQ2Fz
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlw
ZSk7CisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFdyaXRlQ2FzZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmRnJhZ0RlcHRoVGVzdHMuRnJhZ0RlcHRoV3JpdGVDYXNlOworCisJLyoq
CisJICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKwkgKi8KKwllczNmRnJh
Z0RlcHRoVGVzdHMuRnJhZ0RlcHRoV3JpdGVDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rp
b24oKSB7CisJCS8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRl
UmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSk7CisJCS8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdmlld3BvcnRXID0gTWF0aC5taW4oMTI4LCBnbC5kcmF3aW5n
QnVmZmVyV2lkdGgpOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0SCA9IE1h
dGgubWluKDEyOCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCk7CisJCS8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgdmlld3BvcnRYID0gcm5kLmdldEludCgwLCBnbC5kcmF3aW5nQnVmZmVyV2lkdGgg
LSB2aWV3cG9ydFcpOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0WSA9IHJu
ZC5nZXRJbnQoMCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCAtIHZpZXdwb3J0SCk7CisJCS8qKiBA
dHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVuZGVyZWRGcmFtZSA9IG5ldyB0Y3VT
dXJmYWNlLlN1cmZhY2Uodmlld3BvcnRXLCB2aWV3cG9ydEgpOworCQkvKiogQHR5cGUge3RjdVN1
cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlZmVyZW5jZUZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3Vy
ZmFjZSh2aWV3cG9ydFcsIHZpZXdwb3J0SCk7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bnVtRGVwdGhTdGVwcyA9IDE2OworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRlcHRoU3Rl
cCA9IDEuMCAvIChudW1EZXB0aFN0ZXBzIC0gMSk7CisJCXZhciBkZXB0aEJpdHMgPSAvKiogQHR5
cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSk7CisKKwkJaWYg
KGRlcHRoQml0cyA9PT0gMCkKKwkJCXRocm93IG5ldyBFcnJvcignRGVwdGggYnVmZmVyIGlzIHJl
cXVpcmVkJyk7CisKKwkJZ2wuZGVwdGhNYXNrKHRydWUpOworCQlnbC52aWV3cG9ydCh2aWV3cG9y
dFgsIHZpZXdwb3J0WSwgdmlld3BvcnRXLCB2aWV3cG9ydEgpOworCQlnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJ
VCk7CisJCWdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKwkJZ2wuZGVwdGhGdW5jKGdsLkxFU1Mp
OworCisJCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHF1YWRJbmRpY2VzID0gWzAs
IDEsIDIsIDIsIDEsIDNdOworCisJCS8vIFJlbmRlciB3aXRoIGdpdmVuIHNoYWRlci4KKwkJLyoq
IEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovCisJCXZhciBwcm9ncmFt
ID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3Jh
bS5tYWtlVnR4RnJhZ1NvdXJjZXMoZXMzZkZyYWdEZXB0aFRlc3RzLnNfdmVydGV4U2hhZGVyU3Jj
LCB0aGlzLm1fZnJhZ1NyYykpOworCQlidWZmZXJlZExvZ1RvQ29uc29sZShwcm9ncmFtLmdldFBy
b2dyYW1JbmZvKCkuaW5mb0xvZyk7CisKKwkJaWYgKCFwcm9ncmFtLmlzT2soKSkKKwkJCXRocm93
IG5ldyBFcnJvcignQ29tcGlsZSBmYWlsZWQnKTsKKworCQkvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBjb29yZCA9IFsKKwkJCTAuMCwgMC4wLAorCQkJMC4wLCAxLjAsCisJCQkxLjAs
IDAuMCwKKwkJCTEuMCwgMS4wCisJCV07CisKKwkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgcG9zaXRpb24gPSBbCisJCQktMS4wLCAtMS4wLCArMS4wLCAxLjAsCisJCQktMS4wLCAx
LjAsIDAuMCwgMS4wLAorCQkJMS4wLCAtMS4wLCAwLjAsIDEuMCwKKwkJCTEuMCwgMS4wLCAtMS4w
LCAxLjAKKwkJXTsKKworCQlnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKwkJ
Z2wudW5pZm9ybTRmKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwg
J3VfY29sb3InKSwgMC4wLCAxLjAsIDAuMCwgMS4wKTsKKworCQkvLyBTZXR1cCBkZWZhdWx0IGhl
bHBlciB1bmlmb3Jtcy4KKwkJZ2xzU2hhZGVyUmVuZGVyQ2FzZS5zZXR1cERlZmF1bHRVbmlmb3Jt
cyhwcm9ncmFtLmdldFByb2dyYW0oKSk7CisKKwkJLyoqIEB0eXBlIHtBcnJheTxnbHVEcmF3VXRp
bC5WZXJ0ZXhBcnJheUJpbmRpbmc+fSAqLyB2YXIgIHZlcnRleEFycmF5cyA9IFsKKwkJCWdsdURy
YXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uJywgNCwgNCwgMCwg
cG9zaXRpb24pLAorCQkJZ2x1RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJheUJpbmRpbmcoJ2Ff
Y29vcmQnLCAyLCA0LCAwLCBjb29yZCkKKwkJXTsKKwkJZ2x1RHJhd1V0aWwuZHJhdyhnbCwgcHJv
Z3JhbS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgZ2x1RHJhd1V0aWwudHJpYW5nbGVzKHF1
YWRJbmRpY2VzKSk7CisKKwkJLy8gVmlzdWFsaXplIGJ5IHJlbmRlcmluZyBmdWxsLXNjcmVlbiBx
dWFkcyB3aXRoIGluY3JlYXNpbmcgZGVwdGggYW5kIGNvbG9yLgorCQlwcm9ncmFtID0gbmV3IGds
dVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4
RnJhZ1NvdXJjZXMoZXMzZkZyYWdEZXB0aFRlc3RzLnNfdmVydGV4U2hhZGVyU3JjLCBlczNmRnJh
Z0RlcHRoVGVzdHMuc19kZWZhdWx0RnJhZ21lbnRTaGFkZXJTcmMpKTsKKworCQlpZiAoIXByb2dy
YW0uaXNPaygpKSB7CisJCQlidWZmZXJlZExvZ1RvQ29uc29sZShwcm9ncmFtLmdldFByb2dyYW1J
bmZvKCkuaW5mb0xvZyk7CisJCQl0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgZmFpbGVkJyk7CisJ
CX0KKworCQkvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgY29sb3JMb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFtKCksICd1X2NvbG9yJyk7
CisKKwkJZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisJCWdsLmRlcHRoTWFz
ayhmYWxzZSk7CisKKwkJZm9yICh2YXIgc3RlcE5keCA9IDA7IHN0ZXBOZHggPCBudW1EZXB0aFN0
ZXBzOyBzdGVwTmR4KyspIHsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZiA9IHN0ZXBO
ZHggKiBkZXB0aFN0ZXA7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRlcHRoID0gZiAq
IDIuMCAtIDEuMDsKKwkJCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNvbG9yID0g
W2YsIGYsIGYsIDEuMF07CisKKwkJCXBvc2l0aW9uID0gWworCQkJCS0xLjAsIC0xLjAsIGRlcHRo
LCAxLjAsCisJCQkJLTEuMCwgMS4wLCBkZXB0aCwgMS4wLAorCQkJCTEuMCwgLTEuMCwgZGVwdGgs
IDEuMCwKKwkJCQkxLjAsIDEuMCwgZGVwdGgsIDEuMAorCQkJXTsKKworCQkJLyoqIEB0eXBlIHtn
bHVEcmF3VXRpbC5WZXJ0ZXhBcnJheUJpbmRpbmd9ICovCisJCQl2YXIgcG9zQmluZGluZyA9IGds
dURyYXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uJywgNCwgNCwg
MCwgcG9zaXRpb24pOworCisJCQlnbC51bmlmb3JtNGZ2KGNvbG9yTG9jLCBjb2xvcik7CisJCQln
bHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9ncmFtLmdldFByb2dyYW0oKSwgW3Bvc0JpbmRpbmddLCBn
bHVEcmF3VXRpbC50cmlhbmdsZXMocXVhZEluZGljZXMpKTsKKwkJfQorCisJCXJlbmRlcmVkRnJh
bWUucmVhZFZpZXdwb3J0KGdsLCBbdmlld3BvcnRYLCB2aWV3cG9ydFksIHZpZXdwb3J0Vywgdmll
d3BvcnRIXSk7CisKKwkJLy8gUmVuZGVyIHJlZmVyZW5jZS4KKwkJZm9yICh2YXIgeSA9IDA7IHkg
PCByZWZlcmVuY2VGcmFtZS5nZXRIZWlnaHQoKTsgeSsrKQorCQlmb3IgKHZhciB4ID0gMDsgeCA8
IHJlZmVyZW5jZUZyYW1lLmdldFdpZHRoKCk7IHgrKykgeworCQkJLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB4ZiA9ICh4ICsgMC41KSAvIHJlZmVyZW5jZUZyYW1lLmdldFdpZHRoKCk7CisJCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHlmID0gKHkgKyAwLjUpIC8gcmVmZXJlbmNlRnJhbWUu
Z2V0SGVpZ2h0KCk7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGQgPSB0aGlzLm1fZXZh
bEZ1bmMoW3hmLCB5Zl0pOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdGVwID0gTWF0
aC5mbG9vcihkIC8gZGVwdGhTdGVwKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29s
ID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3Ioc3RlcCAqIGRlcHRoU3RlcCAqIDI1NS4wKSwgMCwg
MjU1KTsKKworCQkJcmVmZXJlbmNlRnJhbWUuc2V0UGl4ZWwoeCwgeSwgW2NvbCwgY29sLCBjb2ws
IDB4ZmZdKTsKKwkJfQorCisJCS8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSB0Y3VJ
bWFnZUNvbXBhcmUuZnV6enlDb21wYXJlKCdSZXN1bHQnLCAnSW1hZ2UgY29tcGFyaXNvbiByZXN1
bHQnLCByZWZlcmVuY2VGcmFtZS5nZXRBY2Nlc3MoKSwgcmVuZGVyZWRGcmFtZS5nZXRBY2Nlc3Mo
KSwgMC4wNSk7CisKKwkJaWYgKCFpc09rKQorCQkJdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWwnLCBm
YWxzZSk7CisJCWVsc2UKKwkJCXRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7CisKKwkJ
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKwl9OworCisKKwkvKioKKwkg
KiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisJICov
CisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFRlc3RzID0gZnVuY3Rpb24oKSB7CisJCXRj
dVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2ZyYWdkZXB0aCcsICdnbF9GcmFnRGVwdGgg
dGVzdHMnKTsKKwl9OworCisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFRlc3RzLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKwll
czNmRnJhZ0RlcHRoVGVzdHMuRnJhZ0RlcHRoVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
ZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFRlc3RzOworCisJLyoqCisJICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBjb29yZAorCSAqIEByZXR1cm4ge251bWJlcn0KKwkgKi8KKwllczNmRnJh
Z0RlcHRoVGVzdHMuZXZhbENvbnN0RGVwdGggPSBmdW5jdGlvbihjb29yZCkgeworCQlyZXR1cm4g
MC41OworCX07CisKKwkvKioKKwkgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisJICog
QHJldHVybiB7bnVtYmVyfQorCSAqLworCWVzM2ZGcmFnRGVwdGhUZXN0cy5ldmFsRHluYW1pY0Rl
cHRoID0gZnVuY3Rpb24oY29vcmQpIHsKKwkJcmV0dXJuIChjb29yZFswXSArIGNvb3JkWzFdKSAq
IDAuNTsKKwl9OworCisJLyoqCisJICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZAorCSAq
IEByZXR1cm4ge251bWJlcn0KKwkgKi8KKwllczNmRnJhZ0RlcHRoVGVzdHMuZXZhbE5vV3JpdGUg
PSBmdW5jdGlvbihjb29yZCkgeworCQlyZXR1cm4gMS4wIC0gKGNvb3JkWzBdICsgY29vcmRbMV0p
ICogMC41OworCX07CisKKwkvKioKKwkgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisJ
ICogQHJldHVybiB7bnVtYmVyfQorCSAqLworCWVzM2ZGcmFnRGVwdGhUZXN0cy5ldmFsRHluYW1p
Y0NvbmRpdGlvbmFsRGVwdGggPSBmdW5jdGlvbihjb29yZCkgeworCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIGQgPSAoY29vcmRbMF0gKyBjb29yZFsxXSkgKiAwLjU7CisJCWlmIChjb29yZFsx
XSA8IDAuNSkKKwkJCXJldHVybiBkOworCQllbHNlCisJCQlyZXR1cm4gMS4wIC0gZDsKKwl9Owor
CisJZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVu
Y3Rpb24oKSB7CisJCS8qKgorCQkgKiBAc3RydWN0CisJCSAqIEBjb25zdHJ1Y3RvcgorCQkgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorCQkgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworCQkgKiBAcGFy
YW0ge2VzM2ZGcmFnRGVwdGhUZXN0cy5FdmFsRnJhZ0RlcHRoRnVuY30gZXZhbEZ1bmMKKwkJICog
QHBhcmFtIHtzdHJpbmd9IGZyYWdTcmMKKwkJICovCisJCXZhciBDYXNlID0gZnVuY3Rpb24obmFt
ZSwgZGVzYywgZXZhbEZ1bmMsIGZyYWdTcmMpIHsKKwkJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0
aGlzLm5hbWUgPSBuYW1lOworCQkJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuZGVzYyA9IGRl
c2M7CisJCQkvKiogQHR5cGUge2VzM2ZGcmFnRGVwdGhUZXN0cy5FdmFsRnJhZ0RlcHRoRnVuY30g
Ki8gdGhpcy5ldmFsRnVuYyA9IGV2YWxGdW5jOworCQkJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRo
aXMuZnJhZ1NyYyA9IGZyYWdTcmM7CisJCX07CisKKwkJLyoqIEB0eXBlIHtBcnJheTxDYXNlPn0g
Ki8gdmFyIGNhc2VzID0gWworCQkJbmV3IENhc2UoJ25vX3dyaXRlJywgJ05vIGdsX0ZyYWdEZXB0
aCB3cml0ZScsIGVzM2ZGcmFnRGVwdGhUZXN0cy5ldmFsTm9Xcml0ZSwKKwkJCQknI3ZlcnNpb24g
MzAwIGVzXG4nICsKKwkJCQkndW5pZm9ybSBoaWdocCB2ZWM0IHVfY29sb3I7XG4nICsKKwkJCQkn
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisJCQkJ
J3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJCSd7XG4nICsKKwkJCQknCW9fY29sb3IgPSB1X2Nv
bG9yO1xuJyArCisJCQkJJ31cbicKKwkJCSksCisJCQluZXcgQ2FzZSgnY29uc3QnLCAnQ29uc3Qg
ZGVwdGggd3JpdGUnLCBlczNmRnJhZ0RlcHRoVGVzdHMuZXZhbENvbnN0RGVwdGgsCisJCQkJJyN2
ZXJzaW9uIDMwMCBlc1xuJyArCisJCQkJJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X2NvbG9yO1xuJyAr
CisJCQkJJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicg
KworCQkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCQkne1xuJyArCisJCQkJJwlvX2NvbG9y
ID0gdV9jb2xvcjtcbicgKworCQkJCScJZ2xfRnJhZ0RlcHRoID0gMC41O1xuJyArCisJCQkJJ31c
bicKKwkJCSksCisJCQluZXcgQ2FzZSgndW5pZm9ybScsICdVbmlmb3JtIGRlcHRoIHdyaXRlJywg
ZXMzZkZyYWdEZXB0aFRlc3RzLmV2YWxDb25zdERlcHRoLAorCQkJCScjdmVyc2lvbiAzMDAgZXNc
bicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcjtcbicgKworCQkJCSd1bmlmb3Jt
IGhpZ2hwIGZsb2F0IHVmX2hhbGY7XG4nICsKKwkJCQknbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0
IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisJCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKwor
CQkJCSd7XG4nICsKKwkJCQknCW9fY29sb3IgPSB1X2NvbG9yO1xuJyArCisJCQkJJwlnbF9GcmFn
RGVwdGggPSB1Zl9oYWxmO1xuJyArCisJCQkJJ31cbicKKwkJCSksCisJCQluZXcgQ2FzZSgnZHlu
YW1pYycsICdEeW5hbWljIGRlcHRoIHdyaXRlJywgZXMzZkZyYWdEZXB0aFRlc3RzLmV2YWxEeW5h
bWljRGVwdGgsCisJCQkJJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisJCQkJJ3VuaWZvcm0gaGlnaHAg
dmVjNCB1X2NvbG9yO1xuJyArCisJCQkJJ2luIGhpZ2hwIHZlYzIgdl9jb29yZDtcbicgKworCQkJ
CSdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsKKwkJ
CQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkJJ3tcbicgKworCQkJCScJb19jb2xvciA9IHVf
Y29sb3I7XG4nICsKKwkJCQknCWdsX0ZyYWdEZXB0aCA9ICh2X2Nvb3JkLngrdl9jb29yZC55KSow
LjU7XG4nICsKKwkJCQknfVxuJworCQkJKSwKKwkJCW5ldyBDYXNlKCdmcmFnY29vcmRfeicsICdn
bF9GcmFnRGVwdGggd3JpdGUgZnJvbSBnbF9GcmFnQ29vcmQueicsIGVzM2ZGcmFnRGVwdGhUZXN0
cy5ldmFsTm9Xcml0ZSwKKwkJCQknI3ZlcnNpb24gMzAwIGVzXG4nICsKKwkJCQkndW5pZm9ybSBo
aWdocCB2ZWM0IHVfY29sb3I7XG4nICsKKwkJCQknbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1l
ZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisJCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJ
CSd7XG4nICsKKwkJCQknCW9fY29sb3IgPSB1X2NvbG9yO1xuJyArCisJCQkJJwlnbF9GcmFnRGVw
dGggPSBnbF9GcmFnQ29vcmQuejtcbicgKworCQkJCSd9XG4nCisJCQkpLAorCQkJbmV3IENhc2Uo
J3VuaWZvcm1fY29uZGl0aW9uYWxfd3JpdGUnLCAnVW5pZm9ybSBjb25kaXRpb25hbCB3cml0ZScs
IGVzM2ZGcmFnRGVwdGhUZXN0cy5ldmFsRHluYW1pY0RlcHRoLAorCQkJCScjdmVyc2lvbiAzMDAg
ZXNcbicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcjtcbicgKworCQkJCSd1bmlm
b3JtIGJvb2wgdWJfdHJ1ZTtcbicgKworCQkJCSdpbiBoaWdocCB2ZWMyIHZfY29vcmQ7XG4nICsK
KwkJCQknbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyAr
CisJCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJCSd7XG4nICsKKwkJCQknCW9fY29sb3Ig
PSB1X2NvbG9yO1xuJyArCisJCQkJJwlpZiAodWJfdHJ1ZSlcbicgKworCQkJCScJCWdsX0ZyYWdE
ZXB0aCA9ICh2X2Nvb3JkLngrdl9jb29yZC55KSowLjU7XG4nICsKKwkJCQknfVxuJworCQkJKSwK
KwkJCW5ldyBDYXNlKCdkeW5hbWljX2NvbmRpdGlvbmFsX3dyaXRlJywgJ1VuaWZvcm0gY29uZGl0
aW9uYWwgd3JpdGUnLCBlczNmRnJhZ0RlcHRoVGVzdHMuZXZhbER5bmFtaWNDb25kaXRpb25hbERl
cHRoLAorCQkJCScjdmVyc2lvbiAzMDAgZXNcbicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIHZlYzQg
dV9jb2xvcjtcbicgKworCQkJCSd1bmlmb3JtIGJvb2wgdWJfdHJ1ZTtcbicgKworCQkJCSdpbiBo
aWdocCB2ZWMyIHZfY29vcmQ7XG4nICsKKwkJCQknbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1l
ZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisJCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJ
CSd7XG4nICsKKwkJCQknCW9fY29sb3IgPSB1X2NvbG9yO1xuJyArCisJCQkJJwltZWRpdW1wIGZs
b2F0IGQgPSAodl9jb29yZC54K3ZfY29vcmQueSkqMC41ZjtcbicgKworCQkJCScJaWYgKHZfY29v
cmQueSA8IDAuNSlcbicgKworCQkJCScJCWdsX0ZyYWdEZXB0aCA9IGQ7XG4nICsKKwkJCQknCWVs
c2VcbicgKworCQkJCScJCWdsX0ZyYWdEZXB0aCA9IDEuMCAtIGQ7XG4nICsKKwkJCQknfVxuJwor
CQkJKSwKKwkJCW5ldyBDYXNlKCd1bmlmb3JtX2xvb3Bfd3JpdGUnLCAnVW5pZm9ybSBsb29wIHdy
aXRlJywgZXMzZkZyYWdEZXB0aFRlc3RzLmV2YWxDb25zdERlcHRoLAorCQkJCScjdmVyc2lvbiAz
MDAgZXNcbicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcjtcbicgKworCQkJCSd1
bmlmb3JtIGludCB1aV90d287XG4nICsKKwkJCQkndW5pZm9ybSBoaWdocCBmbG9hdCB1Zl9mb3Vy
dGg7XG4nICsKKwkJCQknaW4gaGlnaHAgdmVjMiB2X2Nvb3JkO1xuJyArCisJCQkJJ2xheW91dChs
b2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworCQkJCSd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKwkJCQkne1xuJyArCisJCQkJJwlvX2NvbG9yID0gdV9jb2xvcjtcbicg
KworCQkJCScJZ2xfRnJhZ0RlcHRoID0gMC4wO1xuJyArCisJCQkJJwlmb3IgKGludCBpID0gMDsg
aSA8IHVpX3R3bzsgaSsrKVxuJyArCisJCQkJJwkJZ2xfRnJhZ0RlcHRoICs9IHVmX2ZvdXJ0aDtc
bicgKworCQkJCSd9XG4nCisJCQkpLAorCQkJbmV3IENhc2UoJ3dyaXRlX2luX2Z1bmN0aW9uJywg
J1VuaWZvcm0gbG9vcCB3cml0ZScsIGVzM2ZGcmFnRGVwdGhUZXN0cy5ldmFsRHluYW1pY0RlcHRo
LAorCQkJCScjdmVyc2lvbiAzMDAgZXNcbicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9j
b2xvcjtcbicgKworCQkJCSd1bmlmb3JtIGhpZ2hwIGZsb2F0IHVmX2hhbGY7XG4nICsKKwkJCQkn
aW4gaGlnaHAgdmVjMiB2X2Nvb3JkO1xuJyArCisJCQkJJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworCQkJCSd2b2lkIG15ZnVuYyAoaGlnaHAgdmVj
MiBjb29yZClcbicgKworCQkJCSd7XG4nICsKKwkJCQknCWdsX0ZyYWdEZXB0aCA9IChjb29yZC54
K2Nvb3JkLnkpKjAuNTtcbicgKworCQkJCSd9XG4nICsKKwkJCQkndm9pZCBtYWluICh2b2lkKVxu
JyArCisJCQkJJ3tcbicgKworCQkJCScJb19jb2xvciA9IHVfY29sb3I7XG4nICsKKwkJCQknCW15
ZnVuYyh2X2Nvb3JkKTtcbicgKworCQkJCSd9XG4nCisJCQkpCisJCV07CisKKwkJdmFyIHRlc3RH
cm91cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisKKwkJLy8gLndyaXRlCisJCS8q
KiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciB3cml0ZUdyb3VwID0gdGN1VGVz
dENhc2UubmV3VGVzdCgnd3JpdGUnLCAnZ2xfRnJhZ0RlcHRoIHdyaXRlIHRlc3RzJyk7CisJCXRl
c3RHcm91cC5hZGRDaGlsZCh3cml0ZUdyb3VwKTsKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
Y2FzZXMubGVuZ3RoOyBuZHgrKykKKwkJCXdyaXRlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFn
RGVwdGhUZXN0cy5GcmFnRGVwdGhXcml0ZUNhc2UoY2FzZXNbbmR4XS5uYW1lLCBjYXNlc1tuZHhd
LmRlc2MsIGNhc2VzW25keF0uZnJhZ1NyYywgY2FzZXNbbmR4XS5ldmFsRnVuYykpOworCisJCS8v
IC5jb21wYXJlCisJCS8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBjb21w
YXJlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdjb21wYXJlJywgJ2dsX0ZyYWdEZXB0aCB1
c2VkIHdpdGggZGVwdGggY29tcGFyaXNvbicpOworCQl0ZXN0R3JvdXAuYWRkQ2hpbGQoY29tcGFy
ZUdyb3VwKTsKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgY2FzZXMubGVuZ3RoOyBuZHgrKykK
KwkJCWNvbXBhcmVHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0
aENvbXBhcmVDYXNlKGNhc2VzW25keF0ubmFtZSwgY2FzZXNbbmR4XS5kZXNjLCBjYXNlc1tuZHhd
LmZyYWdTcmMsIGNhc2VzW25keF0uZXZhbEZ1bmMsIGdsLkxFU1MpKTsKKwl9OworCisgICAgLyoq
CisgICAgKiBSdW4gdGVzdAorICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBj
b250ZXh0CisgICAgKi8KKyAgICBlczNmRnJhZ0RlcHRoVGVzdHMucnVuID0gZnVuY3Rpb24oY29u
dGV4dCkgeworICAgIAlnbCA9IGNvbnRleHQ7CisgICAgCS8vU2V0IHVwIFRlc3QgUm9vdCBwYXJh
bWV0ZXJzCisgICAgCXZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAJc3RhdGUu
c2V0Um9vdChuZXcgZXMzZkZyYWdEZXB0aFRlc3RzLkZyYWdEZXB0aFRlc3RzKCkpOworCisgICAg
CS8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAg
CXNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgCWRl
c2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgIAl0cnkg
eworICAgIAkJLy9SdW4gdGVzdCBjYXNlcworICAgIAkJdGN1VGVzdENhc2UucnVuVGVzdENhc2Vz
KCk7CisgICAgCX0KKyAgICAJY2F0Y2ggKGVycikgeworICAgIAkJdGVzdEZhaWxlZE9wdGlvbnMo
J0ZhaWxlZCB0byBlczNmRnJhZ0RlcHRoVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgIAkJ
dGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgIAl9CisgICAgfTsKKworfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI3ZWVlN2E2ZTI1Nzlk
Mzc5NDNjOTAzNTNkMDZmN2MwYjFmNDA5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9l
czNmRnJhZ21lbnRPdXRwdXRUZXN0cy5qcwpAQCAtMCwwICsxLDEzOTggQEAKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0
aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Cisg
KgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1v
bi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5v
cGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rl
c3RVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBlczNmRnJhZ21lbnRP
dXRwdXRUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHM7Cit2
YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsK
K3ZhciBlczNmRmJvVGVzdFV0aWwgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRpbDsK
K3ZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFy
IGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIgdGN1VGVz
dENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwordmFyIGdsdVRleHR1cmVVdGls
ID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKK3ZhciB0Y3VUZXh0dXJlID0gZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGg7Cit2YXIgdGN1SW1hZ2VDb21wYXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VJ
bWFnZUNvbXBhcmU7CisKKyAgICAvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICov
IHZhciBnbDsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlm
ICgheCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVj
LiBDb25zdHJ1Y3RzIHRoZSBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjIG9iamVj
dAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5HTGVudW19IGZvcm1hdF8KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhfCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodF8KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2Ft
cGxlc18KKyAgICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjID0g
ZnVuY3Rpb24oZm9ybWF0Xywgd2lkdGhfLCBoZWlnaHRfLCBzYW1wbGVzXykgeworICAgICAgICB0
aGlzLmZvcm1hdCA9IGZvcm1hdF87CisgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aF87CisgICAg
ICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0XzsKKyAgICAgICAgdGhpcy5zYW1wbGVzID0gc2FtcGxl
c187CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZy
YWdtZW50T3V0cHV0LiBDb25zdHJ1Y3RzIHRoZSBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFn
bWVudE91dHB1dCBvYmplY3QKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGVfCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGls
LnByZWNpc2lvbn0gcHJlY2lzaW9uXworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2NhdGlvbl8K
KyAgICAgKiBAcGFyYW0ge251bWJlcj19IGFycmF5TGVuZ3RoXworICAgICAqLworICAgIGVzM2ZG
cmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0ID0gZnVuY3Rpb24odHlwZV8sIHByZWNp
c2lvbl8sIGxvY2F0aW9uXywgYXJyYXlMZW5ndGhfKSB7CisgICAgICAgIHRoaXMudHlwZSA9IHR5
cGVfOworICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHByZWNpc2lvbl87CisgICAgICAgIHRoaXMu
bG9jYXRpb24gPSBsb2NhdGlvbl87CisgICAgICAgIHRoaXMuYXJyYXlMZW5ndGggPSBhcnJheUxl
bmd0aF8gfHwgMDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdtZW50T3V0cHV0
VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlLiBDb25zdHJ1Y3RzIHRoZSBlczNmRnJhZ21lbnRPdXRw
dXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2Ugb2JqZWN0CisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICogQHBh
cmFtIHtBcnJheTxlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjPn0gZmJvU3BlYwor
ICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRw
dXQ+fSBvdXRwdXRzCisgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgY3VycmVudGx5IG1vZGlm
aWVkIG9iamVjdAorICAgICAqLworICAgIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50
T3V0cHV0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBmYm9TcGVjLCBvdXRwdXRz
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3Jp
cHRpb24pOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LkJ1ZmZlclNwZWM+fSAqLyB0aGlzLm1fZmJvU3BlYyA9IGZib1NwZWM7CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQ+fSAqLyB0
aGlzLm1fb3V0cHV0cyA9IG91dHB1dHM7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisgICAgICAgIC8q
KiBAdHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdGhpcy5tX2ZyYW1lYnVmZmVyID0gbnVsbDsK
KworICAgICAgICAvKiogQHR5cGUge1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB0aGlzLm1fcmVuZGVy
YnVmZmVyID0gbnVsbDsKKyAgICB9OworCisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJh
Z21lbnRPdXRwdXRDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVx
cFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91
dHB1dENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMu
RnJhZ21lbnRPdXRwdXRDYXNlOworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdtZW50T3V0cHV0
VGVzdHMuY3JlYXRlUHJvZ3JhbS4gUmV0dXJucyBhIFNoYWRlclByb2dyYW0gb2JqZWN0CisgICAg
ICogQHBhcmFtIHtBcnJheTxlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dD59
IG91dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19
IHByb2dyYW0KKyAgICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5jcmVhdGVQcm9n
cmFtID0gZnVuY3Rpb24ob3V0cHV0cykgeworCisgICAgICAgIHZhciB2dHggPSAnJzsKKyAgICAg
ICAgdmFyIGZyYWcgPSAnJzsKKworICAgICAgICB2dHggPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsg
J2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbic7CisgICAgICAgIGZyYWcgPSAnI3ZlcnNpb24g
MzAwIGVzXG4nOworCisgICAgLyoqIEB0eXBlIHtlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFn
bWVudE91dHB1dH0gKi8gdmFyIG91dHB1dCA9IG51bGw7CisgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB2YXIgaXNBcnJheSA9IGZhbHNlOworICAgICAvLyBJbnB1dC1vdXRwdXQgZGVjbGFyYXRp
b25zLgorICAgICAgICBmb3IgKHZhciBvdXROZHggPSAwOyBvdXROZHggPCBvdXRwdXRzLmxlbmd0
aDsgb3V0TmR4KyspIHsKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dHNbb3V0TmR4XTsKKyAg
ICAgICAgICAgIGlzQXJyYXkgPSBvdXRwdXQuYXJyYXlMZW5ndGggPiAwOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB0eXBlTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVOYW1lKG91dHB1dC50eXBlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgcHJlY05hbWUgPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUob3V0cHV0LnBy
ZWNpc2lvbik7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0Zsb2F0
ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZlYyhvdXRwdXQudHlwZSk7CisgICAg
ICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGludGVycCA9IGlzRmxvYXQgPyAnc21v
b3RoJyA6ICdmbGF0JzsKKworICAgICAgICAgICAgaWYgKGlzQXJyYXkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBlbGVtTmR4ID0gMDsgZWxlbU5keCA8IG91dHB1dC5hcnJheUxlbmd0aDsg
ZWxlbU5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZ0eCArPSAnaW4gJyArIHByZWNOYW1l
ICsgJyAnICsgdHlwZU5hbWUgKyAnIGluJyArIG91dE5keCArICdfJyArIGVsZW1OZHggKyAnO1xu
JyArCisgICAgICAgICAgICAgICAgICAgIGludGVycCArICcgb3V0ICcgKyBwcmVjTmFtZSArICcg
JyArIHR5cGVOYW1lICsgJyB2YXInICsgb3V0TmR4ICsgJ18nICsgZWxlbU5keCArICc7XG4nOwor
ICAgICAgICAgICAgICAgICAgICBmcmFnICs9IGludGVycCArICcgaW4gJyArIHByZWNOYW1lICsg
JyAnICsgdHlwZU5hbWUgKyAnIHZhcicgKyBvdXROZHggKyAnXycgKyBlbGVtTmR4ICsgJztcbic7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZyYWcgKz0gJ2xheW91dChsb2Nh
dGlvbiA9ICcgKyBvdXRwdXQubG9jYXRpb24gKyAnKSBvdXQgJyArIHByZWNOYW1lICsgJyAnICsg
dHlwZU5hbWUgKyAnIG91dCcgKyBvdXROZHggKyAnWycgKyBvdXRwdXQuYXJyYXlMZW5ndGggKyAn
XTtcbic7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZ0eCArPSAnaW4g
JyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIGluJyArIG91dE5keCArICc7XG4nICsK
KyAgICAgICAgICAgICAgICBpbnRlcnAgKyAnIG91dCAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBl
TmFtZSArICcgdmFyJyArIG91dE5keCArICc7XG4nOworICAgICAgICAgICAgICAgIGZyYWcgKz0g
aW50ZXJwICsgJyBpbiAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcgdmFyJyArIG91
dE5keCArICc7XG4nICsKKyAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gJyArIG91
dHB1dC5sb2NhdGlvbiArICcpIG91dCAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcg
b3V0JyArIG91dE5keCArICc7XG4nOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgdnR4ICs9ICdcbnZvaWQgbWFpbigpXG57XG4nOworICAgICAgICBmcmFnICs9ICdcbnZvaWQg
bWFpbigpXG57XG4nOworCisgICAgICAgIHZ0eCArPSAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjtcbic7CisKKyAgICAgICAgLy8gQ29weSBib2R5CisgICAgICAgIGZvciAodmFyIG91dE5keCA9
IDA7IG91dE5keCA8IG91dHB1dHMubGVuZ3RoOyBvdXROZHgrKykgeworICAgICAgICAgICAgb3V0
cHV0ID0gb3V0cHV0c1tvdXROZHhdOworICAgICAgICAgICAgaXNBcnJheSA9IG91dHB1dC5hcnJh
eUxlbmd0aCA+IDA7CisKKyAgICAgICAgICAgIGlmIChpc0FycmF5KSB7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgZWxlbU5keCA9IDA7IGVsZW1OZHggPCBvdXRwdXQuYXJyYXlMZW5ndGg7IGVs
ZW1OZHgrKykgeworICAgICAgICAgICAgICAgICAgICB2dHggKz0gJ1x0dmFyJyArIG91dE5keCAr
ICdfJyArIGVsZW1OZHggKyAnID0gaW4nICsgb3V0TmR4ICsgJ18nICsgZWxlbU5keCArICc7XG4n
OworICAgICAgICAgICAgICAgICAgICBmcmFnICs9ICdcdG91dCcgKyBvdXROZHggKyAnWycgKyBl
bGVtTmR4ICsgJ10gPSB2YXInICsgb3V0TmR4ICsgJ18nICsgZWxlbU5keCArICc7XG4nOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdnR4
ICs9ICdcdHZhcicgKyBvdXROZHggKyAnID0gaW4nICsgb3V0TmR4ICsgJztcbic7CisgICAgICAg
ICAgICAgICAgZnJhZyArPSAnXHRvdXQnICsgb3V0TmR4ICsgJyA9IHZhcicgKyBvdXROZHggKyAn
O1xuJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSAnfVxuJzsK
KyAgICAgICAgZnJhZyArPSAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8KKyAgICAgICAgdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFn
U291cmNlcyh2dHgsIGZyYWcpKTsKKyAgICAgICAgcmV0dXJuIHByb2dyYW07CisgICAgfTsKKwor
ICAgIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZS5wcm90b3R5cGUu
aW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBDaGVjayB0aGF0IGFsbCBhdHRhY2htZW50
cyBhcmUgc3VwcG9ydGVkCisgICAgICAgIGZvciAodmFyIGl0ZXIgPSAwOyBpdGVyIDwgdGhpcy5t
X2Zib1NwZWMubGVuZ3RoOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIGlmICghZ2x1VGV4dHVyZVV0
aWwuaXNTaXplZEZvcm1hdENvbG9yUmVuZGVyYWJsZSh0aGlzLm1fZmJvU3BlY1tpdGVyXS5mb3Jt
YXQpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgYXR0YWNo
bWVudCBmb3JtYXQnKTsKKyAgICAgICAgfQorCisgICAgICAgIERFX0FTU0VSVCghdGhpcy5tX3By
b2dyYW0pOworICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LmNyZWF0ZVByb2dyYW0odGhpcy5tX291dHB1dHMpOworCisgICAgICAgLy8gbG9nIDw8ICptX3By
b2dyYW07CisgICAgICAgIGlmICghdGhpcy5tX3Byb2dyYW0uaXNPaygpKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdDb21waWxlIGZhaWxlZC4gUHJvZ3JhbSBubyBjcmVhdGVkJyk7CisK
KyAgICAgICAgLyoKKyAgICAgICAgLy8gUHJpbnQgcmVuZGVyIHRhcmdldCBpbmZvIHRvIGxvZy4K
KyAgICAgICAgbG9nIDw8IFRlc3RMb2c6OlNlY3Rpb24oIkZyYW1lYnVmZmVyIiwgIkZyYW1lYnVm
ZmVyIGNvbmZpZ3VyYXRpb24iKTsKKworICAgICAgICBmb3IgKGludCBuZHggPSAwOyBuZHggPCAo
aW50KW1fZmJvU3BlYy5zaXplKCk7IG5keCsrKQorICAgICAgICAgICAgbG9nIDw8IFRlc3RMb2c6
Ok1lc3NhZ2UgPDwgIkNPTE9SX0FUVEFDSE1FTlQiIDw8IG5keCA8PCAiOiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBnbHU6OmdldFBpeGVsRm9ybWF0U3RyKG1fZmJv
U3BlY1tuZHhdLmZvcm1hdCkgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgbV9mYm9TcGVjW25keF0ud2lkdGggPDwgIngiIDw8IG1fZmJvU3BlY1tuZHhdLmhl
aWdodCA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBtX2Zi
b1NwZWNbbmR4XS5zYW1wbGVzIDw8ICIgc2FtcGxlcyIKKyAgICAgICAgICAgICAgICA8PCBUZXN0
TG9nOjpFbmRNZXNzYWdlOworCisgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpFbmRTZWN0aW9uOyov
CisKKyAgICAgICAgLy8gQ3JlYXRlIGZyYW1lYnVmZmVyLgorICAgICAgICB0aGlzLm1fZnJhbWVi
dWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIHRoaXMubV9mcmFtZWJ1ZmZlcik7CisKKyAgICAgICAgZm9yICh2
YXIgYnVmTmR4ID0gMDsgYnVmTmR4IDwgLyogbV9yZW5kZXJidWZmZXJzLnNpemUoKSAqLyB0aGlz
Lm1fZmJvU3BlYy5sZW5ndGg7IGJ1Zk5keCsrKSB7CisgICAgICAgICAgICB0aGlzLm1fcmVuZGVy
YnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICAvKiogQHR5cGUg
e2VzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkJ1ZmZlclNwZWN9ICovIHZhciBidWZTcGVjID0gdGhp
cy5tX2Zib1NwZWNbYnVmTmR4XTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgYXR0YWNobWVudCA9IGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgYnVmTmR4OworCisgICAgICAg
ICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX3JlbmRlcmJ1
ZmZlcik7CisKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShn
bC5SRU5ERVJCVUZGRVIsIGJ1ZlNwZWMuc2FtcGxlcywgYnVmU3BlYy5mb3JtYXQsIGJ1ZlNwZWMu
d2lkdGgsIGJ1ZlNwZWMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIHRoaXMu
bV9yZW5kZXJidWZmZXIpOworICAgICAgICB9CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgZmJvU3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
Uik7CisKKyAgICAgICAgaWYgKGZib1N0YXR1cyA9PSBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRnJhbWVidWZmZXIgbm90IHN1cHBvcnRl
ZCcpOworICAgICAgICBlbHNlIGlmIChmYm9TdGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29tcGxldGUgZnJhbWVidWZmZXIn
KTsKKyAgICAgICAgICAgIC8vIHRocm93IHRjdTo6VGVzdEVycm9yKChzdHJpbmcoIkluY29tcGxl
dGUgZnJhbWVidWZmZXI6ICIpICsgZ2x1OjpnZXRGcmFtZWJ1ZmZlclN0YXR1c1N0cihmYm9TdGF0
dXMpLCAiIiwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgICAgICAvLyBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7IC8vIFRPRE86IG1heWJlIG5lZWRlZD8KKyAg
ICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICB9Owor
CisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlLnByb3RvdHlw
ZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50PworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXRNaW5TaXpl
LgorICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuQnVmZmVyU3Bl
Yz59IGZib1NwZWMKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBtaW5TaXplCisgICAg
ICovCisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuZ2V0TWluU2l6ZSA9IGZ1bmN0aW9uKGZi
b1NwZWMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgbWluU2l6
ZSA9IFsweDdmZmZmZmZmLCAweDdmZmZmZmZmXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBmYm9TcGVjLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBtaW5TaXplWzBdID0gTWF0aC5t
aW4obWluU2l6ZVswXSwgZmJvU3BlY1tpXS53aWR0aCk7CisgICAgICAgICAgICBtaW5TaXplWzFd
ID0gTWF0aC5taW4obWluU2l6ZVsxXSwgZmJvU3BlY1tpXS5oZWlnaHQpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtaW5TaXplOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJh
Z21lbnRPdXRwdXRUZXN0cy5nZXROdW1JbnB1dFZlY3RvcnMuIFJldHVybnMgdGhlIGxlbmd0aCBv
ZiB0aGUgYXJyYXkgb2YgYWxsIHRoZSBvdXRwdXRzIChlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5G
cmFnbWVudE91dHB1dCBvYmplY3QpCisgICAgICogQHBhcmFtIHtBcnJheTxlczNmRnJhZ21lbnRP
dXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dD59IG91dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9IG51bVZlY3MKKyAgICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXROdW1J
bnB1dFZlY3RvcnMgPSBmdW5jdGlvbihvdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbnVtVmVjcyA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0
cHV0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG51bVZlY3MgKz0gKG91dHB1dHNbaV0uYXJy
YXlMZW5ndGggPiAwID8gb3V0cHV0c1tpXS5hcnJheUxlbmd0aCA6IDEpOworICAgICAgICByZXR1
cm4gbnVtVmVjczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdtZW50T3V0cHV0
VGVzdHMuZ2V0RmxvYXRSYW5nZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNp
b259IHByZWNpc2lvbgorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IFZlYzIKKyAgICAg
Ki8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXRGbG9hdFJhbmdlID0gZnVuY3Rpb24o
cHJlY2lzaW9uKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICov
CisgICAgICAgIHZhciByYW5nZXMgPSAvLyBWZWMyCisgICAgICAgIFsKKyAgICAgICAgICAgIFst
Mi4wLCAyLjBdLAorICAgICAgICAgICAgWy0xNjAwMC4wLCAxNjAwMC4wXSwKKyAgICAgICAgICAg
IFstMWUzNSwgMWUzNV0KKyAgICAgICAgXTsKKyAgICAgICAgLy8gREVfU1RBVElDX0FTU0VSVChE
RV9MRU5HVEhfT0ZfQVJSQVkocmFuZ2VzKSA9PSBnbHU6OlBSRUNJU0lPTl9MQVNUKTsKKyAgICAg
ICAgLy8gREVfQVNTRVJUKGRlOjppbkJvdW5kczxpbnQ+KHByZWNpc2lvbiwgMCwgREVfTEVOR1RI
X09GX0FSUkFZKHJhbmdlcykpKTsKKyAgICAgICAgcmV0dXJuIHJhbmdlc1twcmVjaXNpb25dOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXRJbnRS
YW5nZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgor
ICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59IElWZWMyCisgICAgICovCisgICAgZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMuZ2V0SW50UmFuZ2UgPSBmdW5jdGlvbihwcmVjaXNpb24pIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8KKyAgICAgICAgdmFyIHJh
bmdlcyA9IC8vIElWZWMyCisgICAgICAgIFsKKyAgICAgICAgICAgIFstKDEgPDwgNyksICgxIDw8
IDcpIC0gMV0sCisgICAgICAgICAgICBbLSgxIDw8IDE1KSwgKDEgPDwgMTUpIC0gMV0sCisgICAg
ICAgICAgICBbLTB4ODAwMDAwMDAsIDB4N2ZmZmZmZmZdCisgICAgICAgIF07CisgICAgICAgIC8v
IERFX1NUQVRJQ19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHJhbmdlcykgPT0gZ2x1OjpQUkVD
SVNJT05fTEFTVCk7CisgICAgICAgIC8vIERFX0FTU0VSVChkZTo6aW5Cb3VuZHM8aW50PihwcmVj
aXNpb24sIDAsIERFX0xFTkdUSF9PRl9BUlJBWShyYW5nZXMpKSk7CisgICAgICAgIHJldHVybiBy
YW5nZXNbcHJlY2lzaW9uXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdtZW50
T3V0cHV0VGVzdHMuZ2V0VWludFJhbmdlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnBy
ZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gVVZlYzIK
KyAgICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXRVaW50UmFuZ2UgPSBmdW5j
dGlvbihwcmVjaXNpb24pIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+
Pn0gKi8KKyAgICAgICAgdmFyIHJhbmdlcyA9IC8vIFVWZWMyCisgICAgICAgIFsKKyAgICAgICAg
ICAgIFswLCAoMSA8PCA4KSAtIDFdLAorICAgICAgICAgICAgWzAsICgxIDw8IDE2KSAtIDFdLAor
ICAgICAgICAgICAgWzAsIDB4ZmZmZmZmZmZdCisgICAgICAgIF07CisgICAgICAgIC8vIERFX1NU
QVRJQ19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHJhbmdlcykgPT0gZ2x1OjpQUkVDSVNJT05f
TEFTVCk7CisgICAgICAgIC8vIERFX0FTU0VSVChkZTo6aW5Cb3VuZHM8aW50PihwcmVjaXNpb24s
IDAsIERFX0xFTkdUSF9PRl9BUlJBWShyYW5nZXMpKSk7CisgICAgICAgIHJldHVybiByYW5nZXNb
cHJlY2lzaW9uXTsKKworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRw
dXRUZXN0cy5yZWFkVmVjNAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcHRyCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUNvbXBv
bmVudHMKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBWZWM0CisgICAgICovCisgICAg
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucmVhZFZlYzQgPSBmdW5jdGlvbihwdHIsIGluZGV4LCBu
dW1Db21wb25lbnRzKSB7CisgICAgICAgIERFX0FTU0VSVChudW1Db21wb25lbnRzID49IDEpOwor
ICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICAgIHB0cltpbmRleCArIDBdLAorICAgICAg
ICAgICAgICAgIG51bUNvbXBvbmVudHMgPj0gMiA/IHB0cltpbmRleCArIDFdIDogMC4wLAorICAg
ICAgICAgICAgICAgIG51bUNvbXBvbmVudHMgPj0gMyA/IHB0cltpbmRleCArIDJdIDogMC4wLAor
ICAgICAgICAgICAgICAgIG51bUNvbXBvbmVudHMgPj0gNCA/IHB0cltpbmRleCArIDNdIDogMC4w
CisgICAgICAgICAgICAgICAgXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMucmVhZElWZWM0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBw
dHIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQ29tcG9uZW50cworICAgICAqIEByZXR1cm4g
e0FycmF5PG51bWJlcj59IElWZWM0CisgICAgICovCisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVz
dHMucmVhZElWZWM0ID0gZnVuY3Rpb24ocHRyLCBpbmRleCwgbnVtQ29tcG9uZW50cykgeworICAg
ICAgICBERV9BU1NFUlQobnVtQ29tcG9uZW50cyA+PSAxKTsKKyAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgICAgICBwdHJbaW5kZXggKyAwXSwKKyAgICAgICAgICAgICAgICBudW1Db21wb25l
bnRzID49IDIgPyBwdHJbaW5kZXggKyAxXSA6IDAsCisgICAgICAgICAgICAgICAgbnVtQ29tcG9u
ZW50cyA+PSAzID8gcHRyW2luZGV4ICsgMl0gOiAwLAorICAgICAgICAgICAgICAgIG51bUNvbXBv
bmVudHMgPj0gNCA/IHB0cltpbmRleCArIDNdIDogMAorICAgICAgICAgICAgICAgIF07CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJlbmRlckZsb2F0
UmVmZXJlbmNlCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBk
c3QKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZ3JpZFdpZHRoCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGdyaWRIZWlnaHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQ29tcG9uZW50cworICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmVydGljZXMKKyAgICAgKi8KKyAgICBlczNmRnJh
Z21lbnRPdXRwdXRUZXN0cy5yZW5kZXJGbG9hdFJlZmVyZW5jZSA9IGZ1bmN0aW9uKGRzdCwgZ3Jp
ZFdpZHRoLCBncmlkSGVpZ2h0LCBudW1Db21wb25lbnRzLCB2ZXJ0aWNlcykgeworCisgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzU1JHQiA9IGRzdC5nZXRGb3JtYXQoKS5vcmRl
ciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCIHx8IGRzdC5nZXRGb3JtYXQoKS5vcmRl
ciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCQTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBjZWxsVyA9IGRzdC5nZXRXaWR0aCgpIC8gKGdyaWRXaWR0aCAtIDEpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNlbGxIID0gZHN0LmdldEhlaWdodCgp
IC8gKGdyaWRIZWlnaHQgLSAxKTsKKworICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGRzdC5n
ZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGRzdC5n
ZXRXaWR0aCgpOyB4KyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGNlbGxYID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IoeCAvIGNlbGxXKSwgMCwgZ3JpZFdp
ZHRoIC0gMik7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjZWxs
WSA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKHkgLyBjZWxsSCksIDAsIGdyaWRIZWlnaHQgLSAy
KTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhmID0gKHggLSBj
ZWxsWCAqIGNlbGxXICsgMC41KSAvIGNlbGxXOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgeWYgPSAoeSAtIGNlbGxZICogY2VsbEggKyAwLjUpIC8gY2VsbEg7CisK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2MDAgPSBl
czNmRnJhZ21lbnRPdXRwdXRUZXN0cy5yZWFkVmVjNCh2ZXJ0aWNlcywgKChjZWxsWSArIDApICog
Z3JpZFdpZHRoICsgY2VsbFggKyAwKSAqIG51bUNvbXBvbmVudHMsIG51bUNvbXBvbmVudHMpOyAv
LyBWZWM0CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
djAxID0gZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucmVhZFZlYzQodmVydGljZXMsICgoY2VsbFkg
KyAxKSAqIGdyaWRXaWR0aCArIGNlbGxYICsgMCkgKiBudW1Db21wb25lbnRzLCBudW1Db21wb25l
bnRzKTsgLy8gVmVjNAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHYxMCA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJlYWRWZWM0KHZlcnRpY2VzLCAo
KGNlbGxZICsgMCkgKiBncmlkV2lkdGggKyBjZWxsWCArIDEpICogbnVtQ29tcG9uZW50cywgbnVt
Q29tcG9uZW50cyk7IC8vIFZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciB2MTEgPSBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5yZWFkVmVjNCh2ZXJ0
aWNlcywgKChjZWxsWSArIDEpICogZ3JpZFdpZHRoICsgY2VsbFggKyAxKSAqIG51bUNvbXBvbmVu
dHMsIG51bUNvbXBvbmVudHMpOyAvLyBWZWM0CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovIHZhciB0cmkgPSB4ZiArIHlmID49IDEuMDsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2MCA9IHRyaSA/IHYxMSA6IHYwMDsgLy8g
VmVjNCYKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2
MSA9IHRyaSA/IHYwMSA6IHYxMDsgLy8gVmVjNCYKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciB2MiA9IHRyaSA/IHYxMCA6IHYwMTsgLy8gVmVjNCYKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHMgPSB0cmkgPyAxLjAgLSB4
ZiA6IHhmOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdCA9IHRy
aSA/IDEuMCAtIHlmIDogeWY7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgY29sb3IgPSBkZU1hdGguYWRkKHYwLCBkZU1hdGguYWRkKGRlTWF0aC5tdWx0
aXBseSgoZGVNYXRoLnN1YnRyYWN0KHYxLCB2MCkpLCBbcywgcywgcywgc10pLCBkZU1hdGgubXVs
dGlwbHkoKGRlTWF0aC5zdWJ0cmFjdCh2MiwgdjApKSwgW3QsIHQsIHQsIHRdKSkpOyAvLyBWZWM0
CisKKyAgICAgICAgICAgICAgICBkc3Quc2V0UGl4ZWwoaXNTUkdCID8gdGN1VGV4dHVyZVV0aWwu
bGluZWFyVG9TUkdCKGNvbG9yKSA6IGNvbG9yLCB4LCB5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5y
ZW5kZXJJbnRSZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3N9IGRzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBncmlkV2lkdGgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gZ3JpZEhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1Db21wb25l
bnRzCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2ZXJ0aWNlcworICAgICAqLworICAg
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJlbmRlckludFJlZmVyZW5jZSA9IGZ1bmN0aW9uKGRz
dCwgZ3JpZFdpZHRoLCBncmlkSGVpZ2h0LCBudW1Db21wb25lbnRzLCB2ZXJ0aWNlcykgeworCisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY2VsbFcgPSBkc3QuZ2V0V2lkdGgoKSAv
IChncmlkV2lkdGggLSAxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjZWxs
SCA9IGRzdC5nZXRIZWlnaHQoKSAvIChncmlkSGVpZ2h0IC0gMSk7CisKKyAgICAgICAgZm9yICh2
YXIgeSA9IDA7IHkgPCBkc3QuZ2V0SGVpZ2h0KCk7IHkrKykgeworICAgICAgICAgICAgZm9yICh2
YXIgeCA9IDA7IHggPCBkc3QuZ2V0V2lkdGgoKTsgeCsrKSB7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBjZWxsWCA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKHgg
LyBjZWxsVyksIDAsIGdyaWRXaWR0aCAtIDIpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgY2VsbFkgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcih5IC8gY2VsbEgp
LCAwLCBncmlkSGVpZ2h0IC0gMik7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgYyA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJlYWRJVmVjNCh2ZXJ0
aWNlcywgKGNlbGxZICogZ3JpZFdpZHRoICsgY2VsbFggKyAxKSAqIG51bUNvbXBvbmVudHMsIG51
bUNvbXBvbmVudHMpOyAvLyBJVmVjNAorCisgICAgICAgICAgICAgICAgZHN0LnNldFBpeGVsSW50
KGMsIHgsIHkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnNfc3dpenpsZXMKKyAgICAgKiBAcmV0dXJu
IHtBcnJheTxBcnJheTxudW1iZXI+Pn0KKyAgICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRU
ZXN0cy5zX3N3aXp6bGVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtYXRfc3dpenpsZXMg
PSBbCisgICAgICAgICAgICBbMCwgMSwgMiwgM10sCisgICAgICAgICAgICBbMSwgMiwgMywgMF0s
CisgICAgICAgICAgICBbMiwgMywgMCwgMV0sCisgICAgICAgICAgICBbMywgMCwgMSwgMl0sCisg
ICAgICAgICAgICBbMywgMiwgMSwgMF0sCisgICAgICAgICAgICBbMiwgMSwgMCwgM10sCisgICAg
ICAgICAgICBbMSwgMCwgMywgMl0sCisgICAgICAgICAgICBbMCwgMywgMiwgMV0KKyAgICAgICAg
XTsKKworICAgICAgICByZXR1cm4gbWF0X3N3aXp6bGVzOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5zd2l6emxlVmVjLiBSZXR1cm5zIGFuIEFycmF5
IGZyb20gYSBwb3NpdGlvbiBjb250YWluZWQgaW4gdGhlIEFycmF5IGVzM2ZGcmFnbWVudE91dHB1
dFRlc3RzLnNfc3dpenpsZXMgW10KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZlYwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzd3pOZHgKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fSBTd2l6emxlZCBhcnJheQorICAgICAqLworICAgIGVzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LnN3aXp6bGVWZWMgPSBmdW5jdGlvbih2ZWMsIHN3ek5keCkgeworICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIHN3eiA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnNfc3dpenps
ZXMoKVtzd3pOZHggJSBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5zX3N3aXp6bGVzKCkubGVuZ3Ro
XTsKKworICAgICAgICByZXR1cm4gZGVNYXRoLnN3aXp6bGUodmVjLCBzd3opOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5BdHRhY2htZW50RGF0YSBz
dHJ1Y3QgY2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9
CisgICAgICovCisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuQXR0YWNobWVudERhdGEgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0
dXJlLlRleHR1cmVGb3JtYXR9ICovIGZvcm1hdDogbnVsbCwgLy8hPCBBY3R1YWwgZm9ybWF0IG9m
IGF0dGFjaG1lbnQuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSAqLyByZWZlcmVuY2VGb3JtYXQ6IG51bGwsIC8vITwgVXNlZCBmb3IgcmVmZXJlbmNlIHJlbmRl
cmluZy4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovIHJl
YWRGb3JtYXQ6IG51bGwsCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBudW1Xcml0dGVu
Q2hhbm5lbHM6IDAsCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259
ICovIG91dFByZWNpc2lvbjogZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1As
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJ9ICovIHJlbmRlcmVkRGF0YTogbnVsbCwK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gcmVmZXJlbmNlRGF0YTogbnVsbAor
ICAgICAgICB9OworICAgIH07CisKKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVu
dE91dHB1dENhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8g
Q29tcHV0ZSBncmlkIHNpemUgJiBpbmRleCBsaXN0LgorICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1pbkNlbGxTaXplID0gODsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgbWluQnVmU2l6ZSA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLmdldE1pblNp
emUodGhpcy5tX2Zib1NwZWMpOyAvLyBJVmVjMgorICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGdyaWRXaWR0aCA9IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKG1pbkJ1ZlNpemVbMF0g
LyBtaW5DZWxsU2l6ZSksIDEsIDI1NSkgKyAxOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGdyaWRIZWlnaHQgPSBkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihtaW5CdWZTaXplWzFd
IC8gbWluQ2VsbFNpemUpLCAxLCAyNTUpICsgMTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBudW1WZXJ0aWNlcyA9IGdyaWRXaWR0aCAqIGdyaWRIZWlnaHQ7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtUXVhZHMgPSAoZ3JpZFdpZHRoIC0gMSkgKiAoZ3Jp
ZEhlaWdodCAtIDEpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUluZGlj
ZXMgPSBudW1RdWFkcyAqIDY7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBu
dW1JbnB1dFZlY3MgPSBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5nZXROdW1JbnB1dFZlY3RvcnMo
dGhpcy5tX291dHB1dHMpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+
fSAqLyB2YXIgaW5wdXRzID0gW107IC8vIG9yaWdpbmFsbHkgdmVjdG9yPHZlY3RvcjxkZVVpbnQz
Mj4KKworICAgICAgICBmb3IgKHZhciBpbnB1dE5keCA9IDA7IGlucHV0TmR4IDwgbnVtSW5wdXRW
ZWNzOyBpbnB1dE5keCsrKQorICAgICAgICAgICAgaW5wdXRzW2lucHV0TmR4XSA9IFtdOyAvLyBp
bnB1dHMubGVuZ3RoID0gbnVtSW5wdXRWZWNzOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIHBvc2l0aW9ucyA9IFtdOyAvLyBvcmlnaW5hbGx5IHZlY3RvcjxmbG9h
dD4KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kaWNlcyA9IFtd
OyAvLyBvcmlnaW5hbGx5IHZlY3RvcjxkZVVpbnQxNj4KKworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHJlYWRBbGlnbm1lbnQgPSA0OworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHZpZXdwb3J0VyA9IG1pbkJ1ZlNpemVbMF07CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgdmlld3BvcnRIID0gbWluQnVmU2l6ZVsxXTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBudW1BdHRhY2htZW50cyA9IHRoaXMubV9mYm9TcGVjLmxlbmd0
aDsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkcmF3QnVmZmVy
cyA9IFtdOyAvLyBvcmlnaW5hbGx5IHZlY3RvcjxkZVVpbnQzMj4KKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5BdHRhY2htZW50RGF0YT59ICovIHZhciBh
dHRhY2htZW50cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGF0dGFj
aG1lbnRXOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGF0dGFjaG1lbnRIOwor
CisgICAgICAgIC8vIEluaXRpYWxpemUgYXR0YWNobWVudCBkYXRhLgorICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCBudW1BdHRhY2htZW50czsgbmR4KyspIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgdGV4Rm10ID0gZ2x1VGV4
dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZmJvU3BlY1tuZHhdLmZvcm1hdCk7
CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzc30g
Ki8gdmFyIGNobkNsYXNzID0gdGN1VGV4dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKHRleEZt
dC50eXBlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzRml4ZWRQ
b2ludCA9IChjaG5DbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVE
X0ZJWEVEX1BPSU5UIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNobkNsYXNzID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5u
ZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lOVCk7CisKKyAgICAgICAgICAgIC8vIFxub3RlIEZp
eGVkLXBvaW50IGZvcm1hdHMgdXNlIGZsb2F0IHJlZmVyZW5jZSB0byBlbmFibGUgbW9yZSBhY2N1
cmF0ZSByZXN1bHQgdmVyaWZpY2F0aW9uLgorICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0
dXJlLlRleHR1cmVGb3JtYXR9ICovIHZhciByZWZGbXQgPSBpc0ZpeGVkUG9pbnQgPyBuZXcgdGN1
VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRleEZtdC5vcmRlciwgdGN1VGV4dHVyZS5DaGFubmVsVHlw
ZS5GTE9BVCkgOiB0ZXhGbXQ7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdH0gKi8gdmFyIHJlYWRGbXQgPSBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhbWVidWZm
ZXJSZWFkRm9ybWF0KHRleEZtdCk7CisgICAgICAgICAgICBhdHRhY2htZW50VyA9IHRoaXMubV9m
Ym9TcGVjW25keF0ud2lkdGg7CisgICAgICAgICAgICBhdHRhY2htZW50SCA9IHRoaXMubV9mYm9T
cGVjW25keF0uaGVpZ2h0OworCisgICAgICAgICAgICBkcmF3QnVmZmVyc1tuZHhdID0gZ2wuQ09M
T1JfQVRUQUNITUVOVDAgKyBuZHg7CisgICAgICAgICAgICBhdHRhY2htZW50c1tuZHhdID0gbmV3
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkF0dGFjaG1lbnREYXRhKCk7CisgICAgICAgICAgICBh
dHRhY2htZW50c1tuZHhdLmZvcm1hdCA9IHRleEZtdDsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRz
W25keF0ucmVhZEZvcm1hdCA9IHJlYWRGbXQ7CisgICAgICAgICAgICBhdHRhY2htZW50c1tuZHhd
LnJlZmVyZW5jZUZvcm1hdCA9IHJlZkZtdDsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzW25keF0u
cmVuZGVyZWREYXRhID0gbmV3IEFycmF5QnVmZmVyKHJlYWRGbXQuZ2V0UGl4ZWxTaXplKCkgKiBh
dHRhY2htZW50VyAqIGF0dGFjaG1lbnRIKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzW25keF0u
cmVmZXJlbmNlRGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihyZWZGbXQuZ2V0UGl4ZWxTaXplKCkgKiBh
dHRhY2htZW50VyAqIGF0dGFjaG1lbnRIKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluaXRp
YWxpemUgaW5kaWNlcy4KKyAgICAgICAgZm9yICh2YXIgcXVhZE5keCA9IDA7IHF1YWROZHggPCBu
dW1RdWFkczsgcXVhZE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHF1YWRZID0gTWF0aC5mbG9vcihxdWFkTmR4IC8gKGdyaWRXaWR0aCAtIDEpKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcXVhZFggPSBxdWFkTmR4IC0gcXVhZFkg
KiAoZ3JpZFdpZHRoIC0gMSk7CisKKyAgICAgICAgICAgIGluZGljZXNbcXVhZE5keCAqIDYgKyAw
XSA9IHF1YWRYICsgcXVhZFkgKiBncmlkV2lkdGg7CisgICAgICAgICAgICBpbmRpY2VzW3F1YWRO
ZHggKiA2ICsgMV0gPSBxdWFkWCArIChxdWFkWSArIDEpICogZ3JpZFdpZHRoOworICAgICAgICAg
ICAgaW5kaWNlc1txdWFkTmR4ICogNiArIDJdID0gcXVhZFggKyBxdWFkWSAqIGdyaWRXaWR0aCAr
IDE7CisgICAgICAgICAgICBpbmRpY2VzW3F1YWROZHggKiA2ICsgM10gPSBpbmRpY2VzW3F1YWRO
ZHggKiA2ICsgMV07CisgICAgICAgICAgICBpbmRpY2VzW3F1YWROZHggKiA2ICsgNF0gPSBxdWFk
WCArIChxdWFkWSArIDEpICogZ3JpZFdpZHRoICsgMTsKKyAgICAgICAgICAgIGluZGljZXNbcXVh
ZE5keCAqIDYgKyA1XSA9IGluZGljZXNbcXVhZE5keCAqIDYgKyAyXTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeGYgPSAwOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHlmID0gMDsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBn
cmlkSGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZ3JpZFdp
ZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICB4ZiA9IHggLyAoZ3JpZFdpZHRoIC0gMSk7Cisg
ICAgICAgICAgICAgICAgeWYgPSB5IC8gKGdyaWRIZWlnaHQgLSAxKTsKKworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uc1soeSAqIGdyaWRXaWR0aCArIHgpICogNCArIDBdID0gMi4wICogeGYgLSAx
LjA7CisgICAgICAgICAgICAgICAgcG9zaXRpb25zWyh5ICogZ3JpZFdpZHRoICsgeCkgKiA0ICsg
MV0gPSAyLjAgKiB5ZiAtIDEuMDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNbKHkgKiBncmlk
V2lkdGggKyB4KSAqIDQgKyAyXSA9IDAuMDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNbKHkg
KiBncmlkV2lkdGggKyB4KSAqIDQgKyAzXSA9IDEuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICAvKiogQHR5cGUge2VzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0
cHV0fSAqLyB2YXIgb3V0cHV0OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
c0FycmF5OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0Zsb2F0OworICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0ludDsKKyAgICAgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgaXNVaW50OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG51bVZlY3M7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtU2NhbGFy
czsKKworICAgICAgICB2YXIgY3VySW5WZWMgPSAwOworICAgICAgICBmb3IgKHZhciBvdXRwdXRO
ZHggPSAwOyBvdXRwdXROZHggPCB0aGlzLm1fb3V0cHV0cy5sZW5ndGg7IG91dHB1dE5keCsrKSB7
CisgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLm1fb3V0cHV0c1tvdXRwdXROZHhdOworICAgICAg
ICAgICAgaXNGbG9hdCA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWMob3V0cHV0
LnR5cGUpOworICAgICAgICAgICAgaXNJbnQgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRP
cklWZWMob3V0cHV0LnR5cGUpOworICAgICAgICAgICAgaXNVaW50ID0gZ2x1U2hhZGVyVXRpbC5p
c0RhdGFUeXBlVWludE9yVVZlYyhvdXRwdXQudHlwZSk7CisgICAgICAgICAgICBudW1WZWNzID0g
b3V0cHV0LmFycmF5TGVuZ3RoID4gMCA/IG91dHB1dC5hcnJheUxlbmd0aCA6IDE7CisgICAgICAg
ICAgICBudW1TY2FsYXJzID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUob3V0
cHV0LnR5cGUpOworCisgICAgICAgICAgICBmb3IgKHZhciB2ZWNOZHggPSAwOyB2ZWNOZHggPCBu
dW1WZWNzOyB2ZWNOZHgrKykgeworICAgICAgICAgICAgICAgIGlucHV0c1tjdXJJblZlY10ubGVu
Z3RoID0gbnVtVmVydGljZXMgKiBudW1TY2FsYXJzOworCisgICAgICAgICAgICAgICAgLy8gUmVj
b3JkIGhvdyBtYW55IG91dHB1dHMgYXJlIHdyaXR0ZW4gaW4gYXR0YWNobWVudC4KKyAgICAgICAg
ICAgICAgICBERV9BU1NFUlQob3V0cHV0LmxvY2F0aW9uICsgdmVjTmR4IDwgYXR0YWNobWVudHMu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50c1tvdXRwdXQubG9jYXRpb24gKyB2
ZWNOZHhdLm51bVdyaXR0ZW5DaGFubmVscyA9IG51bVNjYWxhcnM7CisgICAgICAgICAgICAgICAg
YXR0YWNobWVudHNbb3V0cHV0LmxvY2F0aW9uICsgdmVjTmR4XS5vdXRQcmVjaXNpb24gPSBvdXRw
dXQucHJlY2lzaW9uOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB2YXIgcmFuZ2UgPSBudWxsOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIG1pblZhbCA9IG51bGw7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgbWF4VmFsID0gbnVsbDsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmbXRCaXRzID0gbnVsbDsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmbXRNYXhWYWwgPSBbXTsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciByYW5nZURp
diA9IG51bGw7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgc3RlcCA9IFtdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
aXggPSAwOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaXkgPSAw
OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGMgPSBu
dWxsOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcG9zID0gMDsK
KyAgICAgICAgICAgICAgIGlmIChpc0Zsb2F0KSB7CisgICAgICAgICAgICAgICAgICAgIHJhbmdl
ID0gZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuZ2V0RmxvYXRSYW5nZShvdXRwdXQucHJlY2lzaW9u
KTsgLy8gVmVjMgorICAgICAgICAgICAgICAgICAgICBtaW5WYWwgPSBbcmFuZ2VbMF0sIHJhbmdl
WzBdLCByYW5nZVswXSwgcmFuZ2VbMF1dOyAvLyBWZWM0CisgICAgICAgICAgICAgICAgICAgIG1h
eFZhbCA9IFtyYW5nZVsxXSwgcmFuZ2VbMV0sIHJhbmdlWzFdLCByYW5nZVsxXV07IC8vIFZlYzQK
KworICAgICAgICAgICAgICAgICAgICBpZiAoZGVNYXRoLmRlSW5Cb3VuZHMzMihvdXRwdXQubG9j
YXRpb24gKyB2ZWNOZHgsIDAsIGF0dGFjaG1lbnRzLmxlbmd0aCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gXG5vdGUgRmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uIGNvbnZlcnNpb24gaXMgbm90
IHdlbGwtZGVmaW5lZC4gRm9yIHRoYXQgcmVhc29uIHdlIG11c3QKKyAgICAgICAgICAgICAgICAg
ICAgLy8gbGltaXQgdmFsdWUgcmFuZ2UgdG8gaW50ZXJzZWN0aW9uIG9mIGJvdGggZGF0YSB0eXBl
IGFuZCByZW5kZXIgdGFyZ2V0IHZhbHVlIHJhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8gdmFyIGZtdEluZm8g
PSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhhdHRhY2htZW50c1tvdXRwdXQu
bG9jYXRpb24gKyB2ZWNOZHhdLmZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5W
YWwgPSBkZU1hdGgubWF4KG1pblZhbCwgZm10SW5mby52YWx1ZU1pbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhWYWwgPSBkZU1hdGgubWluKG1heFZhbCwgZm10SW5mby52YWx1ZU1heCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnb3V0ICcgKyBjdXJJblZlYyArICcgdmFsdWUgcmFuZ2U6ICcgKyBtaW5WYWwg
KyAnIC0+ICcgKyBtYXhWYWwpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAw
OyB5IDwgZ3JpZEhlaWdodDsgeSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciB4ID0gMDsgeCA8IGdyaWRXaWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeGYgPSB4IC8gKGdyaWRXaWR0aCAtIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHlmID0geSAvIChncmlkSGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmMCA9ICh4ZiArIHlmKSAqIDAuNTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGYxID0gMC41ICsg
KHhmIC0geWYpICogMC41OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZiA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnN3aXp6
bGVWZWMoW2YwLCBmMSwgMS4wIC0gZjAsIDEuMCAtIGYxXSwgY3VySW5WZWMpOyAvLyBWZWM0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGRlTWF0aC5hZGQobWluVmFsLCBkZU1hdGgu
bXVsdGlwbHkoZGVNYXRoLnN1YnRyYWN0KG1heFZhbCwgbWluVmFsKSwgZikpOyAvLyBWZWM0CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSAoeSAqIGdyaWRXaWR0aCArIHgpICog
bnVtU2NhbGFyczsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IG51bVNjYWxhcnM7IG5keCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dHNbY3VySW5WZWNdW3BvcyArIG5keF0gPSBjW25keF07CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSW50KSB7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gZXMzZkZyYWdtZW50
T3V0cHV0VGVzdHMuZ2V0SW50UmFuZ2Uob3V0cHV0LnByZWNpc2lvbik7IC8vIElWZWMyCisgICAg
ICAgICAgICAgICAgICAgIG1pblZhbCA9IFtyYW5nZVswXSwgcmFuZ2VbMF0sIHJhbmdlWzBdLCBy
YW5nZVswXV07IC8vIElWZWM0CisgICAgICAgICAgICAgICAgICAgIG1heFZhbCA9IFtyYW5nZVsx
XSwgcmFuZ2VbMV0sIHJhbmdlWzFdLCByYW5nZVsxXV07IC8vIElWZWM0CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlTWF0aC5kZUluQm91bmRzMzIob3V0cHV0LmxvY2F0aW9uICsgdmVjTmR4
LCAwLCBhdHRhY2htZW50cy5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBM
aW1pdCB0byByYW5nZSBvZiBvdXRwdXQgZm9ybWF0IGFzIGNvbnZlcnNpb24gbW9kZSBpcyBub3Qg
c3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgZm10Qml0cyA9IHRjdVRleHR1cmVV
dGlsLmdldFRleHR1cmVGb3JtYXRCaXREZXB0aChhdHRhY2htZW50c1tvdXRwdXQubG9jYXRpb24g
KyB2ZWNOZHhdLmZvcm1hdCk7IC8vIElWZWM0CisgICAgICAgICAgICAgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PGJvb2xlYW4+fSAqLyB2YXIgaXNaZXJvID0gZGVNYXRoLmxlc3NUaGFuRXF1
YWwoZm10Qml0cywgWzAsIDAsIDAsIDBdKTsgLy8gQlZlYzQsIGFycmF5IG9mIGJvb2xlYW5zLCBz
aXplID0gNAorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBmbXRNaW5WYWwgPSBbXTsgLy8gSVZlYzQKKworICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNvbnN0IElWZWM0IGZtdE1pblZhbCA9ICgtKHRjdTo6VmVjdG9yPGRlSW50
NjQsIDQ+KDEpIDw8IChmbXRCaXRzIC0gMSApLmNhc3Q8ZGVJbnQ2ND4oKSkpLmFzSW50KCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10TWluVmFsW2ldID0gLTEgKiBNYXRoLnBvdygy
LCBmbXRCaXRzW2ldIC0gMSk7IC8vIFRPRE86IGNoZWNrIGltcGxlbWVudGF0aW9uLCBvcmlnaW5h
bCBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IElWZWM0IGZtdE1h
eFZhbCA9ICgodGN1OjpWZWN0b3I8ZGVJbnQ2NCwgND4oMSkgPDwgKGZtdEJpdHMgLSAxICkuY2Fz
dDxkZUludDY0PigpKSAtIGRlSW50NjQoMSkpLmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm10TWF4VmFsW2ldID0gTWF0aC5wb3coMiwgZm10Qml0c1tpXSAtIDEpIC0gMTsg
Ly8gVE9ETzogY2hlY2sgaW1wbGVtZW50YXRpb24sIG9yaWdpbmFsIGFib3ZlCisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pblZhbCA9IHRjdVRl
eHR1cmVVdGlsLnNlbGVjdChtaW5WYWwsIGRlTWF0aC5tYXgobWluVmFsLCBmbXRNaW5WYWwpLCBp
c1plcm8pOworICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsID0gdGN1VGV4dHVyZVV0aWwu
c2VsZWN0KG1heFZhbCwgZGVNYXRoLm1pbihtYXhWYWwsIGZtdE1heFZhbCksIGlzWmVybyk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnb3V0ICcgKyBjdXJJblZlYyArICcgdmFsdWUgcmFuZ2U6ICcgKyBtaW5WYWwgKyAn
IC0+ICcgKyBtYXhWYWwpOworCisgICAgICAgICAgICAgICAgICAgIHJhbmdlRGl2ID0gZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMuc3dpenpsZVZlYyhbZ3JpZFdpZHRoIC0gMSwgZ3JpZEhlaWdodCAt
IDEsIGdyaWRXaWR0aCAtIDEsIGdyaWRIZWlnaHQgLSAxXSwgY3VySW5WZWMpOyAvLyBJVmVjNAor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY29uc3QgSVZlYzQgc3RlcCA9ICgobWF4VmFsLmNhc3Q8ZGVJ
bnQ2ND4oKSAtIG1pblZhbC5jYXN0PGRlSW50NjQ+KCkpIC8gKHJhbmdlRGl2LmNhc3Q8ZGVJbnQ2
ND4oKSkpLmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwW2ldID0gTWF0aC5m
bG9vcigobWF4VmFsW2ldIC0gbWluVmFsW2ldKSAvIHJhbmdlRGl2W2ldKTsgLy8gVE9ETzogY2hl
Y2sgd2l0aCB0aGUgYWJvdmUgbGluZSBvZiBjb2RlCisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGdyaWRIZWlnaHQ7IHkrKykg
eworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBncmlkV2lkdGg7
IHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl4ID0gZ3JpZFdpZHRoIC0geCAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXkgPSBncmlkSGVpZ2h0IC0geSAtIDE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGRlTWF0aC5hZGQobWluVmFsLCBkZU1h
dGgubXVsdGlwbHkoc3RlcCwgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuc3dpenpsZVZlYyhbeCwg
eSwgaXgsIGl5XSwgY3VySW5WZWMpKSk7IC8vIElWZWM0CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwb3MgPSAoeSAqIGdyaWRXaWR0aCArIHgpICogbnVtU2NhbGFyczsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IG51bVNjYWxhcnM7
IG5keCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbY3VySW5WZWNd
W3BvcyArIG5keF0gPSBjW25keF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVWludCkgeworICAg
ICAgICAgICAgICAgICAgICByYW5nZSA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLmdldFVpbnRS
YW5nZShvdXRwdXQucHJlY2lzaW9uKTsgLy8gVVZlYzIKKyAgICAgICAgICAgICAgICAgICAgbWF4
VmFsID0gW3JhbmdlWzFdLCByYW5nZVsxXSwgcmFuZ2VbMV0sIHJhbmdlWzFdXTsgLy8gVVZlYzQK
KworICAgICAgICAgICAgICAgICAgICBpZiAoZGVNYXRoLmRlSW5Cb3VuZHMzMihvdXRwdXQubG9j
YXRpb24gKyB2ZWNOZHgsIDAsIGF0dGFjaG1lbnRzLmxlbmd0aCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIExpbWl0IHRvIHJhbmdlIG9mIG91dHB1dCBmb3JtYXQgYXMgY29udmVyc2lv
biBtb2RlIGlzIG5vdCBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBmbXRCaXRz
ID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEJpdERlcHRoKGF0dGFjaG1lbnRzW291
dHB1dC5sb2NhdGlvbiArIHZlY05keF0uZm9ybWF0KTsgLy8gSVZlYzQKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbXRNYXhWYWxbaV0gPSBNYXRoLnBvdygyLCBmbXRCaXRzW2ldKSAtIDE7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
eFZhbCA9IGRlTWF0aC5taW4obWF4VmFsLCBmbXRNYXhWYWwpOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ291dCAnICsg
Y3VySW5WZWMgKyAnIHZhbHVlIHJhbmdlOiAnICsgbWluVmFsICsgJyAtPiAnICsgbWF4VmFsKTsK
KworICAgICAgICAgICAgICAgICAgICByYW5nZURpdiA9IGVzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LnN3aXp6bGVWZWMoW2dyaWRXaWR0aCAtIDEsIGdyaWRIZWlnaHQgLSAxLCBncmlkV2lkdGggLSAx
LCBncmlkSGVpZ2h0IC0gMV0sIGN1ckluVmVjKTsgLy8gSVZlYzQKKworICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBzdGVwUG9zID0gMDsgc3RlcFBvcyA8IG1heFZhbC5sZW5ndGg7IHN0ZXBQ
b3MrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFtzdGVwUG9zXSA9IE1hdGguZmxv
b3IobWF4VmFsW3N0ZXBQb3NdIC8gcmFuZ2VEaXZbc3RlcFBvc10pOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJUKHJhbmdlWzBdID09IDApOwor
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgZ3JpZEhlaWdodDsgeSsr
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGdyaWRXaWR0
aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXggPSBncmlkV2lkdGggLSB4
IC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeSA9IGdyaWRIZWlnaHQgLSB5IC0g
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZGVNYXRoLm11bHRpcGx5KHN0ZXAs
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnN3aXp6bGVWZWMoW3gsIHksIGl4LCBpeV0sIGN1cklu
VmVjKSk7IC8vIFVWZWM0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gKHkgKiBn
cmlkV2lkdGggKyB4KSAqIG51bVNjYWxhcnM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBERV9BU1NFUlQoZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxlc3NUaGFuRXF1YWwoYywgbWF4VmFs
KSkpOyAvLyBUT0RPOiBzb21ldGltZXMgY3Jhc2hlcyBoZXJlLCBjb25kaXRpb24gbm90IGFzc2Vy
dGVkCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCBudW1TY2FsYXJzOyBuZHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRzW2N1ckluVmVjXVtwb3MgKyBuZHhdID0gY1tuZHhdOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisKKyAgICAgICAgICAgICAgICBjdXJJ
blZlYyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVuZGVy
IHVzaW5nIGdsLgorICAgICAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5t
X2ZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2wudmlld3BvcnQoMCwgMCwgdmlld3BvcnRXLCB2aWV3
cG9ydEgpOworICAgICAgICBnbC5kcmF3QnVmZmVycyhkcmF3QnVmZmVycyk7CisgICAgICAgIGds
LmRpc2FibGUoZ2wuRElUSEVSKTsgLy8gRGl0aGVyaW5nIGNhdXNlcyBpc3N1ZXMgd2l0aCB1bm9y
bSBmb3JtYXRzLiBUaG9zZSBpc3N1ZXMgY291bGQgYmUgd29ya2VkIGFyb3VuZCBpbiB0aHJlc2hv
bGQsIGJ1dCBpdCBtYWtlcyB2YWxpZGF0aW9uIGxlc3MgYWNjdXJhdGUuCisKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZmZlciA9IG51bGw7CisgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZTsKKyAgICAgICAgY3VySW5WZWMgPSAwOworICAgICAg
ICBmb3IgKHZhciBvdXRwdXROZHggPSAwOyBvdXRwdXROZHggPCB0aGlzLm1fb3V0cHV0cy5sZW5n
dGg7IG91dHB1dE5keCsrKSB7CisgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLm1fb3V0cHV0c1tv
dXRwdXROZHhdOworICAgICAgICAgICAgaXNBcnJheSA9IG91dHB1dC5hcnJheUxlbmd0aCA+IDA7
CisgICAgICAgICAgICBpc0Zsb2F0ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZl
YyhvdXRwdXQudHlwZSk7CisgICAgICAgICAgICBpc0ludCA9IGdsdVNoYWRlclV0aWwuaXNEYXRh
VHlwZUludE9ySVZlYyhvdXRwdXQudHlwZSk7CisgICAgICAgICAgICBpc1VpbnQgPSBnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVVaW50T3JVVmVjKG91dHB1dC50eXBlKTsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKG91dHB1dC50eXBlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgZ2xTY2FsYXJUeXBlID0gaXNGbG9hdCA/IC8qIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVQgKi8gZ2wuRkxPQVQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpc0ludCA/IC8qIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UICovIGdsLklOVCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzVWludCA/IC8qIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCAqLyBn
bC5VTlNJR05FRF9JTlQgOiAvKiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQgKi8gZ2wu
Tk9ORTsKKyAgICAgICAgICAgIG51bVZlY3MgPSBpc0FycmF5ID8gb3V0cHV0LmFycmF5TGVuZ3Ro
IDogMTsKKworICAgICAgICAgICAgZm9yICh2YXIgdmVjTmR4ID0gMDsgdmVjTmR4IDwgbnVtVmVj
czsgdmVjTmR4KyspIHsKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2luJyArIG91dHB1dE5keCAr
IChpc0FycmF5ID8gJ18nICsgdmVjTmR4IDogJycpOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5tX3Byb2dy
YW0uZ2V0UHJvZ3JhbSgpLCBuYW1lKTsKKworICAgICAgICAgICAgICAgIGlmIChsb2MgPj0gMCkg
eworICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisK
KyAgICAgICAgICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9jKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzRmxvYXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KGlucHV0c1tj
dXJJblZlY10pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBL
SFJPTk9TIFdlYkdMIDEuMCBzcGVjaWZpY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVu
dW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBHTGludHB0ciBv
ZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihs
b2MsIHNjYWxhclNpemUsIGdsU2NhbGFyVHlwZSwgZmFsc2UsIDAsIDApOyAvLyBvZmZzZXQgPSAw
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEludDMyQXJyYXkoaW5wdXRzW2N1cklu
VmVjXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEtIUk9O
T1MgV2ViR0wgMi4wIHNwZWNpZmljYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB2
b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTGludHB0ciBvZmZzZXQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihsb2MsIHNjYWxhclNpemUsIGdsU2NhbGFy
VHlwZSwgMCwgMCk7IC8vIG9mZnNldCA9IDAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnV2FybmluZzogTm8gbG9jYXRpb24gZm9yIGF0dHJpYnV0ZSAiJyArIG5hbWUgKyAnIiBmb3Vu
ZC4nKTsKKworICAgICAgICAgICAgICAgIGN1ckluVmVjICs9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBvc0xvYyA9IGds
LmdldEF0dHJpYkxvY2F0aW9uKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSwgJ2FfcG9zaXRp
b24nKTsKKyAgICAgICAgLy8gVENVX0NIRUNLKHBvc0xvYyA+PSAwKTsKKyAgICAgICAgYnVmZmVy
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBidWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3
IEZsb2F0MzJBcnJheShwb3NpdGlvbnMpLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zTG9jKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcihwb3NMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7IC8vIG9mZnNldCA9IDAK
KworICAgICAgICAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAqLyB2YXIgaW5kZXhPYmplY3QgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgaW5kZXhPYmplY3QpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoaW5kaWNlcyksIGdsLlNUQVRJQ19EUkFXKTsK
KworICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCBudW1JbmRpY2VzLCBnbC5V
TlNJR05FRF9TSE9SVCwgMCk7IC8vIG9mZnNldCA9IDAKKworICAgICAgICAvLyBSZW5kZXIgcmVm
ZXJlbmNlIGltYWdlcy4KKworICAgICAgICB2YXIgY3VySW5OZHggPSAwOworICAgICAgICBmb3Ig
KHZhciBvdXRwdXROZHggPSAwOyBvdXRwdXROZHggPCB0aGlzLm1fb3V0cHV0cy5sZW5ndGg7IG91
dHB1dE5keCsrKSB7CisgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLm1fb3V0cHV0c1tvdXRwdXRO
ZHhdOworICAgICAgICAgICAgaXNBcnJheSA9IG91dHB1dC5hcnJheUxlbmd0aCA+IDA7CisgICAg
ICAgICAgICBpc0Zsb2F0ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZlYyhvdXRw
dXQudHlwZSk7CisgICAgICAgICAgICBpc0ludCA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUlu
dE9ySVZlYyhvdXRwdXQudHlwZSk7CisgICAgICAgICAgICBpc1VpbnQgPSBnbHVTaGFkZXJVdGls
LmlzRGF0YVR5cGVVaW50T3JVVmVjKG91dHB1dC50eXBlKTsKKyAgICAgICAgICAgIHNjYWxhclNp
emUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShvdXRwdXQudHlwZSk7Cisg
ICAgICAgICAgICBudW1WZWNzID0gaXNBcnJheSA/IG91dHB1dC5hcnJheUxlbmd0aCA6IDE7CisK
KyAgICAgICAgICAgIGZvciAodmFyIHZlY05keCA9IDA7IHZlY05keCA8IG51bVZlY3M7IHZlY05k
eCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2NhdGlv
biA9IG91dHB1dC5sb2NhdGlvbiArIHZlY05keDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBpbnB1dERhdGEgPSBpbnB1dHNbY3VySW5OZHhdOworCisg
ICAgICAgICAgICAgICAgREVfQVNTRVJUKGRlTWF0aC5kZUluQm91bmRzMzIobG9jYXRpb24sIDAs
IHRoaXMubV9mYm9TcGVjLmxlbmd0aCkpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBidWZXID0gdGhpcy5tX2Zib1NwZWNbbG9jYXRpb25dLndpZHRoOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnVmSCA9IHRoaXMubV9mYm9T
cGVjW2xvY2F0aW9uXS5oZWlnaHQ7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtPYmplY3R9
ICovIHZhciBkZXNjcmlwdG9yID0geworICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBh
dHRhY2htZW50c1tsb2NhdGlvbl0ucmVmZXJlbmNlRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGg6IGJ1ZlcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGJ1Zkgs
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGE6IGF0dGFjaG1lbnRzW2xvY2F0aW9uXS5yZWZlcmVuY2VEYXRhIC8vIEFycmF5QnVm
ZmVyCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBidWYgPSBuZXcgdGN1VGV4dHVyZS5QaXhl
bEJ1ZmZlckFjY2VzcyhkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3Rj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciB2aWV3cG9ydEJ1ZiA9IHRjdVRleHR1
cmVVdGlsLmdldFN1YnJlZ2lvbihidWYsIDAsIDAsIDAsIHZpZXdwb3J0Vywgdmlld3BvcnRILCAx
KTsKKworICAgICAgICAgICAgICAgIGlmIChpc0ludCB8fCBpc1VpbnQpCisgICAgICAgICAgICAg
ICAgICAgIGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJlbmRlckludFJlZmVyZW5jZSh2aWV3cG9y
dEJ1ZiwgZ3JpZFdpZHRoLCBncmlkSGVpZ2h0LCBzY2FsYXJTaXplLCBpbnB1dERhdGEpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQpCisgICAgICAgICAgICAgICAgICAgIGVzM2ZG
cmFnbWVudE91dHB1dFRlc3RzLnJlbmRlckZsb2F0UmVmZXJlbmNlKHZpZXdwb3J0QnVmLCBncmlk
V2lkdGgsIGdyaWRIZWlnaHQsIHNjYWxhclNpemUsIGlucHV0RGF0YSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworCisgICAgICAg
ICAgICAgICAgY3VySW5OZHggKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENvbXBhcmUgYWxsIGltYWdlcy4KKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LyB2YXIgYWxsTGV2ZWxzT2sgPSB0cnVlOworICAgICAgICBmb3IgKHZhciBhdHRhY2hOZHggPSAw
OyBhdHRhY2hOZHggPCBudW1BdHRhY2htZW50czsgYXR0YWNoTmR4KyspIHsKKyAgICAgICAgICAg
IGF0dGFjaG1lbnRXID0gdGhpcy5tX2Zib1NwZWNbYXR0YWNoTmR4XS53aWR0aDsKKyAgICAgICAg
ICAgIGF0dGFjaG1lbnRIID0gdGhpcy5tX2Zib1NwZWNbYXR0YWNoTmR4XS5oZWlnaHQ7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVZhbGlkQ2hhbm5lbHMgPSBhdHRh
Y2htZW50c1thdHRhY2hOZHhdLm51bVdyaXR0ZW5DaGFubmVsczsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZhciBjbXBNYXNrID0gW251bVZhbGlkQ2hhbm5lbHMg
Pj0gMSwgbnVtVmFsaWRDaGFubmVscyA+PSAyLCBudW1WYWxpZENoYW5uZWxzID49IDMsIG51bVZh
bGlkQ2hhbm5lbHMgPj0gNF07CisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwu
cHJlY2lzaW9ufSAqLyB2YXIgb3V0UHJlY2lzaW9uID0gYXR0YWNobWVudHNbYXR0YWNoTmR4XS5v
dXRQcmVjaXNpb247CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZv
cm1hdH0gKi8gdmFyIGZvcm1hdCA9IGF0dGFjaG1lbnRzW2F0dGFjaE5keF0uZm9ybWF0OworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtPYmplY3R9ICovCisgICAgICAgICAgICB2YXIgcmVuZGVyZWRE
ZXNjcmlwdG9yID0geworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IGF0dGFjaG1lbnRzW2F0
dGFjaE5keF0ucmVhZEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF0dGFjaG1l
bnRXLAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF0dGFjaG1lbnRILAorICAgICAgICAg
ICAgICAgICAgICBkZXB0aDogMSwKKyAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IGRlTWF0
aC5kZUFsaWduMzIoYXR0YWNobWVudHNbYXR0YWNoTmR4XS5yZWFkRm9ybWF0LmdldFBpeGVsU2l6
ZSgpICogYXR0YWNobWVudFcsIHJlYWRBbGlnbm1lbnQpLAorICAgICAgICAgICAgICAgICAgICBz
bGljZVBpdGNoOiAwLAorICAgICAgICAgICAgICAgICAgICBkYXRhOiBhdHRhY2htZW50c1thdHRh
Y2hOZHhdLnJlbmRlcmVkRGF0YSAvLyBBcnJheUJ1ZmZlcgorICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIHJl
bmRlcmVkID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MocmVuZGVyZWREZXNjcmlw
dG9yKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1VGV4dHVyZVV0aWwuVHJhbnNmZXJGb3Jt
YXR9ICovIHZhciB0cmFuc2ZlckZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0
KGF0dGFjaG1lbnRzW2F0dGFjaE5keF0ucmVhZEZvcm1hdCk7CisgICAgICAgICAgICBnbC5yZWFk
QnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgYXR0YWNoTmR4KTsKKyAgICAgICAgICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgYXR0YWNobWVudFcsIGF0dGFjaG1lbnRILCB0cmFuc2ZlckZtdC5m
b3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCByZW5kZXJlZC5nZXREYXRhUHRyKCkpOworCisg
ICAgICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8KKyAgICAgICAgICAgIHZhciByZWZlcmVu
Y2VEZXNjcmlwdG9yID0geworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IGF0dGFjaG1lbnRz
W2F0dGFjaE5keF0ucmVmZXJlbmNlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB3aWR0aDog
YXR0YWNobWVudFcsCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXR0YWNobWVudEgsCisg
ICAgICAgICAgICAgICAgICAgIGRlcHRoOiAxLAorICAgICAgICAgICAgICAgICAgICBkYXRhOiBh
dHRhY2htZW50c1thdHRhY2hOZHhdLnJlZmVyZW5jZURhdGEgLy8gQXJyYXlCdWZmZXIKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1
ZmZlckFjY2Vzc30gKi8gdmFyIHJlZmVyZW5jZSA9IG5ldyB0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxC
dWZmZXJBY2Nlc3MocmVmZXJlbmNlRGVzY3JpcHRvcik7CisgICAgICAgICAgICAvKiogQHR5cGUg
e3RjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzc30gKi8gdmFyIHRleENsYXNzID0gdGN1VGV4
dHVyZS5nZXRUZXh0dXJlQ2hhbm5lbENsYXNzKGZvcm1hdC50eXBlKTsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSB0cnVlOworICAgICAgICAgICAgbmFtZSA9
ICdBdHRhY2htZW50ICcgKyBhdHRhY2hOZHg7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIGRlc2MgPSAnQ29sb3IgYXR0YWNobWVudCAnICsgYXR0YWNoTmR4OworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGhyZXNob2xkOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQXR0YWNobWVudCAnICsgYXR0YWNoTmR4ICsg
JzogJyArIG51bVZhbGlkQ2hhbm5lbHMgKyAnIGNoYW5uZWxzIGhhdmUgZGVmaW5lZCB2YWx1ZXMg
YW5kIHVzZWQgZm9yIGNvbXBhcmlzb24nKTsKKworICAgICAgICAgICAgc3dpdGNoICh0ZXhDbGFz
cykgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNz
LkZMT0FUSU5HX1BPSU5UOiB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIGZvcm1hdFRocmVzaG9sZCA9IFtdOyAvLyBVVmVjNCAvLyE8IFRocmVz
aG9sZCBjb21wdXRlZCBiYXNlZCBvbiBmb3JtYXQuCisgICAgICAgICAgICAgICAgICAgIGZvcm1h
dFRocmVzaG9sZC5sZW5ndGggPSA0OworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHByZWNUaHJlc2hvbGQgPSAwOyAvLyBkZVVpbnQzMiAvLyE8IFRocmVzaG9s
ZCBjb21wdXRlZCBiYXNlZCBvbiBvdXRwdXQgdHlwZSBwcmVjaXNpb24KKyAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZmluYWxUaHJlc2hvbGQgPSBb
XTsgLy8gVVZlYzQKKyAgICAgICAgICAgICAgICAgICAgZmluYWxUaHJlc2hvbGQubGVuZ3RoID0g
NDsKKworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuRkxPQVQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0VGhyZXNob2xkID0gWzQsIDQsIDQsIDRdOyAv
LyBVVmVjNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLkhBTEZfRkxPQVQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0VGhyZXNob2xkID0gWygxIDw8IDEzKSArIDQs
ICgxIDw8IDEzKSArIDQsICgxIDw8IDEzKSArIDQsICgxIDw8IDEzKSArIDRdOyAvLyBVVmVjNAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVF8xMUZfMTFGXzEwRl9S
RVY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0VGhyZXNob2xkID0gWygxIDw8
IDE3KSArIDQsICgxIDw8IDE3KSArIDQsICgxIDw8IDE4KSArIDQsIDRdOyAvLyBVVmVjNAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvdXRQcmVjaXNpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xP
V1A6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY1RocmVzaG9sZCA9ICgxIDw8IDIx
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVA6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY1RocmVzaG9sZCA9ICgxIDw8IDEzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZWNUaHJlc2hvbGQgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZmluYWxUaHJlc2hvbGQgPSB0Y3VUZXh0dXJl
VXRpbC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGgu
bWF4KGZvcm1hdFRocmVzaG9sZCwgW3ByZWNUaHJlc2hvbGQsIHByZWNUaHJlc2hvbGQsIHByZWNU
aHJlc2hvbGQsIHByZWNUaHJlc2hvbGRdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmXSwg
Ly8gQysrIHZlcnNpb246IFVWZWM0KH4wdSkgYml0d2lzZSBub3QsIGFsbCBiaXRzIGluIHRoZSBp
bnRlZ2VyIHdpbGwgYmUgZmxpcHBlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY21wTWFzayk7CisKKyAgICAgICAgICAgICAgICAgICAgaXNPayA9IHRjdUltYWdlQ29tcGFy
ZS5mbG9hdFVscFRocmVzaG9sZENvbXBhcmUobmFtZSwgZGVzYywgcmVmZXJlbmNlLCByZW5kZXJl
ZCwgZmluYWxUaHJlc2hvbGQgLyosIHRjdTo6Q09NUEFSRV9MT0dfUkVTVUxUKi8pOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9GSVhFRF9QT0lO
VDogeworICAgICAgICAgICAgICAgICAgICAvLyBcbm90ZSBnbFJlYWRQaXhlbHMoKSBhbGxvd3Mg
b25seSA4IGJpdHMgdG8gYmUgcmVhZC4gVGhpcyBtZWFucyB0aGF0IFJHQjEwX0EyIHdpbGwgbG9v
c2Ugc29tZQorICAgICAgICAgICAgICAgICAgICAvLyBiaXRzIGluIHRoZSBwcm9jZXNzIGFuZCBp
dCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGNvbXB1dGluZyB0aHJlc2hvbGQuCisg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGJpdHMg
PSBkZU1hdGgubWluKFs4LCA4LCA4LCA4XSwgdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1h
dEJpdERlcHRoKGZvcm1hdCkpOyAvLyBJVmVjNAorCisgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGJhc2VUaHJlc2hvbGQgPSBbXTsgLy8gVmVjNAor
ICAgICAgICAgICAgICAgICAgICBiYXNlVGhyZXNob2xkLmxlbmd0aCA9IDQ7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGluYyA9IDA7IGluYyA8IGJhc2VUaHJlc2hvbGQubGVuZ3RoOyBp
bmMrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogY2hlY2sgdGhlIG9wZXJh
dGlvbiBiZWxvdzogYmFzZVRocmVzaG9sZCA9IDEuMGYgLyAoKElWZWM0KDEpIDw8IGJpdHMpLTEp
LmFzRmxvYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUaHJlc2hvbGRbaW5jXSA9
IDEuMCAvICgoMSA8PCBiaXRzW2luY10pIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSB0Y3VUZXh0dXJlVXRpbC5zZWxlY3QoYmFz
ZVRocmVzaG9sZCwgWzIuMCwgMi4wLCAyLjAsIDIuMF0sIGNtcE1hc2spOyAvLyBWZWM0CisKKyAg
ICAgICAgICAgICAgICAgICAgaXNPayA9IHRjdUltYWdlQ29tcGFyZS5mbG9hdFRocmVzaG9sZENv
bXBhcmUobmFtZSwgZGVzYywgcmVmZXJlbmNlLCByZW5kZXJlZCwgdGhyZXNob2xkLyosIHRjdTo6
Q09NUEFSRV9MT0dfUkVTVUxUKi8pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNo
YW5uZWxDbGFzcy5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1
cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9JTlRFR0VSOiB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBDKysgZEVRUCBjb2RlIHVzZXMgfjB1IGJ1dCB+MCBpcyAtMSBpbiBKYXZh
c2NyaXB0CisgICAgICAgICAgICAgICAgICAgIHZhciBVSU5UX01BWCA9IE1hdGgucG93KDIuMCwg
MzIuMCkgLSAxOworICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSB0Y3VUZXh0dXJlVXRp
bC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMCwg
MF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVUlOVF9NQVgsIFVJTlRf
TUFYLCBVSU5UX01BWCwgVUlOVF9NQVhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY21wTWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsgLy8g
VVZlYzQKKyAgICAgICAgICAgICAgICAgICAgaXNPayA9IHRjdUltYWdlQ29tcGFyZS5pbnRUaHJl
c2hvbGRDb21wYXJlKG5hbWUsIGRlc2MsIHJlZmVyZW5jZSwgcmVuZGVyZWQsIHRocmVzaG9sZC8q
LCB0Y3U6OkNPTVBBUkVfTE9HX1JFU1VMVCovKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ1Vuc3VwcG9ydGVkIGNvbXBhcmlzb24nLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghaXNPaykKKyAgICAgICAgICAgICAgICBhbGxMZXZlbHNPayA9IGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bUF0dGFjaG1lbnRzID4gMSkgeworICAgICAgICAg
ICAgaWYgKGFsbExldmVsc09rKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ0ltYWdlIGNv
bXBhcmlzb24gcGFzc2VkIGZvciAnICsgIG51bUF0dGFjaG1lbnRzICsgJyBhdHRhY2htZW50cycp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0ltYWdlIGNv
bXBhcmlzb24gZmFpbGVkIGZvciBzb21lIG9mICcgKyAgbnVtQXR0YWNobWVudHMgKyAnIGF0dGFj
aG1lbnRzJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYWxsTGV2ZWxzT2sp
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnSW1hZ2UgY29tcGFyaXNvbiBwYXNzZWQnKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdJbWFnZSBjb21w
YXJpc29uIGZhaWxlZCcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNl
Lkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuY3JlYXRlUmFuZG9tQ2FzZS4gQ29uc3RydWN0cyB0aGUgZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuY3JlYXRlUmFuZG9tQ2FzZSwgY2hpbGQgY2xhc3Mgb2YgZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG1pblJlbmRlclRhcmdldHMKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbWF4UmVuZGVyVGFyZ2V0cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgICAg
ICogQHJldHVybiB7ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlfSBU
aGUgY3VycmVudGx5IG1vZGlmaWVkIG9iamVjdAorICAgICAqLworICAgIGVzM2ZGcmFnbWVudE91
dHB1dFRlc3RzLmNyZWF0ZVJhbmRvbUNhc2UgPSBmdW5jdGlvbihtaW5SZW5kZXJUYXJnZXRzLCBt
YXhSZW5kZXJUYXJnZXRzLCBzZWVkLCBjb2xvckJ1ZmZlckZsb2F0U3VwcG9ydGVkKSB7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8KKyAgICAg
ICAgdmFyIG91dHB1dFR5cGVzID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRf
VkVDMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVF9WRUM0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworCisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24+fSAqLworICAgICAgICB2YXIgcHJl
Y2lzaW9ucyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVj
aXNpb24uUFJFQ0lTSU9OX0xPV1AsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuR0xlbnVtPn0gKi8KKyAgICAgICAgdmFyIGZsb2F0Rm9ybWF0cyA9IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0JBMzJGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsLlJHQkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wu
UjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkczMkYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkcxNkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2wuUjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5SMTZGLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkE4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsLlNSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bC5SR0IxMF9BMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0JBNCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0I1X0ExLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLlJHQjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCNTY1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbC5SOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkdMZW51bT59ICovCisg
ICAgICAgIHZhciBjb2xvckJ1ZmZlckZsb2F0Rm9ybWF0cyA9IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbC5SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2wuUjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbC5SRzMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLlJHMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2wuUjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlIxNkYK
KyAgICAgICAgXTsKKworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5HTGVudW0+fSAqLworICAgICAgICB2YXIgaW50Rm9ybWF0cyA9IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLlJHQkExNkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQThJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHMzJJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsLlJHMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJH
OEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUjMySSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbC5SMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlI4
SQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkdMZW51bT59ICovCisgICAgICAgIHZhciB1
aW50Rm9ybWF0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkEzMlVJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQTE2VUksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbC5SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdC
MTBfQTJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHMzJVSSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsLlJHMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsLlJHOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUjMyVUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbC5SMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsLlI4VUkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0
eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKHNl
ZWQpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZy
YWdtZW50T3V0cHV0Pn0gKi8gdmFyIG91dHB1dHMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjPn0gKi8gdmFyIHRhcmdldHMg
PSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0g
Ki8gdmFyIG91dFR5cGVzID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBudW1UYXJnZXRzID0gcm5kLmdldEludChtaW5SZW5kZXJUYXJnZXRzLCBtYXhSZW5kZXJUYXJn
ZXRzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9IDEyODsgLy8g
XHRvZG8gWzIwMTItMDQtMTAgcHlyeV0gU2VwYXJhdGUgcmFuZG9taXplZCBzaXplcyBwZXIgdGFy
Z2V0PworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGhlaWdodCA9IDY0OworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNhbXBsZXMgPSAwOworCisgICAgICAgIC8v
IENvbXB1dGUgb3V0cHV0cy4KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjdXJM
b2MgPSAwOworICAgICAgICB3aGlsZSAoY3VyTG9jIDwgbnVtVGFyZ2V0cykgeworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdXNlQXJyYXkgPSBybmQuZ2V0RmxvYXQoKSA8
IDAuMzsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4QXJyYXlMZW4g
PSBudW1UYXJnZXRzIC0gY3VyTG9jOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBhcnJheUxlbiA9IHVzZUFycmF5ID8gcm5kLmdldEludCgxLCBtYXhBcnJheUxlbikgOiAw
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0g
Ki8gdmFyIGJhc2ljVHlwZUFycmF5ID0gcm5kLmNob29zZShvdXRwdXRUeXBlcywgdW5kZWZpbmVk
LCAxKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8g
dmFyIGJhc2ljVHlwZSA9IGJhc2ljVHlwZUFycmF5WzBdOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxnbHVTaGFkZXJVdGlsLnByZWNpc2lvbj59ICovIHZhciBwcmVjaXNpb25BcnJheSA9
IHJuZC5jaG9vc2UocHJlY2lzaW9ucywgdW5kZWZpbmVkLCAxKTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSBwcmVjaXNp
b25BcnJheVswXTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtTG9j
YXRpb25zID0gdXNlQXJyYXkgPyBhcnJheUxlbiA6IDE7CisKKyAgICAgICAgICAgIG91dHB1dHMu
cHVzaChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoYmFzaWNUeXBl
LCBwcmVjaXNpb24sIGN1ckxvYywgYXJyYXlMZW4pKTsKKworICAgICAgICAgICAgZm9yICh2YXIg
bmR4ID0gMDsgbmR4IDwgbnVtTG9jYXRpb25zOyBuZHgrKykKKyAgICAgICAgICAgICAgICBvdXRU
eXBlcy5wdXNoKGJhc2ljVHlwZSk7CisKKyAgICAgICAgICAgIGN1ckxvYyArPSBudW1Mb2NhdGlv
bnM7CisgICAgICAgIH0KKyAgICAgICAgREVfQVNTRVJUKGN1ckxvYyA9PSBudW1UYXJnZXRzKTsK
KyAgICAgICAgREVfQVNTRVJUKG91dFR5cGVzLmxlbmd0aCA9PSBudW1UYXJnZXRzKTsKKworICAg
ICAgICAvLyBDb21wdXRlIGJ1ZmZlcnMuCisgICAgICAgIHdoaWxlICh0YXJnZXRzLmxlbmd0aCA8
IG51bVRhcmdldHMpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRh
VHlwZX0gKi8gdmFyIG91dFR5cGUgPSBvdXRUeXBlc1t0YXJnZXRzLmxlbmd0aF07CisgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0Zsb2F0ID0gZ2x1U2hhZGVyVXRpbC5p
c0RhdGFUeXBlRmxvYXRPclZlYyhvdXRUeXBlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIGlzSW50ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50T3JJVmVjKG91
dFR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNVaW50ID0g
Z2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYyhvdXRUeXBlKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXl9ICovIHZhciBmb3JtYXRBcnJheSA9IFtdOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmb3JtYXQgPSAwOworCisgICAgICAgICAgICBpZiAo
aXNGbG9hdCkgeworICAgICAgICAgICAgICAgIGZvcm1hdEFycmF5ID0gcm5kLmNob29zZShmbG9h
dEZvcm1hdHMsIHVuZGVmaW5lZCwgMSk7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0
QXJyYXlbMF07CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQnVmZmVyRmxvYXRGb3JtYXRzLmlu
ZGV4T2YoZm9ybWF0KSA+PSAwICYmICFjb2xvckJ1ZmZlckZsb2F0U3VwcG9ydGVkKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQp
IHsKKyAgICAgICAgICAgICAgICBmb3JtYXRBcnJheSA9IHJuZC5jaG9vc2UoaW50Rm9ybWF0cywg
dW5kZWZpbmVkLCAxKTsKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXRBcnJheVswXTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50KSB7CisgICAgICAgICAgICAgICAgZm9ybWF0
QXJyYXkgPSBybmQuY2hvb3NlKHVpbnRGb3JtYXRzLCB1bmRlZmluZWQsIDEpOworICAgICAgICAg
ICAgICAgIGZvcm1hdCA9IGZvcm1hdEFycmF5WzBdOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKworICAgICAgICAgICAgdGFyZ2V0cy5wdXNo
KG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjKGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgc2FtcGxlcykpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBlczNmRnJh
Z21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2Uoc2VlZC50b1N0cmluZygpLCAnJywg
dGFyZ2V0cywgb3V0cHV0cyk7CisKKyAgICB9OworCisgICAgZXMzZkZyYWdtZW50T3V0cHV0VGVz
dHMuaW5pdCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNl
LnJ1bm5lcjsKKyAgICAgICAgc3RhdGUudGVzdENhc2VzID0gdGN1VGVzdENhc2UubmV3VGVzdCgn
ZnJhZ21lbnRfb3V0cHV0cycsICdUb3AgbGV2ZWwnKTsKKyAgICAgICAgLyoqIEBjb25zdCBAdHlw
ZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciB0ZXN0R3JvdXAgPSBzdGF0ZS50ZXN0Q2Fz
ZXM7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LkdMZW51bT59ICovCisgICAgICAgIHZhciByZXF1aXJlZEZsb2F0Rm9ybWF0cyA9IFsKKyAgICAg
ICAgICAgIGdsLlJHQkEzMkYsCisgICAgICAgICAgICBnbC5SR0JBMTZGLAorICAgICAgICAgICAg
Z2wuUjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICBnbC5SRzMyRiwKKyAgICAgICAgICAgIGds
LlJHMTZGLAorICAgICAgICAgICAgZ2wuUjMyRiwKKyAgICAgICAgICAgIGdsLlIxNkYKKyAgICAg
ICAgXTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuR0xlbnVtPn0gKi8KKyAgICAgICAgdmFyIHJlcXVpcmVkRml4ZWRGb3JtYXRzID0gWworICAg
ICAgICAgICAgZ2wuUkdCQTgsCisgICAgICAgICAgICBnbC5TUkdCOF9BTFBIQTgsCisgICAgICAg
ICAgICBnbC5SR0IxMF9BMiwKKyAgICAgICAgICAgIGdsLlJHQkE0LAorICAgICAgICAgICAgZ2wu
UkdCNV9BMSwKKyAgICAgICAgICAgIGdsLlJHQjgsCisgICAgICAgICAgICBnbC5SR0I1NjUsCisg
ICAgICAgICAgICBnbC5SRzgsCisgICAgICAgICAgICBnbC5SOAorICAgICAgICBdOworCisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5HTGVudW0+fSAq
LworICAgICAgICB2YXIgcmVxdWlyZWRJbnRGb3JtYXRzID0gWworICAgICAgICAgICAgZ2wuUkdC
QTMySSwKKyAgICAgICAgICAgIGdsLlJHQkExNkksCisgICAgICAgICAgICBnbC5SR0JBOEksCisg
ICAgICAgICAgICBnbC5SRzMySSwKKyAgICAgICAgICAgIGdsLlJHMTZJLAorICAgICAgICAgICAg
Z2wuUkc4SSwKKyAgICAgICAgICAgIGdsLlIzMkksCisgICAgICAgICAgICBnbC5SMTZJLAorICAg
ICAgICAgICAgZ2wuUjhJCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkdMZW51bT59ICovCisgICAgICAgIHZhciByZXF1aXJl
ZFVpbnRGb3JtYXRzID0gWworICAgICAgICAgICAgZ2wuUkdCQTMyVUksCisgICAgICAgICAgICBn
bC5SR0JBMTZVSSwKKyAgICAgICAgICAgIGdsLlJHQkE4VUksCisgICAgICAgICAgICBnbC5SR0Ix
MF9BMlVJLAorICAgICAgICAgICAgZ2wuUkczMlVJLAorICAgICAgICAgICAgZ2wuUkcxNlVJLAor
ICAgICAgICAgICAgZ2wuUkc4VUksCisgICAgICAgICAgICBnbC5SMzJVSSwKKyAgICAgICAgICAg
IGdsLlIxNlVJLAorICAgICAgICAgICAgZ2wuUjhVSQorICAgICAgICBdOworCisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24+fSAqLworICAgICAgICB2YXIg
cHJlY2lzaW9ucyA9IFsKKworICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX0xPV1AsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJ
T05fTUVESVVNUCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lP
Tl9ISUdIUAorCisgICAgICAgIF07CisKKyAgICAgLy8gLmJhc2ljLgorCisgICAgICAgIC8qKiBA
Y29uc3QgQHR5cGUge251bWJlcn0gKi8gdmFyIHdpZHRoID0gNjQ7CisgICAgICAgIC8qKiBAY29u
c3QgQHR5cGUge251bWJlcn0gKi8gdmFyIGhlaWdodCA9IDY0OworICAgICAgICAvKiogQGNvbnN0
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzYW1wbGVzID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjPn0gKi8gdmFyIGZib1NwZWMg
PSBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2
YXIgcHJlYzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBwcmVjTmFtZTsKKwor
ICAgIC8vIC5mbG9hdAorICAgICAgICBpZiAoZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVm
ZmVyX2Zsb2F0JykpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRl
c3R9ICovIHZhciBmbG9hdEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYmFzaWMuZmxvYXQn
LCAnRmxvYXRpbmctcG9pbnQgb3V0cHV0IHRlc3RzJyk7CisgICAgICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQoZmxvYXRHcm91cCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7
IGZtdE5keCA8IHJlcXVpcmVkRmxvYXRGb3JtYXRzLmxlbmd0aDsgZm10TmR4KyspIHsKKyAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVxdWlyZWRGbG9hdEZvcm1hdHNbZm10TmR4XTsKKyAg
ICAgICAgICAgICAgICB2YXIgZm10TmFtZSA9IGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1l
KGZvcm1hdCk7CisgICAgICAgICAgICAgICAgZmJvU3BlYyA9IFtdOworCisgICAgICAgICAgICAg
ICAgZmJvU3BlYy5wdXNoKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjKGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcykpOworCisgICAgICAgICAgICAgICAgZm9yICh2
YXIgcHJlY05keCA9IDA7IHByZWNOZHggPCBwcmVjaXNpb25zLmxlbmd0aDsgcHJlY05keCsrKSB7
CisgICAgICAgICAgICAgICAgICAgIHByZWMgPSBwcmVjaXNpb25zW3ByZWNOZHhdOworICAgICAg
ICAgICAgICAgICAgICBwcmVjTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShw
cmVjKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBFbGltaW5hdGVkIG9yaWdpbmFs
IE91dHB1dFZlYyBhbmQgdG9WZWMoKSwgYXMgaXQgb25seSByZXR1cm5lZCBhbiBlbGVtZW50IG9m
IHRoZSBvdXRwdXRzIGFycmF5IGluIE91dHB1dFZlYworICAgICAgICAgICAgICAgICAgICBmbG9h
dEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1
dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ19mbG9hdCcsICcnLCBmYm9TcGVjLCBb
bmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVQsIHByZWMsIDApXSkpOworICAgICAgICAgICAgICAgICAgICBmbG9hdEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENh
c2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ192ZWMyJywgJycsIGZib1NwZWMsIFtuZXcg
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9WRUMyLCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXRH
cm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRD
YXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFtZSArICdfdmVjMycsICcnLCBmYm9TcGVjLCBbbmV3
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfVkVDMywgcHJlYywgMCldKSk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0
Q2FzZShmbXROYW1lICsgJ18nICsgcHJlY05hbWUgKyAnX3ZlYzQnLCAnJywgZmJvU3BlYywgW25l
dyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX1ZFQzQsIHByZWMsIDApXSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5maXhlZAorICAgICAgICAvKiogQHR5
cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZml4ZWRHcm91cCA9IHRjdVRlc3RDYXNl
Lm5ld1Rlc3QoJ2Jhc2ljLmZpeGVkJywgJ0ZpeGVkLXBvaW50IG91dHB1dCB0ZXN0cycpOworICAg
ICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoZml4ZWRHcm91cCk7CisgICAgICAgIGZvciAodmFyIGZt
dE5keCA9IDA7IGZtdE5keCA8IHJlcXVpcmVkRml4ZWRGb3JtYXRzLmxlbmd0aDsgZm10TmR4Kysp
IHsKKyAgICAgICAgICAgIHZhciBmb3JtYXQgPSByZXF1aXJlZEZpeGVkRm9ybWF0c1tmbXROZHhd
OworICAgICAgICAgICAgdmFyIGZtdE5hbWUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFt
ZShmb3JtYXQpOworICAgICAgICAgICAgZmJvU3BlYyA9IFtdOworCisgICAgICAgICAgICBmYm9T
cGVjLnB1c2gobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkJ1ZmZlclNwZWMoZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByZWNOZHgg
PSAwOyBwcmVjTmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7IHByZWNOZHgrKykgeworICAgICAgICAg
ICAgICAgIHByZWMgPSBwcmVjaXNpb25zW3ByZWNOZHhdOworICAgICAgICAgICAgICAgIHByZWNO
YW1lID0gZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25OYW1lKHByZWMpOworCisgICAgICAgICAg
ICAgICAgZml4ZWRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJh
Z21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFtZSArICdfZmxvYXQnLCAnJywg
ZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgICAgICBm
aXhlZEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91
dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ192ZWMyJywgJycsIGZib1NwZWMs
IFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9WRUMyLCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgICAgICBmaXhl
ZEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1
dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ192ZWMzJywgJycsIGZib1NwZWMsIFtu
ZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9WRUMzLCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgICAgICBmaXhlZEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENh
c2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ192ZWM0JywgJycsIGZib1NwZWMsIFtuZXcg
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9WRUM0LCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIC8vIC5pbnQKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVz
dH0gKi8gdmFyIGludEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYmFzaWMuaW50JywgJ0lu
dGVnZXIgb3V0cHV0IHRlc3RzJyk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChpbnRHcm91
cCk7CisgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7IGZtdE5keCA8IHJlcXVpcmVkSW50Rm9y
bWF0cy5sZW5ndGg7IGZtdE5keCsrKSB7CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVxdWly
ZWRJbnRGb3JtYXRzW2ZtdE5keF07CisgICAgICAgICAgICB2YXIgZm10TmFtZSA9IGVzM2ZGYm9U
ZXN0VXRpbC5nZXRGb3JtYXROYW1lKGZvcm1hdCk7CisgICAgICAgICAgICBmYm9TcGVjID0gW107
CisKKyAgICAgICAgICAgIGZib1NwZWMucHVzaChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMu
QnVmZmVyU3BlYyhmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpKTsKKworICAgICAgICAg
ICAgZm9yICh2YXIgcHJlY05keCA9IDA7IHByZWNOZHggPCBwcmVjaXNpb25zLmxlbmd0aDsgcHJl
Y05keCsrKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IHByZWNpc2lvbnNbcHJlY05keF07Cisg
ICAgICAgICAgICAgICAgcHJlY05hbWUgPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUo
cHJlYyk7CisKKyAgICAgICAgICAgICAgICBpbnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFt
ZSArICdfaW50JywgJycsIGZib1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJh
Z21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsIHByZWMsIDApXSkpOworICAg
ICAgICAgICAgICAgIGludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0
cy5GcmFnbWVudE91dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ19pdmVjMics
ICcnLCBmYm9TcGVjLCBbbmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsIHByZWMsIDApXSkpOworICAgICAgICAg
ICAgICAgIGludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFn
bWVudE91dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ19pdmVjMycsICcnLCBm
Ym9TcGVjLCBbbmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMsIHByZWMsIDApXSkpOworICAgICAgICAgICAgICAg
IGludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91
dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ19pdmVjNCcsICcnLCBmYm9TcGVj
LCBbbmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UX1ZFQzQsIHByZWMsIDApXSkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gLnVpbnQKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0gKi8gdmFyIHVpbnRHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ2Jhc2ljLnVp
bnQnLCAnVXNpZ25lZCBpbnRlZ2VyIG91dHB1dCB0ZXN0cycpOworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQodWludEdyb3VwKTsKKyAgICAgICAgZm9yICh2YXIgZm10TmR4ID0gMDsgZm10TmR4
IDwgcmVxdWlyZWRVaW50Rm9ybWF0cy5sZW5ndGg7IGZtdE5keCsrKSB7CisgICAgICAgICAgICB2
YXIgZm9ybWF0ID0gcmVxdWlyZWRVaW50Rm9ybWF0c1tmbXROZHhdOworICAgICAgICAgICAgdmFy
IGZtdE5hbWUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShmb3JtYXQpOworICAgICAg
ICAgICAgZmJvU3BlYyA9IFtdOworCisgICAgICAgICAgICBmYm9TcGVjLnB1c2gobmV3IGVzM2ZG
cmFnbWVudE91dHB1dFRlc3RzLkJ1ZmZlclNwZWMoZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzYW1w
bGVzKSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByZWNOZHggPSAwOyBwcmVjTmR4IDwgcHJl
Y2lzaW9ucy5sZW5ndGg7IHByZWNOZHgrKykgeworICAgICAgICAgICAgICAgIHByZWMgPSBwcmVj
aXNpb25zW3ByZWNOZHhdOworICAgICAgICAgICAgICAgIHByZWNOYW1lID0gZ2x1U2hhZGVyVXRp
bC5nZXRQcmVjaXNpb25OYW1lKHByZWMpOworCisgICAgICAgICAgICAgICAgdWludEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2UoZm10
TmFtZSArICdfJyArIHByZWNOYW1lICsgJ191aW50JywgJycsIGZib1NwZWMsIFtuZXcgZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5ULCBwcmVjLCAwKV0pKTsKKyAgICAgICAgICAgICAgICB1aW50R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18n
ICsgcHJlY05hbWUgKyAnX3V2ZWMyJywgJycsIGZib1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0
cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzIs
IHByZWMsIDApXSkpOworICAgICAgICAgICAgICAgIHVpbnRHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBw
cmVjTmFtZSArICdfdXZlYzMnLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRU
ZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMywgcHJl
YywgMCldKSk7CisgICAgICAgICAgICAgICAgdWludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJh
Z21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNO
YW1lICsgJ191dmVjNCcsICcnLCBmYm9TcGVjLCBbbmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0LCBwcmVjLCAw
KV0pKTsKKworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgLy8gLmFycmF5CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1UYXJnZXRzID0gMzsKKworICAgICAg
ICAvLyAuZmxvYXQKKyAgICAgICAgaWYgKGdsLmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdCcpKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fSAqLyB2YXIgYXJyYXlGbG9hdEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYXJyYXkuZmxv
YXQnLCAnRmxvYXRpbmctcG9pbnQgb3V0cHV0IHRlc3RzJyk7CisgICAgICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQoYXJyYXlGbG9hdEdyb3VwKTsKKyAgICAgICAgICAgIGZvciAodmFyIGZtdE5k
eCA9IDA7IGZtdE5keCA8IHJlcXVpcmVkRmxvYXRGb3JtYXRzLmxlbmd0aDsgZm10TmR4KyspIHsK
KyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVxdWlyZWRGbG9hdEZvcm1hdHNbZm10TmR4
XTsKKyAgICAgICAgICAgICAgICB2YXIgZm10TmFtZSA9IGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3Jt
YXROYW1lKGZvcm1hdCk7CisgICAgICAgICAgICAgICAgZmJvU3BlYyA9IFtdOworCisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtVGFyZ2V0czsgbmR4KyspCisgICAg
ICAgICAgICAgICAgICAgIGZib1NwZWMucHVzaChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMu
QnVmZmVyU3BlYyhmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpKTsKKworICAgICAgICAg
ICAgICAgIGZvciAodmFyIHByZWNOZHggPSAwOyBwcmVjTmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7
IHByZWNOZHgrKykgeworICAgICAgICAgICAgICAgICAgICBwcmVjID0gcHJlY2lzaW9uc1twcmVj
TmR4XTsKKyAgICAgICAgICAgICAgICAgICAgcHJlY05hbWUgPSBnbHVTaGFkZXJVdGlsLmdldFBy
ZWNpc2lvbk5hbWUocHJlYyk7CisKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlGbG9hdEdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2Uo
Zm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ19mbG9hdCcsICcnLCBmYm9TcGVjLCBbbmV3IGVz
M2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVQsIHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAgICAgICAgICAgICAgICAgICBh
cnJheUZsb2F0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdt
ZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18nICsgcHJlY05hbWUgKyAnX3ZlYzInLCAnJywgZmJv
U3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIsIHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAg
ICAgICAgICAgICAgICAgICBhcnJheUZsb2F0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFnbWVu
dE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18nICsgcHJlY05hbWUg
KyAnX3ZlYzMnLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFn
bWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMsIHByZWMsIDAsIG51
bVRhcmdldHMpXSkpOworICAgICAgICAgICAgICAgICAgICBhcnJheUZsb2F0R3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1l
ICsgJ18nICsgcHJlY05hbWUgKyAnX3ZlYzQnLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21l
bnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X1ZFQzQsIHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5maXhlZAorICAgICAgICAvKiogQHR5
cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgYXJyYXlGaXhlZEdyb3VwID0gdGN1VGVz
dENhc2UubmV3VGVzdCgnYXJyYXkuZml4ZWQnLCAnRml4ZWQtcG9pbnQgb3V0cHV0IHRlc3RzJyk7
CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChhcnJheUZpeGVkR3JvdXApOworICAgICAgICBm
b3IgKHZhciBmbXROZHggPSAwOyBmbXROZHggPCByZXF1aXJlZEZpeGVkRm9ybWF0cy5sZW5ndGg7
IGZtdE5keCsrKSB7CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVxdWlyZWRGaXhlZEZvcm1h
dHNbZm10TmR4XTsKKyAgICAgICAgICAgIHZhciBmbXROYW1lID0gZXMzZkZib1Rlc3RVdGlsLmdl
dEZvcm1hdE5hbWUoZm9ybWF0KTsKKyAgICAgICAgICAgIGZib1NwZWMgPSBbXTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtVGFyZ2V0czsgbmR4KyspCisgICAgICAg
ICAgICAgICAgZmJvU3BlYy5wdXNoKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJT
cGVjKGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcykpOworCisgICAgICAgICAgICBmb3Ig
KHZhciBwcmVjTmR4ID0gMDsgcHJlY05keCA8IHByZWNpc2lvbnMubGVuZ3RoOyBwcmVjTmR4Kysp
IHsKKyAgICAgICAgICAgICAgICBwcmVjID0gcHJlY2lzaW9uc1twcmVjTmR4XTsKKyAgICAgICAg
ICAgICAgICBwcmVjTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShwcmVjKTsK
KworICAgICAgICAgICAgICAgIGFycmF5Rml4ZWRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFt
ZSArICdfZmxvYXQnLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5G
cmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULCBwcmVjLCAwLCBudW1U
YXJnZXRzKV0pKTsKKyAgICAgICAgICAgICAgICBhcnJheUZpeGVkR3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18n
ICsgcHJlY05hbWUgKyAnX3ZlYzInLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRw
dXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIs
IHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAgICAgICAgICAgICAgIGFycmF5Rml4ZWRHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNl
KGZtdE5hbWUgKyAnXycgKyBwcmVjTmFtZSArICdfdmVjMycsICcnLCBmYm9TcGVjLCBbbmV3IGVz
M2ZGcmFnbWVudE91dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfVkVDMywgcHJlYywgMCwgbnVtVGFyZ2V0cyldKSk7CisgICAgICAgICAgICAgICAg
YXJyYXlGaXhlZEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFn
bWVudE91dHB1dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ192ZWM0JywgJycsIGZi
b1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0LCBwcmVjLCAwLCBudW1UYXJnZXRzKV0pKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5pbnQKKyAgICAgICAgLyoqIEB0
eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGFycmF5SW50R3JvdXAgPSB0Y3VUZXN0
Q2FzZS5uZXdUZXN0KCdhcnJheS5pbnQnLCAnSW50ZWdlciBvdXRwdXQgdGVzdHMnKTsKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKGFycmF5SW50R3JvdXApOworICAgICAgICBmb3IgKHZhciBm
bXROZHggPSAwOyBmbXROZHggPCByZXF1aXJlZEludEZvcm1hdHMubGVuZ3RoOyBmbXROZHgrKykg
eworICAgICAgICAgICAgdmFyIGZvcm1hdCA9IHJlcXVpcmVkSW50Rm9ybWF0c1tmbXROZHhdOwor
ICAgICAgICAgICAgdmFyIGZtdE5hbWUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShm
b3JtYXQpOworICAgICAgICAgICAgZmJvU3BlYyA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCBudW1UYXJnZXRzOyBuZHgrKykKKyAgICAgICAgICAgICAgICBmYm9T
cGVjLnB1c2gobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLkJ1ZmZlclNwZWMoZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByZWNOZHgg
PSAwOyBwcmVjTmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7IHByZWNOZHgrKykgeworICAgICAgICAg
ICAgICAgIHByZWMgPSBwcmVjaXNpb25zW3ByZWNOZHhdOworICAgICAgICAgICAgICAgIHByZWNO
YW1lID0gZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25OYW1lKHByZWMpOworCisgICAgICAgICAg
ICAgICAgYXJyYXlJbnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMu
RnJhZ21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFtZSArICdfaW50JywgJycs
IGZib1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsIHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAgICAg
ICAgICAgICAgIGFycmF5SW50R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFnbWVudE91dHB1dFRl
c3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18nICsgcHJlY05hbWUgKyAnX2l2ZWMy
JywgJycsIGZib1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRw
dXQoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMiwgcHJlYywgMCwgbnVtVGFyZ2V0cyld
KSk7CisgICAgICAgICAgICAgICAgYXJyYXlJbnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFt
ZSArICdfaXZlYzMnLCAnJywgZmJvU3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5G
cmFnbWVudE91dHB1dChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLCBwcmVjLCAwLCBu
dW1UYXJnZXRzKV0pKTsKKyAgICAgICAgICAgICAgICBhcnJheUludEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2UoZm10TmFtZSArICdf
JyArIHByZWNOYW1lICsgJ19pdmVjNCcsICcnLCBmYm9TcGVjLCBbbmV3IGVzM2ZGcmFnbWVudE91
dHB1dFRlc3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQs
IHByZWMsIDAsIG51bVRhcmdldHMpXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gLnVpbnQKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8gdmFyIGFycmF5VWludEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnYXJyYXkudWludCcs
ICdVc2lnbmVkIGludGVnZXIgb3V0cHV0IHRlc3RzJyk7CisgICAgICAgIHRlc3RHcm91cC5hZGRD
aGlsZChhcnJheVVpbnRHcm91cCk7CisgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7IGZtdE5k
eCA8IHJlcXVpcmVkVWludEZvcm1hdHMubGVuZ3RoOyBmbXROZHgrKykgeworICAgICAgICAgICAg
dmFyIGZvcm1hdCA9IHJlcXVpcmVkVWludEZvcm1hdHNbZm10TmR4XTsKKyAgICAgICAgICAgIHZh
ciBmbXROYW1lID0gZXMzZkZib1Rlc3RVdGlsLmdldEZvcm1hdE5hbWUoZm9ybWF0KTsKKyAgICAg
ICAgICAgIGZib1NwZWMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgbnVtVGFyZ2V0czsgbmR4KyspCisgICAgICAgICAgICAgICAgZmJvU3BlYy5wdXNoKG5ldyBl
czNmRnJhZ21lbnRPdXRwdXRUZXN0cy5CdWZmZXJTcGVjKGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
c2FtcGxlcykpOworCisgICAgICAgICAgICBmb3IgKHZhciBwcmVjTmR4ID0gMDsgcHJlY05keCA8
IHByZWNpc2lvbnMubGVuZ3RoOyBwcmVjTmR4KyspIHsKKyAgICAgICAgICAgICAgICBwcmVjID0g
cHJlY2lzaW9uc1twcmVjTmR4XTsKKyAgICAgICAgICAgICAgICBwcmVjTmFtZSA9IGdsdVNoYWRl
clV0aWwuZ2V0UHJlY2lzaW9uTmFtZShwcmVjKTsKKworICAgICAgICAgICAgICAgIGFycmF5VWlu
dEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1
dENhc2UoZm10TmFtZSArICdfJyArIHByZWNOYW1lICsgJ191aW50JywgJycsIGZib1NwZWMsIFtu
ZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRPdXRwdXQoZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5ULCBwcmVjLCAwLCBudW1UYXJnZXRzKV0pKTsKKyAgICAgICAgICAgICAgICBh
cnJheVVpbnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21l
bnRPdXRwdXRDYXNlKGZtdE5hbWUgKyAnXycgKyBwcmVjTmFtZSArICdfdXZlYzInLCAnJywgZmJv
U3BlYywgW25ldyBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dChnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMiwgcHJlYywgMCwgbnVtVGFyZ2V0cyldKSk7CisgICAg
ICAgICAgICAgICAgYXJyYXlVaW50R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFnbWVudE91dHB1
dFRlc3RzLkZyYWdtZW50T3V0cHV0Q2FzZShmbXROYW1lICsgJ18nICsgcHJlY05hbWUgKyAnX3V2
ZWMzJywgJycsIGZib1NwZWMsIFtuZXcgZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuRnJhZ21lbnRP
dXRwdXQoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzMsIHByZWMsIDAsIG51bVRhcmdl
dHMpXSkpOworICAgICAgICAgICAgICAgIGFycmF5VWludEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
RnJhZ21lbnRPdXRwdXRUZXN0cy5GcmFnbWVudE91dHB1dENhc2UoZm10TmFtZSArICdfJyArIHBy
ZWNOYW1lICsgJ191dmVjNCcsICcnLCBmYm9TcGVjLCBbbmV3IGVzM2ZGcmFnbWVudE91dHB1dFRl
c3RzLkZyYWdtZW50T3V0cHV0KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0LCBwcmVj
LCAwLCBudW1UYXJnZXRzKV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgLy8g
LnJhbmRvbQorCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8dGN1VGVzdENhc2UuRGVxcFRlc3Q+
fSAqLyB2YXIgcmFuZG9tR3JvdXAgPSBbXTsKKyAgICAgICAgdmFyIG51bVJhbmRvbUdyb3VwcyA9
IDM7CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1SYW5kb21Hcm91cHM7ICsraWkp
IHsKKyAgICAgICAgICAgIHJhbmRvbUdyb3VwW2lpXSA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3Jh
bmRvbScsICdSYW5kb20gZnJhZ21lbnQgb3V0cHV0IGNhc2VzJyk7CisgICAgICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQocmFuZG9tR3JvdXBbaWldKTsKKyAgICAgICAgfQorCisgICAgICAgIC8q
KiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNvbG9yQnVmZmVyRmxvYXRTdXBwb3J0ZWQgPSAoZ2wu
Z2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0JykgIT0gbnVsbCk7CisgICAgICAg
IGZvciAodmFyIHNlZWQgPSAwOyBzZWVkIDwgMTAwOyBzZWVkKyspIHsKKyAgICAgICAgICAgIHZh
ciB0ZXN0ID0gZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuY3JlYXRlUmFuZG9tQ2FzZSgyLCA0LCBz
ZWVkLCBjb2xvckJ1ZmZlckZsb2F0U3VwcG9ydGVkKTsKKyAgICAgICAgICAgIGlmICh0ZXN0ICE9
PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmFuZG9tR3JvdXBbc2VlZCAlIG51bVJhbmRvbUdy
b3Vwc10uYWRkQ2hpbGQodGVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW5kIGV4ZWN1dGUgdGhlIHRlc3QgY2FzZXMKKyAg
ICAgKi8KKyAgICBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0
LCByYW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAvL1NldCB1cCBUZXN0IFJv
b3QgcGFyYW1ldGVycworICAgICAgICB2YXIgdGVzdE5hbWUgPSAnZnJhZ21lbnRfb3V0cHV0JzsK
KyAgICAgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdGcmFnbWVudCBPdXRwdXQgVGVzdHMnOwor
ICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAgICAgc3RhdGUu
dGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUudGVzdENhc2VzID0gdGN1VGVzdENh
c2UubmV3VGVzdCh0ZXN0TmFtZSwgdGVzdERlc2NyaXB0aW9uLCBudWxsKTsKKworICAgICAgLy9T
ZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAg
c2V0Q3VycmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERl
c2NyaXB0aW9uKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZXMzZkZyYWdtZW50T3V0
cHV0VGVzdHMuaW5pdChnbCk7CisgICAgICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICAg
ICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVz
dENhc2VzKCk7CisgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5ydW4gdGVzdHMnLCBm
YWxzZSk7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOworICAgICAgICAg
ICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisKKyAgICB9Owor
Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuanMg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYzZh
MGM2OGNlYzAxY2RjNTkwYjE3NjYyNGZlYzcwMWM3M2UzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLmpzCkBAIC0wLDAgKzEsMTI2MSBAQAor
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5H
TCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNl
IFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgKgorICovCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZh
Y2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVu
Y2Uuc2dsckdMQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBs
ZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkZib1Rlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZib1Rlc3RVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIg
ZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJhbWVidWZm
ZXJCbGl0VGVzdHM7CisgICAgdmFyIGVzM2ZGYm9UZXN0Q2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZib1Rlc3RDYXNlOworICAgIHZhciBlczNmRmJvVGVzdFV0aWwgPSBmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9UZXN0VXRpbDsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRlc3RDYXNlOworICAgIHZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VTdXJmYWNlOworICAgIHZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOwor
ICAgIHZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFy
ZTsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAg
ICB2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsOwor
ICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisgICAgdmFy
IGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKKyAgICB2
YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsKKyAgICB2
YXIgcnJVdGlsID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVXRpbDsKKyAgICB2YXIg
c2dsclJlZmVyZW5jZUNvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5z
Z2xyUmVmZXJlbmNlQ29udGV4dDsKKyAgICB2YXIgc2dsckdMQ29udGV4dCA9IGZyYW1ld29yay5v
cGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQ7CisKKyAgICB2YXIgREVfQVNTRVJU
ID0gZnVuY3Rpb24oeCkgeworICAgICAgICBpZiAoIXgpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsKKyAgICB9OworCisgICAgLyoqIEB0eXBlIHtXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0fSAqLyB2YXIgZ2w7CisgICAgLyoqCisgICAgKiBlczNmRnJhbWVidWZm
ZXJCbGl0VGVzdHMuQmxpdFJlY3RDYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIEZib1Rlc3RDYXNl
CisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHtlczNmRmJvVGVzdENhc2UuRmJv
VGVzdENhc2V9CisgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2MKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBmaWx0ZXIgZGVVaW50MzIKKyAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gc3JjU2l6ZQorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBzcmNSZWN0CisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGRzdFNpemUKKyAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gZHN0UmVjdAorICAgICogQHBhcmFtIHtudW1iZXI9fSBjZWxs
U2l6ZQorICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXRSZWN0Q2FzZSA9
IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGZpbHRlciwgc3JjU2l6ZSwgc3JjUmVjdCwgZHN0U2l6ZSwg
ZHN0UmVjdCwgY2VsbFNpemUpIHsKKyAgICAgICAgZXMzZkZib1Rlc3RDYXNlLkZib1Rlc3RDYXNl
LmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8g
dGhpcy5tX2ZpbHRlciA9IGZpbHRlcjsKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVy
Pn0gKi8gdGhpcy5tX3NyY1NpemUgPSBzcmNTaXplOworICAgICAgICAvKiogQGNvbnN0IHtBcnJh
eTxudW1iZXI+fSAqLyB0aGlzLm1fc3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgICAgIC8qKiBAY29u
c3Qge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9kc3RTaXplID0gZHN0U2l6ZTsKKyAgICAgICAg
LyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2RzdFJlY3QgPSBkc3RSZWN0Owor
ICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHRoaXMubV9jZWxsU2l6ZSA9IGNlbGxTaXpl
ID09PSB1bmRlZmluZWQgPyA4IDogY2VsbFNpemU7CisgICAgICAgIC8qKiBAY29uc3Qge0FycmF5
PG51bWJlcj59ICovIHRoaXMubV9ncmlkQ2VsbENvbG9yQSA9IFswLjIsIDAuNywgMC4xLCAxLjBd
OworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fZ3JpZENlbGxD
b2xvckIgPSBbMC43LCAwLjEsIDAuNSwgMC44XTsKKyAgICB9OworCisgICAgZXMzZkZyYW1lYnVm
ZmVyQmxpdFRlc3RzLkJsaXRSZWN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZG
Ym9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZGcmFtZWJ1ZmZlckJs
aXRUZXN0cy5CbGl0UmVjdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZyYW1lYnVm
ZmVyQmxpdFRlc3RzLkJsaXRSZWN0Q2FzZTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHt0Y3VT
dXJmYWNlLlN1cmZhY2V9IGRzdAorICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3Rz
LkJsaXRSZWN0Q2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAg
IHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgY29sb3JGb3JtYXQgPSBnbC5SR0JBODsKKworICAgICAgICAvKiogQHR5
cGUge2VzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGdyYWRT
aGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKAorICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgdGV4U2hhZGVy
ID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVSXzJEXSwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCk7CisKKyAgICAgICAgdmFyIGdyYWRTaGFkZXJJRCA9IGN0
eC5jcmVhdGVQcm9ncmFtKGdyYWRTaGFkZXIpOworICAgICAgICB2YXIgdGV4U2hhZGVySUQgPSBj
dHguY3JlYXRlUHJvZ3JhbSh0ZXhTaGFkZXIpOworCisgICAgICAgIHZhciBzcmNGYm87CisgICAg
ICAgIHZhciBkc3RGYm87CisgICAgICAgIHZhciBzcmNSYm87CisgICAgICAgIHZhciBkc3RSYm87
CisKKyAgICAgICAgLy8gU2V0dXAgc2hhZGVycworICAgICAgICBncmFkU2hhZGVyLnNldEdyYWRp
ZW50KGN0eCwgZ3JhZFNoYWRlcklELCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzEuMCwgMS4wLCAx
LjAsIDEuMF0pOworICAgICAgICB0ZXhTaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCB0ZXhTaGFkZXJJ
RCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGZyYW1lYnVmZmVycy4KKworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzaXplOworCisgICAgICAgIC8vIHNvdXJjZSBmcmFt
ZWJ1ZmZlcnMKKyAgICAgICAgc3JjRmJvID0gY3R4LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
ICAgIHNyY1JibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgc2l6ZSA9IHRo
aXMubV9zcmNTaXplOworCisgICAgICAgIGN0eC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJV
RkZFUiwgc3JjUmJvKTsKKyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVS
QlVGRkVSLCBjb2xvckZvcm1hdCwgc2l6ZVswXSwgc2l6ZVsxXSk7CisgICAgICAgIGN0eC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHNyY0Zibyk7CisgICAgICAgIGN0eC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgc3JjUmJvKTsKKyAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAg
ICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICAg
ICAgLy8gZGVzdGluYXRpb24gZnJhbWVidWZmZXJzCisgICAgICAgIGRzdEZibyA9IGN0eC5jcmVh
dGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBkc3RSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVy
KCk7CisgICAgICAgIHNpemUgPSB0aGlzLm1fZHN0U2l6ZTsKKworICAgICAgICBjdHguYmluZFJl
bmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRzdFJibyk7CisgICAgICAgIGN0eC5yZW5kZXJi
dWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JGb3JtYXQsIHNpemVbMF0sIHNpemVb
MV0pOworICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBkc3RGYm8p
OworICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGRzdFJibyk7CisgICAgICAgIHRo
aXMuY2hlY2tFcnJvcigpOworICAgICAgICB0aGlzLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpOworCisgICAgICAgIC8vIEZpbGwgZGVzdGluYXRpb24gd2l0aCBncmFkaWVu
dC4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZHN0RmJvKTsK
KyAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIHRoaXMubV9kc3RTaXplWzBdLCB0aGlzLm1fZHN0
U2l6ZVsxXSk7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZ3JhZFNoYWRlcklELCBb
LTEsIC0xLCAwXSwgWzEsIDEsIDBdKTsKKworICAgICAgICAvLyBGaWxsIHNvdXJjZSB3aXRoIGdy
aWQgcGF0dGVybi4KKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgZm9ybWF0ID0g
Z2wuUkdCQTsKKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgZGF0YVR5cGUgPSBn
bC5VTlNJR05FRF9CWVRFOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciB0ZXhX
ID0gdGhpcy5tX3NyY1NpemVbMF07CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFy
IHRleEggPSB0aGlzLm1fc3JjU2l6ZVsxXTsKKyAgICAgICAgdmFyIGdyaWRUZXg7CisgICAgICAg
IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHZhciBkYXRhID0gbmV3IHRj
dVRleHR1cmUuVGV4dHVyZUxldmVsKGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQo
Zm9ybWF0LCBkYXRhVHlwZSksIHRleFcsIHRleEgsIDEpOworCisgICAgICAgIHRjdVRleHR1cmVV
dGlsLmZpbGxXaXRoR3JpZChkYXRhLmdldEFjY2VzcygpLCB0aGlzLm1fY2VsbFNpemUsIHRoaXMu
bV9ncmlkQ2VsbENvbG9yQSwgdGhpcy5tX2dyaWRDZWxsQ29sb3JCKTsKKworICAgICAgICBncmlk
VGV4ID0gY3R4LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgY3R4LmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIGdyaWRUZXgpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGN0eC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAg
ICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB0ZXhXLCB0ZXhILCAw
LCBmb3JtYXQsIGRhdGFUeXBlLCBkYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKSk7CisKKyAg
ICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgc3JjRmJvKTsKKyAgICAg
ICAgY3R4LnZpZXdwb3J0KDAsIDAsIHRoaXMubV9zcmNTaXplWzBdLCB0aGlzLm1fc3JjU2l6ZVsx
XSk7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgdGV4U2hhZGVySUQsIFstMSwgLTEs
IDBdLCBbMSwgMSwgMF0pOworCisgICAgICAgIC8vIFBlcmZvcm0gY29weS4KKyAgICAgICAgY3R4
LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBzcmNGYm8pOworICAgICAgICBj
dHguYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGRzdEZibyk7CisgICAgICAg
IGN0eC5ibGl0RnJhbWVidWZmZXIodGhpcy5tX3NyY1JlY3RbMF0sIHRoaXMubV9zcmNSZWN0WzFd
LCB0aGlzLm1fc3JjUmVjdFsyXSwgdGhpcy5tX3NyY1JlY3RbM10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fZHN0UmVjdFswXSwgdGhpcy5tX2RzdFJlY3RbMV0sIHRoaXMubV9k
c3RSZWN0WzJdLCB0aGlzLm1fZHN0UmVjdFszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsLkNPTE9SX0JVRkZFUl9CSVQsIHRoaXMubV9maWx0ZXIpOworCisgICAgICAgIC8vIFJlYWQg
YmFjayByZXN1bHRzLgorICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVC
VUZGRVIsIGRzdEZibyk7CisKKyAgICAgICAgdGhpcy5yZWFkUGl4ZWxzVXNpbmdGb3JtYXQoZHN0
LCAwLCAwLCB0aGlzLm1fZHN0U2l6ZVswXSwgdGhpcy5tX2RzdFNpemVbMV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVy
bmFsRm9ybWF0KGNvbG9yRm9ybWF0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsxLjAsIDEuMCwgMS4wLCAxLjBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWzAuMCwgMC4wLCAwLjAsIDAuMF0pOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSByZWZlcmVuY2UKKyAgICAqIEBw
YXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSByZXN1bHQKKyAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgKi8KKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdFJlY3RDYXNlLnByb3Rv
dHlwZS5jb21wYXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICAgICAgLy8g
VXNlIHBpeGVsLXRocmVzaG9sZCBjb21wYXJlIGZvciByZWN0IGNhc2VzIHNpbmNlIDFweCBvZmYg
d2lsbCBtZWFuIGZhaWx1cmUuCisgICAgICAgIHZhciB0aHJlc2hvbGQgPSBbNywgNywgNywgN107
CisgICAgICAgIHJldHVybiB0Y3VJbWFnZUNvbXBhcmUucGl4ZWxUaHJlc2hvbGRDb21wYXJlKCdS
ZXN1bHQnLCAnSW1hZ2UgY29tcGFyaXNvbiByZXN1bHQnLCByZWZlcmVuY2UsIHJlc3VsdCwgdGhy
ZXNob2xkKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBlczNmRnJhbWVidWZmZXJCbGl0VGVz
dHMuQmxpdE5lYXJlc3RGaWx0ZXJDb25zaXN0ZW5jeUNhc2UgY2xhc3MKKyAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICogQGV4dGVuZHMge2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0UmVjdENh
c2V9CisgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2MKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gc3JjU2l6ZQorICAgICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBzcmNSZWN0CisgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGRzdFNp
emUKKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZHN0UmVjdAorICAgICovCisgICAgZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXROZWFyZXN0RmlsdGVyQ29uc2lzdGVuY3lDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzYywgc3JjU2l6ZSwgc3JjUmVjdCwgZHN0U2l6ZSwgZHN0UmVjdCkg
eworICAgICAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdFJlY3RDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzYywgZ2wuTkVBUkVTVCwgc3JjU2l6ZSwgc3JjUmVjdCwgZHN0U2l6ZSwgZHN0
UmVjdCwgMSk7CisgICAgfTsKKworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0TmVh
cmVzdEZpbHRlckNvbnNpc3RlbmN5Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZG
cmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0UmVjdENhc2UucHJvdG90eXBlKTsKKyAgICBlczNmRnJh
bWVidWZmZXJCbGl0VGVzdHMuQmxpdE5lYXJlc3RGaWx0ZXJDb25zaXN0ZW5jeUNhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXROZWFyZXN0Rmls
dGVyQ29uc2lzdGVuY3lDYXNlOworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2Uu
U3VyZmFjZX0gcmVmZXJlbmNlCisgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVz
dWx0CisgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzLkJsaXROZWFyZXN0RmlsdGVyQ29uc2lzdGVuY3lDYXNlLnByb3RvdHlwZS5jb21w
YXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyhyZXN1bHQuZ2V0V2lkdGgoKSA9PSByZWZlcmVuY2UuZ2V0V2lkdGgoKSAmJiByZXN1bHQu
Z2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNlLmdldEhlaWdodCgpLAorICAgICAgICAgICAgJ1JlZmVy
ZW5jZSBhbmQgcmVzdWx0IGltYWdlcyBoYXZlIGRpZmZlcmVudCBkaW1lbnNpb25zJywgZmFsc2Us
IHRydWUpOworCisgICAgICAgIC8vIEltYWdlIG9yaWdpbiBtdXN0IGJlIHZpc2libGUgKGZvciBi
YXNlQ29sb3IpCisgICAgICAgIERFX0FTU0VSVChNYXRoLm1pbih0aGlzLm1fZHN0UmVjdFswXSwg
dGhpcy5tX2RzdFJlY3RbMl0pID49IDApOworICAgICAgICBERV9BU1NFUlQoTWF0aC5taW4odGhp
cy5tX2RzdFJlY3RbMV0sIHRoaXMubV9kc3RSZWN0WzNdKSA+PSAwKTsKKyAgICAgICAgLyoqIEBj
b25zdCB7dGN1UkdCQS5SR0JBfSAqLyB2YXIgY2VsbENvbG9yQSA9IHRjdVJHQkEubmV3UkdCQUZy
b21WZWModGhpcy5tX2dyaWRDZWxsQ29sb3JBKTsKKyAgICAgICAgLyoqIEBjb25zdCB7dGN1UkdC
QS5SR0JBfSAqLyB2YXIgY2VsbENvbG9yQiA9IHRjdVJHQkEubmV3UkdCQUZyb21WZWModGhpcy5t
X2dyaWRDZWxsQ29sb3JCKTsKKyAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50CisgICAgICAgIC8v
IGNvbnN0IHRjdTo6UkdCQSB0aHJlc2hvbGQgPSB0aGlzLm1fY29udGV4dC5nZXRSZW5kZXJUYXJn
ZXQoKS5nZXRQaXhlbEZvcm1hdCgpLmdldENvbG9yVGhyZXNob2xkKCkgKyB0Y3U6OlJHQkEoNyw3
LDcsNyk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1UkdCQS5SR0JBfSAqLyB2YXIgdGhyZXNob2xk
ID0gdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cyg3LCA3LCA3LCA3KTsKKyAgICAgICAgLyoqIEBj
b25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gIC8vSVZlYzQueHl6dworICAgICAgICB2YXIgZGVzdGlu
YXRpb25BcmVhID0gWworICAgICAgICAgICAgZGVNYXRoLmNsYW1wKE1hdGgubWluKHRoaXMubV9k
c3RSZWN0WzBdLCB0aGlzLm1fZHN0UmVjdFsyXSksIDAsIHJlc3VsdC5nZXRXaWR0aCgpKSwKKyAg
ICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRoLm1pbih0aGlzLm1fZHN0UmVjdFsxXSwgdGhpcy5t
X2RzdFJlY3RbM10pLCAwLCByZXN1bHQuZ2V0SGVpZ2h0KCkpLAorICAgICAgICAgICAgZGVNYXRo
LmNsYW1wKE1hdGgubWF4KHRoaXMubV9kc3RSZWN0WzBdLCB0aGlzLm1fZHN0UmVjdFsyXSksIDAs
IHJlc3VsdC5nZXRXaWR0aCgpKSwKKyAgICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRoLm1heCh0
aGlzLm1fZHN0UmVjdFsxXSwgdGhpcy5tX2RzdFJlY3RbM10pLCAwLCByZXN1bHQuZ2V0SGVpZ2h0
KCkpXTsKKworICAgICAgICAvKiogQGNvbnN0IHt0Y3VSR0JBLlJHQkF9ICovIHZhciBiYXNlQ29s
b3IgPSBuZXcgdGN1UkdCQS5SR0JBKHJlc3VsdC5nZXRQaXhlbChkZXN0aW5hdGlvbkFyZWFbMF0s
IGRlc3RpbmF0aW9uQXJlYVsxXSkpOworCisgICAgICAgIC8qKiBAY29uc3Qge2Jvb2xlYW59ICov
IHZhciBzaWduQ29uZmlnID0gdGN1UkdCQS5jb21wYXJlVGhyZXNob2xkKGJhc2VDb2xvciwgY2Vs
bENvbG9yQSwgdGhyZXNob2xkKTsKKworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBlcnJvciA9IGZhbHNlOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0g
Ki8gdmFyIGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UocmVzdWx0LmdldFdpZHRo
KCksIHJlc3VsdC5nZXRIZWlnaHQoKSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVh
bj59ICovIHZhciBob3Jpc29udGFsU2lnbiA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PGJvb2xlYW4+fSAqLyB2YXIgdmVydGljYWxTaWduID0gW107CisKKyAgICAgICAgZXJyb3JNYXNr
LmdldEFjY2VzcygpLmNsZWFyKFswLjAsIDEuMCwgMC4wLCAxLjBdKTsKKworICAgICAgICAvLyBD
aGVja2luZyBvbmx5IGFyZWEgaW4gb3VyIGRlc3RpbmF0aW9uIHJlY3QKKworICAgICAgICAvLyBt
X3Rlc3RDdHguZ2V0TG9nKCkKKyAgICAgICAgLy8gICAgIDw8IHRjdTo6VGVzdExvZzo6TWVzc2Fn
ZQorICAgICAgICAvLyAgICAgPDwgJ1ZlcmlmeWluZyBjb25zaXN0ZW5jeSBvZiBORUFSRVNUIGZp
bHRlcmluZy4gVmVyaWZ5aW5nIHJlY3QgJyA8PCBtX2RzdFJlY3QgPDwgJy5cbicKKyAgICAgICAg
Ly8gICAgIDw8ICdSb3VuZGluZyBkaXJlY3Rpb24gb2YgdGhlIE5FQVJFU1QgZmlsdGVyIGF0IHRo
ZSBob3Jpc29udGFsIHRleGVsIGVkZ2UgKHggPSBuICsgMC41KSBzaG91bGQgbm90IGRlcGVuZCBv
biB0aGUgeS1jb29yZGluYXRlLlxuJworICAgICAgICAvLyAgICAgPDwgJ1JvdW5kaW5nIGRpcmVj
dGlvbiBvZiB0aGUgTkVBUkVTVCBmaWx0ZXIgYXQgdGhlIHZlcnRpY2FsIHRleGVsIGVkZ2UgKHkg
PSBuICsgMC41KSBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgeC1jb29yZGluYXRlLlxuJworICAg
ICAgICAvLyAgICAgPDwgJ0JsaXR0aW5nIGEgZ3JpZCAod2l0aCB1bmlmb3JtIHNpemVkIGNlbGxz
KSBzaG91bGQgcmVzdWx0IGluIGEgZ3JpZCAod2l0aCBub24tdW5pZm9ybSBzaXplZCBjZWxscyku
JworICAgICAgICAvLyAgICAgPDwgdGN1OjpUZXN0TG9nOjpFbmRNZXNzYWdlOworCisgICAgICAg
IC8vIFZlcmlmeSB0aGF0IGRlc3RpbmF0aW9uIG9ubHkgY29udGFpbnMgdmFsaWQgY29sb3JzCisK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciBjb2xvcjsKKworICAgICAg
ICBmb3IgKHZhciBkeSA9IDA7IGR5IDwgZGVzdGluYXRpb25BcmVhWzNdIC0gZGVzdGluYXRpb25B
cmVhWzFdOyArK2R5KSB7CisgICAgICAgICAgICBmb3IgKHZhciBkeCA9IDA7IGR4IDwgZGVzdGlu
YXRpb25BcmVhWzJdIC0gZGVzdGluYXRpb25BcmVhWzBdOyArK2R4KSB7CisgICAgICAgICAgICAg
ICAgY29sb3IgPSBuZXcgdGN1UkdCQS5SR0JBKHJlc3VsdC5nZXRQaXhlbChkZXN0aW5hdGlvbkFy
ZWFbMF0gKyBkeCwgZGVzdGluYXRpb25BcmVhWzFdICsgZHkpKTsKKworICAgICAgICAgICAgICAg
IC8qKiBAY29uc3Qge2Jvb2xlYW59ICovCisgICAgICAgICAgICAgICAgdmFyIGlzVmFsaWRDb2xv
ciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1UkdCQS5jb21wYXJlVGhyZXNob2xk
KGNvbG9yLCBjZWxsQ29sb3JBLCB0aHJlc2hvbGQpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGN1UkdCQS5jb21wYXJlVGhyZXNob2xkKGNvbG9yLCBjZWxsQ29sb3JCLCB0aHJlc2hv
bGQpOworCisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29sb3IpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVsKGRlc3RpbmF0aW9uQXJlYVswXSArIGR4LCBkZXN0
aW5hdGlvbkFyZWFbMV0gKyBkeSwgdGN1UkdCQS5SR0JBLnJlZC50b1ZlYygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgLy8gbV90
ZXN0Q3R4LmdldExvZygpCisgICAgICAgICAgICAvLyAgICAgPDwgdGN1OjpUZXN0TG9nOjpNZXNz
YWdlCisgICAgICAgICAgICAvLyAgICAgPDwgJ0ltYWdlIHZlcmlmaWNhdGlvbiBmYWlsZWQsIGRl
c3RpbmF0aW9uIHJlY3QgY29udGFpbnMgdW5leHBlY3RlZCB2YWx1ZXMuICcKKyAgICAgICAgICAg
IC8vICAgICA8PCAnRXhwZWN0ZWQgZWl0aGVyICcgPDwgY2VsbENvbG9yQSA8PCAnIG9yICcgPDwg
Y2VsbENvbG9yQiA8PCAnLicKKyAgICAgICAgICAgIC8vICAgICA8PCB0Y3U6OlRlc3RMb2c6OkVu
ZE1lc3NhZ2UKKyAgICAgICAgICAgIC8vICAgICA8PCB0Y3U6OlRlc3RMb2c6OkltYWdlU2V0KCdS
ZXN1bHQnLCAnSW1hZ2UgdmVyaWZpY2F0aW9uIHJlc3VsdCcpCisgICAgICAgICAgICAvLyAgICAg
PDwgdGN1OjpUZXN0TG9nOjpJbWFnZSgnUmVzdWx0JywgJ1Jlc3VsdCcsIHJlc3VsdCkKKyAgICAg
ICAgICAgIC8vICAgICA8PCB0Y3U6OlRlc3RMb2c6OkltYWdlKCdFcnJvck1hc2snLCAnRXJyb3Ig
bWFzaycsIGVycm9yTWFzaykKKyAgICAgICAgICAgIC8vICAgICA8PCB0Y3U6OlRlc3RMb2c6OkVu
ZEltYWdlU2V0OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gRGV0ZWN0IHJlc3VsdCBlZGdlcyBieSByZWFkaW5nIHRoZSBmaXJzdCByb3cgYW5kIGZp
cnN0IGNvbHVtbiBvZiB0aGUgYmxpdHRlZCBhcmVhLgorICAgICAgICAvLyBCbGl0dGluZyBhIGdy
aWQgc2hvdWxkIHJlc3VsdCBpbiBhIGdyaWQtbGlrZSBpbWFnZS4gKCdzaWduIGNoYW5nZXMnIHNo
b3VsZCBiZSBjb25zaXN0ZW50KQorCisgICAgICAgIGZvciAodmFyIGR4ID0gMDsgZHggPCBkZXN0
aW5hdGlvbkFyZWFbMl0gLSBkZXN0aW5hdGlvbkFyZWFbMF07ICsrZHgpIHsKKyAgICAgICAgICAg
IGNvbG9yID0gbmV3IHRjdVJHQkEuUkdCQShyZXN1bHQuZ2V0UGl4ZWwoZGVzdGluYXRpb25BcmVh
WzBdICsgZHgsIGRlc3RpbmF0aW9uQXJlYVsxXSkpOworICAgICAgICAgICAgaWYgKHRjdVJHQkEu
Y29tcGFyZVRocmVzaG9sZChjb2xvciwgY2VsbENvbG9yQSwgdGhyZXNob2xkKSkKKyAgICAgICAg
ICAgICAgICBob3Jpc29udGFsU2lnbltkeF0gPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAo
dGN1UkdCQS5jb21wYXJlVGhyZXNob2xkKGNvbG9yLCBjZWxsQ29sb3JCLCB0aHJlc2hvbGQpKQor
ICAgICAgICAgICAgICAgIGhvcmlzb250YWxTaWduW2R4XSA9IGZhbHNlOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yICh2YXIgZHkgPSAwOyBkeSA8IGRlc3RpbmF0aW9uQXJlYVszXSAtIGRlc3RpbmF0aW9u
QXJlYVsxXTsgKytkeSkgeworICAgICAgICAgICAgY29sb3IgPSBuZXcgdGN1UkdCQS5SR0JBKHJl
c3VsdC5nZXRQaXhlbChkZXN0aW5hdGlvbkFyZWFbMF0sIGRlc3RpbmF0aW9uQXJlYVsxXSArIGR5
KSk7CisKKyAgICAgICAgICAgIGlmICh0Y3VSR0JBLmNvbXBhcmVUaHJlc2hvbGQoY29sb3IsIGNl
bGxDb2xvckEsIHRocmVzaG9sZCkpCisgICAgICAgICAgICAgICAgdmVydGljYWxTaWduW2R5XSA9
IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICh0Y3VSR0JBLmNvbXBhcmVUaHJlc2hvbGQoY29s
b3IsIGNlbGxDb2xvckIsIHRocmVzaG9sZCkpCisgICAgICAgICAgICAgICAgdmVydGljYWxTaWdu
W2R5XSA9IGZhbHNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIERFX0FTU0VS
VChmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBWZXJpZnkgZ3JpZC1saWtlIGltYWdl
CisKKyAgICAgICAgZm9yICh2YXIgZHkgPSAwOyBkeSA8IGRlc3RpbmF0aW9uQXJlYVszXSAtIGRl
c3RpbmF0aW9uQXJlYVsxXTsgKytkeSkgeworICAgICAgICAgICAgZm9yICh2YXIgZHggPSAwOyBk
eCA8IGRlc3RpbmF0aW9uQXJlYVsyXSAtIGRlc3RpbmF0aW9uQXJlYVswXTsgKytkeCkgeworICAg
ICAgICAgICAgICAgIGNvbG9yID0gbmV3IHRjdVJHQkEuUkdCQShyZXN1bHQuZ2V0UGl4ZWwoZGVz
dGluYXRpb25BcmVhWzBdICsgZHgsIGRlc3RpbmF0aW9uQXJlYVsxXSArIGR5KSk7CisgICAgICAg
ICAgICAgICAgLyoqIEBjb25zdCB7Ym9vbGVhbn0gKi8gdmFyIHJlc3VsdFNpZ24gPSB0Y3VSR0JB
LmNvbXBhcmVUaHJlc2hvbGQoY2VsbENvbG9yQSwgY29sb3IsIHRocmVzaG9sZCk7CisgICAgICAg
ICAgICAgICAgLyoqIEBjb25zdCB7Ym9vbGVhbn0gKi8gdmFyIGNvcnJlY3RTaWduID0gKGhvcmlz
b250YWxTaWduW2R4XSA9PSB2ZXJ0aWNhbFNpZ25bZHldKSA9PSBzaWduQ29uZmlnOworCisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdFNpZ24gIT0gY29ycmVjdFNpZ24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVsKGRlc3RpbmF0aW9uQXJlYVswXSArIGR4LCBkZXN0
aW5hdGlvbkFyZWFbMV0gKyBkeSwgdGN1UkdCQS5SR0JBLnJlZC50b1ZlYygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICAvLyBSZXBvcnQgcmVzdWx0CisKKyAgICAgICAgLy8gaWYg
KGVycm9yKQorICAgICAgICAvLyB7CisgICAgICAgIC8vICAgICBtX3Rlc3RDdHguZ2V0TG9nKCkK
KyAgICAgICAgLy8gICAgICAgICA8PCB0Y3U6OlRlc3RMb2c6Ok1lc3NhZ2UKKyAgICAgICAgLy8g
ICAgICAgICA8PCAnSW1hZ2UgdmVyaWZpY2F0aW9uIGZhaWxlZCwgbmVhcmVzdCBmaWx0ZXIgaXMg
bm90IGNvbnNpc3RlbnQuJworICAgICAgICAvLyAgICAgICAgIDw8IHRjdTo6VGVzdExvZzo6RW5k
TWVzc2FnZQorICAgICAgICAvLyAgICAgICAgIDw8IHRjdTo6VGVzdExvZzo6SW1hZ2VTZXQoJ1Jl
c3VsdCcsICdJbWFnZSB2ZXJpZmljYXRpb24gcmVzdWx0JykKKyAgICAgICAgLy8gICAgICAgICA8
PCB0Y3U6OlRlc3RMb2c6OkltYWdlKCdSZXN1bHQnLCAnUmVzdWx0JywgcmVzdWx0KQorICAgICAg
ICAvLyAgICAgICAgIDw8IHRjdTo6VGVzdExvZzo6SW1hZ2UoJ0Vycm9yTWFzaycsICdFcnJvciBt
YXNrJywgZXJyb3JNYXNrKQorICAgICAgICAvLyAgICAgICAgIDw8IHRjdTo6VGVzdExvZzo6RW5k
SW1hZ2VTZXQ7CisgICAgICAgIC8vIH0KKyAgICAgICAgLy8gZWxzZQorICAgICAgICAvLyB7Cisg
ICAgICAgIC8vICAgICBtX3Rlc3RDdHguZ2V0TG9nKCkKKyAgICAgICAgLy8gICAgICAgICA8PCB0
Y3U6OlRlc3RMb2c6Ok1lc3NhZ2UKKyAgICAgICAgLy8gICAgICAgICA8PCAnSW1hZ2UgdmVyaWZp
Y2F0aW9uIHBhc3NlZC4nCisgICAgICAgIC8vICAgICAgICAgPDwgdGN1OjpUZXN0TG9nOjpFbmRN
ZXNzYWdlCisgICAgICAgIC8vICAgICAgICAgPDwgdGN1OjpUZXN0TG9nOjpJbWFnZVNldCgnUmVz
dWx0JywgJ0ltYWdlIHZlcmlmaWNhdGlvbiByZXN1bHQnKQorICAgICAgICAvLyAgICAgICAgIDw8
IHRjdTo6VGVzdExvZzo6SW1hZ2UoJ1Jlc3VsdCcsICdSZXN1bHQnLCByZXN1bHQpCisgICAgICAg
IC8vICAgICAgICAgPDwgdGN1OjpUZXN0TG9nOjpFbmRJbWFnZVNldDsKKyAgICAgICAgLy8gfQor
CisgICAgICAgIHJldHVybiAhZXJyb3I7CisgICAgfTsKKworICAgIC8qKgorICAgICogZXMzZkZy
YW1lYnVmZmVyQmxpdFRlc3RzLkZyYW1lYnVmZmVyQmxpdFRlc3RzIGNsYXNzLCBpbmhlcml0cyBm
cm9tIFRlc3RDYXNlCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0Y3VUZXN0
Q2FzZS5EZXFwVGVzdH0KKyAgICAqLworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5GcmFt
ZWJ1ZmZlckJsaXRUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsICdibGl0JywgJ0ZyYW1lYnVmZmVyIGJsaXQgdGVzdHMnKTsKKyAgICB9
OworCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkZyYW1lYnVmZmVyQmxpdFRlc3RzLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsK
KyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuRnJhbWVidWZmZXJCbGl0VGVzdHMucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkZyYW1lYnVmZmVyQmxp
dFRlc3RzOworCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkZyYW1lYnVmZmVyQmxpdFRl
c3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAY29uc3Qge0Fy
cmF5PG51bWJlcj59ICovIHZhciBjb2xvckZvcm1hdHMgPSBbCisgICAgICAgICAgICAvLyBSR0JB
IGZvcm1hdHMKKyAgICAgICAgICAgIGdsLlJHQkEzMkksCisgICAgICAgICAgICBnbC5SR0JBMzJV
SSwKKyAgICAgICAgICAgIGdsLlJHQkExNkksCisgICAgICAgICAgICBnbC5SR0JBMTZVSSwKKyAg
ICAgICAgICAgIGdsLlJHQkE4LAorICAgICAgICAgICAgZ2wuUkdCQThJLAorICAgICAgICAgICAg
Z2wuUkdCQThVSSwKKyAgICAgICAgICAgIGdsLlNSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgIGds
LlJHQjEwX0EyLAorICAgICAgICAgICAgZ2wuUkdCMTBfQTJVSSwKKyAgICAgICAgICAgIGdsLlJH
QkE0LAorICAgICAgICAgICAgZ2wuUkdCNV9BMSwKKworICAgICAgICAgICAgLy8gUkdCIGZvcm1h
dHMKKyAgICAgICAgICAgIGdsLlJHQjgsCisgICAgICAgICAgICBnbC5SR0I1NjUsCisKKyAgICAg
ICAgICAgIC8vIFJHIGZvcm1hdHMKKyAgICAgICAgICAgIGdsLlJHMzJJLAorICAgICAgICAgICAg
Z2wuUkczMlVJLAorICAgICAgICAgICAgZ2wuUkcxNkksCisgICAgICAgICAgICBnbC5SRzE2VUks
CisgICAgICAgICAgICBnbC5SRzgsCisgICAgICAgICAgICBnbC5SRzhJLAorICAgICAgICAgICAg
Z2wuUkc4VUksCisKKyAgICAgICAgICAgIC8vIFIgZm9ybWF0cworICAgICAgICAgICAgZ2wuUjMy
SSwKKyAgICAgICAgICAgIGdsLlIzMlVJLAorICAgICAgICAgICAgZ2wuUjE2SSwKKyAgICAgICAg
ICAgIGdsLlIxNlVJLAorICAgICAgICAgICAgZ2wuUjgsCisgICAgICAgICAgICBnbC5SOEksCisg
ICAgICAgICAgICBnbC5SOFVJLAorCisgICAgICAgICAgICAvLyBnbC5FWFRfY29sb3JfYnVmZmVy
X2Zsb2F0CisgICAgICAgICAgICBnbC5SR0JBMzJGLAorICAgICAgICAgICAgZ2wuUkdCQTE2RiwK
KyAgICAgICAgICAgIGdsLlIxMUZfRzExRl9CMTBGLAorICAgICAgICAgICAgZ2wuUkczMkYsCisg
ICAgICAgICAgICBnbC5SRzE2RiwKKyAgICAgICAgICAgIGdsLlIzMkYsCisgICAgICAgICAgICBn
bC5SMTZGCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIGRlcHRoU3RlbmNpbEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbC5ERVBUSF9DT01Q
T05FTlQzMkYsCisgICAgICAgICAgICBnbC5ERVBUSF9DT01QT05FTlQyNCwKKyAgICAgICAgICAg
IGdsLkRFUFRIX0NPTVBPTkVOVDE2LAorICAgICAgICAgICAgZ2wuREVQVEgzMkZfU1RFTkNJTDgs
CisgICAgICAgICAgICBnbC5ERVBUSDI0X1NURU5DSUw4LAorICAgICAgICAgICAgZ2wuU1RFTkNJ
TF9JTkRFWDgKKyAgICAgICAgXTsKKworICAgICAgICAvLyAucmVjdAorICAgICAgICAvKiogQGNv
bnN0cnVjdG9yCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gc3JjUmVjdAorICAgICAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGRzdFJlY3QKKyAgICAgICAgICovCisgICAgICAgIHZhciBDb3B5UmVjdCA9IGZ1bmN0
aW9uKG5hbWUsIHNyY1JlY3QsIGRzdFJlY3QpIHsKKyAgICAgICAgICAgIC8qKiBAY29uc3Qge3N0
cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdGhpcy5zcmNSZWN0ID0gc3JjUmVjdDsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5kc3RSZWN0ID0gZHN0UmVjdDsKKyAgICAgICAgfTsK
KworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxDb3B5UmVjdD59ICovIHZhciBjb3B5UmVjdHMg
PSBbCisgICAgICAgICAgICBuZXcgQ29weVJlY3QoJ2Jhc2ljJywgWzEwLCAyMCwgNjUsIDEwMF0s
IFs0NSwgNSwgMTAwLCA4NV0pLAorICAgICAgICAgICAgbmV3IENvcHlSZWN0KCdzY2FsZScsIFsx
MCwgMjAsIDY1LCAxMDBdLCBbMjUsIDMwLCAxMjUsIDk0XSksCisgICAgICAgICAgICBuZXcgQ29w
eVJlY3QoJ291dF9vZl9ib3VuZHMnLCBbLTEwLCAtMTUsIDEwMCwgNjNdLCBbNTAsIDMwLCAxMzYs
IDE0NF0pCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8Q29weVJlY3Q+
fSAqLyB2YXIgZmlsdGVyQ29uc2lzdGVuY3lSZWN0cyA9IFsKKworICAgICAgICAgICAgbmV3IENv
cHlSZWN0KCdtYWcnLCBbMjAsIDEwLCA3NCwgODhdLCBbMTAsIDEwLCA5MSwgMTAxXSksCisgICAg
ICAgICAgICBuZXcgQ29weVJlY3QoJ21pbicsIFsxMCwgMjAsIDc4LCAxMDBdLCBbMjAsIDIwLCA3
MSwgODBdKSwKKyAgICAgICAgICAgIG5ldyBDb3B5UmVjdCgnb3V0X29mX2JvdW5kc19tYWcnLCBb
MjEsIDEwLCA3MywgODJdLCBbMTEsIDQzLCAxNDEsIDE1MV0pLAorICAgICAgICAgICAgbmV3IENv
cHlSZWN0KCdvdXRfb2ZfYm91bmRzX21pbicsIFsxMSwgMjEsIDc3LCA5N10sIFs4MCwgODIsIDEz
NSwgMTM5XSkKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQGNvbnN0cnVjdG9yCisgICAgICAg
ICAqIEBwYXJhbSB7P3N0cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHNyY1N3aXp6bGUKKyAgICAgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkc3RTd2l6
emxlCisgICAgICAgICAqLworICAgICAgICB2YXIgU3dpenpsZSA9IGZ1bmN0aW9uKG5hbWUsIHNy
Y1N3aXp6bGUsIGRzdFN3aXp6bGUpIHsKKyAgICAgICAgICAgIC8qKiBAY29uc3Qgez9zdHJpbmd9
ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHRoaXMuc3JjU3dpenpsZSA9IHNyY1N3aXp6bGU7CisgICAgICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMuZHN0U3dpenpsZSA9IGRzdFN3aXp6bGU7CisgICAg
ICAgIH07CisKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8U3dpenpsZT59ICovIHZhciBzd2l6
emxlcyA9IFsKKyAgICAgICAgICAgIG5ldyBTd2l6emxlKG51bGwsIFswLCAxLCAyLCAzXSwgWzAs
IDEsIDIsIDNdKSwKKyAgICAgICAgICAgIG5ldyBTd2l6emxlKCdyZXZlcnNlX3NyY194JywgWzIs
IDEsIDAsIDNdLCBbMCwgMSwgMiwgM10pLAorICAgICAgICAgICAgbmV3IFN3aXp6bGUoJ3JldmVy
c2Vfc3JjX3knLCBbMCwgMywgMiwgMV0sIFswLCAxLCAyLCAzXSksCisgICAgICAgICAgICBuZXcg
U3dpenpsZSgncmV2ZXJzZV9kc3RfeCcsIFswLCAxLCAyLCAzXSwgWzIsIDEsIDAsIDNdKSwKKyAg
ICAgICAgICAgIG5ldyBTd2l6emxlKCdyZXZlcnNlX2RzdF95JywgWzAsIDEsIDIsIDNdLCBbMCwg
MywgMiwgMV0pLAorICAgICAgICAgICAgbmV3IFN3aXp6bGUoJ3JldmVyc2Vfc3JjX2RzdF94Jywg
WzIsIDEsIDAsIDNdLCBbMiwgMSwgMCwgM10pLAorICAgICAgICAgICAgbmV3IFN3aXp6bGUoJ3Jl
dmVyc2Vfc3JjX2RzdF95JywgWzAsIDMsIDIsIDFdLCBbMCwgMywgMiwgMV0pCisgICAgICAgIF07
CisKKyAgICAgICAgLyoqIEBjb25zdCB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNyY1NpemUgPSBb
MTI3LCAxMTldOworICAgICAgICAvKiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHN0
U2l6ZSA9IFsxMzIsIDEyOF07CisKKyAgICAgICAgLy8gQmxpdCByZWN0YW5nbGUgdGVzdHMuCisg
ICAgICAgIGZvciAodmFyIHJlY3ROZHggPSAwOyByZWN0TmR4IDwgY29weVJlY3RzLmxlbmd0aDsg
cmVjdE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fSAqLyB2YXIgcmVjdEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgncmVjdCcsICdCbGl0IHJl
Y3RhbmdsZSB0ZXN0cycpOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChyZWN0R3JvdXApOwor
CisgICAgICAgICAgICBmb3IgKHZhciBzd3pOZHggPSAwOyBzd3pOZHggPCBzd2l6emxlcy5sZW5n
dGg7IHN3ek5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciBuYW1lID0gY29weVJlY3RzW3JlY3ROZHhdLm5hbWUgKyAoc3dpenpsZXNbc3d6TmR4XS5uYW1l
ID8gKCdfJyArIHN3aXp6bGVzW3N3ek5keF0ubmFtZSkgOiAnJyk7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3JjU3d6ID0gc3dpenpsZXNbc3d6TmR4
XS5zcmNTd2l6emxlOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIGRzdFN3eiA9IHN3aXp6bGVzW3N3ek5keF0uZHN0U3dpenpsZTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzcmNSZWN0ID0gZGVNYXRoLnN3
aXp6bGUoY29weVJlY3RzW3JlY3ROZHhdLnNyY1JlY3QsIHNyY1N3eik7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHN0UmVjdCA9IGRlTWF0aC5zd2l6
emxlKGNvcHlSZWN0c1tyZWN0TmR4XS5kc3RSZWN0LCBkc3RTd3opOworCisgICAgICAgICAgICAg
ICAgcmVjdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdFJl
Y3RDYXNlKChuYW1lICsgJ19uZWFyZXN0JyksICcnLCBnbC5ORUFSRVNULCBzcmNTaXplLCBzcmNS
ZWN0LCBkc3RTaXplLCBkc3RSZWN0KSk7CisgICAgICAgICAgICAgICAgcmVjdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdFJlY3RDYXNlKChuYW1lICsgJ19s
aW5lYXInKSwgJycsIGdsLkxJTkVBUiwgc3JjU2l6ZSwgc3JjUmVjdCwgZHN0U2l6ZSwgZHN0UmVj
dCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTmVhcmVzdCBmaWx0
ZXIgdGVzdHMKKyAgICAgICAgZm9yICh2YXIgcmVjdE5keCA9IDA7IHJlY3ROZHggPCBmaWx0ZXJD
b25zaXN0ZW5jeVJlY3RzLmxlbmd0aDsgcmVjdE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5
cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgcmVjdEdyb3VwID0gdGN1VGVzdENhc2Uu
bmV3VGVzdCgncmVjdCcsICdCbGl0IHJlY3RhbmdsZSB0ZXN0cycpOworICAgICAgICAgICAgdGhp
cy5hZGRDaGlsZChyZWN0R3JvdXApOworICAgICAgICAgICAgZm9yICh2YXIgc3d6TmR4ID0gMDsg
c3d6TmR4IDwgc3dpenpsZXMubGVuZ3RoOyBzd3pOZHgrKykgeworICAgICAgICAgICAgICAgIHZh
ciBuYW1lID0gJ25lYXJlc3RfY29uc2lzdGVuY3lfJyArIGZpbHRlckNvbnNpc3RlbmN5UmVjdHNb
cmVjdE5keF0ubmFtZSArIChzd2l6emxlc1tzd3pOZHhdLm5hbWUgPyAoJ18nICsgc3dpenpsZXNb
c3d6TmR4XS5uYW1lKSA6ICcnKTsKKyAgICAgICAgICAgICAgICB2YXIgc3JjU3d6ID0gc3dpenps
ZXNbc3d6TmR4XS5zcmNTd2l6emxlOworICAgICAgICAgICAgICAgIHZhciBkc3RTd3ogPSBzd2l6
emxlc1tzd3pOZHhdLmRzdFN3aXp6bGU7CisgICAgICAgICAgICAgICAgdmFyIHNyY1JlY3QgPSBk
ZU1hdGguc3dpenpsZShmaWx0ZXJDb25zaXN0ZW5jeVJlY3RzW3JlY3ROZHhdLnNyY1JlY3QsIHNy
Y1N3eik7CisgICAgICAgICAgICAgICAgdmFyIGRzdFJlY3QgPSBkZU1hdGguc3dpenpsZShmaWx0
ZXJDb25zaXN0ZW5jeVJlY3RzW3JlY3ROZHhdLmRzdFJlY3QsIGRzdFN3eik7CisKKyAgICAgICAg
ICAgICAgICByZWN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5C
bGl0TmVhcmVzdEZpbHRlckNvbnNpc3RlbmN5Q2FzZShuYW1lLCAnVGVzdCBjb25zaXN0ZW5jeSBv
ZiB0aGUgbmVhcmVzdCBmaWx0ZXInLCBzcmNTaXplLCBzcmNSZWN0LCBkc3RTaXplLCBkc3RSZWN0
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAuY29udmVyc2lvbgor
ICAgICAgICBmb3IgKHZhciBzcmNGbXROZHggPSAwOyBzcmNGbXROZHggPCBjb2xvckZvcm1hdHMu
bGVuZ3RoOyBzcmNGbXROZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0gKi8gdmFyIGNvbnZlcnNpb25Hcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qo
J2NvbnZlcnNpb24nLCAnQ29sb3IgY29udmVyc2lvbiB0ZXN0cycpOworICAgICAgICAgICAgdGhp
cy5hZGRDaGlsZChjb252ZXJzaW9uR3JvdXApOworICAgICAgICAgICAgZm9yICh2YXIgZHN0Rm10
TmR4ID0gMDsgZHN0Rm10TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgZHN0Rm10TmR4KyspIHsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNyY0Zvcm1hdCA9IGNv
bG9yRm9ybWF0c1tzcmNGbXROZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4
dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgc3JjVGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdChzcmNGb3JtYXQpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
dGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzfSAqLyB2YXIgc3JjVHlwZSA9IHRjdVRleHR1
cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhzcmNUZXhGbXQudHlwZSk7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkc3RGb3JtYXQgPSBjb2xvckZvcm1hdHNbZHN0
Rm10TmR4XTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZv
cm1hdH0gKi8gdmFyIGRzdFRleEZtdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3Jt
YXQoZHN0Rm9ybWF0KTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4
dHVyZUNoYW5uZWxDbGFzc30gKi8gdmFyIGRzdFR5cGUgPSB0Y3VUZXh0dXJlLmdldFRleHR1cmVD
aGFubmVsQ2xhc3MoZHN0VGV4Rm10LnR5cGUpOworCisgICAgICAgICAgICAgICAgaWYgKCgoc3Jj
VHlwZSA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQgfHwg
c3JjVHlwZSA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURf
UE9JTlQpICE9CisgICAgICAgICAgICAgICAgICAgICAoZHN0VHlwZSA9PSB0Y3VUZXh0dXJlLlRl
eHR1cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQgfHwgZHN0VHlwZSA9PSB0Y3VUZXh0dXJl
LlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURfUE9JTlQpKSB8fAorICAgICAgICAg
ICAgICAgICAgICAoKHNyY1R5cGUgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJ
R05FRF9JTlRFR0VSKSAhPSAoZHN0VHlwZSA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuU0lHTkVEX0lOVEVHRVIpKSB8fAorICAgICAgICAgICAgICAgICAgICAoKHNyY1R5cGUgPT0g
dGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVIpICE9IChkc3RU
eXBlID09IHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5VTlNJR05FRF9JTlRFR0VSKSkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBDb252ZXJzaW9uIG5vdCBzdXBwb3J0
ZWQuCisKKyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3Jt
YXROYW1lKHNyY0Zvcm1hdCkgKyAnX3RvXycgKyBlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFt
ZShkc3RGb3JtYXQpOworCisgICAgICAgICAgICAgICAgY29udmVyc2lvbkdyb3VwLmFkZENoaWxk
KG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdENvbG9yQ29udmVyc2lvbkNhc2UobmFt
ZSwgJycsIHNyY0Zvcm1hdCwgZHN0Rm9ybWF0LCBbMTI3LCAxMTNdKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyAuZGVwdGhfc3RlbmNpbAorICAgICAgICAvKiogQHR5
cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZGVwdGhTdGVuY2lsR3JvdXAgPSB0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KCdkZXB0aF9zdGVuY2lsJywgJ0RlcHRoIGFuZCBzdGVuY2lsIGJsaXRz
Jyk7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQoZGVwdGhTdGVuY2lsR3JvdXApOworCisgICAgICAg
IGZvciAodmFyIGZtdE5keCA9IDA7IGZtdE5keCA8IGRlcHRoU3RlbmNpbEZvcm1hdHMubGVuZ3Ro
OyBmbXROZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmb3Jt
YXQgPSBkZXB0aFN0ZW5jaWxGb3JtYXRzW2ZtdE5keF07CisgICAgICAgICAgICAvKiogQHR5cGUg
e3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIHRleEZtdCA9IGdsdVRleHR1cmVVdGls
Lm1hcEdMSW50ZXJuYWxGb3JtYXQoZm9ybWF0KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgZm10TmFtZSA9IGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1lKGZvcm1h
dCk7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBkZXB0aCA9IHRleEZt
dC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EIHx8IHRleEZtdC5vcmRlciA9PSB0
Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5EUzsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIHN0ZW5jaWwgPSB0ZXhGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3Jk
ZXIuUyB8fCB0ZXhGbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuRFM7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJ1ZmZlcnMgPSAoZGVwdGggPyBnbC5E
RVBUSF9CVUZGRVJfQklUIDogMCkgfCAoc3RlbmNpbCA/IGdsLlNURU5DSUxfQlVGRkVSX0JJVCA6
IDApOworCisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZy
YW1lYnVmZmVyQmxpdFRlc3RzLkJsaXREZXB0aFN0ZW5jaWxDYXNlKChmbXROYW1lICsgJ19iYXNp
YycpLCAnJywgZm9ybWF0LCBidWZmZXJzLCBbMTI4LCAxMjhdLCBbMCwgMCwgMTI4LCAxMjhdLCBi
dWZmZXJzLCBbMTI4LCAxMjhdLCBbMCwgMCwgMTI4LCAxMjhdLCBidWZmZXJzKSk7CisgICAgICAg
ICAgICBkZXB0aFN0ZW5jaWxHcm91cC5hZGRDaGlsZChuZXcgZXMzZkZyYW1lYnVmZmVyQmxpdFRl
c3RzLkJsaXREZXB0aFN0ZW5jaWxDYXNlKChmbXROYW1lICsgJ19zY2FsZScpLCAnJywgZm9ybWF0
LCBidWZmZXJzLCBbMTI3LCAxMTldLCBbMTAsIDMwLCAxMDAsIDcwXSwgYnVmZmVycywgWzExMSwg
MTMwXSwgWzIwLCA1LCA4MCwgMTMwXSwgYnVmZmVycykpOworCisgICAgICAgICAgICBpZiAoZGVw
dGggJiYgc3RlbmNpbCkgeworICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlcHRoU3RlbmNpbENhc2UoKGZt
dE5hbWUgKyAnX2RlcHRoX29ubHknKSwgJycsIGZvcm1hdCwgYnVmZmVycywgWzEyOCwgMTI4XSwg
WzAsIDAsIDEyOCwgMTI4XSwgYnVmZmVycywgWzEyOCwgMTI4XSwgWzAsIDAsIDEyOCwgMTI4XSwg
Z2wuREVQVEhfQlVGRkVSX0JJVCkpOworICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlcHRoU3RlbmNpbENh
c2UoKGZtdE5hbWUgKyAnX3N0ZW5jaWxfb25seScpLCAnJywgZm9ybWF0LCBidWZmZXJzLCBbMTI4
LCAxMjhdLCBbMCwgMCwgMTI4LCAxMjhdLCBidWZmZXJzLCBbMTI4LCAxMjhdLCBbMCwgMCwgMTI4
LCAxMjhdLCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIC5kZWZhdWx0X2ZyYW1lYnVmZmVyCisgICAgICAgIC8qKgorICAgICAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
ICAgICogQHBhcmFtIHtlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdEFyZWF9IGFyZWEKKyAg
ICAgICAgICovCisgICAgICAgIHZhciBBcmVhID0gZnVuY3Rpb24obmFtZSwgYXJlYSkgeworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9IG5hbWUgKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXRBcmVhfSBh
cmVhICovIHRoaXMuYXJlYSA9IGFyZWE7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxBcmVhPn0gKi8gdmFyIGFyZWFzID0gWworICAgICAgICAgICAgbmV3IEFyZWEoJ3Nj
YWxlJywgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXRBcmVhLkFSRUFfU0NBTEUpLAorICAg
ICAgICAgICAgbmV3IEFyZWEoJ291dF9vZl9ib3VuZHMnLCBlczNmRnJhbWVidWZmZXJCbGl0VGVz
dHMuQmxpdEFyZWEuQVJFQV9PVVRfT0ZfQk9VTkRTKQorICAgICAgICBdOworCisgICAgICAgIHZh
ciBudW1EZWZhdWx0RmJTdWJHcm91cHMgPSA3OworICAgICAgICAvKiogQHR5cGUge0FycmF5PHRj
dVRlc3RDYXNlLkRlcXBUZXN0Pn0gKi8gdmFyIGRlZmF1bHRGYkdyb3VwID0gW107CisgICAgICAg
IGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1EZWZhdWx0RmJTdWJHcm91cHM7ICsraWkpIHsKKyAg
ICAgICAgICAgIGRlZmF1bHRGYkdyb3VwW2lpXSA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ2RlZmF1
bHRfZnJhbWVidWZmZXInLCAnQmxpdHMgd2l0aCBkZWZhdWx0IGZyYW1lYnVmZmVyJyk7CisgICAg
ICAgICAgICB0aGlzLmFkZENoaWxkKGRlZmF1bHRGYkdyb3VwW2lpXSk7CisgICAgICAgIH0KKyAg
ICAgICAgZm9yICh2YXIgZm10TmR4ID0gMDsgZm10TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsg
Zm10TmR4KyspIHsKKyAgICAgICAgICAgIHZhciBmb3JtYXQgPSBjb2xvckZvcm1hdHNbZm10TmR4
XTsKKyAgICAgICAgICAgIHZhciB0ZXhGbXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFs
Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgICAgICB2YXIgZm10Q2xhc3MgPSB0Y3VUZXh0dXJlLmdl
dFRleHR1cmVDaGFubmVsQ2xhc3ModGV4Rm10LnR5cGUpOworICAgICAgICAgICAgdmFyIGZpbHRl
ciA9IGdsdVRleHR1cmVVdGlsLmlzR0xJbnRlcm5hbENvbG9yRm9ybWF0RmlsdGVyYWJsZShmb3Jt
YXQpID8gZ2wuTElORUFSIDogZ2wuTkVBUkVTVDsKKyAgICAgICAgICAgIHZhciBmaWx0ZXJhYmxl
ID0gZ2x1VGV4dHVyZVV0aWwuaXNHTEludGVybmFsQ29sb3JGb3JtYXRGaWx0ZXJhYmxlKGZvcm1h
dCk7CisKKyAgICAgICAgICAgIGlmIChmbXRDbGFzcyAhPSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFu
bmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQgJiYKKyAgICAgICAgICAgICAgICBmbXRDbGFzcyAhPSB0
Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURfUE9JTlQgJiYKKyAg
ICAgICAgICAgICAgICBmbXRDbGFzcyAhPSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3Mu
U0lHTkVEX0ZJWEVEX1BPSU5UKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBDb252ZXJz
aW9uIG5vdCBzdXBwb3J0ZWQuCisKKyAgICAgICAgICAgIGRlZmF1bHRGYkdyb3VwW2ZtdE5keCAl
IG51bURlZmF1bHRGYlN1Ykdyb3Vwc10uYWRkQ2hpbGQobmV3IGVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5CbGl0RGVmYXVsdEZyYW1lYnVmZmVyQ2FzZShlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0
TmFtZShmb3JtYXQpLCAnJywgZm9ybWF0LCBmaWx0ZXIpKTsKKworICAgICAgICAgICAgZm9yICh2
YXIgYXJlYU5keCA9IDA7IGFyZWFOZHggPCBhcmVhcy5sZW5ndGg7IGFyZWFOZHgrKykgeworICAg
ICAgICAgICAgICAgIHZhciBuYW1lID0gYXJlYXNbYXJlYU5keF0ubmFtZTsKKyAgICAgICAgICAg
ICAgICB2YXIgYWRkTGluZWFyID0gZmlsdGVyYWJsZTsKKyAgICAgICAgICAgICAgICB2YXIgYWRk
TmVhcmVzdCA9ICFhZGRMaW5lYXIgfHwgKGFyZWFzW2FyZWFOZHhdLmFyZWEgIT0gZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzLkJsaXRBcmVhLkFSRUFfT1VUX09GX0JPVU5EUyk7IC8vIE5vIG5lZWQg
dG8gY2hlY2sgb3V0LW9mLWJvdW5kcyB3aXRoIGRpZmZlcmVudCBmaWx0ZXJpbmcKKworICAgICAg
ICAgICAgICAgIGlmIChhZGROZWFyZXN0KSB7CisKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dEZiR3JvdXBbZm10TmR4ICUgbnVtRGVmYXVsdEZiU3ViR3JvdXBzXS5hZGRDaGlsZChuZXcgZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkRlZmF1bHRGcmFtZWJ1ZmZlckJsaXRDYXNlKChlczNmRmJv
VGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShmb3JtYXQpICsgJ19uZWFyZXN0XycgKyBuYW1lICsgJ19i
bGl0X2Zyb21fZGVmYXVsdCcpLCAnJywgZm9ybWF0LCBnbC5ORUFSRVNULCBlczNmRnJhbWVidWZm
ZXJCbGl0VGVzdHMuQmxpdERpcmVjdGlvbi5CTElUX0RFRkFVTFRfVE9fVEFSR0VULCBhcmVhc1th
cmVhTmR4XS5hcmVhKSk7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGYkdyb3VwW2ZtdE5k
eCAlIG51bURlZmF1bHRGYlN1Ykdyb3Vwc10uYWRkQ2hpbGQobmV3IGVzM2ZGcmFtZWJ1ZmZlckJs
aXRUZXN0cy5EZWZhdWx0RnJhbWVidWZmZXJCbGl0Q2FzZSgoZXMzZkZib1Rlc3RVdGlsLmdldEZv
cm1hdE5hbWUoZm9ybWF0KSArICdfbmVhcmVzdF8nICsgbmFtZSArICdfYmxpdF90b19kZWZhdWx0
JyksICcnLCBmb3JtYXQsIGdsLk5FQVJFU1QsIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0
RGlyZWN0aW9uLkJMSVRfVE9fREVGQVVMVF9GUk9NX1RBUkdFVCwgYXJlYXNbYXJlYU5keF0uYXJl
YSkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhZGRMaW5lYXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZiR3JvdXBbZm10TmR4ICUgbnVtRGVmYXVs
dEZiU3ViR3JvdXBzXS5hZGRDaGlsZChuZXcgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkRlZmF1
bHRGcmFtZWJ1ZmZlckJsaXRDYXNlKChlczNmRmJvVGVzdFV0aWwuZ2V0Rm9ybWF0TmFtZShmb3Jt
YXQpICsgJ19saW5lYXJfJyArIG5hbWUgKyAnX2JsaXRfZnJvbV9kZWZhdWx0JyksICcnLCBmb3Jt
YXQsIGdsLkxJTkVBUiwgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXREaXJlY3Rpb24uQkxJ
VF9ERUZBVUxUX1RPX1RBUkdFVCwgYXJlYXNbYXJlYU5keF0uYXJlYSkpOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0RmJHcm91cFtmbXROZHggJSBudW1EZWZhdWx0RmJTdWJHcm91cHNdLmFk
ZENoaWxkKG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuRGVmYXVsdEZyYW1lYnVmZmVyQmxp
dENhc2UoKGVzM2ZGYm9UZXN0VXRpbC5nZXRGb3JtYXROYW1lKGZvcm1hdCkgKyAnX2xpbmVhcl8n
ICsgbmFtZSArICdfYmxpdF90b19kZWZhdWx0JyksICcnLCBmb3JtYXQsIGdsLkxJTkVBUiwgZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXREaXJlY3Rpb24uQkxJVF9UT19ERUZBVUxUX0ZST01f
VEFSR0VULCBhcmVhc1thcmVhTmR4XS5hcmVhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P3Rj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyfSBvcmRlcgorICAgICAqIEByZXR1cm4ge0FycmF5PGJvb2xl
YW4+fQorICAgICAqLworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5nZXRDaGFubmVsTWFz
ayA9IGZ1bmN0aW9uKG9yZGVyKSB7CisgICAgICAgIHN3aXRjaCAob3JkZXIpIHsKKyAgICAgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUjogcmV0dXJuIFt0cnVlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlXTsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
Ukc6IHJldHVybiBbdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXTsKKyAgICAgICAgICAgIGNhc2Ug
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCOiByZXR1cm4gW3RydWUsIHRydWUsIHRydWUsIGZh
bHNlXTsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQTogcmV0
dXJuIFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXTsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuc1JHQjogcmV0dXJuIFt0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZV07Cisg
ICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLnNSR0JBOiByZXR1cm4gW3Ry
dWUsIHRydWUsIHRydWUsIHRydWVdOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBbZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2VdOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0Q29sb3JDb252ZXJzaW9uQ2FzZSBjbGFzcywg
aW5oZXJpdHMgZnJvbSBGYm9UZXN0Q2FzZQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2V9CisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzcmNGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZHN0Rm9ybWF0CisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBzaXplCisgICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzLkJsaXRDb2xvckNvbnZlcnNpb25DYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywg
c3JjRm9ybWF0LCBkc3RGb3JtYXQsIHNpemUpIHsKKyAgICAgICAgZXMzZkZib1Rlc3RDYXNlLkZi
b1Rlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLm1fc3JjRm9ybWF0ID0gc3JjRm9ybWF0OworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdGhpcy5tX2RzdEZvcm1hdCA9IGRzdEZvcm1hdDsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fc2l6ZSA9IHNpemU7CisgICAgfTsKKworICAg
IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0Q29sb3JDb252ZXJzaW9uQ2FzZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUp
OworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0Q29sb3JDb252ZXJzaW9uQ2FzZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdENvbG9y
Q29udmVyc2lvbkNhc2U7CisKKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdENvbG9y
Q29udmVyc2lvbkNhc2UucHJvdG90eXBlLnByZUNoZWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHRoaXMuY2hlY2tGb3JtYXRTdXBwb3J0KHRoaXMubV9zcmNGb3JtYXQpOworICAgICAgICB0aGlz
LmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZHN0Rm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGRzdAorICAgICAqLworICAgIGVzM2ZGcmFtZWJ1ZmZl
ckJsaXRUZXN0cy5CbGl0Q29sb3JDb252ZXJzaW9uQ2FzZS5wcm90b3R5cGUucmVuZGVyID0gZnVu
Y3Rpb24oZHN0KSB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLmdldEN1cnJlbnRDb250ZXh0KCk7
CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgc3Jj
Rm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fc3JjRm9y
bWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovIHZh
ciBkc3RGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9k
c3RGb3JtYXQpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0g
Ki8gdmFyIHNyY091dHB1dFR5cGUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRPdXRwdXRU
eXBlKHNyY0Zvcm1hdCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZX0gKi8gdmFyIGRzdE91dHB1dFR5cGUgPSBlczNmRmJvVGVzdFV0aWwuZ2V0RnJhZ21lbnRPdXRw
dXRUeXBlKGRzdEZvcm1hdCk7CisKKyAgICAgICAgLy8gQ29tcHV0ZSByYW5nZXMgXG5vdGUgRG9l
c24ndCBoYW5kbGUgY2FzZSB3aGVyZSBzcmMgb3IgZGVzdCBpcyBub3Qgc3Vic2V0IG9mIHRoZSBh
bm90aGVyIQorICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmVVdGlsLlRleHR1cmVGb3JtYXRJ
bmZvfSAqLyB2YXIgc3JjRm10UmFuZ2VJbmZvID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZv
cm1hdEluZm8oc3JjRm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5U
ZXh0dXJlRm9ybWF0SW5mb30gKi8gdmFyIGRzdEZtdFJhbmdlSW5mbyA9IHRjdVRleHR1cmVVdGls
LmdldFRleHR1cmVGb3JtYXRJbmZvKGRzdEZvcm1hdCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxib29sZWFuPn0gKi8gdmFyIGNvcHlNYXNrID0gZGVNYXRoLmxvZ2ljYWxBbmRCb29sKGVz
M2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5nZXRDaGFubmVsTWFzayhzcmNGb3JtYXQub3JkZXIpLCBl
czNmRnJhbWVidWZmZXJCbGl0VGVzdHMuZ2V0Q2hhbm5lbE1hc2soZHN0Rm9ybWF0Lm9yZGVyKSk7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZhciBzcmNJc0dyZWF0ZXIg
PSBkZU1hdGguZ3JlYXRlclRoYW4oZGVNYXRoLnN1YnRyYWN0KHNyY0ZtdFJhbmdlSW5mby52YWx1
ZU1heCwgc3JjRm10UmFuZ2VJbmZvLnZhbHVlTWluKSwgZGVNYXRoLnN1YnRyYWN0KGRzdEZtdFJh
bmdlSW5mby52YWx1ZU1heCwgZHN0Rm10UmFuZ2VJbmZvLnZhbHVlTWluKSk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8gdmFyIHNyY1Jh
bmdlSW5mbyA9IG5ldyB0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mbygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0
aWwuc2VsZWN0KGRzdEZtdFJhbmdlSW5mby52YWx1ZU1pbiwgc3JjRm10UmFuZ2VJbmZvLnZhbHVl
TWluLCBkZU1hdGgubG9naWNhbEFuZEJvb2woY29weU1hc2ssIHNyY0lzR3JlYXRlcikpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0
dXJlVXRpbC5zZWxlY3QoZHN0Rm10UmFuZ2VJbmZvLnZhbHVlTWF4LCBzcmNGbXRSYW5nZUluZm8u
dmFsdWVNYXgsIGRlTWF0aC5sb2dpY2FsQW5kQm9vbChjb3B5TWFzaywgc3JjSXNHcmVhdGVyKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRj
dVRleHR1cmVVdGlsLnNlbGVjdChkc3RGbXRSYW5nZUluZm8ubG9va3VwU2NhbGUsIHNyY0ZtdFJh
bmdlSW5mby5sb29rdXBTY2FsZSwgZGVNYXRoLmxvZ2ljYWxBbmRCb29sKGNvcHlNYXNrLCBzcmNJ
c0dyZWF0ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGN1VGV4dHVyZVV0aWwuc2VsZWN0KGRzdEZtdFJhbmdlSW5mby5sb29rdXBCaWFz
LCBzcmNGbXRSYW5nZUluZm8ubG9va3VwQmlhcywgZGVNYXRoLmxvZ2ljYWxBbmRCb29sKGNvcHlN
YXNrLCBzcmNJc0dyZWF0ZXIpKSk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZVV0aWwu
VGV4dHVyZUZvcm1hdEluZm99ICovIHZhciBkc3RSYW5nZUluZm8gPSBuZXcgdGN1VGV4dHVyZVV0
aWwuVGV4dHVyZUZvcm1hdEluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLnNlbGVjdChkc3RGbXRSYW5nZUluZm8u
dmFsdWVNaW4sIHNyY0ZtdFJhbmdlSW5mby52YWx1ZU1pbiwgZGVNYXRoLmxvZ2ljYWxPckJvb2wo
ZGVNYXRoLmxvZ2ljYWxOb3RCb29sKGNvcHlNYXNrKSwgc3JjSXNHcmVhdGVyKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmVV
dGlsLnNlbGVjdChkc3RGbXRSYW5nZUluZm8udmFsdWVNYXgsIHNyY0ZtdFJhbmdlSW5mby52YWx1
ZU1heCwgZGVNYXRoLmxvZ2ljYWxPckJvb2woZGVNYXRoLmxvZ2ljYWxOb3RCb29sKGNvcHlNYXNr
KSwgc3JjSXNHcmVhdGVyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLnNlbGVjdChkc3RGbXRSYW5nZUluZm8ubG9v
a3VwU2NhbGUsIHNyY0ZtdFJhbmdlSW5mby5sb29rdXBTY2FsZSwgZGVNYXRoLmxvZ2ljYWxPckJv
b2woZGVNYXRoLmxvZ2ljYWxOb3RCb29sKGNvcHlNYXNrKSwgc3JjSXNHcmVhdGVyKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1
cmVVdGlsLnNlbGVjdChkc3RGbXRSYW5nZUluZm8ubG9va3VwQmlhcywgc3JjRm10UmFuZ2VJbmZv
Lmxvb2t1cEJpYXMsIGRlTWF0aC5sb2dpY2FsT3JCb29sKGRlTWF0aC5sb2dpY2FsTm90Qm9vbChj
b3B5TWFzayksIHNyY0lzR3JlYXRlcikpKTsKKworICAgICAgICAvLyBTaGFkZXJzLgorICAgICAg
ICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcn0gKi8KKyAgICAgICAg
dmFyIGdyYWRpZW50VG9TcmNTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hh
ZGVyKHNyY091dHB1dFR5cGUpOworICAgICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5H
cmFkaWVudFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIGdyYWRpZW50VG9Ec3RTaGFkZXIgPSBuZXcg
ZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKGRzdE91dHB1dFR5cGUpOworCisgICAgICAg
IHZhciBncmFkU2hhZGVyU3JjSUQgPSBjdHguY3JlYXRlUHJvZ3JhbShncmFkaWVudFRvU3JjU2hh
ZGVyKTsKKyAgICAgICAgdmFyIGdyYWRTaGFkZXJEc3RJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGdy
YWRpZW50VG9Ec3RTaGFkZXIpOworCisgICAgICAgIHZhciBzcmNGYm87CisgICAgICAgIHZhciBk
c3RGYm87CisgICAgICAgIHZhciBzcmNSYm87CisgICAgICAgIHZhciBkc3RSYm87CisKKyAgICAg
ICAgLy8gQ3JlYXRlIGZyYW1lYnVmZmVycy4KKyAgICAgICAgLy8gU291cmNlIGZyYW1lYnVmZmVy
cworICAgICAgICBzcmNGYm8gPSBjdHguY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgc3Jj
UmJvID0gY3R4LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisgICAgICAgIGN0eC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3JjUmJvKTsKKyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCB0aGlzLm1fc3JjRm9ybWF0LCB0aGlzLm1fc2l6ZVsw
XSwgdGhpcy5tX3NpemVbMV0pOworCisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIHNyY0Zibyk7CisgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgc3Jj
UmJvKTsKKyAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgIHRoaXMuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICAgICAgLy8gRGVzdGluYXRpb24g
ZnJhbWVidWZmZXJzCisgICAgICAgIGRzdEZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgICAgICBkc3RSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgICAgICAgY3R4
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkc3RSYm8pOworICAgICAgICBjdHgu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9kc3RGb3JtYXQsIHRo
aXMubV9zaXplWzBdLCB0aGlzLm1fc2l6ZVsxXSk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZHN0RmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVS
QlVGRkVSLCBkc3RSYm8pOworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAgICAgdGhp
cy5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAgICBjdHgu
dmlld3BvcnQoMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXplWzFdKTsKKworICAgICAg
ICAvLyBSZW5kZXIgZ3JhZGllbnRzLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAy
OyBuZHgrKykgeworICAgICAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgbmR4ID8gZHN0RmJvIDogc3JjRmJvKTsKKyAgICAgICAgICAgIGlmIChuZHgpIHsKKyAgICAg
ICAgICAgICAgICBncmFkaWVudFRvRHN0U2hhZGVyLnNldEdyYWRpZW50KGN0eCwgZ3JhZFNoYWRl
ckRzdElELCBkc3RSYW5nZUluZm8udmFsdWVNYXgsIGRzdFJhbmdlSW5mby52YWx1ZU1pbik7Cisg
ICAgICAgICAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZ3JhZFNoYWRlckRzdElELCBbLTEs
IC0xLCAwXSwgWzEsIDEsIDBdKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZ3JhZGllbnRUb1NyY1NoYWRlci5zZXRHcmFkaWVudChjdHgsIGdyYWRTaGFkZXJTcmNJRCwg
c3JjUmFuZ2VJbmZvLnZhbHVlTWluLCBzcmNSYW5nZUluZm8udmFsdWVNYXgpOworICAgICAgICAg
ICAgICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIGdyYWRTaGFkZXJTcmNJRCwgWy0xLCAtMSwgMF0s
IFsxLCAxLCAwXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBFeGVj
dXRlIGNvcHkuCisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZF
Uiwgc3JjRmJvKTsKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVG
RkVSLCBkc3RGYm8pOworICAgICAgICBjdHguYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHRoaXMubV9z
aXplWzBdLCB0aGlzLm1fc2l6ZVsxXSwgMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXpl
WzFdLCBnbC5DT0xPUl9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgdGhpcy5jaGVj
a0Vycm9yKCk7CisKKyAgICAgICAgLy8gUmVhZCByZXN1bHRzLgorICAgICAgICBjdHguYmluZEZy
YW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGRzdEZibyk7CisgICAgICAgIHRoaXMucmVh
ZFBpeGVsc1VzaW5nRm9ybWF0KGRzdCwgMCwgMCwgdGhpcy5tX3NpemVbMF0sIHRoaXMubV9zaXpl
WzFdLCBkc3RGb3JtYXQsIGRzdFJhbmdlSW5mby5sb29rdXBTY2FsZSwgZHN0UmFuZ2VJbmZvLmxv
b2t1cEJpYXMpOworCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFj
ZS5TdXJmYWNlfSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0g
cmVzdWx0CisgICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXRDb2xvckNv
bnZlcnNpb25DYXNlLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1
bHQpIHsKKyAgICAgICAgLyoqIEBjb25zdCB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2
YXIgc3JjRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1f
c3JjRm9ybWF0KTsKKyAgICAgICAgLyoqIEBjb25zdCB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0
fSAqLyB2YXIgZHN0Rm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0
aGlzLm1fZHN0Rm9ybWF0KTsKKyAgICAgICAgLyoqIEBjb25zdCB7Ym9vbGVhbn0gKi8gdmFyIHNy
Y0lzU1JHQiA9IChzcmNGb3JtYXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuc1JH
QkEpOworICAgICAgICAvKiogQGNvbnN0IHtib29sZWFufSAqLyB2YXIgZHN0SXNTUkdCID0gKGRz
dEZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5zUkdCQSk7CisgICAgICAg
IC8qKiBAdHlwZSB7dGN1UkdCQS5SR0JBfSAqLyB2YXIgdGhyZXNob2xkID0gbmV3IHRjdVJHQkEu
UkdCQSgpOworCisgICAgICAgIGlmIChkc3RJc1NSR0IpCisgICAgICAgICAgICB0aHJlc2hvbGQg
PSBlczNmRmJvVGVzdFV0aWwuZ2V0VG9TUkdCQ29udmVyc2lvblRocmVzaG9sZChzcmNGb3JtYXQs
IGRzdEZvcm1hdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VS
R0JBLlJHQkF9ICovIHZhciBzcmNNYXhEaWZmID0gZXMzZkZib1Rlc3RVdGlsLmdldFRocmVzaG9s
ZEZyb21UZXh0dXJlRm9ybWF0KHNyY0Zvcm1hdCk7CisgICAgICAgICAgICAvKiogQHR5cGUge3Rj
dVJHQkEuUkdCQX0gKi8gdmFyIGRzdE1heERpZmYgPSBlczNmRmJvVGVzdFV0aWwuZ2V0VGhyZXNo
b2xkRnJvbVRleHR1cmVGb3JtYXQoZHN0Rm9ybWF0KTsKKyAgICAgICAgICAgIGlmIChzcmNJc1NS
R0IpCisgICAgICAgICAgICAgICAgc3JjTWF4RGlmZiA9IHRjdVJHQkEubXVsdGlwbHkoc3JjTWF4
RGlmZiwgMik7CisKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IHRjdVJHQkEubWF4KHNyY01heERp
ZmYsIGRzdE1heERpZmYpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbV90ZXN0Q3R4LmdldExv
ZygpIDw8IHRjdTo6VGVzdExvZzo6TWVzc2FnZSA8PCAndGhyZXNob2xkID0gJyA8PCB0aHJlc2hv
bGQgPDwgdGN1OjpUZXN0TG9nOjpFbmRNZXNzYWdlOworICAgICAgICByZXR1cm4gdGN1SW1hZ2VD
b21wYXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24g
cmVzdWx0JywgcmVmZXJlbmNlLCByZXN1bHQsIHRocmVzaG9sZC50b0lWZWMoKSk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmRmJv
VGVzdENhc2UuRmJvVGVzdENhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQgZGVV
aW50MzIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjQnVmZmVycyBkZVVpbnQzMgorICAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gc3JjU2l6ZSBJVmVjMgorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gc3JjUmVjdCBJVmVjNAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkc3RCdWZm
ZXJzIGRlVWludDMyCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkc3RTaXplIElWZWMy
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBkc3RSZWN0IElWZWM0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGNvcHlCdWZmZXJzIGRlVWludDMyCisgICAgICovCisgICAgZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzLkJsaXREZXB0aFN0ZW5jaWxDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
YywgZm9ybWF0LCBzcmNCdWZmZXJzLCBzcmNTaXplLCBzcmNSZWN0LCBkc3RCdWZmZXJzLCBkc3RT
aXplLCBkc3RSZWN0LCBjb3B5QnVmZmVycykgeworICAgICAgICBlczNmRmJvVGVzdENhc2UuRmJv
VGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fc3JjQnVmZmVycyA9IHNyY0J1ZmZlcnM7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3NyY1NpemUgPSBzcmNTaXplOworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9zcmNSZWN0ID0gc3JjUmVjdDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9kc3RCdWZmZXJzID0gZHN0QnVmZmVyczsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fZHN0U2l6ZSA9IGRz
dFNpemU7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2RzdFJl
Y3QgPSBkc3RSZWN0OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2NvcHlC
dWZmZXJzID0gY29weUJ1ZmZlcnM7CisgICAgfTsKKworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5CbGl0RGVwdGhTdGVuY2lsQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZG
Ym9UZXN0Q2FzZS5GYm9UZXN0Q2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZGcmFtZWJ1ZmZlckJs
aXRUZXN0cy5CbGl0RGVwdGhTdGVuY2lsQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
RnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlcHRoU3RlbmNpbENhc2U7CisKKyAgICAvKioKKyAg
ICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJs
aXREZXB0aFN0ZW5jaWxDYXNlLnByb3RvdHlwZS5wcmVDaGVjayA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHByb3RlY3RlZAorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAg
ICAgKi8KKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlcHRoU3RlbmNpbENhc2Uu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkgeworICAgICAgICB2YXIgY3R4ID0gdGhp
cy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZh
ciBjb2xvckZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICB2YXIgZ3JhZFNoYWRlciA9IG5ldyBl
czNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0KTsKKyAgICAgICAgdmFyIHRleFNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4
dHVyZTJEU2hhZGVyKAorICAgICAgICAgICAgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExF
Ul8yRF0gLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsK
KyAgICAgICAgdmFyIGZsYXRTaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkZsYXRDb2xvclNo
YWRlcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpOworCisgICAgICAgIHZhciBm
bGF0U2hhZGVySUQgPSBjdHguY3JlYXRlUHJvZ3JhbShmbGF0U2hhZGVyKTsKKyAgICAgICAgdmFy
IHRleFNoYWRlcklEID0gY3R4LmNyZWF0ZVByb2dyYW0odGV4U2hhZGVyKTsKKyAgICAgICAgdmFy
IGdyYWRTaGFkZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKGdyYWRTaGFkZXIpOworCisgICAgICAg
IHZhciBzcmNGYm87CisgICAgICAgIHZhciBkc3RGYm87CisgICAgICAgIHZhciBzcmNDb2xvclJi
bzsKKyAgICAgICAgdmFyIGRzdENvbG9yUmJvOworICAgICAgICB2YXIgc3JjRGVwdGhTdGVuY2ls
UmJvOworICAgICAgICB2YXIgZHN0RGVwdGhTdGVuY2lsUmJvOworCisgICAgICAgIC8vIHNldHVw
IHNoYWRlcnMKKyAgICAgICAgZ3JhZFNoYWRlci5zZXRHcmFkaWVudChjdHgsIGdyYWRTaGFkZXJJ
RCwgWzAuMCwgMC4wLCAwLjAsIDAuMF0sIFsxLjAsIDEuMCwgMS4wLCAxLjBdKTsKKyAgICAgICAg
dGV4U2hhZGVyLnNldFVuaWZvcm1zKGN0eCwgdGV4U2hhZGVySUQpOworCisgICAgICAgIC8vIENy
ZWF0ZSBmcmFtZWJ1ZmZlcnMKKyAgICAgICAgLy8gU291cmNlIGZyYW1lYnVmZmVycworICAgICAg
ICBzcmNGYm8gPSBjdHguY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgc3JjQ29sb3JSYm8g
PSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIHNyY0RlcHRoU3RlbmNpbFJibyA9
IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZl
cihnbC5SRU5ERVJCVUZGRVIsIHNyY0NvbG9yUmJvKTsKKyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBjb2xvckZvcm1hdCwgdGhpcy5tX3NyY1NpemVbMF0s
IHRoaXMubV9zcmNTaXplWzFdKTsKKworICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIHNyY0RlcHRoU3RlbmNpbFJibyk7CisgICAgICAgIGN0eC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3NyY1NpemVb
MF0sIHRoaXMubV9zcmNTaXplWzFdKTsKKworICAgICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBzcmNGYm8pOworICAgICAgICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIs
IHNyY0NvbG9yUmJvKTsKKworICAgICAgICBpZiAodGhpcy5tX3NyY0J1ZmZlcnMgJiBnbC5ERVBU
SF9CVUZGRVJfQklUKQorICAgICAgICAgICAgY3R4LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHNyY0Rl
cHRoU3RlbmNpbFJibyk7CisgICAgICAgIGlmICh0aGlzLm1fc3JjQnVmZmVycyAmIGdsLlNURU5D
SUxfQlVGRkVSX0JJVCkKKyAgICAgICAgICAgIGN0eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHNy
Y0RlcHRoU3RlbmNpbFJibyk7CisKKyAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAg
IHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICAgICAg
Ly8gQ2xlYXIgZGVwdGggdG8gMSBhbmQgc3RlbmNpbCB0byAwLgorICAgICAgICBjdHguY2xlYXJC
dWZmZXJmaShnbC5ERVBUSF9TVEVOQ0lMLCAwLCAxLjAsIDApOworCisgICAgICAgIC8vIERlc3Rp
bmF0aW9uIGZyYW1lYnVmZmVycworICAgICAgICBkc3RGYm8gPSBjdHguY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgICAgICAgZHN0Q29sb3JSYm8gPSBjdHguY3JlYXRlUmVuZGVyYnVmZmVyKCk7Cisg
ICAgICAgIGRzdERlcHRoU3RlbmNpbFJibyA9IGN0eC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKwor
ICAgICAgICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRzdENvbG9yUmJv
KTsKKyAgICAgICAgY3R4LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBjb2xv
ckZvcm1hdCwgdGhpcy5tX2RzdFNpemVbMF0sIHRoaXMubV9kc3RTaXplWzFdKTsKKworICAgICAg
ICBjdHguYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRzdERlcHRoU3RlbmNpbFJi
byk7CisgICAgICAgIGN0eC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgdGhp
cy5tX2Zvcm1hdCwgdGhpcy5tX2RzdFNpemVbMF0sIHRoaXMubV9kc3RTaXplWzFdKTsKKworICAg
ICAgICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBkc3RGYm8pOworICAgICAg
ICBjdHguZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGRzdENvbG9yUmJvKTsKKworICAgICAgICBpZiAo
dGhpcy5tX2RzdEJ1ZmZlcnMgJiBnbC5ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICAgICAgY3R4
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRzdERlcHRoU3RlbmNpbFJibyk7CisgICAgICAgIGlmICh0
aGlzLm1fZHN0QnVmZmVycyAmIGdsLlNURU5DSUxfQlVGRkVSX0JJVCkKKyAgICAgICAgICAgIGN0
eC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRB
Q0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRzdERlcHRoU3RlbmNpbFJibyk7CisKKyAgICAgICAg
dGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUik7CisKKyAgICAgICAgLy8gQ2xlYXIgZGVwdGggdG8gMSBhbmQgc3RlbmNp
bCB0byAwLgorICAgICAgICBjdHguY2xlYXJCdWZmZXJmaShnbC5ERVBUSF9TVEVOQ0lMLCAwLCAx
LjAsIDApOworCisgICAgICAgIC8vIEZpbGwgc291cmNlIHdpdGggZ3JhZGllbnQsIGRlcHRoID0g
Wy0xLi4xXSwgc3RlbmNpbCA9IDcKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgc3JjRmJvKTsKKyAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIHRoaXMubV9zcmNT
aXplWzBdLCB0aGlzLm1fc3JjU2l6ZVsxXSk7CisgICAgICAgIGN0eC5lbmFibGUoZ2wuREVQVEhf
VEVTVCk7CisgICAgICAgIGN0eC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICAgICAgY3R4
LnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5SRVBMQUNFKTsKKyAgICAgICAgY3R4LnN0
ZW5jaWxGdW5jKGdsLkFMV0FZUywgNywgMHhmZik7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFk
KGN0eCwgZ3JhZFNoYWRlcklELCBbLTEsIC0xLCAtMV0sIFsxLCAxLCAxXSk7CisKKyAgICAgICAg
Ly8gRmlsbCBkZXN0aW5hdGlvbiB3aXRoIGdyaWQgcGF0dGVybiwgZGVwdGggPSAwIGFuZCBzdGVu
Y2lsID0gMQorICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBmb3JtYXQgPSBnbC5S
R0JBOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBkYXRhVHlwZSA9IGdsLlVO
U0lHTkVEX0JZVEU7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHRleFcgPSB0
aGlzLm1fc3JjU2l6ZVswXTsKKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgdGV4
SCA9IHRoaXMubV9zcmNTaXplWzFdOworICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4dHVyZXxz
Z2xyUmVmZXJlbmNlQ29udGV4dC5UZXh0dXJlQ29udGFpbmVyfSAqLyB2YXIgZ3JpZFRleCA9IG51
bGw7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWx9ICovIHZhciBk
YXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKGdsdVRleHR1cmVVdGlsLm1hcEdMVHJh
bnNmZXJGb3JtYXQoZm9ybWF0LCBkYXRhVHlwZSksIHRleFcsIHRleEgsIDEpOworCisgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChkYXRhLmdldEFjY2VzcygpLCA4LCBbMC4yLCAw
LjcsIDAuMSwgMS4wXSwgWzAuNywgMC4xLCAwLjUsIDAuOF0pOworCisgICAgICAgIGdyaWRUZXgg
PSBjdHguY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjdHguYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgZ3JpZFRleCk7CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgY3R4LnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VE
R0UpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBj
dHgudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHRleFcsIHRleEgsIDAsIGZv
cm1hdCwgZGF0YVR5cGUsIGRhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpKTsKKworICAgICAg
ICBjdHguYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBkc3RGYm8pOworICAgICAgICBj
dHgudmlld3BvcnQoMCwgMCwgdGhpcy5tX2RzdFNpemVbMF0sIHRoaXMubV9kc3RTaXplWzFdKTsK
KyAgICAgICAgY3R4LnN0ZW5jaWxGdW5jKGdsLkFMV0FZUywgMSwgMHhmZik7CisKKyAgICAgICAg
cnJVdGlsLmRyYXdRdWFkKGN0eCwgdGV4U2hhZGVySUQsIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0p
OworCisgICAgICAgIC8vIFBlcmZvcm0gY29weS4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZl
cihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBzcmNGYm8pOworICAgICAgICBjdHguYmluZEZyYW1lYnVm
ZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGRzdEZibyk7CisgICAgICAgIGN0eC5ibGl0RnJhbWVi
dWZmZXIodGhpcy5tX3NyY1JlY3RbMF0sIHRoaXMubV9zcmNSZWN0WzFdLCB0aGlzLm1fc3JjUmVj
dFsyXSwgdGhpcy5tX3NyY1JlY3RbM10sIHRoaXMubV9kc3RSZWN0WzBdLCB0aGlzLm1fZHN0UmVj
dFsxXSwgdGhpcy5tX2RzdFJlY3RbMl0sIHRoaXMubV9kc3RSZWN0WzNdLCB0aGlzLm1fY29weUJ1
ZmZlcnMsIGdsLk5FQVJFU1QpOworCisgICAgICAgIC8vIFJlbmRlciBibHVlIGNvbG9yIHdoZXJl
IGRlcHRoIDwgMCwgZGVjcmVtZW50IG9uIGRlcHRoIGZhaWx1cmUuCisgICAgICAgIGN0eC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGRzdEZibyk7CisgICAgICAgIGN0eC52aWV3cG9y
dCgwLCAwLCB0aGlzLm1fZHN0U2l6ZVswXSwgdGhpcy5tX2RzdFNpemVbMV0pOworICAgICAgICBj
dHguc3RlbmNpbE9wKGdsLktFRVAsIGdsLkRFQ1IsIGdsLktFRVApOworICAgICAgICBjdHguc3Rl
bmNpbEZ1bmMoZ2wuQUxXQVlTLCAwLCAweGZmKTsKKworICAgICAgICBmbGF0U2hhZGVyLnNldENv
bG9yKHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKSwgZmxhdFNoYWRlcklELCBbMC4wLCAwLjAsIDEu
MCwgMS4wXSk7CisKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZmxhdFNoYWRlcklELCBb
LTEsIC0xLCAwXSwgWzEsIDEsIDBdKTsKKworICAgICAgICBpZiAodGhpcy5tX2RzdEJ1ZmZlcnMg
JiBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpIHsKKyAgICAgICAgICAgIC8vIFJlbmRlciBncmVlbiBj
b2xvciB3aGVyZSBzdGVuY2lsID09IDYuCisgICAgICAgICAgICBjdHguZGlzYWJsZShnbC5ERVBU
SF9URVNUKTsKKyAgICAgICAgICAgIGN0eC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wu
S0VFUCk7CisgICAgICAgICAgICBjdHguc3RlbmNpbEZ1bmMoZ2wuRVFVQUwsIDYsIDB4ZmYpOwor
CisgICAgICAgICAgICBmbGF0U2hhZGVyLnNldENvbG9yKHRoaXMuZ2V0Q3VycmVudENvbnRleHQo
KSwgZmxhdFNoYWRlcklELCBbMC4wLCAxLjAsIDAuMCwgMS4wXSk7CisKKyAgICAgICAgICAgIHJy
VXRpbC5kcmF3UXVhZChjdHgsIGZsYXRTaGFkZXJJRCwgWy0xLCAtMSwgMF0sIFsxLCAxLCAwXSk7
CisKKyAgICAgICAgfQorICAgICAgICB0aGlzLnJlYWRQaXhlbHNVc2luZ0Zvcm1hdChkc3QsIDAs
IDAsIHRoaXMubV9kc3RTaXplWzBdLCB0aGlzLm1fZHN0U2l6ZVsxXSwgZ2x1VGV4dHVyZVV0aWwu
bWFwR0xJbnRlcm5hbEZvcm1hdChjb2xvckZvcm1hdCksIFsxLjAsIDEuMCwgMS4wLCAxLjBdLCBb
MC4wLCAwLjAsIDAuMCwgMC4wXSk7CisKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0Q2FzZX0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmaWx0
ZXIKKyAgICAgKi8KKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlZmF1bHRGcmFt
ZWJ1ZmZlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBmb3JtYXQsIGZpbHRlcikgeworICAg
ICAgICBlczNmRmJvVGVzdENhc2UuRmJvVGVzdENhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsK
KyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0Owor
ICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHRoaXMubV9maWx0ZXIgPSBmaWx0ZXI7Cisg
ICAgfTsKKworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGVmYXVsdEZyYW1lYnVm
ZmVyQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZGYm9UZXN0Q2FzZS5GYm9UZXN0
Q2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGVmYXVs
dEZyYW1lYnVmZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmRnJhbWVidWZmZXJC
bGl0VGVzdHMuQmxpdERlZmF1bHRGcmFtZWJ1ZmZlckNhc2U7CisKKyAgICAvKioKKyAgICAgKiBA
cHJvdGVjdGVkCisgICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXREZWZh
dWx0RnJhbWVidWZmZXJDYXNlLnByb3RvdHlwZS5wcmVDaGVjayA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0aGlzLmNoZWNrRm9ybWF0U3VwcG9ydCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7IC8vIE5vIGV4Y2VwdGlvbiB0aHJvd24KKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHByb3RlY3RlZAorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAg
ICAgKi8KKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERlZmF1bHRGcmFtZWJ1ZmZl
ckNhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGRzdCkgeworICAgICAgICB2YXIgY3R4
ID0gdGhpcy5nZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIGNvbG9yRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVU
ZXh0dXJlVXRpbC5UcmFuc2ZlckZvcm1hdH0gKi8gdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVy
ZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoY29sb3JGb3JtYXQpOworCisgICAgICAgIC8qKiBAdHlw
ZSB7ZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyfSAqLyB2YXIgZ3JhZFNoYWRlciA9IG5l
dyBlczNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXIoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUM0KTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJE
U2hhZGVyfSAqLyB2YXIgdGV4U2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlMkRT
aGFkZXIoW2dsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIyRFR5cGUoY29sb3JGb3JtYXQpXSwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKworICAgICAgICB2YXIgZ3JhZFNoYWRl
cklEID0gY3R4LmNyZWF0ZVByb2dyYW0oZ3JhZFNoYWRlcik7CisgICAgICAgIHZhciB0ZXhTaGFk
ZXJJRCA9IGN0eC5jcmVhdGVQcm9ncmFtKHRleFNoYWRlcik7CisgICAgICAgIHZhciBmYm87Cisg
ICAgICAgIHZhciB0ZXg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHRleFcg
PSAxMjg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHRleEggPSAxMjg7CisK
KyAgICAgICAgLy8gU2V0dXAgc2hhZGVycworICAgICAgICBncmFkU2hhZGVyLnNldEdyYWRpZW50
KGN0eCwgZ3JhZFNoYWRlcklELCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzEuMCwgMS4wLCAxLjAs
IDEuMF0pOworICAgICAgICB0ZXhTaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCB0ZXhTaGFkZXJJRCk7
CisKKyAgICAgICAgLy8gRkJPCisgICAgICAgIGZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICAgICAgICB0ZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIGN0eC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0aGlzLm1fZmlsdGVyKTsKKyAgICAgICAgY3R4LnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLm1f
ZmlsdGVyKTsKKyAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5t
X2Zvcm1hdCwgdGV4VywgdGV4SCwgMCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFuc2ZlckZtdC5k
YXRhVHlwZSwgbnVsbCk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAgICAg
ICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICAgICAgLy8gUmVuZGVyIGdyYWRpZW50IHRvIHNjcmVl
bi4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisK
KyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKGN0eCwgZ3JhZFNoYWRlcklELCBbLTEsIC0xLCAwXSwg
WzEsIDEsIDBdKTsKKworICAgICAgICAvLyBCbGl0IGdyYWRpZW50IGZyb20gc2NyZWVuIHRvIGZi
by4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBmYm8p
OworICAgICAgICBjdHguYmxpdEZyYW1lYnVmZmVyKDAsIDAsIGN0eC5nZXRXaWR0aCgpLCBjdHgu
Z2V0SGVpZ2h0KCksIDAsIDAsIHRleFcsIHRleEgsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIHRoaXMu
bV9maWx0ZXIpOworCisgICAgICAgIC8vIEZpbGwgbGVmdCBoYWxmIG9mIHZpZXdwb3J0IHdpdGgg
cXVhZCB0aGF0IHVzZXMgdGV4dHVyZS4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5E
UkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgY3R4LmNsZWFyQnVmZmVyZnYoZ2wuQ09M
T1IsIDAsIFsxLjAsIDAuMCwgMC4wLCAxLjBdKTsKKworICAgICAgICByclV0aWwuZHJhd1F1YWQo
Y3R4LCB0ZXhTaGFkZXJJRCwgWy0xLCAtMSwgMF0sIFsxLCAxLCAwXSk7CisKKyAgICAgICAgLy8g
QmxpdCBmYm8gdG8gcmlnaHQgaGFsZi4KKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBjdHguYmxpdEZyYW1lYnVmZmVyKDAsIDAs
IHRleFcsIHRleEgsIE1hdGguZmxvb3IoY3R4LmdldFdpZHRoKCkgLyAyKSwgMCwgY3R4LmdldFdp
ZHRoKCksIGN0eC5nZXRIZWlnaHQoKSwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgdGhpcy5tX2ZpbHRl
cik7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBu
dWxsKTsKKyAgICAgICAgdGhpcy5yZWFkUGl4ZWxzKGRzdCwgMCwgMCwgY3R4LmdldFdpZHRoKCks
IGN0eC5nZXRIZWlnaHQoKSk7CisKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByb3RlY3Rl
ZAorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSByZWZlcmVuY2UKKyAgICAgKiBA
cGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0CisgICAgICovCisgICAgZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzLkJsaXREZWZhdWx0RnJhbWVidWZmZXJDYXNlLnByb3RvdHlwZS5jb21w
YXJlID0gZnVuY3Rpb24ocmVmZXJlbmNlLCByZXN1bHQpIHsKKyAgICAgICAgLyoqIEBjb25zdCB7
dGN1UkdCQS5SR0JBfSAqLworICAgICAgICB2YXIgdGhyZXNob2xkID0gdGN1UkdCQS5tYXgoZXMz
ZkZib1Rlc3RVdGlsLmdldEZvcm1hdFRocmVzaG9sZCh0aGlzLm1fZm9ybWF0KSwgdGN1UkdCQS5u
ZXdSR0JBQ29tcG9uZW50cygxMiwgMTIsIDEyLCAxMikpOworCisgICAgICAgIC8vbV90ZXN0Q3R4
LmdldExvZygpIDw8IFRlc3RMb2c6Ok1lc3NhZ2UgPDwgJ0NvbXBhcmluZyBpbWFnZXMsIHRocmVz
aG9sZDogJyA8PCB0aHJlc2hvbGQgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKKworICAgICAgICBy
ZXR1cm4gdGN1SW1hZ2VDb21wYXJlLmJpbGluZWFyQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNv
bXBhcmlzb24gcmVzdWx0JywgcmVmZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQuZ2V0QWNjZXNz
KCksIHRocmVzaG9sZCk7CisgICAgfTsKKworICAgIC8qKiBAZW51bSAqLworICAgIGVzM2ZGcmFt
ZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0aW9uID0geworICAgICAgICBCTElUX0RFRkFVTFRf
VE9fVEFSR0VUOiAwLAorICAgICAgICBCTElUX1RPX0RFRkFVTFRfRlJPTV9UQVJHRVQ6IDEKKyAg
ICB9OworCisgICAgLyoqIEBlbnVtICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJs
aXRBcmVhID0geworICAgICAgICBBUkVBX1NDQUxFOiAwLAorICAgICAgICBBUkVBX09VVF9PRl9C
T1VORFM6IDEKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGVmYXVsdEZyYW1lYnVmZmVy
Q2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBmaWx0ZXIKKyAgICAgKiBAcGFyYW0ge2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0
RGlyZWN0aW9ufSBkaXIKKyAgICAgKiBAcGFyYW0ge2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5C
bGl0QXJlYX0gYXJlYQorICAgICAqLworICAgIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5EZWZh
dWx0RnJhbWVidWZmZXJCbGl0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGZvcm1hdCwgZmls
dGVyLCBkaXIsIGFyZWEpIHsKKyAgICAgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkJsaXRE
ZWZhdWx0RnJhbWVidWZmZXJDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYywgZm9ybWF0LCBmaWx0
ZXIpOworICAgICAgICAvKiogQGNvbnN0IHtlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERp
cmVjdGlvbn0gKi8gdGhpcy5tX2JsaXREaXIgPSBkaXI7CisgICAgICAgIC8qKiBAY29uc3Qge2Vz
M2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0QXJlYX0gKi8gdGhpcy5tX2JsaXRBcmVhID0gYXJl
YTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fc3JjUmVjdCA9
IFstMSwgLTEsIC0xLCAtMV07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dGhpcy5tX2RzdFJlY3QgPSBbLTEsIC0xLCAtMSwgLTFdOworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHRoaXMubV9pbnRlcmVzdGluZ0FyZWEgPSBbLTEsIC0xLCAtMSwgLTFd
OworICAgIH07CisKKyAgICBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuRGVmYXVsdEZyYW1lYnVm
ZmVyQmxpdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmRnJhbWVidWZmZXJCbGl0
VGVzdHMuQmxpdERlZmF1bHRGcmFtZWJ1ZmZlckNhc2UucHJvdG90eXBlKTsKKyAgICBlczNmRnJh
bWVidWZmZXJCbGl0VGVzdHMuRGVmYXVsdEZyYW1lYnVmZmVyQmxpdENhc2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkRlZmF1bHRGcmFtZWJ1ZmZlckJs
aXRDYXNlOworCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkRlZmF1bHRGcmFtZWJ1ZmZl
ckJsaXRDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIHJlcXVp
cmVtZW50cworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBtaW5WaWV3cG9ydFNp
emUgPSAxMjg7CisgICAgICAgIGlmIChnbC5kcmF3aW5nQnVmZmVyV2lkdGggPCBtaW5WaWV3cG9y
dFNpemUgfHwKKyAgICAgICAgICAgIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQgPCBtaW5WaWV3cG9y
dFNpemUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXdwb3J0IHNpemUgJyArIG1p
blZpZXdwb3J0U2l6ZSArICd4JyArIG1pblZpZXdwb3J0U2l6ZSArICcgcmVxdWlyZWQnKTsKKwor
ICAgICAgICAvLyBwcmV2ZW50IHZpZXdwb3J0IHJhbmRvbWluZworICAgICAgICB0aGlzLm1fdmll
d3BvcnRXaWR0aCA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aDsKKyAgICAgICAgdGhpcy5tX3ZpZXdw
b3J0SGVpZ2h0ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodDsKKworICAgICAgICAvLyBzZXQgcHJv
cGVyIGFyZWFzCisgICAgICAgIGlmICh0aGlzLm1fYmxpdEFyZWEgPT0gZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzLkJsaXRBcmVhLkFSRUFfU0NBTEUpIHsKKyAgICAgICAgICAgIHRoaXMubV9zcmNS
ZWN0ID0gWzEwLCAyMCwgNjUsIDEwMF07CisgICAgICAgICAgICB0aGlzLm1fZHN0UmVjdCA9IFsy
NSwgMzAsIDEyNSwgOTRdOworICAgICAgICAgICAgdGhpcy5tX2ludGVyZXN0aW5nQXJlYSA9IFsw
LCAwLCAxMjgsIDEyOF07CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tX2JsaXRBcmVhID09IGVz
M2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0QXJlYS5BUkVBX09VVF9PRl9CT1VORFMpIHsKKyAg
ICAgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIg
dWJvdW5kID0gKHRoaXMubV9ibGl0RGlyID09IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0
RGlyZWN0aW9uLkJMSVRfREVGQVVMVF9UT19UQVJHRVQpID8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAoWzEyOCwgMTI4XSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgIChbZ2wuZHJhd2lu
Z0J1ZmZlcldpZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0XSk7CisKKyAgICAgICAgICAgIHRo
aXMubV9zcmNSZWN0ID0gWy0xMCwgLTE1LCAxMDAsIDYzXTsKKyAgICAgICAgICAgIHRoaXMubV9k
c3RSZWN0ID0gZGVNYXRoLmFkZChkZU1hdGguc3dpenpsZSh1Ym91bmQsIFswLCAxLCAwLCAxXSks
IFstNzUsIC05OSwgOCwgMTZdKTsKKyAgICAgICAgICAgIHRoaXMubV9pbnRlcmVzdGluZ0FyZWEg
PSBbdWJvdW5kWzBdIC0gMTI4LCB1Ym91bmRbMV0gLSAxMjgsIHVib3VuZFswXSwgdWJvdW5kWzFd
XTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZh
Y2UuU3VyZmFjZX0gZHN0CisgICAgICovCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLkRl
ZmF1bHRGcmFtZWJ1ZmZlckJsaXRDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihkc3Qp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdENhc2UuQ29udGV4dH0gKi8KKyAgICAg
ICAgdmFyIGN0eCA9IHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgLy8gVE9PRDog
aW1wbGVtZW50CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAq
LyB2YXIgY29sb3JGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRo
aXMubV9mb3JtYXQpOworICAgICAgICAvKiogQHR5cGUge2dsdVRleHR1cmVVdGlsLlRyYW5zZmVy
Rm9ybWF0fSAqLyB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZv
cm1hdChjb2xvckZvcm1hdCk7CisgICAgICAgIC8qKiBAY29uc3Qge3RjdVRleHR1cmUuVGV4dHVy
ZUNoYW5uZWxDbGFzc30gKi8KKyAgICAgICAgdmFyIHRhcmdldENsYXNzID0gKHRoaXMubV9ibGl0
RGlyID09IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0aW9uLkJMSVRfREVGQVVM
VF9UT19UQVJHRVQpID8KKyAgICAgICAgICAgICh0Y3VUZXh0dXJlLmdldFRleHR1cmVDaGFubmVs
Q2xhc3MoY29sb3JGb3JtYXQudHlwZSkpIDoKKyAgICAgICAgICAgICh0Y3VUZXh0dXJlLlRleHR1
cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURfUE9JTlQpOworCisgICAgICAgIHZhciBmYm87
CisgICAgICAgIHZhciBmYm9UZXg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFy
IGZib1RleFcgPSAxMjg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIGZib1Rl
eEggPSAxMjg7CisgICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIHNvdXJjZVdpZHRo
ID0gKHRoaXMubV9ibGl0RGlyID09IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0
aW9uLkJMSVRfREVGQVVMVF9UT19UQVJHRVQpID8gKGN0eC5nZXRXaWR0aCgpKSA6IChmYm9UZXhX
KTsKKyAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyB2YXIgc291cmNlSGVpZ2h0ID0gKHRo
aXMubV9ibGl0RGlyID09IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0aW9uLkJM
SVRfREVGQVVMVF9UT19UQVJHRVQpID8gKGN0eC5nZXRIZWlnaHQoKSkgOiAoZmJvVGV4SCk7Cisg
ICAgICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gdmFyIGdyaWRSZW5kZXJXaWR0aCA9IE1hdGgu
bWluKDI1Niwgc291cmNlV2lkdGgpOworICAgICAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIHZh
ciBncmlkUmVuZGVySGVpZ2h0ID0gTWF0aC5taW4oMjU2LCBzb3VyY2VIZWlnaHQpOworCisgICAg
ICAgIHZhciB0YXJnZXRGYm87CisgICAgICAgIHZhciBzb3VyY2VGYm87CisKKyAgICAgICAgLy8g
RkJPCisgICAgICAgIGZibyA9IGN0eC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBmYm9U
ZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIGN0eC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCBmYm9UZXgpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGN0eC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCB0aGlzLm1fZmlsdGVyKTsKKyAgICAgICAgY3R4LnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLm1fZmlsdGVyKTsK
KyAgICAgICAgY3R4LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2Zvcm1hdCwg
ZmJvVGV4VywgZmJvVGV4SCwgMCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFuc2ZlckZtdC5kYXRh
VHlwZSwgbnVsbCk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgICAgICAgY3R4LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgZmJvVGV4LCAwKTsKKyAgICAg
ICAgdGhpcy5jaGVja0Vycm9yKCk7CisgICAgICAgIHRoaXMuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUik7CisKKyAgICAgICAgdGFyZ2V0RmJvID0gKHRoaXMubV9ibGl0RGly
ID09IGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0aW9uLkJMSVRfREVGQVVMVF9U
T19UQVJHRVQpID8gKGZibykgOiAobnVsbCk7CisgICAgICAgIHNvdXJjZUZibyA9ICh0aGlzLm1f
YmxpdERpciA9PSBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuQmxpdERpcmVjdGlvbi5CTElUX0RF
RkFVTFRfVE9fVEFSR0VUKSA/IChudWxsKSA6IChmYm8pOworCisgICAgICAgIC8vIFJlbmRlciBn
cmlkIHRvIHNvdXJjZSBmcmFtZWJ1ZmZlcgorICAgICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0
VXRpbC5UZXh0dXJlMkRTaGFkZXJ9ICovCisgICAgICAgIHZhciB0ZXhTaGFkZXIgPSBuZXcgZXMz
ZkZib1Rlc3RVdGlsLlRleHR1cmUyRFNoYWRlcigKKyAgICAgICAgICAgIFtnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlNBTVBMRVJfMkRdLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgdmFyIHRleFNoYWRlcklEID0gdGhpcy5nZXRDdXJyZW50
Q29udGV4dCgpLmNyZWF0ZVByb2dyYW0odGV4U2hhZGVyKTsKKyAgICAgICAgLyoqIEBjb25zdCB7
bnVtYmVyfSAqLyB2YXIgaW50ZXJuYWxGb3JtYXQgPSBnbC5SR0JBODsKKyAgICAgICAgLyoqIEBj
b25zdCB7bnVtYmVyfSAqLyB2YXIgZm9ybWF0ID0gZ2wuUkdCQTsKKyAgICAgICAgLyoqIEBjb25z
dCB7bnVtYmVyfSAqLyB2YXIgZGF0YVR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICAgICAgICAv
KiogQGNvbnN0IHtudW1iZXJ9ICovIHZhciBncmlkVGV4VyA9IDEyODsKKyAgICAgICAgLyoqIEBj
b25zdCB7bnVtYmVyfSAqLyB2YXIgZ3JpZFRleEggPSAxMjg7CisgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xUZXh0dXJlfGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVu
Y2VDb250ZXh0LlRleHR1cmVDb250YWluZXJ8bnVsbH0gKi8KKyAgICAgICAgdmFyIGdyaWRUZXgg
PSBudWxsOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUxldmVsfSAqLyB2
YXIgZGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChnbHVUZXh0dXJlVXRpbC5tYXBH
TFRyYW5zZmVyRm9ybWF0KGZvcm1hdCwgZGF0YVR5cGUpLCBncmlkVGV4VywgZ3JpZFRleEgsIDEp
OworCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChkYXRhLmdldEFjY2Vzcygp
LCA5LCBbMC45LCAwLjUsIDAuMSwgMC45XSwgWzAuMiwgMC44LCAwLjIsIDAuN10pOworCisgICAg
ICAgIGdyaWRUZXggPSBjdHguY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjdHguYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgZ3JpZFRleCk7CisgICAgICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAg
ICAgY3R4LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGds
LkNMQU1QX1RPX0VER0UpOworICAgICAgICBjdHgudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBjdHgudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1Qp
OworICAgICAgICBjdHgudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBpbnRlcm5hbEZvcm1h
dCwgZ3JpZFRleFcsIGdyaWRUZXhILCAwLCBmb3JtYXQsIGRhdGFUeXBlLCBkYXRhLmdldEFjY2Vz
cygpLmdldERhdGFQdHIoKSk7CisKKyAgICAgICAgY3R4LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgc291cmNlRmJvKTsKKyAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIGdyaWRSZW5k
ZXJXaWR0aCwgZ3JpZFJlbmRlckhlaWdodCk7CisgICAgICAgIGN0eC5jbGVhckJ1ZmZlcmZ2KGds
LkNPTE9SLCAwLCBbMS4wLCAwLjAsIDAuMCwgMS4wXSk7CisKKyAgICAgICAgdGV4U2hhZGVyLnNl
dFVuaWZvcm1zKHRoaXMuZ2V0Q3VycmVudENvbnRleHQoKSwgdGV4U2hhZGVySUQpOworCisgICAg
ICAgIHJyVXRpbC5kcmF3UXVhZChjdHgsIHRleFNoYWRlcklELCBbLTEsIC0xLCAwXSwgWzEsIDEs
IDBdKTsKKworICAgICAgICBjdHgudXNlUHJvZ3JhbShudWxsKTsKKworICAgICAgICAvLyBCbGl0
IHNvdXJjZSBmcmFtZWJ1ZmZlciB0byBkZXN0aW5hdGlvbgorCisgICAgICAgIGN0eC5iaW5kRnJh
bWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgc291cmNlRmJvKTsKKyAgICAgICAgY3R4LmJp
bmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCB0YXJnZXRGYm8pOworICAgICAgICB0
aGlzLmNoZWNrRXJyb3IoKTsKKworICAgICAgICBpZiAodGFyZ2V0Q2xhc3MgPT0gdGN1VGV4dHVy
ZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9GSVhFRF9QT0lOVCB8fAorICAgICAgICAgICAg
dGFyZ2V0Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJ
WEVEX1BPSU5UIHx8CisgICAgICAgICAgICB0YXJnZXRDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1
cmVDaGFubmVsQ2xhc3MuRkxPQVRJTkdfUE9JTlQpCisgICAgICAgICAgICBjdHguY2xlYXJCdWZm
ZXJmdihnbC5DT0xPUiwgMCwgWzEuMCwgMS4wLCAwLjAsIDEuMF0pOworICAgICAgICBlbHNlIGlm
ICh0YXJnZXRDbGFzcyA9PSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0lO
VEVHRVIpCisgICAgICAgICAgICBjdHguY2xlYXJCdWZmZXJpdihnbC5DT0xPUiwgMCwgWzAsIDAs
IDAsIDBdKTsKKyAgICAgICAgZWxzZSBpZiAodGFyZ2V0Q2xhc3MgPT0gdGN1VGV4dHVyZS5UZXh0
dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVIpCisgICAgICAgICAgICBjdHguY2xlYXJC
dWZmZXJ1aXYoZ2wuQ09MT1IsIDAsIFswLCAwLCAwLCAwXSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisKKyAgICAgICAgY3R4LmJsaXRGcmFtZWJ1ZmZlcih0
aGlzLm1fc3JjUmVjdFswXSwgdGhpcy5tX3NyY1JlY3RbMV0sIHRoaXMubV9zcmNSZWN0WzJdLCB0
aGlzLm1fc3JjUmVjdFszXSwgdGhpcy5tX2RzdFJlY3RbMF0sIHRoaXMubV9kc3RSZWN0WzFdLCB0
aGlzLm1fZHN0UmVjdFsyXSwgdGhpcy5tX2RzdFJlY3RbM10sIGdsLkNPTE9SX0JVRkZFUl9CSVQs
IHRoaXMubV9maWx0ZXIpOworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsKKworICAgICAgICAv
LyBSZWFkIHRhcmdldAorCisgICAgICAgIGN0eC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIHRhcmdldEZibyk7CisKKyAgICAgICAgaWYgKHRoaXMubV9ibGl0RGlyID09IGVzM2ZGcmFt
ZWJ1ZmZlckJsaXRUZXN0cy5CbGl0RGlyZWN0aW9uLkJMSVRfVE9fREVGQVVMVF9GUk9NX1RBUkdF
VCkKKyAgICAgICAgICAgIHRoaXMucmVhZFBpeGVscyhkc3QsIHRoaXMubV9pbnRlcmVzdGluZ0Fy
ZWFbMF0sIHRoaXMubV9pbnRlcmVzdGluZ0FyZWFbMV0sIHRoaXMubV9pbnRlcmVzdGluZ0FyZWFb
Ml0gLSB0aGlzLm1faW50ZXJlc3RpbmdBcmVhWzBdLCB0aGlzLm1faW50ZXJlc3RpbmdBcmVhWzNd
IC0gdGhpcy5tX2ludGVyZXN0aW5nQXJlYVsxXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMucmVhZFBpeGVsc1VzaW5nRm9ybWF0KGRzdCwgdGhpcy5tX2ludGVyZXN0aW5nQXJlYVsw
XSwgdGhpcy5tX2ludGVyZXN0aW5nQXJlYVsxXSwgdGhpcy5tX2ludGVyZXN0aW5nQXJlYVsyXSAt
IHRoaXMubV9pbnRlcmVzdGluZ0FyZWFbMF0sIHRoaXMubV9pbnRlcmVzdGluZ0FyZWFbM10gLSB0
aGlzLm1faW50ZXJlc3RpbmdBcmVhWzFdLCBjb2xvckZvcm1hdCwgWzEuMCwgMS4wLCAxLjAsIDEu
MF0sIFswLjAsIDAuMCwgMC4wLCAwLjBdKTsKKworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsK
KyAgICB9OworCisgICAgZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNv
bnRleHQsIHJhbmdlKSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAg
cm9vdCBUZXN0CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAg
ICAgICB2YXIgdGVzdCA9IG5ldyBlczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuRnJhbWVidWZmZXJC
bGl0VGVzdHMoKTsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gdGVzdC5mdWxsTmFtZSgpOworICAg
ICAgICB2YXIgdGVzdERlc2NyaXB0aW9uID0gdGVzdC5nZXREZXNjcmlwdGlvbigpIHx8ICcnOwor
CisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0gdGVzdE5hbWU7CisgICAgICAgIHN0YXRlLnNldFJv
b3QodGVzdCk7CisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMg
dGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CisgICAg
ICAgIGRlc2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIC8vQ3JlYXRlIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRlc3QuaW5pdCgpOworICAg
ICAgICAgICAgaWYgKHJhbmdlKQorICAgICAgICAgICAgICAgIHN0YXRlLnNldFJhbmdlKHJhbmdl
KTsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RDYXNl
LnJ1blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
T3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4gdGVzdHMnLCBm
YWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAg
ICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmSW5kZXhlZFN0
YXRlUXVlcnlUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMThmNjcwOGIyNDI1MGYwMzc4Y2Q4MDY5MDk1NGViOTc2Y2YyOTlkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLmpz
CkBAIC0wLDAgKzEsNDA5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBR
dWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAnQVMgSVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Z29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3Rz
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScpOworCitnb29nLnNjb3BlKGZ1
bmN0aW9uKCkgeworCXZhciBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cyA9IGZ1bmN0aW9uYWwu
Z2xlczMuZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZXMzZkFwaUNhc2UgPSBmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlOworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICog
QGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KwkgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8KKwllczNmSW5kZXhlZFN0YXRl
UXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbikgeworCQllczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRp
b24sIGdsKTsKKwl9OworCisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVl
ZGJhY2tDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5w
cm90b3R5cGUpOworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNr
Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5U
cmFuc2Zvcm1GZWVkYmFja0Nhc2U7CisKKwllczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5UcmFu
c2Zvcm1GZWVkYmFja0Nhc2UucHJvdG90eXBlLnRlc3RUcmFuc2Zvcm1GZWVkYmFjayA9IGZ1bmN0
aW9uKCkgeworCQl0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlk
ZW4uJyk7CisJfTsKKworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRi
YWNrQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIHRyYW5zZm9ybUZlZWRiYWNrVGVzdFZlcnRTb3VyY2UgPSAnJyArCisJCQknI3Zl
cnNpb24gMzAwIGVzXG4nICsKKwkJCSdvdXQgaGlnaHAgdmVjNCBhbm90aGVyT3V0cHV0O1xuJyAr
CisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCWdsX1Bvc2l0aW9u
ID0gdmVjNCgwLjApO1xuJyArCisJCQknCWFub3RoZXJPdXRwdXQgPSB2ZWM0KDAuMCk7XG4nICsK
KwkJCSd9XG4nOworCQkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHRyYW5zZm9ybUZlZWRiYWNr
VGVzdEZyYWdTb3VyY2UgPSAnJyArCisJCQknI3ZlcnNpb24gMzAwIGVzXG4nICsKKwkJCSdsYXlv
dXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsnICsKKwkJCSd2b2lk
IG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJZnJhZ0NvbG9yID0gdmVjNCgwLjAp
O1xuJyArCisJCQknfVxuJzsKKworCQkvKiogQHR5cGUge1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hh
ZGVyVmVydCA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKwkJLyoqIEB0eXBl
IHtXZWJHTFNoYWRlcn0gKi8gdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJB
R01FTlRfU0hBREVSKTsKKworCQlnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyVmVydCwgdHJhbnNmb3Jt
RmVlZGJhY2tUZXN0VmVydFNvdXJjZSk7CisJCWdsLnNoYWRlclNvdXJjZShzaGFkZXJGcmFnLCB0
cmFuc2Zvcm1GZWVkYmFja1Rlc3RGcmFnU291cmNlKTsKKworCQlnbC5jb21waWxlU2hhZGVyKHNo
YWRlclZlcnQpOworCQlnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisJCS8qKiBAdHlw
ZSB7V2ViR0xQcm9ncmFtfSAqLyB2YXIgc2hhZGVyUHJvZyA9IGdsLmNyZWF0ZVByb2dyYW0oKTsK
KwkJZ2wuYXR0YWNoU2hhZGVyKHNoYWRlclByb2csIHNoYWRlclZlcnQpOworCQlnbC5hdHRhY2hT
aGFkZXIoc2hhZGVyUHJvZywgc2hhZGVyRnJhZyk7CisKKwkJLyoqIEB0eXBlIHtBcnJheTxzdHJp
bmc+fSAqLyB2YXIgdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzID0gWydnbF9Qb3NpdGlvbicsICdh
bm90aGVyT3V0cHV0J107CisKKwkJZ2wudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhzaGFkZXJQ
cm9nLCB0cmFuc2Zvcm1GZWVkYmFja091dHB1dHMsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOwor
CQlnbC5saW5rUHJvZ3JhbShzaGFkZXJQcm9nKTsKKworCQkvKiogQHR5cGUge1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2t9ICovIHZhciB0cmFuc2Zvcm1GZWVkYmFja0lkID0gZ2wuY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKTsKKwkJZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9G
RUVEQkFDSywgdHJhbnNmb3JtRmVlZGJhY2tJZCk7CisKKwkJdGhpcy50ZXN0VHJhbnNmb3JtRmVl
ZGJhY2soKTsKKworCQkvLyBjbGVhbnVwCisKKwkJZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGds
LlRSQU5TRk9STV9GRUVEQkFDSywgbnVsbCk7CisKKwkJZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2sodHJhbnNmb3JtRmVlZGJhY2tJZCk7CisJCWdsLmRlbGV0ZVNoYWRlcihzaGFkZXJWZXJ0KTsK
KwkJZ2wuZGVsZXRlU2hhZGVyKHNoYWRlckZyYWcpOworCQlnbC5kZWxldGVQcm9ncmFtKHNoYWRl
clByb2cpOworCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7ZXMz
ZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlfQorCSAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisJICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisJICovCisJ
ZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5n
Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisJCWVzM2ZJbmRleGVkU3RhdGVR
dWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uKTsKKwl9OworCisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJCaW5kaW5nQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZJbmRleGVk
U3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5wcm90b3R5cGUpOworCWVzM2ZJ
bmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQmluZGluZ0Nhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5nQ2FzZTsKKworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRl
c3RzLlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQmluZGluZ0Nhc2UucHJvdG90eXBlLnRlc3RUcmFu
c2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGZlZWRiYWNrUG9zaXRpb25JbmRleCA9IDA7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
ZmVlZGJhY2tPdXRwdXRJbmRleCA9IDE7CisJCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGZlZWRiYWNrSW5kZXggPSBbZmVlZGJhY2tQb3NpdGlvbkluZGV4LCBmZWVkYmFja091dHB1
dEluZGV4XTsKKworCQkvLyBiaW5kIGJ1ZmZlcnMKKworCQkvKiogQHR5cGUge0FycmF5PFdlYkdM
QnVmZmVyPn0gKi8gdmFyIGZlZWRiYWNrQnVmZmVycyA9IFtdOworCQlmb3IgKHZhciBuZHggPSAw
OyBuZHggPCAyOyBuZHgrKykKKwkJCWZlZWRiYWNrQnVmZmVyc1tuZHhdID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgZmVlZGJhY2tCdWZmZXJzLmxlbmd0
aDsgbmR4KyspIHsKKwkJCWdsLmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgZmVlZGJhY2tCdWZmZXJzW25keF0pOworCQkJZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KDE2KSwgZ2wuRFlOQU1JQ19SRUFEKTsK
KwkJCWdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGZlZWRi
YWNrSW5kZXhbbmR4XSwgZmVlZGJhY2tCdWZmZXJzW25keF0pOworCQl9CisKKwkJLy8gdGVzdCBU
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgZmVlZGJhY2tCdWZmZXJzLmxlbmd0aDsgbmR4KyspIHsKKwkJCXZhciBib3VuZEJ1ZmZlciA9
IC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICovIChnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywgbmR4KSk7CisJCQl0aGlzLmNoZWNrKGJv
dW5kQnVmZmVyID09PSBmZWVkYmFja0J1ZmZlcnNbbmR4XSwgJ2J1ZmZlcnMgZG8gbm90IG1hdGNo
Jyk7CisJCX0KKworCQkvLyBjbGVhbnVwCisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IGZlZWRi
YWNrQnVmZmVycy5sZW5ndGg7IG5keCsrKQorCQkJZ2wuZGVsZXRlQnVmZmVyKGZlZWRiYWNrQnVm
ZmVyc1tuZHhdKTsKKwl9OworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMg
e2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZX0KKwkgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSAq
LworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQnVm
ZmVyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisJCWVzM2ZJbmRleGVkU3Rh
dGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2Ny
aXB0aW9uKTsKKwl9OworCisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXJCdWZmZXJDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkluZGV4
ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlLnByb3RvdHlwZSk7CisJZXMz
ZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCdWZmZXJDYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyQnVmZmVyQ2FzZTsKKworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRl
c3RzLlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQnVmZmVyQ2FzZS5wcm90b3R5cGUudGVzdFRyYW5z
Zm9ybUZlZWRiYWNrID0gZnVuY3Rpb24oKSB7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
ZmVlZGJhY2tQb3NpdGlvbkluZGV4ID0gMDsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBm
ZWVkYmFja091dHB1dEluZGV4ID0gMTsKKworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJh
bmdlQnVmZmVyT2Zmc2V0ID0gNDsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByYW5nZUJ1
ZmZlclNpemUgPSA4OworCisJCS8vIGJpbmQgYnVmZmVycworCisJCS8qKiBAdHlwZSB7QXJyYXk8
V2ViR0xCdWZmZXI+fSAqLyB2YXIgZmVlZGJhY2tCdWZmZXJzID0gW107CisJCWZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDI7IG5keCsrKQorCQkJZmVlZGJhY2tCdWZmZXJzW25keF0gPSBnbC5jcmVh
dGVCdWZmZXIoKTsKKworCQlnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIsIGZlZWRiYWNrQnVmZmVyc1swXSk7CisJCWdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgxNiksIGdsLkRZTkFNSUNfUkVBRCk7CisJ
CWdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGZlZWRiYWNr
UG9zaXRpb25JbmRleCwgZmVlZGJhY2tCdWZmZXJzWzBdKTsKKworCQlnbC5iaW5kQnVmZmVyKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGZlZWRiYWNrQnVmZmVyc1sxXSk7CisJCWdsLmJ1
ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgx
NiksIGdsLkRZTkFNSUNfUkVBRCk7CisJCWdsLmJpbmRCdWZmZXJSYW5nZShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCBmZWVkYmFja091dHB1dEluZGV4LCBmZWVkYmFja0J1ZmZlcnNbMV0s
IHJhbmdlQnVmZmVyT2Zmc2V0LCByYW5nZUJ1ZmZlclNpemUpOworCisJCS8qKiBAdHlwZSB7QXJy
YXk8e2luZGV4OiBudW1iZXIsIHBuYW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXJ9Pn0gKi8gdmFy
IHJlcXVpcmVtZW50cyA9IFsKKwkJCXtpbmRleDogZmVlZGJhY2tQb3NpdGlvbkluZGV4LCBwbmFt
ZTogZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVCwgdmFsdWU6IDB9LAorCQkJe2lu
ZGV4OiBmZWVkYmFja1Bvc2l0aW9uSW5kZXgsIHBuYW1lOiBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX1NJWkUsIHZhbHVlOiAwfSwKKwkJCXtpbmRleDogZmVlZGJhY2tPdXRwdXRJbmRleCwg
cG5hbWU6IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQsIHZhbHVlOiByYW5nZUJ1
ZmZlck9mZnNldH0sCisJCQl7aW5kZXg6IGZlZWRiYWNrT3V0cHV0SW5kZXgsIHBuYW1lOiBnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUsIHZhbHVlOiByYW5nZUJ1ZmZlclNpemV9CisJ
CV07CisKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgcmVxdWlyZW1lbnRzLmxlbmd0aDsgbmR4
KyspIHsKKwkJCXZhciBzdGF0ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihyZXF1aXJlbWVudHNbbmR4XS5wbmFtZSwgcmVxdWlyZW1lbnRzW25keF0uaW5k
ZXgpKTsKKwkJCXRoaXMuY2hlY2soc3RhdGUgPT09IHJlcXVpcmVtZW50c1tuZHhdLnZhbHVlLCAn
Z290ICcgKyBzdGF0ZSArICc7IGV4cGVjdGVkICcgKyByZXF1aXJlbWVudHNbbmR4XS52YWx1ZSk7
CisJCX0KKworCQkvLyBjbGVhbnVwCisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IGZlZWRiYWNr
QnVmZmVycy5sZW5ndGg7IG5keCsrKQorCQkJZ2wuZGVsZXRlQnVmZmVyKGZlZWRiYWNrQnVmZmVy
c1tuZHhdKTsKKwl9OworCisJLyoqCisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMge2Vz
M2ZBcGlDYXNlLkFwaUNhc2V9CisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKi8KKwllczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5V
bmlmb3JtQnVmZmVyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisJCWVzM2ZB
cGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworCQkvKiog
QHR5cGUgez9XZWJHTFByb2dyYW19ICovIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKwl9OworCisJ
ZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybUJ1ZmZlckNhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisJZXMzZkluZGV4
ZWRTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybUJ1ZmZlckNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybUJ1ZmZlckNhc2U7CisKKwllczNm
SW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQ2FzZS5wcm90b3R5cGUudGVzdFVu
aWZvcm1CdWZmZXJzID0gZnVuY3Rpb24oKSB7CisJCXRocm93IG5ldyBFcnJvcignVGhpcyBtZXRo
b2Qgc2hvdWxkIGJlIG92ZXJyaWRlbi4nKTsKKwl9OworCisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5
VGVzdHMuVW5pZm9ybUJ1ZmZlckNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKwor
CQkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHRlc3RWZXJ0U291cmNlID0gJycgKworCQkJJyN2
ZXJzaW9uIDMwMCBlc1xuJyArCisJCQkndW5pZm9ybSBoaWdocCB2ZWM0IGlucHV0MTtcbicgKwor
CQkJJ3VuaWZvcm0gaGlnaHAgdmVjNCBpbnB1dDI7XG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKwkJCSd7XG4nICsKKwkJCScJZ2xfUG9zaXRpb24gPSBpbnB1dDEgKyBpbnB1dDI7XG4n
ICsKKwkJCSd9XG4nOworCQkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHRlc3RGcmFnU291cmNl
ID0gJycgKworCQkJJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisJCQknbGF5b3V0KGxvY2F0aW9uID0g
MCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7JyArCisJCQkndm9pZCBtYWluICh2b2lkKVxu
JyArCisJCQkne1xuJyArCisJCQknCWZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbicgKworCQkJJ31c
bic7CisKKwkJLyoqIEB0eXBlIHtXZWJHTFNoYWRlcn0gKi8gdmFyIHNoYWRlclZlcnQgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisJCS8qKiBAdHlwZSB7V2ViR0xTaGFkZXJ9
ICovIHZhciBzaGFkZXJGcmFnID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7
CisKKwkJZ2wuc2hhZGVyU291cmNlKHNoYWRlclZlcnQsIHRlc3RWZXJ0U291cmNlKTsKKwkJZ2wu
c2hhZGVyU291cmNlKHNoYWRlckZyYWcsIHRlc3RGcmFnU291cmNlKTsKKworCQlnbC5jb21waWxl
U2hhZGVyKHNoYWRlclZlcnQpOworCQlnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisJ
CXRoaXMubV9wcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworCQlnbC5hdHRhY2hTaGFkZXIo
dGhpcy5tX3Byb2dyYW0sIHNoYWRlclZlcnQpOworCQlnbC5hdHRhY2hTaGFkZXIodGhpcy5tX3By
b2dyYW0sIHNoYWRlckZyYWcpOworCQlnbC5saW5rUHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbSk7CisJ
CWdsLnVzZVByb2dyYW0odGhpcy5tX3Byb2dyYW0pOworCisJCXRoaXMudGVzdFVuaWZvcm1CdWZm
ZXJzKCk7CisKKwkJZ2wudXNlUHJvZ3JhbShudWxsKTsKKwkJZ2wuZGVsZXRlU2hhZGVyKHNoYWRl
clZlcnQpOworCQlnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisJCWdsLmRlbGV0ZVByb2dy
YW0odGhpcy5tX3Byb2dyYW0pOworCX07CisKKwkvKioKKwkqIEBjb25zdHJ1Y3RvcgorCSogQGV4
dGVuZHMge2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1CdWZmZXJDYXNlfQorCSog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSov
CisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybUJ1ZmZlckJpbmRpbmdDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKwkJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVz
dHMuVW5pZm9ybUJ1ZmZlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisJCS8q
KiBAdHlwZSB7P1dlYkdMUHJvZ3JhbX0gKi8gdGhpcy5tX3Byb2dyYW0gPSBudWxsOworCX07CisK
KwllczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQmluZGluZ0Nhc2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3Jt
QnVmZmVyQ2FzZS5wcm90b3R5cGUpOworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlVuaWZv
cm1CdWZmZXJCaW5kaW5nQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW5kZXhlZFN0
YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQmluZGluZ0Nhc2U7CisKKwllczNmSW5kZXhlZFN0
YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQmluZGluZ0Nhc2UucHJvdG90eXBlLnRlc3RVbmlm
b3JtQnVmZmVycyA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICov
IHZhciB1bmlmb3JtTmFtZXMgPSBbJ2lucHV0MScsICdpbnB1dDInXTsKKworCQkvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciB1bmlmb3JtSW5kaWNlcyA9IGdsLmdldFVuaWZvcm1JbmRp
Y2VzKHRoaXMubV9wcm9ncmFtLCB1bmlmb3JtTmFtZXMpOworCisJCS8qKiBAdHlwZSB7QXJyYXk8
V2ViR0xCdWZmZXI+fSAqLyB2YXIgYnVmZmVycyA9IFtdOworCQlmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCAyOyBuZHgrKykKKwkJCWJ1ZmZlcnNbbmR4XSA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworCisJ
CWZvciAodmFyIG5keCA9IDA7IG5keCA8IGJ1ZmZlcnMubGVuZ3RoOyArK25keCkgeworCQkJZ2wu
YmluZEJ1ZmZlcihnbC5VTklGT1JNX0JVRkZFUiwgYnVmZmVyc1tuZHhdKTsKKwkJCWdsLmJ1ZmZl
ckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoMzIpLCBnbC5EWU5BTUlD
X0RSQVcpOworCQkJZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIHVuaWZvcm1J
bmRpY2VzW25keF0sIGJ1ZmZlcnNbbmR4XSk7CisJCX0KKworCQkvKiogQHR5cGUge0FycmF5PFdl
YkdMQnVmZmVyPn0gKi8gdmFyIGJvdW5kQnVmZmVyID0gW107CisJCWZvciAodmFyIG5keCA9IDA7
IG5keCA8IGJ1ZmZlcnMubGVuZ3RoOyBuZHgrKykgeworCQkJYm91bmRCdWZmZXJbbmR4XSA9IC8q
KiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICovIChnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZP
Uk1fQlVGRkVSX0JJTkRJTkcsIHVuaWZvcm1JbmRpY2VzW25keF0pKTsKKwkJCXRoaXMuY2hlY2so
Ym91bmRCdWZmZXJbbmR4XSA9PT0gYnVmZmVyc1tuZHhdLCAnYnVmZmVycyBkbyBub3QgbWF0Y2gn
KTsKKwkJfQorCisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IGJ1ZmZlcnMubGVuZ3RoOyBuZHgr
KykKKwkJCWdsLmRlbGV0ZUJ1ZmZlcihidWZmZXJzW25keF0pOworCX07CisKKwkvKioKKwkqIEBj
b25zdHJ1Y3RvcgorCSogQGV4dGVuZHMge2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlVuaWZv
cm1CdWZmZXJDYXNlfQorCSogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjcmlwdGlvbgorCSovCisJZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybUJ1
ZmZlckJ1ZmZlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworCQllczNmSW5k
ZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRl
c2NyaXB0aW9uKTsKKwkJLyoqIEB0eXBlIHs/V2ViR0xQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3Jh
bSA9IG51bGw7CisJfTsKKworCWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1CdWZm
ZXJCdWZmZXJDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkluZGV4ZWRTdGF0ZVF1
ZXJ5VGVzdHMuVW5pZm9ybUJ1ZmZlckNhc2UucHJvdG90eXBlKTsKKwllczNmSW5kZXhlZFN0YXRl
UXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQnVmZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQnVmZmVyQ2FzZTsKKwor
CWVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1CdWZmZXJCdWZmZXJDYXNlLnByb3Rv
dHlwZS50ZXN0VW5pZm9ybUJ1ZmZlcnMgPSBmdW5jdGlvbigpIHsKKwkJLyoqIEB0eXBlIHtBcnJh
eTxzdHJpbmc+fSAqLyB2YXIgdW5pZm9ybU5hbWVzID0gWydpbnB1dDEnLCAnaW5wdXQyJ107CisK
KwkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdW5pZm9ybUluZGljZXMgPSBnbC5n
ZXRVbmlmb3JtSW5kaWNlcyh0aGlzLm1fcHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKworCQkvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGFsaWdubWVudCA9IHRoaXMuZ2V0QWxpZ25tZW50KCk7CisJ
CWlmIChhbGlnbm1lbnQgPT09IC0xKSAvLyBjYW5ub3QgY29udGludWUgd2l0aG91dCB0aGlzCisJ
CQlyZXR1cm47CisKKwkJYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FsaWdubWVudCBpcyAnICsgYWxp
Z25tZW50KTsKKworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJhbmdlQnVmZmVyT2Zmc2V0
ID0gYWxpZ25tZW50OworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJhbmdlQnVmZmVyU2l6
ZSA9IGFsaWdubWVudCAqIDI7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmFuZ2VCdWZm
ZXJUb3RhbFNpemUgPSByYW5nZUJ1ZmZlck9mZnNldCArIHJhbmdlQnVmZmVyU2l6ZSArIDg7IC8v
ICsgOCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nLCBqdXN0IHRvIG1ha2UgaXQgIT0gd2l0aCB0aGUg
c2l6ZSBvZiB0aGUgcmFuZ2UKKworCQkvKiogQHR5cGUge0FycmF5PFdlYkdMQnVmZmVyPn0gKi8g
dmFyIGJ1ZmZlcnMgPSBbXTsKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspCisJ
CQlidWZmZXJzW25keF0gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworCQlnbC5iaW5kQnVmZmVyKGds
LlVOSUZPUk1fQlVGRkVSLCBidWZmZXJzWzBdKTsKKwkJZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JN
X0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgzMiksIGdsLkRZTkFNSUNfRFJBVyk7CisJCWdsLmJp
bmRCdWZmZXJCYXNlKGdsLlVOSUZPUk1fQlVGRkVSLCB1bmlmb3JtSW5kaWNlc1swXSwgYnVmZmVy
c1swXSk7CisKKwkJZ2wuYmluZEJ1ZmZlcihnbC5VTklGT1JNX0JVRkZFUiwgYnVmZmVyc1sxXSk7
CisJCWdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoMzIp
LCBnbC5EWU5BTUlDX0RSQVcpOworCQlnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVU5JRk9STV9CVUZG
RVIsIHVuaWZvcm1JbmRpY2VzWzFdLCBidWZmZXJzWzFdLCByYW5nZUJ1ZmZlck9mZnNldCwgcmFu
Z2VCdWZmZXJTaXplKTsKKworCQkvLyB0ZXN0IFVOSUZPUk1fQlVGRkVSX1NUQVJUIGFuZCBVTklG
T1JNX0JVRkZFUl9TSVpFCisKKwkJLyoqIEB0eXBlIHtBcnJheTx7aW5kZXg6IG51bWJlciwgcG5h
bWU6IG51bWJlciwgdmFsdWU6IG51bWJlcn0+fSAqLyB2YXIgcmVxdWlyZW1lbnRzID0gWworCQkJ
e2luZGV4OiB1bmlmb3JtSW5kaWNlc1swXSwgcG5hbWU6IGdsLlVOSUZPUk1fQlVGRkVSX1NUQVJU
LCB2YWx1ZTogMH0sCisJCQl7aW5kZXg6IHVuaWZvcm1JbmRpY2VzWzBdLCBwbmFtZTogZ2wuVU5J
Rk9STV9CVUZGRVJfU0laRSwgdmFsdWU6IDB9LAorCQkJe2luZGV4OiB1bmlmb3JtSW5kaWNlc1sx
XSwgcG5hbWU6IGdsLlVOSUZPUk1fQlVGRkVSX1NUQVJULCB2YWx1ZTogcmFuZ2VCdWZmZXJPZmZz
ZXR9LAorCQkJe2luZGV4OiB1bmlmb3JtSW5kaWNlc1sxXSwgcG5hbWU6IGdsLlVOSUZPUk1fQlVG
RkVSX1NJWkUsIHZhbHVlOiByYW5nZUJ1ZmZlclNpemV9CisJCV07CisKKwkJZm9yICh2YXIgbmR4
ID0gMDsgbmR4IDwgcmVxdWlyZW1lbnRzLmxlbmd0aDsgbmR4KyspIHsKKwkJCXZhciBzdGF0ZSA9
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihyZXF1aXJlbWVu
dHNbbmR4XS5wbmFtZSwgcmVxdWlyZW1lbnRzW25keF0uaW5kZXgpKTsKKworCQkJdGhpcy5jaGVj
ayhzdGF0ZSA9PT0gcmVxdWlyZW1lbnRzW25keF0udmFsdWUsICdnb3QgJyArIHN0YXRlICsgJzsg
ZXhwZWN0ZWQgJyArIHJlcXVpcmVtZW50c1tuZHhdLnZhbHVlKTsKKwkJfQorCisJCWZvciAodmFy
IG5keCA9IDA7IG5keCA8IGJ1ZmZlcnMubGVuZ3RoOyBuZHgrKykKKwkJCWdsLmRlbGV0ZUJ1ZmZl
cihidWZmZXJzW25keF0pOworCisJfTsKKworCS8qKgorCSAqIEByZXR1cm4ge251bWJlcn0KKwkg
Ki8KKwllczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQnVmZmVyQ2FzZS5w
cm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7CisJCXZhciBzdGF0ZSA9IC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX09GRlNF
VF9BTElHTk1FTlQpKTsKKworCQlpZiAoc3RhdGUgPD0gMjU2KQorCQkJcmV0dXJuIHN0YXRlOwor
CisJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FM
SUdOTUVOVCBoYXMgYSBtYXhpbXVtIHZhbHVlIG9mIDI1Ni4nKTsKKwkJdGVzdEZhaWxlZE9wdGlv
bnMoJ2ludmFsaWQgVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCB2YWx1ZScsIGZhbHNl
KTsKKworCQlyZXR1cm4gLTE7CisJfTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisg
ICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgKi8KKyAgICBlczNmSW5k
ZXhlZFN0YXRlUXVlcnlUZXN0cy5JbmRleGVkU3RhdGVRdWVyeVRlc3RzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2luZGV4ZWQnLCAnSW5k
ZXhlZCBJbnRlZ2VyIFZhbHVlcycpOworICAgIH07CisKKyAgICBlczNmSW5kZXhlZFN0YXRlUXVl
cnlUZXN0cy5JbmRleGVkU3RhdGVRdWVyeVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
dGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmSW5kZXhlZFN0YXRlUXVl
cnlUZXN0cy5JbmRleGVkU3RhdGVRdWVyeVRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVz
M2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHM7CisKKyAgICBl
czNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5JbmRleGVkU3RhdGVRdWVyeVRlc3RzLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24oKSB7CisJCS8vIHRyYW5zZm9ybSBmZWVkYmFjaworCQl0aGlzLmFk
ZENoaWxkKG5ldyBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlckJpbmRpbmdDYXNlKCd0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2JpbmRpbmcnLCAnVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HJykpOworCQl0aGlzLmFkZENoaWxkKG5ldyBl
czNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJ1ZmZlckNh
c2UoJ3RyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc3RhcnRfc2l6ZScsICdUUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSX1NUQVJUIGFuZCBUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUnKSk7
CisKKwkJLy8gdW5pZm9ybSBidWZmZXJzCisJCXRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZJbmRleGVk
U3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1CdWZmZXJCaW5kaW5nQ2FzZSgndW5pZm9ybV9idWZmZXJf
YmluZGluZycsICdVTklGT1JNX0JVRkZFUl9CSU5ESU5HJykpOworCQl0aGlzLmFkZENoaWxkKG5l
dyBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtQnVmZmVyQnVmZmVyQ2FzZSgndW5p
Zm9ybV9idWZmZXJfc3RhcnRfc2l6ZScsICdVTklGT1JNX0JVRkZFUl9TVEFSVCBhbmQgVU5JRk9S
TV9CVUZGRVJfU0laRScpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBSdW4gdGVzdAorICAg
ICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisgICAgKi8KKyAgICBl
czNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAg
CWdsID0gY29udGV4dDsKKyAgICAJLy9TZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAJ
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIAlzdGF0ZS5zZXRSb290KG5ldyBl
czNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5JbmRleGVkU3RhdGVRdWVyeVRlc3RzKCkpOworCisg
ICAgCS8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisg
ICAgCXNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAg
CWRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgIAl0
cnkgeworICAgIAkJLy9SdW4gdGVzdCBjYXNlcworICAgIAkJdGN1VGVzdENhc2UucnVuVGVzdENh
c2VzKCk7CisgICAgCX0KKyAgICAJY2F0Y2ggKGVycikgeworICAgIAkJdGVzdEZhaWxlZE9wdGlv
bnMoJ0ZhaWxlZCB0byBlczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5ydW4gdGVzdHMnLCBmYWxz
ZSk7CisgICAgCQl0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgCX0KKyAgICB9
OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFkYzdlODU3Y2E5ZjI3NWJhNDI5Y2U1NDkwZjgwMDM1M2MxMWU0MjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLmpzCkBAIC0wLDAg
KzEsNzExIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFBy
b2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92
aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cycpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisKK3ZhciBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMgPSBmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0czsKK3ZhciBnbHVTaGFkZXJVdGls
ID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIGdsdVNoYWRlclByb2dyYW0g
PSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW07Cit2YXIgdGN1VGVzdENhc2UgPSBm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwordmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVN1cmZhY2U7Cit2YXIgZGVTdHJpbmcgPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFz
ZS5kZVN0cmluZzsKK3ZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFu
ZG9tOwordmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21w
YXJlOwordmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRp
bDsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisKKyAgICAv
KiogQHR5cGUgez9XZWJHTDJSZW5kZXJpbmdDb250ZXh0fSAqLyB2YXIgZ2w7CisKKyAgICAvKiog
QGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5NQVhf
UkVOREVSX1dJRFRIID0gMTI4OworICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gZXMz
Zkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLk1BWF9SRU5ERVJfSEVJR0hUID0gMTI4OworCisgICAg
LyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMu
UVVBRF9HUklEX1NJWkUgPSAxMjc7CisKKyAgICAvLyBBdHRyaWJ1dGUgZGl2aXNvcnMgZm9yIHRo
ZSBhdHRyaWJ1dGVzIGRlZmluaW5nIHRoZSBjb2xvcidzIFJHQiBjb21wb25lbnRzLgorICAgIC8q
KiBAY29uc3QgQHR5cGUge251bWJlcn0gKi9lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuQVRU
UklCX0RJVklTT1JfUiA9IDM7CisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqL2VzM2ZJ
bnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJfRElWSVNPUl9HID0gMjsKKyAgICAvKiogQGNv
bnN0IEB0eXBlIHtudW1iZXJ9ICovZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkFUVFJJQl9E
SVZJU09SX0IgPSAxOworCisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqL2VzM2ZJbnN0
YW5jZWRSZW5kZXJpbmdUZXN0cy5PRkZTRVRfQ09NUE9ORU5UUyA9IDM7IC8vIFxub3RlIEFmZmVj
dHMgd2hldGhlciBhIGZsb2F0IG9yIGEgdmVjTiBpcyB1c2VkIGluIHNoYWRlciwgYnV0IG9ubHkg
Zmlyc3QgY29tcG9uZW50IGlzIG5vbi16ZXJvLgorCisgICAgLy8gU2NhbGUgYW5kIGJpYXMgdmFs
dWVzIHdoZW4gY29udmVydGluZyBmbG9hdCB0byBpbnRlZ2VyLCB3aGVuIGF0dHJpYnV0ZSBpcyBv
ZiBpbnRlZ2VyIHR5cGUuCisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqL2VzM2ZJbnN0
YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9JTlRfU0NBTEUgPSAxMDAuMDsKKyAgICAvKiogQGNv
bnN0IEB0eXBlIHtudW1iZXJ9ICovZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lO
VF9CSUFTID0gLTUwLjA7CisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqL2VzM2ZJbnN0
YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9VSU5UX1NDQUxFID0gMTAwLjA7CisgICAgLyoqIEBj
b25zdCBAdHlwZSB7bnVtYmVyfSAqL2VzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9V
SU5UX0JJQVMgPSAwLjA7CisKKyAgICB2YXIgREVfQVNTRVJUID0gZnVuY3Rpb24oZXhwcmVzc2lv
bikgeworICAgICAgICBpZiAoIWV4cHJlc3Npb24pIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZh
aWxlZCcpOworICAgIH07CisKKyAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuVENVX0ZB
SUwgPSBmdW5jdGlvbihtZXNzYWdlKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdl
KTsKKyAgICB9OworCisgICAgLy8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNl
ZFJlbmRlcmluZ0Nhc2UKKworICAgIC8qKgorICAgICAqIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdU
ZXN0cy5EcmF3RnVuY3Rpb24KKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGVz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5EcmF3RnVuY3Rpb24gPSB7CisgICAgICAgICAgICBG
VU5DVElPTl9EUkFXX0FSUkFZU19JTlNUQU5DRUQ6IDAsCisgICAgICAgICAgICBGVU5DVElPTl9E
UkFXX0VMRU1FTlRTX0lOU1RBTkNFRDogMQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNm
SW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUKKyAgICAgKiBAZW51bSB7bnVt
YmVyfQorICAgICAqLworICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5n
VHlwZSA9IHsKKyAgICAgICAgICAgIFRZUEVfSU5TVEFOQ0VfSUQ6IDAsCisgICAgICAgICAgICBU
WVBFX0FUVFJJQl9ESVZJU09SOiAxLAorICAgICAgICAgICAgVFlQRV9NSVhFRDogMgorICAgIH07
CisKKyAgICAvKioKKyAgICAqIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jZWRS
ZW5kZXJpbmdDYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIFRlc3RDYXNlIGNsYXNzCisgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24K
KyAgICAqIEBwYXJhbSB7ZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkRyYXdGdW5jdGlvbn0g
ZHJhd0Z1bmN0aW9uCisgICAgKiBAcGFyYW0ge2VzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5J
bnN0YW5jaW5nVHlwZX0gaW5zdGFuY2luZ1R5cGUKKyAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRp
bC5EYXRhVHlwZX0gcmdiQXR0clR5cGUKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1JbnN0YW5j
ZXMKKyAgICAqLworICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jZWRSZW5k
ZXJpbmdDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGRyYXdGdW5jdGlvbiwgaW5z
dGFuY2luZ1R5cGUsIHJnYkF0dHJUeXBlLCBudW1JbnN0YW5jZXMpIHsKKyAgICAgICAgdGN1VGVz
dENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkRyYXdGdW5jdGlvbn0gKi8gdGhp
cy5tX2Z1bmN0aW9uID0gZHJhd0Z1bmN0aW9uOworICAgICAgICAvKiogQHR5cGUge2VzM2ZJbnN0
YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZX0gKi8gdGhpcy5tX2luc3RhbmNpbmdU
eXBlID0gaW5zdGFuY2luZ1R5cGU7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZX0gKi8gdGhpcy5tX3JnYkF0dHJUeXBlID0gcmdiQXR0clR5cGU7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtSW5zdGFuY2VzID0gbnVtSW5zdGFuY2VzOwor
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdGhp
cy5tX3Byb2dyYW0gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHRoaXMubV9ncmlkVmVydGV4UG9zaXRpb25zID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdGhpcy5tX2dyaWRJbmRpY2VzID0gW107CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2luc3RhbmNlT2Zmc2V0cyA9IFtdOworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9pbnN0YW5jZUNvbG9yUiA9IFtd
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9pbnN0YW5jZUNv
bG9yRyA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9p
bnN0YW5jZUNvbG9yQiA9IFtdOworICAgIH07CisKKyAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5n
VGVzdHMuSW5zdGFuY2VkUmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZkluc3RhbmNlZFJlbmRlcmlu
Z1Rlc3RzLkluc3RhbmNlZFJlbmRlcmluZ0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMz
Zkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNlZFJlbmRlcmluZ0Nhc2U7CisKKyAgICAv
KioKKyAgICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IGRvZXMgYmlhc2luZyBhbmQgc2NhbGluZyB3
aGVuIGNvbnZlcnRpbmcgZmxvYXQgdG8gaW50ZWdlci4KKyAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gdmVjCisgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsCisgICAgKi8KKyAgICBlczNmSW5z
dGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2VkUmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUucHVz
aFZhckNvbXBBdHRyaWIgPSBmdW5jdGlvbih2ZWMsIHZhbCkgeworICAgICAgICB2YXIgaXNGbG9h
dENhc2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHRoaXMubV9yZ2JBdHRy
VHlwZSk7CisgICAgICAgIHZhciBpc0ludENhc2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJ
bnRPcklWZWModGhpcy5tX3JnYkF0dHJUeXBlKTsKKyAgICAgICAgdmFyIGlzVWludENhc2UgPSBn
bHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVVaW50T3JVVmVjKHRoaXMubV9yZ2JBdHRyVHlwZSk7Cisg
ICAgICAgIHZhciBpc01hdENhc2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodGhp
cy5tX3JnYkF0dHJUeXBlKTsKKyAgICAgICAgaWYgKGlzRmxvYXRDYXNlIHx8IGlzTWF0Q2FzZSkK
KyAgICAgICAgICAgIHZlYy5wdXNoKHZhbCk7CisgICAgICAgIGVsc2UgaWYgKGlzSW50Q2FzZSkK
KyAgICAgICAgICAgIHZlYy5wdXNoKHZhbCAqIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5G
TE9BVF9JTlRfU0NBTEUgKyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxPQVRfSU5UX0JJ
QVMpOworICAgICAgICBlbHNlIGlmIChpc1VpbnRDYXNlKQorICAgICAgICAgICAgdmVjLnB1c2go
dmFsICogZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX1VJTlRfU0NBTEUgKyBlczNm
SW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxPQVRfVUlOVF9CSUFTKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSB0eXBlLicpOwor
ICAgIH07CisKKyAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2VkUmVuZGVy
aW5nQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBDbGVhciBl
cnJvcnMgZnJvbSBwcmV2aW91cyB0ZXN0cworICAgICAgICBnbC5nZXRFcnJvcigpOworCisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzRmxvYXRDYXNlID0gZ2x1U2hhZGVyVXRp
bC5pc0RhdGFUeXBlRmxvYXRPclZlYyh0aGlzLm1fcmdiQXR0clR5cGUpOworICAgICAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0ludENhc2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5
cGVJbnRPcklWZWModGhpcy5tX3JnYkF0dHJUeXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB2YXIgaXNVaW50Q2FzZSA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVVpbnRPclVW
ZWModGhpcy5tX3JnYkF0dHJUeXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNNYXRDYXNlID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHRoaXMubV9yZ2JB
dHRyVHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdHlwZVNpemUgPSBn
bHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0aGlzLm1fcmdiQXR0clR5cGUpOwor
ICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1NjYWxhckNhc2UgPSB0eXBlU2l6
ZSA9PSAxOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHN3aXp6bGVGaXJzdCA9
IGlzU2NhbGFyQ2FzZSA/ICcnIDogJy54JzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHZhciB0eXBlTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHRoaXMubV9yZ2JB
dHRyVHlwZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmbG9hdEludFNj
YWxlU3RyID0gJygnICsgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lOVF9TQ0FM
RS50b0ZpeGVkKDMpICsgJyknOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZs
b2F0SW50Qmlhc1N0ciA9ICcoJyArIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9J
TlRfQklBUy50b0ZpeGVkKDMpICsgJyknOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGZsb2F0VWludFNjYWxlU3RyID0gJygnICsgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3Rz
LkZMT0FUX1VJTlRfU0NBTEUudG9GaXhlZCgzKSArICcpJzsKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciBmbG9hdFVpbnRCaWFzU3RyID0gJygnICsgZXMzZkluc3RhbmNlZFJlbmRl
cmluZ1Rlc3RzLkZMT0FUX1VJTlRfQklBUy50b0ZpeGVkKDMpICsgJyknOworCisgICAgICAgIERF
X0FTU0VSVChpc0Zsb2F0Q2FzZSB8fCBpc0ludENhc2UgfHwgaXNVaW50Q2FzZSB8fCBpc01hdENh
c2UpOworCisgICAgICAgIC8vIEdlbmVyYXRlIHNoYWRlci4KKyAgICAgICAgLy8gXG5vdGUgRm9y
IGNhc2UgVFlQRV9NSVhFRCwgdmVydGV4IHBvc2l0aW9uIG9mZnNldCBhbmQgY29sb3IgcmVkIGNv
bXBvbmVudCBnZXQgdGhlaXIgdmFsdWVzIGZyb20gaW5zdGFuY2UgaWQsIHdoaWxlIGdyZWVuIGFu
ZCBibHVlIGdldCB0aGVpciB2YWx1ZXMgZnJvbSBpbnN0YW5jZWQgYXR0cmlidXRlcy4KKworICAg
ICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG51bUluc3RhbmNlc1N0ciA9IHRoaXMubV9u
dW1JbnN0YW5jZXMudG9TdHJpbmcoKSArICcuMCc7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBpbnN0YW5jZUF0dHJpYnMgPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBwb3NFeHByZXNzaW9uID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgY29sb3JSRXhwcmVzc2lvbiA9ICcnOworICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIGNvbG9yR0V4cHJlc3Npb24gPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBjb2xvckJFeHByZXNzaW9uID0gJyc7CisKKyAgICAgICAgaWYgKHRoaXMubV9p
bnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5
cGUuVFlQRV9JTlNUQU5DRV9JRCB8fCB0aGlzLm1faW5zdGFuY2luZ1R5cGUgPT0gZXMzZkluc3Rh
bmNlZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNpbmdUeXBlLlRZUEVfTUlYRUQpIHsKKyAgICAgICAg
ICAgIHBvc0V4cHJlc3Npb24gPSAnYV9wb3NpdGlvbiArIHZlYzQoZmxvYXQoZ2xfSW5zdGFuY2VJ
RCkgKiAyLjAgLyAnICsgbnVtSW5zdGFuY2VzU3RyICsgJywgMC4wLCAwLjAsIDAuMCknOworICAg
ICAgICAgICAgY29sb3JSRXhwcmVzc2lvbiA9ICdmbG9hdChnbF9JbnN0YW5jZUlEKS8nICsgbnVt
SW5zdGFuY2VzU3RyOworCisgICAgICAgICAgICBpZiAodGhpcy5tX2luc3RhbmNpbmdUeXBlID09
IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5UWVBFX0lOU1RBTkNF
X0lEKSB7CisgICAgICAgICAgICAgICAgY29sb3JHRXhwcmVzc2lvbiA9ICdmbG9hdChnbF9JbnN0
YW5jZUlEKSoyLjAvJyArIG51bUluc3RhbmNlc1N0cjsKKyAgICAgICAgICAgICAgICBjb2xvckJF
eHByZXNzaW9uID0gJzEuMCAtIGZsb2F0KGdsX0luc3RhbmNlSUQpLycgKyBudW1JbnN0YW5jZXNT
dHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5tX2luc3Rh
bmNpbmdUeXBlID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5U
WVBFX0FUVFJJQl9ESVZJU09SIHx8IHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFu
Y2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9NSVhFRCkgeworICAgICAgICAg
ICAgaWYgKHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9BVFRSSUJfRElWSVNPUikgeworICAgICAgICAgICAgICAg
IHBvc0V4cHJlc3Npb24gPSAnYV9wb3NpdGlvbiArIHZlYzQoYV9pbnN0YW5jZU9mZnNldCc7CisK
KyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLk9G
RlNFVF9DT01QT05FTlRTID49IDEgJiYgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLk9GRlNF
VF9DT01QT05FTlRTIDw9IDQpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0IC0gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLk9GRlNFVF9DT01QT05FTlRTOyBpKysp
CisgICAgICAgICAgICAgICAgICAgIHBvc0V4cHJlc3Npb24gKz0gJywgMC4wJzsKKyAgICAgICAg
ICAgICAgICBwb3NFeHByZXNzaW9uICs9ICcpJzsKKworICAgICAgICAgICAgICAgIGlmIChpc0Zs
b2F0Q2FzZSkKKyAgICAgICAgICAgICAgICAgICAgY29sb3JSRXhwcmVzc2lvbiA9ICdhX2luc3Rh
bmNlUicgKyBzd2l6emxlRmlyc3Q7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNJbnRDYXNl
KQorICAgICAgICAgICAgICAgICAgICBjb2xvclJFeHByZXNzaW9uID0gJyhmbG9hdChhX2luc3Rh
bmNlUicgKyBzd2l6emxlRmlyc3QgKyAnKSAtICcgKyBmbG9hdEludEJpYXNTdHIgKyAnKSAvICcg
KyBmbG9hdEludFNjYWxlU3RyOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzVWludENhc2Up
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yUkV4cHJlc3Npb24gPSAnKGZsb2F0KGFfaW5zdGFu
Y2VSJyArIHN3aXp6bGVGaXJzdCArICcpIC0gJyArIGZsb2F0VWludEJpYXNTdHIgKyAnKSAvICcg
KyBmbG9hdFVpbnRTY2FsZVN0cjsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpc01hdENhc2Up
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yUkV4cHJlc3Npb24gPSAnYV9pbnN0YW5jZVJbMF1b
MF0nOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJU
KGZhbHNlKTsKKworICAgICAgICAgICAgICAgIGluc3RhbmNlQXR0cmlicyArPSAnaW4gaGlnaHAg
JyArIChlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuT0ZGU0VUX0NPTVBPTkVOVFMgPT0gMSA/
ICdmbG9hdCcgOiAndmVjJyArIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5PRkZTRVRfQ09N
UE9ORU5UUy50b1N0cmluZygpKSArICcgYV9pbnN0YW5jZU9mZnNldDtcbic7CisgICAgICAgICAg
ICAgICAgaW5zdGFuY2VBdHRyaWJzICs9ICdpbiBtZWRpdW1wICcgKyB0eXBlTmFtZSArICcgYV9p
bnN0YW5jZVI7XG4nOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGbG9hdENh
c2UpIHsKKyAgICAgICAgICAgICAgICBjb2xvckdFeHByZXNzaW9uID0gJ2FfaW5zdGFuY2VHJyAr
IHN3aXp6bGVGaXJzdDsKKyAgICAgICAgICAgICAgICBjb2xvckJFeHByZXNzaW9uID0gJ2FfaW5z
dGFuY2VCJyArIHN3aXp6bGVGaXJzdDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnRDYXNl
KSB7CisgICAgICAgICAgICAgICAgY29sb3JHRXhwcmVzc2lvbiA9ICcoZmxvYXQoYV9pbnN0YW5j
ZUcnICsgc3dpenpsZUZpcnN0ICsgJykgLSAnICsgZmxvYXRJbnRCaWFzU3RyICsgJykgLyAnICsg
ZmxvYXRJbnRTY2FsZVN0cjsKKyAgICAgICAgICAgICAgICBjb2xvckJFeHByZXNzaW9uID0gJyhm
bG9hdChhX2luc3RhbmNlQicgKyBzd2l6emxlRmlyc3QgKyAnKSAtICcgKyBmbG9hdEludEJpYXNT
dHIgKyAnKSAvICcgKyBmbG9hdEludFNjYWxlU3RyOworICAgICAgICAgICAgfSBlbHNlIGlmIChp
c1VpbnRDYXNlKSB7CisgICAgICAgICAgICAgICAgY29sb3JHRXhwcmVzc2lvbiA9ICcoZmxvYXQo
YV9pbnN0YW5jZUcnICsgc3dpenpsZUZpcnN0ICsgJykgLSAnICsgZmxvYXRVaW50Qmlhc1N0ciAr
ICcpIC8gJyArIGZsb2F0VWludFNjYWxlU3RyOworICAgICAgICAgICAgICAgIGNvbG9yQkV4cHJl
c3Npb24gPSAnKGZsb2F0KGFfaW5zdGFuY2VCJyArIHN3aXp6bGVGaXJzdCArICcpIC0gJyArIGZs
b2F0VWludEJpYXNTdHIgKyAnKSAvICcgKyBmbG9hdFVpbnRTY2FsZVN0cjsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXNNYXRDYXNlKSB7CisgICAgICAgICAgICAgICAgY29sb3JHRXhwcmVzc2lv
biA9ICdhX2luc3RhbmNlR1swXVswXSc7CisgICAgICAgICAgICAgICAgY29sb3JCRXhwcmVzc2lv
biA9ICdhX2luc3RhbmNlQlswXVswXSc7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBERV9BU1NFUlQoZmFsc2UpOworCisgICAgICAgICAgICBpbnN0YW5jZUF0dHJpYnMgKz0g
J2luIG1lZGl1bXAgJyArIHR5cGVOYW1lICsgJyBhX2luc3RhbmNlRztcbic7CisgICAgICAgICAg
ICBpbnN0YW5jZUF0dHJpYnMgKz0gJ2luIG1lZGl1bXAgJyArIHR5cGVOYW1lICsgJyBhX2luc3Rh
bmNlQjtcbic7CisgICAgICAgIH0KKworICAgICAgICBERV9BU1NFUlQoIShwb3NFeHByZXNzaW9u
Lmxlbmd0aCA9PSAwKSk7CisgICAgICAgIERFX0FTU0VSVCghKGNvbG9yUkV4cHJlc3Npb24ubGVu
Z3RoID09IDApKTsKKyAgICAgICAgREVfQVNTRVJUKCEoY29sb3JHRXhwcmVzc2lvbi5sZW5ndGgg
PT0gMCkpOworICAgICAgICBERV9BU1NFUlQoIShjb2xvckJFeHByZXNzaW9uLmxlbmd0aCA9PSAw
KSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0U2hhZGVyU291cmNl
U3RyID0KKyAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2lu
IGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgaW5zdGFuY2VBdHRyaWJz
ICsKKyAgICAgICAgICAgICdvdXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nICsKKyAgICAgICAg
ICAgICdcbicgKworICAgICAgICAgICAgJ3ZvaWQgbWFpbigpXG4nICsKKyAgICAgICAgICAgICcg
e1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gJyArIHBvc0V4cHJlc3Npb24gKyAn
O1xuJyArCisgICAgICAgICAgICAnIHZfY29sb3IuciA9ICcgKyBjb2xvclJFeHByZXNzaW9uICsg
JztcbicgKworICAgICAgICAgICAgJyB2X2NvbG9yLmcgPSAnICsgY29sb3JHRXhwcmVzc2lvbiAr
ICc7XG4nICsKKyAgICAgICAgICAgICcgdl9jb2xvci5iID0gJyArIGNvbG9yQkV4cHJlc3Npb24g
KyAnO1xuJyArCisgICAgICAgICAgICAnIHZfY29sb3IuYSA9IDEuMDtcbicgKworICAgICAgICAg
ICAgJ31cbic7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnU2hhZGVy
U291cmNlID0KKyAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAg
J2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworICAg
ICAgICAgICAgJ2luIG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAnXG4n
ICsKKyAgICAgICAgICAgICd2b2lkIG1haW4oKVxuJyArCisgICAgICAgICAgICAnIHtcbicgKwor
ICAgICAgICAgICAgJyBvX2NvbG9yID0gdl9jb2xvcjtcbicgKworICAgICAgICAgICAgJ31cbic7
CisKKyAgICAgICAgLy8gQ3JlYXRlIHNoYWRlciBwcm9ncmFtIGFuZCBsb2cgaXQuCisKKyAgICAg
ICAgREVfQVNTRVJUKCF0aGlzLm1fcHJvZ3JhbSk7CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0g
bmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5t
YWtlVnR4RnJhZ1NvdXJjZXModmVydFNoYWRlclNvdXJjZVN0ciwgZnJhZ1NoYWRlclNvdXJjZSkp
OworCisgICAgICAgIC8vdGN1OjpUZXN0TG9nJiBsb2cgPSB0aGlzLm1fdGVzdEN0eC5nZXRMb2co
KTsKKyAgICAgICAgLy9sb2cgPDwgKm1fcHJvZ3JhbTsKKyAgICAgICAgLy8gVE9ETzogYnVmZmVy
ZWRMb2dUb0NvbnNvbGU/CisgICAgICAgIC8vYnVmZmVyZWRMb2dUb0NvbnNvbGUodGhpcy5tX3By
b2dyYW0pOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGhpcy5tX3Byb2dyYW0uaXNPaygp
LCAnRmFpbGVkIHRvIGNvbXBpbGUgc2hhZGVyJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8v
IFZlcnRleCBzaGFkZXIgYXR0cmlidXRlcy4KKworICAgICAgICBpZiAodGhpcy5tX2Z1bmN0aW9u
ID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5EcmF3RnVuY3Rpb24uRlVOQ1RJT05fRFJB
V19FTEVNRU5UU19JTlNUQU5DRUQpIHsKKyAgICAgICAgICAgIC8vIFZlcnRleCBwb3NpdGlvbnMu
IFBvc2l0aW9ucyBmb3JtIGEgdmVydGljYWwgYmFyIG9mIHdpZHRoIDxzY3JlZW4gd2lkdGg+Lzxu
dW1iZXIgb2YgaW5zdGFuY2VzPi4KKworICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBl
czNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuUVVBRF9HUklEX1NJWkUgKyAxOyB5KyspCisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuUVVBRF9HUklEX1NJWkUgKyAxOyB4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBmeCA9IC0xLjAgKyB4IC8gZXMzZkluc3RhbmNlZFJlbmRlcmlu
Z1Rlc3RzLlFVQURfR1JJRF9TSVpFICogMi4wIC8gdGhpcy5tX251bUluc3RhbmNlczsKKyAgICAg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmeSA9IC0xLjAgKyB5IC8g
ZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLlFVQURfR1JJRF9TSVpFICogMi4wOworCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMubV9ncmlkVmVydGV4UG9zaXRpb25zLnB1c2goZngpOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1fZ3JpZFZlcnRleFBvc2l0aW9ucy5wdXNoKGZ5KTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEluZGljZXMuCisKKyAgICAgICAgICAg
IGZvciAodmFyIHkgPSAwOyB5IDwgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLlFVQURfR1JJ
RF9TSVpFOyB5KyspCisgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBlczNmSW5z
dGFuY2VkUmVuZGVyaW5nVGVzdHMuUVVBRF9HUklEX1NJWkU7IHgrKykgeworICAgICAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG5keDAwID0geSAqIChlczNmSW5zdGFu
Y2VkUmVuZGVyaW5nVGVzdHMuUVVBRF9HUklEX1NJWkUgKyAxKSArIHg7CisgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbmR4MTAgPSB5ICogKGVzM2ZJbnN0YW5j
ZWRSZW5kZXJpbmdUZXN0cy5RVUFEX0dSSURfU0laRSArIDEpICsgeCArIDE7CisgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbmR4MDEgPSAoeSArIDEpICogKGVz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5RVUFEX0dSSURfU0laRSArIDEpICsgeDsKKyAgICAg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBuZHgxMSA9ICh5ICsgMSkg
KiAoZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLlFVQURfR1JJRF9TSVpFICsgMSkgKyB4ICsg
MTsKKworICAgICAgICAgICAgICAgICAgICAvLyBMb3dlci1sZWZ0IHRyaWFuZ2xlIG9mIGEgcXVh
ZC4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2dyaWRJbmRpY2VzLnB1c2gobmR4MDApOwor
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3JpZEluZGljZXMucHVzaChuZHgxMCk7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMubV9ncmlkSW5kaWNlcy5wdXNoKG5keDAxKTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBVcHBlci1yaWdodCB0cmlhbmdsZSBvZiBhIHF1YWQuCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMubV9ncmlkSW5kaWNlcy5wdXNoKG5keDExKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5tX2dyaWRJbmRpY2VzLnB1c2gobmR4MDEpOworICAgICAgICAgICAgICAg
ICAgICB0aGlzLm1fZ3JpZEluZGljZXMucHVzaChuZHgxMCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVfQVNTRVJUKHRoaXMubV9mdW5jdGlvbiA9
PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRHJhd0Z1bmN0aW9uLkZVTkNUSU9OX0RSQVdf
QVJSQVlTX0lOU1RBTkNFRCk7CisKKyAgICAgICAgICAgIC8vIFZlcnRleCBwb3NpdGlvbnMuIFBv
c2l0aW9ucyBmb3JtIGEgdmVydGljYWwgYmFyIG9mIHdpZHRoIDxzY3JlZW4gd2lkdGg+LzxudW1i
ZXIgb2YgaW5zdGFuY2VzPi4KKworICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBlczNm
SW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuUVVBRF9HUklEX1NJWkU7IHkrKykKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5RVUFE
X0dSSURfU0laRTsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZngwID0gLTEuMCArICh4ICsgMCkgLyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuUVVBRF9HUklEX1NJWkUgKiAyLjAgLyB0aGlzLm1fbnVtSW5zdGFuY2VzOworICAgICAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZ4MSA9IC0xLjAgKyAoeCArIDEp
IC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLlFVQURfR1JJRF9TSVpFICogMi4wIC8gdGhp
cy5tX251bUluc3RhbmNlczsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBmeTAgPSAtMS4wICsgKHkgKyAwKSAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0
cy5RVUFEX0dSSURfU0laRSAqIDIuMDsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBmeTEgPSAtMS4wICsgKHkgKyAxKSAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJp
bmdUZXN0cy5RVUFEX0dSSURfU0laRSAqIDIuMDsKKworICAgICAgICAgICAgICAgICAgICAvLyBW
ZXJ0aWNlcyBvZiBhIHF1YWQncyBsb3dlci1sZWZ0IHRyaWFuZ2xlOiAoZngwLCBmeTApLCAoZngx
LCBmeTApIGFuZCAoZngwLCBmeTEpCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9ncmlkVmVy
dGV4UG9zaXRpb25zLnB1c2goZngwKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2dyaWRW
ZXJ0ZXhQb3NpdGlvbnMucHVzaChmeTApOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3Jp
ZFZlcnRleFBvc2l0aW9ucy5wdXNoKGZ4MSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9n
cmlkVmVydGV4UG9zaXRpb25zLnB1c2goZnkwKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X2dyaWRWZXJ0ZXhQb3NpdGlvbnMucHVzaChmeDApOworICAgICAgICAgICAgICAgICAgICB0aGlz
Lm1fZ3JpZFZlcnRleFBvc2l0aW9ucy5wdXNoKGZ5MSk7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gVmVydGljZXMgb2YgYSBxdWFkJ3MgdXBwZXItcmlnaHQgdHJpYW5nbGU6IChmeDEsIGZ5MSks
IChmeDAsIGZ5MSkgYW5kIChmeDEsIGZ5MCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2dy
aWRWZXJ0ZXhQb3NpdGlvbnMucHVzaChmeDEpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
Z3JpZFZlcnRleFBvc2l0aW9ucy5wdXNoKGZ5MSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV9ncmlkVmVydGV4UG9zaXRpb25zLnB1c2goZngwKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5tX2dyaWRWZXJ0ZXhQb3NpdGlvbnMucHVzaChmeTEpOworICAgICAgICAgICAgICAgICAgICB0
aGlzLm1fZ3JpZFZlcnRleFBvc2l0aW9ucy5wdXNoKGZ4MSk7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMubV9ncmlkVmVydGV4UG9zaXRpb25zLnB1c2goZnkwKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBJbnN0YW5jZWQgYXR0cmlidXRlczogcG9zaXRpb24g
b2Zmc2V0IGFuZCBjb2xvciBSR0IgY29tcG9uZW50cy4KKworICAgICAgICBpZiAodGhpcy5tX2lu
c3RhbmNpbmdUeXBlID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlw
ZS5UWVBFX0FUVFJJQl9ESVZJU09SIHx8IHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5z
dGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9NSVhFRCkgeworICAgICAg
ICAgICAgaWYgKHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5n
VGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9BVFRSSUJfRElWSVNPUikgeworICAgICAgICAgICAg
ICAgIC8vIE9mZnNldHMgYXJlIHN1Y2ggdGhhdCB0aGUgdmVydGljYWwgYmFycyBhcmUgZHJhd24g
bmV4dCB0byBlYWNoIG90aGVyLgorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5tX251bUluc3RhbmNlczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9p
bnN0YW5jZU9mZnNldHMucHVzaChpICogMi4wIC8gdGhpcy5tX251bUluc3RhbmNlcyk7CisKKyAg
ICAgICAgICAgICAgICAgICAgREVfQVNTRVJUKGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5P
RkZTRVRfQ09NUE9ORU5UUyA+PSAxICYmIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5PRkZT
RVRfQ09NUE9ORU5UUyA8PSA0KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5PRkZTRVRfQ09NUE9ORU5UUyAtIDE7
IGorKykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9pbnN0YW5jZU9mZnNldHMucHVz
aCgwLjApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgckluc3RhbmNlcyA9IE1hdGguZmxvb3IodGhpcy5tX251bUluc3RhbmNl
cyAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJfRElWSVNPUl9SKSArICh0aGlz
Lm1fbnVtSW5zdGFuY2VzICUgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkFUVFJJQl9ESVZJ
U09SX1IgPT0gMCA/IDAgOiAxKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHJJbnN0YW5jZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hWYXJDb21w
QXR0cmliKHRoaXMubV9pbnN0YW5jZUNvbG9yUiwgaSAvIHJJbnN0YW5jZXMpOworCisgICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdHlwZVNpemUgLSAxOyBqKyspCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hWYXJDb21wQXR0cmliKHRoaXMubV9pbnN0YW5j
ZUNvbG9yUiwgMC4wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZ0luc3RhbmNlcyA9IE1hdGguZmxvb3Io
dGhpcy5tX251bUluc3RhbmNlcyAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJf
RElWSVNPUl9HKSArICh0aGlzLm1fbnVtSW5zdGFuY2VzICUgZXMzZkluc3RhbmNlZFJlbmRlcmlu
Z1Rlc3RzLkFUVFJJQl9ESVZJU09SX0cgPT0gMCA/IDAgOiAxKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZ0luc3RhbmNlczsgaSsrKSB7CisgICAgICAgICAgICAgICAgdGhpcy5w
dXNoVmFyQ29tcEF0dHJpYih0aGlzLm1faW5zdGFuY2VDb2xvckcsIGkgKiAyLjAgLyBnSW5zdGFu
Y2VzKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdHlwZVNpemUgLSAx
OyBqKyspCisgICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaFZhckNvbXBBdHRyaWIodGhpcy5t
X2luc3RhbmNlQ29sb3JHLCAwLjApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGJJbnN0YW5jZXMgPSBNYXRoLmZsb29yKHRoaXMubV9udW1J
bnN0YW5jZXMgLyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuQVRUUklCX0RJVklTT1JfQikg
KyAodGhpcy5tX251bUluc3RhbmNlcyAlIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRS
SUJfRElWSVNPUl9CID09IDAgPyAwIDogMSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGJJbnN0YW5jZXM7IGkrKykgeworICAgICAgICAgICAgICAgIHRoaXMucHVzaFZhckNvbXBB
dHRyaWIodGhpcy5tX2luc3RhbmNlQ29sb3JCLCAxLjAgLSBpIC8gYkluc3RhbmNlcyk7CisKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHR5cGVTaXplIC0gMTsgaisrKQorICAg
ICAgICAgICAgICAgICAgICB0aGlzLnB1c2hWYXJDb21wQXR0cmliKHRoaXMubV9pbnN0YW5jZUNv
bG9yQiwgMC4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNm
SW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2VkUmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUu
ZGVpbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBudW1WZXJ0ZXhBdHRyaWJBcnJheXMg
PSAvKiogQHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRU
UklCUykpOworICAgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBudW1WZXJ0ZXhBdHRyaWJB
cnJheXM7IGlkeCsrKSB7CisgICAgICAgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
aWR4KTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoaWR4LCAwKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2Vk
UmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHdpZHRoID0gTWF0aC5taW4oZ2wuZHJhd2luZ0J1ZmZl
cldpZHRoLCBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuTUFYX1JFTkRFUl9XSURUSCk7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gTWF0aC5taW4oZ2wuZHJh
d2luZ0J1ZmZlckhlaWdodCwgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLk1BWF9SRU5ERVJf
SEVJR0hUKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhPZmZzZXRNYXgg
PSBnbC5kcmF3aW5nQnVmZmVyV2lkdGggLSB3aWR0aDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB5T2Zmc2V0TWF4ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCAtIGhlaWdodDsK
KworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBk
ZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkpOworCisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeE9mZnNldCA9IHJuZC5nZXRJbnQoMCwgeE9m
ZnNldE1heCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeU9mZnNldCA9IHJu
ZC5nZXRJbnQoMCwgeU9mZnNldE1heCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNl
LlN1cmZhY2V9ICovIHZhciByZWZlcmVuY2VJbWcgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHdp
ZHRoLCBoZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8g
dmFyIHJlc3VsdEltZyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisK
KyAgICAgICAgLy8gRHJhdyByZXN1bHQuCisKKyAgICAgICAgZ2wudmlld3BvcnQoeE9mZnNldCwg
eU9mZnNldCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworCisgICAgICAgIHRoaXMuc2V0dXBBbmRSZW5kZXIoKTsKKworICAgICAgICB2YXIg
cmVzSW1nID0gcmVzdWx0SW1nLmdldEFjY2VzcygpOworICAgICAgICB2YXIgcmVzSW1nVHJhbnNm
ZXJGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChyZXNJbWcuZ2V0Rm9y
bWF0KCkpOworCisgICAgICAgIGdsLnJlYWRQaXhlbHMoeE9mZnNldCwgeU9mZnNldCwgcmVzSW1n
Lm1fd2lkdGgsIHJlc0ltZy5tX2hlaWdodCwgcmVzSW1nVHJhbnNmZXJGb3JtYXQuZm9ybWF0LCBy
ZXNJbWdUcmFuc2ZlckZvcm1hdC5kYXRhVHlwZSwgcmVzdWx0SW1nLm1fcGl4ZWxzKTsKKworICAg
ICAgICAvLyBDb21wdXRlIHJlZmVyZW5jZS4KKyAgICAgICAgdGhpcy5jb21wdXRlUmVmZXJlbmNl
KHJlZmVyZW5jZUltZyk7CisKKyAgICAgICAgLy8gQ29tcGFyZS4KKworICAgICAgICAvLyBQYXNz
aW5nIHJlZmVyZW5jZUltZy5nZXRBY2Nlc3MoKSBhbmQgcmVzdWx0SW1nLmdldEFjY2VzcygpIGlu
c3RlYWQgb2YgcmVmZXJlbmNlSW1nIGFuZCByZXN1bHRJbWcKKyAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciB0ZXN0T2sgPSB0Y3VJbWFnZUNvbXBhcmUuZnV6enlDb21wYXJlKCdDb21wYXJp
c29uUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVzdWx0JywgcmVmZXJlbmNlSW1nLmdldEFj
Y2VzcygpLCByZXN1bHRJbWcuZ2V0QWNjZXNzKCksIDAuMDUgLyosIGdsdVNoYWRlclV0aWwuQ09N
UEFSRV9MT0dfUkVTVUxUKi8pOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGVzdE9rLCAn
JywgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVz
dWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBhdHRyUHRyCisgICAgKiBAcGFyYW0ge251bWJlcn0gbG9jYXRpb24KKyAgICAqIEBwYXJhbSB7
bnVtYmVyfSBkaXZpc29yCisgICAgKi8KKyAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMu
SW5zdGFuY2VkUmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUuc2V0dXBWYXJBdHRyaWJQb2ludGVyID0g
ZnVuY3Rpb24oYXR0clB0ciwgbG9jYXRpb24sIGRpdmlzb3IpIHsKKyAgICAgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgaXNGbG9hdENhc2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVG
bG9hdE9yVmVjKHRoaXMubV9yZ2JBdHRyVHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIGlzSW50Q2FzZSA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUludE9ySVZlYyh0
aGlzLm1fcmdiQXR0clR5cGUpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
c1VpbnRDYXNlID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYyh0aGlzLm1fcmdi
QXR0clR5cGUpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc01hdENhc2Ug
PSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodGhpcy5tX3JnYkF0dHJUeXBlKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0eXBlU2l6ZSA9IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVTY2FsYXJTaXplKHRoaXMubV9yZ2JBdHRyVHlwZSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtU2xvdHMgPSBpc01hdENhc2UgPyBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyh0aGlzLm1fcmdiQXR0clR5cGUpIDogMTsgLy8g
TWF0cml4IHVzZXMgYXMgbWFueSBhdHRyaWJ1dGUgc2xvdHMgYXMgaXQgaGFzIGNvbHVtbnMuCisK
KyAgICAgICAgZm9yICh2YXIgc2xvdE5keCA9IDA7IHNsb3ROZHggPCBudW1TbG90czsgc2xvdE5k
eCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGN1ckxvYyA9IGxv
Y2F0aW9uICsgc2xvdE5keDsKKworICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoY3VyTG9jKTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoY3VyTG9jLCBk
aXZpc29yKTsKKyAgICAgICAgICAgIHZhciBjdXJMb2NHbEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgICAgICAgICAgaWYgKGlzRmxvYXRDYXNlKSB7CisgICAgICAgICAgICAgICAgdmFy
IGJ1ZmZlckN1ckxvYyA9IG5ldyBGbG9hdDMyQXJyYXkoYXR0clB0cik7CisgICAgICAgICAgICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGN1ckxvY0dsQnVmZmVyKTsKKyAgICAg
ICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyQ3VyTG9jLCBn
bC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KGN1ckxvYywgdHlwZVNpemUsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzSW50Q2FzZSkgeworICAgICAgICAgICAgICAgIHZhciBidWZmZXJDdXJMb2Mg
PSBuZXcgSW50MzJBcnJheShhdHRyUHRyKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgY3VyTG9jR2xCdWZmZXIpOworICAgICAgICAgICAgICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXJDdXJMb2MsIGdsLlNUQVRJQ19EUkFXKTsK
KworICAgICAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKGN1ckxvYywgdHlwZVNp
emUsIGdsLklOVCwgMCwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVWludENhc2UpIHsK
KyAgICAgICAgICAgICAgICB2YXIgYnVmZmVyQ3VyTG9jID0gbmV3IFVpbnQzMkFycmF5KGF0dHJQ
dHIpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjdXJM
b2NHbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIGJ1ZmZlckN1ckxvYywgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICAgICAgZ2wu
dmVydGV4QXR0cmliSVBvaW50ZXIoY3VyTG9jLCB0eXBlU2l6ZSwgZ2wuVU5TSUdORURfSU5ULCAw
LCAwKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNNYXRDYXNlKSB7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Sb3dzID0gZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZU1hdHJpeE51bVJvd3ModGhpcy5tX3JnYkF0dHJUeXBlKTsKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUNvbHMgPSBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlTWF0cml4TnVtQ29sdW1ucyh0aGlzLm1fcmdiQXR0clR5cGUpOworCisgICAgICAgICAg
ICAgICAgdmFyIGJ1ZmZlckN1ckxvYyA9IG5ldyBGbG9hdDMyQXJyYXkoYXR0clB0cik7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGN1ckxvY0dsQnVmZmVy
KTsKKyAgICAgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVy
Q3VyTG9jLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKGN1ckxvYywgbnVtUm93cywgZ2wuRkxPQVQsIGZhbHNlLCBudW1Db2xzICogbnVt
Um93cyAqIDQsIDApOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgREVfQVNT
RVJUKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmSW5zdGFuY2VkUmVuZGVy
aW5nVGVzdHMuSW5zdGFuY2VkUmVuZGVyaW5nQ2FzZS5wcm90b3R5cGUuc2V0dXBBbmRSZW5kZXIg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBw
cm9ncmFtID0gdGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpOworCisgICAgICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIC8vIFNldHVwIGF0dHJpYnV0ZXMuCisKKyAgICAgICAg
Ly8gUG9zaXRpb24gYXR0cmlidXRlIGlzIG5vbi1pbnN0YW5jZWQuCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgcG9zaXRpb25Mb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCAnYV9wb3NpdGlvbicpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvYyk7CisgICAgICAgIHZhciBwb3NpdGlvbkJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgICAgICB2YXIgYnVmZmVyR3JpZFZlcnRleFBvc2l0aW9uID0gbmV3IEZsb2F0MzJB
cnJheSh0aGlzLm1fZ3JpZFZlcnRleFBvc2l0aW9ucyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbkJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBidWZmZXJHcmlkVmVydGV4UG9zaXRpb24sIGdsLlNUQVRJQ19EUkFX
KTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvYywgMiwgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKworICAgICAgICBpZiAodGhpcy5tX2luc3RhbmNpbmdUeXBlID09
IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5UWVBFX0FUVFJJQl9E
SVZJU09SIHx8IHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5n
VGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9NSVhFRCkgeworICAgICAgICAgICAgaWYgKHRoaXMu
bV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2lu
Z1R5cGUuVFlQRV9BVFRSSUJfRElWSVNPUikgeworICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9u
IG9mZnNldCBhdHRyaWJ1dGUgaXMgaW5zdGFuY2VkIHdpdGggc2VwYXJhdGUgb2Zmc2V0IGZvciBl
dmVyeSBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG9mZnNldExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdhX2luc3RhbmNlT2Zm
c2V0Jyk7CisgICAgICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob2Zmc2V0
TG9jKTsKKyAgICAgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKG9mZnNldExvYywg
MSk7CisKKyAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0TG9jR2xCdWZmZXIgPSBnbC5jcmVhdGVC
dWZmZXIoKTsKKyAgICAgICAgICAgICAgICB2YXIgYnVmZmVyT2Zmc2V0TG9jID0gbmV3IEZsb2F0
MzJBcnJheSh0aGlzLm1faW5zdGFuY2VPZmZzZXRzKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgb2Zmc2V0TG9jR2xCdWZmZXIpOworICAgICAgICAgICAg
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXJPZmZzZXRMb2MsIGdsLlNU
QVRJQ19EUkFXKTsKKworICAgICAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIob2Zm
c2V0TG9jLCBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuT0ZGU0VUX0NPTVBPTkVOVFMsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHJMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYV9pbnN0YW5j
ZVInKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNldHVwVmFyQXR0cmliUG9pbnRlcih0aGlzLm1f
aW5zdGFuY2VDb2xvclIsIHJMb2MsIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJf
RElWSVNPUl9SKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBnTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgJ2FfaW5zdGFu
Y2VHJyk7CisgICAgICAgICAgICB0aGlzLnNldHVwVmFyQXR0cmliUG9pbnRlcih0aGlzLm1faW5z
dGFuY2VDb2xvckcsIGdMb2MsIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJfRElW
SVNPUl9HKTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBiTG9jID0g
Z2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgJ2FfaW5zdGFuY2VCJyk7CisgICAgICAgICAg
ICB0aGlzLnNldHVwVmFyQXR0cmliUG9pbnRlcih0aGlzLm1faW5zdGFuY2VDb2xvckIsIGJMb2Ms
IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5BVFRSSUJfRElWSVNPUl9CKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIERyYXcgdXNpbmcgYXBwcm9wcmlhdGUgZnVuY3Rpb24uCisKKyAgICAg
ICAgaWYgKHRoaXMubV9mdW5jdGlvbiA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRHJh
d0Z1bmN0aW9uLkZVTkNUSU9OX0RSQVdfQVJSQVlTX0lOU1RBTkNFRCkgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Qb3NpdGlvbkNvbXBvbmVudHMgPSAyOworICAg
ICAgICAgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAsIE1hdGguZmxv
b3IodGhpcy5tX2dyaWRWZXJ0ZXhQb3NpdGlvbnMubGVuZ3RoIC8gbnVtUG9zaXRpb25Db21wb25l
bnRzKSwgdGhpcy5tX251bUluc3RhbmNlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2YXIgZ3JpZEluZGljZXNHTEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAg
ICAgdmFyIGJ1ZmZlckdyaWRJbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KHRoaXMubV9ncmlkSW5k
aWNlcyk7CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBncmlkSW5kaWNlc0dMQnVmZmVyKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIGJ1ZmZlckdyaWRJbmRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisK
KyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIHRoaXMu
bV9ncmlkSW5kaWNlcy5sZW5ndGgsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCB0aGlzLm1fbnVtSW5z
dGFuY2VzKTsKKyAgICAgICAgfQorICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgIH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAgICAq
LworICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jZWRSZW5kZXJpbmdDYXNl
LnByb3RvdHlwZS5jb21wdXRlUmVmZXJlbmNlID0gZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkID0gZHN0LmdldFdpZHRoKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpID0gZHN0LmdldEhlaWdodCgpOworCisgICAgICAg
IC8vIERyYXcgYSByZWN0YW5nbGUgKHZlcnRpY2FsIGJhcikgZm9yIGVhY2ggaW5zdGFuY2UuCisK
KyAgICAgICAgZm9yICh2YXIgaW5zdGFuY2VOZHggPSAwOyBpbnN0YW5jZU5keCA8IHRoaXMubV9u
dW1JbnN0YW5jZXM7IGluc3RhbmNlTmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgeFN0YXJ0ID0gTWF0aC5mbG9vcihpbnN0YW5jZU5keCAqIHdpZCAvIHRoaXMu
bV9udW1JbnN0YW5jZXMpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4
RW5kID0gTWF0aC5mbG9vcigoaW5zdGFuY2VOZHggKyAxKSAqIHdpZCAvIHRoaXMubV9udW1JbnN0
YW5jZXMpOworCisgICAgICAgICAgICAvLyBFbXVsYXRlIGF0dHJpYnV0ZSBkaXZpc29ycyBpZiB0
aGF0IGlzIHRoZSBjYXNlLgorCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGNsck5keFIgPSB0aGlzLm1faW5zdGFuY2luZ1R5cGUgPT0gZXMzZkluc3RhbmNlZFJlbmRlcmlu
Z1Rlc3RzLkluc3RhbmNpbmdUeXBlLlRZUEVfQVRUUklCX0RJVklTT1IgPyBNYXRoLmZsb29yKGlu
c3RhbmNlTmR4IC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkFUVFJJQl9ESVZJU09SX1Ip
IDogaW5zdGFuY2VOZHg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNs
ck5keEcgPSB0aGlzLm1faW5zdGFuY2luZ1R5cGUgPT0gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rl
c3RzLkluc3RhbmNpbmdUeXBlLlRZUEVfQVRUUklCX0RJVklTT1IgfHwgdGhpcy5tX2luc3RhbmNp
bmdUeXBlID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5UWVBF
X01JWEVEID8gTWF0aC5mbG9vcihpbnN0YW5jZU5keCAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdU
ZXN0cy5BVFRSSUJfRElWSVNPUl9HKSA6IGluc3RhbmNlTmR4OworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBjbHJOZHhCID0gdGhpcy5tX2luc3RhbmNpbmdUeXBlID09IGVz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5UWVBFX0FUVFJJQl9ESVZJ
U09SIHx8IHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9NSVhFRCA/IE1hdGguZmxvb3IoaW5zdGFuY2VOZHggLyBl
czNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuQVRUUklCX0RJVklTT1JfQikgOiBpbnN0YW5jZU5k
eDsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBySW5zdGFuY2VzID0g
dGhpcy5tX2luc3RhbmNpbmdUeXBlID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0
YW5jaW5nVHlwZS5UWVBFX0FUVFJJQl9ESVZJU09SID8gTWF0aC5mbG9vcih0aGlzLm1fbnVtSW5z
dGFuY2VzIC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkFUVFJJQl9ESVZJU09SX1IpICsg
KHRoaXMubV9udW1JbnN0YW5jZXMgJSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuQVRUUklC
X0RJVklTT1JfUiA9PSAwID8gMCA6IDEpIDogdGhpcy5tX251bUluc3RhbmNlczsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZ0luc3RhbmNlcyA9IHRoaXMubV9pbnN0YW5j
aW5nVHlwZSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQ
RV9BVFRSSUJfRElWSVNPUiB8fCB0aGlzLm1faW5zdGFuY2luZ1R5cGUgPT0gZXMzZkluc3RhbmNl
ZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNpbmdUeXBlLlRZUEVfTUlYRUQgPyBNYXRoLmZsb29yKHRo
aXMubV9udW1JbnN0YW5jZXMgLyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuQVRUUklCX0RJ
VklTT1JfRykgKyAodGhpcy5tX251bUluc3RhbmNlcyAlIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdU
ZXN0cy5BVFRSSUJfRElWSVNPUl9HID09IDAgPyAwIDogMSkgOiB0aGlzLm1fbnVtSW5zdGFuY2Vz
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBiSW5zdGFuY2VzID0gdGhp
cy5tX2luc3RhbmNpbmdUeXBlID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5j
aW5nVHlwZS5UWVBFX0FUVFJJQl9ESVZJU09SIHx8IHRoaXMubV9pbnN0YW5jaW5nVHlwZSA9PSBl
czNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9NSVhFRCA/IE1h
dGguZmxvb3IodGhpcy5tX251bUluc3RhbmNlcyAvIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0
cy5BVFRSSUJfRElWSVNPUl9CKSArICh0aGlzLm1fbnVtSW5zdGFuY2VzICUgZXMzZkluc3RhbmNl
ZFJlbmRlcmluZ1Rlc3RzLkFUVFJJQl9ESVZJU09SX0IgPT0gMCA/IDAgOiAxKSA6IHRoaXMubV9u
dW1JbnN0YW5jZXM7CisKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBjb2xvcnMuCisKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgciA9IGNsck5keFIgLyBySW5zdGFuY2Vz
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBnID0gY2xyTmR4RyAqIDIu
MCAvIGdJbnN0YW5jZXM7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGIg
PSAxLjAgLSBjbHJOZHhCIC8gYkluc3RhbmNlczsKKworICAgICAgICAgICAgLy8gQ29udmVydCB0
byBpbnRlZ2VyIGFuZCBiYWNrIGlmIHNoYWRlciBpbnB1dHMgYXJlIGludGVnZXJzLgorCisgICAg
ICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50T3JJVmVjKHRoaXMubV9yZ2JB
dHRyVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi92YXIgaW50
UiA9IChyICogZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lOVF9TQ0FMRSArIGVz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9JTlRfQklBUyk7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovdmFyIGludEcgPSAoZyAqIGVzM2ZJbnN0YW5jZWRSZW5k
ZXJpbmdUZXN0cy5GTE9BVF9JTlRfU0NBTEUgKyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMu
RkxPQVRfSU5UX0JJQVMpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL3Zh
ciBpbnRCID0gKGIgKiBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxPQVRfSU5UX1NDQUxF
ICsgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lOVF9CSUFTKTsKKyAgICAgICAg
ICAgICAgICByID0gKGludFIgLSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxPQVRfSU5U
X0JJQVMpIC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lOVF9TQ0FMRTsKKyAg
ICAgICAgICAgICAgICBnID0gKGludEcgLSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxP
QVRfSU5UX0JJQVMpIC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lOVF9TQ0FM
RTsKKyAgICAgICAgICAgICAgICBiID0gKGludEIgLSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuRkxPQVRfSU5UX0JJQVMpIC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX0lO
VF9TQ0FMRTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBl
VWludE9yVVZlYyh0aGlzLm1fcmdiQXR0clR5cGUpKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovdmFyIHVpbnRSID0gKHIgKiBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVz
dHMuRkxPQVRfVUlOVF9TQ0FMRSArIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9V
SU5UX0JJQVMpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL3ZhciB1aW50
RyA9IChnICogZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX1VJTlRfU0NBTEUgKyBl
czNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRkxPQVRfVUlOVF9CSUFTKTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi92YXIgdWludEIgPSAoYiAqIGVzM2ZJbnN0YW5jZWRS
ZW5kZXJpbmdUZXN0cy5GTE9BVF9VSU5UX1NDQUxFICsgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rl
c3RzLkZMT0FUX1VJTlRfQklBUyk7CisgICAgICAgICAgICAgICAgciA9ICh1aW50UiAtIGVzM2ZJ
bnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9VSU5UX0JJQVMpIC8gZXMzZkluc3RhbmNlZFJl
bmRlcmluZ1Rlc3RzLkZMT0FUX1VJTlRfU0NBTEU7CisgICAgICAgICAgICAgICAgZyA9ICh1aW50
RyAtIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9VSU5UX0JJQVMpIC8gZXMzZklu
c3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX1VJTlRfU0NBTEU7CisgICAgICAgICAgICAgICAg
YiA9ICh1aW50QiAtIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5GTE9BVF9VSU5UX0JJQVMp
IC8gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkZMT0FUX1VJTlRfU0NBTEU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBmbG9hdCB0byB1bm9ybTguCisg
ICAgICAgICAgICB2YXIgY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5zY2FsZShbciwgZywgYiwg
MS4wXSwgMjU1KSwgWzAuNSwgMC41LCAwLjUsIDAuNV0pOworICAgICAgICAgICAgY29sb3IgPSBk
ZU1hdGguY2xhbXBWZWN0b3IoY29sb3IsIDAsIDI1NSk7CisKKyAgICAgICAgICAgIC8vIERyYXcg
cmVjdGFuZ2xlLgorICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWk7IHkrKykKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciB4ID0geFN0YXJ0OyB4IDwgeEVuZDsgeCsrKQorICAgICAg
ICAgICAgICAgICAgICBkc3Quc2V0UGl4ZWwoeCwgeSwgY29sb3IpOworICAgICAgICB9CisgICAg
fTsKKworICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5pbml0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzOwor
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGluc3RhbmNlQ291bnRzID0gWzEs
IDIsIDQsIDIwXTsKKworICAgICAgICBmb3IgKHZhciBfZnVuY3Rpb24gaW4gZXMzZkluc3RhbmNl
ZFJlbmRlcmluZ1Rlc3RzLkRyYXdGdW5jdGlvbikgeworICAgICAgICAgICAgLyoqIEB0eXBlIHs/
c3RyaW5nfSAqLyB2YXIgZnVuY3Rpb25OYW1lID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5EcmF3RnVuY3Rpb25bX2Z1
bmN0aW9uXSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRHJhd0Z1bmN0aW9uLkZVTkNU
SU9OX0RSQVdfQVJSQVlTX0lOU1RBTkNFRCA/ICdkcmF3X2FycmF5c19pbnN0YW5jZWQnIDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJp
bmdUZXN0cy5EcmF3RnVuY3Rpb25bX2Z1bmN0aW9uXSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5n
VGVzdHMuRHJhd0Z1bmN0aW9uLkZVTkNUSU9OX0RSQVdfRUxFTUVOVFNfSU5TVEFOQ0VEID8gJ2Ry
YXdfZWxlbWVudHNfaW5zdGFuY2VkJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxsOworCisgICAgICAgICAgICAvKiogQHR5cGUgez9zdHJpbmd9ICovIHZhciBm
dW5jdGlvbkRlc2MgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMz
Zkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkRyYXdGdW5jdGlvbltfZnVuY3Rpb25dID09IGVzM2ZJ
bnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5EcmF3RnVuY3Rpb24uRlVOQ1RJT05fRFJBV19BUlJBWVNf
SU5TVEFOQ0VEID8gJ1VzZSBnbERyYXdBcnJheXNJbnN0YW5jZWQoKScgOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkRy
YXdGdW5jdGlvbltfZnVuY3Rpb25dID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5EcmF3
RnVuY3Rpb24uRlVOQ1RJT05fRFJBV19FTEVNRU5UU19JTlNUQU5DRUQgPyAnVXNlIGdsRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKCknIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGw7CisKKyAgICAgICAgICAgIERFX0FTU0VSVChmdW5jdGlvbk5hbWUgIT0gbnVsbCk7
CisgICAgICAgICAgICBERV9BU1NFUlQoZnVuY3Rpb25EZXNjICE9IG51bGwpOworCisgICAgICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZnVuY3Rpb25Hcm91
cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoZnVuY3Rpb25OYW1lLCBmdW5jdGlvbkRlc2MpOworICAg
ICAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGZ1bmN0aW9uR3JvdXApOworCisgICAgICAgICAg
ICBmb3IgKHZhciBpbnN0YW5jaW5nVHlwZSBpbiBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMu
SW5zdGFuY2luZ1R5cGUpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUgez9zdHJpbmd9ICov
IHZhciBpbnN0YW5jaW5nVHlwZU5hbWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5n
VHlwZVtpbnN0YW5jaW5nVHlwZV0gPT0gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkluc3Rh
bmNpbmdUeXBlLlRZUEVfSU5TVEFOQ0VfSUQgPyAnaW5zdGFuY2VfaWQnIDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmSW5zdGFuY2VkUmVuZGVy
aW5nVGVzdHMuSW5zdGFuY2luZ1R5cGVbaW5zdGFuY2luZ1R5cGVdID09IGVzM2ZJbnN0YW5jZWRS
ZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5UWVBFX0FUVFJJQl9ESVZJU09SID8gJ2F0dHJp
YnV0ZV9kaXZpc29yJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNpbmdUeXBlW2luc3Rh
bmNpbmdUeXBlXSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUu
VFlQRV9NSVhFRCA/ICdtaXhlZCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGw7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUgez9zdHJp
bmd9ICovIHZhciBpbnN0YW5jaW5nVHlwZURlc2MgPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0
YW5jaW5nVHlwZVtpbnN0YW5jaW5nVHlwZV0gPT0gZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3Rz
Lkluc3RhbmNpbmdUeXBlLlRZUEVfSU5TVEFOQ0VfSUQgPyAnVXNlIGdsX0luc3RhbmNlSUQgZm9y
IGluc3RhbmNpbmcnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGVbaW5zdGFu
Y2luZ1R5cGVdID09IGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0YW5jaW5nVHlwZS5U
WVBFX0FUVFJJQl9ESVZJU09SID8gJ1VzZSB2ZXJ0ZXggYXR0cmlidXRlIGRpdmlzb3JzIGZvciBp
bnN0YW5jaW5nJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkluc3RhbmNpbmdUeXBlW2luc3RhbmNp
bmdUeXBlXSA9PSBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQ
RV9NSVhFRCA/ICdVc2UgYm90aCBnbF9JbnN0YW5jZUlEIGFuZCB2ZXJ0ZXggYXR0cmlidXRlIGRp
dmlzb3JzIGZvciBpbnN0YW5jaW5nJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbDsKKworICAgICAgICAgICAgICAgIERFX0FTU0VSVChpbnN0
YW5jaW5nVHlwZU5hbWUgIT0gbnVsbCk7CisgICAgICAgICAgICAgICAgREVfQVNTRVJUKGluc3Rh
bmNpbmdUeXBlRGVzYyAhPSBudWxsKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNpbmdUeXBl
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGluc3RhbmNpbmdUeXBlTmFtZSwgaW5zdGFuY2lu
Z1R5cGVEZXNjKTsKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uR3JvdXAuYWRkQ2hpbGQoaW5z
dGFuY2luZ1R5cGVHcm91cCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudE5keCBp
biBpbnN0YW5jZUNvdW50cykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIGNvdW50TmFtZSA9IGluc3RhbmNlQ291bnRzW2NvdW50TmR4XS50b1N0cmluZygp
ICsgJ19pbnN0YW5jZXMnOworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jaW5nVHlwZUdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuSW5zdGFuY2VkUmVuZGVy
aW5nQ2FzZShjb3VudE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuRHJhd0Z1bmN0aW9uW19mdW5jdGlv
bl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5JbnN0
YW5jaW5nVHlwZVtpbnN0YW5jaW5nVHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlQ291bnRz
W2NvdW50TmR4XSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59ICov
IHZhciBzX3Rlc3RUeXBlcyA9CisgICAgICAgIFsKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X1ZFQzIsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMsCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDIsCisgICAgICAgICAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYMywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUMlg0LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzWDIsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X01BVDMsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNCwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgyLAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDMsCisgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQsCisKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlRfVkVDMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMsCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0LAorCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlRfVkVDMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVF9WRUMzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQK
KyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHR5cGVUZXN0
TnVtSW5zdGFuY2VzID0gNDsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fSAqLyB2YXIgdHlwZXNHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3R5cGVzJywgJ1Rl
c3RzIGZvciBpbnN0YW5jZWQgYXR0cmlidXRlcyBvZiBwYXJ0aWN1bGFyIGRhdGEgdHlwZXMnKTsK
KworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQodHlwZXNHcm91cCk7CisKKyAgICAgICAgZm9y
ICh2YXIgdHlwZU5keCBpbiBzX3Rlc3RUeXBlcykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlwZSA9IHNfdGVzdFR5cGVzW3R5cGVOZHhd
OworICAgICAgICAgICAgdHlwZXNHcm91cC5hZGRDaGlsZChuZXcgZXMzZkluc3RhbmNlZFJlbmRl
cmluZ1Rlc3RzLkluc3RhbmNlZFJlbmRlcmluZ0Nhc2UoZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU5hbWUodHlwZSksICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLkRyYXdGdW5j
dGlvbi5GVU5DVElPTl9EUkFXX0FSUkFZU19JTlNUQU5DRUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmSW5zdGFuY2VkUmVu
ZGVyaW5nVGVzdHMuSW5zdGFuY2luZ1R5cGUuVFlQRV9BVFRSSUJfRElWSVNPUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlVGVzdE51bUluc3RhbmNlcykpOworICAgICAgICB9CisgICAgfTsKKworICAgIGVz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAg
ICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMK
KyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ2luc3RhbmNlZF9yZW5kZXJpbmcnOworICAgICAgICB2
YXIgdGVzdERlc2NyaXB0aW9uID0gJ0luc3RhbmNlZCBSZW5kZXJpbmcgVGVzdHMnOworICAgICAg
ICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAgICAgc3RhdGUudGVzdE5h
bWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9vdCh0Y3VUZXN0Q2FzZS5uZXdUZXN0
KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwpKTsKKworICAgICAgICAvL1NldCB1cCBu
YW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJy
ZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlwdGlvbih0ZXN0RGVzY3JpcHRp
b24pOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0NyZWF0ZSB0ZXN0IGNhc2VzCisg
ICAgICAgICAgICBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuaW5pdCgpOworICAgICAgICAg
ICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2Vz
KCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZh
aWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMucnVuIHRl
c3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgp
OworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZklu
dGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM1MDQ4ZTRmMzY3YjNmNzQ1MDU0Y2RkYTcxZDY2NGRiNTAy
N2RjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5qcwpAQCAtMCwwICsxLDIwNDkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0Vs
ZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQg
MjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0
cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxl
cy5zaGFyZWQuZ2xzU3RhdGVRdWVyeScpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzOworICAgICAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgICAgICB2YXIgZGVSYW5kb20gPSBmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKyAgICAgICAgdmFyIGVzM2ZBcGlDYXNlID0gZnVu
Y3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZTsKKyAgICAgICAgdmFyIGdsc1N0YXRlUXVlcnkgPSBt
b2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5OworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgdHJhbnNmb3JtRmVlZGJhY2tUZXN0VmVydFNvdXJjZSA9ICcnICsKKyAgICAgICAg
ICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAndm9pZCBtYWlu
ICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgICAgICcg
ICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApO1xuJyArCisgICAgICAgICAgICAgICAgJ31c
bic7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB0cmFuc2Zvcm1GZWVkYmFj
a1Rlc3RGcmFnU291cmNlID0gJycgKworICAgICAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNc
bicgKworICAgICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2
ZWM0IGZyYWdDb2xvcjsnICsKKyAgICAgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyAr
CisgICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgICAgICcgICAgICAgIGZyYWdD
b2xvciA9IHZlYzQoMC4wKTtcbicgKworICAgICAgICAgICAgICAgICd9XG4nOworCisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdGVzdFZlcnRTb3VyY2UgPSAnJyArCisgICAgICAg
ICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ3ZvaWQgbWFp
biAodm9pZClcbicgKworICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAn
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wKTtcbicgKworICAgICAgICAgICAgICAgICd9
XG4nOworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdGVzdEZyYWdTb3VyY2Ug
PSAnJyArCisgICAgICAgICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAg
ICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOycg
KworICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAg
ICAne1xuJyArCisgICAgICAgICAgICAgICAgJyAgICAgICAgZnJhZ0NvbG9yID0gdmVjNCgwLjAp
O1xuJyArCisgICAgICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgLyoqCisgICAgICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0K
KyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24pIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywg
bmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2t9ICovIHRoaXMubV90cmFuc2Zvcm1mZWVkYmFjazsKKyAgICAgICAg
fTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5w
cm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tUZXN0Q2FzZS5wcm90b3R5cGUudGVz
dFRyYW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdUaGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgY2hpbGQgY2xh
c3Nlcy4nKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0
cy5UcmFuc2Zvcm1GZWVkYmFja1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKTsgLy8g
W2RhZ10gYWRkZWQgdGhpcyBhcyB0aGVyZSBpcyBubyBvdGhlciB3YXkgdGhpcyBtZXRob2Qgd291
bGQgYmUgY2FsbGVkLgorCisgICAgICAgICAgICAgICAgdGhpcy5tX3RyYW5zZm9ybWZlZWRiYWNr
ID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7V2ViR0xTaGFkZXJ9ICovIHZhciBzaGFkZXJWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVyKGds
LlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJW
ZXJ0LCB0cmFuc2Zvcm1GZWVkYmFja1Rlc3RWZXJ0U291cmNlKTsKKyAgICAgICAgICAgICAgICBn
bC5jb21waWxlU2hhZGVyKHNoYWRlclZlcnQpOworCisgICAgICAgICAgICAgICAgdmFyIGNvbXBp
bGVTdGF0dXMgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChnbC5nZXRTaGFkZXJQYXJhbWV0ZXIo
c2hhZGVyVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpKTsKKyAgICAgICAgICAgICAgICBnbHNTdGF0
ZVF1ZXJ5LmNvbXBhcmUoY29tcGlsZVN0YXR1cywgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyRnJhZyA9IGdsLmNyZWF0ZVNoYWRl
cihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgICAgICAgICAgICAgIGdsLnNoYWRlclNvdXJjZShz
aGFkZXJGcmFnLCB0cmFuc2Zvcm1GZWVkYmFja1Rlc3RGcmFnU291cmNlKTsKKyAgICAgICAgICAg
ICAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisgICAgICAgICAgICAgICAgY29t
cGlsZVN0YXR1cyA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gKGdsLmdldFNoYWRlclBhcmFtZXRl
cihzaGFkZXJGcmFnLCBnbC5DT01QSUxFX1NUQVRVUykpOworICAgICAgICAgICAgICAgIGdsc1N0
YXRlUXVlcnkuY29tcGFyZShjb21waWxlU3RhdHVzLCB0cnVlKTsKKworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7V2ViR0xQcm9ncmFtfSAqLyB2YXIgc2hhZGVyUHJvZyA9IGdsLmNyZWF0ZVBy
b2dyYW0oKTsKKyAgICAgICAgICAgICAgICBnbC5hdHRhY2hTaGFkZXIoc2hhZGVyUHJvZywgc2hh
ZGVyVmVydCk7CisgICAgICAgICAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHNoYWRlclByb2csIHNo
YWRlckZyYWcpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHRyYW5zZm9ybV9mZWVkYmFja19vdXRwdXRzID0gWydnbF9Qb3NpdGlvbiddOworICAgICAg
ICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Moc2hhZGVyUHJvZywgdHJhbnNm
b3JtX2ZlZWRiYWNrX291dHB1dHMsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgICAgICAg
ICAgICAgIGdsLmxpbmtQcm9ncmFtKHNoYWRlclByb2cpOworCisgICAgICAgICAgICAgICAgdmFy
IGxpbmtTdGF0dXMgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHNoYWRlclByb2csIGdsLkxJTktfU1RBVFVTKSk7CisgICAgICAgICAgICAgICAgZ2xzU3Rh
dGVRdWVyeS5jb21wYXJlKGxpbmtTdGF0dXMsIHRydWUpOworCisgICAgICAgICAgICAgICAgZ2wu
YmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGhpcy5tX3RyYW5z
Zm9ybWZlZWRiYWNrKTsKKworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTEJ1ZmZl
cn0gKi8gdmFyIGZlZWRiYWNrQnVmZmVySWQgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGZlZWRi
YWNrQnVmZmVySWQpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgxNiksIGdsLkRZTkFNSUNfUkVBRCk7
CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgMCwgZmVlZGJhY2tCdWZmZXJJZCk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQ
cm9ncmFtKHNoYWRlclByb2cpOworCisgICAgICAgICAgICAgICAgdGhpcy50ZXN0VHJhbnNmb3Jt
RmVlZGJhY2soKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFD
SywgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGhp
cy5tX3RyYW5zZm9ybWZlZWRiYWNrKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIo
ZmVlZGJhY2tCdWZmZXJJZCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRl
clZlcnQpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAg
ICAgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHNoYWRlclByb2cpOworCisgICAgICAgICAg
ICAgICAgdGhpcy5hZnRlclRyYW5zZm9ybUZlZWRiYWNrVGVzdCgpOyAvLyBbZGFnXSBhZGRlZCB0
aGlzIGFzIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0aGlzIG1ldGhvZCB3b3VsZCBiZSBjYWxsZWQu
CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0Q2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAg
ICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNr
QmluZGluZ1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSkgeworICAgICAgICAgICAgICAgIGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrVGVzdENhc2UuY2FsbCh0aGlz
LCBuYW1lLCAnR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkcnKTsKKyAgICAgICAgfTsKKwor
ICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0JpbmRp
bmdUZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZJbnRlZ2VyU3RhdGVRdWVy
eVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrVGVzdENhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMz
ZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tCaW5kaW5nVGVzdENhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNm
b3JtRmVlZGJhY2tCaW5kaW5nVGVzdENhc2U7CisKKworICAgICAgICBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0JpbmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUuYmVm
b3JlVHJhbnNmb3JtRmVlZGJhY2tUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQklO
RElORywgbnVsbCksICdiZWZvcmVUcmFuc2Zvcm1GZWVkYmFja1Rlc3QnKTsKKyAgICAgICAgfTsK
KworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Jp
bmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUudGVzdFRyYW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5U
UkFOU0ZPUk1fRkVFREJBQ0tfQklORElORywgdGhpcy5tX3RyYW5zZm9ybWZlZWRiYWNrKSwgJ3Rl
c3RUcmFuc2Zvcm1GZWVkYmFjaycpOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2Vy
U3RhdGVRdWVyeVRlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQmluZGluZ1Rlc3RDYXNlLnByb3RvdHlw
ZS5hZnRlclRyYW5zZm9ybUZlZWRiYWNrVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNL
X0JJTkRJTkcsIG51bGwpLCAnYWZ0ZXJUcmFuc2Zvcm1GZWVkYmFja1Rlc3QnKTsKKyAgICAgICAg
fTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBl
eHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICog
QHBhcmFtIHtudW1iZXJ9IHRhcmdldE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG1p
blZhbHVlCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5D
b25zdGFudE1pbmltdW1WYWx1ZVRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24s
IHRhcmdldE5hbWUsIG1pblZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNhc2UuQXBp
Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV90YXJnZXROYW1lID0gdGFyZ2V0TmFtZTsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX21pblZhbHVlID0gbWlu
VmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
Q29uc3RhbnRNaW5pbXVtVmFsdWVUZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVz
M2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuQ29uc3RhbnRNaW5pbXVtVmFsdWVUZXN0Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5Db25zdGFudE1pbmltdW1WYWx1ZVRlc3RD
YXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkNvbnN0YW50TWluaW11
bVZhbHVlVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5R3JlYXRlck9yRXF1YWwodGhpcy5t
X3RhcmdldE5hbWUsIHRoaXMubV9taW5WYWx1ZSksICdGYWlsJyk7CisgICAgICAgIH07CisKKyAg
ICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7
ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB0YXJnZXROYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5WYWx1ZQor
ICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQ29uc3RhbnRN
YXhpbXVtVmFsdWVUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0YXJnZXRO
YW1lLCBtaW5WYWx1ZSkgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGFyZ2V0TmFtZSA9IHRhcmdldE5hbWU7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9taW5WYWx1ZSA9IG1pblZhbHVlOwor
ICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkNvbnN0YW50
TWF4aW11bVZhbHVlVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2Fz
ZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3Rz
LkNvbnN0YW50TWF4aW11bVZhbHVlVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMz
ZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQ29uc3RhbnRNYXhpbXVtVmFsdWVUZXN0Q2FzZTsKKwor
ICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5Db25zdGFudE1heGltdW1WYWx1ZVRl
c3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUxlc3NPckVxdWFsKHRoaXMubV90YXJnZXROYW1l
LCB0aGlzLm1fbWluVmFsdWUpLCAnRmFpbCcpOworICAgICAgICB9OworCisgICAgICAgIC8qKgor
ICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNl
LkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlQnVmZmVyc1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwo
dGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNm
SW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVCdWZmZXJzVGVzdENhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZUJ1ZmZlcnNUZXN0Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVCdWZmZXJzVGVz
dENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlQnVmZmVy
c1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHBlY3RlZFNhbXBsZUJ1ZmZlcnMgPSAoLyoqIEB0
eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUykpID4gMSkgPyAxIDog
MDsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdTYW1wbGUgY291bnQg
aXMgJyArIGV4cGVjdGVkU2FtcGxlQnVmZmVycyArICcsIGV4cGVjdGluZyBHTF9TQU1QTEVfQlVG
RkVSUyB0byBiZSAnICsgZXhwZWN0ZWRTYW1wbGVCdWZmZXJzKTsKKworICAgICAgICAgICAgICAg
IHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuU0FNUExFX0JVRkZFUlMsIGV4cGVj
dGVkU2FtcGxlQnVmZmVycykpOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9
CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuU2FtcGxlc1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5TYW1wbGVzVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBp
Q2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLlNhbXBsZXNUZXN0Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0
YXRlUXVlcnlUZXN0cy5TYW1wbGVzVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuU2FtcGxlc1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgdmFyIG51bVNhbXBsZXMgPSAvKiogQHR5cGUge251bWJlcn0gKi8g
KGdsLmdldFBhcmFtZXRlcihnbC5TQU1QTEVTKSk7CisgICAgICAgICAgICAgICAgLy8gTVNBQT8K
KyAgICAgICAgICAgICAgICBpZiAobnVtU2FtcGxlcyA+IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdTYW1wbGUgY291bnQgaXMgJyArIG51bVNhbXBs
ZXMpOworCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5KGdsLlNBTVBMRVMsIG51bVNhbXBsZXMpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgdmFsaWRTYW1wbGVzID0gWzAsIDFdOworCisgICAgICAgICAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnRXhwZWN0aW5nIEdMX1NBTVBMRVMgdG8gYmUgMCBvciAxJyk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlB
bnlPZihnbC5TQU1QTEVTLCB2YWxpZFNhbXBsZXMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAg
KiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXROYW1lCisgICAgICAgICAqLworICAgICAgICBlczNm
SW50ZWdlclN0YXRlUXVlcnlUZXN0cy5IaW50VGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbiwgdGFyZ2V0TmFtZSkgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNh
c2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGFyZ2V0TmFtZSA9IHRhcmdldE5hbWU7CisgICAg
ICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuSGludFRlc3RDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUp
OworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5IaW50VGVzdENhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuSGludFRlc3RDYXNl
OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkhpbnRUZXN0Q2FzZS5wcm90
b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3RhcmdldE5hbWUsIGdsLkRPTlRfQ0FSRSkpOworCisg
ICAgICAgICAgICAgICAgZ2wuaGludCh0aGlzLm1fdGFyZ2V0TmFtZSwgZ2wuTklDRVNUKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90YXJn
ZXROYW1lLCBnbC5OSUNFU1QpKTsKKworICAgICAgICAgICAgICAgIGdsLmhpbnQodGhpcy5tX3Rh
cmdldE5hbWUsIGdsLkZBU1RFU1QpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3Rh
dGVRdWVyeS52ZXJpZnkodGhpcy5tX3RhcmdldE5hbWUsIGdsLkZBU1RFU1QpKTsKKworICAgICAg
ICAgICAgICAgIGdsLmhpbnQodGhpcy5tX3RhcmdldE5hbWUsIGdsLkRPTlRfQ0FSRSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGFyZ2V0
TmFtZSwgZ2wuRE9OVF9DQVJFKSk7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2Fz
ZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5EZXB0aEZ1bmNUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9u
KSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUs
IGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuRGVwdGhGdW5jVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShl
czNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLkRlcHRoRnVuY1Rlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkRlcHRoRnVuY1Rlc3RDYXNlOworCisgICAgICAgIGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkRlcHRoRnVuY1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5ERVBUSF9GVU5DLCBnbC5MRVNTKSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkZXB0aEZ1bmN0aW9ucyA9IFtnbC5ORVZFUiwgZ2wu
QUxXQVlTLCBnbC5MRVNTLCBnbC5MRVFVQUwsIGdsLkVRVUFMLCBnbC5HUkVBVEVSLCBnbC5HRVFV
QUwsIGdsLk5PVEVRVUFMXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCBkZXB0aEZ1bmN0aW9ucy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBnbC5kZXB0aEZ1bmMoZGVwdGhGdW5jdGlvbnNbbmR4XSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuREVQVEhfRlVOQywgZGVw
dGhGdW5jdGlvbnNbbmR4XSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtl
czNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICovCisgICAgICAg
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1bGxGYWNlVGVzdENhc2UgPSBmdW5jdGlvbihu
YW1lLCBkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICB9OworCisgICAgICAg
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1bGxGYWNlVGVzdENhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1bGxGYWNlVGVzdENhc2UucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQ3VsbEZhY2VUZXN0Q2FzZTsKKwor
ICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5DdWxsRmFjZVRlc3RDYXNlLnByb3Rv
dHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeShnbC5DVUxMX0ZBQ0VfTU9ERSwgZ2wuQkFDSykpOworCisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY3VsbEZhY2VzID0gW2ds
LkZST05ULCBnbC5CQUNLLCBnbC5GUk9OVF9BTkRfQkFDS107CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgbmR4ID0gMDsgbmR4IDwgY3VsbEZhY2VzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdsLmN1bGxGYWNlKGN1bGxGYWNlc1tuZHhdKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5DVUxMX0ZB
Q0VfTU9ERSwgY3VsbEZhY2VzW25keF0pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0
ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLwor
ICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5Gcm9udEZhY2VUZXN0Q2FzZSA9IGZ1
bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNhc2Uu
QXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgIH07CisK
KyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuRnJvbnRGYWNlVGVzdENhc2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7Cisg
ICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkZyb250RmFjZVRlc3RDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkZyb250RmFjZVRl
c3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkZyb250RmFjZVRl
c3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5GUk9OVF9GQUNFLCBnbC5DQ1cpKTsKKwor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGZyb250RmFj
ZXMgPSBbZ2wuQ1csIGdsLkNDV107CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgZnJvbnRGYWNlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBnbC5mcm9udEZhY2UoZnJvbnRGYWNlc1tuZHhdKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5GUk9OVF9GQUNFLCBmcm9udEZh
Y2VzW25keF0pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLyoq
CisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNh
c2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50
ZWdlclN0YXRlUXVlcnlUZXN0cy5WaWV3UG9ydFRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50
ZWdlclN0YXRlUXVlcnlUZXN0cy5WaWV3UG9ydFRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5WaWV3UG9ydFRlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlZpZXdQb3J0VGVzdENhc2U7CisKKyAgICAgICAg
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVmlld1BvcnRUZXN0Q2FzZS5wcm90b3R5cGUudGVz
dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFu
ZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAgICAg
ICAgICAgICAgICB2YXIgbWF4Vmlld3BvcnREaW1lbnNpb25zID0gLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WSUVXUE9SVF9ESU1TKSk7CisKKyAg
ICAgICAgICAgICAgICAvLyB2ZXJpZnkgaW5pdGlhbCB2YWx1ZSBvZiBmaXJzdCB0d28gdmFsdWVz
CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5WSUVX
UE9SVCwgbmV3IEludDMyQXJyYXkoWzAsIDAsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgZ2wuZHJh
d2luZ0J1ZmZlckhlaWdodF0pKSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAxMjA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeCA9IHJuZC5nZXRJbnQoLTY0MDAwLCA2NDAwMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkgPSBy
bmQuZ2V0SW50KC02NDAwMCwgNjQwMDApOworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9IHJuZC5nZXRJbnQoMCwgbWF4Vmlld3BvcnREaW1l
bnNpb25zWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgaGVpZ2h0ID0gcm5kLmdldEludCgwLCBtYXhWaWV3cG9ydERpbWVuc2lvbnNbMV0pOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBnbC52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJp
ZnkoZ2wuVklFV1BPUlQsIG5ldyBJbnQzMkFycmF5KFt4LCB5LCB3aWR0aCwgaGVpZ2h0XSkpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0K
KyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5TY2lzc29yQm94VGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikg
eworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBk
ZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlNjaXNzb3JCb3hUZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVz
M2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuU2Npc3NvckJveFRlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlNjaXNzb3JCb3hUZXN0Q2FzZTsKKworICAgICAgICBlczNm
SW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TY2lzc29yQm94VGVzdENhc2UucHJvdG90eXBlLnRlc3Qg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRv
bX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmNkZWYpOworCisgICAgICAg
ICAgICAgICAgLy8gdmVyaWZ5IGluaXRpYWwgdmFsdWUgb2YgZmlyc3QgdHdvIHZhbHVlcworICAg
ICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlNYXNrKGdsLlNDSVNT
T1JfQk9YLCBbMCwgMCwgMCwgMF0sIFt0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2VdKSk7CisKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUl0ZXJhdGlvbnMgPSAx
MjA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyAr
K2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bGVmdCA9IHJuZC5nZXRJbnQoLTY0MDAwLCA2NDAwMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJvdHRvbSA9IHJuZC5nZXRJbnQoLTY0MDAwLCA2
NDAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHdpZHRoID0gcm5kLmdldEludCgwLCA2NDAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGhlaWdodCA9IHJuZC5nZXRJbnQoMCwgNjQwMDApOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBnbC5zY2lzc29yKGxlZnQsIGJvdHRvbSwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVl
cnkudmVyaWZ5KGdsLlNDSVNTT1JfQk9YLCBuZXcgSW50MzJBcnJheShbbGVmdCwgYm90dG9tLCB3
aWR0aCwgaGVpZ2h0XSkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMz
ZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBl
czNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5NYXhWaWV3cG9ydERpbXNUZXN0Q2FzZSA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNhc2UuQXBp
Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgIH07CisKKyAg
ICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuTWF4Vmlld3BvcnREaW1zVGVzdENhc2Uu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7
CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLk1heFZpZXdwb3J0RGltc1Rlc3RD
YXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLk1h
eFZpZXdwb3J0RGltc1Rlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLk1heFZpZXdwb3J0RGltc1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUdyZWF0ZXJP
ckVxdWFsKGdsLk1BWF9WSUVXUE9SVF9ESU1TLCBbZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLCBnbC5k
cmF3aW5nQnVmZmVySGVpZ2h0XSkpOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNh
c2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGVzdFRhcmdl
dE5hbWUKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0
ZW5jaWxSZWZUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0ZXN0VGFyZ2V0
TmFtZSkgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBu
YW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fdGVzdFRhcmdldE5hbWUgPSB0ZXN0VGFyZ2V0TmFtZTsKKyAgICAgICAgfTsK
KworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsUmVmVGVzdENhc2Uu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7
CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZUZXN0Q2FzZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2ls
UmVmVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNp
bFJlZlRlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUs
IDApKTsKKworICAgICAgICAgICAgICAgIHZhciBzdGVuY2lsQml0cyA9IC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykpOworCisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgc3RlbmNpbEJpdCA9IDA7IHN0ZW5jaWxCaXQgPCBzdGVuY2lsQml0czsg
KytzdGVuY2lsQml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHJlZiA9IDEgPDwgc3RlbmNpbEJpdDsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCByZWYsIDApOyAvLyBtYXNrIHNob3VsZCBub3Qg
YWZmZWN0IHRoZSBSRUYKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUsIHJlZikpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBnbC5zdGVuY2lsRnVuYyhnbC5BTFdBWVMsIHJlZiwgcmVmKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0
aGlzLm1fdGVzdFRhcmdldE5hbWUsIHJlZikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBl
eHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICog
QHBhcmFtIHtudW1iZXJ9IHRlc3RUYXJnZXROYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzdGVuY2lsRnVuY1RhcmdldEZhY2UKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2Vy
U3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZTZXBhcmF0ZVRlc3RDYXNlID0gZnVuY3Rpb24obmFt
ZSwgZGVzY3JpcHRpb24sIHRlc3RUYXJnZXROYW1lLCBzdGVuY2lsRnVuY1RhcmdldEZhY2UpIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX3Rlc3RUYXJnZXROYW1lID0gdGVzdFRhcmdldE5hbWU7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9zdGVuY2lsRnVuY1RhcmdldEZhY2UgPSBzdGVuY2ls
RnVuY1RhcmdldEZhY2U7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuU3RlbmNpbFJlZlNlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2Vy
U3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZTZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZTZXBhcmF0ZVRl
c3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZT
ZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5h
bWUsIDApKTsKKworICAgICAgICAgICAgICAgIHZhciBzdGVuY2lsQml0cyA9IC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykpOworCisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgc3RlbmNpbEJpdCA9IDA7IHN0ZW5jaWxCaXQgPCBzdGVuY2lsQml0
czsgKytzdGVuY2lsQml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHJlZiA9IDEgPDwgc3RlbmNpbEJpdDsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0aGlzLm1fc3RlbmNpbEZ1bmNUYXJnZXRGYWNl
LCBnbC5BTFdBWVMsIHJlZiwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3Rlc3RUYXJnZXROYW1lLCByZWYpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0aGlzLm1fc3Rl
bmNpbEZ1bmNUYXJnZXRGYWNlLCBnbC5BTFdBWVMsIHJlZiwgcmVmKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRh
cmdldE5hbWUsIHJlZikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNm
QXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN0ZW5jaWxPcE5hbWUKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlN0ZW5jaWxPcFRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24s
IHN0ZW5jaWxPcE5hbWUpIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNh
bGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy5tX3N0ZW5jaWxPcE5hbWUgPSBzdGVuY2lsT3BOYW1lOworICAg
ICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxPcFRl
c3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90
b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsT3BUZXN0
Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5T
dGVuY2lsT3BUZXN0Q2FzZTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5T
dGVuY2lsT3BUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3N0ZW5jaWxPcE5h
bWUsIGdsLktFRVApKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIHN0ZW5jaWxPcFZhbHVlcyA9IFtnbC5LRUVQLCBnbC5aRVJPLCBnbC5SRVBMQUNF
LCBnbC5JTkNSLCBnbC5ERUNSLCBnbC5JTlZFUlQsIGdsLklOQ1JfV1JBUCwgZ2wuREVDUl9XUkFQ
XTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBzdGVuY2lsT3BWYWx1
ZXMubGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGVu
Y2lsT3Aoc3RlbmNpbE9wVmFsdWVzW25keF0pOworCisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV9zdGVuY2lsT3BOYW1lLCBzdGVu
Y2lsT3BWYWx1ZXNbbmR4XSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsT3BUZXN0Q2FzZS5wcm90b3R5
cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gW2RhZ10gbmVlZCB0
byByZXNldCBldmVyeXRoaW5nIG9uY2UgdGhlIHRlc3QgaXMgZG9uZSwgb3RoZXJ3aXNlIHJlbGF0
ZWQgdGVzdHMgZmFpbAorICAgICAgICAgICAgICAgIGdsLnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5L
RUVQLCBnbC5LRUVQKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHBh
cmFtICB7bnVtYmVyfSBzdGVuY2lsT3BWYWx1ZQorICAgICAgICAgKi8KKyAgICAgICAgZXMzZklu
dGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE9wVGVzdENhc2UucHJvdG90eXBlLnNldFN0ZW5j
aWxPcCA9IGZ1bmN0aW9uKHN0ZW5jaWxPcFZhbHVlKSB7CisgICAgICAgICAgICAgICAgc3dpdGNo
ICh0aGlzLm1fc3RlbmNpbE9wTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBn
bC5TVEVOQ0lMX0ZBSUw6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGdsLlNURU5DSUxf
QkFDS19GQUlMOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5zdGVuY2lsT3Ao
c3RlbmNpbE9wVmFsdWUsIGdsLktFRVAsIGdsLktFRVApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5TVEVO
Q0lMX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wuU1RF
TkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuc3RlbmNpbE9wKGdsLktFRVAsIHN0ZW5jaWxPcFZhbHVlLCBnbC5LRUVQKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgZ2wuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIGdsLlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsLnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBzdGVuY2ls
T3BWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxP
cFRlc3RDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0
ZW5jaWxPcE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZW5jaWxPcEZhY2UKKyAg
ICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxPcFNl
cGFyYXRlVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc3RlbmNpbE9wTmFt
ZSwgc3RlbmNpbE9wRmFjZSkgeworICAgICAgICAgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVy
eVRlc3RzLlN0ZW5jaWxPcFRlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHN0
ZW5jaWxPcE5hbWUpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
Lm1fc3RlbmNpbE9wTmFtZSA9IHN0ZW5jaWxPcE5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMubV9zdGVuY2lsT3BGYWNlID0gc3RlbmNpbE9wRmFjZTsKKyAg
ICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsT3BT
ZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuU3RlbmNpbE9wVGVzdENhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMzZklu
dGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE9wU2VwYXJhdGVUZXN0Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsT3BTZXBhcmF0
ZVRlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxP
cFNlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHt9OworCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gIHtudW1iZXJ9IHN0ZW5jaWxPcFZhbHVlCisgICAg
ICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsT3BTZXBh
cmF0ZVRlc3RDYXNlLnByb3RvdHlwZS5zZXRTdGVuY2lsT3AgPSBmdW5jdGlvbihzdGVuY2lsT3BW
YWx1ZSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5tX3N0ZW5jaWxPcE5hbWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wuU1RFTkNJTF9GQUlMOgorICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBnbC5TVEVOQ0lMX0JBQ0tfRkFJTDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2wuc3RlbmNpbE9wU2VwYXJhdGUodGhpcy5tX3N0ZW5jaWxPcEZh
Y2UsIHN0ZW5jaWxPcFZhbHVlLCBnbC5LRUVQLCBnbC5LRUVQKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wu
U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGds
LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLnN0ZW5jaWxPcFNlcGFyYXRlKHRoaXMubV9zdGVuY2lsT3BGYWNlLCBnbC5LRUVQ
LCBzdGVuY2lsT3BWYWx1ZSwgZ2wuS0VFUCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGdsLlNURU5DSUxfUEFT
U19ERVBUSF9QQVNTOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5TVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5z
dGVuY2lsT3BTZXBhcmF0ZSh0aGlzLm1fc3RlbmNpbE9wRmFjZSwgZ2wuS0VFUCwgZ2wuS0VFUCwg
c3RlbmNpbE9wVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgbm90IGhhcHBlbicpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
Y3JpcHRpb24KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3Rz
LlN0ZW5jaWxGdW5jVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAg
ICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLlN0ZW5jaWxGdW5jVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBp
Q2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLlN0ZW5jaWxGdW5jVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbEZ1bmNUZXN0Q2FzZTsKKworICAgICAgICBlczNmSW50
ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsRnVuY1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5TVEVOQ0lMX0ZVTkMsIGdsLkFMV0FZUykpOworCisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3RlbmNpbGZ1bmNWYWx1ZXMgPSBbZ2wuTkVW
RVIsIGdsLkFMV0FZUywgZ2wuTEVTUywgZ2wuTEVRVUFMLCBnbC5FUVVBTCwgZ2wuR0VRVUFMLCBn
bC5HUkVBVEVSLCBnbC5OT1RFUVVBTF07CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBzdGVuY2lsZnVuY1ZhbHVlcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnbC5zdGVuY2lsRnVuYyhzdGVuY2lsZnVuY1ZhbHVlc1tuZHhdLCAwLCAw
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5TVEVOQ0lMX0ZVTkMsIHN0ZW5jaWxmdW5jVmFsdWVzW25keF0pKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5TVEVO
Q0lMX0JBQ0tfRlVOQywgc3RlbmNpbGZ1bmNWYWx1ZXNbbmR4XSkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVu
Y2lsRnVuY1Rlc3RDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAvLyBbZGFnXSByZXNldCBzdGVuY2lsRnVuYyB0byBBTFdBWVMKKyAgICAgICAgICAg
ICAgICBnbC5zdGVuY2lsRnVuYyhnbC5BTFdBWVMsIDAsIDApOworICAgICAgICB9OworCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2Vz
M2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKiBAcGFyYW0ge251
bWJlcn0gc3RlbmNpbEZ1bmNOYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVuY2ls
RnVuY0ZhY2UKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3Rz
LlN0ZW5jaWxGdW5jU2VwYXJhdGVUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9u
LCBzdGVuY2lsRnVuY05hbWUsIHN0ZW5jaWxGdW5jRmFjZSkgeworICAgICAgICAgICAgICAgIGVz
M2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fc3RlbmNpbEZ1bmNOYW1l
ID0gc3RlbmNpbEZ1bmNOYW1lOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLm1fc3RlbmNpbEZ1bmNGYWNlID0gc3RlbmNpbEZ1bmNGYWNlOworICAgICAgICB9Owor
CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxGdW5jU2VwYXJhdGVU
ZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJv
dG90eXBlKTsKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbEZ1bmNT
ZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlN0ZW5jaWxGdW5jU2VwYXJhdGVUZXN0Q2FzZTsKKworICAgICAgICBlczNmSW50
ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsRnVuY1NlcGFyYXRlVGVzdENhc2UucHJvdG90eXBl
LnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRl
UXVlcnkudmVyaWZ5KHRoaXMubV9zdGVuY2lsRnVuY05hbWUsIGdsLkFMV0FZUykpOworCisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3RlbmNpbGZ1bmNW
YWx1ZXMgPSBbZ2wuTkVWRVIsIGdsLkFMV0FZUywgZ2wuTEVTUywgZ2wuTEVRVUFMLCBnbC5FUVVB
TCwgZ2wuR0VRVUFMLCBnbC5HUkVBVEVSLCBnbC5OT1RFUVVBTF07CisKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBzdGVuY2lsZnVuY1ZhbHVlcy5sZW5ndGg7ICsrbmR4
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnbC5zdGVuY2lsRnVuY1NlcGFyYXRlKHRoaXMu
bV9zdGVuY2lsRnVuY0ZhY2UsIHN0ZW5jaWxmdW5jVmFsdWVzW25keF0sIDAsIDApOworCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMu
bV9zdGVuY2lsRnVuY05hbWUsIHN0ZW5jaWxmdW5jVmFsdWVzW25keF0pKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
U3RlbmNpbEZ1bmNTZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAvLyBbZGFnXSByZXNldCB0aGUgc3RlbmNpbCBmdW5jCisgICAg
ICAgICAgICAgICAgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0aGlzLm1fc3RlbmNpbEZ1bmNGYWNl
LCBnbC5BTFdBWVMsIDAsIDApOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9
CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGVzdFRhcmdldE5h
bWUKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5j
aWxNYXNrVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGVzdFRhcmdldE5h
bWUpIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFt
ZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX3Rlc3RUYXJnZXROYW1lID0gdGVzdFRhcmdldE5hbWU7CisgICAgICAgIH07CisK
KyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE1hc2tUZXN0Q2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsK
KyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE1hc2tUZXN0Q2FzZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2ls
TWFza1Rlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5j
aWxNYXNrVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgc3RlbmNpbEJpdHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFt
ZXRlcihnbC5TVEVOQ0lMX0JJVFMpKTsKKworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3Rlc3RUYXJnZXROYW1lLCBzdGVuY2lsQml0cykpOwor
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgc3RlbmNpbEJpdCA9IDA7IHN0ZW5jaWxCaXQgPCBz
dGVuY2lsQml0czsgKytzdGVuY2lsQml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1hc2sgPSAxIDw8IHN0ZW5jaWxCaXQ7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdsLnN0ZW5jaWxGdW5jKGdsLkFMV0FZUywgMCwgbWFzayk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhp
cy5tX3Rlc3RUYXJnZXROYW1lLCBtYXNrKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4
dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKiBA
cGFyYW0ge251bWJlcn0gdGVzdFRhcmdldE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9
IHN0ZW5jaWxGdW5jVGFyZ2V0RmFjZQorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE1hc2tTZXBhcmF0ZVRlc3RDYXNlID0gZnVuY3Rpb24obmFt
ZSwgZGVzY3JpcHRpb24sIHRlc3RUYXJnZXROYW1lLCBzdGVuY2lsRnVuY1RhcmdldEZhY2UpIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX3Rlc3RUYXJnZXROYW1lID0gdGVzdFRhcmdldE5hbWU7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9zdGVuY2lsRnVuY1RhcmdldEZhY2UgPSBzdGVuY2ls
RnVuY1RhcmdldEZhY2U7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuU3RlbmNpbE1hc2tTZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsTWFza1NlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE1hc2tTZXBhcmF0
ZVRlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxN
YXNrU2VwYXJhdGVUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHZhciBzdGVuY2lsQml0cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0
UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykpOworCisgICAgICAgICAgICAgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUsIHN0ZW5jaWxCaXRz
KSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBzdGVuY2lsQml0ID0gMDsgc3RlbmNpbEJp
dCA8IHN0ZW5jaWxCaXRzOyArK3N0ZW5jaWxCaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFzayA9IDEgPDwgc3RlbmNpbEJpdDsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0aGlzLm1fc3RlbmNp
bEZ1bmNUYXJnZXRGYWNlLCBnbC5BTFdBWVMsIDAsIG1hc2spOworCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90ZXN0VGFyZ2V0
TmFtZSwgbWFzaykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAv
KioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNmQXBp
Q2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9
IHRlc3RUYXJnZXROYW1lCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5TdGVuY2lsV3JpdGVNYXNrVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbiwgdGVzdFRhcmdldE5hbWUpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5tX3Rlc3RUYXJnZXROYW1lID0gdGVzdFRhcmdldE5hbWU7CisgICAgICAgICAg
ICAgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBn
bCk7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3Rl
bmNpbFdyaXRlTWFza1Rlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNh
c2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0
cy5TdGVuY2lsV3JpdGVNYXNrVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZklu
dGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbFdyaXRlTWFza1Rlc3RDYXNlOworCisgICAgICAg
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxXcml0ZU1hc2tUZXN0Q2FzZS5wcm90
b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBzdGVuY2lsQml0
cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklU
UykpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgc3RlbmNpbEJpdCA9IDA7IHN0ZW5jaWxC
aXQgPCBzdGVuY2lsQml0czsgKytzdGVuY2lsQml0KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hc2sgPSAxIDw8IHN0ZW5jaWxCaXQ7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdsLnN0ZW5jaWxNYXNrKG1hc2spOworCisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90ZXN0
VGFyZ2V0TmFtZSwgbWFzaykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtl
czNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHRlc3RUYXJnZXROYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVuY2ls
VGFyZ2V0RmFjZQorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVz
dHMuU3RlbmNpbFdyaXRlTWFza1NlcGFyYXRlVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbiwgdGVzdFRhcmdldE5hbWUsIHN0ZW5jaWxUYXJnZXRGYWNlKSB7CisgICAgICAgICAg
ICAgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBn
bCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV90ZXN0VGFy
Z2V0TmFtZSA9IHRlc3RUYXJnZXROYW1lOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLm1fc3RlbmNpbFRhcmdldEZhY2UgPSBzdGVuY2lsVGFyZ2V0RmFjZTsKKyAg
ICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsV3Jp
dGVNYXNrU2VwYXJhdGVUZXN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlD
YXNlLkFwaUNhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVz
dHMuU3RlbmNpbFdyaXRlTWFza1NlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbFdyaXRlTWFza1NlcGFyYXRlVGVz
dENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbFdyaXRl
TWFza1NlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgc3RlbmNpbEJpdHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdl
dFBhcmFtZXRlcihnbC5TVEVOQ0lMX0JJVFMpKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFy
IHN0ZW5jaWxCaXQgPSAwOyBzdGVuY2lsQml0IDwgc3RlbmNpbEJpdHM7ICsrc3RlbmNpbEJpdCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXNr
ID0gMSA8PCBzdGVuY2lsQml0OworCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5zdGVuY2ls
TWFza1NlcGFyYXRlKHRoaXMubV9zdGVuY2lsVGFyZ2V0RmFjZSwgbWFzayk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3Rl
c3RUYXJnZXROYW1lLCBtYXNrKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9OworCisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMg
e2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKiBAcGFyYW0g
e251bWJlcn0gdGVzdFRhcmdldE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRp
YWxWYWx1ZQorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
UGl4ZWxTdG9yZVRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHRlc3RUYXJn
ZXROYW1lLCBpbml0aWFsVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlD
YXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3Rlc3RUYXJnZXROYW1lID0gdGVzdFRhcmdldE5h
bWU7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9pbml0aWFs
VmFsdWUgPSBpbml0aWFsVmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuUGl4ZWxTdG9yZVRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0
YXRlUXVlcnlUZXN0cy5QaXhlbFN0b3JlVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuUGl4ZWxTdG9yZVRlc3RDYXNlOworCisgICAgICAg
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlBpeGVsU3RvcmVUZXN0Q2FzZS5wcm90b3R5cGUu
dGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20u
UmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAg
ICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90ZXN0
VGFyZ2V0TmFtZSwgdGhpcy5tX2luaXRpYWxWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1JdGVyYXRpb25zID0gMTIwOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZmVyZW5jZVZhbHVlID0g
cm5kLmdldEludCgwLCA2NDAwMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLnBpeGVs
U3RvcmVpKHRoaXMubV90ZXN0VGFyZ2V0TmFtZSwgcmVmZXJlbmNlVmFsdWUpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90
ZXN0VGFyZ2V0TmFtZSwgcmVmZXJlbmNlVmFsdWUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAg
KiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0ZXN0VGFyZ2V0TmFtZQorICAgICAgICAgKi8KKyAgICAgICAg
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuUGl4ZWxTdG9yZUFsaWduVGVzdENhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGVzdFRhcmdldE5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3Rlc3RUYXJnZXRO
YW1lID0gdGVzdFRhcmdldE5hbWU7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuUGl4ZWxTdG9yZUFsaWduVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzLlBpeGVsU3RvcmVBbGlnblRlc3RDYXNlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlBpeGVsU3RvcmVBbGlnblRlc3RD
YXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlBpeGVsU3RvcmVBbGln
blRlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUsIDQp
KTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGFs
aWdubWVudHMgPSBbMSwgMiwgNCwgOF07CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBhbGlnbm1lbnRzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmZXJlbmNlVmFsdWUgPSBhbGlnbm1l
bnRzW25keF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKHRoaXMu
bV90ZXN0VGFyZ2V0TmFtZSwgcmVmZXJlbmNlVmFsdWUpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMubV90ZXN0VGFyZ2V0TmFt
ZSwgcmVmZXJlbmNlVmFsdWUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAg
ICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7
ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB0ZXN0VGFyZ2V0TmFtZQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlh
bFZhbHVlCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5C
bGVuZEZ1bmNUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0ZXN0VGFyZ2V0
TmFtZSkgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBu
YW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fdGVzdFRhcmdldE5hbWUgPSB0ZXN0VGFyZ2V0TmFtZTsKKyAgICAgICAgfTsK
KworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNUZXN0Q2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsK
KyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5jVGVzdENhc2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5j
VGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5j
VGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBibGVuZEZ1bmNWYWx1ZXMgPSBbCisgICAg
ICAgICAgICAgICAgICAgICAgICBnbC5aRVJPLCBnbC5PTkUsIGdsLlNSQ19DT0xPUiwgZ2wuT05F
X01JTlVTX1NSQ19DT0xPUiwgZ2wuRFNUX0NPTE9SLCBnbC5PTkVfTUlOVVNfRFNUX0NPTE9SLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2wuU1JDX0FMUEhBLCBnbC5PTkVfTUlOVVNfU1JDX0FM
UEhBLCBnbC5EU1RfQUxQSEEsIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsIGdsLkNPTlNUQU5UX0NP
TE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
LCBnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZ2wuU1JDX0FMUEhBX1NBVFVSQVRFCisgICAgICAgICAgICAgICAg
XTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGJsZW5kRnVuY1Zh
bHVlcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHJlZmVyZW5jZVZhbHVlID0gYmxlbmRGdW5jVmFsdWVzW25keF07CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QmxlbmRGdW5jKHJlZmVyZW5jZVZhbHVl
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUsIHJlZmVyZW5jZVZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgfX07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSAge251bWJlcn0gZnVu
YworICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRG
dW5jVGVzdENhc2UucHJvdG90eXBlLnNldEJsZW5kRnVuYyA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV90ZXN0VGFyZ2V0TmFtZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBnbC5CTEVORF9TUkNfUkdCOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBnbC5CTEVORF9TUkNfQUxQSEE6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsLmJsZW5kRnVuYyhmdW5jLCBnbC5aRVJPKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wuQkxF
TkRfRFNUX1JHQjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wuQkxFTkRfRFNUX0FM
UEhBOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5ibGVuZEZ1bmMoZ2wuWkVS
TywgZnVuYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJs
ZW5kRnVuY1Rlc3RDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBnbC5ibGVuZEZ1bmMoZ2wuT05FLCBnbC5aRVJPKTsKKyAgICAgICAgfTsKKworICAg
ICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtl
czNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNUZXN0Q2FzZX0KKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0
aW9uCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0ZXN0VGFyZ2V0TmFtZQorICAgICAgICAg
KiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbFZhbHVlCisgICAgICAgICAqLworICAgICAgICBlczNm
SW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNTZXBhcmF0ZVRlc3RDYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24sIHRlc3RUYXJnZXROYW1lKSB7CisgICAgICAgICAgICAgICAg
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5jVGVzdENhc2UuY2FsbCh0aGlzLCBu
YW1lLCBkZXNjcmlwdGlvbiwgdGVzdFRhcmdldE5hbWUpOworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGVzdFRhcmdldE5hbWUgPSB0ZXN0VGFyZ2V0TmFtZTsK
KyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1
bmNTZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5jVGVzdENhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMz
ZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRGdW5jU2VwYXJhdGVUZXN0Q2FzZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNTZXBh
cmF0ZVRlc3RDYXNlOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gIHtudW1iZXJ9
IGZ1bmMKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJs
ZW5kRnVuY1NlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlLnNldEJsZW5kRnVuYyA9IGZ1bmN0aW9u
KGZ1bmMpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV90ZXN0VGFyZ2V0TmFtZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBnbC5CTEVORF9TUkNfUkdCOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5ibGVuZEZ1bmNTZXBhcmF0ZShmdW5jLCBnbC5a
RVJPLCBnbC5aRVJPLCBnbC5aRVJPKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2wuQkxFTkRfRFNUX1JHQjoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wu
WkVSTywgZnVuYywgZ2wuWkVSTywgZ2wuWkVSTyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGdsLkJMRU5EX1NS
Q19BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuYmxlbmRGdW5jU2Vw
YXJhdGUoZ2wuWkVSTywgZ2wuWkVSTywgZnVuYywgZ2wuWkVSTyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGds
LkJMRU5EX0RTVF9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuYmxl
bmRGdW5jU2VwYXJhdGUoZ2wuWkVSTywgZ2wuWkVSTywgZ2wuWkVSTywgZnVuYyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ3Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJsZW5kRnVuY1NlcGFyYXRlVGVz
dENhc2UucHJvdG90eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGds
LmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORSwgZ2wuWkVSTywgZ2wuT05FLCBnbC5aRVJPKTsKKyAg
ICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAg
ICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHRlc3RUYXJnZXROYW1lCisgICAgICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBpbml0aWFsVmFsdWUKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3Rh
dGVRdWVyeVRlc3RzLkJsZW5kRXF1YXRpb25UZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2Ny
aXB0aW9uLCB0ZXN0VGFyZ2V0TmFtZSwgaW5pdGlhbFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cisg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3Rlc3RUYXJnZXROYW1lID0gdGVz
dFRhcmdldE5hbWU7CisgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2luaXRp
YWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5CbGVuZEVxdWF0aW9uVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzLkJsZW5kRXF1YXRpb25UZXN0Q2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEVxdWF0aW9uVGVzdENhc2U7
CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRFcXVhdGlvblRlc3RD
YXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5j
aGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdFRhcmdldE5hbWUsIHRoaXMubV9p
bml0aWFsVmFsdWUpKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIGJsZW5kRnVuY1ZhbHVlcyA9IFtnbC5GVU5DX0FERCwgZ2wuRlVOQ19TVUJUUkFD
VCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNULCBnbC5NSU4sIGdsLk1BWF07CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBibGVuZEZ1bmNWYWx1ZXMubGVuZ3RoOyAr
K25keCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciByZWZlcmVuY2VWYWx1ZSA9IGJsZW5kRnVuY1ZhbHVlc1tuZHhdOworCisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnNldEJsZW5kRXF1YXRpb24ocmVmZXJlbmNlVmFsdWUpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KHRoaXMu
bV90ZXN0VGFyZ2V0TmFtZSwgcmVmZXJlbmNlVmFsdWUpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSAge251bWJlcn0gZXF1
YXRpb24KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJs
ZW5kRXF1YXRpb25UZXN0Q2FzZS5wcm90b3R5cGUuc2V0QmxlbmRFcXVhdGlvbiA9IGZ1bmN0aW9u
KGVxdWF0aW9uKSB7CisgICAgICAgICAgICAgICAgZ2wuYmxlbmRFcXVhdGlvbihlcXVhdGlvbik7
CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRF
cXVhdGlvblRlc3RDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBnbC5ibGVuZEVxdWF0aW9uKHRoaXMubV9pbml0aWFsVmFsdWUpOworICAgICAgICB9
OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4
dGVuZHMge2VzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJsZW5kRXF1YXRpb25UZXN0Q2FzZX0K
KyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0ZXN0VGFyZ2V0TmFt
ZQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbFZhbHVlCisgICAgICAgICAqLwor
ICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEVxdWF0aW9uU2VwYXJhdGVU
ZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0ZXN0VGFyZ2V0TmFtZSwgaW5p
dGlhbFZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
QmxlbmRFcXVhdGlvblRlc3RDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHRlc3RU
YXJnZXROYW1lLCBpbml0aWFsVmFsdWUpOworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMubV90ZXN0VGFyZ2V0TmFtZSA9IHRlc3RUYXJnZXROYW1lOworICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMubV9pbml0aWFsVmFsdWUgPSBpbml0aWFsVmFsdWU7CisgICAg
ICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRFcXVhdGlv
blNlcGFyYXRlVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmSW50ZWdlclN0
YXRlUXVlcnlUZXN0cy5CbGVuZEVxdWF0aW9uVGVzdENhc2UucHJvdG90eXBlKTsKKyAgICAgICAg
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRFcXVhdGlvblNlcGFyYXRlVGVzdENhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQmxlbmRF
cXVhdGlvblNlcGFyYXRlVGVzdENhc2U7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJh
bSAge251bWJlcn0gZXF1YXRpb24KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3Rh
dGVRdWVyeVRlc3RzLkJsZW5kRXF1YXRpb25TZXBhcmF0ZVRlc3RDYXNlLnByb3RvdHlwZS5zZXRC
bGVuZEVxdWF0aW9uID0gZnVuY3Rpb24oZXF1YXRpb24pIHsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKHRoaXMubV90ZXN0VGFyZ2V0TmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBnbC5CTEVORF9FUVVBVElPTl9SR0I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShlcXVhdGlvbiwgZ2wuRlVOQ19BREQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBnbC5CTEVORF9FUVVBVElPTl9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGdsLkZVTkNfQURELCBlcXVhdGlvbik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAg
ICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAg
ICAgKiBAcGFyYW0ge251bWJlcn0gdGVzdFRhcmdldE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtu
dW1iZXJ9IG1pblZhbHVlCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5JbXBsZW1lbnRhdGlvbkFycmF5VGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbiwgdGVzdFRhcmdldE5hbWUsIG1pblZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXMz
ZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGVzdFRhcmdldE5hbWUg
PSB0ZXN0VGFyZ2V0TmFtZTsKKyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMubV9taW5WYWx1ZSA9IG1pblZhbHVlOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkltcGxlbWVudGF0aW9uQXJyYXlUZXN0Q2FzZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZBcGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsKKyAgICAg
ICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuSW1wbGVtZW50YXRpb25BcnJheVRlc3RDYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkltcGxl
bWVudGF0aW9uQXJyYXlUZXN0Q2FzZTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5JbXBsZW1lbnRhdGlvbkFycmF5VGVzdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0
aWwuZW5hYmxlQ29tcHJlc3NlZFRleHR1cmVFVEMoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoJ1NraXBwaW5nIEVUQzIgdGV4dHVyZSBmb3JtYXQgdGVzdHM6IG5vIHN1cHBvcnQg
Zm9yIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMnKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgcXVl
cnlSZXN1bHQgPSAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIChnbC5nZXRQYXJhbWV0ZXIo
dGhpcy5tX3Rlc3RUYXJnZXROYW1lKSk7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LmNvbXBhcmUocXVlcnlSZXN1bHQubGVuZ3RoLCB0aGlzLm1fbWluVmFsdWUpKTsK
KworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHRleHR1
cmVGb3JtYXRzID0gWworICAgICAgICAgICAgICAgICAgICAgICAgZ2wuQ09NUFJFU1NFRF9SMTFf
RUFDLCBnbC5DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDLCBnbC5DT01QUkVTU0VEX1JHMTFfRUFD
LCBnbC5DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgZ2wuQ09NUFJFU1NFRF9SR0I4X0VUQzIs
IGdsLkNPTVBSRVNTRURfU1JHQjhfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIGdsLkNPTVBSRVNTRURfU1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCBnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQworICAgICAgICAgICAgICAgIF07
CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0ZXh0dXJlRm9ybWF0
cy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGZvcm1hdCA9IHRleHR1cmVGb3JtYXRzW25keF07CisgICAgICAgICAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0luQXJyYXkgPSBxdWVyeVJl
c3VsdC5pbmRleE9mKGZvcm1hdCkgIT09IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LmNvbXBhcmUoaXNJbkFycmF5LCB0cnVlKSk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0
cy5DdXJyZW50UHJvZ3JhbUJpbmRpbmdUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuQ3VycmVudFByb2dyYW1CaW5kaW5nVGVzdENhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRQcm9ncmFtQmluZGluZ1Rlc3RDYXNlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRQ
cm9ncmFtQmluZGluZ1Rlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLkN1cnJlbnRQcm9ncmFtQmluZGluZ1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShn
bC5DVVJSRU5UX1BST0dSQU0sIG51bGwpKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xTaGFkZXJ9ICovIHZhciBzaGFkZXJWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRF
WF9TSEFERVIpOworICAgICAgICAgICAgICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJWZXJ0LCB0
ZXN0VmVydFNvdXJjZSk7CisgICAgICAgICAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJW
ZXJ0KTsKKyAgICAgICAgICAgICAgICB2YXIgY29tcGlsZVN0YXR1cyA9IC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gKGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJWZXJ0LCBnbC5DT01QSUxFX1NU
QVRVUykpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS5jb21wYXJl
KGNvbXBpbGVTdGF0dXMsIHRydWUpKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2Vi
R0xTaGFkZXJ9ICovIHZhciBzaGFkZXJGcmFnID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5U
X1NIQURFUik7CisgICAgICAgICAgICAgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlckZyYWcsIHRl
c3RGcmFnU291cmNlKTsKKyAgICAgICAgICAgICAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZy
YWcpOworICAgICAgICAgICAgICAgIGNvbXBpbGVTdGF0dXMgPSAvKiogQHR5cGUge2Jvb2xlYW59
ICovIChnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyRnJhZywgZ2wuQ09NUElMRV9TVEFUVVMp
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkuY29tcGFyZShjb21w
aWxlU3RhdHVzLCB0cnVlKSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJv
Z3JhbX0gKi8gdmFyIHNoYWRlclByb2cgPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgICAg
ICAgICAgZ2wuYXR0YWNoU2hhZGVyKHNoYWRlclByb2csIHNoYWRlclZlcnQpOworICAgICAgICAg
ICAgICAgIGdsLmF0dGFjaFNoYWRlcihzaGFkZXJQcm9nLCBzaGFkZXJGcmFnKTsKKyAgICAgICAg
ICAgICAgICBnbC5saW5rUHJvZ3JhbShzaGFkZXJQcm9nKTsKKyAgICAgICAgICAgICAgICB2YXIg
bGlua1N0YXR1cyA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0
ZXIoc2hhZGVyUHJvZywgZ2wuTElOS19TVEFUVVMpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNo
ZWNrKGdsc1N0YXRlUXVlcnkuY29tcGFyZShsaW5rU3RhdHVzLCB0cnVlKSk7CisKKyAgICAgICAg
ICAgICAgICBnbC51c2VQcm9ncmFtKHNoYWRlclByb2cpOworCisgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5DVVJSRU5UX1BST0dSQU0sIHNoYWRlclBy
b2cpKTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJWZXJ0KTsKKyAg
ICAgICAgICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisgICAgICAgICAgICAg
ICAgZ2wuZGVsZXRlUHJvZ3JhbShzaGFkZXJQcm9nKTsKKworICAgICAgICAgICAgICAgIHRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuQ1VSUkVOVF9QUk9HUkFNLCBzaGFkZXJQcm9n
KSk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuQ1VSUkVOVF9QUk9HUkFNLCBu
dWxsKSk7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0
aW9uCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5WZXJ0
ZXhBcnJheUJpbmRpbmdUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2Ny
aXB0aW9uLCBnbCk7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuVmVydGV4QXJyYXlCaW5kaW5nVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3Rh
dGVRdWVyeVRlc3RzLlZlcnRleEFycmF5QmluZGluZ1Rlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEFycmF5QmluZGluZ1Rlc3RD
YXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEFycmF5Qmlu
ZGluZ1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5WRVJURVhfQVJSQVlfQklORElO
RywgbnVsbCkpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFZlcnRleEFycmF5
T2JqZWN0fSAqLyB2YXIgdmVydGV4QXJyYXlPYmplY3QgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgp
OworCisgICAgICAgICAgICAgICAgZ2wuYmluZFZlcnRleEFycmF5KHZlcnRleEFycmF5T2JqZWN0
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlZF
UlRFWF9BUlJBWV9CSU5ESU5HLCB2ZXJ0ZXhBcnJheU9iamVjdCkpOworCisgICAgICAgICAgICAg
ICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmVydGV4QXJyYXlPYmplY3QpOworICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuVkVSVEVYX0FSUkFZX0JJTkRJ
TkcsIG51bGwpKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
Y3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlckJpbmRpbmdOYW1lCisg
ICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXJUeXBlCisgICAgICAgICAqLworICAgICAg
ICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CdWZmZXJCaW5kaW5nVGVzdENhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgYnVmZmVyQmluZGluZ05hbWUsIGJ1ZmZlclR5cGUpIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fYnVm
ZmVyQmluZGluZ05hbWUgPSBidWZmZXJCaW5kaW5nTmFtZTsKKyAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB0aGlzLm1fYnVmZmVyVHlwZSA9IGJ1ZmZlclR5cGU7CisgICAgICAgIH07CisK
KyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQnVmZmVyQmluZGluZ1Rlc3RDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUp
OworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CdWZmZXJCaW5kaW5nVGVzdENh
c2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQnVm
ZmVyQmluZGluZ1Rlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3Rz
LkJ1ZmZlckJpbmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX2J1ZmZl
ckJpbmRpbmdOYW1lLCBudWxsKSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdM
QnVmZmVyfSAqLyB2YXIgYnVmZmVyT2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kQnVmZmVyKHRoaXMubV9idWZmZXJUeXBlLCBidWZmZXJPYmplY3Qp
OworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5t
X2J1ZmZlckJpbmRpbmdOYW1lLCBidWZmZXJPYmplY3QpKTsKKworICAgICAgICAgICAgICAgIGds
LmRlbGV0ZUJ1ZmZlcihidWZmZXJPYmplY3QpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX2J1ZmZlckJpbmRpbmdOYW1lLCBudWxsKSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAg
ICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLkVsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmdUZXN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUpIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgJ0dM
X0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcnLCBnbCk7CisgICAgICAgIH07CisKKyAgICAg
ICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuRWxlbWVudEFycmF5QnVmZmVyQmluZGluZ1Rl
c3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90
b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5FbGVtZW50QXJyYXlC
dWZmZXJCaW5kaW5nVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuRWxlbWVudEFycmF5QnVmZmVyQmluZGluZ1Rlc3RDYXNlOworCisgICAg
ICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkVsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmdU
ZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8v
IFRlc3Qgd2l0aCBkZWZhdWx0IFZBTworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdEZWZhdWx0VkFPOiBUZXN0IHdpdGggZGVmYXVsdCBWQU8nKTsKKworICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVJfQklORElORywgbnVsbCkpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTEJ1
ZmZlcn0gKi8gdmFyIGJ1ZmZlck9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworCisgICAgICAg
ICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmZmVyT2Jq
ZWN0KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGds
LkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcsIGJ1ZmZlck9iamVjdCkpOworCisgICAgICAg
ICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlck9iamVjdCk7CisgICAgICAgICAgICAgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9C
SU5ESU5HLCBudWxsKSk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHdpdGggbXVsdGlwbGUg
VkFPcworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdXaXRoVkFPOiBUZXN0
IHdpdGggVkFPJyk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMVmVy
dGV4QXJyYXlPYmplY3Q+fSAqLyB2YXIgdmFvcyA9IFtdOworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8V2ViR0xCdWZmZXI+fSAqLyB2YXIgYnVmZmVycyA9IFtdOworCisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhb3NbbmR4XSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBidWZmZXJzW25keF0gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpbml0aWFsCisgICAgICAgICAgICAg
ICAgZ2wuYmluZFZlcnRleEFycmF5KHZhb3NbMF0pOworICAgICAgICAgICAgICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORywg
bnVsbCkpOworCisgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgc2V0dGluZworICAgICAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcnNbMF0pOwor
ICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVJfQklORElORywgYnVmZmVyc1swXSkpOworCisgICAgICAgICAgICAgICAg
Ly8gaW5pdGlhbCBvZiB2YW8gMgorICAgICAgICAgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2
YW9zWzFdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcsIG51bGwpKTsKKworICAgICAgICAgICAg
ICAgIC8vIGFmdGVyIHNldHRpbmcgdG8gMgorICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcnNbMV0pOworICAgICAgICAgICAgICAgIHRo
aXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklO
RElORywgYnVmZmVyc1sxXSkpOworCisgICAgICAgICAgICAgICAgLy8gdmFvIDEgc3RpbGwgaGFz
IGJ1ZmZlciAxIGJvdW5kPworICAgICAgICAgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW9z
WzBdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGds
LkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcsIGJ1ZmZlcnNbMF0pKTsKKworICAgICAgICAg
ICAgICAgIC8vIGRlbGV0aW5nIGNsZWFycyBmcm9tIGJvdW5kIHZhb3MgLi4uCisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspCisgICAgICAgICAgICAgICAg
ICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmZmVyc1tuZHhdKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJ
TkRJTkcsIG51bGwpKTsKKworICAgICAgICAgICAgICAgIC8vIC4uLiBidXQgZG9lcyBub3QgZnJv
bSBub24tYm91bmQgdmFvcz8KKyAgICAgICAgICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFv
c1sxXSk7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HLCBidWZmZXJzWzFdKSk7CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgrKykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhb3NbbmR4XSk7CisgICAgICAgIH07CisK
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5k
cyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAg
ICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsQ2xlYXJWYWx1ZVRlc3RDYXNl
ID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBlczNmQXBp
Q2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAg
fTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsQ2xlYXJWYWx1
ZVRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5w
cm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsQ2xl
YXJWYWx1ZVRlc3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlN0ZW5jaWxDbGVhclZhbHVlVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbENsZWFyVmFsdWVUZXN0Q2FzZS5wcm90b3R5cGUudGVz
dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVy
eS52ZXJpZnkoZ2wuU1RFTkNJTF9DTEVBUl9WQUxVRSwgMCkpOworCisgICAgICAgICAgICAgICAg
dmFyIHN0ZW5jaWxCaXRzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIo
Z2wuU1RFTkNJTF9CSVRTKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBzdGVuY2lsQml0
ID0gMDsgc3RlbmNpbEJpdCA8IHN0ZW5jaWxCaXRzOyArK3N0ZW5jaWxCaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmID0gMSA8PCBzdGVu
Y2lsQml0OworCisgICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhclN0ZW5jaWwocmVmKTsg
Ly8gbWFzayBzaG91bGQgbm90IGFmZmVjdCB0aGUgUkVGCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuU1RFTkNJTF9DTEVBUl9WQUxV
RSwgcmVmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIC8qKgor
ICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNl
LkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuQWN0aXZlVGV4dHVyZVRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwo
dGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNm
SW50ZWdlclN0YXRlUXVlcnlUZXN0cy5BY3RpdmVUZXh0dXJlVGVzdENhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkFjdGl2ZVRleHR1cmVUZXN0Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5BY3RpdmVUZXh0dXJlVGVz
dENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQWN0aXZlVGV4dHVy
ZVRlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5BQ1RJVkVfVEVYVFVSRSwgZ2wuVEVY
VFVSRTApKTsKKworICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlVW5pdHMgPSAvKiogQHR5cGUg
e251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFH
RV9VTklUUykpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGV4
dHVyZVVuaXRzOyArK25keCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ2wuYWN0aXZlVGV4
dHVyZShnbC5URVhUVVJFMCArIG5keCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuQUNUSVZFX1RFWFRVUkUsIGdsLlRFWFRVUkUw
ICsgbmR4KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkFjdGl2ZVRleHR1cmVUZXN0Q2FzZS5wcm90b3R5cGUuZGVp
bml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gW2RhZ10gcmVzZXQgdGhlIHN0
YXRlIG9mIHRoZSBjb250ZXh0CisgICAgICAgICAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wu
VEVYVFVSRTApOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNj
cmlwdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
UmVuZGVyYnVmZmVyQmluZGluZ1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24p
IHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5SZW5kZXJidWZmZXJCaW5kaW5nVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzLlJlbmRlcmJ1ZmZlckJpbmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5SZW5kZXJidWZmZXJCaW5k
aW5nVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuUmVuZGVy
YnVmZmVyQmluZGluZ1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5SRU5ERVJCVUZG
RVJfQklORElORywgbnVsbCkpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFJl
bmRlcmJ1ZmZlcn0gKi8gdmFyIHJlbmRlckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
OworCisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIs
IHJlbmRlckJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVl
cnkudmVyaWZ5KGdsLlJFTkRFUkJVRkZFUl9CSU5ESU5HLCByZW5kZXJCdWZmZXIpKTsKKworICAg
ICAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJCdWZmZXIpOworICAgICAg
ICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuUkVOREVSQlVGRkVS
X0JJTkRJTkcsIG51bGwpKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQor
ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzY3JpcHRpb24KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVy
eVRlc3RzLlNhbXBsZXJPYmplY3RCaW5kaW5nVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbikgeworICAgICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJPYmplY3RCaW5kaW5nVGVzdENhc2UucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAg
IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJPYmplY3RCaW5kaW5nVGVzdENhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxl
ck9iamVjdEJpbmRpbmdUZXN0Q2FzZTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5TYW1wbGVyT2JqZWN0QmluZGluZ1Rlc3RDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShn
bC5TQU1QTEVSX0JJTkRJTkcsIG51bGwpKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdTaW5nbGVVbml0OiBTaW5nbGUgdW5pdCcpOworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7V2ViR0xTYW1wbGVyfSAqLyB2YXIgc2FtcGxlciA9IGdsLmNyZWF0ZVNhbXBsZXIo
KTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRTYW1wbGVyKDAsIHNhbXBsZXIpOworCisgICAg
ICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5TQU1QTEVSX0JJ
TkRJTkcsIHNhbXBsZXIpKTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVNhbXBsZXIoc2Ft
cGxlcik7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShn
bC5TQU1QTEVSX0JJTkRJTkcsIG51bGwpKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdNdWx0aXBsZVVuaXRzOiBNdWx0aXBsZSB1bml0cycpOworCisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtXZWJHTFNhbXBsZXJ9ICovIHZhciBzYW1wbGVyQSA9IGdsLmNyZWF0
ZVNhbXBsZXIoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMU2FtcGxlcn0gKi8g
dmFyIHNhbXBsZXJCID0gZ2wuY3JlYXRlU2FtcGxlcigpOworCisgICAgICAgICAgICAgICAgZ2wu
YmluZFNhbXBsZXIoMSwgc2FtcGxlckEpOworICAgICAgICAgICAgICAgIGdsLmJpbmRTYW1wbGVy
KDIsIHNhbXBsZXJCKTsKKworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVy
eS52ZXJpZnkoZ2wuU0FNUExFUl9CSU5ESU5HLCBudWxsKSk7CisKKyAgICAgICAgICAgICAgICBn
bC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNr
KGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlNBTVBMRVJfQklORElORywgc2FtcGxlckEpKTsKKwor
ICAgICAgICAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTIpOworICAgICAgICAg
ICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuU0FNUExFUl9CSU5ESU5H
LCBzYW1wbGVyQikpOworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2FtcGxlcihzYW1wbGVy
Qik7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2FtcGxlcihzYW1wbGVyQSk7CisgICAgICAg
IH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlck9iamVjdEJp
bmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7CisgICAgICAgIH07CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMz
ZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0ZXN0QmluZGluZ05hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRleHR1cmVU
eXBlCisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UZXh0
dXJlQmluZGluZ1Rlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHRlc3RCaW5k
aW5nTmFtZSwgdGV4dHVyZVR5cGUpIHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlD
YXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGVzdEJpbmRpbmdOYW1lID0gdGVzdEJpbmRpbmdOYW1lOwor
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV90ZXh0dXJlVHlwZSA9IHRleHR1
cmVUeXBlOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3Rz
LlRleHR1cmVCaW5kaW5nVGVzdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmQXBp
Q2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLlRleHR1cmVCaW5kaW5nVGVzdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZklu
dGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVGV4dHVyZUJpbmRpbmdUZXN0Q2FzZTsKKworICAgICAgICBl
czNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5UZXh0dXJlQmluZGluZ1Rlc3RDYXNlLnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0
ZVF1ZXJ5LnZlcmlmeSh0aGlzLm1fdGVzdEJpbmRpbmdOYW1lLCBudWxsKSk7CisKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSh0aGlzLm1fdGV4
dHVyZVR5cGUsIHRleHR1cmUpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS52ZXJpZnkodGhpcy5tX3Rlc3RCaW5kaW5nTmFtZSwgdGV4dHVyZSkpOworCisgICAgICAg
ICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKworICAgICAgICAgICAgICAgIHRo
aXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkodGhpcy5tX3Rlc3RCaW5kaW5nTmFtZSwgbnVs
bCkpOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
bgorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuRnJhbWVC
dWZmZXJCaW5kaW5nVGVzdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAg
ICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLkZyYW1lQnVmZmVyQmluZGluZ1Rlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
ZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5GcmFtZUJ1ZmZlckJpbmRpbmdUZXN0Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5GcmFtZUJ1ZmZlckJpbmRpbmdUZXN0Q2Fz
ZTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5GcmFtZUJ1ZmZlckJpbmRp
bmdUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRFJBV19GUkFNRUJVRkZFUl9CSU5E
SU5HLCBudWxsKSk7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeShnbC5GUkFNRUJVRkZFUl9CSU5ESU5HLCBudWxsKSk7CisgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcs
IG51bGwpKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0g
Ki8gdmFyIGZyYW1lYnVmZmVySWQgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworCisgICAgICAg
ICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcklk
KTsKKworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wu
RFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HLCAgICAgICAgZnJhbWVidWZmZXJJZCkpOworICAgICAg
ICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRlJBTUVCVUZGRVJf
QklORElORywgICAgICAgIGZyYW1lYnVmZmVySWQpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNo
ZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlJFQURfRlJBTUVCVUZGRVJfQklORElORywgICAg
ICAgIGZyYW1lYnVmZmVySWQpKTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5KGdsLkRSQVdfRlJBTUVCVUZGRVJfQklORElORywgbnVsbCkpOwor
ICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRlJBTUVC
VUZGRVJfQklORElORywgbnVsbCkpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3Rh
dGVRdWVyeS52ZXJpZnkoZ2wuUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HLCBudWxsKSk7CisKKyAg
ICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZnJh
bWVidWZmZXJJZCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5KGdsLkRSQVdfRlJBTUVCVUZGRVJfQklORElORywgbnVsbCkpOworICAgICAgICAgICAg
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuRlJBTUVCVUZGRVJfQklORElO
RywgbnVsbCkpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJp
ZnkoZ2wuUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAgICAgICAgZnJhbWVidWZmZXJJZCkpOwor
CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIs
IGZyYW1lYnVmZmVySWQpOworCisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1
ZXJ5LnZlcmlmeShnbC5EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcsICAgICAgICBmcmFtZWJ1ZmZl
cklkKSk7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShn
bC5GUkFNRUJVRkZFUl9CSU5ESU5HLCAgICAgICAgZnJhbWVidWZmZXJJZCkpOworICAgICAgICAg
ICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuUkVBRF9GUkFNRUJVRkZF
Ul9CSU5ESU5HLCAgICAgICAgZnJhbWVidWZmZXJJZCkpOworCisgICAgICAgICAgICAgICAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJJZCk7CisKKyAgICAgICAgICAgICAgICB0aGlz
LmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkRSQVdfRlJBTUVCVUZGRVJfQklORElORywg
bnVsbCkpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnko
Z2wuRlJBTUVCVUZGRVJfQklORElORywgbnVsbCkpOworICAgICAgICAgICAgICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wuUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HLCBudWxs
KSk7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAgICAgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisgICAgICAgICAqLworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5JbXBsZW1l
bnRhdGlvbkNvbG9yUmVhZFRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsK
KyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5JbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50
ZWdlclN0YXRlUXVlcnlUZXN0cy5JbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFRlc3RDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkltcGxlbWVudGF0
aW9uQ29sb3JSZWFkVGVzdENhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVz
dHMuSW1wbGVtZW50YXRpb25Db2xvclJlYWRUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IGRlZmF1bHRDb2xvclR5cGVzID0gWworICAgICAgICAgICAgICAgICAgICAgICAgZ2wuVU5TSUdO
RURfQllURSwgZ2wuQllURSwgZ2wuVU5TSUdORURfU0hPUlQsIGdsLlNIT1JULAorICAgICAgICAg
ICAgICAgICAgICAgICAgZ2wuVU5TSUdORURfSU5ULCBnbC5JTlQsIGdsLkhBTEZfRkxPQVQsIGds
LkZMT0FULCBnbC5VTlNJR05FRF9TSE9SVF81XzZfNSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIGds
LlVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYKKyAgICAgICAgICAgICAgICBdOworCisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZGVmYXVsdENvbG9y
Rm9ybWF0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkEsIGdsLlJHQkFfSU5U
RUdFUiwgZ2wuUkdCLCBnbC5SR0JfSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGds
LlJHLCBnbC5SR19JTlRFR0VSLCBnbC5SRUQsIGdsLlJFRF9JTlRFR0VSCisgICAgICAgICAgICAg
ICAgXTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IHZhbGlkQ29sb3JUeXBlcyA9IFtdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIHZhbGlkQ29sb3JGb3JtYXRzID0gW107CisKKyAgICAgICAgICAgICAg
ICAvLyBEZWZpbmVkIGJ5IHRoZSBzcGVjCisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBkZWZhdWx0Q29sb3JUeXBlcy5sZW5ndGg7ICsrbmR4KQorICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRDb2xvclR5cGVzLnB1c2goZGVmYXVsdENvbG9yVHlwZXNbbmR4XSk7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgZGVmYXVsdENvbG9yRm9y
bWF0cy5sZW5ndGg7ICsrbmR4KQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRDb2xvckZv
cm1hdHMucHVzaChkZWZhdWx0Q29sb3JGb3JtYXRzW25keF0pOworCisgICAgICAgICAgICAgICAg
Ly8gRXh0ZW5zaW9ucworCisgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMubV9jb250ZXh0Lmdl
dENvbnRleHRJbmZvKCkuaXNFeHRlbnNpb25TdXBwb3J0ZWQoImdsLkVYVF90ZXh0dXJlX2Zvcm1h
dF9CR1JBODg4OCIpIHx8CisgICAgICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm1fY29udGV4
dC5nZXRDb250ZXh0SW5mbygpLmlzRXh0ZW5zaW9uU3VwcG9ydGVkKCJnbC5BUFBMRV90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIpKQorICAgICAgICAgICAgICAgIC8vICAgICAgICAgdmFsaWRDb2xv
ckZvcm1hdHMucHVzaChnbC5CR1JBKTsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAg
ICAgIC8vIGlmICh0aGlzLm1fY29udGV4dC5nZXRDb250ZXh0SW5mbygpLmlzRXh0ZW5zaW9uU3Vw
cG9ydGVkKCJnbC5FWFRfcmVhZF9mb3JtYXRfYmdyYSIpKSB7CisgICAgICAgICAgICAgICAgLy8g
ICAgICAgICB2YWxpZENvbG9yRm9ybWF0cy5wdXNoKGdsLkJHUkEpOworICAgICAgICAgICAgICAg
IC8vICAgICAgICAgdmFsaWRDb2xvclR5cGVzLnB1c2goZ2wuVU5TSUdORURfU0hPUlRfNF80XzRf
NF9SRVYpOworICAgICAgICAgICAgICAgIC8vICAgICAgICAgdmFsaWRDb2xvclR5cGVzLnB1c2go
Z2wuVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVYpOworICAgICAgICAgICAgICAgIC8vIH0KKyAg
ICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLm1fY29udGV4dC5n
ZXRDb250ZXh0SW5mbygpLmlzRXh0ZW5zaW9uU3VwcG9ydGVkKCJnbC5JTUdfcmVhZF9mb3JtYXQi
KSkgeworICAgICAgICAgICAgICAgIC8vICAgICAgICAgdmFsaWRDb2xvckZvcm1hdHMucHVzaChn
bC5CR1JBKTsKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgIHZhbGlkQ29sb3JUeXBlcy5wdXNo
KGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWKTsKKyAgICAgICAgICAgICAgICAvLyB9Cisg
ICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5tX2NvbnRleHQu
Z2V0Q29udGV4dEluZm8oKS5pc0V4dGVuc2lvblN1cHBvcnRlZCgiZ2wuTlZfc1JHQl9mb3JtYXRz
IikpIHsKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgIHZhbGlkQ29sb3JGb3JtYXRzLnB1c2go
Z2wuU0xVTUlOQU5DRV9OVik7CisgICAgICAgICAgICAgICAgLy8gICAgICAgICB2YWxpZENvbG9y
Rm9ybWF0cy5wdXNoKGdsLlNMVU1JTkFOQ0VfQUxQSEFfTlYpOworICAgICAgICAgICAgICAgIC8v
IH0KKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLm1fY29u
dGV4dC5nZXRDb250ZXh0SW5mbygpLmlzRXh0ZW5zaW9uU3VwcG9ydGVkKCJnbC5OVl9iZ3IiKSkg
eworICAgICAgICAgICAgICAgIC8vICAgICAgICAgdmFsaWRDb2xvckZvcm1hdHMucHVzaChnbC5C
R1JfTlYpOworICAgICAgICAgICAgICAgIC8vIH0KKworICAgICAgICAgICAgICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlBbnlPZihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFE
X1RZUEUsIHZhbGlkQ29sb3JUeXBlcykpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnlBbnlPZihnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1B
VCwgdmFsaWRDb2xvckZvcm1hdHMpKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAg
ICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlD
YXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZJbnRlZ2VyU3Rh
dGVRdWVyeVRlc3RzLlJlYWRCdWZmZXJDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24p
IHsKKyAgICAgICAgICAgICAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGdsKTsKKyAgICAgICAgfTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5SZWFkQnVmZmVyQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZB
cGlDYXNlLkFwaUNhc2UucHJvdG90eXBlKTsKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuUmVhZEJ1ZmZlckNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJT
dGF0ZVF1ZXJ5VGVzdHMuUmVhZEJ1ZmZlckNhc2U7CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuUmVhZEJ1ZmZlckNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2YWxpZElu
aXRpYWxWYWx1ZXMgPSBbZ2wuQkFDSywgZ2wuTk9ORV07CisgICAgICAgICAgICAgICAgdGhpcy5j
aGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUFueU9mKGdsLlJFQURfQlVGRkVSLCB2YWxpZEluaXRp
YWxWYWx1ZXMpKTsKKworICAgICAgICAgICAgICAgIGdsLnJlYWRCdWZmZXIoZ2wuTk9ORSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5SRUFEX0JV
RkZFUiwgZ2wuTk9ORSkpOworCisgICAgICAgICAgICAgICAgZ2wucmVhZEJ1ZmZlcihnbC5CQUNL
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLlJF
QURfQlVGRkVSLCBnbC5CQUNLKSk7CisKKyAgICAgICAgICAgICAgICAvLyB0ZXN0IGdsLlJFQURf
QlVGRkVSIHdpdGggZnJhbWVidWZmZXJzCisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dl
YkdMRnJhbWVidWZmZXJ9ICovIHZhciBmcmFtZWJ1ZmZlcklkID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xSZW5kZXJidWZmZXJ9ICov
IHZhciByZW5kZXJidWZmZXJfaWQgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgICAg
ICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZm
ZXJfaWQpOworCisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5E
RVJCVUZGRVIsIGdsLlJHQkE4LCAxMjgsIDEyOCk7CisKKyAgICAgICAgICAgICAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXJJZCk7CisKKyAgICAg
ICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJfaWQp
OworCisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5S
RUFEX0JVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDApKTsKKworICAgICAgICAgICAgICAgIGds
LmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVySWQpOworICAgICAgICAgICAgICAgIGdsLmRl
bGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJfaWQpOworCisgICAgICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeShnbC5SRUFEX0JVRkZFUiwgZ2wuQkFDSykpOwor
ICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
ICAgICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgICAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAg
ICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuRHJhd0J1ZmZlckNh
c2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgICAgIGVzM2ZB
cGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgICAg
ICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkRyYXdCdWZmZXJDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUp
OworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5EcmF3QnVmZmVyQ2FzZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5EcmF3QnVmZmVy
Q2FzZTsKKworICAgICAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5EcmF3QnVmZmVyQ2Fz
ZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZhbGlkSW5pdGlhbFZhbHVlcyA9IFtnbC5CQUNLLCBn
bC5OT05FXTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5
QW55T2YoZ2wuRFJBV19CVUZGRVIwLCB2YWxpZEluaXRpYWxWYWx1ZXMpKTsKKworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnVmcyA9IGdsLk5PTkU7CisgICAgICAg
ICAgICAgICAgZ2wuZHJhd0J1ZmZlcnMoW2J1ZnNdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNo
ZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkRSQVdfQlVGRkVSMCwgZ2wuTk9ORSkpOworCisg
ICAgICAgICAgICAgICAgYnVmcyA9IGdsLkJBQ0s7CisgICAgICAgICAgICAgICAgZ2wuZHJhd0J1
ZmZlcnMoW2J1ZnNdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5KGdsLkRSQVdfQlVGRkVSMCwgZ2wuQkFDSykpOworCisgICAgICAgICAgICAgICAgLy8g
dGVzdCBnbC5EUkFXX0JVRkZFUiB3aXRoIGZyYW1lYnVmZmVycworCisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZnJhbWVidWZmZXJJZCA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFdl
YkdMUmVuZGVyYnVmZmVyPn0gKi8gdmFyIHJlbmRlcmJ1ZmZlcl9pZHMgPSBbXTsKKworICAgICAg
ICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDI7IG5keCsrKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyYnVmZmVyX2lkc1tuZHhdID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCk7CisKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVyX2lkc1swXSk7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCAxMjgsIDEyOCk7CisKKyAgICAgICAg
ICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVy
X2lkc1sxXSk7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5E
RVJCVUZGRVIsIGdsLlJHQkE4LCAxMjgsIDEyOCk7CisKKyAgICAgICAgICAgICAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXJJZCk7CisKKyAgICAg
ICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXJfaWRz
WzBdKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5EUkFX
X0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMSwgZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXJfaWRzWzFdKTsKKworICAgICAgICAgICAgICAgIC8vIG9ubHkgdGhlIGluaXRpYWwg
c3RhdGUgdGhlIGRyYXcgYnVmZmVyIGZvciBmcmFnbWVudCBjb2xvciB6ZXJvIGlzIGRlZmluZWQK
KyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5KGdsLkRSQVdf
QlVGRkVSMCwgZ2wuQ09MT1JfQVRUQUNITUVOVDApKTsKKworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGJ1ZlRhcmdldHMgPSBbZ2wuTk9ORSwgZ2wuQ09M
T1JfQVRUQUNITUVOVDFdOworICAgICAgICAgICAgICAgIGdsLmRyYXdCdWZmZXJzKGJ1ZlRhcmdl
dHMpOworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnkoZ2wu
RFJBV19CVUZGRVIwLCBnbC5OT05FKSk7CisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeShnbC5EUkFXX0JVRkZFUjEsIGdsLkNPTE9SX0FUVEFDSE1FTlQxKSk7
CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcklkKTsK
KyAgICAgICAgICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyX2lkc1sw
XSk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcl9p
ZHNbMV0pOworCisgICAgICAgICAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eShnbC5EUkFXX0JVRkZFUjAsIGdsLkJBQ0spKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBJ
bnRlZ2VyNjQKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAg
KiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXROYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBtaW5WYWx1ZQorICAgICAgICAgKi8KKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVz
dHMuQ29uc3RhbnRNaW5pbXVtVmFsdWU2NFRlc3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24sIHRhcmdldE5hbWUsIG1pblZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXMzZkFwaUNh
c2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV90YXJnZXROYW1lID0gdGFyZ2V0TmFt
ZTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX21pblZhbHVl
ID0gbWluVmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuQ29uc3RhbnRNaW5pbXVtVmFsdWU2NFRlc3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoZXMzZkFwaUNhc2UuQXBpQ2FzZS5wcm90b3R5cGUpOworICAgICAgICBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5Db25zdGFudE1pbmltdW1WYWx1ZTY0VGVzdENhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQ29uc3RhbnRNaW5pbXVt
VmFsdWU2NFRlc3RDYXNlOworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkNv
bnN0YW50TWluaW11bVZhbHVlNjRUZXN0Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlHcmVhdGVy
T3JFcXVhbCh0aGlzLm1fdGFyZ2V0TmFtZSwgdGhpcy5tX21pblZhbHVlKSwgJ0ZhaWwnKTsKKyAg
ICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAg
ICAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICAgICAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHRhcmdldE1heFVuaWZvcm1CbG9ja3NOYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB0YXJnZXRNYXhVbmlmb3JtQ29tcG9uZW50c05hbWUKKyAgICAgICAgICovCisgICAgICAgIGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLk1heENvbWJpbmVkU3RhZ2VVbmlmb3JtQ29tcG9uZW50
c0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGFyZ2V0TmFtZSwgdGFyZ2V0TWF4
VW5pZm9ybUJsb2Nrc05hbWUsIHRhcmdldE1heFVuaWZvcm1Db21wb25lbnRzTmFtZSkgeworICAg
ICAgICAgICAgICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1f
dGFyZ2V0TmFtZSA9IHRhcmdldE5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubV90YXJnZXRNYXhVbmlmb3JtQmxvY2tzTmFtZSA9IHRhcmdldE1heFVuaWZv
cm1CbG9ja3NOYW1lOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
Lm1fdGFyZ2V0TWF4VW5pZm9ybUNvbXBvbmVudHNOYW1lID0gdGFyZ2V0TWF4VW5pZm9ybUNvbXBv
bmVudHNOYW1lOworICAgICAgICB9OworCisgICAgICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLk1heENvbWJpbmVkU3RhZ2VVbmlmb3JtQ29tcG9uZW50c0Nhc2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShlczNmQXBpQ2FzZS5BcGlDYXNlLnByb3RvdHlwZSk7CisgICAgICAgIGVzM2ZJ
bnRlZ2VyU3RhdGVRdWVyeVRlc3RzLk1heENvbWJpbmVkU3RhZ2VVbmlmb3JtQ29tcG9uZW50c0Nh
c2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuTWF4
Q29tYmluZWRTdGFnZVVuaWZvcm1Db21wb25lbnRzQ2FzZTsKKworICAgICAgICBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5NYXhDb21iaW5lZFN0YWdlVW5pZm9ybUNvbXBvbmVudHNDYXNlLnBy
b3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIHVuaWZvcm1C
bG9ja1NpemUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhf
VU5JRk9STV9CTE9DS19TSVpFKSk7CisgICAgICAgICAgICAgICAgdmFyIG1heFVuaWZvcm1CbG9j
a3MgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcih0aGlzLm1fdGFyZ2V0
TWF4VW5pZm9ybUJsb2Nrc05hbWUpKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4VW5pZm9ybUNv
bXBvbmVudHMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcih0aGlzLm1f
dGFyZ2V0TWF4VW5pZm9ybUNvbXBvbmVudHNOYW1lKSk7CisKKyAgICAgICAgICAgICAgICAvLyBN
QVhfc3RhZ2VfVU5JRk9STV9CTE9DS1MgAiogTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSAvIDQgKyBN
QVhfc3RhZ2VfVU5JRk9STV9DT01QT05FTlRTCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtaW5Db21iaW5lZFVuaWZvcm1Db21wb25lbnRzID0gbWF4VW5pZm9ybUJs
b2NrcyAqIHVuaWZvcm1CbG9ja1NpemUgLyA0ICsgbWF4VW5pZm9ybUNvbXBvbmVudHM7CisKKyAg
ICAgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5R3JlYXRlck9yRXF1
YWwodGhpcy5tX3RhcmdldE5hbWUsIG1pbkNvbWJpbmVkVW5pZm9ybUNvbXBvbmVudHMpKTsKKyAg
ICAgICAgfTsKKworICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgKi8KKyAgICBlczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5JbnRlZ2VyU3RhdGVRdWVyeVRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRl
c3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2ludGVnZXJzJywgJ0ludGVnZXIgVmFsdWVzJyk7
CisgICAgfTsKKworICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVz
dHMuSW50ZWdlclN0YXRlUXVlcnlUZXN0czsKKworICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBAc3RydWN0CisgICAgICAg
ICAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24K
KyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0TmFtZQorICAgICAgICAg
ICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAgICAgICAgICAgICAqLworICAg
ICAgICAgICAgICAgIHZhciBMaW1pdGVkU3RhdGVJbnRlZ2VyID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24sIHRhcmdldE5hbWUsIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy50
YXJnZXROYW1lID0gdGFyZ2V0TmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8TGltaXRlZFN0YXRlSW50ZWdlcj59ICov
IHZhciBpbXBsZW1lbnRhdGlvbk1pbkxpbWl0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdzdWJwaXhlbF9iaXRzJywgJ1NVQlBJWEVMX0JJVFMg
aGFzIG1pbmltdW0gdmFsdWUgb2YgNCcsIGdsLlNVQlBJWEVMX0JJVFMsIDQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF8zZF90ZXh0dXJlX3Np
emUnLCAnTUFYXzNEX1RFWFRVUkVfU0laRSBoYXMgbWluaW11bSB2YWx1ZSBvZiAyNTYnLCBnbC5N
QVhfM0RfVEVYVFVSRV9TSVpFLCAyNTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExp
bWl0ZWRTdGF0ZUludGVnZXIoJ21heF90ZXh0dXJlX3NpemUnLCAnTUFYX1RFWFRVUkVfU0laRSBo
YXMgbWluaW11bSB2YWx1ZSBvZiAyMDQ4JywgZ2wuTUFYX1RFWFRVUkVfU0laRSwgMjA0OCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X2FycmF5
X3RleHR1cmVfbGF5ZXJzJywgJ01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyBoYXMgbWluaW11bSB2
YWx1ZSBvZiAyNTYnLCBnbC5NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMsIDI1NiksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X2N1YmVfbWFwX3Rl
eHR1cmVfc2l6ZScsICdNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFIGhhcyBtaW5pbXVtIHZhbHVl
IG9mIDIwNDgnLCBnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAyMDQ4KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfcmVuZGVyYnVmZmVy
X3NpemUnLCAnTUFYX1JFTkRFUkJVRkZFUl9TSVpFIGhhcyBtaW5pbXVtIHZhbHVlIG9mIDIwNDgn
LCBnbC5NQVhfUkVOREVSQlVGRkVSX1NJWkUsIDIwNDgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF9kcmF3X2J1ZmZlcnMnLCAnTUFYX0RSQVdf
QlVGRkVSUyBoYXMgbWluaW11bSB2YWx1ZSBvZiA0JywgZ2wuTUFYX0RSQVdfQlVGRkVSUywgNCks
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X2Nv
bG9yX2F0dGFjaG1lbnRzJywgJ01BWF9DT0xPUl9BVFRBQ0hNRU5UUyBoYXMgbWluaW11bSB2YWx1
ZSBvZiA0JywgZ2wuTUFYX0NPTE9SX0FUVEFDSE1FTlRTLCA0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfZWxlbWVudHNfaW5kaWNlcycsICdN
QVhfRUxFTUVOVFNfSU5ESUNFUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAwJywgZ2wuTUFYX0VMRU1F
TlRTX0lORElDRVMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0
ZUludGVnZXIoJ21heF9lbGVtZW50c192ZXJ0aWNlcycsICdNQVhfRUxFTUVOVFNfVkVSVElDRVMg
aGFzIG1pbmltdW0gdmFsdWUgb2YgMCcsIGdsLk1BWF9FTEVNRU5UU19WRVJUSUNFUywgMCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X3ZlcnRl
eF9hdHRyaWJzJywgJ01BWF9WRVJURVhfQVRUUklCUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAxNics
IGdsLk1BWF9WRVJURVhfQVRUUklCUywgMTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzJywgJ01B
WF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTIGhhcyBtaW5pbXVtIHZhbHVlIG9mIDEwMjQnLCBn
bC5NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgMTAyNCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X3ZlcnRleF91bmlmb3JtX3ZlY3Rv
cnMnLCAnTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgaGFzIG1pbmltdW0gdmFsdWUgb2YgMjU2
JywgZ2wuTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsIDI1NiksCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X3ZlcnRleF91bmlmb3JtX2Jsb2Nr
cycsICdNQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIGhhcyBtaW5pbXVtIHZhbHVlIG9mIDEyJywg
Z2wuTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUywgMTIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF92ZXJ0ZXhfb3V0cHV0X2NvbXBvbmVudHMn
LCAnTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyBoYXMgbWluaW11bSB2YWx1ZSBvZiA2NCcs
IGdsLk1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMsIDY0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2Vf
dW5pdHMnLCAnTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTIGhhcyBtaW5pbXVtIHZhbHVl
IG9mIDE2JywgZ2wuTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAxNiksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X2ZyYWdtZW50X3Vu
aWZvcm1fY29tcG9uZW50cycsICdNQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTIGhhcyBt
aW5pbXVtIHZhbHVlIG9mIDg5NicsIGdsLk1BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMs
IDg5NiksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcign
bWF4X2ZyYWdtZW50X3VuaWZvcm1fdmVjdG9ycycsICdNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTIGhhcyBtaW5pbXVtIHZhbHVlIG9mIDIyNCcsIGdsLk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZF
Q1RPUlMsIDIyNCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50
ZWdlcignbWF4X2ZyYWdtZW50X3VuaWZvcm1fYmxvY2tzJywgJ01BWF9GUkFHTUVOVF9VTklGT1JN
X0JMT0NLUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAxMicsIGdsLk1BWF9GUkFHTUVOVF9VTklGT1JN
X0JMT0NLUywgMTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0ZUlu
dGVnZXIoJ21heF9mcmFnbWVudF9pbnB1dF9jb21wb25lbnRzJywgJ01BWF9GUkFHTUVOVF9JTlBV
VF9DT01QT05FTlRTIGhhcyBtaW5pbXVtIHZhbHVlIG9mIDYwJywgZ2wuTUFYX0ZSQUdNRU5UX0lO
UFVUX0NPTVBPTkVOVFMsIDYwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVk
U3RhdGVJbnRlZ2VyKCdtYXhfdGV4dHVyZV9pbWFnZV91bml0cycsICdNQVhfVEVYVFVSRV9JTUFH
RV9VTklUUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAxNicsIGdsLk1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTLCAxNiksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdl
cignbWF4X3Byb2dyYW1fdGV4ZWxfb2Zmc2V0JywgJ01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVCBo
YXMgbWluaW11bSB2YWx1ZSBvZiA3JywgZ2wuTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VULCA3KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfdW5p
Zm9ybV9idWZmZXJfYmluZGluZ3MnLCAnTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTIGhhcyBt
aW5pbXVtIHZhbHVlIG9mIDI0JywgZ2wuTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTLCAyNCks
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X2Nv
bWJpbmVkX3VuaWZvcm1fYmxvY2tzJywgJ01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUyBoYXMg
bWluaW11bSB2YWx1ZSBvZiAyNCcsIGdsLk1BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUywgMjQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF92
YXJ5aW5nX2NvbXBvbmVudHMnLCAnTUFYX1ZBUllJTkdfQ09NUE9ORU5UUyBoYXMgbWluaW11bSB2
YWx1ZSBvZiA2MCcsIGdsLk1BWF9WQVJZSU5HX0NPTVBPTkVOVFMsIDYwKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfdmFyeWluZ192ZWN0b3Jz
JywgJ01BWF9WQVJZSU5HX1ZFQ1RPUlMgaGFzIG1pbmltdW0gdmFsdWUgb2YgMTUnLCBnbC5NQVhf
VkFSWUlOR19WRUNUT1JTLCAxNSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRl
ZFN0YXRlSW50ZWdlcignbWF4X2NvbWJpbmVkX3RleHR1cmVfaW1hZ2VfdW5pdHMnLCAnTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgaGFzIG1pbmltdW0gdmFsdWUgb2YgMzInLCBnbC5N
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgMzIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIoJ21heF90cmFuc2Zvcm1fZmVlZGJhY2tfaW50
ZXJsZWF2ZWRfY29tcG9uZW50cycsICdNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVE
X0NPTVBPTkVOVFMgaGFzIG1pbmltdW0gdmFsdWUgb2YgNjQnLCBnbC5NQVhfVFJBTlNGT1JNX0ZF
RURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMsIDY0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyKCdtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX3NlcGFy
YXRlX2F0dHJpYnMnLCAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTIGhh
cyBtaW5pbXVtIHZhbHVlIG9mIDQnLCBnbC5NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRF
X0FUVFJJQlMsIDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0ZUlu
dGVnZXIoJ21heF90cmFuc2Zvcm1fZmVlZGJhY2tfc2VwYXJhdGVfY29tcG9uZW50cycsICdNQVhf
VFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMgaGFzIG1pbmltdW0gdmFsdWUg
b2YgNCcsIGdsLk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUywgNCks
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWF4X3Nh
bXBsZXMnLCAnTUFYX1NBTVBMRVMgaGFzIG1pbmltdW0gdmFsdWUgb2YgNCcsIGdsLk1BWF9TQU1Q
TEVTLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2Vy
KCdyZWRfYml0cycsICdSRURfQklUUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAwJywgZ2wuUkVEX0JJ
VFMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRTdGF0ZUludGVnZXIo
J2dyZWVuX2JpdHMnLCAnR1JFRU5fQklUUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAwJywgZ2wuR1JF
RU5fQklUUywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50
ZWdlcignYmx1ZV9iaXRzJywgJ0JMVUVfQklUUyBoYXMgbWluaW11bSB2YWx1ZSBvZiAwJywgZ2wu
QkxVRV9CSVRTLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJ
bnRlZ2VyKCdhbHBoYV9iaXRzJywgJ0FMUEhBX0JJVFMgaGFzIG1pbmltdW0gdmFsdWUgb2YgMCcs
IGdsLkFMUEhBX0JJVFMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRT
dGF0ZUludGVnZXIoJ2RlcHRoX2JpdHMnLCAnREVQVEhfQklUUyBoYXMgbWluaW11bSB2YWx1ZSBv
ZiAwJywgZ2wuREVQVEhfQklUUywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGlt
aXRlZFN0YXRlSW50ZWdlcignc3RlbmNpbF9iaXRzJywgJ1NURU5DSUxfQklUUyBoYXMgbWluaW11
bSB2YWx1ZSBvZiAwJywgZ2wuU1RFTkNJTF9CSVRTLCAwKQorICAgICAgICAgICAgICAgIF07CisK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PExpbWl0ZWRTdGF0ZUludGVnZXI+fSAq
LyB2YXIgaW1wbGVtZW50YXRpb25NYXhMaW1pdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcignbWluX3Byb2dyYW1fdGV4ZWxfb2Zmc2V0JywgJ01J
Tl9QUk9HUkFNX1RFWEVMX09GRlNFVCBoYXMgbWF4aW11bSB2YWx1ZSBvZiAtOCcsIGdsLk1JTl9Q
Uk9HUkFNX1RFWEVMX09GRlNFVCwgLTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExp
bWl0ZWRTdGF0ZUludGVnZXIoJ3VuaWZvcm1fYnVmZmVyX29mZnNldF9hbGlnbm1lbnQnLCAnVU5J
Rk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCBoYXMgbWluaW11bSB2YWx1ZSBvZiAxJywgZ2wu
VU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCwgMjU2KQorICAgICAgICAgICAgICAgIF07
CisKKyAgICAgICAgICAgICAgICB2YXIgdGVzdEN0eCA9IHRoaXM7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciB0ZXN0TmR4ID0gMDsgdGVzdE5keCA8IGltcGxlbWVudGF0aW9uTWluTGltaXRz
Lmxlbmd0aDsgdGVzdE5keCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRD
aGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuQ29uc3RhbnRNaW5pbXVtVmFsdWVU
ZXN0Q2FzZShpbXBsZW1lbnRhdGlvbk1pbkxpbWl0c1t0ZXN0TmR4XS5uYW1lLCBpbXBsZW1lbnRh
dGlvbk1pbkxpbWl0c1t0ZXN0TmR4XS5kZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb25NaW5MaW1p
dHNbdGVzdE5keF0udGFyZ2V0TmFtZSwgaW1wbGVtZW50YXRpb25NaW5MaW1pdHNbdGVzdE5keF0u
dmFsdWUpKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIHRlc3ROZHggPSAwOyB0ZXN0TmR4
IDwgaW1wbGVtZW50YXRpb25NYXhMaW1pdHMubGVuZ3RoOyB0ZXN0TmR4KyspCisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5Db25zdGFudE1heGltdW1WYWx1ZVRlc3RDYXNlKGltcGxlbWVudGF0aW9uTWF4TGltaXRz
W3Rlc3ROZHhdLm5hbWUsIGltcGxlbWVudGF0aW9uTWF4TGltaXRzW3Rlc3ROZHhdLmRlc2NyaXB0
aW9uLCBpbXBsZW1lbnRhdGlvbk1heExpbWl0c1t0ZXN0TmR4XS50YXJnZXROYW1lLCBpbXBsZW1l
bnRhdGlvbk1heExpbWl0c1t0ZXN0TmR4XS52YWx1ZSkpOworCisgICAgICAgICAgICAgICAgdGVz
dEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlQnVmZmVy
c1Rlc3RDYXNlKCdzYW1wbGVfYnVmZmVycycsICdTQU1QTEVfQlVGRkVSUycpKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5T
YW1wbGVzVGVzdENhc2UoJ3NhbXBsZXMnICwgJ1NBTVBMRVMnKSk7CisgICAgICAgICAgICAgICAg
dGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuSGludFRlc3RD
YXNlKCdnZW5lcmF0ZV9taXBtYXBfaGludCcsICdHRU5FUkFURV9NSVBNQVBfSElOVCcsIGdsLkdF
TkVSQVRFX01JUE1BUF9ISU5UKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChu
ZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuSGludFRlc3RDYXNlKCdmcmFnbWVudF9zaGFk
ZXJfZGVyaXZhdGl2ZV9oaW50JywgJ0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQnLCBn
bC5GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UKSk7CisgICAgICAgICAgICAgICAgdGVz
dEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuRGVwdGhGdW5jVGVz
dENhc2UoJ2RlcHRoX2Z1bmMnLCAnREVQVEhfRlVOQycpKTsKKyAgICAgICAgICAgICAgICB0ZXN0
Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5DdWxsRmFjZVRlc3RD
YXNlKCdjdWxsX2ZhY2VfbW9kZScsICdDVUxMX0ZBQ0VfTU9ERScpKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5Gcm9udEZh
Y2VUZXN0Q2FzZSgnZnJvbnRfZmFjZV9tb2RlJywgJ0ZST05UX0ZBQ0UnKSk7CisgICAgICAgICAg
ICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVmll
d1BvcnRUZXN0Q2FzZSgndmlld3BvcnQnLCAnVklFV1BPUlQnKSk7CisgICAgICAgICAgICAgICAg
dGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2Npc3NvckJv
eFRlc3RDYXNlKCdzY2lzc29yX2JveCcsICdTQ0lTU09SX0JPWCcpKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5NYXhWaWV3
cG9ydERpbXNUZXN0Q2FzZSgnbWF4X3ZpZXdwb3J0X2RpbXMnLCAnTUFYX1ZJRVdQT1JUX0RJTVMn
KSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuU3RlbmNpbFJlZlRlc3RDYXNlKCdzdGVuY2lsX3JlZicsICdTVEVOQ0lMX1JF
RicsIGdsLlNURU5DSUxfUkVGKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChu
ZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbFJlZlRlc3RDYXNlKCdzdGVuY2ls
X2JhY2tfcmVmJywgJ1NURU5DSUxfQkFDS19SRUYnLCBnbC5TVEVOQ0lMX0JBQ0tfUkVGKSk7Cisg
ICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuU3RlbmNpbFJlZlNlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfcmVmX3NlcGFyYXRlJywg
J1NURU5DSUxfUkVGIChzZXBhcmF0ZSknLCBnbC5TVEVOQ0lMX1JFRiwgZ2wuRlJPTlQpKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlU
ZXN0cy5TdGVuY2lsUmVmU2VwYXJhdGVUZXN0Q2FzZSgnc3RlbmNpbF9yZWZfc2VwYXJhdGVfYm90
aCcsICdTVEVOQ0lMX1JFRiAoc2VwYXJhdGUpJywgZ2wuU1RFTkNJTF9SRUYsIGdsLkZST05UX0FO
RF9CQUNLKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbFJlZlNlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfYmFj
a19yZWZfc2VwYXJhdGUnLCAnU1RFTkNJTF9CQUNLX1JFRiAoc2VwYXJhdGUpJywgZ2wuU1RFTkNJ
TF9CQUNLX1JFRiwgZ2wuQkFDSykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQo
bmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxSZWZTZXBhcmF0ZVRlc3RDYXNl
KCdzdGVuY2lsX2JhY2tfcmVmX3NlcGFyYXRlX2JvdGgnLCAnU1RFTkNJTF9CQUNLX1JFRiAoc2Vw
YXJhdGUpJywgZ2wuU1RFTkNJTF9CQUNLX1JFRiwgZ2wuRlJPTlRfQU5EX0JBQ0spKTsKKworICAg
ICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICAg
ICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcm9udERlc2NyaXB0aW9u
CisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGZyb250VGFyZ2V0CisgICAgICAg
ICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGJhY2tEZXNjcmlwdGlvbgorICAgICAgICAgICAg
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiYWNrVGFyZ2V0CisgICAgICAgICAgICAgICAgICovCisg
ICAgICAgICAgICAgICAgIHZhciBOYW1lZFN0ZW5jaWxPcCA9IGZ1bmN0aW9uKG5hbWUsIGZyb250
RGVzY3JpcHRpb24sIGZyb250VGFyZ2V0LCBiYWNrRGVzY3JpcHRpb24sIGJhY2tUYXJnZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5m
cm9udERlc2NyaXB0aW9uID0gZnJvbnREZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuZnJvbnRUYXJnZXQgPSBmcm9udFRhcmdldDsKKyAg
ICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuYmFja0Rlc2NyaXB0
aW9uID0gYmFja0Rlc2NyaXB0aW9uOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5iYWNrVGFyZ2V0ID0gYmFja1RhcmdldDsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxOYW1lZFN0ZW5jaWxPcD59ICov
IHZhciBzdGVuY2lsT3BzID0gWworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE5hbWVkU3Rl
bmNpbE9wKCdmYWlsJywgJ1NURU5DSUxfRkFJTCcsIGdsLlNURU5DSUxfRkFJTCwgJ1NURU5DSUxf
QkFDS19GQUlMJywgZ2wuU1RFTkNJTF9CQUNLX0ZBSUwpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IE5hbWVkU3RlbmNpbE9wKCdkZXB0aF9mYWlsJywgJ1NURU5DSUxfUEFTU19ERVBUSF9G
QUlMJywgZ2wuU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwsICdTVEVOQ0lMX0JBQ0tfUEFTU19ERVBU
SF9GQUlMJywgZ2wuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgTmFtZWRTdGVuY2lsT3AoJ2RlcHRoX3Bhc3MnLCAnU1RFTkNJTF9QQVNT
X0RFUFRIX1BBU1MnLCBnbC5TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUywgJ1NURU5DSUxfQkFDS19Q
QVNTX0RFUFRIX1BBU1MnLCBnbC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTKQorICAgICAg
ICAgICAgICAgIF07CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmR4ID0gMDsgdGVz
dE5keCA8IHN0ZW5jaWxPcHMubGVuZ3RoOyB0ZXN0TmR4KyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0
ZW5jaWxPcFRlc3RDYXNlKCdzdGVuY2lsXycgKyBzdGVuY2lsT3BzW3Rlc3ROZHhdLm5hbWUsIHN0
ZW5jaWxPcHNbdGVzdE5keF0uZnJvbnREZXNjcmlwdGlvbiwgc3RlbmNpbE9wc1t0ZXN0TmR4XS5m
cm9udFRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChu
ZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE9wVGVzdENhc2UoJ3N0ZW5jaWxf
YmFja18nICsgc3RlbmNpbE9wc1t0ZXN0TmR4XS5uYW1lLCBzdGVuY2lsT3BzW3Rlc3ROZHhdLmJh
Y2tEZXNjcmlwdGlvbiwgc3RlbmNpbE9wc1t0ZXN0TmR4XS5iYWNrVGFyZ2V0KSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLlN0ZW5jaWxPcFNlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfJyArIHN0ZW5jaWxP
cHNbdGVzdE5keF0ubmFtZSArICdfc2VwYXJhdGVfYm90aCcsIHN0ZW5jaWxPcHNbdGVzdE5keF0u
ZnJvbnREZXNjcmlwdGlvbiwgc3RlbmNpbE9wc1t0ZXN0TmR4XS5mcm9udFRhcmdldCwgZ2wuRlJP
TlRfQU5EX0JBQ0spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQo
bmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxPcFNlcGFyYXRlVGVzdENhc2Uo
J3N0ZW5jaWxfYmFja18nICsgc3RlbmNpbE9wc1t0ZXN0TmR4XS5uYW1lICsgJ19zZXBhcmF0ZV9i
b3RoJywgc3RlbmNpbE9wc1t0ZXN0TmR4XS5iYWNrRGVzY3JpcHRpb24sIHN0ZW5jaWxPcHNbdGVz
dE5keF0uYmFja1RhcmdldCwgZ2wuRlJPTlRfQU5EX0JBQ0spKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
U3RlbmNpbE9wU2VwYXJhdGVUZXN0Q2FzZSgnc3RlbmNpbF8nICsgc3RlbmNpbE9wc1t0ZXN0TmR4
XS5uYW1lICsgJ19zZXBhcmF0ZScsIHN0ZW5jaWxPcHNbdGVzdE5keF0uZnJvbnREZXNjcmlwdGlv
biwgc3RlbmNpbE9wc1t0ZXN0TmR4XS5mcm9udFRhcmdldCwgZ2wuRlJPTlQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVy
eVRlc3RzLlN0ZW5jaWxPcFNlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfYmFja18nICsgc3RlbmNp
bE9wc1t0ZXN0TmR4XS5uYW1lICsgJ19zZXBhcmF0ZScsIHN0ZW5jaWxPcHNbdGVzdE5keF0uYmFj
a0Rlc2NyaXB0aW9uLCBzdGVuY2lsT3BzW3Rlc3ROZHhdLmJhY2tUYXJnZXQsIGdsLkJBQ0spKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5l
dyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsRnVuY1Rlc3RDYXNlKCdzdGVuY2ls
X2Z1bmMnLCAnU1RFTkNJTF9GVU5DJykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hp
bGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxGdW5jU2VwYXJhdGVUZXN0
Q2FzZSgnc3RlbmNpbF9mdW5jX3NlcGFyYXRlJywgJ1NURU5DSUxfRlVOQyAoc2VwYXJhdGUpJywg
Z2wuU1RFTkNJTF9GVU5DLCBnbC5GUk9OVCkpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRk
Q2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxGdW5jU2VwYXJhdGVU
ZXN0Q2FzZSgnc3RlbmNpbF9mdW5jX3NlcGFyYXRlX2JvdGgnLCAnU1RFTkNJTF9GVU5DIChzZXBh
cmF0ZSknLCBnbC5TVEVOQ0lMX0ZVTkMsIGdsLkZST05UX0FORF9CQUNLKSk7CisgICAgICAgICAg
ICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3Rl
bmNpbEZ1bmNTZXBhcmF0ZVRlc3RDYXNlKCdzdGVuY2lsX2JhY2tfZnVuY19zZXBhcmF0ZScsICdT
VEVOQ0lMX0ZVTkMgKHNlcGFyYXRlKScsIGdsLlNURU5DSUxfQkFDS19GVU5DLCBnbC5CQUNLKSk7
CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuU3RlbmNpbEZ1bmNTZXBhcmF0ZVRlc3RDYXNlKCdzdGVuY2lsX2JhY2tfZnVuY19z
ZXBhcmF0ZV9ib3RoJywgJ1NURU5DSUxfRlVOQyAoc2VwYXJhdGUpJywgZ2wuU1RFTkNJTF9CQUNL
X0ZVTkMsIGdsLkZST05UX0FORF9CQUNLKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRD
aGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNpbE1hc2tUZXN0Q2FzZSgn
c3RlbmNpbF92YWx1ZV9tYXNrJywgJ1NURU5DSUxfVkFMVUVfTUFTSycsIGdsLlNURU5DSUxfVkFM
VUVfTUFTSykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRl
Z2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxNYXNrVGVzdENhc2UoJ3N0ZW5jaWxfYmFja192YWx1
ZV9tYXNrJywgJ1NURU5DSUxfQkFDS19WQUxVRV9NQVNLJywgZ2wuU1RFTkNJTF9CQUNLX1ZBTFVF
X01BU0spKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsTWFza1NlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfdmFs
dWVfbWFza19zZXBhcmF0ZScsICdTVEVOQ0lMX1ZBTFVFX01BU0sgKHNlcGFyYXRlKScsIGdsLlNU
RU5DSUxfVkFMVUVfTUFTSywgZ2wuRlJPTlQpKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFk
ZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsTWFza1NlcGFyYXRl
VGVzdENhc2UoJ3N0ZW5jaWxfdmFsdWVfbWFza19zZXBhcmF0ZV9ib3RoJywgJ1NURU5DSUxfVkFM
VUVfTUFTSyAoc2VwYXJhdGUpJywgZ2wuU1RFTkNJTF9WQUxVRV9NQVNLLCBnbC5GUk9OVF9BTkRf
QkFDSykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2Vy
U3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxNYXNrU2VwYXJhdGVUZXN0Q2FzZSgnc3RlbmNpbF9iYWNr
X3ZhbHVlX21hc2tfc2VwYXJhdGUnLCAnU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgKHNlcGFyYXRl
KScsIGdsLlNURU5DSUxfQkFDS19WQUxVRV9NQVNLLCBnbC5CQUNLKSk7CisgICAgICAgICAgICAg
ICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU3RlbmNp
bE1hc2tTZXBhcmF0ZVRlc3RDYXNlKCdzdGVuY2lsX2JhY2tfdmFsdWVfbWFza19zZXBhcmF0ZV9i
b3RoJywgJ1NURU5DSUxfQkFDS19WQUxVRV9NQVNLIChzZXBhcmF0ZSknLCBnbC5TVEVOQ0lMX0JB
Q0tfVkFMVUVfTUFTSywgZ2wuRlJPTlRfQU5EX0JBQ0spKTsKKyAgICAgICAgICAgICAgICB0ZXN0
Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsV3JpdGVN
YXNrVGVzdENhc2UoJ3N0ZW5jaWxfd3JpdGVtYXNrJywgJ1NURU5DSUxfV1JJVEVNQVNLJywgZ2wu
U1RFTkNJTF9XUklURU1BU0spKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5l
dyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsV3JpdGVNYXNrVGVzdENhc2UoJ3N0
ZW5jaWxfYmFja193cml0ZW1hc2snLCAnU1RFTkNJTF9CQUNLX1dSSVRFTUFTSycsIGdsLlNURU5D
SUxfQkFDS19XUklURU1BU0spKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5l
dyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsV3JpdGVNYXNrU2VwYXJhdGVUZXN0
Q2FzZSgnc3RlbmNpbF93cml0ZW1hc2tfc2VwYXJhdGUnLCAnU1RFTkNJTF9XUklURU1BU0sgKHNl
cGFyYXRlKScsIGdsLlNURU5DSUxfV1JJVEVNQVNLLCBnbC5GUk9OVCkpOworICAgICAgICAgICAg
ICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5j
aWxXcml0ZU1hc2tTZXBhcmF0ZVRlc3RDYXNlKCdzdGVuY2lsX3dyaXRlbWFza19zZXBhcmF0ZV9i
b3RoJywgJ1NURU5DSUxfV1JJVEVNQVNLIChzZXBhcmF0ZSknLCBnbC5TVEVOQ0lMX1dSSVRFTUFT
SywgZ2wuRlJPTlRfQU5EX0JBQ0spKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxk
KG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5TdGVuY2lsV3JpdGVNYXNrU2VwYXJhdGVU
ZXN0Q2FzZSgnc3RlbmNpbF9iYWNrX3dyaXRlbWFza19zZXBhcmF0ZScsICdTVEVOQ0lMX0JBQ0tf
V1JJVEVNQVNLIChzZXBhcmF0ZSknLCBnbC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLLCBnbC5CQUNL
KSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0
ZVF1ZXJ5VGVzdHMuU3RlbmNpbFdyaXRlTWFza1NlcGFyYXRlVGVzdENhc2UoJ3N0ZW5jaWxfYmFj
a193cml0ZW1hc2tfc2VwYXJhdGVfYm90aCcsICdTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLIChzZXBh
cmF0ZSknLCBnbC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLLCBnbC5GUk9OVF9BTkRfQkFDSykpOwor
CisgICAgICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICogQHN0cnVjdAorICAgICAg
ICAgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAgICAgICAgICAg
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsVmFsdWUKKyAgICAgICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgICAgICB2YXIgUGl4ZWxTdG9yZVN0YXRlID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24sIHRhcmdldCwgaW5pdGlhbFZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy50YXJnZXQgPSB0
YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmlu
aXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxQaXhlbFN0b3JlU3RhdGU+fSAqLyB2YXIgcGl4ZWxT
dG9yZVN0YXRlcyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQaXhlbFN0b3JlU3Rh
dGUoJ3VucGFja19pbWFnZV9oZWlnaHQnLCAnVU5QQUNLX0lNQUdFX0hFSUdIVCcsIGdsLlVOUEFD
S19JTUFHRV9IRUlHSFQsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBpeGVsU3Rv
cmVTdGF0ZSgndW5wYWNrX3NraXBfaW1hZ2VzJywgJ1VOUEFDS19TS0lQX0lNQUdFUycsIGdsLlVO
UEFDS19TS0lQX0lNQUdFUywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUGl4ZWxT
dG9yZVN0YXRlKCd1bnBhY2tfcm93X2xlbmd0aCcsICdVTlBBQ0tfUk9XX0xFTkdUSCcsIGdsLlVO
UEFDS19ST1dfTEVOR1RILCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQaXhlbFN0
b3JlU3RhdGUoJ3VucGFja19za2lwX3Jvd3MnLCAnVU5QQUNLX1NLSVBfUk9XUycsIGdsLlVOUEFD
S19TS0lQX1JPV1MsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBpeGVsU3RvcmVT
dGF0ZSgndW5wYWNrX3NraXBfcGl4ZWxzJywgJ1VOUEFDS19TS0lQX1BJWEVMUycsIGdsLlVOUEFD
S19TS0lQX1BJWEVMUywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUGl4ZWxTdG9y
ZVN0YXRlKCdwYWNrX3Jvd19sZW5ndGgnLCAnUEFDS19ST1dfTEVOR1RIJywgZ2wuUEFDS19ST1df
TEVOR1RILCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQaXhlbFN0b3JlU3RhdGUo
J3BhY2tfc2tpcF9yb3dzJywgJ1BBQ0tfU0tJUF9ST1dTJywgZ2wuUEFDS19TS0lQX1JPV1MsIDAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBpeGVsU3RvcmVTdGF0ZSgncGFja19za2lw
X3BpeGVscycsICdQQUNLX1NLSVBfUElYRUxTJywgZ2wuUEFDS19TS0lQX1BJWEVMUywgMCkKKyAg
ICAgICAgICAgICAgICBdOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7
IHRlc3ROZHggPCBwaXhlbFN0b3JlU3RhdGVzLmxlbmd0aDsgdGVzdE5keCsrKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuUGl4ZWxTdG9yZVRlc3RDYXNlKHBpeGVsU3RvcmVTdGF0ZXNbdGVzdE5keF0ubmFtZSwg
cGl4ZWxTdG9yZVN0YXRlc1t0ZXN0TmR4XS5kZXNjcmlwdGlvbiwgcGl4ZWxTdG9yZVN0YXRlc1t0
ZXN0TmR4XS50YXJnZXQsIHBpeGVsU3RvcmVTdGF0ZXNbdGVzdE5keF0uaW5pdGlhbFZhbHVlKSk7
CisKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRl
UXVlcnlUZXN0cy5QaXhlbFN0b3JlQWxpZ25UZXN0Q2FzZSgndW5wYWNrX2FsaWdubWVudCcsICdV
TlBBQ0tfQUxJR05NRU5UJywgZ2wuVU5QQUNLX0FMSUdOTUVOVCkpOworICAgICAgICAgICAgICAg
IHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlBpeGVsU3Rv
cmVBbGlnblRlc3RDYXNlKCdwYWNrX2FsaWdubWVudCcsICdQQUNLX0FMSUdOTUVOVCcsIGdsLlBB
Q0tfQUxJR05NRU5UKSk7CisKKyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAg
KiBAc3RydWN0CisgICAgICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAgICAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFy
Z2V0CisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxWYWx1ZQorICAg
ICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHZhciBCbGVuZENvbG9yU3RhdGUgPSBm
dW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGFyZ2V0LCBpbml0aWFsVmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7Cisg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLmRlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLnRhcmdldCA9IHRhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHRoaXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlOworICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFBpeGVsU3RvcmVTdGF0
ZT59ICovIHZhciBibGVuZENvbG9yU3RhdGVzID0gWworICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IEJsZW5kQ29sb3JTdGF0ZSgnYmxlbmRfc3JjX3JnYicsICdCTEVORF9TUkNfUkdCJywgZ2wu
QkxFTkRfU1JDX1JHQiksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmxlbmRDb2xvclN0
YXRlKCdibGVuZF9zcmNfYWxwaGEnLCAnQkxFTkRfU1JDX0FMUEhBJywgZ2wuQkxFTkRfU1JDX0FM
UEhBKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCbGVuZENvbG9yU3RhdGUoJ2JsZW5k
X2RzdF9yZ2InLCAnQkxFTkRfRFNUX1JHQicsIGdsLkJMRU5EX0RTVF9SR0IpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IEJsZW5kQ29sb3JTdGF0ZSgnYmxlbmRfZHN0X2FscGhhJywgJ0JM
RU5EX0RTVF9BTFBIQScsIGdsLkJMRU5EX0RTVF9BTFBIQSkKKyAgICAgICAgICAgICAgICBdOwor
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBibGVuZENv
bG9yU3RhdGVzLmxlbmd0aDsgdGVzdE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNU
ZXN0Q2FzZShibGVuZENvbG9yU3RhdGVzW3Rlc3ROZHhdLm5hbWUsIGJsZW5kQ29sb3JTdGF0ZXNb
dGVzdE5keF0uZGVzY3JpcHRpb24sIGJsZW5kQ29sb3JTdGF0ZXNbdGVzdE5keF0udGFyZ2V0KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5CbGVuZEZ1bmNTZXBhcmF0ZVRlc3RDYXNlKGJsZW5kQ29sb3JTdGF0
ZXNbdGVzdE5keF0ubmFtZSArICdfc2VwYXJhdGUnLCBibGVuZENvbG9yU3RhdGVzW3Rlc3ROZHhd
LmRlc2NyaXB0aW9uLCBibGVuZENvbG9yU3RhdGVzW3Rlc3ROZHhdLnRhcmdldCkpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgICAqIEBz
dHJ1Y3QKKyAgICAgICAgICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQK
KyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbFZhbHVlCisgICAgICAg
ICAgICAgICAgICovCisgICAgICAgICAgICAgICAgdmFyIEJsZW5kRXF1YXRpb25TdGF0ZSA9IGZ1
bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0YXJnZXQsIGluaXRpYWxWYWx1ZSkgeworICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAg
ICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMudGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5pbml0aWFsVmFsdWUgPSBpbml0aWFsVmFsdWU7CisgICAgICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8UGl4ZWxTdG9yZVN0YXRl
Pn0gKi8gdmFyIGJsZW5kRXF1YXRpb25TdGF0ZXMgPSBbCisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgQmxlbmRFcXVhdGlvblN0YXRlKCdibGVuZF9lcXVhdGlvbl9yZ2InLCAnQkxFTkRfRVFV
QVRJT05fUkdCJywgZ2wuQkxFTkRfRVFVQVRJT05fUkdCLCBnbC5GVU5DX0FERCksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgQmxlbmRFcXVhdGlvblN0YXRlKCdibGVuZF9lcXVhdGlvbl9h
bHBoYScsICdCTEVORF9FUVVBVElPTl9BTFBIQScsIGdsLkJMRU5EX0VRVUFUSU9OX0FMUEhBLCBn
bC5GVU5DX0FERCkKKyAgICAgICAgICAgICAgICBdOworCisgICAgICAgICAgICAgICAgZm9yICh2
YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBibGVuZEVxdWF0aW9uU3RhdGVzLmxlbmd0aDsgdGVz
dE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBl
czNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5CbGVuZEVxdWF0aW9uVGVzdENhc2UoYmxlbmRFcXVh
dGlvblN0YXRlc1t0ZXN0TmR4XS5uYW1lLCBibGVuZEVxdWF0aW9uU3RhdGVzW3Rlc3ROZHhdLmRl
c2NyaXB0aW9uLCBibGVuZEVxdWF0aW9uU3RhdGVzW3Rlc3ROZHhdLnRhcmdldCwgYmxlbmRFcXVh
dGlvblN0YXRlc1t0ZXN0TmR4XS5pbml0aWFsVmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJsZW5k
RXF1YXRpb25TZXBhcmF0ZVRlc3RDYXNlKGJsZW5kRXF1YXRpb25TdGF0ZXNbdGVzdE5keF0ubmFt
ZSArICdfc2VwYXJhdGUnLCBibGVuZEVxdWF0aW9uU3RhdGVzW3Rlc3ROZHhdLmRlc2NyaXB0aW9u
LCBibGVuZEVxdWF0aW9uU3RhdGVzW3Rlc3ROZHhdLnRhcmdldCwgYmxlbmRFcXVhdGlvblN0YXRl
c1t0ZXN0TmR4XS5pbml0aWFsVmFsdWUpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBAc3RydWN0CisgICAgICAgICAgICAgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAg
ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICAgICAgICAgICAgICogQHBh
cmFtIHtudW1iZXJ9IG1pblZhbHVlCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAg
ICAgdmFyIEltcGxlbWVudGF0aW9uQXJyYXlSZXR1cm5pbmdTdGF0ZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2NyaXB0aW9uLCB0YXJnZXQsIG1pblZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy50YXJnZXQgPSB0
YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1p
blZhbHVlID0gbWluVmFsdWU7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7SW1wbGVtZW50YXRpb25BcnJheVJldHVybmluZ1N0YXRlfSAqLyB2YXIgaW1w
bGVtZW50YXRpb25BcnJheVJldHVybmluZ1N0YXRlcyA9IG5ldyBJbXBsZW1lbnRhdGlvbkFycmF5
UmV0dXJuaW5nU3RhdGUoJ2NvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRzJywgJ0NPTVBSRVNTRURf
VEVYVFVSRV9GT1JNQVRTJywgZ2wuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMsIDEwKTsKKwor
ICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVy
eVRlc3RzLkltcGxlbWVudGF0aW9uQXJyYXlUZXN0Q2FzZShpbXBsZW1lbnRhdGlvbkFycmF5UmV0
dXJuaW5nU3RhdGVzLm5hbWUsIGltcGxlbWVudGF0aW9uQXJyYXlSZXR1cm5pbmdTdGF0ZXMuZGVz
Y3JpcHRpb24sIGltcGxlbWVudGF0aW9uQXJyYXlSZXR1cm5pbmdTdGF0ZXMudGFyZ2V0LCBpbXBs
ZW1lbnRhdGlvbkFycmF5UmV0dXJuaW5nU3RhdGVzLm1pblZhbHVlKSk7CisKKyAgICAgICAgICAg
ICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBAc3RydWN0CisgICAgICAgICAgICAgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICAg
ICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICAgICAgICAgICAgICogQHBhcmFt
IHtudW1iZXJ9IHR5cGUKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICB2YXIg
QnVmZmVyQmluZGluZ1N0YXRlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHRhcmdldCwg
dHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRo
aXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OworICAgICAg
ICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMudHlwZSA9IHR5cGU7
CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
QnVmZmVyQmluZGluZ1N0YXRlPn0gKi8gdmFyIGJ1ZmZlckJpbmRpbmdTdGF0ZXMgPSBbCisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgQnVmZmVyQmluZGluZ1N0YXRlKCdhcnJheV9idWZmZXJf
YmluZGluZycsICdBUlJBWV9CVUZGRVJfQklORElORycsIGdsLkFSUkFZX0JVRkZFUl9CSU5ESU5H
LCBnbC5BUlJBWV9CVUZGRVIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ1ZmZlckJp
bmRpbmdTdGF0ZSgndW5pZm9ybV9idWZmZXJfYmluZGluZycsICdVTklGT1JNX0JVRkZFUl9CSU5E
SU5HJywgZ2wuVU5JRk9STV9CVUZGRVJfQklORElORywgZ2wuVU5JRk9STV9CVUZGRVIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IEJ1ZmZlckJpbmRpbmdTdGF0ZSgncGl4ZWxfcGFja19i
dWZmZXJfYmluZGluZycsICdQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HJywgZ2wuUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgZ2wuUElYRUxfUEFDS19CVUZGRVIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IEJ1ZmZlckJpbmRpbmdTdGF0ZSgncGl4ZWxfdW5wYWNrX2J1ZmZlcl9iaW5k
aW5nJywgJ1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORycsIGdsLlBJWEVMX1VOUEFDS19CVUZG
RVJfQklORElORywgZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiksCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXcgQnVmZmVyQmluZGluZ1N0YXRlKCd0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2Jp
bmRpbmcnLCAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HJywgZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCdWZmZXJCaW5kaW5nU3RhdGUoJ2NvcHlfcmVh
ZF9idWZmZXJfYmluZGluZycsICdDT1BZX1JFQURfQlVGRkVSX0JJTkRJTkcnLCBnbC5DT1BZX1JF
QURfQlVGRkVSX0JJTkRJTkcsIGdsLkNPUFlfUkVBRF9CVUZGRVIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IEJ1ZmZlckJpbmRpbmdTdGF0ZSgnY29weV93cml0ZV9idWZmZXJfYmluZGlu
ZycsICdDT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HJywgZ2wuQ09QWV9XUklURV9CVUZGRVJfQklO
RElORywgZ2wuQ09QWV9XUklURV9CVUZGRVIpCisgICAgICAgICAgICAgICAgXTsKKworICAgICAg
ICAgICAgICAgIGZvciAodmFyIHRlc3ROZHggPSAwOyB0ZXN0TmR4IDwgYnVmZmVyQmluZGluZ1N0
YXRlcy5sZW5ndGg7IHRlc3ROZHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDdHgu
YWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkJ1ZmZlckJpbmRpbmdUZXN0
Q2FzZShidWZmZXJCaW5kaW5nU3RhdGVzW3Rlc3ROZHhdLm5hbWUsIGJ1ZmZlckJpbmRpbmdTdGF0
ZXNbdGVzdE5keF0uZGVzY3JpcHRpb24sIGJ1ZmZlckJpbmRpbmdTdGF0ZXNbdGVzdE5keF0udGFy
Z2V0LCBidWZmZXJCaW5kaW5nU3RhdGVzW3Rlc3ROZHhdLnR5cGUpKTsKKworICAgICAgICAgICAg
ICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkVsZW1l
bnRBcnJheUJ1ZmZlckJpbmRpbmdUZXN0Q2FzZSgnZWxlbWVudF9hcnJheV9idWZmZXJfYmluZGlu
ZycpKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0
YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0JpbmRpbmdUZXN0Q2FzZSgndHJhbnNmb3Jt
X2ZlZWRiYWNrX2JpbmRpbmcnKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChu
ZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tCaW5kaW5nVGVz
dENhc2UoJ3RyYW5zZm9ybV9mZWVkYmFja19iaW5kaW5nJykpOworICAgICAgICAgICAgICAgIHRl
c3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRQcm9n
cmFtQmluZGluZ1Rlc3RDYXNlKCdjdXJyZW50X3Byb2dyYW1fYmluZGluZycsICdDVVJSRU5UX1BS
T0dSQU0nKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVn
ZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXJyYXlCaW5kaW5nVGVzdENhc2UoJ3ZlcnRleF9hcnJh
eV9iaW5kaW5nJywgJ1ZFUlRFWF9BUlJBWV9CSU5ESU5HJykpOworICAgICAgICAgICAgICAgIHRl
c3RDdHguYWRkQ2hpbGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlN0ZW5jaWxDbGVh
clZhbHVlVGVzdENhc2UoJ3N0ZW5jaWxfY2xlYXJfdmFsdWUnLCAnU1RFTkNJTF9DTEVBUl9WQUxV
RScpKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0
YXRlUXVlcnlUZXN0cy5BY3RpdmVUZXh0dXJlVGVzdENhc2UoJ2FjdGl2ZV90ZXh0dXJlJywgJ0FD
VElWRV9URVhUVVJFJykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLlJlbmRlcmJ1ZmZlckJpbmRpbmdUZXN0Q2FzZSgncmVu
ZGVyYnVmZmVyX2JpbmRpbmcnLCAnUkVOREVSQlVGRkVSX0JJTkRJTkcnKSk7CisgICAgICAgICAg
ICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcgZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuU2Ft
cGxlck9iamVjdEJpbmRpbmdUZXN0Q2FzZSgnc2FtcGxlcl9iaW5kaW5nJywgJ1NBTVBMRVJfQklO
RElORycpKTsKKworICAgICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgICAqIEBzdHJ1
Y3QKKyAgICAgICAgICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBk
ZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAg
ICAgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdHlwZQorICAgICAgICAgICAgICAgICAq
LworICAgICAgICAgICAgICAgIHZhciBUZXh0dXJlQmluZGluZyA9IGZ1bmN0aW9uKG5hbWUsIGRl
c2NyaXB0aW9uLCB0YXJnZXQsIHR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnRhcmdl
dCA9IHRhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PFRleHR1cmVCaW5kaW5nPn0gKi8gdmFyIHRleHR1cmVCaW5kaW5n
cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlQmluZGluZygndGV4dHVy
ZV9iaW5kaW5nXzJkJywgJ1RFWFRVUkVfQklORElOR18yRCcsIGdsLlRFWFRVUkVfQklORElOR18y
RCwgZ2wuVEVYVFVSRV8yRCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGV4dHVyZUJp
bmRpbmcoJ3RleHR1cmVfYmluZGluZ18zZCcsICdURVhUVVJFX0JJTkRJTkdfM0QnLCBnbC5URVhU
VVJFX0JJTkRJTkdfM0QsIGdsLlRFWFRVUkVfM0QpLAorICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IFRleHR1cmVCaW5kaW5nKCd0ZXh0dXJlX2JpbmRpbmdfMmRfYXJyYXknLCAnVEVYVFVSRV9C
SU5ESU5HXzJEX0FSUkFZJywgZ2wuVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZLCBnbC5URVhUVVJF
XzJEX0FSUkFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlQmluZGluZygn
dGV4dHVyZV9iaW5kaW5nX2N1YmVfbWFwJywgJ1RFWFRVUkVfQklORElOR19DVUJFX01BUCcsIGds
LlRFWFRVUkVfQklORElOR19DVUJFX01BUCwgZ2wuVEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAg
ICAgICAgICBdOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3RO
ZHggPCB0ZXh0dXJlQmluZGluZ3MubGVuZ3RoOyB0ZXN0TmR4KyspCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5U
ZXh0dXJlQmluZGluZ1Rlc3RDYXNlKHRleHR1cmVCaW5kaW5nc1t0ZXN0TmR4XS5uYW1lLCB0ZXh0
dXJlQmluZGluZ3NbdGVzdE5keF0uZGVzY3JpcHRpb24sIHRleHR1cmVCaW5kaW5nc1t0ZXN0TmR4
XS50YXJnZXQsIHRleHR1cmVCaW5kaW5nc1t0ZXN0TmR4XS50eXBlKSk7CisKKyAgICAgICAgICAg
ICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5GcmFt
ZUJ1ZmZlckJpbmRpbmdUZXN0Q2FzZSgnZnJhbWVidWZmZXJfYmluZGluZycsICdEUkFXX0ZSQU1F
QlVGRkVSX0JJTkRJTkcgYW5kIFJFQURfRlJBTUVCVUZGRVJfQklORElORycpKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0Q3R4LmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5J
bXBsZW1lbnRhdGlvbkNvbG9yUmVhZFRlc3RDYXNlKCdpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFk
JywgJ0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSBhbmQgSU1QTEVNRU5UQVRJT05fQ09M
T1JfUkVBRF9GT1JNQVQnKSk7CisgICAgICAgICAgICAgICAgdGVzdEN0eC5hZGRDaGlsZChuZXcg
ZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuUmVhZEJ1ZmZlckNhc2UoJ3JlYWRfYnVmZmVyJywg
J1JFQURfQlVGRkVSJykpOworICAgICAgICAgICAgICAgIHRlc3RDdHguYWRkQ2hpbGQobmV3IGVz
M2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLkRyYXdCdWZmZXJDYXNlKCdkcmF3X2J1ZmZlcicsICdE
UkFXX0JVRkZFUicpKTsKKworCisgICAgICAgICAgICAgICAgLy8gSW50ZWdlcjY0CisgICAgICAg
ICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICogQHN0cnVjdAorICAgICAgICAgICAgICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICAg
ICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldE5hbWUKKyAgICAgICAgICAgICAgICAg
KiBAcGFyYW0ge251bWJlcn0gbWluVmFsdWUKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgICAgICB2YXIgTGltaXRlZFN0YXRlSW50ZWdlcjY0ID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24sIHRhcmdldE5hbWUsIG1pblZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy50
YXJnZXROYW1lID0gdGFyZ2V0TmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1pblZhbHVlID0gbWluVmFsdWU7CisKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxMaW1pdGVkU3RhdGVJbnRl
Z2VyNjQ+fSAqLyB2YXIgaW1wbGVtZW50YXRpb25MaW1pdHMgPSBbCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgTGltaXRlZFN0YXRlSW50ZWdlcjY0KCdtYXhfZWxlbWVudF9pbmRleCcsICdN
QVhfRUxFTUVOVF9JTkRFWCcsIGdsLk1BWF9FTEVNRU5UX0lOREVYLCAweDAwRkZGRkZGKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBMaW1pdGVkU3RhdGVJbnRlZ2VyNjQoJ21heF9zZXJ2
ZXJfd2FpdF90aW1lb3V0JywgJ01BWF9TRVJWRVJfV0FJVF9USU1FT1VUJywgZ2wuTUFYX1NFUlZF
Ul9XQUlUX1RJTUVPVVQsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExpbWl0ZWRT
dGF0ZUludGVnZXI2NCgnbWF4X3VuaWZvcm1fYmxvY2tfc2l6ZScsICdNQVhfVU5JRk9STV9CTE9D
S19TSVpFJywgZ2wuTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSwgMTYzODQpCisgICAgICAgICAgICAg
ICAgXTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIHRlc3ROZHggPSAwOyB0ZXN0TmR4IDwg
aW1wbGVtZW50YXRpb25MaW1pdHMubGVuZ3RoOyB0ZXN0TmR4KyspCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5Db25z
dGFudE1pbmltdW1WYWx1ZTY0VGVzdENhc2UoaW1wbGVtZW50YXRpb25MaW1pdHNbdGVzdE5keF0u
bmFtZSwgaW1wbGVtZW50YXRpb25MaW1pdHNbdGVzdE5keF0uZGVzY3JpcHRpb24sIGltcGxlbWVu
dGF0aW9uTGltaXRzW3Rlc3ROZHhdLnRhcmdldE5hbWUsIGltcGxlbWVudGF0aW9uTGltaXRzW3Rl
c3ROZHhdLm1pblZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBl
czNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5NYXhDb21iaW5lZFN0YWdlVW5pZm9ybUNvbXBvbmVu
dHNDYXNlKCdtYXhfY29tYmluZWRfdmVydGV4X3VuaWZvcm1fY29tcG9uZW50cycsICdNQVhfQ09N
QklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUycsIGdsLk1BWF9DT01CSU5FRF9WRVJURVhf
VU5JRk9STV9DT01QT05FTlRTLCBnbC5NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTLCBnbC5NQVhf
VkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUykpOworICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hp
bGQobmV3IGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLk1heENvbWJpbmVkU3RhZ2VVbmlmb3Jt
Q29tcG9uZW50c0Nhc2UoJ21heF9jb21iaW5lZF9mcmFnbWVudF91bmlmb3JtX2NvbXBvbmVudHMn
LCAnTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUycsIGdsLk1BWF9DT01C
SU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMsIGdsLk1BWF9GUkFHTUVOVF9VTklGT1JN
X0JMT0NLUywgZ2wuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUykpOworCisgICAgICAg
IH07CisKKyAgICAvKioKKyAgICAqIFJ1biB0ZXN0CisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRl
cmluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAqLworICAgIGVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGdsID0gY29udGV4dDsK
KyAgICAgICAgICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgICAgICB2
YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgICAgICAgICBzdGF0ZS5zZXRSb290
KG5ldyBlczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5JbnRlZ2VyU3RhdGVRdWVyeVRlc3RzKCkp
OworCisgICAgICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRl
c3Qgc2VyaWVzLgorICAgICAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNl
cy5mdWxsTmFtZSgpKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5n
ZXREZXNjcmlwdGlvbigpKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAg
ICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5U
ZXN0Q2FzZXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChlcnIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmSW50ZWdl
clN0YXRlUXVlcnlUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgICAgIH0KKyAgICB9Owor
Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3Rz
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2VzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGViMWIwZTJjMGEyOGRhYzkzMzBiYjY3MGM5YTdhNmQ0ZjFmM2RkNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9lczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLmpzCkBAIC0wLDAg
KzEsMTczIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFBy
b2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMn
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92
aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMu
c2hhcmVkLmdsc1N0YXRlUXVlcnknKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKK3ZhciBl
czNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmSW50ZXJu
YWxGb3JtYXRRdWVyeVRlc3RzOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXN0Q2FzZTsKK3ZhciBnbHNTdGF0ZVF1ZXJ5ID0gbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVR
dWVyeTsKK3ZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisK
K3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsKKyAgICBjaGls
ZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpOworICAgIGNoaWxk
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtudW1iZXJ9
IGludGVybmFsRm9ybWF0CisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW50ZWdlckludGVybmFsRm9y
bWF0CisgKi8KK2VzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMuU2FtcGxlc0Nhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgaW50ZXJuYWxGb3JtYXQsIGlzSW50ZWdlckludGVybmFs
Rm9ybWF0KSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2Ny
aXB0aW9uLCBnbCk7CisgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7
CisgICAgdGhpcy5tX2lzSW50ZWdlckludGVybmFsRm9ybWF0ID0gaXNJbnRlZ2VySW50ZXJuYWxG
b3JtYXQ7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3Rz
LlNhbXBsZXNDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZkludGVybmFsRm9ybWF0
UXVlcnlUZXN0cy5TYW1wbGVzQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBzYW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIGdsLlNBTVBMRVMpOworCisgICAgdGhpcy5jaGVj
ayghdGhpcy5tX2lzSW50ZWdlckludGVybmFsRm9ybWF0IHx8IHNhbXBsZXMubGVuZ3RoID09IDAs
ICdpbnRlZ2VyIGludGVybmFsIGZvcm1hdCBzaG91bGQgaGF2ZSAwIHNhbXBsZXMsIGdvdCAnICsg
c2FtcGxlcy5sZW5ndGgpOworCisgICAgaWYgKHNhbXBsZXMubGVuZ3RoID09IDApCisgICAgICAg
IHJldHVybjsKKworICAgIHZhciBwcmV2U2FtcGxlQ291bnQgPSAwOworICAgIHZhciBzYW1wbGVD
b3VudCA9IDA7CisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgc2FtcGxlcy5sZW5ndGg7ICsr
bmR4LCBwcmV2U2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudCkgeworICAgICAgICBzYW1wbGVDb3Vu
dCA9IHNhbXBsZXNbbmR4XTsKKworICAgICAgICAvLyBzYW1wbGUgY291bnQgbXVzdCBiZSA+IDAK
KyAgICAgICAgdGhpcy5jaGVjayhzYW1wbGVDb3VudCA+IDAsICdFeHBlY3RlZCBzYW1wbGUgY291
bnQgdG8gYmUgYXQgbGVhc3Qgb25lOyBnb3QgJyArIHNhbXBsZUNvdW50KTsKKworICAgICAgICAv
LyBzYW1wbGVzIG11c3QgYmUgb3JkZXJlZCBkZXNjZW5kaW5nCisgICAgICAgIHRoaXMuY2hlY2so
bmR4ID09IDAgfHwgc2FtcGxlQ291bnQgPCBwcmV2U2FtcGxlQ291bnQsICdFeHBlY3RlZCBzYW1w
bGUgY291bnQgdG8gYmUgb3JkZXJlZCBpbiBkZXNjZW5kaW5nIG9yZGVyOyBnb3QgJyArIHByZXZT
YW1wbGVDb3VudCArICcgYXQgaW5kZXggJyArIChuZHggLSAxKSArICcsIGFuZCAnICsgc2FtcGxl
Q291bnQgKyAnIGF0IGluZGV4ICcgKyBuZHgpOworICAgIH0KKworICAgIC8vIHRoZSBtYXhpbXVt
IHZhbHVlIGluIFNBTVBMRVMgaXMgZ3VhcmFudGVlZCB0byBiZSBhdCBsZWFzdCB0aGUgdmFsdWUg
b2YgTUFYX1NBTVBMRVMKKyAgICB2YXIgbWF4U2FtcGxlcyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9TQU1QTEVTKSk7CisgICAgdmFyIG1heGltdW1Gb3Jt
YXRTYW1wbGVDb3VudCA9IHNhbXBsZXNbMF07CisgICAgdGhpcy5jaGVjayhtYXhpbXVtRm9ybWF0
U2FtcGxlQ291bnQgPj0gbWF4U2FtcGxlcywgJ0V4cGVjdGVkIG1heGltdW0gdmFsdWUgaW4gU0FN
UExFUyAoJyArIG1heGltdW1Gb3JtYXRTYW1wbGVDb3VudCArICcpIHRvIGJlIGF0IGxlYXN0IHRo
ZSB2YWx1ZSBvZiBNQVhfU0FNUExFUyAoJyArIG1heFNhbXBsZXMgKyAnKScpOworfTsKKworLyoq
CisqIEBjb25zdHJ1Y3RvcgorKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisqLwor
ZXMzZkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5JbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMgPSBm
dW5jdGlvbigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdpbnRlcm5h
bF9mb3JtYXQnLCAnSW50ZXJuYWwgRm9ybWF0IFF1ZXJ5IHRlc3RzJyk7Cit9OworCitlczNmSW50
ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNmSW50
ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLkludGVybmFsRm9ybWF0
UXVlcnlUZXN0czsKKworZXMzZkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5JbnRlcm5hbEZvcm1h
dFF1ZXJ5VGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgaW50ZXJu
YWxGb3JtYXRzID0gWworICAgICAgICAvL25hbWUsIGZvcm1hdCwgaXNfaW50ZWdlcgorICAgICAg
ICAvLyBjb2xvciByZW5kZXJhYmxlIGFuZCB1bnNpemVkCisgICAgICAgIC8vIFxub3RlIFRoZXNl
IHVuc2l6ZWQgZm9ybWF0cyBzZWVtIHRvIGFsbG93ZWQgYnkgdGhlIHNwZWMsIGJ1dCB0aGV5IGFy
ZSBub3QgdXNlZnVsIGluIGFueSB3YXkuIChZb3UgY2FuJ3QgY3JlYXRlIGEgcmVuZGVyYnVmZmVy
IHdpdGggc3VjaCBpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgWydyZ2JhJywgZ2wuUkdCQSwgZmFs
c2VdLAorICAgICAgICBbJ3JnYicsIGdsLlJHQiwgZmFsc2VdLAorCisgICAgICAgIC8vIGNvbG9y
IHJlbmRlcmFibGUKKyAgICAgICAgWydyOCcsIGdsLlI4LCBmYWxzZV0sCisgICAgICAgIFsncmc4
JywgZ2wuUkc4LCBmYWxzZV0sCisgICAgICAgIFsncmdiOCcsIGdsLlJHQjgsIGZhbHNlXSwKKyAg
ICAgICAgWydyZ2I1NjUnLCBnbC5SR0I1NjUsIGZhbHNlXSwKKyAgICAgICAgWydyZ2JhNCcsIGds
LlJHQkE0LCBmYWxzZV0sCisgICAgICAgIFsncmdiNV9hMScsIGdsLlJHQjVfQTEsIGZhbHNlXSwK
KyAgICAgICAgWydyZ2JhOCcsIGdsLlJHQkE4LCBmYWxzZV0sCisgICAgICAgIFsncmdiMTBfYTIn
LCBnbC5SR0IxMF9BMiwgZmFsc2VdLAorICAgICAgICBbJ3JnYjEwX2EydWknLCBnbC5SR0IxMF9B
MlVJLCB0cnVlXSwKKyAgICAgICAgWydzcmdiOF9hbHBoYTgnLCBnbC5TUkdCOF9BTFBIQTgsIGZh
bHNlXSwKKyAgICAgICAgWydyOGknLCBnbC5SOEksIHRydWVdLAorICAgICAgICBbJ3I4dWknLCBn
bC5SOFVJLCB0cnVlXSwKKyAgICAgICAgWydyMTZpJywgZ2wuUjE2SSwgdHJ1ZV0sCisgICAgICAg
IFsncjE2dWknLCBnbC5SMTZVSSwgdHJ1ZV0sCisgICAgICAgIFsncjMyaScsIGdsLlIzMkksIHRy
dWVdLAorICAgICAgICBbJ3IzMnVpJywgZ2wuUjMyVUksIHRydWVdLAorICAgICAgICBbJ3JnOGkn
LCBnbC5SRzhJLCB0cnVlXSwKKyAgICAgICAgWydyZzh1aScsIGdsLlJHOFVJLCB0cnVlXSwKKyAg
ICAgICAgWydyZzE2aScsIGdsLlJHMTZJLCB0cnVlXSwKKyAgICAgICAgWydyZzE2dWknLCBnbC5S
RzE2VUksIHRydWVdLAorICAgICAgICBbJ3JnMzJpJywgZ2wuUkczMkksIHRydWVdLAorICAgICAg
ICBbJ3JnMzJ1aScsIGdsLlJHMzJVSSwgdHJ1ZV0sCisgICAgICAgIFsncmdiYThpJywgZ2wuUkdC
QThJLCB0cnVlXSwKKyAgICAgICAgWydyZ2JhOHVpJywgZ2wuUkdCQThVSSwgdHJ1ZV0sCisgICAg
ICAgIFsncmdiYTE2aScsIGdsLlJHQkExNkksIHRydWVdLAorICAgICAgICBbJ3JnYmExNnVpJywg
Z2wuUkdCQTE2VUksIHRydWVdLAorICAgICAgICBbJ3JnYmEzMmknLCBnbC5SR0JBMzJJLCB0cnVl
XSwKKyAgICAgICAgWydyZ2JhMzJ1aScsIGdsLlJHQkEzMlVJLCB0cnVlXSwKKworICAgICAgICAv
LyBkZXB0aCByZW5kZXJhYmxlCisgICAgICAgIFsnZGVwdGhfY29tcG9uZW50MTYnLCBnbC5ERVBU
SF9DT01QT05FTlQxNiwgZmFsc2VdLAorICAgICAgICBbJ2RlcHRoX2NvbXBvbmVudDI0JywgZ2wu
REVQVEhfQ09NUE9ORU5UMjQsIGZhbHNlXSwKKyAgICAgICAgWydkZXB0aF9jb21wb25lbnQzMmYn
LCBnbC5ERVBUSF9DT01QT05FTlQzMkYsIGZhbHNlXSwKKyAgICAgICAgWydkZXB0aDI0X3N0ZW5j
aWw4JywgZ2wuREVQVEgyNF9TVEVOQ0lMOCwgZmFsc2VdLAorICAgICAgICBbJ2RlcHRoMzJmX3N0
ZW5jaWw4JywgZ2wuREVQVEgzMkZfU1RFTkNJTDgsIGZhbHNlXSwKKworICAgICAgICAvLyBzdGVu
Y2lsIHJlbmRlcmFibGUKKyAgICAgICAgWydzdGVuY2lsX2luZGV4OCcsIGdsLlNURU5DSUxfSU5E
RVg4LCBmYWxzZV0KKyAgICAgICAgLy8gREVQVEgyNF9TVEVOQ0lMOCwgZHVwbGljYXRlCisgICAg
ICAgIC8vIERFUFRIMzJGX1NURU5DSUw4IGR1cGxpY2F0ZQorICAgIF07CisKKyAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCBpbnRlcm5hbEZvcm1hdHMubGVuZ3RoOyArK25keCkgeworICAgICAg
ICB2YXIgaW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdHNbbmR4XTsKKworICAgICAgICB0
aGlzLmFkZENoaWxkKG5ldyBlczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLlNhbXBsZXNDYXNl
KGludGVybmFsRm9ybWF0WzBdICsgJ19zYW1wbGVzJywgJ1NBTVBMRVMgYW5kIE5VTV9TQU1QTEVf
Q09VTlRTJywgaW50ZXJuYWxGb3JtYXRbMV0sIGludGVybmFsRm9ybWF0WzJdKSk7CisgICAgfQor
fTsKKworLyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0g
Y29udGV4dAorKi8KK2VzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMucnVuID0gZnVuY3Rpb24o
Y29udGV4dCkgeworICAgIGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFy
YW1ldGVycworICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBzdGF0ZS5z
ZXRSb290KG5ldyBlczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLkludGVybmFsRm9ybWF0UXVl
cnlUZXN0cygpKTsKKworICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMg
dGVzdCBzZXJpZXMuCisgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxs
TmFtZSgpKTsKKyAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24o
KSk7CisKKyAgICB0cnkgeworICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRjdVRl
c3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgIH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZkludGVybmFsRm9ybWF0UXVlcnlUZXN0
cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5h
dGUoKTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmTGlmZXRp
bWVUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmTGlmZXRpbWVUZXN0cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MTc5MDIyYmZkYmEzNDVkMWEyYTU1NzFmOTE2YmY1MDE0N2JjYzE5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2VzM2ZMaWZldGltZVRlc3RzLmpzCkBAIC0wLDAgKzEsNDcxIEBACisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVT
IFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmTGlmZXRpbWVUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cu
cmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzTGlmZXRpbWVUZXN0cycpOworZ29vZy5yZXF1aXJl
KCdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKK3ZhciBlczNmTGlmZXRpbWVUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkxp
ZmV0aW1lVGVzdHM7Cit2YXIgZ2xzTGlmZXRpbWVUZXN0cyA9IG1vZHVsZXMuc2hhcmVkLmdsc0xp
ZmV0aW1lVGVzdHM7Cit2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
U2hhZGVyUHJvZ3JhbTsKK3ZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
UmFuZG9tOwordmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7Cit2
YXIgZ2xzVGV4dHVyZVRlc3RVdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzVGV4dHVyZVRlc3RVdGls
OwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKworLyoq
IEBjb25zdCAqLyB2YXIgVklFV1BPUlRfU0laRSA9IDEyODsKKy8qKiBAY29uc3QgKi8gdmFyIE5V
TV9DT01QT05FTlRTID0gNDsKKy8qKiBAY29uc3QgKi8gdmFyIE5VTV9WRVJUSUNFUyA9IDM7CisK
Ky8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gKi8gdmFyIGdsOworCit2YXIgc2V0
UGFyZW50Q2xhc3MgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7CisgICAgY2hpbGQucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJvdG90eXBlKTsKKyAgICBjaGlsZC5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBjaGlsZDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfQorICovCitlczNmTGlmZXRp
bWVUZXN0cy5TY2FsZVByb2dyYW0gPSBmdW5jdGlvbigpIHsKKyAgICBnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW0uY2FsbCh0aGlzLCBnbCwgdGhpcy5nZXRTb3VyY2VzKCkpOworICAgIGFz
c2VydE1zZ09wdGlvbnModGhpcy5pc09rKCksICdQcm9ncmFtIGNyZWF0aW9uIGZhaWxlZCcsIGZh
bHNlLCB0cnVlKTsKKyAgICB0aGlzLm1fc2NhbGVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
dGhpcy5nZXRQcm9ncmFtKCksICdzY2FsZScpOworICAgIHRoaXMubV9wb3NMb2MgPSBnbC5nZXRB
dHRyaWJMb2NhdGlvbih0aGlzLmdldFByb2dyYW0oKSwgJ3BvcycpOworfTsKKworc2V0UGFyZW50
Q2xhc3MoZXMzZkxpZmV0aW1lVGVzdHMuU2NhbGVQcm9ncmFtLCBnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW0pOworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0g
dmFvCisgKiBAcGFyYW0ge251bWJlcn0gc2NhbGUKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gdGYKKyAq
IEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAqLworZXMzZkxpZmV0aW1lVGVzdHMu
U2NhbGVQcm9ncmFtLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24odmFvLCBzY2FsZSwgdGYsIGRz
dCkgeworICAgIGVzM2ZMaWZldGltZVRlc3RzLlNjYWxlUHJvZ3JhbS5zZWVkID0gZXMzZkxpZmV0
aW1lVGVzdHMuU2NhbGVQcm9ncmFtLnNlZWQgfHwgMDsKKyAgICArK2VzM2ZMaWZldGltZVRlc3Rz
LlNjYWxlUHJvZ3JhbS5zZWVkOworCisgICAgdmFyIHZpZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5SYW5kb21WaWV3cG9ydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyks
IFZJRVdQT1JUX1NJWkUsIFZJRVdQT1JUX1NJWkUsIGVzM2ZMaWZldGltZVRlc3RzLlNjYWxlUHJv
Z3JhbS5zZWVkKTsKKyAgICBnbC52aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3
cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAs
IDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJf
QklUKTsKKworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8pOworICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHRoaXMubV9wb3NMb2MpOworICAgIGdsLnVzZVByb2dyYW0odGhpcy5nZXRQ
cm9ncmFtKCkpOworCisgICAgZ2wudW5pZm9ybTFmKHRoaXMubV9zY2FsZUxvYywgc2NhbGUpOwor
CisgICAgaWYgKHRmKQorICAgICAgICBnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFO
R0xFUyk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworICAgIGlmICh0
ZikKKyAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIGlmIChkc3QpCisg
ICAgICAgIGdsc0xpZmV0aW1lVGVzdHMucmVhZFJlY3RhbmdsZSh2aWV3cG9ydCwgZHN0KTsKKwor
ICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKworfTsKKworLyoqCisgKiBAcGFyYW0ge1dl
YkdMQnVmZmVyfSBidWZmZXIKKyAqIEBwYXJhbSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gdmFv
CisgKi8KK2VzM2ZMaWZldGltZVRlc3RzLlNjYWxlUHJvZ3JhbS5wcm90b3R5cGUuc2V0UG9zID0g
ZnVuY3Rpb24oYnVmZmVyLCB2YW8pIHsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgYnVmZmVyKTsKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvKTsKKyAgICBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKHRoaXMubV9wb3NMb2MsIE5VTV9DT01QT05FTlRTLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKi8K
K2VzM2ZMaWZldGltZVRlc3RzLlNjYWxlUHJvZ3JhbS5wcm90b3R5cGUuZ2V0U291cmNlcyA9IGZ1
bmN0aW9uKCkgeworLyoqIEBjb25zdCAqLyB2YXIgc192ZXJ0ZXhTaGFkZXJTcmMgPQorICAgICcj
dmVyc2lvbiAxMDBcbicgKworICAgICdhdHRyaWJ1dGUgdmVjNCBwb3M7XG4nICsKKyAgICAndW5p
Zm9ybSBmbG9hdCBzY2FsZTtcbicgKworICAgICd2b2lkIG1haW4gKClcbicgKworICAgICd7XG4n
ICsKKyAgICAnIGdsX1Bvc2l0aW9uID0gdmVjNChzY2FsZSAqIHBvcy54eSwgcG9zLnp3KTtcbicg
KworICAgICd9JzsKKworLyoqIEBjb25zdCAqLyB2YXIgc19mcmFnbWVudFNoYWRlclNyYyA9Cisg
ICAgJyN2ZXJzaW9uIDEwMFxuJyArCisgICAgJ3ZvaWQgbWFpbiAoKVxuJyArCisgICAgJ3tcbicg
KworICAgICcgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMS4wLCAxLjApO1xuJyArCisg
ICAgJ30nOworICAgIHZhciBzb3VyY2VzID0gbmV3IGdsdVNoYWRlclByb2dyYW0uUHJvZ3JhbVNv
dXJjZXMoKTsKKyAgICBzb3VyY2VzLmFkZChuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3Vy
Y2Uoc192ZXJ0ZXhTaGFkZXJTcmMpKTsKKyAgICBzb3VyY2VzLmFkZChuZXcgZ2x1U2hhZGVyUHJv
Z3JhbS5GcmFnbWVudFNvdXJjZShzX2ZyYWdtZW50U2hhZGVyU3JjKSk7CisgICAgc291cmNlcy5h
ZGQobmV3IGdsdVNoYWRlclByb2dyYW0uVHJhbnNmb3JtRmVlZGJhY2tNb2RlKGdsLklOVEVSTEVB
VkVEX0FUVFJJQlMpKTsKKyAgICBzb3VyY2VzLmFkZChuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5UcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcoJ2dsX1Bvc2l0aW9uJykpOworICAgIHJldHVybiBzb3VyY2Vz
OworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZldGltZVRl
c3RzLlNpbXBsZUJpbmRlcn0KKyAqLworZXMzZkxpZmV0aW1lVGVzdHMuVmVydGV4QXJyYXlCaW5k
ZXIgPSBmdW5jdGlvbigpIHsKKyAgICBnbHNMaWZldGltZVRlc3RzLlNpbXBsZUJpbmRlci5jYWxs
KHRoaXMsIG51bGwsIGdsLk5PTkUsIGdsLlZFUlRFWF9BUlJBWV9CSU5ESU5HKTsKK307CisKK3Nl
dFBhcmVudENsYXNzKGVzM2ZMaWZldGltZVRlc3RzLlZlcnRleEFycmF5QmluZGVyLCBnbHNMaWZl
dGltZVRlc3RzLlNpbXBsZUJpbmRlcik7CisKK2VzM2ZMaWZldGltZVRlc3RzLlZlcnRleEFycmF5
QmluZGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24ob2JqKSB7CisgICAgdmFyIHZhbyA9IC8q
KiBAdHlwZSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gKi8gKG9iaik7CisgICAgZ2wuYmluZFZl
cnRleEFycmF5KHZhbyk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e2dsc0xpZmV0aW1lVGVzdHMuQmluZGVyfQorICovCitlczNmTGlmZXRpbWVUZXN0cy5TYW1wbGVy
QmluZGVyID0gZnVuY3Rpb24oKSB7CisgICBnbHNMaWZldGltZVRlc3RzLkJpbmRlci5jYWxsKHRo
aXMpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZkxpZmV0aW1lVGVzdHMuU2FtcGxlckJpbmRl
ciwgZ2xzTGlmZXRpbWVUZXN0cy5CaW5kZXIpOworCitlczNmTGlmZXRpbWVUZXN0cy5TYW1wbGVy
QmluZGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24ob2JqKSB7CisgICAgdmFyIHNhbXBsZXIg
PSAvKiogQHR5cGUge1dlYkdMU2FtcGxlcn0gKi8gKG9iaik7CisgICAgZ2wuYmluZFNhbXBsZXIo
MCwgc2FtcGxlcik7Cit9OworZXMzZkxpZmV0aW1lVGVzdHMuU2FtcGxlckJpbmRlci5wcm90b3R5
cGUuZ2V0QmluZGluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyoqIEB0eXBlIHtXZWJHTFNhbXBs
ZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUl9CSU5ESU5HKSk7IH07CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7Z2xzTGlmZXRpbWVUZXN0cy5CaW5kZXJ9Cisg
Ki8KK2VzM2ZMaWZldGltZVRlc3RzLlF1ZXJ5QmluZGVyID0gZnVuY3Rpb24oKSB7CisgICBnbHNM
aWZldGltZVRlc3RzLkJpbmRlci5jYWxsKHRoaXMpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMz
ZkxpZmV0aW1lVGVzdHMuUXVlcnlCaW5kZXIsIGdsc0xpZmV0aW1lVGVzdHMuQmluZGVyKTsKKwor
ZXMzZkxpZmV0aW1lVGVzdHMuUXVlcnlCaW5kZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihv
YmopIHsKKyAgICB2YXIgcXVlcnkgPSAvKiogQHR5cGUge1dlYkdMUXVlcnl9ICovIChvYmopOwor
ICAgIGlmIChxdWVyeSkKKyAgICAgICAgZ2wuYmVnaW5RdWVyeShnbC5BTllfU0FNUExFU19QQVNT
RUQsIHF1ZXJ5KTsKKyAgICBlbHNlCisgICAgICAgIGdsLmVuZFF1ZXJ5KGdsLkFOWV9TQU1QTEVT
X1BBU1NFRCk7Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5RdWVyeUJpbmRlci5wcm90b3R5cGUu
Z2V0QmluZGluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbnVsbDsgfTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZldGltZVRlc3RzLkF0dGFjaGVyfQorICogQHBh
cmFtIHtnbHNMaWZldGltZVRlc3RzLlR5cGV9IGVsZW1lbnRUeXBlCisgKiBAcGFyYW0ge2dsc0xp
ZmV0aW1lVGVzdHMuVHlwZX0gdmFyclR5cGUKKyAqIEBwYXJhbSB7ZXMzZkxpZmV0aW1lVGVzdHMu
U2NhbGVQcm9ncmFtfSBwcm9ncmFtCisgKi8KK2VzM2ZMaWZldGltZVRlc3RzLkJ1ZmZlclZBT0F0
dGFjaGVyID0gZnVuY3Rpb24oZWxlbWVudFR5cGUsIHZhcnJUeXBlLCBwcm9ncmFtKSB7CisgICAg
Z2xzTGlmZXRpbWVUZXN0cy5BdHRhY2hlci5jYWxsKHRoaXMsIGVsZW1lbnRUeXBlLCB2YXJyVHlw
ZSk7CisgICAgdGhpcy5tX3Byb2dyYW0gPSBwcm9ncmFtOworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVkFPQXR0YWNoZXIsIGdsc0xpZmV0aW1lVGVzdHMuQXR0
YWNoZXIpOworCisvKioKKyAqIEByZXR1cm4ge2VzM2ZMaWZldGltZVRlc3RzLlNjYWxlUHJvZ3Jh
bX0KKyAqLworZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVkFPQXR0YWNoZXIucHJvdG90eXBlLmdl
dFByb2dyYW0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9wcm9ncmFtOyB9OworCisvKioK
KyAqIEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgKiBAcGFyYW0ge251bWJlcn0gdXNhZ2UKKyAqIEBw
YXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICovCitlczNmTGlmZXRpbWVUZXN0cy5pbml0QnVm
ZmVyID0gZnVuY3Rpb24oc2VlZCwgdXNhZ2UsIGJ1ZmZlcikgeworICAgIC8qKiBAY29uc3QgKi8g
dmFyIHNfdmFyckRhdGEgPSBbCisgICAgLTEuMCwgMC4wLCAwLjAsIDEuMCwKKyAgICAgMS4wLCAx
LjAsIDAuMCwgMS4wLAorICAgICAwLjAsIC0xLjAsIDAuMCwgMS4wCisgICAgXTsKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBpZiAoc2VlZCA9PSAwKQor
ICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShz
X3ZhcnJEYXRhKSwgdXNhZ2UpOworICAgIGVsc2UgeworICAgICAgICB2YXIgcm5kID0gbmV3IGRl
UmFuZG9tLlJhbmRvbShzZWVkKTsKKyAgICAgICAgdmFyIGRhdGEgPSBbXTsKKworICAgICAgICBm
b3IgKHZhciBuZHggPSAwOyBuZHggPCBOVU1fVkVSVElDRVM7IG5keCsrKSB7CisgICAgICAgICAg
ICBkYXRhLnB1c2goMiAqIChybmQuZ2V0RmxvYXQoKSAtIDAuNSkpOworICAgICAgICAgICAgZGF0
YS5wdXNoKDIgKiAocm5kLmdldEZsb2F0KCkgLSAwLjUpKTsKKyAgICAgICAgICAgIGRhdGEucHVz
aCgwKTsKKyAgICAgICAgICAgIGRhdGEucHVzaCgxKTsKKyAgICAgICAgfQorICAgICAgICBnbC5i
dWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShkYXRhKSwgdXNhZ2Up
OworICAgIH0KKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7Cit9Owor
CitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJWQU9BdHRhY2hlci5wcm90b3R5cGUuaW5pdEF0dGFj
aG1lbnQgPSBmdW5jdGlvbihzZWVkLCBvYmopIHsKKyAgICB2YXIgYnVmZmVyID0gLyoqIEB0eXBl
IHtXZWJHTEJ1ZmZlcn0gKi8gKG9iaik7CisgICAgZXMzZkxpZmV0aW1lVGVzdHMuaW5pdEJ1ZmZl
cihzZWVkLCBnbC5TVEFUSUNfRFJBVywgYnVmZmVyKTsKKyAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnSW5pdGlhbGl6ZWQgYnVmZmVyICcgKyBidWZmZXIgKyAnIGZyb20gc2VlZCAnICsgc2VlZCk7
Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJWQU9BdHRhY2hlci5wcm90b3R5cGUuYXR0
YWNoID0gZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7CisgICAgdmFyIGJ1ZmZlciA9IC8qKiBA
dHlwZSB7V2ViR0xCdWZmZXJ9ICovIChlbGVtZW50KTsKKyAgICB2YXIgdmFvID0gLyoqIEB0eXBl
IHtXZWJHTFZlcnRleEFycmF5T2JqZWN0fSAqLyAodGFyZ2V0KTsKKworICAgIHRoaXMubV9wcm9n
cmFtLnNldFBvcyhidWZmZXIsIHZhbyk7CisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1NldCB0
aGUgYHBvc2AgYXR0cmlidXRlIGluIFZBTyAnICsgdmFvICsgJyB0byBidWZmZXIgJyArIGJ1ZmZl
cik7Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJWQU9BdHRhY2hlci5wcm90b3R5cGUu
ZGV0YWNoID0gZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7CisgICAgdmFyIHZhbyA9IC8qKiBA
dHlwZSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gKi8gKHRhcmdldCk7CisgICAgdGhpcy5hdHRh
Y2gobnVsbCwgdmFvKTsKK307CisKK2VzM2ZMaWZldGltZVRlc3RzLkJ1ZmZlclZBT0F0dGFjaGVy
LnByb3RvdHlwZS5nZXRBdHRhY2htZW50ID0gZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgdmFyIHZh
byA9IC8qKiBAdHlwZSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gKi8gKHRhcmdldCk7CisgICAg
Z2wuYmluZFZlcnRleEFycmF5KHZhbyk7CisgICAgdmFyIG5hbWUgPSBnbC5nZXRWZXJ0ZXhBdHRy
aWIodGhpcy5tX3Bvc0xvYywgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyk7
CisgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAgIHJldHVybiBuYW1lOworfTsKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZldGltZVRlc3RzLklucHV0
QXR0YWNoZXJ9CisgKiBAcGFyYW0ge2VzM2ZMaWZldGltZVRlc3RzLkJ1ZmZlclZBT0F0dGFjaGVy
fSBhdHRhY2hlcgorICovCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJWQU9JbnB1dEF0dGFjaGVy
ID0gZnVuY3Rpb24oYXR0YWNoZXIpIHsKKyAgICBnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNo
ZXIuY2FsbCh0aGlzLCBhdHRhY2hlcik7CisgICAgdGhpcy5tX3Byb2dyYW0gPSBhdHRhY2hlci5n
ZXRQcm9ncmFtKCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmTGlmZXRpbWVUZXN0cy5CdWZm
ZXJWQU9JbnB1dEF0dGFjaGVyLCBnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNoZXIpOworCitl
czNmTGlmZXRpbWVUZXN0cy5CdWZmZXJWQU9JbnB1dEF0dGFjaGVyLnByb3RvdHlwZS5kcmF3Q29u
dGFpbmVyID0gZnVuY3Rpb24ob2JqLCBkc3QpIHsKKyAgICB2YXIgdmFvID0gLyoqIEB0eXBlIHtX
ZWJHTFZlcnRleEFycmF5T2JqZWN0fSAqLyAob2JqKTsKKyAgICB0aGlzLm1fcHJvZ3JhbS5kcmF3
KHZhbywgMS4wLCBmYWxzZSwgZHN0KTsKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRHJldyBh
biBvdXRwdXQgaW1hZ2Ugd2l0aCBWQU8gJyArIHZhbyk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuQXR0YWNoZXJ9CisgKiBAcGFyYW0g
e2dsc0xpZmV0aW1lVGVzdHMuVHlwZX0gZWxlbWVudFR5cGUKKyAqIEBwYXJhbSB7Z2xzTGlmZXRp
bWVUZXN0cy5UeXBlfSB0ZlR5cGUKKyovCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJUZkF0dGFj
aGVyID0gZnVuY3Rpb24oZWxlbWVudFR5cGUsIHRmVHlwZSkgeworICAgIGdsc0xpZmV0aW1lVGVz
dHMuQXR0YWNoZXIuY2FsbCh0aGlzLCBlbGVtZW50VHlwZSwgdGZUeXBlKTsKK307CisKK3NldFBh
cmVudENsYXNzKGVzM2ZMaWZldGltZVRlc3RzLkJ1ZmZlclRmQXR0YWNoZXIsIGdsc0xpZmV0aW1l
VGVzdHMuQXR0YWNoZXIpOworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJUZkF0dGFjaGVyLnBy
b3RvdHlwZS5pbml0QXR0YWNobWVudCA9IGZ1bmN0aW9uKHNlZWQsIG9iaikgeworICAgIHZhciBi
dWZmZXIgPSAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAqLyAob2JqKTsKKyAgICBlczNmTGlmZXRp
bWVUZXN0cy5pbml0QnVmZmVyKHNlZWQsIGdsLkRZTkFNSUNfUkVBRCwgYnVmZmVyKTsKKyAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnSW5pdGlhbGl6ZWQgYnVmZmVyICcgKyBidWZmZXIgKyAnIGZy
b20gc2VlZCAnICsgc2VlZCk7Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJUZkF0dGFj
aGVyLnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQpIHsKKyAgICB2
YXIgYnVmZmVyID0gLyoqIEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gKGVsZW1lbnQpOworICAgIHZh
ciB0ZiA9IC8qKiBAdHlwZSB7V2ViR0xUcmFuc2Zvcm1GZWVkYmFja30gKi8gKHRhcmdldCk7Cisg
ICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOwor
ICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1
ZmZlcik7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFD
SywgbnVsbCk7Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJUZkF0dGFjaGVyLnByb3Rv
dHlwZS5kZXRhY2ggPSBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQpIHsKKyAgICB2YXIgYnVmZmVy
ID0gLyoqIEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gKGVsZW1lbnQpOworICAgIHZhciB0ZiA9IC8q
KiBAdHlwZSB7V2ViR0xUcmFuc2Zvcm1GZWVkYmFja30gKi8gKHRhcmdldCk7CisgICAgZ2wuYmlu
ZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworICAgIGdsLmJp
bmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG51bGwpOworICAg
IGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwpOwor
Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJUZkF0dGFjaGVyLnByb3RvdHlwZS5nZXRB
dHRhY2htZW50ID0gZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgdmFyIHRmID0gLyoqIEB0eXBlIHtX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrfSAqLyAodGFyZ2V0KTsKKyAgICBnbC5iaW5kVHJhbnNmb3Jt
RmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgdmFyIG5hbWUgPSBnbC5n
ZXRJbmRleGVkUGFyYW1ldGVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywg
MCk7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywg
bnVsbCk7CisgICAgcmV0dXJuIG5hbWU7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXJ9CisgKi8KK2VzM2ZMaWZl
dGltZVRlc3RzLkJ1ZmZlclRmT3V0cHV0QXR0YWNoZXIgPSBmdW5jdGlvbihhdHRhY2hlciwgcHJv
Z3JhbSkgeworICAgIGdsc0xpZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXIuY2FsbCh0aGlzLCBh
dHRhY2hlcik7CisgICAgdGhpcy5tX3Byb2dyYW0gPSBwcm9ncmFtOworfTsKKworc2V0UGFyZW50
Q2xhc3MoZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVGZPdXRwdXRBdHRhY2hlciwgZ2xzTGlmZXRp
bWVUZXN0cy5PdXRwdXRBdHRhY2hlcik7CisKK2VzM2ZMaWZldGltZVRlc3RzLkJ1ZmZlclRmT3V0
cHV0QXR0YWNoZXIucHJvdG90eXBlLnNldHVwQ29udGFpbmVyID0gZnVuY3Rpb24oc2VlZCwgb2Jq
KSB7CisgICAgdmFyIHRmID0gLyoqIEB0eXBlIHtXZWJHTFRyYW5zZm9ybUZlZWRiYWNrfSAqLyAo
b2JqKTsKKyAgICB2YXIgcG9zQnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgdmFyIHZhbyA9
IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisKKyAgICBlczNmTGlmZXRpbWVUZXN0cy5pbml0QnVm
ZmVyKHNlZWQsIGdsLlNUQVRJQ19EUkFXLCBwb3NCdWYpOworICAgIHRoaXMubV9wcm9ncmFtLnNl
dFBvcyhwb3NCdWYsIHZhbyk7CisKKyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLLCB0Zik7CisgICAgdGhpcy5tX3Byb2dyYW0uZHJhdyh2YW8sIC0xLjAs
IHRydWUsIG51bGwpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdEcmV3IGFuIGltYWdlIHdp
dGggc2VlZCAnICsgc2VlZCArICcgd2l0aCB0cmFuc2Zvcm0gZmVlZGJhY2sgdG8gJyArIHRmKTsK
KyAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCBudWxs
KTsKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8pOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihw
b3NCdWYpOworfTsKKworZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVGZPdXRwdXRBdHRhY2hlci5w
cm90b3R5cGUuZHJhd0F0dGFjaG1lbnQgPSBmdW5jdGlvbihidWZmZXIsIGRzdCkgeworICAgIHZh
ciB2YW8gPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworCisgICAgdGhpcy5tX3Byb2dyYW0uc2V0
UG9zKGJ1ZmZlciwgdmFvKTsKKyAgICB0aGlzLm1fcHJvZ3JhbS5kcmF3KHZhbywgMS4wLCBmYWxz
ZSwgZHN0KTsKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRHJldyBvdXRwdXQgaW1hZ2Ugd2l0
aCB2ZXJ0aWNlcyBmcm9tIGJ1ZmZlciAnICsgYnVmZmVyKTsKKyAgICBnbC5kZWxldGVWZXJ0ZXhB
cnJheSh2YW8pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNM
aWZldGltZVRlc3RzLkVTMlR5cGVzfQorICovCitlczNmTGlmZXRpbWVUZXN0cy5FUzNUeXBlcyA9
IGZ1bmN0aW9uKCkgeworICAgIGdsc0xpZmV0aW1lVGVzdHMuRVMyVHlwZXMuY2FsbCh0aGlzKTsK
KyAgICB0aGlzLm1fcHJvZ3JhbSA9IG5ldyBlczNmTGlmZXRpbWVUZXN0cy5TY2FsZVByb2dyYW0o
KTsKKyAgICB0aGlzLm1fcXVlcnlCaW5kID0gbmV3IGVzM2ZMaWZldGltZVRlc3RzLlF1ZXJ5Qmlu
ZGVyKCk7CisgICAgdGhpcy5tX3F1ZXJ5VHlwZSA9IG5ldyBnbHNMaWZldGltZVRlc3RzLlNpbXBs
ZVR5cGUoJ3F1ZXJ5JywgZ2wuY3JlYXRlUXVlcnksIGdsLmRlbGV0ZVF1ZXJ5LCBnbC5pc1F1ZXJ5
LCB0aGlzLm1fcXVlcnlCaW5kKTsKKyAgICB0aGlzLm1fdGZCaW5kID0gbmV3IGdsc0xpZmV0aW1l
VGVzdHMuU2ltcGxlQmluZGVyKGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjaywgZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLLAorICAgICAgICAgICAgICAgICAgICAgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JJ
TkRJTkcpOworICAgIHRoaXMubV90ZlR5cGUgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5TaW1wbGVU
eXBlKCd0cmFuc2Zvcm1fZmVlZGJhY2snLCBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaywgZ2wu
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2ssIGdsLmlzVHJhbnNmb3JtRmVlZGJhY2ssIHRoaXMubV90
ZkJpbmQpOworICAgIHRoaXMubV92YXJyQmluZCA9IG5ldyBlczNmTGlmZXRpbWVUZXN0cy5WZXJ0
ZXhBcnJheUJpbmRlcigpOworICAgIHRoaXMubV92YXJyVHlwZSA9IG5ldyBnbHNMaWZldGltZVRl
c3RzLlNpbXBsZVR5cGUoJ3ZlcnRleF9hcnJheScsIGdsLmNyZWF0ZVZlcnRleEFycmF5LCBnbC5k
ZWxldGVWZXJ0ZXhBcnJheSwgZ2wuaXNWZXJ0ZXhBcnJheSwgdGhpcy5tX3ZhcnJCaW5kKTsKKyAg
ICB0aGlzLm1fc2FtcGxlckJpbmQgPSBuZXcgZXMzZkxpZmV0aW1lVGVzdHMuU2FtcGxlckJpbmRl
cigpOworICAgIHRoaXMubV9zYW1wbGVyVHlwZSA9IG5ldyBnbHNMaWZldGltZVRlc3RzLlNpbXBs
ZVR5cGUoJ3NhbXBsZXInLCBnbC5jcmVhdGVTYW1wbGVyLCBnbC5kZWxldGVTYW1wbGVyLCBnbC5p
c1NhbXBsZXIsIHRoaXMubV9zYW1wbGVyQmluZCwgdHJ1ZSk7CisgICAgdGhpcy5tX2J1ZlZhcnJB
dHQgPSBuZXcgZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVkFPQXR0YWNoZXIodGhpcy5tX2J1ZmZl
clR5cGUsIHRoaXMubV92YXJyVHlwZSwgdGhpcy5tX3Byb2dyYW0pOworICAgIHRoaXMubV9idWZW
YXJySW5BdHQgPSBuZXcgZXMzZkxpZmV0aW1lVGVzdHMuQnVmZmVyVkFPSW5wdXRBdHRhY2hlcih0
aGlzLm1fYnVmVmFyckF0dCk7CisgICAgdGhpcy5tX2J1ZlRmQXR0ID0gbmV3IGVzM2ZMaWZldGlt
ZVRlc3RzLkJ1ZmZlclRmQXR0YWNoZXIodGhpcy5tX2J1ZmZlclR5cGUsIHRoaXMubV90ZlR5cGUp
OworICAgIHRoaXMubV9idWZUZk91dEF0dCA9IG5ldyBlczNmTGlmZXRpbWVUZXN0cy5CdWZmZXJU
Zk91dHB1dEF0dGFjaGVyKHRoaXMubV9idWZUZkF0dCwgdGhpcy5tX3Byb2dyYW0pOworCisgICAg
dGhpcy5tX3R5cGVzLnB1c2godGhpcy5tX3F1ZXJ5VHlwZSwgdGhpcy5tX3RmVHlwZSwgdGhpcy5t
X3ZhcnJUeXBlLCB0aGlzLm1fc2FtcGxlclR5cGUpOworICAgIHRoaXMubV9hdHRhY2hlcnMucHVz
aCh0aGlzLm1fYnVmVmFyckF0dCwgdGhpcy5tX2J1ZlRmQXR0KTsKKyAgICB0aGlzLm1faW5BdHRh
Y2hlcnMucHVzaCh0aGlzLm1fYnVmVmFyckluQXR0KTsKKyAgICB0aGlzLm1fb3V0QXR0YWNoZXJz
LnB1c2godGhpcy5tX2J1ZlRmT3V0QXR0KTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZMaWZl
dGltZVRlc3RzLkVTM1R5cGVzLCBnbHNMaWZldGltZVRlc3RzLkVTMlR5cGVzKTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqLwor
ZXMzZkxpZmV0aW1lVGVzdHMuVGZEZWxldGVBY3RpdmVUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24pIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRl
c2NyaXB0aW9uKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZMaWZldGltZVRlc3RzLlRmRGVs
ZXRlQWN0aXZlVGVzdCwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitlczNmTGlmZXRpbWVUZXN0
cy5UZkRlbGV0ZUFjdGl2ZVRlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKy8q
KiBAY29uc3QgKi8gdmFyIHNfeGZiVmVydGV4U291cmNlID0KKyAgICAnI3ZlcnNpb24gMzAwIGVz
XG4nICsKKyAgICAndm9pZCBtYWluICgpXG4nICsKKyAgICAne1xuJyArCisgICAgJyBnbF9Qb3Np
dGlvbiA9IHZlYzQoZmxvYXQoZ2xfVmVydGV4SUQpIC8gMi4wLCBmbG9hdChnbF9WZXJ0ZXhJRCAl
IDIpIC8gMi4wLCAwLjAsIDEuMCk7XG4nICsKKyAgICAnfVxuJzsKKworLyoqIEBjb25zdCAqLyAg
dmFyIHNfeGZiRnJhZ21lbnRTb3VyY2UgPQorICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAg
ICdsYXlvdXQobG9jYXRpb249MCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjtcbicg
KworICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAne1xuJyArCisgICAgJyBkRVFQX0Zy
YWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDAuMCwgMS4wKTtcbicgKworICAgICd9XG4nOworICAg
IHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAgIHZhciBzb3VyY2VzID0gbmV3IGds
dVNoYWRlclByb2dyYW0uUHJvZ3JhbVNvdXJjZXMoKTsKKyAgICBzb3VyY2VzLmFkZChuZXcgZ2x1
U2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2Uoc194ZmJWZXJ0ZXhTb3VyY2UpKTsKKyAgICBzb3Vy
Y2VzLmFkZChuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5GcmFnbWVudFNvdXJjZShzX3hmYkZyYWdtZW50
U291cmNlKSk7CisgICAgc291cmNlcy5hZGQobmV3IGdsdVNoYWRlclByb2dyYW0uVHJhbnNmb3Jt
RmVlZGJhY2tNb2RlKGdsLlNFUEFSQVRFX0FUVFJJQlMpKTsKKyAgICBzb3VyY2VzLmFkZChuZXcg
Z2x1U2hhZGVyUHJvZ3JhbS5UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoJ2dsX1Bvc2l0aW9uJykp
OworICAgIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShn
bCwgc291cmNlcyk7CisgICAgaWYgKCFwcm9ncmFtLmlzT2soKSkgeworICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZShwcm9ncmFtLmdldFByb2dyYW1JbmZvKCkuaW5mb0xvZyk7CisgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdmYWlsZWQgdG8gYnVpbGQgcHJvZ3JhbScsIHRydWUpOworICAg
IH0KKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKworICAgIHZhciB0
ZiA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgZ2wuYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworICAgIGdsLmJpbmRCdWZmZXJCYXNl
KGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0
YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCA0OCwgZ2wuU1RBVElDX0RSQVcpOworCisg
ICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5UUklBTkdMRVMpOworICAgIHZhciBlcnJD
b2RlID0gZ2wuTk9ORTsKKyAgICBnbC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0Zik7CisgICAg
ZXJyQ29kZSA9IGdsLmdldEVycm9yKCk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhlcnJDb2RlID09
IGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAnRGVsZXRpbmcgYWN0aXZlIHRyYW5zZm9y
bSBmZWVkYmFjayBtdXN0IHByb2R1Y2UgSU5WQUxJRF9PUEVSQVRJT04nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBnbC5kZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayh0Zik7CisgICAgdGVzdFBhc3NlZCgpOworICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0LlNUT1A7Cit9OworCitlczNmTGlmZXRpbWVUZXN0cy5nZW5UZXN0Q2FzZXMg
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAg
c3RhdGUuc2V0Um9vdCh0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdsaWZldGltZScsICdUb3AgbGV2ZWwn
KSk7CisKKyAgICB2YXIgdHlwZXMgPSBuZXcgZXMzZkxpZmV0aW1lVGVzdHMuRVMzVHlwZXMoKTsK
KyAgICBnbHNMaWZldGltZVRlc3RzLmFkZFRlc3RDYXNlcyhzdGF0ZS50ZXN0Q2FzZXMsIHR5cGVz
KTsKKyAgICAvKiBUT0RPOiBBZGQgVGZEZWxldGVBY3RpdmVUZXN0IHRlc3QgKi8KKyAgICB2YXIg
ZGVsZXRlQWN0aXZlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdkZWxldGVfYWN0aXZlJywg
J0RlbGV0ZSBhY3RpdmUgb2JqZWN0Jyk7CisgICAgc3RhdGUudGVzdENhc2VzLmFkZENoaWxkKGRl
bGV0ZUFjdGl2ZUdyb3VwKTsKKyAgICBkZWxldGVBY3RpdmVHcm91cC5hZGRDaGlsZCgKKyAgICAg
ICAgbmV3IGVzM2ZMaWZldGltZVRlc3RzLlRmRGVsZXRlQWN0aXZlVGVzdCgndHJhbnNmb3JtX2Zl
ZWRiYWNrJywgJ1RyYW5zZm9ybSBGZWVkYmFjaycpKTsKK307CisKKy8qKgorICogQ3JlYXRlIGFu
ZCBleGVjdXRlIHRoZSB0ZXN0IGNhc2VzCisgKi8KK2VzM2ZMaWZldGltZVRlc3RzLnJ1biA9IGZ1
bmN0aW9uKGNvbnRleHQpIHsKKyAgICBnbCA9IGNvbnRleHQ7CisgICAgdHJ5IHsKKyAgICAgICAg
ZXMzZkxpZmV0aW1lVGVzdHMuZ2VuVGVzdENhc2VzKCk7CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1
bm5lci5ydW5DYWxsYmFjayh0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMpOworICAgIH0gY2F0Y2gg
KGVycikgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOworICAgICAgICB0Y3VU
ZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgfQorCit9OworCit9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9lczNmTXVsdGlzYW1wbGVUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmTXVs
dGlzYW1wbGVUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGUyYTIxOTkyZjk4ZmE5OWU4ZjM3ODlkMDRh
YTA1ODdkZjhiOTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZNdWx0aXNhbXBs
ZVRlc3RzLmpzCkBAIC0wLDAgKzEsMTc0MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3
RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdo
dCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoK
KyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgor
ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmTXVsdGlzYW1wbGVU
ZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVTdHJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBh
cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJl
VGVzdFV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5cGUgez9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0fSAqLyB2YXIgZ2w7CisgICAgdmFyIGVzM2ZNdWx0aXNhbXBs
ZVRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmTXVsdGlzYW1wbGVUZXN0czsKKyAgICB2YXIg
ZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciBkZVJhbmRv
bSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAgIHZhciBkZVN0cmluZyA9
IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAgIHZhciBnbHVTaGFkZXJQcm9n
cmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworICAgIHZhciB0Y3VSR0JB
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOworICAgIHZhciB0Y3VTdXJmYWNlID0gZnJhbWV3
b3JrLmNvbW1vbi50Y3VTdXJmYWNlOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5j
b21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9u
LnRjdVRleHR1cmU7CisgICAgdmFyIGdsdVN0clV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVN0
clV0aWw7CisgICAgdmFyIGdsc1RleHR1cmVUZXN0VXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc1Rl
eHR1cmVUZXN0VXRpbDsKKyAgICB2YXIgdGN1SW1hZ2VDb21wYXJlID0gZnJhbWV3b3JrLmNvbW1v
bi50Y3VJbWFnZUNvbXBhcmU7CisgICAgdmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9w
ZW5nbC5nbHVUZXh0dXJlVXRpbDsKKyAgICB2YXIgdGN1TG9nSW1hZ2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdUxvZ0ltYWdlOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QHN0cnVjdAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDBfCisgICAgICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSBwMV8KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHAyXwor
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcDNfCisgICAgICovCisgICAgZXMzZk11bHRp
c2FtcGxlVGVzdHMuUXVhZENvcm5lcnMgPSBmdW5jdGlvbihwMF8sIHAxXywgcDJfLCBwM18pIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnAwID0gcDBfOworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMucDEgPSBwMV87CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5wMiA9IHAyXzsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnAzID0gcDNfOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdENvdW50CisgICAgICogQHJldHVybiB7
bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLmdldEl0ZXJhdGlvbkNv
dW50ID0gZnVuY3Rpb24oZGVmYXVsdENvdW50KSB7CisgICAgICAgIC8vIFRoZSBDKysgdGVzdCB0
YWtlcyBhbiBhcmd1bWVudCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCisgICAgICAgIC8vIExlYXZp
bmcgdGhpcyBmdW5jdGlvbiBpbiBjYXNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB0YWtlIGFuIGFy
Z3VtZW50IGZyb20gdGhlIFVSTAorICAgICAgICByZXR1cm4gZGVmYXVsdENvdW50OworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwb2ludAorICAgICAq
IEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAwCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVy
Pn0gcDEKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMgorICAgICAqIEBwYXJhbSAg
e0FycmF5PG51bWJlcj59IHAzCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAg
ICBlczNmTXVsdGlzYW1wbGVUZXN0cy5pc0luc2lkZVF1YWQgPSBmdW5jdGlvbihwb2ludCwgcDAs
IHAxLCBwMiwgcDMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkb3QwID0g
KHBvaW50WzBdIC0gcDBbMF0pICogKHAxWzFdIC0gcDBbMV0pICsgKHBvaW50WzFdIC0gcDBbMV0p
ICogKHAwWzBdIC0gcDFbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRv
dDEgPSAocG9pbnRbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgKyAocG9pbnRbMV0gLSBw
MVsxXSkgKiAocDFbMF0gLSBwMlswXSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgZG90MiA9IChwb2ludFswXSAtIHAyWzBdKSAqIChwM1sxXSAtIHAyWzFdKSArIChwb2ludFsx
XSAtIHAyWzFdKSAqIChwMlswXSAtIHAzWzBdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBkb3QzID0gKHBvaW50WzBdIC0gcDNbMF0pICogKHAwWzFdIC0gcDNbMV0pICsgKHBv
aW50WzFdIC0gcDNbMV0pICogKHAzWzBdIC0gcDBbMF0pOworCisgICAgICAgIHJldHVybiAoZG90
MCA+IDApID09IChkb3QxID4gMCkgJiYgKGRvdDEgPiAwKSA9PSAoZG90MiA+IDApICYmIChkb3Qy
ID4gMCkgPT0gKGRvdDMgPiAwKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ2hlY2sgaWYg
YSByZWdpb24gaW4gYW4gaW1hZ2UgaXMgdW5pY29sb3JlZC4KKyAgICAgKgorICAgICAqIENoZWNr
cyBpZiB0aGUgcGl4ZWxzIGluIGltZyBpbnNpZGUgdGhlIGNvbnZleCBxdWFkaWxhdGVyYWwgZGVm
aW5lZCBieQorICAgICAqIHAwLCBwMSwgcDIgYW5kIHAzIGFyZSBhbGwgKGFwcHJveGltYXRlbHkp
IG9mIHRoZSBzYW1lIGNvbG9yLgorICAgICAqCisgICAgICogQHBhcmFtICB7dGN1U3VyZmFjZS5T
dXJmYWNlfSBpbWcKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMAorICAgICAqIEBw
YXJhbSAge0FycmF5PG51bWJlcj59IHAxCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0g
cDIKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMworICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuaXNQaXhlbFJlZ2lvblVu
aWNvbG9yZWQgPSBmdW5jdGlvbihpbWcsIHAwLCBwMSwgcDIsIHAzKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgeE1pbiA9IGRlTWF0aC5jbGFtcChNYXRoLm1pbihwMFswXSwg
cDFbMF0sIHAyWzBdLCBwM1swXSksIDAsIGltZy5nZXRXaWR0aCgpIC0gMSk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeU1pbiA9IGRlTWF0aC5jbGFtcChNYXRoLm1pbihwMFsx
XSwgcDFbMV0sIHAyWzFdLCBwM1sxXSksIDAsIGltZy5nZXRIZWlnaHQoKSAtIDEpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhNYXggPSBkZU1hdGguY2xhbXAoTWF0aC5tYXgo
cDBbMF0sIHAxWzBdLCBwMlswXSwgcDNbMF0pLCAwLCBpbWcuZ2V0V2lkdGgoKSAtIDEpOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHlNYXggPSBkZU1hdGguY2xhbXAoTWF0aC5t
YXgocDBbMV0sIHAxWzFdLCBwMlsxXSwgcDNbMV0pLCAwLCBpbWcuZ2V0SGVpZ2h0KCkgLSAxKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaW5zaWRlRW5jb3VudGVyZWQgPSBm
YWxzZTsgLy8hPCBXaGV0aGVyIHdlIGhhdmUgYWxyZWFkeSBzZWVuIGF0IGxlYXN0IG9uZSBwaXhl
bCBpbnNpZGUgdGhlIHJlZ2lvbi4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICov
IHZhciBpbnNpZGVDb2xvcjsgLy8hPCBDb2xvciBvZiB0aGUgZmlyc3QgcGl4ZWwgaW5zaWRlIHRo
ZSByZWdpb24uCisgICAgICAgIC8qKiBAdHlwZSB7dGN1UkdCQS5SR0JBfSAqLyB2YXIgdGhyZXNo
b2xkID0gdGN1UkdCQS5uZXdSR0JBQ29tcG9uZW50cygzLCAzLCAzLCAzKTsKKyAgICAgICAgZm9y
ICh2YXIgeSA9IHlNaW47IHkgPD0geU1heDsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0geE1p
bjsgeCA8PSB4TWF4OyB4KyspCisgICAgICAgICAgICBpZiAoZXMzZk11bHRpc2FtcGxlVGVzdHMu
aXNJbnNpZGVRdWFkKFt4LCB5XSwgcDAsIHAxLCBwMiwgcDMpKSB7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciBwaXhDb2xvciA9IG5ldyB0Y3VSR0JBLlJH
QkEoaW1nLmdldFBpeGVsKHgsIHkpKTsKKworICAgICAgICAgICAgICAgIGlmIChpbnNpZGVFbmNv
dW50ZXJlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0Y3VSR0JBLmNvbXBhcmVUaHJlc2hv
bGQocGl4Q29sb3IsIGluc2lkZUNvbG9yLCB0aHJlc2hvbGQpKSAvLyBQaXhlbCBjb2xvciBkaWZm
ZXJzIGZyb20gYWxyZWFkeS1kZXRlY3RlZCBjb2xvciBpbnNpZGUgc2FtZSByZWdpb24gLSByZWdp
b24gbm90IHVuaWNvbG9yZWQuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGluc2lkZUVuY291
bnRlcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5zaWRlQ29sb3IgPSBwaXhDb2xv
cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBbZHJhd1VuaWNvbG9yVGVzdEVycm9ycyBkZXNj
cmlwdGlvbl0KKyAgICAgKiBAcGFyYW0gIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGltZworICAgICAq
IEBwYXJhbSAge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9ySW1nCisgICAgICog
QHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDAKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+
fSBwMQorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAyCisgICAgICogQHBhcmFtICB7
QXJyYXk8bnVtYmVyPn0gcDMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAg
IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLmRyYXdVbmljb2xvclRlc3RFcnJvcnMgPSBmdW5jdGlvbihp
bWcsIGVycm9ySW1nLCBwMCwgcDEsIHAyLCBwMykgeworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHhNaW4gPSBkZU1hdGguY2xhbXAoTWF0aC5taW4ocDBbMF0sIHAxWzBdLCBwMlsw
XSwgcDNbMF0pLCAwLCBpbWcuZ2V0V2lkdGgoKSAtIDEpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHlNaW4gPSBkZU1hdGguY2xhbXAoTWF0aC5taW4ocDBbMV0sIHAxWzFdLCBw
MlsxXSwgcDNbMV0pLCAwLCBpbWcuZ2V0SGVpZ2h0KCkgLSAxKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB4TWF4ID0gZGVNYXRoLmNsYW1wKE1hdGgubWF4KHAwWzBdLCBwMVsw
XSwgcDJbMF0sIHAzWzBdKSwgMCwgaW1nLmdldFdpZHRoKCkgLSAxKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB5TWF4ID0gZGVNYXRoLmNsYW1wKE1hdGgubWF4KHAwWzFdLCBw
MVsxXSwgcDJbMV0sIHAzWzFdKSwgMCwgaW1nLmdldEhlaWdodCgpIC0gMSk7CisgICAgICAgIC8q
KiBAdHlwZSB7dGN1UkdCQS5SR0JBfSAqLyB2YXIgcmVmQ29sb3IgPSBuZXcgdGN1UkdCQS5SR0JB
KGltZy5nZXRQaXhlbChNYXRoLmZsb29yKCh4TWluICsgeE1heCkgLyAyKSwgTWF0aC5mbG9vcigo
eU1pbiArIHlNYXgpIC8gMikpKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICov
IHZhciB0aHJlc2hvbGQgPSB0Y3VSR0JBLm5ld1JHQkFDb21wb25lbnRzKDMsIDMsIDMsIDMpOwor
ICAgICAgICBmb3IgKHZhciB5ID0geU1pbjsgeSA8PSB5TWF4OyB5KyspCisgICAgICAgIGZvciAo
dmFyIHggPSB4TWluOyB4IDw9IHhNYXg7IHgrKykKKyAgICAgICAgICAgIGlmIChlczNmTXVsdGlz
YW1wbGVUZXN0cy5pc0luc2lkZVF1YWQoW3gsIHldLCBwMCwgcDEsIHAyLCBwMykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXRjdVJHQkEuY29tcGFyZVRocmVzaG9sZChuZXcgdGN1UkdCQS5SR0JB
KGltZy5nZXRQaXhlbCh4LCB5KSksIHJlZkNvbG9yLCB0aHJlc2hvbGQpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGltZy5zZXRQaXhlbCh4LCB5LCB0Y3VSR0JBLlJHQkEucmVkLnRvVmVjKCkpOyAv
LyBUT0RPOiB0aGlzIG1pZ2h0IGFsc28gYmUgdG9JVmVjKCkKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3JJbWcuc2V0UGl4ZWwoWzEuMCwgMC4wLCAwLjAsIDEuMF0sIHgsIHkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAcGFy
YW0ge251bWJlcj19IG51bVNhbXBsZXNfCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gdXNlRGVw
dGhfCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gdXNlU3RlbmNpbF8KKyAgICAgKi8KKyAgICBl
czNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXMgPSBmdW5jdGlvbihudW1TYW1wbGVzXywgdXNl
RGVwdGhfLCB1c2VTdGVuY2lsXykgeworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciB1c2VGYm9fID0gdHJ1ZTsKKyAgICAgICAgaWYgKG51bVNhbXBsZXNfID09PSB1bmRlZmluZWQg
JiYgdXNlRGVwdGhfID09PSB1bmRlZmluZWQgJiYgdXNlU3RlbmNpbF8gPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgICAgIHVzZUZib18gPSBmYWxzZTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB0aGlzLnVzZUZibyA9IHVzZUZib187CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLm51bVNhbXBsZXMgPSBudW1TYW1wbGVzXyA9PT0gdW5kZWZpbmVkID8gLTEgOiBudW1T
YW1wbGVzXzsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLnVzZURlcHRoID0g
dXNlRGVwdGhfID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IHVzZURlcHRoXzsKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB0aGlzLnVzZVN0ZW5jaWwgPSB1c2VTdGVuY2lsXyA9PT0gdW5k
ZWZpbmVkID8gZmFsc2UgOiB1c2VTdGVuY2lsXzsKKworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXNpcmVkVmlld3BvcnRTaXplCisgICAgICogQHBhcmFt
IHtlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXN9IGZib1BhcmFtcworICAgICAqLworICAg
IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk11bHRpc2FtcGxlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRl
c2MsIGRlc2lyZWRWaWV3cG9ydFNpemUsIGZib1BhcmFtcykgeworICAgICAgICB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX251bVNhbXBsZXMgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5tX3ZpZXdwb3J0U2l6ZSA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fZGVzaXJlZFZpZXdwb3J0U2l6ZSA9IGRlc2lyZWRWaWV3cG9ydFNpemU7Cisg
ICAgICAgIC8qKiBAdHlwZSB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJvUGFyYW1zfSAqLyB0aGlz
Lm1fZmJvUGFyYW1zID0gZmJvUGFyYW1zOworICAgICAgICAvKiogQHR5cGUge1dlYkdMUmVuZGVy
YnVmZmVyfSAqLyB0aGlzLm1fbXNDb2xvclJibyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xSZW5kZXJidWZmZXJ9ICovIHRoaXMubV9tc0RlcHRoU3RlbmNpbFJibyA9IG51bGw7Cisg
ICAgICAgIC8qKiBAdHlwZSB7V2ViR0xSZW5kZXJidWZmZXJ9ICovIHRoaXMubV9yZXNvbHZlQ29s
b3JSYm8gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJ9ICovIHRo
aXMubV9tc0ZibyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0g
Ki8gdGhpcy5tX3Jlc29sdmVGYm8gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2F0dHJQb3NpdGlvbkxvYyA9IC0xOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2F0dHJDb2xvckxvYyA9IC0xOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3JlbmRlcldpZHRoID0gZmJvUGFyYW1z
LnVzZUZibyA/IDIgKiBkZXNpcmVkVmlld3BvcnRTaXplIDogZ2wuZHJhd2luZ0J1ZmZlcldpZHRo
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3JlbmRlckhlaWdodCA9IGZi
b1BhcmFtcy51c2VGYm8gPyAyICogZGVzaXJlZFZpZXdwb3J0U2l6ZSA6IGdsLmRyYXdpbmdCdWZm
ZXJIZWlnaHQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdmlld3BvcnRY
ID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV92aWV3cG9ydFkgPSAw
OworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdGhpcy5tX3JuZCA9IG5l
dyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkpOworICAg
ICAgICBpZiAodGhpcy5tX2Zib1BhcmFtcy51c2VGYm8pCisgICAgICAgICAgICBhc3NlcnRNc2dP
cHRpb25zKHRoaXMubV9mYm9QYXJhbXMubnVtU2FtcGxlcyA+PSAwLCAnZmJvUGFyYW1zLm51bVNh
bXBsZXMgPCAwJywgZmFsc2UsIHRydWUpOworICAgIH07CisKKyAgICBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5wcm90b3R5cGUpOworCisgICAgLyoqIENvcHkgdGhlIGNvbnN0cnVjdG9yICov
CisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk11bHRpc2FtcGxlQ2FzZTsKKworICAgIC8q
IFJlc3Qgc3RhdGVzICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNl
LnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2wuY29sb3JNYXNrKHRy
dWUsIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICBnbC5kZXB0aE1hc2sodHJ1ZSk7CisKKyAg
ICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworICAgICAgICBnbC5jbGVh
ckRlcHRoKDEuMCk7CisgICAgICAgIGdsLmNsZWFyU3RlbmNpbCgwKTsKKworICAgICAgICBnbC5k
aXNhYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVT
VCk7CisgICAgICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpCisgICAgICAgIGdsLmRpc2FibGUoZ2wu
U0FNUExFX0NPVkVSQUdFKTsKKyAgICAgICAgZ2wuZGlzYWJsZShnbC5TQU1QTEVfQUxQSEFfVE9f
Q09WRVJBR0UpOworCisgICAgICAgIGlmICh0aGlzLm1fcHJvZ3JhbSkgeworICAgICAgICAgICAg
Z2wuZGVsZXRlUHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAg
ICAgdGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLm1f
bXNDb2xvclJibykgeworICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLm1fbXND
b2xvclJibyk7CisgICAgICAgICAgdGhpcy5tX21zQ29sb3JSYm8gPSBudWxsOworICAgICAgICB9
CisgICAgICAgIGlmICh0aGlzLm1fbXNEZXB0aFN0ZW5jaWxSYm8pIHsKKyAgICAgICAgICBnbC5k
ZWxldGVSZW5kZXJidWZmZXIodGhpcy5tX21zRGVwdGhTdGVuY2lsUmJvKTsKKyAgICAgICAgICB0
aGlzLm1fbXNEZXB0aFN0ZW5jaWxSYm8gPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmICh0
aGlzLm1fcmVzb2x2ZUNvbG9yUmJvKSB7CisgICAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVy
KHRoaXMubV9yZXNvbHZlQ29sb3JSYm8pOworICAgICAgICAgIHRoaXMubV9yZXNvbHZlQ29sb3JS
Ym8gPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9tc0ZibykgeworICAg
ICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKHRoaXMubV9tc0Zibyk7CisgICAgICAgICAgdGhp
cy5tX21zRmJvID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5tX3Jlc29sdmVG
Ym8pIHsKKyAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLm1fcmVzb2x2ZUZibyk7
CisgICAgICAgICAgdGhpcy5tX3Jlc29sdmVGYm8gPSBudWxsOworICAgICAgICB9CisKKyAgICAg
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIH0KKworICAgIC8q
KgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMAor
ICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAxCisgICAgICogQHBhcmFtICB7QXJyYXk8
bnVtYmVyPn0gcDIKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBjMAorICAgICAqIEBw
YXJhbSAge0FycmF5PG51bWJlcj59IGMxCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0g
YzIKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJv
dG90eXBlLnJlbmRlclRyaWFuZ2xlX3BBc1ZlYzNjQXNWZWM0ID0gZnVuY3Rpb24ocDAsIHAxLCBw
MiwgYzAsIGMxLCBjMikgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciB2ZXJ0ZXhQb3NpdGlvbnMgPSBbCisgICAgICAgICAgICBwMFswXSwgcDBbMV0sIHAwWzJdLCAx
LjAsCisgICAgICAgICAgICBwMVswXSwgcDFbMV0sIHAxWzJdLCAxLjAsCisgICAgICAgICAgICBw
MlswXSwgcDJbMV0sIHAyWzJdLCAxLjAKKyAgICAgICAgXTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgdmVydGV4Q29sb3JzID0gWworICAgICAgICAgICAgYzBbMF0s
IGMwWzFdLCBjMFsyXSwgYzBbM10sCisgICAgICAgICAgICBjMVswXSwgYzFbMV0sIGMxWzJdLCBj
MVszXSwKKyAgICAgICAgICAgIGMyWzBdLCBjMlsxXSwgYzJbMl0sIGMyWzNdCisgICAgICAgIF07
CisKKyAgICAgICAgdmFyIHBvc0dMQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJWaWV3fSAqLyB2YXIgcG9zQnVmZmVyID0gbmV3IEZsb2F0
MzJBcnJheSh2ZXJ0ZXhQb3NpdGlvbnMpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZ
X0JVRkZFUiwgcG9zR0xCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgcG9zQnVmZmVyLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2wuZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkodGhpcy5tX2F0dHJQb3NpdGlvbkxvYyk7CisgICAgICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIodGhpcy5tX2F0dHJQb3NpdGlvbkxvYywgNCwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKKworICAgICAgICB2YXIgY29sR0xCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlclZpZXd9ICovIHZhciBjb2xCdWZmZXIgPSBu
ZXcgRmxvYXQzMkFycmF5KHZlcnRleENvbG9ycyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCBjb2xHTEJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBjb2xCdWZmZXIsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICBnbC5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh0aGlzLm1fYXR0ckNvbG9yTG9jKTsKKyAgICAgICAgZ2wudmVy
dGV4QXR0cmliUG9pbnRlcih0aGlzLm1fYXR0ckNvbG9yTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2Us
IDAsIDApOworCisgICAgICAgIGdsLnVzZVByb2dyYW0odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3Jh
bSgpKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworCisgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgZ2wuZGVs
ZXRlQnVmZmVyKGNvbEdMQnVmZmVyKTsKKyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKHBvc0dMQnVm
ZmVyKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByb3RlY3RlZAorICAgICAqIEBwYXJh
bSAge0FycmF5PG51bWJlcj59IHAwCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDEK
KyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMgorICAgICAqIEBwYXJhbSAge0FycmF5
PG51bWJlcj59IGNvbG9yCisgICAgICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlz
YW1wbGVDYXNlLnByb3RvdHlwZS5yZW5kZXJUcmlhbmdsZV9wQXNWZWMzV2l0aENvbG9yID0gZnVu
Y3Rpb24ocDAsIHAxLCBwMiwgY29sb3IpIHsKKyAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9w
QXNWZWMzY0FzVmVjNChwMCwgcDEsIHAyLCBjb2xvciwgY29sb3IsIGNvbG9yKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHByb3RlY3RlZAorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJl
cj59IHAwCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDEKKyAgICAgKiBAcGFyYW0g
IHtBcnJheTxudW1iZXI+fSBwMgorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IGMwCisg
ICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gYzEKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxu
dW1iZXI+fSBjMgorICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk11bHRpc2FtcGxl
Q2FzZS5wcm90b3R5cGUucmVuZGVyVHJpYW5nbGVfcEFzVmVjMiA9IGZ1bmN0aW9uKHAwLCBwMSwg
cDIsIGMwLCBjMSwgYzIpIHsKKyAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9wQXNWZWMzY0Fz
VmVjNCgKKyAgICAgICAgICAgIFtwMFswXSwgcDBbMV0sIDAuMF0sCisgICAgICAgICAgICBbcDFb
MF0sIHAxWzFdLCAwLjBdLAorICAgICAgICAgICAgW3AyWzBdLCBwMlsxXSwgMC4wXSwKKyAgICAg
ICAgICAgIGMwLCBjMSwgYzIpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcHJvdGVjdGVk
CisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDAKKyAgICAgKiBAcGFyYW0gIHtBcnJh
eTxudW1iZXI+fSBwMQorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAyCisgICAgICog
QHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gY29sb3IKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1w
bGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLnJlbmRlclRyaWFuZ2xlX3BBc1ZlYzJX
aXRoQ29sb3IgPSBmdW5jdGlvbihwMCwgcDEsIHAyLCBjb2xvcikgeworICAgICAgICB0aGlzLnJl
bmRlclRyaWFuZ2xlX3BBc1ZlYzIocDAsIHAxLCBwMiwgY29sb3IsIGNvbG9yLCBjb2xvcik7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKiBAcGFyYW0gIHtBcnJh
eTxudW1iZXI+fSBwMAorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAxCisgICAgICog
QHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDIKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+
fSBwMworICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IGMwCisgICAgICogQHBhcmFtICB7
QXJyYXk8bnVtYmVyPn0gYzEKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBjMgorICAg
ICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IGMzCisgICAgICovCisgICAgZXMzZk11bHRpc2Ft
cGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLnByb3RvdHlwZS5yZW5kZXJRdWFkID0gZnVuY3Rpb24o
cDAsIHAxLCBwMiwgcDMsIGMwLCBjMSwgYzIsIGMzKSB7CisgICAgICAgIHRoaXMucmVuZGVyVHJp
YW5nbGVfcEFzVmVjMihwMCwgcDEsIHAyLCBjMCwgYzEsIGMyKTsKKyAgICAgICAgdGhpcy5yZW5k
ZXJUcmlhbmdsZV9wQXNWZWMyKHAyLCBwMSwgcDMsIGMyLCBjMSwgYzMpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0g
cDAKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBwMQorICAgICAqIEBwYXJhbSAge0Fy
cmF5PG51bWJlcj59IHAyCisgICAgICogQHBhcmFtICB7QXJyYXk8bnVtYmVyPn0gcDMKKyAgICAg
KiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBjb2xvcgorICAgICAqLworICAgIGVzM2ZNdWx0aXNh
bXBsZVRlc3RzLk11bHRpc2FtcGxlQ2FzZS5wcm90b3R5cGUucmVuZGVyUXVhZF9XaXRoQ29sb3Ig
PSBmdW5jdGlvbihwMCwgcDEsIHAyLCBwMywgY29sb3IpIHsKKyAgICAgICAgdGhpcy5yZW5kZXJR
dWFkKHAwLCBwMSwgcDIsIHAzLCBjb2xvciwgY29sb3IsIGNvbG9yLCBjb2xvcik7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1i
ZXI+fSBwMAorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IHAxCisgICAgICogQHBhcmFt
ICB7QXJyYXk8bnVtYmVyPn0gY29sb3IKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0
cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLnJlbmRlckxpbmUgPSBmdW5jdGlvbihwMCwgcDEs
IGNvbG9yKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZlcnRl
eFBvc2l0aW9ucyA9IFsKKyAgICAgICAgICAgIHAwWzBdLCBwMFsxXSwgMC4wLCAxLjAsCisgICAg
ICAgICAgICBwMVswXSwgcDFbMV0sIDAuMCwgMS4wCisgICAgICAgIF07CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZlcnRleENvbG9ycyA9IFsKKyAgICAgICAgICAg
IGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdLAorICAgICAgICAgICAgY29s
b3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3JbM10KKyAgICAgICAgXTsKKworICAgICAg
ICB2YXIgcG9zR0xCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheUJ1ZmZlclZpZXd9ICovIHZhciBwb3NCdWZmZXIgPSBuZXcgRmxvYXQzMkFycmF5KHZl
cnRleFBvc2l0aW9ucyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBw
b3NHTEJ1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBwb3NC
dWZmZXIsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh0aGlzLm1fYXR0clBvc2l0aW9uTG9jKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9p
bnRlcih0aGlzLm1fYXR0clBvc2l0aW9uTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwor
CisgICAgICAgIHZhciBjb2xHTEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAv
KiogQHR5cGUge0FycmF5QnVmZmVyVmlld30gKi8gdmFyIGNvbEJ1ZmZlciA9IG5ldyBGbG9hdDMy
QXJyYXkodmVydGV4Q29sb3JzKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIGNvbEdMQnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IGNvbEJ1ZmZlciwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KHRoaXMubV9hdHRyQ29sb3JMb2MpOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKHRoaXMubV9hdHRyQ29sb3JMb2MsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisK
KyAgICAgICAgZ2wudXNlUHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAg
ICAgICBnbC5kcmF3QXJyYXlzKGdsLkxJTkVTLCAwLCAyKTsKKworICAgICAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihjb2xH
TEJ1ZmZlcik7CisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihwb3NHTEJ1ZmZlcik7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1w
bGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLnJhbmRvbWl6ZVZpZXdwb3J0ID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHRoaXMubV92aWV3cG9ydFggPSB0aGlzLm1fcm5kLmdldEludCgw
LCB0aGlzLm1fcmVuZGVyV2lkdGggLSB0aGlzLm1fdmlld3BvcnRTaXplKTsKKyAgICAgICAgdGhp
cy5tX3ZpZXdwb3J0WSA9IHRoaXMubV9ybmQuZ2V0SW50KDAsIHRoaXMubV9yZW5kZXJIZWlnaHQg
LSB0aGlzLm1fdmlld3BvcnRTaXplKTsKKworICAgICAgICBnbC52aWV3cG9ydCh0aGlzLm1fdmll
d3BvcnRYLCB0aGlzLm1fdmlld3BvcnRZLCB0aGlzLm1fdmlld3BvcnRTaXplLCB0aGlzLm1fdmll
d3BvcnRTaXplKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByb3RlY3RlZAorICAgICAq
IEByZXR1cm4ge3RjdVN1cmZhY2UuU3VyZmFjZX0KKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1w
bGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLnJlYWRJbWFnZSA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8KKyAgICAgICAgdmFy
IGRzdCA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UodGhpcy5tX3ZpZXdwb3J0U2l6ZSwgdGhpcy5t
X3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcGl4ZWxT
aXplID0gZHN0LmdldEFjY2VzcygpLmdldEZvcm1hdCgpLmdldFBpeGVsU2l6ZSgpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBhcmFtID0gZGVNYXRoLmRlSXNQb3dlck9mVHdv
MzIocGl4ZWxTaXplKSA/IE1hdGgubWluKHBpeGVsU2l6ZSwgOCkgOiAxOworICAgICAgICAvKiog
QHR5cGUge2dsdVRleHR1cmVVdGlsLlRyYW5zZmVyRm9ybWF0fSAqLyB2YXIgZm9ybWF0ID0gZ2x1
VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoZHN0LmdldEFjY2VzcygpLmdldEZvcm1hdCgp
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9IGRzdC5nZXRBY2Nl
c3MoKS5nZXRXaWR0aCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGhlaWdo
dCA9IGRzdC5nZXRBY2Nlc3MoKS5nZXRIZWlnaHQoKTsKKyAgICAgICAgaWYgKHRoaXMubV9mYm9Q
YXJhbXMudXNlRmJvKSB7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19G
UkFNRUJVRkZFUiwgdGhpcy5tX3Jlc29sdmVGYm8pOworICAgICAgICAgICAgZ2wuYmxpdEZyYW1l
YnVmZmVyKDAsIDAsIHRoaXMubV9yZW5kZXJXaWR0aCwgdGhpcy5tX3JlbmRlckhlaWdodCwgMCwg
MCwgdGhpcy5tX3JlbmRlcldpZHRoLCB0aGlzLm1fcmVuZGVySGVpZ2h0LCBnbC5DT0xPUl9CVUZG
RVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5S
RUFEX0ZSQU1FQlVGRkVSLCB0aGlzLm1fcmVzb2x2ZUZibyk7CisKKyAgICAgICAgICAgIGdsLnBp
eGVsU3RvcmVpKGdsLlBBQ0tfQUxJR05NRU5ULCBwYXJhbSk7CisgICAgICAgICAgICBnbC5yZWFk
UGl4ZWxzKHRoaXMubV92aWV3cG9ydFgsIHRoaXMubV92aWV3cG9ydFksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdC5mb3JtYXQsIGZvcm1hdC5kYXRhVHlwZSwgZHN0LmdldEFjY2VzcygpLmdldERhdGFQ
dHIoKSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
dGhpcy5tX21zRmJvKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGds
LnBpeGVsU3RvcmVpKGdsLlBBQ0tfQUxJR05NRU5ULCBwYXJhbSk7CisgICAgICAgICAgICBnbC5y
ZWFkUGl4ZWxzKHRoaXMubV92aWV3cG9ydFgsIHRoaXMubV92aWV3cG9ydFksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdC5mb3JtYXQsIGZvcm1hdC5kYXRhVHlwZSwgZHN0LmdldEFjY2VzcygpLmdldERh
dGFQdHIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9OworCisgICAg
ZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydFNoYWRlclNv
dXJjZSA9ICcnICsKKyAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAg
ICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgJ2luIG1lZGl1
bXAgdmVjNCBhX2NvbG9yO1xuJyArCisgICAgICAgICAgICAnb3V0IG1lZGl1bXAgdmVjNCB2X2Nv
bG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluKClcbicgKworICAgICAgICAgICAgJ3tc
bicgKworICAgICAgICAgICAgJyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsKKyAg
ICAgICAgICAgICcgICAgdl9jb2xvciA9IGFfY29sb3I7XG4nICsKKyAgICAgICAgICAgICd9XG4n
OworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ1NoYWRlclNvdXJjZSA9
ICcnICsKKyAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2lu
IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9u
ID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBt
YWluKClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyAgICBvX2NvbG9y
ID0gdl9jb2xvcjtcbicgKworICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgdmFyIG51bVNh
bXBsZXMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gIChnbC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExF
UykpOworICAgICAgICBpZiAoIXRoaXMubV9mYm9QYXJhbXMudXNlRmJvICYmIG51bVNhbXBsZXMg
PD0gMSkgeworICAgICAgICAgICAgdmFyIG1zZyA9ICdObyBtdWx0aXNhbXBsZSBidWZmZXJzJzsK
KyAgICAgICAgICAgIGNoZWNrTWVzc2FnZShmYWxzZSwgbXNnKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fZmJvUGFyYW1zLnVzZUZi
bykgeworICAgICAgICAgICAgaWYgKHRoaXMubV9mYm9QYXJhbXMubnVtU2FtcGxlcyA+IDApCisg
ICAgICAgICAgICAgICAgdGhpcy5tX251bVNhbXBsZXMgPSB0aGlzLm1fZmJvUGFyYW1zLm51bVNh
bXBsZXM7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnUXVlcnlpbmcgbWF4aW11bSBudW1iZXIgb2Ygc2FtcGxlcyBmb3IgJyArIGdsdVN0
clV0aWwuZ2V0UGl4ZWxGb3JtYXROYW1lKGdsLlJHQkE4KSArICcgd2l0aCBnbC5nZXRJbnRlcm5h
bGZvcm1hdFBhcmFtZXRlcigpJyk7CisgICAgICAgICAgICAgICAgdmFyIHN1cHBvcnRlZFNhbXBs
ZUNvdW50QXJyYXkgPSAvKiogQHR5cGUge0ludDMyQXJyYXl9ICovIChnbC5nZXRJbnRlcm5hbGZv
cm1hdFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCBnbC5TQU1QTEVTKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZFNhbXBsZUNvdW50QXJyYXkubGVuZ3RoID09IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICdObyBzdXBwb3J0ZWQgc2FtcGxlIGNv
dW50cyc7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTWVzc2FnZShmYWxzZSwgbXNnKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB0aGlzLm1fbnVtU2FtcGxlcyA9IHN1cHBvcnRlZFNhbXBsZUNvdW50QXJyYXlb
MF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdV
c2luZyBGQk8gb2Ygc2l6ZSAoJyArIHRoaXMubV9yZW5kZXJXaWR0aCArICcsICcgKyB0aGlzLm1f
cmVuZGVySGVpZ2h0ICsgJykgd2l0aCAnICsgdGhpcy5tX251bVNhbXBsZXMgKyAnIHNhbXBsZXMn
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFF1ZXJ5IGFuZCBs
b2cgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIHBpeGVsLgorICAgICAgICAgICAgdGhpcy5tX251bVNh
bXBsZXMgPSAgbnVtU2FtcGxlczsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5TQU1QTEVTID0nICsgdGhpcy5tX251bVNhbXBsZXMpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gUHJlcGFyZSBwcm9ncmFtLgorCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV9w
cm9ncmFtLCAnUHJvZ3JhbSBsb2FkZWQgd2hlbiBpdCBzaG91bGQgbm90IGJlLicsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW0oCisgICAgICAgICAgICBnbCwKKyAgICAgICAgICAgIGdsdVNoYWRlclByb2dy
YW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZlcnRTaGFkZXJTb3VyY2UsIGZyYWdTaGFkZXJTb3VyY2Up
KTsKKworICAgICAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNvbXBpbGUgcHJvZ3JhbScpOworCisgICAgICAgIHRo
aXMubV9hdHRyUG9zaXRpb25Mb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1fcHJvZ3Jh
bS5nZXRQcm9ncmFtKCksICdhX3Bvc2l0aW9uJyk7CisgICAgICAgIHRoaXMubV9hdHRyQ29sb3JM
b2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksICdh
X2NvbG9yJyk7CisKKyAgICAgICAgaWYgKHRoaXMubV9hdHRyUG9zaXRpb25Mb2MgPCAwIHx8IHRo
aXMubV9hdHRyQ29sb3JMb2MgPCAwKSB7CisgICAgICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IG51
bGw7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGxvY2F0
aW9ucycpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9mYm9QYXJhbXMudXNlRmJv
KSB7CisgICAgICAgICAgICAvLyBTZXR1cCBtcyBjb2xvciBSQk8uCisgICAgICAgICAgICB0aGlz
Lm1fbXNDb2xvclJibyA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9tc0NvbG9yUmJvKTsKKwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtJbnQzMkFycmF5fSAqLyB2YXIgc3VwcG9ydGVkU2FtcGxl
Q291bnRBcnJheSA9IC8qKiBAdHlwZSB7SW50MzJBcnJheX0gKi8gKGdsLmdldEludGVybmFsZm9y
bWF0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIGdsLlNBTVBMRVMpKTsKKyAg
ICAgICAgICAgIHZhciBtYXhTYW1wbGVDb3VudCA9IHN1cHBvcnRlZFNhbXBsZUNvdW50QXJyYXlb
MF07CisgICAgICAgICAgICBpZiAobWF4U2FtcGxlQ291bnQgPCB0aGlzLm1fbnVtU2FtcGxlcykg
eworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdza2lwcGluZyB0ZXN0OiAn
ICsgdGhpcy5tX251bVNhbXBsZXMgKyAnIHNhbXBsZXMgbm90IHN1cHBvcnRlZDsgbWF4IGlzICcg
KyBtYXhTYW1wbGVDb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09
IGdsLk5PX0VSUk9SLCAnc2hvdWxkIGJlIG5vIEdMIGVycm9yIGJlZm9yZSByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUnKTsKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9udW1TYW1wbGVzLCBnbC5SR0JBOCwg
dGhpcy5tX3JlbmRlcldpZHRoLCB0aGlzLm1fcmVuZGVySGVpZ2h0KTsKKyAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdzaG91bGQgYmUg
bm8gR0wgZXJyb3IgYWZ0ZXIgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlJyk7CisKKwor
ICAgICAgICAgICAgaWYgKHRoaXMubV9mYm9QYXJhbXMudXNlRGVwdGggfHwgdGhpcy5tX2Zib1Bh
cmFtcy51c2VTdGVuY2lsKSB7CisgICAgICAgICAgICAgICAgLy8gU2V0dXAgbXMgZGVwdGggJiBz
dGVuY2lsIFJCTy4KKyAgICAgICAgICAgICAgICB0aGlzLm1fbXNEZXB0aFN0ZW5jaWxSYm8gPSBn
bC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5tX21zRGVwdGhTdGVuY2lsUmJvKTsKKyAgICAgICAg
ICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVS
LCB0aGlzLm1fbnVtU2FtcGxlcywgZ2wuREVQVEgyNF9TVEVOQ0lMOCwgdGhpcy5tX3JlbmRlcldp
ZHRoLCB0aGlzLm1fcmVuZGVySGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gU2V0dXAgbXMgRkJPLgorICAgICAgICAgICAgdGhpcy5tX21zRmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgdGhpcy5tX21zRmJvKTsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCB0
aGlzLm1fbXNDb2xvclJibyk7CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJC
VUZGRVIsIHRoaXMubV9tc0RlcHRoU3RlbmNpbFJibyk7CisKKyAgICAgICAgICAgIC8vIFNldHVw
IHJlc29sdmUgY29sb3IgUkJPLgorICAgICAgICAgICAgdGhpcy5tX3Jlc29sdmVDb2xvclJibyA9
IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZl
cihnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9yZXNvbHZlQ29sb3JSYm8pOworICAgICAgICAgICAg
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE4LCB0aGlzLm1f
cmVuZGVyV2lkdGgsIHRoaXMubV9yZW5kZXJIZWlnaHQpOworCisgICAgICAgICAgICAvLyBTZXR1
cCByZXNvbHZlIEZCTy4KKyAgICAgICAgICAgIHRoaXMubV9yZXNvbHZlRmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgdGhpcy5tX3Jlc29sdmVGYm8pOworICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJC
VUZGRVIsIHRoaXMubV9yZXNvbHZlQ29sb3JSYm8pOworCisgICAgICAgICAgICAvLyBVc2UgbXMg
RkJPLgorICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCB0aGlz
Lm1fbXNGYm8pOworICAgICAgICB9CisKKyAgICAgICAgLy8gR2V0IHN1aXRhYmxlIHZpZXdwb3J0
IHNpemUuCisKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0U2l6ZSA9IE1hdGgubWluKHRoaXMubV9k
ZXNpcmVkVmlld3BvcnRTaXplLCB0aGlzLm1fcmVuZGVyV2lkdGgsIHRoaXMubV9yZW5kZXJIZWln
aHQpOworICAgICAgICB0aGlzLnJhbmRvbWl6ZVZpZXdwb3J0KCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBCYXNlIGNsYXNzIGZvciBjYXNlcyB0ZXN0
aW5nIHRoZSB2YWx1ZSBvZiBzYW1wbGUgY291bnQuCisgICAgICoKKyAgICAgKiBEcmF3cyBhIHRl
c3QgcGF0dGVybiAoZGVmaW5lZCBieSByZW5kZXJQYXR0ZXJuKCkgb2YgYW4gaW5oZXJpdGluZyBj
bGFzcykKKyAgICAgKiBhbmQgY291bnRzIHRoZSBudW1iZXIgb2YgZGlzdGluY3QgY29sb3JzIGlu
IHRoZSByZXN1bHRpbmcgaW1hZ2UuIFRoYXQKKyAgICAgKiBudW1iZXIgc2hvdWxkIGJlIGF0IGxl
YXN0IHRoZSB2YWx1ZSBvZiBzYW1wbGUgY291bnQgcGx1cyBvbmUuIFRoaXMgaXMKKyAgICAgKiBy
ZXBlYXRlZCB3aXRoIGluY3JlYXNlZCB2YWx1ZXMgb2YgbV9jdXJyZW50SXRlcmF0aW9uIHVudGls
IHRoaXMgY29ycmVjdAorICAgICAqIG51bWJlciBvZiBjb2xvcnMgaXMgZGV0ZWN0ZWQgb3IgbV9j
dXJyZW50SXRlcmF0aW9uIHJlYWNoZXMKKyAgICAgKiBtX21heE51bUl0ZXJhdGlvbnMuCisgICAg
ICoKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNl
fQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge2VzM2ZNdWx0aXNhbXBsZVRl
c3RzLkZib1BhcmFtc30gZmJvUGFyYW1zCisgICAgICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVz
dHMuTnVtU2FtcGxlc0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBmYm9QYXJhbXMpIHsKKyAg
ICAgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLmNhbGwodGhpcywgbmFt
ZSwgZGVzYywgMjU2LCBmYm9QYXJhbXMpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIERFRkFVTFRfTUFYX05VTV9JVEVSQVRJT05TID0gMTY7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB0aGlzLm1fY3VycmVudEl0ZXJhdGlvbiA9IDA7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1fbWF4TnVtSXRlcmF0aW9ucyA9IGVzM2ZNdWx0aXNhbXBsZVRl
c3RzLmdldEl0ZXJhdGlvbkNvdW50KERFRkFVTFRfTUFYX05VTV9JVEVSQVRJT05TKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VSR0JBLlJHQkE+fSAqLyB0aGlzLm1fZGV0ZWN0ZWRDb2xv
cnMgPSBbXTsKKyAgICB9OworCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxlc0Nh
c2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNh
bXBsZUNhc2UucHJvdG90eXBlKTsKKworICAgIC8qKiBDb3B5IHRoZSBjb25zdHJ1Y3RvciAqLwor
ICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk51bVNhbXBsZXNDYXNlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk51bVNhbXBsZXNDYXNlOworCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBl
czNmTXVsdGlzYW1wbGVUZXN0cy5OdW1TYW1wbGVzQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0aGlzLnJhbmRvbWl6ZVZpZXdwb3J0KCk7CisKKyAgICAgICAg
Z2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICB0aGlzLnJlbmRlclBhdHRlcm4oKTsKKworICAg
ICAgICAvLyBSZWFkIGFuZCBsb2cgcmVuZGVyZWQgaW1hZ2UuCisKKyAgICAgICAgLyoqIEB0eXBl
IHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciByZW5kZXJlZEltZyA9IHRoaXMucmVhZEltYWdl
KCk7CisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZW5kZXJlZEltYWdlJywgJ1JlbmRl
cmVkIGltYWdlJywgcmVuZGVyZWRJbWcuZ2V0QWNjZXNzKCkpOworCisgICAgICAgIC8vIERldGVj
dCBuZXcsIHByZXZpb3VzbHkgdW5zZWVuIGNvbG9ycyBmcm9tIGltYWdlLgorCisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVxdWlyZWROdW1EaXN0aW5jdENvbG9ycyA9IHRoaXMu
bV9udW1TYW1wbGVzICsgMTsKKworICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIHNhbXBsZXMg
aXMgaGlnaCAoNjQgb3IgbW9yZSksIHdlIG5lZWQgdG8gbG93ZXIgdGhlIHRocmVzaG9sZCBmb3Ig
ZGV0ZWN0aW5nIHVuaXF1ZSBjb2xvcnMsIG90aGVyd2lzZSB0d28gZXhwZWN0ZWQgdW5pcXVlIGNv
bG9ycyB3b3VsZCBiZSB0cmVhdGVkIGFzIHRoZSBzYW1lIGNvbG9yLgorICAgICAgICB2YXIgdGhy
ZXNob2xkID0gTWF0aC5taW4oMywgTWF0aC5mbG9vcigyNTUgLyB0aGlzLm1fbnVtU2FtcGxlcykg
LSAxKTsKKyAgICAgICAgdmFyIHRocmVzaG9sZFJHQkEgPSB0Y3VSR0JBLm5ld1JHQkFDb21wb25l
bnRzKHRocmVzaG9sZCwgdGhyZXNob2xkLCB0aHJlc2hvbGQsIHRocmVzaG9sZCk7CisKKyAgICAg
ICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZW5kZXJlZEltZy5nZXRIZWlnaHQoKSAmJiB0aGlzLm1f
ZGV0ZWN0ZWRDb2xvcnMubGVuZ3RoIDwgcmVxdWlyZWROdW1EaXN0aW5jdENvbG9yczsgeSsrKQor
ICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHJlbmRlcmVkSW1nLmdldFdpZHRoKCkgJiYgdGhp
cy5tX2RldGVjdGVkQ29sb3JzLmxlbmd0aCA8IHJlcXVpcmVkTnVtRGlzdGluY3RDb2xvcnM7IHgr
KykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciBjb2xvciA9
IG5ldyB0Y3VSR0JBLlJHQkEocmVuZGVyZWRJbWcuZ2V0UGl4ZWwoeCwgeSkpOworCisgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGk7CisgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdGhpcy5tX2RldGVjdGVkQ29sb3JzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHRjdVJHQkEuY29tcGFyZVRocmVzaG9sZChjb2xvciwgdGhpcy5tX2RldGVjdGVkQ29s
b3JzW2ldLCB0aHJlc2hvbGRSR0JBKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpID09PSB0aGlzLm1fZGV0ZWN0ZWRDb2xvcnMu
bGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMubV9kZXRlY3RlZENvbG9ycy5wdXNoKGNvbG9y
KTsgLy8gQ29sb3Igbm90IHByZXZpb3VzbHkgZGV0ZWN0ZWQuCisgICAgICAgIH0KKworICAgICAg
ICAvLyBMb2cgcmVzdWx0cy4KKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ051
bWJlciBvZiBkaXN0aW5jdCBjb2xvcnMgZGV0ZWN0ZWQgc28gZmFyOiAnICsgKHRoaXMubV9kZXRl
Y3RlZENvbG9ycy5sZW5ndGggPj0gcmVxdWlyZWROdW1EaXN0aW5jdENvbG9ycyA/ICdhdCBsZWFz
dCAnIDogJycpICsgdGhpcy5tX2RldGVjdGVkQ29sb3JzLmxlbmd0aCk7CisKKworICAgICAgICBp
ZiAodGhpcy5tX2RldGVjdGVkQ29sb3JzLmxlbmd0aCA8IHJlcXVpcmVkTnVtRGlzdGluY3RDb2xv
cnMpIHsKKyAgICAgICAgICAgIC8vIEhhdmVuJ3QgZGV0ZWN0ZWQgZW5vdWdoIGRpZmZlcmVudCBj
b2xvcnMgeWV0LgorCisgICAgICAgICAgICB0aGlzLm1fY3VycmVudEl0ZXJhdGlvbisrOworCisg
ICAgICAgICAgICBpZiAodGhpcy5tX2N1cnJlbnRJdGVyYXRpb24gPj0gdGhpcy5tX21heE51bUl0
ZXJhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbHVyZTog
TnVtYmVyIG9mIGRpc3RpbmN0IGNvbG9ycyBkZXRlY3RlZCBpcyBsb3dlciB0aGFuIHNhbXBsZSBj
b3VudCsxJywgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnVGhlIG51bWJlciBvZiBkaXN0aW5jdCBj
b2xvcnMgZGV0ZWN0ZWQgaXMgbG93ZXIgdGhhbiBzYW1wbGUgY291bnQrMSAtIHRyeWluZyBhZ2Fp
biB3aXRoIGEgc2xpZ2h0bHkgYWx0ZXJlZCBwYXR0ZXJuJyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygn
U3VjY2VzczogVGhlIG51bWJlciBvZiBkaXN0aW5jdCBjb2xvcnMgZGV0ZWN0ZWQgaXMgYXQgbGVh
c3Qgc2FtcGxlIGNvdW50KzEnLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2Fz
ZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAg
KiBAZXh0ZW5kcyB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxlc0Nhc2V9CisgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFyYW0ge3N0
cmluZ30gZGVzYworICAgICogQHBhcmFtIHtudW1iZXI9fSBudW1GYm9TYW1wbGVzCisgICAgKi8K
KyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5Qb2x5Z29uTnVtU2FtcGxlc0Nhc2UgPSBmdW5jdGlv
bihuYW1lLCBkZXNjLCBudW1GYm9TYW1wbGVzKSB7CisgICAgICAgIG51bUZib1NhbXBsZXMgPSBu
dW1GYm9TYW1wbGVzID09PSB1bmRlZmluZWQgPyAwIDogbnVtRmJvU2FtcGxlczsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXN9ICovCisgICAgICAgIHZh
ciBwYXJhbXMgPSBudW1GYm9TYW1wbGVzID49IDAgPyBuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMu
RmJvUGFyYW1zKG51bUZib1NhbXBsZXMsIGZhbHNlLCBmYWxzZSkgOiBuZXcgZXMzZk11bHRpc2Ft
cGxlVGVzdHMuRmJvUGFyYW1zKCk7CisgICAgICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk51bVNh
bXBsZXNDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYywgcGFyYW1zKTsKKyAgICB9OworCisgICAg
ZXMzZk11bHRpc2FtcGxlVGVzdHMuUG9seWdvbk51bVNhbXBsZXNDYXNlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxlc0Nhc2UucHJvdG90eXBl
KTsKKworICAgIC8qKiBDb3B5IHRoZSBjb25zdHJ1Y3RvciAqLworICAgIGVzM2ZNdWx0aXNhbXBs
ZVRlc3RzLlBvbHlnb25OdW1TYW1wbGVzQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
TXVsdGlzYW1wbGVUZXN0cy5Qb2x5Z29uTnVtU2FtcGxlc0Nhc2U7CisKKyAgICBlczNmTXVsdGlz
YW1wbGVUZXN0cy5Qb2x5Z29uTnVtU2FtcGxlc0Nhc2UucHJvdG90eXBlLnJlbmRlclBhdHRlcm4g
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVGhlIHRlc3QgcGF0dGVybiBjb25zaXN0cyBvZiBz
ZXZlcmFsIHRyaWFuZ2xlcyB3aXRoIGVkZ2VzIGF0IGRpZmZlcmVudCBhbmdsZXMuCisKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1UcmlhbmdsZXMgPSAyNTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBudW1UcmlhbmdsZXM7IGkrKykgeworICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBhbmdsZTAgPSAyLjAgKiBNYXRoLlBJICogaSAvIG51bVRy
aWFuZ2xlcyArIDAuMDAxICogdGhpcy5tX2N1cnJlbnRJdGVyYXRpb247CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFuZ2xlMSA9IDIuMCAqIE1hdGguUEkgKiAoaSArIDAu
NSkgLyBudW1UcmlhbmdsZXMgKyAwLjAwMSAqIHRoaXMubV9jdXJyZW50SXRlcmF0aW9uOworCisg
ICAgICAgICAgICB0aGlzLnJlbmRlclRyaWFuZ2xlX3BBc1ZlYzJXaXRoQ29sb3IoCisgICAgICAg
ICAgICAgICAgWzAuMCwgMC4wXSwKKyAgICAgICAgICAgICAgICBbTWF0aC5jb3MoYW5nbGUwKSAq
IDAuOTUsIE1hdGguc2luKGFuZ2xlMCkgKiAwLjk1XSwKKyAgICAgICAgICAgICAgICBbTWF0aC5j
b3MoYW5nbGUxKSAqIDAuOTUsIE1hdGguc2luKGFuZ2xlMSkgKiAwLjk1XSwKKyAgICAgICAgICAg
ICAgICBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgKiBAZXh0ZW5kcyB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxlc0Nhc2V9Cisg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBAcGFy
YW0ge3N0cmluZ30gZGVzYworICAgICogQHBhcmFtIHtudW1iZXI9fSBudW1GYm9TYW1wbGVzCisg
ICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5MaW5lTnVtU2FtcGxlc0Nhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjLCBudW1GYm9TYW1wbGVzKSB7CisgICAgICAgIG51bUZib1NhbXBsZXMg
PSBudW1GYm9TYW1wbGVzID09PSB1bmRlZmluZWQgPyAwIDogbnVtRmJvU2FtcGxlczsKKyAgICAg
ICAgLyoqIEB0eXBlIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXN9ICovCisgICAgICAg
IHZhciBwYXJhbXMgPSBudW1GYm9TYW1wbGVzID49IDAgPyBuZXcgZXMzZk11bHRpc2FtcGxlVGVz
dHMuRmJvUGFyYW1zKG51bUZib1NhbXBsZXMsIGZhbHNlLCBmYWxzZSkgOiBuZXcgZXMzZk11bHRp
c2FtcGxlVGVzdHMuRmJvUGFyYW1zKCk7CisgICAgICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk51
bVNhbXBsZXNDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYywgcGFyYW1zKTsKKyAgICB9OworCisg
ICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTGluZU51bVNhbXBsZXNDYXNlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxlc0Nhc2UucHJvdG90eXBl
KTsKKworICAgIC8qKiBDb3B5IHRoZSBjb25zdHJ1Y3RvciAqLworICAgIGVzM2ZNdWx0aXNhbXBs
ZVRlc3RzLkxpbmVOdW1TYW1wbGVzQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmTXVs
dGlzYW1wbGVUZXN0cy5MaW5lTnVtU2FtcGxlc0Nhc2U7CisKKyAgICBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5MaW5lTnVtU2FtcGxlc0Nhc2UucHJvdG90eXBlLnJlbmRlclBhdHRlcm4gPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgLy8gVGhlIHRlc3QgcGF0dGVybiBjb25zaXN0cyBvZiBzZXZlcmFsIGxp
bmVzIGF0IGRpZmZlcmVudCBhbmdsZXMuCisKKyAgICAgICAgLy8gV2Ugc2NhbGUgdGhlIG51bWJl
ciBvZiBsaW5lcyBiYXNlZCBvbiB0aGUgdmlld3BvcnQgc2l6ZS4gVGhpcyBpcyBiZWNhdXNlIGEg
Z2wgbGluZSdzIHRoaWNrbmVzcyBpcworICAgICAgICAvLyBjb25zdGFudCBpbiBwaXhlbCB1bml0
cywgaS5lLiB0aGV5IGdldCByZWxhdGl2ZWx5IHRoaWNrZXIgYXMgdmlld3BvcnQgc2l6ZSBkZWNy
ZWFzZXMuIFRodXMgd2UgbXVzdAorICAgICAgICAvLyBkZWNyZWFzZSB0aGUgbnVtYmVyIG9mIGxp
bmVzIGluIG9yZGVyIHRvIGRlY3JlYXNlIHRoZSBleHRlbnQgb2Ygb3ZlcmxhcCBhbW9uZyB0aGUg
bGluZXMgaW4gdGhlCisgICAgICAgIC8vIGNlbnRlciBvZiB0aGUgcGF0dGVybi4KKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1MaW5lcyA9IE1hdGguZmxvb3IoMTAwLjAgKiBN
YXRoLnNxcnQodGhpcy5tX3ZpZXdwb3J0U2l6ZSAvIDI1Ni4wKSk7CisKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBudW1MaW5lczsgaSsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGFuZ2xlID0gMi4wICogTWF0aC5QSSAqIGkgLyBudW1MaW5lcyArIDAuMDAx
ICogdGhpcy5tX2N1cnJlbnRJdGVyYXRpb247CisgICAgICAgICAgICB0aGlzLnJlbmRlckxpbmUo
WzAuMCwgMC4wXSwgW01hdGguY29zKGFuZ2xlKSAqIDAuOTUsIE1hdGguc2luKGFuZ2xlKSAqIDAu
OTVdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQ2FzZSB0ZXN0aW5nIGJlaGF2aW91ciBvZiBjb21tb24gZWRnZXMgd2hlbiBtdWx0
aXNhbXBsaW5nLgorICAgICAqCisgICAgICogRHJhd3MgYSBudW1iZXIgb2YgdGVzdCBwYXR0ZXJu
cywgZWFjaCB3aXRoIGEgbnVtYmVyIG9mIHF1YWRzLCBlYWNoIG1hZGUKKyAgICAgKiBvZiB0d28g
dHJpYW5nbGVzLCByb3RhdGVkIGF0IGRpZmZlcmVudCBhbmdsZXMuIFRoZSBpbm5lciBlZGdlIGlu
c2lkZSB0aGUKKyAgICAgKiBxdWFkIChpLmUuIHRoZSBjb21tb24gZWRnZSBvZiB0aGUgdHdvIHRy
aWFuZ2xlcykgc3RpbGwgc2hvdWxkIG5vdCBiZQorICAgICAqIHZpc2libGUsIGRlc3BpdGUgbXVs
dGlzYW1wbGluZyAtIGkuZS4gdGhlIHR3byB0cmlhbmdsZXMgZm9ybWluZyB0aGUgcXVhZAorICAg
ICAqIHNob3VsZCBuZXZlciBnZXQgYW55IGNvbW1vbiBjb3ZlcmFnZSBiaXRzIGluIGFueSBwaXhl
bC4KKyAgICAgKgorICAgICAqIEBleHRlbmRzIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNh
bXBsZUNhc2V9CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7ZXMzZk11bHRp
c2FtcGxlVGVzdHMuQ29tbW9uRWRnZUNhc2UuQ2FzZVR5cGV9IGNhc2VUeXBlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG51bUZib1NhbXBsZXMKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5Db21tb25FZGdlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGNhc2VUeXBlLCBudW1G
Ym9TYW1wbGVzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY2FzZXMgPSBj
YXNlVHlwZSA9PT0gZXMzZk11bHRpc2FtcGxlVGVzdHMuQ29tbW9uRWRnZUNhc2UuQ2FzZVR5cGUu
U01BTExfUVVBRFMgPyAxMjggOiAzMjsKKyAgICAgICAgbnVtRmJvU2FtcGxlcyA9IG51bUZib1Nh
bXBsZXMgPT09IHVuZGVmaW5lZCA/IDAgOiBudW1GYm9TYW1wbGVzOworICAgICAgICAvKiogQHR5
cGUge2VzM2ZNdWx0aXNhbXBsZVRlc3RzLkZib1BhcmFtc30gKi8KKyAgICAgICAgdmFyIHBhcmFt
cyA9IG51bUZib1NhbXBsZXMgPj0gMCA/IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJh
bXMobnVtRmJvU2FtcGxlcywgZmFsc2UsIGZhbHNlKSA6IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0
cy5GYm9QYXJhbXMoKTsKKworICAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBs
ZUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBjYXNlcywgcGFyYW1zKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBERUZBVUxUX1NNQUxMX1FVQURTX0lURVJBVElPTlMgPSAx
NjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBERUZBVUxUX0JJR0dFUl9USEFO
X1ZJRVdQT1JUX1FVQURfSVRFUkFUSU9OUyA9IDY0OyAvLyA4KjgKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZS5DYXNlVHlwZX0gKi8gdGhpcy5t
X2Nhc2VUeXBlID0gY2FzZVR5cGU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
Lm1fY3VycmVudEl0ZXJhdGlvbiA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
ICAgICAgICB0aGlzLm1fbnVtSXRlcmF0aW9ucyA9IGNhc2VUeXBlID09PSBlczNmTXVsdGlzYW1w
bGVUZXN0cy5Db21tb25FZGdlQ2FzZS5DYXNlVHlwZS5TTUFMTF9RVUFEUyA/IGVzM2ZNdWx0aXNh
bXBsZVRlc3RzLmdldEl0ZXJhdGlvbkNvdW50KERFRkFVTFRfU01BTExfUVVBRFNfSVRFUkFUSU9O
UykgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VUeXBlID09PSBlczNmTXVs
dGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZS5DYXNlVHlwZS5CSUdHRVJfVEhBTl9WSUVXUE9S
VF9RVUFEID8gZXMzZk11bHRpc2FtcGxlVGVzdHMuZ2V0SXRlcmF0aW9uQ291bnQoREVGQVVMVF9C
SUdHRVJfVEhBTl9WSUVXUE9SVF9RVUFEX0lURVJBVElPTlMpIDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4OworICAgIH07CisKKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21t
b25FZGdlQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZNdWx0aXNhbXBsZVRlc3Rz
Lk11bHRpc2FtcGxlQ2FzZS5wcm90b3R5cGUpOworCisgICAgLyoqIENvcHkgdGhlIGNvbnN0cnVj
dG9yICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuQ29tbW9uRWRnZUNhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZXMzZk11bHRpc2FtcGxlVGVzdHMuQ29tbW9uRWRnZUNhc2U7CisKKyAg
ICAvKioKKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBs
ZVRlc3RzLkNvbW1vbkVkZ2VDYXNlLkNhc2VUeXBlID0geworICAgICAgICBTTUFMTF9RVUFEUzog
MCwgICAgICAgICAgICAgICAgICAvLyE8IERyYXcgc2V2ZXJhbCBzbWFsbCBxdWFkcyBwZXIgaXRl
cmF0aW9uLgorICAgICAgICBCSUdHRVJfVEhBTl9WSUVXUE9SVF9RVUFEOiAxLCAvLyE8IERyYXcg
b25lIGJpZ2dlci10aGFuLXZpZXdwb3J0IHF1YWQgcGVyIGl0ZXJhdGlvbi4KKyAgICAgICAgRklU
X1ZJRVdQT1JUX1FVQUQ6IDIgICAgICAgICAgLy8hPCBEcmF3IG9uZSBleGFjdGx5IHZpZXdwb3J0
LXNpemVkLCBheGlzIGFsaWduZWQgcXVhZCBwZXIgaXRlcmF0aW9uLgorICAgIH07CisKKyAgICBl
czNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgaW5pdGVkID0gZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlz
YW1wbGVDYXNlLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7CisgICAgICAgIGlmICghaW5pdGVk
KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5tX2Nhc2VUeXBlID09PSBlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZS5D
YXNlVHlwZS5TTUFMTF9RVUFEUykgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgYmlnIGVu
b3VnaCB2aWV3cG9ydC4gV2l0aCB0b28gc21hbGwgdmlld3BvcnRzIHRoZSB0ZXN0IGNhc2UgY2Fu
J3QgYW5hbHl6ZSB0aGUgcmVzdWx0aW5nIGltYWdlIHdlbGwgZW5vdWdoLgorCisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pblZpZXdwb3J0U2l6ZSA9IDMyOworCisgICAg
ICAgICAgICBpZiAodGhpcy5tX3ZpZXdwb3J0U2l6ZSA8IG1pblZpZXdwb3J0U2l6ZSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbmRlciB0YXJnZXQgd2lkdGggb3IgaGVpZ2h0
IHRvbyBsb3cgKGlzICcgKyB0aGlzLm1fdmlld3BvcnRTaXplICsgJywgc2hvdWxkIGJlIGF0IGxl
YXN0ICcgKyBtaW5WaWV3cG9ydFNpemUgKyAnKScpOworICAgICAgICB9CisKKyAgICAgICAgZ2wu
ZW5hYmxlKGdsLkJMRU5EKTsKKyAgICAgICAgZ2wuYmxlbmRFcXVhdGlvbihnbC5GVU5DX0FERCk7
CisgICAgICAgIGdsLmJsZW5kRnVuYyhnbC5PTkUsIGdsLk9ORSk7CisgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdBZGRpdGl2ZSBibGVuZGluZyBlbmFibGVkIGluIG9yZGVyIHRvIGRldGVj
dCAoZXJyb25lb3VzbHkpIG92ZXJsYXBwaW5nIHNhbXBsZXMnKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAg
ICBlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8g
dmFyIGVycm9ySW1nID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh0aGlzLm1fdmlld3BvcnRTaXpl
LCB0aGlzLm1fdmlld3BvcnRTaXplKTsKKworICAgICAgICB0aGlzLnJhbmRvbWl6ZVZpZXdwb3J0
KCk7CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICAvLyBEcmF3IHRlc3Qg
cGF0dGVybi4gVGVzdCBwYXR0ZXJucyBjb25zaXN0IG9mIHF1YWRzIGZvcm1lZCB3aXRoIHR3byB0
cmlhbmdsZXMuCisgICAgICAgIC8vIEFmdGVyIGRyYXdpbmcgdGhlIHBhdHRlcm4sIHdlIGNoZWNr
IHRoYXQgdGhlIGludGVyaW9yIHBpeGVscyBvZiBlYWNoIHF1YWQgYXJlCisgICAgICAgIC8vIGFs
bCB0aGUgc2FtZSBjb2xvciAtIHRoaXMgaXMgbWVhbnQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJl
IG5vIGFydGlmYWN0cyBvbiB0aGUgaW5uZXIgZWRnZS4KKworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlF1YWRDb3JuZXJzPn0gKi8gdmFyIHVuaWNvbG9yZWRS
ZWdpb25zID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0g
Ki8gdmFyIGNvcm5lcnM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYW5nbGVD
b3M7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYW5nbGVTaW47CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYW5nbGU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgcXVhZERpYWdMZW47CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgdW5pY29sb3JSZWdpb25TY2FsZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBxdWFkQmFzZUFuZ2xlTmR4CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcXVh
ZFN1YkFuZ2xlTmR4OworCisgICAgICAgIGlmICh0aGlzLm1fY2FzZVR5cGUgPT0gZXMzZk11bHRp
c2FtcGxlVGVzdHMuQ29tbW9uRWRnZUNhc2UuQ2FzZVR5cGUuU01BTExfUVVBRFMpIHsKKyAgICAg
ICAgICAgIC8vIERyYXcgc2V2ZXJhbCBxdWFkcywgcm90YXRlZCBhdCBkaWZmZXJlbnQgYW5nbGVz
LgorCisgICAgICAgICAgICBxdWFkRGlhZ0xlbiA9IDIuMCAvIDMuMCAqIDAuOTsgLy8gXG5vdGUg
Rml0IDMgcXVhZHMgaW4gYm90aCB4IGFuZCB5IGRpcmVjdGlvbnMuCisKKworICAgICAgICAgICAg
Ly8gXG5vdGUgRmlyc3QgYW5kIHNlY29uZCBpdGVyYXRpb24gZ2V0IGV4YWN0IDAgKGFuZCA5MCwg
MTgwLCAyNzApIGFuZCA0NSAoYW5kIDEzNSwgMjI1LCAzMTUpIGFuZ2xlIHF1YWRzLCBhcyB0aGV5
IGFyZSBraW5kIG9mIGEgc3BlY2lhbCBjYXNlLgorCisgICAgICAgICAgICBpZiAodGhpcy5tX2N1
cnJlbnRJdGVyYXRpb24gPT09IDApIHsKKyAgICAgICAgICAgICAgICBhbmdsZUNvcyA9IDEuMDsK
KyAgICAgICAgICAgICAgICBhbmdsZVNpbiA9IDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKHRoaXMubV9jdXJyZW50SXRlcmF0aW9uID09PSAxKSB7CisgICAgICAgICAg
ICAgICAgYW5nbGVDb3MgPSBNYXRoLlNRUlQxXzI7CisgICAgICAgICAgICAgICAgYW5nbGVTaW4g
PSBNYXRoLlNRUlQxXzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBhbmdsZSA9IDAuNSAqIE1hdGguUEkgKiAodGhpcy5tX2N1cnJlbnRJdGVyYXRp
b24gLSAxKSAvICh0aGlzLm1fbnVtSXRlcmF0aW9ucyAtIDEpOworICAgICAgICAgICAgICAgIGFu
Z2xlQ29zID0gTWF0aC5jb3MoYW5nbGUpOworICAgICAgICAgICAgICAgIGFuZ2xlU2luID0gTWF0
aC5zaW4oYW5nbGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb3JuZXJzID0gWwor
ICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShbYW5nbGVDb3MsIGFuZ2xlU2luXSwgMC41ICog
cXVhZERpYWdMZW4pLAorICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShbLWFuZ2xlU2luLCBh
bmdsZUNvc10sIDAuNSAqIHF1YWREaWFnTGVuKSwKKyAgICAgICAgICAgICAgICBkZU1hdGguc2Nh
bGUoWy1hbmdsZUNvcywgLWFuZ2xlU2luXSwgMC41ICogcXVhZERpYWdMZW4pLAorICAgICAgICAg
ICAgICAgIGRlTWF0aC5zY2FsZShbYW5nbGVTaW4sIC1hbmdsZUNvc10sIDAuNSAqIHF1YWREaWFn
TGVuKQorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgLy8gRHJhdyA4IHF1YWRzLgorICAg
ICAgICAgICAgLy8gRmlyc3QgZm91ciBhcmUgcm90YXRlZCBhdCBhbmdsZXMgYW5nbGUrMCwgYW5n
bGUrOTAsIGFuZ2xlKzE4MCBhbmQgYW5nbGUrMjcwLgorICAgICAgICAgICAgLy8gTGFzdCBmb3Vy
IGFyZSByb3RhdGVkIHRoZSBzYW1lIGFuZ2xlcyBhcyB0aGUgZmlyc3QgZm91ciwgYnV0IHRoZSBv
cmRlcmluZyBvZiB0aGUgbGFzdCB0cmlhbmdsZSdzIHZlcnRpY2VzIGlzIHJldmVyc2VkLgorCisg
ICAgICAgICAgICBmb3IgKHZhciBxdWFkTmR4ID0gMDsgcXVhZE5keCA8IDg7IHF1YWROZHgrKykg
eworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAg
ICAgICAgICB2YXIgY2VudGVyID0gZGVNYXRoLmFkZFNjYWxhcigKKyAgICAgICAgICAgICAgICAg
ICAgZGVNYXRoLnNjYWxlKFtxdWFkTmR4ICUgMywgcXVhZE5keCAvIDNdLCAoMi4wIC0gcXVhZERp
YWdMZW4pLyAyLjApLAorICAgICAgICAgICAgICAgICAgICAoLTAuNSAqICgyLjAgLSBxdWFkRGlh
Z0xlbikpKTsKKworICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJpYW5nbGVfcEFzVmVjMldp
dGhDb2xvcigKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZChjb3JuZXJzWygwICsgcXVh
ZE5keCkgJSA0XSwgY2VudGVyKSwKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZChjb3Ju
ZXJzWygxICsgcXVhZE5keCkgJSA0XSwgY2VudGVyKSwKKyAgICAgICAgICAgICAgICAgICAgZGVN
YXRoLmFkZChjb3JuZXJzWygyICsgcXVhZE5keCkgJSA0XSwgY2VudGVyKSwKKyAgICAgICAgICAg
ICAgICAgICAgWzAuNSwgMC41LCAwLjUsIDEuMF0pOworCisgICAgICAgICAgICAgICAgaWYgKHF1
YWROZHggPj0gNCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyaWFuZ2xlX3BB
c1ZlYzJXaXRoQ29sb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguYWRkKGNvcm5l
cnNbKDMgKyBxdWFkTmR4KSAlIDRdLCBjZW50ZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGVNYXRoLmFkZChjb3JuZXJzWygyICsgcXVhZE5keCkgJSA0XSwgY2VudGVyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoY29ybmVyc1soMCArIHF1YWROZHgpICUgNF0sIGNl
bnRlciksCisgICAgICAgICAgICAgICAgICAgICAgICBbMC41LCAwLjUsIDAuNSwgMS4wXSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLnJlbmRlclRyaWFuZ2xlX3BBc1ZlYzJXaXRoQ29sb3IoCisgICAgICAgICAgICAg
ICAgICAgICAgICBkZU1hdGguYWRkKGNvcm5lcnNbKDAgKyBxdWFkTmR4KSAlIDRdLCBjZW50ZXIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZChjb3JuZXJzWygyICsgcXVhZE5k
eCkgJSA0XSwgY2VudGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoY29y
bmVyc1soMyArIHF1YWROZHgpICUgNF0sIGNlbnRlciksCisgICAgICAgICAgICAgICAgICAgICAg
ICBbMC41LCAwLjUsIDAuNSwgMS4wXSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gVGhlIHNpemUgb2YgdGhlICdpbnRlcmlvcicgb2YgYSBxdWFkIGlzIGFzc3VtZWQg
dG8gYmUgYXBwcm94aW1hdGVseSB1bmljb2xvclJlZ2lvblNjYWxlKjxhY3R1YWwgc2l6ZSBvZiBx
dWFkPi4KKyAgICAgICAgICAgICAgICAvLyBCeSAnaW50ZXJpb3InIHdlIGhlcmUgbWVhbiB0aGUg
cmVnaW9uIG9mIG5vbi1ib3VuZGFyeSBwaXhlbHMgb2YgdGhlIHJlbmRlcmVkIHF1YWQgZm9yIHdo
aWNoIHdlIGNhbiBzYWZlbHkgYXNzdW1lCisgICAgICAgICAgICAgICAgLy8gdGhhdCBpdCBoYXMg
YWxsIGNvdmVyYWdlIGJpdHMgc2V0IHRvIDEsIGZvciBldmVyeSBwaXhlbC4KKyAgICAgICAgICAg
ICAgICB1bmljb2xvclJlZ2lvblNjYWxlID0gMS4wIC0gNi4wICogMi4wIC8gdGhpcy5tX3ZpZXdw
b3J0U2l6ZSAvIHF1YWREaWFnTGVuOworICAgICAgICAgICAgICAgIHVuaWNvbG9yZWRSZWdpb25z
LnB1c2goCisgICAgICAgICAgICAgICAgICAgIG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5RdWFk
Q29ybmVycygKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoY2VudGVyLCBkZU1h
dGguc2NhbGUoY29ybmVyc1swXSwgdW5pY29sb3JSZWdpb25TY2FsZSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZGVNYXRoLmFkZChjZW50ZXIsIGRlTWF0aC5zY2FsZShjb3JuZXJzWzFdLCB1
bmljb2xvclJlZ2lvblNjYWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguYWRk
KGNlbnRlciwgZGVNYXRoLnNjYWxlKGNvcm5lcnNbMl0sIHVuaWNvbG9yUmVnaW9uU2NhbGUpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoY2VudGVyLCBkZU1hdGguc2NhbGUo
Y29ybmVyc1szXSwgdW5pY29sb3JSZWdpb25TY2FsZSkpKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAodGhpcy5tX2Nhc2VUeXBlID09PSBlczNmTXVsdGlzYW1w
bGVUZXN0cy5Db21tb25FZGdlQ2FzZS5DYXNlVHlwZS5CSUdHRVJfVEhBTl9WSUVXUE9SVF9RVUFE
KSB7CisgICAgICAgICAgICAvLyBEcmF3IGEgYmlnZ2VyLXRoYW4tdmlld3BvcnQgcXVhZCwgcm90
YXRlZCBhdCBhbiBhbmdsZSBkZXBlbmRpbmcgb24gbV9jdXJyZW50SXRlcmF0aW9uLgorCisgICAg
ICAgICAgICBxdWFkQmFzZUFuZ2xlTmR4ID0gTWF0aC5mbG9vcih0aGlzLm1fY3VycmVudEl0ZXJh
dGlvbiAvIDgpOworICAgICAgICAgICAgcXVhZFN1YkFuZ2xlTmR4ID0gdGhpcy5tX2N1cnJlbnRJ
dGVyYXRpb24gJSA4OworCisgICAgICAgICAgICBpZiAocXVhZEJhc2VBbmdsZU5keCA9PT0gMCkg
eworICAgICAgICAgICAgICAgIGFuZ2xlQ29zID0gMS4wOworICAgICAgICAgICAgICAgIGFuZ2xl
U2luID0gMC4wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVhZEJhc2VB
bmdsZU5keCA9PT0gMSkgeworICAgICAgICAgICAgICAgIGFuZ2xlQ29zID0gTWF0aC5TUVJUMV8y
OworICAgICAgICAgICAgICAgIGFuZ2xlU2luID0gTWF0aC5TUVJUMV8yOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYW5nbGUgPSAwLjUgKiBNYXRo
LlBJICogKHRoaXMubV9jdXJyZW50SXRlcmF0aW9uIC0gMSkgLyAodGhpcy5tX251bUl0ZXJhdGlv
bnMgLSAxKTsKKyAgICAgICAgICAgICAgICBhbmdsZUNvcyA9IE1hdGguY29zKGFuZ2xlKTsKKyAg
ICAgICAgICAgICAgICBhbmdsZVNpbiA9IE1hdGguc2luKGFuZ2xlKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcXVhZERpYWdMZW4gPSAyLjUgLyBNYXRoLm1heChhbmdsZUNvcywgYW5n
bGVTaW4pOworCisgICAgICAgICAgICBjb3JuZXJzID0gWworICAgICAgICAgICAgICAgIGRlTWF0
aC5zY2FsZShbYW5nbGVDb3MsIGFuZ2xlU2luXSwgMC41ICogcXVhZERpYWdMZW4pLAorICAgICAg
ICAgICAgICAgIGRlTWF0aC5zY2FsZShbLWFuZ2xlU2luLCBhbmdsZUNvc10sIDAuNSAqIHF1YWRE
aWFnTGVuKSwKKyAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUoWy1hbmdsZUNvcywgLWFuZ2xl
U2luXSwgMC41ICogcXVhZERpYWdMZW4pLAorICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShb
YW5nbGVTaW4sIC1hbmdsZUNvc10sIDAuNSAqIHF1YWREaWFnTGVuKQorICAgICAgICAgICAgXTsK
KworICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9wQXNWZWMyV2l0aENvbG9yKAorICAg
ICAgICAgICAgICAgIGNvcm5lcnNbKDAgKyBxdWFkU3ViQW5nbGVOZHgpICUgNF0sCisgICAgICAg
ICAgICAgICAgY29ybmVyc1soMSArIHF1YWRTdWJBbmdsZU5keCkgJSA0XSwKKyAgICAgICAgICAg
ICAgICBjb3JuZXJzWygyICsgcXVhZFN1YkFuZ2xlTmR4KSAlIDRdLAorICAgICAgICAgICAgICAg
IFswLjUsIDAuNSwgMC41LCAxLjBdKTsKKworICAgICAgICAgICAgaWYgKHF1YWRTdWJBbmdsZU5k
eCA+PSA0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9wQXNWZWMyV2l0
aENvbG9yKAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygzICsgcXVhZFN1YkFuZ2xlTmR4
KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygyICsgcXVhZFN1YkFuZ2xlTmR4
KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygwICsgcXVhZFN1YkFuZ2xlTmR4
KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBbMC41LCAwLjUsIDAuNSwgMS4wXSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbmRl
clRyaWFuZ2xlX3BBc1ZlYzJXaXRoQ29sb3IoCisgICAgICAgICAgICAgICAgICAgIGNvcm5lcnNb
KDAgKyBxdWFkU3ViQW5nbGVOZHgpICUgNF0sCisgICAgICAgICAgICAgICAgICAgIGNvcm5lcnNb
KDIgKyBxdWFkU3ViQW5nbGVOZHgpICUgNF0sCisgICAgICAgICAgICAgICAgICAgIGNvcm5lcnNb
KDMgKyBxdWFkU3ViQW5nbGVOZHgpICUgNF0sCisgICAgICAgICAgICAgICAgICAgIFswLjUsIDAu
NSwgMC41LCAxLjBdKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5pY29sb3JSZWdp
b25TY2FsZSA9IDEuMCAtIDYuMCAqIDIuMCAvIHRoaXMubV92aWV3cG9ydFNpemUgLyBxdWFkRGlh
Z0xlbjsKKyAgICAgICAgICAgIHVuaWNvbG9yZWRSZWdpb25zLnB1c2goCisgICAgICAgICAgICAg
ICAgbmV3IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlF1YWRDb3JuZXJzKAorICAgICAgICAgICAgICAg
ICAgICBkZU1hdGguc2NhbGUoY29ybmVyc1swXSwgdW5pY29sb3JSZWdpb25TY2FsZSksCisgICAg
ICAgICAgICAgICAgICAgIGRlTWF0aC5zY2FsZShjb3JuZXJzWzFdLCB1bmljb2xvclJlZ2lvblNj
YWxlKSwKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLnNjYWxlKGNvcm5lcnNbMl0sIHVuaWNv
bG9yUmVnaW9uU2NhbGUpLAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUoY29ybmVy
c1szXSwgdW5pY29sb3JSZWdpb25TY2FsZSkpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
ICh0aGlzLm1fY2FzZVR5cGUgPT09IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNvbW1vbkVkZ2VDYXNl
LkNhc2VUeXBlLkZJVF9WSUVXUE9SVF9RVUFEKSB7CisgICAgICAgICAgICAvLyBEcmF3IGFuIGV4
YWN0bHkgdmlld3BvcnQtc2l6ZWQgcXVhZCwgcm90YXRlZCBieSBtdWx0aXBsZXMgb2YgOTAgZGVn
cmVlcyBhbmdsZSBkZXBlbmRpbmcgb24gbV9jdXJyZW50SXRlcmF0aW9uLgorCisgICAgICAgICAg
ICBxdWFkU3ViQW5nbGVOZHggPSB0aGlzLm1fY3VycmVudEl0ZXJhdGlvbiAlIDg7CisKKyAgICAg
ICAgICAgIGNvcm5lcnMgPSBbCisgICAgICAgICAgICAgICAgWzEuMCwgMS4wXSwKKyAgICAgICAg
ICAgICAgICBbLTEuMCwgMS4wXSwKKyAgICAgICAgICAgICAgICBbLTEuMCwgLTEuMF0sCisgICAg
ICAgICAgICAgICAgWzEuMCwgLTEuMF0KKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHRo
aXMucmVuZGVyVHJpYW5nbGVfcEFzVmVjMldpdGhDb2xvcigKKyAgICAgICAgICAgICAgICBjb3Ju
ZXJzWygwICsgcXVhZFN1YkFuZ2xlTmR4KSAlIDRdLAorICAgICAgICAgICAgICAgIGNvcm5lcnNb
KDEgKyBxdWFkU3ViQW5nbGVOZHgpICUgNF0sCisgICAgICAgICAgICAgICAgY29ybmVyc1soMiAr
IHF1YWRTdWJBbmdsZU5keCkgJSA0XSwKKyAgICAgICAgICAgICAgICBbMC41LCAwLjUsIDAuNSwg
MS4wXSk7CisKKyAgICAgICAgICAgIGlmIChxdWFkU3ViQW5nbGVOZHggPj0gNCkgeworICAgICAg
ICAgICAgICAgIHRoaXMucmVuZGVyVHJpYW5nbGVfcEFzVmVjMldpdGhDb2xvcigKKyAgICAgICAg
ICAgICAgICAgICAgY29ybmVyc1soMyArIHF1YWRTdWJBbmdsZU5keCkgJSA0XSwKKyAgICAgICAg
ICAgICAgICAgICAgY29ybmVyc1soMiArIHF1YWRTdWJBbmdsZU5keCkgJSA0XSwKKyAgICAgICAg
ICAgICAgICAgICAgY29ybmVyc1soMCArIHF1YWRTdWJBbmdsZU5keCkgJSA0XSwKKyAgICAgICAg
ICAgICAgICAgICAgWzAuNSwgMC41LCAwLjUsIDEuMF0pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9wQXNWZWMy
V2l0aENvbG9yKAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygwICsgcXVhZFN1YkFuZ2xl
TmR4KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygyICsgcXVhZFN1YkFuZ2xl
TmR4KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBjb3JuZXJzWygzICsgcXVhZFN1YkFuZ2xl
TmR4KSAlIDRdLAorICAgICAgICAgICAgICAgICAgICBbMC41LCAwLjUsIDAuNSwgMS4wXSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuaWNvbG9yZWRSZWdpb25zLnB1c2gobmV3IGVz
M2ZNdWx0aXNhbXBsZVRlc3RzLlF1YWRDb3JuZXJzKGNvcm5lcnNbMF0sIGNvcm5lcnNbMV0sIGNv
cm5lcnNbMl0sIGNvcm5lcnNbM10pKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhc2VUeXBlIG5vdCBzdXBwb3J0ZWQuJyk7CisKKyAgICAg
ICAgLy8gUmVhZCBwaXhlbHMgYW5kIGNoZWNrIHVuaWNvbG9yZWQgcmVnaW9ucy4KKworICAgICAg
ICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkSW1nID0gdGhp
cy5yZWFkSW1hZ2UoKTsKKworICAgICAgICBlcnJvckltZy5nZXRBY2Nlc3MoKS5jbGVhcihbMC4w
LCAxLjAsIDAuMCwgMS4wXSk7CisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZW5kZXJl
ZEltYWdlJywgJ1JlbmRlcmVkIGltYWdlJywgcmVuZGVyZWRJbWcuZ2V0QWNjZXNzKCkpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGVycm9yc0RldGVjdGVkID0gZmFsc2U7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pY29sb3JlZFJlZ2lvbnMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuUXVhZENv
cm5lcnN9ICovIHZhciByZWdpb24gPSB1bmljb2xvcmVkUmVnaW9uc1tpXTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHAwV2luID0gZGVNYXRoLnNjYWxlKGRl
TWF0aC5hZGRTY2FsYXIocmVnaW9uLnAwLCAxLjApLCAwLjUgKiAodGhpcy5tX3ZpZXdwb3J0U2l6
ZSAtIDEpICsgMC41KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIHAxV2luID0gZGVNYXRoLnNjYWxlKGRlTWF0aC5hZGRTY2FsYXIocmVnaW9uLnAxLCAxLjAp
LCAwLjUgKiAodGhpcy5tX3ZpZXdwb3J0U2l6ZSAtIDEpICsgMC41KTsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHAyV2luID0gZGVNYXRoLnNjYWxlKGRlTWF0
aC5hZGRTY2FsYXIocmVnaW9uLnAyLCAxLjApLCAwLjUgKiAodGhpcy5tX3ZpZXdwb3J0U2l6ZSAt
IDEpICsgMC41KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IHAzV2luID0gZGVNYXRoLnNjYWxlKGRlTWF0aC5hZGRTY2FsYXIocmVnaW9uLnAzLCAxLjApLCAw
LjUgKiAodGhpcy5tX3ZpZXdwb3J0U2l6ZSAtIDEpICsgMC41KTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGVycm9yc0luQ3VycmVudFJlZ2lvbiA9ICFlczNmTXVsdGlz
YW1wbGVUZXN0cy5pc1BpeGVsUmVnaW9uVW5pY29sb3JlZChyZW5kZXJlZEltZywgcDBXaW4sIHAx
V2luLCBwMldpbiwgcDNXaW4pOworCisgICAgICAgICAgICBpZiAoZXJyb3JzSW5DdXJyZW50UmVn
aW9uKQorICAgICAgICAgICAgICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLmRyYXdVbmljb2xvclRl
c3RFcnJvcnMocmVuZGVyZWRJbWcsIGVycm9ySW1nLmdldEFjY2VzcygpLCBwMFdpbiwgcDFXaW4s
IHAyV2luLCBwM1dpbik7CisKKyAgICAgICAgICAgIGVycm9yc0RldGVjdGVkID0gZXJyb3JzRGV0
ZWN0ZWQgfHwgZXJyb3JzSW5DdXJyZW50UmVnaW9uOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5tX2N1cnJlbnRJdGVyYXRpb24rKzsKKworICAgICAgICBpZiAoZXJyb3JzRGV0ZWN0ZWQpIHsK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGYWlsdXJlOiBOb3QgYWxsIHF1YWQg
aW50ZXJpb3JzIHNlZW0gdW5pY29sb3JlZCAtIGNvbW1vbi1lZGdlIGFydGlmYWN0cz8nKTsKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFcnJvbmVvdXMgcGl4ZWxzIGFyZSBkcmF3
biByZWQgaW4gdGhlIGZvbGxvd2luZyBpbWFnZScpOworICAgICAgICAgICAgdGN1TG9nSW1hZ2Uu
bG9nSW1hZ2UoJ1JlbmRlcmVkSW1hZ2VXaXRoRXJyb3JzJywgJ1JlbmRlcmVkIGltYWdlIHdpdGgg
ZXJyb3JzIG1hcmtlZCcsIHJlbmRlcmVkSW1nLmdldEFjY2VzcygpKTsKKyAgICAgICAgICAgIHRj
dUxvZ0ltYWdlLmxvZ0ltYWdlKCdFcnJvcnNPbmx5JywgJ0ltYWdlIHdpdGggZXJyb3IgcGl4ZWxz
IG9ubHknLCBlcnJvckltZy5nZXRBY2Nlc3MoKSk7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0
aW9ucygnRmFpbGVkOiBpdGVyYXRpb24gJyArICh0aGlzLm1fY3VycmVudEl0ZXJhdGlvbiAtIDEp
LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5T
VE9QOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHRoaXMubV9jdXJyZW50SXRlcmF0aW9u
IDwgdGhpcy5tX251bUl0ZXJhdGlvbnMpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdRdWFkcyBzZWVtIE9LIC0gbW92aW5nIG9uIHRvIG5leHQgcGF0dGVybicpOworICAgICAg
ICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnU3Vj
Y2VzczogQWxsIHF1YWQgaW50ZXJpb3JzIHNlZW0gdW5pY29sb3JlZCAobm8gY29tbW9uLWVkZ2Ug
YXJ0aWZhY3RzKScpOworICAgICAgICAgICAgdGVzdFBhc3NlZE9wdGlvbnMoJ1Bhc3NlZDogaXRl
cmF0aW9uICcgKyAodGhpcy5tX2N1cnJlbnRJdGVyYXRpb24gLSAxKSwgdHJ1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIFRlc3QgdGhhdCBkZXB0aCB2YWx1ZXMgYXJlIHBlci1z
YW1wbGUuCisgICAgICoKKyAgICAgKiBEcmF3cyBpbnRlcnNlY3RpbmcsIGRpZmZlcmVudGx5LWNv
bG9yZWQgcG9seWdvbnMgYW5kIGNoZWNrcyB0aGF0IHRoZXJlCisgICAgICogYXJlIGF0IGxlYXN0
IHNhbXBsZSBjb3VudCsxIGRpc3RpbmN0IGNvbG9ycyBwcmVzZW50LCBkdWUgdG8gc29tZSBvZiB0
aGUKKyAgICAgKiBzYW1wbGVzIGF0IHRoZSBpbnRlcnNlY3Rpb24gbGluZSBiZWxvbmdpbmcgdG8g
b25lIGFuZCBzb21lIHRvIGFub3RoZXIKKyAgICAgKiBwb2x5Z29uLgorICAgICAqCisgICAgICog
QGV4dGVuZHMge2VzM2ZNdWx0aXNhbXBsZVRlc3RzLk51bVNhbXBsZXNDYXNlfQorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG51bUZib1NhbXBsZXMKKyAgICAg
Ki8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5TYW1wbGVEZXB0aENhc2UgPSBmdW5jdGlvbihu
YW1lLCBkZXNjLCBudW1GYm9TYW1wbGVzKSB7CisgICAgICAgIG51bUZib1NhbXBsZXMgPSBudW1G
Ym9TYW1wbGVzID09PSB1bmRlZmluZWQgPyAwIDogbnVtRmJvU2FtcGxlczsKKyAgICAgICAgLyoq
IEB0eXBlIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXN9ICovCisgICAgICAgIHZhciBw
YXJhbXMgPSBudW1GYm9TYW1wbGVzID49IDAgPyBuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJv
UGFyYW1zKG51bUZib1NhbXBsZXMsIHRydWUsIGZhbHNlKSA6IG5ldyBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5GYm9QYXJhbXMoKTsKKyAgICAgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTnVtU2FtcGxl
c0Nhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBwYXJhbXMpOworICAgIH07CisKKyAgICBlczNm
TXVsdGlzYW1wbGVUZXN0cy5TYW1wbGVEZXB0aENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShlczNmTXVsdGlzYW1wbGVUZXN0cy5OdW1TYW1wbGVzQ2FzZS5wcm90b3R5cGUpOworCisgICAg
LyoqIENvcHkgdGhlIGNvbnN0cnVjdG9yICovCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuU2Ft
cGxlRGVwdGhDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZNdWx0aXNhbXBsZVRlc3Rz
LlNhbXBsZURlcHRoQ2FzZTsKKworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlNhbXBsZURlcHRo
Q2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5pdGVkID0g
ZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLnByb3RvdHlwZS5pbml0LmNhbGwo
dGhpcyk7CisgICAgICAgIGlmICghaW5pdGVkKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgICAgICAg
IGdsLmRlcHRoRnVuYyhnbC5MRVNTKTsKKworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
RGVwdGggdGVzdCBlbmFibGVkLCBkZXB0aCBmdW5jIGlzIGdsLkxFU1MnKTsKKyAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ0RyYXdpbmcgc2V2ZXJhbCBiaWdnZXItdGhhbi12aWV3cG9ydCBi
bGFjayBvciB3aGl0ZSBwb2x5Z29ucyBpbnRlcnNlY3RpbmcgZWFjaCBvdGhlcicpOworICAgIH07
CisKKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5TYW1wbGVEZXB0aENhc2UucHJvdG90eXBlLnJl
bmRlclBhdHRlcm4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAu
MCwgMC4wLCAwLjApOworICAgICAgICBnbC5jbGVhckRlcHRoKDEuMCk7CisgICAgICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVBvbHlnb25zID0gNTA7CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBudW1Qb2x5Z29uczsgaSsrKSB7CisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvciA9IGkgJSAyID09IDAgPyBbMS4wLCAx
LjAsIDEuMCwgMS4wXSA6IFswLjAsIDAuMCwgMC4wLCAxLjBdOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBhbmdsZSA9IDIuMCAqIE1hdGguUEkgKiBpIC8gbnVtUG9seWdv
bnMgKyAwLjAwMSAqIHRoaXMubV9jdXJyZW50SXRlcmF0aW9uOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcHQwID0gWzMuMCAqIE1hdGguY29zKGFuZ2xlICsg
Mi4wICogTWF0aC5QSSAqIDAuMCAvIDMuMCksIDMuMCAqIE1hdGguc2luKGFuZ2xlICsgMi4wICog
TWF0aC5QSSAqIDAuMCAvIDMuMCksIDEuMF07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBwdDEgPSBbMy4wICogTWF0aC5jb3MoYW5nbGUgKyAyLjAgKiBNYXRo
LlBJICogMS4wIC8gMy4wKSwgMy4wICogTWF0aC5zaW4oYW5nbGUgKyAyLjAgKiBNYXRoLlBJICog
MS4wIC8gMy4wKSwgMC4wXTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHB0MiA9IFszLjAgKiBNYXRoLmNvcyhhbmdsZSArIDIuMCAqIE1hdGguUEkgKiAyLjAg
LyAzLjApLCAzLjAgKiBNYXRoLnNpbihhbmdsZSArIDIuMCAqIE1hdGguUEkgKiAyLjAgLyAzLjAp
LCAwLjBdOworCisgICAgICAgICAgICB0aGlzLnJlbmRlclRyaWFuZ2xlX3BBc1ZlYzNXaXRoQ29s
b3IocHQwLCBwdDEsIHB0MiwgY29sb3IpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIFRlc3QgdGhhdCBzdGVuY2lsIGJ1ZmZlciB2YWx1ZXMgYXJlIHBlci1zYW1wbGUuCisg
ICAgICoKKyAgICAgKiBEcmF3cyBhIHVuaWNvbG9yZWQgcGF0dGVybiBhbmQgbWFya3MgZHJhd24g
c2FtcGxlcyBpbiBzdGVuY2lsIGJ1ZmZlcjsKKyAgICAgKiB0aGVuIGNsZWFycyBhbmQgZHJhd3Mg
YSB2aWV3cG9ydC1zaXplIHF1YWQgd2l0aCB0aGF0IGNvbG9yIGFuZCB3aXRoCisgICAgICogcHJv
cGVyIHN0ZW5jaWwgdGVzdCBzdWNoIHRoYXQgdGhlIHJlc3VsdGluZyBpbWFnZSBzaG91bGQgYmUg
ZXhhY3RseSB0aGUKKyAgICAgKiBzYW1lIGFzIGFmdGVyIHRoZSBwYXR0ZXJuIHdhcyBmaXJzdCBk
cmF3bi4KKyAgICAgKgorICAgICAqIEBleHRlbmRzIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0
aXNhbXBsZUNhc2V9CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVy
PX0gbnVtRmJvU2FtcGxlcworICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlNhbXBs
ZVN0ZW5jaWxDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywgbnVtRmJvU2FtcGxlcykgeworICAg
ICAgICBudW1GYm9TYW1wbGVzID0gbnVtRmJvU2FtcGxlcyA9PT0gdW5kZWZpbmVkID8gMCA6IG51
bUZib1NhbXBsZXM7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJv
UGFyYW1zfSAqLworICAgICAgICB2YXIgcGFyYW1zID0gbnVtRmJvU2FtcGxlcyA+PSAwID8gbmV3
IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkZib1BhcmFtcyhudW1GYm9TYW1wbGVzLCBmYWxzZSwgdHJ1
ZSkgOiBuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJvUGFyYW1zKCk7CisgICAgICAgIGVzM2ZN
dWx0aXNhbXBsZVRlc3RzLk11bHRpc2FtcGxlQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIDI1
NiwgcGFyYW1zKTsKKyAgICB9OworCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuU2FtcGxlU3Rl
bmNpbENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmTXVsdGlzYW1wbGVUZXN0cy5N
dWx0aXNhbXBsZUNhc2UucHJvdG90eXBlKTsKKworICAgIC8qKiBDb3B5IHRoZSBjb25zdHJ1Y3Rv
ciAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlNhbXBsZVN0ZW5jaWxDYXNlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlNhbXBsZVN0ZW5jaWxDYXNlOwor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAg
ICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5TYW1wbGVTdGVuY2lsQ2FzZS5wcm90b3R5
cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnJhbmRvbWl6ZVZpZXdwb3J0
KCk7CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAg
ICBnbC5jbGVhclN0ZW5jaWwoMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5lbmFibGUoZ2wuU1RFTkNJ
TF9URVNUKTsKKyAgICAgICAgZ2wuc3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAxLCAxKTsKKyAgICAg
ICAgZ2wuc3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGdsLlJFUExBQ0UpOworCisgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdEcmF3aW5nIGEgcGF0dGVybiB3aXRoIGdsLnN0ZW5jaWxG
dW5jKGdsLkFMV0FZUywgMSwgMSkgYW5kIGdsLnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5LRUVQLCBn
bC5SRVBMQUNFKScpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtVHJp
YW5nbGVzID0gMjU7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVHJpYW5nbGVzOyBp
KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYW5nbGUwID0gMi4w
ICogTWF0aC5QSSAqIGkgLyBudW1UcmlhbmdsZXM7CisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGFuZ2xlMSA9IDIuMCAqIE1hdGguUEkgKiAoaSArIDAuNSkgLyBudW1Ucmlh
bmdsZXM7CisKKyAgICAgICAgICAgIHRoaXMucmVuZGVyVHJpYW5nbGVfcEFzVmVjMldpdGhDb2xv
cigKKyAgICAgICAgICAgICAgICBbMC4wLCAwLjBdLAorICAgICAgICAgICAgICAgIFtNYXRoLmNv
cyhhbmdsZTApICogMC45NSwgTWF0aC5zaW4oYW5nbGUwKSAqIDAuOTVdLAorICAgICAgICAgICAg
ICAgIFtNYXRoLmNvcyhhbmdsZTEpICogMC45NSwgTWF0aC5zaW4oYW5nbGUxKSAqIDAuOTVdLAor
ICAgICAgICAgICAgICAgIFsxLjAsIDEuMCwgMS4wLCAxLjBdKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVuZGVyZWRJbWdGaXJz
dCA9IHRoaXMucmVhZEltYWdlKCk7CisgICAgICAgIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlKCdSZW5k
ZXJlZEltZ0ZpcnN0JywgJ0ZpcnN0IGltYWdlIHJlbmRlcmVkJywgcmVuZGVyZWRJbWdGaXJzdC5n
ZXRBY2Nlc3MoKSk7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdDbGVhcmluZyBjb2xv
ciBidWZmZXIgdG8gYmxhY2snKTsKKworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICAgICAgZ2wuc3RlbmNpbEZ1bmMoZ2wuRVFVQUwsIDEsIDEpOworICAgICAgICBn
bC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuS0VFUCk7CisKKyAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ0NoZWNraW5nIHRoYXQgY29sb3IgYnVmZmVyIHdhcyBhY3R1YWxseSBj
bGVhcmVkIHRvIGJsYWNrJyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZh
Y2V9ICovIHZhciBjbGVhcmVkSW1nID0gdGhpcy5yZWFkSW1hZ2UoKTsKKworICAgICAgICBmb3Ig
KHZhciB5ID0gMDsgeSA8IGNsZWFyZWRJbWcuZ2V0SGVpZ2h0KCk7IHkrKykKKyAgICAgICAgZm9y
ICh2YXIgeCA9IDA7IHggPCBjbGVhcmVkSW1nLmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciBjbHIgPSBuZXcgdGN1UkdCQS5SR0JB
KGNsZWFyZWRJbWcuZ2V0UGl4ZWwoeCwgeSkpOworICAgICAgICAgICAgaWYgKCFjbHIuZXF1YWxz
KHRjdVJHQkEuUkdCQS5ibGFjaykpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnRmFpbHVyZTogZmlyc3Qgbm9uLWJsYWNrIHBpeGVsLCBjb2xvciAnICsgY2xyLnRvU3Ry
aW5nKCkgKyAnLCBkZXRlY3RlZCBhdCBjb29yZGluYXRlcyAoJyArIHggKyAnLCAnICsgeSArICcp
Jyk7CisgICAgICAgICAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UoJ0NsZWFyZWRJbWcnLCAn
SW1hZ2UgYWZ0ZXIgY2xlYXJpbmcsIGVycm9uZW91c2x5IG5vbi1ibGFjaycsIGNsZWFyZWRJbWcu
Z2V0QWNjZXNzKCkpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQn
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdEcmF3aW5nIGEgdmlld3BvcnQtc2l6ZWQgcXVhZCB3aXRoIGdsLnN0ZW5jaWxG
dW5jKGdsLkVRVUFMLCAxLCAxKSBhbmQgZ2wuc3RlbmNpbE9wKGdsLktFRVAsIGdsLktFRVAsIGds
LktFRVApIC0gc2hvdWxkIHJlc3VsdCBpbiBzYW1lIGltYWdlIGFzIHRoZSBmaXJzdCcpOworCisg
ICAgICAgIHRoaXMucmVuZGVyUXVhZF9XaXRoQ29sb3IoCisgICAgICAgICAgICBbLTEuMCwgLTEu
MF0sCisgICAgICAgICAgICBbMS4wLCAtMS4wXSwKKyAgICAgICAgICAgIFstMS4wLCAxLjBdLAor
ICAgICAgICAgICAgWzEuMCwgMS4wXSwKKyAgICAgICAgICAgIFsxLjAsIDEuMCwgMS4wLCAxLjBd
KTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRl
cmVkSW1nU2Vjb25kID0gdGhpcy5yZWFkSW1hZ2UoKTsKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9n
SW1hZ2UoJ1JlbmRlcmVkSW1nU2Vjb25kJywgJ1NlY29uZCBpbWFnZSByZW5kZXJlZCcsIHJlbmRl
cmVkSW1nU2Vjb25kLmdldEFjY2VzcygpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LworICAgICAgICB2YXIgcGFzc2VkID0gdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29t
cGFyZSgKKyAgICAgICAgICAgICdJbWFnZUNvbXBhcmUnLAorICAgICAgICAgICAgJ0ltYWdlIGNv
bXBhcmlzb24nLAorICAgICAgICAgICAgcmVuZGVyZWRJbWdGaXJzdCwKKyAgICAgICAgICAgIHJl
bmRlcmVkSW1nU2Vjb25kLAorICAgICAgICAgICAgWzAsMCwwLDBdKTsKKworICAgICAgICBpZiAo
cGFzc2VkKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnU3VjY2VzczogVGhl
IHR3byBpbWFnZXMgcmVuZGVyZWQgYXJlIGlkZW50aWNhbCcpOworICAgICAgICAgICAgdGVzdFBh
c3NlZE9wdGlvbnMoJ1Bhc3NlZCcsIHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQnLCBmYWxzZSk7CisKKyAgICAgICAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogVGVzdHMgY292ZXJhZ2UgbWFzayBnZW5lcmF0aW9uIHByb3BvcnRpb25hbGl0eSBw
cm9wZXJ0eS4KKyAgICAgKgorICAgICAqIFRlc3RzIHRoYXQgdGhlIG51bWJlciBvZiBjb3ZlcmFn
ZSBiaXRzIGluIGEgY292ZXJhZ2UgbWFzayBjcmVhdGVkIGJ5CisgICAgICogZ2wuU0FNUExFX0FM
UEhBX1RPX0NPVkVSQUdFIG9yIGdsLlNBTVBMRV9DT1ZFUkFHRSBpcywgb24gYXZlcmFnZSwKKyAg
ICAgKiBwcm9wb3J0aW9uYWwgdG8gdGhlIGFscGhhIG9yIGNvdmVyYWdlIHZhbHVlLCByZXNwZWN0
aXZlbHkuIERyYXdzCisgICAgICogbXVsdGlwbGUgZnJhbWVzLCBlYWNoIHRpbWUgaW5jcmVhc2lu
ZyB0aGUgYWxwaGEgb3IgY292ZXJhZ2UgdmFsdWUgdXNlZCwKKyAgICAgKiBhbmQgY2hlY2tzIHRo
YXQgdGhlIGF2ZXJhZ2UgY29sb3IgaXMgY2hhbmdpbmcgYXBwcm9wcmlhdGVseS4KKyAgICAgKgor
ICAgICAqIEBleHRlbmRzIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2V9Cisg
ICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7ZXMzZk11bHRpc2FtcGxlVGVzdHMu
TWFza1Byb3BvcnRpb25hbGl0eUNhc2UuQ2FzZVR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251
bWJlcj19IG51bUZib1NhbXBsZXMKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5N
YXNrUHJvcG9ydGlvbmFsaXR5Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIHR5cGUsIG51bUZi
b1NhbXBsZXMpIHsKKyAgICAgICAgbnVtRmJvU2FtcGxlcyA9IG51bUZib1NhbXBsZXMgPT09IHVu
ZGVmaW5lZCA/IDAgOiBudW1GYm9TYW1wbGVzOworICAgICAgICAvKiogQHR5cGUge2VzM2ZNdWx0
aXNhbXBsZVRlc3RzLkZib1BhcmFtc30gKi8KKyAgICAgICAgdmFyIHBhcmFtcyA9IG51bUZib1Nh
bXBsZXMgPj0gMCA/IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXMobnVtRmJvU2Ft
cGxlcywgZmFsc2UsIGZhbHNlKSA6IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXMo
KTsKKyAgICAgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTXVsdGlzYW1wbGVDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzYywgMzIsIHBhcmFtcyk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZk11bHRp
c2FtcGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UuQ2FzZVR5cGV9ICovIHRoaXMubV90
eXBlID0gdHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9udW1JdGVy
YXRpb25zOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2N1cnJlbnRJdGVy
YXRpb24gPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3ByZXZpb3Vz
SXRlcmF0aW9uQ29sb3JTdW0gPSAtMTsKKyAgICB9OworCisgICAgZXMzZk11bHRpc2FtcGxlVGVz
dHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNm
TXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlKTsKKworICAgIC8qKiBD
b3B5IHRoZSBjb25zdHJ1Y3RvciAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9w
b3J0aW9uYWxpdHlDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZNdWx0aXNhbXBsZVRl
c3RzLk1hc2tQcm9wb3J0aW9uYWxpdHlDYXNlOworCisgICAgLyoqCisgICAgICogQGVudW0ge251
bWJlcn0KKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrUHJvcG9ydGlvbmFs
aXR5Q2FzZS5DYXNlVHlwZSA9IHsKKyAgICAgICAgQUxQSEFfVE9fQ09WRVJBR0U6IDAsCisgICAg
ICAgIFNBTVBMRV9DT1ZFUkFHRTogMSwKKyAgICAgICAgU0FNUExFX0NPVkVSQUdFX0lOVkVSVEVE
OiAyCisgICAgfTsKKworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9wb3J0aW9uYWxp
dHlDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBpbml0ZWQg
PSBlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlLmluaXQuY2Fs
bCh0aGlzKTsKKyAgICAgICAgaWYgKCFpbml0ZWQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fdHlwZSA9PSBlczNmTXVsdGlzYW1w
bGVUZXN0cy5NYXNrUHJvcG9ydGlvbmFsaXR5Q2FzZS5DYXNlVHlwZS5BTFBIQV9UT19DT1ZFUkFH
RSkgeworICAgICAgICAgICAgZ2wuZW5hYmxlKGdsLlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSk7
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuU0FNUExFX0FMUEhBX1RPX0NP
VkVSQUdFIGlzIGVuYWJsZWQnKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZXMz
Zk11bHRpc2FtcGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UuQ2FzZVR5cGUuU0FNUExF
X0NPVkVSQUdFIHx8CisgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZXMzZk11bHRpc2Ft
cGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UuQ2FzZVR5cGUuU0FNUExFX0NPVkVSQUdF
X0lOVkVSVEVELAorICAgICAgICAgICAgICAgICdDYXNlVHlwZSBzaG91bGQgYmUgU0FNUExFX0NP
VkVSQUdFIG9yIFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRFRCcsIGZhbHNlLCB0cnVlKTsKKworICAg
ICAgICAgICAgZ2wuZW5hYmxlKGdsLlNBTVBMRV9DT1ZFUkFHRSk7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuU0FNUExFX0NPVkVSQUdFIGlzIGVuYWJsZWQnKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMubV9udW1JdGVyYXRpb25zID0gTWF0aC5tYXgoMiwgZXMzZk11
bHRpc2FtcGxlVGVzdHMuZ2V0SXRlcmF0aW9uQ291bnQodGhpcy5tX251bVNhbXBsZXMgKiA1KSk7
CisKKyAgICAgICAgdGhpcy5yYW5kb21pemVWaWV3cG9ydCgpOyAvLyBcbm90ZSBVc2luZyB0aGUg
c2FtZSB2aWV3cG9ydCBmb3IgZXZlcnkgaXRlcmF0aW9uIHNpbmNlIGNvdmVyYWdlIG1hc2sgbWF5
IGRlcGVuZCBvbiB3aW5kb3ctcmVsYXRpdmUgcGl4ZWwgY29vcmRpbmF0ZS4KKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAg
Ki8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrUHJvcG9ydGlvbmFsaXR5Q2FzZS5wcm90
b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnQ2xlYXJpbmcgY29sb3IgdG8gYmxhY2snKTsKKyAgICAgICAgZ2wuY29sb3JNYXNrKHRydWUs
IHRydWUsIHRydWUsIHRydWUpOworICAgICAgICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAs
IDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAg
IGlmICh0aGlzLm1fdHlwZSA9PT0gZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza1Byb3BvcnRpb25h
bGl0eUNhc2UuQ2FzZVR5cGUuQUxQSEFfVE9fQ09WRVJBR0UpIHsKKyAgICAgICAgICAgIGdsLmNv
bG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnVXNpbmcgY29sb3IgbWFzayBUUlVFLCBUUlVFLCBUUlVFLCBGQUxTRScpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRHJhdyBxdWFkLgorCisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHB0MCA9IFstMS4wLCAtMS4wXTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcHQxID0gWzEuMCwgLTEuMF07CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHB0MiA9IFstMS4wLCAxLjBdOworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwdDMgPSBbMS4wLCAxLjBdOworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBxdWFkQ29sb3IgPSBbMS4wLCAw
LjAsIDAuMCwgMS4wXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhbHBoYU9y
Q292ZXJhZ2VWYWx1ZSAgICA9IHRoaXMubV9jdXJyZW50SXRlcmF0aW9uIC8gKHRoaXMubV9udW1J
dGVyYXRpb25zLTEpOworCisgICAgICAgIGlmICh0aGlzLm1fdHlwZSA9PT0gZXMzZk11bHRpc2Ft
cGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UuQ2FzZVR5cGUuQUxQSEFfVE9fQ09WRVJB
R0UpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdEcmF3aW5nIGEgcmVkIHF1
YWQgdXNpbmcgYWxwaGEgdmFsdWUgJyArIGFscGhhT3JDb3ZlcmFnZVZhbHVlKTsKKyAgICAgICAg
ICAgIHF1YWRDb2xvclszXSA9IGFscGhhT3JDb3ZlcmFnZVZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fdHlwZSA9PT0gZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0
eUNhc2UuQ2FzZVR5cGUuU0FNUExFX0NPVkVSQUdFIHx8CisgICAgICAgICAgICAgICAgdGhpcy5t
X3R5cGUgPT09IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9wb3J0aW9uYWxpdHlDYXNlLkNh
c2VUeXBlLlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRFRCwKKyAgICAgICAgICAgICAgICAnQ2FzZVR5
cGUgc2hvdWxkIGJlIFNBTVBMRV9DT1ZFUkFHRSBvciBTQU1QTEVfQ09WRVJBR0VfSU5WRVJURUQn
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFy
IGlzSW52ZXJ0ZWQgPSAodGhpcy5tX3R5cGUgPT09IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQ
cm9wb3J0aW9uYWxpdHlDYXNlLkNhc2VUeXBlLlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRFRCk7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvdmVyYWdlVmFsdWUgICAgPSBp
c0ludmVydGVkID8gMS4wIC0gYWxwaGFPckNvdmVyYWdlVmFsdWUgOiBhbHBoYU9yQ292ZXJhZ2VW
YWx1ZTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdEcmF3aW5nIGEgcmVkIHF1
YWQgdXNpbmcgc2FtcGxlIGNvdmVyYWdlIHZhbHVlICcgKyBjb3ZlcmFnZVZhbHVlICsgKGlzSW52
ZXJ0ZWQgPyAnIChpbnZlcnRlZCknIDogJycpKTsKKyAgICAgICAgICAgIGdsLnNhbXBsZUNvdmVy
YWdlKGNvdmVyYWdlVmFsdWUsIGlzSW52ZXJ0ZWQgPyB0cnVlIDogZmFsc2UpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5yZW5kZXJRdWFkX1dpdGhDb2xvcihwdDAsIHB0MSwgcHQyLCBwdDMs
IHF1YWRDb2xvcik7CisKKyAgICAgICAgLy8gUmVhZCBhbmQgbG9nIGltYWdlLgorICAgICAgICAv
KiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkSW1nID0gdGhpcy5y
ZWFkSW1hZ2UoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1QaXhlbHMg
PSByZW5kZXJlZEltZy5nZXRXaWR0aCgpICogcmVuZGVyZWRJbWcuZ2V0SGVpZ2h0KCk7CisKKyAg
ICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UoJ1JlbmRlcmVkSW1hZ2UnLCAnUmVuZGVyZWQgaW1h
Z2UnLCByZW5kZXJlZEltZy5nZXRBY2Nlc3MoKSk7CisgICAgICAgIC8vIENvbXB1dGUgYXZlcmFn
ZSByZWQgY29tcG9uZW50IGluIHJlbmRlcmVkIGltYWdlLgorCisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgc3VtUmVkID0gMDsKKworICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8
IHJlbmRlcmVkSW1nLmdldEhlaWdodCgpOyB5KyspCisgICAgICAgIGZvciAodmFyIHggPSAwOyB4
IDwgcmVuZGVyZWRJbWcuZ2V0V2lkdGgoKTsgeCsrKQorICAgICAgICAgICAgc3VtUmVkICs9IG5l
dyB0Y3VSR0JBLlJHQkEocmVuZGVyZWRJbWcuZ2V0UGl4ZWwoeCwgeSkpLmdldFJlZCgpOworCisg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBdmVyYWdlIHJlZCBjb2xvciBjb21wb25lbnQ6
ICcgKyAoc3VtUmVkIC8gMjU1LjAgLyBudW1QaXhlbHMpKTsKKworICAgICAgICAvLyBDaGVjayBp
ZiBhdmVyYWdlIGNvbG9yIGhhcyBkZWNyZWFzZWQgZnJvbSBwcmV2aW91cyBmcmFtZSdzIGNvbG9y
LgorCisgICAgICAgIGlmIChzdW1SZWQgPCB0aGlzLm1fcHJldmlvdXNJdGVyYXRpb25Db2xvclN1
bSkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZhaWx1cmU6IEN1cnJlbnQg
YXZlcmFnZSByZWQgY29sb3IgY29tcG9uZW50IGlzIGxvd2VyIHRoYW4gcHJldmlvdXMnKTsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQnLCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQ2hlY2sgaWYgY292ZXJhZ2UgbWFzayBpcyBub3QgYWxsLXplcm9zIGlmIGFscGhh
IG9yIGNvdmVyYWdlIHZhbHVlIGlzIDAgKG9yIDEsIGlmIGludmVydGVkKS4KKworICAgICAgICBp
ZiAodGhpcy5tX2N1cnJlbnRJdGVyYXRpb24gPT0gMCAmJiBzdW1SZWQgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZhaWx1cmU6IEltYWdlIHNob3Vs
ZCBiZSBjb21wbGV0ZWx5IGJsYWNrJyk7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygn
RmFpbGVkJywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHQuU1RPUDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fY3VycmVudEl0ZXJh
dGlvbiA9PSB0aGlzLm1fbnVtSXRlcmF0aW9ucy0xICYmIHN1bVJlZCAhPSAweGZmKm51bVBpeGVs
cykKKyAgICAgICAgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZhaWx1cmU6
IEltYWdlIHNob3VsZCBiZSBjb21wbGV0ZWx5IHJlZCcpOworCisgICAgICAgICAgICB0ZXN0RmFp
bGVkT3B0aW9ucygnRmFpbGVkJywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RD
YXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubV9wcmV2
aW91c0l0ZXJhdGlvbkNvbG9yU3VtID0gc3VtUmVkOworCisgICAgICAgIHRoaXMubV9jdXJyZW50
SXRlcmF0aW9uKys7CisKKyAgICAgICAgaWYgKHRoaXMubV9jdXJyZW50SXRlcmF0aW9uID49IHRo
aXMubV9udW1JdGVyYXRpb25zKQorICAgICAgICB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnU3VjY2VzczogTnVtYmVyIG9mIGNvdmVyYWdlIG1hc2sgYml0cyBzZXQgYXBwZWFy
cyB0byBiZSwgb24gYXZlcmFnZSwgcHJvcG9ydGlvbmFsIHRvICcgKworICAgICAgICAgICAgICAg
ICh0aGlzLm1fdHlwZSA9PSBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrUHJvcG9ydGlvbmFsaXR5
Q2FzZS5DYXNlVHlwZS5BTFBIQV9UT19DT1ZFUkFHRSA/ICdhbHBoYScgOgorICAgICAgICAgICAg
ICAgIHRoaXMubV90eXBlID09IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9wb3J0aW9uYWxp
dHlDYXNlLkNhc2VUeXBlLlNBTVBMRV9DT1ZFUkFHRSA/ICdzYW1wbGUgY292ZXJhZ2UgdmFsdWUn
IDoKKyAgICAgICAgICAgICAgICAnaW52ZXJ0ZWQgc2FtcGxlIGNvdmVyYWdlIHZhbHVlJykpOwor
CisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnUGFzc2VkJywgdHJ1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0
LkNPTlRJTlVFOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBjb3ZlcmFnZSBtYXNr
IGdlbmVyYXRpb24gY29uc3RhbmN5IHByb3BlcnR5LgorICAgICAqCisgICAgICogVGVzdHMgdGhh
dCB0aGUgY292ZXJhZ2UgbWFzayBjcmVhdGVkIGJ5IGdsLlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFH
RSBvcgorICAgICAqIGdsLlNBTVBMRV9DT1ZFUkFHRSBpcyBjb25zdGFudCBhdCBnaXZlbiBwaXhl
bCBjb29yZGluYXRlcywgd2l0aCBhIGdpdmVuCisgICAgICogYWxwaGEgY29tcG9uZW50IG9yIGNv
dmVyYWdlIHZhbHVlLCByZXNwZWN0aXZlbHkuIERyYXdzIHR3byBxdWFkcywgd2l0aAorICAgICAq
IHRoZSBzZWNvbmQgb25lIGZ1bGx5IG92ZXJsYXBwaW5nIHRoZSBmaXJzdCBvbmUgc3VjaCB0aGF0
IGF0IGFueSBnaXZlbgorICAgICAqIHBpeGVsLCBib3RoIHF1YWRzIGhhdmUgdGhlIHNhbWUgYWxw
aGEgb3IgY292ZXJhZ2UgdmFsdWUuIFRoaXMgd2F5LCBpZgorICAgICAqIHRoZSBjb25zdGFuY3kg
cHJvcGVydHkgaXMgZnVsZmlsbGVkLCBvbmx5IHRoZSBzZWNvbmQgcXVhZCBzaG91bGQgYmUKKyAg
ICAgKiB2aXNpYmxlLgorICAgICAqIEBleHRlbmRzIHtlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0
aXNhbXBsZUNhc2V9CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7ZXMzZk11
bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2UuQ2FzZVR5cGV9IHR5cGUKKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IG51bUZib1NhbXBsZXMKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1w
bGVUZXN0cy5NYXNrQ29uc3RhbmN5Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIHR5cGUsIG51
bUZib1NhbXBsZXMpIHsKKyAgICAgICBudW1GYm9TYW1wbGVzID0gbnVtRmJvU2FtcGxlcyA9PT0g
dW5kZWZpbmVkID8gMCA6IG51bUZib1NhbXBsZXM7CisgICAgICAgLyoqIEB0eXBlIHtlczNmTXVs
dGlzYW1wbGVUZXN0cy5GYm9QYXJhbXN9ICovCisgICAgICAgdmFyIHBhcmFtcyA9IG51bUZib1Nh
bXBsZXMgPj0gMCA/IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXMobnVtRmJvU2Ft
cGxlcywgZmFsc2UsIGZhbHNlKSA6IG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5GYm9QYXJhbXMo
KTsKKyAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjLCAyNTYsIHBhcmFtcyk7CisgICAgICAgdmFyIENhc2VUeXBlID0gZXMzZk11
bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2UuQ2FzZVR5cGU7CisgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB0aGlzLm1faXNBbHBoYVRvQ292ZXJhZ2VDYXNlID0gKHR5cGUgPT09
IENhc2VUeXBlLkFMUEhBX1RPX0NPVkVSQUdFIHx8IHR5cGUgPT09IENhc2VUeXBlLkJPVEggfHwg
dHlwZSA9PT0gQ2FzZVR5cGUuQk9USF9JTlZFUlRFRCk7CisgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB0aGlzLm1faXNTYW1wbGVDb3ZlcmFnZUNhc2UgPSAodHlwZSA9PT0gQ2FzZVR5cGUu
U0FNUExFX0NPVkVSQUdFIHx8IHR5cGUgPT09IENhc2VUeXBlLlNBTVBMRV9DT1ZFUkFHRV9JTlZF
UlRFRCB8fCB0eXBlID09PSBDYXNlVHlwZS5CT1RIIHx8IHR5cGUgPT09IENhc2VUeXBlLkJPVEhf
SU5WRVJURUQpOworICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX2lzSW52ZXJ0
ZWRTYW1wbGVDb3ZlcmFnZUNhc2UgPSAodHlwZSA9PT0gQ2FzZVR5cGUuU0FNUExFX0NPVkVSQUdF
X0lOVkVSVEVEIHx8IHR5cGUgPT09IENhc2VUeXBlLkJPVEhfSU5WRVJURUQpOworICAgIH07CisK
KyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrQ29uc3RhbmN5Q2FzZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk11bHRpc2FtcGxlQ2FzZS5wcm90b3R5
cGUpOworCisgICAgLyoqIENvcHkgdGhlIGNvbnN0cnVjdG9yICovCisgICAgZXMzZk11bHRpc2Ft
cGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZk11
bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAZW51
bSB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tDb25zdGFu
Y3lDYXNlLkNhc2VUeXBlID0geworICAgICAgICBBTFBIQV9UT19DT1ZFUkFHRTogIDAsICAgICAg
ICAvLyE8IFVzZSBvbmx5IGFscGhhLXRvLWNvdmVyYWdlLgorICAgICAgICBTQU1QTEVfQ09WRVJB
R0U6IDEsICAgICAgICAgICAgLy8hPCBVc2Ugb25seSBzYW1wbGUgY292ZXJhZ2UuCisgICAgICAg
IFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRFRDogMiwgICAgLy8hPCBVc2Ugb25seSBpbnZlcnRlZCBz
YW1wbGUgY292ZXJhZ2UuCisgICAgICAgIEJPVEg6IDMsICAgICAgICAgICAgICAgICAgICAgICAg
Ly8hPCBVc2UgYm90aCBhbHBoYS10by1jb3ZlcmFnZSBhbmQgc2FtcGxlIGNvdmVyYWdlLgorICAg
ICAgICBCT1RIX0lOVkVSVEVEOiA0ICAgICAgICAgICAgICAgIC8vITwgVXNlIGJvdGggYWxwaGEt
dG8tY292ZXJhZ2UgYW5kIGludmVydGVkIHNhbXBsZSBjb3ZlcmFnZS4KKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8K
KyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrQ29uc3RhbmN5Q2FzZS5wcm90b3R5cGUuaXRl
cmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnJhbmRvbWl6ZVZpZXdwb3J0KCk7CisK
KyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0NsZWFyaW5nIGNvbG9yIHRvIGJsYWNrJyk7
CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgaWYgKHRoaXMubV9pc0FscGhh
VG9Db3ZlcmFnZUNhc2UpIHsKKyAgICAgICAgICAgIGdsLmVuYWJsZShnbC5TQU1QTEVfQUxQSEFf
VE9fQ09WRVJBR0UpOworICAgICAgICAgICAgZ2wuY29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5TQU1QTEVfQUxQ
SEFfVE9fQ09WRVJBR0UgaXMgZW5hYmxlZCcpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ0NvbG9yIG1hc2sgaXMgVFJVRSwgVFJVRSwgVFJVRSwgRkFMU0UnKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0aGlzLm1faXNTYW1wbGVDb3ZlcmFnZUNhc2UpIHsKKyAgICAgICAg
ICAgIGdsLmVuYWJsZShnbC5TQU1QTEVfQ09WRVJBR0UpOworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLlNBTVBMRV9DT1ZFUkFHRSBpcyBlbmFibGVkJyk7CisgICAgICAgIH0K
KworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRHJhd2luZyBzZXZlcmFsIGdyZWVuIHF1
YWRzLCBlYWNoIGZ1bGx5IG92ZXJsYXBwZWQgYnkgYSByZWQgcXVhZCB3aXRoIHRoZSBzYW1lICcg
KworICAgICAgICAgICAgKHRoaXMubV9pc0FscGhhVG9Db3ZlcmFnZUNhc2UgPyAnYWxwaGEnIDog
JycpICsKKyAgICAgICAgICAgICh0aGlzLm1faXNBbHBoYVRvQ292ZXJhZ2VDYXNlICYmIHRoaXMu
bV9pc1NhbXBsZUNvdmVyYWdlQ2FzZSA/ICcgYW5kICcgOiAnJykgKworICAgICAgICAgICAgKHRo
aXMubV9pc0ludmVydGVkU2FtcGxlQ292ZXJhZ2VDYXNlID8gJ2ludmVydGVkICcgOiAnJykgKwor
ICAgICAgICAgICAgKHRoaXMubV9pc1NhbXBsZUNvdmVyYWdlQ2FzZSA/ICdzYW1wbGUgY292ZXJh
Z2UnIDogJycpICsKKyAgICAgICAgICAgICcgdmFsdWVzJyk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBudW1RdWFkUm93c0NvbHMgPSB0aGlzLm1fbnVtU2FtcGxlcyAqIDQ7
CisKKyAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbnVtUXVhZFJvd3NDb2xzOyByb3cr
KykgeworICAgICAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbnVtUXVhZFJvd3NDb2xz
OyBjb2wrKykgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeDAg
PSAoY29sICsgMCkgLyBudW1RdWFkUm93c0NvbHMgKiAyLjAgLSAxLjA7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MSA9IChjb2wgKyAxKSAvIG51bVF1YWRSb3dz
Q29scyAqIDIuMCAtIDEuMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHkwID0gKHJvdyArIDApIC8gbnVtUXVhZFJvd3NDb2xzICogMi4wIC0gMS4wOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeTEgPSAocm93ICsgMSkgLyBudW1R
dWFkUm93c0NvbHMgKiAyLjAgLSAxLjA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgYmFzZUdyZWVuID0gWzAuMCwgMS4wLCAwLjAsIDAuMF07CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYmFzZVJlZCA9IFsx
LjAsIDAuMCwgMC4wLCAwLjBdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGFscGhhMCA9IFswLjAsIDAuMCwgMC4wLCB0aGlzLm1faXNBbHBoYVRvQ292
ZXJhZ2VDYXNlID8gY29sIC8gKG51bVF1YWRSb3dzQ29scyAtIDEpIDogMS4wXTsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhbHBoYTEgPSBbMC4wLCAw
LjAsIDAuMCwgdGhpcy5tX2lzQWxwaGFUb0NvdmVyYWdlQ2FzZSA/IHJvdyAvIChudW1RdWFkUm93
c0NvbHMgLSAxKSA6IDEuMF07CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5tX2lzU2FtcGxl
Q292ZXJhZ2VDYXNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdmFsdWUgPSAocm93Km51bVF1YWRSb3dzQ29scyArIGNvbCkgLyAobnVtUXVhZFJvd3ND
b2xzKm51bVF1YWRSb3dzQ29scyAtIDEpOworICAgICAgICAgICAgICAgICAgICBnbC5zYW1wbGVD
b3ZlcmFnZSh0aGlzLm1faXNJbnZlcnRlZFNhbXBsZUNvdmVyYWdlQ2FzZSA/IDEuMCAtIHZhbHVl
IDogdmFsdWUsIHRoaXMubV9pc0ludmVydGVkU2FtcGxlQ292ZXJhZ2VDYXNlID8gdHJ1ZSA6IGZh
bHNlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclF1
YWQoW3gwLCB5MF0sIFt4MSwgeTBdLCBbeDAsIHkxXSwgW3gxLCB5MV0sCisgICAgICAgICAgICAg
ICAgICAgIGRlTWF0aC5hZGQoYmFzZUdyZWVuLCBhbHBoYTApLCBkZU1hdGguYWRkKGJhc2VHcmVl
biwgYWxwaGExKSwKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZChiYXNlR3JlZW4sIGFs
cGhhMCksIGRlTWF0aC5hZGQoYmFzZUdyZWVuLCBhbHBoYTEpKTsKKyAgICAgICAgICAgICAgICB0
aGlzLnJlbmRlclF1YWQoW3gwLCB5MF0sIFt4MSwgeTBdLCBbeDAsIHkxXSwgW3gxLCB5MV0sCisg
ICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQoYmFzZVJlZCwgYWxwaGEwKSwgZGVNYXRoLmFk
ZChiYXNlUmVkLCBhbHBoYTEpLAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguYWRkKGJhc2VS
ZWQsIGFscGhhMCksIGRlTWF0aC5hZGQoYmFzZVJlZCwgYWxwaGExKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8g
dmFyIHJlbmRlcmVkSW1nID0gdGhpcy5yZWFkSW1hZ2UoKTsKKworICAgICAgICB0Y3VMb2dJbWFn
ZS5sb2dJbWFnZSgnUmVuZGVyZWRJbWFnZScsICdSZW5kZXJlZCBpbWFnZScsIHJlbmRlcmVkSW1n
LmdldEFjY2VzcygpKTsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZW5kZXJlZEltZy5n
ZXRIZWlnaHQoKTsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHJlbmRlcmVkSW1n
LmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgaWYgKG5ldyB0Y3VSR0JBLlJHQkEocmVu
ZGVyZWRJbWcuZ2V0UGl4ZWwoeCwgeSkpLmdldEdyZWVuKCkgPiAwKSB7CisgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZhaWx1cmU6IE5vbi16ZXJvIGdyZWVuIGNvbG9yIGNv
bXBvbmVudCBkZXRlY3RlZCAtIHNob3VsZCBoYXZlIGJlZW4gY29tcGxldGVseSBvdmVyd3JpdHRl
biBieSByZWQgcXVhZCcpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWls
ZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHQuU1RPUDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdTdWNjZXNzOiBDb3ZlcmFnZSBtYXNrIGFwcGVhcnMgdG8gYmUgY29uc3Rh
bnQgYXQgYSBnaXZlbiBwaXhlbCBjb29yZGluYXRlIHdpdGggYSBnaXZlbiAnICsKKyAgICAgICAg
ICAgICh0aGlzLm1faXNBbHBoYVRvQ292ZXJhZ2VDYXNlID8gJ2FscGhhJyA6ICcnKSArCisgICAg
ICAgICAgICAodGhpcy5tX2lzQWxwaGFUb0NvdmVyYWdlQ2FzZSAmJiB0aGlzLm1faXNTYW1wbGVD
b3ZlcmFnZUNhc2UgPyAnIGFuZCAnIDogJycpICsKKyAgICAgICAgICAgICh0aGlzLm1faXNTYW1w
bGVDb3ZlcmFnZUNhc2UgPyAnY292ZXJhZ2UgdmFsdWUnIDogJycpKTsKKworICAgICAgICB0ZXN0
UGFzc2VkT3B0aW9ucygnUGFzc2VkJywgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RD
YXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFRlc3Rz
IGNvdmVyYWdlIG1hc2sgaW52ZXJzaW9uIHZhbGlkaXR5LgorICAgICAqCisgICAgICogVGVzdHMg
dGhhdCB0aGUgY292ZXJhZ2UgbWFza3Mgb2J0YWluZWQgYnkgZ2xTYW1wbGVDb3ZlcmFnZSguLi4s
IHRydWUpCisgICAgICogYW5kIGdsU2FtcGxlQ292ZXJhZ2UoLi4uLCBmYWxzZSkgYXJlIGluZGVl
ZCBlYWNoIG90aGVycycgaW52ZXJzZXMuCisgICAgICogVGhpcyBpcyBkb25lIGJ5IGRyYXdpbmcg
YSBwYXR0ZXJuLCB3aXRoIHZhcnlpbmcgY292ZXJhZ2UgdmFsdWVzLAorICAgICAqIG92ZXJsYXBw
ZWQgYnkgYSBwYXR0ZXJuIHRoYXQgaGFzIGludmVydGVkIG1hc2tzIGFuZCBpcyBvdGhlcndpc2UK
KyAgICAgKiBpZGVudGljYWwuIFRoZSByZXN1bHRpbmcgaW1hZ2UgaXMgY29tcGFyZWQgdG8gb25l
IG9idGFpbmVkIGJ5IGRyYXdpbmcKKyAgICAgKiB0aGUgc2FtZSBwYXR0ZXJuIGJ1dCB3aXRoIGFs
bC1vbmVzIGNvdmVyYWdlIG1hc2tzLgorICAgICAqIEBleHRlbmRzIHtlczNmTXVsdGlzYW1wbGVU
ZXN0cy5NdWx0aXNhbXBsZUNhc2V9CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJh
bSB7bnVtYmVyPX0gbnVtRmJvU2FtcGxlcworICAgICAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRl
c3RzLkNvdmVyYWdlTWFza0ludmVydENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBudW1GYm9T
YW1wbGVzKSB7CisgICAgICBudW1GYm9TYW1wbGVzID0gbnVtRmJvU2FtcGxlcyA9PT0gdW5kZWZp
bmVkID8gMCA6IG51bUZib1NhbXBsZXM7CisgICAgICAvKiogQHR5cGUge2VzM2ZNdWx0aXNhbXBs
ZVRlc3RzLkZib1BhcmFtc30gKi8KKyAgICAgIHZhciBwYXJhbXMgPSBudW1GYm9TYW1wbGVzID49
IDAgPyBuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJvUGFyYW1zKG51bUZib1NhbXBsZXMsIGZh
bHNlLCBmYWxzZSkgOiBuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuRmJvUGFyYW1zKCk7CisgICAg
ICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBk
ZXNjLCAyNTYsIHBhcmFtcyk7CisgICAgfTsKKworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNv
dmVyYWdlTWFza0ludmVydENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmTXVsdGlz
YW1wbGVUZXN0cy5NdWx0aXNhbXBsZUNhc2UucHJvdG90eXBlKTsKKworICAgIC8qKiBDb3B5IHRo
ZSBjb25zdHJ1Y3RvciAqLworICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNvdmVyYWdlTWFza0lu
dmVydENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZk11bHRpc2FtcGxlVGVzdHMuQ292
ZXJhZ2VNYXNrSW52ZXJ0Q2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
aW52ZXJ0U2FtcGxlQ292ZXJhZ2UKKyAgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5D
b3ZlcmFnZU1hc2tJbnZlcnRDYXNlLnByb3RvdHlwZS5kcmF3UGF0dGVybiA9IGZ1bmN0aW9uKGlu
dmVydFNhbXBsZUNvdmVyYWdlKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bnVtVHJpYW5nbGVzID0gMjU7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVHJpYW5n
bGVzOyBpKyspIHsKKyAgICAgICAgICAgIGdsLnNhbXBsZUNvdmVyYWdlKGkgLyAobnVtVHJpYW5n
bGVzIC0gMSksIGludmVydFNhbXBsZUNvdmVyYWdlID8gdHJ1ZSA6IGZhbHNlKTsKKworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhbmdsZTAgPSAyLjAgKiBNYXRoLlBJICog
aSAvIG51bVRyaWFuZ2xlczsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
YW5nbGUxID0gMi4wICogTWF0aC5QSSAqIChpICsgMC41KSAvIG51bVRyaWFuZ2xlczsKKworICAg
ICAgICAgICAgdGhpcy5yZW5kZXJUcmlhbmdsZV9wQXNWZWMyV2l0aENvbG9yKAorICAgICAgICAg
ICAgICAgIFswLjAsIDAuMF0sCisgICAgICAgICAgICAgICAgW01hdGguY29zKGFuZ2xlMCkgKiAw
Ljk1LCBNYXRoLnNpbihhbmdsZTApICogMC45NV0sCisgICAgICAgICAgICAgICAgW01hdGguY29z
KGFuZ2xlMSkgKiAwLjk1LCBNYXRoLnNpbihhbmdsZTEpICogMC45NV0sCisgICAgICAgICAgICAg
ICAgWzAuNCArIGkgLyBudW1UcmlhbmdsZXMgKiAwLjYsCisgICAgICAgICAgICAgICAgIDAuNSAr
IGkgLyBudW1UcmlhbmdsZXMgKiAwLjMsCisgICAgICAgICAgICAgICAgIDAuNiAtIGkgLyBudW1U
cmlhbmdsZXMgKiAwLjUsCisgICAgICAgICAgICAgICAgIDAuNyAtIGkgLyBudW1UcmlhbmdsZXMg
KiAwLjddKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEByZXR1cm4ge3Rj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgKi8KKyAgICBlczNmTXVsdGlzYW1wbGVUZXN0
cy5Db3ZlcmFnZU1hc2tJbnZlcnRDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHRoaXMucmFuZG9taXplVmlld3BvcnQoKTsKKworICAgICAgICBnbC5lbmFibGUo
Z2wuQkxFTkQpOworICAgICAgICBnbC5ibGVuZEVxdWF0aW9uKGdsLkZVTkNfQUREKTsKKyAgICAg
ICAgZ2wuYmxlbmRGdW5jKGdsLk9ORSwgZ2wuT05FKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ0FkZGl0aXZlIGJsZW5kaW5nIGVuYWJsZWQgaW4gb3JkZXIgdG8gZGV0ZWN0IChlcnJv
bmVvdXNseSkgb3ZlcmxhcHBpbmcgc2FtcGxlcycpOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdDbGVhcmluZyBjb2xvciB0byBhbGwtemVyb3MnKTsKKyAgICAgICAgZ2wuY2xlYXJD
b2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0RyYXdpbmcgdGhlIHBhdHRl
cm4gd2l0aCBnbC5TQU1QTEVfQ09WRVJBR0UgZGlzYWJsZWQnKTsKKyAgICAgICAgdGhpcy5kcmF3
UGF0dGVybihmYWxzZSk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAq
LyB2YXIgcmVuZGVyZWRJbWdOb1NhbXBsZUNvdmVyYWdlID0gdGhpcy5yZWFkSW1hZ2UoKTsKKwor
ICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgnUmVuZGVyZWRJbWFnZU5vU2FtcGxlQ292ZXJh
Z2UnLCAnUmVuZGVyZWQgaW1hZ2Ugd2l0aCBnbC5TQU1QTEVfQ09WRVJBR0UgZGlzYWJsZWQnLCBy
ZW5kZXJlZEltZ05vU2FtcGxlQ292ZXJhZ2UuZ2V0QWNjZXNzKCkpOworICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnQ2xlYXJpbmcgY29sb3IgdG8gYWxsLXplcm9zJyk7CisgICAgICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5lbmFibGUoZ2wuU0FNUExF
X0NPVkVSQUdFKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0RyYXdpbmcgdGhlIHBh
dHRlcm4gd2l0aCBnbC5TQU1QTEVfQ09WRVJBR0UgZW5hYmxlZCwgdXNpbmcgbm9uLWludmVydGVk
IG1hc2tzJyk7CisgICAgICAgIHRoaXMuZHJhd1BhdHRlcm4oZmFsc2UpOworICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnRHJhd2luZyB0aGUgcGF0dGVybiB3aXRoIGdsLlNBTVBMRV9DT1ZF
UkFHRSBlbmFibGVkLCB1c2luZyBzYW1lIHNhbXBsZSBjb3ZlcmFnZSB2YWx1ZXMgYnV0IGludmVy
dGVkIG1hc2tzJyk7CisgICAgICAgIHRoaXMuZHJhd1BhdHRlcm4odHJ1ZSk7CisgICAgICAgIC8q
KiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVuZGVyZWRJbWdTYW1wbGVDb3Zl
cmFnZSA9IHRoaXMucmVhZEltYWdlKCk7CisKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2Uo
J1JlbmRlcmVkSW1hZ2VTYW1wbGVDb3ZlcmFnZScsICdSZW5kZXJlZCBpbWFnZSB3aXRoIGdsLlNB
TVBMRV9DT1ZFUkFHRSBlbmFibGVkJywgcmVuZGVyZWRJbWdTYW1wbGVDb3ZlcmFnZS5nZXRBY2Nl
c3MoKSk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBhc3NlZCA9IHRjdUlt
YWdlQ29tcGFyZS5waXhlbFRocmVzaG9sZENvbXBhcmUoCisgICAgICAgICAgICAnQ292ZXJhZ2VW
c05vQ292ZXJhZ2UnLAorICAgICAgICAgICAgJ0NvbXBhcmlzb24gb2Ygc2FtZSBwYXR0ZXJuIHdp
dGggZ2wuU0FNUExFX0NPVkVSQUdFIGRpc2FibGVkIGFuZCBlbmFibGVkJywKKyAgICAgICAgICAg
IHJlbmRlcmVkSW1nTm9TYW1wbGVDb3ZlcmFnZSwKKyAgICAgICAgICAgIHJlbmRlcmVkSW1nU2Ft
cGxlQ292ZXJhZ2UsCisgICAgICAgICAgICBbMCwgMCwgMCwgMF0pOworCisgICAgICAgIGlmIChw
YXNzZWQpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdTdWNjZXNzOiBUaGUg
dHdvIGltYWdlcyByZW5kZXJlZCBhcmUgaWRlbnRpY2FsJyk7CisgICAgICAgICAgICB0ZXN0UGFz
c2VkT3B0aW9ucygnUGFzc2VkJywgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkJywgZmFsc2UpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9
OworCisgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgdGVzdEdyb3VwID0gdGN1VGVzdENhc2UucnVubmVyLnRlc3RDYXNlczsKKyAgICAgICAg
LyoqCisgICAgICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICAgICAqLworICAgICAgICB2YXIg
Q2FzZVR5cGUgPSB7CisgICAgICAgICAgICBERUZBVUxUX0ZSQU1FQlVGRkVSOiAwLAorICAgICAg
ICAgICAgRkJPXzRfU0FNUExFUzogMSwKKyAgICAgICAgICAgIEZCT184X1NBTVBMRVM6IDIsCisg
ICAgICAgICAgICBGQk9fTUFYX1NBTVBMRVM6IDMKKyAgICAgICAgfTsKKworICAgICAgICBmb3Ig
KHZhciBjYXNlVHlwZUkgaW4gQ2FzZVR5cGUpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Q2Fz
ZVR5cGV9ICovIHZhciBjYXNlVHlwZSA9IENhc2VUeXBlW2Nhc2VUeXBlSV07CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgICAgIHZhciBudW1GYm9TYW1wbGVzID0g
Y2FzZVR5cGUgPT09IENhc2VUeXBlLkRFRkFVTFRfRlJBTUVCVUZGRVIgPyAtMSA6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VUeXBlID09PSBDYXNlVHlwZS5GQk9fNF9TQU1Q
TEVTID8gNCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VUeXBlID09PSBD
YXNlVHlwZS5GQk9fOF9TQU1QTEVTID8gOCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2VUeXBlID09PSBDYXNlVHlwZS5GQk9fTUFYX1NBTVBMRVMgPyAwIDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLTI7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7P3N0
cmluZ30gKi8KKyAgICAgICAgICAgIHZhciBuYW1lID0gY2FzZVR5cGUgPT09IENhc2VUeXBlLkRF
RkFVTFRfRlJBTUVCVUZGRVIgPyAnZGVmYXVsdF9mcmFtZWJ1ZmZlcicgOgorICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlVHlwZSA9PT0gQ2FzZVR5cGUuRkJPXzRfU0FNUExFUyA/ICdmYm9fNF9z
YW1wbGVzJyA6CisgICAgICAgICAgICAgICAgICAgICAgIGNhc2VUeXBlID09PSBDYXNlVHlwZS5G
Qk9fOF9TQU1QTEVTID8gJ2Zib184X3NhbXBsZXMnIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZVR5cGUgPT09IENhc2VUeXBlLkZCT19NQVhfU0FNUExFUyA/ICdmYm9fbWF4X3NhbXBsZXMn
IDoKKyAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
P3N0cmluZ30gKi8KKyAgICAgICAgICAgIHZhciBkZXNjID0gY2FzZVR5cGUgPT09IENhc2VUeXBl
LkRFRkFVTFRfRlJBTUVCVUZGRVIgPyAnUmVuZGVyIGludG8gZGVmYXVsdCBmcmFtZWJ1ZmZlcicg
OgorICAgICAgICAgICAgICAgICAgICAgICBjYXNlVHlwZSA9PT0gQ2FzZVR5cGUuRkJPXzRfU0FN
UExFUyA/ICdSZW5kZXIgaW50byBhIGZyYW1lYnVmZmVyIG9iamVjdCB3aXRoIDQgc2FtcGxlcycg
OgorICAgICAgICAgICAgICAgICAgICAgICBjYXNlVHlwZSA9PT0gQ2FzZVR5cGUuRkJPXzhfU0FN
UExFUyA/ICdSZW5kZXIgaW50byBhIGZyYW1lYnVmZmVyIG9iamVjdCB3aXRoIDggc2FtcGxlcycg
OgorICAgICAgICAgICAgICAgICAgICAgICBjYXNlVHlwZSA9PT0gQ2FzZVR5cGUuRkJPX01BWF9T
QU1QTEVTID8gJ1JlbmRlciBpbnRvIGEgZnJhbWVidWZmZXIgb2JqZWN0IHdpdGggdGhlIG1heGlt
dW0gbnVtYmVyIG9mIHNhbXBsZXMnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsKKwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGdyb3Vw
ID0gdGN1VGVzdENhc2UubmV3VGVzdChuYW1lLCBkZXNjKTsKKworICAgICAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucyhncm91cC5uYW1lICE9IG51bGwsICdFcnJvcjogTm8gVGVzdCBOYW1lJywgZmFs
c2UsIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhncm91cC5kZXNjcmlwdGlv
biAhPSBudWxsLCAnRXJyb3I6IE5vIFRlc3QgRGVzY3JpcHRpb24nLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG51bUZib1NhbXBsZXMgPj0gLTEsICdBc3NlcnQg
RmFpbGVkOiBudW1GYm9TYW1wbGVzID49IC0xJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAg
dGVzdEdyb3VwLmFkZENoaWxkKGdyb3VwKTsKKworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLlBvbHlnb25OdW1TYW1wbGVzQ2FzZSgKKyAgICAgICAg
ICAgICAgICAnbnVtX3NhbXBsZXNfcG9seWdvbicsCisgICAgICAgICAgICAgICAgJ1Rlc3Qgc2Fu
aXR5IG9mIHRoZSBzYW1wbGUgY291bnQsIHdpdGggcG9seWdvbnMnLAorICAgICAgICAgICAgICAg
IG51bUZib1NhbXBsZXMpKTsKKworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZN
dWx0aXNhbXBsZVRlc3RzLkxpbmVOdW1TYW1wbGVzQ2FzZSgKKyAgICAgICAgICAgICAgICAnbnVt
X3NhbXBsZXNfbGluZScsCisgICAgICAgICAgICAgICAgJ1Rlc3Qgc2FuaXR5IG9mIHRoZSBzYW1w
bGUgY291bnQsIHdpdGggbGluZXMnLAorICAgICAgICAgICAgICAgIG51bUZib1NhbXBsZXMpKTsK
KworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNv
bW1vbkVkZ2VDYXNlKAorICAgICAgICAgICAgICAgICdjb21tb25fZWRnZV9zbWFsbF9xdWFkcycs
CisgICAgICAgICAgICAgICAgJ1Rlc3QgcG9seWdvbnNcJ3MgY29tbW9uIGVkZ2VzIHdpdGggc21h
bGwgcXVhZHMnLAorICAgICAgICAgICAgICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNvbW1vbkVk
Z2VDYXNlLkNhc2VUeXBlLlNNQUxMX1FVQURTLAorICAgICAgICAgICAgICAgIG51bUZib1NhbXBs
ZXMpKTsKKworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZNdWx0aXNhbXBsZVRl
c3RzLkNvbW1vbkVkZ2VDYXNlKAorICAgICAgICAgICAgICAgICdjb21tb25fZWRnZV9iaWdfcXVh
ZCcsCisgICAgICAgICAgICAgICAgJ1Rlc3QgcG9seWdvblwncyBjb21tb24gZWRnZXMgd2l0aCBi
aWdnZXItdGhhbi12aWV3cG9ydCBxdWFkcycsCisgICAgICAgICAgICAgICAgZXMzZk11bHRpc2Ft
cGxlVGVzdHMuQ29tbW9uRWRnZUNhc2UuQ2FzZVR5cGUuQklHR0VSX1RIQU5fVklFV1BPUlRfUVVB
RCwKKyAgICAgICAgICAgICAgICBudW1GYm9TYW1wbGVzKSk7CisKKyAgICAgICAgICAgIGdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdlQ2FzZSgKKyAgICAg
ICAgICAgICAgICAnY29tbW9uX2VkZ2Vfdmlld3BvcnRfcXVhZCcsCisgICAgICAgICAgICAgICAg
J1Rlc3QgcG9seWdvbnNcJyBjb21tb24gZWRnZXMgd2l0aCBleGFjdGx5IHZpZXdwb3J0LXNpemVk
IHF1YWRzJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5Db21tb25FZGdl
Q2FzZS5DYXNlVHlwZS5GSVRfVklFV1BPUlRfUVVBRCwKKyAgICAgICAgICAgICAgICBudW1GYm9T
YW1wbGVzKSk7CisKKyAgICAgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmTXVsdGlzYW1w
bGVUZXN0cy5TYW1wbGVEZXB0aENhc2UoCisgICAgICAgICAgICAgICAgJ2RlcHRoJywKKyAgICAg
ICAgICAgICAgICAnVGVzdCB0aGF0IGRlcHRoIHZhbHVlcyBhcmUgcGVyLXNhbXBsZScsCisgICAg
ICAgICAgICAgICAgbnVtRmJvU2FtcGxlcykpOworCisgICAgICAgICAgICBncm91cC5hZGRDaGls
ZChuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuU2FtcGxlU3RlbmNpbENhc2UoCisgICAgICAgICAg
ICAgICAgJ3N0ZW5jaWwnLAorICAgICAgICAgICAgICAgICdUZXN0IHRoYXQgc3RlbmNpbCB2YWx1
ZXMgYXJlIHBlci1zYW1wbGUnLAorICAgICAgICAgICAgICAgIG51bUZib1NhbXBsZXMpKTsKKwor
ICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLkNvdmVy
YWdlTWFza0ludmVydENhc2UoCisgICAgICAgICAgICAgICAgJ3NhbXBsZV9jb3ZlcmFnZV9pbnZl
cnQnLAorICAgICAgICAgICAgICAgICdUZXN0IHRoYXQgbm9uLWludmVydGVkIGFuZCBpbnZlcnRl
ZCBzYW1wbGUgY292ZXJhZ2UgbWFza3MgYXJlIGVhY2ggb3RoZXJcJ3MgbmVnYXRpb25zJywKKyAg
ICAgICAgICAgICAgICBudW1GYm9TYW1wbGVzKSk7CisKKworICAgICAgICAgICAgZ3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9wb3J0aW9uYWxpdHlDYXNlKAor
ICAgICAgICAgICAgICAgICdwcm9wb3J0aW9uYWxpdHlfYWxwaGFfdG9fY292ZXJhZ2UnLAorICAg
ICAgICAgICAgICAgICdUZXN0IHRoZSBwcm9wb3J0aW9uYWxpdHkgcHJvcGVydHkgb2YgR0xfU0FN
UExFX0FMUEhBX1RPX0NPVkVSQUdFJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5NYXNrUHJvcG9ydGlvbmFsaXR5Q2FzZS5DYXNlVHlwZS5BTFBIQV9UT19DT1ZFUkFHRSwK
KyAgICAgICAgICAgICAgICBudW1GYm9TYW1wbGVzKSk7CisgICAgICAgICAgICBncm91cC5hZGRD
aGlsZChuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza1Byb3BvcnRpb25hbGl0eUNhc2UoCisg
ICAgICAgICAgICAgICAgJ3Byb3BvcnRpb25hbGl0eV9zYW1wbGVfY292ZXJhZ2UnLAorICAgICAg
ICAgICAgICAgICdUZXN0IHRoZSBwcm9wb3J0aW9uYWxpdHkgcHJvcGVydHkgb2YgR0xfU0FNUExF
X0NPVkVSQUdFJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrUHJv
cG9ydGlvbmFsaXR5Q2FzZS5DYXNlVHlwZS5TQU1QTEVfQ09WRVJBR0UsCisgICAgICAgICAgICAg
ICAgbnVtRmJvU2FtcGxlcykpOworICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZN
dWx0aXNhbXBsZVRlc3RzLk1hc2tQcm9wb3J0aW9uYWxpdHlDYXNlKAorICAgICAgICAgICAgICAg
ICdwcm9wb3J0aW9uYWxpdHlfc2FtcGxlX2NvdmVyYWdlX2ludmVydGVkJywKKyAgICAgICAgICAg
ICAgICAnVGVzdCB0aGUgcHJvcG9ydGlvbmFsaXR5IHByb3BlcnR5IG9mIGludmVydGVkLW1hc2sg
R0xfU0FNUExFX0NPVkVSQUdFJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0
cy5NYXNrUHJvcG9ydGlvbmFsaXR5Q2FzZS5DYXNlVHlwZS5TQU1QTEVfQ09WRVJBR0VfSU5WRVJU
RUQsCisgICAgICAgICAgICAgICAgbnVtRmJvU2FtcGxlcykpOworCisgICAgICAgICAgICBncm91
cC5hZGRDaGlsZChuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2UoCisg
ICAgICAgICAgICAgICAgJ2NvbnN0YW5jeV9hbHBoYV90b19jb3ZlcmFnZScsCisgICAgICAgICAg
ICAgICAgJ1Rlc3QgdGhhdCBjb3ZlcmFnZSBtYXNrIGlzIGNvbnN0YW50IGF0IGdpdmVuIGNvb3Jk
aW5hdGVzIHdpdGggYSBnaXZlbiBhbHBoYSBvciBjb3ZlcmFnZSB2YWx1ZSwgdXNpbmcgR0xfU0FN
UExFX0FMUEhBX1RPX0NPVkVSQUdFJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVU
ZXN0cy5NYXNrQ29uc3RhbmN5Q2FzZS5DYXNlVHlwZS5BTFBIQV9UT19DT1ZFUkFHRSwKKyAgICAg
ICAgICAgICAgICBudW1GYm9TYW1wbGVzKSk7CisgICAgICAgICAgICBncm91cC5hZGRDaGlsZChu
ZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2UoCisgICAgICAgICAgICAg
ICAgJ2NvbnN0YW5jeV9zYW1wbGVfY292ZXJhZ2UnLAorICAgICAgICAgICAgICAgICdUZXN0IHRo
YXQgY292ZXJhZ2UgbWFzayBpcyBjb25zdGFudCBhdCBnaXZlbiBjb29yZGluYXRlcyB3aXRoIGEg
Z2l2ZW4gYWxwaGEgb3IgY292ZXJhZ2UgdmFsdWUsIHVzaW5nIEdMX1NBTVBMRV9DT1ZFUkFHRScs
CisgICAgICAgICAgICAgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNhc2Uu
Q2FzZVR5cGUuU0FNUExFX0NPVkVSQUdFLAorICAgICAgICAgICAgICAgIG51bUZib1NhbXBsZXMp
KTsKKyAgICAgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmTXVsdGlzYW1wbGVUZXN0cy5N
YXNrQ29uc3RhbmN5Q2FzZSgKKyAgICAgICAgICAgICAgICAnY29uc3RhbmN5X3NhbXBsZV9jb3Zl
cmFnZV9pbnZlcnRlZCcsCisgICAgICAgICAgICAgICAgJ1Rlc3QgdGhhdCBjb3ZlcmFnZSBtYXNr
IGlzIGNvbnN0YW50IGF0IGdpdmVuIGNvb3JkaW5hdGVzIHdpdGggYSBnaXZlbiBhbHBoYSBvciBj
b3ZlcmFnZSB2YWx1ZSwgdXNpbmcgaW52ZXJ0ZWQtbWFzayBHTF9TQU1QTEVfQ09WRVJBR0UnLAor
ICAgICAgICAgICAgICAgIGVzM2ZNdWx0aXNhbXBsZVRlc3RzLk1hc2tDb25zdGFuY3lDYXNlLkNh
c2VUeXBlLlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRFRCwKKyAgICAgICAgICAgICAgICBudW1GYm9T
YW1wbGVzKSk7CisgICAgICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZk11bHRpc2FtcGxl
VGVzdHMuTWFza0NvbnN0YW5jeUNhc2UoCisgICAgICAgICAgICAgICAgJ2NvbnN0YW5jeV9ib3Ro
JywKKyAgICAgICAgICAgICAgICAnVGVzdCB0aGF0IGNvdmVyYWdlIG1hc2sgaXMgY29uc3RhbnQg
YXQgZ2l2ZW4gY29vcmRpbmF0ZXMgd2l0aCBhIGdpdmVuIGFscGhhIG9yIGNvdmVyYWdlIHZhbHVl
LCB1c2luZyBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgYW5kIEdMX1NBTVBMRV9DT1ZFUkFH
RScsCisgICAgICAgICAgICAgICAgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0YW5jeUNh
c2UuQ2FzZVR5cGUuQk9USCwKKyAgICAgICAgICAgICAgICBudW1GYm9TYW1wbGVzKSk7CisgICAg
ICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZk11bHRpc2FtcGxlVGVzdHMuTWFza0NvbnN0
YW5jeUNhc2UoCisgICAgICAgICAgICAgICAgJ2NvbnN0YW5jeV9ib3RoX2ludmVydGVkJywKKyAg
ICAgICAgICAgICAgICAnVGVzdCB0aGF0IGNvdmVyYWdlIG1hc2sgaXMgY29uc3RhbnQgYXQgZ2l2
ZW4gY29vcmRpbmF0ZXMgd2l0aCBhIGdpdmVuIGFscGhhIG9yIGNvdmVyYWdlIHZhbHVlLCB1c2lu
ZyBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgYW5kIGludmVydGVkLW1hc2sgR0xfU0FNUExF
X0NPVkVSQUdFJywKKyAgICAgICAgICAgICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5NYXNrQ29u
c3RhbmN5Q2FzZS5DYXNlVHlwZS5CT1RIX0lOVkVSVEVELAorICAgICAgICAgICAgICAgIG51bUZi
b1NhbXBsZXMpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSdW4gdGVz
dAorICAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICAgICAq
LworICAgICBlczNmTXVsdGlzYW1wbGVUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7Cisg
ICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgVGVzdCBSb290IHBhcmFtZXRl
cnMKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ211bHRpc2FtcGxlJzsKKyAgICAgICAgdmFyIHRl
c3REZXNjcmlwdGlvbiA9ICdNdWx0aXNhbXBsZSBUZXN0cyc7CisgICAgICAgIHZhciBzdGF0ZSA9
IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICBzdGF0ZS50ZXN0TmFtZSA9IHRlc3ROYW1l
OworICAgICAgICBzdGF0ZS5zZXRSb290KHRjdVRlc3RDYXNlLm5ld1Rlc3QodGVzdE5hbWUsIHRl
c3REZXNjcmlwdGlvbiwgbnVsbCkpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2Ny
aXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0
ZXN0TmFtZSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIC8vQ3JlYXRlIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIGVz
M2ZNdWx0aXNhbXBsZVRlc3RzLmluaXQoKTsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMK
KyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAg
ICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQg
dG8gZXMzZk11bHRpc2FtcGxlVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAg
dGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMuanMgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZXMzZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE4OTEw
ZWIwZDNkOWNjYTI3ZmNmNTUxM2M2MDRiYmM5MmQ0NzA4OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9lczNmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5qcwpAQCAtMCwwICsxLDExMDQgQEAK
Kyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmTmVnYXRp
dmVCdWZmZXJBcGlUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRl
c3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3RyVXRpbCcpOwor
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJyk7CisKK2dvb2cuc2Nv
cGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZXMzZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMgPSBm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzOworICAgIHZhciBlczNm
QXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisgICAgdmFyIGdsdVN0clV0
aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWw7CisgICAgdmFyIHRjdVRlc3RDYXNlID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBnbAorICAgICovCisgICAgZXMzZk5lZ2F0aXZlQnVmZmVy
QXBpVGVzdHMuaW5pdCA9IGZ1bmN0aW9uKGdsKSB7CisKKyAgICAgICAgdmFyIHRlc3RHcm91cCA9
IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2JpbmRfYnVm
ZmVyJywgJ0ludmFsaWQgZ2wuYmluZEJ1ZmZlcigpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgbm90IG9uZSBvZiB0aGUgYWxsb3dh
YmxlIHZhbHVlcy4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKC0xLCBudWxsKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2J1ZmZlcl9kYXRhJywg
J0ludmFsaWQgZ2wuYnVmZmVyRGF0YSgpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisK
KyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlz
IGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgbm90IGdsLkFSUkFZX0JVRkZFUiBvciBnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUi4nKTsKKyAgICAgICAgICAgICAgICBnbC5idWZmZXJEYXRhKC0xLCAwLCBn
bC5TVFJFQU1fRFJBVyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdXNhZ2UgaXMgbm90IGdsLlNUUkVBTV9EUkFXLCBn
bC5TVEFUSUNfRFJBVywgb3IgZ2wuRFlOQU1JQ19EUkFXLicpOworICAgICAgICAgICAgICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCAtMSk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHNpemUgaXMg
bmVnYXRpdmUuJyk7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIC0xLCBnbC5TVFJFQU1fRFJBVyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIHJlc2VydmVkIGJ1
ZmZlciBvYmplY3QgbmFtZSAwIGlzIGJvdW5kIHRvIHRhcmdldC4nKTsKKyAgICAgICAgICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgICAgICAgICAg
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIGdsLlNUUkVBTV9EUkFXKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAg
ICAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAgfQorICAg
ICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdidWZmZXJfc3ViX2RhdGEnLCAnSW52YWxpZCBn
bC5idWZmZXJTdWJEYXRhKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcig1KTsKKyAgICAgICAgICAgICAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTAsIGdsLlNUUkVBTV9EUkFXKTsKKworICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2Vu
ZXJhdGVkIGlmIHRhcmdldCBpcyBub3QgZ2wuQVJSQVlfQlVGRkVSIG9yIGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLicpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlclN1YkRhdGEoLTEsIDEsIGRh
dGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJB
VElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIHJlc2VydmVkIGJ1ZmZlciBvYmplY3QgbmFtZSAwIGlz
IGJvdW5kIHRvIHRhcmdldC4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5B
UlJBWV9CVUZGRVIsIDAsIGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVy
KGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAg
J2J1ZmZlcl9zdWJfZGF0YV9zaXplX29mZnNldCcsICdJbnZhbGlkIGdsLmJ1ZmZlclN1YkRhdGEo
KSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHZhciBkYXRh
ID0gbmV3IEFycmF5QnVmZmVyKDUpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCAxMCwgZ2wuU1RSRUFNX0RSQVcpOworCisgICAgICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIG9mZnNl
dCBpcyBuZWdhdGl2ZScpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCAtMSwgZGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB0aGUgZGF0YSB3b3VsZCBiZSB3cml0
dGVuIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLicpOworICAgICAgICAgICAgICAgIGdsLmJ1
ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCA3LCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLmJ1
ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNSwgZGF0YSk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdBbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIGRhdGEgaXMgbnVs
bC4nKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIs
IDAsIG51bGwpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZ2wuZGVs
ZXRlQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAg
IHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAg
ICAgICAgICAgJ2NsZWFyJywgJ0ludmFsaWQgZ2wuY2xlYXIoKSB1c2FnZScsIGdsLAorICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGFueSBiaXQgb3RoZXIgdGhhbiB0aGUg
dGhyZWUgZGVmaW5lZCBiaXRzIGlzIHNldCBpbiBtYXNrLicpOworICAgICAgICAgICAgICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RF
TkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5P
X0VSUk9SKTsKKyAgICAgICAgICAgICAgICBnbC5jbGVhcigweDAyMDApOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAg
Z2wuY2xlYXIoMHgxMDAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLmNsZWFyKDB4MDAxMCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soCisgICAgICAgICAgICAncmVhZF9waXhlbHMnLCAnSW52YWxp
ZCBnbC5yZWFkUGl4ZWxzKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CisgICAgICAg
ICAgICAgICAgdmFyIHVieXRlRGF0YSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgICAg
ICAgICAgICAgdmFyIHVzaG9ydERhdGEgPSBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTsKKworICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBp
cyBnZW5lcmF0ZWQgaWYgdGhlIGNvbWJpbmF0aW9uIG9mIGZvcm1hdCBhbmQgdHlwZSBpcyB1bnN1
cHBvcnRlZC4nKTsKKyAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQsIHVzaG9ydERhdGEpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBpZiB0aGUgQXJyYXlCdWZmZXIgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBw
YXJhbWV0ZXIuJyk7CisgICAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1c2hvcnREYXRhKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBl
aXRoZXIgd2lkdGggb3IgaGVpZ2h0IGlzIG5lZ2F0aXZlLicpOworICAgICAgICAgICAgICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgLTEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVieXRl
RGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIC0xLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCB1Ynl0ZURhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygw
LCAwLCAtMSwgLTEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVieXRlRGF0YSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09Q
RVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciBp
cyBub3QgZnJhbWVidWZmZXIgY29tcGxldGUuJyk7CisgICAgICAgICAgICAgICAgdmFyIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgICAgICAgICAgICAgIGdsLnJlYWRQaXhl
bHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWJ5dGVEYXRhKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ3JlYWRfcGl4ZWxz
X2Zvcm1hdF9taXNtYXRjaCcsICdJbnZhbGlkIGdsUmVhZFBpeGVscygpIHVzYWdlJywgZ2wsCisg
ICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gbmV3
IEFycmF5QnVmZmVyKDgpOworICAgICAgICAgICAgICAgIHZhciB1Ynl0ZURhdGEgPSBuZXcgVWlu
dDhBcnJheShidWZmZXIpOworICAgICAgICAgICAgICAgIHZhciB1c2hvcnREYXRhID0gbmV3IFVp
bnQxNkFycmF5KGJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnVW5zdXBwb3J0ZWQgY29tYmluYXRpb25zIG9mIGZvcm1hdCBhbmQgdHlwZSB3aWxsIGdlbmVy
YXRlIGEgZ2wuSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuJyk7CisgICAgICAgICAgICAgICAgZ2wu
cmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9TSE9SVF81XzZfNSwg
dXNob3J0RGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBn
bC5BTFBIQSwgZ2wuVU5TSUdORURfU0hPUlRfNV82XzUsIHVzaG9ydERhdGEpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCLCBnbC5VTlNJR05FRF9TSE9S
VF80XzRfNF80LCB1c2hvcnREYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAs
IDAsIDEsIDEsIGdsLkFMUEhBLCBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCB1c2hvcnREYXRh
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQiwgZ2wu
VU5TSUdORURfU0hPUlRfNV81XzVfMSwgdXNob3J0RGF0YSk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wu
cmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5BTFBIQSwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVf
MSwgdXNob3J0RGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuUkdCQS9nbC5VTlNJR05FRF9CWVRFIGlzIGFsd2F5cyBhY2NlcHRlZCBhbmQgdGhlIG90aGVy
IGFjY2VwdGFibGUgcGFpciBjYW4gYmUgZGlzY292ZXJlZCBieSBxdWVyeWluZyBnbC5JTVBMRU1F
TlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCBhbmQgZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVB
RF9UWVBFLicpOworICAgICAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWJ5dGVEYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgICAgICB2YXIgcmVhZEZvcm1h
dCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLklNUExFTUVOVEFU
SU9OX0NPTE9SX1JFQURfRk9STUFUKSk7CisgICAgICAgICAgICAgICAgdmFyIHJlYWRUeXBlID0g
LyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJT05f
Q09MT1JfUkVBRF9UWVBFKSk7CisgICAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCAx
LCAxLCByZWFkRm9ybWF0LCByZWFkVHlwZSwgdWJ5dGVEYXRhKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7
CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2Fs
bGJhY2soCisgICAgICAgICAgICAncmVhZF9waXhlbHNfZmJvX2Zvcm1hdF9taXNtYXRjaCcsICdJ
bnZhbGlkIGdsLnJlYWRQaXhlbHMoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdmFyIHVieXRlRGF0YSA9IG5ldyBVaW50OEFycmF5KDQpOwor
ICAgICAgICAgICAgICAgIHZhciBmbG9hdERhdGEgPSBuZXcgRmxvYXQzMkFycmF5KDQpOworCisg
ICAgICAgICAgICAgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
ICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAzMiwgMzIs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgICAgICAgICAgICAgICAg
dmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgICAgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGN1cnJlbnRseSBib3VuZCBm
cmFtZWJ1ZmZlciBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggZm9ybWF0IGFuZCB0eXBlLicp
OworCisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCAzMiwgMzIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAg
ICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisgICAgICAgICAgICAg
ICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICAgICAgZ2wu
cmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5GTE9BVCwgZmxvYXREYXRhKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKwor
ICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTMy
SSwgMzIsIDMyLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCwgbnVsbCk7CisgICAgICAgICAg
ICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICAgICAgICAgICAgICBn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgICAgICBnbC5yZWFk
UGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLkZMT0FULCBmbG9hdERhdGEpOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAg
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBMzJVSSwg
MzIsIDMyLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCk7CisgICAg
ICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICAgICAgICAg
ICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgICAgICBn
bC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLkZMT0FULCBmbG9hdERhdGEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwor
CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFU
SU9OIGlzIGdlbmVyYXRlZCBpZiBnbC5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgaXMgbm9uLXpl
cm8sIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlzIGNvbXBsZXRlLCBhbmQgdGhlIHZhbHVlIG9mIGds
LlNBTVBMRV9CVUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4g
emVyby4nKTsKKworICAgICAgICAgICAgICAgIHZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgcmJvKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoZ2wuUkVOREVSQlVGRkVSLCA0LCBnbC5SR0JBOCwgMzIsIDMyKTsKKyAgICAgICAgICAgICAg
ICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKworICAgICAgICAgICAgICAgIHZhciBi
aW5kaW5nID0gLyoqIEB0eXBlIHtXZWJHTEZyYW1lYnVmZmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVy
KGdsLlJFQURfRlJBTUVCVUZGRVJfQklORElORykpOworICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkc6ICcgKyBiaW5kaW5nKTsK
KyAgICAgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KTsKKyAgICAgICAgICAgICAgICB2YXIgc2FtcGxlQnVmZmVycyA9IC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlNBTVBMRV9CVUZGRVJTKSk7CisgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlNBTVBMRV9CVUZGRVJTOiAnICsgc2FtcGxlQnVm
ZmVycyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisK
KyAgICAgICAgICAgICAgICBpZiAoYmluZGluZyA9PSBudWxsIHx8IHNhbXBsZUJ1ZmZlcnMgPD0g
MCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnRlc3RGYWlsZWQoJ2V4cGVjdGVkIGdsLlJF
QURfRlJBTUVCVUZGRVJfQklORElORyB0byBiZSBub24temVybyBhbmQgZ2wuU0FNUExFX0JVRkZF
UlMgdG8gYmUgZ3JlYXRlciB0aGFuIHplcm8nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIHVieXRlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsK
KyAgICAgICAgICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvKTsKKyAgICAgICAgICAg
ICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAg
ICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgICAgICAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAgICAg
dGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soCisgICAg
ICAgICAgICAnYmluZF9idWZmZXJfcmFuZ2UnLCAnSW52YWxpZCBnbEJpbmRCdWZmZXJSYW5nZSgp
IHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2
YXIgYnVmRW1wdHkgPSBuZXcgQXJyYXlCdWZmZXIoMTYpOworCisgICAgICAgICAgICAgICAgdmFy
IGJ1ZlVuaWZvcm0gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5k
QnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCBidWZVbmlmb3JtKTsKKyAgICAgICAgICAgICAgICBn
bC5idWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCBidWZFbXB0eSwgZ2wuU1RSRUFNX0RSQVcp
OworCisgICAgICAgICAgICAgICAgdmFyIGJ1ZlRGID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBi
dWZURik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCBidWZFbXB0eSwgZ2wuU1RSRUFNX0RSQVcpOworCisgICAgICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFy
Z2V0IGlzIG5vdCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSIG9yIGdsLlVOSUZPUk1fQlVG
RkVSLicpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5BUlJBWV9CVUZG
RVIsIDAsIGJ1ZlVuaWZvcm0sIDAsIDQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiBhbmQgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
IGdsLk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy4nKTsKKyAgICAgICAg
ICAgICAgICB2YXIgbWF4VEZTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJh
bWV0ZXIoZ2wuTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTKSk7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIsIG1heFRGU2l6ZSwgYnVmVEYsIDAsIDQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIGdsLlVO
SUZPUk1fQlVGRkVSIGFuZCBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wuTUFY
X1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTLicpOworICAgICAgICAgICAgICAgIHZhciBtYXhVU2l6
ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9VTklGT1JN
X0JVRkZFUl9CSU5ESU5HUykpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJSYW5nZShn
bC5VTklGT1JNX0JVRkZFUiwgbWF4VVNpemUsIGJ1ZlVuaWZvcm0sIDAsIDQpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQg
aWYgc2l6ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVyby4nKTsKKyAgICAgICAgICAgICAg
ICBnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVU5JRk9STV9CVUZGRVIsIDAsIGJ1ZlVuaWZvcm0sIDAs
IC0xKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5VTklGT1JNX0JVRkZFUiwg
MCwgYnVmVW5pZm9ybSwgMCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiBhbmQgc2l6ZSBvciBvZmZzZXQgYXJlIG5vdCBtdWx0aXBsZXMgb2Yg
NC4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyUmFuZ2UoZ2wuVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgMCwgYnVmVEYsIDQsIDUpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZl
clJhbmdlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1ZlRGLCA1LCA0KTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBidWZURiwgNSwgNyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgZ2wuVU5JRk9STV9CVUZG
RVIgYW5kIG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiBnbC5VTklGT1JNX0JVRkZFUl9PRkZT
RVRfQUxJR05NRU5ULicpOworICAgICAgICAgICAgICAgIHZhciBhbGlnbm1lbnQgPSAvKiogQHR5
cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5VTklGT1JNX0JVRkZFUl9PRkZTRVRf
QUxJR05NRU5UKSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlclJhbmdlKGdsLlVOSUZP
Uk1fQlVGRkVSLCAwLCBidWZVbmlmb3JtLCBhbGlnbm1lbnQgKyAxLCA0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAg
ICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZlVuaWZvcm0pOworICAgICAgICAgICAgICAgIGdsLmRlbGV0
ZUJ1ZmZlcihidWZURik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRl
c3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAg
ICAgICAgJ2JpbmRfYnVmZmVyX2Jhc2UnLCAnSW52YWxpZCBnbEJpbmRCdWZmZXJCYXNlKCkgdXNh
Z2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBi
dWZFbXB0eSA9IG5ldyBBcnJheUJ1ZmZlcigxNik7CisKKyAgICAgICAgICAgICAgICB2YXIgYnVm
VW5pZm9ybSA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZm
ZXIoZ2wuVU5JRk9STV9CVUZGRVIsIGJ1ZlVuaWZvcm0pOworICAgICAgICAgICAgICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIGJ1ZkVtcHR5LCBnbC5TVFJFQU1fRFJBVyk7CisK
KyAgICAgICAgICAgICAgICB2YXIgYnVmVEYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1ZlRG
KTsKKyAgICAgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIGJ1ZkVtcHR5LCBnbC5TVFJFQU1fRFJBVyk7CisKKyAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQg
aXMgbm90IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIgb3IgZ2wuVU5JRk9STV9CVUZGRVIu
Jyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoLTEsIDAsIGJ1ZlVuaWZvcm0p
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5BUlJBWV9CVUZGRVIsIDAsIGJ1ZlVu
aWZvcm0pOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVN
KTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgZ2wuVU5JRk9STV9CVUZGRVIgYW5kIGluZGV4
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5NQVhfVU5JRk9STV9CVUZGRVJfQklORElO
R1MuJyk7CisgICAgICAgICAgICAgICAgdmFyIG1heFVTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTKSk7Cisg
ICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIG1heFVT
aXplLCBidWZVbmlmb3JtKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBnbC5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSIGFuZGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5NQVhf
VFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMuJyk7CisgICAgICAgICAgICAgICAg
dmFyIG1heFRGU2l6ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGds
Lk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUykpOworICAgICAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1heFRG
U2l6ZSwgYnVmVEYpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmVW5pZm9ybSk7
CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZlRGKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2Fz
ZS5BcGlDYXNlQ2FsbGJhY2soCisgICAgICAgICAgICAnY2xlYXJfYnVmZmVyaXYnLCAnSW52YWxp
ZCBnbC5jbGVhckJ1ZmZlcml2KCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHZhciBkYXRhID0gbmV3IEludDMyQXJyYXkoMzIgKiAzMik7CisK
KyAgICAgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEzMkksIDMy
LCAzMiwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5JTlQsIG51bGwpOworCisgICAgICAgICAgICAg
ICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisgICAgICAgICAgICAgICAgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBidWZmZXIgaXMgbm90IGFu
IGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVyaXYoLTEs
IDAsIGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcml2KGdsLkZSQU1FQlVGRkVSLCAw
LCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5V
TSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9W
QUxVRSBpcyBnZW5lcmF0ZWQgaWYgYnVmZmVyIGlzIGdsLkNPTE9SLCBnbC5GUk9OVCwgZ2wuQkFD
SywgZ2wuTEVGVCwgZ2wuUklHSFQsIG9yIGdsLkZST05UX0FORF9CQUNLIGFuZCBkcmF3QnVmZmVy
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5NQVhfRFJBV19CVUZGRVJTLicpOworICAg
ICAgICAgICAgICAgIHZhciBtYXhEcmF3QnVmZmVycyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAo
Z2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9EUkFXX0JVRkZFUlMpKTsKKyAgICAgICAgICAgICAgICBn
bC5jbGVhckJ1ZmZlcml2KGdsLkNPTE9SLCBtYXhEcmF3QnVmZmVycywgZGF0YSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVk
IGlmIGJ1ZmZlciBpcyBnbC5ERVBUSCBvciBnbC5ERVBUSF9TVEVOQ0lMLicpOworICAgICAgICAg
ICAgICAgIGdsLmNsZWFyQnVmZmVyaXYoZ2wuREVQVEgsIDEsIGRhdGEpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICBn
bC5jbGVhckJ1ZmZlcml2KGdsLkRFUFRIX1NURU5DSUwsIDEsIGRhdGEpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBi
dWZmZXIgaXMgZ2wuU1RFTkNJTCBhbmQgZHJhd0J1ZmZlciBpcyBub3QgemVyby4nKTsKKyAgICAg
ICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcml2KGdsLlNURU5DSUwsIDEsIGRhdGEpOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAg
ICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgICAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAor
ICAgICAgICAgICAgJ2NsZWFyX2J1ZmZlcnVpdicsICdJbnZhbGlkIGdsLmNsZWFyQnVmZmVydWl2
KCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHZhciBkYXRhID0gbmV3IFVpbnQzMkFycmF5KDMyICogMzIpOworCisgICAgICAgICAgICAgICAg
dmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBMzJVSSwgMzIsIDMyLCAwLCBnbC5SR0JB
X0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICB2YXIg
ZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVi
dWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICAgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGJ1ZmZlciBpcyBub3QgYW4gYWNjZXB0
ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICAgICAgZ2wuY2xlYXJCdWZmZXJ1aXYoLTEsIDAsIGRh
dGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcnVpdihnbC5GUkFNRUJVRkZFUiwgMCwgZGF0
YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOwor
CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkIGlmIGJ1ZmZlciBpcyBnbC5DT0xPUiwgZ2wuRlJPTlQsIGdsLkJBQ0ssIGds
LkxFRlQsIGdsLlJJR0hULCBvciBnbC5GUk9OVF9BTkRfQkFDSyBhbmQgZHJhd0J1ZmZlciBpcyBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wuTUFYX0RSQVdfQlVGRkVSUy4nKTsKKyAgICAgICAg
ICAgICAgICB2YXIgbWF4RHJhd0J1ZmZlcnMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdl
dFBhcmFtZXRlcihnbC5NQVhfRFJBV19CVUZGRVJTKSk7CisgICAgICAgICAgICAgICAgZ2wuY2xl
YXJCdWZmZXJ1aXYoZ2wuQ09MT1IsIG1heERyYXdCdWZmZXJzLCBkYXRhKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYg
YnVmZmVyIGlzIGdsLkRFUFRILCBnbC5TVEVOQ0lMIG9yIGdsLkRFUFRIX1NURU5DSUwuJyk7Cisg
ICAgICAgICAgICAgICAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuREVQVEgsIDEsIGRhdGEpOworICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICBnbC5jbGVhckJ1ZmZlcnVpdihnbC5TVEVOQ0lMLCAxLCBkYXRhKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAg
ICAgZ2wuY2xlYXJCdWZmZXJ1aXYoZ2wuREVQVEhfU1RFTkNJTCwgMSwgZGF0YSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAg
ICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAg
ICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAg
ICAgICAgICAgICdjbGVhcl9idWZmZXJmdicsICdJbnZhbGlkIGdsLmNsZWFyQnVmZmVyZnYoKSB1
c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFy
IGRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KDMyICogMzIpOworCisgICAgICAgICAgICAgICAgdmFy
IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICAgICAgLy8gRmxvYXQg
dHlwZSB0ZXh0dXJlIGlzbid0IGNvbG9yLXJlbmRlcmFibGUgd2l0aG91dCBFWFRfY29sb3JfYnVm
ZmVyX2Zsb2F0IGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICBpZiAoZ2wuZ2V0RXh0ZW5zaW9u
KCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0JykpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAgICAgICAgICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTMyRiwgMzIsIDMyLCAwLCBnbC5S
R0JBLCBnbC5GTE9BVCwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wuZnJhbWVi
dWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGJ1ZmZlciBpcyBu
b3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVm
ZmVyZnYoLTEsIDAsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVyZnYo
Z2wuRlJBTUVCVUZGRVIsIDAsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGJ1ZmZlciBpcyBn
bC5DT0xPUiwgZ2wuRlJPTlQsIGdsLkJBQ0ssIGdsLkxFRlQsIGdsLlJJR0hULCBvciBnbC5GUk9O
VF9BTkRfQkFDSyBhbmQgZHJhd0J1ZmZlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wu
TUFYX0RSQVdfQlVGRkVSUy4nKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heERyYXdCdWZm
ZXJzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0RSQVdf
QlVGRkVSUykpOworICAgICAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcmZ2KGdsLkNPTE9S
LCBtYXhEcmF3QnVmZmVycywgZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgYnVmZmVyIGlzIGds
LlNURU5DSUwgb3IgZ2wuREVQVEhfU1RFTkNJTC4nKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wu
Y2xlYXJCdWZmZXJmdihnbC5TVEVOQ0lMLCAxLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgICAgICBn
bC5jbGVhckJ1ZmZlcmZ2KGdsLkRFUFRIX1NURU5DSUwsIDEsIGRhdGEpOworICAgICAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJh
dGVkIGlmIGJ1ZmZlciBpcyBnbC5ERVBUSCBhbmQgZHJhd0J1ZmZlciBpcyBub3QgemVyby4nKTsK
KyAgICAgICAgICAgICAgICAgICAgZ2wuY2xlYXJCdWZmZXJmdihnbC5ERVBUSCwgMSwgZGF0YSk7
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZm
ZXIoZmJvKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAg
ICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdjbGVhcl9idWZmZXJm
aScsICdJbnZhbGlkIGdsLmNsZWFyQnVmZmVyZmkoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgYnVmZmVyIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1
ZS4nKTsKKyAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcmZpKC0xLCAwLCAxLjAsIDEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcmZpKGdsLkZSQU1FQlVGRkVSLCAwLCAxLjAsIDEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2Vu
ZXJhdGVkIGlmIGJ1ZmZlciBpcyBub3QgZ2wuREVQVEhfU1RFTkNJTC4nKTsKKyAgICAgICAgICAg
ICAgICBnbC5jbGVhckJ1ZmZlcmZpKGdsLkRFUFRILCAwLCAxLjAsIDEpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICBn
bC5jbGVhckJ1ZmZlcmZpKGdsLlNURU5DSUwsIDAsIDEuMCwgMSk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIGdsLmNs
ZWFyQnVmZmVyZmkoZ2wuQ09MT1IsIDAsIDEuMCwgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGJ1ZmZlciBpcyBn
bC5ERVBUSF9TVEVOQ0lMIGFuZCBkcmF3QnVmZmVyIGlzIG5vdCB6ZXJvLicpOworICAgICAgICAg
ICAgICAgIGdsLmNsZWFyQnVmZmVyZmkoZ2wuREVQVEhfU1RFTkNJTCwgMSwgMS4wLCAxKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2NvcHlfYnVmZmVyX3N1
Yl9kYXRhJywgJ0ludmFsaWQgZ2wuY29weUJ1ZmZlclN1YkRhdGEoKSB1c2FnZScsIGdsLAorICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIGJ1ZiA9IHsKKyAgICAg
ICAgICAgICAgICAgICAgcjogZ2wuY3JlYXRlQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAg
IHc6IGdsLmNyZWF0ZUJ1ZmZlcigpCisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgYnVmLnIpOworICAgICAgICAg
ICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNf
Q09QWSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5DT1BZX1dSSVRFX0JVRkZF
UiwgYnVmLncpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQ09QWV9XUklURV9C
VUZGRVIsIDMyLCBnbC5EWU5BTUlDX0NPUFkpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGFueSBvZiByZWFkb2Zmc2V0LCB3
cml0ZW9mZnNldCBvciBzaXplIGlzIG5lZ2F0aXZlLicpOworICAgICAgICAgICAgICAgIGdsLmNv
cHlCdWZmZXJTdWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVS
LCAwLCAwLCAtNCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JF
QURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgLTEsIDAsIDQpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAg
Z2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9C
VUZGRVIsIDAsIC0xLCA0KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHJlYWRvZmZzZXQgKyBzaXplIGV4Y2VlZHMg
dGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBvYmplY3QgYm91bmQgdG8gcmVhZHRhcmdldC4nKTsKKyAg
ICAgICAgICAgICAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBn
bC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgMzYpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgZ2wuY29weUJ1ZmZl
clN1YkRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDI0LCAw
LCAxNik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVG
RkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMzYsIDAsIDQpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd3JpdGVv
ZmZzZXQgKyBzaXplIGV4Y2VlZHMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBvYmplY3QgYm91bmQg
dG8gd3JpdGV0YXJnZXQuJyk7CisgICAgICAgICAgICAgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEo
Z2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDAsIDM2KTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIGdsLmNvcHlCdWZmZXJTdWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNP
UFlfV1JJVEVfQlVGRkVSLCAwLCAyNCwgMTYpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgZ2wuY29weUJ1ZmZlclN1
YkRhdGEoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDM2LCA0
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkIGlmIHRoZSBzYW1lIGJ1ZmZlciBvYmplY3QgaXMgYm91bmQgdG8gYm90aCBy
ZWFkdGFyZ2V0IGFuZCB3cml0ZXRhcmdldCBhbmQgdGhlIHJhbmdlcyBbcmVhZG9mZnNldCwgcmVh
ZG9mZnNldCArIHNpemUpIGFuZCBbd3JpdGVvZmZzZXQsIHdyaXRlb2Zmc2V0ICsgc2l6ZSkgb3Zl
cmxhcC4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkNPUFlfV1JJVEVfQlVG
RkVSLCBidWYucik7CisgICAgICAgICAgICAgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQ09Q
WV9SRUFEX0JVRkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDE2LCA0KTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgICAgICBn
bC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZX1JFQURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JV
RkZFUiwgMCwgMCwgNCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC5jb3B5QnVmZmVyU3ViRGF0YShnbC5DT1BZ
X1JFQURfQlVGRkVSLCBnbC5DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMTYsIDE4KTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklURV9CVUZGRVIsIGJ1Zi53KTsKKworICAgICAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgbnVsbCBpcyBib3VuZCB0byByZWFkdGFyZ2V0IG9yIHdyaXRldGFyZ2V0Licp
OworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQ09QWV9SRUFEX0JVRkZFUiwgbnVs
bCk7CisgICAgICAgICAgICAgICAgZ2wuY29weUJ1ZmZlclN1YkRhdGEoZ2wuQ09QWV9SRUFEX0JV
RkZFUiwgZ2wuQ09QWV9XUklURV9CVUZGRVIsIDAsIDAsIDE2KTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBn
bC5iaW5kQnVmZmVyKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGJ1Zi5yKTsKKworICAgICAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQ09QWV9XUklURV9CVUZGRVIsIG51bGwpOworICAgICAgICAg
ICAgICAgIGdsLmNvcHlCdWZmZXJTdWJEYXRhKGdsLkNPUFlfUkVBRF9CVUZGRVIsIGdsLkNPUFlf
V1JJVEVfQlVGRkVSLCAwLCAwLCAxNik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5DT1BZX1dSSVRFX0JVRkZFUiwgYnVmLncpOworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRl
QnVmZmVyKGJ1Zi53KTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmLnIpOwor
ICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdkcmF3X2J1ZmZl
cnMnLCAnSW52YWxpZCBnbERyYXdCdWZmZXJzKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBtYXhEcmF3QnVmZmVycyA9IC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9EUkFXX0JVRkZFUlMpKTsKKyAg
ICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gWworICAgICAgICAgICAgICAgICAgICBnbC5OT05F
LAorICAgICAgICAgICAgICAgICAgICBnbC5CQUNLLAorICAgICAgICAgICAgICAgICAgICBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAgICAgICAgICAgICAgICAgZ2wuREVQVEhfQVRUQUNITUVO
VAorICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkE4LCAzMiwgMzIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IG51bGwpOworCisgICAgICAgICAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVy
KCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBm
Ym8pOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Cisg
ICAgICAgICAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7
CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVy
YXRlZCBpZiBvbmUgb2YgdGhlIHZhbHVlcyBpbiBidWZzIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1
ZS4nKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QnVmZmVycyh2YWx1ZXMuc2xpY2UoMiwgNCkp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKwor
ICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElP
TiBpcyBnZW5lcmF0ZWQgaWYgdGhlIEdMIGlzIGJvdW5kIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVm
ZmVyIGFuZCB0aGUgbnVtYmVyIG9mIHF1ZXJpZWQgYnVmZmVycyBpcyBub3QgMS4nKTsKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAg
ICAgICAgICAgICAgIGdsLmRyYXdCdWZmZXJzKHZhbHVlcy5zbGljZSgwLCAyKSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGlmIHRoZSBHTCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBh
bmQgdGhlIHZhbHVlIGluIGJ1ZnMgaXMgb25lIG9mIHRoZSBnbC5DT0xPUl9BVFRBQ0hNRU5UbiB0
b2tlbnMuJyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QnVmZmVycyh2YWx1ZXMuc2xpY2Uo
MiwgMykpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgR0wgaXMgYm91bmQgdG8gYSBmcmFtZWJ1
ZmZlciBvYmplY3QgYW5kIHRoZSBpdGggYnVmZmVyIGxpc3RlZCBpbiBidWZzIGlzIGFueXRoaW5n
IG90aGVyIHRoYW4gZ2wuTk9ORSBvciBnbC5DT0xPUl9BVFRBQ0hNRU5UU2kuJyk7CisgICAgICAg
ICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAg
ICAgICAgICAgIGdsLmRyYXdCdWZmZXJzKHZhbHVlcy5zbGljZSgxLCAyKSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAg
ICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICAgICAgICAgIGdsLmRl
bGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAg
ICAgIC8vIEZyYW1lYnVmZmVyIE9iamVjdHMKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdiaW5kX2ZyYW1l
YnVmZmVyJywgJ0ludmFsaWQgZ2xCaW5kRnJhbWVidWZmZXIoKSB1c2FnZScsIGdsLAorICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG5vdCBnbC5GUkFNRUJV
RkZFUi4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoLTEsIG51bGwpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2JpbmRfcmVuZGVyYnVmZmVy
JywgJ0ludmFsaWQgZ2xCaW5kUmVuZGVyYnVmZmVyKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbElO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG5vdCBnbC5SRU5ERVJCVUZGRVIu
Jyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcigtMSwgbnVsbCk7CisgICAg
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soCisgICAgICAgICAgICAnY2hlY2tfZnJhbWVidWZmZXJfc3Rh
dHVzJywgJ0ludmFsaWQgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCkgdXNhZ2UnLCBnbCwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBub3QgZ2wuRlJB
TUVCVUZGRVIuJyk7CisgICAgICAgICAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoLTEpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
UkVOREVSQlVGRkVSKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAg
ICAgICdmcmFtZWJ1ZmZlcl9yZW5kZXJidWZmZXInLCAnSW52YWxpZCBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgICAgICAgICAgICAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0
YXJnZXQgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdG9rZW5zLicpOworICAgICAgICAgICAg
ICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKC0xLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiByZW5kZXJidWZmZXJ0YXJnZXQgaXMg
bm90IGdsLlJFTkRFUkJVRkZFUi4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIC0xLCBy
Ym8pOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVs
bCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHplcm8gaXMgYm91bmQgdG8gdGFyZ2V0LicpOworICAg
ICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cisg
ICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJibyk7CisgICAgICAgICAgICAgICAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAg
ICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2so
CisgICAgICAgICAgICAnZnJhbWVidWZmZXJfdGV4dHVyZTJkJywgJ0ludmFsaWQgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKwor
ICAgICAgICAgICAgICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAg
ICAgICAgICAgIHZhciB0ZXgyRCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgICAg
ICB2YXIgdGV4Q3ViZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgICAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MkQpOworICAgICAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleEN1YmUpOworICAgICAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlz
IG5vdCBvbmUgb2YgdGhlIGFjY2VwdGVkIHRva2Vucy4nKTsKKyAgICAgICAgICAgICAgICBnbC5m
cmFtZWJ1ZmZlclRleHR1cmUyRCgtMSwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVf
MkQsIG51bGwsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRleHRhcmdldCBpcyBub3QgYW4gYWNjZXB0ZWQgdGV4
dHVyZSB0YXJnZXQuJyk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCAtMSwgdGV4MkQsIDApOworICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVy
YXRlZCBpZiBsZXZlbCBpcyBsZXNzIHRoYW4gMCBvciBsYXJnZXIgdGhhbiBsb2dfMiBvZiBtYXhp
bXVtIHRleHR1cmUgc2l6ZS4nKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4VGV4U2l6ZSA9IC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9URVhUVVJFX1NJWkUp
KTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4Q3ViZVRleFNpemUgPSAvKiogQHR5cGUge251bWJl
cn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKSk7Cisg
ICAgICAgICAgICAgICAgdmFyIG1heFNpemVQbGFuZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKG1h
eFRleFNpemUpKSArIDE7CisgICAgICAgICAgICAgICAgdmFyIG1heFNpemVDdWJlID0gTWF0aC5m
bG9vcihNYXRoLmxvZzIobWF4Q3ViZVRleFNpemUpKSArIDE7CisgICAgICAgICAgICAgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCB0ZXgyRCwgLTEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJF
XzJELCB0ZXgyRCwgbWF4U2l6ZVBsYW5lKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4
dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YLCB0ZXhDdWJlLCBtYXhTaXplQ3ViZSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgdGV4dGFyZ2V0IGFuZCB0ZXh0dXJlIGFyZSBub3QgY29tcGF0aWJsZS4nKTsKKyAgICAgICAg
ICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1Jf
QVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgdGV4MkQsIDApOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4MkQpOworCisgICAgICAgICAgICAg
ICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhDdWJlLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleEN1YmUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB6ZXJvIGlzIGJvdW5k
IHRvIHRhcmdldC4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJE
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgbnVs
bCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJB
VElPTik7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAg
ICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdyZW5kZXJidWZmZXJf
c3RvcmFnZScsICdJbnZhbGlkIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSgpIHVzYWdlJywgZ2wsCisg
ICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmJvID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVIsIHJibyk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgbm90IGdsLlJF
TkRFUkJVRkZFUi4nKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKC0x
LCBnbC5SR0JBNCwgMSwgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
RlJBTUVCVUZGRVIsIGdsLlJHQkE0LCAxLCAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBpbnRlcm5hbGZvcm1hdCBp
cyBub3QgYSBjb2xvci1yZW5kZXJhYmxlLCBkZXB0aC1yZW5kZXJhYmxlLCBvciBzdGVuY2lsLXJl
bmRlcmFibGUgZm9ybWF0LicpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoZ2wuUkVOREVSQlVGRkVSLCAtMSwgMSwgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgLy8gRVhUX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0IGRpc2FibGVzIGVycm9yCisgICAgICAgICAgICAgICAgaWYgKGds
LmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0JykgPT09IG51bGwpIHsK
KyAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZG
RVIsIGdsLlJHQjE2RiwgMSwgMSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQThfU05PUk0s
IDEsIDEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVN
KTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiB3aWR0aCBvciBoZWlnaHQgaXMgbGVzcyB0aGFuIHplcm8uJyk7
CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIs
IGdsLlJHQkE0LCAtMSwgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDEsIC0xKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgLTEsIC0xKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVk
IGlmIHdpZHRoIG9yIGhlaWdodCBpcyBncmVhdGVyIHRoYW4gZ2wuTUFYX1JFTkRFUkJVRkZFUl9T
SVpFLicpOworICAgICAgICAgICAgICAgIHZhciBtYXhTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1JFTkRFUkJVRkZFUl9TSVpFKSk7CisgICAgICAg
ICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0
LCAxLCBtYXhTaXplICsgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIG1heFNpemUgKyAxLCAxKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgbWF4U2l6ZSAr
IDEsIG1heFNpemUgKyAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYm8p
OworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdibGl0X2Zy
YW1lYnVmZmVyJywgJ0ludmFsaWQgZ2xCbGl0RnJhbWVidWZmZXIoKSB1c2FnZScsIGdsLAorICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PFdlYkdMVGV4dHVyZT59ICovCisgICAgICAgICAgICAgICAgdmFyIHRleHR1cmUgPSBbCisgICAg
ICAgICAgICAgICAgICAgIGdsLmNyZWF0ZVRleHR1cmUoKSwgZ2wuY3JlYXRlVGV4dHVyZSgpCisg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXh0dXJlWzBdKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
V2ViR0xSZW5kZXJidWZmZXI+fSAqLworICAgICAgICAgICAgICAgIHZhciByYm8gPSBbCisgICAg
ICAgICAgICAgICAgICAgIGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJib1swXSk7CisKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PFdlYkdMRnJhbWVidWZmZXI+fSAqLworICAgICAgICAgICAgICAgIHZhciBm
Ym8gPSBbCisgICAgICAgICAgICAgICAgICAgIGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCksIGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBmYm9bMF0pOworCisgICAgICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMzIsIDMy
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgICAgICBn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEgyNF9TVEVOQ0lM
OCwgMzIsIDMyKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5S
RUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4
dHVyZVswXSwgMCk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Z2wuUkVBRF9GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5E
RVJCVUZGRVIsIHJib1swXSk7CisgICAgICAgICAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5SRUFEX0ZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzFdKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvWzFdKTsKKyAgICAgICAgICAgICAgICBnbC5i
aW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZmJvWzFdKTsKKworICAgICAgICAg
ICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTgsIDMyLCAzMiwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIMjRfU1RFTkNJTDgs
IDMyLCAzMik7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRFJB
V19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1
cmVbMV0sIDApOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkRSQVdfRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuUkVOREVS
QlVGRkVSLCByYm9bMV0pOworICAgICAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRFJBV19GUkFNRUJVRkZFUik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIG1hc2sgY29udGFpbnMgYW55IG9m
IHRoZSBnbC5ERVBUSF9CVUZGRVJfQklUIG9yIGdsLlNURU5DSUxfQlVGRkVSX0JJVCBhbmQgZmls
dGVyIGlzIG5vdCBnbC5ORUFSRVNULicpOworICAgICAgICAgICAgICAgIGdsLmJsaXRGcmFtZWJ1
ZmZlcigwLCAwLCAxNiwgMTYsIDAsIDAsIDE2LCAxNiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LlNURU5DSUxfQlVGRkVSX0JJVCwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC5ibGl0
RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwgMTYsIGdsLkNPTE9SX0JVRkZFUl9C
SVQgfCBnbC5ERVBUSF9CVUZGRVJfQklULCBnbC5MSU5FQVIpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGds
LmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAxNiwgMTYsIDAsIDAsIDE2LCAxNiwgZ2wuREVQVEhfQlVG
RkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCwgZ2wuTElORUFSKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5l
cmF0ZWQgaWYgbWFzayBjb250YWlucyBnbC5DT0xPUl9CVUZGRVJfQklUIGFuZCByZWFkIGJ1ZmZl
ciBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggZHJhdyBidWZmZXIgZm9ybWF0LicpOworICAg
ICAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOwor
CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JB
MzJVSSwgMzIsIDMyLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCk7
CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuUkVBRF9GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0sIDAp
OworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBSZWFkIGJ1ZmZlcjog
Z2wuUkdCQTMyVUksIGRyYXcgYnVmZmVyOiBnbC5SR0JBJyk7CisgICAgICAgICAgICAgICAgZ2wu
YmxpdEZyYW1lYnVmZmVyKDAsIDAsIDE2LCAxNiwgMCwgMCwgMTYsIDE2LCBnbC5DT0xPUl9CVUZG
RVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTMySSwgMzIsIDMyLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGds
LklOVCwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wu
UkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRl
eHR1cmVbMF0sIDApOworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBS
ZWFkIGJ1ZmZlcjogZ2wuUkdCQTMySSwgZHJhdyBidWZmZXI6IGdsLlJHQkEnKTsKKyAgICAgICAg
ICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwgMTYsIGds
LkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBOCwgMzIsIDMyLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRl
eHR1cmUyRChnbC5SRUFEX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVY
VFVSRV8yRCwgdGV4dHVyZVswXSwgMCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBMzJJLCAzMiwgMzIsIDAsIGdsLlJHQkFfSU5URUdF
UiwgZ2wuSU5ULCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8y
RCwgdGV4dHVyZVsxXSwgMCk7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
Jy8vIFJlYWQgYnVmZmVyOiBnbC5SR0JBOCwgZHJhdyBidWZmZXI6IGdsLlJHQkEzMkknKTsKKyAg
ICAgICAgICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwg
MTYsIGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBp
ZiBmaWx0ZXIgaXMgZ2wuTElORUFSIGFuZCB0aGUgcmVhZCBidWZmZXIgY29udGFpbnMgaW50ZWdl
ciBkYXRhLicpOworICAgICAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmVbMF0pOworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQTMyVUksIDMyLCAzMiwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05F
RF9JTlQsIG51bGwpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LlJFQURfRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0
ZXh0dXJlWzBdLCAwKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXh0dXJlWzFdKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkEzMlVJLCAzMiwgMzIsIDAsIGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5T
SUdORURfSU5ULCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8y
RCwgdGV4dHVyZVsxXSwgMCk7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
Jy8vIFJlYWQgYnVmZmVyOiBnbC5SR0JBMzJVSSwgZmlsdGVyOiBnbC5MSU5FQVInKTsKKyAgICAg
ICAgICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwgMTYs
IGdsLkNPTE9SX0JVRkZFUl9CSVQsIGdsLkxJTkVBUik7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIG1h
c2sgY29udGFpbnMgZ2wuREVQVEhfQlVGRkVSX0JJVCBvciBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQg
YW5kIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRlcHRoIGFuZCBzdGVuY2lsIGZvcm1hdHMg
ZG8gbm90IG1hdGNoLicpOworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCByYm9bMF0pOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSDMyRl9TVEVOQ0lMOCwgMzIsIDMyKTsKKyAg
ICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVG
RkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmJvWzBd
KTsKKyAgICAgICAgICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAw
LCAxNiwgMTYsIGdsLkRFUFRIX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAxNiwgMTYsIDAsIDAsIDE2LCAxNiwgZ2wuU1RF
TkNJTF9CVUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgICAgICAgICAgZ2wuZGVs
ZXRlRnJhbWVidWZmZXIoZmJvWzFdKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1
ZmZlcihmYm9bMF0pOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsx
XSk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAg
ICAgICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvWzFdKTsKKyAgICAgICAgICAgICAg
ICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNl
Q2FsbGJhY2soCisgICAgICAgICAgICAnYmxpdF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZScsICdJ
bnZhbGlkIGdsQmxpdEZyYW1lYnVmZmVyKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFJlbmRlcmJ1
ZmZlcj59ICovCisgICAgICAgICAgICAgICAgdmFyIHJibyA9IFsKKyAgICAgICAgICAgICAgICAg
ICAgZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCksIGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCisgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMRnJh
bWVidWZmZXI+fSAqLworICAgICAgICAgICAgICAgIHZhciBmYm8gPSBbCisgICAgICAgICAgICAg
ICAgICAgIGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCksIGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkKKyAg
ICAgICAgICAgICAgICBdOworCisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVIsIHJib1swXSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZib1swXSk7CisgICAgICAgICAgICAgICAgZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgNCwgZ2wuUkdCQTgs
IDMyLCAzMik7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
UkVBRF9GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwg
cmJvWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLlJF
QURfRlJBTUVCVUZGRVIpOworCisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVIsIHJib1sxXSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGZib1sxXSk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSB2YWx1ZSBv
ZiBnbC5TQU1QTEVfQlVGRkVSUyBmb3IgdGhlIGRyYXcgYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6
ZXJvLicpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShnbC5SRU5ERVJCVUZGRVIsIDQsIGdsLlJHQkE4LCAzMiwgMzIpOworICAgICAgICAgICAgICAg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJib1sxXSk7CisgICAgICAgICAgICAgICAg
Z2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIDE2LCAxNiwgMCwgMCwgMTYsIDE2LCBnbC5DT0xPUl9C
VUZGRVJfQklULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgZ2wuU0FNUExFX0JV
RkZFUlMgZm9yIHRoZSByZWFkIGJ1ZmZlciBpcyBncmVhdGVyIHRoYW4gemVybyBhbmQgdGhlIGZv
cm1hdHMgb2YgZHJhdyBhbmQgcmVhZCBidWZmZXJzIGFyZSBub3QgaWRlbnRpY2FsLicpOworICAg
ICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
R0JBNCwgMzIsIDMyKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVG
RkVSLCByYm9bMV0pOworICAgICAgICAgICAgICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAx
NiwgMTYsIDAsIDAsIDE2LCAxNiwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisK
KyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJ
T04gaXMgZ2VuZXJhdGVkIGlmIGdsLlNBTVBMRV9CVUZGRVJTIGZvciB0aGUgcmVhZCBidWZmZXIg
aXMgZ3JlYXRlciB0aGFuIHplcm8gYW5kIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3Rh
bmdsZXMgYXJlIG5vdCBkZWZpbmVkIHdpdGggdGhlIHNhbWUgKFgwLCBZMCkgYW5kIChYMSwgWTEp
IGJvdW5kcy4nKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJF
TkRFUkJVRkZFUiwgZ2wuUkdCQTgsIDMyLCAzMik7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlJFTkRFUkJVRkZFUiwgcmJvWzFdKTsKKyAgICAgICAgICAgICAgICBnbC5ibGl0RnJh
bWVidWZmZXIoMCwgMCwgMTYsIDE2LCAyLCAyLCAxOCwgMTgsIGdsLkNPTE9SX0JVRkZFUl9CSVQs
IGdsLk5FQVJFU1QpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIo
cmJvWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvWzFdKTsK
KyAgICAgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm9bMF0pOworICAgICAgICAg
ICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZib1sxXSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2ZyYW1lYnVmZmVyX3RleHR1cmVfbGF5ZXInLCAn
SW52YWxpZCBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdmFyIHRleDNEID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgICAgICAgICAgICAgIHZhciB0ZXgyREFycmF5ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgICAgICAgICAgICAgIHZhciB0ZXgyRCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisKKyAg
ICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXgzRCk7CisgICAg
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBLCA0LCA0
LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgyREFycmF5KTsKKyAgICAg
ICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEs
IDQsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDJEKTsKKyAgICAgICAgICAg
ICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDQsIDQsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG5vdCBvbmUg
b2YgdGhlIGFjY2VwdGVkIHRva2Vucy4nKTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZl
clRleHR1cmVMYXllcigtMSwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleDNELCAwLCAxKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAg
ICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgdGV4M0QsIDAsIDEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGF0dGFjaG1lbnQgaXMg
bm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdG9rZW5zLicpOworICAgICAgICAgICAgICAgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCAtMSwgdGV4M0QsIDAsIDEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwgZ2wu
QkFDSywgdGV4M0QsIDAsIDEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGV4dHVyZSBpcyBub24temVybyBh
bmQgbm90IHRoZSBuYW1lIG9mIGEgM0QgdGV4dHVyZSBvciAyRCBhcnJheSB0ZXh0dXJlLicpOwor
ICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4MkQsIDAsIDApOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHRl
eHR1cmUgaXMgbm90IHplcm8gYW5kIGxheWVyIGlzIG5lZ2F0aXZlLicpOworICAgICAgICAgICAg
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgdGV4M0QsIDAsIC0xKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHRleHR1cmUgaXMgbm90IHpl
cm8gYW5kIGxheWVyIGlzIGdyZWF0ZXIgdGhhbiBnbC5NQVhfM0RfVEVYVFVSRV9TSVpFLTEgZm9y
IGEgM0QgdGV4dHVyZS4nKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF4M0RUZXhTaXplID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYXzNEX1RFWFRVUkVfU0la
RSkpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4M0QsIDAsIG1heDNEVGV4U2l6ZSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdl
bmVyYXRlZCBpZiB0ZXh0dXJlIGlzIG5vdCB6ZXJvIGFuZCBsYXllciBpcyBncmVhdGVyIHRoYW4g
Z2wuTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTLTEgZm9yIGEgMkQgYXJyYXkgdGV4dHVyZS4nKTsK
KyAgICAgICAgICAgICAgICB2YXIgbWF4QXJyYXlUZXhMYXllcnMgPSAvKiogQHR5cGUge251bWJl
cn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMpKTsKKyAg
ICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIHRleDJEQXJyYXksIDAsIG1heEFycmF5VGV4TGF5ZXJzKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisg
ICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9O
IGlzIGdlbmVyYXRlZCBpZiB6ZXJvIGlzIGJvdW5kIHRvIHRhcmdldC4nKTsKKyAgICAgICAgICAg
ICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAg
ICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgdGV4M0QsIDAsIDEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRl
VGV4dHVyZSh0ZXgzRCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgyREFy
cmF5KTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleDJEKTsKKyAgICAgICAg
ICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgICAgICAgICAgfQorICAgICAg
ICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNh
c2VDYWxsYmFjaygKKyAgICAgICAgICAgICdpbnZhbGlkYXRlX2ZyYW1lYnVmZmVyJywgJ0ludmFs
aWQgZ2wuaW52YWxpZGF0ZUZyYW1lYnVmZmVyKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBtYXhDb2xvckF0dGFjaG1lbnRzID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX0NPTE9SX0FUVEFDSE1F
TlRTKSk7CisgICAgICAgICAgICAgICAgdmFyIGF0dGFjaG1lbnRzID0gWworICAgICAgICAgICAg
ICAgICAgICBnbC5DT0xPUl9BVFRBQ0hNRU5UMAorICAgICAgICAgICAgICAgIF07CisKKyAgICAg
ICAgICAgICAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAg
ICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgICAgICAg
ICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgICAg
ICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDMyLCAzMiwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICBnbC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworICAgICAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG5vdCBnbC5GUkFN
RUJVRkZFUiwgZ2wuUkVBRF9GUkFNRUJVRkZFUiBvciBnbC5EUkFXX0ZSQU1FQlVGRkVSLicpOwor
ICAgICAgICAgICAgICAgIGdsLmludmFsaWRhdGVGcmFtZWJ1ZmZlcigtMSwgYXR0YWNobWVudHMp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICBnbC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoZ2wuQkFDSywgYXR0YWNobWVu
dHMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJB
VElPTiBpcyBnZW5lcmF0ZWQgaWYgYXR0YWNobWVudHMgY29udGFpbnMgZ2wuQ09MT1JfQVRUQUNI
TUVOVG0gYW5kIG0gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBnbC5N
QVhfQ09MT1JfQVRUQUNITUVOVFMuJyk7CisgICAgICAgICAgICAgICAgZ2wuaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBbZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyBtYXhDb2xv
ckF0dGFjaG1lbnRzXSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmUpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2ludmFsaWRhdGVfc3ViX2Zy
YW1lYnVmZmVyJywgJ0ludmFsaWQgZ2wuaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKCkgdXNhZ2Un
LCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJl
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMzIsIDMyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSwgMCk7CisgICAgICAgICAgICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7
CisKKyAgICAgICAgICAgICAgICB2YXIgbWF4Q29sb3JBdHRhY2htZW50cyA9IC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DT0xPUl9BVFRBQ0hNRU5UUykpOwor
ICAgICAgICAgICAgICAgIHZhciBhdHQwID0gW2dsLkNPTE9SX0FUVEFDSE1FTlQwXTsKKyAgICAg
ICAgICAgICAgICB2YXIgYXR0bSA9IFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIG1heENvbG9yQXR0
YWNobWVudHNdOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG5vdCBnbC5GUkFNRUJVRkZFUiwg
Z2wuUkVBRF9GUkFNRUJVRkZFUiBvciBnbC5EUkFXX0ZSQU1FQlVGRkVSLicpOworICAgICAgICAg
ICAgICAgIGdsLmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcigtMSwgYXR0MCwgMCwgMCwgMTYsIDE2
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgZ2wuaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGdsLkJBQ0ssIGF0dDAs
IDAsIDAsIDE2LCAxNik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhdHRhY2htZW50cyBjb250YWlucyBnbC5D
T0xPUl9BVFRBQ0hNRU5UbSBhbmQgbSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZh
bHVlIG9mIGdsLk1BWF9DT0xPUl9BVFRBQ0hNRU5UUy4nKTsKKyAgICAgICAgICAgICAgICBnbC5p
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dG0sIDAsIDAsIDE2LCAx
Nik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElP
Tik7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgICAg
ICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdyZW5kZXJidWZmZXJfc3Rv
cmFnZV9tdWx0aXNhbXBsZScsICdJbnZhbGlkIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAg
ICAgICAgdmFyIHJibyA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgICAg
IGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pOworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7SW50MzJBcnJheX0gKi8gdmFyIHNhbXBsZXNTdXBwb3J0ZWRSR0JBNCA9
IC8qKiBAdHlwZSB7SW50MzJBcnJheX0gKi8gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgZ2wuU0FNUExFUyk7CisgICAgICAgICAgICAgICAg
Ly8gc3VwcG9ydGVkIHNhbXBsZXMgYXJlIHdyaXR0ZW4gaW4gZGVzY2VuZGluZyBudW1lcmljIG9y
ZGVyLCBzbyB0aGUgZmlyc3Qgb25lIGlzIHRoZSBtYXggc2FtcGxlcworICAgICAgICAgICAgICAg
IHZhciBtYXhTYW1wbGVzU3VwcG9ydGVkUkdCQTQgPSBzYW1wbGVzU3VwcG9ydGVkUkdCQTRbMF07
CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVN
IGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgbm90IGdsLlJFTkRFUkJVRkZFUi4nKTsKKyAgICAg
ICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoLTEsIDIsIGdsLlJH
QkE0LCAxLCAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KGdsLkZSQU1FQlVGRkVSLCAyLCBnbC5SR0JBNCwgMSwgMSk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBzYW1w
bGVzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2FtcGxlcyBzdXBwb3J0
ZWQgZm9yIGludGVybmFsZm9ybWF0LicpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIG1heFNhbXBsZXNTdXBwb3J0ZWRS
R0JBNCArIDEsIGdsLlJHQkE0LCAxLCAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGludGVybmFsZm9ybWF0
IGlzIG5vdCBhIGNvbG9yLXJlbmRlcmFibGUsIGRlcHRoLXJlbmRlcmFibGUsIG9yIHN0ZW5jaWwt
cmVuZGVyYWJsZSBmb3JtYXQuJyk7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgMiwgLTEsIDEsIDEpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAg
ICAgIC8vIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBkaXNhYmxlcyBlcnJvcgorICAgICAg
ICAgICAgICAgIGlmIChnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9h
dCcpID09PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIDIsIGdsLlJHQjE2RiwgMSwgMSk7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgMiwgZ2wuUkdCQThfU05PUk0sIDEsIDEpOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRl
ZCBpZiB3aWR0aCBvciBoZWlnaHQgaXMgbGVzcyB0aGFuIHplcm8uJyk7CisgICAgICAgICAgICAg
ICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgMiwg
Z2wuUkdCQTQsIC0xLCAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIDIsIGdsLlJHQkE0LCAxLCAtMSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAg
ICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCAyLCBn
bC5SR0JBNCwgLTEsIC0xKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHdpZHRoIG9yIGhlaWdodCBpcyBncmVhdGVy
IHRoYW4gZ2wuTUFYX1JFTkRFUkJVRkZFUl9TSVpFLicpOworICAgICAgICAgICAgICAgIHZhciBt
YXhTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1JF
TkRFUkJVRkZFUl9TSVpFKSk7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgNCwgZ2wuUkdCQTQsIDEsIG1heFNpemUgKyAx
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
ICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShnbC5SRU5E
RVJCVUZGRVIsIDQsIGdsLlJHQkE0LCBtYXhTaXplICsgMSwgMSk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC5y
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCA0LCBnbC5SR0JB
NCwgbWF4U2l6ZSArIDEsIG1heFNpemUgKyAxKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlUmVu
ZGVyYnVmZmVyKHJibyk7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgfTsKKwor
ICAgIC8qKgorICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBnbAorICAgICov
CisgICAgZXMzZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMucnVuID0gZnVuY3Rpb24oZ2wpIHsKKyAg
ICAgICAgdmFyIHRlc3ROYW1lID0gJ25lZ2F0aXZlQnVmZmVyQXBpJzsKKyAgICAgICAgdmFyIHRl
c3REZXNjcmlwdGlvbiA9ICdOZWdhdGl2ZSBCdWZmZXIgQVBJIHRlc3RzJzsKKyAgICAgICAgdmFy
IHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0g
dGVzdE5hbWU7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qo
dGVzdE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFt
ZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVu
dFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9u
KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVzM2ZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3Rz
LmluaXQoZ2wpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnJ1bkNhbGxiYWNrKHRj
dVRlc3RDYXNlLnJ1blRlc3RDYXNlcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNl
LnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2VzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuanMgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzY3NWQ0MzZmNzE5
OGQzYjUxMGNkNTBjM2RhOTU4ZmI1MDk1YWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuanMKQEAgLTAsMCArMSwzMzkgQEAKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMg
My4wIE1vZHVsZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJyaWVmIE5lZ2F0aXZlIEZyYWdtZW50
IFBpcGUgQVBJIHRlc3RzLgorICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisndXNlIHN0cmljdCc7Citnb29n
LnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cycp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKKworICAgIHZhciBlczNmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzID0gZnVuY3Rp
b25hbC5nbGVzMy5lczNmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzOworICAgIHZhciBlczNmQXBp
Q2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisgICAgdmFyIHRjdVRlc3RDYXNl
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wKKyAgICAgKi8KKyAgICBlczNmTmVnYXRpdmVG
cmFnbWVudEFwaVRlc3RzLmluaXQgPSBmdW5jdGlvbihnbCkgeworCisgICAgICAgIHZhciB0ZXN0
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzOworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdzY2lzc29yJywgJ0lu
dmFsaWQgZ2wuc2Npc3NvcigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGVp
dGhlciB3aWR0aCBvciBoZWlnaHQgaXMgbmVnYXRpdmUuJyk7CisgICAgICAgICAgICBnbC5zY2lz
c29yKDAsIDAsIC0xLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICBnbC5zY2lzc29yKDAsIDAsIDAsIC0xKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5z
Y2lzc29yKDAsIDAsIC0xLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZGVwdGhfZnVuYycsICdJbnZhbGlk
IGdsLmRlcHRoRnVuYygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgZnVuYyBp
cyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICBnbC5kZXB0aEZ1bmMoLTEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAg
ICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygndmlld3BvcnQnLCAnSW52YWxpZCBnbC52aWV3cG9ydCgpIHVzYWdlJywg
Z2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGVpdGhlciB3aWR0aCBvciBoZWlnaHQgaXMgbmVn
YXRpdmUuJyk7CisgICAgICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCAtMSwgMSk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
dmlld3BvcnQoMCwgMCwgMSwgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnZpZXdwb3J0KDAsIDAsIC0xLCAtMSk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAg
IH0pKTsKKworICAgICAgICAvLyBTdGVuY2lsIGZ1bmN0aW9ucworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdzdGVuY2lsX2Z1bmMn
LCAnSW52YWxpZCBnbC5zdGVuY2lsRnVuYygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0
ZWQgaWYgZnVuYyBpcyBub3Qgb25lIG9mIHRoZSBlaWdodCBhY2NlcHRlZCB2YWx1ZXMuJyk7Cisg
ICAgICAgICAgICBnbC5zdGVuY2lsRnVuYygtMSwgMCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRl
c3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdzdGVuY2ls
X2Z1bmNfc2VwYXJhdGUnLCAnSW52YWxpZCBnbC5zdGVuY2lsRnVuY1NlcGFyYXRlKCkgdXNhZ2Un
LCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBmYWNlIGlzIG5vdCBnbC5GUk9OVCwgZ2wuQkFD
Sywgb3IgZ2wuRlJPTlRfQU5EX0JBQ0suJyk7CisgICAgICAgICAgICBnbC5zdGVuY2lsRnVuY1Nl
cGFyYXRlKC0xLCBnbC5ORVZFUiwgMCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGZ1bmMgaXMgbm90IG9uZSBvZiB0aGUgZWln
aHQgYWNjZXB0ZWQgdmFsdWVzLicpOworICAgICAgICAgICAgZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0
ZShnbC5GUk9OVCwgLTEsIDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX0VOVU0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnc3RlbmNpbF9vcCcsICdJbnZhbGlk
IGdsLnN0ZW5jaWxPcCgpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgc2ZhaWws
IGRwZmFpbCwgb3IgZHBwYXNzIGlzIGFueSB2YWx1ZSBvdGhlciB0aGFuIHRoZSBkZWZpbmVkIHN5
bWJvbGljIGNvbnN0YW50IHZhbHVlcy4nKTsKKyAgICAgICAgICAgIGdsLnN0ZW5jaWxPcCgtMSwg
Z2wuWkVSTywgZ2wuUkVQTEFDRSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5zdGVuY2lsT3AoZ2wuS0VFUCwgLTEsIGdsLlJF
UExBQ0UpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOwor
ICAgICAgICAgICAgZ2wuc3RlbmNpbE9wKGdsLktFRVAsIGdsLlpFUk8sIC0xKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICB9KSk7CisK
KyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJh
Y2soJ3N0ZW5jaWxfb3Bfc2VwYXJhdGUnLCAnSW52YWxpZCBnbC5zdGVuY2lsT3BTZXBhcmF0ZSgp
IHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgZmFjZSBpcyBhbnkgdmFsdWUgb3Ro
ZXIgdGhhbiBnbC5GUk9OVCwgZ2wuQkFDSywgb3IgZ2wuRlJPTlRfQU5EX0JBQ0suJyk7CisgICAg
ICAgICAgICBnbC5zdGVuY2lsT3BTZXBhcmF0ZSgtMSwgZ2wuS0VFUCwgZ2wuWkVSTywgZ2wuUkVQ
TEFDRSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2Vu
ZXJhdGVkIGlmIHNmYWlsLCBkcGZhaWwsIG9yIGRwcGFzcyBpcyBhbnkgdmFsdWUgb3RoZXIgdGhh
biB0aGUgZWlnaHQgZGVmaW5lZCBzeW1ib2xpYyBjb25zdGFudCB2YWx1ZXMuJyk7CisgICAgICAg
ICAgICBnbC5zdGVuY2lsT3BTZXBhcmF0ZShnbC5GUk9OVCwgLTEsIGdsLlpFUk8sIGdsLlJFUExB
Q0UpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAg
ICAgICAgICAgZ2wuc3RlbmNpbE9wU2VwYXJhdGUoZ2wuRlJPTlQsIGdsLktFRVAsIC0xLCBnbC5S
RVBMQUNFKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgIGdsLnN0ZW5jaWxPcFNlcGFyYXRlKGdsLkZST05ULCBnbC5LRUVQLCBnbC5a
RVJPLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7
CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFw
aUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdzdGVuY2lsX21hc2tfc2VwYXJhdGUnLCAnSW52YWxpZCBn
bC5zdGVuY2lsTWFza1NlcGFyYXRlKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBp
ZiBmYWNlIGlzIG5vdCBnbC5GUk9OVCwgZ2wuQkFDSywgb3IgZ2wuRlJPTlRfQU5EX0JBQ0suJyk7
CisgICAgICAgICAgICBnbC5zdGVuY2lsTWFza1NlcGFyYXRlKC0xLCAwKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICB9KSk7CisKKyAg
ICAgICAgLy8gQmxlbmQgZnVuY3Rpb25zCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2JsZW5kX2VxdWF0aW9uJywgJ0ludmFsaWQg
Z2wuYmxlbmRFcXVhdGlvbigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgbW9k
ZSBpcyBub3QgZ2wuRlVOQ19BREQsIGdsLkZVTkNfU1VCVFJBQ1QsIGdsLkZVTkNfUkVWRVJTRV9T
VUJUUkFDVCwgZ2wuTUFYIG9yIGdsLk1JTi4nKTsKKyAgICAgICAgICAgIGdsLmJsZW5kRXF1YXRp
b24oLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOwor
CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygnYmxlbmRfZXF1YXRpb25fc2VwYXJhdGUnLCAnSW52YWxpZCBn
bC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVk
IGlmIG1vZGVSR0IgaXMgbm90IGdsLkZVTkNfQURELCBnbC5GVU5DX1NVQlRSQUNULCBnbC5GVU5D
X1JFVkVSU0VfU1VCVFJBQ1QsIGdsLk1BWCBvciBnbC5NSU4uJyk7CisgICAgICAgICAgICBnbC5i
bGVuZEVxdWF0aW9uU2VwYXJhdGUoLTEsIGdsLkZVTkNfQUREKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgbW9kZUFscGhhIGlzIG5v
dCBnbC5GVU5DX0FERCwgZ2wuRlVOQ19TVUJUUkFDVCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNU
LCBnbC5NQVggb3IgZ2wuTUlOLicpOworICAgICAgICAgICAgZ2wuYmxlbmRFcXVhdGlvblNlcGFy
YXRlKGdsLkZVTkNfQURELCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfRU5VTSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdibGVuZF9mdW5jJywgJ0ludmFsaWQg
Z2wuYmxlbmRGdW5jKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBlaXRoZXIg
c2ZhY3RvciBvciBkZmFjdG9yIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1ZS4nKTsKKyAgICAgICAg
ICAgIGdsLmJsZW5kRnVuYygtMSwgZ2wuT05FKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmJsZW5kRnVuYyhnbC5PTkUsIC0x
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2JsZW5kX2Z1bmNfc2VwYXJhdGUnLCAnSW52YWxpZCBnbC5ibGVuZEZ1
bmNTZXBhcmF0ZSgpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgc3JjUkdCLCBk
c3RSR0IsIHNyY0FscGhhLCBvciBkc3RBbHBoYSBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7
CisgICAgICAgICAgICBnbC5ibGVuZEZ1bmNTZXBhcmF0ZSgtMSwgZ2wuT05FLCBnbC5TUkNfQ09M
T1IsIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wu
WkVSTywgLTEsIGdsLlNSQ19DT0xPUiwgZ2wuT05FX01JTlVTX1NSQ19DT0xPUik7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5i
bGVuZEZ1bmNTZXBhcmF0ZShnbC5aRVJPLCBnbC5PTkUsIC0xLCBnbC5PTkVfTUlOVVNfU1JDX0NP
TE9SKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgIGdsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLlpFUk8sIGdsLk9ORSwgZ2wuU1JDX0NP
TE9SLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7
CisKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIFJhc3Rlcml6YXRpb24gQVBJIGZ1bmN0aW9u
cworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNh
bGxiYWNrKCdjdWxsX2ZhY2UnLCAnSW52YWxpZCBnbC5jdWxsRmFjZSgpIHVzYWdlJywgZ2wsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
RU5VTSBpcyBnZW5lcmF0ZWQgaWYgbW9kZSBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7Cisg
ICAgICAgICAgICBnbC5jdWxsRmFjZSgtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdmcm9udF9mYWNlJywgJ0lu
dmFsaWQgZ2wuZnJvbnRGYWNlKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBt
b2RlIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1ZS4nKTsKKyAgICAgICAgICAgIGdsLmZyb250RmFj
ZSgtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisK
KyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNh
c2UuQXBpQ2FzZUNhbGxiYWNrKCdsaW5lX3dpZHRoJywgJ0ludmFsaWQgZ2wubGluZVdpZHRoKCkg
dXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd2lkdGggaXMgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIDAuJyk7CisgICAgICAgICAgICBnbC5saW5lV2lkdGgoMCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wubGlu
ZVdpZHRoKC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdiZWdpbl9xdWVyeScsICdJbnZhbGlkIGdsLmJlZ2lu
UXVlcnkoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtB
cnJheTxXZWJHTFF1ZXJ5Pn0gKi8gdmFyIGlkcyA9IFtdOworICAgICAgICAgICAgaWRzWzBdID0g
Z2wuY3JlYXRlUXVlcnkoKTsKKyAgICAgICAgICAgIGlkc1sxXSA9IGdsLmNyZWF0ZVF1ZXJ5KCk7
CisgICAgICAgICAgICBpZHNbMl0gPSBnbC5jcmVhdGVRdWVyeSgpOworCisgICAgICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJn
ZXQgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdG9rZW5zLicpOworICAgICAgICAgICAgZ2wu
YmVnaW5RdWVyeSgtMSwgaWRzWzBdKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBnbC5iZWdpblF1ZXJ5IGlzIGV4ZWN1dGVk
IHdoaWxlIGEgcXVlcnkgb2JqZWN0IG9mIHRoZSBzYW1lIHRhcmdldCBpcyBhbHJlYWR5IGFjdGl2
ZS4nKTsKKyAgICAgICAgICAgIGdsLmJlZ2luUXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBp
ZHNbMF0pOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAg
ICAgICAgICBnbC5iZWdpblF1ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgaWRzWzFdKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAg
ICAgICAgLy8gXG5vdGUgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEIGFuZCBnbC5BTllfU0FNUExFU19Q
QVNTRURfQ09OU0VSVkFUSVZFIGFsaWFzIHRvIHRoZSBzYW1lIHRhcmdldCBmb3IgdGhlIHB1cnBv
c2VzIG9mIHRoaXMgZXJyb3IuCisgICAgICAgICAgICBnbC5iZWdpblF1ZXJ5KGdsLkFOWV9TQU1Q
TEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIGlkc1sxXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmJlZ2luUXVlcnko
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgaWRzWzFdKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworICAgICAgICAgICAgZ2wuYmVn
aW5RdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBpZHNbMl0p
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICBnbC5lbmRRdWVyeShnbC5BTllfU0FNUExFU19QQVNTRUQpOworICAgICAgICAg
ICAgZ2wuZW5kUXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIG5h
bWUgaXMgbnVsbC4nKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0VGhyb3dOb0Vycm9yKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGdsLmJlZ2luUXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFT
U0VELCBudWxsKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBuYW1lIGhh
cyBzaW5jZSBiZWVuIGRlbGV0ZWQgd2l0aCBnbC5kZWxldGVRdWVyeS4nKTsKKyAgICAgICAgICAg
IGdsLmRlbGV0ZVF1ZXJ5KGlkc1syXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
Lk5PX0VSUk9SKTsKKyAgICAgICAgICAgIGdsLmJlZ2luUXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFT
U0VELCBpZHNbMl0pOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgaWQgaXMgdGhlIG5hbWUgb2YgYW4gYWxyZWFkeSBh
Y3RpdmUgcXVlcnkgb2JqZWN0LicpOworICAgICAgICAgICAgZ2wuYmVnaW5RdWVyeShnbC5BTllf
U0FNUExFU19QQVNTRUQsIGlkc1swXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
Lk5PX0VSUk9SKTsKKyAgICAgICAgICAgIGdsLmJlZ2luUXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgaWRzWzBdKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGlkIHJlZmVycyB0
byBhbiBleGlzdGluZyBxdWVyeSBvYmplY3Qgd2hvc2UgdHlwZSBkb2VzIG5vdCBkb2VzIG5vdCBt
YXRjaCB0YXJnZXQuJyk7CisgICAgICAgICAgICBnbC5lbmRRdWVyeShnbC5BTllfU0FNUExFU19Q
QVNTRUQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAg
ICAgICAgICBnbC5iZWdpblF1ZXJ5KGdsLlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dS
SVRURU4sIGlkc1swXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlUXVlcnkoaWRzWzBdKTsKKyAgICAg
ICAgICAgIGdsLmRlbGV0ZVF1ZXJ5KGlkc1sxXSk7CisgICAgICAgICAgICBnbC5kZWxldGVRdWVy
eShpZHNbMl0pOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7Cisg
ICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNl
LkFwaUNhc2VDYWxsYmFjaygnZW5kX3F1ZXJ5JywgJ0ludmFsaWQgZ2wuZW5kUXVlcnkoKSB1c2Fn
ZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFF1ZXJ5fSAq
LyB2YXIgaWQ7CisgICAgICAgICAgICBpZCA9IGdsLmNyZWF0ZVF1ZXJ5KCk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlm
IHRhcmdldCBpcyBub3Qgb25lIG9mIHRoZSBhY2NlcHRlZCB0b2tlbnMuJyk7CisgICAgICAgICAg
ICBnbC5lbmRRdWVyeSgtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgZ2wuZW5kUXVlcnkgaXMgZXhlY3V0ZWQgd2hlbiBh
IHF1ZXJ5IG9iamVjdCBvZiB0aGUgc2FtZSB0YXJnZXQgaXMgbm90IGFjdGl2ZS4nKTsKKyAgICAg
ICAgICAgIGdsLmVuZFF1ZXJ5KGdsLkFOWV9TQU1QTEVTX1BBU1NFRCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmJl
Z2luUXVlcnkoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBpZCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgIGdsLmVuZFF1ZXJ5KGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4pOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC5lbmRRdWVyeShn
bC5BTllfU0FNUExFU19QQVNTRUQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5O
T19FUlJPUik7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVF1ZXJ5KGlkKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworICAgICAgICB9KSk7CisKKyAgICAgICAg
Ly8gU3luYyBvYmplY3RzCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2ZlbmNlX3N5bmMnLCAnSW52YWxpZCBnbC5mZW5jZVN5bmMo
KSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGNvbmRpdGlvbiBpcyBub3QgZ2wu
U1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUuJyk7CisgICAgICAgICAgICBnbC5mZW5jZVN5bmMo
LTEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOwor
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBn
ZW5lcmF0ZWQgaWYgZmxhZ3MgaXMgbm90IHplcm8uJyk7CisgICAgICAgICAgICBnbC5mZW5jZVN5
bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDB4MDAxMCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgIH0pKTsKKworICAg
ICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygn
d2FpdF9zeW5jJywgJ0ludmFsaWQgZ2wud2FpdFN5bmMoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFN5bmN9ICovIHZhciBzeW5jID0gZ2wuZmVu
Y2VTeW5jKGdsLlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKworICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgc3luYyBpcyBu
dWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJyb3IoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgZ2wud2FpdFN5bmMobnVsbCwgMCwgZ2wuVElNRU9VVF9JR05PUkVE
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgZmxhZ3MgaXMgbm90IHplcm8uJyk7Cisg
ICAgICAgICAgICBnbC53YWl0U3luYyhzeW5jLCAweDAwMTAsIGdsLlRJTUVPVVRfSUdOT1JFRCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0
ZWQgaWYgdGltZW91dCBpcyBub3QgZ2wuVElNRU9VVF9JR05PUkVELicpOworICAgICAgICAgICAg
Z2wud2FpdFN5bmMoc3luYywgMCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVTeW5jKHN5bmMpOworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2NsaWVudF93YWl0X3N5bmMnLCAnSW52YWxpZCBnbC5jbGllbnRXYWl0
U3luYygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dl
YkdMU3luY30gKi8gdmFyIHN5bmMgPSBnbC5mZW5jZVN5bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNf
Q09NUExFVEUsIDApOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQW4gZXhj
ZXB0aW9uIGlzIHRocm93biBpZiBzeW5jIGlzIG51bGwuJyk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBnbC5jbGllbnRX
YWl0U3luYyAobnVsbCwgMCwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGZsYWdz
IGNvbnRhaW5zIGFueSB1bnN1cHBvcnRlZCBmbGFnLicpOworICAgICAgICAgICAgZ2wuY2xpZW50
V2FpdFN5bmMoc3luYywgMHgwMDAwMDAwNCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVTeW5jKHN5bmMp
OworICAgICAgICB9KSk7CisKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJH
TDJSZW5kZXJpbmdDb250ZXh0fSBnbAorICAgICAqLworICAgIGVzM2ZOZWdhdGl2ZUZyYWdtZW50
QXBpVGVzdHMucnVuID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ25l
Z2F0aXZlRnJhZ21lbnRBcGknOworICAgICAgICB2YXIgdGVzdERlc2NyaXB0aW9uID0gJ05lZ2F0
aXZlIEZyYWdtZW50IEFQSSB0ZXN0cyc7CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNl
LnJ1bm5lcjsKKworICAgICAgICBzdGF0ZS50ZXN0TmFtZSA9IHRlc3ROYW1lOworICAgICAgICBz
dGF0ZS50ZXN0Q2FzZXMgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3Jp
cHRpb24sIG51bGwpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9m
IHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7
CisgICAgICAgIGRlc2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBlczNmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzLmluaXQoZ2wpOworICAgICAg
ICAgICAgdGN1VGVzdENhc2UucnVubmVyLnJ1bkNhbGxiYWNrKHRjdVRlc3RDYXNlLnJ1blRlc3RD
YXNlcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUo
KTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZO
ZWdhdGl2ZVNoYWRlckFwaVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZOZWdhdGl2ZVNoYWRlckFw
aVRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNDhkYWI2MGRhYWMwZWY0MzJkZDJiNWQ1ZGJkMDU4YmQ3
MjQwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk5lZ2F0aXZlU2hhZGVyQXBp
VGVzdHMuanMKQEAgLTAsMCArMSwxMTk1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdF
bGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0
IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICog
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgor
ICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisg
KiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZVNoYWRl
ckFwaVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2Un
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citn
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnKTsKKworZ29vZy5zY29w
ZShmdW5jdGlvbigpIHsKKworICAgIHZhciBlczNmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cyA9IGZ1
bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHM7CisgICAgdmFyIGVzM2ZB
cGlDYXNlID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZTsKKyAgICB2YXIgdGN1VGVzdENh
c2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciBnbHVTaGFkZXJQcm9n
cmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworCisgICAgLyoqCisgICAg
KiBAdHlwZSB7c3RyaW5nfQorICAgICogQGNvbnN0CisgICAgKi8KKyAgICB2YXIgdmVydGV4U2hh
ZGVyU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgJ3ZvaWQgbWFpbiAodm9pZClc
bicgKworICAgICd7XG4nICsKKyAgICAnIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApO1xuJyArCisg
ICAgJ31cbic7CisKKyAgICAvKioKKyAgICAqIEB0eXBlIHtzdHJpbmd9CisgICAgKiBAY29uc3QK
KyAgICAqLworICAgIHZhciBmcmFnbWVudFNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNc
bicgKworICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xv
cjtcbicgKworICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAne1xuJyArCisgICAgJyBm
cmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4nICsKKyAgICAnfVxuJzsKKworICAgIC8qKgorICAgICog
QHR5cGUge3N0cmluZ30KKyAgICAqIEBjb25zdAorICAgICovCisgICAgdmFyIHVuaWZvcm1UZXN0
VmVydFNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICd1bmlmb3JtIG1lZGl1bXAg
dmVjNCB2ZWM0X3Y7XG4nICsKKyAgICAndW5pZm9ybSBtZWRpdW1wIG1hdDQgbWF0NF92O1xuJyAr
CisgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICd7XG4nICsKKyAgICAnIGdsX1Bvc2l0
aW9uID0gbWF0NF92ICogdmVjNF92O1xuJyArCisgICAgJ31cbic7CisKKyAgICAvKioKKyAgICAq
IEB0eXBlIHtzdHJpbmd9CisgICAgKiBAY29uc3QKKyAgICAqLworICAgIHZhciB1bmlmb3JtVGVz
dEZyYWdTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAndW5pZm9ybSBtZWRpdW1w
IGl2ZWM0IGl2ZWM0X2Y7XG4nICsKKyAgICAndW5pZm9ybSBtZWRpdW1wIHV2ZWM0IHV2ZWM0X2Y7
XG4nICsKKyAgICAndW5pZm9ybSBzYW1wbGVyMkQgc2FtcGxlcl9mO1xuJyArCisgICAgJ2xheW91
dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yO1xuJyArCisgICAgJ3Zv
aWQgbWFpbiAodm9pZClcbicgKworICAgICd7XG4nICsKKyAgICAnIGZyYWdDb2xvci54eSA9ICh2
ZWM0KHV2ZWM0X2YpICsgdmVjNChpdmVjNF9mKSkueHk7XG4nICsKKyAgICAnIGZyYWdDb2xvci56
dyA9IHRleHR1cmUoc2FtcGxlcl9mLCB2ZWMyKDAuMCwgMC4wKSkuenc7XG4nICsKKyAgICAnfVxu
JzsKKworICAgIC8qKgorICAgICogQHR5cGUge3N0cmluZ30KKyAgICAqIEBjb25zdAorICAgICov
CisgICAgdmFyIHVuaWZvcm1CbG9ja1ZlcnRTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsK
KyAgICAnbGF5b3V0KHN0ZDE0MCkgdW5pZm9ybSBCbG9jayB7IGxvd3AgZmxvYXQgdmFyOyB9O1xu
JyArCisgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICd7XG4nICsKKyAgICAnIGdsX1Bv
c2l0aW9uID0gdmVjNCh2YXIpO1xuJyArCisgICAgJ31cbic7CisKKyAgICAvKioKKyAgICAqIEBw
YXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wKKyAgICAqLworICAgIGVzM2ZOZWdhdGl2
ZVNoYWRlckFwaVRlc3RzLmluaXQgPSBmdW5jdGlvbihnbCkgeworICAgICAgICB2YXIgdGVzdEdy
b3VwID0gdGN1VGVzdENhc2UucnVubmVyLnRlc3RDYXNlczsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdj
cmVhdGVfc2hhZGVyJywgJ0ludmFsaWQgZ2wuY3JlYXRlU2hhZGVyKCkgdXNhZ2UnLCBnbCwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHNoYWRlclR5cGUgaXMgbm90IGFuIGFj
Y2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgICAgIGdsLmNyZWF0ZVNoYWRlcigtMSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAg
ICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnYXR0YWNoX3NoYWRlcicsICdJbnZhbGlkIGdsLmF0
dGFjaFNoYWRlcigpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyMSA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyMiA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhf
U0hBREVSKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gdmFy
IHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHNoYWRl
ciBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIHByb2dyYW0uJyk7CisgICAgICAgICAgICAgICAgZ2wu
YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcjEpOworICAgICAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgICAgICBnbC5hdHRhY2hTaGFk
ZXIocHJvZ3JhbSwgc2hhZGVyMSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhIHNoYWRlciBv
ZiB0aGUgc2FtZSB0eXBlIGFzIHNoYWRlciBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIHByb2dyYW0u
Jyk7CisgICAgICAgICAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcjIpOwor
ICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9O
KTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAg
ICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcjEpOworICAgICAgICAgICAgICAgIGdsLmRl
bGV0ZVNoYWRlcihzaGFkZXIyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2Rl
dGFjaF9zaGFkZXInLCAnSW52YWxpZCBnbC5kZXRhY2hTaGFkZXIoKSB1c2FnZScsIGdsLAorICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFNo
YWRlcn0gKi8gdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0g
PSBnbC5jcmVhdGVQcm9ncmFtKCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHNoYWRlciBpcyBub3Qg
YXR0YWNoZWQgdG8gcHJvZ3JhbS4nKTsKKyAgICAgICAgICAgICAgICBnbC5kZXRhY2hTaGFkZXIo
cHJvZ3JhbSwgc2hhZGVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAg
ICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdsaW5rX3Byb2dyYW0nLCAnSW52YWxpZCBnbC5saW5r
UHJvZ3JhbSgpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKworICAgICAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgcHJvZ3JhbSBpcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwcm9ncmFtIG9iamVj
dCBhbmQgdHJhbnNmb3JtIGZlZWRiYWNrIG1vZGUgaXMgYWN0aXZlLicpOworCisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBw
cm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICov
IHZhciBidWY7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrfSAqLyB2YXIgdGZJRDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmlu
Zz59ICovIHZhciB0ZlZhcnlpbmcgPSBbJ2dsX1Bvc2l0aW9uJ107CisKKyAgICAgICAgICAgICAg
ICB0ZklEID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICBi
dWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0o
cHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MocHJvZ3JhbS5nZXRQcm9ncmFtKCksIHRmVmFyeWluZywgZ2wuSU5URVJMRUFW
RURfQVRUUklCUyk7CisgICAgICAgICAgICAgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbS5nZXRQ
cm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5U
UkFOU0ZPUk1fRkVFREJBQ0ssIHRmSUQpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmKTsKKyAgICAgICAgICAgICAgICBnbC5i
dWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDMyLCBnbC5EWU5BTUlDX0RS
QVcpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayhnbC5UUklBTkdMRVMpOworCisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFt
LmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFj
aygpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHRmSUQpOwor
ICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICB9CisgICAgICAgICkp
OworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNh
bGxiYWNrKCd1c2VfcHJvZ3JhbScsICdJbnZhbGlkIGdsLnVzZVByb2dyYW0oKSB1c2FnZScsIGds
LAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9T
SEFERVIpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0cmFuc2Zvcm0gZmVlZGJhY2sgbW9kZSBpcyBh
Y3RpdmUgYW5kIG5vdCBwYXVzZWQuJyk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVT
aGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtMSA9IG5ldyBnbHVTaGFk
ZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdT
b3VyY2VzKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpKTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8g
dmFyIHByb2dyYW0yID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1
U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZm
ZXJ9ICovIHZhciBidWY7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrfSAqLyB2YXIgdGZJRDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PHN0cmluZz59ICovIHZhciB0ZlZhcnlpbmcgPSBbJ2dsX1Bvc2l0aW9uJ107CisKKyAgICAgICAg
ICAgICAgICB0ZklEID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAg
ICAgICBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbTEuZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC50cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0xLmdldFByb2dyYW0oKSwgdGZWYXJ5aW5nLCBnbC5J
TlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICAgICAgICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9n
cmFtMS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmSUQpOworICAgICAgICAgICAgICAgIGdsLmJp
bmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmKTsKKyAgICAgICAgICAg
ICAgICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDMyLCBnbC5E
WU5BTUlDX0RSQVcpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayhnbC5UUklBTkdMRVMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShw
cm9ncmFtMi5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wucGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbTIuZ2V0
UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9S
KTsKKworICAgICAgICAgICAgICAgIGdsLmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAg
ICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRCk7CisgICAgICAgICAgICAg
ICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOwor
ICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgICAgICAgICAgfQor
ICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNl
LkFwaUNhc2VDYWxsYmFjaygnYmluZF9zYW1wbGVyJywgJ0ludmFsaWQgZ2wuYmluZFNhbXBsZXIo
KSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhUZXhJbWFnZVVuaXRzOworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7V2ViR0xTYW1wbGVyfSAqLyB2YXIgc2FtcGxlcjsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge1dlYkdMU2FtcGxlcn0gKi8gdmFyIGJ1ZjsKKyAgICAgICAgICAgICAg
ICBtYXhUZXhJbWFnZVVuaXRzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0
ZXIoZ2wuTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMpKTsKKyAgICAgICAgICAgICAg
ICBzYW1wbGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHVuaXQgaXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBnbC5NQVhfQ09NQklFRF9URVhU
VVJFX0lNQUdFX1VOSVRTLicpOworICAgICAgICAgICAgICAgIGdsLmJpbmRTYW1wbGVyKG1heFRl
eEltYWdlVW5pdHMsIHNhbXBsZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHNhbXBsZXIgaGFzIGJlZW4g
ZGVsZXRlZCBieSBhIGNhbGwgdG8gZ2xEZWxldGVTYW1wbGVycy4nKTsKKyAgICAgICAgICAgICAg
ICBnbC5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICAgICAgICAgIGdsLmJpbmRTYW1w
bGVyKDEsIHNhbXBsZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X3Nh
bXBsZXJfcGFyYW1ldGVyaXYnLCAnSW52YWxpZCBnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKCkgdXNh
Z2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgcGFyYW1zOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xTYW1wbGVyfSAqLyB2YXIgc2FtcGxlcjsKKyAgICAgICAgICAgICAgICBzYW1wbGVyID0g
Z2wuY3JlYXRlU2FtcGxlcigpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90IGFuIGFjY2Vw
dGVkIHZhbHVlLicpOworICAgICAgICAgICAgICAgIHBhcmFtcyA9IC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0U2FtcGxlclBhcmFtZXRlcihzYW1wbGVyLCAtMSkpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAg
IGdsLmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOwor
CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxi
YWNrKCdnZXRfc2FtcGxlcl9wYXJhbWV0ZXJmdicsICdJbnZhbGlkIGdsLmdldFNhbXBsZXJQYXJh
bWV0ZXIoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwYXJhbXM7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtXZWJHTFNhbXBsZXJ9ICovIHZhciBzYW1wbGVyOworICAgICAgICAgICAgICAg
IHNhbXBsZXIgPSBnbC5jcmVhdGVTYW1wbGVyKCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBwbmFtZSBpcyBu
b3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICAgICAgcGFyYW1zID0gLyoqIEB0
eXBlIHtudW1iZXJ9ICovIChnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKHNhbXBsZXIsIC0xKSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAg
ICAgICAgICAgICAgZ2wuZGVsZXRlU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ3NhbXBsZXJfcGFyYW1ldGVyaScsICdJbnZhbGlkIGdsLnNhbXBsZXJQ
YXJhbWV0ZXJpKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xTYW1wbGVyfSAqLyB2YXIgc2FtcGxlcjsKKyAgICAg
ICAgICAgICAgICBzYW1wbGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworCisgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYg
cGFyYW1zIHNob3VsZCBoYXZlIGEgZGVmaW5lZCBjb25zdGFudCB2YWx1ZSAoYmFzZWQgb24gdGhl
IHZhbHVlIG9mIHBuYW1lKSBhbmQgZG9lcyBub3QuJyk7CisgICAgICAgICAgICAgICAgZ2wuc2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9XUkFQX1MsIC0xKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAg
ICAgICBnbC5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICAgICAgfQorICAgICAgICAp
KTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VD
YWxsYmFjaygKKyAgICAgICAgICAgICdzYW1wbGVyX3BhcmFtZXRlcml2JywgJ0ludmFsaWQgZ2wu
c2FtcGxlclBhcmFtZXRlcmkoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwYXJhbXM7CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFNhbXBsZXJ9ICovIHZhciBzYW1wbGVyOworICAg
ICAgICAgICAgICAgIHNhbXBsZXIgPSBnbC5jcmVhdGVTYW1wbGVyKCk7CisKKyAgICAgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBp
ZiBwYXJhbXMgc2hvdWxkIGhhdmUgYSBkZWZpbmVkIGNvbnN0YW50IHZhbHVlIChiYXNlZCBvbiB0
aGUgdmFsdWUgb2YgcG5hbWUpIGFuZCBkb2VzIG5vdC4nKTsKKyAgICAgICAgICAgICAgICBwYXJh
bXMgPSAtMTsKKyAgICAgICAgICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBn
bC5URVhUVVJFX1dSQVBfUywgcGFyYW1zKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVTYW1wbGVy
KHNhbXBsZXIpOworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAg
ICdzYW1wbGVyX3BhcmFtZXRlcmYnLCAnSW52YWxpZCBnbFNhbXBsZXJQYXJhbWV0ZXJmKCkgdXNh
Z2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7V2ViR0xTYW1wbGVyfSAqLyB2YXIgc2FtcGxlcjsKKyAgICAgICAgICAgICAgICBzYW1w
bGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcGFyYW1zIHNob3VsZCBo
YXZlIGEgZGVmaW5lZCBjb25zdGFudCB2YWx1ZSAoYmFzZWQgb24gdGhlIHZhbHVlIG9mIHBuYW1l
KSBhbmQgZG9lcyBub3QuJyk7CisgICAgICAgICAgICAgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmYo
c2FtcGxlciwgZ2wuVEVYVFVSRV9XUkFQX1MsIC0xLjApOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0
ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAg
IC8vIFNoYWRlciBkYXRhIGNvbW1hbmRzCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soCisgICAgICAgICAgICAnZ2V0X2F0dHJpYl9s
b2NhdGlvbicsICdJbnZhbGlkIGdsLmdldEF0dHJpYkxvY2F0aW9uKCkgdXNhZ2UnLCBnbCwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xQ
cm9ncmFtfSAqLyB2YXIgcHJvZ3JhbUVtcHR5ID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xTaGFkZXJ9ICovIHZhciBzaGFkZXIgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJh
Z1NvdXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSkpOworCisg
ICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9O
IGlzIGdlbmVyYXRlZCBpZiBwcm9ncmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2Vk
LicpOworICAgICAgICAgICAgICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtRW1wdHks
IDAsICd0ZXN0Jyk7CisgICAgICAgICAgICAgICAgZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3Jh
bUVtcHR5LCAndGVzdCcpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsK
KyAgICAgICAgICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgICAgICAg
ICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW1FbXB0eSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZUNhbGxiYWNrKAorICAgICAgICAgICAgJ2dldF91bmlmb3JtX2xvY2F0aW9uJywgJ0ludmFsaWQg
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xQcm9ncmFtfSAqLyB2YXIgcHJv
Z3JhbUVtcHR5ID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBwcm9n
cmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLicpOworICAgICAgICAgICAgICAg
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtRW1wdHksICd0ZXN0Jyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtRW1wdHkpOworICAgICAgICAgICAgfQorICAg
ICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygKKyAgICAgICAgICAgICdiaW5kX2F0dHJpYl9sb2NhdGlvbicsICdJbnZh
bGlkIGdsLmJpbmRBdHRyaWJMb2NhdGlvbigpIHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gdmFy
IHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgICAgICAgICAgdmFyIG1heElu
ZGV4ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRF
WF9BVFRSSUJTKSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIGdsLk1BWF9WRVJURVhfQVRUUklCUy4nKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5k
QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbWF4SW5kZXgsICd0ZXN0Jyk7CisgICAgICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgbmFtZSBzdGFydHMgd2l0aCB0aGUgcmVzZXJ2ZWQgcHJlZml4IFwnZ2wuXCcuJyk7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG1heEluZGV4LTEsICdn
bF90ZXN0Jyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOwor
ICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndW5pZm9ybV9ibG9ja19iaW5kaW5nJywg
J0ludmFsaWQgZ2wudW5pZm9ybUJsb2NrQmluZGluZygpIHVzYWdlJywgZ2wsCisgICAgICAgICAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5T
aGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh1bmlm
b3JtQmxvY2tWZXJ0U291cmNlLCB1bmlmb3JtVGVzdEZyYWdTb3VyY2UpKTsKKworICAgICAgICAg
ICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworCisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ3M7
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1BY3RpdmVVbmlm
b3JtcyA9IC0xOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVt
QWN0aXZlQmxvY2tzID0gLTE7CisgICAgICAgICAgICAgICAgbWF4VW5pZm9ybUJ1ZmZlckJpbmRp
bmdzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1VOSUZP
Uk1fQlVGRkVSX0JJTkRJTkdTKSk7CisgICAgICAgICAgICAgICAgbnVtQWN0aXZlVW5pZm9ybXMg
PSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbS5n
ZXRQcm9ncmFtKCksIGdsLkFDVElWRV9VTklGT1JNUykpOworICAgICAgICAgICAgICAgIG51bUFj
dGl2ZUJsb2NrcyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihwcm9ncmFtLmdldFByb2dyYW0oKSwgZ2wuQUNUSVZFX1VOSUZPUk1fQkxPQ0tTKSk7CisgICAg
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIGdsLk1BWF9VTklGT1JNX0JVRkZF
Ul9CSU5ESU5HUyA9ICcgKyBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MpOworICAgICAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBnbC5BQ1RJVkVfVU5JRk9STVMgPSAnICsgbnVt
QWN0aXZlVW5pZm9ybXMpOworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcv
LyBnbC5BQ1RJVkVfVU5JRk9STV9CTE9DS1MgPSAnICsgbnVtQWN0aXZlQmxvY2tzKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBp
ZiB1bmlmb3JtQmxvY2tJbmRleCBpcyBub3QgYW4gYWN0aXZlIHVuaWZvcm0gYmxvY2sgaW5kZXgg
b2YgcHJvZ3JhbS4nKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtQmxvY2tCaW5kaW5nKHBy
b2dyYW0uZ2V0UHJvZ3JhbSgpLCAtMSwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtQmxvY2tC
aW5kaW5nKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCA1LCAwKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHVuaWZvcm1C
bG9ja0JpbmRpbmcgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBnbC5N
QVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MuJyk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtLmdldFByb2dyYW0oKSwgbWF4VW5pZm9ybUJ1ZmZlckJpbmRp
bmdzLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlv
biBpcyB0aHJvd24gaWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0VGhyb3dOb0Vycm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBnbC51
bmlmb3JtQmxvY2tCaW5kaW5nKG51bGwsIDAsIDApOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICAvLyBnbFVuaWZvcm0qZgorCisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd1
bmlmb3JtZl9pbmNvbXBhdGlibGVfdHlwZScsICdJbnZhbGlkIGdsVW5pZm9ybXsxMjM0fWYoKSB1
c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0g
bmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5t
YWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1bmlmb3JtVGVzdEZyYWdT
b3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9n
cmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259
ICovIHZhciB2ZWM0X3YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFt
KCksICd2ZWM0X3YnKTsgLy8gdmVjNAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xV
bmlmb3JtTG9jYXRpb259ICovIHZhciBpdmVjNF9mID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0uZ2V0UHJvZ3JhbSgpLCAnaXZlYzRfZicpOyAvLyBpdmVjNAorICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciB1dmVjNF9mID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndXZlYzRfZicpOyAvLyB1dmVj
NAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZh
ciBzYW1wbGVyX2YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFtKCks
ICdzYW1wbGVyX2YnKTsgLy8gc2FtcGxlcjJECisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBpZiAodmVjNF92ID09IG51bGwg
fHwgaXZlYzRfZiA9PSBudWxsIHx8IHV2ZWM0X2YgPT0gbnVsbCB8fCBzYW1wbGVyX2YgPT0gbnVs
bCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnRmFpbGVk
IHRvIHJldHJpZXZlIHVuaWZvcm0gbG9jYXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgc2l6ZSBvZiB0aGUgdW5pZm9ybSB2YXJp
YWJsZSBkZWNsYXJlZCBpbiB0aGUgc2hhZGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzaXplIGluZGlj
YXRlZCBieSB0aGUgZ2xVbmlmb3JtIGNvbW1hbmQuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNl
UHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9y
bTFmKHZlYzRfdiwgMC4wKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMmYodmVjNF92LCAw
LjAsIDAuMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTNmKHZlYzRfdiwgMC4wLCAwLjAs
IDAuMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTRmKHZlYzRfdiwgMC4wLCAwLjAsIDAu
MCwgMC4wKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsK
KworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJB
VElPTiBpcyBnZW5lcmF0ZWQgaWYgZ2xVbmlmb3JtezEyMzR9ZiBpcyB1c2VkIHRvIGxvYWQgYSB1
bmlmb3JtIHZhcmlhYmxlIG9mIHR5cGUgaW50LCBpdmVjMiwgaXZlYzMsIGl2ZWM0LCB1bnNpZ25l
ZCBpbnQsIHV2ZWMyLCB1dmVjMywgdXZlYzQuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTRm
KGl2ZWM0X2YsIDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9y
bTRmKHV2ZWM0X2YsIDAuMCwgMC4wLCAwLjAsIDAuMCk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGEg
c2FtcGxlciBpcyBsb2FkZWQgdXNpbmcgYSBjb21tYW5kIG90aGVyIHRoYW4gZ2xVbmlmb3JtMWkg
YW5kIGdsVW5pZm9ybTFpdi4nKTsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dy
YW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMWYoc2FtcGxlcl9m
LCAwLjApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
QXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3VuaWZvcm1mdl9pbmNvbXBhdGlibGVfdHlwZScsICdJ
bnZhbGlkIGdsVW5pZm9ybXsxMjM0fWZ2KCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFk
ZXJQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHVuaWZvcm1UZXN0
VmVydFNvdXJjZSwgdW5pZm9ybVRlc3RGcmFnU291cmNlKSk7CisKKyAgICAgICAgICAgICAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgdmVjNF92ID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndmVjNF92Jyk7IC8vIHZlYzQKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgaXZlYzRf
ZiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ2l2ZWM0X2Yn
KTsgLy8gaXZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0
aW9ufSAqLyB2YXIgdXZlYzRfZiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFBy
b2dyYW0oKSwgJ3V2ZWM0X2YnKTsgLy8gdXZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgc2FtcGxlcl9mID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnc2FtcGxlcl9mJyk7IC8vIHNhbXBsZXIyRAor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAg
ICAgICAgICAgaWYgKHZlYzRfdiA9PSBudWxsIHx8IGl2ZWM0X2YgPT0gbnVsbCB8fCB1dmVjNF9m
ID09IG51bGwgfHwgc2FtcGxlcl9mID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoZmFsc2UsICdGYWlsZWQgdG8gcmV0cmlldmUgdW5pZm9ybSBsb2NhdGlvbics
IGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7RmxvYXQzMkFycmF5
fSAqLyB2YXIgZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7CisKKyAgICAgICAgICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlm
IHRoZSBzaXplIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlIGRlY2xhcmVkIGluIHRoZSBzaGFkZXIg
ZG9lcyBub3QgbWF0Y2ggdGhlIHNpemUgaW5kaWNhdGVkIGJ5IHRoZSBnbFVuaWZvcm0gY29tbWFu
ZC4nKTsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgp
KTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMWZ2KHZlYzRfdiwgbmV3IEZsb2F0MzJBcnJh
eSgxKSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTJmdih2ZWM0X3YsIG5ldyBGbG9hdDMy
QXJyYXkoMikpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zZnYodmVjNF92LCBuZXcgRmxv
YXQzMkFycmF5KDMpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGZ2KHZlYzRfdiwgbmV3
IEZsb2F0MzJBcnJheSg0KSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5O
T19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsVW5pZm9ybXsxMjM0fWZ2IGlzIHVzZWQg
dG8gbG9hZCBhIHVuaWZvcm0gdmFyaWFibGUgb2YgdHlwZSAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyICwgaXZlYzIsIGl2ZWMzLCBpdmVjNCwgdW5zaWduZWQgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciAsIHV2ZWMyLCB1dmVjMywgdXZlYzQuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTRm
dihpdmVjNF9mLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGZ2KHV2ZWM0X2Ys
IGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhIHNhbXBsZXIgaXMgbG9hZGVkIHVzaW5nIGEg
Y29tbWFuZCBvdGhlciB0aGFuIGdsVW5pZm9ybTFpIGFuZCBnbFVuaWZvcm0xaXYuJyk7CisgICAg
ICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybTFmdihzYW1wbGVyX2YsIG5ldyBGbG9hdDMyQXJyYXkoMSkpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwor
CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ3VuaWZvcm1mdl9pbnZhbGlkX2NvdW50JywgJ0ludmFsaWQgZ2xVbmlm
b3JtezEyMzR9ZnYoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICov
IHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1
U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1
bmlmb3JtVGVzdEZyYWdTb3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0o
cHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xV
bmlmb3JtTG9jYXRpb259ICovIHZhciB2ZWM0X3YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbS5nZXRQcm9ncmFtKCksICd2ZWM0X3YnKTsgLy8gdmVjNAorICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgaWYgKHZlYzRf
diA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAn
RmFpbGVkIHRvIHJldHJpZXZlIHVuaWZvcm0gbG9jYXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge0Zsb2F0MzJBcnJheX0gKi8gdmFyIGRhdGEgPSBuZXcg
RmxvYXQzMkFycmF5KDEyKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgY291bnQgaXMgZ3JlYXRlciB0
aGFuIDEgYW5kIHRoZSBpbmRpY2F0ZWQgdW5pZm9ybSB2YXJpYWJsZSBpcyBub3QgYW4gYXJyYXkg
dmFyaWFibGUuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFBy
b2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFmdih2ZWM0X3YsIGRhdGEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0yZnYodmVjNF92LCBkYXRhKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICBnbC51bmlmb3JtM2Z2KHZlYzRfdiwgZGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5p
Zm9ybTRmdih2ZWM0X3YsIGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShu
dWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3VuaWZvcm1pX2luY29tcGF0
aWJsZV90eXBlJywgJ0ludmFsaWQgZ2xVbmlmb3JtezEyMzR9aSgpIHVzYWdlJywgZ2wsCisgICAg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNl
cyh1bmlmb3JtVGVzdFZlcnRTb3VyY2UsIHVuaWZvcm1UZXN0RnJhZ1NvdXJjZSkpOworCisgICAg
ICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHZlYzRfdiA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ3ZlYzRfdicpOyAv
LyB2ZWM0CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0g
Ki8gdmFyIGl2ZWM0X2YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFt
KCksICdpdmVjNF9mJyk7IC8vIGl2ZWM0CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHV2ZWM0X2YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbS5nZXRQcm9ncmFtKCksICd1dmVjNF9mJyk7IC8vIHV2ZWM0CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHNhbXBsZXJfZiA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ3NhbXBsZXJfZicpOyAv
LyBzYW1wbGVyMkQKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9S
KTsKKworICAgICAgICAgICAgICAgIGlmICh2ZWM0X3YgPT0gbnVsbCB8fCBpdmVjNF9mID09IG51
bGwgfHwgdXZlYzRfZiA9PSBudWxsIHx8IHNhbXBsZXJfZiA9PSBudWxsKQorICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnRmFpbGVkIHRvIHJldHJpZXZlIHVuaWZv
cm0gbG9jYXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBzaXpl
IG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlIGRlY2xhcmVkIGluIHRoZSBzaGFkZXIgZG9lcyBub3Qg
bWF0Y2ggdGhlIHNpemUgaW5kaWNhdGVkIGJ5IHRoZSBnbFVuaWZvcm0gY29tbWFuZC4nKTsKKyAg
ICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtMWkoaXZlYzRfZiwgMCk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wu
dW5pZm9ybTJpKGl2ZWM0X2YsIDAsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaShp
dmVjNF9mLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGkoaXZlYzRfZiwg
MCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJP
Uik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsVW5pZm9ybXsxMjM0fWkgaXMgdXNlZCB0byBsb2Fk
IGEgdW5pZm9ybSB2YXJpYWJsZSBvZiB0eXBlIHVuc2lnbmVkIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgLCB1dmVjMiwgdXZlYzMsIHV2ZWM0LCBvciBhbiBhcnJheSBvZiB0aGVzZS4nKTsKKyAg
ICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtMWkodXZlYzRfZiwgMCk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wu
dW5pZm9ybTJpKHV2ZWM0X2YsIDAsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaSh1
dmVjNF9mLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGkodXZlYzRfZiwg
MCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsVW5pZm9ybXsxMjM0fWkgaXMgdXNl
ZCB0byBsb2FkIGEgdW5pZm9ybSB2YXJpYWJsZSBvZiB0eXBlIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgLCB2ZWMyLCB2ZWMzLCBvciB2ZWM0LicpOworICAgICAgICAgICAgICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0x
aSh2ZWM0X3YsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0yaSh2ZWM0X3YsIDAsIDAp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaSh2ZWM0X3YsIDAsIDAsIDApOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAg
ICAgICAgICAgIGdsLnVuaWZvcm00aSh2ZWM0X3YsIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAg
ICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisK
KyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJh
Y2soJ3VuaWZvcm1pdl9pbmNvbXBhdGlibGVfdHlwZScsICdJbnZhbGlkIGdsVW5pZm9ybXsxMjM0
fWl2KCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIgcHJv
Z3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclBy
b2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHVuaWZvcm1UZXN0VmVydFNvdXJjZSwgdW5pZm9ybVRl
c3RGcmFnU291cmNlKSk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0u
Z2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxv
Y2F0aW9ufSAqLyB2YXIgdmVjNF92ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0
UHJvZ3JhbSgpLCAndmVjNF92Jyk7IC8vIHZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgaXZlYzRfZiA9IGdsLmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ2l2ZWM0X2YnKTsgLy8gaXZlYzQKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgdXZlYzRfZiA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ3V2ZWM0X2YnKTsg
Ly8gdXZlYzQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9u
fSAqLyB2YXIgc2FtcGxlcl9mID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJv
Z3JhbSgpLCAnc2FtcGxlcl9mJyk7IC8vIHNhbXBsZXIyRAorICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgaWYgKHZlYzRfdiA9
PSBudWxsIHx8IGl2ZWM0X2YgPT0gbnVsbCB8fCB1dmVjNF9mID09IG51bGwgfHwgc2FtcGxlcl9m
ID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZmFsc2UsICdG
YWlsZWQgdG8gcmV0cmlldmUgdW5pZm9ybSBsb2NhdGlvbicsIGZhbHNlLCB0cnVlKTsKKworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7SW50MzJBcnJheX0gKi8gdmFyIGRhdGExID0gbmV3IElu
dDMyQXJyYXkoMSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtJbnQzMkFycmF5fSAqLyB2
YXIgZGF0YTIgPSBuZXcgSW50MzJBcnJheSgyKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e0ludDMyQXJyYXl9ICovIHZhciBkYXRhMyA9IG5ldyBJbnQzMkFycmF5KDMpOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7SW50MzJBcnJheX0gKi8gdmFyIGRhdGE0ID0gbmV3IEludDMyQXJy
YXkoNCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBzaXplIG9mIHRoZSB1bmlmb3JtIHZhcmlh
YmxlIGRlY2xhcmVkIGluIHRoZSBzaGFkZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHNpemUgaW5kaWNh
dGVkIGJ5IHRoZSBnbFVuaWZvcm0gY29tbWFuZC4nKTsKKyAgICAgICAgICAgICAgICBnbC51c2VQ
cm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3Jt
MWl2KGl2ZWM0X2YsIGRhdGExKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMml2KGl2ZWM0
X2YsIGRhdGEyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtM2l2KGl2ZWM0X2YsIGRhdGEz
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGl2KGl2ZWM0X2YsIGRhdGE0KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0
ZWQgaWYgZ2xVbmlmb3JtezEyMzR9aXYgaXMgdXNlZCB0byBsb2FkIGEgdW5pZm9ybSB2YXJpYWJs
ZSBvZiB0eXBlIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgLCB2ZWMyLCB2ZWMzLCBvciB2ZWM0
LicpOworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkp
OworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xaXYodmVjNF92LCBkYXRhMSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybTJpdih2ZWM0X3YsIGRhdGEyKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBn
bC51bmlmb3JtM2l2KHZlYzRfdiwgZGF0YTMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm00
aXYodmVjNF92LCBkYXRhNCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsVW5pZm9ybXsxMjM0fWl2
IGlzIHVzZWQgdG8gbG9hZCBhIHVuaWZvcm0gdmFyaWFibGUgb2YgdHlwZSB1bnNpZ25lZCAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyICwgdXZlYzIsIHV2ZWMzIG9yIHV2ZWM0LicpOworICAgICAg
ICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAg
ICAgICAgIGdsLnVuaWZvcm0xaXYodXZlYzRfZiwgZGF0YTEpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGds
LnVuaWZvcm0yaXYodXZlYzRfZiwgZGF0YTIpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0z
aXYodXZlYzRfZiwgZGF0YTMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm00aXYodXZlYzRf
ZiwgZGF0YTQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9P
UEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3VuaWZvcm1pdl9pbnZhbGlkX2NvdW50JywgJ0lu
dmFsaWQgZ2xVbmlmb3JtezEyMzR9aXYoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJv
Z3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RW
ZXJ0U291cmNlLCB1bmlmb3JtVGVzdEZyYWdTb3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGds
LnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBpdmVjNF9mID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnaXZlYzRfZicpOyAvLyBpdmVjNAorICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAg
ICAgICAgaWYgKGl2ZWM0X2YgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TXNn
T3B0aW9ucyhmYWxzZSwgJ0ZhaWxlZCB0byByZXRyaWV2ZSB1bmlmb3JtIGxvY2F0aW9uJywgZmFs
c2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtJbnQzMkFycmF5fSAqLyB2
YXIgZGF0YSA9IG5ldyBJbnQzMkFycmF5KDEyKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgY291bnQg
aXMgZ3JlYXRlciB0aGFuIDEgYW5kIHRoZSBpbmRpY2F0ZWQgdW5pZm9ybSB2YXJpYWJsZSBpcyBu
b3QgYW4gYXJyYXkgdmFyaWFibGUuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShw
cm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFpdihpdmVj
NF9mLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMml2KGl2ZWM0X2YsIGRhdGEp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaXYoaXZlYzRfZiwgZGF0YSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybTRpdihpdmVjNF9mLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAg
IGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd1
bmlmb3JtdWlfaW5jb21wYXRpYmxlX3R5cGUnLCAnSW52YWxpZCBnbFVuaWZvcm17MTIzNH11aSgp
IHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0g
PSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFt
Lm1ha2VWdHhGcmFnU291cmNlcyh1bmlmb3JtVGVzdFZlcnRTb3VyY2UsIHVuaWZvcm1UZXN0RnJh
Z1NvdXJjZSkpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFBy
b2dyYW0oKSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlv
bn0gKi8gdmFyIHZlYzRfdiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dy
YW0oKSwgJ3ZlYzRfdicpOyAvLyB2ZWM0CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIGl2ZWM0X2YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbS5nZXRQcm9ncmFtKCksICdpdmVjNF9mJyk7IC8vIGl2ZWM0CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHV2ZWM0X2YgPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFtKCksICd1dmVjNF9mJyk7IC8vIHV2
ZWM0CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8g
dmFyIHNhbXBsZXJfZiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0o
KSwgJ3NhbXBsZXJfZicpOyAvLyBzYW1wbGVyMkQKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGlmICh2ZWM0X3YgPT0gbnVs
bCB8fCBpdmVjNF9mID09IG51bGwgfHwgdXZlYzRfZiA9PSBudWxsIHx8IHNhbXBsZXJfZiA9PSBu
dWxsKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnRmFpbGVk
IHRvIHJldHJpZXZlIHVuaWZvcm0gbG9jYXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2Vu
ZXJhdGVkIGlmIHRoZSBzaXplIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlIGRlY2xhcmVkIGluIHRo
ZSBzaGFkZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHNpemUgaW5kaWNhdGVkIGJ5IHRoZSBnbFVuaWZv
cm0gY29tbWFuZC4nKTsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0
UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMXVpKHV2ZWM0X2YsIDApOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0ydWkodXZlYzRfZiwgMCwgMCk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICAgICAgZ2wudW5pZm9ybTN1aSh1dmVjNF9mLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBn
bC51bmlmb3JtNHVpKHV2ZWM0X2YsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBnbFVuaWZvcm17
MTIzNH1pIGlzIHVzZWQgdG8gbG9hZCBhIHVuaWZvcm0gdmFyaWFibGUgb2YgdHlwZSAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyICwgaXZlYzIsIGl2ZWMzLCBpdmVjNCwgb3IgYW4gYXJyYXkgb2Yg
dGhlc2UuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTF1aShpdmVjNF9mLCAwKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtMnVpKGl2ZWM0X2YsIDAsIDApOworICAgICAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAg
IGdsLnVuaWZvcm0zdWkoaXZlYzRfZiwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5p
Zm9ybTR1aShpdmVjNF9mLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgZ2xVbmlm
b3JtezEyMzR9aSBpcyB1c2VkIHRvIGxvYWQgYSB1bmlmb3JtIHZhcmlhYmxlIG9mIHR5cGUgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciAsIHZlYzIsIHZlYzMsIG9yIHZlYzQuJyk7CisgICAgICAg
ICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAg
ICAgICAgZ2wudW5pZm9ybTF1aSh2ZWM0X3YsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZv
cm0ydWkodmVjNF92LCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtM3VpKHZlYzRf
diwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTR1aSh2ZWM0X3YsIDAsIDAs
IDAsIDApOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhIHNhbXBsZXIgaXMgbG9hZGVkIHVzaW5nIGEg
Y29tbWFuZCBvdGhlciB0aGFuIGdsVW5pZm9ybTFpIGFuZCBnbFVuaWZvcm0xaXYuJyk7CisgICAg
ICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybTF1aShzYW1wbGVyX2YsIDApOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAg
Z2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3Vu
aWZvcm11aXZfaW5jb21wYXRpYmxlX3R5cGUnLCAnSW52YWxpZCBnbFVuaWZvcm17MTIzNH11aXYo
KSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFt
ID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3Jh
bS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1bmlmb3JtVGVzdEZy
YWdTb3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQ
cm9ncmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRp
b259ICovIHZhciB2ZWM0X3YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9n
cmFtKCksICd2ZWM0X3YnKTsgLy8gdmVjNAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2Vi
R0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBpdmVjNF9mID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnaXZlYzRfZicpOyAvLyBpdmVjNAorICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciB1dmVjNF9mID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndXZlYzRfZicpOyAvLyB1
dmVjNAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICov
IHZhciBzYW1wbGVyX2YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFt
KCksICdzYW1wbGVyX2YnKTsgLy8gc2FtcGxlcjJECisgICAgICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBpZiAodmVjNF92ID09IG51
bGwgfHwgaXZlYzRfZiA9PSBudWxsIHx8IHV2ZWM0X2YgPT0gbnVsbCB8fCBzYW1wbGVyX2YgPT0g
bnVsbCkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhmYWxzZSwgJ0ZhaWxl
ZCB0byByZXRyaWV2ZSB1bmlmb3JtIGxvY2F0aW9uJywgZmFsc2UsIHRydWUpOworCisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtVaW50MzJBcnJheX0gKi8gdmFyIGRhdGExID0gbmV3IFVpbnQz
MkFycmF5KDEpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7VWludDMyQXJyYXl9ICovIHZh
ciBkYXRhMiA9IG5ldyBVaW50MzJBcnJheSgyKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e1VpbnQzMkFycmF5fSAqLyB2YXIgZGF0YTMgPSBuZXcgVWludDMyQXJyYXkoMyk7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtVaW50MzJBcnJheX0gKi8gdmFyIGRhdGE0ID0gbmV3IFVpbnQz
MkFycmF5KDQpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgc2l6ZSBvZiB0aGUgdW5pZm9ybSB2
YXJpYWJsZSBkZWNsYXJlZCBpbiB0aGUgc2hhZGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzaXplIGlu
ZGljYXRlZCBieSB0aGUgZ2xVbmlmb3JtIGNvbW1hbmQuJyk7CisgICAgICAgICAgICAgICAgZ2wu
dXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5p
Zm9ybTF1aXYodXZlYzRfZiwgZGF0YTEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0ydWl2
KHV2ZWM0X2YsIGRhdGEyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtM3Vpdih1dmVjNF9m
LCBkYXRhMyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTR1aXYodXZlYzRfZiwgZGF0YTQp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAg
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBpZiBnbFVuaWZvcm17MTIzNH11aXYgaXMgdXNlZCB0byBsb2FkIGEgdW5pZm9y
bSB2YXJpYWJsZSBvZiB0eXBlIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgLCB2ZWMyLCB2ZWMz
LCBvciB2ZWM0LicpOworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQ
cm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xdWl2KHZlYzRfdiwgZGF0YTEp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0ydWl2KHZlYzRfdiwgZGF0YTIpOworICAgICAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAg
ICAgICAgICAgIGdsLnVuaWZvcm0zdWl2KHZlYzRfdiwgZGF0YTMpOworICAgICAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAg
IGdsLnVuaWZvcm00dWl2KHZlYzRfdiwgZGF0YTQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBnbFVu
aWZvcm17MTIzNH11aXYgaXMgdXNlZCB0byBsb2FkIGEgdW5pZm9ybSB2YXJpYWJsZSBvZiB0eXBl
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgLCBpdmVjMiwgaXZlYzMgb3IgaXZlYzQuJyk7Cisg
ICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAg
ICAgICAgICAgICAgZ2wudW5pZm9ybTF1aXYoaXZlYzRfZiwgZGF0YTEpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIGdsLnVuaWZvcm0ydWl2KGl2ZWM0X2YsIGRhdGEyKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51
bmlmb3JtM3VpdihpdmVjNF9mLCBkYXRhMyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTR1
aXYoaXZlYzRfZiwgZGF0YTQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhIHNhbXBsZXIgaXMgbG9h
ZGVkIHVzaW5nIGEgY29tbWFuZCBvdGhlciB0aGFuIGdsVW5pZm9ybTFpIGFuZCBnbFVuaWZvcm0x
aXYuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0o
KSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTF1aXYoc2FtcGxlcl9mLCBkYXRhMSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisK
KyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICAgICAgfQorICAg
ICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygndW5pZm9ybXVpdl9pbnZhbGlkX2NvdW50JywgJ0ludmFsaWQgZ2xVbmlm
b3JtezEyMzR9dWl2KCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAq
LyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGds
dVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHVuaWZvcm1UZXN0VmVydFNvdXJjZSwg
dW5pZm9ybVRlc3RGcmFnU291cmNlKSk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFt
KHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdM
VW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgdXZlYzRfZiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLmdldFByb2dyYW0oKSwgJ3V2ZWM0X2YnKTsgLy8gdXZlYzQKKyAgICAgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGlmICh1
dmVjNF9mID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZmFs
c2UsICdGYWlsZWQgdG8gcmV0cmlldmUgdW5pZm9ybSBsb2NhdGlvbicsIGZhbHNlLCB0cnVlKTsK
KworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7VWludDMyQXJyYXl9ICovIHZhciBkYXRhID0g
bmV3IFVpbnQzMkFycmF5KDEyKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgY291bnQgaXMgZ3JlYXRl
ciB0aGFuIDEgYW5kIHRoZSBpbmRpY2F0ZWQgdW5pZm9ybSB2YXJpYWJsZSBpcyBub3QgYW4gYXJy
YXkgdmFyaWFibGUuJyk7CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdl
dFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTF1aXYodXZlYzRfZiwgZGF0
YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTJ1aXYodXZlYzRfZiwgZGF0YSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgZ2wudW5pZm9ybTN1aXYodXZlYzRfZiwgZGF0YSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgZ2wudW5pZm9ybTR1aXYodXZlYzRfZiwgZGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBnbC51
c2VQcm9ncmFtKG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndW5pZm9y
bV9tYXRyaXhmdl9pbmNvbXBhdGlibGVfdHlwZScsICdJbnZhbGlkIGdsVW5pZm9ybU1hdHJpeHsy
MzR9ZnYoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBw
cm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1bmlmb3Jt
VGVzdEZyYWdTb3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3Jh
bS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3Jt
TG9jYXRpb259ICovIHZhciBtYXQ0X3YgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5n
ZXRQcm9ncmFtKCksICdtYXQ0X3YnKTsgLy8gbWF0NAorICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBzYW1wbGVyX2YgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFtKCksICdzYW1wbGVyX2YnKTsgLy8gc2FtcGxlcjJE
CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAg
ICAgICAgICAgICBpZiAobWF0NF92ID09IG51bGwgfHwgc2FtcGxlcl9mID09IG51bGwpCisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZmFsc2UsICdGYWlsZWQgdG8gcmV0cmll
dmUgdW5pZm9ybSBsb2NhdGlvbicsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7RmxvYXQzMkFycmF5fSAqLyB2YXIgZGF0YTQgPSBuZXcgRmxvYXQzMkFycmF5KDQp
OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7RmxvYXQzMkFycmF5fSAqLyB2YXIgZGF0YTkg
PSBuZXcgRmxvYXQzMkFycmF5KDkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7RmxvYXQz
MkFycmF5fSAqLyB2YXIgZGF0YTE2ID0gbmV3IEZsb2F0MzJBcnJheSgxNik7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtGbG9hdDMyQXJyYXl9ICovIHZhciBkYXRhNiA9IG5ldyBGbG9hdDMy
QXJyYXkoNik7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtGbG9hdDMyQXJyYXl9ICovIHZh
ciBkYXRhOCA9IG5ldyBGbG9hdDMyQXJyYXkoOCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtGbG9hdDMyQXJyYXl9ICovIHZhciBkYXRhMTIgPSBuZXcgRmxvYXQzMkFycmF5KDEyKTsKKwor
ICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElP
TiBpcyBnZW5lcmF0ZWQgaWYgdGhlIHNpemUgb2YgdGhlIHVuaWZvcm0gdmFyaWFibGUgZGVjbGFy
ZWQgaW4gdGhlIHNoYWRlciBkb2VzIG5vdCBtYXRjaCB0aGUgc2l6ZSBpbmRpY2F0ZWQgYnkgdGhl
IGdsVW5pZm9ybSBjb21tYW5kLicpOworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJv
Z3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgyZnYo
bWF0NF92LCBmYWxzZSwgZGF0YTQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgz
ZnYobWF0NF92LCBmYWxzZSwgZGF0YTkpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRy
aXg0ZnYobWF0NF92LCBmYWxzZSwgZGF0YTE2KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgy
eDNmdihtYXQ0X3YsIGZhbHNlLCBkYXRhNik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybU1h
dHJpeDN4MmZ2KG1hdDRfdiwgZmFsc2UsIGRhdGE2KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlm
b3JtTWF0cml4Mng0ZnYobWF0NF92LCBmYWxzZSwgZGF0YTgpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGds
LnVuaWZvcm1NYXRyaXg0eDJmdihtYXQ0X3YsIGZhbHNlLCBkYXRhOCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgZ2wudW5pZm9ybU1hdHJpeDN4NGZ2KG1hdDRfdiwgZmFsc2UsIGRhdGExMik7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybU1hdHJpeDR4M2Z2KG1hdDRfdiwgZmFsc2UsIGRhdGExMik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisK
KyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJ
T04gaXMgZ2VuZXJhdGVkIGlmIGEgc2FtcGxlciBpcyBsb2FkZWQgdXNpbmcgYSBjb21tYW5kIG90
aGVyIHRoYW4gZ2xVbmlmb3JtMWkgYW5kIGdsVW5pZm9ybTFpdi4nKTsKKyAgICAgICAgICAgICAg
ICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBn
bC51bmlmb3JtTWF0cml4MmZ2KHNhbXBsZXJfZiwgZmFsc2UsIGRhdGE0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICBnbC51bmlmb3JtTWF0cml4M2Z2KHNhbXBsZXJfZiwgZmFsc2UsIGRhdGE5KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtTWF0cml4NGZ2KHNhbXBsZXJfZiwgZmFsc2UsIGRhdGExNik7
CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7
CisKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtTWF0cml4MngzZnYoc2FtcGxlcl9mLCBmYWxz
ZSwgZGF0YTYpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgzeDJmdihzYW1wbGVy
X2YsIGZhbHNlLCBkYXRhNik7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybU1hdHJpeDJ4NGZ2
KHNhbXBsZXJfZiwgZmFsc2UsIGRhdGE4KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtTWF0
cml4NHgyZnYoc2FtcGxlcl9mLCBmYWxzZSwgZGF0YTgpOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVu
aWZvcm1NYXRyaXgzeDRmdihzYW1wbGVyX2YsIGZhbHNlLCBkYXRhMTIpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIGdsLnVuaWZvcm1NYXRyaXg0eDNmdihzYW1wbGVyX2YsIGZhbHNlLCBkYXRhMTIpOworICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisg
ICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlD
YXNlQ2FsbGJhY2soJ3VuaWZvcm1fbWF0cml4ZnZfaW52YWxpZF9jb3VudCcsICdJbnZhbGlkIGds
VW5pZm9ybU1hdHJpeHsyMzR9ZnYoKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3Jh
bShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0
U291cmNlLCB1bmlmb3JtVGVzdEZyYWdTb3VyY2UpKTsKKworICAgICAgICAgICAgICAgIGdsLnVz
ZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBtYXQ0X3YgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFtKCksICdtYXQ0X3YnKTsgLy8gbWF0NAorICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAg
aWYgKG1hdDRfdiA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KGZhbHNlLCAnRmFpbGVkIHRvIHJldHJpZXZlIHVuaWZvcm0gbG9jYXRpb24nLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0Zsb2F0MzJBcnJheX0gKi8gdmFyIGRh
dGEgPSBuZXcgRmxvYXQzMkFycmF5KDE0NCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGNvdW50IGlz
IGdyZWF0ZXIgdGhhbiAxIGFuZCB0aGUgaW5kaWNhdGVkIHVuaWZvcm0gdmFyaWFibGUgaXMgbm90
IGFuIGFycmF5IHZhcmlhYmxlLicpOworICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJv
Z3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgyZnYo
bWF0NF92LCBmYWxzZSwgZGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybU1hdHJpeDNm
dihtYXQ0X3YsIGZhbHNlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtTWF0cml4
NGZ2KG1hdDRfdiwgZmFsc2UsIGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybU1h
dHJpeDJ4M2Z2KG1hdDRfdiwgZmFsc2UsIGRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLnVuaWZv
cm1NYXRyaXgzeDJmdihtYXQ0X3YsIGZhbHNlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBnbC51
bmlmb3JtTWF0cml4Mng0ZnYobWF0NF92LCBmYWxzZSwgZGF0YSk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAg
Z2wudW5pZm9ybU1hdHJpeDR4MmZ2KG1hdDRfdiwgZmFsc2UsIGRhdGEpOworICAgICAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIGdsLnVuaWZvcm1NYXRyaXgzeDRmdihtYXQ0X3YsIGZhbHNlLCBkYXRhKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICBnbC51bmlmb3JtTWF0cml4NHgzZnYobWF0NF92LCBmYWxzZSwgZGF0YSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAg
ICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICAgICAgfQorICAgICAg
ICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNh
c2VDYWxsYmFjaygnYmluZF90cmFuc2Zvcm1fZmVlZGJhY2snLCAnSW52YWxpZCBnbC5iaW5kVHJh
bnNmb3JtRmVlZGJhY2soKSB1c2FnZScsIGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPn0g
Ki8gdmFyIHRmSUQgPSBbXTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3Jh
bS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKSk7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZjsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciB0ZlZhcnlpbmcgPSBbJ2dsX1Bvc2l0aW9u
J107CisKKyAgICAgICAgICAgICAgICBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgICAgICB0ZklEWzBdID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB0ZklEWzFdID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgICAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJh
dGVkIGlmIHRhcmdldCBpcyBub3QgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLicpOworICAgICAgICAg
ICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjaygtMSwgdGZJRFswXSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRl
ZCBpZiB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIG9wZXJhdGlvbiBpcyBhY3RpdmUgb24gdGhlIGN1
cnJlbnRseSBib3VuZCB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0LCBhbmQgaXMgbm90IHBhdXNl
ZC4nKTsKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgp
KTsKKyAgICAgICAgICAgICAgICBnbC50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0u
Z2V0UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgICAg
ICAgICAgICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAg
ICAgICAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0
ZklEWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAzMiwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgICAg
ICAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBi
dWYpOworICAgICAgICAgICAgICAgIGdsLmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJJQU5H
TEVTKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKwor
ICAgICAgICAgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVF
REJBQ0ssIHRmSURbMV0pOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKwor
ICAgICAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAgICAgICAgICAgZ2wu
ZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2sodGZJRFswXSk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2sodGZJRFsxXSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJP
Uik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRD
aGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdiZWdpbl90cmFuc2Zvcm1fZmVl
ZGJhY2snLCAnSW52YWxpZCBnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKCkgdXNhZ2UnLCBnbCwK
KyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz59ICovIHZhciB0ZklEID0gW107CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBw
cm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICov
IHZhciBidWY7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2
YXIgdGZWYXJ5aW5nID0gWydnbF9Qb3NpdGlvbiddOworCisgICAgICAgICAgICAgICAgYnVmID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdGZJRFswXSA9IGdsLmNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgICAgICAgICAgdGZJRFsxXSA9IGdsLmNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dy
YW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC50cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FU
VFJJQlMpOworICAgICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3Jh
bSgpKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLLCB0ZklEWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVm
ZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAzMiwgZ2wuRFlOQU1JQ19EUkFX
KTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCAwLCBidWYpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
Tk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcHJpbWl0aXZlTW9kZSBpcyBub3Qgb25lIG9mIGds
LlBPSU5UUywgZ2wuTElORVMsIG9yIGdsLlRSSUFOR0xFUy4nKTsKKyAgICAgICAgICAgICAgICBn
bC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKC0xKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRyYW5zZm9ybSBm
ZWVkYmFjayBpcyBhbHJlYWR5IGFjdGl2ZS4nKTsKKyAgICAgICAgICAgICAgICBnbC5iZWdpblRy
YW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFOR0xFUyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayhnbC5QT0lOVFMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhbnkgYmluZGluZyBwb2lu
dCB1c2VkIGluIHRyYW5zZm9ybSBmZWVkYmFjayBtb2RlIGRvZXMgbm90IGhhdmUgYSBidWZmZXIg
b2JqZWN0IGJvdW5kLicpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEJ1ZmZlcn0g
Ki8gdmFyIGR1bW15QnVmID0gZ2wuY3JlYXRlQnVmZmVyKCkKKyAgICAgICAgICAgICAgICBnbC5i
aW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBkdW1teUJ1Zik7
CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhnbC5UUklBTkdMRVMp
OworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXJCYXNlKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIDAsIGJ1Zik7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIG5vIGJpbmRpbmcgcG9pbnRz
IHdvdWxkIGJlIHVzZWQgYmVjYXVzZSBubyBwcm9ncmFtIG9iamVjdCBpcyBhY3RpdmUuJyk7Cisg
ICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgICAgICBnbC5i
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFOR0xFUyk7CisgICAgICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgZ2wu
dXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisKKyAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIG5v
IGJpbmRpbmcgcG9pbnRzIHdvdWxkIGJlIHVzZWQgYmVjYXVzZSB0aGUgYWN0aXZlIHByb2dyYW0g
b2JqZWN0IGhhcyBzcGVjaWZpZWQgbm8gdmFyeWluZyB2YXJpYWJsZXMgdG8gcmVjb3JkLicpOwor
ICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbS5nZXRQ
cm9ncmFtKCksIFtdLCBnbC5JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICAgICAgICAgICAgICBn
bC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFOR0xFUyk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAg
ICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUJ1
ZmZlcihidWYpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihkdW1teUJ1Zik7Cisg
ICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRFswXSk7CisgICAg
ICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRFsxXSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2Uu
QXBpQ2FzZUNhbGxiYWNrKCdwYXVzZV90cmFuc2Zvcm1fZmVlZGJhY2snLCAnSW52YWxpZCBnbC5w
YXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xUcmFuc2Zvcm1GZWVk
YmFjaz59ICovIHZhciB0ZklEID0gW107CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVT
aGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1Nv
dXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSkpOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICovIHZhciBidWY7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdGZWYXJ5aW5nID0gWydnbF9Q
b3NpdGlvbiddOworCisgICAgICAgICAgICAgICAgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7Cisg
ICAgICAgICAgICAgICAgdGZJRFswXSA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgdGZJRFsxXSA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisK
KyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAg
ICAgICAgICAgICAgICBnbC50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0uZ2V0UHJv
Z3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgICAgICAgICAg
ICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAg
ICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNGT1JNX0ZFRURCQUNLLCB0ZklEWzBd
KTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCAzMiwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgICAgICAgICBn
bC5iaW5kQnVmZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWYpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJvdW5kIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3Qg
aXMgbm90IGFjdGl2ZSBvciBpcyBwYXVzZWQuJyk7CisgICAgICAgICAgICAgICAgZ2wucGF1c2VU
cmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGdsLmJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2soZ2wuVFJJQU5HTEVTKTsKKyAgICAgICAgICAgICAgICBnbC5wYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7
CisgICAgICAgICAgICAgICAgZ2wucGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICBnbC5k
ZWxldGVCdWZmZXIoYnVmKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayh0ZklEWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFj
ayh0ZklEWzFdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9S
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3Jlc3VtZV90cmFuc2Zvcm1fZmVl
ZGJhY2snLCAnSW52YWxpZCBnbC5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIHVzYWdlJywgZ2ws
CisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+fSAqLyB2YXIgdGZJRCA9IFtdOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIg
cHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRl
clByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRT
aGFkZXJTb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAq
LyB2YXIgYnVmOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHRmVmFyeWluZyA9IFsnZ2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRmSURbMF0gPSBnbC5jcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIHRmSURbMV0gPSBnbC5jcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9n
cmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhwcm9ncmFtLmdldFByb2dyYW0oKSwgdGZWYXJ5aW5nLCBnbC5JTlRFUkxFQVZFRF9B
VFRSSUJTKTsKKyAgICAgICAgICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5T
Rk9STV9GRUVEQkFDSywgdGZJRFswXSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBidWYpOworICAgICAgICAgICAgICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJB
Vyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgMCwgYnVmKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
Lk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5J
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGN1cnJlbnRseSBib3VuZCB0cmFu
c2Zvcm0gZmVlZGJhY2sgb2JqZWN0IGlzIG5vdCBhY3RpdmUgb3IgaXMgbm90IHBhdXNlZC4nKTsK
KyAgICAgICAgICAgICAgICBnbC5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIGdsLmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJJQU5HTEVTKTsKKyAgICAgICAg
ICAgICAgICBnbC5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIGds
LnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICBnbC5yZXN1bWVUcmFu
c2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9f
RVJST1IpOworCisgICAgICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTsKKyAgICAgICAgICAgICAgICBnbC5k
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0ZklEWzBdKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayh0ZklEWzFdKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2Vu
ZF90cmFuc2Zvcm1fZmVlZGJhY2snLCAnSW52YWxpZCBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygp
IHVzYWdlJywgZ2wsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge1dlYkdMVHJhbnNmb3JtRmVlZGJhY2t9ICovIHZhciB0ZklEOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIg
cHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRl
clByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRT
aGFkZXJTb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAq
LyB2YXIgYnVmOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHRmVmFyeWluZyA9IFsnZ2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFt
LmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhwcm9ncmFtLmdldFByb2dyYW0oKSwgdGZWYXJ5aW5nLCBnbC5JTlRFUkxFQVZFRF9BVFRS
SUJTKTsKKyAgICAgICAgICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0o
KSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSQU5TRk9S
TV9GRUVEQkFDSywgdGZJRCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBidWYpOworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJBVyk7Cisg
ICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgMCwgYnVmKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VS
Uk9SKTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIG5vdCBhY3Rp
dmUuJyk7CisgICAgICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgICAgICBnbC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlRSSUFOR0xFUyk7CisgICAg
ICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLmRlbGV0
ZUJ1ZmZlcihidWYpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KHRmSUQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOwor
ICAgICAgICAgICAgfQorICAgICAgICApKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X3RyYW5zZm9ybV9mZWVkYmFja192
YXJ5aW5nJywgJ0ludmFsaWQgZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoKSB1c2FnZScs
IGdsLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtXZWJHTFRyYW5zZm9ybUZlZWRiYWNrfSAqLyB2YXIgdGZJRDsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0g
PSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFt
Lm1ha2VWdHhGcmFnU291cmNlcyh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW19ICovIHZhciBwcm9ncmFtSW52YWxpZCA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZlcnRl
eFNoYWRlclNvdXJjZSwgJycpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0
cmluZz59ICovIHZhciB0ZlZhcnlpbmcgPSBbJ2dsX1Bvc2l0aW9uJ107CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
ID0gMDsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbGVuZ3Ro
OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2l6ZTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHR5cGU7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTEFjdGl2ZUluZm99ICovIHZhciBuYW1lOworCisgICAgICAgICAg
ICAgICAgdGZJRCA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICAgICAgICAg
ICAgICBnbC50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCB0
ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworICAgICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFt
KHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRmSUQpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0VGhyb3dOb0Vycm9yKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBnbC5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcobnVsbCwgMCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgZ3JlYXRlciBvciBl
cXVhbCB0byB0aGUgdmFsdWUgb2YgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTLicpOwor
ICAgICAgICAgICAgICAgIG1heFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MgPSAvKiogQHR5cGUg
e251bWJlcn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbS5nZXRQcm9ncmFtKCks
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUykpOworICAgICAgICAgICAgICAgIG5hbWUg
PSBnbC5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbS5nZXRQcm9ncmFtKCksIG1h
eFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gb3IgZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5l
cmF0ZWQgcHJvZ3JhbSBoYXMgbm90IGJlZW4gbGlua2VkLicpOworICAgICAgICAgICAgICAgIG5h
bWUgPSBnbC5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbUludmFsaWQuZ2V0UHJv
Z3JhbSgpLCAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElE
X09QRVJBVElPTiwgZ2wuSU5WQUxJRF9WQUxVRV0pOworCisgICAgICAgICAgICAgICAgZ2wuZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRCk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworCisgICAgICAg
IHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0cmFu
c2Zvcm1fZmVlZGJhY2tfdmFyeWluZ3MnLCAnSW52YWxpZCBnbC50cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7V2ViR0xUcmFuc2Zvcm1GZWVkYmFja30gKi8gdmFyIHRmSUQ7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19
ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwg
Z2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
c3RyaW5nPn0gKi8gdmFyIHRmVmFyeWluZyA9IFsnZ2xfUG9zaXRpb24nXTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJh
dGVBdHRyaWJzID0gMDsKKworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFuc2Zv
cm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJS
T1IpOworCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlv
biBpcyB0aHJvd24gaWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0VGhyb3dOb0Vycm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBnbC50
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKG51bGwsIHRmVmFyeWluZywgZ2wuSU5URVJMRUFWRURf
QVRUUklCUyk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgYnVmZmVyTW9k
ZSBpcyBnbC5TRVBBUkFURV9BVFRSSUJTIGFuZCBjb3VudCBpcyBncmVhdGVyIHRoYW4gZ2wuTUFY
X1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLicpOworICAgICAgICAgICAgICAg
IG1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJzID0gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9B
VFRSSUJTKSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnQgPSAwOyBjb3VudCA8IG1h
eFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJzOyArK2NvdW50KSB7CisgICAgICAgICAg
ICAgICAgICAgIHRmVmFyeWluZyA9IHRmVmFyeWluZy5jb25jYXQoWydnbF9Qb3NpdGlvbiddKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2wudHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhwcm9ncmFtLmdldFByb2dyYW0oKSwgdGZWYXJ5aW5nLCBnbC5TRVBBUkFURV9BVFRS
SUJTKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAg
ICB9CisgICAgICAgICkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSdW4gdGVzdAorICAg
ICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wKKyAgICAgKi8KKyAgICAgZXMz
Zk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMucnVuID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgLy9T
ZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ25lZ2F0
aXZlX3NoYWRlcl9hcGknOworICAgICAgICB2YXIgdGVzdERlc2NyaXB0aW9uID0gJ05lZ2F0aXZl
IFNoYWRlciBBcGkgVGVzdHMnOworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5u
ZXI7CisKKyAgICAgICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUu
dGVzdENhc2VzID0gdGN1VGVzdENhc2UubmV3VGVzdCh0ZXN0TmFtZSwgdGVzdERlc2NyaXB0aW9u
LCBudWxsKTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlz
IHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAg
ICAgICBkZXNjcmlwdGlvbih0ZXN0RGVzY3JpcHRpb24pOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuaW5pdChnbCk7CisgICAgICAgICAgICB0
Y3VUZXN0Q2FzZS5ydW5uZXIucnVuQ2FsbGJhY2sodGN1VGVzdENhc2UucnVuVGVzdENhc2VzKTsK
KyAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZShlcnIpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAg
ICAgICB9CisgICAgfTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZOZWdhdGl2ZVN0
YXRlQXBpVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MGQ2Mzg0ZWRjZGRkYjMwNTE1OGUyMjVmM2ZhM2M5MjY2ODU5N2QyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMuanMKQEAg
LTAsMCArMSw5MjcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxp
dHkgUHJvZ3JhbSBPcGVuR0wgRVMgMy4wIE1vZHVsZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBB
bmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAq
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
J0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJy
aWVmIE5lZ2F0aXZlIEdMIFN0YXRlIEFQSSB0ZXN0cy4KKyAqLy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworJ3Vz
ZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZVN0
YXRlQXBpVGVzdHMnKTsKKworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RD
YXNlJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7CisKK2dvb2cu
c2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cyA9
IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0czsKKyAgICB2YXIgZXMz
ZkFwaUNhc2UgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlOworICAgIHZhciB0Y3VUZXN0
Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIGdsdVNoYWRlclBy
b2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW07CisKKyAgICAvKioKKyAg
ICAqIEB0eXBlIHtzdHJpbmd9CisgICAgKiBAY29uc3QKKyAgICAqLworICAgIHZhciB1bmlmb3Jt
VGVzdFZlcnRTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAndW5pZm9ybSBtZWRp
dW1wIHZlYzQgdlVuaWZfdmVjNDtcbicgKworICAgICdpbiBtZWRpdW1wIHZlYzQgYXR0cjtcbicg
KworICAgICdsYXlvdXQoc3RkMTQwKSB1bmlmb3JtIEJsb2NrIHsgbWVkaXVtcCB2ZWM0IGJsb2Nr
VmFyOyB9O1xuJyArCisgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICd7XG4nICsKKyAg
ICAnIGdsX1Bvc2l0aW9uID0gdlVuaWZfdmVjNCArIGJsb2NrVmFyICsgYXR0cjtcbicgKworICAg
ICd9XG4nOworCisgICAgLyoqCisgICAgKiBAdHlwZSB7c3RyaW5nfQorICAgICogQGNvbnN0Cisg
ICAgKi8KKyAgICB2YXIgdW5pZm9ybVRlc3RGcmFnU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xu
JyArCisgICAgJ3VuaWZvcm0gbWVkaXVtcCBpdmVjNCBmVW5pZl9pdmVjNDtcbicgKworICAgICd1
bmlmb3JtIG1lZGl1bXAgdXZlYzQgZlVuaWZfdXZlYzQ7XG4nICsKKyAgICAnbGF5b3V0KGxvY2F0
aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7XG4nICsKKyAgICAndm9pZCBtYWlu
ICh2b2lkKVxuJyArCisgICAgJ3tcbicgKworICAgICcgZnJhZ0NvbG9yID0gdmVjNCh2ZWM0KGZV
bmlmX2l2ZWM0KSArIHZlYzQoZlVuaWZfdXZlYzQpKTtcbicgKworICAgICd9XG4nOworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGdsCisgICAgKi8KKyAg
ICBlczNmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmluaXQgPSBmdW5jdGlvbihnbCkgeworCisgICAg
ICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzOworCisgICAg
ICAgIC8vIEVuYWJsaW5nICYgZGlzYWJsaW5nIHN0YXRlcworCisgICAgICAgIHRlc3RHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdlbmFibGUnLCAnSW52YWxp
ZCBnbC5lbmFibGUoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGNhcCBpcyBu
b3Qgb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlcy4nKTsKKyAgICAgICAgICAgIGdsLmVuYWJsZSgt
MSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAg
ICAgICAgfSkpOworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygnZGlzYWJsZScsICdJbnZhbGlkIGdsLmRpc2FibGUoKSB1c2FnZScsIGds
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGNhcCBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHZh
bHVlcy4nKTsKKyAgICAgICAgICAgIGdsLmRpc2FibGUoLTEpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICAv
LyBTaW1wbGUgc3RhdGUgcXVlcmllcworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfcGFyYW1ldGVyJywgJ0ludmFsaWQgZ2wu
Z2V0UGFyYW1ldGVyKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBwbmFtZSBp
cyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlcy4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZXtib29sZWFufSAqLyB2YXIgcGFyYW1zID0gZmFsc2U7CisgICAgICAgICAgICAvL2dsR2V0Qm9v
bGVhbnYoLTEsIHBhcmFtcyk7CisgICAgICAgICAgICBwYXJhbXMgPSAvKiogQHR5cGV7Ym9vbGVh
bn0gKi8gKGdsLmdldFBhcmFtZXRlcigtMSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X2luZGV4ZWRfcGFy
YW1ldGVyJywgJ0ludmFsaWQgZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcigpIHVzYWdlJywgZ2wsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIGRhdGEgPSAt
MTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBtYXhVbmlmb3JtQnVmZmVy
QmluZGluZ3M7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIG5hbWUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOwor
ICAgICAgICAgICAgZGF0YSA9IC8qKiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKC0xLCAwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
RU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiBpbmRleCBpcyBvdXRzaWRlIG9mIHRoZSB2YWxpZCByYW5nZSBm
b3IgdGhlIGluZGV4ZWQgc3RhdGUgdGFyZ2V0LicpOworICAgICAgICAgICAgbWF4VW5pZm9ybUJ1
ZmZlckJpbmRpbmdzID0gLyoqIEB0eXBle251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5N
QVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuTk9fRVJST1IpOworICAgICAgICAgICAgZGF0YSA9IC8qKiBAdHlwZXtudW1iZXJ9ICov
IChnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX0JJTkRJTkcsIG1heFVu
aWZvcm1CdWZmZXJCaW5kaW5ncykpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gRW51bWVyYXRlZCBz
dGF0ZSBxdWVyaWVzOiBTaGFkZXJzCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2dldF9hdHRhY2hlZF9zaGFkZXJzJywgJ0ludmFs
aWQgZ2wuZ2V0QXR0YWNoZWRTaGFkZXJzKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGV7V2ViR0xTaGFkZXJ9ICovIHZhciBzaGFkZXJPYmplY3QgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgICAgICAgICAvKiogQHR5cGV7V2Vi
R0xQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgcHJv
Z3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJyb3IoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0QXR0YWNoZWRTaGFkZXJzKG51bGwpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJPYmpl
Y3QpOworICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfSkp
OworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNh
bGxiYWNrKCdnZXRfc2hhZGVyX3BhcmFtZXRlcicsICdJbnZhbGlkIGdsLmdldFNoYWRlclBhcmFt
ZXRlcigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dl
YkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFE
RVIpOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0g
PSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2
YXIgcGFyYW0gPSAtMTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVl
LicpOworICAgICAgICAgICAgcGFyYW0gPSAvKiogQHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0U2hh
ZGVyUGFyYW1ldGVyKHNoYWRlciwgLTEpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Fu
IGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgc2hhZGVyIGlzIG51bGwuJyk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBnbC5n
ZXRTaGFkZXJQYXJhbWV0ZXIobnVsbCwgZ2wuU0hBREVSX1RZUEUpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgICAgICAgICAgZ2wu
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfc2hhZGVyX2lu
Zm9fbG9nJywgJ0ludmFsaWQgZ2wuZ2V0U2hhZGVySW5mb0xvZygpIHVzYWdlJywgZ2wsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVy
ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgLyoqIEB0
eXBle1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBbiBleGNlcHRpb24gaXMgdGhyb3du
IGlmIHNoYWRlciBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJy
b3IoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0U2hhZGVySW5mb0xvZyhudWxs
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVy
KTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIH0pKTsK
KworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxs
YmFjaygnZ2V0X3NoYWRlcl9wcmVjaXNpb25fZm9ybWF0JywgJ0ludmFsaWQgZ2wuZ2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAv
KiogQHR5cGV7V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQgfSAqLyB2YXIgcHJlY2lzaW9uOwor
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdl
bmVyYXRlZCBpZiBzaGFkZXJUeXBlIG9yIHByZWNpc2lvblR5cGUgaXMgbm90IGFuIGFjY2VwdGVk
IHZhbHVlLicpOworICAgICAgICAgICAgcHJlY2lzaW9uID0gZ2wuZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0ICgtMSwgZ2wuTUVESVVNX0ZMT0FUKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIHByZWNpc2lvbiA9IGdsLmdldFNoYWRl
clByZWNpc2lvbkZvcm1hdCAoZ2wuVkVSVEVYX1NIQURFUiwgLTEpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgcHJlY2lzaW9uID0g
Z2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0ICgtMSwgLTEpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X3No
YWRlcl9zb3VyY2UnLCAnSW52YWxpZCBnbC5nZXRTaGFkZXJTb3VyY2UoKSB1c2FnZScsIGdsLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFByb2dyYW19ICovIHZhciBw
cm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdM
U2hhZGVyfSAqLyB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIp
OworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQW4gZXhjZXB0aW9uIGlzIHRo
cm93biBpZiBzaGFkZXIgaXMgbnVsbC4nKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0VGhyb3dO
b0Vycm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGdsLmdldFNoYWRlclNvdXJjZShu
dWxsKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0p
KTsKKworICAgICAgICAvLyBFbnVtZXJhdGVkIHN0YXRlIHF1ZXJpZXM6IFByb2dyYW1zCisKKyAg
ICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2so
J2dldF9wcm9ncmFtX3BhcmFtZXRlcicsICdJbnZhbGlkIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIo
KSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFBy
b2dyYW19ICovIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICAgICAg
LyoqIEB0eXBle1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGds
LlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgLyoqIEB0eXBle2Jvb2xlYW59ICovIHZhciBw
YXJhbXM7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VO
VU0gaXMgZ2VuZXJhdGVkIGlmIHBuYW1lIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1ZS4nKTsKKyAg
ICAgICAgICAgIHBhcmFtcyA9IC8qKiBAdHlwZXtib29sZWFufSAqLyAoZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihwcm9ncmFtLCAtMSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQW4gZXhj
ZXB0aW9uIGlzIHRocm93biBpZiBwcm9ncmFtIGlzIG51bGwuJyk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKG51bGwsIGdsLkxJTktfU1RBVFVTKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgICAgICAgICAgZ2wu
ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X3Byb2dyYW1faW5m
b19sb2cnLCAnSW52YWxpZCBnbC5nZXRQcm9ncmFtSW5mb0xvZygpIHVzYWdlJywgZ2wsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dy
YW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xTaGFk
ZXJ9ICovIHZhciBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBbiBleGNlcHRpb24gaXMgdGhyb3du
IGlmIHByb2dyYW0gaXMgbnVsbC4nKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0VGhyb3dOb0Vy
cm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGdsLmdldFByb2dyYW1JbmZvTG9nIChu
dWxsKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0p
KTsKKworICAgICAgICAvLyBFbnVtZXJhdGVkIHN0YXRlIHF1ZXJpZXM6IFNoYWRlciB2YXJpYWJs
ZXMKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VD
YWxsYmFjaygnZ2V0X3RleF9wYXJhbWV0ZXInLCAnSW52YWxpZCBnbC5nZXRUZXhQYXJhbWV0ZXIo
KSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRl
eHR1cmV9ICovIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdl
dCBvciBwbmFtZSBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICBnbC5n
ZXRUZXhQYXJhbWV0ZXIgKC0xLCBnbC5URVhUVVJFX01BR19GSUxURVIpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wuZ2V0VGV4
UGFyYW1ldGVyIChnbC5URVhUVVJFXzJELCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5nZXRUZXhQYXJhbWV0ZXIgKC0x
LCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisK
KyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisKKyAgICAgICAgfSkpOwor
CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxi
YWNrKCdnZXRfdW5pZm9ybScsICdJbnZhbGlkIGdsLmdldFVuaWZvcm0oKSB1c2FnZScsIGdsLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtnbHVTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJv
Z3JhbShnbCxnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh1bmlmb3JtVGVzdFZl
cnRTb3VyY2UsIHVuaWZvcm1UZXN0RnJhZ1NvdXJjZSkpOworICAgICAgICAgICAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJH
TFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHVuaWYgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbS5nZXRQcm9ncmFtKCksICd2VW5pZl92ZWM0Jyk7IC8vIHZlYzQKKyAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnModW5pZiAhPSBudWxsLCAnRmFpbGVkIHRvIHJldHJpZXZlIHVuaWZvcm0g
bG9jYXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFNo
YWRlcn0gKi8gdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFByb2dyYW19ICovIHZhciBwcm9ncmFtRW1wdHkg
PSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgICAgICAvKiogQHR5cGV7Kn0gKi8gdmFyIHBh
cmFtczsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gaWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RU
aHJvd05vRXJyb3IoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0VW5pZm9ybSAo
bnVsbCwgdW5pZik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBwcm9ncmFtIGhh
cyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLicpOworICAgICAgICAgICAgcGFyYW1zID0g
Z2wuZ2V0VW5pZm9ybSAocHJvZ3JhbUVtcHR5LCB1bmlmKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBsb2NhdGlvbiBpcyBudWxsLicp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJyb3IoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgZ2wuZ2V0VW5pZm9ybSAocHJvZ3JhbS5nZXRQcm9ncmFtKCksIG51bGwpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXIpOwor
ICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtRW1wdHkpOworICAgICAgICB9KSk7
CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2Fs
bGJhY2soJ2dldF9hY3RpdmVfdW5pZm9ybScsICdJbnZhbGlkIGdsLmdldEFjdGl2ZVVuaWZvcm0o
KSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFNo
YWRlcn0gKi8gdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZXtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICov
IHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCxnbHVT
aGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh1bmlmb3JtVGVzdFZlcnRTb3VyY2UsIHVu
aWZvcm1UZXN0RnJhZ1NvdXJjZSkpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8g
dmFyIG51bUFjdGl2ZVVuaWZvcm1zID0gLTE7CisKKyAgICAgICAgICAgIG51bUFjdGl2ZVVuaWZv
cm1zID0gLyoqIEB0eXBle251bWJlcn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3Jh
bS5nZXRQcm9ncmFtKCksIGdsLkFDVElWRV9VTklGT1JNUykpOworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJy8vIGdsLkFDVElWRV9VTklGT1JNUyA9ICcgKyBudW1BY3RpdmVVbmlm
b3JtcyArICcgKGV4cGVjdGVkIDQpLicpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBwcm9ncmFtIGlzIG51bGwuJyk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBnbC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVy
YXRlZCBpZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBh
Y3RpdmUgdW5pZm9ybSB2YXJpYWJsZXMgaW4gcHJvZ3JhbS4nKTsKKyAgICAgICAgICAgIGdsLnVz
ZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgZ2wuZ2V0QWN0aXZl
VW5pZm9ybShwcm9ncmFtLmdldFByb2dyYW0oKSwgbnVtQWN0aXZlVW5pZm9ybXMpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAg
Z2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXIp
OworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2dldF9hY3RpdmVfdW5pZm9ybXMnLCAnSW52YWxpZCBnbC5n
ZXRBY3RpdmVVbmlmb3JtcygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
LyoqIEB0eXBle1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGds
LlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgLyoqIEB0eXBle2dsdVNoYWRlclByb2dyYW0u
U2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFk
ZXJQcm9ncmFtKGdsLGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHVuaWZvcm1U
ZXN0VmVydFNvdXJjZSwgdW5pZm9ybVRlc3RGcmFnU291cmNlKSk7CisgICAgICAgICAgICAvKiog
QHR5cGV7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGR1bW15VW5pZm9ybUluZGV4ID0gWzFdOworICAg
ICAgICAgICAgLyoqIEB0eXBle0FycmF5PG51bWJlcj59ICovIHZhciBkdW1teVBhcmFtRHN0Owor
ICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIG51bUFjdGl2ZVVuaWZvcm1zID0g
LTE7CisKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOwor
CisgICAgICAgICAgICBudW1BY3RpdmVVbmlmb3JtcyA9IC8qKiBAdHlwZXtudW1iZXJ9ICovIChn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCBnbC5BQ1RJVkVfVU5J
Rk9STVMpKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBnbC5BQ1RJVkVf
VU5JRk9STVMgPSAnICsgbnVtQWN0aXZlVW5pZm9ybXMgKyAnIChleHBlY3RlZCA0KS4nKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24g
aWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJy
b3IoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0QWN0aXZlVW5pZm9ybXMobnVs
bCwgZHVtbXlVbmlmb3JtSW5kZXgsIGdsLlVOSUZPUk1fVFlQRSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMg
Z2VuZXJhdGVkIGlmIGFueSB2YWx1ZSBpbiB1bmlmb3JtSW5kaWNlcyBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGdsLkFDVElWRV9VTklGT1JNUyBmb3IgcHJvZ3JhbS4n
KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW52YWxpZFVu
aWZvcm1JbmRpY2VzOworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PG51bWJlcj59ICovIHZh
ciBkdW1teVBhcmFtc0RzdDsKKyAgICAgICAgICAgIGZvciAodmFyIGV4Y2VzcyA9IDA7IGV4Y2Vz
cyA8PSAyOyBleGNlc3MrKykgeworICAgICAgICAgICAgICAgIGludmFsaWRVbmlmb3JtSW5kaWNl
cyA9IFsxLCBudW1BY3RpdmVVbmlmb3JtcyAtIDEgKyBleGNlc3MsIDFdOworICAgICAgICAgICAg
ICAgIGR1bW15UGFyYW1zRHN0ID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5nZXRQcm9n
cmFtKCksIGludmFsaWRVbmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9UWVBFKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGV4Y2VzcyA9PSAwID8gZ2wuTk9fRVJST1IgOiBnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90IGFu
IGFjY2VwdGVkIHRva2VuLicpOworICAgICAgICAgICAgZHVtbXlQYXJhbURzdCA9IGdsLmdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCBkdW1teVVuaWZvcm1JbmRleCwgLTEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAg
ICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVy
KHNoYWRlcik7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX3Bh
cmFtZXRlcicsICdJbnZhbGlkIGdsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcigpIHVz
YWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle2dsdVNoYWRlclBy
b2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3Jh
bS5TaGFkZXJQcm9ncmFtKGdsLGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHVu
aWZvcm1UZXN0VmVydFNvdXJjZSwgdW5pZm9ybVRlc3RGcmFnU291cmNlKSk7CisgICAgICAgICAg
ICAvKiogQHR5cGV7Kn0gKi8gdmFyIHBhcmFtczsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1i
ZXJ9ICovIHZhciBudW1BY3RpdmVCbG9ja3MgPSAtMTsKKworICAgICAgICAgICAgbnVtQWN0aXZl
QmxvY2tzID0gLyoqIEB0eXBle251bWJlcn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJv
Z3JhbS5nZXRQcm9ncmFtKCksIGdsLkFDVElWRV9VTklGT1JNX0JMT0NLUykpOworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIGdsLkFDVElWRV9VTklGT1JNX0JMT0NLUyA9ICcg
KyBudW1BY3RpdmVCbG9ja3MgKyAnIChleHBlY3RlZCAxKS4nKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgdW5pZm9ybUJsb2NrSW5kZXgg
aXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBnbC5BQ1RJVkVfVU5JRk9S
TV9CTE9DS1Mgb3IgaXMgbm90IHRoZSBpbmRleCBvZiBhbiBhY3RpdmUgdW5pZm9ybSBibG9jayBp
biBwcm9ncmFtLicpOworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKyAgICAg
ICAgICAgIHBhcmFtcyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9ncmFt
LmdldFByb2dyYW0oKSwgbnVtQWN0aXZlQmxvY2tzLCBnbC5VTklGT1JNX0JMT0NLX0JJTkRJTkcp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0
ZWQgaWYgcG5hbWUgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdG9rZW5zLicpOworICAgICAg
ICAgICAgcGFyYW1zID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKHByb2dyYW0u
Z2V0UHJvZ3JhbSgpLCAwLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAg
IH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNh
c2VDYWxsYmFjaygnZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX25hbWUnLCAnSW52YWxpZCBnbC5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGV7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIg
cHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1bmlmb3Jt
VGVzdEZyYWdTb3VyY2UpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBs
ZW5ndGggPSAtMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBudW1BY3Rp
dmVCbG9ja3MgPSAtMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtzdHJpbmd9ICovIHZhciB1bmlm
b3JtQmxvY2tOYW1lOworCisgICAgICAgICAgICBudW1BY3RpdmVCbG9ja3MgPSAvKiogQHR5cGV7
bnVtYmVyfSAqLyAoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLmdldFByb2dyYW0oKSwg
Z2wuQUNUSVZFX1VOSUZPUk1fQkxPQ0tTKSk7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnLy8gZ2wuQUNUSVZFX1VOSUZPUk1fQkxPQ0tTID0gJyArIG51bUFjdGl2ZUJsb2NrcyAr
ICcgKGV4cGVjdGVkIDEpLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19F
UlJPUik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiB1bmlmb3JtQmxvY2tJbmRleCBpcyBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGdsLkFDVElWRV9VTklGT1JNX0JMT0NLUyBvciBpcyBub3Qg
dGhlIGluZGV4IG9mIGFuIGFjdGl2ZSB1bmlmb3JtIGJsb2NrIGluIHByb2dyYW0uJyk7CisgICAg
ICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworICAgICAgICAgICAgdW5pZm9ybUJsb2Nr
TmFtZSA9IGdsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbS5nZXRQcm9ncmFtKCks
IG51bUFjdGl2ZUJsb2Nrcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworCisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICB9
KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNl
Q2FsbGJhY2soJ2dldF9hY3RpdmVfYXR0cmliJywgJ0ludmFsaWQgZ2wuZ2V0QWN0aXZlQXR0cmli
KCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xT
aGFkZXJ9ICovIHZhciBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7
CisgICAgICAgICAgICAvKiogQHR5cGV7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAq
LyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsZ2x1
U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModW5pZm9ybVRlc3RWZXJ0U291cmNlLCB1
bmlmb3JtVGVzdEZyYWdTb3VyY2UpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICov
IHZhciBudW1BY3RpdmVBdHRyaWJ1dGVzID0gLTE7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtX
ZWJHTEFjdGl2ZUluZm99ICovIHZhciBhY3RpdmVJbmZvOworICAgICAgICAgICAgLyoqIEB0eXBl
e251bWJlcn0gKi8gdmFyIHNpemUgPSAtMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9
ICovIHZhciB0eXBlID0gLTE7CisgICAgICAgICAgICAvKiogQHR5cGV7c3RyaW5nfSAqLyB2YXIg
bmFtZTsKKworICAgICAgICAgICAgbnVtQWN0aXZlQXR0cmlidXRlcyA9IC8qKiBAdHlwZXtudW1i
ZXJ9ICovKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbS5nZXRQcm9ncmFtKCksIGdsLkFD
VElWRV9BVFRSSUJVVEVTKSk7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8g
Z2wuQUNUSVZFX0FUVFJJQlVURVMgPSAnICsgbnVtQWN0aXZlQXR0cmlidXRlcyArICcgKGV4cGVj
dGVkIDEpLicpOworCisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3Jh
bSgpKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gaWYgcHJvZ3JhbSBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RU
aHJvd05vRXJyb3IoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0QWN0aXZlQXR0
cmliKG51bGwsIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbmRleCBpcyBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wuQUNUSVZFX0FUVFJJQlVURVMuJyk7CisgICAgICAgICAg
ICBhY3RpdmVJbmZvID0gZ2wuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCBu
dW1BY3RpdmVBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAg
ICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRl
c3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfdW5p
Zm9ybV9pbmRpY2VzJywgJ0ludmFsaWQgZ2wuZ2V0VW5pZm9ybUluZGljZXMoKSB1c2FnZScsIGds
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFNoYWRlcn0gKi8gdmFy
IHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZXtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFt
ID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCxnbHVTaGFkZXJQcm9ncmFt
Lm1ha2VWdHhGcmFnU291cmNlcyh1bmlmb3JtVGVzdFZlcnRTb3VyY2UsIHVuaWZvcm1UZXN0RnJh
Z1NvdXJjZSkpOworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0o
KSk7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgbnVtQWN0aXZlQmxvY2tz
ID0gLTE7CisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHVuaWZv
cm1OYW1lID0gWydCbG9jay5ibG9ja1ZhciddOworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5
PG51bWJlcj59ICovIHZhciB1bmlmb3JtSW5kaWNlcyA9IFstMV07CisKKyAgICAgICAgICAgIG51
bUFjdGl2ZUJsb2NrcyA9IC8qKiBAdHlwZXtudW1iZXJ9ICovKGdsLmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbS5nZXRQcm9ncmFtKCksIGdsLkFDVElWRV9VTklGT1JNX0JMT0NLUykpOworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIGdsLkFDVElWRV9VTklGT1JNX0JMT0NL
UyA9ICcgKyBudW1BY3RpdmVCbG9ja3MpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAo
Z2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQW4gZXhj
ZXB0aW9uIGlzIHRocm93biBpZiBwcm9ncmFtIGlzIG51bGwuJyk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBnbC5nZXRV
bmlmb3JtSW5kaWNlcyhudWxsLCB1bmlmb3JtTmFtZSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRl
cihzaGFkZXIpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2dldF92ZXJ0ZXhfYXR0cmliJywgJ0ludmFs
aWQgZ2wuZ2V0VmVydGV4QXR0cmliKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAvKiogQHR5cGV7Kn0gKi8gdmFyIHBhcmFtczsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90
IGFuIGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgcGFyYW1zID0gZ2wuZ2V0VmVydGV4
QXR0cmliKDAsIC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9F
TlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFM
VUUgaXMgZ2VuZXJhdGVkIGlmIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5N
QVhfVkVSVEVYX0FUVFJJQlMuJyk7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2
YXIgbWF4VmVydGV4QXR0cmliczsKKyAgICAgICAgICAgIG1heFZlcnRleEF0dHJpYnMgPSAvKiog
QHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUykp
OworICAgICAgICAgICAgcGFyYW1zID0gZ2wuZ2V0VmVydGV4QXR0cmliKG1heFZlcnRleEF0dHJp
YnMsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X3Zl
cnRleF9hdHRyaWJfb2Zmc2V0JywgJ0ludmFsaWQgZ2wuZ2V0VmVydGV4QXR0cmliT2Zmc2V0KCkg
dXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAq
LyB2YXIgcHRyOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBwbmFtZSBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7
CisgICAgICAgICAgICBwdHIgPSBnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoMCwgLTEpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYg
aW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGdsLk1BWF9WRVJURVhfQVRUUklCUy4n
KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBtYXhWZXJ0ZXhBdHRyaWJz
OworICAgICAgICAgICAgbWF4VmVydGV4QXR0cmlicyA9IC8qKiBAdHlwZXtudW1iZXJ9ICovIChn
bC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKSk7CisgICAgICAgICAgICBwdHIg
PSBnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQobWF4VmVydGV4QXR0cmlicywgZ2wuVkVSVEVYX0FU
VFJJQl9BUlJBWV9QT0lOVEVSKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfZnJhZ19kYXRhX2xvY2F0aW9u
JywgJ0ludmFsaWQgZ2wuZ2V0RnJhZ0RhdGFMb2NhdGlvbigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyID0g
Z2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgLyoqIEB0eXBl
e1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgcHJvZ3JhbSBoYXMgbm90IGJlZW4gbGlua2VkLicpOworICAgICAgICAgICAg
Z2wuZ2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCAnZ2xfRnJhZ0NvbG9yJyk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAg
ICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRl
cihzaGFkZXIpOworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gRW51bWVyYXRlZCBzdGF0ZSBx
dWVyaWVzOiBCdWZmZXJzCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2dldF9idWZmZXJfcGFyYW1ldGVyJywgJ0ludmFsaWQgZ2wu
Z2V0QnVmZmVyUGFyYW1ldGVyKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgcGFyYW1zID0gLTE7CisgICAgICAgICAgICAvKiog
QHR5cGV7V2ViR0xCdWZmZXJ9ICovIHZhciBidWY7CisgICAgICAgICAgICBidWYgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBi
dWYpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVN
IGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgb3IgdmFsdWUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVl
LicpOworICAgICAgICAgICAgcGFyYW1zID0gLyoqIEB0eXBle251bWJlcn0gKi8gKGdsLmdldEJ1
ZmZlclBhcmFtZXRlcigtMSwgZ2wuQlVGRkVSX1NJWkUpKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIHBhcmFtcyA9IC8qKiBAdHlw
ZXtudW1iZXJ9ICovIChnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCAtMSkp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAg
ICAgICAgcGFyYW1zID0gLyoqIEB0eXBle251bWJlcn0gKi8gKGdsLmdldEJ1ZmZlclBhcmFtZXRl
cigtMSwgLTEpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVN
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFU
SU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgcmVzZXJ2ZWQgYnVmZmVyIG9iamVjdCBuYW1lIDAgaXMg
Ym91bmQgdG8gdGFyZ2V0LicpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIG51bGwpOworICAgICAgICAgICAgcGFyYW1zID0gLyoqIEB0eXBle251bWJlcn0gKi8g
KGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKwor
ICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgIH0pKTsKKworICAgICAg
ICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0
X2ZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcGFyYW1ldGVyJywgJ0ludmFsaWQgZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGV7Kn0gKi8gdmFyIHBhcmFtczsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvOworICAgICAgICAgICAgLyoqIEB0eXBle0Fy
cmF5PFdlYkdMUmVuZGVyYnVmZmVyPn0gKi8gdmFyIHJibyA9IFtdOworCisgICAgICAgICAgICBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgcmJvWzBdID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICByYm9bMV0gPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKTsKKworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyIChnbC5GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIgKGdsLlJFTkRFUkJVRkZF
UiwgcmJvWzBdKTsKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UgKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIDE2LCAxNik7CisgICAgICAgICAgICBnbC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciAoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1F
TlQsIGdsLlJFTkRFUkJVRkZFUiwgcmJvWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIgKGdsLlJFTkRFUkJVRkZFUiwgcmJvWzFdKTsKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2UgKGdsLlJFTkRFUkJVRkZFUiwgZ2wuU1RFTkNJTF9JTkRFWDgsIDE2LCAxNik7
CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciAoZ2wuRlJBTUVCVUZGRVIs
IGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByYm9bMV0pOworICAgICAg
ICAgICAgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAoZ2wuRlJBTUVCVUZGRVIpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQg
aXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdG9rZW5zLicpOworICAgICAgICAgICAgZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKC0xLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKTsgLy8gVFlQRSBpcyBnbC5SRU5E
RVJCVUZGRVIKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBn
ZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90IHZhbGlkIGZvciB0aGUgdmFsdWUgb2YgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRS4nKTsKKyAgICAgICAgICAgIGdsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNI
TUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMKTsgLy8gVFlQRSBp
cyBnbC5SRU5ERVJCVUZGRVIKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
bnVsbCk7CisgICAgICAgICAgICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUpOyAvLyBUWVBFIGlzIGdsLkZSQU1FQlVGRkVSX0RFRkFVTFQKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhdHRhY2htZW50
IGlzIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCBhbmQgZGlmZmVyZW50IG9iamVjdHMgYXJl
IGJvdW5kIHRvIHRoZSBkZXB0aCBhbmQgc3RlbmNpbCBhdHRhY2htZW50IHBvaW50cyBvZiB0YXJn
ZXQuJyk7CisgICAgICAgICAgICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgdmFsdWUgb2YgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSBpcyBnbC5OT05FIGFuZCBwbmFtZSBp
cyBub3QgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRS4nKTsKKyAgICAgICAg
ICAgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05B
TUUpOyAvLyBUWVBFIGlzIGdsLk5PTkUKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
Tk9fRVJST1IpOworICAgICAgICAgICAgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSk7IC8vIFRZUEUgaXMgZ2wuTk9ORQorICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBvciBnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGF0dGFjaG1lbnQgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0
ZWQgdmFsdWVzIGZvciB0aGUgY3VycmVudCBiaW5kaW5nIG9mIHRhcmdldC4nKTsKKyAgICAgICAg
ICAgIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQkFDSywgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSk7IC8vIEEgRkJP
IGlzIGJvdW5kIHNvIGdsLkJBQ0sgaXMgaW52YWxpZAorICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihbZ2wuSU5WQUxJRF9PUEVSQVRJT04sIGdsLklOVkFMSURfRU5VTV0pOworICAgICAgICAg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAg
IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUp
OyAvLyBEZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIHNvIGdsLkNPTE9SX0FUVEFDSE1FTlQw
IGlzIGludmFsaWQKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfT1BF
UkFUSU9OLCBnbC5JTlZBTElEX0VOVU1dKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVi
dWZmZXIoZmJvKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfcmVuZGVyYnVmZmVyX3BhcmFtZXRl
cicsICdJbnZhbGlkIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcigpIHVzYWdlJywgZ2wsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIHBhcmFtcyA9
IC0xOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB2YXIgcmJv
OworICAgICAgICAgICAgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAg
ICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmJvKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYg
dGFyZ2V0IGlzIG5vdCBnbC5SRU5ERVJCVUZGRVIuJyk7CisgICAgICAgICAgICBnbC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoLTEsIGdsLlJFTkRFUkJVRkZFUl9XSURUSCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHBuYW1lIGlz
IG5vdCBvbmUgb2YgdGhlIGFjY2VwdGVkIHRva2Vucy4nKTsKKyAgICAgICAgICAgIGdsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIC0xKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRl
UmVuZGVyYnVmZmVyKHJibyk7CisgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJF
TkRFUkJVRkZFUiwgbnVsbCk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2V0X2ludGVybmFsZm9ybWF0
X3BhcmFtZXRlcicsICdJbnZhbGlkIGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKCkgdXNh
Z2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xSZW5kZXJi
dWZmZXJ9ICovIHZhciByYm8gPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHBuYW1lIGlzIG5vdCBnbC5TQU1QTEVTIG9yIGdsLk5VTV9T
QU1QTEVfQ09VTlRTLicpOworICAgICAgICAgICAgZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0
ZXIgKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTgsIC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IgKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIGludGVybmFsZm9ybWF0IGlz
IG5vdCBjb2xvci0sIGRlcHRoLSwgb3Igc3RlbmNpbC1yZW5kZXJhYmxlLicpOworICAgICAgICAg
ICAgZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIgKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkc4
X1NOT1JNLCBnbC5OVU1fU0FNUExFX0NPVU5UUyk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yIChnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQ
YXJhbWV0ZXIgKGdsLlJFTkRFUkJVRkZFUiwgZ2wuQ09NUFJFU1NFRF9SR0I4X0VUQzIsIGdsLk5V
TV9TQU1QTEVfQ09VTlRTKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFM
SURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBub3QgZ2wuUkVOREVSQlVGRkVSLicpOwor
ICAgICAgICAgICAgZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIgKC0xLCBnbC5SR0JBOCwg
Z2wuTlVNX1NBTVBMRV9DT1VOVFMpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wu
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVy
IChnbC5GUkFNRUJVRkZFUiwgZ2wuUkdCQTgsIGdsLk5VTV9TQU1QTEVfQ09VTlRTKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBn
bC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlciAoZ2wuVEVYVFVSRV8yRCwgZ2wuUkdCQTgsIGds
Lk5VTV9TQU1QTEVfQ09VTlRTKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklO
VkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyYm8pOwor
ICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4KTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gUXVlcnkgb2Jq
ZWN0IHF1ZXJpZXMKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNl
LkFwaUNhc2VDYWxsYmFjaygnZ2V0X3F1ZXJ5JywgJ0ludmFsaWQgZ2wuZ2V0UXVlcnkoKSB1c2Fn
ZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZh
ciBwYXJhbXMgPSAtMTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IG9yIHBuYW1lIGlzIG5vdCBhbiBhY2Nl
cHRlZCB2YWx1ZS4nKTsKKyAgICAgICAgICAgIGdsLmdldFF1ZXJ5IChnbC5BTllfU0FNUExFU19Q
QVNTRUQsIC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICBnbC5nZXRRdWVyeSAoLTEsIGdsLkNVUlJFTlRfUVVFUlkpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IGdsLmdldFF1ZXJ5ICgtMSwgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wu
SU5WQUxJRF9FTlVNKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2dldF9xdWVyeV9wYXJhbWV0ZXIn
LCAnSW52YWxpZCBnbC5nZXRRdWVyeVBhcmFtZXRlcigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkg
eworCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xRdWVyeX0gKi8gdmFyIGlkOworICAgICAg
ICAgICAgaWQgPSBnbC5jcmVhdGVRdWVyeSgpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUgcXVlcnkgb2JqZWN0IGlzIG51
bGwuJyk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdFRocm93Tm9FcnJvcihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBnbC5nZXRRdWVyeVBhcmFtZXRlciAobnVsbCwgZ2wuUVVFUllfUkVT
VUxUX0FWQUlMQUJMRSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJy8vIE5vdGU6ICcgKyBpZCArICcgaXMgbm90IGEgcXVlcnkgb2JqZWN0IHll
dCwgc2luY2UgaXQgaGFzblwndCBiZWVuIHVzZWQgYnkgZ2wuYmVnaW5RdWVyeScpOworICAgICAg
ICAgICAgZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIgKGlkLCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxF
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfT1BFUkFUSU9OKTsK
KworICAgICAgICAgICAgZ2wuYmVnaW5RdWVyeSAoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBpZCk7
CisgICAgICAgICAgICBnbC5lbmRRdWVyeSAoZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEKTsKKworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0
ZWQgaWYgcG5hbWUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgZ2wu
Z2V0UXVlcnlQYXJhbWV0ZXIgKGlkLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
IChnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGlkIGlzIHRoZSBuYW1lIG9mIGEg
Y3VycmVudGx5IGFjdGl2ZSBxdWVyeSBvYmplY3QuJyk7CisgICAgICAgICAgICBnbC5iZWdpblF1
ZXJ5IChnbC5BTllfU0FNUExFU19QQVNTRUQsIGlkKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IgKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgIGdsLmdldFF1ZXJ5UGFyYW1ldGVyIChp
ZCwgZ2wuUVVFUllfUkVTVUxUX0FWQUlMQUJMRSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yIChnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC5lbmRRdWVyeSAoZ2wu
QU5ZX1NBTVBMRVNfUEFTU0VEKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5P
X0VSUk9SKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlUXVlcnkoaWQpOworICAgICAgICB9KSk7
CisKKyAgICAgICAgLy8gU3luYyBvYmplY3QgcXVlcmllcworCisgICAgICAgIHRlc3RHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdnZXRfc3luY19wYXJhbWV0
ZXInLCAnSW52YWxpZCBnbC5nZXRTeW5jUGFyYW1ldGVyKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xTeW5jfSAqLyB2YXIgc3luYzsKKworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0FuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYg
c3luYyBpcyBudWxsLicpOworICAgICAgICAgICAgdGhpcy5leHBlY3RUaHJvd05vRXJyb3IoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZ2wuZ2V0U3luY1BhcmFtZXRlciAobnVsbCwgZ2wu
T0JKRUNUX1RZUEUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHBuYW1lIGlzIG5vdCBv
bmUgb2YgdGhlIGFjY2VwdGVkIHRva2Vucy4nKTsKKyAgICAgICAgICAgIHN5bmMgPSBnbC5mZW5j
ZVN5bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworICAgICAgICAgICAgZ2wuZ2V0U3luY1BhcmFt
ZXRlciAoc3luYywgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJ
RF9FTlVNKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gRW51bWVyYXRlZCBib29sZWFu
IHN0YXRlIHF1ZXJpZXMKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygnaXNfZW5hYmxlZCcsICdJbnZhbGlkIGdsLmlzRW5hYmxlZCgp
IHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgY2FwIGlzIG5vdCBhbiBhY2NlcHRl
ZCB2YWx1ZS4nKTsKKyAgICAgICAgICAgIGdsLmlzRW5hYmxlZCgtMSk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5pc0VuYWJs
ZWQoZ2wuVFJJQU5HTEVTKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9FTlVNKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gTmFtZWQgT2JqZWN0IFVzYWdl
CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2Fs
bGJhY2soJ2lzX2J1ZmZlcicsICdJbnZhbGlkIGdsLmlzQnVmZmVyKCkgdXNhZ2UnLCBnbCwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZmZXJ9ICovIHZhciBidWZm
ZXI7CisgICAgICAgICAgICAvKiogQHR5cGV7Ym9vbGVhbn0gKi8gdmFyIGlzQnVmZmVyOworCisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQSBuYW1lIHJldHVybmVkIGJ5IGdsR2Vu
QnVmZmVycywgYnV0IG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGEgYnVmZmVyIG9iamVjdCBieSBj
YWxsaW5nIGdsQmluZEJ1ZmZlciwgaXMgbm90IHRoZSBuYW1lIG9mIGEgYnVmZmVyIG9iamVjdC4n
KTsKKyAgICAgICAgICAgIGlzQnVmZmVyID0gZ2wuaXNCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoIWlzQnVmZmVyLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1
ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgICAgICAgICBpc0J1ZmZlciA9IGdsLmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKCFpc0J1ZmZlciwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFs
dWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBidWZmZXIpOworICAgICAgICAgICAgaXNCdWZmZXIgPSBnbC5pc0J1ZmZlcihidWZm
ZXIpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc0J1ZmZlciwgJ0dvdCBpbnZhbGlk
IGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihi
dWZmZXIpOworICAgICAgICAgICAgaXNCdWZmZXIgPSBnbC5pc0J1ZmZlcihidWZmZXIpOworICAg
ICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNCdWZmZXIsICdHb3QgaW52YWxpZCBib29sZWFu
IHZhbHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChn
bC5OT19FUlJPUik7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnaXNfZnJhbWVidWZmZXInLCAnSW52YWxp
ZCBnbC5pc0ZyYW1lYnVmZmVyKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGV7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZibzsKKyAgICAgICAgICAgIC8q
KiBAdHlwZXtib29sZWFufSAqLyB2YXIgaXNGYm87CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdBIG5hbWUgcmV0dXJuZWQgYnkgZ2xHZW5GcmFtZWJ1ZmZlcnMsIGJ1dCBub3Qg
eWV0IGJvdW5kIHRocm91Z2ggYSBjYWxsIHRvIGdsLmJpbmRGcmFtZWJ1ZmZlciBpcyBub3QgdGhl
IG5hbWUgb2YgYSBmcmFtZWJ1ZmZlciBvYmplY3QuJyk7CisgICAgICAgICAgICBpc0ZibyA9IGds
LmlzRnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIWlzRmJv
LCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAg
ICAgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGlzRmJvID0gZ2wu
aXNGcmFtZWJ1ZmZlcihmYm8pOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNGYm8s
ICdHb3QgaW52YWxpZCBib29sZWFuIHZhbHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIgKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAg
aXNGYm8gPSBnbC5pc0ZyYW1lYnVmZmVyKGZibyk7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKGlzRmJvLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKwor
ICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyIChnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cisg
ICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgICAgICAgICAgaXNGYm8g
PSBnbC5pc0ZyYW1lYnVmZmVyKGZibyk7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCFp
c0ZibywgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgfSkpOworCisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCdpc19wcm9ncmFtJywgJ0ludmFsaWQgZ2wuaXNQcm9ncmFtKCkgdXNhZ2UnLCBnbCwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xQcm9ncmFtfSAqLyB2YXIgcHJvZ3Jh
bTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtib29sZWFufSAqLyB2YXIgaXNQcm9ncmFtOworCisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQSBuYW1lIGNyZWF0ZWQgd2l0aCBnbC5j
cmVhdGVQcm9ncmFtLCBhbmQgbm90IHlldCBkZWxldGVkIHdpdGggZ2xEZWxldGVQcm9ncmFtIGlz
IGEgbmFtZSBvZiBhIHByb2dyYW0gb2JqZWN0LicpOworICAgICAgICAgICAgaXNQcm9ncmFtID0g
Z2wuaXNQcm9ncmFtKHByb2dyYW0pOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNQ
cm9ncmFtLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAg
ICAgICAgICAgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgICAgIGlzUHJv
Z3JhbSA9IGdsLmlzUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoaXNQcm9ncmFtLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsK
KworICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGlz
UHJvZ3JhbSA9IGdsLmlzUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMoIWlzUHJvZ3JhbSwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCdpc19yZW5kZXJidWZmZXInLCAnSW52YWxpZCBnbC5pc1JlbmRlcmJ1ZmZl
cigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdM
UmVuZGVyYnVmZmVyfSAqLyB2YXIgcmJvOworICAgICAgICAgICAgLyoqIEB0eXBle2Jvb2xlYW59
ICovIHZhciBpc1JibzsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0EgbmFt
ZSByZXR1cm5lZCBieSBnbEdlblJlbmRlcmJ1ZmZlcnMsIGJ1dCBub3QgeWV0IGJvdW5kIHRocm91
Z2ggYSBjYWxsIHRvIGdsLmJpbmRSZW5kZXJidWZmZXIgb3IgZ2wuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIgaXMgbm90IHRoZSBuYW1lIG9mIGEgcmVuZGVyYnVmZmVyIG9iamVjdC4nKTsKKyAgICAg
ICAgICAgIGlzUmJvID0gZ2wuaXNSZW5kZXJidWZmZXIocmJvKTsKKyAgICAgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoIWlzUmJvLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICAgICAgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAg
ICAgICAgICBpc1JibyA9IGdsLmlzUmVuZGVyYnVmZmVyKHJibyk7CisgICAgICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKCFpc1JibywgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwg
dHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIgKGdsLlJFTkRFUkJVRkZF
UiwgcmJvKTsKKyAgICAgICAgICAgIGlzUmJvID0gZ2wuaXNSZW5kZXJidWZmZXIocmJvKTsKKyAg
ICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoaXNSYm8sICdHb3QgaW52YWxpZCBib29sZWFuIHZh
bHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyIChn
bC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVy
KHJibyk7CisgICAgICAgICAgICBpc1JibyA9IGdsLmlzUmVuZGVyYnVmZmVyKHJibyk7CisgICAg
ICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCFpc1JibywgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFs
dWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5P
X0VSUk9SKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdpc19zaGFkZXInLCAnSW52YWxpZCBnbC5pc1No
YWRlcigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dl
YkdMU2hhZGVyfSAqLyB2YXIgc2hhZGVyOworICAgICAgICAgICAgLyoqIEB0eXBle2Jvb2xlYW59
ICovIHZhciBpc1NoYWRlcjsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Eg
bmFtZSBjcmVhdGVkIHdpdGggZ2xDcmVhdGVTaGFkZXIsIGFuZCBub3QgeWV0IGRlbGV0ZWQgd2l0
aCBnbERlbGV0ZVNoYWRlciBpcyBhIG5hbWUgb2YgYSBzaGFkZXIgb2JqZWN0LicpOworICAgICAg
ICAgICAgaXNTaGFkZXIgPSBnbC5pc1Byb2dyYW0oc2hhZGVyKTsKKyAgICAgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoIWlzU2hhZGVyLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNl
LCB0cnVlKTsKKworICAgICAgICAgICAgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRF
WF9TSEFERVIpOworICAgICAgICAgICAgaXNTaGFkZXIgPSBnbC5pc1NoYWRlcihzaGFkZXIpOwor
ICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc1NoYWRlciwgJ0dvdCBpbnZhbGlkIGJvb2xl
YW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlciAo
c2hhZGVyKTsKKyAgICAgICAgICAgIGlzU2hhZGVyID0gZ2wuaXNTaGFkZXIoc2hhZGVyKTsKKyAg
ICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIWlzU2hhZGVyLCAnR290IGludmFsaWQgYm9vbGVh
biB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAo
Z2wuTk9fRVJST1IpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxk
KG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2lzX3RleHR1cmUnLCAnSW52YWxpZCBn
bC5pc1RleHR1cmUoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgLyoqIEB0eXBl
e2Jvb2xlYW59ICovIHZhciBpc1RleHR1cmU7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdBIG5hbWUgcmV0dXJuZWQgYnkgZ2xHZW5UZXh0dXJlcywgYnV0IG5vdCB5ZXQgYm91
bmQgdGhyb3VnaCBhIGNhbGwgdG8gZ2xCaW5kVGV4dHVyZSBpcyBub3QgdGhlIG5hbWUgb2YgYSB0
ZXh0dXJlLicpOworICAgICAgICAgICAgaXNUZXh0dXJlID0gZ2wuaXNUZXh0dXJlKHRleHR1cmUp
OworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNUZXh0dXJlLCAnR290IGludmFsaWQg
Ym9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgdGV4dHVyZSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGlzVGV4dHVyZSA9IGdsLmlzVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIWlzVGV4dHVyZSwgJ0dvdCBp
bnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlIChnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGlzVGV4dHVy
ZSA9IGdsLmlzVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
aXNUZXh0dXJlLCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKwor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgICAg
ICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgIGlzVGV4dHVyZSA9
IGdsLmlzVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIWlz
VGV4dHVyZSwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgfSkpOwor
CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxi
YWNrKCdpc19xdWVyeScsICdJbnZhbGlkIGdsLmlzUXVlcnkoKSB1c2FnZScsIGdsLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFF1ZXJ5fSAqLyB2YXIgcXVlcnk7Cisg
ICAgICAgICAgICAvKiogQHR5cGV7Ym9vbGVhbn0gKi8gdmFyIGlzUXVlcnk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBIG5hbWUgcmV0dXJuZWQgYnkgZ2xHZW5RdWVyaWVz
LCBidXQgbm90IHlldCBhc3NvY2lhdGVkIHdpdGggYSBxdWVyeSBvYmplY3QgYnkgY2FsbGluZyBn
bC5iZWdpblF1ZXJ5LCBpcyBub3QgdGhlIG5hbWUgb2YgYSBxdWVyeSBvYmplY3QuJyk7CisgICAg
ICAgICAgICBpc1F1ZXJ5ID0gZ2wuaXNRdWVyeShxdWVyeSk7CisgICAgICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKCFpc1F1ZXJ5LCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICAgICAgcXVlcnkgPSBnbC5jcmVhdGVRdWVyeSgpOworICAgICAgICAg
ICAgaXNRdWVyeSA9IGdsLmlzUXVlcnkocXVlcnkpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyghaXNRdWVyeSwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7
CisKKyAgICAgICAgICAgIGdsLmJlZ2luUXVlcnkgKGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgcXVl
cnkpOworICAgICAgICAgICAgaXNRdWVyeSA9IGdsLmlzUXVlcnkocXVlcnkpOworICAgICAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyhpc1F1ZXJ5LCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScs
IGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgZ2wuZW5kUXVlcnkgKGdsLkFOWV9TQU1QTEVT
X1BBU1NFRCk7CisgICAgICAgICAgICBnbC5kZWxldGVRdWVyeSAocXVlcnkpOworICAgICAgICAg
ICAgaXNRdWVyeSA9IGdsLmlzUXVlcnkocXVlcnkpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyghaXNRdWVyeSwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7
CisKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKyAgICAgICAg
fSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZUNhbGxiYWNrKCdpc19zYW1wbGVyJywgJ0ludmFsaWQgZ2wuaXNTYW1wbGVyKCkgdXNhZ2UnLCBn
bCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xTYW1wbGVyfSAqLyB2
YXIgc2FtcGxlcjsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtib29sZWFufSAqLyB2YXIgaXNTYW1w
bGVyOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQSBuYW1lIHJldHVybmVk
IGJ5IGdsR2VuU2FtcGxlcnMgaXMgdGhlIG5hbWUgb2YgYSBzYW1wbGVyIG9iamVjdC4nKTsKKyAg
ICAgICAgICAgIGlzU2FtcGxlciA9IGdsLmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoIWlzU2FtcGxlciwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUn
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHNhbXBsZXIgPSBnbC5jcmVhdGVTYW1wbGVy
KCk7CisgICAgICAgICAgICBpc1NhbXBsZXIgPSBnbC5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAg
ICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGlzU2FtcGxlciwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4g
dmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRTYW1wbGVyKDAsIHNh
bXBsZXIpOworICAgICAgICAgICAgaXNTYW1wbGVyID0gZ2wuaXNTYW1wbGVyKHNhbXBsZXIpOwor
ICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc1NhbXBsZXIsICdHb3QgaW52YWxpZCBib29s
ZWFuIHZhbHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBnbC5kZWxldGVTYW1wbGVy
KHNhbXBsZXIpOworICAgICAgICAgICAgaXNTYW1wbGVyID0gZ2wuaXNTYW1wbGVyKHNhbXBsZXIp
OworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNTYW1wbGVyLCAnR290IGludmFsaWQg
Ym9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvciAoZ2wuTk9fRVJST1IpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2lzX3N5bmMnLCAnSW52YWxp
ZCBnbC5pc1N5bmMoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZXtXZWJHTFN5bmN9ICovIHZhciBzeW5jOworICAgICAgICAgICAgLyoqIEB0eXBle2Jvb2xl
YW59ICovIHZhciBpc1N5bmM7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdB
IG5hbWUgcmV0dXJuZWQgYnkgZ2wuZmVuY2VTeW5jIGlzIHRoZSBuYW1lIG9mIGEgc3luYyBvYmpl
Y3QuJyk7CisgICAgICAgICAgICBpc1N5bmMgPSBnbC5pc1N5bmMoc3luYyk7CisgICAgICAgICAg
ICBhc3NlcnRNc2dPcHRpb25zKCFpc1N5bmMsICdHb3QgaW52YWxpZCBib29sZWFuIHZhbHVlJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBzeW5jID0gZ2wuZmVuY2VTeW5jIChnbC5TWU5D
X0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisgICAgICAgICAgICBpc1N5bmMgPSBnbC5pc1N5
bmMoc3luYyk7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGlzU3luYywgJ0dvdCBpbnZh
bGlkIGJvb2xlYW4gdmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0
ZVN5bmMgKHN5bmMpOworICAgICAgICAgICAgaXNTeW5jID0gZ2wuaXNTeW5jKHN5bmMpOworICAg
ICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNTeW5jLCAnR290IGludmFsaWQgYm9vbGVhbiB2
YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wu
Tk9fRVJST1IpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2lzX3RyYW5zZm9ybV9mZWVkYmFjaycsICdJ
bnZhbGlkIGdsLmlzVHJhbnNmb3JtRmVlZGJhY2soKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRyYW5zZm9ybUZlZWRiYWNrfSAqLyB2YXIgdGY7
CisgICAgICAgICAgICAvKiogQHR5cGV7Ym9vbGVhbn0gKi8gdmFyIGlzVEY7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBIG5hbWUgcmV0dXJuZWQgYnkgZ2xHZW5UcmFuc2Zv
cm1GZWVkYmFja3MsIGJ1dCBub3QgeWV0IGJvdW5kIHVzaW5nIGdsQmluZFRyYW5zZm9ybUZlZWRi
YWNrLCBpcyBub3QgdGhlIG5hbWUgb2YgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0LicpOwor
ICAgICAgICAgICAgaXNURiA9IGdsLmlzVHJhbnNmb3JtRmVlZGJhY2sodGYpOworICAgICAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNURiwgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUnLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHRmID0gZ2wuY3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICAgICAgICAgIGlzVEYgPSBnbC5pc1RyYW5zZm9ybUZlZWRiYWNrKHRmKTsKKyAg
ICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIWlzVEYsICdHb3QgaW52YWxpZCBib29sZWFuIHZh
bHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJh
Y2sgKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGYpOworICAgICAgICAgICAgaXNURiA9IGdsLmlz
VHJhbnNmb3JtRmVlZGJhY2sodGYpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc1RG
LCAnR290IGludmFsaWQgYm9vbGVhbiB2YWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAg
ICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwp
OworICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sgKHRmKTsKKyAgICAgICAg
ICAgIGlzVEYgPSBnbC5pc1RyYW5zZm9ybUZlZWRiYWNrKHRmKTsKKyAgICAgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoIWlzVEYsICdHb3QgaW52YWxpZCBib29sZWFuIHZhbHVlJywgZmFsc2UsIHRy
dWUpOworCisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisgICAg
ICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygnaXNfdmVydGV4X2FycmF5JywgJ0ludmFsaWQgZ2wuaXNWZXJ0ZXhBcnJh
eSgpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdM
VmVydGV4QXJyYXlPYmplY3R9ICovIHZhciB2YW87CisgICAgICAgICAgICAvKiogQHR5cGV7Ym9v
bGVhbn0gKi8gdmFyIGlzVmFvOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
QSBuYW1lIHJldHVybmVkIGJ5IGdsR2VuVmVydGV4QXJyYXlzLCBidXQgbm90IHlldCBib3VuZCB1
c2luZyBnbEJpbmRWZXJ0ZXhBcnJheSwgaXMgbm90IHRoZSBuYW1lIG9mIGEgdmVydGV4IGFycmF5
IG9iamVjdC4nKTsKKyAgICAgICAgICAgIGlzVmFvID0gZ2wuaXNWZXJ0ZXhBcnJheSh2YW8pOwor
ICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNWYW8sICdHb3QgaW52YWxpZCBib29sZWFu
IHZhbHVlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICB2YW8gPSBnbC5jcmVhdGVWZXJ0
ZXhBcnJheSgpOworICAgICAgICAgICAgaXNWYW8gPSBnbC5pc1ZlcnRleEFycmF5KHZhbyk7Cisg
ICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCFpc1ZhbywgJ0dvdCBpbnZhbGlkIGJvb2xlYW4g
dmFsdWUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSAo
dmFvKTsKKyAgICAgICAgICAgIGlzVmFvID0gZ2wuaXNWZXJ0ZXhBcnJheSh2YW8pOworICAgICAg
ICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc1ZhbywgJ0dvdCBpbnZhbGlkIGJvb2xlYW4gdmFsdWUn
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSAobnVsbCk7
CisgICAgICAgICAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSAodmFvKTsKKyAgICAgICAgICAgIGlz
VmFvID0gZ2wuaXNWZXJ0ZXhBcnJheSh2YW8pOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyghaXNWYW8sICdHb3QgaW52YWxpZCBib29sZWFuIHZhbHVlJywgZmFsc2UsIHRydWUpOworCisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisgICAgICAgIH0pKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9
IGdsCisgICAgKi8KKyAgICBlczNmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLnJ1biA9IGZ1bmN0aW9u
KGdsKSB7CisgICAgICAgIHZhciB0ZXN0TmFtZSA9ICdzdGF0ZSc7CisgICAgICAgIHZhciB0ZXN0
RGVzY3JpcHRpb24gPSAnTmVnYXRpdmUgR0wgU3RhdGUgQVBJIENhc2VzJzsKKyAgICAgICAgdmFy
IHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0g
dGVzdE5hbWU7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qo
dGVzdE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFt
ZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVu
dFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9u
KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVzM2ZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMu
aW5pdChnbCk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIucnVuQ2FsbGJhY2sodGN1
VGVzdENhc2UucnVuVGVzdENhc2VzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOworICAgICAgICAgICAgdGN1VGVzdENhc2Uu
cnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzFlYjcyMDVkYmRkOGZm
ZWZjZWU4NGEzZDkzN2Y0MTk4MzE4MTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5qcwpAQCAtMCwwICsxLDMwMDEgQEAKKy8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgMy4w
IE1vZHVsZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJyaWVmIE5lZ2F0aXZlIFRleHR1cmUgQVBJ
IHRlc3RzLgorICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzJyk7CisKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmQXBpQ2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRl
eHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcp
OworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGVzM2ZOZWdhdGl2ZVRleHR1
cmVBcGlUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3Rz
OworICAgIHZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAg
IHZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisgICAgdmFy
IHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZ2x1
VGV4dHVyZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZTsKKyAgICB2YXIgZ2x1VGV4dHVy
ZVV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOworCisgICAgZnVuY3Rpb24g
ZXRjMlVuc3VwcG9ydGVkKCkgeworICAgICAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdDogbm8gc3Vw
cG9ydCBmb3IgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworICAgIH0KKworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGhlaWdodAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmTmVnYXRp
dmVUZXh0dXJlQXBpVGVzdHMuZXRjMkRhdGFTaXplID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCkg
eworICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHdpZHRoIC8gNCkgKiBNYXRoLmNlaWwoaGVpZ2h0
IC8gNCkgKiA4OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNp
emUgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAgIHJldHVybiAyICogZXMzZk5l
Z2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJEYXRhU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpfSBmdW5jCisgICAg
ICovCisgICAgZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmZvckN1YmVGYWNlcyA9IGZ1bmN0
aW9uKGZ1bmMpIHsKKyAgICAgICAgdmFyIGZhY2VHTFZhcjsKKyAgICAgICAgZm9yICh2YXIgZmFj
ZUl0ZXJUY3UgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgZmFjZUdMVmFy
ID0gZ2x1VGV4dHVyZS5jdWJlRmFjZVRvR0xGYWNlKHRjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZUl0
ZXJUY3VdKTsKKyAgICAgICAgICAgIGZ1bmMoZmFjZUdMVmFyKTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wKKyAg
ICAqLworICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5pbml0ID0gZnVuY3Rpb24oZ2wp
IHsKKworICAgICAgICB2YXIgaGF2ZUNvbXByZXNzZWRUZXh0dXJlRVRDID0gZ2x1VGV4dHVyZVV0
aWwuZW5hYmxlQ29tcHJlc3NlZFRleHR1cmVFVEMoKTsKKworICAgICAgICB2YXIgdGVzdEdyb3Vw
ID0gdGN1VGVzdENhc2UucnVubmVyLnRlc3RDYXNlczsKKworICAgICAgICB0ZXN0R3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnYWN0aXZldGV4dHVyZScsICdJ
bnZhbGlkIGdsLkFjdGl2ZVRleHR1cmUoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMg
Z2VuZXJhdGVkIGlmIHRleHR1cmUgaXMgbm90IG9uZSBvZiBnbC5URVhUVVJFaSwgd2hlcmUgaSBy
YW5nZXMgZnJvbSAwIHRvIChnbC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyAtIDEp
LicpOworICAgICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZSgtMSk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB2YXIgbnVtTWF4VGV4
dHVyZVVuaXRzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovKGdsLmdldFBhcmFtZXRlcihnbC5NQVhf
Q09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUykpOworICAgICAgICAgICAgZ2wuYWN0aXZlVGV4
dHVyZShnbC5URVhUVVJFMCArIG51bU1heFRleHR1cmVVbml0cyk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAg
IC8vIGdsLmJpbmRUZXh0dXJlCisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
QXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2JpbmRUZXh0dXJlJywgJ0ludmFsaWQgZ2wuYmluZFRl
eHR1cmUoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAg
ICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRl
eHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBub3Qg
b25lIG9mIHRoZSBhbGxvd2FibGUgdmFsdWVzLicpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1
cmUoMCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5GUkFNRUJVRkZFUiwgdGV4
dHVyZVswXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElP
TiBpcyBnZW5lcmF0ZWQgaWYgdGV4dHVyZSB3YXMgcHJldmlvdXNseSBjcmVhdGVkIHdpdGggYSB0
YXJnZXQgdGhhdCBkb2VzblwndCBtYXRjaCB0aGF0IG9mIHRhcmdldC4nKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmVbMF0pOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXh0dXJlWzFdKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8z
RCwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJS
QVksIHRleHR1cmVbMV0pOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7
CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOworICAgICAgICB9KSk7
CisKKyAgICAgICAgLy8gZ2wuY29tcHJlc3NlZFRleEltYWdlMkQKKworICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJlc3NlZHRl
eGltYWdlMmRfaW52YWxpZF90YXJnZXQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFo
YXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQor
CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0
dXJlID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOworICAgICAgICAgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVsxXSk7CisKKworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0
ZWQgaWYgdGFyZ2V0IGlzIGludmFsaWQuJyk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoMCk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgwLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCAwLCAwLCAwLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhU
VVJFX0NVQkVfTUFQLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCB1
aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisK
KworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisKKworICAgICAgICB9KSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2Nv
bXByZXNzZWR0ZXhpbWFnZTJkX2ludmFsaWRfZm9ybWF0JywgJ0ludmFsaWQgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworCisgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0g
W107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVsxXSk7CisKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYg
aW50ZXJuYWxmb3JtYXQgaXMgbm90IGEgc3VwcG9ydGVkIGZvcm1hdCByZXR1cm5lZCBpbiBnbC5D
T01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUy4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXlCdWZmZXJWaWV3fSAqLyB2YXIgdWludDggPSBuZXcgVWludDhBcnJheSgwKTsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAs
IHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LlJHQkEsIDAsIDAsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEzMkYsIDAsIDAsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNz
ZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMCwg
MCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0p
OworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9ZLCAwLCAwLCAwLCAwLCAwLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIDAsIDAsIDAsIDAsIHVp
bnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWCwgMCwgMCwgMCwgMCwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCAwLCAwLCAwLCAwLCB1aW50OCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1osIDAsIDAsIDAsIDAsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9FTlVNKTsKKworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhpbWFnZTJkX25lZ19sZXZlbCcsICdJbnZhbGlk
IGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBpZiAoIWhhdmVDb21wcmVzc2VkVGV4dHVyZUVUQykgeyBldGMyVW5z
dXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxX
ZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVsw
XSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9N
QVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBsZXNzIHRoYW4gMC4nKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJWaWV3fSAqLyB2YXIgdWludDggPSBu
ZXcgVWludDhBcnJheSgwKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIC0xLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCB1
aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
ICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YLCAtMSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgMCwgdWlu
dDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWSwgLTEsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDAsIDAsIDAsIHVpbnQ4
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1osIC0xLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCB1aW50OCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YLCAtMSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgMCwgdWludDgpOwor
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WSwgLTEsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDAsIDAsIDAsIHVpbnQ4KTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1os
IC0xLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCB1aW50OCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleHR1cmVbMV0pOworCisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4
aW1hZ2UyZF9tYXhfbGV2ZWwnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgpIHVz
YWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29t
cHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUg
PSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQg
aWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9URVhUVVJFX1NJWkUpIGZvciBh
IDJkIHRleHR1cmUgdGFyZ2V0LicpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZl
clZpZXd9ICovIHZhciB1aW50OCA9IG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVB
cGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoMTYsIDE2KSk7CisKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbG9nMk1heFRleHR1cmVTaXplID0gTWF0aC5mbG9vcihNYXRoLmxv
ZzIoLyoqIEB0eXBlIHtudW1iZXJ9ICovKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVEVYVFVSRV9T
SVpFKSkpKSArIDE7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCBsb2cyTWF4VGV4dHVyZVNpemUsIGdsLkNPTVBSRVNTRURfUkdCOF9FVEMyLCAxNiwg
MTYsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4gbG9nXzIoZ2wuTUFYX0NV
QkVfTUFQX1RFWFRVUkVfU0laRSkgZm9yIGEgY3ViZW1hcCB0YXJnZXQuJyk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZzJNYXhDdWJlbWFwU2l6ZSA9IE1hdGguZmxv
b3IoTWF0aC5sb2cyKC8qKiBAdHlwZSB7bnVtYmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFY
X0NVQkVfTUFQX1RFWFRVUkVfU0laRSkpKSkgKyAxOworCisgICAgICAgICAgICBnbC5jb21wcmVz
c2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIGxvZzJNYXhDdWJl
bWFwU2l6ZSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAwLCB1aW50OCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9ZLCBsb2cyTWF4Q3ViZW1hcFNpemUsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDE2
LCAxNiwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWiwgbG9nMk1heEN1YmVtYXBTaXplLCBnbC5DT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDLCAxNiwgMTYsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIGxvZzJNYXhDdWJlbWFwU2l6ZSwg
Z2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAwLCB1aW50OCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
Y29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBsb2cy
TWF4Q3ViZW1hcFNpemUsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDE2LCAxNiwgMCwg
dWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiwgbG9nMk1heEN1YmVtYXBTaXplLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCAxNiwgMTYsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJl
WzBdKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisKKworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhpbWFnZTJkX25lZ193aWR0aF9oZWlnaHQnLCAn
SW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsg
ZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRl
eHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
X0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd2lkdGggb3IgaGVpZ2h0IGlz
IGxlc3MgdGhhbiAwLicpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
VEVYVFVSRV8yRCB0YXJnZXQnKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJW
aWV3fSAqLyB2YXIgdWludDggPSBuZXcgVWludDhBcnJheSgwKTsKKyAgICAgICAgICAgIGdsLmNv
bXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMsIC0xLCAwLCAwLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgLTEsIDAs
IHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAtMSwgLTEsIDAsIHVpbnQ4KTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggdGFyZ2V0
Jyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1gsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIC0xLCAwLCAw
LCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAtMSwgMCwg
dWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgLTEsIC0xLCAwLCB1
aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCAtMSwgMCwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQywgMCwgLTEsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9F
QUMsIC0xLCAtMSwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuQ09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgLTEsIDAsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVz
c2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIGdsLkNPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMsIDAsIC0xLCAwLCB1aW50OCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5DT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDLCAtMSwgLTEsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ggdGFyZ2V0Jyk7CisgICAg
ICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1gsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIC0xLCAwLCAwLCB1aW50OCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAtMSwgMCwgdWludDgpOwor
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgLTEsIC0xLCAwLCB1aW50OCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Z
IHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAt
MSwgMCwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwg
LTEsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1ksIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIC0xLCAt
MSwgMCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWiB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgMCwgZ2wuQ09NUFJFU1NFRF9S
R0JBOF9FVEMyX0VBQywgLTEsIDAsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIGdsLkNPTVBSRVNTRURfUkdC
QThfRVRDMl9FQUMsIDAsIC0xLCAwLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4
X0VUQzJfRUFDLCAtMSwgLTEsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisK
KworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhpbWFnZTJkX21heF93aWR0aF9oZWln
aHQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVF
VEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAg
ICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJl
WzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKworICAgICAgICAgICAgdmFyIG1heFRleHR1
cmVTaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RF
WFRVUkVfU0laRSkpICsgMTsKKyAgICAgICAgICAgIHZhciBtYXhDdWJlbWFwU2l6ZSA9IC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9URVhUVVJF
X1NJWkUpKSArIDE7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd2lkdGggb3IgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiBn
bC5NQVhfVEVYVFVSRV9TSVpFLicpOworCisgICAgICAgICAgICB2YXIgbWF4U2lkZVNpemUgPSBN
YXRoLm1heChtYXhDdWJlbWFwU2l6ZSwgbWF4VGV4dHVyZVNpemUpOworICAgICAgICAgICAgdmFy
IHNjcmF0Y2hCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoCisgICAgICAgICAgICAgICAgTWF0aC5t
YXgoZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZShtYXhTaWRlU2l6
ZSwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRl
c3RzLmV0YzJFYWNEYXRhU2l6ZSgxLCBtYXhTaWRlU2l6ZSkpKTsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGdldFVpbnQ4QXJyYXlFdGMyRWFjRGF0YVNpemUodywgaCkgeworICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgVWludDhBcnJheShzY3JhdGNoQnVmZmVyLCAwLCBlczNmTmVnYXRpdmVUZXh0
dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKHcsIGgpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIGRhdGFUZXh0dXJlTWF4QnlPbmUgPSBnZXRVaW50OEFycmF5RXRjMkVhY0Rh
dGFTaXplKG1heFRleHR1cmVTaXplLCAxKTsKKyAgICAgICAgICAgIHZhciBkYXRhVGV4dHVyZU9u
ZUJ5TWF4ID0gZ2V0VWludDhBcnJheUV0YzJFYWNEYXRhU2l6ZSgxLCBtYXhUZXh0dXJlU2l6ZSk7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFXzJEIHRhcmdl
dCcpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbWF4VGV4dHVyZVNpemUsIDEsIDAsIGRh
dGFUZXh0dXJlTWF4QnlPbmUpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDEsIG1heFRleHR1cmVTaXpl
LCAwLCBkYXRhVGV4dHVyZU9uZUJ5TWF4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIHZhciBkYXRhQ3ViZW1hcE1heEJ5T25l
ID0gZ2V0VWludDhBcnJheUV0YzJFYWNEYXRhU2l6ZShtYXhDdWJlbWFwU2l6ZSwgMSk7CisgICAg
ICAgICAgICB2YXIgZGF0YUN1YmVtYXBPbmVCeU1heCA9IGdldFVpbnQ4QXJyYXlFdGMyRWFjRGF0
YVNpemUoMSwgbWF4Q3ViZW1hcFNpemUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIHRhcmdldCcpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
LCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCwg
ZGF0YUN1YmVtYXBNYXhCeU9uZSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZGF0YUN1YmVtYXBPbmVCeU1heCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZIHRhcmdldCcp
OworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9ZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBtYXhDdWJlbWFw
U2l6ZSwgMSwgMCwgZGF0YUN1YmVtYXBNYXhCeU9uZSk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleElt
YWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5DT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDLCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZGF0YUN1YmVtYXBPbmVCeU1heCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9aIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCwgZGF0YUN1YmVtYXBNYXhCeU9uZSk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZGF0YUN1YmVt
YXBPbmVCeU1heCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9YIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleElt
YWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5DT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCwgZGF0YUN1YmVtYXBNYXhCeU9uZSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAxLCBtYXhDdWJlbWFwU2l6ZSwg
MCwgZGF0YUN1YmVtYXBPbmVCeU1heCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCwgZGF0YUN1YmVt
YXBNYXhCeU9uZSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAxLCBtYXhD
dWJlbWFwU2l6ZSwgMCwgZGF0YUN1YmVtYXBPbmVCeU1heCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aIHRhcmdldCcpOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBtYXhDdWJlbWFwU2l6ZSwgMSwg
MCwgZGF0YUN1YmVtYXBNYXhCeU9uZSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZGF0YUN1YmVtYXBPbmVCeU1heCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAgICAgICAgICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0
dXJlKHRleHR1cmVbMV0pOworCisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4aW1h
Z2UyZF9pbnZhbGlkX2JvcmRlcicsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKCkg
dXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIWhhdmVD
b21wcmVzc2VkVGV4dHVyZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVy
ZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJWaWV3fSAqLyB2YXIgdWludDggPSBuZXcgVWlu
dDhBcnJheSgwKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGJvcmRlciBpcyBub3QgMC4nKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfMkQgdGFyZ2V0Jyk7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5DT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAxLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywg
MCwgMCwgLTEsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1ggdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLkNPTVBSRVNT
RURfUkdCQThfRVRDMl9FQUMsIDAsIDAsIDEsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUMsIDAsIDAsIC0xLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZIHRhcmdldCcpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Z
LCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAxLCB1aW50OCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
Z2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAw
LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAtMSwgdWludDgpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiB0YXJn
ZXQnKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwg
MSwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWiwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgLTEs
IHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1ggdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMsIDAsIDAsIDEsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRD
Ml9FQUMsIDAsIDAsIC0xLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAxLCB1aW50OCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJl
c3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5DT01Q
UkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAtMSwgdWludDgpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiB0YXJnZXQnKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWiwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgMSwgdWludDgp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWiwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgLTEsIHVpbnQ4KTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKworICAg
ICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVz
dEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNz
ZWR0ZXhpbWFnZTJkX2ludmFsaWRfc2l6ZScsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhJbWFn
ZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAo
IWhhdmVDb21wcmVzc2VkVGV4dHVyZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9
CisKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJl
OworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworCisKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBp
bWFnZVNpemUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgZm9ybWF0LCBkaW1lbnNpb25zLCBh
bmQgY29udGVudHMgb2YgdGhlIHNwZWNpZmllZCBjb21wcmVzc2VkIGltYWdlIGRhdGEuJyk7Cisg
ICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCBuZXcgVWludDhBcnJheSgxKSk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NF
RF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAwLCBuZXcgVWludDhBcnJheSg0ICogNCAqIDgpKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5DT01QUkVT
U0VEX1JHQjhfRVRDMiwgMTYsIDE2LCAwLCBuZXcgVWludDhBcnJheSg0ICogNCAqIDE2KSk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NF
RF9TSUdORURfUjExX0VBQywgMTYsIDE2LCAwLCBuZXcgVWludDhBcnJheSg0ICogNCAqIDE2KSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAg
ICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisKKworICAgICAgICB9KSk7CisK
KyAgICAgICAgLy8gZ2wuY29weVRleEltYWdlMkQKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleGltYWdlMmRfaW52YWxp
ZF90YXJnZXQnLCAnSW52YWxpZCBnbC5jb3B5VGV4SW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAg
ICAgIGZ1bmN0aW9uKCkgeworCisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJl
fSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsK
KworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlz
IGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgaW52YWxpZC4nKTsKKyAgICAgICAgICAgIGdsLmNvcHlU
ZXhJbWFnZTJEKDAsIDAsIGdsLlJHQiwgMCwgMCwgNjQsIDY0LCAwKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworCisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb3B5dGV4aW1hZ2Uy
ZF9pbnZhbGlkX2Zvcm1hdCcsICdJbnZhbGlkIGdsLmNvcHlUZXhJbWFnZTJEKCkgdXNhZ2UnLCBn
bCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVy
ZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VC
RV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0VOVU0gb3IgZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW50
ZXJuYWxmb3JtYXQgaXMgbm90IGFuIGFjY2VwdGVkIGZvcm1hdC4nKTsKKyAgICAgICAgICAgIGds
LmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDY0LCA2NCwgMCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURf
VkFMVUVdKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMCwgMTYsIDE2LCAwKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9WQUxVRV0pOworICAgICAg
ICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAw
LCAwLCAwLCAwLCAxNiwgMTYsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wu
SU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX1ZBTFVFXSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIDAsIDAsIDAsIDE2LCAx
NiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX0VOVU0sIGds
LklOVkFMSURfVkFMVUVdKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgMCwgMCwgMCwgMTYsIDE2LCAwKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9WQUxVRV0p
OworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9ZLCAwLCAwLCAwLCAwLCAxNiwgMTYsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX1ZBTFVFXSk7CisgICAgICAgICAgICBn
bC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIDAsIDAs
IDAsIDE2LCAxNiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElE
X0VOVU0sIGdsLklOVkFMSURfVkFMVUVdKTsKKworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0
dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFd
KTsKKworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleGltYWdlMmRfaW5lcXVhbF93aWR0aF9o
ZWlnaHRfY3ViZScsICdJbnZhbGlkIGdsLmNvcHlUZXhJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAg
ICAgICAgZnVuY3Rpb24oKSB7CisKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1
cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRl
eHR1cmUpOworCisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgb25lIG9mIHRoZSBzaXggY3ViZSBtYXAg
MkQgaW1hZ2UgdGFyZ2V0cyBhbmQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgcGFyYW1ldGVycyBhcmUg
bm90IGVxdWFsLicpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIDAsIDAsIDE2LCAxNywgMCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
Y29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5SR0Is
IDAsIDAsIDE2LCAxNywgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9aLCAwLCBnbC5SR0IsIDAsIDAsIDE2LCAxNywgMCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29w
eVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0IsIDAs
IDAsIDE2LCAxNywgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIDE2LCAxNywgMCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0IsIDAsIDAs
IDE2LCAxNywgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworCisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisKKworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhpbWFnZTJkX25lZ19sZXZlbCcsICdJbnZhbGlkIGdsLmNv
cHlUZXhJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9
IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBp
ZiBsZXZlbCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIC0xLCBnbC5SR0IsIDAsIDAsIDY0LCA2NCwgMCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29w
eVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAtMSwgZ2wuUkdCLCAw
LCAwLCAxNiwgMTYsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWSwgLTEsIGdsLlJHQiwgMCwgMCwgMTYsIDE2LCAwKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5
VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIC0xLCBnbC5SR0IsIDAs
IDAsIDE2LCAxNiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YLCAtMSwgZ2wuUkdCLCAwLCAwLCAxNiwgMTYsIDApOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgLTEsIGdsLlJHQiwgMCwg
MCwgMTYsIDE2LCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1osIC0xLCBnbC5SR0IsIDAsIDAsIDE2LCAxNiwgMCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmVbMV0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleGltYWdlMmRfbWF4X2xldmVs
JywgJ0ludmFsaWQgZ2wuY29weVRleEltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5j
dGlvbigpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAq
LyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAg
ICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0p
OworCisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVF
IGlzIGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4gbG9nXzIoZ2wuTUFYX1RFWFRV
UkVfU0laRSkuJyk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZzJN
YXhUZXh0dXJlU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkpKSkgKyAxOworICAgICAgICAg
ICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgbG9nMk1heFRleHR1cmVTaXplLCBn
bC5SR0IsIDAsIDAsIDY0LCA2NCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18y
KGdsLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUpLicpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBsb2cyTWF4Q3ViZW1hcFNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9n
MigvKiogQHR5cGUge251bWJlcn0gKi8oZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkUpKSkpICsgMTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgbG9nMk1heEN1YmVtYXBTaXplLCBnbC5SR0IsIDAs
IDAsIDE2LCAxNiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9ZLCBsb2cyTWF4Q3ViZW1hcFNpemUsIGdsLlJHQiwgMCwgMCwgMTYsIDE2LCAw
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1os
IGxvZzJNYXhDdWJlbWFwU2l6ZSwgZ2wuUkdCLCAwLCAwLCAxNiwgMTYsIDApOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNv
cHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgbG9nMk1heEN1YmVt
YXBTaXplLCBnbC5SR0IsIDAsIDAsIDE2LCAxNiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBsb2cyTWF4Q3ViZW1hcFNpemUsIGdsLlJH
QiwgMCwgMCwgMTYsIDE2LCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1osIGxvZzJNYXhDdWJlbWFwU2l6ZSwgZ2wuUkdCLCAwLCAwLCAxNiwg
MTYsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsK
KworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKworCisgICAgICAgIH0pKTsKKworICAg
ICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygn
Y29weXRleGltYWdlMmRfbmVnX3dpZHRoX2hlaWdodCcsICdJbnZhbGlkIGdsLmNvcHlUZXhJbWFn
ZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAg
ICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRl
eHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB3aWR0aCBv
ciBoZWlnaHQgaXMgbGVzcyB0aGFuIDAuJyk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5URVhUVVJFXzJEIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29weVRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAwLCAwLCAtMSwgMSwgMCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
Y29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAwLCAwLCAxLCAtMSwgMCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAwLCAwLCAt
MSwgLTEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgZ2wuUkdCLCAwLCAwLCAtMSwgMSwgMCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAw
LCBnbC5SR0IsIDAsIDAsIDEsIC0xLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMCwgMCwgLTEsIC0xLCAwKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kg
dGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ksIDAsIGdsLlJHQiwgMCwgMCwgLTEsIDEsIDApOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCAwLCAw
LCAxLCAtMSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIC0xLCAtMSwgMCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aIHRhcmdldCcpOworICAg
ICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9a
LCAwLCBnbC5SR0IsIDAsIDAsIC0xLCAxLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIGdsLlJHQiwgMCwgMCwgMSwgLTEsIDApOwor
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwg
Z2wuUkdCLCAwLCAwLCAtMSwgLTEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNv
cHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgZ2wuUkdCLCAw
LCAwLCAtMSwgMSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YLCAwLCBnbC5SR0IsIDAsIDAsIDEsIC0xLCAwKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLlJHQiwgMCwgMCwg
LTEsIC0xLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1kgdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAsIGdsLlJHQiwgMCwgMCwgLTEsIDEsIDAp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwg
MCwgZ2wuUkdCLCAwLCAwLCAxLCAtMSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIC0xLCAtMSwgMCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9a
IHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0IsIDAsIDAsIC0xLCAxLCAwKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5
VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQiwgMCwg
MCwgMSwgLTEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiwgMCwgZ2wuUkdCLCAwLCAwLCAtMSwgLTEsIDApOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlWzFdKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhpbWFnZTJkX21heF93aWR0aF9o
ZWlnaHQnLCAnSW52YWxpZCBnbC5jb3B5VGV4SW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAg
IGZ1bmN0aW9uKCkgeworCisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xUZXh0
dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVsw
XSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0
dXJlWzFdKTsKKworCisgICAgICAgICAgICB2YXIgbWF4VGV4dHVyZVNpemUgPSAvKiogQHR5cGUg
e251bWJlcn0gKi8oZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9URVhUVVJFX1NJWkUpKSArIDE7Cisg
ICAgICAgICAgICB2YXIgbWF4Q3ViZW1hcFNpemUgPSAvKiogQHR5cGUge251bWJlcn0gKi8oZ2wu
Z2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUpKSArIDE7CisKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRl
ZCBpZiB3aWR0aCBvciBoZWlnaHQgaXMgZ3JlYXRlciB0aGFuIGdsLk1BWF9URVhUVVJFX1NJWkUu
Jyk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFXzJEIHRh
cmdldCcpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Z2wuUkdCLCAwLCAwLCBtYXhUZXh0dXJlU2l6ZSwgMSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAwLCAwLCAxLCBtYXhUZXh0dXJlU2l6ZSwgMCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAwLCAwLCBt
YXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUsIDApOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAg
ICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwg
Z2wuUkdCLCAwLCAwLCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIDAsIDAsIG1heEN1
YmVtYXBTaXplLCAxLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMCwgMCwgbWF4Q3ViZW1hcFNpemUsIG1heEN1YmVt
YXBTaXplLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1kgdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIGdsLlJHQiwgMCwgMCwgMSwgbWF4Q3Vi
ZW1hcFNpemUsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCAwLCAwLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5S
R0IsIDAsIDAsIG1heEN1YmVtYXBTaXplLCBtYXhDdWJlbWFwU2l6ZSwgMCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aIHRhcmdldCcp
OworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aLCAwLCBnbC5SR0IsIDAsIDAsIDEsIG1heEN1YmVtYXBTaXplLCAwKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5j
b3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIGdsLlJHQiwg
MCwgMCwgbWF4Q3ViZW1hcFNpemUsIDEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCLCAwLCAwLCBtYXhDdWJlbWFwU2l6
ZSwgbWF4Q3ViZW1hcFNpemUsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvcHlU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgZ2wuUkdCLCAwLCAw
LCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0IsIDAsIDAsIG1heEN1YmVtYXBTaXplLCAx
LCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1gsIDAsIGdsLlJHQiwgMCwgMCwgbWF4Q3ViZW1hcFNpemUsIG1heEN1YmVtYXBTaXplLCAwKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1kgdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1ksIDAsIGdsLlJHQiwgMCwgMCwgMSwgbWF4Q3ViZW1hcFNpemUsIDAp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwg
MCwgZ2wuUkdCLCAwLCAwLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleElt
YWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIG1h
eEN1YmVtYXBTaXplLCBtYXhDdWJlbWFwU2l6ZSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aIHRhcmdldCcpOworICAgICAgICAg
ICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBn
bC5SR0IsIDAsIDAsIDEsIG1heEN1YmVtYXBTaXplLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2Uy
RChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQiwgMCwgMCwgbWF4Q3Vi
ZW1hcFNpemUsIDEsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWiwgMCwgZ2wuUkdCLCAwLCAwLCBtYXhDdWJlbWFwU2l6ZSwgbWF4Q3ViZW1h
cFNpemUsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAg
ICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKworCisgICAgICAgIH0pKTsKKwor
ICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFj
aygnY29weXRleGltYWdlMmRfaW52YWxpZF9ib3JkZXInLCAnSW52YWxpZCBnbC5jb3B5VGV4SW1h
Z2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworCisKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAg
ICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0
ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgYm9yZGVy
IGlzIG5vdCAwLicpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVY
VFVSRV8yRCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQiwgMCwgMCwgMCwgMCwgLTEpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgMCwgMCwgMCwgMCwgMSk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIHRhcmdldCcpOwor
ICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YLCAwLCBnbC5SR0IsIDAsIDAsIDAsIDAsIC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMCwgMCwgMCwgMCwgMSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9ZIHRhcmdldCcpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIDAsIDAsIC0xKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5j
b3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIGdsLlJHQiwg
MCwgMCwgMCwgMCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV8y
RCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCLCAwLCAwLCAwLCAwLCAtMSk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29w
eVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5SR0IsIDAs
IDAsIDAsIDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgZ2wuUkdCLCAwLCAwLCAwLCAwLCAt
MSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Y
LCAwLCBnbC5SR0IsIDAsIDAsIDAsIDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSB0YXJnZXQnKTsKKyAgICAgICAgICAgIGds
LmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuUkdC
LCAwLCAwLCAwLCAwLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIDAsIDAsIDAsIDAsIDEpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiB0YXJnZXQnKTsK
KyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWiwgMCwgZ2wuUkdCLCAwLCAwLCAwLCAwLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0IsIDAsIDAsIDAsIDAsIDEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworCisg
ICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKworCisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRl
eGltYWdlMmRfaW5jb21wbGV0ZV9mcmFtZWJ1ZmZlcicsICdJbnZhbGlkIGdsLmNvcHlUZXhJbWFn
ZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAg
ICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRl
eHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZibzsKKyAgICAgICAgICAgIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVu
dGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAg
ICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCAw
LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9G
UkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0JBOCwgMCwgMCwgMCwgMCwgMCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCQTgsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAg
ICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1os
IDAsIGdsLlJHQkE4LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29w
eVRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0JBOCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuUkdCQTgsIDAsIDAsIDAsIDAsIDAp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09Q
RVJBVElPTik7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQkE4LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworCisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAg
ICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKworCisgICAgICAgICAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlWzFdKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gZ2wuY29weVRleFN1Yklt
YWdlMkQKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNh
c2VDYWxsYmFjaygnY29weXRleHN1YmltYWdlMmRfaW52YWxpZF90YXJnZXQnLCAnSW52YWxpZCBn
bC5jb3B5VGV4U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgewor
CisgICAgICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmU7Cisg
ICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBpbnZhbGlkLicpOwor
ICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoMCwgMCwgMCwgMCwgMCwgMCwgNCwgNCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAg
ICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAg
ICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29w
eXRleHN1YmltYWdlMmRfbmVnX2xldmVsJywgJ0ludmFsaWQgZ2wuY29weVRleFN1YkltYWdlMkQo
KSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAg
IHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFd
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0
ZXh0dXJlWzFdKTsKKyAgICAgICAgICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5mb3JD
dWJlRmFjZXMoZnVuY3Rpb24oZmFjZUdMKSB7CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2Uy
RChmYWNlR0wsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGxlc3MgdGhh
biAwLicpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
LTEsIDAsIDAsIDAsIDAsIDQsIDQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHZhciBsb2NhbCA9IHRoaXM7CisgICAgICAgICAg
ICBlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZm9yQ3ViZUZhY2VzKGZ1bmN0aW9uKGZhY2VH
TCkgeworICAgICAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGZhY2VHTCwgLTEsIDAs
IDAsIDAsIDAsIDQsIDQpOworICAgICAgICAgICAgICAgIGxvY2FsLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRl
eHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVb
MV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
QXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhzdWJpbWFnZTJkX21heF9sZXZlbCcsICdJ
bnZhbGlkIGdsLmNvcHlUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFy
IHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7CisgICAgICAg
ICAgICBnbC50ZXhJbWFnZTJEIChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxNiwgMTYsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICBlczNm
TmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZm9yQ3ViZUZhY2VzKGZ1bmN0aW9uKGZhY2VHTCkgewor
ICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZmFjZUdMLCAwLCBnbC5SR0JBLCAxNiwgMTYs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdl
bmVyYXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4gbG9nXzIoZ2wuTUFYX1RFWFRVUkVfU0la
RSkgZm9yIDJEIHRleHR1cmUgdGFyZ2V0cy4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1i
ZXJ9ICovIHZhciBsb2cyTWF4VGV4dHVyZVNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9nMigvKiog
QHR5cGV7bnVtYmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkpKSkg
KyAxOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgbG9n
Mk1heFRleHR1cmVTaXplLCAwLCAwLCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVy
YXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4gbG9nXzIoZ2wuTUFYX0NVQkVfTUFQX1NJWkUp
IGZvciBjdWJlbWFwIHRhcmdldHMuJyk7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAq
LyB2YXIgbG9nMk1heEN1YmVtYXBTaXplID0gTWF0aC5mbG9vcihNYXRoLmxvZzIoLyoqIEB0eXBl
e251bWJlcn0gKi8oZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUp
KSkpICsgMTsKKyAgICAgICAgICAgIHZhciBsb2NhbCA9IHRoaXM7CisgICAgICAgICAgICBlczNm
TmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZm9yQ3ViZUZhY2VzKGZ1bmN0aW9uKGZhY2VHTCkgewor
ICAgICAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGZhY2VHTCwgbG9nMk1heEN1YmVt
YXBTaXplLCAwLCAwLCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgICAgICBsb2NhbC5leHBlY3RF
cnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAg
ICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKyAgICAgICAgfSkpOworCisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCdjb3B5dGV4c3ViaW1hZ2UyZF9uZWdfb2Zmc2V0JywgJ0ludmFsaWQgZ2wuY29weVRleFN1Yklt
YWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVy
ZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCAoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgMTYsIDE2LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFM
VUUgaXMgZ2VuZXJhdGVkIGlmIHhvZmZzZXQgPCAwIG9yIHlvZmZzZXQgPCAwLicpOworICAgICAg
ICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgLTEsIDAsIDAsIDAs
IDQsIDQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIC0x
LCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAtMSwgLTEsIDAsIDAsIDQsIDQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsK
KyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNh
c2UuQXBpQ2FzZUNhbGxiYWNrKCdjb3B5dGV4c3ViaW1hZ2UyZF9pbnZhbGlkX29mZnNldCcsICdJ
bnZhbGlkIGdsLmNvcHlUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVy
ZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGds
LnRleEltYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB4b2Zmc2V0ICsgd2lkdGgg
PiB0ZXh0dXJlX3dpZHRoIG9yIHlvZmZzZXQgKyBoZWlnaHQgPiB0ZXh0dXJlX2hlaWdodC4nKTsK
KyAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDE0LCAw
LCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAwLCAxNCwgMCwgMCwgNCwgNCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgMTQsIDE0LCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleHN1YmltYWdlMmRfbmVnX3dpZHRoX2hl
aWdodCcsICdJbnZhbGlkIGdsLmNvcHlUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2
YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwg
MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB3aWR0aCBv
ciBoZWlnaHQgaXMgbGVzcyB0aGFuIDAuJyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAtMSwgMCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29weVRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMCwgLTEpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIC0xLCAtMSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAg
ICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2Nv
cHl0ZXhzdWJpbWFnZTJkX2luY29tcGxldGVfZnJhbWVidWZmZXInLCAnSW52YWxpZCBnbC5jb3B5
VGV4U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5v
dCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtBcnJheTxX
ZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgLyoqIEB0eXBl
e1dlYkdMRnJhbWVidWZmZXJ9ICovIHZhciBmYm87CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1
cmVbMF0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCA0LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAg
ICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAs
IGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGZi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
Tk9fRVJST1IpOworCisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29weVRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29w
eVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFN
RUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04p
OworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9aLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworCisgICAgICAgICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOworCisg
ICAgICAgIH0pKTsKKworICAgICAgICAvLyBnbERlbGV0ZVRleHR1cmVzCisKKyAgICAgICAgdGVz
dEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2RlbGV0ZXRl
eHR1cmVzJywgJ2dsRGVsZXRlVGV4dHVyZXMoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJl
OworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLk5PX0VSUk9SIGlzIGdlbmVyYXRlZCBpZiB0ZXh0
dXJlIGlzIG51bGwuJyk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgZ2wuZGVs
ZXRlVGV4dHVyZShudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJS
T1IpOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9
KSk7CisKKyAgICAgICAgLy8gZ2wuZ2VuZXJhdGVNaXBtYXAKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZ2VuZXJhdGVtaXBtYXAn
LCAnSW52YWxpZCBnbC5nZW5lcmF0ZU1pcG1hcCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRj
MlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8
V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvOworICAgICAgICAgICAgdGV4dHVyZVswXSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBpcyBub3QgZ2wuVEVYVFVSRV8yRCBvciBnbC5U
RVhUVVJFX0NVQkVfTUFQLicpOworICAgICAgICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoMCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgdGhlIHRleHR1cmUgYm91bmQgdG8gdGFyZ2V0IGlzIG5vdCBjdWJlIGNvbXBsZXRlLicpOwor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVsw
XSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGds
LlRFWFRVUkVfV1JBUF9TLCBnbC5SRVBFQVQpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMCwgMCwgMCwgZ2wuUkdC
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFw
KGdsLlRFWFRVUkVfQ1VCRV9NQVApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfQ1VCRV9NQVAsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMTYsIDE2LCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIGdsLlJHQiwgMTYsIDE2LCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIGdsLlJHQiwgMTYsIDE2LCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLlJHQiwgMTYsIDE2LCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAsIGdsLlJHQiwgMTYsIDE2LCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQiwgMzIsIDMyLCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAo
Z2wuVEVYVFVSRV9DVUJFX01BUCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgemVybyBsZXZlbCBhcnJheSBp
cyBzdG9yZWQgaW4gYSBjb21wcmVzc2VkIGludGVybmFsIGZvcm1hdC4nKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMV0pOworICAgICAgICAgICAg
Z2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NFRF9S
R0JBOF9FVEMyX0VBQywgMCwgMCwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAg
Z2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgbGV2ZWwg
YmFzZSBhcnJheSB3YXMgbm90IHNwZWNpZmllZCB3aXRoIGFuIHVuc2l6ZWQgaW50ZXJuYWwgZm9y
bWF0IG9yIGEgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoYXQgaXMgYm90aCBjb2xvci1yZW5kZXJh
YmxlIGFuZCB0ZXh0dXJlLWZpbHRlcmFibGUuJyk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQjhfU05PUk0sIDAsIDAsIDAsIGdsLlJHQiwgZ2wuQllU
RSwgbnVsbCk7CisgICAgICAgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SOEksIDAsIDAsIDAs
IGdsLlJFRF9JTlRFR0VSLCBnbC5CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmdlbmVyYXRl
TWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEzMkYsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLkZMT0FULCBudWxsKTsKKyAg
ICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJl
KHRleHR1cmVbMV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gZ2wucGl4ZWxTdG9yZWkK
KworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxs
YmFjaygncGl4ZWxzdG9yZWknLCAnSW52YWxpZCBnbC5waXhlbFN0b3JlaSgpIHVzYWdlJywgZ2ws
CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgcG5hbWUgaXMgbm90IGFuIGFjY2VwdGVk
IHZhbHVlLicpOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoMCwxKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGEgbmVnYXRp
dmUgcm93IGxlbmd0aCwgcGl4ZWwgc2tpcCwgb3Igcm93IHNraXAgdmFsdWUgaXMgc3BlY2lmaWVk
LCBvciBpZiBhbGlnbm1lbnQgaXMgc3BlY2lmaWVkIGFzIG90aGVyIHRoYW4gMSwgMiwgNCwgb3Ig
OC4nKTsKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfUk9XX0xFTkdUSCwgLTEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfU0tJUF9ST1dTLCAtMSk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wucGl4
ZWxTdG9yZWkoZ2wuUEFDS19TS0lQX1BJWEVMUywgLTEpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGds
LlVOUEFDS19ST1dfTEVOR1RILCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0lN
QUdFX0hFSUdIVCwgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1Ms
IC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIC0xKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMsIC0xKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5waXhl
bFN0b3JlaShnbC5QQUNLX0FMSUdOTUVOVCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0FMSUdOTUVOVCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19BTElHTk1FTlQs
IDE2KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxNik7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgIH0p
KTsKKworICAgICAgICAvLyBnbC50ZXhJbWFnZTJECisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleGltYWdlMmQnLCAnSW52YWxp
ZCBnbC50ZXhJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAg
ICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworCisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBp
cyBpbnZhbGlkLicpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCgwLCAwLCBnbC5SR0JBLCAx
LCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdHlwZSBpcyBub3Qg
YSB0eXBlIGNvbnN0YW50LicpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCAwLCBudWxsKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgZm9ybWF0IGlz
IG5vdCBhbiBhY2NlcHRlZCBmb3JtYXQgY29uc3RhbnQuJyk7CisgICAgICAgICAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIDAsIGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VO
VU0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxV
RSBpcyBnZW5lcmF0ZWQgaWYgaW50ZXJuYWxGb3JtYXQgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0
ZWQgcmVzb2x1dGlvbiBhbmQgZm9ybWF0IHN5bWJvbGljIGNvbnN0YW50cy4nKTsKKyAgICAgICAg
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMSwgMSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBjb21iaW5hdGlvbiBvZiBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0IGFuZCB0eXBlIGlzIGludmFsaWQuJyk7CisgICAgICAgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgMSwgMSwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9TSE9SVF80XzRf
NF80LCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0I1X0ExLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzEsIG51bGwp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQjEwX0EyLCAx
LCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgbnVsbCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQTMyVUksIDEsIDEs
IDAsIGdsLlJHQkFfSU5URUdFUiwgZ2wuSU5ULCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisKKyAgICAgICAgICAgIGdsLmRlbGV0
ZVRleHR1cmUodGV4dHVyZSk7CisKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleGltYWdlMmRfaW5l
cXVhbF93aWR0aF9oZWlnaHRfY3ViZScsICdJbnZhbGlkIGdsLnRleEltYWdlMkQoKSB1c2FnZScs
IGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9N
QVAsIHRleHR1cmUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIG9uZSBvZiB0aGUgc2l4IGN1YmUg
bWFwIDJEIGltYWdlIHRhcmdldHMgYW5kIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHBhcmFtZXRlcnMg
YXJlIG5vdCBlcXVhbC4nKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIDEsIDIsIDAsIGdsLlJHQiwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1ksIDAsIGdsLlJHQiwgMSwgMiwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwg
MCwgZ2wuUkdCLCAxLCAyLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0Is
IDEsIDIsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAsIGdsLlJHQiwgMSwgMiwgMCwg
Z2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgMCwgZ2wuUkdCLCAxLCAyLCAwLCBnbC5SR0IsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUp
OworCisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0ZXhpbWFnZTJkX25lZ19sZXZlbCcsICdJbnZhbGlk
IGdsLnRleEltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9
IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworCisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBp
ZiBsZXZlbCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgLTEsIGdsLlJHQiwgMSwgMSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlz
IGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAtMSwgZ2wuUkdCLCAxLCAx
LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAtMSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5S
R0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aLCAtMSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YLCAtMSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZ
VEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZLCAtMSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAtMSwg
Z2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworCisgICAgICAgICAg
ICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlWzFdKTsKKworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4aW1hZ2UyZF9tYXhf
bGV2ZWwnLCAnSW52YWxpZCBnbC50ZXhJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVu
Y3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8V2ViR0xUZXh0dXJlPn0g
Ki8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVswXSk7Cisg
ICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFd
KTsKKworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxV
RSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9URVhU
VVJFX1NJWkUpLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIGxvZzJN
YXhUZXh0dXJlU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9ICov
KGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVEVYVFVSRV9TSVpFKSkpKSArIDE7CisgICAgICAgICAg
ICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIGxvZzJNYXhUZXh0dXJlU2l6ZSwgZ2wuUkdC
LCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlz
IGdyZWF0ZXIgdGhhbiBsb2dfMihnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKS4nKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBsb2cyTWF4Q3ViZW1hcFNpemUgPSBN
YXRoLmZsb29yKE1hdGgubG9nMigvKiogQHR5cGV7bnVtYmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIo
Z2wuTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSkpKSkgKyAxOworICAgICAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIGxvZzJNYXhDdWJlbWFwU2l6
ZSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCBsb2cyTWF4Q3Vi
ZW1hcFNpemUsIGdsLlJHQiwgMSwgMSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxs
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgbG9n
Mk1heEN1YmVtYXBTaXplLCBnbC5SR0IsIDEsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1gsIGxvZzJNYXhDdWJlbWFwU2l6ZSwgZ2wuUkdCLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lH
TkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9ZLCBsb2cyTWF4Q3ViZW1hcFNpemUsIGdsLlJHQiwgMSwgMSwgMCwgZ2wuUkdCLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWiwgbG9nMk1heEN1YmVtYXBTaXplLCBnbC5SR0IsIDEsIDEsIDAsIGds
LlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUo
dGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOwor
CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygndGV4aW1hZ2UyZF9uZWdfd2lkdGhfaGVpZ2h0JywgJ0ludmFs
aWQgZ2wudGV4SW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworCisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJl
ID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
ICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVsxXSk7CisKKworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVk
IGlmIHdpZHRoIG9yIGhlaWdodCBpcyBsZXNzIHRoYW4gMC4nKTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfMkQgdGFyZ2V0Jyk7CisgICAgICAgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgLTEsIDEsIDAsIGdsLlJHQiwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0IsIDEsIC0xLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwor
ICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAtMSwgLTEsIDAsIGds
LlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIHRhcmdldCcpOworICAgICAgICAgICAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwg
LTEsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMSwgLTEsIDAs
IGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgLTEsIC0xLCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5SR0IsIC0xLCAx
LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5SR0IsIDEsIC0xLCAwLCBnbC5S
R0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBnbC5SR0IsIC0xLCAtMSwgMCwgZ2wuUkdCLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCLCAtMSwgMSwgMCwg
Z2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCLCAxLCAtMSwgMCwgZ2wuUkdCLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWiwgMCwgZ2wuUkdCLCAtMSwgLTEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9YIHRhcmdldCcpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLlJHQiwgLTEsIDEsIDAsIGdsLlJH
QiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIGdsLlJHQiwgMSwgLTEsIDAsIGdsLlJHQiwgZ2wuVU5T
SUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1gsIDAsIGdsLlJHQiwgLTEsIC0xLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZ
VEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWSB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIC0xLCAxLCAwLCBnbC5SR0IsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZLCAwLCBnbC5SR0IsIDEsIC0xLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9ZLCAwLCBnbC5SR0IsIC0xLCAtMSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1ogdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWiwgMCwgZ2wuUkdCLCAtMSwgMSwgMCwgZ2wuUkdCLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiwgMCwgZ2wuUkdCLCAxLCAtMSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WiwgMCwgZ2wuUkdCLCAtMSwgLTEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAg
ICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOworCisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRl
c3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0ZXhpbWFn
ZTJkX21heF93aWR0aF9oZWlnaHQnLCAnSW52YWxpZCBnbC50ZXhJbWFnZTJEKCkgdXNhZ2UnLCBn
bCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVb
MF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCB0ZXh0dXJlWzFdKTsKKworCisgICAgICAgICAgICB2YXIgbWF4VGV4dHVyZVNpemUgPSAv
KiogQHR5cGV7bnVtYmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkp
ICsgMTsKKyAgICAgICAgICAgIHZhciBtYXhDdWJlbWFwU2l6ZSA9IC8qKiBAdHlwZXtudW1iZXJ9
ICovKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKSkgKyAxOwor
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBn
ZW5lcmF0ZWQgaWYgd2lkdGggb3IgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiBnbC5NQVhfVEVYVFVS
RV9TSVpFLicpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0IsIG1heFRleHR1cmVTaXplLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAxLCBtYXhU
ZXh0dXJlU2l6ZSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgbWF4VGV4dHVyZVNpemUsIG1heFRl
eHR1cmVTaXplLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHdpZHRo
IG9yIGhlaWdodCBpcyBncmVhdGVyIHRoYW4gZ2wuTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRS4n
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIG1heEN1YmVtYXBTaXplLCAxLCAw
LCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIDEsIG1heEN1YmVtYXBTaXpl
LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBnbC5SR0IsIG1heEN1YmVtYXBTaXpl
LCBtYXhDdWJlbWFwU2l6ZSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kg
dGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCBtYXhDdWJlbWFwU2l6ZSwgMSwgMCwgZ2wuUkdCLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCAxLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZ2wuUkdCLCBn
bC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCBtYXhDdWJlbWFwU2l6ZSwgbWF4Q3ViZW1hcFNp
emUsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aIHRhcmdldCcpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAs
IGdsLlJHQiwgbWF4Q3ViZW1hcFNpemUsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1os
IDAsIGdsLlJHQiwgMSwgbWF4Q3ViZW1hcFNpemUsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllU
RSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1osIDAsIGdsLlJHQiwgbWF4Q3ViZW1hcFNpemUsIG1heEN1YmVtYXBTaXplLCAwLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCB0YXJnZXQnKTsKKyAgICAgICAgICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0IsIG1heEN1
YmVtYXBTaXplLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0IsIDEs
IG1heEN1YmVtYXBTaXplLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBnbC5SR0Is
IG1heEN1YmVtYXBTaXplLCBtYXhDdWJlbWFwU2l6ZSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1kgdGFyZ2V0Jyk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuUkdCLCBtYXhDdWJlbWFwU2l6ZSwgMSwg
MCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuUkdCLCAxLCBtYXhDdWJlbWFwU2l6
ZSwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgZ2wuUkdCLCBtYXhDdWJlbWFwU2l6
ZSwgbWF4Q3ViZW1hcFNpemUsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9a
IHRhcmdldCcpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1osIDAsIGdsLlJHQiwgbWF4Q3ViZW1hcFNpemUsIDEsIDAsIGdsLlJHQiwgZ2wu
VU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQiwgMSwgbWF4Q3ViZW1hcFNpemUsIDAsIGdsLlJHQiwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1osIDAsIGdsLlJHQiwgbWF4Q3ViZW1hcFNpemUsIG1heEN1YmVtYXBT
aXplLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlWzFdKTsKKworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4aW1hZ2UyZF9pbnZhbGlkX2JvcmRl
cicsICdJbnZhbGlkIGdsLnRleEltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlv
bigpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2
YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOwor
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlz
IGdlbmVyYXRlZCBpZiBib3JkZXIgaXMgbm90IDAuJyk7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgMSwgMSwgMSwgZ2wuUkdCLCBnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QiwgMSwgMSwgLTEsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIGdsLlJHQiwgMSwgMSwg
MSwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgZ2wuUkdCLCAxLCAxLCAxLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9aLCAwLCBnbC5SR0IsIDEsIDEsIDEsIGdsLlJHQiwgZ2wuVU5TSUdO
RURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1gsIDAsIGdsLlJHQiwgMSwgMSwgMSwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwg
MCwgZ2wuUkdCLCAxLCAxLCAxLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBnbC5SR0Is
IDEsIDEsIDEsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmVbMV0pOworCisgICAgICAgIH0pKTsKKworICAgICAgICAvLyBnbC50ZXhTdWJJbWFnZTJE
CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2Fs
bGJhY2soJ3RleHN1YmltYWdlMmQnLCAnSW52YWxpZCBnbC50ZXhTdWJJbWFnZTJEKCkgdXNhZ2Un
LCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xU
ZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0
dXJlKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgMzIsIDMyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAvKiogQHR5
cGUge0FycmF5QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoNjQpOwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5l
cmF0ZWQgaWYgdGFyZ2V0IGlzIGludmFsaWQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFn
ZTJEKDAsIDAsIDAsIDAsIDQsIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQg
aWYgZm9ybWF0IGlzIG5vdCBhbiBhY2NlcHRlZCBmb3JtYXQgY29uc3RhbnQuJyk7CisgICAgICAg
ICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDQsIDQsIGds
LlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdHlwZSBpcyBub3QgYSB0eXBlIGNvbnN0YW50Licp
OworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCA0
LCA0LCBnbC5SR0IsIDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY29tYmluYXRpb24gb2YgaW50ZXJu
YWxGb3JtYXQgb2YgdGhlIHByZXZpb3VzbHkgc3BlY2lmaWVkIHRleHR1cmUgYXJyYXksIGZvcm1h
dCBhbmQgdHlwZSBpcyBub3QgdmFsaWQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDQsIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX1NIT1JU
XzVfNl81LCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgMCwgMCwgNCwgNCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80LCB1aW50OCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwg
Z2wuUkdCLCBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xLCB1aW50OCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLnRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwgZ2wuUkdCLCBnbC5VTlNJ
R05FRF9TSE9SVF81XzVfNV8xLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9J
TlQsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCA0LCA0LCBnbC5SR0IsIGdsLkZMT0FULCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRD
aGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0ZXhzdWJpbWFnZTJkX25lZ19s
ZXZlbCcsICdJbnZhbGlkIGdsLnRleFN1YkltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtBcnJheTxXZWJHTFRleHR1cmU+fSAq
LyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAzMiwgMzIs
IDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKyAgICAgICAgICAgIGVz
M2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5mb3JDdWJlRmFjZXMoZnVuY3Rpb24oZmFjZUdMKSB7
CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChmYWNlR0wsIDAsIGdsLlJHQiwgMzIsIDMy
LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheUJ1ZmZlclZpZXd9ICovIHZhciB1aW50OCA9IG5ldyBVaW50OEFycmF5
KDQpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGxlc3MgdGhhbiAwLicpOworICAgICAgICAgICAgZ2wu
dGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAtMSwgMCwgMCwgMCwgMCwgZ2wuUkdCLCBnbC5V
TlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgbGVzcyB0aGFuIDAuJyk7CisgICAg
ICAgICAgICB2YXIgbG9jYWwgPSB0aGlzOworICAgICAgICAgICAgZXMzZk5lZ2F0aXZlVGV4dHVy
ZUFwaVRlc3RzLmZvckN1YmVGYWNlcyhmdW5jdGlvbihmYWNlR0wpIHsKKyAgICAgICAgICAgICAg
ICBnbC50ZXhTdWJJbWFnZTJEKGZhY2VHTCwgLTEsIDAsIDAsIDAsIDAsIGdsLlJHQiwgZ2wuVU5T
SUdORURfQllURSwgdWludDgpOworICAgICAgICAgICAgICAgIGxvY2FsLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0
ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmVbMV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleHN1YmltYWdlMmRfbWF4X2xldmVsJywgJ0lu
dmFsaWQgZ2wudGV4U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0
dXJlID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAg
IGdsLnRleEltYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgMzIsIDMyLCAwLCBnbC5S
R0IsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUg
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMV0pOworICAgICAgICAgICAgZXMzZk5lZ2F0
aXZlVGV4dHVyZUFwaVRlc3RzLmZvckN1YmVGYWNlcyhmdW5jdGlvbihmYWNlR0wpIHsKKyAgICAg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGZhY2VHTCwgMCwgZ2wuUkdCLCAzMiwgMzIsIDAsIGds
LlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoNCk7
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBn
ZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9URVhUVVJFX1NJ
WkUpLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIGxvZzJNYXhUZXh0
dXJlU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9ICovKGdsLmdl
dFBhcmFtZXRlcihnbC5NQVhfVEVYVFVSRV9TSVpFKSkpKSArIDE7CisgICAgICAgICAgICBnbC50
ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIGxvZzJNYXhUZXh0dXJlU2l6ZSwgMCwgMCwgMCwg
MCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworCisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5l
cmF0ZWQgaWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9DVUJFX01BUF9URVhU
VVJFX1NJWkUpLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIGxvZzJN
YXhDdWJlbWFwU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9ICov
KGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKSkpKSArIDE7Cisg
ICAgICAgICAgICB2YXIgbG9jYWwgPSB0aGlzOworICAgICAgICAgICAgZXMzZk5lZ2F0aXZlVGV4
dHVyZUFwaVRlc3RzLmZvckN1YmVGYWNlcyhmdW5jdGlvbihmYWNlR0wpIHsKKyAgICAgICAgICAg
ICAgICBnbC50ZXhTdWJJbWFnZTJEKGZhY2VHTCwgbG9nMk1heEN1YmVtYXBTaXplLCAwLCAwLCAw
LCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgICAgICBs
b2NhbC5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05d
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCd0ZXhzdWJpbWFnZTJkX25lZ19vZmZzZXQnLCAnSW52YWxpZCBnbC50ZXhT
dWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRl
eHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCLCAzMiwgMzIsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlclZpZXd9ICovIHZhciB1aW50OCA9IG5ldyBV
aW50OEFycmF5KDQpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHhvZmZzZXQgb3IgeW9mZnNldCBhcmUgbmVnYXRpdmUu
Jyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIC0xLCAw
LCAwLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIC0xLCAwLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVE
X0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIC0x
LCAtMSwgMCwgMCwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5k
ZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleHN1YmltYWdlMmRf
aW52YWxpZF9vZmZzZXQnLCAnSW52YWxpZCBnbC50ZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwK
KyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJl
fSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsK
KyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMzIs
IDMyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoNjQpOworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVk
IGlmIHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1cmVfd2lkdGggb3IgeW9mZnNldCArIGhlaWdodCA+
IHRleHR1cmVfaGVpZ2h0LicpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAzMCwgMCwgNCwgNCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMzAsIDQsIDQsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDMwLCAzMCwgNCwgNCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
dWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsK
KworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgfSkpOwor
CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxi
YWNrKCd0ZXhzdWJpbWFnZTJkX25lZ193aWR0aF9oZWlnaHQnLCAnSW52YWxpZCBnbC50ZXhTdWJJ
bWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAv
KiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuUkdCQSwgMzIsIDMyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVp
bnQ4QXJyYXkoNCk7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd2lkdGggb3IgaGVpZ2h0IGlzIGxlc3MgdGhhbiAwLicp
OworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAt
MSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgLTEsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAs
IDAsIC0xLCAtMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIGdsLnRl
eFBhcmFtZXRlcmkKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNl
LkFwaUNhc2VDYWxsYmFjaygndGV4cGFyYW1ldGVyaScsICdJbnZhbGlkIGdsLnRleFBhcmFtZXRl
cmkoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBv
ciBwbmFtZSBpcyBub3Qgb25lIG9mIHRoZSBhY2NlcHRlZCBkZWZpbmVkIHZhbHVlcy4nKTsKKyAg
ICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoMCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5M
SU5FQVIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBn
bC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCAwLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihb
Z2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaSgwLCAwLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBp
ZiBwYXJhbXMgc2hvdWxkIGhhdmUgYSBkZWZpbmVkIHN5bWJvbGljIGNvbnN0YW50IHZhbHVlIChi
YXNlZCBvbiB0aGUgdmFsdWUgb2YgcG5hbWUpIGFuZCBkb2VzIG5vdC4nKTsKKyAgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCAw
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5W
QUxJRF9PUEVSQVRJT05dKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5SRVBFQVQpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOwor
ICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfUywgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX0VOVU0s
IGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05d
KTsKKworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmU7
CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdl
dCBvciBwbmFtZSBpcyBub3Qgb25lIG9mIHRoZSBhY2NlcHRlZCBkZWZpbmVkIHZhbHVlcy4nKTsK
KyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoMCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5MSU5FQVIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0p
OworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCAwLCBnbC5MSU5F
QVIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAg
ICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSgwLCAwLCBnbC5MSU5FQVIpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBwYXJhbXMgc2hv
dWxkIGhhdmUgYSBkZWZpbmVkIHN5bWJvbGljIGNvbnN0YW50IHZhbHVlIChiYXNlZCBvbiB0aGUg
dmFsdWUgb2YgcG5hbWUpIGFuZCBkb2VzIG5vdC4nKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCAwKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5SRVBF
QVQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAg
ICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
UywgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9ULCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9FTlVNKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIC8vIGdsLnRleFBhcmFtZXRlcmYKKworICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4cGFyYW1ldGVy
ZicsICdJbnZhbGlkIGdsLnRleFBhcmFtZXRlcmYoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VO
VU0gaXMgZ2VuZXJhdGVkIGlmIHRhcmdldCBvciBwbmFtZSBpcyBub3Qgb25lIG9mIHRoZSBhY2Nl
cHRlZCBkZWZpbmVkIHZhbHVlcy4nKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmYoMCwg
Z2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAg
ICAgICAgZ2wudGV4UGFyYW1ldGVyZihnbC5URVhUVVJFXzJELCAwLCBnbC5MSU5FQVIpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX09Q
RVJBVElPTl0pOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyZigwLCAwLCBnbC5MSU5FQVIp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZB
TElEX09QRVJBVElPTl0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBwYXJhbXMgc2hvdWxkIGhhdmUgYSBkZWZpbmVk
IHN5bWJvbGljIGNvbnN0YW50IHZhbHVlIChiYXNlZCBvbiB0aGUgdmFsdWUgb2YgcG5hbWUpIGFu
ZCBkb2VzIG5vdC4nKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmYoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKyAgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmYoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5SRVBFQVQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9FTlVN
LCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyZihn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgMCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisgICAg
ICAgICAgICBnbC50ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
LCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURf
RU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKworICAgICAgICAgICAgLyoqIEB0eXBleyBX
ZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgb3IgcG5hbWUgaXMgbm90IG9uZSBvZiB0aGUg
YWNjZXB0ZWQgZGVmaW5lZCB2YWx1ZXMuJyk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJm
KDAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRl
cmYoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmYoMCwg
MCwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9F
TlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5V
TSBpcyBnZW5lcmF0ZWQgaWYgcGFyYW1zIHNob3VsZCBoYXZlIGEgZGVmaW5lZCBzeW1ib2xpYyBj
b25zdGFudCB2YWx1ZSAoYmFzZWQgb24gdGhlIHZhbHVlIG9mIHBuYW1lKSBhbmQgZG9lcyBub3Qu
Jyk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuUkVQRUFUKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmYoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIDApOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyZihn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuTkVBUkVTVCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICAvLyBnbC5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRAorCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4c3ViaW1hZ2UyZCcsICdJbnZh
bGlkIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIWhhdmVDb21wcmVzc2VkVGV4dHVyZUVUQykgeyBl
dGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJH
TFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzJELCB0
ZXh0dXJlKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
RU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIGludmFsaWQuJyk7CisgICAgICAgICAgICBn
bC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgwLCAwLCAwLCAwLCAwLCAwLCBnbC5DT01QUkVTU0VE
X1JHQjhfRVRDMiwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRCAoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTgs
IDE4LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVh
Y0RhdGFTaXplKDE4LCAxOCkpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5P
X0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGhlIGludGVy
bmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpbWFnZSBiZWluZyBtb2RpZmllZC4nKTsKKyAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAs
IDAsIDAsIGdsLkNPTVBSRVNTRURfUkdCOF9FVEMyLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZvciBFVEMyL0VBQyBpbWFnZXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHdpZHRoIGlzIG5vdCBhIG11bHRpcGxlIG9mIGZv
dXIsIGFuZCB3aWR0aCArIHhvZmZzZXQgaXMgbm90IGVxdWFsIHRvIHRoZSB3aWR0aCBvZiB0aGUg
dGV4dHVyZSBsZXZlbC4nKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDQsIDAsIDEwLCA0LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0Rh
dGFTaXplKDEwLCA0KSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGb3IgRVRD
Mi9FQUMgaW1hZ2VzIGdsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBoZWlnaHQg
aXMgbm90IGEgbXVsdGlwbGUgb2YgZm91ciwgYW5kIGhlaWdodCArIHlvZmZzZXQgaXMgbm90IGVx
dWFsIHRvIHRoZSBoZWlnaHQgb2YgdGhlIHRleHR1cmUgbGV2ZWwuJyk7CisgICAgICAgICAgICBn
bC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCA0LCA0LCAxMCwg
Z2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0aXZl
VGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSg0LCAxMCkpKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnRm9yIEVUQzIvRUFDIGltYWdlcyBnbC5JTlZBTElEX09QRVJBVElP
TiBpcyBnZW5lcmF0ZWQgaWYgeG9mZnNldCBvciB5b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9m
IGZvdXIuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAwLCAxLCA0LCA0LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcg
VWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDQs
IDQpKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDEsIDAsIDQsIDQsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFy
cmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoNCwgNCkpKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwg
MSwgNCwgNCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoZXMz
Zk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSg0LCA0KSkpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJl
c3NlZHRleHN1YmltYWdlMmRfbmVnX2xldmVsJywgJ0ludmFsaWQgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICghaGF2ZUNvbXByZXNzZWRUZXh0dXJlRVRDKSB7IGV0YzJVbnN1cHBvcnRlZCgpOyByZXR1
cm47IH0KKworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZh
ciB0ZXh0dXJlID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVbMF0pOworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkNPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMsIDE4LCAxOCwgMCwgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0
aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSgxOCwgMTgpKSk7CisgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlWzFdKTsKKyAgICAg
ICAgICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5mb3JDdWJlRmFjZXMoZnVuY3Rpb24o
ZmFjZUdMKSB7CisgICAgICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZmFjZUdM
LCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAxOCwgMTgsIDAsIG5ldyBVaW50OEFy
cmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoMTgsIDE4KSkp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9f
RVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9W
QUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgbGVzcyB0aGFuIDAuJyk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAtMSwgMCwgMCwgMCwg
MCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlm
IGxldmVsIGlzIGxlc3MgdGhhbiAwLicpOworICAgICAgICAgICAgdmFyIGxvY2FsID0gdGhpczsK
KyAgICAgICAgICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5mb3JDdWJlRmFjZXMoZnVu
Y3Rpb24oZmFjZUdMKSB7CisgICAgICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoZmFjZUdMLCAtMSwgMCwgMCwgMCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywg
bmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgICAgIGxvY2FsLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0
ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmVbMV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhzdWJpbWFnZTJkX21heF9s
ZXZlbCcsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnLCBnbCwK
KyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIWhhdmVDb21wcmVzc2VkVGV4
dHVyZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKyAgICAgICAgICAgIC8q
KiBAdHlwZXtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAg
ICAgICAgdGV4dHVyZVswXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1
cmVbMV0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEIChnbC5URVhUVVJFXzJELCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAx
OCwgMTgsIDAsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMy
RWFjRGF0YVNpemUoMTgsIDE4KSkpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV9DVUJFX01BUCwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICBlczNmTmVnYXRpdmVUZXh0
dXJlQXBpVGVzdHMuZm9yQ3ViZUZhY2VzKGZ1bmN0aW9uKGZhY2VHTCkgeworICAgICAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGZhY2VHTCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQywgMTgsIDE4LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJl
QXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDE4LCAxOCkpKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxl
dmVsIGlzIGdyZWF0ZXIgdGhhbiBsb2dfMihnbC5NQVhfVEVYVFVSRV9TSVpFKS4nKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBsb2cyTWF4VGV4dHVyZVNpemUgPSBNYXRo
LmZsb29yKE1hdGgubG9nMigvKiogQHR5cGV7bnVtYmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIoZ2wu
TUFYX1RFWFRVUkVfU0laRSkpKSkgKyAxOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgbG9nMk1heFRleHR1cmVTaXplLCAwLCAwLCAwLCAwLCBn
bC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJB
VElPTl0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9W
QUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkUpLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0g
Ki8gdmFyIGxvZzJNYXhDdWJlbWFwU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlw
ZXtudW1iZXJ9ICovKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpF
KSkpKSArIDE7CisgICAgICAgICAgICB2YXIgbG9jYWwgPSB0aGlzOworICAgICAgICAgICAgZXMz
Zk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmZvckN1YmVGYWNlcyhmdW5jdGlvbihmYWNlR0wpIHsK
KyAgICAgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChmYWNlR0wsIGxvZzJN
YXhDdWJlbWFwU2l6ZSwgMCwgMCwgMCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywg
bmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgICAgIGxvY2FsLmV4cGVjdEVycm9yKFtn
bC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAg
ICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAg
dGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXBy
ZXNzZWR0ZXhzdWJpbWFnZTJkX25lZ19vZmZzZXQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJl
dHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7IFdlYkdMVGV4dHVyZX0gKi8gdmFyIHRl
eHR1cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5DT01QUkVTU0VE
X1JHQkE4X0VUQzJfRUFDLCA4LCA4LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0
dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDgsIDgpKSk7CisKKyAgICAgICAgICAgIC8vIFxu
b3RlIEJvdGggZ2wuSU5WQUxJRF9WQUxVRSBhbmQgZ2wuSU5WQUxJRF9PUEVSQVRJT04gYXJlIHZh
bGlkIGhlcmUgc2luY2UgaW1wbGVtZW50YXRpb24gbWF5CisgICAgICAgICAgICAvLyAgICAgICAg
IGZpcnN0IGNoZWNrIGlmIG9mZnNldHMgYXJlIHZhbGlkIGZvciBjZXJ0YWluIGZvcm1hdCBhbmQg
b25seSBhZnRlciB0aGF0IGNoZWNrIHRoYXQgdGhleQorICAgICAgICAgICAgLy8gICAgICAgICBh
cmUgbm90IG5lZ2F0aXZlLgorICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfVkFMVUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHhvZmZz
ZXQgb3IgeW9mZnNldCBhcmUgbmVnYXRpdmUuJyk7CisKKyAgICAgICAgICAgIGdsLmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIC00LCAwLCAwLCAwLCBnbC5DT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOwor
ICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
MCwgLTQsIDAsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5
KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGds
LklOVkFMSURfT1BFUkFUSU9OXSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAtNCwgLTQsIDAsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJl
c3NlZHRleHN1YmltYWdlMmRfaW52YWxpZF9vZmZzZXQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7
IHJldHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIg
dGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCAoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJF
U1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRp
dmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDE2LCAxNikpKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGlmIHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1cmVfd2lkdGggb3IgeW9mZnNldCAr
IGhlaWdodCA+IHRleHR1cmVfaGVpZ2h0LicpOworCisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAxMiwgMCwgOCwgNCwgZ2wuQ09NUFJFU1NF
RF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRl
c3RzLmV0YzJFYWNEYXRhU2l6ZSg4LCA0KSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKyAgICAgICAgICAg
IGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDEyLCA0LCA4
LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRp
dmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDQsIDgpKSk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0p
OworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgMTIsIDEyLCA4LCA4LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcgVWludDhB
cnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDgsIDgpKSk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZB
TElEX09QRVJBVElPTl0pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUp
OworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhzdWJpbWFnZTJkX25lZ193aWR0aF9o
ZWlnaHQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgpIHVzYWdlJywgZ2ws
CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRl
eHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICAv
KiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wu
VEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RCAoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2
LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0Rh
dGFTaXplKDE2LCAxNikpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VS
Uk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFM
VUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHdpZHRoIG9yIGhlaWdo
dCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIC00LCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAg
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgLTQs
IGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BF
UkFUSU9OXSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAwLCAwLCAtNCwgLTQsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5l
dyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFM
SURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0
ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJlc3NlZHRleHN1Ymlt
YWdlMmRfaW52YWxpZF9zaXplJywgJ0ludmFsaWQgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoKSB1
c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghaGF2ZUNv
bXByZXNzZWRUZXh0dXJlRVRDKSB7IGV0YzJVbnN1cHBvcnRlZCgpOyByZXR1cm47IH0KKworICAg
ICAgICAgICAgLyoqIEB0eXBle1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmU7CisgICAgICAg
ICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRl
eHR1cmUgKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9F
QUMsIDE2LCAxNiwgMCwgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3Rz
LmV0YzJFYWNEYXRhU2l6ZSgxNiwgMTYpKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
IChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5J
TlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbWFnZVNpemUgaXMgbm90IGNvbnNpc3RlbnQg
d2l0aCB0aGUgZm9ybWF0LCBkaW1lbnNpb25zLCBhbmQgY29udGVudHMgb2YgdGhlIHNwZWNpZmll
ZCBjb21wcmVzc2VkIGltYWdlIGRhdGEuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCBnbC5DT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDLCBuZXcgVWludDhBcnJheSgxKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxNiwgMTYsIGdsLkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KDQqNCoxNi0xKSk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gZ2wudGV4SW1h
Z2UzRAorCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZUNhbGxiYWNrKCd0ZXhpbWFnZTNkJywgJ0ludmFsaWQgZ2wudGV4SW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PFdl
YkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBd
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzJELCB0
ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0
ZXh0dXJlWzFdKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlzIGludmFsaWQuJyk7CisgICAgICAgICAg
ICBnbC50ZXhJbWFnZTNEKDAsIDAsIGdsLlJHQkEsIDEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX0VOVU0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCAxLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYg
dHlwZSBpcyBub3QgYSB0eXBlIGNvbnN0YW50LicpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2Uz
RChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBLCAxLCAxLCAxLCAwLCBnbC5SR0JBLCAwLCBudWxs
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAg
ICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0
ZWQgaWYgZm9ybWF0IGlzIG5vdCBhbiBhY2NlcHRlZCBmb3JtYXQgY29uc3RhbnQuJyk7CisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDEsIDEsIDEs
IDAsIDAsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW50ZXJuYWxGb3JtYXQgaXMgbm90
IG9uZSBvZiB0aGUgYWNjZXB0ZWQgcmVzb2x1dGlvbiBhbmQgZm9ybWF0IHN5bWJvbGljIGNvbnN0
YW50cy4nKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwg
MSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRh
cmdldCBpcyBnbC5URVhUVVJFXzNEIGFuZCBmb3JtYXQgaXMgZ2wuREVQVEhfQ09NUE9ORU5ULCBv
ciBnbC5ERVBUSF9TVEVOQ0lMLicpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhU
VVJFXzNELCAwLCBnbC5SR0JBLCAxLCAxLCAxLCAwLCBnbC5ERVBUSF9TVEVOQ0lMLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAw
LCBnbC5SR0JBLCAxLCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0JZ
VEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJB
VElPTik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09Q
RVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGNvbWJpbmF0aW9uIG9mIGludGVybmFsRm9ybWF0
LCBmb3JtYXQgYW5kIHR5cGUgaXMgaW52YWxpZC4nKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCLCAxLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAw
LCBnbC5SR0JBLCAxLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQs
IG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQjVf
QTEsIDEsIDEsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgbnVsbCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCMTBfQTIsIDEs
IDEsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBudWxsKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JBMzJVSSwgMSwg
MSwgMSwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5JTlQsIG51bGwpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmVbMV0pOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleGltYWdlM2RfbmVnX2xldmVsJywgJ0lu
dmFsaWQgZ2wudGV4SW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgLy8gTk9URTogdGhpcyBtZXRob2QgaGFuZ3MgdGhlIGJyb3dzZXIgaWYgdGhl
IHRleHR1cmVzIGFyZSBiaW5kZWQuCisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8V2ViR0xU
ZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1
cmVbMF0pOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVks
IHRleHR1cmVbMV0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgbGVzcyB0aGFuIDAuJyk7CisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIC0xLCBnbC5SR0IsIDEsIDEsIDEs
IDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChn
bC5URVhUVVJFXzJEX0FSUkFZLCAtMSwgZ2wuUkdCLCAxLCAxLCAxLCAwLCBnbC5SR0IsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsK
KyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisKKyAgICAgICAgfSkp
OworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNh
bGxiYWNrKCd0ZXhpbWFnZTNkX21heF9sZXZlbCcsICdJbnZhbGlkIGdsLnRleEltYWdlM0QoKSB1
c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBl
e0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0gW107CisgICAgICAgICAgICB0
ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzNELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzJEX0FSUkFZLCB0ZXh0dXJlWzFdKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGdyZWF0ZXIg
dGhhbiBsb2dfMihnbC5NQVhfM0RfVEVYVFVSRV9TSVpFKS4nKTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZXtudW1iZXJ9ICovIHZhciBsb2cyTWF4M0RUZXh0dXJlU2l6ZSA9IE1hdGguZmxvb3IoTWF0
aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYXzNEX1RF
WFRVUkVfU0laRSkpKSkgKyAxOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJF
XzNELCBsb2cyTWF4M0RUZXh0dXJlU2l6ZSwgZ2wuUkdCLCAxLCAxLCAxLCAwLCBnbC5SR0IsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBsb2dfMihn
bC5NQVhfVEVYVFVSRV9TSVpFKS4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICov
IHZhciBsb2cyTWF4VGV4dHVyZVNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9nMigvKiogQHR5cGV7
bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9URVhUVVJFX1NJWkUpKSkpICsgMTsK
KyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgbG9nMk1heFRl
eHR1cmVTaXplLCBnbC5SR0IsIDEsIDEsIDEsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwg
bnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAg
dGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleGlt
YWdlM2RfbmVnX3dpZHRoX2hlaWdodF9kZXB0aCcsICdJbnZhbGlkIGdsLnRleEltYWdlM0QoKSB1
c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBl
e0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0gW107CisgICAgICAgICAgICB0
ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzNELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzJEX0FSUkFZLCB0ZXh0dXJlWzFdKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHdpZHRoIG9yIGhlaWdodCBp
cyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8z
RCwgMCwgZ2wuUkdCQSwgLTEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgMSwgLTEs
IDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgMSwgMSwgLTEsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwg
Z2wuUkdCQSwgLTEsIC0xLCAtMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIC0x
LCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJ
bWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIDEsIC0xLCAxLCAwLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRV
UkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIDEsIDEsIC0xLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAs
IGdsLlJHQkEsIC0xLCAtMSwgLTEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAg
ICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4aW1hZ2UzZF9t
YXhfd2lkdGhfaGVpZ2h0X2RlcHRoJywgJ0ludmFsaWQgZ2wudGV4SW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8
V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVb
MF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0Qs
IHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRf
QVJSQVksIHRleHR1cmVbMV0pOworCisgICAgICAgICAgICB2YXIgbWF4M0RUZXh0dXJlU2l6ZSA9
IC8qKiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYXzNEX1RFWFRVUkVf
U0laRSkpICsgMTsKKyAgICAgICAgICAgIHZhciBtYXhUZXh0dXJlU2l6ZSA9IC8qKiBAdHlwZXtu
dW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkpICsgMTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2Vu
ZXJhdGVkIGlmIHdpZHRoLCBoZWlnaHQgb3IgZGVwdGggaXMgZ3JlYXRlciB0aGFuIGdsLk1BWF8z
RF9URVhUVVJFX1NJWkUuJyk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVf
M0QsIDAsIGdsLlJHQkEsIG1heDNEVGV4dHVyZVNpemUsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwg
Z2wuUkdCQSwgMSwgbWF4M0RUZXh0dXJlU2l6ZSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCBnbC5SR0JB
LCAxLCAxLCBtYXgzRFRleHR1cmVTaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBu
dWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIG1heDNE
VGV4dHVyZVNpemUsIG1heDNEVGV4dHVyZVNpemUsIG1heDNEVGV4dHVyZVNpemUsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHdpZHRoLCBoZWlnaHQgb3IgZGVwdGgg
aXMgZ3JlYXRlciB0aGFuIGdsLk1BWF9URVhUVVJFX1NJWkUuJyk7CisgICAgICAgICAgICBnbC50
ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIG1heFRleHR1cmVTaXpl
LCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJ
bWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIDEsIG1heFRleHR1cmVTaXpl
LCAxLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIDEsIDEsIG1heFRleHR1cmVTaXpl
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNE
KGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLlJHQkEsIG1heFRleHR1cmVTaXplLCBtYXhUZXh0
dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51
bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKwor
ICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4aW1hZ2Uz
ZF9pbnZhbGlkX2JvcmRlcicsICdJbnZhbGlkIGdsLnRleEltYWdlM0QoKSB1c2FnZScsIGdsLAor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtBcnJheTxXZWJHTFRl
eHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAgICAgICAgICAgdGV4dHVyZVswXSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmVbMV0gPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8zRCwgdGV4dHVy
ZVswXSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwg
dGV4dHVyZVsxXSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBib3JkZXIgaXMgbm90IDAgb3IgMS4nKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCLCAxLCAxLCAxLCAt
MSwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIGdsLlJHQiwgMSwgMSwgMSwgMiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGds
LlJHQiwgMSwgMSwgMSwgLTEsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
Z2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5SR0IsIDEsIDEsIDEsIDIs
IGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJl
KHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsK
KyAgICAgICAgfSkpOworCisgICAgICAgIC8vIGdsLnRleFN1YkltYWdlM0QKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4c3Vi
aW1hZ2UzZCcsICdJbnZhbGlkIGdsLnRleFN1YkltYWdlM0QoKSB1c2FnZScsIGdsLAorICAgICAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZh
ciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0dXJlKTsKKyAgICAg
ICAgICAgIGdsLnRleEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDQsIDQsIDQs
IDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlm
IHRhcmdldCBpcyBpbnZhbGlkLicpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRCgwLCAw
LCAwLCAwLCAwLCA0LCA0LCA0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDQsIDQsIDQsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgZm9ybWF0IGlzIG5vdCBhbiBhY2Nl
cHRlZCBmb3JtYXQgY29uc3RhbnQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDAsIDQsIDQsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIHVp
bnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5l
cmF0ZWQgaWYgdHlwZSBpcyBub3QgYSB0eXBlIGNvbnN0YW50LicpOworICAgICAgICAgICAgZ2wu
dGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAwLCAwLCA0LCA0LCA0LCBnbC5SR0Is
IDAsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVN
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFU
SU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY29tYmluYXRpb24gb2YgaW50ZXJuYWxGb3JtYXQgb2Yg
dGhlIHByZXZpb3VzbHkgc3BlY2lmaWVkIHRleHR1cmUgYXJyYXksIGZvcm1hdCBhbmQgdHlwZSBp
cyBub3QgdmFsaWQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVf
M0QsIDAsIDAsIDAsIDAsIDQsIDQsIDQsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRf
NCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAs
IDAsIDAsIDQsIDQsIDQsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgdWludDgp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDQs
IDQsIDQsIGdsLlJHQiwgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMSwgdWludDgpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDQsIDQsIDQsIGds
LlJHQkFfSU5URUdFUiwgZ2wuVU5TSUdORURfSU5ULCB1aW50OCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLnRleFN1
YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgNCwgNCwgNCwgZ2wuUkdCLCBnbC5G
TE9BVCwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAg
ICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygndGV4c3ViaW1hZ2UzZF9uZWdfbGV2ZWwnLCAnSW52YWxpZCBnbC50ZXhT
dWJJbWFnZTNEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGV7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKyAg
ICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICB0
ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1
cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2Uz
RCAoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEIChnbC5U
RVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5SR0JBLCA0LCA0LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VS
Uk9SKTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlclZpZXd9ICovIHZhciB1
aW50OCA9IG5ldyBVaW50OEFycmF5KDQpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGxlc3MgdGhhbiAw
LicpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAtMSwgMCwg
MCwgMCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgLTEsIDAsIDAsIDAsIDAsIDAsIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1
cmUodGV4dHVyZVswXSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0p
OworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBp
Q2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleHN1YmltYWdlM2RfbWF4X2xldmVsJywgJ0ludmFsaWQg
Z2wudGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgLyoqIEB0eXBle0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0g
W107CisgICAgICAgICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLnRl
eEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDQsIDQsIDQsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGds
LlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmVbMV0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2Uz
RCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChn
bC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBsb2cy
TWF4M0RUZXh0dXJlU2l6ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9
ICovKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfM0RfVEVYVFVSRV9TSVpFKSkpKSArIDE7CisgICAg
ICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgbG9nMk1heFRleHR1cmVTaXplID0gTWF0
aC5mbG9vcihNYXRoLmxvZzIoLyoqIEB0eXBle251bWJlcn0gKi8oZ2wuZ2V0UGFyYW1ldGVyKGds
Lk1BWF9URVhUVVJFX1NJWkUpKSkpICsgMTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eUJ1ZmZlclZpZXd9ICovIHZhciB1aW50OCA9IG5ldyBVaW50OEFycmF5KDQpOworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlm
IGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBsb2dfMihnbC5NQVhfM0RfVEVYVFVSRV9TSVpFKS4nKTsK
KyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgbG9nMk1heDNEVGV4
dHVyZVNpemUsIDAsIDAsIDAsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVp
bnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGds
LklOVkFMSURfT1BFUkFUSU9OXSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4g
bG9nXzIoZ2wuTUFYX1RFWFRVUkVfU0laRSkuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFn
ZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIGxvZzJNYXhUZXh0dXJlU2l6ZSwgMCwgMCwgMCwgMCwg
MCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsK
KworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsxXSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4c3Vi
aW1hZ2UzZF9uZWdfb2Zmc2V0JywgJ0ludmFsaWQgZ2wudGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PFdl
YkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0gW107CisgICAgICAgICAgICB0ZXh0dXJlWzBd
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVyZVsxXSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0
ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAs
IGdsLlJHQkEsIDQsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmVb
MV0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwg
Z2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJWaWV3fSAqLyB2YXIgdWludDggPSBuZXcgVWludDhBcnJh
eSg0KTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVF
IGlzIGdlbmVyYXRlZCBpZiB4b2Zmc2V0LCB5b2Zmc2V0IG9yIHpvZmZzZXQgYXJlIG5lZ2F0aXZl
LicpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAtMSwg
MCwgMCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgLTEsIDAsIDAsIDAsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRF
WFRVUkVfM0QsIDAsIDAsIDAsIC0xLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAtMSwgLTEs
IC0xLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
dGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCAtMSwgMCwgMCwgMCwgMCwgMCwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnRleFN1YkltYWdlM0Qo
Z2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgLTEsIDAsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRf
QVJSQVksIDAsIDAsIDAsIC0xLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1
aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOwor
ICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCAtMSwg
LTEsIC0xLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAg
ICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlWzFdKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRD
aGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0ZXhzdWJpbWFnZTNkX2ludmFs
aWRfb2Zmc2V0JywgJ0ludmFsaWQgZ2wudGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMVGV4dHVyZX0gKi8g
dmFyIHRleHR1cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1cmUpOworICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgNCwgNCwg
NCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXlCdWZmZXJWaWV3fSAqLyB2YXIgdWludDggPSBuZXcgVWludDhBcnJheSgyNTYpOworICAgICAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVk
IGlmIHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1cmVfd2lkdGguJyk7CisgICAgICAgICAgICBnbC50
ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDIsIDAsIDAsIDQsIDQsIDQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB5b2Zmc2V0ICsgaGVpZ2h0ID4gdGV4dHVy
ZV9oZWlnaHQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0Qs
IDAsIDAsIDIsIDAsIDQsIDQsIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRl
ZCBpZiB6b2Zmc2V0ICsgZGVwdGggPiB0ZXh0dXJlX2RlcHRoLicpOworICAgICAgICAgICAgZ2wu
dGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAwLCAyLCA0LCA0LCA0LCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
QXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleHN1YmltYWdlM2RfbmVnX3dpZHRoX2hlaWdodCcs
ICdJbnZhbGlkIGdsLnRleFN1YkltYWdlM0QoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJl
OworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGds
LnRleEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDQsIDQsIDQsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5QnVmZmVyVmlld30gKi8gdmFyIHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoNCk7CisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQg
aWYgd2lkdGgsIGhlaWdodCBvciBkZXB0aCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAg
IGdsLnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgLTEsIDAsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHVpbnQ4KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDAsIC0xLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCB1aW50OCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAw
LCAwLCAwLCAwLCAtMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgLTEsIC0xLCAtMSwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgdWludDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhzdWJpbWFnZTNkJywgJ0ludmFs
aWQgZ2wuY29weVRleFN1YkltYWdlM0QoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOwor
ICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGds
LmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGdsLnRl
eEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDQsIDQsIDQsIDAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgaW52YWxpZC4n
KTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTNEKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDQsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOwor
CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7Cisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCdjb3B5dGV4c3ViaW1hZ2UzZF9uZWdfbGV2ZWwnLCAnSW52YWxpZCBnbC5jb3B5VGV4U3ViSW1h
Z2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoq
IEB0eXBle0FycmF5PFdlYkdMVGV4dHVyZT59ICovIHZhciB0ZXh0dXJlID0gW107CisgICAgICAg
ICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVy
ZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChn
bC5URVhUVVJFXzNELCB0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QgKGds
LlRFWFRVUkVfM0QsIDAsIGdsLlJHQkEsIDQsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRf
QVJSQVksIHRleHR1cmVbMV0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRCAoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgbnVsbCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlz
IGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBsZXNzIHRoYW4gMC4nKTsKKyAgICAgICAgICAgIGdsLmNv
cHlUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIC0xLCAwLCAwLCAwLCAwLCAwLCA0LCAwKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAtMSwgMCwgMCwg
MCwgMCwgMCwgNCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
VkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMF0pOworICAg
ICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKyAgICAgICAgfSkpOworCisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCdjb3B5dGV4c3ViaW1hZ2UzZF9tYXhfbGV2ZWwnLCAnSW52YWxpZCBnbC5jb3B5VGV4U3ViSW1h
Z2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoq
IEB0eXBle251bWJlcn0gKi8gdmFyIGxvZzJNYXgzRFRleHR1cmVTaXplID0gTWF0aC5mbG9vcihN
YXRoLmxvZzIoLyoqIEB0eXBle251bWJlcn0gKi8oZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF8zRF9U
RVhUVVJFX1NJWkUpKSkpICsgMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZh
ciBsb2cyTWF4VGV4dHVyZVNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9nMigvKiogQHR5cGV7bnVt
YmVyfSAqLyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkpKSkgKyAxOworCisg
ICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUg
PSBbXTsKKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wu
dGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAo
Z2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZVsxXSk7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTNEIChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5SR0JBLCA0LCA0LCA0LCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Ig
KGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklO
VkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBsb2dfMihn
bC5NQVhfM0RfVEVYVFVSRV9TSVpFKS4nKTsKKyAgICAgICAgICAgIGdsLmNvcHlUZXhTdWJJbWFn
ZTNEKGdsLlRFWFRVUkVfM0QsIGxvZzJNYXgzRFRleHR1cmVTaXplLCAwLCAwLCAwLCAwLCAwLCA0
LCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGds
LklOVkFMSURfT1BFUkFUSU9OXSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbCBpcyBncmVhdGVyIHRoYW4g
bG9nXzIoZ2wuTUFYX1RFWFRVUkVfU0laRSkuJyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3Vi
SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCBsb2cyTWF4VGV4dHVyZVNpemUsIDAsIDAsIDAs
IDAsIDAsIDQsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9W
QUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlWzBdKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsx
XSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZB
cGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleHN1YmltYWdlM2RfbmVnX29mZnNldCcsICdJ
bnZhbGlkIGdsLmNvcHlUZXhTdWJJbWFnZTNEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7IFdlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1
cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAg
ICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1cmUpOworICAgICAgICAgICAg
Z2wudGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB4b2Zmc2V0LCB5b2Zm
c2V0IG9yIHpvZmZzZXQgaXMgbmVnYXRpdmUuJyk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3Vi
SW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAtMSwgMCwgMCwgMCwgMCwgNCwgNCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
Y29weVRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgLTEsIDAsIDAsIDAsIDQsIDQp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIC0xLCAw
LCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAt
MSwgLTEsIC0xLCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7
CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygnY29weXRleHN1YmltYWdlM2RfaW52YWxpZF9vZmZzZXQnLCAn
SW52YWxpZCBnbC5jb3B5VGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1
cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAg
ICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfM0QsIHRleHR1cmUpOworICAgICAgICAgICAg
Z2wudGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgNCwgNCwgNCwgMCwgZ2wu
UkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB4b2Zmc2V0ICsgd2lk
dGggPiB0ZXh0dXJlX3dpZHRoLicpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlM0Qo
Z2wuVEVYVFVSRV8zRCwgMCwgMSwgMCwgMCwgMCwgMCwgNCwgNCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgeW9mZnNldCArIGhl
aWdodCA+IHRleHR1cmVfaGVpZ2h0LicpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdl
M0QoZ2wuVEVYVFVSRV8zRCwgMCwgMCwgMSwgMCwgMCwgMCwgNCwgNCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgem9mZnNldCAr
IDEgPiB0ZXh0dXJlX2RlcHRoLicpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlM0Qo
Z2wuVEVYVFVSRV8zRCwgMCwgMCwgMCwgNCwgMCwgMCwgNCwgNCk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVU
ZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhzdWJpbWFnZTNkX25l
Z193aWR0aF9oZWlnaHQnLCAnSW52YWxpZCBnbC5jb3B5VGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBleyBXZWJHTFRl
eHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0
dXJlKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QgKGdsLlRFWFRVUkVfM0QsIDAsIGdsLlJH
QkEsIDQsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0
ZWQgaWYgd2lkdGggPCAwLicpOworICAgICAgICAgICAgZ2wuY29weVRleFN1YkltYWdlM0QoZ2wu
VEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMCwgMCwgLTQsIDQpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGhlaWdodCA8IDAuJyk7
CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzNELCAwLCAwLCAw
LCAwLCAwLCAwLCA0LCAtNCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2NvcHl0ZXhzdWJpbWFnZTNkX2luY29tcGxldGVfZnJhbWVidWZmZXIn
LCAnSW52YWxpZCBnbC5jb3B5VGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJvdW5k
IGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZXtBcnJheTxXZWJHTFRleHR1cmU+fSAqLyB2YXIgdGV4dHVyZSA9IFtdOworICAg
ICAgICAgICAgLyoqIEB0eXBle1dlYkdMRnJhbWVidWZmZXJ9ICovIHZhciBmYm87CisgICAgICAg
ICAgICB0ZXh0dXJlWzBdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgdGV4dHVy
ZVsxXSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleHR1cmVbMF0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5U
RVhUVVJFXzNELCAwLCBnbC5SR0JBLCA0LCA0LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJS
QVksIHRleHR1cmVbMV0pOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChnbC5URVhUVVJFXzJE
X0FSUkFZLCAwLCBnbC5SR0JBLCA0LCA0LCA0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisg
ICAgICAgICAgICBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLlJFQURfRlJBTUVCVUZGRVIpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGdsLmNvcHlU
ZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDQpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
Tik7CisgICAgICAgICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZ
LCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworCisgICAgICAgICAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRl
RnJhbWVidWZmZXIoZmJvKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZVsw
XSk7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVbMV0pOworICAgICAgICB9
KSk7CisKKyAgICAgICAgLy8gZ2wuY29tcHJlc3NlZFRleEltYWdlM0QKKworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJlc3Nl
ZHRleGltYWdlM2QnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3Nl
ZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAg
ICAvKiogQHR5cGV7QXJyYXk8V2ViR0xUZXh0dXJlPn0gKi8gdmFyIHRleHR1cmUgPSBbXTsKKwor
ICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjcmVhdGUgYW5kIGJpbmQgdGV4dHVyZXMgdG8gZWFj
aCB0YXJnZXQgZm9yIHRoZSB0ZXN0IGJlY2F1c2UgZGVmYXVsdCB0ZXh0dXJlcyBhcmUgbm90IHN1
cHBvcnRlZCBieSBXZWJHTC4KKyAgICAgICAgICAgIHRleHR1cmVbMF0gPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlWzFdID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
ICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVbMF0p
OworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1
cmVbMV0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9F
TlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgaW52YWxpZC4nKTsKKyAgICAgICAgICAgIGds
LmNvbXByZXNzZWRUZXhJbWFnZTNEKDAsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMs
IDAsIDAsIDAsIDAsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFn
ZTNEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQywgMCwgMCwgMCwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBpbnRlcm5hbGZv
cm1hdCBpcyBub3Qgb25lIG9mIHRoZSBzcGVjaWZpYyBjb21wcmVzc2VkIGludGVybmFsIGZvcm1h
dHMuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJE
X0FSUkFZLCAwLCAwLCAwLCAwLCAwLCAwLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5jb21w
cmVzc2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5SR0JBOCwgMCwgMCwg
MCwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmVb
MF0pOworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlWzFdKTsKKyAgICAgICAg
fSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4aW1hZ2UzZF9uZWdfbGV2ZWwnLCAnSW52YWxpZCBnbC5j
b21wcmVzc2VkVGV4SW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9y
dGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7IFdlYkdMVGV4dHVyZX0g
Ki8gdmFyIHRleHR1cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1
cmUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxV
RSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgbGVzcyB0aGFuIDAuJyk7CisgICAgICAgICAgICBn
bC5jb21wcmVzc2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAtMSwgZ2wuQ09NUFJF
U1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgMCwgMCwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRl
c3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVz
c2VkdGV4aW1hZ2UzZF9tYXhfbGV2ZWwnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uz
RCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFo
YXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQor
CisgICAgICAgICAgICAvKiogQHR5cGV7IFdlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmU7Cisg
ICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmUpOworCisgICAgICAgICAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYg
bGV2ZWwgaXMgZ3JlYXRlciB0aGFuIGxvZ18yKGdsLk1BWF9URVhUVVJFX1NJWkUpLicpOworICAg
ICAgICAgICAgLyoqIEB0eXBle251bWJlcn0gKi8gdmFyIGxvZzJNYXhUZXh0dXJlU2l6ZSA9IE1h
dGguZmxvb3IoTWF0aC5sb2cyKC8qKiBAdHlwZXtudW1iZXJ9ICovKGdsLmdldFBhcmFtZXRlcihn
bC5NQVhfVEVYVFVSRV9TSVpFKSkpKSArIDE7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCBsb2cyTWF4VGV4dHVyZVNpemUsIGdsLkNPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMsIDAsIDAsIDAsIDAsIG5ldyBVaW50OEFycmF5KDApKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURf
T1BFUkFUSU9OXSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisK
KyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNh
c2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4aW1hZ2UzZF9uZWdfd2lkdGhfaGVpZ2h0
X2RlcHRoJywgJ0ludmFsaWQgZ2wuY29tcHJlc3NlZFRleEltYWdlM0QoKSB1c2FnZScsIGdsLAor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghaGF2ZUNvbXByZXNzZWRUZXh0
dXJlRVRDKSB7IGV0YzJVbnN1cHBvcnRlZCgpOyByZXR1cm47IH0KKworICAgICAgICAgICAgLyoq
IEB0eXBleyBXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVy
ZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5U
RVhUVVJFXzJEX0FSUkFZLCB0ZXh0dXJlKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHdpZHRoLCBoZWlnaHQgb3Ig
ZGVwdGggaXMgbGVzcyB0aGFuIDAuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCAtMSwgMCwgMCwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9F
QUMsIDAsIC0xLCAwLCAwLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eEltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQywgMCwgMCwgLTEsIDAsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCAtMSwgLTEsIC0xLCAwLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJlc3NlZHRleGlt
YWdlM2RfbWF4X3dpZHRoX2hlaWdodF9kZXB0aCcsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTNEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBp
ZiAoIWhhdmVDb21wcmVzc2VkVGV4dHVyZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJu
OyB9CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXsgV2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVy
ZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAg
ICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZSk7CisKKyAgICAg
ICAgICAgIHZhciBtYXhUZXh0dXJlU2l6ZSA9IC8qKiBAdHlwZXtudW1iZXJ9ICovKGdsLmdldFBh
cmFtZXRlcihnbC5NQVhfVEVYVFVSRV9TSVpFKSkgKyAxOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgd2lkdGgsIGhl
aWdodCBvciBkZXB0aCBpcyBncmVhdGVyIHRoYW4gZ2wuTUFYX1RFWFRVUkVfU0laRS4nKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAs
IGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG1heFRleHR1cmVTaXplLCAwLCAwLCAwLCBu
ZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlM0QoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMCwgbWF4VGV4dHVy
ZVNpemUsIDAsIDAsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCAwLCAwLCBtYXhUZXh0dXJlU2l6ZSwgMCwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNv
bXByZXNzZWRUZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUMsIG1heFRleHR1cmVTaXplLCBtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVy
ZVNpemUsIDAsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4
dHVyZSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4aW1hZ2UzZF9pbnZhbGlk
X2JvcmRlcicsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhJbWFnZTNEKCkgdXNhZ2UnLCBnbCwK
KyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIWhhdmVDb21wcmVzc2VkVGV4
dHVyZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKyAgICAgICAgICAgIC8q
KiBAdHlwZXsgV2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wu
VEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBib3JkZXIgaXMgbm90IDAu
Jyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FS
UkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAwLCAwLCAwLCAtMSwgbmV3IFVp
bnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTNEKGdsLlRFWFRVUkVfMkRf
QVJSQVksIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDAsIDAsIDAsIDEsIG5ldyBV
aW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9W
QUxVRSk7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4aW1hZ2UzZF9pbnZhbGlkX3NpemUnLCAnSW52YWxp
ZCBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVu
c3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7IFdlYkdMVGV4
dHVyZX0gKi8gdmFyIHRleHR1cmU7CisgICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVks
IHRleHR1cmUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJ
RF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW1hZ2VTaXplIGlzIG5vdCBjb25zaXN0ZW50IHdpdGgg
dGhlIGZvcm1hdCwgZGltZW5zaW9ucywgYW5kIGNvbnRlbnRzIG9mIHRoZSBzcGVjaWZpZWQgY29t
cHJlc3NlZCBpbWFnZSBkYXRhLicpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
M0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywg
MCwgMCwgMCwgMCwgbmV3IFVpbnQ4QXJyYXkoMSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFn
ZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMs
IDE2LCAxNiwgMSwgMCwgbmV3IFVpbnQ4QXJyYXkoNCo0KjgpKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQjhfRVRD
MiwgMTYsIDE2LCAxLCAwLCBuZXcgVWludDhBcnJheSg0KjQqMTYpKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5jb21wcmVz
c2VkVGV4SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1NJR05F
RF9SMTFfRUFDLCAxNiwgMTYsIDEsIDAsIG5ldyBVaW50OEFycmF5KDQqNCoxNikpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8g
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnY29tcHJlc3NlZHRleHN1YmltYWdlM2Qn
LCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVF
VEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMg
aW52YWxpZC4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0
ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAg
Z2wuYmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmUpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlM0QgKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLkNP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIDE4LCAxOCwgMSwgMCwgbmV3IFVpbnQ4QXJyYXkoZXMz
Zk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSgxOCwgMTgpKSk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYg
Zm9ybWF0IGRvZXMgbm90IG1hdGNoIHRoZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHRleHR1cmUg
aW1hZ2UgYmVpbmcgbW9kaWZpZWQuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBnbC5DT01Q
UkVTU0VEX1JHQjhfRVRDMiwgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgaW50ZXJu
YWxmb3JtYXQgaXMgYW4gRVRDMi9FQUMgZm9ybWF0IGFuZCB0YXJnZXQgaXMgbm90IGdsLlRFWFRV
UkVfMkRfQVJSQVkuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChn
bC5URVhUVVJFXzNELCAwLCAwLCAwLCAwLCAxOCwgMTgsIDEsIGdsLkNPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMy
RWFjRGF0YVNpemUoMTgsIDE4KSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdG
b3IgRVRDMi9FQUMgaW1hZ2VzIGdsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB3
aWR0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgd2lkdGggKyB4b2Zmc2V0IGlzIG5v
dCBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIHRleHR1cmUgbGV2ZWwuJyk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCA0LCAw
LCAwLCAxMCwgNCwgMSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJy
YXkoZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSgxMCwgNCkpKTsK
KyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRm9yIEVUQzIvRUFDIGltYWdlcyBnbC5J
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgaGVpZ2h0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIGZvdXIsIGFuZCBoZWlnaHQgKyB5b2Zmc2V0IGlzIG5vdCBlcXVhbCB0byB0aGUgaGVpZ2h0
IG9mIHRoZSB0ZXh0dXJlIGxldmVsLicpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgNCwgMCwgNCwgMTAsIDEsIGdsLkNP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1
cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoNCwgMTApKSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ0ZvciBFVEMyL0VBQyBpbWFnZXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGlmIHhvZmZzZXQgb3IgeW9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3Vy
LicpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8y
RF9BUlJBWSwgMCwgMSwgMCwgMCwgNCwgNCwgMSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VB
QywgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRh
U2l6ZSg0LCA0KSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhU
VVJFXzJEX0FSUkFZLCAwLCAwLCAxLCAwLCA0LCA0LCAxLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVh
Y0RhdGFTaXplKDQsIDQpKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGds
LlRFWFRVUkVfMkRfQVJSQVksIDAsIDEsIDEsIDAsIDQsIDQsIDEsIGdsLkNPTVBSRVNTRURfUkdC
QThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5l
dGMyRWFjRGF0YVNpemUoNCwgNCkpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
QXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhzdWJpbWFnZTNkX25lZ19sZXZl
bCcsICdJbnZhbGlkIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKCkgdXNhZ2UnLCBnbCwKKyAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIWhhdmVDb21wcmVzc2VkVGV4dHVy
ZUVUQykgeyBldGMyVW5zdXBwb3J0ZWQoKTsgcmV0dXJuOyB9CisKKyAgICAgICAgICAgIC8qKiBA
dHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzJEX0FSUkFZLCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFn
ZTNEIChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
LCAxNiwgMTYsIDEsIDAsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0
cy5ldGMyRWFjRGF0YVNpemUoMTYsIDE2KSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
ciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbGV2ZWwgaXMgbGVzcyB0aGFuIDAuJyk7Cisg
ICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZ
LCAtMSwgMCwgMCwgMCwgMCwgMCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3
IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4c3ViaW1hZ2UzZF9tYXhfbGV2ZWwnLCAnSW52YWxp
ZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRj
MlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xU
ZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8yRF9BUlJB
WSwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRCAoZ2wuVEVY
VFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAx
LCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0Rh
dGFTaXplKDE2LCAxNikpKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VS
Uk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFM
VUUgaXMgZ2VuZXJhdGVkIGlmIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBsb2dfMihnbC5NQVhfVEVY
VFVSRV9TSVpFKS4nKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBsb2cy
TWF4VGV4dHVyZVNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9nMigvKiogQHR5cGV7bnVtYmVyfSAq
LyhnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSkpKSkgKyAxOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgbG9nMk1h
eFRleHR1cmVTaXplLCAwLCAwLCAwLCAwLCAwLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtn
bC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworCisgICAgICAgICAgICBn
bC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0
ZXhzdWJpbWFnZTNkX25lZ19vZmZzZXQnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRCgpIHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYg
KCFoYXZlQ29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsg
fQorCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsK
KyAgICAgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBn
bC5iaW5kVGV4dHVyZSAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZSk7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAxLCAwLCBuZXcgVWludDhBcnJheShlczNm
TmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDE2LCAxNikpKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04gaXMgZ2VuZXJhdGVkIGlmIHhvZmZzZXQsIHlvZmZzZXQgb3Igem9mZnNldCBhcmUgbmVnYXRp
dmUuJyk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJF
XzJEX0FSUkFZLCAwLCAtNCwgMCwgMCwgMCwgMCwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQywgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihb
Z2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKyAgICAgICAgICAgIGds
LmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIDAsIC00LCAw
LCAwLCAwLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcgVWludDhBcnJheSgw
KSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5J
TlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdl
M0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgMCwgLTQsIDAsIDAsIDAsIGdsLkNPTVBSRVNT
RURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7Cisg
ICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZ
LCAwLCAtNCwgLTQsIC00LCAwLCAwLCAwLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBu
ZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZB
TElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworCisgICAgICAgICAgICBnbC5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhzdWJp
bWFnZTNkX2ludmFsaWRfb2Zmc2V0JywgJ0ludmFsaWQgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdl
M0QoKSB1c2FnZScsIGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgh
aGF2ZUNvbXByZXNzZWRUZXh0dXJlRVRDKSB7IGV0YzJVbnN1cHBvcnRlZCgpOyByZXR1cm47IH0K
KworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmU7Cisg
ICAgICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUgKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleHR1cmUpOworICAgICAgICAgICAg
Z2wuY29tcHJlc3NlZFRleEltYWdlM0QgKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIGdsLkNPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMsIDQsIDQsIDEsIDAsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdh
dGl2ZVRleHR1cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoNCwgNCkpKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGlmIHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1cmVfd2lkdGggb3IgeW9mZnNldCAr
IGhlaWdodCA+IHRleHR1cmVfaGVpZ2h0LicpOworCisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCAxMiwgMCwgMCwgOCwgNCwgMSwg
Z2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoZXMzZk5lZ2F0aXZl
VGV4dHVyZUFwaVRlc3RzLmV0YzJFYWNEYXRhU2l6ZSg4LCA0KSkpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dKTsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJS
QVksIDAsIDAsIDEyLCAwLCA0LCA4LCAxLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBu
ZXcgVWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXpl
KDQsIDgpKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVF
LCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgMCwgMTIsIDQsIDQsIDEsIGdsLkNP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBVaW50OEFycmF5KGVzM2ZOZWdhdGl2ZVRleHR1
cmVBcGlUZXN0cy5ldGMyRWFjRGF0YVNpemUoNCwgNCkpKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisgICAg
ICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAw
LCAxMiwgMTIsIDEyLCA4LCA4LCAxLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBuZXcg
VWludDhBcnJheShlczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDgs
IDgpKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKFtnbC5JTlZBTElEX1ZBTFVFLCBn
bC5JTlZBTElEX09QRVJBVElPTl0pOworCisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRl
eHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2NvbXByZXNzZWR0ZXhzdWJpbWFnZTNkX25lZ193
aWR0aF9oZWlnaHRfZGVwdGgnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgp
IHVzYWdlJywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZl
Q29tcHJlc3NlZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisg
ICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAg
ICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5k
VGV4dHVyZSAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbC5j
b21wcmVzc2VkVGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NF
RF9SR0JBOF9FVEMyX0VBQywgMTYsIDE2LCAxLCAwLCBuZXcgVWludDhBcnJheShlczNmTmVnYXRp
dmVUZXh0dXJlQXBpVGVzdHMuZXRjMkVhY0RhdGFTaXplKDE2LCAxNikpKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgb3IgZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGlmIHdpZHRoLCBoZWlnaHQgb3IgZGVwdGggYXJlIG5lZ2F0aXZlLicpOworICAg
ICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwg
MCwgMCwgMCwgMCwgLTQsIDAsIDAsIGdsLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsIG5ldyBV
aW50OEFycmF5KDApKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoW2dsLklOVkFMSURf
VkFMVUUsIGdsLklOVkFMSURfT1BFUkFUSU9OXSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChnbC5URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAwLCAwLCAtNCwgMCwg
Z2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJyYXkoMCkpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJRF9PUEVS
QVRJT05dKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGdsLlRFWFRV
UkVfMkRfQVJSQVksIDAsIDAsIDAsIDAsIDAsIDAsIC00LCBnbC5DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCBuZXcgVWludDhBcnJheSgwKSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX09QRVJBVElPTl0pOworICAgICAgICAgICAg
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgMCwg
MCwgLTQsIC00LCAtNCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4QXJy
YXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihbZ2wuSU5WQUxJRF9WQUxVRSwg
Z2wuSU5WQUxJRF9PUEVSQVRJT05dKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdjb21wcmVzc2VkdGV4c3ViaW1hZ2UzZF9pbnZh
bGlkX3NpemUnLCAnSW52YWxpZCBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgpIHVzYWdlJywg
Z2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFoYXZlQ29tcHJlc3Nl
ZFRleHR1cmVFVEMpIHsgZXRjMlVuc3VwcG9ydGVkKCk7IHJldHVybjsgfQorCisgICAgICAgICAg
ICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRl
eHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAo
Z2wuVEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4SW1hZ2UzRCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQywgMTYsIDE2LCAxLCAwLCBuZXcgVWludDhBcnJheSg0KjQqMTYpKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGltYWdlU2l6
ZSBpcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBmb3JtYXQsIGRpbWVuc2lvbnMsIGFuZCBjb250
ZW50cyBvZiB0aGUgc3BlY2lmaWVkIGNvbXByZXNzZWQgaW1hZ2UgZGF0YS4nKTsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIDAs
IDAsIDAsIDE2LCAxNiwgMSwgZ2wuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgbmV3IFVpbnQ4
QXJyYXkoMCkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZ2wuVEVYVFVSRV8y
RF9BUlJBWSwgMCwgMCwgMCwgMCwgMTYsIDE2LCAxLCBnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDLCBuZXcgVWludDhBcnJheSg0KjQqMTYtMSkpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIGdsLnRleFN0b3JhZ2UyRAorCisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCd0ZXhzdG9yYWdlMmQnLCAnSW52YWxpZCBnbC50ZXhTdG9yYWdlMkQoKSB1c2FnZScsIGdsLAor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghaGF2ZUNvbXByZXNzZWRUZXh0
dXJlRVRDKSB7IGV0YzJVbnN1cHBvcnRlZCgpOyByZXR1cm47IH0KKyAgICAgICAgICAgIC8qKiBA
dHlwZXtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhU
VVJFXzJELCB0ZXh0dXJlKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfRU5VTSBvciBnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbnRlcm5h
bGZvcm1hdCBpcyBub3QgYSB2YWxpZCBzaXplZCBpbnRlcm5hbCBmb3JtYXQuJyk7CisgICAgICAg
ICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDEsIDAsIDE2LCAxNik7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZBTElEX1ZB
TFVFXSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDEsIGds
LlJHQkFfSU5URUdFUiwgMTYsIDE2KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKFtn
bC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfVkFMVUVdKTsKKworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdGFyZ2V0IGlz
IG5vdCBvbmUgb2YgdGhlIGFjY2VwdGVkIHRhcmdldCBlbnVtZXJhbnRzLicpOworICAgICAgICAg
ICAgZ2wudGV4U3RvcmFnZTJEICgwLCAxLCBnbC5SR0JBOCwgMTYsIDE2KTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC50ZXhT
dG9yYWdlMkQgKGdsLlRFWFRVUkVfM0QsIDEsIGdsLlJHQkE4LCAxNiwgMTYpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnRl
eFN0b3JhZ2UyRCAoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMSwgZ2wuUkdCQTgsIDE2LCAxNik7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQg
aWYgd2lkdGggb3IgaGVpZ2h0IGFyZSBsZXNzIHRoYW4gMS4nKTsKKyAgICAgICAgICAgIGdsLnRl
eFN0b3JhZ2UyRCAoZ2wuVEVYVFVSRV8yRCwgMSwgZ2wuUkdCQTgsIDAsIDE2KTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wu
dGV4U3RvcmFnZTJEIChnbC5URVhUVVJFXzJELCAxLCBnbC5SR0JBOCwgMTYsIDApOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBn
bC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDEsIGdsLlJHQkE4LCAwLCAwKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAg
ICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVz
dEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3RleHN0b3Jh
Z2UyZF9pbnZhbGlkX2JpbmRpbmcnLCAnSW52YWxpZCBnbC50ZXhTdG9yYWdlMkQoKSB1c2FnZScs
IGdsLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChn
bC5URVhUVVJFXzJELCBudWxsKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGVyZSBpcyBubyB0ZXh0dXJl
IG9iamVjdCBjdXJlbnRseSBib3VuZCB0byB0YXJnZXQuJyk7CisgICAgICAgICAgICBnbC50ZXhT
dG9yYWdlMkQgKGdsLlRFWFRVUkVfMkQsIDEsIGdsLlJHQkE4LCAxNiwgMTYpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAg
ICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAgIHRl
eHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZSAo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIHRleHR1cmUgb2Jq
ZWN0IGN1cnJlbnRseSBib3VuZCB0byB0YXJnZXQgYWxyZWFkeSBoYXMgZ2wuVEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUIHNldCB0byB0cnVlLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJl
cn0gKi8gdmFyIGltbXV0YWJsZTsKKyAgICAgICAgICAgIGltbXV0YWJsZSA9IC8qKiBAdHlwZXtu
dW1iZXJ9ICovKGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0lN
TVVUQUJMRV9GT1JNQVQpKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBn
bC5URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgPSAnICsgKChpbW11dGFibGUgIT0gMCkgPyAndHJ1
ZScgOiAnZmFsc2UnKSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVf
MkQsIDEsIGdsLlJHQkE4LCAxNiwgMTYpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAo
Z2wuTk9fRVJST1IpOworICAgICAgICAgICAgaW1tdXRhYmxlID0gLyoqIEB0eXBle251bWJlcn0g
Ki8oZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfSU1NVVRBQkxF
X0ZPUk1BVCkpOworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIGdsLlRFWFRV
UkVfSU1NVVRBQkxFX0ZPUk1BVCA9ICcgKyAoKGltbXV0YWJsZSAhPSAwKSA/ICd0cnVlJyA6ICdm
YWxzZScpKTsKKyAgICAgICAgICAgIGdsLnRleFN0b3JhZ2UyRCAoZ2wuVEVYVFVSRV8yRCwgMSwg
Z2wuUkdCQTgsIDE2LCAxNik7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7
CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygndGV4c3RvcmFnZTJkX2ludmFsaWRfbGV2ZWxzJywgJ0ludmFs
aWQgZ2wudGV4U3RvcmFnZTJEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAg
ICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5k
VGV4dHVyZSAoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbHMgaXMg
bGVzcyB0aGFuIDEuJyk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkE4LCAxNiwgMTYpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAo
Z2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQkE4LCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Ig
KGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGxldmVscyBpcyBncmVhdGVyIHRo
YW4gZmxvb3IobG9nXzIobWF4KHdpZHRoLCBoZWlnaHQpKSkgKyAxJyk7CisgICAgICAgICAgICAv
KiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgbG9nMk1heFNpemUgPSBNYXRoLmZsb29yKE1hdGgubG9n
MihNYXRoLm1heCgxNiwgNCkpKSArIDEgKyAxOworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTJE
IChnbC5URVhUVVJFXzJELCBsb2cyTWF4U2l6ZSwgZ2wuUkdCQTgsIDE2LCA0KTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IGdsLnRleFN0b3JhZ2UyRCAoZ2wuVEVYVFVSRV8yRCwgbG9nMk1heFNpemUsIGdsLlJHQkE4LCA0
LCAxNik7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQgKGdsLlRFWFRVUkVfMkQsIGxvZzJNYXhT
aXplLCBnbC5SR0JBOCwgMTYsIDE2KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIGdsLnRleFN0b3JhZ2UzRAorCisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd0
ZXhzdG9yYWdlM2QnLCAnSW52YWxpZCBnbC50ZXhTdG9yYWdlM0QoKSB1c2FnZScsIGdsLAorICAg
ICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRleHR1cmV9ICov
IHZhciB0ZXh0dXJlOworICAgICAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsK
KyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlIChnbC5URVhUVVJFXzNELCB0ZXh0dXJlKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBvciBnbC5J
TlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbnRlcm5hbGZvcm1hdCBpcyBub3QgYSB2YWxp
ZCBzaXplZCBpbnRlcm5hbCBmb3JtYXQuJyk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0Qg
KGdsLlRFWFRVUkVfM0QsIDEsIDAsIDQsIDQsIDQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvciAoW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJRF9WQUxVRV0pOworICAgICAgICAgICAg
Z2wudGV4U3RvcmFnZTNEIChnbC5URVhUVVJFXzNELCAxLCBnbC5SR0JBX0lOVEVHRVIsIDQsIDQs
IDQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoW2dsLklOVkFMSURfRU5VTSwgZ2wu
SU5WQUxJRF9WQUxVRV0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiB0YXJnZXQgaXMgbm90IG9uZSBvZiB0aGUgYWNj
ZXB0ZWQgdGFyZ2V0IGVudW1lcmFudHMuJyk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0Qg
KDAsIDEsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Ig
KGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0QgKGdsLlRFWFRV
UkVfQ1VCRV9NQVAsIDEsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IgKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0Qg
KGdsLlRFWFRVUkVfMkQsIDEsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiB3aWR0aCwgaGVpZ2h0
IG9yIGRlcHRoIGFyZSBsZXNzIHRoYW4gMS4nKTsKKyAgICAgICAgICAgIGdsLnRleFN0b3JhZ2Uz
RCAoZ2wuVEVYVFVSRV8zRCwgMSwgZ2wuUkdCQTgsIDAsIDQsIDQpOworICAgICAgICAgICAgdGhp
cy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC50ZXhTdG9y
YWdlM0QgKGdsLlRFWFRVUkVfM0QsIDEsIGdsLlJHQkE4LCA0LCAwLCA0KTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4
U3RvcmFnZTNEIChnbC5URVhUVVJFXzNELCAxLCBnbC5SR0JBOCwgNCwgNCwgMCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnRleFN0b3JhZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMSwgZ2wuUkdCQTgsIDAsIDAsIDApOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndGV4c3Rv
cmFnZTNkX2ludmFsaWRfYmluZGluZycsICdJbnZhbGlkIGdsLnRleFN0b3JhZ2UzRCgpIHVzYWdl
JywgZ2wsCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUg
KGdsLlRFWFRVUkVfM0QsIG51bGwpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZXJlIGlzIG5vIHRleHR1
cmUgb2JqZWN0IGN1cmVudGx5IGJvdW5kIHRvIHRhcmdldC4nKTsKKyAgICAgICAgICAgIGdsLnRl
eFN0b3JhZ2UzRCAoZ2wuVEVYVFVSRV8zRCwgMSwgZ2wuUkdCQTgsIDQsIDQsIDQpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgICAg
IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVy
ZSAoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIHRleHR1cmUg
b2JqZWN0IGN1cnJlbnRseSBib3VuZCB0byB0YXJnZXQgYWxyZWFkeSBoYXMgZ2wuVEVYVFVSRV9J
TU1VVEFCTEVfRk9STUFUIHNldCB0byB0cnVlLicpOworICAgICAgICAgICAgLyoqIEB0eXBle251
bWJlcn0gKi8gdmFyIGltbXV0YWJsZTsKKyAgICAgICAgICAgIGltbXV0YWJsZSA9IC8qKiBAdHlw
ZXtudW1iZXJ9ICovKGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzNELCBnbC5URVhUVVJF
X0lNTVVUQUJMRV9GT1JNQVQpKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcv
LyBnbC5URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgPSAnICsgKChpbW11dGFibGUgIT0gMCkgPyAn
dHJ1ZScgOiAnZmFsc2UnKSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0QgKGdsLlRFWFRV
UkVfM0QsIDEsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IgKGdsLk5PX0VSUk9SKTsKKyAgICAgICAgICAgIGltbXV0YWJsZSA9IC8qKiBAdHlwZXtudW1i
ZXJ9ICovKGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX0lNTVVU
QUJMRV9GT1JNQVQpKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBnbC5U
RVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgPSAnICsgKChpbW11dGFibGUgIT0gMCkgPyAndHJ1ZScg
OiAnZmFsc2UnKSk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0QgKGdsLlRFWFRVUkVfM0Qs
IDEsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIE5PVEU6IHRoZSB0ZXN0IGRvZXNuJ3Qg
Y2F1c2UgZ2xFcnJvciB1c2luZyB0aGUgcGFyYW1ldGVycyBkZWZpbmVkIGluIHRoZSBvcmlnaW5h
bCB0ZXN0IG9mIEMgY29kZQorICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlD
YXNlLkFwaUNhc2VDYWxsYmFjaygndGV4c3RvcmFnZTNkX2ludmFsaWRfbGV2ZWxzJywgJ0ludmFs
aWQgZ2wudGV4U3RvcmFnZTNEKCkgdXNhZ2UnLCBnbCwKKyAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAg
ICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5k
VGV4dHVyZSAoZ2wuVEVYVFVSRV8zRCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBsZXZlbHMgaXMg
bGVzcyB0aGFuIDEuJyk7CisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlM0QgKGdsLlRFWFRVUkVf
M0QsIDAsIGdsLlJHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Ig
KGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEIChnbC5URVhU
VVJFXzNELCAwLCBnbC5SR0JBOCwgMCwgMCwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yIChnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBsZXZlbHMgaXMgZ3JlYXRl
ciB0aGFuIGZsb29yKGxvZ18yKG1heCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpKSArIDEnKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBsb2cyTWF4U2l6ZSA9IE1hdGguZmxv
b3IoTWF0aC5sb2cyKDgpKSArIDEgKyAxOworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEIChn
bC5URVhUVVJFXzNELCBsb2cyTWF4U2l6ZSwgZ2wuUkdCQTgsIDgsIDIsIDIpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
Z2wudGV4U3RvcmFnZTNEIChnbC5URVhUVVJFXzNELCBsb2cyTWF4U2l6ZSwgZ2wuUkdCQTgsIDIs
IDgsIDIpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEIChnbC5URVhUVVJFXzNELCBsb2cyTWF4
U2l6ZSwgZ2wuUkdCQTgsIDIsIDIsIDgpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAo
Z2wuSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEIChnbC5U
RVhUVVJFXzNELCBsb2cyTWF4U2l6ZSwgZ2wuUkdCQTgsIDgsIDgsIDgpOworICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBn
bC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICB9KSk7CisgICAgfTsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBnbAorICAgICovCisgICAg
ZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLnJ1biA9IGZ1bmN0aW9uKGdsKSB7CisgICAgICAg
IHZhciB0ZXN0TmFtZSA9ICduZWdhdGl2ZVRleHR1cmVBcGknOworICAgICAgICB2YXIgdGVzdERl
c2NyaXB0aW9uID0gJ05lZ2F0aXZlIFRleHR1cmUgQVBJIHRlc3RzJzsKKyAgICAgICAgdmFyIHN0
YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0gdGVz
dE5hbWU7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QodGVz
dE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBh
bmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRl
c3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9uKTsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5p
bml0KGdsKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci5ydW5DYWxsYmFjayh0Y3VU
ZXN0Q2FzZS5ydW5UZXN0Q2FzZXMpOworICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5y
dW5uZXIudGVybWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkyMWE2ZjUy
YjM0ZmM4ODcwZTFkMTk5NDAzNWI1MDg3NDFjZmNmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmpzCkBAIC0wLDAgKzEsOTA2IEBA
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3Bl
bkdMIEVTIDMuMCBNb2R1bGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMs
CisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICoKKyAqLy8qIQorICogXGZpbGUKKyAqIFxicmllZiBOZWdhdGl2ZSBW
ZXJ0ZXggQXJyYXkgQVBJIHRlc3RzLgorICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisndXNlIHN0cmljdCc7
Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlVmVydGV4QXJyYXlB
cGlUZXN0cycpOworCitnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2Un
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQnKTsKKworZ29vZy5zY29wZShm
dW5jdGlvbigpIHsKKworICAgIHZhciBlczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzID0g
ZnVuY3Rpb25hbC5nbGVzMy5lczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzOworICAgIHZh
ciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAgIHZhciBlczNm
QXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7CisgICAgdmFyIHRjdVRlc3RD
YXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZ2x1U2hhZGVyUHJv
Z3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKKyAgICB2YXIgc2dsckdM
Q29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQ7
CisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3RyaW5nfQorICAgICAqIEBjb25zdAorICAgICAq
LworICAgIHZhciB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAg
ICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgJ3tcbicgKworICAgICcgZ2xfUG9zaXRpb24g
PSB2ZWM0KDAuMCk7XG4nICsKKyAgICAnfVxuJzsKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtz
dHJpbmd9CisgICAgICogQGNvbnN0CisgICAgICovCisgICAgdmFyIGZyYWdtZW50U2hhZGVyU291
cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yO1xuJyArCisgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicg
KworICAgICd7XG4nICsKKyAgICAnIGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbicgKworICAgICd9
XG4nOworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGds
CisgICAgKi8KKyAgICBlczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmluaXQgPSBmdW5j
dGlvbihnbCkgeworCisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIu
dGVzdENhc2VzOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2Uu
QXBpQ2FzZUNhbGxiYWNrKCd2ZXJ0ZXhfYXR0cmliZicsICdJbnZhbGlkIGdsVmVydGV4QXR0cmli
ezEyMzR9ZigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGluZGV4IGlzIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5NQVhfVkVSVEVYX0FUVFJJQlMuJyk7CisgICAgICAg
ICAgICB2YXIgbWF4VmVydGV4QXR0cmlicyA9IC8qKiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRQ
YXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKSk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhB
dHRyaWIxZihtYXhWZXJ0ZXhBdHRyaWJzLCAwLjApOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYjJmKG1h
eFZlcnRleEF0dHJpYnMsIDAuMCwgMC4wKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWIzZihtYXhWZXJ0
ZXhBdHRyaWJzLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWI0ZihtYXhWZXJ0
ZXhBdHRyaWJzLCAwLjAsIDAuMCwgMC4wLCAwLjApOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3ZlcnRleF9hdHRy
aWJmdicsICdJbnZhbGlkIGdsVmVydGV4QXR0cmliezEyMzR9ZnYoKSB1c2FnZScsIGdsLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZCBpZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wu
TUFYX1ZFUlRFWF9BVFRSSUJTLicpOworICAgICAgICAgICAgdmFyIG1heFZlcnRleEF0dHJpYnMg
PSAvKiogQHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRU
UklCUykpOworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PG51bWJlcj59ICovIHZhciB2ID0g
WzAuMF07CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWIxZnYobWF4VmVydGV4QXR0cmlicywg
dik7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgZ2wudmVydGV4QXR0cmliMmZ2KG1heFZlcnRleEF0dHJpYnMsIHYpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LnZlcnRleEF0dHJpYjNmdihtYXhWZXJ0ZXhBdHRyaWJzLCB2KTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWI0ZnYobWF4VmVydGV4QXR0cmlicywgdik7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygndmVydGV4X2F0dHJpYmk0
JywgJ0ludmFsaWQgZ2xWZXJ0ZXhBdHRyaWJJNHtpfHVpfWYoKSB1c2FnZScsIGdsLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBtYXhWZXJ0ZXhBdHRyaWJzID0gLyoqIEB0eXBle251bWJl
cn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX0FUVFJJQlMpKTsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciB2YWxJbnQgPSAwOworICAgICAgICAgICAgLyoq
IEB0eXBle251bWJlcn0gKi8gdmFyIHZhbFVpbnQgPSAwOworCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgaW5kZXggaXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGdsLk1BWF9WRVJURVhfQVRUUklCUy4nKTsKKyAgICAg
ICAgICAgIGdsLnZlcnRleEF0dHJpYkk0aShtYXhWZXJ0ZXhBdHRyaWJzLCB2YWxJbnQsIHZhbElu
dCwgdmFsSW50LCB2YWxJbnQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYkk0dWkobWF4VmVydGV4QXR0
cmlicywgdmFsVWludCwgdmFsVWludCwgdmFsVWludCwgdmFsVWludCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgIH0pKTsKKworICAg
ICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygn
dmVydGV4X2F0dHJpYmk0dicsICdJbnZhbGlkIGdsVmVydGV4QXR0cmliSTR7aXx1aX1mdigpIHVz
YWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIG1heFZlcnRleEF0dHJpYnMg
PSAvKiogQHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRU
UklCUykpOworICAgICAgICAgICAgLyoqIEB0eXBle0FycmF5PG51bWJlcj59ICovIHZhciB2YWxJ
bnQgPSBbMF07CisgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZh
bFVpbnQgPSBbMF07CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTLicpOworICAgICAgICAgICAgZ2wudmVydGV4QXR0cmli
STRpdihtYXhWZXJ0ZXhBdHRyaWJzLCB2YWxJbnQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RF
cnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYkk0dWl2
KG1heFZlcnRleEF0dHJpYnMsIHZhbFVpbnQpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3Vw
LmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3ZlcnRleF9hdHRyaWJf
cG9pbnRlcicsICdJbnZhbGlkIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoKSB1c2FnZScsIGdsLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1
ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHR5cGUgaXMgbm90IGFuIGFjY2VwdGVk
IHZhbHVlLicpOworICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAxLCAwLCB0
cnVlLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVN
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkIGlmIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBnbC5NQVhf
VkVSVEVYX0FUVFJJQlMuJyk7CisgICAgICAgICAgICB2YXIgbWF4VmVydGV4QXR0cmlicyA9IC8q
KiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJT
KSk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1heFZlcnRleEF0dHJpYnMs
IDEsIGdsLkJZVEUsIHRydWUsIDAsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2ds
LklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIHNpemUgaXMgbm90IDEsIDIsIDMsIG9yIDQu
Jyk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDAsIGdsLkJZVEUsIHRy
dWUsIDAsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVF
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkIGlmIHN0cmlkZSBpcyBuZWdhdGl2ZS4nKTsKKyAgICAgICAgICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgMSwgZ2wuQllURSwgdHJ1ZSwgLTEsIDApOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0
eXBlIGlzIGdsLklOVF8yXzEwXzEwXzEwX1JFViBvciBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8x
MF9SRVYgYW5kIHNpemUgaXMgbm90IDQuJyk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDAsIDIsIGdsLklOVF8yXzEwXzEwXzEwX1JFViwgdHJ1ZSwgMCwgMCk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBf
UkVWLCB0cnVlLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBn
bC5JTlRfMl8xMF8xMF8xMF9SRVYsIHRydWUsIDAsIDApOworICAgICAgICAgICAgdGhpcy5leHBl
Y3RFcnJvcihnbC5OT19FUlJPUik7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDQsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgdHJ1ZSwgMCwgMCk7CisgICAg
ICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBhIG5v
bi16ZXJvIHZlcnRleCBhcnJheSBvYmplY3QgaXMgYm91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhl
IGdsLkFSUkFZX0JVRkZFUiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQgYW5kIHRoZSBwb2lu
dGVyIGFyZ3VtZW50IGlzIG5vdCBOVUxMLicpOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdM
VmVydGV4QXJyYXlPYmplY3R9ICovIHZhciB2YW87CisgICAgICAgICAgICAvKiogQHR5cGV7bnVt
YmVyfSAqLyB2YXIgb2Zmc2V0ID0gMTsKKyAgICAgICAgICAgIHZhbyA9IGdsLmNyZWF0ZVZlcnRl
eEFycmF5KCk7CisgICAgICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvKTsKKyAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKDAsIDEsIGdsLkJZVEUsIHRydWUsIDAsIG9mZnNldCk7CisgICAgICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wu
YmluZFZlcnRleEFycmF5KG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXko
dmFvKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAg
ICAgIH0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFw
aUNhc2VDYWxsYmFjaygndmVydGV4X2F0dHJpYl9pX3BvaW50ZXInLCAnSW52YWxpZCBnbC52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcigpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
LyoqIEB0eXBle1dlYkdMQnVmZmVyfSAqLyB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5l
cmF0ZWQgaWYgdHlwZSBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICBn
bC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigwLCAxLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJp
YklQb2ludGVyKDAsIDQsIGdsLklOVF8yXzEwXzEwXzEwX1JFViwgMCwgMCk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcigwLCA0LCBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIDAs
IDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5l
cmF0ZWQgaWYgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGdsLk1BWF9WRVJURVhf
QVRUUklCUy4nKTsKKyAgICAgICAgICAgIHZhciBtYXhWZXJ0ZXhBdHRyaWJzID0gLyoqIEB0eXBl
e251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX0FUVFJJQlMpKTsKKyAg
ICAgICAgICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKG1heFZlcnRleEF0dHJpYnMsIDEsIGds
LkJZVEUsIDAsIDApOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZB
TFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFM
VUUgaXMgZ2VuZXJhdGVkIGlmIHNpemUgaXMgbm90IDEsIDIsIDMsIG9yIDQuJyk7CisgICAgICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigwLCAwLCBnbC5CWVRFLCAwLCAwKTsKKyAgICAg
ICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBz
dHJpZGUgaXMgbmVnYXRpdmUuJyk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRl
cigwLCAxLCBnbC5CWVRFLCAtMSwgMCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGEgbm9uLXplcm8gdmVydGV4IGFycmF5IG9i
amVjdCBpcyBib3VuZCwgemVybyBpcyBib3VuZCB0byB0aGUgZ2wuQVJSQVlfQlVGRkVSIGJ1ZmZl
ciBvYmplY3QgYmluZGluZyBwb2ludCBhbmQgdGhlIHBvaW50ZXIgYXJndW1lbnQgaXMgbm90IE5V
TEwuJyk7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gKi8g
dmFyIHZhbzsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciBvZmZzZXQgPSAx
OworICAgICAgICAgICAgdmFvID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8pOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIG51bGwpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5OT19F
UlJPUik7CisKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKDAsIDEsIGdsLkJZ
VEUsIDAsIG9mZnNldCk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURf
T1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworICAg
ICAgICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmFvKTsKKyAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0R3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZW5hYmxlX3ZlcnRl
eF9hdHRyaWJfYXJyYXknLCAnSW52YWxpZCBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgpIHVz
YWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byBnbC5NQVhfVkVSVEVYX0FUVFJJQlMuJyk7CisgICAgICAgICAgICB2YXIgbWF4
VmVydGV4QXR0cmlicyA9IC8qKiBAdHlwZXtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wu
TUFYX1ZFUlRFWF9BVFRSSUJTKSk7CisgICAgICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShtYXhWZXJ0ZXhBdHRyaWJzKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRD
aGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdkaXNhYmxlX3ZlcnRleF9hdHRy
aWJfYXJyYXknLCAnSW52YWxpZCBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoKSB1c2FnZScs
IGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5J
TlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTLicpOworICAgICAgICAgICAgdmFyIG1heFZlcnRl
eEF0dHJpYnMgPSAvKiogQHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9W
RVJURVhfQVRUUklCUykpOworICAgICAgICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KG1heFZlcnRleEF0dHJpYnMpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxk
KG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3ZlcnRleF9hdHRyaWJfZGl2aXNvcics
ICdJbnZhbGlkIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlz
IGdlbmVyYXRlZCBpZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZ2wuTUFYX1ZF
UlRFWF9BVFRSSUJTLicpOworICAgICAgICAgICAgdmFyIG1heFZlcnRleEF0dHJpYnMgPSAvKiog
QHR5cGV7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUykp
OworICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcihtYXhWZXJ0ZXhBdHRyaWJzLCAw
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAg
ICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2Uu
QXBpQ2FzZUNhbGxiYWNrKCdkcmF3X2FycmF5cycsICdJbnZhbGlkIGdsLmRyYXdBcnJheXMoKSB1
c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtnbHVTaGFkZXJQ
cm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbShnbCxnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKSk7CisgICAgICAgICAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBtb2RlIGlzIG5vdCBh
biBhY2NlcHRlZCB2YWx1ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoLTEsIDAsIDEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0
ZWQgaWYgY291bnQgaXMgbmVnYXRpdmUuJyk7CisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGds
LlBPSU5UUywgMCwgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElE
X1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJvdW5k
IGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAgICAgICAgICAg
IGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wu
UE9JTlRTLCAwLCAxKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9G
UkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZi
byk7CisKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAgIH0pKTsKKwor
ICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFj
aygnZHJhd19hcnJheXNfaW52YWxpZF9wcm9ncmFtJywgJ0ludmFsaWQgZ2wuZHJhd0FycmF5cygp
IHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxs
KTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfT1BFUkFU
SU9OIGlzIGdlbmVyYXRlZCBpZiBnbC51c2VQcm9ncmFtKG51bGwpIGlzIHVzZWQuJyk7CisgICAg
ICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMSk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICB9KSk7CisKKyAg
ICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2so
J2RyYXdfYXJyYXlzX2luY29tcGxldGVfcHJpbWl0aXZlJywgJ0ludmFsaWQgZ2wuZHJhd0FycmF5
cygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle2dsdVNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3Vy
Y2VzKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpKTsKKyAgICAgICAg
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgLyoq
IEB0eXBle1dlYkdMRnJhbWVidWZmZXJ9ICovIHZhciBmYm87CisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIG1vZGUgaXMg
bm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgZ2wuZHJhd0FycmF5cygtMSwg
MCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdl
bmVyYXRlZCBpZiBjb3VudCBpcyBuZWdhdGl2ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCAtMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGds
LklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBjdXJyZW50
bHkgYm91bmQgZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLicpOworICAg
ICAgICAgICAgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgICAgIGdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgICAgICAgICAgZ2wuZHJhd0Fy
cmF5cyhnbC5UUklBTkdMRVMsIDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlRnJh
bWVidWZmZXIoZmJvKTsKKworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCdkcmF3X2VsZW1lbnRzJywgJ0ludmFsaWQgZ2wuZHJhd0VsZW1lbnRzKCkg
dXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7Z2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9n
cmFtLlNoYWRlclByb2dyYW0oZ2wsZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMo
dmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSkpOworICAgICAgICAgICAg
Z2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAvKiogQHR5
cGV7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZibzsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtX
ZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZjsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrfSAqLyB2YXIgdGZJRDsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9
ICovIHZhciB2ZXJ0aWNlcyA9IDA7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEJ1ZmZl
cn0gKi8gdmFyIGJ1ZkVsZW1lbnRzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICBn
bC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZFbGVtZW50cyk7CisKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJh
dGVkIGlmIG1vZGUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAgICAgZ2wu
ZHJhd0VsZW1lbnRzKC0xLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHR5cGUg
aXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdmFsdWVzLicpOworICAgICAgICAgICAgZ2wuZHJh
d0VsZW1lbnRzKGdsLlBPSU5UUywgMCwgLTEsIHZlcnRpY2VzKTsKKyAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50
cyhnbC5QT0lOVFMsIDAsIGdsLkZMT0FULCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBjb3VudCBpcyBuZWdhdGl2
ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5QT0lOVFMsIC0xLCBnbC5VTlNJ
R05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRoZSBjdXJyZW50bHkg
Ym91bmQgZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLicpOworICAgICAg
ICAgICAgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgICAgIGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1l
bnRzKGdsLlBPSU5UUywgMCwgZ2wuVU5TSUdORURfQllURSwgdmVydGljZXMpOworICAgICAgICAg
ICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7Cisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAg
ICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKworICAgICAgICAgICAgaWYgKCFz
Z2xyR0xDb250ZXh0LmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGdsLCAnRVhUX2dlb21ldHJ5X3NoYWRl
cicpKSB7IC8vIGdsLkVYVF9nZW9tZXRyeV9zaGFkZXIgcmVtb3ZlcyBlcnJvcgorICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5l
cmF0ZWQgaWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90IHBhdXNlZC4nKTsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHRmVmFyeWlu
ZyA9IFsnZ2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFj
aygpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSAocHJvZ3JhbS5nZXRQcm9ncmFt
KCkpOworICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MgKHByb2dy
YW0uZ2V0UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAg
ICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFtIChwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAg
ICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUkFOU0ZPUk1fRkVFREJB
Q0ssIHRmSUQpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIgKGdsLlRSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YSAoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgICAg
ICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UgKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IDAsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayAoZ2wu
UE9JTlRTKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7
CisKKyAgICAgICAgICAgICAgICBnbC5kcmF3RWxlbWVudHMgKGdsLlBPSU5UUywgMCwgZ2wuVU5T
SUdORURfQllURSwgdmVydGljZXMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Ig
KGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEg
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAzMiwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAg
ICAgICAgICAgZ2wucGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIGds
LmRyYXdFbGVtZW50cyAoZ2wuUE9JTlRTLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7
CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAg
ICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2sgKCk7CisgICAgICAgICAgICAgICAg
Z2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2sodGZJRCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZkVsZW1l
bnRzKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAg
ICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBp
Q2FzZUNhbGxiYWNrKCdkcmF3X2VsZW1lbnRzX2ludmFsaWRfcHJvZ3JhbScsICdJbnZhbGlkIGds
LmRyYXdFbGVtZW50cygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ2wu
dXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciB2
ZXJ0aWNlcyA9IDA7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEJ1ZmZlcn0gKi8gdmFy
IGJ1ZkVsZW1lbnRzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kQnVm
ZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZFbGVtZW50cyk7CisKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgZ2wudXNlUHJvZ3JhbShudWxsKSB3YXMgc2V0LicpOworICAgICAgICAgICAgZ2wuZHJhd0Vs
ZW1lbnRzKGdsLlBPSU5UUywgMCwgZ2wuVU5TSUdORURfQllURSwgdmVydGljZXMpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZFbGVtZW50cyk7CisKKyAgICAgICAgfSkpOworCisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdk
cmF3X2VsZW1lbnRzX2luY29tcGxldGVfcHJpbWl0aXZlJywgJ0ludmFsaWQgZ2wuZHJhd0VsZW1l
bnRzKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7Z2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFk
ZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1Nv
dXJjZXModmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSkpOworICAgICAg
ICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAv
KiogQHR5cGV7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZibzsKKyAgICAgICAgICAgIC8qKiBA
dHlwZXtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZjsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrfSAqLyB2YXIgdGZJRDsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtu
dW1iZXJ9ICovIHZhciB2ZXJ0aWNlcyA9IDA7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJH
TEJ1ZmZlcn0gKi8gdmFyIGJ1ZkVsZW1lbnRzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAg
ICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZFbGVtZW50cyk7
CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMg
Z2VuZXJhdGVkIGlmIG1vZGUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOworICAgICAgICAg
ICAgZ2wuZHJhd0VsZW1lbnRzKC0xLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7Cisg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlm
IHR5cGUgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdmFsdWVzLicpOworICAgICAgICAgICAg
Z2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgLTEsIHZlcnRpY2VzKTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmRy
YXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDAsIGdsLkZMT0FULCB2ZXJ0aWNlcyk7CisgICAgICAg
ICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBjb3Vu
dCBpcyBuZWdhdGl2ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdM
RVMsIC0xLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlm
IHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBs
ZXRlLicpOworICAgICAgICAgICAgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAg
ICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgICAgICAg
ICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgZ2wuVU5TSUdORURfQllURSwgdmVy
dGljZXMpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVG
RkVSX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKwor
ICAgICAgICAgICAgaWYgKCFzZ2xyR0xDb250ZXh0LmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGdsLCAn
RVhUX2dlb21ldHJ5X3NoYWRlcicpKSB7Ly8gZ2wuRVhUX2dlb21ldHJ5X3NoYWRlciByZW1vdmVz
IGVycm9yCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgYWN0aXZlIGFu
ZCBub3QgcGF1c2VkLicpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZXtBcnJheTxzdHJpbmc+
fSAqLyB2YXIgdGZWYXJ5aW5nID0gWydnbF9Qb3NpdGlvbiddOworCisgICAgICAgICAgICAgICAg
YnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdGZJRCA9IGdsLmNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtIChw
cm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyAocHJvZ3JhbS5nZXRQcm9ncmFtKCksIHRmVmFyeWluZywgZ2wuSU5URVJMRUFW
RURfQVRUUklCUyk7CisgICAgICAgICAgICAgICAgZ2wubGlua1Byb2dyYW0gKHByb2dyYW0uZ2V0
UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2sgKGds
LlRSQU5TRk9STV9GRUVEQkFDSywgdGZJRCk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZl
ciAoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmKTsKKyAgICAgICAgICAgICAgICBn
bC5idWZmZXJEYXRhIChnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAzMiwgZ2wuRFlOQU1J
Q19EUkFXKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyQmFzZSAoZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmKTsKKyAgICAgICAgICAgICAgICBnbC5iZWdpblRyYW5z
Zm9ybUZlZWRiYWNrIChnbC5UUklBTkdMRVMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50cyAo
Z2wuVFJJQU5HTEVTLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAgICAgZ2wuYnVmZmVyRGF0YSAoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDMyLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAgICAgICBnbC5wYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCk7CisgICAgICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzIChnbC5UUklBTkdMRVMsIDAsIGds
LlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yIChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBnbC5lbmRUcmFuc2Zvcm1GZWVk
YmFjayAoKTsKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTsKKyAgICAgICAg
ICAgICAgICBnbC5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh0ZklEKTsKKyAgICAgICAgICAgICAg
ICBnbC5kZWxldGVCdWZmZXIoYnVmRWxlbWVudHMpOworICAgICAgICAgICAgICAgIHRoaXMuZXhw
ZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBn
bC51c2VQcm9ncmFtKG51bGwpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2RyYXdfYXJyYXlzX2luc3Rh
bmNlZCcsICdJbnZhbGlkIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoKSB1c2FnZScsIGdsLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclBy
b2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3Jh
bShnbCxnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKSk7CisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHBy
b2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEZyYW1lYnVm
ZmVyfSAqLyB2YXIgZmJvOworCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZmZXJ9ICov
IHZhciBidWZFbGVtZW50cyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZkVsZW1lbnRzKTsKKworICAgICAgICAgICAgZ2wu
dmVydGV4QXR0cmliRGl2aXNvcigwLCAxKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5W
QUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBtb2RlIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1ZS4n
KTsKKyAgICAgICAgICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQoLTEsIDAsIDEsIDEpOworICAg
ICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYg
Y291bnQgb3IgcHJpbWNvdW50IGFyZSBuZWdhdGl2ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdB
cnJheXNJbnN0YW5jZWQoZ2wuUE9JTlRTLCAwLCAtMSwgMSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgZ2wuZHJhd0FycmF5c0lu
c3RhbmNlZChnbC5QT0lOVFMsIDAsIDEsIC0xKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGN1
cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciBpcyBub3QgZnJhbWVidWZmZXIgY29tcGxldGUuJyk7
CisgICAgICAgICAgICBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBnbC5k
cmF3QXJyYXlzSW5zdGFuY2VkKGdsLlBPSU5UUywgMCwgMSwgMSk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgICAg
ICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworCisgICAgICAgICAgICBnbC5kZWxldGVCdWZm
ZXIoYnVmRWxlbWVudHMpOworCisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAg
ICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ2RyYXdfYXJyYXlzX2luc3RhbmNlZF9pbnZhbGlkX3Byb2dyYW0nLCAn
SW52YWxpZCBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKCkgdXNhZ2UnLCBnbCwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworCisgICAgICAgICAgICAvKiogQHR5
cGV7V2ViR0xCdWZmZXJ9ICovIHZhciBidWZFbGVtZW50cyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwor
ICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZkVsZW1lbnRzKTsK
KworICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcigwLCAxKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsLnVzZVBy
b2dyYW0obnVsbCkgaXMgc2V0LicpOworICAgICAgICAgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNl
ZChnbC5QT0lOVFMsIDAsIDEsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5J
TlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZFbGVt
ZW50cyk7CisKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdkcmF3X2FycmF5c19pbnN0YW5jZWRfaW5jb21w
bGV0ZV9wcmltaXRpdmUnLCAnSW52YWxpZCBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKCkgdXNhZ2Un
LCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGV7Z2x1U2hhZGVyUHJvZ3Jh
bS5TaGFkZXJQcm9ncmFtfSAqLyB2YXIgcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW0oZ2wsZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSkpOworICAgICAgICAgICAgZ2wudXNl
UHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAvKiogQHR5cGV7V2Vi
R0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZibzsKKworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdM
QnVmZmVyfSAqLyB2YXIgYnVmRWxlbWVudHMgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZFbGVtZW50cyk7CisKKyAgICAg
ICAgICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoMCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgbW9kZSBpcyBub3QgYW4gYWNjZXB0
ZWQgdmFsdWUuJyk7CisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKC0xLCAwLCAx
LCAxKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9FTlVNKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfVkFMVUUgaXMgZ2Vu
ZXJhdGVkIGlmIGNvdW50IG9yIHByaW1jb3VudCBhcmUgbmVnYXRpdmUuJyk7CisgICAgICAgICAg
ICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgMCwgLTEsIDEpOworICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIGds
LmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCAxLCAtMSk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2Vu
ZXJhdGVkIGlmIHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVm
ZmVyIGNvbXBsZXRlLicpOworICAgICAgICAgICAgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsK
KyAgICAgICAgICAgIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOwor
ICAgICAgICAgICAgZ2wuZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAsIDEsIDEp
OworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09Q
RVJBVElPTik7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKworICAgICAg
ICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZkVsZW1lbnRzKTsKKworICAgICAgICAgICAgZ2wudXNl
UHJvZ3JhbShudWxsKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdkcmF3X2VsZW1lbnRzX2luc3RhbmNl
ZCcsICdJbnZhbGlkIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZCgpIHVzYWdlJywgZ2wsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJv
Z3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
KGdsLGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpKTsKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJv
Z3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMRnJhbWVidWZm
ZXJ9ICovIHZhciBmYm87CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZmZXJ9ICovIHZh
ciBidWY7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUcmFuc2Zvcm1GZWVkYmFja30gKi8g
dmFyIHRmSUQ7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgdmVydGljZXMg
PSAwOworCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZmZXJ9ICovIHZhciBidWZFbGVt
ZW50cyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmRWxlbWVudHMpOworCisgICAgICAgICAgICBnbC52ZXJ0
ZXhBdHRyaWJEaXZpc29yKDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5O
T19FUlJPUik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIG1vZGUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicpOwor
ICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKC0xLCAwLCBnbC5VTlNJR05FRF9C
WVRFLCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFM
SURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHR5cGUgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQgdmFs
dWVzLicpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlBPSU5UUywg
MCwgLTEsIHZlcnRpY2VzLCAxKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5QT0lO
VFMsIDAsIGdsLkZMT0FULCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVy
cm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBjb3VudCBvciBwcmltY291bnQgYXJl
IG5lZ2F0aXZlLicpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlBP
SU5UUywgLTEsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzLCAwKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICBnbC5kcmF3RWxl
bWVudHNJbnN0YW5jZWQoZ2wuUE9JTlRTLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcywg
LTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVy
IGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAgICAgICAgICAgIGZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5Q
T0lOVFMsIDAsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzLCAxKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgICAg
ICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAg
ICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisKKyAgICAgICAgICAgIGlmICghc2dsckdM
Q29udGV4dC5pc0V4dGVuc2lvblN1cHBvcnRlZChnbCwgJ0VYVF9nZW9tZXRyeV9zaGFkZXInKSkg
ey8vIGdsLkVYVF9nZW9tZXRyeV9zaGFkZXIgcmVtb3ZlcyBlcnJvcgorICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90IHBhdXNlZC4nKTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHRmVmFyeWluZyA9IFsn
Z2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOwor
CisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSAocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOwor
ICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MgKHByb2dyYW0uZ2V0
UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgICAgICAg
ICAgICAgIGdsLmxpbmtQcm9ncmFtIChwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAg
ICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIHRm
SUQpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIgKGdsLlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YSAoZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgICAgICAgICAg
ICAgZ2wuYmluZEJ1ZmZlckJhc2UgKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1
Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayAoZ2wuUE9JTlRT
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisKKyAg
ICAgICAgICAgICAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQgKGdsLlBPSU5UUywgMCwgZ2wu
VU5TSUdORURfQllURSwgdmVydGljZXMsIDEpOworICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
RXJyb3IgKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgICAgIGdsLmJ1ZmZl
ckRhdGEgKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAzMiwgZ2wuU1RBVElDX0RSQVcpOworCisg
ICAgICAgICAgICAgICAgZ2wucGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAg
ICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZCAoZ2wuUE9JTlRTLCAwLCBnbC5VTlNJR05FRF9C
WVRFLCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wu
Tk9fRVJST1IpOworCisgICAgICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2sgKCk7
CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAg
Z2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJRCk7CisgICAgICAgICAgICAgICAgZ2wuZGVs
ZXRlQnVmZmVyKGJ1ZkVsZW1lbnRzKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
IChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wudXNlUHJv
Z3JhbShudWxsKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdkcmF3X2VsZW1lbnRzX2luc3RhbmNlZF9p
bnZhbGlkX3Byb2dyYW0nLCAnSW52YWxpZCBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoKSB1c2Fn
ZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7Cisg
ICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVyfSAqLyB2YXIgdmVydGljZXMgPSAwOworCisgICAg
ICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZmZXJ9ICovIHZhciBidWZFbGVtZW50czsKKyAgICAg
ICAgICAgIGJ1ZkVsZW1lbnRzID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICBnbC5i
aW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZFbGVtZW50cyk7CisKKyAgICAg
ICAgICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoMCwgMSk7CisgICAgICAgICAgICB0aGlzLmV4
cGVjdEVycm9yKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBnbC51c2VQcm9ncmFtKG51
bGwpIGlzIHNldC4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5Q
T0lOVFMsIDAsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzLCAxKTsKKyAgICAgICAgICAgIHRo
aXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAgICAgICBnbC5k
ZWxldGVCdWZmZXIoYnVmRWxlbWVudHMpOworCisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZHJhd19lbGVt
ZW50c19pbnN0YW5jZWRfaW5jb21wbGV0ZV9wcmltaXRpdmUnLCAnSW52YWxpZCBnbC5kcmF3RWxl
bWVudHNJbnN0YW5jZWQoKSB1c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZXtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0g
bmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCxnbHVTaGFkZXJQcm9ncmFtLm1h
a2VWdHhGcmFnU291cmNlcyh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNl
KSk7CisgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvOworICAgICAg
ICAgICAgLyoqIEB0eXBle1dlYkdMQnVmZmVyfSAqLyB2YXIgYnVmOworICAgICAgICAgICAgLyoq
IEB0eXBle1dlYkdMVHJhbnNmb3JtRmVlZGJhY2t9ICovIHZhciB0ZklEOworICAgICAgICAgICAg
LyoqIEB0eXBle251bWJlcn0gKi8gdmFyIHZlcnRpY2VzID0gMDsKKworICAgICAgICAgICAgLyoq
IEB0eXBle1dlYkdMQnVmZmVyfSAqLyB2YXIgYnVmRWxlbWVudHM7CisgICAgICAgICAgICBidWZF
bGVtZW50cyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmRWxlbWVudHMpOworCisgICAgICAgICAgICBnbC52
ZXJ0ZXhBdHRyaWJEaXZpc29yKDAsIDEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihn
bC5OT19FUlJPUik7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIG1vZGUgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLicp
OworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKC0xLCAwLCBnbC5VTlNJR05F
RF9CWVRFLCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yKGdsLklO
VkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZB
TElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHR5cGUgaXMgbm90IG9uZSBvZiB0aGUgYWNjZXB0ZWQg
dmFsdWVzLicpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRSSUFO
R0xFUywgMCwgLTEsIHZlcnRpY2VzLCAxKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3Io
Z2wuSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZChn
bC5UUklBTkdMRVMsIDAsIGdsLkZMT0FULCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAgICB0aGlz
LmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBjb3VudCBvciBwcmlt
Y291bnQgYXJlIG5lZ2F0aXZlLicpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKGdsLlRSSUFOR0xFUywgLTEsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzLCAwKTsKKyAg
ICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICBnbC5kcmF3RWxlbWVudHNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCBnbC5VTlNJR05FRF9C
WVRFLCB2ZXJ0aWNlcywgLTEpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLklOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgY3VycmVudGx5IGJv
dW5kIGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21wbGV0ZS4nKTsKKyAgICAgICAg
ICAgIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgICAgICBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50
c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIDAsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzLCAx
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pOworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisKKyAgICAg
ICAgICAgIGlmICghc2dsckdMQ29udGV4dC5pc0V4dGVuc2lvblN1cHBvcnRlZChnbCwgJ0VYVF9n
ZW9tZXRyeV9zaGFkZXInKSkgey8vIGdsLkVYVF9nZW9tZXRyeV9zaGFkZXIgcmVtb3ZlcyBlcnJv
cgorICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJB
VElPTiBpcyBnZW5lcmF0ZWQgaWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90
IHBhdXNlZC4nKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHRmVmFyeWluZyA9IFsnZ2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSAocHJvZ3Jh
bS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MgKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FU
VFJJQlMpOworICAgICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFtIChwcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUkFO
U0ZPUk1fRkVFREJBQ0ssIHRmSUQpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIgKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVm
ZmVyRGF0YSAoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJB
Vyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UgKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayAoZ2wuVFJJQU5HTEVTKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
IChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBnbC5kcmF3RWxlbWVudHNJbnN0YW5j
ZWQgKGdsLlRSSUFOR0xFUywgMCwgZ2wuVU5TSUdORURfQllURSwgdmVydGljZXMsIDEpOworICAg
ICAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IgKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKwor
ICAgICAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEgKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAz
MiwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICAgICAgZ2wucGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpOworICAgICAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50c0luc3RhbmNlZCAoZ2wu
VFJJQU5HTEVTLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcywgMSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICAgICAg
Z2wuZW5kVHJhbnNmb3JtRmVlZGJhY2sgKCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVm
ZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodGZJ
RCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZkVsZW1lbnRzKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7CisKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgfSkpOworCisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNr
KCdkcmF3X3JhbmdlX2VsZW1lbnRzJywgJ0ludmFsaWQgZ2wuZHJhd1JhbmdlRWxlbWVudHMoKSB1
c2FnZScsIGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtnbHVTaGFkZXJQ
cm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dy
YW0uU2hhZGVyUHJvZ3JhbShnbCxnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKSk7CisgICAgICAgICAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZXtXZWJHTEZyYW1lYnVmZmVyfSAqLyB2YXIgZmJvOworICAgICAgICAgICAgLyoqIEB0eXBle1dl
YkdMQnVmZmVyfSAqLyB2YXIgYnVmOworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2t9ICovIHZhciB0ZklEOworICAgICAgICAgICAgLyoqIEB0eXBle251bWJlcn0g
Ki8gdmFyIHZlcnRpY2VzID0gMDsKKworICAgICAgICAgICAgLyoqIEB0eXBle1dlYkdMQnVmZmVy
fSAqLyB2YXIgYnVmRWxlbWVudHM7CisgICAgICAgICAgICBidWZFbGVtZW50cyA9IGdsLmNyZWF0
ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgYnVmRWxlbWVudHMpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBtb2RlIGlzIG5vdCBhbiBhY2NlcHRlZCB2
YWx1ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKC0xLCAwLCAxLCAwLCBn
bC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9y
KGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdn
bC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIHR5cGUgaXMgbm90IG9uZSBvZiB0aGUgYWNj
ZXB0ZWQgdmFsdWVzLicpOworICAgICAgICAgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wuUE9J
TlRTLCAwLCAxLCAwLCAtMSwgdmVydGljZXMpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJv
cihnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wu
UE9JTlRTLCAwLCAxLCAwLCBnbC5GTE9BVCwgdmVydGljZXMpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgY291bnQgaXMgbmVnYXRp
dmUuJyk7CisgICAgICAgICAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5QT0lOVFMsIDAsIDEs
IC0xLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfVkFMVUUpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgZW5kIDwgc3RhcnQuJyk7Cisg
ICAgICAgICAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5QT0lOVFMsIDEsIDAsIDAsIGdsLlVO
U0lHTkVEX0JZVEUsIHZlcnRpY2VzKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wu
SU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5J
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGN1cnJlbnRs
eSBib3VuZCBmcmFtZWJ1ZmZlciBpcyBub3QgZnJhbWVidWZmZXIgY29tcGxldGUuJyk7CisgICAg
ICAgICAgICBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICAgICAgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBnbC5kcmF3UmFu
Z2VFbGVtZW50cyhnbC5QT0lOVFMsIDAsIDEsIDAsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2Vz
KTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pOworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBudWxsKTsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisKKyAgICAg
ICAgICAgIGlmICghc2dsckdMQ29udGV4dC5pc0V4dGVuc2lvblN1cHBvcnRlZChnbCwgJ0VYVF9n
ZW9tZXRyeV9zaGFkZXInKSkgey8vIGdsLkVYVF9nZW9tZXRyeV9zaGFkZXIgcmVtb3ZlcyBlcnJv
cgorICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX09QRVJB
VElPTiBpcyBnZW5lcmF0ZWQgaWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90
IHBhdXNlZC4nKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGV7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHRmVmFyeWluZyA9IFsnZ2xfUG9zaXRpb24nXTsKKworICAgICAgICAgICAgICAgIGJ1ZiA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRmSUQgPSBnbC5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSAocHJvZ3Jh
bS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgICAgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MgKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCB0ZlZhcnlpbmcsIGdsLklOVEVSTEVBVkVEX0FU
VFJJQlMpOworICAgICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFtIChwcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgICAgICAgICAgZ2wuYmluZFRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUkFO
U0ZPUk1fRkVFREJBQ0ssIHRmSUQpOworICAgICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIgKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYnVm
ZmVyRGF0YSAoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMzIsIGdsLkRZTkFNSUNfRFJB
Vyk7CisgICAgICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UgKGdsLlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayAoZ2wuUE9JTlRTKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChn
bC5OT19FUlJPUik7CisKKyAgICAgICAgICAgICAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyAoZ2wu
UE9JTlRTLCAwLCAxLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
ICAgICAgICAgZ2wuYnVmZmVyRGF0YSAoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDMyLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICAgICAgICAgICAgICBnbC5wYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCk7CisgICAgICAgICAgICAgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMgKGdsLlBPSU5UUywgMCwg
MSwgMCwgZ2wuVU5TSUdORURfQllURSwgdmVydGljZXMpOworICAgICAgICAgICAgICAgIHRoaXMu
ZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLmVuZFRyYW5z
Zm9ybUZlZWRiYWNrICgpOworICAgICAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOwor
ICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHRmSUQpOworICAgICAg
ICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZFbGVtZW50cyk7CisgICAgICAgICAgICAgICAg
dGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygnZHJhd19yYW5n
ZV9lbGVtZW50c19pbnZhbGlkX3Byb2dyYW0nLCAnSW52YWxpZCBnbC5kcmF3UmFuZ2VFbGVtZW50
cygpIHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShu
dWxsKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZXtudW1iZXJ9ICovIHZhciB2ZXJ0aWNlcyA9IDA7
CisKKyAgICAgICAgICAgIC8qKiBAdHlwZXtXZWJHTEJ1ZmZlcn0gKi8gdmFyIGJ1ZkVsZW1lbnRz
OworICAgICAgICAgICAgYnVmRWxlbWVudHMgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1ZkVsZW1lbnRzKTsK
KyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEgKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAzMiwg
Z2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
SU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGdsLnVzZVByb2dyYW0obnVsbCkgaXMg
c2V0LicpOworICAgICAgICAgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoZ2wuUE9JTlRTLCAwLCAx
LCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKworICAgICAgICAgICAgZ2wuZGVsZXRlQnVm
ZmVyKGJ1ZkVsZW1lbnRzKTsKKworICAgICAgICB9KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ2RyYXdfcmFuZ2VfZWxlbWVu
dHNfaW5jb21wbGV0ZV9wcmltaXRpdmUnLCAnSW52YWxpZCBnbC5kcmF3UmFuZ2VFbGVtZW50cygp
IHVzYWdlJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLyoqIEB0eXBle2dsdVNoYWRl
clByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtKGdsLGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2Vz
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpKTsKKyAgICAgICAgICAg
IGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICAgICAgLyoqIEB0
eXBle1dlYkdMRnJhbWVidWZmZXJ9ICovIHZhciBmYm87CisgICAgICAgICAgICAvKiogQHR5cGV7
V2ViR0xCdWZmZXJ9ICovIHZhciBidWY7CisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xUcmFu
c2Zvcm1GZWVkYmFja30gKi8gdmFyIHRmSUQ7CisgICAgICAgICAgICAvKiogQHR5cGV7bnVtYmVy
fSAqLyB2YXIgdmVydGljZXMgPSAwOworCisgICAgICAgICAgICAvKiogQHR5cGV7V2ViR0xCdWZm
ZXJ9ICovIHZhciBidWZFbGVtZW50czsKKyAgICAgICAgICAgIGJ1ZkVsZW1lbnRzID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlf
QlVGRkVSLCBidWZFbGVtZW50cyk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdnbC5JTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIG1vZGUgaXMgbm90IGFuIGFjY2VwdGVk
IHZhbHVlLicpOworICAgICAgICAgICAgZ2wuZHJhd1JhbmdlRWxlbWVudHMoLTEsIDAsIDEsIDAs
IGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzKTsKKyAgICAgICAgICAgIHRoaXMuZXhwZWN0RXJy
b3IoZ2wuSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgdHlwZSBpcyBub3Qgb25lIG9mIHRoZSBh
Y2NlcHRlZCB2YWx1ZXMuJyk7CisgICAgICAgICAgICBnbC5kcmF3UmFuZ2VFbGVtZW50cyhnbC5U
UklBTkdMRVMsIDAsIDEsIDAsIC0xLCB2ZXJ0aWNlcyk7CisgICAgICAgICAgICB0aGlzLmV4cGVj
dEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBnbC5kcmF3UmFuZ2VFbGVtZW50
cyhnbC5UUklBTkdMRVMsIDAsIDEsIDAsIGdsLkZMT0FULCB2ZXJ0aWNlcyk7CisgICAgICAgICAg
ICB0aGlzLmV4cGVjdEVycm9yKGdsLklOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBjb3VudCBp
cyBuZWdhdGl2ZS4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFO
R0xFUywgMCwgMSwgLTEsIGdsLlVOU0lHTkVEX0JZVEUsIHZlcnRpY2VzKTsKKyAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IoZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5JTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBlbmQgPCBz
dGFydC4nKTsKKyAgICAgICAgICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFOR0xFUywg
MSwgMCwgMCwgZ2wuVU5TSUdORURfQllURSwgdmVydGljZXMpOworICAgICAgICAgICAgdGhpcy5l
eHBlY3RFcnJvcihnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ2dsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBp
ZiB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21w
bGV0ZS4nKTsKKyAgICAgICAgICAgIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
ICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAg
ICAgICBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsKKyAgICAgICAg
ICAgIGdsLmRyYXdSYW5nZUVsZW1lbnRzKGdsLlRSSUFOR0xFUywgMCwgMSwgMCwgZ2wuVU5TSUdO
RURfQllURSwgdmVydGljZXMpOworICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvcihnbC5JTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZm
ZXIoZmJvKTsKKworICAgICAgICAgICAgaWYgKCFzZ2xyR0xDb250ZXh0LmlzRXh0ZW5zaW9uU3Vw
cG9ydGVkKGdsLCAnRVhUX2dlb21ldHJ5X3NoYWRlcicpKSB7Ly8gZ2wuRVhUX2dlb21ldHJ5X3No
YWRlciByZW1vdmVzIGVycm9yCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J2dsLklOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0cmFuc2Zvcm0gZmVlZGJhY2sg
aXMgYWN0aXZlIGFuZCBub3QgcGF1c2VkLicpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZXtB
cnJheTxzdHJpbmc+fSAqLyB2YXIgdGZWYXJ5aW5nID0gWydnbF9Qb3NpdGlvbiddOworCisgICAg
ICAgICAgICAgICAgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdGZJ
RCA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICAgICAgICAgICAgICBnbC51
c2VQcm9ncmFtIChwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgICAgICAgICAgICAgZ2wudHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyAocHJvZ3JhbS5nZXRQcm9ncmFtKCksIHRmVmFyeWluZywg
Z2wuSU5URVJMRUFWRURfQVRUUklCUyk7CisgICAgICAgICAgICAgICAgZ2wubGlua1Byb2dyYW0g
KHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kVHJhbnNmb3Jt
RmVlZGJhY2sgKGdsLlRSQU5TRk9STV9GRUVEQkFDSywgdGZJRCk7CisgICAgICAgICAgICAgICAg
Z2wuYmluZEJ1ZmZlciAoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmKTsKKyAgICAg
ICAgICAgICAgICBnbC5idWZmZXJEYXRhIChnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAz
MiwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kQnVmZmVyQmFzZSAo
Z2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmKTsKKyAgICAgICAgICAgICAgICBn
bC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrIChnbC5UUklBTkdMRVMpOworICAgICAgICAgICAgICAg
IHRoaXMuZXhwZWN0RXJyb3IgKGdsLk5PX0VSUk9SKTsKKworICAgICAgICAgICAgICAgIGdsLmRy
YXdSYW5nZUVsZW1lbnRzIChnbC5UUklBTkdMRVMsIDAsIDEsIDAsIGdsLlVOU0lHTkVEX0JZVEUs
IHZlcnRpY2VzKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAgICAgICAgICAgICBnbC5idWZmZXJEYXRhIChnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgMzIsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICAgICAgICAgIGds
LnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3UmFuZ2VF
bGVtZW50cyAoZ2wuVFJJQU5HTEVTLCAwLCAxLCAwLCBnbC5VTlNJR05FRF9CWVRFLCB2ZXJ0aWNl
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RFcnJvciAoZ2wuTk9fRVJST1IpOworCisg
ICAgICAgICAgICAgICAgZ2wuZW5kVHJhbnNmb3JtRmVlZGJhY2sgKCk7CisgICAgICAgICAgICAg
ICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2sodGZJRCk7CisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZkVs
ZW1lbnRzKTsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdEVycm9yIChnbC5OT19FUlJPUik7
CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAg
ICAgICAgfSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVy
aW5nQ29udGV4dH0gZ2wKKyAgICAqLworICAgIGVzM2ZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVz
dHMucnVuID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ3ZlcnRleF9h
cnJheSc7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnTmVnYXRpdmUgVmVydGV4IEFy
cmF5IEFQSSBDYXNlcyc7CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsK
KworICAgICAgICBzdGF0ZS50ZXN0TmFtZSA9IHRlc3ROYW1lOworICAgICAgICBzdGF0ZS50ZXN0
Q2FzZXMgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51
bGwpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVz
dCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CisgICAgICAg
IGRlc2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBlczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmluaXQoZ2wpOworICAgICAgICAgICAg
dGN1VGVzdENhc2UucnVubmVyLnJ1bkNhbGxiYWNrKHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcyk7
CisgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoZXJyKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAg
ICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZPY2NsdXNp
b25RdWVyeVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1NDlkNjU3YmQ0MWY2NzNkNTExYTgyNzExODU1NzFhODJkNWM0ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuanMKQEAgLTAs
MCArMSw1MTEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkg
UHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9p
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBC
QVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlk
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmT2NjbHVzaW9uUXVlcnlUZXN0cycpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRl
UmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5n
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScpOwor
Citnb29nLnNjb3BlKGZ1bmN0aW9uKCkgewordmFyIGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzID0g
ZnVuY3Rpb25hbC5nbGVzMy5lczNmT2NjbHVzaW9uUXVlcnlUZXN0czsKK3ZhciB0Y3VUZXN0Q2Fz
ZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgdGN1TG9nSW1hZ2UgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlOwordmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2U7Cit2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZVJhbmRvbTsKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5n
OwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dy
YW07CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsKKyAg
ICBjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpOworICAg
IGNoaWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsKKworLyoqIEBjb25zdCAq
LyB2YXIgREVQVEhfV1JJVEVfQ09MT1IgPSBbMCwgMCwgMSwgMV07CisvKiogQGNvbnN0ICovIHZh
ciBERVBUSF9DTEVBUl9DT0xPUiA9IFswLCAwLjUsIDAuOCwgMV07CisvKiogQGNvbnN0ICovIHZh
ciBTVEVOQ0lMX1dSSVRFX0NPTE9SID0gWzAsIDEsIDAsIDFdOworLyoqIEBjb25zdCAqLyB2YXIg
U1RFTkNJTF9DTEVBUl9DT0xPUiA9IFswLCAwLjgsIDAuNSwgMV07CisvKiogQGNvbnN0ICovIHZh
ciBUQVJHRVRfQ09MT1IgPSBbMSwgMCwgMCwgMV07CisvKiogQGNvbnN0ICovIHZhciBFTEVNRU5U
U19QRVJfVkVSVEVYID0gNDsKKy8qKiBAY29uc3QgKi8gdmFyIE5VTV9DQVNFX0lURVJBVElPTlMg
PSAxMDsKKworLy8gQ29uc3RhbnRzIHRvIHR3ZWFrIHZpc2libGUvaW52aXNpYmxlIGNhc2UgcHJv
YmFiaWxpdHkgYmFsYW5jZS4KKworLyoqIEBjb25zdCAqLyB2YXIgREVQVEhfQ0xFQVJfT0ZGU0VU
ID0gMTAwOworLyoqIEBjb25zdCAqLyB2YXIgU1RFTkNJTF9DTEVBUl9PRkZTRVQgPSAxMDA7Cisv
KiogQGNvbnN0ICovIHZhciBTQ0lTU09SX09GRlNFVCA9IDEwMDsKKy8qKiBAY29uc3QgKi8gdmFy
IFNDSVNTT1JfTUlOU0laRSA9IDI1MDsKKworLyoqIEBjb25zdCAqLyB2YXIgT0NDTFVERVJfU0NJ
U1NPUiA9ICgxIDw8IDApOworLyoqIEBjb25zdCAqLyB2YXIgT0NDTFVERVJfREVQVEhfV1JJVEUg
PSAoMSA8PCAxKTsKKy8qKiBAY29uc3QgKi8gdmFyIE9DQ0xVREVSX0RFUFRIX0NMRUFSID0gKDEg
PDwgMik7CisvKiogQGNvbnN0ICovIHZhciBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFID0gKDEgPDwg
Myk7CisvKiogQGNvbnN0ICovIHZhciBPQ0NMVURFUl9TVEVOQ0lMX0NMRUFSID0gKDEgPDwgNCk7
CisKKy8qKgorICogQGVudW0KKyAqLworZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuU3RhdGUgPSB7
CisgICAgRFJBVzogMCwKKyAgICBWRVJJRlk6IDEsCisgICAgRklOSVNIOiAyCit9OworCisvKiBN
YXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgcXVlcnkgcmVzdWx0IChpbiBzZWNvbmRzKSAqLworLyoq
IEBjb25zdCAqLyB2YXIgTUFYX1ZFUklGWV9XQUlUID0gNTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqLworZXMzZk9jY2x1c2lv
blF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRp
b24sIG51bU9jY2x1ZGVyRHJhd3MsIG51bU9jY2x1ZGVyc1BlckRyYXcsIG9jY2x1ZGVyU2l6ZSwg
bnVtVGFyZ2V0RHJhd3MsIG51bVRhcmdldHNQZXJEcmF3LCB0YXJnZXRTaXplLCBxdWVyeU1vZGUs
IG9jY2x1ZGVyVHlwZXMpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKKyAgICB0aGlzLm1fbnVtT2NjbHVkZXJEcmF3cyA9IG51bU9jY2x1
ZGVyRHJhd3M7CisgICAgdGhpcy5tX251bU9jY2x1ZGVyc1BlckRyYXcgPSBudW1PY2NsdWRlcnNQ
ZXJEcmF3OworICAgIHRoaXMubV9vY2NsdWRlclNpemUgPSBvY2NsdWRlclNpemU7CisgICAgdGhp
cy5tX251bVRhcmdldERyYXdzID0gbnVtVGFyZ2V0RHJhd3M7CisgICAgdGhpcy5tX251bVRhcmdl
dHNQZXJEcmF3ID0gbnVtVGFyZ2V0c1BlckRyYXc7CisgICAgdGhpcy5tX3RhcmdldFNpemUgPSB0
YXJnZXRTaXplOworICAgIHRoaXMubV9xdWVyeU1vZGUgPSBxdWVyeU1vZGU7CisgICAgdGhpcy5t
X29jY2x1ZGVyVHlwZXMgPSBvY2NsdWRlclR5cGVzOworICAgIHRoaXMubV9wcm9ncmFtID0gbnVs
bDsKKyAgICB0aGlzLm1faXRlck5keCA9IDA7CisgICAgdGhpcy5tX3JuZCA9IG5ldyBkZVJhbmRv
bS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKG5hbWUpKTsKKyAgICB0aGlzLm1fc3RhdGUg
PSBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5TdGF0ZS5EUkFXOworICAgIC8qKiBAdHlwZSB7V2Vi
R0xRdWVyeX0gKi8gdGhpcy5tX3F1ZXJ5OworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZk9jY2x1
c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlLCB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCk7
CisKK2VzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZS5wcm90b3R5cGUu
Z2VuZXJhdGVWZXJ0aWNlcyA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQsIHByaW1pdGl2ZUNvdW50
LCB2ZXJ0aWNlc1BlclByaW1pdGl2ZSwgcm5kLCBwcmltaXRpdmVTaXplLCBtaW5aLCBtYXhaKSB7
CisgICAgdmFyIGRzdCA9IFtdOworICAgIHZhciB3ID0gd2lkdGggLyAyOworICAgIHZhciBoID0g
aGVpZ2h0IC8gMjsKKyAgICB2YXIgcyA9IHByaW1pdGl2ZVNpemUgLyAyOworCisgICAgdmFyIHZl
cnRleENvdW50ID0gdmVydGljZXNQZXJQcmltaXRpdmUgKiBwcmltaXRpdmVDb3VudDsKKworICAg
IC8vIEZpcnN0IGxvb3AgZ2V0cyBhIHJhbmRvbSBwb2ludCBpbnNpZGUgdW5pdCBzcXVhcmUKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpICs9IDMpIHsKKyAgICAgICAgdmFy
IHJuZFggPSBybmQuZ2V0RmxvYXQoLXcsIHcpOworICAgICAgICB2YXIgcm5kWSA9IHJuZC5nZXRG
bG9hdCgtaCwgaCk7CisKKyAgICAgICAgLy8gU2Vjb25kIGxvb3AgZ2V0cyAzIHJhbmRvbSBwb2lu
dHMgd2l0aGluIGdpdmVuIGRpc3RhbmNlIHMgZnJvbSAocm5kWCwgcm5kWSkKKyAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCB2ZXJ0aWNlc1BlclByaW1pdGl2ZTsgaisrKSB7CisgICAgICAgICAg
ICB2YXIgb2Zmc2V0ID0gKGkgKyBqKSAqIEVMRU1FTlRTX1BFUl9WRVJURVg7CisgICAgICAgICAg
ICBkc3Rbb2Zmc2V0XSA9IHJuZFggKyBybmQuZ2V0RmxvYXQoLXMsIHMpOyAvLyB4CisgICAgICAg
ICAgICBkc3Rbb2Zmc2V0ICsgMV0gPSBybmRZICsgcm5kLmdldEZsb2F0KC1zLCBzKTsgLy8geQor
ICAgICAgICAgICAgZHN0W29mZnNldCArIDJdID0gcm5kLmdldEZsb2F0KG1pblosIG1heFopOyAv
LyB6CisgICAgICAgICAgICBkc3Rbb2Zmc2V0ICsgM10gPSAxOyAvLyB3CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGRzdDsKK307CisKK2VzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1
c2lvblF1ZXJ5Q2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB2ZXJ0
U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAg
ICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gbWVkaXVtcCB2ZWM0IGFfcG9z
aXRpb247XG4nICsKKyAgICAgICAgICAgICAgICAnXG4nICsKKyAgICAgICAgICAgICAgICAndm9p
ZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAg
ICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAgICAgJ31c
bic7CisKKyAgICB2YXIgZnJhZ1NoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAgICAgJyN2ZXJz
aW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4nICsKKyAgICAgICAgICAgICAgICAndW5p
Zm9ybSBtZWRpdW1wIHZlYzQgdV9jb2xvcjtcbicgKworICAgICAgICAgICAgICAgICdcbicgKwor
ICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAn
e1xuJyArCisgICAgICAgICAgICAgICAgJyBtZWRpdW1wIGZsb2F0IGRlcHRoX2dyYWRpZW50ID0g
Z2xfRnJhZ0Nvb3JkLno7XG4nICsKKyAgICAgICAgICAgICAgICAnIG1lZGl1bXAgZmxvYXQgYmlh
cyA9IDAuMTtcbicgKworICAgICAgICAgICAgICAgICcgZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHVf
Y29sb3IueHl6ICogKGRlcHRoX2dyYWRpZW50ICsgYmlhcyksIDEpO1xuJyArCisgICAgICAgICAg
ICAgICAgJ31cbic7CisKKyAgICB0aGlzLm1fcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZl
cnRTaGFkZXJTb3VyY2UsIGZyYWdTaGFkZXJTb3VyY2UpKTsKKworICAgIGlmICghdGhpcy5tX3By
b2dyYW0uaXNPaygpKQorICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGNvbXBp
bGUgcHJvZ3JhbScsIHRydWUpOworCisgICAgdGhpcy5tX2J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0aGlzLm1fYnVmZmVyKTsK
KyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIEVMRU1FTlRTX1BFUl9WRVJURVgsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7Cit9OworCitlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNp
b25RdWVyeUNhc2UucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY29sb3JV
bmlmID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSwg
J3VfY29sb3InKTsKKworICAgIHZhciB0YXJnZXRXID0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoOwor
ICAgIHZhciB0YXJnZXRIID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodDsKKworICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdDYXNlIGl0ZXJhdGlvbiAnICsgKHRoaXMubV9pdGVyTmR4ICsgMSkgKyAn
IC8gJyArIE5VTV9DQVNFX0lURVJBVElPTlMpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdQ
YXJhbWV0ZXJzOlxuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLSAnICsg
dGhpcy5tX251bU9jY2x1ZGVyRHJhd3MgKyAnIG9jY2x1ZGVyIGRyYXdzLCAnICsgdGhpcy5tX251
bU9jY2x1ZGVyc1BlckRyYXcgKyAnIHByaW1pdGl2ZSB3cml0ZXMgcGVyIGRyYXcsXG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctICcgKyB0aGlzLm1fbnVtVGFyZ2V0RHJh
d3MgKyAnIHRhcmdldCBkcmF3cywgJyArIHRoaXMubV9udW1UYXJnZXRzUGVyRHJhdyArICcgdGFy
Z2V0cyBwZXIgZHJhd1xuJyk7CisKKyAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAg
IGdsLmNsZWFyRGVwdGgoMSk7CisgICAgZ2wuY2xlYXJTdGVuY2lsKDApOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9C
VUZGRVJfQklUKTsKKyAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0o
KSk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisKKyAgICAvLyBEcmF3IG9j
Y2x1ZGVycworCisgICAgdmFyIG9jY09wdGlvbnMgPSBbXTsKKyAgICBpZiAodGhpcy5tX29jY2x1
ZGVyVHlwZXMgJiBPQ0NMVURFUl9ERVBUSF9XUklURSkgb2NjT3B0aW9ucy5wdXNoKE9DQ0xVREVS
X0RFUFRIX1dSSVRFKTsKKyAgICBpZiAodGhpcy5tX29jY2x1ZGVyVHlwZXMgJiBPQ0NMVURFUl9E
RVBUSF9DTEVBUikgb2NjT3B0aW9ucy5wdXNoKE9DQ0xVREVSX0RFUFRIX0NMRUFSKTsKKyAgICBp
ZiAodGhpcy5tX29jY2x1ZGVyVHlwZXMgJiBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSBvY2NPcHRp
b25zLnB1c2goT0NDTFVERVJfU1RFTkNJTF9XUklURSk7CisgICAgaWYgKHRoaXMubV9vY2NsdWRl
clR5cGVzICYgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikgb2NjT3B0aW9ucy5wdXNoKE9DQ0xVREVS
X1NURU5DSUxfQ0xFQVIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1fbnVtT2Nj
bHVkZXJEcmF3czsgaSsrKSB7CisgICAgICAgIGlmIChvY2NPcHRpb25zLmxlbmd0aCA9PSAwKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmFyIHR5cGUgPSBvY2NPcHRpb25zW3RoaXMu
bV9ybmQuZ2V0SW50KDAsIG9jY09wdGlvbnMubGVuZ3RoIC0gMSldOyAvLyBDaG9vc2luZyBhIHJh
bmRvbSBvY2NsdWRlciB0eXBlIGZyb20gYXZhaWxhYmxlIG9wdGlvbnMKKworICAgICAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgT0NDTFVERVJfREVQVEhfV1JJVEU6CisgICAg
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ09jY2x1ZGVyIGRyYXcgJyArIChpICsg
MSkgKyAnIC8gJyArIHRoaXMubV9udW1PY2NsdWRlckRyYXdzICsgJyA6ICcgKyAnRGVwdGggd3Jp
dGUnKTsKKworICAgICAgICAgICAgICAgIHZhciBvY2NsdWRlclZlcnRpY2VzID0gdGhpcy5nZW5l
cmF0ZVZlcnRpY2VzKDIsIDIsIHRoaXMubV9udW1PY2NsdWRlcnNQZXJEcmF3LCAzLCB0aGlzLm1f
cm5kLCB0aGlzLm1fb2NjbHVkZXJTaXplLCAwLCAwLjYpOyAvLyBHZW5lcmF0ZSB2ZXJ0aWNlcyBm
b3Igb2NjbHVkaW5nIHByaW1pdGl2ZXMKKworICAgICAgICAgICAgICAgIGdsLmVuYWJsZShnbC5E
RVBUSF9URVNUKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtNGYoY29sb3JVbmlmLCBERVBU
SF9XUklURV9DT0xPUlswXSwgREVQVEhfV1JJVEVfQ09MT1JbMV0sIERFUFRIX1dSSVRFX0NPTE9S
WzJdLCBERVBUSF9XUklURV9DT0xPUlszXSk7CisgICAgICAgICAgICAgICAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkob2NjbHVkZXJWZXJ0aWNlcyksIGds
LlNUQVRJQ19EUkFXKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xF
UywgMCwgMyAqIHRoaXMubV9udW1PY2NsdWRlcnNQZXJEcmF3KTsKKyAgICAgICAgICAgICAgICBn
bC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgT0NDTFVERVJfREVQVEhfQ0xFQVI6IHsKKyAgICAgICAgICAgICAgICB2
YXIgc2Npc3NvckJveFggPSB0aGlzLm1fcm5kLmdldEludCgtREVQVEhfQ0xFQVJfT0ZGU0VULCB0
YXJnZXRXKTsKKyAgICAgICAgICAgICAgICB2YXIgc2Npc3NvckJveFkgPSB0aGlzLm1fcm5kLmdl
dEludCgtREVQVEhfQ0xFQVJfT0ZGU0VULCB0YXJnZXRIKTsKKyAgICAgICAgICAgICAgICB2YXIg
c2Npc3NvckJveFcgPSB0aGlzLm1fcm5kLmdldEludChERVBUSF9DTEVBUl9PRkZTRVQsIHRhcmdl
dFcgKyBERVBUSF9DTEVBUl9PRkZTRVQpOworICAgICAgICAgICAgICAgIHZhciBzY2lzc29yQm94
SCA9IHRoaXMubV9ybmQuZ2V0SW50KERFUFRIX0NMRUFSX09GRlNFVCwgdGFyZ2V0SCArIERFUFRI
X0NMRUFSX09GRlNFVCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
T2NjbHVkZXIgZHJhdyAnICsgKGkgKyAxKSArICcgLyAnICsgdGhpcy5tX251bU9jY2x1ZGVyRHJh
d3MgKyAnIDogJyArICdEZXB0aCBjbGVhcicpOworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdEZXB0aC1jbGVhcmluZyBib3ggZHJhd24gYXQgJyArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcgKyBzY2lzc29yQm94WCArICcs
ICcgKyBzY2lzc29yQm94WSArICcpJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLCB3aWR0aCA9ICcgKyBzY2lzc29yQm94VyArICcsIGhlaWdodCA9
ICcgKyBzY2lzc29yQm94SCArICcuJyk7CisKKyAgICAgICAgICAgICAgICBnbC5lbmFibGUoZ2wu
U0NJU1NPUl9URVNUKTsKKyAgICAgICAgICAgICAgICBnbC5zY2lzc29yKHNjaXNzb3JCb3hYLCBz
Y2lzc29yQm94WSwgc2Npc3NvckJveFcsIHNjaXNzb3JCb3hIKTsKKyAgICAgICAgICAgICAgICBn
bC5jbGVhckRlcHRoKDApOworICAgICAgICAgICAgICAgIGdsLmNsZWFyQ29sb3IoREVQVEhfQ0xF
QVJfQ09MT1JbMF0sIERFUFRIX0NMRUFSX0NPTE9SWzFdLCBERVBUSF9DTEVBUl9DT0xPUlsyXSwg
REVQVEhfQ0xFQVJfQ09MT1JbM10pOworICAgICAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgICAgICBnbC5k
aXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFOgorICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdPY2NsdWRlciBkcmF3ICcgKyAoaSAr
IDEpICsgJyAvICcgKyB0aGlzLm1fbnVtT2NjbHVkZXJEcmF3cyArICcgOiAnICsgJ1N0ZW5jaWwg
d3JpdGUnKTsKKworICAgICAgICAgICAgICAgIG9jY2x1ZGVyVmVydGljZXMgPSB0aGlzLmdlbmVy
YXRlVmVydGljZXMoMiwgMiwgdGhpcy5tX251bU9jY2x1ZGVyc1BlckRyYXcsIDMsIHRoaXMubV9y
bmQsIHRoaXMubV9vY2NsdWRlclNpemUsIDAsIDAuNik7CisKKyAgICAgICAgICAgICAgICBnbC5z
dGVuY2lsRnVuYyhnbC5BTFdBWVMsIDEsIDB4RkYpOworICAgICAgICAgICAgICAgIGdsLnN0ZW5j
aWxPcChnbC5LRUVQLCBnbC5LRUVQLCBnbC5SRVBMQUNFKTsKKworICAgICAgICAgICAgICAgIGds
LmVuYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm00Zihj
b2xvclVuaWYsIFNURU5DSUxfV1JJVEVfQ09MT1JbMF0sIFNURU5DSUxfV1JJVEVfQ09MT1JbMV0s
IFNURU5DSUxfV1JJVEVfQ09MT1JbMl0sIFNURU5DSUxfV1JJVEVfQ09MT1JbM10pOworICAgICAg
ICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5
KG9jY2x1ZGVyVmVydGljZXMpLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgICAgICAgICAgZ2wu
ZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMgKiB0aGlzLm1fbnVtT2NjbHVkZXJzUGVyRHJh
dyk7CisgICAgICAgICAgICAgICAgZ2wuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgT0NDTFVERVJfU1RFTkNJTF9D
TEVBUjogeworICAgICAgICAgICAgICAgIHZhciBzY2lzc29yQm94WCA9IHRoaXMubV9ybmQuZ2V0
SW50KC1TVEVOQ0lMX0NMRUFSX09GRlNFVCwgdGFyZ2V0Vyk7CisgICAgICAgICAgICAgICAgdmFy
IHNjaXNzb3JCb3hZID0gdGhpcy5tX3JuZC5nZXRJbnQoLVNURU5DSUxfQ0xFQVJfT0ZGU0VULCB0
YXJnZXRIKTsKKyAgICAgICAgICAgICAgICB2YXIgc2Npc3NvckJveFcgPSB0aGlzLm1fcm5kLmdl
dEludChTVEVOQ0lMX0NMRUFSX09GRlNFVCwgdGFyZ2V0VyArIFNURU5DSUxfQ0xFQVJfT0ZGU0VU
KTsKKyAgICAgICAgICAgICAgICB2YXIgc2Npc3NvckJveEggPSB0aGlzLm1fcm5kLmdldEludChT
VEVOQ0lMX0NMRUFSX09GRlNFVCwgdGFyZ2V0SCArIFNURU5DSUxfQ0xFQVJfT0ZGU0VUKTsKKwor
ICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdPY2NsdWRlciBkcmF3ICcgKyAo
aSArIDEpICsgJyAvICcgKyB0aGlzLm1fbnVtT2NjbHVkZXJEcmF3cyArICcgOiAnICsgJ1N0ZW5j
aWwgY2xlYXInKTsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnU3RlbmNp
bC1jbGVhcmluZyBib3ggZHJhd24gYXQgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnKCcgKyBzY2lzc29yQm94WCArICcsICcgKyBzY2lzc29yQm94
WSArICcpJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLCB3aWR0aCA9ICcgKyBzY2lzc29yQm94VyArICcsIGhlaWdodCA9ICcgKyBzY2lzc29yQm94
SCArICcuJyk7CisKKyAgICAgICAgICAgICAgICBnbC5lbmFibGUoZ2wuU0NJU1NPUl9URVNUKTsK
KyAgICAgICAgICAgICAgICBnbC5zY2lzc29yKHNjaXNzb3JCb3hYLCBzY2lzc29yQm94WSwgc2Np
c3NvckJveFcsIHNjaXNzb3JCb3hIKTsKKyAgICAgICAgICAgICAgICBnbC5jbGVhclN0ZW5jaWwo
MSk7CisgICAgICAgICAgICAgICAgZ2wuY2xlYXJDb2xvcihTVEVOQ0lMX0NMRUFSX0NPTE9SWzBd
LCBTVEVOQ0lMX0NMRUFSX0NPTE9SWzFdLCBTVEVOQ0lMX0NMRUFSX0NPTE9SWzJdLCBTVEVOQ0lM
X0NMRUFSX0NPTE9SWzNdKTsKKyAgICAgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgICAgICBnbC5kaXNh
YmxlKGdsLlNDSVNTT1JfVEVTVCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0ludmFsaWQgb2NjbHVkZXIgdHlwZTogJyArIHR5cGUpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHRoaXMubV9vY2NsdWRlclR5cGVzICYgT0NDTFVERVJfU0NJU1NPUikgewor
ICAgICAgICB2YXIgc2Npc3NvckJveFggPSB0aGlzLm1fcm5kLmdldEludCgtU0NJU1NPUl9PRkZT
RVQsIHRhcmdldFcgLSBTQ0lTU09SX09GRlNFVCk7CisgICAgICAgIHZhciBzY2lzc29yQm94WSA9
IHRoaXMubV9ybmQuZ2V0SW50KC1TQ0lTU09SX09GRlNFVCwgdGFyZ2V0SCAtIFNDSVNTT1JfT0ZG
U0VUKTsKKyAgICAgICAgdmFyIHNjaXNzb3JCb3hXID0gdGhpcy5tX3JuZC5nZXRJbnQoU0NJU1NP
Ul9NSU5TSVpFLCB0YXJnZXRXICsgU0NJU1NPUl9PRkZTRVQpOworICAgICAgICB2YXIgc2Npc3Nv
ckJveEggPSB0aGlzLm1fcm5kLmdldEludChTQ0lTU09SX01JTlNJWkUsIHRhcmdldEggKyBTQ0lT
U09SX09GRlNFVCk7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1NjaXNzb3IgYm94
IGRyYXduIGF0ICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICco
JyArIHNjaXNzb3JCb3hYICsgJywgJyArIHNjaXNzb3JCb3hZICsgJyknICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCB3aWR0aCA9ICcgKyBzY2lzc29yQm94VyAr
ICcsIGhlaWdodCA9ICcgKyBzY2lzc29yQm94SCArICcuJyk7CisKKyAgICAgICAgZ2wuZW5hYmxl
KGdsLlNDSVNTT1JfVEVTVCk7CisgICAgICAgIGdsLnNjaXNzb3Ioc2Npc3NvckJveFgsIHNjaXNz
b3JCb3hZLCBzY2lzc29yQm94Vywgc2Npc3NvckJveEgpOworICAgIH0KKworICAgIHRoaXMubV9x
dWVyeSA9IGdsLmNyZWF0ZVF1ZXJ5KCk7CisgICAgZ2wuYmVnaW5RdWVyeSh0aGlzLm1fcXVlcnlN
b2RlLCB0aGlzLm1fcXVlcnkpOworCisgICAgLy8gRHJhdyB0YXJnZXQgcHJpbWl0aXZlcworCisg
ICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIGdsLmVuYWJsZShnbC5TVEVOQ0lMX1RF
U1QpOworICAgIGdsLnN0ZW5jaWxGdW5jKGdsLkVRVUFMLCAwLCAweEZGKTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5tX251bVRhcmdldERyYXdzOyBpKyspIHsKKyAgICAgICAgdmFy
IHRhcmdldFZlcnRpY2VzID0gdGhpcy5nZW5lcmF0ZVZlcnRpY2VzKDIsIDIsIHRoaXMubV9udW1U
YXJnZXRzUGVyRHJhdywgMywgdGhpcy5tX3JuZCwgdGhpcy5tX3RhcmdldFNpemUsIDAuNCwgMSk7
IC8vIEdlbmVyYXRlIHZlcnRpY2VzIGZvciB0YXJnZXQgcHJpbWl0aXZlcworCisgICAgICAgIGlm
ICh0YXJnZXRWZXJ0aWNlcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBnbC51bmlmb3JtNGYo
Y29sb3JVbmlmLCBUQVJHRVRfQ09MT1JbMF0sIFRBUkdFVF9DT0xPUlsxXSwgVEFSR0VUX0NPTE9S
WzJdLCBUQVJHRVRfQ09MT1JbM10pOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkodGFyZ2V0VmVydGljZXMpLCBnbC5TVEFUSUNfRFJB
Vyk7CisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyAqIHRoaXMu
bV9udW1UYXJnZXRzUGVyRHJhdyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnbC5lbmRRdWVy
eSh0aGlzLm1fcXVlcnlNb2RlKTsKKyAgICBnbC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7Cisg
ICAgZ2wuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgIGdsLmRpc2FibGUoZ2wuREVQVEhf
VEVTVCk7CisgICAgdGhpcy5tX3N0YXRlID0gZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuU3RhdGUu
VkVSSUZZOworfTsKKworZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNl
LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBDaGVjayB0aGF0IHF1ZXJ5
IHJlc3VsdCBpcyBhdmFpbGFibGUuCisgICAgdmFyIHJlc3VsdEF2YWlsYWJsZSA9IC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gKGdsLmdldFF1ZXJ5UGFyYW1ldGVyKHRoaXMubV9xdWVyeSwgZ2wuUVVF
UllfUkVTVUxUX0FWQUlMQUJMRSkpOworICAgIGlmICghcmVzdWx0QXZhaWxhYmxlKSB7CisgICAg
ICAgIGlmICghdGhpcy5tX3ZlcmlmeVN0YXJ0KQorICAgICAgICAgICAgdGhpcy5tX3ZlcmlmeVN0
YXJ0ID0gbmV3IERhdGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgY3VycmVu
dCA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICB2YXIgZWxhcHNlZFRpbWUgPSAwLjAwMSAqIChj
dXJyZW50LmdldFRpbWUoKSAtIHRoaXMubV92ZXJpZnlTdGFydC5nZXRUaW1lKCkpOworICAgICAg
ICAgICAgaWYgKGVsYXBzZWRUaW1lID4gTUFYX1ZFUklGWV9XQUlUKSB7CisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnUXVlcnkgcmVzdWx0IG5vdCBhdmFpbGFibGUgYWZ0ZXIgJyArIGVsYXBz
ZWRUaW1lICsgJyBzZWNvbmRzLicpOworICAgICAgICAgICAgICAgIHRoaXMubV9zdGF0ZSA9IGVz
M2ZPY2NsdXNpb25RdWVyeVRlc3RzLlN0YXRlLkZJTklTSDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVhZCBxdWVyeSByZXN1bHQu
CisgICAgdmFyIHJlc3VsdCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UXVlcnlQYXJh
bWV0ZXIodGhpcy5tX3F1ZXJ5LCBnbC5RVUVSWV9SRVNVTFQpKTsKKyAgICB2YXIgcXVlcnlSZXN1
bHQgPSAocmVzdWx0ID4gMCk7CisKKyAgICBnbC5kZWxldGVRdWVyeSh0aGlzLm1fcXVlcnkpOwor
CisgICAgLy8gUmVhZCBwaXhlbCBkYXRhCisKKyAgICB2YXIgcGl4ZWxzID0gbmV3IHRjdVN1cmZh
Y2UuU3VyZmFjZSgpOworICAgIHBpeGVscy5yZWFkVmlld3BvcnQoZ2wpOworICAgIHZhciBjb2xv
clJlYWRSZXN1bHQgPSBmYWxzZTsKKyAgICB2YXIgd2lkdGggPSBwaXhlbHMuZ2V0V2lkdGgoKTsK
KyAgICB2YXIgaGVpZ2h0ID0gcGl4ZWxzLmdldEhlaWdodCgpOworCisgICAgZm9yICh2YXIgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspIHsKKyAgICAgICAgICAgIGlmIChwaXhlbHMuZ2V0UGl4ZWwoeCwgeSlbMF0gIT0gMCkg
eworICAgICAgICAgICAgICAgIGNvbG9yUmVhZFJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbG9yUmVh
ZFJlc3VsdCkgYnJlYWs7CisgICAgfQorCisgICAgdmFyIG1lc3NhZ2UgPSAnT2NjbHVzaW9uIHF1
ZXJ5IHJlc3VsdDogVGFyZ2V0ICcgKyAocXVlcnlSZXN1bHQgPyAndmlzaWJsZScgOiAnaW52aXNp
YmxlJykgKyAnLiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGcmFtZWJ1
ZmZlciByZWFkIHJlc3VsdDogVGFyZ2V0ICcgKyAoY29sb3JSZWFkUmVzdWx0ID8gJ3Zpc2libGUn
IDogJ2ludmlzaWJsZScpOworCisgICAgdmFyIHRlc3RPayA9IGZhbHNlOworICAgIGlmICh0aGlz
Lm1fcXVlcnlNb2RlID09IGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUpIHsKKyAg
ICAgICAgaWYgKHF1ZXJ5UmVzdWx0IHx8IGNvbG9yUmVhZFJlc3VsdCkKKyAgICAgICAgICAgIHRl
c3RPayA9IHF1ZXJ5UmVzdWx0OyAvLyBBbGxvdyBjb25zZXJ2YXRpdmUgb2NjbHVzaW9uIHF1ZXJ5
IHRvIHJldHVybiBmYWxzZSBwb3NpdGl2ZXMuCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRl
c3RPayA9IHF1ZXJ5UmVzdWx0ID09IGNvbG9yUmVhZFJlc3VsdDsKKyAgICB9IGVsc2UKKyAgICAg
ICAgdGVzdE9rID0gKHF1ZXJ5UmVzdWx0ID09IGNvbG9yUmVhZFJlc3VsdCk7CisKKyAgICBpZiAo
IXRlc3RPaykgeworICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgnUmVzdWx0IGltYWdlJywg
J1Jlc3VsdCBpbWFnZScsIHBpeGVscy5nZXRBY2Nlc3MoKSk7CisgICAgICAgIHRlc3RGYWlsZWQo
bWVzc2FnZSk7CisgICAgICAgIHRoaXMubV9zdGF0ZSA9IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3Rz
LlN0YXRlLkZJTklTSDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKG1lc3NhZ2UpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdDYXNlIHBhc3Nl
ZCEnKTsKKworICAgIGlmICgrK3RoaXMubV9pdGVyTmR4IDwgTlVNX0NBU0VfSVRFUkFUSU9OUykg
eworICAgICAgICB0aGlzLm1fc3RhdGUgPSBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5TdGF0ZS5E
UkFXCisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5tX3N0YXRlID0gZXMzZk9jY2x1c2lvblF1
ZXJ5VGVzdHMuU3RhdGUuRklOSVNIOworICAgICAgICB0ZXN0UGFzc2VkKCk7CisgICAgfQorfTsK
KworCitlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UucHJvdG90eXBl
Lml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBzd2l0Y2godGhpcy5tX3N0YXRlKSB7CisgICAg
ICAgIGNhc2UgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuU3RhdGUuRFJBVzoKKyAgICAgICAgICAg
IHRoaXMuZHJhdygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgZXMzZk9jY2x1
c2lvblF1ZXJ5VGVzdHMuU3RhdGUuVkVSSUZZOgorICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGVzM2ZPY2NsdXNpb25RdWVyeVRlc3Rz
LlN0YXRlLkZJTklTSDoKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVz
dWx0LlNUT1A7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0ludmFsaWQgc3RhdGU6ICcgKyB0aGlzLm1fc3RhdGUpOworICAgIH0KKworICAgIHJldHVybiB0
Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LkNPTlRJTlVFOworfTsKKworLyoqCisqIEBjb25zdHJ1
Y3RvcgorKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisqLworZXMzZk9jY2x1c2lv
blF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIHRjdVRl
c3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ29jY2x1c2lvbl9xdWVyeScsICdPY2NsdXNpb24g
UXVlcnkgVGVzdHMnKTsKK307CisKK2VzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1
ZXJ5VGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlUZXN0cy5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25R
dWVyeVRlc3RzOworCitlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeVRlc3Rz
LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgLy8gU3RyaWN0IG9jY2x1c2lvbiBx
dWVyeSBjYXNlcworCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVz
dHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdzY2lzc29yJywgJ3NjaXNzb3InLCAxLCAxMCwgMS42LCAx
LCAxLCAwLjMsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU0NJU1NPUikpOworICAg
IHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5
Q2FzZSgnZGVwdGhfd3JpdGUnLCAnZGVwdGhfd3JpdGUnLCA4LCAxMCwgMS42LCAxLCA3LCAwLjMs
IGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfREVQVEhfV1JJVEUpKTsKKyAgICB0aGlz
LmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2Uo
J2RlcHRoX2NsZWFyJywgJ2RlcHRoX2NsZWFyJywgNSwgMTAsIDEuNiwgMSwgNSwgMC4yLCBnbC5B
TllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX0RFUFRIX0NMRUFSKSk7CisgICAgdGhpcy5hZGRD
aGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdzdGVu
Y2lsX3dyaXRlJywgJ3N0ZW5jaWxfd3JpdGUnLCA4LCAxMCwgMi4wLCAxLCA1LCAwLjQsIGdsLkFO
WV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRk
Q2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc3Rl
bmNpbF9jbGVhcicsICdzdGVuY2lsX2NsZWFyJywgNSwgMTAsIDIuMCwgMSwgMywgMC4zLCBnbC5B
TllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX1NURU5DSUxfQ0xFQVIpKTsKKworICAgIHRoaXMu
YWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgn
c2Npc3Nvcl9kZXB0aF93cml0ZScsICdzY2lzc29yX2RlcHRoX3dyaXRlJywgNSwgMTAsIDEuNiwg
MiwgNSwgMC4zLCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NM
VURFUl9ERVBUSF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25R
dWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc2Npc3Nvcl9kZXB0aF9jbGVhcicsICdzY2lz
c29yX2RlcHRoX2NsZWFyJywgNywgMTAsIDEuNiwgMiwgNSwgMS4wLCBnbC5BTllfU0FNUExFU19Q
QVNTRUQsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUikpOworICAgIHRo
aXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2Fz
ZSgnc2Npc3Nvcl9zdGVuY2lsX3dyaXRlJywgJ3NjaXNzb3Jfc3RlbmNpbF93cml0ZScsIDQsIDEw
LCAxLjYsIDIsIDUsIDAuMywgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBPQ0NMVURFUl9TQ0lTU09S
IHwgT0NDTFVERVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZP
Y2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc2Npc3Nvcl9zdGVuY2lsX2Ns
ZWFyJywgJ3NjaXNzb3Jfc3RlbmNpbF9jbGVhcicsIDQsIDEwLCAxLjYsIDIsIDUsIDEuMCwgZ2wu
QU5ZX1NBTVBMRVNfUEFTU0VELCBPQ0NMVURFUl9TQ0lTU09SIHwgT0NDTFVERVJfU1RFTkNJTF9D
TEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9j
Y2x1c2lvblF1ZXJ5Q2FzZSgnZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXInLCAnZGVwdGhfd3JpdGVf
ZGVwdGhfY2xlYXInLCA3LCAxMCwgMS42LCAxLCA1LCAwLjIsIGdsLkFOWV9TQU1QTEVTX1BBU1NF
RCwgT0NDTFVERVJfREVQVEhfV1JJVEUgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUikpOworICAgIHRo
aXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2Fz
ZSgnZGVwdGhfd3JpdGVfc3RlbmNpbF93cml0ZScsICdkZXB0aF93cml0ZV9zdGVuY2lsX3dyaXRl
JywgOCwgMTAsIDEuNiwgMSwgNSwgMC4zLCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVS
X0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hp
bGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnZGVwdGhf
d3JpdGVfc3RlbmNpbF9jbGVhcicsICdkZXB0aF93cml0ZV9zdGVuY2lsX2NsZWFyJywgOCwgMTAs
IDEuNiwgMSwgNSwgMC4zLCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX0RFUFRIX1dS
SVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnZGVwdGhfY2xlYXJfc3Rl
bmNpbF93cml0ZScsICdkZXB0aF9jbGVhcl9zdGVuY2lsX3dyaXRlJywgOCwgMTAsIDEuNiwgMSwg
NSwgMC4zLCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX0RFUFRIX0NMRUFSIHwgT0ND
TFVERVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNp
b25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnZGVwdGhfY2xlYXJfc3RlbmNpbF9jbGVh
cicsICdkZXB0aF9jbGVhcl9zdGVuY2lsX2NsZWFyJywgMTIsIDEwLCAxLjYsIDEsIDUsIDAuMiwg
Z2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NU
RU5DSUxfQ0xFQVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlU
ZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UoJ3N0ZW5jaWxfd3JpdGVfc3RlbmNpbF9jbGVhcicsICdz
dGVuY2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA1LCAxMCwgMi4wLCAxLCA1LCAwLjQsIGdsLkFO
WV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU1RFTkNJTF9XUklURSB8IE9DQ0xVREVSX1NURU5D
SUxfQ0xFQVIpKTsKKworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRl
c3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc2Npc3Nvcl9kZXB0aF93cml0ZV9kZXB0aF9jbGVhcics
ICdzY2lzc29yX2RlcHRoX3dyaXRlX2RlcHRoX2NsZWFyJywgNSwgMTAsIDEuNiwgMiwgNSwgMC40
LCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBU
SF9XUklURSB8IE9DQ0xVREVSX0RFUFRIX0NMRUFSKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcg
ZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdzY2lzc29yX2RlcHRo
X3dyaXRlX3N0ZW5jaWxfd3JpdGUnLCAnc2Npc3Nvcl9kZXB0aF93cml0ZV9zdGVuY2lsX3dyaXRl
JywgNCwgMTAsIDEuNiwgMiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVS
X1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9XUklURSB8IE9DQ0xVREVSX1NURU5DSUxfV1JJVEUp
KTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNp
b25RdWVyeUNhc2UoJ3NjaXNzb3JfZGVwdGhfd3JpdGVfc3RlbmNpbF9jbGVhcicsICdzY2lzc29y
X2RlcHRoX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA2LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFO
WV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xVREVSX0RFUFRIX1dSSVRF
IHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZP
Y2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc2Npc3Nvcl9kZXB0aF9jbGVh
cl9zdGVuY2lsX3dyaXRlJywgJ3NjaXNzb3JfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZScsIDQs
IDEwLCAxLjYsIDIsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBPQ0NMVURFUl9TQ0lT
U09SIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSk7Cisg
ICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVl
cnlDYXNlKCdzY2lzc29yX2RlcHRoX2NsZWFyX3N0ZW5jaWxfY2xlYXInLCAnc2Npc3Nvcl9kZXB0
aF9jbGVhcl9zdGVuY2lsX2NsZWFyJywgNSwgMTAsIDEuNiwgMiwgNSwgMC40LCBnbC5BTllfU0FN
UExFU19QQVNTRUQsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9D
Q0xVREVSX1NURU5DSUxfQ0xFQVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVz
aW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UoJ3NjaXNzb3Jfc3RlbmNpbF93cml0ZV9z
dGVuY2lsX2NsZWFyJywgJ3NjaXNzb3Jfc3RlbmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywgNCwg
MTAsIDEuNiwgMiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX1NDSVNT
T1IgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOwor
ICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1
ZXJ5Q2FzZSgnZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZScsICdkZXB0aF93
cml0ZV9kZXB0aF9jbGVhcl9zdGVuY2lsX3dyaXRlJywgNywgMTAsIDEuNiwgMiwgNSwgMC40LCBn
bC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfREVQ
VEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSk7CisgICAgdGhpcy5hZGRDaGlsZChu
ZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdkZXB0aF93cml0
ZV9kZXB0aF9jbGVhcl9zdGVuY2lsX2NsZWFyJywgJ2RlcHRoX3dyaXRlX2RlcHRoX2NsZWFyX3N0
ZW5jaWxfY2xlYXInLCA3LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NF
RCwgT0NDTFVERVJfREVQVEhfV1JJVEUgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVS
X1NURU5DSUxfQ0xFQVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVl
cnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UoJ2RlcHRoX3dyaXRlX3N0ZW5jaWxfd3JpdGVfc3Rl
bmNpbF9jbGVhcicsICdkZXB0aF93cml0ZV9zdGVuY2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA3
LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfREVQ
VEhfV1JJVEUgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVB
UikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1
c2lvblF1ZXJ5Q2FzZSgnZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywg
J2RlcHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGVfc3RlbmNpbF9jbGVhcicsIDcsIDEwLCAxLjYsIDIs
IDUsIDAuNCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VELCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9D
Q0xVREVSX1NURU5DSUxfV1JJVEUgfCBPQ0NMVURFUl9TVEVOQ0lMX0NMRUFSKSk7CisKKyAgICB0
aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNh
c2UoJ3NjaXNzb3JfZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZScsICdzY2lz
c29yX2RlcHRoX3dyaXRlX2RlcHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGUnLCA0LCAxMCwgMS42LCAy
LCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xV
REVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lM
X1dSSVRFKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMu
T2NjbHVzaW9uUXVlcnlDYXNlKCdzY2lzc29yX2RlcHRoX3dyaXRlX2RlcHRoX2NsZWFyX3N0ZW5j
aWxfY2xlYXInLCAnc2Npc3Nvcl9kZXB0aF93cml0ZV9kZXB0aF9jbGVhcl9zdGVuY2lsX2NsZWFy
JywgNCwgMTAsIDEuNiwgMiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVS
X1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9XUklURSB8IE9DQ0xVREVSX0RFUFRIX0NMRUFSIHwg
T0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2Ns
dXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnc2Npc3Nvcl9kZXB0aF93cml0ZV9z
dGVuY2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCAnc2Npc3Nvcl9kZXB0aF93cml0ZV9zdGVuY2ls
X3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA1LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1Q
TEVTX1BBU1NFRCwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0ND
TFVERVJfU1RFTkNJTF9XUklURSB8IE9DQ0xVREVSX1NURU5DSUxfQ0xFQVIpKTsKKyAgICB0aGlz
LmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2Uo
J3NjaXNzb3JfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywgJ3NjaXNz
b3JfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywgNCwgMTAsIDEuNiwg
MiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19QQVNTRUQsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NM
VURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NURU5DSUxfV1JJVEUgfCBPQ0NMVURFUl9TVEVO
Q0lMX0NMRUFSKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVz
dHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdkZXB0aF93cml0ZV9kZXB0aF9jbGVhcl9zdGVuY2lsX3dy
aXRlX3N0ZW5jaWxfY2xlYXInLCAnZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0
ZV9zdGVuY2lsX2NsZWFyJywgNywgMTAsIDEuNiwgMiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19Q
QVNTRUQsIE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NM
VURFUl9TVEVOQ0lMX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworCisgICAgdGhp
cy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNl
KCdhbGxfb2NjbHVkZXJzJywgJ2FsbF9vY2NsdWRlcnMnLCA3LCAxMCwgMS42LCAzLCA1LCAwLjYs
IGdsLkFOWV9TQU1QTEVTX1BBU1NFRCwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xVREVSX0RFUFRI
X1dSSVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFIHwg
T0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworCisgICAgLy8gQ29uc2VydmF0aXZlIG9jY2x1c2lv
biBxdWVyeSBjYXNlcworCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5
VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVfc2Npc3NvcicsICdjb25zZXJ2
YXRpdmVfc2Npc3NvcicsIDEsIDEwLCAxLjYsIDEsIDEsIDAuMywgZ2wuQU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU0NJU1NPUikpOworICAgIHRoaXMuYWRkQ2hpbGQo
bmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0
aXZlX2RlcHRoX3dyaXRlJywgJ2NvbnNlcnZhdGl2ZV9kZXB0aF93cml0ZScsIDgsIDEwLCAxLjYs
IDEsIDcsIDAuMywgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJf
REVQVEhfV1JJVEUpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlU
ZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UoJ2NvbnNlcnZhdGl2ZV9kZXB0aF9jbGVhcicsICdjb25z
ZXJ2YXRpdmVfZGVwdGhfY2xlYXInLCA1LCAxMCwgMS42LCAxLCA1LCAwLjIsIGdsLkFOWV9TQU1Q
TEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX0RFUFRIX0NMRUFSKSk7CisgICAgdGhp
cy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNl
KCdjb25zZXJ2YXRpdmVfc3RlbmNpbF93cml0ZScsICdjb25zZXJ2YXRpdmVfc3RlbmNpbF93cml0
ZScsIDgsIDEwLCAyLjAsIDEsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZB
VElWRSwgT0NDTFVERVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3N0
ZW5jaWxfY2xlYXInLCAnY29uc2VydmF0aXZlX3N0ZW5jaWxfY2xlYXInLCA1LCAxMCwgMi4wLCAx
LCAzLCAwLjMsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NU
RU5DSUxfQ0xFQVIpKTsKKworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVy
eVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfd3Jp
dGUnLCAnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfd3JpdGUnLCA1LCAxMCwgMS42LCAyLCA1
LCAwLjMsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNT
T1IgfCBPQ0NMVURFUl9ERVBUSF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZP
Y2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3NjaXNz
b3JfZGVwdGhfY2xlYXInLCAnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfY2xlYXInLCA3LCAx
MCwgMS42LCAyLCA1LCAxLjAsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9D
Q0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hp
bGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2Vy
dmF0aXZlX3NjaXNzb3Jfc3RlbmNpbF93cml0ZScsICdjb25zZXJ2YXRpdmVfc2Npc3Nvcl9zdGVu
Y2lsX3dyaXRlJywgNCwgMTAsIDEuNiwgMiwgNSwgMC4zLCBnbC5BTllfU0FNUExFU19QQVNTRURf
Q09OU0VSVkFUSVZFLCBPQ0NMVURFUl9TQ0lTU09SIHwgT0NDTFVERVJfU1RFTkNJTF9XUklURSkp
OworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lv
blF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3NjaXNzb3Jfc3RlbmNpbF9jbGVhcicsICdjb25zZXJ2
YXRpdmVfc2Npc3Nvcl9zdGVuY2lsX2NsZWFyJywgNCwgMTAsIDEuNiwgMiwgNSwgMS4wLCBnbC5B
TllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLCBPQ0NMVURFUl9TQ0lTU09SIHwgT0NDTFVE
RVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25R
dWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRlX2Rl
cHRoX2NsZWFyJywgJ2NvbnNlcnZhdGl2ZV9kZXB0aF93cml0ZV9kZXB0aF9jbGVhcicsIDcsIDEw
LCAxLjYsIDEsIDUsIDAuMiwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0ND
TFVERVJfREVQVEhfV1JJVEUgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUikpOworICAgIHRoaXMuYWRk
Q2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29u
c2VydmF0aXZlX2RlcHRoX3dyaXRlX3N0ZW5jaWxfd3JpdGUnLCAnY29uc2VydmF0aXZlX2RlcHRo
X3dyaXRlX3N0ZW5jaWxfd3JpdGUnLCA4LCAxMCwgMS42LCAxLCA1LCAwLjMsIGdsLkFOWV9TQU1Q
TEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJf
U1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVy
eVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRlX3N0ZW5j
aWxfY2xlYXInLCAnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA4LCAx
MCwgMS42LCAxLCA1LCAwLjMsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9D
Q0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMu
YWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgn
Y29uc2VydmF0aXZlX2RlcHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGUnLCAnY29uc2VydmF0aXZlX2Rl
cHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGUnLCA4LCAxMCwgMS42LCAxLCA1LCAwLjMsIGdsLkFOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX0RFUFRIX0NMRUFSIHwgT0NDTFVE
RVJfU1RFTkNJTF9XUklURSkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25R
dWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX2RlcHRoX2NsZWFyX3N0
ZW5jaWxfY2xlYXInLCAnY29uc2VydmF0aXZlX2RlcHRoX2NsZWFyX3N0ZW5jaWxfY2xlYXInLCAx
MiwgMTAsIDEuNiwgMSwgNSwgMC4yLCBnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZF
LCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NURU5DSUxfQ0xFQVIpKTsKKyAgICB0
aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNh
c2UoJ2NvbnNlcnZhdGl2ZV9zdGVuY2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCAnY29uc2VydmF0
aXZlX3N0ZW5jaWxfd3JpdGVfc3RlbmNpbF9jbGVhcicsIDUsIDEwLCAyLjAsIDEsIDUsIDAuNCwg
Z2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU1RFTkNJTF9XUklU
RSB8IE9DQ0xVREVSX1NURU5DSUxfQ0xFQVIpKTsKKworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3Nj
aXNzb3JfZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXInLCAnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVw
dGhfd3JpdGVfZGVwdGhfY2xlYXInLCA1LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1Q
TEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBU
SF9XUklURSB8IE9DQ0xVREVSX0RFUFRIX0NMRUFSKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcg
ZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVf
c2Npc3Nvcl9kZXB0aF93cml0ZV9zdGVuY2lsX3dyaXRlJywgJ2NvbnNlcnZhdGl2ZV9zY2lzc29y
X2RlcHRoX3dyaXRlX3N0ZW5jaWxfd3JpdGUnLCA0LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFO
WV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURF
Ul9ERVBUSF9XUklURSB8IE9DQ0xVREVSX1NURU5DSUxfV1JJVEUpKTsKKyAgICB0aGlzLmFkZENo
aWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNpb25RdWVyeUNhc2UoJ2NvbnNl
cnZhdGl2ZV9zY2lzc29yX2RlcHRoX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCAnY29uc2VydmF0aXZl
X3NjaXNzb3JfZGVwdGhfd3JpdGVfc3RlbmNpbF9jbGVhcicsIDYsIDEwLCAxLjYsIDIsIDUsIDAu
NCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU0NJU1NPUiB8
IE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRo
aXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2Fz
ZSgnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfY2xlYXJfc3RlbmNpbF93cml0ZScsICdjb25z
ZXJ2YXRpdmVfc2Npc3Nvcl9kZXB0aF9jbGVhcl9zdGVuY2lsX3dyaXRlJywgNCwgMTAsIDEuNiwg
MiwgNSwgMC40LCBnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLCBPQ0NMVURFUl9T
Q0lTU09SIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSk7
CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9u
UXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVfc2Npc3Nvcl9kZXB0aF9jbGVhcl9zdGVuY2lsX2NsZWFy
JywgJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX2RlcHRoX2NsZWFyX3N0ZW5jaWxfY2xlYXInLCA1LCAx
MCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9D
Q0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NURU5DSUxf
Q0xFQVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5P
Y2NsdXNpb25RdWVyeUNhc2UoJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX3N0ZW5jaWxfd3JpdGVfc3Rl
bmNpbF9jbGVhcicsICdjb25zZXJ2YXRpdmVfc2Npc3Nvcl9zdGVuY2lsX3dyaXRlX3N0ZW5jaWxf
Y2xlYXInLCA0LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05T
RVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFIHwgT0ND
TFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNp
b25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRl
X2RlcHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGUnLCAnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRlX2Rl
cHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGUnLCA3LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVE
RVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSk7CisgICAgdGhpcy5hZGRD
aGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdjb25z
ZXJ2YXRpdmVfZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3RlbmNpbF9jbGVhcicsICdjb25zZXJ2
YXRpdmVfZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3RlbmNpbF9jbGVhcicsIDcsIDEwLCAxLjYs
IDIsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJf
REVQVEhfV1JJVEUgfCBPQ0NMVURFUl9ERVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NURU5DSUxfQ0xF
QVIpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2Ns
dXNpb25RdWVyeUNhc2UoJ2NvbnNlcnZhdGl2ZV9kZXB0aF93cml0ZV9zdGVuY2lsX3dyaXRlX3N0
ZW5jaWxfY2xlYXInLCAnY29uc2VydmF0aXZlX2RlcHRoX3dyaXRlX3N0ZW5jaWxfd3JpdGVfc3Rl
bmNpbF9jbGVhcicsIDcsIDEwLCAxLjYsIDIsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRSwgT0NDTFVERVJfREVQVEhfV1JJVEUgfCBPQ0NMVURFUl9TVEVOQ0lMX1dS
SVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX2Rl
cHRoX2NsZWFyX3N0ZW5jaWxfd3JpdGVfc3RlbmNpbF9jbGVhcicsICdjb25zZXJ2YXRpdmVfZGVw
dGhfY2xlYXJfc3RlbmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywgNywgMTAsIDEuNiwgMiwgNSwg
MC40LCBnbC5BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLCBPQ0NMVURFUl9ERVBUSF9D
TEVBUiB8IE9DQ0xVREVSX1NURU5DSUxfV1JJVEUgfCBPQ0NMVURFUl9TVEVOQ0lMX0NMRUFSKSk7
CisKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNp
b25RdWVyeUNhc2UoJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX2RlcHRoX3dyaXRlX2RlcHRoX2NsZWFy
X3N0ZW5jaWxfd3JpdGUnLCAnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfd3JpdGVfZGVwdGhf
Y2xlYXJfc3RlbmNpbF93cml0ZScsIDQsIDEwLCAxLjYsIDIsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBM
RVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xVREVSX0RFUFRI
X1dSSVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFKSk7
CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9u
UXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVfc2Npc3Nvcl9kZXB0aF93cml0ZV9kZXB0aF9jbGVhcl9z
dGVuY2lsX2NsZWFyJywgJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX2RlcHRoX3dyaXRlX2RlcHRoX2Ns
ZWFyX3N0ZW5jaWxfY2xlYXInLCA0LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9ERVBUSF9X
UklURSB8IE9DQ0xVREVSX0RFUFRIX0NMRUFSIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOwor
ICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzLk9jY2x1c2lvblF1
ZXJ5Q2FzZSgnY29uc2VydmF0aXZlX3NjaXNzb3JfZGVwdGhfd3JpdGVfc3RlbmNpbF93cml0ZV9z
dGVuY2lsX2NsZWFyJywgJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX2RlcHRoX3dyaXRlX3N0ZW5jaWxf
d3JpdGVfc3RlbmNpbF9jbGVhcicsIDUsIDEwLCAxLjYsIDIsIDUsIDAuNCwgZ2wuQU5ZX1NBTVBM
RVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU0NJU1NPUiB8IE9DQ0xVREVSX0RFUFRI
X1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9XUklURSB8IE9DQ0xVREVSX1NURU5DSUxfQ0xFQVIp
KTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5PY2NsdXNp
b25RdWVyeUNhc2UoJ2NvbnNlcnZhdGl2ZV9zY2lzc29yX2RlcHRoX2NsZWFyX3N0ZW5jaWxfd3Jp
dGVfc3RlbmNpbF9jbGVhcicsICdjb25zZXJ2YXRpdmVfc2Npc3Nvcl9kZXB0aF9jbGVhcl9zdGVu
Y2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA0LCAxMCwgMS42LCAyLCA1LCAwLjQsIGdsLkFOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX1NDSVNTT1IgfCBPQ0NMVURFUl9E
RVBUSF9DTEVBUiB8IE9DQ0xVREVSX1NURU5DSUxfV1JJVEUgfCBPQ0NMVURFUl9TVEVOQ0lMX0NM
RUFSKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2Nj
bHVzaW9uUXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVfZGVwdGhfd3JpdGVfZGVwdGhfY2xlYXJfc3Rl
bmNpbF93cml0ZV9zdGVuY2lsX2NsZWFyJywgJ2NvbnNlcnZhdGl2ZV9kZXB0aF93cml0ZV9kZXB0
aF9jbGVhcl9zdGVuY2lsX3dyaXRlX3N0ZW5jaWxfY2xlYXInLCA3LCAxMCwgMS42LCAyLCA1LCAw
LjQsIGdsLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsIE9DQ0xVREVSX0RFUFRIX1dS
SVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9TVEVOQ0lMX1dSSVRFIHwgT0ND
TFVERVJfU1RFTkNJTF9DTEVBUikpOworCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZk9jY2x1
c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlDYXNlKCdjb25zZXJ2YXRpdmVfYWxsX29jY2x1
ZGVycycsICdjb25zZXJ2YXRpdmVfYWxsX29jY2x1ZGVycycsIDcsIDEwLCAxLjYsIDMsIDUsIDAu
NiwgZ2wuQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwgT0NDTFVERVJfU0NJU1NPUiB8
IE9DQ0xVREVSX0RFUFRIX1dSSVRFIHwgT0NDTFVERVJfREVQVEhfQ0xFQVIgfCBPQ0NMVURFUl9T
VEVOQ0lMX1dSSVRFIHwgT0NDTFVERVJfU1RFTkNJTF9DTEVBUikpOworCit9OworCisvKioKKyog
UnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisqLwor
ZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCwgcmFuZ2UpIHsK
KyAgICBnbCA9IGNvbnRleHQ7CisgICAgLy9TZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAg
ICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgc3RhdGUuc2V0Um9vdChuZXcg
ZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuT2NjbHVzaW9uUXVlcnlUZXN0cygpKTsKKworICAgIC8v
U2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgc2V0
Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICBkZXNjcmlw
dGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICB0cnkgeworICAg
ICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7CisgICAg
ICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7
CisgICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0Zh
aWxlZCB0byBlczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAg
ICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LmpzIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2VzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM1NzcxOTNhYTQ3
MzNiMzVjMDFmMWNhYTczNmY4OGMxMzgxMDI2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LmpzCkBAIC0wLDAgKzEsNTg1IEBACisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0
aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24u
dGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJl
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsK
KwordmFyIGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQ
aXhlbEJ1ZmZlck9iamVjdFRlc3Q7Cit2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5v
cGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21t
b24udGN1VGVzdENhc2U7Cit2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZVJhbmRvbTsKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5n
OwordmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsK
K3ZhciB0Y3VUZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIGdsdVRl
eHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKK3ZhciB0Y3VJbWFn
ZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKKworICAgIHZhciBE
RV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICBlczNmUGl4ZWxC
dWZmZXJPYmplY3RUZXN0LkRFX1NUQVRJQ19BU1NFUlQgPSBmdW5jdGlvbihleHByZXNzaW9uKSB7
CisgICAgICAgIGlmICghZXhwcmVzc2lvbikgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVk
Jyk7CisgICAgfTsKKworICAgIC8qKiBAZW51bSAqLworICAgIGVzM2ZQaXhlbEJ1ZmZlck9iamVj
dFRlc3QuRnJhbWVidWZmZXJUeXBlID0geworICAgICAgICBGUkFNRUJVRkZFUlRZUEVfTkFUSVZF
OiAwLAorICAgICAgICBGUkFNRUJVRkZFUlRZUEVfUkVOREVSQlVGRkVSOiAxCisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKi8KKyAg
ICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlRlc3RTcGVjID0gZnVuY3Rpb24oKSB7IC8vIFRo
aXMgaXMgb3JpZ2luYWx5IGEgc3RydWN0CisgICAgICAgIHRoaXMubmFtZSA9ICcnOworICAgICAg
ICB0aGlzLmRlc2NyaXB0aW9uID0gJyc7CisgICAgICAgIHRoaXMudXNlQ29sb3JDbGVhciA9IGZh
bHNlOworICAgICAgICB0aGlzLnJlbmRlclRyaWFuZ2xlcyA9IGZhbHNlOworICAgICAgICAvKiog
QHR5cGUge2VzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuRnJhbWVidWZmZXJUeXBlfSAqLyB0aGlz
LmZyYW1lYnVmZmVyVHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMucmVu
ZGVyYnVmZmVyRm9ybWF0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtl
czNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlRlc3RTcGVjfSBzcGVjCisgICAgICovCisgICAgZXMz
ZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5SZWFkUGl4ZWxzVGVzdCA9IGZ1bmN0aW9uKHNwZWMpIHsK
KyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBzcGVjLm5hbWUsIHNwZWMu
ZGVzY3JpcHRpb24pOworICAgICAgICB0aGlzLm1fcmFuZG9tID0gbmV3IGRlUmFuZG9tLlJhbmRv
bShkZVN0cmluZy5kZVN0cmluZ0hhc2goc3BlYy5uYW1lKSk7CisgICAgICAgIHRoaXMubV9wcm9n
cmFtID0gbnVsbDsKKyAgICAgICAgdGhpcy5tX2ZyYW1lYnVmZmVUeXBlID0gc3BlYy5mcmFtZWJ1
ZmZlclR5cGU7CisgICAgICAgIHRoaXMubV9yZW5kZXJidWZmZXJGb3JtYXQgPSBzcGVjLnJlbmRl
cmJ1ZmZlckZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3RleENoYW5uZWxDbGFzcyA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgdGhpcy5tX3VzZUNvbG9yQ2xlYXJzID0gc3BlYy51c2VDb2xvckNsZWFyOwor
ICAgICAgICB0aGlzLm1fcmVuZGVyVHJpYW5nbGVzID0gc3BlYy5yZW5kZXJUcmlhbmdsZXM7Cisg
ICAgICAgIHRoaXMubV9jb2xvclNjYWxlID0gMS4wOworCisgICAgICAgIGlmICh0aGlzLm1fZnJh
bWVidWZmZVR5cGUgPT09IGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuRnJhbWVidWZmZXJUeXBl
LkZSQU1FQlVGRkVSVFlQRV9OQVRJVkUpIHsKKyAgICAgICAgICAgIHRoaXMubV9jb2xvclNjYWxl
ID0gMS4wOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9mcmFtZWJ1ZmZlVHlwZSA9PT0gZXMz
ZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUuRlJBTUVCVUZGRVJUWVBFX1JF
TkRFUkJVRkZFUikgeworICAgICAgICAgICAgdGhpcy5tX3RleENoYW5uZWxDbGFzcyA9IHRjdVRl
eHR1cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFs
Rm9ybWF0KHNwZWMucmVuZGVyYnVmZmVyRm9ybWF0KS50eXBlKTsKKyAgICAgICAgICAgIHN3aXRj
aCAodGhpcy5tX3RleENoYW5uZWxDbGFzcykgeworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fY29sb3JTY2FsZSA9IDEuMDsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuU0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jb2xvclNjYWxl
ID0gMTAwLjA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVHRVI6CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMubV9jb2xvclNjYWxlID0gMTAwLjA7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hh
bm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOgorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY29s
b3JTY2FsZSA9IDEwMC4wOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNl
KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlJl
YWRQaXhlbHNUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRl
c3QucHJvdG90eXBlKTsKKyAgICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlJlYWRQaXhlbHNU
ZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuUmVh
ZFBpeGVsc1Rlc3Q7CisKKyAgICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlJlYWRQaXhlbHNU
ZXN0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBvdXR0eXBlID0g
Jyc7CisKKyAgICAgICAgaWYgKHRoaXMubV9mcmFtZWJ1ZmZlVHlwZSA9PT0gZXMzZlBpeGVsQnVm
ZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUuRlJBTUVCVUZGRVJUWVBFX05BVElWRSkKKyAg
ICAgICAgICAgIG91dHR5cGUgPSAndmVjNCc7CisgICAgICAgIGVsc2UgaWYgKHRoaXMubV9mcmFt
ZWJ1ZmZlVHlwZSA9PT0gZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUu
RlJBTUVCVUZGRVJUWVBFX1JFTkRFUkJVRkZFUikgeworICAgICAgICAgICAgc3dpdGNoICh0aGlz
Lm1fdGV4Q2hhbm5lbENsYXNzKSB7CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRl
eHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICAgICAg
ICAgIG91dHR5cGUgPSAndmVjNCc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlNJR05FRF9JTlRF
R0VSOgorICAgICAgICAgICAgICAgICAgICBvdXR0eXBlID0gJ2l2ZWM0JzsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVD
aGFubmVsQ2xhc3MuVU5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgb3V0dHlw
ZSA9ICd1dmVjNCc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOgorICAg
ICAgICAgICAgICAgICAgICBvdXR0eXBlID0gJ3ZlYzQnOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERV9B
U1NFUlQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IERFX0FTU0VSVChmYWxzZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAg
ICAgJ2luIG1lZGl1bXAgdmVjMyBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICdpbiBtZWRpdW1w
IHZlYzQgYV9jb2xvcjtcbicgKworICAgICAgICAndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVfY29s
b3JTY2FsZTtcbicgKworICAgICAgICAnb3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyArCisg
ICAgICAgICd2b2lkIG1haW4odm9pZClcbicgKworICAgICAgICAnIHtcbicgKworICAgICAgICAn
XHRnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbicgKworICAgICAgICAnXHR2
X2NvbG9yID0gdV9jb2xvclNjYWxlICogYV9jb2xvcjtcbicgKworICAgICAgICAnfSc7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnbWVudFNoYWRlclNvdXJjZSA9Cisg
ICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAnaW4gbWVkaXVtcCB2ZWM0IHZf
Y29sb3I7XG4nICsKKyAgICAgICAgJ2xheW91dCAobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCAn
ICsKKyAgICAgICAgb3V0dHlwZSArCisgICAgICAgICcgb19jb2xvcjtcbicgKworICAgICAgICAn
dm9pZCBtYWluKHZvaWQpXG4nICsKKyAgICAgICAgJyB7XG4nICsKKyAgICAgICAgJ1x0b19jb2xv
ciA9ICcgKworICAgICAgICBvdXR0eXBlICsKKyAgICAgICAgJyh2X2NvbG9yKTtcbicgKworICAg
ICAgICAnfSc7CisKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3Jh
bS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKSk7CisKKyAgICAgICAgaWYg
KCF0aGlzLm1fcHJvZ3JhbS5pc09rKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nv
bXBpbGUgZmFpbGVkLiBQcm9ncmFtIG5vdCBjcmVhdGVkJyk7CisKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBiCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjCisgICAgICovCisgICAg
ZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5SZWFkUGl4ZWxzVGVzdC5wcm90b3R5cGUucmVuZGVy
VHJpYW5nbGUgPSBmdW5jdGlvbihhLCBiLCBjKSB7CisKKyAgICAgICAgdmFyIHBvc2l0aW9ucyA9
IG5ldyBGbG9hdDMyQXJyYXkoMzYpOworCisgICAgICAgIHBvc2l0aW9uc1swXSA9IGFbMF07Cisg
ICAgICAgIHBvc2l0aW9uc1sxXSA9IGFbMV07CisgICAgICAgIHBvc2l0aW9uc1syXSA9IGFbMl07
CisKKyAgICAgICAgcG9zaXRpb25zWzNdID0gYlswXTsKKyAgICAgICAgcG9zaXRpb25zWzRdID0g
YlsxXTsKKyAgICAgICAgcG9zaXRpb25zWzVdID0gYlsyXTsKKworICAgICAgICBwb3NpdGlvbnNb
Nl0gPSBjWzBdOworICAgICAgICBwb3NpdGlvbnNbN10gPSBjWzFdOworICAgICAgICBwb3NpdGlv
bnNbOF0gPSBjWzJdOworCisgICAgICAgIHZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KFsK
KyAgICAgICAgICAgIDEuMCwgMC4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgIDAuMCwgMS4wLCAw
LjAsIDEuMCwKKyAgICAgICAgICAgIDAuMCwgMC4wLCAxLjAsIDEuMF0pOworCisgICAgICAgIGds
LnVzZVByb2dyYW0odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ3VzZVByb2dyYW0gZmFp
bGVkICcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxv
Y2F0aW9ufSAqLyB2YXIgY29sb3JTY2FsZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlz
Lm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksICd1X2NvbG9yU2NhbGUnKTsKKyAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucyhjb2xvclNjYWxlTG9jICE9IC0xLCAnQ291bGQgbm90IGZpbmQgdV9jb2xvclNj
YWxlICcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBnbC51bmlmb3JtMWYoY29sb3JTY2FsZUxv
YywgdGhpcy5tX2NvbG9yU2NhbGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgY29vcmRMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1fcHJvZ3JhbS5nZXRQcm9n
cmFtKCksICdhX3Bvc2l0aW9uJyk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoY29vcmRMb2Mg
IT0gLTEsICdDb3VsZCBub3QgZmluZCBhX3Bvc2l0aW9uICcsIGZhbHNlLCB0cnVlKTsKKworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbG9yTG9jID0gZ2wuZ2V0QXR0cmliTG9j
YXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9jb2xvcicpOworICAgICAgICBh
c3NlcnRNc2dPcHRpb25zKGNvbG9yTG9jICE9IC0xLCAnQ291bGQgbm90IGZpbmQgYV9jb2xvciAn
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29s
b3JMb2MpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5P
X0VSUk9SLCAnZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgZmFpbGVkICcsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29vcmRMb2MpOworICAgICAgICBh
c3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAnZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkgZmFpbGVkICcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgcG9z
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBwb3MpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRp
b25zLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29v
cmRMb2MsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgdmFyIGMgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGMp
OworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JzLCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2MsIDQsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdM
RVMsIDAsIDMpOworCisgICAgICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxv
Yyk7CisgICAgICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb29yZExvYyk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBhCisgICAgICovCisKKyAgICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LlJlYWRQaXhlbHNU
ZXN0LnByb3RvdHlwZS5jbGVhckNvbG9yID0gZnVuY3Rpb24ociwgZywgYiwgYSkgeworICAgICAg
ICBpZiAodGhpcy5tX2ZyYW1lYnVmZmVUeXBlID09IGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3Qu
RnJhbWVidWZmZXJUeXBlLkZSQU1FQlVGRkVSVFlQRV9OQVRJVkUpIHsKKyAgICAgICAgICAgIGds
LmNsZWFyQ29sb3IociwgZywgYiwgYSk7CisgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fZnJhbWVidWZmZVR5cGUgPT0g
ZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUuRlJBTUVCVUZGRVJUWVBF
X1JFTkRFUkJVRkZFUikgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1fdGV4Q2hhbm5lbENs
YXNzKSB7CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuVU5TSUdORURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyQ29s
b3IociwgZywgYiwgYSk7CisgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFzcy5TSUdORURfSU5URUdFUjoKKyAgICAg
ICAgICAgICAgICAgICAgZ2wuY2xlYXJCdWZmZXJpdihnbC5DT0xPUiwgMCwgbmV3IEludDMyQXJy
YXkoW3IsIGcsIGIsIGFdKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVOU0lHTkVEX0lOVEVH
RVI6CisgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVydWl2KGdsLkNPTE9SLCAwLCBu
ZXcgVWludDMyQXJyYXkoW3IsIGcsIGIsIGFdKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZM
T0FUSU5HX1BPSU5UOgorICAgICAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcmZ2KGdsLkNP
TE9SLCAwLCBuZXcgRmxvYXQzMkFycmF5KFtyLCBnLCBiLCBhXSkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICBERV9BU1NFUlQoZmFsc2UpOworCisgICAgfTsKKworICAgIGVzM2ZQaXhlbEJ1ZmZlck9i
amVjdFRlc3QuUmVhZFBpeGVsc1Rlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIHdpZHRoID0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoOworICAgICAgICB2YXIg
aGVpZ2h0ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodDsKKworICAgICAgICB2YXIgZnJhbWVidWZm
ZXIgPSBudWxsOworICAgICAgICB2YXIgcmVuZGVyYnVmZmVyID0gbnVsbDsKKworICAgICAgICBz
d2l0Y2ggKHRoaXMubV9mcmFtZWJ1ZmZlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBlczNmUGl4
ZWxCdWZmZXJPYmplY3RUZXN0LkZyYW1lYnVmZmVyVHlwZS5GUkFNRUJVRkZFUlRZUEVfTkFUSVZF
OgorICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJh
bWVidWZmZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBlczNm
UGl4ZWxCdWZmZXJPYmplY3RUZXN0LkZyYW1lYnVmZmVyVHlwZS5GUkFNRUJVRkZFUlRZUEVfUkVO
REVSQlVGRkVSOgorICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVS
QlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCB0aGlzLm1fcmVuZGVyYnVmZmVyRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKKworICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZnJhbWVidWZmZXIpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVG
RkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5jbGVhckNvbG9yKHRoaXMubV9jb2xvclNjYWxlICogMC40LCB0aGlzLm1f
Y29sb3JTY2FsZSAqIDEuMCwgdGhpcy5tX2NvbG9yU2NhbGUgKiAwLjUsIHRoaXMubV9jb2xvclNj
YWxlICogMS4wKTsKKworICAgICAgICBpZiAodGhpcy5tX3VzZUNvbG9yQ2xlYXJzKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heENsZWFyQ291bnQgPSAxMDsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluQ2xlYXJDb3VudCA9IDY7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkNsZWFyU2l6ZSA9IDE1Owor
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNsZWFyQ291bnQgPSB0aGlz
Lm1fcmFuZG9tLmdldEludChtaW5DbGVhckNvdW50LCBtYXhDbGVhckNvdW50KTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgY2xlYXJOZHggPSAwOyBjbGVhck5keCA8IGNsZWFyQ291bnQ7IGNsZWFy
TmR4KyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNsZWFy
WCA9IHRoaXMubV9yYW5kb20uZ2V0SW50KDAsIHdpZHRoIC0gbWluQ2xlYXJTaXplKTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNsZWFyWSA9IHRoaXMubV9yYW5k
b20uZ2V0SW50KDAsIGhlaWdodCAtIG1pbkNsZWFyU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNsZWFyV2lkdGggPSB0aGlzLm1fcmFuZG9tLmdldElu
dChtaW5DbGVhclNpemUsIHdpZHRoIC0gY2xlYXJYKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGNsZWFySGVpZ2h0ID0gdGhpcy5tX3JhbmRvbS5nZXRJbnQobWlu
Q2xlYXJTaXplLCBoZWlnaHQgLSBjbGVhclkpOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBjbGVhclJlZCA9IHRoaXMubV9jb2xvclNjYWxlICogdGhpcy5tX3Jh
bmRvbS5nZXRGbG9hdCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgY2xlYXJHcmVlbiA9IHRoaXMubV9jb2xvclNjYWxlICogdGhpcy5tX3JhbmRvbS5nZXRGbG9h
dCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY2xlYXJCbHVl
ID0gdGhpcy5tX2NvbG9yU2NhbGUgKiB0aGlzLm1fcmFuZG9tLmdldEZsb2F0KCk7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjbGVhckFscGhhID0gdGhpcy5tX2Nv
bG9yU2NhbGUgKiAoMC41ICsgMC41ICogdGhpcy5tX3JhbmRvbS5nZXRGbG9hdCgpKTsKKworICAg
ICAgICAgICAgICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgICAgICAgICAgICAg
IGdsLnNjaXNzb3IoY2xlYXJYLCBjbGVhclksIGNsZWFyV2lkdGgsIGNsZWFySGVpZ2h0KTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDb2xvcihjbGVhclJlZCwgY2xlYXJHcmVlbiwgY2xl
YXJCbHVlLCBjbGVhckFscGhhKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wuZGlz
YWJsZShnbC5TQ0lTU09SX1RFU1QpOworCisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5t
X3JlbmRlclRyaWFuZ2xlcykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBtaW5UcmlhbmdsZUNvdW50ID0gNDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWF4VHJpYW5nbGVDb3VudCA9IDEwOworCisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHRyaWFuZ2xlQ291bnQgPSB0aGlzLm1fcmFuZG9tLmdldEludChtaW5Ucmlh
bmdsZUNvdW50LCBtYXhUcmlhbmdsZUNvdW50KTsKKworICAgICAgICAgICAgZm9yICh2YXIgdHJp
YW5nbGVOZHggPSAwOyB0cmlhbmdsZU5keCA8IHRyaWFuZ2xlQ291bnQ7IHRyaWFuZ2xlTmR4Kysp
IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgxID0gMi4wICog
dGhpcy5tX3JhbmRvbS5nZXRGbG9hdCgpIC0gMS4wOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgeTEgPSAyLjAgKiB0aGlzLm1fcmFuZG9tLmdldEZsb2F0KCkgLSAx
LjA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB6MSA9IDIuMCAq
IHRoaXMubV9yYW5kb20uZ2V0RmxvYXQoKSAtIDEuMDsKKworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgeDIgPSAyLjAgKiB0aGlzLm1fcmFuZG9tLmdldEZsb2F0KCkg
LSAxLjA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5MiA9IDIu
MCAqIHRoaXMubV9yYW5kb20uZ2V0RmxvYXQoKSAtIDEuMDsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHoyID0gMi4wICogdGhpcy5tX3JhbmRvbS5nZXRGbG9hdCgp
IC0gMS4wOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MyA9
IDIuMCAqIHRoaXMubV9yYW5kb20uZ2V0RmxvYXQoKSAtIDEuMDsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkzID0gMi4wICogdGhpcy5tX3JhbmRvbS5nZXRGbG9h
dCgpIC0gMS4wOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgejMg
PSAyLjAgKiB0aGlzLm1fcmFuZG9tLmdldEZsb2F0KCkgLSAxLjA7CisKKyAgICAgICAgICAgICAg
ICB0aGlzLnJlbmRlclRyaWFuZ2xlKFt4MSwgeTEsIHoxXSwgW3gyLCB5MiwgejJdLCBbeDMsIHkz
LCB6M10pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqIEB0eXBlIHt0
Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovIHZhciByZWFkRm9ybWF0OworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHJlYWRQaXhlbHNGb3JtYXQ7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgcmVhZFBpeGVsc1R5cGU7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIGZsb2F0Q29tcGFyZTsKKworICAgICAgICBpZiAodGhpcy5tX2ZyYW1lYnVm
ZmVUeXBlID09IGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuRnJhbWVidWZmZXJUeXBlLkZSQU1F
QlVGRkVSVFlQRV9OQVRJVkUpIHsKKyAgICAgICAgICAgIHJlYWRGb3JtYXQgPSBnbHVUZXh0dXJl
VXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAg
ICAgICAgICAgcmVhZFBpeGVsc0Zvcm1hdCA9IGdsLlJHQkE7CisgICAgICAgICAgICByZWFkUGl4
ZWxzVHlwZSA9IGdsLlVOU0lHTkVEX0JZVEU7CisgICAgICAgICAgICBmbG9hdENvbXBhcmUgPSBm
YWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fZnJhbWVidWZmZVR5cGUgPT0gZXMzZlBp
eGVsQnVmZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUuRlJBTUVCVUZGRVJUWVBFX1JFTkRF
UkJVRkZFUikgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1fdGV4Q2hhbm5lbENsYXNzKSB7
CisgICAgICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5T
SUdORURfRklYRURfUE9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJlYWRGb3JtYXQgPSBnbHVU
ZXh0dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUp
OworICAgICAgICAgICAgICAgICAgICByZWFkUGl4ZWxzRm9ybWF0ID0gZ2wuUkdCQTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVhZFBpeGVsc1R5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICAgICAg
ICAgICAgICAgICAgICBmbG9hdENvbXBhcmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVyZUNoYW5uZWxDbGFz
cy5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmVhZEZvcm1hdCA9IGdsdVRl
eHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoZ2wuUkdCQV9JTlRFR0VSLCBnbC5JTlQpOwor
ICAgICAgICAgICAgICAgICAgICByZWFkUGl4ZWxzRm9ybWF0ID0gZ2wuUkdCQV9JTlRFR0VSOwor
ICAgICAgICAgICAgICAgICAgICByZWFkUGl4ZWxzVHlwZSA9IGdsLklOVDsKKyAgICAgICAgICAg
ICAgICAgICAgZmxvYXRDb21wYXJlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5UZXh0dXJlQ2hhbm5lbENsYXNzLlVO
U0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJlYWRGb3JtYXQgPSBnbHVUZXh0
dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5TSUdORURf
SU5UKTsKKyAgICAgICAgICAgICAgICAgICAgcmVhZFBpeGVsc0Zvcm1hdCA9IGdsLlJHQkFfSU5U
RUdFUjsKKyAgICAgICAgICAgICAgICAgICAgcmVhZFBpeGVsc1R5cGUgPSBnbC5VTlNJR05FRF9J
TlQ7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0Q29tcGFyZSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHRjdVRleHR1cmUuVGV4dHVy
ZUNoYW5uZWxDbGFzcy5GTE9BVElOR19QT0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmVhZEZv
cm1hdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoZ2wuUkdCQSwgZ2wuRkxP
QVQpOworICAgICAgICAgICAgICAgICAgICByZWFkUGl4ZWxzRm9ybWF0ID0gZ2wuUkdCQTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVhZFBpeGVsc1R5cGUgPSBnbC5GTE9BVDsKKyAgICAgICAgICAg
ICAgICAgICAgZmxvYXRDb21wYXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJU
KGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSB3YXJuaW5nCisgICAgICAg
ICAgICAgICAgICAgIHJlYWRGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9y
bWF0KGdsLlJHQkEsIGdsLkZMT0FUKTsKKyAgICAgICAgICAgICAgICAgICAgcmVhZFBpeGVsc0Zv
cm1hdCA9IGdsLlJHQkE7CisgICAgICAgICAgICAgICAgICAgIHJlYWRQaXhlbHNUeXBlID0gZ2wu
RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0Q29tcGFyZSA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTaWxlbmNlIHdhcm5pbmdz
CisgICAgICAgICAgICByZWFkRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZv
cm1hdChnbC5SR0JBLCBnbC5GTE9BVCk7CisgICAgICAgICAgICByZWFkUGl4ZWxzRm9ybWF0ID0g
Z2wuUkdCQTsKKyAgICAgICAgICAgIHJlYWRQaXhlbHNUeXBlID0gZ2wuRkxPQVQ7CisgICAgICAg
ICAgICBmbG9hdENvbXBhcmUgPSB0cnVlOworICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciByZWFkUmVmZXJlbmNlID0gbmV3IHRjdVRleHR1cmUu
VGV4dHVyZTJEKHJlYWRGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICByZWFkUmVmZXJl
bmNlLmFsbG9jTGV2ZWwoMCk7CisKKyAgICAgICAgdmFyIHBpeGVsQnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9QQUNLX0JVRkZFUiwg
cGl4ZWxCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1BBQ0tfQlVGRkVS
LCByZWFkUmVmZXJlbmNlLmdldExldmVsKDApLmdldERhdGFTaXplKCksIGdsLlNUUkVBTV9SRUFE
KTsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCByZWFkUGl4ZWxz
Rm9ybWF0LCByZWFkUGl4ZWxzVHlwZSwgMCk7CisKKyAgICAgICAgdmFyIGJ1ZmZlckRhdGEgPSBu
ZXcgVWludDhBcnJheShyZWFkUmVmZXJlbmNlLmdldExldmVsKDApLmdldERhdGFTaXplKCkpOwor
CisgICAgICAgIGdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wuUElYRUxfUEFDS19CVUZGRVIsIDAsIGJ1
ZmZlckRhdGEpOworCisgICAgICAgIHZhciByZWFkUmVzdWx0ID0gbmV3IHRjdVRleHR1cmUuQ29u
c3RQaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICB3aWR0aDogd2lkdGgsCisgICAgICAg
ICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgICAgICAgIGZvcm1hdDogcmVhZEZvcm1hdCwKKyAg
ICAgICAgICAgIGRhdGE6IGJ1ZmZlckRhdGEuYnVmZmVyfSk7CisKKyAgICAgICAgZ2wuYmluZEJ1
ZmZlcihnbC5QSVhFTF9QQUNLX0JVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgZ2wucmVhZFBpeGVs
cygwLCAwLCB3aWR0aCwgaGVpZ2h0LCByZWFkUGl4ZWxzRm9ybWF0LCByZWFkUGl4ZWxzVHlwZSwg
cmVhZFJlZmVyZW5jZS5nZXRMZXZlbCgwKS5nZXREYXRhUHRyKCkpOworCisgICAgICAgIGlmIChm
cmFtZWJ1ZmZlcikKKyAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVy
KTsKKworICAgICAgICBpZiAocmVuZGVyYnVmZmVyKQorICAgICAgICAgICAgZ2wuZGVsZXRlUmVu
ZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgdmFyIGlzT2sgPSBmYWxzZTsKKwor
ICAgICAgICBpZiAoZmxvYXRDb21wYXJlKSB7CisgICAgICAgICAgICAvLyBXaGVuIGNvbnZlcnRp
bmcgYmV0d2VlbiBpbnRlZ2VycyBhbmQgZmxvYXRzLCBjZXJ0YWluIEdQVXMgbWlnaHQgaGF2ZSBk
aWZmZXJlbnQgYmVoYXZpb3JzCisgICAgICAgICAgICAvLyBmcm9tIGphdmFzY3JpcHQgaW4gcm91
bmRpbmcgKHVwIHZzIGRvd24pLiBJbmNyZWFzZSB0b2xlcmFuY2UgdG8gYWxsb3cgYm90aCBiZWhh
dmlvcnMuCisgICAgICAgICAgICAvLyBEZXRhaWxlZCBkaXNjdXNzaW9uIGluIE1lc2EgdXBzdHJl
YW0gY2FuIGJlIGZvdW5kIGF0OgorICAgICAgICAgICAgLy8gICBodHRwczovL2J1Z3MuZnJlZWRl
c2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD04OTMxNC4KKyAgICAgICAgICAgIHZhciB0aHJlc2hv
bGQ7CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9yZW5kZXJidWZmZXJGb3JtYXQpIHsKKyAg
ICAgICAgICAgICAgY2FzZSBnbC5SR0IxMF9BMjoKKyAgICAgICAgICAgICAgY2FzZSBnbC5SR0I1
X0ExOgorICAgICAgICAgICAgICBjYXNlIGdsLlJHQjU2NToKKyAgICAgICAgICAgICAgICB0aHJl
c2hvbGQgPSBbMC4wMDQsIDAuMDA0LCAwLjAwNCwgMC4wXTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSBb
MC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlzT2sgPSB0Y3VJbWFnZUNvbXBhcmUuZmxvYXRUaHJlc2hvbGRDb21w
YXJlKCdSZXN1bHQgY29tcGFyaXNvbicsICdSZXN1bHQgb2YgcmVhZCBwaXhlbHMgdG8gbWVtb3J5
IGNvbXBhcmVkIHdpdGggcmVzdWx0IG9mIHJlYWQgcGl4ZWxzIHRvIGJ1ZmZlcicsIHJlYWRSZWZl
cmVuY2UuZ2V0TGV2ZWwoMCksIHJlYWRSZXN1bHQsIHRocmVzaG9sZCk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaXNPayA9IHRjdUltYWdlQ29tcGFyZS5pbnRUaHJlc2hv
bGRDb21wYXJlKCdSZXN1bHQgY29tcGFyaXNvbicsICdSZXN1bHQgb2YgcmVhZCBwaXhlbHMgdG8g
bWVtb3J5IGNvbXBhcmVkIHdpdGggcmVzdWx0IG9mIHJlYWQgcGl4ZWxzIHRvIGJ1ZmZlcicsIHJl
YWRSZWZlcmVuY2UuZ2V0TGV2ZWwoMCksIHJlYWRSZXN1bHQsIFswLCAwLCAwLCAwXSk7CisKKyAg
ICAgICAgZ2wuZGVsZXRlQnVmZmVyKHBpeGVsQnVmZmVyKTsKKworICAgICAgICBhc3NlcnRNc2dP
cHRpb25zKGlzT2ssIHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAg
ICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAg
ZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0
Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIHRlc3RHcm91cCA9IHN0YXRlLnRlc3RDYXNlczsKKworICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgbmF0aXZlRnJhbWVi
dWZmZXJHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ25hdGl2ZScsICdUZXN0cyB3aXRoIHJl
YWRpbmcgZnJvbSBuYXRpdmUgZnJhbWVidWZmZXInKTsKKworICAgICAgICB2YXIgbmF0aXZlRnJh
bWVidWZmZXJUZXN0cyA9IFt7CisgICAgICAgICAgICAgICAgbmFtZTogJ2NsZWFycycsCisgICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTaW1wbGUgcmVhZCBwaXhlbHMgdGVzdCB3aXRoIGNv
bG9yIGNsZWFycycsCisgICAgICAgICAgICAgICAgdXNlQ29sb3JDbGVhcjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICByZW5kZXJUcmlhbmdsZXM6IGZhbHNlLAorICAgICAgICAgICAgICAgIGZyYW1l
YnVmZmVyVHlwZTogZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5GcmFtZWJ1ZmZlclR5cGUuRlJB
TUVCVUZGRVJUWVBFX05BVElWRSwKKyAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJGb3JtYXQ6
IGdsLk5PTkUKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAndHJpYW5n
bGVzJywKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NpbXBsZSByZWFkIHBpeGVscyB0
ZXN0IHJlbmRlcmluZyB0cmlhbmdsZXMnLAorICAgICAgICAgICAgICAgIHVzZUNvbG9yQ2xlYXI6
IGZhbHNlLAorICAgICAgICAgICAgICAgIHJlbmRlclRyaWFuZ2xlczogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBmcmFtZWJ1ZmZlclR5cGU6IGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QuRnJhbWVi
dWZmZXJUeXBlLkZSQU1FQlVGRkVSVFlQRV9OQVRJVkUsCisgICAgICAgICAgICAgICAgcmVuZGVy
YnVmZmVyRm9ybWF0OiBnbC5OT05FCisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAg
ICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBuYXRpdmVGcmFtZWJ1ZmZlclRlc3Rz
Lmxlbmd0aDsgdGVzdE5keCsrKQorICAgICAgICAgICAgbmF0aXZlRnJhbWVidWZmZXJHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdC5SZWFkUGl4ZWxzVGVzdChuYXRp
dmVGcmFtZWJ1ZmZlclRlc3RzW3Rlc3ROZHhdKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG5hdGl2ZUZyYW1lYnVmZmVyR3JvdXApOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVz
dENhc2UuRGVxcFRlc3R9ICovIHZhciByZW5kZXJidWZmZXJHcm91cCA9IHRjdVRlc3RDYXNlLm5l
d1Rlc3QoJ3JlbmRlcmJ1ZmZlcicsICdUZXN0cyB3aXRoIHJlYWRpbmcgZnJvbSByZW5kZXJidWZm
ZXInKTsKKworICAgICAgICB2YXIgcmVuZGVyYnVmZmVyRm9ybWF0cyA9IFsKKyAgICAgICAgICAg
IGdsLlJHQkE4LAorICAgICAgICAgICAgZ2wuUkdCQThJLAorICAgICAgICAgICAgZ2wuUkdCQThV
SSwKKyAgICAgICAgICAgIGdsLlJHQkExNkksCisgICAgICAgICAgICBnbC5SR0JBMTZVSSwKKyAg
ICAgICAgICAgIGdsLlJHQkEzMkksCisgICAgICAgICAgICBnbC5SR0JBMzJVSSwKKworICAgICAg
ICAgICAgZ2wuU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgZ2wuUkdCMTBfQTIsCisgICAgICAg
ICAgICBnbC5SR0IxMF9BMlVJLAorICAgICAgICAgICAgZ2wuUkdCQTQsCisgICAgICAgICAgICBn
bC5SR0I1X0ExLAorCisgICAgICAgICAgICBnbC5SR0I4LAorICAgICAgICAgICAgZ2wuUkdCNTY1
LAorCisgICAgICAgICAgICBnbC5SRzgsCisgICAgICAgICAgICBnbC5SRzhJLAorICAgICAgICAg
ICAgZ2wuUkc4VUksCisgICAgICAgICAgICBnbC5SRzE2SSwKKyAgICAgICAgICAgIGdsLlJHMTZV
SSwKKyAgICAgICAgICAgIGdsLlJHMzJJLAorICAgICAgICAgICAgZ2wuUkczMlVJCisgICAgICAg
IF07CisKKyAgICAgICAgdmFyIHJlbmRlcmJ1ZmZlckZvcm1hdHNTdHIgPSBbCisgICAgICAgICAg
ICAncmdiYTgnLAorICAgICAgICAgICAgJ3JnYmE4aScsCisgICAgICAgICAgICAncmdiYTh1aScs
CisgICAgICAgICAgICAncmdiYTE2aScsCisgICAgICAgICAgICAncmdiYTE2dWknLAorICAgICAg
ICAgICAgJ3JnYmEzMmknLAorICAgICAgICAgICAgJ3JnYmEzMnVpJywKKworICAgICAgICAgICAg
J3NyZ2I4X2FscGhhOCcsCisgICAgICAgICAgICAncmdiMTBfYTInLAorICAgICAgICAgICAgJ3Jn
YjEwX2EydWknLAorICAgICAgICAgICAgJ3JnYmE0JywKKyAgICAgICAgICAgICdyZ2I1X2ExJywK
KworICAgICAgICAgICAgJ3JnYjgnLAorICAgICAgICAgICAgJ3JnYjU2NScsCisKKyAgICAgICAg
ICAgICdyZzgnLAorICAgICAgICAgICAgJ3JnOGknLAorICAgICAgICAgICAgJ3JnOHVpJywKKyAg
ICAgICAgICAgICdyZzE2aScsCisgICAgICAgICAgICAncmcxNnVpJywKKyAgICAgICAgICAgICdy
ZzMyaScsCisgICAgICAgICAgICAncmczMnVpJworICAgICAgICBdOworICAgICAgICBlczNmUGl4
ZWxCdWZmZXJPYmplY3RUZXN0LkRFX1NUQVRJQ19BU1NFUlQocmVuZGVyYnVmZmVyRm9ybWF0c1N0
ci5sZW5ndGggPT0gcmVuZGVyYnVmZmVyRm9ybWF0cy5sZW5ndGgpOworCisgICAgICAgIGZvciAo
dmFyIGZvcm1hdE5keCA9IDA7IGZvcm1hdE5keCA8IHJlbmRlcmJ1ZmZlckZvcm1hdHMubGVuZ3Ro
OyBmb3JtYXROZHgrKykgeworICAgICAgICAgICAgZm9yICh2YXIgdHJpYW5nbGVzQ2xlYXJzID0g
MDsgdHJpYW5nbGVzQ2xlYXJzIDwgMjsgdHJpYW5nbGVzQ2xlYXJzKyspIHsKKyAgICAgICAgICAg
ICAgICB2YXIgbmFtZURlc2NyaXB0aW9uID0gcmVuZGVyYnVmZmVyRm9ybWF0c1N0cltmb3JtYXRO
ZHhdICsgJ18nICsgKHRyaWFuZ2xlc0NsZWFycyA9PSAwID8gJ3RyaWFuZ2xlcycgOiAnY2xlYXJz
Jyk7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RTcGVjID0gbmV3IGVzM2ZQaXhlbEJ1ZmZlck9i
amVjdFRlc3QuVGVzdFNwZWMoKTsKKyAgICAgICAgICAgICAgICB0ZXN0U3BlYy5uYW1lID0gbmFt
ZURlc2NyaXB0aW9uOworICAgICAgICAgICAgICAgIHRlc3RTcGVjLmRlc2NyaXB0aW9uID0gbmFt
ZURlc2NyaXB0aW9uOworICAgICAgICAgICAgICAgIHRlc3RTcGVjLnVzZUNvbG9yQ2xlYXIgPSB0
cmlhbmdsZXNDbGVhcnMgPT0gMTsKKyAgICAgICAgICAgICAgICB0ZXN0U3BlYy5yZW5kZXJUcmlh
bmdsZXMgPSB0cmlhbmdsZXNDbGVhcnMgPT0gMDsKKyAgICAgICAgICAgICAgICB0ZXN0U3BlYy5m
cmFtZWJ1ZmZlclR5cGUgPSBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LkZyYW1lYnVmZmVyVHlw
ZS5GUkFNRUJVRkZFUlRZUEVfUkVOREVSQlVGRkVSOworICAgICAgICAgICAgICAgIHRlc3RTcGVj
LnJlbmRlcmJ1ZmZlckZvcm1hdCA9IHJlbmRlcmJ1ZmZlckZvcm1hdHNbZm9ybWF0TmR4XTsKKwor
ICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlckdyb3VwLmFkZENoaWxkKG5ldyBlczNmUGl4ZWxC
dWZmZXJPYmplY3RUZXN0LlJlYWRQaXhlbHNUZXN0KHRlc3RTcGVjKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQocmVuZGVyYnVmZmVyR3Jv
dXApOworICAgIH07CisKKyAgICBlczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0LnJ1biA9IGZ1bmN0
aW9uKGNvbnRleHQpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBU
ZXN0IFJvb3QgcGFyYW1ldGVycworICAgICAgICB2YXIgdGVzdE5hbWUgPSAncGl4ZWxfYnVmZmVy
X29iamVjdCc7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnUGl4ZWwgQnVmZmVyIE9i
amVjdCBUZXN0cyc7CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKwor
ICAgICAgICBzdGF0ZS50ZXN0TmFtZSA9IHRlc3ROYW1lOworICAgICAgICBzdGF0ZS50ZXN0Q2Fz
ZXMgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwp
OworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBz
ZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CisgICAgICAgIGRl
c2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IC8vQ3JlYXRlIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIGVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRl
c3QuaW5pdCgpOworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1
VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikg
eworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRj
dVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuanMgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTk3MzY2NWFk
OGMxNTc1NmE5NWFjZDMwOTQwZDJmYmY4YTE1OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2VzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuanMKQEAgLTAsMCArMSw3MDQgQEAKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMg
VXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9q
ZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0
Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigp
IHsKKwordmFyIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHM7Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRlc3RDYXNlOwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3Blbmds
LmdsdVNoYWRlclByb2dyYW07Cit2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZTsKK3ZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cit2
YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKK3ZhciBkZVN0
cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOwordmFyIHRjdUltYWdlQ29t
cGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOwordmFyIGdsdVRleHR1cmVV
dGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKKworICAgIC8qKiBAdHlwZSB7
V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gKi8gdmFyIGdsOworICAgIC8qKiBAY29uc3QgQHR5cGUg
e251bWJlcn0gKi8gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5NQVhfUkVOREVSX1dJRFRIID0g
MjU2OworICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gZXMzZlByaW1pdGl2ZVJlc3Rh
cnRUZXN0cy5NQVhfUkVOREVSX0hFSUdIVCA9IDI1NjsKKworICAgIC8qKiBAY29uc3QgQHR5cGUg
e251bWJlcn0gKi8gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5NQVhfVU5TSUdORURfQllURSA9
IDI1NTsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGVzM2ZQcmltaXRpdmVSZXN0
YXJ0VGVzdHMuTUFYX1VOU0lHTkVEX1NIT1JUID0gNjU1MzU7CisgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLk1BWF9VTlNJR05FRF9JTlQg
PSA0Mjk0OTY3Mjk1OworCisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyBlczNmUHJp
bWl0aXZlUmVzdGFydFRlc3RzLlJFU1RBUlRfSU5ERVhfVU5TSUdORURfQllURSA9IGVzM2ZQcmlt
aXRpdmVSZXN0YXJ0VGVzdHMuTUFYX1VOU0lHTkVEX0JZVEU7CisgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlJFU1RBUlRfSU5ERVhfVU5T
SUdORURfU0hPUlQgPSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLk1BWF9VTlNJR05FRF9TSE9S
VDsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGVzM2ZQcmltaXRpdmVSZXN0YXJ0
VGVzdHMuUkVTVEFSVF9JTkRFWF9VTlNJR05FRF9JTlQgPSBlczNmUHJpbWl0aXZlUmVzdGFydFRl
c3RzLk1BWF9VTlNJR05FRF9JTlQ7CisKKyAgICB2YXIgREVfQVNTRVJUID0gZnVuY3Rpb24oZXhw
cmVzc2lvbikgeworICAgICAgICBpZiAoIWV4cHJlc3Npb24pIHRocm93IG5ldyBFcnJvcignQXNz
ZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAZW51bQorICAgICAqLwor
ICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZSA9IHsKKyAgICAgICAg
UFJJTUlUSVZFX1BPSU5UUzogMCwKKyAgICAgICAgUFJJTUlUSVZFX0xJTkVfU1RSSVA6IDEsCisg
ICAgICAgIFBSSU1JVElWRV9MSU5FX0xPT1A6IDIsCisgICAgICAgIFBSSU1JVElWRV9MSU5FUzog
MywKKyAgICAgICAgUFJJTUlUSVZFX1RSSUFOR0xFX1NUUklQOiA0LAorICAgICAgICBQUklNSVRJ
VkVfVFJJQU5HTEVfRkFOOiA1LAorICAgICAgICBQUklNSVRJVkVfVFJJQU5HTEVTOiA2CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cy5JbmRleFR5cGUgPSB7CisgICAgICAgIElOREVYX1VOU0lHTkVEX0JZVEU6IDAs
CisgICAgICAgIElOREVYX1VOU0lHTkVEX1NIT1JUOiAxLAorICAgICAgICBJTkRFWF9VTlNJR05F
RF9JTlQ6IDIKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBl
czNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdGdW5jdGlvbiA9IHsKKyAgICAgICAgRlVOQ1RJ
T05fRFJBV19FTEVNRU5UUzogMCwKKyAgICAgICAgRlVOQ1RJT05fRFJBV19FTEVNRU5UU19JTlNU
QU5DRUQ6IDEsCisgICAgICAgIEZVTkNUSU9OX0RSQVdfUkFOR0VfRUxFTUVOVFM6IDIKKyAgICB9
OworCisgICAgLyoqCisgICAgKiBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVJl
c3RhcnRDYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIFRlc3RDYXNlIGNsYXNzCisgICAgKiBAY29u
c3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAqIEBw
YXJhbSB7P3N0cmluZ30gbmFtZQorICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisg
ICAgKiBAcGFyYW0ge2VzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZX0gcHJp
bVR5cGUKKyAgICAqIEBwYXJhbSB7ZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGV9
IGluZGV4VHlwZQorICAgICogQHBhcmFtIHtlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdG
dW5jdGlvbn0gX2Z1bmN0aW9uCisgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJlZ2luV2l0aFJlc3Rh
cnQKKyAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5kV2l0aFJlc3RhcnQKKyAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gZHVwbGljYXRlUmVzdGFydHMKKyAgICAqLworICAgIGVzM2ZQcmltaXRpdmVSZXN0
YXJ0VGVzdHMuUHJpbWl0aXZlUmVzdGFydENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlv
biwgcHJpbVR5cGUsIGluZGV4VHlwZSwgX2Z1bmN0aW9uLCBiZWdpbldpdGhSZXN0YXJ0LCBlbmRX
aXRoUmVzdGFydCwgZHVwbGljYXRlUmVzdGFydHMpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVx
cFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlfSAqLyB0aGlzLm1fcHJpbVR5
cGUgPSBwcmltVHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmUHJpbWl0aXZlUmVzdGFydFRl
c3RzLkluZGV4VHlwZX0gKi8gdGhpcy5tX2luZGV4VHlwZSA9IGluZGV4VHlwZTsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdGdW5jdGlvbn0gKi8gdGhp
cy5tX2Z1bmN0aW9uID0gX2Z1bmN0aW9uOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHRoaXMubV9iZWdpbldpdGhSZXN0YXJ0ID0gYmVnaW5XaXRoUmVzdGFydDsgLy8gV2hldGhlciB0
aGVyZSB3aWxsIGJlIHJlc3RhcnQgaW5kaWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbmRl
eCBhcnJheS4KKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLm1fZW5kV2l0aFJl
c3RhcnQgPSBlbmRXaXRoUmVzdGFydDsgLy8gV2hldGhlciB0aGVyZSB3aWxsIGJlIHJlc3RhcnQg
aW5kaWNlcyBhdCB0aGUgZW5kIG9mIHRoZSBpbmRleCBhcnJheS4KKyAgICAgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB0aGlzLm1fZHVwbGljYXRlUmVzdGFydHMgPSBkdXBsaWNhdGVSZXN0YXJ0
czsgLy8gV2hldGhlciB0d28gY29uc2VjdXRpdmUgcmVzdGFydHMgYXJlIHVzZWQgaW5zdGVhZCBv
ZiBvbmUuCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
fSAqLyB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisKKyAgICAgICAgLy8gXG5vdGUgT25seSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBpbmRleCB2ZWN0b3JzIGlzIHVzZWQgKGFjY29yZGluZyB0byBtX2lu
ZGV4VHlwZSkuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2lu
ZGljZXNVQiA9IFtdOyAvL2RlVWludDgKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB0aGlzLm1faW5kaWNlc1VTID0gW107IC8vZGVVaW50MTYKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1faW5kaWNlc1VJID0gW107IC8vZGVVaW50MzIKKwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9wb3NpdGlvbnMgPSBb
XTsKKyAgICB9OworCisgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVSZXN0
YXJ0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnBy
b3RvdHlwZSk7CisgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVSZXN0YXJ0
Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlBy
aW1pdGl2ZVJlc3RhcnRDYXNlOworCisgICAgLyoqCisgICAgKiBEcmF3IHdpdGggdGhlIGFwcHJv
cHJpYXRlIEdMRVMzIGRyYXcgZnVuY3Rpb24uCisgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRO
ZHgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudAorICAgICovCisgICAgZXMzZlByaW1pdGl2
ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVSZXN0YXJ0Q2FzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0
aW9uKHN0YXJ0TmR4LCBjb3VudCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHByaW1UeXBlR0w7CisKKyAgICAgICAgc3dpdGNoICh0aGlzLm1fcHJpbVR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlLlBSSU1J
VElWRV9QT0lOVFM6CisgICAgICAgICAgICAgICAgcHJpbVR5cGVHTCA9IGdsLlBPSU5UUzsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3Rh
cnRUZXN0cy5QcmltaXRpdmVUeXBlLlBSSU1JVElWRV9MSU5FX1NUUklQOgorICAgICAgICAgICAg
ICAgIHByaW1UeXBlR0wgPSBnbC5MSU5FX1NUUklQOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVR5cGUu
UFJJTUlUSVZFX0xJTkVfTE9PUDoKKyAgICAgICAgICAgICAgICBwcmltVHlwZUdMID0gZ2wuTElO
RV9MT09QOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBlczNmUHJp
bWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVR5cGUuUFJJTUlUSVZFX0xJTkVTOgorICAgICAg
ICAgICAgICAgIHByaW1UeXBlR0wgPSBnbC5MSU5FUzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBl
LlBSSU1JVElWRV9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAgICAgICBwcmltVHlwZUdMID0g
Z2wuVFJJQU5HTEVfU1RSSVA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfVFJJ
QU5HTEVfRkFOOgorICAgICAgICAgICAgICAgIHByaW1UeXBlR0wgPSBnbC5UUklBTkdMRV9GQU47
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfVFJJQU5HTEVTOgorICAgICAgICAg
ICAgICAgIHByaW1UeXBlR0wgPSBnbC5UUklBTkdMRVM7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7
CisgICAgICAgICAgICAgICAgcHJpbVR5cGVHTCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluZGV4VHlwZUdMOworCisgICAgICAgIHN3aXRjaCAo
dGhpcy5tX2luZGV4VHlwZSkgeworICAgICAgICAgICAgY2FzZSBlczNmUHJpbWl0aXZlUmVzdGFy
dFRlc3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIGlu
ZGV4VHlwZUdMID0gZ2wuVU5TSUdORURfQllURTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhf
VU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgaW5kZXhUeXBlR0wgPSBnbC5VTlNJR05F
RF9TSE9SVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlBy
aW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfSU5UOgorICAgICAg
ICAgICAgICAgIGluZGV4VHlwZUdMID0gZ2wuVU5TSUdORURfSU5UOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQo
ZmFsc2UpOworICAgICAgICAgICAgICAgIGluZGV4VHlwZUdMID0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzdGFydEluZGV4ID0gdGhpcy5tX2lu
ZGV4VHlwZSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJ
R05FRF9CWVRFID8gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5SRVNUQVJUX0lOREVYX1VOU0lH
TkVEX0JZVEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5tX2luZGV4VHlwZSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkluZGV4
VHlwZS5JTkRFWF9VTlNJR05FRF9TSE9SVCA/IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUkVT
VEFSVF9JTkRFWF9VTlNJR05FRF9TSE9SVCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1faW5kZXhUeXBlID09IGVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMuSW5kZXhUeXBlLklOREVYX1VOU0lHTkVEX0lOVCA/IGVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMuUkVTVEFSVF9JTkRFWF9VTlNJR05FRF9JTlQgOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDsKKworICAgICAgICBERV9BU1NF
UlQocmVzdGFydEluZGV4ICE9IDApOworCisgICAgICAgIHZhciBpbmRleEdMQnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIHZhciBidWZmZXJJbmRleCA9IHRoaXMuZ2V0SW5kZXhQ
dHIoc3RhcnROZHgpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBpbmRleEdMQnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgYnVmZmVySW5kZXgsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICBpZiAo
dGhpcy5tX2Z1bmN0aW9uID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuRHJhd0Z1bmN0aW9u
LkZVTkNUSU9OX0RSQVdfRUxFTUVOVFMpIHsKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50cyhw
cmltVHlwZUdMLCBjb3VudCwgaW5kZXhUeXBlR0wsIDApOworICAgICAgICB9IGVsc2UgaWYgKHRo
aXMubV9mdW5jdGlvbiA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdGdW5jdGlvbi5G
VU5DVElPTl9EUkFXX0VMRU1FTlRTX0lOU1RBTkNFRCkgeworICAgICAgICAgICAgZ2wuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKHByaW1UeXBlR0wsIGNvdW50LCBpbmRleFR5cGVHTCwgMCwgMSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBERV9BU1NFUlQodGhpcy5tX2Z1bmN0aW9uID09
IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuRHJhd0Z1bmN0aW9uLkZVTkNUSU9OX0RSQVdfUkFO
R0VfRUxFTUVOVFMpOworCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBsYXJnZXN0IG5vbi1yZXN0
YXJ0IGluZGV4IGluIHRoZSBpbmRleCBhcnJheSAoZm9yIGdsRHJhd1JhbmdlRWxlbWVudHMoKSBl
bmQgcGFyYW1ldGVyKS4KKworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
YXggPSAwOworCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUluZGlj
ZXMgPSB0aGlzLmdldE51bUluZGljZXMoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbnVtSW5kaWNlczsgaSsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoaSk7CisgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4ICE9IHJlc3RhcnRJbmRleCAmJiBpbmRleCA+IG1heCkKKyAgICAgICAgICAgICAgICAgICAg
bWF4ID0gaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL1RPRE86IGRyYXdSYW5n
ZUVsZW1lbnRzIC0+IGNoZWNrIGdldEluZGV4UHRyIHVzYWdlCisgICAgICAgICAgICBnbC5kcmF3
UmFuZ2VFbGVtZW50cyhwcmltVHlwZUdMLCAwLCBtYXgsIGNvdW50LCBpbmRleFR5cGVHTCwgMCk7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5Qcmlt
aXRpdmVSZXN0YXJ0Q2FzZS5wcm90b3R5cGUucmVuZGVyV2l0aFJlc3RhcnQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLy8gUHJpbWl0aXZlIFJlc3RhcnQgaXMgYWx3YXlzIG9uIGluIFdlYkdMMgor
ICAgICAgICAvL2dsLmVuYWJsZShnbC5QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CisK
KyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9C
SVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgICAgIHRoaXMuZHJhdygwLCB0aGlz
LmdldE51bUluZGljZXMoKSk7CisgICAgfTsKKworICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVz
dHMuUHJpbWl0aXZlUmVzdGFydENhc2UucHJvdG90eXBlLnJlbmRlcldpdGhvdXRSZXN0YXJ0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzdGFydElu
ZGV4ID0gdGhpcy5tX2luZGV4VHlwZSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkluZGV4
VHlwZS5JTkRFWF9VTlNJR05FRF9CWVRFID8gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5SRVNU
QVJUX0lOREVYX1VOU0lHTkVEX0JZVEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMubV9pbmRleFR5cGUgPT0gZXMzZlByaW1pdGl2ZVJlc3Rh
cnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfU0hPUlQgPyBlczNmUHJpbWl0aXZlUmVz
dGFydFRlc3RzLlJFU1RBUlRfSU5ERVhfVU5TSUdORURfU0hPUlQgOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9pbmRleFR5cGUgPT0gZXMz
ZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfSU5UID8gZXMz
ZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5SRVNUQVJUX0lOREVYX1VOU0lHTkVEX0lOVCA6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDsKKworICAgICAg
ICBERV9BU1NFUlQocmVzdGFydEluZGV4ICE9IDApOworICAgICAgICAvLyBQcmltaXRpdmUgUmVz
dGFydCBpcyBhbHdheXMgb24gaW4gV2ViR0wyCisgICAgICAgIC8vZ2wuZGlzYWJsZShnbC5QUklN
SVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CisKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQp
OworCisgICAgICAgIC8vIERyYXcsIGVtdWxhdGluZyBwcmltaXRpdmUgcmVzdGFydC4KKworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUluZGljZXMgPSB0aGlzLmdldE51bUlu
ZGljZXMoKTsKKworICAgICAgICBERV9BU1NFUlQobnVtSW5kaWNlcyA+PSAwKTsKKworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluZGV4QXJyYXlTdGFydE5keCA9IDA7IC8vIEtl
ZXAgdHJhY2sgb2YgdGhlIGRyYXcgc3RhcnQgaW5kZXggLSBmaXJzdCBpbmRleCBhZnRlciBhIHBy
aW1pdGl2ZSByZXN0YXJ0LCBvciBpbml0aWFsbHkgdGhlIGZpcnN0IGluZGV4IGFsdG9nZXRoZXIu
CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXhBcnJheU5keCA9IDA7IGluZGV4QXJyYXlOZHggPD0g
bnVtSW5kaWNlczsgaW5kZXhBcnJheU5keCsrKSB7IC8vIFxub3RlIEdvZXMgb25lICJ0b28gZmFy
IiBpbiBvcmRlciB0byBkZXRlY3QgZW5kIG9mIGFycmF5IGFzIHdlbGwuCisgICAgICAgICAgICBp
ZiAoaW5kZXhBcnJheU5keCA+PSBudW1JbmRpY2VzIHx8IHRoaXMuZ2V0SW5kZXgoaW5kZXhBcnJh
eU5keCkgPT0gcmVzdGFydEluZGV4KSB7Ly8gXG5vdGUgSGFuZGxlIGVuZCBvZiBhcnJheSB0aGUg
c2FtZSB3YXkgYXMgYSByZXN0YXJ0IGluZGV4IGVuY291bnRlci4KKyAgICAgICAgICAgICAgICBp
ZiAoaW5kZXhBcnJheVN0YXJ0TmR4IDwgbnVtSW5kaWNlcykgeworICAgICAgICAgICAgICAgICAg
ICAvLyBEcmF3IGZyb20gaW5kZXggaW5kZXhBcnJheVN0YXJ0TmR4IHRvIGluZGV4IGluZGV4QXJy
YXlOZHgtMSAuCisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3KGluZGV4QXJyYXlTdGFy
dE5keCwgaW5kZXhBcnJheU5keCAtIGluZGV4QXJyYXlTdGFydE5keCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaW5kZXhBcnJheVN0YXJ0TmR4ID0gaW5kZXhBcnJheU5k
eCArIDE7IC8vIE5leHQgZHJhdyBzdGFydHMganVzdCBhZnRlciB0aGlzIHJlc3RhcnQgaW5kZXgu
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFy
YW0ge251bWJlcn0gaW5kZXgKKyAgICAqLworICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMu
UHJpbWl0aXZlUmVzdGFydENhc2UucHJvdG90eXBlLmFkZEluZGV4ID0gZnVuY3Rpb24oaW5kZXgp
IHsKKyAgICAgICAgaWYgKHRoaXMubV9pbmRleFR5cGUgPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRU
ZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfQllURSkgeworICAgICAgICAgICAgREVfQVNT
RVJUKGRlTWF0aC5kZUluUmFuZ2UzMihpbmRleCwgMCwgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0
cy5NQVhfVU5TSUdORURfQllURSkpOworICAgICAgICAgICAgdGhpcy5tX2luZGljZXNVQi5wdXNo
KGluZGV4KTsgLy8gZGVVaW50OAorICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9pbmRleFR5cGUg
PT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfU0hP
UlQpIHsKKyAgICAgICAgICAgIERFX0FTU0VSVChkZU1hdGguZGVJblJhbmdlMzIoaW5kZXgsIDAs
IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuTUFYX1VOU0lHTkVEX1NIT1JUKSk7CisgICAgICAg
ICAgICB0aGlzLm1faW5kaWNlc1VTLnB1c2goaW5kZXgpOyAvLyBkZVVpbnQxNgorICAgICAgICB9
IGVsc2UgaWYgKHRoaXMubV9pbmRleFR5cGUgPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5J
bmRleFR5cGUuSU5ERVhfVU5TSUdORURfSU5UKSB7CisgICAgICAgICAgICBERV9BU1NFUlQoZGVN
YXRoLmRlSW5SYW5nZTMyKGluZGV4LCAwLCBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLk1BWF9V
TlNJR05FRF9JTlQpKTsKKyAgICAgICAgICAgIHRoaXMubV9pbmRpY2VzVUkucHVzaChpbmRleCk7
IC8vIC8vIGRlVWludDMyCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgREVfQVNTRVJUKGZh
bHNlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhOZHgK
KyAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAqLworICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0
VGVzdHMuUHJpbWl0aXZlUmVzdGFydENhc2UucHJvdG90eXBlLmdldEluZGV4ID0gZnVuY3Rpb24o
aW5kZXhOZHgpIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLm1faW5kZXhUeXBlKSB7CisgICAgICAg
ICAgICBjYXNlIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlLklOREVYX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubV9pbmRpY2VzVUJbaW5kZXhO
ZHhdOyAvL2RlVWludDMyCisgICAgICAgICAgICBjYXNlIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVz
dHMuSW5kZXhUeXBlLklOREVYX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLm1faW5kaWNlc1VTW2luZGV4TmR4XTsgLy9kZVVpbnQzMgorICAgICAgICAgICAgY2Fz
ZSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJR05FRF9JTlQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubV9pbmRpY2VzVUlbaW5kZXhOZHhdOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHJldHVybiB7bnVtYmVyfQorICAgICovCisgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0
cy5QcmltaXRpdmVSZXN0YXJ0Q2FzZS5wcm90b3R5cGUuZ2V0TnVtSW5kaWNlcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBzd2l0Y2ggKHRoaXMubV9pbmRleFR5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfQllU
RToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tX2luZGljZXNVQi5sZW5ndGg7CisgICAg
ICAgICAgICBjYXNlIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlLklOREVYX1VO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1faW5kaWNlc1VTLmxl
bmd0aDsKKyAgICAgICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5
cGUuSU5ERVhfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1faW5k
aWNlc1VJLmxlbmd0aDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREVf
QVNTRVJUKGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICAvKioKKyAgICAqIFBvaW50ZXIgdG8gdGhlIGluZGV4IHZhbHVlIGF0IGluZGV4
IGluZGV4TmR4LgorICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4TmR4CisgICAgKiBAcmV0dXJu
IHtVaW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fQorICAgICovCisgICAgZXMzZlBy
aW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVSZXN0YXJ0Q2FzZS5wcm90b3R5cGUuZ2V0SW5k
ZXhQdHIgPSBmdW5jdGlvbihpbmRleE5keCkgeworICAgICAgICAvL1RPRE86IGltcGxlbWVudAor
ICAgICAgICBzd2l0Y2ggKHRoaXMubV9pbmRleFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZXMz
ZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5ERVhfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodGhpcy5tX2luZGljZXNVQikuc3Vi
YXJyYXkoaW5kZXhOZHgpOworICAgICAgICAgICAgY2FzZSBlczNmUHJpbWl0aXZlUmVzdGFydFRl
c3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IFVpbnQxNkFycmF5KHRoaXMubV9pbmRpY2VzVVMpLnN1YmFycmF5KGluZGV4TmR4KTsK
KyAgICAgICAgICAgIGNhc2UgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5E
RVhfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWludDMyQXJyYXko
dGhpcy5tX2luZGljZXNVSSkuc3ViYXJyYXkoaW5kZXhOZHgpOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9CisgICAgfTsKKworICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0
VGVzdHMuUHJpbWl0aXZlUmVzdGFydENhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgLy8gQ2xlYXIgZXJyb3JzIGZyb20gcHJldmlvdXMgdGVzdHMKKyAgICAgICAgZ2wu
Z2V0RXJyb3IoKTsKKworICAgICAgICAvLyBDcmVhdGUgc2hhZGVyIHByb2dyYW0uCisKKyAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0U2hhZGVyU291cmNlID0KKyAgICAgICAg
ICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9w
b3NpdGlvbjtcbicgKworICAgICAgICAgICAgJ1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWlu
KClcbicgKworICAgICAgICAgICAgJyB7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRpb24g
PSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnU2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICcj
dmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworICAgICAgICAgICAgJ1xuJyArCisgICAgICAg
ICAgICAndm9pZCBtYWluKClcbicgKworICAgICAgICAgICAgJyB7XG4nICsKKyAgICAgICAgICAg
ICcgb19jb2xvciA9IHZlYzQoMS4wZik7XG4nICsKKyAgICAgICAgICAgICd9XG4nOworCisgICAg
ICAgIERFX0FTU0VSVCghdGhpcy5tX3Byb2dyYW0pOworCisgICAgICAgIHRoaXMubV9wcm9ncmFt
ID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3Jh
bS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydFNoYWRlclNvdXJjZSwgZnJhZ1NoYWRlclNvdXJjZSkp
OworCisgICAgICAgIGlmICghdGhpcy5tX3Byb2dyYW0uaXNPaygpKSB7CisgICAgICAgICAgICAv
L21fdGVzdEN0eC5nZXRMb2coKSA8PCAqdGhpcy5tX3Byb2dyYW07CisgICAgICAgICAgICB0ZXN0
RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGNvbXBpbGUgc2hhZGVyJywgdHJ1ZSk7CisgICAgICAg
IH0KKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlc3RhcnRJbmRleCA9IHRo
aXMubV9pbmRleFR5cGUgPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGUuSU5E
RVhfVU5TSUdORURfQllURSA/IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUkVTVEFSVF9JTkRF
WF9VTlNJR05FRF9CWVRFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1faW5kZXhUeXBlID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMu
SW5kZXhUeXBlLklOREVYX1VOU0lHTkVEX1NIT1JUID8gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0
cy5SRVNUQVJUX0lOREVYX1VOU0lHTkVEX1NIT1JUIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1faW5kZXhUeXBlID09IGVzM2ZQcmltaXRp
dmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlLklOREVYX1VOU0lHTkVEX0lOVCA/IGVzM2ZQcmltaXRp
dmVSZXN0YXJ0VGVzdHMuUkVTVEFSVF9JTkRFWF9VTlNJR05FRF9JTlQgOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA7CisKKyAgICAgICAgREVfQVNT
RVJUKHJlc3RhcnRJbmRleCAhPSAwKTsKKworICAgICAgICBERV9BU1NFUlQodGhpcy5nZXROdW1J
bmRpY2VzKCkgPT0gMCk7CisKKyAgICAgICAgLy8gSWYgdGVzdGluZyBhIGNhc2Ugd2l0aCByZXN0
YXJ0IGF0IGJlZ2lubmluZywgYWRkIGl0IHRoZXJlLgorICAgICAgICBpZiAodGhpcy5tX2JlZ2lu
V2l0aFJlc3RhcnQpIHsKKyAgICAgICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsK
KyAgICAgICAgICAgIGlmICh0aGlzLm1fZHVwbGljYXRlUmVzdGFydHMpCisgICAgICAgICAgICAg
ICAgdGhpcy5hZGRJbmRleChyZXN0YXJ0SW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
R2VuZXJhdGUgdmVydGV4IHBvc2l0aW9ucyBhbmQgaW5kaWNlcyBkZXBlbmRpbmcgb24gcHJpbWl0
aXZlIHR5cGUuCisgICAgICAgIC8vIFxub3RlIEF0IHRoaXMgcG9pbnQsIHJlc3RhcnRzIHNoYWxs
IG5vdCBiZSBhZGRlZCB0byB0aGUgc3RhcnQgb3IgdGhlIGVuZCBvZiB0aGUgaW5kZXggdmVjdG9y
LiBUaG9zZSBhcmUgc3BlY2lhbCBjYXNlcywgYW5kIGFyZSBkb25lIGFib3ZlIGFuZCBhZnRlciB0
aGUgZm9sbG93aW5nIGlmLWVsc2UgY2hhaW4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBjdXJJbmRleDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBudW1Sb3dzOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUNv
bHM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZng7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgZnk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgY2VudGVyWTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjZW50ZXJYOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVZlcnRpY2VzOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUFyY1ZlcnRpY2VzOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG51bVN0cmlwczsKKworICAgICAgICBpZiAodGhpcy5tX3ByaW1U
eXBlID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVf
UE9JTlRTKSB7CisgICAgICAgICAgICAvLyBHZW5lcmF0ZSByb3dzIHdpdGggZGlmZmVyZW50IG51
bWJlcnMgb2YgcG9pbnRzLgorCisgICAgICAgICAgICBjdXJJbmRleCA9IDA7CisgICAgICAgICAg
ICBudW1Sb3dzID0gMjA7CisKKyAgICAgICAgICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG51
bVJvd3M7IHJvdysrKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwg
cm93ICsgMTsgY29sKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZnggPSAtMS4wICsgMi4wICog
KGNvbCArIDAuNSkgLyBudW1Sb3dzOworICAgICAgICAgICAgICAgICAgICBmeSA9IC0xLjAgKyAy
LjAgKiAocm93ICsgMC41KSAvIG51bVJvd3M7CisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X3Bvc2l0aW9ucy5wdXNoKGZ4KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9u
cy5wdXNoKGZ5KTsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEluZGV4KGN1ckluZGV4
KyspOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyb3cgPCBudW1S
b3dzIC0gMSkgeyAvLyBBZGQgYSByZXN0YXJ0IGFmdGVyIGFsbCBidXQgbGFzdCByb3cuCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMubV9kdXBsaWNhdGVSZXN0YXJ0cykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tX3ByaW1UeXBlID09IGVzM2ZQ
cmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfTElORV9TVFJJUCB8
fCB0aGlzLm1fcHJpbVR5cGUgPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVU
eXBlLlBSSU1JVElWRV9MSU5FX0xPT1AgfHwgdGhpcy5tX3ByaW1UeXBlID09IGVzM2ZQcmltaXRp
dmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfTElORVMpIHsKKyAgICAgICAg
ICAgIC8vIEdlbmVyYXRlIGEgbnVtUm93cyB4IG51bUNvbHMgYXJyYW5nZW1lbnQgb2YgbGluZSBw
b2x5Z29ucyBvZiBkaWZmZXJlbnQgdmVydGV4IGNvdW50cy4KKworICAgICAgICAgICAgY3VySW5k
ZXggPSAwOworICAgICAgICAgICAgbnVtUm93cyA9IDQ7CisgICAgICAgICAgICBudW1Db2xzID0g
NDsKKworICAgICAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbnVtUm93czsgcm93Kysp
IHsKKyAgICAgICAgICAgICAgICBjZW50ZXJZID0gLTEuMCArIDIuMCAqIChyb3cgKyAwLjUpIC8g
bnVtUm93czsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG51bUNv
bHM7IGNvbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGNlbnRlclggPSAtMS4wICsgMi4wICog
KGNvbCArIDAuNSkgLyBudW1Db2xzOworICAgICAgICAgICAgICAgICAgICBudW1WZXJ0aWNlcyA9
IHJvdyAqIG51bUNvbHMgKyBjb2wgKyAxOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbnVtVmVydGljZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZnggPSBjZW50ZXJYICsgMC45ICogTWF0aC5jb3MoaSAqIDIuMCAqIE1hdGguUEkgLyBudW1WZXJ0
aWNlcykgLyBudW1Db2xzOworICAgICAgICAgICAgICAgICAgICAgICAgZnkgPSBjZW50ZXJZICsg
MC45ICogTWF0aC5zaW4oaSAqIDIuMCAqIE1hdGguUEkgLyBudW1WZXJ0aWNlcykgLyBudW1Sb3dz
OworCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcG9zaXRpb25zLnB1c2goZngpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9ucy5wdXNoKGZ5KTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbmRleChjdXJJbmRleCsrKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChjb2wgPCBudW1Db2xzIC0g
MSB8fCByb3cgPCBudW1Sb3dzIC0gMSkgey8vIEFkZCBhIHJlc3RhcnQgYWZ0ZXIgYWxsIGJ1dCBs
YXN0IHBvbHlnb24uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEluZGV4KHJlc3Rh
cnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tX2R1cGxpY2F0ZVJl
c3RhcnRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFy
dEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fcHJpbVR5cGUgPT0gZXMzZlByaW1p
dGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlLlBSSU1JVElWRV9UUklBTkdMRV9TVFJJUCkg
eworICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBudW1iZXIgb2YgaG9yaXpvbnRhbCB0cmlhbmds
ZSBzdHJpcHMgb2YgZGlmZmVyZW50IGxlbmd0aHMuCisKKyAgICAgICAgICAgIGN1ckluZGV4ID0g
MDsKKyAgICAgICAgICAgIG51bVN0cmlwcyA9IDIwOworCisgICAgICAgICAgICBmb3IgKHZhciBz
dHJpcE5keCA9IDA7IHN0cmlwTmR4IDwgbnVtU3RyaXBzOyBzdHJpcE5keCsrKSB7CisgICAgICAg
ICAgICAgICAgbnVtVmVydGljZXMgPSBzdHJpcE5keCArIDE7CisKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG51bVZlcnRpY2VzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgZnggPSAtMC45ICsgMS44ICogKGkgLyAyICogMikgLyBudW1TdHJpcHM7CisgICAgICAgICAg
ICAgICAgICAgIGZ5ID0gLTAuOSArIDEuOCAqIChzdHJpcE5keCArIChpICUgMiA9PSAwID8gMC4w
IDogMC44KSkgLyBudW1TdHJpcHM7CisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0
aW9ucy5wdXNoKGZ4KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9ucy5wdXNo
KGZ5KTsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEluZGV4KGN1ckluZGV4KyspOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChzdHJpcE5keCA8IG51bVN0
cmlwcyAtIDEpIHsgLy8gQWRkIGEgcmVzdGFydCBhZnRlciBhbGwgYnV0IGxhc3Qgc3RyaXAuCisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMubV9kdXBsaWNhdGVSZXN0YXJ0cykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tX3ByaW1UeXBlID09IGVz
M2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfVFJJQU5HTEVf
RkFOKSB7CisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIG51bVJvd3MgeCBudW1Db2xzIGFycmFu
Z2VtZW50IG9mIHRyaWFuZ2xlIGZhbiBwb2x5Z29ucyBvZiBkaWZmZXJlbnQgdmVydGV4IGNvdW50
cy4KKworICAgICAgICAgICAgY3VySW5kZXggPSAwOworICAgICAgICAgICAgbnVtUm93cyA9IDQ7
CisgICAgICAgICAgICBudW1Db2xzID0gNDsKKworICAgICAgICAgICAgZm9yICh2YXIgcm93ID0g
MDsgcm93IDwgbnVtUm93czsgcm93KyspIHsKKyAgICAgICAgICAgICAgICBjZW50ZXJZID0gLTEu
MCArIDIuMCAqIChyb3cgKyAwLjUpIC8gbnVtUm93czsKKworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGNvbCA9IDA7IGNvbCA8IG51bUNvbHM7IGNvbCsrKSB7CisgICAgICAgICAgICAgICAgICAg
IGNlbnRlclggPSAtMS4wICsgMi4wICogKGNvbCArIDAuNSkgLyBudW1Db2xzOworICAgICAgICAg
ICAgICAgICAgICBudW1BcmNWZXJ0aWNlcyA9IHJvdyAqIG51bUNvbHMgKyBjb2w7CisKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9ucy5wdXNoKGNlbnRlclgpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fcG9zaXRpb25zLnB1c2goY2VudGVyWSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5hZGRJbmRleChjdXJJbmRleCsrKTsKKworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUFyY1ZlcnRpY2VzOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZ4ID0gY2VudGVyWCArIDAuOSAqIE1hdGguY29zKGkgKiAyLjAgKiBNYXRo
LlBJIC8gbnVtQXJjVmVydGljZXMpIC8gbnVtQ29sczsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZ5ID0gY2VudGVyWSArIDAuOSAqIE1hdGguc2luKGkgKiAyLjAgKiBNYXRoLlBJIC8gbnVtQXJj
VmVydGljZXMpIC8gbnVtUm93czsKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3Bv
c2l0aW9ucy5wdXNoKGZ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9wb3NpdGlv
bnMucHVzaChmeSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW5kZXgoY3Vy
SW5kZXgrKyk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29sIDwgbnVtQ29scyAtIDEgfHwgcm93IDwgbnVtUm93cyAtIDEpIHsgLy8gQWRkIGEgcmVz
dGFydCBhZnRlciBhbGwgYnV0IGxhc3QgcG9seWdvbi4KKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuYWRkSW5kZXgocmVzdGFydEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLm1fZHVwbGljYXRlUmVzdGFydHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5hZGRJbmRleChyZXN0YXJ0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9w
cmltVHlwZSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVR5cGUuUFJJTUlU
SVZFX1RSSUFOR0xFUykgeworICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBudW1iZXIgb2Ygcm93
cyB3aXRoIChwb3RlbnRpYWxseSBpbmNvbXBsZXRlKSB0cmlhbmdsZXMuCisKKyAgICAgICAgICAg
IGN1ckluZGV4ID0gMDsKKyAgICAgICAgICAgIG51bVJvd3MgPSAzICogNzsKKworICAgICAgICAg
ICAgZm9yICh2YXIgcm93TmR4ID0gMDsgcm93TmR4IDwgbnVtUm93czsgcm93TmR4KyspIHsKKyAg
ICAgICAgICAgICAgICBudW1WZXJ0aWNlcyA9IHJvd05keCArIDE7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVZlcnRpY2VzOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgZnggPSAtMC45ICsgMS44ICogKChpIC8gMykgKyAoaSAlIDMgPT0gMiA/IDAuOCA6IDAu
MCkpICogMyAvIG51bVJvd3M7CisgICAgICAgICAgICAgICAgICAgIGZ5ID0gLTAuOSArIDEuOCAq
IChyb3dOZHggKyAoaSAlIDMgPT0gMCA/IDAuMCA6IDAuOCkpIC8gbnVtUm93czsKKworICAgICAg
ICAgICAgICAgICAgICB0aGlzLm1fcG9zaXRpb25zLnB1c2goZngpOworICAgICAgICAgICAgICAg
ICAgICB0aGlzLm1fcG9zaXRpb25zLnB1c2goZnkpOworCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuYWRkSW5kZXgoY3VySW5kZXgrKyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKHJvd05keCA8IG51bVJvd3MgLSAxKSB7IC8vIEFkZCBhIHJlc3RhcnQgYWZ0ZXIg
YWxsIGJ1dCBsYXN0IHJvdy4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbmRleChyZXN0
YXJ0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tX2R1cGxpY2F0ZVJlc3Rh
cnRzKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbmRleChyZXN0YXJ0SW5kZXgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworCisgICAgICAgIC8vIElmIHRlc3RpbmcgYSBjYXNl
IHdpdGggcmVzdGFydCBhdCBlbmQsIGFkZCBpdCB0aGVyZS4KKyAgICAgICAgaWYgKHRoaXMubV9l
bmRXaXRoUmVzdGFydCkgeworICAgICAgICAgICAgdGhpcy5hZGRJbmRleChyZXN0YXJ0SW5kZXgp
OworICAgICAgICAgICAgaWYgKHRoaXMubV9kdXBsaWNhdGVSZXN0YXJ0cykKKyAgICAgICAgICAg
ICAgICB0aGlzLmFkZEluZGV4KHJlc3RhcnRJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBTcGVjaWFsIGNhc2UgYXNzZXJ0aW9ucy4KKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG51bUluZGljZXMgPSB0aGlzLmdldE51bUluZGljZXMoKTsKKworICAgICAgICBERV9B
U1NFUlQobnVtSW5kaWNlcyA+IDApOworICAgICAgICBERV9BU1NFUlQodGhpcy5tX2JlZ2luV2l0
aFJlc3RhcnQgfHwgdGhpcy5nZXRJbmRleCgwKSAhPSByZXN0YXJ0SW5kZXgpOyAvLyBXZSBkb24n
dCB3YW50IHJlc3RhcnRzIGF0IGJlZ2lubmluZyB1bmxlc3MgdGhlIGNhc2UgaXMgYSBzcGVjaWFs
IGNhc2UuCisgICAgICAgIERFX0FTU0VSVCh0aGlzLm1fZW5kV2l0aFJlc3RhcnQgfHwgdGhpcy5n
ZXRJbmRleChudW1JbmRpY2VzIC0gMSkgIT0gcmVzdGFydEluZGV4KTsgLy8gV2UgZG9uJ3Qgd2Fu
dCByZXN0YXJ0cyBhdCBlbmQgdW5sZXNzIHRoZSBjYXNlIGlzIGEgc3BlY2lhbCBjYXNlLgorCisg
ICAgICAgIGlmICghdGhpcy5tX2R1cGxpY2F0ZVJlc3RhcnRzKQorICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBudW1JbmRpY2VzOyBpKyspCisgICAgICAgICAgICAgICAgREVfQVNTRVJU
KHRoaXMuZ2V0SW5kZXgoaSkgIT0gcmVzdGFydEluZGV4IHx8IHRoaXMuZ2V0SW5kZXgoaSAtIDEp
ICE9IHJlc3RhcnRJbmRleCk7IC8vIFdlIGRvbid0IHdhbnQgZHVwbGljYXRlIHJlc3RhcnRzIHVu
bGVzcyB0aGUgY2FzZSBpcyBhIHNwZWNpYWwgY2FzZS4KKworICAgIH07CisKKyAgICBlczNmUHJp
bWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVJlc3RhcnRDYXNlLnByb3RvdHlwZS5pdGVyYXRl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGgg
PSBNYXRoLm1pbihnbC5kcmF3aW5nQnVmZmVyV2lkdGgsIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVz
dHMuTUFYX1JFTkRFUl9XSURUSCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
aGVpZ2h0ID0gTWF0aC5taW4oZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCwgZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cy5NQVhfUkVOREVSX0hFSUdIVCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB4T2Zmc2V0TWF4ID0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIC0gd2lkdGg7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeU9mZnNldE1heCA9IGdsLmRyYXdpbmdC
dWZmZXJIZWlnaHQgLSBoZWlnaHQ7CisKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRvbS5SYW5k
b219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFz
aCh0aGlzLm5hbWUpKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhPZmZz
ZXQgPSBybmQuZ2V0SW50KDAsIHhPZmZzZXRNYXgpOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHlPZmZzZXQgPSBybmQuZ2V0SW50KDAsIHlPZmZzZXRNYXgpOworICAgICAgICAv
KiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlZmVyZW5jZUltZyA9IG5ldyB0
Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVzdWx0SW1nID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFj
ZSh3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBnbC52aWV3cG9ydCh4T2Zmc2V0LCB5T2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAx
LjApOworCisgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgp
OworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIC8vIFNldHVwIHBv
c2l0aW9uIGF0dHJpYnV0ZS4KKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxv
YyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdhX3Bvc2l0aW9uJyk7CisgICAgICAg
IGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvYyk7CisKKyAgICAgICAgdmFyIGxvY0dsQnVm
ZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIHZhciBidWZmZXJMb2MgPSBuZXcgRmxv
YXQzMkFycmF5KHRoaXMubV9wb3NpdGlvbnMpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgbG9jR2xCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgYnVmZmVyTG9jLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLnZlcnRleEF0
dHJpYlBvaW50ZXIobG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIC8v
IFJlbmRlciByZXN1bHQuCisgICAgICAgIHRoaXMucmVuZGVyV2l0aFJlc3RhcnQoKTsKKyAgICAg
ICAgdmFyIHJlc0ltZyA9IHJlc3VsdEltZy5nZXRBY2Nlc3MoKTsKKyAgICAgICAgdmFyIHJlc0lt
Z1RyYW5zZmVyRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQocmVzSW1n
LmdldEZvcm1hdCgpKTsKKyAgICAgICAgZ2wucmVhZFBpeGVscyh4T2Zmc2V0LCB5T2Zmc2V0LCBy
ZXNJbWcubV93aWR0aCwgcmVzSW1nLm1faGVpZ2h0LCByZXNJbWdUcmFuc2ZlckZvcm1hdC5mb3Jt
YXQsIHJlc0ltZ1RyYW5zZmVyRm9ybWF0LmRhdGFUeXBlLCByZXN1bHRJbWcubV9waXhlbHMpOwor
CisgICAgICAgIC8vIFJlbmRlciByZWZlcmVuY2UgKHNhbWUgc2NlbmUgYXMgdGhlIHJlYWwgZGVh
bCwgYnV0IGVtdWxhdGUgcHJpbWl0aXZlIHJlc3RhcnQgd2l0aG91dCBhY3R1YWxseSB1c2luZyBp
dCkuCisgICAgICAgIHRoaXMucmVuZGVyV2l0aG91dFJlc3RhcnQoKTsKKworICAgICAgICB2YXIg
cmVmSW1nID0gcmVmZXJlbmNlSW1nLmdldEFjY2VzcygpOworICAgICAgICB2YXIgcmVmSW1nVHJh
bnNmZXJGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChyZWZJbWcuZ2V0
Rm9ybWF0KCkpOworCisgICAgICAgIGdsLnJlYWRQaXhlbHMoeE9mZnNldCwgeU9mZnNldCwgcmVm
SW1nLm1fd2lkdGgsIHJlZkltZy5tX2hlaWdodCwgcmVmSW1nVHJhbnNmZXJGb3JtYXQuZm9ybWF0
LCByZWZJbWdUcmFuc2ZlckZvcm1hdC5kYXRhVHlwZSwgcmVmZXJlbmNlSW1nLm1fcGl4ZWxzKTsK
KworICAgICAgICAvLyBDb21wYXJlLgorICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciB0ZXN0T2sgPSB0Y3VJbWFnZUNvbXBhcmUucGl4ZWxUaHJlc2hvbGRDb21wYXJlKCdDb21wYXJp
c29uUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVzdWx0JywgcmVmZXJlbmNlSW1nLCByZXN1
bHRJbWcsIFswLCAwLCAwLCAwXSk7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0ZXN0T2ss
ICcnLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisKKyAgICAg
ICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAg
ZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzOworICAgICAgICBmb3Ig
KHZhciBpc1Jlc3RhcnRCZWdpbkNhc2VJID0gMDsgaXNSZXN0YXJ0QmVnaW5DYXNlSSA8PSAxOyBp
c1Jlc3RhcnRCZWdpbkNhc2VJKyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGlzUmVzdGFydEVu
ZENhc2VJID0gMDsgaXNSZXN0YXJ0RW5kQ2FzZUkgPD0gMTsgaXNSZXN0YXJ0RW5kQ2FzZUkrKykg
eworICAgICAgICAgICAgICAgIGZvciAodmFyIGlzRHVwbGljYXRlUmVzdGFydENhc2VJID0gMDsg
aXNEdXBsaWNhdGVSZXN0YXJ0Q2FzZUkgPD0gMTsgaXNEdXBsaWNhdGVSZXN0YXJ0Q2FzZUkrKykg
eworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1Jlc3Rh
cnRCZWdpbkNhc2UgPSBpc1Jlc3RhcnRCZWdpbkNhc2VJICE9IDA7CisgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzUmVzdGFydEVuZENhc2UgPSBpc1Jlc3Rh
cnRFbmRDYXNlSSAhPSAwOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBpc0R1cGxpY2F0ZVJlc3RhcnRDYXNlID0gaXNEdXBsaWNhdGVSZXN0YXJ0Q2FzZUkg
IT0gMDsKKworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNw
ZWNpYWxDYXNlR3JvdXBOYW1lID0gJyc7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVz
dGFydEJlZ2luQ2FzZSkgc3BlY2lhbENhc2VHcm91cE5hbWUgPSAnYmVnaW5fcmVzdGFydCc7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RhcnRFbmRDYXNlKSBzcGVjaWFsQ2FzZUdyb3Vw
TmFtZSArPSAoZGVTdHJpbmcuZGVJc1N0cmluZ0VtcHR5KHNwZWNpYWxDYXNlR3JvdXBOYW1lKSA/
ICcnIDogJ18nKSArICdlbmRfcmVzdGFydCc7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0R1
cGxpY2F0ZVJlc3RhcnRDYXNlKSBzcGVjaWFsQ2FzZUdyb3VwTmFtZSArPSAoZGVTdHJpbmcuZGVJ
c1N0cmluZ0VtcHR5KHNwZWNpYWxDYXNlR3JvdXBOYW1lKSA/ICcnIDogJ18nKSArICdkdXBsaWNh
dGVfcmVzdGFydHMnOworCisgICAgICAgICAgICAgICAgICAgIGlmIChkZVN0cmluZy5kZUlzU3Ry
aW5nRW1wdHkoc3BlY2lhbENhc2VHcm91cE5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbENhc2VHcm91cE5hbWUgPSAnYmFzaWMnOworCisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBzcGVjaWFsQ2FzZUdyb3VwID0g
dGN1VGVzdENhc2UubmV3VGVzdChzcGVjaWFsQ2FzZUdyb3VwTmFtZSwgJycpOworICAgICAgICAg
ICAgICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoc3BlY2lhbENhc2VHcm91cCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgcHJpbVR5cGUgaW4gZXMzZlByaW1pdGl2ZVJlc3RhcnRU
ZXN0cy5QcmltaXRpdmVUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e3N0cmluZ30gKi8gdmFyIHByaW1UeXBlTmFtZSA9IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMu
UHJpbWl0aXZlVHlwZVtwcmltVHlwZV0gPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5Qcmlt
aXRpdmVUeXBlLlBSSU1JVElWRV9QT0lOVFMgPyAncG9pbnRzJyA6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZQcmlt
aXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZVtwcmltVHlwZV0gPT0gZXMzZlByaW1pdGl2
ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlLlBSSU1JVElWRV9MSU5FX1NUUklQID8gJ2xpbmVf
c3RyaXAnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBl
W3ByaW1UeXBlXSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVR5cGUuUFJJ
TUlUSVZFX0xJTkVfTE9PUCA/ICdsaW5lX2xvb3AnIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlW3ByaW1UeXBlXSA9PSBlczNmUHJpbWl0aXZlUmVzdGFy
dFRlc3RzLlByaW1pdGl2ZVR5cGUuUFJJTUlUSVZFX0xJTkVTID8gJ2xpbmVzJyA6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZVtwcmltVHlwZV0gPT0gZXMz
ZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlLlBSSU1JVElWRV9UUklBTkdMRV9T
VFJJUCA/ICd0cmlhbmdsZV9zdHJpcCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmUHJpbWl0aXZlUmVzdGFydFRl
c3RzLlByaW1pdGl2ZVR5cGVbcHJpbVR5cGVdID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMu
UHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfVFJJQU5HTEVfRkFOID8gJ3RyaWFuZ2xlX2ZhbicgOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLlByaW1pdGl2ZVR5cGVbcHJpbVR5cGVd
ID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuUHJpbWl0aXZlVHlwZS5QUklNSVRJVkVfVFJJ
QU5HTEVTID8gJ3RyaWFuZ2xlcycgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJzsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgREVfQVNTRVJUKHByaW1UeXBlTmFtZSAhPSBudWxsKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIHByaW1UeXBl
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHByaW1UeXBlTmFtZSwgJycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3BlY2lhbENhc2VHcm91cC5hZGRDaGlsZChwcmltVHlwZUdyb3VwKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXhUeXBlIGluIGVzM2ZQcmlt
aXRpdmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBpbmRleFR5cGVOYW1lID0gZXMzZlByaW1pdGl2
ZVJlc3RhcnRUZXN0cy5JbmRleFR5cGVbaW5kZXhUeXBlXSA9PSBlczNmUHJpbWl0aXZlUmVzdGFy
dFRlc3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJR05FRF9CWVRFID8gJ3Vuc2lnbmVkX2J5dGUnIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkluZGV4VHlwZVtpbmRleFR5
cGVdID09IGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlLklOREVYX1VOU0lHTkVE
X1NIT1JUID8gJ3Vuc2lnbmVkX3Nob3J0JyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cy5JbmRleFR5cGVbaW5kZXhUeXBlXSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRl
c3RzLkluZGV4VHlwZS5JTkRFWF9VTlNJR05FRF9JTlQgPyAndW5zaWduZWRfaW50JyA6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyc7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoaW5k
ZXhUeXBlTmFtZSAhPSBudWxsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBpbmRleFR5cGVHcm91cCA9IHRjdVRl
c3RDYXNlLm5ld1Rlc3QoaW5kZXhUeXBlTmFtZSwgJycpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW1UeXBlR3JvdXAuYWRkQ2hpbGQoaW5kZXhUeXBlR3JvdXApOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2Z1bmN0aW9uIGluIGVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMuRHJhd0Z1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7P3N0cmluZ30gKi8gdmFyIGZ1bmN0aW9uTmFtZSA9IGVzM2ZQcmltaXRp
dmVSZXN0YXJ0VGVzdHMuRHJhd0Z1bmN0aW9uW19mdW5jdGlvbl0gPT0gZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cy5EcmF3RnVuY3Rpb24uRlVOQ1RJT05fRFJBV19FTEVNRU5UUyA/ICdkcmF3X2Vs
ZW1lbnRzJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5EcmF3
RnVuY3Rpb25bX2Z1bmN0aW9uXSA9PSBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdGdW5j
dGlvbi5GVU5DVElPTl9EUkFXX0VMRU1FTlRTX0lOU1RBTkNFRCA/ICdkcmF3X2VsZW1lbnRzX2lu
c3RhbmNlZCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuRHJh
d0Z1bmN0aW9uW19mdW5jdGlvbl0gPT0gZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5EcmF3RnVu
Y3Rpb24uRlVOQ1RJT05fRFJBV19SQU5HRV9FTEVNRU5UUyA/ICdkcmF3X3JhbmdlX2VsZW1lbnRz
JyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBERV9BU1NFUlQoZnVuY3Rpb25OYW1lICE9IG51bGwpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4VHlwZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmUHJpbWl0aXZl
UmVzdGFydFRlc3RzLlByaW1pdGl2ZVJlc3RhcnRDYXNlKGZ1bmN0aW9uTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlByaW1pdGl2
ZVJlc3RhcnRUZXN0cy5QcmltaXRpdmVUeXBlW3ByaW1UeXBlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuSW5kZXhUeXBlW2luZGV4VHlwZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLkRyYXdGdW5j
dGlvbltfZnVuY3Rpb25dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXN0YXJ0QmVnaW5D
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXN0YXJ0RW5kQ2FzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzRHVwbGljYXRlUmVzdGFydENhc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250
ZXh0LCByYW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8vU2V0IHVwIFRl
c3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgIHZhciB0ZXN0TmFtZSA9ICdwcmltaXRpdmVfcmVz
dGFydCc7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnUHJpbWl0aXZlIFJlc3RhcnQg
VGVzdHMnOworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAg
ICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9vdCh0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwpKTsKKworICAg
ICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgor
ICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlwdGlv
bih0ZXN0RGVzY3JpcHRpb24pOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0NyZWF0
ZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICBlczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLmluaXQo
KTsKKyAgICAgICAgICAgIGlmIChyYW5nZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRSYW5n
ZShyYW5nZSk7CisgICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VU
ZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2Uu
cnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMz
ZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U3NDY0ODU2OTU5ODA5ODll
NzEwODEyYWRjNTExNmExNmM1ZDA5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
UmFzdGVyaXplckRpc2NhcmRUZXN0cy5qcwpAQCAtMCwwICsxLDQ4NSBAQAorLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyAzLjAgTW9k
dWxlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAor
ICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KyAqCisgKi8vKiEKKyAqIFxmaWxlCisgKiBcYnJpZWYgUmFzdGVyaXplciBkaXNjYXJkIHRlc3Rz
LgorICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmUmFzdGVyaXplckRpc2NhcmRUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3Vy
ZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2
YXIgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzOwordmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVTdHJpbmc7Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RD
YXNlOwordmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2
YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsK
K3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwordmFyIGdsdURy
YXdVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbDsKK3ZhciB0Y3VMb2dJbWFnZSA9
IGZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2U7CisKKy8qKiBAY29uc3QgKi8gdmFyIE5VTV9D
QVNFX0lURVJBVElPTlMgPSAxOworLyoqIEBjb25zdCAqLyB2YXIgRkFJTF9DT0xPUl9SRUQgPSBb
MSwgMCwgMC4wLCAxXTsKKy8qKiBAY29uc3QgKi8gdmFyIFBBU1NfQ09MT1JfQkxVRSA9IFswLCAw
LCAwLjUsIDFdOworLyoqIEBjb25zdCAqLyB2YXIgQkxBQ0tfQ09MT1IgPSBbMCwgMCwgMC4wLCAx
XTsKKy8qKiBAY29uc3QgKi8gdmFyIEZBSUxfREVQVEggPSAwOworLyoqIEBjb25zdCAqLyB2YXIg
RkFJTF9TVEVOQ0lMID0gMTsKKy8qKiBAY29uc3QgKi8gdmFyIFVOSVRfU1FVQVJFID0gWworICAg
ICAxLCAxLCAwLjA1LCAxLAorICAgICAxLCAtMSwgMC4wNSwgMSwKKyAgICAtMSwgMSwgMC4wNSwg
MSwKKyAgICAtMSwgLTEsIDAuMDUsIDEKK107CisKKy8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5n
Q29udGV4dH0gKi8gdmFyIGdsOworCisvKioKKyAqIEBlbnVtCisgKi8KK2VzM2ZSYXN0ZXJpemVy
RGlzY2FyZFRlc3RzLkNhc2VUeXBlID0geworICAgIFdSSVRFX0RFUFRIOiAwLAorICAgIFdSSVRF
X1NURU5DSUw6IDEsCisgICAgQ0xFQVJfQ09MT1I6IDIsCisgICAgQ0xFQVJfREVQVEg6IDMsCisg
ICAgQ0xFQVJfU1RFTkNJTDogNAorfTsKKworLyoqCisgKiBAZW51bSB7e3VzZUZCTzogYm9vbGVh
biwgdXNlU2Npc3NvcjogYm9vbGVhbn19CisgKi8KK2VzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LkNhc2VPcHRpb25zID0geworICAgIEZCTzoge3VzZUZCTzogdHJ1ZSwgdXNlU2Npc3NvcjogZmFs
c2V9LAorICAgIFNDSVNTT1I6IHt1c2VGQk86IGZhbHNlLCB1c2VTY2lzc29yOiB0cnVlfQorfTsK
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVz
dH0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRp
b24KKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1QcmltaXRpdmVzCisgKiBAcGFyYW0ge2VzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlfSBjYXNlVHlwZQorICogQHBhcmFtIHs/ZXMzZlJh
c3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnN9IGNhc2VPcHRpb25zCisgKiBAcGFyYW0g
e2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGU9fSBkcmF3TW9kZQorICovCitlczNmUmFzdGVyaXpl
ckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbiwgbnVtUHJpbWl0aXZlcywgY2FzZVR5cGUsIGNhc2VPcHRpb25zLCBkcmF3TW9kZSkg
eworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24p
OworICAgIHRoaXMubV9udW1QcmltaXRpdmVzID0gbnVtUHJpbWl0aXZlczsKKyAgICB0aGlzLm1f
Y2FzZVR5cGUgPSBjYXNlVHlwZTsKKyAgICB0aGlzLm1fY2FzZU9wdGlvbnMgPSBjYXNlT3B0aW9u
cyB8fCB7dXNlRkJPOiBmYWxzZSwgdXNlU2Npc3NvcjogZmFsc2V9OworICAgIHRoaXMubV9kcmF3
TW9kZSA9IGRyYXdNb2RlIHx8IGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTOwor
ICAgIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICB0aGlzLm1fZmJvID0gbnVsbDsKKyAgICB0
aGlzLm1fY29sb3JCdWYgPSBudWxsOworICAgIHRoaXMubV9kZXB0aFN0ZW5jaWxCdWYgPSBudWxs
OworICAgIHRoaXMubV9pdGVyTmR4ID0gMDsKKyAgICB0aGlzLm1fcm5kID0gbmV3IGRlUmFuZG9t
LlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2gobmFtZSkpOworfTsKKworZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKK2VzM2ZSYXN0ZXJpemVyRGlz
Y2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBl
czNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2U7CisKKy8qKgor
ICogQHBhcmFtIHtudW1iZXJ9IG51bVByaW1pdGl2ZXMKKyAqIEBwYXJhbSB7ZGVSYW5kb20uUmFu
ZG9tfSBybmQKKyAqIEBwYXJhbSB7Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZX0gZHJhd01vZGUK
KyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK2VzM2ZSYXN0ZXJpemVyRGlzY2FyZFRl
c3RzLmdlbmVyYXRlVmVydGljZXMgPSBmdW5jdGlvbihudW1QcmltaXRpdmVzLCBybmQsIGRyYXdN
b2RlKSB7CisgICAgdmFyIGRzdCA9IFtdOworICAgIHZhciBudW1WZXJ0aWNlczsKKworICAgIHN3
aXRjaCAoZHJhd01vZGUpIHsKKyAgICAgICAgY2FzZSBnbC5QT0lOVFM6IG51bVZlcnRpY2VzID0g
bnVtUHJpbWl0aXZlczsgYnJlYWs7CisgICAgICAgIGNhc2UgZ2wuTElORVM6IG51bVZlcnRpY2Vz
ID0gMiAqIG51bVByaW1pdGl2ZXM7IGJyZWFrOworICAgICAgICBjYXNlIGdsLkxJTkVfU1RSSVA6
IG51bVZlcnRpY2VzID0gbnVtUHJpbWl0aXZlcyArIDE7IGJyZWFrOworICAgICAgICBjYXNlIGds
LkxJTkVfTE9PUDogbnVtVmVydGljZXMgPSBudW1QcmltaXRpdmVzICsgMjsgYnJlYWs7CisgICAg
ICAgIGNhc2UgZ2wuVFJJQU5HTEVTOiBudW1WZXJ0aWNlcyA9IDMgKiBudW1QcmltaXRpdmVzOyBi
cmVhazsKKyAgICAgICAgY2FzZSBnbC5UUklBTkdMRV9TVFJJUDogbnVtVmVydGljZXMgPSBudW1Q
cmltaXRpdmVzICsgMjsgYnJlYWs7CisgICAgICAgIGNhc2UgZ2wuVFJJQU5HTEVfRkFOOiBudW1W
ZXJ0aWNlcyA9IG51bVByaW1pdGl2ZXMgKyAyOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkcmF3TW9kZTogJyArIGRyYXdNb2Rl
KTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVZlcnRpY2VzOyBpKyspIHsK
KyAgICAgICAgZHN0W2kgKiA0XSA9IHJuZC5nZXRGbG9hdCgtMS4wLCAxLjApOyAvLyB4CisgICAg
ICAgIGRzdFtpICogNCArIDFdID0gcm5kLmdldEZsb2F0KC0xLjAsIDEuMCk7IC8vIHkKKyAgICAg
ICAgZHN0W2kgKiA0ICsgMl0gPSBybmQuZ2V0RmxvYXQoMC4xLCAwLjkpOyAvLyB6CisgICAgICAg
IGRzdFtpICogNCArIDNdID0gMS4wOyAvLyB3CisgICAgfQorCisgICAgcmV0dXJuIGRzdDsKK307
CisKK2VzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZS5wcm90
b3R5cGUuc2V0dXBGcmFtZWJ1ZmZlck9iamVjdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB3aWR0
aCA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aDsKKyAgICB2YXIgaGVpZ2h0ID0gZ2wuZHJhd2luZ0J1
ZmZlckhlaWdodDsKKworICAgIC8vIENyZWF0ZSBmcmFtZWJ1ZmZlciBvYmplY3QKKworICAgIHRo
aXMubV9mYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIHRoaXMubV9jb2xvckJ1ZiA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICB0aGlzLm1fZGVwdGhTdGVuY2lsQnVmID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgICAvLyBDcmVhdGUgY29sb3IgdGV4dHVyZQorCisgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGhpcy5tX2NvbG9yQnVmKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsK
KyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkE4LCB3aWR0aCwgaGVp
Z2h0LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKworICAgIC8vIENyZWF0
ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzCisKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgdGhpcy5tX2RlcHRoU3RlbmNpbEJ1Zik7CisgICAgZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBo
ZWlnaHQpOworCisgICAgLy8gQXR0YWNoIHRleHR1cmUgYW5kIGJ1ZmZlcnMgdG8gRkJPCisKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRoaXMubV9mYm8pOworICAgIGds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV8yRCwgdGhpcy5tX2NvbG9yQnVmLCAwKTsKKyAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVO
REVSQlVGRkVSLCB0aGlzLm1fZGVwdGhTdGVuY2lsQnVmKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5SRU5E
RVJCVUZGRVIsIHRoaXMubV9kZXB0aFN0ZW5jaWxCdWYpOworCisgICAgdmFyIGZib1N0YXR1cyA9
IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworCisgICAgaWYgKGZi
b1N0YXR1cyA9PSBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdGcmFtZWJ1ZmZlciB1bnN1cHBvcnRlZCcpOworICAgIGVsc2UgaWYgKGZib1N0YXR1
cyAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdG
YWlsZWQgdG8gY3JlYXRlIGZyYW1lYnVmZmVyIG9iamVjdDogJyArIGRlU3RyaW5nLmVudW1Ub1N0
cmluZyhnbCwgZmJvU3RhdHVzKSk7Cit9OworCitlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5S
YXN0ZXJpemVyRGlzY2FyZENhc2UucHJvdG90eXBlLmRlbGV0ZUZyYW1lYnVmZmVyT2JqZWN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLm1fY29sb3JCdWYpOworICAg
IGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLm1fZGVwdGhTdGVuY2lsQnVmKTsKKyAgICBnbC5k
ZWxldGVGcmFtZWJ1ZmZlcih0aGlzLm1fZmJvKTsKK307CisKK2VzM2ZSYXN0ZXJpemVyRGlzY2Fy
ZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciB2ZXJ0U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICAgICAnI3ZlcnNpb24g
MzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gbWVk
aXVtcCB2ZWM0IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICAgICAnXG4nICsKKyAgICAg
ICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgJ3tcbicg
KworICAgICAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAg
ICAgICAgICAgICAgJ31cbic7CisKKyAgICB2YXIgZnJhZ1NoYWRlclNvdXJjZSA9CisgICAgICAg
ICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2xheW91dChs
b2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4nICsKKyAgICAg
ICAgICAgICAgICAndW5pZm9ybSBtZWRpdW1wIHZlYzQgdV9jb2xvcjtcbicgKworICAgICAgICAg
ICAgICAgICdcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAg
ICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAgJyBtZWRpdW1wIGZsb2F0IGRl
cHRoX2dyYWRpZW50ID0gZ2xfRnJhZ0Nvb3JkLno7XG4nICsKKyAgICAgICAgICAgICAgICAnIG1l
ZGl1bXAgZmxvYXQgYmlhcyA9IDAuMTtcbicgKworICAgICAgICAgICAgICAgICcgZEVRUF9GcmFn
Q29sb3IgPSB2ZWM0KHVfY29sb3IueHl6ICogKGRlcHRoX2dyYWRpZW50ICsgYmlhcyksIDEuMCk7
XG4nICsKKyAgICAgICAgICAgICAgICAnfVxuJzsKKworICAgIHRoaXMubV9wcm9ncmFtID0gbmV3
IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtl
VnR4RnJhZ1NvdXJjZXModmVydFNoYWRlclNvdXJjZSwgZnJhZ1NoYWRlclNvdXJjZSkpOworCisg
ICAgaWYgKCF0aGlzLm1fcHJvZ3JhbS5pc09rKCkpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUodGhpcy5tX3Byb2dyYW0pOworICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVk
IHRvIGNvbXBpbGUgc2hhZGVyIHByb2dyYW0nLCB0cnVlKTsKKyAgICB9Cit9OworCitlczNmUmFz
dGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UucHJvdG90eXBlLmRlaW5p
dCA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZGVsZXRlRnJhbWVidWZmZXJPYmplY3QoKTsKKyAg
ICB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7Cit9OworCitlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0
cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgcHJvZ3JhbSA9IHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKTsKKyAgICB2YXIg
Y29sb3JVbmlmID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X2NvbG9yJyk7Cisg
ICAgdmFyIGZhaWxDb2xvckZvdW5kID0gZmFsc2U7CisgICAgdmFyIHBhc3NDb2xvckZvdW5kID0g
ZmFsc2U7CisgICAgdmFyIHZlcnRpY2VzOworCisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Nh
c2UgaXRlcmF0aW9uICcgKyAodGhpcy5tX2l0ZXJOZHggKyAxKSArICcgLyAnICsgTlVNX0NBU0Vf
SVRFUkFUSU9OUyk7CisKKyAgICAvLyBDcmVhdGUgYW5kIGJpbmQgRkJPIGlmIG5lZWRlZAorCisg
ICAgaWYgKHRoaXMubV9jYXNlT3B0aW9ucy51c2VGQk8pIHsKKyAgICAgICAgdGhpcy5zZXR1cEZy
YW1lYnVmZmVyT2JqZWN0KCk7CisgICAgfQorCisgICAgaWYgKHRoaXMubV9jYXNlT3B0aW9ucy51
c2VTY2lzc29yKSB7CisgICAgICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgICAg
ICBnbC5zY2lzc29yKDAsIDAsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgZ2wuZHJhd2luZ0J1ZmZl
ckhlaWdodCk7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdTY2lzc29yIHRlc3QgZW5h
YmxlZDogZ2xTY2lzc29yKDAsIDAsICcgKyBnbC5kcmF3aW5nQnVmZmVyV2lkdGggKyAnLCAnICsg
Z2wuZHJhd2luZ0J1ZmZlckhlaWdodCArICcpJyk7CisgICAgfQorCisgICAgZ2wudXNlUHJvZ3Jh
bSh0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworCisgICAgZ2wuZW5hYmxlKGdsLkRFUFRI
X1RFU1QpOworICAgIGdsLmRlcHRoUmFuZ2UoMCwgMSk7CisgICAgZ2wuZGVwdGhGdW5jKGdsLkxF
UVVBTCk7CisKKyAgICBnbC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKKyAgICBnbC5zdGVuY2ls
RnVuYyhnbC5OT1RFUVVBTCwgMSwgMHhGRik7CisgICAgZ2wuc3RlbmNpbE9wKGdsLlJFUExBQ0Us
IGdsLktFRVAsIGdsLktFRVApOworCisgICAgZ2wuY2xlYXJDb2xvcihQQVNTX0NPTE9SX0JMVUVb
MF0sIFBBU1NfQ09MT1JfQkxVRVsxXSwgUEFTU19DT0xPUl9CTFVFWzJdLCBQQVNTX0NPTE9SX0JM
VUVbM10pOworICAgIGdsLmNsZWFyRGVwdGgoMSk7CisgICAgZ2wuY2xlYXJTdGVuY2lsKDApOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwg
Z2wuU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIEdlbmVyYXRlIHZlcnRpY2VzCisgICAg
dmVydGljZXMgPSBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5nZW5lcmF0ZVZlcnRpY2VzKHRo
aXMubV9udW1QcmltaXRpdmVzLCB0aGlzLm1fcm5kLCB0aGlzLm1fZHJhd01vZGUpOworICAgIHZh
ciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYV9wb3NpdGlvbicpOwor
ICAgIHZhciB2ZXJ0ZXhBcnJheXMgPSBbXTsKKyAgICB2ZXJ0ZXhBcnJheXMucHVzaChuZXcgZ2x1
RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nKGdsLkZMT0FULCBwb3NMb2MsIDQsIHZlcnRpY2Vz
Lmxlbmd0aCAvIDQsIHZlcnRpY2VzKSk7CisgICAgLy8gQ2xlYXIgY29sb3IgdG8gYmxhY2sgZm9y
IGRlcHRoIGFuZCBzdGVuY2lsIGNsZWFyIGNhc2VzCisKKyAgICBpZiAodGhpcy5tX2Nhc2VUeXBl
ID09IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLkNMRUFSX0RFUFRIIHx8IHRo
aXMubV9jYXNlVHlwZSA9PSBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5DTEVB
Ul9TVEVOQ0lMKSB7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoQkxBQ0tfQ09MT1JbMF0sIEJMQUNL
X0NPTE9SWzFdLCBCTEFDS19DT0xPUlsyXSwgQkxBQ0tfQ09MT1JbM10pOworICAgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9CisKKyAgICAvLyBTZXQgZmFpbCB2YWx1
ZXMgZm9yIGNvbG9yLCBkZXB0aCBhbmQgc3RlbmNpbAorCisgICAgZ2wudW5pZm9ybTRmdihjb2xv
clVuaWYsIEZBSUxfQ09MT1JfUkVEKTsKKyAgICBnbC5jbGVhckNvbG9yKEZBSUxfQ09MT1JfUkVE
WzBdLCBGQUlMX0NPTE9SX1JFRFsxXSwgRkFJTF9DT0xPUl9SRURbMl0sIEZBSUxfQ09MT1JfUkVE
WzNdKTsKKyAgICBnbC5jbGVhckRlcHRoKEZBSUxfREVQVEgpOworICAgIGdsLmNsZWFyU3RlbmNp
bChGQUlMX1NURU5DSUwpOworCisgICAgLy8gRW5hYmxlIHJhc3Rlcml6ZXIgZGlzY2FyZAorCisg
ICAgZ2wuZW5hYmxlKGdsLlJBU1RFUklaRVJfRElTQ0FSRCk7CisgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ1Jhc3Rlcml6ZXIgZGlzY2FyZCBlbmFibGVkJyk7CisKKyAgICAvLyBEbyB0by1iZS1k
aXNjYXJkZWQgcHJpbWl0aXZlIGRyYXdzIGFuZCBidWZmZXIgY2xlYXJzCisKKyAgICBzd2l0Y2gg
KHRoaXMubV9jYXNlVHlwZSkgeworICAgICAgICBjYXNlIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRl
c3RzLkNhc2VUeXBlLldSSVRFX0RFUFRIOgorICAgICAgICAgICAgZ2x1RHJhd1V0aWwuZHJhdyhn
bCwgcHJvZ3JhbSwgdmVydGV4QXJyYXlzLCBuZXcgZ2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdCh0
aGlzLm1fZHJhd01vZGUsIHZlcnRpY2VzLmxlbmd0aCAvIDQpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRF
X1NURU5DSUw6CisgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9ncmFtLCB2ZXJ0
ZXhBcnJheXMsIG5ldyBnbHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0KHRoaXMubV9kcmF3TW9kZSwg
dmVydGljZXMubGVuZ3RoIC8gNCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
ZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfQ09MT1I6CisgICAgICAg
ICAgICBpZiAodGhpcy5tX2Nhc2VPcHRpb25zLnVzZUZCTykKKyAgICAgICAgICAgICAgICBnbC5j
bGVhckJ1ZmZlcmZ2KGdsLkNPTE9SLCAwLCBGQUlMX0NPTE9SX1JFRCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5D
YXNlVHlwZS5DTEVBUl9ERVBUSDoKKyAgICAgICAgICAgIGlmICh0aGlzLm1fY2FzZU9wdGlvbnMu
dXNlRkJPKQorICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVyZnYoZ2wuREVQVEgsIDAsIFtG
QUlMX0RFUFRIXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2wuY2xlYXIo
Z2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBl
czNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5DTEVBUl9TVEVOQ0lMOgorICAgICAg
ICAgICAgaWYgKHRoaXMubV9jYXNlT3B0aW9ucy51c2VGQk8pCisgICAgICAgICAgICAgICAgZ2wu
Y2xlYXJCdWZmZXJpdihnbC5TVEVOQ0lMLCAwLCBbRkFJTF9TVEVOQ0lMXSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuU1RFTkNJTF9CVUZGRVJfQklUKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdJbnZhbGlkIGNhc2UgdHlwZSAnICsgdGhpcy5tX2Nhc2VUeXBlKTsKKyAgICB9
CisKKyAgICAvLyBEaXNhYmxlIHJhc3Rlcml6ZXIgZGlzY2FyZAorCisgICAgZ2wuZGlzYWJsZShn
bC5SQVNURVJJWkVSX0RJU0NBUkQpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSYXN0ZXJp
emVyIGRpc2NhcmQgZGlzYWJsZWQnKTsKKworICAgIGlmICh0aGlzLm1fY2FzZVR5cGUgPT0gZXMz
ZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCkgeworICAgICAg
ICBpZiAodGhpcy5tX2Nhc2VPcHRpb25zLnVzZUZCTyB8fCBnbC5nZXRDb250ZXh0QXR0cmlidXRl
cygpLnN0ZW5jaWwpIHsKKyAgICAgICAgICAgIC8vIERyYXcgYSBmdWxsLXNjcmVlbiBzcXVhcmUg
dGhhdCBjb2xvcnMgYWxsIHBpeGVscyByZWQgaWYgdGhleSBoYXZlIHN0ZW5jaWwgdmFsdWUgMS4K
KyAgICAgICAgICAgIHZhciBzcXVhcmUgPSBbbmV3IGdsdURyYXdVdGlsLlZlcnRleEFycmF5Qmlu
ZGluZyhnbC5GTE9BVCwgcG9zTG9jLCA0LCBVTklUX1NRVUFSRS5sZW5ndGggLyA0LCBVTklUX1NR
VUFSRSldOworCisgICAgICAgICAgICBnbC5zdGVuY2lsRnVuYyhnbC5FUVVBTCwgMSwgMHhGRik7
CisgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9ncmFtLCBzcXVhcmUsCisgICAg
ICAgICAgICAgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0
aXZlVHlwZS5UUklBTkdMRV9TVFJJUCwgVU5JVF9TUVVBUkUubGVuZ3RoIC8gNCkpOworICAgICAg
ICB9CisgICAgICAgIC8vIFxub3RlIElmIG5vIHN0ZW5jaWwgYnVmZmVycyBhcmUgcHJlc2VudCBh
bmQgdGVzdCBpcyByZW5kZXJpbmcgdG8gZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGVzdCB3aWxsIGFs
d2F5cyBwYXNzLgorICAgIH0gZWxzZSBpZiAodGhpcy5tX2Nhc2VUeXBlID09IGVzM2ZSYXN0ZXJp
emVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLkNMRUFSX0RFUFRIIHx8IHRoaXMubV9jYXNlVHlwZSA9
PSBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5DTEVBUl9TVEVOQ0lMKSB7Cisg
ICAgICAgIC8vIERyYXcgcGFzcy1pbmRpY2F0aW5nIHByaW1pdGl2ZXMgZm9yIGRlcHRoIGFuZCBz
dGVuY2lsIGNsZWFyIGNhc2VzCisKKyAgICAgICAgZ2wudW5pZm9ybTRmdihjb2xvclVuaWYsIFBB
U1NfQ09MT1JfQkxVRSk7CisgICAgICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2dyYW0sIHZl
cnRleEFycmF5cywgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3QodGhpcy5tX2RyYXdNb2Rl
LCB2ZXJ0aWNlcy5sZW5ndGggLyA0KSk7CisgICAgfQorCisgICAgZ2wuZmluaXNoKCk7CisgICAg
Z2wuZGlzYWJsZShnbC5TVEVOQ0lMX1RFU1QpOworICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVT
VCk7CisgICAgZ2wuZGlzYWJsZShnbC5TQ0lTU09SX1RFU1QpOworCisgICAgLy8gUmVhZCBhbmQg
Y2hlY2sgcGl4ZWwgZGF0YQorCisgICAgdmFyIHBpeGVscyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZh
Y2UoKTsKKyAgICBwaXhlbHMucmVhZFZpZXdwb3J0KGdsKTsKKworICAgIHZhciB3aWR0aCA9IHBp
eGVscy5nZXRXaWR0aCgpOworICAgIHZhciBoZWlnaHQgPSBwaXhlbHMuZ2V0SGVpZ2h0KCk7CisK
KyAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisgICAgICAgIGZvciAodmFy
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgdmFyIHBpeGVsID0gcGl4ZWxz
LmdldFBpeGVsKHgsIHkpOworICAgICAgICAgICAgaWYgKHBpeGVsWzJdICE9IDApCisgICAgICAg
ICAgICAgICAgcGFzc0NvbG9yRm91bmQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAocGl4ZWxb
MF0gIT0gMCkgeworICAgICAgICAgICAgICAgIGZhaWxDb2xvckZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAo
ZmFpbENvbG9yRm91bmQpIGJyZWFrOworICAgIH0KKworICAgIC8vIERlbGV0ZSBGQk8gaWYgY3Jl
YXRlZAorCisgICAgaWYgKHRoaXMubV9jYXNlT3B0aW9ucy51c2VGQk8pCisgICAgICAgIHRoaXMu
ZGVsZXRlRnJhbWVidWZmZXJPYmplY3QoKTsKKworICAgIC8vIEV2YWx1YXRlIHRlc3QgcmVzdWx0
CisKKyAgICB2YXIgdGVzdE9rID0gcGFzc0NvbG9yRm91bmQgJiYgIWZhaWxDb2xvckZvdW5kOwor
CisgICAgaWYgKCF0ZXN0T2spIHsKKyAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2UoJ1Jlc3Vs
dCBpbWFnZScsICcnLCBwaXhlbHMuZ2V0QWNjZXNzKCkpOworICAgICAgICB0ZXN0RmFpbGVkKCdQ
cmltaXRpdmUgb3IgYnVmZmVyIGNsZWFyIHdhcyBub3QgZGlzY2FyZGVkLicpOworICAgICAgICBy
ZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH0KKyAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnUHJpbWl0aXZlIG9yIGJ1ZmZlciBjbGVhciB3YXMgZGlzY2FyZGVkIGNv
cnJlY3RseS4nKTsKKworICAgIGlmICgrK3RoaXMubV9pdGVyTmR4IDwgTlVNX0NBU0VfSVRFUkFU
SU9OUykKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7
CisKKyAgICB0ZXN0UGFzc2VkKCk7CisgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKK307CisKK2VzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLmluaXQgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgdmFyIHRlc3RH
cm91cCA9IHN0YXRlLnRlc3RDYXNlczsKKworICAgIHZhciBiYXNpYyA9IHRjdVRlc3RDYXNlLm5l
d1Rlc3QoJ2Jhc2ljJywgJ1Jhc3Rlcml6ZXIgZGlzY2FyZCB0ZXN0IGZvciBkZWZhdWx0IGZyYW1l
YnVmZmVyJyk7CisgICAgdmFyIHNjaXNzb3IgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdzY2lzc29y
JywgJ1Jhc3Rlcml6ZXIgZGlzY2FyZCB0ZXN0IGZvciBkZWZhdWx0IGZyYW1lYnVmZmVyIHdpdGgg
c2Npc3NvciB0ZXN0IGVuYWJsZWQnKTsKKyAgICB2YXIgZmJvID0gdGN1VGVzdENhc2UubmV3VGVz
dCgnZmJvJywgJ1Jhc3Rlcml6ZXIgZGlzY2FyZCB0ZXN0IGZvciBmcmFtZWJ1ZmZlciBvYmplY3Qn
KTsKKworICAgIHRlc3RHcm91cC5hZGRDaGlsZChiYXNpYyk7CisgICAgdGVzdEdyb3VwLmFkZENo
aWxkKHNjaXNzb3IpOworICAgIHRlc3RHcm91cC5hZGRDaGlsZChmYm8pOworCisgICAgLy8gRGVm
YXVsdCBmcmFtZWJ1ZmZlciBjYXNlcworCisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfZGVwdGhfcG9p
bnRzJywgJ3BvaW50cycsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldS
SVRFX0RFUFRILCBudWxsLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlBPSU5UUykpOworICAg
IGJhc2ljLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVy
RGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX2xpbmVzJywgJ2xpbmVzJywgNCwgZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfREVQVEgsIG51bGwsIGdsdURyYXdVdGlsLnBy
aW1pdGl2ZVR5cGUuTElORVMpKTsKKyAgICBiYXNpYy5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9kZXB0aF9saW5lX3N0
cmlwJywgJ2xpbmVfc3RyaXAnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlw
ZS5XUklURV9ERVBUSCwgbnVsbCwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX1NUUklQ
KSk7CisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJh
c3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfZGVwdGhfbGluZV9sb29wJywgJ2xpbmVfbG9vcCcs
IDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRFX0RFUFRILCBudWxs
LCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfTE9PUCkpOworICAgIGJhc2ljLmFkZENo
aWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2Uo
J3dyaXRlX2RlcHRoX3RyaWFuZ2xlcycsICd0cmlhbmdsZXMnLCA0LCBlczNmUmFzdGVyaXplckRp
c2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9ERVBUSCwgbnVsbCwgZ2x1RHJhd1V0aWwucHJpbWl0
aXZlVHlwZS5UUklBTkdMRVMpKTsKKyAgICBiYXNpYy5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9kZXB0aF90cmlhbmds
ZV9zdHJpcCcsICd0cmlhbmdsZV9zdHJpcCcsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LkNhc2VUeXBlLldSSVRFX0RFUFRILCBudWxsLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRS
SUFOR0xFX1NUUklQKSk7CisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlz
Y2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfZGVwdGhfdHJpYW5nbGVfZmFu
JywgJ3RyaWFuZ2xlX2ZhbicsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBl
LldSSVRFX0RFUFRILCBudWxsLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFX0ZB
TikpOworCisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9wb2ludHMnLCAncG9pbnRzJywg
NCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgbnVs
bCwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5QT0lOVFMpKTsKKyAgICBiYXNpYy5hZGRDaGls
ZChuZXcgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3
cml0ZV9zdGVuY2lsX2xpbmVzJywgJ2xpbmVzJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVz
dHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgbnVsbCwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlw
ZS5MSU5FUykpOworICAgIGJhc2ljLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRU
ZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX3N0ZW5jaWxfbGluZV9zdHJpcCcsICds
aW5lX3N0cmlwJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVf
U1RFTkNJTCwgbnVsbCwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX1NUUklQKSk7Cisg
ICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6
ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9saW5lX2xvb3AnLCAnbGluZV9sb29wJywgNCwg
ZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgbnVsbCwg
Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX0xPT1ApKTsKKyAgICBiYXNpYy5hZGRDaGls
ZChuZXcgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3
cml0ZV9zdGVuY2lsX3RyaWFuZ2xlcycsICd0cmlhbmdsZXMnLCA0LCBlczNmUmFzdGVyaXplckRp
c2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9TVEVOQ0lMLCBudWxsLCBnbHVEcmF3VXRpbC5wcmlt
aXRpdmVUeXBlLlRSSUFOR0xFUykpOworICAgIGJhc2ljLmFkZENoaWxkKG5ldyBlczNmUmFzdGVy
aXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX3N0ZW5jaWxfdHJp
YW5nbGVfc3RyaXAnLCAndHJpYW5nbGVfc3RyaXAnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRU
ZXN0cy5DYXNlVHlwZS5XUklURV9TVEVOQ0lMLCBudWxsLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVU
eXBlLlRSSUFOR0xFX1NUUklQKSk7CisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJp
emVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF90cmlh
bmdsZV9mYW4nLCAndHJpYW5nbGVfZmFuJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMu
Q2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgbnVsbCwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5U
UklBTkdMRV9GQU4pKTsKKworICAgIGJhc2ljLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRp
c2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ2NsZWFyX2NvbG9yJywgJ2NsZWFyX2Nv
bG9yJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfQ09MT1Is
IG51bGwpKTsKKyAgICBiYXNpYy5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVz
dHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCdjbGVhcl9kZXB0aCcsICdjbGVhcl9kZXB0aCcsIDQs
IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLkNMRUFSX0RFUFRILCBudWxsKSk7
CisgICAgYmFzaWMuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rl
cml6ZXJEaXNjYXJkQ2FzZSgnY2xlYXJfc3RlbmNpbCcsICdjbGVhcl9zdGVuY2lsJywgNCwgZXMz
ZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfU1RFTkNJTCwgbnVsbCkpOwor
CisgICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBjYXNlcyB3aXRoIHNjaXNzb3IgdGVzdCBlbmFi
bGVkCisKKyAgICBzY2lzc29yLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0
cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX3BvaW50cycsICdwb2ludHMnLCA0
LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9ERVBUSCwgZXMzZlJh
c3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUiwgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5QT0lOVFMpKTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5ldyBlczNmUmFzdGVy
aXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX2xpbmVz
JywgJ2xpbmVzJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVf
REVQVEgsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VPcHRpb25zLlNDSVNTT1IsIGds
dURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuTElORVMpKTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5l
dyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRl
X2RlcHRoX2xpbmVfc3RyaXAnLCAnbGluZV9zdHJpcCcsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2Fy
ZFRlc3RzLkNhc2VUeXBlLldSSVRFX0RFUFRILCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5D
YXNlT3B0aW9ucy5TQ0lTU09SLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfU1RSSVAp
KTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5S
YXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX2xpbmVfbG9vcCcsICdsaW5lX2xvb3An
LCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9ERVBUSCwgZXMz
ZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUiwgZ2x1RHJhd1V0aWwu
cHJpbWl0aXZlVHlwZS5MSU5FX0xPT1ApKTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5ldyBlczNm
UmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRo
X3RyaWFuZ2xlcycsICd0cmlhbmdsZXMnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5D
YXNlVHlwZS5XUklURV9ERVBUSCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlv
bnMuU0NJU1NPUiwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRVMpKTsKKyAgICBz
Y2lzc29yLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVy
RGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX3RyaWFuZ2xlX3N0cmlwJywgJ3RyaWFuZ2xlX3N0cmlw
JywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfREVQVEgsIGVz
M2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VPcHRpb25zLlNDSVNTT1IsIGdsdURyYXdVdGls
LnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVfU1RSSVApKTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5l
dyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRl
X2RlcHRoX3RyaWFuZ2xlX2ZhbicsICd0cmlhbmdsZV9mYW4nLCA0LCBlczNmUmFzdGVyaXplckRp
c2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9ERVBUSCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVz
dHMuQ2FzZU9wdGlvbnMuU0NJU1NPUiwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdM
RV9GQU4pKTsKKworICAgIHNjaXNzb3IuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2Fy
ZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9wb2ludHMnLCAncG9p
bnRzJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJ
TCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUiwgZ2x1RHJh
d1V0aWwucHJpbWl0aXZlVHlwZS5QT0lOVFMpKTsKKyAgICBzY2lzc29yLmFkZENoaWxkKG5ldyBl
czNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX3N0
ZW5jaWxfbGluZXMnLCAnbGluZXMnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNl
VHlwZS5XUklURV9TVEVOQ0lMLCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9u
cy5TQ0lTU09SLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVTKSk7CisgICAgc2Npc3Nv
ci5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2Nh
cmRDYXNlKCd3cml0ZV9zdGVuY2lsX2xpbmVfc3RyaXAnLCAnbGluZV9zdHJpcCcsIDQsIGVzM2ZS
YXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRFX1NURU5DSUwsIGVzM2ZSYXN0ZXJp
emVyRGlzY2FyZFRlc3RzLkNhc2VPcHRpb25zLlNDSVNTT1IsIGdsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGUuTElORV9TVFJJUCkpOworICAgIHNjaXNzb3IuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJp
emVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9saW5l
X2xvb3AnLCAnbGluZV9sb29wJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5
cGUuV1JJVEVfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMu
U0NJU1NPUiwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX0xPT1ApKTsKKyAgICBzY2lz
c29yLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlz
Y2FyZENhc2UoJ3dyaXRlX3N0ZW5jaWxfdHJpYW5nbGVzJywgJ3RyaWFuZ2xlcycsIDQsIGVzM2ZS
YXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRFX1NURU5DSUwsIGVzM2ZSYXN0ZXJp
emVyRGlzY2FyZFRlc3RzLkNhc2VPcHRpb25zLlNDSVNTT1IsIGdsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGUuVFJJQU5HTEVTKSk7CisgICAgc2Npc3Nvci5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9zdGVuY2lsX3RyaWFu
Z2xlX3N0cmlwJywgJ3RyaWFuZ2xlX3N0cmlwJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVz
dHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2Fz
ZU9wdGlvbnMuU0NJU1NPUiwgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRV9TVFJJ
UCkpOworICAgIHNjaXNzb3IuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF90cmlhbmdsZV9mYW4nLCAndHJp
YW5nbGVfZmFuJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVf
U1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUiwg
Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRV9GQU4pKTsKKworICAgIHNjaXNzb3Iu
YWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJk
Q2FzZSgnY2xlYXJfY29sb3InLCAnY2xlYXJfY29sb3InLCA0LCBlczNmUmFzdGVyaXplckRpc2Nh
cmRUZXN0cy5DYXNlVHlwZS5DTEVBUl9DT0xPUiwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMu
Q2FzZU9wdGlvbnMuU0NJU1NPUikpOworICAgIHNjaXNzb3IuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnY2xlYXJfZGVwdGgnLCAn
Y2xlYXJfZGVwdGgnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5DTEVB
Ul9ERVBUSCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUikp
OworICAgIHNjaXNzb3IuYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJh
c3Rlcml6ZXJEaXNjYXJkQ2FzZSgnY2xlYXJfc3RlbmNpbCcsICdjbGVhcl9zdGVuY2lsJywgNCwg
ZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfU1RFTkNJTCwgZXMzZlJh
c3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuU0NJU1NPUikpOworCisgICAgLy8gRkJP
IGNhc2VzCisKKyAgICBmYm8uYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfZGVwdGhfcG9pbnRzJywgJ3BvaW50cycsIDQs
IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRFX0RFUFRILCBlczNmUmFz
dGVyaXplckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8sIGdsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGUuUE9JTlRTKSk7CisgICAgZmJvLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2Nh
cmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX2xpbmVzJywgJ2xpbmVz
JywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfREVQVEgsIGVz
M2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VPcHRpb25zLkZCTywgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5MSU5FUykpOworICAgIGZiby5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJE
aXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9kZXB0aF9saW5lX3N0cmlw
JywgJ2xpbmVfc3RyaXAnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5X
UklURV9ERVBUSCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuRkJPLCBn
bHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfU1RSSVApKTsKKyAgICBmYm8uYWRkQ2hpbGQo
bmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3Jp
dGVfZGVwdGhfbGluZV9sb29wJywgJ2xpbmVfbG9vcCcsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2Fy
ZFRlc3RzLkNhc2VUeXBlLldSSVRFX0RFUFRILCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5D
YXNlT3B0aW9ucy5GQk8sIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuTElORV9MT09QKSk7Cisg
ICAgZmJvLmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVy
RGlzY2FyZENhc2UoJ3dyaXRlX2RlcHRoX3RyaWFuZ2xlcycsICd0cmlhbmdsZXMnLCA0LCBlczNm
UmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9ERVBUSCwgZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuRkJPLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBl
LlRSSUFOR0xFUykpOworICAgIGZiby5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJEaXNjYXJk
VGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9kZXB0aF90cmlhbmdsZV9zdHJpcCcs
ICd0cmlhbmdsZV9zdHJpcCcsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBl
LldSSVRFX0RFUFRILCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8s
IGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVfU1RSSVApKTsKKyAgICBmYm8uYWRk
Q2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2Fz
ZSgnd3JpdGVfZGVwdGhfdHJpYW5nbGVfZmFuJywgJ3RyaWFuZ2xlX2ZhbicsIDQsIGVzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLldSSVRFX0RFUFRILCBlczNmUmFzdGVyaXplckRp
c2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8sIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJ
QU5HTEVfRkFOKSk7CisKKyAgICBmYm8uYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2Fy
ZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9wb2ludHMnLCAncG9p
bnRzJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJ
TCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuRkJPLCBnbHVEcmF3VXRp
bC5wcmltaXRpdmVUeXBlLlBPSU5UUykpOworICAgIGZiby5hZGRDaGlsZChuZXcgZXMzZlJhc3Rl
cml6ZXJEaXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9zdGVuY2lsX2xp
bmVzJywgJ2xpbmVzJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJ
VEVfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuRkJPLCBn
bHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVTKSk7CisgICAgZmJvLmFkZENoaWxkKG5ldyBl
czNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dyaXRlX3N0
ZW5jaWxfbGluZV9zdHJpcCcsICdsaW5lX3N0cmlwJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJk
VGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMu
Q2FzZU9wdGlvbnMuRkJPLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfU1RSSVApKTsK
KyAgICBmYm8uYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6
ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF9saW5lX2xvb3AnLCAnbGluZV9sb29wJywgNCwg
ZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5cGUuV1JJVEVfU1RFTkNJTCwgZXMzZlJh
c3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMuRkJPLCBnbHVEcmF3VXRpbC5wcmltaXRp
dmVUeXBlLkxJTkVfTE9PUCkpOworICAgIGZiby5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJE
aXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCd3cml0ZV9zdGVuY2lsX3RyaWFuZ2xl
cycsICd0cmlhbmdsZXMnLCA0LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5X
UklURV9TVEVOQ0lMLCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8s
IGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTKSk7CisgICAgZmJvLmFkZENoaWxk
KG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2FyZENhc2UoJ3dy
aXRlX3N0ZW5jaWxfdHJpYW5nbGVfc3RyaXAnLCAndHJpYW5nbGVfc3RyaXAnLCA0LCBlczNmUmFz
dGVyaXplckRpc2NhcmRUZXN0cy5DYXNlVHlwZS5XUklURV9TVEVOQ0lMLCBlczNmUmFzdGVyaXpl
ckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8sIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUu
VFJJQU5HTEVfU1RSSVApKTsKKyAgICBmYm8uYWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlz
Y2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJkQ2FzZSgnd3JpdGVfc3RlbmNpbF90cmlhbmdsZV9m
YW4nLCAndHJpYW5nbGVfZmFuJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZVR5
cGUuV1JJVEVfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuQ2FzZU9wdGlvbnMu
RkJPLCBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFX0ZBTikpOworCisgICAgZmJv
LmFkZENoaWxkKG5ldyBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5SYXN0ZXJpemVyRGlzY2Fy
ZENhc2UoJ2NsZWFyX2NvbG9yJywgJ2NsZWFyX2NvbG9yJywgNCwgZXMzZlJhc3Rlcml6ZXJEaXNj
YXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfQ09MT1IsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3Rz
LkNhc2VPcHRpb25zLkZCTykpOworICAgIGZiby5hZGRDaGlsZChuZXcgZXMzZlJhc3Rlcml6ZXJE
aXNjYXJkVGVzdHMuUmFzdGVyaXplckRpc2NhcmRDYXNlKCdjbGVhcl9kZXB0aCcsICdjbGVhcl9k
ZXB0aCcsIDQsIGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLkNhc2VUeXBlLkNMRUFSX0RFUFRI
LCBlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5DYXNlT3B0aW9ucy5GQk8pKTsKKyAgICBmYm8u
YWRkQ2hpbGQobmV3IGVzM2ZSYXN0ZXJpemVyRGlzY2FyZFRlc3RzLlJhc3Rlcml6ZXJEaXNjYXJk
Q2FzZSgnY2xlYXJfc3RlbmNpbCcsICdjbGVhcl9zdGVuY2lsJywgNCwgZXMzZlJhc3Rlcml6ZXJE
aXNjYXJkVGVzdHMuQ2FzZVR5cGUuQ0xFQVJfU1RFTkNJTCwgZXMzZlJhc3Rlcml6ZXJEaXNjYXJk
VGVzdHMuQ2FzZU9wdGlvbnMuRkJPKSk7Cit9OworCisvKioKKyAqIENyZWF0ZSBhbmQgZXhlY3V0
ZSB0aGUgdGVzdCBjYXNlcworICovCitlczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5ydW4gPSBm
dW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wgPSBjb250ZXh0OworICAgIC8vU2V0IHVwIFRlc3Qg
Um9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHRlc3ROYW1lID0gJ3Jhc3Rlcml6ZXJfZGlzY2FyZCc7
CisgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdSYXN0ZXJpemVyIERpc2NhcmQgVGVzdHMnOwor
ICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgIHN0YXRlLnRlc3ROYW1l
ID0gdGVzdE5hbWU7CisgICAgc3RhdGUudGVzdENhc2VzID0gdGN1VGVzdENhc2UubmV3VGVzdCh0
ZXN0TmFtZSwgdGVzdERlc2NyaXB0aW9uLCBudWxsKTsKKworICAgIC8vU2V0IHVwIG5hbWUgYW5k
IGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgc2V0Q3VycmVudFRlc3ROYW1l
KHRlc3ROYW1lKTsKKyAgICBkZXNjcmlwdGlvbih0ZXN0RGVzY3JpcHRpb24pOworCisgICAgdHJ5
IHsKKyAgICAgICAgZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuaW5pdCgpOworICAgICAgICB0
Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAg
dGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50
ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
UmJvU3RhdGVRdWVyeVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTkwMzEwMjk5MGU2ZDMwYmQ5NDcwOTYzYzQyMDY2OTYyNDRkZGI3Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmUmJvU3RhdGVRdWVyeVRlc3RzLmpzCkBA
IC0wLDAgKzEsMzA4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFs
aXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICog
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAn
QVMgSVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29v
Zy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVk
Lmdsc1N0YXRlUXVlcnknKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKK3ZhciBlczNmUmJv
U3RhdGVRdWVyeVRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmUmJvU3RhdGVRdWVyeVRlc3Rz
OwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBn
bHNTdGF0ZVF1ZXJ5ID0gbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVRdWVyeTsKK3ZhciBlczNmQXBp
Q2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNhc2U7Cit2YXIgZGVSYW5kb20gPSBmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKwordmFyIHNldFBhcmVudENsYXNzID0gZnVu
Y3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Y2hpbGQ7Cit9OworCisvKioKKyAqIEB0aGlzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICovCit2
YXIgY2hlY2tSZW5kZXJidWZmZXJDb21wb25lbnRTaXplID0gZnVuY3Rpb24ociwgZywgYiwgYSwg
ZCwgcykgeworICAgIHZhciByZWZlcmVuY2VTaXplcyA9IFtyLCBnLCBiLCBhLCBkLCBzXTsKKyAg
ICB2YXIgcGFyYW1OYW1lcyA9IFsKKyAgICAgICAgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFLAor
ICAgICAgICBnbC5SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSwKKyAgICAgICAgZ2wuUkVOREVSQlVG
RkVSX0JMVUVfU0laRSwKKyAgICAgICAgZ2wuUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUsCisgICAg
ICAgIGdsLlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFLAorICAgICAgICBnbC5SRU5ERVJCVUZGRVJf
U1RFTkNJTF9TSVpFCisgICAgXTsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHJlZmVy
ZW5jZVNpemVzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgaWYgKHJlZmVyZW5jZVNpemVzW25k
eF0gPT0gLTEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdmFyIHZhbHVlID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVS
QlVGRkVSLCBwYXJhbU5hbWVzW25keF0pKTsKKworICAgICAgICB0aGlzLmNoZWNrKHZhbHVlID49
IHJlZmVyZW5jZVNpemVzW25keF0sICdFeHBlY3RlZCBncmVhdGVyIG9yIGVxdWFsIHRvICcgKyBy
ZWZlcmVuY2VTaXplc1tuZHhdICsgJyBnb3QgJyArIHZhbHVlKTsKKyAgICB9Cit9OworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8K
K2VzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMuUmJvU2l6ZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNj
cmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlJib1N0YXRlUXVlcnlUZXN0
cy5SYm9TaXplQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZSYm9TdGF0ZVF1ZXJ5
VGVzdHMuUmJvU2l6ZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAgICB2YXIgcmVuZGVyYnVm
ZmVySUQgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVySUQpOworCisgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeVJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVJfV0lEVEgsIDApKTsK
KyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UmVuZGVyYnVmZmVyKGdsLlJFTkRF
UkJVRkZFUl9IRUlHSFQsIDApKTsKKworICAgIHZhciBudW1JdGVyYXRpb25zID0gNjA7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgdmFyIHcg
PSBybmQuZ2V0SW50KDAsIDEyOCk7CisgICAgICAgIHZhciBoID0gcm5kLmdldEludCgwLCAxMjgp
OworCisgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
R0I4LCB3LCBoKTsKKworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUl9XSURUSCwgdykpOworICAgICAgICB0aGlzLmNoZWNr
KGdsc1N0YXRlUXVlcnkudmVyaWZ5UmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUl9IRUlHSFQs
IGgpKTsKKyAgICB9CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcklEKTsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBp
Q2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3Jp
cHRpb24KKyAqLworZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5SYm9JbnRlcm5hbEZvcm1hdENhc2Ug
PSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5SYm9JbnRlcm5hbEZvcm1hdENhc2UsIGVzM2ZBcGlDYXNl
LkFwaUNhc2UpOworCitlczNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib0ludGVybmFsRm9ybWF0Q2Fz
ZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZW5kZXJidWZmZXJJRCA9
IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVO
REVSQlVGRkVSLCByZW5kZXJidWZmZXJJRCk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVl
cnkudmVyaWZ5UmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQsIGds
LlJHQkE0KSk7CisKKyAgICB2YXIgcmVxdWlyZWRDb2xvcmZvcm1hdHMgPSBbCisgICAgICAgIGds
LlI4LCBnbC5SRzgsIGdsLlJHQjgsIGdsLlJHQjU2NSwgZ2wuUkdCQTQsIGdsLlJHQjVfQTEsIGds
LlJHQkE4LCBnbC5SR0IxMF9BMiwKKyAgICAgICAgZ2wuUkdCMTBfQTJVSSwgZ2wuU1JHQjhfQUxQ
SEE4LCBnbC5SOEksIGdsLlI4VUksIGdsLlIxNkksIGdsLlIxNlVJLCBnbC5SMzJJLCBnbC5SMzJV
SSwKKyAgICAgICAgZ2wuUkc4SSwgZ2wuUkc4VUksIGdsLlJHMTZJLCBnbC5SRzE2VUksIGdsLlJH
MzJJLCBnbC5SRzMyVUksIGdsLlJHQkE4SSwgZ2wuUkdCQThVSSwKKyAgICAgICAgZ2wuUkdCQTE2
SSwgZ2wuUkdCQTE2VUksIGdsLlJHQkEzMkksIGdsLlJHQkEzMlVJCisgICAgXTsKKworICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHJlcXVpcmVkQ29sb3Jmb3JtYXRzLmxlbmd0aDsgKytuZHgp
IHsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIHJlcXVp
cmVkQ29sb3Jmb3JtYXRzW25keF0sIDEyOCwgMTI4KTsKKworICAgICAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5UmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9G
T1JNQVQsIHJlcXVpcmVkQ29sb3Jmb3JtYXRzW25keF0pKTsKKyAgICB9CisgICAgZ2wuZGVsZXRl
UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcklEKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlJib1N0YXRlUXVl
cnlUZXN0cy5SYm9Db21wb25lbnRTaXplQ29sb3JDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3Jp
cHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMu
UmJvQ29tcG9uZW50U2l6ZUNvbG9yQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZS
Ym9TdGF0ZVF1ZXJ5VGVzdHMuUmJvQ29tcG9uZW50U2l6ZUNvbG9yQ2FzZS5wcm90b3R5cGUudGVz
dCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZW5kZXJidWZmZXJJRCA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXJJRCk7CisKKyAgICBjaGVja1JlbmRlcmJ1ZmZlckNvbXBvbmVudFNpemUuYmluZCh0
aGlzLCAwLCAwLCAwLCAwLCAwLCAwKTsKKworICAgIHZhciByZXF1aXJlZENvbG9yRm9ybWF0cyA9
IFsKKyAgICAgICAgLy8gZm9ybWF0LCByLCBnLCBiLCBhCisgICAgICAgIFtnbC5SOCwgOCwgMCwg
MCwgMF0sCisgICAgICAgIFtnbC5SRzgsIDgsIDgsIDAsIDBdLAorICAgICAgICBbZ2wuUkdCOCwg
OCwgOCwgOCwgMF0sCisgICAgICAgIFtnbC5SR0I1NjUsIDUsIDYsIDUsIDBdLAorICAgICAgICBb
Z2wuUkdCQTQsIDQsIDQsIDQsIDRdLAorICAgICAgICBbZ2wuUkdCNV9BMSwgNSwgNSwgNSwgMV0s
CisgICAgICAgIFtnbC5SR0JBOCwgOCwgOCwgOCwgOF0sCisgICAgICAgIFtnbC5SR0IxMF9BMiwg
MTAsIDEwLCAxMCwgMl0sCisgICAgICAgIFtnbC5SR0IxMF9BMlVJLCAxMCwgMTAsIDEwLCAyXSwK
KyAgICAgICAgW2dsLlNSR0I4X0FMUEhBOCwgOCwgOCwgOCwgOF0sCisgICAgICAgIFtnbC5SOEks
IDgsIDAsIDAsIDBdLAorICAgICAgICBbZ2wuUjhVSSwgOCwgMCwgMCwgMF0sCisgICAgICAgIFtn
bC5SMTZJLCAxNiwgMCwgMCwgMF0sCisgICAgICAgIFtnbC5SMTZVSSwgMTYsIDAsIDAsIDBdLAor
ICAgICAgICBbZ2wuUjMySSwgMzIsIDAsIDAsIDBdLAorICAgICAgICBbZ2wuUjMyVUksIDMyLCAw
LCAwLCAwXSwKKyAgICAgICAgW2dsLlJHOEksIDgsIDgsIDAsIDBdLAorICAgICAgICBbZ2wuUkc4
VUksIDgsIDgsIDAsIDBdLAorICAgICAgICBbZ2wuUkcxNkksIDE2LCAxNiwgMCwgMF0sCisgICAg
ICAgIFtnbC5SRzE2VUksIDE2LCAxNiwgMCwgMF0sCisgICAgICAgIFtnbC5SRzMySSwgMzIsIDMy
LCAwLCAwXSwKKyAgICAgICAgW2dsLlJHMzJVSSwgMzIsIDMyLCAwLCAwXSwKKyAgICAgICAgW2ds
LlJHQkE4SSwgOCwgOCwgOCwgOF0sCisgICAgICAgIFtnbC5SR0JBOFVJLCA4LCA4LCA4LCA4XSwK
KyAgICAgICAgW2dsLlJHQkExNkksIDE2LCAxNiwgMTYsIDE2XSwKKyAgICAgICAgW2dsLlJHQkEx
NlVJLCAxNiwgMTYsIDE2LCAxNl0sCisgICAgICAgIFtnbC5SR0JBMzJJLCAzMiwgMzIsIDMyLCAz
Ml0sCisgICAgICAgIFtnbC5SR0JBMzJVSSwgMzIsIDMyLCAzMiwgMzJdCisgICAgXTsKKworICAg
IGZvciAodmFyIG5keCA9IDA7IG5keCA8IHJlcXVpcmVkQ29sb3JGb3JtYXRzLmxlbmd0aDsgKytu
ZHgpIHsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIHJl
cXVpcmVkQ29sb3JGb3JtYXRzW25keF1bMF0sIDEyOCwgMTI4KTsKKworICAgICAgICBjaGVja1Jl
bmRlcmJ1ZmZlckNvbXBvbmVudFNpemUuYmluZCh0aGlzLCByZXF1aXJlZENvbG9yRm9ybWF0c1tu
ZHhdWzFdLCByZXF1aXJlZENvbG9yRm9ybWF0c1tuZHhdWzJdLCByZXF1aXJlZENvbG9yRm9ybWF0
c1tuZHhdWzNdLCByZXF1aXJlZENvbG9yRm9ybWF0c1tuZHhdWzRdLCAtMSwgLTEpOworICAgIH0K
KyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVySUQpOworfTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitl
czNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib0NvbXBvbmVudFNpemVEZXB0aENhc2UgPSBmdW5jdGlv
bihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlz
LCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlJib1N0
YXRlUXVlcnlUZXN0cy5SYm9Db21wb25lbnRTaXplRGVwdGhDYXNlLCBlczNmQXBpQ2FzZS5BcGlD
YXNlKTsKKworZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5SYm9Db21wb25lbnRTaXplRGVwdGhDYXNl
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlbmRlcmJ1ZmZlcklEID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcklEKTsKKworICAgIHZhciByZXF1aXJlZERlcHRoRm9ybWF0
cyA9IFsKKyAgICAgICAgLy8gZm9ybWF0LCBkZXB0aCwgc3RlbmNpbAorICAgICAgICBbZ2wuREVQ
VEhfQ09NUE9ORU5UMTYsIDE2LCAwXSwKKyAgICAgICAgW2dsLkRFUFRIX0NPTVBPTkVOVDI0LCAy
NCwgMF0sCisgICAgICAgIFtnbC5ERVBUSF9DT01QT05FTlQzMkYsIDMyLCAwXSwKKyAgICAgICAg
W2dsLkRFUFRIMjRfU1RFTkNJTDgsIDI0LCA4XSwKKyAgICAgICAgW2dsLkRFUFRIMzJGX1NURU5D
SUw4LCAzMiwgOF0KKyAgICBdOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgcmVxdWly
ZWREZXB0aEZvcm1hdHMubGVuZ3RoOyArK25keCkgeworICAgICAgICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgcmVxdWlyZWREZXB0aEZvcm1hdHNbbmR4XVswXSwgMTI4
LCAxMjgpOworCisgICAgICAgIGNoZWNrUmVuZGVyYnVmZmVyQ29tcG9uZW50U2l6ZS5iaW5kKHRo
aXMsIC0xLCAtMSwgLTEsIC0xLCByZXF1aXJlZERlcHRoRm9ybWF0c1tuZHhdWzFdLCByZXF1aXJl
ZERlcHRoRm9ybWF0c1tuZHhdWzJdKTsKKyAgICB9CisKKyAgICAvLyBTVEVOQ0lMX0lOREVYOCBp
cyByZXF1aXJlZCwgaW4gdGhhdCBjYXNlIHNCaXRzID49IDgKKyAgICBnbC5yZW5kZXJidWZmZXJT
dG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuU1RFTkNJTF9JTkRFWDgsIDEyOCwgMTI4KTsKKwor
ICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSkp
OworICAgIHRoaXMuY2hlY2sodmFsdWUgPj0gOCwgJ0V4cGVjdGVkIGdyZWF0ZXIgb3IgZXF1YWwg
dG8gODsgZ290ICcgKyB2YWx1ZSk7CisKKyAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVy
YnVmZmVySUQpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNm
QXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib1NhbXBsZXND
YXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlD
YXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENs
YXNzKGVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMuUmJvU2FtcGxlc0Nhc2UsIGVzM2ZBcGlDYXNlLkFw
aUNhc2UpOworCitlczNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib1NhbXBsZXNDYXNlLnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20o
MHhhYmNkZWYpOworCisgICAgdmFyIHJlbmRlcmJ1ZmZlcklEID0gZ2wuY3JlYXRlUmVuZGVyYnVm
ZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1
ZmZlcklEKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSX1NBTVBMRVMsIDApKTsKKworICAgIHZhciBtYXhfc2FtcGxlcyA9
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9TQU1QTEVTKSk7
CisKKyAgICAvLyAwIHNhbXBsZXMgaXMgYSBzcGVjaWFsIGNhc2UKKyAgICBnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUoZ2wuUkVOREVSQlVGRkVSLCAwLCBnbC5SR0JBOCwgMTI4LCAx
MjgpOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVJfU0FNUExFUywgMCkpOworCisgICAgLy8gdGVzdCBbMSwgbl0gc2FtcGxl
cworICAgIGZvciAodmFyIHNhbXBsZXMgPSAxOyBzYW1wbGVzIDw9IG1heF9zYW1wbGVzOyArK3Nh
bXBsZXMpIHsKKyAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJF
TkRFUkJVRkZFUiwgc2FtcGxlcywgZ2wuUkdCQTgsIDEyOCwgMTI4KTsKKyAgICAgICAgdmFyIHZh
bHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfU0FNUExFUykpOworICAgICAgICB0aGlz
LmNoZWNrKHZhbHVlID49IHNhbXBsZXMsICdFeHBlY3RlZCBncmVhdGVyIG9yIGVxdWFsIHRvICcg
KyBzYW1wbGVzICsgJyBnb3QgJyArIHZhbHVlKTsKKyAgICB9CisKKyAgICBnbC5kZWxldGVSZW5k
ZXJidWZmZXIocmVuZGVyYnVmZmVySUQpOworfTsKKworLyoqCisqIEBjb25zdHJ1Y3RvcgorKiBA
ZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisqLworZXMzZlJib1N0YXRlUXVlcnlUZXN0
cy5SYm9TdGF0ZVF1ZXJ5VGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsICdyYm8nLCAnUmJvIFN0YXRlIFF1ZXJ5IHRlc3RzJyk7Cit9OworCitl
czNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib1N0YXRlUXVlcnlUZXN0cy5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNmUmJvU3RhdGVR
dWVyeVRlc3RzLlJib1N0YXRlUXVlcnlUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
UmJvU3RhdGVRdWVyeVRlc3RzLlJib1N0YXRlUXVlcnlUZXN0czsKKworZXMzZlJib1N0YXRlUXVl
cnlUZXN0cy5SYm9TdGF0ZVF1ZXJ5VGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib1NpemVDYXNl
KCdyZW5kZXJidWZmZXJfc2l6ZScsICdSRU5ERVJCVUZGRVJfV0lEVEggYW5kIFJFTkRFUkJVRkZF
Ul9IRUlHSFQnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlJib1N0YXRlUXVlcnlUZXN0
cy5SYm9JbnRlcm5hbEZvcm1hdENhc2UoJ3JlbmRlcmJ1ZmZlcl9pbnRlcm5hbF9mb3JtYXQnLCAn
UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCcpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBl
czNmUmJvU3RhdGVRdWVyeVRlc3RzLlJib0NvbXBvbmVudFNpemVDb2xvckNhc2UoJ3JlbmRlcmJ1
ZmZlcl9jb21wb25lbnRfc2l6ZV9jb2xvcicsICdSRU5ERVJCVUZGRVJfeF9TSVpFJykpOworICAg
IHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMuUmJvQ29tcG9uZW50U2l6
ZURlcHRoQ2FzZSgncmVuZGVyYnVmZmVyX2NvbXBvbmVudF9zaXplX2RlcHRoJywgJ1JFTkRFUkJV
RkZFUl94X1NJWkUnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlJib1N0YXRlUXVlcnlU
ZXN0cy5SYm9TYW1wbGVzQ2FzZSgncmVuZGVyYnVmZmVyX3NhbXBsZXMnLCAnUkVOREVSQlVGRkVS
X1NBTVBMRVMnKSk7Cit9OworCisvKioKKyogUnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0fSBjb250ZXh0CisqLworZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5ydW4gPSBm
dW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wgPSBjb250ZXh0OworICAgIC8vU2V0IHVwIFRlc3Qg
Um9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAg
IHN0YXRlLnNldFJvb3QobmV3IGVzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMuUmJvU3RhdGVRdWVyeVRl
c3RzKCkpOworCisgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0
IHNlcmllcy4KKyAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1l
KCkpOworICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsK
KworICAgIHRyeSB7CisgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENh
c2UucnVuVGVzdENhc2VzKCk7CisgICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVz
dEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmUmJvU3RhdGVRdWVyeVRlc3RzLnJ1biB0ZXN0
cycsIGZhbHNlKTsKKyAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAg
IH0KK307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZSZWFkUGl4ZWxUZXN0cy5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9lczNmUmVhZFBpeGVsVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5NmM5MTk2
YzkyMDI3NTEwMjJiNjhkZDlkYWEyYjNlNzMwNzliOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmUmVhZFBpeGVsVGVzdHMuanMKQEAgLTAsMCArMSw1MTcgQEAKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0
aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Cisg
KgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlJlYWRQaXhlbFRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UkdCQScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5k
ZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVV
dGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisgICAgdmFyIGVzM2ZSZWFkUGl4ZWxU
ZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlJlYWRQaXhlbFRlc3RzOworICAgIHZhciB0Y3VJ
bWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZTsKKyAgICB2YXIg
dGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdCQTsKKyAgICB2YXIgdGN1VGVzdENhc2Ug
PSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciB0Y3VUZXh0dXJlID0gZnJh
bWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAgIHZhciB0Y3VUZXh0dXJlVXRpbCA9IGZyYW1l
d29yay5jb21tb24udGN1VGV4dHVyZVV0aWw7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb207CisgICAgdmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKKyAgICB2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1l
d29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hvb3NlRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGFsaWdubWVudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dMZW5ndGgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gc2tpcFJvd3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcFBpeGVscwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXI9fSB0
eXBlCisgICAgICovCisgICAgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0ID0gZnVu
Y3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGNob29zZUZvcm1hdCwgYWxpZ25tZW50LCByb3dMZW5n
dGgsIHNraXBSb3dzLCBza2lwUGl4ZWxzLCBmb3JtYXQsIHR5cGUpIHsKKyAgICAgICAgdGN1VGVz
dENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9zZWVkID0gZGVTdHJpbmcuZGVTdHJpbmdIYXNo
KG5hbWUpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV9jaG9vc2VGb3Jt
YXQgPSBjaG9vc2VGb3JtYXQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1f
YWxpZ25tZW50ID0gYWxpZ25tZW50OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMubV9za2lwUm93cyA9IHNraXBSb3dzOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX3NraXBQaXhlbHMgPSBza2lwUGl4ZWxzOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdCAhPT0gdW5kZWZpbmVkID8gZm9ybWF0IDog
Z2wuUkdCQTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV90eXBlID0gdHlw
ZSAhPT0gdW5kZWZpbmVkID8gdHlwZSA6IGdsLlVOU0lHTkVEX0JZVEU7CisKKyAgICAgICAgLyoq
IEBjb25zdCB7bnVtYmVyfSAqLyB0aGlzLm1fd2lkdGggPSAxMzsKKyAgICAgICAgLyoqIEBjb25z
dCB7bnVtYmVyfSAqLyB0aGlzLm1faGVpZ2h0ID0gMTM7CisgICAgfTsKKworICAgIGVzM2ZSZWFk
UGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRl
c3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQ
aXhlbHNUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFk
UGl4ZWxzVGVzdDsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJl
MkR9IHJlZmVyZW5jZQorICAgICAqLworICAgIGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxz
VGVzdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24ocmVmZXJlbmNlKSB7CisgICAgICAgIHZh
ciByZWZUeXBlID0gLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlfSAqLyAocmVmZXJl
bmNlLmdldEZvcm1hdCgpLnR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHdpZHRoID0gcmVmZXJlbmNlLmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgaGVpZ2h0ID0gcmVmZXJlbmNlLmdldEhlaWdodCgpOworICAgICAgICAvKiogQHJl
dHVybiB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIGxldmVsMCA9IHJlZmVy
ZW5jZS5nZXRMZXZlbCgwKTsKKworICAgICAgICAvLyBDcmVhdGUgcHJvZ3JhbQorICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZlcnRleFNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNc
bicgKworICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMiBpX2Nvb3JkO1xuJyArCisgICAgICAg
ICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAne1xuJyArCisgICAgICAg
ICAgICAnXHRnbF9Qb3NpdGlvbiA9IHZlYzQoaV9jb29yZCwgMC4wLCAxLjApO1xuJyArCisgICAg
ICAgICAgICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdt
ZW50U291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKworICAgICAgICBpZiAocmVmVHlwZSA9
PT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzIpCisgICAgICAgICAgICBmcmFn
bWVudFNvdXJjZSArPSAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgaXZlYzQgb19j
b2xvcjtcbic7CisgICAgICAgIGVsc2UgaWYgKHJlZlR5cGUgPT09IHRjdVRleHR1cmUuQ2hhbm5l
bFR5cGUuVU5TSUdORURfSU5UMzIpCisgICAgICAgICAgICBmcmFnbWVudFNvdXJjZSArPSAnbGF5
b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdXZlYzQgb19jb2xvcjtcbic7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZyYWdtZW50U291cmNlICs9ICdsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nOworCisgICAgICAgIGZyYWdtZW50U291cmNl
ICs9ICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nOworCisgICAgICAg
IGlmIChyZWZUeXBlID09PSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyKQor
ICAgICAgICAgICAgZnJhZ21lbnRTb3VyY2UgKz0gJ1x0b19jb2xvciA9IHV2ZWM0KDAsIDAsIDAs
IDEwMDApO1xuJzsKKyAgICAgICAgZWxzZSBpZiAocmVmVHlwZSA9PT0gdGN1VGV4dHVyZS5DaGFu
bmVsVHlwZS5TSUdORURfSU5UMzIpCisgICAgICAgICAgICBmcmFnbWVudFNvdXJjZSArPSAnXHRv
X2NvbG9yID0gaXZlYzQoMCwgMCwgMCwgMTAwMCk7XG4nOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBmcmFnbWVudFNvdXJjZSArPSAnXHRvX2NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAx
LjApO1xuJzsKKworICAgICAgICBmcmFnbWVudFNvdXJjZSArPSAnfVxuJzsKKworICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0g
PSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFt
Lm1ha2VWdHhGcmFnU291cmNlcyh2ZXJ0ZXhTb3VyY2UsIGZyYWdtZW50U291cmNlKSk7CisKKyAg
ICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhwcm9ncmFtLmlzT2soKSwgJ1Byb2dyYW0gZmFpbGVkJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFt
KCkpOworCisgICAgICAgIC8vIFJlbmRlcgorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciBjb29yZHMgPSBbCisgICAgICAgICAgICAtMC41LCAtMC41LAorICAgICAgICAg
ICAgMC41LCAtMC41LAorICAgICAgICAgICAgMC41LCAwLjUsCisKKyAgICAgICAgICAgIDAuNSwg
MC41LAorICAgICAgICAgICAgLTAuNSwgMC41LAorICAgICAgICAgICAgLTAuNSwgLTAuNQorICAg
ICAgICBdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvb3JkTG9jOworCisg
ICAgICAgIGNvb3JkTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbS5nZXRQcm9ncmFt
KCksICdpX2Nvb3JkJyk7CisKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29v
cmRMb2MpOworCisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xCdWZmZXJ9ICovIHZhciBjb29yZHNH
TEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgY29vcmRzR0xCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShjb29yZHMpLCBnbC5TVEFUSUNfRFJBVyk7Cisg
ICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29vcmRMb2MsIDIsIGdsLkZMT0FULCBmYWxz
ZSwgMCwgMCk7CisKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwor
ICAgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoY29vcmRMb2MpOworCisgICAgICAg
IC8vIFJlbmRlciByZWZlcmVuY2UKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGNvb3JkWDEgPSBNYXRoLmZsb29yKCgtMC41ICogd2lkdGggLyAyLjApICsgd2lkdGggLyAyLjAp
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvb3JkWTEgPSBNYXRoLmZsb29y
KCgtMC41ICogaGVpZ2h0IC8gMi4wKSArIGhlaWdodCAvIDIuMCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgY29vcmRYMiA9IE1hdGguZmxvb3IoKDAuNSAqIHdpZHRoIC8gMi4w
KSArIHdpZHRoIC8gMi4wKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb29y
ZFkyID0gTWF0aC5mbG9vcigoMC41ICogaGVpZ2h0IC8gMi4wKSArIGhlaWdodCAvIDIuMCk7CisK
KyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBp
ZiAoeCA8IGNvb3JkWDEgfHwgeCA+IGNvb3JkWDIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAg
ICAgICAgICAgICBpZiAoeSA+PSBjb29yZFkxICYmIHkgPD0gY29vcmRZMikgeworICAgICAgICAg
ICAgICAgICAgICBpZiAocmVmVHlwZSA9PT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURf
SU5UMzIpCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDAuc2V0UGl4ZWxJbnQoWzAsIDAs
IDAsIDEwMDBdLCB4LCB5KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmVHlwZSA9
PT0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQzMikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxldmVsMC5zZXRQaXhlbEludChbMCwgMCwgMCwgMTAwMF0sIHgsIHkpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDAuc2V0
UGl4ZWwoWzAuMCwgMC4wLCAwLjAsIDEuMF0sIHgsIHkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHt7Zm9ybWF0OiB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQsIHBpeGVsU2l6ZTogbnVtYmVyLCBh
bGlnbjogYm9vbGVhbn19CisgICAgICovCisgICAgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhl
bHNUZXN0LnByb3RvdHlwZS5nZXRGb3JtYXRJbmZvID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlm
ICh0aGlzLm1fY2hvb3NlRm9ybWF0KSB7CisgICAgICAgICAgICB0aGlzLm1fZm9ybWF0ID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJT05fQ09M
T1JfUkVBRF9GT1JNQVQpKTsKKyAgICAgICAgICAgIHRoaXMubV90eXBlID0gLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFKSk7CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVy
ZUZvcm1hdH0gKi8gdmFyIGZtdCA9IGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQo
dGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3R5cGUpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBhbGlnbl87CisgICAgICAgIHN3aXRjaCAodGhpcy5tX3R5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuQllURToKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgIGNhc2UgZ2wuU0hPUlQ6CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NI
T1JUOgorICAgICAgICAgICAgY2FzZSBnbC5JTlQ6CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lH
TkVEX0lOVDoKKyAgICAgICAgICAgIGNhc2UgZ2wuRkxPQVQ6CisgICAgICAgICAgICBjYXNlIGds
LkhBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgYWxpZ25fID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVF81XzZfNToK
KyAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAg
IGNhc2UgZ2wuVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9J
TlRfMTBGXzExRl8xMUZfUkVWOgorICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfMjRf
ODoKKyAgICAgICAgICAgIGNhc2UgZ2wuRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOgor
ICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6CisgICAgICAgICAg
ICAgICAgYWxpZ25fID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRl
ZCBmb3JtYXQnKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgcHhTaXplID0gZm10LmdldFBpeGVsU2l6ZSgpOworCisgICAgICAgIHJldHVybiB7Zm9ybWF0
OiBmbXQsIHBpeGVsU2l6ZTogcHhTaXplLCBhbGlnbjogYWxpZ25ffTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmUyRH0gcmVmZXJlbmNlCisgICAg
ICogQHBhcmFtIHtib29sZWFufSBhbGlnbgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwaXhlbFNp
emUKKyAgICAgKiBAcmV0dXJuIHtnb29nLlR5cGVkQXJyYXl9CisgICAgICovCisgICAgZXMzZlJl
YWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0LnByb3RvdHlwZS5jbGVhckNvbG9yID0gZnVuY3Rp
b24ocmVmZXJlbmNlLCBhbGlnbiwgcGl4ZWxTaXplKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgd2lkdGggPSByZWZlcmVuY2UuZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSByZWZlcmVuY2UuZ2V0SGVpZ2h0KCk7CisgICAg
ICAgIC8qKiBAcmV0dXJuIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgbGV2
ZWwwID0gcmVmZXJlbmNlLmdldExldmVsKDApOworCisgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5k
b20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSh0aGlzLm1fc2VlZCk7
CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIGZyYW1lYnVmZmVy
OworICAgICAgICAvKiogQHR5cGUge1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB2YXIgcmVuZGVyYnVm
ZmVyOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZDsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBncmVlbjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBibHVlOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFscGhhOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvcjsKKworICAgICAg
ICBpZiAodGhpcy5tX2Zvcm1hdCA9PT0gZ2wuUkdCQV9JTlRFR0VSKSB7CisgICAgICAgICAgICBp
ZiAodGhpcy5tX3R5cGUgPT09IGdsLlVOU0lHTkVEX0lOVCkgeworICAgICAgICAgICAgICAgIHJl
bmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGds
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAg
ICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JB
MzJVSSwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5tX3R5cGUgPT09IGdsLklOVCkgeworICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZl
ciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5k
ZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAg
IGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBMzJJLCB0aGlz
Lm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeXBlIG5vdCBzdXBwb3J0ZWQnKTsKKworICAgICAgICAg
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7Cisg
ICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAg
ICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAg
ICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAg
ICB9IGVsc2UgaWYgKHRoaXMubV9mb3JtYXQgPT09IGdsLlJHQkEgfHwgLyp0aGlzLm1fZm9ybWF0
ID09PSBnbC5CR1JBIHx8Ki8gdGhpcy5tX2Zvcm1hdCA9PT0gZ2wuUkdCKSB7CisgICAgICAgICAg
ICAvLyBFbXB0eQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
Rm9ybWF0IG5vdCBzdXBwb3J0ZWQnKTsKKworICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCB3aWR0
aCwgaGVpZ2h0KTsKKworICAgICAgICAvLyBDbGVhciBjb2xvcgorICAgICAgICBpZiAodGhpcy5t
X2Zvcm1hdCA9PT0gZ2wuUkdCQSB8fCB0aGlzLm1fZm9ybWF0ID09PSBnbC5SR0IpIHsKKyAgICAg
ICAgICAgIHJlZCA9IHJuZC5nZXRGbG9hdCgpOworICAgICAgICAgICAgZ3JlZW4gPSBybmQuZ2V0
RmxvYXQoKTsKKyAgICAgICAgICAgIGJsdWUgPSBybmQuZ2V0RmxvYXQoKTsKKyAgICAgICAgICAg
IGFscGhhID0gcm5kLmdldEZsb2F0KCk7CisKKyAgICAgICAgICAgIGNvbG9yID0gW3JlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhXTsKKyAgICAgICAgICAgIC8vIENsZWFyIHRhcmdldAorICAgICAgICAg
ICAgZ2wuY2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnQ2xlYXJDb2xvcjogKCcgKyByZWQgKyAnLCAnICsgZ3JlZW4g
KyAnLCAnICsgYmx1ZSArICcpJyk7CisKKyAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVyZnYoZ2wu
Q09MT1IsIDAsIGNvbG9yKTsKKworICAgICAgICAgICAgLy8gQ2xlYXIgcmVmZXJlbmNlCisgICAg
ICAgICAgICBsZXZlbDAuY2xlYXIoY29sb3IpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9m
b3JtYXQgPT09IGdsLlJHQkFfSU5URUdFUikgeworICAgICAgICAgICAgaWYgKHRoaXMubV90eXBl
ID09PSBnbC5JTlQpIHsKKyAgICAgICAgICAgICAgICByZWQgPSBNYXRoLmFicyhybmQuZ2V0SW50
KCkpOworICAgICAgICAgICAgICAgIGdyZWVuID0gTWF0aC5hYnMocm5kLmdldEludCgpKTsKKyAg
ICAgICAgICAgICAgICBibHVlID0gTWF0aC5hYnMocm5kLmdldEludCgpKTsKKyAgICAgICAgICAg
ICAgICBhbHBoYSA9IE1hdGguYWJzKHJuZC5nZXRJbnQoKSk7CisKKyAgICAgICAgICAgICAgICBj
b2xvciA9IFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV07CisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ0NsZWFyQ29sb3I6ICgnICsgcmVkICsgJywgJyArIGdyZWVuICsgJywg
JyArIGJsdWUgKyAnKScpOworCisgICAgICAgICAgICAgICAgZ2wuY2xlYXJCdWZmZXJpdihnbC5D
T0xPUiwgMCwgY29sb3IpOworCisgICAgICAgICAgICAgICAgLy8gQ2xlYXIgcmVmZXJlbmNlCisg
ICAgICAgICAgICAgICAgbGV2ZWwwLmNsZWFyKFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0pOwor
ICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fdHlwZSA9PT0gZ2wuVU5TSUdORURfSU5UKSB7
CisgICAgICAgICAgICAgICAgcmVkID0gTWF0aC5hYnMocm5kLmdldEludCgpKTsKKyAgICAgICAg
ICAgICAgICBncmVlbiA9IE1hdGguYWJzKHJuZC5nZXRJbnQoKSk7CisgICAgICAgICAgICAgICAg
Ymx1ZSA9IE1hdGguYWJzKHJuZC5nZXRJbnQoKSk7CisgICAgICAgICAgICAgICAgYWxwaGEgPSBN
YXRoLmFicyhybmQuZ2V0SW50KCkpOworCisgICAgICAgICAgICAgICAgY29sb3IgPSBbcmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGFdOworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdDbGVhckNvbG9yOiAoJyArIHJlZCArICcsICcgKyBncmVlbiArICcsICcgKyBibHVlICsgJykn
KTsKKworICAgICAgICAgICAgICAgIGdsLmNsZWFyQnVmZmVydWl2KGdsLkNPTE9SLCAwLCBjb2xv
cik7CisKKyAgICAgICAgICAgICAgICAvLyBDbGVhciByZWZlcmVuY2UKKyAgICAgICAgICAgICAg
ICBsZXZlbDAuY2xlYXIoY29sb3IpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdUeXBlIG5vdCBzdXBwb3J0ZWQuJyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3JtYXQgbm90IHN1cHBvcnRlZC4nKTsK
KworICAgICAgICB0aGlzLnJlbmRlcihyZWZlcmVuY2UpOworCisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgcm93V2lkdGggPSAodGhpcy5tX3Jvd0xlbmd0aCA9PT0gMCA/IHRoaXMu
bV93aWR0aCA6IHRoaXMubV9yb3dMZW5ndGgpICsgdGhpcy5tX3NraXBQaXhlbHM7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcm93UGl0Y2ggPSAoYWxpZ24gPyB0aGlzLm1fYWxp
Z25tZW50ICogTWF0aC5jZWlsKHBpeGVsU2l6ZSAqIHJvd1dpZHRoIC8gdGhpcy5tX2FsaWdubWVu
dCkgOiByb3dXaWR0aCAqIHBpeGVsU2l6ZSk7CisKKyAgICAgICAgdmFyIGFycmF5VHlwZSA9IHRj
dVRleHR1cmUuZ2V0VHlwZWRBcnJheShyZWZlcmVuY2UuZ2V0Rm9ybWF0KCkudHlwZSk7CisgICAg
ICAgIC8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgcGl4ZWxEYXRhID0gbmV3IGFy
cmF5VHlwZShyb3dQaXRjaCAqICh0aGlzLm1faGVpZ2h0ICsgdGhpcy5tX3NraXBSb3dzKSk7Cisg
ICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCB0
aGlzLm1fZm9ybWF0LCB0aGlzLm1fdHlwZSwgcGl4ZWxEYXRhKTsKKworICAgICAgICBpZiAoZnJh
bWVidWZmZXIpCisgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7
CisKKyAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlcikKKyAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpOworCisgICAgICAgIHJldHVybiBwaXhlbERhdGE7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9
CisgICAgICovCisgICAgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0LnByb3RvdHlw
ZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5U
ZXh0dXJlRm9ybWF0fSAqLyB2YXIgZm9ybWF0ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVO
T1JNX0lOVDgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBpeGVsU2l6ZTsK
KyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYWxpZ247CisKKyAgICAgICAgLyoq
IEB0eXBlIHt7Zm9ybWF0OiB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQsIHBpeGVsU2l6ZTogbnVt
YmVyLCBhbGlnbjogYm9vbGVhbn19ICovIHZhciBmb3JtYXRJbmZvID0gdGhpcy5nZXRGb3JtYXRJ
bmZvKCk7CisgICAgICAgIGZvcm1hdCA9IGZvcm1hdEluZm8uZm9ybWF0OworICAgICAgICBhbGln
biA9IGZvcm1hdEluZm8uYWxpZ247CisgICAgICAgIHBpeGVsU2l6ZSA9IGZvcm1hdEluZm8ucGl4
ZWxTaXplOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGb3JtYXQ6ICcgKyB0aGlz
Lm1fZm9ybWF0ICsgJywgVHlwZTogJyArIHRoaXMubV90eXBlKTsKKworICAgICAgICAvKiogQHR5
cGUge3RjdVRleHR1cmUuVGV4dHVyZTJEfSAqLyB2YXIgcmVmZXJlbmNlID0gbmV3IHRjdVRleHR1
cmUuVGV4dHVyZTJEKGZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0KTsKKyAgICAg
ICAgcmVmZXJlbmNlLmFsbG9jTGV2ZWwoMCk7CisgICAgICAgIC8qKiBAcmV0dXJuIHt0Y3VUZXh0
dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgbGV2ZWwwID0gcmVmZXJlbmNlLmdldExldmVs
KDApOworCisgICAgICAgIHRoaXMubV9hbGlnbm1lbnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8g
KGdsLmdldFBhcmFtZXRlcihnbC5QQUNLX0FMSUdOTUVOVCkpOworICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2wuUEFDS19BTElHTk1FTlQ6ICcgKyB0aGlzLm1fYWxpZ25tZW50KTsKKwor
ICAgICAgICB0aGlzLm1fcm93TGVuZ3RoID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQ
YXJhbWV0ZXIoZ2wuUEFDS19ST1dfTEVOR1RIKSk7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdnbC5QQUNLX1JPV19MRU5HVEg6ICcgKyB0aGlzLm1fcm93TGVuZ3RoKTsKKworICAgICAg
ICB0aGlzLm1fc2tpcFJvd3MgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRl
cihnbC5QQUNLX1NLSVBfUk9XUykpOworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wu
UEFDS19TS0lQX1JPV1M6ICcgKyB0aGlzLm1fc2tpcFJvd3MpOworCisgICAgICAgIHRoaXMubV9z
a2lwUGl4ZWxzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuUEFD
S19TS0lQX1BJWEVMUykpOworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuUEFDS19T
S0lQX1BJWEVMUzogJyArIHRoaXMubV9za2lwUGl4ZWxzKTsKKworICAgICAgICBnbC52aWV3cG9y
dCgwLCAwLCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpOworCisgICAgICAgIC8qKiBAdHlw
ZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgcGl4ZWxEYXRhID0gdGhpcy5jbGVhckNvbG9yKHJl
ZmVyZW5jZSwgYWxpZ24sIHBpeGVsU2l6ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciByb3dXaWR0aCA9ICh0aGlzLm1fcm93TGVuZ3RoID09PSAwID8gdGhpcy5tX3dpZHRo
IDogdGhpcy5tX3Jvd0xlbmd0aCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
cm93UGl0Y2ggPSAoYWxpZ24gPyB0aGlzLm1fYWxpZ25tZW50ICogTWF0aC5jZWlsKHBpeGVsU2l6
ZSAqIHJvd1dpZHRoIC8gdGhpcy5tX2FsaWdubWVudCkgOiByb3dXaWR0aCAqIHBpeGVsU2l6ZSk7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGZvcm1hdEJpdERlcHRo
cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZFRocmVzaG9sZDsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBncmVlblRocmVzaG9sZDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBibHVlVGhyZXNob2xkOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGFscGhhVGhyZXNob2xkOworICAgICAgICB2YXIgcmVkQml0
cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSk7
CisgICAgICAgIHZhciBibHVlQml0cyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFy
YW1ldGVyKGdsLkJMVUVfQklUUykpOworICAgICAgICB2YXIgZ3JlZW5CaXRzID0gLyoqIEB0eXBl
IHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykpOworICAgICAgICB2
YXIgYWxwaGFCaXRzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wu
QUxQSEFfQklUUykpOworICAgICAgICAvKiogQHR5cGUgeyh0Y3VSR0JBLlJHQkF8QXJyYXk8bnVt
YmVyPil9ICovIHZhciB0aHJlc2hvbGQ7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5Q
aXhlbEJ1ZmZlckFjY2Vzc30gKi8gdmFyIHJlc3VsdDsKKyAgICAgICAgLy8gXG5vdGUgZ2wuUkdC
QV9JTlRFR0VSIHVzZXMgYWx3YXlzIHJlbmRlcmJ1ZmZlcnMgdGhhdCBhcmUgbmV2ZXIgbXVsdGlz
YW1wbGVkLiBPdGhlcndpc2UgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyB1c2VkLgorICAgICAgICBp
ZiAodGhpcy5tX2Zvcm1hdCAhPT0gZ2wuUkdCQV9JTlRFR0VSICYmIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlNBTVBMRVMpKSA+IDEpIHsKKyAgICAgICAgICAgIGZv
cm1hdEJpdERlcHRocyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRCaXREZXB0aChm
b3JtYXQpOworICAgICAgICAgICAgcmVkVGhyZXNob2xkID0gTWF0aC5jZWlsKDI1Ni4wICogKDIu
MCAvICgxIDw8IE1hdGgubWluKHJlZEJpdHMsIGZvcm1hdEJpdERlcHRoc1swXSkpKSk7CisgICAg
ICAgICAgICBncmVlblRocmVzaG9sZCA9IE1hdGguY2VpbCgyNTYuMCAqICgyLjAgLyAoMSA8PCBN
YXRoLm1pbihncmVlbkJpdHMsIGZvcm1hdEJpdERlcHRoc1sxXSkpKSk7CisgICAgICAgICAgICBi
bHVlVGhyZXNob2xkID0gTWF0aC5jZWlsKDI1Ni4wICogKDIuMCAvICgxIDw8IE1hdGgubWluKGJs
dWVCaXRzLCBmb3JtYXRCaXREZXB0aHNbMl0pKSkpOworICAgICAgICAgICAgYWxwaGFUaHJlc2hv
bGQgPSBNYXRoLmNlaWwoMjU2LjAgKiAoMi4wIC8gKDEgPDwgTWF0aC5taW4oYWxwaGFCaXRzLCBm
b3JtYXRCaXREZXB0aHNbM10pKSkpOworCisgICAgICAgICAgICByZXN1bHQgPSB0Y3VUZXh0dXJl
LlBpeGVsQnVmZmVyQWNjZXNzLm5ld0Zyb21UZXh0dXJlRm9ybWF0KGZvcm1hdCwgdGhpcy5tX3dp
ZHRoLCB0aGlzLm1faGVpZ2h0LCAxLCByb3dQaXRjaCwgMCwgcGl4ZWxEYXRhLmJ1ZmZlcik7Cisg
ICAgICAgICAgICB0aHJlc2hvbGQgPSBuZXcgdGN1UkdCQS5SR0JBKFtyZWRUaHJlc2hvbGQsIGdy
ZWVuVGhyZXNob2xkLCBibHVlVGhyZXNob2xkLCBhbHBoYVRocmVzaG9sZF0pOworICAgICAgICAg
ICAgaWYgKHRjdUltYWdlQ29tcGFyZS5iaWxpbmVhckNvbXBhcmUoJ1Jlc3VsdCcsICdSZXN1bHQn
LCBsZXZlbDAsIHJlc3VsdCwgdGhyZXNob2xkKSkKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
T3B0aW9ucygnUGFzcycsIHRydWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsJywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZm9ybWF0Qml0RGVwdGhzID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1h
dEJpdERlcHRoKGZvcm1hdCk7CisgICAgICAgICAgICByZWRUaHJlc2hvbGQgPSAyLjAgLyAoMSA8
PCBNYXRoLm1pbihyZWRCaXRzLCBmb3JtYXRCaXREZXB0aHNbMF0pKTsKKyAgICAgICAgICAgIGdy
ZWVuVGhyZXNob2xkID0gMi4wIC8gKDEgPDwgTWF0aC5taW4oZ3JlZW5CaXRzLCBmb3JtYXRCaXRE
ZXB0aHNbMV0pKTsKKyAgICAgICAgICAgIGJsdWVUaHJlc2hvbGQgPSAyLjAgLyAoMSA8PCBNYXRo
Lm1pbihibHVlQml0cywgZm9ybWF0Qml0RGVwdGhzWzJdKSk7CisgICAgICAgICAgICBhbHBoYVRo
cmVzaG9sZCA9IDIuMCAvICgxIDw8IE1hdGgubWluKGFscGhhQml0cywgZm9ybWF0Qml0RGVwdGhz
WzNdKSk7CisKKyAgICAgICAgICAgIC8vIENvbXBhcmUKKyAgICAgICAgICAgIHJlc3VsdCA9IG5l
dyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5tX3dpZHRoLAorICAgICAgICAg
ICAgICAgIGhlaWdodDogdGhpcy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICByb3dQaXRjaDog
cm93UGl0Y2gsCisgICAgICAgICAgICAgICAgZGF0YTogcGl4ZWxEYXRhLmJ1ZmZlciwKKyAgICAg
ICAgICAgICAgICBvZmZzZXQ6IHBpeGVsU2l6ZSAqIHRoaXMubV9za2lwUGl4ZWxzICsgdGhpcy5t
X3NraXBSb3dzICogcm93UGl0Y2gKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aHJl
c2hvbGQgPSBbcmVkVGhyZXNob2xkLCBncmVlblRocmVzaG9sZCwgYmx1ZVRocmVzaG9sZCwgYWxw
aGFUaHJlc2hvbGRdOworICAgICAgICAgICAgaWYgKHRjdUltYWdlQ29tcGFyZS5mbG9hdFRocmVz
aG9sZENvbXBhcmUoJ1Jlc3VsdCcsICdSZXN1bHQnLCBsZXZlbDAsIHJlc3VsdCwgdGhyZXNob2xk
KSkKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnUGFzcycsIHRydWUpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsJywg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAq
IEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAqLworICAgIGVzM2ZSZWFkUGl4
ZWxUZXN0cy5SZWFkUGl4ZWxUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdyZWFkX3BpeGVscycsICdSZWFkUGl4ZWwgdGVzdHMnKTsK
KyAgICB9OworCisgICAgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbFRlc3RzLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBl
czNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
ZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbFRlc3RzOworCisgICAgZXMzZlJlYWRQaXhlbFRl
c3RzLlJlYWRQaXhlbFRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBncm91cEFsaWdubWVudCA9
IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ2FsaWdubWVudCcsICdSZWFkIHBpeGVscyBwYWNrIGFsaWdu
bWVudCBwYXJhbWV0ZXIgdGVzdHMnKTsKKworICAgICAgICBncm91cEFsaWdubWVudC5hZGRDaGls
ZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX3VieXRlXzEnLCAn
JywgZmFsc2UsIDEsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKyAgICAg
ICAgZ3JvdXBBbGlnbm1lbnQuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4
ZWxzVGVzdCgncmdiYV91Ynl0ZV8yJywgJycsIGZhbHNlLCAyLCAwLCAwLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFKSk7CisgICAgICAgIGdyb3VwQWxpZ25tZW50LmFkZENoaWxkKG5ldyBl
czNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ3JnYmFfdWJ5dGVfNCcsICcnLCBmYWxz
ZSwgNCwgMCwgMCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSkpOworICAgICAgICBncm91
cEFsaWdubWVudC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0
KCdyZ2JhX3VieXRlXzgnLCAnJywgZmFsc2UsIDgsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUpKTsKKworICAgICAgICBncm91cEFsaWdubWVudC5hZGRDaGlsZChuZXcgZXMzZlJl
YWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX2ludF8xJywgJycsIGZhbHNlLCAxLCAw
LCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCkpOworICAgICAgICBncm91cEFsaWdubWVu
dC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX2lu
dF8yJywgJycsIGZhbHNlLCAyLCAwLCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCkpOwor
ICAgICAgICBncm91cEFsaWdubWVudC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJl
YWRQaXhlbHNUZXN0KCdyZ2JhX2ludF80JywgJycsIGZhbHNlLCA0LCAwLCAwLCAwLCBnbC5SR0JB
X0lOVEVHRVIsIGdsLklOVCkpOworICAgICAgICBncm91cEFsaWdubWVudC5hZGRDaGlsZChuZXcg
ZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX2ludF84JywgJycsIGZhbHNl
LCA4LCAwLCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCkpOworCisgICAgICAgIGdyb3Vw
QWxpZ25tZW50LmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3Qo
J3JnYmFfdWludF8xJywgJycsIGZhbHNlLCAxLCAwLCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGds
LlVOU0lHTkVEX0lOVCkpOworICAgICAgICBncm91cEFsaWdubWVudC5hZGRDaGlsZChuZXcgZXMz
ZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX3VpbnRfMicsICcnLCBmYWxzZSwg
MiwgMCwgMCwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9JTlQpKTsKKyAgICAgICAg
Z3JvdXBBbGlnbm1lbnQuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxz
VGVzdCgncmdiYV91aW50XzQnLCAnJywgZmFsc2UsIDQsIDAsIDAsIDAsIGdsLlJHQkFfSU5URUdF
UiwgZ2wuVU5TSUdORURfSU5UKSk7CisgICAgICAgIGdyb3VwQWxpZ25tZW50LmFkZENoaWxkKG5l
dyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ3JnYmFfdWludF84JywgJycsIGZh
bHNlLCA4LCAwLCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCkpOworCisg
ICAgICAgIGdyb3VwQWxpZ25tZW50LmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVh
ZFBpeGVsc1Rlc3QoJ2Nob29zZV8xJywgJycsIHRydWUsIDEsIDAsIDAsIDApKTsKKyAgICAgICAg
Z3JvdXBBbGlnbm1lbnQuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxz
VGVzdCgnY2hvb3NlXzInLCAnJywgdHJ1ZSwgMiwgMCwgMCwgMCkpOworICAgICAgICBncm91cEFs
aWdubWVudC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdj
aG9vc2VfNCcsICcnLCB0cnVlLCA0LCAwLCAwLCAwKSk7CisgICAgICAgIGdyb3VwQWxpZ25tZW50
LmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ2Nob29zZV84
JywgJycsIHRydWUsIDgsIDAsIDAsIDApKTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKGdyb3Vw
QWxpZ25tZW50KTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAq
LyB2YXIgZ3JvdXBSb3dMZW5ndGggPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdyb3dsZW5ndGgnLCAn
UmVhZCBwaXhlbHMgcm93bGVuZ3RoIHRlc3QnKTsKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRk
Q2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91Ynl0ZV8x
NycsICcnLCBmYWxzZSwgNCwgMTcsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsK
KyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5S
ZWFkUGl4ZWxzVGVzdCgncmdiYV91Ynl0ZV8xOScsICcnLCBmYWxzZSwgNCwgMTksIDAsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hp
bGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91Ynl0ZV8yMycs
ICcnLCBmYWxzZSwgNCwgMjMsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKyAg
ICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFk
UGl4ZWxzVGVzdCgncmdiYV91Ynl0ZV8yOScsICcnLCBmYWxzZSwgNCwgMjksIDAsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKworICAgICAgICBncm91cFJvd0xlbmd0aC5hZGRDaGls
ZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX2ludF8xNycsICcn
LCBmYWxzZSwgNCwgMTcsIDAsIDAsIGdsLlJHQkFfSU5URUdFUiwgZ2wuSU5UKSk7CisgICAgICAg
IGdyb3VwUm93TGVuZ3RoLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVs
c1Rlc3QoJ3JnYmFfaW50XzE5JywgJycsIGZhbHNlLCA0LCAxOSwgMCwgMCwgZ2wuUkdCQV9JTlRF
R0VSLCBnbC5JTlQpKTsKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZS
ZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV9pbnRfMjMnLCAnJywgZmFsc2UsIDQs
IDIzLCAwLCAwLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCkpOworICAgICAgICBncm91cFJvd0xl
bmd0aC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2Jh
X2ludF8yOScsICcnLCBmYWxzZSwgNCwgMjksIDAsIDAsIGdsLlJHQkFfSU5URUdFUiwgZ2wuSU5U
KSk7CisKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxU
ZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91aW50XzE3JywgJycsIGZhbHNlLCA0LCAxNywgMCwg
MCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9JTlQpKTsKKyAgICAgICAgZ3JvdXBSb3dM
ZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdi
YV91aW50XzE5JywgJycsIGZhbHNlLCA0LCAxOSwgMCwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5V
TlNJR05FRF9JTlQpKTsKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZS
ZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91aW50XzIzJywgJycsIGZhbHNlLCA0
LCAyMywgMCwgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9JTlQpKTsKKyAgICAgICAg
Z3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxz
VGVzdCgncmdiYV91aW50XzI5JywgJycsIGZhbHNlLCA0LCAyOSwgMCwgMCwgZ2wuUkdCQV9JTlRF
R0VSLCBnbC5VTlNJR05FRF9JTlQpKTsKKworICAgICAgICBncm91cFJvd0xlbmd0aC5hZGRDaGls
ZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdjaG9vc2VfMTcnLCAnJywg
dHJ1ZSwgNCwgMTcsIDAsIDApKTsKKyAgICAgICAgZ3JvdXBSb3dMZW5ndGguYWRkQ2hpbGQobmV3
IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgnY2hvb3NlXzE5JywgJycsIHRydWUs
IDQsIDE5LCAwLCAwKSk7CisgICAgICAgIGdyb3VwUm93TGVuZ3RoLmFkZENoaWxkKG5ldyBlczNm
UmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ2Nob29zZV8yMycsICcnLCB0cnVlLCA0LCAy
MywgMCwgMCkpOworICAgICAgICBncm91cFJvd0xlbmd0aC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQ
aXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdjaG9vc2VfMjknLCAnJywgdHJ1ZSwgNCwgMjksIDAs
IDApKTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKGdyb3VwUm93TGVuZ3RoKTsKKworICAgICAg
ICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZ3JvdXBTa2lwID0gdGN1
VGVzdENhc2UubmV3VGVzdCgnc2tpcCcsICdSZWFkIHBpeGVscyBza2lwIHBpeGVscyBhbmQgcm93
cyB0ZXN0Jyk7CisgICAgICAgIGdyb3VwU2tpcC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRl
c3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX3VieXRlXzBfMycsICcnLCBmYWxzZSwgNCwgMTcsIDAs
IDMsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKyAgICAgICAgZ3JvdXBTa2lwLmFkZENo
aWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ3JnYmFfdWJ5dGVfM18w
JywgJycsIGZhbHNlLCA0LCAxNywgMywgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSkpOwor
ICAgICAgICBncm91cFNraXAuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4
ZWxzVGVzdCgncmdiYV91Ynl0ZV8zXzMnLCAnJywgZmFsc2UsIDQsIDE3LCAzLCAzLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFKSk7CisgICAgICAgIGdyb3VwU2tpcC5hZGRDaGlsZChuZXcgZXMz
ZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX3VieXRlXzNfNScsICcnLCBmYWxz
ZSwgNCwgMTcsIDMsIDUsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpKTsKKworICAgICAgICBn
cm91cFNraXAuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgn
cmdiYV9pbnRfMF8zJywgJycsIGZhbHNlLCA0LCAxNywgMCwgMywgZ2wuUkdCQV9JTlRFR0VSLCBn
bC5JTlQpKTsKKyAgICAgICAgZ3JvdXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVz
dHMuUmVhZFBpeGVsc1Rlc3QoJ3JnYmFfaW50XzNfMCcsICcnLCBmYWxzZSwgNCwgMTcsIDMsIDAs
IGdsLlJHQkFfSU5URUdFUiwgZ2wuSU5UKSk7CisgICAgICAgIGdyb3VwU2tpcC5hZGRDaGlsZChu
ZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX2ludF8zXzMnLCAnJywg
ZmFsc2UsIDQsIDE3LCAzLCAzLCBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCkpOworICAgICAgICBn
cm91cFNraXAuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgn
cmdiYV9pbnRfM181JywgJycsIGZhbHNlLCA0LCAxNywgMywgNSwgZ2wuUkdCQV9JTlRFR0VSLCBn
bC5JTlQpKTsKKworICAgICAgICBncm91cFNraXAuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxU
ZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91aW50XzBfMycsICcnLCBmYWxzZSwgNCwgMTcsIDAs
IDMsIGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5TSUdORURfSU5UKSk7CisgICAgICAgIGdyb3VwU2tp
cC5hZGRDaGlsZChuZXcgZXMzZlJlYWRQaXhlbFRlc3RzLlJlYWRQaXhlbHNUZXN0KCdyZ2JhX3Vp
bnRfM18wJywgJycsIGZhbHNlLCA0LCAxNywgMywgMCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJ
R05FRF9JTlQpKTsKKyAgICAgICAgZ3JvdXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVs
VGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ3JnYmFfdWludF8zXzMnLCAnJywgZmFsc2UsIDQsIDE3LCAz
LCAzLCBnbC5SR0JBX0lOVEVHRVIsIGdsLlVOU0lHTkVEX0lOVCkpOworICAgICAgICBncm91cFNr
aXAuYWRkQ2hpbGQobmV3IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxzVGVzdCgncmdiYV91
aW50XzNfNScsICcnLCBmYWxzZSwgNCwgMTcsIDMsIDUsIGdsLlJHQkFfSU5URUdFUiwgZ2wuVU5T
SUdORURfSU5UKSk7CisKKyAgICAgICAgZ3JvdXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBp
eGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ2Nob29zZV8wXzMnLCAnJywgdHJ1ZSwgNCwgMTcsIDAs
IDMpKTsKKyAgICAgICAgZ3JvdXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMu
UmVhZFBpeGVsc1Rlc3QoJ2Nob29zZV8zXzAnLCAnJywgdHJ1ZSwgNCwgMTcsIDMsIDApKTsKKyAg
ICAgICAgZ3JvdXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVs
c1Rlc3QoJ2Nob29zZV8zXzMnLCAnJywgdHJ1ZSwgNCwgMTcsIDMsIDMpKTsKKyAgICAgICAgZ3Jv
dXBTa2lwLmFkZENoaWxkKG5ldyBlczNmUmVhZFBpeGVsVGVzdHMuUmVhZFBpeGVsc1Rlc3QoJ2No
b29zZV8zXzUnLCAnJywgdHJ1ZSwgNCwgMTcsIDMsIDUpKTsKKworICAgICAgICB0aGlzLmFkZENo
aWxkKGdyb3VwU2tpcCk7CisgICAgfTsKKworICAgIC8qKgorICAgICogUnVuIHRlc3QKKyAgICAq
IEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICAgICovCisgICAgZXMz
ZlJlYWRQaXhlbFRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICAgICAgZ2wgPSBj
b250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgICAgICB2
YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgICAgIHN0YXRlLnNldFJvb3QobmV3
IGVzM2ZSZWFkUGl4ZWxUZXN0cy5SZWFkUGl4ZWxUZXN0cygpKTsKKworICAgICAgICAvL1NldCB1
cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRD
dXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgICAgICBkZXNj
cmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RDYXNl
LnJ1blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlJlYWRQaXhlbFRlc3RzLnJ1
biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5h
dGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZTYW1wbGVyT2JqZWN0VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNhbXBsZXJPYmplY3RUZXN0
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNzFhMjE4NmFlZjRlMzM0OTY2NmNmZTU5MjRlYjgxZTY0NzI3YjU0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTYW1wbGVyT2JqZWN0VGVzdHMuanMK
QEAgLTAsMCArMSwzMTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1
YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citn
b29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNhbXBsZXJPYmplY3RUZXN0cycpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVp
cmUoJ21vZHVsZXMuc2hhcmVkLmdsc1NhbXBsZXJPYmplY3RUZXN0Jyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisKK3ZhciBlczNmU2FtcGxlck9iamVjdFRlc3RzID0gZnVuY3Rpb25hbC5n
bGVzMy5lczNmU2FtcGxlck9iamVjdFRlc3RzOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBnbHNTYW1wbGVyT2JqZWN0VGVzdCA9IG1vZHVsZXMu
c2hhcmVkLmdsc1NhbXBsZXJPYmplY3RUZXN0OworCisgICAgLyoqIEB0eXBlIHtXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0fSAqLyB2YXIgZ2w7CisKKyAgICAvLyBUT0RPOiBpbXBsZW1lbnQgZ2xzU2Ft
cGxlck9iamVjdFRlc3QgYW5kIHZhbGlkYXRlIGNvbnN0cnVjdG9ycworICAgIGVzM2ZTYW1wbGVy
T2JqZWN0VGVzdHMuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgdGVzdEdyb3VwID0g
dGN1VGVzdENhc2UucnVubmVyLnRlc3RDYXNlczsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxn
bHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYz59ICovIHZhciBzaW1wbGVUZXN0Q2FzZXMgPSBb
CisgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2RpZmZfd3Jh
cF90JywgJ0RpZmZlcmVudCBnbC5URVhUVVJFX1dSQVBfVCcsIGdsLlRFWFRVUkVfMkQsCisgICAg
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVB
UkVTVCwgZ2wuTkVBUkVTVCwgZ2wuTUlSUk9SRURfUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVj
dFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfcycs
ICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1MnLCBnbC5URVhUVVJFXzJELAorICAgICAgICAg
ICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1Qs
IGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURfUkVQRUFULCBnbC5SRVBFQVQsIC0x
MDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0
LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBF
QVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl93cmFwX3InLCAnRGlm
ZmVyZW50IGdsLlRFWFRVUkVfV1JBUF9SJywgZ2wuVEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAg
ICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5O
RUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURfUkVQRUFULCAtMTAwMC4w
LCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1w
bGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBn
bC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBu
ZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2RpZmZfbWluX2ZpbHRlcicsICdEaWZm
ZXJlbnQgZ2wuVEVYVFVSRV9NSU5fRklMVEVSJywgZ2wuVEVYVFVSRV8yRCwKKyAgICAgICAgICAg
ICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5MSU5FQVIsIGds
Lk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAu
MCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3Rh
dGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9tYWdfZmlsdGVyJywgJ0RpZmZlcmVudCBn
bC5URVhUVVJFX01BR19GSUxURVInLCBnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgIG5l
dyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLkxJTkVB
UiwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAg
ICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5O
RUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAw
MC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21heF9sb2QnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVf
TUFYX0xPRCcsIGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVB
UkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwK
KyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShn
bC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAtOTk5LjApCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21pbl9sb2QnLCAnRGlm
ZmVyZW50IGdsLlRFWFRVUkVfTUlOX0xPRCcsIGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAg
ICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBN
QVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwg
MC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5T
YW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJF
UEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIDEwMC4wLCAxMDAwLjApCisgICAgICAgICAgICAp
CisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8gdmFyIHNpbXBsZVRleHR1cmUyRCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3NpbmdsZV90ZXhf
MmQnLCAnU2ltcGxlIDJEIHRleHR1cmUgd2l0aCBzYW1wbGVyJyk7CisKKyAgICAgICAgZm9yICh2
YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBzaW1wbGVUZXN0Q2FzZXMubGVuZ3RoOyB0ZXN0TmR4
KyspCisgICAgICAgICAgICBzaW1wbGVUZXh0dXJlMkQuYWRkQ2hpbGQobmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVzdChzaW1wbGVUZXN0Q2FzZXNbdGVzdE5keF0pKTsK
KworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoc2ltcGxlVGV4dHVyZTJEKTsKKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjPn0gKi8gdmFy
IG11bHRpVGVzdENhc2VzID0gWworICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0
LlRlc3RTcGVjKCdkaWZmX3dyYXBfdCcsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1QnLCBn
bC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRl
c3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5NSVJST1JFRF9SRVBF
QVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAg
ICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNU
LCBnbC5ORUFSRVNULCBnbC5NSVJST1JFRF9SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAt
MTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVj
dFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfcycs
ICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1MnLCBnbC5URVhUVVJFXzJELAorICAgICAgICAg
ICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFS
RVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFU
LCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9i
amVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQs
IGdsLk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAg
ICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5O
RUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAw
MC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfcicsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9X
UkFQX1InLCBnbC5URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxl
ck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBF
QVQsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURfUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAg
ICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShn
bC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURf
UkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5S
RVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZm
X21pbl9maWx0ZXInLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUicsIGdsLlRFWFRV
UkVfMkQsCisgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1w
bGluZ1N0YXRlKGdsLkxJTkVBUiwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTElORUFSLCBnbC5ORUFSRVNULCBnbC5S
RVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAg
ICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFS
RVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4w
LCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmpl
Y3RUZXN0LlRlc3RTcGVjKCdkaWZmX21hZ19maWx0ZXInLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVf
TUFHX0ZJTFRFUicsIGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLkxJTkVBUiwgZ2wu
UkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAg
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVB
UkVTVCwgZ2wuTElORUFSLCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4w
LCAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3Qu
U2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21heF9sb2QnLCAnRGlm
ZmVyZW50IGdsLlRFWFRVUkVfTUFYX0xPRCcsIGdsLlRFWFRVUkVfMkQsCisgICAgICAgICAgICAg
ICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1Rf
TUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBF
QVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5F
QVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCks
CisgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0
YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wu
UkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIC05OTkuMCkKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2RpZmZfbWluX2xvZCcs
ICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9NSU5fTE9EJywgZ2wuVEVYVFVSRV8yRCwKKyAgICAgICAg
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVB
UkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxl
ck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5O
RUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAwLjAsIDEwMDAuMCksCisg
ICAgICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQ
RUFULCBnbC5SRVBFQVQsIDEwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApCisgICAgICAgIF07
CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIG11bHRp
VGV4dHVyZTJEID0gdGN1VGVzdENhc2UubmV3VGVzdCgnbXVsdGlfdGV4XzJkJywgJ011bHRpcGxl
IHRleHR1cmUgdW5pdHMgMkQgdGV4dHVyZSB3aXRoIHNhbXBsZXInKTsKKworICAgICAgICBmb3Ig
KHZhciB0ZXN0TmR4ID0gMDsgdGVzdE5keCA8IG11bHRpVGVzdENhc2VzLmxlbmd0aDsgdGVzdE5k
eCsrKQorICAgICAgICAgICAgbXVsdGlUZXh0dXJlMkQuYWRkQ2hpbGQobmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJUZXN0KG11bHRpVGVzdENhc2VzW3Rlc3ROZHhd
KSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG11bHRpVGV4dHVyZTJEKTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjPn0gKi8g
dmFyIHNpbXBsZVRlc3RDYXNlczNEID0gWworICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRl
c3QuVGVzdFNwZWMoJ2RpZmZfd3JhcF90JywgJ0RpZmZlcmVudCBnbC5URVhUVVJFX1dSQVBfVCcs
IGdsLlRFWFRVUkVfM0QsCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0
LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuTUlSUk9SRURfUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAg
ICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5O
RUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjAp
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRl
c3RTcGVjKCdkaWZmX3dyYXBfcycsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1MnLCBnbC5U
RVhUVVJFXzNELAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1w
bGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURf
UkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3
IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVT
VCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3Bl
YygnZGlmZl93cmFwX3InLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfV1JBUF9SJywgZ2wuVEVYVFVS
RV8zRCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdT
dGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuTUlS
Uk9SRURfUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGds
LlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCkKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2Rp
ZmZfbWluX2ZpbHRlcicsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9NSU5fRklMVEVSJywgZ2wuVEVY
VFVSRV8zRCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxp
bmdTdGF0ZShnbC5MSU5FQVIsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5S
RVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9tYWdf
ZmlsdGVyJywgJ0RpZmZlcmVudCBnbC5URVhUVVJFX01BR19GSUxURVInLCBnbC5URVhUVVJFXzNE
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1QsIGdsLkxJTkVBUiwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwg
LTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRl
c3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJF
UEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21heF9sb2QnLCAn
RGlmZmVyZW50IGdsLlRFWFRVUkVfTUFYX0xPRCcsIGdsLlRFWFRVUkVfM0QsCisgICAgICAgICAg
ICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVF9N
SVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVj
dFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5ORUFSRVNU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAtOTk5LjApCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVj
KCdkaWZmX21pbl9sb2QnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUlOX0xPRCcsIGdsLlRFWFRV
UkVfM0QsCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5n
U3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBn
bC5SRVBFQVQsIGdsLlJFUEVBVCwgMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBn
bHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJF
U1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIDEwMC4wLCAx
MDAwLjApCisgICAgICAgICAgICApCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHt0
Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIHNpbXBsZVRleHR1cmUzRCA9IHRjdVRlc3RDYXNl
Lm5ld1Rlc3QoJ3NpbmdsZV90ZXhfM2QnLCAnU2ltcGxlIDNEIHRleHR1cmUgd2l0aCBzYW1wbGVy
Jyk7CisKKyAgICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBzaW1wbGVUZXN0
Q2FzZXMzRC5sZW5ndGg7IHRlc3ROZHgrKykKKyAgICAgICAgICAgIHNpbXBsZVRleHR1cmUzRC5h
ZGRDaGlsZChuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0KHNpbXBs
ZVRlc3RDYXNlczNEW3Rlc3ROZHhdKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKHNp
bXBsZVRleHR1cmUzRCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5UZXN0U3BlYz59ICovIHZhciBtdWx0aVRlc3RDYXNlczNEID0gWworICAgICAgICAg
ICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfdCcsICdEaWZm
ZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1QnLCBnbC5URVhUVVJFXzNELAorICAgICAgICAgICAgICAg
IG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5F
QVJFU1QsIGdsLk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAs
IDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBs
aW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuTUlSUk9SRURfUkVQRUFULCBnbC5S
RVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcg
Z2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVj
KCdkaWZmX3dyYXBfcycsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9XUkFQX1MnLCBnbC5URVhUVVJF
XzNELAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0
YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURfUkVQRUFU
LCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wu
UkVQRUFULCBnbC5NSVJST1JFRF9SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwK
KyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShn
bC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAt
MTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBs
ZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfcicsICdEaWZmZXJlbnQgZ2wuVEVYVFVS
RV9XUkFQX1InLCBnbC5URVhUVVJFXzNELAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULCBnbC5NSVJST1JFRF9SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAg
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVB
UkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVB
VCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVj
dFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21pbl9maWx0
ZXInLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUicsIGdsLlRFWFRVUkVfM0QsCisg
ICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wu
TElORUFSLCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAw
MC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5T
YW1wbGluZ1N0YXRlKGdsLkxJTkVBUiwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQs
IGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5S
RVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZm
X21hZ19maWx0ZXInLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUicsIGdsLlRFWFRV
UkVfM0QsCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5n
U3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTElORUFSLCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQ
RUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLkxJTkVBUiwgZ2wuUkVQRUFULCBn
bC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBu
ZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFS
RVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RT
cGVjKCdkaWZmX21heF9sb2QnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUFYX0xPRCcsIGdsLlRF
WFRVUkVfM0QsCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBs
aW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAg
ICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNUX01JUE1B
UF9ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAt
MTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVz
dC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGds
LlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIC05OTkuMCkKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2Rp
ZmZfbWluX2xvZCcsICdEaWZmZXJlbnQgZ2wuVEVYVFVSRV9NSU5fTE9EJywgZ2wuVEVYVFVSRV8z
RCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0
ZShnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJF
UEVBVCwgZ2wuUkVQRUFULCAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwg
Z2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgMC4wLCAxMDAwLjAp
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQ
RUFULCBnbC5SRVBFQVQsIDEwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApCisgICAgICAgIF07
CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIG11bHRp
VGV4dHVyZTNEID0gdGN1VGVzdENhc2UubmV3VGVzdCgnbXVsdGlfdGV4XzNkJywgJ011bHRpcGxl
IHRleHR1cmUgdW5pdHMgM0QgdGV4dHVyZSB3aXRoIHNhbXBsZXInKTsKKworICAgICAgICBmb3Ig
KHZhciB0ZXN0TmR4ID0gMDsgdGVzdE5keCA8IG11bHRpVGVzdENhc2VzM0QubGVuZ3RoOyB0ZXN0
TmR4KyspCisgICAgICAgICAgICBtdWx0aVRleHR1cmUzRC5hZGRDaGlsZChuZXcgZ2xzU2FtcGxl
ck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QobXVsdGlUZXN0Q2FzZXMzRFt0ZXN0
TmR4XSkpOworCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChtdWx0aVRleHR1cmUzRCk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYz59
ICovIHZhciBzaW1wbGVUZXN0Q2FzZXNDdWJlID0gWworICAgICAgICAgICAgbmV3IGdsc1NhbXBs
ZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX3dyYXBfdCcsICdEaWZmZXJlbnQgZ2wuVEVYVFVS
RV9XUkFQX1QnLCBnbC5URVhUVVJFX0NVQkVfTUFQLAorICAgICAgICAgICAgICAgIG5ldyBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGds
Lk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCks
CisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUo
Z2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwg
LTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNTYW1w
bGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl93cmFwX3MnLCAnRGlmZmVyZW50IGdsLlRFWFRV
UkVfV1JBUF9TJywgZ2wuVEVYVFVSRV9DVUJFX01BUCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xz
U2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBn
bC5SRVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjAp
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQs
IC0xMDAwLjAsIDEwMDAuMCkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2RpZmZfd3JhcF9yJywgJ0RpZmZlcmVudCBnbC5URVhU
VVJFX1dSQVBfUicsIGdsLlRFWFRVUkVfQ1VCRV9NQVAsCisgICAgICAgICAgICAgICAgbmV3IGds
c1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwg
Z2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVCwgLTEwMDAuMCwgMTAwMC4w
KSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0
ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFU
LCAtMTAwMC4wLCAxMDAwLjApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21pbl9maWx0ZXInLCAnRGlmZmVyZW50IGds
LlRFWFRVUkVfTUlOX0ZJTFRFUicsIGdsLlRFWFRVUkVfQ1VCRV9NQVAsCisgICAgICAgICAgICAg
ICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTElORUFSLCBnbC5O
RUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjAp
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQs
IC0xMDAwLjAsIDEwMDAuMCkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuVGVzdFNwZWMoJ2RpZmZfbWFnX2ZpbHRlcicsICdEaWZmZXJlbnQgZ2wu
VEVYVFVSRV9NQUdfRklMVEVSJywgZ2wuVEVYVFVSRV9DVUJFX01BUCwKKyAgICAgICAgICAgICAg
ICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5M
SU5FQVIsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCks
CisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUo
Z2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwg
LTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNTYW1w
bGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9tYXhfbG9kJywgJ0RpZmZlcmVudCBnbC5URVhU
VVJFX01BWF9MT0QnLCBnbC5URVhUVVJFX0NVQkVfTUFQLAorICAgICAgICAgICAgICAgIG5ldyBn
bHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJF
U1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAs
IDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBs
aW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgLTk5OS4wKQorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9taW5f
bG9kJywgJ0RpZmZlcmVudCBnbC5URVhUVVJFX01JTl9MT0QnLCBnbC5URVhUVVJFX0NVQkVfTUFQ
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQ
RUFULCBnbC5SRVBFQVQsIDAuMCwgMTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBn
bC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAxMDAuMCwgMTAwMC4w
KQorICAgICAgICAgICAgKQorICAgICAgICBdOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVz
dENhc2UuRGVxcFRlc3R9ICovIHZhciBzaW1wbGVUZXh0dXJlQ3ViZSA9IHRjdVRlc3RDYXNlLm5l
d1Rlc3QoJ3NpbmdsZV9jdWJlbWFwJywgJ1NpbXBsZSBjdWJlbWFwIHRleHR1cmUgd2l0aCBzYW1w
bGVyJyk7CisKKyAgICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBzaW1wbGVU
ZXN0Q2FzZXNDdWJlLmxlbmd0aDsgdGVzdE5keCsrKQorICAgICAgICAgICAgc2ltcGxlVGV4dHVy
ZUN1YmUuYWRkQ2hpbGQobmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVz
dChzaW1wbGVUZXN0Q2FzZXNDdWJlW3Rlc3ROZHhdKSk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFk
ZENoaWxkKHNpbXBsZVRleHR1cmVDdWJlKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGds
c1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjPn0gKi8gdmFyIG11bHRpVGVzdENhc2VzQ3ViZSA9
IFsKKyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl93
cmFwX3QnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfV1JBUF9UJywgZ2wuVEVYVFVSRV9DVUJFX01B
UCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0
ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5NSVJST1JFRF9SRVBFQVQsIGdsLlJFUEVBVCwg
Z2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1w
bGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLk1J
UlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisg
ICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wu
TkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEw
MDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl93cmFwX3MnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVf
V1JBUF9TJywgZ2wuVEVYVFVSRV9DVUJFX01BUCwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5S
RVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAor
ICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGds
Lk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURfUkVQRUFULCBnbC5S
RVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl93cmFw
X3InLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfV1JBUF9SJywgZ2wuVEVYVFVSRV9DVUJFX01BUCwK
KyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShn
bC5ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgZ2wuTUlSUk9SRURf
UkVQRUFULCAtMTAwMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULCBnbC5NSVJST1JFRF9SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAg
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVB
UkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAu
MCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9taW5fZmlsdGVyJywgJ0RpZmZlcmVudCBnbC5URVhUVVJF
X01JTl9GSUxURVInLCBnbC5URVhUVVJFX0NVQkVfTUFQLAorICAgICAgICAgICAgICAgIG5ldyBn
bHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLkxJTkVBUiwgZ2wuTkVBUkVTVCwg
Z2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKSwKKyAgICAg
ICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShnbC5MSU5F
QVIsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIC0xMDAwLjAs
IDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBs
aW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGds
LlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5l
dyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9tYWdfZmlsdGVyJywgJ0RpZmZl
cmVudCBnbC5URVhUVVJFX01BR19GSUxURVInLCBnbC5URVhUVVJFX0NVQkVfTUFQLAorICAgICAg
ICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJF
U1QsIGdsLkxJTkVBUiwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwg
MTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxp
bmdTdGF0ZShnbC5ORUFSRVNULCBnbC5MSU5FQVIsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5S
RVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJP
YmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFU
LCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0U3BlYygnZGlmZl9tYXhf
bG9kJywgJ0RpZmZlcmVudCBnbC5URVhUVVJFX01BWF9MT0QnLCBnbC5URVhUVVJFX0NVQkVfTUFQ
LAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRl
KGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQ
RUFULCBnbC5SRVBFQVQsIC0xMDAwLjAsIDEwMDAuMCksCisgICAgICAgICAgICAgICAgbmV3IGds
c1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUoZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIGdsLlJFUEVBVCwgLTEwMDAuMCwg
MTAwMC4wKSwKKyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxp
bmdTdGF0ZShnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQs
IGdsLlJFUEVBVCwgZ2wuUkVQRUFULCAtMTAwMC4wLCAtOTk5LjApCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjKCdkaWZmX21pbl9s
b2QnLCAnRGlmZmVyZW50IGdsLlRFWFRVUkVfTUlOX0xPRCcsIGdsLlRFWFRVUkVfQ1VCRV9NQVAs
CisgICAgICAgICAgICAgICAgbmV3IGdsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGUo
Z2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgZ2wuTkVBUkVTVCwgZ2wuUkVQRUFULCBnbC5SRVBF
QVQsIGdsLlJFUEVBVCwgMC4wLCAxMDAwLjApLAorICAgICAgICAgICAgICAgIG5ldyBnbHNTYW1w
bGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlKGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIGds
Lk5FQVJFU1QsIGdsLlJFUEVBVCwgZ2wuUkVQRUFULCBnbC5SRVBFQVQsIDAuMCwgMTAwMC4wKSwK
KyAgICAgICAgICAgICAgICBuZXcgZ2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZShn
bC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5ORUFSRVNULCBnbC5SRVBFQVQsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULCAxMDAuMCwgMTAwMC4wKQorICAgICAgICAgICAgKQorICAgICAgICBdOwor
CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBtdWx0aVRl
eHR1cmVDdWJlID0gdGN1VGVzdENhc2UubmV3VGVzdCgnbXVsdGlfY3ViZW1hcCcsICdNdWx0aXBs
ZSB0ZXh0dXJlIHVuaXRzIGN1YmVtYXAgdGV4dHVyZXMgd2l0aCBzYW1wbGVyJyk7CisKKyAgICAg
ICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCBtdWx0aVRlc3RDYXNlc0N1YmUubGVu
Z3RoOyB0ZXN0TmR4KyspCisgICAgICAgICAgICBtdWx0aVRleHR1cmVDdWJlLmFkZENoaWxkKG5l
dyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdChtdWx0aVRlc3RD
YXNlc0N1YmVbdGVzdE5keF0pKTsKKworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobXVsdGlU
ZXh0dXJlQ3ViZSk7CisgICAgfTsKKworICAgIGVzM2ZTYW1wbGVyT2JqZWN0VGVzdHMucnVuID0g
ZnVuY3Rpb24oY29udGV4dCkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8vU2V0
IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgIHZhciB0ZXN0TmFtZSA9ICdzYW1wbGVy
X29iamVjdCc7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnU2FtcGxlciBPYmplY3Qg
VGVzdHMnOworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAg
ICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9vdCh0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwpKTsKKworICAg
ICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgor
ICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlwdGlv
bih0ZXN0RGVzY3JpcHRpb24pOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0NyZWF0
ZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICBlczNmU2FtcGxlck9iamVjdFRlc3RzLmluaXQoKTsK
KyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1
blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlNhbXBsZXJPYmplY3RUZXN0cy5y
dW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWlu
YXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9l
czNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2FtcGxlclN0YXRl
UXVlcnlUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmNmZGUxMmFhZTBhYjM2YzY0MWE1ZDVmZjE5MTBi
NzBjYjNhYWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTYW1wbGVyU3RhdGVR
dWVyeVRlc3RzLmpzCkBAIC0wLDAgKzEsMjA1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRy
YXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJp
Z2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOwor
ICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisg
KgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAq
CisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTYW1wbGVyU3Rh
dGVRdWVyeVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsK
K2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScpOworZ29vZy5yZXF1
aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rp
b24oKSB7Cit2YXIgZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBnbHNTdGF0ZVF1ZXJ5ID0gbW9kdWxlcy5zaGFyZWQu
Z2xzU3RhdGVRdWVyeTsKK3ZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkFw
aUNhc2U7Cit2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsK
KwordmFyIHNldFBhcmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgIGNo
aWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hp
bGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cit9OworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTYW1wbGVy
U3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24p
IHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24s
IGdsKTsKKyAgICAvKiogQHR5cGUge1dlYkdMU2FtcGxlcn0gKi8gdGhpcy5tX3NhbXBsZXI7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVyQ2Fz
ZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLlNh
bXBsZXJDYXNlLnByb3RvdHlwZS50ZXN0U2FtcGxlciA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93
IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4gUGxlYXNlIG92ZXJyaWRlLicpOworfTsKKwor
ZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlckNhc2UucHJvdG90eXBlLnRlc3QgPSBm
dW5jdGlvbigpIHsKKyAgICB0aGlzLm1fc2FtcGxlciA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKKwor
ICAgIHRoaXMudGVzdFNhbXBsZXIoKTsKKworICAgIGdsLmRlbGV0ZVNhbXBsZXIodGhpcy5tX3Nh
bXBsZXIpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmU2Ft
cGxlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVyQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1
ZU5hbWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsVmFsdWUKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gdmFsdWVSYW5nZQorICovCitlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5TYW1w
bGVyTW9kZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdmFsdWVOYW1lLCBpbml0
aWFsVmFsdWUsIHZhbHVlUmFuZ2UpIHsKKyAgICBlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5T
YW1wbGVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uKTsKKyAgICB0aGlzLm1fdmFs
dWVOYW1lID0gdmFsdWVOYW1lOworICAgIHRoaXMubV9pbml0aWFsVmFsdWUgPSBpbml0aWFsVmFs
dWU7CisgICAgdGhpcy5tX3ZhbHVlUmFuZ2UgPSB2YWx1ZVJhbmdlOworfTsKKworc2V0UGFyZW50
Q2xhc3MoZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlck1vZGVDYXNlLCBlczNmU2Ft
cGxlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVyQ2FzZSk7CisKK2VzM2ZTYW1wbGVyU3RhdGVRdWVy
eVRlc3RzLlNhbXBsZXJNb2RlQ2FzZS5wcm90b3R5cGUudGVzdFNhbXBsZXIgPSBmdW5jdGlvbigp
IHsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5U2FtcGxlcih0aGlzLm1fc2Ft
cGxlciwgdGhpcy5tX3ZhbHVlTmFtZSwgdGhpcy5tX2luaXRpYWxWYWx1ZSkpOworCisgICAgZm9y
ICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX3ZhbHVlUmFuZ2UubGVuZ3RoOyArK25keCkgewor
ICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaSh0aGlzLm1fc2FtcGxlciwgdGhpcy5tX3ZhbHVl
TmFtZSwgdGhpcy5tX3ZhbHVlUmFuZ2VbbmR4XSk7CisKKyAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeVNhbXBsZXIodGhpcy5tX3NhbXBsZXIsIHRoaXMubV92YWx1ZU5hbWUs
IHRoaXMubV92YWx1ZVJhbmdlW25keF0pKTsKKyAgICB9CisKKyAgICAvL2NoZWNrIHVuaXQgY29u
dmVyc2lvbnMgd2l0aCBmbG9hdAorCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5t
X3ZhbHVlUmFuZ2UubGVuZ3RoOyArK25keCkgeworICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVy
Zih0aGlzLm1fc2FtcGxlciwgdGhpcy5tX3ZhbHVlTmFtZSwgdGhpcy5tX3ZhbHVlUmFuZ2VbbmR4
XSk7CisKKyAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNhbXBsZXIodGhp
cy5tX3NhbXBsZXIsIHRoaXMubV92YWx1ZU5hbWUsIHRoaXMubV92YWx1ZVJhbmdlW25keF0pKTsK
KyAgICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZTYW1w
bGVyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IGxvZFRh
cmdldAorICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxWYWx1ZQorICovCitlczNmU2FtcGxlclN0
YXRlUXVlcnlUZXN0cy5TYW1wbGVyTE9EQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9u
LCBsb2RUYXJnZXQsIGluaXRpYWxWYWx1ZSkgeworICAgIGVzM2ZTYW1wbGVyU3RhdGVRdWVyeVRl
c3RzLlNhbXBsZXJDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworICAgIHRoaXMu
bV9sb2RUYXJnZXQgPSBsb2RUYXJnZXQ7CisgICAgdGhpcy5tX2luaXRpYWxWYWx1ZSA9IGluaXRp
YWxWYWx1ZTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3Rz
LlNhbXBsZXJMT0RDYXNlLCBlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVyQ2FzZSk7
CisKK2VzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJMT0RDYXNlLnByb3RvdHlwZS50
ZXN0U2FtcGxlciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFu
ZG9tKDB4YWJjZGVmKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlTYW1w
bGVyKHRoaXMubV9zYW1wbGVyLCB0aGlzLm1fbG9kVGFyZ2V0LCB0aGlzLm1faW5pdGlhbFZhbHVl
KSk7CisgICAgdmFyIG51bUl0ZXJhdGlvbnMgPSA2MDsKKyAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBudW1JdGVyYXRpb25zOyArK25keCkgeworICAgICAgICB2YXIgcmVmID0gcm5kLmdldEZs
b2F0KC02NDAwMCwgNjQwMDApOworCisgICAgICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJmKHRoaXMu
bV9zYW1wbGVyLCB0aGlzLm1fbG9kVGFyZ2V0LCByZWYpOworCisgICAgICAgIHRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnlTYW1wbGVyKHRoaXMubV9zYW1wbGVyLCB0aGlzLm1fbG9kVGFy
Z2V0LCByZWYpKTsKKyAgICB9CisKKyAgICAvLyBjaGVjayB1bml0IGNvbnZlcnNpb25zIHdpdGgg
aW50CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1JdGVyYXRpb25zOyArK25keCkg
eworICAgICAgICB2YXIgcmVmID0gcm5kLmdldEludCgtNjQwMDAsIDY0MDAwKTsKKworICAgICAg
ICBnbC5zYW1wbGVyUGFyYW1ldGVyaSh0aGlzLm1fc2FtcGxlciwgdGhpcy5tX2xvZFRhcmdldCwg
cmVmKTsKKworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5U2FtcGxlcih0
aGlzLm1fc2FtcGxlciwgdGhpcy5tX2xvZFRhcmdldCwgcmVmKSk7CisgICAgfQorfTsKKworLyoq
CisqIEBjb25zdHJ1Y3RvcgorKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisqLwor
ZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlclN0YXRlUXVlcnlUZXN0cyA9IGZ1bmN0
aW9uKCkgeworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3NhbXBsZXInLCAn
U2FtcGxlciBTdGF0ZSBRdWVyeSB0ZXN0cycpOworfTsKKworZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5
VGVzdHMuU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0
cy5TYW1wbGVyU3RhdGVRdWVyeVRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTYW1w
bGVyU3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHM7CisKK2VzM2ZTYW1wbGVy
U3RhdGVRdWVyeVRlc3RzLlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMucHJvdG90eXBlLmluaXQgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgd3JhcFZhbHVlcyA9IFtnbC5DTEFNUF9UT19FREdFLCBnbC5S
RVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVF07CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNh
bXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlck1vZGVDYXNlKCdzYW1wbGVyX3RleHR1cmVfd3Jh
cF9zJyAsICdURVhUVVJFX1dSQVBfUycsCisgICAgICAgIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5S
RVBFQVQsIHdyYXBWYWx1ZXMpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2FtcGxlclN0
YXRlUXVlcnlUZXN0cy5TYW1wbGVyTW9kZUNhc2UoJ3NhbXBsZXJfdGV4dHVyZV93cmFwX3QnICwg
J1RFWFRVUkVfV1JBUF9UJywKKyAgICAgICAgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCwg
d3JhcFZhbHVlcykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTYW1wbGVyU3RhdGVRdWVy
eVRlc3RzLlNhbXBsZXJNb2RlQ2FzZSgnc2FtcGxlcl90ZXh0dXJlX3dyYXBfcicgLCAnVEVYVFVS
RV9XUkFQX1InLAorICAgICAgICBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuUkVQRUFULCB3cmFwVmFs
dWVzKSk7CisKKyAgICB2YXIgbWFnVmFsdWVzID0gW2dsLk5FQVJFU1QsIGdsLkxJTkVBUl07Cisg
ICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlck1v
ZGVDYXNlKCdzYW1wbGVyX3RleHR1cmVfbWFnX2ZpbHRlcicgLCAnVEVYVFVSRV9NQUdfRklMVEVS
JywKKyAgICAgICAgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIsIG1hZ1ZhbHVlcykp
OworCisgICAgdmFyIG1pblZhbHVlcyA9IFtnbC5ORUFSRVNULCBnbC5MSU5FQVIsIGdsLk5FQVJF
U1RfTUlQTUFQX05FQVJFU1QsIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUiwgZ2wuTElORUFSX01J
UE1BUF9ORUFSRVNULCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUl07CisgICAgdGhpcy5hZGRDaGls
ZChuZXcgZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlck1vZGVDYXNlKCdzYW1wbGVy
X3RleHR1cmVfbWluX2ZpbHRlcicgLCAnVEVYVFVSRV9NSU5fRklMVEVSJywKKyAgICAgICAgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIsIG1pblZhbHVlcykp
OworCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2Ft
cGxlckxPRENhc2UoJ3NhbXBsZXJfdGV4dHVyZV9taW5fbG9kJyAsICdURVhUVVJFX01JTl9MT0Qn
LCBnbC5URVhUVVJFX01JTl9MT0QsIC0xMDAwKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMz
ZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuU2FtcGxlckxPRENhc2UoJ3NhbXBsZXJfdGV4dHVyZV9t
YXhfbG9kJyAsICdURVhUVVJFX01BWF9MT0QnLCBnbC5URVhUVVJFX01BWF9MT0QsIDEwMDApKTsK
KworICAgIHZhciBtb2RlcyA9IFtnbC5DT01QQVJFX1JFRl9UT19URVhUVVJFLCBnbC5OT05FXTsK
KyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5TYW1wbGVy
TW9kZUNhc2UoJ3NhbXBsZXJfdGV4dHVyZV9jb21wYXJlX21vZGUnICwgJ1RFWFRVUkVfQ09NUEFS
RV9NT0RFJywKKyAgICAgICAgZ2wuVEVYVFVSRV9DT01QQVJFX01PREUsIGdsLk5PTkUsIG1vZGVz
KSk7CisKKyAgICB2YXIgY29tcGFyZUZ1bmNzID0gW2dsLkxFUVVBTCwgZ2wuR0VRVUFMLCBnbC5M
RVNTLCBnbC5HUkVBVEVSLCBnbC5FUVVBTCwgZ2wuTk9URVFVQUwsIGdsLkFMV0FZUywgZ2wuTkVW
RVJdOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLlNh
bXBsZXJNb2RlQ2FzZSgnc2FtcGxlcl90ZXh0dXJlX2NvbXBhcmVfZnVuYycgLCAnVEVYVFVSRV9D
T01QQVJFX0ZVTkMnLAorICAgICAgICBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywgZ2wuTEVRVUFM
LCBjb21wYXJlRnVuY3MpKTsKK307CisKKy8qKgorKiBSdW4gdGVzdAorKiBAcGFyYW0ge1dlYkdM
MlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyovCitlczNmU2FtcGxlclN0YXRlUXVlcnlUZXN0
cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wgPSBjb250ZXh0OworICAgIC8vU2V0
IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVu
bmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLlNh
bXBsZXJTdGF0ZVF1ZXJ5VGVzdHMoKSk7CisKKyAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlw
dGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIHNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50
ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgZGVzY3JpcHRpb24oc3RhdGUudGVzdENhc2VzLmdl
dERlc2NyaXB0aW9uKCkpOworCisgICAgdHJ5IHsKKyAgICAgICAgLy9SdW4gdGVzdCBjYXNlcwor
ICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICB9CisgICAgY2F0Y2ggKGVy
cikgeworICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZTYW1wbGVyU3Rh
dGVRdWVyeVRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgdGN1VGVzdENhc2UucnVu
bmVyLnRlcm1pbmF0ZSgpOworICAgIH0KK307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZTaGFkZXJBcGlUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyQXBpVGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjc2OGYwMzI1YmM0NTY5NjcyMTMxMTViZGExYjViNDc4NGExZDc5YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyQXBpVGVzdHMuanMKQEAgLTAsMCAr
MSw2NTAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJv
Z3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycg
QkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3Zp
ZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckFwaVRlc3RzJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkFwaUNh
c2UnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKK3ZhciBlczNmU2hhZGVyQXBpVGVzdHMg
PSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJBcGlUZXN0czsKK3ZhciB0Y3VUZXN0Q2FzZSA9
IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgZXMzZkFwaUNhc2UgPSBmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZBcGlDYXNlOwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsu
b3BlbmdsLmdsdVNoYWRlclByb2dyYW07Cit2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZVJhbmRvbTsKK3ZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlU3RyaW5nOworCisvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZhciBn
bDsKKwordmFyIHNldFBhcmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAg
IGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7CisgICAg
Y2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cit9OworCit2YXIgZ2V0U2ltcGxl
U2hhZGVyU291cmNlID0gZnVuY3Rpb24oc2hhZGVyVHlwZSkgeworICAgIHZhciBzaW1wbGVWZXJ0
ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAg
J3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisgICAgICAgICcgZ2xfUG9z
aXRpb24gPSB2ZWM0KDAuMCk7XG4nICsKKyAgICAgICAgJ31cbic7CisKKyAgICB2YXIgc2ltcGxl
RnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAg
ICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19mcmFnQ29sb3I7
XG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisg
ICAgICAgICcgb19mcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4nICsKKyAgICAgICAgJ31cbic7CisK
KyAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFt
LnNoYWRlclR5cGUuVkVSVEVYOgorICAgICAgICAgICAgcmV0dXJuIHNpbXBsZVZlcnRleFNoYWRl
clNvdXJjZTsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01F
TlQ6CisgICAgICAgICAgICByZXR1cm4gc2ltcGxlRnJhZ21lbnRTaGFkZXJTb3VyY2U7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2hhZGVy
IHR5cGUnKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFt
IHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVy
VHlwZX0gc2hhZGVyVHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuQ3JlYXRlU2hhZGVyQ2Fz
ZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBzaGFkZXJUeXBlKSB7CisgICAgZXMzZkFw
aUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgdGhp
cy5tX3NoYWRlclR5cGUgPSBzaGFkZXJUeXBlOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNo
YWRlckFwaVRlc3RzLkNyZWF0ZVNoYWRlckNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitl
czNmU2hhZGVyQXBpVGVzdHMuQ3JlYXRlU2hhZGVyQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciBzaGFkZXJPYmplY3QgPSBnbC5jcmVhdGVTaGFkZXIoZ2x1U2hhZGVy
UHJvZ3JhbS5nZXRHTFNoYWRlclR5cGUoZ2wsIHRoaXMubV9zaGFkZXJUeXBlKSk7CisgICAgdGhp
cy5jaGVjayhzaGFkZXJPYmplY3QgIT0gbnVsbCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRl
ck9iamVjdCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZB
cGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0g
c2hhZGVyVHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuQ29tcGlsZVNoYWRlckNhc2UgPSBm
dW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hhZGVyVHlwZSkgeworICAgIGVzM2ZBcGlDYXNl
LkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgIHRoaXMubV9z
aGFkZXJUeXBlID0gc2hhZGVyVHlwZTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJB
cGlUZXN0cy5Db21waWxlU2hhZGVyQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZT
aGFkZXJBcGlUZXN0cy5Db21waWxlU2hhZGVyQ2FzZS5wcm90b3R5cGUuY2hlY2tDb21waWxlU3Rh
dHVzID0gZnVuY3Rpb24oc2hhZGVyKSB7CisgICAgdmFyIHN0YXR1cyA9IC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gKGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVT
KSk7CisgICAgcmV0dXJuIHN0YXR1czsKK307CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5Db21waWxl
U2hhZGVyQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzaGFkZXJP
YmplY3QgPSBnbC5jcmVhdGVTaGFkZXIoZ2x1U2hhZGVyUHJvZ3JhbS5nZXRHTFNoYWRlclR5cGUo
Z2wsIHRoaXMubV9zaGFkZXJUeXBlKSk7CisgICAgdmFyIHNoYWRlclNvdXJjZSA9IGdldFNpbXBs
ZVNoYWRlclNvdXJjZSh0aGlzLm1fc2hhZGVyVHlwZSk7CisKKyAgICB0aGlzLmNoZWNrKHNoYWRl
ck9iamVjdCAhPSBudWxsKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJPYmplY3QsIHNo
YWRlclNvdXJjZSk7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJPYmplY3QpOworCisgICAg
dGhpcy5jaGVjayh0aGlzLmNoZWNrQ29tcGlsZVN0YXR1cyhzaGFkZXJPYmplY3QpKTsKKworICAg
IGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJPYmplY3QpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtnbHVTaGFk
ZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAqLworZXMzZlNoYWRlckFwaVRlc3Rz
LlNoYWRlclNvdXJjZVJlcGxhY2VDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHNo
YWRlclR5cGUpIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKKyAgICB0aGlzLm1fc2hhZGVyVHlwZSA9IHNoYWRlclR5cGU7Cit9Owor
CitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyQXBpVGVzdHMuU2hhZGVyU291cmNlUmVwbGFjZUNh
c2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVyQXBpVGVzdHMuU2hhZGVyU291
cmNlUmVwbGFjZUNhc2UucHJvdG90eXBlLmdlbmVyYXRlRmlyc3RTb3VyY2UgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gZ2V0U2ltcGxlU2hhZGVyU291cmNlKHRoaXMubV9zaGFkZXJUeXBlKTsK
K307CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5TaGFkZXJTb3VyY2VSZXBsYWNlQ2FzZS5wcm90b3R5
cGUuZ2VuZXJhdGVTZWNvbmRTb3VyY2UgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc291cmNlID0g
JyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbic7CisKKyAgICBpZiAodGhpcy5tX3NoYWRlclR5cGUgPT0gZ2x1U2hhZGVyUHJv
Z3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKQorICAgICAgICBzb3VyY2UgKz0gJ2xheW91dChsb2Nh
dGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19mcmFnQ29sb3I7XG4nOworCisgICAgc291cmNl
ICs9ICd2b2lkIG1haW4oKVxuJysKKyAgICAgICAgICAgICd7XG4nKworICAgICAgICAgICAgJyBm
bG9hdCB2YXJpYWJsZSA9IDEuMGY7XG4nOworCisgICAgaWYgKHRoaXMubV9zaGFkZXJUeXBlID09
IGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpIHNvdXJjZSArPSAnIGdsX1Bvc2l0
aW9uID0gdmVjNCh2YXJpYWJsZSk7XG4nOworICAgIGVsc2UgaWYgKHRoaXMubV9zaGFkZXJUeXBl
ID09IGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCkgc291cmNlICs9ICcgb19m
cmFnQ29sb3IgPSB2ZWM0KHZhcmlhYmxlKTtcbic7CisKKyAgICBzb3VyY2UgKz0gJ31cbic7CisK
KyAgICByZXR1cm4gc291cmNlOworfTsKKworZXMzZlNoYWRlckFwaVRlc3RzLlNoYWRlclNvdXJj
ZVJlcGxhY2VDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHNoYWRl
ck9iamVjdCA9IGdsLmNyZWF0ZVNoYWRlcihnbHVTaGFkZXJQcm9ncmFtLmdldEdMU2hhZGVyVHlw
ZShnbCwgdGhpcy5tX3NoYWRlclR5cGUpKTsKKyAgICB2YXIgZmlyc3RTb3VyY2UgPSB0aGlzLmdl
bmVyYXRlRmlyc3RTb3VyY2UoKTsKKyAgICB2YXIgc2Vjb25kU291cmNlID0gdGhpcy5nZW5lcmF0
ZVNlY29uZFNvdXJjZSgpOworCisgICAgdGhpcy5jaGVjayhzaGFkZXJPYmplY3QgIT0gbnVsbCk7
CisKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyT2JqZWN0LCBmaXJzdFNvdXJjZSk7CisgICAg
dGhpcy5jaGVjayhmaXJzdFNvdXJjZSA9PSBnbC5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyT2JqZWN0
KSk7CisKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyT2JqZWN0LCBzZWNvbmRTb3VyY2UpOwor
ICAgIHRoaXMuY2hlY2soc2Vjb25kU291cmNlID09IGdsLmdldFNoYWRlclNvdXJjZShzaGFkZXJP
YmplY3QpKTsKKworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJPYmplY3QpOworfTsKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqLworZXMzZlNoYWRlckFwaVRlc3RzLlNvdXJjZUdlbmVyYXRv
ciA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNo
YWRlclR5cGV9IHNoYWRlclR5cGUKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZXMzZlNoYWRl
ckFwaVRlc3RzLlNvdXJjZUdlbmVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHNoYWRl
clR5cGUpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBv
dmVycmlkZScpOworfTsKKworLyoqCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVy
VHlwZX0gc2hhZGVyVHlwZQorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZXMzZlNoYWRlckFw
aVRlc3RzLlNvdXJjZUdlbmVyYXRvci5wcm90b3R5cGUuZmluaXNoZWQgPSBmdW5jdGlvbihzaGFk
ZXJUeXBlKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uLiBQbGVhc2Ug
b3ZlcnJpZGUnKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMz
ZlNoYWRlckFwaVRlc3RzLlNvdXJjZUdlbmVyYXRvcn0KKyAqLworZXMzZlNoYWRlckFwaVRlc3Rz
LkNvbnN0YW50U2hhZGVyR2VuZXJhdG9yID0gZnVuY3Rpb24ocm5kKSB7CisgICAgZXMzZlNoYWRl
ckFwaVRlc3RzLlNvdXJjZUdlbmVyYXRvci5jYWxsKHRoaXMpOworICAgIHRoaXMubV9ybmQgPSBy
bmQ7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyQXBpVGVzdHMuQ29uc3RhbnRTaGFk
ZXJHZW5lcmF0b3IsIGVzM2ZTaGFkZXJBcGlUZXN0cy5Tb3VyY2VHZW5lcmF0b3IpOworCitlczNm
U2hhZGVyQXBpVGVzdHMuU291cmNlR2VuZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24o
c2hhZGVyVHlwZSkgeworICAgIHZhciB2YWx1ZSA9IHRoaXMubV9ybmQuZ2V0RmxvYXQoMC4wLCAx
LjApOworICAgIHZhciBvdXRwdXROYW1lID0gKHNoYWRlclR5cGUgPT0gZ2x1U2hhZGVyUHJvZ3Jh
bS5zaGFkZXJUeXBlLlZFUlRFWCkgPyAnZ2xfUG9zaXRpb24nIDogJ29fZnJhZ0NvbG9yJzsKKwor
ICAgIHZhciBvdXQgPSAnI3ZlcnNpb24gMzAwIGVzXG4nOworCisgICAgaWYgKHNoYWRlclR5cGUg
PT0gZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKQorICAgICAgICBvdXQgKz0g
J2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19mcmFnQ29sb3I7XG4nOwor
CisgICAgb3V0ICs9ICd2b2lkIG1haW4gKHZvaWQpXG4nOworICAgIG91dCArPSAne1xuJzsKKyAg
ICBvdXQgKz0gJyAnICsgb3V0cHV0TmFtZSArICcgPSB2ZWM0KCcgKyB2YWx1ZSArICcpO1xuJzsK
KyAgICBvdXQgKz0gJ31cbic7CisKKyAgICByZXR1cm4gb3V0OworfTsKKworZXMzZlNoYWRlckFw
aVRlc3RzLlNvdXJjZUdlbmVyYXRvci5wcm90b3R5cGUuZmluaXNoZWQgPSBmdW5jdGlvbihzaGFk
ZXJUeXBlKSB7CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLy8gU2hhZGVyIGFsbG9jYXRpb24g
dXRpbGl0eQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtlczNmU2hhZGVyQXBp
VGVzdHMuU291cmNlR2VuZXJhdG9yfSBnZW5lcmF0b3IKKyAqLworZXMzZlNoYWRlckFwaVRlc3Rz
LlNoYWRlckFsbG9jYXRvciA9IGZ1bmN0aW9uKGdlbmVyYXRvcikgeworICAgIHRoaXMubV9zcmNH
ZW4gPSBnZW5lcmF0b3I7CisgICAgdGhpcy5tX3NoYWRlcnMgPSB7fTsKK307CisKKy8qKgorICog
QHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAqLworZXMz
ZlNoYWRlckFwaVRlc3RzLlNoYWRlckFsbG9jYXRvci5wcm90b3R5cGUuY3JlYXRlU2hhZGVyID0g
ZnVuY3Rpb24oc2hhZGVyVHlwZSkgeworICAgIHZhciBzaGFkZXIgPSBuZXcgZ2x1U2hhZGVyUHJv
Z3JhbS5TaGFkZXIoZ2wsIHNoYWRlclR5cGUpOworICAgIHRoaXMubV9zaGFkZXJzW3NoYWRlclR5
cGVdID0gc2hhZGVyOworICAgIHRoaXMuc2V0U291cmNlKHNoYWRlclR5cGUpOworICAgIHJldHVy
biBzaGFkZXI7Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJU
eXBlfSBzaGFkZXJUeXBlCisgKi8KK2VzM2ZTaGFkZXJBcGlUZXN0cy5TaGFkZXJBbGxvY2F0b3Iu
cHJvdG90eXBlLmRlbGV0ZVNoYWRlciA9IGZ1bmN0aW9uKHNoYWRlclR5cGUpIHsKKyAgICB0aGlz
Lm1fc2hhZGVyc1tzaGFkZXJUeXBlXS5kZXN0cm95KCk7CisgICAgdGhpcy5tX3NoYWRlcnNbc2hh
ZGVyVHlwZV0gPSBudWxsOworfTsKKworLyoqCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0u
c2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuU2hhZGVyQWxs
b2NhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2UgPSBmdW5jdGlvbihzaGFkZXJUeXBlKSB7CisgICAg
dmFyIHNvdXJjZSA9IHRoaXMubV9zcmNHZW4ubmV4dChzaGFkZXJUeXBlKTsKKyAgICB0aGlzLm1f
c2hhZGVyc1tzaGFkZXJUeXBlXS5zZXRTb3VyY2VzKHNvdXJjZSk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgKi8KK2VzM2ZT
aGFkZXJBcGlUZXN0cy5TaGFkZXJBbGxvY2F0b3IucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHNo
YWRlclR5cGUpIHsKKyAgICByZXR1cm4gdGhpcy5tX3NoYWRlcnNbc2hhZGVyVHlwZV07Cit9Owor
CisvLyBCYXNlIGNsYXNzIGZvciBzaW1wbGUgcHJvZ3JhbSBBUEkgdGVzdHMKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNm
U2hhZGVyQXBpVGVzdHMuU2ltcGxlUHJvZ3JhbUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworICAgIHRoaXMubV92ZXJ0U2hhZGVyID0gbnVsbDsKKyAgICB0aGlzLm1fZnJh
Z1NoYWRlciA9IG51bGw7CisgICAgdGhpcy5tX3Byb2dyYW0gPSBudWxsOworfTsKKworc2V0UGFy
ZW50Q2xhc3MoZXMzZlNoYWRlckFwaVRlc3RzLlNpbXBsZVByb2dyYW1DYXNlLCBlczNmQXBpQ2Fz
ZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlckFwaVRlc3RzLlNpbXBsZVByb2dyYW1DYXNlLnByb3Rv
dHlwZS5jb21waWxlU2hhZGVycyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB2ZXJ0U291cmNlID0g
Z2V0U2ltcGxlU2hhZGVyU291cmNlKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgp
OworICAgIHZhciBmcmFnU291cmNlID0gZ2V0U2ltcGxlU2hhZGVyU291cmNlKGdsdVNoYWRlclBy
b2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCk7CisKKyAgICB2YXIgdmVydFNoYWRlciA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2YXIgZnJhZ1NoYWRlciA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCisgICAgdGhpcy5jaGVjayh2ZXJ0U2hh
ZGVyICE9IG51bGwpOworICAgIHRoaXMuY2hlY2soZnJhZ1NoYWRlciAhPSBudWxsKTsKKworICAg
IGdsLnNoYWRlclNvdXJjZSh2ZXJ0U2hhZGVyLCB2ZXJ0U291cmNlKTsKKyAgICBnbC5jb21waWxl
U2hhZGVyKHZlcnRTaGFkZXIpOworCisgICAgZ2wuc2hhZGVyU291cmNlKGZyYWdTaGFkZXIsIGZy
YWdTb3VyY2UpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoZnJhZ1NoYWRlcik7CisKKyAgICB0aGlz
Lm1fdmVydFNoYWRlciA9IHZlcnRTaGFkZXI7CisgICAgdGhpcy5tX2ZyYWdTaGFkZXIgPSBmcmFn
U2hhZGVyOworfTsKKworZXMzZlNoYWRlckFwaVRlc3RzLlNpbXBsZVByb2dyYW1DYXNlLnByb3Rv
dHlwZS5saW5rUHJvZ3JhbSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBwcm9ncmFtID0gZ2wuY3Jl
YXRlUHJvZ3JhbSgpOworCisgICAgdGhpcy5jaGVjayhwcm9ncmFtICE9IG51bGwpOworCisgICAg
Z2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHRoaXMubV92ZXJ0U2hhZGVyKTsKKyAgICBnbC5hdHRh
Y2hTaGFkZXIocHJvZ3JhbSwgdGhpcy5tX2ZyYWdTaGFkZXIpOworCisgICAgZ2wubGlua1Byb2dy
YW0ocHJvZ3JhbSk7CisKKyAgICB0aGlzLm1fcHJvZ3JhbSA9IHByb2dyYW07Cit9OworCitlczNm
U2hhZGVyQXBpVGVzdHMuU2ltcGxlUHJvZ3JhbUNhc2UucHJvdG90eXBlLmNsZWFudXAgPSBmdW5j
dGlvbigpIHsKKyAgICBnbC5kZWxldGVTaGFkZXIodGhpcy5tX3ZlcnRTaGFkZXIpOworICAgIGds
LmRlbGV0ZVNoYWRlcih0aGlzLm1fZnJhZ1NoYWRlcik7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbSh0
aGlzLm1fcHJvZ3JhbSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e2VzM2ZTaGFkZXJBcGlUZXN0cy5TaW1wbGVQcm9ncmFtQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlckFw
aVRlc3RzLkRlbGV0ZVNoYWRlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgewor
ICAgIGVzM2ZTaGFkZXJBcGlUZXN0cy5TaW1wbGVQcm9ncmFtQ2FzZS5jYWxsKHRoaXMsIG5hbWUs
IGRlc2NyaXB0aW9uKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJBcGlUZXN0cy5E
ZWxldGVTaGFkZXJDYXNlLCBlczNmU2hhZGVyQXBpVGVzdHMuU2ltcGxlUHJvZ3JhbUNhc2UpOwor
CitlczNmU2hhZGVyQXBpVGVzdHMuRGVsZXRlU2hhZGVyQ2FzZS5wcm90b3R5cGUuY2hlY2tEZWxl
dGVTdGF0dXMgPSBmdW5jdGlvbihzaGFkZXIpIHsKKyAgICB2YXIgc3RhdHVzID0gLyoqIEB0eXBl
IHtib29sZWFufSAqLyAoZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuREVMRVRFX1NU
QVRVUykpOworICAgIHJldHVybiBzdGF0dXM7Cit9OworCitlczNmU2hhZGVyQXBpVGVzdHMuRGVs
ZXRlU2hhZGVyQ2FzZS5wcm90b3R5cGUuZGVsZXRlU2hhZGVycyA9IGZ1bmN0aW9uKCkgeworICAg
IGdsLmRlbGV0ZVNoYWRlcih0aGlzLm1fdmVydFNoYWRlcik7CisgICAgZ2wuZGVsZXRlU2hhZGVy
KHRoaXMubV9mcmFnU2hhZGVyKTsKK307CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5EZWxldGVTaGFk
ZXJDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jb21waWxlU2hh
ZGVycygpOworICAgIHRoaXMubGlua1Byb2dyYW0oKTsKKworICAgIHRoaXMuZGVsZXRlU2hhZGVy
cygpOworCisgICAgdGhpcy5jaGVjayh0aGlzLmNoZWNrRGVsZXRlU3RhdHVzKHRoaXMubV92ZXJ0
U2hhZGVyKSAmJiB0aGlzLmNoZWNrRGVsZXRlU3RhdHVzKHRoaXMubV9mcmFnU2hhZGVyKSk7CisK
KyAgICBnbC5kZWxldGVQcm9ncmFtKHRoaXMubV9wcm9ncmFtKTsKKworICAgIHRoaXMuY2hlY2so
IShnbC5pc1NoYWRlcih0aGlzLm1fdmVydFNoYWRlcikgfHwgZ2wuaXNTaGFkZXIodGhpcy5tX2Zy
YWdTaGFkZXIpKSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2Vz
M2ZTaGFkZXJBcGlUZXN0cy5TaW1wbGVQcm9ncmFtQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlckFwaVRl
c3RzLkxpbmtWZXJ0ZXhGcmFnbWVudENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikg
eworICAgIGVzM2ZTaGFkZXJBcGlUZXN0cy5TaW1wbGVQcm9ncmFtQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJBcGlUZXN0
cy5MaW5rVmVydGV4RnJhZ21lbnRDYXNlLCBlczNmU2hhZGVyQXBpVGVzdHMuU2ltcGxlUHJvZ3Jh
bUNhc2UpOworCitlczNmU2hhZGVyQXBpVGVzdHMuTGlua1ZlcnRleEZyYWdtZW50Q2FzZS5wcm90
b3R5cGUuY2hlY2tMaW5rU3RhdHVzID0gZnVuY3Rpb24ocHJvZ3JhbSkgeworICAgIHZhciBzdGF0
dXMgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dy
YW0sIGdsLkxJTktfU1RBVFVTKSk7CisgICAgcmV0dXJuIHN0YXR1czsKK307CisKK2VzM2ZTaGFk
ZXJBcGlUZXN0cy5MaW5rVmVydGV4RnJhZ21lbnRDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5jb21waWxlU2hhZGVycygpOworICAgIHRoaXMubGlua1Byb2dyYW0o
KTsKKworICAgIHRoaXMuY2hlY2sodGhpcy5jaGVja0xpbmtTdGF0dXModGhpcy5tX3Byb2dyYW0p
LCAnRmFpbCwgZXhwZWN0ZWQgTElOS19TVEFUVVMgdG8gYmUgVFJVRS4nKTsKKworICAgIHRoaXMu
Y2xlYW51cCgpOworfTsKKworLy8gQmFzZSBjbGFzcyBmb3IgcHJvZ3JhbSBzdGF0ZSBwZXJzaXN0
ZW5jZSBjYXNlcworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlD
YXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9
IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hh
ZGVyVHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZSA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBzaGFkZXJUeXBlKSB7CisgICAgZXMzZkFwaUNhc2UuQXBp
Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7CisgICAgdGhpcy5tX3NoYWRl
clR5cGUgPSBzaGFkZXJUeXBlOworICAgIHRoaXMubV9ybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9t
KGRlU3RyaW5nLmRlU3RyaW5nSGFzaChuYW1lKSBeIDB4NzEzZGUwY2EpOworfTsKKworc2V0UGFy
ZW50Q2xhc3MoZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZUNhc2UsIGVzM2ZBcGlDYXNl
LkFwaUNhc2UpOworCisvKioKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtfSBw
cm9ncmFtCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJBcGlUZXN0cy5TaGFkZXJBbGxvY2F0b3J9IHNo
YWRlcnMKKyAqLworZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZUNhc2UucHJvdG90eXBl
LmJ1aWxkUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0sIHNoYWRlcnMpIHsKKyAgICB2YXIgdmVy
dFNoYWRlciA9IHNoYWRlcnMuY3JlYXRlU2hhZGVyKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlw
ZS5WRVJURVgpOworICAgIHZhciBmcmFnU2hhZGVyID0gc2hhZGVycy5jcmVhdGVTaGFkZXIoZ2x1
U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKTsKKworICAgIHZlcnRTaGFkZXIuY29t
cGlsZSgpOworICAgIGZyYWdTaGFkZXIuY29tcGlsZSgpOworCisgICAgcHJvZ3JhbS5hdHRhY2hT
aGFkZXIodmVydFNoYWRlci5nZXRTaGFkZXIoKSk7CisgICAgcHJvZ3JhbS5hdHRhY2hTaGFkZXIo
ZnJhZ1NoYWRlci5nZXRTaGFkZXIoKSk7CisgICAgcHJvZ3JhbS5saW5rKCk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5Qcm9ncmFtfSBwcm9ncmFtCisgKiBAcGFyYW0g
e2dsdVNoYWRlclByb2dyYW0uUHJvZ3JhbUluZm99IHJlZmVyZW5jZQorICovCitlczNmU2hhZGVy
QXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24ocHJv
Z3JhbSwgcmVmZXJlbmNlKSB7CisgICAgdmFyIHByb2dyYW1JbmZvID0gcHJvZ3JhbS5nZXRJbmZv
KCk7CisgICAgdGhpcy5jaGVjayhwcm9ncmFtSW5mby5saW5rT2ssICdGYWlsLCBsaW5rIHN0YXR1
cyBtYXkgb25seSBjaGFuZ2UgYXMgYSByZXN1bHQgb2YgbGlua2luZycpOworCisgICAgdGhpcy5j
aGVjayhwcm9ncmFtSW5mby5saW5rVGltZVVzID09IHJlZmVyZW5jZS5saW5rVGltZVVzLCAnRmFp
bCwgcmVwb3J0ZWQgbGluayB0aW1lIGNoYW5nZWQuJyk7CisKKyAgICB0aGlzLmNoZWNrKHByb2dy
YW1JbmZvLmluZm9Mb2cgPT0gcmVmZXJlbmNlLmluZm9Mb2csICdGYWlsLCBwcm9ncmFtIGluZm9s
b2cgY2hhbmdlZC4nKTsKK307CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNl
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHNvdXJjZUdlbiA9IG5ldyBl
czNmU2hhZGVyQXBpVGVzdHMuQ29uc3RhbnRTaGFkZXJHZW5lcmF0b3IodGhpcy5tX3JuZCk7CisK
KyAgICB2YXIgc2hhZGVycyA9IG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuU2hhZGVyQWxsb2NhdG9y
KHNvdXJjZUdlbik7CisgICAgdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5Qcm9n
cmFtKGdsKTsKKworICAgIHRoaXMuYnVpbGRQcm9ncmFtKHByb2dyYW0sIHNoYWRlcnMpOworCisg
ICAgaWYgKHByb2dyYW0uZ2V0TGlua1N0YXR1cygpKSB7CisgICAgICAgIHZhciBwcm9ncmFtSW5m
byA9IHByb2dyYW0uZ2V0SW5mbygpOworCisgICAgICAgIHRoaXMuZXhlY3V0ZUZvclByb2dyYW0o
cHJvZ3JhbSwgc2hhZGVycyk7CisKKyAgICAgICAgdGhpcy52ZXJpZnkocHJvZ3JhbSwgcHJvZ3Jh
bUluZm8pOworCisgICAgfSBlbHNleworICAgICAgICB0aGlzLmNoZWNrKGZhbHNlLCAiRmFpbCwg
Y291bGRuJ3QgbGluayBwcm9ncmFtLiIpOworICAgIH0KKworfTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBleHRlbmRzIHtlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZX0K
KyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24K
KyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgKi8K
K2VzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVEZXRhY2hTaGFkZXJDYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpIHsKKyAgICBlczNmU2hhZGVyQXBpVGVz
dHMuUHJvZ3JhbVN0YXRlQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBzaGFkZXJU
eXBlKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3Rh
dGVEZXRhY2hTaGFkZXJDYXNlLCBlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZSk7
CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVEZXRhY2hTaGFkZXJDYXNlLnByb3Rv
dHlwZS5leGVjdXRlRm9yUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0sIHNoYWRlcnMpIHsKKyAg
ICB2YXIgY2FzZVNoYWRlciA9IHNoYWRlcnMuZ2V0KHRoaXMubV9zaGFkZXJUeXBlKTsKKyAgICBw
cm9ncmFtLmRldGFjaFNoYWRlcihjYXNlU2hhZGVyLmdldFNoYWRlcigpKTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1T
dGF0ZUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRl
c2NyaXB0aW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVy
VHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlUmVhdHRhY2hTaGFkZXJD
YXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpIHsKKyAgICBlczNm
U2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uLCBzaGFkZXJUeXBlKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJBcGlUZXN0
cy5Qcm9ncmFtU3RhdGVSZWF0dGFjaFNoYWRlckNhc2UsIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9n
cmFtU3RhdGVDYXNlKTsKKworZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlYXR0YWNo
U2hhZGVyQ2FzZS5wcm90b3R5cGUuZXhlY3V0ZUZvclByb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFt
LCBzaGFkZXJzKSB7CisgICAgdmFyIGNhc2VTaGFkZXIgPSBzaGFkZXJzLmdldCh0aGlzLm1fc2hh
ZGVyVHlwZSk7CisgICAgcHJvZ3JhbS5kZXRhY2hTaGFkZXIoY2FzZVNoYWRlci5nZXRTaGFkZXIo
KSk7CisgICAgcHJvZ3JhbS5hdHRhY2hTaGFkZXIoY2FzZVNoYWRlci5nZXRTaGFkZXIoKSk7Cit9
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZTaGFkZXJBcGlUZXN0
cy5Qcm9ncmFtU3RhdGVDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7
c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGV9IHNoYWRlclR5cGUKKyAqLworZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZURlbGV0
ZVNoYWRlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hhZGVyVHlwZSkgewor
ICAgIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRl
ckFwaVRlc3RzLlByb2dyYW1TdGF0ZURlbGV0ZVNoYWRlckNhc2UsIGVzM2ZTaGFkZXJBcGlUZXN0
cy5Qcm9ncmFtU3RhdGVDYXNlKTsKKworZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZURl
bGV0ZVNoYWRlckNhc2UucHJvdG90eXBlLmV4ZWN1dGVGb3JQcm9ncmFtID0gZnVuY3Rpb24ocHJv
Z3JhbSwgc2hhZGVycykgeworICAgIHZhciBjYXNlU2hhZGVyID0gc2hhZGVycy5nZXQodGhpcy5t
X3NoYWRlclR5cGUpOworICAgIHByb2dyYW0uZGV0YWNoU2hhZGVyKGNhc2VTaGFkZXIuZ2V0U2hh
ZGVyKCkpOworICAgIHNoYWRlcnMuZGVsZXRlU2hhZGVyKHRoaXMubV9zaGFkZXJUeXBlKTsKK307
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZlNoYWRlckFwaVRlc3Rz
LlByb2dyYW1TdGF0ZUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlw
ZX0gc2hhZGVyVHlwZQorICovCitlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlUmVwbGFj
ZVNoYWRlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hhZGVyVHlwZSkgewor
ICAgIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRl
ckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlcGxhY2VTaGFkZXJDYXNlLCBlczNmU2hhZGVyQXBpVGVz
dHMuUHJvZ3JhbVN0YXRlQ2FzZSk7CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVS
ZXBsYWNlU2hhZGVyQ2FzZS5wcm90b3R5cGUuZXhlY3V0ZUZvclByb2dyYW0gPSBmdW5jdGlvbihw
cm9ncmFtLCBzaGFkZXJzKSB7CisgICAgdmFyIGNhc2VTaGFkZXIgPSBzaGFkZXJzLmdldCh0aGlz
Lm1fc2hhZGVyVHlwZSk7CisgICAgcHJvZ3JhbS5kZXRhY2hTaGFkZXIoY2FzZVNoYWRlci5nZXRT
aGFkZXIoKSk7CisgICAgc2hhZGVycy5kZWxldGVTaGFkZXIodGhpcy5tX3NoYWRlclR5cGUpOwor
ICAgIHByb2dyYW0uYXR0YWNoU2hhZGVyKHNoYWRlcnMuY3JlYXRlU2hhZGVyKHRoaXMubV9zaGFk
ZXJUeXBlKS5nZXRTaGFkZXIoKSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge2VzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNlfQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtn
bHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAqLworZXMzZlNoYWRlckFw
aVRlc3RzLlByb2dyYW1TdGF0ZVJlY29tcGlsZVNoYWRlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBk
ZXNjcmlwdGlvbiwgc2hhZGVyVHlwZSkgeworICAgIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFt
U3RhdGVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpOworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlY29tcGls
ZVNoYWRlckNhc2UsIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNlKTsKKworZXMz
ZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlY29tcGlsZVNoYWRlckNhc2UucHJvdG90eXBl
LmV4ZWN1dGVGb3JQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgc2hhZGVycykgeworICAgIHZh
ciBjYXNlU2hhZGVyID0gc2hhZGVycy5nZXQodGhpcy5tX3NoYWRlclR5cGUpOworICAgIGNhc2VT
aGFkZXIuY29tcGlsZSgpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Z2x1U2hh
ZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgKi8KK2VzM2ZTaGFkZXJBcGlUZXN0
cy5Qcm9ncmFtU3RhdGVSZXBsYWNlU291cmNlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uLCBzaGFkZXJUeXBlKSB7CisgICAgZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZUNh
c2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgc2hhZGVyVHlwZSk7Cit9OworCitzZXRQ
YXJlbnRDbGFzcyhlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlUmVwbGFjZVNvdXJjZUNh
c2UsIGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVDYXNlKTsKKworZXMzZlNoYWRlckFw
aVRlc3RzLlByb2dyYW1TdGF0ZVJlcGxhY2VTb3VyY2VDYXNlLnByb3RvdHlwZS5leGVjdXRlRm9y
UHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0sIHNoYWRlcnMpIHsKKyAgICB2YXIgY2FzZVNoYWRl
ciA9IHNoYWRlcnMuZ2V0KHRoaXMubV9zaGFkZXJUeXBlKTsKKyAgICBzaGFkZXJzLnNldFNvdXJj
ZSh0aGlzLm1fc2hhZGVyVHlwZSk7CisgICAgY2FzZVNoYWRlci5jb21waWxlKCk7Cit9OworCisv
KioKKyogQGNvbnN0cnVjdG9yCisqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyov
CitlczNmU2hhZGVyQXBpVGVzdHMuU2hhZGVyQXBpVGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICB0
Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdzaGFkZXJfYXBpJywgJ1NoYWRlciBBUEkg
Q2FzZXMnKTsKK307CisKK2VzM2ZTaGFkZXJBcGlUZXN0cy5TaGFkZXJBcGlUZXN0cy5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNm
U2hhZGVyQXBpVGVzdHMuU2hhZGVyQXBpVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMz
ZlNoYWRlckFwaVRlc3RzLlNoYWRlckFwaVRlc3RzOworCitlczNmU2hhZGVyQXBpVGVzdHMuU2hh
ZGVyQXBpVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBjcmVhdGUg
YW5kIGRlbGV0ZSBzaGFkZXJzCisgICAgdmFyIGNyZWF0ZURlbGV0ZUdyb3VwID0gbmV3IHRjdVRl
c3RDYXNlLkRlcXBUZXN0KCdjcmVhdGVfZGVsZXRlJywgJ2dsQ3JlYXRlU2hhZGVyKCkgdGVzdHMn
KTsKKyAgICB0aGlzLmFkZENoaWxkKGNyZWF0ZURlbGV0ZUdyb3VwKTsKKworICAgIGNyZWF0ZURl
bGV0ZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuQ3JlYXRlU2hhZGVyQ2Fz
ZSgnY3JlYXRlX3ZlcnRleF9zaGFkZXInLCAnQ3JlYXRlIHZlcnRleCBzaGFkZXIgb2JqZWN0Jywg
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWCkpOworICAgIGNyZWF0ZURlbGV0ZUdy
b3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuQ3JlYXRlU2hhZGVyQ2FzZSgnY3Jl
YXRlX2ZyYWdtZW50X3NoYWRlcicsICdDcmVhdGUgZnJhZ21lbnQgc2hhZGVyIG9iamVjdCcsIGds
dVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCkpOworCisgICAgY3JlYXRlRGVsZXRl
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0cy5EZWxldGVTaGFkZXJDYXNlKCdk
ZWxldGVfdmVydGV4X2ZyYWdtZW50JywgJ0RlbGV0ZSB2ZXJ0ZXggc2hhZGVyIGFuZCBmcmFnbWVu
dCBzaGFkZXInKSk7CisKKyAgICAvLyBjb21waWxlIGFuZCBsaW5rCisgICAgdmFyIGNvbXBpbGVM
aW5rR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ2NvbXBpbGVfbGluaycsICdDb21w
aWxlIGFuZCBsaW5rIHRlc3RzJyk7CisgICAgdGhpcy5hZGRDaGlsZChjb21waWxlTGlua0dyb3Vw
KTsKKworICAgIGNvbXBpbGVMaW5rR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0
cy5Db21waWxlU2hhZGVyQ2FzZSgnY29tcGlsZV92ZXJ0ZXhfc2hhZGVyJywgJ0NvbXBpbGUgdmVy
dGV4IHNoYWRlcicsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpKTsKKyAgICBj
b21waWxlTGlua0dyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuQ29tcGlsZVNo
YWRlckNhc2UoJ2NvbXBpbGVfZnJhZ21lbnRfc2hhZGVyJywgJ0NvbXBpbGUgZnJhZ21lbnQgc2hh
ZGVyJywgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisKKyAgICBjb21w
aWxlTGlua0dyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuTGlua1ZlcnRleEZy
YWdtZW50Q2FzZSgnbGlua192ZXJ0ZXhfZnJhZ21lbnQnLCAnTGluayB2ZXJ0ZXggYW5kIGZyYWdt
ZW50IHNoYWRlcnMnKSk7CisKKyAgICAvLyBzaGFkZXIgc291cmNlCisgICAgdmFyIHNoYWRlclNv
dXJjZUdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCdzaGFkZXJfc291cmNlJywgJ2ds
U2hhZGVyU291cmNlKCkgdGVzdHMnKTsKKyAgICB0aGlzLmFkZENoaWxkKHNoYWRlclNvdXJjZUdy
b3VwKTsKKyAgICBzaGFkZXJTb3VyY2VHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckFwaVRl
c3RzLlNoYWRlclNvdXJjZVJlcGxhY2VDYXNlKCdyZXBsYWNlX3NvdXJjZV92ZXJ0ZXgnLCAnUmVw
bGFjZSBzb3VyY2UgY29kZSBvZiB2ZXJ0ZXggc2hhZGVyJywgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFk
ZXJUeXBlLlZFUlRFWCkpOworICAgIHNoYWRlclNvdXJjZUdyb3VwLmFkZENoaWxkKG5ldyBlczNm
U2hhZGVyQXBpVGVzdHMuU2hhZGVyU291cmNlUmVwbGFjZUNhc2UoJ3JlcGxhY2Vfc291cmNlX2Zy
YWdtZW50JywgJ1JlcGxhY2Ugc291cmNlIGNvZGUgb2YgZnJhZ21lbnQgc2hhZGVyJywgZ2x1U2hh
ZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisKKyAgICAvLyBsaW5rIHN0YXR1cyBh
bmQgaW5mb2xvZworICAgIHZhciBsaW5rU3RhdHVzR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVx
cFRlc3QoJ3Byb2dyYW1fc3RhdGUnLCAnUHJvZ3JhbSBzdGF0ZSBwZXJzaXN0ZW5jZSB0ZXN0cycp
OworICAgIHRoaXMuYWRkQ2hpbGQobGlua1N0YXR1c0dyb3VwKTsKKworICAgIGxpbmtTdGF0dXNH
cm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZURldGFjaFNo
YWRlckNhc2UoJ2RldGFjaF9zaGFkZXJfdmVydGV4JywgJ2RldGFjaCB2ZXJ0ZXggc2hhZGVyJywg
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWCkpOworICAgIGxpbmtTdGF0dXNHcm91
cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlYXR0YWNoU2hh
ZGVyQ2FzZSgncmVhdHRhY2hfc2hhZGVyX3ZlcnRleCcsICdyZWF0dGFjaCB2ZXJ0ZXggc2hhZGVy
JywgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWCkpOworICAgIGxpbmtTdGF0dXNH
cm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZURlbGV0ZVNo
YWRlckNhc2UoJ2RlbGV0ZV9zaGFkZXJfdmVydGV4JywgJ2RlbGV0ZSB2ZXJ0ZXggc2hhZGVyJywg
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWCkpOworICAgIGxpbmtTdGF0dXNHcm91
cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckFwaVRlc3RzLlByb2dyYW1TdGF0ZVJlcGxhY2VTaGFk
ZXJDYXNlKCdyZXBsYWNlX3NoYWRlcl92ZXJ0ZXgnLCAncmVwbGFjZSB2ZXJ0ZXggc2hhZGVyIG9i
amVjdCcsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpKTsKKyAgICBsaW5rU3Rh
dHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVSZWNv
bXBpbGVTaGFkZXJDYXNlKCdyZWNvbXBpbGVfc2hhZGVyX3ZlcnRleCcsICdyZWNvbXBpbGUgdmVy
dGV4IHNoYWRlcicsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpKTsKKyAgICBs
aW5rU3RhdHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3Rh
dGVSZXBsYWNlU291cmNlQ2FzZSgncmVwbGFjZV9zb3VyY2VfdmVydGV4JywgJ3JlcGxhY2UgdmVy
dGV4IHNoYWRlciBzb3VyY2UnLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYKSk7
CisKKyAgICBsaW5rU3RhdHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0cy5Q
cm9ncmFtU3RhdGVEZXRhY2hTaGFkZXJDYXNlKCdkZXRhY2hfc2hhZGVyX2ZyYWdtZW50JywgJ2Rl
dGFjaCBmcmFnbWVudCBzaGFkZXInLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01F
TlQpKTsKKyAgICBsaW5rU3RhdHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJBcGlUZXN0
cy5Qcm9ncmFtU3RhdGVSZWF0dGFjaFNoYWRlckNhc2UoJ3JlYXR0YWNoX3NoYWRlcl9mcmFnbWVu
dCcsICdyZWF0dGFjaCBmcmFnbWVudCBzaGFkZXInLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGUuRlJBR01FTlQpKTsKKyAgICBsaW5rU3RhdHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFk
ZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVEZWxldGVTaGFkZXJDYXNlKCdkZWxldGVfc2hhZGVyX2Zy
YWdtZW50JywgJ2RlbGV0ZSBmcmFnbWVudCBzaGFkZXInLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRl
clR5cGUuRlJBR01FTlQpKTsKKyAgICBsaW5rU3RhdHVzR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZT
aGFkZXJBcGlUZXN0cy5Qcm9ncmFtU3RhdGVSZXBsYWNlU2hhZGVyQ2FzZSgncmVwbGFjZV9zaGFk
ZXJfZnJhZ21lbnQnLCAncmVwbGFjZSBmcmFnbWVudCBzaGFkZXIgb2JqZWN0JywgZ2x1U2hhZGVy
UHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisgICAgbGlua1N0YXR1c0dyb3VwLmFkZENo
aWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlUmVjb21waWxlU2hhZGVyQ2Fz
ZSgncmVjb21waWxlX3NoYWRlcl9mcmFnbWVudCcsICdyZWNvbXBpbGUgZnJhZ21lbnQgc2hhZGVy
JywgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisgICAgbGlua1N0YXR1
c0dyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQXBpVGVzdHMuUHJvZ3JhbVN0YXRlUmVwbGFj
ZVNvdXJjZUNhc2UoJ3JlcGxhY2Vfc291cmNlX2ZyYWdtZW50JywgJ3JlcGxhY2UgZnJhZ21lbnQg
c2hhZGVyIHNvdXJjZScsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCkpOwor
Cit9OworCisvKioKKyogUnVuIHRlc3QKKyogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0
fSBjb250ZXh0CisqLworZXMzZlNoYWRlckFwaVRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQp
IHsKKyAgICBnbCA9IGNvbnRleHQ7CisgICAgLy9TZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMK
KyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgc3RhdGUuc2V0Um9vdChu
ZXcgZXMzZlNoYWRlckFwaVRlc3RzLlNoYWRlckFwaVRlc3RzKCkpOworCisgICAgLy9TZXQgdXAg
bmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICBzZXRDdXJyZW50
VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgIGRlc2NyaXB0aW9uKHN0
YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgIHRyeSB7CisgICAgICAgIC8v
UnVuIHRlc3QgY2FzZXMKKyAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAg
fQorICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0
byBlczNmU2hhZGVyQXBpVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICB0Y3VUZXN0
Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgfQorfTsKKworfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hh
ZGVyQnVpbHRpblZhclRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2OTZjNmMxMmVhY2JhMWU2MmQ4NzZk
MzM3NjI0NTA4NzViNWY0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRl
ckJ1aWx0aW5WYXJUZXN0cy5qcwpAQCAtMCwwICsxLDExMDkgQEAKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAq
LworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlckJ1aWx0aW5WYXJUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVS
YW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VMb2dJbWFnZScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuY29tbW9uLnRjdVBpeGVsRm9ybWF0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1UkdCQScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wu
Z2x1VmFyVHlwZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVy
ZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Bl
bmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJNdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yclJlbmRlcmVyJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yclJlbmRlclN0YXRlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZlcmVuY2Vy
ZW5kZXJlci5yclNoYWRpbmdDb250ZXh0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5yZWZl
cmVuY2VyZW5kZXJlci5yclZlcnRleEF0dHJpYicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
cmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhQYWNrZXQnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxl
cy5zaGFyZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNo
YXJlZC5nbHNTaGFkZXJFeGVjVXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAg
IHZhciBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyQnVpbHRpblZhclRlc3RzOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZU1hdGg7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVTdHJpbmc7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVS
YW5kb207CisgICAgdmFyIGdsc1NoYWRlckV4ZWNVdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2hh
ZGVyRXhlY1V0aWw7CisgICAgdmFyIGdsc1NoYWRlclJlbmRlckNhc2UgPSBtb2R1bGVzLnNoYXJl
ZC5nbHNTaGFkZXJSZW5kZXJDYXNlOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciBnbHVEcmF3VXRpbCA9IGZyYW1l
d29yay5vcGVuZ2wuZ2x1RHJhd1V0aWw7CisgICAgdmFyIGdsdVZhclR5cGUgPSBmcmFtZXdvcmsu
b3BlbmdsLmdsdVZhclR5cGU7CisgICAgdmFyIHRjdVBpeGVsRm9ybWF0ID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VQaXhlbEZvcm1hdDsKKyAgICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21t
b24udGN1U3VyZmFjZTsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZTsKKyAgICB2YXIgdGN1TG9nSW1hZ2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0lt
YWdlOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7
CisgICAgdmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21w
YXJlOworICAgIHZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOworICAgIHZh
ciByckdlbmVyaWNWZWN0b3IgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmlj
VmVjdG9yOworICAgIHZhciByckZyYWdtZW50T3BlcmF0aW9ucyA9IGZyYW1ld29yay5yZWZlcmVu
Y2VyZW5kZXJlci5yckZyYWdtZW50T3BlcmF0aW9uczsKKyAgICB2YXIgcnJNdWx0aXNhbXBsZVBp
eGVsQnVmZmVyQWNjZXNzID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyTXVsdGlzYW1w
bGVQaXhlbEJ1ZmZlckFjY2VzczsKKyAgICB2YXIgcnJSZW5kZXJlciA9IGZyYW1ld29yay5yZWZl
cmVuY2VyZW5kZXJlci5yclJlbmRlcmVyOworICAgIHZhciByclJlbmRlclN0YXRlID0gZnJhbWV3
b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyUmVuZGVyU3RhdGU7CisgICAgdmFyIHJyU2hhZGluZ0Nv
bnRleHQgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dDsKKyAg
ICB2YXIgcnJWZXJ0ZXhBdHRyaWIgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0
ZXhBdHRyaWI7CisgICAgdmFyIHJyVmVydGV4UGFja2V0ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJl
bmRlcmVyLnJyVmVydGV4UGFja2V0OworICAgIHZhciBzZ2xyU2hhZGVyUHJvZ3JhbSA9IGZyYW1l
d29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFtOworICAgIHZhciBz
Z2xyUmVmZXJlbmNlQ29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNn
bHJSZWZlcmVuY2VDb250ZXh0OworCisgICAgLyoqIEB0eXBlZGVmIHtmdW5jdGlvbigpOm51bWJl
cn0gKi8gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5HZXRDb25zdGFudFZhbHVlRnVuYzsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwbmFtZQorICAgICAqIEByZXR1cm4ge251
bWJlcn0gZ2V0UGFyYW1ldGVyIHJldHVybnMgdmFsdWVzIG9mIGFueSBraW5kCisgICAgICovCisg
ICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5nZXRJbnRlZ2VyID0gZnVuY3Rpb24ocG5hbWUp
IHsKKyAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVy
KHBuYW1lKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwbmFt
ZQorICAgICAqIEByZXR1cm4ge251bWJlcn0gZm9yY2luZyBudW1iZXIKKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLmdldFZlY3RvcnNGcm9tQ29tcHMgPSBmdW5jdGlvbihw
bmFtZSkgeworICAgICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdl
dFBhcmFtZXRlcihwbmFtZSkpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHZhbHVlJTQgPT09
IDAsICdFeHBlY3RlZCB2YWx1ZSB0byBiZSBkaXZpc2libGUgYnkgNC4nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZSAvIDQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHZhck5hbWUKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJCdWls
dGluVmFyVGVzdHMuR2V0Q29uc3RhbnRWYWx1ZUZ1bmN9IGdldFZhbHVlCisgICAgICogQHBhcmFt
IHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlNoYWRlckJ1aWx0aW5Db25zdGFudENhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjLCB2YXJOYW1lLCBnZXRWYWx1ZSwgc2hhZGVyVHlwZSkgeworICAgICAg
ICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX3Zhck5hbWUgPSB2YXJOYW1lOworICAgICAgICAv
KiogQHR5cGUge2VzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuR2V0Q29uc3RhbnRWYWx1ZUZ1bmN9
ICovIHRoaXMubV9nZXRWYWx1ZSA9IGdldFZhbHVlOworICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclByb2dyYW0uc2hhZGVyVHlwZX0gKi8gdGhpcy5tX3NoYWRlclR5cGUgPSBzaGFkZXJUeXBl
OworICAgIH07CisKKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlNoYWRlckJ1aWx0aW5D
b25zdGFudENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyQnVpbHRp
bkNvbnN0YW50Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyQnVpbHRpblZh
clRlc3RzLlNoYWRlckJ1aWx0aW5Db25zdGFudENhc2U7CisKKyAgICBlczNmU2hhZGVyQnVpbHRp
blZhclRlc3RzLlNoYWRlckJ1aWx0aW5Db25zdGFudENhc2UucHJvdG90eXBlLmRlaW5pdCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAvLyBhbiBhdHRlbXB0IHRvIGNsZWFudXAgdGhlIEdMIHN0YXRl
IHdoZW4gdGhlIHRlc3QgZmFpbHMKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1NoYWRl
ckJ1aWxkSW5Db25zdGFudENhc2UuZGVpbml0KCknKTsKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShu
dWxsKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAg
ICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51bGwpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlw
ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJOYW1lCisgICAgICogQHJldHVybiB7Z2xzU2hh
ZGVyRXhlY1V0aWwuU2hhZGVyRXhlY3V0b3J9CisgICAgICovCisgICAgZXMzZlNoYWRlckJ1aWx0
aW5WYXJUZXN0cy5TaGFkZXJCdWlsdGluQ29uc3RhbnRDYXNlLnByb3RvdHlwZS5jcmVhdGVHZXRD
b25zdGFudEV4ZWN1dG9yID0gZnVuY3Rpb24oc2hhZGVyVHlwZSwgdmFyTmFtZSkgeworICAgICAg
ICAvKiogQHR5cGUge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWN9ICovIHZhciBzaGFkZXJT
cGVjID0gbmV3IGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWMoKTsKKyAgICAgICAgc2hhZGVy
U3BlYy52ZXJzaW9uID0gZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTOworICAgICAg
ICBzaGFkZXJTcGVjLnNvdXJjZSA9ICdyZXN1bHQgPSAnICsgdmFyTmFtZSArICc7XG4nOworICAg
ICAgICBzaGFkZXJTcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9s
KCdyZXN1bHQnLAorICAgICAgICAgICAgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdI
UCkpKTsKKyAgICAgICAgcmV0dXJuIGdsc1NoYWRlckV4ZWNVdGlsLmNyZWF0ZUV4ZWN1dG9yKHNo
YWRlclR5cGUsIHNoYWRlclNwZWMpOworCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZXMzZlNoYWRlckJ1
aWx0aW5WYXJUZXN0cy5TaGFkZXJCdWlsdGluQ29uc3RhbnRDYXNlLnByb3RvdHlwZS5pdGVyYXRl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2hhZGVyRXhlY1V0aWwuU2hh
ZGVyRXhlY3V0b3J9ICovCisgICAgICAgICB2YXIgc2hhZGVyRXhlY3V0b3IgPSB0aGlzLmNyZWF0
ZUdldENvbnN0YW50RXhlY3V0b3IodGhpcy5tX3NoYWRlclR5cGUsIHRoaXMubV92YXJOYW1lKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZlcmVuY2UgPSB0aGlzLm1fZ2V0
VmFsdWUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnb29nLk51bWJlckFycmF5fSAqLyB2YXIgc2hh
ZGVyRXhlY3V0b3JSZXN1bHQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVz
dWx0OworCisgICAgICAgIGlmICghc2hhZGVyRXhlY3V0b3IuaXNPaygpKQorICAgICAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhmYWxzZSwgJ0NvbXBpbGUgZmFpbGVkJywgZmFsc2UsIHRydWUpOwor
CisgICAgICAgIHNoYWRlckV4ZWN1dG9yLnVzZVByb2dyYW0oKTsKKworICAgICAgICBzaGFkZXJF
eGVjdXRvclJlc3VsdCA9IHNoYWRlckV4ZWN1dG9yLmV4ZWN1dGUoMSwgbnVsbCk7CisgICAgICAg
IHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KHNoYWRlckV4ZWN1dG9yUmVzdWx0WzBdLmJ1ZmZlcilb
MF07CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUodGhpcy5tX3Zhck5hbWUgKyAnID0g
JyArIHJlc3VsdCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCAhPSByZWZlcmVuY2UpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogRXhwZWN0ZWQgJyArIHRoaXMubV92
YXJOYW1lICsgJyA9ICcgKyByZWZlcmVuY2UgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAnVGVz
dCBzaGFkZXI6JyArIHNoYWRlckV4ZWN1dG9yLm1fcHJvZ3JhbS5nZXRQcm9ncmFtSW5mbygpLmlu
Zm9Mb2cpOworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ludmFsaWQgYnVpbHRpbiBj
b25zdGFudCB2YWx1ZScsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0
UGFzc2VkT3B0aW9ucygnUGFzcycsIHRydWUpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2Fz
ZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBzdHJ1Y3QK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG5lYXIKKyAgICAg
KiBAcGFyYW0ge251bWJlcj19IGZhcgorICAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFy
VGVzdHMuRGVwdGhSYW5nZVBhcmFtcyA9IGZ1bmN0aW9uKG5lYXIsIGZhcikgeworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy56TmVhciA9IG5lYXIgPT09IHVuZGVmaW5lZCA/IDAu
MCA6IG5lYXI7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnpGYXIgPSBmYXIg
PT09IHVuZGVmaW5lZCA/IDEuMCA6IGZhcjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZh
bHVhdG9yfQorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5EZXB0aFJh
bmdlUGFyYW1zfSBwYXJhbXMKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3Rz
LkRlcHRoUmFuZ2VFdmFsdWF0b3IgPSBmdW5jdGlvbihwYXJhbXMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkRlcHRoUmFuZ2VQYXJhbXN9ICovIHRoaXMu
bV9wYXJhbXMgPSBwYXJhbXM7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVz
dHMuRGVwdGhSYW5nZUV2YWx1YXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1NoYWRl
clJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9yLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckJ1
aWx0aW5WYXJUZXN0cy5EZXB0aFJhbmdlRXZhbHVhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRGVwdGhSYW5nZUV2YWx1YXRvcjsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0g
YworICAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRGVwdGhSYW5nZUV2YWx1
YXRvci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgek5lYXIgPSBkZU1hdGguY2xhbXAodGhpcy5tX3BhcmFtcy56TmVh
ciwgMC4wLCAxLjApOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHpGYXIgPSBk
ZU1hdGguY2xhbXAodGhpcy5tX3BhcmFtcy56RmFyLCAwLjAsIDEuMCk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgZGlmZiA9IHpGYXIgLSB6TmVhcjsKKyAgICAgICAgYy5jb2xv
clswXSA9IHpOZWFyOworICAgICAgICBjLmNvbG9yWzFdID0gekZhcjsKKyAgICAgICAgYy5jb2xv
clsyXSA9IGRpZmYgKiAwLjUgKyAwLjU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRl
ckNhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzYworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisgICAgICovCisg
ICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5TaGFkZXJEZXB0aFJhbmdlVGVzdCA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2MsIGlzVmVydGV4Q2FzZSkgeworICAgICAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlclJlbmRlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBpc1ZlcnRleENhc2Up
OworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRGVwdGhSYW5n
ZVBhcmFtc30gKi8gdGhpcy5tX2RlcHRoUmFuZ2UgPSBuZXcgZXMzZlNoYWRlckJ1aWx0aW5WYXJU
ZXN0cy5EZXB0aFJhbmdlUGFyYW1zKCk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlckJ1
aWx0aW5WYXJUZXN0cy5EZXB0aFJhbmdlRXZhbHVhdG9yfSAqLyB0aGlzLm1fZXZhbHVhdG9yID0g
bmV3IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRGVwdGhSYW5nZUV2YWx1YXRvcih0aGlzLm1f
ZGVwdGhSYW5nZSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1faXRlck5k
eCA9IDA7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyRGVw
dGhSYW5nZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlclJlbmRlckNhc2UucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRl
c3RzLlNoYWRlckRlcHRoUmFuZ2VUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFk
ZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyRGVwdGhSYW5nZVRlc3Q7CisKKyAgICBlczNmU2hhZGVy
QnVpbHRpblZhclRlc3RzLlNoYWRlckRlcHRoUmFuZ2VUZXN0LnByb3RvdHlwZS5pbml0ID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZGVmYXVsdFZlcnRT
cmMgPSAnJyArCisgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAg
ICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4g
KHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRp
b24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKyAgICAgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciBkZWZhdWx0RnJhZ1NyYyA9ICcnICsKKyAgICAgICAgICAgICcj
dmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjNCB2X2NvbG9y
O1xuJyArCisgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVj
NCBvX2NvbG9yO1xuXG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAg
ICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgb19jb2xvciA9IHZfY29sb3I7XG4nICsK
KyAgICAgICAgICAgICd9XG4nOworCisgICAgICAgIC8vIENvbnN0cnVjdCBzaGFkZXIuCisgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc3JjID0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsK
KyAgICAgICAgaWYgKHRoaXMubV9pc1ZlcnRleENhc2UpCisgICAgICAgICAgICBzcmMgKz0gJ2lu
IGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICAgICdvdXQgbWVk
aXVtcCB2ZWM0IHZfY29sb3I7XG4nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcmMgKz0g
J2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbic7CisKKyAg
ICAgICAgc3JjICs9ICd2b2lkIG1haW4gKHZvaWQpXG57XG4nICsKKyAgICAgICAgICAgICAgICdc
dCcgKyAodGhpcy5tX2lzVmVydGV4Q2FzZSA/ICd2X2NvbG9yJyA6ICdvX2NvbG9yJykgKyAnID0g
dmVjNChnbF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFuZ2UuZmFyLCBnbF9EZXB0aFJhbmdl
LmRpZmYqMC41ICsgMC41LCAxLjApO1xuJzsKKworICAgICAgICBpZiAodGhpcy5tX2lzVmVydGV4
Q2FzZSkKKyAgICAgICAgICAgIHNyYyArPSAnXHRnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4n
OworCisgICAgICAgIHNyYyArPSAnfVxuJzsKKworICAgICAgICB0aGlzLm1fdmVydFNoYWRlclNv
dXJjZSA9IHRoaXMubV9pc1ZlcnRleENhc2UgPyBzcmMgOiBkZWZhdWx0VmVydFNyYzsKKyAgICAg
ICAgdGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2UgPSB0aGlzLm1faXNWZXJ0ZXhDYXNlID8gZGVmYXVs
dEZyYWdTcmMgOiBzcmM7CisKKyAgICAgICAgdGhpcy5wb3N0aW5pdCgpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAq
LworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyRGVwdGhSYW5nZVRlc3QucHJv
dG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkRlcHRoUmFuZ2VQYXJhbXM+fSAqLyB2YXIgY2FzZXMg
PSBbCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5EZXB0aFJhbmdl
UGFyYW1zKDAuMCwgMS4wKQorICAgICAgICBdOworCisgICAgICAgIHRoaXMubV9kZXB0aFJhbmdl
ID0gY2FzZXNbdGhpcy5tX2l0ZXJOZHhdOworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
Z2wuZGVwdGhSYW5nZSgnICsgdGhpcy5tX2RlcHRoUmFuZ2Uuek5lYXIgKyAnLCAnICsgdGhpcy5t
X2RlcHRoUmFuZ2UuekZhciArICcpJyk7CisgICAgICAgIGdsLmRlcHRoUmFuZ2UodGhpcy5tX2Rl
cHRoUmFuZ2Uuek5lYXIsIHRoaXMubV9kZXB0aFJhbmdlLnpGYXIpOworCisgICAgICAgIHRoaXMu
cG9zdGl0ZXJhdGUoKTsKKyAgICAgICAgdGhpcy5tX2l0ZXJOZHggKz0gMTsKKworICAgICAgICBp
ZiAodGhpcy5tX2l0ZXJOZHggPT0gY2FzZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHRj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkZyYWdDb29y
ZFhZWkNhc2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2Fs
bCh0aGlzLCAnZnJhZ2Nvb3JkX3h5eicsICdnbF9GcmFnQ29vcmQueHl6IFRlc3QnKTsKKyAgICB9
OworCisgICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRYWVpDYXNlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAg
ICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkZyYWdDb29yZFhZWkNhc2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRYWVpDYXNlOwor
CisgICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRYWVpDYXNlLnByb3RvdHlw
ZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgd2lkdGggPSBnbC5kcmF3aW5nQnVmZmVyV2lkdGg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgaGVpZ2h0ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodDsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGhyZXNob2xkID0gZGVNYXRoLmFkZChbMSwg
MSwgMSwgMV0sIHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNvbnRleHQoZ2wpLmdldENv
bG9yVGhyZXNob2xkKCkpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciBzY2FsZSA9IFsxLiAvIHdpZHRoLCAxLiAvIGhlaWdodCwgMS4wXTsKKworICAgICAgICAvKiog
QHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHRlc3RJbWcgPSBuZXcgdGN1U3VyZmFj
ZS5TdXJmYWNlKHdpZHRoLCBoZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2Uu
U3VyZmFjZX0gKi8gdmFyIHJlZkltZyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhl
aWdodCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2dHhTb3VyY2UgPSAn
JyArCisgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdpbiBo
aWdocCB2ZWM0IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciBmcmFnU291cmNlID0gJycgKworICAgICAgICAgICAgJyN2ZXJzaW9uIDMw
MCBlc1xuJyArCisgICAgICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWMzIHVfc2NhbGU7XG4nICsK
KyAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29s
b3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAg
ICd7XG4nICsKKyAgICAgICAgICAgICcgb19jb2xvciA9IHZlYzQoZ2xfRnJhZ0Nvb3JkLnh5eip1
X3NjYWxlLCAxLjApO1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKyAgICAgICAgLyoqIEB0eXBl
IHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGds
dVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4
RnJhZ1NvdXJjZXModnR4U291cmNlLCBmcmFnU291cmNlKSk7CisKKyAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUocHJvZ3JhbS5nZXRQcm9ncmFtSW5mbygpLmluZm9Mb2cpOworCisgICAgICAg
IGlmICghcHJvZ3JhbS5pc09rKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBp
bGUgZmFpbGVkJyk7CisKKyAgICAgICAgLy8gRHJhdyB3aXRoIEdMLgorICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwb3NpdGlvbnMgPSBbCisgICAgICAgICAgICAtMS4w
LCAxLjAsIC0xLjAsIDEuMCwKKyAgICAgICAgICAgIC0xLjAsIC0xLjAsIDAuMCwgMS4wLAorICAg
ICAgICAgICAgIDEuMCwgMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgICAxLjAsIC0xLjAsIDEu
MCwgMS4wCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGluZGljZXMgPSBbMCwgMSwgMiwgMiwgMSwgM107CisKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHNjYWxlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndV9zY2FsZScpOworICAgICAgICAvKiogQHR5cGUg
e2dsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZ30gKi8gdmFyIHBvc0JpbmRpbmcgPSBnbHVE
cmF3VXRpbC5uZXdGbG9hdFZlcnRleEFycmF5QmluZGluZygnYV9wb3NpdGlvbicsIDQsIDQsIDAs
IHBvc2l0aW9ucyk7CisKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0o
KSk7CisgICAgICAgIGdsLnVuaWZvcm0zZnYoc2NhbGVMb2MsIHNjYWxlKTsKKworICAgICAgICBn
bC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZ2x1RHJhd1V0aWwuZHJh
dyhnbCwgcHJvZ3JhbS5nZXRQcm9ncmFtKCksIFtwb3NCaW5kaW5nXSwgZ2x1RHJhd1V0aWwudHJp
YW5nbGVzKGluZGljZXMpKTsKKworICAgICAgICB0ZXN0SW1nLnJlYWRWaWV3cG9ydChnbCwgWzAs
IDAsIHdpZHRoLCBoZWlnaHRdKTsKKworICAgICAgICAvLyBEcmF3IHJlZmVyZW5jZQorICAgICAg
ICBmb3IgKHZhciB5ID0gMDsgeSA8IHJlZkltZy5nZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHJlZkltZy5nZXRXaWR0aCgpOyB4KyspIHsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhmID0gKHggKyAuNSkgLyByZWZJ
bWcuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHlmID0gKHJlZkltZy5nZXRIZWlnaHQoKSAtIHkgLSAxICsgLjUpIC8gcmVmSW1nLmdldEhlaWdo
dCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeiA9ICh4ZiAr
IHlmKSAvIDIuMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBmcmFnQ29vcmQgPSBbeCArIC41LCB5ICsgLjUsIHpdOworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNjYWxlZEZDID0gZGVNYXRoLm11bHRpcGx5
KGZyYWdDb29yZCwgc2NhbGUpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8KKyAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBbCisgICAgICAgICAgICAgICAg
ICAgIGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKHNjYWxlZEZDWzBdICogMjU1ICsgMC41KSwgMCwg
MjU1KSwKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmNsYW1wKE1hdGguZmxvb3Ioc2NhbGVk
RkNbMV0gKiAyNTUgKyAwLjUpLCAwLCAyNTUpLAorICAgICAgICAgICAgICAgICAgICBkZU1hdGgu
Y2xhbXAoTWF0aC5mbG9vcihzY2FsZWRGQ1syXSAqIDI1NSArIDAuNSksIDAsIDI1NSksCisgICAg
ICAgICAgICAgICAgICAgIDI1NV07CisgICAgICAgICAgICAgICAgcmVmSW1nLnNldFBpeGVsKHgs
IHksIGNvbG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXBh
cmUKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IHRjdUltYWdlQ29t
cGFyZS5waXhlbFRocmVzaG9sZENvbXBhcmUoJ1Jlc3VsdCcsICdJbWFnZSBjb21wYXJpc29uIHJl
c3VsdCcsIHJlZkltZywgdGVzdEltZywgdGhyZXNob2xkKTsKKworICAgICAgICBpZiAoIWlzT2sp
CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnSW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQn
LCBmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdQ
YXNzJywgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQu
U1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBz
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB3CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IG54CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG55CisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMucHJvamVjdGVkVHJpSW50ZXJw
b2xhdGUgPSBmdW5jdGlvbihzLCB3LCBueCwgbnkpIHsKKyAgICAgICAgcmV0dXJuIChzWzBdICog
KDEuMCAtIG54IC0gbnkpL3dbMF0gKyBzWzFdICogbnkgLyB3WzFdICsgc1syXSAqIG54IC8gd1sy
XSkgLyAoKDEuMCAtIG54IC0gbnkpIC8gd1swXSArIG55IC8gd1sxXSArIG54IC8gd1syXSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0
Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRl
c3RzLkZyYWdDb29yZFdDYXNlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRl
cXBUZXN0LmNhbGwodGhpcywgJ2ZyYWdjb29yZF93JywgJ2dsX0ZyYWdDb29yZC53IFRlc3QnKTsK
KyAgICB9OworCisgICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRXQ2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7
CisgICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRXQ2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkZyYWdDb29yZFdDYXNlOwor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLkZyYWdDb29yZFdDYXNlLnByb3Rv
dHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgd2lkdGggPSBnbC5kcmF3aW5nQnVmZmVyV2lkdGg7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodDsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGhyZXNob2xkID0gZGVNYXRoLmFkZChb
MSwgMSwgMSwgMV0sIHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNvbnRleHQoZ2wpLmdl
dENvbG9yVGhyZXNob2xkKCkpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJm
YWNlfSAqLyB2YXIgdGVzdEltZyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVmSW1n
ID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB3ID0gWzEuNywgMi4wLCAxLjIsIDEuMF07CisK
KyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2dHhTb3VyY2UgPSAnI3ZlcnNpb24g
MzAwIGVzXG4nICsKKyAgICAgICAgICAgICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nICsK
KyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsK
KyAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAg
ICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdTb3VyY2Ug
PSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4g
KHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgb19jb2xvciA9
IHZlYzQoMC4wLCAxLjAvZ2xfRnJhZ0Nvb3JkLncgLSAxLjAsIDAuMCwgMS4wKTtcbicgKworICAg
ICAgICAgICAgJ31cbic7CisKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVy
UHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModnR4U291cmNl
LCBmcmFnU291cmNlKSk7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKHByb2dyYW0uZ2V0
UHJvZ3JhbUluZm8oKS5pbmZvTG9nKTsKKworICAgICAgICBpZiAoIXByb2dyYW0uaXNPaygpKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIGZhaWxlZCcpOworCisgICAgICAg
IC8vIERyYXcgd2l0aCBHTC4KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgcG9zaXRpb25zID0gWworICAgICAgICAgICAgLXdbMF0sIHdbMF0sIDAuMCwgd1swXSwKKyAg
ICAgICAgICAgIC13WzFdLCAtd1sxXSwgMC4wLCB3WzFdLAorICAgICAgICAgICAgd1syXSwgd1sy
XSwgMC4wLCB3WzJdLAorICAgICAgICAgICAgd1szXSwgLXdbM10sIDAuMCwgd1szXQorICAgICAg
ICBdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBpbmRpY2VzID0g
WzAsIDEsIDIsIDIsIDEsIDNdOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuVmVy
dGV4QXJyYXlCaW5kaW5nfSAqLyB2YXIgcG9zQmluZGluZyA9IGdsdURyYXdVdGlsLm5ld0Zsb2F0
VmVydGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uJywgNCwgNCwgMCwgcG9zaXRpb25zKTsKKyAg
ICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0oKSk7CisKKyAgICAgICAgZ2x1
RHJhd1V0aWwuZHJhdyhnbCwgcHJvZ3JhbS5nZXRQcm9ncmFtKCksIFtwb3NCaW5kaW5nXSwgZ2x1
RHJhd1V0aWwudHJpYW5nbGVzKGluZGljZXMpKTsKKyAgICAgICAgdGVzdEltZy5yZWFkVmlld3Bv
cnQoZ2wsIFswLCAwLCB3aWR0aCwgaGVpZ2h0XSk7CisKKyAgICAgICAgLy8gRHJhdyByZWZlcmVu
Y2UKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZWZJbWcuZ2V0SGVpZ2h0KCk7IHkrKykg
eworICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByZWZJbWcuZ2V0V2lkdGgoKTsgeCsr
KSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4ZiA9ICh4ICsg
MC41KSAvIHJlZkltZy5nZXRXaWR0aCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgeWYgPSAocmVmSW1nLmdldEhlaWdodCgpIC0geSAtIDEgKyAwLjUpIC8gcmVm
SW1nLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgb293ID0gKCh4ZiArIHlmKSA8IDEuMCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5wcm9qZWN0ZWRU
cmlJbnRlcnBvbGF0ZShbd1swXSwgd1sxXSwgd1syXV0sIFt3WzBdLCB3WzFdLCB3WzJdXSwgeGYs
IHlmKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLnByb2plY3RlZFRyaUludGVycG9sYXRlKFt3WzNdLCB3
WzJdLCB3WzFdXSwgW3dbM10sIHdbMl0sIHdbMV1dLCAxLjAgLSB4ZiwgMS4wIC0geWYpOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgICAgICAg
ICB2YXIgY29sb3IgPSBbCisgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAgIGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKChvb3cgLSAxLjApICogMjU1ICsgMC41KSwgMCwg
MjU1KSwKKyAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgMjU1XTsK
KyAgICAgICAgICAgICAgICByZWZJbWcuc2V0UGl4ZWwoeCwgeSwgY29sb3IpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcGFyZQorICAgICAgICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovIHZhciBpc09rID0gdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29t
cGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVzdWx0JywgcmVmSW1nLCB0ZXN0SW1n
LCB0aHJlc2hvbGQpOworCisgICAgICAgIGlmICghaXNPaykgeworICAgICAgICAgICAgdGVzdEZh
aWxlZE9wdGlvbnMoJ0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkJywgZmFsc2UpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7CisKKyAg
ICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuUG9pbnRD
b29yZENhc2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2Fs
bCh0aGlzLCAncG9pbnRjb29yZCcsICdnbF9Qb2ludENvb3JkIFRlc3QnKTsKKyAgICB9OworCisg
ICAgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5Qb2ludENvb3JkQ2FzZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlNo
YWRlckJ1aWx0aW5WYXJUZXN0cy5Qb2ludENvb3JkQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlBvaW50Q29vcmRDYXNlOworCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlBvaW50Q29vcmRDYXNlLnByb3RvdHlwZS5pdGVyYXRl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGgg
PSBNYXRoLm1pbigyNTYsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gTWF0aC5taW4oMjU2LCBnbC5kcmF3aW5nQnVmZmVy
SGVpZ2h0KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0aHJlc2hvbGQgPSAw
LjAyOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtUG9pbnRzID0gODsK
KworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb29yZHMgPSBbXTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcG9pbnRTaXplUmFuZ2Ug
PSBbMC4wLCAwLjBdOworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFy
IHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHgxNDVmYSk7CisgICAgICAgIC8qKiBAdHlwZSB7
dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgdGVzdEltZyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZh
Y2Uod2lkdGgsIGhlaWdodCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNl
fSAqLyB2YXIgcmVmSW1nID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsK
KworICAgICAgICBwb2ludFNpemVSYW5nZSA9IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
KGdsLmdldFBhcmFtZXRlcihnbC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpKTsKKworICAgICAg
ICBpZiAocG9pbnRTaXplUmFuZ2VbMF0gPD0gMC4wIHx8IHBvaW50U2l6ZVJhbmdlWzFdIDw9IDAu
MCB8fCBwb2ludFNpemVSYW5nZVsxXSA8IHBvaW50U2l6ZVJhbmdlWzBdKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdsLkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRScpOwor
CisgICAgICAgIC8vIENvbXB1dGUgY29vcmRpbmF0ZXMuCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtUG9pbnRzOyBpKyspCisgICAgICAgICAgICBjb29yZHMucHVzaChbCisgICAgICAg
ICAgICAgICAgcm5kLmdldEZsb2F0KC0wLjksIDAuOSksCisgICAgICAgICAgICAgICAgcm5kLmdl
dEZsb2F0KC0wLjksIDAuOSksCisgICAgICAgICAgICAgICAgcm5kLmdldEZsb2F0KHBvaW50U2l6
ZVJhbmdlWzBdLCBwb2ludFNpemVSYW5nZVsxXSkKKyAgICAgICAgICAgIF0pOworCisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4U291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xu
JyArCisgICAgICAgICAgICAnaW4gaGlnaHAgdmVjMyBhX3Bvc2l0aW9uU2l6ZTtcbicgKworICAg
ICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAg
ICAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvblNpemUueHksIDAuMCwgMS4w
KTtcbicgKworICAgICAgICAgICAgJyBnbF9Qb2ludFNpemUgPSBhX3Bvc2l0aW9uU2l6ZS56O1xu
JyArCisgICAgICAgICAgICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGZyYWdTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdsYXlv
dXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsKKyAgICAgICAg
ICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAg
ICAgICcgb19jb2xvciA9IHZlYzQoZ2xfUG9pbnRDb29yZCwgMC4wLCAxLjApO1xuJyArCisgICAg
ICAgICAgICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hh
ZGVyUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQ
cm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2dHhTb3VyY2Us
IGZyYWdTb3VyY2UpKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUocHJvZ3JhbS5nZXRQ
cm9ncmFtSW5mbygpLmluZm9Mb2cpOworCisgICAgICAgIGlmICghcHJvZ3JhbS5pc09rKCkpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgZmFpbGVkJyk7CisKKyAgICAgICAg
Ly8gRHJhdyB3aXRoIEdMLgorICAgICAgICB2YXIgbmV3Q29vcmRzID0gW10uY29uY2F0LmFwcGx5
KFtdLCBjb29yZHMpOworCisgICAgICAgIC8vIC8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuVmVydGV4
QXJyYXlCaW5kaW5nfSAqLyB2YXIgcG9zQmluZGluZyA9IGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVy
dGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uU2l6ZScsIDMsIGNvb3Jkcy5sZW5ndGgsIDAsIGNv
b3Jkcyk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5n
fSAqLworICAgICAgICB2YXIgcG9zQmluZGluZyA9IGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVydGV4
QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uU2l6ZScsIDMsIGNvb3Jkcy5sZW5ndGgsIDEyLCBuZXdD
b29yZHMpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0WCA9IHJu
ZC5nZXRJbnQoMCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIC0gd2lkdGgpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0WSA9IHJuZC5nZXRJbnQoMCwgZ2wuZHJhd2lu
Z0J1ZmZlckhlaWdodCAtIGhlaWdodCk7CisKKyAgICAgICAgZ2wudmlld3BvcnQodmlld3BvcnRY
LCB2aWV3cG9ydFksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBnbC5jbGVhckNvbG9yKDAuMCwg
MC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
CisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworCisgICAgICAg
IGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCBbcG9zQmluZGluZ10s
IGdsdURyYXdVdGlsLnBvaW50c0Zyb21FbGVtZW50cyhjb29yZHMubGVuZ3RoKSk7CisgICAgICAg
IHRlc3RJbWcucmVhZFZpZXdwb3J0KGdsLCBbdmlld3BvcnRYLCB2aWV3cG9ydFksIHdpZHRoLCBo
ZWlnaHRdKTsKKworICAgICAgICAvLyBEcmF3IHJlZmVyZW5jZQorICAgICAgICByZWZJbWcuZ2V0
QWNjZXNzKCkuY2xlYXIoWzAuMCwgMC4wLCAwLjAsIDEuMF0pOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNvb3Jkcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB4MCA9IE1hdGgucm91bmQod2lkdGggKiAoY29vcmRzW2ldWzBdICogMC41
ICsgMC41KSAtIGNvb3Jkc1tpXVsyXSAqIDAuNSk7CisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHkwID0gTWF0aC5yb3VuZChoZWlnaHQqICAoY29vcmRzW2ldWzFdICogMC41
ICsgMC41KSAtIGNvb3Jkc1tpXVsyXSAqIDAuNSk7CisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHgxID0gTWF0aC5yb3VuZCh3aWR0aCAqIChjb29yZHNbaV1bMF0gKiAwLjUg
KyAwLjUpICsgY29vcmRzW2ldWzJdICogMC41KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgeTEgPSBNYXRoLnJvdW5kKGhlaWdodCAqIChjb29yZHNbaV1bMV0gKiAwLjUg
KyAwLjUpICsgY29vcmRzW2ldWzJdICogMC41KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdyA9IHgxIC0geDA7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGggPSB5MSAtIHkwOworCisgICAgICAgICAgICBmb3IgKHZhciB5byA9IDA7IHlvIDwg
aDsgeW8rKykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHhvID0gMDsgeG8gPCB3OyB4bysr
KSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeGYgPSAo
eG8gKyAwLjUpIC8gdzsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciB5ZiA9ICgoaCAtIHlvIC0gMSkgKyAwLjUpIC8gaDsKKyAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkeCA9IHgwICsgeG87CisgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHkgPSB5MCArIHlvOworICAgICAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAgICAgICAgICAg
IHZhciBjb2xvciA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRo
LmZsb29yKHhmICogMjU1ICsgMC41KSwgMCwgMjU1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlTWF0aC5jbGFtcChNYXRoLmZsb29yKHlmICogMjU1ICsgMC41KSwgMCwgMjU1KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAyNTVdOworICAg
ICAgICAgICAgICAgICAgICBpZiAoZGVNYXRoLmRlSW5Cb3VuZHMzMihkeCwgMCwgcmVmSW1nLmdl
dFdpZHRoKCkpICYmIGRlTWF0aC5kZUluQm91bmRzMzIoZHksIDAsIHJlZkltZy5nZXRIZWlnaHQo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZWZJbWcuc2V0UGl4ZWwoZHgsIGR5LCBjb2xv
cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gQ29tcGFyZQorICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc09rID0g
dGN1SW1hZ2VDb21wYXJlLmZ1enp5Q29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24g
cmVzdWx0JywgcmVmSW1nLmdldEFjY2VzcygpLCB0ZXN0SW1nLmdldEFjY2VzcygpLCB0aHJlc2hv
bGQpOworCisgICAgICAgIGlmICghaXNPaykgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlv
bnMoJ0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkJywgZmFsc2UpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7CisKKyAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRnJvbnRGYWNpbmdDYXNl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywg
J2Zyb250ZmFjaW5nJywgJ2dsX0Zyb250RmFjaW5nIFRlc3QnKTsKKyAgICB9OworCisgICAgZXMz
ZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5Gcm9udEZhY2luZ0Nhc2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJC
dWlsdGluVmFyVGVzdHMuRnJvbnRGYWNpbmdDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVz
M2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRnJvbnRGYWNpbmdDYXNlOworCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBlczNm
U2hhZGVyQnVpbHRpblZhclRlc3RzLkZyb250RmFjaW5nQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBUZXN0IGNhc2UgcmVuZGVycyB0d28gYWRqZWNlbnQg
cXVhZHMsIHdoZXJlIGxlZnQgaXMgaGFzIGZyb250LWZhY2luZworICAgICAgICAvLyB0cmlhZ2xl
cyBhbmQgcmlnaHQgYmFjay1mYWNpbmcuIENvbG9yIGlzIHNlbGVjdGVkIGJhc2VkIG9uIGdsX0Zy
b250RmFjaW5nCisgICAgICAgIC8vIHZhbHVlLgorICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9t
LlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHg4OWYyYyk7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSBNYXRoLm1pbig2NCwgZ2wuZHJh
d2luZ0J1ZmZlcldpZHRoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWln
aHQgPSBNYXRoLm1pbig2NCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdmlld3BvcnRYID0gcm5kLmdldEludCgwLCBnbC5kcmF3aW5n
QnVmZmVyV2lkdGggLSB3aWR0aCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
dmlld3BvcnRZID0gcm5kLmdldEludCgwLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0IC0gaGVpZ2h0
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGhyZXNob2xkID0g
ZGVNYXRoLmFkZChbMSwgMSwgMSwgMV0sIHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNv
bnRleHQoZ2wpLmdldENvbG9yVGhyZXNob2xkKCkpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1
U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgdGVzdEltZyA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uo
d2lkdGgsIGhlaWdodCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAq
LyB2YXIgcmVmSW1nID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKwor
ICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZ0eFNvdXJjZSA9ICcjdmVyc2lvbiAz
MDAgZXNcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKwor
ICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKwor
ICAgICAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAg
ICd9XG4nOworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ1NvdXJjZSA9
ICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworICAgICAgICAgICAgJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBpZiAoZ2xfRnJv
bnRGYWNpbmcpXG4nICsKKyAgICAgICAgICAgICcgb19jb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAu
MCwgMS4wKTtcbicgKworICAgICAgICAgICAgJyBlbHNlXG4nICsKKyAgICAgICAgICAgICcgb19j
b2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTtcbicgKworICAgICAgICAgICAgJ31cbic7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICov
IHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1
U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModnR4U291cmNlLCBmcmFnU291cmNlKSk7
CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUocHJvZ3JhbS5nZXRQcm9ncmFtSW5mbygp
LmluZm9Mb2cpOworCisgICAgICAgIGlmICghcHJvZ3JhbS5pc09rKCkpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgZmFpbGVkJyk7CisKKyAgICAgICAgLy8gRHJhdyB3aXRo
IEdMLgorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwb3NpdGlvbnMg
PSBbCisgICAgICAgICAgICAtMS4wLCAxLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgLTEuMCwg
LTEuMCwgMC4wLCAxLjAsCisgICAgICAgICAgICAxLjAsIDEuMCwgMC4wLCAxLjAsCisgICAgICAg
ICAgICAxLjAsIC0xLjAsIDAuMCwgMS4wCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kaWNlc0NDVyA9IFswLCAxLCAyLCAyLCAxLCAzXTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kaWNlc0NXID0gWzIs
IDEsIDAsIDMsIDEsIDJdOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1RHJhd1V0aWwuVmVydGV4
QXJyYXlCaW5kaW5nfSAqLyB2YXIgcG9zQmluZGluZyA9IGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVy
dGV4QXJyYXlCaW5kaW5nKCdhX3Bvc2l0aW9uJywgNCwgNCwgMCwgcG9zaXRpb25zKTsKKworICAg
ICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKworICAgICAgICBnbC52
aWV3cG9ydCh2aWV3cG9ydFgsIHZpZXdwb3J0WSwgTWF0aC5mbG9vcih3aWR0aCAvIDIpLCBoZWln
aHQpOworCisgICAgICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2dyYW0uZ2V0UHJvZ3JhbSgp
LCBbcG9zQmluZGluZ10sIGdsdURyYXdVdGlsLnRyaWFuZ2xlcyhpbmRpY2VzQ0NXKSk7CisKKyAg
ICAgICAgZ2wudmlld3BvcnQodmlld3BvcnRYICsgTWF0aC5mbG9vcih3aWR0aCAvIDIpLCB2aWV3
cG9ydFksIHdpZHRoIC0gTWF0aC5mbG9vcih3aWR0aCAvIDIpLCBoZWlnaHQpOworICAgICAgICBn
bHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9ncmFtLmdldFByb2dyYW0oKSwgW3Bvc0JpbmRpbmddLCBn
bHVEcmF3VXRpbC50cmlhbmdsZXMoaW5kaWNlc0NXKSk7CisgICAgICAgIHRlc3RJbWcucmVhZFZp
ZXdwb3J0KGdsLCBbdmlld3BvcnRYLCB2aWV3cG9ydFksIHdpZHRoLCBoZWlnaHRdKTsKKyAgICAg
ICAgLy8gRHJhdyByZWZlcmVuY2UKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZWZJbWcu
Z2V0SGVpZ2h0KCk7IHkrKykgeworICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBNYXRo
LmZsb29yKHJlZkltZy5nZXRXaWR0aCgpIC8gMik7IHgrKykKKyAgICAgICAgICAgICAgICByZWZJ
bWcuc2V0UGl4ZWwoeCwgeSwgdGN1UkdCQS5SR0JBLmdyZWVuLnRvSVZlYygpKTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgeCA9IE1hdGguZmxvb3IocmVmSW1nLmdldFdpZHRoKCkgLyAyKTsgeCA8
IHJlZkltZy5nZXRXaWR0aCgpOyB4KyspCisgICAgICAgICAgICAgICAgcmVmSW1nLnNldFBpeGVs
KHgsIHksIHRjdVJHQkEuUkdCQS5ibHVlLnRvSVZlYygpKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIENvbXBhcmUKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IHRj
dUltYWdlQ29tcGFyZS5waXhlbFRocmVzaG9sZENvbXBhcmUoJ1Jlc3VsdCcsICdJbWFnZSBjb21w
YXJpc29uIHJlc3VsdCcsIHJlZkltZywgdGVzdEltZywgdGhyZXNob2xkKTsKKworICAgICAgICBp
ZiAoIWlzT2spIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJp
c29uIGZhaWxlZCcsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0UGFz
c2VkT3B0aW9ucygnUGFzcycsIHRydWUpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEQ2FzZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICd2ZXJ0ZXhfaWQnLCAnZ2xfVmVy
dGV4SUQgVGVzdCcpOworICAgICAgICAvKiogQHR5cGUgez9nbHVTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW19ICovIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTEJ1ZmZlcn0gKi8gdGhpcy5tX3Bvc2l0aW9uQnVmZmVyID0gbnVsbDsKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdGhpcy5tX2VsZW1lbnRCdWZmZXIgPSBudWxsOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3ZpZXdwb3J0VyA9IDA7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdmlld3BvcnRIID0gMDsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9pdGVyTmR4ID0gMDsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdGhpcy5tX3Bvc2l0aW9ucyA9IFtdOworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB0aGlzLm1fY29sb3JzID0gW107
CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURDYXNlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsK
KyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEQ2FzZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEQ2FzZTsKKworICAg
IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURDYXNlLk1BWF9WRVJUSUNFUyA9IDI0
OyAvLyE8IDggdHJpYW5nbGVzLCB0b3RhbHMgMjQgdmVydGljZXMKKworICAgIGVzM2ZTaGFkZXJC
dWlsdGluVmFyVGVzdHMuVmVydGV4SURDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSBnbC5kcmF3aW5nQnVm
ZmVyV2lkdGg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gZ2wu
ZHJhd2luZ0J1ZmZlckhlaWdodDsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHF1YWRXaWR0aCA9IDMyOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHF1YWRI
ZWlnaHQgPSAzMjsKKworICAgICAgICBpZiAod2lkdGggPCBxdWFkV2lkdGgpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBzbWFsbCByZW5kZXIgdGFyZ2V0Jyk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhRdWFkc1ggPSBNYXRoLmZsb29yKHdpZHRoIC8g
cXVhZFdpZHRoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1WZXJ0aWNl
cyA9IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURDYXNlLk1BWF9WRVJUSUNFUzsK
KworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVF1YWRzID0gTWF0aC5mbG9v
cihudW1WZXJ0aWNlcyAvIDYpICsgKG51bVZlcnRpY2VzICUgNiAhPSAwID8gMSA6IDApOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0VyA9IE1hdGgubWluKG51bVF1
YWRzLCBtYXhRdWFkc1gpKnF1YWRXaWR0aDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciB2aWV3cG9ydEggPSAoTWF0aC5mbG9vcihudW1RdWFkcy9tYXhRdWFkc1gpICsgKG51bVF1
YWRzICUgbWF4UXVhZHNYICE9IDAgPyAxIDogMCkpICogcXVhZEhlaWdodDsKKworICAgICAgICBp
ZiAodmlld3BvcnRIID4gaGVpZ2h0KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb28g
c21hbGwgcmVuZGVyIHRhcmdldCcpOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModmlld3Bv
cnRXIDw9IHdpZHRoICYmIHZpZXdwb3J0SCA8PSBoZWlnaHQsICdVbmV4cGVjdGVkIHZpZXdwb3J0
IGRpbWVuc2lvbnMuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
IXRoaXMubV9wcm9ncmFtLCAnUHJvZ3JhbSBzaG91bGQgbm90IGJlIGRlZmluZWQgYXQgdGhpcyBw
b2ludC4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciB2dHhTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdpbiBoaWdo
cCB2ZWM0IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICdvdXQgbWVkaXVtcCB2ZWM0IHZf
Y29sb3I7XG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcnNbMjRd
O1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAn
e1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbicgKworICAg
ICAgICAgICAgJyB2X2NvbG9yID0gdV9jb2xvcnNbZ2xfVmVydGV4SURdO1xuJyArCisgICAgICAg
ICAgICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdTb3Vy
Y2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdpbiBtZWRpdW1wIHZlYzQg
dl9jb2xvcjtcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRp
dW1wIHZlYzQgb19jb2xvcjtcbicgKworICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicg
KworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBvX2NvbG9yID0gdl9jb2xvcjtc
bicgKworICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcg
Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VW
dHhGcmFnU291cmNlcyh2dHhTb3VyY2UsIGZyYWdTb3VyY2UpKTsKKyAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUodGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbUluZm8oKS5pbmZvTG9nKTsKKwor
ICAgICAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkgeworICAgICAgICAgICAgdGhpcy5t
X3Byb2dyYW0gPSBudWxsOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIGZh
aWxlZCcpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX3Bvc2l0aW9uQnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIHRoaXMubV9lbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisKKyAgICAgICAgLy8gU2V0IGNvbG9ycyAoaW4gZHluYW1pYyBtZW1vcnkgdG8g
c2F2ZSBzdGF0aWMgZGF0YSBzcGFjZSkuCisgICAgICAgIHRoaXMubV9jb2xvcnNbMF0gPSBbMC4w
LCAwLjAsIDAuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxXSA9IFswLjUsIDEuMCwg
MC41LCAxLjBdOworICAgICAgICB0aGlzLm1fY29sb3JzWzJdID0gWzAuMCwgMC41LCAxLjAsIDEu
MF07CisgICAgICAgIHRoaXMubV9jb2xvcnNbM10gPSBbMC4wLCAxLjAsIDAuMCwgMS4wXTsKKyAg
ICAgICAgdGhpcy5tX2NvbG9yc1s0XSA9IFswLjAsIDEuMCwgMS4wLCAxLjBdOworICAgICAgICB0
aGlzLm1fY29sb3JzWzVdID0gWzAuNSwgMC4wLCAwLjAsIDEuMF07CisgICAgICAgIHRoaXMubV9j
b2xvcnNbNl0gPSBbMC41LCAwLjAsIDEuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1s3
XSA9IFswLjUsIDAuMCwgMC41LCAxLjBdOworICAgICAgICB0aGlzLm1fY29sb3JzWzhdID0gWzEu
MCwgMC4wLCAwLjAsIDEuMF07CisgICAgICAgIHRoaXMubV9jb2xvcnNbOV0gPSBbMC41LCAxLjAs
IDAuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxMF0gPSBbMC4wLCAwLjUsIDAuMCwg
MS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxMV0gPSBbMC41LCAxLjAsIDEuMCwgMS4wXTsK
KyAgICAgICAgdGhpcy5tX2NvbG9yc1sxMl0gPSBbMC4wLCAwLjAsIDEuMCwgMS4wXTsKKyAgICAg
ICAgdGhpcy5tX2NvbG9yc1sxM10gPSBbMS4wLCAwLjAsIDAuNSwgMS4wXTsKKyAgICAgICAgdGhp
cy5tX2NvbG9yc1sxNF0gPSBbMC4wLCAwLjUsIDAuNSwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2Nv
bG9yc1sxNV0gPSBbMS4wLCAxLjAsIDAuNSwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sx
Nl0gPSBbMS4wLCAwLjAsIDEuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxN10gPSBb
MS4wLCAwLjUsIDAuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxOF0gPSBbMC4wLCAx
LjAsIDAuNSwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1sxOV0gPSBbMS4wLCAwLjUsIDEu
MCwgMS4wXTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1syMF0gPSBbMS4wLCAxLjAsIDAuMCwgMS4w
XTsKKyAgICAgICAgdGhpcy5tX2NvbG9yc1syMV0gPSBbMS4wLCAwLjUsIDAuNSwgMS4wXTsKKyAg
ICAgICAgdGhpcy5tX2NvbG9yc1syMl0gPSBbMC4wLCAwLjAsIDAuNSwgMS4wXTsKKyAgICAgICAg
dGhpcy5tX2NvbG9yc1syM10gPSBbMS4wLCAxLjAsIDEuMCwgMS4wXTsKKworICAgICAgICAvLyBD
b21wdXRlIHBvc2l0aW9ucy4KKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhudW1WZXJ0aWNlcyAl
IDMgPT0gMCwgJ051bWJlciBvZiB2ZXJ0aWNlcyBzaG91bGQgYmUgbXVsdGlwbGUgb2YgMy4nLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgZm9yICh2YXIgdnR4TmR4ID0gMDsgdnR4TmR4IDwgbnVt
VmVydGljZXM7IHZ0eE5keCArPSAzKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGggPSAyLjAgKiBxdWFkSGVpZ2h0IC8gdmlld3BvcnRIOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB3ID0gMi4wICogcXVhZFdpZHRoIC8gdmlld3BvcnRXOwor
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU5keCA9IE1hdGguZmxv
b3IodnR4TmR4IC8gMyk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHF1
YWROZHggPSBNYXRoLmZsb29yKHRyaU5keCAvIDIpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBxdWFkWSA9IE1hdGguZmxvb3IocXVhZE5keCAvIG1heFF1YWRzWCk7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHF1YWRYID0gcXVhZE5keCAlIG1h
eFF1YWRzWDsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MCA9IC0x
LjAgKyBxdWFkWCAqIHc7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkw
ID0gLTEuMCArIHF1YWRZICogaDsKKworICAgICAgICAgICAgaWYgKHRyaU5keCAlIDIgPT09IDAp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLm1fcG9zaXRpb25zW3Z0eE5keCArIDBdID0gW3gwLCB5
MCwgMC4wLCAxLjBdOworICAgICAgICAgICAgICAgIHRoaXMubV9wb3NpdGlvbnNbdnR4TmR4ICsg
MV0gPSBbeDArdywgeTAraCwgMC4wLCAxLjBdOworICAgICAgICAgICAgICAgIHRoaXMubV9wb3Np
dGlvbnNbdnR4TmR4ICsgMl0gPSBbeDAsIHkwK2gsIDAuMCwgMS4wXTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9uc1t2dHhOZHggKyAwXSA9IFt4
MCArIHcsIHkwICsgaCwgMC4wLCAxLjBdOworICAgICAgICAgICAgICAgIHRoaXMubV9wb3NpdGlv
bnNbdnR4TmR4ICsgMV0gPSBbeDAsIHkwLCAwLjAsIDEuMF07CisgICAgICAgICAgICAgICAgdGhp
cy5tX3Bvc2l0aW9uc1t2dHhOZHggKyAyXSA9IFt4MCt3LCB5MCwgMC4wLCAxLjBdOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0VyA9IHZpZXdwb3J0
VzsKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0SCA9IHZpZXdwb3J0SDsKKyAgICAgICAgdGhpcy5t
X2l0ZXJOZHggPSAwOworCisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMu
VmVydGV4SURDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhp
cy5tX3Byb2dyYW0gPSBudWxsOworCisgICAgICAgIGlmICh0aGlzLm1fcG9zaXRpb25CdWZmZXIp
IHsKKyAgICAgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcih0aGlzLm1fcG9zaXRpb25CdWZmZXIpOwor
ICAgICAgICAgICAgdGhpcy5tX3Bvc2l0aW9uQnVmZmVyID0gbnVsbDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLm1fZWxlbWVudEJ1ZmZlcikgeworICAgICAgICAgICAgZ2wuZGVsZXRl
QnVmZmVyKHRoaXMubV9lbGVtZW50QnVmZmVyKTsKKyAgICAgICAgICAgIHRoaXMubV9lbGVtZW50
QnVmZmVyID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubV9wb3NpdGlvbnMgPSBb
XTsKKyAgICAgICAgdGhpcy5tX2NvbG9ycyA9IFtdOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7c2dsclNoYWRlclByb2dyYW0uU2hhZGVy
UHJvZ3JhbX0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElE
UmVmZXJlbmNlU2hhZGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9ufSAqLyB2YXIgZGVjbGFyYXRpb24g
PSBuZXcgc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbURlY2xhcmF0aW9uKCk7CisgICAg
ICAgIGRlY2xhcmF0aW9uLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJTaGFkZXJQcm9ncmFt
LlZlcnRleEF0dHJpYnV0ZSgnJywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FU
KSk7CisgICAgICAgIGRlY2xhcmF0aW9uLnB1c2hWZXJ0ZXhBdHRyaWJ1dGUobmV3IHNnbHJTaGFk
ZXJQcm9ncmFtLlZlcnRleEF0dHJpYnV0ZSgnJywgcnJHZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNU
eXBlLkZMT0FUKSk7CisgICAgICAgIGRlY2xhcmF0aW9uLnB1c2hWZXJ0ZXhUb0ZyYWdtZW50VmFy
eWluZyhuZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4VG9GcmFnbWVudFZhcnlpbmcocnJHZW5l
cmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FULCBuZXcgc2dsclNoYWRlclByb2dyYW0uVmFy
eWluZ0ZsYWdzKCkpKTsKKyAgICAgICAgZGVjbGFyYXRpb24ucHVzaEZyYWdtZW50T3V0cHV0KG5l
dyBzZ2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVudE91dHB1dChyckdlbmVyaWNWZWN0b3IuR2VuZXJp
Y1ZlY1R5cGUuRkxPQVQpKTsKKyAgICAgICAgZGVjbGFyYXRpb24ucHVzaFZlcnRleFNvdXJjZShu
ZXcgc2dsclNoYWRlclByb2dyYW0uVmVydGV4U291cmNlKCcnKSk7IC8vIFNoYWRlclByb2dyYW0g
ZmFpbHMgaWYgd2UgZG9uJ3QgcHVzaCBhIHNvdXJjZSwgZXZlbiB0aG91Z2ggR0xTTCBzb3VyY2Ug
aXMgbm90IHVzZWQKKyAgICAgICAgZGVjbGFyYXRpb24ucHVzaEZyYWdtZW50U291cmNlKG5ldyBz
Z2xyU2hhZGVyUHJvZ3JhbS5GcmFnbWVudFNvdXJjZSgnJykpOworICAgICAgICBzZ2xyU2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtLmNhbGwodGhpcywgZGVjbGFyYXRpb24pOworICAgIH07CisK
KyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEUmVmZXJlbmNlU2hhZGVyLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc2dsclNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbS5w
cm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURSZWZlcmVu
Y2VTaGFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0
cy5WZXJ0ZXhJRFJlZmVyZW5jZVNoYWRlcjsKKworICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8g
ZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5WZXJ0ZXhJRFJlZmVyZW5jZVNoYWRlci5WQVJZSU5H
TE9DX0NPTE9SID0gMDsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJWZXJ0ZXhB
dHRyaWIuVmVydGV4QXR0cmliPn0gaW5wdXRzCisgICAgICogQHBhcmFtIHtBcnJheTxyclZlcnRl
eFBhY2tldC5WZXJ0ZXhQYWNrZXQ+fSBwYWNrZXRzCisgICAgICovCisgICAgZXMzZlNoYWRlckJ1
aWx0aW5WYXJUZXN0cy5WZXJ0ZXhJRFJlZmVyZW5jZVNoYWRlci5wcm90b3R5cGUuc2hhZGVWZXJ0
aWNlcyA9IGZ1bmN0aW9uKGlucHV0cywgcGFja2V0cykgeworICAgICAgICBmb3IgKHZhciBwYWNr
ZXROZHggPSAwOyBwYWNrZXROZHggPCBwYWNrZXRzLmxlbmd0aDsgKytwYWNrZXROZHgpIHsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcG9zaXRpb25BdHRyTG9jID0gMDsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29sb3JBdHRyTG9jID0gMTsK
KworICAgICAgICAgICAgLyoqIEB0eXBlIHtyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9ICov
IHZhciBwYWNrZXQgPSBwYWNrZXRzW3BhY2tldE5keF07CisKKyAgICAgICAgICAgIC8vIFRyYW5z
Zm9ybSB0byBwb3NpdGlvbgorICAgICAgICAgICAgcGFja2V0LnBvc2l0aW9uID0gcnJWZXJ0ZXhB
dHRyaWIucmVhZFZlcnRleEF0dHJpYihpbnB1dHNbcG9zaXRpb25BdHRyTG9jXSwgcGFja2V0Lmlu
c3RhbmNlTmR4LCBwYWNrZXQudmVydGV4TmR4LCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5
cGUuRkxPQVQpOworCisgICAgICAgICAgICAvLyBQYXNzIGNvbG9yIHRvIEZTCisgICAgICAgICAg
ICBwYWNrZXQub3V0cHV0c1tlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEUmVmZXJl
bmNlU2hhZGVyLlZBUllJTkdMT0NfQ09MT1JdID0gcnJWZXJ0ZXhBdHRyaWIucmVhZFZlcnRleEF0
dHJpYihpbnB1dHNbY29sb3JBdHRyTG9jXSwgcGFja2V0Lmluc3RhbmNlTmR4LCBwYWNrZXQudmVy
dGV4TmR4LCByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuRkxPQVQpOworICAgICAgICB9
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJGcmFnbWVudE9wZXJh
dGlvbnMuRnJhZ21lbnQ+fSBwYWNrZXRzCisgICAgICogQHBhcmFtIHtyclNoYWRpbmdDb250ZXh0
LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
QnVpbHRpblZhclRlc3RzLlZlcnRleElEUmVmZXJlbmNlU2hhZGVyLnByb3RvdHlwZS5zaGFkZUZy
YWdtZW50cyA9IGZ1bmN0aW9uKHBhY2tldHMsIGNvbnRleHQpIHsKKyAgICAgICAgZm9yICh2YXIg
cGFja2V0TmR4ID0gMDsgcGFja2V0TmR4IDwgcGFja2V0cy5sZW5ndGg7ICsrcGFja2V0TmR4KSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge3JyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50fSAq
LyB2YXIgcGFja2V0ID0gcGFja2V0c1twYWNrZXROZHhdOworICAgICAgICAgICAgcGFja2V0LnZh
bHVlID0gcnJTaGFkaW5nQ29udGV4dC5yZWFkVmFyeWluZyhwYWNrZXQsIGNvbnRleHQsIGVzM2ZT
aGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURSZWZlcmVuY2VTaGFkZXIuVkFSWUlOR0xPQ19D
T0xPUik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBkc3QKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGluZGljZXMKKyAgICAgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9IHBvc2l0aW9ucwor
ICAgICAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gY29sb3JzCisgICAgICovCisgICAgZXMz
ZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5WZXJ0ZXhJRENhc2UucHJvdG90eXBlLnJlbmRlclJlZmVy
ZW5jZSA9IGZ1bmN0aW9uKGRzdCwgaW5kaWNlcywgcG9zaXRpb25zLCBjb2xvcnMpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtyclJlbmRlclN0YXRlLlJlbmRlclN0YXRlfSAqLworICAgICAgICB2YXIg
cmVmZXJlbmNlU3RhdGUgPSBuZXcgcnJSZW5kZXJTdGF0ZS5SZW5kZXJTdGF0ZSgKKyAgICAgICAg
ICAgIG5ldyByclJlbmRlclN0YXRlLlZpZXdwb3J0U3RhdGUocnJNdWx0aXNhbXBsZVBpeGVsQnVm
ZmVyQWNjZXNzLk11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MuZnJvbVNpbmdsZXNhbXBsZUFj
Y2Vzcyhkc3QpKQorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7cnJSZW5kZXJlci5S
ZW5kZXJUYXJnZXR9ICovCisgICAgICAgIHZhciByZWZlcmVuY2VUYXJnZXQgPSBuZXcgcnJSZW5k
ZXJlci5SZW5kZXJUYXJnZXQoCisgICAgICAgICAgICByck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJB
Y2Nlc3MuTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5mcm9tU2luZ2xlc2FtcGxlQWNjZXNz
KGRzdCkKKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJCdWlsdGlu
VmFyVGVzdHMuVmVydGV4SURSZWZlcmVuY2VTaGFkZXJ9ICovCisgICAgICAgIHZhciByZWZlcmVu
Y2VTaGFkZXJQcm9ncmFtID0gbmV3IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuVmVydGV4SURS
ZWZlcmVuY2VTaGFkZXIoKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PHJyVmVydGV4QXR0
cmliLlZlcnRleEF0dHJpYj59ICovIHZhciBhdHRyaWJzID0gW107CisgICAgICAgIGF0dHJpYnNb
MF0gPSBuZXcgcnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliKCk7CisgICAgICAgIGF0dHJpYnNb
MF0udHlwZSA9IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuRkxPQVQ7CisgICAgICAg
IGF0dHJpYnNbMF0uc2l6ZSA9IDQ7CisgICAgICAgIGF0dHJpYnNbMF0uc3RyaWRlID0gMDsKKyAg
ICAgICAgYXR0cmlic1swXS5pbnN0YW5jZURpdmlzb3IgPSAwOworICAgICAgICBhdHRyaWJzWzBd
LnBvaW50ZXIgPSBwb3NpdGlvbnMuYnVmZmVyOworCisgICAgICAgIGF0dHJpYnNbMV0gPSBuZXcg
cnJWZXJ0ZXhBdHRyaWIuVmVydGV4QXR0cmliKCk7CisgICAgICAgIGF0dHJpYnNbMV0udHlwZSA9
IHJyVmVydGV4QXR0cmliLlZlcnRleEF0dHJpYlR5cGUuRkxPQVQ7CisgICAgICAgIGF0dHJpYnNb
MV0uc2l6ZSA9IDQ7CisgICAgICAgIGF0dHJpYnNbMV0uc3RyaWRlID0gMDsKKyAgICAgICAgYXR0
cmlic1sxXS5pbnN0YW5jZURpdmlzb3IgPSAwOworICAgICAgICBhdHRyaWJzWzFdLnBvaW50ZXIg
PSBjb2xvcnMuYnVmZmVyOworICAgICAgICByclJlbmRlcmVyLmRyYXdUcmlhbmdsZXMocmVmZXJl
bmNlU3RhdGUsIHJlZmVyZW5jZVRhcmdldCwgcmVmZXJlbmNlU2hhZGVyUHJvZ3JhbSwKKyAgICAg
ICAgICAgIGF0dHJpYnMsIHJyUmVuZGVyZXIuUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIDAsIGlu
ZGljZXMubGVuZ3RoLCAvKmluc3RhbmNlSUQgPSAqLyAwKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHdpZHRoID0g
Z2wuZHJhd2luZ0J1ZmZlcldpZHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGhlaWdodCA9IGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdmlld3BvcnRXID0gdGhpcy5tX3ZpZXdwb3J0VzsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9ydEggPSB0aGlzLm1fdmlld3BvcnRIOworCisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdGhyZXNob2xkID0gMC4wMjsKKworICAgICAg
ICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5S
YW5kb20oMHhjZjIzYWIxIF4gZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubV9pdGVyTmR4LnRv
U3RyaW5nKCkpKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZh
ciByZWZJbWcgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0Vywgdmlld3BvcnRIKTsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciB0ZXN0SW1nID0g
bmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9ydFcsIHZpZXdwb3J0SCk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9ydFggPSBybmQuZ2V0SW50KDAsIHdpZHRo
IC0gdmlld3BvcnRXKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9y
dFkgPSBybmQuZ2V0SW50KDAsIGhlaWdodCAtIHZpZXdwb3J0SCk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1f
cHJvZ3JhbS5nZXRQcm9ncmFtKCksICdhX3Bvc2l0aW9uJyk7CisgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBjb2xvcnNMb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndV9jb2xvcnNbMF0nKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY2xlYXJDb2xvciA9IFswLjAsIDAu
MCwgMC4wLCAxLjBdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBp
bmRpY2VzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICov
IHZhciBtYXBwZWRQb3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtnb29nLk51bWJlckFycmF5
fSAqLyB2YXIgZmxhdENvbG9yQXJyYXk7CisgICAgICAgIC8qKiBAdHlwZSB7Z29vZy5OdW1iZXJB
cnJheX0gKi8gdmFyIGZsYXRQb3NBcnJheTsKKyAgICAgICAgLy8gU2V0dXAgY29tbW9uIHN0YXRl
LgorICAgICAgICBnbC52aWV3cG9ydCh2aWV3cG9ydFgsIHZpZXdwb3J0WSwgdmlld3BvcnRXLCB2
aWV3cG9ydEgpOworICAgICAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtLmdldFByb2dy
YW0oKSk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0aGlzLm1fcG9z
aXRpb25CdWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NMb2Mp
OworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc0xvYywgNCwgZ2wuRkxPQVQsIGZh
bHNlLCAwLCAwKTsKKyAgICAgICAgZ2wudW5pZm9ybTRmdihjb2xvcnNMb2MsIFtdLmNvbmNhdC5h
cHBseShbXSwgdGhpcy5tX2NvbG9ycykpOworCisgICAgICAgIC8vIENsZWFyIHJlbmRlciB0YXJn
ZXQgdG8gYmxhY2suCisgICAgICAgIGdsLmNsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJD
b2xvclsxXSwgY2xlYXJDb2xvclsyXSwgY2xlYXJDb2xvclszXSk7CisgICAgICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIHJlZkltZy5nZXRBY2Nlc3MoKS5jbGVh
cihjbGVhckNvbG9yKTsKKworICAgICAgICBpZiAodGhpcy5tX2l0ZXJOZHggPT09IDApIHsKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJdGVyMDogZ2xEcmF3QXJyYXlzKCknKTsK
KworICAgICAgICAgICAgZmxhdFBvc0FycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbXS5jb25jYXQu
YXBwbHkoW10sIHRoaXMubV9wb3NpdGlvbnMpKTsKKyAgICAgICAgICAgIGZsYXRDb2xvckFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShbXS5jb25jYXQuYXBwbHkoW10sIHRoaXMubV9jb2xvcnMpKTsK
KyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBmbGF0UG9zQXJyYXku
YnVmZmVyLCBnbC5EWU5BTUlDX0RSQVcpOworICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIE1hdGguZmxvb3IoZmxhdFBvc0FycmF5Lmxlbmd0aCAvIDQpKTsKKworICAg
ICAgICAgICAgLy9nbHU6OnJlYWRQaXhlbHMobV9jb250ZXh0LmdldFJlbmRlckNvbnRleHQoKSwg
dmlld3BvcnRYLCB2aWV3cG9ydFksIHRlc3RJbWcuZ2V0QWNjZXNzKCkpOworICAgICAgICAgICAg
dGVzdEltZy5yZWFkVmlld3BvcnQoZ2wsIFt2aWV3cG9ydFgsIHZpZXdwb3J0WSwgdmlld3BvcnRX
LCB2aWV3cG9ydEhdKTsKKyAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBpbmRpY2VzCisgICAgICAg
ICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fcG9zaXRpb25zLmxlbmd0aDsgbmR4
KyspCisgICAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKG5keCk7CisKKyAgICAgICAgICAgIHRo
aXMucmVuZGVyUmVmZXJlbmNlKHJlZkltZy5nZXRBY2Nlc3MoKSwgaW5kaWNlcywgZmxhdFBvc0Fy
cmF5LCBmbGF0Q29sb3JBcnJheSk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tX2l0ZXJOZHgg
PT09IDEpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJdGVyMTogZ2xEcmF3
RWxlbWVudHMoKSwgaW5kaWNlcyBpbiBidWZmZXInKTsKKworICAgICAgICAgICAgLy8gQ29tcHV0
ZSBpbml0aWFsIGluZGljZXMgYW5kIHN1ZmZsZQorICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgdGhpcy5tX3Bvc2l0aW9ucy5sZW5ndGg7IG5keCsrKQorICAgICAgICAgICAgICAg
IGluZGljZXMucHVzaChuZHgpOworICAgICAgICAgICAgLy8gZGVSYW5kb20uc2h1ZmZsZShybmQs
IGluZGljZXMpOworICAgICAgICAgICAgLy8gXG5vdGUgWzIwMTUtMDgtMDUgZGFnXSBUaGUgb3Jp
Z2luYWwgdGVzdCBzaHVmZmxlcyB0aGUgaW5kaWNlcyBhcnJheSBidXQgdGhlIHJlZmVyZW5jZSBy
ZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRyaWFuZ2xlcyB3aXRoIHNpZGVzIG5vdCBwYXJhbGxlbCB0
byB0aGUgYXhlcy4KKworICAgICAgICAgICAgLy8gVXNlIGluZGljZXMgdG8gcmUtbWFwIHBvc2l0
aW9ucy4KKyAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGluZGljZXMubGVuZ3Ro
OyBuZHgrKykKKyAgICAgICAgICAgICAgICBtYXBwZWRQb3NbaW5kaWNlc1tuZHhdXSA9IHRoaXMu
bV9wb3NpdGlvbnNbbmR4XTsKKworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgdGhpcy5tX2VsZW1lbnRCdWZmZXIpOworICAgICAgICAgICAgZ2wuYnVm
ZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgKG5ldyBVaW50MTZBcnJheShpbmRpY2Vz
KSkuYnVmZmVyLCBnbC5EWU5BTUlDX0RSQVcpOworCisgICAgICAgICAgICBmbGF0UG9zQXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KFtdLmNvbmNhdC5hcHBseShbXSwgbWFwcGVkUG9zKSk7CisgICAg
ICAgICAgICBmbGF0Q29sb3JBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoW10uY29uY2F0LmFwcGx5
KFtdLCB0aGlzLm1fY29sb3JzKSk7CisgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgZmxhdFBvc0FycmF5LmJ1ZmZlciwgZ2wuRFlOQU1JQ19EUkFXKTsKKyAgICAgICAg
ICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIGluZGljZXMubGVuZ3RoLCBnbC5VTlNJ
R05FRF9TSE9SVCwgMCk7CisKKyAgICAgICAgICAgIC8vZ2x1OjpyZWFkUGl4ZWxzKG1fY29udGV4
dC5nZXRSZW5kZXJDb250ZXh0KCksIHZpZXdwb3J0WCwgdmlld3BvcnRZLCB0ZXN0SW1nLmdldEFj
Y2VzcygpKTsKKyAgICAgICAgICAgIHRlc3RJbWcucmVhZFZpZXdwb3J0KGdsLCBbdmlld3BvcnRY
LCB2aWV3cG9ydFksIHZpZXdwb3J0Vywgdmlld3BvcnRIXSk7CisgICAgICAgICAgICByZWZJbWcu
Z2V0QWNjZXNzKCkuY2xlYXIoY2xlYXJDb2xvcik7CisgICAgICAgICAgICB0aGlzLnJlbmRlclJl
ZmVyZW5jZShyZWZJbWcuZ2V0QWNjZXNzKCksIGluZGljZXMsIGZsYXRQb3NBcnJheSwgZmxhdENv
bG9yQXJyYXkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
SXRlcmF0aW9uIGNvdW50IGV4Y2VlZGVkLicpOworCisgICAgICAgIGlmICghdGN1SW1hZ2VDb21w
YXJlLmZ1enp5Q29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVzdWx0JywgcmVm
SW1nLmdldEFjY2VzcygpLCB0ZXN0SW1nLmdldEFjY2VzcygpLCB0aHJlc2hvbGQpKQorICAgICAg
ICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkJywgZmFsc2Up
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnUGFzcycsIHRy
dWUpOworCisgICAgICAgIHRoaXMubV9pdGVyTmR4ICs9IDE7CisgICAgICAgIHJldHVybiAodGhp
cy5tX2l0ZXJOZHggPCAyKSA/IHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUUgOiB0
Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlNoYWRlckJ1aWx0aW5WYXJUZXN0
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMs
ICdidWlsdGluX3ZhcmlhYmxlJywgJ0J1aWx0LWluIFZhcmlhYmxlIFRlc3RzJyk7CisgICAgfTsK
KworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyQnVpbHRpblZhclRlc3RzLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsK
KyAgICBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlNoYWRlckJ1aWx0
aW5WYXJUZXN0czsKKworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyQnVpbHRp
blZhclRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXN0
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2VzOworICAgICAgICAvLyBCdWlsdGlu
IGNvbnN0YW50cy4KKyAgICAgICAgLyoqCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYXNlTmFtZQorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gdmFyTmFtZQorICAgICAgICAgKiBAcGFyYW0ge2VzM2ZTaGFk
ZXJCdWlsdGluVmFyVGVzdHMuR2V0Q29uc3RhbnRWYWx1ZUZ1bmN9IGdldFZhbHVlCisgICAgICAg
ICAqLworICAgICAgICB2YXIgQnVpbHRpbkNvbnN0YW50ID0gZnVuY3Rpb24oY2FzZU5hbWUsIHZh
ck5hbWUsIGdldFZhbHVlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhp
cy5jYXNlTmFtZSA9IGNhc2VOYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMudmFyTmFtZSA9IHZhck5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFk
ZXJCdWlsdGluVmFyVGVzdHMuR2V0Q29uc3RhbnRWYWx1ZUZ1bmN9ICovIHRoaXMuZ2V0VmFsdWUg
PSBnZXRWYWx1ZTsKKworICAgICAgICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QnVp
bHRpbkNvbnN0YW50Pn0gKi8gdmFyIGJ1aWx0aW5Db25zdGFudHMgPSBbCisgICAgICAgICAgICAv
LyBHTEVTIDIuCisKKyAgICAgICAgICAgIG5ldyBCdWlsdGluQ29uc3RhbnQoJ21heF92ZXJ0ZXhf
YXR0cmlicycsICdnbF9NYXhWZXJ0ZXhBdHRyaWJzJywgZnVuY3Rpb24oKSB7IHJldHVybiBlczNm
U2hhZGVyQnVpbHRpblZhclRlc3RzLmdldEludGVnZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKTsg
fSksCisgICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtYXhfdmVydGV4X3VuaWZvcm1f
dmVjdG9ycycsICdnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycycsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5nZXRJbnRlZ2VyKGdsLk1BWF9WRVJURVhfVU5J
Rk9STV9WRUNUT1JTKTsgfSksCisgICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtYXhf
ZnJhZ21lbnRfdW5pZm9ybV92ZWN0b3JzJywgJ2dsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMn
LCBmdW5jdGlvbigpIHsgcmV0dXJuIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuZ2V0SW50ZWdl
cihnbC5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTKTsgfSksCisgICAgICAgICAgICBuZXcg
QnVpbHRpbkNvbnN0YW50KCdtYXhfdGV4dHVyZV9pbWFnZV91bml0cycsICdnbF9NYXhUZXh0dXJl
SW1hZ2VVbml0cycsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0
cy5nZXRJbnRlZ2VyKGdsLk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsgfSksCisgICAgICAgICAg
ICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2VfdW5pdHMnLCAn
Z2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMnLCBmdW5jdGlvbigpIHsgcmV0dXJuIGVzM2ZT
aGFkZXJCdWlsdGluVmFyVGVzdHMuZ2V0SW50ZWdlcihnbC5NQVhfVkVSVEVYX1RFWFRVUkVfSU1B
R0VfVU5JVFMpOyB9KSwKKyAgICAgICAgICAgIG5ldyBCdWlsdGluQ29uc3RhbnQoJ21heF9jb21i
aW5lZF90ZXh0dXJlX2ltYWdlX3VuaXRzJywgJ2dsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMnLCBmdW5jdGlvbigpIHsgcmV0dXJuIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuZ2V0SW50
ZWdlcihnbC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyk7IH0pLAorICAgICAgICAg
ICAgbmV3IEJ1aWx0aW5Db25zdGFudCgnbWF4X2RyYXdfYnVmZmVycycsICdnbF9NYXhEcmF3QnVm
ZmVycycsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5nZXRJ
bnRlZ2VyKGdsLk1BWF9EUkFXX0JVRkZFUlMpOyB9KSwKKworICAgICAgICAgICAgLy8gR0xFUyAz
LgorCisgICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtYXhfdmVydGV4X291dHB1dF92
ZWN0b3JzJywgJ2dsX01heFZlcnRleE91dHB1dFZlY3RvcnMnLCBmdW5jdGlvbigpIHsgcmV0dXJu
IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuZ2V0VmVjdG9yc0Zyb21Db21wcyhnbC5NQVhfVkVS
VEVYX09VVFBVVF9DT01QT05FTlRTKTsgfSksCisgICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0
YW50KCdtYXhfZnJhZ21lbnRfaW5wdXRfdmVjdG9ycycsICdnbF9NYXhGcmFnbWVudElucHV0VmVj
dG9ycycsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5nZXRW
ZWN0b3JzRnJvbUNvbXBzKGdsLk1BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTKTsgfSksCisg
ICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtaW5fcHJvZ3JhbV90ZXhlbF9vZmZzZXQn
LCAnZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0JywgZnVuY3Rpb24oKSB7IHJldHVybiBlczNmU2hh
ZGVyQnVpbHRpblZhclRlc3RzLmdldEludGVnZXIoZ2wuTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VU
KTsgfSksCisgICAgICAgICAgICBuZXcgQnVpbHRpbkNvbnN0YW50KCdtYXhfcHJvZ3JhbV90ZXhl
bF9vZmZzZXQnLCAnZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0JywgZnVuY3Rpb24oKSB7IHJldHVy
biBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLmdldEludGVnZXIoZ2wuTUFYX1BST0dSQU1fVEVY
RUxfT0ZGU0VUKTsgfSkKKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBidWlsdGluQ29uc3RhbnRzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB2YXIgY2FzZU5hbWUgPSBidWlsdGluQ29uc3RhbnRzW25keF0uY2Fz
ZU5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZhck5hbWUgPSBi
dWlsdGluQ29uc3RhbnRzW25keF0udmFyTmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMz
ZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5HZXRDb25zdGFudFZhbHVlRnVuY30gKi8gdmFyIGdldFZh
bHVlID0gYnVpbHRpbkNvbnN0YW50c1tuZHhdLmdldFZhbHVlOworCisgICAgICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuU2hhZGVyQnVpbHRp
bkNvbnN0YW50Q2FzZShjYXNlTmFtZSArICdfdmVydGV4JywgdmFyTmFtZSwgdmFyTmFtZSwgZ2V0
VmFsdWUsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpKTsKKyAgICAgICAgICAg
IHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5TaGFkZXJC
dWlsdGluQ29uc3RhbnRDYXNlKGNhc2VOYW1lICsgJ19mcmFnbWVudCcsIHZhck5hbWUsIHZhck5h
bWUsIGdldFZhbHVlLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckJ1aWx0
aW5WYXJUZXN0cy5TaGFkZXJEZXB0aFJhbmdlVGVzdCgnZGVwdGhfcmFuZ2VfdmVydGV4JywgJ2ds
X0RlcHRoUmFuZ2UnLCB0cnVlKSk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5TaGFkZXJEZXB0aFJhbmdlVGVzdCgnZGVwdGhfcmFuZ2Vf
ZnJhZ21lbnQnLCAnZ2xfRGVwdGhSYW5nZScsIGZhbHNlKSk7CisKKyAgICAgICAgLy8gVmVydGV4
IHNoYWRlciBidWlsdGluIHZhcmlhYmxlcy4KKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLlZlcnRleElEQ2FzZSgpKTsKKyAgICAgICAgLy8g
XHRvZG8gWzIwMTMtMDMtMjAgcHlyeV0gZ2xfSW5zdGFuY2VJRCAtLSB0ZXN0ZWQgaW4gaW5zdGFu
Y2luZyB0ZXN0cyBxdWl0ZSB0aG9yb3VnaGx5LgorCisgICAgICAgIC8vIEZyYWdtZW50IHNoYWRl
ciBidWlsdGluIHZhcmlhYmxlcy4KKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNm
U2hhZGVyQnVpbHRpblZhclRlc3RzLkZyYWdDb29yZFhZWkNhc2UoKSk7CisgICAgICAgIHRlc3RH
cm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5GcmFnQ29vcmRXQ2Fz
ZSgpKTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQnVpbHRpblZh
clRlc3RzLlBvaW50Q29vcmRDYXNlKCkpOworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuRnJvbnRGYWNpbmdDYXNlKCkpOworICAgIH07CisK
KyAgICAvKioKKyAgICAqIFJ1biB0ZXN0CisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHR9IGNvbnRleHQKKyAgICAqLworICAgIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMucnVu
ID0gZnVuY3Rpb24oY29udGV4dCkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8v
U2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RD
YXNlLnJ1bm5lcjsKKyAgICAgICAgc3RhdGUuc2V0Um9vdChuZXcgZXMzZlNoYWRlckJ1aWx0aW5W
YXJUZXN0cy5TaGFkZXJCdWlsdGluVmFyVGVzdHMoKSk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFt
ZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVu
dFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICAgICAgZGVzY3JpcHRp
b24oc3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5U
ZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMu
cnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1p
bmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlckNv
bW1vbkZ1bmN0aW9uVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMyNGM3M2Y5MGVjZGU3NGEzZjIxZTJm
Y2JkMmQ0MTI4ODFlYTdhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5qcwpAQCAtMCwwICsxLDE5NzMgQEAKKy8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVz
CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq
CisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgor
ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdM
aWNlbnNlJyk7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoK
KyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VGbG9hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RD
YXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5v
cGVuZ2wuZ2x1VmFyVHlwZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFk
ZXJFeGVjVXRpbCcpOworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKyAgICB2YXIgZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJDb21tb25G
dW5jdGlvblRlc3RzOworICAgIHZhciB0Y3VGbG9hdCA9IGZyYW1ld29yay5jb21tb24udGN1Rmxv
YXQ7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsK
KyAgICB2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbTsKKyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
VXRpbDsKKyAgICB2YXIgZ2x1VmFyVHlwZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZTsK
KyAgICB2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKyAg
ICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciBk
ZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAgIHZhciBnbHNT
aGFkZXJFeGVjVXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckV4ZWNVdGlsOworCisgICAg
LyoqIEB0eXBlZGVmIHtmdW5jdGlvbihuZXc6IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LkNvbW1vbkZ1bmN0aW9uQ2FzZSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZSwgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24sIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZSl9ICovIGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLlRlc3RDbGFzczsKKworICAgIC8qKgorICAgICAqIEBlbnVtCisg
ICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHlwZXMgPSB7CisgICAg
ICAgIEZMT0FUOiAwLAorICAgICAgICBJTlQ6IDEsCisgICAgICAgIFVJTlQ6IDIKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZXMKKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy52ZWNUb0Zsb2F0MTYgPSBmdW5jdGlv
bih2YWx1ZXMpIHsKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdmFsdWVzLmxlbmd0
aDsgbmR4KyspCisgICAgICAgICAgICB2YWx1ZXNbbmR4XSA9IHRjdUZsb2F0Lm5ld0Zsb2F0MTYo
dmFsdWVzW25keF0pLmdldFZhbHVlKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHlwZXN9IHR5cGUKKyAgICAgKiBAcGFy
YW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pblZhbHVl
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1heFZhbHVlCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnJhbmRvbVNjYWxh
ciA9IGZ1bmN0aW9uKHR5cGUsIHJuZCwgbWluVmFsdWUsIG1heFZhbHVlKSB7CisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5UeXBlcy5GTE9BVDogcmV0dXJuIHJuZC5nZXRGbG9hdChtaW5WYWx1ZSwgbWF4VmFsdWUp
OworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UeXBlcy5J
TlQ6IHJldHVybiBybmQuZ2V0SW50KG1pblZhbHVlLCBtYXhWYWx1ZSk7CisgICAgICAgICAgICBj
YXNlIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlR5cGVzLlVJTlQ6IHJldHVybiBNYXRo
LmFicyhybmQuZ2V0SW50KG1pblZhbHVlLCBtYXhWYWx1ZSkpOworICAgICAgICAgICAgZGVmYXVs
dDogdGhyb3cgbmV3IEVycm9yKCdPbmx5IEZMT0FULCBJTlQsIGFuZCBVSU5UIGFyZSBzdXBwb3J0
ZWQuJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UeXBlc30gdHlwZQorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gc2l6ZQorICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1pblZhbHVlCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBtYXhWYWx1ZQorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAg
ICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMucmFuZG9tVmVjdG9yID0gZnVu
Y3Rpb24odHlwZSwgc2l6ZSwgcm5kLCBtaW5WYWx1ZSwgbWF4VmFsdWUpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcmVzID0gW107CisgICAgICAgIGZvciAodmFy
IG5keCA9IDA7IG5keCA8IHNpemU7IG5keCsrKQorICAgICAgICAgICAgcmVzLnB1c2goZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMucmFuZG9tU2NhbGFyKHR5cGUsIHJuZCwgbWluVmFsdWVb
bmR4XSwgbWF4VmFsdWVbbmR4XSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlR5cGVz
fSB0eXBlCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzaXplCisgICAgICogQHBhcmFt
IHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWlu
VmFsdWUKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1heFZhbHVlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG51bVZhbHVlcworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0Cisg
ICAgICogQHJldHVybiB7QXJyYXk8QXJyYXk8bnVtYmVyPj59CisgICAgICovCisgICAgZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVZlY3RvcnMgPSBmdW5jdGlvbih0eXBl
LCBzaXplLCBybmQsIG1pblZhbHVlLCBtYXhWYWx1ZSwgbnVtVmFsdWVzLCBvZmZzZXQpIHsKKyAg
ICAgICAgb2Zmc2V0ID0gb2Zmc2V0ID09PSB1bmRlZmluZWQgPyAwIDogb2Zmc2V0OworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgYWNjZXNzOworICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1WYWx1ZXM7IG5keCsrKQorICAgICAgICAgICAg
YWNjZXNzW29mZnNldCArIG5keF0gPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5yYW5k
b21WZWN0b3IodHlwZSwgc2l6ZSwgcm5kLCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBy
ZXR1cm4gYWNjZXNzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLlR5cGVzfSB0eXBlCisgICAgICogQHBhcmFtIHtkZVJhbmRv
bS5SYW5kb219IHJuZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5WYWx1ZQorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBtYXhWYWx1ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1WYWx1ZXMK
KyAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldAorICAgICAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJh
bmRvbVNjYWxhcnMgPSBmdW5jdGlvbih0eXBlLCBybmQsIG1pblZhbHVlLCBtYXhWYWx1ZSwgbnVt
VmFsdWVzLCBvZmZzZXQpIHsKKyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ID09PSB1bmRlZmluZWQg
PyAwIDogb2Zmc2V0OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBh
Y2Nlc3MgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtVmFsdWVzOyBu
ZHgrKykKKyAgICAgICAgICAgIGFjY2Vzc1tvZmZzZXQgKyBuZHhdID0gZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMucmFuZG9tU2NhbGFyKHR5cGUsIHJuZCwgbWluVmFsdWUsIG1heFZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIGFjY2VzczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGlucHV0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG91dHB1dAorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5udW1CaXRzTG9zdEluT3AgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0KSB7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW5FeHAgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKGlu
cHV0KS5leHBvbmVudCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dEV4
cCA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIob3V0cHV0KS5leHBvbmVudCgpOworICAgICAgICByZXR1
cm4gTWF0aC5tYXgoMCwgaW5FeHAgLSBvdXRFeHApOyAvLyBMb3N0IGR1ZSB0byBtYW50aXNzYSBz
aGlmdC4KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGEKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gYgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAg
ICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmID0gZnVuY3Rpb24oYSwg
YikgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFCaXRzID0gdGN1RmxvYXQu
bmV3RmxvYXQzMihhKS5iaXRzKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
YkJpdHMgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKGIpLmJpdHMoKTsKKyAgICAgICAgcmV0dXJuIGFC
aXRzID4gYkJpdHMgPyBhQml0cyAtIGJCaXRzIDogYkJpdHMgLSBhQml0czsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGEKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
YgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24gPSBmdW5jdGlvbihhLCBiKSB7
CisgICAgICAgIGlmICh0Y3VGbG9hdC5uZXdGbG9hdDMyKGEpLmlzWmVybygpKQorICAgICAgICAg
ICAgcmV0dXJuIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldFVscERpZmYobmV3IHRj
dUZsb2F0LmRlRmxvYXQoKS5jb25zdHJ1Y3QodGN1RmxvYXQubmV3RmxvYXQzMihiKS5zaWduKCks
IDAsIDApLmdldFZhbHVlKCksIGIpOworICAgICAgICBlbHNlIGlmICh0Y3VGbG9hdC5uZXdGbG9h
dDMyKGIpLmlzWmVybygpKQorICAgICAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLmdldFVscERpZmYoYSwgbmV3IHRjdUZsb2F0LmRlRmxvYXQoKS5jb25zdHJ1Y3Qo
dGN1RmxvYXQubmV3RmxvYXQzMihhKS5zaWduKCksIDAsIDApLmdldFZhbHVlKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
Z2V0VWxwRGlmZihhLCBiKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVT
aGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0K
KyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5zdXBwb3J0c1NpZ25l
ZFplcm8gPSBmdW5jdGlvbihwcmVjaXNpb24pIHsKKyAgICAgICAgLy8gXG5vdGUgR0xTTCBFUyAz
LjAgZG9lc24ndCByZWFsbHkgcmVxdWlyZSBzdXBwb3J0IGZvciAtMCwgYnV0IHdlIHJlcXVpcmUg
aXQgZm9yIGhpZ2hwCisgICAgICAgIC8vICAgICAgICAgYXMgaXQgaXMgdmVyeSB3aWRlbHkgc3Vw
cG9ydGVkLgorICAgICAgICByZXR1cm4gcHJlY2lzaW9uID09IGdsdVNoYWRlclV0aWwucHJlY2lz
aW9uLlBSRUNJU0lPTl9ISUdIUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHZhbHVlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHVscERpZmYKKyAgICAgKiBAcmV0
dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
Z2V0RXBzRnJvbU1heFVscERpZmYgPSBmdW5jdGlvbih2YWx1ZSwgdWxwRGlmZikgeworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGV4cCA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIodmFs
dWUpLmV4cG9uZW50KCk7CisgICAgICAgIHJldHVybiBuZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmNv
bnN0cnVjdCgrMSwgZXhwLCAoMSA8PCAyMykgfCB1bHBEaWZmKS5nZXRWYWx1ZSgpIC0gbmV3IHRj
dUZsb2F0LmRlRmxvYXQoKS5jb25zdHJ1Y3QoKzEsIGV4cCwgMSA8PCAyMykuZ2V0VmFsdWUoKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUFjY3VyYXRlQml0
cworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5nZXRNYXhVbHBEaWZmRnJvbUJpdHMgPSBmdW5jdGlvbihudW1BY2N1cmF0
ZUJpdHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1HYXJiYWdlQml0
cyA9IDIzIC0gbnVtQWNjdXJhdGVCaXRzOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1hc2sgPSAoMSA8PCBudW1HYXJiYWdlQml0cykgLSAxOworCisgICAgICAgIHJldHVybiBt
YXNrOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQWNjdXJhdGVCaXRzCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldEVwc0Zy
b21CaXRzID0gZnVuY3Rpb24odmFsdWUsIG51bUFjY3VyYXRlQml0cykgeworICAgICAgICByZXR1
cm4gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0RXBzRnJvbU1heFVscERpZmYodmFs
dWUsIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1heFVscERpZmZGcm9tQml0cyhu
dW1BY2N1cmF0ZUJpdHMpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVT
aGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1pbk1hbnRpc3Nh
Qml0cyA9IGZ1bmN0aW9uKHByZWNpc2lvbikgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciBiaXRzID0gWworICAgICAgICAgICAgNywgLy8gbG93cAorICAgICAgICAg
ICAgMTAsIC8vIG1lZGl1bXAKKyAgICAgICAgICAgIDIzIC8vIGhpZ2hwCisgICAgICAgIF07CisK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhkZU1hdGguZGVJbkJvdW5kczMyKHByZWNpc2lvbiwg
MCwgYml0cy5sZW5ndGgpLCAnVW5leHBlY3RlZCBwcmVjaXNpb24gb3B0aW9uLicsIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgcmV0dXJuIGJpdHNbcHJlY2lzaW9uXTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGRlc2NyaXB0aW9uCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9
IHNoYWRlclR5cGUKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5D
b21tb25GdW5jdGlvbkNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hhZGVyVHlw
ZSkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9
ICovIHRoaXMubV9zaGFkZXJUeXBlID0gc2hhZGVyVHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHRoaXMubV9udW1WYWx1ZXMgPSAxMDA7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xz
U2hhZGVyRXhlY1V0aWwuU2hhZGVyRXhlY3V0b3J9ICovIHRoaXMubV9leGVjdXRvciA9IG51bGw7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2hhZGVyRXhlY1V0aWwuU2hhZGVyU3BlY30gKi8gdGhp
cy5tX3NwZWMgPSBuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU2hhZGVyU3BlYygpOworICAgICAgICB0
aGlzLm1fc3BlYy52ZXJzaW9uID0gZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTOwor
ICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX2ZhaWxNc2c7IC8vITwgQ29tcGFy
aXNvbiBmYWlsdXJlIGhlbHAgbWVzc2FnZS4KKyAgICB9OworCisgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlOworCisgICAg
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV9l
eGVjdXRvciwgJ1NoYWRlciBleGVjdXRvciBzaG91bGQgYmUgbnVsbCBhdCB0aGlzIHBvaW50Jywg
ZmFsc2UsIHRydWUpOworICAgICAgICB0aGlzLm1fZXhlY3V0b3IgPSBnbHNTaGFkZXJFeGVjVXRp
bC5jcmVhdGVFeGVjdXRvcih0aGlzLm1fc2hhZGVyVHlwZSwgdGhpcy5tX3NwZWMpOworICAgICAg
ICBpZiAoIXRoaXMubV9leGVjdXRvci5pc09rKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0NvbXBpbGUgZmFpbGVkJyk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHRoaXMubV9leGVjdXRvciA9IG51bGw7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7QXJyYXk8Z2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sPn0gc3ltYm9scwor
ICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZXMzZlNoYWRlckNv
bW1vbkZ1bmN0aW9uVGVzdHMuZ2V0U2NhbGFyU2l6ZXMgPSBmdW5jdGlvbihzeW1ib2xzKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNpemVzID0gW107CisgICAg
ICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHN5bWJvbHMubGVuZ3RoOyArK25keCkKKyAgICAg
ICAgICAgIHNpemVzLnB1c2goc3ltYm9sc1tuZHhdLnZhclR5cGUuZ2V0U2NhbGFyU2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIHNpemVzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5PGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbD59IHN5bWJvbHMKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuY29t
cHV0ZVRvdGFsU2NhbGFyU2l6ZSA9IGZ1bmN0aW9uKHN5bWJvbHMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKHZhciBzeW0g
aW4gc3ltYm9scykKKyAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBzeW1ib2xzW3N5bV0udmFyVHlw
ZS5nZXRTY2FsYXJTaXplKCk7CisgICAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVG9Cb29s
U3RyaW5nID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID8gInRydWUi
IDogImZhbHNlIjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVWYXJUeXBl
LlZhclR5cGV9IHZhclR5cGUKKyAgICAgKiBAcGFyYW0ge0FycmF5PCo+fSB2YWx1ZXMKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuVmFyVmFsdWUgPSBmdW5jdGlvbih2YXJUeXBlLCB2YWx1ZXMpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgYmFzaWNUeXBlID0gdmFyVHlw
ZS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlfSAqLyB2YXIgc2NhbGFyVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJU
eXBlQXNEYXRhVHlwZShiYXNpY1R5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG51bUNvbXBvbmVudHMgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShi
YXNpY1R5cGUpOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG91dHB1dFN0ciA9
ICIiOworCisgICAgICAgIGlmIChudW1Db21wb25lbnRzID4gMSkgeworICAgICAgICAgICAgb3V0
cHV0U3RyICs9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGJhc2ljVHlwZSkgKyAiKCI7
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBjb21wTmR4ID0gMDsgY29tcE5keCA8IG51
bUNvbXBvbmVudHM7ICsrY29tcE5keCkgeworICAgICAgICAgICAgaWYgKGNvbXBOZHggIT0gMCkg
eworICAgICAgICAgICAgICAgIG91dHB1dFN0ciArPSAiLCAiOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyB0Y3U6OnRvSGV4KCkgaXMgYWxsIGNvbW1lbnRlZCBvdXQgaW4gdGhpcyBw
cm9qZWN0LgorICAgICAgICAgICAgLy8gZS5nLiBMaW5lIDE5OSBvZiBlczNmU2hhZGVyUGFja2lu
Z0Z1bmN0aW9uVGVzdHMuanMKKyAgICAgICAgICAgIHN3aXRjaCAoc2NhbGFyVHlwZSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDoKKyAgICAgICAg
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOgorICAgICAgICAgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOgorICAgICAgICAgICAgICAgICAgICBv
dXRwdXRTdHIgKz0gdmFsdWVzW2NvbXBOZHhdOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDoKKyAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0U3RyICs9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LlRvQm9vbFN0cmluZyh2YWx1ZXNbY29tcE5keF0pOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRocm93
IEVycm9yKCdVbnJlY29nbml6ZWQgZGF0YVR5cGUgJyArIHNjYWxhclR5cGUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bUNvbXBvbmVudHMgPiAxKSB7CisgICAg
ICAgICAgICBvdXRwdXRTdHIgKz0gIikiOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91
dHB1dFN0cjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LkNvbW1vbkZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUlucHV0U2NhbGFycyA9IGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLmNvbXB1dGVUb3RhbFNjYWxhclNpemUodGhpcy5tX3NwZWMu
aW5wdXRzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1PdXRwdXRTY2Fs
YXJzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuY29tcHV0ZVRvdGFsU2NhbGFyU2l6
ZSh0aGlzLm1fc3BlYy5vdXRwdXRzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnb29nLlR5
cGVkQXJyYXk+fSAqLyB2YXIgaW5wdXREYXRhID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z29vZy5UeXBlZEFycmF5Pn0gKi8gdmFyIG91dHB1dERhdGEgPSBbXTsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgaW5wdXRUeXBlID0gdGhpcy5t
X3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIG91dHB1dFR5cGUgPSB0aGlzLm1fc3Bl
Yy5vdXRwdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciBpbnB1dFZhbHVlczsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIG91dHB1dFZhbHVlczsKKyAgICAgICAgaW5wdXRWYWx1
ZXMgPSB0aGlzLmdldElucHV0VmFsdWVzKHRoaXMubV9udW1WYWx1ZXMpOworCisgICAgICAgIGZv
ciAodmFyIGluTmR4ID0gMDsgaW5OZHggPCBpbnB1dFZhbHVlcy5sZW5ndGg7IGluTmR4KyspIHsK
KyAgICAgICAgICAgIHZhciBkYXRhID0gaW5wdXRUeXBlID49IGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVQgJiYgaW5wdXRUeXBlIDw9IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVD
NCA/IG5ldyBGbG9hdDMyQXJyYXkoaW5wdXRWYWx1ZXNbaW5OZHhdKSA6CisgICAgICAgICAgICAg
ICAgICAgICAgIGlucHV0VHlwZSA+PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCAmJiBpbnB1
dFR5cGUgPD0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNCA/IG5ldyBJbnQzMkFycmF5
KGlucHV0VmFsdWVzW2luTmR4XSkgOgorICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGUg
Pj0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UICYmIGlucHV0VHlwZSA8PSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLlVJTlRfVkVDNCA/IG5ldyBVaW50MzJBcnJheShpbnB1dFZhbHVlc1tpbk5k
eF0pIDoKKyAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsKKyAgICAgICAgICAgIGlucHV0RGF0
YS5wdXNoKGRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRXhlY3V0ZSBzaGFkZXIuCisg
ICAgICAgIHRoaXMubV9leGVjdXRvci51c2VQcm9ncmFtKCk7CisgICAgICAgIG91dHB1dFZhbHVl
cyA9IHRoaXMubV9leGVjdXRvci5leGVjdXRlKHRoaXMubV9udW1WYWx1ZXMsIGlucHV0RGF0YSk7
CisgICAgICAgIGZvciAodmFyIG91dE5keCA9IDA7IG91dE5keCA8IG91dHB1dFZhbHVlcy5sZW5n
dGg7IG91dE5keCsrKSB7CisgICAgICAgICAgICB2YXIgZGF0YSA9IG91dHB1dFR5cGUgPj0gZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCAmJiBvdXRwdXRUeXBlIDw9IGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDNCA/IG5ldyBGbG9hdDMyQXJyYXkob3V0cHV0VmFsdWVzW291dE5k
eF0uYnVmZmVyKSA6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRUeXBlID49IGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UICYmIG91dHB1dFR5cGUgPD0gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlRfVkVDNCA/IG5ldyBJbnQzMkFycmF5KG91dHB1dFZhbHVlc1tvdXROZHhdLmJ1ZmZl
cikgOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VHlwZSA+PSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQgJiYgb3V0cHV0VHlwZSA8PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlRfVkVDNCA/IG5ldyBVaW50MzJBcnJheShvdXRwdXRWYWx1ZXNbb3V0TmR4XS5idWZmZXIpIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFR5cGUgPj0gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5CT09MICYmIG91dHB1dFR5cGUgPD0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZF
QzQgPyBuZXcgSW50MzJBcnJheShvdXRwdXRWYWx1ZXNbb3V0TmR4XS5idWZmZXIpIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGw7CisgICAgICAgICAgICBvdXRwdXREYXRhLnB1c2goZGF0
YSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgcHJvcGVyIFR5cGVkQXJy
YXkgZm9yIEJPT0wgdHlwZXM7IGRlZmF1bHRpbmcgdG8gSW50MzJBcnJheSBpbiB0aGUgbWVhbiB0
aW1lIChvdXRwdXRWYWx1ZXMgcmV0dXJucyA0MDAgYnl0ZXMsIHdlIG5lZWQgMTAwIGVsZW1lbnRz
KQorICAgICAgICAvLyBDb21wYXJlIHJlc3VsdHMuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIGluU2NhbGFyU2l6ZXMgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5nZXRTY2FsYXJTaXplcyh0aGlzLm1fc3BlYy5pbnB1dHMpOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBvdXRTY2FsYXJTaXplcyA9IGVzM2ZTaGFkZXJDb21t
b25GdW5jdGlvblRlc3RzLmdldFNjYWxhclNpemVzKHRoaXMubV9zcGVjLm91dHB1dHMpOworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PCo+fSAqLyB2YXIgY3VySW5wdXRQdHIgPSBbXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTwqPn0gKi8gdmFyIGN1ck91dHB1dFB0ciA9IFtdOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUZhaWxlZCA9IDA7CisKKyAgICAgICAgZm9y
ICh2YXIgaW5OZHggPSAwOyBpbk5keCA8IGlucHV0RGF0YS5sZW5ndGg7IGluTmR4KyspIHsKKyAg
ICAgICAgICAgIGN1cklucHV0UHRyW2luTmR4XSA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIg
dmFsTmR4ID0gMDsgdmFsTmR4IDwgaW5wdXREYXRhW2luTmR4XS5sZW5ndGg7IHZhbE5keCArPSBp
blNjYWxhclNpemVzW2luTmR4XSkKKyAgICAgICAgICAgICAgICBjdXJJbnB1dFB0cltpbk5keF0u
cHVzaChpbnB1dERhdGFbaW5OZHhdLnNsaWNlKHZhbE5keCwgdmFsTmR4ICsgaW5TY2FsYXJTaXpl
c1tpbk5keF0pKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIG91dE5keCA9IDA7IG91
dE5keCA8IG91dHB1dERhdGEubGVuZ3RoOyBvdXROZHgrKykgeworICAgICAgICAgICAgY3VyT3V0
cHV0UHRyW291dE5keF0gPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIHZhbE5keCA9IDA7IHZh
bE5keCA8IG91dHB1dERhdGFbb3V0TmR4XS5sZW5ndGg7IHZhbE5keCArPSBvdXRTY2FsYXJTaXpl
c1tvdXROZHhdKQorICAgICAgICAgICAgICAgIGN1ck91dHB1dFB0cltvdXROZHhdLnB1c2gob3V0
cHV0RGF0YVtvdXROZHhdLnNsaWNlKHZhbE5keCwgdmFsTmR4ICsgb3V0U2NhbGFyU2l6ZXNbb3V0
TmR4XSkpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX2ZhaWxNc2cgPSAnJzsKKyAgICAg
ICAgZm9yICh2YXIgdmFsTmR4ID0gMDsgdmFsTmR4IDwgdGhpcy5tX251bVZhbHVlczsgdmFsTmR4
KyspIHsKKyAgICAgICAgICAgIHZhciBjdXJJbnB1dFZhbHVlcyA9IFtdOworICAgICAgICAgICAg
dmFyIGN1ck91dHB1dFZhbHVlcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaW5OZHggPSAw
OyBpbk5keCA8IGlucHV0RGF0YS5sZW5ndGg7IGluTmR4KyspIHsKKyAgICAgICAgICAgICAgICBj
dXJJbnB1dFZhbHVlcy5wdXNoKGN1cklucHV0UHRyW2luTmR4XVt2YWxOZHhdKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIG91dE5keCA9IDA7IG91dE5keCA8IG91dHB1dERh
dGEubGVuZ3RoOyBvdXROZHgrKykgeworICAgICAgICAgICAgICAgIGN1ck91dHB1dFZhbHVlcy5w
dXNoKGN1ck91dHB1dFB0cltvdXROZHhdW3ZhbE5keF0pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCF0aGlzLmNvbXBhcmUoY3VySW5wdXRWYWx1ZXMsIGN1ck91dHB1dFZhbHVlcykp
IHsKKyAgICAgICAgICAgICAgICAvLyBcdG9kbyBbMjAxMy0wOC0wOCBweXJ5XSBXZSBwcm9iYWJs
eSB3YW50IHRvIGxvZyByZWZlcmVuY2UgdmFsdWUgYXMgd2VsbD8KKworICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogY29tcGFyaXNvbiBmYWlsZWQgZm9yIHZhbHVl
ICcgKyB2YWxOZHggKyAnOlxuICcgKyB0aGlzLm1fZmFpbE1zZyk7CisgICAgICAgICAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJyBpbnB1dHM6Jyk7CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaW5OZHggPSAwOyBpbk5keCA8IGlucHV0RGF0YS5sZW5ndGg7ICsraW5OZHgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIHZhclZhbHVlID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuVmFyVmFsdWUodGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUsIGN1cklucHV0VmFsdWVz
W2luTmR4XSk7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcgJyAr
IHRoaXMubV9zcGVjLmlucHV0c1tpbk5keF0ubmFtZSArICcgPSAnICsgdmFyVmFsdWUpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcg
b3V0cHV0czonKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBvdXROZHggPSAwOyBvdXROZHgg
PCBvdXRwdXREYXRhLmxlbmd0aDsgKytvdXROZHgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHZhclZhbHVlID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVmFyVmFsdWUodGhpcy5t
X3NwZWMuaW5wdXRzWzBdLnZhclR5cGUsIGN1ck91dHB1dFZhbHVlc1tvdXROZHhdKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJyAnICsgdGhpcy5tX3NwZWMub3V0
cHV0c1tvdXROZHhdLm5hbWUgKyAnID0gJyArIHZhclZhbHVlKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyA9ICcnOworICAgICAgICAgICAgICAg
IG51bUZhaWxlZCArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoKHRoaXMubV9udW1WYWx1ZXMgLSBudW1GYWlsZWQpICsgJyAvICcg
KyB0aGlzLm1fbnVtVmFsdWVzICsgJyB2YWx1ZXMgcGFzc2VkJyk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IG51bUZhaWxlZCA9PT0gMDsKKworICAgICAgICBp
ZiAoIWlzT2spCisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnUmVzdWx0IGNvbXBhcmlz
b24gZmFpbGVkJywgZmFsc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
T3B0aW9ucygnUGFzcycsIHRydWUpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRQcmVjaXNpb25Qb3N0
Zml4ID0gZnVuY3Rpb24ocHJlY2lzaW9uKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3Ry
aW5nPn0gKi8gdmFyIHNfcG9zdGZpeCA9IFsKKyAgICAgICAgICAgICdfbG93cCcsCisgICAgICAg
ICAgICAnX21lZGl1bXAnLAorICAgICAgICAgICAgJ19oaWdocCcKKyAgICAgICAgXTsKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucygwIDw9IHByZWNpc2lvbiAmJiBwcmVjaXNpb24gPCBzX3Bvc3Rm
aXgubGVuZ3RoLCAnRXJyb3I6IE91dCBvZiByYW5nZScsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIHNfcG9zdGZpeFtwcmVjaXNpb25dOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5nZXRTaGFkZXJUeXBlUG9zdGZpeCA9IGZ1bmN0aW9uKHNoYWRlclR5cGUpIHsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgc19wb3N0Zml4ID0gWworICAgICAgICAg
ICAgJ192ZXJ0ZXgnLAorICAgICAgICAgICAgJ19mcmFnbWVudCcKKyAgICAgICAgXTsKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucygwIDw9IHNoYWRlclR5cGUgJiYgc2hhZGVyVHlwZSA8IHNfcG9z
dGZpeC5sZW5ndGgsICdFcnJvciBPdXQgb2YgcmFuZ2UnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
IHJldHVybiBzX3Bvc3RmaXhbc2hhZGVyVHlwZV07CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAgICAgKiBAcGFyYW0g
e2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge2dsdVNo
YWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRDb21tb25G
dW5jQ2FzZU5hbWUgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJUeXBlKSB7
CisgICAgICAgIHJldHVybiBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShiYXNlVHlwZSkg
KworICAgICAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0UHJlY2lzaW9u
UG9zdGZpeChwcmVjaXNpb24pICsKKyAgICAgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLmdldFNoYWRlclR5cGVQb3N0Zml4KHNoYWRlclR5cGUpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlfQorICAgICAqIEBwYXJhbSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwu
cHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hh
ZGVyVHlwZX0gc2hhZGVyVHlwZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLkFic0Nhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJUeXBl
KSB7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9u
Q2FzZS5jYWxsKHRoaXMsCisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5nZXRDb21tb25GdW5jQ2FzZU5hbWUoYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlwZSks
CisgICAgICAgICAgICAnYWJzJywgc2hhZGVyVHlwZSk7CisgICAgICAgIHRoaXMubV9zcGVjLmlu
cHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUu
bmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRoaXMubV9zcGVj
Lm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFy
VHlwZS5uZXdUeXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhpcy5t
X3NwZWMuc291cmNlID0gJ291dDAgPSBhYnMoaW4wKTsnOworICAgIH07CisKKyAgICBlczNmU2hh
ZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5BYnNDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlw
ZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQWJzQ2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5BYnNDYXNlOworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bVZhbHVlcworICAgICAqIEByZXR1cm4g
eyp9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQWJzQ2FzZS5w
cm90b3R5cGUuZ2V0SW5wdXRWYWx1ZXMgPSBmdW5jdGlvbihudW1WYWx1ZXMpIHsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIGZsb2F0UmFuZ2VzID0gWwor
ICAgICAgICAgICAgWy0yLjAsIDIuMF0sIC8vIGxvd3AKKyAgICAgICAgICAgIFstMWUzLCAxZTNd
LCAvLyBtZWRpdW1wCisgICAgICAgICAgICBbLTFlNywgMWU3XSAvLyBoaWdocAorICAgICAgICBd
OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciBpbnRS
YW5nZXMgPSBbCisgICAgICAgICAgICBbLSgxIDw8IDcpICsgMSwgKDEgPDwgNykgLSAxXSwKKyAg
ICAgICAgICAgIFstKDEgPDwgMTUpICsgMSwgKDEgPDwgMTUpIC0gMV0sCisgICAgICAgICAgICBb
LTB4ODAwMDAwMDAgKyAxLCAweDdmZmZmZmZmXQorICAgICAgICBdOworCisgICAgICAgIC8qKiBA
dHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShk
ZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSBeIDB4MjM1ZmFjKTsKKworICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3Nw
ZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5p
bnB1dHNbMF0udmFyVHlwZS5nZXRQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNp
emUodHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZh
ciB2YWx1ZXMgPSBbXTsKKyAgICAgICAgdmFsdWVzWzBdID0gW107CisKKyAgICAgICAgaWYgKGds
dVNoYWRlclV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWModHlwZSkpCisgICAgICAgICAgICB2YWx1
ZXNbMF0gPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5maWxsUmFuZG9tU2NhbGFycyhl
czNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UeXBlcy5GTE9BVCwgcm5kLCBmbG9hdFJhbmdl
c1twcmVjaXNpb25dWzBdLCBmbG9hdFJhbmdlc1twcmVjaXNpb25dWzFdLCBudW1WYWx1ZXMgKiBz
Y2FsYXJTaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWVzWzBdID0gZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuVHlwZXMuSU5ULCBybmQsIGludFJhbmdlc1twcmVjaXNpb25dWzBdLCBp
bnRSYW5nZXNbcHJlY2lzaW9uXVsxXSwgbnVtVmFsdWVzICogc2NhbGFyU2l6ZSk7CisKKyAgICAg
ICAgcmV0dXJuIHZhbHVlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBp
bnB1dHMKKyAgICAgKiBAcGFyYW0geyp9IG91dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkFic0Nhc2UucHJv
dG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihpbnB1dHMsIG91dHB1dHMpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMubV9zcGVj
LmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAgICAvKiogQHR5cGUge2ds
dVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lzaW9uID0gdGhpcy5tX3NwZWMuaW5w
dXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXpl
KHR5cGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4wOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgcmVmMDsKKworICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBl
RmxvYXRPclZlYyh0eXBlKSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBtYW50aXNzYUJpdHMgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRNaW5NYW50
aXNzYUJpdHMocHJlY2lzaW9uKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4VWxwRGlmZiA9ICgxIDw8ICgyMyAtIG1hbnRpc3NhQml0cykpIC0gMTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXplOyBjb21wTmR4
KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07CisgICAgICAg
ICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAgICAgcmVm
MCA9IE1hdGguYWJzKGluMCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciB1bHBEaWZmMCA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldFVscERpZmYo
b3V0MCwgcmVmMCk7CisKKyAgICAgICAgICAgICAgICBpZiAodWxwRGlmZjAgPiBtYXhVbHBEaWZm
KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mYWlsTXNnICs9ICdFeHBlY3RlZCBbJyAr
IGNvbXBOZHggKyAnXSA9ICcgKyByZWYwIC8qSGV4RmxvYXQocmVmMCkqLyArICcgd2l0aCBVTFAg
dGhyZXNob2xkICcgKyBtYXhVbHBEaWZmICsgJywgZ290IFVMUCBkaWZmICcgKyB1bHBEaWZmMDsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4
ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7IGNvbXBOZHgrKykgeworICAgICAgICAgICAgICAg
IGluMCA9IGlucHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAgICAgICBvdXQwID0gb3V0cHV0
c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAgICAgICByZWYwID0gTWF0aC5hYnMoaW4wKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChvdXQwICE9IHJlZjApIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5tX2ZhaWxNc2cgKz0gJ0V4cGVjdGVkIFsnICsgY29tcE5keCArICddID0gJyArIHJlZjA7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2V9CisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlfSBiYXNlVHlwZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVj
aXNpb259IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJU
eXBlfSBzaGFkZXJUeXBlCisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuU2lnbkNhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJUeXBlKSB7
CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2Fz
ZS5jYWxsKHRoaXMsCisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5n
ZXRDb21tb25GdW5jQ2FzZU5hbWUoYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlwZSksCisg
ICAgICAgICAgICAnc2lnbicsIHNoYWRlclR5cGUpOworICAgICAgICB0aGlzLm1fc3BlYy5pbnB1
dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdpbjAnLCBnbHVWYXJUeXBlLm5l
d1R5cGVCYXNpYyhiYXNlVHlwZSwgcHJlY2lzaW9uKSkpOworICAgICAgICB0aGlzLm1fc3BlYy5v
dXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnb3V0MCcsIGdsdVZhclR5
cGUubmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRoaXMubV9z
cGVjLnNvdXJjZSA9ICdvdXQwID0gc2lnbihpbjApOyc7CisgICAgfTsKKworICAgIGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLlNpZ25DYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlw
ZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuU2lnbkNhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuU2lnbkNhc2U7CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHJldHVy
biB7Kn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5TaWduQ2Fz
ZS5wcm90b3R5cGUuZ2V0SW5wdXRWYWx1ZXMgPSBmdW5jdGlvbihudW1WYWx1ZXMpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIGZsb2F0UmFuZ2VzID0g
WworICAgICAgICAgICAgWy0yLjAsIDIuMF0sIC8vIGxvd3AKKyAgICAgICAgICAgIFstMWU0LCAx
ZTRdLCAvLyBtZWRpdW1wCisgICAgICAgICAgICBbLTFlOCwgMWU4XSAvLyBoaWdocAorICAgICAg
ICBdOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciBp
bnRSYW5nZXMgPSBbCisgICAgICAgICAgICBbLSgxIDw8IDcpLCAoMSA8PCA3KSAtIDFdLAorICAg
ICAgICAgICAgWy0oMSA8PCAxNSksICgxIDw8IDE1KSAtIDFdLAorICAgICAgICAgICAgWzB4ODAw
MDAwMDAsIDB4N2ZmZmZmZmZdCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJh
bmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRl
U3RyaW5nSGFzaCh0aGlzLm5hbWUpIF4gMHgzMjQpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1
U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHR5cGUgPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0u
dmFyVHlwZS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGls
LnByZWNpc2lvbn0gKi8gdmFyIHByZWNpc2lvbiA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJU
eXBlLmdldFByZWNpc2lvbigpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNj
YWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0eXBlKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIHZhbHVlcyA9IFtd
OworICAgICAgICB2YWx1ZXNbMF0gPSBbXTsKKworICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5p
c0RhdGFUeXBlRmxvYXRPclZlYyh0eXBlKSkgeworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNl
cy4KKyAgICAgICAgICAgIC8vIFtkYWddIFRoZSBzcGVjaWFsIGNhc2VzIGFyZSAxLCAtMSwgYW5k
IDAKKyAgICAgICAgICAgIHZhciBzcGVjaWFsQ2FzZXMgPSBbMS4wLCAtMS4wLCAwLjBdOworICAg
ICAgICAgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBzcGVjaWFsQ2FzZXMubGVu
Z3RoOyBjYXNlTmR4KyspCisgICAgICAgICAgICAgICAgZm9yICh2YXIgc2NhbGFyTmR4ID0gMDsg
c2NhbGFyTmR4IDwgc2NhbGFyU2l6ZTsgc2NhbGFyTmR4KyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzWzBdLnB1c2goc3BlY2lhbENhc2VzW2Nhc2VOZHhdKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YWx1ZXNbMF0gPSB2YWx1ZXNbMF0uY29uY2F0KGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLmZpbGxSYW5kb21TY2FsYXJzKGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLlR5cGVzLkZMT0FULCBybmQsIGZsb2F0UmFuZ2VzW3ByZWNpc2lvbl1bMF0sIGZs
b2F0UmFuZ2VzW3ByZWNpc2lvbl1bMV0sIChudW1WYWx1ZXMgLSAzKSAqIHNjYWxhclNpemUpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBzcGVjaWFsQ2FzZXMgPSBbMSwgLTEs
IDBdOworICAgICAgICAgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBzcGVjaWFs
Q2FzZXMubGVuZ3RoOyBjYXNlTmR4KyspCisgICAgICAgICAgICAgICAgZm9yICh2YXIgc2NhbGFy
TmR4ID0gMDsgc2NhbGFyTmR4IDwgc2NhbGFyU2l6ZTsgc2NhbGFyTmR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWVzWzBdLnB1c2goc3BlY2lhbENhc2VzW2Nhc2VOZHhdKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZXNbMF0gPSB2YWx1ZXNbMF0uY29uY2F0KGVz
M2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmZpbGxSYW5kb21TY2FsYXJzKGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLlR5cGVzLklOVCwgcm5kLCBpbnRSYW5nZXNbcHJlY2lzaW9uXVsw
XSwgaW50UmFuZ2VzW3ByZWNpc2lvbl1bMV0sIChudW1WYWx1ZXMgLSAzKSAqIHNjYWxhclNpemUp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Kn0gaW5wdXRzCisgICAgICogQHBhcmFtIHsqfSBvdXRwdXRzCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5TaWduQ2FzZS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKGlucHV0cywg
b3V0cHV0cykgeworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICov
IHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVj
aXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRQcmVjaXNpb24oKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBpbjA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb3V0MDsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYwOworCisgICAgICAgIGlmIChn
bHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHR5cGUpKSB7CisgICAgICAgICAgICAv
LyBCb3RoIGhpZ2hwIGFuZCBtZWRpdW1wIHNob3VsZCBiZSBhYmxlIHRvIHJlcHJlc2VudCAtMSwg
MCwgYW5kICsxIGV4YWN0bHkKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWF4VWxwRGlmZiA9IHByZWNpc2lvbiA9PT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lT
SU9OX0xPV1AgPworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LmdldE1heFVscERpZmZGcm9tQml0cyhlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRN
aW5NYW50aXNzYUJpdHMocHJlY2lzaW9uKSkgOgorICAgICAgICAgICAgICAgIDA7CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGNvbXBOZHggPSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5k
eCsrKSB7CisgICAgICAgICAgICAgICAgaW4wID0gaW5wdXRzWzBdW2NvbXBOZHhdOworICAgICAg
ICAgICAgICAgIG91dDAgPSBvdXRwdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIHJl
ZjAgPSBpbjAgPCAwLjAgPyAtMS4wIDoKKyAgICAgICAgICAgICAgICAgICAgICAgaW4wID4gMC4w
ID8gMS4wIDogMC4wOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
dWxwRGlmZjAgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmKG91dDAs
IHJlZjApOworCisgICAgICAgICAgICAgICAgaWYgKHVscERpZmYwID4gbWF4VWxwRGlmZikgewor
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21w
TmR4ICsgJ10gPSAnICsgcmVmMCAvKkhleEZsb2F0KHJlZjApKi8gKyAnIHdpdGggVUxQIHRocmVz
aG9sZCAnICsgbWF4VWxwRGlmZiArICcsIGdvdCBVTFAgZGlmZiAnICsgdWxwRGlmZjA7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4ID0g
MDsgY29tcE5keCA8IHNjYWxhclNpemU7IGNvbXBOZHgrKykgeworICAgICAgICAgICAgICAgIGlu
MCA9IGlucHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAgICAgICBvdXQwID0gb3V0cHV0c1sw
XVtjb21wTmR4XTsKKyAgICAgICAgICAgICAgICByZWYwID0gaW4wIDwgMCA/IC0xIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgaW4wID4gMCA/IDEgOiAwOworCisgICAgICAgICAgICAgICAgaWYg
KG91dDAgIT0gcmVmMCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAn
RXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSAnICsgcmVmMDsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gdgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5yb3VuZEV2ZW4gPSBmdW5jdGlvbih2KSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcSA9IGRlTWF0aC5kZUZsb2F0RnJhYyh2
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0cnVuY2F0ZWQgPSBNYXRoLnRy
dW5jKHYgLSBxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByb3VuZGVkID0g
KHEgPiAwLjUpID8gKHRydW5jYXRlZCArIDEpIDogLy8gUm91bmRlZCB1cAorICAgICAgICAgICAg
KHEgPT0gMC41ICYmICh0cnVuY2F0ZWQgJSAyICE9IDApKSA/ICh0cnVuY2F0ZWQgKyAxKSA6IC8v
IFJvdW5kIHRvIG5lYXJlc3QgZXZlbiBhdCAwLjUKKyAgICAgICAgICAgIHRydW5jYXRlZDsgLy8g
Um91bmRlZCBkb3duCisgICAgICAgIHJldHVybiByb3VuZGVkOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlfQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVy
VXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwucHJl
Y2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVy
VHlwZX0gc2hhZGVyVHlwZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLlJvdW5kRXZlbkNhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJU
eXBlKSB7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0
aW9uQ2FzZS5jYWxsKHRoaXMsCisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5nZXRDb21tb25GdW5jQ2FzZU5hbWUoYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlw
ZSksCisgICAgICAgICAgICAncm91bmRFdmVuJywgc2hhZGVyVHlwZSk7CisgICAgICAgIHRoaXMu
bV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGds
dVZhclR5cGUubmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRo
aXMubV9zcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQw
JywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAg
ICAgdGhpcy5tX3NwZWMuc291cmNlID0gJ291dDAgPSByb3VuZEV2ZW4oaW4wKTsnOworICAgIH07
CisKKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Sb3VuZEV2ZW5DYXNlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9u
RnVuY3Rpb25DYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuUm91bmRFdmVuQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5Sb3VuZEV2ZW5DYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IG51bVZhbHVlcworICAgICAqIEByZXR1cm4geyp9CisgICAgICovCisgICAgZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuUm91bmRFdmVuQ2FzZS5wcm90b3R5cGUuZ2V0SW5wdXRW
YWx1ZXMgPSBmdW5jdGlvbihudW1WYWx1ZXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxB
cnJheTxudW1iZXI+Pn0gKi8gdmFyIHJhbmdlcyA9IFsKKyAgICAgICAgICAgIFstMi4wLCAyLjBd
LCAvLyBsb3dwCisgICAgICAgICAgICBbLTFlMywgMWUzXSwgLy8gbWVkaXVtcAorICAgICAgICAg
ICAgWy0xZTcsIDFlN10gLy8gaGlnaHAKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUg
e2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJp
bmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiAweGFjMjNmKTsKKworICAgICAgICAvKiogQHR5
cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5w
dXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNb
MF0udmFyVHlwZS5nZXRQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlw
ZSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtU3BlY2lhbENhc2VzID0g
MDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIHZhbHVl
cyA9IFtdOworICAgICAgICB2YWx1ZXNbMF0gPSBbXTsKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNl
cy4KKyAgICAgICAgaWYgKHByZWNpc2lvbiAhPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX0xPV1ApIHsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobnVtVmFsdWVzID49
IDIwLCAnbnVtVmFsdWVzIHNob3VsZCBiZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4gMjAnLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyMDsgbmR4Kysp
IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHYgPSBkZU1hdGgu
Y2xhbXAobmR4IC0gMTAuNSwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdlc1twcmVjaXNpb25d
WzFdKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBzY2FsYXJOZHggPSAwOyBzY2FsYXJOZHgg
PCBzY2FsYXJTaXplOyBzY2FsYXJOZHgrKykgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZXNb
MF0ucHVzaCh2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbnVtU3BlY2lh
bENhc2VzICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSYW5k
b20gY2FzZXMuCisgICAgICAgIHZhbHVlc1swXSA9IHZhbHVlc1swXS5jb25jYXQoZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuVHlwZXMuRkxPQVQsIHJuZCwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdl
c1twcmVjaXNpb25dWzFdLCAobnVtVmFsdWVzIC0gbnVtU3BlY2lhbENhc2VzKSAqIHNjYWxhclNp
emUpKTsKKworICAgICAgICAvLyBJZiBwcmVjaXNpb24gaXMgbWVkaXVtcCwgbWFrZSBzdXJlIHZh
bHVlcyBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gZnAxNiBleGFjdGx5CisgICAgICAgIGlmIChwcmVj
aXNpb24gPT09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QKQorICAg
ICAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMudmVjVG9GbG9hdDE2KHZhbHVl
c1swXSk7CisKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHsqfSBpbnB1dHMKKyAgICAgKiBAcGFyYW0geyp9IG91dHB1dHMKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLlJvdW5kRXZlbkNhc2UucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihpbnB1dHMsIG91
dHB1dHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2
YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOwor
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lz
aW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGluMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdXQwOworCisg
ICAgICAgIGlmIChwcmVjaXNpb24gPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X0hJR0hQIHx8IHByZWNpc2lvbiA9PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
TUVESVVNUCkgeworICAgICAgICAgICAgLy8gUmVxdWlyZSBleGFjdCByb3VuZGluZyByZXN1bHQu
CisgICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7
IGNvbXBOZHgrKykgeworICAgICAgICAgICAgICAgIGluMCA9IGlucHV0c1swXVtjb21wTmR4XTsK
KyAgICAgICAgICAgICAgICBvdXQwID0gb3V0cHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZiA9IGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLnJvdW5kRXZlbihpbjApOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB1bHBEaWZmID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0
VWxwRGlmZklnbm9yZVplcm9TaWduKG91dDAsIHJlZik7CisKKyAgICAgICAgICAgICAgICBpZiAo
dWxwRGlmZiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2ZhaWxNc2cgKz0gJ0V4
cGVjdGVkIFsnICsgY29tcE5keCArICddID0gJyArIHJlZiArICcsIGdvdCBVTFAgZGlmZiAnICsg
dWxwRGlmZjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFudGlzc2FCaXRzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuZ2V0TWluTWFudGlzc2FCaXRzKHByZWNpc2lvbik7CisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heFVscERpZmYgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rp
b25UZXN0cy5nZXRNYXhVbHBEaWZmRnJvbUJpdHMobWFudGlzc2FCaXRzKTsgLy8gVUxQIGRpZmYg
Zm9yIHJvdW5kZWQgaW50ZWdlciB2YWx1ZS4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZXBzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0RXBzRnJvbUJp
dHMoMS4wLCBtYW50aXNzYUJpdHMpOyAvLyBlcHNpbG9uIGZvciByb3VuZGluZyBib3VuZHMKKwor
ICAgICAgICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXplOyBj
b21wTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07Cisg
ICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5SZXMgPSBNYXRoLmZsb29yKGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLnJvdW5kRXZlbihpbjAgLSBlcHMpKTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFJlcyA9IE1hdGguZmxvb3IoZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMucm91bmRFdmVuKGluMCArIGVwcykpOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGFueU9rID0gZmFsc2U7CisKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciByb3VuZGVkVmFsID0gbWluUmVzOyByb3VuZGVkVmFsIDw9IG1h
eFJlczsgcm91bmRlZFZhbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHVscERpZmYgPSBlczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24ob3V0MCwg
cm91bmRlZFZhbCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVscERpZmYgPD0gbWF4VWxw
RGlmZikgeworICAgICAgICAgICAgICAgICAgICAgICAgYW55T2sgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWFueU9rKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV9mYWlsTXNnICs9ICdFeHBlY3RlZCBbJyArIGNvbXBOZHggKyAnXSA9IFsnICsg
bWluUmVzICsgJywgJyArIG1heFJlcyArICddIHdpdGggVUxQIHRocmVzaG9sZCAnICsgbWF4VWxw
RGlmZjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlfQorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRl
clByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLk1vZGZDYXNlID0gZnVuY3Rpb24oYmFzZVR5cGUsIHByZWNpc2lv
biwgc2hhZGVyVHlwZSkgeworICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5D
b21tb25GdW5jdGlvbkNhc2UuY2FsbCh0aGlzLAorICAgICAgICAgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9uRnVuY0Nhc2VOYW1lKGJhc2VUeXBlLCBwcmVjaXNpb24s
IHNoYWRlclR5cGUpLAorICAgICAgICAgICAgJ21vZGYnLCBzaGFkZXJUeXBlKTsKKyAgICAgICAg
dGhpcy5tX3NwZWMuaW5wdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4w
JywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAg
ICAgdGhpcy5tX3NwZWMub3V0cHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2wo
J291dDAnLCBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhiYXNlVHlwZSwgcHJlY2lzaW9uKSkpOwor
ICAgICAgICB0aGlzLm1fc3BlYy5vdXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5
bWJvbCgnb3V0MScsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24p
KSk7CisgICAgICAgIHRoaXMubV9zcGVjLnNvdXJjZSA9ICdvdXQwID0gbW9kZihpbjAsIG91dDEp
Oyc7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLk1vZGZDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
Q29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuTW9kZkNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuTW9kZkNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gbnVtVmFsdWVzCisgICAgICogQHJldHVybiB7Kn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5Nb2RmQ2FzZS5wcm90b3R5cGUuZ2V0SW5wdXRWYWx1ZXMgPSBm
dW5jdGlvbihudW1WYWx1ZXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1i
ZXI+Pn0gKi8gdmFyIHJhbmdlcyA9IFsKKyAgICAgICAgICAgIFstMi4wLCAyLjBdLCAvLyBsb3dw
CisgICAgICAgICAgICBbLTFlMywgMWUzXSwgLy8gbWVkaXVtcAorICAgICAgICAgICAgWy0xZTcs
IDFlN10gLy8gaGlnaHAKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9t
LlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJp
bmdIYXNoKHRoaXMubmFtZSkgXiAweGFjMjNmKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZh
clR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5w
cmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlw
ZS5nZXRQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2Fs
YXJTaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciB2YWx1ZXMgPSBbXTsK
KyAgICAgICAgdmFsdWVzWzBdID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJh
bmRvbVNjYWxhcnMoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHlwZXMuRkxPQVQsIHJu
ZCwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdlc1twcmVjaXNpb25dWzFdLCBudW1WYWx1ZXMg
KiBzY2FsYXJTaXplKTsKKworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0geyp9IGlucHV0cworICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0cwor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuTW9kZkNhc2UucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihpbnB1dHMs
IG91dHB1dHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAq
LyB2YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgp
OworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJl
Y2lzaW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7Cisg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc1plcm9TaWduID0gZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMuc3VwcG9ydHNTaWduZWRaZXJvKHByZWNpc2lvbik7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG1hbnRpc3NhQml0cyA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1p
bk1hbnRpc3NhQml0cyhwcmVjaXNpb24pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGluMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdXQwOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dDE7CisKKyAgICAgICAgZm9yICh2YXIgY29t
cE5keCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXplOyBjb21wTmR4KyspIHsKKyAgICAgICAgICAg
IGluMCA9IGlucHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAgIG91dDAgPSBvdXRwdXRzWzBd
W2NvbXBOZHhdOworICAgICAgICAgICAgb3V0MSA9IG91dHB1dHNbMV1bY29tcE5keF07CisKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmT3V0MSA9IE1hdGguZmxvb3Io
aW4wKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmT3V0MCA9IGlu
MCAtIHJlZk91dDE7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYml0
c0xvc3QgPSBwcmVjaXNpb24gIT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJ
R0hQID8gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMubnVtQml0c0xvc3RJbk9wKGluMCwg
cmVmT3V0MCkgOiAwOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhV
bHBEaWZmID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0TWF4VWxwRGlmZkZyb21C
aXRzKE1hdGgubWF4KG1hbnRpc3NhQml0cyAtIGJpdHNMb3N0LCAwKSk7CisKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzU3VtID0gb3V0MCArIG91dDE7CisKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxwRGlmZiA9IGhhc1plcm9TaWduID8g
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0VWxwRGlmZihyZXNTdW0sIGluMCkgOiBl
czNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24ocmVz
U3VtLCBpbjApOworCisgICAgICAgICAgICBpZiAodWxwRGlmZiA+IG1heFVscERpZmYpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsg
J10gPSAoJyArIHJlZk91dDAgKyAnKSArICgnICsgcmVmT3V0MSArICcpID0gJyArIGluMCArICcg
d2l0aCBVTFAgdGhyZXNob2xkICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFVs
cERpZmYgKyAnLCBnb3QgVUxQIGRpZmYgJyArIHVscERpZmY7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2V9Cisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBiYXNlVHlwZQorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgICAgICovCisgICAgZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuSXNuYW5DYXNlID0gZnVuY3Rpb24oYmFzZVR5cGUs
IHByZWNpc2lvbiwgc2hhZGVyVHlwZSkgeworICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rp
b25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2FsbCh0aGlzLAorICAgICAgICAgICAgZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9uRnVuY0Nhc2VOYW1lKGJhc2VUeXBlLCBw
cmVjaXNpb24sIHNoYWRlclR5cGUpLAorICAgICAgICAgICAgJ2lzbmFuJywgc2hhZGVyVHlwZSk7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRP
clZlYyhiYXNlVHlwZSksICdBc3NlcnQgZXJyb3IuJywgZmFsc2UsIHRydWUpOworCisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVjU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKGJhc2VUeXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlfSAqLyB2YXIgYm9vbFR5cGUgPSB2ZWNTaXplID4gMSA/CisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
Qk9PTCwgdmVjU2l6ZSkgOgorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09M
OworCisgICAgICAgIHRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRp
bC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNp
b24pKSk7CisgICAgICAgIHRoaXMubV9zcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhl
Y1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoYm9vbFR5cGUpKSk7
CisgICAgICAgIHRoaXMubV9zcGVjLnNvdXJjZSA9ICdvdXQwID0gaXNuYW4oaW4wKTsnOworICAg
IH07CisKKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Jc25hbkNhc2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25G
dW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5Jc25hbkNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuSXNuYW5DYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51
bVZhbHVlcworICAgICAqIEByZXR1cm4geyp9CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuSXNuYW5DYXNlLnByb3RvdHlwZS5nZXRJbnB1dFZhbHVlcyA9IGZ1bmN0
aW9uKG51bVZhbHVlcykgeworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8g
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMu
bmFtZSkgXiAweGMyYTM5Zik7CisKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJh
c2ljVHlwZSgpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAq
LyB2YXIgcHJlY2lzaW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lz
aW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhQml0cyA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLmdldE1pbk1hbnRpc3NhQml0cyhwcmVjaXNpb24pOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1hbnRpc3NhTWFzayA9ICh+ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuZ2V0TWF4VWxwRGlmZkZyb21CaXRzKG1hbnRpc3NhQml0cykpICYgKCgxIDw8IDIzKSAt
IDEpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgdmFs
dWVzID0gW107CisgICAgICAgIHZhbHVlc1swXSA9IFtdOworCisgICAgICAgIGZvciAodmFyIHZh
bE5keCA9IDA7IHZhbE5keCA8IG51bVZhbHVlcyAqIHNjYWxhclNpemU7IHZhbE5keCsrKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc05hbiA9IHJuZC5nZXRGbG9h
dCgpID4gMC4zOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNJbmYg
PSAhaXNOYW4gJiYgcm5kLmdldEZsb2F0KCkgPiAwLjQ7CisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1hbnRpc3NhID0gIWlzSW5mID8gKCgxIDw8IDIyKSB8IChNYXRoLmFi
cyhybmQuZ2V0SW50KCkpICYgbWFudGlzc2FNYXNrKSkgOiAwOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBleHAgPSAhaXNOYW4gJiYgIWlzSW5mID8gKE1hdGguYWJzKHJu
ZC5nZXRJbnQoKSkgJiAweDdmKSA6IDB4ZmY7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHNpZ24gPSBNYXRoLmFicyhybmQuZ2V0SW50KCkpICYgMHgxOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2YWx1ZSA9IChzaWduIDw8IDMxKSB8IChleHAg
PDwgMjMpIHwgbWFudGlzc2E7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgaW50IHRvIGZsb2F0
LgorICAgICAgICAgICAgdmFyIHZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDQp
KTsKKyAgICAgICAgICAgIHZpZXcuc2V0SW50MzIoMCwgdmFsdWUsIHRydWUpOworICAgICAgICAg
ICAgdmFsdWUgPSB2aWV3LmdldEZsb2F0MzIoMCwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnModGN1RmxvYXQubmV3RmxvYXQzMih2YWx1ZSkuaXNJbmYoKSA9PT0gaXNJbmYg
JiYgdGN1RmxvYXQubmV3RmxvYXQzMih2YWx1ZSkuaXNOYU4oKSA9PT0gaXNOYW4sICdBc3NlcnQg
ZXJyb3IuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICB2YWx1ZXNbMF0ucHVzaCh2YWx1
ZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0geyp9IGlucHV0cworICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0cwor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuSXNuYW5DYXNlLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24oaW5wdXRz
LCBvdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0g
Ki8gdmFyIHR5cGUgPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRCYXNpY1R5cGUo
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHBy
ZWNpc2lvbiA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldFByZWNpc2lvbigpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNjYWxhclNpemUgPSBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0eXBlKTsKKworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGluMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdXQw
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZjsKKworICAgICAgICBpZiAo
cHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFApIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGNvbXBOZHggPSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsg
Y29tcE5keCsrKSB7CisgICAgICAgICAgICAgICAgaW4wID0gaW5wdXRzWzBdW2NvbXBOZHhdOwor
ICAgICAgICAgICAgICAgIG91dDAgPSBvdXRwdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAg
ICAgIHJlZiA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIoaW4wKS5pc05hTigpID8gMSA6IDA7CisKKyAg
ICAgICAgICAgICAgICBpZiAob3V0MCAhPT0gcmVmKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV9mYWlsTXNnICs9ICdFeHBlY3RlZCBbJyArIGNvbXBOZHggKyAnXSA9ICcgKyByZWY7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4
ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7IGNvbXBOZHgrKykgeworICAgICAgICAgICAgICAg
IG91dDAgPSBvdXRwdXRzWzBdW2NvbXBOZHhdOworCisgICAgICAgICAgICAgICAgaWYgKG91dDAg
IT09IDAgJiYgb3V0MCAhPT0gMSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1z
ZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSAwIC8gMSc7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5Db21tb25GdW5jdGlvbkNhc2V9CisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSBiYXNlVHlwZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259
IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBz
aGFkZXJUeXBlCisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuSXNp
bmZDYXNlID0gZnVuY3Rpb24oYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlwZSkgeworICAg
ICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2Fs
bCh0aGlzLAorICAgICAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29t
bW9uRnVuY0Nhc2VOYW1lKGJhc2VUeXBlLCBwcmVjaXNpb24sIHNoYWRlclR5cGUpLAorICAgICAg
ICAgICAgJ2lzaW5mJywgc2hhZGVyVHlwZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZ2x1
U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZlYyhiYXNlVHlwZSksICdBc3NlcnQgZXJyb3Iu
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVj
U2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKGJhc2VUeXBlKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgYm9vbFR5cGUg
PSB2ZWNTaXplID4gMSA/CisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlVmVj
dG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwgdmVjU2l6ZSkgOgorICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MOworCisgICAgICAgIHRoaXMubV9zcGVjLmlucHV0
cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3
VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRoaXMubV9zcGVjLm91
dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlw
ZS5uZXdUeXBlQmFzaWMoYm9vbFR5cGUpKSk7CisgICAgICAgIHRoaXMubV9zcGVjLnNvdXJjZSA9
ICdvdXQwID0gaXNpbmYoaW4wKTsnOworICAgIH07CisKKyAgICBlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5Jc2luZkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKyAgICBl
czNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Jc2luZkNhc2UucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuSXNpbmZDYXNlOworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bVZhbHVlcworICAgICAqIEByZXR1cm4geyp9Cisg
ICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuSXNpbmZDYXNlLnByb3Rv
dHlwZS5nZXRJbnB1dFZhbHVlcyA9IGZ1bmN0aW9uKG51bVZhbHVlcykgeworICAgICAgICAvKiog
QHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20o
ZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiAweGMyYTM5Zik7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMubV9z
cGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAgICAvKiogQHR5cGUg
e2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lzaW9uID0gdGhpcy5tX3NwZWMu
aW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJT
aXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhQml0
cyA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1pbk1hbnRpc3NhQml0cyhwcmVj
aXNpb24pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhTWFzayA9
ICh+ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0TWF4VWxwRGlmZkZyb21CaXRzKG1h
bnRpc3NhQml0cykpICYgKCgxIDw8IDIzKSAtIDEpOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgdmFsdWVzID0gW107CisgICAgICAgIHZhbHVlc1swXSA9
IFtdOworCisgICAgICAgIGZvciAodmFyIHZhbE5keCA9IDA7IHZhbE5keCA8IG51bVZhbHVlcyAq
IHNjYWxhclNpemU7IHZhbE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBpc0luZiA9IHJuZC5nZXRGbG9hdCgpID4gMC4zOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgaXNOYW4gPSAhaXNJbmYgJiYgcm5kLmdldEZsb2F0KCkgPiAw
LjQ7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhID0gIWlz
SW5mID8gKCgxIDw8IDIyKSB8IChNYXRoLmFicyhybmQuZ2V0SW50KCkpICYgbWFudGlzc2FNYXNr
KSkgOiAwOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHAgPSAhaXNO
YW4gJiYgIWlzSW5mID8gKE1hdGguYWJzKHJuZC5nZXRJbnQoKSkgJiAweDdmKSA6IDB4ZmY7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNpZ24gPSBNYXRoLmFicyhybmQu
Z2V0SW50KCkpICYgMHgxOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2
YWx1ZSA9IChzaWduIDw8IDMxKSB8IChleHAgPDwgMjMpIHwgbWFudGlzc2E7CisKKyAgICAgICAg
ICAgIC8vIENvbnZlcnQgaW50IHRvIGZsb2F0LgorICAgICAgICAgICAgdmFyIHZpZXcgPSBuZXcg
RGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDQpKTsKKyAgICAgICAgICAgIHZpZXcuc2V0SW50MzIo
MCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgdmFsdWUgPSB2aWV3LmdldEZsb2F0MzIoMCwg
dHJ1ZSk7CisKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGN1RmxvYXQubmV3RmxvYXQz
Mih2YWx1ZSkuaXNJbmYoKSA9PT0gaXNJbmYgJiYgdGN1RmxvYXQubmV3RmxvYXQzMih2YWx1ZSku
aXNOYU4oKSA9PT0gaXNOYW4sICdBc3NlcnQgZXJyb3IuJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgICAgICB2YWx1ZXNbMF0ucHVzaCh2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gdmFsdWVzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IGlucHV0cwor
ICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0cworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAg
ICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuSXNpbmZDYXNlLnByb3RvdHlw
ZS5jb21wYXJlID0gZnVuY3Rpb24oaW5wdXRzLCBvdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHR5cGUgPSB0aGlzLm1fc3BlYy5pbnB1
dHNbMF0udmFyVHlwZS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFk
ZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHByZWNpc2lvbiA9IHRoaXMubV9zcGVjLmlucHV0c1sw
XS52YXJUeXBlLmdldFByZWNpc2lvbigpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHNjYWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0eXBl
KTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluMDsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdXQwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHJlZjsKKworICAgICAgICBpZiAocHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnBy
ZWNpc2lvbi5QUkVDSVNJT05fSElHSFApIHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvbXBOZHgg
PSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7CisgICAgICAgICAgICAgICAg
aW4wID0gaW5wdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIG91dDAgPSBvdXRwdXRz
WzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIHJlZiA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIo
aW4wKS5pc0luZigpID8gMSA6IDA7CisKKyAgICAgICAgICAgICAgICBpZiAob3V0MCAhPT0gcmVm
KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mYWlsTXNnICs9ICdFeHBlY3RlZCBbJyAr
IGNvbXBOZHggKyAnXSA9ICcgKyByZWY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7IGNv
bXBOZHgrKykgeworICAgICAgICAgICAgICAgIG91dDAgPSBvdXRwdXRzWzBdW2NvbXBOZHhdOwor
CisgICAgICAgICAgICAgICAgaWYgKG91dDAgIT09IDAgJiYgb3V0MCAhPT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsg
J10gPSAwIC8gMSc7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRz
IHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2V9CisgICAg
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBiYXNlVHlwZQorICAgICAqIEBwYXJh
bSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7Z2x1
U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgICAgICogQHBhcmFtIHtib29s
ZWFufSBvdXRJc1NpZ25lZAorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLkZsb2F0Qml0c1RvVWludEludENhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9u
LCBzaGFkZXJUeXBlLCBvdXRJc1NpZ25lZCkgeworICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2FsbCh0aGlzLAorICAgICAgICAgICAgZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9uRnVuY0Nhc2VOYW1lKGJhc2VUeXBl
LCBwcmVjaXNpb24sIHNoYWRlclR5cGUpLAorICAgICAgICAgICAgb3V0SXNTaWduZWQgPyAnZmxv
YXRCaXRzVG9JbnQnIDogJ2Zsb2F0Qml0c1RvVWludCcsIHNoYWRlclR5cGUpOworCisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVjU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKGJhc2VUeXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlfSAqLyB2YXIgaW50VHlwZSA9IG91dElzU2lnbmVkID8KKyAgICAgICAgICAg
ICh2ZWNTaXplID4gMSA/IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQsIHZlY1NpemUpIDogZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQp
IDoKKyAgICAgICAgICAgICh2ZWNTaXplID4gMSA/IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVW
ZWN0b3IoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCB2ZWNTaXplKSA6IGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCk7CisKKyAgICAgICAgdGhpcy5tX3NwZWMuaW5wdXRzLnB1c2gobmV3
IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4wJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMo
YmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhpcy5tX3NwZWMub3V0cHV0cy5wdXNo
KG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ291dDAnLCBnbHVWYXJUeXBlLm5ld1R5cGVC
YXNpYyhpbnRUeXBlLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFApKSk7
CisgICAgICAgIHRoaXMubV9zcGVjLnNvdXJjZSA9IG91dElzU2lnbmVkID8gJ291dDAgPSBmbG9h
dEJpdHNUb0ludChpbjApOycgOiAnb3V0MCA9IGZsb2F0Qml0c1RvVWludChpbjApOyc7CisgICAg
fTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvVWludElu
dENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5Db21tb25GdW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5GbG9hdEJpdHNUb1VpbnRJbnRDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvVWludEludENhc2U7
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHJl
dHVybiB7Kn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9h
dEJpdHNUb1VpbnRJbnRDYXNlLnByb3RvdHlwZS5nZXRJbnB1dFZhbHVlcyA9IGZ1bmN0aW9uKG51
bVZhbHVlcykgeworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJh
bmdlcyA9IFsKKyAgICAgICAgICAgICAgICBbLTIuMCwgMi4wXSwgLy8gbG93cAorICAgICAgICAg
ICAgICAgIFstMWUzLCAxZTNdLCAvLyBtZWRpdW1wCisgICAgICAgICAgICAgICAgWy0xZTcsIDFl
N10gLy8gaGlnaHAKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJh
bmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdI
YXNoKHRoaXMubmFtZSkgXiAweDI3OTBhKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5
cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVj
aXNpb259ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5n
ZXRQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJT
aXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciB2YWx1ZXMgPSBbXTsKKwor
ICAgICAgICB2YWx1ZXNbMF0gPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5maWxsUmFu
ZG9tU2NhbGFycyhlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UeXBlcy5GTE9BVCwgcm5k
LCByYW5nZXNbcHJlY2lzaW9uXVswXSwgcmFuZ2VzW3ByZWNpc2lvbl1bMV0sIG51bVZhbHVlcyAq
IHNjYWxhclNpemUpOworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0geyp9IGlucHV0cworICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0cworICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuRmxvYXRCaXRzVG9VaW50SW50Q2FzZS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0
aW9uKGlucHV0cywgb3V0cHV0cykgeworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwu
RGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0
QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259
ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRQcmVj
aXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0g
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFudGlzc2FCaXRzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuZ2V0TWluTWFudGlzc2FCaXRzKHByZWNpc2lvbik7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWF4VWxwRGlmZiA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLmdldE1heFVscERpZmZGcm9tQml0cyhtYW50aXNzYUJpdHMpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4wOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG91dDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmT3V0MDsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB1bHBEaWZmOworCisgICAgICAgIGZvciAo
dmFyIGNvbXBOZHggPSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7CisgICAg
ICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICBvdXQwID0gb3V0
cHV0c1swXVtjb21wTmR4XTsKKworICAgICAgICAgICAgLy8gQ29udmVydCBpbnQgdG8gdWludCBi
ZWNhdXNlIHJlZiBvdXQgaXMgaW4gdWludCBmb3JtYXQuCisgICAgICAgICAgICB2YXIgdmlldyA9
IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoNCkpOworICAgICAgICAgICAgdmlldy5zZXRJ
bnQzMigwLCBvdXQwLCB0cnVlKTsKKyAgICAgICAgICAgIG91dDAgPSB2aWV3LmdldFVpbnQzMigw
LCB0cnVlKTsKKworICAgICAgICAgICAgcmVmT3V0MCA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIoaW4w
KS5iaXRzKCk7CisgICAgICAgICAgICB1bHBEaWZmID0gTWF0aC5hYnMob3V0MCAtIHJlZk91dDAp
OworICAgICAgICAgICAgaWYgKHVscERpZmYgPiBtYXhVbHBEaWZmKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5tX2ZhaWxNc2cgKz0gJ0V4cGVjdGVkIFsnICsgY29tcE5keCArICddID0gJyArIHJl
Zk91dDAgKyAnIHdpdGggdGhyZXNob2xkICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFVscERpZmYgKyAnLCBnb3QgZGlmZiAnICsgdWxwRGlmZjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICogQGV4
dGVuZHMge2VzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvVWludEludENh
c2V9CisgICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICAq
IEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgICAgICAq
LworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvSW50Q2FzZSA9
IGZ1bmN0aW9uKGJhc2VUeXBlLCBwcmVjaXNpb24sIHNoYWRlclR5cGUpIHsKKyAgICAgICAgZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuRmxvYXRCaXRzVG9VaW50SW50Q2FzZS5jYWxsKHRo
aXMsIGJhc2VUeXBlLCBwcmVjaXNpb24sIHNoYWRlclR5cGUsIHRydWUpOworICAgIH07CisKKyAg
ICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9hdEJpdHNUb0ludENhc2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9hdEJp
dHNUb1VpbnRJbnRDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuRmxvYXRCaXRzVG9JbnRDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvSW50Q2FzZTsKKworICAgIC8qKgorICAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgICogQGV4dGVuZHMge2VzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLkZsb2F0Qml0c1RvVWludEludENhc2V9CisgICAgICAqIEBwYXJhbSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZX0gYmFzZVR5cGUKKyAgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGls
LnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5z
aGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLkZsb2F0Qml0c1RvVWludENhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lz
aW9uLCBzaGFkZXJUeXBlKSB7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LkZsb2F0Qml0c1RvVWludEludENhc2UuY2FsbCh0aGlzLCBiYXNlVHlwZSwgcHJlY2lzaW9uLCBz
aGFkZXJUeXBlLCBmYWxzZSk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLkZsb2F0Qml0c1RvVWludENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9hdEJpdHNUb1VpbnRJbnRDYXNlLnByb3RvdHlw
ZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuRmxvYXRCaXRzVG9VaW50Q2Fz
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5G
bG9hdEJpdHNUb1VpbnRDYXNlOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2VzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9u
Q2FzZX0KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGJhc2VUeXBlCisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5CaXRzVG9GbG9hdENhc2Ug
PSBmdW5jdGlvbihiYXNlVHlwZSwgc2hhZGVyVHlwZSkgeworICAgICAgICBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2FsbCh0aGlzLAorICAgICAgICAg
ICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9uRnVuY0Nhc2VOYW1lKGJh
c2VUeXBlLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAsIHNoYWRlclR5
cGUpLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50T3JJVmVjKGJhc2VU
eXBlKSA/ICdpbnRCaXRzVG9GbG9hdCcgOiAndWludEJpdHNUb0Zsb2F0Jywgc2hhZGVyVHlwZSk7
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGluSXNTaWduZWQgPSBnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWMoYmFzZVR5cGUpOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHZlY1NpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFy
U2l6ZShiYXNlVHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZX0gKi8gdmFyIGZsb2F0VHlwZSA9IHZlY1NpemUgPiAxID8gZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZUZsb2F0VmVjKHZlY1NpemUpIDogZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKwor
ICAgICAgICB0aGlzLm1fc3BlYy5pbnB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3lt
Ym9sKCdpbjAnLCBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhiYXNlVHlwZSwgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworICAgICAgICB0aGlzLm1fc3BlYy5vdXRw
dXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnb3V0MCcsIGdsdVZhclR5cGUu
bmV3VHlwZUJhc2ljKGZsb2F0VHlwZSwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X0hJR0hQKSkpOworICAgICAgICB0aGlzLm1fc3BlYy5zb3VyY2UgPSBpbklzU2lnbmVkID8gJ291
dDAgPSBpbnRCaXRzVG9GbG9hdChpbjApOycgOiAnb3V0MCA9IHVpbnRCaXRzVG9GbG9hdChpbjAp
Oyc7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkJpdHNUb0Zs
b2F0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJDb21t
b25GdW5jdGlvblRlc3RzLkJpdHNUb0Zsb2F0Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBl
czNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5CaXRzVG9GbG9hdENhc2U7CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHJldHVybiB7Kn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5CaXRzVG9GbG9hdENhc2Uu
cHJvdG90eXBlLmdldElucHV0VmFsdWVzID0gZnVuY3Rpb24obnVtVmFsdWVzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJh
bmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSBeIDB4YmJiMjI1KTsKKworICAg
ICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhp
cy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciByYW5nZSA9IFstMWU4LCAxZThdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5
PG51bWJlcj4+fSAqLyB2YXIgdmFsdWVzID0gW107CisKKyAgICAgICAgdmFsdWVzWzBdID0gZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNoYWRlckNv
bW1vbkZ1bmN0aW9uVGVzdHMuVHlwZXMuRkxPQVQsIHJuZCwgcmFuZ2VbMF0sIHJhbmdlWzFdLCBu
dW1WYWx1ZXMgKiBzY2FsYXJTaXplKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBpbnB1dHMKKyAgICAgKiBAcGFyYW0geyp9IG91
dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLkJpdHNUb0Zsb2F0Q2FzZS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1
bmN0aW9uKGlucHV0cywgb3V0cHV0cykgeworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0
aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUu
Z2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFy
U2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFVscERpZmYgPSAwOworCisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4wOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG91dDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxwRGlmZjsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZPdXQwOworCisgICAgICAgIGZv
ciAodmFyIGNvbXBOZHggPSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7Cisg
ICAgICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICBvdXQwID0g
b3V0cHV0c1swXVtjb21wTmR4XTsKKworICAgICAgICAgICAgLy8gQ29udmVydCBpbnQgdG8gZmxv
YXQKKyAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcig0
KSk7CisgICAgICAgICAgICB2aWV3LnNldEludDMyKDAsIGluMCwgdHJ1ZSk7CisgICAgICAgICAg
ICBpbjAgPSB2aWV3LmdldEZsb2F0MzIoMCwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHVscERpZmYg
PSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmKGluMCwgb3V0MCk7Cisg
ICAgICAgICAgICBpZiAodWxwRGlmZiA+IG1heFVscERpZmYpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSAnICsgaW4wICsg
JyB3aXRoIFVMUCB0aHJlc2hvbGQgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4
VWxwRGlmZiArICcsIGdvdCBVTFAgZGlmZiAnICsgdWxwRGlmZjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2V9Cisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBiYXNlVHlwZQorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgICAgICovCisgICAgZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuRmxvb3JDYXNlID0gZnVuY3Rpb24oYmFzZVR5cGUs
IHByZWNpc2lvbiwgc2hhZGVyVHlwZSkgeworICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rp
b25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2FsbCh0aGlzLAorICAgICAgICAgICAgZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9uRnVuY0Nhc2VOYW1lKGJhc2VUeXBlLCBw
cmVjaXNpb24sIHNoYWRlclR5cGUpLAorICAgICAgICAgICAgJ2Zsb29yJywgc2hhZGVyVHlwZSk7
CisgICAgICAgIHRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5T
eW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGJhc2VUeXBlLCBwcmVjaXNpb24p
KSk7CisgICAgICAgIHRoaXMubV9zcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0
aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoYmFzZVR5cGUsIHByZWNp
c2lvbikpKTsKKyAgICAgICAgdGhpcy5tX3NwZWMuc291cmNlID0gJ291dDAgPSBmbG9vcihpbjAp
Oyc7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb29yQ2Fz
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LkNvbW1vbkZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5j
dGlvblRlc3RzLkZsb29yQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5GbG9vckNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHJldHVybiB7Kn0KKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9vckNhc2UucHJvdG90eXBlLmdldElucHV0VmFsdWVz
ID0gZnVuY3Rpb24obnVtVmFsdWVzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8
bnVtYmVyPj59ICovIHZhciByYW5nZXMgPSBbCisgICAgICAgICAgICBbLTIuMCwgMi4wXSwgLy8g
bG93cAorICAgICAgICAgICAgWy0xZTMsIDFlM10sIC8vIG1lZGl1bXAKKyAgICAgICAgICAgIFst
MWU3LCAxZTddIC8vIGhpZ2hwCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJh
bmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRl
U3RyaW5nSGFzaCh0aGlzLm5hbWUpIF4gMHhhYzIzZik7CisKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1sw
XS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0
aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lzaW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZh
clR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
c2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgdmFsdWVzID0g
W107CisgICAgICAgIC8vIFJhbmRvbSBjYXNlcy4KKyAgICAgICAgdmFsdWVzWzBdID0gZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuVHlwZXMuRkxPQVQsIHJuZCwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJh
bmdlc1twcmVjaXNpb25dWzFdLCBudW1WYWx1ZXMgKiBzY2FsYXJTaXplKTsKKworICAgICAgICAv
LyBJZiBwcmVjaXNpb24gaXMgbWVkaXVtcCwgbWFrZSBzdXJlIHZhbHVlcyBjYW4gYmUgcmVwcmVz
ZW50ZWQgaW4gZnAxNiBleGFjdGx5CisgICAgICAgIGlmIChwcmVjaXNpb24gPT09IGdsdVNoYWRl
clV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QKQorICAgICAgICAgICAgZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMudmVjVG9GbG9hdDE2KHZhbHVlc1swXSk7CisKKyAgICAgICAg
cmV0dXJuIHZhbHVlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBpbnB1
dHMKKyAgICAgKiBAcGFyYW0geyp9IG91dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb29yQ2FzZS5wcm90
b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKGlucHV0cywgb3V0cHV0cykgeworICAgICAgICAvKiog
QHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMu
aW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1
U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1
dHNbMF0udmFyVHlwZS5nZXRQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUo
dHlwZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbjA7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb3V0MDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciByZWY7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxwRGlm
ZjsKKworICAgICAgICBpZiAocHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fSElHSFAgfHwgcHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fTUVESVVNUCkgeworICAgICAgICAgICAgLy8gUmVxdWlyZSBleGFjdCByZXN1bHQu
CisgICAgICAgICAgICBmb3IgKHZhciBjb21wTmR4ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7
IGNvbXBOZHgrKykgeworICAgICAgICAgICAgICAgIGluMCA9IGlucHV0c1swXVtjb21wTmR4XTsK
KyAgICAgICAgICAgICAgICBvdXQwID0gb3V0cHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAgICAg
ICAgICByZWYgPSBNYXRoLmZsb29yKGluMCk7CisKKyAgICAgICAgICAgICAgICB1bHBEaWZmID0g
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0VWxwRGlmZihvdXQwLCByZWYpOworCisg
ICAgICAgICAgICAgICAgaWYgKHVscERpZmYgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV9mYWlsTXNnICs9ICdFeHBlY3RlZCBbJyArIGNvbXBOZHggKyAnXSA9ICcgKyByZWYgKyAn
LCBnb3QgVUxQIGRpZmYgJyArIHVscERpZmY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhQml0cyA9IGVz
M2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1pbk1hbnRpc3NhQml0cyhwcmVjaXNpb24p
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhVbHBEaWZmID0gZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0TWF4VWxwRGlmZkZyb21CaXRzKG1hbnRpc3Nh
Qml0cyk7IC8vIFVMUCBkaWZmIGZvciByb3VuZGVkIGludGVnZXIgdmFsdWUuCisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVwcyA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLmdldEVwc0Zyb21CaXRzKDEuMCwgbWFudGlzc2FCaXRzKTsgLy8gZXBzaWxvbiBmb3Ig
cm91bmRpbmcgYm91bmRzCisKKyAgICAgICAgICAgIGZvciAodmFyIGNvbXBOZHggPSAwOyBjb21w
TmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7CisgICAgICAgICAgICAgICAgaW4wID0gaW5w
dXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIG91dDAgPSBvdXRwdXRzWzBdW2NvbXBO
ZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluUmVzID0g
TWF0aC5mbG9vcihpbjAgLSBlcHMpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgbWF4UmVzID0gTWF0aC5mbG9vcihpbjAgKyBlcHMpOworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGFueU9rID0gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciByb3VuZGVkVmFsID0gbWluUmVzOyByb3VuZGVkVmFsIDw9IG1heFJlczsg
cm91bmRlZFZhbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHVscERpZmYgPSBlczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmKG91dDAsIHJvdW5kZWRWYWwpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICh1bHBEaWZmIDw9IG1heFVscERpZmYpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFueU9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKCFhbnlPaykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyAr
PSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSBbJyArIG1pblJlcyArICcsICcgKyBtYXhS
ZXMgKyAnXSB3aXRoIFVMUCB0aHJlc2hvbGQgJyArIG1heFVscERpZmY7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZX0KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwu
RGF0YVR5cGV9IGJhc2VUeXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lv
bn0gcHJlY2lzaW9uCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9
IHNoYWRlclR5cGUKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5U
cnVuY0Nhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJUeXBlKSB7Cisg
ICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZS5j
YWxsKHRoaXMsCisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRD
b21tb25GdW5jQ2FzZU5hbWUoYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlwZSksCisgICAg
ICAgICAgICAndHJ1bmMnLCBzaGFkZXJUeXBlKTsKKyAgICAgICAgdGhpcy5tX3NwZWMuaW5wdXRz
LnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4wJywgZ2x1VmFyVHlwZS5uZXdU
eXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhpcy5tX3NwZWMub3V0
cHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ291dDAnLCBnbHVWYXJUeXBl
Lm5ld1R5cGVCYXNpYyhiYXNlVHlwZSwgcHJlY2lzaW9uKSkpOworICAgICAgICB0aGlzLm1fc3Bl
Yy5zb3VyY2UgPSAnb3V0MCA9IHRydW5jKGluMCk7JzsKKyAgICB9OworCisgICAgZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHJ1bmNDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLnByb3RvdHlw
ZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHJ1bmNDYXNlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlRydW5jQ2FzZTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1WYWx1ZXMKKyAgICAgKiBAcmV0
dXJuIHsqfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlRydW5j
Q2FzZS5wcm90b3R5cGUuZ2V0SW5wdXRWYWx1ZXMgPSBmdW5jdGlvbihudW1WYWx1ZXMpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIHJhbmdlcyA9IFsK
KyAgICAgICAgICAgIFstMi4wLCAyLjBdLCAvLyBsb3dwCisgICAgICAgICAgICBbLTFlMywgMWUz
XSwgLy8gbWVkaXVtcAorICAgICAgICAgICAgWy0xZTcsIDFlN10gLy8gaGlnaHAKKyAgICAgICAg
XTsKKworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5l
dyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiAweGFj
MjNmKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZh
ciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7Cisg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciBwcmVjaXNp
b24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRQcmVjaXNpb24oKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRpbC5n
ZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgc3BlY2lhbENhc2VzID0gWzAuMCwgLTAuMCwgLTAuOSwgMC45LCAxLjAs
IC0xLjBdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIg
dmFsdWVzID0gW107CisgICAgICAgIHZhbHVlc1swXSA9IFtdOworCisgICAgICAgIC8vIFNwZWNp
YWwgY2FzZXMKKyAgICAgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBzcGVjaWFs
Q2FzZXMubGVuZ3RoOyBjYXNlTmR4KyspCisgICAgICAgIGZvciAodmFyIHNjYWxhck5keCA9IDA7
IHNjYWxhck5keCA8IHNjYWxhclNpemU7IHNjYWxhck5keCsrKQorICAgICAgICAgICAgdmFsdWVz
WzBdLnB1c2goc3BlY2lhbENhc2VzW2Nhc2VOZHhdKTsKKworICAgICAgICAvLyBSYW5kb20gY2Fz
ZXMuCisgICAgICAgIHZhbHVlc1swXSA9IHZhbHVlc1swXS5jb25jYXQoZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuVHlwZXMuRkxPQVQsIHJuZCwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdlc1twcmVj
aXNpb25dWzFdLCAobnVtVmFsdWVzIC0gc3BlY2lhbENhc2VzLmxlbmd0aCkgKiBzY2FsYXJTaXpl
KSk7CisKKyAgICAgICAgLy8gSWYgcHJlY2lzaW9uIGlzIG1lZGl1bXAsIG1ha2Ugc3VyZSB2YWx1
ZXMgY2FuIGJlIHJlcHJlc2VudGVkIGluIGZwMTYgZXhhY3RseQorICAgICAgICBpZiAocHJlY2lz
aW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCkKKyAgICAg
ICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnZlY1RvRmxvYXQxNih2YWx1ZXNb
MF0pOworCisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Kn0gaW5wdXRzCisgICAgICogQHBhcmFtIHsqfSBvdXRwdXRzCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5UcnVuY0Nhc2UucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihpbnB1dHMsIG91dHB1dHMp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlw
ZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAg
ICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lzaW9uID0g
dGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKHR5cGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgaW4wOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dDA7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHVscERpZmY7CisKKyAgICAgICAgaWYgKHByZWNpc2lvbiA9PT0gZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQIHx8IHByZWNpc2lvbiA9PT0gZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVApIHsKKyAgICAgICAgICAgIC8vIFJlcXVp
cmUgZXhhY3QgcmVzdWx0LgorICAgICAgICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNvbXBO
ZHggPCBzY2FsYXJTaXplOyBjb21wTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBpbnB1
dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29tcE5k
eF07CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNOZWcgPSB0
Y3VGbG9hdC5uZXdGbG9hdDMyKGluMCkuc2lnbigpIDwgMDsKKyAgICAgICAgICAgICAgICByZWYg
PSBpc05lZyA/ICgtTWF0aC5mbG9vcigtaW4wKSkgOiBNYXRoLmZsb29yKGluMCk7CisKKyAgICAg
ICAgICAgICAgICAvLyBcbm90ZTogdHJ1bmMoKSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGEgYml0
IGJyb2FkIG9uIG5lZ2F0aXZlIHplcm9zLiBJZ25vcmUgcmVzdWx0IHNpZ24gaWYgemVyby4KKyAg
ICAgICAgICAgICAgICB1bHBEaWZmID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0
VWxwRGlmZklnbm9yZVplcm9TaWduKG91dDAsIHJlZik7CisKKyAgICAgICAgICAgICAgICBpZiAo
dWxwRGlmZiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2ZhaWxNc2cgKz0gJ0V4
cGVjdGVkIFsnICsgY29tcE5keCArICddID0gJyArIHJlZiArICcsIGdvdCBVTFAgZGlmZiAnICsg
dWxwRGlmZjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFudGlzc2FCaXRzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuZ2V0TWluTWFudGlzc2FCaXRzKHByZWNpc2lvbik7CisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heFVscERpZmYgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rp
b25UZXN0cy5nZXRNYXhVbHBEaWZmRnJvbUJpdHMobWFudGlzc2FCaXRzKTsgLy8gVUxQIGRpZmYg
Zm9yIHJvdW5kZWQgaW50ZWdlciB2YWx1ZS4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZXBzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0RXBzRnJvbUJp
dHMoMS4wLCBtYW50aXNzYUJpdHMpOyAvLyBlcHNpbG9uIGZvciByb3VuZGluZyBib3VuZHMKKwor
ICAgICAgICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXplOyBj
b21wTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07Cisg
ICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5SZXMgPSBNYXRoLnRydW5jKGluMCAtIGVw
cyk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhSZXMgPSBN
YXRoLnRydW5jKGluMCArIGVwcyk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB2YXIgYW55T2sgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIHJvdW5k
ZWRWYWwgPSBtaW5SZXM7IHJvdW5kZWRWYWwgPD0gbWF4UmVzOyByb3VuZGVkVmFsKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgdWxwRGlmZiA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LmdldFVscERpZmZJZ25vcmVaZXJvU2lnbihvdXQwLCByb3VuZGVkVmFsKTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAodWxwRGlmZiA8PSBtYXhVbHBEaWZmKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhbnlPayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmICghYW55T2spIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2ZhaWxNc2cgKz0gJ0V4
cGVjdGVkIFsnICsgY29tcE5keCArICddID0gWycgKyBtaW5SZXMgKyAnLCAnICsgbWF4UmVzICsg
J10gd2l0aCBVTFAgdGhyZXNob2xkICcgKyBtYXhVbHBEaWZmOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5Db21tb25GdW5jdGlvbkNhc2V9CisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlfSBiYXNlVHlwZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHBy
ZWNpc2lvbgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFk
ZXJUeXBlCisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuUm91bmRD
YXNlID0gZnVuY3Rpb24oYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVyVHlwZSkgeworICAgICAg
ICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UuY2FsbCh0
aGlzLAorICAgICAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0Q29tbW9u
RnVuY0Nhc2VOYW1lKGJhc2VUeXBlLCBwcmVjaXNpb24sIHNoYWRlclR5cGUpLAorICAgICAgICAg
ICAgJ3JvdW5kJywgc2hhZGVyVHlwZSk7CisgICAgICAgIHRoaXMubV9zcGVjLmlucHV0cy5wdXNo
KG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJh
c2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRoaXMubV9zcGVjLm91dHB1dHMu
cHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdU
eXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhpcy5tX3NwZWMuc291
cmNlID0gJ291dDAgPSByb3VuZChpbjApOyc7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21t
b25GdW5jdGlvblRlc3RzLlJvdW5kQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZT
aGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUpOwor
ICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlJvdW5kQ2FzZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Sb3VuZENhc2U7CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHJldHVybiB7
Kn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Sb3VuZENhc2Uu
cHJvdG90eXBlLmdldElucHV0VmFsdWVzID0gZnVuY3Rpb24obnVtVmFsdWVzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciByYW5nZXMgPSBbCisgICAg
ICAgICAgICBbLTIuMCwgMi4wXSwgLy8gbG93cAorICAgICAgICAgICAgWy0xZTMsIDFlM10sIC8v
IG1lZGl1bXAKKyAgICAgICAgICAgIFstMWU3LCAxZTddIC8vIGhpZ2hwCisgICAgICAgIF07CisK
KyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVS
YW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLm5hbWUpIF4gMHhhYzIzZik7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdHlw
ZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAg
ICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lzaW9uID0g
dGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG51bVNwZWNpYWxDYXNlcyA9IDA7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxu
dW1iZXI+Pn0gKi8gdmFyIHZhbHVlcyA9IFtdOworICAgICAgICB2YWx1ZXNbMF0gPSBbXQorCisg
ICAgICAgIC8vIFNwZWNpYWwgY2FzZXMuCisgICAgICAgIGlmIChwcmVjaXNpb24gPT09IGdsdVNo
YWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQKSB7CisgICAgICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKG51bVZhbHVlcyA+PSAxMCwgJ1NhbXBsZSB0b28gc21hbGwuJywgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMTA7IG5keCsrKSB7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2ID0gZGVNYXRoLmNsYW1w
KG5keCAtIDUuNSwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdlc1twcmVjaXNpb25dWzFdKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpdGVyID0gMTsgaXRlciA8PSBzY2FsYXJTaXplOyBp
dGVyKyspCisgICAgICAgICAgICAgICAgICAgIHZhbHVlc1swXS5wdXNoKHYpOworICAgICAgICAg
ICAgICAgIG51bVNwZWNpYWxDYXNlcyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgLy8gUmFuZG9tIGNhc2VzLgorICAgICAgICB2YWx1ZXNbMF0gPSB2YWx1ZXNbMF0u
Y29uY2F0KGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmZpbGxSYW5kb21TY2FsYXJzKGVz
M2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlR5cGVzLkZMT0FULCBybmQsIHJhbmdlc1twcmVj
aXNpb25dWzBdLCByYW5nZXNbcHJlY2lzaW9uXVsxXSwgKG51bVZhbHVlcyAtIG51bVNwZWNpYWxD
YXNlcykgKiBzY2FsYXJTaXplKSk7CisKKyAgICAgICAgLy8gSWYgcHJlY2lzaW9uIGlzIG1lZGl1
bXAsIG1ha2Ugc3VyZSB2YWx1ZXMgY2FuIGJlIHJlcHJlc2VudGVkIGluIGZwMTYgZXhhY3RseQor
ICAgICAgICBpZiAocHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJ
T05fTUVESVVNUCkKKyAgICAgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnZl
Y1RvRmxvYXQxNih2YWx1ZXNbMF0pOworCisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Kn0gaW5wdXRzCisgICAgICogQHBhcmFtIHsqfSBv
dXRwdXRzCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5Sb3VuZENhc2UucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlv
bihpbnB1dHMsIG91dHB1dHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJh
c2ljVHlwZSgpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAq
LyB2YXIgcHJlY2lzaW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lz
aW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc1plcm9TaWduID0g
ZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuc3VwcG9ydHNTaWduZWRaZXJvKHByZWNpc2lv
bik7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNo
YWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgaW4wOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG91dDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxwRGlmZjsKKworICAg
ICAgICBpZiAocHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
SElHSFAgfHwgcHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
TUVESVVNUCkgeworICAgICAgICAgICAgLy8gUmVxdWlyZSBleGFjdCByZXN1bHQuCisgICAgICAg
ICAgICBmb3IgKHZhciBjb21wTmR4ID0gMDsgY29tcE5keCA8IHNjYWxhclNpemU7IGNvbXBOZHgr
KykgeworICAgICAgICAgICAgICAgIGluMCA9IGlucHV0c1swXVtjb21wTmR4XTsKKyAgICAgICAg
ICAgICAgICBvdXQwID0gb3V0cHV0c1swXVtjb21wTmR4XTsKKworICAgICAgICAgICAgICAgIGlm
ICgoaW4wIC0gTWF0aC5mbG9vcihpbjApKSA9PT0gMC41KSB7CisgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmMCA9IE1hdGguZmxvb3IoaW4wKTsKKyAgICAg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYxID0gTWF0aC5jZWls
KGluMCk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxw
RGlmZjAgPSBoYXNaZXJvU2lnbiA/IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldFVs
cERpZmYob3V0MCwgcmVmMCkgOiBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBE
aWZmSWdub3JlWmVyb1NpZ24ob3V0MCwgcmVmMCk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdWxwRGlmZjEgPSBoYXNaZXJvU2lnbiA/IGVzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLmdldFVscERpZmYob3V0MCwgcmVmMSkgOiBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24ob3V0MCwgcmVmMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh1bHBEaWZmMCA+IDAgJiYgdWxwRGlmZjEgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBj
b21wTmR4ICsgJ10gPSAnICsgcmVmMCArICcgb3IgJyArIHJlZjEgKyAnLCBnb3QgVUxQIGRpZmYg
JyArIE1hdGgubWluKHVscERpZmYwLCB1bHBEaWZmMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXF1aXJlIGV4YWN0IHJlc3VsdAorICAg
ICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZiA9IGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLnJvdW5kRXZlbihpbjApOworICAgICAgICAgICAgICAgICAg
ICB1bHBEaWZmID0gaGFzWmVyb1NpZ24gPyBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5n
ZXRVbHBEaWZmKG91dDAsIHJlZikgOiBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRV
bHBEaWZmSWdub3JlWmVyb1NpZ24ob3V0MCwgcmVmKTsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAodWxwRGlmZiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mYWlsTXNn
ICs9ICdFeHBlY3RlZCBbJyArIGNvbXBOZHggKyAnXSA9ICcgKyByZWYgKyAnLCBnb3QgVUxQIGRp
ZmYgJyArIHVscERpZmY7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1h
bnRpc3NhQml0cyA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldE1pbk1hbnRpc3Nh
Qml0cyhwcmVjaXNpb24pOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
YXhVbHBEaWZmID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0TWF4VWxwRGlmZkZy
b21CaXRzKG1hbnRpc3NhQml0cyk7IC8vIFVMUCBkaWZmIGZvciByb3VuZGVkIGludGVnZXIgdmFs
dWUuCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVwcyA9IGVzM2ZTaGFk
ZXJDb21tb25GdW5jdGlvblRlc3RzLmdldEVwc0Zyb21CaXRzKDEuMCwgbWFudGlzc2FCaXRzKTsg
Ly8gZXBzaWxvbiBmb3Igcm91bmRpbmcgYm91bmRzCisKKyAgICAgICAgICAgIGZvciAodmFyIGNv
bXBOZHggPSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7CisgICAgICAgICAg
ICAgICAgaW4wID0gaW5wdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIG91dDAgPSBv
dXRwdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbWluUmVzID0gTWF0aC5mbG9vcihlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5y
b3VuZEV2ZW4oaW4wIC0gZXBzKSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhSZXMgPSBNYXRoLmZsb29yKGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LnJvdW5kRXZlbihpbjAgKyBlcHMpKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciBhbnlPayA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgcm91
bmRlZFZhbCA9IG1pblJlczsgcm91bmRlZFZhbCA8PSBtYXhSZXM7IHJvdW5kZWRWYWwrKykgewor
ICAgICAgICAgICAgICAgICAgICB1bHBEaWZmID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuZ2V0VWxwRGlmZklnbm9yZVplcm9TaWduKG91dDAsIHJvdW5kZWRWYWwpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICh1bHBEaWZmIDw9IG1heFVscERpZmYpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFueU9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKCFhbnlPaykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAn
RXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSBbJyArIG1pblJlcyArICcsICcgKyBtYXhSZXMg
KyAnXSB3aXRoIFVMUCB0aHJlc2hvbGQgJyArIG1heFVscERpZmY7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZX0KKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9IGJhc2VUeXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0g
cHJlY2lzaW9uCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNo
YWRlclR5cGUKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5DZWls
Q2FzZSA9IGZ1bmN0aW9uKGJhc2VUeXBlLCBwcmVjaXNpb24sIHNoYWRlclR5cGUpIHsKKyAgICAg
ICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25DYXNlLmNhbGwo
dGhpcywKKyAgICAgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldENvbW1v
bkZ1bmNDYXNlTmFtZShiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFkZXJUeXBlKSwKKyAgICAgICAg
ICAgICdjZWlsJywgc2hhZGVyVHlwZSk7CisgICAgICAgIHRoaXMubV9zcGVjLmlucHV0cy5wdXNo
KG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJh
c2ljKGJhc2VUeXBlLCBwcmVjaXNpb24pKSk7CisgICAgICAgIHRoaXMubV9zcGVjLm91dHB1dHMu
cHVzaChuZXcgZ2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdU
eXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhpcy5tX3NwZWMuc291
cmNlID0gJ291dDAgPSBjZWlsKGluMCk7JzsKKyAgICB9OworCisgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuQ2VpbENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hh
ZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Db21tb25GdW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKyAg
ICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5DZWlsQ2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5DZWlsQ2FzZTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1WYWx1ZXMKKyAgICAgKiBAcmV0dXJuIHsqfQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNlaWxDYXNlLnByb3Rv
dHlwZS5nZXRJbnB1dFZhbHVlcyA9IGZ1bmN0aW9uKG51bVZhbHVlcykgeworICAgICAgICAvKiog
QHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgcmFuZ2VzID0gWworICAgICAgICAg
ICAgWy0yLjAsIDIuMF0sIC8vIGxvd3AKKyAgICAgICAgICAgIFstMWUzLCAxZTNdLCAvLyBtZWRp
dW1wCisgICAgICAgICAgICBbLTFlNywgMWU3XSAvLyBoaWdocAorICAgICAgICBdOworCisgICAg
ICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9t
LlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSBeIDB4YWMyM2YpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHR5cGUgPSB0
aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHByZWNpc2lvbiA9IHRoaXMu
bV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldFByZWNpc2lvbigpOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHNjYWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
U2NhbGFyU2l6ZSh0eXBlKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJl
cj4+fSAqLyB2YXIgdmFsdWVzID0gW107CisKKyAgICAgICAgLy8gUmFuZG9tIGNhc2VzLgorICAg
ICAgICB2YWx1ZXNbMF0gPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5maWxsUmFuZG9t
U2NhbGFycyhlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UeXBlcy5GTE9BVCwgcm5kLCBy
YW5nZXNbcHJlY2lzaW9uXVswXSwgcmFuZ2VzW3ByZWNpc2lvbl1bMV0sIG51bVZhbHVlcyAqIHNj
YWxhclNpemUpOworCisgICAgICAgIC8vIElmIHByZWNpc2lvbiBpcyBtZWRpdW1wLCBtYWtlIHN1
cmUgdmFsdWVzIGNhbiBiZSByZXByZXNlbnRlZCBpbiBmcDE2IGV4YWN0bHkKKyAgICAgICAgaWYg
KHByZWNpc2lvbiA9PT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAp
CisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy52ZWNUb0Zsb2F0MTYo
dmFsdWVzWzBdKTsKKworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0geyp9IGlucHV0cworICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0cworICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0
aW9uVGVzdHMuQ2VpbENhc2UucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihpbnB1dHMsIG91
dHB1dHMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2
YXIgdHlwZSA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpOwor
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlY2lz
aW9uID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0UHJlY2lzaW9uKCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc1plcm9TaWduID0gZXMzZlNoYWRlckNv
bW1vbkZ1bmN0aW9uVGVzdHMuc3VwcG9ydHNTaWduZWRaZXJvKHByZWNpc2lvbik7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVTY2FsYXJTaXplKHR5cGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgaW4wOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dDA7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHVscERpZmY7CisKKyAgICAgICAgaWYgKHByZWNpc2lvbiA9PT0gZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQIHx8IHByZWNpc2lvbiA9PT0gZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVApIHsKKyAgICAgICAgICAgIC8vIFJl
cXVpcmUgZXhhY3QgcmVzdWx0LgorICAgICAgICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNv
bXBOZHggPCBzY2FsYXJTaXplOyBjb21wTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBp
bnB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29t
cE5keF07CisgICAgICAgICAgICAgICAgcmVmID0gTWF0aC5jZWlsKGluMCk7CisgICAgICAgICAg
ICAgICAgdWxwRGlmZiA9IGhhc1plcm9TaWduID8gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuZ2V0VWxwRGlmZihvdXQwLCByZWYpIDogZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
Z2V0VWxwRGlmZklnbm9yZVplcm9TaWduKG91dDAsIHJlZik7CisKKyAgICAgICAgICAgICAgICBp
ZiAodWxwRGlmZiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2ZhaWxNc2cgKz0g
J0V4cGVjdGVkIFsnICsgY29tcE5keCArICddID0gJyArIHJlZiArICcsIGdvdCBVTFAgZGlmZiAn
ICsgdWxwRGlmZjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFudGlzc2FCaXRzID0gZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuZ2V0TWluTWFudGlzc2FCaXRzKHByZWNpc2lvbik7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFVscERpZmYgPSBlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5nZXRNYXhVbHBEaWZmRnJvbUJpdHMobWFudGlzc2FCaXRzKTsgLy8gVUxQIGRp
ZmYgZm9yIHJvdW5kZWQgaW50ZWdlciB2YWx1ZS4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgZXBzID0gZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZ2V0RXBzRnJv
bUJpdHMoMS4wLCBtYW50aXNzYUJpdHMpOyAvLyBlcHNpbG9uIGZvciByb3VuZGluZyBib3VuZHMK
KworICAgICAgICAgICAgZm9yICh2YXIgY29tcE5keCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXpl
OyBjb21wTmR4KyspIHsKKyAgICAgICAgICAgICAgICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07
CisgICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5SZXMgPSBNYXRoLmNlaWwoaW4wIC0g
ZXBzKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFJlcyA9
IE1hdGguY2VpbChpbjAgKyBlcHMpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIGFueU9rID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciByb3Vu
ZGVkVmFsID0gbWluUmVzOyByb3VuZGVkVmFsIDw9IG1heFJlczsgcm91bmRlZFZhbCsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHVscERpZmYgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24ob3V0MCwgcm91bmRlZFZhbCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHVscERpZmYgPD0gbWF4VWxwRGlmZikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYW55T2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoIWFueU9rICYgZGVNYXRoLmRlSW5SYW5nZTMyKDAsIG1pblJlcywgbWF4UmVzKSkgewor
ICAgICAgICAgICAgICAgICAgICB1bHBEaWZmID0gTWF0aC5hYnMoTWF0aC5mbG9vcih0Y3VGbG9h
dC5uZXdGbG9hdDMyKG91dDApLmJpdHMoKSkgLSAweDgwMDAwMDAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgYW55T2sgPSB1bHBEaWZmIDw9IG1heFVscERpZmY7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKCFhbnlPaykgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Lm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSBbJyArIG1pblJlcyAr
ICcsICcgKyBtYXhSZXMgKyAnXSB3aXRoIFVMUCB0aHJlc2hvbGQgJyArIG1heFVscERpZmY7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZTaGFkZXJD
b21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1bmN0aW9uQ2FzZX0KKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9IGJhc2VUeXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJV
dGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFt
LnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVu
Y3Rpb25UZXN0cy5GcmFjdENhc2UgPSBmdW5jdGlvbihiYXNlVHlwZSwgcHJlY2lzaW9uLCBzaGFk
ZXJUeXBlKSB7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkNvbW1vbkZ1
bmN0aW9uQ2FzZS5jYWxsKHRoaXMsCisgICAgICAgICAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rp
b25UZXN0cy5nZXRDb21tb25GdW5jQ2FzZU5hbWUoYmFzZVR5cGUsIHByZWNpc2lvbiwgc2hhZGVy
VHlwZSksCisgICAgICAgICAgICAnZnJhY3QnLCBzaGFkZXJUeXBlKTsKKyAgICAgICAgdGhpcy5t
X3NwZWMuaW5wdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4wJywgZ2x1
VmFyVHlwZS5uZXdUeXBlQmFzaWMoYmFzZVR5cGUsIHByZWNpc2lvbikpKTsKKyAgICAgICAgdGhp
cy5tX3NwZWMub3V0cHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ291dDAn
LCBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyhiYXNlVHlwZSwgcHJlY2lzaW9uKSkpOworICAgICAg
ICB0aGlzLm1fc3BlYy5zb3VyY2UgPSAnb3V0MCA9IGZyYWN0KGluMCk7JzsKKyAgICB9OworCisg
ICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuRnJhY3RDYXNlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuQ29tbW9uRnVuY3Rpb25D
YXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuRnJhY3RD
YXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3Rz
LkZyYWN0Q2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1WYWx1ZXMK
KyAgICAgKiBAcmV0dXJuIHsqfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlv
blRlc3RzLkZyYWN0Q2FzZS5wcm90b3R5cGUuZ2V0SW5wdXRWYWx1ZXMgPSBmdW5jdGlvbihudW1W
YWx1ZXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFy
IHJhbmdlcyA9IFsKKyAgICAgICAgICAgIFstMi4wLCAyLjBdLCAvLyBsb3dwCisgICAgICAgICAg
ICBbLTFlMywgMWUzXSwgLy8gbWVkaXVtcAorICAgICAgICAgICAgWy0xZTcsIDFlN10gLy8gaGln
aHAKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8g
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMu
bmFtZSkgXiAweGFjMjNmKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9ICovIHZhciB0eXBlID0gdGhpcy5tX3NwZWMuaW5wdXRzWzBdLnZhclR5cGUuZ2V0QmFz
aWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICov
IHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRQcmVjaXNp
b24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gZ2x1
U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtU3BlY2lhbENhc2VzID0gMDsKKworICAgICAgICAvKiogQHR5
cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgdmFsdWVzID0gW107CisgICAgICAgIHZh
bHVlc1swXSA9IFtdOworCisgICAgICAgIC8vIFNwZWNpYWwgY2FzZXMuCisgICAgICAgIGlmIChw
cmVjaXNpb24gIT09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQKSB7Cisg
ICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG51bVZhbHVlcyA+PSAxMCwgJ1NhbXBsZSB0b28g
c21hbGwuJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgMTA7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciB2ID0gZGVNYXRoLmNsYW1wKG5keCAtIDUuNSwgcmFuZ2VzW3ByZWNpc2lvbl1bMF0sIHJhbmdl
c1twcmVjaXNpb25dWzFdKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBzY2FsYXJOZHggPSAw
OyBzY2FsYXJOZHggPCBzY2FsYXJTaXplOyBzY2FsYXJOZHgrKykgeworICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXNbMF0ucHVzaCh2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbnVtU3BlY2lhbENhc2VzICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBSYW5kb20gY2FzZXMuCisgICAgICAgIHZhbHVlc1swXSA9IHZhbHVlc1swXS5jb25j
YXQoZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuZmlsbFJhbmRvbVNjYWxhcnMoZXMzZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuVHlwZXMuRkxPQVQsIHJuZCwgcmFuZ2VzW3ByZWNpc2lv
bl1bMF0sIHJhbmdlc1twcmVjaXNpb25dWzFdLCAobnVtVmFsdWVzIC0gbnVtU3BlY2lhbENhc2Vz
KSAqIHNjYWxhclNpemUpKTsKKworICAgICAgICAvLyBJZiBwcmVjaXNpb24gaXMgbWVkaXVtcCwg
bWFrZSBzdXJlIHZhbHVlcyBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gZnAxNiBleGFjdGx5CisgICAg
ICAgIGlmIChwcmVjaXNpb24gPT09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9N
RURJVU1QKQorICAgICAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMudmVjVG9G
bG9hdDE2KHZhbHVlc1swXSkKKworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0geyp9IGlucHV0cworICAgICAqIEBwYXJhbSB7Kn0gb3V0cHV0
cworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuRnJhY3RDYXNlLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24oaW5w
dXRzLCBvdXRwdXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZX0gKi8gdmFyIHR5cGUgPSB0aGlzLm1fc3BlYy5pbnB1dHNbMF0udmFyVHlwZS5nZXRCYXNpY1R5
cGUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFy
IHByZWNpc2lvbiA9IHRoaXMubV9zcGVjLmlucHV0c1swXS52YXJUeXBlLmdldFByZWNpc2lvbigp
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBoYXNaZXJvU2lnbiA9IGVzM2ZT
aGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnN1cHBvcnRzU2lnbmVkWmVybyhwcmVjaXNpb24pOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNjYWxhclNpemUgPSBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0eXBlKTsKKworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGluMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvdXQw
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZjsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB1bHBEaWZmOworCisgICAgICAgIGlmIChwcmVjaXNpb24gPT09
IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCB8fCBwcmVjaXNpb24gPT09
IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QKSB7CisgICAgICAgICAg
ICAvLyBSZXF1aXJlIGV4YWN0IHJlc3VsdC4KKyAgICAgICAgICAgIGZvciAodmFyIGNvbXBOZHgg
PSAwOyBjb21wTmR4IDwgc2NhbGFyU2l6ZTsgY29tcE5keCsrKSB7CisgICAgICAgICAgICAgICAg
aW4wID0gaW5wdXRzWzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIG91dDAgPSBvdXRwdXRz
WzBdW2NvbXBOZHhdOworICAgICAgICAgICAgICAgIHJlZiA9IGluMCAtIE1hdGguZmxvb3IoaW4w
KTsKKyAgICAgICAgICAgICAgICB1bHBEaWZmID0gaGFzWmVyb1NpZ24gPyBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmKG91dDAsIHJlZikgOiBlczNmU2hhZGVyQ29tbW9u
RnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmSWdub3JlWmVyb1NpZ24ob3V0MCwgcmVmKTsKKworICAg
ICAgICAgICAgICAgIGlmICh1bHBEaWZmID4gMCkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Lm1fZmFpbE1zZyArPSAnRXhwZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPSAnICsgcmVmICsgJywg
Z290IFVMUCBkaWZmICcgKyB1bHBEaWZmOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYW50aXNzYUJpdHMgPSBlczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5nZXRNaW5NYW50aXNzYUJpdHMocHJlY2lzaW9uKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXBzID0gZXMzZlNoYWRlckNv
bW1vbkZ1bmN0aW9uVGVzdHMuZ2V0RXBzRnJvbUJpdHMoMS4wLCBtYW50aXNzYUJpdHMpOyAvLyBl
cHNpbG9uIGZvciByb3VuZGluZyBib3VuZHMKKworICAgICAgICAgICAgZm9yICh2YXIgY29tcE5k
eCA9IDA7IGNvbXBOZHggPCBzY2FsYXJTaXplOyBjb21wTmR4KyspIHsKKyAgICAgICAgICAgICAg
ICBpbjAgPSBpbnB1dHNbMF1bY29tcE5keF07CisgICAgICAgICAgICAgICAgb3V0MCA9IG91dHB1
dHNbMF1bY29tcE5keF07CisKKyAgICAgICAgICAgICAgICBpZiAoTWF0aC5mbG9vcihpbjAgLSBl
cHMpID09IE1hdGguZmxvb3IoaW4wICsgZXBzKSkgeworICAgICAgICAgICAgICAgICAgICByZWYg
PSBpbjAgLSBNYXRoLmZsb29yKGluMCk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgYml0c0xvc3QgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5u
dW1CaXRzTG9zdEluT3AoaW4wLCByZWYpOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG1heFVscERpZmYgPSBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5nZXRNYXhVbHBEaWZmRnJvbUJpdHMoTWF0aC5tYXgoMCwgbWFudGlzc2FCaXRzIC0gYml0c0xv
c3QpKTsgLy8gVUxQIGRpZmYgZm9yIHJvdW5kZWQgaW50ZWdlciB2YWx1ZS4KKyAgICAgICAgICAg
ICAgICAgICAgdWxwRGlmZiA9IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmdldFVscERp
ZmZJZ25vcmVaZXJvU2lnbihvdXQwLCByZWYpOworICAgICAgICAgICAgICAgICAgICBpZiAodWxw
RGlmZiA+IG1heFVscERpZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mYWls
TXNnICs9ICdFeHBlY3RlZCBbJyArIGNvbXBOZHggKyAnXSA9ICcgKyByZWYgKyAnIHdpdGggVUxQ
IHRocmVzaG9sZCAnICsgbWF4VWxwRGlmZiArICcsIGdvdCBkaWZmICcgKyB1bHBEaWZmOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG91dDAg
Pj0gMS4wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZmFpbE1zZyArPSAnRXhw
ZWN0ZWQgWycgKyBjb21wTmR4ICsgJ10gPCAxLjAnOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0
Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5TaGFkZXJDb21tb25GdW5jdGlvblRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRl
c3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2NvbW1vbicsICdDb21tb24gZnVuY3Rpb24gdGVz
dHMnKTsKKyAgICB9OworCisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNl
LkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hh
ZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5TaGFkZXJDb21tb25GdW5jdGlvblRlc3RzOworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gcGFyZW50CisgICAgICog
QHBhcmFtIHtlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UZXN0Q2xhc3N9IHRlc3RDbGFz
cworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGZsb2F0VHlwZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGludFR5cGVzCisgICAg
ICogQHBhcmFtIHtib29sZWFufSB1aW50VHlwZXMKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5hZGRGdW5jdGlvbkNhc2VzID0gZnVuY3Rpb24ocGFyZW50LCB0ZXN0
Q2xhc3MsIGZ1bmN0aW9uTmFtZSwgZmxvYXRUeXBlcywgaW50VHlwZXMsIHVpbnRUeXBlcykgewor
ICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZ3JvdXAgPSB0
Y3VUZXN0Q2FzZS5uZXdUZXN0KGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
cGFyZW50LmFkZENoaWxkKGdyb3VwKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsdVNo
YWRlclV0aWwuRGF0YVR5cGU+fSAqLyB2YXIgc2NhbGFyVHlwZXMgPSBbCisgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQKKyAg
ICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBzY2FsYXJUeXBlTmR4ID0gMDsgc2NhbGFyVHlw
ZU5keCA8IHNjYWxhclR5cGVzLmxlbmd0aDsgc2NhbGFyVHlwZU5keCsrKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBzY2FsYXJUeXBlID0g
c2NhbGFyVHlwZXNbc2NhbGFyVHlwZU5keF07CisKKyAgICAgICAgICAgIGlmICgoIWZsb2F0VHlw
ZXMgJiYgc2NhbGFyVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSB8fAorICAg
ICAgICAgICAgICAgICghaW50VHlwZXMgJiYgc2NhbGFyVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLklOVCkgfHwKKyAgICAgICAgICAgICAgICAoIXVpbnRUeXBlcyAmJiBzY2FsYXJUeXBl
ID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGZvciAodmFyIHZlY1NpemUgPSAxOyB2ZWNTaXplIDw9IDQ7IHZl
Y1NpemUrKykKKyAgICAgICAgICAgIGZvciAodmFyIHByZWMgPSBnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbi5QUkVDSVNJT05fTE9XUDsgcHJlYyA8PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVD
SVNJT05fSElHSFA7IHByZWMrKykKKyAgICAgICAgICAgIGZvciAodmFyIHNoYWRlclR5cGUgPSBn
bHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYOyBzaGFkZXJUeXBlIDw9IGdsdVNoYWRl
clByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVDsgc2hhZGVyVHlwZSsrKQorICAgICAgICAgICAg
ICAgIGdyb3VwLmFkZENoaWxkKG5ldyB0ZXN0Q2xhc3MoLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGls
LkRhdGFUeXBlfSAqLyAoc2NhbGFyVHlwZSArIHZlY1NpemUgLSAxKSwgcHJlYywgc2hhZGVyVHlw
ZSkpOworICAgICAgICB9CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIHRlc3RHcm91cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7
CisKKyAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuYWRkRnVuY3Rpb25DYXNl
cyh0ZXN0R3JvdXAsIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkFic0Nhc2UsICdhYnMn
LCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLmFkZEZ1bmN0aW9uQ2FzZXModGVzdEdyb3VwLCBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cy5TaWduQ2FzZSwgJ3NpZ24nLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGVzM2ZT
aGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmFkZEZ1bmN0aW9uQ2FzZXModGVzdEdyb3VwLCBlczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GbG9vckNhc2UsICdmbG9vcicsIHRydWUsIGZhbHNl
LCBmYWxzZSk7CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmFkZEZ1bmN0
aW9uQ2FzZXModGVzdEdyb3VwLCBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5UcnVuY0Nh
c2UsICd0cnVuYycsIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGVzM2ZTaGFkZXJDb21t
b25GdW5jdGlvblRlc3RzLmFkZEZ1bmN0aW9uQ2FzZXModGVzdEdyb3VwLCBlczNmU2hhZGVyQ29t
bW9uRnVuY3Rpb25UZXN0cy5Sb3VuZENhc2UsICdyb3VuZCcsIHRydWUsIGZhbHNlLCBmYWxzZSk7
CisgICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmFkZEZ1bmN0aW9uQ2FzZXMo
dGVzdEdyb3VwLCBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5Sb3VuZEV2ZW5DYXNlLCAn
cm91bmRldmVuJywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZXMzZlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMuYWRkRnVuY3Rpb25DYXNlcyh0ZXN0R3JvdXAsIGVzM2ZTaGFkZXJDb21t
b25GdW5jdGlvblRlc3RzLkNlaWxDYXNlLCAnY2VpbCcsIHRydWUsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmFkZEZ1bmN0aW9uQ2FzZXModGVz
dEdyb3VwLCBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5GcmFjdENhc2UsICdmcmFjdCcs
IHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIC8vIG1vZAorICAgICAgICBlczNmU2hhZGVy
Q29tbW9uRnVuY3Rpb25UZXN0cy5hZGRGdW5jdGlvbkNhc2VzKHRlc3RHcm91cCwgZXMzZlNoYWRl
ckNvbW1vbkZ1bmN0aW9uVGVzdHMuTW9kZkNhc2UsICdtb2RmJywgdHJ1ZSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgLy8gbWluLCBtYXgsIGNsYW1wLCBtaXgsIHN0ZXAsIHNtb290aHN0ZXAKKyAg
ICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuYWRkRnVuY3Rpb25DYXNlcyh0ZXN0
R3JvdXAsIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLklzbmFuQ2FzZSwgJ2lzbmFuJywg
dHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVz
dHMuYWRkRnVuY3Rpb25DYXNlcyh0ZXN0R3JvdXAsIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLklzaW5mQ2FzZSwgJ2lzaW5mJywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZXMz
ZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuYWRkRnVuY3Rpb25DYXNlcyh0ZXN0R3JvdXAsIGVz
M2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvSW50Q2FzZSwgJ2Zsb2F0Yml0
c3RvaW50JywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZXMzZlNoYWRlckNvbW1vbkZ1
bmN0aW9uVGVzdHMuYWRkRnVuY3Rpb25DYXNlcyh0ZXN0R3JvdXAsIGVzM2ZTaGFkZXJDb21tb25G
dW5jdGlvblRlc3RzLkZsb2F0Qml0c1RvVWludENhc2UsICdmbG9hdGJpdHN0b3VpbnQnLCB0cnVl
LCBmYWxzZSwgZmFsc2UpOworCisgICAgICAgIC8vICh1KWludEJpdHNUb0Zsb2F0KCkKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGludEdyb3VwID0gdGN1
VGVzdENhc2UubmV3VGVzdCgnaW50Yml0c3RvZmxvYXQnLCAnaW50Qml0c1RvRmxvYXQoKSBUZXN0
cycpOworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgdWlu
dEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgndWludGJpdHN0b2Zsb2F0JywgJ3VpbnRCaXRz
VG9GbG9hdCgpIFRlc3RzJyk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGludEdyb3Vw
KTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKHVpbnRHcm91cCk7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGU+fSAqLyB2YXIgc2hhZGVy
VHlwZXMgPSBbCisgICAgICAgICAgICBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVY
LAorICAgICAgICAgICAgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UCisgICAg
ICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgdmVjU2l6ZSA9IDE7IHZlY1NpemUgPCA0OyB2ZWNT
aXplKyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0g
Ki8gdmFyIGludFR5cGUgPSB2ZWNTaXplID4gMSA/CisgICAgICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZVZlY3RvcihnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwgdmVjU2l6
ZSkgOgorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOworCisgICAg
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB1aW50VHlw
ZSA9IHZlY1NpemUgPiAxID8KKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmdldERhdGFU
eXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgdmVjU2l6ZSkgOgorICAgICAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVDsKKworICAgICAgICAgICAgZm9y
ICh2YXIgc2hhZGVyVHlwZSBpbiBzaGFkZXJUeXBlcykgeworICAgICAgICAgICAgICAgIGludEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5CaXRzVG9GbG9h
dENhc2UoaW50VHlwZSwgc2hhZGVyVHlwZXNbc2hhZGVyVHlwZV0pKTsKKyAgICAgICAgICAgICAg
ICB1aW50R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLkJp
dHNUb0Zsb2F0Q2FzZSh1aW50VHlwZSwgc2hhZGVyVHlwZXNbc2hhZGVyVHlwZV0pKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIFJ1biB0ZXN0Cisg
ICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAqLworICAg
IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsK
KyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1l
dGVycworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgICAgIHN0
YXRlLnNldFJvb3QobmV3IGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLlNoYWRlckNvbW1v
bkZ1bmN0aW9uVGVzdHMoKSk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRp
b24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRl
LnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICAgICAgZGVzY3JpcHRpb24oc3RhdGUudGVzdENh
c2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL1J1
biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAg
ICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0
aW9ucygnRmFpbGVkIHRvIGVzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLnJ1biB0ZXN0cycs
IGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAg
ICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJE
ZXJpdmF0ZVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjljODU5YzI5NmY0YzhlY2FmOGFkNzU1NTVhYjc3NmUxNGNkMzdiYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuanMKQEAgLTAs
MCArMSwxNjk2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5
IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisg
KiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMg
SVMnIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5w
cm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
b3BlbmdsLmdsdURyYXdVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1
UGl4ZWxUcmFuc2ZlcicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRl
clByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGls
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1SW50ZXJ2YWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VGbG9hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUxv
Z0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1U3RyaW5nVGVtcGxhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVx
dWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZScpOworCitnb29nLnNjb3Bl
KGZ1bmN0aW9uKCkgeworICAgIHZhciBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cyA9IGZ1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlckRlcml2YXRlVGVzdHM7CisgICAgdmFyIGRlTWF0aCA9IGZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKyAgICB2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKyAgICB2YXIgZGVTdHJpbmcgPSBmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZVN0cmluZzsKKyAgICB2YXIgZ2x1RHJhd1V0aWwgPSBmcmFtZXdvcmsub3Bl
bmdsLmdsdURyYXdVdGlsOworICAgIHZhciBnbHVQaXhlbFRyYW5zZmVyID0gZnJhbWV3b3JrLm9w
ZW5nbC5nbHVQaXhlbFRyYW5zZmVyOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciBnbHVUZXh0dXJlID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVUZXh0dXJlOworICAgIHZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7CisgICAgdmFyIHRjdUludGVydmFsID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VJbnRlcnZhbDsKKyAgICB2YXIgdGN1RmxvYXQgPSBmcmFtZXdvcmsuY29tbW9u
LnRjdUZsb2F0OworICAgIHZhciB0Y3VMb2dJbWFnZSA9IGZyYW1ld29yay5jb21tb24udGN1TG9n
SW1hZ2U7CisgICAgdmFyIHRjdU1hdHJpeCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4Owor
ICAgIHZhciB0Y3VQaXhlbEZvcm1hdCA9IGZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQ7
CisgICAgdmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkE7CisgICAgdmFyIHRj
dVN0cmluZ1RlbXBsYXRlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdHJpbmdUZW1wbGF0ZTsKKyAg
ICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZTsKKyAgICB2YXIg
dGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAgICB2YXIgdGN1VGV4
dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsOworICAgIHZhciB0Y3VU
ZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIGdsc1NoYWRl
clJlbmRlckNhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlOworCisgICAg
LyoqIEBjb25zdCB7bnVtYmVyfSAqLyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5WSUVXUE9SVF9X
SURUSCA9IDE2NzsKKyAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIGVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLlZJRVdQT1JUX0hFSUdIVCA9IDEwMzsKKyAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICov
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkZCT19XSURUSCA9IDk5OworICAgIC8qKiBAY29uc3Qg
e251bWJlcn0gKi8gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRkJPX0hFSUdIVCA9IDEzMzsKKyAg
ICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLk1BWF9GQUlM
RURfTUVTU0FHRVMgPSAxMDsKKyAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIGVzM2ZTaGFkZXJE
ZXJpdmF0ZVRlc3RzLklOVEVSUE9MQVRJT05fTE9TVF9CSVRTID0gMzsgLy8gbnVtYmVyIG1hbnRp
c3NhIG9mIGJpdHMgYWxsb3dlZCB0byBiZSBsb3N0IGluIHZhcnlpbmcgaW50ZXJwb2xhdGlvbgor
ICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckRl
cml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jID0geworICAgICAgICBERkRYOiAwLAorICAgICAgICBE
RkRZOiAxLAorICAgICAgICBGV0lEVEg6IDIKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVu
dW0ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNl
VHlwZSA9IHsKKyAgICAgICAgREVGQVVMVF9GUkFNRUJVRkZFUjogMCwKKyAgICAgICAgVU5PUk1f
RkJPOiAxLAorICAgICAgICBGTE9BVF9GQk86IDIgLy8gXG5vdGUgVXNlcyBSR0JBMzJVSSBmYm8g
YWN0dWFsbHksIHNpbmNlIEZQIHJlbmRlcnRhcmdldHMgYXJlIG5vdCBpbiBjb3JlIHNwZWMuCisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuVmVyaWZpY2F0aW9uTG9nZ2luZyA9IHsKKyAgICAgICAgTE9H
X0FMTDogMCwKKyAgICAgICAgTE9HX05PVEhJTkc6IDEKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9IGZ1bmMKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVz
dHMuZ2V0RGVyaXZhdGVGdW5jTmFtZSA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICAgICAgc3dpdGNo
IChmdW5jKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2
YXRlRnVuYy5ERkRYOiByZXR1cm4gJ2RGZHgnOworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmMuREZEWTogcmV0dXJuICdkRmR5JzsKKyAgICAgICAg
ICAgIGNhc2UgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkZXSURUSDogcmV0
dXJuICdmd2lkdGgnOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdEZXJp
dmF0ZSBGdW5jIG5vdCBzdXBwb3J0ZWQuJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9IGZ1
bmMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuZ2V0RGVyaXZhdGVGdW5jQ2FzZU5hbWUgPSBmdW5jdGlvbihmdW5jKSB7CisgICAg
ICAgIHN3aXRjaCAoZnVuYykgeworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cy5EZXJpdmF0ZUZ1bmMuREZEWDogcmV0dXJuICdkZmR4JzsKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkRGRFk6IHJldHVybiAnZGZkeSc7
CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2YXRlRnVuYy5G
V0lEVEg6IHJldHVybiAnZndpZHRoJzsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBF
cnJvcignRGVyaXZhdGUgRnVuYyBub3Qgc3VwcG9ydGVkLicpOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUK
KyAgICAgKiBAcmV0dXJuIHtBcnJheTxib29sZWFuPn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5nZXREZXJpdmF0ZU1hc2sgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAg
IHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUOiByZXR1cm4gW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2VdOworICAgICAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzI6IHJldHVybiBbdHJ1ZSwgdHJ1
ZSwgZmFsc2UsIGZhbHNlXTsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9WRUMzOiByZXR1cm4gW3RydWUsIHRydWUsIHRydWUsIGZhbHNlXTsKKyAgICAgICAg
ICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0OiByZXR1cm4gW3RydWUs
IHRydWUsIHRydWUsIHRydWVdOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9y
KCdEYXRhIFR5cGUgbm90IHN1cHBvcnRlZC4nKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gc3Vy
ZmFjZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGVyaXZTY2FsZQorICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gZGVyaXZCaWFzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59
CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMucmVhZERlcml2YXRlID0gZnVu
Y3Rpb24oc3VyZmFjZSwgZGVyaXZTY2FsZSwgZGVyaXZCaWFzLCB4LCB5KSB7CisgICAgICAgIHJl
dHVybiBkZU1hdGguZGl2aWRlKGRlTWF0aC5zdWJ0cmFjdChzdXJmYWNlLmdldFBpeGVsKHgsIHkp
LCBkZXJpdkJpYXMpLCBkZXJpdlNjYWxlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSB2CisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXRDb21wRXhwQml0cyA9IGZ1bmN0
aW9uKHYpIHsKKyAgICAgICAgcmV0dXJuIFt0Y3VGbG9hdC5uZXdGbG9hdDMyKHZbMF0pLmV4cG9u
ZW50Qml0cygpLAorICAgICAgICAgICAgdGN1RmxvYXQubmV3RmxvYXQzMih2WzFdKS5leHBvbmVu
dEJpdHMoKSwKKyAgICAgICAgICAgIHRjdUZsb2F0Lm5ld0Zsb2F0MzIodlsyXSkuZXhwb25lbnRC
aXRzKCksCisgICAgICAgICAgICB0Y3VGbG9hdC5uZXdGbG9hdDMyKHZbM10pLmV4cG9uZW50Qml0
cygpXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUFjY3VyYXRlQml0cworICAgICAqIEByZXR1cm4ge251
bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5jb21wdXRlRmxvYXRp
bmdQb2ludEVycm9yID0gZnVuY3Rpb24odmFsdWUsIG51bUFjY3VyYXRlQml0cykgeworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUdhcmJhZ2VCaXRzID0gMjMgLSBudW1BY2N1
cmF0ZUJpdHM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFzayA9ICgxIDw8
IG51bUdhcmJhZ2VCaXRzKSAtIDEgOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGV4cCA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIodmFsdWUpLmV4cG9uZW50KCk7CisKKyAgICAgICAg
cmV0dXJuIChuZXcgdGN1RmxvYXQuZGVGbG9hdCgpKS5jb25zdHJ1Y3QoMSwgZXhwLCAoMSA8PCAy
MykgfCBtYXNrKS5nZXRWYWx1ZSgpIC0gKG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkpLmNvbnN0cnVj
dCgxLCBleHAsIDEgPDwgMjMpLmdldFZhbHVlKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAg
ICogQHBhcmFtIHs/Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXRO
dW1NYW50aXNzYUJpdHMgPSBmdW5jdGlvbihwcmVjaXNpb24pIHsKKyAgICAgICAgc3dpdGNoIChw
cmVjaXNpb24pIHsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX0hJR0hQOiByZXR1cm4gMjM7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
cHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOiByZXR1cm4gMTA7CisgICAgICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQOiByZXR1cm4gNjsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmVjaXNp
b24gbm90IHN1cHBvcnRlZDogJyArIHByZWNpc2lvbik7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lv
bgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5nZXRNaW5FeHBvbmVudCA9IGZ1bmN0aW9uKHByZWNpc2lvbikgeworICAgICAgICBz
d2l0Y2ggKHByZWNpc2lvbikgeworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbi5QUkVDSVNJT05fSElHSFA6IHJldHVybiAtMTI2OworICAgICAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUDogcmV0dXJuIC0xNDsKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6IHJldHVy
biAtODsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdQcmVjaXNpb24gbm90IHN1cHBvcnRlZDogJyArIHByZWNpc2lvbik7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGV4cAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBudW1NYW50aXNzYUJpdHMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Cisg
ICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0U2luZ2xlVUxQRm9yRXhwb25l
bnQgPSBmdW5jdGlvbihleHAsIG51bU1hbnRpc3NhQml0cykgeworICAgICAgICBpZiAobnVtTWFu
dGlzc2FCaXRzID4gMCkgeworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhudW1NYW50aXNz
YUJpdHMgPD0gMjMsICdudW1NYW50aXNzYUJpdHMgbXVzdCBiZSBsZXNzIG9yIGVxdWFsIHRoYW4g
MjMuJywgZmFsc2UsIHRydWUpOworCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHVscEJpdE5keCA9IDIzIC0gbnVtTWFudGlzc2FCaXRzOworCisgICAgICAgICAgICByZXR1
cm4gKG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkpLmNvbnN0cnVjdCgxLCBleHAsICgxIDw8IDIzKSB8
ICgxIDw8IHVscEJpdE5keCkpLmdldFZhbHVlKCkgLSAobmV3IHRjdUZsb2F0LmRlRmxvYXQoKSku
Y29uc3RydWN0KDEsIGV4cCwgMSA8PCAyMykuZ2V0VmFsdWUoKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobnVtTWFudGlzc2FCaXRzID09PSAwLCAnbnVt
TWFudGlzc2FCaXRzIG11c3QgZXF1YWwgdG8gMC4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAg
ICByZXR1cm4gKG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkpLmNvbnN0cnVjdCgxLCBleHAsICgxIDw8
IDIzKSkuZ2V0VmFsdWUoKQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1NYW50aXNzYUJp
dHMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuZ2V0U2luZ2xlVUxQRm9yVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSwgbnVtTWFudGlz
c2FCaXRzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhwID0gKG5ldyB0
Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcih2YWx1ZSkpLmV4cG9uZW50KCk7CisgICAg
ICAgIHJldHVybiBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXRTaW5nbGVVTFBGb3JFeHBvbmVu
dChleHAsIG51bU1hbnRpc3NhQml0cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSB2YWx1ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5FeHBvbmVudAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBudW1BY2N1cmF0ZUJpdHMKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuY29udmVydEZsb29yRmx1
c2hUb1plcm8gPSBmdW5jdGlvbih2YWx1ZSwgbWluRXhwb25lbnQsIG51bUFjY3VyYXRlQml0cykg
eworICAgICAgICBpZiAodmFsdWUgPT09IDAuMCkgeworICAgICAgICAgICAgcmV0dXJuIDAuMDsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXQuZGVGbG9h
dH0gKi8gdmFyIGlucHV0RmxvYXQgPSBuZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmRlRmxvYXROdW1i
ZXIodmFsdWUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1UcnVu
Y2F0ZWRCaXRzID0gMjMgLSBudW1BY2N1cmF0ZUJpdHM7CisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHRydW5jTWFzayA9ICgxIDw8IG51bVRydW5jYXRlZEJpdHMpIC0gMTsK
KworICAgICAgICAgICAgaWYgKHZhbHVlID4gMC4wKSB7CisgICAgICAgICAgICAgICAgaWYgKHZh
bHVlID4gMC4wICYmIChuZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmRlRmxvYXROdW1iZXIodmFsdWUp
KS5leHBvbmVudCgpIDwgbWluRXhwb25lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gZmx1
c2ggdG8gemVybyBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4wOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgbWFz
ayBhd2F5IG5vbi1yZXByZXNlbnRhYmxlIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChuZXcgdGN1RmxvYXQuZGVGbG9hdCgpKS5jb25zdHJ1Y3QoMSwgaW5wdXRGbG9hdC5leHBvbmVu
dCgpLCBpbnB1dEZsb2F0Lm1hbnRpc3NhKCkgJiB+dHJ1bmNNYXNrKS5nZXRWYWx1ZSgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYg
KGlucHV0RmxvYXQubWFudGlzc2EoKSAmIHRydW5jTWFzaykgeworICAgICAgICAgICAgICAgICAg
ICAvLyBkZWNyZW1lbnQgb25lIHVscCBpZiB0cnVuY2F0ZWQgYml0cyBhcmUgbm9uLXplcm8gKGku
ZS4gaWYgdmFsdWUgaXMgbm90IHJlcHJlc2VudGFibGUpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAobmV3IHRjdUZsb2F0LmRlRmxvYXQoKSkuY29uc3RydWN0KC0xLCBpbnB1dEZsb2F0LmV4
cG9uZW50KCksIGlucHV0RmxvYXQubWFudGlzc2EoKSAmIH50cnVuY01hc2spLmdldFZhbHVlKCkg
LSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXRTaW5nbGVVTFBGb3JFeHBvbmVudChpbnB1dEZs
b2F0LmV4cG9uZW50KCksIG51bUFjY3VyYXRlQml0cyk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgaXMgcmVwcmVzZW50YWJsZSwgbm8gbmVl
ZCB0byBkbyBhbnl0aGluZworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBt
aW5FeHBvbmVudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1BY2N1cmF0ZUJpdHMKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Y29udmVydENlaWxGbHVzaFRvWmVybyA9IGZ1bmN0aW9uKHZhbHVlLCBtaW5FeHBvbmVudCwgbnVt
QWNjdXJhdGVCaXRzKSB7CisgICAgICAgIHJldHVybiAtZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Y29udmVydEZsb29yRmx1c2hUb1plcm8oLXZhbHVlLCBtaW5FeHBvbmVudCwgbnVtQWNjdXJhdGVC
aXRzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bVVscHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVt
TWFudGlzc2FCaXRzCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLmFkZEVycm9yVWxwID0gZnVuY3Rpb24odmFsdWUsIG51bVVscHMs
IG51bU1hbnRpc3NhQml0cykgeworICAgICAgICByZXR1cm4gdmFsdWUgKyBudW1VbHBzICogZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0U2luZ2xlVUxQRm9yVmFsdWUodmFsdWUsIG51bU1hbnRp
c3NhQml0cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P2dsdVNoYWRlclV0
aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZh
bHVlTWluCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2YWx1ZU1heAorICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gZXhwZWN0ZWREZXJpdmF0ZQorICAgICAqIEByZXR1cm4ge0Fy
cmF5PG51bWJlcj59CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0RGVy
aXZhdGVUaHJlc2hvbGQgPSBmdW5jdGlvbihwcmVjaXNpb24sIHZhbHVlTWluLCB2YWx1ZU1heCwg
ZXhwZWN0ZWREZXJpdmF0ZSkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJh
c2VCaXRzID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0TnVtTWFudGlzc2FCaXRzKHByZWNp
c2lvbik7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGRlcml2RXhw
ID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0Q29tcEV4cEJpdHMoZXhwZWN0ZWREZXJpdmF0
ZSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIG1heFZhbHVlRXhw
ID0gZGVNYXRoLm1heChlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXRDb21wRXhwQml0cyh2YWx1
ZU1pbiksIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmdldENvbXBFeHBCaXRzKHZhbHVlTWF4KSk7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIG51bUJpdHNMb3N0ID0g
ZGVNYXRoLnN1YnRyYWN0KG1heFZhbHVlRXhwLCBkZU1hdGgubWluKG1heFZhbHVlRXhwLCBkZXJp
dkV4cCkpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZh
ciBudW1BY2N1cmF0ZUJpdHMgPSBkZU1hdGgubWF4KAorICAgICAgICAgICAgZGVNYXRoLmFkZFNj
YWxhcigKKyAgICAgICAgICAgICAgICBkZU1hdGguc3VidHJhY3QoCisgICAgICAgICAgICAgICAg
ICAgIFtiYXNlQml0cywgYmFzZUJpdHMsIGJhc2VCaXRzLCBiYXNlQml0c10sCisgICAgICAgICAg
ICAgICAgICAgIG51bUJpdHNMb3N0KSwKKyAgICAgICAgICAgICAgICAtZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuSU5URVJQT0xBVElPTl9MT1NUX0JJVFMpLAorICAgICAgICAgICAgWzAsIDAsIDAs
IDBdKTsKKworICAgICAgICByZXR1cm4gW2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNvbXB1dGVG
bG9hdGluZ1BvaW50RXJyb3IoZXhwZWN0ZWREZXJpdmF0ZVswXSwgbnVtQWNjdXJhdGVCaXRzWzBd
KSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5jb21wdXRlRmxvYXRp
bmdQb2ludEVycm9yKGV4cGVjdGVkRGVyaXZhdGVbMV0sIG51bUFjY3VyYXRlQml0c1sxXSksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuY29tcHV0ZUZsb2F0aW5nUG9p
bnRFcnJvcihleHBlY3RlZERlcml2YXRlWzJdLCBudW1BY2N1cmF0ZUJpdHNbMl0pLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNvbXB1dGVGbG9hdGluZ1BvaW50RXJy
b3IoZXhwZWN0ZWREZXJpdmF0ZVszXSwgbnVtQWNjdXJhdGVCaXRzWzNdKV07CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNz
fSByZXN1bHQKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVy
cm9yTWFzaworICAgICAqIEBwYXJhbSB7P2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBl
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHRocmVzaG9sZAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
c2NhbGUKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpYXMKKyAgICAgKiBAcGFyYW0g
e2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlZlcmlmaWNhdGlvbkxvZ2dpbmc9fSBsb2dQb2xpY3kK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLnZlcmlmeUNvbnN0YW50RGVyaXZhdGUgPSBmdW5jdGlvbihyZXN1bHQsIGVycm9yTWFz
aywgZGF0YVR5cGUsIHJlZmVyZW5jZSwgdGhyZXNob2xkLCBzY2FsZSwgYmlhcywgbG9nUG9saWN5
KSB7CisgICAgICAgIGxvZ1BvbGljeSA9IGxvZ1BvbGljeSA9PT0gdW5kZWZpbmVkID8gZXMzZlNo
YWRlckRlcml2YXRlVGVzdHMuVmVyaWZpY2F0aW9uTG9nZ2luZy5MT0dfQUxMIDogbG9nUG9saWN5
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PGJvb2xlYW4+fSAqLyB2YXIgbWFzayA9IGRlTWF0
aC5sb2dpY2FsTm90Qm9vbChlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXREZXJpdmF0ZU1hc2so
ZGF0YVR5cGUpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1GYWlsZWRQ
aXhlbHMgPSAwOworCisgICAgICAgIGlmIChsb2dQb2xpY3kgPT09IGVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLlZlcmlmaWNhdGlvbkxvZ2dpbmcuTE9HX0FMTCkKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdFeHBlY3RpbmcgJyArIHJlZmVyZW5jZSArICcgd2l0aCB0aHJlc2hvbGQg
JyArIHRocmVzaG9sZCk7CisKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCByZXN1bHQuZ2V0
SGVpZ2h0KCk7IHkrKykgeworICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByZXN1bHQu
Z2V0V2lkdGgoKTsgeCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgcmVzRGVyaXZhdGUgPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5yZWFkRGVy
aXZhdGUocmVzdWx0LCBzY2FsZSwgYmlhcywgeCwgeSk7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLworICAgICAgICAgICAgICAgIHZhciBpc09rID0gZGVNYXRoLmJvb2xB
bGwoCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5sb2dpY2FsT3JCb29sKAorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVNYXRoLmxlc3NUaGFuRXF1YWwoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVNYXRoLmFicyhkZU1hdGguc3VidHJhY3QocmVmZXJlbmNlLCByZXNEZXJpdmF0
ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXNrKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzT2spIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG51bUZhaWxlZFBpeGVscyA8IGVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLk1BWF9GQUlMRURfTUVTU0FHRVMgJiYgbG9nUG9saWN5ID09PSBlczNmU2hhZGVyRGVy
aXZhdGVUZXN0cy5WZXJpZmljYXRpb25Mb2dnaW5nLkxPR19BTEwpCisgICAgICAgICAgICAgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRkFJTDogZ290ICcgKyByZXNEZXJpdmF0ZSAr
ICcsIGRpZmYgPSAnICsgZGVNYXRoLmFicyhkZU1hdGguc3VidHJhY3QocmVmZXJlbmNlLCByZXNE
ZXJpdmF0ZSkpICsgJywgYXQgeCA9ICcgKyB4ICsgJywgeSA9ICcgKyB5KTsKKyAgICAgICAgICAg
ICAgICAgICAgbnVtRmFpbGVkUGl4ZWxzICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGVycm9y
TWFzay5zZXRQaXhlbCh0Y3VSR0JBLlJHQkEucmVkLnRvVmVjKCksIHgsIHkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChudW1GYWls
ZWRQaXhlbHMgPj0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuTUFYX0ZBSUxFRF9NRVNTQUdFUyAm
JiBsb2dQb2xpY3kgPT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlZlcmlmaWNhdGlvbkxvZ2dp
bmcuTE9HX0FMTCkKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcuLi4nKTsKKwor
ICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID4gMCAmJiBsb2dQb2xpY3kgPT09IGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLlZlcmlmaWNhdGlvbkxvZ2dpbmcuTE9HX0FMTCkKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGQUlMOiBmb3VuZCAnICsgbnVtRmFpbGVkUGl4ZWxzICsg
JyBmYWlsZWQgcGl4ZWxzJyk7CisKKyAgICAgICAgcmV0dXJuIG51bUZhaWxlZFBpeGVscyA9PT0g
MDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogICAgICAuLS0tLS0uCisgICAgICogICAgICB8
IHNfeCB8CisgICAgICogIE0geCB8IHNfeSB8CisgICAgICogICAgICB8IDEuMCB8CisgICAgICog
ICAgICAnLS0tLS0nCisgICAgICogQHN0cnVjdAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
LworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkxpbmVhcjJERnVuY3Rpb25FdmFsdWF0b3Ig
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB0
aGlzLm1hdHJpeCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KDQsIDMpOworICAgIH07CisKKyAgICBl
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy5MaW5lYXIyREZ1bmN0aW9uRXZhbHVhdG9yLnByb3RvdHlw
ZS5ldmFsdWF0ZUF0ID0gZnVuY3Rpb24oc2NyZWVuWCwgc2NyZWVuWSkgeworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwb3NpdGlvbiA9IFtzY3JlZW5YLCBzY3JlZW5Z
LCAxLjBdOworICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm11bHRpcGx5TWF0VmVjKHRoaXMubWF0
cml4LCBwb3NpdGlvbik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQKKyAgICAgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9yTWFzaworICAgICAqIEBwYXJhbSB7P2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlCisgICAgICogQHBhcmFtIHs/Z2x1U2hhZGVyVXRp
bC5wcmVjaXNpb259IHByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGVy
aXZTY2FsZQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZGVyaXZCaWFzCisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBzdXJmYWNlVGhyZXNob2xkCisgICAgICogQHBhcmFtIHtl
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9IGRlcml2YXRlRnVuYworICAgICAq
IEBwYXJhbSB7ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuTGluZWFyMkRGdW5jdGlvbkV2YWx1YXRv
cn0gZnVuYworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRl
ckRlcml2YXRlVGVzdHMucmV2ZXJpZnlDb25zdGFudERlcml2YXRlV2l0aEZsdXNoUmVsYXhhdGlv
bnMgPSBmdW5jdGlvbihyZXN1bHQsIGVycm9yTWFzaywgZGF0YVR5cGUsIHByZWNpc2lvbiwgZGVy
aXZTY2FsZSwgZGVyaXZCaWFzLCBzdXJmYWNlVGhyZXNob2xkLCBkZXJpdmF0ZUZ1bmMsIGZ1bmMp
IHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhyZXN1bHQuZ2V0V2lkdGgoKSA9PT0gZXJyb3JN
YXNrLmdldFdpZHRoKCksICdEaW1lbnNpb25zIG9mIHJlc3VsdCBhbmQgZXJyb3JNYXNrIGluY29u
c2lzdGVudC4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocmVzdWx0
LmdldEhlaWdodCgpID09PSBlcnJvck1hc2suZ2V0SGVpZ2h0KCksICdEaW1lbnNpb25zIG9mIHJl
c3VsdCBhbmQgZXJyb3JNYXNrIGluY29uc2lzdGVudC4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoZGVyaXZhdGVGdW5jID09PSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0
cy5EZXJpdmF0ZUZ1bmMuREZEWCB8fCBkZXJpdmF0ZUZ1bmMgPT09IGVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLkRlcml2YXRlRnVuYy5ERkRZLCAnRGVyaXZhdGUgRnVuY3Rpb24gc2hvdWxkIGJlIERG
RFggb3IgREZEWS4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgcmVkID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRpdmlzaW9uRXJyb3JVbHBzID0gMi41OworCisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQ29tcG9uZW50cyA9IGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBlQXNEYXRhVHlwZShkYXRhVHlwZSk7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQml0cyA9IGVzM2ZTaGFkZXJEZXJpdmF0ZVRl
c3RzLmdldE51bU1hbnRpc3NhQml0cyhwcmVjaXNpb24pOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG1pbkV4cG9uZW50ID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0TWlu
RXhwb25lbnQocHJlY2lzaW9uKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG51bVZhcnlpbmdTYW1wbGVCaXRzID0gbnVtQml0cyAtIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3Rz
LklOVEVSUE9MQVRJT05fTE9TVF9CSVRTOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG51bUZhaWxlZFBpeGVscyA9IDA7CisKKyAgICAgICAgZXJyb3JNYXNrLmNsZWFyKGdyZWVu
KTsKKworICAgICAgICAvLyBzZWFyY2ggZm9yIGZhaWxlZCBwaXhlbHMKKyAgICAgICAgZm9yICh2
YXIgeSA9IDA7IHkgPCByZXN1bHQuZ2V0SGVpZ2h0KCk7ICsreSkKKyAgICAgICAgZm9yICh2YXIg
eCA9IDA7IHggPCByZXN1bHQuZ2V0V2lkdGgoKTsgKyt4KSB7CisgICAgICAgICAgICAvLyAgICAg
ICAgICAgICAgICAgZmx1c2hUb1plcm8/KGYyej8oZnVuY3Rpb25WYWx1ZUN1cnJlbnQpIC0gZjJ6
PyhmdW5jdGlvblZhbHVlQmVmb3JlKSkKKyAgICAgICAgICAgIC8vIGZsdXNoVG9aZXJvPyAoIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSArLSAyLjUgVUxQICkKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeAorCisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciByZXN1bHREZXJpdmF0aXZlID0gZXMzZlNoYWRl
ckRlcml2YXRlVGVzdHMucmVhZERlcml2YXRlKHJlc3VsdCwgZGVyaXZTY2FsZSwgZGVyaXZCaWFz
LCB4LCB5KTsKKworICAgICAgICAgICAgLy8gc2FtcGxlIGF0IHRoZSBmcm9udCBvZiB0aGUgYmFj
ayBwaXhlbCBhbmQgdGhlIGJhY2sgb2YgdGhlIGZyb250IHBpeGVsIHRvIGNvdmVyIHRoZSB3aG9s
ZSBhcmVhIG9mCisgICAgICAgICAgICAvLyBsZWdhbCBzYW1wbGUgcG9zaXRpb25zLiBJbiBnZW5l
cmFsIGNhc2UgdGhpcyBpcyBOT1QgT0ssIGJ1dCB3ZSBrbm93IHRoYXQgdGhlIHRhcmdldCBmdW50
aW9uIGlzCisgICAgICAgICAgICAvLyAobW9zdGx5KikgbGluZWFyIHdoaWNoIGFsbG93cyB1cyB0
byB0YWtlIHRoZSBzYW1wbGUgcG9pbnRzIGF0IGFyYml0cmFyeSBwb2ludHMuIFRoaXMgZ2V0cyB1
cyB0aGUKKyAgICAgICAgICAgIC8vIG1heGltdW0gZGlmZmVyZW5jZSBwb3NzaWJsZSBpbiBleHBv
bmVudHMgd2hpY2ggYXJlIHVzZWQgaW4gZXJyb3IgYm91bmQgY2FsY3VsYXRpb25zLgorICAgICAg
ICAgICAgLy8gKiBub24tbGluZWFyaXR5IG1heSBoYXBwZW4gYXJvdW5kIHplcm8gb3Igd2l0aCB2
ZXJ5IGhpZ2ggZnVuY3Rpb24gdmFsdWVzIGR1ZSB0byBzdWJub3JtcyBub3QKKyAgICAgICAgICAg
IC8vICAgYmVoYXZpbmcgd2VsbC4KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIGZ1bmN0aW9uVmFsdWVGb3J3YXJkID0gKGRlcml2YXRlRnVuYyA9PT0gZXMzZlNo
YWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkRGRFgpID8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmMuZXZhbHVhdGVBdCh4
ICsgMi4wLCB5ICsgMC41KSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZnVuYy5ldmFsdWF0ZUF0KHggKyAwLjUsIHkgKyAyLjApKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGZ1bmN0aW9uVmFs
dWVCYWNrd2FyZCA9IChkZXJpdmF0ZUZ1bmMgPT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRl
cml2YXRlRnVuYy5ERkRYKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChmdW5jLmV2YWx1YXRlQXQoeCAtIDEuMCwgeSArIDAuNSkpIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGZ1bmMuZXZhbHVhdGVBdCh4ICsgMC41LCB5IC0gMS4wKSk7CisKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGFueUNvbXBvbmVudEZhaWxlZCA9IGZhbHNlOworCisgICAg
ICAgICAgICAvLyBjaGVjayBjb21wb25lbnRzIHNlcGFyYXRlbHkKKyAgICAgICAgICAgIGZvciAo
dmFyIGMgPSAwOyBjIDwgbnVtQ29tcG9uZW50czsgKytjKSB7CisgICAgICAgICAgICAgICAgLy8g
aW50ZXJwb2xhdGlvbiB2YWx1ZSByYW5nZQorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1
SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIHZhciBmb3J3YXJkQ29tcG9uZW50ID0gdGN1SW50ZXJ2YWwu
d2l0aEludGVydmFscygKKyAgICAgICAgICAgICAgICAgICAgbmV3IHRjdUludGVydmFsLkludGVy
dmFsKGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNvbnZlcnRGbG9vckZsdXNoVG9aZXJvKAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuYWRkRXJyb3JVbHAo
ZnVuY3Rpb25WYWx1ZUZvcndhcmRbY10sIC0wLjUsIG51bVZhcnlpbmdTYW1wbGVCaXRzKSwgbWlu
RXhwb25lbnQsIG51bUJpdHMpKSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IHRjdUludGVydmFs
LkludGVydmFsKGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNvbnZlcnRDZWlsRmx1c2hUb1plcm8o
CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5hZGRFcnJv
clVscChmdW5jdGlvblZhbHVlRm9yd2FyZFtjXSwgKzAuNSwgbnVtVmFyeWluZ1NhbXBsZUJpdHMp
LCBtaW5FeHBvbmVudCwgbnVtQml0cykpCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIHZhciBiYWNrd2FyZENv
bXBvbmVudCA9IHRjdUludGVydmFsLndpdGhJbnRlcnZhbHMoCisgICAgICAgICAgICAgICAgICAg
IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5jb252ZXJ0
Rmxvb3JGbHVzaFRvWmVybygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLmFkZEVycm9yVWxwKGZ1bmN0aW9uVmFsdWVCYWNrd2FyZFtjXSwgLTAuNSwgbnVt
VmFyeWluZ1NhbXBsZUJpdHMpLCBtaW5FeHBvbmVudCwgbnVtQml0cykpLAorICAgICAgICAgICAg
ICAgICAgICBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Y29udmVydENlaWxGbHVzaFRvWmVybygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLmFkZEVycm9yVWxwKGZ1bmN0aW9uVmFsdWVCYWNrd2FyZFtjXSwgKzAu
NSwgbnVtVmFyeWluZ1NhbXBsZUJpdHMpLCBtaW5FeHBvbmVudCwgbnVtQml0cykpCisgICAgICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAg
ICAgICAgICAgICAgIHZhciBtYXhWYWx1ZUV4cCA9IE1hdGgubWF4KAorICAgICAgICAgICAgICAg
ICAgICAgICAgKG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcihmb3J3YXJkQ29t
cG9uZW50LmxvKCkpKS5leHBvbmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldyB0
Y3VGbG9hdC5kZUZsb2F0KCkuZGVGbG9hdE51bWJlcihmb3J3YXJkQ29tcG9uZW50LmhpKCkpKS5l
eHBvbmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldyB0Y3VGbG9hdC5kZUZsb2F0
KCkuZGVGbG9hdE51bWJlcihiYWNrd2FyZENvbXBvbmVudC5sbygpKSkuZXhwb25lbnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIChuZXcgdGN1RmxvYXQuZGVGbG9hdCgpLmRlRmxvYXROdW1i
ZXIoYmFja3dhcmRDb21wb25lbnQuaGkoKSkpLmV4cG9uZW50KCkpOworCisgICAgICAgICAgICAg
ICAgLy8gc3VidHJhY3Rpb24gaW4gbm9taW5hdG9yIHdpbGwgbGlrZWx5IGNhdXNlIGEgY2FuY2Vs
bGF0aW9uIG9mIHRoZSBtb3N0CisgICAgICAgICAgICAgICAgLy8gc2lnbmlmaWNhbnQgYml0cy4g
QXBwbHkgZXJyb3IgYm91bmRzLgorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2
YWwuSW50ZXJ2YWx9ICovIHZhciBub21pbmF0b3IgPSB0Y3VJbnRlcnZhbC5JbnRlcnZhbC5vcGVy
YXRvclN1Yihmb3J3YXJkQ29tcG9uZW50LCBiYWNrd2FyZENvbXBvbmVudCk7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBub21pbmF0b3JMb0V4cCA9IChuZXcgdGN1
RmxvYXQuZGVGbG9hdCgpLmRlRmxvYXROdW1iZXIobm9taW5hdG9yLmxvKCkpKS5leHBvbmVudCgp
OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbm9taW5hdG9ySGlF
eHAgPSAobmV3IHRjdUZsb2F0LmRlRmxvYXQoKS5kZUZsb2F0TnVtYmVyKG5vbWluYXRvci5oaSgp
KSkuZXhwb25lbnQoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG5vbWluYXRvckxvQml0c0xvc3QgPSBtYXhWYWx1ZUV4cCAtIG5vbWluYXRvckxvRXhwOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbm9taW5hdG9ySGlCaXRzTG9z
dCA9IG1heFZhbHVlRXhwIC0gbm9taW5hdG9ySGlFeHA7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBub21pbmF0b3JMb0JpdHMgPSBNYXRoLm1heCgwLCBudW1CaXRz
IC0gbm9taW5hdG9yTG9CaXRzTG9zdCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBub21pbmF0b3JIaUJpdHMgPSBNYXRoLm1heCgwLCBudW1CaXRzIC0gbm9taW5h
dG9ySGlCaXRzTG9zdCk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFs
LkludGVydmFsfSAqLyB2YXIgbm9taW5hdG9yUmFuZ2UgPSB0Y3VJbnRlcnZhbC53aXRoSW50ZXJ2
YWxzKAorICAgICAgICAgICAgICAgICAgICBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZXMzZlNo
YWRlckRlcml2YXRlVGVzdHMuY29udmVydEZsb29yRmx1c2hUb1plcm8obm9taW5hdG9yLmxvKCks
IG1pbkV4cG9uZW50LCBub21pbmF0b3JMb0JpdHMpKSwKKyAgICAgICAgICAgICAgICAgICAgbmV3
IHRjdUludGVydmFsLkludGVydmFsKGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNvbnZlcnRDZWls
Rmx1c2hUb1plcm8obm9taW5hdG9yLmhpKCksIG1pbkV4cG9uZW50LCBub21pbmF0b3JIaUJpdHMp
KSk7CisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdUlu
dGVydmFsLkludGVydmFsfSAqLyB2YXIgZGl2aXNpb25SYW5nZSA9IHRjdUludGVydmFsLkludGVy
dmFsLm9wZXJhdG9yRGl2KG5vbWluYXRvclJhbmdlLCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwo
My4wKSk7IC8vIGxlZ2FsIHNhbXBsZSBhcmVhIGlzIGFueXdoZXJlIHdpdGhpbiB0aGlzIGFuZCBu
ZWlnaGJvcmluZyBwaXhlbHMgKGkuZS4gc2l6ZSA9IDMpCisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gdmFyIGRpdmlzaW9uUmVzdWx0UmFuZ2UgPSB0
Y3VJbnRlcnZhbC53aXRoSW50ZXJ2YWxzKAorICAgICAgICAgICAgICAgICAgICBuZXcgdGN1SW50
ZXJ2YWwuSW50ZXJ2YWwoZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuY29udmVydEZsb29yRmx1c2hU
b1plcm8oZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuYWRkRXJyb3JVbHAoZGl2aXNpb25SYW5nZS5s
bygpLCAtZGl2aXNpb25FcnJvclVscHMsIG51bUJpdHMpLCBtaW5FeHBvbmVudCwgbnVtQml0cykp
LAorICAgICAgICAgICAgICAgICAgICBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZXMzZlNoYWRl
ckRlcml2YXRlVGVzdHMuY29udmVydENlaWxGbHVzaFRvWmVybyhlczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cy5hZGRFcnJvclVscChkaXZpc2lvblJhbmdlLmhpKCksIGRpdmlzaW9uRXJyb3JVbHBzLCBu
dW1CaXRzKSwgbWluRXhwb25lbnQsIG51bUJpdHMpKSk7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gdmFyIGZpbmFsUmVzdWx0UmFuZ2UgPSB0Y3VJ
bnRlcnZhbC53aXRoSW50ZXJ2YWxzKAorICAgICAgICAgICAgICAgICAgICBuZXcgdGN1SW50ZXJ2
YWwuSW50ZXJ2YWwoZGl2aXNpb25SZXN1bHRSYW5nZS5sbygpIC0gc3VyZmFjZVRocmVzaG9sZFtj
XSksCisgICAgICAgICAgICAgICAgICAgIG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChkaXZpc2lv
blJlc3VsdFJhbmdlLmhpKCkgKyBzdXJmYWNlVGhyZXNob2xkW2NdKSk7CisKKyAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0RGVyaXZhdGl2ZVtjXSA+PSBmaW5hbFJlc3VsdFJhbmdlLmxvKCkgJiYg
cmVzdWx0RGVyaXZhdGl2ZVtjXSA8PSBmaW5hbFJlc3VsdFJhbmdlLmhpKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gdmFsdWUgb2sKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzIDwgZXMzZlNoYWRlckRlcml2YXRlVGVz
dHMuTUFYX0ZBSUxFRF9NRVNTQUdFUykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdFcnJvciBpbiBwaXhlbCBhdCAnICsgeCArICcsICcgKyB5ICsgJyB3aXRo
IGNvbXBvbmVudCAnICsgYyArICcgKGNoYW5uZWwgJyArICgncmdiYSdbY10pICsgJylcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdEdvdCBwaXhlbCB2YWx1ZSAnICsgcmVzdWx0
LmdldFBpeGVsSW50KHgsIHkpICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1x0XHRkRmQnICsgKChkZXJpdmF0ZUZ1bmMgPT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRl
cml2YXRlRnVuYy5ERkRYKSA/ICd4JyA6ICd5JykgKyAnIH49ICcgKyByZXN1bHREZXJpdmF0aXZl
W2NdICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x0XHRkaWZmZXJlbmNl
IHRvIGEgdmFsaWQgcmFuZ2U6ICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVz
dWx0RGVyaXZhdGl2ZVtjXSA8IGZpbmFsUmVzdWx0UmFuZ2UubG8oKSkgPyAnLScgOiAnKycpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc3VsdERlcml2YXRpdmVbY10gPCBmaW5h
bFJlc3VsdFJhbmdlLmxvKCkpID8gKGZpbmFsUmVzdWx0UmFuZ2UubG8oKSAtIHJlc3VsdERlcml2
YXRpdmVbY10pIDogKHJlc3VsdERlcml2YXRpdmVbY10gLSBmaW5hbFJlc3VsdFJhbmdlLmhpKCkp
KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJyArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1x0RGVyaXZhdGl2ZSB2YWx1ZSByYW5nZTpcbicgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdcdFx0TWluOiAnICsgZmluYWxSZXN1bHRSYW5nZS5sbygpICsgJ1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x0XHRNYXg6ICcgKyBmaW5hbFJlc3Vs
dFJhbmdlLmhpKCkgKyAnXG4nKTsKKworICAgICAgICAgICAgICAgICAgICArK251bUZhaWxlZFBp
eGVsczsKKyAgICAgICAgICAgICAgICAgICAgYW55Q29tcG9uZW50RmFpbGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhbnlDb21w
b25lbnRGYWlsZWQpCisgICAgICAgICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVsKHJlZCwgeCwg
eSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID49IGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLk1BWF9GQUlMRURfTUVTU0FHRVMpCisgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnLi4uJyk7CisKKyAgICAgICAgaWYgKG51bUZhaWxlZFBpeGVscyA+IDAp
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRkFJTDogZm91bmQgJyArIG51bUZh
aWxlZFBpeGVscyArICcgZmFpbGVkIHBpeGVscycpOworCisgICAgICAgIHJldHVybiBudW1GYWls
ZWRQaXhlbHMgPT09IDA7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqLwor
ICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIC8qKiBAdHlwZSB7P2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9ICovIHRoaXMubV9kYXRhVHlwZSA9IG51bGw7CisgICAgICAgIC8qKiBA
dHlwZSB7P2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB0aGlzLm1fcHJlY2lzaW9uID0gbnVs
bDsKKworICAgICAgICAvKiogQHR5cGUgez9nbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB0aGlz
Lm1fY29vcmREYXRhVHlwZSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7P2dsdVNoYWRlclV0
aWwucHJlY2lzaW9ufSAqLyB0aGlzLm1fY29vcmRQcmVjaXNpb24gPSBudWxsOworCisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fZnJhZ21lbnRTcmM7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fY29vcmRNaW4gPSBbXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fY29vcmRNYXggPSBbXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fZGVyaXZTY2FsZSA9IFtdOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9kZXJpdkJpYXMgPSBb
XTsKKworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VU
eXBlfSAqLyB0aGlzLm1fc3VyZmFjZVR5cGUgPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJm
YWNlVHlwZS5ERUZBVUxUX0ZSQU1FQlVGRkVSOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX251bVNhbXBsZXMgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5tX2hpbnQgPSBnbC5ET05UX0NBUkU7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0
aGlzLm1fc3VyZmFjZVR5cGUgIT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBl
LkRFRkFVTFRfRlJBTUVCVUZGRVIgfHwgdGhpcy5tX251bVNhbXBsZXMgPT09IDAsICdEaWQgbm90
IGV4cGVjdCBzdXJmYWNlVHlwZSA9IERFRkFVTFRfRlJBTUVCVUZGRVIgb3IgbnVtU2FtcGxlcyA9
IDAnLCBmYWxzZSwgdHJ1ZSk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3Rz
LlRyaWFuZ2xlRGVyaXZhdGVDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENh
c2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5Ucmlh
bmdsZURlcml2YXRlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5UcmlhbmdsZURlcml2YXRlQ2FzZTsKKworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRl
c3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHt9
OworCisgICAgLyoqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtICovCisgICAgZXMzZlNo
YWRlckRlcml2YXRlVGVzdHMuVHJpYW5nbGVEZXJpdmF0ZUNhc2UucHJvdG90eXBlLnNldHVwUmVu
ZGVyU3RhdGUgPSBmdW5jdGlvbihwcm9ncmFtKSB7fTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7P2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGNvb3JkVHlwZQorICAgICAqIEBwYXJhbSB7P2ds
dVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9
CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2VuVmVydGV4U291cmNlID0g
ZnVuY3Rpb24oY29vcmRUeXBlLCBwcmVjaXNpb24pIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKGNvb3JkVHlwZSksICdDb29yZCBU
eXBlIG5vdCBzdXBwb3J0ZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciB2ZXJ0ZXhUbXBsID0gJycgKworICAgICAgICAgICAgJyN2ZXJzaW9uIDMw
MCBlc1xuJyArCisgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisg
ICAgICAgICAgICAnaW4gJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IGFfY29vcmQ7XG4nICsKKyAg
ICAgICAgICAgICdvdXQgJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHZfY29vcmQ7XG4nICsKKyAg
ICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAg
ICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAn
IHZfY29vcmQgPSBhX2Nvb3JkO1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKworICAgICAgICAv
KiogQHR5cGUge09iamVjdH0gKi8gdmFyIHZlcnRleFBhcmFtcyA9IHt9OworCisgICAgICAgIHZl
cnRleFBhcmFtc1snUFJFQ0lTSU9OJ10gPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUo
cHJlY2lzaW9uKTsKKyAgICAgICAgdmVydGV4UGFyYW1zWydEQVRBVFlQRSddID0gZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZU5hbWUoY29vcmRUeXBlKTsKKworICAgICAgICByZXR1cm4gdGN1U3Ry
aW5nVGVtcGxhdGUuc3BlY2lhbGl6ZSh2ZXJ0ZXhUbXBsLCB2ZXJ0ZXhQYXJhbXMpOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAg
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlLnByb3RvdHlwZS5n
ZXRWaWV3cG9ydFNpemUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9zdXJmYWNl
VHlwZSA9PT0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUuREVGQVVMVF9GUkFN
RUJVRkZFUikgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3aWR0aCA9
IE1hdGgubWluKGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
VklFV1BPUlRfV0lEVEgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBo
ZWlnaHQgPSBNYXRoLm1pbihnbC5kcmF3aW5nQnVmZmVySGVpZ2h0LCBlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5WSUVXUE9SVF9IRUlHSFQpOworICAgICAgICAgICAgcmV0dXJuIFt3aWR0aCwgaGVp
Z2h0XTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gW2VzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLkZCT19XSURUSCwgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRkJPX0hFSUdIVF07
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHR9CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuVHJpYW5nbGVEZXJp
dmF0ZUNhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3
IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtl
VnR4RnJhZ1NvdXJjZXMoZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2VuVmVydGV4U291cmNlKHRo
aXMubV9jb29yZERhdGFUeXBlLCB0aGlzLm1fY29vcmRQcmVjaXNpb24pLCB0aGlzLm1fZnJhZ21l
bnRTcmMpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQg
PSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLm5hbWUpIF4g
MHhiYmMyNCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHVzZUZibyA9IHRo
aXMubV9zdXJmYWNlVHlwZSAhPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5E
RUZBVUxUX0ZSQU1FQlVGRkVSOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZi
b0Zvcm1hdCA9IHRoaXMubV9zdXJmYWNlVHlwZSA9PT0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
U3VyZmFjZVR5cGUuRkxPQVRfRkJPID8gZ2wuUkdCQTMyVUkgOiBnbC5SR0JBODsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmlld3BvcnRTaXplID0gdGhpcy5nZXRW
aWV3cG9ydFNpemUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2aWV3cG9y
dFggPSB1c2VGYm8gPyAwIDogcm5kLmdldEludCgwLCBnbC5kcmF3aW5nQnVmZmVyV2lkdGggLSB2
aWV3cG9ydFNpemVbMF0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdw
b3J0WSA9IHVzZUZibyA/IDAgOiBybmQuZ2V0SW50KDAsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQg
LSB2aWV3cG9ydFNpemVbMV0pOworICAgICAgICAvKiogQHR5cGUgez9XZWJHTEZyYW1lYnVmZmVy
fSAqLyB2YXIgZmJvID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHs/V2ViR0xSZW5kZXJidWZm
ZXJ9ICovIHZhciByYm8gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4
dHVyZUxldmVsfSAqLyB2YXIgcmVzdWx0ID0gbnVsbDsKKworICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZShwcm9ncmFtLmdldFByb2dyYW1JbmZvKCkuaW5mb0xvZyk7CisKKyAgICAgICAgaWYg
KCFwcm9ncmFtLmlzT2soKSkKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZmFsc2UsICdD
b21waWxlIGZhaWxlZCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBpZiAodXNlRmJvKSB7Cisg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVuZGVyaW5nIHRvIEZCTywgZm9ybWF0
ID0gJyArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZmJvRm9ybWF0KSArICcsIHNhbXBsZXMgPSAn
ICsgdGhpcy5tX251bVNhbXBsZXMpOworCisgICAgICAgICAgICBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgICAgICAgICAgcmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisK
KyAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByYm8pOwor
ICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJV
RkZFUiwgdGhpcy5tX251bVNhbXBsZXMsIGZib0Zvcm1hdCwgdmlld3BvcnRTaXplWzBdLCB2aWV3
cG9ydFNpemVbMV0pOworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmYm8pOworICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJibyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVBpeGVsRm9ybWF0LlBp
eGVsRm9ybWF0fSAqLyB2YXIgcGl4ZWxGb3JtYXQgPSB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1h
dEZyb21Db250ZXh0KGdsKTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jl
bmRlcmluZyB0byBkZWZhdWx0IGZyYW1lYnVmZmVyXG4nICsKKyAgICAgICAgICAgICAgICAnXHRD
b2xvciBkZXB0aDogUj0nICsgcGl4ZWxGb3JtYXQucmVkQml0cyArICcsIEc9JyArIHBpeGVsRm9y
bWF0LmdyZWVuQml0cyArICcsIEI9JyArIHBpeGVsRm9ybWF0LmJsdWVCaXRzICsgJywgQT0nICsg
cGl4ZWxGb3JtYXQuYWxwaGFCaXRzKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdpbjogJyArIHRoaXMubV9jb29yZE1pbiArICcgJyArIHRoaXMubV9jb29yZE1h
eCArICdcbicgKworICAgICAgICAgICAgJ3ZfY29vcmQueCA9IGluLnggKiB4XG4nICsKKyAgICAg
ICAgICAgICd2X2Nvb3JkLnkgPSBpbi55ICogeVxuJyArCisgICAgICAgICAgICAndl9jb29yZC56
ID0gaW4ueiAqICh4K3kpLzJcbicgKworICAgICAgICAgICAgJ3ZfY29vcmQudyA9IGluLncgKiAo
MSAtICh4K3kpLzIpXG4nICsKKyAgICAgICAgICAgICdcbicgKworICAgICAgICAgICAgJ3Vfc2Nh
bGU6ICcgKyB0aGlzLm1fZGVyaXZTY2FsZSArICcsIHVfYmlhczogJyArIHRoaXMubV9kZXJpdkJp
YXMgKyAnIChkaXNwbGF5ZWQgdmFsdWVzIGhhdmUgc2NhbGUvYmlhcyByZW1vdmVkKScgKworICAg
ICAgICAgICAgJ1ZpZXdwb3J0OiAnICsgdmlld3BvcnRTaXplWzBdICsgJ3gnICsgdmlld3BvcnRT
aXplWzFdICsKKyAgICAgICAgICAgICdnbC5GUkFHTUVOVF9TSEFERVJfREVSSVZBVEVfSElOVDog
JyArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGhpcy5tX2hpbnQpKTsKKyAgICAgICAgLy8gRHJh
dworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwb3NpdGlvbnMgPSBb
CisgICAgICAgICAgICAtMS4wLCAtMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgIC0xLjAsIDEu
MCwgMC4wLCAxLjAsCisgICAgICAgICAgICAxLjAsIC0xLjAsIDAuMCwgMS4wLAorICAgICAgICAg
ICAgMS4wLCAxLjAsIDAuMCwgMS4wCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmRzID1bCisgICAgICAgICAgICB0aGlzLm1fY29vcmRN
aW5bMF0sIHRoaXMubV9jb29yZE1pblsxXSwgdGhpcy5tX2Nvb3JkTWluWzJdLCB0aGlzLm1fY29v
cmRNYXhbM10sCisgICAgICAgICAgICB0aGlzLm1fY29vcmRNaW5bMF0sIHRoaXMubV9jb29yZE1h
eFsxXSwgKHRoaXMubV9jb29yZE1pblsyXSArIHRoaXMubV9jb29yZE1heFsyXSkgKiAwLjUsICh0
aGlzLm1fY29vcmRNaW5bM10rdGhpcy5tX2Nvb3JkTWF4WzNdKSAqIDAuNSwKKyAgICAgICAgICAg
IHRoaXMubV9jb29yZE1heFswXSwgdGhpcy5tX2Nvb3JkTWluWzFdLCAodGhpcy5tX2Nvb3JkTWlu
WzJdICsgdGhpcy5tX2Nvb3JkTWF4WzJdKSAqIDAuNSwgKHRoaXMubV9jb29yZE1pblszXSt0aGlz
Lm1fY29vcmRNYXhbM10pICogMC41LAorICAgICAgICAgICAgdGhpcy5tX2Nvb3JkTWF4WzBdLCB0
aGlzLm1fY29vcmRNYXhbMV0sIHRoaXMubV9jb29yZE1heFsyXSwgdGhpcy5tX2Nvb3JkTWluWzNd
CisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVEcmF3VXRpbC5WZXJ0
ZXhBcnJheUJpbmRpbmc+fSAqLyB2YXIgdmVydGV4QXJyYXlzID0gWworICAgICAgICAgICAgZ2x1
RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJheUJpbmRpbmcoJ2FfcG9zaXRpb24nLCA0LCA0LCAw
LCBwb3NpdGlvbnMpLAorICAgICAgICAgICAgZ2x1RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJh
eUJpbmRpbmcoJ2FfY29vcmQnLCA0LCA0LCAwLCBjb29yZHMpCisgICAgICAgIF07CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kaWNlcyA9IFswLCAyLCAxLCAy
LCAzLCAxXTsKKworICAgICAgICBnbC5jbGVhckNvbG9yKDAuMTI1LCAwLjI1LCAwLjUsIDEuMCk7
CisgICAgICAgIC8vIFdlIGNhbid0IHJlYWxseSBjYWxsIGNsZWFyKCkgb24gZ2wuQ09MT1JfQlVG
RkVSX0JJVCBoZXJlIGFzIGluIGMrKyBkZXFwLgorICAgICAgICAvLyBUaGUgZmJvIGZvcm1hdCBt
aWdodCBiZSBvZiBpbnRlZ2VyIHR5cGUgYW5kIFdlYkdMMiByZXF1aXJlcyBhbiBJTlZBTElEX09Q
RVJBVElPTiB0byBiZSBnZW5lcmF0ZWQuCisgICAgICAgIHZhciBmb3JtYXRPYmogPSBnbHVUZXh0
dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGZib0Zvcm1hdCk7CisgICAgICAgIHZhciBmbXRD
bGFzcyA9IHRjdVRleHR1cmUuZ2V0VGV4dHVyZUNoYW5uZWxDbGFzcyhmb3JtYXRPYmoudHlwZSk7
CisgICAgICAgIHN3aXRjaCAoZm10Q2xhc3MpIHsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVy
ZS5UZXh0dXJlQ2hhbm5lbENsYXNzLkZMT0FUSU5HX1BPSU5UOgorICAgICAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0ZJWEVEX1BPSU5UOgorICAgICAg
ICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuVU5TSUdORURfRklYRURf
UE9JTlQ6CisgICAgICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLlRleHR1cmVDaGFubmVsQ2xh
c3MuVU5TSUdORURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBnbC5jbGVhckJ1ZmZlcnVpdihn
bC5DT0xPUiwgMCwgbmV3IFVpbnQzMkFycmF5KFszMSwgNjMsIDEyNywgMjU1XSkpOworICAgICAg
ICAgICAgICAgIGdsLmNsZWFyKGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5TVEVOQ0lMX0JVRkZF
Ul9CSVQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLlRleHR1cmVDaGFubmVsQ2xhc3MuU0lHTkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAg
Z2wuY2xlYXJCdWZmZXJpdihnbC5DT0xPUiwgMCwgbmV3IEludDMyQXJyYXkoWzMxLCA2MywgMTI3
LCAyNTVdKSk7CisgICAgICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuREVQVEhfQlVGRkVSX0JJVCB8
IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBj
aGFubmVsY2xhc3MgJyArIGZtdENsYXNzKTsKKyAgICAgICAgfQorICAgICAgICBnbC5kaXNhYmxl
KGdsLkRJVEhFUik7CisKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtLmdldFByb2dyYW0o
KSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHNj
YWxlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAndV9z
Y2FsZScpOworICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIg
Ymlhc0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldFByb2dyYW0oKSwgJ3Vf
YmlhcycpOworCisgICAgICAgIHN3aXRjaCAodGhpcy5tX2RhdGFUeXBlKSB7CisgICAgICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAgZ2wu
dW5pZm9ybTFmKHNjYWxlTG9jLCB0aGlzLm1fZGVyaXZTY2FsZVswXSk7CisgICAgICAgICAgICAg
ICAgZ2wudW5pZm9ybTFmKGJpYXNMb2MsIHRoaXMubV9kZXJpdkJpYXNbMF0pOworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfVkVDMjoKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMmZ2KHNjYWxlTG9jLCB0aGlz
Lm1fZGVyaXZTY2FsZS5zbGljZSgwLDIpKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMmZ2
KGJpYXNMb2MsIHRoaXMubV9kZXJpdkJpYXMuc2xpY2UoMCwyKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUMzOgorICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zZnYoc2NhbGVMb2MsIHRoaXMubV9kZXJp
dlNjYWxlLnNsaWNlKDAsMykpOworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zZnYoYmlhc0xv
YywgdGhpcy5tX2Rlcml2Qmlhcy5zbGljZSgwLDMpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ6Cisg
ICAgICAgICAgICAgICAgZ2wudW5pZm9ybTRmdihzY2FsZUxvYywgdGhpcy5tX2Rlcml2U2NhbGUp
OworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm00ZnYoYmlhc0xvYywgdGhpcy5tX2Rlcml2Qmlh
cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIFR5cGUgbm90IHN1cHBvcnRlZDogJyAr
IHRoaXMubV9kYXRhVHlwZSk7CisgICAgICAgIH0KKworICAgICAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLnNldHVwRGVmYXVsdFVuaWZvcm1zKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAg
dGhpcy5zZXR1cFJlbmRlclN0YXRlKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKworICAgICAgICBn
bC5oaW50KGdsLkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQsIHRoaXMubV9oaW50KTsK
KworICAgICAgICBnbC52aWV3cG9ydCh2aWV3cG9ydFgsIHZpZXdwb3J0WSwgdmlld3BvcnRTaXpl
WzBdLCB2aWV3cG9ydFNpemVbMV0pOworICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9n
cmFtLmdldFByb2dyYW0oKSwgdmVydGV4QXJyYXlzLCBnbHVEcmF3VXRpbC50cmlhbmdsZXMoaW5k
aWNlcykpOworCisgICAgICAgIC8vIFJlYWQgYmFjayByZXN1bHRzCisKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgaXNNU0FBID0gdXNlRmJvICYmIHRoaXMubV9udW1TYW1wbGVz
ID4gMDsKKyAgICAgICAgLyoqIEB0eXBlIHs/V2ViR0xGcmFtZWJ1ZmZlcn0gKi8gdmFyIHJlc0Zi
byA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB2YXIg
cmVzUmJvID0gbnVsbDsKKworICAgICAgICAvLyBSZXNvbHZlIGlmIG5lY2Vzc2FyeQorICAgICAg
ICBpZiAoaXNNU0FBKSB7CisgICAgICAgICAgICByZXNGYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgICAgICAgICAgcmVzUmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAg
ICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZXNSYm8pOwor
ICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJV
RkZFUiwgMCwgZmJvRm9ybWF0LCB2aWV3cG9ydFNpemVbMF0sIHZpZXdwb3J0U2l6ZVsxXSk7Cisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgcmVzRmJv
KTsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkRSQVdfRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJlc1Jibyk7CisK
KyAgICAgICAgICAgIGdsLmJsaXRGcmFtZWJ1ZmZlcigwLCAwLCB2aWV3cG9ydFNpemVbMF0sIHZp
ZXdwb3J0U2l6ZVsxXSwgMCwgMCwgdmlld3BvcnRTaXplWzBdLCB2aWV3cG9ydFNpemVbMV0sIGds
LkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworCisgICAgICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgcmVzRmJvKTsKKyAgICAgICAgfQorICAgICAg
ICBzd2l0Y2ggKHRoaXMubV9zdXJmYWNlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBlczNmU2hh
ZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5ERUZBVUxUX0ZSQU1FQlVGRkVSOgorICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5VTk9STV9GQk86
CisgICAgICAgICAgICAgICAgdmFyIGRhdGFGb3JtYXQgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsIHRjdVRleHR1cmUuQ2hhbm5lbFR5
cGUuVU5PUk1fSU5UOCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IHRjdVRleHR1cmUu
VGV4dHVyZUxldmVsKGRhdGFGb3JtYXQsIHZpZXdwb3J0U2l6ZVswXSwgdmlld3BvcnRTaXplWzFd
KTsKKyAgICAgICAgICAgICAgICBnbHVQaXhlbFRyYW5zZmVyLnJlYWRQaXhlbHMoZ2wsIHZpZXdw
b3J0WCwgdmlld3BvcnRZLCBkYXRhRm9ybWF0LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VU
eXBlLkZMT0FUX0ZCTzoKKyAgICAgICAgICAgICAgICB2YXIgZGF0YUZvcm1hdCA9IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5GTE9BVCk7CisgICAgICAgICAgICAgICAgdmFyIHRyYW5zZmVyRm9y
bWF0ID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCh0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5SR0JBLCB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVEX0lOVDMyKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwoZGF0YUZvcm1hdCwg
dmlld3BvcnRTaXplWzBdLCB2aWV3cG9ydFNpemVbMV0pOworICAgICAgICAgICAgICAgIGdsdVBp
eGVsVHJhbnNmZXIucmVhZFBpeGVscyhnbCwgdmlld3BvcnRYLCB2aWV3cG9ydFksIHRyYW5zZmVy
Rm9ybWF0LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU3VyZmFjZSBUeXBlIG5v
dCBzdXBwb3J0ZWQ6ICcgKyB0aGlzLm1fc3VyZmFjZVR5cGUpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gVmVyaWZ5CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLwor
ICAgICAgICB2YXIgZXJyb3JNYXNrID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShyZXN1bHQuZ2V0
V2lkdGgoKSwgcmVzdWx0LmdldEhlaWdodCgpKTsKKworICAgICAgICBlcnJvck1hc2suZ2V0QWNj
ZXNzKCkuY2xlYXIodGN1UkdCQS5SR0JBLmdyZWVuLnRvVmVjKCkpOworCisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSB0aGlzLnZlcmlmeShyZXN1bHQuZ2V0QWNjZXNz
KCksIGVycm9yTWFzay5nZXRBY2Nlc3MoKSk7CisKKyAgICAgICAgaWYgKCFpc09rKSB7CisgICAg
ICAgICAgICB0Y3VMb2dJbWFnZS5sb2dJbWFnZSgnUmVuZGVyZWQnLCAnUmVuZGVyZWQgaW1hZ2Un
LCByZXN1bHQuZ2V0QWNjZXNzKCkpOworICAgICAgICAgICAgdGN1TG9nSW1hZ2UubG9nSW1hZ2Uo
J0Vycm9yTWFzaycsICdFcnJvciBtYXNrJywgZXJyb3JNYXNrLmdldEFjY2VzcygpKTsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsJywgZmFsc2UpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7CisKKyAgICAgICAg
Ly8gQ2xlYW5pbmcgdXAgYnVmZmVycworICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8p
OworICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmJvKTsKKyAgICAgICAgZ2wuZGVsZXRl
RnJhbWVidWZmZXIocmVzRmJvKTsKKyAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlc1Ji
byk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5UcmlhbmdsZURlcml2YXRlQ2FzZS5wcm90b3R5
cGUuZ2V0U3VyZmFjZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzd2l0Y2ggKHRo
aXMubV9zdXJmYWNlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cy5TdXJmYWNlVHlwZS5ERUZBVUxUX0ZSQU1FQlVGRkVSOgorICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9ICovIHZhciBwaXhlbEZvcm1hdCA9
IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNvbnRleHQoZ2wpOworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNoYW5uZWxCaXRzID0gW3BpeGVs
Rm9ybWF0LnJlZEJpdHMsIHBpeGVsRm9ybWF0LmdyZWVuQml0cywgcGl4ZWxGb3JtYXQuYmx1ZUJp
dHMsIHBpeGVsRm9ybWF0LmFscGhhQml0c107CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgaW50VGhyZXNob2xkID0gZGVNYXRoLmFycmF5U2hpZnRMZWZ0
KFsxLCAxLCAxLCAxXSwgZGVNYXRoLnN1YnRyYWN0KFs4LCA4LCA4LCA4XSwgY2hhbm5lbEJpdHMp
KTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBub3Jt
VGhyZXNob2xkID0gZGVNYXRoLnNjYWxlKGludFRocmVzaG9sZCwgMS4wLzI1NS4wKTsKKworICAg
ICAgICAgICAgICAgIHJldHVybiBub3JtVGhyZXNob2xkOworCisgICAgICAgICAgICBjYXNlIGVz
M2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLlVOT1JNX0ZCTzogcmV0dXJuIGRlTWF0
aC5zY2FsZShbMSwgMSwgMSwgMV0sIDEuMC8yNTUuMCk7CisgICAgICAgICAgICBjYXNlIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLkZMT0FUX0ZCTzogcmV0dXJuIFswLjAsIDAu
MCwgMC4wLCAwLjBdOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKGZhbHNlLCAnU3VyZmFjZSBUeXBlIG5vdCBzdXBwb3J0ZWQuIEZhbGxpbmcg
YmFjayB0byBkZWZhdWx0IHJldHVuIHZhbHVlIFswLjAsIDAuMCwgMC4wLCAwLjBdJywgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gWzAuMCwgMC4wLCAwLjAsIDAuMF07Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlfQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2Ny
aXB0aW9uCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1
bmN9IGZ1bmMKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUKKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5Db25zdGFudERlcml2YXRlQ2FzZSA9
IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBmdW5jLCB0eXBlKSB7CisgICAgICAgIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24pOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3Rz
LkRlcml2YXRlRnVuY30gKi8gdGhpcy5tX2Z1bmMgPSBmdW5jOworICAgICAgICB0aGlzLm1fZGF0
YVR5cGUgPSB0eXBlOworICAgICAgICB0aGlzLm1fcHJlY2lzaW9uID0gZ2x1U2hhZGVyVXRpbC5w
cmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQOworICAgICAgICB0aGlzLm1fY29vcmREYXRhVHlwZSA9
IHRoaXMubV9kYXRhVHlwZTsKKyAgICAgICAgdGhpcy5tX2Nvb3JkUHJlY2lzaW9uID0gdGhpcy5t
X3ByZWNpc2lvbjsKKyAgICB9OworCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuQ29uc3Rh
bnREZXJpdmF0ZUNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5UcmlhbmdsZURlcml2YXRlQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJE
ZXJpdmF0ZVRlc3RzLkNvbnN0YW50RGVyaXZhdGVDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkNvbnN0YW50RGVyaXZhdGVDYXNlOworCisgICAgZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuQ29uc3RhbnREZXJpdmF0ZUNhc2UucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnbWVu
dFRtcGwgPSAnJyArCisgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAg
ICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsK
KyAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSB1X3NjYWxlO1xu
JyArCisgICAgICAgICAgICAndW5pZm9ybSAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gdV9iaWFz
O1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAn
e1xuJyArCisgICAgICAgICAgICAnICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSByZXMgPSAke0ZV
TkN9KCR7VkFMVUV9KSAqIHVfc2NhbGUgKyB1X2JpYXM7XG4nICsKKyAgICAgICAgICAgICcgb19j
b2xvciA9ICR7Q0FTVF9UT19PVVRQVVR9O1xuJyArCisgICAgICAgICAgICAnfVxuJzsKKworICAg
ICAgICAvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIGZyYWdtZW50UGFyYW1zID0ge307CisgICAg
ICAgIGZyYWdtZW50UGFyYW1zWydQUkVDSVNJT04nXSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lz
aW9uTmFtZSh0aGlzLm1fcHJlY2lzaW9uKTsKKyAgICAgICAgZnJhZ21lbnRQYXJhbXNbJ0RBVEFU
WVBFJ10gPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh0aGlzLm1fZGF0YVR5cGUpOwor
ICAgICAgICBmcmFnbWVudFBhcmFtc1snRlVOQyddID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Z2V0RGVyaXZhdGVGdW5jTmFtZSh0aGlzLm1fZnVuYyk7CisgICAgICAgIGZyYWdtZW50UGFyYW1z
WydWQUxVRSddID0gdGhpcy5tX2RhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzQgPyAndmVjNCgxLjAsIDcuMiwgLTFlNSwgMC4wKScgOgorICAgICAgICAgICAgdGhp
cy5tX2RhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMgPyAndmVj
MygxZTIsIDguMCwgMC4wMSknIDoKKyAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9PT0gZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyID8gJ3ZlYzIoLTAuMCwgMi43KScgOgorICAg
ICAgICAgICAgJzcuNyc7CisgICAgICAgIGZyYWdtZW50UGFyYW1zWydDQVNUX1RPX09VVFBVVCdd
ID0gdGhpcy5tX2RhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQg
PyAncmVzJyA6CisgICAgICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDMyA/ICd2ZWM0KHJlcywgMS4wKScgOgorICAgICAgICAgICAgdGhp
cy5tX2RhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIgPyAndmVj
NChyZXMsIDAuMCwgMS4wKScgOgorICAgICAgICAgICAgJ3ZlYzQocmVzLCAwLjAsIDAuMCwgMS4w
KSc7CisKKyAgICAgICAgdGhpcy5tX2ZyYWdtZW50U3JjID0gdGN1U3RyaW5nVGVtcGxhdGUuc3Bl
Y2lhbGl6ZShmcmFnbWVudFRtcGwsIGZyYWdtZW50UGFyYW1zKTsKKworICAgICAgICB0aGlzLm1f
ZGVyaXZTY2FsZSA9IFsxZTMsIDFlMywgMWUzLCAxZTNdOworICAgICAgICB0aGlzLm1fZGVyaXZC
aWFzID0gWzAuNSwgMC41LCAwLjUsIDAuNV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQKKyAgICAgKiBA
cGFyYW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9yTWFzaworICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuQ29u
c3RhbnREZXJpdmF0ZUNhc2UucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uKHJlc3VsdCwgZXJy
b3JNYXNrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJlZmVy
ZW5jZSA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOyAvLyBEZXJpdmF0ZSBvZiBjb25zdGFudCBhcmd1
bWVudCBzaG91bGQgYWx3YXlzIGJlIDAKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB2YXIgdGhyZXNob2xkID0gZGVNYXRoLmRpdmlkZSh0aGlzLmdldFN1cmZhY2VUaHJlc2hv
bGQoKSwgZGVNYXRoLmFicyh0aGlzLm1fZGVyaXZTY2FsZSkpOworICAgICAgICByZXR1cm4gZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMudmVyaWZ5Q29uc3RhbnREZXJpdmF0ZShyZXN1bHQsIGVycm9y
TWFzaywgdGhpcy5tX2RhdGFUeXBlLAorICAgICAgICAgICAgcmVmZXJlbmNlLCB0aHJlc2hvbGQs
IHRoaXMubV9kZXJpdlNjYWxlLCB0aGlzLm1fZGVyaXZCaWFzKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICogQHBhcmFtIHtlczNm
U2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9IGZ1bmMKKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwu
cHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGludAorICAgICAq
IEBwYXJhbSB7ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGV9IHN1cmZhY2VUeXBl
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNhbXBsZXMKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZnJhZ21lbnRTcmNUbXBsCisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
TGluZWFyRGVyaXZhdGVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGZ1bmMsIHR5
cGUsIHByZWNpc2lvbiwgaGludCwgc3VyZmFjZVR5cGUsIG51bVNhbXBsZXMsIGZyYWdtZW50U3Jj
VG1wbCkgeworICAgICAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5UcmlhbmdsZURlcml2YXRl
Q2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9ICovIHRoaXMubV9mdW5jID0gZnVu
YzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubV9mcmFnbWVudFRtcGwgPSBm
cmFnbWVudFNyY1RtcGw7CisgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9IHR5cGU7CisgICAgICAg
IHRoaXMubV9wcmVjaXNpb24gPSBwcmVjaXNpb247CisgICAgICAgIHRoaXMubV9jb29yZERhdGFU
eXBlID0gdGhpcy5tX2RhdGFUeXBlOworICAgICAgICB0aGlzLm1fY29vcmRQcmVjaXNpb24gPSB0
aGlzLm1fcHJlY2lzaW9uOworICAgICAgICB0aGlzLm1faGludCA9IGhpbnQ7CisgICAgICAgIHRo
aXMubV9zdXJmYWNlVHlwZSA9IHN1cmZhY2VUeXBlOworICAgICAgICB0aGlzLm1fbnVtU2FtcGxl
cyA9IG51bVNhbXBsZXM7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkxp
bmVhckRlcml2YXRlQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRl
ckRlcml2YXRlVGVzdHMuTGluZWFyRGVyaXZhdGVDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkxpbmVhckRlcml2YXRlQ2FzZTsKKworICAgIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLkxpbmVhckRlcml2YXRlQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2aWV3
cG9ydFNpemUgPSB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHcgPSB2aWV3cG9ydFNpemVbMF07CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgaCA9IHZpZXdwb3J0U2l6ZVsxXTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB2YXIgcGFja1RvSW50ID0gdGhpcy5tX3N1cmZhY2VUeXBlID09PSBlczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5GTE9BVF9GQk87CisKKyAgICAgICAgLyoqIEB0eXBl
IHtPYmplY3R9ICovIHZhciBmcmFnbWVudFBhcmFtcyA9IHt9OworICAgICAgICBmcmFnbWVudFBh
cmFtc1snT1VUUFVUX1RZUEUnXSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHBhY2tU
b0ludCA/IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0IDogZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgZnJhZ21lbnRQYXJhbXNbJ09VVFBVVF9QUkVD
J10gPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUocGFja1RvSW50ID8gZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQIDogdGhpcy5tX3ByZWNpc2lvbik7CisgICAg
ICAgIGZyYWdtZW50UGFyYW1zWydQUkVDSVNJT04nXSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lz
aW9uTmFtZSh0aGlzLm1fcHJlY2lzaW9uKTsKKyAgICAgICAgZnJhZ21lbnRQYXJhbXNbJ0RBVEFU
WVBFJ10gPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh0aGlzLm1fZGF0YVR5cGUpOwor
ICAgICAgICBmcmFnbWVudFBhcmFtc1snRlVOQyddID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Z2V0RGVyaXZhdGVGdW5jTmFtZSh0aGlzLm1fZnVuYyk7CisKKyAgICAgICAgaWYgKHBhY2tUb0lu
dCkgeworICAgICAgICAgICAgZnJhZ21lbnRQYXJhbXNbJ0NBU1RfVE9fT1VUUFVUJ10gPSB0aGlz
Lm1fZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCA/ICdmbG9h
dEJpdHNUb1VpbnQocmVzKScgOgorICAgICAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9PT0g
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzID8gJ2Zsb2F0Qml0c1RvVWludCh2ZWM0
KHJlcywgMS4wKSknIDoKKyAgICAgICAgICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPT09IGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiA/ICdmbG9hdEJpdHNUb1VpbnQodmVjNChyZXMs
IDAuMCwgMS4wKSknIDoKKyAgICAgICAgICAgICAgICAnZmxvYXRCaXRzVG9VaW50KHZlYzQocmVz
LCAwLjAsIDAuMCwgMS4wKSknOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZnJhZ21l
bnRQYXJhbXNbJ0NBU1RfVE9fT1VUUFVUJ10gPSB0aGlzLm1fZGF0YVR5cGUgPT09IGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCA/ICdyZXMnIDoKKyAgICAgICAgICAgICAgICB0aGlz
Lm1fZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMyA/ICd2ZWM0
KHJlcywgMS4wKScgOgorICAgICAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9PT0gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyID8gJ3ZlYzQocmVzLCAwLjAsIDEuMCknIDoKKyAg
ICAgICAgICAgICAgICAndmVjNChyZXMsIDAuMCwgMC4wLCAxLjApJzsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMubV9mcmFnbWVudFNyYyA9IHRjdVN0cmluZ1RlbXBsYXRlLnNwZWNpYWxpemUo
dGhpcy5tX2ZyYWdtZW50VG1wbCwgZnJhZ21lbnRQYXJhbXMpOworCisgICAgICAgIHN3aXRjaCAo
dGhpcy5tX3ByZWNpc2lvbikgeworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbi5QUkVDSVNJT05fSElHSFA6CisgICAgICAgICAgICAgICAgdGhpcy5tX2Nvb3JkTWluID0g
Wy05Ny4sIDAuMiwgNzEuLCA3NC5dOworICAgICAgICAgICAgICAgIHRoaXMubV9jb29yZE1heCA9
IFstMTMuMiwgLTc3LiwgNDQuLCA3Ni5dOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOgor
ICAgICAgICAgICAgICAgIHRoaXMubV9jb29yZE1pbiA9IFstMzcuMCwgNDcuLCAtNy4sIDAuMF07
CisgICAgICAgICAgICAgICAgdGhpcy5tX2Nvb3JkTWF4ID0gWy0xLjAsIDEyLiwgNy4sIDE5Ll07
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6CisgICAgICAgICAgICAgICAgdGhpcy5tX2Nvb3Jk
TWluID0gWzAuMCwgLTEuMCwgMC4wLCAxLjBdOworICAgICAgICAgICAgICAgIHRoaXMubV9jb29y
ZE1heCA9IFsxLjAsIDEuMCwgLTEuMCwgLTEuMF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQ
cmVjaXNpb24gbm90IHN1cHBvcnRlZDogJyArIHRoaXMubV9wcmVjaXNpb24pOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRoaXMubV9zdXJmYWNlVHlwZSA9PT0gZXMzZlNoYWRlckRlcml2YXRl
VGVzdHMuU3VyZmFjZVR5cGUuRkxPQVRfRkJPKSB7CisgICAgICAgICAgICAvLyBObyBzY2FsZSBv
ciBiaWFzIHVzZWQgZm9yIGFjY3VyYWN5LgorICAgICAgICAgICAgdGhpcy5tX2Rlcml2U2NhbGUg
PSBbMS4wLCAxLjAsIDEuMCwgMS4wXTsKKyAgICAgICAgICAgIHRoaXMubV9kZXJpdkJpYXMgPSBb
MC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENv
bXB1dGUgc2NhbGUgLSBiaWFzIHRoYXQgbm9ybWFsaXplcyB0byAwLi4xIHJhbmdlLgorICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHggPSBkZU1hdGguZGl2aWRl
KGRlTWF0aC5zdWJ0cmFjdCh0aGlzLm1fY29vcmRNYXgsIHRoaXMubV9jb29yZE1pbiksIFt3LCB3
LCB3ICogMC41LCAtdyAqIDAuNV0pOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgZHkgPSBkZU1hdGguZGl2aWRlKGRlTWF0aC5zdWJ0cmFjdCh0aGlzLm1fY29v
cmRNYXgsIHRoaXMubV9jb29yZE1pbiksIFtoLCBoLCBoICogMC41LCAtaCAqIDAuNV0pOworCisg
ICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9mdW5jKSB7CisgICAgICAgICAgICAgICAgY2FzZSBl
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmMuREZEWDoKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5tX2Rlcml2U2NhbGUgPSBkZU1hdGguZGl2aWRlKFswLjUsIDAuNSwgMC41LCAw
LjVdLCBkeCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
Y2FzZSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmMuREZEWToKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tX2Rlcml2U2NhbGUgPSBkZU1hdGguZGl2aWRlKFswLjUsIDAuNSwg
MC41LCAwLjVdLCBkeSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmMuRldJRFRIOgor
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZGVyaXZTY2FsZSA9IGRlTWF0aC5kaXZpZGUoWzAu
NSwgMC41LCAwLjUsIDAuNV0sIGRlTWF0aC5hZGQoZGVNYXRoLmFicyhkeCksIGRlTWF0aC5hYnMo
ZHkpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZXJpdmF0ZSBGdW5j
dGlvbiBub3Qgc3VwcG9ydGVkOiAnICsgdGhpcy5tX2Z1bmMpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0aGlzLm1fZGVyaXZCaWFzID0gWzAuMCwgMC4wLCAwLjAsIDAuMF07CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0
UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlc3VsdAorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhl
bEJ1ZmZlckFjY2Vzc30gZXJyb3JNYXNrCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5MaW5lYXJEZXJpdmF0ZUNhc2UucHJvdG90
eXBlLnZlcmlmeSA9IGZ1bmN0aW9uKHJlc3VsdCwgZXJyb3JNYXNrKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHhTY2FsZSA9IFsxLjAsIDAuMCwgMC41LCAtMC41
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgeVNjYWxlID0gWzAu
MCwgMS4wLCAwLjUsIC0wLjVdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBzdXJmYWNlVGhyZXNob2xkID0gZGVNYXRoLmRpdmlkZSh0aGlzLmdldFN1cmZhY2VUaHJl
c2hvbGQoKSwgZGVNYXRoLmFicyh0aGlzLm1fZGVyaXZTY2FsZSkpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBoOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciByZWZlcmVuY2U7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHRocmVzaG9sZDsKKwor
ICAgICAgICBpZiAodGhpcy5tX2Z1bmMgPT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2
YXRlRnVuYy5ERkRYIHx8IHRoaXMubV9mdW5jID09PSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5E
ZXJpdmF0ZUZ1bmMuREZEWSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNYID0gdGhpcy5tX2Z1bmMgPT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2YXRl
RnVuYy5ERkRYOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaXYgPSBp
c1ggPyByZXN1bHQuZ2V0V2lkdGgoKSA6IHJlc3VsdC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNjYWxlID0gaXNYID8geFNjYWxlIDog
eVNjYWxlOworICAgICAgICAgICAgcmVmZXJlbmNlID0gZGVNYXRoLm11bHRpcGx5KGRlTWF0aC5z
Y2FsZShkZU1hdGguc3VidHJhY3QodGhpcy5tX2Nvb3JkTWF4LCB0aGlzLm1fY29vcmRNaW4pLCAx
L2RpdiksIHNjYWxlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIG9wVGhyZXNob2xkID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0RGVyaXZhdGVUaHJl
c2hvbGQodGhpcy5tX3ByZWNpc2lvbiwgZGVNYXRoLm11bHRpcGx5KHRoaXMubV9jb29yZE1pbiwg
c2NhbGUpLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX2Nvb3JkTWF4LCBzY2FsZSksIHJlZmVyZW5j
ZSk7CisgICAgICAgICAgICB0aHJlc2hvbGQgPSBkZU1hdGgubWF4KHN1cmZhY2VUaHJlc2hvbGQs
IG9wVGhyZXNob2xkKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdWZXJpZnlp
bmcgcmVzdWx0IGltYWdlLlxuJyArCisgICAgICAgICAgICAgICAgJ1x0VmFsaWQgZGVyaXZhdGl2
ZSBpcyAnICsgcmVmZXJlbmNlICsgJyB3aXRoIHRocmVzaG9sZCAnICsgdGhyZXNob2xkKTsKKwor
ICAgICAgICAgICAgLy8gc2hvcnQgY2lyY3VpdCBpZiByZXN1bHQgaXMgc3RyaWN0bHkgd2l0aGlu
IHRoZSBub3JtYWwgdmFsdWUgZXJyb3IgYm91bmRzLgorICAgICAgICAgICAgLy8gVGhpcyBpbXBy
b3ZlcyBwZXJmb3JtYW5jZSBzaWduaWZpY2FudGx5LgorICAgICAgICAgICAgaWYgKGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLnZlcmlmeUNvbnN0YW50RGVyaXZhdGUocmVzdWx0LCBlcnJvck1hc2ss
CisgICAgICAgICAgICAgICAgdGhpcy5tX2RhdGFUeXBlLCByZWZlcmVuY2UsIHRocmVzaG9sZCwg
dGhpcy5tX2Rlcml2U2NhbGUsCisgICAgICAgICAgICAgICAgdGhpcy5tX2Rlcml2QmlhcywgZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuVmVyaWZpY2F0aW9uTG9nZ2luZy5MT0dfTk9USElORykpIHsK
KyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnTm8gaW5jb3JyZWN0IGRlcml2
YXRpdmVzIGZvdW5kLCByZXN1bHQgdmFsaWQuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNvbWUgcGl4ZWxzIGV4Y2VlZCBl
cnJvciBib3VuZHMgY2FsY3VsYXRlZCBmb3Igbm9ybWFsIHZhbHVlcy4gVmVyaWZ5IHRoYXQgdGhl
c2UKKyAgICAgICAgICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgcGl4ZWxzIGFyZSBpbiBmYWN0
IHZhbGlkIGR1ZSB0byAoZm9yIGV4YW1wbGUpIHN1Ym5vcm0gZmx1c2hpbmcuCisKKyAgICAgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJbml0aWFsIHZlcmlmaWNhdGlvbiBmYWlsZWQsIHZl
cmlmeWluZyBpbWFnZSBieSBjYWxjdWxhdGluZyBhY2N1cmF0ZSBlcnJvciBib3VuZHMgZm9yIGVh
Y2ggcmVzdWx0IHBpeGVsLlxuJyArCisgICAgICAgICAgICAgICAgJ1x0VmVyaWZ5aW5nIGVhY2gg
cmVzdWx0IGRlcml2YXRpdmUgaXMgd2l0aGluIGl0cyByYW5nZSBvZiBsZWdhbCByZXN1bHQgdmFs
dWVzLicpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2
aWV3cG9ydFNpemUgPSB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmFsdWVSYW1wID0gZGVNYXRoLnN1YnRyYWN0KHRo
aXMubV9jb29yZE1heCwgdGhpcy5tX2Nvb3JkTWluKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuTGluZWFyMkRGdW5jdGlvbkV2YWx1YXRvcn0gKi8gdmFy
IGZ1bmN0aW9uXyA9IG5ldyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5MaW5lYXIyREZ1bmN0aW9u
RXZhbHVhdG9yKCk7CisgICAgICAgICAgICB3ID0gdmlld3BvcnRTaXplWzBdOworICAgICAgICAg
ICAgaCA9IHZpZXdwb3J0U2l6ZVsxXTsKKworICAgICAgICAgICAgZnVuY3Rpb25fLm1hdHJpeC5z
ZXRSb3coMCwgW3ZhbHVlUmFtcFswXSAvIHcsIDAuMCwgdGhpcy5tX2Nvb3JkTWluWzBdXSk7Cisg
ICAgICAgICAgICBmdW5jdGlvbl8ubWF0cml4LnNldFJvdygxLCBbMC4wLCB2YWx1ZVJhbXBbMV0g
LyBoLCB0aGlzLm1fY29vcmRNaW5bMV1dKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uXy5tYXRyaXgu
c2V0Um93KDIsIGRlTWF0aC5zY2FsZShbdmFsdWVSYW1wWzJdIC8gdywgdmFsdWVSYW1wWzJdIC8g
aCwgdGhpcy5tX2Nvb3JkTWluWzJdICsgdGhpcy5tX2Nvb3JkTWluWzJdXSwgMSAvIDIuMCkpOwor
ICAgICAgICAgICAgZnVuY3Rpb25fLm1hdHJpeC5zZXRSb3coMywgZGVNYXRoLnNjYWxlKFstdmFs
dWVSYW1wWzNdIC8gdywgLXZhbHVlUmFtcFszXSAvIGgsIHRoaXMubV9jb29yZE1heFszXSArIHRo
aXMubV9jb29yZE1heFszXV0sIDEgLyAyLjApKTsKKworICAgICAgICAgICAgcmV0dXJuIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLnJldmVyaWZ5Q29uc3RhbnREZXJpdmF0ZVdpdGhGbHVzaFJlbGF4
YXRpb25zKAorICAgICAgICAgICAgICAgIHJlc3VsdCwgZXJyb3JNYXNrLCB0aGlzLm1fZGF0YVR5
cGUsIHRoaXMubV9wcmVjaXNpb24sIHRoaXMubV9kZXJpdlNjYWxlLAorICAgICAgICAgICAgICAg
IHRoaXMubV9kZXJpdkJpYXMsIHN1cmZhY2VUaHJlc2hvbGQsIHRoaXMubV9mdW5jLCBmdW5jdGlv
bl8pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlz
Lm1fZnVuYyA9PT0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkZXSURUSCwg
J0V4cGVjdGVkIERlcml2YXRlRnVuYy5GV0lEVEgnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAg
ICB3ID0gcmVzdWx0LmdldFdpZHRoKCk7CisgICAgICAgICAgICBoID0gcmVzdWx0LmdldEhlaWdo
dCgpOworCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkeCA9
IGRlTWF0aC5tdWx0aXBseShkZU1hdGguc2NhbGUoZGVNYXRoLnN1YnRyYWN0KHRoaXMubV9jb29y
ZE1heCwgdGhpcy5tX2Nvb3JkTWluKSwgMSAvIHcpLCB4U2NhbGUpOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHkgPSBkZU1hdGgubXVsdGlwbHkoZGVNYXRo
LnNjYWxlKGRlTWF0aC5zdWJ0cmFjdCh0aGlzLm1fY29vcmRNYXgsIHRoaXMubV9jb29yZE1pbiks
IDEgLyBoKSwgeVNjYWxlKTsKKyAgICAgICAgICAgIHJlZmVyZW5jZSA9IGRlTWF0aC5hZGQoZGVN
YXRoLmFicyhkeCksIGRlTWF0aC5hYnMoZHkpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGR4VGhyZXNob2xkID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMu
Z2V0RGVyaXZhdGVUaHJlc2hvbGQodGhpcy5tX3ByZWNpc2lvbiwgZGVNYXRoLm11bHRpcGx5KHRo
aXMubV9jb29yZE1pbiwgeFNjYWxlKSwgZGVNYXRoLm11bHRpcGx5KHRoaXMubV9jb29yZE1heCwg
eFNjYWxlKSwgZHgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgZHlUaHJlc2hvbGQgPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXREZXJpdmF0ZVRocmVz
aG9sZCh0aGlzLm1fcHJlY2lzaW9uLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX2Nvb3JkTWluLCB5
U2NhbGUpLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX2Nvb3JkTWF4LCB5U2NhbGUpLCBkeSk7Cisg
ICAgICAgICAgICB0aHJlc2hvbGQgPSBkZU1hdGgubWF4KHN1cmZhY2VUaHJlc2hvbGQsIGRlTWF0
aC5tYXgoZHhUaHJlc2hvbGQsIGR5VGhyZXNob2xkKSk7CisKKyAgICAgICAgICAgIHJldHVybiBl
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy52ZXJpZnlDb25zdGFudERlcml2YXRlKHJlc3VsdCwgZXJy
b3JNYXNrLCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWZlcmVuY2UsIHRocmVzaG9sZCwgdGhpcy5tX2Rlcml2U2NhbGUsIHRoaXMu
bV9kZXJpdkJpYXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5Ucmlhbmds
ZURlcml2YXRlQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlckRlcml2YXRl
VGVzdHMuRGVyaXZhdGVGdW5jfSBmdW5jCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJl
Y2lzaW9uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhpbnQKKyAgICAgKiBAcGFyYW0ge2VzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlfSBzdXJmYWNlVHlwZQorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBudW1TYW1wbGVzCisgICAgICovCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVz
dHMuVGV4dHVyZURlcml2YXRlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBmdW5j
LCB0eXBlLCBwcmVjaXNpb24sIGhpbnQsIHN1cmZhY2VUeXBlLCBudW1TYW1wbGVzKSB7CisgICAg
ICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xlRGVyaXZhdGVDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzY3JpcHRpb24pOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLkRlcml2YXRlRnVuY30gKi8gdGhpcy5tX2Z1bmMgPSBmdW5jOworICAgICAgICAv
KiogQHR5cGUge2dsdVRleHR1cmUuVGV4dHVyZTJEfSAqLyB0aGlzLm1fdGV4dHVyZSA9IG51bGw7
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3RleFZhbHVlTWlu
ID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3RleFZh
bHVlTWF4ID0gW107CisgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9IHR5cGU7CisgICAgICAgIHRo
aXMubV9wcmVjaXNpb24gPSBwcmVjaXNpb247CisgICAgICAgIHRoaXMubV9jb29yZERhdGFUeXBl
ID0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOworICAgICAgICB0aGlzLm1fY29v
cmRQcmVjaXNpb24gPSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFA7Cisg
ICAgICAgIHRoaXMubV9oaW50ID0gaGludDsKKyAgICAgICAgdGhpcy5tX3N1cmZhY2VUeXBlID0g
c3VyZmFjZVR5cGU7CisgICAgICAgIHRoaXMubV9udW1TYW1wbGVzID0gbnVtU2FtcGxlczsKKyAg
ICB9OworCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuVGV4dHVyZURlcml2YXRlQ2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlRyaWFuZ2xl
RGVyaXZhdGVDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuVGV4
dHVyZURlcml2YXRlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5UZXh0dXJlRGVyaXZhdGVDYXNlOworCisgICAgZXMzZlNoYWRlckRlcml2YXRlVGVz
dHMuVGV4dHVyZURlcml2YXRlQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0aGlzLm1fdGV4dHVyZSA9IG51bGw7CisgICAgfTsKKworICAgIGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLlRleHR1cmVEZXJpdmF0ZUNhc2UucHJvdG90eXBlLmluaXQgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgc2hhZGVyCisgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgZnJhZ21lbnRUbXBsID0gJycgKworICAgICAgICAgICAgJyN2ZXJzaW9u
IDMwMCBlc1xuJyArCisgICAgICAgICAgICAnaW4gaGlnaHAgdmVjMiB2X2Nvb3JkO1xuJyArCisg
ICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0ICR7T1VUUFVUX1BSRUN9ICR7T1VU
UFVUX1RZUEV9IG9fY29sb3I7XG4nICsKKyAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9O
fSBzYW1wbGVyMkQgdV9zYW1wbGVyO1xuJyArCisgICAgICAgICAgICAndW5pZm9ybSAke1BSRUNJ
U0lPTn0gJHtEQVRBVFlQRX0gdV9zY2FsZTtcbicgKworICAgICAgICAgICAgJ3VuaWZvcm0gJHtQ
UkVDSVNJT059ICR7REFUQVRZUEV9IHVfYmlhcztcbicgKworICAgICAgICAgICAgJ3ZvaWQgbWFp
biAodm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyAke1BSRUNJ
U0lPTn0gdmVjNCB0ZXggPSB0ZXh0dXJlKHVfc2FtcGxlciwgdl9jb29yZCk7XG4nICsKKyAgICAg
ICAgICAgICcgJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHJlcyA9ICR7RlVOQ30odGV4JHtTV0la
WkxFfSkgKiB1X3NjYWxlICsgdV9iaWFzO1xuJyArCisgICAgICAgICAgICAnIG9fY29sb3IgPSAk
e0NBU1RfVE9fT1VUUFVUfTtcbicgKworICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB2YXIgcGFja1RvSW50ID0gdGhpcy5tX3N1cmZhY2VUeXBlID09
PSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5GTE9BVF9GQk87CisgICAgICAg
IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyB2YXIgZnJhZ21lbnRQYXJhbXMgPSB7fTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmlld3BvcnRTaXplOworICAgICAgICBm
cmFnbWVudFBhcmFtc1snT1VUUFVUX1RZUEUnXSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVO
YW1lKHBhY2tUb0ludCA/IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0IDogZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgZnJhZ21lbnRQYXJhbXNbJ09V
VFBVVF9QUkVDJ10gPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUocGFja1RvSW50ID8g
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQIDogdGhpcy5tX3ByZWNpc2lv
bik7CisgICAgICAgIGZyYWdtZW50UGFyYW1zWydQUkVDSVNJT04nXSA9IGdsdVNoYWRlclV0aWwu
Z2V0UHJlY2lzaW9uTmFtZSh0aGlzLm1fcHJlY2lzaW9uKTsKKyAgICAgICAgZnJhZ21lbnRQYXJh
bXNbJ0RBVEFUWVBFJ10gPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh0aGlzLm1fZGF0
YVR5cGUpOworICAgICAgICBmcmFnbWVudFBhcmFtc1snRlVOQyddID0gZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuZ2V0RGVyaXZhdGVGdW5jTmFtZSh0aGlzLm1fZnVuYyk7CisgICAgICAgIGZyYWdt
ZW50UGFyYW1zWydTV0laWkxFJ10gPSB0aGlzLm1fZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDNCA/ICcnIDoKKyAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9
PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzID8gJy54eXonIDoKKyAgICAgICAg
ICAgIHRoaXMubV9kYXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMy
ID8gJy54eScgOgorICAgICAgICAgICAgJy54JzsKKworICAgICAgICBpZiAocGFja1RvSW50KSB7
CisgICAgICAgICAgICBmcmFnbWVudFBhcmFtc1snQ0FTVF9UT19PVVRQVVQnXSA9IHRoaXMubV9k
YXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0ID8gJ2Zsb2F0Qml0
c1RvVWludChyZXMpJyA6CisgICAgICAgICAgICAgICAgdGhpcy5tX2RhdGFUeXBlID09PSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMgPyAnZmxvYXRCaXRzVG9VaW50KHZlYzQocmVz
LCAxLjApKScgOgorICAgICAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9PT0gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyID8gJ2Zsb2F0Qml0c1RvVWludCh2ZWM0KHJlcywgMC4w
LCAxLjApKScgOgorICAgICAgICAgICAgICAgICdmbG9hdEJpdHNUb1VpbnQodmVjNChyZXMsIDAu
MCwgMC4wLCAxLjApKSc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmcmFnbWVudFBh
cmFtc1snQ0FTVF9UT19PVVRQVVQnXSA9IHRoaXMubV9kYXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9WRUM0ID8gJ3JlcycgOgorICAgICAgICAgICAgICAgIHRoaXMubV9k
YXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzID8gJ3ZlYzQocmVz
LCAxLjApJyA6CisgICAgICAgICAgICAgICAgdGhpcy5tX2RhdGFUeXBlID09PSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIgPyAndmVjNChyZXMsIDAuMCwgMS4wKScgOgorICAgICAg
ICAgICAgICAgICd2ZWM0KHJlcywgMC4wLCAwLjAsIDEuMCknOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5tX2ZyYWdtZW50U3JjID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShmcmFn
bWVudFRtcGwsIGZyYWdtZW50UGFyYW1zKTsKKworICAgICAgICAvLyBUZXh0dXJlIHNpemUgbWF0
Y2hlcyB2aWV3cG9ydCBhbmQgbmVhcmVzdCBzYW1wbGluZyBpcyB1c2VkLiBUaHVzIHRleHR1cmUg
c2FtcGxpbmcKKyAgICAgICAgLy8gaXMgZXF1YWwgdG8ganVzdCBpbnRlcnBvbGF0aW5nIHRoZSB0
ZXh0dXJlIHZhbHVlIHJhbmdlLgorCisgICAgICAgIC8vIERldGVybWluZSB2YWx1ZSByYW5nZSBm
b3IgdGV4dHVyZS4KKworICAgICAgICBzd2l0Y2ggKHRoaXMubV9wcmVjaXNpb24pIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQOgorICAg
ICAgICAgICAgICAgIHRoaXMubV90ZXhWYWx1ZU1pbiA9IFstOTcuLCAwLjIsIDcxLiwgNzQuXTsK
KyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4VmFsdWVNYXggPSBbLTEzLjIsIC03Ny4sIDQ0Liwg
NzYuXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbHVTaGFk
ZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUDoKKyAgICAgICAgICAgICAgICB0aGlz
Lm1fdGV4VmFsdWVNaW4gPSBbLTM3LjAsIDQ3LiwgLTcuLCAwLjBdOworICAgICAgICAgICAgICAg
IHRoaXMubV90ZXhWYWx1ZU1heCA9IFstMS4wLCAxMi4sIDcuLCAxOS5dOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9MT1dQOgorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhWYWx1ZU1pbiA9IFswLjAs
IC0xLjAsIDAuMCwgMS4wXTsKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4VmFsdWVNYXggPSBb
MS4wLCAxLjAsIC0xLjAsIC0xLjBdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihmYWxzZSwgJ1By
ZWNpc2lvbiBub3Qgc3VwcG9ydGVkOicgKyB0aGlzLm1fcHJlY2lzaW9uKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIExvd3AgYW5kIG1lZGl1bXAgY2FzZXMgdXNlIFJHQkExNkYgZm9ybWF0LCB3
aGlsZSBoaWdocCB1c2VzIFJHQkEzMkYuCisgICAgICAgIHZpZXdwb3J0U2l6ZSA9IHRoaXMuZ2V0
Vmlld3BvcnRTaXplKCk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV90ZXh0dXJl
LCAnVGV4dHVyZSBub3QgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5tX3RleHR1
cmUgPSBnbHVUZXh0dXJlLnRleHR1cmUyREZyb21JbnRlcm5hbEZvcm1hdChnbCwgdGhpcy5tX3By
ZWNpc2lvbiA9PT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQID8gZ2wu
UkdCQTMyRiA6IGdsLlJHQkExNkYsIHZpZXdwb3J0U2l6ZVswXSwgdmlld3BvcnRTaXplWzFdKTsK
KyAgICAgICAgdGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmFsbG9jTGV2ZWwoMCk7CisK
KyAgICAgICAgLy8gVGV4dHVyZSBjb29yZGluYXRlcworICAgICAgICB0aGlzLm1fY29vcmRNaW4g
PSBbMC4wLCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgdGhpcy5tX2Nvb3JkTWF4ID0gWzEuMCwg
MS4wLCAxLjAsIDEuMF07CisKKyAgICAgICAgLy8gRmlsbCB3aXRoIGdyYWRpZW50cy4KKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgbGV2ZWww
ID0gdGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdldExldmVsKDApOworICAgICAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IGxldmVsMC5nZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAgICAg
ICBmb3IgKHZhciB4ID0gMDsgeCA8IGxldmVsMC5nZXRXaWR0aCgpOyB4KyspIHsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHhmID0gKHggKyAwLjUpIC8gbGV2ZWww
LmdldFdpZHRoKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5
ZiA9ICh5ICsgMC41KSAvIGxldmVsMC5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzID0gW3hmLCB5ZiwgKHhmICsgeWYpIC8gMi4w
LCAxLjAgLSAoeGYgKyB5ZikgLyAyLjBdOworCisgICAgICAgICAgICAgICAgbGV2ZWwwLnNldFBp
eGVsKGRlTWF0aC5hZGQodGhpcy5tX3RleFZhbHVlTWluLCBkZU1hdGgubXVsdGlwbHkoZGVNYXRo
LnN1YnRyYWN0KHRoaXMubV90ZXhWYWx1ZU1heCwgdGhpcy5tX3RleFZhbHVlTWluKSwgcykpLCB4
LCB5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubV90ZXh0dXJl
LnVwbG9hZCgpOworCisgICAgICAgIGlmICh0aGlzLm1fc3VyZmFjZVR5cGUgPT09IGVzM2ZTaGFk
ZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLkZMT0FUX0ZCTykgeworICAgICAgICAgICAgLy8g
Tm8gc2NhbGUgb3IgYmlhcyB1c2VkIGZvciBhY2N1cmFjeS4KKyAgICAgICAgICAgIHRoaXMubV9k
ZXJpdlNjYWxlID0gWzEuMCwgMS4wLCAxLjAsIDEuMF07CisgICAgICAgICAgICB0aGlzLm1fZGVy
aXZCaWFzID0gWzAuMCwgMC4wLCAwLjAsIDAuMF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBDb21wdXRlIHNjYWxlIC0gYmlhcyB0aGF0IG5vcm1hbGl6ZXMgdG8gMC4uMSByYW5n
ZS4KKyAgICAgICAgICAgIHZpZXdwb3J0U2l6ZSA9IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHcgPSB2aWV3cG9ydFNpemVbMF07
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGggPSB2aWV3cG9ydFNpemVb
MV07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkeCA9IGRl
TWF0aC5kaXZpZGUoZGVNYXRoLnN1YnRyYWN0KHRoaXMubV90ZXhWYWx1ZU1heCwgdGhpcy5tX3Rl
eFZhbHVlTWluKSwgW3csIHcsIHcgKiAwLjUsIC13ICogMC41XSk7CisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkeSA9IGRlTWF0aC5kaXZpZGUoZGVNYXRoLnN1
YnRyYWN0KHRoaXMubV90ZXhWYWx1ZU1heCwgdGhpcy5tX3RleFZhbHVlTWluKSwgW2gsIGgsIGgg
KiAwLjUsIC1oICogMC41XSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy5tX2Z1bmMpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2YXRlRnVu
Yy5ERkRYOgorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZGVyaXZTY2FsZSA9IGRlTWF0aC5k
aXZpZGUoWzAuNSwgMC41LCAwLjUsIDAuNV0sIGR4KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2
YXRlRnVuYy5ERkRZOgorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZGVyaXZTY2FsZSA9IGRl
TWF0aC5kaXZpZGUoWzAuNSwgMC41LCAwLjUsIDAuNV0sIGR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3Rz
LkRlcml2YXRlRnVuYy5GV0lEVEg6CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9kZXJpdlNj
YWxlID0gZGVNYXRoLmRpdmlkZShbMC41LCAwLjUsIDAuNSwgMC41XSwgZGVNYXRoLmFkZChkZU1h
dGguYWJzKGR4KSwgZGVNYXRoLmFicyhkeSkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0Rlcml2YXRlIEZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQ6ICcgKyB0aGlzLm1fZnVu
Yyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMubV9kZXJpdkJpYXMgPSBbMC4w
LCAwLjAsIDAuMCwgMC4wXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICAgICAqLworICAgIGVzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLlRleHR1cmVEZXJpdmF0ZUNhc2UucHJvdG90eXBlLnNldHVwUmVuZGVyU3RhdGUg
PSBmdW5jdGlvbihwcm9ncmFtKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
dGV4VW5pdCA9IDE7CisKKyAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCArIHRl
eFVuaXQpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0aGlzLm1fdGV4
dHVyZS5nZXRHTFRleHR1cmUoKSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJF
U1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisKKyAgICAg
ICAgZ2wudW5pZm9ybTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9zYW1wbGVy
JyksIHRleFVuaXQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IHJlc3VsdAorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Q
aXhlbEJ1ZmZlckFjY2Vzc30gZXJyb3JNYXNrCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5UZXh0dXJlRGVyaXZhdGVDYXNlLnBy
b3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbihyZXN1bHQsIGVycm9yTWFzaykgeworICAgICAgICAv
LyBcbm90ZSBFZGdlcyBhcmUgaWdub3JlZCBpbiBjb21wYXJpc29uCisgICAgICAgIGlmIChyZXN1
bHQuZ2V0V2lkdGgoKSA8IDIgfHwgcmVzdWx0LmdldEhlaWdodCgpIDwgMikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcignVG9vIHNtYWxsIHZpZXdwb3J0Jyk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgY29tcGFyZUFyZWEgPSB0
Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdpb24ocmVzdWx0LCAxLCAxLCAwLCByZXN1bHQuZ2V0V2lk
dGgoKSAtIDIsIHJlc3VsdC5nZXRIZWlnaHQoKSAtIDIsIDEpOworICAgICAgICAvKiogQHR5cGUg
e3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9ICovIHZhciBtYXNrQXJlYSA9IHRjdVRleHR1
cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1hc2ssIDEsIDEsIDAsIGVycm9yTWFzay5nZXRXaWR0
aCgpIC0gMiwgZXJyb3JNYXNrLmdldEhlaWdodCgpIC0gMiwgMSk7CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHhTY2FsZSA9IFsxLjAsIDAuMCwgMC41LCAtMC41XTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgeVNjYWxlID0gWzAuMCwg
MS4wLCAwLjUsIC0wLjVdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHcgPSBy
ZXN1bHQuZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoID0g
cmVzdWx0LmdldEhlaWdodCgpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHN1cmZhY2VUaHJlc2hvbGQgPSBkZU1hdGguZGl2aWRlKHRoaXMuZ2V0U3VyZmFjZVRo
cmVzaG9sZCgpLCBkZU1hdGguYWJzKHRoaXMubV9kZXJpdlNjYWxlKSk7CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJlZmVyZW5jZTsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGhyZXNob2xkOworICAgICAgICBpZiAodGhpcy5tX2Z1
bmMgPT0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkRGRFggfHwgdGhpcy5t
X2Z1bmMgPT0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuRGVyaXZhdGVGdW5jLkRGRFkpIHsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzWCA9IHRoaXMubV9mdW5jID09
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2YXRlRnVuYy5ERkRYOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaXYgPSBpc1ggPyB3IDogaDsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNjYWxlID0gaXNYID8geFNjYWxlIDog
eVNjYWxlOworICAgICAgICAgICAgcmVmZXJlbmNlID0gZGVNYXRoLm11bHRpcGx5KGRlTWF0aC5z
Y2FsZShkZU1hdGguc3VidHJhY3QodGhpcy5tX3RleFZhbHVlTWF4LCB0aGlzLm1fdGV4VmFsdWVN
aW4pLCAxIC8gZGl2KSwgc2NhbGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB2YXIgb3BUaHJlc2hvbGQgPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXREZXJp
dmF0ZVRocmVzaG9sZCh0aGlzLm1fcHJlY2lzaW9uLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX3Rl
eFZhbHVlTWluLCBzY2FsZSksIGRlTWF0aC5tdWx0aXBseSh0aGlzLm1fdGV4VmFsdWVNYXgsIHNj
YWxlKSwgcmVmZXJlbmNlKTsKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IGRlTWF0aC5tYXgoc3Vy
ZmFjZVRocmVzaG9sZCwgb3BUaHJlc2hvbGQpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnVmVyaWZ5aW5nIHJlc3VsdCBpbWFnZS5cbicrCisgICAgICAgICAgICAgICAgJ1x0
VmFsaWQgZGVyaXZhdGl2ZSBpcyAnICsgcmVmZXJlbmNlICsgJyB3aXRoIHRocmVzaG9sZCAnICsg
dGhyZXNob2xkKTsKKworICAgICAgICAgICAgLy8gc2hvcnQgY2lyY3VpdCBpZiByZXN1bHQgaXMg
c3RyaWN0bHkgd2l0aGluIHRoZSBub3JtYWwgdmFsdWUgZXJyb3IgYm91bmRzLgorICAgICAgICAg
ICAgLy8gVGhpcyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBzaWduaWZpY2FudGx5LgorICAgICAgICAg
ICAgaWYgKGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLnZlcmlmeUNvbnN0YW50RGVyaXZhdGUoY29t
cGFyZUFyZWEsIG1hc2tBcmVhLCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlLCB0aHJlc2hvbGQsIHRoaXMubV9kZXJpdlNjYWxlLCB0aGlzLm1fZGVyaXZCaWFzLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlZlcmlmaWNhdGlvbkxvZ2dp
bmcuTE9HX05PVEhJTkcpKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdObyBpbmNvcnJlY3QgZGVyaXZhdGl2ZXMgZm91bmQsIHJlc3VsdCB2YWxpZC4nKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBzb21lIHBpeGVscyBleGNlZWQgZXJyb3IgYm91bmRzIGNhbGN1bGF0ZWQgZm9yIG5vcm1h
bCB2YWx1ZXMuIFZlcmlmeSB0aGF0IHRoZXNlCisgICAgICAgICAgICAvLyBwb3RlbnRpYWxseSBp
bnZhbGlkIHBpeGVscyBhcmUgaW4gZmFjdCB2YWxpZCBkdWUgdG8gKGZvciBleGFtcGxlKSBzdWJu
b3JtIGZsdXNoaW5nLgorCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnSW5pdGlh
bCB2ZXJpZmljYXRpb24gZmFpbGVkLCB2ZXJpZnlpbmcgaW1hZ2UgYnkgY2FsY3VsYXRpbmcgYWNj
dXJhdGUgZXJyb3IgYm91bmRzIGZvciBlYWNoIHJlc3VsdCBwaXhlbC5cbicgKworICAgICAgICAg
ICAgICAgICdcdFZlcmlmeWluZyBlYWNoIHJlc3VsdCBkZXJpdmF0aXZlIGlzIHdpdGhpbiBpdHMg
cmFuZ2Ugb2YgbGVnYWwgcmVzdWx0IHZhbHVlcy4nKTsKKworICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmFsdWVSYW1wID0gZGVNYXRoLnN1YnRyYWN0KHRoaXMu
bV90ZXhWYWx1ZU1heCwgdGhpcy5tX3RleFZhbHVlTWluKTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuTGluZWFyMkRGdW5jdGlvbkV2YWx1YXRvcn0gKi8g
dmFyIGZ1bmN0aW9uXyA9IG5ldyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5MaW5lYXIyREZ1bmN0
aW9uRXZhbHVhdG9yKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uXy5tYXRyaXguc2V0Um93KDAs
IFt2YWx1ZVJhbXBbMF0gLyB3LCAwLjAsIHRoaXMubV90ZXhWYWx1ZU1pblswXV0pOworICAgICAg
ICAgICAgZnVuY3Rpb25fLm1hdHJpeC5zZXRSb3coMSwgWzAuMCwgdmFsdWVSYW1wWzFdIC8gaCwg
dGhpcy5tX3RleFZhbHVlTWluWzFdXSk7CisgICAgICAgICAgICBmdW5jdGlvbl8ubWF0cml4LnNl
dFJvdygyLCBkZU1hdGguc2NhbGUoW3ZhbHVlUmFtcFsyXSAvIHcsIHZhbHVlUmFtcFsyXSAvIGgs
IHRoaXMubV90ZXhWYWx1ZU1pblsyXSArIHRoaXMubV90ZXhWYWx1ZU1pblsyXV0sIDEgLyAyLjAp
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uXy5tYXRyaXguc2V0Um93KDMsIGRlTWF0aC5zY2FsZShb
LXZhbHVlUmFtcFszXSAvIHcsIC12YWx1ZVJhbXBbM10gLyBoLCB0aGlzLm1fdGV4VmFsdWVNYXhb
M10gKyB0aGlzLm1fdGV4VmFsdWVNYXhbM11dLCAxIC8gMi4wKSk7CisKKyAgICAgICAgICAgIHJl
dHVybiBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5yZXZlcmlmeUNvbnN0YW50RGVyaXZhdGVXaXRo
Rmx1c2hSZWxheGF0aW9ucyhjb21wYXJlQXJlYSwgbWFza0FyZWEsIHRoaXMubV9kYXRhVHlwZSwg
dGhpcy5tX3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICB0aGlzLm1fZGVyaXZTY2FsZSwgdGhp
cy5tX2Rlcml2Qmlhcywgc3VyZmFjZVRocmVzaG9sZCwgdGhpcy5tX2Z1bmMsIGZ1bmN0aW9uXyk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHRoaXMubV9m
dW5jID09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRlcml2YXRlRnVuYy5GV0lEVEgsICdFeHBl
Y3RlZCBEZXJpdmF0ZSBGdW5jdGlvbiBGV0lEVEgnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkeCA9IGRlTWF0aC5tdWx0aXBseShk
ZU1hdGguc2NhbGUoZGVNYXRoLnN1YnRyYWN0KHRoaXMubV90ZXhWYWx1ZU1heCwgdGhpcy5tX3Rl
eFZhbHVlTWluKSwgMSAvIHcpLCB4U2NhbGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgZHkgPSBkZU1hdGgubXVsdGlwbHkoZGVNYXRoLnNjYWxlKGRlTWF0
aC5zdWJ0cmFjdCh0aGlzLm1fdGV4VmFsdWVNYXgsIHRoaXMubV90ZXhWYWx1ZU1pbiksIDEgLyBo
KSwgeVNjYWxlKTsKKyAgICAgICAgICAgIHJlZmVyZW5jZSA9IGRlTWF0aC5hZGQoZGVNYXRoLmFi
cyhkeCksIGRlTWF0aC5hYnMoZHkpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGR4VGhyZXNob2xkID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0RGVy
aXZhdGVUaHJlc2hvbGQodGhpcy5tX3ByZWNpc2lvbiwgZGVNYXRoLm11bHRpcGx5KHRoaXMubV90
ZXhWYWx1ZU1pbiwgeFNjYWxlKSwgZGVNYXRoLm11bHRpcGx5KHRoaXMubV90ZXhWYWx1ZU1heCwg
eFNjYWxlKSwgZHgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgZHlUaHJlc2hvbGQgPSBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5nZXREZXJpdmF0ZVRocmVz
aG9sZCh0aGlzLm1fcHJlY2lzaW9uLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX3RleFZhbHVlTWlu
LCB5U2NhbGUpLCBkZU1hdGgubXVsdGlwbHkodGhpcy5tX3RleFZhbHVlTWF4LCB5U2NhbGUpLCBk
eSk7CisgICAgICAgICAgICB0aHJlc2hvbGQgPSBkZU1hdGgubWF4KHN1cmZhY2VUaHJlc2hvbGQs
IGRlTWF0aC5tYXgoZHhUaHJlc2hvbGQsIGR5VGhyZXNob2xkKSk7CisKKyAgICAgICAgICAgIHJl
dHVybiBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy52ZXJpZnlDb25zdGFudERlcml2YXRlKGNvbXBh
cmVBcmVhLCBtYXNrQXJlYSwgdGhpcy5tX2RhdGFUeXBlLAorICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZSwgdGhyZXNob2xkLCB0aGlzLm1fZGVyaXZTY2FsZSwgdGhpcy5tX2Rlcml2Qmlhcyk7Cisg
ICAgICAgIH07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5TaGFkZXJEZXJpdmF0ZVRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2Rlcml2YXRlJywgJ0Rlcml2YXRlIEZ1
bmN0aW9uIFRlc3RzJyk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlNo
YWRlckRlcml2YXRlVGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlNoYWRlckRl
cml2YXRlVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckRlcml2YXRlVGVz
dHMuU2hhZGVyRGVyaXZhdGVUZXN0cworCisgICAgLyoqCisgICAgICogQHN0cnVjdAorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFt
IHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5EZXJpdmF0ZUZ1bmN9IGZ1bmMKKyAgICAgKiBAcGFy
YW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlXworICAgICAqIEBwYXJhbSB7Z2x1
U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbl8KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
RGVyaXZhdGVUZXN0cy5GdW5jdGlvblNwZWMgPSBmdW5jdGlvbihuYW1lLCBmdW5jLCBkYXRhVHlw
ZV8sIHByZWNpc2lvbl8pIHsKKyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhp
cy5mdW5jdGlvbl8gPSBmdW5jOworICAgICAgICB0aGlzLmRhdGFUeXBlID0gZGF0YVR5cGVfOwor
ICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHByZWNpc2lvbl87CisgICAgfTsKKworICAgIGVzM2ZT
aGFkZXJEZXJpdmF0ZVRlc3RzLlNoYWRlckRlcml2YXRlVGVzdHMucHJvdG90eXBlLmluaXQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRlc3RHcm91cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50
ZXN0Q2FzZXM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAc3RydWN0CisgICAgICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNv
dXJjZQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIExpbmVhckRlcml2YXRlQ2FzZSA9IGZ1bmN0
aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBzb3VyY2UpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgfTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PExpbmVhckRlcml2YXRlQ2FzZT59ICovCisgICAgICAgIHZh
ciBzX2xpbmVhckRlcml2YXRlQ2FzZXMgPSBbCisgICAgICAgICAgICBuZXcgTGluZWFyRGVyaXZh
dGVDYXNlKAorICAgICAgICAgICAgICAgICdsaW5lYXInLAorICAgICAgICAgICAgICAgICdCYXNp
YyBkZXJpdmF0ZSBvZiBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgYXJndW1lbnQnLAorICAgICAgICAg
ICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdpbiAke1BSRUNJ
U0lPTn0gJHtEQVRBVFlQRX0gdl9jb29yZDtcbicgKworICAgICAgICAgICAgICAgICdsYXlvdXQo
bG9jYXRpb24gPSAwKSBvdXQgJHtPVVRQVVRfUFJFQ30gJHtPVVRQVVRfVFlQRX0gb19jb2xvcjtc
bicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSB1
X3NjYWxlO1xuJyArCisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVDSVNJT059ICR7REFU
QVRZUEV9IHVfYmlhcztcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4n
ICsKKyAgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAgJyAke1BSRUNJU0lP
Tn0gJHtEQVRBVFlQRX0gcmVzID0gJHtGVU5DfSh2X2Nvb3JkKSAqIHVfc2NhbGUgKyB1X2JpYXM7
XG4nICsKKyAgICAgICAgICAgICAgICAnIG9fY29sb3IgPSAke0NBU1RfVE9fT1VUUFVUfTtcbicg
KworICAgICAgICAgICAgICAgICd9XG4nKSwKKyAgICAgICAgICAgIG5ldyBMaW5lYXJEZXJpdmF0
ZUNhc2UoCisgICAgICAgICAgICAgICAgJ2luX2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAn
RGVyaXZhdGUgb2YgbGluZWFyIGZ1bmN0aW9uIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAn
I3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAnaW4gJHtQUkVDSVNJT059ICR7
REFUQVRZUEV9IHZfY29vcmQ7XG4nICsKKyAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9u
ID0gMCkgb3V0ICR7T1VUUFVUX1BSRUN9ICR7T1VUUFVUX1RZUEV9IG9fY29sb3I7XG4nICsKKyAg
ICAgICAgICAgICAgICAndW5pZm9ybSAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gdV9zY2FsZTtc
bicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSB1
X2JpYXM7XG4nICsKKyAgICAgICAgICAgICAgICAnXG4nICsKKyAgICAgICAgICAgICAgICAnJHtQ
UkVDSVNJT059ICR7REFUQVRZUEV9IGNvbXB1dGVSZXMgKCR7UFJFQ0lTSU9OfSAke0RBVEFUWVBF
fSB2YWx1ZSlcbicgKworICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAn
IHJldHVybiAke0ZVTkN9KHZfY29vcmQpICogdV9zY2FsZSArIHVfYmlhcztcbicgKworICAgICAg
ICAgICAgICAgICd9XG4nICsKKyAgICAgICAgICAgICAgICAnXG4nICsKKyAgICAgICAgICAgICAg
ICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgJ3tcbicgKworICAgICAg
ICAgICAgICAgICcgJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHJlcyA9IGNvbXB1dGVSZXModl9j
b29yZCk7XG4nICsKKyAgICAgICAgICAgICAgICAnIG9fY29sb3IgPSAke0NBU1RfVE9fT1VUUFVU
fTtcbicgKworICAgICAgICAgICAgICAgICd9XG4nKSwKKyAgICAgICAgICAgIG5ldyBMaW5lYXJE
ZXJpdmF0ZUNhc2UoCisgICAgICAgICAgICAgICAgJ3N0YXRpY19pZicsCisgICAgICAgICAgICAg
ICAgJ0Rlcml2YXRlIG9mIGxpbmVhcmx5IGludGVycG9sYXRlZCB2YWx1ZSBpbiBzdGF0aWMgaWYn
LAorICAgICAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAg
ICdpbiAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gdl9jb29yZDtcbicgKworICAgICAgICAgICAg
ICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgJHtPVVRQVVRfUFJFQ30gJHtPVVRQVVRfVFlQ
RX0gb19jb2xvcjtcbicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAk
e0RBVEFUWVBFfSB1X3NjYWxlO1xuJyArCisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVD
SVNJT059ICR7REFUQVRZUEV9IHVfYmlhcztcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAg
JyAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gcmVzO1xuJyArCisgICAgICAgICAgICAgICAgJyBp
ZiAoZmFsc2UpXG4nICsKKyAgICAgICAgICAgICAgICAnIHJlcyA9ICR7RlVOQ30oLXZfY29vcmQp
ICogdV9zY2FsZSArIHVfYmlhcztcbicgKworICAgICAgICAgICAgICAgICcgZWxzZVxuJyArCisg
ICAgICAgICAgICAgICAgJyByZXMgPSAke0ZVTkN9KHZfY29vcmQpICogdV9zY2FsZSArIHVfYmlh
cztcbicgKworICAgICAgICAgICAgICAgICcgb19jb2xvciA9ICR7Q0FTVF9UT19PVVRQVVR9O1xu
JyArCisgICAgICAgICAgICAgICAgJ31cbicpLAorICAgICAgICAgICAgbmV3IExpbmVhckRlcml2
YXRlQ2FzZSgKKyAgICAgICAgICAgICAgICAnc3RhdGljX2xvb3AnLAorICAgICAgICAgICAgICAg
ICdEZXJpdmF0ZSBvZiBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgdmFsdWUgaW4gc3RhdGljIGxvb3An
LAorICAgICAgICAgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAg
ICdpbiAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gdl9jb29yZDtcbicgKworICAgICAgICAgICAg
ICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgJHtPVVRQVVRfUFJFQ30gJHtPVVRQVVRfVFlQ
RX0gb19jb2xvcjtcbicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAk
e0RBVEFUWVBFfSB1X3NjYWxlO1xuJyArCisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVD
SVNJT059ICR7REFUQVRZUEV9IHVfYmlhcztcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAg
JyAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gcmVzID0gJHtEQVRBVFlQRX0oMC4wKTtcbicgKwor
ICAgICAgICAgICAgICAgICcgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspXG4nICsKKyAgICAg
ICAgICAgICAgICAnIHJlcyArPSAke0ZVTkN9KHZfY29vcmQgKiBmbG9hdChpKSk7XG4nICsKKyAg
ICAgICAgICAgICAgICAnIHJlcyA9IHJlcyAqIHVfc2NhbGUgKyB1X2JpYXM7XG4nICsKKyAgICAg
ICAgICAgICAgICAnIG9fY29sb3IgPSAke0NBU1RfVE9fT1VUUFVUfTtcbicgKworICAgICAgICAg
ICAgICAgICd9XG4nKSwKKyAgICAgICAgICAgIG5ldyBMaW5lYXJEZXJpdmF0ZUNhc2UoCisgICAg
ICAgICAgICAgICAgJ3N0YXRpY19zd2l0Y2gnLAorICAgICAgICAgICAgICAgICdEZXJpdmF0ZSBv
ZiBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgdmFsdWUgaW4gc3RhdGljIHN3aXRjaCcsCisgICAgICAg
ICAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2luICR7UFJF
Q0lTSU9OfSAke0RBVEFUWVBFfSB2X2Nvb3JkO1xuJyArCisgICAgICAgICAgICAgICAgJ2xheW91
dChsb2NhdGlvbiA9IDApIG91dCAke09VVFBVVF9QUkVDfSAke09VVFBVVF9UWVBFfSBvX2NvbG9y
O1xuJyArCisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVDSVNJT059ICR7REFUQVRZUEV9
IHVfc2NhbGU7XG4nICsKKyAgICAgICAgICAgICAgICAndW5pZm9ybSAke1BSRUNJU0lPTn0gJHtE
QVRBVFlQRX0gdV9iaWFzO1xuJyArCisgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClc
bicgKworICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAnICR7UFJFQ0lT
SU9OfSAke0RBVEFUWVBFfSByZXM7XG4nICsKKyAgICAgICAgICAgICAgICAnIHN3aXRjaCAoMSlc
bicgKworICAgICAgICAgICAgICAgICcge1xuJyArCisgICAgICAgICAgICAgICAgJyBjYXNlIDA6
IHJlcyA9ICR7RlVOQ30oLXZfY29vcmQpICogdV9zY2FsZSArIHVfYmlhczsgYnJlYWs7XG4nICsK
KyAgICAgICAgICAgICAgICAnIGNhc2UgMTogcmVzID0gJHtGVU5DfSh2X2Nvb3JkKSAqIHVfc2Nh
bGUgKyB1X2JpYXM7IGJyZWFrO1xuJyArCisgICAgICAgICAgICAgICAgJyB9XG4nICsKKyAgICAg
ICAgICAgICAgICAnIG9fY29sb3IgPSAke0NBU1RfVE9fT1VUUFVUfTtcbicgKworICAgICAgICAg
ICAgICAgICd9XG4nKSwKKyAgICAgICAgICAgIG5ldyBMaW5lYXJEZXJpdmF0ZUNhc2UoCisgICAg
ICAgICAgICAgICAgJ3VuaWZvcm1faWYnLAorICAgICAgICAgICAgICAgICdEZXJpdmF0ZSBvZiBs
aW5lYXJseSBpbnRlcnBvbGF0ZWQgdmFsdWUgaW4gdW5pZm9ybSBpZicsCisgICAgICAgICAgICAg
ICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2luICR7UFJFQ0lTSU9O
fSAke0RBVEFUWVBFfSB2X2Nvb3JkO1xuJyArCisgICAgICAgICAgICAgICAgJ2xheW91dChsb2Nh
dGlvbiA9IDApIG91dCAke09VVFBVVF9QUkVDfSAke09VVFBVVF9UWVBFfSBvX2NvbG9yO1xuJyAr
CisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHVfc2Nh
bGU7XG4nICsKKyAgICAgICAgICAgICAgICAndW5pZm9ybSAke1BSRUNJU0lPTn0gJHtEQVRBVFlQ
RX0gdV9iaWFzO1xuJyArCisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gYm9vbCB1Yl90cnVlO1xu
JyArCisgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAg
ICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAnICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSBy
ZXM7XG4nICsKKyAgICAgICAgICAgICAgICAnIGlmICh1Yl90cnVlKVxuJyArCisgICAgICAgICAg
ICAgICAgJyByZXMgPSAke0ZVTkN9KHZfY29vcmQpICogdV9zY2FsZSArIHVfYmlhcztcbicgKwor
ICAgICAgICAgICAgICAgICcgZWxzZVxuJyArCisgICAgICAgICAgICAgICAgJyByZXMgPSAke0ZV
TkN9KC12X2Nvb3JkKSAqIHVfc2NhbGUgKyB1X2JpYXM7XG4nICsKKyAgICAgICAgICAgICAgICAn
IG9fY29sb3IgPSAke0NBU1RfVE9fT1VUUFVUfTtcbicgKworICAgICAgICAgICAgICAgICd9XG4n
KSwKKyAgICAgICAgICAgIG5ldyBMaW5lYXJEZXJpdmF0ZUNhc2UoCisgICAgICAgICAgICAgICAg
J3VuaWZvcm1fbG9vcCcsCisgICAgICAgICAgICAgICAgJ0Rlcml2YXRlIG9mIGxpbmVhcmx5IGlu
dGVycG9sYXRlZCB2YWx1ZSBpbiB1bmlmb3JtIGxvb3AnLAorICAgICAgICAgICAgICAgICcjdmVy
c2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdpbiAke1BSRUNJU0lPTn0gJHtEQVRB
VFlQRX0gdl9jb29yZDtcbicgKworICAgICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgJHtPVVRQVVRfUFJFQ30gJHtPVVRQVVRfVFlQRX0gb19jb2xvcjtcbicgKworICAgICAg
ICAgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSB1X3NjYWxlO1xuJyAr
CisgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHVfYmlh
cztcbicgKworICAgICAgICAgICAgICAgICd1bmlmb3JtIGludCB1aV90d287XG4nICsKKyAgICAg
ICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgJ3tcbicg
KworICAgICAgICAgICAgICAgICcgJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHJlcyA9ICR7REFU
QVRZUEV9KDAuMCk7XG4nICsKKyAgICAgICAgICAgICAgICAnIGZvciAoaW50IGkgPSAwOyBpIDwg
dWlfdHdvOyBpKyspXG4nICsKKyAgICAgICAgICAgICAgICAnIHJlcyArPSAke0ZVTkN9KHZfY29v
cmQgKiBmbG9hdChpKSk7XG4nICsKKyAgICAgICAgICAgICAgICAnIHJlcyA9IHJlcyAqIHVfc2Nh
bGUgKyB1X2JpYXM7XG4nICsKKyAgICAgICAgICAgICAgICAnIG9fY29sb3IgPSAke0NBU1RfVE9f
T1VUUFVUfTtcbicgKworICAgICAgICAgICAgICAgICd9XG4nKSwKKyAgICAgICAgICAgIG5ldyBM
aW5lYXJEZXJpdmF0ZUNhc2UoCisgICAgICAgICAgICAgICAgJ3VuaWZvcm1fc3dpdGNoJywKKyAg
ICAgICAgICAgICAgICAnRGVyaXZhdGUgb2YgbGluZWFybHkgaW50ZXJwb2xhdGVkIHZhbHVlIGlu
IHVuaWZvcm0gc3dpdGNoJywKKyAgICAgICAgICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsK
KyAgICAgICAgICAgICAgICAnaW4gJHtQUkVDSVNJT059ICR7REFUQVRZUEV9IHZfY29vcmQ7XG4n
ICsKKyAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0ICR7T1VUUFVUX1BS
RUN9ICR7T1VUUFVUX1RZUEV9IG9fY29sb3I7XG4nICsKKyAgICAgICAgICAgICAgICAndW5pZm9y
bSAke1BSRUNJU0lPTn0gJHtEQVRBVFlQRX0gdV9zY2FsZTtcbicgKworICAgICAgICAgICAgICAg
ICd1bmlmb3JtICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSB1X2JpYXM7XG4nICsKKyAgICAgICAg
ICAgICAgICAndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisgICAgICAgICAgICAgICAgJ3ZvaWQg
bWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAg
ICAnICR7UFJFQ0lTSU9OfSAke0RBVEFUWVBFfSByZXM7XG4nICsKKyAgICAgICAgICAgICAgICAn
IHN3aXRjaCAodWlfb25lKVxuJyArCisgICAgICAgICAgICAgICAgJyB7XG4nICsKKyAgICAgICAg
ICAgICAgICAnIGNhc2UgMDogcmVzID0gJHtGVU5DfSgtdl9jb29yZCkgKiB1X3NjYWxlICsgdV9i
aWFzOyBicmVhaztcbicgKworICAgICAgICAgICAgICAgICcgY2FzZSAxOiByZXMgPSAke0ZVTkN9
KHZfY29vcmQpICogdV9zY2FsZSArIHVfYmlhczsgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICAg
ICAnIH1cbicgKworICAgICAgICAgICAgICAgICcgb19jb2xvciA9ICR7Q0FTVF9UT19PVVRQVVR9
O1xuJyArCisgICAgICAgICAgICAgICAgJ31cbicpCisgICAgICAgIF07CisKKyAgICAgICAgLyoq
CisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuU3VyZmFjZVR5cGV9IHN1cmZhY2VUeXBlCisgICAgICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBudW1TYW1wbGVzCisgICAgICAgICAqLworICAgICAgICB2YXIgRmJvQ29uZmlnID0gZnVu
Y3Rpb24obmFtZSwgc3VyZmFjZVR5cGUsIG51bVNhbXBsZXMpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZX0gKi8gdGhpcy5zdXJmYWNlVHlw
ZSA9IHN1cmZhY2VUeXBlOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bnVtU2FtcGxlcyA9IG51bVNhbXBsZXM7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxGYm9Db25maWc+fSAqLyB2YXIgc19mYm9Db25maWdzID0gWworICAgICAgICAgICAg
bmV3IEZib0NvbmZpZygnZmJvJywgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUu
REVGQVVMVF9GUkFNRUJVRkZFUiwgMCksCisgICAgICAgICAgICBuZXcgRmJvQ29uZmlnKCdmYm9f
bXNhYTInLCBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5VTk9STV9GQk8sIDIp
LAorICAgICAgICAgICAgbmV3IEZib0NvbmZpZygnZmJvX21zYWE0JywgZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMuU3VyZmFjZVR5cGUuVU5PUk1fRkJPLCA0KSwKKyAgICAgICAgICAgIG5ldyBGYm9D
b25maWcoJ2Zib19mbG9hdCcsIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLkZM
T0FUX0ZCTywgMCkKKyAgICAgICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHN0cnVj
dAorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGhpbnQKKyAgICAgICAgICovCisgICAgICAg
IHZhciBIaW50ID0gZnVuY3Rpb24obmFtZSwgaGludCkgeworICAgICAgICAgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5oaW50ID0gaGludDsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5
cGUge0FycmF5PEhpbnQ+fSAqLyB2YXIgc19oaW50cyA9IFsKKyAgICAgICAgICAgIG5ldyBIaW50
KCdmYXN0ZXN0JywgZ2wuRkFTVEVTVCksCisgICAgICAgICAgICBuZXcgSGludCgnbmljZXN0Jywg
Z2wuTklDRVNUKQorICAgICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAc3RydWN0
CisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBl
fSBzdXJmYWNlVHlwZQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtU2FtcGxlcworICAg
ICAgICAgKi8KKyAgICAgICAgdmFyIEhpbnRGYm9Db25maWcgPSBmdW5jdGlvbihuYW1lLCBzdXJm
YWNlVHlwZSwgbnVtU2FtcGxlcykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJEZXJp
dmF0ZVRlc3RzLlN1cmZhY2VUeXBlfSAqLyB0aGlzLnN1cmZhY2VUeXBlID0gc3VyZmFjZVR5cGU7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5udW1TYW1wbGVzID0gbnVt
U2FtcGxlczsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PEhpbnRGYm9D
b25maWc+fSAqLyB2YXIgc19oaW50RmJvQ29uZmlncyA9IFsKKyAgICAgICAgICAgIG5ldyBIaW50
RmJvQ29uZmlnKCdkZWZhdWx0JywgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUu
REVGQVVMVF9GUkFNRUJVRkZFUiwgMCksCisgICAgICAgICAgICBuZXcgSGludEZib0NvbmZpZygn
ZmJvX21zYWE0JywgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUuVU5PUk1fRkJP
LCA0KSwKKyAgICAgICAgICAgIG5ldyBIaW50RmJvQ29uZmlnKCdmYm9fZmxvYXQnLCBlczNmU2hh
ZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZS5GTE9BVF9GQk8sIDApCisgICAgICAgIF07CisK
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7ZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGV9IHN1cmZhY2VUeXBlCisgICAgICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBudW1TYW1wbGVzCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBo
aW50CisgICAgICAgICAqLworICAgICAgICB2YXIgVGV4dHVyZUNvbmZpZyA9IGZ1bmN0aW9uKG5h
bWUsIHN1cmZhY2VUeXBlLCBudW1TYW1wbGVzLCBoaW50KSB7CisgICAgICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGV9ICovIHRoaXMuc3VyZmFjZVR5cGUg
PSBzdXJmYWNlVHlwZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm51
bVNhbXBsZXMgPSBudW1TYW1wbGVzOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMuaGludCA9IGhpbnQ7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxUZXh0dXJlQ29uZmlnPn0gKi8gdmFyIHNfdGV4dHVyZUNvbmZpZ3MgPSBbCisgICAgICAgICAg
ICBuZXcgVGV4dHVyZUNvbmZpZygnYmFzaWMnLCBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJm
YWNlVHlwZS5ERUZBVUxUX0ZSQU1FQlVGRkVSLCAwLCBnbC5ET05UX0NBUkUpLAorICAgICAgICAg
ICAgbmV3IFRleHR1cmVDb25maWcoJ21zYWE0JywgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3Vy
ZmFjZVR5cGUuVU5PUk1fRkJPLCA0LCBnbC5ET05UX0NBUkUpLAorICAgICAgICAgICAgbmV3IFRl
eHR1cmVDb25maWcoJ2Zsb2F0X2Zhc3Rlc3QnLCBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJm
YWNlVHlwZS5GTE9BVF9GQk8sIDAsIGdsLkZBU1RFU1QpLAorICAgICAgICAgICAgbmV3IFRleHR1
cmVDb25maWcoJ2Zsb2F0X25pY2VzdCcsIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VU
eXBlLkZMT0FUX0ZCTywgMCwgZ2wuTklDRVNUKQorICAgICAgICBdOworCisgICAgICAgIC8qKiBA
dHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIGRhdGFUeXBlOworICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNvdXJjZTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVT
aGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHByZWNpc2lvbjsKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5TdXJmYWNlVHlwZX0gKi8gdmFyIHN1cmZhY2VUeXBl
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVNhbXBsZXM7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGludDsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBjYXNlTmFtZTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0gKi8gdmFyIGZib0dyb3VwOworCisgICAgICAgIC8vIC5kZmR4LCAuZGZkeSwgLmZ3aWR0
aAorICAgICAgICBmb3IgKHZhciBmdW5jTmR4IGluIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLkRl
cml2YXRlRnVuYykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cy5EZXJpdmF0ZUZ1bmN9ICovIHZhciBmdW5jdGlvbl8gPSBlczNmU2hhZGVyRGVyaXZhdGVU
ZXN0cy5EZXJpdmF0ZUZ1bmNbZnVuY05keF07CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRl
c3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZnVuY3Rpb25Hcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rl
c3QoZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0RGVyaXZhdGVGdW5jQ2FzZU5hbWUoZnVuY3Rp
b25fKSwgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuZ2V0RGVyaXZhdGVGdW5jTmFtZShmdW5jdGlv
bl8pKTsKKyAgICAgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChmdW5jdGlvbkdyb3VwKTsKKwor
ICAgICAgICAgICAgLy8gLmNvbnN0YW50IC0gbm8gcHJlY2lzaW9uIHZhcmlhbnRzLCBjaGVja3Mg
dGhhdCBkZXJpdmF0ZSBvZiBjb25zdGFudCBhcmd1bWVudHMgaXMgMAorICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGNvbnN0YW50R3JvdXAgPSB0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KCdjb25zdGFudCcsICdEZXJpdmF0ZSBvZiBjb25zdGFudCBhcmd1bWVu
dCcpOworICAgICAgICAgICAgZnVuY3Rpb25Hcm91cC5hZGRDaGlsZChjb25zdGFudEdyb3VwKTsK
KworICAgICAgICAgICAgZm9yICh2YXIgdmVjU2l6ZSA9IDE7IHZlY1NpemUgPD0gNDsgdmVjU2l6
ZSsrKSB7CisgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSB2ZWNTaXplID4gMSA/IGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZlYyh2ZWNTaXplKSA6IGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVQ7CisgICAgICAgICAgICAgICAgY29uc3RhbnRHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMuQ29uc3RhbnREZXJpdmF0ZUNhc2UoZ2x1U2hhZGVyVXRpbC5n
ZXREYXRhVHlwZU5hbWUoZGF0YVR5cGUpLCAnJywgZnVuY3Rpb25fLCBkYXRhVHlwZSkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDYXNlcyBiYXNlZCBvbiBMaW5lYXJEZXJpdmF0
ZUNhc2UKKyAgICAgICAgICAgIGZvciAodmFyIGNhc2VOZHggPSAwOyBjYXNlTmR4IDwgc19saW5l
YXJEZXJpdmF0ZUNhc2VzLmxlbmd0aDsgY2FzZU5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGxpbmVhckNhc2VHcm91cCA9IHRj
dVRlc3RDYXNlLm5ld1Rlc3Qoc19saW5lYXJEZXJpdmF0ZUNhc2VzW2Nhc2VOZHhdLm5hbWUsIHNf
bGluZWFyRGVyaXZhdGVDYXNlc1tjYXNlTmR4XS5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICAg
ICAgc291cmNlID0gc19saW5lYXJEZXJpdmF0ZUNhc2VzW2Nhc2VOZHhdLnNvdXJjZTsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbkdyb3VwLmFkZENoaWxkKGxpbmVhckNhc2VHcm91cCk7CisKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciB2ZWNTaXplID0gMTsgdmVjU2l6ZSA8PSA0OyB2ZWNTaXpl
KyspCisgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJlY05keCBpbiBnbHVTaGFkZXJVdGlsLnBy
ZWNpc2lvbikgeworICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSA9IHZlY1NpemUgPiAxID8g
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZUZsb2F0VmVjKHZlY1NpemUpIDogZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb25bcHJlY05keF07CisgICAgICAgICAgICAgICAgICAgIHN1cmZhY2VU
eXBlID0gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUuREVGQVVMVF9GUkFNRUJV
RkZFUjsKKyAgICAgICAgICAgICAgICAgICAgbnVtU2FtcGxlcyA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIGhpbnQgPSBnbC5ET05UX0NBUkU7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNh
c2VOZHggIT09IDAgJiYgcHJlY2lzaW9uID09PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVD
SVNJT05fTE9XUCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIGFz
IGxvd3AgZG9lc24ndCBhY3R1YWxseSBwcm9kdWNlIGFueSBiaXRzIHdoZW4gcmVuZGVyZWQgdG8g
ZGVmYXVsdCBGQi4KKworICAgICAgICAgICAgICAgICAgICBjYXNlTmFtZSA9IGdsdVNoYWRlclV0
aWwuZ2V0RGF0YVR5cGVOYW1lKGRhdGFUeXBlKSArICdfJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJl
Y2lzaW9uTmFtZShwcmVjaXNpb24pOworCisgICAgICAgICAgICAgICAgICAgIGxpbmVhckNhc2VH
cm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuTGluZWFyRGVyaXZhdGVD
YXNlKGNhc2VOYW1lLCAnJywgZnVuY3Rpb25fLCBkYXRhVHlwZSwgcHJlY2lzaW9uLCBoaW50LCBz
dXJmYWNlVHlwZSwgbnVtU2FtcGxlcywgc291cmNlKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGYm8gY2FzZXMKKyAgICAgICAgICAgIGZvciAo
dmFyIGNhc2VOZHggPSAwOyBjYXNlTmR4IDwgc19mYm9Db25maWdzLmxlbmd0aDsgY2FzZU5keCsr
KSB7CisgICAgICAgICAgICAgICAgZmJvR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHNfZmJv
Q29uZmlnc1tjYXNlTmR4XS5uYW1lLCAnRGVyaXZhdGUgdXNhZ2Ugd2hlbiByZW5kZXJpbmcgaW50
byBGQk8nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBzX2xpbmVhckRlcml2YXRlQ2FzZXNb
MF0uc291cmNlOyAvLyB1c2Ugc291cmNlIGZyb20gLmxpbmVhciBncm91cAorICAgICAgICAgICAg
ICAgIHN1cmZhY2VUeXBlID0gc19mYm9Db25maWdzW2Nhc2VOZHhdLnN1cmZhY2VUeXBlOworICAg
ICAgICAgICAgICAgIG51bVNhbXBsZXMgPSBzX2Zib0NvbmZpZ3NbY2FzZU5keF0ubnVtU2FtcGxl
czsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbkdyb3VwLmFkZENoaWxkKGZib0dyb3VwKTsKKwor
ICAgICAgICAgICAgICAgIGZvciAodmFyIHZlY1NpemUgPSAxOyB2ZWNTaXplIDw9IDQ7IHZlY1Np
emUrKykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBwcmVjTmR4IGluIGdsdVNoYWRlclV0aWwu
cHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gdmVjU2l6ZSA+IDEg
PyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRWZWModmVjU2l6ZSkgOiBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUOworICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBnbHVT
aGFkZXJVdGlsLnByZWNpc2lvbltwcmVjTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgaGludCA9
IGdsLkRPTlRfQ0FSRTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3VyZmFjZVR5cGUgIT09
IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLkZMT0FUX0ZCTyAmJiBwcmVjaXNp
b24gPT09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgYXMgbG93cCBkb2Vzbid0IGFjdHVhbGx5
IHByb2R1Y2UgYW55IGJpdHMgd2hlbiByZW5kZXJlZCB0byBVOCBSVC4KKworICAgICAgICAgICAg
ICAgICAgICBjYXNlTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGRhdGFUeXBl
KSArICdfJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShwcmVjaXNpb24pOworCisg
ICAgICAgICAgICAgICAgICAgIGZib0dyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyRGVyaXZh
dGVUZXN0cy5MaW5lYXJEZXJpdmF0ZUNhc2UoY2FzZU5hbWUsICcnLCBmdW5jdGlvbl8sIGRhdGFU
eXBlLCBwcmVjaXNpb24sIGhpbnQsIHN1cmZhY2VUeXBlLCBudW1TYW1wbGVzLCBzb3VyY2UpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIC5mYXN0
ZXN0LCAubmljZXN0CisgICAgICAgICAgICBmb3IgKHZhciBoaW50Q2FzZU5keCA9IDA7IGhpbnRD
YXNlTmR4IDwgc19oaW50cy5sZW5ndGg7IGhpbnRDYXNlTmR4KyspIHsKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgaGludEdyb3VwID0gdGN1
VGVzdENhc2UubmV3VGVzdChzX2hpbnRzW2hpbnRDYXNlTmR4XS5uYW1lLCAnU2hhZGVyIGRlcml2
YXRlIGhpbnRzJyk7CisgICAgICAgICAgICAgICAgc291cmNlID0gc19saW5lYXJEZXJpdmF0ZUNh
c2VzWzBdLnNvdXJjZTsgLy8gdXNlIHNvdXJjZSBmcm9tIC5saW5lYXIgZ3JvdXAKKyAgICAgICAg
ICAgICAgICBoaW50ID0gc19oaW50c1toaW50Q2FzZU5keF0uaGludDsKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbkdyb3VwLmFkZENoaWxkKGhpbnRHcm91cCk7CisKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBmYm9DYXNlTmR4ID0gMDsgZmJvQ2FzZU5keCA8IHNfaGludEZib0NvbmZpZ3MubGVu
Z3RoOyBmYm9DYXNlTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgZmJvR3JvdXAgPSB0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KHNfaGludEZib0NvbmZpZ3NbZmJvQ2FzZU5keF0ubmFtZSwgJycpOwor
ICAgICAgICAgICAgICAgICAgICBzdXJmYWNlVHlwZSA9IHNfaGludEZib0NvbmZpZ3NbZmJvQ2Fz
ZU5keF0uc3VyZmFjZVR5cGU7CisgICAgICAgICAgICAgICAgICAgIG51bVNhbXBsZXMgPSBzX2hp
bnRGYm9Db25maWdzW2Zib0Nhc2VOZHhdLm51bVNhbXBsZXM7CisgICAgICAgICAgICAgICAgICAg
IGhpbnRHcm91cC5hZGRDaGlsZChmYm9Hcm91cCk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgdmVjU2l6ZSA9IDE7IHZlY1NpemUgPD0gNDsgdmVjU2l6ZSsrKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBwcmVjTmR4IGluIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSA9IHZlY1NpemUgPiAxID8gZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZUZsb2F0VmVjKHZlY1NpemUpIDogZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IGdsdVNoYWRlclV0
aWwucHJlY2lzaW9uW3ByZWNOZHhdOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Vy
ZmFjZVR5cGUgIT09IGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLlN1cmZhY2VUeXBlLkZMT0FUX0ZC
TyAmJiBwcmVjaXNpb24gPT09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQ
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIGFzIGxvd3Ag
ZG9lc24ndCBhY3R1YWxseSBwcm9kdWNlIGFueSBiaXRzIHdoZW4gcmVuZGVyZWQgdG8gVTggUlQu
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZU5hbWUoZGF0YVR5cGUpICsgJ18nICsgZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25O
YW1lKHByZWNpc2lvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZib0dyb3VwLmFkZENo
aWxkKG5ldyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5MaW5lYXJEZXJpdmF0ZUNhc2UoY2FzZU5h
bWUsICcnLCBmdW5jdGlvbl8sIGRhdGFUeXBlLCBwcmVjaXNpb24sIGhpbnQsIHN1cmZhY2VUeXBl
LCBudW1TYW1wbGVzLCBzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gLnRleHR1cmUKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciB0ZXh0dXJlR3Jv
dXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCd0ZXh0dXJlJywgJ0Rlcml2YXRlIG9mIHRleHR1cmUg
bG9va3VwIHJlc3VsdCcpOworICAgICAgICAgICAgZnVuY3Rpb25Hcm91cC5hZGRDaGlsZCh0ZXh0
dXJlR3JvdXApOworCisgICAgICAgICAgICBmb3IgKHZhciB0ZXhDYXNlTmR4ID0gMDsgdGV4Q2Fz
ZU5keCA8IHNfdGV4dHVyZUNvbmZpZ3MubGVuZ3RoOyB0ZXhDYXNlTmR4KyspIHsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgY2FzZUdyb3Vw
ID0gdGN1VGVzdENhc2UubmV3VGVzdChzX3RleHR1cmVDb25maWdzW3RleENhc2VOZHhdLm5hbWUs
ICcnKTsKKyAgICAgICAgICAgICAgICBzdXJmYWNlVHlwZSA9IHNfdGV4dHVyZUNvbmZpZ3NbdGV4
Q2FzZU5keF0uc3VyZmFjZVR5cGU7CisgICAgICAgICAgICAgICAgbnVtU2FtcGxlcyA9IHNfdGV4
dHVyZUNvbmZpZ3NbdGV4Q2FzZU5keF0ubnVtU2FtcGxlczsKKyAgICAgICAgICAgICAgICBoaW50
ID0gc190ZXh0dXJlQ29uZmlnc1t0ZXhDYXNlTmR4XS5oaW50OworICAgICAgICAgICAgICAgIHRl
eHR1cmVHcm91cC5hZGRDaGlsZChjYXNlR3JvdXApOworCisgICAgICAgICAgICAgICAgZm9yICh2
YXIgdmVjU2l6ZSA9IDE7IHZlY1NpemUgPD0gNDsgdmVjU2l6ZSsrKQorICAgICAgICAgICAgICAg
IGZvciAodmFyIHByZWNOZHggaW4gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVR5cGUgPSB2ZWNTaXplID4gMSA/IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVGbG9hdFZlYyh2ZWNTaXplKSA6IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ7Cisg
ICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uW3By
ZWNOZHhdOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlVHlwZSAhPT0gZXMzZlNo
YWRlckRlcml2YXRlVGVzdHMuU3VyZmFjZVR5cGUuRkxPQVRfRkJPICYmIHByZWNpc2lvbiA9PT0g
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1ApCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsgLy8gU2tpcCBhcyBsb3dwIGRvZXNuJ3QgYWN0dWFsbHkgcHJvZHVj
ZSBhbnkgYml0cyB3aGVuIHJlbmRlcmVkIHRvIFU4IFJULgorCisgICAgICAgICAgICAgICAgICAg
IGNhc2VOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoZGF0YVR5cGUpICsgJ18n
ICsgZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25OYW1lKHByZWNpc2lvbik7CisKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0
cy5UZXh0dXJlRGVyaXZhdGVDYXNlKGNhc2VOYW1lLCAnJywgZnVuY3Rpb25fLCBkYXRhVHlwZSwg
cHJlY2lzaW9uLCBoaW50LCBzdXJmYWNlVHlwZSwgbnVtU2FtcGxlcykpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBSdW4gdGVzdAorICAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4
dAorICAgICAqLworICAgIGVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNv
bnRleHQsIHJhbmdlKSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAg
VGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVu
bmVyOworICAgICAgICBzdGF0ZS5zZXRSb290KG5ldyBlczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5T
aGFkZXJEZXJpdmF0ZVRlc3RzKCkpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2Ny
aXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZShz
dGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRl
c3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAg
aWYgKHJhbmdlKQorICAgICAgICAgICAgICAgIHN0YXRlLnNldFJhbmdlKHJhbmdlKTsKKyAgICAg
ICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RD
YXNlcygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlNoYWRlckRlcml2YXRlVGVzdHMucnVuIHRl
c3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgp
OworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNo
YWRlckluZGV4aW5nVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlckluZGV4aW5nVGVzdHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzA4ZGI5MDc1ODI5MWIyMWZiNWIyM2EyMjMyNTE4NGM4ODJkMmM2NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVySW5kZXhpbmdUZXN0cy5qcwpA
QCAtMCwwICsxLDEyNzggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1
YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citn
b29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdHJpbmdUZW1wbGF0ZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Bl
bmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVy
ZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7
CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisgICAgLyoqIEB0eXBlIHs/V2ViR0wyUmVuZGVy
aW5nQ29udGV4dH0gKi8gdmFyIGdsOworICAgIHZhciBlczNmU2hhZGVySW5kZXhpbmdUZXN0cyA9
IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHM7CisgICAgdmFyIGRlTWF0
aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKyAgICB2YXIgZ2xzU2hhZGVyUmVu
ZGVyQ2FzZSA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJlbmRlckNhc2U7CisgICAgdmFyIGds
dVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIGds
dVRleHR1cmUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmU7CisgICAgdmFyIGdsdVNoYWRl
clByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW07CisgICAgdmFyIHRj
dVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgdGN1U3Ry
aW5nVGVtcGxhdGUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlOworICAgIC8q
KgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5n
VGVzdHMuSW5kZXhBY2Nlc3NUeXBlID0geworICAgICAgICBTVEFUSUM6IDAsCisgICAgICAgIERZ
TkFNSUM6IDEsCisgICAgICAgIFNUQVRJQ19MT09QOiAyLAorICAgICAgICBEWU5BTUlDX0xPT1A6
IDMKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVySW5kZXhpbmdU
ZXN0cy5JbmRleEFjY2Vzc1R5cGV9IGFjY2Vzc1R5cGUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9
CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0SW5kZXhBY2Nlc3NUeXBl
TmFtZSA9IGZ1bmN0aW9uKGFjY2Vzc1R5cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxz
dHJpbmc+fSAqLyB2YXIgc19uYW1lcyA9IFsKKyAgICAgICAgICAgICdzdGF0aWMnLAorICAgICAg
ICAgICAgJ2R5bmFtaWMnLAorICAgICAgICAgICAgJ3N0YXRpY19sb29wJywKKyAgICAgICAgICAg
ICdkeW5hbWljX2xvb3AnCisgICAgICAgIF07CisgICAgICAgIHJldHVybiBzX25hbWVzW2FjY2Vz
c1R5cGVdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAq
LworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGUgPSB7CisgICAg
ICAgIERJUkVDVDogMCwKKyAgICAgICAgQ09NUE9ORU5UOiAxLAorICAgICAgICBTVUJTQ1JJUFRf
U1RBVElDOiAyLAorICAgICAgICBTVUJTQ1JJUFRfRFlOQU1JQzogMywKKyAgICAgICAgU1VCU0NS
SVBUX1NUQVRJQ19MT09QOiA0LAorICAgICAgICBTVUJTQ1JJUFRfRFlOQU1JQ19MT09QOiA1Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlckluZGV4aW5nVGVzdHMu
VmVjdG9yQWNjZXNzVHlwZX0gYWNjZXNzVHlwZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5nZXRWZWN0b3JBY2Nlc3NUeXBlTmFt
ZSA9IGZ1bmN0aW9uKGFjY2Vzc1R5cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJp
bmc+fSAqLyB2YXIgc19uYW1lcyA9IFsKKyAgICAgICAgICAgICdkaXJlY3QnLAorICAgICAgICAg
ICAgJ2NvbXBvbmVudCcsCisgICAgICAgICAgICAnc3RhdGljX3N1YnNjcmlwdCcsCisgICAgICAg
ICAgICAnZHluYW1pY19zdWJzY3JpcHQnLAorICAgICAgICAgICAgJ3N0YXRpY19sb29wX3N1YnNj
cmlwdCcsCisgICAgICAgICAgICAnZHluYW1pY19sb29wX3N1YnNjcmlwdCcKKyAgICAgICAgXTsK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhkZU1hdGguZGVJbkJvdW5kczMyKGFjY2Vzc1R5cGUs
IDAsIHNfbmFtZXMubGVuZ3RoKSwgJ0luZGV4IG91dCBvZiBib3VuZHMnLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiBzX25hbWVzW2FjY2Vzc1R5cGVdOworICAgIH07CisKKyAgICAvKiog
QHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAg
ZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbEFycmF5Q29vcmRzRmxvYXQgPSBmdW5jdGlvbihj
KSB7CisgICAgICAgIGMuY29sb3JbMF0gPSAxLjg3NSAqIGMuY29vcmRzWzBdOworICAgIH07CisK
KyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBj
ICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbEFycmF5Q29vcmRzVmVjMiA9IGZ1
bmN0aW9uKGMpIHsKKyAgICAgICAgdmFyIHN3aXp6bGVkID0gZGVNYXRoLnN3aXp6bGUoYy5jb29y
ZHMsIFswLCAxXSk7CisgICAgICAgIGMuY29sb3JbMF0gPSAxLjg3NSAqIHN3aXp6bGVkWzBdOwor
ICAgICAgICBjLmNvbG9yWzFdID0gMS44NzUgKiBzd2l6emxlZFsxXTsKKyAgICB9OworCisgICAg
LyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYyAqLwor
ICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxBcnJheUNvb3Jkc1ZlYzMgPSBmdW5jdGlv
bihjKSB7CisgICAgICAgIHZhciBzd2l6emxlZCA9IGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBb
MCwgMSwgMl0pOworICAgICAgICBjLmNvbG9yWzBdID0gMS44NzUgKiBzd2l6emxlZFswXTsKKyAg
ICAgICAgYy5jb2xvclsxXSA9IDEuODc1ICogc3dpenpsZWRbMV07CisgICAgICAgIGMuY29sb3Jb
Ml0gPSAxLjg3NSAqIHN3aXp6bGVkWzJdOworICAgIH07CisKKyAgICAvKiogQHBhcmFtIHtnbHNT
aGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMuZXZhbEFycmF5Q29vcmRzVmVjNCA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAg
Yy5jb2xvciA9IGRlTWF0aC5zY2FsZShjLmNvb3JkcywgMS44NzUpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBlCisgICAg
ICogQHJldHVybiB7ZnVuY3Rpb24oZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dCl9CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0QXJyYXlDb29yZHNF
dmFsRnVuYyA9IGZ1bmN0aW9uKGRhdGFUeXBlKSB7CisgICAgICAgIGlmIChkYXRhVHlwZSA9PT0g
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCkgcmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLmV2YWxBcnJheUNvb3Jkc0Zsb2F0OworICAgICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0g
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyKSByZXR1cm4gZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMuZXZhbEFycmF5Q29vcmRzVmVjMjsKKyAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUg
PT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMykgcmV0dXJuIGVzM2ZTaGFkZXJJ
bmRleGluZ1Rlc3RzLmV2YWxBcnJheUNvb3Jkc1ZlYzM7CisgICAgICAgIGVsc2UgaWYgKGRhdGFU
eXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQpIHJldHVybiBlczNmU2hh
ZGVySW5kZXhpbmdUZXN0cy5ldmFsQXJyYXlDb29yZHNWZWM0OworICAgICAgICBlbHNlIHRocm93
IG5ldyBFcnJvcignSW52YWxpZCBkYXRhIHR5cGUuJyk7CisgICAgfTsKKworCisgICAgLyoqIEBw
YXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYyAqLworICAgIGVz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxBcnJheVVuaWZvcm1GbG9hdCA9IGZ1bmN0aW9uKGMp
IHsKKyAgICAgICAgYy5jb2xvclswXSA9IDEuODc1ICogYy5jb25zdENvb3Jkc1swXTsKKyAgICB9
OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dH0gYyAqLworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxBcnJheVVuaWZvcm1WZWMy
ID0gZnVuY3Rpb24oYykgeworICAgICAgICB2YXIgc3dpenpsZWQgPSBkZU1hdGguc3dpenpsZShj
LmNvbnN0Q29vcmRzLCBbMCwgMV0pOworICAgICAgICBjLmNvbG9yWzBdID0gMS44NzUgKiBzd2l6
emxlZFswXTsKKyAgICAgICAgYy5jb2xvclsxXSA9IDEuODc1ICogc3dpenpsZWRbMV07CisgICAg
fTsKKworICAgIC8qKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRl
eHR9IGMgKi8KKyAgICBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5ldmFsQXJyYXlVbmlmb3JtVmVj
MyA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgdmFyIHN3aXp6bGVkID0gZGVNYXRoLnN3aXp6bGUo
Yy5jb25zdENvb3JkcywgWzAsIDEsIDJdKTsKKyAgICAgICAgYy5jb2xvclswXSA9IDEuODc1ICog
c3dpenpsZWRbMF07CisgICAgICAgIGMuY29sb3JbMV0gPSAxLjg3NSAqIHN3aXp6bGVkWzFdOwor
ICAgICAgICBjLmNvbG9yWzJdID0gMS44NzUgKiBzd2l6emxlZFsyXTsKKyAgICB9OworCisgICAg
LyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYyAqLwor
ICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxBcnJheVVuaWZvcm1WZWM0ID0gZnVuY3Rp
b24oYykgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLnNjYWxlKGMuY29uc3RDb29yZHMsIDEu
ODc1KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSBkYXRhVHlwZQorICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKGdsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyRXZhbENvbnRleHQpfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJJbmRleGlu
Z1Rlc3RzLmdldEFycmF5VW5pZm9ybUV2YWxGdW5jID0gZnVuY3Rpb24oZGF0YVR5cGUpIHsKKyAg
ICAgICAgaWYgKGRhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSByZXR1
cm4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbEFycmF5VW5pZm9ybUZsb2F0OworICAgICAg
ICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMy
KSByZXR1cm4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbEFycmF5VW5pZm9ybVZlYzI7Cisg
ICAgICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X1ZFQzMpIHJldHVybiBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5ldmFsQXJyYXlVbmlmb3JtVmVj
MzsKKyAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfVkVDNCkgcmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxBcnJheVVuaWZv
cm1WZWM0OworICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRhIHR5cGUu
Jyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2V9CisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAg
KiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVydGV4Q2FzZQorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVy
VXRpbC5EYXRhVHlwZX0gdmFyVHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZ2xzU2hhZGVy
UmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dCl9IGV2YWxGdW5jCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHZlcnRTaGFkZXJTb3VyY2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhZ1NoYWRl
clNvdXJjZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4
aW5nQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIHZhclR5
cGUsIGV2YWxGdW5jLCB2ZXJ0U2hhZGVyU291cmNlLCBmcmFnU2hhZGVyU291cmNlKSB7CisgICAg
ICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUs
IGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWxGdW5jKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB0aGlzLm1fdmFyVHlwZSA9IHZhclR5cGU7Cisg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fdmVydFNoYWRlclNvdXJjZSAgICA9
IHZlcnRTaGFkZXJTb3VyY2U7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1f
ZnJhZ1NoYWRlclNvdXJjZSAgICA9IGZyYWdTaGFkZXJTb3VyY2U7CisgICAgfTsKKworICAgIGVz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4aW5nQ2FzZS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUp
OworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4aW5nQ2FzZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5TaGFkZXJJbmRleGluZ0Nh
c2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9XZWJHTFByb2dyYW19IHByb2dyYW1JRAor
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29uc3RDb29yZHMKKyAgICAgKi8KKyAgICBl
czNmU2hhZGVySW5kZXhpbmdUZXN0cy5TaGFkZXJJbmRleGluZ0Nhc2UucHJvdG90eXBlLnNldHVw
VW5pZm9ybXMgPSBmdW5jdGlvbihwcm9ncmFtSUQsIGNvbnN0Q29vcmRzKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7KEFycmF5PG51bWJlcj58RmxvYXQzMkFycmF5KX0gKi8gdmFyIGFyciA9IFtdOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhcnJheTFkID0gW107Cisg
ICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgYXJyTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgJ3VfYXJyJyk7CisgICAgICAgIGlmIChh
cnJMb2MgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHRoaXMubV92YXJUeXBlID09PSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSB7CisgICAgICAgICAgICAgICAgYXJyWzBdID0gY29u
c3RDb29yZHNbMF07CisgICAgICAgICAgICAgICAgYXJyWzFdID0gY29uc3RDb29yZHNbMF0gKiAw
LjU7CisgICAgICAgICAgICAgICAgYXJyWzJdID0gY29uc3RDb29yZHNbMF0gKiAwLjI1OworICAg
ICAgICAgICAgICAgIGFyclszXSA9IGNvbnN0Q29vcmRzWzBdICogMC4xMjU7CisgICAgICAgICAg
ICAgICAgZ2wudW5pZm9ybTFmdihhcnJMb2MsIGFycik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmICh0aGlzLm1fdmFyVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUMyKSB7CisgICAgICAgICAgICAgICAgYXJyWzBdID0gZGVNYXRoLnN3aXp6bGUoY29u
c3RDb29yZHMsIFswLCAxXSk7CisgICAgICAgICAgICAgICAgYXJyWzFdID0gZGVNYXRoLnNjYWxl
KGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMCwgMV0pLCAwLjUpOworICAgICAgICAgICAg
ICAgIGFyclsyXSA9IGRlTWF0aC5zY2FsZShkZU1hdGguc3dpenpsZShjb25zdENvb3JkcywgWzAs
IDFdKSwgMC4yNSk7CisgICAgICAgICAgICAgICAgYXJyWzNdID0gZGVNYXRoLnNjYWxlKGRlTWF0
aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMCwgMV0pLCAwLjEyNSk7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAg
IGFycmF5MWQgPSBhcnJheTFkLmNvbmNhdChhcnJbaV0pOworICAgICAgICAgICAgICAgIGdsLnVu
aWZvcm0yZnYoYXJyTG9jLCBhcnJheTFkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKHRoaXMubV92YXJUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZF
QzMpIHsKKyAgICAgICAgICAgICAgICBhcnJbMF0gPSBkZU1hdGguc3dpenpsZShjb25zdENvb3Jk
cywgWzAsIDEsIDJdKTsKKyAgICAgICAgICAgICAgICBhcnJbMV0gPSBkZU1hdGguc2NhbGUoZGVN
YXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFswLCAxLCAyXSksIDAuNSk7CisgICAgICAgICAgICAg
ICAgYXJyWzJdID0gZGVNYXRoLnNjYWxlKGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMCwg
MSwgMl0pLCAwLjI1KTsKKyAgICAgICAgICAgICAgICBhcnJbM10gPSBkZU1hdGguc2NhbGUoZGVN
YXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFswLCAxLCAyXSksIDAuMTI1KTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAg
ICAgICAgYXJyYXkxZCA9IGFycmF5MWQuY29uY2F0KGFycltpXSk7CisgICAgICAgICAgICAgICAg
Z2wudW5pZm9ybTNmdihhcnJMb2MsIGFycmF5MWQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAodGhpcy5tX3ZhclR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfVkVDNCkgeworICAgICAgICAgICAgICAgIGFyclswXSA9IGRlTWF0aC5zd2l6emxlKGNvbnN0
Q29vcmRzLCBbMCwxLDIsM10pOworICAgICAgICAgICAgICAgIGFyclsxXSA9IGRlTWF0aC5zY2Fs
ZShkZU1hdGguc3dpenpsZShjb25zdENvb3JkcywgWzAsIDEsIDIsIDNdKSwgMC41KTsKKyAgICAg
ICAgICAgICAgICBhcnJbMl0gPSBkZU1hdGguc2NhbGUoZGVNYXRoLnN3aXp6bGUoY29uc3RDb29y
ZHMsIFswLCAxLCAyLCAzXSksIDAuMjUpOworICAgICAgICAgICAgICAgIGFyclszXSA9IGRlTWF0
aC5zY2FsZShkZU1hdGguc3dpenpsZShjb25zdENvb3JkcywgWzAsIDEsIDIsIDNdKSwgMC4xMjUp
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgICAgICBhcnJheTFkID0gYXJyYXkxZC5jb25jYXQoYXJyW2ldKTsKKyAg
ICAgICAgICAgICAgICBnbC51bmlmb3JtNGZ2KGFyckxvYywgYXJyYXkxZCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1
X2FyciBzaG91bGQgbm90IGhhdmUgbG9jYXRpb24gYXNzaWduZWQgaW4gdGhpcyB0ZXN0IGNhc2Un
KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtzdHJpbmd9
IGNhc2VOYW1lCisgICAgICogQHBhcmFtICB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBw
YXJhbSAge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHZhclR5cGUKKyAgICAgKiBAcGFyYW0gIHtl
czNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGV9IHZlcnRBY2Nlc3MKKyAgICAg
KiBAcGFyYW0gIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGV9IGZyYWdB
Y2Nlc3MKKyAgICAgKiBAcmV0dXJuIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5TaGFkZXJJbmRl
eGluZ0Nhc2V9CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuY3JlYXRlVmFy
eWluZ0FycmF5Q2FzZSA9IGZ1bmN0aW9uKGNhc2VOYW1lLCBkZXNjcmlwdGlvbiwgdmFyVHlwZSwg
dmVydEFjY2VzcywgZnJhZ0FjY2VzcykgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIHZ0eCA9ICcnOworICAgICAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAg
ICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAg
ICAnaW4gaGlnaHAgdmVjNCBhX2Nvb3Jkcztcbic7CisKKyAgICAgICAgaWYgKHZlcnRBY2Nlc3Mg
PT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDKQorICAg
ICAgICAgICAgdnR4ICs9ICd1bmlmb3JtIG1lZGl1bXAgaW50IHVpX3plcm8sIHVpX29uZSwgdWlf
dHdvLCB1aV90aHJlZTtcbic7CisgICAgICAgIGVsc2UgaWYgKHZlcnRBY2Nlc3MgPT09IGVzM2ZT
aGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDX0xPT1ApCisgICAgICAg
ICAgICB2dHggKz0gJ3VuaWZvcm0gbWVkaXVtcCBpbnQgdWlfZm91cjtcbic7CisKKyAgICAgICAg
dnR4ICs9ICdvdXQgJHtQUkVDSVNJT059ICR7VkFSX1RZUEV9IHZhclske0FSUkFZX0xFTn1dO1xu
JyArCisgICAgICAgICAgICAgICAnXG4nICsKKyAgICAgICAgICAgICAgICd2b2lkIG1haW4oKVxu
JyArCisgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAgICAnICAgIGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjtcbic7CisKKyAgICAgICAgaWYgKHZlcnRBY2Nlc3MgPT09IGVzM2ZT
aGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5TVEFUSUMpIHsKKyAgICAgICAgICAg
IHZ0eCArPSAnICAgIHZhclswXSA9ICR7VkFSX1RZUEV9KGFfY29vcmRzKTtcbicgKworICAgICAg
ICAgICAgICAgICAgICcgICAgdmFyWzFdID0gJHtWQVJfVFlQRX0oYV9jb29yZHMpICogMC41O1xu
JyArCisgICAgICAgICAgICAgICAgICAgJyAgICB2YXJbMl0gPSAke1ZBUl9UWVBFfShhX2Nvb3Jk
cykgKiAwLjI1O1xuJyArCisgICAgICAgICAgICAgICAgICAgJyAgICB2YXJbM10gPSAke1ZBUl9U
WVBFfShhX2Nvb3JkcykgKiAwLjEyNTtcbic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
dmVydEFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZ
TkFNSUMpIHsKKyAgICAgICAgICAgIHZ0eCArPSAnICAgIHZhclt1aV96ZXJvXSAgPSAke1ZBUl9U
WVBFfShhX2Nvb3Jkcyk7XG4nICsKKyAgICAgICAgICAgICAgICAgICAnICAgIHZhclt1aV9vbmVd
ICAgPSAke1ZBUl9UWVBFfShhX2Nvb3JkcykgKiAwLjU7XG4nICsKKyAgICAgICAgICAgICAgICAg
ICAnICAgIHZhclt1aV90d29dICAgPSAke1ZBUl9UWVBFfShhX2Nvb3JkcykgKiAwLjI1O1xuJyAr
CisgICAgICAgICAgICAgICAgICAgJyAgICB2YXJbdWlfdGhyZWVdID0gJHtWQVJfVFlQRX0oYV9j
b29yZHMpICogMC4xMjU7XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZlcnRBY2Nl
c3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5TVEFUSUNfTE9P
UCkgeworICAgICAgICAgICAgdnR4ICs9ICcJJHtQUkVDSVNJT059ICR7VkFSX1RZUEV9IGNvb3Jk
cyA9ICR7VkFSX1RZUEV9KGFfY29vcmRzKTtcbicgKworICAgICAgICAgICAgICAgICAgICcgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspXG4nICsKKyAgICAgICAgICAgICAgICAgICAnICAg
IHtcbicgKworICAgICAgICAgICAgICAgICAgICcJCXZhcltpXSA9ICR7VkFSX1RZUEV9KGNvb3Jk
cyk7XG4nICsKKyAgICAgICAgICAgICAgICAgICAnICAgICAgICBjb29yZHMgPSBjb29yZHMgKiAw
LjU7XG4nICsKKyAgICAgICAgICAgICAgICAgICAnICAgIH1cbic7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHZlcnRBY2Nlc3MgPT09IGVz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDX0xPT1AsICdOb3Qg
RHluYW1pY19Mb29wJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgdnR4ICs9ICcJJHtQUkVD
SVNJT059ICR7VkFSX1RZUEV9IGNvb3JkcyA9ICR7VkFSX1RZUEV9KGFfY29vcmRzKTtcbicgKwor
ICAgICAgICAgICAgICAgICAgICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1aV9mb3VyOyBpKysp
XG4nICsKKyAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgICAgICAg
ICcJCXZhcltpXSA9ICR7VkFSX1RZUEV9KGNvb3Jkcyk7XG4nICsKKyAgICAgICAgICAgICAgICAg
ICAnICAgICAgICBjb29yZHMgPSBjb29yZHMgKiAwLjU7XG4nICsKKyAgICAgICAgICAgICAgICAg
ICAnICAgIH1cbic7CisgICAgICAgIH0KKyAgICAgICAgdnR4ICs9ICd9XG4nOworCisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZyA9ICcnOworICAgICAgICBmcmFnICs9ICcj
dmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdwcmVjaXNpb24gbWVkaXVtcCBp
bnQ7XG4nICsKKyAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1
bXAgdmVjNCBvX2NvbG9yO1xuJzsKKworICAgICAgICBpZiAoZnJhZ0FjY2VzcyA9PT0gZXMzZlNo
YWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZTkFNSUMpCisgICAgICAgICAgICBm
cmFnICs9ICd1bmlmb3JtIG1lZGl1bXAgaW50IHVpX3plcm8sIHVpX29uZSwgdWlfdHdvLCB1aV90
aHJlZTtcbic7CisgICAgICAgIGVsc2UgaWYgKGZyYWdBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRl
eGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDX0xPT1ApCisgICAgICAgICAgICBmcmFn
ICs9ICd1bmlmb3JtIGludCB1aV9mb3VyO1xuJzsKKworICAgICAgICBmcmFnICs9ICdpbiAke1BS
RUNJU0lPTn0gJHtWQVJfVFlQRX0gdmFyWyR7QVJSQVlfTEVOfV07XG4nICsKKyAgICAgICAgICAg
ICAgICAnXG4nICsKKyAgICAgICAgICAgICAgICAndm9pZCBtYWluKClcbicgKworICAgICAgICAg
ICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAnCSR7UFJFQ0lTSU9OfSAke1ZBUl9UWVBF
fSByZXMgPSAke1ZBUl9UWVBFfSgwLjApO1xuJzsKKworICAgICAgICBpZiAoZnJhZ0FjY2VzcyA9
PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLlNUQVRJQykgeworICAg
ICAgICAgICAgZnJhZyArPSAnICAgIHJlcyArPSB2YXJbMF07XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgJyAgICByZXMgKz0gdmFyWzFdO1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAg
cmVzICs9IHZhclsyXTtcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgIHJlcyArPSB2YXJb
M107XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZyYWdBY2Nlc3MgPT09IGVzM2ZT
aGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDKSB7CisgICAgICAgICAg
ICBmcmFnICs9ICcgICAgcmVzICs9IHZhclt1aV96ZXJvXTtcbicgKworICAgICAgICAgICAgICAg
ICAgICAnICAgIHJlcyArPSB2YXJbdWlfb25lXTtcbicgKworICAgICAgICAgICAgICAgICAgICAn
ICAgIHJlcyArPSB2YXJbdWlfdHdvXTtcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgIHJl
cyArPSB2YXJbdWlfdGhyZWVdO1xuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmcmFn
QWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuU1RBVElD
X0xPT1ApIHsKKyAgICAgICAgICAgIGZyYWcgKz0gJyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
IGkrKylcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXMgKz0gdmFyW2ldO1xu
JzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoZnJhZ0FjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBl
LkRZTkFNSUNfTE9PUCwgJ05vdCBEeW5hbWljX0xvb3AnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
ICAgICBmcmFnICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1aV9mb3VyOyBpKyspXG4nICsK
KyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgcmVzICs9IHZhcltpXTtcbic7CisgICAgICAg
IH0KKyAgICAgICAgZnJhZyArPSAnCW9fY29sb3IgPSB2ZWM0KHJlcyR7UEFERElOR30pO1xuJyAr
CisgICAgICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgLy8gRmlsbCBpbiBzaGFkZXIgdGVt
cGxhdGVzLgorICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIHBhcmFtcyA9IHt9Owor
CSAgICBwYXJhbXNbJ1ZBUl9UWVBFJ10gPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh2
YXJUeXBlKTsKKwkgICAgcGFyYW1zWydBUlJBWV9MRU4nXSA9ICc0JzsKKwkgICAgcGFyYW1zWydQ
UkVDSVNJT04nXSA9ICdtZWRpdW1wJzsKKworICAgICAgICBpZiAodmFyVHlwZSA9PT0gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCkKKyAgICAgICAgICAgIHBhcmFtc1snUEFERElORyddID0g
JywgMC4wLCAwLjAsIDEuMCc7CisgICAgICAgIGVsc2UgaWYgKHZhclR5cGUgPT09IGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMikKKyAgICAgICAgICAgIHBhcmFtc1snUEFERElORydd
ID0gJywgMC4wLCAxLjAnOworICAgICAgICBlbHNlIGlmICh2YXJUeXBlID09PSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMpCisgICAgICAgICAgICBwYXJhbXNbJ1BBRERJTkcnXSA9
ICcsIDEuMCc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmFtc1snUEFERElORyddID0g
Jyc7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSB0Y3VTdHJpbmdUZW1wbGF0ZS5zcGVjaWFsaXplKHZ0eCwgcGFyYW1zKTsKKyAgICAJLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnbWVudFNoYWRlclNvdXJjZSA9IHRjdVN0cmluZ1Rl
bXBsYXRlLnNwZWNpYWxpemUoZnJhZywgcGFyYW1zKTsKKworICAgICAgICAvKiogQHR5cGUge2Z1
bmN0aW9uKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHQpfSAqLworICAgICAg
ICB2YXIgZXZhbEZ1bmMgPSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5nZXRBcnJheUNvb3Jkc0V2
YWxGdW5jKHZhclR5cGUpOworICAgICAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLlNoYWRlckluZGV4aW5nQ2FzZShjYXNlTmFtZSwgZGVzY3JpcHRpb24sIHRydWUsIHZhclR5
cGUsIGV2YWxGdW5jLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNhc2VOYW1lCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICogQHBhcmFtIHtib29sZWFufSBp
c1ZlcnRleENhc2UKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHZhclR5
cGUKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlw
ZX0gcmVhZEFjY2VzcworICAgICAqIEByZXR1cm4ge2VzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNo
YWRlckluZGV4aW5nQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5j
cmVhdGVVbmlmb3JtQXJyYXlDYXNlID0gZnVuY3Rpb24oY2FzZU5hbWUsIGRlc2NyaXB0aW9uLCBp
c1ZlcnRleENhc2UsIHZhclR5cGUsIHJlYWRBY2Nlc3MpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciB2dHggPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciBmcmFnID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgb3AgPSAnJzsK
KworICAgICAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICAgICAgZnJhZyArPSAn
I3ZlcnNpb24gMzAwIGVzXG4nOworCisgICAgICAgIHZ0eCArPSAnaW4gaGlnaHAgdmVjNCBhX3Bv
c2l0aW9uO1xuJzsKKyAgICAgICAgdnR4ICs9ICdpbiBoaWdocCB2ZWM0IGFfY29vcmRzO1xuJzsK
KyAgICAgICAgZnJhZyArPSAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBv
X2NvbG9yO1xuJzsKKworICAgICAgICBpZiAoaXNWZXJ0ZXhDYXNlKSB7CisgICAgICAgICAgICB2
dHggKz0gJ291dCBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbic7CisgICAgICAgICAgICBmcmFnICs9
ICdpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB2dHggKz0gJ291dCBtZWRpdW1wIHZlYzQgdl9jb29yZHM7XG4nOworICAg
ICAgICAgICAgZnJhZyArPSAnaW4gbWVkaXVtcCB2ZWM0IHZfY29vcmRzO1xuJzsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5J
bmRleEFjY2Vzc1R5cGUuRFlOQU1JQykKKyAgICAgICAgICAgIG9wICs9ICd1bmlmb3JtIG1lZGl1
bXAgaW50IHVpX3plcm8sIHVpX29uZSwgdWlfdHdvLCB1aV90aHJlZTtcbic7CisgICAgICAgIGVs
c2UgaWYgKHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNz
VHlwZS5EWU5BTUlDX0xPT1ApCisgICAgICAgICAgICBvcCArPSAndW5pZm9ybSBtZWRpdW1wIGlu
dCB1aV9mb3VyO1xuJzsKKworICAgICAgICBvcCArPSAndW5pZm9ybSAke1BSRUNJU0lPTn0gJHtW
QVJfVFlQRX0gdV9hcnJbJHtBUlJBWV9MRU59XTtcbic7CisKKyAgICAgICAgdnR4ICs9IGlzVmVy
dGV4Q2FzZSA/IG9wIDogJyc7CisgICAgICAgIGZyYWcgKz0gaXNWZXJ0ZXhDYXNlID8gJycgOiBv
cDsKKyAgICAgICAgb3AgPSAnJzsKKworICAgICAgICB2dHggKz0gJ1xuJzsKKyAgICAgICAgdnR4
ICs9ICd2b2lkIG1haW4oKVxuJzsKKyAgICAgICAgdnR4ICs9ICd7XG4nOworICAgICAgICB2dHgg
Kz0gJyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nOworCisgICAgICAgIGZyYWcgKz0g
J1xuJzsKKyAgICAgICAgZnJhZyArPSAndm9pZCBtYWluKClcbic7CisgICAgICAgIGZyYWcgKz0g
J3tcbic7CisKKyAgICAgICAgLy8gUmVhZCBhcnJheS4KKyAgICAgICAgb3AgKz0gJwkke1BSRUNJ
U0lPTn0gJHtWQVJfVFlQRX0gcmVzID0gJHtWQVJfVFlQRX0oMC4wKTtcbic7CisgICAgICAgIGlm
IChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUu
U1RBVElDKSB7CisgICAgICAgICAgICBvcCArPSAnICAgIHJlcyArPSB1X2FyclswXTtcbic7Cisg
ICAgICAgICAgICBvcCArPSAnICAgIHJlcyArPSB1X2FyclsxXTtcbic7CisgICAgICAgICAgICBv
cCArPSAnICAgIHJlcyArPSB1X2FyclsyXTtcbic7CisgICAgICAgICAgICBvcCArPSAnICAgIHJl
cyArPSB1X2FyclszXTtcbic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVhZEFjY2Vz
cyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZTkFNSUMpIHsK
KyAgICAgICAgICAgIG9wICs9ICcgICAgcmVzICs9IHVfYXJyW3VpX3plcm9dO1xuJzsKKyAgICAg
ICAgICAgIG9wICs9ICcgICAgcmVzICs9IHVfYXJyW3VpX29uZV07XG4nOworICAgICAgICAgICAg
b3AgKz0gJyAgICByZXMgKz0gdV9hcnJbdWlfdHdvXTtcbic7CisgICAgICAgICAgICBvcCArPSAn
ICAgIHJlcyArPSB1X2Fyclt1aV90aHJlZV07XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlw
ZS5TVEFUSUNfTE9PUCkgeworICAgICAgICAgICAgb3AgKz0gJyAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7IGkrKylcbic7CisgICAgICAgICAgICBvcCArPSAnICAgICAgICByZXMgKz0gdV9hcnJb
aV07XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TXNn
T3B0aW9ucyhyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vz
c1R5cGUuRFlOQU1JQ19MT09QLCAncmVhZEFjY2VzcyBub3Qgc3VwcG9ydGVkLicsIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1aV9mb3Vy
OyBpKyspXG4nOworICAgICAgICAgICAgb3AgKz0gJyAgICAgICAgcmVzICs9IHVfYXJyW2ldO1xu
JzsKKyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSBpc1ZlcnRleENhc2UgPyBvcCA6ICcnOwor
ICAgICAgICBmcmFnICs9IGlzVmVydGV4Q2FzZSA/ICcnIDogb3A7CisgICAgICAgIG9wID0gJyc7
CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkgeworICAgICAgICAgICAgdnR4ICs9ICcgICAg
dl9jb2xvciA9IHZlYzQocmVzJHtQQURESU5HfSk7XG4nOworICAgICAgICAgICAgZnJhZyArPSAn
ICAgIG9fY29sb3IgPSB2X2NvbG9yO1xuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHZ0eCArPSAnICAgIHZfY29vcmRzID0gYV9jb29yZHM7XG4nOworICAgICAgICAg
ICAgZnJhZyArPSAnICAgIG9fY29sb3IgPSB2ZWM0KHJlcyR7UEFERElOR30pO1xuJzsKKyAgICAg
ICAgfQorCisgICAgICAgIHZ0eCArPSAnfVxuJzsKKyAgICAgICAgZnJhZyArPSAnfVxuJzsKKwor
ICAgICAgICAvLyBGaWxsIGluIHNoYWRlciB0ZW1wbGF0ZXMuCisgICAgICAgIC8qKiBAdHlwZSB7
T2JqZWN0fSAqLyB2YXIgcGFyYW1zID0ge307CisJICAgIHBhcmFtc1snVkFSX1RZUEUnXSA9IGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhclR5cGUpOworCSAgICBwYXJhbXNbJ0FSUkFZ
X0xFTiddID0gJzQnOworCSAgICBwYXJhbXNbJ1BSRUNJU0lPTiddID0gJ21lZGl1bXAnOworCisg
ICAgICAgIGlmICh2YXJUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKQorICAg
ICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnLCAwLjAsIDAuMCwgMS4wJzsKKyAgICAgICAg
ZWxzZSBpZiAodmFyVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyKQor
ICAgICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnLCAwLjAsIDEuMCc7CisgICAgICAgIGVs
c2UgaWYgKHZhclR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMykKKyAg
ICAgICAgICAgIHBhcmFtc1snUEFERElORyddID0gJywgMS4wJzsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnJzsKKworCisgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgdmVydGV4U2hhZGVyU291cmNlID0gdGN1U3RyaW5nVGVtcGxhdGUuc3Bl
Y2lhbGl6ZSh2dHgsIHBhcmFtcyk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSB0Y3VTdHJpbmdUZW1wbGF0ZS5zcGVjaWFsaXplKGZyYWcs
IHBhcmFtcyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtmdW5jdGlvbihnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlckV2YWxDb250ZXh0KX0gKi8KKyAgICAgICAgdmFyIGV2YWxGdW5jID0gZXMzZlNo
YWRlckluZGV4aW5nVGVzdHMuZ2V0QXJyYXlVbmlmb3JtRXZhbEZ1bmModmFyVHlwZSk7CisgICAg
ICAgIHJldHVybiBuZXcgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuU2hhZGVySW5kZXhpbmdDYXNl
KGNhc2VOYW1lLCBkZXNjcmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCB2YXJUeXBlLCBldmFsRnVuYywg
dmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYXNlTmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB2YXJUeXBlCisgICAgICogQHBh
cmFtIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGV9IHdyaXRlQWNjZXNz
CisgICAgICogQHBhcmFtIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGV9
IHJlYWRBY2Nlc3MKKyAgICAgKiBAcmV0dXJuIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5TaGFk
ZXJJbmRleGluZ0Nhc2V9CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuY3Jl
YXRlVG1wQXJyYXlDYXNlID0gZnVuY3Rpb24oY2FzZU5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRl
eENhc2UsIHZhclR5cGUsIHdyaXRlQWNjZXNzLCByZWFkQWNjZXNzKSAgICB7CisgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgZnJhZyA9ICcnOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IG9wID0gJyc7CisKKyAgICAgICAgdnR4ICs9ICcjdmVyc2lvbiAzMDAgZXNcbic7CisgICAgICAg
IGZyYWcgKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKworICAgICAgICB2dHggKz0gJ2luIGhpZ2hw
IHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9j
b29yZHM7XG4nOworICAgICAgICBmcmFnICs9ICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVk
aXVtcCB2ZWM0IG9fY29sb3I7XG4nOworCisgICAgICAgIGlmIChpc1ZlcnRleENhc2UpIHsKKyAg
ICAgICAgICAgIHZ0eCArPSAnb3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJzsKKyAgICAgICAg
ICAgIGZyYWcgKz0gJ2luIG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJzsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZ0eCArPSAnb3V0IG1lZGl1bXAgdmVjNCB2X2Nvb3Jk
cztcbic7CisgICAgICAgICAgICBmcmFnICs9ICdpbiBtZWRpdW1wIHZlYzQgdl9jb29yZHM7XG4n
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdyaXRlQWNjZXNzID09PSBlczNmU2hhZGVySW5k
ZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuRFlOQU1JQyB8fCByZWFkQWNjZXNzID09PSBlczNm
U2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuRFlOQU1JQykKKyAgICAgICAgICAg
IG9wICs9ICd1bmlmb3JtIG1lZGl1bXAgaW50IHVpX3plcm8sIHVpX29uZSwgdWlfdHdvLCB1aV90
aHJlZTtcbic7CisKKyAgICAgICAgaWYgKHdyaXRlQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhp
bmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuRFlOQU1JQ19MT09QIHx8IHJlYWRBY2Nlc3MgPT09IGVz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDX0xPT1ApCisgICAg
ICAgICAgICBvcCArPSAndW5pZm9ybSBtZWRpdW1wIGludCB1aV9mb3VyO1xuJzsKKworICAgICAg
ICB2dHggKz0gaXNWZXJ0ZXhDYXNlID8gb3AgOiAnJzsKKyAgICAgICAgZnJhZyArPSBpc1ZlcnRl
eENhc2UgPyAnJyA6IG9wOworICAgICAgICBvcCA9ICcnOworCisgICAgICAgIHZ0eCArPSAnXG4n
ICsKKyAgICAgICAgICAgICAgICd2b2lkIG1haW4oKVxuJyArCisgICAgICAgICAgICAgICAne1xu
JyArCisgICAgICAgICAgICAgICAnICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbic7CisK
KyAgICAgICAgZnJhZyArPSAnXG4nICsKKyAgICAgICAgICAgICAgICAndm9pZCBtYWluKClcbicg
KworICAgICAgICAgICAgICAgICd7XG4nOworCisgICAgICAgIC8vIFdyaXRlIGFycmF5LgorICAg
ICAgICBpZiAoaXNWZXJ0ZXhDYXNlKQorICAgICAgICAgICAgb3AgKz0gJwkke1BSRUNJU0lPTn0g
JHtWQVJfVFlQRX0gY29vcmRzID0gJHtWQVJfVFlQRX0oYV9jb29yZHMpO1xuJzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgb3AgKz0gJwkke1BSRUNJU0lPTn0gJHtWQVJfVFlQRX0gY29vcmRz
ID0gJHtWQVJfVFlQRX0odl9jb29yZHMpO1xuJzsKKworICAgICAgICBvcCArPSAnCSR7UFJFQ0lT
SU9OfSAke1ZBUl9UWVBFfSBhcnJbJHtBUlJBWV9MRU59XTtcbic7CisgICAgICAgIGlmICh3cml0
ZUFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLlNUQVRJ
QykgeworICAgICAgICAgICAgb3AgKz0gJwlhcnJbMF0gPSAke1ZBUl9UWVBFfShjb29yZHMpO1xu
JyArCisgICAgCQkgICAgICAnCWFyclsxXSA9ICR7VkFSX1RZUEV9KGNvb3JkcykgKiAwLjU7XG4n
ICsKKyAgICAJCSAgICAgICcJYXJyWzJdID0gJHtWQVJfVFlQRX0oY29vcmRzKSAqIDAuMjU7XG4n
ICsKKyAgICAJCSAgICAgICcJYXJyWzNdID0gJHtWQVJfVFlQRX0oY29vcmRzKSAqIDAuMTI1O1xu
JzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh3cml0ZUFjY2VzcyA9PT0gZXMzZlNoYWRl
ckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZTkFNSUMpIHsKKyAgICAJCW9wICs9ICcJ
YXJyW3VpX3plcm9dICA9ICR7VkFSX1RZUEV9KGNvb3Jkcyk7XG4nICsKKyAgICAJCSAgICAgICcJ
YXJyW3VpX29uZV0gICA9ICR7VkFSX1RZUEV9KGNvb3JkcykgKiAwLjU7XG4nICsKKyAgICAJCSAg
ICAgICcJYXJyW3VpX3R3b10gICA9ICR7VkFSX1RZUEV9KGNvb3JkcykgKiAwLjI1O1xuJyArCisg
ICAgCQkgICAgICAnCWFyclt1aV90aHJlZV0gPSAke1ZBUl9UWVBFfShjb29yZHMpICogMC4xMjU7
XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHdyaXRlQWNjZXNzID09PSBlczNmU2hh
ZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuU1RBVElDX0xPT1ApIHsKKyAgICAgICAg
ICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspXG4nICsKKyAgICAgICAg
ICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAgICAgICAnICAgICAgICBhcnJbaV0g
PSAke1ZBUl9UWVBFfShjb29yZHMpO1xuJyArCisgICAgICAgICAgICAgICAgICAnICAgICAgICBj
b29yZHMgPSBjb29yZHMgKiAwLjU7XG4nICsKKyAgICAgICAgICAgICAgICAgICcgICAgfVxuJzsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
d3JpdGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5E
WU5BTUlDX0xPT1AsICd3cml0ZUFjY2VzcyBub3Qgc3VwcG9ydGVkJywgZmFsc2UsIHRydWUpOwor
ICAgICAgICAgICAgb3AgKz0gJyAgICBmb3IgKGludCBpID0gMDsgaSA8IHVpX2ZvdXI7IGkrKylc
bicgKworICAgICAgICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICAgICAgICcg
ICAgICAgIGFycltpXSA9ICR7VkFSX1RZUEV9KGNvb3Jkcyk7XG4nICsKKyAgICAgICAgICAgICAg
ICAgICcgICAgICAgIGNvb3JkcyA9IGNvb3JkcyAqIDAuNTtcbicgKworICAgICAgICAgICAgICAg
ICAgJyAgICB9XG4nOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVhZCBhcnJheS4KKyAgICAg
ICAgb3AgKz0gJwkke1BSRUNJU0lPTn0gJHtWQVJfVFlQRX0gcmVzID0gJHtWQVJfVFlQRX0oMC4w
KTtcbic7CisgICAgICAgIGlmIChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0
cy5JbmRleEFjY2Vzc1R5cGUuU1RBVElDKSB7CisgICAgICAgICAgICBvcCArPSAnICAgIHJlcyAr
PSBhcnJbMF07XG4nICsKKyAgICAgICAgICAgICAgICAgICcgICAgcmVzICs9IGFyclsxXTtcbicg
KworICAgICAgICAgICAgICAgICAgJyAgICByZXMgKz0gYXJyWzJdO1xuJyArCisgICAgICAgICAg
ICAgICAgICAnICAgIHJlcyArPSBhcnJbM107XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlw
ZS5EWU5BTUlDKSB7CisgICAgICAgICAgICBvcCArPSAnICAgIHJlcyArPSBhcnJbdWlfemVyb107
XG4nICsKKyAgICAgICAgICAgICAgICAgICcgICAgcmVzICs9IGFyclt1aV9vbmVdO1xuJyArCisg
ICAgICAgICAgICAgICAgICAnICAgIHJlcyArPSBhcnJbdWlfdHdvXTtcbicgKworICAgICAgICAg
ICAgICAgICAgJyAgICByZXMgKz0gYXJyW3VpX3RocmVlXTtcbic7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAocmVhZEFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhB
Y2Nlc3NUeXBlLlNUQVRJQ19MT09QKSB7CisgICAgICAgICAgICBvcCArPSAnICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgNDsgaSsrKVxuJyArCisgICAgICAgICAgICAgICAgICAnICAgICAgICByZXMg
Kz0gYXJyW2ldO1xuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMocmVhZEFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5k
ZXhBY2Nlc3NUeXBlLkRZTkFNSUNfTE9PUCwgJ3JlYWRBY2Nlc3Mgbm90IHN1cHBvcnRlZC4nLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBvcCArPSAnICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
dWlfZm91cjsgaSsrKVxuJyArCisgICAgICAgICAgICAgICAgICAnICAgICAgICByZXMgKz0gYXJy
W2ldO1xuJzsKKyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSBpc1ZlcnRleENhc2UgPyBvcCA6
ICcnOworICAgICAgICBmcmFnICs9IGlzVmVydGV4Q2FzZSA/ICcnIDogb3A7CisgICAgICAgIG9w
ID0gJyc7CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkgeworICAgICAgICAgICAgdnR4ICs9
ICcgICAgdl9jb2xvciA9IHZlYzQocmVzJHtQQURESU5HfSk7XG4nOworICAgICAgICAgICAgZnJh
ZyArPSAnICAgIG9fY29sb3IgPSB2X2NvbG9yO1xuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHZ0eCArPSAnICAgIHZfY29vcmRzID0gYV9jb29yZHM7XG4nOworICAg
ICAgICAgICAgZnJhZyArPSAnICAgIG9fY29sb3IgPSB2ZWM0KHJlcyR7UEFERElOR30pO1xuJzsK
KyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSAnfVxuJzsKKyAgICAgICAgZnJhZyArPSAnfVxu
JzsKKworICAgICAgICAvLyBGaWxsIGluIHNoYWRlciB0ZW1wbGF0ZXMuCisgICAgICAgIC8qKiBA
dHlwZSB7T2JqZWN0fSAqLyB2YXIgcGFyYW1zID0ge307CisgICAgCXBhcmFtc1siVkFSX1RZUEUi
XSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhclR5cGUpOworICAgIAlwYXJhbXNb
IkFSUkFZX0xFTiJdID0gIjQiOworICAgIAlwYXJhbXNbIlBSRUNJU0lPTiJdID0gIm1lZGl1bXAi
OworCisgICAgICAgIGlmICh2YXJUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
KQorICAgICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnLCAwLjAsIDAuMCwgMS4wJzsKKyAg
ICAgICAgZWxzZSBpZiAodmFyVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUMyKQorICAgICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnLCAwLjAsIDEuMCc7CisgICAg
ICAgIGVsc2UgaWYgKHZhclR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVD
MykKKyAgICAgICAgICAgIHBhcmFtc1snUEFERElORyddID0gJywgMS4wJzsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcGFyYW1zWydQQURESU5HJ10gPSAnJzsKKworICAgIAkvKiogQHR5cGUg
e3N0cmluZ30gKi8gdmFyIHZlcnRleFNoYWRlclNvdXJjZSA9IHRjdVN0cmluZ1RlbXBsYXRlLnNw
ZWNpYWxpemUodnR4LCBwYXJhbXMpOworICAgIAkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZy
YWdtZW50U2hhZGVyU291cmNlID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShmcmFnLCBw
YXJhbXMpOworCisgICAgICAgIC8qKiBAdHlwZSB7ZnVuY3Rpb24oZ2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dCl9ICovCisgICAgICAgIHZhciBldmFsRnVuYyA9IGVzM2ZTaGFk
ZXJJbmRleGluZ1Rlc3RzLmdldEFycmF5Q29vcmRzRXZhbEZ1bmModmFyVHlwZSk7CisgICAgICAg
IHJldHVybiBuZXcgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuU2hhZGVySW5kZXhpbmdDYXNlKGNh
c2VOYW1lLCBkZXNjcmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCB2YXJUeXBlLCBldmFsRnVuYywgdmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgfTsKKworICAgIC8v
IFZFQ1RPUiBTVUJTQ1JJUFQuCisKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZh
bFN1YnNjcmlwdFZlYzIgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBjLmNv
b3Jkc1swXSArIDAuNSAqIGMuY29vcmRzWzFdOworICAgICAgICBjLmNvbG9yWzFdID0gYy5jb29y
ZHNbMF0gKyAwLjUgKiBjLmNvb3Jkc1sxXTsKKyAgICAgICAgYy5jb2xvclsyXSA9IGMuY29vcmRz
WzBdICsgMC41ICogYy5jb29yZHNbMV07CisgICAgfTsKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMuZXZhbFN1YnNjcmlwdFZlYzMgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIGMuY29s
b3JbMF0gPSBjLmNvb3Jkc1swXSArIDAuNSAqIGMuY29vcmRzWzFdICsgMC4yNSAqIGMuY29vcmRz
WzJdOworICAgICAgICBjLmNvbG9yWzFdID0gYy5jb29yZHNbMF0gKyAwLjUgKiBjLmNvb3Jkc1sx
XSArIDAuMjUgKiBjLmNvb3Jkc1syXTsKKyAgICAgICAgYy5jb2xvclsyXSA9IGMuY29vcmRzWzBd
ICsgMC41ICogYy5jb29yZHNbMV0gKyAwLjI1ICogYy5jb29yZHNbMl07CisgICAgfTsKKyAgICAv
KiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisg
ICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdFZlYzQgPSBmdW5jdGlvbihj
KSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBjLmNvb3Jkc1swXSArIDAuNSAqIGMuY29vcmRzWzFd
ICsgMC4yNSAqIGMuY29vcmRzWzJdICsgMC4xMjUgKiBjLmNvb3Jkc1szXTsKKyAgICAgICAgYy5j
b2xvclsxXSA9IGMuY29vcmRzWzBdICsgMC41ICogYy5jb29yZHNbMV0gKyAwLjI1ICogYy5jb29y
ZHNbMl0gKyAwLjEyNSAqIGMuY29vcmRzWzNdOworICAgICAgICBjLmNvbG9yWzJdID0gYy5jb29y
ZHNbMF0gKyAwLjUgKiBjLmNvb3Jkc1sxXSArIDAuMjUgKiBjLmNvb3Jkc1syXSArIDAuMTI1ICog
Yy5jb29yZHNbM107CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVy
VXRpbC5EYXRhVHlwZX0gZGF0YVR5cGUKKyAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbihnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0KX0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
SW5kZXhpbmdUZXN0cy5nZXRWZWN0b3JTdWJzY3JpcHRFdmFsRnVuYyA9IGZ1bmN0aW9uKGRhdGFU
eXBlKSB7CisgICAgICAgIGlmIChkYXRhVHlwZSA9PT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUMyKSByZXR1cm4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdFZl
YzI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzMpIHJldHVybiBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5ldmFsU3Vic2NyaXB0
VmVjMzsKKyAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfVkVDNCkgcmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxTdWJzY3Jp
cHRWZWM0OworICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRhIHR5cGUu
Jyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYXNlTmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gaXNWZXJ0ZXhDYXNlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB2
YXJUeXBlCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nl
c3NUeXBlfSB3cml0ZUFjY2VzcworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlckluZGV4aW5nVGVz
dHMuVmVjdG9yQWNjZXNzVHlwZX0gcmVhZEFjY2VzcworICAgICAqIEByZXR1cm4ge2VzM2ZTaGFk
ZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4aW5nQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVySW5kZXhpbmdUZXN0cy5jcmVhdGVWZWN0b3JTdWJzY3JpcHRDYXNlID0gZnVuY3Rpb24oY2Fz
ZU5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIHZhclR5cGUsIHdyaXRlQWNjZXNzLCBy
ZWFkQWNjZXNzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4ID0gJyc7
CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZyA9ICcnOworICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wID0gJycgOworCisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgdmVjTGVuID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNp
emUodmFyVHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVjTGVuTmFt
ZSA9IGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0SW50VW5pZm9ybU5hbWUodmVjTGVuKTsKKworICAg
ICAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICAgICAgZnJhZyArPSAnI3ZlcnNp
b24gMzAwIGVzXG4nOworCisgICAgICAgIHZ0eCArPSAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9u
O1xuJyArCisgICAgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX2Nvb3Jkcztcbic7CisgICAg
ICAgIGZyYWcgKz0gJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xv
cjtcbic7CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkgeworICAgICAgICAgICAgdnR4ICs9
ICdvdXQgbWVkaXVtcCB2ZWMzIHZfY29sb3I7XG4nOworICAgICAgICAgICAgZnJhZyArPSAnaW4g
bWVkaXVtcCB2ZWMzIHZfY29sb3I7XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdnR4ICs9ICdvdXQgbWVkaXVtcCB2ZWM0IHZfY29vcmRzO1xuJzsKKyAgICAgICAg
ICAgIGZyYWcgKz0gJ2luIG1lZGl1bXAgdmVjNCB2X2Nvb3Jkcztcbic7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAod3JpdGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3Rv
ckFjY2Vzc1R5cGUuU1VCU0NSSVBUX0RZTkFNSUMgfHwKKyAgICAgICAgICAgIHJlYWRBY2Nlc3Mg
PT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGUuU1VCU0NSSVBUX0RZ
TkFNSUMpeworICAgICAgICAgICAgb3AgKz0gJ3VuaWZvcm0gbWVkaXVtcCBpbnQgdWlfemVybyc7
CisgICAgICAgICAgICBpZiAodmVjTGVuID49IDIpIG9wICs9ICcsIHVpX29uZSc7CisgICAgICAg
ICAgICBpZiAodmVjTGVuID49IDMpIG9wICs9ICcsIHVpX3R3byc7CisgICAgICAgICAgICBpZiAo
dmVjTGVuID49IDQpIG9wICs9ICcsIHVpX3RocmVlJzsKKyAgICAgICAgICAgIG9wICs9ICc7XG4n
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdyaXRlQWNjZXNzID09PSBlczNmU2hhZGVySW5k
ZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlLlNVQlNDUklQVF9EWU5BTUlDX0xPT1AgfHwKKyAg
ICAgICAgICAgIHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3RvckFj
Y2Vzc1R5cGUuU1VCU0NSSVBUX0RZTkFNSUNfTE9PUCkKKyAgICAgICAgICAgIG9wICs9ICd1bmlm
b3JtIG1lZGl1bXAgaW50ICcgKyB2ZWNMZW5OYW1lICsgJztcbic7CisKKyAgICAgICAgdnR4ICs9
IGlzVmVydGV4Q2FzZSA/IG9wIDogJyc7CisgICAgICAgIGZyYWcgKz0gaXNWZXJ0ZXhDYXNlID8g
JycgOiBvcDsKKyAgICAgICAgb3AgPSAnJzsKKworICAgICAgICB2dHggKz0gJ1xuJyArCisgICAg
ICAgICAgICAgICAndm9pZCBtYWluKClcbicgKworICAgICAgICAgICAgICAgJ3tcbicgKworICAg
ICAgICAgICAgICAgJyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nOworCisgICAgICAg
IGZyYWcgKz0gJ1xuJyArCisgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbigpXG4nICsKKyAgICAg
ICAgICAgICAgICAne1xuJzsKKworICAgICAgICAvLyBXcml0ZSB2ZWN0b3IuCisgICAgICAgIGlm
IChpc1ZlcnRleENhc2UpCisgICAgICAgICAgICBvcCArPSAnCSR7UFJFQ0lTSU9OfSAke1ZBUl9U
WVBFfSBjb29yZHMgPSAke1ZBUl9UWVBFfShhX2Nvb3Jkcyk7XG4nOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBvcCArPSAnCSR7UFJFQ0lTSU9OfSAke1ZBUl9UWVBFfSBjb29yZHMgPSAke1ZB
Ul9UWVBFfSh2X2Nvb3Jkcyk7XG4nOworCisgICAgICAgIG9wICs9ICcJJHtQUkVDSVNJT059ICR7
VkFSX1RZUEV9IHRtcDtcbic7CisgICAgICAgIGlmICh3cml0ZUFjY2VzcyA9PT0gZXMzZlNoYWRl
ckluZGV4aW5nVGVzdHMuVmVjdG9yQWNjZXNzVHlwZS5ESVJFQ1QpCisgICAgICAgICAgICBvcCAr
PSAnICAgIHRtcCA9IGNvb3Jkcy4ke1NXSVpaTEV9ICogdmVjNCgxLjAsIDAuNSwgMC4yNSwgMC4x
MjUpLiR7U1dJWlpMRX07XG4nOworICAgICAgICBlbHNlIGlmICh3cml0ZUFjY2VzcyA9PT0gZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMuVmVjdG9yQWNjZXNzVHlwZS5DT01QT05FTlQpIHsKKyAgICAg
ICAgICAgIG9wICs9ICcgICAgdG1wLnggPSBjb29yZHMueDtcbic7CisgICAgICAgICAgICBpZiAo
dmVjTGVuID49IDIpIG9wICs9ICcgICAgdG1wLnkgPSBjb29yZHMueSAqIDAuNTtcbic7CisgICAg
ICAgICAgICBpZiAodmVjTGVuID49IDMpIG9wICs9ICcgICAgdG1wLnogPSBjb29yZHMueiAqIDAu
MjU7XG4nOworICAgICAgICAgICAgaWYgKHZlY0xlbiA+PSA0KSBvcCArPSAnICAgIHRtcC53ID0g
Y29vcmRzLncgKiAwLjEyNTtcbic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAod3JpdGVB
Y2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGUuU1VCU0NS
SVBUX1NUQVRJQykgeworICAgICAgICAgICAgb3AgKz0gJyAgICB0bXBbMF0gPSBjb29yZHMueDtc
bic7CisgICAgICAgICAgICBpZiAodmVjTGVuID49IDIpIG9wICs9ICcgICAgdG1wWzFdID0gY29v
cmRzLnkgKiAwLjU7XG4nOworICAgICAgICAgICAgaWYgKHZlY0xlbiA+PSAzKSBvcCArPSAnICAg
IHRtcFsyXSA9IGNvb3Jkcy56ICogMC4yNTtcbic7CisgICAgICAgICAgICBpZiAodmVjTGVuID49
IDQpIG9wICs9ICcgICAgdG1wWzNdID0gY29vcmRzLncgKiAwLjEyNTtcbic7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSBpZiAod3JpdGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3Rz
LlZlY3RvckFjY2Vzc1R5cGUuU1VCU0NSSVBUX0RZTkFNSUMpIHsKKyAgICAgICAgICAgIG9wICs9
ICcgICAgdG1wW3VpX3plcm9dICA9IGNvb3Jkcy54O1xuJzsKKyAgICAgICAgICAgIGlmICh2ZWNM
ZW4gPj0gMikgb3AgKz0gJyAgICB0bXBbdWlfb25lXSAgID0gY29vcmRzLnkgKiAwLjU7XG4nOwor
ICAgICAgICAgICAgaWYgKHZlY0xlbiA+PSAzKSBvcCArPSAnICAgIHRtcFt1aV90d29dICAgPSBj
b29yZHMueiAqIDAuMjU7XG4nOworICAgICAgICAgICAgaWYgKHZlY0xlbiA+PSA0KSBvcCArPSAn
ICAgIHRtcFt1aV90aHJlZV0gPSBjb29yZHMudyAqIDAuMTI1O1xuJzsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmICh3cml0ZUFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuVmVj
dG9yQWNjZXNzVHlwZS5TVUJTQ1JJUFRfU1RBVElDX0xPT1ApIHsKKyAgICAgICAgICAgIG9wICs9
ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAnICsgdmVjTGVuICsgJzsgaSsrKVxuJzsKKyAgICAg
ICAgICAgIG9wICs9ICcgICAge1xuJzsKKyAgICAgICAgICAgIG9wICs9ICcgICAgICAgIHRtcFtp
XSA9IGNvb3Jkcy54O1xuJzsKKyAgICAgICAgICAgIG9wICs9ICcgICAgICAgIGNvb3JkcyA9IGNv
b3Jkcy4ke1JPVF9TV0laWkxFfSAqIDAuNTtcbic7CisgICAgICAgICAgICBvcCArPSAnICAgIH1c
bic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKHdyaXRlQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NU
eXBlLlNVQlNDUklQVF9EWU5BTUlDX0xPT1AsICd3cml0ZUFjY2VzcyBub3Qgc3VwcG9ydGVkLics
IGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAnICsgdmVjTGVuTmFtZSArICc7IGkrKylcbic7CisgICAgICAgICAgICBvcCArPSAnICAgIHtc
bic7CisgICAgICAgICAgICBvcCArPSAnICAgICAgICB0bXBbaV0gPSBjb29yZHMueDtcbic7Cisg
ICAgICAgICAgICBvcCArPSAnICAgICAgICBjb29yZHMgPSBjb29yZHMuJHtST1RfU1dJWlpMRX0g
KiAwLjU7XG4nOworICAgICAgICAgICAgb3AgKz0gJyAgICB9XG4nOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmVhZCB2ZWN0b3IuCisgICAgICAgIG9wICs9ICcJJHtQUkVDSVNJT059IGZsb2F0
IHJlcyA9IDAuMDtcbic7CisgICAgICAgIGlmIChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5k
ZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlLkRJUkVDVCkKKyAgICAgICAgICAgIG9wICs9ICcJ
cmVzID0gZG90KHRtcCwgJHtWQVJfVFlQRX0oMS4wKSk7XG4nOworICAgICAgICBlbHNlIGlmIChy
ZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlLkNP
TVBPTkVOVCkgeworICAgICAgICAgICAgb3AgKz0gJyAgICByZXMgKz0gdG1wLng7XG4nOworICAg
ICAgICAgICAgaWYgKHZlY0xlbiA+PSAyKSBvcCArPSAnICAgIHJlcyArPSB0bXAueTtcbic7Cisg
ICAgICAgICAgICBpZiAodmVjTGVuID49IDMpIG9wICs9ICcgICAgcmVzICs9IHRtcC56O1xuJzsK
KyAgICAgICAgICAgIGlmICh2ZWNMZW4gPj0gNCkgb3AgKz0gJyAgICByZXMgKz0gdG1wLnc7XG4n
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJ
bmRleGluZ1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGUuU1VCU0NSSVBUX1NUQVRJQykgeworICAgICAg
ICAgICAgb3AgKz0gJyAgICByZXMgKz0gdG1wWzBdO1xuJzsKKyAgICAgICAgICAgIGlmICh2ZWNM
ZW4gPj0gMikgb3AgKz0gJyAgICByZXMgKz0gdG1wWzFdO1xuJzsKKyAgICAgICAgICAgIGlmICh2
ZWNMZW4gPj0gMykgb3AgKz0gJyAgICByZXMgKz0gdG1wWzJdO1xuJzsKKyAgICAgICAgICAgIGlm
ICh2ZWNMZW4gPj0gNCkgb3AgKz0gJyAgICByZXMgKz0gdG1wWzNdO1xuJzsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5W
ZWN0b3JBY2Nlc3NUeXBlLlNVQlNDUklQVF9EWU5BTUlDKSB7CisgICAgICAgICAgICBvcCArPSAn
ICAgIHJlcyArPSB0bXBbdWlfemVyb107XG4nOworICAgICAgICAgICAgaWYgKHZlY0xlbiA+PSAy
KSBvcCArPSAnICAgIHJlcyArPSB0bXBbdWlfb25lXTtcbic7CisgICAgICAgICAgICBpZiAodmVj
TGVuID49IDMpIG9wICs9ICcgICAgcmVzICs9IHRtcFt1aV90d29dO1xuJzsKKyAgICAgICAgICAg
IGlmICh2ZWNMZW4gPj0gNCkgb3AgKz0gJyAgICByZXMgKz0gdG1wW3VpX3RocmVlXTtcbic7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVhZEFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMuVmVjdG9yQWNjZXNzVHlwZS5TVUJTQ1JJUFRfU1RBVElDX0xPT1ApIHsKKyAgICAg
ICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAnICsgdmVjTGVuICsgJzsgaSsr
KVxuJzsKKyAgICAgICAgICAgIG9wICs9ICcgICAgICAgIHJlcyArPSB0bXBbaV07XG4nOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhyZWFk
QWNjZXNzID09PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlLlNVQlND
UklQVF9EWU5BTUlDX0xPT1AsICdyZWFkQWNjZXNzIG5vdCBzdXBwb3J0ZWQnLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgICAgICBvcCArPSAnICAgIGZvciAoaW50IGkgPSAwOyBpIDwgJyArIHZlY0xl
bk5hbWUgKyAnOyBpKyspXG4nOworICAgICAgICAgICAgb3AgKz0gJyAgICAgICAgcmVzICs9IHRt
cFtpXTtcbic7CisgICAgICAgIH0KKworICAgICAgICB2dHggKz0gaXNWZXJ0ZXhDYXNlID8gb3Ag
OiAnJzsKKyAgICAgICAgZnJhZyArPSBpc1ZlcnRleENhc2UgPyAnJyA6IG9wOworICAgICAgICBv
cCA9ICcnOworCisgICAgICAgIGlmIChpc1ZlcnRleENhc2UpIHsKKyAgICAgICAgICAgIHZ0eCAr
PSAnICAgIHZfY29sb3IgPSB2ZWMzKHJlcyk7XG4nOworICAgICAgICAgICAgZnJhZyArPSAnICAg
IG9fY29sb3IgPSB2ZWM0KHZfY29sb3IucmdiLCAxLjApO1xuJzsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHZ0eCArPSAnICAgIHZfY29vcmRzID0gYV9jb29yZHM7XG4n
OworICAgICAgICAgICAgZnJhZyArPSAnICAgIG9fY29sb3IgPSB2ZWM0KHZlYzMocmVzKSwgMS4w
KTtcbic7CisgICAgICAgIH0KKworICAgICAgICB2dHggKz0gJ31cbic7CisgICAgICAgIGZyYWcg
Kz0gJ31cbic7CisKKyAgICAgICAgLy8gRmlsbCBpbiBzaGFkZXIgdGVtcGxhdGVzLgorICAgICAg
ICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciBzX3N3aXp6bGVzID0gWycnLCAneCcs
ICd4eScsICd4eXonLCAneHl6dyddOworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59
ICovIHZhciBzX3JvdFN3aXp6bGVzID0gWycnLCAneCcsICd5eCcsICd5engnLCAneXp3eCddOwor
CisgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLyB2YXIgcGFyYW1zID0ge307CisgICAgICAg
IHBhcmFtc1siVkFSX1RZUEUiXSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhclR5
cGUpOworCSAgICBwYXJhbXNbIlBSRUNJU0lPTiJdID0gIm1lZGl1bXAiOworCSAgICBwYXJhbXNb
IlNXSVpaTEUiXSA9IHNfc3dpenpsZXNbdmVjTGVuXTsKKwkgICAgcGFyYW1zWyJST1RfU1dJWlpM
RSJdID0gc19yb3RTd2l6emxlc1t2ZWNMZW5dOworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgdmVydGV4U2hhZGVyU291cmNlID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6
ZSh2dHgsIHBhcmFtcyk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSB0Y3VTdHJpbmdUZW1wbGF0ZS5zcGVjaWFsaXplKGZyYWcsIHBhcmFt
cyk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtmdW5jdGlvbihnbHNTaGFkZXJSZW5kZXJDYXNlLlNo
YWRlckV2YWxDb250ZXh0KX0gKi8KKyAgICAgICAgdmFyIGV2YWxGdW5jID0gZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMuZ2V0VmVjdG9yU3Vic2NyaXB0RXZhbEZ1bmModmFyVHlwZSk7CisgICAgICAg
IHJldHVybiBuZXcgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuU2hhZGVySW5kZXhpbmdDYXNlKGNh
c2VOYW1lLCBkZXNjcmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCB2YXJUeXBlLCBldmFsRnVuYywgdmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgfTsKKworICAgIC8v
IE1BVFJJWCBTVUJTQ1JJUFQuCisKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZh
bFN1YnNjcmlwdE1hdDIgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIHZhciBzd2l6emxlMDEgPSBk
ZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzAsIDFdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUxMiA9
IGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBbMSwgMl0pOworICAgICAgICBjLmNvbG9yWzBdID0g
c3dpenpsZTAxWzBdICsgMC41ICogc3dpenpsZTEyWzBdOworICAgICAgICBjLmNvbG9yWzFdID0g
c3dpenpsZTAxWzFdICsgMC41ICogc3dpenpsZTEyWzFdOworICAgIH07CisKKyAgICAvKiogQHBh
cmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDJ4MyA9IGZ1bmN0aW9uKGMpIHsK
KyAgICAgICAgdmFyIHN3aXp6bGUwMTIgPSBkZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzAsIDEs
IDJdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUxMjMgPSBkZU1hdGguc3dpenpsZShjLmNvb3Jkcywg
WzEsIDIsIDNdKTsKKyAgICAgICAgYy5jb2xvclswXSA9IHN3aXp6bGUwMTJbMF0gKyAwLjUgKiBz
d2l6emxlMTIzWzBdOworICAgICAgICBjLmNvbG9yWzFdID0gc3dpenpsZTAxMlsxXSArIDAuNSAq
IHN3aXp6bGUxMjNbMV07CisgICAgICAgIGMuY29sb3JbMl0gPSBzd2l6emxlMDEyWzJdICsgMC41
ICogc3dpenpsZTEyM1syXTsKKyAgICB9OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYyAqLworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLmV2YWxTdWJzY3JpcHRNYXQyeDQgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIGMuY29sb3Ig
PSBkZU1hdGguYWRkKAorICAgICAgICAgICAgZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFswLDEs
MiwzXSksCisgICAgICAgICAgICBkZU1hdGguc2NhbGUoZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMs
IFsxLDIsMywwXSksIDAuNSkpOworICAgIH07CisKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJS
ZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMzZlNoYWRlckluZGV4aW5n
VGVzdHMuZXZhbFN1YnNjcmlwdE1hdDN4MiA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgdmFyIHN3
aXp6bGUwMSA9IGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBbMCwgMV0pOworICAgICAgICB2YXIg
c3dpenpsZTEyID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFsxLCAyXSk7CisgICAgICAgIHZh
ciBzd2l6emxlMjMgPSBkZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzIsIDNdKTsKKyAgICAgICAg
Yy5jb2xvclswXSA9IHN3aXp6bGUwMVswXSArIDAuNSAqIHN3aXp6bGUxMlswXSArIDAuMjUgKiBz
d2l6emxlMjNbMF07CisgICAgICAgIGMuY29sb3JbMV0gPSBzd2l6emxlMDFbMV0gKyAwLjUgKiBz
d2l6emxlMTJbMV0gKyAwLjI1ICogc3dpenpsZTIzWzFdOworICAgIH07CisKKyAgICAvKiogQHBh
cmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisgICAgZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDMgPSBmdW5jdGlvbihjKSB7Cisg
ICAgICAgIHZhciBzd2l6emxlMDEyID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFswLCAxLCAy
XSk7CisgICAgICAgIHZhciBzd2l6emxlMTIzID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFsx
LCAyLCAzXSk7CisgICAgICAgIHZhciBzd2l6emxlMjMwID0gZGVNYXRoLnN3aXp6bGUoYy5jb29y
ZHMsIFsyLCAzLCAwXSk7CisgICAgICAgIGMuY29sb3JbMF0gPSBzd2l6emxlMDEyWzBdICsgMC41
ICogc3dpenpsZTEyM1swXSArIDAuMjUgKiBzd2l6emxlMjMwWzBdOworICAgICAgICBjLmNvbG9y
WzFdID0gc3dpenpsZTAxMlsxXSArIDAuNSAqIHN3aXp6bGUxMjNbMV0gKyAwLjI1ICogc3dpenps
ZTIzMFsxXTsKKyAgICAgICAgYy5jb2xvclsyXSA9IHN3aXp6bGUwMTJbMl0gKyAwLjUgKiBzd2l6
emxlMTIzWzJdICsgMC4yNSAqIHN3aXp6bGUyMzBbMl07CisgICAgfTsKKworICAgIC8qKiBAcGFy
YW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMgKi8KKyAgICBlczNm
U2hhZGVySW5kZXhpbmdUZXN0cy5ldmFsU3Vic2NyaXB0TWF0M3g0ID0gZnVuY3Rpb24oYykgewor
ICAgICAgICB2YXIgc3dpenpsZTAxMjMgPSBkZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzAsIDEs
IDIsIDNdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUxMjMwID0gZGVNYXRoLnN3aXp6bGUoYy5jb29y
ZHMsIFsxLCAyLCAzLCAwXSk7CisgICAgICAgIHZhciBzd2l6emxlMjMwMSA9IGRlTWF0aC5zd2l6
emxlKGMuY29vcmRzLCBbMiwgMywgMCwgMV0pOworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFk
ZCgKKyAgICAgICAgICAgIHN3aXp6bGUwMTIzLAorICAgICAgICAgICAgZGVNYXRoLmFkZCgKKyAg
ICAgICAgICAgICAgICBkZU1hdGguc2NhbGUoc3dpenpsZTEyMzAsIDAuNSksCisgICAgICAgICAg
ICAgICAgZGVNYXRoLnNjYWxlKHN3aXp6bGUyMzAxLCAwLjI1KSkpOworICAgIH07CisKKyAgICAv
KiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICovCisg
ICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDR4MiA9IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgdmFyIHN3aXp6bGUwMSA9IGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBb
MCwgMV0pOworICAgICAgICB2YXIgc3dpenpsZTEyID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMs
IFsxLCAyXSk7CisgICAgICAgIHZhciBzd2l6emxlMjMgPSBkZU1hdGguc3dpenpsZShjLmNvb3Jk
cywgWzIsIDNdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUzMCA9IGRlTWF0aC5zd2l6emxlKGMuY29v
cmRzLCBbMywgMF0pOworICAgICAgICBjLmNvbG9yWzBdID0gc3dpenpsZTAxWzBdICsgMC41ICog
c3dpenpsZTEyWzBdICsgMC4yNSAqIHN3aXp6bGUyM1swXSArIDAuMTI1ICogc3dpenpsZTMwWzBd
OworICAgICAgICBjLmNvbG9yWzFdID0gc3dpenpsZTAxWzFdICsgMC41ICogc3dpenpsZTEyWzFd
ICsgMC4yNSAqIHN3aXp6bGUyM1sxXSArIDAuMTI1ICogc3dpenpsZTMwWzFdOworICAgIH07CisK
KyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBj
ICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDR4MyA9IGZ1
bmN0aW9uKGMpIHsKKyAgICAgICAgdmFyIHN3aXp6bGUwMTIgPSBkZU1hdGguc3dpenpsZShjLmNv
b3JkcywgWzAsIDEsIDJdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUxMjMgPSBkZU1hdGguc3dpenps
ZShjLmNvb3JkcywgWzEsIDIsIDNdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUyMzAgPSBkZU1hdGgu
c3dpenpsZShjLmNvb3JkcywgWzIsIDMsIDBdKTsKKyAgICAgICAgdmFyIHN3aXp6bGUzMDEgPSBk
ZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzMsIDAsIDFdKTsKKyAgICAgICAgYy5jb2xvclswXSA9
IHN3aXp6bGUwMTJbMF0gKyAwLjUgKiBzd2l6emxlMTIzWzBdICsgMC4yNSAqIHN3aXp6bGUyMzBb
MF0gKyAwLjEyNSAqIHN3aXp6bGUzMDFbMF07CisgICAgICAgIGMuY29sb3JbMV0gPSBzd2l6emxl
MDEyWzFdICsgMC41ICogc3dpenpsZTEyM1sxXSArIDAuMjUgKiBzd2l6emxlMjMwWzFdICsgMC4x
MjUgKiBzd2l6emxlMzAxWzFdOworICAgICAgICBjLmNvbG9yWzJdID0gc3dpenpsZTAxMlsyXSAr
IDAuNSAqIHN3aXp6bGUxMjNbMl0gKyAwLjI1ICogc3dpenpsZTIzMFsyXSArIDAuMTI1ICogc3dp
enpsZTMwMVsyXTsKKyAgICB9OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dH0gYyAqLworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2
YWxTdWJzY3JpcHRNYXQ0ID0gZnVuY3Rpb24oYykgeworICAgICAgICB2YXIgc3dpenpsZTEyMzAg
PSBkZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzEsIDIsIDMsIDBdKTsKKyAgICAgICAgdmFyIHN3
aXp6bGUyMzAxID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFsyLCAzLCAwLCAxXSk7CisgICAg
ICAgIHZhciBzd2l6emxlMzAxMiA9IGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBbMywgMCwgMSwg
Ml0pOworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGMuY29vcmRz
LAorICAgICAgICAgICAgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUo
c3dpenpsZTEyMzAsIDAuNSksCisgICAgICAgICAgICAgICAgZGVNYXRoLmFkZCgKKyAgICAgICAg
ICAgICAgICAgICAgZGVNYXRoLnNjYWxlKHN3aXp6bGUyMzAxLCAwLjI1KSwKKyAgICAgICAgICAg
ICAgICAgICAgZGVNYXRoLnNjYWxlKHN3aXp6bGUzMDEyLCAwLjEyNSkpKSk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSAge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGRhdGFUeXBl
CisgICAgICogQHJldHVybiB7ZnVuY3Rpb24oZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFs
Q29udGV4dCl9CisgICAgICovCisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0TWF0cml4
U3Vic2NyaXB0RXZhbEZ1bmMgPSBmdW5jdGlvbihkYXRhVHlwZSkgeworICAgICAgICBzd2l0Y2gg
KGRhdGFUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfTUFUMjogcmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxTdWJzY3JpcHRNYXQy
OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYMzog
cmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxTdWJzY3JpcHRNYXQyeDM7CisgICAg
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0OiByZXR1cm4g
ZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDJ4NDsKKyAgICAgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDI6IHJldHVybiBlczNmU2hh
ZGVySW5kZXhpbmdUZXN0cy5ldmFsU3Vic2NyaXB0TWF0M3gyOworICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDM6IHJldHVybiBlczNmU2hhZGVySW5kZXhp
bmdUZXN0cy5ldmFsU3Vic2NyaXB0TWF0MzsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQzWDQ6IHJldHVybiBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5l
dmFsU3Vic2NyaXB0TWF0M3g0OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUX01BVDRYMjogcmV0dXJuIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmV2YWxTdWJz
Y3JpcHRNYXQ0eDI7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfTUFUNFgzOiByZXR1cm4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1h
dDR4MzsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0
OiByZXR1cm4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZXZhbFN1YnNjcmlwdE1hdDQ7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxp
ZCBkYXRhIHR5cGUuJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGNhc2VOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisgICAgICogQHBhcmFtIHtib29sZWFufSBpc1ZlcnRleENhc2UKKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9IHZhclR5cGUKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJJ
bmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZX0gd3JpdGVBY2Nlc3MKKyAgICAgKiBAcGFyYW0g
e2VzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZX0gcmVhZEFjY2VzcworICAg
ICAqIEByZXR1cm4ge2VzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4aW5nQ2FzZX0K
KyAgICAgKi8KKyAgICBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5jcmVhdGVNYXRyaXhTdWJzY3Jp
cHRDYXNlID0gZnVuY3Rpb24oY2FzZU5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIHZh
clR5cGUsIHdyaXRlQWNjZXNzLCByZWFkQWNjZXNzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgdnR4ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIg
ZnJhZyA9ICcnOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wID0gJyc7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Db2xzID0gZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnModmFyVHlwZSk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtUm93cyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRy
aXhOdW1Sb3dzKHZhclR5cGUpOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG1h
dFNpemVOYW1lID0gZ2xzU2hhZGVyUmVuZGVyQ2FzZS5nZXRJbnRVbmlmb3JtTmFtZShudW1Db2xz
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdmVj
VHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZlYyhudW1Sb3dzKTsKKworICAg
ICAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICAgICAgZnJhZyArPSAnI3ZlcnNp
b24gMzAwIGVzXG4nOworCisgICAgICAgIHZ0eCArPSAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9u
O1xuJyArCisgICAgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX2Nvb3Jkcztcbic7CisgICAg
ICAgIGZyYWcgKz0gJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xv
cjtcbic7CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkgeworICAgICAgICAgICAgdnR4ICs9
ICdvdXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nOworICAgICAgICAgICAgZnJhZyArPSAnaW4g
bWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdnR4ICs9ICdvdXQgbWVkaXVtcCB2ZWM0IHZfY29vcmRzO1xuJzsKKyAgICAgICAg
ICAgIGZyYWcgKz0gJ2luIG1lZGl1bXAgdmVjNCB2X2Nvb3Jkcztcbic7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAod3JpdGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4
QWNjZXNzVHlwZS5EWU5BTUlDIHx8IHJlYWRBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDKSB7CisgICAgICAgICAgICBvcCArPSAndW5pZm9y
bSBtZWRpdW1wIGludCB1aV96ZXJvJzsKKyAgICAgICAgICAgIGlmIChudW1Db2xzID49IDIpIG9w
ICs9ICcsIHVpX29uZSc7CisgICAgICAgICAgICBpZiAobnVtQ29scyA+PSAzKSBvcCArPSAnLCB1
aV90d28nOworICAgICAgICAgICAgaWYgKG51bUNvbHMgPj0gNCkgb3AgKz0gJywgdWlfdGhyZWUn
OworICAgICAgICAgICAgb3AgKz0gJztcbic7CisgICAgICAgIH0KKworICAgICAgICBpZiAod3Jp
dGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5EWU5B
TUlDX0xPT1AgfHwgcmVhZEFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhB
Y2Nlc3NUeXBlLkRZTkFNSUNfTE9PUCkKKyAgICAgICAgICAgIG9wICs9ICd1bmlmb3JtIG1lZGl1
bXAgaW50ICcgKyBtYXRTaXplTmFtZSArICc7XG4nOworCisgICAgICAgIHZ0eCArPSBpc1ZlcnRl
eENhc2UgPyBvcCA6ICcnOworICAgICAgICBmcmFnICs9IGlzVmVydGV4Q2FzZSA/ICcnIDogb3A7
CisgICAgICAgIG9wID0gJyc7CisKKyAgICAgICAgdnR4ICs9ICdcbicgKworICAgICAgICAgICAg
ICAgJ3ZvaWQgbWFpbigpXG4nICsKKyAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAg
ICAgICcgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJzsKKworICAgICAgICBmcmFnICs9
ICdcbicgKworICAgICAgICAgICAgICAgICd2b2lkIG1haW4oKVxuJyArCisgICAgICAgICAgICAg
ICAgJ3tcbic7CisKKyAgICAgICAgLy8gV3JpdGUgbWF0cml4LgorICAgICAgICBpZiAoaXNWZXJ0
ZXhDYXNlKQorICAgICAgICAgICAgb3AgKz0gJwkke1BSRUNJU0lPTn0gdmVjNCBjb29yZHMgPSBh
X2Nvb3Jkcztcbic7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wICs9ICcJJHtQUkVDSVNJ
T059IHZlYzQgY29vcmRzID0gdl9jb29yZHM7XG4nOworCisgICAgICAgIG9wICs9ICcJJHtQUkVD
SVNJT059ICR7TUFUX1RZUEV9IHRtcDtcbic7CisgICAgICAgIGlmICh3cml0ZUFjY2VzcyA9PT0g
ZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLlNUQVRJQykgeworICAgICAg
ICAgICAgb3AgKz0gJwl0bXBbMF0gPSAke1ZFQ19UWVBFfShjb29yZHMpO1xuJzsKKyAgICAgICAg
ICAgIGlmIChudW1Db2xzID49IDIpIG9wICs9ICcgICAgdG1wWzFdID0gJHtWRUNfVFlQRX0oY29v
cmRzLnl6d3gpICogMC41O1xuJzsKKyAgICAgICAgICAgIGlmIChudW1Db2xzID49IDMpIG9wICs9
ICcgICAgdG1wWzJdID0gJHtWRUNfVFlQRX0oY29vcmRzLnp3eHkpICogMC4yNTtcbic7CisgICAg
ICAgICAgICBpZiAobnVtQ29scyA+PSA0KSBvcCArPSAnICAgIHRtcFszXSA9ICR7VkVDX1RZUEV9
KGNvb3Jkcy53eHl6KSAqIDAuMTI1O1xuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh3
cml0ZUFjY2VzcyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZ
TkFNSUMpIHsKKyAgICAgICAgICAgIG9wICs9ICcJdG1wW3VpX3plcm9dICA9ICR7VkVDX1RZUEV9
KGNvb3Jkcyk7XG4nOworICAgICAgICAgICAgaWYgKG51bUNvbHMgPj0gMikgb3AgKz0gJyAgICB0
bXBbdWlfb25lXSAgID0gJHtWRUNfVFlQRX0oY29vcmRzLnl6d3gpICogMC41O1xuJzsKKyAgICAg
ICAgICAgIGlmIChudW1Db2xzID49IDMpIG9wICs9ICcgICAgdG1wW3VpX3R3b10gICA9ICR7VkVD
X1RZUEV9KGNvb3Jkcy56d3h5KSAqIDAuMjU7XG4nOworICAgICAgICAgICAgaWYgKG51bUNvbHMg
Pj0gNCkgb3AgKz0gJyAgICB0bXBbdWlfdGhyZWVdID0gJHtWRUNfVFlQRX0oY29vcmRzLnd4eXop
ICogMC4xMjU7XG4nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHdyaXRlQWNjZXNzID09
PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuU1RBVElDX0xPT1ApIHsK
KyAgICAgICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAnICsgbnVtQ29scyAr
ICc7IGkrKylcbic7CisgICAgICAgICAgICBvcCArPSAnICAgIHtcbic7CisgICAgICAgICAgICBv
cCArPSAnCQl0bXBbaV0gPSAke1ZFQ19UWVBFfShjb29yZHMpO1xuJzsKKyAgICAgICAgICAgIG9w
ICs9ICcgICAgICAgIGNvb3JkcyA9IGNvb3Jkcy55end4ICogMC41O1xuJzsKKyAgICAgICAgICAg
IG9wICs9ICcgICAgfVxuJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMod3JpdGVBY2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3Rz
LkluZGV4QWNjZXNzVHlwZS5EWU5BTUlDX0xPT1AsICd3cml0ZUFjY2VzcyBub3Qgc3VwcG9ydGVk
JywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgb3AgKz0gJyAgICBmb3IgKGludCBpID0gMDsg
aSA8ICcgKyBtYXRTaXplTmFtZSArICc7IGkrKylcbic7CisgICAgICAgICAgICBvcCArPSAnICAg
IHtcbic7CisgICAgICAgICAgICBvcCArPSAnICAgICAgICB0bXBbaV0gPSAke1ZFQ19UWVBFfShj
b29yZHMpO1xuJzsKKyAgICAgICAgICAgIG9wICs9ICcgICAgICAgIGNvb3JkcyA9IGNvb3Jkcy55
end4ICogMC41O1xuJzsKKyAgICAgICAgICAgIG9wICs9ICcgICAgfVxuJzsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFJlYWQgbWF0cml4LgorICAgICAgICBvcCArPSAnCSR7UFJFQ0lTSU9OfSAk
e1ZFQ19UWVBFfSByZXMgPSAke1ZFQ19UWVBFfSgwLjApO1xuJzsKKyAgICAgICAgaWYgKHJlYWRB
Y2Nlc3MgPT09IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZS5TVEFUSUMp
IHsKKyAgICAgICAgICAgIG9wICs9ICcgICAgcmVzICs9IHRtcFswXTtcbic7CisgICAgICAgICAg
ICBpZiAobnVtQ29scyA+PSAyKSBvcCArPSAnICAgIHJlcyArPSB0bXBbMV07XG4nOworICAgICAg
ICAgICAgaWYgKG51bUNvbHMgPj0gMykgb3AgKz0gJyAgICByZXMgKz0gdG1wWzJdO1xuJzsKKyAg
ICAgICAgICAgIGlmIChudW1Db2xzID49IDQpIG9wICs9ICcgICAgcmVzICs9IHRtcFszXTtcbic7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVhZEFjY2VzcyA9PT0gZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZTkFNSUMpIHsKKyAgICAgICAgICAgIG9wICs9
ICcgICAgcmVzICs9IHRtcFt1aV96ZXJvXTtcbic7CisgICAgICAgICAgICBpZiAobnVtQ29scyA+
PSAyKSBvcCArPSAnICAgIHJlcyArPSB0bXBbdWlfb25lXTtcbic7CisgICAgICAgICAgICBpZiAo
bnVtQ29scyA+PSAzKSBvcCArPSAnICAgIHJlcyArPSB0bXBbdWlfdHdvXTtcbic7CisgICAgICAg
ICAgICBpZiAobnVtQ29scyA+PSA0KSBvcCArPSAnICAgIHJlcyArPSB0bXBbdWlfdGhyZWVdO1xu
JzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZWFkQWNjZXNzID09PSBlczNmU2hhZGVy
SW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUuU1RBVElDX0xPT1ApIHsKKyAgICAgICAgICAg
IG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAnICsgbnVtQ29scyArICc7IGkrKylcbic7
CisgICAgICAgICAgICBvcCArPSAnICAgICAgICByZXMgKz0gdG1wW2ldO1xuJzsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocmVhZEFjY2Vz
cyA9PT0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlLkRZTkFNSUNfTE9P
UCwgJ3JlYWRBY2Nlc3Mgbm90IHN1cHBvcnRlZCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAg
IG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAnICsgbWF0U2l6ZU5hbWUgKyAnOyBpKysp
XG4nOworICAgICAgICAgICAgb3AgKz0gJyAgICAgICAgcmVzICs9IHRtcFtpXTtcbic7CisgICAg
ICAgIH0KKworICAgICAgICB2dHggKz0gaXNWZXJ0ZXhDYXNlID8gb3AgOiAnJzsKKyAgICAgICAg
ZnJhZyArPSBpc1ZlcnRleENhc2UgPyAnJyA6IG9wOworICAgICAgICBvcCA9ICcnOworCisgICAg
ICAgIGlmIChpc1ZlcnRleENhc2UpIHsKKyAgICAgICAgICAgIHZ0eCArPSAnICAgIHZfY29sb3Ig
PSB2ZWM0KHJlcyR7UEFERElOR30pO1xuJzsKKyAgICAgICAgICAgIGZyYWcgKz0gJyAgICBvX2Nv
bG9yID0gdl9jb2xvcjtcbic7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB2dHggKz0gJyAgICB2X2Nvb3JkcyA9IGFfY29vcmRzO1xuJzsKKyAgICAgICAgICAgIGZyYWcg
Kz0gJyAgICBvX2NvbG9yID0gdmVjNChyZXMke1BBRERJTkd9KTtcbic7CisgICAgICAgIH0KKwor
ICAgICAgICB2dHggKz0gJ31cbic7CisgICAgICAgIGZyYWcgKz0gJ31cbic7CisKKyAgICAgICAg
Ly8gRmlsbCBpbiBzaGFkZXIgdGVtcGxhdGVzLgorCisgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0
fSAqLyB2YXIgcGFyYW1zID0ge307CisgICAgICAgIHBhcmFtc1snTUFUX1RZUEUnXSA9IGdsdVNo
YWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhclR5cGUpOworICAgICAgICBwYXJhbXNbJ1ZFQ19U
WVBFJ10gPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh2ZWNUeXBlKTsKKyAgICAgICAg
cGFyYW1zWydQUkVDSVNJT04nXSA9ICJtZWRpdW1wIjsKKworCisgICAgICAgIGlmIChudW1Sb3dz
ID09PSAyKQorICAgICAgICAgICAgICBwYXJhbXNbJ1BBRERJTkcnXSA9ICcsIDAuMCwgMS4wJzsK
KyAgICAgICAgZWxzZSBpZiAobnVtUm93cyA9PT0gMykKKyAgICAgICAgICAgICAgcGFyYW1zWydQ
QURESU5HJ10gPSAnLCAxLjAnOworICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcmFtc1sn
UEFERElORyddID0gJyc7CisKKyAgICAgIAkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZlcnRl
eFNoYWRlclNvdXJjZSA9IHRjdVN0cmluZ1RlbXBsYXRlLnNwZWNpYWxpemUodnR4LCBwYXJhbXMp
OworICAgICAgCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ21lbnRTaGFkZXJTb3VyY2Ug
PSB0Y3VTdHJpbmdUZW1wbGF0ZS5zcGVjaWFsaXplKGZyYWcsIHBhcmFtcyk7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtmdW5jdGlvbihnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0
KX0gKi8KKyAgICAgICAgdmFyIGV2YWxGdW5jID0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0
TWF0cml4U3Vic2NyaXB0RXZhbEZ1bmModmFyVHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMuU2hhZGVySW5kZXhpbmdDYXNlKGNhc2VOYW1lLCBkZXNjcmlw
dGlvbiwgaXNWZXJ0ZXhDYXNlLCB2YXJUeXBlLCBldmFsRnVuYywgdmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8K
KyAgICBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5TaGFkZXJJbmRleGluZ1Rlc3RzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2luZGV4aW5n
JywgJ0luZGV4aW5nIFRlc3RzJyk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLlNoYWRlckluZGV4aW5nVGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0
Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNo
YWRlckluZGV4aW5nVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMuU2hhZGVySW5kZXhpbmdUZXN0czsKKworICAgIGVzM2ZTaGFkZXJJbmRleGluZ1Rl
c3RzLlNoYWRlckluZGV4aW5nVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHRlc3RHcm91cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlPn0gKi8gdmFy
IHNfc2hhZGVyVHlwZXMgPSBbCisgICAgICAgICAgICBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGUuVkVSVEVYLAorICAgICAgICAgICAgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdN
RU5UCisgICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZT59ICovIHZhciBzX2Zsb2F0QW5kVmVjVHlwZXMgPSBbCisgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9WRUMyLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUMzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0Cisg
ICAgICAgIF07CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkZXNjOworICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdmFyIHNoYWRlclR5cGVOYW1lOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBpc1ZlcnRleENhc2U7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3Jh
bS5zaGFkZXJUeXBlfSAqLyB2YXIgc2hhZGVyVHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciB3cml0ZUFjY2Vzc05hbWU7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgcmVhZEFjY2Vzc05hbWU7CisgICAgICAgIC8vIFZhcnlpbmcgYXJyYXkgYWNjZXNzIGNh
c2VzLgorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgdmFy
eWluZ0dyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgndmFyeWluZ19hcnJheScsICdWYXJ5aW5n
IGFycmF5IGFjY2VzcyB0ZXN0cy4nKTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKHZhcnlp
bmdHcm91cCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8g
dmFyIHZhclR5cGU7CisgICAgICAgIGZvciAodmFyIHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgc19m
bG9hdEFuZFZlY1R5cGVzLmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAgICAgICB2YXJUeXBl
ID0gc19mbG9hdEFuZFZlY1R5cGVzW3R5cGVOZHhdOworICAgICAgICAgICAgZm9yICh2YXIgdmVy
dEFjY2Vzc1N0ciBpbiBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGUpIHsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBmcmFnQWNjZXNzU3RyIGluIGVzM2ZTaGFkZXJJbmRl
eGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdmVy
dEFjY2VzcyA9IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZVt2ZXJ0QWNj
ZXNzU3RyXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZyYWdBY2Nlc3MgPSBlczNmU2hhZGVy
SW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGVbZnJhZ0FjY2Vzc1N0cl07CisgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydEFjY2Vzc05hbWUgPSBlczNm
U2hhZGVySW5kZXhpbmdUZXN0cy5nZXRJbmRleEFjY2Vzc1R5cGVOYW1lKHZlcnRBY2Nlc3MpOwor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdBY2Nlc3NO
YW1lID0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0SW5kZXhBY2Nlc3NUeXBlTmFtZShmcmFn
QWNjZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVOYW1lKHZhclR5cGUpICsgJ18nICsgdmVydEFjY2Vzc05hbWUgKyAnX3dyaXRlXycgKyBm
cmFnQWNjZXNzTmFtZSArICdfcmVhZCc7CisgICAgICAgICAgICAgICAgICAgIGRlc2MgPSAnVmFy
eWluZyBhcnJheSB3aXRoICcgKyB2ZXJ0QWNjZXNzTmFtZSArICcgd3JpdGUgaW4gdmVydGV4IHNo
YWRlciBhbmQgJyArIGZyYWdBY2Nlc3NOYW1lICsgJyByZWFkIGluIGZyYWdtZW50IHNoYWRlci4n
OworICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nR3JvdXAuYWRkQ2hpbGQoZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMuY3JlYXRlVmFyeWluZ0FycmF5Q2FzZShuYW1lLCBkZXNjLCB2YXJUeXBlLCB2
ZXJ0QWNjZXNzLCBmcmFnQWNjZXNzKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gVW5pZm9ybSBhcnJheSBhY2Nlc3MgY2FzZXMuCisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciB1bmlmb3JtR3Jv
dXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJ1bmlmb3JtX2FycmF5IiwgIlVuaWZvcm0gYXJyYXkg
YWNjZXNzIHRlc3RzLiIpOworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQodW5pZm9ybUdyb3Vw
KTsKKworICAgICAgICBmb3IgKHZhciB0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHNfZmxvYXRBbmRW
ZWNUeXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdmFyVHlwZSA9IHNfZmxv
YXRBbmRWZWNUeXBlc1t0eXBlTmR4XTsKKyAgICAgICAgICAgIGZvciAodmFyIHJlYWRBY2Nlc3NT
dHIgaW4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHJlYWRBY2Nlc3MgPSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFj
Y2Vzc1R5cGVbcmVhZEFjY2Vzc1N0cl07CisgICAgICAgICAgICAgICAgcmVhZEFjY2Vzc05hbWUg
PSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5nZXRJbmRleEFjY2Vzc1R5cGVOYW1lKHJlYWRBY2Nl
c3MpOworICAgICAgICAgICAgICAgIGZvciAodmFyIHNoYWRlclR5cGVOZHggPSAwOyBzaGFkZXJU
eXBlTmR4IDwgc19zaGFkZXJUeXBlcy5sZW5ndGg7IHNoYWRlclR5cGVOZHgrKykgeworICAgICAg
ICAgICAgICAgICAgICBzaGFkZXJUeXBlID0gc19zaGFkZXJUeXBlc1tzaGFkZXJUeXBlTmR4XTsK
KyAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZU5hbWUgPSBnbHVTaGFkZXJQcm9ncmFtLmdl
dFNoYWRlclR5cGVOYW1lKHNoYWRlclR5cGUpOworICAgICAgICAgICAgICAgICAgICBuYW1lID0g
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUodmFyVHlwZSkgKyAiXyIgKyByZWFkQWNjZXNz
TmFtZSArICJfcmVhZF8iICsgc2hhZGVyVHlwZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGRl
c2MgPSAiVW5pZm9ybSBhcnJheSB3aXRoICIgKyByZWFkQWNjZXNzTmFtZSArICIgcmVhZCBpbiAi
ICsgc2hhZGVyVHlwZU5hbWUgKyAiIHNoYWRlci4iOworICAgICAgICAgICAgICAgICAgICBpc1Zl
cnRleENhc2UgPSBzaGFkZXJUeXBlID09PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVS
VEVYOworICAgICAgICAgICAgICAgICAgICB1bmlmb3JtR3JvdXAuYWRkQ2hpbGQoZXMzZlNoYWRl
ckluZGV4aW5nVGVzdHMuY3JlYXRlVW5pZm9ybUFycmF5Q2FzZShuYW1lLCBkZXNjLCBpc1ZlcnRl
eENhc2UsIHZhclR5cGUsIHJlYWRBY2Nlc3MpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBUZW1wb3JhcnkgYXJyYXkgYWNjZXNzIGNh
c2VzLgorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgdG1w
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJ0bXBfYXJyYXkiLCAiVGVtcG9yYXJ5IGFycmF5
IGFjY2VzcyB0ZXN0cy4iKTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKHRtcEdyb3VwKTsK
KworICAgICAgICBmb3IgKHZhciB0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHNfZmxvYXRBbmRWZWNU
eXBlcy5sZW5ndGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgdmFyVHlwZSA9IHNfZmxvYXRB
bmRWZWNUeXBlc1t0eXBlTmR4XTsKKyAgICAgICAgICAgIGZvciAodmFyIHdyaXRlQWNjZXNzIGlu
IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZSkgeworICAgICAgICAgICAg
ICAgIGZvciAodmFyIHJlYWRBY2Nlc3MgaW4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhB
Y2Nlc3NUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlQWNjZXNzTmFtZSA9IGVzM2ZT
aGFkZXJJbmRleGluZ1Rlc3RzLmdldEluZGV4QWNjZXNzVHlwZU5hbWUoZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlW3dyaXRlQWNjZXNzXSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlYWRBY2Nlc3NOYW1lID0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0SW5kZXhBY2Nl
c3NUeXBlTmFtZShlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGVbcmVhZEFj
Y2Vzc10pOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHNoYWRlclR5cGVOZHggPSAw
OyBzaGFkZXJUeXBlTmR4IDwgc19zaGFkZXJUeXBlcy5sZW5ndGg7IHNoYWRlclR5cGVOZHgrKykg
eworICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHNfc2hhZGVyVHlwZXNbc2hh
ZGVyVHlwZU5keF07CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlTmFtZSA9IGds
dVNoYWRlclByb2dyYW0uZ2V0U2hhZGVyVHlwZU5hbWUoc2hhZGVyVHlwZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUodmFyVHlw
ZSkgKyAiXyIgKyB3cml0ZUFjY2Vzc05hbWUgKyAiX3dyaXRlXyIgKyByZWFkQWNjZXNzTmFtZSAr
ICJfcmVhZF8iICsgc2hhZGVyVHlwZU5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXNj
ID0gIlRlbXBvcmFyeSBhcnJheSB3aXRoICIgKyB3cml0ZUFjY2Vzc05hbWUgKyAiIHdyaXRlIGFu
ZCAiICsgcmVhZEFjY2Vzc05hbWUgKyAiIHJlYWQgaW4gIiArIHNoYWRlclR5cGVOYW1lICsgIiBz
aGFkZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzVmVydGV4Q2FzZSA9IChzaGFkZXJU
eXBlID09PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcEdyb3VwLmFkZENoaWxkKGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmNy
ZWF0ZVRtcEFycmF5Q2FzZShuYW1lLCBkZXNjLCBpc1ZlcnRleENhc2UsIHZhclR5cGUsIGVzM2ZT
aGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZVt3cml0ZUFjY2Vzc10sIGVzM2ZTaGFk
ZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZVtyZWFkQWNjZXNzXSkpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gVmVjdG9yIGluZGV4aW5nIHdpdGggc3Vic2NyaXB0cy4KKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0YVR5cGU+fSAqLyB2YXIgc192ZWN0
b3JUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVD
MiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywKKyAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNAorICAgICAgICBdOworCisg
ICAgICAgIGZvciAodmFyIHR5cGVOZHggPSAwOyB0eXBlTmR4IDwgc192ZWN0b3JUeXBlcy5sZW5n
dGg7IHR5cGVOZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0gKi8gdmFyIHZlY0dyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgidmVjdG9yX3N1YnNj
cmlwdCIsICJWZWN0b3Igc3Vic2NyaXB0IGluZGV4aW5nLiIpOworICAgICAgICAgICAgdGVzdEdy
b3VwLmFkZENoaWxkKHZlY0dyb3VwKTsKKworICAgICAgICAgICAgdmFyVHlwZSA9IHNfdmVjdG9y
VHlwZXNbdHlwZU5keF07CisgICAgICAgICAgICBmb3IgKHZhciB3cml0ZUFjY2VzcyBpbiBlczNm
U2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlKSB7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgcmVhZEFjY2VzcyBpbiBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nl
c3NUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlQWNjZXNzTmFtZSA9IGVzM2ZTaGFk
ZXJJbmRleGluZ1Rlc3RzLmdldFZlY3RvckFjY2Vzc1R5cGVOYW1lKGVzM2ZTaGFkZXJJbmRleGlu
Z1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGVbd3JpdGVBY2Nlc3NdKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVhZEFjY2Vzc05hbWUgPSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5nZXRWZWN0b3JBY2Nl
c3NUeXBlTmFtZShlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5WZWN0b3JBY2Nlc3NUeXBlW3JlYWRB
Y2Nlc3NdKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzaGFkZXJUeXBlTmR4ID0g
MDsgc2hhZGVyVHlwZU5keCA8IHNfc2hhZGVyVHlwZXMubGVuZ3RoOyBzaGFkZXJUeXBlTmR4Kysp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGUgPSBzX3NoYWRlclR5cGVzW3No
YWRlclR5cGVOZHhdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZU5hbWUgPSBn
bHVTaGFkZXJQcm9ncmFtLmdldFNoYWRlclR5cGVOYW1lKHNoYWRlclR5cGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhclR5
cGUpICsgIl8iICsgd3JpdGVBY2Nlc3NOYW1lICsgIl93cml0ZV8iICsgcmVhZEFjY2Vzc05hbWUg
KyAiX3JlYWRfIiArIHNoYWRlclR5cGVOYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgZGVz
YyA9ICJWZWN0b3Igc3Vic2NyaXB0IGFjY2VzcyB3aXRoICIgKyB3cml0ZUFjY2Vzc05hbWUgKyAi
IHdyaXRlIGFuZCAiICsgcmVhZEFjY2Vzc05hbWUgKyAiIHJlYWQgaW4gIiArIHNoYWRlclR5cGVO
YW1lICsgIiBzaGFkZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzVmVydGV4Q2FzZSA9
IHNoYWRlclR5cGUgPT09IGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVg7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2ZWNHcm91cC5hZGRDaGlsZChlczNmU2hhZGVySW5kZXhpbmdU
ZXN0cy5jcmVhdGVWZWN0b3JTdWJzY3JpcHRDYXNlKG5hbWUsIGRlc2MsIGlzVmVydGV4Q2FzZSwg
dmFyVHlwZSwgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuVmVjdG9yQWNjZXNzVHlwZVt3cml0ZUFj
Y2Vzc10sIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlZlY3RvckFjY2Vzc1R5cGVbcmVhZEFjY2Vz
c10pKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE1hdHJpeCBpbmRleGluZyB3aXRoIHN1YnNj
cmlwdHMuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8dGN1VGVzdENhc2UuRGVxcFRlc3Q+fSAq
LyB2YXIgbWF0R3JvdXAgPSBbCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJtYXRy
aXhfc3Vic2NyaXB0IiwgIk1hdHJpeCBzdWJzY3JpcHQgaW5kZXhpbmcuIiksCisgICAgICAgICAg
ICB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJtYXRyaXhfc3Vic2NyaXB0IiwgIk1hdHJpeCBzdWJzY3Jp
cHQgaW5kZXhpbmcuIiksCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCJtYXRyaXhf
c3Vic2NyaXB0IiwgIk1hdHJpeCBzdWJzY3JpcHQgaW5kZXhpbmcuIiksCisgICAgICAgIF07Cisg
ICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBtYXRHcm91cC5sZW5ndGg7ICsraWkpIHsKKyAg
ICAgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChtYXRHcm91cFtpaV0pOworICAgICAgICB9CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8gdmFy
IHNfbWF0cml4VHlwZXMgPSBbCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDIsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJY
MywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0LAorICAg
ICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDIsCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDMsCisgICAgICAgICAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUNFgyLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQ0WDMsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X01BVDQKKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciB0eXBlTmR4ID0gMDsgdHlwZU5k
eCA8IHNfbWF0cml4VHlwZXMubGVuZ3RoOyB0eXBlTmR4KyspIHsKKyAgICAgICAgICAgIHZhclR5
cGUgPSBzX21hdHJpeFR5cGVzW3R5cGVOZHhdOworICAgICAgICAgICAgZm9yICh2YXIgd3JpdGVB
Y2Nlc3MgaW4gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuSW5kZXhBY2Nlc3NUeXBlKSB7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgcmVhZEFjY2VzcyBpbiBlczNmU2hhZGVySW5kZXhpbmdUZXN0
cy5JbmRleEFjY2Vzc1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVBY2Nlc3NOYW1l
ID0gZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuZ2V0SW5kZXhBY2Nlc3NUeXBlTmFtZShlczNmU2hh
ZGVySW5kZXhpbmdUZXN0cy5JbmRleEFjY2Vzc1R5cGVbd3JpdGVBY2Nlc3NdKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVhZEFjY2Vzc05hbWUgPSBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5nZXRJ
bmRleEFjY2Vzc1R5cGVOYW1lKGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlw
ZVtyZWFkQWNjZXNzXSk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc2hhZGVyVHlw
ZU5keCA9IDA7IHNoYWRlclR5cGVOZHggPCBzX3NoYWRlclR5cGVzLmxlbmd0aDsgc2hhZGVyVHlw
ZU5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlID0gc19zaGFkZXJU
eXBlc1tzaGFkZXJUeXBlTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGVO
YW1lID0gZ2x1U2hhZGVyUHJvZ3JhbS5nZXRTaGFkZXJUeXBlTmFtZShzaGFkZXJUeXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFt
ZSh2YXJUeXBlKSArICJfIiArIHdyaXRlQWNjZXNzTmFtZSArICJfd3JpdGVfIiArIHJlYWRBY2Nl
c3NOYW1lICsgIl9yZWFkXyIgKyBzaGFkZXJUeXBlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc2MgPSAiVmVjdG9yIHN1YnNjcmlwdCBhY2Nlc3Mgd2l0aCAiICsgd3JpdGVBY2Nlc3NO
YW1lICsgIiB3cml0ZSBhbmQgIiArIHJlYWRBY2Nlc3NOYW1lICsgIiByZWFkIGluICIgKyBzaGFk
ZXJUeXBlTmFtZSArICIgc2hhZGVyLiI7CisgICAgICAgICAgICAgICAgICAgICAgICBpc1ZlcnRl
eENhc2UgPSBzaGFkZXJUeXBlID09PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVY
OworICAgICAgICAgICAgICAgICAgICAgICAgbWF0R3JvdXBbdHlwZU5keCAlIG1hdEdyb3VwLmxl
bmd0aF0uYWRkQ2hpbGQoZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuY3JlYXRlTWF0cml4U3Vic2Ny
aXB0Q2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBkZXNjLCBpc1ZlcnRl
eENhc2UsIHZhclR5cGUsIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZVt3
cml0ZUFjY2Vzc10sIGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLkluZGV4QWNjZXNzVHlwZVtyZWFk
QWNjZXNzXSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJ1biB0ZXN0
CisgICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisgICAgICov
CisgICAgZXMzZlNoYWRlckluZGV4aW5nVGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCwgcmFu
Z2UpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3Qg
cGFyYW1ldGVycworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAg
ICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLlNoYWRlckluZGV4
aW5nVGVzdHMoKSk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2Yg
dGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RD
YXNlcy5mdWxsTmFtZSgpKTsKKyAgICAgICAgZGVzY3JpcHRpb24oc3RhdGUudGVzdENhc2VzLmdl
dERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAocmFuZ2Up
CisgICAgICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAgICAgICAgLy9S
dW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9w
dGlvbnMoJ0ZhaWxlZCB0byBlczNmU2hhZGVySW5kZXhpbmdUZXN0cy5ydW4gdGVzdHMnLCBmYWxz
ZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAg
IH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyTG9vcFRl
c3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJMb29wVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIy
YjEyMWJkYTZhY2Q5ZmFmYTM4YzM2NjI1NDM0Y2I2ZTQ4Y2ZkMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmU2hhZGVyTG9vcFRlc3RzLmpzCkBAIC0wLDAgKzEsMTI1MSBAQAorLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBF
UyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmU2hhZGVyTG9vcFRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1U3RyaW5nVGVtcGxhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5k
ZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScpOworZ29v
Zy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7CisKK2dvb2cu
c2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZlNoYWRlckxvb3BUZXN0cyA9IGZ1bmN0aW9uYWwu
Z2xlczMuZXMzZlNoYWRlckxvb3BUZXN0czsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5j
b21tb24udGN1VGVzdENhc2U7Cit2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVNYXRoOwordmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0
aWw7Cit2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbTsKK3ZhciBnbHNTaGFkZXJSZW5kZXJDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVy
UmVuZGVyQ2FzZTsKK3ZhciB0Y3VTdHJpbmdUZW1wbGF0ZSA9IGZyYW1ld29yay5jb21tb24udGN1
U3RyaW5nVGVtcGxhdGU7CisvLyBSZXBlYXRlZCB3aXRoIGZvciwgd2hpbGUsIGRvLXdoaWxlLiBF
eGFtcGxlcyBnaXZlbiBhcyAnZm9yJyBsb29wcy4KKy8vIFJlcGVhdGVkIGZvciBjb25zdCwgdW5p
Zm9ybSwgZHluYW1pYyBsb29wcy4KKworLyoqCisgKiBAZW51bSB7bnVtYmVyfQorICovCitlczNm
U2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlID0geworICAgIExPT1BDQVNFX0VNUFRZX0JPRFk6IDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgKC4uLikgeyB9CisgICAgTE9P
UENBU0VfSU5GSU5JVEVfV0lUSF9VTkNPTkRJVElPTkFMX0JSRUFLX0ZJUlNUOiAxLCAgICAgICAg
Ly8gZm9yICguLi4pIHsgYnJlYWs7IDxib2R5PjsgfQorICAgIExPT1BDQVNFX0lORklOSVRFX1dJ
VEhfVU5DT05ESVRJT05BTF9CUkVBS19MQVNUOiAyLCAgICAgICAgLy8gZm9yICguLi4pIHsgPGJv
ZHk+OyBicmVhazsgfQorICAgIExPT1BDQVNFX0lORklOSVRFX1dJVEhfQ09ORElUSU9OQUxfQlJF
QUs6IDMsICAgICAgICAgICAgICAgIC8vIGZvciAoLi4uKSB7IDxib2R5PjsgaWYgKGNvbmQpIGJy
ZWFrOyB9CisgICAgTE9PUENBU0VfU0lOR0xFX1NUQVRFTUVOVDogNCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGZvciAoLi4uKSBzdGF0ZW1lbnQ7CisgICAgTE9PUENBU0VfQ09N
UE9VTkRfU1RBVEVNRU5UOiA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgKC4u
LikgeyBzdGF0ZW1lbnQ7IHN0YXRlbWVudDsgfQorICAgIExPT1BDQVNFX1NFUVVFTkNFX1NUQVRF
TUVOVDogNiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yICguLi4pIHN0YXRlbWVu
dCwgc3RhdGVtZW50OworICAgIExPT1BDQVNFX05PX0lURVJBVElPTlM6IDcsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIChpPTA7IGk8MDsgaSsrKSAuLi4KKyAgICBM
T09QQ0FTRV9TSU5HTEVfSVRFUkFUSU9OOiA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZm9yIChpPTA7IGk8MTsgaSsrKSAuLi4KKyAgICBMT09QQ0FTRV9TRUxFQ1RfSVRFUkFU
SU9OX0NPVU5UOiA5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciAoaT0wOyBpPGE/Yjpj
OyBpKyspIC4uLgorICAgIExPT1BDQVNFX0NPTkRJVElPTkFMX0NPTlRJTlVFOiAxMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yICguLi4pIHsgaWYgKGNvbmQpIGNvbnRpbnVlOyB9
CisgICAgTE9PUENBU0VfVU5DT05ESVRJT05BTF9DT05USU5VRTogMTEsICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZm9yICguLi4pIHsgPGJvZHk+OyBjb250aW51ZTsgfQorICAgIExPT1BDQVNF
X09OTFlfQ09OVElOVUU6IDEyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGZvciAoLi4uKSB7IGNvbnRpbnVlOyB9CisgICAgTE9PUENBU0VfRE9VQkxFX0NPTlRJTlVFOiAx
MywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciAoLi4uKSB7IGlmIChjb25k
KSBjb250aW51ZTsgPGJvZHk+OyBjb250aW51ZTsgfQorICAgIExPT1BDQVNFX0NPTkRJVElPTkFM
X0JSRUFLOiAxNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciAoLi4uKSB7
IGlmIChjb25kKSBicmVhazsgfQorICAgIExPT1BDQVNFX1VOQ09ORElUSU9OQUxfQlJFQUs6IDE1
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgKC4uLikgeyA8Ym9keT47IGJyZWFr
OyB9CisgICAgTE9PUENBU0VfUFJFX0lOQ1JFTUVOVDogMTYsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZm9yICguLi47ICsraSkgeyA8Ym9keT47IH0KKyAgICBMT09QQ0FT
RV9QT1NUX0lOQ1JFTUVOVDogMTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBm
b3IgKC4uLjsgaSsrKSB7IDxib2R5PjsgfQorICAgIExPT1BDQVNFX01JWEVEX0JSRUFLX0NPTlRJ
TlVFOiAxOCwKKyAgICBMT09QQ0FTRV9WRUNUT1JfQ09VTlRFUjogMTksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBmb3IgKGl2ZWMzIG5keCA9IC4uLjsgbmR4LnggPCBuZHgueTsg
bmR4LnggKz0gbmR4LnopIHsgLi4uIH0KKyAgICBMT09QQ0FTRV8xMDFfSVRFUkFUSU9OUzogMjAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIGZvciAxMDEgaXRlcmF0aW9u
cworICAgIExPT1BDQVNFX1NFUVVFTkNFOiAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdHdvIGxvb3BzIGluIHNlcXVlbmNlCisgICAgTE9PUENBU0VfTkVTVEVE
OiAyMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHdvIG5lc3Rl
ZCBsb29wcworICAgIExPT1BDQVNFX05FU1RFRF9TRVFVRU5DRTogMjMsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0d28gbG9vcHMgaW4gc2VxdWVuY2UgbmVzdGVkIGluc2lkZSBh
IHRoaXJkCisgICAgTE9PUENBU0VfTkVTVEVEX1RSSUNLWV9EQVRBRkxPV18xOiAyNCwgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBuZXN0ZWQgbG9vcHMgd2l0aCB0cmlja3kgZGF0YSBmbG93Cisg
ICAgTE9PUENBU0VfTkVTVEVEX1RSSUNLWV9EQVRBRkxPV18yOiAyNSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG5lc3RlZCBsb29wcyB3aXRoIHRyaWNreSBkYXRhIGZsb3cKK307CisKKy8qKgor
ICogQHBhcmFtIHtlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlfSBsb29wQ2FzZQorICogQHJl
dHVybiB7c3RyaW5nfQorICovCitlczNmU2hhZGVyTG9vcFRlc3RzLmdldExvb3BDYXNlTmFtZSA9
IGZ1bmN0aW9uKGxvb3BDYXNlKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2
YXIgc19uYW1lcyA9IFsKKyAgICAgICAgJ2VtcHR5X2JvZHknLAorICAgICAgICAnaW5maW5pdGVf
d2l0aF91bmNvbmRpdGlvbmFsX2JyZWFrX2ZpcnN0JywKKyAgICAgICAgJ2luZmluaXRlX3dpdGhf
dW5jb25kaXRpb25hbF9icmVha19sYXN0JywKKyAgICAgICAgJ2luZmluaXRlX3dpdGhfY29uZGl0
aW9uYWxfYnJlYWsnLAorICAgICAgICAnc2luZ2xlX3N0YXRlbWVudCcsCisgICAgICAgICdjb21w
b3VuZF9zdGF0ZW1lbnQnLAorICAgICAgICAnc2VxdWVuY2Vfc3RhdGVtZW50JywKKyAgICAgICAg
J25vX2l0ZXJhdGlvbnMnLAorICAgICAgICAnc2luZ2xlX2l0ZXJhdGlvbicsCisgICAgICAgICdz
ZWxlY3RfaXRlcmF0aW9uX2NvdW50JywKKyAgICAgICAgJ2NvbmRpdGlvbmFsX2NvbnRpbnVlJywK
KyAgICAgICAgJ3VuY29uZGl0aW9uYWxfY29udGludWUnLAorICAgICAgICAnb25seV9jb250aW51
ZScsCisgICAgICAgICdkb3VibGVfY29udGludWUnLAorICAgICAgICAnY29uZGl0aW9uYWxfYnJl
YWsnLAorICAgICAgICAndW5jb25kaXRpb25hbF9icmVhaycsCisgICAgICAgICdwcmVfaW5jcmVt
ZW50JywKKyAgICAgICAgJ3Bvc3RfaW5jcmVtZW50JywKKyAgICAgICAgJ21peGVkX2JyZWFrX2Nv
bnRpbnVlJywKKyAgICAgICAgJ3ZlY3Rvcl9jb3VudGVyJywKKyAgICAgICAgJzEwMV9pdGVyYXRp
b25zJywKKyAgICAgICAgJ3NlcXVlbmNlJywKKyAgICAgICAgJ25lc3RlZCcsCisgICAgICAgICdu
ZXN0ZWRfc2VxdWVuY2UnLAorICAgICAgICAnbmVzdGVkX3RyaWNreV9kYXRhZmxvd18xJywKKyAg
ICAgICAgJ25lc3RlZF90cmlja3lfZGF0YWZsb3dfMicKKyAgICBdOworICAgIC8vIERFX1NUQVRJ
Q19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfbmFtZXMpID09IGVzM2ZTaGFkZXJMb29wVGVz
dHMuTG9vcENhc2UuTE9PUENBU0VfTEFTVCk7CisgICAgLy8gREVfQVNTRVJUKGRlSW5Cb3VuZHMz
MigoaW50KWxvb3BDYXNlLCAwLCBMT09QQ0FTRV9MQVNUKSk7CisgICAgcmV0dXJuIHNfbmFtZXNb
bG9vcENhc2VdOworfTsKKworLy8gQ29tcGxleCBsb29wIGNhc2VzLgorCisvKmVudW0gTG9vcEJv
ZHkKK3sKKyAgICBMT09QQk9EWV9SRUFEX1VOSUZPUk0gPSAwLAorICAgIExPT1BCT0RZX1JFQURf
VU5JRk9STV9BUlJBWSwKKyAgICBMT09QQk9EWV9SRUFEXworfTsqLworCisvKioKKyAqIEBlbnVt
IHtudW1iZXJ9CisgKi8KK2VzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGUgPSB7CisgICAgTE9P
UFRZUEVfRk9SOiAwLAorICAgIExPT1BUWVBFX1dISUxFOiAxLAorICAgIExPT1BUWVBFX0RPX1dI
SUxFOiAyCit9OworCisvKioKKyAqIEBwYXJhbSB7ZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wVHlw
ZX0gbG9vcFR5cGUKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZXMzZlNoYWRlckxvb3BUZXN0
cy5nZXRMb29wVHlwZU5hbWUgPSBmdW5jdGlvbihsb29wVHlwZSkgeworICAgIC8qKiBAdHlwZSB7
QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHNfbmFtZXMgPSBbCisgICAgICAgICdmb3InLAorICAgICAg
ICAnd2hpbGUnLAorICAgICAgICAnZG9fd2hpbGUnCisgICAgXTsKKworICAgIC8vIERFX1NUQVRJ
Q19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfbmFtZXMpID09PSBlczNmU2hhZGVyTG9vcFRl
c3RzLkxvb3BUeXBlLkxPT1BUWVBFX0xBU1QpOworICAgIC8vIERFX0FTU0VSVChkZUluQm91bmRz
MzIoKGludClsb29wVHlwZSwgMCwgTE9PUFRZUEVfTEFTVCkpOworICAgIHJldHVybiBzX25hbWVz
W2xvb3BUeXBlXTsKK307CisKKy8qKgorICogQGVudW0ge251bWJlcn0KKyAqLworZXMzZlNoYWRl
ckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlID0geworICAgIExPT1BDT1VOVF9DT05TVEFOVDogMCwK
KyAgICBMT09QQ09VTlRfVU5JRk9STTogMSwKKyAgICBMT09QQ09VTlRfRFlOQU1JQzogMgorfTsK
KworLyoqCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZX0gY291
bnRUeXBlCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2VzM2ZTaGFkZXJMb29wVGVzdHMuZ2V0
TG9vcENvdW50VHlwZU5hbWUgPSBmdW5jdGlvbihjb3VudFR5cGUpIHsKKyAgICAvKiogQHR5cGUg
e0FycmF5PHN0cmluZz59ICovIHZhciBzX25hbWVzID0gICAgWworICAgICAgICAnY29uc3RhbnQn
LAorICAgICAgICAndW5pZm9ybScsCisgICAgICAgICdkeW5hbWljJworICAgIF07CisKKyAgICAv
LyBERV9TVEFUSUNfQVNTRVJUKERFX0xFTkdUSF9PRl9BUlJBWShzX25hbWVzKSA9PSBlczNmU2hh
ZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5cGUuTE9PUENPVU5UX0xBU1QpOworICAgIC8vIERFX0FT
U0VSVChkZUluQm91bmRzMzIoKGludCljb3VudFR5cGUsIDAsIGVzM2ZTaGFkZXJMb29wVGVzdHMu
TG9vcENvdW50VHlwZS5MT09QQ09VTlRfTEFTVCkpOworICAgIHJldHVybiBzX25hbWVzW2NvdW50
VHlwZV07Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJF
dmFsQ29udGV4dH0gYworICovCitlczNmU2hhZGVyTG9vcFRlc3RzLmV2YWxMb29wMEl0ZXJzID0g
ZnVuY3Rpb24oYykgeworICAgIHZhciBzd2l6emxlZCA9IGRlTWF0aC5zd2l6emxlKGMuY29vcmRz
LCBbMCwgMSwgMl0pOworICAgIGMuY29sb3JbMF0gPSBzd2l6emxlZFswXTsKKyAgICBjLmNvbG9y
WzFdID0gc3dpenpsZWRbMV07CisgICAgYy5jb2xvclsyXSA9IHN3aXp6bGVkWzJdOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMK
KyAqLworZXMzZlNoYWRlckxvb3BUZXN0cy5ldmFsTG9vcDFJdGVycyA9IGZ1bmN0aW9uKGMpIHsK
KyAgICB2YXIgc3dpenpsZWQgPSBkZU1hdGguc3dpenpsZShjLmNvb3JkcywgWzEsIDIsIDNdKTsK
KyAgICBjLmNvbG9yWzBdID0gc3dpenpsZWRbMF07CisgICAgYy5jb2xvclsxXSA9IHN3aXp6bGVk
WzFdOworICAgIGMuY29sb3JbMl0gPSBzd2l6emxlZFsyXTsKK307CisKKy8qKgorICogQHBhcmFt
IHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgKi8KK2VzM2ZTaGFk
ZXJMb29wVGVzdHMuZXZhbExvb3AySXRlcnMgPSBmdW5jdGlvbihjKSB7CisgICAgdmFyIHN3aXp6
bGVkID0gZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFsyLCAzLCAwXSk7CisgICAgYy5jb2xvclsw
XSA9IHN3aXp6bGVkWzBdOworICAgIGMuY29sb3JbMV0gPSBzd2l6emxlZFsxXTsKKyAgICBjLmNv
bG9yWzJdID0gc3dpenpsZWRbMl07Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICovCitlczNmU2hhZGVyTG9vcFRlc3RzLmV2
YWxMb29wM0l0ZXJzID0gZnVuY3Rpb24oYykgeworICAgIHZhciBzd2l6emxlZCA9IGRlTWF0aC5z
d2l6emxlKGMuY29vcmRzLCBbMywgMCwgMV0pOworICAgIGMuY29sb3JbMF0gPSBzd2l6emxlZFsw
XTsKKyAgICBjLmNvbG9yWzFdID0gc3dpenpsZWRbMV07CisgICAgYy5jb2xvclsyXSA9IHN3aXp6
bGVkWzJdOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbnVtSXRlcnMKKyAqIEByZXR1
cm4ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbEZ1bmN9CisgKi8KK2VzM2ZTaGFkZXJM
b29wVGVzdHMuZ2V0TG9vcEV2YWxGdW5jID0gZnVuY3Rpb24obnVtSXRlcnMpIHsKKyAgICBzd2l0
Y2ggKG51bUl0ZXJzICUgNCkgeworICAgICAgICBjYXNlIDA6IHJldHVybiBlczNmU2hhZGVyTG9v
cFRlc3RzLmV2YWxMb29wMEl0ZXJzOworICAgICAgICBjYXNlIDE6ICAgIHJldHVybiBlczNmU2hh
ZGVyTG9vcFRlc3RzLmV2YWxMb29wMUl0ZXJzOworICAgICAgICBjYXNlIDI6ICAgIHJldHVybiBl
czNmU2hhZGVyTG9vcFRlc3RzLmV2YWxMb29wMkl0ZXJzOworICAgICAgICBjYXNlIDM6ICAgIHJl
dHVybiBlczNmU2hhZGVyTG9vcFRlc3RzLmV2YWxMb29wM0l0ZXJzOworICAgIH0KKworICAgIHRo
cm93IG5ldyBFcnJvcignSW52YWxpZCBsb29wIGl0ZXJhdGlvbiBjb3VudC4nKTsKK307CisKKy8v
IFNoYWRlckxvb3BDYXNlCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7Z2xz
U2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJSZW5kZXJDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtib29sZWFufSBp
c1ZlcnRleENhc2UKKyAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsRnVu
Y30gZXZhbEZ1bmMKKyAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJ0U2hhZGVyU291cmNlCisgKiBAcGFy
YW0ge3N0cmluZ30gZnJhZ1NoYWRlclNvdXJjZQorICovCitlczNmU2hhZGVyTG9vcFRlc3RzLlNo
YWRlckxvb3BDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGlzVmVydGV4Q2FzZSwg
ZXZhbEZ1bmMsIHZlcnRTaGFkZXJTb3VyY2UsIGZyYWdTaGFkZXJTb3VyY2UpIHsKKyAgICBnbHNT
aGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgaXNWZXJ0ZXhDYXNlLCBldmFsRnVuYyk7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMubV92ZXJ0U2hhZGVyU291cmNlID0gdmVydFNoYWRlclNvdXJjZTsKKyAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2UgPSBmcmFnU2hhZGVyU291cmNl
OworfTsKKworZXMzZlNoYWRlckxvb3BUZXN0cy5TaGFkZXJMb29wQ2FzZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5
cGUpOworZXMzZlNoYWRlckxvb3BUZXN0cy5TaGFkZXJMb29wQ2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmU2hhZGVyTG9vcFRlc3RzLlNoYWRlckxvb3BDYXNlOworCisvLyBUZXN0IGNh
c2UgY3JlYXRpb24uCisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGNhc2VOYW1lCisgKiBAcGFy
YW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNl
CisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGV9IGxvb3BUeXBlCisgKiBA
cGFyYW0ge2VzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZX0gbG9vcENvdW50VHlwZQor
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gbG9vcENvdW50UHJlY2lzaW9uCisg
KiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IGxvb3BDb3VudERhdGFUeXBlCisgKiBA
cmV0dXJuIHtlczNmU2hhZGVyTG9vcFRlc3RzLlNoYWRlckxvb3BDYXNlfQorICovCitlczNmU2hh
ZGVyTG9vcFRlc3RzLmNyZWF0ZUdlbmVyaWNMb29wQ2FzZSA9IGZ1bmN0aW9uKGNhc2VOYW1lLCBk
ZXNjcmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCBsb29wVHlwZSwgbG9vcENvdW50VHlwZSwgbG9vcENv
dW50UHJlY2lzaW9uLCBsb29wQ291bnREYXRhVHlwZSkgeworCS8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgdnR4ID0gJyc7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnID0gJyc7
CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBvcCA9ICcnOworCisJdnR4ICs9ICcjdmVy
c2lvbiAzMDAgZXNcbic7CisJZnJhZyArPSAnI3ZlcnNpb24gMzAwIGVzXG4nOworCisJdnR4ICs9
ICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nOworCXZ0eCArPSAnaW4gaGlnaHAgdmVjNCBh
X2Nvb3Jkcztcbic7CisJZnJhZyArPSAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAg
dmVjNCBvX2NvbG9yO1xuJzsKKworCWlmIChsb29wQ291bnRUeXBlID09PSBlczNmU2hhZGVyTG9v
cFRlc3RzLkxvb3BDb3VudFR5cGUuTE9PUENPVU5UX0RZTkFNSUMpCisJCXZ0eCArPSAnaW4gbWVk
aXVtcCBmbG9hdCBhX29uZTtcbic7CisKKwlpZiAoaXNWZXJ0ZXhDYXNlKSB7CisJCXZ0eCArPSAn
b3V0IG1lZGl1bXAgdmVjMyB2X2NvbG9yO1xuJzsKKwkJZnJhZyArPSAnaW4gbWVkaXVtcCB2ZWMz
IHZfY29sb3I7XG4nOworCX0KKwllbHNlIHsKKwkJdnR4ICs9ICdvdXQgbWVkaXVtcCB2ZWM0IHZf
Y29vcmRzO1xuJzsKKwkJZnJhZyArPSAnaW4gbWVkaXVtcCB2ZWM0IHZfY29vcmRzO1xuJzsKKwor
CQlpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBl
LkxPT1BDT1VOVF9EWU5BTUlDKSB7CisJCQl2dHggKz0gJ291dCBtZWRpdW1wIGZsb2F0IHZfb25l
O1xuJzsKKwkJCWZyYWcgKz0gJ2luIG1lZGl1bXAgZmxvYXQgdl9vbmU7XG4nOworCQl9CisJfQor
CisJLy8gXHRvZG8gW3BldHJpXSBQYXNzIG51bUxvb3BJdGVycyBmcm9tIG91dHNpZGU/CisJLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Mb29wSXRlcnMgPSAzOworICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIGlzSW50Q291bnRlciA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUlu
dE9ySVZlYyhsb29wQ291bnREYXRhVHlwZSk7CisKKwlpZiAoaXNJbnRDb3VudGVyKSB7CisJCWlm
IChsb29wQ291bnRUeXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5cGUuTE9P
UENPVU5UX1VOSUZPUk0gfHwgbG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5M
b29wQ291bnRUeXBlLkxPT1BDT1VOVF9EWU5BTUlDKQorCQkJb3AgKz0gJ3VuaWZvcm0gJHtDT1VO
VEVSX1BSRUNJU0lPTn0gaW50ICcgKyBnbHNTaGFkZXJSZW5kZXJDYXNlLmdldEludFVuaWZvcm1O
YW1lKG51bUxvb3BJdGVycykgKyAnO1xuJzsKKwl9CisJZWxzZSB7CisJCWlmIChsb29wQ291bnRU
eXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5cGUuTE9PUENPVU5UX1VOSUZP
Uk0gfHwgbG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBl
LkxPT1BDT1VOVF9EWU5BTUlDKQorCQkJb3AgKz0gJ3VuaWZvcm0gJHtDT1VOVEVSX1BSRUNJU0lP
Tn0gZmxvYXQgJyArIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0RmxvYXRGcmFjdGlvblVuaWZvcm1O
YW1lKG51bUxvb3BJdGVycykgKyAnO1xuJzsKKworCQlpZiAobnVtTG9vcEl0ZXJzICE9IDEpCisJ
CQlvcCArPSAndW5pZm9ybSAke0NPVU5URVJfUFJFQ0lTSU9OfSBmbG9hdCB1Zl9vbmU7XG4nOwor
CX0KKworCXZ0eCArPSBpc1ZlcnRleENhc2UgPyBvcCA6ICcnOworCWZyYWcgKz0gaXNWZXJ0ZXhD
YXNlID8gJycgOiBvcDsKKwlvcCA9ICcnOworCisJdnR4ICs9ICJcbiIgKworCSAgICAgICAidm9p
ZCBtYWluKClcbiIgKworCSAgICAgICAie1xuIiArCisJICAgICAgICIJZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uO1xuIjsKKworCWZyYWcgKz0gIlxuIiArCisJICAgICAgICAidm9pZCBtYWluKClc
biIgKworCSAgICAgICAgIntcbiI7CisKKwlpZiAoaXNWZXJ0ZXhDYXNlKQorCQl2dHggKz0gJwkk
e1BSRUNJU0lPTn0gdmVjNCBjb29yZHMgPSBhX2Nvb3Jkcztcbic7CisJZWxzZQorCQlmcmFnICs9
ICcJJHtQUkVDSVNJT059IHZlYzQgY29vcmRzID0gdl9jb29yZHM7XG4nOworCisJaWYgKGxvb3BD
b3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRf
RFlOQU1JQykgeworCQlpZiAoaXNJbnRDb3VudGVyKSB7CisJCQlpZiAoaXNWZXJ0ZXhDYXNlKQor
CQkJCXZ0eCArPSAnCSR7Q09VTlRFUl9QUkVDSVNJT059IGludCBvbmUgPSBpbnQoYV9vbmUgKyAw
LjUpO1xuJzsKKwkJCWVsc2UKKwkJCQlmcmFnICs9ICcJJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50
IG9uZSA9IGludCh2X29uZSArIDAuNSk7XG4nOworCQl9CisJCWVsc2UgeworCQkJaWYgKGlzVmVy
dGV4Q2FzZSkKKwkJCQl2dHggKz0gJwkke0NPVU5URVJfUFJFQ0lTSU9OfSBmbG9hdCBvbmUgPSBh
X29uZTtcbic7CisJCQllbHNlCisJCQkJZnJhZyArPSAnCSR7Q09VTlRFUl9QUkVDSVNJT059IGZs
b2F0IG9uZSA9IHZfb25lO1xuJzsKKwkJfQorCX0KKworCS8vIFJlYWQgYXJyYXkuCisJb3AgKz0g
Jwkke1BSRUNJU0lPTn0gdmVjNCByZXMgPSBjb29yZHM7XG4nOworCisJLy8gTG9vcCBpdGVyYXRp
b24gY291bnQuCisJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBpdGVyTWF4U3RyOworCisJaWYg
KGlzSW50Q291bnRlcikgeworCQlpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BU
ZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BDT1VOVF9DT05TVEFOVCkKKwkJCWl0ZXJNYXhTdHIgPSBu
dW1Mb29wSXRlcnMudG9TdHJpbmcoKTsKKwkJZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMz
ZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BDT1VOVF9VTklGT1JNKQorCQkJaXRl
ck1heFN0ciA9IGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0SW50VW5pZm9ybU5hbWUobnVtTG9vcEl0
ZXJzKTsKKwkJZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5M
b29wQ291bnRUeXBlLkxPT1BDT1VOVF9EWU5BTUlDKQorCQkJaXRlck1heFN0ciA9IGdsc1NoYWRl
clJlbmRlckNhc2UuZ2V0SW50VW5pZm9ybU5hbWUobnVtTG9vcEl0ZXJzKSArICcqb25lJzsKKwkJ
ZWxzZQorCQkJdGhyb3cgbmV3IEVycm9yKCdMb29wIENvdW50IFR5cGUgbm90IHN1cHBvcnRlZDog
JyArIGxvb3BDb3VudFR5cGUpOworCX0KKwllbHNlIHsKKwkJaWYgKGxvb3BDb3VudFR5cGUgPT09
IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfQ09OU1RBTlQpCisJ
CQlpdGVyTWF4U3RyID0gJzEuMCc7CisJCWVsc2UgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZT
aGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfVU5JRk9STSkKKwkJCWl0ZXJN
YXhTdHIgPSAndWZfb25lJzsKKwkJZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRl
ckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BDT1VOVF9EWU5BTUlDKQorCQkJaXRlck1heFN0
ciA9ICd1Zl9vbmUqb25lJzsKKwkJZWxzZQorCQkJdGhyb3cgbmV3IEVycm9yKCdMb29wIENvdW50
IFR5cGUgbm90IHN1cHBvcnRlZDogJyArIGxvb3BDb3VudFR5cGUpOworCX0KKworCS8vIExvb3Ag
b3BlcmF0aW9ucy4KKwkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGluaXRWYWx1ZSA9IGlzSW50
Q291bnRlciA/ICcwJyA6ICcwLjA1JzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGxv
b3BDb3VudERlY2xTdHIgPSAnJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShsb29w
Q291bnRQcmVjaXNpb24pICsgJyAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUobG9v
cENvdW50RGF0YVR5cGUpICsgJyBuZHggPSAnICsgaW5pdFZhbHVlOworICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgbG9vcENtcFN0ciA9ICduZHggPCAnICsgaXRlck1heFN0cjsKKyAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGluY3JlbWVudFN0cjsKKworCWlmIChpc0ludENvdW50
ZXIpCisJCWluY3JlbWVudFN0ciA9ICduZHgrKyc7CisJZWxzZSB7CisJCWlmIChsb29wQ291bnRU
eXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5cGUuTE9PUENPVU5UX0NPTlNU
QU5UKQorCQkJaW5jcmVtZW50U3RyID0gJ25keCArPSAnICsgKDEuMCAvIG51bUxvb3BJdGVycyk7
CisJCWVsc2UgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENv
dW50VHlwZS5MT09QQ09VTlRfVU5JRk9STSkKKwkJCWluY3JlbWVudFN0ciA9ICduZHggKz0gJyAr
IGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0RmxvYXRGcmFjdGlvblVuaWZvcm1OYW1lKG51bUxvb3BJ
dGVycyk7CisJCWVsc2UgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMu
TG9vcENvdW50VHlwZS5MT09QQ09VTlRfRFlOQU1JQykKKwkJCWluY3JlbWVudFN0ciA9ICduZHgg
Kz0gJyArIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0RmxvYXRGcmFjdGlvblVuaWZvcm1OYW1lKG51
bUxvb3BJdGVycykgKyAnKm9uZSc7CisJCWVsc2UKKwkJCXRocm93IG5ldyBFcnJvcignTG9vcCBD
b3VudCBUeXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBsb29wQ291bnRUeXBlKTsKKwl9CisKKwkvLyBM
b29wIGJvZHkuCisJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBsb29wQm9keSA9ICcJCXJlcyA9
IHJlcy55end4O1xuJzs7CisKKwlpZiAobG9vcFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMu
TG9vcFR5cGUuTE9PUFRZUEVfRk9SKSB7CisJCW9wICs9ICcJZm9yICgnICsgbG9vcENvdW50RGVj
bFN0ciArICc7ICcgKyBsb29wQ21wU3RyICsgJzsgJyArIGluY3JlbWVudFN0ciArICcpXG4nICsK
KwkJICAgICAgJwl7XG4nICsKKwkJICAgICAgbG9vcEJvZHkgKworCQkgICAgICAnCX1cbic7CisJ
fQorCWVsc2UgaWYgKGxvb3BUeXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BUeXBlLkxP
T1BUWVBFX1dISUxFKSB7CisJCW9wICs9ICdcdCcgKyBsb29wQ291bnREZWNsU3RyICsgJztcbicg
KworCQkgICAgICAnCXdoaWxlICgnICsgbG9vcENtcFN0ciArICcpXG4nICsKKwkJICAgICAgJwl7
XG4nICsKKwkJICAgICAgbG9vcEJvZHkgKworCQkgICAgICAnXHRcdCcgKyBpbmNyZW1lbnRTdHIg
KyAnO1xuJyArCisJCSAgICAgICcJfVxuJzsKKwl9CisJZWxzZSBpZiAobG9vcFR5cGUgPT09IGVz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGUuTE9PUFRZUEVfRE9fV0hJTEUpCisJeworCQlvcCAr
PSAnXHQnICsgbG9vcENvdW50RGVjbFN0ciArICc7XG4nICsKKwkJICAgICAgJwlkb1xuJyArCisJ
CSAgICAgICcJe1xuJyArCisJCSAgICAgIGxvb3BCb2R5ICsKKwkJICAgICAgJ1x0XHQnICsgaW5j
cmVtZW50U3RyICsgJztcbicgKworCQkgICAgICAnCX0gd2hpbGUgKCcgKyBsb29wQ21wU3RyICsg
Jyk7XG4nOworCX0KKwllbHNlCisJCXRocm93IG5ldyBFcnJvcignTG9vcCBUeXBlIG5vdCBzdXBw
b3J0ZWQ6ICcgKyBsb29wVHlwZSk7CisKKwl2dHggKz0gaXNWZXJ0ZXhDYXNlID8gb3AgOiAnJzsK
KwlmcmFnICs9IGlzVmVydGV4Q2FzZSA/ICcnIDogb3A7CisJb3AgPSAnJzsKKworCWlmIChpc1Zl
cnRleENhc2UpIHsKKwkJdnR4ICs9ICcJdl9jb2xvciA9IHJlcy5yZ2I7XG4nOworCQlmcmFnICs9
ICcJb19jb2xvciA9IHZlYzQodl9jb2xvci5yZ2IsIDEuMCk7XG4nOworCX0KKwllbHNlIHsKKwkJ
dnR4ICs9ICcJdl9jb29yZHMgPSBhX2Nvb3Jkcztcbic7CisJCWZyYWcgKz0gJwlvX2NvbG9yID0g
dmVjNChyZXMucmdiLCAxLjApO1xuJzsKKworCQlpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNo
YWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BDT1VOVF9EWU5BTUlDKQorCQkJdnR4ICs9
ICcJdl9vbmUgPSBhX29uZTtcbic7CisJfQorCisJdnR4ICs9ICd9XG4nOworCWZyYWcgKz0gJ31c
bic7CisKKwkvLyBGaWxsIGluIHNoYWRlciB0ZW1wbGF0ZXMuCisJLyoqIEB0eXBlIHtPYmplY3R9
ICovIHZhciBwYXJhbXMgPSB7fTsKKwlwYXJhbXNbJ0xPT1BfVkFSX1RZUEUnXSA9IGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVOYW1lKGxvb3BDb3VudERhdGFUeXBlKTsKKwlwYXJhbXNbJ1BSRUNJ
U0lPTiddID0gJ21lZGl1bXAnOworCXBhcmFtc1snQ09VTlRFUl9QUkVDSVNJT04nXSA9IGdsdVNo
YWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShsb29wQ291bnRQcmVjaXNpb24pOworCisJLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSB0Y3VTdHJpbmdUZW1wbGF0
ZS5zcGVjaWFsaXplKHZ0eCwgcGFyYW1zKTsKKwkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZy
YWdtZW50U2hhZGVyU291cmNlID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShmcmFnLCBw
YXJhbXMpOworCisJLy8gQ3JlYXRlIHRoZSBjYXNlLgorCS8qKiBAdHlwZSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsRnVuY30gKi8KKwl2YXIgZXZhbEZ1bmMgPSBlczNmU2hhZGVyTG9v
cFRlc3RzLmdldExvb3BFdmFsRnVuYyhudW1Mb29wSXRlcnMpOworICAgIHJldHVybiBuZXcgZXMz
ZlNoYWRlckxvb3BUZXN0cy5TaGFkZXJMb29wQ2FzZShjYXNlTmFtZSwgZGVzY3JpcHRpb24sIGlz
VmVydGV4Q2FzZSwgZXZhbEZ1bmMsIHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOworfTsKKworLy8gXHRvZG8gW3BldHJpXSBHZW5lcmFsaXplIHRvIGZsb2F0IGFzIHdl
bGw/CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGNhc2VOYW1lCisgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisgKiBAcGFy
YW0ge2VzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2V9IGxvb3BDYXNlCisgKiBAcGFyYW0ge2Vz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGV9IGxvb3BUeXBlCisgKiBAcGFyYW0ge2VzM2ZTaGFk
ZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZX0gbG9vcENvdW50VHlwZQorICogQHJldHVybiB7ZXMz
ZlNoYWRlckxvb3BUZXN0cy5TaGFkZXJMb29wQ2FzZX0KKyAqLworZXMzZlNoYWRlckxvb3BUZXN0
cy5jcmVhdGVTcGVjaWFsTG9vcENhc2UgPSBmdW5jdGlvbihjYXNlTmFtZSwgZGVzY3JpcHRpb24s
IGlzVmVydGV4Q2FzZSwgbG9vcENhc2UsIGxvb3BUeXBlLCBsb29wQ291bnRUeXBlKSB7CisgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2dHggPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIGZyYWcgPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wID0g
Jyc7CisKKyAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICBmcmFnICs9ICcjdmVy
c2lvbiAzMDAgZXNcbic7CisKKyAgICB2dHggKz0gJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtc
bic7CisgICAgdnR4ICs9ICdpbiBoaWdocCB2ZWM0IGFfY29vcmRzO1xuJzsKKyAgICBmcmFnICs9
ICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nOworCisg
ICAgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlw
ZS5MT09QQ09VTlRfRFlOQU1JQykKKyAgICAgICAgdnR4ICs9ICdpbiBtZWRpdW1wIGZsb2F0IGFf
b25lO1xuJzsKKworICAgIC8vIEF0dHJpYnV0ZSBhbmQgdmFyeWluZ3MuCisgICAgaWYgKGlzVmVy
dGV4Q2FzZSkgeworICAgICAgICB2dHggKz0gJ291dCBtZWRpdW1wIHZlYzMgdl9jb2xvcjtcbic7
CisgICAgICAgIGZyYWcgKz0gJ2luIG1lZGl1bXAgdmVjMyB2X2NvbG9yO1xuJzsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICAgIHZ0eCArPSAnb3V0IG1lZGl1bXAgdmVjNCB2X2Nvb3Jkcztcbic7
CisgICAgICAgIGZyYWcgKz0gJ2luIG1lZGl1bXAgdmVjNCB2X2Nvb3Jkcztcbic7CisKKyAgICAg
ICAgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlw
ZS5MT09QQ09VTlRfRFlOQU1JQykgeworICAgICAgICAgICAgdnR4ICs9ICdvdXQgbWVkaXVtcCBm
bG9hdCB2X29uZTtcbic7CisgICAgICAgICAgICBmcmFnICs9ICdpbiBtZWRpdW1wIGZsb2F0IHZf
b25lO1xuJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsb29wQ2FzZSA9PT0gZXMzZlNo
YWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRUxFQ1RfSVRFUkFUSU9OX0NPVU5UKQor
ICAgICAgICBvcCArPSAndW5pZm9ybSBib29sIHViX3RydWU7XG4nOworCisgICAgb3AgKz0gJ3Vu
aWZvcm0gJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50IHVpX3plcm8sIHVpX29uZSwgdWlfdHdvLCB1
aV90aHJlZSwgdWlfZm91ciwgdWlfZml2ZSwgdWlfc2l4O1xuJzsKKyAgICBpZiAobG9vcENhc2Ug
PT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfMTAxX0lURVJBVElPTlMp
CisgICAgICAgIG9wICs9ICd1bmlmb3JtICR7Q09VTlRFUl9QUkVDSVNJT059IGludCB1aV9vbmVI
dW5kcmVkT25lO1xuJzsKKworICAgIHZ0eCArPSBpc1ZlcnRleENhc2UgPyBvcCA6ICcnOworICAg
IGZyYWcgKz0gaXNWZXJ0ZXhDYXNlID8gJycgOiBvcDsKKyAgICBvcCA9ICcnOworCisgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBpdGVyQ291bnQgPSAzOyAvLyB2YWx1ZSB0byB1c2UgaW4g
bG9vcAorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtSXRlcnMgPSAzOyAvLyBhY3R1
YWwgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKKworICAgIHZ0eCArPSAnXG4nICsKKyAgICAgICAgICAg
J3ZvaWQgbWFpbigpXG4nICsKKyAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAnICAgIGds
X1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbic7CisKKyAgICBmcmFnICs9ICdcbicgKworICAgICAg
ICAgICAgJ3ZvaWQgbWFpbigpXG4nICsKKyAgICAgICAgICAgICd7XG4nOworCisgICAgaWYgKGxv
b3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09V
TlRfRFlOQU1JQykgeworICAgICAgICBpZiAoaXNWZXJ0ZXhDYXNlKQorICAgICAgICAgICAgdnR4
ICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50IG9uZSA9IGludChhX29uZSArIDAuNSk7
XG4nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFnICs9ICcgICAgJHtDT1VOVEVSX1BS
RUNJU0lPTn0gaW50IG9uZSA9IGludCh2X29uZSArIDAuNSk7XG4nOworICAgIH0KKworICAgIGlm
IChpc1ZlcnRleENhc2UpCisgICAgICAgIHZ0eCArPSAnICAgICR7UFJFQ0lTSU9OfSB2ZWM0IGNv
b3JkcyA9IGFfY29vcmRzO1xuJzsKKyAgICBlbHNlCisgICAgICAgIGZyYWcgKz0gJyAgICAke1BS
RUNJU0lPTn0gdmVjNCBjb29yZHMgPSB2X2Nvb3Jkcztcbic7CisKKyAgICAvLyBSZWFkIGFycmF5
LgorICAgIG9wICs9ICcgICAgJHtQUkVDSVNJT059IHZlYzQgcmVzID0gY29vcmRzO1xuJzsKKwor
ICAgIC8vIEhhbmRsZSBhbGwgbG9vcCB0eXBlcy4KKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGNvdW50ZXJQcmVjaXNpb25TdHIgPSAnbWVkaXVtcCc7CisgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBmb3JMb29wU3RyID0gJyc7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciB3aGlsZUxvb3BTdHIgPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGRvV2hp
bGVMb29wUHJlU3RyID0gJyc7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkb1doaWxl
TG9vcFBvc3RTdHIgPSAnJzsKKworICAgIGlmIChsb29wVHlwZSA9PT0gZXMzZlNoYWRlckxvb3BU
ZXN0cy5Mb29wVHlwZS5MT09QVFlQRV9GT1IpIHsKKyAgICAgICAgc3dpdGNoIChsb29wQ2FzZSkg
eworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X0VNUFRZX0JPRFk6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAwOworICAgICAgICAgICAg
ICAgIG9wICs9ICcgICAgJHtGT1JfTE9PUH0ge31cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FT
RV9JTkZJTklURV9XSVRIX1VOQ09ORElUSU9OQUxfQlJFQUtfRklSU1Q6CisgICAgICAgICAgICAg
ICAgbnVtSXRlcnMgPSAwOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgZm9yICg7OykgeyBi
cmVhazsgcmVzID0gcmVzLnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9JTkZJ
TklURV9XSVRIX1VOQ09ORElUSU9OQUxfQlJFQUtfTEFTVDoKKyAgICAgICAgICAgICAgICBudW1J
dGVycyA9IDE7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICBmb3IgKDs7KSB7IHJlcyA9IHJl
cy55end4OyBicmVhazsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX0lORklOSVRFX1dJ
VEhfQ09ORElUSU9OQUxfQlJFQUs6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAyOworICAg
ICAgICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50IGkgPSAwO1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICBmb3IgKDs7KSB7IHJlcyA9IHJlcy55end4
OyBpZiAoaSA9PSAke09ORX0pIGJyZWFrOyBpKys7IH1cbic7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09Q
Q0FTRV9TSU5HTEVfU1RBVEVNRU5UOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtGT1Jf
TE9PUH0gcmVzID0gcmVzLnl6d3g7XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfQ09NUE9V
TkRfU1RBVEVNRU5UOgorICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9IDI7CisgICAgICAgICAg
ICAgICAgbnVtSXRlcnMgPSAyICogaXRlckNvdW50OworICAgICAgICAgICAgICAgIG9wICs9ICcg
ICAgJHtGT1JfTE9PUH0geyByZXMgPSByZXMueXp3eDsgcmVzID0gcmVzLnl6d3g7IH1cbic7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BU
ZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRVFVRU5DRV9TVEFURU1FTlQ6CisgICAgICAgICAgICAg
ICAgaXRlckNvdW50ID0gMjsKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDIgKiBpdGVyQ291
bnQ7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0ZPUl9MT09QfSByZXMgPSByZXMueXp3
eCwgcmVzID0gcmVzLnl6d3g7XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfTk9fSVRFUkFU
SU9OUzoKKyAgICAgICAgICAgICAgICBpdGVyQ291bnQgPSAwOworICAgICAgICAgICAgICAgIG51
bUl0ZXJzID0gMDsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9IHJlcyA9
IHJlcy55end4O1xuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX1NJTkdMRV9JVEVSQVRJT046
CisgICAgICAgICAgICAgICAgaXRlckNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICBudW1JdGVy
cyA9IDE7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0ZPUl9MT09QfSByZXMgPSByZXMu
eXp3eDtcbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMz
ZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRUxFQ1RfSVRFUkFUSU9OX0NPVU5U
OgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAodWJfdHJ1
ZSA/ICR7SVRFUl9DT1VOVH0gOiAwKTsgaSsrKSByZXMgPSByZXMueXp3eDtcbic7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5M
b29wQ2FzZS5MT09QQ0FTRV9DT05ESVRJT05BTF9DT05USU5VRToKKyAgICAgICAgICAgICAgICBu
dW1JdGVycyA9IGl0ZXJDb3VudCAtIDE7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0ZP
Ul9MT09QfSB7IGlmIChpID09ICR7VFdPfSkgY29udGludWU7IHJlcyA9IHJlcy55end4OyB9XG4n
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJM
b29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfVU5DT05ESVRJT05BTF9DT05USU5VRToKKyAgICAg
ICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9IHsgcmVzID0gcmVzLnl6d3g7IGNvbnRp
bnVlOyB9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfT05MWV9DT05USU5VRToKKyAgICAg
ICAgICAgICAgICBudW1JdGVycyA9IDA7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0ZP
Ul9MT09QfSB7IGNvbnRpbnVlOyB9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfRE9VQkxF
X0NPTlRJTlVFOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gaXRlckNvdW50IC0gMTsKKyAg
ICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9IHsgaWYgKGkgPT0gJHtUV099KSBj
b250aW51ZTsgcmVzID0gcmVzLnl6d3g7IGNvbnRpbnVlOyB9XG4nOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2Uu
TE9PUENBU0VfQ09ORElUSU9OQUxfQlJFQUs6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAy
OworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtGT1JfTE9PUH0geyBpZiAoaSA9PSAke1RX
T30pIGJyZWFrOyByZXMgPSByZXMueXp3eDsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X1VOQ09ORElUSU9OQUxfQlJFQUs6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAxOworICAg
ICAgICAgICAgICAgIG9wICs9ICcgICAgJHtGT1JfTE9PUH0geyByZXMgPSByZXMueXp3eDsgYnJl
YWs7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMz
ZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9QUkVfSU5DUkVNRU5UOgorICAgICAg
ICAgICAgICAgIG9wICs9ICcgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAke0lURVJfQ09VTlR9OyAr
K2kpIHsgcmVzID0gcmVzLnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9QT1NU
X0lOQ1JFTUVOVDoKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9IHsgcmVz
ID0gcmVzLnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9NSVhFRF9CUkVBS19D
T05USU5VRToKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDI7CisgICAgICAgICAgICAgICAg
aXRlckNvdW50ID0gNTsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9IHsg
aWYgKGkgPT0gMCkgY29udGludWU7IGVsc2UgaWYgKGkgPT0gMykgYnJlYWs7IHJlcyA9IHJlcy55
end4OyB9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfVkVDVE9SX0NPVU5URVI6CisgICAg
ICAgICAgICAgICAgb3AgKz0gJyAgICBmb3IgKCR7Q09VTlRFUl9QUkVDSVNJT059IGl2ZWM0IGkg
PSBpdmVjNCgwLCAxLCAke0lURVJfQ09VTlR9LCAwKTsgaS54IDwgaS56OyBpLnggKz0gaS55KSB7
IHJlcyA9IHJlcy55end4OyB9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfMTAxX0lURVJB
VElPTlM6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSBpdGVyQ291bnQgPSAxMDE7CisgICAg
ICAgICAgICAgICAgb3AgKz0gJyAgICAke0ZPUl9MT09QfSByZXMgPSByZXMueXp3eDtcbic7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BU
ZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRVFVRU5DRToKKyAgICAgICAgICAgICAgICBpdGVyQ291
bnQgPSA1OworICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gNTsKKyAgICAgICAgICAgICAgICBv
cCArPSAnICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBpO1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICAgJyAgICBmb3IgKGkgPSAwOyBpIDwgJHtUV099OyBpKyspIHsgcmVzID0gcmVzLnl6
d3g7IH1cbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgZm9yICg7IGkgPCAke0lURVJf
Q09VTlR9OyBpKyspIHsgcmVzID0gcmVzLnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09Q
Q0FTRV9ORVNURUQ6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAyICogaXRlckNvdW50Owor
ICAgICAgICAgICAgICAgIG9wICs9ICcgICAgZm9yICgke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQg
aSA9IDA7IGkgPCAke1RXT307IGkrKylcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAg
e1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZm9yICgke0NPVU5URVJfUFJF
Q0lTSU9OfSBpbnQgaiA9IDA7IGogPCAke0lURVJfQ09VTlR9OyBqKyspXG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAgICAgcmVzID0gcmVzLnl6d3g7XG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAnICAgIH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9ORVNURURf
U0VRVUVOQ0U6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAzICogaXRlckNvdW50OworICAg
ICAgICAgICAgICAgIG9wICs9ICcgICAgZm9yICgke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaSA9
IDA7IGkgPCAke0lURVJfQ09VTlR9OyBpKyspXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAn
ICAgIHtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZvciAoJHtDT1VOVEVS
X1BSRUNJU0lPTn0gaW50IGogPSAwOyBqIDwgJHtUV099OyBqKyspXG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICAgICAgcmVzID0gcmVzLnl6d3g7XG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICBmb3IgKCR7Q09VTlRFUl9QUkVDSVNJT059IGludCBqID0gMDsg
aiA8ICR7T05FfTsgaisrKVxuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAg
IHJlcyA9IHJlcy55end4O1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29w
VGVzdHMuTG9vcENhc2UuTE9PUENBU0VfTkVTVEVEX1RSSUNLWV9EQVRBRkxPV18xOgorICAgICAg
ICAgICAgICAgIG51bUl0ZXJzID0gMjsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9S
X0xPT1B9XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgIHJlcyA9IGNvb3JkczsgLy8gaWdub3JlIG91dGVyIGxvb3Ag
ZWZmZWN0IFxuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZm9yICgke0NPVU5U
RVJfUFJFQ0lTSU9OfSBpbnQgaiA9IDA7IGogPCAke1RXT307IGorKylcbicgKworICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKworICAgICAgICAg
ICAgICAgICAgICAgICcgICAgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX05FU1RFRF9U
UklDS1lfREFUQUZMT1dfMjoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IGl0ZXJDb3VudDsK
KyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Rk9SX0xPT1B9XG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHJl
cyA9IGNvb3Jkcy53eHl6O1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZm9y
ICgke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaiA9IDA7IGogPCAke1RXT307IGorKylcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGNvb3JkcyA9IHJlcztcbicgKworICAgICAg
ICAgICAgICAgICAgICAgICcgICAgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhc2Ug
bm90IHN1cHBvcnRlZDogJyArIGxvb3BDYXNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChs
b29wQ291bnRUeXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5cGUuTE9PUENP
VU5UX0NPTlNUQU5UKQorICAgICAgICAgICAgZm9yTG9vcFN0ciA9ICdmb3IgKCcgKyBjb3VudGVy
UHJlY2lzaW9uU3RyICsgJyBpbnQgaSA9IDA7IGkgPCAnICsgaXRlckNvdW50ICsgJzsgaSsrKSc7
CisgICAgICAgIGVsc2UgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMu
TG9vcENvdW50VHlwZS5MT09QQ09VTlRfVU5JRk9STSkKKyAgICAgICAgICAgIGZvckxvb3BTdHIg
PSAnZm9yICgnICsgY291bnRlclByZWNpc2lvblN0ciArICcgaW50IGkgPSAwOyBpIDwgJyArIGds
c1NoYWRlclJlbmRlckNhc2UuZ2V0SW50VW5pZm9ybU5hbWUoaXRlckNvdW50KSArICc7IGkrKykn
OworICAgICAgICBlbHNlIGlmIChsb29wQ291bnRUeXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3Rz
Lkxvb3BDb3VudFR5cGUuTE9PUENPVU5UX0RZTkFNSUMpCisgICAgICAgICAgICBmb3JMb29wU3Ry
ID0gJ2ZvciAoJyArIGNvdW50ZXJQcmVjaXNpb25TdHIgKyAnIGludCBpID0gMDsgaSA8IG9uZSon
ICsgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5nZXRJbnRVbmlmb3JtTmFtZShpdGVyQ291bnQpICsgJzsg
aSsrKSc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTG9vcCBD
b3VudCBUeXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBsb29wQ291bnRUeXBlKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAobG9vcFR5cGUgPT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGUuTE9PUFRZ
UEVfV0hJTEUpIHsKKyAgICAgICAgc3dpdGNoIChsb29wQ2FzZSkgeworICAgICAgICAgICAgY2Fz
ZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX0VNUFRZX0JPRFk6CisgICAg
ICAgICAgICAgICAgbnVtSXRlcnMgPSAwOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtX
SElMRV9MT09QfSB7fVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Y2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX0lORklOSVRFX1dJVEhf
VU5DT05ESVRJT05BTF9CUkVBS19GSVJTVDoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDA7
CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICB3aGlsZSAodHJ1ZSkgeyBicmVhazsgcmVzID0g
cmVzLnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9JTkZJTklURV9XSVRIX1VO
Q09ORElUSU9OQUxfQlJFQUtfTEFTVDoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDE7Cisg
ICAgICAgICAgICAgICAgb3AgKz0gJyAgICB3aGlsZSAodHJ1ZSkgeyByZXMgPSByZXMueXp3eDsg
YnJlYWs7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9JTkZJTklURV9XSVRIX0NPTkRJ
VElPTkFMX0JSRUFLOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gMjsKKyAgICAgICAgICAg
ICAgICBvcCArPSAnICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBpID0gMDtcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICcgICAgd2hpbGUgKHRydWUpIHsgcmVzID0gcmVzLnl6d3g7IGlm
IChpID09ICR7T05FfSkgYnJlYWs7IGkrKzsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X1NJTkdMRV9TVEFURU1FTlQ6CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke1dISUxFX0xP
T1B9IHJlcyA9IHJlcy55end4O1xuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX0NPTVBPVU5E
X1NUQVRFTUVOVDoKKyAgICAgICAgICAgICAgICBpdGVyQ291bnQgPSAyOworICAgICAgICAgICAg
ICAgIG51bUl0ZXJzID0gMiAqIGl0ZXJDb3VudDsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAg
ICR7V0hJTEVfTE9PUH0geyByZXMgPSByZXMueXp3eDsgcmVzID0gcmVzLnl6d3g7IH1cbic7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BU
ZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRVFVRU5DRV9TVEFURU1FTlQ6CisgICAgICAgICAgICAg
ICAgaXRlckNvdW50ID0gMjsKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDIgKiBpdGVyQ291
bnQ7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke1dISUxFX0xPT1B9IHJlcyA9IHJlcy55
end4LCByZXMgPSByZXMueXp3eDtcbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9OT19JVEVS
QVRJT05TOgorICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9IDA7CisgICAgICAgICAgICAgICAg
bnVtSXRlcnMgPSAwOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtXSElMRV9MT09QfSBy
ZXMgPSByZXMueXp3eDtcbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TSU5HTEVfSVRFUkFU
SU9OOgorICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9IDE7CisgICAgICAgICAgICAgICAgbnVt
SXRlcnMgPSAxOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtXSElMRV9MT09QfSByZXMg
PSByZXMueXp3eDtcbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9TRUxFQ1RfSVRFUkFUSU9O
X0NPVU5UOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0g
aW50IGkgPSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGlsZSAoaSA8ICh1
Yl90cnVlID8gJHtJVEVSX0NPVU5UfSA6IDApKSB7IHJlcyA9IHJlcy55end4OyBpKys7IH1cbic7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxv
b3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9DT05ESVRJT05BTF9DT05USU5VRToKKyAgICAgICAg
ICAgICAgICBudW1JdGVycyA9IGl0ZXJDb3VudCAtIDE7CisgICAgICAgICAgICAgICAgb3AgKz0g
JyAgICAke1dISUxFX0xPT1B9IHsgaWYgKGkgPT0gJHtUV099KSBjb250aW51ZTsgcmVzID0gcmVz
Lnl6d3g7IH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9VTkNPTkRJVElPTkFMX0NPTlRJ
TlVFOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtXSElMRV9MT09QfSB7IHJlcyA9IHJl
cy55end4OyBjb250aW51ZTsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX09OTFlfQ09O
VElOVUU6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAwOworICAgICAgICAgICAgICAgIG9w
ICs9ICcgICAgJHtXSElMRV9MT09QfSB7IGNvbnRpbnVlOyB9XG4nOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2Uu
TE9PUENBU0VfRE9VQkxFX0NPTlRJTlVFOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gaXRl
ckNvdW50IC0gMTsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7V0hJTEVfTE9PUH0geyBp
ZiAoaSA9PSAke09ORX0pIGNvbnRpbnVlOyByZXMgPSByZXMueXp3eDsgY29udGludWU7IH1cbic7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxv
b3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9DT05ESVRJT05BTF9CUkVBSzoKKyAgICAgICAgICAg
ICAgICBudW1JdGVycyA9IDI7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke1dISUxFX0xP
T1B9IHsgaWYgKGkgPT0gJHtUSFJFRX0pIGJyZWFrOyByZXMgPSByZXMueXp3eDsgfVxuJzsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRl
c3RzLkxvb3BDYXNlLkxPT1BDQVNFX1VOQ09ORElUSU9OQUxfQlJFQUs6CisgICAgICAgICAgICAg
ICAgbnVtSXRlcnMgPSAxOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtXSElMRV9MT09Q
fSB7IHJlcyA9IHJlcy55end4OyBicmVhazsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X1BSRV9JTkNSRU1FTlQ6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSBpdGVyQ291bnQgLSAx
OworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50IGkg
PSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGlsZSAoKytpIDwgJHtJVEVS
X0NPVU5UfSkgeyByZXMgPSByZXMueXp3eDsgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X1BPU1RfSU5DUkVNRU5UOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BS
RUNJU0lPTn0gaW50IGkgPSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGls
ZSAoaSsrIDwgJHtJVEVSX0NPVU5UfSkgeyByZXMgPSByZXMueXp3eDsgfVxuJzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxv
b3BDYXNlLkxPT1BDQVNFX01JWEVEX0JSRUFLX0NPTlRJTlVFOgorICAgICAgICAgICAgICAgIG51
bUl0ZXJzID0gMjsKKyAgICAgICAgICAgICAgICBpdGVyQ291bnQgPSA1OworICAgICAgICAgICAg
ICAgIG9wICs9ICcgICAgJHtXSElMRV9MT09QfSB7IGlmIChpID09IDApIGNvbnRpbnVlOyBlbHNl
IGlmIChpID09IDMpIGJyZWFrOyByZXMgPSByZXMueXp3eDsgfVxuJzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNl
LkxPT1BDQVNFX1ZFQ1RPUl9DT1VOVEVSOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtD
T1VOVEVSX1BSRUNJU0lPTn0gaXZlYzQgaSA9IGl2ZWM0KDAsIDEsICR7SVRFUl9DT1VOVH0sIDAp
O1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGlsZSAoaS54IDwgaS56KSB7IHJl
cyA9IHJlcy55end4OyBpLnggKz0gaS55OyB9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0Vf
MTAxX0lURVJBVElPTlM6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSBpdGVyQ291bnQgPSAx
MDE7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke1dISUxFX0xPT1B9IHJlcyA9IHJlcy55
end4O1xuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNm
U2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX1NFUVVFTkNFOgorICAgICAgICAgICAg
ICAgIGl0ZXJDb3VudCAgICA9IDY7CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgICAgPSBpdGVy
Q291bnQgLSAxOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lP
Tn0gaW50IGkgPSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGlsZSAoaSsr
IDwgJHtUV099KSB7IHJlcyA9IHJlcy55end4OyB9XG4nICsKKyAgICAgICAgICAgICAgICAgICAg
ICAnICAgIHdoaWxlIChpKysgPCAke0lURVJfQ09VTlR9KSB7IHJlcyA9IHJlcy55end4OyB9XG4n
OyAvLyBcbm90ZSBza2lwcyBvbmUgaXRlcmF0aW9uCisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9O
RVNURUQ6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAyICogaXRlckNvdW50OworICAgICAg
ICAgICAgICAgIG9wICs9ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50IGkgPSAwO1xuJyAr
CisgICAgICAgICAgICAgICAgICAgICAgJyAgICB3aGlsZSAoaSsrIDwgJHtUV099KVxuJyArCisg
ICAgICAgICAgICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaiA9IDA7XG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICB3aGlsZSAoaisrIDwgJHtJVEVSX0NPVU5UfSlcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICcgICAgfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX05F
U1RFRF9TRVFVRU5DRToKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDIgKiBpdGVyQ291bnQ7
CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaSA9
IDA7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIHdoaWxlIChpKysgPCAke0lURVJf
Q09VTlR9KVxuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaiA9IDA7XG4n
ICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB3aGlsZSAoaisrIDwgJHtPTkV9KVxu
JyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIHJlcyA9IHJlcy55end4O1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgd2hpbGUgKGorKyA8ICR7VEhSRUV9
KVxuJyArIC8vIFxub3RlIHNraXBzIG9uZSBpdGVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICAgICAgcmVzID0gcmVzLnl6d3g7XG4nICsKKyAgICAgICAgICAgICAgICAgICAg
ICAnICAgIH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9ORVNURURfVFJJQ0tZX0RBVEFG
TE9XXzE6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAyOworICAgICAgICAgICAgICAgIG9w
ICs9ICcgICAgJHtXSElMRV9MT09QfVxuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXMgPSBjb29yZHM7IC8vIGln
bm9yZSBvdXRlciBsb29wIGVmZmVjdCBcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBqID0gMDtcbicgKworICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIHdoaWxlIChqKysgPCAke1RXT30pXG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAgICAgcmVzID0gcmVzLnl6d3g7XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAnICAgIH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9ORVNURURfVFJJQ0tZ
X0RBVEFGTE9XXzI6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSBpdGVyQ291bnQ7CisgICAg
ICAgICAgICAgICAgb3AgKz0gJyAgICAke1dISUxFX0xPT1B9XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHJlcyA9
IGNvb3Jkcy53eHl6O1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHtDT1VO
VEVSX1BSRUNJU0lPTn0gaW50IGogPSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAg
ICAgICAgd2hpbGUgKGorKyA8ICR7VFdPfSlcbicgKworICAgICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcg
ICAgICAgIGNvb3JkcyA9IHJlcztcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxu
JzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvb3AgQ2FzZSBub3Qgc3VwcG9ydGVkOiAnICsg
bG9vcENhc2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfQ09OU1RBTlQpCisgICAg
ICAgICAgICB3aGlsZUxvb3BTdHIgPSAnXHQnICsgY291bnRlclByZWNpc2lvblN0ciArICcgaW50
IGkgPSAwO1xuJyArICcgICAgd2hpbGUoaSsrIDwgJyArIGl0ZXJDb3VudCArICcpJzsKKyAgICAg
ICAgZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291
bnRUeXBlLkxPT1BDT1VOVF9VTklGT1JNKQorICAgICAgICAgICAgd2hpbGVMb29wU3RyID0gJ1x0
JyArIGNvdW50ZXJQcmVjaXNpb25TdHIgKyAnIGludCBpID0gMDtcbicgKyAnICAgIHdoaWxlKGkr
KyA8ICcgKyBnbHNTaGFkZXJSZW5kZXJDYXNlLmdldEludFVuaWZvcm1OYW1lKGl0ZXJDb3VudCkg
KyAnKSc7CisgICAgICAgIGVsc2UgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFkZXJMb29w
VGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfRFlOQU1JQykKKyAgICAgICAgICAgIHdoaWxl
TG9vcFN0ciA9ICdcdCcgKyBjb3VudGVyUHJlY2lzaW9uU3RyICsgJyBpbnQgaSA9IDA7XG4nICsg
JyAgICB3aGlsZShpKysgPCBvbmUqJyArIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0SW50VW5pZm9y
bU5hbWUoaXRlckNvdW50KSArICcpJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdMb29wIENvdW50IFR5cGUgbm90IHN1cHBvcnRlZDogJyArIGxvb3BDb3VudFR5
cGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhsb29wVHlw
ZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wVHlwZS5MT09QVFlQRV9ET19XSElMRSwgJ0V4
cGVjdGVkIExPT1BUWVBFX0RPX1dISUxFJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHN3aXRj
aCAobG9vcENhc2UpIHsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29w
Q2FzZS5MT09QQ0FTRV9FTVBUWV9CT0RZOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gMDsK
KyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7RE9fV0hJTEVfUFJFfSB7fSAke0RPX1dISUxF
X1BPU1R9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVz
M2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfSU5GSU5JVEVfV0lUSF9VTkNPTkRJ
VElPTkFMX0JSRUFLX0ZJUlNUOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gMDsKKyAgICAg
ICAgICAgICAgICBvcCArPSAnICAgIGRvIHsgYnJlYWs7IHJlcyA9IHJlcy55end4OyB9IHdoaWxl
ICh0cnVlKTtcbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9JTkZJTklURV9XSVRIX1VOQ09O
RElUSU9OQUxfQlJFQUtfTEFTVDoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDE7CisgICAg
ICAgICAgICAgICAgb3AgKz0gJyAgICBkbyB7IHJlcyA9IHJlcy55end4OyBicmVhazsgfSB3aGls
ZSAodHJ1ZSk7XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNl
IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfSU5GSU5JVEVfV0lUSF9DT05E
SVRJT05BTF9CUkVBSzoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDI7CisgICAgICAgICAg
ICAgICAgb3AgKz0gJyAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaSA9IDA7XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAnICAgIGRvIHsgcmVzID0gcmVzLnl6d3g7IGlmIChpID09ICR7
T05FfSkgYnJlYWs7IGkrKzsgfSB3aGlsZSAodHJ1ZSk7XG4nOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9P
UENBU0VfU0lOR0xFX1NUQVRFTUVOVDoKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7RE9f
V0hJTEVfUFJFfSByZXMgPSByZXMueXp3eDsgJHtET19XSElMRV9QT1NUfVxuJzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxv
b3BDYXNlLkxPT1BDQVNFX0NPTVBPVU5EX1NUQVRFTUVOVDoKKyAgICAgICAgICAgICAgICBpdGVy
Q291bnQgPSAyOworICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gMiAqIGl0ZXJDb3VudDsKKyAg
ICAgICAgICAgICAgICBvcCArPSAnICAgICR7RE9fV0hJTEVfUFJFfSB7IHJlcyA9IHJlcy55end4
OyByZXMgPSByZXMueXp3eDsgfSAke0RPX1dISUxFX1BPU1R9XG4nOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2Uu
TE9PUENBU0VfU0VRVUVOQ0VfU1RBVEVNRU5UOgorICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9
IDI7CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAyICogaXRlckNvdW50OworICAgICAgICAg
ICAgICAgIG9wICs9ICcgICAgJHtET19XSElMRV9QUkV9IHJlcyA9IHJlcy55end4LCByZXMgPSBy
ZXMueXp3eDsgJHtET19XSElMRV9QT1NUfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX05P
X0lURVJBVElPTlM6CisgICAgICAgICAgICAgICAgLy9hc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAn
TE9PUENBU0VfTk9fSVRFUkFUSU9OUycsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5M
T09QQ0FTRV9TSU5HTEVfSVRFUkFUSU9OOgorICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9IDE7
CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAxOworICAgICAgICAgICAgICAgIG9wICs9ICcg
ICAgJHtET19XSElMRV9QUkV9IHJlcyA9IHJlcy55end4OyAke0RPX1dISUxFX1BPU1R9XG4nOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29w
VGVzdHMuTG9vcENhc2UuTE9PUENBU0VfU0VMRUNUX0lURVJBVElPTl9DT1VOVDoKKyAgICAgICAg
ICAgICAgICBvcCArPSAnICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBpID0gMDtcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICcgICAgZG8geyByZXMgPSByZXMueXp3eDsgfSB3aGlsZSAo
KytpIDwgKHViX3RydWUgPyAke0lURVJfQ09VTlR9IDogMCkpO1xuJzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNl
LkxPT1BDQVNFX0NPTkRJVElPTkFMX0NPTlRJTlVFOgorICAgICAgICAgICAgICAgIG51bUl0ZXJz
ID0gaXRlckNvdW50IC0gMTsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7RE9fV0hJTEVf
UFJFfSB7IGlmIChpID09ICR7VFdPfSkgY29udGludWU7IHJlcyA9IHJlcy55end4OyB9ICR7RE9f
V0hJTEVfUE9TVH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9VTkNPTkRJVElPTkFMX0NP
TlRJTlVFOgorICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtET19XSElMRV9QUkV9IHsgcmVz
ID0gcmVzLnl6d3g7IGNvbnRpbnVlOyB9ICR7RE9fV0hJTEVfUE9TVH1cbic7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29w
Q2FzZS5MT09QQ0FTRV9PTkxZX0NPTlRJTlVFOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0g
MDsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7RE9fV0hJTEVfUFJFfSB7IGNvbnRpbnVl
OyB9ICR7RE9fV0hJTEVfUE9TVH1cbic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9ET1VCTEVf
Q09OVElOVUU6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSBpdGVyQ291bnQgLSAxOworICAg
ICAgICAgICAgICAgIG9wICs9ICcgICAgJHtET19XSElMRV9QUkV9IHsgaWYgKGkgPT0gJHtUV099
KSBjb250aW51ZTsgcmVzID0gcmVzLnl6d3g7IGNvbnRpbnVlOyB9ICR7RE9fV0hJTEVfUE9TVH1c
bic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRl
ckxvb3BUZXN0cy5Mb29wQ2FzZS5MT09QQ0FTRV9DT05ESVRJT05BTF9CUkVBSzoKKyAgICAgICAg
ICAgICAgICBudW1JdGVycyA9IDI7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0RPX1dI
SUxFX1BSRX0geyByZXMgPSByZXMueXp3eDsgaWYgKGkgPT0gJHtPTkV9KSBicmVhazsgfSAke0RP
X1dISUxFX1BPU1R9XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBj
YXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfVU5DT05ESVRJT05BTF9C
UkVBSzoKKyAgICAgICAgICAgICAgICBudW1JdGVycyA9IDE7CisgICAgICAgICAgICAgICAgb3Ag
Kz0gJyAgICAke0RPX1dISUxFX1BSRX0geyByZXMgPSByZXMueXp3eDsgYnJlYWs7IH0gJHtET19X
SElMRV9QT1NUfVxuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX1BSRV9JTkNSRU1FTlQ6Cisg
ICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaSA9IDA7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIGRvIHsgcmVzID0gcmVzLnl6d3g7IH0g
d2hpbGUgKCsraSA8ICR7SVRFUl9DT1VOVH0pO1xuJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNF
X1BPU1RfSU5DUkVNRU5UOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gaXRlckNvdW50ICsg
MTsKKyAgICAgICAgICAgICAgICBvcCArPSAnICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBp
ID0gMDtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgZG8geyByZXMgPSByZXMueXp3
eDsgfSB3aGlsZSAoaSsrIDwgJHtJVEVSX0NPVU5UfSk7XG4nOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9P
UENBU0VfTUlYRURfQlJFQUtfQ09OVElOVUU6CisgICAgICAgICAgICAgICAgbnVtSXRlcnMgPSAy
OworICAgICAgICAgICAgICAgIGl0ZXJDb3VudCA9IDU7CisgICAgICAgICAgICAgICAgb3AgKz0g
JyAgICAke0RPX1dISUxFX1BSRX0geyBpZiAoaSA9PSAwKSBjb250aW51ZTsgZWxzZSBpZiAoaSA9
PSAzKSBicmVhazsgcmVzID0gcmVzLnl6d3g7IH0gJHtET19XSElMRV9QT1NUfVxuJzsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3Rz
Lkxvb3BDYXNlLkxPT1BDQVNFX1ZFQ1RPUl9DT1VOVEVSOgorICAgICAgICAgICAgICAgIG9wICs9
ICcgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaXZlYzQgaSA9IGl2ZWM0KDAsIDEsICR7SVRFUl9D
T1VOVH0sIDApO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICBkbyB7IHJlcyA9IHJl
cy55end4OyB9IHdoaWxlICgoaS54ICs9IGkueSkgPCBpLnopO1xuJzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNl
LkxPT1BDQVNFXzEwMV9JVEVSQVRJT05TOgorICAgICAgICAgICAgICAgIG51bUl0ZXJzID0gaXRl
ckNvdW50ID0gMTAxOworICAgICAgICAgICAgICAgIG9wICs9ICcgICAgJHtET19XSElMRV9QUkV9
IHJlcyA9IHJlcy55end4OyAke0RPX1dISUxFX1BPU1R9XG4nOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9P
UENBU0VfU0VRVUVOQ0U6CisgICAgICAgICAgICAgICAgaXRlckNvdW50ID0gNTsKKyAgICAgICAg
ICAgICAgICBudW1JdGVycyA9IDU7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0NPVU5U
RVJfUFJFQ0lTSU9OfSBpbnQgaSA9IDA7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAg
IGRvIHsgcmVzID0gcmVzLnl6d3g7IH0gd2hpbGUgKCsraSA8ICR7VFdPfSk7XG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgICAnICAgIGRvIHsgcmVzID0gcmVzLnl6d3g7IH0gd2hpbGUgKCsraSA8
ICR7SVRFUl9DT1VOVH0pO1xuJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX05FU1RFRDoKKyAg
ICAgICAgICAgICAgICBudW1JdGVycyA9IDIgKiBpdGVyQ291bnQ7CisgICAgICAgICAgICAgICAg
b3AgKz0gJyAgICAke0NPVU5URVJfUFJFQ0lTSU9OfSBpbnQgaSA9IDA7XG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAnICAgIGRvXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIHtc
bicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICR7Q09VTlRFUl9QUkVDSVNJT059
IGludCBqID0gMDtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGRvXG4nICsK
KyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgcmVzID0gcmVzLnl6d3g7XG4nICsK
KyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB3aGlsZSAoKytqIDwgJHtJVEVSX0NPVU5U
fSk7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIH0gd2hpbGUgKCsraSA8ICR7VFdP
fSk7XG4nOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZT
aGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfTkVTVEVEX1NFUVVFTkNFOgorICAgICAg
ICAgICAgICAgIG51bUl0ZXJzID0gMyAqIGl0ZXJDb3VudDsKKyAgICAgICAgICAgICAgICBvcCAr
PSAnICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGludCBpID0gMDtcbicgKworICAgICAgICAgICAg
ICAgICAgICAgICcgICAgZG9cbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAge1xuJyAr
CisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHtDT1VOVEVSX1BSRUNJU0lPTn0gaW50
IGogPSAwO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZG9cbicgKworICAg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgIHdoaWxlICgrK2ogPCAke1RXT30pO1xuJyArCisg
ICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZG9cbicgKworICAgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICAgICByZXMgPSByZXMueXp3eDtcbicgKworICAgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgIHdoaWxlICgrK2ogPCAke1RIUkVFfSk7XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAnICAgIH0gd2hpbGUgKCsraSA8ICR7SVRFUl9DT1VOVH0pO1xuJzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9vcFRlc3RzLkxv
b3BDYXNlLkxPT1BDQVNFX05FU1RFRF9UUklDS1lfREFUQUZMT1dfMToKKyAgICAgICAgICAgICAg
ICBudW1JdGVycyA9IDI7CisgICAgICAgICAgICAgICAgb3AgKz0gJyAgICAke0RPX1dISUxFX1BS
RX1cbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgcmVzID0gY29vcmRzOyAvLyBpZ25vcmUgb3V0ZXIgbG9vcCBlZmZl
Y3QgXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAke0NPVU5URVJfUFJFQ0lT
SU9OfSBpbnQgaiA9IDA7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBkb1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIHJlcyA9IHJlcy55end4O1xu
JyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgd2hpbGUgKCsraiA8ICR7VFdPfSk7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIH0gJHtET19XSElMRV9QT1NUfVxuJzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTG9v
cFRlc3RzLkxvb3BDYXNlLkxPT1BDQVNFX05FU1RFRF9UUklDS1lfREFUQUZMT1dfMjoKKyAgICAg
ICAgICAgICAgICBudW1JdGVycyA9IGl0ZXJDb3VudDsKKyAgICAgICAgICAgICAgICBvcCArPSAn
ICAgICR7RE9fV0hJTEVfUFJFfVxuJyArCisgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XG4n
ICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXMgPSBjb29yZHMud3h5ejtcbicg
KworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICR7Q09VTlRFUl9QUkVDSVNJT059IGlu
dCBqID0gMDtcbicgKworICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHdoaWxlIChqKysg
PCAke1RXT30pXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgcmVzID0g
cmVzLnl6d3g7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBjb29yZHMgPSBy
ZXM7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAnICAgIH0gJHtET19XSElMRV9QT1NUfVxu
JzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvb3AgQ2FzZSBub3Qgc3VwcG9ydGVkOiAnICsg
bG9vcENhc2UpOworICAgICAgICB9CisKKyAgICAgICAgZG9XaGlsZUxvb3BQcmVTdHIgPSAnXHQn
ICsgY291bnRlclByZWNpc2lvblN0ciArICcgaW50IGkgPSAwO1xuJyArICdcdGRvICc7CisgICAg
ICAgIGlmIChsb29wQ291bnRUeXBlID09PSBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDb3VudFR5
cGUuTE9PUENPVU5UX0NPTlNUQU5UKQorICAgICAgICAgICAgZG9XaGlsZUxvb3BQb3N0U3RyID0g
JyB3aGlsZSAoKytpIDwgJyArIGl0ZXJDb3VudCArICcpO1xuJzsKKyAgICAgICAgZWxzZSBpZiAo
bG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BD
T1VOVF9VTklGT1JNKQorICAgICAgICAgICAgZG9XaGlsZUxvb3BQb3N0U3RyID0gJyB3aGlsZSAo
KytpIDwgJyArIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0SW50VW5pZm9ybU5hbWUoaXRlckNvdW50
KSArICcpO1xuJzsKKyAgICAgICAgZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRl
ckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlLkxPT1BDT1VOVF9EWU5BTUlDKQorICAgICAgICAgICAg
ZG9XaGlsZUxvb3BQb3N0U3RyID0gJyB3aGlsZSAoKytpIDwgb25lKicgKyBnbHNTaGFkZXJSZW5k
ZXJDYXNlLmdldEludFVuaWZvcm1OYW1lKGl0ZXJDb3VudCkgKyAnKTtcbic7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTG9vcCBDb3VudCBUeXBlIG5vdCBzdXBw
b3J0ZWQ6ICcgKyBsb29wQ291bnRUeXBlKTsKKyAgICB9CisKKwl2dHggKz0gaXNWZXJ0ZXhDYXNl
ID8gb3AgOiAnJzsKKwlmcmFnICs9IGlzVmVydGV4Q2FzZSA/ICcnIDogb3A7CisJb3AgPSAnJzsK
KworICAgIC8vIFNoYWRlciBmb290ZXJzLgorICAgIGlmIChpc1ZlcnRleENhc2UpIHsKKyAgICAg
ICAgdnR4ICs9ICcgICAgdl9jb2xvciA9IHJlcy5yZ2I7XG4nOworICAgICAgICBmcmFnICs9ICcg
ICAgb19jb2xvciA9IHZlYzQodl9jb2xvci5yZ2IsIDEuMCk7XG4nOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgICAgdnR4ICs9ICcgICAgdl9jb29yZHMgPSBhX2Nvb3Jkcztcbic7CisgICAgICAg
IGZyYWcgKz0gJyAgICBvX2NvbG9yID0gdmVjNChyZXMucmdiLCAxLjApO1xuJzsKKworICAgICAg
ICBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBl
LkxPT1BDT1VOVF9EWU5BTUlDKQorICAgICAgICAgICAgdnR4ICs9ICcgICAgdl9vbmUgPSBhX29u
ZTtcbic7CisgICAgfQorCisgICAgdnR4ICs9ICd9XG4nOworICAgIGZyYWcgKz0gJ31cbic7CisK
KyAgICAvLyBDb25zdGFudHMuCisJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBvbmVTdHIgPSAn
JzsKKwkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHR3b1N0ciA9ICcnOworCS8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgdGhyZWVTdHIgPSAnJzsKKwkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IGl0ZXJDb3VudFN0ciA9ICcnOworCisgICAgaWYgKGxvb3BDb3VudFR5cGUgPT09IGVzM2ZTaGFk
ZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfQ09OU1RBTlQpIHsKKyAgICAgICAg
b25lU3RyID0gJzEnOworICAgICAgICB0d29TdHIgPSAnMic7CisgICAgICAgIHRocmVlU3RyID0g
JzMnOworICAgICAgICBpdGVyQ291bnRTdHIgPSBpdGVyQ291bnQudG9TdHJpbmcoKTsKKyAgICB9
CisgICAgZWxzZSBpZiAobG9vcENvdW50VHlwZSA9PT0gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29w
Q291bnRUeXBlLkxPT1BDT1VOVF9VTklGT1JNKSB7CisgICAgICAgIG9uZVN0ciA9ICd1aV9vbmUn
OworICAgICAgICB0d29TdHIgPSAndWlfdHdvJzsKKyAgICAgICAgdGhyZWVTdHIgPSAndWlfdGhy
ZWUnOworICAgICAgICBpdGVyQ291bnRTdHIgPSBnbHNTaGFkZXJSZW5kZXJDYXNlLmdldEludFVu
aWZvcm1OYW1lKGl0ZXJDb3VudCk7CisgICAgfQorICAgIGVsc2UgaWYgKGxvb3BDb3VudFR5cGUg
PT09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZS5MT09QQ09VTlRfRFlOQU1JQykg
eworICAgICAgICBvbmVTdHIgPSAnb25lKnVpX29uZSc7CisgICAgICAgIHR3b1N0ciA9ICdvbmUq
dWlfdHdvJzsKKyAgICAgICAgdGhyZWVTdHIgPSAnb25lKnVpX3RocmVlJzsKKyAgICAgICAgaXRl
ckNvdW50U3RyID0gJ29uZSonICsgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5nZXRJbnRVbmlmb3JtTmFt
ZShpdGVyQ291bnQpOworICAgIH0KKyAgICBlbHNlIHRocm93IG5ldyBFcnJvcignTG9vcCBDb3Vu
dCBUeXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBsb29wQ291bnRUeXBlKTsKKworICAgIC8vIEZpbGwg
aW4gc2hhZGVyIHRlbXBsYXRlcy4KKyAgICAvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIHBhcmFt
cyA9IHt9OworICAgIHBhcmFtc1siUFJFQ0lTSU9OIl0gPSAibWVkaXVtcCI7CisgICAgcGFyYW1z
WyJJVEVSX0NPVU5UIl0gPSBpdGVyQ291bnRTdHI7CisgICAgcGFyYW1zWyJDT1VOVEVSX1BSRUNJ
U0lPTiJdID0gY291bnRlclByZWNpc2lvblN0cjsKKyAgICBwYXJhbXNbIkZPUl9MT09QIl0gPSBm
b3JMb29wU3RyOworICAgIHBhcmFtc1siV0hJTEVfTE9PUCJdID0gd2hpbGVMb29wU3RyOworICAg
IHBhcmFtc1siRE9fV0hJTEVfUFJFIl0gPSBkb1doaWxlTG9vcFByZVN0cjsKKyAgICBwYXJhbXNb
IkRPX1dISUxFX1BPU1QiXSA9IGRvV2hpbGVMb29wUG9zdFN0cjsKKyAgICBwYXJhbXNbIk9ORSJd
ID0gb25lU3RyOworICAgIHBhcmFtc1siVFdPIl0gPSB0d29TdHI7CisgICAgcGFyYW1zWyJUSFJF
RSJdID0gdGhyZWVTdHI7CisKKwkvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZlcnRleFNoYWRl
clNvdXJjZSA9IHRjdVN0cmluZ1RlbXBsYXRlLnNwZWNpYWxpemUodnR4LCBwYXJhbXMpOworCS8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSB0Y3VTdHJpbmdU
ZW1wbGF0ZS5zcGVjaWFsaXplKGZyYWcsIHBhcmFtcyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIGNh
c2UuCisJLyoqIEB0eXBlIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxGdW5jfSAqLwor
CXZhciBldmFsRnVuYyA9IGVzM2ZTaGFkZXJMb29wVGVzdHMuZ2V0TG9vcEV2YWxGdW5jKG51bUl0
ZXJzKTsKKyAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJMb29wVGVzdHMuU2hhZGVyTG9vcENhc2Uo
Y2FzZU5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWxGdW5jLCB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKK307CisKKy8vIFNoYWRlckxvb3BUZXN0
cy4KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0KKyAqLworZXMzZlNoYWRlckxvb3BUZXN0cy5TaGFkZXJMb29wVGVzdHMgPSBmdW5jdGlv
bigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdsb29wcycsICdMb29w
IFRlc3RzJyk7Cit9OworCitlczNmU2hhZGVyTG9vcFRlc3RzLlNoYWRlckxvb3BUZXN0cy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7Citl
czNmU2hhZGVyTG9vcFRlc3RzLlNoYWRlckxvb3BUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBlczNmU2hhZGVyTG9vcFRlc3RzLlNoYWRlckxvb3BUZXN0czsKKworZXMzZlNoYWRlckxvb3BU
ZXN0cy5TaGFkZXJMb29wVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgdGVzdEdyb3VwID0gdGN1VGVzdENhc2UucnVubmVyLnRlc3RDYXNlczsKKyAgICAvLyBMb29w
IGNhc2VzLgorCisgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGU+fSAqLyB2YXIgc19zaGFkZXJUeXBlcyA9IFsKKyAgICAgICAgZ2x1U2hhZGVyUHJvZ3JhbS5z
aGFkZXJUeXBlLlZFUlRFWCwKKyAgICAgICAgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZS
QUdNRU5UCisgICAgXTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRh
VHlwZT59ICovIHZhciBzX2NvdW50RGF0YVR5cGUgPSBbCisgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUCisgICAg
XTsKKworICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSAqLyB2YXIg
c2hhZGVyVHlwZTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNoYWRlclR5cGVOYW1l
OworICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzVmVydGV4Q2FzZTsKKyAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdmFyIG5hbWU7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciBkZXNjOworCisgICAgZm9yICh2YXIgbG9vcFR5cGUgaW4gZXMzZlNoYWRlckxvb3BUZXN0cy5M
b29wVHlwZSkgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGxvb3BUeXBlTmFt
ZSA9IGVzM2ZTaGFkZXJMb29wVGVzdHMuZ2V0TG9vcFR5cGVOYW1lKGVzM2ZTaGFkZXJMb29wVGVz
dHMuTG9vcFR5cGVbbG9vcFR5cGVdKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0gKi8gdmFyIGxvb3BUeXBlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGxvb3BU
eXBlTmFtZSwgJ0xvb3AgdGVzdHMgd2l0aCAnICsgbG9vcFR5cGVOYW1lICsgJyBsb29wIHR5cGUn
KTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGxvb3BUeXBlR3JvdXApOworCisgICAgICAg
IGZvciAodmFyIGxvb3BDb3VudFR5cGUgaW4gZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ291bnRU
eXBlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGxvb3BDb3VudE5h
bWUgPSBlczNmU2hhZGVyTG9vcFRlc3RzLmdldExvb3BDb3VudFR5cGVOYW1lKGVzM2ZTaGFkZXJM
b29wVGVzdHMuTG9vcENvdW50VHlwZVtsb29wQ291bnRUeXBlXSk7CisKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZ3JvdXBOYW1lID0gbG9vcENvdW50TmFtZSArICdfaXRl
cmF0aW9ucyc7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGdyb3VwRGVz
YyA9ICdMb29wIHRlc3RzIHdpdGggJyArIGxvb3BDb3VudE5hbWUgKyAnIGxvb3AgY291bnRlci4n
OworCisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIg
Z3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGdyb3VwTmFtZSwgZ3JvdXBEZXNjKTsKKyAgICAg
ICAgICAgIGxvb3BUeXBlR3JvdXAuYWRkQ2hpbGQoZ3JvdXApOworCisgICAgICAgICAgICAvLyBH
ZW5lcmljIGNhc2VzLgorCisgICAgICAgICAgICBmb3IgKHZhciBwcmVjaXNpb24gaW4gZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30g
Ki8gdmFyIHByZWNpc2lvbk5hbWUgPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUoZ2x1
U2hhZGVyVXRpbC5wcmVjaXNpb25bcHJlY2lzaW9uXSk7CisKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBkYXRhVHlwZU5keCA9IDA7IGRhdGFUeXBlTmR4IDwgc19jb3VudERhdGFUeXBlLmxlbmd0
aDsgZGF0YVR5cGVOZHgrKykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBsb29wRGF0YVR5cGUgPSBzX2NvdW50RGF0YVR5cGVb
ZGF0YVR5cGVOZHhdOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGRhdGFUeXBlTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGxvb3BEYXRh
VHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc2hhZGVyVHlwZU5keCA9IDA7
IHNoYWRlclR5cGVOZHggPCBzX3NoYWRlclR5cGVzLmxlbmd0aDsgc2hhZGVyVHlwZU5keCsrKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlID0gc19zaGFkZXJUeXBlc1tzaGFk
ZXJUeXBlTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGVOYW1lID0gZ2x1
U2hhZGVyUHJvZ3JhbS5nZXRTaGFkZXJUeXBlTmFtZShzaGFkZXJUeXBlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlzVmVydGV4Q2FzZSAgICA9IChzaGFkZXJUeXBlID09IGdsdVNoYWRlclBy
b2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpOworCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUgPSAnYmFzaWNfJyArIHByZWNpc2lvbk5hbWUgKyAnXycgKyBkYXRhVHlwZU5hbWUgKyAnXycg
KyBzaGFkZXJUeXBlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgPSBsb29wVHlw
ZU5hbWUgKyAnIGxvb3Agd2l0aCAnICsgcHJlY2lzaW9uTmFtZSArIGRhdGFUeXBlTmFtZSArICcg
JyArIGxvb3BDb3VudE5hbWUgKyAnIGl0ZXJhdGlvbiBjb3VudCBpbiAnICsgc2hhZGVyVHlwZU5h
bWUgKyAnIHNoYWRlci4nOworICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQo
ZXMzZlNoYWRlckxvb3BUZXN0cy5jcmVhdGVHZW5lcmljTG9vcENhc2UobmFtZSwgZGVzYywgaXNW
ZXJ0ZXhDYXNlLCBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BUeXBlW2xvb3BUeXBlXSwgZXMzZlNo
YWRlckxvb3BUZXN0cy5Mb29wQ291bnRUeXBlW2xvb3BDb3VudFR5cGVdLCBnbHVTaGFkZXJVdGls
LnByZWNpc2lvbltwcmVjaXNpb25dLCBsb29wRGF0YVR5cGUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
U3BlY2lhbCBjYXNlcy4KKworICAgICAgICAgICAgZm9yICh2YXIgbG9vcENhc2UgaW4gZXMzZlNo
YWRlckxvb3BUZXN0cy5Mb29wQ2FzZSkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgbG9vcENhc2VOYW1lID0gZXMzZlNoYWRlckxvb3BUZXN0cy5nZXRMb29wQ2Fz
ZU5hbWUoZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wQ2FzZVtsb29wQ2FzZV0pOworCisgICAgICAg
ICAgICAgICAgLy8gbm8taXRlcmF0aW9ucyBub3QgcG9zc2libGUgd2l0aCBkby13aGlsZS4KKyAg
ICAgICAgICAgICAgICBpZiAoKGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2VbbG9vcENhc2Vd
ID09IGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcENhc2UuTE9PUENBU0VfTk9fSVRFUkFUSU9OUykg
JiYgKGVzM2ZTaGFkZXJMb29wVGVzdHMuTG9vcFR5cGVbbG9vcFR5cGVdID09IGVzM2ZTaGFkZXJM
b29wVGVzdHMuTG9vcFR5cGUuTE9PUFRZUEVfRE9fV0hJTEUpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIHNoYWRlclR5cGVOZHggPSAw
OyBzaGFkZXJUeXBlTmR4IDwgc19zaGFkZXJUeXBlcy5sZW5ndGg7IHNoYWRlclR5cGVOZHgrKykg
eworICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlID0gc19zaGFkZXJUeXBlc1tzaGFkZXJU
eXBlTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZU5hbWUgPSBnbHVTaGFkZXJQ
cm9ncmFtLmdldFNoYWRlclR5cGVOYW1lKHNoYWRlclR5cGUpOworICAgICAgICAgICAgICAgICAg
ICBpc1ZlcnRleENhc2UgICAgPSAoc2hhZGVyVHlwZSA9PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRl
clR5cGUuVkVSVEVYKTsKKworICAgICAgICAgICAgICAgICAgICBuYW1lID0gbG9vcENhc2VOYW1l
ICsgJ18nICsgc2hhZGVyVHlwZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGRlc2MgPSBsb29w
Q2FzZU5hbWUgKyAnIGxvb3Agd2l0aCAnICsgbG9vcFR5cGVOYW1lICsgJyBpdGVyYXRpb24gY291
bnQgaW4gJyArIHNoYWRlclR5cGVOYW1lICsgJyBzaGFkZXIuJzsKKyAgICAgICAgICAgICAgICAg
ICAgZ3JvdXAuYWRkQ2hpbGQoZXMzZlNoYWRlckxvb3BUZXN0cy5jcmVhdGVTcGVjaWFsTG9vcENh
c2UobmFtZSwgZGVzYywgaXNWZXJ0ZXhDYXNlLCBlczNmU2hhZGVyTG9vcFRlc3RzLkxvb3BDYXNl
W2xvb3BDYXNlXSwgZXMzZlNoYWRlckxvb3BUZXN0cy5Mb29wVHlwZVtsb29wVHlwZV0sIGVzM2ZT
aGFkZXJMb29wVGVzdHMuTG9vcENvdW50VHlwZVtsb29wQ291bnRUeXBlXSkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorKiBS
dW4gdGVzdAorKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyovCitl
czNmU2hhZGVyTG9vcFRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQsIHJhbmdlKSB7CisgICAg
Z2wgPSBjb250ZXh0OworICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFy
IHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZT
aGFkZXJMb29wVGVzdHMuU2hhZGVyTG9vcFRlc3RzKCkpOworCisgICAgLy9TZXQgdXAgbmFtZSBh
bmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICBzZXRDdXJyZW50VGVzdE5h
bWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRl
c3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKyAgICB0cnkgeworICAgICAgICBpZiAocmFuZ2Up
CisgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7CisgICAgICAgIC8vUnVuIHRlc3Qg
Y2FzZXMKKyAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgfQorICAgIGNh
dGNoIChlcnIpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmU2hh
ZGVyTG9vcFRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgdGN1VGVzdENhc2UucnVu
bmVyLnRlcm1pbmF0ZSgpOworICAgIH0KK307CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZTaGFkZXJNYXRyaXhUZXN0LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJNYXRyaXhUZXN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhZjIxODYzZjVhZTRlNTM4YmVlNjNlZWY5MzliZDIxMzA0MmE3YTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlck1hdHJpeFRlc3QuanMKQEAg
LTAsMCArMSwxODUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFs
aXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICog
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJNYXRyaXhUZXN0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1
U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5k
ZXJDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rp
b24oKSB7CisKKyAgICB2YXIgZXMzZlNoYWRlck1hdHJpeFRlc3Q9IGZ1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlck1hdHJpeFRlc3Q7CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsu
b3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIGdsc1NoYWRlclJlbmRlckNhc2UgPSBtb2R1
bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlOworICAgIHZhciB0Y3VNYXRyaXggPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdU1hdHJpeDsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24u
dGN1VGVzdENhc2U7CisKKworICAgIC8qKiBAY29uc3Qge0FycmF5PG51bWJlcj59Ki8gdmFyIHNf
Y29uc3RJbkZsb2F0ID0gWzAuNSwgLTAuMl07CisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8
bnVtYmVyPj59Ki8gdmFyIHNfY29uc3RJblZlYzIgPSBbWzEuMiwgMC41XSwgWzAuNSwgMS4wXV07
CisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59Ki8gdmFyIHNfY29uc3RJblZl
YzMgPSBbWzEuMSwgMC4xLCAwLjVdLCBbLTAuMiwgMC41LCAwLjhdXTsKKyAgICAvKiogQGNvbnN0
IHtBcnJheTxBcnJheTxudW1iZXI+Pn0qLyB2YXIgc19jb25zdEluVmVjNCA9IFtbMS40LCAwLjIs
IC0wLjUsIDAuN10sIFswLjIsIC0xLjAsIDAuNSwgMC44XV07CisKKyAgICAvKiogQHR5cGVkZWYg
e2Z1bmN0aW9uKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHQpfSAqLyBlczNm
U2hhZGVyTWF0cml4VGVzdC5NYXRyaXhTaGFkZXJFdmFsRnVuYzsKKworICAgIC8qKiBAY29uc3Qg
e0FycmF5PEFycmF5PG51bWJlcj4+fSovIHZhciBzX2NvbnN0SW5NYXQyeDIgPSBbCisgICAgICAg
IFstMC4xLCAxLjAsIC0wLjIsIDAuMF0sCisgICAgICAgIFswLjgsIDAuMSwgMC41LCAtMC45XQor
ICAgIF07CisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59Ki8gdmFyIHNfY29u
c3RJbk1hdDN4MiA9IFsKKyAgICAgICAgWzAuOCwgLTAuMywgMC4zLCAxLjAsICAxLjIsIC0xLjJd
LAorCSAgICBbMS4yLCAtMS4wLCAwLjUsIC0wLjgsIDEuMSwgMC4zXQorICAgIF07CisKKyAgICAv
KiogQGNvbnN0IHtBcnJheTxBcnJheTxudW1iZXI+Pn0qLyB2YXIgc19jb25zdEluTWF0NHgyID0g
WworCQlbLTAuMiwgIDAuNSwgMC4wLCAtMS4wLCAxLjIsIC0wLjUsIDAuMywgLTAuOV0sCisgICAg
ICAgIFsxLjAsICAwLjEsIC0xLjEsICAwLjYsIDAuOCwgLTEuMiwgLTEuMSwgIDAuN10KKyAgICBd
OworCisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59Ki8gdmFyIHNfY29uc3RJ
bk1hdDJ4MyA9IFsKKyAgICAgICAgWy0wLjYsIC0wLjEsIC0wLjcsIC0xLjIsIC0wLjIsIDAuMF0s
CisgICAgICAgIFsxLjEsIDAuNiwgMC44LCAxLjAsIDAuNywgMC4xXQorICAgIF07CisKKyAgICAv
KiogQGNvbnN0IHtBcnJheTxBcnJheTxudW1iZXI+Pn0qLyB2YXIgc19jb25zdEluTWF0M3gzID0g
WworICAgICAgICBbLTAuMiwgIDEuMSwgMS4yLCAtMS4wLCAxLjIsIDAuNSwgMC43LCAtMC4yLCAx
LjBdLAorICAgICAgICBbLTAuMSwgLTAuMSwgMC4xLCAtMC4xLCAtMC4yLCAxLjAsIC0wLjUsIDAu
MSwgLTAuNF0KKyAgICBdOworCisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59
Ki8gdmFyIHNfY29uc3RJbk1hdDR4MyA9IFsKKwkJWy0wLjksIDAuMCwgMC42LCAwLjIsIDAuOSwg
LTAuMSwgLTAuMywgLTAuNywgLTAuMSwgMC4xLCAxLjAsIDAuMF0sCisgICAgICAgIFswLjUsIDAu
NywgMC43LCAxLjIsIDEuMSwgMC4xLCAxLjAsIC0xLjAsIC0wLjIsIC0wLjIsIC0wLjMsIC0wLjVd
CisJXTsKKworICAgIC8qKiBAY29uc3Qge0FycmF5PEFycmF5PG51bWJlcj4+fSovIHZhciBzX2Nv
bnN0SW5NYXQyeDQgPSBbCisJCVstMC42LCAtMS4xLCAtMC42LCAtMC42LCAtMC4yLCAtMC42LCAt
MC4xLCAtMC4xXSwKKyAgICAgICAgWy0xLjIsIC0xLjAsIDAuNywgLTEuMCwgMC43LCAwLjcsIC0w
LjQsIC0wLjNdCisJXTsKKworICAgIC8qKiBAY29uc3Qge0FycmF5PEFycmF5PG51bWJlcj4+fSov
IHZhciBzX2NvbnN0SW5NYXQzeDQgPSBbCisgICAgICAgIFswLjYsIC0wLjQsIDEuMiwgMC45LCAw
LjgsIDAuNCwgMS4xLCAwLjMsIDAuNSwgLTAuMiwgMC4wLCAgMS4xXSwKKwkJWy0wLjgsIDEuMiwg
LTAuMiwgLTEuMSwgLTAuOSwgLTAuNSwgLTEuMiwgMS4wLCAxLjIsIDAuMSwgLTAuNywgLTAuNV0K
KwldOworCisgICAgLyoqIEBjb25zdCB7QXJyYXk8QXJyYXk8bnVtYmVyPj59Ki8gdmFyIHNfY29u
c3RJbk1hdDR4NCA9IFsKKyAgICAgICAgWzAuMywgMC45LCAtMC4yLCAxLjAsIC0wLjQsIC0wLjYs
IDAuNiwgLTEuMCwgLTAuOSwgLTAuMSwgMC4zLCAtMC4yLCAtMC4zLCAtMC45LCAxLjAsIDAuMV0s
CisJCVswLjQsIC0wLjcsIC0wLjgsIDAuNywgLTAuNCwgLTAuOCwgMC42LCAtMC4zLCAwLjcsIC0x
LjAsIDAuMSwgLTAuMywgMC4yLCAwLjYsIDAuNCwgLTEuMF0KKyAgICBdOworCisgICAgLy8gT3Bl
cmF0aW9uIGluZm8KKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZXMzZlNo
YWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZSA9IHsKKyAgICAJT1BFUkFUSU9OVFlQRV9CSU5B
UllfT1BFUkFUT1I6IDAsCisgICAgCU9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOiAxLAor
ICAgIAlPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjogMiwKKyAgICAJT1BFUkFU
SU9OVFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9SOiAzLAorICAgIAlPUEVSQVRJT05UWVBFX1VO
QVJZX0ZVTkNUSU9OOiA0LAorICAgIAlPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ6IDUKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhP
cH0gb3AKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlNoYWRlck1h
dHJpeFRlc3QuZ2V0T3BlcmF0aW9uTmFtZSA9IGZ1bmN0aW9uKG9wKSB7CisgICAgCXN3aXRjaCAo
b3ApIHsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfQUREOiBy
ZXR1cm4gJysnOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9T
VUI6IHJldHVybiAnLSc7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9w
Lk9QX01VTDogcmV0dXJuICcqJzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfRElWOiByZXR1cm4gJy8nOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVz
dC5NYXRyaXhPcC5PUF9DT01QX01VTDogcmV0dXJuICdtYXRyaXhDb21wTXVsdCc7CisgICAgCQlj
YXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX09VVEVSX1BST0RVQ1Q6IHJldHVy
biAnb3V0ZXJQcm9kdWN0JzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4
T3AuT1BfVFJBTlNQT1NFOiByZXR1cm4gJ3RyYW5zcG9zZSc7CisgICAgCQljYXNlIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0lOVkVSU0U6IHJldHVybiAnaW52ZXJzZSc7CisgICAg
CQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0RFVEVSTUlOQU5UOiByZXR1
cm4gJ2RldGVybWluYW50JzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4
T3AuT1BfVU5BUllfUExVUzogcmV0dXJuICcrJzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJp
eFRlc3QuTWF0cml4T3AuT1BfTkVHQVRJT046IHJldHVybiAnLSc7CisgICAgCQljYXNlIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BSRV9JTkNSRU1FTlQ6IHJldHVybiAnKysnOwor
ICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVfREVDUkVNRU5U
OiByZXR1cm4gJy0tJzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3Au
T1BfUE9TVF9JTkNSRU1FTlQ6IHJldHVybiAnKysnOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0
cml4VGVzdC5NYXRyaXhPcC5PUF9QT1NUX0RFQ1JFTUVOVDogcmV0dXJuICctLSc7CisgICAgCQlj
YXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0FERF9JTlRPOiByZXR1cm4gJys9
JzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfU1VCVFJBQ1Rf
RlJPTTogcmV0dXJuICctPSc7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJp
eE9wLk9QX01VTFRJUExZX0lOVE86IHJldHVybiAnKj0nOworICAgIAkJY2FzZSBlczNmU2hhZGVy
TWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ESVZJREVfSU5UTzogcmV0dXJuICcvPSc7CisgICAgCQlk
ZWZhdWx0OgorICAgIAkJCXRocm93IG5ldyBFcnJvcignRXJyb3IgaW52YWxpZCBNYXRyaXggT3Bl
cmF0aW9uJyk7CisgICAgCX0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNm
U2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcH0gb3AKKyAgICAgKiBAcmV0dXJuIHtlczNmU2hhZGVy
TWF0cml4VGVzdC5PcGVyYXRpb25UeXBlfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LmdldE9wZXJhdGlvblR5cGUgPSBmdW5jdGlvbiAob3ApIHsKKyAgICAJc3dpdGNoIChvcCkK
KyAgICAJeworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9BREQ6
IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVf
QklOQVJZX09QRVJBVE9SOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhP
cC5PUF9TVUI6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJB
VElPTlRZUEVfQklOQVJZX09QRVJBVE9SOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVz
dC5NYXRyaXhPcC5PUF9NVUw6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25U
eXBlLk9QRVJBVElPTlRZUEVfQklOQVJZX09QRVJBVE9SOworICAgIAkJY2FzZSBlczNmU2hhZGVy
TWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ESVY6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5P
cGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfQklOQVJZX09QRVJBVE9SOworICAgIAkJY2FzZSBl
czNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9DT01QX01VTDogcmV0dXJuIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk9wZXJhdGlvblR5cGUuT1BFUkFUSU9OVFlQRV9CSU5BUllfRlVOQ1RJT047
CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX09VVEVSX1BST0RV
Q1Q6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZ
UEVfQklOQVJZX0ZVTkNUSU9OOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRy
aXhPcC5PUF9UUkFOU1BPU0U6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25U
eXBlLk9QRVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT047CisgICAgCQljYXNlIGVzM2ZTaGFkZXJN
YXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0lOVkVSU0U6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVz
dC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT047CisgICAgCQljYXNl
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0RFVEVSTUlOQU5UOglyZXR1cm4gZXMz
ZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX1VOQVJZX0ZVTkNU
SU9OOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9VTkFSWV9Q
TFVTOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05U
WVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRl
c3QuTWF0cml4T3AuT1BfTkVHQVRJT046IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVy
YXRpb25UeXBlLk9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9SOworICAgIAkJY2Fz
ZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVfSU5DUkVNRU5UOiByZXR1cm4g
ZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX1VOQVJZX1BS
RUZJWF9PUEVSQVRPUjsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3Au
T1BfUFJFX0RFQ1JFTUVOVDogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlvblR5
cGUuT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1I7CisgICAgCQljYXNlIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BPU1RfSU5DUkVNRU5UOiByZXR1cm4gZXMzZlNo
YWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX1VOQVJZX1BPU1RGSVhf
T1BFUkFUT1I7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BP
U1RfREVDUkVNRU5UOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5P
UEVSQVRJT05UWVBFX1VOQVJZX1BPU1RGSVhfT1BFUkFUT1I7CisgICAgCQljYXNlIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0FERF9JTlRPOiByZXR1cm4gZXMzZlNoYWRlck1hdHJp
eFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7CisgICAgCQljYXNl
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1NVQlRSQUNUX0ZST006IHJldHVybiBl
czNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfQVNTSUdOTUVO
VDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfTVVMVElQTFlf
SU5UTzogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlvblR5cGUuT1BFUkFUSU9O
VFlQRV9BU1NJR05NRU5UOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhP
cC5PUF9ESVZJREVfSU5UTzogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlvblR5
cGUuT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOworICAgIAkJZGVmYXVsdDoKKyAgICAJCQl0aHJv
dyBuZXcgRXJyb3IoJ0Vycm9yIGludmFsaWQgTWF0cml4IE9wZXJhdGlvbicpOworICAgIAl9Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZXMzZlNoYWRlck1h
dHJpeFRlc3QuTWF0cml4VHlwZSA9IHsKKyAgICAJVEVTVE1BVFJJWFRZUEVfREVGQVVMVDogMCwK
KyAgICAJVEVTVE1BVFJJWFRZUEVfTkVHQVRFRDogMSwKKyAgICAJVEVTVE1BVFJJWFRZUEVfSU5D
UkVNRU5URUQ6IDIsCisgICAgCVRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOiAzLAorICAgIAlU
RVNUTUFUUklYVFlQRV9ORUdBVEVEX0lOQ1JFTUVOVEVEOiA0LAorICAgIAlURVNUTUFUUklYVFlQ
RV9JTkNSRU1FTlRFRF9MRVNTOiA1CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7ZXMzZlNo
YWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZX0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4
VGVzdC5nZXRPcGVyYXRpb25UZXN0TWF0cml4VHlwZSA9IGZ1bmN0aW9uIChvcCkgeworICAgIAlz
d2l0Y2gob3ApIHsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1Bf
QUREOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklYVFlQ
RV9ERUZBVUxUOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9T
VUI6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhUeXBlLlRFU1RNQVRSSVhUWVBF
X0RFRkFVTFQ7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01V
TDogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZUEVf
REVGQVVMVDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfRElW
OiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklYVFlQRV9E
RUZBVUxUOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9DT01Q
X01VTDogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZ
UEVfREVGQVVMVDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1Bf
T1VURVJfUFJPRFVDVDogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVT
VE1BVFJJWFRZUEVfREVGQVVMVDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfVFJBTlNQT1NFOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlw
ZS5URVNUTUFUUklYVFlQRV9ERUZBVUxUOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVz
dC5NYXRyaXhPcC5PUF9JTlZFUlNFOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4
VHlwZS5URVNUTUFUUklYVFlQRV9ERUZBVUxUOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4
VGVzdC5NYXRyaXhPcC5PUF9ERVRFUk1JTkFOVDogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0
Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKyAgICAJCWNhc2UgZXMzZlNoYWRl
ck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfVU5BUllfUExVUzogcmV0dXJuIGVzM2ZTaGFkZXJNYXRy
aXhUZXN0Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZUEVfREVDUkVNRU5URUQ7CisgICAgCQljYXNl
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX05FR0FUSU9OOiByZXR1cm4gZXMzZlNo
YWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklYVFlQRV9ORUdBVEVEX0lOQ1JFTUVO
VEVEOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVfSU5D
UkVNRU5UOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklY
VFlQRV9ORUdBVEVEOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5P
UF9QUkVfREVDUkVNRU5UOiByZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5U
RVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRl
c3QuTWF0cml4T3AuT1BfUE9TVF9JTkNSRU1FTlQ6IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVz
dC5NYXRyaXhUeXBlLlRFU1RNQVRSSVhUWVBFX05FR0FURUQ7CisgICAgCQljYXNlIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BPU1RfREVDUkVNRU5UOiByZXR1cm4gZXMzZlNoYWRl
ck1hdHJpeFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklYVFlQRV9ERUZBVUxUOworICAgIAkJY2Fz
ZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9BRERfSU5UTzogcmV0dXJuIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKyAgICAJ
CWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfU1VCVFJBQ1RfRlJPTTogcmV0
dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVTVE1BVFJJWFRZUEVfSU5DUkVN
RU5URURfTEVTUzsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1Bf
TVVMVElQTFlfSU5UTzogcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5cGUuVEVT
VE1BVFJJWFRZUEVfTkVHQVRFRDsKKyAgICAJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfRElWSURFX0lOVE86IHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhU
eXBlLlRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOworICAgIAkJZGVmYXVsdDoKKyAgICAJCQl0
aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGludmFsaWQgTWF0cml4IE9wZXJhdGlvbicpOworICAgIAl9
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlck1hdHJpeFRlc3Qu
TWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNm
U2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbkJpbmFyeSA9IGZ1bmN0aW9uIChvcCkgeworICAg
IAlyZXR1cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0T3BlcmF0aW9uVHlwZShvcCkgPT0gZXMz
ZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVS
QVRPUiB8fAorICAgIAkgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0T3BlcmF0aW9uVHlw
ZShvcCkgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBF
X0JJTkFSWV9GVU5DVElPTiB8fAorICAgIAkgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0
T3BlcmF0aW9uVHlwZShvcCkgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5P
UEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbk1hdHJp
eFNjYWxhciA9IGZ1bmN0aW9uIChvcCkgeworICAgIAlyZXR1cm4gb3AgPT0gZXMzZlNoYWRlck1h
dHJpeFRlc3QuTWF0cml4T3AuT1BfQUREIHx8CisgICAgICAgICAgICBvcCA9PSBlczNmU2hhZGVy
TWF0cml4VGVzdC5NYXRyaXhPcC5PUF9TVUIgfHwKKyAgICAgICAgICAgIG9wID09IGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01VTCB8fAorICAgICAgICAgICAgb3AgPT0gZXMzZlNo
YWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfRElWOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wfSBvcAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNPcGVyYXRp
b25NYXRyaXhWZWN0b3IgPSBmdW5jdGlvbiAob3ApIHsKKyAgICAgICAgcmV0dXJuIG9wID09IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01VTDsKKyAgICB9OworCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wfSBvcAorICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNP
cGVyYXRpb25Bcml0aG1ldGljTWF0cml4TWF0cml4ID0gZnVuY3Rpb24gKG9wKSB7CisgICAgICAg
IHJldHVybiBvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9NVUw7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4
T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
TWF0cml4VGVzdC5pc09wZXJhdGlvbkNvbXBvbmVudHdpc2VNYXRyaXhNYXRyaXggPSBmdW5jdGlv
biAob3ApIHsKKyAgICAgICAgcmV0dXJuIG9wID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJp
eE9wLk9QX0FERCB8fAorICAgICAgICAgICAgb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfU1VCIHx8CisgICAgICAgICAgICBvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5N
YXRyaXhPcC5PUF9NVUwgfHwKKyAgICAgICAgICAgIG9wID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
Lk1hdHJpeE9wLk9QX0RJViB8fAorICAgICAgICAgICAgb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRl
c3QuTWF0cml4T3AuT1BfQ09NUF9NVUw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvblZlY3Rv
clZlY3RvciA9IGZ1bmN0aW9uIChvcCkgeworICAgIAlyZXR1cm4gb3AgPT0gZXMzZlNoYWRlck1h
dHJpeFRlc3QuTWF0cml4T3AuT1BfT1VURVJfUFJPRFVDVDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcH0gb3AKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmlzT3Bl
cmF0aW9uVW5hcnlBbnlNYXRyaXggPSBmdW5jdGlvbiAob3ApIHsKKyAgICAJcmV0dXJuICBvcCA9
PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9UUkFOU1BPU0UgfHwKKyAgICAgICAg
ICAgIG9wID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1VOQVJZX1BMVVMgfHwK
KyAgICAJCW9wID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX05FR0FUSU9OIHx8
CisgICAgCQlvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVfSU5DUkVN
RU5UIHx8CisgICAgCQlvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVf
REVDUkVNRU5UIHx8CisgICAgCQlvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5P
UF9QT1NUX0lOQ1JFTUVOVCB8fAorICAgIAkJb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfUE9TVF9ERUNSRU1FTlQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvblVuYXJ5
U3ltbWV0cmljTWF0cml4ID0gZnVuY3Rpb24gKG9wKSB7CisgICAgCXJldHVybiBvcCA9PSBlczNm
U2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9JTlZFUlNFIHx8CisgICAgICAgICAgICBvcCA9
PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ERVRFUk1JTkFOVDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcH0g
b3AKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRy
aXhUZXN0LmlzT3BlcmF0aW9uVmFsdWVNb2RpZnlpbmcgPSBmdW5jdGlvbiAob3ApIHsKKyAgICAJ
cmV0dXJuICBvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QUkVfSU5DUkVN
RU5UIHx8CisgICAgCQkJb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfUFJF
X0RFQ1JFTUVOVCB8fAorICAgIAkJCW9wID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9w
Lk9QX1BPU1RfSU5DUkVNRU5UIHx8CisgICAgCQkJb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3Qu
TWF0cml4T3AuT1BfUE9TVF9ERUNSRU1FTlQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbkFz
c2lnbm1lbnQgPSBmdW5jdGlvbihvcCkgeworICAgIAlyZXR1cm4gIG9wID09IGVzM2ZTaGFkZXJN
YXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0FERF9JTlRPIHx8CisgICAgCQkJb3AgPT0gZXMzZlNoYWRl
ck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfU1VCVFJBQ1RfRlJPTSB8fAorICAgIAkJCW9wID09IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01VTFRJUExZX0lOVE8gfHwKKyAgICAJCQlv
cCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ESVZJREVfSU5UTzsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhP
cH0gb3AKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LmlzT3BlcmF0aW9uQXNzaWdubWVudEFueU1hdHJpeCA9IGZ1bmN0aW9uKG9wKSB7
CisgICAgCXJldHVybiAgb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfQURE
X0lOVE8gfHwKKyAgICAJCQlvcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9T
VUJUUkFDVF9GUk9NIHx8CisgICAgCQkJb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4
T3AuT1BfRElWSURFX0lOVE87CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMz
ZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0K
KyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbkFzc2lnbm1lbnRT
eW1tZXRyaWNNYXRyaXggPSBmdW5jdGlvbihvcCkgeworICAgIAlyZXR1cm4gb3AgPT0gZXMzZlNo
YWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfTVVMVElQTFlfSU5UTzsKKyAgICB9OworCisgICAg
Ly8gT3BlcmF0aW9uIG5hdHVyZQorCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAg
ICBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25OYXR1cmUgPSB7CisgICAgCU9QRVJBVElP
Tk5BVFVSRV9QVVJFOiAwLAorICAgIAlPUEVSQVRJT05OQVRVUkVfTVVUQVRJTkc6IDEsCisgICAg
CU9QRVJBVElPTk5BVFVSRV9BU1NJR05NRU5UOiAyCisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3B9IG9wCisgICAgICogQHJldHVy
biB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uTmF0dXJlfQorICAgICAqLworICAgIGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvbk5hdHVyZSA9IGZ1bmN0aW9uIChvcCkgewor
ICAgIAlpZiAoZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNPcGVyYXRpb25Bc3NpZ25tZW50KG9wKSkK
KyAgICAJCXJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25OYXR1cmUuT1BFUkFU
SU9OTkFUVVJFX0FTU0lHTk1FTlQ7CisgICAgCWlmIChlczNmU2hhZGVyTWF0cml4VGVzdC5pc09w
ZXJhdGlvblZhbHVlTW9kaWZ5aW5nKG9wKSkKKyAgICAJCXJldHVybiBlczNmU2hhZGVyTWF0cml4
VGVzdC5PcGVyYXRpb25OYXR1cmUuT1BFUkFUSU9OTkFUVVJFX01VVEFUSU5HOworICAgIAlyZXR1
cm4gZXMzZlNoYWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uTmF0dXJlLk9QRVJBVElPTk5BVFVSRV9Q
VVJFOworICAgIH07CisKKyAgICAvLyBJbnB1dCB2YWx1ZSBsb2FkZXIuCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGV9IGlucHV0VHlwZQorICAg
ICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZUZvcm1hdAorICAgICAqIEBw
YXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gZXZhbEN0eAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBpbnB1dE5keAorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj58dGN1TWF0cml4Lk1hdHJpeHxudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJp
eFRlc3QuZ2V0SW5wdXRWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dFR5cGUsIHR5cGVGb3JtYXQsIGV2
YWxDdHgsIGlucHV0TmR4KSB7CisgICAgICAgIGlmIChpbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1h
dHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCkgeworICAgICAgICAgICAgc3dpdGNo
ICh0eXBlRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc19jb25zdEluRmxvYXRbaW5w
dXROZHhdOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUMyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc19jb25zdEluVmVjMltpbnB1dE5k
eF07CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZF
QzM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzX2NvbnN0SW5WZWMzW2lucHV0TmR4XTsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNfY29uc3RJblZlYzRbaW5wdXROZHhdOworICAg
ICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMiwg
Miwgc19jb25zdEluTWF0MngyW2lucHV0TmR4XSk7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KDMsIDIsIHNfY29uc3RJbk1hdDJ4M1tp
bnB1dE5keF0pOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9NQVQyWDQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Y3VNYXRyaXgubWF0cml4
RnJvbURhdGFBcnJheSg0LCAyLCBzX2NvbnN0SW5NYXQyeDRbaW5wdXROZHhdKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gyOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMiwgMywg
c19jb25zdEluTWF0M3gyW2lucHV0TmR4XSk7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgzLCAzLCBzX2NvbnN0SW5NYXQzeDNbaW5wdXRO
ZHhdKTsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
TUFUM1g0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm1hdHJpeEZyb21E
YXRhQXJyYXkoNCwgMywgc19jb25zdEluTWF0M3g0W2lucHV0TmR4XSk7CisgICAgICAgICAgICAg
ICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMjoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KDIsIDQsIHNfY29u
c3RJbk1hdDR4MltpbnB1dE5keF0pOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Y3VN
YXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgzLCA0LCBzX2NvbnN0SW5NYXQ0eDNbaW5wdXROZHhd
KTsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
NDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFy
cmF5KDQsIDQsIHNfY29uc3RJbk1hdDR4NFtpbnB1dE5keF0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5
cGUuSU5QVVRUWVBFX0RZTkFNSUMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZUZvcm1hdCkg
eworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2YWxDdHguY29vcmRzWzBdOworICAgICAgICAgICAg
ICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5jb29yZHMsIFswLCAxXSk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzM6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZU1hdGguc3dpenpsZShldmFsQ3R4LmNvb3Jkcywg
WzAsIDEsIDJdKTsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5zd2l6emxlKGV2
YWxDdHguY29vcmRzLCBbMCwgMSwgMiwgM10pOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOgorICAgICAgICAgICAgICAgICAgICB2YXIgbSA9
IG5ldyB0Y3VNYXRyaXguTWF0cml4KDIsIDIpOworICAgICAgICAgICAgICAgICAgICBtLnNldENv
bCgwLCBkZU1hdGguc3dpenpsZShldmFsQ3R4LmluX1swXSwgWzAsIDFdKSk7CisgICAgICAgICAg
ICAgICAgICAgIG0uc2V0Q29sKDEsIGRlTWF0aC5zd2l6emxlKGV2YWxDdHguaW5fWzFdLCBbMCwg
MV0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgICAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYMzoKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIG0gPSBuZXcgdGN1TWF0cml4Lk1hdHJpeCgzLCAyKTsKKyAgICAgICAgICAgICAgICAg
ICAgbS5zZXRDb2woMCwgZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9bMF0sIFswLCAxLCAyXSkp
OworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgxLCBkZU1hdGguc3dpenpsZShldmFsQ3R4
LmluX1sxXSwgWzAsIDEsIDJdKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtOworICAg
ICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDQ6Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBtID0gbmV3IHRjdU1hdHJpeC5NYXRyaXgoNCwgMik7Cisg
ICAgICAgICAgICAgICAgICAgIG0uc2V0Q29sKDAsIGRlTWF0aC5zd2l6emxlKGV2YWxDdHguaW5f
WzBdLCBbMCwgMSwgMiwgM10pKTsKKyAgICAgICAgICAgICAgICAgICAgbS5zZXRDb2woMSwgZGVN
YXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9bMV0sIFswLCAxLCAyLCAzXSkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbTsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUM1gyOgorICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG5ldyB0Y3VN
YXRyaXguTWF0cml4KDIsIDMpOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgwLCBkZU1h
dGguc3dpenpsZShldmFsQ3R4LmluX1swXSwgWzAsIDFdKSk7CisgICAgICAgICAgICAgICAgICAg
IG0uc2V0Q29sKDEsIGRlTWF0aC5zd2l6emxlKGV2YWxDdHguaW5fWzFdLCBbMCwgMV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgbS5zZXRDb2woMiwgZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9b
Ml0sIFswLCAxXSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbTsKKyAgICAgICAgICAg
ICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMzoKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIG0gPSBuZXcgdGN1TWF0cml4Lk1hdHJpeCgzLCAzKTsKKyAgICAgICAgICAg
ICAgICAgICAgbS5zZXRDb2woMCwgZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9bMF0sIFswLCAx
LCAyXSkpOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgxLCBkZU1hdGguc3dpenpsZShl
dmFsQ3R4LmluX1sxXSwgWzAsIDEsIDJdKSk7CisgICAgICAgICAgICAgICAgICAgIG0uc2V0Q29s
KDIsIGRlTWF0aC5zd2l6emxlKGV2YWxDdHguaW5fWzJdLCBbMCwgMSwgMl0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDNYNDoKKyAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBuZXcg
dGN1TWF0cml4Lk1hdHJpeCg0LCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbS5zZXRDb2woMCwg
ZXZhbEN0eC5pbl9bMF0pOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgxLCBldmFsQ3R4
LmluX1sxXSk7CisgICAgICAgICAgICAgICAgICAgIG0uc2V0Q29sKDIsIGV2YWxDdHguaW5fWzJd
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMjoKKyAgICAgICAgICAgICAgICAgICAg
dmFyIG0gPSBuZXcgdGN1TWF0cml4Lk1hdHJpeCgyLCA0KTsKKyAgICAgICAgICAgICAgICAgICAg
bS5zZXRDb2woMCwgZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9bMF0sIFswLCAxXSkpOworICAg
ICAgICAgICAgICAgICAgICBtLnNldENvbCgxLCBkZU1hdGguc3dpenpsZShldmFsQ3R4LmluX1sx
XSwgWzAsIDFdKSk7CisgICAgICAgICAgICAgICAgICAgIG0uc2V0Q29sKDIsIGRlTWF0aC5zd2l6
emxlKGV2YWxDdHguaW5fWzJdLCBbMCwgMV0pKTsKKyAgICAgICAgICAgICAgICAgICAgbS5zZXRD
b2woMywgZGVNYXRoLnN3aXp6bGUoZXZhbEN0eC5pbl9bM10sIFswLCAxXSkpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbTsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUNFgzOgorICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG5ldyB0
Y3VNYXRyaXguTWF0cml4KDMsIDQpOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgwLCBk
ZU1hdGguc3dpenpsZShldmFsQ3R4LmluX1swXSwgWzAsIDEsIDJdKSk7CisgICAgICAgICAgICAg
ICAgICAgIG0uc2V0Q29sKDEsIGRlTWF0aC5zd2l6emxlKGV2YWxDdHguaW5fWzFdLCBbMCwgMSwg
Ml0pKTsKKyAgICAgICAgICAgICAgICAgICAgbS5zZXRDb2woMiwgZGVNYXRoLnN3aXp6bGUoZXZh
bEN0eC5pbl9bMl0sIFswLCAxLCAyXSkpOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgz
LCBkZU1hdGguc3dpenpsZShldmFsQ3R4LmluX1szXSwgWzAsIDEsIDJdKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQ0OgorICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG5ldyB0Y3VN
YXRyaXguTWF0cml4KDQsIDQpOworICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgwLCBldmFs
Q3R4LmluX1swXSk7CisgICAgICAgICAgICAgICAgICAgIG0uc2V0Q29sKDEsIGV2YWxDdHguaW5f
WzFdKTsKKyAgICAgICAgICAgICAgICAgICAgbS5zZXRDb2woMiwgZXZhbEN0eC5pbl9bMl0pOwor
ICAgICAgICAgICAgICAgICAgICBtLnNldENvbCgzLCBldmFsQ3R4LmluX1szXSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCB0eXBlJyk7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHtB
cnJheTxudW1iZXI+fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVZl
Y1RvVmVjMyA9IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09
IDMpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1
ZS5sZW5ndGggPT0gMikgeworICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5zd2l6emxlKHZhbHVl
LCBbMCwgMSwgMF0pCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gW3ZhbHVl
WzBdLCB2YWx1ZVsxXSwgdmFsdWVbMl0gKyB2YWx1ZVszXV07CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSB2YWx1ZQorICAgICAq
IEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRl
c3QucmVkdWNlTWF0VG9WZWMzID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1
ZS5jb2xzID09IDIpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5yb3dzID09IDIpIHsKKyAgICAg
ICAgICAgICAgICAvLyBtYXQyCisgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZS5nZXQoMCwg
MCksIHZhbHVlLmdldCgwLCAxKSwgdmFsdWUuZ2V0KDEsIDApICsgdmFsdWUuZ2V0KDEsIDEpXTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUucm93cyA9PSAzKXsKKyAgICAgICAgICAgICAg
ICAvL21hdDJ4MworICAgICAgICAgICAgICAgIHJldHVybiBkZU1hdGguYWRkKHZhbHVlLmdldENv
bHVtbigwKSwgdmFsdWUuZ2V0Q29sdW1uKDEpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgLy9tYXQyeDQKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmFkZChk
ZU1hdGguc3dpenpsZSh2YWx1ZS5nZXRDb2x1bW4oMCksIFswLCAxLCAyXSksIGRlTWF0aC5zd2l6
emxlKHZhbHVlLmdldENvbHVtbigxKSwgWzEsIDIsIDNdKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAodmFsdWUuY29scyA9PSAzKSB7CisgICAgICAgICAgICBpZiAodmFsdWUu
cm93cyA9PSAyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZS5nZXQoMCwgMCkgKyB2
YWx1ZS5nZXQoMSwgMCksIHZhbHVlLmdldCgwLCAxKSArIHZhbHVlLmdldCgxLCAxKSwgdmFsdWUu
Z2V0KDAsIDIpICsgdmFsdWUuZ2V0KDEsIDIpXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodmFs
dWUucm93cyA9PSAzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5hZGQoZGVNYXRo
LmFkZCh2YWx1ZS5nZXRDb2x1bW4oMCksIHZhbHVlLmdldENvbHVtbigxKSksIHZhbHVlLmdldENv
bHVtbigyKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBk
ZU1hdGguYWRkKGRlTWF0aC5hZGQoZGVNYXRoLnN3aXp6bGUodmFsdWUuZ2V0Q29sdW1uKDApLCBb
MCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZSh2YWx1ZS5nZXRDb2x1bW4oMSksIFsxLCAyLCAzXSkp
LCBkZU1hdGguc3dpenpsZSh2YWx1ZS5nZXRDb2x1bW4oMiksIFsyLCAzLCAwXSkpCisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodmFsdWUucm93cyA9PSAy
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZS5nZXQoMCwgMCkgKyB2YWx1ZS5nZXQo
MSwgMCkgKyB2YWx1ZS5nZXQoMCwgMyksIHZhbHVlLmdldCgwLCAxKSArIHZhbHVlLmdldCgxLCAx
KSArIHZhbHVlLmdldCgxLCAzKSwgdmFsdWUuZ2V0KDAsIDIpICsgdmFsdWUuZ2V0KDEsIDIpXTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUucm93cyA9PSAzKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRlTWF0aC5hZGQoZGVNYXRoLmFkZChkZU1hdGguYWRkKHZhbHVlLmdldENvbHVt
bigwKSwgdmFsdWUuZ2V0Q29sdW1uKDEpKSwgdmFsdWUuZ2V0Q29sdW1uKDIpKSwgdmFsdWUuZ2V0
Q29sdW1uKDMpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRlTWF0aC5hZGQoZGVNYXRoLmFkZChkZU1hdGguYWRkKGRlTWF0aC5zd2l6emxlKHZhbHVlLmdl
dENvbHVtbigwKSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUodmFsdWUuZ2V0Q29sdW1uKDEp
LCBbMSwgMiwgM10pKSwgZGVNYXRoLnN3aXp6bGUodmFsdWUuZ2V0Q29sdW1uKDIpLCBbMiwgMywg
MF0pKSwgZGVNYXRoLnN3aXp6bGUodmFsdWUuZ2V0Q29sdW1uKDMpLCBbMywgMCwgMV0pKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj58dGN1TWF0cml4Lk1hdHJpeHxudW1iZXJ9IHZhbHVlCisgICAgICogQHJl
dHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5y
ZWR1Y2VUb1ZlYzMgPSBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlIGluc3Rh
bmNlb2YgdGN1TWF0cml4Lk1hdHJpeCkKKyAgICAgICAgICAgIHJldHVybiBlczNmU2hhZGVyTWF0
cml4VGVzdC5yZWR1Y2VNYXRUb1ZlYzModmFsdWUpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSBp
bnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LnJlZHVjZVZlY1RvVmVjMyh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW1wb3NzaWJsZSBjYXNlJyk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LmFkZCA9IGZ1bmN0aW9uIChhLCBiKSB7CisgICAgICAgIGlmIChhIGluc3RhbmNl
b2YgdGN1TWF0cml4Lk1hdHJpeCkgeworICAgICAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiB0Y3VN
YXRyaXguTWF0cml4KQorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VNYXRyaXguYWRkKGEsIGIp
OworICAgICAgICAgICAgZWxzZSBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcignVW5pbXBsZW1lbnRlZCcpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJldHVybiB0Y3VNYXRyaXguYWRkTWF0U2NhbChhLCBiKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChiIGluc3RhbmNlb2YgdGN1TWF0
cml4Lk1hdHJpeCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaW1wbGVtZW50
ZWQnKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmFk
ZChhLCBiKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5z
dWJ0cmFjdCA9IGZ1bmN0aW9uIChhLCBiKSB7CisgICAgICAgIGlmIChhIGluc3RhbmNlb2YgdGN1
TWF0cml4Lk1hdHJpeCkgeworICAgICAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiB0Y3VNYXRyaXgu
TWF0cml4KQorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VNYXRyaXguc3VidHJhY3QoYSwgYik7
CisgICAgICAgICAgICBlbHNlIGlmIChiIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdVbmltcGxlbWVudGVkJyk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRjdU1hdHJpeC5zdWJ0cmFjdE1hdFNjYWwoYSwgYik7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIHRj
dU1hdHJpeC5NYXRyaXgpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmltcGxl
bWVudGVkJyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGRlTWF0
aC5zdWJ0cmFjdChhLCBiKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmU2hhZGVyTWF0
cml4VGVzdC5tdWx0aXBseSA9IGZ1bmN0aW9uIChhLCBiKSB7CisgICAgICAgIGlmIChhIGluc3Rh
bmNlb2YgdGN1TWF0cml4Lk1hdHJpeCkgeworICAgICAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiB0
Y3VNYXRyaXguTWF0cml4KQorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VNYXRyaXgubXVsdGlw
bHkoYSwgYik7CisgICAgICAgICAgICBlbHNlIGlmIChiIGluc3RhbmNlb2YgQXJyYXkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRjdU1hdHJpeC5tdWx0aXBseU1hdFZlYyhhLCBiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm11bHRpcGx5TWF0
U2NhbChhLCBiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChiIGluc3RhbmNl
b2YgdGN1TWF0cml4Lk1hdHJpeCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1TWF0cml4Lm11
bHRpcGx5VmVjTWF0KGEsIGIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBkZU1hdGgubXVsdGlwbHkoYSwgYik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZXMz
ZlNoYWRlck1hdHJpeFRlc3QuZGl2aWRlID0gZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAgICAgaWYg
KGEgaW5zdGFuY2VvZiB0Y3VNYXRyaXguTWF0cml4KSB7CisgICAgICAgICAgICBpZiAoYiBpbnN0
YW5jZW9mIHRjdU1hdHJpeC5NYXRyaXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRjdU1hdHJp
eC5kaXZpZGUoYSwgYik7CisgICAgICAgICAgICBlbHNlIGlmIChiIGluc3RhbmNlb2YgQXJyYXkp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmltcGxlbWVudGVkJyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRjdU1hdHJpeC5kaXZpZGVNYXRT
Y2FsKGEsIGIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGIg
aW5zdGFuY2VvZiB0Y3VNYXRyaXguTWF0cml4KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcignVW5pbXBsZW1lbnRlZCcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBkZU1hdGguZGl2aWRlKGEsIGIpOworICAgICAgICB9CisgICAgfTsKKworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSBhCisgICAgICogQHBhcmFtIHt0
Y3VNYXRyaXguTWF0cml4fSBiCisgICAgICogQHJldHVybiB7dGN1TWF0cml4Lk1hdHJpeH0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5tYXRyaXhDb21wTXVsdCA9IGZ1bmN0aW9u
IChhLCBiKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8gdmFyIHJl
dFZhbCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KGEucm93cywgYS5jb2xzKTsKKworICAgICAgICBm
b3IgKHZhciByID0gMDsgciA8IGEucm93czsgKytyKSB7CisgICAgICAgICAgICBmb3IgKHZhciBj
ID0gMDsgYyA8IGEuY29sczsgKytjKSB7CisgICAgICAgICAgICAgICAgcmV0VmFsLnNldChyLCBj
LCBhLmdldChyLCBjKSAqIGIuZ2V0KHIsIGMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmV0VmFsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3RjdU1hdHJpeC5NYXRyaXh9IG1hdAorICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9
CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QudHJhbnNwb3NlID0gZnVuY3Rpb24g
KG1hdCkgeworICAgICAgICAvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhciByZXRW
YWwgPSBuZXcgdGN1TWF0cml4Lk1hdHJpeChtYXQuY29scywgbWF0LnJvd3MpOworCisgICAgICAg
IGZvciAodmFyIHIgPSAwOyByIDwgbWF0LnJvd3M7ICsrcikgeworICAgICAgICAgICAgZm9yICh2
YXIgYyA9IDA7IGMgPCBtYXQuY29sczsgKytjKSB7CisgICAgICAgICAgICAgICAgcmV0VmFsLnNl
dChjLCByLCBtYXQuZ2V0KHIsIGMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiByZXRWYWw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1
TWF0cml4Lk1hdHJpeH0gbWF0CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAg
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmRldGVybWluYW50TWF0MiA9IGZ1bmN0aW9uIChtYXQpIHsK
KyAgICAgICAgcmV0dXJuIG1hdC5nZXQoMCwgMCkgKiBtYXQuZ2V0KDEsIDEpIC0gbWF0LmdldCgx
LCAwKSAqIG1hdC5nZXQoMCwxKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VNYXRyaXguTWF0cml4fSBtYXQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisg
ICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZGV0ZXJtaW5hbnRNYXQzID0gZnVuY3Rpb24gKG1hdCkg
eworICAgICAgICByZXR1cm4JKyBtYXQuZ2V0KDAsIDApICogbWF0LmdldCgxLCAxKSAqIG1hdC5n
ZXQoMiwgMikKKwkJCSsgbWF0LmdldCgwLCAxKSAqIG1hdC5nZXQoMSwgMikgKiBtYXQuZ2V0KDIs
IDApCisJCQkrIG1hdC5nZXQoMCwgMikgKiBtYXQuZ2V0KDEsIDApICogbWF0LmdldCgyLCAxKQor
CQkJLSBtYXQuZ2V0KDAsIDApICogbWF0LmdldCgxLCAyKSAqIG1hdC5nZXQoMiwgMSkKKwkJCS0g
bWF0LmdldCgwLCAxKSAqIG1hdC5nZXQoMSwgMCkgKiBtYXQuZ2V0KDIsIDIpCisJCQktIG1hdC5n
ZXQoMCwgMikgKiBtYXQuZ2V0KDEsIDEpICogbWF0LmdldCgyLCAwKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSBtYXQKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZGV0ZXJtaW5hbnRN
YXQ0ID0gZnVuY3Rpb24gKG1hdCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51
bWJlcj4+fSAqLyB2YXIgbWlub3JNYXRyaWNlcyA9IFsKKyAgICAgICAgICAgIFsKKyAgICAJCQlt
YXQuZ2V0KDEsIDEpLAltYXQuZ2V0KDIsIDEpLAltYXQuZ2V0KDMsIDEpLAorICAgIAkJCW1hdC5n
ZXQoMSwgMiksCW1hdC5nZXQoMiwgMiksCW1hdC5nZXQoMywgMiksCisgICAgCQkJbWF0LmdldCgx
LCAzKSwJbWF0LmdldCgyLCAzKSwJbWF0LmdldCgzLCAzKQorICAgIAkJXSwKKyAgICAJCVsKKyAg
ICAJCQltYXQuZ2V0KDEsIDApLAltYXQuZ2V0KDIsIDApLAltYXQuZ2V0KDMsIDApLAorICAgIAkJ
CW1hdC5nZXQoMSwgMiksCW1hdC5nZXQoMiwgMiksCW1hdC5nZXQoMywgMiksCisgICAgCQkJbWF0
LmdldCgxLCAzKSwJbWF0LmdldCgyLCAzKSwJbWF0LmdldCgzLCAzKQorICAgIAkJXSwKKyAgICAJ
CVsKKyAgICAJCQltYXQuZ2V0KDEsIDApLAltYXQuZ2V0KDIsIDApLAltYXQuZ2V0KDMsIDApLAor
ICAgIAkJCW1hdC5nZXQoMSwgMSksCW1hdC5nZXQoMiwgMSksCW1hdC5nZXQoMywgMSksCisgICAg
CQkJbWF0LmdldCgxLCAzKSwJbWF0LmdldCgyLCAzKSwJbWF0LmdldCgzLCAzKQorICAgIAkJXSwK
KyAgICAJCVsKKyAgICAJCQltYXQuZ2V0KDEsIDApLAltYXQuZ2V0KDIsIDApLAltYXQuZ2V0KDMs
IDApLAorICAgIAkJCW1hdC5nZXQoMSwgMSksCW1hdC5nZXQoMiwgMSksCW1hdC5nZXQoMywgMSks
CisgICAgCQkJbWF0LmdldCgxLCAyKSwJbWF0LmdldCgyLCAyKSwJbWF0LmdldCgzLCAyKQorICAg
IAkJXQorICAgICAgICBdOworCisgICAgCXJldHVybgkrIG1hdC5nZXQoMCwgMCkgKiBlczNmU2hh
ZGVyTWF0cml4VGVzdC5kZXRlcm1pbmFudCh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgz
LCAzLCBtaW5vck1hdHJpY2VzWzBdKSkKKyAgICAJCQktIG1hdC5nZXQoMCwgMSkgKiBlczNmU2hh
ZGVyTWF0cml4VGVzdC5kZXRlcm1pbmFudCh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgz
LCAzLCBtaW5vck1hdHJpY2VzWzFdKSkKKyAgICAJCQkrIG1hdC5nZXQoMCwgMikgKiBlczNmU2hh
ZGVyTWF0cml4VGVzdC5kZXRlcm1pbmFudCh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgz
LCAzLCBtaW5vck1hdHJpY2VzWzJdKSkKKyAgICAJCQktIG1hdC5nZXQoMCwgMykgKiBlczNmU2hh
ZGVyTWF0cml4VGVzdC5kZXRlcm1pbmFudCh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgz
LCAzLCBtaW5vck1hdHJpY2VzWzNdKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7dGN1TWF0cml4Lk1hdHJpeH0gbWF0CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmRldGVybWluYW50ID0gZnVuY3Rpb24gKG1hdCkg
eworICAgICAgICBpZiAobWF0LnJvd3MgPT0gMikgeworICAgICAgICAgICAgcmV0dXJuIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0LmRldGVybWluYW50TWF0MihtYXQpOworICAgICAgICB9IGVsc2UgaWYg
KG1hdC5yb3dzID09IDMpIHsKKyAgICAgICAgICAgIHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVz
dC5kZXRlcm1pbmFudE1hdDMobWF0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl
dHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5kZXRlcm1pbmFudE1hdDQobWF0KTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG1h
dAorICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgZXMzZlNo
YWRlck1hdHJpeFRlc3QuaW52ZXJzZU1hdDIgPSBmdW5jdGlvbiAobWF0KSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZGV0ID0gZXMzZlNoYWRlck1hdHJpeFRlc3QuZGV0ZXJt
aW5hbnQobWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIg
cmV0VmFsID0gbmV3IHRjdU1hdHJpeC5NYXQyKCk7CisKKyAgICAgICAgaWYgKGRldCA9PSAwLjAp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgZGV0ZXJtaW5hbnQnKQorICAg
ICAgICB9CisKKyAgICAgICAgcmV0VmFsLnNldCgwLCAwLCBtYXQuZ2V0KDEsIDEpIC8gZGV0KTsK
KyAgICAgICAgcmV0VmFsLnNldCgwLCAxLCAtbWF0LmdldCgwLCAxKSAvIGRldCk7CisgICAgICAg
IHJldFZhbC5zZXQoMSwgMCwgLW1hdC5nZXQoMSwgMCkgLyBkZXQpOworICAgICAgICByZXRWYWwu
c2V0KDEsIDEsIG1hdC5nZXQoMCwgMCkgLyBkZXQpOworCisgICAgICAgIHJldHVybiByZXRWYWw7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1TWF0cml4Lk1hdHJpeH0gbWF0
CisgICAgICogQHJldHVybiB7dGN1TWF0cml4Lk1hdHJpeH0KKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyTWF0cml4VGVzdC5pbnZlcnNlTWF0MyA9IGZ1bmN0aW9uIChtYXQpIHsKKyAgICAgICAgaWYg
KGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmRldGVybWluYW50KG1hdCkgPT0gMC4wKSB7CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGRldGVybWluYW50JykKKyAgICAgICAgfQorCisg
ICAgCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGFyZWFBID0gW21hdC5nZXQoMCwg
MCksIG1hdC5nZXQoMCwgMSksIG1hdC5nZXQoMSwgMCksIG1hdC5nZXQoMSwxKV07CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGFyZWFCID0gW21hdC5nZXQoMCwgMiks
IG1hdC5nZXQoMSwgMildOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZh
ciBhcmVhQyA9IFttYXQuZ2V0KDIsIDApLCBtYXQuZ2V0KDIsIDEpXTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYXJlYUQgPSBbbWF0LmdldCgyLDIpXTsKKworICAg
IAkvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcglpbnZBID0gZXMzZlNoYWRlck1h
dHJpeFRlc3QuaW52ZXJzZSh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgyLCAyLCBhcmVh
QSkpOworICAgIAkvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcgltYXRCID0gdGN1
TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMiwgMSwgYXJlYUIpOworICAgIAkvKiogQHR5cGUg
e3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcgltYXRDID0gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRh
QXJyYXkoMSwgMiwgYXJlYUMpOworICAgIAkvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICov
IHZhcgltYXREID0gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMSwgMSwgYXJlYUQpOwor
CisgICAgICAgIC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8gdmFyIHRtcCA9IHRjdU1h
dHJpeC5zdWJ0cmFjdChtYXRELCB0Y3VNYXRyaXgubXVsdGlwbHkobWF0QywgdGN1TWF0cml4Lm11
bHRpcGx5KGludkEsIG1hdEIpKSk7CisgICAgCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2No
dXJDb21wbGVtZW50ID0gMS4wIC8gdG1wLmdldCgwLCAwKTsKKyAgICAJLyoqIEB0eXBlIHt0Y3VN
YXRyaXguTWF0cml4fSAqLyB2YXIJemVyb01hdCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KDIsIDIs
IDApOworCisgICAgCS8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8gdmFyCWJsb2NrQSA9
IHRjdU1hdHJpeC5hZGQoaW52QSwgdGN1TWF0cml4Lm11bHRpcGx5KHRjdU1hdHJpeC5tdWx0aXBs
eShpbnZBLCB0Y3VNYXRyaXgubXVsdGlwbHkodGN1TWF0cml4Lm11bHRpcGx5TWF0U2NhbChtYXRC
LCBzY2h1ckNvbXBsZW1lbnQpLCBtYXRDKSksIGludkEpKTsKKyAgICAJLyoqIEB0eXBlIHt0Y3VN
YXRyaXguTWF0cml4fSAqLyB2YXIJYmxvY2tCID0gdGN1TWF0cml4Lm11bHRpcGx5TWF0U2NhbCh0
Y3VNYXRyaXgubXVsdGlwbHkodGN1TWF0cml4LnN1YnRyYWN0KHplcm9NYXQsIGludkEpLCBtYXRC
KSwgc2NodXJDb21wbGVtZW50KTsKKyAgICAJLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAq
LyB2YXIJYmxvY2tDID0gdGN1TWF0cml4Lm11bHRpcGx5KG1hdEMsIHRjdU1hdHJpeC5tdWx0aXBs
eU1hdFNjYWwoaW52QSwgLSBzY2h1ckNvbXBsZW1lbnQpKTsKKyAgICAJLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBibG9ja0QgPSBzY2h1ckNvbXBsZW1lbnQ7CisKKyAgICAJLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgcmVzdWx0ID0gWworICAgIAkJYmxvY2tBLmdldCgwLCAwKSwg
YmxvY2tBLmdldCgwLCAxKSwgYmxvY2tCLmdldCgwLCAwKSwKKyAgICAgICAgICAgIGJsb2NrQS5n
ZXQoMSwgMCksIGJsb2NrQS5nZXQoMSwgMSksIGJsb2NrQi5nZXQoMSwgMCksCisgICAgICAgICAg
ICBibG9ja0MuZ2V0KDAsIDApLCBibG9ja0MuZ2V0KDAsIDEpLAlibG9ja0QKKyAgICAJXTsKKwor
ICAgIAlyZXR1cm4gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMywgMywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG1hdAor
ICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgZXMzZlNoYWRl
ck1hdHJpeFRlc3QuaW52ZXJzZU1hdDQgPSBmdW5jdGlvbiAobWF0KSB7CisgICAgICAgIC8vIEJs
b2Nrd2lzZSBpbnZlcnNpb24KKyAgICAgICAgaWYgKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmRldGVy
bWluYW50KG1hdCkgPT0gMC4wKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25n
IGRldGVybWluYW50JykKKyAgICAgICAgfQorCisgICAgCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIGFyZWFBID0gWworICAgIAkJbWF0LmdldCgwLCAwKSwJbWF0LmdldCgwLCAxKSwK
KyAgICAJCW1hdC5nZXQoMSwgMCksCW1hdC5nZXQoMSwgMSkKKyAgICAJXTsKKyAgICAJLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYXJlYUIgPSBbCisgICAgCQltYXQuZ2V0KDAsIDIp
LAltYXQuZ2V0KDAsIDMpLAorICAgIAkJbWF0LmdldCgxLCAyKSwJbWF0LmdldCgxLCAzKQorICAg
IAldOworICAgIAkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhcmVhQyA9IFsKKyAg
ICAJCW1hdC5nZXQoMiwgMCksCW1hdC5nZXQoMiwgMSksCisgICAgCQltYXQuZ2V0KDMsIDApLAlt
YXQuZ2V0KDMsIDEpCisgICAgCV07CisgICAgCS8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGFyZWFEID0gWworICAgIAkJbWF0LmdldCgyLCAyKSwJbWF0LmdldCgyLCAzKSwKKyAgICAJ
CW1hdC5nZXQoMywgMiksCW1hdC5nZXQoMywgMykKKyAgICAJXTsKKworICAgIAkvKiogQHR5cGUg
e3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcglpbnZBID0gZXMzZlNoYWRlck1hdHJpeFRlc3QuaW52
ZXJzZSh0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgyLCAyLCBhcmVhQSkpOworICAgIAkv
KiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcgltYXRCID0gdGN1TWF0cml4Lm1hdHJp
eEZyb21EYXRhQXJyYXkoMiwgMiwgYXJlYUIpOworICAgIAkvKiogQHR5cGUge3RjdU1hdHJpeC5N
YXRyaXh9ICovIHZhcgltYXRDID0gdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMiwgMiwg
YXJlYUMpOworICAgIAkvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcgltYXREID0g
dGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoMiwgMiwgYXJlYUQpOworCisgICAgCS8qKiBA
dHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8gdmFyCXNjaHVyQ29tcGxlbWVudCA9IGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0LmludmVyc2UodGN1TWF0cml4LnN1YnRyYWN0KG1hdEQsICh0Y3VNYXRyaXgu
bXVsdGlwbHkobWF0QywgdGN1TWF0cml4Lm11bHRpcGx5KGludkEsIG1hdEIpKSkpKTsKKyAgICAJ
LyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIJemVyb01hdCA9IG5ldyB0Y3VNYXRy
aXguTWF0cml4KDIsIDIsIDApOworCisgICAgCS8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0g
Ki8gdmFyCWJsb2NrQSA9IHRjdU1hdHJpeC5hZGQoaW52QSwgdGN1TWF0cml4Lm11bHRpcGx5KHRj
dU1hdHJpeC5tdWx0aXBseSh0Y3VNYXRyaXgubXVsdGlwbHkodGN1TWF0cml4Lm11bHRpcGx5KGlu
dkEsIG1hdEIpLCBzY2h1ckNvbXBsZW1lbnQpLCBtYXRDKSwgaW52QSkpOworICAgIAkvKiogQHR5
cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcglibG9ja0IgPSB0Y3VNYXRyaXgubXVsdGlwbHko
dGN1TWF0cml4Lm11bHRpcGx5KHRjdU1hdHJpeC5zdWJ0cmFjdCh6ZXJvTWF0LCBpbnZBKSwgbWF0
QiksIHNjaHVyQ29tcGxlbWVudCk7CisgICAgCS8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0g
Ki8gdmFyCWJsb2NrQyA9IHRjdU1hdHJpeC5tdWx0aXBseSh0Y3VNYXRyaXgubXVsdGlwbHkodGN1
TWF0cml4LnN1YnRyYWN0KHplcm9NYXQsIHNjaHVyQ29tcGxlbWVudCksbWF0QyksIGludkEpOwor
ICAgIAkvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhcglibG9ja0QgPSBzY2h1ckNv
bXBsZW1lbnQ7CisKKyAgICAJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcmVzdWx0
ID0gWworICAgIAkJYmxvY2tBLmdldCgwLCAwKSwJYmxvY2tBLmdldCgwLCAxKSwJYmxvY2tCLmdl
dCgwLCAwKSwJYmxvY2tCLmdldCgwLCAxKSwKKyAgICAJCWJsb2NrQS5nZXQoMSwgMCksCWJsb2Nr
QS5nZXQoMSwgMSksCWJsb2NrQi5nZXQoMSwgMCksCWJsb2NrQi5nZXQoMSwgMSksCisgICAgCQli
bG9ja0MuZ2V0KDAsIDApLAlibG9ja0MuZ2V0KDAsIDEpLAlibG9ja0QuZ2V0KDAsIDApLAlibG9j
a0QuZ2V0KDAsIDEpLAorICAgIAkJYmxvY2tDLmdldCgxLCAwKSwJYmxvY2tDLmdldCgxLCAxKSwJ
YmxvY2tELmdldCgxLCAwKSwJYmxvY2tELmdldCgxLCAxKQorICAgIAldOworCisgICAgCXJldHVy
biB0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSg0LCA0LCByZXN1bHQpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdU1hdHJpeC5NYXRyaXh9IG1hdAorICAgICAqIEBy
ZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRl
c3QuaW52ZXJzZSA9IGZ1bmN0aW9uIChtYXQpIHsKKyAgICAgICAgaWYgKG1hdC5jb2xzID09IDIp
IHsKKyAgICAgICAgICAgIHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5pbnZlcnNlTWF0Miht
YXQpCisgICAgICAgIH0gZWxzZSBpZiAobWF0LmNvbHMgPT0gMykgeworICAgICAgICAgICAgcmV0
dXJuIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmludmVyc2VNYXQzKG1hdCkKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiBlczNmU2hhZGVyTWF0cml4VGVzdC5pbnZlcnNlTWF0NCht
YXQpCisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRy
aXguTWF0cml4fSBtYXQKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQorICAgICAq
LworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm5lZ2F0ZSA9IGZ1bmN0aW9uIChtYXQpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgcmV0VmFsID0gbmV3IHRj
dU1hdHJpeC5NYXRyaXgobWF0LnJvd3MsIG1hdC5jb2xzKTsKKworICAgIAlmb3IgKHZhciByID0g
MDsgciA8IG1hdC5yb3dzOyArK3IpCisgICAgCQlmb3IgKHZhciBjID0gMDsgYyA8IG1hdC5jb2xz
OyArK2MpCisgICAgCQkJcmV0VmFsLnNldChyLGMsIC1tYXQuZ2V0KHIsIGMpKTsKKworICAgIAly
ZXR1cm4gcmV0VmFsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdU1hdHJp
eC5NYXRyaXh9IG1hdAorICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICov
CisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuaW5jcmVtZW50ID0gZnVuY3Rpb24gKG1hdCkgewor
ICAgICAgICAvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhciByZXRWYWwgPSBuZXcg
dGN1TWF0cml4Lk1hdHJpeChtYXQucm93cywgbWF0LmNvbHMpOworCisgICAgCWZvciAodmFyIHIg
PSAwOyByIDwgbWF0LnJvd3M7ICsrcikKKyAgICAJCWZvciAodmFyIGMgPSAwOyBjIDwgbWF0LmNv
bHM7ICsrYykKKyAgICAJCQlyZXRWYWwuc2V0KHIsYywgbWF0LmdldChyLCBjKSArIDEuMCk7CisK
KyAgICAJcmV0dXJuIHJldFZhbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VNYXRyaXguTWF0cml4fSBtYXQKKyAgICAgKiBAcmV0dXJuIHt0Y3VNYXRyaXguTWF0cml4fQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmRlY3JlbWVudCA9IGZ1bmN0aW9uICht
YXQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgcmV0VmFs
ID0gbmV3IHRjdU1hdHJpeC5NYXRyaXgobWF0LnJvd3MsIG1hdC5jb2xzKTsKKworICAgIAlmb3Ig
KHZhciByID0gMDsgciA8IG1hdC5yb3dzOyArK3IpCisgICAgCQlmb3IgKHZhciBjID0gMDsgYyA8
IG1hdC5jb2xzOyArK2MpCisgICAgCQkJcmV0VmFsLnNldChyLGMsIG1hdC5nZXQociwgYykgLSAx
LjApOworCisgICAgCXJldHVybiByZXRWYWw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gYQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYgor
ICAgICAqIEByZXR1cm4ge3RjdU1hdHJpeC5NYXRyaXh9CisgICAgICovCisgICAgZXMzZlNoYWRl
ck1hdHJpeFRlc3Qub3V0ZXJQcm9kdWN0ID0gZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyB2YXIgcmV0VmFsID0gbmV3IHRjdU1hdHJpeC5N
YXRyaXgoYi5sZW5ndGgsIGEubGVuZ3RoKTsKKworICAgICAgICBmb3IgKHZhciByID0gMDsgciA8
IGIubGVuZ3RoOyArK3IpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgYS5sZW5n
dGg7ICsrYykgeworICAgICAgICAgICAgICAgIHJldFZhbC5zZXQociwgYywgYVtjXSAqIGJbcl0p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LnRyYW5zcG9zZShyZXRWYWwpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
ZW51bQorICAgICAqLworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZSA9IHsKKyAg
ICAJSU5QVVRUWVBFX0NPTlNUOiAwLAorICAgIAlJTlBVVFRZUEVfVU5JRk9STTogMSwKKyAgICAJ
SU5QVVRUWVBFX0RZTkFNSUM6IDIKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcCA9IHsKKyAgICAJT1BfQURE
OiAwLAorICAgIAlPUF9TVUI6IDEsCisgICAgCU9QX01VTDogMiwKKyAgICAJT1BfRElWOiAzLAor
ICAgIAlPUF9DT01QX01VTDogNCwKKyAgICAJT1BfT1VURVJfUFJPRFVDVDogNSwKKyAgICAJT1Bf
VFJBTlNQT1NFOiA2LAorICAgIAlPUF9JTlZFUlNFOiA3LAorICAgIAlPUF9ERVRFUk1JTkFOVDog
OCwKKyAgICAJT1BfVU5BUllfUExVUzogOSwKKyAgICAJT1BfTkVHQVRJT046IDEwLAorICAgIAlP
UF9QUkVfSU5DUkVNRU5UOiAxMSwKKyAgICAJT1BfUFJFX0RFQ1JFTUVOVDogMTIsCisgICAgCU9Q
X1BPU1RfSU5DUkVNRU5UOiAxMywKKyAgICAJT1BfUE9TVF9ERUNSRU1FTlQ6IDE0LAorICAgIAlP
UF9BRERfSU5UTzogMTUsCisgICAgCU9QX1NVQlRSQUNUX0ZST006IDE2LAorICAgIAlPUF9NVUxU
SVBMWV9JTlRPOiAxNywKKyAgICAJT1BfRElWSURFX0lOVE86IDE4LAorICAgIAlPUF9MQVNUOiAx
OQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0g
e2VzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZT19IGlucHV0VHlwZV8KKyAgICAgKiBAcGFy
YW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZV8KKyAgICAgKiBAcGFyYW0ge2ds
dVNoYWRlclV0aWwucHJlY2lzaW9uPX0gcHJlY2lzaW9uXworICAgICAqIEBzdHJ1Y3QKKyAgICAg
Ki8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJbnB1dCA9IGZ1bmN0aW9uIChpbnB1
dFR5cGVfLCBkYXRhVHlwZV8sIHByZWNpc2lvbl8peworICAgICAgICB0aGlzLmlucHV0VHlwZSA9
IGlucHV0VHlwZV8gfHwgZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9D
T05TVDsKKyAgICAgICAgdGhpcy5kYXRhVHlwZSA9IGRhdGFUeXBlXyB8fCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVkFMSUQ7CisgICAgICAgIHRoaXMucHJlY2lzaW9uID0gcHJlY2lzaW9uXyB8
fCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJbnB1dH0gaW4w
CisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJbnB1dH0gaW4xCisg
ICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcH0gb3AKKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRFdmFsRnVuYyA9IGZ1bmN0aW9uIChpbjAsIGlu
MSwgb3ApIHsKKyAgICAgICAgdmFyIHNldENvbG9yID0gZnVuY3Rpb24oZXZhbEN0eCwgc3JjKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykKKyAgICAgICAgICAgICAg
ICBldmFsQ3R4LmNvbG9yW2ldID0gc3JjW2ldOworICAgICAgICB9OworICAgICAgICBzd2l0Y2go
b3ApeworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9B
REQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4
VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAu
ZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBl
LklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGluMV8gPSBpbjEuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBl
czNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMS5pbnB1dFR5cGUsIGluMS5kYXRh
VHlwZSwgZXZhbEN0eCwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1h
dHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5Q
VVRUWVBFX0NPTlNULCBpbjEuZGF0YVR5cGUsIGV2YWxDdHgsIDEpOworCisgICAgICAgICAgICAg
ICAgICAgIHNldENvbG9yKGV2YWxDdHgsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVj
MyhlczNmU2hhZGVyTWF0cml4VGVzdC5hZGQoaW4wXywgaW4xXykpKTsKKyAgICAgICAgICAgICAg
ICB9OworICAgICAgICAJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9TVUI6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVz
dC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAuZGF0
YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklO
UFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGluMV8gPSBpbjEuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lklu
cHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNm
U2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMS5pbnB1dFR5cGUsIGluMS5kYXRhVHlw
ZSwgZXZhbEN0eCwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJp
eFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRU
WVBFX0NPTlNULCBpbjEuZGF0YVR5cGUsIGV2YWxDdHgsIDEpOworCisgICAgICAgICAgICAgICAg
ICAgIHNldENvbG9yKGV2YWxDdHgsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyhl
czNmU2hhZGVyTWF0cml4VGVzdC5zdWJ0cmFjdChpbjBfLCBpbjFfKSkpOworICAgICAgICAgICAg
ICAgIH07CisgICAgICAgIAljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01V
TDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGV2YWxDdHgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGluMF8gPSBpbjAuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMC5pbnB1dFR5cGUsIGluMC5k
YXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRl
ck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUu
SU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApOworICAgICAgICAgICAg
ICAgICAgICB2YXIgaW4xXyA9IGluMS5pbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3Qu
SW5wdXRUeXBlLklOUFVUVFlQRV9EWU5BTUlDID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoaW4xLmlucHV0VHlwZSwgaW4xLmRhdGFU
eXBlLCBldmFsQ3R4LCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBlczNmU2hhZGVyTWF0
cml4VGVzdC5nZXRJbnB1dFZhbHVlKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBV
VFRZUEVfQ09OU1QsIGluMS5kYXRhVHlwZSwgZXZhbEN0eCwgMSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgc2V0Q29sb3IoZXZhbEN0eCwgZXMzZlNoYWRlck1hdHJpeFRlc3QucmVkdWNlVG9WZWMz
KGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm11bHRpcGx5KGluMF8sIGluMV8pKSk7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1Bf
RElWOgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZhbEN0eCkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgaW4wXyA9IGluMC5pbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJp
eFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9EWU5BTUlDID8KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoaW4wLmlucHV0VHlwZSwgaW4w
LmRhdGFUeXBlLCBldmFsQ3R4LCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBlczNmU2hh
ZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlw
ZS5JTlBVVFRZUEVfQ09OU1QsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMCk7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBpbjFfID0gaW4xLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVz
dC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjEuaW5wdXRUeXBlLCBpbjEuZGF0
YVR5cGUsIGV2YWxDdHgsIDEpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklO
UFVUVFlQRV9DT05TVCwgaW4xLmRhdGFUeXBlLCBldmFsQ3R4LCAxKTsKKworICAgICAgICAgICAg
ICAgICAgICBzZXRDb2xvcihldmFsQ3R4LCBlczNmU2hhZGVyTWF0cml4VGVzdC5yZWR1Y2VUb1Zl
YzMoZXMzZlNoYWRlck1hdHJpeFRlc3QuZGl2aWRlKGluMF8sIGluMV8pKSk7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1Bf
Q09NUF9NVUw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVy
TWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAg
ICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBl
LCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5w
dXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGluMV8gPSBpbjEuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRy
aXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMS5pbnB1dFR5cGUsIGlu
MS5kYXRhVHlwZSwgZXZhbEN0eCwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNo
YWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5
cGUuSU5QVVRUWVBFX0NPTlNULCBpbjEuZGF0YVR5cGUsIGV2YWxDdHgsIDEpOworCisgICAgICAg
ICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVj
ZVRvVmVjMyhlczNmU2hhZGVyTWF0cml4VGVzdC5tYXRyaXhDb21wTXVsdCgvKiogQHR5cGUge3Rj
dU1hdHJpeC5NYXRyaXh9ICovKGluMF8pLCAvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICov
KGluMV8pKSkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgIAljYXNlIGVzM2ZTaGFkZXJN
YXRyaXhUZXN0Lk1hdHJpeE9wLk9QX09VVEVSX1BST0RVQ1Q6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0g
aW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBF
X0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3Qu
Z2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisg
ICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFs
dWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRh
dGFUeXBlLCBldmFsQ3R4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMV8gPSBpbjEu
aW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlO
QU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJ
bnB1dFZhbHVlKGluMS5pbnB1dFR5cGUsIGluMS5kYXRhVHlwZSwgZXZhbEN0eCwgMSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShl
czNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjEuZGF0YVR5
cGUsIGV2YWxDdHgsIDEpOworCisgICAgICAgICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgs
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyhlczNmU2hhZGVyTWF0cml4VGVzdC5v
dXRlclByb2R1Y3QoLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyhpbjBfKSwgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyhpbjFfKSkpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICAJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9UUkFOU1BPU0U6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1
dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNo
YWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAuZGF0YVR5cGUs
IGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQ
RV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsKKworICAgICAgICAgICAgICAgICAg
ICBzZXRDb2xvcihldmFsQ3R4LCBlczNmU2hhZGVyTWF0cml4VGVzdC5yZWR1Y2VUb1ZlYzMoZXMz
ZlNoYWRlck1hdHJpeFRlc3QudHJhbnNwb3NlKC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0g
Ki8oaW4wXykpKSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRl
ck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfSU5WRVJTRToKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKGV2YWxDdHgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMF8gPSBpbjAu
aW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlO
QU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJ
bnB1dFZhbHVlKGluMC5pbnB1dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShl
czNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0YVR5
cGUsIGV2YWxDdHgsIDApOworCisgICAgICAgICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgs
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyhlczNmU2hhZGVyTWF0cml4VGVzdC5p
bnZlcnNlKC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8oaW4wXykpKSk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3Au
T1BfREVURVJNSU5BTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNm
U2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5w
dXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAg
ICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRl
c3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsK
KworICAgICAgICAgICAgICAgICAgICB2YXIgZGV0ID0gZXMzZlNoYWRlck1hdHJpeFRlc3QuZGV0
ZXJtaW5hbnQoLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyhpbjBfKSk7CisgICAgICAg
ICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgsIFtkZXQsIGRldCwgZGV0XSk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3Au
T1BfVU5BUllfUExVUzoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGV2YWxDdHgp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMF8gPSBpbjAuaW5wdXRUeXBlID09IGVzM2ZT
aGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMC5pbnB1
dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVz
dC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApOwor
CisgICAgICAgICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgsIGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LnJlZHVjZVRvVmVjMygvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovKGluMF8pKSk7
CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3Qu
TWF0cml4T3AuT1BfTkVHQVRJT046CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChl
dmFsQ3R4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9
PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAg
ICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShp
bjAuaW5wdXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAg
ICAgICAgICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1h
dHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4
LCAwKTsKKworICAgICAgICAgICAgICAgICAgICBzZXRDb2xvcihldmFsQ3R4LCBlczNmU2hhZGVy
TWF0cml4VGVzdC5yZWR1Y2VUb1ZlYzMoZXMzZlNoYWRlck1hdHJpeFRlc3QubmVnYXRlKC8qKiBA
dHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8oaW4wXykpKSk7CisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfUFJFX0lOQ1JF
TUVOVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGV2YWxDdHgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGluMF8gPSBpbjAuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRy
aXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMC5pbnB1dFR5cGUsIGlu
MC5kYXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNo
YWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5
cGUuSU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApOworCisgICAgICAg
ICAgICAgICAgICAgIHZhciB2YWwwID0gZXMzZlNoYWRlck1hdHJpeFRlc3QucmVkdWNlVG9WZWMz
KGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmluY3JlbWVudCgvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRy
aXh9ICovKGluMF8pKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWwxID0gZXMzZlNoYWRl
ck1hdHJpeFRlc3QucmVkdWNlVG9WZWMzKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmluY3JlbWVudCgv
KiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovKGluMF8pKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNldENvbG9yKGV2YWxDdHgsIGRlTWF0aC5hZGQodmFsMCwgdmFsMSkpOworICAgICAgICAg
ICAgICAgIH07CisgICAgICAgIAljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9Q
X1BSRV9ERUNSRU1FTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNm
U2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5w
dXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAgICAgICAgICAgICAgICAg
ICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRl
c3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsK
KworICAgICAgICAgICAgICAgICAgICB2YXIgdmFsMCA9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJl
ZHVjZVRvVmVjMyhlczNmU2hhZGVyTWF0cml4VGVzdC5kZWNyZW1lbnQoLyoqIEB0eXBlIHt0Y3VN
YXRyaXguTWF0cml4fSAqLyhpbjBfKSkpOworICAgICAgICAgICAgICAgICAgICB2YXIgdmFsMSA9
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyhlczNmU2hhZGVyTWF0cml4VGVzdC5k
ZWNyZW1lbnQoLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyhpbjBfKSkpOworICAgICAg
ICAgICAgICAgICAgICBzZXRDb2xvcihldmFsQ3R4LCBkZU1hdGguYWRkKHZhbDAsIHZhbDEpKTsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5N
YXRyaXhPcC5PUF9QT1NUX0lOQ1JFTUVOVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKGV2YWxDdHgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMF8gPSBpbjAuaW5wdXRU
eXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/
CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZh
bHVlKGluMC5pbnB1dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hh
ZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0YVR5cGUsIGV2
YWxDdHgsIDApOworCisgICAgICAgICAgICAgICAgICAgIHZhciB2YWwwID0gZXMzZlNoYWRlck1h
dHJpeFRlc3QucmVkdWNlVG9WZWMzKChpbjBfKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciB2
YWwxID0gZXMzZlNoYWRlck1hdHJpeFRlc3QucmVkdWNlVG9WZWMzKGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LmluY3JlbWVudCgvKiogQHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovKGluMF8pKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgsIGRlTWF0aC5hZGQodmFsMCwgdmFs
MSkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgIAljYXNlIGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0Lk1hdHJpeE9wLk9QX1BPU1RfREVDUkVNRU5UOgorICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoZXZhbEN0eCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgaW4wXyA9IGluMC5p
bnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9EWU5B
TUlDID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElu
cHV0VmFsdWUoaW4wLmlucHV0VHlwZSwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgOiBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfQ09OU1QsIGluMC5kYXRhVHlw
ZSwgZXZhbEN0eCwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIHZhbDAgPSBlczNmU2hh
ZGVyTWF0cml4VGVzdC5yZWR1Y2VUb1ZlYzMoKGluMF8pKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHZhbDEgPSBlczNmU2hhZGVyTWF0cml4VGVzdC5yZWR1Y2VUb1ZlYzMoZXMzZlNoYWRlck1h
dHJpeFRlc3QuZGVjcmVtZW50KC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8oaW4wXykp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3IoZXZhbEN0eCwgZGVNYXRoLmFkZCh2YWww
LCB2YWwxKSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1h
dHJpeFRlc3QuTWF0cml4T3AuT1BfQUREX0lOVE86CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbjBfID0gaW4wLmlu
cHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFN
SUMgPworICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5w
dXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApCisgICAgICAg
ICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoZXMz
ZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05TVCwgaW4wLmRhdGFUeXBl
LCBldmFsQ3R4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMV8gPSBpbjEuaW5wdXRU
eXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/
CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZh
bHVlKGluMS5pbnB1dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hh
ZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjEuZGF0YVR5cGUsIGV2
YWxDdHgsIDEpOworCisgICAgICAgICAgICAgICAgICAgIHNldENvbG9yKGV2YWxDdHgsIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyh0Y3VNYXRyaXguYWRkKC8qKiBAdHlwZSB7dGN1
TWF0cml4Lk1hdHJpeH0gKi8oaW4wXyksIC8qKiBAdHlwZSB7dGN1TWF0cml4Lk1hdHJpeH0gKi8o
aW4xXykpKSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgCWNhc2UgZXMzZlNoYWRlck1h
dHJpeFRlc3QuTWF0cml4T3AuT1BfU1VCVFJBQ1RfRlJPTToKKyAgICAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKGV2YWxDdHgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluMF8gPSBp
bjAuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVf
RFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5n
ZXRJbnB1dFZhbHVlKGluMC5pbnB1dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwgMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5wdXRWYWx1
ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBpbjAuZGF0
YVR5cGUsIGV2YWxDdHgsIDApOworICAgICAgICAgICAgICAgICAgICB2YXIgaW4xXyA9IGluMS5p
bnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9EWU5B
TUlDID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldElu
cHV0VmFsdWUoaW4xLmlucHV0VHlwZSwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAxKQorICAgICAg
ICAgICAgICAgICAgICAgICAgOiBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfQ09OU1QsIGluMS5kYXRhVHlw
ZSwgZXZhbEN0eCwgMSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3IoZXZhbEN0eCwg
ZXMzZlNoYWRlck1hdHJpeFRlc3QucmVkdWNlVG9WZWMzKHRjdU1hdHJpeC5zdWJ0cmFjdCgvKiog
QHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovKGluMF8pLCAvKiogQHR5cGUge3RjdU1hdHJpeC5N
YXRyaXh9ICovKGluMV8pKSkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgIAljYXNlIGVz
M2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX01VTFRJUExZX0lOVE86CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBpbjBfID0gaW4wLmlucHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUu
SU5QVVRUWVBFX0RZTkFNSUMgPworICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck1h
dHJpeFRlc3QuZ2V0SW5wdXRWYWx1ZShpbjAuaW5wdXRUeXBlLCBpbjAuZGF0YVR5cGUsIGV2YWxD
dHgsIDApCisgICAgICAgICAgICAgICAgICAgICAgICA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lmdl
dElucHV0VmFsdWUoZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9DT05T
VCwgaW4wLmRhdGFUeXBlLCBldmFsQ3R4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGlu
MV8gPSBpbjEuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBV
VFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyTWF0cml4
VGVzdC5nZXRJbnB1dFZhbHVlKGluMS5pbnB1dFR5cGUsIGluMC5kYXRhVHlwZSwgZXZhbEN0eCwg
MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0SW5w
dXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0NPTlNULCBp
bjEuZGF0YVR5cGUsIGV2YWxDdHgsIDEpOworCisgICAgICAgICAgICAgICAgICAgIHNldENvbG9y
KGV2YWxDdHgsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJlZHVjZVRvVmVjMyh0Y3VNYXRyaXgubXVs
dGlwbHkoLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyhpbjBfKSwgLyoqIEB0eXBlIHt0
Y3VNYXRyaXguTWF0cml4fSAqLyhpbjFfKSkpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICAJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ESVZJREVfSU5UTzoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGV2YWxDdHgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGluMF8gPSBpbjAuaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lklu
cHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/CisgICAgICAgICAgICAgICAgICAgICAgICBlczNm
U2hhZGVyTWF0cml4VGVzdC5nZXRJbnB1dFZhbHVlKGluMC5pbnB1dFR5cGUsIGluMC5kYXRhVHlw
ZSwgZXZhbEN0eCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZXMzZlNoYWRlck1hdHJp
eFRlc3QuZ2V0SW5wdXRWYWx1ZShlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRU
WVBFX0NPTlNULCBpbjAuZGF0YVR5cGUsIGV2YWxDdHgsIDApOworICAgICAgICAgICAgICAgICAg
ICB2YXIgaW4xXyA9IGluMS5pbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRU
eXBlLklOUFVUVFlQRV9EWU5BTUlDID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0LmdldElucHV0VmFsdWUoaW4xLmlucHV0VHlwZSwgaW4xLmRhdGFUeXBlLCBl
dmFsQ3R4LCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBlczNmU2hhZGVyTWF0cml4VGVz
dC5nZXRJbnB1dFZhbHVlKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVf
Q09OU1QsIGluMS5kYXRhVHlwZSwgZXZhbEN0eCwgMSk7CisKKyAgICAgICAgICAgICAgICAgICAg
c2V0Q29sb3IoZXZhbEN0eCwgZXMzZlNoYWRlck1hdHJpeFRlc3QucmVkdWNlVG9WZWMzKHRjdU1h
dHJpeC5kaXZpZGUoLyoqIEB0eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyhpbjBfKSwgLyoqIEB0
eXBlIHt0Y3VNYXRyaXguTWF0cml4fSAqLyhpbjFfKSkpKTsKKyAgICAgICAgICAgICAgICB9Owor
ICAgICAgICB9CisJfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBw
YXJhbSB7ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4U2hhZGVyRXZhbEZ1bmN9IGV2YWxGdW5j
CisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGV9IGluVHlwZTAK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZX0gaW5UeXBlMQor
ICAgICAqIEBleHRlbmRzIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWx1YXRvcn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhTaGFkZXJFdmFsdWF0b3IgPSBm
dW5jdGlvbihldmFsRnVuYywgaW5UeXBlMCwgaW5UeXBlMSkgeworICAgICAgICBnbHNTaGFkZXJS
ZW5kZXJDYXNlLlNoYWRlckV2YWx1YXRvci5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLm1fbWF0
RXZhbEZ1bmMgPSBldmFsRnVuYzsKKyAgICAgICAgdGhpcy5tX2luVHlwZTAgPSBpblR5cGUwOwor
ICAgICAgICB0aGlzLm1faW5UeXBlMSA9IGluVHlwZTE7CisgICAgfTsKKworICAgIGVzM2ZTaGFk
ZXJNYXRyaXhUZXN0Lk1hdHJpeFNoYWRlckV2YWx1YXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9yKTsKKyAgICBlczNmU2hhZGVy
TWF0cml4VGVzdC5NYXRyaXhTaGFkZXJFdmFsdWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
ZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4U2hhZGVyRXZhbHVhdG9yOworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBldmFs
Q3R4CisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4U2hhZGVyRXZhbHVh
dG9yLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIChldmFsQ3R4KSB7CisgICAgCXRoaXMu
bV9tYXRFdmFsRnVuYyhldmFsQ3R4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHYKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqLwor
ICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LndyaXRlVmVjdG9yQ29uc3RydWN0b3IgPSBmdW5jdGlv
biAodiwgc2l6ZSkgeworICAgIAl2YXIgc3RyID0gJ3ZlYycgKyBzaXplICsgJyc7CisgICAgCWZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHNpemU7IG5keCsrKSB7CisgICAgCQlpZiAobmR4ICE9IDAp
CisgICAgCQkJc3RyICs9ICcsICc7CisgICAgCQlzdHIgKz0gdltuZHhdLnRvU3RyaW5nOworICAg
IAl9CisgICAgCXN0ciArPSAnKSc7CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHt0Y3VNYXRyaXguTWF0cml4fSBtCisgICAgICovCisgICAgZXMz
ZlNoYWRlck1hdHJpeFRlc3Qud3JpdGVNYXRyaXhDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChtKSB7
CisgICAgICAgIHZhciBzdHIgPSAnJzsKKyAgICAgICAgaWYgKG0ucm93cyA9PSBtLmNvbHMpCisg
ICAgCQlzdHIgKz0gJ21hdCcgKyBtLmNvbHM7CisgICAgCWVsc2UKKyAgICAJCXN0ciArPSAnbWF0
JyArIG0uY29scyArICd4JyArIG0ucm93czsKKworICAgIAlzdHIgKz0gJygnOworICAgIAlmb3Ig
KHZhciBjb2xOZHggPSAwOyBjb2xOZHggPCBtLmNvbHM7IGNvbE5keCsrKSB7CisgICAgCQlmb3Ig
KHZhciByb3dOZHggPSAwOyByb3dOZHggPCBtLnJvd3M7IHJvd05keCsrKSB7CisgICAgCQkJaWYg
KHJvd05keCA+IDAgfHwgY29sTmR4ID4gMCkKKyAgICAJCQkJc3RyICs9ICcsICc7CisgICAgCQkJ
c3RyICs9IG0uZ2V0KHJvd05keCwgY29sTmR4KS50b1N0cmluZygpOworICAgIAkJfQorICAgIAl9
CisgICAgCXN0ciArPSAnKSc7CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhU
ZXN0LlNoYWRlcklucHV0fSBpbjAKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhUZXN0
LlNoYWRlcklucHV0fSBpbjEKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1h
dHJpeE9wfSBvcAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisgICAgICog
QGV4dGVuZHMge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZX0KKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJNYXRyaXhDYXNlID0gZnVuY3Rpb24obmFt
ZSwgZGVzYywgaW4wLCBpbjEsIG9wLCBpc1ZlcnRleENhc2UpIHsKKyAgICAgICAgdmFyIGV2YWxG
dW5jID0gZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0RXZhbEZ1bmMoaW4wLCBpbjEsIG9wKTsKKyAg
ICAgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJSZW5kZXJDYXNlLmNhbGwodGhpcywgbmFt
ZSwgZGVzYywgaXNWZXJ0ZXhDYXNlLCBldmFsRnVuYyk7CisgICAgICAgIHRoaXMubV9pbjAgPSBp
bjA7CisgICAgICAgIHRoaXMubV9pbjEgPSBpbjE7CisgICAgICAgIHRoaXMubV9vcCA9IG9wOwor
ICAgICAgICB0aGlzLm1fZXZhbHVhdG9yID0gbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJp
eFNoYWRlckV2YWx1YXRvcihldmFsRnVuYywgaW4wLmlucHV0VHlwZSwgaW4xLmlucHV0VHlwZSk7
CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNh
c2UucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJNYXRyaXhDYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJp
eENhc2U7CisKKworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2UucHJv
dG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBzaGFkZXJTb3VyY2VzID0g
WyAnJywgJycgXTsKKyAgICAgICAgdmFyIHZ0eCA9IDA7CisgICAgCXZhciBmcmFnID0gMTsKKyAg
ICAJdmFyIG9wID0gdGhpcy5tX2lzVmVydGV4Q2FzZSA/IHZ0eCA6IGZyYWc7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNJbkR5bk1hdDAgPSBnbHVTaGFkZXJVdGlsLmlz
RGF0YVR5cGVNYXRyaXgodGhpcy5tX2luMC5kYXRhVHlwZSkgJiYgdGhpcy5tX2luMC5pbnB1dFR5
cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9EWU5BTUlDOwor
ICAgIAkvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0luRHluTWF0MSA9IGdsdVNoYWRlclV0
aWwuaXNEYXRhVHlwZU1hdHJpeCh0aGlzLm1faW4xLmRhdGFUeXBlKSAmJiB0aGlzLm1faW4xLmlu
cHV0VHlwZSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX0RZTkFN
SUM7CisgICAgCS8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIGluVmFsdWVzID0gW107
CisgICAgCS8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHJlc3VsdFR5
cGU7CisgICAgCS8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHZhciByZXN1
bHRQcmVjID0gdGhpcy5tX2luMC5wcmVjaXNpb247CisgICAgCS8qKiBAdHlwZSB7QXJyYXk8c3Ry
aW5nPn0gKi8gdmFyIHBhc3NWYXJzID0gW107CisgICAgCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtSW5wdXRzID0gKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmlzT3BlcmF0aW9uQmluYXJ5KHRo
aXMubV9vcCkpID8gKDIpIDogKDEpOworCisgICAgCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIg
b3BlcmF0aW9uVmFsdWUwID0gJyc7CisgICAgCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgb3Bl
cmF0aW9uVmFsdWUxID0gJyc7CisKKyAgICAgICAgaWYgKGlzSW5EeW5NYXQwICYmIGlzSW5EeW5N
YXQxKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IgKCdPbmx5IHNpbmdsZSBkeW5hbWlj
IG1hdHJpeCBpbnB1dCBpcyBhbGxvd2VkLicpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMubV9vcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9NVUwgJiYgZ2x1U2hh
ZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHRoaXMubV9pbjAuZGF0YVR5cGUpICYmIGdsdVNoYWRl
clV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0aGlzLm1faW4xLmRhdGFUeXBlKSkgeworICAgIAkJcmVz
dWx0VHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXgoZ2x1U2hhZGVyVXRpbC5n
ZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnModGhpcy5tX2luMS5kYXRhVHlwZSksIGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKHRoaXMubV9pbjAuZGF0YVR5cGUpKTsKKyAg
ICAJfSBlbHNlIGlmICh0aGlzLm1fb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3Au
T1BfT1VURVJfUFJPRFVDVCkgeworICAgIAkJcmVzdWx0VHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVNYXRyaXgoZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodGhpcy5t
X2luMS5kYXRhVHlwZSksIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHRoaXMu
bV9pbjAuZGF0YVR5cGUpKTsKKyAgICAJfSBlbHNlIGlmICh0aGlzLm1fb3AgPT0gZXMzZlNoYWRl
ck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfVFJBTlNQT1NFKSB7CisgICAgCQlyZXN1bHRUeXBlID0g
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
TWF0cml4TnVtUm93cyh0aGlzLm1faW4wLmRhdGFUeXBlKSwgZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZU1hdHJpeE51bUNvbHVtbnModGhpcy5tX2luMC5kYXRhVHlwZSkpOworICAgIAl9IGVsc2Ug
aWYgKHRoaXMubV9vcCA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9JTlZFUlNF
KSB7CisgICAgCQlyZXN1bHRUeXBlID0gdGhpcy5tX2luMC5kYXRhVHlwZTsKKyAgICAJfSBlbHNl
IGlmICh0aGlzLm1fb3AgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfREVURVJN
SU5BTlQpIHsKKyAgICAJCXJlc3VsdFR5cGUgPSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
OworICAgIAl9IGVsc2UgaWYgKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvblR5cGUo
dGhpcy5tX29wKSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElP
TlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9SIHx8CisgICAgCQkJIGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LmdldE9wZXJhdGlvblR5cGUodGhpcy5tX29wKSA9PSBlczNmU2hhZGVyTWF0cml4VGVzdC5P
cGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUikgeworICAg
IAkJcmVzdWx0VHlwZSA9IHRoaXMubV9pbjAuZGF0YVR5cGU7CisgICAgCX0gZWxzZSBpZiAoZ2x1
U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHRoaXMubV9pbjAuZGF0YVR5cGUpICYmIGdsdVNo
YWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0aGlzLm1faW4xLmRhdGFUeXBlKSkgeworICAgIAkJ
aWYgKHRoaXMubV9pbjAuZGF0YVR5cGUgIT09IHRoaXMubV9pbjEuZGF0YVR5cGUpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IgKCdJbmNvbXBhdGlibGUgZGF0YSB0eXBlcycpOwor
ICAgICAgICAgICAgfQorICAgIAkJcmVzdWx0VHlwZSA9IHRoaXMubV9pbjAuZGF0YVR5cGU7Cisg
ICAgCX0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHRoaXMubV9pbjAu
ZGF0YVR5cGUpIHx8IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0aGlzLm1faW4xLmRh
dGFUeXBlKSkgeworICAgIAkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXROZHggPSBnbHVT
aGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodGhpcy5tX2luMC5kYXRhVHlwZSkgPyAwIDogMTsK
KyAgICAJCS8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIG1hdHJpeFR5
cGUgPSBtYXROZHggPT0gMCA/IHRoaXMubV9pbjAuZGF0YVR5cGUgOiB0aGlzLm1faW4xLmRhdGFU
eXBlOworICAgIAkJLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgb3Ro
ZXJUeXBlID0gbWF0TmR4ID09IDAgPyB0aGlzLm1faW4xLmRhdGFUeXBlIDogdGhpcy5tX2luMC5k
YXRhVHlwZTsKKworICAgIAkJaWYgKG90aGVyVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUKQorICAgIAkJCXJlc3VsdFR5cGUgPSBtYXRyaXhUeXBlOworICAgIAkJZWxzZSAgewor
ICAgIAkJCWlmICghZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKG90aGVyVHlwZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yICgnSXMgbm90IGRhdGEgdHlwZSB2
ZWN0b3InKTsKKyAgICAgICAgICAgICAgICB9CisgICAgCQkJcmVzdWx0VHlwZSA9IGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZlYyhtYXROZHggPT0gMCA/IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKG1hdHJpeFR5cGUpIDogZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZU1hdHJpeE51bUNvbHVtbnMobWF0cml4VHlwZSkpOworICAgIAkJfQorICAgIAl9IGVsc2Ug
eworICAgIAkJdGhyb3cgbmV3IEVycm9yICgnRXJyb3InKTsKKyAgICAJfQorCisgICAgICAgIHNo
YWRlclNvdXJjZXNbdnR4XSArPSAnI3ZlcnNpb24gMzAwIGVzXG4nOworICAgIAlzaGFkZXJTb3Vy
Y2VzW2ZyYWddICs9ICcjdmVyc2lvbiAzMDAgZXNcbic7CisKKyAgICAJc2hhZGVyU291cmNlc1t2
dHhdICs9ICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nOworICAgIAlzaGFkZXJTb3VyY2Vz
W2ZyYWddICs9ICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJh
Z0NvbG9yO1xuJzsKKyAgICAJaWYgKHRoaXMubV9pc1ZlcnRleENhc2UpIHsKKyAgICAJCXNoYWRl
clNvdXJjZXNbdnR4XSArPSAnb3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJzsKKyAgICAJCXNo
YWRlclNvdXJjZXNbZnJhZ10gKz0gJ2luIG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJzsKKyAgICAJ
fQorCisgICAgICAgIC8vIElucHV0IGRlY2xhcmF0aW9ucy4KKyAgICAJZm9yICh2YXIgaW5OZHgg
PSAwOyBpbk5keCA8IG51bUlucHV0czsgaW5OZHgrKykgeworICAgIAkJLyoqIEB0eXBlIHtlczNm
U2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJbnB1dH0gKi8gdmFyIGluZCA9IGluTmR4ID4gMCA/IHRo
aXMubV9pbjEgOiB0aGlzLm1faW4wOworICAgIAkJLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBw
cmVjTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShpbmQucHJlY2lzaW9uKTsK
KyAgICAJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdHlwZU5hbWUgPSBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlTmFtZShpbmQuZGF0YVR5cGUpOworICAgIAkJLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBpblZhbHVlTmR4ID0gaW5OZHggPiAwID8gMSA6IDA7CisKKyAgICAJCWlmIChpbmQu
aW5wdXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlO
QU1JQykgeworICAgIAkJCXNoYWRlclNvdXJjZXNbdnR4XSArPSAnaW4gJyArIHByZWNOYW1lICsg
JyAnICsgdHlwZU5hbWUgKyAnIGFfJzsKKworICAgIAkJCWlmIChnbHVTaGFkZXJVdGlsLmlzRGF0
YVR5cGVNYXRyaXgoaW5kLmRhdGFUeXBlKSkgeworICAgIAkJCQkvLyBhX21hdE4sIHZfbWF0Tgor
ICAgIAkJCQlzaGFkZXJTb3VyY2VzW3Z0eF0gKz0gdHlwZU5hbWUgKyAnO1xuJzsKKyAgICAJCQkJ
aWYgKCF0aGlzLm1faXNWZXJ0ZXhDYXNlKSB7CisgICAgCQkJCQlzaGFkZXJTb3VyY2VzW3Z0eF0g
Kz0gJ291dCAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcgdl8nICsgdHlwZU5hbWUg
KyAnO1xuJzsKKyAgICAJCQkJCXNoYWRlclNvdXJjZXNbZnJhZ10gKz0gJ2luICcgKyBwcmVjTmFt
ZSArICcgJyArIHR5cGVOYW1lICsgJyB2XycgKyB0eXBlTmFtZSArICc7XG4nOworICAgIAkJCQkJ
cGFzc1ZhcnMucHVzaCh0eXBlTmFtZSk7CisgICAgCQkJCX0KKworICAgIAkJCQlpblZhbHVlc1tp
blZhbHVlTmR4XSA9ICh0aGlzLm1faXNWZXJ0ZXhDYXNlID8gJ2FfJyA6ICd2XycpICsgZ2x1U2hh
ZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoaW5kLmRhdGFUeXBlKTsKKyAgICAJCQl9IGVsc2Ugewor
ICAgIAkJCQkvLyBhX2Nvb3Jkcywgdl9jb29yZHMKKyAgICAJCQkJc2hhZGVyU291cmNlc1t2dHhd
ICs9ICdjb29yZHM7XG4nOworICAgIAkJCQlpZiAoIXRoaXMubV9pc1ZlcnRleENhc2UpIHsKKyAg
ICAJCQkJCXNoYWRlclNvdXJjZXNbdnR4XSArPSAnb3V0ICcgKyBwcmVjTmFtZSArICcgJyArIHR5
cGVOYW1lICsgJyB2X2Nvb3Jkcztcbic7CisgICAgCQkJCQlzaGFkZXJTb3VyY2VzW2ZyYWddICs9
ICdpbiAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcgdl9jb29yZHM7XG4nOworICAg
IAkJCQkJcGFzc1ZhcnMucHVzaCgnY29vcmRzJyk7CisgICAgCQkJCX0KKworICAgIAkJCQlpblZh
bHVlc1tpblZhbHVlTmR4XSA9IHRoaXMubV9pc1ZlcnRleENhc2UgPyAnYV9jb29yZHMnIDogJ3Zf
Y29vcmRzJzsKKyAgICAJCQl9CisgICAgCQl9ICBlbHNlIGlmIChpbmQuaW5wdXRUeXBlID09IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfVU5JRk9STSkgeworICAgIAkJ
CXNoYWRlclNvdXJjZXNbb3BdICs9ICd1bmlmb3JtICcgKyBwcmVjTmFtZSArICcgJyArIHR5cGVO
YW1lICsgJyB1X2luJyArIGluTmR4ICsgJztcbic7CisgICAgCQkJaW5WYWx1ZXNbaW5WYWx1ZU5k
eF0gPSAndV9pbicgKyBpbk5keC50b1N0cmluZygpOworICAgIAkJfSBlbHNlIGlmIChpbmQuaW5w
dXRUeXBlID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfQ09OU1Qp
IHsKKyAgICAJCQlzaGFkZXJTb3VyY2VzW29wXSArPSAnY29uc3QgJyArIHByZWNOYW1lICsgJyAn
ICsgdHlwZU5hbWUgKyAnIGluJyArIGluTmR4ICsgJyA9ICc7CisKKyAgICAJCQkvLyBHZW5lcmF0
ZSBkZWNsYXJhdGlvbi4KKyAgICAJCQlzd2l0Y2ggKGluZC5kYXRhVHlwZSkgeworICAgIAkJCQlj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzaGFkZXJTb3VyY2VzW29wXSArPSBzX2NvbnN0SW5GbG9hdFtpbk5keF0udG9TdHJpbmcoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNv
dXJjZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LndyaXRlVmVjdG9yQ29uc3RydWN0b3Io
IHNfY29uc3RJblZlYzJbaW5OZHhdLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LndyaXRlVmVjdG9yQ29uc3RydWN0b3IoIHNfY29uc3RJblZlYzNbaW5OZHhdLCAzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJj
ZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LndyaXRlVmVjdG9yQ29uc3RydWN0b3IoIHNf
Y29uc3RJblZlYzRbaW5OZHhdLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LndyaXRlTWF0cml4Q29uc3RydWN0b3IoIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KDIs
IDIsIHNfY29uc3RJbk1hdDJ4Mltpbk5keF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU291cmNlc1tvcF0gKz0gZXMzZlNoYWRlck1h
dHJpeFRlc3Qud3JpdGVNYXRyaXhDb25zdHJ1Y3RvciggdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRh
QXJyYXkoMywgMiwgc19jb25zdEluTWF0MngzW2luTmR4XSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgCQkJCWNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQyWDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJTb3VyY2VzW29wXSArPSBlczNm
U2hhZGVyTWF0cml4VGVzdC53cml0ZU1hdHJpeENvbnN0cnVjdG9yKCB0Y3VNYXRyaXgubWF0cml4
RnJvbURhdGFBcnJheSg0LCAyLCBzX2NvbnN0SW5NYXQyeDRbaW5OZHhdKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAJCQkJY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDNYMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNbb3Bd
ICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LndyaXRlTWF0cml4Q29uc3RydWN0b3IoIHRjdU1hdHJp
eC5tYXRyaXhGcm9tRGF0YUFycmF5KDIsIDMsIHNfY29uc3RJbk1hdDN4Mltpbk5keF0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJj
ZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LndyaXRlTWF0cml4Q29uc3RydWN0b3IoIHRj
dU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KDMsIDMsIHNfY29uc3RJbk1hdDN4M1tpbk5keF0p
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIAkJCQljYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0OgorICAgICAgICAgICAgICAgICAgICAgICAgc2hh
ZGVyU291cmNlc1tvcF0gKz0gZXMzZlNoYWRlck1hdHJpeFRlc3Qud3JpdGVNYXRyaXhDb25zdHJ1
Y3RvciggdGN1TWF0cml4Lm1hdHJpeEZyb21EYXRhQXJyYXkoNCwgMywgc19jb25zdEluTWF0M3g0
W2luTmR4XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgCQkJCWNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDI6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkZXJTb3VyY2VzW29wXSArPSBlczNmU2hhZGVyTWF0cml4VGVzdC53cml0ZU1hdHJp
eENvbnN0cnVjdG9yKCB0Y3VNYXRyaXgubWF0cml4RnJvbURhdGFBcnJheSgyLCA0LCBzX2NvbnN0
SW5NYXQ0eDJbaW5OZHhdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAJ
CQkJY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lndy
aXRlTWF0cml4Q29uc3RydWN0b3IoIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KDMsIDQs
IHNfY29uc3RJbk1hdDR4M1tpbk5keF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgIAkJCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNbb3BdICs9IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LndyaXRlTWF0cml4Q29uc3RydWN0b3IoIHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5
KDQsIDQsIHNfY29uc3RJbk1hdDR4NFtpbk5keF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgCQkJCWRlZmF1bHQ6CisgICAgCQkJCQl0aHJvdyBuZXcgRXJyb3IoJ0Rh
dGEgdHlwZSBlcnJvcicpOworICAgIAkJCX0KKworICAgIAkJCXNoYWRlclNvdXJjZXNbb3BdICs9
ICc7XG4nOworCisgICAgCQkJaW5WYWx1ZXNbaW5WYWx1ZU5keF0gPSAnaW4nICsgaW5OZHgudG9T
dHJpbmcoKTsKKyAgICAJCX0KKyAgICAgICAgfQorCisgICAgICAgIHNoYWRlclNvdXJjZXNbdnR4
XSArPSAnXG4nCisJCSsgJ3ZvaWQgbWFpbiAodm9pZClcbicKKwkJKyAne1xuJworCQkrICcJZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJzsKKyAgICAgICAgc2hhZGVyU291cmNlc1tmcmFnXSAr
PSAnXG4nCisgICAgICAgICsgJ3ZvaWQgbWFpbiAodm9pZClcbicKKyAgICAgICAgKyAne1xuJzsK
KworICAgIAlpZiAodGhpcy5tX2lzVmVydGV4Q2FzZSkKKyAgICAJCXNoYWRlclNvdXJjZXNbZnJh
Z10gKz0gJwlkRVFQX0ZyYWdDb2xvciA9IHZfY29sb3I7XG4nOworICAgIAllbHNlIHsKKyAgICAJ
CWZvciAodmFyIGkgPSAwOyBpICE9IHBhc3NWYXJzLmxlbmd0aDsgaSsrKQorICAgIAkJCXNoYWRl
clNvdXJjZXNbdnR4XSArPSAnCXZfJyArIHBhc3NWYXJzW2ldICsgJyA9ICcgKyAnYV8nICsgcGFz
c1ZhcnNbaV0gKyAnO1xuJzsKKyAgICAJfQorCisgICAgCS8vIE9wZXJhdGlvbi4KKworICAgIAlz
d2l0Y2ggKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvbk5hdHVyZSh0aGlzLm1fb3Ap
KSB7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlvbk5hdHVyZS5PUEVS
QVRJT05OQVRVUkVfUFVSRToKKyAgICAJCQlpZiAoZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0T3Bl
cmF0aW9uVHlwZSh0aGlzLm1fb3ApID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlvblR5
cGUuT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1dyb25nIG9wZXJhdGlvbiB0eXBlJyk7CisKKyAgICAJCQlvcGVyYXRpb25WYWx1
ZTAgPSBpblZhbHVlc1swXTsKKyAgICAJCQlvcGVyYXRpb25WYWx1ZTEgPSBpblZhbHVlc1sxXTsK
KyAgICAJCQlicmVhazsKKworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRp
b25OYXR1cmUuT1BFUkFUSU9OTkFUVVJFX01VVEFUSU5HOgorICAgIAkJCWlmIChlczNmU2hhZGVy
TWF0cml4VGVzdC5nZXRPcGVyYXRpb25UeXBlKHRoaXMubV9vcCkgPT0gZXMzZlNoYWRlck1hdHJp
eFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQpCisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3Jvbmcgb3BlcmF0aW9uIHR5cGUnKTsKKworICAg
IAkJCXNoYWRlclNvdXJjZXNbb3BdICs9ICcJJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9u
TmFtZShyZXN1bHRQcmVjKSArICcgJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHJl
c3VsdFR5cGUpICsgJyB0bXBWYWx1ZSA9ICcgKyBpblZhbHVlc1swXSArICc7XG4nOworCisgICAg
CQkJb3BlcmF0aW9uVmFsdWUwID0gJ3RtcFZhbHVlJzsKKyAgICAJCQlvcGVyYXRpb25WYWx1ZTEg
PSBpblZhbHVlc1sxXTsKKyAgICAJCQlicmVhazsKKworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0
cml4VGVzdC5PcGVyYXRpb25OYXR1cmUuT1BFUkFUSU9OTkFUVVJFX0FTU0lHTk1FTlQ6CisgICAg
CQkJaWYgKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvblR5cGUodGhpcy5tX29wKSAh
PSBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfQVNTSUdO
TUVOVCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBvcGVyYXRp
b24gdHlwZScpOworCisgICAgCQkJb3BlcmF0aW9uVmFsdWUwID0gaW5WYWx1ZXNbMF07CisgICAg
CQkJb3BlcmF0aW9uVmFsdWUxID0gaW5WYWx1ZXNbMV07CisgICAgCQkJYnJlYWs7CisKKyAgICAJ
CWRlZmF1bHQ6CisgICAgCQkgICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBvcGVyYXRpb24gbmF0
dXJlJyk7CisgICAgCX0KKworICAgICAgICBzd2l0Y2ggKGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lmdl
dE9wZXJhdGlvblR5cGUodGhpcy5tX29wKSkgeworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4
VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfQklOQVJZX09QRVJBVE9SOgorICAgIAkJ
CXNoYWRlclNvdXJjZXNbb3BdICs9ICcJJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFt
ZShyZXN1bHRQcmVjKSArICcgJworICAgICAgICAgICAgICAgICsgZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZU5hbWUocmVzdWx0VHlwZSkKKyAgICAgICAgICAgICAgICArICcgcmVzID0gJyArIG9w
ZXJhdGlvblZhbHVlMCArICcgJworICAgICAgICAgICAgICAgICsgZXMzZlNoYWRlck1hdHJpeFRl
c3QuZ2V0T3BlcmF0aW9uTmFtZSh0aGlzLm1fb3ApICsgJyAnCisgICAgICAgICAgICAgICAgKyBv
cGVyYXRpb25WYWx1ZTEgKyAnO1xuJzsKKyAgICAJCQlicmVhazsKKyAgICAJCWNhc2UgZXMzZlNo
YWRlck1hdHJpeFRlc3QuT3BlcmF0aW9uVHlwZS5PUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9P
UEVSQVRPUjoKKyAgICAJCQlzaGFkZXJTb3VyY2VzW29wXSArPSAnCScgKyBnbHVTaGFkZXJVdGls
LmdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgKyAnICcKKyAgICAgICAgICAgICAgICArIGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHJlc3VsdFR5cGUpCisgICAgICAgICAgICAgICAg
KyAnIHJlcyA9ICcgKyBlczNmU2hhZGVyTWF0cml4VGVzdC5nZXRPcGVyYXRpb25OYW1lKHRoaXMu
bV9vcCkKKyAgICAgICAgICAgICAgICArIG9wZXJhdGlvblZhbHVlMCArICc7XG4nOworICAgIAkJ
CWJyZWFrOworICAgIAkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9Q
RVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUjoKKyAgICAJCQlzaGFkZXJTb3VyY2Vz
W29wXSArPSAnCScgKyBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykg
KyAnICcKKyAgICAgICAgICAgICAgICArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHJl
c3VsdFR5cGUpCisgICAgICAgICAgICAgICAgKyAnIHJlcyA9ICcgKyBvcGVyYXRpb25WYWx1ZTAK
KyAgICAgICAgICAgICAgICArIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvbk5hbWUo
dGhpcy5tX29wKSArICc7XG4nOworICAgIAkJCWJyZWFrOworICAgIAkJY2FzZSBlczNmU2hhZGVy
TWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOgor
ICAgIAkJCXNoYWRlclNvdXJjZXNbb3BdICs9ICcJJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lz
aW9uTmFtZShyZXN1bHRQcmVjKQorICAgICAgICAgICAgICAgICsgJyAnICsgZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkKKyAgICAgICAgICAgICAgICArICcgcmVzID0g
JyArIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvbk5hbWUodGhpcy5tX29wKQorICAg
ICAgICAgICAgICAgICsgJygnICsgb3BlcmF0aW9uVmFsdWUwCisgICAgICAgICAgICAgICAgKyAn
LCAnICsgb3BlcmF0aW9uVmFsdWUxICsgJyk7XG4nOworICAgIAkJCWJyZWFrOworICAgIAkJY2Fz
ZSBlczNmU2hhZGVyTWF0cml4VGVzdC5PcGVyYXRpb25UeXBlLk9QRVJBVElPTlRZUEVfVU5BUllf
RlVOQ1RJT046CisgICAgCQkJc2hhZGVyU291cmNlc1tvcF0gKz0gJwknICsgZ2x1U2hhZGVyVXRp
bC5nZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpCisgICAgICAgICAgICAgICAgKyAnICcgKyBn
bHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKQorICAgICAgICAgICAgICAg
ICsgJyByZXMgPSAnICsgZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0T3BlcmF0aW9uTmFtZSh0aGlz
Lm1fb3ApCisgICAgICAgICAgICAgICAgKyAnKCcgKyBvcGVyYXRpb25WYWx1ZTAgKyAnKTtcbic7
CisgICAgCQkJYnJlYWs7CisgICAgCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk9wZXJhdGlv
blR5cGUuT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOgorICAgIAkJCXNoYWRlclNvdXJjZXNbb3Bd
ICs9ICcJJyArIGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShyZXN1bHRQcmVjKQorICAg
ICAgICAgICAgICAgICsgJyAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUocmVzdWx0
VHlwZSkKKyAgICAgICAgICAgICAgICArICcgcmVzID0gJyArIG9wZXJhdGlvblZhbHVlMCArICc7
XG4nOworICAgIAkJCXNoYWRlclNvdXJjZXNbb3BdICs9ICcJcmVzICcgKyBlczNmU2hhZGVyTWF0
cml4VGVzdC5nZXRPcGVyYXRpb25OYW1lKHRoaXMubV9vcCkKKyAgICAgICAgICAgICAgICArICcg
JyArIG9wZXJhdGlvblZhbHVlMSArICc7XG4nOworICAgIAkJCWJyZWFrOworICAgIAkJZGVmYXVs
dDoKKyAgICAJCQl0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIG9wZXJhdGlvbiB0eXBlJyk7CisgICAg
CX0KKworICAgICAgICAvLyBSZWR1Y3Rpb24gdG8gdmVjMyAocmdiKS4gQ2hlY2sgdGhlIHVzZWQg
dmFsdWUgdG9vIGlmIGl0IHdhcyBtb2RpZmllZAorICAgIAlzaGFkZXJTb3VyY2VzW29wXSArPSAg
JwknICsgKHRoaXMubV9pc1ZlcnRleENhc2UgPyAndl9jb2xvcicgOiAnZEVRUF9GcmFnQ29sb3In
KSArICcgPSAnOworCisgICAgCWlmIChlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvblZh
bHVlTW9kaWZ5aW5nKHRoaXMubV9vcCkpCisgICAgCQlzaGFkZXJTb3VyY2VzW29wXSArPSAgJ3Zl
YzQoJyArIHRoaXMuZ2VuR0xTTE1hdFRvVmVjM1JlZHVjdGlvbihyZXN1bHRUeXBlLCAncmVzJykK
KyAgICAgICAgICAgICsgJywgMS4wKSArIHZlYzQoJyArIHRoaXMuZ2VuR0xTTE1hdFRvVmVjM1Jl
ZHVjdGlvbihyZXN1bHRUeXBlLCAndG1wVmFsdWUnKQorICAgICAgICAgICAgKyAnLCAwLjApO1xu
JzsKKyAgICAJZWxzZQorICAgIAkJc2hhZGVyU291cmNlc1tvcF0gKz0gICd2ZWM0KCcgKyB0aGlz
LmdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24ocmVzdWx0VHlwZSwgJ3JlcycpCisgICAgICAgICAg
ICArICcsIDEuMCk7XG4nOworCisgICAgCXNoYWRlclNvdXJjZXNbdnR4XSArPSAnfVxuJzsKKyAg
ICAJc2hhZGVyU291cmNlc1tmcmFnXSArPSAnfVxuJzsKKworICAgIAl0aGlzLm1fdmVydFNoYWRl
clNvdXJjZQk9IHNoYWRlclNvdXJjZXNbdnR4XTsKKyAgICAJdGhpcy5tX2ZyYWdTaGFkZXJTb3Vy
Y2UJPSBzaGFkZXJTb3VyY2VzW2ZyYWddOworCisgICAgICAgIC8vIFx0b2RvIFsyMDEyLTAyLTE0
IHB5cnldIENvbXB1dGUgYmV0dGVyIHZhbHVlcyBmb3IgbWF0cml4IHRlc3RzLgorICAgIAlmb3Ig
KHZhciBhdHRyaWJOZHggPSAwOyBhdHRyaWJOZHggPCA0OyBhdHRyaWJOZHgrKykgeworICAgIAkJ
dGhpcy5tX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0gPSBuZXcgdGN1TWF0cml4Lk1h
dHJpeCg0LCA0LCAwKTsKKyAgICAJCXRoaXMubV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJO
ZHhdLnNldCgwLCAzLCAwLjIpOy8vICE8IHByZXZlbnQgbWF0cml4KnZlYyBmcm9tIGdvaW5nIGlu
dG8gemVybyAoYXNzdW1pbmcgdmVjLncgIT0gMCkKKyAgICAJCXRoaXMubV91c2VyQXR0cmliVHJh
bnNmb3Jtc1thdHRyaWJOZHhdLnNldCgxLCAzLCAwLjEpOy8vICE8CisgICAgCQl0aGlzLm1fdXNl
ckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XS5zZXQoMiwgMywgMC40ICsgMC4xNSAqIGF0dHJp
Yk5keCk7Ly8gITwKKyAgICAJCXRoaXMubV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhd
LnNldCgzLCAzLCAwLjcpOy8vICE8CisgICAgCQl0aGlzLm1fdXNlckF0dHJpYlRyYW5zZm9ybXNb
YXR0cmliTmR4XS5zZXQoKDAgKyBhdHRyaWJOZHgpICUgNCwgMCwgMS4wKTsKKyAgICAJCXRoaXMu
bV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdLnNldCgoMSArIGF0dHJpYk5keCkgJSA0
LCAxLCAxLjApOworICAgIAkJdGhpcy5tX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0u
c2V0KCgyICsgYXR0cmliTmR4KSAlIDQsIDIsIDEuMCk7CisgICAgCQl0aGlzLm1fdXNlckF0dHJp
YlRyYW5zZm9ybXNbYXR0cmliTmR4XS5zZXQoKDMgKyBhdHRyaWJOZHgpICUgNCwgMywgMS4wKTsK
KyAgICAJfQorCisgICAgCS8vIHByZXZlbnQgYmFkIHJlZmVyZW5jZSBjYXNlcyBzdWNoIGFzIGJs
YWNrIHJlc3VsdCBpbWFnZXMgYnkgZmluZS10dW5pbmcgdXNlZCBtYXRyaWNlcworICAgIAlpZiAo
ZXMzZlNoYWRlck1hdHJpeFRlc3QuZ2V0T3BlcmF0aW9uVGVzdE1hdHJpeFR5cGUodGhpcy5tX29w
KSAhPSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhUeXBlLlRFU1RNQVRSSVhUWVBFX0RFRkFV
TFQpIHsKKyAgICAJCWZvciAodmFyIGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IDQ7IGF0dHJp
Yk5keCsrKSB7CisgICAgCQkJZm9yICh2YXIgcm93ID0gMDsgcm93IDwgNDsgcm93KyspCisgICAg
ICAgIAkJCWZvciAodmFyIGNvbCA9IDA7IGNvbCA8IDQ7IGNvbCsrKSB7CisgICAgICAgIAkJCQlz
d2l0Y2ggKGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmdldE9wZXJhdGlvblRlc3RNYXRyaXhUeXBlKHRo
aXMubV9vcCkpIHsKKyAgICAgICAgCQkJCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJp
eFR5cGUuVEVTVE1BVFJJWFRZUEVfTkVHQVRFRDoKKyAgICAgICAgCQkJCQkJdGhpcy5tX3VzZXJB
dHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0uc2V0KHJvdywgY29sLCAtdGhpcy5tX3VzZXJBdHRy
aWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0uZ2V0KHJvdywgY29sKSk7CisgICAgICAgIAkJCQkJCWJy
ZWFrOworICAgICAgICAJCQkJCWNhc2UgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4VHlwZS5U
RVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRDoKKyAgICAgICAgCQkJCQkJdGhpcy5tX3VzZXJBdHRy
aWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0uc2V0KHJvdywgY29sLCB0aGlzLm1fdXNlckF0dHJpYlRy
YW5zZm9ybXNbYXR0cmliTmR4XS5nZXQocm93LCBjb2wpICsgMC4zKTsKKyAgICAgICAgCQkJCQkJ
YnJlYWs7CisgICAgICAgIAkJCQkJY2FzZSBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhUeXBl
LlRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOgorICAgICAgICAJCQkJCQl0aGlzLm1fdXNlckF0
dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XS5zZXQocm93LCBjb2wsIHRoaXMubV91c2VyQXR0cmli
VHJhbnNmb3Jtc1thdHRyaWJOZHhdLmdldChyb3csIGNvbCkgLSAwLjMpOworICAgICAgICAJCQkJ
CQlicmVhazsKKyAgICAgICAgCQkJCQljYXNlIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeFR5
cGUuVEVTVE1BVFJJWFRZUEVfTkVHQVRFRF9JTkNSRU1FTlRFRDoKKyAgICAgICAgCQkJCQkJdGhp
cy5tX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0uc2V0KHJvdywgY29sLCAgLSh0aGlz
Lm1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XS5nZXQocm93LCBjb2wpICsgMC4zKSk7
CisgICAgICAgIAkJCQkJCWJyZWFrOworICAgICAgICAJCQkJCWNhc2UgZXMzZlNoYWRlck1hdHJp
eFRlc3QuTWF0cml4VHlwZS5URVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRF9MRVNTOgorICAgICAg
ICAJCQkJCQl0aGlzLm1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XS5zZXQocm93LCBj
b2wsIHRoaXMubV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdLmdldChyb3csIGNvbCkg
LSAwLjEpOworICAgICAgICAJCQkJCQlicmVhazsKKyAgICAgICAgCQkJCQlkZWZhdWx0OgorICAg
ICAgICAJCQkJCQl0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIE1hdHJpeCB0eXBlJyk7CisgICAgICAg
IAkJCQl9CisgICAgICAgIAkJCX0KKyAgICAJCX0KKyAgICAJfQorCisgICAgICAgIGdsc1NoYWRl
clJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMpOwor
ICAgIH07CisKKworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2UucHJv
dG90eXBlLnNldHVwVW5pZm9ybXMgPSBmdW5jdGlvbihwcm9ncmFtSWQsIGNvbnN0Q29vcmRzKSB7
CisgICAgICAgIGZvciAodmFyIGluTmR4ID0gMDsgaW5OZHggPCAyOyBpbk5keCsrKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaW5wdXQgPSBpbk5keCA+IDAgPyB0aGlzLm1faW4xIDogdGhp
cy5tX2luMDsKKworICAgICAgICAgICAgaWYgKGlucHV0LmlucHV0VHlwZSA9PSBlczNmU2hhZGVy
TWF0cml4VGVzdC5JbnB1dFR5cGUuSU5QVVRUWVBFX1VOSUZPUk0pCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSWQs
ICJ1X2luIiArIGluTmR4KTsKKworICAgICAgICAgICAgICAgIGlmICghbG9jKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQuZGF0
YVR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6ICAgICAgICBnbC51bmlmb3JtMWYobG9jLCBzX2NvbnN0
SW5GbG9hdFtpbk5keF0pOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOiAgIGdsLnVu
aWZvcm0yZnYobG9jLCBzX2NvbnN0SW5WZWMyW2luTmR4XSk7ICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzM6
ICAgZ2wudW5pZm9ybTNmdihsb2MsIHNfY29uc3RJblZlYzNbaW5OZHhdKTsgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfVkVDNDogICBnbC51bmlmb3JtNGZ2KGxvYywgc19jb25zdEluVmVjNFtpbk5keF0pOyAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIC8vIFxub3RlIEdMRVMzIHN1cHBvcnRz
IHRyYW5zcG9zZSBpbiBtYXRyaXggdXBsb2FkLgorICAgICAgICAgICAgICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjogICBnbC51bmlmb3JtTWF0cml4MmZ2IChs
b2MsIHRydWUsIHNfY29uc3RJbk1hdDJ4Mltpbk5keF0pOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6IGdsLnVuaWZv
cm1NYXRyaXgyeDNmdihsb2MsIHRydWUsIHNfY29uc3RJbk1hdDJ4M1tpbk5keF0pOyBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01B
VDJYNDogZ2wudW5pZm9ybU1hdHJpeDJ4NGZ2KGxvYywgdHJ1ZSwgc19jb25zdEluTWF0Mng0W2lu
TmR4XSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUM1gyOiBnbC51bmlmb3JtTWF0cml4M3gyZnYobG9jLCB0cnVlLCBzX2Nv
bnN0SW5NYXQzeDJbaW5OZHhdKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzOiAgIGdsLnVuaWZvcm1NYXRyaXgzZnYgKGxv
YywgdHJ1ZSwgc19jb25zdEluTWF0M3gzW2luTmR4XSk7ICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogZ2wudW5pZm9y
bU1hdHJpeDN4NGZ2KGxvYywgdHJ1ZSwgc19jb25zdEluTWF0M3g0W2luTmR4XSk7IGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
NFgyOiBnbC51bmlmb3JtTWF0cml4NHgyZnYobG9jLCB0cnVlLCBzX2NvbnN0SW5NYXQ0eDJbaW5O
ZHhdKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9NQVQ0WDM6IGdsLnVuaWZvcm1NYXRyaXg0eDNmdihsb2MsIHRydWUsIHNfY29u
c3RJbk1hdDR4M1tpbk5keF0pOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQ6ICAgZ2wudW5pZm9ybU1hdHJpeDRmdiAobG9j
LCB0cnVlLCBzX2NvbnN0SW5NYXQ0eDRbaW5OZHhdKTsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJ
bnZhbGlkIGRhdGF0eXBlJyArIGlucHV0LmRhdGFUeXBlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gbWF0VHlwZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB2YXJOYW1lCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2UucHJvdG90eXBlLmdlbkdMU0xNYXRUb1Zl
YzNSZWR1Y3Rpb24gPSBmdW5jdGlvbiAobWF0VHlwZSwgdmFyTmFtZSkgeworICAgIAkvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIG9wID0gJyc7CisKKyAgICAJc3dpdGNoIChtYXRUeXBlKSB7Cisg
ICAgCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAg
b3AgKz0gdmFyTmFtZSArICcsICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnLCAnCisg
ICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJyc7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMjoKKyAgICAgICAgICAg
ICAgICBvcCArPSB2YXJOYW1lICsgJy54LCAnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsg
Jy55LCAnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJy54JzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAJCWNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzOgor
ICAgICAgICAgICAgICAgIG9wICs9IHZhck5hbWUgKyAnJzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAJCWNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0OgorICAgICAg
ICAgICAgICAgIG9wICs9IHZhck5hbWUgKyAnLngsICcKKyAgICAgICAgICAgICAgICArIHZhck5h
bWUgKyAnLnksICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnLnorJworICAgICAgICAg
ICAgICAgICsgdmFyTmFtZSArICcudyc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgCQlj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjoKKyAgICAgICAgICAgICAgICBv
cCArPSB2YXJOYW1lICsgJ1swXVswXSwgJworICAgICAgICAgICAgICAgICsgdmFyTmFtZSArICdb
MV1bMF0sICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzBdWzFdKycKKyAgICAgICAg
ICAgICAgICArIHZhck5hbWUgKyAnWzFdWzFdJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAJCWNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6CisgICAgICAgICAg
ICAgICAgb3AgKz0gdmFyTmFtZSArICdbMF0gKyAnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1l
ICsgJ1sxXSc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgCQljYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0OgorICAgICAgICAgICAgICAgIG9wICs9IHZhck5hbWUg
KyAnWzBdLnh5eiArICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzFdLnl6dyc7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgCQljYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfTUFUM1gyOgorICAgICAgICAgICAgICAgIG9wICs9IHZhck5hbWUgKyAnWzBdWzBdKycK
KyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzBdWzFdLCAnCisgICAgICAgICAgICAgICAg
KyB2YXJOYW1lICsgJ1sxXVswXSsnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJ1sxXVsx
XSwgJworICAgICAgICAgICAgICAgICsgdmFyTmFtZSArICdbMl1bMF0rJworICAgICAgICAgICAg
ICAgICsgdmFyTmFtZSArICdbMl1bMV0nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgIAkJ
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDM6CisgICAgICAgICAgICAgICAg
b3AgKz0gdmFyTmFtZSArICdbMF0gKyAnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJ1sx
XSArICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzJdJzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAJCWNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDQ6
CisgICAgICAgICAgICAgICAgb3AgKz0gdmFyTmFtZSArICdbMF0ueHl6ICsgJworICAgICAgICAg
ICAgICAgICsgdmFyTmFtZSArICdbMV0ueXp3ICsgJworICAgICAgICAgICAgICAgICsgdmFyTmFt
ZSArICdbMl0uend4JzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAJCWNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDI6CisgICAgICAgICAgICAgICAgb3AgKz0gdmFy
TmFtZSArICdbMF1bMF0rJworICAgICAgICAgICAgICAgICsgdmFyTmFtZSArICdbMF1bMV0rJwor
ICAgICAgICAgICAgICAgICsgdmFyTmFtZSArICdbM11bMF0sICcKKyAgICAgICAgICAgICAgICAr
IHZhck5hbWUgKyAnWzFdWzBdKycKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzFdWzFd
KycKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAnWzNdWzFdLCAnCisgICAgICAgICAgICAg
ICAgKyB2YXJOYW1lICsgJ1syXVswXSsnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJ1sy
XVsxXSc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgCQljYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUNFgzOgorICAgICAgICAgICAgICAgIG9wICs9IHZhck5hbWUgKyAn
WzBdICsgJworICAgICAgICAgICAgICAgICsgdmFyTmFtZSArICdbMV0gKyAnCisgICAgICAgICAg
ICAgICAgKyB2YXJOYW1lICsgJ1syXSArICcKKyAgICAgICAgICAgICAgICArIHZhck5hbWUgKyAn
WzNdJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAJCWNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQ0OgorICAgICAgICAgICAgICAgIG9wICs9IHZhck5hbWUgKyAnWzBd
Lnh5eisnCisgICAgICAgICAgICAgICAgKyB2YXJOYW1lICsgJ1sxXS55encrJworICAgICAgICAg
ICAgICAgICsgdmFyTmFtZSArICdbMl0uend4KycKKyAgICAgICAgICAgICAgICArIHZhck5hbWUg
KyAnWzNdLnd4eSc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAJCWRlZmF1bHQ6Cisg
ICAgCQkJdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBkYXRhIHR5cGUnKTsKKyAgICAJfQorCisgICAg
CXJldHVybiBvcDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAg
ICogQHBhcmFtIHtlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcH0gb3AKKyAgICAgKiBAcGFy
YW0ge2Jvb2xlYW59IGV4dGVuZGVkSW5wdXRUeXBlQ2FzZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGNyZWF0ZUlucHV0VHlwZUdyb3VwCisgICAgICovCisgICAgZXMzZlNoYWRlck1hdHJpeFRl
c3Qub3BzID0gZnVuY3Rpb24gKG5hbWUsIGRlc2MsIG9wLCBleHRlbmRlZElucHV0VHlwZUNhc2Vz
LCBjcmVhdGVJbnB1dFR5cGVHcm91cCkgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAg
ICAgICB0aGlzLmRlc2MgPSBkZXNjOworICAgICAgICB0aGlzLm9wID0gb3A7CisgICAgICAgIHRo
aXMuZXh0ZW5kZWRJbnB1dFR5cGVDYXNlcyA9IGV4dGVuZGVkSW5wdXRUeXBlQ2FzZXM7CisgICAg
ICAgIHRoaXMuY3JlYXRlSW5wdXRUeXBlR3JvdXAgPSBjcmVhdGVJbnB1dFR5cGVHcm91cDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7ZXMz
ZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlfSB0eXBlCisgICAgICovCisJZXMzZlNoYWRlck1h
dHJpeFRlc3QuSW5wdXRUeXBlU3BlYyA9IGZ1bmN0aW9uIChuYW1lLCBkZXNjLCB0eXBlKSB7CisJ
CXRoaXMubmFtZSA9IG5hbWU7CisJCXRoaXMuZGVzYyA9IGRlc2M7CisJCXRoaXMudHlwZSA9IHR5
cGU7CisJfTsKKworICAgIGVzM2ZTaGFkZXJNYXRyaXhUZXN0LmluaXQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICB2YXIg
b3BzID0gWworICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygnYWRkJywg
J01hdHJpeCBhZGRpdGlvbiB0ZXN0cycsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9Q
X0FERCwgdHJ1ZSwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3Qu
b3BzKCdzdWInLCAnTWF0cml4IHN1YnRyYWN0aW9uIHRlc3RzJywgZXMzZlNoYWRlck1hdHJpeFRl
c3QuTWF0cml4T3AuT1BfU1VCLCB0cnVlLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hh
ZGVyTWF0cml4VGVzdC5vcHMoJ211bCcsICdNYXRyaXggbXVsdGlwbGljYXRpb24gdGVzdHMnLCBl
czNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9NVUwsIHRydWUsCXRydWUpLAorICAgICAg
ICAgICAgbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygnZGl2JywgJ01hdHJpeCBkaXZpc2lv
biB0ZXN0cycsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0RJViwgdHJ1ZSwgdHJ1
ZSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3Qub3BzKCdtYXRyaXhjb21w
bXVsdCcsICdNYXRyaXggY29tcG9uZW50LXdpc2UgbXVsdGlwbGljYXRpb24gdGVzdHMnLCBlczNm
U2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9DT01QX01VTCwgZmFsc2UsIHRydWUpLAorICAg
ICAgICAgICAgbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygnb3V0ZXJwcm9kdWN0JywgJ01h
dHJpeCBvdXRlclByb2R1Y3QoKSB0ZXN0cycsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9w
Lk9QX09VVEVSX1BST0RVQ1QsIGZhbHNlLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hh
ZGVyTWF0cml4VGVzdC5vcHMoJ3RyYW5zcG9zZScsICdNYXRyaXggdHJhbnNwb3NlKCkgdGVzdHMn
LCBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9UUkFOU1BPU0UsIGZhbHNlLCB0cnVl
KSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5vcHMoJ2RldGVybWluYW50
JywgJ01hdHJpeCBkZXRlcm1pbmFudCgpIHRlc3RzJywgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfREVURVJNSU5BTlQsIGZhbHNlLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBlczNm
U2hhZGVyTWF0cml4VGVzdC5vcHMoJ2ludmVyc2UnLCAnTWF0cml4IGludmVyc2UoKSB0ZXN0cycs
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0lOVkVSU0UsIGZhbHNlLCB0cnVlKSwK
KyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5vcHMoJ3VuYXJ5X2FkZGl0aW9u
JywgJ01hdHJpeCB1bmFyeSBhZGRpdGlvbiB0ZXN0cycsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1h
dHJpeE9wLk9QX1VOQVJZX1BMVVMsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgZXMz
ZlNoYWRlck1hdHJpeFRlc3Qub3BzKCduZWdhdGlvbicsICdNYXRyaXggbmVnYXRpb24gdGVzdHMn
LCBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ORUdBVElPTiwgZmFsc2UsIGZhbHNl
KSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5vcHMoJ3ByZV9pbmNyZW1l
bnQnLCAnTWF0cml4IHByZWZpeCBpbmNyZW1lbnQgdGVzdHMnLCBlczNmU2hhZGVyTWF0cml4VGVz
dC5NYXRyaXhPcC5PUF9QUkVfSU5DUkVNRU5ULCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgICAg
bmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygncHJlX2RlY3JlbWVudCcsICdNYXRyaXggcHJl
Zml4IGRlY3JlbWVudCB0ZXN0cycsIGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BS
RV9ERUNSRU1FTlQsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlck1h
dHJpeFRlc3Qub3BzKCdwb3N0X2luY3JlbWVudCcsICdNYXRyaXggcG9zdGZpeCBpbmNyZW1lbnQg
dGVzdHMnLCBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9QT1NUX0lOQ1JFTUVOVCwg
ZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5vcHMo
J3Bvc3RfZGVjcmVtZW50JywgJ01hdHJpeCBwb3N0Zml4IGRlY3JlbWVudCB0ZXN0cycsIGVzM2ZT
aGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX1BPU1RfREVDUkVNRU5ULCBmYWxzZSwgZmFsc2Up
LAorICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygnYWRkX2Fzc2lnbics
ICdNYXRyaXggYWRkIGludG8gdGVzdHMnLCBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5P
UF9BRERfSU5UTywgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0
cml4VGVzdC5vcHMoJ3N1Yl9hc3NpZ24nLCAnTWF0cml4IHN1YnRyYWN0IGZyb20gdGVzdHMnLCBl
czNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9TVUJUUkFDVF9GUk9NLGZhbHNlLCBmYWxz
ZSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3Qub3BzKCdtdWxfYXNzaWdu
JywgJ01hdHJpeCBtdWx0aXBseSBpbnRvIHRlc3RzJywgZXMzZlNoYWRlck1hdHJpeFRlc3QuTWF0
cml4T3AuT1BfTVVMVElQTFlfSU5UTyxmYWxzZSwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0Lm9wcygnZGl2X2Fzc2lnbicsICdNYXRyaXggZGl2aWRlIGludG8g
dGVzdHMnLCBlczNmU2hhZGVyTWF0cml4VGVzdC5NYXRyaXhPcC5PUF9ESVZJREVfSU5UTyxmYWxz
ZSwgZmFsc2UpCisgICAgCV07CisKKyAgICAJdmFyIGV4dGVuZGVkSW5wdXRUeXBlcyA9IFsKKyAg
ICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGVTcGVjKCdjb25zdCcs
ICdDb25zdGFudCBtYXRyaXggaW5wdXQnLCBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGUu
SU5QVVRUWVBFX0NPTlNUKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5J
bnB1dFR5cGVTcGVjKCd1bmlmb3JtJywgJ1VuaWZvcm0gbWF0cml4IGlucHV0JywgZXMzZlNoYWRl
ck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9VTklGT1JNKSwKKyAgICAgICAgICAgIG5l
dyBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGVTcGVjKCdkeW5hbWljJywgJ0R5bmFtaWMg
bWF0cml4IGlucHV0JywgZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9E
WU5BTUlDKQorICAgIAldOworCisgICAgCXZhciByZWR1Y2VkSW5wdXRUeXBlcyA9IFsKKyAgICAg
ICAgICAgIG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5JbnB1dFR5cGVTcGVjKCdkeW5hbWljJywg
J0R5bmFtaWMgbWF0cml4IGlucHV0JywgZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklO
UFVUVFlQRV9EWU5BTUlDKQorICAgIAldOworCisgICAgCS8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZT59ICovIHZhciBtYXRyaXhUeXBlcyA9IFsKKyAgICAgICAgICAgIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlgzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9NQVQyWDQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDNYMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
MywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0LAorICAg
ICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDIsCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMywKKyAgICAgICAgICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNAorICAgIAldOworCisgICAgCS8qKiBAdHlwZSB7
QXJyYXk8Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24+fSAqLyB2YXIgcHJlY2lzaW9ucyA9IFsKKyAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQLAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAsCisgICAgICAg
ICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAKKyAgICAJXTsKKwor
ICAgIAlmb3IgKHZhciBvcE5keCA9IDA7IG9wTmR4IDwgb3BzLmxlbmd0aDsgb3BOZHgrKykgewor
ICAgICAgICAgICAgdmFyIGluVHlwZUxpc3QgPSBvcHNbb3BOZHhdLmV4dGVuZGVkSW5wdXRUeXBl
Q2FzZXMgPyBleHRlbmRlZElucHV0VHlwZXMgOiByZWR1Y2VkSW5wdXRUeXBlczsKKyAgICAgICAg
ICAgIHZhciBpblR5cGVMaXN0U2l6ZSA9IG9wc1tvcE5keF0uZXh0ZW5kZWRJbnB1dFR5cGVDYXNl
cyA/IGV4dGVuZGVkSW5wdXRUeXBlcy5sZW5ndGggOiByZWR1Y2VkSW5wdXRUeXBlcy5sZW5ndGg7
CisgICAgICAgICAgICB2YXIgb3AgPSBvcHNbb3BOZHhdLm9wOworCisgICAgICAgICAgICBmb3Ig
KHZhciBpblR5cGVOZHggPSAwOyBpblR5cGVOZHggPCBpblR5cGVMaXN0U2l6ZTsgaW5UeXBlTmR4
KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5wdXRUeXBlID0gaW5UeXBlTGlzdFtpblR5cGVO
ZHhdLnR5cGU7CisgICAgICAgICAgICAgICAgdmFyIGdyb3VwID0gW107CisKKyAgICAgICAgICAg
ICAgICBpZiAob3BzW29wTmR4XS5uYW1lICE9ICdtdWwnKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChvcHNbb3BOZHhdLmNyZWF0ZUlucHV0VHlwZUdyb3VwKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBncm91cFswXSA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qob3BzW29wTmR4XS5uYW1lICsg
Jy4nICsgaW5UeXBlTGlzdFtpblR5cGVOZHhdLm5hbWUsIGluVHlwZUxpc3RbaW5UeXBlTmR4XS5k
ZXNjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdyb3VwWzBdID0gdGN1VGVzdENhc2UubmV3VGVzdChvcHNbb3BOZHhdLm5hbWUsIG9wc1tv
cE5keF0uZGVzYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
c3RhdGUudGVzdENhc2VzLmFkZENoaWxkKGdyb3VwWzBdKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgcHJlY2lzaW9u
cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwW2lpXSA9IHRj
dVRlc3RDYXNlLm5ld1Rlc3Qob3BzW29wTmR4XS5uYW1lICsgJy4nICsgaW5UeXBlTGlzdFtpblR5
cGVOZHhdLm5hbWUsIGluVHlwZUxpc3RbaW5UeXBlTmR4XS5kZXNjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLnRlc3RDYXNlcy5hZGRDaGlsZChncm91cFtpaV0pOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yICh2
YXIgbWF0VHlwZU5keCA9IDA7IG1hdFR5cGVOZHggPCBtYXRyaXhUeXBlcy5sZW5ndGg7IG1hdFR5
cGVOZHgrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0VHlwZSA9IG1hdHJpeFR5cGVz
W21hdFR5cGVOZHhdOworICAgICAgICAgICAgICAgICAgICB2YXIgbnVtQ29scyA9IGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5zKG1hdFR5cGUpOworICAgICAgICAgICAg
ICAgICAgICB2YXIgbnVtUm93cyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1S
b3dzKG1hdFR5cGUpOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0VHlwZU5hbWUgPSBnbHVT
aGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShtYXRUeXBlKTsKKworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBwcmVjTmR4ID0gMDsgcHJlY05keCA8IHByZWNpc2lvbnMubGVuZ3RoOyBwcmVj
TmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbkdyb3VwOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9wc1tvcE5keF0ubmFtZSAhPSAnbXVsJykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluR3JvdXAgPSBncm91cFswXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cCA9IGdy
b3VwW3ByZWNOZHhdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gcHJlY2lzaW9uc1twcmVjTmR4XTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBwcmVjTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9u
TmFtZShwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2VOYW1lID0g
cHJlY05hbWUgKyAnXycgKyBtYXRUeXBlTmFtZSArICdfJzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBtYXRJbiA9IG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJbnB1dChpbnB1
dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlczNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbk1hdHJpeFNjYWxhcihvcCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXRyaXgtc2NhbGFyIFxub3RlIEZvciBkaXYg
Y2FzZXMgd2UgdXNlIHVuaWZvcm0gaW5wdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNjYWxhckluID0gbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlcklucHV0KG9wID09
IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0RJViA/IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfVU5JRk9STSA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lklu
cHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCwg
cHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLmFkZENoaWxk
KG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJNYXRyaXhDYXNlKGJhc2VOYW1lICsgJ2Zs
b2F0X3ZlcnRleCcsICdNYXRyaXgtc2NhbGFyIGNhc2UnLCBtYXRJbiwgc2NhbGFySW4sIG9wLCB0
cnVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChuZXcg
ZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVyTWF0cml4Q2FzZShiYXNlTmFtZSArICdmbG9hdF9m
cmFnbWVudCcsCSdNYXRyaXgtc2NhbGFyIGNhc2UnLCBtYXRJbiwgc2NhbGFySW4sIG9wLCBmYWxz
ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNPcGVyYXRpb25NYXRyaXhWZWN0b3Iob3ApKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWF0cml4LXZlY3Rvci4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgY29sVmVjVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0
YVR5cGVGbG9hdFZlYyhudW1Db2xzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y29sVmVjSW4gPSBuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVySW5wdXQob3AgPT0gZXMz
ZlNoYWRlck1hdHJpeFRlc3QuTWF0cml4T3AuT1BfRElWID8gZXMzZlNoYWRlck1hdHJpeFRlc3Qu
SW5wdXRUeXBlLklOUFVUVFlQRV9VTklGT1JNIDogZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRU
eXBlLklOUFVUVFlQRV9EWU5BTUlDLCBjb2xWZWNUeXBlLCBwcmVjaXNpb24pOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlck1hdHJp
eFRlc3QuU2hhZGVyTWF0cml4Q2FzZShiYXNlTmFtZSArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVOYW1lKGNvbFZlY1R5cGUpICsgJ192ZXJ0ZXgnLCAnTWF0cml4LXZlY3RvciBjYXNlJywgbWF0
SW4sIGNvbFZlY0luLCBvcCwgdHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2Uo
YmFzZU5hbWUgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShjb2xWZWNUeXBlKSArICdf
ZnJhZ21lbnQnLCAnTWF0cml4LXZlY3RvciBjYXNlJywgbWF0SW4sIGNvbFZlY0luLCBvcCwgZmFs
c2UpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZlY3Rvci1tYXRyaXguCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvd1ZlY1R5cGUgPSBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlRmxvYXRWZWMobnVtUm93cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHJvd1ZlY0luID0gbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlcklucHV0KG9w
ID09IGVzM2ZTaGFkZXJNYXRyaXhUZXN0Lk1hdHJpeE9wLk9QX0RJViA/IGVzM2ZTaGFkZXJNYXRy
aXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfVU5JRk9STSA6IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQywgcm93VmVjVHlwZSwgcHJlY2lzaW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmVjTWF0TmFtZSA9IHByZWNOYW1lICsgJ18n
ICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUocm93VmVjVHlwZSkgKyAnXycgKyBtYXRU
eXBlTmFtZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluR3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlck1hdHJpeENhc2UodmVjTWF0TmFtZSArICdf
dmVydGV4JywgJ1ZlY3Rvci1tYXRyaXggY2FzZScsIHJvd1ZlY0luLCBtYXRJbiwgb3AsIHRydWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLmFkZENoaWxkKG5ldyBlczNm
U2hhZGVyTWF0cml4VGVzdC5TaGFkZXJNYXRyaXhDYXNlKHZlY01hdE5hbWUgKyAnX2ZyYWdtZW50
JywgJ1ZlY3Rvci1tYXRyaXggY2FzZScsIHJvd1ZlY0luLCBtYXRJbiwgb3AsIGZhbHNlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl
czNmU2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvbkFyaXRobWV0aWNNYXRyaXhNYXRyaXgob3Ap
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXJpdGhtZXRpYyBtYXRyaXgtbWF0
cml4IG11bHRpcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IG90aGVyQ29scyA9IDI7IG90aGVyQ29scyA8PSA0OyBvdGhlckNvbHMrKykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3RoZXJNYXRJbiA9IG5ldyBlczNmU2hhZGVyTWF0
cml4VGVzdC5TaGFkZXJJbnB1dChpbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5w
dXRUeXBlLklOUFVUVFlQRV9EWU5BTUlDID8gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBl
LklOUFVUVFlQRV9VTklGT1JNIDogaW5wdXRUeXBlLCBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
TWF0cml4KG90aGVyQ29scywgbnVtQ29scyksIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LlNoYWRlck1hdHJpeENhc2UoYmFzZU5hbWUgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFt
ZShvdGhlck1hdEluLmRhdGFUeXBlKSArICdfdmVydGV4JywJJ01hdHJpeC1tYXRyaXggY2FzZScs
IG1hdEluLCBvdGhlck1hdEluLCBvcCwgdHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbkdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJN
YXRyaXhDYXNlKGJhc2VOYW1lICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3RoZXJN
YXRJbi5kYXRhVHlwZSkgKyAnX2ZyYWdtZW50JywJJ01hdHJpeC1tYXRyaXggY2FzZScsIG1hdElu
LCBvdGhlck1hdEluLCBvcCwgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LmlzT3BlcmF0aW9uQ29tcG9uZW50d2lzZU1hdHJpeE1hdHJpeChvcCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDb21wb25lbnQtd2lzZS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgb3RoZXJNYXRJbiA9IG5ldyBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJJ
bnB1dChpbnB1dFR5cGUgPT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQ
RV9EWU5BTUlDID8gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9VTklG
T1JNIDogaW5wdXRUeXBlLCBtYXRUeXBlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRl
ck1hdHJpeENhc2UoYmFzZU5hbWUgKyBtYXRUeXBlTmFtZSArICdfdmVydGV4JywgJ01hdHJpeC1t
YXRyaXggY2FzZScsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgdHJ1ZSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0
LlNoYWRlck1hdHJpeENhc2UoYmFzZU5hbWUgKyBtYXRUeXBlTmFtZSArICdfZnJhZ21lbnQnLCAn
TWF0cml4LW1hdHJpeCBjYXNlJywgbWF0SW4sIG90aGVyTWF0SW4sIG9wLCBmYWxzZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXMz
ZlNoYWRlck1hdHJpeFRlc3QuaXNPcGVyYXRpb25WZWN0b3JWZWN0b3Iob3ApKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHZlYzFJbiA9IG5ldyBlczNmU2hhZGVyTWF0cml4VGVz
dC5TaGFkZXJJbnB1dChpbnB1dFR5cGUsIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZl
YyhudW1Sb3dzKSwgcHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
dmVjMkluID0gbmV3IGVzM2ZTaGFkZXJNYXRyaXhUZXN0LlNoYWRlcklucHV0KChpbnB1dFR5cGUg
PT0gZXMzZlNoYWRlck1hdHJpeFRlc3QuSW5wdXRUeXBlLklOUFVUVFlQRV9EWU5BTUlDKSA/IGVz
M2ZTaGFkZXJNYXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfVU5JRk9STSA6IGlucHV0VHlw
ZSwgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZUZsb2F0VmVjKG51bUNvbHMpLCBwcmVjaXNpb24p
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChuZXcgZXMz
ZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVyTWF0cml4Q2FzZShiYXNlTmFtZSArICdmbG9hdF92ZXJ0
ZXgnLCAnVmVjdG9yLXZlY3RvciBjYXNlJywgdmVjMUluLCB2ZWMySW4sIG9wLCB0cnVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRl
ck1hdHJpeFRlc3QuU2hhZGVyTWF0cml4Q2FzZShiYXNlTmFtZSArICdmbG9hdF9mcmFnbWVudCcs
ICdWZWN0b3ItdmVjdG9yIGNhc2UnLCB2ZWMxSW4sIHZlYzJJbiwgb3AsIGZhbHNlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlczNm
U2hhZGVyTWF0cml4VGVzdC5pc09wZXJhdGlvblVuYXJ5QW55TWF0cml4KG9wKSB8fCAoZXMzZlNo
YWRlck1hdHJpeFRlc3QuaXNPcGVyYXRpb25VbmFyeVN5bW1ldHJpY01hdHJpeChvcCkgJiYgbnVt
Q29scyA9PSBudW1Sb3dzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2b2lk
SW5wdXQgPSBuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVySW5wdXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyTWF0cml4
VGVzdC5TaGFkZXJNYXRyaXhDYXNlKGJhc2VOYW1lICsgJ2Zsb2F0X3ZlcnRleCcsICdNYXRyaXgg
Y2FzZScsIG1hdEluLCB2b2lkSW5wdXQsIG9wLCB0cnVlKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVy
TWF0cml4Q2FzZShiYXNlTmFtZSArICdmbG9hdF9mcmFnbWVudCcsICdNYXRyaXggY2FzZScsIG1h
dEluLCB2b2lkSW5wdXQsIG9wLCBmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNPcGVy
YXRpb25Bc3NpZ25tZW50QW55TWF0cml4KG9wKSB8fCAoZXMzZlNoYWRlck1hdHJpeFRlc3QuaXNP
cGVyYXRpb25Bc3NpZ25tZW50U3ltbWV0cmljTWF0cml4KG9wKSAmJiBudW1Db2xzID09IG51bVJv
d3MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG90aGVyTWF0SW4gPSBuZXcg
ZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVySW5wdXQoaW5wdXRUeXBlID09IGVzM2ZTaGFkZXJN
YXRyaXhUZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfRFlOQU1JQyA/IGVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LklucHV0VHlwZS5JTlBVVFRZUEVfVU5JRk9STSA6IGlucHV0VHlwZSwgbWF0VHlwZSwgcHJl
Y2lzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLmFkZENoaWxkKG5l
dyBlczNmU2hhZGVyTWF0cml4VGVzdC5TaGFkZXJNYXRyaXhDYXNlKGJhc2VOYW1lICsgJ2Zsb2F0
X3ZlcnRleCcsICdNYXRyaXggYXNzaWdubWVudCBjYXNlJywgbWF0SW4sIG90aGVyTWF0SW4sIG9w
LCB0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Hcm91cC5hZGRDaGlsZChu
ZXcgZXMzZlNoYWRlck1hdHJpeFRlc3QuU2hhZGVyTWF0cml4Q2FzZShiYXNlTmFtZSArICdmbG9h
dF9mcmFnbWVudCcsICdNYXRyaXggYXNzaWdubWVudCBjYXNlJywgbWF0SW4sIG90aGVyTWF0SW4s
IG9wLCBmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuID0gZnVuY3Rpb24oY29udGV4dCwgcmFu
Z2UpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3Qg
cGFyYW1ldGVycworICAgICAgICB2YXIgdGVzdE5hbWUgPSAnc2hhZGVyX21hdHJpeCc7CisgICAg
ICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnU2hhZGVyIE1hdHJpeCBUZXN0JzsKKyAgICAgICAg
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1l
ID0gdGVzdE5hbWU7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rl
c3QodGVzdE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAg
bmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3Vy
cmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0
aW9uKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9DcmVhdGUgdGVzdCBjYXNlcwor
ICAgICAgICAgICAgZXMzZlNoYWRlck1hdHJpeFRlc3QuaW5pdCgpOworICAgICAgICAgICAgaWYg
KHJhbmdlKQorICAgICAgICAgICAgICAgIHN0YXRlLnNldFJhbmdlKHJhbmdlKTsKKyAgICAgICAg
ICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNl
cygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKGVycik7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVy
bWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRmZDAzMTFkMzRhN2NhMjc5ZjgwMjU0ZDQ4OTkzNGIxYTAy
MzY2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5qcwpAQCAtMCwwICsxLDMyNTIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1l
bnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAx
NCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICdBUyBJUycgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVz
dHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNo
YXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1TWF0cml4Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
OwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBn
bHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIGdsdVNo
YWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW07Cit2YXIgZGVN
YXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIGdsc1NoYWRlclJlbmRl
ckNhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlOwordmFyIHRjdU1hdHJp
eCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4OworCisvKiogQGNvbnN0ICovIGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLk1BWF9JTlBVVFMgPSAzOworCitsZXQgY2FudmFzV0ggPSAyNTY7Citp
ZiAodGN1VGVzdENhc2UuaXNRdWlja01vZGUoKSkgeworICAgIGNhbnZhc1dIID0gMzI7Cit9CisK
K2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnN0cmluZ0pvaW4gPSBmdW5jdGlvbihlbGVtcywgZGVs
aW0pIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVt
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzdWx0ICs9IChpID4gMCA/IGRlbGltIDogJycpICsg
ZWxlbXNbaV07CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK2VzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLnR3b1ZhbHVlZFZlYzQgPSBmdW5jdGlvbihmaXJzdCwgc2Vjb25kLCBmaXJzdE1hc2spIHsK
KyAgICB2YXIgZWxlbXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKyAg
ICAgICAgZWxlbXNbaV0gPSBmaXJzdE1hc2tbaV0gPyBmaXJzdCA6IHNlY29uZDsKKworICAgIHJl
dHVybiAndmVjNCgnICsgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc3RyaW5nSm9pbihlbGVtcywg
JywgJykgKyAnKSc7Cit9OworCit2YXIgc2V0UGFyZW50Q2xhc3MgPSBmdW5jdGlvbihjaGlsZCwg
cGFyZW50KSB7CisgICAgY2hpbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJv
dG90eXBlKTsKKyAgICBjaGlsZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjaGlsZDsKK307CisK
K3ZhciBuZWdhdGUgPSBmdW5jdGlvbih4KSB7CisgICAgcmV0dXJuIC14OworfTsKKwordmFyIGFk
ZE9uZSA9IGZ1bmN0aW9uKHgpIHsKKyAgICByZXR1cm4geCArIDE7Cit9OworCit2YXIgc3ViT25l
ID0gZnVuY3Rpb24oeCkgeworICAgIHJldHVybiB4IC0gMTsKK307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKi8KK3ZhciBhZGQgPSBmdW5jdGlv
bihhLCBiKSB7CisgICAgcmV0dXJuIGEgKyBiOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJl
cn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqLwordmFyIHN1YiA9IGZ1bmN0aW9uKGEsIGIp
IHsKKyAgICByZXR1cm4gYSAtIGI7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisg
KiBAcGFyYW0ge251bWJlcn0gYgorICovCit2YXIgbXVsID0gZnVuY3Rpb24oYSwgYikgeworICAg
IHJldHVybiBhICogYjsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEBwYXJh
bSB7bnVtYmVyfSBiCisgKi8KK3ZhciBkaXYgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJu
IGEgLyBiOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1i
ZXJ9IGIKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIGxlc3NUaGFuID0gZnVuY3Rpb24o
YSwgYikgeworICAgIHJldHVybiBhIDwgYiA/IDEgOiAwOworfTsKKworLyoqCisgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYgorICogQHJldHVy
biB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFyIGxlc3NUaGFuVmVjID0gZnVuY3Rpb24oYSwgYikg
eworICAgIHZhciByZXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBp
KyspCisgICAgICAgIHJlc1tpXSA9IGFbaV0gPCBiW2ldOworICAgIHJldHVybiByZXMKK307CisK
Ky8qKgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKiBAcmV0
dXJuIHtudW1iZXJ9CisgKi8KK3ZhciBsZXNzVGhhbkVxdWFsID0gZnVuY3Rpb24oYSwgYikgewor
ICAgIHJldHVybiBhIDw9IGIgPyAxIDogMDsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBhCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGIKKyAqIEByZXR1cm4ge0FycmF5
PG51bWJlcj59CisgKi8KK3ZhciBsZXNzVGhhbkVxdWFsVmVjID0gZnVuY3Rpb24oYSwgYikgewor
ICAgIHZhciByZXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
CisgICAgICAgIHJlc1tpXSA9IGFbaV0gPD0gYltpXTsKKyAgICByZXR1cm4gcmVzOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqLwordmFy
IGdyZWF0ZXJUaGFuID0gZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiBhID4gYiA/IDEgOiAw
OworfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFyIGdyZWF0
ZXJUaGFuVmVjID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZhciByZXMgPSBbXTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIHJlc1tpXSA9IGFbaV0gPiBi
W2ldOworICAgIHJldHVybiByZXM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisg
KiBAcGFyYW0ge251bWJlcn0gYgorICovCit2YXIgZ3JlYXRlclRoYW5FcXVhbCA9IGZ1bmN0aW9u
KGEsIGIpIHsKKyAgICByZXR1cm4gYSA+PSBiID8gMSA6IDA7Cit9OworCisvKioKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gYQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICovCit2YXIgZ3JlYXRlclRoYW5FcXVhbFZlYyA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICB2YXIgcmVzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
Lmxlbmd0aDsgaSsrKQorICAgICAgICByZXNbaV0gPSBhW2ldID49IGJbaV07CisgICAgcmV0dXJu
IHJlczsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IGIKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIGFsbEVxdWFs
ID0gZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiBkZU1hdGguZXF1YWwoYSwgYikgPyAxIDog
MDsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGIKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3ZhciBhbGxF
cXVhbFZlYyA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICB2YXIgcmVzID0gW107CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICByZXNbaV0gPSBhW2ldID09IGJb
aV07CisgICAgcmV0dXJuIHJlczsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBhCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGIKKyAqIEByZXR1cm4ge251bWJlcn0KKyAq
LwordmFyIGFueU5vdEVxdWFsID0gZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiAhZGVNYXRo
LmVxdWFsKGEsIGIpID8gMSA6IDA7Cit9OworCisvKioKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gYQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fQorICovCit2YXIgYW55Tm90RXF1YWxWZWMgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgdmFy
IHJlcyA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAg
ICAgcmVzW2ldID0gYVtpXSAhPSBiW2ldOworICAgIHJldHVybiByZXM7Cit9OworCisvKioKKyAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYQorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAq
LwordmFyIGJvb2xOb3RWZWMgPSBmdW5jdGlvbihhKSB7CisgICAgdmFyIHJlcyA9IFtdOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzW2ldID0gIWFb
aV07CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IGEKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK3ZhciBib29sQW55ID0gZnVuY3Rpb24oYSkg
eworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgaWYgKGFb
aV0gPT0gdHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsK
K30KKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEByZXR1cm4ge2Jvb2xl
YW59CisgKi8KK3ZhciBib29sQWxsID0gZnVuY3Rpb24oYSkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgaWYgKGFbaV0gPT0gZmFsc2UpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKi8KK3ZhciBsb2dpY2FsQW5kID0g
ZnVuY3Rpb24oYSwgYikgeworICAgIHJldHVybiBhICYmIGIgPyAxIDogMDsKK307CisKKy8qKgor
ICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKi8KK3ZhciBsb2dp
Y2FsT3IgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJuIGEgfHwgYiA/IDEgOiAwOworfTsK
KworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqLwor
dmFyIGxvZ2ljYWxYb3IgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJuIGEgIT0gYiA/IDEg
OiAwOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICovCit2YXIgZXhwMiA9IGZ1
bmN0aW9uKGEpIHsKKyAgICByZXR1cm4gZGVGbG9hdEV4cDIoYSk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7bnVtYmVyfSBhCisgKi8KK3ZhciBpbnZlcnNlU3FydCA9IGZ1bmN0aW9uKGEpIHsKKyAg
ICByZXR1cm4gZGVGbG9hdFJzcShhKTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBhCisgKiBAcGFyYW0ge251bWJlcn0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0K
KyAqLwordmFyIG1pblZlY1NjYWxhciA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICB2YXIgcmVzID0g
W107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICByZXNb
aV0gPSBNYXRoLm1pbihhW2ldLCBiKTsKKyAgICByZXR1cm4gcmVzOworfTsKKworLyoqCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisgKiBAcmV0dXJu
IHtBcnJheTxudW1iZXI+fQorICovCit2YXIgbWF4VmVjU2NhbGFyID0gZnVuY3Rpb24oYSwgYikg
eworICAgIHZhciByZXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBp
KyspCisgICAgICAgIHJlc1tpXSA9IE1hdGgubWF4KGFbaV0sIGIpOworICAgIHJldHVybiByZXM7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBAcGFyYW0ge251bWJlcn0gYgor
ICogQHBhcmFtIHtudW1iZXJ9IGMKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIG1peCA9
IGZ1bmN0aW9uKGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSAqICgxLjAgLSBjKSArIGIgKiBjOwor
fTsKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGIKKyAqIEBwYXJhbSB7bnVtYmVyfSBjCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+
fQorICovCit2YXIgbWl4VmVjVmVjU2NhbGFyID0gZnVuY3Rpb24oYSwgYiwgYykgeworICAgIHZh
ciByZXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAg
ICAgIHJlc1tpXSA9IG1peChhW2ldLCBiW2ldLCBjKTsKKyAgICByZXR1cm4gcmVzOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7bnVtYmVyfSBiCisg
KiBAcGFyYW0ge251bWJlcn0gYworICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFy
IGNsYW1wVmVjU2NhbGFyU2NhbGFyID0gZnVuY3Rpb24oYSwgYiwgYykgeworICAgIHZhciByZXMg
PSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIHJl
c1tpXSA9IGRlTWF0aC5jbGFtcChhW2ldLCBiLCBjKTsKKyAgICByZXR1cm4gcmVzOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqIEByZXR1
cm4ge251bWJlcn0KKyAqLwordmFyIHN0ZXAgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJu
IGIgPCBhID8gMC4wIDogMS4wOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICov
Cit2YXIgc3RlcFNjYWxhclZlYyA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICB2YXIgcmVzID0gW107
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKQorICAgICAgICByZXNbaV0g
PSBzdGVwKGEsIGJbaV0pOworICAgIHJldHVybiByZXM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7
bnVtYmVyfSBhCisgKiBAcGFyYW0ge251bWJlcn0gYgorICogQHBhcmFtIHtudW1iZXJ9IGMKKyAq
IEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIHNtb290aFN0ZXAgPSBmdW5jdGlvbihhLCBiLCBj
KSB7CisgICAgaWYgKGMgPD0gYSkgcmV0dXJuIDAuMDsKKyAgICBpZiAoYyA+PSBiKSByZXR1cm4g
MS4wOworICAgIHZhciB0ID0gZGVNYXRoLmNsYW1wKChjIC0gYSkgLyAoYiAtIGEpLCAwLjAsIDEu
MCk7CisgICAgcmV0dXJuIHQgKiB0ICogKDMuMCAtIDIuMCAqIHQpOworfTsKKworLyoqCisgKiBA
cGFyYW0ge251bWJlcn0gYQorICogQHBhcmFtIHtudW1iZXJ9IGIKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gYworICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFyIHNtb290aFN0
ZXBTY2FsYXJTY2FsYXJWZWMgPSBmdW5jdGlvbihhLCBiLCBjKSB7CisgICAgdmFyIHJlcyA9IFtd
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzW2ld
ID0gc21vb3RoU3RlcChhLCBiLCBjW2ldKTsKKyAgICByZXR1cm4gcmVzOworfTsKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gYQorICogQHJldHVybiB7bnVtYmVyfQorICovCit2YXIgcm91bmRU
b0V2ZW4gPSBmdW5jdGlvbihhKSB7CisgICAgdmFyIHEgPSBkZU1hdGguZGVGbG9hdEZyYWMoYSk7
CisgICAgdmFyIHIgPSBhIC0gcTsKKworICAgIGlmIChxID4gMC41KQorICAgICAgICByICs9IDEu
MDsKKyAgICBlbHNlIGlmIChxID09IDAuNSAmJiByICUgMiAhPSAwKQorICAgICAgICByICs9IDEu
MDsKKworICAgIHJldHVybiByOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQorICog
QHJldHVybiB7bnVtYmVyfQorICovCit2YXIgZnJhY3QgPSBmdW5jdGlvbihhKSB7CisgICAgcmV0
dXJuIGEgLSBNYXRoLmZsb29yKGEpOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYQor
ICogQHJldHVybiB7bnVtYmVyfQorICovCit2YXIgcmFkaWFucyA9IGZ1bmN0aW9uKGEpIHsKKyAg
ICByZXR1cm4gZGVGbG9hdFJhZGlhbnMoYSk7Cit9CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9
IGEKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIGRlZ3JlZXMgPSBmdW5jdGlvbihhKSB7
CisgICAgcmV0dXJuIGRlRmxvYXREZWdyZWVzKGEpOworfQorCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSBhCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGIKKyAqLwordmFyIGFkZFNjYWxhclZl
YyA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICByZXR1cm4gZGVNYXRoLmFkZFNjYWxhcihiLCBhKTsK
K307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gYgorICovCit2YXIgc3ViU2NhbGFyVmVjID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZhciBk
c3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspCisgICAgICAg
IGRzdC5wdXNoKGEgLSBiW2ldKTsKKyAgICByZXR1cm4gZHN0OworfTsKKworLyoqCisgKiBAcGFy
YW0ge251bWJlcn0gYQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKi8KK3ZhciBtdWxT
Y2FsYXJWZWMgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goYSAqIGJbaV0p
OworICAgIHJldHVybiBkc3Q7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBhCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IGIKKyAqLwordmFyIGRpdlNjYWxhclZlYyA9IGZ1bmN0aW9u
KGEsIGIpIHsKKyAgICB2YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxl
bmd0aDsgaSsrKQorICAgICAgICBkc3QucHVzaChhIC8gYltpXSk7CisgICAgcmV0dXJuIGRzdDsK
K307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gYgorICovCit2YXIgbW9kU2NhbGFyVmVjID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZhciBk
c3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspCisgICAgICAg
IGRzdC5wdXNoKGEgJSBiW2ldKTsKKyAgICByZXR1cm4gZHN0OworfTsKKwordmFyIGJpdHdpc2VB
bmRTY2FsYXJWZWMgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgdmFyIGRzdCA9IFtdOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykKKyAgICAgICAgZHN0LnB1c2goZGVNYXRo
LmJpbmFyeU9wKGEsIGJbaV0sIGRlTWF0aC5CaW5hcnlPcC5BTkQpKTsKKyAgICByZXR1cm4gZHN0
OworfTsKKwordmFyIGJpdHdpc2VPclNjYWxhclZlYyA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICB2
YXIgZHN0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKQorICAg
ICAgICBkc3QucHVzaChkZU1hdGguYmluYXJ5T3AoYSwgYltpXSwgZGVNYXRoLkJpbmFyeU9wLk9S
KSk7CisgICAgcmV0dXJuIGRzdDsKK307CisKK3ZhciBiaXR3aXNlWG9yU2NhbGFyVmVjID0gZnVu
Y3Rpb24oYSwgYikgeworICAgIHZhciBkc3QgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGIubGVuZ3RoOyBpKyspCisgICAgICAgIGRzdC5wdXNoKGRlTWF0aC5iaW5hcnlPcChhLCBiW2ld
LCBkZU1hdGguQmluYXJ5T3AuWE9SKSk7CisgICAgcmV0dXJuIGRzdDsKK307CisKKy8qKgorICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3ZhciBs
ZW5ndGggPSBmdW5jdGlvbihhKSB7CisgICAgdmFyIHNxdWFyZVN1bSA9IDA7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBzcXVhcmVTdW0gKz0gYVtpXSAq
IGFbaV07CisgICAgcmV0dXJuIE1hdGguc3FydChzcXVhcmVTdW0pOworfTsKKworLyoqCisgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYgorICog
QHJldHVybiB7bnVtYmVyfQorICovCit2YXIgZGlzdGFuY2UgPSBmdW5jdGlvbihhLCBiKSB7Cisg
ICAgdmFyIHJlcyA9IGRlTWF0aC5zdWJ0cmFjdChhLCBiKQorICAgIHJldHVybiBsZW5ndGgocmVz
KTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGIKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIGRvdCA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICB2YXIgcmVzID0gZGVNYXRoLm11bHRpcGx5KGEsIGIpOworICAgIHZh
ciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKQorICAg
ICAgICBzdW0gKz0gcmVzW2ldOworICAgIHJldHVybiBzdW07Cit9OworCisvKioKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gYQorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFy
IG5vcm1hbGl6ZSA9IGZ1bmN0aW9uKGEpIHsKKyAgICB2YXIgb29MZW4gPSAxIC8gbGVuZ3RoKGEp
OworICAgIHZhciByZXMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBp
KyspCisgICAgICAgIHJlc1tpXSA9IG9vTGVuICogYVtpXTsKKyAgICByZXR1cm4gcmVzOworfTsK
KworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gYgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjCisgKiBAcmV0dXJuIHtBcnJheTxu
dW1iZXI+fQorICovCit2YXIgZmFjZWZvcndhcmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CisgICAg
cmV0dXJuIGRvdChjLCBiKSA8IDAgPyBhIDogZGVNYXRoLnNjYWxlKGEsIC0xKTsKK307CisKKy8q
KgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBhCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IGIKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK3ZhciByZWZsZWN0ID0gZnVuY3Rp
b24oYSwgYikgeworICAgIHJldHVybiBkZU1hdGguc3VidHJhY3QoYSwgZGVNYXRoLnNjYWxlKGRl
TWF0aC5zY2FsZShiLCBkb3QoYiwgYSkpLCAyKSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gYQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiCisgKiBAcGFyYW0ge251
bWJlcn0gYworICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLwordmFyIHJlZnJhY3QgPSBm
dW5jdGlvbihhLCBiLCBjKSB7CisgICAgdmFyIGNvc0FuZ2xlID0gZG90KGIsIGEpOworICAgIHZh
ciBrID0gMSAtIGMgKiBjICogKDEgLSBjb3NBbmdsZSAqIGNvc0FuZ2xlKTsKKyAgICBpZiAoayA8
IDApIHsKKyAgICAgICAgdmFyIHJlcyA9IG5ldyBBcnJheShhLmxlbmd0aCk7CisgICAgICAgIHJl
dHVybiByZXMuZmlsbCgwKQorICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gZGVNYXRoLnN1YnRy
YWN0KGRlTWF0aC5zY2FsZShhLCBjKSwgZGVNYXRoLnNjYWxlKGIsIGMgKiBjb3NBbmdsZSArIE1h
dGguc3FydChrKSkpOworfTsKKworLyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGEKKyAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAq
LwordmFyIGNyb3NzID0gZnVuY3Rpb24oYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPSAzIHx8
IGIubGVuZ3RoICE9IDMpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXlzIG11c3QgaGF2
ZSB0aGUgc2l6ZSBvZiAzJyk7CisgICAgcmV0dXJuIFsKKyAgICAgICAgYVsxXSAqIGJbMl0gLSBi
WzFdICogYVsyXSwKKyAgICAgICAgYVsyXSAqIGJbMF0gLSBiWzJdICogYVswXSwKKyAgICAgICAg
YVswXSAqIGJbMV0gLSBiWzBdICogYVsxXV07Cit9OworCit2YXIgbm9wID0gZnVuY3Rpb24odikg
eworICAgIHJldHVybiB2OworfTsKKwordmFyIHNlbGVjdGlvbiA9IGZ1bmN0aW9uKGNvbmQsIGEs
IGIpIHsKKyAgICByZXR1cm4gY29uZCA/IGEgOiBiOworfTsKKwordmFyIGJvb2xOb3QgPSBmdW5j
dGlvbihhKSB7CisgICAgcmV0dXJuICFhOworfTsKKwordmFyIGJpdHdpc2VOb3QgPSBmdW5jdGlv
bihhKSB7CisgICAgcmV0dXJuIH5hOworfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0geAor
ICogQHJldHVybiB7bnVtYmVyfQorICovCit2YXIgZGVGbG9hdFJhZGlhbnMgPSBmdW5jdGlvbih4
KSB7CisgICAgcmV0dXJuIHggKiAoTWF0aC5QSSAvIDE4MC4wKTsKK307CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IHgKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwordmFyIGRlRmxvYXREZWdy
ZWVzID0gZnVuY3Rpb24oeCkgeworICAgIHJldHVybiB4ICogKDE4MC4wIC8gTWF0aC5QSSk7Cit9
OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8K
K3ZhciBkZUZsb2F0RXhwMiA9IGZ1bmN0aW9uKHgpIHsKKyAgICByZXR1cm4gTWF0aC5leHAoeCAq
IE1hdGguTE4yKTsKK307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEByZXR1cm4g
e251bWJlcn0KKyAqLwordmFyIGRlRmxvYXRMb2cyID0gZnVuY3Rpb24oeCkgeworICAgIHJldHVy
biBNYXRoLmxvZyh4KSAqIE1hdGguTE9HMkU7Cit9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVy
fSB4CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK3ZhciBkZUZsb2F0UnNxID0gZnVuY3Rpb24o
eCkgeworICAgIHZhciBzID0gTWF0aC5zcXJ0KHgpOworICAgIHJldHVybiBzID09IDAuMCA/IDAu
MCA6ICgxLjAgLyBzKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge2Jv
b2xlYW59IGxvdworICogQHBhcmFtIHtib29sZWFufSBtZWRpdW0KKyAqIEBwYXJhbSB7Ym9vbGVh
bn0gaGlnaAorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24gPSBmdW5jdGlv
bihsb3csIG1lZGl1bSwgaGlnaCkgeworICAgIHRoaXMubG93ID0gbG93OworICAgIHRoaXMubWVk
aXVtID0gbWVkaXVtOworICAgIHRoaXMuaGlnaCA9IGhpZ2g7Cit9OworCisvKiogQGNvbnN0ICov
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5Mb3cgPSBuZXcgZXMzZlNoYWRlck9w
ZXJhdG9yVGVzdHMuUHJlY2lzaW9uKHRydWUsIGZhbHNlLCBmYWxzZSk7CisvKiogQGNvbnN0ICov
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5NZWRpdW0gPSBuZXcgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuUHJlY2lzaW9uKGZhbHNlLCB0cnVlLCBmYWxzZSk7CisvKiogQGNvbnN0
ICovIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5IaWdoID0gbmV3IGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbihmYWxzZSwgZmFsc2UsIHRydWUpOworLyoqIEBjb25z
dCAqLyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24uTG93TWVkaXVtID0gbmV3IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbih0cnVlLCB0cnVlLCBmYWxzZSk7CisvKiog
QGNvbnN0ICovIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5NZWRpdW1IaWdoID0g
bmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbihmYWxzZSwgdHJ1ZSwgdHJ1ZSk7
CisvKiogQGNvbnN0ICovIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5BbGwgPSBu
ZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuUHJlY2lzaW9uKHRydWUsIHRydWUsIHRydWUpOwor
LyoqIEBjb25zdCAqLyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24uTm9uZSA9IG5l
dyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSk7
CisKKy8qKgorICogQGVudW0KKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBl
ID0geworICAgIE5PTkU6IDAsCisgICAgRkxPQVQ6ICgxIDw8IDApLCAvLyBmbG9hdCBzY2FsYXIK
KyAgICBGTE9BVF9WRUM6ICgxIDw8IDEpLCAvLyBmbG9hdCB2ZWN0b3IKKyAgICBGTE9BVF9HRU5U
WVBFOiAoMSA8PCAyKSwgLy8gZmxvYXQgc2NhbGFyL3ZlY3RvcgorICAgIFZFQzM6ICgxIDw8IDMp
LCAvLyB2ZWMzIG9ubHkKKyAgICBNQVRSSVg6ICgxIDw8IDQpLCAvLyBtYXRyaXgKKyAgICBCT09M
OiAoMSA8PCA1KSwgLy8gYm9vbGVhbiBzY2FsYXIKKyAgICBCT09MX1ZFQzogKDEgPDwgNiksIC8v
IGJvb2xlYW4gdmVjdG9yCisgICAgQk9PTF9HRU5UWVBFOiAoMSA8PCA3KSwgLy8gYm9vbGVhbiBz
Y2FsYXIvdmVjdG9yCisgICAgSU5UOiAoMSA8PCA4KSwgLy8gaW50IHNjYWxhcgorICAgIElOVF9W
RUM6ICgxIDw8IDkpLCAvLyBpbnQgdmVjdG9yCisgICAgSU5UX0dFTlRZUEU6ICgxIDw8IDEwKSwg
Ly8gaW50IHNjYWxhci92ZWN0b3IKKyAgICBVSU5UOiAoMSA8PCAxMSksIC8vIHVpbnQgc2NhbGFy
CisgICAgVUlOVF9WRUM6ICgxIDw8IDEyKSwgLy8gdWludCB2ZWN0b3IKKyAgICBVSU5UX0dFTlRZ
UEU6ICgxIDw8IDEzKSAvLyB1aW50IHNjYWxhci92ZWN0b3IKK307CisKKy8qKgorICogQHBhcmFt
IHtlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5cGV9IHR5cGUKKyAqIEByZXR1cm4ge2Jv
b2xlYW59CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmlzQm9vbFR5cGUgPSBmdW5jdGlv
bih0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlICYgKGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZh
bHVlVHlwZS5CT09MIHwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBlLkJPT0xfVkVD
IHwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBlLkJPT0xfR0VOVFlQRSkpICE9IDA7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBl
fSB0eXBlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5pc0ludFR5cGUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlICYgKGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZS5JTlQgfCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5WYWx1ZVR5cGUuSU5UX1ZFQyB8IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZS5J
TlRfR0VOVFlQRSkpICE9IDA7Cit9OworCisvKioKKyAqIEBwYXJhbSB7ZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuVmFsdWVUeXBlfSB0eXBlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5pc1VpbnRUeXBlID0gZnVuY3Rpb24odHlwZSkgeworICAgIHJl
dHVybiAodHlwZSAmIChlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5cGUuVUlOVCB8IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZS5VSU5UX1ZFQyB8IGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLlZhbHVlVHlwZS5VSU5UX0dFTlRZUEUpKSAhPSAwOworfTsKKworLyoqCisgKiBA
cGFyYW0ge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZX0gdHlwZQorICogQHJldHVy
biB7Ym9vbGVhbn0KKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuaXNTY2FsYXJUeXBlID0g
ZnVuY3Rpb24odHlwZSkgeworICAgIHJldHVybiB0eXBlID09IGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLlZhbHVlVHlwZS5GTE9BVCB8fCB0eXBlID09IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZh
bHVlVHlwZS5CT09MIHx8IHR5cGUgPT0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBl
LklOVCB8fCB0eXBlID09IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZS5VSU5UOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZX0g
dHlwZQorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
aXNGbG9hdFR5cGUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlICYgKGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlwZS5GTE9BVCB8IGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLlZhbHVlVHlwZS5GTE9BVF9WRUMgfCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5
cGUuRkxPQVRfR0VOVFlQRSkpICE9IDA7Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2x1U2hhZGVy
UHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwu
cHJlY2lzaW9ufSB1aW50UHJlY2lzaW9uCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2VzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLmdldEdMU0xVaW50TWF4QXNGbG9hdCA9IGZ1bmN0aW9uKHNoYWRl
clR5cGUsIHVpbnRQcmVjaXNpb24pIHsKKyAgICBzd2l0Y2ggKHVpbnRQcmVjaXNpb24pIHsKKyAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUDoKKyAgICAg
ICAgICAgIHZhciBpbnRQcmVjaXNpb25HTCA9IGdsLkxPV19JTlQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVN
UDoKKyAgICAgICAgICAgIHZhciBpbnRQcmVjaXNpb25HTCA9IGdsLk1FRElVTV9JTlQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVD
SVNJT05fSElHSFA6CisgICAgICAgICAgICB2YXIgaW50UHJlY2lzaW9uR0wgPSBnbC5ISUdIX0lO
VDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyhmYWxzZSwgJ0ludmFsaWQgc2hhZGVyIHR5cGUnLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICAgICAgdmFyIGludFByZWNpc2lvbkdMID0gMDsKKyAgICB9CisKKyAgICBzd2l0
Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5
cGUuVkVSVEVYOgorICAgICAgICAgICAgdmFyIHNoYWRlclR5cGVHTCA9IGdsLlZFUlRFWF9TSEFE
RVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJQcm9ncmFtLnNo
YWRlclR5cGUuRlJBR01FTlQ6CisgICAgICAgICAgICB2YXIgc2hhZGVyVHlwZUdMID0gZ2wuRlJB
R01FTlRfU0hBREVSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnSW52YWxpZCBzaGFkZXIgdHlwZScsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICB2YXIgc2hhZGVyVHlwZUdMID0gMDsKKyAgICB9CisK
KyAgICAvKiogQHR5cGUge1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0IH0gKi8gdmFyIHNQcmVj
aXNpb24gPSBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZUdMLCBpbnRQcmVj
aXNpb25HTCk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19F
UlJPUiwgJ2dsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IGZhaWxlZCcsIGZhbHNlLCB0cnVlKTsK
KworICAgIGlmICghZGVNYXRoLmRlSW5Cb3VuZHMzMihzUHJlY2lzaW9uLnJhbmdlTWluLCA4LCAz
MikpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignT3V0IG9mIHJhbmdlJyk7CisKKyAgICB2YXIg
bnVtQml0c0luVHlwZSA9IHNQcmVjaXNpb24ucmFuZ2VNaW4gKyAxOworICAgIHJldHVybiBNYXRo
LnBvdygyLCBudW1CaXRzSW5UeXBlKSAtIDE7Cit9OworCisvKioKKyAqIEBlbnVtCisgKi8KK2Vz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLk9wZXJhdGlvblR5cGUgPSB7CisgICAgRlVOQ1RJT046IDAs
CisgICAgT1BFUkFUT1I6IDEsCisgICAgU0lERV9FRkZFQ1RfT1BFUkFUT1I6IDIgLy8gVGVzdCB0
aGUgc2lkZS1lZmZlY3QgKGFzIG9wcG9zZWQgdG8gdGhlIHJlc3VsdCkgb2YgYSBzaWRlLWVmZmVj
dCBvcGVyYXRvci4KK307CisKKy8qKgorICogc3dpenpsaW5nIGluZGljZXMgZm9yIGFzc2lnbmlu
ZyB0aGUgdGVzdGVkIGZ1bmN0aW9uIG91dHB1dCB0byB0aGUgY29ycmVjdCBjb2xvciBjaGFubmVs
CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLm91dEluZGljZXMgPSBbXTsKK2VzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLm91dEluZGljZXNbMV0gPSBbMF07CitlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5vdXRJbmRpY2VzWzJdID0gWzEsIDJdOworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMub3V0
SW5kaWNlc1szXSA9IFswLCAxLCAyXTsKK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLm91dEluZGlj
ZXNbNF0gPSBbMCwgMSwgMiwgM107CisKK3ZhciBjb252ZXJ0ID0gZnVuY3Rpb24oaW5wdXQsIGRh
dGFUeXBlKSB7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UOgorICAgICAgICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgQXJy
YXkpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW107CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAg
cmV0W2ldID0gZGVNYXRoLmludENhc3QoaW5wdXRbaV0pOworICAgICAgICAgICAgICAgIHJldHVy
biByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmludENhc3Qo
aW5wdXQpOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVDoKKyAgICAg
ICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgdmFy
IHJldCA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgIHJldFtpXSA9IGRlTWF0aC51aW50Q2FzdChp
bnB1dFtpXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBkZU1hdGgudWludENhc3QoaW5wdXQpOworICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDoKKyAgICAgICAgICAgIGlmIChpbnB1dCBpbnN0YW5j
ZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIHJldFtpXSA9IGlucHV0W2ldID4gMCA/IDEgOiAwOworICAgICAgICAgICAgICAgIHJl
dHVybiByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaW5wdXQgPiAwID8g
MSA6IDA7CisKKyAgICB9CisgICAgcmV0dXJuIGlucHV0OworfTsKKworLyoqCisgKiBHZW5lcmF0
ZSB1bmFyeSBmdW5jdGlvbnMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBpbnB1dCBhbmQgcmV0dXJuIHR5
cGUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyKTogbnVtYmVyfSBmdW5jCisgKiBAcGFyYW0g
e2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZUluCisgKiBAcGFyYW0ge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZU91dAorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy51bmFyeUdlblR5cGVGdW5jcyA9IGZ1bmN0aW9uKGZ1bmMsIGRhdGFUeXBlT3V0LCBkYXRhVHlw
ZUluKSB7CisgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKG91dHB1dCwgZnVuYywgaW5wdXQpIHsKKyAg
ICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgIHZhciBsZW4g
PSBpbnB1dC5sZW5ndGg7CisgICAgICAgICAgICB2YXIgaW5kaWNlcyA9IGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLm91dEluZGljZXNbbGVuXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaW5wdXQubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgIG91dHB1dFtpbmRpY2VzW2ld
XSA9IGNvbnZlcnQoZnVuYyhjb252ZXJ0KGlucHV0W2ldLCBkYXRhVHlwZUluKSksIGRhdGFUeXBl
T3V0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXRbMF0gPSBjb252ZXJ0KGZ1
bmMoY29udmVydChpbnB1dCwgZGF0YVR5cGVJbikpLCBkYXRhVHlwZU91dCk7CisgICAgfTsKKwor
ICAgIHZhciBmdW5jdGlvbnMgPSB7fTsKKyAgICBmdW5jdGlvbnMuc2NhbGFyID0gZnVuY3Rpb24o
YykgeyBydW4oYy5jb2xvciwgZnVuYywgYy5pbl9bMF1bMl0pOyB9OworICAgIGZ1bmN0aW9ucy52
ZWMyID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5p
bl9bMF0sIFszLCAxXSkpOyB9OworICAgIGZ1bmN0aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBy
dW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsyLCAwLCAxXSkpOyB9
OworICAgIGZ1bmN0aW9ucy52ZWM0ID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywg
ZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsxLCAyLCAzLCAwXSkpOyB9OworICAgIHJldHVybiBm
dW5jdGlvbnM7Cit9OworCisvKioKKyAqIEdlbmVyYXRlIHVuYXJ5IGZ1bmN0aW9ucyB3aGljaCBo
YXZlIHRoZSBzYW1lIGlucHV0IGFuZCByZXR1cm4gdHlwZQorICogQHBhcmFtIHtmdW5jdGlvbihB
cnJheTxudW1iZXI+KTogQXJyYXk8bnVtYmVyPn0gZnVuYworICogQHBhcmFtIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVJbgorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlPX0gZGF0YVR5cGVPdXQKKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlBcnJh
eUZ1bmNzID0gZnVuY3Rpb24oZnVuYywgZGF0YVR5cGVPdXQsIGRhdGFUeXBlSW4pIHsKKyAgICB2
YXIgcnVuID0gZnVuY3Rpb24ob3V0cHV0LCBmdW5jLCBpbnB1dCkgeworICAgICAgICB2YXIgbGVu
ID0gaW5wdXQubGVuZ3RoOworICAgICAgICB2YXIgaW5kaWNlcyA9IGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLm91dEluZGljZXNbbGVuXTsKKyAgICAgICAgdmFyIHZhbHVlID0gY29udmVydChmdW5j
KGNvbnZlcnQoaW5wdXQsIGRhdGFUeXBlSW4pKSwgZGF0YVR5cGVPdXQpOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgIG91dHB1dFtp
bmRpY2VzW2ldXSA9IHZhbHVlW2ldOworICAgIH07CisKKyAgICB2YXIgZnVuY3Rpb25zID0ge307
CisgICAgZnVuY3Rpb25zLnNjYWxhciA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMs
IFtjLmluX1swXVsyXV0pOyB9OworICAgIGZ1bmN0aW9ucy52ZWMyID0gZnVuY3Rpb24oYykgeyBy
dW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFszLCAxXSkpOyB9Owor
ICAgIGZ1bmN0aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVN
YXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsyLCAwLCAxXSkpOyB9OworICAgIGZ1bmN0aW9ucy52ZWM0
ID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9b
MF0sIFsxLCAyLCAzLCAwXSkpOyB9OworICAgIHJldHVybiBmdW5jdGlvbnM7Cit9OworCisvKioK
KyAqIEdlbmVyYXRlIHVuYXJ5IGZ1bmN0aW9ucyB3aGljaCBhbHdheXMgaGF2ZSBzY2FsYXIgcmV0
dXJuIHR5cGUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXk8bnVtYmVyPik6IG51bWJlcn0gZnVu
YworICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVJbgorICogQHBh
cmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVPdXQKKyAqLworZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMudW5hcnlTY2FsYXJHZW5UeXBlRnVuY3MgPSBmdW5jdGlvbihmdW5jLCBk
YXRhVHlwZU91dCwgZGF0YVR5cGVJbikgeworICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRwdXQs
IGZ1bmMsIGlucHV0KSB7CisgICAgICAgIG91dHB1dFswXSA9IGNvbnZlcnQoZnVuYyhjb252ZXJ0
KGlucHV0LCBkYXRhVHlwZUluKSksIGRhdGFUeXBlT3V0KTsKKyAgICB9OworCisgICAgdmFyIGZ1
bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy5zY2FsYXIgPSBmdW5jdGlvbihjKSB7IHJ1bihj
LmNvbG9yLCBmdW5jLCBbYy5pbl9bMF1bMl1dKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjMiA9IGZ1
bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBb
MywgMV0pKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjMyA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29s
b3IsIGZ1bmMsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMiwgMCwgMV0pKTsgfTsKKyAgICBm
dW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGRlTWF0aC5z
d2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pKTsgfTsKKyAgICByZXR1cm4gZnVuY3Rpb25z
OworfTsKKworLyoqCisgKiBHZW5lcmF0ZSB1bmFyeSBmdW5jdGlvbnMgd2hpY2ggYWx3YXlzIGhh
dmUgYm9sZWFuIHJldHVybiB0eXBlCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5PG51bWJlcj4p
OiBib29sZWFufSBmdW5jCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRh
VHlwZUluCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZU91dAor
ICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUJvb2xlYW5HZW5UeXBlRnVuY3MgPSBm
dW5jdGlvbihmdW5jLCBkYXRhVHlwZU91dCwgZGF0YVR5cGVJbikgeworICAgIHZhciBydW4gPSBm
dW5jdGlvbihvdXRwdXQsIGZ1bmMsIGlucHV0KSB7CisgICAgICAgIG91dHB1dFswXSA9IGNvbnZl
cnQoZnVuYyhjb252ZXJ0KGlucHV0LCBkYXRhVHlwZUluKSksIGRhdGFUeXBlT3V0KTsKKyAgICB9
OworCisgICAgdmFyIGZ1bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy5zY2FsYXIgPSBmdW5j
dGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBbYy5pbl9bMF1bMl0gPiAwLjBdKTsgfTsKKyAg
ICBmdW5jdGlvbnMudmVjMiA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGdyZWF0
ZXJUaGFuVmVjKGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMywgMV0pLCBbMCwgMF0pKTsgfTsK
KyAgICBmdW5jdGlvbnMudmVjMyA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGdy
ZWF0ZXJUaGFuVmVjKGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMiwgMCwgMV0pLCBbMCwgMCwg
MF0pKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3Is
IGZ1bmMsIGdyZWF0ZXJUaGFuVmVjKGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywg
MF0pLCBbMCwgMCwgMCwgMF0pKTsgfTsKKyAgICByZXR1cm4gZnVuY3Rpb25zOworfTsKKworLyoq
CisgKiBHZW5lcmF0ZSBiaW5hcnkgZnVuY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHNhbWUgaW5wdXQg
YW5kIHJldHVybiB0eXBlCisgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgbnVtYmVyKTogbnVt
YmVyfSBmdW5jCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZUlu
CisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZU91dAorICovCitl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MgPSBmdW5jdGlvbihmdW5j
LCBkYXRhVHlwZU91dCwgZGF0YVR5cGVJbikgeworICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRw
dXQsIGZ1bmMsIGlucHV0MSwgaW5wdXQyKSB7CisgICAgICAgIGlmIChpbnB1dDEgaW5zdGFuY2Vv
ZiBBcnJheSkgeworICAgICAgICAgICAgdmFyIGxlbiA9IGlucHV0MS5sZW5ndGg7CisgICAgICAg
ICAgICB2YXIgaW5kaWNlcyA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLm91dEluZGljZXNbbGVu
XTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQxLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgICBvdXRwdXRbaW5kaWNlc1tpXV0gPSBjb252ZXJ0KGZ1bmMoY29udmVy
dChpbnB1dDFbaV0sIGRhdGFUeXBlSW4pLCBjb252ZXJ0KGlucHV0MltpXSwgZGF0YVR5cGVJbikp
LCBkYXRhVHlwZU91dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgdmFsdWUg
PSBjb252ZXJ0KGZ1bmMoY29udmVydChpbnB1dDEsIGRhdGFUeXBlSW4pLCBjb252ZXJ0KGlucHV0
MiwgZGF0YVR5cGVJbikpLCBkYXRhVHlwZU91dCk7CisgICAgICAgICAgICBvdXRwdXRbMF0gPSB2
YWx1ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2YXIgZnVuY3Rpb25zID0ge307CisgICAg
ZnVuY3Rpb25zLnNjYWxhciA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGMuaW5f
WzBdWzJdLCBjLmluX1sxXVswXSk7IH07CisgICAgZnVuY3Rpb25zLnZlYzIgPSBmdW5jdGlvbihj
KSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBkZU1hdGguc3dpenpsZShjLmluX1swXSwgWzMsIDFdKSwg
ZGVNYXRoLnN3aXp6bGUoYy5pbl9bMV0sIFsxLCAwXSkpOyB9OworICAgIGZ1bmN0aW9ucy52ZWMz
ID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9b
MF0sIFsyLCAwLCAxXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMSwgMiwgMF0pKTsgfTsK
KyAgICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGRl
TWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pLCBkZU1hdGguc3dpenpsZShjLmlu
X1sxXSwgWzMsIDIsIDEsIDBdKSk7IH07CisgICAgcmV0dXJuIGZ1bmN0aW9uczsKK307CisKKy8q
KgorICogR2VuZXJhdGUgYmluYXJ5IGZ1bmN0aW9ucyB3aGljaCBoYXZlIHRoZSBzYW1lIGlucHV0
IGFuZCByZXR1cm4gdHlwZQorICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIG51bWJlciwgbnVt
YmVyKTogbnVtYmVyfSBmdW5jCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBk
YXRhVHlwZUluCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGU9fSBkYXRhVHlwZU91
dAorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5R2VuVHlwZUZ1bmNzID0gZnVu
Y3Rpb24oZnVuYywgZGF0YVR5cGVPdXQsIGRhdGFUeXBlSW4pIHsKKyAgICB2YXIgcnVuID0gZnVu
Y3Rpb24ob3V0cHV0LCBmdW5jLCBpbnB1dDEsIGlucHV0MiwgaW5wdXQzKSB7CisgICAgICAgIGlm
IChpbnB1dDEgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgdmFyIGxlbiA9IGlucHV0
MS5sZW5ndGg7CisgICAgICAgICAgICB2YXIgaW5kaWNlcyA9IGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLm91dEluZGljZXNbbGVuXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5w
dXQxLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgICBvdXRwdXRbaW5kaWNlc1tpXV0gPSBj
b252ZXJ0KGZ1bmMoY29udmVydChpbnB1dDFbaV0sIGRhdGFUeXBlSW4pLCBjb252ZXJ0KGlucHV0
MltpXSwgZGF0YVR5cGVJbiksIGNvbnZlcnQoaW5wdXQzW2ldLCBkYXRhVHlwZUluKSksIGRhdGFU
eXBlT3V0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNvbnZl
cnQoZnVuYyhjb252ZXJ0KGlucHV0MSwgZGF0YVR5cGVJbiksIGNvbnZlcnQoaW5wdXQyLCBkYXRh
VHlwZUluKSwgY29udmVydChpbnB1dDMsIGRhdGFUeXBlSW4pKSwgZGF0YVR5cGVPdXQpOworICAg
ICAgICAgICAgb3V0cHV0WzBdID0gdmFsdWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmFy
IGZ1bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy5zY2FsYXIgPSBmdW5jdGlvbihjKSB7IHJ1
bihjLmNvbG9yLCBmdW5jLCBjLmluX1swXVsyXSwgYy5pbl9bMV1bMF0sIGMuaW5fWzJdWzFdKTsg
fTsKKyAgICBmdW5jdGlvbnMudmVjMiA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMs
IGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMywgMV0pLCBkZU1hdGguc3dpenpsZShjLmluX1sx
XSwgWzEsIDBdKSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMl0sIFsyLCAxXSkpOyB9OworICAgIGZ1
bmN0aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3
aXp6bGUoYy5pbl9bMF0sIFsyLCAwLCAxXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMSwg
MiwgMF0pLCBkZU1hdGguc3dpenpsZShjLmluX1syXSwgWzMsIDEsIDJdKSk7IH07CisgICAgZnVu
Y3Rpb25zLnZlYzQgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBkZU1hdGguc3dp
enpsZShjLmluX1swXSwgWzEsIDIsIDMsIDBdKSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMV0sIFsz
LCAyLCAxLCAwXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzJdLCBbMCwgMywgMiwgMV0pKTsgfTsK
KyAgICByZXR1cm4gZnVuY3Rpb25zOworfTsKKworLyoqCisgKiBHZW5lcmF0ZSBiaW5hcnkgZnVu
Y3Rpb25zIHdoaWNoIGhhdmUgdGhlIHNhbWUgaW5wdXQgYW5kIHJldHVybiB0eXBlCisgKiBAcGFy
YW0ge2Z1bmN0aW9uKEFycmF5PG51bWJlcj4sIEFycmF5PG51bWJlcj4pOiBudW1iZXJ9IGZ1bmMK
KyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAqIEBwYXJh
bSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhckdlblR5cGVGdW5jcyA9IGZ1bmN0aW9uKGZ1bmMsIGRh
dGFUeXBlT3V0LCBkYXRhVHlwZUluKSB7CisgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKG91dHB1dCwg
ZnVuYywgaW5wdXQxLCBpbnB1dDIpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gY29udmVydChmdW5j
KGNvbnZlcnQoaW5wdXQxLCBkYXRhVHlwZUluKSwgY29udmVydChpbnB1dDIsIGRhdGFUeXBlSW4p
KSwgZGF0YVR5cGVPdXQpOworICAgICAgICBvdXRwdXRbMF0gPSB2YWx1ZTsKKyAgICB9OworCisg
ICAgdmFyIGZ1bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy5zY2FsYXIgPSBmdW5jdGlvbihj
KSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBbYy5pbl9bMF1bMl1dLCBbYy5pbl9bMV1bMF1dKTsgfTsK
KyAgICBmdW5jdGlvbnMudmVjMiA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGRl
TWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMywgMV0pLCBkZU1hdGguc3dpenpsZShjLmluX1sxXSwg
WzEsIDBdKSk7IH07CisgICAgZnVuY3Rpb25zLnZlYzMgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNv
bG9yLCBmdW5jLCBkZU1hdGguc3dpenpsZShjLmluX1swXSwgWzIsIDAsIDFdKSwgZGVNYXRoLnN3
aXp6bGUoYy5pbl9bMV0sIFsxLCAyLCAwXSkpOyB9OworICAgIGZ1bmN0aW9ucy52ZWM0ID0gZnVu
Y3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsx
LCAyLCAzLCAwXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMywgMiwgMSwgMF0pKTsgfTsK
KyAgICByZXR1cm4gZnVuY3Rpb25zOworfTsKKworLyoqCisgKiBHZW5lcmF0ZSAoY29uZCA/IGEg
OiBiKSBmdW5jdGlvbnMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gZGF0YVR5
cGUKKyAqIFJldHVybnMgYW4gYXJyYXkgb2YgZnVuY3Rpb25zLCBpbmRleGVkIGJ5IGRhdGF0eXBl
IHNpemUKKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VsZWN0aW9uRnVuY3MgPSBmdW5j
dGlvbihkYXRhVHlwZSkgeworICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRwdXQsIGlucHV0MCwg
aW5wdXQxLCBpbnB1dDIpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0aW9uKGlucHV0MCwg
aW5wdXQxLCBpbnB1dDIpOworICAgICAgICB2YWx1ZSA9IGNvbnZlcnQodmFsdWUsIGRhdGFUeXBl
KTsKKyAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgIHZh
ciBsZW4gPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICB2YXIgaW5kaWNlcyA9IGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLm91dEluZGljZXNbbGVuXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICAgICAgb3V0cHV0W2luZGljZXNbaV1dID0g
dmFsdWVbaV07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0WzBdID0gdmFsdWU7
CisgICAgfTsKKworICAgIHZhciBmdW5jdGlvbnMgPSBbXTsKKyAgICBmdW5jdGlvbnNbMV0gPSBm
dW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBjLmluX1swXVsyXSA+IDAsIGMuaW5fWzFdWzBdLCBj
LmluX1syXVsxXSk7IH07CisgICAgZnVuY3Rpb25zWzJdID0gZnVuY3Rpb24oYykgeyBydW4oYy5j
b2xvciwgYy5pbl9bMF1bMl0gPiAwLCBkZU1hdGguc3dpenpsZShjLmluX1sxXSwgWzEsIDBdKSwg
ZGVNYXRoLnN3aXp6bGUoYy5pbl9bMl0sIFsyLCAxXSkpOyB9OworICAgIGZ1bmN0aW9uc1szXSA9
IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGMuaW5fWzBdWzJdID4gMCwgZGVNYXRoLnN3aXp6
bGUoYy5pbl9bMV0sIFsxLCAyLCAwXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzJdLCBbMywgMSwg
Ml0pKTsgfTsKKyAgICBmdW5jdGlvbnNbNF0gPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBj
LmluX1swXVsyXSA+IDAsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMywgMiwgMSwgMF0pLCBk
ZU1hdGguc3dpenpsZShjLmluX1syXSwgWzAsIDMsIDIsIDFdKSk7IH07CisgICAgcmV0dXJuIGZ1
bmN0aW9uczsKK307CisKK3ZhciBjcCA9IGZ1bmN0aW9uKGRzdCwgc3JjKSB7CisgICAgdmFyIGxl
biA9IHNyYy5sZW5ndGg7CisgICAgdmFyIGluZGljZXMgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5vdXRJbmRpY2VzW2xlbl07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykKKyAg
ICAgICAgZHN0W2luZGljZXNbaV1dID0gc3JjW2ldOworfTsKKworLyoqCisgKiBHZW5lcmF0ZSBi
aW5hcnkgZnVuY3Rpb25zIG9mIGZvcm06IHZlYyA9IGZ1bmMoc2NhbGFyLCB2ZWMpCisgKiBAcGFy
YW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXk8bnVtYmVyPik6IEFycmF5PG51bWJlcj59IGZ1bmMK
KyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAqIEBwYXJh
bSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzID0gZnVuY3Rpb24oZnVuYywgZGF0YVR5
cGVPdXQsIGRhdGFUeXBlSW4pIHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51
bWJlciwgQXJyYXk8bnVtYmVyPik6IEFycmF5PG51bWJlcj59IGZ1bmMKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaW5wdXQxCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbnB1dDIKKyAg
ICAgKi8KKyAgICB2YXIgcnVuID0gZnVuY3Rpb24ob3V0cHV0LCBmdW5jLCBpbnB1dDEsIGlucHV0
MikgeworICAgICAgICB2YXIgaW4xID0gY29udmVydChpbnB1dDEsIGRhdGFUeXBlSW4pOworICAg
ICAgICB2YXIgaW4yID0gY29udmVydChpbnB1dDIsIGRhdGFUeXBlSW4pOworICAgICAgICB2YXIg
dmFsdWUgPSBmdW5jKGluMSwgaW4yKTsKKyAgICAgICAgdmFsdWUgPSBjb252ZXJ0KHZhbHVlLCBk
YXRhVHlwZU91dCk7CisgICAgICAgIGNwKG91dHB1dCwgdmFsdWUpOworICAgIH07CisgICAgdmFy
IGZ1bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy52ZWMyID0gZnVuY3Rpb24oYykgeyBydW4o
Yy5jb2xvciwgZnVuYywgYy5pbl9bMF1bMl0sIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMSwg
MF0pKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjMyA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3Is
IGZ1bmMsIGMuaW5fWzBdWzJdLCBkZU1hdGguc3dpenpsZShjLmluX1sxXSwgWzEsIDIsIDBdKSk7
IH07CisgICAgZnVuY3Rpb25zLnZlYzQgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5j
LCBjLmluX1swXVsyXSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMV0sIFszLCAyLCAxLCAwXSkpOyB9
OworICAgIHJldHVybiBmdW5jdGlvbnM7Cit9OworCisvKioKKyAqIEdlbmVyYXRlIGJpbmFyeSBm
dW5jdGlvbnMgb2YgZm9ybTogdmVjID0gZnVuYyh2ZWMsIHNjYWxhcikKKyAqIEBwYXJhbSB7ZnVu
Y3Rpb24oQXJyYXk8bnVtYmVyPiwgbnVtYmVyKTogQXJyYXk8bnVtYmVyPn0gZnVuYworICogQHBh
cmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVJbgorICogQHBhcmFtIHtnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVPdXQKKyAqLworZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MgPSBmdW5jdGlvbihmdW5jLCBkYXRhVHlwZU91dCwg
ZGF0YVR5cGVJbikgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXk8bnVt
YmVyPiwgbnVtYmVyKTogQXJyYXk8bnVtYmVyPn0gZnVuYworICAgICAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gaW5wdXQxCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGlucHV0MgorICAgICAqLwor
ICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRwdXQsIGZ1bmMsIGlucHV0MSwgaW5wdXQyKSB7Cisg
ICAgICAgIHZhciBpbjEgPSBjb252ZXJ0KGlucHV0MSwgZGF0YVR5cGVJbik7CisgICAgICAgIHZh
ciBpbjIgPSBjb252ZXJ0KGlucHV0MiwgZGF0YVR5cGVJbik7CisgICAgICAgIHZhciB2YWx1ZSA9
IGZ1bmMoaW4xLCBpbjIpOworICAgICAgICB2YWx1ZSA9IGNvbnZlcnQodmFsdWUsIGRhdGFUeXBl
T3V0KTsKKyAgICAgICAgY3Aob3V0cHV0LCB2YWx1ZSk7CisgICAgfTsKKyAgICB2YXIgZnVuY3Rp
b25zID0ge307CisgICAgZnVuY3Rpb25zLnZlYzIgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9y
LCBmdW5jLCBkZU1hdGguc3dpenpsZShjLmluX1swXSwgWzMsIDFdKSwgYy5pbl9bMV1bMF0pOyB9
OworICAgIGZ1bmN0aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywg
ZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsyLCAwLCAxXSksIGMuaW5fWzFdWzBdKTsgfTsKKyAg
ICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGRlTWF0
aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pLCBjLmluX1sxXVswXSk7IH07CisgICAg
cmV0dXJuIGZ1bmN0aW9uczsKK307CisKKy8qKgorICogR2VuZXJhdGUgYmluYXJ5IGZ1bmN0aW9u
cyBvZiBmb3JtOiB2ZWMgPSBmdW5jKHZlYywgdmVjLCBzY2FsYXIpCisgKiBAcGFyYW0ge2Z1bmN0
aW9uKEFycmF5PG51bWJlcj4sIEFycmF5PG51bWJlcj4sIG51bWJlcik6IEFycmF5PG51bWJlcj59
IGZ1bmMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlWZWNWZWNTY2FsYXJGdW5jcyA9IGZ1bmN0aW9uKGZ1
bmMsIGRhdGFUeXBlT3V0LCBkYXRhVHlwZUluKSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihBcnJheTxudW1iZXI+LCBBcnJheTxudW1iZXI+LCBudW1iZXIpOiBBcnJheTxudW1i
ZXI+fSBmdW5jCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbnB1dDEKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IGlucHV0MgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnB1
dDMKKyAgICAgKi8KKyAgICB2YXIgcnVuID0gZnVuY3Rpb24ob3V0cHV0LCBmdW5jLCBpbnB1dDEs
IGlucHV0MiwgaW5wdXQzKSB7CisgICAgICAgIHZhciBpbjEgPSBjb252ZXJ0KGlucHV0MSwgZGF0
YVR5cGVJbik7CisgICAgICAgIHZhciBpbjIgPSBjb252ZXJ0KGlucHV0MiwgZGF0YVR5cGVJbik7
CisgICAgICAgIHZhciBpbjMgPSBjb252ZXJ0KGlucHV0MywgZGF0YVR5cGVJbik7CisgICAgICAg
IHZhciB2YWx1ZSA9IGZ1bmMoaW4xLCBpbjIsIGluMyk7CisgICAgICAgIHZhbHVlID0gY29udmVy
dCh2YWx1ZSwgZGF0YVR5cGVPdXQpOworICAgICAgICBjcChvdXRwdXQsIHZhbHVlKTsKKyAgICB9
OworICAgIHZhciBmdW5jdGlvbnMgPSB7fTsKKyAgICBmdW5jdGlvbnMuc2NhbGFyID0gZnVuY3Rp
b24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgW2MuaW5fWzBdWzJdXSwgW2MuaW5fWzFdWzBdXSwg
Yy5pbl9bMl1bMV0pOyB9OworICAgIGZ1bmN0aW9ucy52ZWMyID0gZnVuY3Rpb24oYykgeyBydW4o
Yy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFszLCAxXSksIGRlTWF0aC5z
d2l6emxlKGMuaW5fWzFdLCBbMSwgMF0pLCBjLmluX1syXVsxXSk7IH07CisgICAgZnVuY3Rpb25z
LnZlYzMgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBkZU1hdGguc3dpenpsZShj
LmluX1swXSwgWzIsIDAsIDFdKSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMV0sIFsxLCAyLCAwXSks
IGMuaW5fWzJdWzFdKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVu
KGMuY29sb3IsIGZ1bmMsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pLCBk
ZU1hdGguc3dpenpsZShjLmluX1sxXSwgWzMsIDIsIDEsIDBdKSwgYy5pbl9bMl1bMV0pOyB9Owor
ICAgIHJldHVybiBmdW5jdGlvbnM7Cit9OworCisvKioKKyAqIEdlbmVyYXRlIGJpbmFyeSBmdW5j
dGlvbnMgb2YgZm9ybTogdmVjID0gZnVuYyh2ZWMsIHNjYWxhciwgc2NhbGFyKQorICogQHBhcmFt
IHtmdW5jdGlvbihBcnJheTxudW1iZXI+LCBudW1iZXIsIG51bWJlcik6IEFycmF5PG51bWJlcj59
IGZ1bmMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlWZWNTY2FsYXJTY2FsYXJGdW5jcyA9IGZ1bmN0aW9u
KGZ1bmMsIGRhdGFUeXBlT3V0LCBkYXRhVHlwZUluKSB7CisgICAgLyoqCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbihBcnJheTxudW1iZXI+LCBudW1iZXIsIG51bWJlcik6IEFycmF5PG51bWJlcj59
IGZ1bmMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGlucHV0MQorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpbnB1dDIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5wdXQzCisgICAgICov
CisgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKG91dHB1dCwgZnVuYywgaW5wdXQxLCBpbnB1dDIsIGlu
cHV0MykgeworICAgICAgICB2YXIgaW4xID0gY29udmVydChpbnB1dDEsIGRhdGFUeXBlSW4pOwor
ICAgICAgICB2YXIgaW4yID0gY29udmVydChpbnB1dDIsIGRhdGFUeXBlSW4pOworICAgICAgICB2
YXIgaW4zID0gY29udmVydChpbnB1dDMsIGRhdGFUeXBlSW4pOworICAgICAgICB2YXIgdmFsdWUg
PSBmdW5jKGluMSwgaW4yLCBpbjMpOworICAgICAgICB2YWx1ZSA9IGNvbnZlcnQodmFsdWUsIGRh
dGFUeXBlT3V0KTsKKyAgICAgICAgY3Aob3V0cHV0LCB2YWx1ZSk7CisgICAgfTsKKyAgICB2YXIg
ZnVuY3Rpb25zID0ge307CisgICAgZnVuY3Rpb25zLnZlYzIgPSBmdW5jdGlvbihjKSB7IHJ1bihj
LmNvbG9yLCBmdW5jLCBkZU1hdGguc3dpenpsZShjLmluX1swXSwgWzMsIDFdKSwgYy5pbl9bMV1b
MF0sIGMuaW5fWzJdWzFdKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjMyA9IGZ1bmN0aW9uKGMpIHsg
cnVuKGMuY29sb3IsIGZ1bmMsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMiwgMCwgMV0pLCBj
LmluX1sxXVswXSwgYy5pbl9bMl1bMV0pOyB9OworICAgIGZ1bmN0aW9ucy52ZWM0ID0gZnVuY3Rp
b24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFsxLCAy
LCAzLCAwXSksIGMuaW5fWzFdWzBdLCBjLmluX1syXVsxXSk7IH07CisgICAgcmV0dXJuIGZ1bmN0
aW9uczsKK307CisKKy8qKgorICogR2VuZXJhdGUgYmluYXJ5IGZ1bmN0aW9ucyBvZiBmb3JtOiB2
ZWMgPSBmdW5jKHNjYWxhciwgc2NhbGFyLCB2ZWMpCisgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJl
ciwgbnVtYmVyLCBBcnJheTxudW1iZXI+KTogQXJyYXk8bnVtYmVyPn0gZnVuYworICogQHBhcmFt
IHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVJbgorICogQHBhcmFtIHtnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlPX0gZGF0YVR5cGVPdXQKKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVz
dHMudGVybmFyeVNjYWxhclNjYWxhclZlY0Z1bmNzID0gZnVuY3Rpb24oZnVuYywgZGF0YVR5cGVP
dXQsIGRhdGFUeXBlSW4pIHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJl
ciwgbnVtYmVyLCBBcnJheTxudW1iZXI+KTogQXJyYXk8bnVtYmVyPn0gZnVuYworICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBpbnB1dDEKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5wdXQyCisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbnB1dDMKKyAgICAgKi8KKyAgICB2YXIgcnVuID0g
ZnVuY3Rpb24ob3V0cHV0LCBmdW5jLCBpbnB1dDEsIGlucHV0MiwgaW5wdXQzKSB7CisgICAgICAg
IHZhciBpbjEgPSBjb252ZXJ0KGlucHV0MSwgZGF0YVR5cGVJbik7CisgICAgICAgIHZhciBpbjIg
PSBjb252ZXJ0KGlucHV0MiwgZGF0YVR5cGVJbik7CisgICAgICAgIHZhciBpbjMgPSBjb252ZXJ0
KGlucHV0MywgZGF0YVR5cGVJbik7CisgICAgICAgIHZhciB2YWx1ZSA9IGZ1bmMoaW4xLCBpbjIs
IGluMyk7CisgICAgICAgIHZhbHVlID0gY29udmVydCh2YWx1ZSwgZGF0YVR5cGVPdXQpOworICAg
ICAgICBjcChvdXRwdXQsIHZhbHVlKTsKKyAgICB9OworICAgIHZhciBmdW5jdGlvbnMgPSB7fTsK
KyAgICBmdW5jdGlvbnMudmVjMiA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMsIGMu
aW5fWzBdWzJdLCBjLmluX1sxXVswXSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMl0sIFsyLCAxXSkp
OyB9OworICAgIGZ1bmN0aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVu
YywgYy5pbl9bMF1bMl0sIGMuaW5fWzFdWzBdLCBkZU1hdGguc3dpenpsZShjLmluX1syXSwgWzMs
IDEsIDJdKSk7IH07CisgICAgZnVuY3Rpb25zLnZlYzQgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNv
bG9yLCBmdW5jLCBjLmluX1swXVsyXSwgYy5pbl9bMV1bMF0sIGRlTWF0aC5zd2l6emxlKGMuaW5f
WzJdLCBbMCwgMywgMiwgMV0pKTsgfTsKKyAgICByZXR1cm4gZnVuY3Rpb25zOworfTsKKworLyoq
CisgKiBHZW5lcmF0ZSBiaW5hcnkgZnVuY3Rpb25zIG9mIGZvcm06IHZlYyA9IGZ1bmModmVjLCB2
ZWMsIHZlYykKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXk8bnVtYmVyPiwgQXJyYXk8bnVtYmVy
PiwgQXJyYXk8bnVtYmVyPik6IEFycmF5PG51bWJlcj59IGZ1bmMKKyAqIEBwYXJhbSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnRlcm5h
cnlWZWNWZWNWZWNGdW5jcyA9IGZ1bmN0aW9uKGZ1bmMsIGRhdGFUeXBlT3V0LCBkYXRhVHlwZUlu
KSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheTxudW1iZXI+LCBBcnJh
eTxudW1iZXI+LCBBcnJheTxudW1iZXI+KTogQXJyYXk8bnVtYmVyPn0gZnVuYworICAgICAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gaW5wdXQxCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBpbnB1dDIKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGlucHV0MworICAgICAqLwor
ICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRwdXQsIGZ1bmMsIGlucHV0MSwgaW5wdXQyLCBpbnB1
dDMpIHsKKyAgICAgICAgdmFyIGluMSA9IGNvbnZlcnQoaW5wdXQxLCBkYXRhVHlwZUluKTsKKyAg
ICAgICAgdmFyIGluMiA9IGNvbnZlcnQoaW5wdXQyLCBkYXRhVHlwZUluKTsKKyAgICAgICAgdmFy
IGluMyA9IGNvbnZlcnQoaW5wdXQzLCBkYXRhVHlwZUluKTsKKyAgICAgICAgdmFyIHZhbHVlID0g
ZnVuYyhpbjEsIGluMiwgaW4zKTsKKyAgICAgICAgdmFsdWUgPSBjb252ZXJ0KHZhbHVlLCBkYXRh
VHlwZU91dCk7CisgICAgICAgIGNwKG91dHB1dCwgdmFsdWUpOworICAgIH07CisgICAgdmFyIGZ1
bmN0aW9ucyA9IHt9OworICAgIGZ1bmN0aW9ucy52ZWMyID0gZnVuY3Rpb24oYykgeyBydW4oYy5j
b2xvciwgZnVuYywgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMF0sIFszLCAxXSksIGRlTWF0aC5zd2l6
emxlKGMuaW5fWzFdLCBbMSwgMF0pLCBkZU1hdGguc3dpenpsZShjLmluX1syXSwgWzIsIDFdKSk7
IH07CisgICAgZnVuY3Rpb25zLnZlYzMgPSBmdW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5j
LCBkZU1hdGguc3dpenpsZShjLmluX1swXSwgWzIsIDAsIDFdKSwgZGVNYXRoLnN3aXp6bGUoYy5p
bl9bMV0sIFsxLCAyLCAwXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzJdLCBbMywgMSwgMl0pKTsg
fTsKKyAgICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3IsIGZ1bmMs
IGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pLCBkZU1hdGguc3dpenpsZShj
LmluX1sxXSwgWzMsIDIsIDEsIDBdKSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMl0sIFswLCAzLCAy
LCAxXSkpOyB9OworICAgIHJldHVybiBmdW5jdGlvbnM7Cit9OworCisvKioKKyAqIEdlbmVyYXRl
IGJpbmFyeSBmdW5jdGlvbnMgb2YgZm9ybTogdmVjID0gZnVuYyh2ZWMsIHZlYykKKyAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXk8bnVtYmVyPiwgQXJyYXk8bnVtYmVyPik6IEFycmF5PG51bWJlcj59
IGZ1bmMKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlSW4KKyAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IGRhdGFUeXBlT3V0CisgKi8KK2VzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1ZlY0Z1bmNzID0gZnVuY3Rpb24oZnVuYywgZGF0
YVR5cGVPdXQsIGRhdGFUeXBlSW4pIHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KEFycmF5PG51bWJlcj4sIEFycmF5PG51bWJlcj4pOiBBcnJheTxudW1iZXI+fSBmdW5jCisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbnB1dDEKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGlucHV0MgorICAgICAqLworICAgIHZhciBydW4gPSBmdW5jdGlvbihvdXRwdXQsIGZ1
bmMsIGlucHV0MSwgaW5wdXQyKSB7CisgICAgICAgIHZhciBpbjEgPSBjb252ZXJ0KGlucHV0MSwg
ZGF0YVR5cGVJbik7CisgICAgICAgIHZhciBpbjIgPSBjb252ZXJ0KGlucHV0MiwgZGF0YVR5cGVJ
bik7CisgICAgICAgIHZhciB2YWx1ZSA9IGZ1bmMoaW4xLCBpbjIpOworICAgICAgICB2YWx1ZSA9
IGNvbnZlcnQodmFsdWUsIGRhdGFUeXBlT3V0KTsKKyAgICAgICAgY3Aob3V0cHV0LCB2YWx1ZSk7
CisgICAgfTsKKyAgICB2YXIgZnVuY3Rpb25zID0ge307CisgICAgZnVuY3Rpb25zLnZlYzIgPSBm
dW5jdGlvbihjKSB7IHJ1bihjLmNvbG9yLCBmdW5jLCBkZU1hdGguc3dpenpsZShjLmluX1swXSwg
WzMsIDFdKSwgZGVNYXRoLnN3aXp6bGUoYy5pbl9bMV0sIFsxLCAwXSkpOyB9OworICAgIGZ1bmN0
aW9ucy52ZWMzID0gZnVuY3Rpb24oYykgeyBydW4oYy5jb2xvciwgZnVuYywgZGVNYXRoLnN3aXp6
bGUoYy5pbl9bMF0sIFsyLCAwLCAxXSksIGRlTWF0aC5zd2l6emxlKGMuaW5fWzFdLCBbMSwgMiwg
MF0pKTsgfTsKKyAgICBmdW5jdGlvbnMudmVjNCA9IGZ1bmN0aW9uKGMpIHsgcnVuKGMuY29sb3Is
IGZ1bmMsIGRlTWF0aC5zd2l6emxlKGMuaW5fWzBdLCBbMSwgMiwgMywgMF0pLCBkZU1hdGguc3dp
enpsZShjLmluX1sxXSwgWzMsIDIsIDEsIDBdKSk7IH07CisgICAgcmV0dXJuIGZ1bmN0aW9uczsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLlZhbHVlVHlwZX0gdmFsdWVUeXBlCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLkZsb2F0U2NhbGFyfSByYW5nZU1pbgorICogQHBhcmFtIHtlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5GbG9hdFNjYWxhcn0gcmFuZ2VNYXgKKyAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVz
dHMuVmFsdWUgPSBmdW5jdGlvbih2YWx1ZVR5cGUsIHJhbmdlTWluLCByYW5nZU1heCkgeworICAg
IHRoaXMudmFsdWVUeXBlID0gdmFsdWVUeXBlOworICAgIHRoaXMucmFuZ2VNaW4gPSByYW5nZU1p
bjsKKyAgICB0aGlzLnJhbmdlTWF4ID0gcmFuZ2VNYXg7Cit9OworCisvKioKKyAqIEBlbnVtCisg
Ki8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5bWJvbCA9IHsKKyAgICBTWU1CT0xfTE9XUF9V
SU5UX01BWDogMCwKKyAgICBTWU1CT0xfTUVESVVNUF9VSU5UX01BWDogMSwKKworICAgIFNZTUJP
TF9MT1dQX1VJTlRfTUFYX1JFQ0lQUk9DQUw6IDIsCisgICAgU1lNQk9MX01FRElVTVBfVUlOVF9N
QVhfUkVDSVBST0NBTDogMywKKworICAgIFNZTUJPTF9PTkVfTUlOVVNfVUlOVDMyTUFYX0RJVl9M
T1dQX1VJTlRfTUFYOiA0LAorICAgIFNZTUJPTF9PTkVfTUlOVVNfVUlOVDMyTUFYX0RJVl9NRURJ
VU1QX1VJTlRfTUFYOiA1CisKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
e251bWJlcnxlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5TeW1ib2x9IHZhbHVlCisgKiBAcGFyYW0g
e2Jvb2xlYW49fSBpc1N5bWJvbAorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5GbG9hdFNj
YWxhciA9IGZ1bmN0aW9uKHZhbHVlLCBpc1N5bWJvbCkgeworICAgIGlmIChpc1N5bWJvbCkKKyAg
ICAgICAgdGhpcy5zeW1ib2wgPSAvKiogQHR5cGUge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5
bWJvbH0gKi8gKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuY29uc3RhbnQgPSAvKiog
QHR5cGUge251bWJlcn0gKi8gKHZhbHVlKTsKK307CisKKy8qKgorICogQHBhcmFtIHtnbHVTaGFk
ZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAqIEByZXR1cm4ge251bWJlcn0KKyAq
LworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXIucHJvdG90eXBlLmdldFZhbHVl
ID0gZnVuY3Rpb24oc2hhZGVyVHlwZSkgeworICAgIGlmICh0aGlzLmNvbnN0YW50ICE9PSB1bmRl
ZmluZWQpCisgICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50OworICAgIGVsc2UKKyAgICAgICAg
c3dpdGNoICh0aGlzLnN5bWJvbCkgeworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5TeW1ib2wuU1lNQk9MX0xPV1BfVUlOVF9NQVg6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmdldEdMU0xVaW50TWF4QXNGbG9hdChzaGFkZXJU
eXBlLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUCk7CisgICAgICAgICAg
ICBjYXNlIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5bWJvbC5TWU1CT0xfTUVESVVNUF9VSU5U
X01BWDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuZ2V0
R0xTTFVpbnRNYXhBc0Zsb2F0KHNoYWRlclR5cGUsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9NRURJVU1QKTsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5TeW1ib2wuU1lNQk9MX0xPV1BfVUlOVF9NQVhfUkVDSVBST0NBTDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMS4wIC8gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuZ2V0R0xTTFVpbnRNYXhB
c0Zsb2F0KHNoYWRlclR5cGUsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQ
KTsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU3ltYm9sLlNZTUJP
TF9NRURJVU1QX1VJTlRfTUFYX1JFQ0lQUk9DQUw6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEu
MCAvIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmdldEdMU0xVaW50TWF4QXNGbG9hdChzaGFkZXJU
eXBlLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCk7CisKKyAgICAg
ICAgICAgIGNhc2UgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU3ltYm9sLlNZTUJPTF9PTkVfTUlO
VVNfVUlOVDMyTUFYX0RJVl9MT1dQX1VJTlRfTUFYOgorICAgICAgICAgICAgICAgIHJldHVybiAx
LjAgLSAweEZGRkZGRkZGIC8gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuZ2V0R0xTTFVpbnRNYXhB
c0Zsb2F0KHNoYWRlclR5cGUsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQ
KTsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU3ltYm9sLlNZTUJP
TF9PTkVfTUlOVVNfVUlOVDMyTUFYX0RJVl9NRURJVU1QX1VJTlRfTUFYOgorICAgICAgICAgICAg
ICAgIHJldHVybiAxLjAgLSAweEZGRkZGRkZGIC8gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuZ2V0
R0xTTFVpbnRNYXhBc0Zsb2F0KHNoYWRlclR5cGUsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9NRURJVU1QKTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnSW52YWxpZCBzaGFkZXIgdHlwZScsIGZhbHNlLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgfQorfTsKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT19IHR5
cGUKKyAqIEBwYXJhbSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXI9fSByYW5n
ZU1pbgorICogQHBhcmFtIHtlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5GbG9hdFNjYWxhcj19IHJh
bmdlTWF4CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlclZhbHVlID0gZnVuY3Rp
b24odHlwZSwgcmFuZ2VNaW4sIHJhbmdlTWF4KSB7CisgICAgdGhpcy50eXBlID0gdHlwZSB8fCBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQ7CisgICAgdGhpcy5yYW5nZU1pbiA9IHJhbmdl
TWluIHx8IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5GbG9hdFNjYWxhcigwKTsKKyAgICB0
aGlzLnJhbmdlTWF4ID0gcmFuZ2VNYXggfHwgbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZs
b2F0U2NhbGFyKDApOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuU2hhZGVyRGF0YVNwZWMgPSBmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5
cGUge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZsb2F0U2NhbGFyfSAqLyB0aGlzLnJlc3VsdFNj
YWxlID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZsb2F0U2NhbGFyKDEpOworICAgIC8q
KiBAdHlwZSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXJ9ICovIHRoaXMucmVz
dWx0QmlhcyA9IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5GbG9hdFNjYWxhcigwKTsKKyAg
ICAvKiogQHR5cGUge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZsb2F0U2NhbGFyfSAqLyB0aGlz
LnJlZmVyZW5jZVNjYWxlID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZsb2F0U2NhbGFy
KDEpOworICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXJ9
ICovIHRoaXMucmVmZXJlbmNlQmlhcyA9IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5GbG9h
dFNjYWxhcigwKTsKKyAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNp
c2lvbn0gKi8gdGhpcy5wcmVjaXNpb24gPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNp
b24uTm9uZTsKKyAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHRoaXMu
b3V0cHV0OworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm51bUlucHV0cyA9IDA7Cisg
ICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5TaGFkZXJWYWx1ZT59
Ki8gdGhpcy5pbnB1dHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLk1BWF9JTlBVVFM7IGkrKykKKyAgICAgICAgdGhpcy5pbnB1dHNbaV0gPSBu
ZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU2hhZGVyVmFsdWUoKTsKK307CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAc3RydWN0CisgKiBAcGFyYW0ge3N0cmluZ30gY2FzZU5hbWUKKyAq
IEBwYXJhbSB7c3RyaW5nfSBzaGFkZXJGdW5jTmFtZQorICogQHBhcmFtIHtlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5WYWx1ZVR5cGV9IG91dFZhbHVlCisgKiBAcGFyYW0ge0FycmF5PGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLlZhbHVlPn0gaW5wdXRzCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLkZsb2F0U2NhbGFyfSByZXN1bHRTY2FsZQorICogQHBhcmFtIHtlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5GbG9hdFNjYWxhcn0gcmVzdWx0QmlhcworICogQHBhcmFtIHtlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5GbG9hdFNjYWxhcn0gcmVmZXJlbmNlU2NhbGUKKyAqIEBwYXJhbSB7
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXJ9IHJlZmVyZW5jZUJpYXMKKyAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorICogQHBhcmFtIHsqfSBm
dW5jdGlvbnMKKyAqIEBwYXJhbSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuT3BlcmF0aW9uVHlw
ZT19IHR5cGUKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzVW5hcnlQcmVmaXgKKyAqLworZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNJbmZvID0gZnVuY3Rpb24oY2FzZU5hbWUsIHNo
YWRlckZ1bmNOYW1lLCBvdXRWYWx1ZSwgaW5wdXRzLCByZXN1bHRTY2FsZSwgcmVzdWx0Qmlhcywg
cmVmZXJlbmNlU2NhbGUsIHJlZmVyZW5jZUJpYXMsIHByZWNpc2lvbiwgZnVuY3Rpb25zLCB0eXBl
LCBpc1VuYXJ5UHJlZml4KSB7CisgICAgdGhpcy5jYXNlTmFtZSA9IGNhc2VOYW1lOworICAgIHRo
aXMuc2hhZGVyRnVuY05hbWUgPSBzaGFkZXJGdW5jTmFtZTsKKyAgICB0aGlzLm91dFZhbHVlID0g
b3V0VmFsdWU7CisgICAgdGhpcy5pbnB1dHMgPSBpbnB1dHM7CisgICAgdGhpcy5yZXN1bHRTY2Fs
ZSA9IHJlc3VsdFNjYWxlOworICAgIHRoaXMucmVzdWx0QmlhcyA9IHJlc3VsdEJpYXM7CisgICAg
dGhpcy5yZWZlcmVuY2VTY2FsZSA9IHJlZmVyZW5jZVNjYWxlOworICAgIHRoaXMucmVmZXJlbmNl
QmlhcyA9IHJlZmVyZW5jZUJpYXM7CisgICAgdGhpcy5wcmVjaXNpb24gPSBwcmVjaXNpb247Cisg
ICAgdGhpcy5ldmFsRnVuY3Rpb25zID0gZnVuY3Rpb25zOworICAgIHRoaXMudHlwZSA9IHR5cGUg
fHwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuT3BlcmF0aW9uVHlwZS5GVU5DVElPTjsKKyAgICB0
aGlzLmlzVW5hcnlQcmVmaXggPSBpc1VuYXJ5UHJlZml4ID09PSB1bmRlZmluZWQgPyB0cnVlIDog
aXNVbmFyeVByZWZpeDsKK307CisKK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJ1aWx0aW5PcGVy
SW5mbyA9IGZ1bmN0aW9uKGNhc2VOYW1lLCBzaGFkZXJGdW5jTmFtZSwgb3V0VmFsdWUsIGlucHV0
cywgc2NhbGUsIGJpYXMsIHByZWNpc2lvbiwgZnVuY3Rpb25zKSB7CisgICAgcmV0dXJuIG5ldyBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5CdWlsdGluRnVuY0luZm8oY2FzZU5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJGdW5jTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuT3BlcmF0aW9u
VHlwZS5PUEVSQVRPUik7Cit9OworCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5idWlsdGluRnVu
Y3Rpb25JbmZvID0gZnVuY3Rpb24oY2FzZU5hbWUsIHNoYWRlckZ1bmNOYW1lLCBvdXRWYWx1ZSwg
aW5wdXRzLCBzY2FsZSwgYmlhcywgcHJlY2lzaW9uLCBmdW5jdGlvbnMpIHsKKyAgICByZXR1cm4g
bmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jSW5mbyhjYXNlTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlckZ1
bmNOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVy
YXRpb25UeXBlLkZVTkNUSU9OKTsKK307CisKK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJ1aWx0
aW5TaWRlRWZmT3BlckluZm8gPSBmdW5jdGlvbihjYXNlTmFtZSwgc2hhZGVyRnVuY05hbWUsIG91
dFZhbHVlLCBpbnB1dHMsIHNjYWxlLCBiaWFzLCBwcmVjaXNpb24sIGZ1bmN0aW9ucykgeworICAg
IHJldHVybiBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNJbmZvKGNhc2VO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZGVyRnVuY05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlucHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLk9wZXJhdGlvblR5cGUuU0lERV9FRkZFQ1RfT1BFUkFUT1IpOworfTsKKworZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuYnVpbHRpbk9wZXJJbmZvU2VwYXJhdGVSZWZTY2FsZUJpYXMgPSBmdW5j
dGlvbihjYXNlTmFtZSwgc2hhZGVyRnVuY05hbWUsIG91dFZhbHVlLCBpbnB1dHMsIHNjYWxlLCBi
aWFzLCBwcmVjaXNpb24sIGZ1bmN0aW9ucywgcmVmZXJlbmNlU2NhbGUsIHJlZmVyZW5jZUJpYXMp
IHsKKyAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jSW5m
byhjYXNlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJGdW5jTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VTY2FsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VC
aWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuT3BlcmF0aW9uVHlwZS5PUEVS
QVRPUik7Cit9OworCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5CdWlsdGluUG9zdFNpZGVFZmZP
cGVySW5mbyA9IGZ1bmN0aW9uKGNhc2VOYW1lLCBzaGFkZXJGdW5jTmFtZSwgb3V0VmFsdWUsIGlu
cHV0cywgc2NhbGUsIGJpYXMsIHByZWNpc2lvbiwgZnVuY3Rpb25zKSB7CisgICAgcmV0dXJuIG5l
dyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5CdWlsdGluRnVuY0luZm8oY2FzZU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyRnVu
Y05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5wdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLk9wZXJhdGlvblR5cGUuU0lERV9FRkZFQ1RfT1BFUkFUT1IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworfTsKK2VzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5Qb3N0T3BlckluZm8gPSBmdW5jdGlvbihjYXNlTmFtZSwg
c2hhZGVyRnVuY05hbWUsIG91dFZhbHVlLCBpbnB1dHMsIHNjYWxlLCBiaWFzLCBwcmVjaXNpb24s
IGZ1bmN0aW9ucykgeworICAgIHJldHVybiBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVp
bHRpbkZ1bmNJbmZvKGNhc2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRlckZ1bmNOYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dFZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWFzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRpb25UeXBlLk9QRVJBVE9SLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNl
KTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLkJ1aWx0aW5GdW5jR3JvdXAgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAg
IHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwor
ICAgIHRoaXMuZnVuY0luZm9zID0gW107Cit9OworCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5C
dWlsdGluRnVuY0dyb3VwLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oYSkgeyB0aGlzLmZ1bmNJ
bmZvcy5wdXNoKGEpOyB9OworCit2YXIgc19pblN3aXp6bGVzID0gWworCisgICAgWyd6JywgJ3d5
JywgJ3p4eScsICd5end4J10sCisgICAgWyd4JywgJ3l4JywgJ3l6eCcsICd3enl4J10sCisgICAg
Wyd5JywgJ3p5JywgJ3d5eicsICd4d3p5J10KK107CisKK3ZhciBzX291dFN3aXp6bGVzID0gWyd4
JywgJ3l6JywgJ3h5eicsICd4eXp3J107CisKK3ZhciBzX291dFN3aXp6bGVDaGFubmVsTWFza3Mg
PSBbCisgICAgW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLAorICAgIFtmYWxzZSwgdHJ1ZSwg
dHJ1ZSwgZmFsc2VdLAorICAgIFt0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZV0sCisgICAgW3RydWUs
IHRydWUsIHRydWUsIHRydWVdCitdOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9yfQorICogQHBhcmFtIHtnbHVT
aGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKyAqIEBwYXJhbSB7Z2xzU2hhZGVy
UmVuZGVyQ2FzZS5TaGFkZXJFdmFsRnVuY30gZXZhbEZ1bmMKKyAqIEBwYXJhbSB7ZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXJ9IHNjYWxlCisgKiBAcGFyYW0ge2VzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLkZsb2F0U2NhbGFyfSBiaWFzCisgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0
U2NhbGFyU2l6ZQorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRvclNoYWRlckV2
YWx1YXRvciA9IGZ1bmN0aW9uKHNoYWRlclR5cGUsIGV2YWxGdW5jLCBzY2FsZSwgYmlhcywgcmVz
dWx0U2NhbGFyU2l6ZSkgeworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9y
LmNhbGwodGhpcywgZXZhbEZ1bmMpOworICAgIHRoaXMubV9zaGFkZXJUeXBlID0gc2hhZGVyVHlw
ZTsKKyAgICB0aGlzLm1fc2NhbGUgPSBzY2FsZTsKKyAgICB0aGlzLm1fYmlhcyA9IGJpYXM7Cisg
ICAgdGhpcy5tX3Jlc3VsdFNjYWxhclNpemUgPSByZXN1bHRTY2FsYXJTaXplOworICAgIHRoaXMu
bV9hcmVTY2FsZUFuZEJpYXNFdmFsdWF0ZWQgPSBmYWxzZTsKK307CisKK3NldFBhcmVudENsYXNz
KGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLk9wZXJhdG9yU2hhZGVyRXZhbHVhdG9yLCBnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWx1YXRvcik7CisKK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
Lk9wZXJhdG9yU2hhZGVyRXZhbHVhdG9yLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uKGN0
eCkgeworICAgIHRoaXMubV9ldmFsRnVuYyhjdHgpOworCisgICAgaWYgKCF0aGlzLm1fYXJlU2Nh
bGVBbmRCaWFzRXZhbHVhdGVkKSB7CisgICAgICAgIHRoaXMubV9ldmFsdWF0ZWRTY2FsZSA9IHRo
aXMubV9zY2FsZS5nZXRWYWx1ZSh0aGlzLm1fc2hhZGVyVHlwZSk7CisgICAgICAgIHRoaXMubV9l
dmFsdWF0ZWRCaWFzID0gdGhpcy5tX2JpYXMuZ2V0VmFsdWUodGhpcy5tX3NoYWRlclR5cGUpOwor
ICAgICAgICB0aGlzLm1fYXJlU2NhbGVBbmRCaWFzRXZhbHVhdGVkID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgaWYgKHNfb3V0U3dpenps
ZUNoYW5uZWxNYXNrc1t0aGlzLm1fcmVzdWx0U2NhbGFyU2l6ZSAtIDFdW2ldKQorICAgICAgICAg
ICAgY3R4LmNvbG9yW2ldID0gY3R4LmNvbG9yW2ldICogdGhpcy5tX2V2YWx1YXRlZFNjYWxlICsg
dGhpcy5tX2V2YWx1YXRlZEJpYXM7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZX0KKyAqIEBwYXJhbSB7
c3RyaW5nfSBjYXNlTmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFy
YW0ge2Jvb2xlYW59IGlzVmVydGV4Q2FzZQorICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxGdW5jfSBldmFsRnVuYworICogQHBhcmFtIHtzdHJpbmd9IHNoYWRlck9wCisg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlckRhdGFTcGVjfSBzcGVjCisg
Ki8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9wZXJhdG9yQ2FzZSA9IGZ1bmN0aW9u
KGNhc2VOYW1lLCBkZXNjcmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCBldmFsRnVuYywgc2hhZGVyT3As
IHNwZWMpIHsKKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UuY2FsbCh0
aGlzLCBjYXNlTmFtZSwgZGVzY3JpcHRpb24sIGlzVmVydGV4Q2FzZSwgZXZhbEZ1bmMpOworICAg
IHRoaXMubV9zcGVjID0gc3BlYzsKKyAgICB0aGlzLm1fc2hhZGVyT3AgPSBzaGFkZXJPcDsKKyAg
ICB2YXIgc2hhZGVyVHlwZSA9IGlzVmVydGV4Q2FzZSA/IGdsdVNoYWRlclByb2dyYW0uc2hhZGVy
VHlwZS5WRVJURVggOiBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQ7CisgICAg
dGhpcy5tX2V2YWx1YXRvciA9IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRvclNo
YWRlckV2YWx1YXRvcihzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbEZ1bmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjLnJlZmVyZW5jZVNjYWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3BlYy5yZWZlcmVuY2VCaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZVNjYWxhclNpemUoc3BlYy5vdXRwdXQpKTsKK307CisKK3NldFBhcmVudENsYXNzKGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9wZXJhdG9yQ2FzZSwgZ2xzU2hhZGVyUmVuZGVy
Q2FzZS5TaGFkZXJSZW5kZXJDYXNlKTsKKworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU2hhZGVy
T3BlcmF0b3JDYXNlLnByb3RvdHlwZS5zZXR1cFNoYWRlckRhdGEgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgc2hhZGVyVHlwZSA9IHRoaXMubV9pc1ZlcnRleENhc2UgPyBnbHVTaGFkZXJQcm9ncmFt
LnNoYWRlclR5cGUuVkVSVEVYIDogZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5U
OworICAgIHZhciBwcmVjaXNpb24gPSB0aGlzLm1fc3BlYy5wcmVjaXNpb24gIT09IHVuZGVmaW5l
ZCA/IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZSh0aGlzLm1fc3BlYy5wcmVjaXNpb24p
IDogbnVsbDsKKyAgICB2YXIgaW5wdXRQcmVjaXNpb24gPSBbXTsKKyAgICB2YXIgc291cmNlcyA9
IFtdOworICAgIHNvdXJjZXNbMF0gPSAnJzsgLy92ZXJ0ZXgKKyAgICBzb3VyY2VzWzFdID0gJyc7
IC8vZnJhZ21lbnQKKyAgICB2YXIgdnR4ID0gMDsKKyAgICB2YXIgZnJhZyA9IDE7CisgICAgdmFy
IG9wID0gdGhpcy5tX2lzVmVydGV4Q2FzZSA/IHZ0eCA6IGZyYWc7CisKKyAgICBzb3VyY2VzW3Z0
eF0gKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICBzb3VyY2VzW2ZyYWddICs9ICcjdmVyc2lv
biAzMDAgZXNcbic7CisKKyAgICAvLyBDb21wdXRlIHByZWNpc2lvbiBmb3IgaW5wdXRzLgorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX3NwZWMubnVtSW5wdXRzOyBpKyspIHsKKyAgICAg
ICAgdmFyIGlzQm9vbFZhbCA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWModGhp
cy5tX3NwZWMuaW5wdXRzW2ldLnR5cGUpOworICAgICAgICB2YXIgaXNJbnRWYWwgPSBnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWModGhpcy5tX3NwZWMuaW5wdXRzW2ldLnR5cGUpOwor
ICAgICAgICB2YXIgaXNVaW50VmFsID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZl
Yyh0aGlzLm1fc3BlYy5pbnB1dHNbaV0udHlwZSk7CisgICAgICAgIC8vIFxub3RlIE1lZGl1bXAg
aW50ZXJwb2xhdG9ycyBhcmUgdXNlZCBmb3IgYm9vbGVhbnMsIGFuZCBoaWdocCBmb3IgaW50ZWdl
cnMuCisgICAgICAgIHZhciBwcmVjID0gaXNCb29sVmFsID8gZ2x1U2hhZGVyVXRpbC5wcmVjaXNp
b24uUFJFQ0lTSU9OX01FRElVTVAgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c0ludFZhbCB8fCBpc1VpbnRWYWwgPyBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
SElHSFAgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fc3BlYy5wcmVj
aXNpb247CisgICAgICAgIGlucHV0UHJlY2lzaW9uW2ldID0gZ2x1U2hhZGVyVXRpbC5nZXRQcmVj
aXNpb25OYW1lKHByZWMpOworICAgIH0KKworICAgIC8vIEF0dHJpYnV0ZXMuCisgICAgc291cmNl
c1t2dHhdICs9ICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247XG4nOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5tX3NwZWMubnVtSW5wdXRzOyBpKyspCisgICAgICAgIHNvdXJjZXNbdnR4
XSArPSAnaW4gJyArIGlucHV0UHJlY2lzaW9uW2ldICsgJyB2ZWM0IGFfaW4nICsgaSArICc7XG4n
OworCisgICAgLy8gQ29sb3Igb3V0cHV0LgorICAgIHNvdXJjZXNbZnJhZ10gKz0gJ2xheW91dChs
b2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbic7CisKKyAgICBpZiAodGhp
cy5tX2lzVmVydGV4Q2FzZSkgeworICAgICAgICBzb3VyY2VzW3Z0eF0gKz0gJ291dCBtZWRpdW1w
IHZlYzQgdl9jb2xvcjtcbic7CisgICAgICAgIHNvdXJjZXNbZnJhZ10gKz0gJ2luIG1lZGl1bXAg
dmVjNCB2X2NvbG9yO1xuJzsKKyAgICB9IGVsc2V7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5tX3NwZWMubnVtSW5wdXRzOyBpKyspIHsKKyAgICAgICAgICAgIHNvdXJjZXNbdnR4
XSArPSAnb3V0ICcgKyBpbnB1dFByZWNpc2lvbltpXSArICcgdmVjNCB2X2luJyArIGkgKyAnO1xu
JzsKKyAgICAgICAgICAgIHNvdXJjZXNbZnJhZ10gKz0gJ2luICcgKyBpbnB1dFByZWNpc2lvbltp
XSArICcgdmVjNCB2X2luJyArIGkgKyAnO1xuJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNv
dXJjZXNbdnR4XSArPSAnXG4nOworICAgIHNvdXJjZXNbdnR4XSArPSAndm9pZCBtYWluKClcbic7
CisgICAgc291cmNlc1t2dHhdICs9ICd7XG4nOworICAgIHNvdXJjZXNbdnR4XSArPSAnIGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjtcbic7CisKKyAgICBzb3VyY2VzW2ZyYWddICs9ICdcbic7Cisg
ICAgc291cmNlc1tmcmFnXSArPSAndm9pZCBtYWluKClcbic7CisgICAgc291cmNlc1tmcmFnXSAr
PSAne1xuJzsKKworICAgIC8vIEV4cHJlc3Npb24gaW5wdXRzLgorICAgIHZhciBwcmVmaXggPSB0
aGlzLm1faXNWZXJ0ZXhDYXNlID8gJ2FfJyA6ICd2Xyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1fc3BlYy5udW1JbnB1dHM7IGkrKykgeworICAgICAgICB2YXIgaW5UeXBlID0gdGhp
cy5tX3NwZWMuaW5wdXRzW2ldLnR5cGU7CisgICAgICAgIHZhciBpblNpemUgPSBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShpblR5cGUpOworICAgICAgICB2YXIgaXNJbnQgPSBn
bHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWMoaW5UeXBlKTsKKyAgICAgICAgdmFyIGlz
VWludCA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVVpbnRPclVWZWMoaW5UeXBlKTsKKyAgICAg
ICAgdmFyIGlzQm9vbCA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWMoaW5UeXBl
KTsKKyAgICAgICAgdmFyIHR5cGVOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUo
aW5UeXBlKTsKKyAgICAgICAgdmFyIHN3aXp6bGUgPSBzX2luU3dpenpsZXNbaV1baW5TaXplIC0g
MV07CisKKyAgICAgICAgc291cmNlc1tvcF0gKz0gJ1x0JzsKKyAgICAgICAgaWYgKHByZWNpc2lv
biAmJiAhaXNCb29sKSBzb3VyY2VzW29wXSArPSBwcmVjaXNpb24gKyAnICc7CisKKyAgICAgICAg
c291cmNlc1tvcF0gKz0gdHlwZU5hbWUgKyAnIGluJyArIGkgKyAnID0gJzsKKworICAgICAgICBp
ZiAoaXNCb29sKSB7CisgICAgICAgICAgICBpZiAoaW5TaXplID09IDEpIHNvdXJjZXNbb3BdICs9
ICcoJzsKKyAgICAgICAgICAgIGVsc2Ugc291cmNlc1tvcF0gKz0gJ2dyZWF0ZXJUaGFuKCc7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaXNJbnQgfHwgaXNVaW50KQorICAgICAgICAgICAgc291cmNlc1tv
cF0gKz0gdHlwZU5hbWUgKyAnKCc7CisKKyAgICAgICAgc291cmNlc1tvcF0gKz0gcHJlZml4ICsg
J2luJyArIGkgKyAnLicgKyBzd2l6emxlOworCisgICAgICAgIGlmIChpc0Jvb2wpIHsKKyAgICAg
ICAgICAgIGlmIChpblNpemUgPT0gMSkgc291cmNlc1tvcF0gKz0gJyA+IDAuMCknOworICAgICAg
ICAgICAgZWxzZSBzb3VyY2VzW29wXSArPSAnLCB2ZWMnICsgaW5TaXplICsgJygwLjApKSc7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaXNJbnQgfHwgaXNVaW50KQorICAgICAgICAgICAgc291cmNlc1tv
cF0gKz0gJyknOworCisgICAgICAgIHNvdXJjZXNbb3BdICs9ICc7XG4nOworICAgIH0KKworICAg
IC8vIFJlc3VsdCB2YXJpYWJsZS4KKyAgICB2YXIgb3V0VHlwZU5hbWUgPSBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlTmFtZSh0aGlzLm1fc3BlYy5vdXRwdXQpOworICAgIHZhciBpc0Jvb2xPdXQg
PSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKHRoaXMubV9zcGVjLm91dHB1dCk7
CisKKyAgICBzb3VyY2VzW29wXSArPSAnXHQnOworICAgIGlmIChwcmVjaXNpb24gJiYgIWlzQm9v
bE91dCkgc291cmNlc1tvcF0gKz0gcHJlY2lzaW9uICsgJyAnOworICAgIHNvdXJjZXNbb3BdICs9
IG91dFR5cGVOYW1lICsgJyByZXMgPSAnICsgb3V0VHlwZU5hbWUgKyAnKDAuMCk7XG5cbic7CisK
KworICAgIC8vIEV4cHJlc3Npb24uCisgICAgc291cmNlc1tvcF0gKz0gJ1x0JyArIHRoaXMubV9z
aGFkZXJPcCArICdcblxuJzsKKworICAgIC8vIENvbnZlcnQgdG8gY29sb3IuCisgICAgdmFyIGlz
UmVzRmxvYXRWZWMgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHRoaXMubV9z
cGVjLm91dHB1dCk7CisgICAgdmFyIG91dFNjYWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlU2NhbGFyU2l6ZSh0aGlzLm1fc3BlYy5vdXRwdXQpOworCisgICAgc291cmNlc1tvcF0g
Kz0gJ1x0aGlnaHAgdmVjNCBjb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbic7Cisg
ICAgc291cmNlc1tvcF0gKz0gJ1x0Y29sb3IuJyArIHNfb3V0U3dpenpsZXNbb3V0U2NhbGFyU2l6
ZSAtIDFdICsgJyA9ICc7CisKKyAgICBpZiAoIWlzUmVzRmxvYXRWZWMgJiYgb3V0U2NhbGFyU2l6
ZSA9PSAxKQorICAgICAgICBzb3VyY2VzW29wXSArPSAnZmxvYXQocmVzKSc7CisgICAgZWxzZSBp
ZiAoIWlzUmVzRmxvYXRWZWMpCisgICAgICAgIHNvdXJjZXNbb3BdICs9ICd2ZWMnICsgb3V0U2Nh
bGFyU2l6ZSArICcocmVzKSc7CisgICAgZWxzZQorICAgICAgICBzb3VyY2VzW29wXSArPSAncmVz
JzsKKworICAgIHNvdXJjZXNbb3BdICs9ICc7XG4nOworCisgICAgLy8gU2NhbGUgJiBiaWFzLgor
ICAgIHZhciByZXN1bHRTY2FsZSA9IHRoaXMubV9zcGVjLnJlc3VsdFNjYWxlLmdldFZhbHVlKHNo
YWRlclR5cGUpOworICAgIHZhciByZXN1bHRCaWFzID0gdGhpcy5tX3NwZWMucmVzdWx0Qmlhcy5n
ZXRWYWx1ZShzaGFkZXJUeXBlKTsKKyAgICBpZiAoKHJlc3VsdFNjYWxlICE9IDEuMCkgfHwgKHJl
c3VsdEJpYXMgIT0gMC4wKSkgeworICAgICAgICBzb3VyY2VzW29wXSArPSAnXHRjb2xvciA9IGNv
bG9yJzsKKyAgICAgICAgaWYgKHJlc3VsdFNjYWxlICE9IDEuMCkgc291cmNlc1tvcF0gKz0gJyAq
ICcgKyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy50d29WYWx1ZWRWZWM0KHJlc3VsdFNjYWxlLnRv
U3RyaW5nKDEwKSwgJzEuMCcsIHNfb3V0U3dpenpsZUNoYW5uZWxNYXNrc1tvdXRTY2FsYXJTaXpl
IC0gMV0pOworICAgICAgICBpZiAocmVzdWx0QmlhcyAhPSAwLjApIHNvdXJjZXNbb3BdICs9ICcg
KyAnICsgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudHdvVmFsdWVkVmVjNChyZXN1bHRCaWFzLnRv
U3RyaW5nKDEwKSwgJzAuMCcsIHNfb3V0U3dpenpsZUNoYW5uZWxNYXNrc1tvdXRTY2FsYXJTaXpl
IC0gMV0pOworICAgICAgICBzb3VyY2VzW29wXSArPSAnO1xuJzsKKyAgICB9CisKKyAgICAvLyAu
LgorICAgIGlmICh0aGlzLm1faXNWZXJ0ZXhDYXNlKSB7CisgICAgICAgIHNvdXJjZXNbdnR4XSAr
PSAnIHZfY29sb3IgPSBjb2xvcjtcbic7CisgICAgICAgIHNvdXJjZXNbZnJhZ10gKz0gJyBvX2Nv
bG9yID0gdl9jb2xvcjtcbic7CisgICAgfSBlbHNleworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMubV9zcGVjLm51bUlucHV0czsgaSsrKQorICAgICAgICBzb3VyY2VzW3Z0eF0gKz0g
JyB2X2luJyArIGkgKyAnID0gYV9pbicgKyBpICsgJztcbic7CisgICAgICAgIHNvdXJjZXNbZnJh
Z10gKz0gJyBvX2NvbG9yID0gY29sb3I7XG4nOworICAgIH0KKworICAgIHNvdXJjZXNbdnR4XSAr
PSAnfVxuJzsKKyAgICBzb3VyY2VzW2ZyYWddICs9ICd9XG4nOworCisgICAgdGhpcy5tX3ZlcnRT
aGFkZXJTb3VyY2UgPSBzb3VyY2VzW3Z0eF07CisgICAgdGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2Ug
PSBzb3VyY2VzW2ZyYWddOworCisgICAgLy8gU2V0dXAgdGhlIHVzZXIgYXR0cmlidXRlcy4KKyAg
ICB0aGlzLm1fdXNlckF0dHJpYlRyYW5zZm9ybXMgPSBbXTsKKyAgICBmb3IgKHZhciBpbnB1dE5k
eCA9IDA7IGlucHV0TmR4IDwgdGhpcy5tX3NwZWMubnVtSW5wdXRzOyBpbnB1dE5keCsrKSB7Cisg
ICAgICAgIHZhciB2ID0gdGhpcy5tX3NwZWMuaW5wdXRzW2lucHV0TmR4XTsKKworICAgICAgICB2
YXIgcmFuZ2VNaW4gPSB2LnJhbmdlTWluLmdldFZhbHVlKHNoYWRlclR5cGUpOworICAgICAgICB2
YXIgcmFuZ2VNYXggPSB2LnJhbmdlTWF4LmdldFZhbHVlKHNoYWRlclR5cGUpOworICAgICAgICB2
YXIgc2NhbGUgPSByYW5nZU1heCAtIHJhbmdlTWluOworICAgICAgICB2YXIgbWluQmlhcyA9IHJh
bmdlTWluOworICAgICAgICB2YXIgbWF4QmlhcyA9IHJhbmdlTWF4OworICAgICAgICB2YXIgYXR0
cmliTWF0cml4ID0gbmV3IHRjdU1hdHJpeC5NYXRyaXgoNCwgNCk7CisKKyAgICAgICAgZm9yICh2
YXIgcm93TmR4ID0gMDsgcm93TmR4IDwgNDsgcm93TmR4KyspIHsKKyAgICAgICAgICAgIHZhciBy
b3c7CisKKyAgICAgICAgICAgIHN3aXRjaCAoKHJvd05keCArIGlucHV0TmR4KSAlIDQpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIDA6IHJvdyA9IFtzY2FsZSwgMC4wLCAwLjAsIG1pbkJpYXNdOyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IHJvdyA9IFswLjAsIHNjYWxlLCAwLjAsIG1p
bkJpYXNdOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IHJvdyA9IFstc2NhbGUsIDAu
MCwgMC4wLCBtYXhCaWFzXTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiByb3cgPSBb
MC4wLCAtc2NhbGUsIDAuMCwgbWF4Qmlhc107IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6IHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb3cgaW5kZXgnKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYXR0cmliTWF0cml4LnNldFJvdyhyb3dOZHgsIHJvdyk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLm1fdXNlckF0dHJpYlRyYW5zZm9ybXNbaW5wdXROZHhdID0gYXR0
cmliTWF0cml4OworICAgIH0KKworfTsKKworLy8gUmVmZXJlbmNlIGZ1bmN0aW9ucyBmb3Igc3Bl
Y2lmaWMgc2VxdWVuY2Ugb3BlcmF0aW9ucyBmb3IgdGhlIHNlcXVlbmNlIG9wZXJhdG9yIHRlc3Rz
LgorLyoqCisgKiBSZWZlcmVuY2UgZm9yIGV4cHJlc3Npb24gImluMCwgaW4yICsgaW4xLCBpbjEg
KyBpbjAiCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGluMCBWZWM0CisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGluMSBWZWM0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGluMiBWZWM0
CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBWZWM0CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLnNlcXVlbmNlTm9TaWRlRWZmQ2FzZTAgPSBmdW5jdGlvbihpbjAsIGluMSwgaW4yKSB7
CisgICAgcmV0dXJuIGRlTWF0aC5hZGQoaW4xLCBpbjApOworfTsKKworLyoqCisgKiBSZWZlcmVu
Y2UgZm9yIGV4cHJlc3Npb24gImluMCwgaW4yICsgaW4xLCBpbjEgKyBpbjAiCisgKiBAcGFyYW0g
e251bWJlcn0gaW4wIGZsb2F0CisgKiBAcGFyYW0ge251bWJlcn0gaW4xIGRlVWludDMyCisgKiBA
cGFyYW0ge251bWJlcn0gaW4yIGZsb2F0CisgKiBAcmV0dXJuIHtudW1iZXJ9IGRlVWludDMyCisg
Ki8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlTm9TaWRlRWZmQ2FzZTEgPSBmdW5j
dGlvbihpbjAsIGluMSwgaW4yKSB7CisgICAgaW4xID0gY29udmVydChpbjEsIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCk7CisgICAgcmV0dXJuIGNvbnZlcnQoaW4xICsgaW4xLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQpOworfTsKKworLyoqCisgKiBSZWZlcmVuY2UgZm9yIGV4cHJl
c3Npb24gImluMCAmJiBpbjEsIGluMCwgaXZlYzIodmVjMihpbjApICsgaW4yKSIKKyAqIEBwYXJh
bSB7Ym9vbGVhbn0gaW4wCisgKiBAcGFyYW0ge2Jvb2xlYW59IGluMQorICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSBpbjIgVmVjMgorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gSVZlYzIKKyAq
LworZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VxdWVuY2VOb1NpZGVFZmZDYXNlMiA9IGZ1bmN0
aW9uKGluMCwgaW4xLCBpbjIpIHsKKyAgICBpbjAgPSBjb252ZXJ0KGluMCwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5CT09MKTsKKyAgICByZXR1cm4gY29udmVydChbaW4wICsgaW4yWzBdLCBpbjAg
KyBpbjJbMV1dLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCk7Cit9OworCisvKioKKyAqIFJl
ZmVyZW5jZSBmb3IgZXhwcmVzc2lvbiAiaW4wICsgdmVjNChpbjEpLCBpbjIsIGluMSIKKyAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gaW4wIFZlYzQKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
aW4xIElWZWM0CisgKiBAcGFyYW0ge0FycmF5PGJvb2xlYW4+fSBpbjIgQlZlYzQKKyAqIEByZXR1
cm4ge0FycmF5PG51bWJlcj59IElWZWM0CisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNl
cXVlbmNlTm9TaWRlRWZmQ2FzZTMgPSBmdW5jdGlvbihpbjAsIGluMSwgaW4yKSB7CisgICAgcmV0
dXJuIGNvbnZlcnQoaW4xLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCk7Cit9OworCisvKioK
KyAqIFJlZmVyZW5jZSBmb3IgZXhwcmVzc2lvbiAiaW4wKyssIGluMSA9IGluMCArIGluMiwgaW4y
ID0gaW4xIgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbjAgVmVjNAorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSBpbjEgVmVjNAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBpbjIgVmVj
NAorICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0gVmVjNAorICovCitlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5zZXF1ZW5jZVNpZGVFZmZDYXNlMCA9IGZ1bmN0aW9uKGluMCwgaW4xLCBpbjIpIHsK
KyAgICByZXR1cm4gZGVNYXRoLmFkZChkZU1hdGguYWRkKGluMCwgWzEuMCwgMS4wLCAxLjAsIDEu
MF0pLCBpbjIpOworfTsKKworLyoqCisgKiBSZWZlcmVuY2UgZm9yIGV4cHJlc3Npb24gImluMSsr
LCBpbjAgPSBmbG9hdChpbjEpLCBpbjEgPSB1aW50KGluMCArIGluMikiCisgKiBAcGFyYW0ge251
bWJlcn0gaW4wIGZsb2F0CisgKiBAcGFyYW0ge251bWJlcn0gaW4xIGRlVWludDMyCisgKiBAcGFy
YW0ge251bWJlcn0gaW4yIGZsb2F0CisgKiBAcmV0dXJuIHtudW1iZXJ9IGRlVWludDMyCisgKi8K
K2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlU2lkZUVmZkNhc2UxID0gZnVuY3Rpb24o
aW4wLCBpbjEsIGluMikgeworICAgIGluMSA9IGNvbnZlcnQoaW4xLCBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlQpOworICAgIHJldHVybiBjb252ZXJ0KGluMSArIDEuMCArIGluMiwgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UKTsKK307CisKKy8qKgorICogUmVmZXJlbmNlIGZvciBleHBy
ZXNzaW9uICJpbjEgPSBpbjAsIGluMisrLCBpbjIgPSBpbjIgKyB2ZWMyKGluMSksIGl2ZWMyKGlu
MikiCisgKiBAcGFyYW0ge2Jvb2xlYW59IGluMAorICogQHBhcmFtIHtib29sZWFufSBpbjEKKyAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gaW4yIFZlYzIKKyAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59IElWZWMyCisgKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlU2lkZUVmZkNh
c2UyID0gZnVuY3Rpb24oaW4wLCBpbjEsIGluMikgeworICAgIGluMCA9IGNvbnZlcnQoaW4wLCBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wpOworICAgIHJldHVybiBjb252ZXJ0KGRlTWF0aC5h
ZGQoZGVNYXRoLmFkZChpbjIsIFsxLjAsIDEuMF0pLCBbaW4wLCBpbjBdKSwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQpOworfTsKKworLyoqCisgKiBSZWZlcmVuY2UgZm9yIGV4cHJlc3Npb24g
ImluMCA9IGluMCArIHZlYzQoaW4yKSwgaW4xID0gaW4xICsgaXZlYzQoaW4wKSwgaW4xKysiCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGluMCBWZWM0CisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IGluMSBJVmVjNAorICogQHBhcmFtIHtBcnJheTxib29sZWFuPn0gaW4yIEJWZWM0CisgKiBA
cmV0dXJuIHtBcnJheTxudW1iZXI+fSBJVmVjNAorICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5zZXF1ZW5jZVNpZGVFZmZDYXNlMyA9IGZ1bmN0aW9uKGluMCwgaW4xLCBpbjIpIHsKKyAgICBp
bjEgPSBjb252ZXJ0KGluMSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpOworICAgIGluMiA9
IGNvbnZlcnQoaW4yLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wpOworICAgIGluMCA9IGRl
TWF0aC5hZGQoaW4wLCBpbjIpOworICAgIGluMSA9IGRlTWF0aC5hZGQoaW4xLCBjb252ZXJ0KGlu
MCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKTsKKyAgICByZXR1cm4gaW4xOworfTsKKwor
Ly8gU2hhZGVyRXZhbEZ1bmMtdHlwZSB3cmFwcGVycyBmb3IgdGhlIGFib3ZlIGZ1bmN0aW9ucy4K
KworLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gY3R4
ICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVuY2VOb1NpZGVFZmZDYXNlMCA9
IGZ1bmN0aW9uKGN0eCkgeworICAgIGN0eC5jb2xvciA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LnNlcXVlbmNlTm9TaWRlRWZmQ2FzZTAoCisgICAgICAgIGRlTWF0aC5zd2l6emxlKGN0eC5pbl9b
MF0sIFsxLCAyLCAzLCAwXSksCisgICAgICAgIGRlTWF0aC5zd2l6emxlKGN0eC5pbl9bMV0sIFsz
LCAyLCAxLCAwXSksCisgICAgICAgIGRlTWF0aC5zd2l6emxlKGN0eC5pbl9bMl0sIFswLCAzLCAy
LCAxXSkKKyAgICApOworfTsKKworLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFk
ZXJFdmFsQ29udGV4dH0gY3R4ICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVu
Y2VOb1NpZGVFZmZDYXNlMSA9IGZ1bmN0aW9uKGN0eCkgeworICAgIGN0eC5jb2xvclswXSA9IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlTm9TaWRlRWZmQ2FzZTEoCisgICAgICAgIGN0
eC5pbl9bMF1bMl0sCisgICAgICAgIGN0eC5pbl9bMV1bMF0sCisgICAgICAgIGN0eC5pbl9bMl1b
MV0KKyAgICApOworfTsKKworLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJF
dmFsQ29udGV4dH0gY3R4ICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVuY2VO
b1NpZGVFZmZDYXNlMiA9IGZ1bmN0aW9uKGN0eCkgeworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHJlc3VsdCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlTm9T
aWRlRWZmQ2FzZTIoCisgICAgICAgIGN0eC5pbl9bMF1bMl0gPiAwLjAsCisgICAgICAgIGN0eC5p
bl9bMV1bMF0gPiAwLjAsCisgICAgICAgIGRlTWF0aC5zd2l6emxlKGN0eC5pbl9bMl0sIFsyLCAx
XSkKKyAgICApOworICAgIGN0eC5jb2xvclsxXSA9IHJlc3VsdFswXTsKKyAgICBjdHguY29sb3Jb
Ml0gPSByZXN1bHRbMV07Cit9OworCisvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNo
YWRlckV2YWxDb250ZXh0fSBjdHggKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmV2YWxTZXF1
ZW5jZU5vU2lkZUVmZkNhc2UzID0gZnVuY3Rpb24oY3R4KSB7CisgICAgY3R4LmNvbG9yID0gZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VxdWVuY2VOb1NpZGVFZmZDYXNlMygKKyAgICAgICAgZGVN
YXRoLnN3aXp6bGUoY3R4LmluX1swXSwgWzEsIDIsIDMsIDBdKSwKKyAgICAgICAgZGVNYXRoLnN3
aXp6bGUoY3R4LmluX1sxXSwgWzMsIDIsIDEsIDBdKSwKKyAgICAgICAgZGVNYXRoLmdyZWF0ZXJU
aGFuKGRlTWF0aC5zd2l6emxlKGN0eC5pbl9bMl0sIFswLCAzLCAyLCAxXSksIFswLjAsIDAuMCwg
MC4wLCAwLjBdKQorICAgICk7Cit9OworCisvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjdHggKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmV2YWxT
ZXF1ZW5jZVNpZGVFZmZDYXNlMCA9IGZ1bmN0aW9uKGN0eCkgeworICAgIGN0eC5jb2xvciA9IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlcXVlbmNlU2lkZUVmZkNhc2UwKAorICAgICAgICBkZU1h
dGguc3dpenpsZShjdHguaW5fWzBdLCBbMSwgMiwgMywgMF0pLAorICAgICAgICBkZU1hdGguc3dp
enpsZShjdHguaW5fWzFdLCBbMywgMiwgMSwgMF0pLAorICAgICAgICBkZU1hdGguc3dpenpsZShj
dHguaW5fWzJdLCBbMCwgMywgMiwgMV0pCisgICAgKTsKK307CisKKy8qKiBAcGFyYW0ge2dsc1No
YWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGN0eCAqLworZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuZXZhbFNlcXVlbmNlU2lkZUVmZkNhc2UxID0gZnVuY3Rpb24oY3R4KSB7CisgICAg
Y3R4LmNvbG9yWzBdID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VxdWVuY2VTaWRlRWZmQ2Fz
ZTEoCisgICAgICAgIGN0eC5pbl9bMF1bMl0sCisgICAgICAgIGN0eC5pbl9bMV1bMF0sCisgICAg
ICAgIGN0eC5pbl9bMl1bMV0KKyAgICApOworfTsKKworLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gY3R4ICovCitlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5ldmFsU2VxdWVuY2VTaWRlRWZmQ2FzZTIgPSBmdW5jdGlvbihjdHgpIHsKKyAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciByZXN1bHQgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5zZXF1ZW5jZVNpZGVFZmZDYXNlMigKKyAgICAgICAgY3R4LmluX1swXVsyXSA+IDAuMCwKKyAg
ICAgICAgY3R4LmluX1sxXVswXSA+IDAuMCwKKyAgICAgICAgZGVNYXRoLnN3aXp6bGUoY3R4Lmlu
X1syXSwgWzIsIDFdKQorICAgICk7CisgICAgY3R4LmNvbG9yWzFdID0gcmVzdWx0WzBdOworICAg
IGN0eC5jb2xvclsyXSA9IHJlc3VsdFsxXTsKK307CisKKy8qKiBAcGFyYW0ge2dsc1NoYWRlclJl
bmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGN0eCAqLworZXMzZlNoYWRlck9wZXJhdG9yVGVz
dHMuZXZhbFNlcXVlbmNlU2lkZUVmZkNhc2UzID0gZnVuY3Rpb24oY3R4KSB7CisgICAgY3R4LmNv
bG9yID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VxdWVuY2VTaWRlRWZmQ2FzZTMoCisgICAg
ICAgIGRlTWF0aC5zd2l6emxlKGN0eC5pbl9bMF0sIFsxLCAyLCAzLCAwXSksCisgICAgICAgIGRl
TWF0aC5zd2l6emxlKGN0eC5pbl9bMV0sIFszLCAyLCAxLCAwXSksCisgICAgICAgIGRlTWF0aC5n
cmVhdGVyVGhhbihkZU1hdGguc3dpenpsZShjdHguaW5fWzJdLCBbMCwgMywgMiwgMV0pLCBbMC4w
LCAwLjAsIDAuMCwgMC4wXSkKKyAgICApOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqLworZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuU2hhZGVyT3BlcmF0b3JUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIHRjdVRlc3RDYXNl
LkRlcXBUZXN0LmNhbGwodGhpcywgJ3NoYWRlcm9wJywgJ1NoYWRlciBvcGVyYXRvcnMgdGVzdHMn
KTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9w
ZXJhdG9yVGVzdHMsIHRjdVRlc3RDYXNlLkRlcXBUZXN0KTsKKworZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuU2hhZGVyT3BlcmF0b3JUZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBvcCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJ1aWx0aW5PcGVySW5mbzsKKyAg
ICB2YXIgc2lkZSA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJ1aWx0aW5TaWRlRWZmT3Blcklu
Zm87CisgICAgdmFyIHNlcGFyYXRlID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYnVpbHRpbk9w
ZXJJbmZvU2VwYXJhdGVSZWZTY2FsZUJpYXM7CisgICAgdmFyIHBvc3RTaWRlID0gZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuQnVpbHRpblBvc3RTaWRlRWZmT3BlckluZm87CisgICAgdmFyIHBvc3RP
cCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5Qb3N0T3BlckluZm87CisgICAgdmFy
IGFsbCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5BbGw7CisgICAgdmFyIGhp
Z2hwID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuUHJlY2lzaW9uLkhpZ2g7CisgICAgdmFyIG1l
ZGl1bXAgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24uTWVkaXVtOworICAgIHZh
ciBtZWRpdW1oaWdocCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlByZWNpc2lvbi5NZWRpdW1I
aWdoOworICAgIHZhciBsb3dwID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuUHJlY2lzaW9uLkxv
dzsKKyAgICB2YXIgbmEgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5QcmVjaXNpb24uTm9uZTsK
KyAgICB2YXIgR1QgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5cGUuRkxPQVRfR0VO
VFlQRTsKKyAgICB2YXIgVUdUID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBlLlVJ
TlRfR0VOVFlQRTsKKyAgICB2YXIgSUdUID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVU
eXBlLklOVF9HRU5UWVBFOworICAgIHZhciBCR1QgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5W
YWx1ZVR5cGUuQk9PTF9HRU5UWVBFOworICAgIHZhciBGID0gZXMzZlNoYWRlck9wZXJhdG9yVGVz
dHMuVmFsdWVUeXBlLkZMT0FUOworICAgIHZhciBJID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
VmFsdWVUeXBlLklOVDsKKyAgICB2YXIgVSA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVl
VHlwZS5VSU5UOworICAgIHZhciBCViA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlw
ZS5CT09MX1ZFQzsKKyAgICB2YXIgRlYgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5
cGUuRkxPQVRfVkVDOworICAgIHZhciBJViA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVl
VHlwZS5JTlRfVkVDOworICAgIHZhciBVViA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVl
VHlwZS5VSU5UX1ZFQzsKKyAgICB2YXIgQiA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVl
VHlwZS5CT09MOworICAgIHZhciBWMyA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlVHlw
ZS5WRUMzOworICAgIHZhciBsVU1heCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5bWJvbC5T
WU1CT0xfTE9XUF9VSU5UX01BWDsKKyAgICB2YXIgbVVNYXggPSBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5TeW1ib2wuU1lNQk9MX01FRElVTVBfVUlOVF9NQVg7CisgICAgdmFyIGxVTWF4UiA9IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5bWJvbC5TWU1CT0xfTE9XUF9VSU5UX01BWF9SRUNJUFJP
Q0FMOworICAgIHZhciBtVU1heFIgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5TeW1ib2wuU1lN
Qk9MX01FRElVTVBfVUlOVF9NQVhfUkVDSVBST0NBTDsKKyAgICB2YXIgZiA9IGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRT
Y2FsYXIodmFsdWUpOworICAgIH07CisgICAgdmFyIHMgPSBmdW5jdGlvbih2YWx1ZSkgeworICAg
ICAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkZsb2F0U2NhbGFyKHZhbHVl
LCB0cnVlKTsKKyAgICB9OworICAgIHZhciB2ID0gZnVuY3Rpb24odHlwZSwgYSwgYikgeworICAg
ICAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlKHR5cGUsIGYoYSks
IGYoYikpOworICAgIH07CisgICAgdmFyIHYyID0gZnVuY3Rpb24odHlwZSwgYSwgYikgeworICAg
ICAgICByZXR1cm4gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlZhbHVlKHR5cGUsIGYoYSks
IHMoYikpOworICAgIH07CisgICAgdmFyIGZ1bmNJbmZvR3JvdXBzID0gW107CisgICAgdmFyIHVu
YXJ5ID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoJ3VuYXJ5
X29wZXJhdG9yJywgJ1VuYXJ5IG9wZXJhdG9yIHRlc3RzJyk7CisgICAgZnVuY0luZm9Hcm91cHMu
cHVzaCh1bmFyeSk7CisKKyAgICB1bmFyeS5wdXNoKG9wKCdwbHVzJywgJysnLCBHVCwgW3YoR1Qs
IC0xLjAsIDEuMCldLCBmKDAuNSksIGYoMC41KSwgYWxsLAorICAgICAgICBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhub3ApKSk7CisgICAgdW5hcnkucHVzaChvcCgn
cGx1cycsICcrJywgSUdULCBbdihJR1QsIC01LjAsIDUuMCldLCBmKDAuMSksIGYoMC41KSwgYWxs
LAorICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhub3As
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVCkpKTsKKyAgICB1bmFyeS5wdXNoKG9wKCdwbHVzJywgJysnLCBVR1QsIFt2KFVHVCwg
MC4wLCAyZTIpXSwgZig1ZS0zKSwgZigwLjApLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKG5vcCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgdW5hcnku
cHVzaChvcCgnbWludXMnLCAnLScsIEdULCBbdihHVCwgLTEuMCwgMS4wKV0sIGYoMC41KSwgZigw
LjUpLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1
bmNzKG5lZ2F0ZSkpKTsKKyAgICB1bmFyeS5wdXNoKG9wKCdtaW51cycsICctJywgSUdULCBbdihJ
R1QsIC01LjAsIDUuMCldLCBmKDAuMSksIGYoMC41KSwgYWxsLAorICAgICAgICBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhuZWdhdGUsIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICB1
bmFyeS5wdXNoKHNlcGFyYXRlKCdtaW51cycsICctJywgVUdULCBbdjIoVUdULCAwLjAsIGxVTWF4
KV0sIHMobFVNYXhSKSwgZigwLjApLCBsb3dwLAorICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy51bmFyeUdlblR5cGVGdW5jcyhuZWdhdGUsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSwgcyhsVU1heFIpLAorICAg
ICAgICBzKGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlN5bWJvbC5TWU1CT0xfT05FX01JTlVTX1VJ
TlQzMk1BWF9ESVZfTE9XUF9VSU5UX01BWCkpKTsKKyAgICB1bmFyeS5wdXNoKHNlcGFyYXRlKCdt
aW51cycsICctJywgVUdULCBbdjIoVUdULCAwLjAsIG1VTWF4KV0sIHMobVVNYXhSKSwgZigwLjAp
LCBtZWRpdW1wLAorICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVG
dW5jcyhuZWdhdGUsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSwgcyhtVU1heFIpLAorICAgICAgICBzKGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLlN5bWJvbC5TWU1CT0xfT05FX01JTlVTX1VJTlQzMk1BWF9ESVZfTUVESVVN
UF9VSU5UX01BWCkpKTsKKyAgICB1bmFyeS5wdXNoKG9wKCdtaW51cycsICctJywgVUdULCBbdihV
R1QsIDAuMCwgNGU5KV0sIGYoMmUtMTApLCBmKDAuMCksIGhpZ2hwLAorICAgICAgICBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhuZWdhdGUsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuVUlOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOwor
ICAgIHVuYXJ5LnB1c2gob3AoJ25vdCcsICchJywgQiwgW3YoQiwgLTEuMCwgMS4wKV0sIGYoMS4w
KSwgZigwLjApLCBuYSx7J3NjYWxhcic6IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2Vu
VHlwZUZ1bmNzKGJvb2xOb3QsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MKS5zY2FsYXJ9KSk7CisgICAgdW5hcnkucHVzaChv
cCgnYml0d2lzZV9ub3QnLCAnficsIElHVCwgW3YoSUdULCAtMWU1LCAxZTUpXSwgZig1ZS01KSwg
ZigwLjUpLCBoaWdocCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5U
eXBlRnVuY3MoYml0d2lzZU5vdCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIHVuYXJ5LnB1c2gob3AoJ2JpdHdp
c2Vfbm90JywgJ34nLCBVR1QsIFt2KFVHVCwgMC4wLCAyZTkpXSwgZigyZS0xMCksIGYoMC4wKSwg
aGlnaHAsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNz
KGJpdHdpc2VOb3QsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworCisgICAgLy8gUHJlL3Bvc3QgaW5jci9kZWNyIHNp
ZGUgZWZmZWN0IGNhc2VzLgorICAgIHVuYXJ5ID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LkJ1aWx0aW5GdW5jR3JvdXAoJ3VuYXJ5X29wZXJhdG9yJywgJ1VuYXJ5IG9wZXJhdG9yIHRlc3Rz
Jyk7CisgICAgZnVuY0luZm9Hcm91cHMucHVzaCh1bmFyeSk7CisKKyAgICB1bmFyeS5wdXNoKHNp
ZGUoJ3ByZV9pbmNyZW1lbnRfZWZmZWN0JywgJysrJywgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwg
ZigwLjUpLCBmKDAuMCksIGFsbCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5h
cnlHZW5UeXBlRnVuY3MoYWRkT25lKSkpOworICAgIHVuYXJ5LnB1c2goc2lkZSgncHJlX2luY3Jl
bWVudF9lZmZlY3QnLCAnKysnLCBJR1QsIFt2KElHVCwgLTYuMCwgNC4wKV0sIGYoMC4xKSwgZigw
LjUpLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1
bmNzKGFkZE9uZSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIHVuYXJ5LnB1c2goc2lkZSgncHJlX2luY3JlbWVu
dF9lZmZlY3QnLCAnKysnLCBVR1QsIFt2KFVHVCwgMC4wLCA5LjApXSwgZigwLjEpLCBmKDAuNSks
IGFsbCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mo
YWRkT25lLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICB1bmFyeS5wdXNoKHNpZGUoJ3ByZV9kZWNyZW1lbnRf
ZWZmZWN0JywgJy0tJywgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDEuMCksIGFs
bCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Moc3Vi
T25lKSkpOworICAgIHVuYXJ5LnB1c2goc2lkZSgncHJlX2RlY3JlbWVudF9lZmZlY3QnLCAnLS0n
LCBJR1QsIFt2KElHVCwgLTQuMCwgNi4wKV0sIGYoMC4xKSwgZigwLjUpLCBhbGwsCisgICAgICAg
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKHN1Yk9uZSwgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
KSkpOworICAgIHVuYXJ5LnB1c2goc2lkZSgncHJlX2RlY3JlbWVudF9lZmZlY3QnLCAnLS0nLCBV
R1QsIFt2KFVHVCwgMC4wLCAxMC4wKV0sIGYoMC4xKSwgZigwLjApLCBhbGwsCisgICAgICAgIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKHN1Yk9uZSwgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQp
KSk7CisgICAgdW5hcnkucHVzaChwb3N0U2lkZSgncG9zdF9pbmNyZW1lbnRfcmVzdWx0JywgJysr
JywgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDAuMCksIGFsbCwKKyAgICAgICAg
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoYWRkT25lKSkpOworICAg
IHVuYXJ5LnB1c2gocG9zdFNpZGUoJ3Bvc3RfaW5jcmVtZW50X3Jlc3VsdCcsICcrKycsIElHVCwg
W3YoSUdULCAtNi4wLCA0LjApXSwgZigwLjEpLCBmKDAuNSksIGFsbCwKKyAgICAgICAgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoYWRkT25lLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7Cisg
ICAgdW5hcnkucHVzaChwb3N0U2lkZSgncG9zdF9pbmNyZW1lbnRfcmVzdWx0JywgJysrJywgVUdU
LCBbdihVR1QsIDAuMCwgOS4wKV0sIGYoMC4xKSwgZigwLjApLCBhbGwsCisgICAgICAgIGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKGFkZE9uZSwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7
CisgICAgdW5hcnkucHVzaChwb3N0U2lkZSgncG9zdF9kZWNyZW1lbnRfcmVzdWx0JywgJy0tJywg
R1QsIFt2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDEuMCksIGFsbCwKKyAgICAgICAgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Moc3ViT25lKSkpOworICAgIHVu
YXJ5LnB1c2gocG9zdFNpZGUoJ3Bvc3RfZGVjcmVtZW50X3Jlc3VsdCcsICctLScsIElHVCwgW3Yo
SUdULCAtNC4wLCA2LjApXSwgZigwLjEpLCBmKDAuNSksIGFsbCwKKyAgICAgICAgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Moc3ViT25lLCBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAg
dW5hcnkucHVzaChwb3N0U2lkZSgncG9zdF9kZWNyZW1lbnRfcmVzdWx0JywgJy0tJywgVUdULCBb
dihVR1QsIDEuMCwgMTAuMCldLCBmKDAuMSksIGYoMC4wKSwgYWxsLAorICAgICAgICBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhzdWJPbmUsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuVUlOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOwor
CisgICAgLy8gUHJlL3Bvc3QgaW5jci9kZWNyIHJlc3VsdCBjYXNlcy4KKyAgICB1bmFyeSA9IG5l
dyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5CdWlsdGluRnVuY0dyb3VwKCd1bmFyeV9vcGVyYXRv
cicsICdVbmFyeSBvcGVyYXRvciB0ZXN0cycpOworICAgIGZ1bmNJbmZvR3JvdXBzLnB1c2godW5h
cnkpOworCisgICAgdW5hcnkucHVzaChvcCgncHJlX2luY3JlbWVudF9yZXN1bHQnLCAnKysnLCBH
VCwgW3YoR1QsIC0xLjAsIDEuMCldLCBmKDAuNSksIGYoMC4wKSwgYWxsLAorICAgICAgICBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhhZGRPbmUpKSk7CisgICAgdW5h
cnkucHVzaChvcCgncHJlX2luY3JlbWVudF9yZXN1bHQnLCAnKysnLCBJR1QsIFt2KElHVCwgLTYu
MCwgNC4wKV0sIGYoMC4xKSwgZigwLjUpLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKGFkZE9uZSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIHVuYXJ5LnB1
c2gob3AoJ3ByZV9pbmNyZW1lbnRfcmVzdWx0JywgJysrJywgVUdULCBbdihVR1QsIDAuMCwgOS4w
KV0sIGYoMC4xKSwgZigwLjApLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LnVuYXJ5R2VuVHlwZUZ1bmNzKGFkZE9uZSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAor
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgdW5hcnkucHVzaChv
cCgncHJlX2RlbmNyZW1lbnRfcmVzdWx0JywgJy0tJywgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwg
ZigwLjUpLCBmKDEuMCksIGFsbCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5h
cnlHZW5UeXBlRnVuY3Moc3ViT25lKSkpOworICAgIHVuYXJ5LnB1c2gob3AoJ3ByZV9kZWNyZW1l
bnRfcmVzdWx0JywgJy0tJywgSUdULCBbdihJR1QsIC00LjAsIDYuMCldLCBmKDAuMSksIGYoMC41
KSwgYWxsLAorICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5j
cyhzdWJPbmUsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICB1bmFyeS5wdXNoKG9wKCdwcmVfZGVjcmVtZW50X3Jl
c3VsdCcsICctLScsIFVHVCwgW3YoVUdULCAwLjAsIDEwLjApXSwgZigwLjEpLCBmKDAuMCksIGFs
bCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Moc3Vi
T25lLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuVUlOVCkpKTsKKyAgICB1bmFyeS5wdXNoKHBvc3RPcCgncG9zdF9pbmNyZW1lbnRf
cmVzdWx0JywgJysrJywgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDAuNSksIGFs
bCwKKyAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mobm9w
KSkpOworICAgIHVuYXJ5LnB1c2gocG9zdE9wKCdwb3N0X2luY3JlbWVudF9yZXN1bHQnLCAnKysn
LCBJR1QsIFt2KElHVCwgLTUuMCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLCBhbGwsCisgICAgICAg
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKG5vcCwgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkp
OworICAgIHVuYXJ5LnB1c2gocG9zdE9wKCdwb3N0X2luY3JlbWVudF9yZXN1bHQnLCAnKysnLCBV
R1QsIFt2KFVHVCwgMC4wLCA5LjApXSwgZigwLjEpLCBmKDAuMCksIGFsbCwKKyAgICAgICAgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mobm9wLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsK
KyAgICB1bmFyeS5wdXNoKHBvc3RPcCgncG9zdF9kZWNyZW1lbnRfcmVzdWx0JywgJy0tJywgR1Qs
IFt2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDAuNSksIGFsbCwKKyAgICAgICAgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mobm9wKSkpOworICAgIHVuYXJ5LnB1
c2gocG9zdE9wKCdwb3N0X2RlY3JlbWVudF9yZXN1bHQnLCAnLS0nLCBJR1QsIFt2KElHVCwgLTUu
MCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKG5vcCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQs
CisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIHVuYXJ5LnB1c2go
cG9zdE9wKCdwb3N0X2RlY3JlbWVudF9yZXN1bHQnLCAnLS0nLCBVR1QsIFt2KFVHVCwgMS4wLCAx
MC4wKV0sIGYoMC4xKSwgZigwLjApLCBhbGwsCisgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKG5vcCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAor
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisKKyAgICB2YXIgYmluYXJ5
OworCisgICAgLy8gTm9ybWFsIGJpbmFyeSBvcGVyYXRpb25zIGFuZCB0aGVpciBjb3JyZXNwb25k
aW5nIGFzc2lnbm1lbnQgb3BlcmF0aW9ucyBoYXZlIGxvdHMgaW4gY29tbW9uOyBnZW5lcmF0ZSBi
b3RoIGluIHRoZSBmb2xsb3dpbmcgbG9vcC4KKyAgICAvLyAwOiBub3JtYWwgb3AgdGVzdCwgMTog
YXNzaWdubWVudCBvcCBzaWRlLWVmZmVjdCB0ZXN0LCAyOiBhc3NpZ25tZW50IG9wIHJlc3VsdCB0
ZXN0CisgICAgZm9yICh2YXIgYmluYXJ5T3BlcmF0b3JUeXBlID0gMDsgYmluYXJ5T3BlcmF0b3JU
eXBlIDw9IDI7IGJpbmFyeU9wZXJhdG9yVHlwZSsrKSB7CisgICAgICAgIHZhciBpc05vcm1hbE9w
ID0gYmluYXJ5T3BlcmF0b3JUeXBlID09IDA7CisgICAgICAgIHZhciBpc0Fzc2lnbkVmZiA9IGJp
bmFyeU9wZXJhdG9yVHlwZSA9PSAxOworICAgICAgICB2YXIgaXNBc3NpZ25SZXMgPSBiaW5hcnlP
cGVyYXRvclR5cGUgPT0gMjsKKworICAgICAgICB2YXIgYWRkTmFtZSA9IGlzTm9ybWFsT3AgPyAn
YWRkJyA6IGlzQXNzaWduRWZmID8gJ2FkZF9hc3NpZ25fZWZmZWN0JyA6ICdhZGRfYXNzaWduX3Jl
c3VsdCc7CisgICAgICAgIHZhciBzdWJOYW1lID0gaXNOb3JtYWxPcCA/ICdzdWInIDogaXNBc3Np
Z25FZmYgPyAnc3ViX2Fzc2lnbl9lZmZlY3QnIDogJ3N1Yl9hc3NpZ25fcmVzdWx0JzsKKyAgICAg
ICAgdmFyIG11bE5hbWUgPSBpc05vcm1hbE9wID8gJ211bCcgOiBpc0Fzc2lnbkVmZiA/ICdtdWxf
YXNzaWduX2VmZmVjdCcgOiAnbXVsX2Fzc2lnbl9yZXN1bHQnOworICAgICAgICB2YXIgZGl2TmFt
ZSA9IGlzTm9ybWFsT3AgPyAnZGl2JyA6IGlzQXNzaWduRWZmID8gJ2Rpdl9hc3NpZ25fZWZmZWN0
JyA6ICdkaXZfYXNzaWduX3Jlc3VsdCc7CisgICAgICAgIHZhciBtb2ROYW1lID0gaXNOb3JtYWxP
cCA/ICdtb2QnIDogaXNBc3NpZ25FZmYgPyAnbW9kX2Fzc2lnbl9lZmZlY3QnIDogJ21vZF9hc3Np
Z25fcmVzdWx0JzsKKyAgICAgICAgdmFyIGFuZE5hbWUgPSBpc05vcm1hbE9wID8gJ2JpdHdpc2Vf
YW5kJyA6IGlzQXNzaWduRWZmID8gJ2JpdHdpc2VfYW5kX2Fzc2lnbl9lZmZlY3QnIDogJ2JpdHdp
c2VfYW5kX2Fzc2lnbl9yZXN1bHQnOworICAgICAgICB2YXIgb3JOYW1lID0gaXNOb3JtYWxPcCA/
ICdiaXR3aXNlX29yJyA6IGlzQXNzaWduRWZmID8gJ2JpdHdpc2Vfb3JfYXNzaWduX2VmZmVjdCcg
OiAnYml0d2lzZV9vcl9hc3NpZ25fcmVzdWx0JzsKKyAgICAgICAgdmFyIHhvck5hbWUgPSBpc05v
cm1hbE9wID8gJ2JpdHdpc2VfeG9yJyA6IGlzQXNzaWduRWZmID8gJ2JpdHdpc2VfeG9yX2Fzc2ln
bl9lZmZlY3QnIDogJ2JpdHdpc2VfeG9yX2Fzc2lnbl9yZXN1bHQnOworICAgICAgICB2YXIgbGVm
dFNoaWZ0TmFtZSA9IGlzTm9ybWFsT3AgPyAnbGVmdF9zaGlmdCcgOiBpc0Fzc2lnbkVmZiA/ICds
ZWZ0X3NoaWZ0X2Fzc2lnbl9lZmZlY3QnIDogJ2xlZnRfc2hpZnRfYXNzaWduX3Jlc3VsdCc7Cisg
ICAgICAgIHZhciByaWdodFNoaWZ0TmFtZSA9IGlzTm9ybWFsT3AgPyAncmlnaHRfc2hpZnQnIDog
aXNBc3NpZ25FZmYgPyAncmlnaHRfc2hpZnRfYXNzaWduX2VmZmVjdCcgOiAncmlnaHRfc2hpZnRf
YXNzaWduX3Jlc3VsdCc7CisgICAgICAgIHZhciBhZGRPcCA9IGlzTm9ybWFsT3AgPyAnKycgOiAn
Kz0nOworICAgICAgICB2YXIgc3ViT3AgPSBpc05vcm1hbE9wID8gJy0nIDogJy09JzsKKyAgICAg
ICAgdmFyIG11bE9wID0gaXNOb3JtYWxPcCA/ICcqJyA6ICcqPSc7CisgICAgICAgIHZhciBkaXZP
cCA9IGlzTm9ybWFsT3AgPyAnLycgOiAnLz0nOworICAgICAgICB2YXIgbW9kT3AgPSBpc05vcm1h
bE9wID8gJyUnIDogJyU9JzsKKyAgICAgICAgdmFyIGFuZE9wID0gaXNOb3JtYWxPcCA/ICcmJyA6
ICcmPSc7CisgICAgICAgIHZhciBvck9wID0gaXNOb3JtYWxPcCA/ICd8JyA6ICd8PSc7CisgICAg
ICAgIHZhciB4b3JPcCA9IGlzTm9ybWFsT3AgPyAnXicgOiAnXj0nOworICAgICAgICB2YXIgbGVm
dFNoaWZ0T3AgPSBpc05vcm1hbE9wID8gJzw8JyA6ICc8PD0nOworICAgICAgICB2YXIgcmlnaHRT
aGlmdE9wID0gaXNOb3JtYWxPcCA/ICc+PicgOiAnPj49JzsKKworICAgICAgICBvcCA9IGlzQXNz
aWduRWZmID8gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYnVpbHRpblNpZGVFZmZPcGVySW5mbyA6
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJ1aWx0aW5PcGVySW5mbzsKKworICAgICAgICBiaW5h
cnkgPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgnYmluYXJ5
X29wZXJhdG9yJywgJ0JpbmFyeSBvcGVyYXRvciB0ZXN0cycpOworICAgICAgICBmdW5jSW5mb0dy
b3Vwcy5wdXNoKGJpbmFyeSk7CisKKyAgICAgICAgLy8gVGhlIGFkZCBvcGVyYXRvci4KKworICAg
ICAgICBiaW5hcnkucHVzaChvcChhZGROYW1lLCBhZGRPcCwgR1QsIFt2KEdULCAtMS4wLCAxLjAp
LCB2KEdULCAtMS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgICAgICBhbGwsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhhZGQpKSk7CisgICAgICAg
IGJpbmFyeS5wdXNoKG9wKGFkZE5hbWUsIGFkZE9wLCBJR1QsIFt2KElHVCwgLTQuMCwgNi4wKSwg
dihJR1QsIC02LjAsIDUuMCldLCBmKDAuMSksIGYoMC41KSwKKyAgICAgICAgICAgIG1lZGl1bXAs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhhZGQsIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGFkZE5hbWUsIGFkZE9wLCBJR1QsIFt2KElH
VCwgLTJlOSwgMmU5KSwgdihJR1QsIC0yZTksIDJlOSldLCBmKDRlLTEwKSwgZigwLjUpLAorICAg
ICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5j
cyhhZGQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGFkZE5hbWUsIGFk
ZE9wLCBVR1QsIFt2KFVHVCwgMC4wLCAxZTIpLCB2KFVHVCwgMC4wLCAxZTIpXSwgZig1ZS0zKSwg
ZigwLjApLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmlu
YXJ5R2VuVHlwZUZ1bmNzKGFkZCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICBiaW5hcnkucHVz
aChvcChhZGROYW1lLCBhZGRPcCwgVUdULCBbdihVR1QsIDAuMCwgNGU5KSwgdihVR1QsIDAuMCwg
NGU5KV0sIGYoMmUtMTApLCBmKDAuMCksCisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9w
ZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKGFkZCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworCisg
ICAgICAgIGJpbmFyeS5wdXNoKG9wKGFkZE5hbWUsIGFkZE9wLCBGViwgW3YoRlYsIC0xLjAsIDEu
MCksIHYoRiwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICAgICAgYWxsLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguYWRkU2Nh
bGFyKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChhZGROYW1lLCBhZGRPcCwgSVYsIFt2KElW
LCAtNC4wLCA2LjApLCB2KEksIC02LjAsIDUuMCldLCBmKDAuMSksIGYoMC41KSwKKyAgICAgICAg
ICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNz
KGRlTWF0aC5hZGRTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9w
KGFkZE5hbWUsIGFkZE9wLCBJViwgW3YoSVYsIC0yZTksIDJlOSksIHYoSSwgLTJlOSwgMmU5KV0s
IGYoNGUtMTApLCBmKDAuNSksCisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVNYXRoLmFkZFNjYWxhciwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkp
KTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoYWRkTmFtZSwgYWRkT3AsIFVWLCBbdihVViwgMC4w
LCAxZTIpLCB2KFUsIDAuMCwgMWUyKV0sIGYoNWUtMyksIGYoMC4wKSwKKyAgICAgICAgICAgIG1l
ZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0
aC5hZGRTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoYWRk
TmFtZSwgYWRkT3AsIFVWLCBbdihVViwgMC4wLCA0ZTkpLCB2KFUsIDAuMCwgNGU5KV0sIGYoMmUt
MTApLCBmKDAuMCksCisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVNYXRoLmFkZFNjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOwor
CisgICAgICAgIGlmIChpc05vcm1hbE9wKSB7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChh
ZGROYW1lLCBhZGRPcCwgRlYsIFt2KEYsIC0xLjAsIDEuMCksIHYoRlYsIC0xLjAsIDEuMCldLCBm
KDEuMCksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKGFkZFNjYWxhclZlYykpKTsKKyAgICAgICAgICAgIGJp
bmFyeS5wdXNoKG9wKGFkZE5hbWUsIGFkZE9wLCBJViwgW3YoSSwgLTQuMCwgNi4wKSwgdihJViwg
LTYuMCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLAorICAgICAgICAgICAgICAgIG1lZGl1bXAsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKGFkZFNjYWxhclZlYywg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChhZGROYW1lLCBh
ZGRPcCwgSVYsIFt2KEksIC0yZTksIDJlOSksIHYoSVYsIC0yZTksIDJlOSldLCBmKDRlLTEwKSwg
ZigwLjUpLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5i
aW5hcnlTY2FsYXJWZWNGdW5jcyhhZGRTY2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAg
ICAgICAgICAgYmluYXJ5LnB1c2gob3AoYWRkTmFtZSwgYWRkT3AsIFVWLCBbdihVLCAwLjAsIDFl
MiksIHYoVVYsIDAuMCwgMWUyKV0sIGYoNWUtMyksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBt
ZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhhZGRT
Y2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChv
cChhZGROYW1lLCBhZGRPcCwgVVYsIFt2KFUsIDAuMCwgNGU5KSwgdihVViwgMC4wLCA0ZTkpXSwg
ZigyZS0xMCksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MoYWRkU2NhbGFyVmVjLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIHN1YnRyYWN0IG9wZXJhdG9yLgor
CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKHN1Yk5hbWUsIHN1Yk9wLCBHVCwgW3YoR1QsIC0xLjAs
IDEuMCksIHYoR1QsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgICAgIGFs
bCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKHN1YikpKTsKKyAg
ICAgICAgYmluYXJ5LnB1c2gob3Aoc3ViTmFtZSwgc3ViT3AsIElHVCwgW3YoSUdULCAtNC4wLCA2
LjApLCB2KElHVCwgLTYuMCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLAorICAgICAgICAgICAgbWVk
aXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKHN1YiwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3Aoc3ViTmFtZSwgc3ViT3AsIElHVCwg
W3YoSUdULCAtMmU5LCAyZTkpLCB2KElHVCwgLTJlOSwgMmU5KV0sIGYoNGUtMTApLCBmKDAuNSks
CisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlw
ZUZ1bmNzKHN1YiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3Aoc3ViTmFt
ZSwgc3ViT3AsIFVHVCwgW3YoVUdULCAxZTIsIDJlMiksIHYoVUdULCAwLjAsIDFlMildLCBmKDVl
LTMpLCBmKDAuMCksCisgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlHZW5UeXBlRnVuY3Moc3ViLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgIGJpbmFy
eS5wdXNoKG9wKHN1Yk5hbWUsIHN1Yk9wLCBVR1QsIFt2KFVHVCwgLjVlOSwgMy43ZTkpLCB2KFVH
VCwgMC4wLCAzLjllOSldLCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhzdWIsIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3Aoc3ViTmFtZSwgc3ViT3AsIEZWLCBbdihGViwg
LTEuMCwgMS4wKSwgdihGLCAtMS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgICAg
ICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0
aC5zdWJTY2FsYXIpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKHN1Yk5hbWUsIHN1Yk9wLCBJ
ViwgW3YoSVYsIC00LjAsIDYuMCksIHYoSSwgLTYuMCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLAor
ICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2Nh
bGFyRnVuY3MoZGVNYXRoLnN1YlNjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAgYmluYXJ5
LnB1c2gob3Aoc3ViTmFtZSwgc3ViT3AsIElWLCBbdihJViwgLTJlOSwgMmU5KSwgdihJLCAtMmU5
LCAyZTkpXSwgZig0ZS0xMCksIGYoMC41KSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc3ViU2NhbGFyLCBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChzdWJOYW1lLCBzdWJPcCwgVVYsIFt2
KFVWLCAxZTIsIDJlMiksIHYoVSwgMC4wLCAxZTIpXSwgZig1ZS0zKSwgZigwLjApLAorICAgICAg
ICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVu
Y3MoZGVNYXRoLnN1YlNjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICBiaW5hcnkucHVz
aChvcChzdWJOYW1lLCBzdWJPcCwgVVYsIFt2KFVWLCAwLjAsIDRlOSksIHYoVSwgMC4wLCA0ZTkp
XSwgZigyZS0xMCksIGYoMC4wKSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc3ViU2NhbGFyLCBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQpKSk7CisKKyAgICAgICAgaWYgKGlzTm9ybWFsT3ApIHsKKyAgICAgICAgICAgIGJpbmFyeS5w
dXNoKG9wKHN1Yk5hbWUsIHN1Yk9wLCBGViwgW3YoRiwgLTEuMCwgMS4wKSwgdihGViwgLTEuMCwg
MS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGFsbCwgZXMzZlNoYWRlck9w
ZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3Moc3ViU2NhbGFyVmVjKSkpOworICAgICAg
ICAgICAgYmluYXJ5LnB1c2gob3Aoc3ViTmFtZSwgc3ViT3AsIElWLCBbdihJLCAtNC4wLCA2LjAp
LCB2KElWLCAtNi4wLCA1LjApXSwgZigwLjEpLCBmKDAuNSksCisgICAgICAgICAgICAgICAgbWVk
aXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3Moc3ViU2Nh
bGFyVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAgICAgIGJpbmFyeS5wdXNoKG9wKHN1
Yk5hbWUsIHN1Yk9wLCBJViwgW3YoSSwgLTJlOSwgMmU5KSwgdihJViwgLTJlOSwgMmU5KV0sIGYo
NGUtMTApLCBmKDAuNSksCisgICAgICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKHN1YlNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQp
KSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChzdWJOYW1lLCBzdWJPcCwgVVYsIFt2KFUs
IDFlMiwgMmUyKSwgdihVViwgMC4wLCAxZTIpXSwgZig1ZS0zKSwgZigwLjApLAorICAgICAgICAg
ICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1
bmNzKHN1YlNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgICAgIGJpbmFy
eS5wdXNoKG9wKHN1Yk5hbWUsIHN1Yk9wLCBVViwgW3YoVSwgMC4wLCA0ZTkpLCB2KFVWLCAwLjAs
IDRlOSldLCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhzdWJTY2FsYXJWZWMsIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlQpKSk7CisgICAgICAgIH0KKworICAgICAgICBiaW5hcnkgPSBuZXcgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgnYmluYXJ5X29wZXJhdG9yJywgJ0Jp
bmFyeSBvcGVyYXRvciB0ZXN0cycpOworICAgICAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKGJpbmFy
eSk7CisKKyAgICAgICAgLy8gVGhlIG11bHRpcGx5IG9wZXJhdG9yLgorCisgICAgICAgIGJpbmFy
eS5wdXNoKG9wKG11bE5hbWUsIG11bE9wLCBHVCwgW3YoR1QsIC0xLjAsIDEuMCksIHYoR1QsIC0x
LjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgICAgIGFsbCwgZXMzZlNoYWRlck9w
ZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKG11bCkpKTsKKyAgICAgICAgYmluYXJ5LnB1
c2gob3AobXVsTmFtZSwgbXVsT3AsIElHVCwgW3YoSUdULCAtNC4wLCA2LjApLCB2KElHVCwgLTYu
MCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKG11bCwgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAg
ICAgICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIElHVCwgW3YoSUdULCAtM2U1LCAz
ZTUpLCB2KElHVCwgLTNlNCwgM2U0KV0sIGYoNGUtMTApLCBmKDAuNSksCisgICAgICAgICAgICBo
aWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKG11bCwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIFVHVCwg
W3YoVUdULCAwLjAsIDE2LjApLCB2KFVHVCwgMC4wLCAxNi4wKV0sIGYoNGUtMyksIGYoMC4wKSwK
KyAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5
cGVGdW5jcyhtdWwsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AobXVs
TmFtZSwgbXVsT3AsIFVHVCwgW3YoVUdULCAwLjAsIDZlNSksIHYoVUdULCAwLjAsIDZlNCldLCBm
KDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmJpbmFyeUdlblR5cGVGdW5jcyhtdWwsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmlu
YXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIEZWLCBbdihGViwgLTEuMCwgMS4wKSwgdihGLCAt
MS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgICAgICBhbGwsIGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5zY2FsZSkpKTsKKyAgICAg
ICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIElWLCBbdihJViwgLTQuMCwgNi4wKSwg
dihJLCAtNi4wLCA1LjApXSwgZigwLjEpLCBmKDAuNSksCisgICAgICAgICAgICBtZWRpdW1wLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2NhbGUs
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKG11bE5hbWUsIG11bE9wLCBJ
ViwgW3YoSVYsIC0zZTUsIDNlNSksIHYoSSwgLTNlNCwgM2U0KV0sIGYoNGUtMTApLCBmKDAuNSks
CisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2Nh
bGFyRnVuY3MoZGVNYXRoLnNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVz
aChvcChtdWxOYW1lLCBtdWxPcCwgVVYsIFt2KFVWLCAwLjAsIDE2LjApLCB2KFUsIDAuMCwgMTYu
MCldLCBmKDRlLTMpLCBmKDAuMCksCisgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2NhbGUsIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIFVWLCBbdihVViwg
MC4wLCA2ZTUpLCB2KFUsIDAuMCwgNmU0KV0sIGYoMmUtMTApLCBmKDAuMCksCisgICAgICAgICAg
ICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVN
YXRoLnNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisKKyAgICAgICAgaWYgKGlzTm9ybWFsT3ApIHsK
KyAgICAgICAgICAgIGJpbmFyeS5wdXNoKG9wKG11bE5hbWUsIG11bE9wLCBGViwgW3YoRiwgLTEu
MCwgMS4wKSwgdihGViwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICAgICAg
ICAgIGFsbCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MobXVs
U2NhbGFyVmVjKSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3As
IElWLCBbdihJLCAtNC4wLCA2LjApLCB2KElWLCAtNi4wLCA1LjApXSwgZigwLjEpLCBmKDAuNSks
CisgICAgICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5
U2NhbGFyVmVjRnVuY3MobXVsU2NhbGFyVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwK
KyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAg
ICAgIGJpbmFyeS5wdXNoKG9wKG11bE5hbWUsIG11bE9wLCBJViwgW3YoSSwgLTNlNSwgM2U1KSwg
dihJViwgLTNlNCwgM2U0KV0sIGYoNGUtMTApLCBmKDAuNSksCisgICAgICAgICAgICAgICAgaGln
aHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKG11bFNjYWxh
clZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChtdWxO
YW1lLCBtdWxPcCwgVVYsIFt2KFUsIDAuMCwgMTYuMCksIHYoVVYsIDAuMCwgMTYuMCldLCBmKDRl
LTMpLCBmKDAuMCksCisgICAgICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MobXVsU2NhbGFyVmVjLCBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5U
KSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3AobXVsTmFtZSwgbXVsT3AsIFVWLCBbdihV
LCAwLjAsIDZlNSksIHYoVVYsIDAuMCwgNmU0KV0sIGYoMmUtMTApLCBmKDAuMCksCisgICAgICAg
ICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1
bmNzKG11bFNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRoZSBkaXZpZGUgb3BlcmF0b3IuCisKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoZGl2
TmFtZSwgZGl2T3AsIEdULCBbdihHVCwgLTEuMCwgMS4wKSwgdihHVCwgLTIuMCwgLTAuNSldLCBm
KDEuMCksIGYoMC4wKSwKKyAgICAgICAgICAgIGFsbCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5R2VuVHlwZUZ1bmNzKGRpdikpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoZGl2TmFt
ZSwgZGl2T3AsIElHVCwgW3YoSUdULCAyNC4wLCAyNC4wKSwgdihJR1QsIC00LjAsIC0xLjApXSwg
ZigwLjA0KSwgZigxLjApLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKGRpdiwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQs
CisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAgYmlu
YXJ5LnB1c2gob3AoZGl2TmFtZSwgZGl2T3AsIElHVCwgW3YoSUdULCA0MDMyMC4wLCA0MDMyMC4w
KSwgdihJR1QsIC04LjAsIC0xLjApXSwgZigxZS01KSwgZigwLjUpLAorICAgICAgICAgICAgaGln
aHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkaXYsIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGRpdk5hbWUsIGRpdk9wLCBVR1QsIFt2
KFVHVCwgMC4wLCAyNC4wKSwgdihVR1QsIDEuMCwgNC4wKV0sIGYoMC4wNCksIGYoMC4wKSwKKyAg
ICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVG
dW5jcyhkaXYsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoZGl2TmFt
ZSwgZGl2T3AsIFVHVCwgW3YoVUdULCAwLjAsIDQwMzIwLjApLCB2KFVHVCwgMS4wLCA4LjApXSwg
ZigxZS01KSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkaXYsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmlu
YXJ5LnB1c2gob3AoZGl2TmFtZSwgZGl2T3AsIEZWLCBbdihGViwgLTEuMCwgMS4wKSwgdihGLCAt
Mi4wLCAtMC41KV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICAgICAgYWxsLCBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguZGl2aWRlU2NhbGUpKSk7
CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGRpdk5hbWUsIGRpdk9wLCBJViwgW3YoSVYsIDI0LjAs
IDI0LjApLCB2KEksIC00LjAsIC0xLjApXSwgZigwLjA0KSwgZigxLjApLAorICAgICAgICAgICAg
bWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVN
YXRoLmRpdmlkZVNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChk
aXZOYW1lLCBkaXZPcCwgSVYsIFt2KElWLCA0MDMyMC4wLCA0MDMyMC4wKSwgdihJLCAtOC4wLCAt
MS4wKV0sIGYoMWUtNSksIGYoMC41KSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguZGl2aWRlU2NhbGUsIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGRpdk5hbWUsIGRpdk9wLCBVViwgW3Yo
VVYsIDAuMCwgMjQuMCksIHYoVSwgMS4wLCA0LjApXSwgZigwLjA0KSwgZigwLjApLAorICAgICAg
ICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVu
Y3MoZGVNYXRoLmRpdmlkZVNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgIGJpbmFyeS5w
dXNoKG9wKGRpdk5hbWUsIGRpdk9wLCBVViwgW3YoVVYsIDAuMCwgNDAzMjAuMCksIHYoVSwgMS4w
LCA4LjApXSwgZigxZS01KSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5kaXZpZGVTY2FsZSwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5UKSkpOworCisgICAgICAgIGlmIChpc05vcm1hbE9wKSB7CisgICAgICAgICAgICBi
aW5hcnkucHVzaChvcChkaXZOYW1lLCBkaXZPcCwgRlYsIFt2KEYsIC0xLjAsIDEuMCksIHYoRlYs
IC0yLjAsIC0wLjUpXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgICAgICAgICAgYWxsLCBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhkaXZTY2FsYXJWZWMpKSk7
CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChkaXZOYW1lLCBkaXZPcCwgSVYsIFt2KEksIDI0
LjAsIDI0LjApLCB2KElWLCAtNC4wLCAtMS4wKV0sIGYoMC4wNCksIGYoMS4wKSwKKyAgICAgICAg
ICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNG
dW5jcyhkaXZTY2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICAgICAgYmluYXJ5
LnB1c2gob3AoZGl2TmFtZSwgZGl2T3AsIElWLCBbdihJLCA0MDMyMC4wLCA0MDMyMC4wKSwgdihJ
ViwgLTguMCwgLTEuMCldLCBmKDFlLTUpLCBmKDAuNSksCisgICAgICAgICAgICAgICAgaGlnaHAs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKGRpdlNjYWxhclZl
YywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChkaXZOYW1l
LCBkaXZPcCwgVVYsIFt2KFUsIDAuMCwgMjQuMCksIHYoVVYsIDEuMCwgNC4wKV0sIGYoMC4wNCks
IGYoMC4wKSwKKyAgICAgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhkaXZTY2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7
CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChkaXZOYW1lLCBkaXZPcCwgVVYsIFt2KFUsIDAu
MCwgNDAzMjAuMCksIHYoVVYsIDEuMCwgOC4wKV0sIGYoMWUtNSksIGYoMC4wKSwKKyAgICAgICAg
ICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVu
Y3MoZGl2U2NhbGFyVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisKKyAgICAg
ICAgYmluYXJ5ID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAo
J2JpbmFyeV9vcGVyYXRvcicsICdCaW5hcnkgb3BlcmF0b3IgdGVzdHMnKTsKKyAgICAgICAgZnVu
Y0luZm9Hcm91cHMucHVzaChiaW5hcnkpOworCisgICAgICAgIC8vIFRoZSBtb2R1bHVzIG9wZXJh
dG9yLgorCisgICAgICAgIGJpbmFyeS5wdXNoKG9wKG1vZE5hbWUsIG1vZE9wLCBJR1QsIFt2KElH
VCwgMC4wLCA2LjApLCB2KElHVCwgMS4xLCA2LjEpXSwgZigwLjI1KSwgZigwLjUpLAorICAgICAg
ICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNz
KGRlTWF0aC5tb2QsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKG1vZE5h
bWUsIG1vZE9wLCBJR1QsIFt2KElHVCwgMC4wLCAxNC4wKSwgdihJR1QsIDEuMSwgMTEuMSldLCBm
KDAuMSksIGYoMC41KSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLm1vZCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAg
YmluYXJ5LnB1c2gob3AobW9kTmFtZSwgbW9kT3AsIFVHVCwgW3YoVUdULCAwLjAsIDYuMCksIHYo
VUdULCAxLjEsIDYuMSldLCBmKDAuMjUpLCBmKDAuMCksCisgICAgICAgICAgICBtZWRpdW1wLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLm1vZCwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AobW9kTmFtZSwgbW9kT3AsIFVHVCwg
W3YoVUdULCAwLjAsIDI0LjApLCB2KFVHVCwgMS4xLCAxMS4xKV0sIGYoMC4xKSwgZigwLjApLAor
ICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVG
dW5jcyhkZU1hdGgubW9kLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9w
KG1vZE5hbWUsIG1vZE9wLCBJViwgW3YoSVYsIDAuMCwgNi4wKSwgdihJLCAxLjEsIDYuMSldLCBm
KDAuMjUpLCBmKDAuNSksCisgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGgubW9kU2NhbGUsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7
CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKG1vZE5hbWUsIG1vZE9wLCBJViwgW3YoSVYsIDAuMCwg
Ni4wKSwgdihJLCAxLjEsIDExLjEpXSwgZigwLjEpLCBmKDAuNSksCisgICAgICAgICAgICBoaWdo
cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVNYXRoLm1v
ZFNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChtb2ROYW1lLCBt
b2RPcCwgVVYsIFt2KFVWLCAwLjAsIDYuMCksIHYoVSwgMS4xLCA2LjEpXSwgZigwLjI1KSwgZigw
LjApLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5
VmVjU2NhbGFyRnVuY3MoZGVNYXRoLm1vZFNjYWxlLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAg
IGJpbmFyeS5wdXNoKG9wKG1vZE5hbWUsIG1vZE9wLCBVViwgW3YoVVYsIDAuMCwgMjQuMCksIHYo
VSwgMS4xLCAxMS4xKV0sIGYoMC4xKSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5tb2RTY2FsZSwg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5UKSkpOworCisgICAgICAgIGlmIChpc05vcm1hbE9wKSB7CisgICAgICAgICAg
ICBiaW5hcnkucHVzaChvcChtb2ROYW1lLCBtb2RPcCwgSVYsIFt2KEksIDAuMCwgNi4wKSwgdihJ
ViwgMS4xLCA2LjEpXSwgZigwLjI1KSwgZigwLjUpLAorICAgICAgICAgICAgICAgIG1lZGl1bXAs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKG1vZFNjYWxhclZl
YywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChtb2ROYW1l
LCBtb2RPcCwgSVYsIFt2KEksIDAuMCwgNi4wKSwgdihJViwgMS4xLCAxMS4xKV0sIGYoMC4xKSwg
ZigwLjUpLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5i
aW5hcnlTY2FsYXJWZWNGdW5jcyhtb2RTY2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAg
ICAgICAgICAgYmluYXJ5LnB1c2gob3AobW9kTmFtZSwgbW9kT3AsIFVWLCBbdihVLCAwLjAsIDYu
MCksIHYoVVYsIDEuMSwgNi4xKV0sIGYoMC4yNSksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBt
ZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhtb2RT
Y2FsYXJWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChv
cChtb2ROYW1lLCBtb2RPcCwgVVYsIFt2KFUsIDAuMCwgMjQuMCksIHYoVVYsIDEuMSwgMTEuMSld
LCBmKDAuMSksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MobW9kU2NhbGFyVmVjLCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGJpdHdpc2UgYW5kIG9wZXJhdG9y
LgorCisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGFuZE5hbWUsIGFuZE9wLCBJR1QsIFt2KElHVCwg
LTE2LjAsIDE2LjApLCB2KElHVCwgLTE2LjAsIDE2LjApXSwgZigwLjAzKSwgZigwLjUpLAorICAg
ICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1
bmNzKGRlTWF0aC5iaW5hcnlBbmQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNo
KG9wKGFuZE5hbWUsIGFuZE9wLCBJR1QsIFt2KElHVCwgLTJlOSwgMmU5KSwgdihJR1QsIC0yZTks
IDJlOSldLCBmKDRlLTEwKSwgZigwLjUpLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmluYXJ5QW5kLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChhbmROYW1lLCBhbmRPcCwgVUdULCBbdihV
R1QsIDAuMCwgMzIuMCksIHYoVUdULCAwLjAsIDMyLjApXSwgZigwLjAzKSwgZigwLjApLAorICAg
ICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1
bmNzKGRlTWF0aC5iaW5hcnlBbmQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1
c2gob3AoYW5kTmFtZSwgYW5kT3AsIFVHVCwgW3YoVUdULCAwLjAsIDRlOSksIHYoVUdULCAwLjAs
IDRlOSldLCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmluYXJ5QW5kLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LlVJTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGFuZE5hbWUsIGFuZE9wLCBJViwgW3Yo
SVYsIC0xNi4wLCAxNi4wKSwgdihJLCAtMTYuMCwgMTYuMCldLCBmKDAuMDMpLCBmKDAuNSksCisg
ICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2Fs
YXJGdW5jcyhkZU1hdGguYmluYXJ5QW5kVmVjU2NhbGFyLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAg
ICBiaW5hcnkucHVzaChvcChhbmROYW1lLCBhbmRPcCwgSVYsIFt2KElWLCAtMmU5LCAyZTkpLCB2
KEksIC0yZTksIDJlOSldLCBmKDRlLTEwKSwgZigwLjUpLAorICAgICAgICAgICAgaGlnaHAsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5iaW5hcnlB
bmRWZWNTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKGFuZE5h
bWUsIGFuZE9wLCBVViwgW3YoVVYsIDAuMCwgMzIuMCksIHYoVSwgMC4wLCAzMi4wKV0sIGYoMC4w
MyksIGYoMC4wKSwKKyAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5iaW5hcnlBbmRWZWNTY2FsYXIsIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoYW5kTmFtZSwgYW5kT3AsIFVWLCBbdihV
ViwgMC4wLCA0ZTkpLCB2KFUsIDAuMCwgNGU5KV0sIGYoMmUtMTApLCBmKDAuMCksCisgICAgICAg
ICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3Mo
ZGVNYXRoLmJpbmFyeUFuZFZlY1NjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAor
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworCisgICAgICAgIGlm
IChpc05vcm1hbE9wKSB7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChhbmROYW1lLCBhbmRP
cCwgSVYsIFt2KEksIC0xNi4wLCAxNi4wKSwgdihJViwgLTE2LjAsIDE2LjApXSwgZigwLjAzKSwg
ZigwLjUpLAorICAgICAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LmJpbmFyeVNjYWxhclZlY0Z1bmNzKGJpdHdpc2VBbmRTY2FsYXJWZWMsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
KSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3AoYW5kTmFtZSwgYW5kT3AsIElWLCBbdihJ
LCAtMmU5LCAyZTkpLCB2KElWLCAtMmU5LCAyZTkpXSwgZig0ZS0xMCksIGYoMC41KSwKKyAgICAg
ICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVj
RnVuY3MoYml0d2lzZUFuZFNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisg
ICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgICAg
ICBiaW5hcnkucHVzaChvcChhbmROYW1lLCBhbmRPcCwgVVYsIFt2KFUsIDAuMCwgMzIuMCksIHYo
VVYsIDAuMCwgMzIuMCldLCBmKDAuMDMpLCBmKDAuMCksCisgICAgICAgICAgICAgICAgbWVkaXVt
cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MoYml0d2lzZUFu
ZFNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgICAgIGJpbmFyeS5wdXNo
KG9wKGFuZE5hbWUsIGFuZE9wLCBVViwgW3YoVSwgMC4wLCA0ZTkpLCB2KFVWLCAwLjAsIDRlOSld
LCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhiaXR3aXNlQW5kU2NhbGFyVmVjLCBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgYmluYXJ5ID0gbmV3IGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoJ2JpbmFyeV9vcGVyYXRvcicsICdC
aW5hcnkgb3BlcmF0b3IgdGVzdHMnKTsKKyAgICAgICAgZnVuY0luZm9Hcm91cHMucHVzaChiaW5h
cnkpOworCisgICAgICAgIC8vIFRoZSBiaXR3aXNlIG9yIG9wZXJhdG9yLgorCisgICAgICAgIGJp
bmFyeS5wdXNoKG9wKG9yTmFtZSwgb3JPcCwgSUdULCBbdihJR1QsIC0xNi4wLCAxNi4wKSwgdihJ
R1QsIC0xNi4wLCAxNi4wKV0sIGYoMC4wMyksIGYoMC41KSwKKyAgICAgICAgICAgIG1lZGl1bXAs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmluYXJ5
T3IsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKG9yTmFtZSwgb3JPcCwg
SUdULCBbdihJR1QsIC0yZTksIDJlOSksIHYoSUdULCAtMmU5LCAyZTkpXSwgZig0ZS0xMCksIGYo
MC41KSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlH
ZW5UeXBlRnVuY3MoZGVNYXRoLmJpbmFyeU9yLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5h
cnkucHVzaChvcChvck5hbWUsIG9yT3AsIFVHVCwgW3YoVUdULCAwLjAsIDMyLjApLCB2KFVHVCwg
MC4wLCAzMi4wKV0sIGYoMC4wMyksIGYoMC4wKSwKKyAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmluYXJ5T3IsIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3Aob3JOYW1lLCBvck9wLCBVR1Qs
IFt2KFVHVCwgMC4wLCA0ZTkpLCB2KFVHVCwgMC4wLCA0ZTkpXSwgZigyZS0xMCksIGYoMC4wKSwK
KyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBl
RnVuY3MoZGVNYXRoLmJpbmFyeU9yLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgIGJpbmFyeS5w
dXNoKG9wKG9yTmFtZSwgb3JPcCwgSVYsIFt2KElWLCAtMTYuMCwgMTYuMCksIHYoSSwgLTE2LjAs
IDE2LjApXSwgZigwLjAzKSwgZigwLjUpLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVNYXRoLmJpbmFyeU9yVmVjU2Nh
bGFyLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcChvck5hbWUsIG9yT3As
IElWLCBbdihJViwgLTJlOSwgMmU5KSwgdihJLCAtMmU5LCAyZTkpXSwgZig0ZS0xMCksIGYoMC41
KSwKKyAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNT
Y2FsYXJGdW5jcyhkZU1hdGguYmluYXJ5T3JWZWNTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAg
ICAgIGJpbmFyeS5wdXNoKG9wKG9yTmFtZSwgb3JPcCwgVVYsIFt2KFVWLCAwLjAsIDMyLjApLCB2
KFUsIDAuMCwgMzIuMCldLCBmKDAuMDMpLCBmKDAuMCksCisgICAgICAgICAgICBtZWRpdW1wLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguYmluYXJ5
T3JWZWNTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3Aob3JO
YW1lLCBvck9wLCBVViwgW3YoVVYsIDAuMCwgNGU5KSwgdihVLCAwLjAsIDRlOSldLCBmKDJlLTEw
KSwgZigwLjApLAorICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJp
bmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5iaW5hcnlPclZlY1NjYWxhciwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5U
KSkpOworCisgICAgICAgIGlmIChpc05vcm1hbE9wKSB7CisgICAgICAgICAgICBiaW5hcnkucHVz
aChvcChvck5hbWUsIG9yT3AsIElWLCBbdihJLCAtMTYuMCwgMTYuMCksIHYoSVYsIC0xNi4wLCAx
Ni4wKV0sIGYoMC4wMyksIGYoMC41KSwKKyAgICAgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhiaXR3aXNlT3JTY2FsYXJWZWMs
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3Aob3JOYW1lLCBv
ck9wLCBJViwgW3YoSSwgLTJlOSwgMmU5KSwgdihJViwgLTJlOSwgMmU5KV0sIGYoNGUtMTApLCBm
KDAuNSksCisgICAgICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJp
bmFyeVNjYWxhclZlY0Z1bmNzKGJpdHdpc2VPclNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7
CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChvck5hbWUsIG9yT3AsIFVWLCBbdihVLCAwLjAs
IDMyLjApLCB2KFVWLCAwLjAsIDMyLjApXSwgZigwLjAzKSwgZigwLjApLAorICAgICAgICAgICAg
ICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNz
KGJpdHdpc2VPclNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgICAgIGJp
bmFyeS5wdXNoKG9wKG9yTmFtZSwgb3JPcCwgVVYsIFt2KFUsIDAuMCwgNGU5KSwgdihVViwgMC4w
LCA0ZTkpXSwgZigyZS0xMCksIGYoMC4wKSwKKyAgICAgICAgICAgICAgICBoaWdocCwgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVjRnVuY3MoYml0d2lzZU9yU2NhbGFyVmVj
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGJpdHdp
c2UgeG9yIG9wZXJhdG9yLgorCisgICAgICAgIGJpbmFyeS5wdXNoKG9wKHhvck5hbWUsIHhvck9w
LCBJR1QsIFt2KElHVCwgLTE2LjAsIDE2LjApLCB2KElHVCwgLTE2LjAsIDE2LjApXSwgZigwLjAz
KSwgZigwLjUpLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5R2VuVHlwZUZ1bmNzKGRlTWF0aC5iaW5hcnlYb3IsIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAg
ICAgIGJpbmFyeS5wdXNoKG9wKHhvck5hbWUsIHhvck9wLCBJR1QsIFt2KElHVCwgLTJlOSwgMmU5
KSwgdihJR1QsIC0yZTksIDJlOSldLCBmKDRlLTEwKSwgZigwLjUpLAorICAgICAgICAgICAgaGln
aHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmlu
YXJ5WG9yLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcCh4b3JOYW1lLCB4
b3JPcCwgVUdULCBbdihVR1QsIDAuMCwgMzIuMCksIHYoVUdULCAwLjAsIDMyLjApXSwgZigwLjAz
KSwgZigwLjApLAorICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5R2VuVHlwZUZ1bmNzKGRlTWF0aC5iaW5hcnlYb3IsIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAg
ICAgICAgYmluYXJ5LnB1c2gob3AoeG9yTmFtZSwgeG9yT3AsIFVHVCwgW3YoVUdULCAwLjAsIDRl
OSksIHYoVUdULCAwLjAsIDRlOSldLCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgaGln
aHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguYmlu
YXJ5WG9yLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgIGJpbmFyeS5wdXNoKG9wKHhvck5hbWUs
IHhvck9wLCBJViwgW3YoSVYsIC0xNi4wLCAxNi4wKSwgdihJLCAtMTYuMCwgMTYuMCldLCBmKDAu
MDMpLCBmKDAuNSksCisgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguYmluYXJ5WG9yVmVjU2NhbGFyLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UKSkpOworICAgICAgICBiaW5hcnkucHVzaChvcCh4b3JOYW1lLCB4b3JPcCwgSVYsIFt2KElW
LCAtMmU5LCAyZTkpLCB2KEksIC0yZTksIDJlOSldLCBmKDRlLTEwKSwgZigwLjUpLAorICAgICAg
ICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNz
KGRlTWF0aC5iaW5hcnlYb3JWZWNTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAor
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgICAgIGJpbmFy
eS5wdXNoKG9wKHhvck5hbWUsIHhvck9wLCBVViwgW3YoVVYsIDAuMCwgMzIuMCksIHYoVSwgMC4w
LCAzMi4wKV0sIGYoMC4wMyksIGYoMC4wKSwKKyAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5iaW5hcnlYb3JWZWNT
Y2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgYmluYXJ5LnB1c2gob3AoeG9yTmFtZSwg
eG9yT3AsIFVWLCBbdihVViwgMC4wLCA0ZTkpLCB2KFUsIDAuMCwgNGU5KV0sIGYoMmUtMTApLCBm
KDAuMCksCisgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5
VmVjU2NhbGFyRnVuY3MoZGVNYXRoLmJpbmFyeVhvclZlY1NjYWxhciwgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkp
OworCisgICAgICAgIGlmIChpc05vcm1hbE9wKSB7CisgICAgICAgICAgICBiaW5hcnkucHVzaChv
cCh4b3JOYW1lLCB4b3JPcCwgSVYsIFt2KEksIC0xNi4wLCAxNi4wKSwgdihJViwgLTE2LjAsIDE2
LjApXSwgZigwLjAzKSwgZigwLjUpLAorICAgICAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1bmNzKGJpdHdpc2VYb3JTY2FsYXJWZWMs
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3AoeG9yTmFtZSwg
eG9yT3AsIElWLCBbdihJLCAtMmU5LCAyZTkpLCB2KElWLCAtMmU5LCAyZTkpXSwgZig0ZS0xMCks
IGYoMC41KSwKKyAgICAgICAgICAgICAgICBoaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5U2NhbGFyVmVjRnVuY3MoYml0d2lzZVhvclNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQp
KSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcCh4b3JOYW1lLCB4b3JPcCwgVVYsIFt2KFUs
IDAuMCwgMzIuMCksIHYoVVYsIDAuMCwgMzIuMCldLCBmKDAuMDMpLCBmKDAuMCksCisgICAgICAg
ICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyVmVj
RnVuY3MoYml0d2lzZVhvclNjYWxhclZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAor
ICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAg
ICAgIGJpbmFyeS5wdXNoKG9wKHhvck5hbWUsIHhvck9wLCBVViwgW3YoVSwgMC4wLCA0ZTkpLCB2
KFVWLCAwLjAsIDRlOSldLCBmKDJlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGhpZ2hw
LCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJWZWNGdW5jcyhiaXR3aXNlWG9y
U2NhbGFyVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgYmlu
YXJ5ID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoJ2JpbmFy
eV9vcGVyYXRvcicsICdCaW5hcnkgb3BlcmF0b3IgdGVzdHMnKTsKKyAgICAgICAgZnVuY0luZm9H
cm91cHMucHVzaChiaW5hcnkpOworCisgICAgICAgIC8vIFRoZSBsZWZ0IHNoaWZ0IG9wZXJhdG9y
LiBTZWNvbmQgb3BlcmFuZCAoc2hpZnQgYW1vdW50KSBjYW4gYmUgZWl0aGVyIGludCBvciB1aW50
LCBldmVuIGZvciB1aW50IGFuZCBpbnQgZmlyc3Qgb3BlcmFuZCwgcmVzcGVjdGl2ZWx5LgorICAg
ICAgICBmb3IgKHZhciBpc1NpZ25lZEFtb3VudCA9IDA7IGlzU2lnbmVkQW1vdW50IDw9IDE7IGlz
U2lnbmVkQW1vdW50KyspIHsKKyAgICAgICAgICAgIHZhciBnVHlwZSA9IGlzU2lnbmVkQW1vdW50
ID09IDAgPyBVR1QgOiBJR1Q7CisgICAgICAgICAgICB2YXIgc1R5cGUgPSBpc1NpZ25lZEFtb3Vu
dCA9PSAwID8gVSA6IEk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChsZWZ0U2hpZnROYW1l
LCBsZWZ0U2hpZnRPcCwgSUdULCBbdihJR1QsIC03LjAsIDcuMCksIHYoZ1R5cGUsIDAuMCwgNC4w
KV0sIGYoNGUtMyksIGYoMC41KSwKKyAgICAgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLnNoaWZ0TGVmdCwgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChsZWZ0U2hpZnROYW1lLCBs
ZWZ0U2hpZnRPcCwgSUdULCBbdihJR1QsIC03LjAsIDcuMCksIHYoZ1R5cGUsIDAuMCwgMjcuMCld
LCBmKDVlLTEwKSwgZigwLjUpLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLnNoaWZ0TGVmdCwgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5JTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChsZWZ0U2hpZnROYW1lLCBsZWZ0
U2hpZnRPcCwgVUdULCBbdihVR1QsIDAuMCwgNy4wKSwgdihnVHlwZSwgMC4wLCA1LjApXSwgZig0
ZS0zKSwgZigwLjApLAorICAgICAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhkZU1hdGguc2hpZnRMZWZ0LCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5UKSkpOworICAgICAgICAgICAgYmluYXJ5LnB1c2gob3AobGVmdFNoaWZ0TmFtZSwgbGVmdFNo
aWZ0T3AsIFVHVCwgW3YoVUdULCAwLjAsIDcuMCksIHYoZ1R5cGUsIDAuMCwgMjguMCldLCBmKDVl
LTEwKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLnNoaWZ0TGVmdCwgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5ULAorICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCkpKTsKKyAgICAgICAgICAgIGJpbmFyeS5wdXNoKG9wKGxlZnRTaGlmdE5hbWUsIGxlZnRTaGlm
dE9wLCBJViwgW3YoSVYsIC03LjAsIDcuMCksIHYoc1R5cGUsIDAuMCwgNC4wKV0sIGYoNGUtMyks
IGYoMC41KSwKKyAgICAgICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2hpZnRMZWZ0VmVjU2NhbGFyLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVCkpKTsKKyAgICAgICAgICAgIGJpbmFyeS5wdXNoKG9wKGxlZnRTaGlmdE5hbWUsIGxl
ZnRTaGlmdE9wLCBJViwgW3YoSVYsIC03LjAsIDcuMCksIHYoc1R5cGUsIDAuMCwgMjcuMCldLCBm
KDVlLTEwKSwgZigwLjUpLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2hpZnRMZWZ0VmVjU2NhbGFyLCBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVCkpKTsKKyAgICAgICAgICAgIGJpbmFyeS5wdXNoKG9wKGxlZnRTaGlmdE5h
bWUsIGxlZnRTaGlmdE9wLCBVViwgW3YoVVYsIDAuMCwgNy4wKSwgdihzVHlwZSwgMC4wLCA1LjAp
XSwgZig0ZS0zKSwgZigwLjApLAorICAgICAgICAgICAgICAgIG1lZGl1bXAsIGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5zaGlmdExlZnRWZWNTY2Fs
YXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChsZWZ0
U2hpZnROYW1lLCBsZWZ0U2hpZnRPcCwgVVYsIFt2KFVWLCAwLjAsIDcuMCksIHYoc1R5cGUsIDAu
MCwgMjguMCldLCBmKDVlLTEwKSwgZigwLjApLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2hpZnRMZWZ0
VmVjU2NhbGFyLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VGhlIHJpZ2h0IHNoaWZ0IG9wZXJhdG9yLiBTZWNvbmQgb3BlcmFuZCAoc2hpZnQgYW1vdW50KSBj
YW4gYmUgZWl0aGVyIGludCBvciB1aW50LCBldmVuIGZvciB1aW50IGFuZCBpbnQgZmlyc3Qgb3Bl
cmFuZCwgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIGZvciAodmFyIGlzU2lnbmVkQW1vdW50ID0g
MDsgaXNTaWduZWRBbW91bnQgPD0gMTsgaXNTaWduZWRBbW91bnQrKykgeworICAgICAgICAgICAg
Z1R5cGUgPSBpc1NpZ25lZEFtb3VudCA9PSAwID8gVUdUIDogSUdUOworICAgICAgICAgICAgc1R5
cGUgPSBpc1NpZ25lZEFtb3VudCA9PSAwID8gVSA6IEk7CisgICAgICAgICAgICBiaW5hcnkucHVz
aChvcChyaWdodFNoaWZ0TmFtZSwgcmlnaHRTaGlmdE9wLCBJR1QsIFt2KElHVCwgLTEyNy4wLCAx
MjcuMCksIHYoZ1R5cGUsIDAuMCwgOC4wKV0sIGYoNGUtMyksIGYoMC41KSwKKyAgICAgICAgICAg
ICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3Mo
ZGVNYXRoLnNoaWZ0UmlnaHQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICAgICAgYmluYXJ5
LnB1c2gob3AocmlnaHRTaGlmdE5hbWUsIHJpZ2h0U2hpZnRPcCwgSUdULCBbdihJR1QsIC0yZTks
IDJlOSksIHYoZ1R5cGUsIDAuMCwgMzEuMCldLCBmKDVlLTEwKSwgZigwLjUpLAorICAgICAgICAg
ICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3Mo
ZGVNYXRoLnNoaWZ0UmlnaHQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgICAgICAgICAgYmluYXJ5
LnB1c2gob3AocmlnaHRTaGlmdE5hbWUsIHJpZ2h0U2hpZnRPcCwgVUdULCBbdihVR1QsIDAuMCwg
MjU1LjApLCB2KGdUeXBlLCAwLjAsIDguMCldLCBmKDRlLTMpLCBmKDAuMCksCisgICAgICAgICAg
ICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNz
KGRlTWF0aC5zaGlmdFJpZ2h0LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAg
ICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICAgICAgYmlu
YXJ5LnB1c2gob3AocmlnaHRTaGlmdE5hbWUsIHJpZ2h0U2hpZnRPcCwgVUdULCBbdihVR1QsIDAu
MCwgNGU5KSwgdihnVHlwZSwgMC4wLCAzMS4wKV0sIGYoNWUtMTApLCBmKDAuMCksCisgICAgICAg
ICAgICAgICAgaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5j
cyhkZU1hdGguc2hpZnRSaWdodCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICAgICAgICAgIGJp
bmFyeS5wdXNoKG9wKHJpZ2h0U2hpZnROYW1lLCByaWdodFNoaWZ0T3AsIElWLCBbdihJViwgLTEy
Ny4wLCAxMjcuMCksIHYoc1R5cGUsIDAuMCwgOC4wKV0sIGYoNGUtMyksIGYoMC41KSwKKyAgICAg
ICAgICAgICAgICBtZWRpdW1wLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2Fs
YXJGdW5jcyhkZU1hdGguc2hpZnRSaWdodFZlY1NjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7Cisg
ICAgICAgICAgICBiaW5hcnkucHVzaChvcChyaWdodFNoaWZ0TmFtZSwgcmlnaHRTaGlmdE9wLCBJ
ViwgW3YoSVYsIC0yZTksIDJlOSksIHYoc1R5cGUsIDAuMCwgMzEuMCldLCBmKDVlLTEwKSwgZigw
LjUpLAorICAgICAgICAgICAgICAgIGhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5h
cnlWZWNTY2FsYXJGdW5jcyhkZU1hdGguc2hpZnRSaWdodFZlY1NjYWxhciwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQsCisgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChyaWdodFNoaWZ0TmFtZSwgcmlnaHRT
aGlmdE9wLCBVViwgW3YoVVYsIDAuMCwgMjU1LjApLCB2KHNUeXBlLCAwLjAsIDguMCldLCBmKDRl
LTMpLCBmKDAuMCksCisgICAgICAgICAgICAgICAgbWVkaXVtcCwgZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MoZGVNYXRoLnNoaWZ0UmlnaHRWZWNTY2FsYXIsIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlVJTlQpKSk7CisgICAgICAgICAgICBiaW5hcnkucHVzaChvcChyaWdodFNoaWZ0
TmFtZSwgcmlnaHRTaGlmdE9wLCBVViwgW3YoVVYsIDAuMCwgNGU5KSwgdihzVHlwZSwgMC4wLCAz
MS4wKV0sIGYoNWUtMTApLCBmKDAuMCksCisgICAgICAgICAgICAgICAgaGlnaHAsIGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKGRlTWF0aC5zaGlmdFJpZ2h0VmVj
U2NhbGFyLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgICAgICAgICAgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
UmVzdCBvZiBiaW5hcnkgb3BlcmF0b3JzLgorICAgIC8vIFNjYWxhciByZWxhdGlvbmFsIG9wZXJh
dG9ycy4KKyAgICBiaW5hcnkgPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1
bmNHcm91cCgnYmluYXJ5X29wZXJhdG9yJywgJ0JpbmFyeSBvcGVyYXRvciB0ZXN0cycpOworICAg
IGZ1bmNJbmZvR3JvdXBzLnB1c2goYmluYXJ5KTsKKworICAgIGJpbmFyeS5wdXNoKG9wKCdsZXNz
JywgJzwnLCBCLCBbdihGLCAtMS4wLCAxLjApLCB2KEYsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYo
MC4wKSwKKyAgICAgICAgYWxsLCB7c2NhbGFyOiBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5h
cnlHZW5UeXBlRnVuY3MobGVzc1RoYW4pLnNjYWxhcn0pKTsKKyAgICBiaW5hcnkucHVzaChvcCgn
bGVzcycsICc8JywgQiwgW3YoSSwgLTUuMCwgNS4wKSwgdihJLCAtNS4wLCA1LjApXSwgZigxLjAp
LCBmKDAuMCksCisgICAgICAgIGFsbCwge3NjYWxhcjogZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5R2VuVHlwZUZ1bmNzKGxlc3NUaGFuLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwK
KyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpLnNjYWxhcn0pKTsKKyAgICBiaW5h
cnkucHVzaChvcCgnbGVzcycsICc8JywgQiwgW3YoVSwgMC4wLCAxNi4wKSwgdihVLCAwLjAsIDE2
LjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIGFsbCwge3NjYWxhcjogZXMzZlNoYWRlck9w
ZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKGxlc3NUaGFuLCBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkuc2NhbGFy
fSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdsZXNzX29yX2VxdWFsJywgJzw9JywgQiwgW3YoRiwg
LTEuMCwgMS4wKSwgdihGLCAtMS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIGFs
bCwge3NjYWxhcjogZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKGxl
c3NUaGFuRXF1YWwpLnNjYWxhcn0pKTsKKyAgICBiaW5hcnkucHVzaChvcCgnbGVzc19vcl9lcXVh
bCcsICc8PScsIEIsIFt2KEksIC01LjAsIDUuMCksIHYoSSwgLTUuMCwgNS4wKV0sIGYoMS4wKSwg
ZigwLjApLAorICAgICAgICBhbGwsIHtzY2FsYXI6IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJp
bmFyeUdlblR5cGVGdW5jcyhsZXNzVGhhbkVxdWFsLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpLnNjYWxhcn0pKTsKKyAgICBi
aW5hcnkucHVzaChvcCgnbGVzc19vcl9lcXVhbCcsICc8PScsIEIsIFt2KFUsIDAuMCwgMTYuMCks
IHYoVSwgMC4wLCAxNi4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIHtzY2FsYXI6
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhsZXNzVGhhbkVxdWFs
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuVUlOVCkuc2NhbGFyfSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdncmVhdGVyJywgJz4n
LCBCLCBbdihGLCAtMS4wLCAxLjApLCB2KEYsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwK
KyAgICAgICAgYWxsLCB7c2NhbGFyOiBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5U
eXBlRnVuY3MoZ3JlYXRlclRoYW4pLnNjYWxhcn0pKTsKKyAgICBiaW5hcnkucHVzaChvcCgnZ3Jl
YXRlcicsICc+JywgQiwgW3YoSSwgLTUuMCwgNS4wKSwgdihJLCAtNS4wLCA1LjApXSwgZigxLjAp
LCBmKDAuMCksCisgICAgICAgIGFsbCwge3NjYWxhcjogZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
YmluYXJ5R2VuVHlwZUZ1bmNzKGdyZWF0ZXJUaGFuLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpLnNjYWxhcn0pKTsKKyAgICBi
aW5hcnkucHVzaChvcCgnZ3JlYXRlcicsICc+JywgQiwgW3YoVSwgMC4wLCAxNi4wKSwgdihVLCAw
LjAsIDE2LjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIGFsbCwge3NjYWxhcjogZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKGdyZWF0ZXJUaGFuLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCkuc2NhbGFyfSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdncmVhdGVyX29yX2VxdWFsJywgJz49
JywgQiwgW3YoRiwgLTEuMCwgMS4wKSwgdihGLCAtMS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCks
CisgICAgICAgIGFsbCwge3NjYWxhcjogZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2Vu
VHlwZUZ1bmNzKGdyZWF0ZXJUaGFuRXF1YWwpLnNjYWxhcn0pKTsKKyAgICBiaW5hcnkucHVzaChv
cCgnZ3JlYXRlcl9vcl9lcXVhbCcsICc+PScsIEIsIFt2KEksIC01LjAsIDUuMCksIHYoSSwgLTUu
MCwgNS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIHtzY2FsYXI6IGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhncmVhdGVyVGhhbkVxdWFsLCBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQpLnNjYWxhcn0pKTsKKyAgICBiaW5hcnkucHVzaChvcCgnZ3JlYXRlcl9vcl9lcXVhbCcsICc+
PScsIEIsIFt2KFUsIDAuMCwgMTYuMCksIHYoVSwgMC4wLCAxNi4wKV0sIGYoMS4wKSwgZigwLjAp
LAorICAgICAgICBhbGwsIHtzY2FsYXI6IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdl
blR5cGVGdW5jcyhncmVhdGVyVGhhbkVxdWFsLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQs
CisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkuc2NhbGFyfSkpOworCisgICAg
YmluYXJ5LnB1c2gob3AoJ2VxdWFsJywgJz09JywgQiwgW3YoR1QsIC0xLjAsIDEuMCksIHYoR1Qs
IC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJHZW5UeXBlRnVuY3MoYWxsRXF1YWwpKSk7CisgICAgYmlu
YXJ5LnB1c2gob3AoJ2VxdWFsJywgJz09JywgQiwgW3YoSUdULCAtNS41LCA0LjcpLCB2KElHVCwg
LTIuMSwgMC4xKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLmJpbmFyeVNjYWxhckdlblR5cGVGdW5jcyhhbGxFcXVhbCwgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOwor
ICAgIGJpbmFyeS5wdXNoKG9wKCdlcXVhbCcsICc9PScsIEIsIFt2KFVHVCwgMC4wLCA4LjApLCB2
KFVHVCwgMy41LCA0LjUpXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIGFsbCwgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyR2VuVHlwZUZ1bmNzKGFsbEVxdWFsLCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VCkpKTsKKyAgICBiaW5hcnkucHVzaChvcCgnZXF1YWwnLCAnPT0nLCBCLCBbdihCR1QsIC0yLjEs
IDIuMSksIHYoQkdULCAtMS4xLCAzLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG5hLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJHZW5UeXBlRnVuY3MoYWxsRXF1YWws
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5CT09MKSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdub3RfZXF1YWwnLCAnIT0nLCBCLCBb
dihHVCwgLTEuMCwgMS4wKSwgdihHVCwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAg
ICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhckdlblR5cGVGdW5j
cyhhbnlOb3RFcXVhbCkpKTsKKyAgICBiaW5hcnkucHVzaChvcCgnbm90X2VxdWFsJywgJyE9Jywg
QiwgW3YoSUdULCAtNS41LCA0LjcpLCB2KElHVCwgLTIuMSwgMC4xKV0sIGYoMS4wKSwgZigwLjAp
LAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhckdlblR5
cGVGdW5jcyhhbnlOb3RFcXVhbCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdub3Rf
ZXF1YWwnLCAnIT0nLCBCLCBbdihVR1QsIDAuMCwgOC4wKSwgdihVR1QsIDMuNSwgNC41KV0sIGYo
MS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFy
eVNjYWxhckdlblR5cGVGdW5jcyhhbnlOb3RFcXVhbCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5V
SU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpKSk7CisgICAgYmluYXJ5
LnB1c2gob3AoJ25vdF9lcXVhbCcsICchPScsIEIsIFt2KEJHVCwgLTIuMSwgMi4xKSwgdihCR1Qs
IC0xLjEsIDMuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgbmEsIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLmJpbmFyeVNjYWxhckdlblR5cGVGdW5jcyhhbnlOb3RFcXVhbCwgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5CT09MLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wp
KSk7CisKKyAgICAvLyBMb2dpY2FsIG9wZXJhdG9ycy4KKyAgICBiaW5hcnkucHVzaChvcCgnbG9n
aWNhbF9hbmQnLCAnJiYnLCBCLCBbdihCLCAtMS4wLCAxLjApLCB2KEIsIC0xLjAsIDEuMCldLCBm
KDEuMCksIGYoMC4wKSwKKyAgICAgICAgbmEsIHtzY2FsYXI6IGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmJpbmFyeUdlblR5cGVGdW5jcyhsb2dpY2FsQW5kLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkJPT0wsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCkuc2NhbGFyfSkpOwor
ICAgIGJpbmFyeS5wdXNoKG9wKCdsb2dpY2FsX29yJywgJ3x8JywgQiwgW3YoQiwgLTEuMCwgMS4w
KSwgdihCLCAtMS4wLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG5hLCB7c2NhbGFy
OiBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MobG9naWNhbE9yLCBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuQk9PTCkuc2NhbGFyfSkpOworICAgIGJpbmFyeS5wdXNoKG9wKCdsb2dpY2FsX3hvcicsICde
XicsIEIsIFt2KEIsIC0xLjAsIDEuMCksIHYoQiwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjAp
LAorICAgICAgICBuYSwge3NjYWxhcjogZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2Vu
VHlwZUZ1bmNzKGxvZ2ljYWxYb3IsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MKS5zY2FsYXJ9KSk7CisKKyAgICAvLyA4LjEg
QW5nbGUgYW5kIFRyaWdvbm9tZXRyeSBGdW5jdGlvbnMuCisgICAgdmFyIHRyaWcgPSBuZXcgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgiYW5nbGVfYW5kX3RyaWdvbm9t
ZXRyeSIsICJBbmdsZSBhbmQgdHJpZ29ub21ldHJ5IGZ1bmN0aW9uIHRlc3RzLiIpOworICAgIGZ1
bmNJbmZvR3JvdXBzLnB1c2godHJpZyk7CisgICAgb3AgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5idWlsdGluRnVuY3Rpb25JbmZvOworICAgIHRyaWcucHVzaChvcCgicmFkaWFucyIsICJyYWRp
YW5zIiwgR1QsIFt2KEdULCAtMS4wLCAxLjApXSwgZigyNS4wKSwgZigwLjUpLAorICAgICAgICBt
ZWRpdW1oaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MocmFk
aWFucykpKTsKKyAgICB0cmlnLnB1c2gob3AoImRlZ3JlZXMiLCAiZGVncmVlcyIsIEdULCBbdihH
VCwgLTEuMCwgMS4wKV0sIGYoMC4wNCksIGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKGRlZ3JlZXMpKSk7CisgICAg
dHJpZy5wdXNoKG9wKCJzaW4iLCAic2luIiwgR1QsIFt2KEdULCAtNS4wLCA1LjApXSwgZigwLjUp
LCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51
bmFyeUdlblR5cGVGdW5jcyhNYXRoLnNpbikpKTsKKyAgICB0cmlnLnB1c2gob3AoInNpbiIsICJz
aW4iLCBHVCwgW3YoR1QsIC0xLjUsIDEuNSldLCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgbG93
cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5zaW4pKSk7
CisgICAgdHJpZy5wdXNoKG9wKCJjb3MiLCAiY29zIiwgR1QsIFt2KEdULCAtNS4wLCA1LjApXSwg
ZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLmNvcykpKTsKKyAgICB0cmlnLnB1c2gob3AoImNv
cyIsICJjb3MiLCBHVCwgW3YoR1QsIC0xLjUsIDEuNSldLCBmKDAuNSksIGYoMC41KSwKKyAgICAg
ICAgbG93cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5j
b3MpKSk7CisgICAgdHJpZy5wdXNoKG9wKCJ0YW4iLCAidGFuIiwgR1QsIFt2KEdULCAtNS4wLCA1
LjApXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLnRhbikpKTsKKyAgICB0cmlnLnB1c2go
b3AoInRhbiIsICJ0YW4iLCBHVCwgW3YoR1QsIC0xLjUsIDUuNSldLCBmKDAuNSksIGYoMC41KSwK
KyAgICAgICAgbG93cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mo
TWF0aC50YW4pKSk7CisKKyAgICB0cmlnID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1
aWx0aW5GdW5jR3JvdXAoImFuZ2xlX2FuZF90cmlnb25vbWV0cnkiLCAiQW5nbGUgYW5kIHRyaWdv
bm9tZXRyeSBmdW5jdGlvbiB0ZXN0cy4iKTsKKyAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKHRyaWcp
OworICAgIHRyaWcucHVzaChvcCgiYXNpbiIsICJhc2luIiwgR1QsIFt2KEdULCAtMS4wLCAxLjAp
XSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLmFzaW4pKSk7CisgICAgdHJpZy5wdXNoKG9w
KCJhY29zIiwgImFjb3MiLCBHVCwgW3YoR1QsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwK
KyAgICAgICAgbWVkaXVtaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlw
ZUZ1bmNzKE1hdGguYWNvcykpKTsKKyAgICB0cmlnLnB1c2gob3AoImF0YW4iLCAiYXRhbiIsIEdU
LCBbdihHVCwgLTQuMCwgNC4wKV0sIGYoMC41KSwgZigwLjUpLAorICAgICAgICBtZWRpdW1oaWdo
cCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5hdGFuKSkp
OworICAgIHRyaWcucHVzaChvcCgiYXRhbjIiLCAiYXRhbiIsIEdULCBbdihHVCwgLTQuMCwgNC4w
KSwgdihHVCwgMC41LCAyLjApXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hw
LCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5hdGFuMikp
KTsKKworICAgIHRyaWcgPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNH
cm91cCgiYW5nbGVfYW5kX3RyaWdvbm9tZXRyeSIsICJBbmdsZSBhbmQgdHJpZ29ub21ldHJ5IGZ1
bmN0aW9uIHRlc3RzLiIpOworICAgIGZ1bmNJbmZvR3JvdXBzLnB1c2godHJpZyk7CisgICAgdHJp
Zy5wdXNoKG9wKCJzaW5oIiwgInNpbmgiLCBHVCwgW3YoR1QsIC01LjAsIDUuMCldLCBmKDAuNSks
IGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVu
YXJ5R2VuVHlwZUZ1bmNzKE1hdGguc2luaCkpKTsKKyAgICB0cmlnLnB1c2gob3AoInNpbmgiLCAi
c2luaCIsIEdULCBbdihHVCwgLTEuNSwgMS41KV0sIGYoMC41KSwgZigwLjUpLAorICAgICAgICBs
b3dwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLnNpbmgp
KSk7CisgICAgdHJpZy5wdXNoKG9wKCJjb3NoIiwgImNvc2giLCBHVCwgW3YoR1QsIC01LjAsIDUu
MCldLCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKE1hdGguY29zaCkpKTsKKyAgICB0cmlnLnB1c2go
b3AoImNvc2giLCAiY29zaCIsIEdULCBbdihHVCwgLTEuNSwgMS41KV0sIGYoMC41KSwgZigwLjUp
LAorICAgICAgICBsb3dwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdlblR5cGVGdW5j
cyhNYXRoLmNvc2gpKSk7CisgICAgdHJpZy5wdXNoKG9wKCJ0YW5oIiwgInRhbmgiLCBHVCwgW3Yo
R1QsIC01LjAsIDUuMCldLCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKE1hdGgudGFuaCkpKTsKKyAg
ICB0cmlnLnB1c2gob3AoInRhbmgiLCAidGFuaCIsIEdULCBbdihHVCwgLTEuNSwgNS41KV0sIGYo
MC41KSwgZigwLjUpLAorICAgICAgICBsb3dwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFy
eUdlblR5cGVGdW5jcyhNYXRoLnRhbmgpKSk7CisKKyAgICB0cmlnID0gbmV3IGVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoImFuZ2xlX2FuZF90cmlnb25vbWV0cnkiLCAi
QW5nbGUgYW5kIHRyaWdvbm9tZXRyeSBmdW5jdGlvbiB0ZXN0cy4iKTsKKyAgICBmdW5jSW5mb0dy
b3Vwcy5wdXNoKHRyaWcpOworICAgIHRyaWcucHVzaChvcCgiYXNpbmgiLCAiYXNpbmgiLCBHVCwg
W3YoR1QsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgbWVkaXVtaGlnaHAs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKE1hdGguYXNpbmgpKSk7
CisgICAgdHJpZy5wdXNoKG9wKCJhY29zaCIsICJhY29zaCIsIEdULCBbdihHVCwgMS4wLCAyLjIp
XSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLmFjb3NoKSkpOworICAgIC8vIFJlc3VsdHMg
YXJlIHVuZGVmaW5lZCBpZiB8eHwgPj0gMSwgc28gaXQgZGl2ZXJzZXMgZnJvbSBDKysgdmVyc2lv
biBoZXJlLgorICAgIHRyaWcucHVzaChvcCgiYXRhbmgiLCAiYXRhbmgiLCBHVCwgW3YoR1QsIC0w
Ljk5LCAwLjk5KV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5hdGFuaCkpKTsKKworICAg
IC8vIDguMiBFeHBvbmVudGlhbCBGdW5jdGlvbnMuCisgICAgdmFyIGV4cHMgPSBuZXcgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgiZXhwb25lbnRpYWwiLCAiRXhwb25l
bnRpYWwgZnVuY3Rpb24gdGVzdHMiKTsKKyAgICBleHBzLnB1c2gob3AoInBvdyIsICJwb3ciLCBH
VCwgW3YoR1QsIDAuMSwgOC4wKSwgdihHVCwgLTQuMCwgMi4wKV0sIGYoMS4wKSwgZigwLjApLAor
ICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlw
ZUZ1bmNzKE1hdGgucG93KSkpOworICAgIGV4cHMucHVzaChvcCgiZXhwIiwgImV4cCIsIEdULCBb
dihHVCwgLTYuMCwgMy4wKV0sIGYoMC41KSwgZigwLjApLAorICAgICAgICBtZWRpdW1oaWdocCwg
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5leHApKSk7Cisg
ICAgZXhwcy5wdXNoKG9wKCJsb2ciLCAibG9nIiwgR1QsIFt2KEdULCAwLjEsIDEwLjApXSwgZigw
LjUpLCBmKDAuMyksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLmxvZykpKTsKKyAgICBleHBzLnB1c2gob3AoImV4cDIi
LCAiZXhwMiIsIEdULCBbdihHVCwgLTcuMCwgMi4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAg
ICBtZWRpdW1oaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mo
ZXhwMikpKTsKKyAgICBleHBzLnB1c2gob3AoImxvZzIiLCAibG9nMiIsIEdULCBbdihHVCwgMC4x
LCAxMC4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5sb2cyKSkpOworICAgIGV4cHMu
cHVzaChvcCgic3FydCIsICJzcXJ0IiwgR1QsIFt2KEdULCAwLjAsIDEwLjApXSwgZigwLjMpLCBm
KDAuMCksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFy
eUdlblR5cGVGdW5jcyhNYXRoLnNxcnQpKSk7CisgICAgZXhwcy5wdXNoKG9wKCJpbnZlcnNlc3Fy
dCIsICJpbnZlcnNlc3FydCIsIEdULCBbdihHVCwgMC41LCAxMC4wKV0sIGYoMS4wKSwgZigwLjAp
LAorICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlHZW5U
eXBlRnVuY3MoaW52ZXJzZVNxcnQpKSk7CisKKyAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKGV4cHMp
OworCisgICAgLy8gOC4zIENvbW1vbiBGdW5jdGlvbnMuCisgICAgdmFyIGNvbW0gPSBuZXcgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgiY29tbW9uX2Z1bmN0aW9ucyIs
ICJDb21tb24gZnVuY3Rpb24gdGVzdHMuIik7CisgICAgZnVuY0luZm9Hcm91cHMucHVzaChjb21t
KTsKKyAgICBjb21tLnB1c2gob3AoImFicyIsICJhYnMiLCBHVCwgW3YoR1QsIC0yLjAsIDIuMCld
LCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51
bmFyeUdlblR5cGVGdW5jcyhNYXRoLmFicykpKTsKKyAgICBjb21tLnB1c2gob3AoInNpZ24iLCAi
c2lnbiIsIEdULCBbdihHVCwgLTEuNSwgMS41KV0sIGYoMC4zKSwgZigwLjUpLAorICAgICAgICBh
bGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKE1hdGguc2lnbikp
KTsKKyAgICBjb21tLnB1c2gob3AoImZsb29yIiwgImZsb29yIiwgR1QsIFt2KEdULCAyLjUsIDIu
NSldLCBmKDAuMiksIGYoMC43KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy51bmFyeUdlblR5cGVGdW5jcyhNYXRoLmZsb29yKSkpOworICAgIGNvbW0ucHVzaChvcCgidHJ1
bmMiLCAidHJ1bmMiLCBHVCwgW3YoR1QsIDIuNSwgMi41KV0sIGYoMC4yKSwgZigwLjcpLAorICAg
ICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKE1hdGgu
dHJ1bmMpKSk7CisgICAgY29tbS5wdXNoKG9wKCJyb3VuZCIsICJyb3VuZCIsIEdULCBbdihHVCwg
Mi41LCAyLjUpXSwgZigwLjIpLCBmKDAuNyksCisgICAgICAgIGFsbCwgZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMudW5hcnlHZW5UeXBlRnVuY3Mocm91bmRUb0V2ZW4pKSk7CisKKyAgICBjb21tID0g
bmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoImNvbW1vbl9mdW5j
dGlvbnMiLCAiQ29tbW9uIGZ1bmN0aW9uIHRlc3RzLiIpOworICAgIGZ1bmNJbmZvR3JvdXBzLnB1
c2goY29tbSk7CisKKyAgICBjb21tLnB1c2gob3AoInJvdW5kRXZlbiIsICJyb3VuZEV2ZW4iLCBH
VCwgW3YoR1QsIDIuNSwgMi41KV0sIGYoMC4yKSwgZigwLjcpLAorICAgICAgICBhbGwsIGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKHJvdW5kVG9FdmVuKSkpOworICAg
IGNvbW0ucHVzaChvcCgiY2VpbCIsICJjZWlsIiwgR1QsIFt2KEdULCAyLjUsIDIuNSldLCBmKDAu
MiksIGYoMC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUdl
blR5cGVGdW5jcyhNYXRoLmNlaWwpKSk7CisgICAgY29tbS5wdXNoKG9wKCJmcmFjdCIsICJmcmFj
dCIsIEdULCBbdihHVCwgLTEuNSwgMS41KV0sIGYoMC44KSwgZigwLjEpLAorICAgICAgICBhbGws
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5R2VuVHlwZUZ1bmNzKGZyYWN0KSkpOworICAg
IGNvbW0ucHVzaChvcCgibW9kIiwgIm1vZCIsIEdULCBbdihHVCwgLTIuMCwgMi4wKSwgdihHVCwg
MC45LCA2LjApXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoZGVNYXRoLm1vZCkpKTsKKyAgICBj
b21tLnB1c2gob3AoIm1vZCIsICJtb2QiLCBHVCwgW3YoRlYsIC0yLjAsIDIuMCksIHYoRiwgMC45
LCA2LjApXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhkZU1hdGgubW9kU2NhbGUpKSk7CisK
KyAgICBjb21tID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAo
ImNvbW1vbl9mdW5jdGlvbnMiLCAiQ29tbW9uIGZ1bmN0aW9uIHRlc3RzLiIpOworICAgIGZ1bmNJ
bmZvR3JvdXBzLnB1c2goY29tbSk7CisKKyAgICBjb21tLnB1c2gob3AoIm1pbiIsICJtaW4iLCBH
VCwgW3YoR1QsIC0xLjAsIDEuMCksIHYoR1QsIC0xLjAsIDEuMCldLCBmKDAuNSksIGYoMC41KSwK
KyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3Mo
TWF0aC5taW4pKSk7CisgICAgY29tbS5wdXNoKG9wKCJtaW4iLCAibWluIiwgR1QsIFt2KEZWLCAt
MS4wLCAxLjApLCB2KEYsIC0xLjAsIDEuMCldLCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgYWxs
LCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNTY2FsYXJGdW5jcyhtaW5WZWNTY2Fs
YXIpKSk7CisgICAgY29tbS5wdXNoKG9wKCJtaW4iLCAibWluIiwgSUdULCBbdihJR1QsIC00LjAs
IDQuMCksIHYoSUdULCAtNC4wLCA0LjApXSwgZigwLjEyNSksIGYoMC41KSwKKyAgICAgICAgYWxs
LCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5taW4sIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LklOVCkpKTsKKyAgICBjb21tLnB1c2gob3AoIm1pbiIsICJtaW4iLCBJR1QsIFt2KElWLCAtNC4w
LCA0LjApLCB2KEksIC00LjAsIDQuMCldLCBmKDAuMTI1KSwgZigwLjUpLAorICAgICAgICBhbGws
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1NjYWxhckZ1bmNzKG1pblZlY1NjYWxh
ciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UKSkpOworICAgIGNvbW0ucHVzaChvcCgibWluIiwgIm1pbiIsIFVHVCwgW3YoVUdU
LCAwLjAsIDguMCksIHYoVUdULCAwLjAsIDguMCldLCBmKDAuMTI1KSwgZigwLjApLAorICAgICAg
ICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeUdlblR5cGVGdW5jcyhNYXRoLm1p
biwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UKSkpOworCisgICAgY29tbSA9IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5C
dWlsdGluRnVuY0dyb3VwKCJjb21tb25fZnVuY3Rpb25zIiwgIkNvbW1vbiBmdW5jdGlvbiB0ZXN0
cy4iKTsKKyAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKGNvbW0pOworCisgICAgY29tbS5wdXNoKG9w
KCJtaW4iLCAibWluIiwgVUdULCBbdihVViwgMC4wLCA4LjApLCB2KFUsIDAuMCwgOC4wKV0sIGYo
MC4xMjUpLCBmKDAuMCksCisgICAgICAgIGFsbCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmlu
YXJ5VmVjU2NhbGFyRnVuY3MobWluVmVjU2NhbGFyLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCkpKTsKKyAgICBjb21tLnB1
c2gob3AoIm1heCIsICJtYXgiLCBHVCwgW3YoR1QsIC0xLjAsIDEuMCksIHYoR1QsIC0xLjAsIDEu
MCldLCBmKDAuNSksIGYoMC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlHZW5UeXBlRnVuY3MoTWF0aC5tYXgpKSk7CisgICAgY29tbS5wdXNoKG9wKCJtYXgi
LCAibWF4IiwgR1QsIFt2KEZWLCAtMS4wLCAxLjApLCB2KEYsIC0xLjAsIDEuMCldLCBmKDAuNSks
IGYoMC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNT
Y2FsYXJGdW5jcyhtYXhWZWNTY2FsYXIpKSk7CisgICAgY29tbS5wdXNoKG9wKCJtYXgiLCAibWF4
IiwgSUdULCBbdihJR1QsIC00LjAsIDQuMCksIHYoSUdULCAtNC4wLCA0LjApXSwgZigwLjEyNSks
IGYoMC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlHZW5U
eXBlRnVuY3MoTWF0aC5tYXgsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCkpKTsKKyAgICBjb21tLnB1c2gob3AoIm1heCIsICJt
YXgiLCBJR1QsIFt2KElWLCAtNC4wLCA0LjApLCB2KEksIC00LjAsIDQuMCldLCBmKDAuMTI1KSwg
ZigwLjUpLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1Nj
YWxhckZ1bmNzKG1heFZlY1NjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAg
ICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworCisgICAgY29tbSA9IG5ldyBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5CdWlsdGluRnVuY0dyb3VwKCJjb21tb25fZnVuY3Rpb25zIiwg
IkNvbW1vbiBmdW5jdGlvbiB0ZXN0cy4iKTsKKyAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKGNvbW0p
OworCisgICAgY29tbS5wdXNoKG9wKCJtYXgiLCAibWF4IiwgVUdULCBbdihVR1QsIDAuMCwgOC4w
KSwgdihVR1QsIDAuMCwgOC4wKV0sIGYoMC4xMjUpLCBmKDAuMCksCisgICAgICAgIGFsbCwgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5R2VuVHlwZUZ1bmNzKE1hdGgubWF4LCBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQp
KSk7CisgICAgY29tbS5wdXNoKG9wKCJtYXgiLCAibWF4IiwgVUdULCBbdihVViwgMC4wLCA4LjAp
LCB2KFUsIDAuMCwgOC4wKV0sIGYoMC4xMjUpLCBmKDAuMCksCisgICAgICAgIGFsbCwgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjU2NhbGFyRnVuY3MobWF4VmVjU2NhbGFyLCBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVCkpKTsKKyAgICBjb21tLnB1c2gob3AoImNsYW1wIiwgImNsYW1wIiwgR1QsIFt2KEdULCAt
MS4wLCAxLjApLCB2KEdULCAtMC41LCAwLjUpLCB2KEdULCAwLjUsIDEuMCldLCBmKDAuNSksIGYo
MC41KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5R2VuVHlw
ZUZ1bmNzKGRlTWF0aC5jbGFtcCkpKTsKKyAgICBjb21tLnB1c2gob3AoImNsYW1wIiwgImNsYW1w
IiwgR1QsIFt2KEZWLCAtMS4wLCAxLjApLCB2KEYsIC0wLjUsIDAuNSksIHYoRiwgMC41LCAxLjAp
XSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIGFsbCwgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
dGVybmFyeVZlY1NjYWxhclNjYWxhckZ1bmNzKGNsYW1wVmVjU2NhbGFyU2NhbGFyKSkpOworICAg
IGNvbW0ucHVzaChvcCgiY2xhbXAiLCAiY2xhbXAiLCBJR1QsIFt2KElHVCwgLTQuMCwgNC4wKSwg
dihJR1QsIC0yLjAsIDIuMCksIHYoSUdULCAyLjAsIDQuMCldLCBmKDAuMTI1KSwgZigwLjUpLAor
ICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlHZW5UeXBlRnVuY3Mo
ZGVNYXRoLmNsYW1wLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisKKyAgICBjb21tID0gbmV3IGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoImNvbW1vbl9mdW5jdGlvbnMiLCAiQ29tbW9uIGZ1
bmN0aW9uIHRlc3RzLiIpOworICAgIGZ1bmNJbmZvR3JvdXBzLnB1c2goY29tbSk7CisKKyAgICBj
b21tLnB1c2gob3AoImNsYW1wIiwgImNsYW1wIiwgSUdULCBbdihJR1QsIC00LjAsIDQuMCksIHYo
SSwgLTIuMCwgMi4wKSwgdihJLCAyLjAsIDQuMCldLCBmKDAuMTI1KSwgZigwLjUpLAorICAgICAg
ICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlWZWNTY2FsYXJTY2FsYXJGdW5j
cyhjbGFtcFZlY1NjYWxhclNjYWxhciwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAg
ICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UKSkpOworICAgIGNvbW0ucHVzaChvcCgiY2xh
bXAiLCAiY2xhbXAiLCBVR1QsIFt2KFVHVCwgMC4wLCA4LjApLCB2KFVHVCwgMi4wLCA2LjApLCB2
KFVHVCwgNi4wLCA4LjApXSwgZigwLjEyNSksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5R2VuVHlwZUZ1bmNzKGRlTWF0aC5jbGFtcCwgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5ULAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQpKSk7CisgICAgY29tbS5wdXNoKG9wKCJjbGFtcCIsICJjbGFtcCIsIFVHVCwgW3YoVVYsIDAu
MCwgOC4wKSwgdihVLCAyLjAsIDYuMCksIHYoVSwgNi4wLCA4LjApXSwgZigwLjEyNSksIGYoMC4w
KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5VmVjU2NhbGFy
U2NhbGFyRnVuY3MoY2xhbXBWZWNTY2FsYXJTY2FsYXIsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKSkpOworICAgIGNvbW0u
cHVzaChvcCgibWl4IiwgIm1peCIsIEdULCBbdihHVCwgLTEuMCwgMS4wKSwgdihHVCwgLTEuMCwg
MS4wKSwgdihHVCwgMC4wLCAxLjApXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIGFsbCwgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMudGVybmFyeUdlblR5cGVGdW5jcyhtaXgpKSk7CisgICAgY29t
bS5wdXNoKG9wKCJtaXgiLCAibWl4IiwgR1QsIFt2KEZWLCAtMS4wLCAxLjApLCB2KEZWLCAtMS4w
LCAxLjApLCB2KEYsIDAuMCwgMS4wKV0sIGYoMC41KSwgZigwLjUpLAorICAgICAgICBhbGwsIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlWZWNWZWNTY2FsYXJGdW5jcyhtaXhWZWNWZWNT
Y2FsYXIpKSk7CisKKyAgICBjb21tID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLkJ1aWx0
aW5GdW5jR3JvdXAoImNvbW1vbl9mdW5jdGlvbnMiLCAiQ29tbW9uIGZ1bmN0aW9uIHRlc3RzLiIp
OworICAgIGZ1bmNJbmZvR3JvdXBzLnB1c2goY29tbSk7CisKKyAgICBjb21tLnB1c2gob3AoInN0
ZXAiLCAic3RlcCIsIEdULCBbdihHVCwgLTEuMCwgMS4wKSwgdihHVCwgLTEuMCwgMC4wKV0sIGYo
MC41KSwgZigwLjI1KSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5h
cnlHZW5UeXBlRnVuY3Moc3RlcCkpKTsKKyAgICBjb21tLnB1c2gob3AoInN0ZXAiLCAic3RlcCIs
IEdULCBbdihGLCAtMS4wLCAxLjApLCB2KEZWLCAtMS4wLCAwLjApXSwgZigwLjUpLCBmKDAuMjUp
LAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVNjYWxhclZlY0Z1
bmNzKHN0ZXBTY2FsYXJWZWMpKSk7CisgICAgY29tbS5wdXNoKG9wKCJzbW9vdGhzdGVwIiwgInNt
b290aHN0ZXAiLCBHVCwgW3YoR1QsIC0wLjUsIDAuMCksIHYoR1QsIDAuMSwgMS4wKSwgdihHVCwg
LTEuMCwgMS4wKV0sIGYoMC41KSwgZigwLjUpLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLnRlcm5hcnlHZW5UeXBlRnVuY3Moc21vb3RoU3RlcCkpKTsKKyAgICBjb21tLnB1
c2gob3AoInNtb290aHN0ZXAiLCAic21vb3Roc3RlcCIsIEdULCBbdihGLCAtMC41LCAwLjApLCB2
KEYsIDAuMSwgMS4wKSwgdihGViwgLTEuMCwgMS4wKV0sIGYoMC41KSwgZigwLjUpLAorICAgICAg
ICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnRlcm5hcnlTY2FsYXJTY2FsYXJWZWNGdW5j
cyhzbW9vdGhTdGVwU2NhbGFyU2NhbGFyVmVjKSkpOworCisgICAgLy8gOC40IEdlb21ldHJpYyBG
dW5jdGlvbnMuCisgICAgdmFyIGdlb20gPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVp
bHRpbkZ1bmNHcm91cCgiZ2VvbWV0cmljIiwgIkdlb21ldHJpYyBmdW5jdGlvbiB0ZXN0cy4iKTsK
KyAgICBnZW9tLnB1c2gob3AoImxlbmd0aCIsICJsZW5ndGgiLCBGLCBbdihHVCwgLTUuMCwgNS4w
KV0sIGYoMC4xKSwgZigwLjUpLAorICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMudW5hcnlTY2FsYXJHZW5UeXBlRnVuY3MobGVuZ3RoKSkpOworICAgIGdlb20ucHVz
aChvcCgiZGlzdGFuY2UiLCAiZGlzdGFuY2UiLCBGLCBbdihHVCwgLTUuMCwgNS4wKSwgdihHVCwg
LTUuMCwgNS4wKV0sIGYoMC4xKSwgZigwLjUpLAorICAgICAgICBtZWRpdW1oaWdocCwgZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5U2NhbGFyR2VuVHlwZUZ1bmNzKGRpc3RhbmNlKSkpOwor
ICAgIGdlb20ucHVzaChvcCgiZG90IiwgImRvdCIsIEYsIFt2KEdULCAtNS4wLCA1LjApLCB2KEdU
LCAtNS4wLCA1LjApXSwgZigwLjEpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlTY2FsYXJHZW5UeXBlRnVuY3MoZG90KSkpOworICAg
IGdlb20ucHVzaChvcCgiY3Jvc3MiLCAiY3Jvc3MiLCBWMywgW3YoR1QsIC01LjAsIDUuMCksIHYo
R1QsIC01LjAsIDUuMCldLCBmKDAuMSksIGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIHt2
ZWMzOiBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNWZWNGdW5jcyhjcm9zcykudmVj
M30pKTsKKyAgICBnZW9tLnB1c2gob3AoIm5vcm1hbGl6ZSIsICJub3JtYWxpemUiLCBHVCwgW3Yo
R1QsIDAuMSwgNC4wKV0sIGYoMC41KSwgZigwLjUpLAorICAgICAgICBtZWRpdW1oaWdocCwgZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlBcnJheUZ1bmNzKG5vcm1hbGl6ZSkpKTsKKyAgICBn
ZW9tLnB1c2gob3AoImZhY2Vmb3J3YXJkIiwgImZhY2Vmb3J3YXJkIiwgR1QsIFt2KEdULCAtNS4w
LCA1LjApLCB2KEdULCAtNS4wLCA1LjApLCB2KEdULCAtMS4wLCAxLjApXSwgZigwLjUpLCBmKDAu
NSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5
VmVjVmVjVmVjRnVuY3MoZmFjZWZvcndhcmQpKSk7CisgICAgZ2VvbS5wdXNoKG9wKCJyZWZsZWN0
IiwgInJlZmxlY3QiLCBHVCwgW3YoR1QsIC0wLjgsIC0wLjUpLCB2KEdULCAwLjUsIDAuOCldLCBm
KDAuNSksIGYoMC41KSwKKyAgICAgICAgbWVkaXVtaGlnaHAsIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmJpbmFyeVZlY1ZlY0Z1bmNzKHJlZmxlY3QpKSk7CisgICAgZ2VvbS5wdXNoKG9wKCJyZWZy
YWN0IiwgInJlZnJhY3QiLCBHVCwgW3YoR1QsIC0wLjgsIDEuMiksIHYoR1QsIC0xLjEsIDAuNSks
IHYoRiwgMC4yLCAxLjUpXSwgZigwLjUpLCBmKDAuNSksCisgICAgICAgIG1lZGl1bWhpZ2hwLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy50ZXJuYXJ5VmVjVmVjU2NhbGFyRnVuY3MocmVmcmFjdCkp
KTsKKworICAgIGZ1bmNJbmZvR3JvdXBzLnB1c2goZ2VvbSk7CisKKyAgICAvLyA4LjYgVmVjdG9y
IFJlbGF0aW9uYWwgRnVuY3Rpb25zLgorICAgIHZhciBmbG9hdENvbXAgPSBuZXcgZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgiZmxvYXRfY29tcGFyZSIsICJGbG9hdGlu
ZyBwb2ludCBjb21wYXJpc29uIHRlc3RzLiIpOworICAgIGZsb2F0Q29tcC5wdXNoKG9wKCJsZXNz
VGhhbiIsICJsZXNzVGhhbiIsIEJWLCBbdihGViwgLTEuMCwgMS4wKSwgdihGViwgLTEuMCwgMS4w
KV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LmJpbmFyeVZlY1ZlY0Z1bmNzKGxlc3NUaGFuVmVjKSkpOworICAgIGZsb2F0Q29tcC5wdXNoKG9w
KCJsZXNzVGhhbkVxdWFsIiwgImxlc3NUaGFuRXF1YWwiLCBCViwgW3YoRlYsIC0xLjAsIDEuMCks
IHYoRlYsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNWZWNGdW5jcyhsZXNzVGhhbkVxdWFsVmVjKSkpOwor
ICAgIGZsb2F0Q29tcC5wdXNoKG9wKCJncmVhdGVyVGhhbiIsICJncmVhdGVyVGhhbiIsIEJWLCBb
dihGViwgLTEuMCwgMS4wKSwgdihGViwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAg
ICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1ZlY0Z1bmNzKGdyZWF0
ZXJUaGFuVmVjKSkpOworICAgIGZsb2F0Q29tcC5wdXNoKG9wKCJncmVhdGVyVGhhbkVxdWFsIiwg
ImdyZWF0ZXJUaGFuRXF1YWwiLCBCViwgW3YoRlYsIC0xLjAsIDEuMCksIHYoRlYsIC0xLjAsIDEu
MCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5iaW5hcnlWZWNWZWNGdW5jcyhncmVhdGVyVGhhbkVxdWFsVmVjKSkpOworICAgIGZsb2F0Q29t
cC5wdXNoKG9wKCJlcXVhbCIsICJlcXVhbCIsIEJWLCBbdihGViwgLTEuMCwgMS4wKSwgdihGViwg
LTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLmJpbmFyeVZlY1ZlY0Z1bmNzKGFsbEVxdWFsVmVjKSkpOworICAgIGZsb2F0Q29t
cC5wdXNoKG9wKCJub3RFcXVhbCIsICJub3RFcXVhbCIsIEJWLCBbdihGViwgLTEuMCwgMS4wKSwg
dihGViwgLTEuMCwgMS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1ZlY0Z1bmNzKGFueU5vdEVxdWFsVmVjKSkpOworCisg
ICAgZnVuY0luZm9Hcm91cHMucHVzaChmbG9hdENvbXApOworCisgICAgdmFyIGludENvbXAgPSBu
ZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuQnVpbHRpbkZ1bmNHcm91cCgiaW50X2NvbXBhcmUi
LCAiSW50ZWdlciBjb21wYXJpc29uIHRlc3RzLiIpOworICAgIGludENvbXAucHVzaChvcCgibGVz
c1RoYW4iLCAibGVzc1RoYW4iLCBCViwgW3YoSVYsIDUuMiwgNC45KSwgdihJViwgLTUuMCwgNS4w
KV0sIGYoMS4wKSwgZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LmJpbmFyeVZlY1ZlY0Z1bmNzKGxlc3NUaGFuVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgaW50Q29tcC5w
dXNoKG9wKCJsZXNzVGhhbkVxdWFsIiwgImxlc3NUaGFuRXF1YWwiLCBCViwgW3YoSVYsIC01LjIs
IDQuOSksIHYoSVYsIC01LjAsIDUuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBl
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNWZWNGdW5jcyhsZXNzVGhhbkVxdWFsVmVj
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQpKSk7CisgICAgaW50Q29tcC5wdXNoKG9wKCJncmVhdGVyVGhhbiIsICJncmVhdGVy
VGhhbiIsIEJWLCBbdihJViwgLTUuMiwgNC45KSwgdihJViwgLTUuMCwgNS4wKV0sIGYoMS4wKSwg
ZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1Zl
Y0Z1bmNzKGdyZWF0ZXJUaGFuVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisgICAgaW50Q29tcC5wdXNoKG9wKCJn
cmVhdGVyVGhhbkVxdWFsIiwgImdyZWF0ZXJUaGFuRXF1YWwiLCBCViwgW3YoSVYsIC01LjIsIDQu
OSksIHYoSVYsIC01LjAsIDUuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgYWxsLCBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5iaW5hcnlWZWNWZWNGdW5jcyhncmVhdGVyVGhhbkVxdWFsVmVj
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQpKSk7CisgICAgaW50Q29tcC5wdXNoKG9wKCJlcXVhbCIsICJlcXVhbCIsIEJWLCBb
dihJViwgLTUuMiwgNC45KSwgdihJViwgLTUuMCwgNS4wKV0sIGYoMS4wKSwgZigwLjApLAorICAg
ICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1ZlY0Z1bmNzKGFsbEVx
dWFsVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5JTlQpKSk7CisgICAgaW50Q29tcC5wdXNoKG9wKCJub3RFcXVhbCIsICJub3RF
cXVhbCIsIEJWLCBbdihJViwgLTUuMiwgNC45KSwgdihJViwgLTUuMCwgNS4wKV0sIGYoMS4wKSwg
ZigwLjApLAorICAgICAgICBhbGwsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmJpbmFyeVZlY1Zl
Y0Z1bmNzKGFueU5vdEVxdWFsVmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpKSk7CisKKyAgICBmdW5jSW5mb0dyb3Vwcy5w
dXNoKGludENvbXApOworCisgICAgdmFyIGJvb2xDb21wID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLkJ1aWx0aW5GdW5jR3JvdXAoImJvb2xfY29tcGFyZSIsICJCb29sZWFuIGNvbXBhcmlz
b24gdGVzdHMuIik7CisgICAgdmFyIGV2YWxCb29sRXF1YWwgPSBlczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5iaW5hcnlWZWNWZWNGdW5jcyhhbGxFcXVhbFZlYywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5CT09MLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wpOworICAgIHZhciBl
dmFsQm9vbE5vdEVxdWFsID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuYmluYXJ5VmVjVmVjRnVu
Y3MoYW55Tm90RXF1YWxWZWMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MKTsKKyAgICB2YXIgZXZhbEJvb2xBbnkgPSBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy51bmFyeUJvb2xlYW5HZW5UeXBlRnVuY3MoYm9vbEFueSwgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkJPT0wpOworICAgIGV2YWxCb29sQW55LnNjYWxhciA9IG51bGw7CisgICAgdmFyIGV2YWxCb29s
QWxsID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMudW5hcnlCb29sZWFuR2VuVHlwZUZ1bmNzKGJv
b2xBbGwsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAgICAgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5CT09MKTsKKyAgICBldmFsQm9vbEFsbC5zY2FsYXIgPSBudWxsOworICAgIHZh
ciBldmFsQm9vbE5vdCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnVuYXJ5QXJyYXlGdW5jcyhi
b29sTm90VmVjLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wsCisgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuQk9PTCk7CisgICAgZXZhbEJvb2xOb3Quc2NhbGFyID0gbnVsbDsKKwor
ICAgIGJvb2xDb21wLnB1c2gob3AoImVxdWFsIiwgImVxdWFsIiwgQlYsIFt2KEJWLCAtNS4yLCA0
LjkpLCB2KEJWLCAtNS4wLCA1LjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG5hLCBldmFs
Qm9vbEVxdWFsKSk7CisgICAgYm9vbENvbXAucHVzaChvcCgibm90RXF1YWwiLCAibm90RXF1YWwi
LCBCViwgW3YoQlYsIC01LjIsIDQuOSksIHYoQlYsIC01LjAsIDUuMCldLCBmKDEuMCksIGYoMC4w
KSwKKyAgICAgICAgbmEsIGV2YWxCb29sTm90RXF1YWwpKTsKKyAgICBib29sQ29tcC5wdXNoKG9w
KCJhbnkiLCAiYW55IiwgQiwgW3YoQlYsIC0xLjAsIDAuMyldLCBmKDEuMCksIGYoMC4wKSwKKyAg
ICAgICAgbmEsIGV2YWxCb29sQW55KSk7CisgICAgYm9vbENvbXAucHVzaChvcCgiYWxsIiwgImFs
bCIsIEIsIFt2KEJWLCAtMC4zLCAxLjApXSwgZigxLjApLCBmKDAuMCksCisgICAgICAgIG5hLCBl
dmFsQm9vbEFsbCkpOworICAgIGJvb2xDb21wLnB1c2gob3AoIm5vdCIsICJub3QiLCBCViwgW3Yo
QlYsIC0xLjAsIDEuMCldLCBmKDEuMCksIGYoMC4wKSwKKyAgICAgICAgbmEsIGV2YWxCb29sTm90
KSk7CisKKyAgICBmdW5jSW5mb0dyb3Vwcy5wdXNoKGJvb2xDb21wKTsKKworICAgIHZhciBzX3No
YWRlclR5cGVzID0gWworICAgICAgICBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVY
LAorICAgICAgICBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQKKyAgICBdOwor
CisgICAgdmFyIHNfZmxvYXRUeXBlcyA9IFsKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVCwKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLAorICAg
ICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzMsCisgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNAorICAgIF07CisKKyAgICB2YXIgc19pbnRUeXBlcyA9
IFsKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UX1ZFQzMsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQKKyAgICBd
OworCisgICAgdmFyIHNfdWludFR5cGVzID0gWworICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLlVJTlQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyLAorICAg
ICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMywKKyAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQKKyAgICBdOworCisgICAgdmFyIHNfYm9vbFR5cGVzID0g
WworICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wsCisgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkJPT0xfVkVDMywKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQKKyAg
ICBdOworCisgICAgZm9yICh2YXIgb3V0ZXJHcm91cE5keCA9IDA7IG91dGVyR3JvdXBOZHggPCBm
dW5jSW5mb0dyb3Vwcy5sZW5ndGg7IG91dGVyR3JvdXBOZHgrKykgeworICAgICAgICAvLyBDcmVh
dGUgb3V0ZXIgZ3JvdXAuCisgICAgICAgIHZhciBvdXRlckdyb3VwSW5mbyA9IGZ1bmNJbmZvR3Jv
dXBzW291dGVyR3JvdXBOZHhdOworICAgICAgICB2YXIgb3V0ZXJHcm91cCA9IG5ldyB0Y3VUZXN0
Q2FzZS5EZXFwVGVzdChvdXRlckdyb3VwSW5mby5uYW1lLCBvdXRlckdyb3VwSW5mby5kZXNjcmlw
dGlvbik7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQob3V0ZXJHcm91cCk7CisKKyAgICAgICAgLy8g
T25seSBjcmVhdGUgbmV3IGdyb3VwIGlmIG5hbWUgZGlmZmVycyBmcm9tIHByZXZpb3VzIG9uZS4K
KyAgICAgICAgdmFyIGlubmVyR3JvdXAgPSBudWxsOworCisgICAgICAgIGZvciAodmFyIGZ1bmNJ
bmZvTmR4ID0gMDsgZnVuY0luZm9OZHggPCBvdXRlckdyb3VwSW5mby5mdW5jSW5mb3MubGVuZ3Ro
OyBmdW5jSW5mb05keCsrKSB7CisgICAgICAgICAgICB2YXIgZnVuY0luZm8gPSBvdXRlckdyb3Vw
SW5mby5mdW5jSW5mb3NbZnVuY0luZm9OZHhdOworICAgICAgICAgICAgdmFyIHNoYWRlckZ1bmNO
YW1lID0gZnVuY0luZm8uc2hhZGVyRnVuY05hbWU7CisgICAgICAgICAgICB2YXIgaXNCb29sQ2Fz
ZSA9IChmdW5jSW5mby5wcmVjaXNpb24gPT0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuUHJlY2lz
aW9uLk5vbmUpOworICAgICAgICAgICAgdmFyIGlzQm9vbE91dCA9IGVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzLmlzQm9vbFR5cGUoZnVuY0luZm8ub3V0VmFsdWUpOworICAgICAgICAgICAgdmFyIGlz
SW50T3V0ID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuaXNJbnRUeXBlKGZ1bmNJbmZvLm91dFZh
bHVlKTsKKyAgICAgICAgICAgIHZhciBpc1VpbnRPdXQgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5pc1VpbnRUeXBlKGZ1bmNJbmZvLm91dFZhbHVlKTsKKyAgICAgICAgICAgIHZhciBpc0Zsb2F0
T3V0ID0gIWlzQm9vbE91dCAmJiAhaXNJbnRPdXQgJiYgIWlzVWludE91dDsKKworICAgICAgICAg
ICAgaWYgKCFpbm5lckdyb3VwIHx8IChpbm5lckdyb3VwLm5hbWUgIT0gZnVuY0luZm8uY2FzZU5h
bWUpKSB7CisgICAgICAgICAgICAgICAgdmFyIGdyb3VwRGVzYyA9ICdCdWlsdC1pbiBmdW5jdGlv
biAnICsgc2hhZGVyRnVuY05hbWUgKyAnKCkgdGVzdHMuJzsKKyAgICAgICAgICAgICAgICBpbm5l
ckdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KGZ1bmNJbmZvLmNhc2VOYW1lLCBncm91
cERlc2MpOworICAgICAgICAgICAgICAgIG91dGVyR3JvdXAuYWRkQ2hpbGQoaW5uZXJHcm91cCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGluU2NhbGFyU2l6ZSA9IDE7
IGluU2NhbGFyU2l6ZSA8PSA0OyBpblNjYWxhclNpemUrKykgeworICAgICAgICAgICAgICAgIHZh
ciBvdXRTY2FsYXJTaXplID0gKChmdW5jSW5mby5vdXRWYWx1ZSA9PSBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5WYWx1ZVR5cGUuRkxPQVQpIHx8IChmdW5jSW5mby5vdXRWYWx1ZSA9PSBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5WYWx1ZVR5cGUuQk9PTCkpID8gMSA6IGluU2NhbGFyU2l6ZTsgLy8g
XHRvZG8gW3BldHJpXSBJbnQuCisgICAgICAgICAgICAgICAgdmFyIG91dERhdGFUeXBlID0gaXNG
bG9hdE91dCA/IHNfZmxvYXRUeXBlc1tvdXRTY2FsYXJTaXplIC0gMV0gOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ludE91dCA/IHNfaW50VHlwZXNbb3V0
U2NhbGFyU2l6ZSAtIDFdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXNVaW50T3V0ID8gc191aW50VHlwZXNbb3V0U2NhbGFyU2l6ZSAtIDFdIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCb29sT3V0ID8gc19ib29s
VHlwZXNbb3V0U2NhbGFyU2l6ZSAtIDFdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5kZWZpbmVkOworCisgICAgICAgICAgICAgICAgdmFyIGV2YWxGdW5j
ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoaW5TY2FsYXJTaXplID09IDEpIGV2YWxGdW5j
ID0gZnVuY0luZm8uZXZhbEZ1bmN0aW9ucy5zY2FsYXI7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaW5TY2FsYXJTaXplID09IDIpIGV2YWxGdW5jID0gZnVuY0luZm8uZXZhbEZ1bmN0aW9ucy52
ZWMyOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluU2NhbGFyU2l6ZSA9PSAzKSBldmFsRnVu
YyA9IGZ1bmNJbmZvLmV2YWxGdW5jdGlvbnMudmVjMzsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChpblNjYWxhclNpemUgPT0gNCkgZXZhbEZ1bmMgPSBmdW5jSW5mby5ldmFsRnVuY3Rpb25zLnZl
YzQ7CisgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2NhbGFy
IHNpemUgJyArIGluU2NhbGFyU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBTa2lwIGlmIG5v
IHZhbGlkIGV2YWwgZnVuYy4KKyAgICAgICAgICAgICAgICAvLyBcdG9kbyBbcGV0cmldIEJldHRl
ciBjaGVjayBmb3IgVjMgb25seSBldGMuIGNhc2VzPworICAgICAgICAgICAgICAgIGlmIChldmFs
RnVuYyA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIHZhciBwcmVjaXNpb25zID0gWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnXTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBwcmVjSWQgPSAwOyBwcmVjSWQgPCBwcmVjaXNpb25zLmxlbmd0
aDsgcHJlY0lkKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHByZWNpc2lvbiA9IHByZWNp
c2lvbnNbcHJlY0lkXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChmdW5jSW5mby5wcmVjaXNp
b25bcHJlY2lzaW9uXSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jSW5mby5wcmVj
aXNpb24gPT0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuUHJlY2lzaW9uLk5vbmUgJiYgcHJlY2lz
aW9uID09PSAnbWVkaXVtJykpIHsgLy8gdXNlIG1lZGl1bXAgaW50ZXJwb2xhdG9ycyBmb3IgYm9v
bGVhbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVjaXNpb25QcmVmaXggPSBpc0Jv
b2xDYXNlID8gJycgOiBwcmVjaXNpb24gKyAncF8nOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBzaGFkZXJUeXBlTmR4ID0gMDsgc2hhZGVyVHlwZU5keCA8IHNfc2hhZGVyVHlw
ZXMubGVuZ3RoOyBzaGFkZXJUeXBlTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc2hhZGVyVHlwZSA9IHNfc2hhZGVyVHlwZXNbc2hhZGVyVHlwZU5keF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNoYWRlclNwZWMgPSBuZXcgZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuU2hhZGVyRGF0YVNwZWMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgc2hhZGVyVHlwZU5hbWUgPSBnbHVTaGFkZXJQcm9ncmFtLmdldFNoYWRlclR5cGVOYW1lKHNo
YWRlclR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1ZlcnRleENhc2Ug
PSBzaGFkZXJUeXBlID09IGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVg7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzVW5hcnlPcCA9IChmdW5jSW5mby5pbnB1dHMu
bGVuZ3RoID09IDEpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXG5vdGUgRGF0
YSB0eXBlIG5hbWVzIHdpbGwgYmUgYWRkZWQgdG8gZGVzY3JpcHRpb24gYW5kIG5hbWUgaW4gYSBm
b2xsb3dpbmcgbG9vcC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICdC
dWlsdC1pbiBmdW5jdGlvbiAnICsgc2hhZGVyRnVuY05hbWUgKyAnKCc7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBwcmVjaXNpb25QcmVmaXg7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBzaGFkZXIgb3AuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHNoYWRlck9wID0gJ3JlcyA9ICc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcHJlY05hbWVzID0gW2dsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJ
U0lPTl9MT1dQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fSElHSFBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHVwIHNo
YWRlciBkYXRhIGluZm8uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5u
dW1JbnB1dHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucHJl
Y2lzaW9uID0gaXNCb29sQ2FzZSA/IHVuZGVmaW5lZCA6IHByZWNOYW1lc1twcmVjSWRdOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNwZWMub3V0cHV0ID0gb3V0RGF0YVR5cGU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5yZXN1bHRTY2FsZSA9IGZ1
bmNJbmZvLnJlc3VsdFNjYWxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNw
ZWMucmVzdWx0QmlhcyA9IGZ1bmNJbmZvLnJlc3VsdEJpYXM7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZGVyU3BlYy5yZWZlcmVuY2VTY2FsZSA9IGZ1bmNJbmZvLnJlZmVyZW5jZVNj
YWxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucmVmZXJlbmNlQmlh
cyA9IGZ1bmNJbmZvLnJlZmVyZW5jZUJpYXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZnVuY0luZm8udHlwZSA9PSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRpb25U
eXBlLk9QRVJBVE9SKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Vu
YXJ5T3AgJiYgZnVuY0luZm8uaXNVbmFyeVByZWZpeCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNoYWRlck9wICs9IHNoYWRlckZ1bmNOYW1lOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZnVuY0luZm8udHlwZSA9PSBlczNmU2hhZGVyT3BlcmF0
b3JUZXN0cy5PcGVyYXRpb25UeXBlLkZVTkNUSU9OKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJPcCArPSBzaGFkZXJGdW5jTmFtZSArICcoJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIC8vIFNJREVfRUZGRUNUX09QRVJBVE9SCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRlck9wICs9ICdpbjA7XG5cdCc7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpbnB1dE5keCA9IDA7IGlucHV0TmR4IDwgZnVuY0lu
Zm8uaW5wdXRzLmxlbmd0aDsgaW5wdXROZHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcHJldk5keCA9IGlucHV0TmR4ID4gMCA/IGlucHV0TmR4IC0gMSA6IGZ1bmNJ
bmZvLmlucHV0cy5sZW5ndGggLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgcHJldlZhbHVlID0gZnVuY0luZm8uaW5wdXRzW3ByZXZOZHhdOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBmdW5jSW5mby5pbnB1dHNbaW5wdXROZHhdOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZVR5cGUgPT0g
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuVmFsdWVUeXBlLk5PTkUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gU2tpcCB1bnVzZWQgaW5wdXQuCisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZJblNjYWxhclNpemUgPSBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5pc1NjYWxhclR5cGUocHJldlZhbHVlLnZhbHVlVHlwZSkgPyAx
IDogaW5TY2FsYXJTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJl
dkluRGF0YVR5cGUgPSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5pc0Zsb2F0VHlwZShwcmV2VmFs
dWUudmFsdWVUeXBlKSA/IHNfZmxvYXRUeXBlc1twcmV2SW5TY2FsYXJTaXplIC0gMV0gOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5pc0ludFR5cGUocHJldlZhbHVlLnZhbHVl
VHlwZSkgPyBzX2ludFR5cGVzW3ByZXZJblNjYWxhclNpemUgLSAxXSA6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLmlzVWludFR5cGUocHJldlZhbHVlLnZhbHVlVHlwZSkgPyBz
X3VpbnRUeXBlc1twcmV2SW5TY2FsYXJTaXplIC0gMV0gOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5pc0Jvb2xUeXBlKHByZXZWYWx1ZS52YWx1ZVR5cGUpID8gc19ib29sVHlw
ZXNbcHJldkluU2NhbGFyU2l6ZSAtIDFdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJJblNjYWxhclNpemUgPSBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5pc1NjYWxhclR5cGUodmFsdWUudmFsdWVUeXBlKSA/IDEgOiBpblNj
YWxhclNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJJbkRhdGFU
eXBlID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuaXNGbG9hdFR5cGUodmFsdWUudmFsdWVUeXBl
KSA/IHNfZmxvYXRUeXBlc1tjdXJJblNjYWxhclNpemUgLSAxXSA6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJPcGVyYXRvclRlc3RzLmlzSW50VHlwZSh2YWx1ZS52YWx1ZVR5cGUpID8gc19pbnRUeXBl
c1tjdXJJblNjYWxhclNpemUgLSAxXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzLmlzVWludFR5cGUodmFsdWUudmFsdWVUeXBlKSA/IHNfdWludFR5cGVzW2N1ckluU2NhbGFy
U2l6ZSAtIDFdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuaXNCb29sVHlw
ZSh2YWx1ZS52YWx1ZVR5cGUpID8gc19ib29sVHlwZXNbY3VySW5TY2FsYXJTaXplIC0gMV0gOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV3JpdGUgaW5wdXQgdHlwZShzKSB0byBjYXNlIGRlc2NyaXB0aW9uIGFuZCBuYW1lLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE5keCA+IDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjICs9ICcsICc7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzYyArPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFt
ZShjdXJJbkRhdGFUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aW5wdXROZHggPT0gMCB8fCBwcmV2SW5EYXRhVHlwZSAhPSBjdXJJbkRhdGFUeXBlKSAvLyBcbm90
ZSBPbmx5IHdyaXRlIGlucHV0IHR5cGUgdG8gY2FzZSBuYW1lIGlmIGRpZmZlcmVudCBmcm9tIHBy
ZXZpb3VzIGlucHV0IHR5cGUgKGF2b2lkIG92ZXJseSBsb25nIG5hbWVzKS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU5hbWUoY3VySW5EYXRhVHlwZSkgKyAnXyc7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gR2VuZXJhdGUgb3AgaW5wdXQgc291cmNlLgorCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmdW5jSW5mby50eXBlID09IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
Lk9wZXJhdGlvblR5cGUuT1BFUkFUT1IgfHwgZnVuY0luZm8udHlwZSA9PSBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5PcGVyYXRpb25UeXBlLkZVTkNUSU9OKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5wdXROZHggIT0gMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChmdW5jSW5mby50eXBlID09IGVzM2ZTaGFkZXJPcGVy
YXRvclRlc3RzLk9wZXJhdGlvblR5cGUuT1BFUkFUT1IgJiYgIWlzVW5hcnlPcCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyT3AgKz0gJyAnICsgc2hh
ZGVyRnVuY05hbWUgKyAnICc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFk
ZXJPcCArPSAnLCAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSAnaW4nICsgaW5w
dXROZHgudG9TdHJpbmcoMTApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZnVuY0luZm8udHlwZSA9PSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRpb25U
eXBlLk9QRVJBVE9SICYmIGlzVW5hcnlPcCAmJiAhZnVuY0luZm8uaXNVbmFyeVByZWZpeCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSBzaGFkZXJG
dW5jTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNleworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0TmR4ICE9IDAgfHwgKGlzVW5h
cnlPcCAmJiBmdW5jSW5mby5pc1VuYXJ5UHJlZml4KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSAoaXNVbmFyeU9wID8gJycgOiAnICcpICsgc2hh
ZGVyRnVuY05hbWUgKyAoaXNVbmFyeU9wID8gJycgOiAnICcpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSBpbnB1dE5keCA9PSAwID8gJ3JlcycgOiAn
aW4nICsgaW5wdXROZHgudG9TdHJpbmcoMTApOyAvLyBcbm90ZSBpbjAgaGFzIGFscmVhZHkgYmVl
biBhc3NpZ25lZCB0byByZXMsIHNvIHN0YXJ0IGZyb20gaW4xLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmFyeU9wICYmICFmdW5jSW5mby5pc1VuYXJ5UHJl
Zml4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlck9wICs9
IHNoYWRlckZ1bmNOYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsbCBpbiBzaGFkZXIgaW5mby4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5pbnB1dHNbc2hhZGVyU3Bl
Yy5udW1JbnB1dHMrK10gPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU2hhZGVyVmFsdWUo
Y3VySW5EYXRhVHlwZSwgdmFsdWUucmFuZ2VNaW4sIHZhbHVlLnJhbmdlTWF4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZnVuY0luZm8udHlwZSA9PSBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5PcGVyYXRpb25UeXBlLkZV
TkNUSU9OKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSAnKSc7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJPcCArPSAnOyc7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXNjICs9ICcpLic7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSArPSBzaGFkZXJUeXBlTmFtZTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENyZWF0ZSB0aGUgdGVzdCBjYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlubmVyR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRl
ck9wZXJhdG9yQ2FzZShuYW1lLCBkZXNjLCBpc1ZlcnRleENhc2UsIGV2YWxGdW5jLCBzaGFkZXJP
cCwgc2hhZGVyU3BlYykpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gVGhlID86IHNlbGVjdGlvbiBvcGVyYXRvci4KKworICAgIHZhciBzX3Nl
bGVjdGlvbkluZm8gPSBbCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQsCisg
ICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwKKyAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUX1ZFQzQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAorICAg
ICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLAorICAgICAgICBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVF9WRUMzLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9WRUM0LAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQsCisgICAgICAgIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlRfVkVDMywKKyAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZF
QzQsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwKKyAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzIsCisgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuQk9PTF9WRUMzLAorICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNAor
ICAgIF07CisKKyAgICB2YXIgc2VsZWN0aW9uRXZhbEZ1bmNzRmxvYXQgPSBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5zZWxlY3Rpb25GdW5jcyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKTsK
KyAgICB2YXIgc2VsZWN0aW9uRXZhbEZ1bmNzSW50ID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMu
c2VsZWN0aW9uRnVuY3MoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpOworICAgIHZhciBzZWxl
Y3Rpb25FdmFsRnVuY3NVaW50ID0gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuc2VsZWN0aW9uRnVu
Y3MoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UKTsKKyAgICB2YXIgc2VsZWN0aW9uRXZhbEZ1
bmNzQm9vbCA9IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnNlbGVjdGlvbkZ1bmNzKGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuQk9PTCk7CisKKyAgICB2YXIgc2VsZWN0aW9uR3JvdXAgPSBuZXcgdGN1
VGVzdENhc2UuRGVxcFRlc3QoJ3NlbGVjdGlvbicsICdTZWxlY3Rpb24gb3BlcmF0b3IgdGVzdHMn
KTsKKyAgICB0aGlzLmFkZENoaWxkKHNlbGVjdGlvbkdyb3VwKTsKKworICAgIGZvciAodmFyIHR5
cGVOZHggPSAwOyB0eXBlTmR4IDwgc19zZWxlY3Rpb25JbmZvLmxlbmd0aDsgdHlwZU5keCsrKSB7
CisgICAgICAgIHZhciBjdXJUeXBlID0gc19zZWxlY3Rpb25JbmZvW3R5cGVOZHhdOworICAgICAg
ICB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKGN1
clR5cGUpOworICAgICAgICB2YXIgaXNCb29sQ2FzZSA9IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlw
ZUJvb2xPckJWZWMoY3VyVHlwZSk7CisgICAgICAgIHZhciBpc0Zsb2F0Q2FzZSA9IGdsdVNoYWRl
clV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWMoY3VyVHlwZSk7CisgICAgICAgIHZhciBpc0ludENh
c2UgPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWMoY3VyVHlwZSk7CisgICAgICAg
IHZhciBpc1VpbnRDYXNlID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYyhjdXJU
eXBlKTsKKyAgICAgICAgdmFyIGRhdGFUeXBlU3RyID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU5hbWUoY3VyVHlwZSk7CisKKyAgICAgICAgdmFyIGV2YWxGdW5jcyA9IHNlbGVjdGlvbkV2YWxG
dW5jc0Zsb2F0OworICAgICAgICBpZiAoaXNCb29sQ2FzZSkKKyAgICAgICAgICAgIGV2YWxGdW5j
cyA9IHNlbGVjdGlvbkV2YWxGdW5jc0Jvb2w7CisgICAgICAgIGVsc2UgaWYgKGlzSW50Q2FzZSkK
KyAgICAgICAgICAgIGV2YWxGdW5jcyA9IHNlbGVjdGlvbkV2YWxGdW5jc0ludDsKKyAgICAgICAg
ZWxzZSBpZiAoaXNVaW50Q2FzZSkKKyAgICAgICAgICAgIGV2YWxGdW5jcyA9IHNlbGVjdGlvbkV2
YWxGdW5jc1VpbnQ7CisKKyAgICAgICAgdmFyIGV2YWxGdW5jID0gZXZhbEZ1bmNzW3NjYWxhclNp
emVdOworCisgICAgICAgIGZvciAodmFyIHByZWMgaW4gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24p
IHsKKyAgICAgICAgICAgIHZhciBwcmVjaXNpb24gPSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbltw
cmVjXTsKKyAgICAgICAgICAgIGlmIChpc0Jvb2xDYXNlICYmIHByZWNpc2lvbiAhPSBnbHVTaGFk
ZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCkgLy8gVXNlIG1lZGl1bXAgaW50ZXJw
b2xhdG9ycyBmb3IgYm9vbGVhbnMuCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIHZhciBwcmVjaXNpb25TdHIgPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUo
cHJlY2lzaW9uKTsKKyAgICAgICAgICAgIHZhciBwcmVjaXNpb25QcmVmaXggPSBpc0Jvb2xDYXNl
ID8gJycgOiAocHJlY2lzaW9uU3RyICsgJ18nKTsKKworICAgICAgICAgICAgZm9yICh2YXIgc2hh
ZGVyVHlwZU5keCA9IDA7IHNoYWRlclR5cGVOZHggPCBzX3NoYWRlclR5cGVzLmxlbmd0aDsgc2hh
ZGVyVHlwZU5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHNoYWRlclR5cGUgPSBzX3NoYWRl
clR5cGVzW3NoYWRlclR5cGVOZHhdOworICAgICAgICAgICAgICAgIHZhciBzaGFkZXJTcGVjID0g
bmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlckRhdGFTcGVjKCk7CisgICAgICAgICAg
ICAgICAgdmFyIHNoYWRlclR5cGVOYW1lID0gZ2x1U2hhZGVyUHJvZ3JhbS5nZXRTaGFkZXJUeXBl
TmFtZShzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgICAgICB2YXIgaXNWZXJ0ZXhDYXNlID0gc2hh
ZGVyVHlwZSA9PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYOworCisgICAgICAg
ICAgICAgICAgdmFyIG5hbWUgPSBwcmVjaXNpb25QcmVmaXggKyBkYXRhVHlwZVN0ciArICdfJyAr
IHNoYWRlclR5cGVOYW1lOworCisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5udW1JbnB1dHMg
PSAzOworICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucHJlY2lzaW9uID0gaXNCb29sQ2FzZSA/
IHVuZGVmaW5lZCA6IHByZWNpc2lvbjsKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVjLm91dHB1
dCA9IGN1clR5cGU7CisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5yZXN1bHRTY2FsZSA9IGlz
Qm9vbENhc2UgPyBmKDEuMCkgOiBpc0Zsb2F0Q2FzZSA/IGYoMC41KSA6IGlzVWludENhc2UgPyBm
KDAuNSkgOiBmKDAuMSk7CisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5yZXN1bHRCaWFzID0g
aXNCb29sQ2FzZSA/IGYoMC4wKSA6IGlzRmxvYXRDYXNlID8gZigwLjUpIDogaXNVaW50Q2FzZSA/
IGYoMC4wKSA6IGYoMC41KTsKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVjLnJlZmVyZW5jZVNj
YWxlID0gc2hhZGVyU3BlYy5yZXN1bHRTY2FsZTsKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVj
LnJlZmVyZW5jZUJpYXMgPSBzaGFkZXJTcGVjLnJlc3VsdEJpYXM7CisKKyAgICAgICAgICAgICAg
ICB2YXIgcmFuZ2VNaW4gPSBpc0Jvb2xDYXNlID8gLTEuMCA6IGlzRmxvYXRDYXNlID8gLTEuMCA6
IGlzVWludENhc2UgPyAwLjAgOiAtNS4wOworICAgICAgICAgICAgICAgIHZhciByYW5nZU1heCA9
IGlzQm9vbENhc2UgPyAxLjAgOiBpc0Zsb2F0Q2FzZSA/IDEuMCA6IGlzVWludENhc2UgPyAyLjAg
OiA1LjA7CisKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVjLmlucHV0c1swXSA9IG5ldyBlczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5TaGFkZXJWYWx1ZShnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJP
T0wsIGYoLTEuMCksIGYoMS4wKSk7CisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5pbnB1dHNb
MV0gPSBuZXcgZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU2hhZGVyVmFsdWUoY3VyVHlwZSwgZihy
YW5nZU1pbiksIGYocmFuZ2VNYXgpKTsKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVjLmlucHV0
c1syXSA9IG5ldyBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5TaGFkZXJWYWx1ZShjdXJUeXBlLCBm
KHJhbmdlTWluKSwgZihyYW5nZU1heCkpOworCisgICAgICAgICAgICAgICAgc2VsZWN0aW9uR3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9wZXJhdG9yQ2Fz
ZShuYW1lLCAnJywgaXNWZXJ0ZXhDYXNlLCBldmFsRnVuYywgJ3JlcyA9IGluMCA/IGluMSA6IGlu
MjsnLCBzaGFkZXJTcGVjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBUaGUgc2VxdWVuY2Ugb3BlcmF0b3IgKGNvbW1hKS4KKyAgICAvKiogQHR5cGUge3RjdVRl
c3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgc2VxdWVuY2VHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdCgnc2VxdWVuY2UnLCAnc2VxdWVuY2UnKTsKKyAgICB0aGlzLmFkZENoaWxkKHNlcXVl
bmNlR3JvdXApOworCisgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFy
IHNlcXVlbmNlTm9TaWRlRWZmR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ25vX3Np
ZGVfZWZmZWN0cycsICdTZXF1ZW5jZSB0ZXN0cyB3aXRob3V0IHNpZGUtZWZmZWN0cycpOworICAg
IC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBzZXF1ZW5jZVNpZGVFZmZH
cm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgnc2lkZV9lZmZlY3RzJywgJ1NlcXVlbmNl
IHRlc3RzIHdpdGggc2lkZS1lZmZlY3RzJyk7CisgICAgc2VxdWVuY2VHcm91cC5hZGRDaGlsZChz
ZXF1ZW5jZU5vU2lkZUVmZkdyb3VwKTsKKyAgICBzZXF1ZW5jZUdyb3VwLmFkZENoaWxkKHNlcXVl
bmNlU2lkZUVmZkdyb3VwKTsKKworICAgIC8qKgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNvbnRhaW5zU2lkZUVmZmVjdHMKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gY2FzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhw
cmVzc2lvblN0cgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1JbnB1dHMKKyAgICAgKiBAcGFy
YW0ge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0YVR5cGU+fSBpbnB1dFR5cGVzCisgICAgICogQHBh
cmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSByZXN1bHRUeXBlCisgICAgICogQHBhcmFtIHtn
bHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxGdW5jfSBldmFsRnVuYworICAgICAqLworICAg
ICB2YXIgU2VxdWVuY2VDYXNlID0gZnVuY3Rpb24oY29udGFpbnNTaWRlRWZmZWN0cywgY2FzZU5h
bWUsIGV4cHJlc3Npb25TdHIsIG51bUlucHV0cywgaW5wdXRUeXBlcywgcmVzdWx0VHlwZSwgZXZh
bEZ1bmMpIHsKKyAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5jb250YWluc1Np
ZGVFZmZlY3RzID0gY29udGFpbnNTaWRlRWZmZWN0czsKKyAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB0aGlzLmNhc2VOYW1lID0gY2FzZU5hbWU7CisgICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdGhpcy5leHByZXNzaW9uU3RyID0gZXhwcmVzc2lvblN0cjsKKyAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm51bUlucHV0cyA9IG51bUlucHV0czsKKyAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59ICovIHRoaXMuaW5wdXRU
eXBlcyA9IGlucHV0VHlwZXM7CisgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9ICovIHRoaXMucmVzdWx0VHlwZSA9IHJlc3VsdFR5cGU7CisgICAgICAgICAvKiogQHR5
cGUge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbEZ1bmN9ICovIHRoaXMuZXZhbEZ1bmMg
PSBldmFsRnVuYzsKKyAgICB9OworCisgICAgLyoqIEB0eXBlIHtBcnJheTxTZXF1ZW5jZUNhc2U+
fSAqLyB2YXIgc19zZXF1ZW5jZUNhc2VzID0gWworICAgICAgICBuZXcgU2VxdWVuY2VDYXNlKGZh
bHNlLCAndmVjNCcsICdpbjAsIGluMiArIGluMSwgaW4xICsgaW4wJywgMywgW2dsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzRdLCBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUX1ZFQzQsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmV2YWxTZXF1ZW5jZU5vU2lk
ZUVmZkNhc2UwKSwKKyAgICAgICAgbmV3IFNlcXVlbmNlQ2FzZShmYWxzZSwgJ2Zsb2F0X3VpbnQn
LCAnaW4wICsgaW4yLCBpbjEgKyBpbjEnLCAzLCBbZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUXSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0
cy5ldmFsU2VxdWVuY2VOb1NpZGVFZmZDYXNlMSksCisgICAgICAgIG5ldyBTZXF1ZW5jZUNhc2Uo
ZmFsc2UsICdib29sX3ZlYzInLCAnaW4wICYmIGluMSwgaW4wLCBpdmVjMih2ZWMyKGluMCkgKyBp
bjIpJywgMywgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5CT09MLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzJdLCBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVF9WRUMyLCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVu
Y2VOb1NpZGVFZmZDYXNlMiksCisgICAgICAgIG5ldyBTZXF1ZW5jZUNhc2UoZmFsc2UsICd2ZWM0
X2l2ZWM0X2J2ZWM0JywgJ2luMCArIHZlYzQoaW4xKSwgaW4yLCBpbjEnLCAzLCBbZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNF0sIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5UX1ZFQzQsIGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmV2YWxTZXF1ZW5jZU5vU2lkZUVm
ZkNhc2UzKSwKKworICAgICAgICBuZXcgU2VxdWVuY2VDYXNlKHRydWUsICd2ZWM0JywgJ2luMCsr
LCBpbjEgPSBpbjAgKyBpbjIsIGluMiA9IGluMScsIDMsIFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0XSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUM0LCBlczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVuY2VTaWRlRWZmQ2FzZTApLAor
ICAgICAgICBuZXcgU2VxdWVuY2VDYXNlKHRydWUsICdmbG9hdF91aW50JywgJ2luMSsrLCBpbjAg
PSBmbG9hdChpbjEpLCBpbjEgPSB1aW50KGluMCArIGluMiknLCAzLCBbZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUXSwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBlczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5ldmFsU2VxdWVuY2VTaWRlRWZmQ2FzZTEpLAorICAgICAgICBuZXcgU2Vx
dWVuY2VDYXNlKHRydWUsICdib29sX3ZlYzInLCAnaW4xID0gaW4wLCBpbjIrKywgaW4yID0gaW4y
ICsgdmVjMihpbjEpLCBpdmVjMihpbjIpJywgMywgW2dsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9P
TCwgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX1ZFQzJdLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLCBlczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5ldmFsU2VxdWVuY2VTaWRlRWZmQ2FzZTIpLAorICAgICAgICBuZXcgU2VxdWVu
Y2VDYXNlKHRydWUsICd2ZWM0X2l2ZWM0X2J2ZWM0JywgJ2luMCA9IGluMCArIHZlYzQoaW4yKSwg
aW4xID0gaW4xICsgaXZlYzQoaW4wKSwgaW4xKysnLCAzLCBbZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9WRUM0LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0LCBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkJPT0xfVkVDNF0sIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQs
IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmV2YWxTZXF1ZW5jZVNpZGVFZmZDYXNlMykKKyAgICBd
OworCisgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBzX3NlcXVlbmNlQ2FzZXMu
bGVuZ3RoOyBjYXNlTmR4KyspIHsKKyAgICAgICAgZm9yICh2YXIgcHJlY2lzaW9uIGluIGdsdVNo
YWRlclV0aWwucHJlY2lzaW9uKSB7CisgICAgICAgICAgICBmb3IgKHZhciBzaGFkZXJUeXBlTmR4
ID0gMDsgc2hhZGVyVHlwZU5keCA8IHNfc2hhZGVyVHlwZXMubGVuZ3RoOyBzaGFkZXJUeXBlTmR4
KyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uc2hhZGVy
VHlwZX0gKi8gdmFyIHNoYWRlclR5cGUgPSBzX3NoYWRlclR5cGVzW3NoYWRlclR5cGVOZHhdOwor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuU2hhZGVy
RGF0YVNwZWN9ICovIHZhciBzaGFkZXJTcGVjID0gbmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3Rz
LlNoYWRlckRhdGFTcGVjKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHZhciBzaGFkZXJUeXBlTmFtZSA9IGdsdVNoYWRlclByb2dyYW0uZ2V0U2hhZGVyVHlwZU5hbWUo
c2hhZGVyVHlwZSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIg
aXNWZXJ0ZXhDYXNlID0gc2hhZGVyVHlwZSA9PT0gZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBl
LlZFUlRFWDsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFt
ZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShnbHVTaGFkZXJVdGlsLnByZWNpc2lv
bltwcmVjaXNpb25dKSArICdfJyArIHNfc2VxdWVuY2VDYXNlc1tjYXNlTmR4XS5jYXNlTmFtZSAr
ICdfJyArIHNoYWRlclR5cGVOYW1lOworCisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5udW1J
bnB1dHMgPSBzX3NlcXVlbmNlQ2FzZXNbY2FzZU5keF0ubnVtSW5wdXRzOworICAgICAgICAgICAg
ICAgIHNoYWRlclNwZWMucHJlY2lzaW9uID0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb25bcHJlY2lz
aW9uXTsKKyAgICAgICAgICAgICAgICBzaGFkZXJTcGVjLm91dHB1dCA9IHNfc2VxdWVuY2VDYXNl
c1tjYXNlTmR4XS5yZXN1bHRUeXBlOworICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucmVzdWx0
U2NhbGUgPSBmKDAuNSk7CisgICAgICAgICAgICAgICAgc2hhZGVyU3BlYy5yZXN1bHRCaWFzID0g
ZigwLjApOworICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucmVmZXJlbmNlU2NhbGUgPSBzaGFk
ZXJTcGVjLnJlc3VsdFNjYWxlOworICAgICAgICAgICAgICAgIHNoYWRlclNwZWMucmVmZXJlbmNl
QmlhcyA9IHNoYWRlclNwZWMucmVzdWx0QmlhczsKKworICAgICAgICAgICAgICAgIGZvciAodmFy
IGlucHV0TmR4ID0gMDsgaW5wdXROZHggPCBzX3NlcXVlbmNlQ2FzZXNbY2FzZU5keF0ubnVtSW5w
dXRzOyBpbnB1dE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHR5cGUgPSBzX3NlcXVlbmNlQ2FzZXNbY2FzZU5keF0u
aW5wdXRUeXBlc1tpbnB1dE5keF07CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuRmxvYXRTY2FsYXJ9ICovIHZhciByYW5nZU1pbiA9IGdsdVNo
YWRlclV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWModHlwZSkgPworICAgICAgICAgICAgICAgICAg
ICAgICAgZigtMC41KSA6IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUludE9ySVZlYyh0eXBlKSA/
CisgICAgICAgICAgICAgICAgICAgICAgICBmKC0yLjApIDogZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlVWludE9yVVZlYyh0eXBlKSA/CisgICAgICAgICAgICAgICAgICAgICAgICBmKDAuMCkgOiBm
KC0xLjApOworCisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMuRmxvYXRTY2FsYXJ9ICovIHZhciByYW5nZU1heCA9IGdsdVNoYWRlclV0aWwuaXNE
YXRhVHlwZUZsb2F0T3JWZWModHlwZSkgPworICAgICAgICAgICAgICAgICAgICAgICAgZigwLjUp
IDogZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50T3JJVmVjKHR5cGUpID8KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGYoMi4wKSA6IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVVpbnRPclVWZWMo
dHlwZSkgPworICAgICAgICAgICAgICAgICAgICAgICAgZigyLjApIDogZigxLjApOworCisgICAg
ICAgICAgICAgICAgICAgIHNoYWRlclNwZWMuaW5wdXRzW2lucHV0TmR4XSA9IG5ldyBlczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5TaGFkZXJWYWx1ZSh0eXBlLCByYW5nZU1pbiwgcmFuZ2VNYXgpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgZXhwcmVzc2lvbiA9ICdyZXMgPSAoJyArIHNfc2VxdWVuY2VDYXNlc1tjYXNlTmR4XS5l
eHByZXNzaW9uU3RyICsgJyk7JzsKKworICAgICAgICAgICAgICAgIGlmIChzX3NlcXVlbmNlQ2Fz
ZXNbY2FzZU5keF0uY29udGFpbnNTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAgc2Vx
dWVuY2VTaWRlRWZmR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNo
YWRlck9wZXJhdG9yQ2FzZShuYW1lLCAnJywgaXNWZXJ0ZXhDYXNlLCBzX3NlcXVlbmNlQ2FzZXNb
Y2FzZU5keF0uZXZhbEZ1bmMsIGV4cHJlc3Npb24sIHNoYWRlclNwZWMpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlTm9TaWRlRWZmR3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9wZXJhdG9yQ2FzZShuYW1l
LCAnJywgaXNWZXJ0ZXhDYXNlLCBzX3NlcXVlbmNlQ2FzZXNbY2FzZU5keF0uZXZhbEZ1bmMsIGV4
cHJlc3Npb24sIHNoYWRlclNwZWMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworfTsKKworLyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4
dH0gY29udGV4dAorKi8KK2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNv
bnRleHQsIHJhbmdlKSB7CisgICAgZ2wgPSBjb250ZXh0OworCisgICAgY29uc3QgY2FudmFzID0g
Z2wuY2FudmFzOworICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1dIOworICAgIGNhbnZhcy5oZWln
aHQgPSBjYW52YXNXSDsKKworICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAg
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVz
M2ZTaGFkZXJPcGVyYXRvclRlc3RzLlNoYWRlck9wZXJhdG9yVGVzdHMoKSk7CisKKyAgICAvL1Nl
dCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIHNldEN1
cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgZGVzY3JpcHRp
b24oc3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgaWYgKHJhbmdlKQorICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAg
ICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOwor
ICAgIH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWls
ZWQgdG8gZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAg
ICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgfQorfTsKKworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmpzIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTQy
MzNkYjRjZjdmNzllOWRiMzM5NGUwZDllMjI5ZjVlOWMwY2EzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5qcwpAQCAtMCwwICsxLDc5
MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFt
IE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdU1hdHJpeFV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFz
ZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5k
b20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxlcy5z
aGFyZWQuZ2xzU2hhZGVyRXhlY1V0aWwnKTsKKworCisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7
CisJdmFyIGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzOworCXZhciB0Y3VGbG9hdCA9IGZyYW1ld29y
ay5jb21tb24udGN1RmxvYXQ7CisJdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXN0Q2FzZTsKKwl2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRo
OworCXZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworCXZh
ciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworCXZhciBnbHVT
aGFkZXJQcm9ncmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworCXZhciBn
bHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworCXZhciBnbHVW
YXJUeXBlID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlOworCXZhciBnbHNTaGFkZXJFeGVj
VXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckV4ZWNVdGlsOworCXZhciB0Y3VNYXRyaXhV
dGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXhVdGlsOworCS8qKgorCSAqIEBwYXJhbSB7
bnVtYmVyfSBhCisJICogQHBhcmFtIHtudW1iZXJ9IGIKKwkgKiBAcmV0dXJuIHtudW1iZXJ9CisJ
ICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmdldFVscERpZmYgPSBmdW5jdGlv
bihhLCBiKSB7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYUJpdHMJPSB0Y3VGbG9hdC5u
ZXdGbG9hdDMyKGEpLmJpdHMoKTsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBiQml0cwk9
IHRjdUZsb2F0Lm5ld0Zsb2F0MzIoYikuYml0cygpOworCQlyZXR1cm4gYUJpdHMgPiBiQml0cyA/
IGFCaXRzIC0gYkJpdHMgOiBiQml0cyAtIGFCaXRzOworCX07CisKKwkvKioKKwkgKiBAY29uc3Ry
dWN0b3IKKwkgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisJICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKiBAcGFyYW0g
e2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorCSAqLworCWVzM2ZTaGFk
ZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24sIHNoYWRlclR5cGUpIHsKKwkJdGN1VGVzdENhc2UuRGVxcFRl
c3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisJCS8qKiBAdHlwZSB7Z2x1U2hhZGVy
UHJvZ3JhbS5zaGFkZXJUeXBlfSAqLyB0aGlzLm1fc2hhZGVyVHlwZSA9IHNoYWRlclR5cGU7CisJ
CS8qKiBAdHlwZSB7P2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWN9ICovIHRoaXMubV9zcGVj
ID0gbmV3IGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWMoKTsKKwkJLyoqIEB0eXBlIHs/Z2xz
U2hhZGVyRXhlY1V0aWwuU2hhZGVyRXhlY3V0b3J9ICovIHRoaXMubV9leGVjdXRvciA9IG51bGw7
CisJfTsKKworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVu
Y3Rpb25DYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3Qu
cHJvdG90eXBlKTsKKwllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2lu
Z0Z1bmN0aW9uQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyUGFja2luZ0Z1
bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uQ2FzZTsKKworCWVzM2ZTaGFkZXJQYWNr
aW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlLnByb3RvdHlwZS5pbml0
ID0gZnVuY3Rpb24oKSB7CisJCWFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV9leGVjdXRvciwgJ0Vy
cm9yOiBFeGVjdXRvciBpcyBub3QgbnVsbC4nLCBmYWxzZSwgdHJ1ZSk7CisJCXRoaXMubV9leGVj
dXRvciA9IGdsc1NoYWRlckV4ZWNVdGlsLmNyZWF0ZUV4ZWN1dG9yKHRoaXMubV9zaGFkZXJUeXBl
LCB0aGlzLm1fc3BlYyk7CisJCWlmICghdGhpcy5tX2V4ZWN1dG9yLmlzT2soKSkKKwkJCXRocm93
IG5ldyBFcnJvcignQ29tcGlsZSBmYWlsZWQnKTsKKwl9OworCisJZXMzZlNoYWRlclBhY2tpbmdG
dW5jdGlvblRlc3RzLlNoYWRlclBhY2tpbmdGdW5jdGlvbkNhc2UucHJvdG90eXBlLmRlaW5pdCA9
IGZ1bmN0aW9uKCkgeworCQl0aGlzLm1fZXhlY3V0b3IgPSBudWxsOworCX07CisKKwkvKioKKwkg
KglAcGFyYW0ge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKwkgKiBAcmV0dXJu
IHtzdHJpbmd9CisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmdldFByZWNp
c2lvblBvc3RmaXggPSBmdW5jdGlvbihwcmVjaXNpb24pIHsKKwkJLyoqIEB0eXBlIHtBcnJheTxz
dHJpbmc+fSAqLyB2YXIgc19wb3N0Zml4ID0gWworCQkJJ19sb3dwJywKKwkJCSdfbWVkaXVtcCcs
CisJCQknX2hpZ2hwJworCQldOworCQlhc3NlcnRNc2dPcHRpb25zKDAgPD0gcHJlY2lzaW9uICYm
IHByZWNpc2lvbiA8IHNfcG9zdGZpeC5sZW5ndGgsICdFcnJvcjogT3V0IG9mIHJhbmdlJywgZmFs
c2UsIHRydWUpOworCQlyZXR1cm4gc19wb3N0Zml4W3ByZWNpc2lvbl07CisJfTsKKworCS8qKgor
CSAqCUBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisJICog
QHJldHVybiB7c3RyaW5nfQorCSAqLworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5n
ZXRTaGFkZXJUeXBlUG9zdGZpeCA9IGZ1bmN0aW9uKHNoYWRlclR5cGUpIHsKKwkJLyoqIEB0eXBl
IHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgc19wb3N0Zml4ID0gWworCQkJJ192ZXJ0ZXgnLAorCQkJ
J19mcmFnbWVudCcKKwkJXTsKKwkJYXNzZXJ0TXNnT3B0aW9ucygwIDw9IHNoYWRlclR5cGUgJiYg
c2hhZGVyVHlwZSA8IHNfcG9zdGZpeC5sZW5ndGgsICdFcnJvciBPdXQgb2YgcmFuZ2UnLCBmYWxz
ZSwgdHJ1ZSk7CisJCXJldHVybiBzX3Bvc3RmaXhbc2hhZGVyVHlwZV07CisJfTsKKworCS8qKgor
CSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHtlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uQ2FzZX0KKwkgKiBAcGFyYW0ge2dsdVNoYWRlclBy
b2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorCSAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5w
cmVjaXNpb259IHByZWNpc2lvbgorCSAqLworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0
cy5QYWNrU25vcm0yeDE2Q2FzZSA9IGZ1bmN0aW9uKHNoYWRlclR5cGUsIHByZWNpc2lvbikgewor
CQkvKiogQGNvbnN0IHtzdHJpbmd9ICovIHZhciBuYW1lID0gJ3BhY2tzbm9ybTJ4MTYnICsKKwkJ
CWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5nZXRQcmVjaXNpb25Qb3N0Zml4KHByZWNp
c2lvbikgKworCQkJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmdldFNoYWRlclR5cGVQ
b3N0Zml4KHNoYWRlclR5cGUpOworCQllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hh
ZGVyUGFja2luZ0Z1bmN0aW9uQ2FzZS5jYWxsKHRoaXMsIG5hbWUsICdwYWNrU25vcm0yeDE2Jywg
c2hhZGVyVHlwZSk7CisJCXRoaXMubV9wcmVjaXNpb24gPSBwcmVjaXNpb247CisKKwkJdGhpcy5t
X3NwZWMuaW5wdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4wJywgZ2x1
VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLCBw
cmVjaXNpb24pKSk7CisJCXRoaXMubV9zcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hhZGVyRXhl
Y1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5ULCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAp
KSk7CisJCXRoaXMubV9zcGVjLnNvdXJjZSA9ICdvdXQwID0gcGFja1Nub3JtMngxNihpbjApOyc7
CisJfTsKKworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrU25vcm0yeDE2Q2Fz
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0
cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlLnByb3RvdHlwZSk7CisJZXMzZlNoYWRlclBhY2tp
bmdGdW5jdGlvblRlc3RzLlBhY2tTbm9ybTJ4MTZDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrU25vcm0yeDE2Q2FzZTsKKworCS8q
KgorCSAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisJICovCisJZXMzZlNo
YWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tTbm9ybTJ4MTZDYXNlLnByb3RvdHlwZS5pdGVy
YXRlID0gZnVuY3Rpb24oKSB7CisJCS8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5uYW1l
KSBeIDB4Nzc2MDAyKTsKKwkJLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFy
IGlucHV0cyA9IFtdOworCQkvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0gKi8gdmFyIG91dHB1
dHM7IC8vIGRlVWludDMyCisJCS8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgc2hh
ZGVyRXhlY3V0b3JPdXRwdXQ7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4RGlmZiA9
IHRoaXMubV9wcmVjaXNpb24gPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJ
R0hQID8gMSA6IC8vIFJvdW5kaW5nIG9ubHkuCisJCQkJCQkJCQkJCXRoaXMubV9wcmVjaXNpb24g
PT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAgPyAzMyA6IC8vICgy
Xi0xMCkgKiAoMl4xNSkgKyAxCisJCQkJCQkJCQkJCXRoaXMubV9wcmVjaXNpb24gPT0gZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AgPyAxMjkgOiAwOyAvLyAoMl4tOCkgKiAo
Ml4xNSkgKyAxCisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeDsKKwkJLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB5OworCQkvLyBTcGVjaWFsIHZhbHVlcyB0byBjaGVjay4KKwkJaW5wdXRz
LnB1c2goWzAuMCwgMC4wXSk7CisJCWlucHV0cy5wdXNoKFstMS4wLCAxLjBdKTsKKwkJaW5wdXRz
LnB1c2goWzAuNSwgLTAuNV0pOworCQlpbnB1dHMucHVzaChbLTEuNSwgMS41XSk7CisJCWlucHV0
cy5wdXNoKFswLjI1LCAtMC43NV0pOworCisJCS8vIFJhbmRvbSB2YWx1ZXMsIG1vc3RseSBpbiBy
YW5nZS4KKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMTU7IG5keCsrKSB7CisJCQl4ID0gcm5k
LmdldEZsb2F0KCkgKiAyLjUgLSAxLjI1OworCQkJeSA9IHJuZC5nZXRGbG9hdCgpICogMi41IC0g
MS4yNTsKKwkJCWlucHV0cy5wdXNoKFt4LCB5XSk7CisJCX0KKworCQkvLyBMYXJnZSByYW5kb20g
dmFsdWVzLgorCQlmb3IgKHZhciBuZHggPSAwOyBuZHggPCA4MDsgbmR4KyspIHsKKwkJCXggPSBy
bmQuZ2V0RmxvYXQoKSAqIDFlNiAtIDAuNWU2OworCQkJeSA9IHJuZC5nZXRGbG9hdCgpICogMWU2
IC0gMC41ZTY7CisJCQlpbnB1dHMucHVzaChbeCwgeV0pOworCQl9CisKKwkJYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ0V4ZWN1dGluZyBzaGFkZXIgZm9yICcgKyBpbnB1dHMubGVuZ3RoICsgJyBpbnB1
dCB2YWx1ZXMnKTsKKworCQl0aGlzLm1fZXhlY3V0b3IudXNlUHJvZ3JhbSgpOworCQlzaGFkZXJF
eGVjdXRvck91dHB1dCA9IHRoaXMubV9leGVjdXRvci5leGVjdXRlKGlucHV0cy5sZW5ndGgsIFt0
Y3VNYXRyaXhVdGlsLmZsYXR0ZW4oaW5wdXRzKV0pWzBdOworCisJCS8vIENvbnZlcnQgb3V0cHV0
cyBpZiB3ZSBnZXQgdGhlbSBhcyBVaW50OEFycmF5LgorCQkvLyAtIFZlcnRleFNoYWRlckV4ZWN1
dG9yLmV4ZWN1dGUoKSByZXR1cm5zIGVpdGhlciBhbiBhcnJheSBvZiBVaW50OEFycmF5CisJCS8v
IC0gRnJhZ21lbnRTaGFkZXJFeGVjdXRvci5leGVjdXRlKCkgcmV0dXJucyBlaXRoZXIgYW4gYXJy
YXkgb2YgVWludDhBcnJheSBvciBVaW50MzJBcnJheQorCSAgICBvdXRwdXRzID0gbmV3IFVpbnQz
MkFycmF5KHNoYWRlckV4ZWN1dG9yT3V0cHV0LmJ1ZmZlcik7CisKKwkJLy8gVmVyaWZ5CisJCS8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtVmFsdWVzID0gaW5wdXRzLmxlbmd0aDsKKwkJLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhQcmludHMgPSAxMDsKKwkJLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1GYWlsZWQgPSAwOworCisJCWZvciAodmFyIHZhbE5keCA9IDA7IHZhbE5k
eCA8IG51bVZhbHVlczsgdmFsTmR4KyspIHsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
cmVmMCA9IChkZU1hdGguY2xhbXAoTWF0aC5mbG9vcihkZU1hdGguY2xhbXAoaW5wdXRzW3ZhbE5k
eF1bMF0sIC0xLjAsIDEuMCkgKiAzMjc2Ny4wKSwgLSgxIDw8IDE1KSwgKDEgPDwgMTUpIC0gMSkp
ICYgMHhGRkZGOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYxID0gKGRlTWF0aC5j
bGFtcChNYXRoLmZsb29yKGRlTWF0aC5jbGFtcChpbnB1dHNbdmFsTmR4XVsxXSwgLTEuMCwgMS4w
KSAqIDMyNzY3LjApLCAtKDEgPDwgMTUpLCAoMSA8PCAxNSkgLSAxKSkgJiAweEZGRkY7CisJCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZiA9IChyZWYxIDw8IDE2KSB8IHJlZjA7CisJCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlcyA9IG91dHB1dHNbdmFsTmR4XTsKKwkJCS8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzMCA9IChyZXMgJiAweGZmZmYpOworCQkJLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciByZXMxID0gZGVNYXRoLnNoaWZ0UmlnaHQocmVzLCAxNik7CisJCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRpZmYwID0gTWF0aC5hYnMocmVmMCAtIHJlczApOwor
CQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaWZmMSA9IE1hdGguYWJzKHJlZjEgLSByZXMx
KTsKKworCQkJaWYgKGRpZmYwID4gbWF4RGlmZiB8fCBkaWZmMSA+IG1heERpZmYpIHsKKwkJCQlp
ZiAobnVtRmFpbGVkIDwgbWF4UHJpbnRzKSB7CisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKAor
CQkJCQkJJ0VSUk9SOiBNaXNtYXRjaCBpbiB2YWx1ZSAnICsgdmFsTmR4ICsKKwkJCQkJCScsIGV4
cGVjdGVkIHBhY2tTbm9ybTJ4MTYoJyArIGlucHV0c1t2YWxOZHhdICsgJykgPSAnICsgcmVmICsg
Ly90Y3U6OnRvSGV4KHJlZikKKwkJCQkJCScsIGdvdCAnICsgcmVzICsgLy8gdGN1Ojp0b0hleChy
ZXMpCisJCQkJCQknXG4gIGRpZmZzID0gKCcgKyBkaWZmMCArICcsICcgKyBkaWZmMSArICcpLCBt
YXggZGlmZiA9ICcgKyBtYXhEaWZmKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAobnVtRmFpbGVkID09
IG1heFByaW50cykKKwkJCQkJYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy4uLicpOworCisJCQkJbnVt
RmFpbGVkICs9IDE7CisJCQl9CisJCX0KKworCQlidWZmZXJlZExvZ1RvQ29uc29sZSgobnVtVmFs
dWVzIC0gbnVtRmFpbGVkKSArICcgLyAnICsgbnVtVmFsdWVzICsgJyB2YWx1ZXMgcGFzc2VkJyk7
CisKKwkJLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IG51bUZhaWxlZCA9PT0gMDsK
KwkJaWYgKCFpc09rKQorCQkJdGVzdEZhaWxlZE9wdGlvbnMoJ1Jlc3VsdCBjb21wYXJpc29uIGZh
aWxlZCcsIGZhbHNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZE9wdGlv
bnMoJ1Bhc3MnLCB0cnVlKTsKKworCQlyZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5T
VE9QOworCX07CisKKworCS8qKgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHtlczNm
U2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uQ2FzZX0KKwkg
KiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorCSAqLwor
CWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5VbnBhY2tTbm9ybTJ4MTZDYXNlID0gZnVu
Y3Rpb24oc2hhZGVyVHlwZSkgeworCQkvKiogQGNvbnN0IHtzdHJpbmd9ICovIHZhciBuYW1lID0g
J3VucGFja3Nub3JtMngxNicgKyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuZ2V0U2hh
ZGVyVHlwZVBvc3RmaXgoc2hhZGVyVHlwZSk7CisJCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25U
ZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlLmNhbGwodGhpcywgbmFtZSwgJ3VucGFja1Nu
b3JtMngxNicsIHNoYWRlclR5cGUpOworCisJCXRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBn
bHNTaGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lT
SU9OX0hJR0hQKSkpOworCQl0aGlzLm1fc3BlYy5vdXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4
ZWNVdGlsLlN5bWJvbCgnb3V0MCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X0hJR0hQKSkpOworCQl0aGlzLm1fc3BlYy5zb3VyY2UgPSAnb3V0MCA9IHVucGFja1Nub3JtMngx
NihpbjApOyc7CisJfTsKKworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5VbnBhY2tT
bm9ybTJ4MTZDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZlNoYWRlclBhY2tpbmdG
dW5jdGlvblRlc3RzLlNoYWRlclBhY2tpbmdGdW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKwllczNm
U2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrU25vcm0yeDE2Q2FzZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrU25vcm0y
eDE2Q2FzZTsKKworCS8qKgorCSAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9
CisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlVucGFja1Nub3JtMngxNkNh
c2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhEaWZmID0gMTsgLy8gUm91bmRpbmcgZXJyb3IuCisJCS8qKiBAdHlwZSB7ZGVS
YW5kb20uUmFuZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5k
ZVN0cmluZ0hhc2godGhpcy5uYW1lKSBeIDB4Nzc2MDAyKTsKKwkJLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgaW5wdXRzID0gW107CisJCS8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5
fSAqLyB2YXIgc2hhZGVyRXhlY3V0b3JPdXRwdXQ7IC8vdmVjdG9yPHZlYzI8ZmxvYXQ+PgorCQkv
KiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0gKi8gdmFyIG91dHB1dHM7IC8vdmVjdG9yPHZlYzI8
ZmxvYXQ+PgorCisJCWlucHV0cy5wdXNoKDB4MDAwMDAwMDApOworCQlpbnB1dHMucHVzaCgweDdm
ZmY4MDAwKTsKKwkJaW5wdXRzLnB1c2goMHg4MDAwN2ZmZik7CisJCWlucHV0cy5wdXNoKDB4ZmZm
ZmZmZmYpOworCQlpbnB1dHMucHVzaCgweDAwMDFmZmZlKTsKKworCQkvLyBSYW5kb20gdmFsdWVz
LgorCQlmb3IgKHZhciBuZHggPSAwOyBuZHggPCA5NTsgbmR4KyspCisJCQlpbnB1dHMucHVzaChy
bmQuZ2V0SW50KCkpOworCisJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFeGVjdXRpbmcgc2hhZGVy
IGZvciAnICsgaW5wdXRzLmxlbmd0aCArICcgaW5wdXQgdmFsdWVzJyk7CisKKwkJdGhpcy5tX2V4
ZWN1dG9yLnVzZVByb2dyYW0oKTsKKwkJc2hhZGVyRXhlY3V0b3JPdXRwdXQgPSB0aGlzLm1fZXhl
Y3V0b3IuZXhlY3V0ZShpbnB1dHMubGVuZ3RoLCBbaW5wdXRzXSlbMF07IC8vIFRoaXMgdGVzdCBj
YXNlIG9ubHkgaGFzIG9uZSBvdXRwdXQKKworCQkvLyBDb252ZXJ0IG91dHB1dHMgaWYgd2UgZ2V0
IHRoZW0gYXMgVWludDhBcnJheS4KKwkJLy8gLSBWZXJ0ZXhTaGFkZXJFeGVjdXRvci5leGVjdXRl
KCkgcmV0dXJucyBlaXRoZXIgYW4gYXJyYXkgb2YgVWludDhBcnJheQorCQkvLyAtIEZyYWdtZW50
U2hhZGVyRXhlY3V0b3IuZXhlY3V0ZSgpIHJldHVybnMgZWl0aGVyIGFuIGFycmF5IG9mIFVpbnQ4
QXJyYXkgb3IgVWludDMyQXJyYXkKKwkJb3V0cHV0cyA9IG5ldyBGbG9hdDMyQXJyYXkoc2hhZGVy
RXhlY3V0b3JPdXRwdXQuYnVmZmVyKTsKKworCQkvLyBWZXJpZnkKKwkJLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1WYWx1ZXMgPSBpbnB1dHMubGVuZ3RoOworCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1heFByaW50cyA9IDEwOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51
bUZhaWxlZCA9IDA7CisKKwkJZm9yICh2YXIgdmFsTmR4ID0gMDsgdmFsTmR4IDwgaW5wdXRzLmxl
bmd0aDsgdmFsTmR4KyspIHsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4wID0gTWF0
aC5mbG9vcihpbnB1dHNbdmFsTmR4XSAmIDB4ZmZmZik7CisJCQkvLyBDb252ZXJ0IDE2LWJpdCB1
aW50IHRvIDE2LWJpdCBpbnQKKwkJCXZhciB2aWV3ID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1
ZmZlcig0KSk7CisJCQl2aWV3LnNldFVpbnQxNigwLCBpbjAsIHRydWUpOworCQkJaW4wID0gdmll
dy5nZXRJbnQxNigwLCB0cnVlKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4xID0g
TWF0aC5mbG9vcihkZU1hdGguc2hpZnRSaWdodChpbnB1dHNbdmFsTmR4XSwgMTYpKTsKKwkJCS8v
IENvbnZlcnQgMTYtYml0IHVpbnQgdG8gMTYtYml0IGludAorCQkJdmFyIHZpZXcgPSBuZXcgRGF0
YVZpZXcobmV3IEFycmF5QnVmZmVyKDQpKTsKKwkJCXZpZXcuc2V0VWludDE2KDAsIGluMSwgdHJ1
ZSk7CisJCQlpbjEgPSB2aWV3LmdldEludDE2KDAsIHRydWUpOworCQkJLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciByZWYwID0gZGVNYXRoLmNsYW1wKGluMCAvIDMyNzY3LiwgLTEuMCwgMS4wKTsK
KwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmMSA9IGRlTWF0aC5jbGFtcChpbjEgLyAz
Mjc2Ny4sIC0xLjAsIDEuMCk7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlczAgPSBv
dXRwdXRzWzIgKiB2YWxOZHhdOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZXMxID0g
b3V0cHV0c1syICogdmFsTmR4ICsgMV07CisKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
ZGlmZjAgPSBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuZ2V0VWxwRGlmZihyZWYwLCBy
ZXMwKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZGlmZjEgPSBlczNmU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMuZ2V0VWxwRGlmZihyZWYxLCByZXMxKTsKKworCQkJaWYgKGRpZmYw
ID4gbWF4RGlmZiB8fCBkaWZmMSA+IG1heERpZmYpIHsKKwkJCQlpZiAobnVtRmFpbGVkIDwgbWF4
UHJpbnRzKQorCQkJCQlidWZmZXJlZExvZ1RvQ29uc29sZSgnRVJST1I6IE1pc21hdGNoIGluIHZh
bHVlICcgKyB2YWxOZHggKyAnLFxuJyArCisJCQkJICAgIAknICBleHBlY3RlZCB1bnBhY2tTbm9y
bTJ4MTYoJyArIGlucHV0c1t2YWxOZHhdLnRvU3RyaW5nKDE2KSArICcpID0gJyArCisJCQkJICAg
IAkndmVjMignICsgcmVmMC50b1N0cmluZygxNikgKyAnLCAnICsgcmVmMS50b1N0cmluZygxNikg
KyAnKScgKworCQkJCSAgICAJJywgZ290IHZlYzIoJyArIHJlczAudG9TdHJpbmcoMTYpICsgJywg
JyArIHJlczEudG9TdHJpbmcoMTYpICsgJyknICsKKwkJCQkgICAgCSdcbiAgVUxQIGRpZmZzID0g
KCcgKyBkaWZmMCArICcsICcgKyBkaWZmMSArICcpLCBtYXggZGlmZiA9ICcgKyBtYXhEaWZmKTsK
KwkJCQllbHNlIGlmIChudW1GYWlsZWQgPT0gbWF4UHJpbnRzKQorCQkJCQlidWZmZXJlZExvZ1Rv
Q29uc29sZSgnLi4uJyk7CisKKwkJCQludW1GYWlsZWQgKz0gMTsKKwkJCX0KKwkJfQorCisJCWJ1
ZmZlcmVkTG9nVG9Db25zb2xlKChudW1WYWx1ZXMgLSBudW1GYWlsZWQpICsgJyAvICcgKyBudW1W
YWx1ZXMgKyAnIHZhbHVlcyBwYXNzZWQnKTsKKworCQkvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBpc09rID0gbnVtRmFpbGVkID09PSAwOworCQlpZiAoIWlzT2spCisJCQl0ZXN0RmFpbGVkT3B0
aW9ucygnUmVzdWx0IGNvbXBhcmlzb24gZmFpbGVkJywgZmFsc2UpOworCQllbHNlCisJCQl0ZXN0
UGFzc2VkT3B0aW9ucygnUGFzcycsIHRydWUpOworCisJCXJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisJfTsKKworCS8qKgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRl
bmRzIHtlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9u
Q2FzZX0KKwkgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlw
ZQorCSAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lvbgorCSAqLwor
CWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrVW5vcm0yeDE2Q2FzZSA9IGZ1bmN0
aW9uKHNoYWRlclR5cGUsIHByZWNpc2lvbikgeworCQkvKiogQGNvbnN0IHtzdHJpbmd9ICovIHZh
ciBuYW1lID0gJ3BhY2t1bm9ybTJ4MTYnICsKKwkJIAllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuZ2V0UHJlY2lzaW9uUG9zdGZpeChwcmVjaXNpb24pICsKKwkJCWVzM2ZTaGFkZXJQYWNr
aW5nRnVuY3Rpb25UZXN0cy5nZXRTaGFkZXJUeXBlUG9zdGZpeChzaGFkZXJUeXBlKTsKKwkJZXMz
ZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlNoYWRlclBhY2tpbmdGdW5jdGlvbkNhc2UuY2Fs
bCh0aGlzLCBuYW1lLCAncGFja1Vub3JtMngxNicsIHNoYWRlclR5cGUpOworCQl0aGlzLm1fcHJl
Y2lzaW9uID0gcHJlY2lzaW9uOworCisJCXRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNT
aGFkZXJFeGVjVXRpbC5TeW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwgcHJlY2lzaW9uKSkpOworCQl0aGlzLm1fc3Bl
Yy5vdXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnb3V0MCcsIGdsdVZh
clR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworCQl0aGlzLm1fc3BlYy5zb3VyY2Ug
PSAnb3V0MCA9IHBhY2tVbm9ybTJ4MTYoaW4wKTsnOworCX07CisKKwllczNmU2hhZGVyUGFja2lu
Z0Z1bmN0aW9uVGVzdHMuUGFja1Vub3JtMngxNkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uQ2Fz
ZS5wcm90b3R5cGUpOworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrVW5vcm0y
eDE2Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuUGFja1Vub3JtMngxNkNhc2U7CisKKwkvKioKKwkgKiBAcmV0dXJuIHt0Y3VUZXN0Q2Fz
ZS5JdGVyYXRlUmVzdWx0fQorCSAqLworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5Q
YWNrVW5vcm0yeDE2Q2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworCQkvKiog
QHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20o
ZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiAweDc3NjAwMik7CisJCS8qKiBAdHlw
ZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciBpbnB1dHMgPSBbXTsKKwkJLyoqIEB0eXBl
IHtnb29nLlR5cGVkQXJyYXl9ICovIHZhciBzaGFkZXJFeGVjdXRvck91dHB1dDsKKwkJLyoqIEB0
eXBlIHtnb29nLlR5cGVkQXJyYXl9ICovIHZhciBvdXRwdXRzOyAvLyBkZVVpbnQzMgorCQkvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heERpZmYgPSB0aGlzLm1fcHJlY2lzaW9uID09IGdsdVNo
YWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCA/IDEgOiAvLyBSb3VuZGluZyBvbmx5
LgorCQkJCQkJCQkJCQl0aGlzLm1fcHJlY2lzaW9uID09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9u
LlBSRUNJU0lPTl9NRURJVU1QID8gNjUgOiAvLyAoMl4tMTApICogKDJeMTYpICsgMQorCQkJCQkJ
CQkJCQl0aGlzLm1fcHJlY2lzaW9uID09IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lP
Tl9MT1dQID8gMjU3IDogMDsgLy8gKDJeLTgpICogKDJeMTYpICsgMQorCQkvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHg7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeTsKKwkJLy8gU3Bl
Y2lhbCB2YWx1ZXMgdG8gY2hlY2suCisJCWlucHV0cy5wdXNoKFswLjAsIDAuMF0pOworCQlpbnB1
dHMucHVzaChbMC41LCAxLjBdKTsKKwkJaW5wdXRzLnB1c2goWzEuMCwgMC41XSk7CisJCWlucHV0
cy5wdXNoKFstMC41LCAxLjVdKTsKKwkJaW5wdXRzLnB1c2goWzAuMjUsIDAuNzVdKTsKKworCQkv
LyBSYW5kb20gdmFsdWVzLCBtb3N0bHkgaW4gcmFuZ2UuCisJCWZvciAodmFyIG5keCA9IDA7IG5k
eCA8IDE1OyBuZHgrKykgeworCQkJeCA9IHJuZC5nZXRGbG9hdCgpICogMS4yNTsKKwkJCXkgPSBy
bmQuZ2V0RmxvYXQoKSAqIDEuMjU7CisJCQlpbnB1dHMucHVzaChbeCwgeV0pOworCQl9CisKKwkJ
Ly8gTGFyZ2UgcmFuZG9tIHZhbHVlcy4KKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgODA7IG5k
eCsrKSB7CisJCQl4ID0gcm5kLmdldEZsb2F0KCkgKiAxZTYgLSAxZTU7CisJCQl5ID0gcm5kLmdl
dEZsb2F0KCkgKiAxZTYgLSAxZTU7CisJCQlpbnB1dHMucHVzaChbeCwgeV0pOworCQl9CisKKwkJ
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0V4ZWN1dGluZyBzaGFkZXIgZm9yICcgKyBpbnB1dHMubGVu
Z3RoICsgJyBpbnB1dCB2YWx1ZXMnKTsKKworCQl0aGlzLm1fZXhlY3V0b3IudXNlUHJvZ3JhbSgp
OworCQlzaGFkZXJFeGVjdXRvck91dHB1dCAgPSB0aGlzLm1fZXhlY3V0b3IuZXhlY3V0ZShpbnB1
dHMubGVuZ3RoLCBbdGN1TWF0cml4VXRpbC5mbGF0dGVuKGlucHV0cyldKVswXTsKKworCQkvLyBD
b252ZXJ0IG91dHB1dHMgaWYgd2UgZ2V0IHRoZW0gYXMgVWludDhBcnJheS4KKwkJLy8gLSBWZXJ0
ZXhTaGFkZXJFeGVjdXRvci5leGVjdXRlKCkgcmV0dXJucyBlaXRoZXIgYW4gYXJyYXkgb2YgVWlu
dDhBcnJheQorCQkvLyAtIEZyYWdtZW50U2hhZGVyRXhlY3V0b3IuZXhlY3V0ZSgpIHJldHVybnMg
ZWl0aGVyIGFuIGFycmF5IG9mIFVpbnQ4QXJyYXkgb3IgVWludDMyQXJyYXkKKwkgICAgb3V0cHV0
cyA9IG5ldyBVaW50MzJBcnJheShzaGFkZXJFeGVjdXRvck91dHB1dC5idWZmZXIpOworCisJCS8v
IFZlcmlmeQorCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVZhbHVlcyA9IGlucHV0cy5s
ZW5ndGg7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4UHJpbnRzID0gMTA7CisJCS8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtRmFpbGVkID0gMDsKKworCQlmb3IgKHZhciB2YWxO
ZHggPSAwOyB2YWxOZHggPCBpbnB1dHMubGVuZ3RoOyB2YWxOZHgrKykgeworCQkJLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciByZWYwID0gZGVNYXRoLmNsYW1wKE1hdGguZmxvb3IoZGVNYXRoLmNs
YW1wKGlucHV0c1t2YWxOZHhdWzBdLCAwLjAsIDEuMCkgKiA2NTUzNS4wKSwgMCwgKDEgPDwgMTYp
IC0gMSkgJiAweEZGRkY7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZjEgPSBkZU1h
dGguY2xhbXAoTWF0aC5mbG9vcihkZU1hdGguY2xhbXAoaW5wdXRzW3ZhbE5keF1bMV0sIDAuMCwg
MS4wKSAqIDY1NTM1LjApLCAwLCAoMSA8PCAxNikgLSAxKSAmIDB4RkZGRjsKKwkJCS8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgcmVmID0gKHJlZjEgPDwgMTYpIHwgcmVmMDsKKwkJCS8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgcmVzID0gb3V0cHV0c1t2YWxOZHhdOworCQkJLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciByZXMwID0gKHJlcyAmIDB4ZmZmZik7CisJCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHJlczEgPSBkZU1hdGguc2hpZnRSaWdodChyZXMsIDE2KTsKKwkJCS8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgZGlmZjAgPSBNYXRoLmFicyhyZWYwIC0gcmVzMCk7CisJCQkvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGRpZmYxID0gTWF0aC5hYnMocmVmMSAtIHJlczEpOworCisJ
CQlpZiAoZGlmZjAgPiBtYXhEaWZmIHx8IGRpZmYxID4gbWF4RGlmZikgeworCQkJCWlmIChudW1G
YWlsZWQgPCBtYXhQcmludHMpCisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogTWlz
bWF0Y2ggaW4gdmFsdWUgJyArIHZhbE5keCArCisJCQkJCQkJCQkJICcsIGV4cGVjdGVkIHBhY2tV
bm9ybTJ4MTYoJyArIGlucHV0c1t2YWxOZHhdICsgJykgPSAnICsgcmVmIC8qdGN1Ojp0b0hleChy
ZWYpKi8gKworCQkJCQkJCQkJCSAnLCBnb3QgJyArIHJlcyAvKnRjdTo6dG9IZXgocmVzKSovICsK
KwkJCQkJCQkJCQkgJ1xuICBkaWZmcyA9ICgnICsgZGlmZjAgKyAnLCAnICsgZGlmZjEgKyAnKSwg
bWF4IGRpZmYgPSAnICsgbWF4RGlmZik7CisJCQkJZWxzZSBpZiAobnVtRmFpbGVkID09PSBtYXhQ
cmludHMpCisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcuLi4nKTsKKworCQkJCW51bUZhaWxl
ZCArPSAxOworCQkJfQorCQl9CisKKwkJYnVmZmVyZWRMb2dUb0NvbnNvbGUoKG51bVZhbHVlcyAt
IG51bUZhaWxlZCkgKyAnIC8gJyArIG51bVZhbHVlcyArICcgdmFsdWVzIHBhc3NlZCcpOworCisJ
CS8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSBudW1GYWlsZWQgPT09IDA7CisJCWlm
ICghaXNPaykKKwkJCXRlc3RGYWlsZWRPcHRpb25zKCdSZXN1bHQgY29tcGFyaXNvbiBmYWlsZWQn
LCBmYWxzZSk7CisJCWVsc2UKKwkJCXRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7CisK
KwkJcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKwl9OworCisJLyoqCisJ
ICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMge2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25U
ZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlfQorCSAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJv
Z3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5j
dGlvblRlc3RzLlVucGFja1Vub3JtMngxNkNhc2UgPSBmdW5jdGlvbihzaGFkZXJUeXBlKSB7CisJ
CS8qKiBAY29uc3Qge3N0cmluZ30gKi8gdmFyIG5hbWUgPSAndW5wYWNrdW5vcm0yeDE2JyArCisJ
CQllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuZ2V0U2hhZGVyVHlwZVBvc3RmaXgoc2hh
ZGVyVHlwZSk7CisJCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5n
RnVuY3Rpb25DYXNlLmNhbGwodGhpcywgbmFtZSwgJ3VucGFja1Vub3JtMngxNicsIHNoYWRlclR5
cGUpOworCisJCXRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5T
eW1ib2woJ2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuVUlOVCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworCQl0
aGlzLm1fc3BlYy5vdXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnb3V0
MCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
VkVDMiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworCQl0aGlz
Lm1fc3BlYy5zb3VyY2UgPSAnb3V0MCA9IHVucGFja1Vub3JtMngxNihpbjApOyc7CisJfTsKKwor
CWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5VbnBhY2tVbm9ybTJ4MTZDYXNlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlNoYWRl
clBhY2tpbmdGdW5jdGlvbkNhc2UucHJvdG90eXBlKTsKKwllczNmU2hhZGVyUGFja2luZ0Z1bmN0
aW9uVGVzdHMuVW5wYWNrVW5vcm0yeDE2Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
U2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrVW5vcm0yeDE2Q2FzZTsKKworCS8qKgor
CSAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisJICovCisJZXMzZlNoYWRl
clBhY2tpbmdGdW5jdGlvblRlc3RzLlVucGFja1Vub3JtMngxNkNhc2UucHJvdG90eXBlLml0ZXJh
dGUgPSBmdW5jdGlvbigpIHsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhEaWZmID0g
MTsgLy8gUm91bmRpbmcgZXJyb3IuCisJCS8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2
YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5u
YW1lKSBeIDB4Nzc2MDAyKTsKKwkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5w
dXRzID0gW107CisJCS8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgc2hhZGVyRXhl
Y3V0b3JPdXRwdXQ7CisJCS8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgb3V0cHV0
czsgLy92ZWN0b3I8dmVjMj4KKworCQlpbnB1dHMucHVzaCgweDAwMDAwMDAwKTsKKwkJaW5wdXRz
LnB1c2goMHg3ZmZmODAwMCk7CisJCWlucHV0cy5wdXNoKDB4ODAwMDdmZmYpOworCQlpbnB1dHMu
cHVzaCgweGZmZmZmZmZmKTsKKwkJaW5wdXRzLnB1c2goMHgwMDAxZmZmZSk7CisKKwkJLy8gUmFu
ZG9tIHZhbHVlcy4KKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgOTU7IG5keCsrKQorCQkJaW5w
dXRzLnB1c2gocm5kLmdldEludCgpKTsKKworCQlidWZmZXJlZExvZ1RvQ29uc29sZSgnRXhlY3V0
aW5nIHNoYWRlciBmb3IgJyArIGlucHV0cy5sZW5ndGggKyAnIGlucHV0IHZhbHVlcycpOworCisJ
CXRoaXMubV9leGVjdXRvci51c2VQcm9ncmFtKCk7CisJCXNoYWRlckV4ZWN1dG9yT3V0cHV0ICA9
IHRoaXMubV9leGVjdXRvci5leGVjdXRlKGlucHV0cy5sZW5ndGgsIFtpbnB1dHNdKVswXTsKKwor
CQkvLyBDb252ZXJ0IG91dHB1dHMgaWYgd2UgZ2V0IHRoZW0gYXMgVWludDhBcnJheS4KKwkJLy8g
LSBWZXJ0ZXhTaGFkZXJFeGVjdXRvci5leGVjdXRlKCkgcmV0dXJucyBlaXRoZXIgYW4gYXJyYXkg
b2YgVWludDhBcnJheQorCQkvLyAtIEZyYWdtZW50U2hhZGVyRXhlY3V0b3IuZXhlY3V0ZSgpIHJl
dHVybnMgZWl0aGVyIGFuIGFycmF5IG9mIFVpbnQ4QXJyYXkgb3IgVWludDMyQXJyYXkKKwkJb3V0
cHV0cyA9IG5ldyBGbG9hdDMyQXJyYXkoc2hhZGVyRXhlY3V0b3JPdXRwdXQuYnVmZmVyKTsKKwor
CQkvLyBWZXJpZnkKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1WYWx1ZXMgPSBpbnB1
dHMubGVuZ3RoOworCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFByaW50cyA9IDEwOwor
CQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUZhaWxlZCA9IDA7CisKKwkJZm9yICh2YXIg
dmFsTmR4ID0gMDsgdmFsTmR4IDwgaW5wdXRzLmxlbmd0aDsgdmFsTmR4KyspIHsKKwkJCS8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4wID0gTWF0aC5mbG9vcihpbnB1dHNbdmFsTmR4XSAmIDB4
ZmZmZik7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluMSA9IE1hdGguZmxvb3IoZGVN
YXRoLnNoaWZ0UmlnaHQoaW5wdXRzW3ZhbE5keF0sIDE2KSk7CisJCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHJlZjAgPSBpbjAgLyA2NTUzNS4wOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciByZWYxID0gaW4xIC8gNjU1MzUuMDsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
cmVzMCA9IG91dHB1dHNbMiAqIHZhbE5keF07CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHJlczEgPSBvdXRwdXRzWzIgKiB2YWxOZHggKyAxXTsKKworCQkJLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBkaWZmMCA9IGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZm
KHJlZjAsIHJlczApOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaWZmMSA9IGVzM2ZT
aGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5nZXRVbHBEaWZmKHJlZjEsIHJlczEpOworCisJCQlp
ZiAoZGlmZjAgPiBtYXhEaWZmIHx8IGRpZmYxID4gbWF4RGlmZikgeworCQkJCWlmIChudW1GYWls
ZWQgPCBtYXhQcmludHMpCisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogTWlzbWF0
Y2ggaW4gdmFsdWUgJyArIHZhbE5keCArICcsXG4nICsKKwkJCQkJCQkJCSAgICAgJyAgZXhwZWN0
ZWQgdW5wYWNrVW5vcm0yeDE2KCcgKyBpbnB1dHNbdmFsTmR4XS50b1N0cmluZygxNikgKyAnKSA9
ICcgKworCQkJCQkJCQkJICAgICAndmVjMignICsgcmVmMC50b1N0cmluZygxNikgKyAnLCAnICsg
cmVmMS50b1N0cmluZygxNikgKyAnKScgKworCQkJCQkJCQkJICAgICAnLCBnb3QgdmVjMignICsg
cmVzMC50b1N0cmluZygxNikgKyAnLCAnICsgcmVzMS50b1N0cmluZygxNikgKyAnKScgKworCQkJ
CQkJCQkJICAgICAnXG4gIFVMUCBkaWZmcyA9ICgnICsgZGlmZjAgKyAnLCAnICsgZGlmZjEgKyAn
KSwgbWF4IGRpZmYgPSAnICsgbWF4RGlmZik7CisJCQkJZWxzZSBpZiAobnVtRmFpbGVkID09PSBt
YXhQcmludHMpCisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcuLi4nKTsKKworCQkJCW51bUZh
aWxlZCArPSAxOworCQkJfQorCQl9CisKKwkJYnVmZmVyZWRMb2dUb0NvbnNvbGUoKG51bVZhbHVl
cyAtIG51bUZhaWxlZCkgKyAnIC8gJyArIG51bVZhbHVlcyArICcgdmFsdWVzIHBhc3NlZCcpOwor
CisJCS8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSBudW1GYWlsZWQgPT09IDA7CisJ
CWlmICghaXNPaykKKwkJCXRlc3RGYWlsZWRPcHRpb25zKCdSZXN1bHQgY29tcGFyaXNvbiBmYWls
ZWQnLCBmYWxzZSk7CisJCWVsc2UKKwkJCXRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7
CisKKwkJcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKwl9OworCisJLyoq
CisJICogQGNvbnN0cnVjdG9yCisJICogQGV4dGVuZHMge2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rp
b25UZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlfQorCSAqIEBwYXJhbSB7Z2x1U2hhZGVy
UHJvZ3JhbS5zaGFkZXJUeXBlfSBzaGFkZXJUeXBlCisJICovCisJZXMzZlNoYWRlclBhY2tpbmdG
dW5jdGlvblRlc3RzLlBhY2tIYWxmMngxNkNhc2UgPSBmdW5jdGlvbihzaGFkZXJUeXBlKSB7CisJ
CS8qKiBAY29uc3Qge3N0cmluZ30gKi8gdmFyIG5hbWUgPSAncGFja2hhbGYyeDE2JyArCisJCQll
czNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuZ2V0U2hhZGVyVHlwZVBvc3RmaXgoc2hhZGVy
VHlwZSk7CisJCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVu
Y3Rpb25DYXNlLmNhbGwodGhpcywgbmFtZSwgJ3BhY2tIYWxmMngxNicsIHNoYWRlclR5cGUpOwor
CisJCXRoaXMubV9zcGVjLmlucHV0cy5wdXNoKG5ldyBnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2wo
J2luMCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfVkVDMiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworCQl0
aGlzLm1fc3BlYy5vdXRwdXRzLnB1c2gobmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnb3V0
MCcsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwg
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSkpOworCQl0aGlzLm1fc3Bl
Yy5zb3VyY2UgPSAnb3V0MCA9IHBhY2tIYWxmMngxNihpbjApOyc7CisJfTsKKworCWVzM2ZTaGFk
ZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrSGFsZjJ4MTZDYXNlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlNoYWRlclBhY2tpbmdGdW5j
dGlvbkNhc2UucHJvdG90eXBlKTsKKwllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuUGFj
a0hhbGYyeDE2Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyUGFja2luZ0Z1
bmN0aW9uVGVzdHMuUGFja0hhbGYyeDE2Q2FzZTsKKworCS8qKgorCSAqIEByZXR1cm4ge3RjdVRl
c3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRl
c3RzLlBhY2tIYWxmMngxNkNhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKwkJ
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhEaWZmID0gMDsgLy8gVmFsdWVzIGNhbiBiZSBy
ZXByZXNlbnRlZCBleGFjdGx5IGluIG1lZGl1bXAuCisJCS8qKiBAdHlwZSB7ZGVSYW5kb20uUmFu
ZG9tfSAqLyB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hh
c2godGhpcy5uYW1lKSBeIDB4Nzc2MDAyKTsKKwkJLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1i
ZXI+Pn0gKi8gdmFyIGlucHV0cyA9IFtdOworCQkvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0g
Ki8gdmFyIHNoYWRlckV4ZWN1dG9yT3V0cHV0OworCQkvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJh
eX0gKi8gdmFyIG91dHB1dHM7IC8vIGRlVWludDMyCisKKwkJLy8gU3BlY2lhbCB2YWx1ZXMgdG8g
Y2hlY2suCisJCWlucHV0cy5wdXNoKFswLjAsIDAuMF0pOworCQlpbnB1dHMucHVzaChbMC41LCAx
LjBdKTsKKwkJaW5wdXRzLnB1c2goWzEuMCwgMC41XSk7CisJCWlucHV0cy5wdXNoKFstMC41LCAx
LjVdKTsKKwkJaW5wdXRzLnB1c2goWzAuMjUsIDAuNzVdKTsKKworCQkvLyBSYW5kb20gdmFsdWVz
LgorCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkV4cCA9IC0xNDsKKwkJLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBtYXhFeHAgPSAxNTsKKworCQkvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciB2ID0gW107CisJCWZvciAodmFyIG5keCA9IDA7IG5keCA8IDk1OyBuZHgrKykg
eworCQkJZm9yICh2YXIgYyA9IDA7IGMgPCAyOyBjKyspIHsKKwkJCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHMgPSBybmQuZ2V0Qm9vbCgpID8gMSA6IC0xOworCQkJCS8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgZXhwID0gcm5kLmdldEludChtaW5FeHAsIG1heEV4cCk7CisJCQkJLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtYW50aXNzYSA9IHJuZC5nZXRJbnQoMCkgJiAoKDEgPDwgMjMp
IC0gMSk7CisKKwkJCQl2W2NdID0gKG5ldyB0Y3VGbG9hdC5kZUZsb2F0KCkpLmNvbnN0cnVjdChz
LCBleHAgPyBleHAgOiAxIC8qIGF2b2lkIGRlbm9ybWFscyAqLywgKDEgPDwgMjMpIHwgbWFudGlz
c2EpLmdldFZhbHVlKCk7CisJCQl9CisJCQlpbnB1dHMucHVzaCh2KTsKKwkJfQorCisJCS8vIENv
bnZlcnQgaW5wdXQgdmFsdWVzIHRvIGZwMTYgYW5kIGJhY2sgdG8gbWFrZSBzdXJlIHRoZXkgY2Fu
IGJlIHJlcHJlc2VudGVkIGV4YWN0bHkgaW4gbWVkaXVtcC4KKwkJZm9yICh2YXIgaW5WYWwgaW4g
aW5wdXRzKQorCQkJaW5wdXRzW2luVmFsXSA9IFt0Y3VGbG9hdC5uZXdGbG9hdDE2KGlucHV0c1tp
blZhbF1bMF0pLmdldFZhbHVlKCksIHRjdUZsb2F0Lm5ld0Zsb2F0MTYoaW5wdXRzW2luVmFsXVsx
XSkuZ2V0VmFsdWUoKV07CisKKwkJYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0V4ZWN1dGluZyBzaGFk
ZXIgZm9yICcgKyBpbnB1dHMubGVuZ3RoICsgJyBpbnB1dCB2YWx1ZXMnKTsKKworCQl0aGlzLm1f
ZXhlY3V0b3IudXNlUHJvZ3JhbSgpOworCQlzaGFkZXJFeGVjdXRvck91dHB1dCAgPSB0aGlzLm1f
ZXhlY3V0b3IuZXhlY3V0ZShpbnB1dHMubGVuZ3RoLCBbdGN1TWF0cml4VXRpbC5mbGF0dGVuKGlu
cHV0cyldKVswXTsKKworCQkvLyBDb252ZXJ0IG91dHB1dHMgaWYgd2UgZ2V0IHRoZW0gYXMgVWlu
dDhBcnJheS4KKwkJLy8gLSBWZXJ0ZXhTaGFkZXJFeGVjdXRvci5leGVjdXRlKCkgcmV0dXJucyBl
aXRoZXIgYW4gYXJyYXkgb2YgVWludDhBcnJheQorCQkvLyAtIEZyYWdtZW50U2hhZGVyRXhlY3V0
b3IuZXhlY3V0ZSgpIHJldHVybnMgZWl0aGVyIGFuIGFycmF5IG9mIFVpbnQ4QXJyYXkgb3IgVWlu
dDMyQXJyYXkKKwkgICAgb3V0cHV0cyA9IG5ldyBVaW50MzJBcnJheShzaGFkZXJFeGVjdXRvck91
dHB1dC5idWZmZXIpOworCisJCS8vIFZlcmlmeQorCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG51bVZhbHVlcyA9IGlucHV0cy5sZW5ndGg7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bWF4UHJpbnRzID0gMTA7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtRmFpbGVkID0g
MDsKKworCQlmb3IgKHZhciB2YWxOZHggPSAwOyB2YWxOZHggPCBpbnB1dHMubGVuZ3RoOyB2YWxO
ZHgrKykgeworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYwID0gdGN1RmxvYXQubmV3
RmxvYXQxNihpbnB1dHNbdmFsTmR4XVswXSkuYml0cygpOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciByZWYxID0gdGN1RmxvYXQubmV3RmxvYXQxNihpbnB1dHNbdmFsTmR4XVsxXSkuYml0
cygpOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYgPSAocmVmMSA8PCAxNikgfCBy
ZWYwOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZXMgPSBvdXRwdXRzW3ZhbE5keF07
CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlczAgPSAocmVzICYgMHhmZmZmKTsKKwkJ
CS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzMSA9IGRlTWF0aC5zaGlmdFJpZ2h0KHJlcywg
MTYpOworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaWZmMCA9IE1hdGguYWJzKHJlZjAg
LSByZXMwKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZGlmZjEgPSBNYXRoLmFicyhy
ZWYxIC0gcmVzMSk7CisKKwkJCWlmIChkaWZmMCA+IG1heERpZmYgfHwgZGlmZjEgPiBtYXhEaWZm
KSB7CisJCQkJaWYgKG51bUZhaWxlZCA8IG1heFByaW50cykKKwkJCQkJYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ0VSUk9SOiBNaXNtYXRjaCBpbiB2YWx1ZSAnICsgdmFsTmR4ICsKKwkJCQkJCQkJCSAg
ICAgJywgZXhwZWN0ZWQgcGFja0hhbGYyeDE2KCcgKyBpbnB1dHNbdmFsTmR4XSArICcpID0gJyAr
IHJlZiAvKnRjdTo6dG9IZXgocmVmKSovICsKKwkJCQkJCQkJCSAgICAgJywgZ290ICcgKyByZXMg
Lyp0Y3U6OnRvSGV4KHJlcykqLyArCisJCQkJCQkJCQkgICAgICdcbiAgZGlmZnMgPSAoJyArIGRp
ZmYwICsgJywgJyArIGRpZmYxICsgJyksIG1heCBkaWZmID0gJyArIG1heERpZmYpOworCQkJCWVs
c2UgaWYgKG51bUZhaWxlZCA9PSBtYXhQcmludHMpCisJCQkJCWJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCcuLi4nKTsKKworCQkJCW51bUZhaWxlZCArPSAxOworCQkJfQorCQl9CisKKwkJYnVmZmVyZWRM
b2dUb0NvbnNvbGUoKG51bVZhbHVlcyAtIG51bUZhaWxlZCkgKyAnIC8gJyArIG51bVZhbHVlcyAr
ICcgdmFsdWVzIHBhc3NlZCcpOworCisJCS8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sg
PSBudW1GYWlsZWQgPT09IDA7CisJCWlmICghaXNPaykKKwkJCXRlc3RGYWlsZWRPcHRpb25zKCdS
ZXN1bHQgY29tcGFyaXNvbiBmYWlsZWQnLCBmYWxzZSk7CisJCWVsc2UKKwkJCXRlc3RQYXNzZWRP
cHRpb25zKCdQYXNzJywgdHJ1ZSk7CisKKwkJcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKKworCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7
ZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlNoYWRlclBhY2tpbmdGdW5jdGlvbkNhc2V9
CisJICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGUKKwkg
Ki8KKwllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrSGFsZjJ4MTZDYXNlID0g
ZnVuY3Rpb24oc2hhZGVyVHlwZSkgeworCQkvKiogQGNvbnN0IHtzdHJpbmd9ICovIHZhciBuYW1l
ID0gJ3VucGFja2hhbGYyeDE2JyArCisJCQllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMu
Z2V0U2hhZGVyVHlwZVBvc3RmaXgoc2hhZGVyVHlwZSk7CisJCWVzM2ZTaGFkZXJQYWNraW5nRnVu
Y3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25DYXNlLmNhbGwodGhpcywgbmFtZSwgJ3Vu
cGFja0hhbGYyeDE2Jywgc2hhZGVyVHlwZSk7CisKKwkJdGhpcy5tX3NwZWMuaW5wdXRzLnB1c2go
bmV3IGdsc1NoYWRlckV4ZWNVdGlsLlN5bWJvbCgnaW4wJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFz
aWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fSElHSFApKSk7CisJCXRoaXMubV9zcGVjLm91dHB1dHMucHVzaChuZXcgZ2xzU2hh
ZGVyRXhlY1V0aWwuU3ltYm9sKCdvdXQwJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVD
SVNJT05fTUVESVVNUCkpKTsKKwkJdGhpcy5tX3NwZWMuc291cmNlID0gJ291dDAgPSB1bnBhY2tI
YWxmMngxNihpbjApOyc7CisJfTsKKworCWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5V
bnBhY2tIYWxmMngxNkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNmU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uQ2FzZS5wcm90b3R5cGUpOwor
CWVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5VbnBhY2tIYWxmMngxNkNhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlVucGFja0hh
bGYyeDE2Q2FzZTsKKworCS8qKgorCSAqIEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHR9CisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlVucGFja0hhbGYyeDE2
Q2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworCQkvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG1heERpZmYgPSAwOyAvLyBBbGwgYml0cyBtdXN0IGJlIGFjY3VyYXRlLgorCQkv
KiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5k
b20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiAweDc3NjAwMik7CisJCS8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGlucHV0cyA9IFtdOworCQkvKiogQHR5cGUge2dv
b2cuVHlwZWRBcnJheX0gKi8gdmFyIG91dHB1dHM7IC8vIHZlY3Rvcjx2ZWMyPGZsb2F0Pj4KKwkJ
LyoqIEB0eXBlIHtnb29nLlR5cGVkQXJyYXl9ICovIHZhciBzaGFkZXJFeGVjdXRvck91dHB1dDsK
KworCQkvLyBTcGVjaWFsIHZhbHVlcy4KKwkJaW5wdXRzLnB1c2goKHRjdUZsb2F0Lm5ld0Zsb2F0
MTYoMC4wKS5iaXRzKCkgPDwgMTYpIHwgdGN1RmxvYXQubmV3RmxvYXQxNigxLjApLmJpdHMoKSk7
CisJCWlucHV0cy5wdXNoKCh0Y3VGbG9hdC5uZXdGbG9hdDE2KDEuMCkuYml0cygpIDw8IDE2KSB8
IHRjdUZsb2F0Lm5ld0Zsb2F0MTYoMC4wKS5iaXRzKCkpOworCQlpbnB1dHMucHVzaCgodGN1Rmxv
YXQubmV3RmxvYXQxNigtMS4wKS5iaXRzKCkgPDwgMTYpIHwgdGN1RmxvYXQubmV3RmxvYXQxNigw
LjUpLmJpdHMoKSk7CisJCWlucHV0cy5wdXNoKCh0Y3VGbG9hdC5uZXdGbG9hdDE2KDAuNSkuYml0
cygpIDw8IDE2KSB8IHRjdUZsb2F0Lm5ld0Zsb2F0MTYoLTAuNSkuYml0cygpKTsKKworCQkvLyBD
b25zdHJ1Y3QgcmFuZG9tIHZhbHVlcy4KKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5F
eHAgPSAtMTQ7CisJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4RXhwID0gMTU7CisJCS8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFudEJpdHMgPSAxMDsKKworCQkvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGluVmFsID0gMDsKKwkJZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgOTY7IG5k
eCsrKSB7CisJCQlmb3IgKHZhciBjID0gMDsgYyA8IDI7IGMrKykgeworCQkJCS8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgcyA9IHJuZC5nZXRCb29sKCkgPyAxIDogLTE7CisJCQkJLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBleHAgPSBybmQuZ2V0SW50KG1pbkV4cCwgbWF4RXhwKTsKKwkJCQkv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hbnRpc3NhID0gcm5kLmdldEludCgwKSAmICgoMSA8
PCBtYW50Qml0cykgLSAxKTsKKwkJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZhbHVlID0g
dGN1RmxvYXQubmV3RmxvYXQxNigwKS5jb25zdHJ1Y3QocywgZXhwID8gZXhwIDogMSAvKiBhdm9p
ZCBkZW5vcm0gKi8sICgxIDw8IDEwKSB8IG1hbnRpc3NhKS5iaXRzKCk7CisKKwkJCQlpblZhbCB8
PSB2YWx1ZSA8PCAoMTYgKiBjKTsKKwkJCX0KKwkJCWlucHV0cy5wdXNoKGluVmFsKTsKKwkJfQor
CisJCWJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFeGVjdXRpbmcgc2hhZGVyIGZvciAnICsgaW5wdXRz
Lmxlbmd0aCArICcgaW5wdXQgdmFsdWVzJyk7CisKKwkJdGhpcy5tX2V4ZWN1dG9yLnVzZVByb2dy
YW0oKTsKKwkJc2hhZGVyRXhlY3V0b3JPdXRwdXQgID0gdGhpcy5tX2V4ZWN1dG9yLmV4ZWN1dGUo
aW5wdXRzLmxlbmd0aCwgW2lucHV0c10pWzBdOworCisJCS8vIENvbnZlcnQgb3V0cHV0cyBpZiB3
ZSBnZXQgdGhlbSBhcyBVaW50OEFycmF5LgorCQkvLyAtIFZlcnRleFNoYWRlckV4ZWN1dG9yLmV4
ZWN1dGUoKSByZXR1cm5zIGVpdGhlciBhbiBhcnJheSBvZiBVaW50OEFycmF5CisJCS8vIC0gRnJh
Z21lbnRTaGFkZXJFeGVjdXRvci5leGVjdXRlKCkgcmV0dXJucyBlaXRoZXIgYW4gYXJyYXkgb2Yg
VWludDhBcnJheSBvciBVaW50MzJBcnJheQorCQlvdXRwdXRzID0gbmV3IEZsb2F0MzJBcnJheShz
aGFkZXJFeGVjdXRvck91dHB1dC5idWZmZXIpOworCisJCS8vIFZlcmlmeQorCQkvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG51bVZhbHVlcyA9IGlucHV0cy5sZW5ndGgKKwkJLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtYXhQcmludHMgPSAxMDsKKwkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBudW1GYWlsZWQgPSAwOworCisJCWZvciAodmFyIHZhbE5keCA9IDA7IHZhbE5keCA8IGlucHV0
cy5sZW5ndGg7IHZhbE5keCsrKSB7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluMCA9
IChpbnB1dHNbdmFsTmR4XSAmIDB4ZmZmZik7CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IGluMSA9IGRlTWF0aC5zaGlmdFJpZ2h0KGlucHV0c1t2YWxOZHhdLCAxNik7CisJCQkvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHJlZjAgPSB0Y3VGbG9hdC5oYWxmRmxvYXRUb051bWJlcihpbjAp
OworCQkJLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWYxID0gdGN1RmxvYXQuaGFsZkZsb2F0
VG9OdW1iZXIoaW4xKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzMCA9IG91dHB1
dHNbMiAqIHZhbE5keF07CisJCQkvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlczEgPSBvdXRw
dXRzWzIgKiB2YWxOZHggKyAxXTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmQml0
czAgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKHJlZjApLmJpdHMoKTsKKwkJCS8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgcmVmQml0czEgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKHJlZjEpLmJpdHMoKTsK
KwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzQml0czAgPSB0Y3VGbG9hdC5uZXdGbG9h
dDMyKHJlczApLmJpdHMoKTsKKwkJCS8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVzQml0czEg
PSB0Y3VGbG9hdC5uZXdGbG9hdDMyKHJlczEpLmJpdHMoKTsKKworCQkJLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBkaWZmMCA9IE1hdGguYWJzKHJlZkJpdHMwIC0gcmVzQml0czApOworCQkJLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBkaWZmMSA9IE1hdGguYWJzKHJlZkJpdHMxIC0gcmVzQml0
czEpOworCisJCQlpZiAoaXNOYU4ocmVmMCkgJiYgaXNOYU4ocmVzMCkpCisJCQkgICAgZGlmZjAg
PSAwOworCQkJaWYgKGlzTmFOKHJlZjEpICYmIGlzTmFOKHJlczEpKQorCQkJICAgIGRpZmYxID0g
MDsKKworCQkJaWYgKGRpZmYwID4gbWF4RGlmZiB8fCBkaWZmMSA+IG1heERpZmYpIHsKKwkJCQlp
ZiAobnVtRmFpbGVkIDwgbWF4UHJpbnRzKQorCQkJCQlidWZmZXJlZExvZ1RvQ29uc29sZSgnRVJS
T1I6IE1pc21hdGNoIGluIHZhbHVlICcgKyB2YWxOZHggKyAnLFxuJyArCisJCQkJCQkJCQkgJyAg
ZXhwZWN0ZWQgdW5wYWNrSGFsZjJ4MTYoJyArIGlucHV0c1t2YWxOZHhdIC8qdGN1Ojp0b0hleChp
bnB1dHNbdmFsTmR4XSkqLyArICcpID0gJyArCisJCQkJCQkJCQkgJ3ZlYzIoJyArIHJlZjAgKyAn
IC8gJyArIHJlZkJpdHMwIC8qdGN1Ojp0b0hleChyZWZCaXRzMCkqLyArICcsICcgKyByZWYxICsg
JyAvICcgKyByZWZCaXRzMSAvKnRjdTo6dG9IZXgocmVmQml0czEpKi8gKyAnKScgKworCQkJCQkJ
CQkJICcsIGdvdCB2ZWMyKCcgKyByZXMwICsgJyAvICcgKyByZXNCaXRzMCAvKnRjdTo6dG9IZXgo
cmVzQml0czApKi8gKyAnLCAnICsgcmVzMSArICcgLyAnICsgcmVzQml0czEgLyp0Y3U6OnRvSGV4
KHJlc0JpdHMxKSovICsgJyknICsKKwkJCQkJCQkJCSAnXG4gIFVMUCBkaWZmcyA9ICgnICsgZGlm
ZjAgKyAnLCAnICsgZGlmZjEgKyAnKSwgbWF4IGRpZmYgPSAnICsgbWF4RGlmZik7CisJCQkJZWxz
ZSBpZiAobnVtRmFpbGVkID09IG1heFByaW50cykKKwkJCQkJYnVmZmVyZWRMb2dUb0NvbnNvbGUo
Jy4uLicpOworCisJCQkJbnVtRmFpbGVkICs9IDE7CisJCQl9CisJCX0KKworCQlidWZmZXJlZExv
Z1RvQ29uc29sZSgobnVtVmFsdWVzIC0gbnVtRmFpbGVkKSArICcgLyAnICsgbnVtVmFsdWVzICsg
JyB2YWx1ZXMgcGFzc2VkJyk7CisKKwkJLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9
IG51bUZhaWxlZCA9PT0gMDsKKwkJaWYgKCFpc09rKQorCQkJdGVzdEZhaWxlZE9wdGlvbnMoJ1Jl
c3VsdCBjb21wYXJpc29uIGZhaWxlZCcsIGZhbHNlKTsKKwkJZWxzZQorCQkJdGVzdFBhc3NlZE9w
dGlvbnMoJ1Bhc3MnLCB0cnVlKTsKKworCQlyZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3Vs
dC5TVE9QOworCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0b3IKKwkgKiBAZXh0ZW5kcyB7dGN1
VGVzdENhc2UuRGVxcFRlc3R9CisJICovCisJZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3Rz
LlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzID0gZnVuY3Rpb24oKSB7CisJCXRjdVRlc3RDYXNl
LkRlcXBUZXN0LmNhbGwodGhpcywgJ3BhY2tfdW5wYWNrJywgJ0Zsb2F0aW5nLXBvaW50IHBhY2sg
YW5kIHVucGFjayBmdW5jdGlvbiB0ZXN0cycpOworCX07CisKKwllczNmU2hhZGVyUGFja2luZ0Z1
bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworCWVzM2ZTaGFkZXJQYWNr
aW5nRnVuY3Rpb25UZXN0cy5TaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFja2luZ0Z1
bmN0aW9uVGVzdHM7CisKKwllczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKwkJdmFyIHRl
c3RHcm91cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisJCXRlc3RHcm91cC5hZGRD
aGlsZChuZXcgZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tTbm9ybTJ4MTZDYXNl
KGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgsIGdsdVNoYWRlclV0aWwucHJlY2lz
aW9uLlBSRUNJU0lPTl9MT1dQKSk7CisJCXRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRl
clBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tTbm9ybTJ4MTZDYXNlKGdsdVNoYWRlclByb2dyYW0u
c2hhZGVyVHlwZS5GUkFHTUVOVCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xP
V1ApKTsKKwkJdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuUGFja1Nub3JtMngxNkNhc2UoZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRF
WCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVApKTsKKwkJdGVzdEdy
b3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuUGFja1Nub3Jt
MngxNkNhc2UoZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5ULCBnbHVTaGFkZXJV
dGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCkpOworCQl0ZXN0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrU25vcm0yeDE2Q2FzZShnbHVT
aGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fSElHSFApKTsKKwkJdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMuUGFja1Nub3JtMngxNkNhc2UoZ2x1U2hhZGVyUHJvZ3JhbS5zaGFk
ZXJUeXBlLkZSQUdNRU5ULCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAp
KTsKKworCQl0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25U
ZXN0cy5VbnBhY2tTbm9ybTJ4MTZDYXNlKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJU
RVgpKTsKKwkJdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuVW5wYWNrU25vcm0yeDE2Q2FzZShnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJB
R01FTlQpKTsKKworCQl0ZXN0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJQYWNraW5nRnVu
Y3Rpb25UZXN0cy5QYWNrVW5vcm0yeDE2Q2FzZShnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUu
VkVSVEVYLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUCkpOworCQl0ZXN0
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5QYWNrVW5v
cm0yeDE2Q2FzZShnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQsIGdsdVNoYWRl
clV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9MT1dQKSk7CisJCXRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tVbm9ybTJ4MTZDYXNlKGdsdVNo
YWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9NRURJVU1QKSk7CisJCXRlc3RHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclBh
Y2tpbmdGdW5jdGlvblRlc3RzLlBhY2tVbm9ybTJ4MTZDYXNlKGdsdVNoYWRlclByb2dyYW0uc2hh
ZGVyVHlwZS5GUkFHTUVOVCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElV
TVApKTsKKwkJdGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9u
VGVzdHMuUGFja1Vub3JtMngxNkNhc2UoZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRF
WCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSk7CisJCXRlc3RHcm91
cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tVbm9ybTJ4
MTZDYXNlKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCwgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKSk7CisKKwkJdGVzdEdyb3VwLmFkZENoaWxkKG5l
dyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrVW5vcm0yeDE2Q2FzZShnbHVT
aGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYKSk7CisJCXRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlVucGFja1Vub3JtMngxNkNhc2UoZ2x1
U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisKKwkJdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuUGFja0hhbGYyeDE2Q2FzZShn
bHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYKSk7CisJCXRlc3RHcm91cC5hZGRDaGls
ZChuZXcgZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLlBhY2tIYWxmMngxNkNhc2UoZ2x1
U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UKSk7CisKKwkJdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrSGFsZjJ4MTZDYXNl
KGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5WRVJURVgpKTsKKwkJdGVzdEdyb3VwLmFkZENo
aWxkKG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuVW5wYWNrSGFsZjJ4MTZDYXNl
KGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCkpOworCX07CisKKyAgICAvKioK
KyAgICAqIFJ1biB0ZXN0CisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNv
bnRleHQKKyAgICAqLworICAgIGVzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5ydW4gPSBm
dW5jdGlvbihjb250ZXh0KSB7CisgICAgCWdsID0gY29udGV4dDsKKyAgICAJLy9TZXQgdXAgVGVz
dCBSb290IHBhcmFtZXRlcnMKKyAgICAJdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOwor
ICAgIAlzdGF0ZS5zZXRSb290KG5ldyBlczNmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuU2hh
ZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMoKSk7CisKKyAgICAJLy9TZXQgdXAgbmFtZSBhbmQgZGVz
Y3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAJc2V0Q3VycmVudFRlc3ROYW1lKHN0
YXRlLnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICAJZGVzY3JpcHRpb24oc3RhdGUudGVzdENh
c2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgCXRyeSB7CisgICAgCQkvL1J1biB0ZXN0IGNh
c2VzCisgICAgCQl0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAJfQorICAgIAljYXRj
aCAoZXJyKSB7CisgICAgCQl0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZTaGFkZXJQ
YWNraW5nRnVuY3Rpb25UZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgCQl0Y3VUZXN0Q2Fz
ZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgCX0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9lczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTY5NzM5N2M0MWIwNGJlYWZiMTkx
MDZkMjIzMDNmNzA2ZGM0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRl
clByZWNpc2lvblRlc3RzLmpzCkBAIC0wLDAgKzEsOTQ3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog
Q29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRl
c3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1RmxvYXQnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5n
bHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyVXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAgIHZhciBlczNmU2hhZGVy
UHJlY2lzaW9uVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0
czsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAg
IHZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAgIHZh
ciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAgIHZhciB0
Y3VGbG9hdCA9IGZyYW1ld29yay5jb21tb24udGN1RmxvYXQ7CisgICAgdmFyIHRjdVRlc3RDYXNl
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZ2x1RHJhd1V0aWwgPSBm
cmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0g
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworCisgICAgLyoqIEBjb25zdCB7bnVt
YmVyfSAqLyBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEggPSAzMjsK
KyAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICovIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5GUkFN
RUJVRkZFUl9IRUlHSFQgPSAzMjsKKworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5hZGQg
PSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICsgYjsgfTsKKyAgICBlczNmU2hhZGVyUHJlY2lz
aW9uVGVzdHMuc3ViID0gZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH07CisgICAgZXMz
ZlNoYWRlclByZWNpc2lvblRlc3RzLm11bCA9IGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKiBi
OyB9OworICAgIC8vIGEgKiBiID0gKGExICogMl4xNiArIGEwKSAqIChiMSAqIDJeMTYgKyBiMCkg
PSBhMSAqIGIxICogMl4zMiArIChhMCAqIGIxICsgYTEgKiBiMCkgKiAyXjE2ICsgYTAgKiBiMAor
ICAgIC8vIDMyYml0IGludGVnZXIgbXVsdGlwbGljYXRpb24gbWF5IG92ZXJmbG93IGluIEphdmFT
Y3JpcHQuIE9ubHkgcmV0dXJuIGxvdyAzMmJpdCBvZiB0aGUgcmVzdWx0LgorICAgIGVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5tdWwzMiA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgdmFyIHNp
Z24gPSBNYXRoLnNpZ24oYSkgKiBNYXRoLnNpZ24oYik7CisgICAgICAgIGEgPSBNYXRoLmFicyhh
KTsKKyAgICAgICAgYiA9IE1hdGguYWJzKGIpOworICAgICAgICB2YXIgYTEgPSBkZU1hdGguc3Bs
aXQxNihhKVsxXTsKKyAgICAgICAgdmFyIGEwID0gZGVNYXRoLnNwbGl0MTYoYSlbMF07CisgICAg
ICAgIHZhciBiMSA9IGRlTWF0aC5zcGxpdDE2KGIpWzFdOworICAgICAgICB2YXIgYjAgPSBkZU1h
dGguc3BsaXQxNihiKVswXTsKKyAgICAgICAgcmV0dXJuIHNpZ24gKiAoKGEwICogYjEgKyBhMSAq
IGIwKSAqIDB4MTAwMDAgKyBhMCAqIGIwKTsKKyAgICB9CisgICAgZXMzZlNoYWRlclByZWNpc2lv
blRlc3RzLmRpdiA9IGZ1bmN0aW9uKGEsIGIpIHsgaWYgKGIgIT09IDApIHJldHVybiBhIC8gYjsg
ZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ2RpdmlzaW9uIGJ5IHplcm8uJyl9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGV2YWxPcAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhD
YXNlCisgICAgICogQHJldHVybiB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfQorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5jcmVhdGVGbG9hdFByZWNpc2lvbkV2
YWxQcm9ncmFtID0gZnVuY3Rpb24ocHJlY2lzaW9uLCBldmFsT3AsIGlzVmVydGV4Q2FzZSkgewor
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0g
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgb3V0VHlwZSA9IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
VUlOVDsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB0eXBlTmFtZSA9IGdsdVNo
YWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIG91dFR5cGVOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUob3V0
VHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcHJlY05hbWUgPSBnbHVT
aGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUocHJlY2lzaW9uKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHZhciB2dHggPSAnJzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHZhciBmcmFnID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgb3AgPSAn
JzsKKworICAgICAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAn
aW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnaW4gJyArIHByZWNO
YW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIGFfaW4wO1xuJyArCisgICAgICAgICAgICAnaW4gJyAr
IHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIGFfaW4xO1xuJzsKKyAgICAgICAgZnJhZyAr
PSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAw
KSBvdXQgaGlnaHAgJyArIG91dFR5cGVOYW1lICsgJyBvX291dDtcbic7CisKKyAgICAgICAgaWYg
KGlzVmVydGV4Q2FzZSkgeworICAgICAgICAgICAgdnR4ICs9ICdmbGF0IG91dCAnICsgcHJlY05h
bWUgKyAnICcgKyB0eXBlTmFtZSArICcgdl9vdXQ7XG4nOworICAgICAgICAgICAgZnJhZyArPSAn
ZmxhdCBpbiAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcgdl9vdXQ7XG4nOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdnR4ICs9ICdmbGF0IG91dCAnICsgcHJlY05hbWUg
KyAnICcgKyB0eXBlTmFtZSArICcgdl9pbjA7XG4nICsKKyAgICAgICAgICAgICAgICAnZmxhdCBv
dXQgJyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIHZfaW4xO1xuJzsKKyAgICAgICAg
ICAgIGZyYWcgKz0gJ2ZsYXQgaW4gJyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIHZf
aW4wO1xuJyArCisgICAgICAgICAgICAgICAgJ2ZsYXQgaW4gJyArIHByZWNOYW1lICsgJyAnICsg
dHlwZU5hbWUgKyAnIHZfaW4xO1xuJzsKKyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSAnXG52
b2lkIG1haW4gKHZvaWQpXG57XG4nICsKKyAgICAgICAgICAgICcgICAgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uO1xuJzsKKyAgICAgICAgZnJhZyArPSAnXG52b2lkIG1haW4gKHZvaWQpXG57XG4n
OworCisgICAgICAgIG9wICs9ICdcdCcgKyBwcmVjTmFtZSArICcgJyArIHR5cGVOYW1lICsgJyBp
bjAgPSAnICsgKGlzVmVydGV4Q2FzZSA/ICdhXycgOiAndl8nKSArICdpbjA7XG4nICsKKyAgICAg
ICAgICAgICdcdCcgKyBwcmVjTmFtZSArICcgJyArIHR5cGVOYW1lICsgJyBpbjEgPSAnICsgKGlz
VmVydGV4Q2FzZSA/ICdhXycgOiAndl8nKSArICdpbjE7XG4nOworCisgICAgICAgIGlmICghaXNW
ZXJ0ZXhDYXNlKQorICAgICAgICAgICAgb3AgKz0gJ1x0JyArIHByZWNOYW1lICsgJyAnICsgdHlw
ZU5hbWUgKyAnIHJlcztcbic7CisKKyAgICAgICAgb3AgKz0gJ1x0JyArIChpc1ZlcnRleENhc2Ug
PyAndl9vdXQnIDogJ3JlcycpICsgJyA9ICcgKyBldmFsT3AgKyAnO1xuJzsKKworICAgICAgICB2
dHggKz0gaXNWZXJ0ZXhDYXNlID8gb3AgOiAnJzsKKyAgICAgICAgZnJhZyArPSBpc1ZlcnRleENh
c2UgPyAnJyA6IG9wOworICAgICAgICBvcCA9ICcnOworCisgICAgICAgIGlmIChpc1ZlcnRleENh
c2UpIHsKKyAgICAgICAgICAgIGZyYWcgKz0gJyAgICBvX291dCA9IGZsb2F0Qml0c1RvVWludCh2
X291dCk7XG4nOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdnR4ICs9ICcgICAgdl9p
bjAgPSBhX2luMDtcbicgKworICAgICAgICAgICAgICAgICcgICAgdl9pbjEgPSBhX2luMTtcbic7
CisgICAgICAgICAgICBmcmFnICs9ICcgICAgb19vdXQgPSBmbG9hdEJpdHNUb1VpbnQocmVzKTtc
bic7CisgICAgICAgIH0KKworICAgICAgICB2dHggKz0gJ31cbic7CisgICAgICAgIGZyYWcgKz0g
J31cbic7CisKKyAgICAgICAgcmV0dXJuIG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dy
YW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZ0eCwgZnJhZykpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
IHR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZhbE9wCisgICAgICogQHBhcmFtIHtib29sZWFufSBp
c1ZlcnRleENhc2UKKyAgICAgKiBAcmV0dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dy
YW19CisgICAgICovCisgICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmNyZWF0ZUludFVpbnRQ
cmVjaXNpb25FdmFsUHJvZ3JhbSA9IGZ1bmN0aW9uKHR5cGUsIHByZWNpc2lvbiwgZXZhbE9wLCBp
c1ZlcnRleENhc2UpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB0eXBlTmFt
ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHR5cGUpOworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIHByZWNOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25O
YW1lKHByZWNpc2lvbik7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4ID0g
Jyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZyA9ICcnOworICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wID0gJyc7CisKKyAgICAgICAgdnR4ICs9ICcj
dmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlv
bjtcbicgKworICAgICAgICAgICAgJ2luICcgKyBwcmVjTmFtZSArICcgJyArIHR5cGVOYW1lICsg
JyBhX2luMDtcbicgKworICAgICAgICAgICAgJ2luICcgKyBwcmVjTmFtZSArICcgJyArIHR5cGVO
YW1lICsgJyBhX2luMTtcbic7CisgICAgICAgIGZyYWcgKz0gJyN2ZXJzaW9uIDMwMCBlc1xuJyAr
CisgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0ICcgKyBwcmVjTmFtZSArICcg
JyArIHR5cGVOYW1lICsgJyBvX291dDtcbic7CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkg
eworICAgICAgICAgICAgdnR4ICs9ICdmbGF0IG91dCAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBl
TmFtZSArICcgdl9vdXQ7XG4nOworICAgICAgICAgICAgZnJhZyArPSAnZmxhdCBpbiAnICsgcHJl
Y05hbWUgKyAnICcgKyB0eXBlTmFtZSArICcgdl9vdXQ7XG4nOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdnR4ICs9ICdmbGF0IG91dCAnICsgcHJlY05hbWUgKyAnICcgKyB0eXBlTmFt
ZSArICcgdl9pbjA7XG4nICsKKyAgICAgICAgICAgICAgICAnZmxhdCBvdXQgJyArIHByZWNOYW1l
ICsgJyAnICsgdHlwZU5hbWUgKyAnIHZfaW4xO1xuJzsKKyAgICAgICAgICAgIGZyYWcgKz0gJ2Zs
YXQgaW4gJyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIHZfaW4wO1xuJyArCisgICAg
ICAgICAgICAgICAgJ2ZsYXQgaW4gJyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIHZf
aW4xO1xuJzsKKyAgICAgICAgfQorCisgICAgICAgIHZ0eCArPSAnXG52b2lkIG1haW4gKHZvaWQp
XG57XG4nKworICAgICAgICAgICAgJyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nOwor
ICAgICAgICBmcmFnICs9ICdcbnZvaWQgbWFpbiAodm9pZClcbntcbic7CisKKyAgICAgICAgb3Ag
Kz0gJ1x0JyArIHByZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIGluMCA9ICcgKyAoaXNWZXJ0
ZXhDYXNlID8gJ2FfJyA6ICd2XycpICsgJ2luMDtcbicgKworICAgICAgICAgICAgJ1x0JyArIHBy
ZWNOYW1lICsgJyAnICsgdHlwZU5hbWUgKyAnIGluMSA9ICcgKyAoaXNWZXJ0ZXhDYXNlID8gJ2Ff
JyA6ICd2XycpICsgJ2luMTtcbic7CisKKyAgICAgICAgb3AgKz0gJ1x0JyArIChpc1ZlcnRleENh
c2UgPyAndl8nIDogJ29fJykgKyAnb3V0ID0gJyArIGV2YWxPcCArICc7XG4nOworCisgICAgICAg
IHZ0eCArPSBpc1ZlcnRleENhc2UgPyBvcCA6ICcnOworICAgICAgICBmcmFnICs9IGlzVmVydGV4
Q2FzZSA/ICcnIDogb3A7CisgICAgICAgIG9wID0gJyc7CisKKyAgICAgICAgaWYgKGlzVmVydGV4
Q2FzZSkgeworICAgICAgICAgICAgZnJhZyArPSAnICAgIG9fb3V0ID0gdl9vdXQ7XG4nOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdnR4ICs9ICcgICAgdl9pbjAgPSBhX2luMDtcbicg
KworICAgICAgICAgICAgICAgICcgICAgdl9pbjEgPSBhX2luMTtcbic7CisgICAgICAgIH0KKwor
ICAgICAgICB2dHggKz0gJ31cbic7CisgICAgICAgIGZyYWcgKz0gJ31cbic7CisKKyAgICAgICAg
cmV0dXJuIG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclBy
b2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKHZ0eCwgZnJhZykpOworICAgIH07CisKKyAgICAvKiog
QHR5cGVkZWYge2Z1bmN0aW9uKG51bWJlciwgbnVtYmVyKX0gKi8gZXMzZlNoYWRlclByZWNpc2lv
blRlc3RzLkV2YWxGdW5jOworCisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBvcAorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkV2YWxGdW5jfSBl
dmFsRnVuYworICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHByZWNpc2lv
bgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmFuZ2VBCisgICAgICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSByYW5nZUIKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVydGV4Q2Fz
ZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJGbG9hdFByZWNp
c2lvbkNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBvcCwgZXZhbEZ1bmMsIHByZWNpc2lvbiwg
cmFuZ2VBLCByYW5nZUIsIGlzVmVydGV4Q2FzZSkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICAvLyBDYXNlIHBhcmFtZXRlcnMu
CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fb3AgPSBvcDsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRXZhbEZ1bmN9ICovIHRoaXMubV9l
dmFsRnVuYyA9IGV2YWxGdW5jOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJl
Y2lzaW9ufSAqLyB0aGlzLm1fcHJlY2lzaW9uID0gcHJlY2lzaW9uOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9yYW5nZUEgPSByYW5nZUE7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3JhbmdlQiA9IHJhbmdlQjsKKyAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLm1faXNWZXJ0ZXhDYXNlID0gaXNWZXJ0ZXhD
YXNlOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtVGVzdHNQZXJJ
dGVyID0gMzI7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtSXRlcnMg
PSA0OworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdGhpcy5tX3JuZCA9
IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkpOwor
CisgICAgICAgIC8vIEl0ZXJhdGlvbiBzdGF0ZS4KKyAgICAgICAgLyoqIEB0eXBlIHs/Z2x1U2hh
ZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisgICAg
ICAgIC8qKiBAdHlwZSB7P1dlYkdMRnJhbWVidWZmZXJ9ICovIHRoaXMubV9mcmFtZWJ1ZmZlciA9
IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB0aGlzLm1f
cmVuZGVyYnVmZmVyID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bV9pdGVyTmR4ID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxib29sZWFuPn0gKi8gdGhp
cy5tX2l0ZXJQYXNzID0gW107CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0
cy5TaGFkZXJGbG9hdFByZWNpc2lvbkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0
cy5TaGFkZXJGbG9hdFByZWNpc2lvbkNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLlNoYWRlckZsb2F0UHJlY2lzaW9uQ2FzZTsKKworICAgIGVzM2ZT
aGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJGbG9hdFByZWNpc2lvbkNhc2UucHJvdG90eXBlLmlu
aXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghdGhpcy5tX3Byb2dy
YW0gJiYgIXRoaXMubV9mcmFtZWJ1ZmZlciAmJiAhdGhpcy5tX3JlbmRlcmJ1ZmZlciwgJ1Byb2dy
YW0vRnJhbWVidWZmZXIvUmVuZGVyYnVmZmVyIHNob3VsZCBiZSBudWxsIGF0IHRoaXMgcG9pbnQu
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8vIENyZWF0ZSBwcm9ncmFtLgorICAgICAgICB0
aGlzLm1fcHJvZ3JhbSA9IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5jcmVhdGVGbG9hdFByZWNp
c2lvbkV2YWxQcm9ncmFtKHRoaXMubV9wcmVjaXNpb24sIHRoaXMubV9vcCwgdGhpcy5tX2lzVmVy
dGV4Q2FzZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLm1fcHJvZ3JhbS5pc09rKCkpCisgICAgICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKGZhbHNlLCAnQ29tcGlsZSBmYWlsZWQnLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGZyYW1lYnVmZmVyLgorICAgICAgICB0aGlzLm1fZnJh
bWVidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICB0aGlzLm1fcmVuZGVy
YnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgICAgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHRoaXMubV9yZW5kZXJidWZmZXIpOworICAgICAgICBn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUjMyVUksIGVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5GUkFNRUJVRkZFUl9XSURUSCwgZXMzZlNoYWRlclByZWNpc2lvblRl
c3RzLkZSQU1FQlVGRkVSX0hFSUdIVCk7CisKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCB0aGlzLm1fZnJhbWVidWZmZXIpOworICAgICAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJF
TkRFUkJVRkZFUiwgdGhpcy5tX3JlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyhnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PT0gZ2wuRlJB
TUVCVUZGRVJfQ09NUExFVEUsICdGcmFtZWJ1ZmZlciBpcyBpbmNvbXBsZXRlJywgZmFsc2UsIHRy
dWUpOworCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7
CisKKyAgICAgICAgdGhpcy5tX2l0ZXJOZHggPSAwOworICAgIH07CisKKyAgICBlczNmU2hhZGVy
UHJlY2lzaW9uVGVzdHMuU2hhZGVyRmxvYXRQcmVjaXNpb25DYXNlLnByb3RvdHlwZS5kZWluaXQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYodGhpcy5tX2ZyYW1lYnVmZmVyKQorICAgICAgICAg
ICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIodGhpcy5tX2ZyYW1lYnVmZmVyKTsKKyAgICAgICAgaWYo
dGhpcy5tX3JlbmRlcmJ1ZmZlcikKKyAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0
aGlzLm1fcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAg
ICAgICB0aGlzLm1fZnJhbWVidWZmZXIgPSBudWxsOworICAgICAgICB0aGlzLm1fcmVuZGVyYnVm
ZmVyID0gbnVsbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGlu
MAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbjEKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVm
ZXJlbmNlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlc3VsdAorICAgICAqLworCisgICAgZXMz
ZlNoYWRlclByZWNpc2lvblRlc3RzLlNoYWRlckZsb2F0UHJlY2lzaW9uQ2FzZS5wcm90b3R5cGUu
Y29tcGFyZSA9IGZ1bmN0aW9uKGluMCwgaW4xLCByZWZlcmVuY2UsIHJlc3VsdCkgeworICAgICAg
ICAvLyBDb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgNjQtYml0IHJlZmVyZW5jZSB2YWx1ZSB0byBh
Y2N1cmF0ZWx5IGV2YWx1YXRlIHJvdW5kaW5nIG1vZGUgZXJyb3IuCisgICAgICAgIC8vIElmIDMy
LWJpdCByZWZlcmVuY2UgdmFsdWUgaXMgdXNlZCwgMiBiaXRzIG9mIHJvdW5kaW5nIGVycm9yIG11
c3QgYmUgYWxsb3dlZC4KKworICAgICAgICAvLyBGb3IgbWVkaXVtcCBhbmQgbG93cCB0eXBlcyB0
aGUgY29tcGFyaXNvbiBjdXJyZW50bHkgYWxsb3dzIDMgYml0cyBvZiByb3VuZGluZyBlcnJvcjoK
KyAgICAgICAgLy8gdHdvIGJpdHMgZnJvbSBjb252ZXJzaW9ucyBhbmQgb25lIGZyb20gYWN0dWFs
IG9wZXJhdGlvbi4KKworICAgICAgICAvLyBcdG9kbyBbMjAxMy0wOS0zMCBweXJ5XSBNYWtlIHRo
aXMgbW9yZSBzdHJpY3Q6IGRldGVybWluZSBpZiByb3VuZGluZyBjYW4gYWN0dWFsbHkgaGFwcGVu
LgorCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgIG1hbnRpc3NhQml0cyA9IHRo
aXMubV9wcmVjaXNpb24gPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQ
ID8gMjMgOiAxMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciAgbnVtUHJlY0Jp
dHMgPSA1MiAtIG1hbnRpc3NhQml0czsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyICBpbjBFeHAgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKGluMCkuZXhwb25lbnQoKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciAgaW4xRXhwID0gdGN1RmxvYXQubmV3RmxvYXQz
MihpbjEpLmV4cG9uZW50KCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgIHJl
c0V4cCA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIocmVzdWx0KS5leHBvbmVudCgpOworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyICBudW1Mb3N0Qml0cyA9IE1hdGgubWF4KGluMEV4cCAt
IHJlc0V4cCwgaW4xRXhwIC0gcmVzRXhwLCAwKTsgLy8gTG9zdCBkdWUgdG8gbWFudGlzc2Egc2hp
ZnQuCisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciAgcm91bmRpbmdVbHBFcnJv
ciA9IHRoaXMubV9wcmVjaXNpb24gPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X0hJR0hQID8gMSA6IDM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgIG1hc2tC
aXRzID0gbnVtTG9zdEJpdHMgKyBudW1QcmVjQml0czsKKworICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgiQXNzdW1pbmcgIiArIG1hbnRpc3NhQml0cyArICIgbWFudGlzc2EgYml0cywgIiAr
IG51bUxvc3RCaXRzICsgIiBiaXRzIGxvc3QgaW4gb3BlcmF0aW9uLCBhbmQgIiArIHJvdW5kaW5n
VWxwRXJyb3IgKyAiIFVMUCByb3VuZGluZyBlcnJvci4iKQorCisgICAgICAgIC8vIFRoZXNlIG51
bWJlcnMgc2hvdWxkIG5ldmVyIGJlIGxhcmdlciB0aGFuIDUyIGJpdHMuIEFuIGFzc2VydGlvbiBp
biBnZXRCaXRSYW5nZSB2ZXJpZmllcyB0aGlzLgorICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGFjY3VyYXRlUmVmQml0cyA9IHRjdUZsb2F0Lm5ld0Zsb2F0NjQocmVmZXJlbmNlKS5n
ZXRCaXRSYW5nZShtYXNrQml0cywgNjQpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGFjY3VyYXRlUmVzQml0cyA9IHRjdUZsb2F0Lm5ld0Zsb2F0NjQocmVzdWx0KS5nZXRCaXRS
YW5nZShtYXNrQml0cywgNjQpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHVs
cERpZmYgPSBNYXRoLmFicyhhY2N1cmF0ZVJlZkJpdHMgLSBhY2N1cmF0ZVJlc0JpdHMpOworCisg
ICAgICAgIGlmICh1bHBEaWZmID4gcm91bmRpbmdVbHBFcnJvcikgeworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoIkVSUk9SOiBjb21wYXJpc29uIGZhaWxlZCEgVUxQIGRpZmYgKGln
bm9yaW5nIGxvc3QvdW5kZWZpbmVkIGJpdHMpID0gIiArIHVscERpZmYgKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2Uu
SXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuU2hh
ZGVyRmxvYXRQcmVjaXNpb25DYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciB0ZXN0UGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgdmFyIHRlc3RQYXNzZWRNc2cg
PSAnUGFzcyc7CisKKyAgICAgICAgLy8gQ29uc3RhbnQgZGF0YS4KKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcG9zaXRpb24gPVsKKyAgICAgICAgLTEuMCwgLTEuMCwg
MC4wLCAxLjAsCisgICAgICAgICAgICAtMS4wLCAxLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAg
MS4wLCAtMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgIDEuMCwgMS4wLCAwLjAsIDEuMAorICAg
IF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgaW5kaWNlcyA9
IFswLCAxLCAyLCAyLCAxLCAzXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBu
dW1WZXJ0aWNlcyA9IDQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IGluMEFyciA9IFswLjAsIDAuMCwgMC4wLCAwLjBdOworICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBpbjFBcnIgPSBbMC4wLCAwLjAsIDAuMCwgMC4wXTsKKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGdsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZz59ICovIHZh
ciB2ZXJ0ZXhBcnJheXMgPSBbXTsKKworICAgICAgICAvLyBJbWFnZSByZWFkIGZyb20gR0wuCisg
ICAgICAgIC8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgcGl4ZWxzX3VpbnQgPSBu
ZXcgVWludDMyQXJyYXkoZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX1dJRFRI
ICogZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX0hFSUdIVCAqIDQpOworCisg
ICAgICAgIC8vIFx0b2RvIFsyMDEyLTA1LTAzIHB5cnldIENvdWxkIGJlIGNhY2hlZC4KKyAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBwcm9nID0gdGhpcy5tX3Byb2dyYW0u
Z2V0UHJvZ3JhbSgpOworCisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZyk7CisgICAgICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5tX2ZyYW1lYnVmZmVyKTsKKwor
ICAgICAgICB2ZXJ0ZXhBcnJheXNbMF0gPSBnbHVEcmF3VXRpbC5uZXdGbG9hdFZlcnRleEFycmF5
QmluZGluZygiYV9wb3NpdGlvbiIsIDQsIG51bVZlcnRpY2VzLCAwLCBwb3NpdGlvbik7CisKKwor
ICAgICAgICAvLyBDb21wdXRlIHZhbHVlcyBhbmQgcmVmZXJlbmNlLgorICAgICAgICBmb3IgKHZh
ciB0ZXN0TmR4ID0gMDsgdGVzdE5keCA8IHRoaXMubV9udW1UZXN0c1Blckl0ZXI7IHRlc3ROZHgr
KykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbjAgPSB0aGlzLm1f
cm5kLmdldEZsb2F0KHRoaXMubV9yYW5nZUFbMF0sIHRoaXMubV9yYW5nZUFbMV0pOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbjEgPSB0aGlzLm1fcm5kLmdldEZsb2F0
KHRoaXMubV9yYW5nZUJbMF0sIHRoaXMubV9yYW5nZUJbMV0pOworCisgICAgICAgICAgICAvLyBU
aGVzZSByYW5kb20gbnVtYmVycyBhcmUgdXNlZCBpbiB0aGUgcmVmZXJlbmNlIGNvbXB1dGF0aW9u
LiBCdXQKKyAgICAgICAgICAgIC8vIGhpZ2hwIGlzIG9ubHkgMzIgYml0cywgc28gdGhlc2UgZmxv
YXQ2NHMgbXVzdCBiZSByb3VuZGVkIHRvCisgICAgICAgICAgICAvLyBmbG9hdDMyIGZpcnN0IGZv
ciBjb3JyZWN0bmVzcy4gVGhpcyBpcyBuZWVkZWQgZm9yIGhpZ2hwX211bF8qIG9uCisgICAgICAg
ICAgICAvLyBvbmUgTGludXgvTlZJRElBIG1hY2hpbmUuCisgICAgICAgICAgICBpbjAgPSB0Y3VG
bG9hdC5uZXdGbG9hdDMyKGluMCkuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIGluMSA9IHRjdUZs
b2F0Lm5ld0Zsb2F0MzIoaW4xKS5nZXRWYWx1ZSgpOworCisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHJlZkQgPSB0aGlzLm1fZXZhbEZ1bmMoaW4wLCBpbjEpOworCisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiaXRlciAiICsgdGhpcy5tX2l0ZXJOZHggKyAi
LCB0ZXN0ICIgKyB0ZXN0TmR4ICsgIjogIisKKyAgICAgICAgICAgICAgICAiaW4wID0gIiArIGlu
MCArICIgLyAiICsgdGN1RmxvYXQubmV3RmxvYXQzMihpbjApLmJpdHMoKSArCisgICAgICAgICAg
ICAgICAgIiwgaW4xID0gIiArIGluMSArICIgLyAiICsgdGN1RmxvYXQubmV3RmxvYXQzMihpbjEp
LmJpdHMoKSArCisgICAgICAgICAgICAgICAgIiAgcmVmZXJlbmNlID0gIiArIHJlZkQgKyAiIC8g
IiArIHRjdUZsb2F0Lm5ld0Zsb2F0MzIocmVmRCkuYml0cygpKTsKKworICAgICAgICAgICAgaW4w
QXJyID0gW2luMCwgaW4wLCBpbjAsIGluMF07CisgICAgICAgICAgICBpbjFBcnIgPSBbaW4xLCBp
bjEsIGluMSwgaW4xXTsKKyAgICAgICAgICAgIHZlcnRleEFycmF5c1sxXSA9IGdsdURyYXdVdGls
Lm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5nKCJhX2luMCIsIDEsIG51bVZlcnRpY2VzLCAwLCBp
bjBBcnIpOworICAgICAgICAgICAgdmVydGV4QXJyYXlzWzJdID0gZ2x1RHJhd1V0aWwubmV3Rmxv
YXRWZXJ0ZXhBcnJheUJpbmRpbmcoImFfaW4xIiwgMSwgbnVtVmVydGljZXMsIDAsIGluMUFycik7
CisKKyAgICAgICAgICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2csIHZlcnRleEFycmF5cywg
Z2x1RHJhd1V0aWwudHJpYW5nbGVzKGluZGljZXMpKTsKKworICAgICAgICAgICAgZ2wucmVhZFBp
eGVscygwLCAwLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEgsCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX0hFSUdI
VCwgZ2wuUkdCQV9JTlRFR0VSLCBnbC5VTlNJR05FRF9JTlQsIHBpeGVsc191aW50KTsKKworICAg
ICAgICAgICAgdmFyIHBpeGVscyA9IG5ldyBGbG9hdDMyQXJyYXkocGl4ZWxzX3VpbnQuYnVmZmVy
KTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCIgIHJlc3VsdCA9ICIgKyBwaXhl
bHNbMF0gKyAiIC8gIiArIHRjdUZsb2F0Lm5ld0Zsb2F0MzIocGl4ZWxzWzBdKS5iaXRzKCkpOwor
CisgICAgICAgICAgICAvLyBWZXJpZnkgcmVzdWx0cworICAgICAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgZmlyc3RQaXhlbE9rID0gdGhpcy5jb21wYXJlKGluMCwgaW4xLCByZWZE
LCBwaXhlbHNbMF0pOworCisgICAgICAgICAgICBpZiAoZmlyc3RQaXhlbE9rKSB7CisgICAgICAg
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCByZXN0IG9mIHBpeGVscyBtYXRjaCB0byBmaXJzdCBvbmUu
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmaXJzdFBpeGVsQml0
cyA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIocGl4ZWxzWzBdKS5iaXRzKCk7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYWxsUGl4ZWxzT2sgPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMu
RlJBTUVCVUZGRVJfSEVJR0hUOyB5KyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
eCA9IDA7IHggPCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEg7IHgr
KykgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBw
aXhlbEJpdHMgPSB0Y3VGbG9hdC5uZXdGbG9hdDMyKHBpeGVsc1soeSAqIGVzM2ZTaGFkZXJQcmVj
aXNpb25UZXN0cy5GUkFNRUJVRkZFUl9XSURUSCArIHgpICogNF0pLmJpdHMoKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsQml0cyAhPSBmaXJzdFBpeGVsQml0cykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJFUlJPUjogSW5j
b25zaXN0ZW50IHJlc3VsdHMsIGdvdCAiICsgcGl4ZWxCaXRzICsgIiBhdCAoIiArIHggKyAiLCAi
ICsgeSArICIpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxQaXhlbHNPayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxQaXhlbHNPaykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgh
YWxsUGl4ZWxzT2speworICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgi
aXRlciAiICsgdGhpcy5tX2l0ZXJOZHggKyAiLCB0ZXN0ICIgKyB0ZXN0TmR4ICsgIkluY29uc2lz
dGVudCB2YWx1ZXMgaW4gZnJhbWVidWZmZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkTXNnID0gJ0luY29u
c2lzdGVudCB2YWx1ZXMgaW4gZnJhbWVidWZmZXInOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoIml0ZXIgIiArIHRoaXMubV9pdGVyTmR4ICsgIiwgdGVzdCAiICsgdGVzdE5keCAr
ICJSZXN1bHQgY29tcGFyaXNvbiBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZE1zZyA9ICdSZXN1bHQgY29tcGFy
aXNvbiBmYWlsZWQnCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBbZGFn
XSBBZ2dyZWdhdGluZyB0ZXN0IHJlc3VsdHMgdG8gbWFrZSB0aGUgdGVzdCBsZXNzIHZlcmJvc2Uu
CisgICAgICAgIHRoaXMubV9pdGVyUGFzc1t0aGlzLm1faXRlck5keF0gPSB0ZXN0UGFzc2VkOwor
CisgICAgICAgIC8vIFtkYWddIFNob3cgdGVzdCByZXN1bHRzIGFmdGVyIHRoZSBsYXN0IGl0ZXJh
dGlvbiBpcyBkb25lLgorICAgICAgICBpZiAodGhpcy5tX2l0ZXJQYXNzLmxlbmd0aCA9PT0gdGhp
cy5tX251bUl0ZXJzKSB7CisgICAgICAgICAgICBpZiAoIWRlTWF0aC5ib29sQWxsKHRoaXMubV9p
dGVyUGFzcykpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnModGVzdFBhc3NlZE1z
ZywgZmFsc2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWRP
cHRpb25zKHRlc3RQYXNzZWRNc2csIHRydWUpOworICAgICAgICB9CisgICAgICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgdGhpcy5tX2l0ZXJO
ZHggKz0gMTsKKyAgICAgICAgcmV0dXJuICh0aGlzLm1faXRlck5keCA8IHRoaXMubV9udW1JdGVy
cykgPyB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LkNPTlRJTlVFIDogdGN1VGVzdENhc2UuSXRl
cmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBvcAorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkV2YWxG
dW5jfSBldmFsRnVuYworICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259IHBy
ZWNpc2lvbgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRzCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSByYW5nZUEKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJhbmdlQgor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisgICAgICovCisgICAgZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLlNoYWRlckludFByZWNpc2lvbkNhc2UgPSBmdW5jdGlvbihuYW1l
LCBkZXNjLCBvcCwgZXZhbEZ1bmMsIHByZWNpc2lvbiwgYml0cywgcmFuZ2VBLCByYW5nZUIsIGlz
VmVydGV4Q2FzZSkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2MpOworICAgICAgICAvLyBDYXNlIHBhcmFtZXRlcnMuCisgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB0aGlzLm1fb3AgPSBvcDsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hh
ZGVyUHJlY2lzaW9uVGVzdHMuRXZhbEZ1bmN9ICovIHRoaXMubV9ldmFsRnVuYyA9IGV2YWxGdW5j
OworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB0aGlzLm1f
cHJlY2lzaW9uID0gcHJlY2lzaW9uOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX2JpdHMgPSBiaXRzOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRo
aXMubV9yYW5nZUEgPSByYW5nZUE7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdGhpcy5tX3JhbmdlQiA9IHJhbmdlQjsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LyB0aGlzLm1faXNWZXJ0ZXhDYXNlID0gaXNWZXJ0ZXhDYXNlOworCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtVGVzdHNQZXJJdGVyID0gMzI7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtSXRlcnMgPSA0OworICAgICAgICAvKiogQHR5cGUg
e2RlUmFuZG9tLlJhbmRvbX0gKi8gdGhpcy5tX3JuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVT
dHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkpOworCisgICAgICAgIC8vIEl0ZXJhdGlvbiBz
dGF0ZS4KKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19
ICovIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTEZyYW1l
YnVmZmVyfSAqLyB0aGlzLm1fZnJhbWVidWZmZXIgPSBudWxsOworICAgICAgICAvKiogQHR5cGUg
e1dlYkdMUmVuZGVyYnVmZmVyfSAqLyB0aGlzLm1fcmVuZGVyYnVmZmVyID0gbnVsbDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9pdGVyTmR4ID0gMDsKKyAgICB9OworCisg
ICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLlNoYWRlckludFByZWNpc2lvbkNhc2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAg
IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJJbnRQcmVjaXNpb25DYXNlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJJbnRQcmVjaXNp
b25DYXNlOworCisgICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLlNoYWRlckludFByZWNpc2lv
bkNhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyghdGhpcy5tX3Byb2dyYW0gJiYgIXRoaXMubV9mcmFtZWJ1ZmZlciAmJiAhdGhpcy5tX3Jl
bmRlcmJ1ZmZlciwgJ1Byb2dyYW0vRnJhbWVidWZmZXIvUmVuZGVyYnVmZmVyIHNob3VsZCBiZSBu
dWxsIGF0IHRoaXMgcG9pbnQuJywgZmFsc2UsIHRydWUpOworICAgICAgICAvLyBDcmVhdGUgcHJv
Z3JhbS4KKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMu
Y3JlYXRlSW50VWludFByZWNpc2lvbkV2YWxQcm9ncmFtKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5ULCB0aGlzLm1fcHJlY2lzaW9uLCB0aGlzLm1fb3AsIHRoaXMubV9pc1ZlcnRleENhc2UpOwor
CisgICAgICAgIGlmICghdGhpcy5tX3Byb2dyYW0uaXNPaygpKQorICAgICAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucyhmYWxzZSwgJ0NvbXBpbGUgZmFpbGVkJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgIC8vIENyZWF0ZSBmcmFtZWJ1ZmZlci4KKyAgICAgICAgdGhpcy5tX2ZyYW1lYnVmZmVyID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgdGhpcy5tX3JlbmRlcmJ1ZmZlciA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wu
UkVOREVSQlVGRkVSLCB0aGlzLm1fcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlIzMkksIGVzM2ZTaGFkZXJQcmVjaXNpb25U
ZXN0cy5GUkFNRUJVRkZFUl9XSURUSCwgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZSQU1FQlVG
RkVSX0hFSUdIVCk7CisKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCB0aGlzLm1fZnJhbWVidWZmZXIpOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwg
dGhpcy5tX3JlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PT0gZ2wuRlJBTUVCVUZGRVJfQ09N
UExFVEUsICdGcmFtZWJ1ZmZlciBpcyBpbmNvbXBsZXRlJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAg
dGhpcy5tX2l0ZXJOZHggPSAwOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJOdW1i
ZXIgb2YgYWNjdXJhdGUgYml0cyBhc3N1bWVkID0gIiArIHRoaXMubV9iaXRzKTsKKyAgICB9Owor
CisgICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLlNoYWRlckludFByZWNpc2lvbkNhc2UucHJv
dG90eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZih0aGlzLm1fZnJhbWVidWZm
ZXIpCisgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLm1fZnJhbWVidWZmZXIp
OworICAgICAgICBpZih0aGlzLm1fcmVuZGVyYnVmZmVyKQorICAgICAgICAgICAgZ2wuZGVsZXRl
UmVuZGVyYnVmZmVyKHRoaXMubV9yZW5kZXJidWZmZXIpOworICAgICAgICB0aGlzLm1fcHJvZ3Jh
bSA9IG51bGw7CisgICAgICAgIHRoaXMubV9mcmFtZWJ1ZmZlciA9IG51bGw7CisgICAgICAgIHRo
aXMubV9yZW5kZXJidWZmZXIgPSBudWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0cworICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKworICAgIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5l
eHRlbmRUbzMyQml0ID0gZnVuY3Rpb24odmFsdWUsIGJpdHMpIHsKKyAgICAgICAgcmV0dXJuICh2
YWx1ZSAmICgoMSA8PCAoYml0cyAtIDEpKSAtIDEpKSB8ICgodmFsdWUgJiAoMSA8PCAoYml0cyAt
IDEpKSkgPDwgKDMyIC0gYml0cykpID4+ICgzMiAtIGJpdHMpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAg
IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJJbnRQcmVjaXNpb25DYXNlLnByb3RvdHlw
ZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXN0UGFzc2VkID0gdHJ1ZTsK
KyAgICAgICAgdmFyIHRlc3RQYXNzZWRNc2cgPSAnUGFzcyc7CisgICAgICAgIC8vIENvbnN0YW50
IGRhdGEuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHBvc2l0aW9u
ID0gWworICAgICAgICAtMS4wLCAtMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgIC0xLjAsIDEu
MCwgMC4wLCAxLjAsCisgICAgICAgICAgICAxLjAsIC0xLjAsIDAuMCwgMS4wLAorICAgICAgICAg
ICAgMS4wLCAxLjAsIDAuMCwgMS4wCisgICAgXQorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciBpbmRpY2VzID0gWzAsIDEsIDIsIDIsIDEsIDNdOworCisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtVmVydGljZXMgICAgPSA0OworICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBpbjBBcnIgPSBbMCwgMCwgMCwgMF07CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGluMUFyciA9IFswLCAwLCAwLCAw
XTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hc2sgPSB0aGlzLm1fYml0
cyA9PT0gMzIgPyAweGZmZmZmZmZmIDogKCgxIDw8IHRoaXMubV9iaXRzKSAtIDEpOworICAgICAg
ICAvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0gKi8gdmFyIHBpeGVscyA9IG5ldyBJbnQzMkFy
cmF5KGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5GUkFNRUJVRkZFUl9XSURUSCAqIGVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5GUkFNRUJVRkZFUl9IRUlHSFQgKiA0KTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheUJpbmRpbmc+fSAqLyB2YXIgdmVydGV4
QXJyYXlzID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBw
cm9nID0gdGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpOworCisgICAgICAgIC8vIFx0b2RvIFsy
MDEyLTA1LTAzIHB5cnldIEEgYml0IGhhY2t5LiBnZXRJbnQoKSBzaG91bGQgd29yayBmaW5lIHdp
dGggcmFuZ2VzIGxpa2UgdGhpcy4KKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIg
aXNNYXhSYW5nZUEgPSB0aGlzLm1fcmFuZ2VBWzBdID09PSAweDgwMDAwMDAwICYmIHRoaXMubV9y
YW5nZUFbMV0gPT09IDB4N2ZmZmZmZmY7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8g
dmFyIGlzTWF4UmFuZ2VCID0gdGhpcy5tX3JhbmdlQlswXSA9PT0gMHg4MDAwMDAwMCAmJiB0aGlz
Lm1fcmFuZ2VCWzFdID09PSAweDdmZmZmZmZmOworCisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJv
Zyk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5tX2Zy
YW1lYnVmZmVyKTsKKworICAgICAgICB2ZXJ0ZXhBcnJheXNbMF0gPSBnbHVEcmF3VXRpbC5uZXdG
bG9hdFZlcnRleEFycmF5QmluZGluZygiYV9wb3NpdGlvbiIsIDQsIG51bVZlcnRpY2VzLCAwLCBw
b3NpdGlvbik7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB2YWx1ZXMgYW5kIHJlZmVyZW5jZS4KKyAg
ICAgICAgZm9yICh2YXIgdGVzdE5keCA9IDA7IHRlc3ROZHggPCB0aGlzLm1fbnVtVGVzdHNQZXJJ
dGVyOyB0ZXN0TmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
aW4wID0gdGhpcy5tX3JuZC5nZXRJbnQodGhpcy5tX3JhbmdlQVswXSwgdGhpcy5tX3JhbmdlQVsx
XSk7IC8vZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmV4dGVuZFRvMzJCaXQoKChpc01heFJhbmdl
QSA/IE1hdGguYWJzKHRoaXMubV9ybmQuZ2V0SW50KCkpIDogdGhpcy5tX3JuZC5nZXRJbnQodGhp
cy5tX3JhbmdlQVswXSwgdGhpcy5tX3JhbmdlQVsxXSkpICYgbWFzayksIHRoaXMubV9iaXRzKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaW4xID0gdGhpcy5tX3JuZC5n
ZXRJbnQodGhpcy5tX3JhbmdlQlswXSwgdGhpcy5tX3JhbmdlQlsxXSk7IC8vZXMzZlNoYWRlclBy
ZWNpc2lvblRlc3RzLmV4dGVuZFRvMzJCaXQoKChpc01heFJhbmdlQiA/IE1hdGguYWJzKHRoaXMu
bV9ybmQuZ2V0SW50KCkpIDogdGhpcy5tX3JuZC5nZXRJbnQodGhpcy5tX3JhbmdlQlswXSwgdGhp
cy5tX3JhbmdlQlsxXSkpICYgbWFzayksIHRoaXMubV9iaXRzKTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmTWFza2VkID0gdGhpcy5tX2V2YWxGdW5jKGluMCwgaW4x
KSAmIG1hc2s7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlZk91dCA9
IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5leHRlbmRUbzMyQml0KHJlZk1hc2tlZCwgdGhpcy5t
X2JpdHMpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiaXRlciAiICsgdGhp
cy5tX2l0ZXJOZHggKyAiLCB0ZXN0ICIgKyB0ZXN0TmR4ICsgIjogIiArCisgICAgICAgICAgICAg
ICAgImluMCA9ICIgKyBpbjAgKyAiLCBpbjEgPSAiICsgaW4xICsgIiwgcmVmIG91dCA9ICIgKyBy
ZWZPdXQgKyAiIC8gIiArIHJlZk1hc2tlZCk7CisKKyAgICAgICAgICAgIGluMEFyciA9IFtpbjAs
IGluMCwgaW4wLCBpbjBdOworICAgICAgICAgICAgaW4xQXJyID0gW2luMSwgaW4xLCBpbjEsIGlu
MV07CisKKyAgICAgICAgICAgIHZlcnRleEFycmF5c1sxXSA9IGdsdURyYXdVdGlsLm5ld0ludDMy
VmVydGV4QXJyYXlCaW5kaW5nKCJhX2luMCIsIDEsIG51bVZlcnRpY2VzLCAwLCBpbjBBcnIpOwor
ICAgICAgICAgICAgdmVydGV4QXJyYXlzWzJdID0gZ2x1RHJhd1V0aWwubmV3SW50MzJWZXJ0ZXhB
cnJheUJpbmRpbmcoImFfaW4xIiwgMSwgbnVtVmVydGljZXMsIDAsIGluMUFycik7CisKKyAgICAg
ICAgICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2csIHZlcnRleEFycmF5cywgZ2x1RHJhd1V0
aWwudHJpYW5nbGVzKGluZGljZXMpKTsKKworICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAw
LCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEgsCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX0hFSUdIVCwKKyAgICAg
ICAgICAgICAgICBnbC5SR0JBX0lOVEVHRVIsIGdsLklOVCwgcGl4ZWxzKTsKKworICAgICAgICAg
ICAgLy8gQ29tcGFyZSBwaXhlbHMuCisgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGVz
M2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5GUkFNRUJVRkZFUl9IRUlHSFQ7IHkrKykgeworICAgICAg
ICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLkZS
QU1FQlVGRkVSX1dJRFRIOyB4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBjbXBPdXQgPSBwaXhlbHNbKHkgKiBlczNmU2hhZGVyUHJlY2lzaW9uVGVz
dHMuRlJBTUVCVUZGRVJfV0lEVEggKyB4KSAqIDRdOworICAgICAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIGNtcE1hc2tlZCA9IGNtcE91dCAmIG1hc2s7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNtcE1hc2tlZCAhPSByZWZNYXNrZWQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJDb21wYXJpc29uIGZhaWxlZCAoYXQg
IiArIHggKyAiLCAiICsgeSArICIpOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
ICJnb3QgIiArIGNtcE91dCArICIgLyAiICsgY21wT3V0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWRNc2cgPSAnQ29tcGFyaXNvbiBmYWlsZWQnOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgICAgICB0aGlzLm1faXRl
ck5keCArPSAxOworICAgICAgICBpZiAoIXRlc3RQYXNzZWQpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWRPcHRpb25zKHRlc3RQYXNzZWRNc2csIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiB0
Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgIH0gZWxzZSBpZiAodGVzdFBh
c3NlZCAmJiB0aGlzLm1faXRlck5keCA8IHRoaXMubV9udW1JdGVycykgeworICAgICAgICAgICAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucyh0ZXN0UGFzc2VkTXNnLCB0cnVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3AK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5FdmFsRnVuY30gZXZhbEZ1
bmMKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gYml0cworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
cmFuZ2VBCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByYW5nZUIKKyAgICAgKiBAcGFy
YW0ge2Jvb2xlYW59IGlzVmVydGV4Q2FzZQorICAgICAqLworICAgIGVzM2ZTaGFkZXJQcmVjaXNp
b25UZXN0cy5TaGFkZXJVaW50UHJlY2lzaW9uQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIG9w
LCBldmFsRnVuYywgcHJlY2lzaW9uLCBiaXRzLCByYW5nZUEsIHJhbmdlQiwgaXNWZXJ0ZXhDYXNl
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzYyk7
CisgICAgICAgIC8vIENhc2UgcGFyYW1ldGVycy4KKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHRoaXMubV9vcCA9IG9wOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJQcmVjaXNp
b25UZXN0cy5FdmFsRnVuY30gKi8gdGhpcy5tX2V2YWxGdW5jID0gZXZhbEZ1bmM7CisgICAgICAg
IC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHRoaXMubV9wcmVjaXNpb24g
PSBwcmVjaXNpb247CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fYml0cyA9
IGJpdHM7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX3Jhbmdl
QSA9IHJhbmdlQTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1f
cmFuZ2VCID0gcmFuZ2VCOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV9p
c1ZlcnRleENhc2UgPSBpc1ZlcnRleENhc2U7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMubV9udW1UZXN0c1Blckl0ZXIgPSAzMjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubV9udW1JdGVycyA9IDQ7CisgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20u
UmFuZG9tfSAqLyB0aGlzLm1fcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0
cmluZ0hhc2godGhpcy5uYW1lKSk7CisKKyAgICAgICAgLy8gSXRlcmF0aW9uIHN0YXRlLgorICAg
ICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdGhpcy5t
X3Byb2dyYW0gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJ9ICov
IHRoaXMubV9mcmFtZWJ1ZmZlciA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xSZW5k
ZXJidWZmZXJ9ICovIHRoaXMubV9yZW5kZXJidWZmZXIgPSBudWxsOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy5tX2l0ZXJOZHggPSAwOworICAgIH07CisKKyAgICBlczNmU2hh
ZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVyVWludFByZWNpc2lvbkNhc2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJVaW50UHJlY2lzaW9uQ2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVyVWludFByZWNpc2lvbkNhc2U7
CisKKyAgICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVyVWludFByZWNpc2lvbkNhc2Uu
cHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygh
dGhpcy5tX3Byb2dyYW0gJiYgIXRoaXMubV9mcmFtZWJ1ZmZlciAmJiAhdGhpcy5tX3JlbmRlcmJ1
ZmZlciwgJ1Byb2dyYW0vRnJhbWVidWZmZXIvUmVuZGVyYnVmZmVyIHNob3VsZCBiZSBudWxsIGF0
IHRoaXMgcG9pbnQuJywgZmFsc2UsIHRydWUpOworICAgICAgICAvLyBDcmVhdGUgcHJvZ3JhbS4K
KyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuY3JlYXRl
SW50VWludFByZWNpc2lvbkV2YWxQcm9ncmFtKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwg
dGhpcy5tX3ByZWNpc2lvbiwgdGhpcy5tX29wLCB0aGlzLm1faXNWZXJ0ZXhDYXNlKTsKKworICAg
ICAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkKKyAgICAgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMoZmFsc2UsICdDb21waWxlIGZhaWxlZCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAv
LyBDcmVhdGUgZnJhbWVidWZmZXIuCisgICAgICAgIHRoaXMubV9mcmFtZWJ1ZmZlciA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIHRoaXMubV9yZW5kZXJidWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRF
UkJVRkZFUiwgdGhpcy5tX3JlbmRlcmJ1ZmZlcik7CisgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SMzJVSSwgZXMzZlNoYWRlclByZWNpc2lvblRlc3Rz
LkZSQU1FQlVGRkVSX1dJRFRILCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJf
SEVJR0hUKTsKKworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRo
aXMubV9mcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCB0aGlz
Lm1fcmVuZGVyYnVmZmVyKTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpID09PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVU
RSwgJ0ZyYW1lYnVmZmVyIGlzIGluY29tcGxldGUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
Z2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgICAgICB0aGlz
Lm1faXRlck5keCA9IDA7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoIk51bWJlciBv
ZiBhY2N1cmF0ZSBiaXRzIGFzc3VtZWQgPSAiICsgdGhpcy5tX2JpdHMpOworICAgIH07CisKKyAg
ICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVyVWludFByZWNpc2lvbkNhc2UucHJvdG90
eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZih0aGlzLm1fZnJhbWVidWZmZXIp
CisgICAgICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLm1fZnJhbWVidWZmZXIpOwor
ICAgICAgICBpZih0aGlzLm1fcmVuZGVyYnVmZmVyKQorICAgICAgICAgICAgZ2wuZGVsZXRlUmVu
ZGVyYnVmZmVyKHRoaXMubV9yZW5kZXJidWZmZXIpOworICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9
IG51bGw7CisgICAgICAgIHRoaXMubV9mcmFtZWJ1ZmZlciA9IG51bGw7CisgICAgICAgIHRoaXMu
bV9yZW5kZXJidWZmZXIgPSBudWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJQcmVj
aXNpb25UZXN0cy5TaGFkZXJVaW50UHJlY2lzaW9uQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgdGVzdFBhc3NlZCA9IHRydWU7CisgICAgICAgIHZhciB0
ZXN0UGFzc2VkTXNnID0gJ1Bhc3MnOworCisgICAgICAgIC8vIENvbnN0YW50IGRhdGEuCisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHBvc2l0aW9uID0gWworICAgICAg
ICAtMS4wLCAtMS4wLCAwLjAsIDEuMCwKKyAgICAgICAgICAgIC0xLjAsIDEuMCwgMC4wLCAxLjAs
CisgICAgICAgICAgICAxLjAsIC0xLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgMS4wLCAxLjAs
IDAuMCwgMS4wCisgICAgXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgaW5kaWNlcyA9IFswLCAxLCAyLCAyLCAxLCAzXTsKKworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG51bVZlcnRpY2VzID0gNDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgaW4wQXJyID0gWzAsIDAsIDAsIDBdOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBpbjFBcnIgPSBbMCwgMCwgMCwgMF07CisKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXNrID0gdGhpcy5tX2JpdHMgPT09IDMyID8gMHhm
ZmZmZmZmZiA6ICgoMSA8PCB0aGlzLm1fYml0cykgLSAxKTsKKyAgICAgICAgLyoqIEB0eXBlIHtn
b29nLlR5cGVkQXJyYXl9ICovIHZhciBwaXhlbHMgPSBuZXcgVWludDMyQXJyYXkoZXMzZlNoYWRl
clByZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX1dJRFRIICogZXMzZlNoYWRlclByZWNpc2lvblRl
c3RzLkZSQU1FQlVGRkVSX0hFSUdIVCAqIDQpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGds
dURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZz59ICovIHZhciB2ZXJ0ZXhBcnJheXMgPSBbXTsK
KworICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2cgPSB0aGlzLm1f
cHJvZ3JhbS5nZXRQcm9ncmFtKCk7CisKKyAgICAgICAgLy8gXHRvZG8gWzIwMTItMDUtMDMgcHly
eV0gQSBiaXQgaGFja3kuCisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzTWF4
UmFuZ2VBID0gdGhpcy5tX3JhbmdlQVswXSA9PT0gMCAmJiB0aGlzLm1fcmFuZ2VBWzFdID09PSAw
eGZmZmZmZmZmOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc01heFJhbmdl
QiA9IHRoaXMubV9yYW5nZUJbMF0gPT09IDAgJiYgdGhpcy5tX3JhbmdlQlsxXSA9PT0gMHhmZmZm
ZmZmZjsKKworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2cpOworICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRoaXMubV9mcmFtZWJ1ZmZlcik7CisKKyAgICAgICAg
dmVydGV4QXJyYXlzWzBdID0gZ2x1RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJheUJpbmRpbmco
ImFfcG9zaXRpb24iLCA0LCBudW1WZXJ0aWNlcywgMCwgcG9zaXRpb24pOworCisgICAgICAgIC8v
IENvbXB1dGUgdmFsdWVzIGFuZCByZWZlcmVuY2UuCisgICAgICAgIGZvciAodmFyIHRlc3ROZHgg
PSAwOyB0ZXN0TmR4IDwgdGhpcy5tX251bVRlc3RzUGVySXRlcjsgdGVzdE5keCsrKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGluMCA9IChpc01heFJhbmdlQSA/IE1h
dGguYWJzKHRoaXMubV9ybmQuZ2V0SW50KCkpIDogKHRoaXMubV9yYW5nZUFbMF0gKyBNYXRoLmFi
cyh0aGlzLm1fcm5kLmdldEludCgpKSAlICh0aGlzLm1fcmFuZ2VBWzFdIC0gdGhpcy5tX3Jhbmdl
QVswXSArIDEpKSkgJiBtYXNrOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBpbjEgPSAoaXNNYXhSYW5nZUIgPyBNYXRoLmFicyh0aGlzLm1fcm5kLmdldEludCgpKSA6ICh0
aGlzLm1fcmFuZ2VCWzBdICsgTWF0aC5hYnModGhpcy5tX3JuZC5nZXRJbnQoKSkgJSAodGhpcy5t
X3JhbmdlQlsxXSAtIHRoaXMubV9yYW5nZUJbMF0gKyAxKSkpICYgbWFzazsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmT3V0ID0gdGhpcy5tX2V2YWxGdW5jKGluMCwg
aW4xKSAmIG1hc2s7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJpdGVyICIg
KyB0aGlzLm1faXRlck5keCArICIsIHRlc3QgIiArIHRlc3ROZHggKyAiOiAiICsKKyAgICAgICAg
ICAgICAgICArICJpbjAgPSAiICsgaW4wICsgIiwgaW4xID0gIiArIGluMSArICIsIHJlZiBvdXQg
PSAiICsgcmVmT3V0KQorCisgICAgICAgICAgICBpbjBBcnIgPSBbaW4wLCBpbjAsIGluMCwgaW4w
XTsKKyAgICAgICAgICAgIGluMUFyciA9IFtpbjEsIGluMSwgaW4xLCBpbjFdOworICAgICAgICAg
ICAgdmVydGV4QXJyYXlzWzFdID0gZ2x1RHJhd1V0aWwubmV3VWludDMyVmVydGV4QXJyYXlCaW5k
aW5nKCJhX2luMCIsIDEsIG51bVZlcnRpY2VzLCAwLCBpbjBBcnIpOworICAgICAgICAgICAgdmVy
dGV4QXJyYXlzWzJdID0gZ2x1RHJhd1V0aWwubmV3VWludDMyVmVydGV4QXJyYXlCaW5kaW5nKCJh
X2luMSIsIDEsIG51bVZlcnRpY2VzLCAwLCBpbjFBcnIpOworCisgICAgICAgICAgICBnbHVEcmF3
VXRpbC5kcmF3KGdsLCBwcm9nLCB2ZXJ0ZXhBcnJheXMsIGdsdURyYXdVdGlsLnRyaWFuZ2xlcyhp
bmRpY2VzKSk7CisKKyAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgZXMzZlNoYWRlclBy
ZWNpc2lvblRlc3RzLkZSQU1FQlVGRkVSX1dJRFRILAorICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5GUkFNRUJVRkZFUl9IRUlHSFQsIGdsLlJHQkFfSU5URUdFUiwgZ2wu
VU5TSUdORURfSU5ULCBwaXhlbHMpOworCisgICAgICAgICAgICAvLyBDb21wYXJlIHBpeGVscy4K
KyAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgZXMzZlNoYWRlclByZWNpc2lvblRlc3Rz
LkZSQU1FQlVGRkVSX0hFSUdIVDsgeSsrKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9
IDA7IHggPCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEg7IHgrKykg
eworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNtcE91dCA9
IHBpeGVsc1soeSplczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRlJBTUVCVUZGRVJfV0lEVEggKyB4
KSAqIDRdOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNt
cE1hc2tlZCA9IGNtcE91dCAmIG1hc2s7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcE1h
c2tlZCAhPSByZWZPdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9D
b25zb2xlKCJDb21wYXJpc29uIGZhaWxlZCAoYXQgIiArIHggKyAiLCAiICsgeSArICIpOiAiICsg
ImdvdCAiICsgY21wT3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZE1zZyA9ICdDb21wYXJpc29u
IGZhaWxlZCc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgdGhpcy5tX2l0ZXJOZHggKz0gMTsKKyAgICAg
ICAgaWYgKCF0ZXN0UGFzc2VkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucyh0ZXN0
UGFzc2VkTXNnLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0
ZVJlc3VsdC5TVE9QOworICAgICAgICB9IGVsc2UgaWYgKHRlc3RQYXNzZWQgJiYgdGhpcy5tX2l0
ZXJOZHggPCB0aGlzLm1fbnVtSXRlcnMpIHsKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2Fz
ZS5JdGVyYXRlUmVzdWx0LkNPTlRJTlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGVzdFBhc3NlZE9wdGlvbnModGVzdFBhc3NlZE1zZywgdHJ1ZSk7CisgICAgICAgICAgICByZXR1
cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVy
UHJlY2lzaW9uVGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRl
c3QuY2FsbCh0aGlzLCAncHJlY2lzaW9uJywgJ1NoYWRlciBwcmVjaXNpb24gcmVxdWlyZW1lbnRz
IHZhbGlkYXRpb24gdGVzdHMnKTsKKyAgICB9OworCisgICAgZXMzZlNoYWRlclByZWNpc2lvblRl
c3RzLlNoYWRlclByZWNpc2lvblRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVz
dENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMu
U2hhZGVyUHJlY2lzaW9uVGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRlclBy
ZWNpc2lvblRlc3RzLlNoYWRlclByZWNpc2lvblRlc3RzOworCisgICAgZXMzZlNoYWRlclByZWNp
c2lvblRlc3RzLlNoYWRlclByZWNpc2lvblRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVzdENhc2Vz
OworICAgICAgICAvLyBFeHAgPSBFbWF4LTIsIE1hbnRpc3NhID0gMAorICAgICAgICAvLyAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkYzMiA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIoKDEgPDwg
MzEpIHwgKDB4ZmQgPDwgMjMpIHwgMHgwKS5nZXRWYWx1ZSgpOworICAgICAgICAvLyAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG1heEYzMiA9IHRjdUZsb2F0Lm5ld0Zsb2F0MzIoKDAgPDwgMzEp
IHwgKDB4ZmQgPDwgMjMpIHwgMHgwKS5nZXRWYWx1ZSgpOworICAgICAgICAvLyBbZGFnXSBXb3Jr
YXJvdW5kIGZvciBmbG9hdDMyIG51bWJlcnMKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBtaW5GMzIgPSBuZXcgRmxvYXQzMkFycmF5KG5ldyBVaW50MzJBcnJheShbMTw8MzF8MHhm
ZDw8MjN8MHgwXSkuYnVmZmVyKVswXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBtYXhGMzIgPSBuZXcgRmxvYXQzMkFycmF5KG5ldyBVaW50MzJBcnJheShbMDw8MzF8MHhmZDw8
MjN8MHgwXSkuYnVmZmVyKVswXTsKKworICAgICAgICAvLyAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG1pbkYxNiA9IHRjdUZsb2F0Lm5ld0Zsb2F0MTYoKCgxIDw8IDE1KSB8ICgweDFkIDw8IDEw
KSB8IDB4MCkpLmdldFZhbHVlKCk7CisgICAgICAgIC8vIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4RjE2ID0gdGN1RmxvYXQubmV3RmxvYXQxNigoKDAgPDwgMTUpIHwgKDB4MWQgPDwgMTAp
IHwgMHgwKSkuZ2V0VmFsdWUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
aW5GMTYgPSAtMTYzODQ7IC8vLTEgPDwgMTQ7IC8vIDEgPDwgMTUgfCAweDFkIHwgMHgwID09IDBi
MTExMTAxMDAwMDAwMDAwMDsgLTEgKiAoMioqKDI5LTE1KSkgKiAxCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWF4RjE2ID0gMTYzODQ7IC8vMSA8PCAxNDsgLy8gMCA8PCAxNSB8
IDB4MWQgfCAweDAgPT0gMGIwMTExMDEwMDAwMDAwMDAwOyArMSAqICgyKiooMjktMTUpKSAqIDEK
KworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmdWxsUmFuZ2UzMkYg
PSBbbWluRjMyLCBtYXhGMzJdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBmdWxsUmFuZ2UxNkYgPSBbbWluRjE2LCBtYXhGMTZdOworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBmdWxsUmFuZ2UzMkkgPSBbLTIxNDc0ODM2NDgsIDIxNDc0
ODM2NDddOyAvLyBbMHg4MDAwMDAwMHwwLCAweDdmZmZmZmZmfDBdOyAvLyB8MCB0byBmb3JjZSB0
aGUgbnVtYmVyIGFzIGEgMzItYml0IGludGVnZXIKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgZnVsbFJhbmdlMTZJID0gW21pbkYxNiwgbWF4RjE2IC0gMV07IC8vWy0o
MSA8PCAxNSksICgxIDw8IDE1KSAtIDFdOyAvLyBBZGRlZCB0aGUgbmVnYXRpdmUgc2lnbiB0byBp
bmRleCAwCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGZ1bGxSYW5n
ZThJID0gWy0xMjgsIDEyN107IC8vWy0oMSA8PCA3KSwgKDEgPDwgNykgLSAxXTsgLy8gQWRkZWQg
dGhlIG5lZ2F0aXZlIHNpZ24gdG8gaW5kZXggMAorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciBmdWxsUmFuZ2UzMlUgPSBbMCwgMHhmZmZmZmZmZl07CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGZ1bGxSYW5nZTE2VSA9IFswLCAweGZmZmZd
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBmdWxsUmFuZ2U4VSA9
IFswLCAweGZmXTsKKworICAgICAgICAvLyBcbm90ZSBSaWdodCBub3cgaXQgaXMgbm90IHByb2dy
YW1tYXRpY2FsbHkgdmVyaWZpZWQgdGhhdCB0aGUgcmVzdWx0cyBzaG91bGRuJ3QgZW5kIHVwIGJl
aW5nIGluZi9uYW4gYnV0CisgICAgICAgIC8vIGFjdHVhbCB2YWx1ZXMgdXNlZCBhcmUgb2suCisK
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAc3RydWN0
CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBvcAorICAgICAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5FdmFs
RnVuY30gZXZhbEZ1bmMKKyAgICAgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lv
bn0gcHJlY2lzaW9uCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmFuZ2VBCisg
ICAgICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmFuZ2VCCisgICAgICAgICAqLworICAg
ICAgICB2YXIgRmxvYXRDYXNlID0gZnVuY3Rpb24obmFtZSwgb3AsIGV2YWxGdW5jLCBwcmVjaXNp
b24sIHJhbmdlQSwgcmFuZ2VCKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlz
Lm9wID0gb3A7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJQcmVjaXNpb25UZXN0
cy5FdmFsRnVuY30gKi8gdGhpcy5ldmFsRnVuYyA9IGV2YWxGdW5jOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdGhpcy5wcmVjaXNpb24gPSBwcmVj
aXNpb247CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMucmFu
Z2VBID0gcmFuZ2VBOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0
aGlzLnJhbmdlQiA9IHJhbmdlQjsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PEZsb2F0Q2FzZT59ICovIHZhciBmbG9hdENhc2VzID0gWworICAgICAgICBuZXcgRmxvYXRD
YXNlKCdoaWdocF9hZGQnLCAnaW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFk
ZCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQLCBmdWxsUmFuZ2UzMkYs
IGZ1bGxSYW5nZTMyRiksCisgICAgICAgICAgICBuZXcgRmxvYXRDYXNlKCdoaWdocF9zdWInLCAn
aW4wIC0gaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLnN1YiwgZ2x1U2hhZGVyVXRpbC5w
cmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQLCBmdWxsUmFuZ2UzMkYsIGZ1bGxSYW5nZTMyRiksCisg
ICAgICAgICAgICBuZXcgRmxvYXRDYXNlKCdoaWdocF9tdWwnLCAnaW4wICogaW4xJywgZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLm11bCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X0hJR0hQLCBbLTFlNSwgMWU1XSwgWy0xZTUsIDFlNV0pLAorICAgICAgICAgICAgbmV3IEZsb2F0
Q2FzZSgnaGlnaHBfZGl2JywgJ2luMCAvIGluMScsIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5k
aXYsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCwgWy0xZTUsIDFlNV0s
IFstMWU1LCAxZTVdKSwKKyAgICAgICAgICAgIG5ldyBGbG9hdENhc2UoJ21lZGl1bXBfYWRkJywg
J2luMCArIGluMScsIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5hZGQsIGdsdVNoYWRlclV0aWwu
cHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QLCBmdWxsUmFuZ2UxNkYsIGZ1bGxSYW5nZTE2Riks
CisgICAgICAgICAgICBuZXcgRmxvYXRDYXNlKCdtZWRpdW1wX3N1YicsICdpbjAgLSBpbjEnLCBl
czNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuc3ViLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVD
SVNJT05fTUVESVVNUCwgZnVsbFJhbmdlMTZGLCBmdWxsUmFuZ2UxNkYpLAorICAgICAgICAgICAg
bmV3IEZsb2F0Q2FzZSgnbWVkaXVtcF9tdWwnLCAnaW4wICogaW4xJywgZXMzZlNoYWRlclByZWNp
c2lvblRlc3RzLm11bCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAs
IFstMWUyLCAxZTJdLCBbLTFlMiwgMWUyXSksCisgICAgICAgICAgICBuZXcgRmxvYXRDYXNlKCdt
ZWRpdW1wX2RpdicsICdpbjAgLyBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuZGl2LCBn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCwgWy0xZTIsIDFlMl0sIFst
MWUyLCAxZTJdKQorICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAgICAgKiBAc3RydWN0CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcAorICAgICAgICAgKiBAcGFyYW0ge2VzM2ZTaGFk
ZXJQcmVjaXNpb25UZXN0cy5FdmFsRnVuY30gZXZhbEZ1bmMKKyAgICAgICAgICogQHBhcmFtIHtn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBiaXRzCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmFuZ2VBCisgICAg
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmFuZ2VCCisgICAgICAgICAqLworICAgICAg
ICB2YXIgSW50Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIG9wLCBldmFsRnVuYywgcHJlY2lzaW9uLCBi
aXRzLCByYW5nZUEsIHJhbmdlQikgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhp
cy5vcCA9IG9wOworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyUHJlY2lzaW9uVGVz
dHMuRXZhbEZ1bmN9ICovIHRoaXMuZXZhbEZ1bmMgPSBldmFsRnVuYzsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHRoaXMucHJlY2lzaW9uID0gcHJl
Y2lzaW9uOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuYml0cyA9IGJp
dHM7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMucmFuZ2VB
ID0gcmFuZ2VBOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
LnJhbmdlQiA9IHJhbmdlQjsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5
PEludENhc2U+fSAqLyB2YXIgaW50Q2FzZXMgPSBbCisgICAgICAgIG5ldyBJbnRDYXNlKCdoaWdo
cF9hZGQnLCAnaW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFkZCwgZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQLCAzMiwgZnVsbFJhbmdlMzJJLCBmdWxs
UmFuZ2UzMkkpLAorICAgICAgICAgICAgbmV3IEludENhc2UoJ2hpZ2hwX3N1YicsICdpbjAgLSBp
bjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuc3ViLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lv
bi5QUkVDSVNJT05fSElHSFAsIDMyLCBmdWxsUmFuZ2UzMkksIGZ1bGxSYW5nZTMySSksCisgICAg
ICAgICAgICBuZXcgSW50Q2FzZSgnaGlnaHBfbXVsJywgJ2luMCAqIGluMScsIGVzM2ZTaGFkZXJQ
cmVjaXNpb25UZXN0cy5tdWwzMiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJ
R0hQLCAzMiwgZnVsbFJhbmdlMzJJLCBmdWxsUmFuZ2UzMkkpLAorICAgICAgICAgICAgbmV3IElu
dENhc2UoJ2hpZ2hwX2RpdicsICdpbjAgLyBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMu
ZGl2LCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAsIDMyLCBmdWxsUmFu
Z2UzMkksIFstMTAwMDAsIC0xXSksCisgICAgICAgICAgICBuZXcgSW50Q2FzZSgnbWVkaXVtcF9h
ZGQnLCAnaW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFkZCwgZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAsIDE2LCBmdWxsUmFuZ2UxNkksIGZ1bGxS
YW5nZTE2SSksCisgICAgICAgICAgICBuZXcgSW50Q2FzZSgnbWVkaXVtcF9zdWInLCAnaW4wIC0g
aW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLnN1YiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNp
b24uUFJFQ0lTSU9OX01FRElVTVAsIDE2LCBmdWxsUmFuZ2UxNkksIGZ1bGxSYW5nZTE2SSksCisg
ICAgICAgICAgICBuZXcgSW50Q2FzZSgnbWVkaXVtcF9tdWwnLCAnaW4wICogaW4xJywgZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLm11bCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9O
X01FRElVTVAsIDE2LCBmdWxsUmFuZ2UxNkksIGZ1bGxSYW5nZTE2SSksCisgICAgICAgICAgICBu
ZXcgSW50Q2FzZSgnbWVkaXVtcF9kaXYnLCAnaW4wIC8gaW4xJywgZXMzZlNoYWRlclByZWNpc2lv
blRlc3RzLmRpdiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVAsIDE2
LCBmdWxsUmFuZ2UxNkksIFsxLCAxMDAwXSksCisgICAgICAgICAgICBuZXcgSW50Q2FzZSgnbG93
cF9hZGQnLCAnaW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFkZCwgZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AsIDgsIGZ1bGxSYW5nZThJLCBmdWxsUmFu
Z2U4SSksCisgICAgICAgICAgICBuZXcgSW50Q2FzZSgnbG93cF9zdWInLCAnaW4wIC0gaW4xJywg
ZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLnN1YiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX0xPV1AsIDgsIGZ1bGxSYW5nZThJLCBmdWxsUmFuZ2U4SSksCisgICAgICAgICAgICBu
ZXcgSW50Q2FzZSgnbG93cF9tdWwnLCAnaW4wICogaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRl
c3RzLm11bCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AsIDgsIGZ1bGxS
YW5nZThJLCBmdWxsUmFuZ2U4SSksCisgICAgICAgICAgICBuZXcgSW50Q2FzZSgnbG93cF9kaXYn
LCAnaW4wIC8gaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmRpdiwgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AsIDgsIGZ1bGxSYW5nZThJLCBbLTUwLCAtMV0pCisg
ICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAq
IEBzdHJ1Y3QKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBh
cmFtIHtzdHJpbmd9IG9wCisgICAgICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclByZWNpc2lvblRl
c3RzLkV2YWxGdW5jfSBldmFsRnVuYworICAgICAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwu
cHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdHMKKyAg
ICAgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByYW5nZUEKKyAgICAgICAgICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSByYW5nZUIKKyAgICAgICAgICovCisgICAgICAgIHZhciBVaW50Q2Fz
ZSA9IGZ1bmN0aW9uKG5hbWUsIG9wLCBldmFsRnVuYywgcHJlY2lzaW9uLCBiaXRzLCByYW5nZUEs
IHJhbmdlQikgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9
IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5vcCA9IG9wOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuRXZhbEZ1bmN9
ICovIHRoaXMuZXZhbEZ1bmMgPSBldmFsRnVuYzsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1
U2hhZGVyVXRpbC5wcmVjaXNpb259ICovIHRoaXMucHJlY2lzaW9uID0gcHJlY2lzaW9uOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuYml0cyA9IGJpdHM7CisgICAgICAg
ICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMucmFuZ2VBID0gcmFuZ2VBOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnJhbmdlQiA9IHJh
bmdlQjsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PFVpbnRDYXNlPn0g
Ki8gdmFyIHVpbnRDYXNlcyA9IFsKKyAgICAgICAgbmV3IFVpbnRDYXNlKCdoaWdocF9hZGQnLCAn
aW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFkZCwgZ2x1U2hhZGVyVXRpbC5w
cmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQLCAzMiwgZnVsbFJhbmdlMzJVLCBmdWxsUmFuZ2UzMlUp
LAorICAgICAgICAgICAgbmV3IFVpbnRDYXNlKCdoaWdocF9zdWInLCAnaW4wIC0gaW4xJywgZXMz
ZlNoYWRlclByZWNpc2lvblRlc3RzLnN1YiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lT
SU9OX0hJR0hQLCAzMiwgZnVsbFJhbmdlMzJVLCBmdWxsUmFuZ2UzMlUpLAorICAgICAgICAgICAg
bmV3IFVpbnRDYXNlKCdoaWdocF9tdWwnLCAnaW4wICogaW4xJywgZXMzZlNoYWRlclByZWNpc2lv
blRlc3RzLm11bDMyLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAsIDMy
LCBmdWxsUmFuZ2UzMlUsIGZ1bGxSYW5nZTMyVSksCisgICAgICAgICAgICBuZXcgVWludENhc2Uo
J2hpZ2hwX2RpdicsICdpbjAgLyBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuZGl2LCBn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAsIDMyLCBmdWxsUmFuZ2UzMlUs
IFsxLCAxMDAwMF0pLAorICAgICAgICAgICAgbmV3IFVpbnRDYXNlKCdtZWRpdW1wX2FkZCcsICdp
bjAgKyBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuYWRkLCBnbHVTaGFkZXJVdGlsLnBy
ZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCwgMTYsIGZ1bGxSYW5nZTE2VSwgZnVsbFJhbmdlMTZV
KSwKKyAgICAgICAgICAgIG5ldyBVaW50Q2FzZSgnbWVkaXVtcF9zdWInLCAnaW4wIC0gaW4xJywg
ZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLnN1YiwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX01FRElVTVAsIDE2LCBmdWxsUmFuZ2UxNlUsIGZ1bGxSYW5nZTE2VSksCisgICAgICAg
ICAgICBuZXcgVWludENhc2UoJ21lZGl1bXBfbXVsJywgJ2luMCAqIGluMScsIGVzM2ZTaGFkZXJQ
cmVjaXNpb25UZXN0cy5tdWwsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJ
VU1QLCAxNiwgZnVsbFJhbmdlMTZVLCBmdWxsUmFuZ2UxNlUpLAorICAgICAgICAgICAgbmV3IFVp
bnRDYXNlKCdtZWRpdW1wX2RpdicsICdpbjAgLyBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVz
dHMuZGl2LCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCwgMTYsIGZ1
bGxSYW5nZTE2VSwgWzEsIDEwMDBdKSwKKyAgICAgICAgICAgIG5ldyBVaW50Q2FzZSgnbG93cF9h
ZGQnLCAnaW4wICsgaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmFkZCwgZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AsIDgsIGZ1bGxSYW5nZThVLCBmdWxsUmFuZ2U4
VSksCisgICAgICAgICAgICBuZXcgVWludENhc2UoJ2xvd3Bfc3ViJywgJ2luMCAtIGluMScsIGVz
M2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5zdWIsIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJ
U0lPTl9MT1dQLCA4LCBmdWxsUmFuZ2U4VSwgZnVsbFJhbmdlOFUpLAorICAgICAgICAgICAgbmV3
IFVpbnRDYXNlKCdsb3dwX211bCcsICdpbjAgKiBpbjEnLCBlczNmU2hhZGVyUHJlY2lzaW9uVGVz
dHMubXVsLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUCwgOCwgZnVsbFJh
bmdlOFUsIGZ1bGxSYW5nZThVKSwKKyAgICAgICAgICAgIG5ldyBVaW50Q2FzZSgnbG93cF9kaXYn
LCAnaW4wIC8gaW4xJywgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmRpdiwgZ2x1U2hhZGVyVXRp
bC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1AsIDgsIGZ1bGxSYW5nZThVLCBbMSwgNTBdKQorICAg
IF07CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGZs
b2F0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdmbG9hdCcsICdGbG9hdGluZy1wb2ludCBw
cmVjaXNpb24gdGVzdHMnKTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGZsb2F0R3JvdXAp
OworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBmbG9hdENhc2VzLmxlbmd0aDsgbmR4
KyspIHsKKyAgICAgICAgICAgIGZsb2F0R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJQcmVj
aXNpb25UZXN0cy5TaGFkZXJGbG9hdFByZWNpc2lvbkNhc2UoCisgICAgICAgICAgICAgICAgZmxv
YXRDYXNlc1tuZHhdLm5hbWUgKyAnX3ZlcnRleCcsICcnLCBmbG9hdENhc2VzW25keF0ub3AsIGZs
b2F0Q2FzZXNbbmR4XS5ldmFsRnVuYywKKyAgICAgICAgICAgICAgICBmbG9hdENhc2VzW25keF0u
cHJlY2lzaW9uLCBmbG9hdENhc2VzW25keF0ucmFuZ2VBLCBmbG9hdENhc2VzW25keF0ucmFuZ2VC
LCB0cnVlKSk7CisgICAgICAgICAgICBmbG9hdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVy
UHJlY2lzaW9uVGVzdHMuU2hhZGVyRmxvYXRQcmVjaXNpb25DYXNlKAorICAgICAgICAgICAgICAg
IGZsb2F0Q2FzZXNbbmR4XS5uYW1lICsgJ19mcmFnbWVudCcsICcnLCBmbG9hdENhc2VzW25keF0u
b3AsIGZsb2F0Q2FzZXNbbmR4XS5ldmFsRnVuYywKKyAgICAgICAgICAgICAgICBmbG9hdENhc2Vz
W25keF0ucHJlY2lzaW9uLCBmbG9hdENhc2VzW25keF0ucmFuZ2VBLCBmbG9hdENhc2VzW25keF0u
cmFuZ2VCLCBmYWxzZSkpOworICAgICAgICB9CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0
Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGludEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnaW50
JywgJ0ludGVnZXIgcHJlY2lzaW9uIHRlc3RzJyk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChpbnRHcm91cCk7CisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGludENhc2VzLmxl
bmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgIGludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hh
ZGVyUHJlY2lzaW9uVGVzdHMuU2hhZGVySW50UHJlY2lzaW9uQ2FzZSgKKyAgICAgICAgICAgICAg
ICBpbnRDYXNlc1tuZHhdLm5hbWUgKyAnX3ZlcnRleCcsICcnLCBpbnRDYXNlc1tuZHhdLm9wLCBp
bnRDYXNlc1tuZHhdLmV2YWxGdW5jLAorICAgICAgICAgICAgICAgIGludENhc2VzW25keF0ucHJl
Y2lzaW9uLCBpbnRDYXNlc1tuZHhdLmJpdHMsIGludENhc2VzW25keF0ucmFuZ2VBLCBpbnRDYXNl
c1tuZHhdLnJhbmdlQiwgdHJ1ZSkpOworICAgICAgICAgICAgaW50R3JvdXAuYWRkQ2hpbGQobmV3
IGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5TaGFkZXJJbnRQcmVjaXNpb25DYXNlKAorICAgICAg
ICAgICAgICAgIGludENhc2VzW25keF0ubmFtZSArICdfZnJhZ21lbnQnLCAnJywgaW50Q2FzZXNb
bmR4XS5vcCwgaW50Q2FzZXNbbmR4XS5ldmFsRnVuYywKKyAgICAgICAgICAgICAgICBpbnRDYXNl
c1tuZHhdLnByZWNpc2lvbiwgaW50Q2FzZXNbbmR4XS5iaXRzLCBpbnRDYXNlc1tuZHhdLnJhbmdl
QSwgaW50Q2FzZXNbbmR4XS5yYW5nZUIsIGZhbHNlKSk7CisgICAgICAgIH0KKworICAgICAgICAv
KiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgdWludEdyb3VwID0gdGN1VGVz
dENhc2UubmV3VGVzdCgndWludCcsICdVbnNpZ25lZCBpbnRlZ2VyIHByZWNpc2lvbiB0ZXN0cycp
OworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQodWludEdyb3VwKTsKKyAgICAgICAgZm9yICh2
YXIgbmR4ID0gMDsgbmR4IDwgdWludENhc2VzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAg
IHVpbnRHcm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLlNoYWRlclVp
bnRQcmVjaXNpb25DYXNlKAorICAgICAgICAgICAgICAgIHVpbnRDYXNlc1tuZHhdLm5hbWUgKyAn
X3ZlcnRleCcsICcnLCB1aW50Q2FzZXNbbmR4XS5vcCwgdWludENhc2VzW25keF0uZXZhbEZ1bmMs
CisgICAgICAgICAgICAgICAgdWludENhc2VzW25keF0ucHJlY2lzaW9uLCB1aW50Q2FzZXNbbmR4
XS5iaXRzLCB1aW50Q2FzZXNbbmR4XS5yYW5nZUEsIHVpbnRDYXNlc1tuZHhdLnJhbmdlQiwgdHJ1
ZSkpOworICAgICAgICAgICAgdWludEdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyUHJlY2lz
aW9uVGVzdHMuU2hhZGVyVWludFByZWNpc2lvbkNhc2UoCisgICAgICAgICAgICAgICAgdWludENh
c2VzW25keF0ubmFtZSArICdfZnJhZ21lbnQnLCAnJywgdWludENhc2VzW25keF0ub3AsIHVpbnRD
YXNlc1tuZHhdLmV2YWxGdW5jLAorICAgICAgICAgICAgICAgIHVpbnRDYXNlc1tuZHhdLnByZWNp
c2lvbiwgdWludENhc2VzW25keF0uYml0cywgdWludENhc2VzW25keF0ucmFuZ2VBLCB1aW50Q2Fz
ZXNbbmR4XS5yYW5nZUIsIGZhbHNlKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisg
ICAgICogUnVuIHRlc3QKKyAgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNv
bnRleHQKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMucnVuID0gZnVuY3Rp
b24oY29udGV4dCwgcmFuZ2UpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1Nl
dCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2Fz
ZS5ydW5uZXI7CisgICAgICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZTaGFkZXJQcmVjaXNpb25U
ZXN0cy5TaGFkZXJQcmVjaXNpb25UZXN0cygpKTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFu
ZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVz
dE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxOYW1lKCkpOworICAgICAgICBkZXNjcmlwdGlvbihz
dGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24oKSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGlmIChyYW5nZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7
CisgICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5y
dW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0
cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVy
bWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJTdGF0
ZVF1ZXJ5VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEyODU5ZjI0OTgwMjk1NzhkM2Y4ODEwYWFmMTkx
NWQ0Yzk5NGI5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLmpzCkBAIC0wLDAgKzEsMjIwNSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBk
cmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHly
aWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vuc2UnKTsK
KyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
ICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisg
KgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmQXBpQ2FzZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVz
LnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIg
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclN0
YXRlUXVlcnlUZXN0czsKK3ZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVz
dENhc2U7Cit2YXIgZ2xzU3RhdGVRdWVyeSA9IG1vZHVsZXMuc2hhcmVkLmdsc1N0YXRlUXVlcnk7
Cit2YXIgZXMzZkFwaUNhc2UgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlOwordmFyIGRl
UmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIgdGN1TWF0cml4
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXg7CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1
bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsKKyAgICBjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKHBhcmVudC5wcm90b3R5cGUpOworICAgIGNoaWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGNoaWxkOworfTsKKwordmFyIGNvbW1vblRlc3RWZXJ0U291cmNlID0gJyN2ZXJzaW9uIDMwMCBl
c1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApO1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ31cbic7Cit2YXIgY29tbW9uVGVzdEZyYWdTb3VyY2UgPSAnI3ZlcnNp
b24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF5b3V0KGxvY2F0
aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZnJhZ0NvbG9y
ID0gdmVjNCgwLjApO1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbic7CisK
K3ZhciBicm9rZW5TaGFkZXIgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYnJva2VuLCB0aGlzIHNob3VsZCBub3QgY29tcGlsZSFcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdcbic7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0YXRlUXVl
cnlUZXN0cy5TaGFkZXJUeXBlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7Cisg
ICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7
Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlNoYWRlclR5
cGVDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5TaGFkZXJUeXBlQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBz
aGFkZXJUeXBlcyA9IFtnbC5WRVJURVhfU0hBREVSLCBnbC5GUkFHTUVOVF9TSEFERVJdOworICAg
IGZvciAodmFyIG5keCA9IDA7IG5keCA8IHNoYWRlclR5cGVzLmxlbmd0aDsgKytuZHgpIHsKKyAg
ICAgICAgdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihzaGFkZXJUeXBlc1tuZHhdKTsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IGdsc1N0YXRlUXVlcnkudmVyaWZ5U2hhZGVyKHNoYWRlciwgZ2wu
U0hBREVSX1RZUEUsIHNoYWRlclR5cGVzW25keF0pOworICAgICAgICB0aGlzLmNoZWNrKHJlc3Vs
dCwgJ0luY29ycmVjdCBzaGFkZXIgdHlwZScpOworICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hh
ZGVyKTsKKyAgICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2Vz
M2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuU2hhZGVy
Q29tcGlsZVN0YXR1c0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVz
M2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5TaGFkZXJDb21waWxl
U3RhdHVzQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5
VGVzdHMuU2hhZGVyQ29tcGlsZVN0YXR1c0Nhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigp
IHsKKyAgICB2YXIgcmVzdWx0OworICAgIHZhciBzaGFkZXJWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVy
KGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZhciBzaGFkZXJGcmFnID0gZ2wuY3JlYXRlU2hhZGVy
KGdsLkZSQUdNRU5UX1NIQURFUik7CisKKyAgICByZXN1bHQgPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eVNoYWRlcihzaGFkZXJWZXJ0LCBnbC5DT01QSUxFX1NUQVRVUywgZmFsc2UpOworICAgIHRoaXMu
Y2hlY2socmVzdWx0LCAnVmVydGV4IHNoYWRlciBjb21waWxhdGlvbiBzdGF0dXMgc2hvdWxkIGJl
IGZhbHNlJyk7CisgICAgcmVzdWx0ID0gZ2xzU3RhdGVRdWVyeS52ZXJpZnlTaGFkZXIoc2hhZGVy
RnJhZywgZ2wuQ09NUElMRV9TVEFUVVMsIGZhbHNlKTsKKyAgICB0aGlzLmNoZWNrKHJlc3VsdCwg
J0ZyYWdtZW50IHNoYWRlciBjb21waWxhdGlvbiBzdGF0dXMgc2hvdWxkIGJlIGZhbHNlJyk7CisK
KyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyVmVydCwgY29tbW9uVGVzdFZlcnRTb3VyY2UpOwor
ICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJGcmFnLCBjb21tb25UZXN0RnJhZ1NvdXJjZSk7CisK
KyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGdsLmNvbXBpbGVTaGFkZXIo
c2hhZGVyRnJhZyk7CisKKyAgICByZXN1bHQgPSBnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihz
aGFkZXJWZXJ0LCBnbC5DT01QSUxFX1NUQVRVUywgdHJ1ZSk7CisgICAgdGhpcy5jaGVjayhyZXN1
bHQsICdWZXJ0ZXggc2hhZGVyIGNvbXBpbGF0aW9uIHN0YXR1cyBzaG91bGQgYmUgdHJ1ZScpOwor
ICAgIHJlc3VsdCA9IGdsc1N0YXRlUXVlcnkudmVyaWZ5U2hhZGVyKHNoYWRlckZyYWcsIGdsLkNP
TVBJTEVfU1RBVFVTLCB0cnVlKTsKKyAgICB0aGlzLmNoZWNrKHJlc3VsdCwgJ0ZyYWdtZW50IHNo
YWRlciBjb21waWxhdGlvbiBzdGF0dXMgc2hvdWxkIGJlIHRydWUnKTsKKworICAgIGdsLmRlbGV0
ZVNoYWRlcihzaGFkZXJWZXJ0KTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7Cit9
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNh
c2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0
aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuU2hhZGVySW5mb0xvZ0Nhc2UgPSBm
dW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMz
ZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5TaGFkZXJJbmZvTG9nQ2FzZSwgZXMzZkFwaUNhc2UuQXBp
Q2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuU2hhZGVySW5mb0xvZ0Nhc2UucHJv
dG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hh
ZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZhciBsb2cgPSBnbC5nZXRTaGFkZXJJbmZvTG9n
KHNoYWRlcik7CisgICAgdGhpcy5jaGVjayhsb2cgPT09ICcnKTsKKworICAgIGdsLnNoYWRlclNv
dXJjZShzaGFkZXIsIGJyb2tlblNoYWRlcik7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIp
OworCisgICAgbG9nID0gZ2wuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOworICAgIHRoaXMuY2hl
Y2sobG9nID09PSBudWxsIHx8IHR5cGVvZiBsb2cgPT09ICdzdHJpbmcnKTsKKworICAgIGdsLmRl
bGV0ZVNoYWRlcihzaGFkZXIpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlNoYWRlclNvdXJjZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVz
M2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5TaGFkZXJTb3VyY2VD
YXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5T
aGFkZXJTb3VyY2VDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHNo
YWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB0aGlzLmNoZWNr
KGdsLmdldFNoYWRlclNvdXJjZShzaGFkZXIpID09PSAnJyk7CisKKyAgICBnbC5zaGFkZXJTb3Vy
Y2Uoc2hhZGVyLCBicm9rZW5TaGFkZXIpOworICAgIHRoaXMuY2hlY2soZ2wuZ2V0U2hhZGVyU291
cmNlKHNoYWRlcikgPT09IGJyb2tlblNoYWRlcik7CisKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hh
ZGVyKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNh
c2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5EZWxldGVTdGF0dXND
YXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlD
YXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENs
YXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuRGVsZXRlU3RhdHVzQ2FzZSwgZXMzZkFwaUNh
c2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuRGVsZXRlU3RhdHVzQ2Fz
ZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzaGFkZXJWZXJ0ID0gZ2wu
Y3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZhciBzaGFkZXJGcmFnID0gZ2wu
Y3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisKKyAgICBnbC5zaGFkZXJTb3VyY2Uo
c2hhZGVyVmVydCwgY29tbW9uVGVzdFZlcnRTb3VyY2UpOworICAgIGdsLnNoYWRlclNvdXJjZShz
aGFkZXJGcmFnLCBjb21tb25UZXN0RnJhZ1NvdXJjZSk7CisKKyAgICBnbC5jb21waWxlU2hhZGVy
KHNoYWRlclZlcnQpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyRnJhZyk7CisKKyAgICB0
aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5U2hhZGVyKHNoYWRlclZlcnQsIGdsLkNPTVBJ
TEVfU1RBVFVTLCB0cnVlKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNo
YWRlcihzaGFkZXJGcmFnLCBnbC5DT01QSUxFX1NUQVRVUywgdHJ1ZSkpOworCisgICAgdmFyIHNo
YWRlclByb2cgPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHNoYWRl
clByb2csIHNoYWRlclZlcnQpOworICAgIGdsLmF0dGFjaFNoYWRlcihzaGFkZXJQcm9nLCBzaGFk
ZXJGcmFnKTsKKyAgICBnbC5saW5rUHJvZ3JhbShzaGFkZXJQcm9nKTsKKworICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFtKHNoYWRlclByb2csIGdsLkxJTktfU1RBVFVT
LCB0cnVlKSk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5U2hhZGVyKHNo
YWRlclZlcnQsIGdsLkRFTEVURV9TVEFUVVMsIGZhbHNlKSk7CisgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJGcmFnLCBnbC5ERUxFVEVfU1RBVFVTLCBmYWxz
ZSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFtKHNoYWRlclBy
b2csIGdsLkRFTEVURV9TVEFUVVMsIGZhbHNlKSk7CisKKyAgICBnbC51c2VQcm9ncmFtKHNoYWRl
clByb2cpOworCisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGdsLmRlbGV0
ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHNoYWRlclByb2cpOwor
CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJWZXJ0LCBn
bC5ERUxFVEVfU1RBVFVTLCB0cnVlKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeVNoYWRlcihzaGFkZXJGcmFnLCBnbC5ERUxFVEVfU1RBVFVTLCB0cnVlKSk7CisgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVByb2dyYW0oc2hhZGVyUHJvZywgZ2wuREVMRVRF
X1NUQVRVUywgdHJ1ZSkpOworCisgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLwor
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliSW5pdGlhbENhc2Ug
PSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3Mo
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliSW5pdGlhbENhc2Us
IGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLkN1cnJl
bnRWZXJ0ZXhBdHRyaWJJbml0aWFsQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBhdHRyaWJ1dGVfY291bnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBh
cmFtZXRlcihnbC5NQVhfVkVSVEVYX0FUVFJJQlMpKTsKKyAgICB2YXIgaW5pdGlhbCA9IG5ldyBG
bG9hdDMyQXJyYXkoWzAsIDAsIDAsIDFdKTsKKyAgICAvLyBpbml0aWFsCisKKyAgICBmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cmlidXRlX2NvdW50OyArK2luZGV4KSB7CisgICAgICAg
IHZhciBhdHRyaWIgPSBnbC5nZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIGdsLkNVUlJFTlRfVkVSVEVY
X0FUVFJJQik7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS5jb21wYXJlKGF0dHJp
YiwgaW5pdGlhbCksICdJbml0aWFsIGF0dHJpYiB2YWx1ZSBzaG91bGQgYmUgWzAsIDAsIDAsIDFd
Jyk7CisgICAgfQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNm
QXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRW
ZXJ0ZXhBdHRyaWJGbG9hdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAg
IGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOwor
fTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVy
dGV4QXR0cmliRmxvYXRDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliRmxvYXRDYXNlLnByb3RvdHlwZS50ZXN0
ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmNk
ZWYpOworCisgICAgdmFyIGF0dHJpYnV0ZV9jb3VudCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAo
Z2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUykpOworCisgICAgLy8gdGVzdCB3
cml0ZSBmbG9hdC9yZWFkIGZsb2F0CisKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwg
YXR0cmlidXRlX2NvdW50OyArK2luZGV4KSB7CisgICAgICAgIHZhciB4ID0gcm5kLmdldEZsb2F0
KC02NDAwMCwgNjQwMDApOworICAgICAgICB2YXIgeSA9IHJuZC5nZXRGbG9hdCgtNjQwMDAsIDY0
MDAwKTsKKyAgICAgICAgdmFyIHogPSBybmQuZ2V0RmxvYXQoLTY0MDAwLCA2NDAwMCk7CisgICAg
ICAgIHZhciB3ID0gcm5kLmdldEZsb2F0KC02NDAwMCwgNjQwMDApOworCisgICAgICAgIGdsLnZl
cnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICAgICAgdGhpcy5jaGVjayhnbHNT
dGF0ZVF1ZXJ5LnZlcmlmeUN1cnJlbnRWZXJ0ZXhBdHRyaWIoaW5kZXgsIG5ldyBGbG9hdDMyQXJy
YXkoW3gsIHksIHosIHddKSkpOworICAgIH0KKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4
IDwgYXR0cmlidXRlX2NvdW50OyArK2luZGV4KSB7CisgICAgICAgIHZhciB4ID0gcm5kLmdldEZs
b2F0KC02NDAwMCwgNjQwMDApOworICAgICAgICB2YXIgeSA9IHJuZC5nZXRGbG9hdCgtNjQwMDAs
IDY0MDAwKTsKKyAgICAgICAgdmFyIHogPSBybmQuZ2V0RmxvYXQoLTY0MDAwLCA2NDAwMCk7Cisg
ICAgICAgIHZhciB3ID0gMS4wOworCisgICAgICAgIGdsLnZlcnRleEF0dHJpYjNmKGluZGV4LCB4
LCB5LCB6KTsKKyAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUN1cnJlbnRW
ZXJ0ZXhBdHRyaWIoaW5kZXgsIG5ldyBGbG9hdDMyQXJyYXkoW3gsIHksIHosIHddKSkpOworICAg
IH0KKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cmlidXRlX2NvdW50OyArK2lu
ZGV4KSB7CisgICAgICAgIHZhciB4ID0gcm5kLmdldEZsb2F0KC02NDAwMCwgNjQwMDApOworICAg
ICAgICB2YXIgeSA9IHJuZC5nZXRGbG9hdCgtNjQwMDAsIDY0MDAwKTsKKyAgICAgICAgdmFyIHog
PSAwLjA7CisgICAgICAgIHZhciB3ID0gMS4wOworCisgICAgICAgIGdsLnZlcnRleEF0dHJpYjJm
KGluZGV4LCB4LCB5KTsKKyAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUN1
cnJlbnRWZXJ0ZXhBdHRyaWIoaW5kZXgsIG5ldyBGbG9hdDMyQXJyYXkoW3gsIHksIHosIHddKSkp
OworICAgIH0KKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cmlidXRlX2NvdW50
OyArK2luZGV4KSB7CisgICAgICAgIHZhciB4ID0gcm5kLmdldEZsb2F0KC02NDAwMCwgNjQwMDAp
OworICAgICAgICB2YXIgeSA9IDAuMDsKKyAgICAgICAgdmFyIHogPSAwLjA7CisgICAgICAgIHZh
ciB3ID0gMS4wOworCisgICAgICAgIGdsLnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUN1cnJlbnRWZXJ0ZXhBdHRyaWIoaW5k
ZXgsIG5ldyBGbG9hdDMyQXJyYXkoW3gsIHksIHosIHddKSkpOworICAgIH0KK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLwor
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliSW50Q2FzZSA9IGZ1
bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxs
KHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNm
U2hhZGVyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRWZXJ0ZXhBdHRyaWJJbnRDYXNlLCBlczNmQXBp
Q2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4
QXR0cmliSW50Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBybmQg
PSBuZXcgZGVSYW5kb20uUmFuZG9tKDB4YWJjZGVmKTsKKworICAgIHZhciBhdHRyaWJ1dGVfY291
bnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVY
X0FUVFJJQlMpKTsKKworICAgIC8vIHRlc3Qgd3JpdGUgZmxvYXQvcmVhZCBmbG9hdAorCisgICAg
Zm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJpYnV0ZV9jb3VudDsgKytpbmRleCkgewor
ICAgICAgICB2YXIgeCA9IHJuZC5nZXRJbnQoLTY0MDAwLCA2NDAwMCk7CisgICAgICAgIHZhciB5
ID0gcm5kLmdldEludCgtNjQwMDAsIDY0MDAwKTsKKyAgICAgICAgdmFyIHogPSBybmQuZ2V0SW50
KC02NDAwMCwgNjQwMDApOworICAgICAgICB2YXIgdyA9IHJuZC5nZXRJbnQoLTY0MDAwLCA2NDAw
MCk7CisKKyAgICAgICAgZ2wudmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAg
ICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUN1cnJlbnRWZXJ0ZXhBdHRyaWIo
aW5kZXgsIG5ldyBJbnQzMkFycmF5KFt4LCB5LCB6LCB3XSkpKTsKKyAgICB9Cit9OworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8K
K2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuQ3VycmVudFZlcnRleEF0dHJpYlVpbnRDYXNlID0g
ZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNh
bGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVz
M2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuQ3VycmVudFZlcnRleEF0dHJpYlVpbnRDYXNlLCBlczNm
QXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVy
dGV4QXR0cmliVWludENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAgICB2YXIgYXR0cmlidXRl
X2NvdW50ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZF
UlRFWF9BVFRSSUJTKSk7CisKKyAgICAvLyB0ZXN0IHdyaXRlIGZsb2F0L3JlYWQgZmxvYXQKKwor
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhdHRyaWJ1dGVfY291bnQ7ICsraW5kZXgp
IHsKKyAgICAgICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIDY0MDAwKTsKKyAgICAgICAgdmFyIHkg
PSBybmQuZ2V0SW50KDAsIDY0MDAwKTsKKyAgICAgICAgdmFyIHogPSBybmQuZ2V0SW50KDAsIDY0
MDAwKTsKKyAgICAgICAgdmFyIHcgPSBybmQuZ2V0SW50KDAsIDY0MDAwKTsKKworICAgICAgICBn
bC52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICAgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUN1cnJlbnRWZXJ0ZXhBdHRyaWIoaW5kZXgsIG5ldyBVaW50
MzJBcnJheShbeCwgeSwgeiwgd10pKSk7CisgICAgfQorfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlByb2dyYW1JbmZvTG9nQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlByb2dyYW1JbmZvTG9nQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFkZXJT
dGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbUluZm9Mb2dDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NI
QURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRf
U0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJWZXJ0LCBicm9rZW5TaGFkZXIp
OworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuc2hhZGVyU291cmNl
KHNoYWRlckZyYWcsIGJyb2tlblNoYWRlcik7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJG
cmFnKTsKKworICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0
dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJv
Z3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB2
YXIgbG9nID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7CisgICAgdGhpcy5jaGVjayhs
b2cgPT09IG51bGwgfHwgdHlwZW9mIGxvZyA9PT0gJ3N0cmluZycpOworCisgICAgZ2wuZGVsZXRl
U2hhZGVyKHNoYWRlclZlcnQpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAg
ICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLlByb2dyYW1WYWxpZGF0ZVN0YXR1c0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNj
cmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlU
ZXN0cy5Qcm9ncmFtVmFsaWRhdGVTdGF0dXNDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKwor
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Qcm9ncmFtVmFsaWRhdGVTdGF0dXNDYXNlLnByb3Rv
dHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgLy8gdGVzdCB2YWxpZGF0ZSBvaworICAgIHZh
ciBzaGFkZXJWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZh
ciBzaGFkZXJGcmFnID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisKKyAg
ICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyVmVydCwgY29tbW9uVGVzdFZlcnRTb3VyY2UpOworICAg
IGdsLnNoYWRlclNvdXJjZShzaGFkZXJGcmFnLCBjb21tb25UZXN0RnJhZ1NvdXJjZSk7CisKKyAg
ICBnbC5jb21waWxlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hh
ZGVyRnJhZyk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBn
bC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyVmVydCk7CisgICAgZ2wuYXR0YWNoU2hhZGVy
KHByb2dyYW0sIHNoYWRlckZyYWcpOworICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworCisg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJWZXJ0LCBnbC5D
T01QSUxFX1NUQVRVUywgdHJ1ZSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJp
ZnlTaGFkZXIoc2hhZGVyRnJhZywgZ2wuQ09NUElMRV9TVEFUVVMsIHRydWUpKTsKKyAgICB0aGlz
LmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UHJvZ3JhbShwcm9ncmFtLCBnbC5MSU5LX1NUQVRV
UywgdHJ1ZSkpOworCisgICAgZ2wudmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAgIHRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFtKHByb2dyYW0sIGdsLlZBTElEQVRFX1NU
QVRVUywgdHJ1ZSkpOworCisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGds
LmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0p
OworCisgICAgLy8gdGVzdCB3aXRoIGJyb2tlbiBzaGFkZXIKKyAgICBzaGFkZXJWZXJ0ID0gZ2wu
Y3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHNoYWRlckZyYWcgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFk
ZXJWZXJ0LCBjb21tb25UZXN0VmVydFNvdXJjZSk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRl
ckZyYWcsIGJyb2tlblNoYWRlcik7CisKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlclZlcnQp
OworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyRnJhZyk7CisKKyAgICBwcm9ncmFtID0gZ2wu
Y3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0
KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wubGlu
a1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5
U2hhZGVyKHNoYWRlclZlcnQsIGdsLkNPTVBJTEVfU1RBVFVTLCB0cnVlKSk7CisgICAgdGhpcy5j
aGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJGcmFnLCBnbC5DT01QSUxFX1NU
QVRVUywgZmFsc2UpKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UHJvZ3Jh
bShwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUywgZmFsc2UpKTsKKworICAgIGdsLnZhbGlkYXRlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UHJvZ3Jh
bShwcm9ncmFtLCBnbC5WQUxJREFURV9TVEFUVVMsIGZhbHNlKSk7CisKKyAgICBnbC5kZWxldGVT
aGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlckZyYWcpOworICAg
IGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuUHJvZ3JhbUF0dGFjaGVkU2hhZGVyc0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNj
cmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlU
ZXN0cy5Qcm9ncmFtQXR0YWNoZWRTaGFkZXJzQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisK
K2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbUF0dGFjaGVkU2hhZGVyc0Nhc2UucHJv
dG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2hhZGVyVmVydCA9IGdsLmNyZWF0
ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2YXIgc2hhZGVyRnJhZyA9IGdsLmNyZWF0
ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRl
clZlcnQsIGNvbW1vblRlc3RWZXJ0U291cmNlKTsKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVy
RnJhZywgY29tbW9uVGVzdEZyYWdTb3VyY2UpOworCisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFk
ZXJWZXJ0KTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisgICAgLy8gY2hl
Y2sgQVRUQUNIRURfU0hBREVSUworCisgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFt
KCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVByb2dyYW0ocHJvZ3JhbSwg
Z2wuQVRUQUNIRURfU0hBREVSUywgMCkpOworCisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlclZlcnQpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFt
KHByb2dyYW0sIGdsLkFUVEFDSEVEX1NIQURFUlMsIDEpKTsKKworICAgIGdsLmF0dGFjaFNoYWRl
cihwcm9ncmFtLCBzaGFkZXJGcmFnKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVy
aWZ5UHJvZ3JhbShwcm9ncmFtLCBnbC5BVFRBQ0hFRF9TSEFERVJTLCAyKSk7CisKKyAgICAvLyBj
aGVjayBHZXRBdHRhY2hlZFNoYWRlcnMKKyAgICB2YXIgc2hhZGVycyA9IGdsLmdldEF0dGFjaGVk
U2hhZGVycyhwcm9ncmFtKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkuY29tcGFyZShz
aGFkZXJzLCBbc2hhZGVyVmVydCwgc2hhZGVyRnJhZ10pKTsKKworICAgIGdsLmRlbGV0ZVNoYWRl
cihzaGFkZXJWZXJ0KTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisgICAgZ2wu
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
KiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0YXRlUXVlcnlU
ZXN0cy5Qcm9ncmFtQWN0aXZlVW5pZm9ybU5hbWVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3Jp
cHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVz
dHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1OYW1lQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisK
K2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1OYW1lQ2FzZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXN0VmVydFNvdXJjZSA9Cisg
ICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAndW5pZm9ybSBoaWdocCBmbG9h
dCB1bmlmb3JtTmFtZVdpdGhMZW5ndGgyMztcbicgKworICAgICAgICAndW5pZm9ybSBoaWdocCB2
ZWMyIHVuaWZvcm1WZWMyO1xuJyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIG1hdDQgdW5pZm9y
bU1hdDQ7XG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xu
JyArCisgICAgICAgICcgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCkgKyB2ZWM0KHVuaWZvcm1OYW1l
V2l0aExlbmd0aDIzKSArIHZlYzQodW5pZm9ybVZlYzIueCkgKyB2ZWM0KHVuaWZvcm1NYXQ0WzJd
WzNdKTtcbicgKworICAgICAgICAnfVxuJzsKKyAgICB2YXIgdGVzdEZyYWdTb3VyY2UgPQorICAg
ICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOycgKworICAgICAgICAndm9pZCBtYWluICh2b2lk
KVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7
XG4nICsKKyAgICAgICAgJ31cbic7CisKKyAgICB2YXIgc2hhZGVyVmVydCA9IGdsLmNyZWF0ZVNo
YWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2YXIgc2hhZGVyRnJhZyA9IGdsLmNyZWF0ZVNo
YWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlclZl
cnQsIHRlc3RWZXJ0U291cmNlKTsKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyRnJhZywgdGVz
dEZyYWdTb3VyY2UpOworCisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJWZXJ0KTsKKyAgICBn
bC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVh
dGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlclZlcnQpOwor
ICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJGcmFnKTsKKyAgICBnbC5saW5rUHJv
Z3JhbShwcm9ncmFtKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9n
cmFtKHByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUywgMykpOworCisgICAgdmFyIHVuaWZvcm1O
YW1lcyA9IFsKKyAgICAgICAgJ3VuaWZvcm1OYW1lV2l0aExlbmd0aDIzJywKKyAgICAgICAgJ3Vu
aWZvcm1WZWMyJywKKyAgICAgICAgJ3VuaWZvcm1NYXQ0JworICAgIF07CisKKyAgICB2YXIgaW5k
aWNlcyA9IGdsLmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyk7CisKKyAg
ICAvLyBjaGVjayBuYW1lcworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHVuaWZvcm1OYW1l
cy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIHZhciBpbmRleCA9IGluZGljZXNbbmR4XTsKKyAg
ICAgICAgdmFyIHVuaWZvcm0gPSBnbC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KTsK
KworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkuY29tcGFyZSh1bmlmb3JtLm5hbWUs
IHVuaWZvcm1OYW1lc1tuZHhdKSk7CisgICAgfQorCisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRl
clZlcnQpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQ
cm9ncmFtKHByb2dyYW0pOworCit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBh
cmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMu
UHJvZ3JhbVVuaWZvcm1DYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBl
czNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307
CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbVVuaWZv
cm1DYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5Qcm9ncmFtVW5pZm9ybUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgdW5pZm9ybVR5cGVzID0gWworICAgICAgICBbJ2Zsb2F0JywgJycsICdoaWdocCcsICcnLCAn
dW5pZm9ybVZhbHVlJywgZ2wuRkxPQVQsIDEsIGZhbHNlXSwKKyAgICAgICAgWydmbG9hdFsyXScs
ICcnLCAnaGlnaHAnLCAnJywgJ3VuaWZvcm1WYWx1ZVsxXScsIGdsLkZMT0FULCAyLCBmYWxzZV0s
CisgICAgICAgIFsndmVjMicsICcnLCAnaGlnaHAnLCAnJywgJ3VuaWZvcm1WYWx1ZS54JywgZ2wu
RkxPQVRfVkVDMiwgMSwgZmFsc2VdLAorICAgICAgICBbJ3ZlYzMnLCAnJywgJ2hpZ2hwJywgJycs
ICd1bmlmb3JtVmFsdWUueCcsIGdsLkZMT0FUX1ZFQzMsIDEsIGZhbHNlXSwKKyAgICAgICAgWyd2
ZWM0JywgJycsICdoaWdocCcsICcnLCAndW5pZm9ybVZhbHVlLngnLCBnbC5GTE9BVF9WRUM0LCAx
LCBmYWxzZV0sCisgICAgICAgIFsnaW50JywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodW5pZm9y
bVZhbHVlKScsIGdsLklOVCwgMSwgZmFsc2VdLAorICAgICAgICBbJ2l2ZWMyJywgJycsICdoaWdo
cCcsICcnLCAnZmxvYXQodW5pZm9ybVZhbHVlLngpJywgZ2wuSU5UX1ZFQzIsIDEsIGZhbHNlXSwK
KyAgICAgICAgWydpdmVjMycsICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZS54
KScsIGdsLklOVF9WRUMzLCAxLCBmYWxzZV0sCisgICAgICAgIFsnaXZlYzQnLCAnJywgJ2hpZ2hw
JywgJycsICdmbG9hdCh1bmlmb3JtVmFsdWUueCknLCBnbC5JTlRfVkVDNCwgMSwgZmFsc2VdLAor
ICAgICAgICBbJ3VpbnQnLCAnJywgJ2hpZ2hwJywgJycsICdmbG9hdCh1bmlmb3JtVmFsdWUpJywg
Z2wuVU5TSUdORURfSU5ULCAxLCBmYWxzZV0sCisgICAgICAgIFsndXZlYzInLCAnJywgJ2hpZ2hw
JywgJycsICdmbG9hdCh1bmlmb3JtVmFsdWUueCknLCBnbC5VTlNJR05FRF9JTlRfVkVDMiwgMSwg
ZmFsc2VdLAorICAgICAgICBbJ3V2ZWMzJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodW5pZm9y
bVZhbHVlLngpJywgZ2wuVU5TSUdORURfSU5UX1ZFQzMsIDEsIGZhbHNlXSwKKyAgICAgICAgWyd1
dmVjNCcsICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZS54KScsIGdsLlVOU0lH
TkVEX0lOVF9WRUM0LCAxLCBmYWxzZV0sCisgICAgICAgIFsnYm9vbCcsICcnLCAnJywgJycsICdm
bG9hdCh1bmlmb3JtVmFsdWUpJywgZ2wuQk9PTCwgMSwgZmFsc2VdLAorICAgICAgICBbJ2J2ZWMy
JywgJycsICcnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZS54KScsIGdsLkJPT0xfVkVDMiwgMSwg
ZmFsc2VdLAorICAgICAgICBbJ2J2ZWMzJywgJycsICcnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1
ZS54KScsIGdsLkJPT0xfVkVDMywgMSwgZmFsc2VdLAorICAgICAgICBbJ2J2ZWM0JywgJycsICcn
LCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZS54KScsIGdsLkJPT0xfVkVDNCwgMSwgZmFsc2VdLAor
ICAgICAgICBbJ21hdDInLCAnJywgJ2hpZ2hwJywgJycsICdmbG9hdCh1bmlmb3JtVmFsdWVbMF1b
MF0pJywgZ2wuRkxPQVRfTUFUMiwgMSwgZmFsc2VdLAorICAgICAgICBbJ21hdDMnLCAnJywgJ2hp
Z2hwJywgJycsICdmbG9hdCh1bmlmb3JtVmFsdWVbMF1bMF0pJywgZ2wuRkxPQVRfTUFUMywgMSwg
ZmFsc2VdLAorICAgICAgICBbJ21hdDQnLCAnJywgJ2hpZ2hwJywgJycsICdmbG9hdCh1bmlmb3Jt
VmFsdWVbMF1bMF0pJywgZ2wuRkxPQVRfTUFUNCwgMSwgZmFsc2VdLAorICAgICAgICBbJ21hdDJ4
MycsICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZVswXVswXSknLCBnbC5GTE9B
VF9NQVQyeDMsIDEsIGZhbHNlXSwKKyAgICAgICAgWydtYXQyeDQnLCAnJywgJ2hpZ2hwJywgJycs
ICdmbG9hdCh1bmlmb3JtVmFsdWVbMF1bMF0pJywgZ2wuRkxPQVRfTUFUMng0LCAxLCBmYWxzZV0s
CisgICAgICAgIFsnbWF0M3gyJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodW5pZm9ybVZhbHVl
WzBdWzBdKScsIGdsLkZMT0FUX01BVDN4MiwgMSwgZmFsc2VdLAorICAgICAgICBbJ21hdDN4NCcs
ICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHVuaWZvcm1WYWx1ZVswXVswXSknLCBnbC5GTE9BVF9N
QVQzeDQsIDEsIGZhbHNlXSwKKyAgICAgICAgWydtYXQ0eDInLCAnJywgJ2hpZ2hwJywgJycsICdm
bG9hdCh1bmlmb3JtVmFsdWVbMF1bMF0pJywgZ2wuRkxPQVRfTUFUNHgyLCAxLCBmYWxzZV0sCisg
ICAgICAgIFsnbWF0NHgzJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodW5pZm9ybVZhbHVlWzBd
WzBdKScsIGdsLkZMT0FUX01BVDR4MywgMSwgZmFsc2VdLAorICAgICAgICBbJ3NhbXBsZXIyRCcs
ICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHRleHR1cmVTaXplKHVuaWZvcm1WYWx1ZSwwKS5yKScs
IGdsLlNBTVBMRVJfMkQsIDEsIGZhbHNlXSwKKyAgICAgICAgWydzYW1wbGVyM0QnLCAnJywgJ2hp
Z2hwJywgJycsICdmbG9hdCh0ZXh0dXJlU2l6ZSh1bmlmb3JtVmFsdWUsMCkuciknLCBnbC5TQU1Q
TEVSXzNELCAxLCBmYWxzZV0sCisgICAgICAgIFsnc2FtcGxlckN1YmUnLCAnJywgJ2hpZ2hwJywg
JycsICdmbG9hdCh0ZXh0dXJlU2l6ZSh1bmlmb3JtVmFsdWUsMCkuciknLCBnbC5TQU1QTEVSX0NV
QkUsIDEsIGZhbHNlXSwKKyAgICAgICAgWydzYW1wbGVyMkRTaGFkb3cnLCAnJywgJ2hpZ2hwJywg
JycsICdmbG9hdCh0ZXh0dXJlU2l6ZSh1bmlmb3JtVmFsdWUsMCkuciknLCBnbC5TQU1QTEVSXzJE
X1NIQURPVywgMSwgZmFsc2VdLAorICAgICAgICBbJ3NhbXBsZXIyREFycmF5JywgJycsICdoaWdo
cCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9ybVZhbHVlLDApLnIpJywgZ2wuU0FNUExF
Ul8yRF9BUlJBWSwgMSwgZmFsc2VdLAorICAgICAgICBbJ3NhbXBsZXIyREFycmF5U2hhZG93Jywg
JycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9ybVZhbHVlLDApLnIpJywg
Z2wuU0FNUExFUl8yRF9BUlJBWV9TSEFET1csIDEsIGZhbHNlXSwKKyAgICAgICAgWydzYW1wbGVy
Q3ViZVNoYWRvdycsICcnLCAnaGlnaHAnLCAnJywgJ2Zsb2F0KHRleHR1cmVTaXplKHVuaWZvcm1W
YWx1ZSwwKS5yKScsIGdsLlNBTVBMRVJfQ1VCRV9TSEFET1csIDEsIGZhbHNlXSwKKyAgICAgICAg
Wydpc2FtcGxlcjJEJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9y
bVZhbHVlLDApLnIpJywgZ2wuSU5UX1NBTVBMRVJfMkQsIDEsIGZhbHNlXSwKKyAgICAgICAgWydp
c2FtcGxlcjNEJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9ybVZh
bHVlLDApLnIpJywgZ2wuSU5UX1NBTVBMRVJfM0QsIDEsIGZhbHNlXSwKKyAgICAgICAgWydpc2Ft
cGxlckN1YmUnLCAnJywgJ2hpZ2hwJywgJycsICdmbG9hdCh0ZXh0dXJlU2l6ZSh1bmlmb3JtVmFs
dWUsMCkuciknLCBnbC5JTlRfU0FNUExFUl9DVUJFLCAxLCBmYWxzZV0sCisgICAgICAgIFsnaXNh
bXBsZXIyREFycmF5JywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9y
bVZhbHVlLDApLnIpJywgZ2wuSU5UX1NBTVBMRVJfMkRfQVJSQVksIDEsIGZhbHNlXSwKKyAgICAg
ICAgWyd1c2FtcGxlcjJEJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5p
Zm9ybVZhbHVlLDApLnIpJywgZ2wuVU5TSUdORURfSU5UX1NBTVBMRVJfMkQsIDEsIGZhbHNlXSwK
KyAgICAgICAgWyd1c2FtcGxlcjNEJywgJycsICdoaWdocCcsICcnLCAnZmxvYXQodGV4dHVyZVNp
emUodW5pZm9ybVZhbHVlLDApLnIpJywgZ2wuVU5TSUdORURfSU5UX1NBTVBMRVJfM0QsIDEsIGZh
bHNlXSwKKyAgICAgICAgWyd1c2FtcGxlckN1YmUnLCAnJywgJ2hpZ2hwJywgJycsICdmbG9hdCh0
ZXh0dXJlU2l6ZSh1bmlmb3JtVmFsdWUsMCkuciknLCBnbC5VTlNJR05FRF9JTlRfU0FNUExFUl9D
VUJFLCAxLCBmYWxzZV0sCisgICAgICAgIFsndXNhbXBsZXIyREFycmF5JywgJycsICdoaWdocCcs
ICcnLCAnZmxvYXQodGV4dHVyZVNpemUodW5pZm9ybVZhbHVlLDApLnIpJywgZ2wuVU5TSUdORURf
SU5UX1NBTVBMRVJfMkRfQVJSQVksIDEsIGZhbHNlXQorICAgIF07CisKKyAgICB2YXIgdmVydFNv
dXJjZSA9CisgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAndm9pZCBtYWlu
ICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IHZl
YzQoMC4wKTtcbicgKworICAgICAgICAnfVxuJzsKKworICAgIHZhciBzaGFkZXJWZXJ0ID0gZ2wu
Y3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZhciBzaGFkZXJGcmFnID0gZ2wu
Y3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgdmFyIHByb2dyYW0gPSBnbC5j
cmVhdGVQcm9ncmFtKCk7CisKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyVmVy
dCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlckZyYWcpOworCisgICAgZ2wu
c2hhZGVyU291cmNlKHNoYWRlclZlcnQsIHZlcnRTb3VyY2UpOworICAgIGdsLmNvbXBpbGVTaGFk
ZXIoc2hhZGVyVmVydCk7CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB1bmlmb3JtVHlw
ZXMubGVuZ3RoOyArK25keCkgeworICAgICAgICB2YXIgZGVjbGFyYXRpb24gPSB1bmlmb3JtVHlw
ZXNbbmR4XVswXTsKKyAgICAgICAgdmFyIHBvc3REZWNsYXJhdGlvbiA9IHVuaWZvcm1UeXBlc1tu
ZHhdWzFdOworICAgICAgICB2YXIgcHJlY2lzaW9uID0gdW5pZm9ybVR5cGVzW25keF1bMl07Cisg
ICAgICAgIHZhciBsYXlvdXQgPSB1bmlmb3JtVHlwZXNbbmR4XVszXTsKKyAgICAgICAgdmFyIGdl
dHRlciA9IHVuaWZvcm1UeXBlc1tuZHhdWzRdOworICAgICAgICB2YXIgdHlwZSA9IHVuaWZvcm1U
eXBlc1tuZHhdWzVdOworICAgICAgICB2YXIgc2l6ZSA9IHVuaWZvcm1UeXBlc1tuZHhdWzZdOwor
ICAgICAgICB2YXIgaXNSb3dNYWpvciA9IHVuaWZvcm1UeXBlc1tuZHhdWzddOworICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnVmVyaWZ5IHR5cGUgb2YgJyArIGRlY2xhcmF0aW9uICsgJyB2
YXJpYWJsZScgKyBwb3N0RGVjbGFyYXRpb24pOworCisgICAgICAgIC8vIGdlbiBmcmFnbWVudCBz
aGFkZXIKKworICAgICAgICB2YXIgZnJhZyA9ICcnOworICAgICAgICBmcmFnICs9ICcjdmVyc2lv
biAzMDAgZXNcbic7CisgICAgICAgIGZyYWcgKz0gbGF5b3V0ICsgJ3VuaWZvcm0gJyArIHByZWNp
c2lvbiArICcgJyArIGRlY2xhcmF0aW9uICsgJyB1bmlmb3JtVmFsdWUnICsgcG9zdERlY2xhcmF0
aW9uICsgJztcbic7CisgICAgICAgIGZyYWcgKz0gJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBt
ZWRpdW1wIHZlYzQgZnJhZ0NvbG9yO1xuJzsKKyAgICAgICAgZnJhZyArPSAndm9pZCBtYWluICh2
b2lkKVxuJzsKKyAgICAgICAgZnJhZyArPSAne1xuJzsKKyAgICAgICAgZnJhZyArPSAnIGZyYWdD
b2xvciA9IHZlYzQoJyArIGdldHRlciArICcpO1xuJzsKKyAgICAgICAgZnJhZyArPSAnfVxuJzsK
KworICAgICAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyRnJhZywgZnJhZyk7CisKKyAgICAgICAg
Ly8gY29tcGlsZSAmIGxpbmsKKworICAgICAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcp
OworICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAvLyB0ZXN0Cisg
ICAgICAgIGlmICh0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5UHJvZ3JhbShwcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUywgdHJ1ZSksICdQcm9ncmFtIGxpbmsgZmFpbCcgKyBnbC5nZXRQcm9n
cmFtSW5mb0xvZyhwcm9ncmFtKSkpIHsKKyAgICAgICAgICAgIHZhciBpbmRpY2VzID0gZ2wuZ2V0
VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgWyd1bmlmb3JtVmFsdWUnXSk7CisgICAgICAgICAgICB2
YXIgaW5mb190eXBlID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgaW5kaWNlcywgZ2wu
VU5JRk9STV9UWVBFKVswXTsKKyAgICAgICAgICAgIHZhciBpbmZvX3NpemUgPSBnbC5nZXRBY3Rp
dmVVbmlmb3Jtcyhwcm9ncmFtLCBpbmRpY2VzLCBnbC5VTklGT1JNX1NJWkUpWzBdOworICAgICAg
ICAgICAgdmFyIGluZm9faXNfcm93X21ham9yID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bSwgaW5kaWNlcywgZ2wuVU5JRk9STV9JU19ST1dfTUFKT1IpWzBdOworICAgICAgICAgICAgdGhp
cy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LmNvbXBhcmUoaW5mb19zaXplLCBzaXplKSk7CisgICAgICAg
ICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkuY29tcGFyZShpbmZvX3R5cGUsIHR5cGUpKTsK
KyAgICAgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS5jb21wYXJlKGluZm9faXNfcm93
X21ham9yLCBpc1Jvd01ham9yKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnbC5kZWxldGVT
aGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlckZyYWcpOworICAg
IGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1CbG9ja3NDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1CbG9ja3NDYXNlLCBlczNmQXBpQ2FzZS5BcGlD
YXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Qcm9ncmFtQWN0aXZlVW5pZm9ybUJs
b2Nrc0Nhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGVzdFZlcnRT
b3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgJ3VuaWZvcm0g
bG9uZ2xvbmdVbmlmb3JtQmxvY2tOYW1lIHtoaWdocCB2ZWMyIHZlY3RvcjI7fSBsb25nbG9uZ1Vu
aWZvcm1JbnN0YW5jZU5hbWU7XG4nICsKKyAgICAgICAgJ3VuaWZvcm0gc2hvcnRVbmlmb3JtQmxv
Y2tOYW1lIHtoaWdocCB2ZWMyIHZlY3RvcjI7aGlnaHAgdmVjNCB2ZWN0b3I0O30gc2hvcnRVbmlm
b3JtSW5zdGFuY2VOYW1lO1xuJyArCisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAg
ICAgICAgJ3tcbicgKworICAgICAgICAnIGdsX1Bvc2l0aW9uID0gc2hvcnRVbmlmb3JtSW5zdGFu
Y2VOYW1lLnZlY3RvcjQgKyB2ZWM0KGxvbmdsb25nVW5pZm9ybUluc3RhbmNlTmFtZS52ZWN0b3Iy
LngpICsgdmVjNChzaG9ydFVuaWZvcm1JbnN0YW5jZU5hbWUudmVjdG9yMi54KTtcbicgKworICAg
ICAgICAnfVxuJzsKKyAgICB2YXIgdGVzdEZyYWdTb3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24g
MzAwIGVzXG4nICsKKyAgICAgICAgJ3VuaWZvcm0gbG9uZ2xvbmdVbmlmb3JtQmxvY2tOYW1lIHto
aWdocCB2ZWMyIHZlY3RvcjI7fSBsb25nbG9uZ1VuaWZvcm1JbnN0YW5jZU5hbWU7XG4nICsKKyAg
ICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOycg
KworICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAg
ICAgJyBmcmFnQ29sb3IgPSB2ZWM0KGxvbmdsb25nVW5pZm9ybUluc3RhbmNlTmFtZS52ZWN0b3Iy
LnkpO1xuJyArCisgICAgICAgICd9XG4nOworCisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFk
ZXJWZXJ0LCB0ZXN0VmVydFNvdXJjZSk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlckZyYWcs
IHRlc3RGcmFnU291cmNlKTsKKworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7Cisg
ICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJGcmFnKTsKKworICAgIHZhciBwcm9ncmFtID0gZ2wu
Y3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0
KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wubGlu
a1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5
U2hhZGVyKHNoYWRlclZlcnQsIGdsLkNPTVBJTEVfU1RBVFVTLCB0cnVlKSk7CisgICAgdGhpcy5j
aGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVNoYWRlcihzaGFkZXJGcmFnLCBnbC5DT01QSUxFX1NU
QVRVUywgdHJ1ZSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFt
KHByb2dyYW0sIGdsLkxJTktfU1RBVFVTLCB0cnVlKSk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5UHJvZ3JhbShwcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9STV9CTE9DS1Ms
IDIpKTsKKworICAgIHZhciBsb25nbG9uZ1VuaWZvcm1CbG9ja0luZGV4ID0gZ2wuZ2V0VW5pZm9y
bUJsb2NrSW5kZXgocHJvZ3JhbSwgJ2xvbmdsb25nVW5pZm9ybUJsb2NrTmFtZScpOworICAgIHZh
ciBzaG9ydFVuaWZvcm1CbG9ja0luZGV4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3Jh
bSwgJ3Nob3J0VW5pZm9ybUJsb2NrTmFtZScpOworCisgICAgdmFyIHVuaWZvcm1OYW1lcyA9IFsK
KyAgICAgICAgJ2xvbmdsb25nVW5pZm9ybUJsb2NrTmFtZS52ZWN0b3IyJywKKyAgICAgICAgJ3No
b3J0VW5pZm9ybUJsb2NrTmFtZS52ZWN0b3IyJywKKyAgICAgICAgJ3Nob3J0VW5pZm9ybUJsb2Nr
TmFtZS52ZWN0b3I0JworICAgIF07CisKKyAgICAvLyB0ZXN0IFVOSUZPUk1fQkxPQ0tfSU5ERVgK
KworICAgIHZhciB1bmlmb3JtSW5kaWNlcyA9IGdsLmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0s
IHVuaWZvcm1OYW1lcyk7CisKKyAgICB2YXIgdW5pZm9ybXNCbG9ja0luZGljZXMgPSBnbC5nZXRB
Y3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9CTE9DS19J
TkRFWCk7CisgICAgdGhpcy5jaGVjayh1bmlmb3Jtc0Jsb2NrSW5kaWNlc1swXSA9PSBsb25nbG9u
Z1VuaWZvcm1CbG9ja0luZGV4ICYmCisgICAgICAgIHVuaWZvcm1zQmxvY2tJbmRpY2VzWzFdID09
IHNob3J0VW5pZm9ybUJsb2NrSW5kZXggJiYKKyAgICAgICAgdW5pZm9ybXNCbG9ja0luZGljZXNb
Ml0gPT0gc2hvcnRVbmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgJ0V4cGVjdGVkIFsnICsgbG9u
Z2xvbmdVbmlmb3JtQmxvY2tJbmRleCArICIsICIgKyBzaG9ydFVuaWZvcm1CbG9ja0luZGV4ICsg
IiwgIiArIHNob3J0VW5pZm9ybUJsb2NrSW5kZXggKyAnXTsgZ290ICcgKworICAgICAgICB1bmlm
b3Jtc0Jsb2NrSW5kaWNlc1swXSArICIsICIgKyB1bmlmb3Jtc0Jsb2NrSW5kaWNlc1sxXSArICIs
ICIgKyB1bmlmb3Jtc0Jsb2NrSW5kaWNlc1syXSArICJdIik7CisKKyAgICAvLyB0ZXN0IFVOSUZP
Uk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSICYgVU5JRk9STV9CTE9DS19SRUZF
UkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUgorCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5
LnZlcmlmeUFjdGl2ZVVuaWZvcm1CbG9jayhwcm9ncmFtLCBsb25nbG9uZ1VuaWZvcm1CbG9ja0lu
ZGV4LCBnbC5VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUiwgdHJ1ZSkp
OworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlBY3RpdmVVbmlmb3JtQmxvY2so
cHJvZ3JhbSwgbG9uZ2xvbmdVbmlmb3JtQmxvY2tJbmRleCwgZ2wuVU5JRk9STV9CTE9DS19SRUZF
UkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUiwgdHJ1ZSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3Rh
dGVRdWVyeS52ZXJpZnlBY3RpdmVVbmlmb3JtQmxvY2socHJvZ3JhbSwgc2hvcnRVbmlmb3JtQmxv
Y2tJbmRleCwgZ2wuVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVIsIHRy
dWUpKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5QWN0aXZlVW5pZm9ybUJs
b2NrKHByb2dyYW0sIHNob3J0VW5pZm9ybUJsb2NrSW5kZXgsIGdsLlVOSUZPUk1fQkxPQ0tfUkVG
RVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVIsIGZhbHNlKSk7CisKKyAgICAvLyB0ZXN0IFVOSUZP
Uk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TCisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5QWN0aXZlVW5pZm9ybUJsb2NrKHByb2dyYW0sIGxvbmdsb25nVW5pZm9ybUJsb2NrSW5k
ZXgsIGdsLlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TLCAxKSk7CisgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUFjdGl2ZVVuaWZvcm1CbG9jayhwcm9ncmFtLCBzaG9ydFVu
aWZvcm1CbG9ja0luZGV4LCBnbC5VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUywgMikpOwor
CisgICAgLy8gdGVzdCBVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNX0lORElDRVMKKworICAg
IHZhciBzaG9ydFVuaWZvcm1CbG9ja0luZGljZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQ
YXJhbWV0ZXIocHJvZ3JhbSwgc2hvcnRVbmlmb3JtQmxvY2tJbmRleCwgZ2wuVU5JRk9STV9CTE9D
S19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTKTsKKyAgICB0aGlzLmNoZWNrKHNob3J0VW5pZm9ybUJs
b2NrSW5kaWNlcy5sZW5ndGggPT0gMiwgJ0V4cGVjdGVkIDIgaW5kaWNlczsgZ290ICcgKyBzaG9y
dFVuaWZvcm1CbG9ja0luZGljZXMubGVuZ3RoKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS5jb21wYXJlKHNob3J0VW5pZm9ybUJsb2NrSW5kaWNlcywgbmV3IFVpbnQzMkFycmF5KFt1
bmlmb3JtSW5kaWNlc1sxXSwgdW5pZm9ybUluZGljZXNbMl1dKSkgfHwKKyAgICAgICAgICAgICAg
IGdsc1N0YXRlUXVlcnkuY29tcGFyZShzaG9ydFVuaWZvcm1CbG9ja0luZGljZXMsIG5ldyBVaW50
MzJBcnJheShbdW5pZm9ybUluZGljZXNbMl0sIHVuaWZvcm1JbmRpY2VzWzFdXSkpLAorICAgICAg
ICAgICAgICAgICdFeHBlY3RlZCB7ICcgKyB1bmlmb3JtSW5kaWNlc1sxXSArJywgJyArIHVuaWZv
cm1JbmRpY2VzWzJdICsKKyAgICAgICAgICAgICAgICAnfTsgZ290IHsnICsgc2hvcnRVbmlmb3Jt
QmxvY2tJbmRpY2VzWzBdICsgJywgJyArIHNob3J0VW5pZm9ybUJsb2NrSW5kaWNlc1sxXSArICd9
Jyk7CisKKyAgICAvLyBjaGVjayBibG9jayBuYW1lcworCisgICAgdmFyIG5hbWUgPSBnbC5nZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIGxvbmdsb25nVW5pZm9ybUJsb2NrSW5kZXgp
OworICAgIHRoaXMuY2hlY2sobmFtZSA9PSAibG9uZ2xvbmdVbmlmb3JtQmxvY2tOYW1lIiwgJ1dy
b25nIHVuaWZvcm0gYmxvY2sgbmFtZSwgZXhwZWN0ZWQgbG9uZ2xvbmdVbmlmb3JtQmxvY2tOYW1l
OyBnb3QgJyArIG5hbWUpOworICAgIG5hbWUgPSBnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KHByb2dyYW0sIHNob3J0VW5pZm9ybUJsb2NrSW5kZXgpCisgICAgdGhpcy5jaGVjayhuYW1lID09
ICJzaG9ydFVuaWZvcm1CbG9ja05hbWUiLCAnV3JvbmcgdW5pZm9ybSBibG9jayBuYW1lLCBleHBl
Y3RlZCBzaG9ydFVuaWZvcm1CbG9ja05hbWU7IGdvdCAnICsgbmFtZSk7CisKKyAgICBnbC5kZWxl
dGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlckZyYWcpOwor
ICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0
ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3Jp
cHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3Jp
cHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVz
dHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNo
YWRlclN0YXRlUXVlcnlUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2UucHJvdG90eXBlLnRlc3Qg
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdHJhbnNmb3JtRmVlZGJhY2tUZXN0VmVydFNvdXJjZSA9
CisgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAnb3V0IGhpZ2hwIHZlYzQg
dGZPdXRwdXQyd2l0aExvbmdOYW1lO1xuJyArCisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4n
ICsKKyAgICAgICAgJ3tcbicgKworICAgICAgICAnIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApO1xu
JyArCisgICAgICAgICcgdGZPdXRwdXQyd2l0aExvbmdOYW1lID0gdmVjNCgwLjApO1xuJyArCisg
ICAgICAgICd9XG4nOworICAgIHZhciB0cmFuc2Zvcm1GZWVkYmFja1Rlc3RGcmFnU291cmNlID0K
KyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICdsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgaGlnaHAgdmVjNCBmcmFnQ29sb3I7XG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworICAgICAgICAne1xuJyArCisgICAgICAgICcgZnJhZ0NvbG9yID0gdmVjNCgw
LjApO1xuJyArCisgICAgICAgICd9XG4nOworCisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgICB2YXIgc2hhZGVyUHJvZyA9IGdsLmNy
ZWF0ZVByb2dyYW0oKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9n
cmFtKHNoYWRlclByb2csIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERSwgZ2wuSU5U
RVJMRUFWRURfQVRUUklCUykpOworCisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlclZlcnQsIHRy
YW5zZm9ybUZlZWRiYWNrVGVzdFZlcnRTb3VyY2UpOworICAgIGdsLnNoYWRlclNvdXJjZShzaGFk
ZXJGcmFnLCB0cmFuc2Zvcm1GZWVkYmFja1Rlc3RGcmFnU291cmNlKTsKKworICAgIGdsLmNvbXBp
bGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJGcmFnKTsK
KworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlTaGFkZXIoc2hhZGVyVmVydCwg
Z2wuQ09NUElMRV9TVEFUVVMsIHRydWUpKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5U2hhZGVyKHNoYWRlckZyYWcsIGdsLkNPTVBJTEVfU1RBVFVTLCB0cnVlKSk7CisKKyAg
ICBnbC5hdHRhY2hTaGFkZXIoc2hhZGVyUHJvZywgc2hhZGVyVmVydCk7CisgICAgZ2wuYXR0YWNo
U2hhZGVyKHNoYWRlclByb2csIHNoYWRlckZyYWcpOworCisgICAgLy8gY2hlY2sgVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9NT0RFCisKKyAgICB2YXIgdHJhbnNmb3JtX2ZlZWRiYWNrX291dHB1
dHMgPSBbJ2dsX1Bvc2l0aW9uJywgJ3RmT3V0cHV0MndpdGhMb25nTmFtZSddOworICAgIHZhciBi
dWZmZXJNb2RlcyA9IFtnbC5TRVBBUkFURV9BVFRSSUJTLCBnbC5JTlRFUkxFQVZFRF9BVFRSSUJT
XTsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgKytu
ZHgpIHsKKyAgICAgICAgZ2wudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhzaGFkZXJQcm9nLCB0
cmFuc2Zvcm1fZmVlZGJhY2tfb3V0cHV0cywgYnVmZmVyTW9kZXNbbmR4XSk7CisgICAgICAgIGds
LmxpbmtQcm9ncmFtKHNoYWRlclByb2cpOworCisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS52ZXJpZnlQcm9ncmFtKHNoYWRlclByb2csIGdsLkxJTktfU1RBVFVTLCB0cnVlKSk7Cisg
ICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlQcm9ncmFtKHNoYWRlclByb2cs
IGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERSwgYnVmZmVyTW9kZXNbbmR4XSkpOwor
ICAgIH0KKworICAgIC8vIGNoZWNrIHZhcnlpbmdzCisgICAgdmFyIHZhcnlpbmdzID0gLyoqIEB0
eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHNoYWRlclByb2csIGdsLlRS
QU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUykpOworICAgIHRoaXMuY2hlY2sodmFyeWluZ3MgPT09
IDIpOworCisgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHZhcnlpbmdzOyArK2luZGV4
KSB7CisgICAgICAgIHZhciBpbmZvID0gZ2wuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHNo
YWRlclByb2csIGluZGV4KTsKKyAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LmNvbXBh
cmUoaW5mby50eXBlLCBnbC5GTE9BVF9WRUM0KSk7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3Rh
dGVRdWVyeS5jb21wYXJlKGluZm8uc2l6ZSwgMSkpOworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkuY29tcGFyZShpbmZvLm5hbWUsIHRyYW5zZm9ybV9mZWVkYmFja19vdXRwdXRzW2lu
ZGV4XSkpOworICAgIH0KKworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJWZXJ0KTsKKyAgICBn
bC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbShzaGFkZXJQ
cm9nKTsKKworICAgIC8vIFRPRE8oa2JyKTogdGhpcyB0ZXN0IGlzIGZhaWxpbmcgYW5kIGxlYXZp
bmcgYW4gZXJyb3IgaW4gdGhlIEdMCisgICAgLy8gc3RhdGUsIGNhdXNpbmcgbGF0ZXIgdGVzdHMg
dG8gZmFpbC4gQ2xlYXIgdGhlIGVycm9yIHN0YXRlIGZvcgorICAgIC8vIHRoZSB0aW1lIGJlaW5n
LgorICAgIHdoaWxlIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7fQorfTsKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICov
CitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLkFjdGl2ZUF0dHJpYnV0ZXNDYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFk
ZXJTdGF0ZVF1ZXJ5VGVzdHMuQWN0aXZlQXR0cmlidXRlc0Nhc2UsIGVzM2ZBcGlDYXNlLkFwaUNh
c2UpOworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLkFjdGl2ZUF0dHJpYnV0ZXNDYXNlLnBy
b3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRlc3RWZXJ0U291cmNlID0KKyAg
ICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICdpbiBoaWdocCB2ZWMyIGxvbmdJ
bnB1dEF0dHJpYnV0ZU5hbWU7XG4nICsKKyAgICAgICAgJ2luIGhpZ2hwIHZlYzIgc2hvcnROYW1l
O1xuJyArCisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKwor
ICAgICAgICAnIGdsX1Bvc2l0aW9uID0gbG9uZ0lucHV0QXR0cmlidXRlTmFtZS55eHh5ICsgc2hv
cnROYW1lLnh5eHk7XG4nICsKKyAgICAgICAgJ31cbic7CisgICAgdmFyIHRlc3RGcmFnU291cmNl
ID0KKyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICdsYXlvdXQobG9jYXRp
b24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsnICsKKyAgICAgICAgJ3ZvaWQgbWFp
biAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisgICAgICAgICcgZnJhZ0NvbG9yID0gdmVj
NCgwLjApO1xuJyArCisgICAgICAgICd9XG4nOworCisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShz
aGFkZXJWZXJ0LCB0ZXN0VmVydFNvdXJjZSk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlckZy
YWcsIHRlc3RGcmFnU291cmNlKTsKKworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7
CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJGcmFnKTsKKworICAgIHZhciBwcm9ncmFtID0g
Z2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJW
ZXJ0KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wu
bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVy
aWZ5UHJvZ3JhbShwcm9ncmFtLCBnbC5BQ1RJVkVfQVRUUklCVVRFUywgMikpOworCisgICAgdmFy
IGF0dHJpYk5hbWVzID0gWworICAgICAgICAnbG9uZ0lucHV0QXR0cmlidXRlTmFtZScsCisgICAg
ICAgICdzaG9ydE5hbWUnCisgICAgXTsKKyAgICAvLyBjaGVjayBuYW1lcworICAgIGZvciAodmFy
IGF0dHJpYnV0ZU5keCA9IDA7IGF0dHJpYnV0ZU5keCA8IDI7ICsrYXR0cmlidXRlTmR4KSB7Cisg
ICAgICAgIHZhciBpbmZvID0gZ2wuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGF0dHJpYnV0ZU5k
eCk7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS5jb21wYXJlKGluZm8ubmFtZSwg
YXR0cmliTmFtZXNbMF0pIHx8IGdsc1N0YXRlUXVlcnkuY29tcGFyZShpbmZvLm5hbWUsIGF0dHJp
Yk5hbWVzWzFdKSk7CisgICAgfQorCisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQpOwor
ICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBp
Q2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEF0dHJp
YnV0ZVNpemVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBp
Q2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3Nl
dFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlU2l6
ZUNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlZlcnRleEF0dHJpYnV0ZVNpemVDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHBvaW50ZXJzID0gWworICAgICAgICAvLyBzaXplIHRlc3QKKyAgICAgICAgWzQsIGds
LkZMT0FULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFszLCBnbC5GTE9BVCwgMCwgZmFsc2UsIDBd
LAorICAgICAgICBbMiwgZ2wuRkxPQVQsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLkZM
T0FULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFs0LCBnbC5JTlQsIDAsIGZhbHNlLCAwXSwKKyAg
ICAgICAgWzMsIGdsLklOVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMiwgZ2wuSU5ULCAwLCBm
YWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5JTlQsIDAsIGZhbHNlLCAwXQorICAgIF07CisKKyAg
ICB2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGJ1Zik7CisKKyAgICAvLyBUZXN0IHdpdGggZGVmYXVsdCBWQU8KKworICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHBvaW50ZXJzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCBwb2ludGVyc1tuZHhdWzBdLCBwb2ludGVyc1tuZHhd
WzFdLCBwb2ludGVyc1tuZHhdWzNdLCBwb2ludGVyc1tuZHhdWzJdLCBwb2ludGVyc1tuZHhdWzRd
KTsKKyAgICAgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigw
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUsIHBvaW50ZXJzW25keF1bMF0pKTsKKyAgICB9
CisKKyAgICAvLyBUZXN0IHdpdGggbXVsdGlwbGUgVkFPcworICAgIHZhciB2YW8wID0gZ2wuY3Jl
YXRlVmVydGV4QXJyYXkoKTsKKyAgICB2YXIgdmFvMSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7
CisKKyAgICAvLyBpbml0aWFsCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIHRo
aXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FU
VFJJQl9BUlJBWV9TSVpFLCA0KSk7CisKKyAgICAvLyBzZXQgdmFvIDAgdG8gc29tZSB2YWx1ZQor
ICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgcG9pbnRlcnNbMF1bMF0sIHBvaW50ZXJzWzBd
WzFdLCBwb2ludGVyc1swXVszXSwgcG9pbnRlcnNbMF1bMl0sIDApOworCisgICAgLy8gc2V0IHZh
byAxIHRvIHNvbWUgb3RoZXIgdmFsdWUKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMSk7Cisg
ICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCBwb2ludGVyc1sxXVswXSwgcG9pbnRlcnNbMV1b
MV0sIHBvaW50ZXJzWzFdWzNdLCBwb2ludGVyc1sxXVsyXSwgMCk7CisKKyAgICAvLyB2ZXJpZnkg
dmFvIDEgc3RhdGUKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0
cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSwgcG9pbnRlcnNbMV1bMF0pKTsKKwor
ICAgIC8vIHZlcmlmeSB2YW8gMCBzdGF0ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8wKTsK
KyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZF
UlRFWF9BVFRSSUJfQVJSQVlfU0laRSwgcG9pbnRlcnNbMF1bMF0pKTsKKworICAgIGdsLmRlbGV0
ZVZlcnRleEFycmF5KHZhbzApOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzEpOworICAg
IGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLlZlcnRleEF0dHJpYnV0ZVR5cGVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24p
IHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24s
IGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVy
dGV4QXR0cmlidXRlVHlwZUNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVy
U3RhdGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZVR5cGVDYXNlLnByb3RvdHlwZS50ZXN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvaW50ZXJzID0gWworICAgICAgICAvLyB0eXBlIHRlc3QK
KyAgICAgICAgWzEsIGdsLkJZVEUsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLlNIT1JU
LCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5JTlQsIDAsIGZhbHNlLCAwXSwKKyAgICAg
ICAgWzEsIGdsLkZMT0FULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5IQUxGX0ZMT0FU
LCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5VTlNJR05FRF9CWVRFLCAwLCBmYWxzZSwg
MF0sCisgICAgICAgIFsxLCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgZmFsc2UsIDBdLAorICAgICAg
ICBbMSwgZ2wuVU5TSUdORURfSU5ULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFs0LCBnbC5JTlRf
Ml8xMF8xMF8xMF9SRVYsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzQsIGdsLlVOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFViwgMCwgZmFsc2UsIDBdCisgICAgXTsKKworICAgIHZhciBidWYgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVm
KTsKKworICAgIC8vIFRlc3Qgd2l0aCBkZWZhdWx0IFZBTworCisgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgcG9pbnRlcnMubGVuZ3RoOyArK25keCkgeworICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKDAsIHBvaW50ZXJzW25keF1bMF0sIHBvaW50ZXJzW25keF1bMV0sIHBvaW50ZXJz
W25keF1bM10sIHBvaW50ZXJzW25keF1bMl0sIHBvaW50ZXJzW25keF1bNF0pOworICAgICAgICB0
aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9B
VFRSSUJfQVJSQVlfVFlQRSwgcG9pbnRlcnNbbmR4XVsxXSkpOworICAgIH0KKworICAgIHZhciBw
b2ludGVyc0kgPSBbCisgICAgICAgIFsxLCBnbC5CWVRFLCAwLCBmYWxzZSwgMF0sCisgICAgICAg
IFsxLCBnbC5TSE9SVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuSU5ULCAwLCBmYWxz
ZSwgMF0sCisgICAgICAgIFsxLCBnbC5VTlNJR05FRF9CWVRFLCAwLCBmYWxzZSwgMF0sCisgICAg
ICAgIFsxLCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wu
VU5TSUdORURfSU5ULCAwLCBmYWxzZSwgMF0KKyAgICBdOworCisgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgcG9pbnRlcnNJLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0
cmliSVBvaW50ZXIoMCwgcG9pbnRlcnNJW25keF1bMF0sIHBvaW50ZXJzSVtuZHhdWzFdLCBwb2lu
dGVyc0lbbmR4XVsyXSwgcG9pbnRlcnNJW25keF1bNF0pOworICAgICAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlf
VFlQRSwgcG9pbnRlcnNJW25keF1bMV0pKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IHdpdGggbXVs
dGlwbGUgVkFPcworICAgIHZhciB2YW8wID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICB2
YXIgdmFvMSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisKKyAgICAvLyBpbml0aWFsCisgICAg
Z2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFLCBnbC5GTE9B
VCkpOworCisgICAgLy8gc2V0IHZhbyAwIHRvIHNvbWUgdmFsdWUKKyAgICBnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKDAsIDEsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBzZXQgdmFv
IDEgdG8gc29tZSBvdGhlciB2YWx1ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8xKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEsIGdsLlNIT1JULCBmYWxzZSwgMCwgMCk7CisK
KyAgICAvLyB2ZXJpZnkgdmFvIDEgc3RhdGUKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSwgZ2wuU0hP
UlQpKTsKKworICAgIC8vIHZlcmlmeSB2YW8gMCBzdGF0ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJh
eSh2YW8wKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmli
KDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSwgZ2wuRkxPQVQpKTsKKworICAgIGdsLmRl
bGV0ZVZlcnRleEFycmF5KHZhbzApOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzEpOwor
ICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVy
eVRlc3RzLlZlcnRleEF0dHJpYnV0ZVN0cmlkZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlw
dGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5WZXJ0ZXhBdHRyaWJ1dGVTdHJpZGVDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMz
ZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVTdHJpZGVDYXNlLnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvaW50ZXJzID0gWworICAgICAgICBbMSwg
Z2wuRkxPQVQsIDAsIDAsIGdsLk5PX0VSUk9SXSwKKyAgICAgICAgWzEsIGdsLkZMT0FULCAxLCAw
LCBnbC5JTlZBTElEX09QRVJBVElPTl0sCisgICAgICAgIFsxLCBnbC5GTE9BVCwgNCwgMCwgZ2wu
Tk9fRVJST1JdLAorICAgICAgICBbMSwgZ2wuSEFMRl9GTE9BVCwgMCwgMCwgZ2wuTk9fRVJST1Jd
LAorICAgICAgICBbMSwgZ2wuSEFMRl9GTE9BVCwgMSwgMCwgZ2wuSU5WQUxJRF9PUEVSQVRJT05d
LAorICAgICAgICBbMSwgZ2wuSEFMRl9GTE9BVCwgNCwgMCwgZ2wuTk9fRVJST1JdCisgICAgXTsK
KworICAgIHZhciBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgYnVmKTsKKworICAgIC8vIFRlc3Qgd2l0aCBkZWZhdWx0IFZBTworCisg
ICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgcG9pbnRlcnMubGVuZ3RoOyArK25keCkgeworICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIHBvaW50ZXJzW25keF1bMF0sIHBvaW50ZXJz
W25keF1bMV0sIGZhbHNlLCBwb2ludGVyc1tuZHhdWzJdLCBwb2ludGVyc1tuZHhdWzNdKTsKKyAg
ICAgICAgdGhpcy5leHBlY3RFcnJvcihwb2ludGVyc1tuZHhdWzRdKTsKKyAgICAgICAgaWYgKHBv
aW50ZXJzW25keF1bNF0gPT0gZ2wuTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9TVFJJREUsIHBvaW50ZXJzW25keF1bMl0pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZh
ciBwb2ludGVyc0kgPSBbCisgICAgICAgIFsxLCBnbC5JTlQsIDAsIDAsIGdsLk5PX0VSUk9SXSwK
KyAgICAgICAgWzEsIGdsLklOVCwgMSwgMCwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAorICAgICAg
ICBbMSwgZ2wuSU5ULCA0LCAwLCBnbC5OT19FUlJPUl0sCisgICAgICAgIFs0LCBnbC5VTlNJR05F
RF9CWVRFLCAwLCAwLCBnbC5OT19FUlJPUl0sCisgICAgICAgIFs0LCBnbC5VTlNJR05FRF9CWVRF
LCAxLCAwLCBnbC5OT19FUlJPUl0sCisgICAgICAgIFs0LCBnbC5VTlNJR05FRF9CWVRFLCA0LCAw
LCBnbC5OT19FUlJPUl0sCisgICAgICAgIFsyLCBnbC5TSE9SVCwgMCwgMCwgZ2wuTk9fRVJST1Jd
LAorICAgICAgICBbMiwgZ2wuU0hPUlQsIDEsIDAsIGdsLklOVkFMSURfT1BFUkFUSU9OXSwKKyAg
ICAgICAgWzIsIGdsLlNIT1JULCA0LCAwLCBnbC5OT19FUlJPUl0KKyAgICBdOworCisgICAgZm9y
ICh2YXIgbmR4ID0gMDsgbmR4IDwgcG9pbnRlcnNJLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAg
Z2wudmVydGV4QXR0cmliSVBvaW50ZXIoMCwgcG9pbnRlcnNJW25keF1bMF0sIHBvaW50ZXJzSVtu
ZHhdWzFdLCBwb2ludGVyc0lbbmR4XVsyXSwgcG9pbnRlcnNJW25keF1bM10pOworICAgICAgICB0
aGlzLmV4cGVjdEVycm9yKHBvaW50ZXJzSVtuZHhdWzRdKTsKKyAgICAgICAgaWYgKHBvaW50ZXJz
SVtuZHhdWzRdID09IGdsLk5PX0VSUk9SKSB7CisgICAgICAgICAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RS
SURFLCBwb2ludGVyc0lbbmR4XVsyXSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGVz
dCB3aXRoIG11bHRpcGxlIFZBT3MKKyAgICB2YXIgdmFvMCA9IGdsLmNyZWF0ZVZlcnRleEFycmF5
KCk7CisgICAgdmFyIHZhbzEgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworCisgICAgLy8gaW5p
dGlhbAorICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8wKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RS
SURFLCAwKSk7CisKKyAgICAvLyBzZXQgdmFvIDAgdG8gc29tZSB2YWx1ZQorICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMSwgZ2wuRkxPQVQsIGZhbHNlLCA0LCAwKTsKKworICAgIC8vIHNl
dCB2YW8gMSB0byBzb21lIG90aGVyIHZhbHVlCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzEp
OworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMSwgZ2wuU0hPUlQsIGZhbHNlLCA4LCAw
KTsKKworICAgIC8vIHZlcmlmeSB2YW8gMSBzdGF0ZQorICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUs
IDgpKTsKKworICAgIC8vIHZlcmlmeSB2YW8gMCBzdGF0ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJh
eSh2YW8wKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmli
KDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFLCA0KSk7CisKKyAgICBnbC5kZWxldGVW
ZXJ0ZXhBcnJheSh2YW8wKTsKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8xKTsKKyAgICBn
bC5kZWxldGVCdWZmZXIoYnVmKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0
ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5WZXJ0ZXhBdHRyaWJ1dGVOb3JtYWxpemVkQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlZlcnRleEF0dHJpYnV0ZU5vcm1hbGl6ZWRDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKwor
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVOb3JtYWxpemVkQ2FzZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBwb2ludGVycyA9IFsKKyAgICAg
ICAgLy8gdHlwZSB0ZXN0CisgICAgICAgIFsxLCBnbC5CWVRFLCAwLCBmYWxzZSwgMF0sCisgICAg
ICAgIFsxLCBnbC5TSE9SVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuSU5ULCAwLCBm
YWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5GTE9BVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBb
MSwgZ2wuSEFMRl9GTE9BVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuVU5TSUdORURf
QllURSwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIGZh
bHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLlVOU0lHTkVEX0lOVCwgMCwgZmFsc2UsIDBdLAorICAg
ICAgICBbNCwgZ2wuSU5UXzJfMTBfMTBfMTBfUkVWLCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFs0
LCBnbC5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAg
WzEsIGdsLkJZVEUsIDAsIHRydWUsIDBdLAorICAgICAgICBbMSwgZ2wuU0hPUlQsIDAsIHRydWUs
IDBdLAorICAgICAgICBbMSwgZ2wuSU5ULCAwLCB0cnVlLCAwXSwKKyAgICAgICAgWzEsIGdsLkZM
T0FULCAwLCB0cnVlLCAwXSwKKyAgICAgICAgWzEsIGdsLkhBTEZfRkxPQVQsIDAsIHRydWUsIDBd
LAorICAgICAgICBbMSwgZ2wuVU5TSUdORURfQllURSwgMCwgdHJ1ZSwgMF0sCisgICAgICAgIFsx
LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgdHJ1ZSwgMF0sCisgICAgICAgIFsxLCBnbC5VTlNJR05F
RF9JTlQsIDAsIHRydWUsIDBdLAorICAgICAgICBbNCwgZ2wuSU5UXzJfMTBfMTBfMTBfUkVWLCAw
LCB0cnVlLCAwXSwKKyAgICAgICAgWzQsIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwg
MCwgdHJ1ZSwgMF0KKyAgICBdOworCisgICAgdmFyIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwor
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOworCisgICAgLy8gVGVzdCB3
aXRoIGRlZmF1bHQgVkFPCisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBwb2ludGVycy5s
ZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgcG9pbnRl
cnNbbmR4XVswXSwgcG9pbnRlcnNbbmR4XVsxXSwgcG9pbnRlcnNbbmR4XVszXSwgcG9pbnRlcnNb
bmR4XVsyXSwgcG9pbnRlcnNbbmR4XVs0XSk7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJ
WkVELCBwb2ludGVyc1tuZHhdWzNdKSk7CisgICAgfQorCisgICAgdmFyIHBvaW50ZXJzSSA9IFsK
KyAgICAgICAgWzEsIGdsLkJZVEUsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLlNIT1JU
LCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5JTlQsIDAsIGZhbHNlLCAwXSwKKyAgICAg
ICAgWzEsIGdsLlVOU0lHTkVEX0JZVEUsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLlVO
U0lHTkVEX1NIT1JULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5VTlNJR05FRF9JTlQs
IDAsIGZhbHNlLCAwXQorICAgIF07CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBwb2lu
dGVyc0kubGVuZ3RoOyArK25keCkgeworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigw
LCBwb2ludGVyc0lbbmR4XVswXSwgcG9pbnRlcnNJW25keF1bMV0sIHBvaW50ZXJzSVtuZHhdWzJd
LCBwb2ludGVyc0lbbmR4XVs0XSk7CisgICAgICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVELCBm
YWxzZSkpOworICAgIH0KKworICAgIC8vIFRlc3Qgd2l0aCBtdWx0aXBsZSBWQU9zCisgICAgdmFy
IHZhbzAgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgIHZhciB2YW8xID0gZ2wuY3JlYXRl
VmVydGV4QXJyYXkoKTsKKworICAgIC8vIGluaXRpYWwKKyAgICBnbC5iaW5kVmVydGV4QXJyYXko
dmFvMCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigw
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQsIGZhbHNlKSk7CisKKyAgICAvLyBz
ZXQgdmFvIDAgdG8gc29tZSB2YWx1ZQorICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMSwg
Z2wuSU5ULCB0cnVlLCAwLCAwKTsKKworICAgIC8vIHNldCB2YW8gMSB0byBzb21lIG90aGVyIHZh
bHVlCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzEpOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMSwgZ2wuSU5ULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyB2ZXJpZnkgdmFvIDEg
c3RhdGUKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAs
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCwgZmFsc2UpKTsKKworICAgIC8vIHZl
cmlmeSB2YW8gMCBzdGF0ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8wKTsKKyAgICB0aGlz
LmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRS
SUJfQVJSQVlfTk9STUFMSVpFRCwgdHJ1ZSkpOworCisgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXko
dmFvMCk7CisgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmFvMSk7CisgICAgZ2wuZGVsZXRlQnVm
ZmVyKGJ1Zik7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZB
cGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0
cmlidXRlSW50ZWdlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVz
M2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1
dGVJbnRlZ2VyQ2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlSW50ZWdlckNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5j
dGlvbigpIHsKKyAgICB2YXIgcG9pbnRlcnMgPSBbCisgICAgICAgIC8vIHR5cGUgdGVzdAorICAg
ICAgICBbMSwgZ2wuQllURSwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuU0hPUlQsIDAs
IGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLklOVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBb
MSwgZ2wuRkxPQVQsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLkhBTEZfRkxPQVQsIDAs
IGZhbHNlLCAwXSwKKyAgICAgICAgWzEsIGdsLlVOU0lHTkVEX0JZVEUsIDAsIGZhbHNlLCAwXSwK
KyAgICAgICAgWzEsIGdsLlVOU0lHTkVEX1NIT1JULCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsx
LCBnbC5VTlNJR05FRF9JTlQsIDAsIGZhbHNlLCAwXSwKKyAgICAgICAgWzQsIGdsLklOVF8yXzEw
XzEwXzEwX1JFViwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbNCwgZ2wuVU5TSUdORURfSU5UXzJf
MTBfMTBfMTBfUkVWLCAwLCBmYWxzZSwgMF0KKyAgICBdOworCisgICAgdmFyIGJ1ZiA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOwor
CisgICAgLy8gVGVzdCB3aXRoIGRlZmF1bHQgVkFPCisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBwb2ludGVycy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgcG9pbnRlcnNbbmR4XVswXSwgcG9pbnRlcnNbbmR4XVsxXSwgcG9pbnRlcnNbbmR4
XVszXSwgcG9pbnRlcnNbbmR4XVsyXSwgcG9pbnRlcnNbbmR4XVs0XSk7CisgICAgICAgIHRoaXMu
Y2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9JTlRFR0VSLCBmYWxzZSkpOworICAgIH0KKworICAgIHZhciBwb2ludGVyc0kgPSBb
CisgICAgICAgIFsxLCBnbC5CWVRFLCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5TSE9S
VCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuSU5ULCAwLCBmYWxzZSwgMF0sCisgICAg
ICAgIFsxLCBnbC5VTlNJR05FRF9CWVRFLCAwLCBmYWxzZSwgMF0sCisgICAgICAgIFsxLCBnbC5V
TlNJR05FRF9TSE9SVCwgMCwgZmFsc2UsIDBdLAorICAgICAgICBbMSwgZ2wuVU5TSUdORURfSU5U
LCAwLCBmYWxzZSwgMF0KKyAgICBdOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgcG9p
bnRlcnNJLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliSVBvaW50ZXIo
MCwgcG9pbnRlcnNJW25keF1bMF0sIHBvaW50ZXJzSVtuZHhdWzFdLCBwb2ludGVyc0lbbmR4XVsy
XSwgcG9pbnRlcnNJW25keF1bNF0pOworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUiwgdHJ1
ZSkpOworICAgIH0KKworICAgIC8vIFRlc3Qgd2l0aCBtdWx0aXBsZSBWQU9zCisgICAgdmFyIHZh
bzAgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgIHZhciB2YW8xID0gZ2wuY3JlYXRlVmVy
dGV4QXJyYXkoKTsKKworICAgIC8vIGluaXRpYWwKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFv
MCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigwLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIsIGZhbHNlKSk7CisKKyAgICAvLyBzZXQgdmFv
IDAgdG8gc29tZSB2YWx1ZQorICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKDAsIDEsIGdsLklO
VCwgMCwgMCk7CisKKyAgICAvLyBzZXQgdmFvIDEgdG8gc29tZSBvdGhlciB2YWx1ZQorICAgIGds
LmJpbmRWZXJ0ZXhBcnJheSh2YW8xKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEs
IGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyB2ZXJpZnkgdmFvIDEgc3RhdGUKKyAg
ICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfSU5URUdFUiwgZmFsc2UpKTsKKworICAgIC8vIHZlcmlmeSB2YW8gMCBz
dGF0ZQorICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8wKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfSU5U
RUdFUiwgdHJ1ZSkpOworCisgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmFvMCk7CisgICAgZ2wu
ZGVsZXRlVmVydGV4QXJyYXkodmFvMSk7CisgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7Cit9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9
CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisgKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlRW5hYmxlZENh
c2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNh
c2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xh
c3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVFbmFibGVkQ2FzZSwg
ZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4
QXR0cmlidXRlRW5hYmxlZENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAv
LyBUZXN0IHdpdGggZGVmYXVsdCBWQU8KKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVELCBmYWxz
ZSkpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIHRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9FTkFCTEVELCB0cnVlKSk7CisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwor
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVS
VEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVELCBmYWxzZSkpOworCisgICAgLy8gVGVzdCB3aXRoIG11
bHRpcGxlIFZBT3MKKyAgICB2YXIgdmFvMCA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAg
dmFyIHZhbzEgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworCisgICAgLy8gaW5pdGlhbAorICAg
IGdsLmJpbmRWZXJ0ZXhBcnJheSh2YW8wKTsKKyAgICAvLyBzZXQgdmFvIDAgdG8gc29tZSB2YWx1
ZQorICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgLy8gc2V0IHZhbyAx
IHRvIHNvbWUgb3RoZXIgdmFsdWUKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMSk7CisgICAg
Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgLy8gdmVyaWZ5IHZhbyAxIHN0
YXRlCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigwLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQsIGZhbHNlKSk7CisKKyAgICAvLyB2ZXJpZnkg
dmFvIDAgc3RhdGUKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMCk7CisgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigwLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX0VOQUJMRUQsIHRydWUpKTsKKworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzApOwor
ICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzEpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZURpdmlzb3JDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlRGl2aXNvckNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2Up
OworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZURpdmlzb3JDYXNl
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgLy8gVGVzdCB3aXRoIGRlZmF1bHQg
VkFPCisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliKDAs
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiwgMCkpOworICAgIGdsLnZlcnRleEF0dHJp
YkRpdmlzb3IoMCwgMSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRl
eEF0dHJpYigwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IsIDEpKTsKKyAgICBnbC52
ZXJ0ZXhBdHRyaWJEaXZpc29yKDAsIDUpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SLCA1KSk7
CisKKyAgICAvLyBUZXN0IHdpdGggbXVsdGlwbGUgVkFPcworICAgIHZhciB2YW8wID0gZ2wuY3Jl
YXRlVmVydGV4QXJyYXkoKTsKKyAgICB2YXIgdmFvMSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7
CisKKyAgICAvLyBpbml0aWFsCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIC8v
IHNldCB2YW8gMCB0byBzb21lIHZhbHVlCisgICAgZ2wudmVydGV4QXR0cmliRGl2aXNvcigwLCAx
KTsKKworICAgIC8vIHNldCB2YW8gMSB0byBzb21lIG90aGVyIHZhbHVlCisgICAgZ2wuYmluZFZl
cnRleEFycmF5KHZhbzEpOworICAgIGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoMCwgNSk7CisKKyAg
ICAvLyB2ZXJpZnkgdmFvIDEgc3RhdGUKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVy
aWZ5VmVydGV4QXR0cmliKDAsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiwgNSkpOwor
CisgICAgLy8gdmVyaWZ5IHZhbyAwIHN0YXRlCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzAp
OworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wu
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SLCAxKSk7CisKKyAgICBnbC5kZWxldGVWZXJ0ZXhB
cnJheSh2YW8wKTsKKyAgICBnbC5kZWxldGVWZXJ0ZXhBcnJheSh2YW8xKTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLwor
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVCdWZmZXJCaW5kaW5nQ2Fz
ZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2Fz
ZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFz
cyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZUJ1ZmZlckJpbmRpbmdD
YXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5W
ZXJ0ZXhBdHRyaWJ1dGVCdWZmZXJCaW5kaW5nQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9u
KCkgeworICAgIC8vIFRlc3Qgd2l0aCBkZWZhdWx0IFZBTworCisgICAgdmFyIGJ1ZmZlciA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZm
ZXIpOworCisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBnbC5GTE9BVCwgZmFsc2Us
IDAsIDApOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJp
YigwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HLCBidWZmZXIpKTsKKwor
ICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworCisgICAgLy8gVGVzdCB3aXRoIG11bHRpcGxl
IFZBT3MKKyAgICB2YXIgdmFvMCA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgdmFyIHZh
bzEgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgIHZhciBidWZmZXIwID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgdmFyIGJ1ZmZlcjEgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAgIC8v
IGluaXRpYWwKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvMCk7CisgICAgLy8gc2V0IHZhbyAw
IHRvIHNvbWUgdmFsdWUKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVy
MCk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAs
IDApOworCisgICAgLy8gc2V0IHZhbyAxIHRvIHNvbWUgb3RoZXIgdmFsdWUKKyAgICBnbC5iaW5k
VmVydGV4QXJyYXkodmFvMSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcjEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKKworICAgIC8vIHZlcmlmeSB2YW8gMSBzdGF0ZQorICAgIHRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9C
VUZGRVJfQklORElORywgYnVmZmVyMSkpOworCisgICAgLy8gdmVyaWZ5IHZhbyAwIHN0YXRlCisg
ICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVy
eS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklO
RElORywgYnVmZmVyMCkpOworCisgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmFvMCk7CisgICAg
Z2wuZGVsZXRlVmVydGV4QXJyYXkodmFvMSk7CisgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcjAp
OworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIxKTsKK307CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVPZmZzZXRDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlT2Zmc2V0Q2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7
CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlT2Zmc2V0Q2FzZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBwb2ludGVycyA9IFsKKyAgICAg
ICAgWzEsIGdsLkJZVEUsIDAsIGZhbHNlLCAyICogNF0sCisgICAgICAgIFsxLCBnbC5TSE9SVCwg
MCwgZmFsc2UsIDEgKiA0XSwKKyAgICAgICAgWzEsIGdsLklOVCwgMCwgZmFsc2UsIDIgKiA0XSwK
KyAgICAgICAgWzEsIGdsLkZMT0FULCAwLCBmYWxzZSwgMCAqIDRdLAorICAgICAgICBbMSwgZ2wu
RkxPQVQsIDAsIGZhbHNlLCAzICogNF0sCisgICAgICAgIFsxLCBnbC5GTE9BVCwgMCwgZmFsc2Us
IDIgKiA0XSwKKyAgICAgICAgWzEsIGdsLkhBTEZfRkxPQVQsIDAsIGZhbHNlLCAwICogNF0sCisg
ICAgICAgIFs0LCBnbC5IQUxGX0ZMT0FULCAwLCBmYWxzZSwgMSAqIDRdLAorICAgICAgICBbNCwg
Z2wuSEFMRl9GTE9BVCwgMCwgZmFsc2UsIDIgKiA0XQorICAgIF07CisKKyAgICB2YXIgYnVmID0g
Z2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
Zik7CisKKyAgICAvLyBUZXN0IHdpdGggZGVmYXVsdCBWQU8KKworICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IHBvaW50ZXJzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCBwb2ludGVyc1tuZHhdWzBdLCBwb2ludGVyc1tuZHhdWzFdLCBwb2ludGVy
c1tuZHhdWzNdLCBwb2ludGVyc1tuZHhdWzJdLCBwb2ludGVyc1tuZHhdWzRdKTsKKyAgICAgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRleEF0dHJpYigwLCBnbC5WRVJURVhf
QVRUUklCX0FSUkFZX1BPSU5URVIsIHBvaW50ZXJzW25keF1bNF0pKTsKKyAgICB9CisKKyAgICAv
LyBUZXN0IHdpdGggbXVsdGlwbGUgVkFPcworICAgIHZhciB2YW8wID0gZ2wuY3JlYXRlVmVydGV4
QXJyYXkoKTsKKyAgICB2YXIgdmFvMSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisKKyAgICAv
LyBpbml0aWFsCisgICAgZ2wuYmluZFZlcnRleEFycmF5KHZhbzApOworICAgIHRoaXMuY2hlY2so
Z2xzU3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9QT0lOVEVSLCAwKSk7CisKKyAgICAvLyBzZXQgdmFvIDAgdG8gc29tZSB2YWx1ZQorICAgIGds
LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCA4KTsKKworICAg
IC8vIHNldCB2YW8gMSB0byBzb21lIG90aGVyIHZhbHVlCisgICAgZ2wuYmluZFZlcnRleEFycmF5
KHZhbzEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuRkxPQVQsIGZhbHNl
LCAwLCA0KTsKKworICAgIC8vIHZlcmlmeSB2YW8gMSBzdGF0ZQorICAgIHRoaXMuY2hlY2soZ2xz
U3RhdGVRdWVyeS52ZXJpZnlWZXJ0ZXhBdHRyaWIoMCwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9Q
T0lOVEVSLCA0KSk7CisKKyAgICAvLyB2ZXJpZnkgdmFvIDAgc3RhdGUKKyAgICBnbC5iaW5kVmVy
dGV4QXJyYXkodmFvMCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVZlcnRl
eEF0dHJpYigwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIsIDgpKTsKKworICAgIGds
LmRlbGV0ZVZlcnRleEFycmF5KHZhbzApOworICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZhbzEp
OworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLlVuaWZvcm1WYWx1ZUZsb2F0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0
aW9uKSB7CisgICAgZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0
aW9uLCBnbCk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlVuaWZvcm1WYWx1ZUZsb2F0Q2FzZSwgZXMzZkFwaUNhc2UuQXBpQ2FzZSk7CisKK2VzM2ZTaGFk
ZXJTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVlRmxvYXRDYXNlLnByb3RvdHlwZS50ZXN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHRlc3RWZXJ0U291cmNlID0KKyAgICAgICAgJyN2ZXJzaW9u
IDMwMCBlc1xuJyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIGZsb2F0IGZsb2F0VW5pZm9ybTtc
bicgKworICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWMyIGZsb2F0MlVuaWZvcm07XG4nICsKKyAg
ICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjMyBmbG9hdDNVbmlmb3JtO1xuJyArCisgICAgICAgICd1
bmlmb3JtIGhpZ2hwIHZlYzQgZmxvYXQ0VW5pZm9ybTtcbicgKworICAgICAgICAndm9pZCBtYWlu
ICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBnbF9Qb3NpdGlvbiA9IHZl
YzQoZmxvYXRVbmlmb3JtICsgZmxvYXQyVW5pZm9ybS54ICsgZmxvYXQzVW5pZm9ybS54ICsgZmxv
YXQ0VW5pZm9ybS54KTtcbicgKworICAgICAgICAnfVxuJzsKKyAgICB2YXIgdGVzdEZyYWdTb3Vy
Y2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgJ2xheW91dChsb2Nh
dGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOycgKworICAgICAgICAndm9pZCBt
YWluICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBmcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4nICsKKyAgICAgICAgJ31cbic7CisKKyAgICB2YXIgc2hhZGVyVmVydCA9IGds
LmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2YXIgc2hhZGVyRnJhZyA9IGds
LmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCisgICAgZ2wuc2hhZGVyU291cmNl
KHNoYWRlclZlcnQsIHRlc3RWZXJ0U291cmNlKTsKKyAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVy
RnJhZywgdGVzdEZyYWdTb3VyY2UpOworCisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJWZXJ0
KTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOworCisgICAgdmFyIHByb2dyYW0g
PSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
clZlcnQpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJGcmFnKTsKKyAgICBn
bC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworCisg
ICAgdmFyIGxvY2F0aW9uOworCisgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgJ2Zsb2F0VW5pZm9ybScpOworICAgIGdsLnVuaWZvcm0xZihsb2NhdGlvbiwgMSk7
CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgbG9j
YXRpb24sIDEpKTsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICdmbG9hdDJVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTJmKGxvY2F0aW9uLCAxLCAyKTsK
KyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBsb2Nh
dGlvbiwgbmV3IEZsb2F0MzJBcnJheShbMSwgMl0pKSk7CisKKyAgICBsb2NhdGlvbiA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnZmxvYXQzVW5pZm9ybScpOworICAgIGdsLnVuaWZv
cm0zZihsb2NhdGlvbiwgMSwgMiwgMyk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeVVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIsIDNd
KSkpOworCisgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2Zs
b2F0NFVuaWZvcm0nKTsKKyAgICBnbC51bmlmb3JtNGYobG9jYXRpb24sIDEsIDIsIDMsIDQpOwor
ICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGxvY2F0
aW9uLCBuZXcgRmxvYXQzMkFycmF5KFsxLCAyLCAzLCA0XSkpKTsKKworICAgIGdsLnVzZVByb2dy
YW0obnVsbCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQpOworICAgIGdsLmRlbGV0
ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworfTsK
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNl
fQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
bgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1WYWx1ZUludENhc2UgPSBm
dW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMz
ZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVJbnRDYXNlLCBlczNmQXBpQ2FzZS5B
cGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVJbnRDYXNl
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRlc3RWZXJ0U291cmNlID0K
KyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIGlu
dCBpbnRVbmlmb3JtO1xuJyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIGl2ZWMyIGludDJVbmlm
b3JtO1xuJyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIGl2ZWMzIGludDNVbmlmb3JtO1xuJyAr
CisgICAgICAgICd1bmlmb3JtIGhpZ2hwIGl2ZWM0IGludDRVbmlmb3JtO1xuJyArCisgICAgICAg
ICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAgICAnIGdsX1Bv
c2l0aW9uID0gdmVjNChmbG9hdChpbnRVbmlmb3JtICsgaW50MlVuaWZvcm0ueCArIGludDNVbmlm
b3JtLnggKyBpbnQ0VW5pZm9ybS54KSk7XG4nICsKKyAgICAgICAgJ31cbic7CisgICAgdmFyIHRl
c3RGcmFnU291cmNlID0KKyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICds
YXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsnICsKKyAgICAg
ICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisgICAgICAgICcgZnJh
Z0NvbG9yID0gdmVjNCgwLjApO1xuJyArCisgICAgICAgICd9XG4nOworCisgICAgdmFyIHNoYWRl
clZlcnQgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIHNoYWRl
ckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgIGdsLnNo
YWRlclNvdXJjZShzaGFkZXJWZXJ0LCB0ZXN0VmVydFNvdXJjZSk7CisgICAgZ2wuc2hhZGVyU291
cmNlKHNoYWRlckZyYWcsIHRlc3RGcmFnU291cmNlKTsKKworICAgIGdsLmNvbXBpbGVTaGFkZXIo
c2hhZGVyVmVydCk7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXJGcmFnKTsKKworICAgIHZh
ciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9n
cmFtLCBzaGFkZXJWZXJ0KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyRnJh
Zyk7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9n
cmFtKTsKKworICAgIHZhciBsb2NhdGlvbjsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICdpbnRVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTFpKGxvY2F0
aW9uLCAxKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9n
cmFtLCBsb2NhdGlvbiwgMSkpOworCisgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgJ2ludDJVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTJpKGxvY2F0aW9uLCAx
LCAyKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFt
LCBsb2NhdGlvbiwgbmV3IEludDMyQXJyYXkoWzEsIDJdKSkpOworCisgICAgbG9jYXRpb24gPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2ludDNVbmlmb3JtJyk7CisgICAgZ2wudW5p
Zm9ybTNpKGxvY2F0aW9uLCAxLCAyLCAzKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnku
dmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgbmV3IEludDMyQXJyYXkoWzEsIDIsIDNd
KSkpOworCisgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2lu
dDRVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTRpKGxvY2F0aW9uLCAxLCAyLCAzLCA0KTsKKyAg
ICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlv
biwgbmV3IEludDMyQXJyYXkoWzEsIDIsIDMsIDRdKSkpOworCisgICAgZ2wudXNlUHJvZ3JhbShu
dWxsKTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuZGVsZXRlU2hh
ZGVyKHNoYWRlckZyYWcpOworICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisg
Ki8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVlVWludENhc2UgPSBmdW5j
dGlvbihuYW1lLCBkZXNjcmlwdGlvbikgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0
aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNo
YWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVVaW50Q2FzZSwgZXMzZkFwaUNhc2UuQXBp
Q2FzZSk7CisKK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVlVWludENhc2Uu
cHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGVzdFZlcnRTb3VyY2UgPQor
ICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdWlu
dCB1aW50VW5pZm9ybTtcbicgKworICAgICAgICAndW5pZm9ybSBoaWdocCB1dmVjMiB1aW50MlVu
aWZvcm07XG4nICsKKyAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdXZlYzMgdWludDNVbmlmb3JtO1xu
JyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIHV2ZWM0IHVpbnQ0VW5pZm9ybTtcbicgKworICAg
ICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBn
bF9Qb3NpdGlvbiA9IHZlYzQoZmxvYXQodWludFVuaWZvcm0gKyB1aW50MlVuaWZvcm0ueCArIHVp
bnQzVW5pZm9ybS54ICsgdWludDRVbmlmb3JtLngpKTtcbicgKworICAgICAgICAnfVxuJzsKKyAg
ICB2YXIgdGVzdEZyYWdTb3VyY2UgPQorICAgICAgICAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAg
ICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOycg
KworICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAg
ICAgJyBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4nICsKKyAgICAgICAgJ31cbic7CisKKyAgICB2
YXIgc2hhZGVyVmVydCA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICB2
YXIgc2hhZGVyRnJhZyA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworCisg
ICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlclZlcnQsIHRlc3RWZXJ0U291cmNlKTsKKyAgICBnbC5z
aGFkZXJTb3VyY2Uoc2hhZGVyRnJhZywgdGVzdEZyYWdTb3VyY2UpOworCisgICAgZ2wuY29tcGls
ZVNoYWRlcihzaGFkZXJWZXJ0KTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlckZyYWcpOwor
CisgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlclZlcnQpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXJGcmFnKTsKKyAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC51c2VQcm9n
cmFtKHByb2dyYW0pOworCisgICAgdmFyIGxvY2F0aW9uOworCisgICAgbG9jYXRpb24gPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VpbnRVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9y
bTF1aShsb2NhdGlvbiwgMSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVu
aWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIDEpKTsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICd1aW50MlVuaWZvcm0nKTsKKyAgICBnbC51bmlmb3JtMnVp
KGxvY2F0aW9uLCAxLCAyKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5p
Zm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgbmV3IFVpbnQzMkFycmF5KFsxLCAyXSkpKTsKKworICAg
IGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1aW50M1VuaWZvcm0n
KTsKKyAgICBnbC51bmlmb3JtM3VpKGxvY2F0aW9uLCAxLCAyLCAzKTsKKyAgICB0aGlzLmNoZWNr
KGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgbmV3IFVpbnQz
MkFycmF5KFsxLCAyLCAzXSkpKTsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICd1aW50NFVuaWZvcm0nKTsKKyAgICBnbC51bmlmb3JtNHVpKGxvY2F0aW9u
LCAxLCAyLCAzLCA0KTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9y
bShwcm9ncmFtLCBsb2NhdGlvbiwgbmV3IFVpbnQzMkFycmF5KFsxLCAyLCAzLCA0XSkpKTsKKwor
ICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlclZlcnQp
OworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxldGVQcm9ncmFt
KHByb2dyYW0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNm
QXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1W
YWx1ZUJvb2xlYW5DYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24pIHsKKyAgICBlczNm
QXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsKTsKK307CisK
K3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVlQm9v
bGVhbkNhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLlVuaWZvcm1WYWx1ZUJvb2xlYW5DYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHRlc3RWZXJ0U291cmNlID0KKyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyAr
CisgICAgICAgICd1bmlmb3JtIGJvb2wgYm9vbFVuaWZvcm07XG4nICsKKyAgICAgICAgJ3VuaWZv
cm0gYnZlYzIgYm9vbDJVbmlmb3JtO1xuJyArCisgICAgICAgICd1bmlmb3JtIGJ2ZWMzIGJvb2wz
VW5pZm9ybTtcbicgKworICAgICAgICAndW5pZm9ybSBidmVjNCBib29sNFVuaWZvcm07XG4nICsK
KyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisgICAgICAg
ICcgZ2xfUG9zaXRpb24gPSB2ZWM0KGZsb2F0KGJvb2xVbmlmb3JtKSArIGZsb2F0KGJvb2wyVW5p
Zm9ybS54KSArIGZsb2F0KGJvb2wzVW5pZm9ybS54KSArIGZsb2F0KGJvb2w0VW5pZm9ybS54KSk7
XG4nICsKKyAgICAgICAgJ31cbic7CisgICAgdmFyIHRlc3RGcmFnU291cmNlID0KKyAgICAgICAg
JyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQg
bWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsnICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicg
KworICAgICAgICAne1xuJyArCisgICAgICAgICcgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuJyAr
CisgICAgICAgICd9XG4nOworCisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5jcmVhdGVTaGFkZXIo
Z2wuVkVSVEVYX1NIQURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIo
Z2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJWZXJ0LCB0
ZXN0VmVydFNvdXJjZSk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlckZyYWcsIHRlc3RGcmFn
U291cmNlKTsKKworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuY29t
cGlsZVNoYWRlcihzaGFkZXJGcmFnKTsKKworICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJv
Z3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0KTsKKyAgICBn
bC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wubGlua1Byb2dyYW0o
cHJvZ3JhbSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIHZhciBsb2NhdGlv
bjsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdib29s
VW5pZm9ybScpOworICAgIGdsLnVuaWZvcm0xaShsb2NhdGlvbiwgMSk7CisgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIHRydWUpKTsK
KworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdib29sMlVu
aWZvcm0nKTsKKyAgICBnbC51bmlmb3JtMmkobG9jYXRpb24sIDEsIDApOworICAgIHRoaXMuY2hl
Y2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCBbdHJ1ZSwg
ZmFsc2VdKSk7CisKKyAgICBsb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAnYm9vbDNVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTNpKGxvY2F0aW9uLCAxLCAwLCAxKTsK
KyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBsb2Nh
dGlvbiwgW3RydWUsIGZhbHNlLCB0cnVlXSkpOworCisgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2Jvb2w0VW5pZm9ybScpOworICAgIGdsLnVuaWZvcm00aShs
b2NhdGlvbiwgMSwgMCwgMSwgMCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eVVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIFt0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdKSk7
CisKKyAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJW
ZXJ0KTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisgICAgZ2wuZGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAqLworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlm
b3JtVmFsdWVTYW1wbGVyQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAg
ZXMzZkFwaUNhc2UuQXBpQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBnbCk7Cit9
OworCitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1WYWx1
ZVNhbXBsZXJDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRlUXVl
cnlUZXN0cy5Vbmlmb3JtVmFsdWVTYW1wbGVyQ2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgdGVzdFZlcnRTb3VyY2UgPQorICAgICAgICAgICAgJyN2ZXJzaW9u
IDMwMCBlc1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAg
ICAgICAne1xuJyArCisgICAgICAgICAgICAnIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApO1xuJyAr
CisgICAgICAgICAgICAnfVxuJzsKKyAgICAgICAgdmFyIHRlc3RGcmFnU291cmNlID0KKyAgICAg
ICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAg
c2FtcGxlcjJEIHVuaWZvcm1TYW1wbGVyO1xuJyArCisgICAgICAgICAgICAnbGF5b3V0KGxvY2F0
aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7JyArCisgICAgICAgICAgICAndm9p
ZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAne1xuJyArCisgICAgICAgICAgICAnIGZy
YWdDb2xvciA9IHZlYzQodGV4dHVyZVNpemUodW5pZm9ybVNhbXBsZXIsIDApLngpO1xuJyArCisg
ICAgICAgICAgICAnfVxuJzsKKworICAgICAgICB2YXIgc2hhZGVyVmVydCA9IGdsLmNyZWF0ZVNo
YWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVh
dGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKworICAgICAgICBnbC5zaGFkZXJTb3VyY2Uo
c2hhZGVyVmVydCwgdGVzdFZlcnRTb3VyY2UpOworICAgICAgICBnbC5zaGFkZXJTb3VyY2Uoc2hh
ZGVyRnJhZywgdGVzdEZyYWdTb3VyY2UpOworCisgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hh
ZGVyVmVydCk7CisgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyRnJhZyk7CisKKyAgICAg
ICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGdsLmF0dGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0KTsKKyAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dy
YW0sIHNoYWRlckZyYWcpOworICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAg
ICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICB2YXIgbG9jYXRpb247CisKKyAg
ICAgICAgbG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VuaWZvcm1T
YW1wbGVyJyk7CisgICAgICAgIGdsLnVuaWZvcm0xaShsb2NhdGlvbiwgMSk7CisgICAgICAgIHRo
aXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCAx
KSk7CisKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgZ2wuZGVsZXRlU2hh
ZGVyKHNoYWRlclZlcnQpOworICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7Cisg
ICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9CisgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZTaGFkZXJT
dGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVlQXJyYXlDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24pIHsKKyAgICBlczNmQXBpQ2FzZS5BcGlDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24sIGdsKTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5
VGVzdHMuVW5pZm9ybVZhbHVlQXJyYXlDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMz
ZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVBcnJheUNhc2UucHJvdG90eXBlLnRl
c3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGVzdFZlcnRTb3VyY2UgPQorICAgICAgICAnI3Zl
cnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgJ3VuaWZvcm0gaGlnaHAgZmxvYXQgYXJyYXlVbmlm
b3JtWzVdOycgKworICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWMyIGFycmF5MlVuaWZvcm1bNV07
JyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIHZlYzMgYXJyYXkzVW5pZm9ybVs1XTsnICsKKyAg
ICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjNCBhcnJheTRVbmlmb3JtWzVdOycgKworICAgICAgICAn
dm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICd7XG4nICsKKyAgICAgICAgJyBnbF9Qb3Np
dGlvbiA9IFxuJyArCisgICAgICAgICcgKyB2ZWM0KGFycmF5VW5pZm9ybVswXSArIGFycmF5VW5p
Zm9ybVsxXSArIGFycmF5VW5pZm9ybVsyXSArIGFycmF5VW5pZm9ybVszXSArIGFycmF5VW5pZm9y
bVs0XSlcbicgKworICAgICAgICAnICsgdmVjNChhcnJheTJVbmlmb3JtWzBdLnggKyBhcnJheTJV
bmlmb3JtWzFdLnggKyBhcnJheTJVbmlmb3JtWzJdLnggKyBhcnJheTJVbmlmb3JtWzNdLnggKyBh
cnJheTJVbmlmb3JtWzRdLngpXG4nICsKKyAgICAgICAgJyArIHZlYzQoYXJyYXkzVW5pZm9ybVsw
XS54ICsgYXJyYXkzVW5pZm9ybVsxXS54ICsgYXJyYXkzVW5pZm9ybVsyXS54ICsgYXJyYXkzVW5p
Zm9ybVszXS54ICsgYXJyYXkzVW5pZm9ybVs0XS54KVxuJyArCisgICAgICAgICcgKyB2ZWM0KGFy
cmF5NFVuaWZvcm1bMF0ueCArIGFycmF5NFVuaWZvcm1bMV0ueCArIGFycmF5NFVuaWZvcm1bMl0u
eCArIGFycmF5NFVuaWZvcm1bM10ueCArIGFycmF5NFVuaWZvcm1bNF0ueCk7XG4nICsKKyAgICAg
ICAgJ31cbic7CisgICAgdmFyIHRlc3RGcmFnU291cmNlID0KKyAgICAgICAgJyN2ZXJzaW9uIDMw
MCBlc1xuJyArCisgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0
IGZyYWdDb2xvcjsnICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAn
e1xuJyArCisgICAgICAgICcgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuJyArCisgICAgICAgICd9
XG4nOworCisgICAgdmFyIHNoYWRlclZlcnQgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NI
QURFUik7CisgICAgdmFyIHNoYWRlckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRf
U0hBREVSKTsKKworICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXJWZXJ0LCB0ZXN0VmVydFNvdXJj
ZSk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlckZyYWcsIHRlc3RGcmFnU291cmNlKTsKKwor
ICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyVmVydCk7CisgICAgZ2wuY29tcGlsZVNoYWRlcihz
aGFkZXJGcmFnKTsKKworICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAg
IGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJWZXJ0KTsKKyAgICBnbC5hdHRhY2hTaGFk
ZXIocHJvZ3JhbSwgc2hhZGVyRnJhZyk7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIHZhciBsb2NhdGlvbjsKKworICAgIHZh
ciB1bmlmb3JtVmFsdWUgPSBbCisgICAgICAgIC0xLjAsIDAuMSwgNC4wLCA4MDAuMCwKKyAgICAg
ICAgMTMuMCwgNTUuMCwgMTIuMCwgOTEuMCwKKyAgICAgICAgLTU1LjEsIDEuMSwgOTguMCwgMTku
MCwKKyAgICAgICAgNDEuMCwgNjUuMCwgNC4wLCAxMi4yLAorICAgICAgICA5NS4wLCA3Ny4wLCAz
Mi4wLCA0OC4wCisgICAgXTsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICdhcnJheVVuaWZvcm0nKTsKKyAgICBnbC51bmlmb3JtMWZ2KGxvY2F0aW9uLCBu
ZXcgRmxvYXQzMkFycmF5KHVuaWZvcm1WYWx1ZS5zbGljZSgwLCA1KSkpOworCisgICAgdGhpcy5j
aGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICdhcnJheVVuaWZvcm1bMF0nKSwgdW5pZm9ybVZhbHVlWzBdKSk7Cisg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheVVuaWZvcm1bMV0nKSwgdW5pZm9ybVZhbHVl
WzFdKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3Jh
bSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheVVuaWZvcm1bMl0nKSwgdW5p
Zm9ybVZhbHVlWzJdKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZv
cm0ocHJvZ3JhbSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheVVuaWZvcm1b
M10nKSwgdW5pZm9ybVZhbHVlWzNdKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZl
cmlmeVVuaWZvcm0ocHJvZ3JhbSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJh
eVVuaWZvcm1bNF0nKSwgdW5pZm9ybVZhbHVlWzRdKSk7CisKKyAgICBsb2NhdGlvbiA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXkyVW5pZm9ybScpOworICAgIGdsLnVuaWZv
cm0yZnYobG9jYXRpb24sIG5ldyBGbG9hdDMyQXJyYXkodW5pZm9ybVZhbHVlLnNsaWNlKDAsIDEw
KSkpOworCisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3Jh
bSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTJVbmlmb3JtWzBdJyksIG5l
dyBGbG9hdDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVsyICogMF0sIHVuaWZvcm1WYWx1ZVsoMiAqIDAp
ICsgMV1dKSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHBy
b2dyYW0sIGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXkyVW5pZm9ybVsxXScp
LCBuZXcgRmxvYXQzMkFycmF5KFt1bmlmb3JtVmFsdWVbMiAqIDFdLCB1bmlmb3JtVmFsdWVbKDIg
KiAxKSArIDFdXSkpKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9y
bShwcm9ncmFtLCBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2FycmF5MlVuaWZvcm1b
Ml0nKSwgbmV3IEZsb2F0MzJBcnJheShbdW5pZm9ybVZhbHVlWzIgKiAyXSwgdW5pZm9ybVZhbHVl
WygyICogMikgKyAxXV0pKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVu
aWZvcm0ocHJvZ3JhbSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTJVbmlm
b3JtWzNdJyksIG5ldyBGbG9hdDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVsyICogM10sIHVuaWZvcm1W
YWx1ZVsoMiAqIDMpICsgMV1dKSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJp
ZnlVbmlmb3JtKHByb2dyYW0sIGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXky
VW5pZm9ybVs0XScpLCBuZXcgRmxvYXQzMkFycmF5KFt1bmlmb3JtVmFsdWVbMiAqIDRdLCB1bmlm
b3JtVmFsdWVbKDIgKiA0KSArIDFdXSkpKTsKKworICAgIGxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTNVbmlmb3JtJyk7CisgICAgZ2wudW5pZm9ybTNmdihs
b2NhdGlvbiwgbmV3IEZsb2F0MzJBcnJheSh1bmlmb3JtVmFsdWUuc2xpY2UoMCwgMTUpKSk7CisK
KyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2FycmF5M1VuaWZvcm1bMF0nKSwgbmV3IEZsb2F0
MzJBcnJheShbdW5pZm9ybVZhbHVlWzMgKiAwXSwgdW5pZm9ybVZhbHVlWygzICogMCkgKyAxXSwg
dW5pZm9ybVZhbHVlWygzICogMCkgKyAyXV0pKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1
ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICdhcnJheTNVbmlmb3JtWzFdJyksIG5ldyBGbG9hdDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVszICog
MV0sIHVuaWZvcm1WYWx1ZVsoMyAqIDEpICsgMV0sIHVuaWZvcm1WYWx1ZVsoMyAqIDEpICsgMl1d
KSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0s
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXkzVW5pZm9ybVsyXScpLCBuZXcg
RmxvYXQzMkFycmF5KFt1bmlmb3JtVmFsdWVbMyAqIDJdLCB1bmlmb3JtVmFsdWVbKDMgKiAyKSAr
IDFdLCB1bmlmb3JtVmFsdWVbKDMgKiAyKSArIDJdXSkpKTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgJ2FycmF5M1VuaWZvcm1bM10nKSwgbmV3IEZsb2F0MzJBcnJheShbdW5pZm9ybVZhbHVl
WzMgKiAzXSwgdW5pZm9ybVZhbHVlWygzICogMykgKyAxXSwgdW5pZm9ybVZhbHVlWygzICogMykg
KyAyXV0pKSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJv
Z3JhbSwgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTNVbmlmb3JtWzRdJyks
IG5ldyBGbG9hdDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVszICogNF0sIHVuaWZvcm1WYWx1ZVsoMyAq
IDQpICsgMV0sIHVuaWZvcm1WYWx1ZVsoMyAqIDQpICsgMl1dKSkpOworCisgICAgbG9jYXRpb24g
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2FycmF5NFVuaWZvcm0nKTsKKyAgICBn
bC51bmlmb3JtNGZ2KGxvY2F0aW9uLCBuZXcgRmxvYXQzMkFycmF5KHVuaWZvcm1WYWx1ZSkpOwor
CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTRVbmlmb3JtWzBdJyksIG5ldyBGbG9h
dDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVs0ICogMF0sIHVuaWZvcm1WYWx1ZVsoNCAqIDApICsgMV0s
IHVuaWZvcm1WYWx1ZVsoNCAqIDApICsgMl0sIHVuaWZvcm1WYWx1ZVsoNCAqIDApICsgM11dKSkp
OworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGds
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXk0VW5pZm9ybVsxXScpLCBuZXcgRmxv
YXQzMkFycmF5KFt1bmlmb3JtVmFsdWVbNCAqIDFdLCB1bmlmb3JtVmFsdWVbKDQgKiAxKSArIDFd
LCB1bmlmb3JtVmFsdWVbKDQgKiAxKSArIDJdLCB1bmlmb3JtVmFsdWVbKDQgKiAxKSArIDNdXSkp
KTsKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VW5pZm9ybShwcm9ncmFtLCBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ2FycmF5NFVuaWZvcm1bMl0nKSwgbmV3IEZs
b2F0MzJBcnJheShbdW5pZm9ybVZhbHVlWzQgKiAyXSwgdW5pZm9ybVZhbHVlWyg0ICogMikgKyAx
XSwgdW5pZm9ybVZhbHVlWyg0ICogMikgKyAyXSwgdW5pZm9ybVZhbHVlWyg0ICogMikgKyAzXV0p
KSk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwg
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdhcnJheTRVbmlmb3JtWzNdJyksIG5ldyBG
bG9hdDMyQXJyYXkoW3VuaWZvcm1WYWx1ZVs0ICogM10sIHVuaWZvcm1WYWx1ZVsoNCAqIDMpICsg
MV0sIHVuaWZvcm1WYWx1ZVsoNCAqIDMpICsgMl0sIHVuaWZvcm1WYWx1ZVsoNCAqIDMpICsgM11d
KSkpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0s
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnYXJyYXk0VW5pZm9ybVs0XScpLCBuZXcg
RmxvYXQzMkFycmF5KFt1bmlmb3JtVmFsdWVbNCAqIDRdLCB1bmlmb3JtVmFsdWVbKDQgKiA0KSAr
IDFdLCB1bmlmb3JtVmFsdWVbKDQgKiA0KSArIDJdLCB1bmlmb3JtVmFsdWVbKDQgKiA0KSArIDNd
XSkpKTsKKworICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNo
YWRlclZlcnQpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJGcmFnKTsKKyAgICBnbC5kZWxl
dGVQcm9ncmFtKHByb2dyYW0pOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtlczNmQXBpQ2FzZS5BcGlDYXNlfQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlVuaWZvcm1WYWx1ZU1hdHJpeENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikgewor
ICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wp
OworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3Jt
VmFsdWVNYXRyaXhDYXNlLCBlczNmQXBpQ2FzZS5BcGlDYXNlKTsKKworZXMzZlNoYWRlclN0YXRl
UXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVNYXRyaXhDYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIHRyYW5zcG9zZSA9IGZ1bmN0aW9uKHJvd3MsIGNvbHMsIGRhdGEpIHsK
KyAgICAgICAgdmFyIG1hdHJpeCA9IHRjdU1hdHJpeC5tYXRyaXhGcm9tRGF0YUFycmF5KHJvd3Ms
IGNvbHMsIGRhdGEpOworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFy
IGNvbCA9IDA7IGNvbCA8IGNvbHM7IGNvbCsrKQorICAgICAgICAgICAgcmVzdWx0LnB1c2gobWF0
cml4LmdldENvbHVtbihjb2wpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoW10u
Y29uY2F0LmFwcGx5KFtdLCByZXN1bHQpKTsKKyAgICB9OworCisgICAgdmFyIHRlc3RWZXJ0U291
cmNlID0KKyAgICAgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICd1bmlmb3JtIGhp
Z2hwIG1hdDIgbWF0MlVuaWZvcm07JyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIG1hdDMgbWF0
M1VuaWZvcm07JyArCisgICAgICAgICd1bmlmb3JtIGhpZ2hwIG1hdDQgbWF0NFVuaWZvcm07JyAr
CisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAg
ICAnIGdsX1Bvc2l0aW9uID0gdmVjNChtYXQyVW5pZm9ybVswXVswXSArIG1hdDNVbmlmb3JtWzBd
WzBdICsgbWF0NFVuaWZvcm1bMF1bMF0pO1xuJyArCisgICAgICAgICd9XG4nOworICAgIHZhciB0
ZXN0RnJhZ1NvdXJjZSA9CisgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAn
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7JyArCisgICAg
ICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAgICAnIGZy
YWdDb2xvciA9IHZlYzQoMC4wKTtcbicgKworICAgICAgICAnfVxuJzsKKworICAgIHZhciBzaGFk
ZXJWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIHZhciBzaGFk
ZXJGcmFnID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisKKyAgICBnbC5z
aGFkZXJTb3VyY2Uoc2hhZGVyVmVydCwgdGVzdFZlcnRTb3VyY2UpOworICAgIGdsLnNoYWRlclNv
dXJjZShzaGFkZXJGcmFnLCB0ZXN0RnJhZ1NvdXJjZSk7CisKKyAgICBnbC5jb21waWxlU2hhZGVy
KHNoYWRlclZlcnQpOworICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyRnJhZyk7CisKKyAgICB2
YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJv
Z3JhbSwgc2hhZGVyVmVydCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlckZy
YWcpOworICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsLnVzZVByb2dyYW0ocHJv
Z3JhbSk7CisKKyAgICB2YXIgbG9jYXRpb247CisKKyAgICB2YXIgbWF0cml4VmFsdWVzID0gWwor
ICAgICAgICAtMS4wLCAwLjEsIDQuMCwgODAwLjAsCisgICAgICAgIDEzLjAsIDU1LjAsIDEyLjAs
IDkxLjAsCisgICAgICAgIC01NS4xLCAxLjEsIDk4LjAsIDE5LjAsCisgICAgICAgIDQxLjAsIDY1
LjAsIDQuMCwgMTIuMAorICAgIF07CisKKyAgICAvLyB0aGUgdmFsdWVzIG9mIHRoZSBtYXRyaXgg
YXJlIHJldHVybmVkIGluIGNvbHVtbiBtYWpvciBvcmRlciBidXQgdGhleSBjYW4gYmUgZ2l2ZW4g
aW4gZWl0aGVyIG9yZGVyCisKKyAgICBsb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAnbWF0MlVuaWZvcm0nKTsKKyAgICB2YXIgbTIgPSBuZXcgRmxvYXQzMkFycmF5KG1h
dHJpeFZhbHVlcy5zbGljZSgwLCAyICogMikpOworICAgIGdsLnVuaWZvcm1NYXRyaXgyZnYobG9j
YXRpb24sIGZhbHNlLCBtMik7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVu
aWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIG0yKSk7CisgICAgZ2wudW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgdHJ1ZSwgbTIpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlV
bmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCB0cmFuc3Bvc2UoMiwgMiwgbTIpKSk7CisKKyAgICBs
b2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAnbWF0M1VuaWZvcm0nKTsK
KyAgICB2YXIgbTMgPSBuZXcgRmxvYXQzMkFycmF5KG1hdHJpeFZhbHVlcy5zbGljZSgwLCAzICog
MykpOworICAgIGdsLnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGZhbHNlLCBtMyk7CisgICAg
dGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24s
IG0zKSk7CisgICAgZ2wudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJ1ZSwgbTMpOworICAg
IHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9u
LCB0cmFuc3Bvc2UoMywgMywgbTMpKSk7CisKKyAgICBsb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAnbWF0NFVuaWZvcm0nKTsKKyAgICB2YXIgbTQgPSBuZXcgRmxvYXQz
MkFycmF5KG1hdHJpeFZhbHVlcy5zbGljZSgwLCA0ICogNCkpOworICAgIGdsLnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24sIGZhbHNlLCBtNCk7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5
LnZlcmlmeVVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIG00KSk7CisgICAgZ2wudW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgdHJ1ZSwgbTQpOworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVy
eS52ZXJpZnlVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCB0cmFuc3Bvc2UoNCwgNCwgbTQpKSk7
CisKKyAgICBnbC51c2VQcm9ncmFtKG51bGwpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXJW
ZXJ0KTsKKyAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyRnJhZyk7CisgICAgZ2wuZGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
ZXMzZkFwaUNhc2UuQXBpQ2FzZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSBzaGFkZXJUeXBlCisgKiBA
cGFyYW0ge251bWJlcn0gcHJlY2lzaW9uVHlwZQorICovCitlczNmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLlByZWNpc2lvbkZvcm1hdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hh
ZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSkgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0
aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgZ2wpOworICAgIHRoaXMubV9zaGFkZXJUeXBlID0gc2hh
ZGVyVHlwZTsKKyAgICB0aGlzLm1fcHJlY2lzaW9uVHlwZSA9IHByZWNpc2lvblR5cGU7Cit9Owor
CitzZXRQYXJlbnRDbGFzcyhlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlByZWNpc2lvbkZvcm1h
dENhc2UsIGVzM2ZBcGlDYXNlLkFwaUNhc2UpOworCitlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlByZWNpc2lvbkZvcm1hdENhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgcmVxdWlyZW1lbnRzID0ge307CisgICAgcmVxdWlyZW1lbnRzW2dsLkxPV19GTE9BVF0gPSBb
MCwgMCwgOF07CisgICAgcmVxdWlyZW1lbnRzW2dsLk1FRElVTV9GTE9BVF0gPSBbMTMsIDEzLCAx
MF07CisgICAgcmVxdWlyZW1lbnRzW2dsLkhJR0hfRkxPQVRdID0gWzEyNywgMTI3LCAyM107Cisg
ICAgcmVxdWlyZW1lbnRzW2dsLkxPV19JTlRdID0gWzgsIDcsIDBdOworICAgIHJlcXVpcmVtZW50
c1tnbC5NRURJVU1fSU5UXSA9IFsxNSwgMTQsIDBdOworICAgIHJlcXVpcmVtZW50c1tnbC5ISUdI
X0lOVF0gPSBbMzEsIDMwLCAwXTsKKworCisgICAgdmFyIGV4cGVjdGVkID0gcmVxdWlyZW1lbnRz
W3RoaXMubV9wcmVjaXNpb25UeXBlXTsKKyAgICB2YXIgcmVzdWx0ID0gZ2wuZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHRoaXMubV9zaGFkZXJUeXBlLCB0aGlzLm1fcHJlY2lzaW9uVHlwZSk7CisK
KyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUHJlY2lzaW9uOicgKworICAgICAgICAgICAgICAg
ICcgcmFuZ2UgbWluID0gJyArIHJlc3VsdC5yYW5nZU1pbiArCisgICAgICAgICAgICAgICAgJyBy
YW5nZSBtYXggPSAnICsgcmVzdWx0LnJhbmdlTWF4ICsKKyAgICAgICAgICAgICAgICAnIHByZWNp
c2lvbiA9ICcgKyByZXN1bHQucHJlY2lzaW9uKTsKKworICAgIGlmICh0aGlzLm1fcHJlY2lzaW9u
VHlwZSA9PSBnbC5ISUdIX0ZMT0FUKSB7CisgICAgICAgIC8vIGhpZ2hwIGZsb2F0IG11c3QgYmUg
SUVFRSA3NTQgc2luZ2xlCisKKyAgICAgICAgdGhpcy5jaGVjayhyZXN1bHQucmFuZ2VNaW4gPT0g
ZXhwZWN0ZWRbMF0gfHwKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZU1heCA9PSBleHBlY3RlZFsx
XSB8fAorICAgICAgICAgICAgcmVzdWx0LnByZWNpc2lvbiA9PSBleHBlY3RlZFsyXSwKKyAgICAg
ICAgICAgICAgICAnSW52YWxpZCBwcmVjaXNpb24gZm9ybWF0LCBleHBlY3RlZDonICsKKyAgICAg
ICAgICAgICAgICAnIHJhbmdlIG1pbiA9ICcgKyBleHBlY3RlZFswXSArCisgICAgICAgICAgICAg
ICAgJyByYW5nZSBtYXggPSAnICsgZXhwZWN0ZWRbMV0gKworICAgICAgICAgICAgICAgICcgcHJl
Y2lzaW9uID0gJyArIGV4cGVjdGVkWzJdKTsKKyAgICB9IGVsc2V7CisgICAgICAgIHRoaXMuY2hl
Y2socmVzdWx0LnJhbmdlTWluID49IGV4cGVjdGVkWzBdIHx8CisgICAgICAgICAgICByZXN1bHQu
cmFuZ2VNYXggPj0gZXhwZWN0ZWRbMV0gfHwKKyAgICAgICAgICAgIHJlc3VsdC5wcmVjaXNpb24g
Pj0gZXhwZWN0ZWRbMl0sCisgICAgICAgICAgICAgICAgJ0ludmFsaWQgcHJlY2lzaW9uIGZvcm1h
dCwgZXhwZWN0ZWQ6JyArCisgICAgICAgICAgICAgICAgJyByYW5nZSBtaW4gPj0gJyArIGV4cGVj
dGVkWzBdICsKKyAgICAgICAgICAgICAgICAnIHJhbmdlIG1heCA+PSAnICsgZXhwZWN0ZWRbMV0g
KworICAgICAgICAgICAgICAgICcgcHJlY2lzaW9uID49ICcgKyBleHBlY3RlZFsyXSk7CisgICAg
fQorfTsKKworLyoqCisqIEBjb25zdHJ1Y3RvcgorKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVx
cFRlc3R9CisqLworZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5TaGFkZXJTdGF0ZVF1ZXJ5VGVz
dHMgPSBmdW5jdGlvbigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdz
aGFkZXInLCAnU2hhZGVyIFN0YXRlIFF1ZXJ5IHRlc3RzJyk7Cit9OworCitlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlNoYWRlclN0YXRlUXVlcnlUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitlczNmU2hhZGVyU3RhdGVRdWVy
eVRlc3RzLlNoYWRlclN0YXRlUXVlcnlUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNm
U2hhZGVyU3RhdGVRdWVyeVRlc3RzLlNoYWRlclN0YXRlUXVlcnlUZXN0czsKKworZXMzZlNoYWRl
clN0YXRlUXVlcnlUZXN0cy5TaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMucHJvdG90eXBlLmluaXQgPSBm
dW5jdGlvbigpIHsKKyAgICAvLyBzaGFkZXIKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hh
ZGVyU3RhdGVRdWVyeVRlc3RzLlNoYWRlclR5cGVDYXNlKCdzaGFkZXJfdHlwZScsICdTSEFERVJf
VFlQRScpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3Rz
LlNoYWRlckNvbXBpbGVTdGF0dXNDYXNlKCdzaGFkZXJfY29tcGlsZV9zdGF0dXMnLCAnQ09NUElM
RV9TVEFUVVMnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlU
ZXN0cy5TaGFkZXJJbmZvTG9nQ2FzZSgnc2hhZGVyX2luZm9fbG9nJywgJ0lORk9fTE9HJykpOwor
ICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuU2hhZGVyU291
cmNlQ2FzZSgnc2hhZGVyX3NvdXJjZScsICdTSEFERVJfU09VUkNFJykpOworCisgICAgLy8gc2hh
ZGVyIGFuZCBwcm9ncmFtCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVl
cnlUZXN0cy5EZWxldGVTdGF0dXNDYXNlKCdkZWxldGVfc3RhdHVzJywgJ0RFTEVURV9TVEFUVVMn
KSk7CisKKyAgICAvLyAvLyB2ZXJ0ZXgtYXR0cmliCisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMz
ZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliSW5pdGlhbENhc2UoJ2N1
cnJlbnRfdmVydGV4X2F0dHJpYl9pbml0aWFsJywgJ0NVUlJFTlRfVkVSVEVYX0FUVFJJQicpKTsK
KyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLkN1cnJlbnRW
ZXJ0ZXhBdHRyaWJGbG9hdENhc2UoJ2N1cnJlbnRfdmVydGV4X2F0dHJpYl9mbG9hdCcsICdDVVJS
RU5UX1ZFUlRFWF9BVFRSSUInKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliSW50Q2FzZSgnY3VycmVudF92ZXJ0ZXhf
YXR0cmliX2ludCcsICdDVVJSRU5UX1ZFUlRFWF9BVFRSSUInKSk7CisgICAgdGhpcy5hZGRDaGls
ZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5DdXJyZW50VmVydGV4QXR0cmliVWludENh
c2UoJ2N1cnJlbnRfdmVydGV4X2F0dHJpYl91aW50JywgJ0NVUlJFTlRfVkVSVEVYX0FUVFJJQicp
KTsKKworICAgIC8vIC8vIHByb2dyYW0KKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVy
U3RhdGVRdWVyeVRlc3RzLlByb2dyYW1JbmZvTG9nQ2FzZSgncHJvZ3JhbV9pbmZvX2xvZycsICdJ
TkZPX0xPRycpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLlByb2dyYW1WYWxpZGF0ZVN0YXR1c0Nhc2UoJ3Byb2dyYW1fdmFsaWRhdGVfc3RhdHVzJywg
J1ZBTElEQVRFX1NUQVRVUycpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlByb2dyYW1BdHRhY2hlZFNoYWRlcnNDYXNlKCdwcm9ncmFtX2F0dGFjaGVk
X3NoYWRlcnMnLCAnQVRUQUNIRURfU0hBREVSUycpKTsKKworICAgIHRoaXMuYWRkQ2hpbGQobmV3
IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1OYW1lQ2FzZSgn
cHJvZ3JhbV9hY3RpdmVfdW5pZm9ybV9uYW1lJywgJ0FDVElWRV9VTklGT1JNUycpKTsKKyAgICB0
aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlByb2dyYW1Vbmlmb3Jt
Q2FzZSgncHJvZ3JhbV9hY3RpdmVfdW5pZm9ybV90eXBlcycsICdVTklGT1JNX1RZUEUsIFVOSUZP
Uk1fU0laRSwgYW5kIFVOSUZPUk1fSVNfUk9XX01BSk9SJykpOworICAgIHRoaXMuYWRkQ2hpbGQo
bmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJvZ3JhbUFjdGl2ZVVuaWZvcm1CbG9ja3ND
YXNlICgicHJvZ3JhbV9hY3RpdmVfdW5pZm9ybV9ibG9ja3MiLCAiQUNUSVZFX1VOSUZPUk1fQkxP
Q0tfeCIpKTsKKworICAgIC8vIHRyYW5zZm9ybSBmZWVkYmFjaworICAgIHRoaXMuYWRkQ2hpbGQo
bmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlKCd0cmFu
c2Zvcm1fZmVlZGJhY2snLCAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFLCBUUkFOU0ZP
Uk1fRkVFREJBQ0tfVkFSWUlOR1MsIFRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5H
VEgnKSk7CisKKyAgICAvLyBhdHRyaWJ1dGUgcmVsYXRlZAorICAgIHRoaXMuYWRkQ2hpbGQobmV3
IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuQWN0aXZlQXR0cmlidXRlc0Nhc2UoJ2FjdGl2ZV9h
dHRyaWJ1dGVzJywgJ0FDVElWRV9BVFRSSUJVVEVTIGFuZCBBQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5WZXJ0ZXhBdHRyaWJ1dGVTaXplQ2FzZSgndmVydGV4X2F0dHJpYl9zaXplJywgJ1ZFUlRFWF9B
VFRSSUJfQVJSQVlfU0laRScpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZVR5cGVDYXNlKCd2ZXJ0ZXhfYXR0cmliX3R5cGUn
LCAnVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFJykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVz
M2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlU3RyaWRlQ2FzZSgndmVydGV4
X2F0dHJpYl9zdHJpZGUnLCAnVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUnKSk7CisgICAgdGhp
cy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVO
b3JtYWxpemVkQ2FzZSgndmVydGV4X2F0dHJpYl9ub3JtYWxpemVkJywgJ1ZFUlRFWF9BVFRSSUJf
QVJSQVlfTk9STUFMSVpFRCcpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3Rh
dGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZUludGVnZXJDYXNlKCd2ZXJ0ZXhfYXR0cmliX2lu
dGVnZXInLCAnVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSJykpOworICAgIHRoaXMuYWRkQ2hp
bGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVmVydGV4QXR0cmlidXRlRW5hYmxlZENh
c2UoJ3ZlcnRleF9hdHRyaWJfYXJyYXlfZW5hYmxlZCcsICdWRVJURVhfQVRUUklCX0FSUkFZX0VO
QUJMRUQnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0
cy5WZXJ0ZXhBdHRyaWJ1dGVEaXZpc29yQ2FzZSgndmVydGV4X2F0dHJpYl9hcnJheV9kaXZpc29y
JywgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUicpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5l
dyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlZlcnRleEF0dHJpYnV0ZUJ1ZmZlckJpbmRpbmdD
YXNlKCd2ZXJ0ZXhfYXR0cmliX2FycmF5X2J1ZmZlcl9iaW5kaW5nJywgJ1ZFUlRFWF9BVFRSSUJf
QVJSQVlfQlVGRkVSX0JJTkRJTkcnKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRl
clN0YXRlUXVlcnlUZXN0cy5WZXJ0ZXhBdHRyaWJ1dGVPZmZzZXRDYXNlKCd2ZXJ0ZXhfYXR0cmli
X29mZnNldCcsICdWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVInKSk7CisKKyAgICAvLyB1bmlm
b3JtIHZhbHVlcworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVz
dHMuVW5pZm9ybVZhbHVlRmxvYXRDYXNlKCd1bmlmb3JtX3ZhbHVlX2Zsb2F0JywgJ0dldFVuaWZv
cm0qJykpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMu
VW5pZm9ybVZhbHVlSW50Q2FzZSgndW5pZm9ybV92YWx1ZV9pbnQnLCAnR2V0VW5pZm9ybSonKSk7
CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3Jt
VmFsdWVVaW50Q2FzZSgndW5pZm9ybV92YWx1ZV91aW50JywgJ0dldFVuaWZvcm0qJykpOworICAg
IHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuVW5pZm9ybVZhbHVl
Qm9vbGVhbkNhc2UoJ3VuaWZvcm1fdmFsdWVfYm9vbGVhbicsICdHZXRVbmlmb3JtKicpKTsKKyAg
ICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlVuaWZvcm1WYWx1
ZVNhbXBsZXJDYXNlKCd1bmlmb3JtX3ZhbHVlX3NhbXBsZXInLCAnR2V0VW5pZm9ybSonKSk7Cisg
ICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFs
dWVBcnJheUNhc2UoJ3VuaWZvcm1fdmFsdWVfYXJyYXknLCAnR2V0VW5pZm9ybSonKSk7CisgICAg
dGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5Vbmlmb3JtVmFsdWVN
YXRyaXhDYXNlKCd1bmlmb3JtX3ZhbHVlX21hdHJpeCcsICdHZXRVbmlmb3JtKicpKTsKKworICAg
IC8vIHByZWNpc2lvbiBmb3JtYXQgcXVlcnkKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hh
ZGVyU3RhdGVRdWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl92ZXJ0ZXhf
bG93cF9mbG9hdCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5WRVJURVhfU0hBREVS
LCBnbC5MT1dfRkxPQVQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl92ZXJ0ZXhfbWVkaXVtcF9m
bG9hdCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5WRVJURVhfU0hBREVSLCBnbC5N
RURJVU1fRkxPQVQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVy
eVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl92ZXJ0ZXhfaGlnaHBfZmxvYXQn
LCAnR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JywgZ2wuVkVSVEVYX1NIQURFUiwgZ2wuSElHSF9G
TE9BVCkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMu
UHJlY2lzaW9uRm9ybWF0Q2FzZSgncHJlY2lzaW9uX3ZlcnRleF9sb3dwX2ludCcsICdHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5WRVJURVhfU0hBREVSLCBnbC5MT1dfSU5UKSk7CisgICAg
dGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5QcmVjaXNpb25Gb3Jt
YXRDYXNlKCdwcmVjaXNpb25fdmVydGV4X21lZGl1bXBfaW50JywgJ0dldFNoYWRlclByZWNpc2lv
bkZvcm1hdCcsIGdsLlZFUlRFWF9TSEFERVIsIGdsLk1FRElVTV9JTlQpKTsKKyAgICB0aGlzLmFk
ZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2Uo
J3ByZWNpc2lvbl92ZXJ0ZXhfaGlnaHBfaW50JywgJ0dldFNoYWRlclByZWNpc2lvbkZvcm1hdCcs
IGdsLlZFUlRFWF9TSEFERVIsIGdsLkhJR0hfSU5UKSk7CisgICAgdGhpcy5hZGRDaGlsZChuZXcg
ZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5QcmVjaXNpb25Gb3JtYXRDYXNlKCdwcmVjaXNpb25f
ZnJhZ21lbnRfbG93cF9mbG9hdCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5GUkFH
TUVOVF9TSEFERVIsIGdsLkxPV19GTE9BVCkpOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZT
aGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuUHJlY2lzaW9uRm9ybWF0Q2FzZSgncHJlY2lzaW9uX2ZyYWdt
ZW50X21lZGl1bXBfZmxvYXQnLCAnR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JywgZ2wuRlJBR01F
TlRfU0hBREVSLCBnbC5NRURJVU1fRkxPQVQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNm
U2hhZGVyU3RhdGVRdWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl9mcmFn
bWVudF9oaWdocF9mbG9hdCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5GUkFHTUVO
VF9TSEFERVIsIGdsLkhJR0hfRkxPQVQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hh
ZGVyU3RhdGVRdWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl9mcmFnbWVu
dF9sb3dwX2ludCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5GUkFHTUVOVF9TSEFE
RVIsIGdsLkxPV19JTlQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl9mcmFnbWVudF9tZWRpdW1w
X2ludCcsICdHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLCBnbC5GUkFHTUVOVF9TSEFERVIsIGds
Lk1FRElVTV9JTlQpKTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyU3RhdGVRdWVy
eVRlc3RzLlByZWNpc2lvbkZvcm1hdENhc2UoJ3ByZWNpc2lvbl9mcmFnbWVudF9oaWdocF9pbnQn
LCAnR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JywgZ2wuRlJBR01FTlRfU0hBREVSLCBnbC5ISUdI
X0lOVCkpOworfTsKKworLyoqCisqIFJ1biB0ZXN0CisqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5n
Q29udGV4dH0gY29udGV4dAorKi8KK2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMucnVuID0gZnVu
Y3Rpb24oY29udGV4dCkgeworICAgIGdsID0gY29udGV4dDsKKyAgICAvL1NldCB1cCBUZXN0IFJv
b3QgcGFyYW1ldGVycworICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBz
dGF0ZS5zZXRSb290KG5ldyBlczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLlNoYWRlclN0YXRlUXVl
cnlUZXN0cygpKTsKKworICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMg
dGVzdCBzZXJpZXMuCisgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0YXRlLnRlc3RDYXNlcy5mdWxs
TmFtZSgpKTsKKyAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRpb24o
KSk7CisKKyAgICB0cnkgeworICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAgICAgIHRjdVRl
c3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgIH0KKyAgICBjYXRjaCAoZXJyKSB7CisgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5y
dW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUo
KTsKKyAgICB9Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hhZGVyU3Ry
dWN0VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlclN0cnVjdFRlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNjMjM1NDVkNzU5OWU3NmI0ZjgwNWVjNmM3ZGYyY2RkODMwMGJlMGIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlNoYWRlclN0cnVjdFRlc3RzLmpzCkBAIC0wLDAgKzEsMTk1
NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFt
IE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJ
UywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3RydWN0VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1h
dGgnKTsKKy8vIGdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScpOworZ29vZy5yZXF1
aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1U3RyaW5nVGVtcGxhdGUnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKKwl2YXIgZXMzZlNoYWRlclN0cnVjdFRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2hhZGVyU3RydWN0VGVzdHM7CisJdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZTsKKwl2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZTsKKwl2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVV
dGlsOworCXZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisJLy8g
dmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisJdmFy
IGdsc1NoYWRlclJlbmRlckNhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNl
OworCXZhciBnbHVUZXh0dXJlID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlOworCXZhciB0
Y3VTdHJpbmdUZW1wbGF0ZSA9IGZyYW1ld29yay5jb21tb24udGN1U3RyaW5nVGVtcGxhdGU7CisK
KwkvKiogQHR5cGVkZWYge2Z1bmN0aW9uKFdlYkdMUHJvZ3JhbSwgQXJyYXk8bnVtYmVyPil9ICov
CisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNldHVwVW5pZm9ybXNGdW5jOworCisJLyoqIEBjb25z
dCB7bnVtYmVyfSAqLyBlczNmU2hhZGVyU3RydWN0VGVzdHMuVEVYVFVSRV9CUklDSyA9IDA7CisK
KworCS8qKgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHtnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlclJlbmRlckNhc2V9CisJICogQHBhcmFtICB7c3RyaW5nfSBuYW1lCisJICogQHBh
cmFtICB7c3RyaW5nfSBkZXNjcmlwdGlvbgorCSAqIEBwYXJhbSAge2Jvb2xlYW59IGlzVmVydGV4
Q2FzZQorCSAqIEBwYXJhbSAge2Jvb2xlYW59IHVzZXNUZXh0dXJlcworCSAqIEBwYXJhbSAge2ds
c1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbEZ1bmN9IGV2YWxGdW5jCisJICogQHBhcmFtICB7
P2VzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5TZXR1cFVuaWZvcm1zRnVuY30gc2V0dXBVbmlmb3Jtc0Z1
bmMKKwkgKiBAcGFyYW0gIHtzdHJpbmd9IHZlcnRTaGFkZXJTb3VyY2UKKwkgKiBAcGFyYW0gIHtz
dHJpbmd9IGZyYWdTaGFkZXJTb3VyY2UKKwkgKi8KKwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hh
ZGVyU3RydWN0Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2Us
IHVzZXNUZXh0dXJlcywgZXZhbEZ1bmMsIHNldHVwVW5pZm9ybXNGdW5jLCB2ZXJ0U2hhZGVyU291
cmNlLCBmcmFnU2hhZGVyU291cmNlKSB7CisJCWdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVu
ZGVyQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWxG
dW5jKTsKKwkJLyoqIEB0eXBlIHs/ZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNldHVwVW5pZm9ybXNG
dW5jfSAqLyB0aGlzLm1fc2V0dXBVbmlmb3JtcyA9IHNldHVwVW5pZm9ybXNGdW5jOworCQkvKiog
QHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV91c2VzVGV4dHVyZSA9IHVzZXNUZXh0dXJlczsKKwkJ
LyoqIEB0eXBlIHtnbHVUZXh0dXJlLlRleHR1cmUyRH0gKi8gdGhpcy5tX2JyaWNrVGV4dHVyZSA9
IG51bGw7CisJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fdmVydFNoYWRlclNvdXJjZSA9
IHZlcnRTaGFkZXJTb3VyY2U7CisJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fZnJhZ1No
YWRlclNvdXJjZSA9IGZyYWdTaGFkZXJTb3VyY2U7CisJfTsKKworCWVzM2ZTaGFkZXJTdHJ1Y3RU
ZXN0cy5TaGFkZXJTdHJ1Y3RDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzU2hhZGVy
UmVuZGVyQ2FzZS5TaGFkZXJSZW5kZXJDYXNlLnByb3RvdHlwZSk7CisJZXMzZlNoYWRlclN0cnVj
dFRlc3RzLlNoYWRlclN0cnVjdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlNoYWRl
clN0cnVjdFRlc3RzLlNoYWRlclN0cnVjdENhc2U7CisKKwllczNmU2hhZGVyU3RydWN0VGVzdHMu
U2hhZGVyU3RydWN0Q2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworCQlpZiAodGhp
cy5tX3VzZXNUZXh0dXJlKSB7CisJCQl0aGlzLm1fYnJpY2tUZXh0dXJlID0gZ2x1VGV4dHVyZS50
ZXh0dXJlMkRGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIGdsLlJHQkE4LCAyNTYsIDI1Nik7CisJCQl2
YXIgcmVmID0gdGhpcy5tX2JyaWNrVGV4dHVyZS5nZXRSZWZUZXh0dXJlKCk7CisJCQlmb3IgKHZh
ciBpID0gMCA7IGkgPCByZWYuZ2V0TnVtTGV2ZWxzKCk7IGkrKykgeworCQkJCXJlZi5hbGxvY0xl
dmVsKGkpOworCQkJCXRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChyZWYuZ2V0TGV2ZWwoaSks
IDgsIFswLjIsIDAuNywgMC4xLCAxLjBdLCBbMC43LCAwLjEsIDAuNSwgMC44XSk7CisJCQl9CisJ
CQl0aGlzLm1fYnJpY2tUZXh0dXJlLnVwbG9hZCgpOworCisJCQl0aGlzLm1fdGV4dHVyZXMucHVz
aChuZXcgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5UZXh0dXJlQmluZGluZygKKwkJCQl0aGlzLm1fYnJp
Y2tUZXh0dXJlLAorCQkJCW5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIoCisJCQkJCXRjdVRleHR1cmUu
V3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwKKwkJCQkJdGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9U
T19FREdFLAorCQkJCQl0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0UsCisJCQkJCXRj
dVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVIsCisJCQkJCXRjdVRleHR1cmUuRmlsdGVyTW9kZS5M
SU5FQVIpKSk7CisKKwkJCWFzc2VydE1zZ09wdGlvbnModGhpcy5tX3RleHR1cmVzLmxlbmd0aCA9
PT0gMSwgJ09ubHkgb25lIHRleHR1cmUgcmVxdWlyZWQnLCBmYWxzZSwgdHJ1ZSk7CisJCX0KKwkJ
dGhpcy5wb3N0aW5pdCgpOworCX07CisKKwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3Ry
dWN0Q2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7CisJCWdsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuZGVpbml0LmNhbGwodGhpcyk7CisJCXRo
aXMubV9icmlja1RleHR1cmUgPSBudWxsOworCX07CisKKwkvKioKKwkgKiBAcGFyYW0gIHtXZWJH
TFByb2dyYW19IHByb2dyYW1JRAorCSAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IGNvbnN0Q29v
cmRzCisJICovCisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNoYWRlclN0cnVjdENhc2UucHJvdG90
eXBlLnNldHVwVW5pZm9ybXMgPSBmdW5jdGlvbihwcm9ncmFtSUQsIGNvbnN0Q29vcmRzKSB7CisJ
CWdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuc2V0dXBVbmlm
b3Jtcy5jYWxsKHRoaXMsIHByb2dyYW1JRCwgY29uc3RDb29yZHMpOworCQlpZiAodGhpcy5tX3Nl
dHVwVW5pZm9ybXMpCisJCQl0aGlzLm1fc2V0dXBVbmlmb3Jtcyhwcm9ncmFtSUQsIGNvbnN0Q29v
cmRzKTsKKwl9OworCisJLyoqCisJICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKwkgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKwkgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVydGV4Q2FzZQor
CSAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlc1RleHR1cmVzCisJICogQHBhcmFtIHtnbHNTaGFkZXJS
ZW5kZXJDYXNlLlNoYWRlckV2YWxGdW5jfSBldmFsRnVuYworCSAqIEBwYXJhbSB7P2VzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5TZXR1cFVuaWZvcm1zRnVuY30gc2V0dXBVbmlmb3JtcworCSAqIEBwYXJh
bSB7c3RyaW5nfSBzaGFkZXJTcmMKKwkgKi8KKwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVy
U3RydWN0Q2FzZS5jcmVhdGVTdHJ1Y3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24s
IGlzVmVydGV4Q2FzZSwgdXNlc1RleHR1cmVzLCBldmFsRnVuYywgc2V0dXBVbmlmb3Jtcywgc2hh
ZGVyU3JjKSB7CisJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZGVmYXVsdFZlcnRTcmMgPQor
CQkJJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisJCQknaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xu
JyArCisJCQknaW4gaGlnaHAgdmVjNCBhX2Nvb3JkcztcbicgKworCQkJJ291dCBtZWRpdW1wIHZl
YzQgdl9jb29yZHM7XG5cbicgKworCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJJ3tcbicg
KworCQkJJwl2X2Nvb3JkcyA9IGFfY29vcmRzO1xuJyArCisJCQknCWdsX1Bvc2l0aW9uID0gYV9w
b3NpdGlvbjtcbicgKworCQkJJ31cbic7CisJCS8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZGVm
YXVsdEZyYWdTcmMgPQorCQkJJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisJCQknaW4gbWVkaXVtcCB2
ZWM0IHZfY29sb3I7XG4nICsKKwkJCSdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2
ZWM0IG9fY29sb3I7XG5cbicgKworCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJJ3tcbicg
KworCQkJJwlvX2NvbG9yID0gdl9jb2xvcjtcbicgKworCQkJJ31cbic7CisKKwkJLy8gRmlsbCBp
biBzcGVjaWFsaXphdGlvbiBwYXJhbWV0ZXJzLgorCQl2YXIgc3BQYXJhbXMgPSB7fTsKKwkJaWYg
KGlzVmVydGV4Q2FzZSkgeworCQkJc3BQYXJhbXNbIkhFQURFUiJdID0KKwkJCQkiI3ZlcnNpb24g
MzAwIGVzXG4iICsKKwkJCQkiaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuIiArCisJCQkJImlu
IGhpZ2hwIHZlYzQgYV9jb29yZHM7XG4iICsKKwkJCQkib3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9y
OyI7CisJCQlzcFBhcmFtc1siQ09PUkRTIl0JCT0gImFfY29vcmRzIjsKKwkJCXNwUGFyYW1zWyJE
U1QiXQkJCT0gInZfY29sb3IiOworCQkJc3BQYXJhbXNbIkFTU0lHTl9QT1MiXQk9ICJnbF9Qb3Np
dGlvbiA9IGFfcG9zaXRpb247IjsKKwkJfQorCQllbHNlIHsKKwkJCXNwUGFyYW1zWyJIRUFERVIi
XQk9CisJCQkJIiN2ZXJzaW9uIDMwMCBlc1xuIiArCisJCQkJImluIG1lZGl1bXAgdmVjNCB2X2Nv
b3JkcztcbiIgKworCQkJCSJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9f
Y29sb3I7IjsKKwkJCXNwUGFyYW1zWyJDT09SRFMiXQkJCT0gInZfY29vcmRzIjsKKwkJCXNwUGFy
YW1zWyJEU1QiXQkJCQk9ICJvX2NvbG9yIjsKKwkJCXNwUGFyYW1zWyJBU1NJR05fUE9TIl0JCT0g
IiI7CisJCX0KKworCQlpZiAoaXNWZXJ0ZXhDYXNlKQorCQkJcmV0dXJuIG5ldyBlczNmU2hhZGVy
U3RydWN0VGVzdHMuU2hhZGVyU3RydWN0Q2FzZShuYW1lLCBkZXNjcmlwdGlvbiwgaXNWZXJ0ZXhD
YXNlLCB1c2VzVGV4dHVyZXMsIGV2YWxGdW5jLCBzZXR1cFVuaWZvcm1zLCB0Y3VTdHJpbmdUZW1w
bGF0ZS5zcGVjaWFsaXplKHNoYWRlclNyYywgc3BQYXJhbXMpLCBkZWZhdWx0RnJhZ1NyYyk7CisJ
CWVsc2UKKwkJCXJldHVybiBuZXcgZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNoYWRlclN0cnVjdENh
c2UobmFtZSwgZGVzY3JpcHRpb24sIGlzVmVydGV4Q2FzZSwgdXNlc1RleHR1cmVzLCBldmFsRnVu
Yywgc2V0dXBVbmlmb3JtcywgZGVmYXVsdFZlcnRTcmMsIHRjdVN0cmluZ1RlbXBsYXRlLnNwZWNp
YWxpemUoc2hhZGVyU3JjLCBzcFBhcmFtcykpOworCX07CisKKwkvKioKKwkgKiBAY29uc3RydWN0
b3IKKwkgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisJICovCisJZXMzZlNoYWRl
clN0cnVjdFRlc3RzLkxvY2FsU3RydWN0VGVzdHMgPSBmdW5jdGlvbigpIHsKKwkJdGN1VGVzdENh
c2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnbG9jYWwnLCAnTG9jYWwgc3RydWN0cycpOworCQl0aGlz
Lm1ha2VFeGVjdXRhYmxlKCk7CisJfTsKKworCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5Mb2NhbFN0
cnVjdFRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3Qu
cHJvdG90eXBlKTsKKwllczNmU2hhZGVyU3RydWN0VGVzdHMuTG9jYWxTdHJ1Y3RUZXN0cy5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyU3RydWN0VGVzdHMuTG9jYWxTdHJ1Y3RUZXN0
czsKKworCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5Mb2NhbFN0cnVjdFRlc3RzLnByb3RvdHlwZS5p
bml0ID0gZnVuY3Rpb24oKSB7CisJCXZhciBjdXJyZW50Q3R4ID0gdGhpczsKKwkJZnVuY3Rpb24g
TG9jYWxTdHJ1Y3RDYXNlKG5hbWUsIGRlc2NyaXB0aW9uLCBzaGFkZXJTb3VyY2UsIGV2YWxGdW5j
dGlvbikgeworCQkJY3VycmVudEN0eC5hZGRDaGlsZChlczNmU2hhZGVyU3RydWN0VGVzdHMuU2hh
ZGVyU3RydWN0Q2FzZS5jcmVhdGVTdHJ1Y3RDYXNlKG5hbWUgKyAiX3ZlcnRleCIsIGRlc2NyaXB0
aW9uLCB0cnVlLCBmYWxzZSwgZXZhbEZ1bmN0aW9uLCBudWxsLCBzaGFkZXJTb3VyY2UpKTsKKwkJ
CWN1cnJlbnRDdHguYWRkQ2hpbGQoZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNoYWRlclN0cnVjdENh
c2UuY3JlYXRlU3RydWN0Q2FzZShuYW1lICsgIl9mcmFnbWVudCIsIGRlc2NyaXB0aW9uLCBmYWxz
ZSwgZmFsc2UsIGV2YWxGdW5jdGlvbiwgbnVsbCwgc2hhZGVyU291cmNlKSk7CisJCX07CisKKwkJ
TG9jYWxTdHJ1Y3RDYXNlKCdiYXNpYycsICdCYXNpYyBzdHJ1Y3QgdXNhZ2UnLAorCQkJJyR7SEVB
REVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQknXG4nICsKKwkJCSdz
dHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCW1lZGl1bXAg
dmVjMwliO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyAr
CisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcyA9IFMoJHtD
T09SRFN9LngsIHZlYzMoMC4wKSwgdWlfb25lKTtcbicgKworCQkJJwlzLmIgPSAke0NPT1JEU30u
eXp3O1xuJyArCisJCQknCSR7RFNUfSA9IHZlYzQocy5hLCBzLmIueCwgcy5iLnksIHMuYyk7XG4n
ICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxuJywKKwkJCWZ1bmN0aW9uKGMpIHsK
KwkJCQljLmNvbG9yWzBdID0gYy5jb29yZHNbMF07CisJCQkJYy5jb2xvclsxXSA9IGMuY29vcmRz
WzFdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jkc1syXTsKKwkJCX0pOworCisJCUxvY2FsU3Ry
dWN0Q2FzZSgnbmVzdGVkJywgIk5lc3RlZCBzdHJ1Y3QiLAorCQkJJyR7SEVBREVSfVxuJyArCisJ
CQkidW5pZm9ybSBpbnQgdWlfemVybztcbiIgKworCQkJInVuaWZvcm0gaW50IHVpX29uZTtcbiIg
KworCQkJIlxuIiArCisJCQkic3RydWN0IFQge1xuIiArCisJCQkiCWludAkJCQlhO1xuIiArCisJ
CQkiCW1lZGl1bXAgdmVjMgliO1xuIiArCisJCQkifTtcbiIgKworCQkJInN0cnVjdCBTIHtcbiIg
KworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJVAkJCQliO1xuJyArCisJCQknCWlu
dAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lk
KVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcyA9IFMoJHtDT09SRFN9LngsIFQoMCwgdmVjMigw
LjApKSwgdWlfb25lKTtcbicgKworCQkJJwlzLmIgPSBUKHVpX3plcm8sICR7Q09PUkRTfS55eik7
XG4nICsKKwkJCScJJHtEU1R9ID0gdmVjNChzLmEsIHMuYi5iLCBzLmIuYSArIHMuYyk7XG4nICsK
KwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxuJywKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJ
CQljLmNvbG9yWzBdID0gYy5jb29yZHNbMF07CisJCQkJYy5jb2xvclsxXSA9IGMuY29vcmRzWzFd
OworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jkc1syXTsKKwkJCX0pOworCisJCUxvY2FsU3RydWN0
Q2FzZSgnYXJyYXlfbWVtYmVyJywgIlN0cnVjdCB3aXRoIGFycmF5IG1lbWJlciIsCisJCQknJHtI
RUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCSdcbicgKworCQkJ
J3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVt
cCBmbG9hdAliWzNdO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJ
J1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcztc
bicgKworCQkJJwlzLmEgPSAke0NPT1JEU30udztcbicgKworCQkJJwlzLmMgPSB1aV9vbmU7XG4n
ICsKKwkJCScJcy5iWzBdID0gJHtDT09SRFN9Lno7XG4nICsKKwkJCScJcy5iWzFdID0gJHtDT09S
RFN9Lnk7XG4nICsKKwkJCScJcy5iWzJdID0gJHtDT09SRFN9Lng7XG4nICsKKwkJCScJJHtEU1R9
ID0gdmVjNChzLmEsIHMuYlswXSwgcy5iWzFdLCBzLmMpO1xuJyArCisJCQknCSR7QVNTSUdOX1BP
U31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMu
Y29vcmRzWzNdOworCQkJCWMuY29sb3JbMV0gPSBjLmNvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzJd
ID0gYy5jb29yZHNbMV07CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENhc2UoJ2FycmF5X21lbWJl
cl9keW5hbWljX2luZGV4JywgIlN0cnVjdCB3aXRoIGFycmF5IG1lbWJlciwgZHluYW1pYyBpbmRl
eGluZyIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyAr
CisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdHdvO1xu
JyArCisJCQknXG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlh
O1xuJyArCisJCQknCW1lZGl1bXAgZmxvYXQJYlszXTtcbicgKworCQkJJwlpbnQJCQkJYztcbicg
KworCQkJJ307XG4nICsKKwkJCSdcbicgKworCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJ
J3tcbicgKworCQkJJwlTIHM7XG4nICsKKwkJCScJcy5hID0gJHtDT09SRFN9Lnc7XG4nICsKKwkJ
CScJcy5jID0gdWlfb25lO1xuJyArCisJCQknCXMuYlswXSA9ICR7Q09PUkRTfS56O1xuJyArCisJ
CQknCXMuYlsxXSA9ICR7Q09PUkRTfS55O1xuJyArCisJCQknCXMuYlsyXSA9ICR7Q09PUkRTfS54
O1xuJyArCisJCQknCSR7RFNUfSA9IHZlYzQocy5iW3VpX29uZV0sIHMuYlt1aV96ZXJvXSwgcy5i
W3VpX3R3b10sIHMuYyk7XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxuJywK
KwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5jb29yZHNbMV07CisJCQkJYy5j
b2xvclsxXSA9IGMuY29vcmRzWzJdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jkc1swXTsKKwkJ
CX0pOworCisJCUxvY2FsU3RydWN0Q2FzZSgnc3RydWN0X2FycmF5JywgIlN0cnVjdCBhcnJheSIs
CisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkn
dW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdHdvO1xuJyArCisJ
CQknXG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyAr
CisJCQknCW1lZGl1bXAgaW50CQliO1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkn
dm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCVMgc1szXTtcbicgKworCQkJ
JwlzWzBdID0gUygke0NPT1JEU30ueCwgdWlfemVybyk7XG4nICsKKwkJCScJc1sxXS5hID0gJHtD
T09SRFN9Lnk7XG4nICsKKwkJCScJc1sxXS5iID0gdWlfb25lO1xuJyArCisJCQknCXNbMl0gPSBT
KCR7Q09PUkRTfS56LCB1aV90d28pO1xuJyArCisJCQknCSR7RFNUfSA9IHZlYzQoc1syXS5hLCBz
WzFdLmEsIHNbMF0uYSwgc1syXS5iIC0gc1sxXS5iICsgc1swXS5iKTtcbicgKworCQkJJwkke0FT
U0lHTl9QT1N9XG4nICsKKwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3Jb
MF0gPSBjLmNvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMV07CisJCQkJYy5j
b2xvclsyXSA9IGMuY29vcmRzWzBdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdzdHJ1
Y3RfYXJyYXlfZHluYW1pY19pbmRleCcsICJTdHJ1Y3QgYXJyYXkgd2l0aCBkeW5hbWljIGluZGV4
aW5nIiwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3plcm87XG4nICsK
KwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV90d287XG4n
ICsKKwkJCSdcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7
XG4nICsKKwkJCScJbWVkaXVtcCBpbnQJCWI7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsK
KwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBzWzNdO1xuJyAr
CisJCQknCXNbMF0gPSBTKCR7Q09PUkRTfS54LCB1aV96ZXJvKTtcbicgKworCQkJJwlzWzFdLmEg
PSAke0NPT1JEU30ueTtcbicgKworCQkJJwlzWzFdLmIgPSB1aV9vbmU7XG4nICsKKwkJCScJc1sy
XSA9IFMoJHtDT09SRFN9LnosIHVpX3R3byk7XG4nICsKKwkJCScJJHtEU1R9ID0gdmVjNChzW3Vp
X3R3b10uYSwgc1t1aV9vbmVdLmEsIHNbdWlfemVyb10uYSwgc1t1aV90d29dLmIgLSBzW3VpX29u
ZV0uYiArIHNbdWlfemVyb10uYik7XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQkn
fVxuJywKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5jb29yZHNbMl07CisJ
CQkJYy5jb2xvclsxXSA9IGMuY29vcmRzWzFdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jkc1sw
XTsKKwkJCX0pOworCisJCUxvY2FsU3RydWN0Q2FzZSgnbmVzdGVkX3N0cnVjdF9hcnJheScsICJO
ZXN0ZWQgc3RydWN0IGFycmF5IiwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gaW50
IHVpX3plcm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCSd1bmlmb3Jt
IGludCB1aV90d287XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfdHdvO1xuJyAr
CisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX3RocmVlO1xuJyArCisJCQkndW5pZm9ybSBt
ZWRpdW1wIGZsb2F0IHVmX2ZvdXI7XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZf
aGFsZjtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl90aGlyZDtcbicgKworCQkJ
J3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9mb3VydGg7XG4nICsKKwkJCSdcbicgKworCQkJJ3N0
cnVjdCBUIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVtcCB2
ZWMyCWJbMl07XG4nICsKKwkJCSd9O1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknCW1l
ZGl1bXAgZmxvYXQJYTtcbicgKworCQkJJwlUCQkJCWJbM107XG4nICsKKwkJCScJaW50CQkJCWM7
XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsK
KwkJCSd7XG4nICsKKwkJCScJUyBzWzJdO1xuJyArCisJCQknXG4nICsKKwkJCScJLy8gU1swXVxu
JyArCisJCQknCXNbMF0uYSAgICAgICAgID0gJHtDT09SRFN9Lng7XG4nICsKKwkJCScJc1swXS5i
WzBdLmEgICAgPSB1Zl9oYWxmO1xuJyArCisJCQknCXNbMF0uYlswXS5iWzBdID0gJHtDT09SRFN9
Lnh5O1xuJyArCisJCQknCXNbMF0uYlswXS5iWzFdID0gJHtDT09SRFN9Lnp3O1xuJyArCisJCQkn
CXNbMF0uYlsxXS5hICAgID0gdWZfdGhpcmQ7XG4nICsKKwkJCScJc1swXS5iWzFdLmJbMF0gPSAk
e0NPT1JEU30uenc7XG4nICsKKwkJCScJc1swXS5iWzFdLmJbMV0gPSAke0NPT1JEU30ueHk7XG4n
ICsKKwkJCScJc1swXS5iWzJdLmEgICAgPSB1Zl9mb3VydGg7XG4nICsKKwkJCScJc1swXS5iWzJd
LmJbMF0gPSAke0NPT1JEU30ueHo7XG4nICsKKwkJCScJc1swXS5iWzJdLmJbMV0gPSAke0NPT1JE
U30ueXc7XG4nICsKKwkJCScJc1swXS5jICAgICAgICAgPSB1aV96ZXJvO1xuJyArCisJCQknXG4n
ICsKKwkJCScJLy8gU1sxXVxuJyArCisJCQknCXNbMV0uYSAgICAgICAgID0gJHtDT09SRFN9Lnc7
XG4nICsKKwkJCScJc1sxXS5iWzBdLmEgICAgPSB1Zl90d287XG4nICsKKwkJCScJc1sxXS5iWzBd
LmJbMF0gPSAke0NPT1JEU30ueHg7XG4nICsKKwkJCScJc1sxXS5iWzBdLmJbMV0gPSAke0NPT1JE
U30ueXk7XG4nICsKKwkJCScJc1sxXS5iWzFdLmEgICAgPSB1Zl90aHJlZTtcbicgKworCQkJJwlz
WzFdLmJbMV0uYlswXSA9ICR7Q09PUkRTfS56ejtcbicgKworCQkJJwlzWzFdLmJbMV0uYlsxXSA9
ICR7Q09PUkRTfS53dztcbicgKworCQkJJwlzWzFdLmJbMl0uYSAgICA9IHVmX2ZvdXI7XG4nICsK
KwkJCScJc1sxXS5iWzJdLmJbMF0gPSAke0NPT1JEU30ueXg7XG4nICsKKwkJCScJc1sxXS5iWzJd
LmJbMV0gPSAke0NPT1JEU30ud3o7XG4nICsKKwkJCScJc1sxXS5jICAgICAgICAgPSB1aV9vbmU7
XG4nICsKKwkJCSdcbicgKworCQkJJwltZWRpdW1wIGZsb2F0IHIgPSAoc1swXS5iWzFdLmJbMF0u
eCArIHNbMV0uYlsyXS5iWzFdLnkpICogc1swXS5iWzBdLmE7IC8vICh6ICsgeikgKiAwLjVcbicg
KworCQkJJwltZWRpdW1wIGZsb2F0IGcgPSBzWzFdLmJbMF0uYlswXS55ICogc1swXS5iWzJdLmEg
KiBzWzFdLmJbMl0uYTsgLy8geCAqIDAuMjUgKiA0XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCBi
ID0gKHNbMF0uYlsyXS5iWzFdLnkgKyBzWzBdLmJbMV0uYlswXS55ICsgc1sxXS5hKSAqIHNbMF0u
YlsxXS5hOyAvLyAodyArIHcgKyB3KSAqIDAuMzMzXG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCBh
ID0gZmxvYXQoc1swXS5jKSArIHNbMV0uYlsyXS5hIC0gc1sxXS5iWzFdLmE7IC8vIDAgKyA0LjAg
LSAzLjBcbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHIsIGcsIGIsIGEpO1xuJyArCisJCQknCSR7
QVNTSUdOX1BPU31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xv
clswXSA9IGMuY29vcmRzWzJdOworCQkJCWMuY29sb3JbMV0gPSBjLmNvb3Jkc1swXTsKKwkJCQlj
LmNvbG9yWzJdID0gYy5jb29yZHNbM107CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENhc2UoJ25l
c3RlZF9zdHJ1Y3RfYXJyYXlfZHluYW1pY19pbmRleCcsICJOZXN0ZWQgc3RydWN0IGFycmF5IHdp
dGggZHluYW1pYyBpbmRleGluZyIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGlu
dCB1aV96ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9y
bSBpbnQgdWlfdHdvO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX3R3bztcbicg
KworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl90aHJlZTtcbicgKworCQkJJ3VuaWZvcm0g
bWVkaXVtcCBmbG9hdCB1Zl9mb3VyO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVm
X2hhbGY7XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfdGhpcmQ7XG4nICsKKwkJ
CSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfZm91cnRoO1xuJyArCisJCQknXG4nICsKKwkJCSdz
dHJ1Y3QgVCB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCW1lZGl1bXAg
dmVjMgliWzJdO1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwlt
ZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJVAkJCQliWzNdO1xuJyArCisJCQknCWludAkJCQlj
O1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyAr
CisJCQkne1xuJyArCisJCQknCVMgc1syXTtcbicgKworCQkJJ1xuJyArCisJCQknCS8vIFNbMF1c
bicgKworCQkJJwlzWzBdLmEgICAgICAgICA9ICR7Q09PUkRTfS54O1xuJyArCisJCQknCXNbMF0u
YlswXS5hICAgID0gdWZfaGFsZjtcbicgKworCQkJJwlzWzBdLmJbMF0uYlswXSA9ICR7Q09PUkRT
fS54eTtcbicgKworCQkJJwlzWzBdLmJbMF0uYlsxXSA9ICR7Q09PUkRTfS56dztcbicgKworCQkJ
JwlzWzBdLmJbMV0uYSAgICA9IHVmX3RoaXJkO1xuJyArCisJCQknCXNbMF0uYlsxXS5iWzBdID0g
JHtDT09SRFN9Lnp3O1xuJyArCisJCQknCXNbMF0uYlsxXS5iWzFdID0gJHtDT09SRFN9Lnh5O1xu
JyArCisJCQknCXNbMF0uYlsyXS5hICAgID0gdWZfZm91cnRoO1xuJyArCisJCQknCXNbMF0uYlsy
XS5iWzBdID0gJHtDT09SRFN9Lnh6O1xuJyArCisJCQknCXNbMF0uYlsyXS5iWzFdID0gJHtDT09S
RFN9Lnl3O1xuJyArCisJCQknCXNbMF0uYyAgICAgICAgID0gdWlfemVybztcbicgKworCQkJJ1xu
JyArCisJCQknCS8vIFNbMV1cbicgKworCQkJJwlzWzFdLmEgICAgICAgICA9ICR7Q09PUkRTfS53
O1xuJyArCisJCQknCXNbMV0uYlswXS5hICAgID0gdWZfdHdvO1xuJyArCisJCQknCXNbMV0uYlsw
XS5iWzBdID0gJHtDT09SRFN9Lnh4O1xuJyArCisJCQknCXNbMV0uYlswXS5iWzFdID0gJHtDT09S
RFN9Lnl5O1xuJyArCisJCQknCXNbMV0uYlsxXS5hICAgID0gdWZfdGhyZWU7XG4nICsKKwkJCScJ
c1sxXS5iWzFdLmJbMF0gPSAke0NPT1JEU30ueno7XG4nICsKKwkJCScJc1sxXS5iWzFdLmJbMV0g
PSAke0NPT1JEU30ud3c7XG4nICsKKwkJCScJc1sxXS5iWzJdLmEgICAgPSB1Zl9mb3VyO1xuJyAr
CisJCQknCXNbMV0uYlsyXS5iWzBdID0gJHtDT09SRFN9Lnl4O1xuJyArCisJCQknCXNbMV0uYlsy
XS5iWzFdID0gJHtDT09SRFN9Lnd6O1xuJyArCisJCQknCXNbMV0uYyAgICAgICAgID0gdWlfb25l
O1xuJyArCisJCQknXG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCByID0gKHNbMF0uYlt1aV9vbmVd
LmJbdWlfb25lLTFdLnggKyBzW3VpX29uZV0uYlt1aV90d29dLmJbdWlfemVybysxXS55KSAqIHNb
MF0uYlswXS5hOyAvLyAoeiArIHopICogMC41XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCBnID0g
c1t1aV90d28tMV0uYlt1aV90d28tMl0uYlt1aV96ZXJvXS55ICogc1swXS5iW3VpX3R3b10uYSAq
IHNbdWlfb25lXS5iWzJdLmE7IC8vIHggKiAwLjI1ICogNFxuJyArCisJCQknCW1lZGl1bXAgZmxv
YXQgYiA9IChzW3VpX3plcm9dLmJbdWlfb25lKzFdLmJbMV0ueSArIHNbMF0uYlt1aV9vbmUqdWlf
b25lXS5iWzBdLnkgKyBzW3VpX29uZV0uYSkgKiBzWzBdLmJbdWlfdHdvLXVpX29uZV0uYTsgLy8g
KHcgKyB3ICsgdykgKiAwLjMzM1xuJyArCisJCQknCW1lZGl1bXAgZmxvYXQgYSA9IGZsb2F0KHNb
dWlfemVyb10uYykgKyBzW3VpX29uZS11aV96ZXJvXS5iW3VpX3R3b10uYSAtIHNbdWlfemVybyt1
aV9vbmVdLmJbdWlfdHdvLXVpX29uZV0uYTsgLy8gMCArIDQuMCAtIDMuMFxuJyArCisJCQknCSR7
RFNUfSA9IHZlYzQociwgZywgYiwgYSk7XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJ
CQknfVxuJywKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5jb29yZHNbMl07
CisJCQkJYy5jb2xvclsxXSA9IGMuY29vcmRzWzBdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jk
c1szXTsKKwkJCX0pOworCisJCUxvY2FsU3RydWN0Q2FzZSgncGFyYW1ldGVyJywgIlN0cnVjdCBh
cyBhIGZ1bmN0aW9uIHBhcmFtZXRlciIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3Jt
IGludCB1aV9vbmU7XG4nICsKKwkJCSdcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwlt
ZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVtcCB2ZWMzCWI7XG4nICsKKwkJCScJaW50
CQkJCWM7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSdtZWRpdW1wIHZlYzQgbXlG
dW5jIChTIHMpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJcmV0dXJuIHZlYzQocy5hLCBzLmIueCwg
cy5iLnksIHMuYyk7XG4nICsKKwkJCSd9XG4nICsKKwkJCSdcbicgKworCQkJJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworCQkJJ3tcbicgKworCQkJJwlTIHMgPSBTKCR7Q09PUkRTfS54LCB2ZWMzKDAu
MCksIHVpX29uZSk7XG4nICsKKwkJCScJcy5iID0gJHtDT09SRFN9Lnl6dztcbicgKworCQkJJwkk
e0RTVH0gPSBteUZ1bmMocyk7XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxu
JywKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5jb29yZHNbMF07CisJCQkJ
Yy5jb2xvclsxXSA9IGMuY29vcmRzWzFdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvb3Jkc1syXTsK
KwkJCX0pOworCisJCUxvY2FsU3RydWN0Q2FzZSgncGFyYW1ldGVyX25lc3RlZCcsICJOZXN0ZWQg
c3RydWN0IGFzIGEgZnVuY3Rpb24gcGFyYW1ldGVyIiwKKwkJCScke0hFQURFUn1cbicgKworCQkJ
J3VuaWZvcm0gaW50IHVpX3plcm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsK
KwkJCSdcbicgKworCQkJJ3N0cnVjdCBUIHtcbicgKworCQkJJwlpbnQJCQkJYTtcbicgKworCQkJ
JwltZWRpdW1wIHZlYzIJYjtcbicgKworCQkJJ307XG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsK
KwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCVQJCQkJYjtcbicgKworCQkJJwlpbnQJ
CQkJYztcbicgKworCQkJJ307XG4nICsKKwkJCSdcbicgKworCQkJJ21lZGl1bXAgdmVjNCBteUZ1
bmMgKFMgcylcbicgKworCQkJJ3tcbicgKworCQkJJwlyZXR1cm4gdmVjNChzLmEsIHMuYi5iLCBz
LmIuYSArIHMuYyk7XG4nICsKKwkJCSd9XG4nICsKKwkJCSdcbicgKworCQkJJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworCQkJJ3tcbicgKworCQkJJwlTIHMgPSBTKCR7Q09PUkRTfS54LCBUKDAsIHZl
YzIoMC4wKSksIHVpX29uZSk7XG4nICsKKwkJCScJcy5iID0gVCh1aV96ZXJvLCAke0NPT1JEU30u
eXopO1xuJyArCisJCQknCSR7RFNUfSA9IG15RnVuYyhzKTtcbicgKworCQkJJwkke0FTU0lHTl9Q
T1N9XG4nICsKKwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBj
LmNvb3Jkc1swXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMV07CisJCQkJYy5jb2xvclsy
XSA9IGMuY29vcmRzWzJdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdyZXR1cm4nLCAi
U3RydWN0IGFzIGEgcmV0dXJuIHZhbHVlIiwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZv
cm0gaW50IHVpX29uZTtcbicgKworCQkJJ1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQkn
CW1lZGl1bXAgZmxvYXQJYTtcbicgKworCQkJJwltZWRpdW1wIHZlYzMJYjtcbicgKworCQkJJwlp
bnQJCQkJYztcbicgKworCQkJJ307XG4nICsKKwkJCSdcbicgKworCQkJJ1MgbXlGdW5jICh2b2lk
KVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcyA9IFMoJHtDT09SRFN9LngsIHZlYzMoMC4wKSwg
dWlfb25lKTtcbicgKworCQkJJwlzLmIgPSAke0NPT1JEU30ueXp3O1xuJyArCisJCQknCXJldHVy
biBzO1xuJyArCisJCQknfVxuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4n
ICsKKwkJCSd7XG4nICsKKwkJCScJUyBzID0gbXlGdW5jKCk7XG4nICsKKwkJCScJJHtEU1R9ID0g
dmVjNChzLmEsIHMuYi54LCBzLmIueSwgcy5jKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4n
ICsKKwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jk
c1swXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMV07CisJCQkJYy5jb2xvclsyXSA9IGMu
Y29vcmRzWzJdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdyZXR1cm5fbmVzdGVkJywg
Ik5lc3RlZCBzdHJ1Y3QiLAorCQkJJyR7SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlf
emVybztcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJ1xuJyArCisJCQkn
c3RydWN0IFQge1xuJyArCisJCQknCWludAkJCQlhO1xuJyArCisJCQknCW1lZGl1bXAgdmVjMgli
O1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZs
b2F0CWE7XG4nICsKKwkJCScJVAkJCQliO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQkn
fTtcbicgKworCQkJJ1xuJyArCisJCQknUyBteUZ1bmMgKHZvaWQpXG4nICsKKwkJCSd7XG4nICsK
KwkJCScJUyBzID0gUygke0NPT1JEU30ueCwgVCgwLCB2ZWMyKDAuMCkpLCB1aV9vbmUpO1xuJyAr
CisJCQknCXMuYiA9IFQodWlfemVybywgJHtDT09SRFN9Lnl6KTtcbicgKworCQkJJwlyZXR1cm4g
cztcbicgKworCQkJJ31cbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyAr
CisJCQkne1xuJyArCisJCQknCVMgcyA9IG15RnVuYygpO1xuJyArCisJCQknCSR7RFNUfSA9IHZl
YzQocy5hLCBzLmIuYiwgcy5iLmEgKyBzLmMpO1xuJyArCisJCQknCSR7QVNTSUdOX1BPU31cbicg
KworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMuY29vcmRz
WzBdOworCQkJCWMuY29sb3JbMV0gPSBjLmNvb3Jkc1sxXTsKKwkJCQljLmNvbG9yWzJdID0gYy5j
b29yZHNbMl07CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENhc2UoJ2NvbmRpdGlvbmFsX2Fzc2ln
bm1lbnQnLCAiQ29uZGl0aW9uYWwgc3RydWN0IGFzc2lnbm1lbnQiLAorCQkJJyR7SEVBREVSfVxu
JyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29u
ZTtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9vbmU7XG4nICsKKwkJCSdcbicg
KworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJ
bWVkaXVtcCB2ZWMzCWI7XG4nICsKKwkJCScJaW50CQkJCWM7XG4nICsKKwkJCSd9O1xuJyArCisJ
CQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBz
ID0gUygke0NPT1JEU30ueCwgJHtDT09SRFN9Lnl6dywgdWlfemVybyk7XG4nICsKKwkJCScJaWYg
KHVmX29uZSA+IDAuMClcbicgKworCQkJJwkJcyA9IFMoJHtDT09SRFN9LncsICR7Q09PUkRTfS56
eXgsIHVpX29uZSk7XG4nICsKKwkJCScJJHtEU1R9ID0gdmVjNChzLmEsIHMuYi54eSwgcy5jKTtc
bicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsKKwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykg
eworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jkc1szXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29y
ZHNbMl07CisJCQkJYy5jb2xvclsyXSA9IGMuY29vcmRzWzFdOworCQkJfSk7CisKKwkJTG9jYWxT
dHJ1Y3RDYXNlKCdsb29wX2Fzc2lnbm1lbnQnLCAiU3RydWN0IGFzc2lnbm1lbnQgaW4gbG9vcCIs
CisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkn
dW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQknXG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsK
KwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCW1lZGl1bXAgdmVjMwliO1xuJyArCisJ
CQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWlu
ICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcyA9IFMoJHtDT09SRFN9LngsICR7Q09P
UkRTfS55encsIHVpX3plcm8pO1xuJyArCisJCQknCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsr
KVxuJyArCisJCQknCXtcbicgKworCQkJJwkJaWYgKGkgPT0gMSlcbicgKworCQkJJwkJCXMgPSBT
KCR7Q09PUkRTfS53LCAke0NPT1JEU30uenl4LCB1aV9vbmUpO1xuJyArCisJCQknCX1cbicgKwor
CQkJJwkke0RTVH0gPSB2ZWM0KHMuYSwgcy5iLnh5LCBzLmMpO1xuJyArCisJCQknCSR7QVNTSUdO
X1BPU31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9
IGMuY29vcmRzWzNdOworCQkJCWMuY29sb3JbMV0gPSBjLmNvb3Jkc1syXTsKKwkJCQljLmNvbG9y
WzJdID0gYy5jb29yZHNbMV07CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENhc2UoJ2R5bmFtaWNf
bG9vcF9hc3NpZ25tZW50JywgIlN0cnVjdCBhc3NpZ25tZW50IGluIGxvb3AiLAorCQkJJyR7SEVB
REVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKworCQkJJ3VuaWZvcm0gaW50
IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3RocmVlO1xuJyArCisJCQknXG4nICsK
KwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCW1l
ZGl1bXAgdmVjMwliO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJ
J1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCVMgcyA9
IFMoJHtDT09SRFN9LngsICR7Q09PUkRTfS55encsIHVpX3plcm8pO1xuJyArCisJCQknCWZvciAo
aW50IGkgPSAwOyBpIDwgdWlfdGhyZWU7IGkrKylcbicgKworCQkJJwl7XG4nICsKKwkJCScJCWlm
IChpID09IHVpX29uZSlcbicgKworCQkJJwkJCXMgPSBTKCR7Q09PUkRTfS53LCAke0NPT1JEU30u
enl4LCB1aV9vbmUpO1xuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHMuYSwg
cy5iLnh5LCBzLmMpO1xuJyArCisJCQknCSR7QVNTSUdOX1BPU31cbicgKworCQkJJ31cbicsCisJ
CQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMuY29vcmRzWzNdOworCQkJCWMuY29s
b3JbMV0gPSBjLmNvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzJdID0gYy5jb29yZHNbMV07CisJCQl9
KTsKKworCQlMb2NhbFN0cnVjdENhc2UoJ25lc3RlZF9jb25kaXRpb25hbF9hc3NpZ25tZW50Jywg
IkNvbmRpdGlvbmFsIGFzc2lnbm1lbnQgb2YgbmVzdGVkIHN0cnVjdCIsCisJCQknJHtIRUFERVJ9
XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlf
b25lO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX29uZTtcbicgKworCQkJJ1xu
JyArCisJCQknc3RydWN0IFQge1xuJyArCisJCQknCWludAkJCQlhO1xuJyArCisJCQknCW1lZGl1
bXAgdmVjMgliO1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwlt
ZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJVAkJCQliO1xuJyArCisJCQknCWludAkJCQljO1xu
JyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJ
CQkne1xuJyArCisJCQknCVMgcyA9IFMoJHtDT09SRFN9LngsIFQodWlfb25lLCAke0NPT1JEU30u
eXopLCB1aV9vbmUpO1xuJyArCisJCQknCWlmICh1Zl9vbmUgPiAwLjApXG4nICsKKwkJCScJCXMu
YiA9IFQodWlfemVybywgJHtDT09SRFN9Lnp3KTtcbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHMu
YSwgcy5iLmIsIHMuYyAtIHMuYi5hKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsKKwkJ
CSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jkc1swXTsK
KwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMl07CisJCQkJYy5jb2xvclsyXSA9IGMuY29vcmRz
WzNdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCduZXN0ZWRfbG9vcF9hc3NpZ25tZW50
JywgIk5lc3RlZCBzdHJ1Y3QgYXNzaWdubWVudCBpbiBsb29wIiwKKwkJCScke0hFQURFUn1cbicg
KworCQkJJ3VuaWZvcm0gaW50IHVpX3plcm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7
XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfb25lO1xuJyArCisJCQknXG4nICsK
KwkJCSdzdHJ1Y3QgVCB7XG4nICsKKwkJCScJaW50CQkJCWE7XG4nICsKKwkJCScJbWVkaXVtcCB2
ZWMyCWI7XG4nICsKKwkJCSd9O1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknCW1lZGl1
bXAgZmxvYXQJYTtcbicgKworCQkJJwlUCQkJCWI7XG4nICsKKwkJCScJaW50CQkJCWM7XG4nICsK
KwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7
XG4nICsKKwkJCScJUyBzID0gUygke0NPT1JEU30ueCwgVCh1aV9vbmUsICR7Q09PUkRTfS55eiks
IHVpX29uZSk7XG4nICsKKwkJCScJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspXG4nICsKKwkJ
CScJe1xuJyArCisJCQknCQlpZiAoaSA9PSAxKVxuJyArCisJCQknCQkJcy5iID0gVCh1aV96ZXJv
LCAke0NPT1JEU30uencpO1xuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHMu
YSwgcy5iLmIsIHMuYyAtIHMuYi5hKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsKKwkJ
CSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jkc1swXTsK
KwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMl07CisJCQkJYy5jb2xvclsyXSA9IGMuY29vcmRz
WzNdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCduZXN0ZWRfZHluYW1pY19sb29wX2Fz
c2lnbm1lbnQnLCAiTmVzdGVkIHN0cnVjdCBhc3NpZ25tZW50IGluIGR5bmFtaWMgbG9vcCIsCisJ
CQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkndW5p
Zm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdGhyZWU7XG4nICsKKwkJ
CSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfb25lO1xuJyArCisJCQknXG4nICsKKwkJCSdzdHJ1
Y3QgVCB7XG4nICsKKwkJCScJaW50CQkJCWE7XG4nICsKKwkJCScJbWVkaXVtcCB2ZWMyCWI7XG4n
ICsKKwkJCSd9O1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknCW1lZGl1bXAgZmxvYXQJ
YTtcbicgKworCQkJJwlUCQkJCWI7XG4nICsKKwkJCScJaW50CQkJCWM7XG4nICsKKwkJCSd9O1xu
JyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJ
CScJUyBzID0gUygke0NPT1JEU30ueCwgVCh1aV9vbmUsICR7Q09PUkRTfS55eiksIHVpX29uZSk7
XG4nICsKKwkJCScJZm9yIChpbnQgaSA9IDA7IGkgPCB1aV90aHJlZTsgaSsrKVxuJyArCisJCQkn
CXtcbicgKworCQkJJwkJaWYgKGkgPT0gdWlfb25lKVxuJyArCisJCQknCQkJcy5iID0gVCh1aV96
ZXJvLCAke0NPT1JEU30uencpO1xuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0gPSB2ZWM0
KHMuYSwgcy5iLmIsIHMuYyAtIHMuYi5hKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsK
KwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jkc1sw
XTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMl07CisJCQkJYy5jb2xvclsyXSA9IGMuY29v
cmRzWzNdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdsb29wX3N0cnVjdF9hcnJheScs
ICJTdHJ1Y3QgYXJyYXkgdXNhZ2UgaW4gbG9vcCIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1
bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJ
CQkndW5pZm9ybSBpbnQgdWlfdHdvO1xuJyArCisJCQknXG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4n
ICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQknCW1lZGl1bXAgaW50CQliO1xuJyAr
CisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkn
e1xuJyArCisJCQknCVMgc1szXTtcbicgKworCQkJJwlzWzBdID0gUygke0NPT1JEU30ueCwgdWlf
emVybyk7XG4nICsKKwkJCScJc1sxXS5hID0gJHtDT09SRFN9Lnk7XG4nICsKKwkJCScJc1sxXS5i
ID0gLXVpX29uZTtcbicgKworCQkJJwlzWzJdID0gUygke0NPT1JEU30ueiwgdWlfdHdvKTtcbicg
KworCQkJJ1xuJyArCisJCQknCW1lZGl1bXAgZmxvYXQgcmdiWzNdO1xuJyArCisJCQknCWludCBh
bHBoYSA9IDA7XG4nICsKKwkJCScJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspXG4nICsKKwkJ
CScJe1xuJyArCisJCQknCQlyZ2JbaV0gPSBzWzItaV0uYTtcbicgKworCQkJJwkJYWxwaGEgKz0g
c1tpXS5iO1xuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHJnYlswXSwgcmdi
WzFdLCByZ2JbMl0sIGFscGhhKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsKKwkJCSd9
XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0gPSBjLmNvb3Jkc1syXTsKKwkJ
CQljLmNvbG9yWzFdID0gYy5jb29yZHNbMV07CisJCQkJYy5jb2xvclsyXSA9IGMuY29vcmRzWzBd
OworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdsb29wX25lc3RlZF9zdHJ1Y3RfYXJyYXkn
LCAiTmVzdGVkIHN0cnVjdCBhcnJheSB1c2FnZSBpbiBsb29wIiwKKwkJCScke0hFQURFUn1cbicg
KworCQkJJ3VuaWZvcm0gaW50IHVpX3plcm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7
XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV90d287XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAg
ZmxvYXQgdWZfdHdvO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX3RocmVlO1xu
JyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX2ZvdXI7XG4nICsKKwkJCSd1bmlmb3Jt
IG1lZGl1bXAgZmxvYXQgdWZfaGFsZjtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1
Zl90aGlyZDtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9mb3VydGg7XG4nICsK
KwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfc2l4dGg7XG4nICsKKwkJCSdcbicgKworCQkJ
J3N0cnVjdCBUIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVt
cCB2ZWMyCWJbMl07XG4nICsKKwkJCSd9O1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQkn
CW1lZGl1bXAgZmxvYXQJYTtcbicgKworCQkJJwlUCQkJCWJbM107XG4nICsKKwkJCScJaW50CQkJ
CWM7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4n
ICsKKwkJCSd7XG4nICsKKwkJCScJUyBzWzJdO1xuJyArCisJCQknXG4nICsKKwkJCScJLy8gU1sw
XVxuJyArCisJCQknCXNbMF0uYSAgICAgICAgID0gJHtDT09SRFN9Lng7XG4nICsKKwkJCScJc1sw
XS5iWzBdLmEgICAgPSB1Zl9oYWxmO1xuJyArCisJCQknCXNbMF0uYlswXS5iWzBdID0gJHtDT09S
RFN9Lnl4O1xuJyArCisJCQknCXNbMF0uYlswXS5iWzFdID0gJHtDT09SRFN9Lnp4O1xuJyArCisJ
CQknCXNbMF0uYlsxXS5hICAgID0gdWZfdGhpcmQ7XG4nICsKKwkJCScJc1swXS5iWzFdLmJbMF0g
PSAke0NPT1JEU30ueXk7XG4nICsKKwkJCScJc1swXS5iWzFdLmJbMV0gPSAke0NPT1JEU30ud3k7
XG4nICsKKwkJCScJc1swXS5iWzJdLmEgICAgPSB1Zl9mb3VydGg7XG4nICsKKwkJCScJc1swXS5i
WzJdLmJbMF0gPSAke0NPT1JEU30ueng7XG4nICsKKwkJCScJc1swXS5iWzJdLmJbMV0gPSAke0NP
T1JEU30uenk7XG4nICsKKwkJCScJc1swXS5jICAgICAgICAgPSB1aV96ZXJvO1xuJyArCisJCQkn
XG4nICsKKwkJCScJLy8gU1sxXVxuJyArCisJCQknCXNbMV0uYSAgICAgICAgID0gJHtDT09SRFN9
Lnc7XG4nICsKKwkJCScJc1sxXS5iWzBdLmEgICAgPSB1Zl90d287XG4nICsKKwkJCScJc1sxXS5i
WzBdLmJbMF0gPSAke0NPT1JEU30ueng7XG4nICsKKwkJCScJc1sxXS5iWzBdLmJbMV0gPSAke0NP
T1JEU30uenk7XG4nICsKKwkJCScJc1sxXS5iWzFdLmEgICAgPSB1Zl90aHJlZTtcbicgKworCQkJ
JwlzWzFdLmJbMV0uYlswXSA9ICR7Q09PUkRTfS56ejtcbicgKworCQkJJwlzWzFdLmJbMV0uYlsx
XSA9ICR7Q09PUkRTfS53dztcbicgKworCQkJJwlzWzFdLmJbMl0uYSAgICA9IHVmX2ZvdXI7XG4n
ICsKKwkJCScJc1sxXS5iWzJdLmJbMF0gPSAke0NPT1JEU30ueXg7XG4nICsKKwkJCScJc1sxXS5i
WzJdLmJbMV0gPSAke0NPT1JEU30ud3o7XG4nICsKKwkJCScJc1sxXS5jICAgICAgICAgPSB1aV9v
bmU7XG4nICsKKwkJCSdcbicgKworCQkJJwltZWRpdW1wIGZsb2F0IHIgPSAwLjA7IC8vICh4KjMg
KyB5KjMpIC8gNi4wXG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCBnID0gMC4wOyAvLyAoeSozICsg
eiozKSAvIDYuMFxuJyArCisJCQknCW1lZGl1bXAgZmxvYXQgYiA9IDAuMDsgLy8gKHoqMyArIHcq
MykgLyA2LjBcbicgKworCQkJJwltZWRpdW1wIGZsb2F0IGEgPSAxLjA7XG4nICsKKwkJCScJZm9y
IChpbnQgaSA9IDA7IGkgPCAyOyBpKyspXG4nICsKKwkJCScJe1xuJyArCisJCQknCQlmb3IgKGlu
dCBqID0gMDsgaiA8IDM7IGorKylcbicgKworCQkJJwkJe1xuJyArCisJCQknCQkJciArPSBzWzBd
LmJbal0uYltpXS55O1xuJyArCisJCQknCQkJZyArPSBzW2ldLmJbal0uYlswXS54O1xuJyArCisJ
CQknCQkJYiArPSBzW2ldLmJbal0uYlsxXS54O1xuJyArCisJCQknCQkJYSAqPSBzW2ldLmJbal0u
YTtcbicgKworCQkJJwkJfVxuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KHIq
dWZfc2l4dGgsIGcqdWZfc2l4dGgsIGIqdWZfc2l4dGgsIGEpO1xuJyArCisJCQknCSR7QVNTSUdO
X1BPU31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9
IChjLmNvb3Jkc1swXSArIGMuY29vcmRzWzFdKSAqIDAuNTsKKwkJCQljLmNvbG9yWzFdID0gKGMu
Y29vcmRzWzFdICsgYy5jb29yZHNbMl0pICogMC41OworCQkJCWMuY29sb3JbMl0gPSAoYy5jb29y
ZHNbMl0gKyBjLmNvb3Jkc1szXSkgKiAwLjU7CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENhc2Uo
J2R5bmFtaWNfbG9vcF9zdHJ1Y3RfYXJyYXknLCAiU3RydWN0IGFycmF5IHVzYWdlIGluIGR5bmFt
aWMgbG9vcCIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xu
JyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdHdv
O1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdGhyZWU7XG4nICsKKwkJCSdcbicgKworCQkJJ3N0
cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVtcCBp
bnQJCWI7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBzWzNdO1xuJyArCisJCQknCXNbMF0gPSBTKCR7Q09P
UkRTfS54LCB1aV96ZXJvKTtcbicgKworCQkJJwlzWzFdLmEgPSAke0NPT1JEU30ueTtcbicgKwor
CQkJJwlzWzFdLmIgPSAtdWlfb25lO1xuJyArCisJCQknCXNbMl0gPSBTKCR7Q09PUkRTfS56LCB1
aV90d28pO1xuJyArCisJCQknXG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCByZ2JbM107XG4nICsK
KwkJCScJaW50IGFscGhhID0gMDtcbicgKworCQkJJwlmb3IgKGludCBpID0gMDsgaSA8IHVpX3Ro
cmVlOyBpKyspXG4nICsKKwkJCScJe1xuJyArCisJCQknCQlyZ2JbaV0gPSBzWzItaV0uYTtcbicg
KworCQkJJwkJYWxwaGEgKz0gc1tpXS5iO1xuJyArCisJCQknCX1cbicgKworCQkJJwkke0RTVH0g
PSB2ZWM0KHJnYlswXSwgcmdiWzFdLCByZ2JbMl0sIGFscGhhKTtcbicgKworCQkJJwkke0FTU0lH
Tl9QT1N9XG4nICsKKwkJCSd9XG4nLAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3JbMF0g
PSBjLmNvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb29yZHNbMV07CisJCQkJYy5jb2xv
clsyXSA9IGMuY29vcmRzWzBdOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCdkeW5hbWlj
X2xvb3BfbmVzdGVkX3N0cnVjdF9hcnJheScsICJOZXN0ZWQgc3RydWN0IGFycmF5IHVzYWdlIGlu
IGR5bmFtaWMgbG9vcCIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96
ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQg
dWlfdHdvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfdGhyZWU7XG4nICsKKwkJCSd1bmlmb3Jt
IG1lZGl1bXAgZmxvYXQgdWZfdHdvO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVm
X3RocmVlO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX2ZvdXI7XG4nICsKKwkJ
CSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfaGFsZjtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVt
cCBmbG9hdCB1Zl90aGlyZDtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9mb3Vy
dGg7XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfc2l4dGg7XG4nICsKKwkJCSdc
bicgKworCQkJJ3N0cnVjdCBUIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJ
CScJbWVkaXVtcCB2ZWMyCWJbMl07XG4nICsKKwkJCSd9O1xuJyArCisJCQknc3RydWN0IFMge1xu
JyArCisJCQknCW1lZGl1bXAgZmxvYXQJYTtcbicgKworCQkJJwlUCQkJCWJbM107XG4nICsKKwkJ
CScJaW50CQkJCWM7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1haW4g
KHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBzWzJdO1xuJyArCisJCQknXG4nICsKKwkJ
CScJLy8gU1swXVxuJyArCisJCQknCXNbMF0uYSAgICAgICAgID0gJHtDT09SRFN9Lng7XG4nICsK
KwkJCScJc1swXS5iWzBdLmEgICAgPSB1Zl9oYWxmO1xuJyArCisJCQknCXNbMF0uYlswXS5iWzBd
ID0gJHtDT09SRFN9Lnl4O1xuJyArCisJCQknCXNbMF0uYlswXS5iWzFdID0gJHtDT09SRFN9Lnp4
O1xuJyArCisJCQknCXNbMF0uYlsxXS5hICAgID0gdWZfdGhpcmQ7XG4nICsKKwkJCScJc1swXS5i
WzFdLmJbMF0gPSAke0NPT1JEU30ueXk7XG4nICsKKwkJCScJc1swXS5iWzFdLmJbMV0gPSAke0NP
T1JEU30ud3k7XG4nICsKKwkJCScJc1swXS5iWzJdLmEgICAgPSB1Zl9mb3VydGg7XG4nICsKKwkJ
CScJc1swXS5iWzJdLmJbMF0gPSAke0NPT1JEU30ueng7XG4nICsKKwkJCScJc1swXS5iWzJdLmJb
MV0gPSAke0NPT1JEU30uenk7XG4nICsKKwkJCScJc1swXS5jICAgICAgICAgPSB1aV96ZXJvO1xu
JyArCisJCQknXG4nICsKKwkJCScJLy8gU1sxXVxuJyArCisJCQknCXNbMV0uYSAgICAgICAgID0g
JHtDT09SRFN9Lnc7XG4nICsKKwkJCScJc1sxXS5iWzBdLmEgICAgPSB1Zl90d287XG4nICsKKwkJ
CScJc1sxXS5iWzBdLmJbMF0gPSAke0NPT1JEU30ueng7XG4nICsKKwkJCScJc1sxXS5iWzBdLmJb
MV0gPSAke0NPT1JEU30uenk7XG4nICsKKwkJCScJc1sxXS5iWzFdLmEgICAgPSB1Zl90aHJlZTtc
bicgKworCQkJJwlzWzFdLmJbMV0uYlswXSA9ICR7Q09PUkRTfS56ejtcbicgKworCQkJJwlzWzFd
LmJbMV0uYlsxXSA9ICR7Q09PUkRTfS53dztcbicgKworCQkJJwlzWzFdLmJbMl0uYSAgICA9IHVm
X2ZvdXI7XG4nICsKKwkJCScJc1sxXS5iWzJdLmJbMF0gPSAke0NPT1JEU30ueXg7XG4nICsKKwkJ
CScJc1sxXS5iWzJdLmJbMV0gPSAke0NPT1JEU30ud3o7XG4nICsKKwkJCScJc1sxXS5jICAgICAg
ICAgPSB1aV9vbmU7XG4nICsKKwkJCSdcbicgKworCQkJJwltZWRpdW1wIGZsb2F0IHIgPSAwLjA7
IC8vICh4KjMgKyB5KjMpIC8gNi4wXG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdCBnID0gMC4wOyAv
LyAoeSozICsgeiozKSAvIDYuMFxuJyArCisJCQknCW1lZGl1bXAgZmxvYXQgYiA9IDAuMDsgLy8g
KHoqMyArIHcqMykgLyA2LjBcbicgKworCQkJJwltZWRpdW1wIGZsb2F0IGEgPSAxLjA7XG4nICsK
KwkJCScJZm9yIChpbnQgaSA9IDA7IGkgPCB1aV90d287IGkrKylcbicgKworCQkJJwl7XG4nICsK
KwkJCScJCWZvciAoaW50IGogPSAwOyBqIDwgdWlfdGhyZWU7IGorKylcbicgKworCQkJJwkJe1xu
JyArCisJCQknCQkJciArPSBzWzBdLmJbal0uYltpXS55O1xuJyArCisJCQknCQkJZyArPSBzW2ld
LmJbal0uYlswXS54O1xuJyArCisJCQknCQkJYiArPSBzW2ldLmJbal0uYlsxXS54O1xuJyArCisJ
CQknCQkJYSAqPSBzW2ldLmJbal0uYTtcbicgKworCQkJJwkJfVxuJyArCisJCQknCX1cbicgKwor
CQkJJwkke0RTVH0gPSB2ZWM0KHIqdWZfc2l4dGgsIGcqdWZfc2l4dGgsIGIqdWZfc2l4dGgsIGEp
O1xuJyArCisJCQknCSR7QVNTSUdOX1BPU31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihj
KSB7CisJCQkJYy5jb2xvclswXSA9IChjLmNvb3Jkc1swXSArIGMuY29vcmRzWzFdKSAqIDAuNTsK
KwkJCQljLmNvbG9yWzFdID0gKGMuY29vcmRzWzFdICsgYy5jb29yZHNbMl0pICogMC41OworCQkJ
CWMuY29sb3JbMl0gPSAoYy5jb29yZHNbMl0gKyBjLmNvb3Jkc1szXSkgKiAwLjU7CisJCQl9KTsK
KworCQlMb2NhbFN0cnVjdENhc2UoJ2Jhc2ljX2VxdWFsJywgIkJhc2ljIHN0cnVjdCBlcXVhbGl0
eSIsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJ
CSd1bmlmb3JtIGludCB1aV90d287XG4nICsKKwkJCSdcbicgKworCQkJJ3N0cnVjdCBTIHtcbicg
KworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJbWVkaXVtcCB2ZWMzCWI7XG4nICsK
KwkJCScJaW50CQkJCWM7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4nICsKKwkJCSd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBhID0gUyhmbG9vcigke0NPT1JEU30u
eCksIHZlYzMoMC4wLCBmbG9vcigke0NPT1JEU30ueSksIDIuMyksIHVpX29uZSk7XG4nICsKKwkJ
CScJUyBiID0gUyhmbG9vcigke0NPT1JEU30ueCswLjUpLCB2ZWMzKDAuMCwgZmxvb3IoJHtDT09S
RFN9LnkpLCAyLjMpLCB1aV9vbmUpO1xuJyArCisJCQknCVMgYyA9IFMoZmxvb3IoJHtDT09SRFN9
LngpLCB2ZWMzKDAuMCwgZmxvb3IoJHtDT09SRFN9LnkrMC41KSwgMi4zKSwgdWlfb25lKTtcbicg
KworCQkJJwlTIGQgPSBTKGZsb29yKCR7Q09PUkRTfS54KSwgdmVjMygwLjAsIGZsb29yKCR7Q09P
UkRTfS55KSwgMi4zKSwgdWlfdHdvKTtcbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KDAuMCwgMC4w
LCAwLjAsIDEuMCk7XG4nICsKKwkJCScJaWYgKGEgPT0gYikgJHtEU1R9LnggPSAxLjA7XG4nICsK
KwkJCScJaWYgKGEgPT0gYykgJHtEU1R9LnkgPSAxLjA7XG4nICsKKwkJCScJaWYgKGEgPT0gZCkg
JHtEU1R9LnogPSAxLjA7XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxuJywK
KwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQlpZiAoTWF0aC5mbG9vcihjLmNvb3Jkc1swXSkgPT09IE1h
dGguZmxvb3IoYy5jb29yZHNbMF0gKyAwLjUpKQorCQkJCQljLmNvbG9yWzBdID0gMS4wOworCQkJ
CWlmIChNYXRoLmZsb29yKGMuY29vcmRzWzFdKSA9PT0gTWF0aC5mbG9vcihjLmNvb3Jkc1sxXSAr
IDAuNSkpCisJCQkJCWMuY29sb3JbMV0gPSAxLjA7CisJCQl9KTsKKworCQlMb2NhbFN0cnVjdENh
c2UoJ2Jhc2ljX25vdF9lcXVhbCcsICJCYXNpYyBzdHJ1Y3QgZXF1YWxpdHkiLAorCQkJJyR7SEVB
REVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9ybSBpbnQg
dWlfdHdvO1xuJyArCisJCQknXG4nICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVt
cCBmbG9hdAlhO1xuJyArCisJCQknCW1lZGl1bXAgdmVjMwliO1xuJyArCisJCQknCWludAkJCQlj
O1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyAr
CisJCQkne1xuJyArCisJCQknCVMgYSA9IFMoZmxvb3IoJHtDT09SRFN9LngpLCB2ZWMzKDAuMCwg
Zmxvb3IoJHtDT09SRFN9LnkpLCAyLjMpLCB1aV9vbmUpO1xuJyArCisJCQknCVMgYiA9IFMoZmxv
b3IoJHtDT09SRFN9LngrMC41KSwgdmVjMygwLjAsIGZsb29yKCR7Q09PUkRTfS55KSwgMi4zKSwg
dWlfb25lKTtcbicgKworCQkJJwlTIGMgPSBTKGZsb29yKCR7Q09PUkRTfS54KSwgdmVjMygwLjAs
IGZsb29yKCR7Q09PUkRTfS55KzAuNSksIDIuMyksIHVpX29uZSk7XG4nICsKKwkJCScJUyBkID0g
UyhmbG9vcigke0NPT1JEU30ueCksIHZlYzMoMC4wLCBmbG9vcigke0NPT1JEU30ueSksIDIuMyks
IHVpX3R3byk7XG4nICsKKwkJCScJJHtEU1R9ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xu
JyArCisJCQknCWlmIChhICE9IGIpICR7RFNUfS54ID0gMS4wO1xuJyArCisJCQknCWlmIChhICE9
IGMpICR7RFNUfS55ID0gMS4wO1xuJyArCisJCQknCWlmIChhICE9IGQpICR7RFNUfS56ID0gMS4w
O1xuJyArCisJCQknCSR7QVNTSUdOX1BPU31cbicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihj
KSB7CisJCQkJaWYgKE1hdGguZmxvb3IoYy5jb29yZHNbMF0pICE9IE1hdGguZmxvb3IoYy5jb29y
ZHNbMF0gKyAwLjUpKQorCQkJCQljLmNvbG9yWzBdID0gMS4wOworCQkJCWlmIChNYXRoLmZsb29y
KGMuY29vcmRzWzFdKSAhPSBNYXRoLmZsb29yKGMuY29vcmRzWzFdICsgMC41KSkKKwkJCQkJYy5j
b2xvclsxXSA9IDEuMDsKKwkJCQljLmNvbG9yWzJdID0gMS4wOworCQkJfSk7CisKKwkJTG9jYWxT
dHJ1Y3RDYXNlKCduZXN0ZWRfZXF1YWwnLCAiTmVzdGVkIHN0cnVjdCBzdHJ1Y3QgZXF1YWxpdHki
LAorCQkJJyR7SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkn
dW5pZm9ybSBpbnQgdWlfdHdvO1xuJyArCisJCQknXG4nICsKKwkJCSdzdHJ1Y3QgVCB7XG4nICsK
KwkJCScJbWVkaXVtcCB2ZWMzCWE7XG4nICsKKwkJCScJaW50CQkJCWI7XG4nICsKKwkJCSd9O1xu
JyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknCW1lZGl1bXAgZmxvYXQJYTtcbicgKworCQkJ
JwlUCQkJCWI7XG4nICsKKwkJCScJaW50CQkJCWM7XG4nICsKKwkJCSd9O1xuJyArCisJCQknXG4n
ICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScJUyBhID0gUyhm
bG9vcigke0NPT1JEU30ueCksIFQodmVjMygwLjAsIGZsb29yKCR7Q09PUkRTfS55KSwgMi4zKSwg
dWlfb25lKSwgMSk7XG4nICsKKwkJCScJUyBiID0gUyhmbG9vcigke0NPT1JEU30ueCswLjUpLCBU
KHZlYzMoMC4wLCBmbG9vcigke0NPT1JEU30ueSksIDIuMyksIHVpX29uZSksIDEpO1xuJyArCisJ
CQknCVMgYyA9IFMoZmxvb3IoJHtDT09SRFN9LngpLCBUKHZlYzMoMC4wLCBmbG9vcigke0NPT1JE
U30ueSswLjUpLCAyLjMpLCB1aV9vbmUpLCAxKTtcbicgKworCQkJJwlTIGQgPSBTKGZsb29yKCR7
Q09PUkRTfS54KSwgVCh2ZWMzKDAuMCwgZmxvb3IoJHtDT09SRFN9LnkpLCAyLjMpLCB1aV90d28p
LCAxKTtcbicgKworCQkJJwkke0RTVH0gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4nICsK
KwkJCScJaWYgKGEgPT0gYikgJHtEU1R9LnggPSAxLjA7XG4nICsKKwkJCScJaWYgKGEgPT0gYykg
JHtEU1R9LnkgPSAxLjA7XG4nICsKKwkJCScJaWYgKGEgPT0gZCkgJHtEU1R9LnogPSAxLjA7XG4n
ICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfVxuJywKKwkJCWZ1bmN0aW9uKGMpIHsK
KwkJCQlpZiAoTWF0aC5mbG9vcihjLmNvb3Jkc1swXSkgPT0gTWF0aC5mbG9vcihjLmNvb3Jkc1sw
XSArIDAuNSkpCisJCQkJCWMuY29sb3JbMF0gPSAxLjA7CisJCQkJaWYgKE1hdGguZmxvb3IoYy5j
b29yZHNbMV0pID09IE1hdGguZmxvb3IoYy5jb29yZHNbMV0gKyAwLjUpKQorCQkJCQljLmNvbG9y
WzFdID0gMS4wOworCQkJfSk7CisKKwkJTG9jYWxTdHJ1Y3RDYXNlKCduZXN0ZWRfbm90X2VxdWFs
JywgIk5lc3RlZCBzdHJ1Y3Qgc3RydWN0IGVxdWFsaXR5IiwKKwkJCScke0hFQURFUn1cbicgKwor
CQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3R3bztcbicg
KworCQkJJ1xuJyArCisJCQknc3RydWN0IFQge1xuJyArCisJCQknCW1lZGl1bXAgdmVjMwlhO1xu
JyArCisJCQknCWludAkJCQliO1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicg
KworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJVAkJCQliO1xuJyArCisJCQknCWlu
dAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJJ1xuJyArCisJCQkndm9pZCBtYWluICh2b2lk
KVxuJyArCisJCQkne1xuJyArCisJCQknCVMgYSA9IFMoZmxvb3IoJHtDT09SRFN9LngpLCBUKHZl
YzMoMC4wLCBmbG9vcigke0NPT1JEU30ueSksIDIuMyksIHVpX29uZSksIDEpO1xuJyArCisJCQkn
CVMgYiA9IFMoZmxvb3IoJHtDT09SRFN9LngrMC41KSwgVCh2ZWMzKDAuMCwgZmxvb3IoJHtDT09S
RFN9LnkpLCAyLjMpLCB1aV9vbmUpLCAxKTtcbicgKworCQkJJwlTIGMgPSBTKGZsb29yKCR7Q09P
UkRTfS54KSwgVCh2ZWMzKDAuMCwgZmxvb3IoJHtDT09SRFN9LnkrMC41KSwgMi4zKSwgdWlfb25l
KSwgMSk7XG4nICsKKwkJCScJUyBkID0gUyhmbG9vcigke0NPT1JEU30ueCksIFQodmVjMygwLjAs
IGZsb29yKCR7Q09PUkRTfS55KSwgMi4zKSwgdWlfdHdvKSwgMSk7XG4nICsKKwkJCScJJHtEU1R9
ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xuJyArCisJCQknCWlmIChhICE9IGIpICR7RFNU
fS54ID0gMS4wO1xuJyArCisJCQknCWlmIChhICE9IGMpICR7RFNUfS55ID0gMS4wO1xuJyArCisJ
CQknCWlmIChhICE9IGQpICR7RFNUfS56ID0gMS4wO1xuJyArCisJCQknCSR7QVNTSUdOX1BPU31c
bicgKworCQkJJ31cbicsCisJCQlmdW5jdGlvbihjKSB7CisJCQkJaWYgKE1hdGguZmxvb3IoYy5j
b29yZHNbMF0pICE9IE1hdGguZmxvb3IoYy5jb29yZHNbMF0gKyAwLjUpKQorCQkJCQljLmNvbG9y
WzBdID0gMS4wOworCQkJCWlmIChNYXRoLmZsb29yKGMuY29vcmRzWzFdKSAhPSBNYXRoLmZsb29y
KGMuY29vcmRzWzFdICsgMC41KSkKKwkJCQkJYy5jb2xvclsxXSA9IDEuMDsKKwkJCQljLmNvbG9y
WzJdID0gMS4wOworCQkJfSk7CisJfTsKKworCS8qKgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBl
eHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKwkgKi8KKwllczNmU2hhZGVyU3RydWN0VGVz
dHMuVW5pZm9ybVN0cnVjdFRlc3RzID0gZnVuY3Rpb24oKSB7CisJCXRjdVRlc3RDYXNlLkRlcXBU
ZXN0LmNhbGwodGhpcywgJ3VuaWZvcm0nLCAnVW5pZm9ybSBzdHJ1Y3RzJyk7CisJCXRoaXMubWFr
ZUV4ZWN1dGFibGUoKTsKKwl9OworCisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLlVuaWZvcm1TdHJ1
Y3RUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnBy
b3RvdHlwZSk7CisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLlVuaWZvcm1TdHJ1Y3RUZXN0cy5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyU3RydWN0VGVzdHMuVW5pZm9ybVN0cnVjdFRl
c3RzOworCisJLyoqCisJICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW1JRAorCSAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisJICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB2ZWMKKwkgKi8K
KwllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdiA9IGZ1bmN0aW9uKHByb2dyYW1J
RCwgbmFtZSwgdmVjKSB7CisJCS8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZh
ciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCBuYW1lKTsKKwkJZ2wudW5p
Zm9ybTJmdihsb2MsIHZlYyk7CisJfTsKKworCS8qKgorCSAqIEBwYXJhbSB7V2ViR0xQcm9ncmFt
fSBwcm9ncmFtSUQKKwkgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorCSAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gdmVjCisJICovCisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0zZnYg
PSBmdW5jdGlvbihwcm9ncmFtSUQsIG5hbWUsIHZlYykgeworCQkvKiogQHR5cGUge1dlYkdMVW5p
Zm9ybUxvY2F0aW9ufSAqLyB2YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1J
RCwgbmFtZSk7CisJCWdsLnVuaWZvcm0zZnYobG9jLCB2ZWMpOworCX07CisKKwkvKioKKwkqIEBw
YXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtSUQKKwkqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisJ
KiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKwkqLworCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRV
bmlmb3JtMWkgPSBmdW5jdGlvbihwcm9ncmFtSUQsIG5hbWUsIHZhbHVlKSB7CisJCS8qKiBAdHlw
ZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbUlELCBuYW1lKTsKKwkJZ2wudW5pZm9ybTFpKGxvYywgdmFsdWUpOworCX07CisK
KwkvKioKKwkqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtSUQKKwkqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisJKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKwkqLworCWVzM2ZTaGFkZXJTdHJ1
Y3RUZXN0cy5zZXRVbmlmb3JtMWYgPSBmdW5jdGlvbihwcm9ncmFtSUQsIG5hbWUsIHZhbHVlKSB7
CisJCS8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBsb2MgPSBnbC5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCBuYW1lKTsKKwkJZ2wudW5pZm9ybTFmKGxvYywgdmFs
dWUpOworCX07CisKKwkvKioKKwkqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtSUQKKwkq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisJKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHZlYworCSov
CisJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZnYgPSBmdW5jdGlvbihwcm9ncmFt
SUQsIG5hbWUsIHZlYykgeworCQkvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2
YXIgbG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgbmFtZSk7CisJCWdsLnVu
aWZvcm0xZnYobG9jLCB2ZWMpOworCX07CisKKwllczNmU2hhZGVyU3RydWN0VGVzdHMuVW5pZm9y
bVN0cnVjdFRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisJCXZhciBjdXJyZW50
Q3R4ID0gdGhpczsKKwkJZnVuY3Rpb24gVW5pZm9ybVN0cnVjdENhc2UobmFtZSwgZGVzY3JpcHRp
b24sIHRleHR1cmVzLCBzaGFkZXJTcmMsIHNldFVuaWZvcm1zRnVuYywgZXZhbEZ1bmMpIHsKKwkJ
CWN1cnJlbnRDdHguYWRkQ2hpbGQoZXMzZlNoYWRlclN0cnVjdFRlc3RzLlNoYWRlclN0cnVjdENh
c2UuY3JlYXRlU3RydWN0Q2FzZShuYW1lICsgIl92ZXJ0ZXgiLCBkZXNjcmlwdGlvbiwgdHJ1ZSwg
dGV4dHVyZXMsIGV2YWxGdW5jLCBzZXRVbmlmb3Jtc0Z1bmMsIHNoYWRlclNyYykpOworCQkJY3Vy
cmVudEN0eC5hZGRDaGlsZChlczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3RydWN0Q2FzZS5j
cmVhdGVTdHJ1Y3RDYXNlKG5hbWUgKyAiX2ZyYWdtZW50IiwgZGVzY3JpcHRpb24sIGZhbHNlLCB0
ZXh0dXJlcywgZXZhbEZ1bmMsIHNldFVuaWZvcm1zRnVuYywgc2hhZGVyU3JjKSk7CisJCX0KKwor
CQlVbmlmb3JtU3RydWN0Q2FzZSgnYmFzaWMnLCAiQmFzaWMgc3RydWN0IHVzYWdlIiwgZmFsc2Us
CisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCScn
ICsKKwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAlhO1xuJyArCisJCQkn
CW1lZGl1bXAgdmVjMwliO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKwor
CQkJJ3VuaWZvcm0gUyBzO1xuJyArCisJCQknJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyAr
CisJCQkne1xuJyArCisJCQknCSR7RFNUfSA9IHZlYzQocy5hLCBzLmIueCwgcy5iLnksIHMuYyk7
XG4nICsKKwkJCScJJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJCQlmdW5jdGlvbihwcm9n
cmFtSUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZv
cm0xZihwcm9ncmFtSUQsICJzLmEiLCBjb25zdENvb3Jkc1swXSk7CisJCQkJZXMzZlNoYWRlclN0
cnVjdFRlc3RzLnNldFVuaWZvcm0zZnYocHJvZ3JhbUlELCAicy5iIiwgZGVNYXRoLnN3aXp6bGUo
Y29uc3RDb29yZHMsIFsxLCAyLCAzXSkpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRV
bmlmb3JtMWkocHJvZ3JhbUlELCAicy5jIiwgMSk7CisJCQl9LAorCQkJZnVuY3Rpb24oYykgewor
CQkJCWMuY29sb3JbMF0gPSBjLmNvbnN0Q29vcmRzWzBdOworCQkJCWMuY29sb3JbMV0gPSBjLmNv
bnN0Q29vcmRzWzFdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvbnN0Q29vcmRzWzJdOworCQkJfSk7
CisKKwkJVW5pZm9ybVN0cnVjdENhc2UoJ25lc3RlZCcsICJOZXN0ZWQgc3RydWN0IiwgZmFsc2Us
CisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkn
dW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQknJyArCisJCQknc3RydWN0IFQge1xuJyArCisJ
CQknCWludAkJCQlhO1xuJyArCisJCQknCW1lZGl1bXAgdmVjMgliO1xuJyArCisJCQknfTtcbicg
KworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0CWE7XG4nICsKKwkJCScJ
VAkJCQliO1xuJyArCisJCQknCWludAkJCQljO1xuJyArCisJCQknfTtcbicgKworCQkJJ3VuaWZv
cm0gUyBzO1xuJyArCisJCQknJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xu
JyArCisJCQknCSR7RFNUfSA9IHZlYzQocy5hLCBzLmIuYiwgcy5iLmEgKyBzLmMpO1xuJyArCisJ
CQknCSR7QVNTSUdOX1BPU31cbicgKworCQkJJ30nLAorCQkJZnVuY3Rpb24ocHJvZ3JhbUlELCBj
b25zdENvb3JkcykgeworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJv
Z3JhbUlELCAicy5hIiwgY29uc3RDb29yZHNbMF0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0
cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAicy5iLmEiLCAwKTsKKwkJCQllczNmU2hhZGVyU3Ry
dWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzLmIuYiIsIGRlTWF0aC5zd2l6emxl
KGNvbnN0Q29vcmRzLCBbMSwyXSkpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMWkocHJvZ3JhbUlELCAicy5jIiwgMSk7CisJCQl9LAorCQkJZnVuY3Rpb24oYykgeworCQkJ
CWMuY29sb3JbMF0gPSBjLmNvbnN0Q29vcmRzWzBdOworCQkJCWMuY29sb3JbMV0gPSBjLmNvbnN0
Q29vcmRzWzFdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvbnN0Q29vcmRzWzJdOworCQkJfSk7CisK
KwkJVW5pZm9ybVN0cnVjdENhc2UoJ2FycmF5X21lbWJlcicsICJTdHJ1Y3Qgd2l0aCBhcnJheSBt
ZW1iZXIiLCBmYWxzZSwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29u
ZTtcbicgKworCQkJJycgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJwltZWRpdW1wIGZsb2F0
CWE7XG4nICsKKwkJCScJbWVkaXVtcCBmbG9hdAliWzNdO1xuJyArCisJCQknCWludAkJCQljO1xu
JyArCisJCQknfTtcbicgKworCQkJJ3VuaWZvcm0gUyBzO1xuJyArCisJCQknJyArCisJCQkndm9p
ZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknCSR7RFNUfSA9IHZlYzQocy5hLCBz
LmJbMF0sIHMuYlsxXSwgcy5jKTtcbicgKworCQkJJwkke0FTU0lHTl9QT1N9XG4nICsKKwkJCSd9
JywKKwkJCWZ1bmN0aW9uKHByb2dyYW1JRCwgY29uc3RDb29yZHMpeworCQkJCWVzM2ZTaGFkZXJT
dHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAicy5hIiwgY29uc3RDb29yZHNbM10p
OworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAicy5j
IiwgMSk7CisKKwkJCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBiID0gW107CisJ
CQkJYlswXSA9IGNvbnN0Q29vcmRzWzJdOworCQkJCWJbMV0gPSBjb25zdENvb3Jkc1sxXTsKKwkJ
CQliWzJdID0gY29uc3RDb29yZHNbMF07CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVu
aWZvcm0xZnYocHJvZ3JhbUlELCAicy5iIiwgYik7CisJCQl9LAorCQkJZnVuY3Rpb24oYykgewor
CQkJCWMuY29sb3JbMF0gPSBjLmNvbnN0Q29vcmRzWzNdOworCQkJCWMuY29sb3JbMV0gPSBjLmNv
bnN0Q29vcmRzWzJdOworCQkJCWMuY29sb3JbMl0gPSBjLmNvbnN0Q29vcmRzWzFdOworCQkJfSk7
CisKKwkJVW5pZm9ybVN0cnVjdENhc2UoJ2FycmF5X21lbWJlcl9keW5hbWljX2luZGV4JywgIlN0
cnVjdCB3aXRoIGFycmF5IG1lbWJlciwgZHluYW1pYyBpbmRleGluZyIsIGZhbHNlLAorCQkJJyR7
SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKworCQkJJ3VuaWZvcm0g
aW50IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3R3bztcbicgKworCQkJJycgKwor
CQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJ
CScgICAgbWVkaXVtcCBmbG9hdCAgICBiWzNdO1xuJyArCisJCQknICAgIGludCAgICAgICAgICAg
ICAgICBjO1xuJyArCisJCQknfTtcbicgKworCQkJJ3VuaWZvcm0gUyBzO1xuJyArCisJCQknJyAr
CisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknICAgICR7RFNUfSA9
IHZlYzQocy5iW3VpX29uZV0sIHMuYlt1aV96ZXJvXSwgcy5iW3VpX3R3b10sIHMuYyk7XG4nICsK
KwkJCScgICAgJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJCQlmdW5jdGlvbihwcm9ncmFt
SUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0x
Zihwcm9ncmFtSUQsICJzLmEiLCBjb25zdENvb3Jkc1szXSk7CisJCQkJZXMzZlNoYWRlclN0cnVj
dFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzLmMiLCAxKTsKKworCQkJCS8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGIgPSBbXTsKKwkJCQliWzBdID0gY29uc3RDb29yZHNb
Ml07CisJCQkJYlsxXSA9IGNvbnN0Q29vcmRzWzFdOworCQkJCWJbMl0gPSBjb25zdENvb3Jkc1sw
XTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmdihwcm9ncmFtSUQsICJz
LmIiLCBiKTsKKwkJCX0sCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMuY29u
c3RDb29yZHNbMV07CisJCQkJYy5jb2xvclsxXSA9IGMuY29uc3RDb29yZHNbMl07CisJCQkJYy5j
b2xvclsyXSA9IGMuY29uc3RDb29yZHNbMF07CisJCQl9KTsKKworCQlVbmlmb3JtU3RydWN0Q2Fz
ZSgnc3RydWN0X2FycmF5JywgIlN0cnVjdCBhcnJheSIsIGZhbHNlLAorCQkJJyR7SEVBREVSfVxu
JyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29u
ZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3R3bztcbicgKworCQkJJycgKworCQkJJ3N0cnVj
dCBTIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJCScgICAgbWVk
aXVtcCBpbnQgICAgICAgIGI7XG4nICsKKwkJCSd9O1xuJyArCisJCQkndW5pZm9ybSBTIHNbM107
XG4nICsKKwkJCScnICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJ
CScgICAgJHtEU1R9ID0gdmVjNChzWzJdLmEsIHNbMV0uYSwgc1swXS5hLCBzWzJdLmIgLSBzWzFd
LmIgKyBzWzBdLmIpO1xuJyArCisJCQknICAgICR7QVNTSUdOX1BPU31cbicgKworCQkJJ30nLAor
CQkJZnVuY3Rpb24ocHJvZ3JhbUlELCBjb25zdENvb3JkcykgeworCQkJCWVzM2ZTaGFkZXJTdHJ1
Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1swXS5hIiwgY29uc3RDb29yZHNbMF0p
OworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1sw
XS5iIiwgMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFt
SUQsICJzWzFdLmEiLCBjb25zdENvb3Jkc1sxXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3Rz
LnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzWzFdLmIiLCAxKTsKKwkJCQllczNmU2hhZGVyU3Ry
dWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMl0uYSIsIGNvbnN0Q29vcmRzWzJd
KTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgInNb
Ml0uYiIsIDIpOworCQkJfSwKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5j
b25zdENvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb25zdENvb3Jkc1sxXTsKKwkJCQlj
LmNvbG9yWzJdID0gYy5jb25zdENvb3Jkc1swXTsKKwkJCX0pOworCisJCVVuaWZvcm1TdHJ1Y3RD
YXNlKCdzdHJ1Y3RfYXJyYXlfZHluYW1pY19pbmRleCcsICJTdHJ1Y3QgYXJyYXkgd2l0aCBkeW5h
bWljIGluZGV4aW5nIiwgZmFsc2UsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSd1bmlmb3JtIGlu
dCB1aV96ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQkndW5pZm9y
bSBpbnQgdWlfdHdvO1xuJyArCisJCQknJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknICAg
IG1lZGl1bXAgZmxvYXQgICAgYTtcbicgKworCQkJJyAgICBtZWRpdW1wIGludCAgICAgICAgYjtc
bicgKworCQkJJ307XG4nICsKKwkJCSd1bmlmb3JtIFMgc1szXTtcbicgKworCQkJJycgKworCQkJ
J3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJJ3tcbicgKworCQkJJyAgICAke0RTVH0gPSB2ZWM0
KHNbdWlfdHdvXS5hLCBzW3VpX29uZV0uYSwgc1t1aV96ZXJvXS5hLCBzW3VpX3R3b10uYiAtIHNb
dWlfb25lXS5iICsgc1t1aV96ZXJvXS5iKTtcbicgKworCQkJJyAgICAke0FTU0lHTl9QT1N9XG4n
ICsKKwkJCSd9JywKKwkJCWZ1bmN0aW9uKHByb2dyYW1JRCwgY29uc3RDb29yZHMpIHsKKwkJCQll
czNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYSIsIGNv
bnN0Q29vcmRzWzBdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHBy
b2dyYW1JRCwgInNbMF0uYiIsIDApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMWYocHJvZ3JhbUlELCAic1sxXS5hIiwgY29uc3RDb29yZHNbMV0pOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1sxXS5iIiwgMSk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzJdLmEiLCBj
b25zdENvb3Jkc1syXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShw
cm9ncmFtSUQsICJzWzJdLmIiLCAyKTsKKwkJCX0sCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5j
b2xvclswXSA9IGMuY29uc3RDb29yZHNbMl07CisJCQkJYy5jb2xvclsxXSA9IGMuY29uc3RDb29y
ZHNbMV07CisJCQkJYy5jb2xvclsyXSA9IGMuY29uc3RDb29yZHNbMF07CisJCQl9KTsKKworCQlV
bmlmb3JtU3RydWN0Q2FzZSgnbmVzdGVkX3N0cnVjdF9hcnJheScsICJOZXN0ZWQgc3RydWN0IGFy
cmF5IiwgZmFsc2UsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJCSdzdHJ1Y3QgVCB7XG4nICsKKwkJ
CScgICAgbWVkaXVtcCBmbG9hdCAgICBhO1xuJyArCisJCQknICAgIG1lZGl1bXAgdmVjMiAgICBi
WzJdO1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRp
dW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJCScgICAgVCAgICAgICAgICAgICAgICBiWzNdO1xuJyAr
CisJCQknICAgIGludCAgICAgICAgICAgICAgICBjO1xuJyArCisJCQknfTtcbicgKworCQkJJ3Vu
aWZvcm0gUyBzWzJdO1xuJyArCisJCQknJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJ
CQkne1xuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgciA9IChzWzBdLmJbMV0uYlswXS54ICsg
c1sxXS5iWzJdLmJbMV0ueSkgKiBzWzBdLmJbMF0uYTsgLy8gKHogKyB6KSAqIDAuNVxuJyArCisJ
CQknICAgIG1lZGl1bXAgZmxvYXQgZyA9IHNbMV0uYlswXS5iWzBdLnkgKiBzWzBdLmJbMl0uYSAq
IHNbMV0uYlsyXS5hOyAvLyB4ICogMC4yNSAqIDRcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0
IGIgPSAoc1swXS5iWzJdLmJbMV0ueSArIHNbMF0uYlsxXS5iWzBdLnkgKyBzWzFdLmEpICogc1sw
XS5iWzFdLmE7IC8vICh3ICsgdyArIHcpICogMC4zMzNcbicgKworCQkJJyAgICBtZWRpdW1wIGZs
b2F0IGEgPSBmbG9hdChzWzBdLmMpICsgc1sxXS5iWzJdLmEgLSBzWzFdLmJbMV0uYTsgLy8gMCAr
IDQuMCAtIDMuMFxuJyArCisJCQknICAgICR7RFNUfSA9IHZlYzQociwgZywgYiwgYSk7XG4nICsK
KwkJCScgICAgJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJCQlmdW5jdGlvbihwcm9ncmFt
SUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
YXJyID0gW107CisKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dy
YW1JRCwgInNbMF0uYSIsIGNvbnN0Q29vcmRzWzBdKTsKKwkJCQlhcnIgPSBkZU1hdGguc3dpenps
ZShjb25zdENvb3JkcywgWzAsMSwyLDNdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0
VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlswXS5hIiwgMC41KTsKKwkJCQllczNmU2hhZGVy
U3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzBdLmJbMF0uYiIsIGFycik7
CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsyLDMsMCwxXSk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzBdLmJbMV0u
YSIsIDEuMC8zLjApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMmZ2KHBy
b2dyYW1JRCwgInNbMF0uYlsxXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGguc3dpenpsZShj
b25zdENvb3JkcywgWzAsMiwxLDNdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5p
Zm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlsyXS5hIiwgMS4wLzQuMCk7CisJCQkJZXMzZlNoYWRl
clN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYocHJvZ3JhbUlELCAic1swXS5iWzJdLmIiLCBhcnIp
OworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1sw
XS5jIiwgMCk7CisKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dy
YW1JRCwgInNbMV0uYSIsIGNvbnN0Q29vcmRzWzNdKTsKKwkJCQlhcnIgPSBkZU1hdGguc3dpenps
ZShjb25zdENvb3JkcywgWzAsMCwxLDFdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0
VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMV0uYlswXS5hIiwgMi4wKTsKKwkJCQllczNmU2hhZGVy
U3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzFdLmJbMF0uYiIsIGFycik7
CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsyLDIsMywzXSk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzFdLmJbMV0u
YSIsIDMuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYocHJvZ3Jh
bUlELCAic1sxXS5iWzFdLmIiLCBhcnIpOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0
Q29vcmRzLCBbMSwwLDMsMl0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3Jt
MWYocHJvZ3JhbUlELCAic1sxXS5iWzJdLmEiLCA0LjApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RU
ZXN0cy5zZXRVbmlmb3JtMmZ2KHByb2dyYW1JRCwgInNbMV0uYlsyXS5iIiwgYXJyKTsKKwkJCQll
czNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgInNbMV0uYyIsIDEp
OworCQkJfSwKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5jb25zdENvb3Jk
c1syXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb25zdENvb3Jkc1swXTsKKwkJCQljLmNvbG9yWzJd
ID0gYy5jb25zdENvb3Jkc1szXTsKKwkJCX0pOworCisJCVVuaWZvcm1TdHJ1Y3RDYXNlKCduZXN0
ZWRfc3RydWN0X2FycmF5X2R5bmFtaWNfaW5kZXgnLCAiTmVzdGVkIHN0cnVjdCBhcnJheSB3aXRo
IGR5bmFtaWMgaW5kZXhpbmciLCBmYWxzZSwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZv
cm0gaW50IHVpX3plcm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCSd1
bmlmb3JtIGludCB1aV90d287XG4nICsKKwkJCScnICsKKwkJCSdzdHJ1Y3QgVCB7XG4nICsKKwkJ
CScgICAgbWVkaXVtcCBmbG9hdCAgICBhO1xuJyArCisJCQknICAgIG1lZGl1bXAgdmVjMiAgICBi
WzJdO1xuJyArCisJCQknfTtcbicgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRp
dW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJCScgICAgVCAgICAgICAgICAgICAgICBiWzNdO1xuJyAr
CisJCQknICAgIGludCAgICAgICAgICAgICAgICBjO1xuJyArCisJCQknfTtcbicgKworCQkJJ3Vu
aWZvcm0gUyBzWzJdO1xuJyArCisJCQknJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJ
CQkne1xuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgciA9IChzWzBdLmJbdWlfb25lXS5iW3Vp
X29uZS0xXS54ICsgc1t1aV9vbmVdLmJbdWlfdHdvXS5iW3VpX3plcm8rMV0ueSkgKiBzWzBdLmJb
MF0uYTsgLy8gKHogKyB6KSAqIDAuNVxuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgZyA9IHNb
dWlfdHdvLTFdLmJbdWlfdHdvLTJdLmJbdWlfemVyb10ueSAqIHNbMF0uYlt1aV90d29dLmEgKiBz
W3VpX29uZV0uYlsyXS5hOyAvLyB4ICogMC4yNSAqIDRcbicgKworCQkJJyAgICBtZWRpdW1wIGZs
b2F0IGIgPSAoc1t1aV96ZXJvXS5iW3VpX29uZSsxXS5iWzFdLnkgKyBzWzBdLmJbdWlfb25lKnVp
X29uZV0uYlswXS55ICsgc1t1aV9vbmVdLmEpICogc1swXS5iW3VpX3R3by11aV9vbmVdLmE7IC8v
ICh3ICsgdyArIHcpICogMC4zMzNcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0IGEgPSBmbG9h
dChzW3VpX3plcm9dLmMpICsgc1t1aV9vbmUtdWlfemVyb10uYlt1aV90d29dLmEgLSBzW3VpX3pl
cm8rdWlfb25lXS5iW3VpX3R3by11aV9vbmVdLmE7IC8vIDAgKyA0LjAgLSAzLjBcbicgKworCQkJ
JyAgICAke0RTVH0gPSB2ZWM0KHIsIGcsIGIsIGEpO1xuJyArCisJCQknICAgICR7QVNTSUdOX1BP
U31cbicgKworCQkJJ30nLAorCQkJZnVuY3Rpb24ocHJvZ3JhbUlELCBjb25zdENvb3Jkcyl7CisJ
CQkJLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYXJyID0gW107CisKKwkJCQllczNm
U2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYSIsIGNvbnN0
Q29vcmRzWzBdKTsKKwkJCQlhcnIgPSBjb25zdENvb3JkczsKKwkJCQllczNmU2hhZGVyU3RydWN0
VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlswXS5hIiwgMC41KTsKKwkJCQll
czNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzBdLmJbMF0u
YiIsIGFycik7CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsyLDMsMCwx
XSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJz
WzBdLmJbMV0uYSIsIDEuMC8zLjApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMmZ2KHByb2dyYW1JRCwgInNbMF0uYlsxXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGgu
c3dpenpsZShjb25zdENvb3JkcywgWzAsMiwxLDNdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVz
dHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlsyXS5hIiwgMS4wLzQuMCk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYocHJvZ3JhbUlELCAic1swXS5iWzJd
LmIiLCBhcnIpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3Jh
bUlELCAic1swXS5jIiwgMCk7CisKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9y
bTFmKHByb2dyYW1JRCwgInNbMV0uYSIsIGNvbnN0Q29vcmRzWzNdKTsKKwkJCQlhcnIgPSBkZU1h
dGguc3dpenpsZShjb25zdENvb3JkcywgWzAsMCwxLDFdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0
VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMV0uYlswXS5hIiwgMi4wKTsKKwkJCQll
czNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzFdLmJbMF0u
YiIsIGFycik7CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsyLDIsMywz
XSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJz
WzFdLmJbMV0uYSIsIDMuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0y
ZnYocHJvZ3JhbUlELCAic1sxXS5iWzFdLmIiLCBhcnIpOworCQkJCWFyciA9IGRlTWF0aC5zd2l6
emxlKGNvbnN0Q29vcmRzLCBbMSwwLDMsMl0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5z
ZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1sxXS5iWzJdLmEiLCA0LjApOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMmZ2KHByb2dyYW1JRCwgInNbMV0uYlsyXS5iIiwgYXJy
KTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgInNb
MV0uYyIsIDEpOworCQkJfSwKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gYy5j
b25zdENvb3Jkc1syXTsKKwkJCQljLmNvbG9yWzFdID0gYy5jb25zdENvb3Jkc1swXTsKKwkJCQlj
LmNvbG9yWzJdID0gYy5jb25zdENvb3Jkc1szXTsKKwkJCX0pOworCisJCVVuaWZvcm1TdHJ1Y3RD
YXNlKCdsb29wX3N0cnVjdF9hcnJheScsICJTdHJ1Y3QgYXJyYXkgdXNhZ2UgaW4gbG9vcCIsIGZh
bHNlLAorCQkJJyR7SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKwor
CQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3R3bztcbicg
KworCQkJJycgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0ICAg
IGE7XG4nICsKKwkJCScgICAgbWVkaXVtcCBpbnQgICAgICAgIGI7XG4nICsKKwkJCSd9O1xuJyAr
CisJCQkndW5pZm9ybSBTIHNbM107XG4nICsKKwkJCScnICsKKwkJCSd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKwkJCSd7XG4nICsKKwkJCScgICAgbWVkaXVtcCBmbG9hdCByZ2JbM107XG4nICsKKwkJ
CScgICAgaW50IGFscGhhID0gMDtcbicgKworCQkJJyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7
IGkrKylcbicgKworCQkJJyAgICB7XG4nICsKKwkJCScgICAgICAgIHJnYltpXSA9IHNbMi1pXS5h
O1xuJyArCisJCQknICAgICAgICBhbHBoYSArPSBzW2ldLmI7XG4nICsKKwkJCScgICAgfVxuJyAr
CisJCQknICAgICR7RFNUfSA9IHZlYzQocmdiWzBdLCByZ2JbMV0sIHJnYlsyXSwgYWxwaGEpO1xu
JyArCisJCQknICAgICR7QVNTSUdOX1BPU31cbicgKworCQkJJ30nLAorCQkJZnVuY3Rpb24ocHJv
Z3JhbUlELCBjb25zdENvb3JkcykgeworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMWYocHJvZ3JhbUlELCAic1swXS5hIiwgY29uc3RDb29yZHNbMF0pOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1swXS5iIiwgMCk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzFdLmEiLCBj
b25zdENvb3Jkc1sxXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShw
cm9ncmFtSUQsICJzWzFdLmIiLCAtMSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVu
aWZvcm0xZihwcm9ncmFtSUQsICJzWzJdLmEiLCBjb25zdENvb3Jkc1syXSk7CisJCQkJZXMzZlNo
YWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzWzJdLmIiLCAyKTsKKwkJ
CX0sCisJCQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMuY29uc3RDb29yZHNbMl07
CisJCQkJYy5jb2xvclsxXSA9IGMuY29uc3RDb29yZHNbMV07CisJCQkJYy5jb2xvclsyXSA9IGMu
Y29uc3RDb29yZHNbMF07CisJCQl9KTsKKworCQlVbmlmb3JtU3RydWN0Q2FzZSgnbG9vcF9uZXN0
ZWRfc3RydWN0X2FycmF5JywgIk5lc3RlZCBzdHJ1Y3QgYXJyYXkgdXNhZ2UgaW4gbG9vcCIsIGZh
bHNlLAorCQkJJyR7SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfemVybztcbicgKwor
CQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3R3bztcbicg
KworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl90d287XG4nICsKKwkJCSd1bmlmb3JtIG1l
ZGl1bXAgZmxvYXQgdWZfdGhyZWU7XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZf
Zm91cjtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9oYWxmO1xuJyArCisJCQkn
dW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX3RoaXJkO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1w
IGZsb2F0IHVmX2ZvdXJ0aDtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9zaXh0
aDtcbicgKworCQkJJycgKworCQkJJ3N0cnVjdCBUIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZs
b2F0ICAgIGE7XG4nICsKKwkJCScgICAgbWVkaXVtcCB2ZWMyICAgIGJbMl07XG4nICsKKwkJCSd9
O1xuJyArCisJCQknc3RydWN0IFMge1xuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgICAgYTtc
bicgKworCQkJJyAgICBUICAgICAgICAgICAgICAgIGJbM107XG4nICsKKwkJCScgICAgaW50ICAg
ICAgICAgICAgICAgIGM7XG4nICsKKwkJCSd9O1xuJyArCisJCQkndW5pZm9ybSBTIHNbMl07XG4n
ICsKKwkJCScnICsKKwkJCSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScg
ICAgbWVkaXVtcCBmbG9hdCByID0gMC4wOyAvLyAoeCozICsgeSozKSAvIDYuMFxuJyArCisJCQkn
ICAgIG1lZGl1bXAgZmxvYXQgZyA9IDAuMDsgLy8gKHkqMyArIHoqMykgLyA2LjBcbicgKworCQkJ
JyAgICBtZWRpdW1wIGZsb2F0IGIgPSAwLjA7IC8vICh6KjMgKyB3KjMpIC8gNi4wXG4nICsKKwkJ
CScgICAgbWVkaXVtcCBmbG9hdCBhID0gMS4wO1xuJyArCisJCQknICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMjsgaSsrKVxuJyArCisJCQknICAgIHtcbicgKworCQkJJyAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCAzOyBqKyspXG4nICsKKwkJCScgICAgICAgIHtcbicgKworCQkJJyAgICAgICAg
ICAgIHIgKz0gc1swXS5iW2pdLmJbaV0ueTtcbicgKworCQkJJyAgICAgICAgICAgIGcgKz0gc1tp
XS5iW2pdLmJbMF0ueDtcbicgKworCQkJJyAgICAgICAgICAgIGIgKz0gc1tpXS5iW2pdLmJbMV0u
eDtcbicgKworCQkJJyAgICAgICAgICAgIGEgKj0gc1tpXS5iW2pdLmE7XG4nICsKKwkJCScgICAg
ICAgIH1cbicgKworCQkJJyAgICB9XG4nICsKKwkJCScgICAgJHtEU1R9ID0gdmVjNChyKnVmX3Np
eHRoLCBnKnVmX3NpeHRoLCBiKnVmX3NpeHRoLCBhKTtcbicgKworCQkJJyAgICAke0FTU0lHTl9Q
T1N9XG4nICsKKwkJCSd9JywKKwkJCWZ1bmN0aW9uKHByb2dyYW1JRCwgY29uc3RDb29yZHMpIHsK
KwkJCQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhcnIgPSBbXTsKKworCQkJCWVz
M2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1swXS5hIiwgY29u
c3RDb29yZHNbMF0pOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMSww
LDIsMF0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlE
LCAic1swXS5iWzBdLmEiLCAwLjUpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMmZ2KHByb2dyYW1JRCwgInNbMF0uYlswXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGgu
c3dpenpsZShjb25zdENvb3JkcywgWzEsMSwzLDFdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVz
dHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlsxXS5hIiwgMS4wLzMuMCk7CisJCQkJ
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYocHJvZ3JhbUlELCAic1swXS5iWzFd
LmIiLCBhcnIpOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMiwxLDIs
MV0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAi
c1swXS5iWzJdLmEiLCAxLjAvNC4wKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5p
Zm9ybTJmdihwcm9ncmFtSUQsICJzWzBdLmJbMl0uYiIsIGFycik7CisJCQkJZXMzZlNoYWRlclN0
cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzWzBdLmMiLCAwKTsKKworCQkJCWVz
M2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1sxXS5hIiwgY29u
c3RDb29yZHNbM10pOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMiww
LDIsMV0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlE
LCAic1sxXS5iWzBdLmEiLCAyLjApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMmZ2KHByb2dyYW1JRCwgInNbMV0uYlswXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGgu
c3dpenpsZShjb25zdENvb3JkcywgWzIsMiwzLDNdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVz
dHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMV0uYlsxXS5hIiwgMy4wKTsKKwkJCQllczNm
U2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzFdLmJbMV0uYiIs
IGFycik7CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsxLDAsMywyXSk7
CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzFd
LmJbMl0uYSIsIDQuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYo
cHJvZ3JhbUlELCAic1sxXS5iWzJdLmIiLCBhcnIpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0
cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1sxXS5jIiwgMSk7CisJCQl9LAorCQkJZnVuY3Rp
b24oYykgeworCQkJCWMuY29sb3JbMF0gPSAoYy5jb25zdENvb3Jkc1swXSArIGMuY29uc3RDb29y
ZHNbMV0pICogMC41OworCQkJCWMuY29sb3JbMV0gPSAoYy5jb25zdENvb3Jkc1sxXSArIGMuY29u
c3RDb29yZHNbMl0pICogMC41OworCQkJCWMuY29sb3JbMl0gPSAoYy5jb25zdENvb3Jkc1syXSAr
IGMuY29uc3RDb29yZHNbM10pICogMC41OworCQkJfSk7CisKKwkJVW5pZm9ybVN0cnVjdENhc2Uo
J2R5bmFtaWNfbG9vcF9zdHJ1Y3RfYXJyYXknLCAiU3RydWN0IGFycmF5IHVzYWdlIGluIGR5bmFt
aWMgbG9vcCIsIGZhbHNlLAorCQkJJyR7SEVBREVSfVxuJyArCisJCQkndW5pZm9ybSBpbnQgdWlf
emVybztcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50
IHVpX3R3bztcbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3RocmVlO1xuJyArCisJCQknJyArCisJ
CQknc3RydWN0IFMge1xuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgICAgYTtcbicgKworCQkJ
JyAgICBtZWRpdW1wIGludCAgICAgICAgYjtcbicgKworCQkJJ307XG4nICsKKwkJCSd1bmlmb3Jt
IFMgc1szXTtcbicgKworCQkJJycgKworCQkJJ3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJJ3tc
bicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0IHJnYlszXTtcbicgKworCQkJJyAgICBpbnQgYWxw
aGEgPSAwO1xuJyArCisJCQknICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdWlfdGhyZWU7IGkrKylc
bicgKworCQkJJyAgICB7XG4nICsKKwkJCScgICAgICAgIHJnYltpXSA9IHNbMi1pXS5hO1xuJyAr
CisJCQknICAgICAgICBhbHBoYSArPSBzW2ldLmI7XG4nICsKKwkJCScgICAgfVxuJyArCisJCQkn
ICAgICR7RFNUfSA9IHZlYzQocmdiWzBdLCByZ2JbMV0sIHJnYlsyXSwgYWxwaGEpO1xuJyArCisJ
CQknICAgICR7QVNTSUdOX1BPU31cbicgKworCQkJJ30nLAorCQkJZnVuY3Rpb24ocHJvZ3JhbUlE
LCBjb25zdENvb3JkcykgeworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYo
cHJvZ3JhbUlELCAic1swXS5hIiwgY29uc3RDb29yZHNbMF0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1
Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1swXS5iIiwgMCk7CisJCQkJZXMzZlNo
YWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzFdLmEiLCBjb25zdENv
b3Jkc1sxXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFt
SUQsICJzWzFdLmIiLCAtMSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0x
Zihwcm9ncmFtSUQsICJzWzJdLmEiLCBjb25zdENvb3Jkc1syXSk7CisJCQkJZXMzZlNoYWRlclN0
cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzWzJdLmIiLCAyKTsKKwkJCX0sCisJ
CQlmdW5jdGlvbihjKSB7CisJCQkJYy5jb2xvclswXSA9IGMuY29uc3RDb29yZHNbMl07CisJCQkJ
Yy5jb2xvclsxXSA9IGMuY29uc3RDb29yZHNbMV07CisJCQkJYy5jb2xvclsyXSA9IGMuY29uc3RD
b29yZHNbMF07CisJCQl9KTsKKworCQlVbmlmb3JtU3RydWN0Q2FzZSgnZHluYW1pY19sb29wX25l
c3RlZF9zdHJ1Y3RfYXJyYXknLCAiTmVzdGVkIHN0cnVjdCBhcnJheSB1c2FnZSBpbiBkeW5hbWlj
IGxvb3AiLCBmYWxzZSwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX3pl
cm87XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV9vbmU7XG4nICsKKwkJCSd1bmlmb3JtIGludCB1
aV90d287XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV90aHJlZTtcbicgKworCQkJJ3VuaWZvcm0g
bWVkaXVtcCBmbG9hdCB1Zl90d287XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZf
dGhyZWU7XG4nICsKKwkJCSd1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdWZfZm91cjtcbicgKworCQkJ
J3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9oYWxmO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1w
IGZsb2F0IHVmX3RoaXJkO1xuJyArCisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX2ZvdXJ0
aDtcbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1Zl9zaXh0aDtcbicgKworCQkJJycg
KworCQkJJ3N0cnVjdCBUIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0ICAgIGE7XG4nICsK
KwkJCScgICAgbWVkaXVtcCB2ZWMyICAgIGJbMl07XG4nICsKKwkJCSd9O1xuJyArCisJCQknc3Ry
dWN0IFMge1xuJyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgICAgYTtcbicgKworCQkJJyAgICBU
ICAgICAgICAgICAgICAgIGJbM107XG4nICsKKwkJCScgICAgaW50ICAgICAgICAgICAgICAgIGM7
XG4nICsKKwkJCSd9O1xuJyArCisJCQkndW5pZm9ybSBTIHNbMl07XG4nICsKKwkJCScnICsKKwkJ
CSd2b2lkIG1haW4gKHZvaWQpXG4nICsKKwkJCSd7XG4nICsKKwkJCScgICAgbWVkaXVtcCBmbG9h
dCByID0gMC4wOyAvLyAoeCozICsgeSozKSAvIDYuMFxuJyArCisJCQknICAgIG1lZGl1bXAgZmxv
YXQgZyA9IDAuMDsgLy8gKHkqMyArIHoqMykgLyA2LjBcbicgKworCQkJJyAgICBtZWRpdW1wIGZs
b2F0IGIgPSAwLjA7IC8vICh6KjMgKyB3KjMpIC8gNi4wXG4nICsKKwkJCScgICAgbWVkaXVtcCBm
bG9hdCBhID0gMS4wO1xuJyArCisJCQknICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdWlfdHdvOyBp
KyspXG4nICsKKwkJCScgICAge1xuJyArCisJCQknICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8
IHVpX3RocmVlOyBqKyspXG4nICsKKwkJCScgICAgICAgIHtcbicgKworCQkJJyAgICAgICAgICAg
IHIgKz0gc1swXS5iW2pdLmJbaV0ueTtcbicgKworCQkJJyAgICAgICAgICAgIGcgKz0gc1tpXS5i
W2pdLmJbMF0ueDtcbicgKworCQkJJyAgICAgICAgICAgIGIgKz0gc1tpXS5iW2pdLmJbMV0ueDtc
bicgKworCQkJJyAgICAgICAgICAgIGEgKj0gc1tpXS5iW2pdLmE7XG4nICsKKwkJCScgICAgICAg
IH1cbicgKworCQkJJyAgICB9XG4nICsKKwkJCScgICAgJHtEU1R9ID0gdmVjNChyKnVmX3NpeHRo
LCBnKnVmX3NpeHRoLCBiKnVmX3NpeHRoLCBhKTtcbicgKworCQkJJyAgICAke0FTU0lHTl9QT1N9
XG4nICsKKwkJCSd9JywKKwkJCWZ1bmN0aW9uKHByb2dyYW1JRCwgY29uc3RDb29yZHMpIHsKKwkJ
CQkvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBhcnIgPSBbXTsKKworCQkJCWVzM2ZT
aGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1swXS5hIiwgY29uc3RD
b29yZHNbMF0pOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMSwwLDIs
MF0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAi
c1swXS5iWzBdLmEiLCAwLjUpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3Jt
MmZ2KHByb2dyYW1JRCwgInNbMF0uYlswXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGguc3dp
enpsZShjb25zdENvb3JkcywgWzEsMSwzLDFdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMu
c2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMF0uYlsxXS5hIiwgMS4wLzMuMCk7CisJCQkJZXMz
ZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYocHJvZ3JhbUlELCAic1swXS5iWzFdLmIi
LCBhcnIpOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMiwxLDIsMV0p
OworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1sw
XS5iWzJdLmEiLCAgICAxLjAvNC4wKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5p
Zm9ybTJmdihwcm9ncmFtSUQsICJzWzBdLmJbMl0uYiIsIGFycik7CisJCQkJZXMzZlNoYWRlclN0
cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzWzBdLmMiLCAwKTsKKworCQkJCWVz
M2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAic1sxXS5hIiwgY29u
c3RDb29yZHNbM10pOworCQkJCWFyciA9IGRlTWF0aC5zd2l6emxlKGNvbnN0Q29vcmRzLCBbMiww
LDIsMV0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlE
LCAic1sxXS5iWzBdLmEiLCAyLjApOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlm
b3JtMmZ2KHByb2dyYW1JRCwgInNbMV0uYlswXS5iIiwgYXJyKTsKKwkJCQlhcnIgPSBkZU1hdGgu
c3dpenpsZShjb25zdENvb3JkcywgWzIsMiwzLDNdKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVz
dHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwgInNbMV0uYlsxXS5hIiwgMy4wKTsKKwkJCQllczNm
U2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzWzFdLmJbMV0uYiIs
IGFycik7CisJCQkJYXJyID0gZGVNYXRoLnN3aXp6bGUoY29uc3RDb29yZHMsIFsxLDAsMywyXSk7
CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzFd
LmJbMl0uYSIsIDQuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0yZnYo
cHJvZ3JhbUlELCAic1sxXS5iWzJdLmIiLCBhcnIpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0
cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAic1sxXS5jIiwgMSk7CisJCQl9LAorCQkJZnVuY3Rp
b24oYykgeworCQkJCWMuY29sb3JbMF0gPSAoYy5jb25zdENvb3Jkc1swXSArIGMuY29uc3RDb29y
ZHNbMV0pICogMC41OworCQkJCWMuY29sb3JbMV0gPSAoYy5jb25zdENvb3Jkc1sxXSArIGMuY29u
c3RDb29yZHNbMl0pICogMC41OworCQkJCWMuY29sb3JbMl0gPSAoYy5jb25zdENvb3Jkc1syXSAr
IGMuY29uc3RDb29yZHNbM10pICogMC41OworCQkJfSk7CisKKwkJVW5pZm9ybVN0cnVjdENhc2Uo
J3NhbXBsZXInLCAiU2FtcGxlciBpbiBzdHJ1Y3QiLCB0cnVlLAorCQkJJyR7SEVBREVSfVxuJyAr
CisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyArCisJCQknJyArCisJCQknc3RydWN0IFMge1xu
JyArCisJCQknICAgIG1lZGl1bXAgZmxvYXQgICAgYTtcbicgKworCQkJJyAgICBtZWRpdW1wIHZl
YzMgICAgYjtcbicgKworCQkJJyAgICBzYW1wbGVyMkQgICAgICAgIGM7XG4nICsKKwkJCSd9O1xu
JyArCisJCQkndW5pZm9ybSBTIHM7XG4nICsKKwkJCScnICsKKwkJCSd2b2lkIG1haW4gKHZvaWQp
XG4nICsKKwkJCSd7XG4nICsKKwkJCScgICAgJHtEU1R9ID0gdmVjNCh0ZXh0dXJlKHMuYywgJHtD
T09SRFN9Lnh5ICogcy5iLnh5ICsgcy5iLnopLnJnYiwgcy5hKTtcbicgKworCQkJJyAgICAke0FT
U0lHTl9QT1N9XG4nICsKKwkJCSd9JywKKwkJCWZ1bmN0aW9uKHByb2dyYW1JRCwgY29uc3RDb29y
ZHMpIHsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dyYW1JRCwg
InMuYSIsIDEuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0zZnYocHJv
Z3JhbUlELCAicy5iIiwgWzAuMjUsIDAuMjUsIDAuNV0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RU
ZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAicy5jIiwgMCk7CisJCQl9LAorCQkJZnVuY3Rp
b24oYykgeworCQkJCXZhciB0ZXgyZCA9IGMudGV4dHVyZTJEKGVzM2ZTaGFkZXJTdHJ1Y3RUZXN0
cy5URVhUVVJFX0JSSUNLLCBkZU1hdGguYWRkU2NhbGFyKGRlTWF0aC5zY2FsZShkZU1hdGguc3dp
enpsZShjLmNvb3JkcywgWzAsMV0pLCAwLjI1KSwgMC41KSkKKworCQkJCWMuY29sb3JbMF0gPSB0
ZXgyZFswXTsKKwkJCQljLmNvbG9yWzFdID0gdGV4MmRbMV07CisJCQkJYy5jb2xvclsyXSA9IHRl
eDJkWzJdOworCQkJfSk7CisKKwkJVW5pZm9ybVN0cnVjdENhc2UoJ3NhbXBsZXJfbmVzdGVkJywg
IlNhbXBsZXIgaW4gbmVzdGVkIHN0cnVjdCIsIHRydWUsCisJCQknJHtIRUFERVJ9XG4nICsKKwkJ
CSd1bmlmb3JtIGludCB1aV96ZXJvO1xuJyArCisJCQkndW5pZm9ybSBpbnQgdWlfb25lO1xuJyAr
CisJCQknJyArCisJCQknc3RydWN0IFQge1xuJyArCisJCQknICAgIHNhbXBsZXIyRCAgICAgICAg
YTtcbicgKworCQkJJyAgICBtZWRpdW1wIHZlYzIgICAgYjtcbicgKworCQkJJ307XG4nICsKKwkJ
CSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScgICAgbWVkaXVtcCBmbG9hdCAgICBhO1xuJyArCisJCQkn
ICAgIFQgICAgICAgICAgICAgICAgYjtcbicgKworCQkJJyAgICBpbnQgICAgICAgICAgICAgICAg
YztcbicgKworCQkJJ307XG4nICsKKwkJCSd1bmlmb3JtIFMgcztcbicgKworCQkJJycgKworCQkJ
J3ZvaWQgbWFpbiAodm9pZClcbicgKworCQkJJ3tcbicgKworCQkJJyAgICAke0RTVH0gPSB2ZWM0
KHRleHR1cmUocy5iLmEsICR7Q09PUkRTfS54eSAqIHMuYi5iICsgcy5hKS5yZ2IsIHMuYyk7XG4n
ICsKKwkJCScgICAgJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJCQlmdW5jdGlvbihwcm9n
cmFtSUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZv
cm0xZihwcm9ncmFtSUQsICJzLmEiLCAwLjUpOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5z
ZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAicy5iLmEiLCAwKTsKKwkJCQllczNmU2hhZGVyU3RydWN0
VGVzdHMuc2V0VW5pZm9ybTJmdihwcm9ncmFtSUQsICJzLmIuYiIsIFswLjI1LCAwLjI1XSk7CisJ
CQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQsICJzLmMiLCAx
KTsKKwkJCX0sCisJCQlmdW5jdGlvbihjKSB7CisJCQkJdmFyIHRleDJkID0gYy50ZXh0dXJlMkQo
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLlRFWFRVUkVfQlJJQ0ssIGRlTWF0aC5hZGRTY2FsYXIoZGVN
YXRoLnNjYWxlKGRlTWF0aC5zd2l6emxlKGMuY29vcmRzLCBbMCwxXSksIDAuMjUpLCAwLjUpKTsK
KwkJCQljLmNvbG9yWzBdID0gdGV4MmRbMF07CisJCQkJYy5jb2xvclsxXSA9IHRleDJkWzFdOwor
CQkJCWMuY29sb3JbMl0gPSB0ZXgyZFsyXTsKKwkJCX0pOworCisJCVVuaWZvcm1TdHJ1Y3RDYXNl
KCdzYW1wbGVyX2FycmF5JywgIlNhbXBsZXIgaW4gc3RydWN0IGFycmF5IiwgdHJ1ZSwKKwkJCSck
e0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gaW50IHVpX29uZTtcbicgKworCQkJJycgKworCQkJ
J3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRpdW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJCScg
ICAgbWVkaXVtcCB2ZWMzICAgIGI7XG4nICsKKwkJCScgICAgc2FtcGxlcjJEICAgICAgICBjO1xu
JyArCisJCQknfTtcbicgKworCQkJJ3VuaWZvcm0gUyBzWzJdO1xuJyArCisJCQknJyArCisJCQkn
dm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknICAgICR7RFNUfSA9IHZlYzQo
dGV4dHVyZShzWzFdLmMsICR7Q09PUkRTfS54eSAqIHNbMF0uYi54eSArIHNbMV0uYi56KS5yZ2Is
IHNbMF0uYSk7XG4nICsKKwkJCScgICAgJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJCQlm
dW5jdGlvbihwcm9ncmFtSUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRl
c3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJzWzBdLmEiLCAxLjApOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtM2Z2KHByb2dyYW1JRCwgInNbMF0uYiIsIFswLjI1LCAw
LjI1LCAwLjI1XSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9n
cmFtSUQsICJzWzBdLmMiLCAxKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9y
bTFmKHByb2dyYW1JRCwgInNbMV0uYSIsIDAuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3Rz
LnNldFVuaWZvcm0zZnYocHJvZ3JhbUlELCAic1sxXS5iIiwgWzAuNSwgMC41LCAwLjVdKTsKKwkJ
CQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgInNbMV0uYyIs
IDApOworCQkJfSwKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQl2YXIgdGV4MmQgPSBjLnRleHR1cmUy
RChlczNmU2hhZGVyU3RydWN0VGVzdHMuVEVYVFVSRV9CUklDSywgZGVNYXRoLmFkZFNjYWxhcihk
ZU1hdGguc2NhbGUoZGVNYXRoLnN3aXp6bGUoYy5jb29yZHMsIFswLDFdKSwgMC4yNSksIDAuNSkp
OworCQkJCWMuY29sb3JbMF0gPSB0ZXgyZFswXTsKKwkJCQljLmNvbG9yWzFdID0gdGV4MmRbMV07
CisJCQkJYy5jb2xvclsyXSA9IHRleDJkWzJdOworCQkJfSk7CisKKwkJVW5pZm9ybVN0cnVjdENh
c2UoJ2VxdWFsJywgIlN0cnVjdCBlcXVhbGl0eSIsIGZhbHNlLAorCQkJJyR7SEVBREVSfVxuJyAr
CisJCQkndW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVmX29uZTtcbicgKworCQkJJ3VuaWZvcm0gaW50
IHVpX3R3bztcbicgKworCQkJJycgKworCQkJJ3N0cnVjdCBTIHtcbicgKworCQkJJyAgICBtZWRp
dW1wIGZsb2F0ICAgIGE7XG4nICsKKwkJCScgICAgbWVkaXVtcCB2ZWMzICAgIGI7XG4nICsKKwkJ
CScgICAgaW50ICAgICAgICAgICAgICAgIGM7XG4nICsKKwkJCSd9O1xuJyArCisJCQkndW5pZm9y
bSBTIGE7XG4nICsKKwkJCSd1bmlmb3JtIFMgYjtcbicgKworCQkJJ3VuaWZvcm0gUyBjO1xuJyAr
CisJCQknJyArCisJCQkndm9pZCBtYWluICh2b2lkKVxuJyArCisJCQkne1xuJyArCisJCQknICAg
IFMgZCA9IFModWZfb25lLCB2ZWMzKDAuMCwgZmxvb3IoJHtDT09SRFN9LnkrMS4wKSwgMi4wKSwg
dWlfdHdvKTtcbicgKworCQkJJyAgICAke0RTVH0gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7
XG4nICsKKwkJCScgICAgaWYgKGEgPT0gYikgJHtEU1R9LnggPSAxLjA7XG4nICsKKwkJCScgICAg
aWYgKGEgPT0gYykgJHtEU1R9LnkgPSAxLjA7XG4nICsKKwkJCScgICAgaWYgKGEgPT0gZCkgJHtE
U1R9LnogPSAxLjA7XG4nICsKKwkJCScgICAgJHtBU1NJR05fUE9TfVxuJyArCisJCQknfScsCisJ
CQlmdW5jdGlvbihwcm9ncmFtSUQsIGNvbnN0Q29vcmRzKSB7CisJCQkJZXMzZlNoYWRlclN0cnVj
dFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJhLmEiLCAxLjApOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtM2Z2KHByb2dyYW1JRCwgImEuYiIsIFswLjAsIDEuMCwg
Mi4wXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShwcm9ncmFtSUQs
ICJhLmMiLCAyKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFmKHByb2dy
YW1JRCwgImIuYSIsIDEuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0z
ZnYocHJvZ3JhbUlELCAiYi5iIiwgWzAuMCwgMS4wLCAyLjBdKTsKKwkJCQllczNmU2hhZGVyU3Ry
dWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgImIuYyIsIDIpOworCQkJCWVzM2ZTaGFk
ZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJvZ3JhbUlELCAiYy5hIiwgMS4wKTsKKwkJCQll
czNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTNmdihwcm9ncmFtSUQsICJjLmIiLCBbMC4w
LCAxLjEsIDIuMF0pOworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJv
Z3JhbUlELCAiYy5jIiwgMik7CisJCQl9LAorCQkJZnVuY3Rpb24oYykgeworCQkJCWMuY29sb3Jb
MF0gPSAxLjA7CisJCQkJYy5jb2xvclsxXSA9IDAuMDsKKwkJCQlpZiAoTWF0aC5mbG9vcihjLmNv
b3Jkc1sxXSArIDEuMCkgPT0gTWF0aC5mbG9vcigxLjEpKQorCQkJCQljLmNvbG9yWzJdID0gMS4w
OworCQkJfSk7CisKKwkJVW5pZm9ybVN0cnVjdENhc2UoJ25vdF9lcXVhbCcsICJTdHJ1Y3QgZXF1
YWxpdHkiLCBmYWxzZSwKKwkJCScke0hFQURFUn1cbicgKworCQkJJ3VuaWZvcm0gbWVkaXVtcCBm
bG9hdCB1Zl9vbmU7XG4nICsKKwkJCSd1bmlmb3JtIGludCB1aV90d287XG4nICsKKwkJCScnICsK
KwkJCSdzdHJ1Y3QgUyB7XG4nICsKKwkJCScgICAgbWVkaXVtcCBmbG9hdCAgICBhO1xuJyArCisJ
CQknICAgIG1lZGl1bXAgdmVjMyAgICBiO1xuJyArCisJCQknICAgIGludCAgICAgICAgICAgICAg
ICBjO1xuJyArCisJCQknfTtcbicgKworCQkJJ3VuaWZvcm0gUyBhO1xuJyArCisJCQkndW5pZm9y
bSBTIGI7XG4nICsKKwkJCSd1bmlmb3JtIFMgYztcbicgKworCQkJJycgKworCQkJJ3ZvaWQgbWFp
biAodm9pZClcbicgKworCQkJJ3tcbicgKworCQkJJyAgICBTIGQgPSBTKHVmX29uZSwgdmVjMygw
LjAsIGZsb29yKCR7Q09PUkRTfS55KzEuMCksIDIuMCksIHVpX3R3byk7XG4nICsKKwkJCScgICAg
JHtEU1R9ID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xuJyArCisJCQknICAgIGlmIChhICE9
IGIpICR7RFNUfS54ID0gMS4wO1xuJyArCisJCQknICAgIGlmIChhICE9IGMpICR7RFNUfS55ID0g
MS4wO1xuJyArCisJCQknICAgIGlmIChhICE9IGQpICR7RFNUfS56ID0gMS4wO1xuJyArCisJCQkn
ICAgICR7QVNTSUdOX1BPU31cbicgKworCQkJJ30nLAorCQkJZnVuY3Rpb24ocHJvZ3JhbUlELCBj
b25zdENvb3JkcykgeworCQkJCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWYocHJv
Z3JhbUlELCAiYS5hIiwgMS4wKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9y
bTNmdihwcm9ncmFtSUQsICJhLmIiLCBbMC4wLCAxLjAsIDIuMF0pOworCQkJCWVzM2ZTaGFkZXJT
dHJ1Y3RUZXN0cy5zZXRVbmlmb3JtMWkocHJvZ3JhbUlELCAiYS5jIiwgMik7CisJCQkJZXMzZlNo
YWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xZihwcm9ncmFtSUQsICJiLmEiLCAxLjApOworCQkJ
CWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5zZXRVbmlmb3JtM2Z2KHByb2dyYW1JRCwgImIuYiIsIFsw
LjAsIDEuMCwgMi4wXSk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNldFVuaWZvcm0xaShw
cm9ncmFtSUQsICJiLmMiLCAyKTsKKwkJCQllczNmU2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9y
bTFmKHByb2dyYW1JRCwgImMuYSIsIDEuMCk7CisJCQkJZXMzZlNoYWRlclN0cnVjdFRlc3RzLnNl
dFVuaWZvcm0zZnYocHJvZ3JhbUlELCAiYy5iIiwgWzAuMCwgMS4xLCAyLjBdKTsKKwkJCQllczNm
U2hhZGVyU3RydWN0VGVzdHMuc2V0VW5pZm9ybTFpKHByb2dyYW1JRCwgImMuYyIsIDIpOworCQkJ
fSwKKwkJCWZ1bmN0aW9uKGMpIHsKKwkJCQljLmNvbG9yWzBdID0gMC4wOworCQkJCWMuY29sb3Jb
MV0gPSAxLjA7CisJCQkJaWYgKE1hdGguZmxvb3IoYy5jb29yZHNbMV0gKyAxLjApICE9IE1hdGgu
Zmxvb3IoMS4xKSkKKwkJCQkJYy5jb2xvclsyXSA9IDEuMDsKKwkJCX0pOworCisJfTsKKworCS8q
KgorCSAqIEBjb25zdHJ1Y3RvcgorCSAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0K
KwkgKi8KKwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3RydWN0VGVzdHMgPSBmdW5jdGlv
bigpIHsKKwkJdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnc3RydWN0JywgJ1N0cnVj
dCBUZXN0cycpOworCX07CisKKwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3RydWN0VGVz
dHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5
cGUpOworCWVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5TaGFkZXJTdHJ1Y3RUZXN0cy5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBlczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3RydWN0VGVzdHM7CisK
KwllczNmU2hhZGVyU3RydWN0VGVzdHMuU2hhZGVyU3RydWN0VGVzdHMucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbigpIHsKKwkJdGhpcy5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclN0cnVjdFRlc3Rz
LkxvY2FsU3RydWN0VGVzdHMoKSk7CisJCXRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTaGFkZXJTdHJ1
Y3RUZXN0cy5Vbmlmb3JtU3RydWN0VGVzdHMoKSk7CisJfTsKKworCS8qKgorICAgICAqIFJ1biB0
ZXN0CisgICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisgICAg
ICovCisgICAgZXMzZlNoYWRlclN0cnVjdFRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsK
KyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAgICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1l
dGVycworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgICAgIHN0
YXRlLnNldFJvb3QobmV3IGVzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5TaGFkZXJTdHJ1Y3RUZXN0cygp
KTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qg
c2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1bGxO
YW1lKCkpOworICAgICAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3JpcHRp
b24oKSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL1J1biB0ZXN0IGNhc2VzCisgICAg
ICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfQorICAgICAgICBj
YXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGVz
M2ZTaGFkZXJTdHJ1Y3RUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VU
ZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCisKK30pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmU2hhZGVyU3dpdGNoVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc2NzBmOWQ2NDRhODYxZmE1
NDExNzY2YzA1ZTA2YTBmZGVjNTNmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
U2hhZGVyU3dpdGNoVGVzdHMuanMKQEAgLTAsMCArMSw0OTIgQEAKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAq
LworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlclN3aXRjaFRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3Ry
aW5nVGVtcGxhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZScpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7
CisKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKyAgICB2YXIgZXMzZlNoYWRlclN3aXRjaFRl
c3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3dpdGNoVGVzdHM7CisgICAgdmFyIGds
c1NoYWRlclJlbmRlckNhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlOwor
ICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAg
dmFyIHRjdVN0cmluZ1RlbXBsYXRlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdHJpbmdUZW1wbGF0
ZTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNT
aGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGlzVmVydGV4Q2FzZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2dHhTb3VyY2UK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhZ1NvdXJjZQorICAgICAqIEBwYXJhbSB7Z2xzU2hh
ZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsRnVuYz19IGV2YWxGdW5jCisgICAgICovCisgICAgZXMz
ZlNoYWRlclN3aXRjaFRlc3RzLlNoYWRlclN3aXRjaENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNj
cmlwdGlvbiwgaXNWZXJ0ZXhDYXNlLCB2dHhTb3VyY2UsIGZyYWdTb3VyY2UsIGV2YWxGdW5jKSB7
CisgICAgICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5jYWxsKHRoaXMs
IG5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWxGdW5jKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubV92ZXJ0U2hhZGVyU291cmNlID0gdnR4U291cmNlOwor
ICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2UgPSBm
cmFnU291cmNlOworICAgIH07CisKKyAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU2hhZGVyU3dp
dGNoQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1NoYWRlclJlbmRlckNhc2UuU2hh
ZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5TaGFk
ZXJTd2l0Y2hDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJTd2l0Y2hUZXN0
cy5TaGFkZXJTd2l0Y2hDYXNlOworCisgICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU3dpdGNoVHlwZSA9IHsKKyAgICAgICAg
U1RBVElDOiAwLAorICAgICAgICBVTklGT1JNOiAxLAorICAgICAgICBEWU5BTUlDOiAyCisgICAg
fTsKKworICAgIC8qKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRl
eHR9IGV2YWxDdHggKi8KKyAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMuZXZhbFN3aXRjaFN0YXRp
YyA9IGZ1bmN0aW9uKGV2YWxDdHgpIHsKKyAgICAgICAgZXZhbEN0eC5jb2xvclswXSA9IGV2YWxD
dHguY29vcmRzWzFdOworICAgICAgICBldmFsQ3R4LmNvbG9yWzFdID0gZXZhbEN0eC5jb29yZHNb
Ml07CisgICAgICAgIGV2YWxDdHguY29sb3JbMl0gPSBldmFsQ3R4LmNvb3Jkc1szXTsKKyAgICB9
OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dH0gZXZhbEN0eCAqLworICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5ldmFsU3dpdGNoVW5pZm9y
bSA9IGZ1bmN0aW9uKGV2YWxDdHgpIHsKKyAgICAgICAgZXZhbEN0eC5jb2xvclswXSA9IGV2YWxD
dHguY29vcmRzWzFdOworICAgICAgICBldmFsQ3R4LmNvbG9yWzFdID0gZXZhbEN0eC5jb29yZHNb
Ml07CisgICAgICAgIGV2YWxDdHguY29sb3JbMl0gPSBldmFsQ3R4LmNvb3Jkc1szXTsKKyAgICB9
OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dH0gZXZhbEN0eCAqLworICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5ldmFsU3dpdGNoRHluYW1p
YyA9IGZ1bmN0aW9uKGV2YWxDdHgpIHsKKyAgICAgICAgc3dpdGNoIChNYXRoLmZsb29yKGV2YWxD
dHguY29vcmRzWzJdKjEuNSArIDIuMCkpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAg
ICAgICAgICBldmFsQ3R4LmNvbG9yWzBdID0gZXZhbEN0eC5jb29yZHNbMF07CisgICAgICAgICAg
ICAgICAgZXZhbEN0eC5jb2xvclsxXSA9IGV2YWxDdHguY29vcmRzWzFdOworICAgICAgICAgICAg
ICAgIGV2YWxDdHguY29sb3JbMl0gPSBldmFsQ3R4LmNvb3Jkc1syXTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBldmFsQ3R4LmNv
bG9yWzBdID0gZXZhbEN0eC5jb29yZHNbM107CisgICAgICAgICAgICAgICAgZXZhbEN0eC5jb2xv
clsxXSA9IGV2YWxDdHguY29vcmRzWzJdOworICAgICAgICAgICAgICAgIGV2YWxDdHguY29sb3Jb
Ml0gPSBldmFsQ3R4LmNvb3Jkc1sxXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBldmFsQ3R4LmNvbG9yWzBdID0gZXZhbEN0eC5j
b29yZHNbMV07CisgICAgICAgICAgICAgICAgZXZhbEN0eC5jb2xvclsxXSA9IGV2YWxDdHguY29v
cmRzWzJdOworICAgICAgICAgICAgICAgIGV2YWxDdHguY29sb3JbMl0gPSBldmFsQ3R4LmNvb3Jk
c1szXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICBldmFsQ3R4LmNvbG9yWzBdID0gZXZhbEN0eC5jb29yZHNbMl07CisgICAgICAg
ICAgICAgICAgZXZhbEN0eC5jb2xvclsxXSA9IGV2YWxDdHguY29vcmRzWzFdOworICAgICAgICAg
ICAgICAgIGV2YWxDdHguY29sb3JbMl0gPSBldmFsQ3R4LmNvb3Jkc1swXTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZXZhbEN0
eC5jb2xvclswXSA9IGV2YWxDdHguY29vcmRzWzBdOworICAgICAgICAgICAgICAgIGV2YWxDdHgu
Y29sb3JbMV0gPSBldmFsQ3R4LmNvb3Jkc1swXTsKKyAgICAgICAgICAgICAgICBldmFsQ3R4LmNv
bG9yWzJdID0gZXZhbEN0eC5jb29yZHNbMF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lCisg
ICAgICogQHBhcmFtICB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtICB7ZXMzZlNoYWRlclN3
aXRjaFRlc3RzLlN3aXRjaFR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0gIHtib29sZWFufSBpc1Zl
cnRleAorICAgICAqIEBwYXJhbSAge3N0cmluZ30gc3dpdGNoQm9keQorICAgICAqIEByZXR1cm4g
e2VzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5TaGFkZXJTd2l0Y2hDYXNlfQorICAgICAqLworICAgIGVz
M2ZTaGFkZXJTd2l0Y2hUZXN0cy5tYWtlU3dpdGNoQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2Ms
IHR5cGUsIGlzVmVydGV4LCBzd2l0Y2hCb2R5KSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgdnR4ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJh
ZyA9ICcnOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wID0gJyc7CisKKyAg
ICAgICAgdnR4ICs9ICIjdmVyc2lvbiAzMDAgZXNcbiIgKworICAgICAgICAgICAgICAgImluIGhp
Z2hwIHZlYzQgYV9wb3NpdGlvbjtcbiIgKworICAgICAgICAgICAgICAgImluIGhpZ2hwIHZlYzQg
YV9jb29yZHM7XG4iOworICAgICAgICBmcmFnICs9ICIjdmVyc2lvbiAzMDAgZXNcbiIgKworICAg
ICAgICAgICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29s
b3I7XG4iOworCisgICAgICAgIGlmIChpc1ZlcnRleCkgeworICAgICAgICAgICAgdnR4ICs9ICJv
dXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4iOworICAgICAgICAgICAgZnJhZyArPSAiaW4gbWVk
aXVtcCB2ZWM0IHZfY29sb3I7XG4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdnR4
ICs9ICJvdXQgaGlnaHAgdmVjNCB2X2Nvb3JkcztcbiI7CisgICAgICAgICAgICBmcmFnICs9ICJp
biBoaWdocCB2ZWM0IHZfY29vcmRzO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBl
ID09PSBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU3dpdGNoVHlwZS5VTklGT1JNKQorICAgICAgICAg
ICAgb3AgKz0gInVuaWZvcm0gaGlnaHAgaW50IHVpX3R3bztcbiI7CisKKyAgICAgICAgdnR4ICs9
IGlzVmVydGV4ID8gb3AgOiAnJzsKKyAgICAgICAgZnJhZyArPSBpc1ZlcnRleCA/ICcnIDogb3A7
CisgICAgICAgIG9wID0gJyc7CisKKyAgICAgICAgdnR4ICs9ICJcbiIgKworICAgICAgICAgICAg
InZvaWQgbWFpbiAodm9pZClcbiIgKworICAgICAgICAgICAgIntcbiIgKworICAgICAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iOworICAgICAgICBmcmFnICs9ICJcbiIg
KworICAgICAgICAgICAgICAgICJ2b2lkIG1haW4gKHZvaWQpXG4iICsKKyAgICAgICAgICAgICAg
ICAie1xuIjsKKworICAgICAgICAvLyBTZXR1cC4KKyAgICAgICAgb3AgKz0gIiAgICBoaWdocCB2
ZWM0IGNvb3JkcyA9ICIgKyAoaXNWZXJ0ZXggPyAiYV9jb29yZHMiIDogInZfY29vcmRzIikgKyAi
O1xuIjsKKyAgICAgICAgb3AgKz0gIiAgICBtZWRpdW1wIHZlYzMgcmVzID0gdmVjMygwLjApO1xu
XG4iOworICAgICAgICB2dHggKz0gaXNWZXJ0ZXggPyBvcCA6ICcnOworICAgICAgICBmcmFnICs9
IGlzVmVydGV4ID8gJycgOiBvcDsKKyAgICAgICAgb3AgPSAnJzsKKworICAgICAgICAvLyBTd2l0
Y2ggYm9keS4KKyAgICAgICAgdmFyIHBhcmFtcyA9IHt9OworICAgICAgICBwYXJhbXNbIkNPTkRJ
VElPTiJdID0gdHlwZSA9PSBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU3dpdGNoVHlwZS5TVEFUSUMg
PyAiMiIgICAgIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gZXMzZlNo
YWRlclN3aXRjaFRlc3RzLlN3aXRjaFR5cGUuVU5JRk9STSA/ICJ1aV90d28iIDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gZXMzZlNoYWRlclN3aXRjaFRlc3RzLlN3aXRj
aFR5cGUuRFlOQU1JQyA/ICJpbnQoZmxvb3IoY29vcmRzLnoqMS41ICsgMi4wKSkiIDogIj8/PyI7
CisKKyAgICAgICAgb3AgKz0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShzd2l0Y2hCb2R5
LCBwYXJhbXMpOworICAgICAgICBvcCArPSAiXG4iOworCisgICAgICAgIHZ0eCArPSBpc1ZlcnRl
eCA/IG9wIDogJyc7CisgICAgICAgIGZyYWcgKz0gaXNWZXJ0ZXggPyAnJyA6IG9wOworICAgICAg
ICBvcCA9ICcnOworCisgICAgICAgIGlmIChpc1ZlcnRleCkgeworICAgICAgICAgICAgdnR4ICs9
ICIgICAgdl9jb2xvciA9IHZlYzQocmVzLCAxLjApO1xuIjsKKyAgICAgICAgICAgIGZyYWcgKz0g
IiAgICBvX2NvbG9yID0gdl9jb2xvcjtcbiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2dHggKz0gIiAgICB2X2Nvb3JkcyA9IGFfY29vcmRzO1xuIjsKKyAgICAgICAgICAgIGZyYWcg
Kz0gIiAgICBvX2NvbG9yID0gdmVjNChyZXMsIDEuMCk7XG4iOworICAgICAgICB9CisKKyAgICAg
ICAgdnR4ICs9ICJ9XG4iOworICAgICAgICBmcmFnICs9ICJ9XG4iOworCisgICAgICAgIHJldHVy
biBuZXcgZXMzZlNoYWRlclN3aXRjaFRlc3RzLlNoYWRlclN3aXRjaENhc2UobmFtZSwgZGVzYywg
aXNWZXJ0ZXgsIHZ0eCwgZnJhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGUgPT09IGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5Td2l0Y2hUeXBlLlNUQVRJQyA/IGVzM2ZT
aGFkZXJTd2l0Y2hUZXN0cy5ldmFsU3dpdGNoU3RhdGljIDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPT09IGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5Td2l0Y2hUeXBl
LlVOSUZPUk0gPyBlczNmU2hhZGVyU3dpdGNoVGVzdHMuZXZhbFN3aXRjaFVuaWZvcm0gOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gZXMzZlNoYWRlclN3aXRj
aFRlc3RzLlN3aXRjaFR5cGUuRFlOQU1JQyA/IGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5ldmFsU3dp
dGNoRHluYW1pYyA6IHVuZGVmaW5lZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9IGdyb3VwCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBz
d2l0Y2hCb2R5CisgICAgICovCisgICAgZXMzZlNoYWRlclN3aXRjaFRlc3RzLm1ha2VTd2l0Y2hD
YXNlcyA9IGZ1bmN0aW9uKGdyb3VwLCBuYW1lLCBkZXNjLCBzd2l0Y2hCb2R5KSB7CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHN3aXRjaFR5cGVOYW1lcyA9IFsic3Rh
dGljIiwgInVuaWZvcm0iLCAiZHluYW1pYyJdOworICAgICAgICBmb3IgKHZhciB0eXBlIGluIGVz
M2ZTaGFkZXJTd2l0Y2hUZXN0cy5Td2l0Y2hUeXBlKSB7CisgICAgICAgICAgICBncm91cC5hZGRD
aGlsZChlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2UobmFtZSArICJfIiArIHN3
aXRjaFR5cGVOYW1lc1tlczNmU2hhZGVyU3dpdGNoVGVzdHMuU3dpdGNoVHlwZVt0eXBlXV0gKyAi
X3ZlcnRleCIsIGRlc2MsIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5Td2l0Y2hUeXBlW3R5cGVdLCB0
cnVlLCBzd2l0Y2hCb2R5KSk7CisgICAgICAgICAgICBncm91cC5hZGRDaGlsZChlczNmU2hhZGVy
U3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2UobmFtZSArICJfIiArIHN3aXRjaFR5cGVOYW1lc1tl
czNmU2hhZGVyU3dpdGNoVGVzdHMuU3dpdGNoVHlwZVt0eXBlXV0gKyAiX2ZyYWdtZW50IiwgZGVz
YywgZXMzZlNoYWRlclN3aXRjaFRlc3RzLlN3aXRjaFR5cGVbdHlwZV0sIGZhbHNlLCBzd2l0Y2hC
b2R5KSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVz
M2ZTaGFkZXJTd2l0Y2hUZXN0cy5TaGFkZXJTd2l0Y2hUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdzd2l0Y2gnLCAnU3dpdGNoIHN0
YXRlbWVudCB0ZXN0cycpOworICAgIH07CisKKyAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU2hh
ZGVyU3dpdGNoVGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5TaGFkZXJTd2l0Y2hU
ZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU2hhZGVy
U3dpdGNoVGVzdHM7CisKKyAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMuU2hhZGVyU3dpdGNoVGVz
dHMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gRXhwZWN0ZWQgc3dp
enpsZXM6CisgICAgICAgIC8vIDA6IHh5egorICAgICAgICAvLyAxOiB3enkKKyAgICAgICAgLy8g
MjogeXp3CisgICAgICAgIC8vIDM6IHp5eAorICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMu
bWFrZVN3aXRjaENhc2VzKHRoaXMsICJiYXNpYyIsICJCYXNpYyBzd2l0Y2ggc3RhdGVtZW50IHVz
YWdlIiwKKyAgICAgICAgICAgICcgICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlcbicgKworICAgICAg
ICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAgIHJl
cyA9IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNl
IDE6ICAgICAgICByZXMgPSBjb29yZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAgICAg
JyAgICAgICAgY2FzZSAyOiAgICAgICAgcmVzID0gY29vcmRzLnl6dzsgICAgYnJlYWs7XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMzogICAgICAgIHJlcyA9IGNvb3Jkcy56eXg7ICAg
IGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgIH1cbicpOworCisgICAgICAgIGVzM2ZTaGFk
ZXJTd2l0Y2hUZXN0cy5tYWtlU3dpdGNoQ2FzZXModGhpcywgImNvbnN0X2V4cHJfaW5fbGFiZWwi
LCAiQ29uc3RhbnQgZXhwcmVzc2lvbiBpbiBsYWJlbCIsCisgICAgICAgICAgICAnICAgIGNvbnN0
IGludCB0ID0gMjtcbicgKworICAgICAgICAgICAgJyAgICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlc
bicgKworICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2Ug
aW50KDAuMCk6ICAgIHJlcyA9IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAg
ICAnICAgICAgICBjYXNlIDItMTogICAgICAgIHJlcyA9IGNvb3Jkcy53enk7ICAgIGJyZWFrO1xu
JyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDMmKDE8PDEpOiAgICByZXMgPSBjb29yZHMu
eXp3OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSB0KzE6ICAgICAg
ICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICB9XG4n
KTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2VzKHRoaXMs
ICJkZWZhdWx0X2xhYmVsIiwgIkRlZmF1bHQgbGFiZWwgdXNhZ2UiLAorICAgICAgICAgICAgJyAg
ICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlcbicgKworICAgICAgICAgICAgJyAgICB7XG4nICsKKyAg
ICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAgIHJlcyA9IGNvb3Jkcy54eXo7ICAgIGJy
ZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDE6ICAgICAgICByZXMgPSBjb29y
ZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSAzOiAgICAg
ICAgcmVzID0gY29vcmRzLnp5eDsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAg
IGRlZmF1bHQ6ICAgIHJlcyA9IGNvb3Jkcy55enc7XG4nICsKKyAgICAgICAgICAgICcgICAgfVxu
Jyk7CisKKyAgICAgICAgZXMzZlNoYWRlclN3aXRjaFRlc3RzLm1ha2VTd2l0Y2hDYXNlcyh0aGlz
LCAiZGVmYXVsdF9ub3RfbGFzdCIsICJEZWZhdWx0IGxhYmVsIHVzYWdlIiwKKyAgICAgICAgICAg
ICcgICAgc3dpdGNoICgke0NPTkRJVElPTn0pXG4nICsKKyAgICAgICAgICAgICcgICAge1xuJyAr
CisgICAgICAgICAgICAnICAgICAgICBjYXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMueHl6OyAg
ICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDogICAgcmVzID0gY29v
cmRzLnl6dzsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMTogICAg
ICAgIHJlcyA9IGNvb3Jkcy53enk7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAg
ICBjYXNlIDM6ICAgICAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKworICAgICAg
ICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFrZVN3
aXRjaENhc2VzKHRoaXMsICJub19kZWZhdWx0X2xhYmVsIiwgIk5vIG1hdGNoIGluIHN3aXRjaCB3
aXRob3V0IGRlZmF1bHQgbGFiZWwiLAorICAgICAgICAgICAgJyAgICByZXMgPSBjb29yZHMueXp3
O1xuXG4nICsKKyAgICAgICAgICAgICcgICAgc3dpdGNoICgke0NPTkRJVElPTn0pXG4nICsKKyAg
ICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDA6ICAgICAg
ICByZXMgPSBjb29yZHMueHl6OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAg
Y2FzZSAxOiAgICAgICAgcmVzID0gY29vcmRzLnd6eTsgICAgYnJlYWs7XG4nICsKKyAgICAgICAg
ICAgICcgICAgICAgIGNhc2UgMzogICAgICAgIHJlcyA9IGNvb3Jkcy56eXg7ICAgIGJyZWFrO1xu
JyArCisgICAgICAgICAgICAnICAgIH1cbicpOworCisgICAgICAgIGVzM2ZTaGFkZXJTd2l0Y2hU
ZXN0cy5tYWtlU3dpdGNoQ2FzZXModGhpcywgImZhbGxfdGhyb3VnaCIsICJGYWxsLXRocm91Z2gi
LAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlcbicgKworICAgICAgICAg
ICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAgIHJlcyA9
IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDE6
ICAgICAgICByZXMgPSBjb29yZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAg
ICAgICAgY2FzZSAyOiAgICAgICAgY29vcmRzID0gY29vcmRzLnl6d3g7XG4nICsKKyAgICAgICAg
ICAgICcgICAgICAgIGNhc2UgNDogICAgICAgIHJlcyA9IHZlYzMoY29vcmRzKTsgICAgYnJlYWs7
XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMzogICAgICAgIHJlcyA9IGNvb3Jkcy56
eXg7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgIH1cbicpOworCisgICAgICAgIGVz
M2ZTaGFkZXJTd2l0Y2hUZXN0cy5tYWtlU3dpdGNoQ2FzZXModGhpcywgImZhbGxfdGhyb3VnaF9k
ZWZhdWx0IiwgIkZhbGwtdGhyb3VnaCIsCisgICAgICAgICAgICAnICAgIHN3aXRjaCAoJHtDT05E
SVRJT059KVxuJyArCisgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgJyAgICAg
ICAgY2FzZSAwOiAgICAgICAgcmVzID0gY29vcmRzLnh5ejsgICAgYnJlYWs7XG4nICsKKyAgICAg
ICAgICAgICcgICAgICAgIGNhc2UgMTogICAgICAgIHJlcyA9IGNvb3Jkcy53enk7ICAgIGJyZWFr
O1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDM6ICAgICAgICByZXMgPSBjb29yZHMu
enl4OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSAyOiAgICAgICAg
Y29vcmRzID0gY29vcmRzLnl6d3g7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGRlZmF1bHQ6
ICAgIHJlcyA9IHZlYzMoY29vcmRzKTtcbicgKworICAgICAgICAgICAgJyAgICB9XG4nKTsKKwor
ICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2VzKHRoaXMsICJjb25k
aXRpb25hbF9mYWxsX3Rocm91Z2giLCAiRmFsbC10aHJvdWdoIiwKKyAgICAgICAgICAgICcgICAg
aGlnaHAgdmVjNCB0bXAgPSBjb29yZHM7XG4nICsKKyAgICAgICAgICAgICcgICAgc3dpdGNoICgk
e0NPTkRJVElPTn0pXG4nICsKKyAgICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAn
ICAgICAgICBjYXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMueHl6OyAgICBicmVhaztcbicgKwor
ICAgICAgICAgICAgJyAgICAgICAgY2FzZSAxOiAgICAgICAgcmVzID0gY29vcmRzLnd6eTsgICAg
YnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMjpcbicgKworICAgICAgICAg
ICAgJyAgICAgICAgICAgIHRtcCA9IGNvb3Jkcy55end4O1xuJyArCisgICAgICAgICAgICAnICAg
ICAgICBjYXNlIDM6XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSB2ZWMzKHRt
cCk7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICBpZiAoJHtDT05ESVRJT059ICE9IDMp
XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgYnJlYWs7XG4nICsKKyAgICAgICAg
ICAgICcgICAgICAgIGRlZmF1bHQ6ICAgIHJlcyA9IHRtcC56eXg7ICAgICAgICBicmVhaztcbicg
KworICAgICAgICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVz
dHMubWFrZVN3aXRjaENhc2VzKHRoaXMsICJjb25kaXRpb25hbF9mYWxsX3Rocm91Z2hfMiIsICJG
YWxsLXRocm91Z2giLAorICAgICAgICAgICAgJyAgICBoaWdocCB2ZWM0IHRtcCA9IGNvb3Jkcztc
bicgKworICAgICAgICAgICAgJyAgICBtZWRpdW1wIGludCBjID0gJHtDT05ESVRJT059O1xuJyAr
CisgICAgICAgICAgICAnICAgIHN3aXRjaCAoYylcbicgKworICAgICAgICAgICAgJyAgICB7XG4n
ICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAgIHJlcyA9IGNvb3Jkcy54eXo7
ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDE6ICAgICAgICByZXMg
PSBjb29yZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSAy
OlxuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgYyArPSAke0NPTkRJVElPTn07XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgICAgICB0bXAgPSBjb29yZHMueXp3eDtcbicgKworICAgICAg
ICAgICAgJyAgICAgICAgY2FzZSAzOlxuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgcmVz
ID0gdmVjMyh0bXApO1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgaWYgKGMgPT0gNClc
bicgKworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBicmVhaztcbicgKworICAgICAgICAg
ICAgJyAgICAgICAgZGVmYXVsdDogICAgcmVzID0gdG1wLnp5eDsgICAgICAgIGJyZWFrO1xuJyAr
CisgICAgICAgICAgICAnICAgIH1cbicpOworCisgICAgICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0
cy5tYWtlU3dpdGNoQ2FzZXModGhpcywgInNjb3BlIiwgIkJhc2ljIHN3aXRjaCBzdGF0ZW1lbnQg
dXNhZ2UiLAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlcbicgKworICAg
ICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAg
IHJlcyA9IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBj
YXNlIDE6ICAgICAgICByZXMgPSBjb29yZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAg
ICAgJyAgICAgICAgY2FzZSAyOlxuJyArCisgICAgICAgICAgICAnICAgICAgICB7XG4nICsKKyAg
ICAgICAgICAgICcgICAgICAgICAgICBtZWRpdW1wIHZlYzMgdCA9IGNvb3Jkcy55enc7XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgICAgICByZXMgPSB0O1xuJyArCisgICAgICAgICAgICAnICAg
ICAgICAgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIH1cbicgKworICAgICAg
ICAgICAgJyAgICAgICAgY2FzZSAzOiAgICAgICAgcmVzID0gY29vcmRzLnp5eDsgICAgYnJlYWs7
XG4nICsKKyAgICAgICAgICAgICcgICAgfVxuJyk7CisKKyAgICAgICAgZXMzZlNoYWRlclN3aXRj
aFRlc3RzLm1ha2VTd2l0Y2hDYXNlcyh0aGlzLCAic3dpdGNoX2luX2lmIiwgIlN3aXRjaCBpbiBm
b3IgbG9vcCIsCisgICAgICAgICAgICAnICAgIGlmICgke0NPTkRJVElPTn0gPj0gMClcbicgKwor
ICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIHN3aXRjaCAoJHtD
T05ESVRJT059KVxuJyArCisgICAgICAgICAgICAnICAgICAgICB7XG4nICsKKyAgICAgICAgICAg
ICcgICAgICAgICAgICBjYXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMueHl6OyAgICBicmVhaztc
bicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIGNhc2UgMTogICAgICAgIHJlcyA9IGNvb3Jk
cy53enk7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgY2FzZSAyOiAg
ICAgICAgcmVzID0gY29vcmRzLnl6dzsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAg
ICAgICAgICBjYXNlIDM6ICAgICAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKwor
ICAgICAgICAgICAgJyAgICAgICAgfVxuJyArCisgICAgICAgICAgICAnICAgIH1cbicpOworCisg
ICAgICAgIGVzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5tYWtlU3dpdGNoQ2FzZXModGhpcywgInN3aXRj
aF9pbl9mb3JfbG9vcCIsICJTd2l0Y2ggaW4gZm9yIGxvb3AiLAorICAgICAgICAgICAgJyAgICBm
b3IgKGludCBpID0gMDsgaSA8PSAke0NPTkRJVElPTn07IGkrKylcbicgKworICAgICAgICAgICAg
JyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIHN3aXRjaCAoaSlcbicgKworICAgICAg
ICAgICAgJyAgICAgICAge1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgY2FzZSAwOiAg
ICAgICAgcmVzID0gY29vcmRzLnh5ejsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAg
ICAgICAgICBjYXNlIDE6ICAgICAgICByZXMgPSBjb29yZHMud3p5OyAgICBicmVhaztcbicgKwor
ICAgICAgICAgICAgJyAgICAgICAgICAgIGNhc2UgMjogICAgICAgIHJlcyA9IGNvb3Jkcy55enc7
ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgY2FzZSAzOiAgICAgICAg
cmVzID0gY29vcmRzLnp5eDsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIH1c
bicgKworICAgICAgICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNo
VGVzdHMubWFrZVN3aXRjaENhc2VzKHRoaXMsICJzd2l0Y2hfaW5fd2hpbGVfbG9vcCIsICJTd2l0
Y2ggaW4gd2hpbGUgbG9vcCIsCisgICAgICAgICAgICAnICAgIGludCBpID0gMDtcbicgKworICAg
ICAgICAgICAgJyAgICB3aGlsZSAoaSA8PSAke0NPTkRJVElPTn0pXG4nICsKKyAgICAgICAgICAg
ICcgICAge1xuJyArCisgICAgICAgICAgICAnICAgICAgICBzd2l0Y2ggKGkpXG4nICsKKyAgICAg
ICAgICAgICcgICAgICAgIHtcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIGNhc2UgMDog
ICAgICAgIHJlcyA9IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAg
ICAgICAgICAgY2FzZSAxOiAgICAgICAgcmVzID0gY29vcmRzLnd6eTsgICAgYnJlYWs7XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgICAgICBjYXNlIDI6ICAgICAgICByZXMgPSBjb29yZHMueXp3
OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIGNhc2UgMzogICAgICAg
IHJlcyA9IGNvb3Jkcy56eXg7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICB9
XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGkgKz0gMTtcbicgKworICAgICAgICAgICAgJyAg
ICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2Vz
KHRoaXMsICJzd2l0Y2hfaW5fZG9fd2hpbGVfbG9vcCIsICJTd2l0Y2ggaW4gZG8td2hpbGUgbG9v
cCIsCisgICAgICAgICAgICAnICAgIGludCBpID0gMDtcbicgKworICAgICAgICAgICAgJyAgICBk
b1xuJyArCisgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgJyAgICAgICAgc3dp
dGNoIChpKVxuJyArCisgICAgICAgICAgICAnICAgICAgICB7XG4nICsKKyAgICAgICAgICAgICcg
ICAgICAgICAgICBjYXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMueHl6OyAgICBicmVhaztcbicg
KworICAgICAgICAgICAgJyAgICAgICAgICAgIGNhc2UgMTogICAgICAgIHJlcyA9IGNvb3Jkcy53
enk7ICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgY2FzZSAyOiAgICAg
ICAgcmVzID0gY29vcmRzLnl6dzsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAg
ICAgICBjYXNlIDM6ICAgICAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKworICAg
ICAgICAgICAgJyAgICAgICAgfVxuJyArCisgICAgICAgICAgICAnICAgICAgICBpICs9IDE7XG4n
ICsKKyAgICAgICAgICAgICcgICAgfSB3aGlsZSAoaSA8PSAke0NPTkRJVElPTn0pO1xuJyk7CisK
KyAgICAgICAgZXMzZlNoYWRlclN3aXRjaFRlc3RzLm1ha2VTd2l0Y2hDYXNlcyh0aGlzLCAiaWZf
aW5fc3dpdGNoIiwgIkJhc2ljIHN3aXRjaCBzdGF0ZW1lbnQgdXNhZ2UiLAorICAgICAgICAgICAg
JyAgICBzd2l0Y2ggKCR7Q09ORElUSU9OfSlcbicgKworICAgICAgICAgICAgJyAgICB7XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMDogICAgICAgIHJlcyA9IGNvb3Jkcy54eXo7ICAg
IGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDE6ICAgICAgICByZXMgPSBj
b29yZHMud3p5OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpc
bicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIGlmICgke0NPTkRJVElPTn0gPT0gMilcbicg
KworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICByZXMgPSBjb29yZHMueXp3O1xuJyArCisg
ICAgICAgICAgICAnICAgICAgICAgICAgZWxzZVxuJyArCisgICAgICAgICAgICAnICAgICAgICAg
ICAgICAgIHJlcyA9IGNvb3Jkcy56eXg7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICBi
cmVhaztcbicgKworICAgICAgICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVy
U3dpdGNoVGVzdHMubWFrZVN3aXRjaENhc2VzKHRoaXMsICJmb3JfbG9vcF9pbl9zd2l0Y2giLCAi
QmFzaWMgc3dpdGNoIHN0YXRlbWVudCB1c2FnZSIsCisgICAgICAgICAgICAnICAgIHN3aXRjaCAo
JHtDT05ESVRJT059KVxuJyArCisgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAg
JyAgICAgICAgY2FzZSAwOiAgICAgICAgcmVzID0gY29vcmRzLnh5ejsgICAgYnJlYWs7XG4nICsK
KyAgICAgICAgICAgICcgICAgICAgIGNhc2UgMTpcbicgKworICAgICAgICAgICAgJyAgICAgICAg
Y2FzZSAyOlxuJyArCisgICAgICAgICAgICAnICAgICAgICB7XG4nICsKKyAgICAgICAgICAgICcg
ICAgICAgICAgICBoaWdocCB2ZWMzIHQgPSBjb29yZHMueXp3O1xuJyArCisgICAgICAgICAgICAn
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAke0NPTkRJVElPTn07IGkrKylcbicgKwor
ICAgICAgICAgICAgJyAgICAgICAgICAgICAgICB0ID0gdC56eXg7XG4nICsKKyAgICAgICAgICAg
ICcgICAgICAgICAgICByZXMgPSB0O1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgYnJl
YWs7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIH1cbicgKworICAgICAgICAgICAgJyAgICAg
ICAgZGVmYXVsdDogICAgcmVzID0gY29vcmRzLnp5eDsgICAgYnJlYWs7XG4nICsKKyAgICAgICAg
ICAgICcgICAgfVxuJyk7CisKKyAgICAgICAgZXMzZlNoYWRlclN3aXRjaFRlc3RzLm1ha2VTd2l0
Y2hDYXNlcyh0aGlzLCAid2hpbGVfbG9vcF9pbl9zd2l0Y2giLCAiQmFzaWMgc3dpdGNoIHN0YXRl
bWVudCB1c2FnZSIsCisgICAgICAgICAgICAnICAgIHN3aXRjaCAoJHtDT05ESVRJT059KVxuJyAr
CisgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSAwOiAg
ICAgICAgcmVzID0gY29vcmRzLnh5ejsgICAgYnJlYWs7XG4nICsKKyAgICAgICAgICAgICcgICAg
ICAgIGNhc2UgMTpcbicgKworICAgICAgICAgICAgJyAgICAgICAgY2FzZSAyOlxuJyArCisgICAg
ICAgICAgICAnICAgICAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICBoaWdocCB2
ZWMzIHQgPSBjb29yZHMueXp3O1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgaW50IGkg
PSAwO1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgd2hpbGUgKGkgPCAke0NPTkRJVElP
Tn0pXG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICB7XG4nICsKKyAgICAgICAgICAgICcg
ICAgICAgICAgICAgICAgdCA9IHQuenl4O1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAg
ICAgIGkgKz0gMTtcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIH1cbicgKworICAgICAg
ICAgICAgJyAgICAgICAgICAgIHJlcyA9IHQ7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAg
ICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgfVxuJyArCisgICAgICAgICAgICAn
ICAgICAgICBkZWZhdWx0OiAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKworICAg
ICAgICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dpdGNoVGVzdHMubWFr
ZVN3aXRjaENhc2VzKHRoaXMsICJkb193aGlsZV9sb29wX2luX3N3aXRjaCIsICJCYXNpYyBzd2l0
Y2ggc3RhdGVtZW50IHVzYWdlIiwKKyAgICAgICAgICAgICcgICAgc3dpdGNoICgke0NPTkRJVElP
Tn0pXG4nICsKKyAgICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAnICAgICAgICBj
YXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMueHl6OyAgICBicmVhaztcbicgKworICAgICAgICAg
ICAgJyAgICAgICAgY2FzZSAxOlxuJyArCisgICAgICAgICAgICAnICAgICAgICBjYXNlIDI6XG4n
ICsKKyAgICAgICAgICAgICcgICAgICAgIHtcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAg
IGhpZ2hwIHZlYzMgdCA9IGNvb3Jkcy55enc7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAg
ICBpbnQgaSA9IDA7XG4nICsKKyAgICAgICAgICAgICcgICAgICAgICAgICBkb1xuJyArCisgICAg
ICAgICAgICAnICAgICAgICAgICAge1xuJyArCisgICAgICAgICAgICAnICAgICAgICAgICAgICAg
IHQgPSB0Lnp5eDtcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBpICs9IDE7XG4n
ICsKKyAgICAgICAgICAgICcgICAgICAgICAgICB9IHdoaWxlIChpIDwgJHtDT05ESVRJT059KTtc
bicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIHJlcyA9IHQ7XG4nICsKKyAgICAgICAgICAg
ICcgICAgICAgICAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgfVxuJyArCisg
ICAgICAgICAgICAnICAgICAgICBkZWZhdWx0OiAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVh
aztcbicgKworICAgICAgICAgICAgJyAgICB9XG4nKTsKKworICAgICAgICBlczNmU2hhZGVyU3dp
dGNoVGVzdHMubWFrZVN3aXRjaENhc2VzKHRoaXMsICJzd2l0Y2hfaW5fc3dpdGNoIiwgIkJhc2lj
IHN3aXRjaCBzdGF0ZW1lbnQgdXNhZ2UiLAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKCR7Q09O
RElUSU9OfSlcbicgKworICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAgICAgICAgICcgICAg
ICAgIGNhc2UgMDogICAgICAgIHJlcyA9IGNvb3Jkcy54eXo7ICAgIGJyZWFrO1xuJyArCisgICAg
ICAgICAgICAnICAgICAgICBjYXNlIDE6XG4nICsKKyAgICAgICAgICAgICcgICAgICAgIGNhc2Ug
MjpcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIHN3aXRjaCAoJHtDT05ESVRJT059IC0g
MSlcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIHtcbicgKworICAgICAgICAgICAgJyAg
ICAgICAgICAgICAgICBjYXNlIDA6ICAgICAgICByZXMgPSBjb29yZHMud3p5OyAgICBicmVhaztc
bicgKworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICByZXMgPSBj
b29yZHMueXp3OyAgICBicmVhaztcbicgKworICAgICAgICAgICAgJyAgICAgICAgICAgIH1cbicg
KworICAgICAgICAgICAgJyAgICAgICAgICAgIGJyZWFrO1xuJyArCisgICAgICAgICAgICAnICAg
ICAgICBkZWZhdWx0OiAgICByZXMgPSBjb29yZHMuenl4OyAgICBicmVhaztcbicgKworICAgICAg
ICAgICAgJ31cbicpOworCisgICAgICAgIC8vIE5lZ2F0aXZlIGNhc2VzLgorICAgICAgICAvLyBU
aGlzIGlzIGJlaW5nIHRlc3RlZCBzb213aGVyZSBlbHNlOiBkYXRhL2dsZXMzL3NoYWRlcnMvc3dp
dGNoLmh0bWwKKyAgICB9OworCisgICAgLyoqCisgICAgICogUnVuIHRlc3QKKyAgICAgKiBAcGFy
YW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyU3dpdGNoVGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCkgeworICAgICAgICBnbCA9IGNv
bnRleHQ7CisgICAgICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgIHZh
ciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAgICAgc3RhdGUuc2V0Um9vdChuZXcg
ZXMzZlNoYWRlclN3aXRjaFRlc3RzLlNoYWRlclN3aXRjaFRlc3RzKCkpOworCisgICAgICAgIC8v
U2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAg
IHNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgICAg
IGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIHRjdVRlc3RD
YXNlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlNoYWRlclN3aXRjaFRl
c3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50
ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzODZjOTZlZGZkYWVkNmQz
MTdmOTZjZjQ5MmY1NjlhOTExZmMxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuanMKQEAgLTAsMCArMSwyNzA5IEBACisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0
aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9w
ZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9n
cmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRp
bCcpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJSZW5kZXJDYXNlJyk7
CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisgICAgdmFyIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7Cisg
ICAgdmFyIHRjdU1hdHJpeCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4OworICAgIHZhciB0
Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVN1
cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7CisgICAgdmFyIHRjdVRleHR1cmUg
PSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7CisgICAgdmFyIHRjdVRleHR1cmVVdGlsID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKKyAgICB2YXIgZ2x1VGV4dHVyZVV0aWwg
PSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOworICAgIHZhciBnbHVUZXh0dXJlID0g
ZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0g
ZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworICAgIHZhciBnbHVTaGFkZXJVdGls
ID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciBnbHNTaGFkZXJSZW5k
ZXJDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyUmVuZGVyQ2FzZTsKKworICAgIGxldCBj
YW52YXNXSCA9IDI1NjsKKyAgICBpZiAodGN1VGVzdENhc2UuaXNRdWlja01vZGUoKSkgeworICAg
ICAgICBjYW52YXNXSCA9IDMyOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAg
ICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uID0gewor
ICAgICAgICBURVhUVVJFOiAwLCAvLyE8IHRleHR1cmUoKSwgdGV4dHVyZU9mZnNldCgpCisgICAg
ICAgIFRFWFRVUkVQUk9KOiAxLCAvLyE8IHRleHR1cmVQcm9qKCksIHRleHR1cmVQcm9qT2Zmc2V0
KCkKKyAgICAgICAgVEVYVFVSRVBST0ozOiAyLCAvLyE8IHRleHR1cmVQcm9qKHNhbXBsZXIyRCwg
dmVjMykKKyAgICAgICAgVEVYVFVSRUxPRDogMywgLy8gLi4uCisgICAgICAgIFRFWFRVUkVQUk9K
TE9EOiA0LAorICAgICAgICBURVhUVVJFUFJPSkxPRDM6IDUsIC8vITwgdGV4dHVyZVByb2pMb2Qo
c2FtcGxlcjJELCB2ZWMzKQorICAgICAgICBURVhUVVJFR1JBRDogNiwKKyAgICAgICAgVEVYVFVS
RVBST0pHUkFEOiA3LAorICAgICAgICBURVhUVVJFUFJPSkdSQUQzOiA4LCAvLyE8IHRleHR1cmVQ
cm9qR3JhZChzYW1wbGVyMkQsIHZlYzMpCisgICAgICAgIFRFWEVMRkVUQ0g6IDkKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNo
YWRlclR5cGUKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhGdW5jdGlvbn0gZnVuY3Rpb25fCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZnVuY3Rpb25IYXNBdXRvTG9kID0g
ZnVuY3Rpb24oc2hhZGVyVHlwZSwgZnVuY3Rpb25fKSB7CisgICAgICAgIHJldHVybiBzaGFkZXJU
eXBlID09PSBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQgJiYKKyAgICAgICAg
ICAgIChmdW5jdGlvbl8gPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFIHx8CisgICAgICAgICAgICBmdW5jdGlvbl8gPT09IGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSiB8fAorICAgICAgICAgICAg
ZnVuY3Rpb25fID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRVBST0ozKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb259IGZ1bmN0aW9uXworICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmZ1bmN0aW9uSGFzUHJvaiA9IGZ1bmN0aW9uKGZ1bmN0aW9uXykgeworICAgICAgICByZXR1
cm4gZnVuY3Rpb25fID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0ogfHwKKyAgICAgICAgICAgZnVuY3Rpb25fID09PSBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0ozIHx8CisgICAgICAgICAg
IGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KTE9EIHx8CisgICAgICAgICAgIGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCB8fAorICAgICAg
ICAgICBmdW5jdGlvbl8gPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFUFJPSkxPRDMgfHwKKyAgICAgICAgICAgZnVuY3Rpb25fID09PSBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFEMzsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb259IGZ1bmN0aW9uXworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmZ1bmN0aW9uSGFzR3Jh
ZCA9IGZ1bmN0aW9uKGZ1bmN0aW9uXykgeworICAgICAgICByZXR1cm4gZnVuY3Rpb25fID09PSBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQgfHwK
KyAgICAgICAgICAgIGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCB8fAorICAgICAgICAgICAgIGZ1bmN0aW9uXyA9
PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9K
R1JBRDM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9ufSBmdW5jdGlvbl8KKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5mdW5j
dGlvbkhhc0xvZCA9IGZ1bmN0aW9uKGZ1bmN0aW9uXykgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b25fID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVS
RUxPRCB8fAorICAgICAgICAgICAgICAgZnVuY3Rpb25fID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0QgfHwKKyAgICAgICAgICAgICAg
IGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KTE9EMyB8fAorICAgICAgICAgICAgICAgZnVuY3Rpb25fID09PSBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHN0cnVjdAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBw
YXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9ufSBmdW5jCisg
ICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtaW5Db29yZAorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gbWF4Q29vcmQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVzZUJpYXMKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gbWluTG9kQmlhcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBt
YXhMb2RCaWFzCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtaW5EWCBGb3IgKkdyYWQq
IGZ1bmN0aW9ucworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWF4RFggRm9yICpHcmFk
KiBmdW5jdGlvbnMKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1pbkRZIEZvciAqR3Jh
ZCogZnVuY3Rpb25zCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhEWSBGb3IgKkdy
YWQqIGZ1bmN0aW9ucworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlT2Zmc2V0CisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZUxvb2t1cFNwZWMgPSBmdW5jdGlvbihmdW5jLCBtaW5D
b29yZCwgbWF4Q29vcmQsIHVzZUJpYXMsIG1pbkxvZEJpYXMsIG1heExvZEJpYXMsIG1pbkRYLCBt
YXhEWCwgbWluRFksIG1heERZLCB1c2VPZmZzZXQsIG9mZnNldCkgeworICAgICAgICAvKiogQHR5
cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbn0gKi8gdGhpcy5m
dW5jID0gZnVuYzsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1p
bkNvb3JkID0gbWluQ29vcmQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dGhpcy5tYXhDb29yZCA9IG1heENvb3JkOworICAgICAgICAvLyBCaWFzCisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy51c2VCaWFzID0gdXNlQmlhczsKKyAgICAgICAgLy8gQmlh
cyBvciBMb2QgZm9yICpMb2QqIGZ1bmN0aW9ucworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5taW5Mb2RCaWFzID0gbWluTG9kQmlhczsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubWF4TG9kQmlhcyA9IG1heExvZEJpYXM7CisgICAgICAgIC8vIEZvciAqR3Jh
ZCogZnVuY3Rpb25zCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5t
aW5EWCA9IG1pbkRYOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMu
bWF4RFggPSBtYXhEWDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
Lm1pbkRZID0gbWluRFk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhp
cy5tYXhEWSA9IG1heERZOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMudXNl
T2Zmc2V0ID0gdXNlT2Zmc2V0OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHRoaXMub2Zmc2V0ID0gb2Zmc2V0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAZW51bQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZSA9
IHsKKyAgICAgICAgVEVYVFVSRVRZUEVfMkQ6IDAsCisgICAgICAgIFRFWFRVUkVUWVBFX0NVQkVf
TUFQOiAxLAorICAgICAgICBURVhUVVJFVFlQRV8yRF9BUlJBWTogMiwKKyAgICAgICAgVEVYVFVS
RVRZUEVfM0Q6IDMKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHN0cnVjdAorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7P2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXh0dXJlVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUxl
dmVscworICAgICAqIEBwYXJhbSB7P3RjdVRleHR1cmUuU2FtcGxlcn0gc2FtcGxlcgorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyA9IGZ1bmN0
aW9uKHR5cGUsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIG51bUxldmVscywgc2FtcGxl
cikgeworICAgICAgICAvKiogQHR5cGUgez9lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4dHVyZVR5cGV9ICovIHRoaXMudHlwZSA9IHR5cGU7IC8vITwgVGV4dHVyZSB0eXBlICgyRCwg
Y3ViZW1hcCwgLi4uKQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5mb3JtYXQg
PSBmb3JtYXQ7IC8vITwgSW50ZXJuYWwgZm9ybWF0LgorICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy53aWR0aCA9IHdpZHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
LmRlcHRoID0gZGVwdGg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm51bUxl
dmVscyA9IG51bUxldmVsczsKKyAgICAgICAgLyoqIEB0eXBlIHs/dGN1VGV4dHVyZS5TYW1wbGVy
fSAqLyB0aGlzLnNhbXBsZXIgPSBzYW1wbGVyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
c3RydWN0CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5sb2QgPSAwOworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHRoaXMub2Zmc2V0ID0gWzAsIDAsIDBdOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMuc2NhbGUgPSBbMS4wLCAxLjAsIDEuMCwgMS4wXTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLmJpYXMgPSBbMC4wLCAw
LjAsIDAuMCwgMC4wXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuTG9kTW9kZSA9IHsKKyAgICAgICAg
RVhBQ1Q6IDAsCisgICAgICAgIE1JTl9CT1VORDogMSwKKyAgICAgICAgTUFYX0JPVU5EOiAyCisg
ICAgfTsKKworICAgIC8qKiBAY29uc3Qge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5M
b2RNb2RlfSAqLyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuREVGQVVMVF9MT0RfTU9E
RSA9IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5Mb2RNb2RlLkVYQUNUOworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGR1ZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
ZHZkeAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdWR5CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGR2ZHkKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tRGVyaXZhdGVzX1VWID0gZnVuY3Rpb24o
ZHVkeCwgZHZkeCwgZHVkeSwgZHZkeSkgeworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5Mb2RNb2RlfSAqLyB2YXIgbW9kZSA9IGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ERUZBVUxUX0xPRF9NT0RFOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHA7CisKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBj
YXNlIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5Mb2RNb2RlLkVYQUNUOgorICAgICAg
ICAgICAgICAgIHAgPSBNYXRoLm1heChNYXRoLnNxcnQoZHVkeCAqIGR1ZHggKyBkdmR4ICogZHZk
eCksIE1hdGguc3FydChkdWR5ICogZHVkeSArIGR2ZHkgKiBkdmR5KSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLkxvZE1vZGUuTUlOX0JPVU5EOgorICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuTG9kTW9kZS5NQVhfQk9VTkQ6CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBtdSA9IE1hdGgubWF4KE1hdGguYWJzKGR1ZHgpLCBNYXRoLmFi
cyhkdWR5KSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtdiA9
IE1hdGgubWF4KE1hdGguYWJzKGR2ZHgpLCBNYXRoLmFicyhkdmR5KSk7CisKKyAgICAgICAgICAg
ICAgICBwID0gbW9kZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkxvZE1vZGUu
TUlOX0JPVU5EID8gTWF0aC5tYXgobXUsIG12KSA6IG11ICsgbXY7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdMT0RfTU9ERSBub3Qgc3VwcG9ydGVkLicpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIE1hdGgubG9nMihwKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGR1ZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZHZkeAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBkd2R4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGR1ZHkKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gZHZkeQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkd2R5CisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5j
b21wdXRlTG9kRnJvbURlcml2YXRlc19VVlcgPSBmdW5jdGlvbihkdWR4LCBkdmR4LCBkd2R4LCBk
dWR5LCBkdmR5LCBkd2R5KSB7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkxvZE1vZGV9ICovIHZhciBtb2RlID0gZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLkRFRkFVTFRfTE9EX01PREU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgcDsKKworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkxvZE1vZGUuRVhBQ1Q6CisgICAgICAgICAgICAg
ICAgcCA9IE1hdGgubWF4KE1hdGguc3FydChkdWR4ICogZHVkeCArIGR2ZHggKiBkdmR4ICsgZHdk
eCAqIGR3ZHgpLCBNYXRoLnNxcnQoZHVkeSAqIGR1ZHkgKyBkdmR5ICogZHZkeSArIGR3ZHkgKiBk
d2R5KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkxvZE1vZGUuTUlOX0JPVU5EOgorICAgICAgICAgICAg
Y2FzZSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuTG9kTW9kZS5NQVhfQk9VTkQ6Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtdSA9IE1hdGgubWF4KE1h
dGguYWJzKGR1ZHgpLCBNYXRoLmFicyhkdWR5KSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBtdiA9IE1hdGgubWF4KE1hdGguYWJzKGR2ZHgpLCBNYXRoLmFicyhk
dmR5KSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtdyA9IE1h
dGgubWF4KE1hdGguYWJzKGR3ZHgpLCBNYXRoLmFicyhkd2R5KSk7CisKKyAgICAgICAgICAgICAg
ICBwID0gbW9kZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkxvZE1vZGUuTUlO
X0JPVU5EID8gTWF0aC5tYXgobXUsIG12LCBtdykgOiAobXUgKyBtdiArIG13KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0xPRF9NT0RFIG5vdCBzdXBwb3J0ZWQuJyk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gTWF0aC5sb2cyKHApOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBb
ZGFnXSBXcmFwcGVyIGZ1bmN0aW9uIGZvciBjb21wdXRlTG9kRnJvbURlcml2YXRlc19VViBvciBj
b21wdXRlTG9kRnJvbURlcml2YXRlc19VVlcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZHVkeAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdmR4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGR3ZHhP
cmR1ZHkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZHVkeU9yZHZkeQorICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gZHZkeQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZHdkeQorICAgICAqIEByZXR1
cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Y29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMgPSBmdW5jdGlvbihkdWR4LCBkdmR4LCBkd2R4T3JkdWR5
LCBkdWR5T3JkdmR5LCBkdmR5LCBkd2R5KSB7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSA0KQorICAgICAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5jb21wdXRlTG9kRnJvbURlcml2YXRlc19VVihkdWR4LCBkdmR4LCBkd2R4T3JkdWR5LCBkdWR5
T3JkdmR5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5jb21wdXRlTG9kRnJvbURlcml2YXRlc19VVlcoZHVkeCwgZHZkeCwg
ZHdkeE9yZHVkeSwgZHVkeU9yZHZkeSwgLyoqIEB0eXBlIHtudW1iZXJ9ICovIChkdmR5KSwgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChkd2R5KSk7CisgICAgfTsKKworICAgICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuY29tcHV0ZUxvZEZyb21HcmFkMkQgPSBmdW5jdGlvbihjKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdyA9IGMudGV4dHVyZXNbMF0udGV4MkQuZ2V0V2lkdGgoKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoID0gYy50ZXh0dXJlc1swXS50ZXgy
RC5nZXRIZWlnaHQoKTsKKyAgICAgICAgcmV0dXJuIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5jb21wdXRlTG9kRnJvbURlcml2YXRlcyhjLmluX1sxXVswXSAqIHcsIGMuaW5fWzFdWzFd
ICogaCwgYy5pbl9bMl1bMF0gKiB3LCBjLmluX1syXVsxXSAqIGgpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9
IGMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDJEQXJyYXkgPSBmdW5jdGlvbihjKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdyA9IGMudGV4dHVyZXNbMF0udGV4
MkRBcnJheS5nZXRXaWR0aCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGgg
PSBjLnRleHR1cmVzWzBdLnRleDJEQXJyYXkuZ2V0SGVpZ2h0KCk7CisgICAgICAgIHJldHVybiBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMoYy5p
bl9bMV1bMF0gKiB3LCBjLmluX1sxXVsxXSAqIGgsIGMuaW5fWzJdWzBdICogdywgYy5pbl9bMl1b
MV0gKiBoKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5k
ZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jb21wdXRlTG9kRnJvbUdy
YWQzRCA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3
ID0gYy50ZXh0dXJlc1swXS50ZXgzRC5nZXRXaWR0aCgpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGggPSBjLnRleHR1cmVzWzBdLnRleDNELmdldEhlaWdodCgpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGQgPSBjLnRleHR1cmVzWzBdLnRleDNELmdldERl
cHRoKCk7CisgICAgICAgIHJldHVybiBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29t
cHV0ZUxvZEZyb21EZXJpdmF0ZXMoYy5pbl9bMV1bMF0gKiB3LCBjLmluX1sxXVsxXSAqIGgsIGMu
aW5fWzFdWzJdICogZCwgYy5pbl9bMl1bMF0gKiB3LCBjLmluX1syXVsxXSAqIGgsIGMuaW5fWzJd
WzJdICogZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAg
ICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21H
cmFkQ3ViZSA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgLy8gXG5vdGUgTWFqb3IgYXhpcyBpcyBh
bHdheXMgLVogb3IgK1oKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtID0gTWF0
aC5hYnMoYy5pbl9bMF1bMl0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGQg
PSBjLnRleHR1cmVzWzBdLnRleEN1YmUuZ2V0U2l6ZSgpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHMgPSBkIC8gKDIuMCAqIG0pOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHQgPSBkIC8gKDIuMCAqIG0pOworICAgICAgICByZXR1cm4gZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tRGVyaXZhdGVzKGMuaW5fWzFdWzBdICog
cywgYy5pbl9bMV1bMV0gKiB0LCBjLmluX1syXVswXSAqIHMsIGMuaW5fWzJdWzFdICogdCk7Cisg
ICAgfTsKKworICAgIC8qKiBAdHlwZWRlZiB7ZnVuY3Rpb24oZ2xzU2hhZGVyUmVuZGVyQ2FzZS5T
aGFkZXJFdmFsQ29udGV4dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1
cFBhcmFtcyl9ICovIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhFdmFsRnVuYzsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFs
Q29udGV4dH0gYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgICAgICogQHJldHVybiB7QXJyYXk8
bnVtYmVyPn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4
dHVyZTJEID0gZnVuY3Rpb24oYywgcywgdCwgbG9kKSB7CisgICAgICAgIHJldHVybiBjLnRleHR1
cmVzWzBdLnRleDJELmdldFZpZXcoKS5zYW1wbGUoYy50ZXh0dXJlc1swXS5zYW1wbGVyLCBbcywg
dF0sIGxvZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsb2QKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlQ3ViZSA9IGZ1
bmN0aW9uKGMsIHMsIHQsIHIsIGxvZCkgeworICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50
ZXhDdWJlLmdldFZpZXcoKS5zYW1wbGUoYy50ZXh0dXJlc1swXS5zYW1wbGVyLCBbcywgdCwgcl0s
IGxvZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVy
Q2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBsb2QKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRBcnJheSA9IGZ1
bmN0aW9uKGMsIHMsIHQsIHIsIGxvZCkgeworICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50
ZXgyREFycmF5LmdldFZpZXcoKS5zYW1wbGUoYy50ZXh0dXJlc1swXS5zYW1wbGVyLCBbcywgdCwg
cl0sIGxvZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsb2QKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlM0QgPSBmdW5j
dGlvbihjLCBzLCB0LCByLCBsb2QpIHsKKyAgICAgICAgcmV0dXJuIGMudGV4dHVyZXNbMF0udGV4
M0QuZ2V0VmlldygpLnNhbXBsZShjLnRleHR1cmVzWzBdLnNhbXBsZXIsIFtzLCB0LCByXSwgbG9k
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlZgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbG9kCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRTaGFkb3cgPSBmdW5jdGlvbihj
LCByZWYsIHMsIHQsIGxvZCkgeworICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50ZXgyRC5n
ZXRWaWV3KCkuc2FtcGxlQ29tcGFyZShjLnRleHR1cmVzWzBdLnNhbXBsZXIsIHJlZiwgW3MsIHRd
LCBsb2QpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVmCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSByCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvZAorICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMudGV4dHVyZUN1YmVTaGFkb3cgPSBmdW5jdGlvbihjLCByZWYsIHMsIHQsIHIsIGxvZCkgewor
ICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50ZXhDdWJlLmdldFZpZXcoKS5zYW1wbGVDb21w
YXJlKGMudGV4dHVyZXNbMF0uc2FtcGxlciwgcmVmLCBbcywgdCwgcl0sIGxvZCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFs
Q29udGV4dH0gYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWYKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRBcnJh
eVNoYWRvdyA9IGZ1bmN0aW9uKGMsIHJlZiwgcywgdCwgciwgbG9kKSB7CisgICAgICAgIHJldHVy
biBjLnRleHR1cmVzWzBdLnRleDJEQXJyYXkuZ2V0VmlldygpLnNhbXBsZUNvbXBhcmUoYy50ZXh0
dXJlc1swXS5zYW1wbGVyLCByZWYsIFtzLCB0LCByXSwgbG9kKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBj
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsb2QKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9m
ZnNldAorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyRE9mZnNldCA9IGZ1bmN0aW9uKGMsIHMs
IHQsIGxvZCwgb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBjLnRleHR1cmVzWzBdLnRleDJELmdl
dFZpZXcoKS5zYW1wbGVPZmZzZXQoYy50ZXh0dXJlc1swXS5zYW1wbGVyLCBbcywgdF0sIGxvZCwg
b2Zmc2V0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5k
ZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHMKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxvZAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gb2Zmc2V0
CisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEQXJyYXlPZmZzZXQgPSBmdW5jdGlvbihjLCBz
LCB0LCByLCBsb2QsIG9mZnNldCkgeworICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50ZXgy
REFycmF5LmdldFZpZXcoKS5zYW1wbGVPZmZzZXQoYy50ZXh0dXJlc1swXS5zYW1wbGVyLCBbcywg
dCwgcl0sIGxvZCwgb2Zmc2V0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtn
bHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSByCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvZAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gb2Zmc2V0CisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNET2Zmc2V0ID0gZnVuY3Rp
b24oYywgcywgdCwgciwgbG9kLCBvZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIGMudGV4dHVyZXNb
MF0udGV4M0QuZ2V0VmlldygpLnNhbXBsZU9mZnNldChjLnRleHR1cmVzWzBdLnNhbXBsZXIsIFtz
LCB0LCByXSwgbG9kLCBvZmZzZXQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gcmVmCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHMKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2QKKyAgICAgKiBAcGFyYW0ge0FycmF5
PG51bWJlcj59IG9mZnNldAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0ID0gZnVu
Y3Rpb24oYywgcmVmLCBzLCB0LCBsb2QsIG9mZnNldCkgeworICAgICAgICByZXR1cm4gYy50ZXh0
dXJlc1swXS50ZXgyRC5nZXRWaWV3KCkuc2FtcGxlQ29tcGFyZU9mZnNldChjLnRleHR1cmVzWzBd
LnNhbXBsZXIsIHJlZiwgW3MsIHRdLCBsb2QsIG9mZnNldCk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWYKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcworICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHIKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbG9kCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQK
KyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLnRleHR1cmUyREFycmF5U2hhZG93T2Zmc2V0ID0gZnVuY3Rpb24oYywgcmVm
LCBzLCB0LCByLCBsb2QsIG9mZnNldCkgeworICAgICAgICByZXR1cm4gYy50ZXh0dXJlc1swXS50
ZXgyREFycmF5LmdldFZpZXcoKS5zYW1wbGVDb21wYXJlT2Zmc2V0KGMudGV4dHVyZXNbMF0uc2Ft
cGxlciwgcmVmLCBbcywgdCwgcl0sIGxvZCwgb2Zmc2V0KTsKKyAgICB9OworCisgICAgLy8gRXZh
bCBmdW5jdGlvbnMuCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAg
ICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEKGMsIGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgcC5s
b2QpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFt
IHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAg
ICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlQ3ViZSA9
IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11
bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlQ3ViZShjLCBjLmlu
X1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBwLmxvZCksIHAuc2NhbGUpLCBwLmJp
YXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5ID0gZnVuY3Rpb24oYywgcCkg
eworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyREFycmF5KGMsIGMuaW5fWzBdWzBdLCBjLmlu
X1swXVsxXSwgYy5pbl9bMF1bMl0sIHAubG9kKSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFs
Q29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4dHVyZTNEID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9y
ID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLnRleHR1cmUzRChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBw
LmxvZCksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBw
YXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAor
ICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJE
QmlhcyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVN
YXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywg
Yy5pbl9bMF1bMF0sIGMuaW5fWzBdWzFdLCBwLmxvZCtjLmluX1sxXVswXSksIHAuc2NhbGUpLCBw
LmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlQmlhcyA9IGZ1bmN0aW9uKGMs
IHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlQ3ViZShjLCBjLmluX1swXVswXSwgYy5p
bl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBwLmxvZCtjLmluX1sxXVswXSksIHAuc2NhbGUpLCBwLmJp
YXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5QmlhcyA9IGZ1bmN0aW9uKGMs
IHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRBcnJheShjLCBjLmluX1swXVswXSwg
Yy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBwLmxvZCtjLmluX1sxXVswXSksIHAuc2NhbGUpLCBw
LmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREJpYXMgPSBmdW5jdGlvbihjLCBw
KSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNEKGMsIGMuaW5fWzBdWzBdLCBjLmluX1sw
XVsxXSwgYy5pbl9bMF1bMl0sIHAubG9kK2MuaW5fWzFdWzBdKSwgcC5zY2FsZSksIHAuYmlhcyk7
CisgICAgfTsKKworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qMyA9IGZ1bmN0aW9uKGMsIHApIHsK
KyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5pbl9bMF1bMF0vYy5pbl9bMF1bMl0s
IGMuaW5fWzBdWzFdL2MuaW5fWzBdWzJdLCBwLmxvZCksIHAuc2NhbGUpLCBwLmJpYXMpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVy
RXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ozQmlhcyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAg
ICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5pbl9bMF1bMF0vYy5pbl9bMF1bMl0sIGMu
aW5fWzBdWzFdL2MuaW5fWzBdWzJdLCBwLmxvZCtjLmluX1sxXVswXSksIHAuc2NhbGUpLCBwLmJp
YXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ogPSBmdW5jdGlvbihjLCBwKSB7
CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEKGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzNd
LCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgcC5sb2QpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRl
ckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qQmlhcyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAg
ICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5pbl9bMF1bMF0vYy5pbl9bMF1bM10sIGMu
aW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBwLmxvZCtjLmluX1sxXVswXSksIHAuc2NhbGUpLCBwLmJp
YXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2ogPSBmdW5jdGlvbihjLCBwKSB7
CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNEKGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzNd
LCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgYy5pbl9bMF1bMl0vYy5pbl9bMF1bM10sIHAubG9k
KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakJp
YXMgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0
aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNEKGMsIGMu
aW5fWzBdWzBdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgYy5pbl9bMF1b
Ml0vYy5pbl9bMF1bM10sIHAubG9kK2MuaW5fWzFdWzBdKSwgcC5zY2FsZSksIHAuYmlhcyk7Cisg
ICAgfTsKKworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNo
YWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRMb2QgPSBmdW5jdGlvbihjLCBwKSB7CisgICAg
ICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEKGMsIGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgYy5p
bl9bMV1bMF0pLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICog
QHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBw
CisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJl
Q3ViZUxvZCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQo
ZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlQ3Vi
ZShjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBjLmluX1sxXVswXSks
IHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2ds
c1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2Vz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5TG9k
ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgu
bXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyREFycmF5KGMs
IGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgYy5pbl9bMF1bMl0sIGMuaW5fWzFdWzBdKSwgcC5z
Y2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hh
ZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNETG9kID0gZnVuY3Rp
b24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHko
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUzRChjLCBjLmluX1swXVswXSwg
Yy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBjLmluX1sxXVswXSksIHAuc2NhbGUpLCBwLmJpYXMp
OworICAgIH07CisKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZDMgPSBmdW5jdGlvbihjLCBw
KSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEKGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBd
WzJdLCBjLmluX1swXVsxXS9jLmluX1swXVsyXSwgYy5pbl9bMV1bMF0pLCBwLnNjYWxlKSwgcC5i
aWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qTG9kID0gZnVuY3Rpb24oYywg
cCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyRChjLCBjLmluX1swXVswXS9jLmluX1sw
XVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIGMuaW5fWzFdWzBdKSwgcC5zY2FsZSksIHAu
Ymlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVy
Q2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakxvZCA9IGZ1bmN0aW9uKGMs
IHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlM0QoYywgYy5pbl9bMF1bMF0vYy5pbl9b
MF1bM10sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsyXS9jLmluX1swXVszXSwg
Yy5pbl9bMV1bMF0pLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLy8gT2Zmc2V0
IHZhcmlhbnRzCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2Uu
U2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRE9mZnNldCA9IGZ1bmN0aW9uKGMsIHApIHsK
KyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRPZmZzZXQoYywgYy5pbl9bMF1bMF0sIGMuaW5f
WzBdWzFdLCBwLmxvZCwgZGVNYXRoLnN3aXp6bGUocC5vZmZzZXQsIFswLDFdKSksIHAuc2NhbGUp
LCBwLmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJl
bmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5T2Zmc2V0ID0gZnVu
Y3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlw
bHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyREFycmF5T2Zmc2V0KGMs
IGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgYy5pbl9bMF1bMl0sIHAubG9kLCBkZU1hdGguc3dp
enpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExv
b2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTNET2Zmc2V0ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9y
ID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLnRleHR1cmUzRE9mZnNldChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBd
WzJdLCBwLmxvZCwgcC5vZmZzZXQpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRl
eHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhM
b29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZXZhbFRleHR1cmUyRE9mZnNldEJpYXMgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMu
Y29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMudGV4dHVyZTJET2Zmc2V0KGMsIGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgcC5s
b2QrYy5pbl9bMV1bMF0sIGRlTWF0aC5zd2l6emxlKHAub2Zmc2V0LCBbMCwxXSkpLCBwLnNjYWxl
KSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJS
ZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheU9mZnNldEJpYXMg
PSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5t
dWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEQXJyYXlPZmZz
ZXQoYywgYy5pbl9bMF1bMF0sIGMuaW5fWzBdWzFdLCBjLmluX1swXVsyXSwgcC5sb2QrYy5pbl9b
MV1bMF0sIGRlTWF0aC5zd2l6emxlKHAub2Zmc2V0LCBbMCwxXSkpLCBwLnNjYWxlKSwgcC5iaWFz
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RPZmZzZXRCaWFzID0gZnVuY3Rpb24oYywg
cCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUzRE9mZnNldChjLCBjLmluX1swXVswXSwg
Yy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBwLmxvZCtjLmluX1sxXVswXSwgcC5vZmZzZXQpLCBw
LnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2ds
c1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2Vz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRExvZE9mZnNl
dCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRo
Lm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRPZmZzZXQo
YywgYy5pbl9bMF1bMF0sIGMuaW5fWzBdWzFdLCBjLmluX1sxXVswXSwgZGVNYXRoLnN3aXp6bGUo
cC5vZmZzZXQsIFswLDFdKSksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQ
YXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyREFycmF5TG9kT2Zmc2V0ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNv
bG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLnRleHR1cmUyREFycmF5T2Zmc2V0KGMsIGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwg
Yy5pbl9bMF1bMl0sIGMuaW5fWzFdWzBdLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0p
KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNETG9kT2Zm
c2V0ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1h
dGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUzRE9mZnNl
dChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBjLmluX1sxXVswXSwg
cC5vZmZzZXQpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9
IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyRFByb2ozT2Zmc2V0ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVN
YXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRl
eHR1cmUyRE9mZnNldChjLCBjLmluX1swXVswXS9jLmluX1swXVsyXSwgYy5pbl9bMF1bMV0vYy5p
bl9bMF1bMl0sIHAubG9kLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2Fs
ZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVy
UmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZzZXRCaWFz
ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgu
bXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyRE9mZnNldChj
LCBjLmluX1swXVswXS9jLmluX1swXVsyXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bMl0sIHAubG9k
K2MuaW5fWzFdWzBdLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2FsZSks
IHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvak9mZnNldCA9IGZ1bmN0
aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5
KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRPZmZzZXQoYywgYy5pbl9b
MF1bMF0vYy5pbl9bMF1bM10sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBwLmxvZCwgZGVNYXRo
LnN3aXp6bGUocC5vZmZzZXQsIFswLDFdKSksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENv
bnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUyRFByb2pPZmZzZXRCaWFzID0gZnVuY3Rpb24oYywgcCkgeworICAg
ICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyRE9mZnNldChjLCBjLmluX1swXVswXS9jLmluX1swXVsz
XSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIHAubG9kK2MuaW5fWzFdWzBdLCBkZU1hdGguc3dp
enpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExv
b2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTNEUHJvak9mZnNldCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5j
b2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy50ZXh0dXJlM0RPZmZzZXQoYywgYy5pbl9bMF1bMF0vYy5pbl9bMF1bM10sIGMuaW5f
WzBdWzFdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsyXS9jLmluX1swXVszXSwgcC5sb2QsIHAub2Zm
c2V0KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJv
ak9mZnNldEJpYXMgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGgu
YWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVy
ZTNET2Zmc2V0KGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsxXS9jLmluX1sw
XVszXSwgYy5pbl9bMF1bMl0vYy5pbl9bMF1bM10sIHAubG9kK2MuaW5fWzFdWzBdLCBwLm9mZnNl
dCksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJv
akxvZDNPZmZzZXQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGgu
YWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVy
ZTJET2Zmc2V0KGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzJdLCBjLmluX1swXVsxXS9jLmluX1sw
XVsyXSwgYy5pbl9bMV1bMF0sIGRlTWF0aC5zd2l6emxlKHAub2Zmc2V0LCBbMCwxXSkpLCBwLnNj
YWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qTG9kT2Zmc2V0
ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgu
bXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyRE9mZnNldChj
LCBjLmluX1swXVswXS9jLmluX1swXVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIGMuaW5f
WzFdWzBdLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2FsZSksIHAuYmlh
cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakxvZE9mZnNldCA9IGZ1bmN0aW9u
KGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlM0RPZmZzZXQoYywgYy5pbl9bMF1b
MF0vYy5pbl9bMF1bM10sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsyXS9jLmlu
X1swXVszXSwgYy5pbl9bMV1bMF0sIHAub2Zmc2V0KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAg
fTsKKworICAgIC8vIFNoYWRvdyB2YXJpYW50cworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtn
bHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICov
CisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRTaGFkb3cg
PSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93KGMsIGMuaW5fWzBdWzJdLCBjLmluX1swXVsw
XSwgYy5pbl9bMF1bMV0sIHAubG9kKTsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93
QmlhcyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRTaGFkb3coYywgYy5pbl9bMF1bMl0sIGMuaW5f
WzBdWzBdLCBjLmluX1swXVsxXSwgcC5sb2QrYy5pbl9bMV1bMF0pOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9
IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29r
dXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
ZXZhbFRleHR1cmVDdWJlU2hhZG93ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9y
WzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmVDdWJlU2hhZG93KGMs
IGMuaW5fWzBdWzNdLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBwLmxv
ZCk7CisgICAgfTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2Uu
U2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlU2hhZG93QmlhcyA9IGZ1bmN0aW9uKGMs
IHApIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy50ZXh0dXJlQ3ViZVNoYWRvdyhjLCBjLmluX1swXVszXSwgYy5pbl9bMF1bMF0sIGMuaW5fWzBd
WzFdLCBjLmluX1swXVsyXSwgcC5sb2QrYy5pbl9bMV1bMF0pOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQ
YXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyREFycmF5U2hhZG93ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9y
WzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUyREFycmF5U2hhZG93
KGMsIGMuaW5fWzBdWzNdLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBw
LmxvZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVy
Q2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93TG9kID0gZnVuY3Rpb24o
YywgcCkgeworICAgICAgICBjLmNvbG9yWzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLnRleHR1cmUyRFNoYWRvdyhjLCBjLmluX1swXVsyXSwgYy5pbl9bMF1bMF0sIGMuaW5fWzBd
WzFdLCBjLmluX1sxXVswXSk7CisgICAgfTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1No
YWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvd0xvZE9m
ZnNldCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRTaGFkb3dPZmZzZXQoYywgYy5pbl9bMF1bMl0s
IGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgYy5pbl9bMV1bMF0sIGRlTWF0aC5zd2l6emxlKHAu
b2Zmc2V0LCBbMCwxXSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1No
YWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvd1Byb2og
PSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93KGMsIGMuaW5fWzBdWzJdL2MuaW5fWzBdWzNd
LCBjLmluX1swXVswXS9jLmluX1swXVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIHAubG9k
KTsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5T
aGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvakJpYXMgPSBmdW5jdGlvbihj
LCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMudGV4dHVyZTJEU2hhZG93KGMsIGMuaW5fWzBdWzJdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsw
XS9jLmluX1swXVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIHAubG9kK2MuaW5fWzFdWzBd
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNl
LlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRTaGFkb3dQcm9qTG9kID0gZnVuY3Rpb24o
YywgcCkgeworICAgICAgICBjLmNvbG9yWzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLnRleHR1cmUyRFNoYWRvdyhjLCBjLmluX1swXVsyXS9jLmluX1swXVszXSwgYy5pbl9bMF1b
MF0vYy5pbl9bMF1bM10sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBjLmluX1sxXVswXSk7Cisg
ICAgfTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVy
RXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvd1Byb2pMb2RPZmZzZXQgPSBmdW5jdGlvbihj
LCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0KGMsIGMuaW5fWzBdWzJdL2MuaW5fWzBdWzNdLCBjLmlu
X1swXVswXS9jLmluX1swXVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIGMuaW5fWzFdWzBd
LCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0pKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisg
ICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFy
YW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlMkRTaGFkb3dPZmZzZXQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3Jb
MF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0
KGMsIGMuaW5fWzBdWzJdLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIHAubG9kLCBkZU1hdGgu
c3dpenpsZShwLm9mZnNldCwgWzAsMV0pKTsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hh
ZG93T2Zmc2V0QmlhcyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkRTaGFkb3dPZmZzZXQoYywgYy5p
bl9bMF1bMl0sIGMuaW5fWzBdWzBdLCBjLmluX1swXVsxXSwgcC5sb2QrYy5pbl9bMV1bMF0sIGRl
TWF0aC5zd2l6emxlKHAub2Zmc2V0LCBbMCwxXSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9
IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyRFNoYWRvd1Byb2pPZmZzZXQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3Jb
MF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0
KGMsIGMuaW5fWzBdWzJdL2MuaW5fWzBdWzNdLCBjLmluX1swXVswXS9jLmluX1swXVszXSwgYy5p
bl9bMF1bMV0vYy5pbl9bMF1bM10sIHAubG9kLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAs
MV0pKTsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvak9mZnNldEJpYXMgPSBm
dW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0KGMsIGMuaW5fWzBdWzJdL2MuaW5fWzBd
WzNdLCBjLmluX1swXVswXS9jLmluX1swXVszXSwgYy5pbl9bMF1bMV0vYy5pbl9bMF1bM10sIHAu
bG9kK2MuaW5fWzFdWzBdLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0pKTsKKyAgICB9
OworCisgICAgLy8gR3JhZGllbnQgdmFyaWFydHMKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJER3JhZCA9
IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11
bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5pbl9b
MF1bMF0sIGMuaW5fWzBdWzFdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0
ZUxvZEZyb21HcmFkMkQoYykpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBj
CisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3Vw
UGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXh0dXJlQ3ViZUdyYWQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBk
ZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
dGV4dHVyZUN1YmUoYywgYy5pbl9bMF1bMF0sIGMuaW5fWzBdWzFdLCBjLmluX1swXVsyXSwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZEN1YmUoYykpLCBw
LnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNT
aGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUdyYWQg
PSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5t
dWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEQXJyYXkoYywg
Yy5pbl9bMF1bMF0sIGMuaW5fWzBdWzFdLCBjLmluX1swXVsyXSwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDJEQXJyYXkoYykpLCBwLnNjYWxlKSwgcC5i
aWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkID0gZnVuY3Rpb24oYywgcCkg
eworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUzRChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1b
MV0sIGMuaW5fWzBdWzJdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxv
ZEZyb21HcmFkM0QoYykpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAgICB9OworCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQ
YXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyRFNoYWRvd0dyYWQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3Jb
MF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93KGMsIGMu
aW5fWzBdWzJdLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5jb21wdXRlTG9kRnJvbUdyYWQyRChjKSk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYwor
ICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBh
cmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFs
VGV4dHVyZUN1YmVTaGFkb3dHcmFkID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9y
WzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmVDdWJlU2hhZG93KGMs
IGMuaW5fWzBdWzNdLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21HcmFkQ3ViZShjKSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFk
ZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlTaGFkb3dHcmFkID0gZnVuY3Rpb24oYywg
cCkgeworICAgICAgICBjLmNvbG9yWzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LnRleHR1cmUyREFycmF5U2hhZG93KGMsIGMuaW5fWzBdWzNdLCBjLmluX1swXVswXSwgYy5pbl9b
MF1bMV0sIGMuaW5fWzBdWzJdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0
ZUxvZEZyb21HcmFkMkRBcnJheShjKSk7CisgICAgfTsKKworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBh
cmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisg
ICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRH
cmFkT2Zmc2V0ID0gZnVuY3Rpb24oYywgcCkgeworICAgICAgICBjLmNvbG9yID0gZGVNYXRoLmFk
ZChkZU1hdGgubXVsdGlwbHkoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnRleHR1cmUy
RE9mZnNldChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5jb21wdXRlTG9kRnJvbUdyYWQyRChjKSwgZGVNYXRoLnN3aXp6bGUocC5vZmZz
ZXQsIFswLDFdKSksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9
IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyREFycmF5R3JhZE9mZnNldCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9
IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy50ZXh0dXJlMkRBcnJheU9mZnNldChjLCBjLmluX1swXVswXSwgYy5pbl9bMF1bMV0sIGMuaW5f
WzBdWzJdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21HcmFk
MkRBcnJheShjKSwgZGVNYXRoLnN3aXp6bGUocC5vZmZzZXQsIFswLDFdKSksIHAuc2NhbGUpLCBw
LmJpYXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRl
ckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREdyYWRPZmZzZXQgPSBmdW5jdGlv
bihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNET2Zmc2V0KGMsIGMuaW5fWzBd
WzBdLCBjLmluX1swXVsxXSwgYy5pbl9bMF1bMl0sIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5jb21wdXRlTG9kRnJvbUdyYWQzRChjKSwgcC5vZmZzZXQpLCBwLnNjYWxlKSwgcC5iaWFz
KTsKKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvd0dyYWRPZmZzZXQgPSBmdW5j
dGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3JbMF0gPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMudGV4dHVyZTJEU2hhZG93T2Zmc2V0KGMsIGMuaW5fWzBdWzJdLCBjLmluX1swXVsw
XSwgYy5pbl9bMF1bMV0sIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jb21wdXRlTG9k
RnJvbUdyYWQyRChjKSwgZGVNYXRoLnN3aXp6bGUocC5vZmZzZXQsIFswLDFdKSk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFs
Q29udGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlTaGFkb3dHcmFkT2Zmc2V0ID0gZnVuY3Rpb24oYywg
cCkgeworICAgICAgICBjLmNvbG9yWzBdID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LnRleHR1cmUyREFycmF5U2hhZG93T2Zmc2V0KGMsIGMuaW5fWzBdWzNdLCBjLmluX1swXVswXSwg
Yy5pbl9bMF1bMV0sIGMuaW5fWzBdWzJdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Y29tcHV0ZUxvZEZyb21HcmFkMkRBcnJheShjKSwgZGVNYXRoLnN3aXp6bGUocC5vZmZzZXQsIFsw
LDFdKSk7CisgICAgfTsKKworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5k
ZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRTaGFkb3dQcm9qR3JhZCA9IGZ1
bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy50ZXh0dXJlMkRTaGFkb3coYywgYy5pbl9bMF1bMl0vYy5pbl9bMF1bM10sIGMu
aW5fWzBdWzBdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDJEKGMpKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxD
b250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlMkRTaGFkb3dQcm9qR3JhZE9mZnNldCA9IGZ1bmN0aW9uKGMsIHAp
IHsKKyAgICAgICAgYy5jb2xvclswXSA9IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50
ZXh0dXJlMkRTaGFkb3dPZmZzZXQoYywgYy5pbl9bMF1bMl0vYy5pbl9bMF1bM10sIGMuaW5fWzBd
WzBdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDJEKGMpLCBkZU1hdGguc3dpenpsZShw
Lm9mZnNldCwgWzAsMV0pKTsKKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2ds
c1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBAcGFyYW0ge2Vz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAKKyAgICAgKi8K
KyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pHcmFk
MyA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRo
Lm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5p
bl9bMF1bMF0vYy5pbl9bMF1bMl0sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzJdLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21HcmFkMkQoYykpLCBwLnNjYWxlKSwg
cC5iaWFzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5k
ZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qR3JhZCA9IGZ1bmN0aW9u
KGMsIHApIHsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlMkQoYywgYy5pbl9bMF1bMF0vYy5p
bl9bMF1bM10sIGMuaW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21HcmFkMkQoYykpLCBwLnNjYWxlKSwgcC5iaWFzKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRl
ckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qR3JhZCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAg
ICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy50ZXh0dXJlM0QoYywgYy5pbl9bMF1bMF0vYy5pbl9bMF1bM10sIGMu
aW5fWzBdWzFdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsyXS9jLmluX1swXVszXSwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDNEKGMpKSwgcC5zY2FsZSks
IHAuYmlhcyk7CisgICAgfTsKKworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJS
ZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1zfSBwCisgICAgICovCisgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qR3JhZDNPZmZzZXQg
PSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5t
dWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJET2Zmc2V0KGMs
IGMuaW5fWzBdWzBdL2MuaW5fWzBdWzJdLCBjLmluX1swXVsxXS9jLmluX1swXVsyXSwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RGcm9tR3JhZDJEKGMpLCBkZU1hdGgu
c3dpenpsZShwLm9mZnNldCwgWzAsMV0pKSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29u
dGV4dH0gYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eExvb2t1cFBhcmFtc30gcAorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5ldmFsVGV4dHVyZTJEUHJvakdyYWRPZmZzZXQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAg
ICAgIGMuY29sb3IgPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTJET2Zmc2V0KGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzNd
LCBjLmluX1swXVsxXS9jLmluX1swXVszXSwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmNvbXB1dGVMb2RGcm9tR3JhZDJEKGMpLCBkZU1hdGguc3dpenpsZShwLm9mZnNldCwgWzAsMV0p
KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJhbSB7
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAgICAq
LworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakdy
YWRPZmZzZXQgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguYWRk
KGRlTWF0aC5tdWx0aXBseShlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMudGV4dHVyZTNE
T2Zmc2V0KGMsIGMuaW5fWzBdWzBdL2MuaW5fWzBdWzNdLCBjLmluX1swXVsxXS9jLmluX1swXVsz
XSwgYy5pbl9bMF1bMl0vYy5pbl9bMF1bM10sIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5jb21wdXRlTG9kRnJvbUdyYWQzRChjKSwgcC5vZmZzZXQpLCBwLnNjYWxlKSwgcC5iaWFzKTsK
KyAgICB9OworCisgICAgLy8gVGV4ZWwgZmV0Y2ggdmFyaWFudHMKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHR9IGMKKyAgICAgKiBA
cGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29rdXBQYXJhbXN9IHAK
KyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVsRmV0
Y2gyRCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciB4ICAgID0gTWF0aC50cnVuYyhjLmluX1swXVswXSkgKyBwLm9mZnNldFswXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5ICAgID0gTWF0aC50cnVuYyhjLmluX1swXVsxXSkg
KyBwLm9mZnNldFsxXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2QgPSBN
YXRoLnRydW5jKGMuaW5fWzFdWzBdKTsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVN
YXRoLm11bHRpcGx5KGMudGV4dHVyZXNbMF0udGV4MkQuZ2V0TGV2ZWwobG9kKS5nZXRQaXhlbCh4
LCB5KSwgcC5zY2FsZSksIHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4dH0gYworICAgICAqIEBwYXJh
bSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30gcAorICAg
ICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4ZWxGZXRjaDJE
QXJyYXkgPSBmdW5jdGlvbihjLCBwKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgeCAgICA9IE1hdGgudHJ1bmMoYy5pbl9bMF1bMF0pICsgcC5vZmZzZXRbMF07CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeSAgICA9IE1hdGgudHJ1bmMoYy5pbl9bMF1bMV0p
ICsgcC5vZmZzZXRbMV07CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbCAgICA9
IE1hdGgudHJ1bmMoYy5pbl9bMF1bMl0pOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGxvZCA9IE1hdGgudHJ1bmMoYy5pbl9bMV1bMF0pOworICAgICAgICBjLmNvbG9yID0gZGVN
YXRoLmFkZChkZU1hdGgubXVsdGlwbHkoYy50ZXh0dXJlc1swXS50ZXgyREFycmF5LmdldExldmVs
KGxvZCkuZ2V0UGl4ZWwoeCwgeSwgbCksIHAuc2NhbGUpLCBwLmJpYXMpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRl
eHR9IGMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhM
b29rdXBQYXJhbXN9IHAKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZXZhbFRleGVsRmV0Y2gzRCA9IGZ1bmN0aW9uKGMsIHApIHsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB4ICAgID0gTWF0aC50cnVuYyhjLmluX1swXVswXSkgKyBwLm9mZnNl
dFswXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5ICAgID0gTWF0aC50cnVu
YyhjLmluX1swXVsxXSkgKyBwLm9mZnNldFsxXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB6ICAgID0gTWF0aC50cnVuYyhjLmluX1swXVsyXSkgKyBwLm9mZnNldFsyXTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2QgPSBNYXRoLnRydW5jKGMuaW5fWzFd
WzBdKTsKKyAgICAgICAgYy5jb2xvciA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KGMudGV4
dHVyZXNbMF0udGV4M0QuZ2V0TGV2ZWwobG9kKS5nZXRQaXhlbCh4LCB5LCB6KSwgcC5zY2FsZSks
IHAuYmlhcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWx1YXRvcn0KKyAgICAgKiBA
cGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhFdmFsRnVuY30gZXZhbEZ1
bmMKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhMb29r
dXBQYXJhbXN9IGxvb2t1cFBhcmFtcworICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhMb29rdXBFdmFsdWF0b3IgPSBmdW5jdGlvbihldmFsRnVuYywgbG9va3Vw
UGFyYW1zKSB7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEV2YWxGdW5jfSAqLyB0aGlzLm1fZXZhbEZ1bmMgPSBldmFsRnVuYzsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwUGFyYW1z
fSAqLyB0aGlzLm1fbG9va3VwUGFyYW1zID0gbG9va3VwUGFyYW1zOworICAgIH07CisKKyAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwRXZhbHVhdG9yLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsdWF0b3IucHJv
dG90eXBlKTsKKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwRXZh
bHVhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhMb29rdXBFdmFsdWF0b3I7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtnbHNT
aGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjdHgKKyAgICAgKi8KKyAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwRXZhbHVhdG9yLnByb3RvdHlwZS5l
dmFsdWF0ZSA9IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICB0aGlzLm1fZXZhbEZ1bmMoY3R4LCB0
aGlzLm1fbG9va3VwUGFyYW1zKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2Fz
ZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBk
ZXNjCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVy
ZUxvb2t1cFNwZWN9IGxvb2t1cAorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleHR1cmVTcGVjfSB0ZXh0dXJlCisgICAgICogQHBhcmFtIHtlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RXZhbEZ1bmN9IGV2YWxGdW5jCisgICAgICogQHBhcmFt
IHtib29sZWFufSBpc1ZlcnRleENhc2UKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuU2hhZGVyVGV4dHVyZUZ1bmN0aW9uQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRl
c2MsIGxvb2t1cCwgdGV4dHVyZSwgZXZhbEZ1bmMsIGlzVmVydGV4Q2FzZSkgeworICAgICAgICBn
bHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNj
LCBpc1ZlcnRleENhc2UpOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleHR1cmVMb29rdXBTcGVjfSAqLyB0aGlzLm1fbG9va3VwU3BlYyA9IGxv
b2t1cDsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4dHVyZVNwZWN9ICovIHRoaXMubV90ZXh0dXJlU3BlYyA9IHRleHR1cmU7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cFBhcmFtc30g
Ki8gdGhpcy5tX2xvb2t1cFBhcmFtcyA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4TG9va3VwUGFyYW1zKCk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleExvb2t1cEV2YWx1YXRvcn0gKi8gdGhpcy5tX2V2YWx1YXRvciA9
IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4TG9va3VwRXZhbHVhdG9yKGV2
YWxGdW5jLCB0aGlzLm1fbG9va3VwUGFyYW1zKTsKKworICAgICAgICAvKiogQHR5cGUge2dsdVRl
eHR1cmUuVGV4dHVyZTJEfSAqLyB0aGlzLm1fdGV4dHVyZTJEID0gbnVsbDsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVUZXh0dXJlLlRleHR1cmVDdWJlfSAqLyB0aGlzLm1fdGV4dHVyZUN1YmUgPSBu
dWxsOworICAgICAgICAvKiogQHR5cGUge2dsdVRleHR1cmUuVGV4dHVyZTJEQXJyYXl9ICovIHRo
aXMubV90ZXh0dXJlMkRBcnJheSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1VGV4dHVy
ZS5UZXh0dXJlM0R9ICovIHRoaXMubV90ZXh0dXJlM0QgPSBudWxsOworICAgIH07CisKKyAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuU2hhZGVyVGV4dHVyZUZ1bmN0aW9uQ2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVy
Q2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFk
ZXJUZXh0dXJlRnVuY3Rpb25DYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFkZXJUZXh0dXJlRnVuY3Rpb25DYXNlOworCisgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlNoYWRlclRleHR1cmVGdW5jdGlvbkNhc2UucHJv
dG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKworICAgICAgICAvLyBCYXNlIGNvb3JkIHNjYWxl
ICYgYmlhcworICAgICAgICAvKiogQHR5cGUgeyhBcnJheTxudW1iZXI+fG51bWJlcil9ICovIHZh
ciBzID0gZGVNYXRoLnN1YnRyYWN0KHRoaXMubV9sb29rdXBTcGVjLm1heENvb3JkLCB0aGlzLm1f
bG9va3VwU3BlYy5taW5Db29yZCk7CisgICAgICAgIC8qKiBAdHlwZSB7KEFycmF5PG51bWJlcj58
bnVtYmVyKX0gKi8gdmFyIGIgPSB0aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZDsKKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBiYXNlQ29vcmRUcmFucyA9IFsKKyAg
ICAgICAgICAgIHNbMF0sIDAuMCwgMC4wLCBiWzBdLAorICAgICAgICAgICAgMC4wLCBzWzFdLCAw
LiwgYlsxXSwKKyAgICAgICAgICAgIHNbMl0vMi4wLCAtc1syXS8yLjAsIDAuMCwgc1syXS8yLjAg
KyBiWzJdLAorICAgICAgICAgICAgLXNbM10vMi4wLCBzWzNdLzIuMCwgMC4wLCBzWzNdLzIuMCAr
IGJbM10KKyAgICAgICAgXTsKKyAgICAgICAgdGhpcy5tX3VzZXJBdHRyaWJUcmFuc2Zvcm1zLnB1
c2godGN1TWF0cml4Lm1hdHJpeEZyb21BcnJheSg0LCA0LCBiYXNlQ29vcmRUcmFucykpOworCisg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc0xvZEJpYXMgPSBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZnVuY3Rpb25IYXNMb2QodGhpcy5tX2xvb2t1cFNwZWMuZnVu
YykgfHwgdGhpcy5tX2xvb2t1cFNwZWMudXNlQmlhczsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB2YXIgaXNHcmFkID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmZ1bmN0
aW9uSGFzR3JhZCh0aGlzLm1fbG9va3VwU3BlYy5mdW5jKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyghaXNHcmFkIHx8ICFoYXNMb2RCaWFzLCAnQXNzZXJ0IEVycm9yLiBleHBlY3RlZDogaXNH
cmFkIHx8IGhhc0xvZEJpYXMgPT09IGZhbHNlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIGlm
IChoYXNMb2RCaWFzKSB7CisgICAgICAgICAgICBzID0gdGhpcy5tX2xvb2t1cFNwZWMubWF4TG9k
QmlhcyAtIHRoaXMubV9sb29rdXBTcGVjLm1pbkxvZEJpYXM7CisgICAgICAgICAgICBiID0gdGhp
cy5tX2xvb2t1cFNwZWMubWluTG9kQmlhczsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIGxvZENvb3JkVHJhbnMgPSBbCisgICAgICAgICAgICAgICAgcy8yLjAs
IHMvMi4wLCAwLjAsIGIsCisgICAgICAgICAgICAgICAgMC4wLCAwLjAsIDAuMCwgMC4wLAorICAg
ICAgICAgICAgICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwKKyAgICAgICAgICAgICAgICAwLjAsIDAu
MCwgMC4wLCAwLjAKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHRoaXMubV91c2VyQXR0
cmliVHJhbnNmb3Jtcy5wdXNoKHRjdU1hdHJpeC5tYXRyaXhGcm9tQXJyYXkoNCwgNCwgbG9kQ29v
cmRUcmFucykpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGlzR3JhZCkgeworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3ggPSBkZU1hdGguc3VidHJh
Y3QodGhpcy5tX2xvb2t1cFNwZWMubWF4RFgsIHRoaXMubV9sb29rdXBTcGVjLm1pbkRYKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN5ID0gZGVNYXRoLnN1
YnRyYWN0KHRoaXMubV9sb29rdXBTcGVjLm1heERZLCB0aGlzLm1fbG9va3VwU3BlYy5taW5EWSk7
CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBncmFkRHhUcmFu
cyA9IFsKKyAgICAgICAgICAgICAgICBzeFswXS8yLjAsIHN4WzBdLzIuMCwgMC4wLCB0aGlzLm1f
bG9va3VwU3BlYy5taW5EWFswXSwKKyAgICAgICAgICAgICAgICBzeFsxXS8yLjAsIHN4WzFdLzIu
MCwgMC4wLCB0aGlzLm1fbG9va3VwU3BlYy5taW5EWFsxXSwKKyAgICAgICAgICAgICAgICBzeFsy
XS8yLjAsIHN4WzJdLzIuMCwgMC4wLCB0aGlzLm1fbG9va3VwU3BlYy5taW5EWFsyXSwKKyAgICAg
ICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAwLjAKKyAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBncmFkRHlUcmFucyA9IFsKKyAgICAg
ICAgICAgICAgICAtc3lbMF0vMi4wLCAtc3lbMF0vMi4wLCAwLjAsIHRoaXMubV9sb29rdXBTcGVj
Lm1heERZWzBdLAorICAgICAgICAgICAgICAgIC1zeVsxXS8yLjAsIC1zeVsxXS8yLjAsIDAuMCwg
dGhpcy5tX2xvb2t1cFNwZWMubWF4RFlbMV0sCisgICAgICAgICAgICAgICAgLXN5WzJdLzIuMCwg
LXN5WzJdLzIuMCwgMC4wLCB0aGlzLm1fbG9va3VwU3BlYy5tYXhEWVsyXSwKKyAgICAgICAgICAg
ICAgICAwLjAsIDAuMCwgMC4wLCAwLjAKKyAgICAgICAgICAgICBdOworCisgICAgICAgICAgICB0
aGlzLm1fdXNlckF0dHJpYlRyYW5zZm9ybXMucHVzaCh0Y3VNYXRyaXgubWF0cml4RnJvbUFycmF5
KDQsIDQsIGdyYWREeFRyYW5zKSk7CisgICAgICAgICAgICB0aGlzLm1fdXNlckF0dHJpYlRyYW5z
Zm9ybXMucHVzaCh0Y3VNYXRyaXgubWF0cml4RnJvbUFycmF5KDQsIDQsIGdyYWREeVRyYW5zKSk7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmluaXRTaGFkZXJTb3VyY2VzKCk7CisgICAgICAg
IHRoaXMuaW5pdFRleHR1cmUoKTsKKworICAgICAgICB0aGlzLnBvc3Rpbml0KCk7CisKKyAgICB9
OworCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlNoYWRlclRleHR1cmVGdW5j
dGlvbkNhc2UucHJvdG90eXBlLmluaXRUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciB0ZXhDdWJlU3d6ID0gWworICAg
ICAgICAgICAgWzAsIDAsIDEsIDFdLAorICAgICAgICAgICAgWzEsIDEsIDAsIDBdLAorICAgICAg
ICAgICAgWzAsIDEsIDAsIDFdLAorICAgICAgICAgICAgWzEsIDAsIDEsIDBdLAorICAgICAgICAg
ICAgWzAsIDEsIDEsIDBdLAorICAgICAgICAgICAgWzEsIDAsIDAsIDFdCisgICAgICAgIF07CisK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0ZXhDdWJlU3d6Lmxlbmd0aCA9PT0gNiwgJ0N1YmUg
c2hvdWxkIGhhdmUgNiBmYWNlcy4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBsZXZlbFN0ZXA7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNTY2FsZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgY0JpYXM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZUNlbGxT
aXplOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZkE7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZkI7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNvbG9yQTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgY29sb3JCOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHVkeDsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkdmR5OworCisgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLyB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVy
ZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fdGV4dHVyZVNwZWMuZm9ybWF0KTsKKyAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8gdmFy
IGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyh0ZXhGbXQpOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciB2aWV3cG9ydFNpemUgPSB0
aGlzLmdldFZpZXdwb3J0U2l6ZSgpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBpc1Byb2ogPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZnVuY3Rpb25IYXNQcm9q
KHRoaXMubV9sb29rdXBTcGVjLmZ1bmMpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHZhciBpc0F1dG9Mb2QgPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZnVuY3Rpb25I
YXNBdXRvTG9kKAorICAgICAgICAgICAgdGhpcy5tX2lzVmVydGV4Q2FzZSA/IGdsdVNoYWRlclBy
b2dyYW0uc2hhZGVyVHlwZS5WRVJURVggOiBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJB
R01FTlQsCisgICAgICAgICAgICB0aGlzLm1fbG9va3VwU3BlYy5mdW5jKTsgLy8gTE9EIGNhbiB2
YXJ5IHNpZ25pZmljYW50bHkKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwcm9q
ID0gaXNQcm9qID8KKyAgICAgICAgICAgIDEuMCAvIHRoaXMubV9sb29rdXBTcGVjLm1pbkNvb3Jk
W3RoaXMubV9sb29rdXBTcGVjLmZ1bmMgPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMgPyAyIDogM10gOgorICAgICAgICAgICAgMS4wOwor
CisgICAgICAgIHN3aXRjaCAodGhpcy5tX3RleHR1cmVTcGVjLnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVU
WVBFXzJEOgorICAgICAgICAgICAgICAgIGxldmVsU3RlcCA9IGlzQXV0b0xvZCA/IDAuMCA6IDEu
MCAvIE1hdGgubWF4KDEsIHRoaXMubV90ZXh0dXJlU3BlYy5udW1MZXZlbHMgLSAxKTsKKyAgICAg
ICAgICAgICAgICBjU2NhbGUgPSBkZU1hdGguc3VidHJhY3QoZm10SW5mby52YWx1ZU1heCwgZm10
SW5mby52YWx1ZU1pbik7CisgICAgICAgICAgICAgICAgY0JpYXMgPSBmbXRJbmZvLnZhbHVlTWlu
OworICAgICAgICAgICAgICAgIGJhc2VDZWxsU2l6ZSA9IE1hdGgubWluKHRoaXMubV90ZXh0dXJl
U3BlYy53aWR0aCAvIDQsIHRoaXMubV90ZXh0dXJlU3BlYy5oZWlnaHQgLyA0KTsKKworICAgICAg
ICAgICAgICAgIHRoaXMubV90ZXh0dXJlMkQgPSBnbHVUZXh0dXJlLnRleHR1cmUyREZyb21JbnRl
cm5hbEZvcm1hdChnbCwgdGhpcy5tX3RleHR1cmVTcGVjLmZvcm1hdCwgdGhpcy5tX3RleHR1cmVT
cGVjLndpZHRoLCB0aGlzLm1fdGV4dHVyZVNwZWMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBsZXZlbCA9IDA7IGxldmVsIDwgdGhpcy5tX3RleHR1cmVTcGVjLm51bUxldmVsczsg
bGV2ZWwrKykgeworICAgICAgICAgICAgICAgICAgICBmQSA9IGxldmVsICogbGV2ZWxTdGVwOwor
ICAgICAgICAgICAgICAgICAgICBmQiA9IDEuMCAtIGZBOworICAgICAgICAgICAgICAgICAgICBj
b2xvckEgPSBkZU1hdGguYWRkKGNCaWFzLCBkZU1hdGgubXVsdGlwbHkoY1NjYWxlLCBbZkEsIGZC
LCBmQSwgZkJdKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yQiA9IGRlTWF0aC5hZGQoY0Jp
YXMsIGRlTWF0aC5tdWx0aXBseShjU2NhbGUsIFtmQiwgZkEsIGZCLCBmQV0pKTsKKworICAgICAg
ICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZTJELmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVs
KGxldmVsKTsKKyAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlk
KHRoaXMubV90ZXh0dXJlMkQuZ2V0UmVmVGV4dHVyZSgpLmdldExldmVsKGxldmVsKSwgTWF0aC5t
YXgoMSwgYmFzZUNlbGxTaXplID4+IGxldmVsKSwgY29sb3JBLCBjb2xvckIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZTJELnVwbG9hZCgpOworCisg
ICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBMT0QuCisgICAgICAgICAgICAgICAgZHVkeCA9ICh0
aGlzLm1fbG9va3VwU3BlYy5tYXhDb29yZFswXSAtIHRoaXMubV9sb29rdXBTcGVjLm1pbkNvb3Jk
WzBdKSAqIHByb2ogKiB0aGlzLm1fdGV4dHVyZVNwZWMud2lkdGggLyB2aWV3cG9ydFNpemVbMF07
CisgICAgICAgICAgICAgICAgZHZkeSA9ICh0aGlzLm1fbG9va3VwU3BlYy5tYXhDb29yZFsxXSAt
IHRoaXMubV9sb29rdXBTcGVjLm1pbkNvb3JkWzFdKSAqIHByb2ogKiB0aGlzLm1fdGV4dHVyZVNw
ZWMuaGVpZ2h0IC8gdmlld3BvcnRTaXplWzFdOworICAgICAgICAgICAgICAgIHRoaXMubV9sb29r
dXBQYXJhbXMubG9kID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVMb2RG
cm9tRGVyaXZhdGVzKGR1ZHgsIDAuMCwgMC4wLCBkdmR5KTsKKworICAgICAgICAgICAgICAgIC8v
IEFwcGVuZCB0byB0ZXh0dXJlIGxpc3QuCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVz
LnB1c2gobmV3IGdsc1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmcodGhpcy5tX3RleHR1
cmUyRCwgdGhpcy5tX3RleHR1cmVTcGVjLnNhbXBsZXIpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
dHVyZVR5cGUuVEVYVFVSRVRZUEVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgbGV2ZWxTdGVw
ID0gaXNBdXRvTG9kID8gMC4wIDogMS4wIC8gTWF0aC5tYXgoMSwgdGhpcy5tX3RleHR1cmVTcGVj
Lm51bUxldmVscyAtIDEpOworICAgICAgICAgICAgICAgIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFj
dChmbXRJbmZvLnZhbHVlTWF4LCBmbXRJbmZvLnZhbHVlTWluKTsKKyAgICAgICAgICAgICAgICBj
QmlhcyA9IGZtdEluZm8udmFsdWVNaW47CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgY0Nvcm5lciA9IGRlTWF0aC5hZGQoY0JpYXMsIGRlTWF0aC5zY2Fs
ZShjU2NhbGUsIDAuNSkpOworICAgICAgICAgICAgICAgIGJhc2VDZWxsU2l6ZSA9IE1hdGgubWlu
KHRoaXMubV90ZXh0dXJlU3BlYy53aWR0aCAvIDQsIHRoaXMubV90ZXh0dXJlU3BlYy5oZWlnaHQg
LyA0KTsKKworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGhpcy5tX3RleHR1cmVT
cGVjLndpZHRoID09PSB0aGlzLm1fdGV4dHVyZVNwZWMuaGVpZ2h0LCAnRXhwZWN0ZWQgd2lkdGgg
PT09IGhlaWdodCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVy
ZUN1YmUgPSBnbHVUZXh0dXJlLmN1YmVGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMubV90ZXh0
dXJlU3BlYy5mb3JtYXQsIHRoaXMubV90ZXh0dXJlU3BlYy53aWR0aCk7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8IHRoaXMubV90ZXh0dXJlU3BlYy5udW1MZXZl
bHM7IGxldmVsKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZkEgPSBsZXZlbCAqIGxldmVsU3Rl
cDsKKyAgICAgICAgICAgICAgICAgICAgZkIgPSAxLjAgLSBmQTsKKyAgICAgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZiA9IFtmQSwgZkJdOworCisgICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBz
d3pBID0gdGV4Q3ViZVN3eltmYWNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHN3ekIgPSBkZU1hdGguc3VidHJhY3QoWzEsIDEsIDEs
IDFdLCBzd3pBKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yQSA9IGRlTWF0aC5hZGQo
Y0JpYXMsIGRlTWF0aC5tdWx0aXBseShjU2NhbGUsIGRlTWF0aC5zd2l6emxlKGYsIFtzd3pBWzBd
LCBzd3pBWzFdLCBzd3pBWzJdLCBzd3pBWzNdXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbG9yQiA9IGRlTWF0aC5hZGQoY0JpYXMsIGRlTWF0aC5tdWx0aXBseShjU2NhbGUsIGRlTWF0
aC5zd2l6emxlKGYsIFtzd3pCWzBdLCBzd3pCWzFdLCBzd3pCWzJdLCBzd3pCWzNdXSkpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVDdWJlLmdldFJlZlRleHR1cmUo
KS5hbGxvY0xldmVsKGZhY2UsIGxldmVsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSAqLyB2YXIgYWNjZXNzID0gdGhp
cy5tX3RleHR1cmVDdWJlLmdldFJlZlRleHR1cmUoKS5nZXRMZXZlbEZhY2UobGV2ZWwsIGZhY2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsYXN0
UGl4ID0gYWNjZXNzLmdldFdpZHRoKCkgLSAxOworCisgICAgICAgICAgICAgICAgICAgICAgICB0
Y3VUZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQoYWNjZXNzLCBNYXRoLm1heCgxLCBiYXNlQ2VsbFNp
emUgPj4gbGV2ZWwpLCBjb2xvckEsIGNvbG9yQik7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEVuc3VyZSBhbGwgY29ybmVycyBoYXZlIGlkZW50aWNhbCBjb2xvcnMgaW4gb3JkZXIgdG8g
YXZvaWQgZGVhbGluZyB3aXRoIGFtYmlndW91cyBjb3JuZXIgdGV4ZWwgZmlsdGVyaW5nCisgICAg
ICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwoY0Nvcm5lciwgMCwgMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwoY0Nvcm5lciwgMCwgbGFzdFBpeCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwoY0Nvcm5lciwgbGFzdFBp
eCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwoY0Nvcm5lciwg
bGFzdFBpeCwgbGFzdFBpeCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVDdWJlLnVwbG9hZCgpOworCisgICAg
ICAgICAgICAgICAgLy8gQ29tcHV0ZSBMT0QgXG5vdGUgQXNzdW1lcyB0aGF0IG9ubHkgc2luZ2xl
IHNpZGUgaXMgYWNjZXNzZWQgYW5kIFIgaXMgY29uc3RhbnQgbWFqb3IgYXhpcy4KKyAgICAgICAg
ICAgICAgICBhc3NlcnRNc2dPcHRpb25zKE1hdGguYWJzKHRoaXMubV9sb29rdXBTcGVjLm1pbkNv
b3JkWzJdIC0gdGhpcy5tX2xvb2t1cFNwZWMubWF4Q29vcmRbMl0pIDwgMC4wMDUsICdFeHBlY3Rl
ZCBhYnMobWluQ29vcmQtbWF4Q29vcmQpIDwgMC4wMDUnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhNYXRoLmFicyh0aGlzLm1fbG9va3VwU3BlYy5taW5D
b29yZFswXSkgPCBNYXRoLmFicyh0aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZFsyXSkgJiYgTWF0
aC5hYnModGhpcy5tX2xvb2t1cFNwZWMubWF4Q29vcmRbMF0pIDwgTWF0aC5hYnModGhpcy5tX2xv
b2t1cFNwZWMubWluQ29vcmRbMl0pLCAnQXNzZXJ0IGVycm9yOiBtaW5Db29yZCwgbWF4Q29vcmQn
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhNYXRoLmFi
cyh0aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZFsxXSkgPCBNYXRoLmFicyh0aGlzLm1fbG9va3Vw
U3BlYy5taW5Db29yZFsyXSkgJiYgTWF0aC5hYnModGhpcy5tX2xvb2t1cFNwZWMubWF4Q29vcmRb
MV0pIDwgTWF0aC5hYnModGhpcy5tX2xvb2t1cFNwZWMubWluQ29vcmRbMl0pLCAnQXNzZXJ0IGVy
cm9yOiBtaW5Db29yZCwgbWF4Q29vcmQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZhY2VDb29yZHN9ICovIHZhciBjMDAgPSB0Y3VU
ZXh0dXJlLmdldEN1YmVGYWNlQ29vcmRzKFt0aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZFswXSAq
IHByb2osIHRoaXMubV9sb29rdXBTcGVjLm1pbkNvb3JkWzFdICogcHJvaiwgdGhpcy5tX2xvb2t1
cFNwZWMubWluQ29vcmRbMl0gKiBwcm9qXSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0
Y3VUZXh0dXJlLkN1YmVGYWNlQ29vcmRzfSAqLyB2YXIgYzEwID0gdGN1VGV4dHVyZS5nZXRDdWJl
RmFjZUNvb3JkcyhbdGhpcy5tX2xvb2t1cFNwZWMubWF4Q29vcmRbMF0gKiBwcm9qLCB0aGlzLm1f
bG9va3VwU3BlYy5taW5Db29yZFsxXSAqIHByb2osIHRoaXMubV9sb29rdXBTcGVjLm1pbkNvb3Jk
WzJdICogcHJval0pOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5DdWJl
RmFjZUNvb3Jkc30gKi8gdmFyIGMwMSA9IHRjdVRleHR1cmUuZ2V0Q3ViZUZhY2VDb29yZHMoW3Ro
aXMubV9sb29rdXBTcGVjLm1pbkNvb3JkWzBdICogcHJvaiwgdGhpcy5tX2xvb2t1cFNwZWMubWF4
Q29vcmRbMV0gKiBwcm9qLCB0aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZFsyXSAqIHByb2pdKTsK
KyAgICAgICAgICAgICAgICBkdWR4ID0gKGMxMC5zIC0gYzAwLnMpICogdGhpcy5tX3RleHR1cmVT
cGVjLndpZHRoIC8gdmlld3BvcnRTaXplWzBdOworICAgICAgICAgICAgICAgIGR2ZHkgPSAoYzAx
LnQgLSBjMDAudCkgKiB0aGlzLm1fdGV4dHVyZVNwZWMuaGVpZ2h0IC8gdmlld3BvcnRTaXplWzFd
OworCisgICAgICAgICAgICAgICAgdGhpcy5tX2xvb2t1cFBhcmFtcy5sb2QgPSBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMoZHVkeCwgMC4wLCAw
LjAsIGR2ZHkpOworCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVzLnB1c2gobmV3IGds
c1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmcodGhpcy5tX3RleHR1cmVDdWJlLCB0aGlz
Lm1fdGV4dHVyZVNwZWMuc2FtcGxlcikpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5U
RVhUVVJFVFlQRV8yRF9BUlJBWToKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGxheWVyU3RlcCA9IDEuMCAvIHRoaXMubV90ZXh0dXJlU3BlYy5kZXB0aDsKKyAgICAg
ICAgICAgICAgICBsZXZlbFN0ZXAgPSBpc0F1dG9Mb2QgPyAwLjAgOiAxLjAgLyAoTWF0aC5tYXgo
MSwgdGhpcy5tX3RleHR1cmVTcGVjLm51bUxldmVscyAtIDEpICogdGhpcy5tX3RleHR1cmVTcGVj
LmRlcHRoKTsKKyAgICAgICAgICAgICAgICBjU2NhbGUgPSBkZU1hdGguc3VidHJhY3QoZm10SW5m
by52YWx1ZU1heCwgZm10SW5mby52YWx1ZU1pbik7CisgICAgICAgICAgICAgICAgY0JpYXMgPSBm
bXRJbmZvLnZhbHVlTWluOworICAgICAgICAgICAgICAgIGJhc2VDZWxsU2l6ZSA9IE1hdGgubWlu
KHRoaXMubV90ZXh0dXJlU3BlYy53aWR0aCAvIDQsIHRoaXMubV90ZXh0dXJlU3BlYy5oZWlnaHQg
LyA0KTsKKworICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlMkRBcnJheSA9IGdsdVRleHR1
cmUudGV4dHVyZTJEQXJyYXlGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV90ZXh0dXJlU3BlYy5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV90ZXh0dXJlU3BlYy53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVT
cGVjLmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVTcGVjLmRlcHRo
KTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsID0gMDsgbGV2ZWwgPCB0aGlzLm1f
dGV4dHVyZVNwZWMubnVtTGV2ZWxzOyBsZXZlbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV90ZXh0dXJlMkRBcnJheS5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbChsZXZlbCk7Cisg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vz
c30gKi8gdmFyIGxldmVsQWNjZXNzID0gdGhpcy5tX3RleHR1cmUyREFycmF5LmdldFJlZlRleHR1
cmUoKS5nZXRMZXZlbChsZXZlbCk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbGF5
ZXIgPSAwOyBsYXllciA8IGxldmVsQWNjZXNzLmdldERlcHRoKCk7IGxheWVyKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZBID0gbGF5ZXIgKiBsYXllclN0ZXAgKyBsZXZlbCAqIGxldmVs
U3RlcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZCID0gMS4wIC0gZkE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvckEgPSBkZU1hdGguYWRkKGNCaWFzLCBkZU1hdGgubXVsdGlwbHko
Y1NjYWxlLCBbZkEsIGZCLCBmQSwgZkJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2xv
ckIgPSBkZU1hdGguYWRkKGNCaWFzLCBkZU1hdGgubXVsdGlwbHkoY1NjYWxlLCBbZkIsIGZBLCBm
QiwgZkFdKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxX
aXRoR3JpZCh0Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdpb24obGV2ZWxBY2Nlc3MsIDAsIDAsIGxh
eWVyLCBsZXZlbEFjY2Vzcy5nZXRXaWR0aCgpLCBsZXZlbEFjY2Vzcy5nZXRIZWlnaHQoKSwgMSks
IE1hdGgubWF4KDEsIGJhc2VDZWxsU2l6ZSA+PiBsZXZlbCksIGNvbG9yQSwgY29sb3JCKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0
aGlzLm1fdGV4dHVyZTJEQXJyYXkudXBsb2FkKCk7CisKKyAgICAgICAgICAgICAgICAvLyBDb21w
dXRlIExPRC4KKyAgICAgICAgICAgICAgICBkdWR4ID0gKHRoaXMubV9sb29rdXBTcGVjLm1heENv
b3JkWzBdIC0gdGhpcy5tX2xvb2t1cFNwZWMubWluQ29vcmRbMF0pICogcHJvaiAqIHRoaXMubV90
ZXh0dXJlU3BlYy53aWR0aCAvIHZpZXdwb3J0U2l6ZVswXTsKKyAgICAgICAgICAgICAgICBkdmR5
ID0gKHRoaXMubV9sb29rdXBTcGVjLm1heENvb3JkWzFdIC0gdGhpcy5tX2xvb2t1cFNwZWMubWlu
Q29vcmRbMV0pICogcHJvaiAqIHRoaXMubV90ZXh0dXJlU3BlYy5oZWlnaHQgLyB2aWV3cG9ydFNp
emVbMV07CisgICAgICAgICAgICAgICAgdGhpcy5tX2xvb2t1cFBhcmFtcy5sb2QgPSBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMoZHVkeCwgMC4w
LCAwLjAsIGR2ZHkpOworCisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRvIHRleHR1cmUgbGlz
dC4KKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXMucHVzaChuZXcgZ2xzU2hhZGVyUmVu
ZGVyQ2FzZS5UZXh0dXJlQmluZGluZyh0aGlzLm1fdGV4dHVyZTJEQXJyYXksIHRoaXMubV90ZXh0
dXJlU3BlYy5zYW1wbGVyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVU
WVBFXzNEOgorICAgICAgICAgICAgICAgIGxldmVsU3RlcCA9IGlzQXV0b0xvZCA/IDAuMCA6IDEu
MCAvIE1hdGgubWF4KDEsIHRoaXMubV90ZXh0dXJlU3BlYy5udW1MZXZlbHMgLSAxKTsKKyAgICAg
ICAgICAgICAgICBjU2NhbGUgPSBkZU1hdGguc3VidHJhY3QoZm10SW5mby52YWx1ZU1heCwgZm10
SW5mby52YWx1ZU1pbik7CisgICAgICAgICAgICAgICAgY0JpYXMgPSBmbXRJbmZvLnZhbHVlTWlu
OworICAgICAgICAgICAgICAgIGJhc2VDZWxsU2l6ZSA9IE1hdGgubWluKHRoaXMubV90ZXh0dXJl
U3BlYy53aWR0aCAvIDIsIHRoaXMubV90ZXh0dXJlU3BlYy5oZWlnaHQgLyAyLCB0aGlzLm1fdGV4
dHVyZVNwZWMuZGVwdGggLyAyKTsKKworICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlM0Qg
PSBnbHVUZXh0dXJlLnRleHR1cmUzREZyb21JbnRlcm5hbEZvcm1hdChnbCwgdGhpcy5tX3RleHR1
cmVTcGVjLmZvcm1hdCwgdGhpcy5tX3RleHR1cmVTcGVjLndpZHRoLCB0aGlzLm1fdGV4dHVyZVNw
ZWMuaGVpZ2h0LCB0aGlzLm1fdGV4dHVyZVNwZWMuZGVwdGgpOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGxldmVsID0gMDsgbGV2ZWwgPCB0aGlzLm1fdGV4dHVyZVNwZWMubnVtTGV2ZWxzOyBs
ZXZlbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZBID0gbGV2ZWwgKiBsZXZlbFN0ZXA7Cisg
ICAgICAgICAgICAgICAgICAgIGZCID0gMS4wIC0gZkE7CisgICAgICAgICAgICAgICAgICAgIGNv
bG9yQSA9IGRlTWF0aC5hZGQoY0JpYXMsIGRlTWF0aC5tdWx0aXBseShjU2NhbGUsIFtmQSwgZkIs
IGZBLCBmQl0pKTsKKyAgICAgICAgICAgICAgICAgICAgY29sb3JCID0gZGVNYXRoLmFkZChjQmlh
cywgZGVNYXRoLm11bHRpcGx5KGNTY2FsZSwgW2ZCLCBmQSwgZkIsIGZBXSkpOworCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlM0QuZ2V0UmVmVGV4dHVyZSgpLmFsbG9jTGV2ZWwo
bGV2ZWwpOworICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQo
dGhpcy5tX3RleHR1cmUzRC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWwpLCBNYXRoLm1h
eCgxLCBiYXNlQ2VsbFNpemUgPj4gbGV2ZWwpLCBjb2xvckEsIGNvbG9yQik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlM0QudXBsb2FkKCk7CisKKyAg
ICAgICAgICAgICAgICAvLyBDb21wdXRlIExPRC4KKyAgICAgICAgICAgICAgICBkdWR4ID0gKHRo
aXMubV9sb29rdXBTcGVjLm1heENvb3JkWzBdIC0gdGhpcy5tX2xvb2t1cFNwZWMubWluQ29vcmRb
MF0pICogcHJvaiAqIHRoaXMubV90ZXh0dXJlU3BlYy53aWR0aCAvIHZpZXdwb3J0U2l6ZVswXTsK
KyAgICAgICAgICAgICAgICBkdmR5ID0gKHRoaXMubV9sb29rdXBTcGVjLm1heENvb3JkWzFdIC0g
dGhpcy5tX2xvb2t1cFNwZWMubWluQ29vcmRbMV0pICogcHJvaiAqIHRoaXMubV90ZXh0dXJlU3Bl
Yy5oZWlnaHQgLyB2aWV3cG9ydFNpemVbMV07CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBkd2R4ID0gKHRoaXMubV9sb29rdXBTcGVjLm1heENvb3JkWzJdIC0gdGhp
cy5tX2xvb2t1cFNwZWMubWluQ29vcmRbMl0pICogMC41ICogcHJvaiAqIHRoaXMubV90ZXh0dXJl
U3BlYy5kZXB0aCAvIHZpZXdwb3J0U2l6ZVswXTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGR3ZHkgPSAodGhpcy5tX2xvb2t1cFNwZWMubWF4Q29vcmRbMl0gLSB0
aGlzLm1fbG9va3VwU3BlYy5taW5Db29yZFsyXSkgKiAwLjUgKiBwcm9qICogdGhpcy5tX3RleHR1
cmVTcGVjLmRlcHRoIC8gdmlld3BvcnRTaXplWzFdOworICAgICAgICAgICAgICAgIHRoaXMubV9s
b29rdXBQYXJhbXMubG9kID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNvbXB1dGVM
b2RGcm9tRGVyaXZhdGVzKGR1ZHgsIDAuMCwgZHdkeCwgMC4wLCBkdmR5LCBkd2R5KTsKKworICAg
ICAgICAgICAgICAgIC8vIEFwcGVuZCB0byB0ZXh0dXJlIGxpc3QuCisgICAgICAgICAgICAgICAg
dGhpcy5tX3RleHR1cmVzLnB1c2gobmV3IGdsc1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRp
bmcodGhpcy5tX3RleHR1cmUzRCwgdGhpcy5tX3RleHR1cmVTcGVjLnNhbXBsZXIpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1RleHR1cmUgdHlwZSBub3Qgc3VwcG9ydGVkLicpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gU2V0IGxvb2t1cCBzY2FsZSAmIGJpYXMKKyAgICAgICAgdGhpcy5t
X2xvb2t1cFBhcmFtcy5zY2FsZSA9IGZtdEluZm8ubG9va3VwU2NhbGU7CisgICAgICAgIHRoaXMu
bV9sb29rdXBQYXJhbXMuYmlhcyA9IGZtdEluZm8ubG9va3VwQmlhczsKKyAgICAgICAgdGhpcy5t
X2xvb2t1cFBhcmFtcy5vZmZzZXQgPSB0aGlzLm1fbG9va3VwU3BlYy5vZmZzZXQ7CisgICAgfTsK
KworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFkZXJUZXh0dXJlRnVuY3Rp
b25DYXNlLnByb3RvdHlwZS5pbml0U2hhZGVyU291cmNlcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbn0g
Ki8gdmFyIGZ1bmN0aW9uXyA9IHRoaXMubV9sb29rdXBTcGVjLmZ1bmM7CisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzVnR4Q2FzZSA9IHRoaXMubV9pc1ZlcnRleENhc2U7Cisg
ICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzUHJvaiA9IGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5mdW5jdGlvbkhhc1Byb2ooZnVuY3Rpb25fKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNHcmFkID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmZ1bmN0aW9uSGFzR3JhZChmdW5jdGlvbl8pOworICAgICAgICAvKiogQHR5cGUge2Jv
b2xlYW59ICovIHZhciBpc1NoYWRvdyA9IHRoaXMubV90ZXh0dXJlU3BlYy5zYW1wbGVyLmNvbXBh
cmUgIT09IHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORTsKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXMyRFByb2o0ID0gIWlzU2hhZG93ICYmIHRoaXMu
bV90ZXh0dXJlU3BlYy50eXBlID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQgJiYgKGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KIHx8IGZ1bmN0aW9uXyA9PT0g
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9E
IHx8IGZ1bmN0aW9uXyA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkVQUk9KR1JBRCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFy
IGlzSW50Q29vcmQgPSBmdW5jdGlvbl8gPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXhGdW5jdGlvbi5URVhFTEZFVENIOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHZhciBoYXNMb2RCaWFzID0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmZ1bmN0aW9u
SGFzTG9kKHRoaXMubV9sb29rdXBTcGVjLmZ1bmMpIHx8IHRoaXMubV9sb29rdXBTcGVjLnVzZUJp
YXM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdGV4Q29vcmRDb21wcyA9IHRo
aXMubV90ZXh0dXJlU3BlYy50eXBlID09PSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQgPyAyIDogMzsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBleHRyYUNvb3JkQ29tcHMgPSAoaXNQcm9qID8gKGlzMkRQcm9qNCA/IDIg
OiAxKSA6IDApICsgKGlzU2hhZG93ID8gMSA6IDApOworICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBjb29yZFR5cGUgPSBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQsIHRleENvb3JkQ29tcHMr
ZXh0cmFDb29yZENvbXBzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbn0gKi8gdmFyIGNvb3JkUHJlYyA9IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lP
Tl9ISUdIUDsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBjb29yZFR5cGVOYW1l
ID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoY29vcmRUeXBlKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBjb29yZFByZWNOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXRQ
cmVjaXNpb25OYW1lKGNvb3JkUHJlYyk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5U
ZXh0dXJlRm9ybWF0fSAqLyB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5h
bEZvcm1hdCh0aGlzLm1fdGV4dHVyZVNwZWMuZm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHs/
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHNhbXBsZXJUeXBlID0gbnVsbDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgZ3JhZFR5cGUgPSAo
dGhpcy5tX3RleHR1cmVTcGVjLnR5cGUgPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFX01BUCB8fCB0aGlzLm1fdGV4dHVyZVNwZWMu
dHlwZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRV
UkVUWVBFXzNEKSA/IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMyA6IGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMjsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHZhciBncmFkVHlwZU5hbWUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShncmFkVHlw
ZSk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgYmFzZUZ1bmNOYW1lID0gJyc7
CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghaXNHcmFkIHx8ICFoYXNMb2RCaWFzLCAnRXhw
ZWN0ZWQgIWlzR3JhZCB8fCAhaGFzTG9kQmlhcycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBz
d2l0Y2ggKHRoaXMubV90ZXh0dXJlU3BlYy50eXBlKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRDoKKyAg
ICAgICAgICAgICAgICBzYW1wbGVyVHlwZSA9IGlzU2hhZG93ID8gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5TQU1QTEVSXzJEX1NIQURPVyA6IGdsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIyRFR5cGUo
dGV4Rm10KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFX0NVQkVfTUFQ
OgorICAgICAgICAgICAgICAgIHNhbXBsZXJUeXBlID0gaXNTaGFkb3cgPyBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLlNBTVBMRVJfQ1VCRV9TSEFET1cgOiBnbHVUZXh0dXJlVXRpbC5nZXRTYW1wbGVy
Q3ViZVR5cGUodGV4Rm10KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBF
XzJEX0FSUkFZOgorICAgICAgICAgICAgICAgIHNhbXBsZXJUeXBlID0gaXNTaGFkb3cgPyBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XIDogZ2x1VGV4dHVyZVV0
aWwuZ2V0U2FtcGxlcjJEQXJyYXlUeXBlKHRleEZtdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
VHlwZS5URVhUVVJFVFlQRV8zRDoKKyAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCFp
c1NoYWRvdywgJ0V4cGVjdGVkICFpc1NoYWRvdycsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBzYW1wbGVyVHlwZSA9IGdsdVRleHR1cmVVdGlsLmdldFNhbXBsZXIzRFR5cGUodGV4Rm10
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHR5cGUuJyk7CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKHRoaXMubV9sb29rdXBTcGVjLmZ1bmMpIHsKKyAgICAgICAgICAg
IGNhc2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkU6
IGJhc2VGdW5jTmFtZSA9ICd0ZXh0dXJlJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjogYmFzZUZ1
bmNOYW1lID0gJ3RleHR1cmVQcm9qJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjM6IGJhc2VGdW5j
TmFtZSA9ICd0ZXh0dXJlUHJvaic7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRDogYmFzZUZ1bmNOYW1l
ID0gJ3RleHR1cmVMb2QnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9EOiBiYXNlRnVuY05hbWUg
PSAndGV4dHVyZVByb2pMb2QnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9EMzogYmFzZUZ1bmNO
YW1lID0gJ3RleHR1cmVQcm9qTG9kJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFR1JBRDogYmFzZUZ1bmNO
YW1lID0gJ3RleHR1cmVHcmFkJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQ6IGJhc2VGdW5j
TmFtZSA9ICd0ZXh0dXJlUHJvakdyYWQnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRDM6IGJh
c2VGdW5jTmFtZSA9ICd0ZXh0dXJlUHJvakdyYWQnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWEVMRkVUQ0g6IGJh
c2VGdW5jTmFtZSA9ICd0ZXhlbEZldGNoJzsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBmdW5jdGlvbi4nKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydCA9ICcn
OworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWcgPSAnJzsKKyAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBvcCA9ICcnOworCisgICAgICAgIHZlcnQgKz0gJyN2
ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzQgYV9wb3Np
dGlvbjtcbicgKworICAgICAgICAgICAgICAgICdpbiAnICsgY29vcmRQcmVjTmFtZSArICcgJyAr
IGNvb3JkVHlwZU5hbWUgKyAnIGFfaW4wO1xuJzsKKworICAgICAgICBpZiAoaXNHcmFkKSB7Cisg
ICAgICAgICAgICB2ZXJ0ICs9ICdpbiAnICsgY29vcmRQcmVjTmFtZSArICcgJyArIGdyYWRUeXBl
TmFtZSArICcgYV9pbjE7XG4nOworICAgICAgICAgICAgdmVydCArPSAnaW4gJyArIGNvb3JkUHJl
Y05hbWUgKyAnICcgKyBncmFkVHlwZU5hbWUgKyAnIGFfaW4yO1xuJzsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChoYXNMb2RCaWFzKQorICAgICAgICAgICAgdmVydCArPSAnaW4gJyArIGNv
b3JkUHJlY05hbWUgKyAnIGZsb2F0IGFfaW4xO1xuJzsKKworICAgICAgICBmcmFnICs9ICcjdmVy
c2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBv
dXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nOworCisgICAgICAgIGlmIChpc1Z0eENhc2UpIHsK
KyAgICAgICAgICAgIHZlcnQgKz0gJ291dCBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbic7CisgICAg
ICAgICAgICBmcmFnICs9ICdpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbic7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ICs9ICdvdXQgJyArIGNv
b3JkUHJlY05hbWUgKyAnICcgKyBjb29yZFR5cGVOYW1lICsgJyB2X3RleENvb3JkO1xuJzsKKyAg
ICAgICAgICAgIGZyYWcgKz0gJ2luICcgKyBjb29yZFByZWNOYW1lICsgJyAnICsgY29vcmRUeXBl
TmFtZSArICcgdl90ZXhDb29yZDtcbic7CisKKyAgICAgICAgICAgIGlmIChpc0dyYWQpIHsKKyAg
ICAgICAgICAgICAgICB2ZXJ0ICs9ICdvdXQgJyArIGNvb3JkUHJlY05hbWUgKyAnICcgKyBncmFk
VHlwZU5hbWUgKyAnIHZfZ3JhZFg7XG4nOworICAgICAgICAgICAgICAgIHZlcnQgKz0gJ291dCAn
ICsgY29vcmRQcmVjTmFtZSArICcgJyArIGdyYWRUeXBlTmFtZSArICcgdl9ncmFkWTtcbic7Cisg
ICAgICAgICAgICAgICAgZnJhZyArPSAnaW4gJyArIGNvb3JkUHJlY05hbWUgKyAnICcgKyBncmFk
VHlwZU5hbWUgKyAnIHZfZ3JhZFg7XG4nOworICAgICAgICAgICAgICAgIGZyYWcgKz0gJ2luICcg
KyBjb29yZFByZWNOYW1lICsgJyAnICsgZ3JhZFR5cGVOYW1lICsgJyB2X2dyYWRZO1xuJzsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGhhc0xvZEJpYXMpIHsKKyAgICAgICAgICAg
ICAgICB2ZXJ0ICs9ICdvdXQgJyArIGNvb3JkUHJlY05hbWUgKyAnIGZsb2F0IHZfbG9kQmlhcztc
bic7CisgICAgICAgICAgICAgICAgZnJhZyArPSAnaW4gJyArIGNvb3JkUHJlY05hbWUgKyAnIGZs
b2F0IHZfbG9kQmlhcztcbic7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBVbmlmb3JtcworICAgICAgICBvcCArPSAndW5pZm9ybSBoaWdocCAnICsgZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU5hbWUoc2FtcGxlclR5cGUpICsgJyB1X3NhbXBsZXI7XG4nICsKKyAgICAg
ICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X3NjYWxlO1xuJyArCisgICAgICAgICAgICAg
ICd1bmlmb3JtIGhpZ2hwIHZlYzQgdV9iaWFzO1xuJzsKKworICAgICAgICB2ZXJ0ICs9IGlzVnR4
Q2FzZSA/IG9wIDogJyc7CisgICAgICAgIGZyYWcgKz0gaXNWdHhDYXNlID8gJycgOiBvcDsKKyAg
ICAgICAgb3AgPSAnJzsKKworICAgICAgICB2ZXJ0ICs9ICdcbnZvaWQgbWFpbigpXG57XG4nICsK
KyAgICAgICAgICAgICAgICAnXHRnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nOworICAgICAg
ICBmcmFnICs9ICdcbnZvaWQgbWFpbigpXG57XG4nOworCisgICAgICAgIGlmIChpc1Z0eENhc2Up
CisgICAgICAgICAgICB2ZXJ0ICs9ICdcdHZfY29sb3IgPSAnOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBmcmFnICs9ICdcdG9fY29sb3IgPSAnOworCisgICAgICAgIC8vIE9wLgorICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHRleENvb3JkID0gaXNWdHhDYXNlID8gJ2FfaW4w
JyA6ICd2X3RleENvb3JkJzsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBncmFk
WCA9IGlzVnR4Q2FzZSA/ICdhX2luMScgOiAndl9ncmFkWCc7CisgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgZ3JhZFkgPSBpc1Z0eENhc2UgPyAnYV9pbjInIDogJ3ZfZ3JhZFknOwor
ICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGxvZEJpYXMgPSBpc1Z0eENhc2UgPyAn
YV9pbjEnIDogJ3ZfbG9kQmlhcyc7CisKKyAgICAgICAgb3AgKz0gJ3ZlYzQoJyArIGJhc2VGdW5j
TmFtZTsKKyAgICAgICAgaWYgKHRoaXMubV9sb29rdXBTcGVjLnVzZU9mZnNldCkKKyAgICAgICAg
ICAgIG9wICs9ICdPZmZzZXQnOworICAgICAgICBvcCArPSAnKHVfc2FtcGxlciwgJzsKKworICAg
ICAgICBpZiAoaXNJbnRDb29yZCkKKyAgICAgICAgICAgIG9wICs9ICdpdmVjJyArICh0ZXhDb29y
ZENvbXBzK2V4dHJhQ29vcmRDb21wcykgKyAnKCc7CisKKyAgICAgICAgb3AgKz0gdGV4Q29vcmQ7
CisKKyAgICAgICAgaWYgKGlzSW50Q29vcmQpCisgICAgICAgICAgICBvcCArPSAnKSc7CisKKyAg
ICAgICAgaWYgKGlzR3JhZCkKKyAgICAgICAgICAgIG9wICs9ICcsICcgKyBncmFkWCArICcsICcg
KyBncmFkWTsKKworICAgICAgICBpZiAoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmZ1
bmN0aW9uSGFzTG9kKGZ1bmN0aW9uXykpIHsKKyAgICAgICAgICAgIGlmIChpc0ludENvb3JkKQor
ICAgICAgICAgICAgICAgIG9wICs9ICcsIGludCgnICsgbG9kQmlhcyArICcpJzsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcCArPSAnLCAnICsgbG9kQmlhczsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0aGlzLm1fbG9va3VwU3BlYy51c2VPZmZzZXQpIHsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb2Zmc2V0Q29tcHMgPSB0aGlzLm1fdGV4dHVy
ZVNwZWMudHlwZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBl
LlRFWFRVUkVUWVBFXzNEID8gMyA6IDI7CisKKyAgICAgICAgICAgIG9wICs9ICcsIGl2ZWMnICsg
b2Zmc2V0Q29tcHMgKyAnKCc7CisgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBv
ZmZzZXRDb21wczsgbmR4KyspIHsKKyAgICAgICAgICAgICAgICBpZiAobmR4ICE9PSAwKQorICAg
ICAgICAgICAgICAgICAgICBvcCArPSAnLCAnOworICAgICAgICAgICAgICAgIG9wICs9IHRoaXMu
bV9sb29rdXBTcGVjLm9mZnNldFtuZHhdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3Ag
Kz0gJyknOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9sb29rdXBTcGVjLnVzZUJp
YXMpCisgICAgICAgICAgICBvcCArPSAnLCAnICsgbG9kQmlhczsKKworICAgICAgICBvcCArPSAn
KSc7CisKKyAgICAgICAgaWYgKGlzU2hhZG93KQorICAgICAgICAgICAgb3AgKz0gJywgMC4wLCAw
LjAsIDEuMCknOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvcCArPSAnKSp1X3NjYWxlICsg
dV9iaWFzJzsKKworICAgICAgICBvcCArPSAnO1xuJzsKKworICAgICAgICB2ZXJ0ICs9IGlzVnR4
Q2FzZSA/IG9wIDogJyc7CisgICAgICAgIGZyYWcgKz0gaXNWdHhDYXNlID8gJycgOiBvcDsKKyAg
ICAgICAgb3AgPSAnJzsKKworICAgICAgICBpZiAoaXNWdHhDYXNlKQorICAgICAgICAgICAgZnJh
ZyArPSAnXHRvX2NvbG9yID0gdl9jb2xvcjtcbic7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgdmVydCArPSAnXHR2X3RleENvb3JkID0gYV9pbjA7XG4nOworCisgICAgICAgICAgICBpZiAo
aXNHcmFkKSB7CisgICAgICAgICAgICAgICAgdmVydCArPSAnXHR2X2dyYWRYID0gYV9pbjE7XG4n
OworICAgICAgICAgICAgICAgIHZlcnQgKz0gJ1x0dl9ncmFkWSA9IGFfaW4yO1xuJzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGhhc0xvZEJpYXMpCisgICAgICAgICAgICAg
ICAgdmVydCArPSAnXHR2X2xvZEJpYXMgPSBhX2luMTtcbic7CisgICAgICAgIH0KKworICAgICAg
ICB2ZXJ0ICs9ICd9XG4nOworICAgICAgICBmcmFnICs9ICd9XG4nOworCisgICAgICAgIHRoaXMu
bV92ZXJ0U2hhZGVyU291cmNlID0gdmVydDsKKyAgICAgICAgdGhpcy5tX2ZyYWdTaGFkZXJTb3Vy
Y2UgPSBmcmFnOworICAgIH07CisKKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICAgICAgdGhpcy5tX3RleHR1cmUy
RCA9IG51bGw7CisgICAgICAgIHRoaXMubV90ZXh0dXJlQ3ViZSA9IG51bGw7CisgICAgICAgIHRo
aXMubV90ZXh0dXJlMkRBcnJheSA9IG51bGw7CisgICAgICAgIHRoaXMubV90ZXh0dXJlM0QgPSBu
dWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtXZWJHTFByb2dyYW19IHBy
b2dyYW1JRAorICAgICAqIEBwYXJhbSAge0FycmF5PG51bWJlcj59IGNvbnN0Q29vcmRzCisgICAg
ICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlNoYWRlclRleHR1cmVGdW5j
dGlvbkNhc2UucHJvdG90eXBlLnNldHVwVW5pZm9ybXMgPSBmdW5jdGlvbihwcm9ncmFtSUQsIGNv
bnN0Q29vcmRzKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaShnbC5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbUlELCAndV9zYW1wbGVyJyksIDApOworICAgICAgICBnbC51bmlmb3JtNGZ2KGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsICd1X3NjYWxlJyksIHRoaXMubV9sb29rdXBQYXJh
bXMuc2NhbGUpOworICAgICAgICBnbC51bmlmb3JtNGZ2KGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtSUQsICd1X2JpYXMnKSwgdGhpcy5tX2xvb2t1cFBhcmFtcy5iaWFzKTsKKyAgICB9Owor
CisKKyAgICAvKioKKyAgICAgKiBAc3RydWN0CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXh0dXJlU2l6ZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsb2QKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbG9kQmFzZQorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gZXhwZWN0ZWRTaXplCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRlc3RTaXplID0gZnVuY3Rpb24odGV4dHVyZVNpemUsIGxvZCwgbG9kQmFz
ZSwgZXhwZWN0ZWRTaXplKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dGhpcy50ZXh0dXJlU2l6ZSA9IHRleHR1cmVTaXplOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5sb2QgPSBsb2Q7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
LmxvZEJhc2UgPSBsb2RCYXNlOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHRoaXMuZXhwZWN0ZWRTaXplID0gZXhwZWN0ZWRTaXplOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
YworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzYW1wbGVyVHlwZQorICAgICAqIEBwYXJhbSB7ZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjfSB0ZXh0dXJlCisgICAgICog
QHBhcmFtIHtib29sZWFufSBpc1ZlcnRleENhc2UKKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNpemVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzYywg
c2FtcGxlclR5cGUsIHRleHR1cmUsIGlzVmVydGV4Q2FzZSkgeworICAgICAgICB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdGhpcy5tX3NhbXBsZXJUeXBlU3RyID0gc2FtcGxlclR5cGU7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjfSAqLyB0
aGlzLm1fdGV4dHVyZVNwZWMgPSB0ZXh0dXJlOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHRoaXMubV9pc1ZlcnRleENhc2UgPSBpc1ZlcnRleENhc2U7CisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX2hhczNEU2l6ZSA9IHRleHR1cmUudHlwZSA9PT0gZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNEIHx8IHRl
eHR1cmUudHlwZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBl
LlRFWFRVUkVUWVBFXzJEX0FSUkFZOworICAgICAgICAvKiogQHR5cGUgez9nbHVTaGFkZXJQcm9n
cmFtLlNoYWRlclByb2dyYW19ICovIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9pdGVyYXRpb25Db3VudGVyID0gMDsKKyAgICB9Owor
CisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTaXplQ2FzZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7Cisg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTaXplQ2FzZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNp
emVDYXNlOworCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTaXpl
Q2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZnJlZVNo
YWRlcigpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXh0dXJlU2l6ZUNhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjdXJyZW50SXRlcmF0aW9uID0gdGhpcy5tX2l0
ZXJhdGlvbkNvdW50ZXIrKzsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemU+fSAqLyB2YXIgdGVzdFNpemVzID0gWworICAgICAg
ICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMSwgMiwg
MV0sIDEsIDAsIFsxLCAxLCAxXSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRlc3RTaXplKFsxLCAyLCAxXSwgMCwgMCwgWzEsIDIsIDFdKSwKKworICAg
ICAgICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMSwg
MywgMl0sIDAsIDAsIFsxLCAzLCAyXSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxLCAzLCAyXSwgMSwgMCwgWzEsIDEsIDFdKSwKKwor
ICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShb
MTAwLCAzMSwgMThdLCAwLCAwLCBbMTAwLCAzMSwgMThdKSwKKyAgICAgICAgICAgIG5ldyBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEwMCwgMzEsIDE4XSwgMSwgMCwg
WzUwLCAxNSwgOV0pLAorICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXN0U2l6ZShbMTAwLCAzMSwgMThdLCAyLCAwLCBbMjUsIDcsIDRdKSwKKyAgICAgICAg
ICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEwMCwgMzEs
IDE4XSwgMywgMCwgWzEyLCAzLCAyXSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAsIDMxLCAxOF0sIDQsIDAsIFs2LCAxLCAxXSks
CisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXpl
KFsxMDAsIDMxLCAxOF0sIDUsIDAsIFszLCAxLCAxXSksCisgICAgICAgICAgICBuZXcgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAsIDMxLCAxOF0sIDYsIDAsIFsx
LCAxLCAxXSksCisKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGVzdFNpemUoWzEwMCwgMTI4LCAzMl0sIDAsIDAsIFsxMDAsIDEyOCwgMzJdKSwKKyAgICAg
ICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEwMCwg
MTI4LCAzMl0sIDEsIDAsIFs1MCwgNjQsIDE2XSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAsIDEyOCwgMzJdLCAyLCAwLCBbMjUs
IDMyLCA4XSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRlc3RTaXplKFsxMDAsIDEyOCwgMzJdLCAzLCAwLCBbMTIsIDE2LCA0XSksCisgICAgICAgICAg
ICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAsIDEyOCwg
MzJdLCA0LCAwLCBbNiwgOCwgMl0pLAorICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMTAwLCAxMjgsIDMyXSwgNSwgMCwgWzMsIDQsIDFdKSwK
KyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUo
WzEwMCwgMTI4LCAzMl0sIDYsIDAsIFsxLCAyLCAxXSksCisgICAgICAgICAgICBuZXcgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAsIDEyOCwgMzJdLCA3LCAwLCBb
MSwgMSwgMV0pLAorCisgICAgICAgICAgICAvLyBwb3cgMgorICAgICAgICAgICAgbmV3IGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMTI4LCA2NCwgMzJdLCAwLCAwLCBb
MTI4LCA2NCwgMzJdKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGVzdFNpemUoWzEyOCwgNjQsIDMyXSwgMSwgMCwgWzY0LCAzMiwgMTZdKSwKKyAgICAg
ICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEyOCwg
NjQsIDMyXSwgMiwgMCwgWzMyLCAxNiwgOF0pLAorICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMTI4LCA2NCwgMzJdLCAzLCAwLCBbMTYsIDgs
IDRdKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVz
dFNpemUoWzEyOCwgNjQsIDMyXSwgNCwgMCwgWzgsIDQsIDJdKSwKKyAgICAgICAgICAgIG5ldyBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEyOCwgNjQsIDMyXSwgNSwg
MCwgWzQsIDIsIDFdKSwKKyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGVzdFNpemUoWzEyOCwgNjQsIDMyXSwgNiwgMCwgWzIsIDEsIDFdKSwKKyAgICAgICAg
ICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzEyOCwgNjQs
IDMyXSwgNywgMCwgWzEsIDEsIDFdKSwKKworICAgICAgICAgICAgLy8gdyA9PT0gaAorICAgICAg
ICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbMSwgMSwg
MV0sIDAsIDAsIFsxLCAxLCAxXSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRlc3RTaXplKFs2NCwgNjQsIDY0XSwgMCwgMCwgWzY0LCA2NCwgNjRdKSwK
KyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUo
WzY0LCA2NCwgNjRdLCAxLCAwLCBbMzIsIDMyLCAzMl0pLAorICAgICAgICAgICAgbmV3IGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6ZShbNjQsIDY0LCA2NF0sIDIsIDAsIFsx
NiwgMTYsIDE2XSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRlc3RTaXplKFs2NCwgNjQsIDY0XSwgMywgMCwgWzgsIDgsIDhdKSwKKyAgICAgICAgICAg
IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGVzdFNpemUoWzY0LCA2NCwgNjRd
LCA0LCAwLCBbNCwgNCwgNF0pLAorCisgICAgICAgICAgICAvLyB3aXRoIGxvZCBiYXNlCisgICAg
ICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMDAs
IDMxLCAxOF0sIDMsIDEsIFs2LCAxLCAxXSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTaXplKFsxMjgsIDY0LCAzMl0sIDMsIDEsIFs4LCA0LCAy
XSksCisgICAgICAgICAgICBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RT
aXplKFs2NCwgNjQsIDY0XSwgMSwgMSwgWzE2LCAxNiwgMTZdKQorCisgICAgICAgIF07CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbGFzdEl0ZXJhdGlvbkluZGV4ID0gdGVzdFNp
emVzLmxlbmd0aCArIDE7CisKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPT09IDApIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRTaGFkZXIoKSA/IHRjdVRlc3RDYXNlLkl0ZXJh
dGVSZXN1bHQuQ09OVElOVUUgOiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3VycmVudEl0ZXJhdGlvbiA9PT0gbGFzdEl0ZXJhdGlv
bkluZGV4KSB7CisgICAgICAgICAgICB0aGlzLmZyZWVTaGFkZXIoKTsKKyAgICAgICAgICAgIHJl
dHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBpZiAoIXRoaXMudGVzdFRleHR1cmVTaXplKHRlc3RTaXplc1tj
dXJyZW50SXRlcmF0aW9uIC0gMV0pKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25z
KCdGYWlsOiBDYXNlICcgKyAoY3VycmVudEl0ZXJhdGlvbiAtIDEpICsgJyBHb3QgdW5leHBlY3Rl
ZCB0ZXh0dXJlIHNpemUnLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZE9wdGlvbnMoJ1Bhc3MnLCB0cnVlKTsKKworICAgICAgICAgICAgcmV0dXJu
IHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNpemVDYXNlLnByb3RvdHlwZS5pbml0U2hh
ZGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVy
dFNyYyA9IHRoaXMuZ2VuVmVydGV4U2hhZGVyKCk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgZnJhZ1NyYyA9IHRoaXMuZ2VuRnJhZ21lbnRTaGFkZXIoKTsKKworICAgICAgICBh
c3NlcnRNc2dPcHRpb25zKHRoaXMubV9wcm9ncmFtID09PSBudWxsLCAnUHJvZ3JhbSBzaG91bGQg
YmUgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhG
cmFnU291cmNlcyh2ZXJ0U3JjLCBmcmFnU3JjKSk7CisKKyAgICAgICAgaWYgKCF0aGlzLm1fcHJv
Z3JhbS5pc09rKCkpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsOiBTaGFk
ZXIgZmFpbGVkJywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXh0dXJlU2l6ZUNhc2UucHJvdG90eXBlLmZyZWVTaGFkZXIgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXN0U2l6
ZX0gdGVzdFNpemUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU2l6ZUNhc2UucHJvdG90eXBlLnRlc3RU
ZXh0dXJlU2l6ZSA9IGZ1bmN0aW9uKHRlc3RTaXplKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIHRyaWFuZ2xlID0gWyAvLyBjb3ZlcnMgZW50aXJlIHZpZXdwb3J0
CisgICAgICAgICAgICAtMSwgLTEsIDAsIDEsIC8vIHdhcyBhIDN4NCBtYXRyaXgKKyAgICAgICAg
ICAgIDQsIC0xLCAwLCAxLAorICAgICAgICAgICAgLTEsIDQsIDAsIDEKKyAgICAgICAgXTsKKwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBvc2l0aW9uTG9jID0gZ2wuZ2V0QXR0
cmliTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9wb3NpdGlvbicpOwor
ICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgc2FtcGxlckxv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksICd1
X3NhbXBsZXInKTsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8g
dmFyIHNpemVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJv
Z3JhbSgpLCAndV90ZXhTaXplJyk7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9j
YXRpb259ICovIHZhciBsb2RMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5tX3Byb2dy
YW0uZ2V0UHJvZ3JhbSgpLCAndV9sb2QnKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciB0ZXh0dXJlVGFyZ2V0ID0gdGhpcy5nZXRHTFRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNTcXVhcmUgPSB0ZXN0U2l6ZS50ZXh0dXJlU2l6
ZVswXSA9PT0gdGVzdFNpemUudGV4dHVyZVNpemVbMV07CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIGlzMkRMb2RWYWxpZCA9ICh0ZXN0U2l6ZS50ZXh0dXJlU2l6ZVswXSA+PiAo
dGVzdFNpemUubG9kICsgdGVzdFNpemUubG9kQmFzZSkpICE9PSAwIHx8ICh0ZXN0U2l6ZS50ZXh0
dXJlU2l6ZVsxXSA+PiAodGVzdFNpemUubG9kICsgdGVzdFNpemUubG9kQmFzZSkpICE9PSAwOwor
ICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBlcnJvclZhbHVlOworCisgICAgICAgIC8vIFNr
aXAgaW5jb21wYXRpYmxlIGNhc2VzCisgICAgICAgIGlmICh0aGlzLm1fdGV4dHVyZVNwZWMudHlw
ZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVU
WVBFX0NVQkVfTUFQICYmICFpc1NxdWFyZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAodGhpcy5tX3RleHR1cmVTcGVjLnR5cGUgPT09IGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRCAmJiAhaXMyRExvZFZhbGlkKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0aGlzLm1fdGV4dHVyZVNwZWMu
dHlwZSA9PT0gZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRV
UkVUWVBFXzJEX0FSUkFZICYmICFpczJETG9kVmFsaWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICAvLyBzZXR1cCByZW5kZXJpbmcKKyAgICAgICAgZ2wudXNlUHJvZ3JhbSh0
aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICBnbC51bmlmb3JtMWkoc2FtcGxl
ckxvYywgMCk7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMC41LCAwLjUsIDAuNSwgMS4wKTsKKyAg
ICAgICAgZ2wudmlld3BvcnQoMCwgMCwgMSwgMSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TEJ1ZmZlcn0gKi8gdmFyIHRyaWFuZ2xlR2xCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAg
ICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHRyaWFuZ2xlR2xCdWZmZXIpOwor
ICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSh0
cmlhbmdsZSksIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgICBnbC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvYyk7CisKKyAgICAgICAgLy8gc2V0dXAg
dGV4dHVyZQorICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heExldmVsID0gdGVz
dFNpemUubG9kICsgdGVzdFNpemUubG9kQmFzZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBsZXZlbHMgPSBtYXhMZXZlbCArIDE7CisgICAgICAgIC8qKiBAdHlwZSB7P1dlYkdM
VGV4dHVyZX0gKi8gdmFyIHRleElkID0gbnVsbDsKKworICAgICAgICAvLyBnZW4gdGV4dHVyZQor
ICAgICAgICB0ZXhJZCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUodGV4dHVyZVRhcmdldCwgdGV4SWQpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRleHR1
cmVUYXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIGds
LnRleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5O
RUFSRVNUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBnbC5URVhU
VVJFX0JBU0VfTEVWRUwsIHRlc3RTaXplLmxvZEJhc2UpOworICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKHRleHR1cmVUYXJnZXQsIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFLCBnbC5DT01QQVJFX1JF
Rl9UT19URVhUVVJFKTsKKworICAgICAgICAvLyBzZXQgdXAgdGV4dHVyZQorCisgICAgICAgIHN3
aXRjaCAodGhpcy5tX3RleHR1cmVTcGVjLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNEOgorICAg
ICAgICAgICAgICAgIC8vIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdUZXN0aW5nIGltYWdlIHNpemUg
JyArIHRlc3RTaXplLnRleHR1cmVTaXplWzBdICsgJ3gnICsgdGVzdFNpemUudGV4dHVyZVNpemVb
MV0gKyAneCcgKyB0ZXN0U2l6ZS50ZXh0dXJlU2l6ZVsyXSk7CisgICAgICAgICAgICAgICAgLy8g
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0xvZDogJyArIHRlc3RTaXplLmxvZCArICcsIGJhc2UgbGV2
ZWw6ICcgKyB0ZXN0U2l6ZS5sb2RCYXNlKTsKKyAgICAgICAgICAgICAgICAvLyBidWZmZXJlZExv
Z1RvQ29uc29sZSgnRXhwZWN0aW5nOiAnICsgdGVzdFNpemUuZXhwZWN0ZWRTaXplWzBdICsgJ3gn
ICsgdGVzdFNpemUuZXhwZWN0ZWRTaXplWzFdICsgJ3gnICsgdGVzdFNpemUuZXhwZWN0ZWRTaXpl
WzJdKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaXYoc2l6ZUxvYywgdGVzdFNpemUu
ZXhwZWN0ZWRTaXplKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMWl2KGxvZExvYywgW3Rl
c3RTaXplLmxvZF0pOworCisgICAgICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEKHRleHR1cmVU
YXJnZXQsIGxldmVscywgdGhpcy5tX3RleHR1cmVTcGVjLmZvcm1hdCwgdGVzdFNpemUudGV4dHVy
ZVNpemVbMF0sIHRlc3RTaXplLnRleHR1cmVTaXplWzFdLCB0ZXN0U2l6ZS50ZXh0dXJlU2l6ZVsy
XSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJEOgorICAgICAg
ICAgICAgY2FzZSBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVY
VFVSRVRZUEVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgLy8gYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ1Rlc3RpbmcgaW1hZ2Ugc2l6ZSAnICsgdGVzdFNpemUudGV4dHVyZVNpemVbMF0gKyAneCcg
KyB0ZXN0U2l6ZS50ZXh0dXJlU2l6ZVsxXSk7CisgICAgICAgICAgICAgICAgLy8gYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ0xvZDogJyArIHRlc3RTaXplLmxvZCArICcsIGJhc2UgbGV2ZWw6ICcgKyB0
ZXN0U2l6ZS5sb2RCYXNlKTsKKyAgICAgICAgICAgICAgICAvLyBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnRXhwZWN0aW5nOiAnICsgdGVzdFNpemUuZXhwZWN0ZWRTaXplWzBdICsgJ3gnICsgdGVzdFNp
emUuZXhwZWN0ZWRTaXplWzFdKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0yaXYoc2l6
ZUxvYywgdGVzdFNpemUuZXhwZWN0ZWRTaXplLnNsaWNlKDAsMikpOworICAgICAgICAgICAgICAg
IGdsLnVuaWZvcm0xaXYobG9kTG9jLCBbdGVzdFNpemUubG9kXSk7CisKKyAgICAgICAgICAgICAg
ICBnbC50ZXhTdG9yYWdlMkQodGV4dHVyZVRhcmdldCwgbGV2ZWxzLCB0aGlzLm1fdGV4dHVyZVNw
ZWMuZm9ybWF0LCB0ZXN0U2l6ZS50ZXh0dXJlU2l6ZVswXSwgdGVzdFNpemUudGV4dHVyZVNpemVb
MV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWToK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBleHBlY3Rl
ZFNpemUgPSBbdGVzdFNpemUuZXhwZWN0ZWRTaXplWzBdLCB0ZXN0U2l6ZS5leHBlY3RlZFNpemVb
MV0sIHRlc3RTaXplLnRleHR1cmVTaXplWzJdXTsKKworICAgICAgICAgICAgICAgIC8vIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdUZXN0aW5nIGltYWdlIHNpemUgJyArIHRlc3RTaXplLnRleHR1cmVT
aXplWzBdICsgJ3gnICsgdGVzdFNpemUudGV4dHVyZVNpemVbMV0gKyAnIHdpdGggJyArIHRlc3RT
aXplLnRleHR1cmVTaXplWzJdICsgJyBsYXllcihzKScpOworICAgICAgICAgICAgICAgIC8vIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdMb2Q6ICcgKyB0ZXN0U2l6ZS5sb2QgKyAnLCBiYXNlIGxldmVs
OiAnICsgdGVzdFNpemUubG9kQmFzZSk7CisgICAgICAgICAgICAgICAgLy8gYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJ0V4cGVjdGluZzogJyArIHRlc3RTaXplLmV4cGVjdGVkU2l6ZVswXSArICd4JyAr
IHRlc3RTaXplLmV4cGVjdGVkU2l6ZVsxXSArICcgYW5kICcgKyB0ZXN0U2l6ZS50ZXh0dXJlU2l6
ZVsyXSArICcgbGF5ZXIocyknKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0zaXYoc2l6
ZUxvYywgZXhwZWN0ZWRTaXplKTsKKyAgICAgICAgICAgICAgICBnbC51bmlmb3JtMWl2KGxvZExv
YywgW3Rlc3RTaXplLmxvZF0pOworCisgICAgICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEKHRl
eHR1cmVUYXJnZXQsIGxldmVscywgdGhpcy5tX3RleHR1cmVTcGVjLmZvcm1hdCwgdGVzdFNpemUu
dGV4dHVyZVNpemVbMF0sIHRlc3RTaXplLnRleHR1cmVTaXplWzFdLCB0ZXN0U2l6ZS50ZXh0dXJl
U2l6ZVsyXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeXBlIG5vdCBzdXBwb3J0ZWQnKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIHRlc3QKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBjb2xvclRvbGVyYW5jZSA9IDAuMTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJm
YWNlLlN1cmZhY2V9ICovIHZhciBzYW1wbGUgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKDEsIDEp
OworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBvdXRwdXRDb2xvcjsK
KworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworICAgICAgICBnbC5maW5pc2goKTsKKworICAg
ICAgICBzYW1wbGUucmVhZFZpZXdwb3J0KGdsLCBbMCwgMCwgMSwgMV0pOworCisgICAgICAgIG91
dHB1dENvbG9yID0gc2FtcGxlLmdldEFjY2VzcygpLmdldFBpeGVsKDAsIDApOworCisgICAgICAg
IGlmIChvdXRwdXRDb2xvclswXSA+PSAxLjAgLSBjb2xvclRvbGVyYW5jZSAmJgorICAgICAgICAg
ICAgb3V0cHV0Q29sb3JbMV0gPj0gMS4wIC0gY29sb3JUb2xlcmFuY2UgJiYKKyAgICAgICAgICAg
IG91dHB1dENvbG9yWzJdID49IDEuMCAtIGNvbG9yVG9sZXJhbmNlKQorICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ1Bhc3NlZCcpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IC8vIGZhaWx1cmUKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdGYWlsZWQnKTsK
KyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZy
ZWUKKyAgICAgICAgZ2wuYmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbnVsbCk7CisgICAgICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4SWQpOworCisgICAgICAgIGdsLnVzZVByb2dyYW0obnVsbCk7
CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4dHVyZVNpemVDYXNlLnByb3RvdHlwZS5nZW5WZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbigp
ICB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydCA9ICcnOworICAgICAg
ICB2ZXJ0ICs9ICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdpbiBoaWdo
cCB2ZWM0IGFfcG9zaXRpb247XG4nOworCisgICAgICAgIGlmICh0aGlzLm1faXNWZXJ0ZXhDYXNl
KSB7CisgICAgICAgICAgICB2ZXJ0ICs9ICdvdXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nICsK
KyAgICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgJyArIHRoaXMubV9zYW1wbGVyVHlw
ZVN0ciArICcgdV9zYW1wbGVyO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd1bmlmb3JtIGhp
Z2hwIGl2ZWMnICsgKHRoaXMubV9oYXMzRFNpemUgPyAzIDogMikgKyAnIHVfdGV4U2l6ZTtcbicg
KworICAgICAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdocCBpbnQgdV9sb2Q7XG4nOworICAg
ICAgICB9CisKKyAgICAgICAgdmVydCArPSAndm9pZCBtYWluKClcbntcbic7CisKKyAgICAgICAg
aWYgKHRoaXMubV9pc1ZlcnRleENhc2UpCisgICAgICAgICAgICB2ZXJ0ICs9ICcgICAgdl9jb2xv
ciA9ICh0ZXh0dXJlU2l6ZSh1X3NhbXBsZXIsIHVfbG9kKSA9PSB1X3RleFNpemUgPyB2ZWM0KDEu
MCwgMS4wLCAxLjAsIDEuMCkgOiB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCkpO1xuJzsKKworICAg
ICAgICB2ZXJ0ICs9ICcgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAg
ICAgICAgICAgJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHZlcnQ7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNpemVDYXNlLnByb3RvdHlwZS5nZW5GcmFnbWVudFNoYWRl
ciA9IGZ1bmN0aW9uKCkgIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFn
ID0gJyc7CisKKyAgICAgICAgZnJhZyArPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAg
ICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xu
JzsKKworICAgICAgICBpZiAodGhpcy5tX2lzVmVydGV4Q2FzZSkKKyAgICAgICAgICAgICAgICBm
cmFnICs9ICdpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbic7CisKKyAgICAgICAgaWYgKCF0aGlz
Lm1faXNWZXJ0ZXhDYXNlKSB7CisgICAgICAgICAgICBmcmFnICs9ICd1bmlmb3JtIGhpZ2hwICcg
KyB0aGlzLm1fc2FtcGxlclR5cGVTdHIgKyAnIHVfc2FtcGxlcjtcbicgKworICAgICAgICAgICAg
ICAgICAgICAndW5pZm9ybSBoaWdocCBpdmVjJyArICh0aGlzLm1faGFzM0RTaXplID8gMyA6IDIp
ICsgJyB1X3RleFNpemU7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAg
aW50IHVfbG9kO1xuJzsKKyAgICAgICAgfQorCisgICAgICAgIGZyYWcgKz0gJ3ZvaWQgbWFpbigp
XG57XG4nOworCisgICAgICAgIGlmICghdGhpcy5tX2lzVmVydGV4Q2FzZSkKKyAgICAgICAgICAg
IGZyYWcgKz0gJyAgICBvX2NvbG9yID0gKHRleHR1cmVTaXplKHVfc2FtcGxlciwgdV9sb2QpID09
IHVfdGV4U2l6ZSA/IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKSA6IHZlYzQoMC4wLCAwLjAsIDAu
MCwgMS4wKSk7XG4nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFnICs9ICcgICAgb19j
b2xvciA9IHZfY29sb3I7XG4nOworCisgICAgICAgIGZyYWcgKz0gJ31cbic7CisKKyAgICAgICAg
cmV0dXJuIGZyYWc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAgKi8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNpemVD
YXNlLnByb3RvdHlwZS5nZXRHTFRleHR1cmVUYXJnZXQgPSBmdW5jdGlvbigpICB7CisgICAgICAg
IHN3aXRjaCAodGhpcy5tX3RleHR1cmVTcGVjLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJEOgor
ICAgICAgICAgICAgICAgIHJldHVybiBnbC5URVhUVVJFXzJEOworICAgICAgICAgICAgY2FzZSBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfQ1VC
RV9NQVA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsLlRFWFRVUkVfQ1VCRV9NQVA7CisgICAg
ICAgICAgICBjYXNlIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5U
RVhUVVJFVFlQRV8yRF9BUlJBWToKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2wuVEVYVFVSRV8y
RF9BUlJBWTsKKyAgICAgICAgICAgIGNhc2UgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNEOgorICAgICAgICAgICAgICAgIHJldHVybiBnbC5U
RVhUVVJFXzNEOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1RleHR1cmUgVHlwZSBub3Qgc3VwcG9ydGVkLicpOworICAgICAgICB9CisgICAg
fTsKKworICAgIC8qKiBAdHlwZWRlZiB7QXJyYXk8c3RyaW5nLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4dHVyZUxvb2t1cFNwZWMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXh0dXJlU3BlYywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkV2YWxGdW5j
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzPn0gKi8gZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRlc3RTcGVjOworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbn0gZnVuYworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWlu
Q29vcmQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG1heENvb3JkCisgICAgICogQHBh
cmFtIHtib29sZWFufSB1c2VCaWFzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkxvZEJpYXMK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWF4TG9kQmlhcworICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gdXNlT2Zmc2V0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBvZmZzZXQKKyAgICAg
KiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gdGV4
U3BlYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEV2
YWxGdW5jfSBldmFsRnVuYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFnc30gZmxhZ3MKKyAgICAgKiBAcmV0dXJuIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVjfQorICAgICAqLworICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYyA9IGZ1bmN0aW9uKG5hbWUsIGZ1bmMsIG1p
bkNvb3JkLCBtYXhDb29yZCwgdXNlQmlhcywgbWluTG9kQmlhcywgbWF4TG9kQmlhcywgdXNlT2Zm
c2V0LCBvZmZzZXQsIHRleFNwZWMsIGV2YWxGdW5jLCBmbGFncykgeworICAgICAgICByZXR1cm4g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jQ2FzZVNwZWMobmFtZSwK
KyAgICAgICAgICAgIG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZUxv
b2t1cFNwZWMoZnVuYywgbWluQ29vcmQsIG1heENvb3JkLCB1c2VCaWFzLCBtaW5Mb2RCaWFzLCBt
YXhMb2RCaWFzLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sIHVzZU9mZnNldCwgb2Zmc2V0KSwKKyAgICAgICAgICAgIHRl
eFNwZWMsCisgICAgICAgICAgICBldmFsRnVuYywKKyAgICAgICAgICAgIGZsYWdzKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0g
e2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbn0gZnVuYworICAgICAq
IEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWluQ29vcmQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IG1heENvb3JkCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtaW5keAorICAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWF4ZHgKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IG1pbmR5CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhkeQorICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gdXNlT2Zmc2V0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+
fSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXh0dXJlU3BlY30gdGV4U3BlYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEV2YWxGdW5jfSBldmFsRnVuYworICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFnc30gZmxhZ3MKKyAgICAgKiBAcmV0dXJuIHtl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVjfQorICAgICAqLwor
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMgPSBmdW5j
dGlvbihuYW1lLCBmdW5jLCBtaW5Db29yZCwgbWF4Q29vcmQsIG1pbmR4LCBtYXhkeCwgbWluZHks
IG1heGR5LCB1c2VPZmZzZXQsIG9mZnNldCwgdGV4U3BlYywgZXZhbEZ1bmMsIGZsYWdzKSB7Cisg
ICAgICAgIHJldHVybiBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmND
YXNlU3BlYyhuYW1lLAorICAgICAgICAgICAgbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXh0dXJlTG9va3VwU3BlYyhmdW5jLCBtaW5Db29yZCwgbWF4Q29vcmQsIGZhbHNlLCAw
LjAsIDAuMCwgbWluZHgsIG1heGR4LCBtaW5keSwgbWF4ZHksIHVzZU9mZnNldCwgb2Zmc2V0KSwK
KyAgICAgICAgICAgIHRleFNwZWMsCisgICAgICAgICAgICBldmFsRnVuYywKKyAgICAgICAgICAg
IGZsYWdzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0KKyAgICAg
Ki8KKyAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzID0geworICAg
ICAgICBWRVJURVg6IDEsCisgICAgICAgIEZSQUdNRU5UOiAyLAorICAgICAgICBCT1RIOiAzCisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7ZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleHR1cmVMb29rdXBTcGVjfSBsb29rdXBTcGVjCisgICAgICogQHBh
cmFtIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9IHRleFNwZWMK
KyAgICAgKiBAcGFyYW0ge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhFdmFsRnVu
Y30gZXZhbEZ1bmMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ3MKKyAgICAgKi8KKyAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVjID0gZnVuY3Rpb24o
bmFtZSwgbG9va3VwU3BlYywgdGV4U3BlYywgZXZhbEZ1bmMsIGZsYWdzKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAvKiogQHR5cGUg
e2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlTG9va3VwU3BlY30gKi8gdGhp
cy5sb29rdXBTcGVjID0gbG9va3VwU3BlYzsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHRoaXMudGV4U3BlYyA9IHRleFNw
ZWM7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eEV2YWxGdW5jfSAqLyB0aGlzLmV2YWxGdW5jID0gZXZhbEZ1bmM7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLmZsYWdzID0gZmxhZ3M7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSAge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSBwYXJlbnQKKyAgICAgKiBAcGFyYW0g
IHtzdHJpbmd9IGdyb3VwTmFtZQorICAgICAqIEBwYXJhbSAge3N0cmluZ30gZ3JvdXBEZXNjCisg
ICAgICogQHBhcmFtICB7QXJyYXk8ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1
bmNDYXNlU3BlYz59IGNhc2VzCisgICAgICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmNyZWF0ZUNhc2VHcm91cCA9IGZ1bmN0aW9uKHBhcmVudCwgZ3JvdXBOYW1lLCBncm91
cERlc2MsIGNhc2VzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9
ICovIHZhciBncm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoZ3JvdXBOYW1lLCBncm91cERlc2Mp
OworICAgICAgICBwYXJlbnQuYWRkQ2hpbGQoZ3JvdXApOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IGNhc2VzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB2YXIgbmFtZSA9IGNhc2VzW25keF0ubmFtZTsKKyAgICAgICAgICAgIGlm
IChjYXNlc1tuZHhdLmZsYWdzICYgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5WRVJURVgpCisgICAgICAgICAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFkZXJUZXh0dXJlRnVuY3Rpb25DYXNlKG5hbWUgKyAn
X3ZlcnRleCcsICcnLCBjYXNlc1tuZHhdLmxvb2t1cFNwZWMsIGNhc2VzW25keF0udGV4U3BlYywg
Y2FzZXNbbmR4XS5ldmFsRnVuYywgdHJ1ZSkpOworICAgICAgICAgICAgaWYgKGNhc2VzW25keF0u
ZmxhZ3MgJiBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5U
KQorICAgICAgICAgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuU2hhZGVyVGV4dHVyZUZ1bmN0aW9uQ2FzZShuYW1lICsgJ19mcmFnbWVudCcs
ICcnLCBjYXNlc1tuZHhdLmxvb2t1cFNwZWMsIGNhc2VzW25keF0udGV4U3BlYywgY2FzZXNbbmR4
XS5ldmFsRnVuYywgZmFsc2UpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAg
ICovCisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNh
bGwodGhpcywgJ3RleHR1cmVfZnVuY3Rpb25zJywgJ1RleHR1cmUgQWNjZXNzIEZ1bmN0aW9uIFRl
c3RzJyk7CisgICAgfTsKKworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RD
YXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0czsK
KworICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5TaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBTYW1wbGVy
cworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuU2FtcGxlcn0gKi8gdmFyIHNhbXBsZXJO
ZWFyZXN0Tm9NaXBtYXAgPSBuZXcgdGN1VGV4dHVyZS5TYW1wbGVyKHRjdVRleHR1cmUuV3JhcE1v
ZGUuUkVQRUFUX0dMLCB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwgdGN1VGV4dHVyZS5X
cmFwTW9kZS5SRVBFQVRfR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsIHRj
dVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCAvKiBMT0QgdGhyZXNob2xkICov
LCB0cnVlIC8qIG5vcm1hbGl6ZWQgY29vcmRzICovLCB0Y3VUZXh0dXJlLkNvbXBhcmVNb2RlLkNP
TVBBUkVNT0RFX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCAvKiBjbXAgY2hhbm5lbCAqLywgWzAuMCwgMC4wLCAwLjAs
IDAuMF0gLyogYm9yZGVyIGNvbG9yICovLCB0cnVlIC8qIHNlYW1sZXNzIGN1YmUgbWFwICovKTsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9ICovIHZhciBzYW1wbGVyTGlu
ZWFyTm9NaXBtYXAgPSBuZXcgdGN1VGV4dHVyZS5TYW1wbGVyKHRjdVRleHR1cmUuV3JhcE1vZGUu
UkVQRUFUX0dMLCB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwgdGN1VGV4dHVyZS5XcmFw
TW9kZS5SRVBFQVRfR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUiwgdGN1VGV4
dHVyZS5GaWx0ZXJNb2RlLkxJTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAgLyogTE9EIHRocmVzaG9sZCAqLywgdHJ1
ZSAvKiBub3JtYWxpemVkIGNvb3JkcyAqLywgdGN1VGV4dHVyZS5Db21wYXJlTW9kZS5DT01QQVJF
TU9ERV9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAgLyogY21wIGNoYW5uZWwgKi8sIFswLjAsIDAuMCwgMC4wLCAwLjBd
IC8qIGJvcmRlciBjb2xvciAqLywgdHJ1ZSAvKiBzZWFtbGVzcyBjdWJlIG1hcCAqLyk7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAqLyB2YXIgc2FtcGxlck5lYXJlc3RN
aXBtYXAgPSBuZXcgdGN1VGV4dHVyZS5TYW1wbGVyKHRjdVRleHR1cmUuV3JhcE1vZGUuUkVQRUFU
X0dMLCB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwgdGN1VGV4dHVyZS5XcmFwTW9kZS5S
RVBFQVRfR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX05FQVJF
U1QsIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCAvKiBMT0QgdGhyZXNo
b2xkICovLCB0cnVlIC8qIG5vcm1hbGl6ZWQgY29vcmRzICovLCB0Y3VUZXh0dXJlLkNvbXBhcmVN
b2RlLkNPTVBBUkVNT0RFX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBjbXAgY2hhbm5lbCAqLywgWzAuMCwgMC4w
LCAwLjAsIDAuMF0gLyogYm9yZGVyIGNvbG9yICovLCB0cnVlIC8qIHNlYW1sZXNzIGN1YmUgbWFw
ICovKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9ICovIHZhciBzYW1w
bGVyTGluZWFyTWlwbWFwID0gbmV3IHRjdVRleHR1cmUuU2FtcGxlcih0Y3VUZXh0dXJlLldyYXBN
b2RlLlJFUEVBVF9HTCwgdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfR0wsIHRjdVRleHR1cmUu
V3JhcE1vZGUuUkVQRUFUX0dMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVJfTUlQ
TUFQX05FQVJFU1QsIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5MSU5FQVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wIC8qIExP
RCB0aHJlc2hvbGQgKi8sIHRydWUgLyogbm9ybWFsaXplZCBjb29yZHMgKi8sIHRjdVRleHR1cmUu
Q29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGNtcCBjaGFubmVsICovLCBb
MC4wLCAwLjAsIDAuMCwgMC4wXSAvKiBib3JkZXIgY29sb3IgKi8sIHRydWUgLyogc2VhbWxlc3Mg
Y3ViZSBtYXAgKi8pOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAq
LyB2YXIgc2FtcGxlclNoYWRvd05vTWlwbWFwID0gbmV3IHRjdVRleHR1cmUuU2FtcGxlcih0Y3VU
ZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwgdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfR0ws
IHRjdVRleHR1cmUuV3JhcE1vZGUuUkVQRUFUX0dMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmUuRmlsdGVyTW9k
ZS5ORUFSRVNULCB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVBUkVTVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAgLyogTE9E
IHRocmVzaG9sZCAqLywgdHJ1ZSAvKiBub3JtYWxpemVkIGNvb3JkcyAqLywgdGN1VGV4dHVyZS5D
b21wYXJlTW9kZS5DT01QQVJFTU9ERV9MRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogY21wIGNoYW5uZWwgKi8sIFsw
LjAsIDAuMCwgMC4wLCAwLjBdIC8qIGJvcmRlciBjb2xvciAqLywgdHJ1ZSAvKiBzZWFtbGVzcyBj
dWJlIG1hcCAqLyk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5TYW1wbGVyfSAqLyB2
YXIgc2FtcGxlclNoYWRvd01pcG1hcCA9IG5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIodGN1VGV4dHVy
ZS5XcmFwTW9kZS5SRVBFQVRfR0wsIHRjdVRleHR1cmUuV3JhcE1vZGUuUkVQRUFUX0dMLCB0Y3VU
ZXh0dXJlLldyYXBNb2RlLlJFUEVBVF9HTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkZpbHRlck1vZGUuTkVB
UkVTVF9NSVBNQVBfTkVBUkVTVCwgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4wIC8qIExPRCB0aHJlc2hvbGQgKi8sIHRydWUgLyogbm9ybWFsaXplZCBjb29yZHMgKi8sIHRj
dVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTEVTUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGNtcCBjaGFu
bmVsICovLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSAvKiBib3JkZXIgY29sb3IgKi8sIHRydWUgLyog
c2VhbWxlc3MgY3ViZSBtYXAgKi8pOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5T
YW1wbGVyfSAqLyB2YXIgc2FtcGxlclRleGVsRmV0Y2ggPSBuZXcgdGN1VGV4dHVyZS5TYW1wbGVy
KHRjdVRleHR1cmUuV3JhcE1vZGUuUkVQRUFUX0dMLCB0Y3VUZXh0dXJlLldyYXBNb2RlLlJFUEVB
VF9HTCwgdGN1VGV4dHVyZS5XcmFwTW9kZS5SRVBFQVRfR0wsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5GaWx0
ZXJNb2RlLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFS
RVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMCAvKiBMT0QgdGhyZXNob2xkICovLCBmYWxzZSAvKiBub24tbm9ybWFsaXpl
ZCBjb29yZHMgKi8sIHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwIC8qIGNtcCBjaGFubmVsICovLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSAvKiBib3JkZXIgY29s
b3IgKi8sIHRydWUgLyogc2VhbWxlc3MgY3ViZSBtYXAgKi8pOworCisgICAgICAgIC8vIERlZmF1
bHQgdGV4dHVyZXMuCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleHR1cmVTcGVjfSAqLyB2YXIgdGV4MkRGaXhlZCA9IG5ldyBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJELCBnbC5SR0JBOCwgMjU2LCAyNTYsIDEsIDEs
IHNhbXBsZXJMaW5lYXJOb01pcG1hcCk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjfSAqLyB2YXIgdGV4MkRGbG9hdCA9IG5ldyBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJELCBnbC5SR0JBMTZGLCAy
NTYsIDI1NiwgMSwgMSwgc2FtcGxlckxpbmVhck5vTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgy
REludCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJELCBn
bC5SR0JBOEksIDI1NiwgMjU2LCAxLCAxLCBzYW1wbGVyTmVhcmVzdE5vTWlwbWFwKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9
ICovIHZhciB0ZXgyRFVpbnQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhU
VVJFVFlQRV8yRCwgZ2wuUkdCQThVSSwgMjU2LCAyNTYsIDEsIDEsIHNhbXBsZXJOZWFyZXN0Tm9N
aXBtYXApOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJETWlwbWFwRml4ZWQgPSBuZXcgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRCwgZ2wuUkdCQTgsIDI1NiwgMjU2LCAxLCA5
LCBzYW1wbGVyTGluZWFyTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyRE1pcG1hcEZsb2F0ID0g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQsIGdsLlJHQkEx
NkYsIDI1NiwgMjU2LCAxLCA5LCBzYW1wbGVyTGluZWFyTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0
ZXgyRE1pcG1hcEludCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVy
ZVNwZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVU
WVBFXzJELCBnbC5SR0JBOEksIDI1NiwgMjU2LCAxLCA5LCBzYW1wbGVyTmVhcmVzdE1pcG1hcCk7
CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1
cmVTcGVjfSAqLyB2YXIgdGV4MkRNaXBtYXBVaW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQsIGdsLlJHQkE4VUksIDI1NiwgMjU2LCAxLCA5LCBzYW1w
bGVyTmVhcmVzdE1pcG1hcCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyRFNoYWRvdyA9IG5ldyBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJELCBnbC5ERVBUSF9DT01QT05F
TlQxNiwgMjU2LCAyNTYsIDEsIDksIHNhbXBsZXJTaGFkb3dOb01pcG1hcCk7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjfSAqLyB2
YXIgdGV4MkRNaXBtYXBTaGFkb3cgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5U
RVhUVVJFVFlQRV8yRCwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIDI1NiwgMjU2LCAxLCA5LCBzYW1w
bGVyU2hhZG93TWlwbWFwKTsKKworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJEVGV4ZWxGZXRjaEZpeGVkID0g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQsIGdsLlJHQkE4
LCAyNTYsIDI1NiwgMSwgOSwgc2FtcGxlclRleGVsRmV0Y2gpOworICAgICAgICAvKiogQHR5cGUg
e2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJE
VGV4ZWxGZXRjaEZsb2F0ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVS
RVRZUEVfMkQsIGdsLlJHQkExNkYsIDI1NiwgMjU2LCAxLCA5LCBzYW1wbGVyVGV4ZWxGZXRjaCk7
CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1
cmVTcGVjfSAqLyB2YXIgdGV4MkRUZXhlbEZldGNoSW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQsIGdsLlJHQkE4SSwgMjU2LCAyNTYsIDEsIDksIHNh
bXBsZXJUZXhlbEZldGNoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyRFRleGVsRmV0Y2hVaW50ID0gbmV3
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQsIGdsLlJHQkE4VUks
IDI1NiwgMjU2LCAxLCA5LCBzYW1wbGVyVGV4ZWxGZXRjaCk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXhD
dWJlRml4ZWQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVj
KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9D
VUJFX01BUCwgZ2wuUkdCQTgsIDI1NiwgMjU2LCAxLCAxLCBzYW1wbGVyTGluZWFyTm9NaXBtYXAp
OworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlY30gKi8gdmFyIHRleEN1YmVGbG9hdCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1
cmVUeXBlLlRFWFRVUkVUWVBFX0NVQkVfTUFQLCBnbC5SR0JBMTZGLCAyNTYsIDI1NiwgMSwgMSwg
c2FtcGxlckxpbmVhck5vTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXhDdWJlSW50ID0gbmV3IGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfQ1VCRV9NQVAsIGdsLlJHQkE4
SSwgMjU2LCAyNTYsIDEsIDEsIHNhbXBsZXJOZWFyZXN0Tm9NaXBtYXApOworICAgICAgICAvKiog
QHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFy
IHRleEN1YmVVaW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
U3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZ
UEVfQ1VCRV9NQVAsIGdsLlJHQkE4VUksIDI1NiwgMjU2LCAxLCAxLCBzYW1wbGVyTmVhcmVzdE5v
TWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXhDdWJlTWlwbWFwRml4ZWQgPSBuZXcgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFX01BUCwgZ2wuUkdCQTgsIDI1Niwg
MjU2LCAxLCA5LCBzYW1wbGVyTGluZWFyTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXhDdWJlTWlw
bWFwRmxvYXQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVj
KGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9D
VUJFX01BUCwgZ2wuUkdCQTE2RiwgMTI4LCAxMjgsIDEsIDgsIHNhbXBsZXJMaW5lYXJNaXBtYXAp
OworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlY30gKi8gdmFyIHRleEN1YmVNaXBtYXBJbnQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFX01BUCwgZ2wuUkdCQThJLCAyNTYsIDI1NiwgMSwg
OSwgc2FtcGxlck5lYXJlc3RNaXBtYXApOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleEN1YmVNaXBtYXBVaW50
ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfQ1VCRV9NQVAs
IGdsLlJHQkE4VUksIDI1NiwgMjU2LCAxLCA5LCBzYW1wbGVyTmVhcmVzdE1pcG1hcCk7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNw
ZWN9ICovIHZhciB0ZXhDdWJlU2hhZG93ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5
cGUuVEVYVFVSRVRZUEVfQ1VCRV9NQVAsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyNTYsIDI1Niwg
MSwgMSwgc2FtcGxlclNoYWRvd05vTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXhDdWJlTWlwbWFw
U2hhZG93ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfQ1VC
RV9NQVAsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyNTYsIDI1NiwgMSwgOSwgc2FtcGxlclNoYWRv
d01pcG1hcCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5Rml4ZWQgPSBuZXcgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSwgZ2wuUkdCQTgsIDEyOCwg
MTI4LCA0LCAxLCBzYW1wbGVyTGluZWFyTm9NaXBtYXApOworICAgICAgICAvKiogQHR5cGUge2Vz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJEQXJy
YXlGbG9hdCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMo
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJE
X0FSUkFZLCBnbC5SR0JBMTZGLCAxMjgsIDEyOCwgNCwgMSwgc2FtcGxlckxpbmVhck5vTWlwbWFw
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5SW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGdsLlJHQkE4SSwgMTI4LCAxMjgsIDQsIDEs
IHNhbXBsZXJOZWFyZXN0Tm9NaXBtYXApOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJEQXJyYXlVaW50ID0g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGds
LlJHQkE4VUksIDEyOCwgMTI4LCA0LCAxLCBzYW1wbGVyTmVhcmVzdE5vTWlwbWFwKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9
ICovIHZhciB0ZXgyREFycmF5TWlwbWFwRml4ZWQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSwgZ2wuUkdCQTgsIDEyOCwgMTI4LCA0LCA4LCBz
YW1wbGVyTGluZWFyTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5TWlwbWFwRmxvYXQg
PSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSwg
Z2wuUkdCQTE2RiwgMTI4LCAxMjgsIDQsIDgsIHNhbXBsZXJMaW5lYXJNaXBtYXApOworICAgICAg
ICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30g
Ki8gdmFyIHRleDJEQXJyYXlNaXBtYXBJbnQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
VHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSwgZ2wuUkdCQThJLCAxMjgsIDEyOCwgNCwgOCwgc2Ft
cGxlck5lYXJlc3RNaXBtYXApOworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDJEQXJyYXlNaXBtYXBVaW50ID0g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGds
LlJHQkE4VUksIDEyOCwgMTI4LCA0LCA4LCBzYW1wbGVyTmVhcmVzdE1pcG1hcCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9
ICovIHZhciB0ZXgyREFycmF5U2hhZG93ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5
cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAxMjgsIDEyOCwg
NCwgMSwgc2FtcGxlclNoYWRvd05vTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5TWlw
bWFwU2hhZG93ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3Bl
YyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVf
MkRfQVJSQVksIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAxMjgsIDEyOCwgNCwgOCwgc2FtcGxlclNo
YWRvd01pcG1hcCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5VGV4ZWxGZXRjaEZpeGVkID0g
bmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGds
LlJHQkE4LCAxMjgsIDEyOCwgNCwgOCwgc2FtcGxlclRleGVsRmV0Y2gpOworICAgICAgICAvKiog
QHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFy
IHRleDJEQXJyYXlUZXhlbEZldGNoRmxvYXQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
VHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSwgZ2wuUkdCQTE2RiwgMTI4LCAxMjgsIDQsIDgsIHNh
bXBsZXJUZXhlbEZldGNoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgyREFycmF5VGV4ZWxGZXRjaEludCA9
IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJEX0FSUkFZLCBn
bC5SR0JBOEksIDEyOCwgMTI4LCA0LCA4LCBzYW1wbGVyVGV4ZWxGZXRjaCk7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjfSAqLyB2
YXIgdGV4MkRBcnJheVRleGVsRmV0Y2hVaW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVy
ZVR5cGUuVEVYVFVSRVRZUEVfMkRfQVJSQVksIGdsLlJHQkE4VUksIDEyOCwgMTI4LCA0LCA4LCBz
YW1wbGVyVGV4ZWxGZXRjaCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgzREZpeGVkID0gbmV3IGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfM0QsIGdsLlJHQkE4LCA2NCwgMzIs
IDMyLCAxLCBzYW1wbGVyTGluZWFyTm9NaXBtYXApOworICAgICAgICAvKiogQHR5cGUge2VzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDNERmxvYXQg
PSBuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8zRCwgZ2wuUkdC
QTE2RiwgNjQsIDMyLCAzMiwgMSwgc2FtcGxlckxpbmVhck5vTWlwbWFwKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZh
ciB0ZXgzREludCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNw
ZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBF
XzNELCBnbC5SR0JBOEksIDY0LCAzMiwgMzIsIDEsIHNhbXBsZXJOZWFyZXN0Tm9NaXBtYXApOwor
ICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
U3BlY30gKi8gdmFyIHRleDNEVWludCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBl
LlRFWFRVUkVUWVBFXzNELCBnbC5SR0JBOFVJLCA2NCwgMzIsIDMyLCAxLCBzYW1wbGVyTmVhcmVz
dE5vTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgzRE1pcG1hcEZpeGVkID0gbmV3IGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfM0QsIGdsLlJHQkE4LCA2NCwgMzIsIDMy
LCA3LCBzYW1wbGVyTGluZWFyTWlwbWFwKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgzRE1pcG1hcEZsb2F0
ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlYyhlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfM0QsIGdsLlJH
QkExNkYsIDY0LCAzMiwgMzIsIDcsIHNhbXBsZXJMaW5lYXJNaXBtYXApOworICAgICAgICAvKiog
QHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFy
IHRleDNETWlwbWFwSW50ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVS
RVRZUEVfM0QsIGdsLlJHQkE4SSwgNjQsIDMyLCAzMiwgNywgc2FtcGxlck5lYXJlc3RNaXBtYXAp
OworICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlY30gKi8gdmFyIHRleDNETWlwbWFwVWludCA9IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNELCBnbC5SR0JBOFVJLCA2NCwgMzIsIDMyLCA3LCBzYW1w
bGVyTmVhcmVzdE1pcG1hcCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9ICovIHZhciB0ZXgzRFRleGVsRmV0Y2hGaXhlZCA9
IG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNELCBnbC5SR0JB
OCwgNjQsIDMyLCAzMiwgNywgc2FtcGxlclRleGVsRmV0Y2gpOworICAgICAgICAvKiogQHR5cGUg
e2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJlU3BlY30gKi8gdmFyIHRleDNE
VGV4ZWxGZXRjaEZsb2F0ID0gbmV3IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0
dXJlU3BlYyhlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVR5cGUuVEVYVFVS
RVRZUEVfM0QsIGdsLlJHQkExNkYsIDY0LCAzMiwgMzIsIDcsIHNhbXBsZXJUZXhlbEZldGNoKTsK
KyAgICAgICAgLyoqIEB0eXBlIHtlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVy
ZVNwZWN9ICovIHZhciB0ZXgzRFRleGVsRmV0Y2hJbnQgPSBuZXcgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleHR1cmVTcGVjKGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8zRCwgZ2wuUkdCQThJLCA2NCwgMzIsIDMyLCA3LCBzYW1w
bGVyVGV4ZWxGZXRjaCk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleHR1cmVTcGVjfSAqLyB2YXIgdGV4M0RUZXhlbEZldGNoVWludCA9IG5ldyBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWMoZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNELCBnbC5SR0JBOFVJLCA2
NCwgMzIsIDMyLCA3LCBzYW1wbGVyVGV4ZWxGZXRjaCk7CisKKyAgICAgICAgdmFyIHRlc3RHcm91
cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisgICAgICAgIC8vIHRleHR1cmUoKSBj
YXNlcworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVjPn0gKi8gdmFyIHRleHR1cmVDYXNlcyA9IFsKKyAgICAg
ICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3Nh
bXBsZXIyZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREZp
eGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJk
X2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxz
ZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwRml4
ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJELCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIy
ZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFs
c2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREZsb2F0LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX2Zsb2F0
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFst
MC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxzZSwgICAg
MC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwRmxvYXQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJELCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmQnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0wLjIs
IC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAs
ICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRJbnQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJELCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkJywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAu
MF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZh
bHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNh
c2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkJywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsx
LjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBb
MCwgMCwgMF0sICAgIHRleDJEVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXh0dXJlMkQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVS
VEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0
Q2FzZVNwZWMoJ3VzYW1wbGVyMmQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
RnVuY3Rpb24uVEVYVFVSRSwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAs
IDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAg
dGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCks
CisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2Fz
ZVNwZWMoJ3NhbXBsZXIyZF9iaWFzX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIu
MywgMC4wLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5l
dmFsVGV4dHVyZTJEQmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFn
cy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfYmlhc19mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBd
LCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICBmYWxz
ZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyREJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZF9iaWFzJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAs
IDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAg
IGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZF9iaWFzJywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAw
LjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAs
ICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcmN1YmVfZml4ZWQnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjAs
IC0xLjAsIDEuMDEsIDAuMF0sIFsxLjAsIDEuMCwgMS4wMSwgMC4wXSwgICAgZmFsc2UsICAgIDAu
MCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlRml4ZWQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1YmUsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXJjdWJlX2ZpeGVkJywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4w
LCAtMS4wLCAxLjAxLCAwLjBdLCBbMS4wLCAxLjAsIDEuMDEsIDAuMF0sICAgIGZhbHNlLCAgICAw
LjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4Q3ViZU1pcG1hcEZpeGVkLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXJjdWJl
X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkUsIFstMS4wLCAtMS4wLCAtMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAtMS4wMSwgMC4wXSwgICAg
ZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlRmxv
YXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1YmUsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXJj
dWJlX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkUsIFstMS4wLCAtMS4wLCAtMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAtMS4wMSwgMC4wXSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJl
TWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1
YmUsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
YygnaXNhbXBsZXJjdWJlJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkUsIFstMS4wLCAtMS4wLCAxLjAxLCAwLjBdLCBbMS4wLCAxLjAsIDEuMDEsIDAu
MF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4
Q3ViZUludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlQ3ViZSwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNh
bXBsZXJjdWJlJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkUsIFstMS4wLCAtMS4wLCAxLjAxLCAwLjBdLCBbMS4wLCAxLjAsIDEuMDEsIDAuMF0sICAg
IGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4Q3ViZU1p
cG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlQ3ViZSwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1
c2FtcGxlcmN1YmUnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRSwgWy0xLjAsIC0xLjAsIC0xLjAxLCAwLjBdLCBbMS4wLCAxLjAsIC0xLjAxLCAwLjBd
LCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1
YmVVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAg
ICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2Ft
cGxlcmN1YmUnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
VFVSRSwgWy0xLjAsIC0xLjAsIC0xLjAxLCAwLjBdLCBbMS4wLCAxLjAsIC0xLjAxLCAwLjBdLCAg
ICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVN
aXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJl
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKwor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcmN1YmVfYmlhc19maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMCwgLTEuMCwgMS4wMSwgMC4wXSwgWzEuMCwgMS4w
LCAxLjAxLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleEN1YmVNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlQ3ViZUJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcmN1YmVfYmlhc19mbG9hdCcsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMCwgLTEuMCwgLTEu
MDEsIDAuMF0sIFsxLjAsIDEuMCwgLTEuMDEsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIu
MCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4Q3ViZU1pcG1hcEZsb2F0LCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlQmlhcywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcmN1YmVfYmlh
cycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBb
LTEuMCwgLTEuMCwgMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAxLjAxLCAwLjBdLCAgICB0cnVlLCAg
ICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVNaXBtYXBJbnQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1YmVCaWFzLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1w
bGVyY3ViZV9iaWFzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkUsIFstMS4wLCAtMS4wLCAtMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAtMS4wMSwgMC4w
XSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhD
dWJlTWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJl
Q3ViZUJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01F
TlQpLAorCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdl
dENhc2VTcGVjKCdzYW1wbGVyMmRhcnJheV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEu
NSwgMi4zLCAzLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFsw
LCAwLCAwXSwgICAgdGV4MkRBcnJheUZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZXZhbFRleHR1cmUyREFycmF5LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2Fz
ZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRhcnJheV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTAuNCwgLTAuNSwg
MC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAg
ZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5LCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2Zsb2F0
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFst
MS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAg
IDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREFycmF5RmxvYXQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXksIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFy
cmF5X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkUsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAg
ZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREFycmF5
TWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJE
QXJyYXksIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQp
LAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNl
U3BlYygnaXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMu
NSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAg
ICB0ZXgyREFycmF5SW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyREFycmF5LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRF
WCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENh
c2VTcGVjKCdpc2FtcGxlcjJkYXJyYXknLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywg
My41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0s
ICAgIHRleDJEQXJyYXlNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5l
dmFsVGV4dHVyZTJEQXJyYXksIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxh
Z3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBb
MS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwg
WzAsIDAsIDBdLCAgICB0ZXgyREFycmF5VWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmV2YWxUZXh0dXJlMkRBcnJheSwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNh
c2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMC40LCAtMC41LCAwLjBd
LCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxz
ZSwgWzAsIDAsIDBdLCAgICB0ZXgyREFycmF5TWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheSwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2JpYXNfZml4
ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwg
Wy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCAgICB0cnVlLCAg
ICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBG
aXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUJp
YXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjJkYXJyYXlfYmlhc19mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwg
Mi4zLCAzLjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2UsIFswLCAw
LCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUyREFycmF5QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkYXJyYXlfYmlhcycsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTAu
NCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAg
IDIuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcEludCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUJpYXMsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIy
ZGFycmF5X2JpYXMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCAg
ICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJy
YXlNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUy
REFycmF5QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFH
TUVOVCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Z2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAy
LjMsIDIuMywgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAs
IDBdLCAgICB0ZXgzREZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUzRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgp
LAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNl
U3BlYygnc2FtcGxlcjNkX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4z
LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAg
IHRleDNETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4
dHVyZTNELCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5U
KSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2Fz
ZVNwZWMoJ3NhbXBsZXIzZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIu
MywgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAg
ICB0ZXgzREZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUz
RCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAg
ICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygn
c2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBd
LCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNE
TWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNE
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMo
J2lzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAg
IGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4M0RJbnQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNELCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkJywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4y
LCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICBmYWxzZSwgICAgMC4w
LCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwSW50LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjNkJywgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40
LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAw
LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNEVWludCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0QsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwg
WzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2Us
IFswLCAwLCAwXSwgICAgdGV4M0RNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUzRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5GUkFHTUVOVCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2ZpeGVkJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAwLjEs
IDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAxLjAsICAg
IGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEQmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfYmlhc19mbG9hdCcsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwg
LTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwg
ICAgMS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1hcEZsb2F0LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREJpYXMsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIzZF9iaWFz
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFst
MS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICB0cnVlLCAgICAt
Mi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwSW50LCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREJpYXMsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIzZF9i
aWFzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUs
IFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICB0cnVlLCAg
ICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwVWludCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RCaWFzLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxl
cjJkc2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMS4wLCAwLjBdLCAgICBm
YWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEU2hhZG93
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvdywgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxl
cjJkc2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMS4wLCAwLjBdLCAgICBm
YWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFw
U2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRv
dywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVj
KCdzYW1wbGVyMmRzaGFkb3dfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhGdW5jdGlvbi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDEu
MCwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAg
ICB0ZXgyRE1pcG1hcFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlMkRTaGFkb3dCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcmN1YmVzaGFkb3cnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjAsIC0xLjAsIDEuMDEsIDAu
MF0sIFsxLjAsIDEuMCwgMS4wMSwgMS4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBm
YWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlU2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlU2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyY3ViZXNoYWRvdycsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMCwgLTEuMCwg
MS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAxLjAxLCAxLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAw
LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVNaXBtYXBTaGFkb3csIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1YmVTaGFkb3csIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcmN1YmVz
aGFkb3dfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5U
RVhUVVJFLCBbLTEuMCwgLTEuMCwgMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAxLjAxLCAxLjBdLCAg
ICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVN
aXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1
YmVTaGFkb3dCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZS
QUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkYXJyYXlzaGFkb3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0s
IFsxLjUsIDIuMywgMy41LCAxLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNl
LCBbMCwgMCwgMF0sICAgIHRleDJEQXJyYXlTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5c2hhZG93JywgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAt
MC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMS4wXSwgICAgZmFsc2UsICAgIDAuMCwg
ICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREFycmF5TWlwbWFwU2hhZG93LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5U2hhZG93LCAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCkK
KworICAgICAgICAgICAgICAgIC8vIE5vdCBpbiBzcGVjLgorICAgICAgICAgICAgICAgIC8vIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkYXJyYXlz
aGFkb3dfYmlhcycsICAgIChlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAxLjBd
LCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIFZlYzIoMC4wKSwgICAgVmVjMigwLjApLCBm
YWxzZSwgWzAsIDAsIDBdKSwgICAgdGV4MkRBcnJheU1pcG1hcFNoYWRvdywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheVNoYWRvd0JpYXMsICAgIEZSQUdN
RU5UKQorICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5jcmVhdGVDYXNlR3JvdXAodGhpcywgJ3RleHR1cmUnLCAndGV4dHVyZSgpIFRlc3Rz
JywgdGV4dHVyZUNhc2VzKTsKKworICAgICAgICAgICAgLy8gdGV4dHVyZU9mZnNldCgpIGNhc2Vz
CisgICAgICAgICAgICAvLyBcbm90ZSBfYmlhcyB2YXJpYW50cyBhcmUgbm90IHVzaW5nIG1pcG1h
cCB0aGFua3MgdG8gd2lkZSBhbGxvd2VkIHJhbmdlIGZvciBMT0QgY29tcHV0YXRpb24KKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRl
eEZ1bmNDYXNlU3BlYz59ICovIHZhciB0ZXh0dXJlT2Zmc2V0Q2FzZXMgPSBbCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
MmRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
VFVSRSwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sICAgIGZh
bHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRGaXhlZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRPZmZzZXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIy
ZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFs
c2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcEZp
eGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRE9mZnNldCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdz
YW1wbGVyMmRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRSwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0s
ICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRG
bG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRPZmZzZXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAg
ICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3Nh
bXBsZXIyZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1p
cG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRE9m
ZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCks
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VT
cGVjKCdpc2FtcGxlcjJkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBd
LCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJE
SW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRE9mZnNldCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNh
bXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFs
c2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcElu
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRPZmZzZXQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNh
bXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFs
c2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyRFVpbnQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJET2Zmc2V0LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJk
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFst
MC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxzZSwgICAg
MC4wLCAgICAwLjAsICAgIHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJETWlwbWFwVWludCwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRPZmZzZXQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
MmRfYmlhc19maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwg
ICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREZp
eGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRE9mZnNldEJp
YXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjJkX2JpYXNfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAw
LjAsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwg
ICAgdGV4MkRGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJl
MkRPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZS
QUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Z2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAy
LjMsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbLTgsIDcs
IDBdLCAgICB0ZXgyREludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0
dXJlMkRPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdz
LkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmRfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41
LCAyLjMsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbNywg
LTgsIDBdLCAgICB0ZXgyRFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFs
VGV4dHVyZTJET2Zmc2V0QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5GUkFHTUVOVCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2ZpeGVkJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMC40LCAtMC41
LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAg
ICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREFycmF5Rml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2ZpeGVk
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFst
MS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAg
IDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyREFycmF5TWlwbWFwRml4
ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlPZmZz
ZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjJkYXJyYXlfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywg
My41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0s
ICAgIHRleDJEQXJyYXlGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlMkRBcnJheU9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkYXJyYXlfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAu
MF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRy
dWUsIFs3LCAtOCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheU9mZnNldCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkYXJyYXkn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0x
LjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCAgICBmYWxzZSwgICAg
MC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJEQXJyYXlJbnQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlPZmZzZXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVy
MmRhcnJheScsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFLCBbLTEuMiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIGZh
bHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRBcnJheU1p
cG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJh
eU9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVO
VCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENh
c2VTcGVjKCd1c2FtcGxlcjJkYXJyYXknLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywg
My41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0s
ICAgIHRleDJEQXJyYXlVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUyREFycmF5T2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkYXJyYXknLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsx
LjUsIDIuMywgMy41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFs3
LCAtOCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5T2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkYXJyYXlfYmlhc19m
aXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJF
LCBbLTEuMiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIHRydWUs
ICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRBcnJheUZpeGVk
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5T2Zmc2V0
QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCks
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VT
cGVjKCdzYW1wbGVyMmRhcnJheV9iaWFzX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41
LCAyLjMsIDMuNSwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbNywg
LTgsIDBdLCAgICB0ZXgyREFycmF5RmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTJEQXJyYXlPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRhcnJheV9iaWFzJywgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAt
MC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgdHJ1ZSwgICAgLTIuMCwg
ICAgMi4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREFycmF5SW50LCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5T2Zmc2V0QmlhcywgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxl
cjJkYXJyYXlfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhUVVJFLCBbLTEuMiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0s
ICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRB
cnJheVVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJy
YXlPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZS
QUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUs
IDIuMywgMi4zLCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwg
NywgM10sICAgIHRleDNERml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFs
VGV4dHVyZTNET2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdz
LlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwg
Mi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIDMs
IC04XSwgICAgdGV4M0RNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0s
IFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUs
IFszLCAtOCwgN10sICAgIHRleDNERmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTNET2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2Fz
ZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwg
WzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwg
Wy04LCA3LCAzXSwgICAgdGV4M0RNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlM0RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIzZCcsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBd
LCBbMS41LCAyLjMsIDIuMywgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVl
LCBbNywgMywgLThdLCAgICB0ZXgzREludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwg
Mi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzMsIC04
LCA3XSwgICAgdGV4M0RNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5l
dmFsVGV4dHVyZTNET2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwg
Mi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3
LCAzXSwgICAgdGV4M0RVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUzRE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5W
RVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5n
ZXRDYXNlU3BlYygndXNhbXBsZXIzZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhGdW5jdGlvbi5URVhUVVJFLCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIu
MywgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgMywgLThdLCAg
ICB0ZXgzRE1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4
dHVyZTNET2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZS
QUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2JpYXNfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwg
WzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDEuMCwgICAgdHJ1ZSwg
Wy04LCA3LCAzXSwgICAgdGV4M0RGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2Zsb2F0JywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMS4yLCAtMS40LCAw
LjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAxLjAs
ICAgIHRydWUsIFs3LCAzLCAtOF0sICAgIHRleDNERmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNET2Zmc2V0QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkX2JpYXMnLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIsIC0x
LjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAg
IDIuMCwgICAgdHJ1ZSwgWzMsIC04LCA3XSwgICAgdGV4M0RJbnQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNET2Zmc2V0QmlhcywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjNkX2JpYXMnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwgWy0xLjIs
IC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIHRydWUsICAgIC0yLjAs
ICAgIDIuMCwgICAgdHJ1ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RVaW50LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRE9mZnNldEJpYXMsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRzaGFk
b3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRSwg
Wy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAxLjAsIDAuMF0sICAgIGZhbHNlLCAg
ICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRTaGFkb3csIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93T2Zmc2V0LCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
MmRzaGFkb3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
VFVSRSwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAxLjAsIDAuMF0sICAgIGZh
bHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBT
aGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93
T2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5U
KSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2Fz
ZVNwZWMoJ3NhbXBsZXIyZHNoYWRvd19iaWFzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkUsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIu
MywgMS4wLCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIHRydWUsIFstOCwgNywg
MF0sICAgIHRleDJEU2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUyRFNoYWRvd09mZnNldEJpYXMsICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuRlJBR01FTlQpCisgICAgICAgICAgICBdOworICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlzLCAndGV4dHVyZW9m
ZnNldCcsICd0ZXh0dXJlT2Zmc2V0KCkgVGVzdHMnLCB0ZXh0dXJlT2Zmc2V0Q2FzZXMpOworCisg
ICAgICAgICAgICAvLyB0ZXh0dXJlUHJvaigpIGNhc2VzCisgICAgICAgICAgICAvLyBcbm90ZSBD
dXJyZW50bHkgdXNlcyBjb25zdGFudCBkaXZpZGVyIQorICAgICAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVjPn0gKi8g
dmFyIHRleHR1cmVQcm9qQ2FzZXMgPSBbCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfdmVjM19maXhlZCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4z
LCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAw
LjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRGaXhlZCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qMywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfZml4
ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBS
T0ozLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICBm
YWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFw
Rml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajMs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAg
ICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygn
c2FtcGxlcjJkX3ZlYzNfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
RnVuY3Rpb24uVEVYVFVSRVBST0ozLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40
NSwgMS41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleDJERmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4
dHVyZTJEUHJvajMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVS
VEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0
Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWMzX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KMywgWy0wLjMsIC0wLjYsIDEuNSwgMC4wXSwg
WzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxz
ZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ozLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42
LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAg
IDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRJbnQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAt
MC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAs
ICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBJbnQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajMsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZF92ZWMz
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9K
MywgWy0wLjMsIC0wLjYsIDEuNSwgMC4wXSwgWzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwgICAgZmFs
c2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRFVpbnQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajMsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmRf
dmVjMycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJF
UFJPSjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAg
IGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBt
YXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2oz
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKwor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjJkX3ZlYzNfYmlhc19maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsy
LjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2Us
IFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qM0JpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfYmlhc19mbG9hdCcs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMs
IFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIHRydWUs
ICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGbG9h
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qM0JpYXMs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAg
ICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygn
aXNhbXBsZXIyZF92ZWMzX2JpYXMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
RnVuY3Rpb24uVEVYVFVSRVBST0ozLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40
NSwgMS41LCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyRFByb2ozQmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzNfYmlhcycsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAx
LjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIu
MCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ozQmlhcywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisKKyAgICAgICAgICAgICAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0
X2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkVQUk9KLCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAg
ICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJERml4
ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvaiwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxl
cjJkX3ZlYzRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAs
IDEuNV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAg
dGV4MkRNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0
dXJlMkRQcm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdN
RU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0
Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBb
Mi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNl
LCBbMCwgMCwgMF0sICAgIHRleDJERmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTJEUHJvaiwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAs
IDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwg
ICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjNCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSiwgWy0wLjMs
IC0wLjYsIDAuMCwgMS41XSwgWzIuMjUsIDMuNDUsIDAuMCwgMS41XSwgICAgZmFsc2UsICAgIDAu
MCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREludCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkX3ZlYzQnLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4z
LCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNlLCAgICAw
LjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBJbnQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvaiwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkX3Zl
YzQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBS
T0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZh
bHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRVaW50LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2osIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmRf
dmVjNCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJF
UFJPSiwgWy0wLjMsIC0wLjYsIDAuMCwgMS41XSwgWzIuMjUsIDMuNDUsIDAuMCwgMS41XSwgICAg
ZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1h
cFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvaiwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMo
J3NhbXBsZXIyZF92ZWM0X2JpYXNfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1
LCAzLjQ1LCAwLjAsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2UsIFsw
LCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmV2YWxUZXh0dXJlMkRQcm9qQmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfdmVjNF9iaWFzX2Zsb2F0JywgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbLTAu
MywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICB0cnVlLCAgICAt
Mi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwRmxvYXQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakJpYXMsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBs
ZXIyZF92ZWM0X2JpYXMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAs
IDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAg
dGV4MkRNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVy
ZTJEUHJvakJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJB
R01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5n
ZXRDYXNlU3BlYygndXNhbXBsZXIyZF92ZWM0X2JpYXMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0s
IFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFs
c2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVkJywgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAx
LjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2Us
ICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzREZpeGVkLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2osIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9maXhl
ZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJP
SiwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAtMC43NV0s
ICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4M0RN
aXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQ
cm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwK
KyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNw
ZWMoJ3NhbXBsZXIzZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAt
MS43LCAtMS43LCAtMC43NV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFsw
LCAwLCAwXSwgICAgdGV4M0RGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXh0dXJlM0RQcm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdz
LlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFswLjksIDEuMDUsIC0wLjA4LCAtMC43NV0s
IFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAg
IGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvaiwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAt
MC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIDAu
MCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzREludCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1
LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAg
IDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1hcEludCwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2Qn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0os
IFswLjksIDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAg
ICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNEVWlu
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxl
cjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQ
Uk9KLCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1
XSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgz
RE1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNE
UHJvaiwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCks
CisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2Fz
ZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBb
LTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMS4wLCAgICBm
YWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2Zsb2F0Jywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBb
MC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAg
dHJ1ZSwgICAgLTIuMCwgICAgMS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1h
cEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pC
aWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwK
KyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNw
ZWMoJ2lzYW1wbGVyM2RfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAt
MS43LCAtMS43LCAtMC43NV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgZmFsc2UsIFsw
LCAwLCAwXSwgICAgdGV4M0RNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTNEUHJvakJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5D
YXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIzZF9iaWFzJywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4w
OCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgdHJ1ZSwgICAgLTIuMCwg
ICAgMi4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1hcFVpbnQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakJpYXMsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorCisgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRz
aGFkb3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVS
RVBST0osIFswLjIsIDAuNiwgMC4wLCAxLjVdLCBbLTIuMjUsIC0zLjQ1LCAxLjUsIDEuNV0sICAg
IGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRTaGFk
b3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJv
aiwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAg
ICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygn
c2FtcGxlcjJkc2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkVQUk9KLCBbMC4yLCAwLjYsIDAuMCwgMS41XSwgWy0yLjI1LCAtMy40NSwgMS41
LCAxLjVdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAg
IHRleDJETWlwbWFwU2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUyRFNoYWRvd1Byb2osIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxh
Z3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkc2hhZG93X2JpYXMnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFswLjIsIDAuNiwgMC4wLCAx
LjVdLCBbLTIuMjUsIC0zLjQ1LCAxLjUsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwg
ICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvakJpYXMsICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpCisgICAgICAgICAgICBd
OworICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VH
cm91cCh0aGlzLCAndGV4dHVyZXByb2onLCAndGV4dHVyZVByb2ooKSBUZXN0cycsIHRleHR1cmVQ
cm9qQ2FzZXMpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlUHJvak9mZnNldCgpIGNhc2VzCisg
ICAgICAgICAgICAvLyBcbm90ZSBDdXJyZW50bHkgdXNlcyBjb25zdGFudCBkaXZpZGVyIQorICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY0Nhc2VTcGVjPn0gKi8gdmFyIHRleHR1cmVQcm9qT2Zmc2V0Q2FzZXMgPSBbCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdz
YW1wbGVyMmRfdmVjM19maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1
LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAw
XSwgICAgdGV4MkRGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0
dXJlMkRQcm9qM09mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFn
cy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0ozLCBbLTAuMywgLTAuNiwgMS41LCAw
LjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAg
IHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfZmxv
YXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBS
T0ozLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICBm
YWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJERmxvYXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZzZXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAg
ICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3Nh
bXBsZXIyZF92ZWMzX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1
bmN0aW9uLlRFWFRVUkVQUk9KMywgWy0wLjMsIC0wLjYsIDEuNSwgMC4wXSwgWzIuMjUsIDMuNDUs
IDEuNSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBd
LCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyRFByb2ozT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2Fz
ZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAxLjUs
IDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwg
ICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAt
MC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAs
ICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBJbnQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZzZXQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIy
ZF92ZWMzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkVQUk9KMywgWy0wLjMsIC0wLjYsIDEuNSwgMC4wXSwgWzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyRFVp
bnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvajNPZmZz
ZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMo
J3VzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAx
LjUsIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwg
ICAgdGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUyRFByb2ozT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfYmlhc19maXhlZCcsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAt
MC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAs
ICAgIDIuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRGaXhlZCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qM09mZnNldEJpYXMsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJk
X3ZlYzNfYmlhc19mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFUFJPSjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAx
LjUsIDAuMF0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwg
ICAgdGV4MkRGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJl
MkRQcm9qM09mZnNldEJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxh
Z3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZF92ZWMzX2JpYXMnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0ozLCBbLTAuMywgLTAuNiwgMS41
LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICB0cnVlLCAgICAtMi4wLCAgICAyLjAs
ICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJESW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ozT2Zmc2V0QmlhcywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzNfYmlh
cycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJP
SjMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIHRy
dWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRVaW50LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2ozT2Zmc2V0Qmlh
cywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisK
KyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNw
ZWMoJ3NhbXBsZXIyZF92ZWM0X2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwg
My40NSwgMC4wLCAxLjVdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwg
NywgMF0sICAgIHRleDJERml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFs
VGV4dHVyZTJEUHJvak9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAs
IDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwg
ICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0X2Zs
b2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQ
Uk9KLCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICBm
YWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJERmxvYXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvak9mZnNldCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2Ft
cGxlcjJkX3ZlYzRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVu
Y3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAw
LjAsIDEuNV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwg
ICAgdGV4MkRNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlMkRQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjNCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSiwgWy0wLjMsIC0wLjYsIDAuMCwgMS41
XSwgWzIuMjUsIDMuNDUsIDAuMCwgMS41XSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0
cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmV2YWxUZXh0dXJlMkRQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkX3ZlYzQnLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAw
LjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAu
MCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvak9mZnNldCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzQn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0os
IFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNl
LCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRVaW50LCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pPZmZzZXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVy
MmRfdmVjNCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFUFJPSiwgWy0wLjMsIC0wLjYsIDAuMCwgMS41XSwgWzIuMjUsIDMuNDUsIDAuMCwgMS41XSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1p
cG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJv
ak9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVO
VCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0
Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0X2JpYXNfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEu
NV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAg
dHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qT2Zmc2V0QmlhcywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfdmVjNF9iaWFzX2Zs
b2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQ
Uk9KLCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICB0
cnVlLCAgICAtMi4wLCAgICAyLjAsICAgIHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJERmxvYXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvak9mZnNldEJp
YXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
YygnaXNhbXBsZXIyZF92ZWM0X2JpYXMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAz
LjQ1LCAwLjAsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWy04LCA3
LCAwXSwgICAgdGV4MkRJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4
dHVyZTJEUHJvak9mZnNldEJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZF92ZWM0X2JpYXMnLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFstMC4zLCAtMC42LCAw
LjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIu
MCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVk
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9K
LCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwg
ICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzREZp
eGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pPZmZz
ZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMo
J3NhbXBsZXIzZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFUFJPSiwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43
LCAtMS43LCAtMC43NV0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWzcsIDMs
IC04XSwgICAgdGV4M0RNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuOSwgMS4wNSwgLTAu
MDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAtMC43NV0sICAgIGZhbHNlLCAgICAwLjAs
ICAgIDAuMCwgICAgdHJ1ZSwgWzMsIC04LCA3XSwgICAgdGV4M0RGbG9hdCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZmxvYXQn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0os
IFswLjksIDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAg
ICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgM10sICAgIHRleDNETWlw
bWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJv
ak9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVO
VCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENh
c2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1
bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0x
LjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywg
MywgLThdLCAgICB0ZXgzREludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlM0RQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBb
LTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0
cnVlLCBbMywgLTgsIDddLCAgICB0ZXgzRE1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFswLjksIDEuMDUs
IC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAgICBmYWxzZSwgICAg
MC4wLCAgICAwLjAsICAgIHRydWUsIFstOCwgNywgM10sICAgIHRleDNEVWludCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qT2Zmc2V0LCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjNkJywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBb
MC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAg
ZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbNywgMywgLThdLCAgICB0ZXgzRE1pcG1h
cFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvak9m
ZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCks
CisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2Fz
ZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBb
LTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0
cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzREZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUzRFByb2pPZmZzZXRCaWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9iaWFzX2Zsb2F0Jywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBb
MC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAg
dHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbNywgMywgLThdLCAgICB0ZXgzREZsb2F0
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pPZmZzZXRC
aWFzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwK
KyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNw
ZWMoJ2lzYW1wbGVyM2RfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAt
MS43LCAtMS43LCAtMC43NV0sICAgIHRydWUsICAgIC0yLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzMs
IC04LCA3XSwgICAgdGV4M0RJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFs
VGV4dHVyZTNEUHJvak9mZnNldEJpYXMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5D
YXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIzZF9iaWFzJywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KLCBbMC45LCAxLjA1LCAtMC4w
OCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgdHJ1ZSwgICAgLTIuMCwg
ICAgMi4wLCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzRFVpbnQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvak9mZnNldEJpYXMsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorCisgICAgICAgICAgICAg
ICAgLy8gTk9URTogb2Zmc2V0IGNoYW5nZWQgZnJvbSBbLTgsIDcsIDBdIGluIG5hdGl2ZSBkRVFQ
IHRvIFs3LCAtOCwgMF0gcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wv
aXNzdWVzLzIwMzMKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZHNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuMiwgMC42LCAwLjAsIDEuNV0sIFst
Mi4yNSwgLTMuNDUsIDEuNSwgMS41XSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVl
LCBbNywgLTgsIDBdLCAgICB0ZXgyRFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmV2YWxUZXh0dXJlMkRTaGFkb3dQcm9qT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRzaGFkb3cnLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0osIFswLjIsIDAu
NiwgMC4wLCAxLjVdLCBbLTIuMjUsIC0zLjQ1LCAxLjUsIDEuNV0sICAgIGZhbHNlLCAgICAwLjAs
ICAgIDAuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvak9mZnNldCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdz
YW1wbGVyMmRzaGFkb3dfYmlhcycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFUFJPSiwgWzAuMiwgMC42LCAwLjAsIDEuNV0sIFstMi4yNSwgLTMuNDUs
IDEuNSwgMS41XSwgICAgdHJ1ZSwgICAgLTIuMCwgICAgMi4wLCAgICB0cnVlLCBbLTgsIDcsIDBd
LCAgICB0ZXgyRFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0
dXJlMkRTaGFkb3dQcm9qT2Zmc2V0QmlhcywgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLkNhc2VGbGFncy5GUkFHTUVOVCkKKyAgICAgICAgICAgIF07CisgICAgICAgICAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY3JlYXRlQ2FzZUdyb3VwKHRoaXMsICd0ZXh0dXJl
cHJvam9mZnNldCcsICd0ZXh0dXJlT2Zmc2V0UHJvaigpIFRlc3RzJywgdGV4dHVyZVByb2pPZmZz
ZXRDYXNlcyk7CisKKyAgICAgICAgICAgIC8vIHRleHR1cmVMb2QoKSBjYXNlcworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVu
Y0Nhc2VTcGVjPn0gKi8gdmFyIHRleHR1cmVMb2RDYXNlcyA9IFsKKyAgICAgICAgICAgICAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZF9maXhl
ZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9E
LCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFsc2Us
ICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGaXhl
ZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRMb2QsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRf
ZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVS
RUxPRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sICAgIGZh
bHNlLCAgICAtMS4wLCAgICA5LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFw
RmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJETG9kLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBs
ZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJF
TE9ELCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFs
c2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBJ
bnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJETG9kLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIy
ZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9E
LCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDAuMCwgMC4wXSwgICAgZmFsc2Us
ICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBVaW50
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRExvZCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcmN1
YmVfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
VFVSRUxPRCwgWy0xLjAsIC0xLjAsIDEuMDEsIDAuMF0sIFsxLjAsIDEuMCwgMS4wMSwgMC4wXSwg
ICAgZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4Q3Vi
ZU1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVD
dWJlTG9kLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcmN1YmVfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0xLjAsIC0xLjAsIC0xLjAxLCAwLjBdLCBbMS4wLCAxLjAs
IC0xLjAxLCAwLjBdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAs
IDBdLCAgICB0ZXhDdWJlTWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZUN1YmVMb2QsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcmN1YmUnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0xLjAsIC0xLjAsIDEuMDEsIDAuMF0sIFsx
LjAsIDEuMCwgMS4wMSwgMC4wXSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2Us
IFswLCAwLCAwXSwgICAgdGV4Q3ViZU1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlQ3ViZUxvZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyY3ViZScsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEuMCwgLTEuMCwgLTEuMDEsIDAu
MF0sIFsxLjAsIDEuMCwgLTEuMDEsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAsICAg
IGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlTG9kLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRhcnJheV9maXhlZCcsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEu
MiwgLTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIGZhbHNlLCAgICAt
MS4wLCAgICA4LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBGaXhl
ZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUxvZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBs
ZXIyZGFycmF5X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkVMT0QsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwg
MC4wXSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDguMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAg
dGV4MkRBcnJheU1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyREFycmF5TG9kLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVMT0QsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBb
MS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDguMCwgICAgZmFsc2Us
IFswLCAwLCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUxvZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmRhcnJheScsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEuMiwgLTAuNCwg
LTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA4
LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBVaW50LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5TG9kLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZml4
ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxP
RCwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZhbHNl
LCAgICAtMS4wLCAgICA3LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwRml4
ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNETG9kLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNk
X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkVMT0QsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCAgICBm
YWxzZSwgICAgLTEuMCwgICAgNy4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1h
cEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRExvZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1w
bGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVS
RUxPRCwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZh
bHNlLCAgICAtMS4wLCAgICA3LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFw
SW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRExvZCwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVy
M2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxP
RCwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZhbHNl
LCAgICAtMS4wLCAgICA3LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwVWlu
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RMb2QsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIy
ZHNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFTE9ELCBbLTAuMiwgLTAuNCwgMC4wLCAwLjBdLCBbMS41LCAyLjMsIDEuMCwgMC4wXSwgICAg
ZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBt
YXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hh
ZG93TG9kLCAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgp
CisgICAgICAgICAgICBdOworICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlzLCAndGV4dHVyZWxvZCcsICd0ZXh0dXJlTG9kKCkgVGVz
dHMnLCB0ZXh0dXJlTG9kQ2FzZXMpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlTG9kT2Zmc2V0
KCkgY2FzZXMKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmNDYXNlU3BlYz59ICovIHZhciB0ZXh0dXJlTG9kT2Zmc2V0Q2Fz
ZXMgPSBbCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdl
dENhc2VTcGVjKCdzYW1wbGVyMmRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwg
Mi4zLCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUsIFstOCwg
NywgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTJETG9kT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVMT0QsIFstMC4yLCAtMC40LCAwLjAsIDAu
MF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICB0
cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRExvZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmQnLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0wLjIsIC0wLjQsIDAu
MCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAs
ICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRExvZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmQnLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0wLjIsIC0wLjQs
IDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5
LjAsICAgIHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJETWlwbWFwVWludCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAgICAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2Zp
eGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVM
T0QsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgICAgZmFs
c2UsICAgIC0xLjAsICAgIDguMCwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRBcnJheU1p
cG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFy
cmF5TG9kT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJP
VEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRD
YXNlU3BlYygnc2FtcGxlcjJkYXJyYXlfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsx
LjUsIDIuMywgMy41LCAwLjBdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOC4wLCAgICB0cnVlLCBb
NywgLTgsIDBdLCAgICB0ZXgyREFycmF5TWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkYXJyYXknLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0xLjIs
IC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCAgICBmYWxzZSwgICAgLTEu
MCwgICAgOC4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREFycmF5TWlwbWFwSW50LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREFycmF5TG9kT2Zmc2V0
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNh
bXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVMT0QsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMC4w
XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDguMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4
MkRBcnJheU1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4
dHVyZTJEQXJyYXlMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuQk9USCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIzZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBd
LCBbMS41LCAyLjMsIDIuMywgMC4wXSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDcuMCwgICAgdHJ1
ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlM0RMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZmxvYXQnLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUxPRCwgWy0xLjIsIC0xLjQs
IDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA3
LjAsICAgIHRydWUsIFs3LCAzLCAtOF0sICAgIHRleDNETWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNETG9kT2Zmc2V0LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIzZCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEuMiwg
LTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgICAgZmFsc2UsICAgIC0xLjAs
ICAgIDcuMCwgICAgdHJ1ZSwgWzMsIC04LCA3XSwgICAgdGV4M0RNaXBtYXBJbnQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNETG9kT2Zmc2V0LCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIzZCcsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFTE9ELCBbLTEu
MiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgICAgZmFsc2UsICAgIC0x
LjAsICAgIDcuMCwgICAgdHJ1ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RNaXBtYXBVaW50LCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRExvZE9mZnNldCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJk
c2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkVMT0QsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMS4wLCAwLjBdLCAgICBm
YWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyRE1pcG1h
cFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRTaGFk
b3dMb2RPZmZzZXQsICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3Mu
Qk9USCkKKyAgICAgICAgICAgIF07CisgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuY3JlYXRlQ2FzZUdyb3VwKHRoaXMsICd0ZXh0dXJlbG9kb2Zmc2V0JywgJ3RleHR1
cmVMb2RPZmZzZXQoKSBUZXN0cycsIHRleHR1cmVMb2RPZmZzZXRDYXNlcyk7CisKKyAgICAgICAg
ICAgIC8vIHRleHR1cmVQcm9qTG9kKCkgY2FzZXMKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmNDYXNlU3BlYz59ICovIHZh
ciB0ZXh0dXJlUHJvakxvZENhc2VzID0gWworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfZml4ZWQnLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0QzLCBb
LTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICBmYWxzZSwg
ICAgLTEuMCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEZpeGVk
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pMb2QzLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxl
cjJkX3ZlYzNfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0pMT0QzLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwg
MS41LCAwLjBdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBd
LCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyRFByb2pMb2QzLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZF92ZWMzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9EMywgWy0wLjMsIC0wLjYsIDEuNSwgMC4w
XSwgWzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAg
ZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZDMsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzMnLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0QzLCBbLTAuMywg
LTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCAgICBmYWxzZSwgICAgLTEu
MCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcFVpbnQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZDMsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZF92
ZWM0X2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WFRVUkVQUk9KTE9ELCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAx
LjVdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0
ZXgyRE1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyRFByb2pMb2QsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9U
SCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENh
c2VTcGVjKCdzYW1wbGVyMmRfdmVjNF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRCwgWy0wLjMsIC0wLjYsIDAuMCwgMS41XSwg
WzIuMjUsIDMuNDUsIDAuMCwgMS41XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFs
c2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qTG9kLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZF92ZWM0JywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9ELCBbLTAuMywgLTAu
NiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICBmYWxzZSwgICAgLTEuMCwg
ICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEludCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qTG9kLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygndXNhbXBsZXIyZF92ZWM0Jywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9E
LCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICBmYWxz
ZSwgICAgLTEuMCwgICAgOS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcFVp
bnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAg
ICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2Ft
cGxlcjNkX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KTE9ELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcs
IC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDcuMCwgICAgZmFsc2UsIFswLCAw
LCAwXSwgICAgdGV4M0RNaXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RQcm9qTG9kLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2Fz
ZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9ELCBbMC45LCAxLjA1LCAtMC4wOCwg
LTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIC0xLjAsICAg
IDcuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4M0RNaXBtYXBGbG9hdCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qTG9kLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIzZCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRCwgWzAu
OSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAtMC43NV0sICAgIGZh
bHNlLCAgICAtMS4wLCAgICA3LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFw
SW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pMb2Qs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAg
ICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2Ft
cGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRV
UkVQUk9KTE9ELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcs
IC0wLjc1XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDcuMCwgICAgZmFsc2UsIFswLCAwLCAwXSwg
ICAgdGV4M0RNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUzRFByb2pMb2QsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3Mu
Qk9USCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Z2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZHNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRCwgWzAuMiwgMC42LCAwLjAsIDEuNV0sIFst
Mi4yNSwgLTMuNDUsIDEuNSwgMS41XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDkuMCwgICAgZmFs
c2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvakxvZCwgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKQorICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jcmVhdGVDYXNlR3JvdXAodGhpcywg
J3RleHR1cmVwcm9qbG9kJywgJ3RleHR1cmVQcm9qTG9kKCkgVGVzdHMnLCB0ZXh0dXJlUHJvakxv
ZENhc2VzKTsKKworICAgICAgICAgICAgLy8gdGV4dHVyZVByb2pMb2RPZmZzZXQoKSBjYXNlcwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY0Nhc2VTcGVjPn0gKi8gdmFyIHRleHR1cmVQcm9qTG9kT2Zmc2V0Q2FzZXMgPSBb
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VT
cGVjKCdzYW1wbGVyMmRfdmVjM19maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRDMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsy
LjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUs
IFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZDNPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfdmVjM19mbG9hdCcsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRDMs
IFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNl
LCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJETWlwbWFwRmxv
YXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakxvZDNP
ZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVj
KCdpc2FtcGxlcjJkX3ZlYzMnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVu
Y3Rpb24uVEVYVFVSRVBST0pMT0QzLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40
NSwgMS41LCAwLjBdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICB0cnVlLCBbLTgsIDcs
IDBdLCAgICB0ZXgyRE1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXh0dXJlMkRQcm9qTG9kM09mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmRfdmVjMycsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkxPRDMsIFstMC4zLCAtMC42LCAx
LjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5
LjAsICAgIHRydWUsIFs3LCAtOCwgMF0sICAgIHRleDJETWlwbWFwVWludCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qTG9kM09mZnNldCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjJkX3Zl
YzRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
VFVSRVBST0pMT0QsIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEu
NV0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRl
eDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVy
ZTJEUHJvakxvZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFn
cy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Z2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9ELCBbLTAuMywgLTAuNiwgMC4wLCAx
LjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAg
ICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjJkX3ZlYzQnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0Qs
IFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sICAgIGZhbHNl
LCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwSW50
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pMb2RPZmZz
ZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1
c2FtcGxlcjJkX3ZlYzQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0pMT0QsIFstMC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAw
LjAsIDEuNV0sICAgIGZhbHNlLCAgICAtMS4wLCAgICA5LjAsICAgIHRydWUsIFs3LCAtOCwgMF0s
ICAgIHRleDJETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlMkRQcm9qTG9kT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2Fz
ZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0QsIFswLjksIDEuMDUsIC0wLjA4
LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAgICBmYWxzZSwgICAgLTEuMCwg
ICAgNy4wLCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzRE1pcG1hcEZpeGVkLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzRFByb2pMb2RPZmZzZXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2Rf
ZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVS
RVBST0pMT0QsIFswLjksIDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywg
LTAuNzVdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgNy4wLCAgICB0cnVlLCBbNywgMywgLThdLCAg
ICB0ZXgzRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRl
eHR1cmUzRFByb2pMb2RPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNl
RmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldENhc2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KTE9ELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVd
LCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgICAgZmFsc2UsICAgIC0xLjAsICAgIDcuMCwg
ICAgdHJ1ZSwgWzMsIC04LCA3XSwgICAgdGV4M0RNaXBtYXBJbnQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakxvZE9mZnNldCwgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pMT0QsIFswLjks
IDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCAgICBmYWxz
ZSwgICAgLTEuMCwgICAgNy4wLCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzRE1pcG1hcFVp
bnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakxvZE9m
ZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKwor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjJkc2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1
bmN0aW9uLlRFWFRVUkVQUk9KTE9ELCBbMC4yLCAwLjYsIDAuMCwgMS41XSwgWy0yLjI1LCAtMy40
NSwgMS41LCAxLjVdLCAgICBmYWxzZSwgICAgLTEuMCwgICAgOS4wLCAgICB0cnVlLCBbLTgsIDcs
IDBdLCAgICB0ZXgyRE1pcG1hcFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlMkRTaGFkb3dQcm9qTG9kT2Zmc2V0LCAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpCisgICAgICAgICAgICBdOworICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlzLCAndGV4
dHVyZXByb2psb2RvZmZzZXQnLCAndGV4dHVyZVByb2pMb2RPZmZzZXQoKSBUZXN0cycsIHRleHR1
cmVQcm9qTG9kT2Zmc2V0Q2FzZXMpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlR3JhZCgpIGNh
c2VzCisgICAgICAgICAgICAvLyBcbm90ZSBPbmx5IG9uZSBvZiBkdWR4LCBkdWR5LCBkdmR4LCBk
dmR5IGlzIG5vbi16ZXJvIHNpbmNlIHNwZWMgYWxsb3dzIGFwcHJveGltYXRpbmcgcCBmcm9tIGRl
cml2YXRlcyBieSB2YXJpb3VzIG1ldGhvZHMuCisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jQ2FzZVNwZWM+fSAqLyB2YXIg
dGV4dHVyZUdyYWRDYXNlcyA9IFsKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVyMmRfZml4ZWQnLCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMC4yLCAtMC40
LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjIs
IDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBb
MCwgMCwgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5ldmFsVGV4dHVyZTJER3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNh
c2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVyMmRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMC4yLCAtMC40LCAwLjAs
IDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIC0wLjIs
IDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAs
IDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
ZXZhbFRleHR1cmUyREdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxh
Z3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmdldEdyYWRDYXNlU3BlYygnaXNhbXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFR1JBRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEu
NSwgMi4zLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4w
LCAwLjAsIDAuMF0sIFstMC4yLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRl
eDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUy
REdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNl
U3BlYygndXNhbXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhUVVJFR1JBRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAs
IDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0s
IFswLjAsIDAuMiwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBVaW50
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREdyYWQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1w
bGVyY3ViZV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhUVVJFR1JBRCwgWy0xLjAsIC0xLjAsIDEuMDEsIDAuMF0sIFsxLjAsIDEuMCwgMS4wMSwg
MC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4yLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlTWlwbWFwRml4
ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZUN1YmVHcmFkLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3Nh
bXBsZXJjdWJlX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkVHUkFELCBbLTEuMCwgLTEuMCwgLTEuMDEsIDAuMF0sIFsxLjAsIDEuMCwgLTEu
MDEsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgLTAuMiwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleEN1YmVNaXBt
YXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlQ3ViZUdy
YWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3Bl
YygnaXNhbXBsZXJjdWJlJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0
aW9uLlRFWFRVUkVHUkFELCBbLTEuMCwgLTEuMCwgMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAxLjAx
LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBd
LCBbLTAuMiwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlTWlwbWFw
SW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlR3JhZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCd1
c2FtcGxlcmN1YmUnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRUdSQUQsIFstMS4wLCAtMS4wLCAtMS4wMSwgMC4wXSwgWzEuMCwgMS4wLCAtMS4wMSwg
MC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4yLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlTWlwbWFwVWlu
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlQ3ViZUdyYWQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdz
YW1wbGVyMmRhcnJheV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhG
dW5jdGlvbi5URVhUVVJFR1JBRCwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywg
My41LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJyYXlN
aXBtYXBGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRB
cnJheUdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCks
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRD
YXNlU3BlYygnc2FtcGxlcjJkYXJyYXlfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBb
MS41LCAyLjMsIDMuNSwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4yLCAwLjBdLCBb
MC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAg
dGV4MkRBcnJheU1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyREFycmF5R3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0R3JhZENhc2VTcGVjKCdpc2FtcGxlcjJkYXJyYXknLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAtMC41LCAw
LjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgWy0wLjIsIDAuMCwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAw
XSwgICAgdGV4MkRBcnJheU1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlMkRBcnJheUdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5D
YXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwgLTAuNCwgLTAu
NSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4w
LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMiwgMC4wXSwgICAgZmFsc2UsIFswLCAw
LCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVkJywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwgLTEu
NCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4y
LCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwg
WzAsIDAsIDBdLCAgICB0ZXgzRE1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUzREdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5D
YXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwgLTEuNCwgMC4x
LCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4y
LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgZmFsc2UsIFswLCAw
LCAwXSwgICAgdGV4M0RNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlM0RHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwgLTEuNCwgMC4xLCAw
LjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
Ml0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBd
LCAgICB0ZXgzRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUzREdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3Mu
RlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRHcmFkQ2FzZVNwZWMoJ2lzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsx
LjUsIDIuMywgMi4zLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAu
MCwgMC4wLCAwLjBdLCBbLTAuMiwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0
ZXgzRE1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJl
M0RHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2Fz
ZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVu
Y3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4z
LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBd
LCBbMC4wLCAwLjIsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwVWlu
dCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNh
bXBsZXIzZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFR1JBRCwgWy0xLjIsIC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAu
MCwgLTAuMl0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwVWludCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIy
ZHNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFR1JBRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAxLjAsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMiwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAu
MCwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93R3JhZCwgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAg
ICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVy
Y3ViZXNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5U
RVhUVVJFR1JBRCwgWy0xLjAsIC0xLjAsIDEuMDEsIDAuMF0sIFsxLjAsIDEuMCwgMS4wMSwgMS4w
XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjIsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAu
MCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXhDdWJlTWlwbWFwU2hhZG93
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmVDdWJlU2hhZG93R3Jh
ZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAg
ICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVj
KCdzYW1wbGVyMmRhcnJheXNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5U
ZXhGdW5jdGlvbi5URVhUVVJFR1JBRCwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIu
MywgMy41LCAxLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4w
LCAwLjBdLCBbMC4yLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJy
YXlNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVy
ZTJEQXJyYXlTaGFkb3dHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjJkYXJyYXlzaGFkb3cnLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAt
MC41LCAwLjBdLCBbMS41LCAyLjMsIDMuNSwgMS4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgLTAuMiwgMC4wXSwgICAgZmFsc2UsIFsw
LCAwLCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheVNoYWRvd0dyYWQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpCisgICAgICAgICAgICBdOworICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlz
LCAndGV4dHVyZWdyYWQnLCAndGV4dHVyZUdyYWQoKSBUZXN0cycsIHRleHR1cmVHcmFkQ2FzZXMp
OworCisgICAgICAgICAgICAvLyB0ZXh0dXJlR3JhZE9mZnNldCgpIGNhc2VzCisgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
Q2FzZVNwZWM+fSAqLyB2YXIgdGV4dHVyZUdyYWRPZmZzZXRDYXNlcyA9IFsKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1w
bGVyMmRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRUdSQUQsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBd
LCBbMC4wLCAwLjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4w
LCAwLjAsIDAuMF0sICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJER3JhZE9mZnNldCwgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1w
bGVyMmRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRUdSQUQsIFstMC4yLCAtMC40LCAwLjAsIDAuMF0sIFsxLjUsIDIuMywgMC4wLCAwLjBd
LCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIC0wLjIsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAu
MCwgMC4wLCAwLjBdLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREdyYWRPZmZzZXQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnaXNh
bXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFR1JBRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFstMC4yLCAw
LjAsIDAuMF0sICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREdyYWRPZmZzZXQsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNhbXBsZXIy
ZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFR1JB
RCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAwLjAsIDAuMF0sIFswLjAsIDAu
MCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMiwgMC4w
XSwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyREdyYWRPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAgICAgICBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVyMmRhcnJh
eV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFR1JBRCwgWy0xLjIsIC0wLjQsIC0wLjUsIDAuMF0sIFsxLjUsIDIuMywgMy41LCAwLjBdLCBb
MC4wLCAwLjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBGaXhlZCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRBcnJheUdyYWRPZmZz
ZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3Bl
Yygnc2FtcGxlcjJkYXJyYXlfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAy
LjMsIDMuNSwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4yLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRB
cnJheU1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyREFycmF5R3JhZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0R3JhZENhc2VTcGVjKCdpc2FtcGxlcjJkYXJyYXknLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAtMC41LCAw
LjBdLCBbMS41LCAyLjMsIDMuNSwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgWy0wLjIsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWy04LCA3LCAw
XSwgICAgdGV4MkRBcnJheU1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlMkRBcnJheUdyYWRPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25U
ZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwgLTAu
NCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAu
MCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMiwgMC4wXSwgICAgdHJ1ZSwg
WzcsIC04LCAwXSwgICAgdGV4MkRBcnJheU1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVk
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFE
LCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwgMC4w
LCAwLjBdLCBbMC4yLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBd
LCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzRE1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREdyYWRPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFE
LCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwgMC4w
LCAwLjBdLCBbMC4wLCAtMC4yLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4w
XSwgICAgdHJ1ZSwgWzcsIDMsIC04XSwgICAgdGV4M0RNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zs
b2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVH
UkFELCBbLTEuMiwgLTEuNCwgMC4xLCAwLjBdLCBbMS41LCAyLjMsIDIuMywgMC4wXSwgWzAuMCwg
MC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMl0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCAgICB0cnVlLCBbMywgLTgsIDddLCAgICB0ZXgzRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUzREdyYWRPZmZzZXQsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ2lzYW1wbGVy
M2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdS
QUQsIFstMS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbLTAuMiwgMC4wLCAw
LjBdLCAgICB0cnVlLCBbLTgsIDcsIDNdLCAgICB0ZXgzRE1pcG1hcEludCwgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFst
MS4yLCAtMS40LCAwLjEsIDAuMF0sIFsxLjUsIDIuMywgMi4zLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjIsIDAuMF0sICAg
IHRydWUsIFs3LCAzLCAtOF0sICAgIHRleDNETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNhbXBsZXIzZCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFR1JBRCwgWy0xLjIs
IC0xLjQsIDAuMSwgMC4wXSwgWzEuNSwgMi4zLCAyLjMsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgLTAuMl0sICAgIHRy
dWUsIFszLCAtOCwgN10sICAgIHRleDNETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlM0RHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIyZHNoYWRvdycs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFR1JBRCwg
Wy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAxLjAsIDAuMF0sIFswLjAsIDAuMCwg
MC4wXSwgWzAuMiwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
ICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93R3JhZE9mZnNldCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIy
ZHNoYWRvdycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFR1JBRCwgWy0wLjIsIC0wLjQsIDAuMCwgMC4wXSwgWzEuNSwgMi4zLCAxLjAsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4yLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAu
MCwgMC4wXSwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93R3JhZE9mZnNldCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisgICAg
ICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3Bl
Yygnc2FtcGxlcjJkYXJyYXlzaGFkb3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRUdSQUQsIFstMS4yLCAtMC40LCAtMC41LCAwLjBdLCBbMS41LCAy
LjMsIDMuNSwgMS4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAu
MCwgMC4wXSwgWzAuMiwgMC4wLCAwLjBdLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAgICB0ZXgyREFy
cmF5TWlwbWFwU2hhZG93LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyREFycmF5U2hhZG93R3JhZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5c2hhZG93JywgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVHUkFELCBbLTEuMiwg
LTAuNCwgLTAuNSwgMC4wXSwgWzEuNSwgMi4zLCAzLjUsIDEuMF0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIC0wLjIsIDAuMF0sICAgIHRy
dWUsIFs3LCAtOCwgMF0sICAgIHRleDJEQXJyYXlNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEQXJyYXlTaGFkb3dHcmFkT2Zmc2V0LCAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdNRU5UKQorICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jcmVh
dGVDYXNlR3JvdXAodGhpcywgJ3RleHR1cmVncmFkb2Zmc2V0JywgJ3RleHR1cmVHcmFkT2Zmc2V0
KCkgVGVzdHMnLCB0ZXh0dXJlR3JhZE9mZnNldENhc2VzKTsKKworICAgICAgICAgICAgLy8gdGV4
dHVyZVByb2pHcmFkKCkgY2FzZXMKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmNDYXNlU3BlYz59ICovIHZhciB0ZXh0dXJl
UHJvakdyYWRDYXNlcyA9IFsKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVyMmRfdmVjM19maXhlZCcsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQzLCBbLTAu
MywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sICAg
IGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakdyYWQzLCBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWMzX2Zsb2F0
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9K
R1JBRDMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgLTAuMiwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwRmxvYXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakdyYWQzLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ2lzYW1wbGVy
MmRfdmVjMycsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhU
VVJFUFJPSkdSQUQzLCBbLTAuMywgLTAuNiwgMS41LCAwLjBdLCBbMi4yNSwgMy40NSwgMS41LCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBb
LTAuMiwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEludCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qR3JhZDMsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygndXNh
bXBsZXIyZF92ZWMzJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KR1JBRDMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAx
LjUsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMiwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBtYXBV
aW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pHcmFk
MywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAg
ICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNw
ZWMoJ3NhbXBsZXIyZF92ZWM0X2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCwgWy0wLjMsIC0wLjYsIDAuMCwgMS41XSwgWzIu
MjUsIDMuNDUsIDAuMCwgMS41XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4yLCAwLjAsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0
ZXgyRE1pcG1hcEZpeGVkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1
cmUyRFByb2pHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJP
VEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRH
cmFkQ2FzZVNwZWMoJ3NhbXBsZXIyZF92ZWM0X2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCwgWy0wLjMsIC0wLjYsIDAuMCwg
MS41XSwgWzIuMjUsIDMuNDUsIDAuMCwgMS41XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4y
LCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgZmFsc2UsIFswLCAw
LCAwXSwgICAgdGV4MkRNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LmV2YWxUZXh0dXJlMkRQcm9qR3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNh
c2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdpc2FtcGxlcjJkX3ZlYzQnLCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbLTAuMywgLTAuNiwg
MC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAs
IDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbLTAuMiwgMC4wLCAwLjBdLCAgICBmYWxzZSwg
WzAsIDAsIDBdLCAgICB0ZXgyRE1pcG1hcEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLmV2YWxUZXh0dXJlMkRQcm9qR3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzQnLCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbLTAuMywgLTAu
NiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCBbMC4wLCAwLjAsIDAuMF0sIFsw
LjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjIsIDAuMF0sICAgIGZhbHNl
LCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qR3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIzZF9maXhlZCcsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQsIFswLjks
IDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCBbMC4wLCAw
LjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwRml4ZWQsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakdyYWQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zsb2F0
JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9K
R1JBRCwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAtMC43
NV0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgLTAuMiwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBb
MC4wLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwRmxvYXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakdyYWQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAg
ICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdz
YW1wbGVyM2RfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0pHUkFELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0x
LjcsIC0xLjcsIC0wLjc1XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMl0sIFswLjAs
IDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgz
RE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUz
RFByb2pHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkZSQUdN
RU5UKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0
R3JhZENhc2VTcGVjKCdpc2FtcGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwg
Wy0xLjEzLCAtMS43LCAtMS43LCAtMC43NV0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sIFstMC4yLCAwLjAsIDAuMF0sICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleDNETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUzRFByb2pHcmFkLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZs
YWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5nZXRHcmFkQ2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAu
NzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAw
LjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4yLCAwLjBdLCAgICBmYWxzZSwgWzAs
IDAsIDBdLCAgICB0ZXgzRE1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5ldmFsVGV4dHVyZTNEUHJvakdyYWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5D
YXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCd1c2FtcGxlcjNkJywgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRCwgWzAuOSwgMS4wNSwgLTAu
MDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAtMC43NV0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgLTAuMl0sICAgIGZh
bHNlLCBbMCwgMCwgMF0sICAgIHRleDNETWlwbWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qR3JhZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLkNhc2VGbGFncy5GUkFHTUVOVCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1wbGVyMmRzaGFkb3cnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFE
LCBbMC4yLCAwLjYsIDAuMCwgLTEuNV0sIFstMi4yNSwgLTMuNDUsIC0xLjUsIC0xLjVdLCBbMC4w
LCAwLjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAs
IDAuMF0sICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJETWlwbWFwU2hhZG93LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFNoYWRvd1Byb2pHcmFkLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLlZFUlRFWCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2Ft
cGxlcjJkc2hhZG93JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KR1JBRCwgWzAuMiwgMC42LCAwLjAsIC0xLjVdLCBbLTIuMjUsIC0zLjQ1LCAt
MS41LCAtMS41XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwg
MC4wXSwgWzAuMCwgLTAuMiwgMC4wXSwgICAgZmFsc2UsIFswLCAwLCAwXSwgICAgdGV4MkRNaXBt
YXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hh
ZG93UHJvakdyYWQsICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3Mu
RlJBR01FTlQpCisgICAgICAgICAgICBdOworICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlzLCAndGV4dHVyZXByb2pncmFkJywgJ3Rl
eHR1cmVQcm9qR3JhZCgpIFRlc3RzJywgdGV4dHVyZVByb2pHcmFkQ2FzZXMpOworCisgICAgICAg
ICAgICAvLyB0ZXh0dXJlUHJvakdyYWRPZmZzZXQoKSBjYXNlcworICAgICAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY0Nhc2VTcGVj
Pn0gKi8gdmFyIHRleHR1cmVQcm9qR3JhZE9mZnNldENhc2VzID0gWworICAgICAgICAgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIy
ZF92ZWMzX2ZpeGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWFRVUkVQUk9KR1JBRDMsIFstMC4zLCAtMC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAx
LjUsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMiwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRNaXBtYXBG
aXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRQcm9qR3Jh
ZDNPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCks
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRD
YXNlU3BlYygnc2FtcGxlcjJkX3ZlYzNfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFEMywgWy0wLjMsIC0wLjYsIDEuNSwgMC4w
XSwgWzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4yLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWzcsIC04LCAw
XSwgICAgdGV4MkRNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXh0dXJlMkRQcm9qR3JhZDNPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnaXNhbXBsZXIyZF92ZWMzJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQUk9KR1JBRDMsIFstMC4zLCAt
MC42LCAxLjUsIDAuMF0sIFsyLjI1LCAzLjQ1LCAxLjUsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
WzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFstMC4yLCAwLjAsIDAuMF0sICAgIHRy
dWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pHcmFkM09mZnNldCwgZXMzZlNoYWRlclRleHR1cmVG
dW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCd1c2FtcGxlcjJkX3ZlYzMnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFE
MywgWy0wLjMsIC0wLjYsIDEuNSwgMC4wXSwgWzIuMjUsIDMuNDUsIDEuNSwgMC4wXSwgWzAuMCwg
MC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4yLCAw
LjBdLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1hcFVpbnQsIGVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakdyYWQzT2Zmc2V0LCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAg
ICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxl
cjJkX3ZlYzRfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rp
b24uVEVYVFVSRVBST0pHUkFELCBbLTAuMywgLTAuNiwgMC4wLCAxLjVdLCBbMi4yNSwgMy40NSwg
MC4wLCAxLjVdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjIsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAwLjAsIDAuMF0sICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJETWlwbWFw
Rml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEUHJvakdy
YWRPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCks
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRD
YXNlU3BlYygnc2FtcGxlcjJkX3ZlYzRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbLTAuMywgLTAuNiwgMC4wLCAxLjVd
LCBbMi4yNSwgMy40NSwgMC4wLCAxLjVdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIC0wLjIsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAwLjBdLCAgICB0cnVlLCBbNywgLTgsIDBd
LCAgICB0ZXgyRE1pcG1hcEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUyRFByb2pHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ2lzYW1wbGVyMmRfdmVjNCcsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQsIFstMC4zLCAtMC42
LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sIFswLjAsIDAuMCwgMC4wXSwgWzAu
MCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFstMC4yLCAwLjAsIDAuMF0sICAgIHRydWUs
IFstOCwgNywgMF0sICAgIHRleDJETWlwbWFwSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuZXZhbFRleHR1cmUyRFByb2pHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3VzYW1wbGVyMmRfdmVjNCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQsIFst
MC4zLCAtMC42LCAwLjAsIDEuNV0sIFsyLjI1LCAzLjQ1LCAwLjAsIDEuNV0sIFswLjAsIDAuMCwg
MC4wXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMiwgMC4wXSwg
ICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMuZXZhbFRleHR1cmUyRFByb2pHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygnc2FtcGxlcjNkX2Zp
eGVkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWFRVUkVQ
Uk9KR1JBRCwgWzAuOSwgMS4wNSwgLTAuMDgsIC0wLjc1XSwgWy0xLjEzLCAtMS43LCAtMS43LCAt
MC43NV0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMiwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0s
IFswLjAsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RNaXBtYXBGaXhl
ZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9qR3JhZE9m
ZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VT
cGVjKCdzYW1wbGVyM2RfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4
RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEu
MTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAtMC4yLCAwLjBd
LCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWzcsIDMsIC04XSwg
ICAgdGV4M0RNaXBtYXBGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxU
ZXh0dXJlM0RQcm9qR3JhZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNh
c2VGbGFncy5WRVJURVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIzZF9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQsIFswLjksIDEuMDUs
IC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywgLTEuNywgLTAuNzVdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4yXSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sICAg
IHRydWUsIFszLCAtOCwgN10sICAgIHRleDNETWlwbWFwRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakdyYWRPZmZzZXQsIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuRlJBR01FTlQpLAorICAgICAgICAgICAgICAgIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ2lzYW1wbGVyM2Qn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYVFVSRVBST0pH
UkFELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBbLTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1
XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWy0w
LjIsIDAuMCwgMC4wXSwgICAgdHJ1ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RNaXBtYXBJbnQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTNEUHJvakdyYWRPZmZzZXQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAg
ICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldEdyYWRDYXNlU3BlYygn
dXNhbXBsZXIzZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5U
RVhUVVJFUFJPSkdSQUQsIFswLjksIDEuMDUsIC0wLjA4LCAtMC43NV0sIFstMS4xMywgLTEuNywg
LTEuNywgLTAuNzVdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4w
LCAwLjBdLCBbMC4wLCAwLjIsIDAuMF0sICAgIHRydWUsIFs3LCAzLCAtOF0sICAgIHRleDNETWlw
bWFwVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlM0RQcm9q
R3JhZE9mZnNldCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5WRVJU
RVgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRH
cmFkQ2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYVFVSRVBST0pHUkFELCBbMC45LCAxLjA1LCAtMC4wOCwgLTAuNzVdLCBb
LTEuMTMsIC0xLjcsIC0xLjcsIC0wLjc1XSwgWzAuMCwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAu
MF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAtMC4yXSwgICAgdHJ1ZSwgWzMsIC04LCA3
XSwgICAgdGV4M0RNaXBtYXBVaW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZh
bFRleHR1cmUzRFByb2pHcmFkT2Zmc2V0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkZSQUdNRU5UKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRHcmFkQ2FzZVNwZWMoJ3NhbXBsZXIyZHNoYWRvdycsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhUVVJFUFJPSkdSQUQsIFswLjIs
IDAuNiwgMC4wLCAtMS41XSwgWy0yLjI1LCAtMy40NSwgLTEuNSwgLTEuNV0sIFswLjAsIDAuMCwg
MC4wXSwgWzAuMiwgMC4wLCAwLjBdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwg
ICAgdHJ1ZSwgWy04LCA3LCAwXSwgICAgdGV4MkRNaXBtYXBTaGFkb3csIGVzM2ZTaGFkZXJUZXh0
dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4dHVyZTJEU2hhZG93UHJvakdyYWRPZmZzZXQsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuVkVSVEVYKSwKKyAgICAgICAgICAg
ICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0R3JhZENhc2VTcGVjKCdzYW1w
bGVyMmRzaGFkb3cnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24u
VEVYVFVSRVBST0pHUkFELCBbMC4yLCAwLjYsIDAuMCwgLTEuNV0sIFstMi4yNSwgLTMuNDUsIC0x
LjUsIC0xLjVdLCBbMC4wLCAwLjAsIDAuMF0sIFswLjAsIDAuMCwgMC4wXSwgWzAuMCwgMC4wLCAw
LjBdLCBbMC4wLCAtMC4yLCAwLjBdLCAgICB0cnVlLCBbNywgLTgsIDBdLCAgICB0ZXgyRE1pcG1h
cFNoYWRvdywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXh0dXJlMkRTaGFk
b3dQcm9qR3JhZE9mZnNldCwgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5GUkFHTUVOVCkKKyAgICAgICAgICAgIF07CisgICAgICAgICAgICBlczNmU2hhZGVyVGV4
dHVyZUZ1bmN0aW9uVGVzdHMuY3JlYXRlQ2FzZUdyb3VwKHRoaXMsICd0ZXh0dXJlcHJvamdyYWRv
ZmZzZXQnLCAndGV4dHVyZVByb2pHcmFkT2Zmc2V0KCkgVGVzdHMnLCB0ZXh0dXJlUHJvakdyYWRP
ZmZzZXRDYXNlcyk7CisKKyAgICAgICAgICAgIC8vIHRleGVsRmV0Y2goKSBjYXNlcworICAgICAg
ICAgICAgLy8gXG5vdGUgTGV2ZWwgaXMgY29uc3RhbnQgYWNyb3NzIHF1YWQKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmND
YXNlU3BlYz59ICovIHZhciB0ZXhlbEZldGNoQ2FzZXMgPSBbCisgICAgICAgICAgICAgICAgZXMz
ZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRfZml4ZWQn
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwg
WzAuMCwgMC4wLCAwLjAsIDAuMF0sIFsyNTUuOSwgMjU1LjksIDAuMCwgMC4wXSwgICAgZmFsc2Us
ICAgIDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRFRleGVsRmV0Y2hG
aXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXhlbEZldGNoMkQsIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
MmRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
RUxGRVRDSCwgWzAuMCwgMC4wLCAwLjAsIDAuMF0sIFsxMjcuOSwgMTI3LjksIDAuMCwgMC4wXSwg
ICAgZmFsc2UsICAgIDEuMCwgICAgMS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyRFRl
eGVsRmV0Y2hGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXhlbEZl
dGNoMkQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVj
KCdpc2FtcGxlcjJkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWEVMRkVUQ0gsIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbNjMuOSwgNjMuOSwgMC4wLCAwLjBd
LCAgICBmYWxzZSwgICAgMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJE
VGV4ZWxGZXRjaEludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXhlbEZl
dGNoMkQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisg
ICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVj
KCd1c2FtcGxlcjJkJywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9u
LlRFWEVMRkVUQ0gsIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMTUuOSwgMTUuOSwgMC4wLCAwLjBd
LCAgICBmYWxzZSwgICAgNC4wLCAgICA0LjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJE
VGV4ZWxGZXRjaFVpbnQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4ZWxG
ZXRjaDJELCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAor
CisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VT
cGVjKCdzYW1wbGVyMmRhcnJheV9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5UZXhGdW5jdGlvbi5URVhFTEZFVENILCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzEyNy45LCAx
MjcuOSwgMy45LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAgICAwLjAsICAgIGZhbHNlLCBbMCwg
MCwgMF0sICAgIHRleDJEQXJyYXlUZXhlbEZldGNoRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5ldmFsVGV4ZWxGZXRjaDJEQXJyYXksIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyMmRhcnJheV9mbG9hdCcsIGVzM2ZT
aGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlvbi5URVhFTEZFVENILCBbMC4wLCAw
LjAsIDAuMCwgMC4wXSwgWzYzLjksIDYzLjksIDMuOSwgMC4wXSwgICAgZmFsc2UsICAgIDEuMCwg
ICAgMS4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgyREFycmF5VGV4ZWxGZXRjaEZsb2F0
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVsRmV0Y2gyREFycmF5LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAg
ICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBs
ZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRF
WEVMRkVUQ0gsIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMzEuOSwgMzEuOSwgMy45LCAwLjBdLCAg
ICBmYWxzZSwgICAgMi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDJEQXJy
YXlUZXhlbEZldGNoSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVs
RmV0Y2gyREFycmF5LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJP
VEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRD
YXNlU3BlYygndXNhbXBsZXIyZGFycmF5JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LlRleEZ1bmN0aW9uLlRFWEVMRkVUQ0gsIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMTUuOSwgMTUu
OSwgMy45LCAwLjBdLCAgICBmYWxzZSwgICAgMy4wLCAgICAzLjAsICAgIGZhbHNlLCBbMCwgMCwg
MF0sICAgIHRleDJEQXJyYXlUZXhlbEZldGNoVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXhlbEZldGNoMkRBcnJheSwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzLkNhc2VGbGFncy5CT1RIKSwKKworICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5nZXRDYXNlU3BlYygnc2FtcGxlcjNkX2ZpeGVkJywgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWEVMRkVUQ0gsIFswLjAsIDAuMCwgMC4w
LCAwLjBdLCBbNjMuOSwgMzEuOSwgMzEuOSwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4w
LCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRFRleGVsRmV0Y2hGaXhlZCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXhlbEZldGNoM0QsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVyM2RfZmxvYXQnLCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWzAuMCwg
MC4wLCAwLjAsIDAuMF0sIFszMS45LCAxNS45LCAxNS45LCAwLjBdLCAgICBmYWxzZSwgICAgMS4w
LCAgICAxLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNEVGV4ZWxGZXRjaEZsb2F0LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVsRmV0Y2gzRCwgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyM2QnLCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWzAu
MCwgMC4wLCAwLjAsIDAuMF0sIFsxNS45LCAgNy45LCAgNy45LCAwLjBdLCAgICBmYWxzZSwgICAg
Mi4wLCAgICAyLjAsICAgIGZhbHNlLCBbMCwgMCwgMF0sICAgIHRleDNEVGV4ZWxGZXRjaEludCwg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2YWxUZXhlbEZldGNoM0QsIGVzM2ZTaGFk
ZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjNkJywg
ZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWEVMRkVUQ0gsIFsw
LjAsIDAuMCwgMC4wLCAwLjBdLCBbNjMuOSwgMzEuOSwgMzEuOSwgMC4wXSwgICAgZmFsc2UsICAg
IDAuMCwgICAgMC4wLCAgICBmYWxzZSwgWzAsIDAsIDBdLCAgICB0ZXgzRFRleGVsRmV0Y2hVaW50
LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVsRmV0Y2gzRCwgICAgICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCkKKyAgICAgICAg
ICAgIF07CisgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY3JlYXRl
Q2FzZUdyb3VwKHRoaXMsICd0ZXhlbGZldGNoJywgJ3RleGVsRmV0Y2goKSBUZXN0cycsIHRleGVs
RmV0Y2hDYXNlcyk7CisKKyAgICAgICAgICAgIC8vIHRleGVsRmV0Y2hPZmZzZXQoKSBjYXNlcwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY0Nhc2VTcGVjPn0gKi8gdmFyIHRleGVsRmV0Y2hPZmZzZXRDYXNlcyA9IFsKKyAg
ICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMo
J3NhbXBsZXIyZF9maXhlZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5j
dGlvbi5URVhFTEZFVENILCBbOC4wLCAtNy4wLCAwLjAsIDAuMF0sIFsyNjMuOSwgMjQ4LjksIDAu
MCwgMC4wXSwgICAgZmFsc2UsICAgIDAuMCwgICAgMC4wLCAgICB0cnVlLCBbLTgsIDcsIDBdLCAg
ICB0ZXgyRFRleGVsRmV0Y2hGaXhlZCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXhlbEZldGNoMkQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3Mu
Qk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdl
dENhc2VTcGVjKCdzYW1wbGVyMmRfZmxvYXQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWy03LjAsIDguMCwgMC4wLCAwLjBdLCBbMTIwLjks
IDEzNS45LCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAxLjAsICAgIDEuMCwgICAgdHJ1ZSwgWzcs
IC04LCAwXSwgICAgdGV4MkRUZXhlbEZldGNoRmxvYXQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5ldmFsVGV4ZWxGZXRjaDJELCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Q2FzZUZsYWdzLkJPVEgpLAorICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5nZXRDYXNlU3BlYygnaXNhbXBsZXIyZCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXhGdW5jdGlvbi5URVhFTEZFVENILCBbOC4wLCAtNy4wLCAwLjAsIDAuMF0sIFs3
MS45LCA1Ni45LCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICAyLjAsICAgIDIuMCwgICAgdHJ1ZSwg
Wy04LCA3LCAwXSwgICAgdGV4MkRUZXhlbEZldGNoSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZXZhbFRleGVsRmV0Y2gyRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
LkNhc2VGbGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyMmQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWy03LjAsIDguMCwgMC4wLCAwLjBdLCBb
OC45LCAyMy45LCAwLjAsIDAuMF0sICAgIGZhbHNlLCAgICA0LjAsICAgIDQuMCwgICAgdHJ1ZSwg
WzcsIC04LCAwXSwgICAgdGV4MkRUZXhlbEZldGNoVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmV2YWxUZXhlbEZldGNoMkQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0
cy5DYXNlRmxhZ3MuQk9USCksCisKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMuZ2V0Q2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2ZpeGVkJywgZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1bmN0aW9uLlRFWEVMRkVUQ0gsIFs4LjAsIC03LjAs
IDAuMCwgMC4wXSwgWzEzNS45LCAxMjAuOSwgMy45LCAwLjBdLCAgICBmYWxzZSwgICAgMC4wLCAg
ICAwLjAsICAgIHRydWUsIFstOCwgNywgMF0sICAgIHRleDJEQXJyYXlUZXhlbEZldGNoRml4ZWQs
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4ZWxGZXRjaDJEQXJyYXksIGVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
MmRhcnJheV9mbG9hdCcsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXhGdW5jdGlv
bi5URVhFTEZFVENILCBbLTcuMCwgOC4wLCAwLjAsIDAuMF0sIFs1Ni45LCA3MS45LCAzLjksIDAu
MF0sICAgIGZhbHNlLCAgICAxLjAsICAgIDEuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4
MkRBcnJheVRleGVsRmV0Y2hGbG9hdCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmV2
YWxUZXhlbEZldGNoMkRBcnJheSwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0Q2FzZVNwZWMoJ2lzYW1wbGVyMmRhcnJheScsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cy5UZXhGdW5jdGlvbi5URVhFTEZFVENILCBbOC4wLCAtNy4wLCAwLjAsIDAuMF0sIFsz
OS45LCAyNC45LCAzLjksIDAuMF0sICAgIGZhbHNlLCAgICAyLjAsICAgIDIuMCwgICAgdHJ1ZSwg
Wy04LCA3LCAwXSwgICAgdGV4MkRBcnJheVRleGVsRmV0Y2hJbnQsIGVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cy5ldmFsVGV4ZWxGZXRjaDJEQXJyYXksIGVzM2ZTaGFkZXJUZXh0dXJlRnVu
Y3Rpb25UZXN0cy5DYXNlRmxhZ3MuQk9USCksCisgICAgICAgICAgICAgICAgZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCd1c2FtcGxlcjJkYXJyYXknLCBlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWy03LjAsIDgu
MCwgMC4wLCAwLjBdLCBbOC45LCAyMy45LCAzLjksIDAuMF0sICAgIGZhbHNlLCAgICAzLjAsICAg
IDMuMCwgICAgdHJ1ZSwgWzcsIC04LCAwXSwgICAgdGV4MkRBcnJheVRleGVsRmV0Y2hVaW50LCBl
czNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuZXZhbFRleGVsRmV0Y2gyREFycmF5LCBlczNm
U2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAorCisgICAgICAgICAg
ICAgICAgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmdldENhc2VTcGVjKCdzYW1wbGVy
M2RfZml4ZWQnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4RnVuY3Rpb24uVEVY
RUxGRVRDSCwgWzguMCwgLTcuMCwgLTMuMCwgMC4wXSwgWzcxLjksIDI0LjksIDI4LjksIDAuMF0s
ICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04LCA3LCAzXSwgICAgdGV4M0RU
ZXhlbEZldGNoRml4ZWQsIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ldmFsVGV4ZWxG
ZXRjaDNELCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuQ2FzZUZsYWdzLkJPVEgpLAor
ICAgICAgICAgICAgICAgIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5nZXRDYXNlU3Bl
Yygnc2FtcGxlcjNkX2Zsb2F0JywgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlRleEZ1
bmN0aW9uLlRFWEVMRkVUQ0gsIFstNy4wLCAtMy4wLCA4LjAsIDAuMF0sIFsyNC45LCAxMi45LCAy
My45LCAwLjBdLCAgICBmYWxzZSwgICAgMS4wLCAgICAxLjAsICAgIHRydWUsIFs3LCAzLCAtOF0s
ICAgIHRleDNEVGV4ZWxGZXRjaEZsb2F0LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
ZXZhbFRleGVsRmV0Y2gzRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VGbGFn
cy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
Z2V0Q2FzZVNwZWMoJ2lzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMu
VGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWy0zLjAsIDguMCwgLTcuMCwgMC4wXSwgWzEyLjksIDE1
LjksICAwLjksIDAuMF0sICAgIGZhbHNlLCAgICAyLjAsICAgIDIuMCwgICAgdHJ1ZSwgWzMsIC04
LCA3XSwgICAgdGV4M0RUZXhlbEZldGNoSW50LCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZXZhbFRleGVsRmV0Y2gzRCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLkNhc2VG
bGFncy5CT1RIKSwKKyAgICAgICAgICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuZ2V0Q2FzZVNwZWMoJ3VzYW1wbGVyM2QnLCBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMuVGV4RnVuY3Rpb24uVEVYRUxGRVRDSCwgWzguMCwgLTcuMCwgLTMuMCwgMC4wXSwgWzcxLjks
IDI0LjksIDI4LjksIDAuMF0sICAgIGZhbHNlLCAgICAwLjAsICAgIDAuMCwgICAgdHJ1ZSwgWy04
LCA3LCAzXSwgICAgdGV4M0RUZXhlbEZldGNoVWludCwgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLmV2YWxUZXhlbEZldGNoM0QsICAgICAgICBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9u
VGVzdHMuQ2FzZUZsYWdzLkJPVEgpCisgICAgICAgICAgICBdOworICAgICAgICAgICAgZXMzZlNo
YWRlclRleHR1cmVGdW5jdGlvblRlc3RzLmNyZWF0ZUNhc2VHcm91cCh0aGlzLCAndGV4ZWxmZXRj
aG9mZnNldCcsICd0ZXhlbEZldGNoT2Zmc2V0KCkgVGVzdHMnLCB0ZXhlbEZldGNoT2Zmc2V0Q2Fz
ZXMpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlU2l6ZSgpIGNhc2VzCisgICAgICAgICAgICAv
KioKKyAgICAgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAgICAgICAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lCisgICAgICAgICAgICAgKiBAcGFy
YW0gIHtzdHJpbmd9IHNhbXBsZXJOYW1lCisgICAgICAgICAgICAgKiBAcGFyYW0gIHtlczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNwZWN9IHRleHR1cmVTcGVjCisgICAgICAg
ICAgICAgKi8KKyAgICAgICAgICAgIHZhciBUZXh0dXJlU2l6ZUNhc2VTcGVjID0gZnVuY3Rpb24o
bmFtZSwgc2FtcGxlck5hbWUsIHRleHR1cmVTcGVjKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHRoaXMuc2FtcGxlck5hbWUgPSBzYW1wbGVyTmFtZTsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5UZXh0dXJl
U3BlY30gKi8gdGhpcy50ZXh0dXJlU3BlYyA9IHRleHR1cmVTcGVjOworICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxUZXh0dXJlU2l6ZUNhc2VTcGVjPn0gKi8g
dmFyICB0ZXh0dXJlU2l6ZUNhc2VzID0gWworICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6
ZUNhc2VTcGVjKCdzYW1wbGVyMmRfZml4ZWQnLCAnc2FtcGxlcjJEJywgdGV4MkRGaXhlZCksCisg
ICAgICAgICAgICAgICAgbmV3IFRleHR1cmVTaXplQ2FzZVNwZWMoJ3NhbXBsZXIyZF9mbG9hdCcs
ICdzYW1wbGVyMkQnLCB0ZXgyREZsb2F0KSwKKyAgICAgICAgICAgICAgICBuZXcgVGV4dHVyZVNp
emVDYXNlU3BlYygnaXNhbXBsZXIyZCcsICdpc2FtcGxlcjJEJywgdGV4MkRJbnQpLAorICAgICAg
ICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCd1c2FtcGxlcjJkJywgJ3VzYW1wbGVy
MkQnLCB0ZXgyRFVpbnQpLAorICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVj
KCdzYW1wbGVyMmRzaGFkb3cnLCAnc2FtcGxlcjJEU2hhZG93JywgdGV4MkRTaGFkb3cpLAorICAg
ICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCdzYW1wbGVyM2RfZml4ZWQnLCAn
c2FtcGxlcjNEJywgdGV4M0RGaXhlZCksCisgICAgICAgICAgICAgICAgbmV3IFRleHR1cmVTaXpl
Q2FzZVNwZWMoJ3NhbXBsZXIzZF9mbG9hdCcsICdzYW1wbGVyM0QnLCB0ZXgzREZsb2F0KSwKKyAg
ICAgICAgICAgICAgICBuZXcgVGV4dHVyZVNpemVDYXNlU3BlYygnaXNhbXBsZXIzZCcsICdpc2Ft
cGxlcjNEJywgdGV4M0RJbnQpLAorICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VT
cGVjKCd1c2FtcGxlcjNkJywgJ3VzYW1wbGVyM0QnLCB0ZXgzRFVpbnQpLAorICAgICAgICAgICAg
ICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCdzYW1wbGVyY3ViZV9maXhlZCcsICdzYW1wbGVy
Q3ViZScsIHRleEN1YmVGaXhlZCksCisgICAgICAgICAgICAgICAgbmV3IFRleHR1cmVTaXplQ2Fz
ZVNwZWMoJ3NhbXBsZXJjdWJlX2Zsb2F0JywgJ3NhbXBsZXJDdWJlJywgdGV4Q3ViZUZsb2F0KSwK
KyAgICAgICAgICAgICAgICBuZXcgVGV4dHVyZVNpemVDYXNlU3BlYygnaXNhbXBsZXJjdWJlJywg
J2lzYW1wbGVyQ3ViZScsIHRleEN1YmVJbnQpLAorICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJl
U2l6ZUNhc2VTcGVjKCd1c2FtcGxlcmN1YmUnLCAndXNhbXBsZXJDdWJlJywgdGV4Q3ViZVVpbnQp
LAorICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCdzYW1wbGVyY3ViZXNo
YWRvdycsICdzYW1wbGVyQ3ViZVNoYWRvdycsIHRleEN1YmVTaGFkb3cpLAorICAgICAgICAgICAg
ICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCdzYW1wbGVyMmRhcnJheV9maXhlZCcsICdzYW1w
bGVyMkRBcnJheScsIHRleDJEQXJyYXlGaXhlZCksCisgICAgICAgICAgICAgICAgbmV3IFRleHR1
cmVTaXplQ2FzZVNwZWMoJ3NhbXBsZXIyZGFycmF5X2Zsb2F0JywgJ3NhbXBsZXIyREFycmF5Jywg
dGV4MkRBcnJheUZsb2F0KSwKKyAgICAgICAgICAgICAgICBuZXcgVGV4dHVyZVNpemVDYXNlU3Bl
YygnaXNhbXBsZXIyZGFycmF5JywgJ2lzYW1wbGVyMkRBcnJheScsIHRleDJEQXJyYXlJbnQpLAor
ICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCd1c2FtcGxlcjJkYXJyYXkn
LCAndXNhbXBsZXIyREFycmF5JywgdGV4MkRBcnJheVVpbnQpLAorICAgICAgICAgICAgICAgIG5l
dyBUZXh0dXJlU2l6ZUNhc2VTcGVjKCdzYW1wbGVyMmRhcnJheXNoYWRvdycsICdzYW1wbGVyMkRB
cnJheVNoYWRvdycsIHRleDJEQXJyYXlTaGFkb3cpCisgICAgICAgICAgICBdOworCisgICAgICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZ3JvdXAgPSB0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KCd0ZXh0dXJlc2l6ZScsICd0ZXh0dXJlU2l6ZSgpIFRlc3RzJyk7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoZ3JvdXApOworCisgICAgICAgICAgICBmb3Ig
KHZhciBuZHggPSAwOyBuZHggPCB0ZXh0dXJlU2l6ZUNhc2VzLmxlbmd0aDsgKytuZHgpIHsKKyAg
ICAgICAgICAgICAgICBncm91cC5hZGRDaGlsZChuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLlRleHR1cmVTaXplQ2FzZSh0ZXh0dXJlU2l6ZUNhc2VzW25keF0ubmFtZSArICdfdmVy
dGV4JywgICcnLCB0ZXh0dXJlU2l6ZUNhc2VzW25keF0uc2FtcGxlck5hbWUsIHRleHR1cmVTaXpl
Q2FzZXNbbmR4XS50ZXh0dXJlU3BlYywgdHJ1ZSkpOworICAgICAgICAgICAgICAgIGdyb3VwLmFk
ZENoaWxkKG5ldyBlczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuVGV4dHVyZVNpemVDYXNl
KHRleHR1cmVTaXplQ2FzZXNbbmR4XS5uYW1lICsgJ19mcmFnbWVudCcsICcnLCB0ZXh0dXJlU2l6
ZUNhc2VzW25keF0uc2FtcGxlck5hbWUsIHRleHR1cmVTaXplQ2FzZXNbbmR4XS50ZXh0dXJlU3Bl
YywgZmFsc2UpKTsKKyAgICAgICAgICAgIH0KKworICAgIH07CisKKyAgICAvKioKKyAgICAqIFJ1
biB0ZXN0CisgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9IGNvbnRleHQKKyAg
ICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPj19IHJhbmdlIFRlc3QgcmFuZ2UKKyAgICAqLworICAg
IGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0LCBy
YW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisKKyAgICAgICAgY29uc3QgY2FudmFzID0g
Z2wuY2FudmFzOworICAgICAgICBjYW52YXMud2lkdGggPSBjYW52YXNXSDsKKyAgICAgICAgY2Fu
dmFzLmhlaWdodCA9IGNhbnZhc1dIOworCisgICAgICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJh
bWV0ZXJzCisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAgICAg
c3RhdGUuc2V0Um9vdChuZXcgZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzKCkpOworICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICBz
dGF0ZS5zZXRSYW5nZShyYW5nZSk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3Jp
cHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHN0
YXRlLnRlc3RDYXNlcy5mdWxsTmFtZSgpKTsKKyAgICAgICAgZGVzY3JpcHRpb24oc3RhdGUudGVz
dENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAv
L1J1biB0ZXN0IGNhc2VzCisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsK
KyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
T3B0aW9ucygnRmFpbGVkIHRvIGVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ydW4gdGVz
dHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7
CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU3Ry
aW5nUXVlcnlUZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU3RyaW5nUXVlcnlUZXN0cy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZTkwZmY1NzZiOGRjNjVhOGZhN2U0ZDMwMzc5MDc3YWNiMjYxNjU4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZTdHJpbmdRdWVyeVRlc3RzLmpzCkBAIC0wLDAgKzEs
MTExIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dy
YW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTdHJpbmdRdWVyeVRlc3RzJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmQXBpQ2FzZScpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAgIHZh
ciBlczNmU3RyaW5nUXVlcnlUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlN0cmluZ1F1ZXJ5
VGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZTsKKyAgICB2YXIgZXMzZkFwaUNhc2UgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZBcGlDYXNlOwor
CisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0KKyAgICAqLworICAgIGVzM2ZTdHJpbmdRdWVyeVRlc3RzLlN0cmluZ1F1ZXJ5
VGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0
aGlzLCAnc3RyaW5nJywgJ1N0cmluZyBRdWVyeSB0ZXN0cycpOworICAgIH07CisKKyAgICBlczNm
U3RyaW5nUXVlcnlUZXN0cy5TdHJpbmdRdWVyeVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmU3RyaW5nUXVlcnlU
ZXN0cy5TdHJpbmdRdWVyeVRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTdHJpbmdR
dWVyeVRlc3RzLlN0cmluZ1F1ZXJ5VGVzdHM7CisKKyAgICBlczNmU3RyaW5nUXVlcnlUZXN0cy5T
dHJpbmdRdWVyeVRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRo
aXMuYWRkQ2hpbGQobmV3IGVzM2ZBcGlDYXNlLkFwaUNhc2VDYWxsYmFjaygncmVuZGVyZXInLCAn
UkVOREVSRVInLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgc3RyaW5nID0gLyoq
IEB0eXBlIHtzdHJpbmd9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVOREVSRVIpKTsKKyAgICAg
ICAgICAgIHRoaXMuY2hlY2soc3RyaW5nICE9PSBudWxsLAorICAgICAgICAgICAgICAgICdHb3Qg
aW52YWxpZCBzdHJpbmc6ICcgKyBzdHJpbmcpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGhp
cy5hZGRDaGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCd2ZW5kb3InLCAnVkVO
RE9SJywgZ2wsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHN0cmluZyA9IC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLlZFTkRPUikpOworICAgICAgICAgICAg
dGhpcy5jaGVjayhzdHJpbmcgIT09IG51bGwsCisgICAgICAgICAgICAgICAgJ0dvdCBpbnZhbGlk
IHN0cmluZzogJyArIHN0cmluZyk7CisgICAgICAgIH0pKTsKKworICAgICAgICB0aGlzLmFkZENo
aWxkKG5ldyBlczNmQXBpQ2FzZS5BcGlDYXNlQ2FsbGJhY2soJ3ZlcnNpb24nLCAnVkVSU0lPTics
IGdsLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBzdHJpbmcgPSAvKiogQHR5cGUge3N0
cmluZ30gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5WRVJTSU9OKSk7CisgICAgICAgICAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdmFyIHJlZmVyZW5jZVN0cmluZyA9ICdXZWJHTCAyLjAnOworCisg
ICAgICAgICAgICB0aGlzLmNoZWNrKHN0cmluZyAhPT0gbnVsbCAmJiBzdHJpbmcuaW5kZXhPZihy
ZWZlcmVuY2VTdHJpbmcpID09PSAwLAorICAgICAgICAgICAgICAgICdHb3QgaW52YWxpZCBzdHJp
bmcgcHJlZml4OiAnICsgc3RyaW5nICsgJyBleHBlY3RlZDogJyArIHJlZmVyZW5jZVN0cmluZyk7
CisgICAgICAgIH0pKTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmQXBpQ2FzZS5B
cGlDYXNlQ2FsbGJhY2soJ3NoYWRpbmdfbGFuZ3VhZ2VfdmVyc2lvbicsICdTSEFESU5HX0xBTkdV
QUdFX1ZFUlNJT04nLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgc3RyaW5nID0g
LyoqIEB0eXBlIHtzdHJpbmd9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuU0hBRElOR19MQU5HVUFH
RV9WRVJTSU9OKSk7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHJlZmVy
ZW5jZVN0cmluZyA9ICdXZWJHTCBHTFNMIEVTIDMuMDAnOworCisgICAgICAgICAgICB0aGlzLmNo
ZWNrKHN0cmluZyAhPT0gbnVsbCwgJ0dvdCBpbnZhbGlkIHN0cmluZycpOworICAgICAgICAgICAg
dGhpcy5jaGVjayhzdHJpbmcuaW5kZXhPZihyZWZlcmVuY2VTdHJpbmcpID09PSAwLCAnR290IGlu
dmFsaWQgc3RyaW5nIHByZWZpeCcpOworICAgICAgICB9KSk7CisKKyAgICAgICAgdGhpcy5hZGRD
aGlsZChuZXcgZXMzZkFwaUNhc2UuQXBpQ2FzZUNhbGxiYWNrKCdleHRlbnNpb25zJywgJ0VYVEVO
U0lPTlMnLCBnbCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0
cmluZz59ICovIHZhciBleHRlbnNpb25zID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwor
ICAgICAgICAgICAgdGhpcy5jaGVjayhleHRlbnNpb25zICE9PSBudWxsLCAnR290IGludmFsaWQg
c3RyaW5nJyk7CisKKyAgICAgICAgICAgIC8vIFtkYWddIGNoZWNrIHRoYXQgYWxsIGV4dGVuc2lv
bnMgZnJvbSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgYXJlIGZvdW5kIHVzaW5nIGdsLmdl
dEV4dGVuc2lvbigpCisgICAgICAgICAgICBmb3IgKHZhciBpIGluIGV4dGVuc2lvbnMpIHsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIGV4dGVuc2lvbiA9IGdsLmdl
dEV4dGVuc2lvbihleHRlbnNpb25zW2ldKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKGV4
dGVuc2lvbiAhPT0gbnVsbCwgICdBZHZlcnRpc2VkIGV4dGVuc2lvbiAnICsgZXh0ZW5zaW9uc1tp
XSArICcgbm90IGZvdW5kJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFtkYWdd
IGNoZWNrIHRoYXQgZ2wuZ2V0RXh0ZW5zaW9uKCkgcmV0dXJucyBudWxsIGZvciBpdGVtcyBub3Qg
aW4gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCisgICAgICAgICAgICB0aGlzLmNoZWNrKGds
LmdldEV4dGVuc2lvbignUmFuZG9tX1N0cmluZycpID09PSBudWxsLCAnRXh0ZW5zaW9uIHF1ZXJ5
IG1ldGhvZHMgYXJlIG5vdCBjb25zaXN0ZW50LicpOworICAgICAgICB9KSk7CisKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBSdW4gdGVzdAorICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdD
b250ZXh0fSBjb250ZXh0CisgICAgKi8KKyAgICBlczNmU3RyaW5nUXVlcnlUZXN0cy5ydW4gPSBm
dW5jdGlvbihjb250ZXh0KSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQg
dXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2Uu
cnVubmVyOworICAgICAgICBzdGF0ZS5zZXRSb290KG5ldyBlczNmU3RyaW5nUXVlcnlUZXN0cy5T
dHJpbmdRdWVyeVRlc3RzKCkpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0
aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZShzdGF0
ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RD
YXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9S
dW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9w
dGlvbnMoJ0ZhaWxlZCB0byBlczNmU3RyaW5nUXVlcnlUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7
CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAgIH0K
KyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmU3luY1Rlc3RzLmpzIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2VzM2ZTeW5jVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQxODg0NWQ5ZWIyNDIyMTdl
ZDNkYTczYjVmZGVmZTIzZmU0ZTdkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
U3luY1Rlc3RzLmpzCkBAIC0wLDAgKzEsMzMwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRy
YXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJp
Z2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
ICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisg
KgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAq
CisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTeW5jVGVzdHMn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigp
IHsKKyAgICB2YXIgZXMzZlN5bmNUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlN5bmNUZXN0
czsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwor
ICAgIHZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAg
IHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFt
OworICAgIHZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOwor
CisgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyBlczNmU3luY1Rlc3RzLk5VTV9DQVNFX0lURVJB
VElPTlMgPSA1OworICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gZXMzZlN5bmNUZXN0cy5NQVhf
VkVSSUZZX1dBSVQgPSA1OworCisgICAgLyoqCisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBl
czNmU3luY1Rlc3RzLldhaXRDb21tYW5kID0geworICAgICAgICBXQUlUX1NZTkM6IDEsCisgICAg
ICAgIENMSUVOVF9XQUlUX1NZTkM6IDIKKyAgICB9OworCisgICAgLyoqIEBlbnVtCisgICAgICov
CisgICAgZXMzZlN5bmNUZXN0cy5DYXNlT3B0aW9ucyA9IHsKKyAgICAgICAgRkxVU0hfQkVGT1JF
X1dBSVQ6IDEsCisgICAgICAgIEZJTklTSF9CRUZPUkVfV0FJVDogMgorICAgIH07CisKKyAgICAv
KiogQGVudW0KKyAgICAgKi8KKyAgICBlczNmU3luY1Rlc3RzLlN0YXRlID0geworICAgICAgICBE
UkFXOiAwLAorICAgICAgICBWRVJJRlk6IDEsCisgICAgICAgIEZJTklTSDogMgorICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENh
c2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtUHJpbWl0aXZl
cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0Q29tbWFuZAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB3YWl0RmxhZ3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBvcHRpb25zCisgICAgICovCisgICAgZXMzZlN5bmNUZXN0cy5GZW5jZVN5
bmNDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIG51bVByaW1pdGl2ZXMsIHdhaXRD
b21tYW5kLCB3YWl0RmxhZ3MsIHRpbWVvdXQsIG9wdGlvbnMpIHsKKyAgICAgICAgdGN1VGVzdENh
c2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtUHJpbWl0aXZlcyA9IG51bVByaW1pdGl2ZXM7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fd2FpdENvbW1hbmQgPSB3YWl0Q29t
bWFuZDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV93YWl0RmxhZ3MgPSB3
YWl0RmxhZ3M7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGltZW91dCA9
IHRpbWVvdXQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fY2FzZU9wdGlv
bnMgPSBvcHRpb25zOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFk
ZXJQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xTeW5jfSAqLyB0aGlzLm1fc3luY09iamVjdCA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB0aGlzLm1faXRlck5keCA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7ZGVS
YW5kb20uUmFuZG9tfSAqLyB0aGlzLm1fcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmlu
Zy5kZVN0cmluZ0hhc2godGhpcy5uYW1lKSk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlN5bmNU
ZXN0cy5TdGF0ZX0gKi8gdGhpcy5tX3N0YXRlID0gZXMzZlN5bmNUZXN0cy5TdGF0ZS5EUkFXOwor
ICAgIH07CisKKyAgICBlczNmU3luY1Rlc3RzLkZlbmNlU3luY0Nhc2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZTeW5j
VGVzdHMuRmVuY2VTeW5jQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmU3luY1Rlc3Rz
LkZlbmNlU3luY0Nhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtUHJp
bWl0aXZlcworICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQKKyAgICAgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLworICAgIGVzM2ZTeW5jVGVzdHMuZ2VuZXJhdGVW
ZXJ0aWNlcyA9IGZ1bmN0aW9uKG51bVByaW1pdGl2ZXMsIHJuZCkgeworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBkc3QgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBudW1WZXJ0aWNlcyA9IDMgKiBudW1QcmltaXRpdmVzOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVmVydGljZXM7IGkrKykgeworICAgICAgICAgICAgZHN0
LnB1c2gocm5kLmdldEZsb2F0KC0xLjAsIDEuMCkpOyAvLyB4CisgICAgICAgICAgICBkc3QucHVz
aChybmQuZ2V0RmxvYXQoLTEuMCwgMS4wKSk7IC8vIHkKKyAgICAgICAgICAgIGRzdC5wdXNoKHJu
ZC5nZXRGbG9hdCgwLjAsIDEuMCkpOyAvLyB6CisgICAgICAgICAgICBkc3QucHVzaCgxLjApOyAv
LyB3CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9OworCisgICAgZXMzZlN5
bmNUZXN0cy5GZW5jZVN5bmNDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydFNoYWRlclNvdXJjZSA9ICcjdmVyc2lv
biAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBt
ZWRpdW1wIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICdcbicgKworICAg
ICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAne1xu
JyArCisgICAgICAgICAgICAgICAgJyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsK
KyAgICAgICAgICAgICAgICAnfVxuJzsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGZyYWdTaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtc
bicgKworICAgICAgICAgICAgICAgICAgICAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3Zv
aWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICAgICAne1xuJyArCisgICAgICAg
ICAgICAgICAgICAgICcgICAgb19jb2xvciA9IHZlYzQoMC4yNSwgMC41LCAwLjc1LCAxLjApO1xu
JyArCisgICAgICAgICAgICAgICAgICAgICd9XG4nOworCisgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoIXRoaXMubV9wcm9ncmFtLCAnUHJvZ3JhbSBzaG91bGQgYmUgbnVsbC4nLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVy
UHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydFNoYWRl
clNvdXJjZSwgZnJhZ1NoYWRlclNvdXJjZSkpOworCisgICAgICAgIGlmICghdGhpcy5tX3Byb2dy
YW0uaXNPaygpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gY29tcGls
ZSBzaGFkZXIgcHJvZ3JhbScpOworICAgIH07CisKKyAgICBlczNmU3luY1Rlc3RzLkZlbmNlU3lu
Y0Nhc2UucHJvdG90eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5t
X3Byb2dyYW0pCisgICAgICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisKKyAgICAgICAg
aWYgKHRoaXMubV9zeW5jT2JqZWN0KSB7CisgICAgICAgICAgICBnbC5kZWxldGVTeW5jKHRoaXMu
bV9zeW5jT2JqZWN0KTsKKyAgICAgICAgICAgIHRoaXMubV9zeW5jT2JqZWN0ID0gbnVsbDsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZTeW5jVGVzdHMuRmVuY2VTeW5jQ2FzZS5w
cm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciB2ZXJ0aWNlcyA9IFtdOworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgaGVhZGVyID0gJ0Nhc2UgaXRlcmF0aW9uICcgKyAodGhpcy5tX2l0ZXJOZHggKyAx
KSArICcgLyAnICsgZXMzZlN5bmNUZXN0cy5OVU1fQ0FTRV9JVEVSQVRJT05TOworICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZShoZWFkZXIpOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
dGhpcy5tX3Byb2dyYW0gIT09IG51bGwsICdFeHBlY3RlZCBwcm9ncmFtJywgZmFsc2UsIHRydWUp
OworICAgICAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSk7Cisg
ICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigw
LjMsIDAuMywgMC4zLCAxLjApOworICAgICAgICBnbC5jbGVhckRlcHRoKDEuMCk7CisgICAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKwor
ICAgICAgICAvLyBHZW5lcmF0ZSB2ZXJ0aWNlcworCisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KDApOworICAgICAgICB2ZXJ0aWNlcyA9IGVzM2ZTeW5jVGVzdHMuZ2VuZXJhdGVW
ZXJ0aWNlcyh0aGlzLm1fbnVtUHJpbWl0aXZlcywgdGhpcy5tX3JuZCk7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTEJ1ZmZlcn0gKi8gdmFyIHZlcnRleEdMQnVmZmVyID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhHTEJ1
ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQz
MkFycmF5KHZlcnRpY2VzKSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJQb2ludGVyKDAsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgLy8gRHJh
dworCisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB2ZXJ0aWNlcy5sZW5n
dGggLyA0KTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1ByaW1pdGl2ZXMgZHJhd24u
Jyk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHN5bmMgb2JqZWN0CisKKyAgICAgICAgdGhpcy5tX3N5
bmNPYmplY3QgPSBnbC5mZW5jZVN5bmMoZ2wuU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDAp
OworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnU3luYyBvYmplY3QgY3JlYXRlZCcpOwor
CisgICAgICAgIGlmICh0aGlzLm1fY2FzZU9wdGlvbnMgJiBlczNmU3luY1Rlc3RzLkNhc2VPcHRp
b25zLkZMVVNIX0JFRk9SRV9XQUlUKQorICAgICAgICAgICAgZ2wuZmx1c2goKTsKKyAgICAgICAg
aWYgKHRoaXMubV9jYXNlT3B0aW9ucyAmIGVzM2ZTeW5jVGVzdHMuQ2FzZU9wdGlvbnMuRklOSVNI
X0JFRk9SRV9XQUlUKQorICAgICAgICAgICAgZ2wuZmluaXNoKCk7CisgICAgICAgIHRoaXMubV9z
dGF0ZSA9IGVzM2ZTeW5jVGVzdHMuU3RhdGUuVkVSSUZZOworICAgIH07CisKKworICAgIGVzM2ZT
eW5jVGVzdHMuRmVuY2VTeW5jQ2FzZS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2FpdFZhbHVlID0gMDsKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdGVzdE9rID0gdHJ1ZTsKKworICAgICAgICAvLyBX
YWl0IGZvciBzeW5jIG9iamVjdAorICAgICAgICBpZiAodGhpcy5tX3dhaXRDb21tYW5kICYgZXMz
ZlN5bmNUZXN0cy5XYWl0Q29tbWFuZC5XQUlUX1NZTkMpIHsKKyAgICAgICAgICAgIGFzc2VydE1z
Z09wdGlvbnModGhpcy5tX3RpbWVvdXQgPT09IGdsLlRJTUVPVVRfSUdOT1JFRCwgJ0V4cGVjdGVk
IFRJTUVPVVRfSUdOT1JFRCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydE1zZ09w
dGlvbnModGhpcy5tX3dhaXRGbGFncyA9PT0gMCwgJ0V4cGVjdGVkIHdhaXRGbGFncyA9IDAnLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBnbC53YWl0U3luYyh0aGlzLm1fc3luY09iamVjdCwg
dGhpcy5tX3dhaXRGbGFncywgdGhpcy5tX3RpbWVvdXQpOworICAgICAgICAgICAgYnVmZmVyZWRM
b2dUb0NvbnNvbGUoJ1dhaXQgY29tbWFuZCBnbFdhaXRTeW5jIGNhbGxlZCB3aXRoIEdMX1RJTUVP
VVRfSUdOT1JFRC4nKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fd2FpdENvbW1h
bmQgJiBlczNmU3luY1Rlc3RzLldhaXRDb21tYW5kLkNMSUVOVF9XQUlUX1NZTkMpIHsKKyAgICAg
ICAgICAgIHdhaXRWYWx1ZSA9IGdsLmNsaWVudFdhaXRTeW5jKHRoaXMubV9zeW5jT2JqZWN0LCB0
aGlzLm1fd2FpdEZsYWdzLCB0aGlzLm1fdGltZW91dCk7CisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnZ2xDbGllbnRXYWl0U3luYyByZXR1cm4gdmFsdWU6Jyk7CisgICAgICAgICAg
ICBzd2l0Y2ggKHdhaXRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgZ2wuQUxSRUFEWV9T
SUdOQUxFRDoKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ2dsLkFM
UkVBRFlfU0lHTkFMRUQnKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBnbC5USU1FT1VUX0VYUElSRUQ6CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdnbC5USU1FT1VUX0VYUElSRUQnKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5DT05ESVRJT05fU0FUSVNGSUVEOgor
ICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnZ2wuQ09ORElUSU9OX1NB
VElTRklFRCcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIGdsLldBSVRfRkFJTEVEOgorICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnZ2wuV0FJVF9GQUlMRUQnKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdE9rID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJbGxlZ2FsIHJldHVy
biB2YWx1ZSEnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGdsLmZpbmlz
aCgpOworCisgICAgICAgIC8vIERlbGV0ZSBzeW5jIG9iamVjdAorCisgICAgICAgIGlmICh0aGlz
Lm1fc3luY09iamVjdCAmJiB0ZXN0T2spIHsKKyAgICAgICAgICAgIGdsLmRlbGV0ZVN5bmModGhp
cy5tX3N5bmNPYmplY3QpOworICAgICAgICAgICAgdGhpcy5tX3N5bmNPYmplY3QgPSBudWxsOwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1N5bmMgb2JqZWN0IGRlbGV0ZWQuJyk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBFdmFsdWF0ZSB0ZXN0IHJlc3VsdAorCisgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdUZXN0IHJlc3VsdDogJyArICh0ZXN0T2sgPyAnUGFzc2Vk
IScgOiAnRmFpbGVkIScpKTsKKworICAgICAgICBpZiAoIXRlc3RPaykgeworICAgICAgICAgICAg
aWYgKCF0aGlzLm1fdmVyaWZ5U3RhcnQpCisgICAgICAgICAgICAgICAgdGhpcy5tX3ZlcmlmeVN0
YXJ0ID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZh
ciBjdXJyZW50ID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgICAgICB2YXIgZWxhcHNlZFRpbWUg
PSAwLjAwMSAqIChjdXJyZW50LmdldFRpbWUoKSAtIHRoaXMubV92ZXJpZnlTdGFydC5nZXRUaW1l
KCkpOworICAgICAgICAgICAgICAgIGlmIChlbGFwc2VkVGltZSA+IGVzM2ZTeW5jVGVzdHMuTUFY
X1ZFUklGWV9XQUlUKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdG
YWlsJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fc3RhdGUgPSBlczNmU3lu
Y1Rlc3RzLlN0YXRlLkZJTklTSDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubV9zeW5j
T2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnbC5kZWxldGVTeW5jKHRoaXMubV9z
eW5jT2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9zeW5jT2JqZWN0ID0g
bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdTeW5j
IG9iamVjdCBkZWxldGVkLicpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJ1N5bmMgb2JqZWN0cyBjcmVhdGVkIGFuZCBkZWxldGVkIHN1Y2Nlc3Nm
dWxseS4nKTsKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdQYXNzJywgdHJ1ZSk7Cisg
ICAgICAgICAgICB0aGlzLm1fc3RhdGUgPSAoKyt0aGlzLm1faXRlck5keCA8IGVzM2ZTeW5jVGVz
dHMuTlVNX0NBU0VfSVRFUkFUSU9OUykgPyBlczNmU3luY1Rlc3RzLlN0YXRlLkRSQVcgOiBlczNm
U3luY1Rlc3RzLlN0YXRlLkZJTklTSDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBlczNmU3lu
Y1Rlc3RzLkZlbmNlU3luY0Nhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3dpdGNoICh0aGlzLm1fc3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgZXMzZlN5bmNU
ZXN0cy5TdGF0ZS5EUkFXOgorICAgICAgICAgICAgICAgIHRoaXMuZHJhdygpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgIGNhc2UgZXMzZlN5bmNUZXN0cy5TdGF0ZS5WRVJJ
Rlk6CisgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICBjYXNlIGVzM2ZTeW5jVGVzdHMuU3RhdGUuRklOSVNIOgorICAgICAg
ICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQg
c3RhdGU6ICcgKyB0aGlzLm1fc3RhdGUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRj
dVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQGNvbnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9Cisg
ICAgKi8KKyAgICBlczNmU3luY1Rlc3RzLlN5bmNUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdmZW5jZV9zeW5jJywgJ0ZlbmNlIFN5
bmMgVGVzdHMnKTsKKyAgICB9OworCisgICAgZXMzZlN5bmNUZXN0cy5TeW5jVGVzdHMucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAg
IGVzM2ZTeW5jVGVzdHMuU3luY1Rlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZTeW5j
VGVzdHMuU3luY1Rlc3RzOworCisgICAgZXMzZlN5bmNUZXN0cy5TeW5jVGVzdHMucHJvdG90eXBl
LmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gRmVuY2Ugc3luYyB0ZXN0cy4KKworICAg
ICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU3luY1Rlc3RzLkZlbmNlU3luY0Nhc2UoJ3dhaXRf
c3luY19zbWFsbGRyYXcnLCAnJywgMTAsIGVzM2ZTeW5jVGVzdHMuV2FpdENvbW1hbmQuV0FJVF9T
WU5DLCAwLCBnbC5USU1FT1VUX0lHTk9SRUQsIDApKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChu
ZXcgZXMzZlN5bmNUZXN0cy5GZW5jZVN5bmNDYXNlKCd3YWl0X3N5bmNfbGFyZ2VkcmF3JywgJycs
IDEwMDAwMCwgZXMzZlN5bmNUZXN0cy5XYWl0Q29tbWFuZC5XQUlUX1NZTkMsIDAsIGdsLlRJTUVP
VVRfSUdOT1JFRCwgMCkpOworCisgICAgICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZTeW5jVGVz
dHMuRmVuY2VTeW5jQ2FzZSgnY2xpZW50X3dhaXRfc3luY19zbWFsbGRyYXcnLCAnJywgMTAsIGVz
M2ZTeW5jVGVzdHMuV2FpdENvbW1hbmQuQ0xJRU5UX1dBSVRfU1lOQywgMCwgMCwgMCkpOworICAg
ICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU3luY1Rlc3RzLkZlbmNlU3luY0Nhc2UoJ2NsaWVu
dF93YWl0X3N5bmNfbGFyZ2VkcmF3JywgJycsIDEwMDAwMCwgZXMzZlN5bmNUZXN0cy5XYWl0Q29t
bWFuZC5DTElFTlRfV0FJVF9TWU5DLCAwLCAwLCAwKSk7CisKKyAgICAgICAgLy8gT3JpZ2luYWxs
eSB0aGUgbmV4dCB0d28gdGVzdCBjYXNlcycgdGltZW91dCBpcyAxMCwgYnV0IGluIFdlYkdMMiB0
aGF0IGNvdWxkIGJlIGlsbGVnYWwuCisgICAgICAgIHZhciBtYXggPSBnbC5nZXRQYXJhbWV0ZXIo
Z2wuTUFYX0NMSUVOVF9XQUlUX1RJTUVPVVRfV0VCR0wpIHx8IDA7CisgICAgICAgIHRoaXMuYWRk
Q2hpbGQobmV3IGVzM2ZTeW5jVGVzdHMuRmVuY2VTeW5jQ2FzZSgnY2xpZW50X3dhaXRfc3luY190
aW1lb3V0X3NtYWxsZHJhdycsICcnLCAxMCwgZXMzZlN5bmNUZXN0cy5XYWl0Q29tbWFuZC5DTElF
TlRfV0FJVF9TWU5DLCAwLCBtYXgsIDApKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMz
ZlN5bmNUZXN0cy5GZW5jZVN5bmNDYXNlKCdjbGllbnRfd2FpdF9zeW5jX3RpbWVvdXRfbGFyZ2Vk
cmF3JywgJycsIDEwMDAwMCwgZXMzZlN5bmNUZXN0cy5XYWl0Q29tbWFuZC5DTElFTlRfV0FJVF9T
WU5DLCAwLCBtYXgsIDApKTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU3luY1Rl
c3RzLkZlbmNlU3luY0Nhc2UoJ2NsaWVudF93YWl0X3N5bmNfZmx1c2hfYXV0bycsICcnLCAxMDAw
MDAsIGVzM2ZTeW5jVGVzdHMuV2FpdENvbW1hbmQuQ0xJRU5UX1dBSVRfU1lOQywgZ2wuU1lOQ19G
TFVTSF9DT01NQU5EU19CSVQsIDAsIDApKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMz
ZlN5bmNUZXN0cy5GZW5jZVN5bmNDYXNlKCdjbGllbnRfd2FpdF9zeW5jX2ZsdXNoX21hbnVhbCcs
ICcnLCAxMDAwMDAsIGVzM2ZTeW5jVGVzdHMuV2FpdENvbW1hbmQuQ0xJRU5UX1dBSVRfU1lOQywg
MCwgMCwgZXMzZlN5bmNUZXN0cy5DYXNlT3B0aW9ucy5GTFVTSF9CRUZPUkVfV0FJVCkpOworICAg
ICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmU3luY1Rlc3RzLkZlbmNlU3luY0Nhc2UoJ2NsaWVu
dF93YWl0X3N5bmNfbm9mbHVzaCcsICcnLCAxMDAwMDAsIGVzM2ZTeW5jVGVzdHMuV2FpdENvbW1h
bmQuQ0xJRU5UX1dBSVRfU1lOQywgMCwgMCwgMCkpOworICAgICAgICB0aGlzLmFkZENoaWxkKG5l
dyBlczNmU3luY1Rlc3RzLkZlbmNlU3luY0Nhc2UoJ2NsaWVudF93YWl0X3N5bmNfZmluaXNoJywg
JycsIDEwMDAwMCwgZXMzZlN5bmNUZXN0cy5XYWl0Q29tbWFuZC5DTElFTlRfV0FJVF9TWU5DLCAw
LCAwLCBlczNmU3luY1Rlc3RzLkNhc2VPcHRpb25zLkZJTklTSF9CRUZPUkVfV0FJVCkpOworCisg
ICAgfTsKKworICAgIC8qKgorICAgICogUnVuIHRlc3QKKyAgICAqIEBwYXJhbSB7V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dH0gY29udGV4dAorICAgICovCisgICAgZXMzZlN5bmNUZXN0cy5ydW4gPSBm
dW5jdGlvbihjb250ZXh0KSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQg
dXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2Uu
cnVubmVyOworICAgICAgICBzdGF0ZS5zZXRSb290KG5ldyBlczNmU3luY1Rlc3RzLlN5bmNUZXN0
cygpKTsKKworICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRl
c3Qgc2VyaWVzLgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2VzLmZ1
bGxOYW1lKCkpOworICAgICAgICBkZXNjcmlwdGlvbihzdGF0ZS50ZXN0Q2FzZXMuZ2V0RGVzY3Jp
cHRpb24oKSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMK
KyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB9CisgICAg
ICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQg
dG8gZXMzZlN5bmNUZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0
Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmZjA5YTExYzI2Nzkz
ZjRkYmU1MjNiNGQ0Mjc2ZmZmODZhZGNmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9l
czNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmpzCkBAIC0wLDAgKzEsMjI4MiBAQAorLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGls
aXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24u
dGN1TG9nSW1hZ2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZv
cm1hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkEnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0
dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Bl
bmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZib1Rlc3RVdGlsJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1RleHR1cmVU
ZXN0VXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHM7CisgICAgdmFyIGVzM2ZGYm9UZXN0VXRpbCA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZi
b1Rlc3RVdGlsOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJVdGlsOworICAgIHZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
VGV4dHVyZVV0aWw7CisgICAgdmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24u
dGN1SW1hZ2VDb21wYXJlOworICAgIHZhciB0Y3VMb2dJbWFnZSA9IGZyYW1ld29yay5jb21tb24u
dGN1TG9nSW1hZ2U7CisgICAgdmFyIHRjdVBpeGVsRm9ybWF0ID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VQaXhlbEZvcm1hdDsKKyAgICB2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24udGN1UkdC
QTsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwor
ICAgIHZhciB0Y3VUZXhMb29rdXBWZXJpZmllciA9IGZyYW1ld29yay5jb21tb24udGN1VGV4TG9v
a3VwVmVyaWZpZXI7CisgICAgdmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1
cmZhY2U7CisgICAgdmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7
CisgICAgdmFyIHRjdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRp
bDsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAg
IHZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAgIHZh
ciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAgIHZhciBn
bHVUZXh0dXJlID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlOworICAgIHZhciBnbHNUZXh0
dXJlVGVzdFV0aWwgPSBtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWw7CisKKyAgICAv
KiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZhciBnbDsKKworICAgIGVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMudmVyc2lvbiA9CisgICAgICAgIGdsdVNoYWRlclV0aWwuZ2V0
R0xTTFZlcnNpb25TdHJpbmcoZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTKTsKKwor
ICAgIGxldCBjYW52YXNXSCA9IDI1NjsKKyAgICBsZXQgdmlld3BvcnRXSCA9IDY0OworCisgICAg
aWYgKHRjdVRlc3RDYXNlLmlzUXVpY2tNb2RlKCkpIHsKKyAgICAgICAgY2FudmFzV0ggPSA2NDsK
KyAgICAgICAgdmlld3BvcnRXSCA9IDMyOworICAgIH0KKworICAgIGNvbnN0IFRFWDJEX1ZJRVdQ
T1JUX1dJRFRIID0gdmlld3BvcnRXSDsKKyAgICBjb25zdCBURVgyRF9WSUVXUE9SVF9IRUlHSFQg
PSB2aWV3cG9ydFdIOworICAgIGNvbnN0IFRFWDJEX01JTl9WSUVXUE9SVF9XSURUSCA9IHZpZXdw
b3J0V0g7CisgICAgY29uc3QgVEVYMkRfTUlOX1ZJRVdQT1JUX0hFSUdIVCA9IHZpZXdwb3J0V0g7
CisKKyAgICBjb25zdCBURVgzRF9WSUVXUE9SVF9XSURUSCA9IHZpZXdwb3J0V0g7CisgICAgY29u
c3QgVEVYM0RfVklFV1BPUlRfSEVJR0hUID0gdmlld3BvcnRXSDsKKyAgICBjb25zdCBURVgzRF9N
SU5fVklFV1BPUlRfV0lEVEggPSB2aWV3cG9ydFdIOworICAgIGNvbnN0IFRFWDNEX01JTl9WSUVX
UE9SVF9IRUlHSFQgPSB2aWV3cG9ydFdIOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUZpbHRlcmluZ1Rlc3RzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ2ZpbHRlcmluZycs
ICdUZXh0dXJlIEZpbHRlcmluZyBUZXN0cycpOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5wcm90b3R5cGUgPQorICAgICAgICBP
YmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisKKyAgICBlczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5wcm90b3R5cGUuY29u
c3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmVGaWx0
ZXJpbmdUZXN0czsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkZp
bHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYWdGaWx0ZXIKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gd3JhcFMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFQKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy5UZXh0dXJlMkRGaWx0ZXJpbmdDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5h
bWUsIGRlc2MsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsCisgICAgICAgIGlu
dGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0CisgICAgKSB7CisgICAgICAgIHRjdVRlc3RDYXNl
LkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgICAgIHRoaXMubV9taW5GaWx0
ZXIgPSBtaW5GaWx0ZXI7CisgICAgICAgIHRoaXMubV9tYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7Cisg
ICAgICAgIHRoaXMubV93cmFwUyA9IHdyYXBTOworICAgICAgICB0aGlzLm1fd3JhcFQgPSB3cmFw
VDsKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAg
ICAgIHRoaXMubV93aWR0aCA9IHdpZHRoOworICAgICAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0
OworICAgICAgICAvKiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXJ9
ICovCisgICAgICAgIHRoaXMubV9yZW5kZXJlciA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuVGV4
dHVyZVJlbmRlcmVyKAorICAgICAgICAgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy52ZXJz
aW9uLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQ
CisgICAgICAgICk7CisgICAgICAgIHRoaXMubV9jYXNlTmR4ID0gMDsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHVUZXh0dXJlLlRleHR1cmUyRD59ICovIHRoaXMubV90ZXh0dXJlcyA9IFtd
OworICAgICAgICB0aGlzLm1fY2FzZXMgPSBbXTsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRGaWx0ZXJpbmdDYXNlLnByb3RvdHlwZSA9CisgICAgICAg
IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREZpbHRlcmluZ0Nhc2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRG
aWx0ZXJpbmdDYXNlOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBh
cmFtIHtnbHVUZXh0dXJlLlRleHR1cmUyRH0gdGV4XworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gbWluQ29vcmRfCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhDb29yZF8K
KyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREZpbHRlcmlu
Z0Nhc2UuRmlsdGVyQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICB0ZXhfLCBtaW5Db29yZF8sIG1h
eENvb3JkXworICAgICkgeworICAgICAgICB0aGlzLnRleHR1cmUgPSB0ZXhfOworICAgICAgICB0
aGlzLm1pbkNvb3JkID0gbWluQ29vcmRfOworICAgICAgICB0aGlzLm1heENvb3JkID0gbWF4Q29v
cmRfOworICAgIH07CisKKyAgICAvKiogQHR5cGVkZWYge3t0ZXhOZHg6IG51bWJlciwgbG9kWDog
bnVtYmVyLAorICAgICAqIGxvZFk6IG51bWJlciwgb1g6IG51bWJlciwgb1k6IG51bWJlcn19ICov
CisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5DYXNlczsKKworICAgIC8qKgorICAgICAq
IGluaXQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREZp
bHRlcmluZ0Nhc2UucHJvdG90eXBlLmluaXQgPQorICAgIGZ1bmN0aW9uKCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgICAgLy8gQ3JlYXRlIDIgdGV4dHVyZXMuCisgICAgICAgICAgICBmb3Ig
KHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgrKykKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4
dHVyZXMucHVzaCgKKyAgICAgICAgICAgICAgICAgICAgZ2x1VGV4dHVyZS50ZXh0dXJlMkRGcm9t
SW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBnbCwgdGhpcy5tX2ludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3dpZHRoLCB0aGlzLm1f
aGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApOworCisgICAg
ICAgICAgICB2YXIgbWlwbWFwcyA9IHRydWU7CisgICAgICAgICAgICB2YXIgbnVtTGV2ZWxzID0g
bWlwbWFwcyA/IGRlTWF0aC5sb2dUb0Zsb29yKAorICAgICAgICAgICAgICAgIE1hdGgubWF4KHRo
aXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCkKKyAgICAgICAgICAgICkgKyAxIDogMTsKKworICAg
ICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8K
KyAgICAgICAgICAgIHZhciBmbXRJbmZvID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1h
dEluZm8oCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVzWzBdLmdldFJlZlRleHR1cmUo
KS5nZXRGb3JtYXQoKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGNCaWFzID0gZm10SW5mby52YWx1ZU1pbjsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgICAgIHZhciBjU2NhbGUgPSBk
ZU1hdGguc3VidHJhY3QoCisgICAgICAgICAgICAgICAgZm10SW5mby52YWx1ZU1heCwgZm10SW5m
by52YWx1ZU1pbgorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgLy8gRmlsbCBmaXJzdCBn
cmFkaWVudCB0ZXh0dXJlLgorICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZl
bE5keCA8IG51bUxldmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGdNaW4gPSBkZU1hdGguYWRkKAorICAgICAgICAgICAg
ICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzAuMCwgMC4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNC
aWFzCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciBnTWF4ID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICAgICAg
ZGVNYXRoLm11bHRpcGx5KFsxLjAsIDEuMCwgMS4wLCAwLjBdLCBjU2NhbGUpLCBjQmlhcworICAg
ICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXNbMF0uZ2V0
UmVmVGV4dHVyZSgpLmFsbG9jTGV2ZWwobGV2ZWxOZHgpOworICAgICAgICAgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgICAg
ICB0aGlzLm1fdGV4dHVyZXNbMF0uZ2V0UmVmVGV4dHVyZSgpLmdldExldmVsKGxldmVsTmR4KSwK
KyAgICAgICAgICAgICAgICAgICAgZ01pbiwgZ01heAorICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbGwgc2Vjb25kIHdpdGggZ3JpZCB0ZXh0dXJl
LgorICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IG51bUxldmVs
czsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgc3RlcCA9IDB4MDBmZmZmZmYgLyBudW1MZXZlbHM7CisgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciByZ2IgPSBzdGVwICogbGV2ZWxOZHg7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb2xvckEgPSBkZU1hdGguYmluYXJ5T3AoCisg
ICAgICAgICAgICAgICAgICAgIDB4ZmYwMDAwMDAsIHJnYiwgZGVNYXRoLkJpbmFyeU9wLk9SCisg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGNvbG9yQiA9IGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgMHhmZjAw
MDAwMCwgZGVNYXRoLmJpbmFyeU5vdChyZ2IpLCBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAgICAg
ICAgICAgICApOworCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVzWzFdLmdldFJlZlRl
eHR1cmUoKS5hbGxvY0xldmVsKGxldmVsTmR4KTsKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJl
VXRpbC5maWxsV2l0aEdyaWQoCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlc1sx
XS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpLAorICAgICAgICAgICAgICAgICAg
ICA0LAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21WYWx1ZShjb2xvckEpLnRv
VmVjKCksIGNTY2FsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBjQmlhcworICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguYWRkKGRlTWF0aC5tdWx0
aXBseSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21WYWx1ZShj
b2xvckIpLnRvVmVjKCksIGNTY2FsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBjQmlhcwor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVXBsb2FkLgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1fdGV4dHVyZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgdGhpcy5tX3Rl
eHR1cmVzW2ldLnVwbG9hZCgpOworCisgICAgICAgICAgICAvLyBDb21wdXRlIGNhc2VzLgorCisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuQ2Fz
ZXM+fSAqLworICAgICAgICAgICAgdmFyIGNhc2VzID0gW3sKKyAgICAgICAgICAgICAgICAgICAg
dGV4TmR4OiAwLCBsb2RYOiAxLjYsIGxvZFk6IDIuOSwgb1g6IC0xLjAsIG9ZOiAtMi43CisgICAg
ICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgICAgICB0ZXhOZHg6IDAsIGxvZFg6IC0y
LjAsIGxvZFk6IC0xLjM1LCBvWDogLTAuMiwgb1k6IDAuNworICAgICAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICAgICAgdGV4TmR4OiAxLCBsb2RYOiAwLjE0LCBsb2RZOiAwLjI3NSwg
b1g6IC0xLjUsIG9ZOiAtMS4xCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAg
ICAgICB0ZXhOZHg6IDEsIGxvZFg6IC0wLjkyLCBsb2RZOiAtMi42NCwgb1g6IDAuNCwgb1k6IC0w
LjEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdOworCisgICAgICAgICAgICB2YXIg
dmlld3BvcnRXID0gTWF0aC5taW4oCisgICAgICAgICAgICAgICAgVEVYMkRfVklFV1BPUlRfV0lE
VEgsIGdsLmNhbnZhcy53aWR0aAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciB2aWV3
cG9ydEggPSBNYXRoLm1pbigKKyAgICAgICAgICAgICAgICBURVgyRF9WSUVXUE9SVF9IRUlHSFQs
IGdsLmNhbnZhcy5oZWlnaHQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGZvciAodmFy
IGNhc2VOZHggPSAwOyBjYXNlTmR4IDwgY2FzZXMubGVuZ3RoOyBjYXNlTmR4KyspIHsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRleE5keCA9IGRlTWF0aC5jbGFt
cCgKKyAgICAgICAgICAgICAgICAgICAgY2FzZXNbY2FzZU5keF0udGV4TmR4LCAwLCB0aGlzLm1f
dGV4dHVyZXMubGVuZ3RoIC0gMQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2RYID0gY2FzZXNbY2FzZU5keF0ubG9kWDsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZFkgPSBjYXNlc1tjYXNl
TmR4XS5sb2RZOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb1gg
PSBjYXNlc1tjYXNlTmR4XS5vWDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG9ZID0gY2FzZXNbY2FzZU5keF0ub1k7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzWCA9IE1hdGguZXhwKGxvZFggKiBNYXRoLmxvZygyKSkgKiB2aWV3
cG9ydFcgLworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXNbdGV4TmR4XS5nZXRS
ZWZUZXh0dXJlKCkuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHNZID0gTWF0aC5leHAobG9kWSAqIE1hdGgubG9nKDIpKSAqIHZpZXdwb3J0SCAv
CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlc1t0ZXhOZHhdLmdldFJlZlRleHR1
cmUoKS5nZXRIZWlnaHQoKTsKKworICAgICAgICAgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAor
ICAgICAgICAgICAgICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRGaWx0ZXJpbmdDYXNlLkZpbHRlckNhc2UoCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXNbdGV4TmR4XSwgW29YLCBvWV0sIFtvWCAr
IHNYLCBvWSArIHNZXQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5tX2Nhc2VOZHggPSAwOworICAgICAg
ICB9CisgICAgICAgIGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBDbGVhbiB1cCB0byBzYXZl
IG1lbW9yeS4KKyAgICAgICAgICAgIHRoaXMuZGVpbml0KCk7CisgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGRlaW5pdAorICAgICAqLwor
ICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTJERmlsdGVyaW5nQ2FzZS5wcm90
b3R5cGUuZGVpbml0ID0KKyAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgd2hpbGUgKHRoaXMubV90
ZXh0dXJlcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRoaXMu
bV90ZXh0dXJlc1swXS5nZXRHTFRleHR1cmUoKSk7CisgICAgICAgICAgICB0aGlzLm1fdGV4dHVy
ZXMuc3BsaWNlKDAsIDEpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRGaWx0ZXJpbmdDYXNlLnByb3RvdHlwZS5pdGVyYXRl
ID0KKyAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNUZXh0dXJlVGVzdFV0
aWwuUmFuZG9tVmlld3BvcnR9ICovCisgICAgICAgIHZhciB2aWV3cG9ydCA9IG5ldyBnbHNUZXh0
dXJlVGVzdFV0aWwuUmFuZG9tVmlld3BvcnQoCisgICAgICAgICAgICBnbC5jYW52YXMsIFRFWDJE
X1ZJRVdQT1JUX1dJRFRILAorICAgICAgICAgICAgVEVYMkRfVklFV1BPUlRfSEVJR0hULCBkZU1h
dGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMu
ZnVsbE5hbWUoKSksCisgICAgICAgICAgICAgICAgZGVNYXRoLmRlTWF0aEhhc2godGhpcy5tX2Nh
c2VOZHgpLAorICAgICAgICAgICAgICAgIGRlTWF0aC5CaW5hcnlPcC5YT1IKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3Jt
YXR9ICovCisgICAgICAgIHZhciB0ZXhGbXQgPSB0aGlzLm1fdGV4dHVyZXNbMF0uZ2V0UmVmVGV4
dHVyZSgpLmdldEZvcm1hdCgpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZVV0aWwu
VGV4dHVyZUZvcm1hdEluZm99ICovCisgICAgICAgIHZhciBmbXRJbmZvID0gdGN1VGV4dHVyZVV0
aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8odGV4Rm10KTsKKyAgICAgICAgdmFyIGN1ckNhc2UgPSB0
aGlzLm1fY2FzZXNbdGhpcy5tX2Nhc2VOZHhdOworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnVGVzdCAnICsgdGhpcy5tX2Nhc2VOZHgpOworICAgICAgICB2YXIgcmVmUGFyYW1zID0gbmV3
IGdsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXMoCisgICAgICAgICAgICBnbHNUZXh0
dXJlVGVzdFV0aWwudGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQKKyAgICAgICAgKTsKKyAgICAg
ICAgdmFyIHJlbmRlcmVkID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9ydC53aWR0aCwg
dmlld3BvcnQuaGVpZ2h0KTsKKyAgICAgICAgdmFyIHRleENvb3JkID0gWzAsIDBdOworCisgICAg
ICAgIGlmICh2aWV3cG9ydC53aWR0aCA8IFRFWDJEX01JTl9WSUVXUE9SVF9XSURUSCB8fAorICAg
ICAgICAgICAgdmlld3BvcnQuaGVpZ2h0IDwgVEVYMkRfTUlOX1ZJRVdQT1JUX0hFSUdIVCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9vIHNtYWxsIHJlbmRlciB0YXJnZXQnKTsKKwor
ICAgICAgICAvLyBTZXR1cCBwYXJhbXMgZm9yIHJlZmVyZW5jZS4KKyAgICAgICAgcmVmUGFyYW1z
LnNhbXBsZXIgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTFNhbXBsZXJXcmFwU1QoCisgICAgICAgICAg
ICB0aGlzLm1fd3JhcFMsIHRoaXMubV93cmFwVCwgdGhpcy5tX21pbkZpbHRlciwgdGhpcy5tX21h
Z0ZpbHRlcgorICAgICAgICApOworICAgICAgICByZWZQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNU
ZXh0dXJlVGVzdFV0aWwuZ2V0U2FtcGxlclR5cGUodGV4Rm10KTsKKyAgICAgICAgcmVmUGFyYW1z
LmxvZE1vZGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwubG9kTW9kZS5FWEFDVDsKKyAgICAgICAgcmVm
UGFyYW1zLmNvbG9yQmlhcyA9IGZtdEluZm8ubG9va3VwQmlhczsKKyAgICAgICAgcmVmUGFyYW1z
LmNvbG9yU2NhbGUgPSBmbXRJbmZvLmxvb2t1cFNjYWxlOworCisgICAgICAgIC8vIENvbXB1dGUg
dGV4dHVyZSBjb29yZGluYXRlcy4KKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoCisgICAg
ICAgICAgICAnVGV4dHVyZSBjb29yZGluYXRlczogJyArIGN1ckNhc2UubWluQ29vcmQgKworICAg
ICAgICAgICAgJyAtPiAnICsgY3VyQ2FzZS5tYXhDb29yZAorICAgICAgICApOworICAgICAgICB0
ZXhDb29yZCA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkMkQoCisgICAg
ICAgICAgICBjdXJDYXNlLm1pbkNvb3JkLCBjdXJDYXNlLm1heENvb3JkCisgICAgICAgICk7CisK
KyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgY3VyQ2FzZS50ZXh0dXJlLmdl
dEdMVGV4dHVyZSgpKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAgIGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5tX21pbkZpbHRlcgorICAg
ICAgICApOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLm1fbWFnRmlsdGVyCisgICAgICAgICk7
CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQ
X1MsIHRoaXMubV93cmFwUyk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9XUkFQX1QsIHRoaXMubV93cmFwVCk7CisKKyAgICAgICAgZ2wudmlld3Bv
cnQodmlld3BvcnQueCwgdmlld3BvcnQueSwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdo
dCk7CisKKyAgICAgICAgdGhpcy5tX3JlbmRlcmVyLnJlbmRlclF1YWQoMCwgdGV4Q29vcmQsIHJl
ZlBhcmFtcyk7CisgICAgICAgIHJlbmRlcmVkLnJlYWRWaWV3cG9ydCgKKyAgICAgICAgICAgIGds
LCBbdmlld3BvcnQueCwgdmlld3BvcnQueSwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdo
dF0KKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc05l
YXJlc3RPbmx5ID0KKyAgICAgICAgICAgIHRoaXMubV9taW5GaWx0ZXIgPT0gZ2wuTkVBUkVTVCAm
JiB0aGlzLm1fbWFnRmlsdGVyID09IGdsLk5FQVJFU1Q7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9ICovCisgICAgICAgIHZhciBwaXhlbEZvcm1hdCA9IHRj
dVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNvbnRleHQoZ2wpOworCisgICAgICAgIC8vKGlW
ZWM0KQorICAgICAgICB2YXIgY29sb3JCaXRzID0gZGVNYXRoLm1heCgKKyAgICAgICAgICAgIGRl
TWF0aC5hZGRTY2FsYXIoCisgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmdldEJp
dHNWZWMocGl4ZWxGb3JtYXQpLAorICAgICAgICAgICAgICAgIC8vIDEgaW5hY2N1cmF0ZSBiaXQg
aWYgbmVhcmVzdCBvbmx5LCAyIG90aGVyd2lzZQorICAgICAgICAgICAgICAgIC0xICogKGlzTmVh
cmVzdE9ubHkgPyAxIDogMikKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbMCwgMCwgMCwg
MF0KKyAgICAgICAgKTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZlcmlmaWVy
LkxvZFByZWNpc2lvbn0gKi8KKyAgICAgICAgdmFyIGxvZFByZWNpc2lvbiA9IG5ldyB0Y3VUZXhM
b29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhM
b29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259ICovCisgICAgICAgIHZhciBsb29rdXBQcmVj
aXNpb24gPSBuZXcgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9uKCk7CisKKyAg
ICAgICAgbG9kUHJlY2lzaW9uLmRlcml2YXRlQml0cyA9IDE4OworICAgICAgICBsb2RQcmVjaXNp
b24ubG9kQml0cyA9IDY7CisgICAgICAgIGxvb2t1cFByZWNpc2lvbi5jb2xvclRocmVzaG9sZCA9
IGRlTWF0aC5kaXZpZGUoCisgICAgICAgICAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRl
Rml4ZWRQb2ludFRocmVzaG9sZChjb2xvckJpdHMpLAorICAgICAgICAgICAgcmVmUGFyYW1zLmNv
bG9yU2NhbGUKKyAgICAgICAgKTsKKyAgICAgICAgbG9va3VwUHJlY2lzaW9uLmNvb3JkQml0cyA9
IFsyMCwgMjAsIDBdOworICAgICAgICBsb29rdXBQcmVjaXNpb24udXZ3Qml0cyA9IFs3LCA3LCAw
XTsKKyAgICAgICAgbG9va3VwUHJlY2lzaW9uLmNvbG9yTWFzayA9CisgICAgICAgICAgICBnbHNU
ZXh0dXJlVGVzdFV0aWwuZ2V0Q29tcGFyZU1hc2socGl4ZWxGb3JtYXQpOworCisgICAgICAgIHZh
ciBpc0hpZ2hRdWFsaXR5ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnZlcmlmeVRleHR1cmUyRFJlc3Vs
dCgKKyAgICAgICAgICAgIHJlbmRlcmVkLmdldEFjY2VzcygpLCBjdXJDYXNlLnRleHR1cmUuZ2V0
UmVmVGV4dHVyZSgpLAorICAgICAgICAgICAgdGV4Q29vcmQsIHJlZlBhcmFtcywgbG9va3VwUHJl
Y2lzaW9uLCBsb2RQcmVjaXNpb24sIHBpeGVsRm9ybWF0CisgICAgICAgICk7CisKKyAgICAgICAg
aWYgKCFpc0hpZ2hRdWFsaXR5KSB7CisgICAgICAgICAgICAvLyBFdmFsdWF0ZSBhZ2FpbnN0IGxv
d2VyIHByZWNpc2lvbiByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBsb2RQcmVjaXNpb24ubG9k
Qml0cyA9IDQ7CisgICAgICAgICAgICBsb29rdXBQcmVjaXNpb24udXZ3Qml0cyA9IFs0LCA0LCAw
XTsKKworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1dhcm5pbmc6IFZlcmlmaWNh
dGlvbiBhZ2FpbnN0IGhpZ2ggJyArCisgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiByZXF1aXJl
bWVudHMgZmFpbGVkLCB0cnlpbmcgd2l0aCBsb3dlciAnICsKKyAgICAgICAgICAgICAgICAncmVx
dWlyZW1lbnRzLicKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHZhciBpc09rID0gZ2xz
VGV4dHVyZVRlc3RVdGlsLnZlcmlmeVRleHR1cmUyRFJlc3VsdCgKKyAgICAgICAgICAgICAgICBy
ZW5kZXJlZC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50ZXh0dXJlLmdldFJlZlRleHR1cmUoKSwKKyAg
ICAgICAgICAgICAgICB0ZXhDb29yZCwgcmVmUGFyYW1zLCBsb29rdXBQcmVjaXNpb24sIGxvZFBy
ZWNpc2lvbiwKKyAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdAorICAgICAgICAgICAgKTsKKwor
ICAgICAgICAgICAgaWYgKCFpc09rKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoCisgICAgICAgICAgICAgICAgICAgICdFUlJPUjogVmVyaWZpY2F0aW9uIGFnYWluc3Qg
bG93ICcgKworICAgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIHJlcXVpcmVtZW50cyBmYWls
ZWQsIGZhaWxpbmcgdGVzdCBjYXNlLicKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSB2ZXJpZmljYXRpb24gZmFpbGVkJywgZmFsc2Up
OworICAgICAgICAgICAgICAgIC8vSW4gSlMgdmVyc2lvbiwgb25lIG1pc3Rha2UgYW5kIHlvdSdy
ZSBvdXQKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5T
VE9QOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY2hlY2tNZXNzYWdlKAor
ICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgJ0xvdy1xdWFs
aXR5IGZpbHRlcmluZyByZXN1bHQgaW4gaXRlcmF0aW9uIG5vLiAnICsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5tX2Nhc2VOZHgKKyAgICAgICAgICAgICAgICApOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5tX2Nhc2VOZHggKz0gMTsKKyAgICAgICAgaWYgKHRoaXMubV9jYXNlTmR4IDwg
dGhpcy5tX2Nhc2VzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LkNPTlRJTlVFOworCisgICAgICAgIHRlc3RQYXNzZWQoJ1ZlcmlmaWVkJyk7Cisg
ICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkZpbHRlcgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBtYWdGaWx0ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFMKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9ubHlT
YW1wbGVGYWNlSW50ZXJpb3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVp
Z2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlQ3ViZUZp
bHRlcmluZ0Nhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgbWluRmlsdGVyLCBt
YWdGaWx0ZXIsIHdyYXBTLCB3cmFwVCwgb25seVNhbXBsZUZhY2VJbnRlcmlvciwKKyAgICAgICAg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQKKyAgICApIHsKKyAgICAgICAgdGN1VGVzdENh
c2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAgICAgICAgdGhpcy5tX21pbkZp
bHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgdGhpcy5tX21hZ0ZpbHRlciA9IG1hZ0ZpbHRlcjsK
KyAgICAgICAgdGhpcy5tX3dyYXBTID0gd3JhcFM7CisgICAgICAgIHRoaXMubV93cmFwVCA9IHdy
YXBUOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59Ki8KKyAgICAgICAgdGhpcy5tX29ubHlT
YW1wbGVGYWNlSW50ZXJpb3IgPSBvbmx5U2FtcGxlRmFjZUludGVyaW9yOworICAgICAgICB0aGlz
Lm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3dpZHRo
ID0gd2lkdGg7CisgICAgICAgIHRoaXMubV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIC8qKiBA
dHlwZSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlcn0gKi8KKyAgICAgICAgdGhp
cy5tX3JlbmRlcmVyID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIoCisg
ICAgICAgICAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnZlcnNpb24sCisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFAKKyAgICAgICAgKTsKKyAg
ICAgICAgdGhpcy5tX2Nhc2VOZHggPSAwOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsdVRl
eHR1cmUuVGV4dHVyZUN1YmU+fSAqLyB0aGlzLm1fdGV4dHVyZXMgPSBbXTsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLgorICAgICAgICAgKiAgICAg
IFRleHR1cmVDdWJlRmlsdGVyaW5nQ2FzZS5GaWx0ZXJDYXNlPn0KKyAgICAgICAgICovCisgICAg
ICAgIHRoaXMubV9jYXNlcyA9IFtdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAcGFyYW0ge2dsdVRleHR1cmUuVGV4dHVyZUN1YmV9IHRleF8KKyAgICAg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJvdHRvbUxlZnRfCisgICAgICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSB0b3BSaWdodF8KKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzLlRleHR1cmVDdWJlRmlsdGVyaW5nQ2FzZS5GaWx0ZXJDYXNlID0gZnVuY3Rpb24oCisgICAg
ICAgIHRleF8sIGJvdHRvbUxlZnRfLCB0b3BSaWdodF8KKyAgICApIHsKKyAgICAgICAgdGhpcy50
ZXh0dXJlID0gdGV4XzsKKyAgICAgICAgdGhpcy5ib3R0b21MZWZ0ID0gYm90dG9tTGVmdF87Cisg
ICAgICAgIHRoaXMudG9wUmlnaHQgPSB0b3BSaWdodF87CisgICAgfTsKKworICAgIGVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLnByb3RvdHlwZSA9Cisg
ICAgICAgIE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKwor
ICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMu
VGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlOworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAq
LworICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNl
LnByb3RvdHlwZS5pbml0ID0KKyAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAgdGhpcy5tX3dpZHRoID09
IHRoaXMubV9oZWlnaHQsICdUZXh0dXJlIGhhcyB0byBiZSBzcXVhcmVkJywKKyAgICAgICAgICAg
ICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDI7IG5keCsrKQorICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlcy5w
dXNoKGdsdVRleHR1cmUuY3ViZUZyb21JbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICAg
ICAgZ2wsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgdGhpcy5tX3dpZHRoCisgICAgICAgICAgICAg
ICAgKSk7CisKKyAgICAgICAgICAgIHZhciBudW1MZXZlbHMgPSBkZU1hdGgubG9nVG9GbG9vcigK
KyAgICAgICAgICAgICAgICBNYXRoLm1heCh0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpCisg
ICAgICAgICAgICApICsgMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZVV0aWwu
VGV4dHVyZUZvcm1hdEluZm99ICovCisgICAgICAgICAgICB2YXIgZm10SW5mbyA9IHRjdVRleHR1
cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0
dXJlc1swXS5nZXRSZWZUZXh0dXJlKCkuZ2V0Rm9ybWF0KCkKKyAgICAgICAgICAgICk7CisgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIgY0Jp
YXMgPSBmbXRJbmZvLnZhbHVlTWluOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLworICAgICAgICAgICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdCgKKyAgICAg
ICAgICAgICAgICBmbXRJbmZvLnZhbHVlTWF4LCBmbXRJbmZvLnZhbHVlTWluCisgICAgICAgICAg
ICApOworCisgICAgICAgICAgICAvLyBGaWxsIGZpcnN0IHdpdGggZ3JhZGllbnQgdGV4dHVyZS4K
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8QXJyYXk8bnVtYmVyPj4+fQorICAg
ICAgICAgICAgICogKGFycmF5IG9mIDQgY29tcG9uZW50IHZlY3RvcnMpCisgICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgIHZhciBncmFkaWVudHMgPSBbCisgICAgICAgICAgICAgICAgWyAvLyBu
ZWdhdGl2ZSB4CisgICAgICAgICAgICAgICAgICAgIFswLjAsIDAuMCwgMC4wLCAxLjBdLCBbMS4w
LCAxLjAsIDEuMCwgMC4wXQorICAgICAgICAgICAgICAgIF0sIFsgLy8gcG9zaXRpdmUgeAorICAg
ICAgICAgICAgICAgICAgICBbMC41LCAwLjAsIDAuMCwgMS4wXSwgWzEuMCwgMS4wLCAxLjAsIDAu
MF0KKyAgICAgICAgICAgICAgICBdLCBbIC8vIG5lZ2F0aXZlIHkKKyAgICAgICAgICAgICAgICAg
ICAgWzAuMCwgMC41LCAwLjAsIDEuMF0sIFsxLjAsIDEuMCwgMS4wLCAwLjBdCisgICAgICAgICAg
ICAgICAgXSwgWyAvLyBwb3NpdGl2ZSB5CisgICAgICAgICAgICAgICAgICAgIFswLjAsIDAuMCwg
MC41LCAxLjBdLCBbMS4wLCAxLjAsIDEuMCwgMC4wXQorICAgICAgICAgICAgICAgIF0sIFsgLy8g
bmVnYXRpdmUgegorICAgICAgICAgICAgICAgICAgICBbMC4wLCAwLjAsIDAuMCwgMC41XSwgWzEu
MCwgMS4wLCAxLjAsIDEuMF0KKyAgICAgICAgICAgICAgICBdLCBbIC8vIHBvc2l0aXZlIHoKKyAg
ICAgICAgICAgICAgICAgICAgWzAuNSwgMC41LCAwLjUsIDEuMF0sIFsxLjAsIDEuMCwgMS4wLCAw
LjBdCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGZhY2UgPSAwOworICAgICAgICAgICAgICAgIGZhY2UgPCBPYmplY3Qua2V5cyh0Y3VUZXh0
dXJlLkN1YmVGYWNlKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZmFjZSsrKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IG51bUxldmVsczsgbGV2
ZWxOZHgrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXNbMF0uZ2V0UmVm
VGV4dHVyZSgpLmFsbG9jTGV2ZWwoCisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLCBsZXZl
bE5keAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0
dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cygKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV90ZXh0dXJlc1swXS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWxGYWNlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsTmR4LCBmYWNlCisgICAgICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZChkZU1hdGgubXVs
dGlwbHkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRzW2ZhY2VdWzBdLCBj
U2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICksIGNCaWFzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYWRpZW50c1tmYWNlXVsxXSwgY1NjYWxlCisgICAgICAgICAgICAgICAgICAg
ICAgICApLCBjQmlhcykKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbGwgc2Vjb25kIHdpdGggZ3JpZCB0
ZXh0dXJlLgorICAgICAgICAgICAgZm9yICh2YXIgZmFjZSA9IDA7CisgICAgICAgICAgICAgICAg
ZmFjZSA8IE9iamVjdC5rZXlzKHRjdVRleHR1cmUuQ3ViZUZhY2UpLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICBmYWNlKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7
IGxldmVsTmR4IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciBzdGVwID0gMHgwMGZmZmZmZiAvICgKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bUxl
dmVscyAqIE9iamVjdC5rZXlzKHRjdVRleHR1cmUuQ3ViZUZhY2UpLmxlbmd0aAorICAgICAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICB2YXIgcmdiID0gc3RlcCAqIGxldmVs
TmR4ICogZmFjZTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBjb2xvckEgPSBkZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgICAgICAgICAweGZm
MDAwMDAwLCByZ2IsIGRlTWF0aC5CaW5hcnlPcC5PUgorICAgICAgICAgICAgICAgICAgICApOwor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbG9yQiA9IGRl
TWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYwMDAwMDAsIGRlTWF0
aC5iaW5hcnlOb3QocmdiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5CaW5hcnlP
cC5PUgorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV90ZXh0dXJlc1sxXS5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZhY2UsIGxldmVsTmR4CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV90ZXh0dXJlc1sxXS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWxGYWNl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsTmR4LCBmYWNlCisgICAgICAgICAg
ICAgICAgICAgICAgICApLCA0LCBkZU1hdGguYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlTWF0aC5tdWx0aXBseSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1
UkdCQS5uZXdSR0JBRnJvbVZhbHVlKGNvbG9yQSkudG9WZWMoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY1NjYWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgY0Jp
YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICksIGRlTWF0aC5hZGQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVNYXRoLm11bHRpcGx5KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0Y3VSR0JBLm5ld1JHQkFGcm9tVmFsdWUoY29sb3JCKS50b1ZlYygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjU2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApLCBjQmlhcworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVXBsb2FkLgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1fdGV4dHVy
ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleHR1cmVzW2ldLnVwbG9h
ZCgpOworCisgICAgICAgICAgICAvLyBDb21wdXRlIGNhc2VzCisgICAgICAgICAgICAvKiogQHR5
cGUge2dsdVRleHR1cmUuVGV4dHVyZUN1YmV9ICovCisgICAgICAgICAgICB2YXIgdGV4MCA9IHRo
aXMubV90ZXh0dXJlc1swXTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1VGV4dHVyZS5UZXh0
dXJlQ3ViZX0gKi8KKyAgICAgICAgICAgIHZhciB0ZXgxID0gdGhpcy5tX3RleHR1cmVzLmxlbmd0
aCA+IDEgPyB0aGlzLm1fdGV4dHVyZXNbMV0gOiB0ZXgwOworCisgICAgICAgICAgICBpZiAodGhp
cy5tX29ubHlTYW1wbGVGYWNlSW50ZXJpb3IpIHsKKyAgICAgICAgICAgICAgICAvLyBtaW5pZmlj
YXRpb24KKyAgICAgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaChuZXcgZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUN1YmVGaWx0ZXJpbmdD
YXNlLkZpbHRlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHRleDAsIFstMC44LCAtMC44XSwg
WzAuOCwgMC44XQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgICAgIC8vIG1hZ25p
ZmljYXRpb24KKyAgICAgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaChuZXcgZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUN1YmVGaWx0ZXJp
bmdDYXNlLkZpbHRlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHRleDAsIFswLjUsIDAuNjVd
LCBbMC44LCAwLjhdCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgLy8gbWlu
aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2gobmV3IGVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMuCisgICAgICAgICAgICAgICAgICAgIFRleHR1cmVDdWJlRmlsdGVy
aW5nQ2FzZS5GaWx0ZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICB0ZXgxLCBbLTAuOCwgLTAu
OF0sIFswLjgsIDAuOF0KKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgICAgICAvLyBt
YWduaWZpY2F0aW9uCisgICAgICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2gobmV3IGVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMuCisgICAgICAgICAgICAgICAgICAgIFRleHR1cmVDdWJlRmls
dGVyaW5nQ2FzZS5GaWx0ZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICB0ZXgxLCBbMC4yLCAw
LjJdLCBbMC42LCAwLjVdCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIG1pbmlmaWNhdGlvbgorICAgICAgICAgICAgICAgIGlmIChn
bC5nZXRQYXJhbWV0ZXIoZ2wuU0FNUExFUykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5UZXh0dXJlQ3ViZUZpbHRlcmluZ0Nhc2UuCisgICAgICAgICAgICAgICAg
ICAgICAgICBGaWx0ZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleDAsIFst
MS4yNSwgLTEuMl0sIFsxLjIsIDEuMjVdCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgLy8gbWluaWZpY2F0aW9uIC0gdy8g
dHdlYWsgdG8gYXZvaWQgaGl0dGluZyB0cmlhbmdsZQorICAgICAgICAgICAgICAgIC8vIGVkZ2Vz
IHdpdGggZmFjZSBzd2l0Y2hwb2ludC4KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgRmlsdGVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXgwLCBbLTEuMTksIC0xLjNdLCBbMS4xLCAxLjM1XQorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgLy8gbWFn
bmlmaWNhdGlvbgorICAgICAgICAgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAorICAgICAgICAg
ICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlQ3ViZUZpbHRl
cmluZ0Nhc2UuCisgICAgICAgICAgICAgICAgICAgIEZpbHRlckNhc2UoCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXgwLCBbMC44LCAwLjhdLCBbMS4yNSwgMS4yMF0KKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgLy8gbWluaWZpY2F0
aW9uCisgICAgICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAgICAg
ICAgIG5ldyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmVDdWJlRmlsdGVyaW5nQ2Fz
ZS4KKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRleDEsIFstMS4xOSwgLTEuM10sIFsxLjEsIDEuMzVdCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIC8vIG1hZ25pZmljYXRpb24K
KyAgICAgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaCgKKyAgICAgICAgICAgICAgICAgICAg
bmV3IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLgor
ICAgICAgICAgICAgICAgICAgICBGaWx0ZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAg
dGV4MSwgWy0xLjIsIC0xLjFdLCBbLTAuOCwgLTAuOF0KKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMubV9j
YXNlTmR4ID0gMDsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZSkgeworICAgICAgICAgICAg
Ly8gQ2xlYW4gdXAgdG8gc2F2ZSBtZW1vcnkuCisgICAgICAgICAgICB0aGlzLmRlaW5pdCgpOwor
ICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBkZWluaXQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmVD
dWJlRmlsdGVyaW5nQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0KKyAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgd2hpbGUgKHRoaXMubV90ZXh0dXJlcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBn
bC5kZWxldGVUZXh0dXJlKHRoaXMubV90ZXh0dXJlc1swXS5nZXRHTFRleHR1cmUoKSk7CisgICAg
ICAgICAgICB0aGlzLm1fdGV4dHVyZXMuc3BsaWNlKDAsIDEpOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzLmdldEZhY2VEZXNjID0gZnVuY3Rpb24oZmFjZSkgeworICAgICAgICBzd2l0Y2ggKGZhY2Up
IHsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElW
RV9YOiByZXR1cm4gJy1YJzsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5D
VUJFRkFDRV9QT1NJVElWRV9YOiByZXR1cm4gJytYJzsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4
dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9ZOiByZXR1cm4gJy1ZJzsKKyAgICAgICAg
ICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9ZOiByZXR1cm4g
JytZJzsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdB
VElWRV9aOiByZXR1cm4gJy1aJzsKKyAgICAgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFj
ZS5DVUJFRkFDRV9QT1NJVElWRV9aOiByZXR1cm4gJytaJzsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGN1YmUgZmFjZSBzcGVj
aWZpZWQnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0
Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0KKyAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHZpZXdwb3J0U2l6ZSA9IDI4OworICAgICAgICAv
KiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydH0gKi8KKyAgICAgICAg
dmFyIHZpZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydCgKKyAg
ICAgICAgICAgIGdsLmNhbnZhcywgdmlld3BvcnRTaXplLAorICAgICAgICAgICAgdmlld3BvcnRT
aXplLCBkZU1hdGguYmluYXJ5T3AoCisgICAgICAgICAgICAgICAgZGVTdHJpbmcuZGVTdHJpbmdI
YXNoKHRoaXMuZnVsbE5hbWUoKSksCisgICAgICAgICAgICAgICAgZGVNYXRoLmRlTWF0aEhhc2go
dGhpcy5tX2Nhc2VOZHgpLAorICAgICAgICAgICAgICAgIGRlTWF0aC5CaW5hcnlPcC5YT1IKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Rl
c3QnICsgdGhpcy5tX2Nhc2VOZHgpOworICAgICAgICAvKiogQHR5cGUge2VzM2ZUZXh0dXJlRmls
dGVyaW5nVGVzdHMuCisgICAgICAgICAqICAgICAgVGV4dHVyZUN1YmVGaWx0ZXJpbmdDYXNlLkZp
bHRlckNhc2V9CisgICAgICAgICAqLworICAgICAgICB2YXIgY3VyQ2FzZSA9IHRoaXMubV9jYXNl
c1t0aGlzLm1fY2FzZU5keF07CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJl
Rm9ybWF0fSAqLworICAgICAgICB2YXIgdGV4Rm10ID0gY3VyQ2FzZS50ZXh0dXJlLmdldFJlZlRl
eHR1cmUoKS5nZXRGb3JtYXQoKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5U
ZXh0dXJlRm9ybWF0SW5mb30gKi8KKyAgICAgICAgdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRp
bC5nZXRUZXh0dXJlRm9ybWF0SW5mbyh0ZXhGbXQpOworICAgICAgICAvKiogQHR5cGUge2dsc1Rl
eHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXN9ICovCisgICAgICAgIHZhciBzYW1wbGVQYXJh
bXMgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtcygKKyAgICAgICAgICAg
IGdsc1RleHR1cmVUZXN0VXRpbC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFCisgICAgICAg
ICk7CisKKyAgICAgICAgaWYgKHZpZXdwb3J0LndpZHRoIDwgdmlld3BvcnRTaXplIHx8IHZpZXdw
b3J0LmhlaWdodCA8IHZpZXdwb3J0U2l6ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
VG9vIHNtYWxsIHJlbmRlciB0YXJnZXQnKTsKKworICAgICAgICAvLyBTZXR1cCB0ZXh0dXJlCisg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGN1ckNhc2UudGV4dHVy
ZS5nZXRHTFRleHR1cmUoKSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoCisgICAgICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIsIHRoaXMubV9taW5G
aWx0ZXIKKyAgICAgICAgKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAg
IGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgdGhpcy5tX21hZ0Zp
bHRlcgorICAgICAgICApOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAg
Z2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1MsIHRoaXMubV93cmFwUworICAg
ICAgICApOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgZ2wuVEVYVFVS
RV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1QsIHRoaXMubV93cmFwVAorICAgICAgICApOwor
CisgICAgICAgIC8vIE90aGVyIHN0YXRlCisgICAgICAgIGdsLnZpZXdwb3J0KHZpZXdwb3J0Lngs
IHZpZXdwb3J0LnksIHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworCisgICAgICAg
IC8vIFBhcmFtcyBmb3IgcmVmZXJlbmNlIGNvbXB1dGF0aW9uLgorICAgICAgICBzYW1wbGVQYXJh
bXMuc2FtcGxlciA9IGdsdVRleHR1cmVVdGlsLm1hcEdMU2FtcGxlcldyYXBTVCgKKyAgICAgICAg
ICAgIGdsLkNMQU1QX1RPX0VER0UsIGdsLkNMQU1QX1RPX0VER0UsCisgICAgICAgICAgICB0aGlz
Lm1fbWluRmlsdGVyLCB0aGlzLm1fbWFnRmlsdGVyCisgICAgICAgICk7CisgICAgICAgIHNhbXBs
ZVBhcmFtcy5zYW1wbGVyLnNlYW1sZXNzQ3ViZU1hcCA9IHRydWU7CisgICAgICAgIHNhbXBsZVBh
cmFtcy5zYW1wbGVyVHlwZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5nZXRTYW1wbGVyVHlwZSh0ZXhG
bXQpOworICAgICAgICBzYW1wbGVQYXJhbXMuY29sb3JCaWFzID0gZm10SW5mby5sb29rdXBCaWFz
OworICAgICAgICBzYW1wbGVQYXJhbXMuY29sb3JTY2FsZSA9IGZtdEluZm8ubG9va3VwU2NhbGU7
CisgICAgICAgIHNhbXBsZVBhcmFtcy5sb2RNb2RlID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1v
ZGUuRVhBQ1Q7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoCisgICAgICAgICAgICAn
Q29vcmRpbmF0ZXM6ICcgKyBjdXJDYXNlLmJvdHRvbUxlZnQgKyAnIC0+ICcgKyBjdXJDYXNlLnRv
cFJpZ2h0CisgICAgICAgICk7CisKKyAgICAgICAgZm9yICh2YXIgZmFjZU5keCA9IDA7CisgICAg
ICAgICAgICBmYWNlTmR4IDwgT2JqZWN0LmtleXModGN1VGV4dHVyZS5DdWJlRmFjZSkubGVuZ3Ro
OworICAgICAgICAgICAgZmFjZU5keCsrKSB7CisgICAgICAgICAgICB2YXIgZmFjZSA9IC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gKi8gKGZhY2VOZHgpOworICAgICAgICAgICAgLyoq
IEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
bmV3IHRjdVN1cmZhY2UuU3VyZmFjZSgKKyAgICAgICAgICAgICAgICB2aWV3cG9ydC53aWR0aCwg
dmlld3BvcnQuaGVpZ2h0CisgICAgICAgICAgICApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgdGV4Q29vcmQ7CisKKyAgICAgICAgICAgIHRleENvb3JkID0g
Z2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVRdWFkVGV4Q29vcmRDdWJlRmFjZSgKKyAgICAgICAg
ICAgICAgICBmYWNlLCBjdXJDYXNlLmJvdHRvbUxlZnQsIGN1ckNhc2UudG9wUmlnaHQKKyAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKAorICAgICAgICAg
ICAgICAgICdGYWNlICcgKyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmdldEZhY2VEZXNjKGZh
Y2UpCisgICAgICAgICAgICApOworCisgICAgICAgICAgICAvLyBcdG9kbyBMb2cgdGV4dHVyZSBj
b29yZGluYXRlcy4KKworICAgICAgICAgICAgdGhpcy5tX3JlbmRlcmVyLnJlbmRlclF1YWQoMCwg
dGV4Q29vcmQsIHNhbXBsZVBhcmFtcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkVmlld3Bv
cnQoCisgICAgICAgICAgICAgICAgZ2wsIFt2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9y
dC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0XQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLworICAgICAgICAgICAgdmFyIGlzTmVhcmVzdE9ubHkgPSB0
aGlzLm1fbWluRmlsdGVyID09IGdsLk5FQVJFU1QgJiYKKyAgICAgICAgICAgICAgICB0aGlzLm1f
bWFnRmlsdGVyID09IGdsLk5FQVJFU1Q7CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVBpeGVs
Rm9ybWF0LlBpeGVsRm9ybWF0fSAqLworICAgICAgICAgICAgdmFyIHBpeGVsRm9ybWF0ID0gdGN1
UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dChnbCk7CisKKyAgICAgICAgICAgIC8v
KGlWZWM0KQorICAgICAgICAgICAgdmFyIGNvbG9yQml0cyA9IGRlTWF0aC5tYXgoCisgICAgICAg
ICAgICAgICAgZGVNYXRoLmFkZFNjYWxhcigKKyAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVy
ZVRlc3RVdGlsLmdldEJpdHNWZWMocGl4ZWxGb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICAv
LyAxIGluYWNjdXJhdGUgYml0IGlmIG5lYXJlc3Qgb25seSwgMiBvdGhlcndpc2UKKyAgICAgICAg
ICAgICAgICAgICAgLTEgKiAoaXNOZWFyZXN0T25seSA/IDEgOiAyKQorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBdCisgICAgICAgICAgICApOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259ICovCisg
ICAgICAgICAgICB2YXIgbG9kUHJlY2lzaW9uID0gbmV3IHRjdVRleExvb2t1cFZlcmlmaWVyLkxv
ZFByZWNpc2lvbigpOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmll
ci5Mb29rdXBQcmVjaXNpb259ICovCisgICAgICAgICAgICB2YXIgbG9va3VwUHJlY2lzaW9uID0g
bmV3IHRjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbigpOworCisgICAgICAgICAg
ICBsb2RQcmVjaXNpb24uZGVyaXZhdGVCaXRzID0gMTA7CisgICAgICAgICAgICBsb2RQcmVjaXNp
b24ubG9kQml0cyA9IDU7CisgICAgICAgICAgICBsb29rdXBQcmVjaXNpb24uY29sb3JUaHJlc2hv
bGQgPSBkZU1hdGguZGl2aWRlKAorICAgICAgICAgICAgICAgIHRjdVRleExvb2t1cFZlcmlmaWVy
LmNvbXB1dGVGaXhlZFBvaW50VGhyZXNob2xkKGNvbG9yQml0cyksCisgICAgICAgICAgICAgICAg
c2FtcGxlUGFyYW1zLmNvbG9yU2NhbGUKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBsb29r
dXBQcmVjaXNpb24uY29vcmRCaXRzID0gWzEwLCAxMCwgMTBdOworICAgICAgICAgICAgbG9va3Vw
UHJlY2lzaW9uLnV2d0JpdHMgPSBbNiwgNiwgMF07CisgICAgICAgICAgICBsb29rdXBQcmVjaXNp
b24uY29sb3JNYXNrID0KKyAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuZ2V0Q29t
cGFyZU1hc2socGl4ZWxGb3JtYXQpOworCisgICAgICAgICAgICB2YXIgaXNIaWdoUXVhbGl0eSA9
IGdsc1RleHR1cmVUZXN0VXRpbC52ZXJpZnlUZXh0dXJlQ3ViZVJlc3VsdCgKKyAgICAgICAgICAg
ICAgICByZXN1bHQuZ2V0QWNjZXNzKCksIGN1ckNhc2UudGV4dHVyZS5nZXRSZWZUZXh0dXJlKCks
CisgICAgICAgICAgICAgICAgdGV4Q29vcmQsIHNhbXBsZVBhcmFtcywgbG9va3VwUHJlY2lzaW9u
LCBsb2RQcmVjaXNpb24sCisgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQKKyAgICAgICAgICAg
ICk7CisKKworICAgICAgICAgICAgaWYgKCFpc0hpZ2hRdWFsaXR5KSB7CisgICAgICAgICAgICAg
ICAgLy8gRXZhbHVhdGUgYWdhaW5zdCBsb3dlciBwcmVjaXNpb24gcmVxdWlyZW1lbnRzLgorICAg
ICAgICAgICAgICAgIGxvZFByZWNpc2lvbi5sb2RCaXRzID0gMjsKKyAgICAgICAgICAgICAgICBs
b29rdXBQcmVjaXNpb24udXZ3Qml0cyA9IFszLCAzLCAwXTsKKworICAgICAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdXYXJuaW5nOiBWZXJpZmljYXRpb24gYWdhaW5zdCBoaWdoICcg
KworICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIHJlcXVpcmVtZW50cyBmYWlsZWQsIHRyeWlu
ZyB3aXRoIGxvd2VyICcgKworICAgICAgICAgICAgICAgICAncmVxdWlyZW1lbnRzLicpOworCisg
ICAgICAgICAgICAgICAgdmFyIGlzT2sgPSBnbHNUZXh0dXJlVGVzdFV0aWwudmVyaWZ5VGV4dHVy
ZUN1YmVSZXN1bHQoCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5nZXRBY2Nlc3MoKSwgY3Vy
Q2FzZS50ZXh0dXJlLmdldFJlZlRleHR1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgdGV4Q29v
cmQsIHNhbXBsZVBhcmFtcywgbG9va3VwUHJlY2lzaW9uLCBsb2RQcmVjaXNpb24sCisgICAgICAg
ICAgICAgICAgICAgIHBpeGVsRm9ybWF0CisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgIGlmICghaXNPaykgeworICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnRVJST1I6IFZlcmlmaWNhdGlvbiBhZ2FpbnN0IGxvdycgKworICAgICAgICAgICAgICAg
ICAgICAgICAgJ3ByZWNpc2lvbiByZXF1aXJlbWVudHMgZmFpbGVkLCBmYWlsaW5nIHRlc3QgY2Fz
ZS4nKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIHZlcmlm
aWNhdGlvbiBmYWlsZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIC8vSW4gSlMgdmVy
c2lvbiwgb25lIG1pc3Rha2UgYW5kIHlvdSdyZSBvdXQKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tNZXNzYWdlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAnTG93LXF1YWxpdHkgZmlsdGVy
aW5nIHJlc3VsdCBpbiBpdGVyYXRpb24gbm8uICcgKworICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5tX2Nhc2VOZHgKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMubV9jYXNlTmR4ICs9IDE7CisgICAgICAgIGlmICh0aGlz
Lm1fY2FzZU5keCA8IHRoaXMubV9jYXNlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gdGN1
VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5DT05USU5VRTsKKworICAgICAgICB0ZXN0UGFzc2VkKCdW
ZXJpZmllZCcpOworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9Q
OworICAgIH07CisKKyAgICAvLyAyRCBhcnJheSBmaWx0ZXJpbmcKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkZpbHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBt
YWdGaWx0ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFMKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gd3JhcFQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUxheWVycworICAgICAqLworICAgIGVzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMuVGV4dHVyZTJEQXJyYXlGaWx0ZXJpbmdDYXNlID0gZnVuY3Rpb24oCisg
ICAgICAgIG5hbWUsIGRlc2MsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsCisg
ICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudW1MYXllcnMKKyAgICApIHsK
KyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsKKyAg
ICAgICAgdGhpcy5tX21pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgdGhpcy5tX21hZ0Zp
bHRlciA9IG1hZ0ZpbHRlcjsKKyAgICAgICAgdGhpcy5tX3dyYXBTID0gd3JhcFM7CisgICAgICAg
IHRoaXMubV93cmFwVCA9IHdyYXBUOworICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBp
bnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3dpZHRoID0gd2lkdGg7CisgICAgICAgIHRo
aXMubV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIHRoaXMubV9udW1MYXllcnMgPSBudW1MYXll
cnM7CisgICAgICAgIHRoaXMubV9ncmFkaWVudFRleCA9IG51bGw7CisgICAgICAgIHRoaXMubV9n
cmlkVGV4ID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNUZXh0dXJlVGVzdFV0aWwuVGV4
dHVyZVJlbmRlcmVyfSAqLworICAgICAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4dHVy
ZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlcigKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMudmVyc2lvbiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9ISUdIUAorICAgICAgICApOworICAgICAgICB0aGlzLm1fdGV4dHVyZXMgPSBbXTsK
KyAgICAgICAgdGhpcy5tX2Nhc2VOZHggPSAwOworICAgICAgICB0aGlzLm1fY2FzZXMgPSBbXTsK
KyAgICB9OworCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRBcnJheUZp
bHRlcmluZ0Nhc2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5wcm90b3R5cGUpOworCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5U
ZXh0dXJlMkRBcnJheUZpbHRlcmluZ0Nhc2UucHJvdG90eXBlLgorICAgIGNvbnN0cnVjdG9yID0g
ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRBcnJheUZpbHRlcmluZ0Nhc2U7CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2dsdVRleHR1cmUu
VGV4dHVyZTJEQXJyYXl9IHRleF8KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGxvZF8K
KyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldF8KKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IGxheWVyUmFuZ2VfCisgICAgICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cy5UZXh0dXJlMkRBcnJheUZpbHRlcmluZ0Nhc2UuRmlsdGVyQ2FzZSA9CisgICAgZnVu
Y3Rpb24oCisgICAgICAgIHRleF8sIGxvZF8sIG9mZnNldF8sIGxheWVyUmFuZ2VfCisgICAgKSB7
CisgICAgICAgIHRoaXMudGV4dHVyZSA9IHRleF87CisgICAgICAgIHRoaXMubG9kID0gbG9kXzsK
KyAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXRfOworICAgICAgICB0aGlzLmxheWVyUmFuZ2Ug
PSBsYXllclJhbmdlXzsKKyAgICB9OworCisgICAgLyoKKyAgICAgKiBpbml0CisgICAgICovCisg
ICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRBcnJheUZpbHRlcmluZ0Nhc2Uu
cHJvdG90eXBlLmluaXQgPQorICAgIGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovCisgICAgICAgICAg
ICB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAg
ICAgICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQKKyAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge3RjdVRleHR1cmVVdGlsLlRleHR1cmVGb3JtYXRJbmZvfSAqLworICAg
ICAgICAgICAgdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5m
byh0ZXhGbXQpOworICAgICAgICAgICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdCgKKyAg
ICAgICAgICAgICAgICBmbXRJbmZvLnZhbHVlTWF4LCBmbXRJbmZvLnZhbHVlTWluCisgICAgICAg
ICAgICApOworICAgICAgICAgICAgdmFyIGNCaWFzID0gZm10SW5mby52YWx1ZU1pbjsKKyAgICAg
ICAgICAgIHZhciBudW1MZXZlbHMgPSBkZU1hdGgubG9nVG9GbG9vcigKKyAgICAgICAgICAgICAg
ICBNYXRoLm1heCh0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpCisgICAgICAgICAgICApICsg
MTsKKworICAgICAgICAgICAgLy8gQ3JlYXRlIHRleHR1cmVzLgorICAgICAgICAgICAgdGhpcy5t
X2dyYWRpZW50VGV4ID0gZ2x1VGV4dHVyZS50ZXh0dXJlMkRBcnJheUZyb21JbnRlcm5hbEZvcm1h
dCgKKyAgICAgICAgICAgICAgICBnbCwKKyAgICAgICAgICAgICAgICB0aGlzLm1faW50ZXJuYWxG
b3JtYXQsIHRoaXMubV93aWR0aCwKKyAgICAgICAgICAgICAgICB0aGlzLm1faGVpZ2h0LCB0aGlz
Lm1fbnVtTGF5ZXJzCisgICAgICAgICAgICApOworCisgICAgICAgICAgICB0aGlzLm1fZ3JpZFRl
eCA9IGdsdVRleHR1cmUudGV4dHVyZTJEQXJyYXlGcm9tSW50ZXJuYWxGb3JtYXQoCisgICAgICAg
ICAgICAgICAgZ2wsCisgICAgICAgICAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0LCB0aGlz
Lm1fd2lkdGgsCisgICAgICAgICAgICAgICAgdGhpcy5tX2hlaWdodCwgdGhpcy5tX251bUxheWVy
cworICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdmFyIGxldmVsU3d6ID0gWworICAgICAg
ICAgICAgICAgIFswLCAxLCAyLCAzXSwKKyAgICAgICAgICAgICAgICBbMiwgMSwgMywgMF0sCisg
ICAgICAgICAgICAgICAgWzMsIDAsIDEsIDJdLAorICAgICAgICAgICAgICAgIFsxLCAzLCAyLCAw
XQorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgLy8gRmlsbCBmaXJzdCBncmFkaWVudCB0
ZXh0dXJlCisgICAgICAgICAgICAvLyAoZ3JhZGllbnQgZGlyZWN0aW9uIHZhcmllcyBiZXR3ZWVu
IGxheWVycykuCisgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7IGxldmVsTmR4IDwg
bnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAgICAgdGhpcy5tX2dyYWRpZW50
VGV4LmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVsKGxldmVsTmR4KTsKKworICAgICAgICAgICAg
ICAgIHZhciBsZXZlbEJ1ZiA9CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9ncmFkaWVudFRl
eC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpOworCisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgbGF5ZXJOZHggPSAwOworICAgICAgICAgICAgICAgICAgICBsYXllck5keCA8IHRo
aXMubV9udW1MYXllcnM7CisgICAgICAgICAgICAgICAgICAgIGxheWVyTmR4KyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIHN3eiA9IGxldmVsU3d6W2xheWVyTmR4ICUgbGV2ZWxTd3oubGVu
Z3RoXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGdNaW4gPSBkZU1hdGguYWRkKGRlTWF0aC5t
dWx0aXBseShkZU1hdGguc3dpenpsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIFswLjAsIDAu
MCwgMC4wLCAxLjBdLCBbc3d6WzBdLCBzd3pbMV0sIHN3elsyXSwgc3d6WzNdXQorICAgICAgICAg
ICAgICAgICAgICApLCBjU2NhbGUpLCBjQmlhcyk7CisgICAgICAgICAgICAgICAgICAgIHZhciBn
TWF4ID0gZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZGVNYXRoLnN3aXp6bGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBbMS4wLCAxLjAsIDEuMCwgMC4wXSwgW3N3elswXSwgc3d6WzFdLCBz
d3pbMl0sIHN3elszXV0KKyAgICAgICAgICAgICAgICAgICAgKSwgY1NjYWxlKSwgY0JpYXMpOwor
CisgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3Jh
ZGllbnRzMkQoCisgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJy
ZWdpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxCdWYsIDAsIDAsIGxheWVy
TmR4LCBsZXZlbEJ1Zi5nZXRXaWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
dmVsQnVmLmdldEhlaWdodCgpLCAxCisgICAgICAgICAgICAgICAgICAgICAgICApLCBnTWluLCBn
TWF4CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBGaWxsIHNlY29uZCB3aXRoIGdyaWQgdGV4dHVyZSAoZWFj
aCBsYXllciBoYXMgdW5pcXVlIGNvbG9ycykuCisgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5k
eCA9IDA7IGxldmVsTmR4IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5tX2dyaWRUZXguZ2V0UmVmVGV4dHVyZSgpLmFsbG9jTGV2ZWwobGV2ZWxOZHgpOwor
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
fSAqLyB2YXIgbGV2ZWxCdWYgPQorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3JpZFRleC5n
ZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpOworCisgICAgICAgICAgICAgICAgZm9y
ICgKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxheWVyTmR4ID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgbGF5ZXJOZHggPCB0aGlzLm1fbnVtTGF5ZXJzOworICAgICAgICAgICAgICAgICAgICBs
YXllck5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwID0gMHgwMGZmZmZmZiAv
IChudW1MZXZlbHMgKiB0aGlzLm1fbnVtTGF5ZXJzIC0gMSk7CisgICAgICAgICAgICAgICAgICAg
IHZhciByZ2IgPSBzdGVwICogKGxldmVsTmR4ICsgbGF5ZXJOZHggKiBudW1MZXZlbHMpOworICAg
ICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbG9yQSA9IGRlTWF0
aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYwMDAwMDAsIHJnYiwgZGVN
YXRoLkJpbmFyeU9wLk9SCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29sb3JCID0gZGVNYXRoLmJpbmFyeU9wKAor
ICAgICAgICAgICAgICAgICAgICAgICAgMHhmZjAwMDAwMCwgZGVNYXRoLmJpbmFyeU5vdChyZ2Ip
LCBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJyZWdpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGV2ZWxCdWYsIDAsIDAsIGxheWVyTmR4LCBsZXZlbEJ1Zi5nZXRXaWR0aCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsQnVmLmdldEhlaWdodCgpLCAxCisgICAg
ICAgICAgICAgICAgICAgICAgICApLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRo
LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21WYWx1ZShjb2xv
ckEpLnRvVmVjKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNTY2FsZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICksIGNCaWFzCisgICAgICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21WYWx1ZShjb2xvckIpLnRvVmVjKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNTY2FsZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICksIGNCaWFzCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBVcGxvYWQuCisgICAgICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXgudXBsb2FkKCk7CisgICAg
ICAgICAgICB0aGlzLm1fZ3JpZFRleC51cGxvYWQoKTsKKworICAgICAgICAgICAgLy8gVGVzdCBj
YXNlcworICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAgICAgbmV3
IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuCisgICAgICAgICAgICAgICAgVGV4dHVyZTJEQXJy
YXlGaWx0ZXJpbmdDYXNlLkZpbHRlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9n
cmFkaWVudFRleCwgWzEuNSwgMi44XSwgWy0xLjAsIC0yLjddLAorICAgICAgICAgICAgICAgICAg
ICBbLTAuNSwgdGhpcy5tX251bUxheWVycyArIDAuNV0KKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApOworICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAg
ICAgbmV3IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuCisgICAgICAgICAgICAgICAgVGV4dHVy
ZTJEQXJyYXlGaWx0ZXJpbmdDYXNlLkZpbHRlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV9ncmlkVGV4LCBbMC4yLCAwLjE3NV0sIFstMi4wLCAtMy43XSwKKyAgICAgICAgICAgICAg
ICAgICAgWy0wLjUsIHRoaXMubV9udW1MYXllcnMgKyAwLjVdCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAorICAgICAgICAg
ICAgICAgIG5ldyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLgorICAgICAgICAgICAgICAgIFRl
eHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZS5GaWx0ZXJDYXNlKAorICAgICAgICAgICAgICAgICAg
ICB0aGlzLm1fZ3JpZFRleCwgWy0wLjgsIC0yLjNdLCBbMC4yLCAtMC4xXSwKKyAgICAgICAgICAg
ICAgICAgICAgW3RoaXMubV9udW1MYXllcnMgKyAwLjUsIC0wLjVdCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgLy8gTGV2ZWwgcm91bmRpbmcgLSBvbmx5
IGluIHNpbmdsZS1zYW1wbGUgY29uZmlncyBhcworICAgICAgICAgICAgLy8gbXVsdGlzYW1wbGUg
Y29uZmlncyBtYXkgcHJvZHVjZSBzbW9vdGggdHJhbnNpdGlvbiBhdCB0aGUgbWlkZGxlLgorICAg
ICAgICAgICAgaWYgKGdsLmdldFBhcmFtZXRlcihnbC5TQU1QTEVTKSA9PSAwKQorICAgICAgICAg
ICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAorICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgVGV4dHVyZTJEQXJyYXlG
aWx0ZXJpbmdDYXNlLkZpbHRlckNhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
Z3JhZGllbnRUZXgsIFstMi4wLCAtMS41XSwgWy0wLjEsIDAuOV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbMS41MDAwMSwgMS40OTk5OV0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHRoaXMubV9jYXNlTmR4ID0gMDsKKyAgICAgICAg
fQorICAgICAgICBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdG8gc2F2ZSBt
ZW1vcnkuCisgICAgICAgICAgICB0aGlzLmRlaW5pdCgpOworICAgICAgICAgICAgdGhyb3cgZTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBkZWluaXQKKyAgICAgKi8KKyAg
ICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZS5w
cm90b3R5cGUuZGVpbml0ID0KKyAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9n
cmFkaWVudFRleCkKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGhpcy5tX2dyYWRpZW50
VGV4LmdldEdMVGV4dHVyZSgpKTsKKyAgICAgICAgaWYgKHRoaXMubV9ncmlkVGV4KQorICAgICAg
ICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLm1fZ3JpZFRleC5nZXRHTFRleHR1cmUoKSk7CisK
KyAgICAgICAgdGhpcy5tX2dyYWRpZW50VGV4ID0gbnVsbDsKKyAgICAgICAgdGhpcy5tX2dyaWRU
ZXggPSBudWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBpdGVyYXRlCisgICAgICogQHJl
dHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBlczNmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZS5wcm90b3R5cGUuaXRl
cmF0ZSA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVGV4dHVyZVRl
c3RVdGlsLlJhbmRvbVZpZXdwb3J0fSAqLworICAgICAgICB2YXIgdmlld3BvcnQgPSBuZXcgZ2xz
VGV4dHVyZVRlc3RVdGlsLlJhbmRvbVZpZXdwb3J0KAorICAgICAgICAgICAgZ2wuY2FudmFzLCBU
RVgzRF9WSUVXUE9SVF9XSURUSCwKKyAgICAgICAgICAgIFRFWDNEX1ZJRVdQT1JUX0hFSUdIVCwg
ZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgICAgIGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0
aGlzLmZ1bGxOYW1lKCkpLAorICAgICAgICAgICAgICAgIGRlTWF0aC5kZU1hdGhIYXNoKHRoaXMu
bV9jYXNlTmR4KSwKKyAgICAgICAgICAgICAgICBkZU1hdGguQmluYXJ5T3AuWE9SCisgICAgICAg
ICAgICApCisgICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVGV4dHVyZUZpbHRl
cmluZ1Rlc3RzLlRleHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZS4KKyAgICAgICAgICogRmlsdGVy
Q2FzZX0gKi8gdmFyIGN1ckNhc2UgPSB0aGlzLm1fY2FzZXNbdGhpcy5tX2Nhc2VOZHhdOworCisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0fSAqLworICAgICAgICB2
YXIgdGV4Rm10ID0gY3VyQ2FzZS50ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5nZXRGb3JtYXQoKTsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRpbC5UZXh0dXJlRm9ybWF0SW5mb30gKi8K
KyAgICAgICAgdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5m
byh0ZXhGbXQpOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdUZXN0JyArIHRoaXMu
bV9jYXNlTmR4KTsKKworICAgICAgICAvKiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRpbC5SZWZl
cmVuY2VQYXJhbXN9ICovCisgICAgICAgIHZhciByZWZQYXJhbXMgPSBuZXcgZ2xzVGV4dHVyZVRl
c3RVdGlsLlJlZmVyZW5jZVBhcmFtcygKKyAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50
ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWQorICAgICAgICApOworCisgICAgICAgIC8q
KiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLworICAgICAgICB2YXIgcmVuZGVyZWQgPSBu
ZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOwor
CisgICAgICAgIGlmICh2aWV3cG9ydC53aWR0aCA8IFRFWDNEX01JTl9WSUVXUE9SVF9XSURUSCB8
fAorICAgICAgICAgICAgdmlld3BvcnQuaGVpZ2h0IDwgVEVYM0RfTUlOX1ZJRVdQT1JUX0hFSUdI
VCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9vIHNtYWxsIHJlbmRlciB0YXJnZXQn
KTsKKworICAgICAgICAvLyBTZXR1cCBwYXJhbXMgZm9yIHJlZmVyZW5jZS4KKyAgICAgICAgcmVm
UGFyYW1zLnNhbXBsZXIgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTFNhbXBsZXIoCisgICAgICAgICAg
ICB0aGlzLm1fd3JhcFMsIHRoaXMubV93cmFwVCwgdGhpcy5tX3dyYXBULAorICAgICAgICAgICAg
dGhpcy5tX21pbkZpbHRlciwgdGhpcy5tX21hZ0ZpbHRlcgorICAgICAgICApOworICAgICAgICBy
ZWZQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwuZ2V0U2FtcGxlclR5cGUo
dGV4Rm10KTsKKyAgICAgICAgcmVmUGFyYW1zLmxvZE1vZGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwu
bG9kTW9kZS5FWEFDVDsKKyAgICAgICAgcmVmUGFyYW1zLmNvbG9yQmlhcyA9IGZtdEluZm8ubG9v
a3VwQmlhczsKKyAgICAgICAgcmVmUGFyYW1zLmNvbG9yU2NhbGUgPSBmbXRJbmZvLmxvb2t1cFNj
YWxlOworCisgICAgICAgIC8vIENvbXB1dGUgdGV4dHVyZSBjb29yZGluYXRlcy4KKyAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoCisgICAgICAgICAgICAnQXBwcm94aW1hdGUgbG9kIHBlciBh
eGlzID0gJyArIGN1ckNhc2UubG9kICsKKyAgICAgICAgICAgICcsIG9mZnNldCA9ICcgKyBjdXJD
YXNlLm9mZnNldAorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbG9kWCA9IGN1ckNhc2UubG9kWzBdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGxvZFkgPSBjdXJDYXNlLmxvZFsxXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBvWCA9IGN1ckNhc2Uub2Zmc2V0WzBdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG9ZID0gY3VyQ2FzZS5vZmZzZXRbMV07CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgc1ggPSBNYXRoLnBvdygyLCBsb2RYKSAqIHZpZXdwb3J0LndpZHRoIC8KKyAgICAg
ICAgICAgIHRoaXMubV9ncmFkaWVudFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0V2lkdGgoKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzWSA9IE1hdGgucG93KDIsIGxvZFkpICog
dmlld3BvcnQuaGVpZ2h0IC8KKyAgICAgICAgICAgIHRoaXMubV9ncmFkaWVudFRleC5nZXRSZWZU
ZXh0dXJlKCkuZ2V0SGVpZ2h0KCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bDAgPSBjdXJDYXNlLmxheWVyUmFuZ2VbMF07CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbDEgPSBjdXJDYXNlLmxheWVyUmFuZ2VbMV07CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSovCisgICAgICAgIHZhciB0ZXhDb29yZCA9IFsKKyAgICAgICAgICAgIG9Y
LCBvWSwgbDAsCisgICAgICAgICAgICBvWCwgb1kgKyBzWSwgbDAgKiAwLjUgKyBsMSAqIDAuNSwK
KyAgICAgICAgICAgIG9YICsgc1gsIG9ZLCBsMCAqIDAuNSArIGwxICogMC41LAorICAgICAgICAg
ICAgb1ggKyBzWCwgb1kgKyBzWSwgbDEKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgY3VyQ2FzZS50ZXh0dXJlLmdldEdMVGV4dHVy
ZSgpKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAgIGdsLlRFWFRVUkVf
MkRfQVJSQVksIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5tX21pbkZpbHRlcgorICAgICAg
ICApOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8y
RF9BUlJBWSwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLm1fbWFnRmlsdGVyCisgICAgICAg
ICk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgZ2wuVEVY
VFVSRV9XUkFQX1MsIHRoaXMubV93cmFwUyk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRF9BUlJBWSwgZ2wuVEVYVFVSRV9XUkFQX1QsIHRoaXMubV93cmFwVCk7CisKKyAg
ICAgICAgZ2wudmlld3BvcnQodmlld3BvcnQueCwgdmlld3BvcnQueSwgdmlld3BvcnQud2lkdGgs
IHZpZXdwb3J0LmhlaWdodCk7CisgICAgICAgIHRoaXMubV9yZW5kZXJlci5yZW5kZXJRdWFkKAor
ICAgICAgICAgICAgMCwgdGV4Q29vcmQsCisgICAgICAgICAgICByZWZQYXJhbXMKKyAgICAgICAg
KTsKKyAgICAgICAgcmVuZGVyZWQucmVhZFZpZXdwb3J0KAorICAgICAgICAgICAgZ2wsIFt2aWV3
cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0XQorICAg
ICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8KKyAgICAgICAgdmFyIGlz
TmVhcmVzdE9ubHkgPSB0aGlzLm1fbWluRmlsdGVyID09IGdsLk5FQVJFU1QgJiYKKyAgICAgICAg
ICAgIHRoaXMubV9tYWdGaWx0ZXIgPT0gZ2wuTkVBUkVTVDsKKyAgICAgICAgLyoqIEB0eXBlIHt0
Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdH0gKi8KKyAgICAgICAgdmFyIHBpeGVsRm9ybWF0ID0g
dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dChnbCk7CisgICAgICAgIC8vKGlW
ZWM0KQorICAgICAgICB2YXIgY29sb3JCaXRzID0gZGVNYXRoLm1heCgKKyAgICAgICAgICAgIGRl
TWF0aC5hZGRTY2FsYXIoCisgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmdldEJp
dHNWZWMocGl4ZWxGb3JtYXQpLAorICAgICAgICAgICAgICAgIC8vIDEgaW5hY2N1cmF0ZSBiaXQg
aWYgbmVhcmVzdCBvbmx5LCAyIG90aGVyd2lzZQorICAgICAgICAgICAgICAgIC0xICogKGlzTmVh
cmVzdE9ubHkgPyAxIDogMikKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbMCwgMCwgMCwg
MF0KKyAgICAgICAgKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5M
b2RQcmVjaXNpb259ICovCisgICAgICAgIHZhciBsb2RQcmVjaXNpb24gPSBuZXcgdGN1VGV4TG9v
a3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4TG9v
a3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSAqLworICAgICAgICB2YXIgbG9va3VwUHJlY2lz
aW9uID0gbmV3IHRjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbigpOworCisgICAg
ICAgIGxvZFByZWNpc2lvbi5kZXJpdmF0ZUJpdHMgPSAxODsKKyAgICAgICAgbG9kUHJlY2lzaW9u
LmxvZEJpdHMgPSA2OworICAgICAgICBsb29rdXBQcmVjaXNpb24uY29sb3JUaHJlc2hvbGQgPSBk
ZU1hdGguZGl2aWRlKAorICAgICAgICAgICAgdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUZp
eGVkUG9pbnRUaHJlc2hvbGQoY29sb3JCaXRzKSwKKyAgICAgICAgICAgIHJlZlBhcmFtcy5jb2xv
clNjYWxlCisgICAgICAgICk7CisgICAgICAgIGxvb2t1cFByZWNpc2lvbi5jb29yZEJpdHMgPSBb
MjAsIDIwLCAyMF07CisgICAgICAgIGxvb2t1cFByZWNpc2lvbi51dndCaXRzID0gWzcsIDcsIDBd
OworICAgICAgICBsb29rdXBQcmVjaXNpb24uY29sb3JNYXNrID0KKyAgICAgICAgICAgIGdsc1Rl
eHR1cmVUZXN0VXRpbC5nZXRDb21wYXJlTWFzayhwaXhlbEZvcm1hdCk7CisKKyAgICAgICAgdmFy
IGlzSGlnaFF1YWxpdHkgPSBnbHNUZXh0dXJlVGVzdFV0aWwudmVyaWZ5VGV4dHVyZTJEQXJyYXlS
ZXN1bHQoCisgICAgICAgICAgICByZW5kZXJlZC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50ZXh0dXJl
LmdldFJlZlRleHR1cmUoKS5nZXRWaWV3KCksCisgICAgICAgICAgICB0ZXhDb29yZCwgcmVmUGFy
YW1zLCBsb29rdXBQcmVjaXNpb24sIGxvZFByZWNpc2lvbiwgcGl4ZWxGb3JtYXQpOworCisgICAg
ICAgIGlmICghaXNIaWdoUXVhbGl0eSkgeworICAgICAgICAgICAgLy8gRXZhbHVhdGUgYWdhaW5z
dCBsb3dlciBwcmVjaXNpb24gcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgbG9kUHJlY2lzaW9u
LmxvZEJpdHMgPSAzOworICAgICAgICAgICAgbG9va3VwUHJlY2lzaW9uLnV2d0JpdHMgPSBbMywg
MywgMF07CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKAorICAgICAgICAgICAg
ICAgICdXYXJuaW5nOiBWZXJpZmljYXRpb24gYWdhaW5zdCBoaWdoICcgKworICAgICAgICAgICAg
ICAgICdwcmVjaXNpb24gcmVxdWlyZW1lbnRzIGZhaWxlZCwgJyArCisgICAgICAgICAgICAgICAg
J3RyeWluZyB3aXRoIGxvd2VyIHJlcXVpcmVtZW50cy4nCisgICAgICAgICAgICApOworCisgICAg
ICAgICAgICB2YXIgaXNPayA9IGdsc1RleHR1cmVUZXN0VXRpbC52ZXJpZnlUZXh0dXJlMkRBcnJh
eVJlc3VsdCgKKyAgICAgICAgICAgICAgICByZW5kZXJlZC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50
ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5nZXRWaWV3KCksCisgICAgICAgICAgICAgICAgdGV4Q29v
cmQsIHJlZlBhcmFtcywgbG9va3VwUHJlY2lzaW9uLCBsb2RQcmVjaXNpb24sIHBpeGVsRm9ybWF0
CisgICAgICAgICAgICApOworCisgICAgICAgICAgICBpZiAoIWlzT2spIHsKKyAgICAgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgKKyAgICAgICAgICAgICAgICAgICAgJ0VSUk9SOiBW
ZXJpZmljYXRpb24gYWdhaW5zdCBsb3cgcHJlY2lzaW9uIHJlcXVpcmVtZW50cyAnICsKKyAgICAg
ICAgICAgICAgICAgICAgJ2ZhaWxlZCwgZmFpbGluZyB0ZXN0IGNhc2UuJworICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIHZlcmlmaWNh
dGlvbiBmYWlsZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgLy9JbiBKUyB2ZXJzaW9uLCBv
bmUgbWlzdGFrZSBhbmQgeW91J3JlIG91dAorICAgICAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0
Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBjaGVja01lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICAnTG93LXF1YWxpdHkgZmlsdGVyaW5nIHJlc3VsdCBpbiBpdGVyYXRpb24gbm8u
ICcgKworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY2FzZU5keAorICAgICAgICAgICAgICAg
ICk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm1fY2FzZU5keCArPSAxOworICAgICAgICBp
ZiAodGhpcy5tX2Nhc2VOZHggPCB0aGlzLm1fY2FzZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUU7CisKKyAgICAgICAgdGVzdFBh
c3NlZCgnVmVyaWZpZWQnKTsKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKKyAgICB9OworCisgICAgLy8gM0QgZmlsdGVyaW5nCisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5GaWx0ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
bWFnRmlsdGVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdyYXBTCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHdyYXBUCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdyYXBSCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0
aAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTNERmlsdGVy
aW5nQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBtaW5GaWx0ZXIsIG1hZ0Zp
bHRlciwgd3JhcFMsIHdyYXBULCB3cmFwUiwgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgIHdpZHRo
LCBoZWlnaHQsIGRlcHRoCisgICAgKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNh
bGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgICAgIHRoaXMubV9taW5GaWx0ZXIgPSBtaW5GaWx0
ZXI7CisgICAgICAgIHRoaXMubV9tYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7CisgICAgICAgIHRoaXMu
bV93cmFwUyA9IHdyYXBTOworICAgICAgICB0aGlzLm1fd3JhcFQgPSB3cmFwVDsKKyAgICAgICAg
dGhpcy5tX3dyYXBSID0gd3JhcFI7CisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGlu
dGVybmFsRm9ybWF0OworICAgICAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhp
cy5tX2hlaWdodCA9IGhlaWdodDsKKyAgICAgICAgdGhpcy5tX2RlcHRoID0gZGVwdGg7CisgICAg
ICAgIHRoaXMubV9ncmFkaWVudFRleCA9IG51bGw7CisgICAgICAgIHRoaXMubV9ncmlkVGV4ID0g
bnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNUZXh0dXJlVGVzdFV0aWwuVGV4dHVyZVJlbmRl
cmVyfSAqLworICAgICAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGls
LlRleHR1cmVSZW5kZXJlcigKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMu
dmVyc2lvbiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9I
SUdIUAorICAgICAgICApOworICAgICAgICB0aGlzLm1fY2FzZU5keCA9IDA7CisgICAgICAgIHRo
aXMubV9jYXNlcyA9IFtdOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3Rz
LlRleHR1cmUzREZpbHRlcmluZ0Nhc2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0
ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworCisgICAgZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy5UZXh0dXJlM0RGaWx0ZXJpbmdDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
CisgICAgICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTNERmlsdGVyaW5nQ2Fz
ZTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7Z2x1VGV4
dHVyZS5UZXh0dXJlM0R9IHRleF8KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGxvZF8K
KyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IG9mZnNldF8KKyAgICAgKi8KKyAgICBlczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUzREZpbHRlcmluZ0Nhc2UuRmlsdGVyQ2FzZSA9
IGZ1bmN0aW9uKAorICAgICAgICB0ZXhfLCBsb2RfLCBvZmZzZXRfCisgICAgKSB7CisgICAgICAg
IHRoaXMudGV4dHVyZSA9IHRleF87CisgICAgICAgIHRoaXMubG9kID0gbG9kXzsKKyAgICAgICAg
dGhpcy5vZmZzZXQgPSBvZmZzZXRfOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBpbml0Cisg
ICAgICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlM0RGaWx0ZXJpbmdD
YXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oCisgICAgKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8KKyAgICAg
ICAgICAgIHZhciB0ZXhGbXQgPQorICAgICAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdM
SW50ZXJuYWxGb3JtYXQodGhpcy5tX2ludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7dGN1VGV4dHVyZVV0aWwuVGV4dHVyZUZvcm1hdEluZm99ICovCisgICAgICAgICAgICB2
YXIgZm10SW5mbyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKHRleEZtdCk7
CisgICAgICAgICAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRyYWN0KAorICAgICAgICAgICAg
ICAgIGZtdEluZm8udmFsdWVNYXgsIGZtdEluZm8udmFsdWVNaW4KKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICB2YXIgY0JpYXMgPSBmbXRJbmZvLnZhbHVlTWluOworICAgICAgICAgICAgdmFy
IG51bUxldmVscyA9IGRlTWF0aC5sb2dUb0Zsb29yKAorICAgICAgICAgICAgICAgIE1hdGgubWF4
KE1hdGgubWF4KHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCksIHRoaXMubV9kZXB0aCkKKyAg
ICAgICAgICAgICkgKyAxOworCisgICAgICAgICAgICAvLyBDcmVhdGUgdGV4dHVyZXMuCisgICAg
ICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXggPSBnbHVUZXh0dXJlLnRleHR1cmUzREZyb21JbnRl
cm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBnbCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2RlcHRo
CisgICAgICAgICAgICApOworCisgICAgICAgICAgICB0aGlzLm1fZ3JpZFRleCA9IGdsdVRleHR1
cmUudGV4dHVyZTNERnJvbUludGVybmFsRm9ybWF0KAorICAgICAgICAgICAgICAgIGdsLCB0aGlz
Lm1faW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgdGhpcy5tX3dpZHRoLCB0aGlzLm1f
aGVpZ2h0LCB0aGlzLm1fZGVwdGgKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIC8vIEZp
bGwgZmlyc3QgZ3JhZGllbnQgdGV4dHVyZS4KKyAgICAgICAgICAgIGZvciAodmFyIGxldmVsTmR4
ID0gMDsgbGV2ZWxOZHggPCBudW1MZXZlbHM7IGxldmVsTmR4KyspIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZ01pbiA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5tdWx0
aXBseShbMC4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAgICAgICAgICAgICAg
ICApOworCisgICAgICAgICAgICAgICAgdmFyIGdNYXggPSBkZU1hdGguYWRkKAorICAgICAgICAg
ICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzEuMCwgMS4wLCAxLjAsIDAuMF0sIGNTY2FsZSks
IGNCaWFzCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHRoaXMubV9ncmFk
aWVudFRleC5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbChsZXZlbE5keCk7CisgICAgICAgICAg
ICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMubV9ncmFkaWVudFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwo
bGV2ZWxOZHgpLAorICAgICAgICAgICAgICAgICAgICBnTWluLCBnTWF4CisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRmlsbCBzZWNvbmQgd2l0aCBn
cmlkIHRleHR1cmUuCisgICAgICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7IGxldmVsTmR4
IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBzdGVwID0gMHgwMGZmZmZmZiAvIG51bUxldmVsczsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJnYiA9IHN0ZXAgKiBsZXZlbE5keDsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbG9yQSA9IGRlTWF0aC5i
aW5hcnlPcCgKKyAgICAgICAgICAgICAgICAgICAgMHhmZjAwMDAwMCwgcmdiLCBkZU1hdGguQmlu
YXJ5T3AuT1IKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgY29sb3JCID0gZGVNYXRoLmJpbmFyeU9wKAorICAgICAgICAgICAgICAg
ICAgICAweGZmMDAwMDAwLCBkZU1hdGguYmluYXJ5Tm90KHJnYiksIGRlTWF0aC5CaW5hcnlPcC5P
UgorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fZ3JpZFRleC5n
ZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbChsZXZlbE5keCk7CisgICAgICAgICAgICAgICAgdGN1
VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3Jp
ZFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpLCA0LAorICAgICAgICAgICAg
ICAgICAgICBkZU1hdGguYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLm11bHRp
cGx5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21WYWx1
ZShjb2xvckEpLnRvVmVjKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1NjYWxlCisg
ICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgY0JpYXMK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmFkZCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0Y3VSR0JBLm5ld1JHQkFGcm9tVmFsdWUoY29sb3JCKS50b1ZlYygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNTY2FsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNCaWFzCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBV
cGxvYWQuCisgICAgICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXgudXBsb2FkKCk7CisgICAgICAg
ICAgICB0aGlzLm1fZ3JpZFRleC51cGxvYWQoKTsKKworICAgICAgICAgICAgLy8gVGVzdCBjYXNl
cworICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAgICAgbmV3IGVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTNERmlsdGVyaW5nQ2FzZS5GaWx0ZXJDYXNl
KAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXgsIFsxLjUsIDIuOCwgMS4w
XSwgWy0xLjAsIC0yLjcsIC0yLjI3NV0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp
OworICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2goCisgICAgICAgICAgICAgICAgbmV3IGVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTNERmlsdGVyaW5nQ2FzZS5GaWx0ZXJDYXNl
KAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXgsIFstMi4wLCAtMS41LCAt
MS44XSwgWy0wLjEsIDAuOSwgLTAuMjVdCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKAorICAgICAgICAgICAgICAgIG5ldyBl
czNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUzREZpbHRlcmluZ0Nhc2UuRmlsdGVyQ2Fz
ZSgKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2dyaWRUZXgsIFswLjIsIDAuMTc1LCAwLjNd
LCBbLTIuMCwgLTMuNywgLTEuODI1XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlM0RGaWx0ZXJpbmdDYXNlLkZpbHRlckNhc2Uo
CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9ncmlkVGV4LCBbLTAuOCwgLTIuMywgLTIuNV0s
IFswLjIsIC0wLjEsIDEuMzI1XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisK
KyAgICAgICAgICAgIHRoaXMubV9jYXNlTmR4ID0gMDsKKyAgICAgICAgfQorICAgICAgICBjYXRj
aCAoZSkgeworICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdG8gc2F2ZSBtZW1vcnkuCisgICAgICAg
ICAgICB0aGlzLmRlaW5pdCgpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBkZWluaXQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLlRleHR1cmUzREZpbHRlcmluZ0Nhc2UucHJvdG90eXBlLmRlaW5pdCA9Cisg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLm1fZ3JhZGllbnRUZXgpCisgICAgICAg
ICAgICBnbC5kZWxldGVUZXh0dXJlKHRoaXMubV9ncmFkaWVudFRleC5nZXRHTFRleHR1cmUoKSk7
CisgICAgICAgIGlmICh0aGlzLm1fZ3JpZFRleCkKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1
cmUodGhpcy5tX2dyaWRUZXguZ2V0R0xUZXh0dXJlKCkpOworCisgICAgICAgIHRoaXMubV9ncmFk
aWVudFRleCA9IG51bGw7CisgICAgICAgIHRoaXMubV9ncmlkVGV4ID0gbnVsbDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAg
ICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUzREZpbHRlcmluZ0Nh
c2UucHJvdG90eXBlLml0ZXJhdGUgPQorICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5
cGUge2dsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydH0gKi8KKyAgICAgICAgdmFyIHZp
ZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydCgKKyAgICAgICAg
ICAgIGdsLmNhbnZhcywgVEVYM0RfVklFV1BPUlRfV0lEVEgsCisgICAgICAgICAgICBURVgzRF9W
SUVXUE9SVF9IRUlHSFQsIGRlTWF0aC5iaW5hcnlPcCgKKyAgICAgICAgICAgICAgICBkZVN0cmlu
Zy5kZVN0cmluZ0hhc2godGhpcy5mdWxsTmFtZSgpKSwKKyAgICAgICAgICAgICAgICBkZU1hdGgu
ZGVNYXRoSGFzaCh0aGlzLm1fY2FzZU5keCksCisgICAgICAgICAgICAgICAgZGVNYXRoLkJpbmFy
eU9wLlhPUgorICAgICAgICAgICAgKQorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlM0RGaWx0ZXJpbmdDYXNlLkZpbHRlckNh
c2V9CisgICAgICAgICAqLyB2YXIgY3VyQ2FzZSA9IHRoaXMubV9jYXNlc1t0aGlzLm1fY2FzZU5k
eF07CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9ICovCisg
ICAgICAgIHZhciB0ZXhGbXQgPSBjdXJDYXNlLnRleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdldEZv
cm1hdCgpOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmVVdGlsLlRleHR1cmVGb3JtYXRJ
bmZvfSAqLworICAgICAgICB2YXIgZm10SW5mbyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVG
b3JtYXRJbmZvKHRleEZtdCk7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Rlc3Qn
ICsgdGhpcy5tX2Nhc2VOZHgpOworICAgICAgICAvKiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRp
bC5SZWZlcmVuY2VQYXJhbXN9ICovCisgICAgICAgIHZhciByZWZQYXJhbXMgPSBuZXcgZ2xzVGV4
dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtcygKKyAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0
VXRpbC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8zRAorICAgICAgICApOworCisgICAgICAgIC8q
KiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLworICAgICAgICB2YXIgcmVuZGVyZWQgPSBu
ZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59Ki8KKyAgICAgICAgdmFyIHRleENvb3Jk
ID0gW107CisKKyAgICAgICAgaWYgKHZpZXdwb3J0LndpZHRoIDwgVEVYM0RfTUlOX1ZJRVdQT1JU
X1dJRFRIIHx8CisgICAgICAgICAgICB2aWV3cG9ydC5oZWlnaHQgPCBURVgzRF9NSU5fVklFV1BP
UlRfSEVJR0hUKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb28gc21hbGwgcmVuZGVy
IHRhcmdldCcpOworCisgICAgICAgIC8vIFNldHVwIHBhcmFtcyBmb3IgcmVmZXJlbmNlLgorICAg
ICAgICByZWZQYXJhbXMuc2FtcGxlciA9IGdsdVRleHR1cmVVdGlsLm1hcEdMU2FtcGxlcigKKyAg
ICAgICAgICAgIHRoaXMubV93cmFwUywgdGhpcy5tX3dyYXBULCB0aGlzLm1fd3JhcFIsCisgICAg
ICAgICAgICB0aGlzLm1fbWluRmlsdGVyLCB0aGlzLm1fbWFnRmlsdGVyCisgICAgICAgICk7CisK
KyAgICAgICAgLy8gU2V0dXAgcGFyYW1zIGZvciByZWZlcmVuY2UuCisgICAgICAgIHJlZlBhcmFt
cy5zYW1wbGVyVHlwZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5nZXRTYW1wbGVyVHlwZSh0ZXhGbXQp
OworICAgICAgICByZWZQYXJhbXMubG9kTW9kZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5sb2RNb2Rl
LkVYQUNUOworICAgICAgICByZWZQYXJhbXMuY29sb3JCaWFzID0gZm10SW5mby5sb29rdXBCaWFz
OworICAgICAgICByZWZQYXJhbXMuY29sb3JTY2FsZSA9IGZtdEluZm8ubG9va3VwU2NhbGU7CisK
KyAgICAgICAgLy8gQ29tcHV0ZSB0ZXh0dXJlIGNvb3JkaW5hdGVzLgorICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnQXBwcm94aW1hdGUgbG9kIHBlciBheGlzID0gJyArIGN1ckNhc2UubG9k
ICsKKyAgICAgICAgICAgICcsIG9mZnNldCA9ICcgKyBjdXJDYXNlLm9mZnNldCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2RYID0gY3VyQ2FzZS5sb2RbMF07CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9kWSA9IGN1ckNhc2UubG9kWzFdOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZFogPSBjdXJDYXNlLmxvZFsyXTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvWCA9IGN1ckNhc2Uub2Zmc2V0WzBdOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9ZID0gY3VyQ2FzZS5vZmZzZXRbMV07
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb1ogPSBjdXJDYXNlLm9mZnNldFsy
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzWCA9IE1hdGgucG93KDIsIGxv
ZFgpICogdmlld3BvcnQud2lkdGggLworICAgICAgICAgICAgdGhpcy5tX2dyYWRpZW50VGV4Lmdl
dFJlZlRleHR1cmUoKS5nZXRXaWR0aCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHNZID0gTWF0aC5wb3coMiwgbG9kWSkgKiB2aWV3cG9ydC5oZWlnaHQgLworICAgICAgICAg
ICAgdGhpcy5tX2dyYWRpZW50VGV4LmdldFJlZlRleHR1cmUoKS5nZXRIZWlnaHQoKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzWiA9IE1hdGgucG93KDIsIGxvZFopICoKKyAg
ICAgICAgICAgIE1hdGgubWF4KHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpIC8KKyAg
ICAgICAgICAgIHRoaXMubV9ncmFkaWVudFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0RGVwdGgoKTsK
KworICAgICAgICB0ZXhDb29yZFswXSA9IG9YOyB0ZXhDb29yZFsxXSA9IG9ZOyB0ZXhDb29yZFsy
XSA9IG9aOworICAgICAgICB0ZXhDb29yZFszXSA9IG9YOyB0ZXhDb29yZFs0XSA9IG9ZICsgc1k7
IHRleENvb3JkWzVdID0gb1ogKyBzWiAqIDAuNTsKKyAgICAgICAgdGV4Q29vcmRbNl0gPSBvWCAr
IHNYOyB0ZXhDb29yZFs3XSA9IG9ZOyB0ZXhDb29yZFs4XSA9IG9aICsgc1ogKiAwLjU7CisgICAg
ICAgIHRleENvb3JkWzldID0gb1ggKyBzWDsgdGV4Q29vcmRbMTBdID0gb1kgKyBzWTsgdGV4Q29v
cmRbMTFdID0gb1ogKyBzWjsKKworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNE
LCBjdXJDYXNlLnRleHR1cmUuZ2V0R0xUZXh0dXJlKCkpOworICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0
aGlzLm1fbWluRmlsdGVyCisgICAgICAgICk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoCisg
ICAgICAgICAgICBnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX01BR19GSUxURVIsIHRoaXMubV9t
YWdGaWx0ZXIKKyAgICAgICAgKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzNELCBnbC5URVhUVVJFX1dSQVBfUywgdGhpcy5tX3dyYXBTKTsKKyAgICAgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX1dSQVBfVCwgdGhpcy5tX3dyYXBUKTsK
KyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzNELCBnbC5URVhUVVJFX1dSQVBf
UiwgdGhpcy5tX3dyYXBSKTsKKworICAgICAgICBnbC52aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3
cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5t
X3JlbmRlcmVyLnJlbmRlclF1YWQoMCwgdGV4Q29vcmQsIHJlZlBhcmFtcyk7CisgICAgICAgIHJl
bmRlcmVkLnJlYWRWaWV3cG9ydCgKKyAgICAgICAgICAgIGdsLCBbdmlld3BvcnQueCwgdmlld3Bv
cnQueSwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodF0KKyAgICAgICAgKTsKKworICAg
ICAgICB2YXIgaXNOZWFyZXN0T25seSA9IHRoaXMubV9taW5GaWx0ZXIgPT0gZ2wuTkVBUkVTVCAm
JgorICAgICAgICAgICAgdGhpcy5tX21hZ0ZpbHRlciA9PSBnbC5ORUFSRVNUOworICAgICAgICAv
KiogQHR5cGUge3RjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0fSAqLworICAgICAgICB2YXIgcGl4
ZWxGb3JtYXQgPSB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdEZyb21Db250ZXh0KGdsKTsKKyAg
ICAgICAgLy8oaVZlYzQpCisgICAgICAgIHZhciBjb2xvckJpdHMgPSBkZU1hdGgubWF4KAorICAg
ICAgICAgICAgZGVNYXRoLmFkZFNjYWxhcigKKyAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwuZ2V0Qml0c1ZlYyhwaXhlbEZvcm1hdCksCisgICAgICAgICAgICAgICAgLy8gMSBpbmFj
Y3VyYXRlIGJpdCBpZiBuZWFyZXN0IG9ubHksIDIgb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAg
LTEgKiAoaXNOZWFyZXN0T25seSA/IDEgOiAyKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
IFswLCAwLCAwLCAwXQorICAgICAgICApOworICAgICAgICAvKiogQHR5cGUge3RjdVRleExvb2t1
cFZlcmlmaWVyLkxvZFByZWNpc2lvbn0gKi8KKyAgICAgICAgdmFyIGxvZFByZWNpc2lvbiA9IG5l
dyB0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb24oKTsKKyAgICAgICAgLyoqIEB0eXBl
IHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259ICovCisgICAgICAgIHZhciBs
b29rdXBQcmVjaXNpb24gPSBuZXcgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9u
KCk7CisKKyAgICAgICAgbG9kUHJlY2lzaW9uLmRlcml2YXRlQml0cyA9IDE4OworICAgICAgICBs
b2RQcmVjaXNpb24ubG9kQml0cyA9IDY7CisgICAgICAgIGxvb2t1cFByZWNpc2lvbi5jb2xvclRo
cmVzaG9sZCA9IGRlTWF0aC5kaXZpZGUoCisgICAgICAgICAgICB0Y3VUZXhMb29rdXBWZXJpZmll
ci5jb21wdXRlRml4ZWRQb2ludFRocmVzaG9sZChjb2xvckJpdHMpLAorICAgICAgICAgICAgcmVm
UGFyYW1zLmNvbG9yU2NhbGUKKyAgICAgICAgKTsKKyAgICAgICAgbG9va3VwUHJlY2lzaW9uLmNv
b3JkQml0cyA9IFsyMCwgMjAsIDIwXTsKKyAgICAgICAgbG9va3VwUHJlY2lzaW9uLnV2d0JpdHMg
PSBbNywgNywgN107CisgICAgICAgIGxvb2t1cFByZWNpc2lvbi5jb2xvck1hc2sgPQorICAgICAg
ICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmdldENvbXBhcmVNYXNrKHBpeGVsRm9ybWF0KTsKKwor
ICAgICAgICB2YXIgaXNIaWdoUXVhbGl0eSA9IGdsc1RleHR1cmVUZXN0VXRpbC52ZXJpZnlUZXh0
dXJlM0RSZXN1bHQoCisgICAgICAgICAgICByZW5kZXJlZC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50
ZXh0dXJlLmdldFJlZlRleHR1cmUoKSwKKyAgICAgICAgICAgIHRleENvb3JkLCByZWZQYXJhbXMs
IGxvb2t1cFByZWNpc2lvbiwgbG9kUHJlY2lzaW9uLCBwaXhlbEZvcm1hdAorICAgICAgICApOwor
CisgICAgICAgIGlmICghaXNIaWdoUXVhbGl0eSkgeworICAgICAgICAgICAgLy8gRXZhbHVhdGUg
YWdhaW5zdCBsb3dlciBwcmVjaXNpb24gcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgbG9kUHJl
Y2lzaW9uLmxvZEJpdHMgPSA0OworICAgICAgICAgICAgbG9va3VwUHJlY2lzaW9uLnV2d0JpdHMg
PSBbNCwgNCwgNF07CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKAorICAgICAg
ICAgICAgICAgICdXYXJuaW5nOiBWZXJpZmljYXRpb24gYWdhaW5zdCBoaWdoIHByZWNpc2lvbiAn
ICsKKyAgICAgICAgICAgICAgICAncmVxdWlyZW1lbnRzIGZhaWxlZCwgdHJ5aW5nIHdpdGggbG93
ZXIgcmVxdWlyZW1lbnRzLicKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHZhciBpc09r
ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnZlcmlmeVRleHR1cmUzRFJlc3VsdCgKKyAgICAgICAgICAg
ICAgICByZW5kZXJlZC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50ZXh0dXJlLmdldFJlZlRleHR1cmUo
KSwKKyAgICAgICAgICAgICAgICB0ZXhDb29yZCwgcmVmUGFyYW1zLCBsb29rdXBQcmVjaXNpb24s
IGxvZFByZWNpc2lvbiwgcGl4ZWxGb3JtYXQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAg
IGlmICghaXNPaykgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJP
UjogVmVyaWZpY2F0aW9uIGFnYWluc3QgbG93ICcgKworICAgICAgICAgICAgICAgICAgICAncHJl
Y2lzaW9uIHJlcXVpcmVtZW50cyBmYWlsZWQsIGZhaWxpbmcgdGVzdCBjYXNlLicKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSB2ZXJp
ZmljYXRpb24gZmFpbGVkJywgZmFsc2UpOworICAgICAgICAgICAgICAgIC8vSW4gSlMgdmVyc2lv
biwgb25lIG1pc3Rha2UgYW5kIHlvdSdyZSBvdXQKKyAgICAgICAgICAgICAgICByZXR1cm4gdGN1
VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgY2hlY2tNZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgJ0xvdy1xdWFsaXR5IGZpbHRlcmluZyByZXN1bHQgaW4gaXRlcmF0aW9u
IG5vLiAnICsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2Nhc2VOZHgKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX2Nhc2VOZHggKz0gMTsKKyAgICAg
ICAgaWYgKHRoaXMubV9jYXNlTmR4IDwgdGhpcy5tX2Nhc2VzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LkNPTlRJTlVFOworCisgICAgICAgIHRl
c3RQYXNzZWQoJ1ZlcmlmaWVkJyk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRl
UmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKiBAdHlwZWRlZiB7e25hbWU6IHN0cmluZywg
bW9kZTogbnVtYmVyfX0gKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLldyYXBNb2Rl
OworCisgICAgLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nLCBtb2RlOiBudW1iZXJ9fSAqLwor
ICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuTWluRmlsdGVyTW9kZTsKKworICAgIC8qKiBA
dHlwZWRlZiB7e25hbWU6IHN0cmluZywgbW9kZTogbnVtYmVyfX0gKi8KKyAgICBlczNmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzLk1hZ0ZpbHRlck1vZGVzOworCisgICAgLyoqIEB0eXBlZGVmIHt7d2lk
dGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9fSAqLworICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMuU2l6ZXMyRDsKKworICAgIC8qKiBAdHlwZWRlZiB7e3dpZHRoOiBudW1iZXIsIGhlaWdo
dDogbnVtYmVyfX0gKi8KKyAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlNpemVzQ3ViZTsK
KworICAgIC8qKiBAdHlwZWRlZiB7e3dpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBudW1M
YXllcnM6IG51bWJlcn19ICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5TaXplczJE
QXJyYXk7CisKKyAgICAvKiogQHR5cGVkZWYge3t3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJl
ciwgZGVwdGg6IG51bWJlcn19ICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5TaXpl
czNEOworCisgICAgLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nLCBmb3JtYXQ6IG51bWJlcn19
ICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5GaWx0ZXJhYmxlRm9ybWF0c0J5VHlw
ZTsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZUZpbHRl
cmluZ1Rlc3RzLlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5wcm90b3R5cGUuaW5pdCA9CisgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5XcmFwTW9kZT59ICovCisgICAgICAgIHZhciB3cmFwTW9kZXMgPSBbeworICAgICAgICAg
ICAgICAgIG5hbWU6ICdjbGFtcCcsIG1vZGU6IGdsLkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmVwZWF0JywgbW9kZTogZ2wuUkVQRUFUCisg
ICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ21pcnJvcicsIG1vZGU6IGds
Lk1JUlJPUkVEX1JFUEVBVAorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5NaW5GaWx0ZXJNb2RlPn0g
Ki8KKyAgICAgICAgdmFyIG1pbkZpbHRlck1vZGVzID0gW3sKKyAgICAgICAgICAgICAgICBuYW1l
OiAnbmVhcmVzdCcsIG1vZGU6IGdsLk5FQVJFU1QKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAnbGluZWFyJywgbW9kZTogZ2wuTElORUFSCisgICAgICAgICAgICB9LCB7
CisgICAgICAgICAgICAgICAgbmFtZTogJ25lYXJlc3RfbWlwbWFwX25lYXJlc3QnLCBtb2RlOiBn
bC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAg
ICAgbmFtZTogJ2xpbmVhcl9taXBtYXBfbmVhcmVzdCcsIG1vZGU6IGdsLkxJTkVBUl9NSVBNQVBf
TkVBUkVTVAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICduZWFyZXN0
X21pcG1hcF9saW5lYXInLCBtb2RlOiBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIKKyAgICAgICAg
ICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnbGluZWFyX21pcG1hcF9saW5lYXInLCBt
b2RlOiBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUgorICAgICAgICAgICAgfQorICAgICAgICBdOwor
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5NYWdG
aWx0ZXJNb2Rlcz59ICovCisgICAgICAgIHZhciBtYWdGaWx0ZXJNb2RlcyA9IFt7CisgICAgICAg
ICAgICAgICAgICAgbmFtZTogJ25lYXJlc3QnLCBtb2RlOiBnbC5ORUFSRVNUCisgICAgICAgICAg
ICB9LCB7CisgICAgICAgICAgICAgICAgICAgbmFtZTogJ2xpbmVhcicsIG1vZGU6IGdsLkxJTkVB
UgorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5TaXplczJEPn0gKi8KKyAgICAgICAgdmFyIHNpemVz
MkQgPSBbeworICAgICAgICAgICAgICAgIHdpZHRoOiA0LCBoZWlnaHQ6IDgKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzIsIGhlaWdodDogNjQKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTI4LCBoZWlnaHQ6IDEyOAorICAgICAgICAg
ICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzLCBoZWlnaHQ6IDcKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzEsIGhlaWdodDogNTUKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTI3LCBoZWlnaHQ6IDk5CisgICAgICAgICAg
ICB9CisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLlNpemVzQ3ViZT59ICovCisgICAgICAgIHZhciBzaXplc0N1YmUgPSBbewor
ICAgICAgICAgICAgICAgIHdpZHRoOiA4LCBoZWlnaHQ6IDgKKyAgICAgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogNjQsIGhlaWdodDogNjQKKyAgICAgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMTI4LCBoZWlnaHQ6IDEyOAorICAgICAgICAgICAgfSwgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiA3LCBoZWlnaHQ6IDcKKyAgICAgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogNjMsIGhlaWdodDogNjMKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgXTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMuU2l6ZXMyREFycmF5Pn0gKi8KKyAgICAgICAgdmFyIHNpemVzMkRBcnJheSA9IFt7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDQsIGhlaWdodDogOCwgbnVtTGF5ZXJzOiA4CisgICAgICAgICAg
ICB9LCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMyLCBoZWlnaHQ6IDY0LCBudW1MYXllcnM6
IDE2CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEyOCwgaGVpZ2h0
OiAzMiwgbnVtTGF5ZXJzOiA2NAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzLCBoZWlnaHQ6IDcsIG51bUxheWVyczogNQorICAgICAgICAgICAgfSwgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiA2MywgaGVpZ2h0OiA2MywgbnVtTGF5ZXJzOiA2MworICAgICAgICAg
ICAgfQorICAgICAgICBdOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5TaXplczNEPn0gKi8KKyAgICAgICAgdmFyIHNpemVzM0QgPSBbeworICAg
ICAgICAgICAgICAgIHdpZHRoOiA0LCBoZWlnaHQ6IDgsIGRlcHRoOiA4CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMyLCBoZWlnaHQ6IDY0LCBkZXB0aDogMTYKKyAg
ICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTI4LCBoZWlnaHQ6IDMyLCBk
ZXB0aDogNjQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMywgaGVp
Z2h0OiA3LCBkZXB0aDogNQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRo
OiA2MywgaGVpZ2h0OiA2MywgZGVwdGg6IDYzCisgICAgICAgICAgICB9CisgICAgICAgIF07CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLkZpbHRl
cmFibGVGb3JtYXRzQnlUeXBlPn0gKi8KKyAgICAgICAgdmFyIGZpbHRlcmFibGVGb3JtYXRzQnlU
eXBlID0gW3sKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYTE2ZicsIGZvcm1hdDogZ2wuUkdC
QTE2RgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyMTFmX2cxMWZf
YjEwZicsIGZvcm1hdDogZ2wuUjExRl9HMTFGX0IxMEYKKyAgICAgICAgICAgIH0sIHsKKyAgICAg
ICAgICAgICAgICBuYW1lOiAncmdiOV9lNScsIGZvcm1hdDogZ2wuUkdCOV9FNQorICAgICAgICAg
ICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhOCcsIGZvcm1hdDogZ2wuUkdCQTgK
KyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThfc25vcm0nLCBm
b3JtYXQ6IGdsLlJHQkE4X1NOT1JNCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAg
bmFtZTogJ3JnYjU2NScsIGZvcm1hdDogZ2wuUkdCNTY1CisgICAgICAgICAgICB9LCB7CisgICAg
ICAgICAgICAgICAgbmFtZTogJ3JnYmE0JywgZm9ybWF0OiBnbC5SR0JBNAorICAgICAgICAgICAg
fSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I1X2ExJywgZm9ybWF0OiBnbC5SR0I1X0Ex
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3NyZ2I4X2FscGhhOCcs
IGZvcm1hdDogZ2wuU1JHQjhfQUxQSEE4CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAg
ICAgbmFtZTogJ3JnYjEwX2EyJywgZm9ybWF0OiBnbC5SR0IxMF9BMgorICAgICAgICAgICAgfQor
ICAgICAgICBdOworCisgICAgICAgIC8vIDJEIHRleHR1cmUgZmlsdGVyaW5nLgorCisgICAgICAg
IC8vIEZvcm1hdHMuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICov
CisgICAgICAgIHZhciBmb3JtYXRzR3JvdXA7CisgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7
CisgICAgICAgICAgICBmbXROZHggPCBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZS5sZW5ndGg7Cisg
ICAgICAgICAgICBmbXROZHgrKykgeworICAgICAgICAgICAgZm9ybWF0c0dyb3VwID0gbmV3IHRj
dVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgICAgICcyZF9mb3JtYXRzJywgJzJEIFRl
eHR1cmUgRm9ybWF0cycpOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChmb3JtYXRzR3JvdXAp
OworICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyTmR4ID0gMDsKKyAgICAgICAgICAgICAgICBm
aWx0ZXJOZHggPCBtaW5GaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZmlsdGVy
TmR4KyspIHsKKyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAg
ICAgICAgICAgdmFyIG1pbkZpbHRlciA9IG1pbkZpbHRlck1vZGVzW2ZpbHRlck5keF0ubW9kZTsK
KyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisgICAgICAgICAgICAgICAg
dmFyIGZpbHRlck5hbWUgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0ZXJOZHhdLm5hbWU7CisgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgICAgIHZhciBmb3Jt
YXQgPSBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZVtmbXROZHhdLmZvcm1hdDsKKyAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisgICAgICAgICAgICAgICAgdmFyIGZvcm1hdE5h
bWUgPSBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZVtmbXROZHhdLm5hbWU7CisgICAgICAgICAgICAg
ICAgIHZhciBpc01pcG1hcCA9IG1pbkZpbHRlciAhPSBnbC5ORUFSRVNUICYmCisgICAgICAgICAg
ICAgICAgICAgIG1pbkZpbHRlciAhPSBnbC5MSU5FQVI7CisgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgICAgIHZhciBtYWdGaWx0ZXIgPSBpc01pcG1h
cCA/IGdsLkxJTkVBUiA6IG1pbkZpbHRlcjsKKyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovCisgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBmb3JtYXROYW1lICsgJ18nICsg
ZmlsdGVyTmFtZTsKKyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAg
ICAgICAgICAgICAgdmFyIHdyYXBTID0gZ2wuUkVQRUFUOworICAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgICAgICAgICB2YXIgd3JhcFQgPSBnbC5SRVBFQVQ7
CisgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSA2NDsK
KyAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSA2NDsK
KworICAgICAgICAgICAgICAgICBmb3JtYXRzR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICAg
ICAgICAgIG5ldyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREZpbHRlcmluZ0Nh
c2UoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCAnJywgbWluRmlsdGVyLCBtYWdGaWx0
ZXIsIHdyYXBTLCB3cmFwVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHdpZHRo
LCBoZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTaXplcy4KKyAgICAgICAgLyoqIEB0
eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHNpemVzR3JvdXA7Cisg
ICAgICAgIGZvciAodmFyIHNpemVOZHggPSAwOyBzaXplTmR4IDwgc2l6ZXMyRC5sZW5ndGg7IHNp
emVOZHgrKykgeworICAgICAgICAgICAgc2l6ZXNHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdCgKKyAgICAgICAgICAgICAgICAnMmRfc2l6ZXMnLCAnMkQgVGV4dHVyZSBTaXplcycpOwor
ICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChzaXplc0dyb3VwKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGZpbHRlck5keCA9IDA7CisgICAgICAgICAgICAgICAgZmlsdGVyTmR4IDwgbWluRmlsdGVy
TW9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGZpbHRlck5keCsrKSB7CisgICAgICAgICAg
ICAgICAgbWluRmlsdGVyID0gbWluRmlsdGVyTW9kZXNbZmlsdGVyTmR4XS5tb2RlOworICAgICAg
ICAgICAgICAgIGZpbHRlck5hbWUgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0ZXJOZHhdLm5hbWU7Cisg
ICAgICAgICAgICAgICAgZm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgICAgICAgICAgICAgaXNNaXBt
YXAgPSBtaW5GaWx0ZXIgIT0gZ2wuTkVBUkVTVCAmJgorICAgICAgICAgICAgICAgICAgICBtaW5G
aWx0ZXIgIT0gZ2wuTElORUFSOworICAgICAgICAgICAgICAgIG1hZ0ZpbHRlciA9IGlzTWlwbWFw
ID8gZ2wuTElORUFSIDogbWluRmlsdGVyOworICAgICAgICAgICAgICAgIHdyYXBTID0gZ2wuUkVQ
RUFUOworICAgICAgICAgICAgICAgIHdyYXBUID0gZ2wuUkVQRUFUOworICAgICAgICAgICAgICAg
IHdpZHRoID0gc2l6ZXMyRFtzaXplTmR4XS53aWR0aDsKKyAgICAgICAgICAgICAgICBoZWlnaHQg
PSBzaXplczJEW3NpemVOZHhdLmhlaWdodDsKKyAgICAgICAgICAgICAgICBuYW1lID0gJycgKyB3
aWR0aCArICd4JyArIGhlaWdodCArICdfJyArIGZpbHRlck5hbWU7CisKKyAgICAgICAgICAgICAg
ICBzaXplc0dyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJlMkRGaWx0ZXJpbmdDYXNlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSwgJycsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBXcmFwIG1vZGVzLgorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgY29tYmluYXRpb25zR3JvdXA7CisgICAgICAgIGZv
ciAodmFyIG1pbkZpbHRlck5keCA9IDA7CisgICAgICAgICAgICBtaW5GaWx0ZXJOZHggPCBtaW5G
aWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICBtaW5GaWx0ZXJOZHgrKykgeworICAgICAg
ICAgICAgY29tYmluYXRpb25zR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAg
ICAgICAgICAgICAgJzJkX2NvbWJpbmF0aW9ucycsICcyRCBGaWx0ZXIgYW5kIHdyYXAgbW9kZSBj
b21iaW5hdGlvbnMnKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoY29tYmluYXRpb25zR3Jv
dXApOworICAgICAgICAgICAgZm9yICh2YXIgbWFnRmlsdGVyTmR4ID0gMDsKKyAgICAgICAgICAg
ICAgICBtYWdGaWx0ZXJOZHggPCBtYWdGaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgbWFnRmlsdGVyTmR4KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB3cmFwU05keCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIHdyYXBTTmR4IDwgd3JhcE1vZGVzLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICAgICAgd3JhcFNOZHgrKykgeworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciB3cmFwVE5keCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwVE5keCA8IHdy
YXBNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwVE5keCsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgPSBtaW5GaWx0ZXJNb2Rlc1ttaW5GaWx0
ZXJOZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWdGaWx0ZXIgPSBtYWdGaWx0
ZXJNb2Rlc1ttYWdGaWx0ZXJOZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBnbC5SR0JBODsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBTID0gd3JhcE1vZGVz
W3dyYXBTTmR4XS5tb2RlOworICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFQgPSB3cmFwTW9k
ZXNbd3JhcFROZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDYzOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gNTc7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lID0gbWluRmlsdGVyTW9kZXNbbWluRmlsdGVyTmR4XS5uYW1lICsgJ18nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdGaWx0ZXJNb2Rlc1ttYWdGaWx0ZXJOZHhdLm5h
bWUgKyAnXycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2Rlc1t3cmFwU05k
eF0ubmFtZSArICdfJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGVzW3dy
YXBUTmR4XS5uYW1lOworCisgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnNHcm91
cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREZpbHRl
cmluZ0Nhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsICcnLCBtaW5G
aWx0ZXIsIG1hZ0ZpbHRlciwgd3JhcFMsIHdyYXBULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
Q3ViZSBtYXAgdGV4dHVyZSBmaWx0ZXJpbmcuCisKKyAgICAgICAgLy8gRm9ybWF0cy4KKyAgICAg
ICAgZm9yICh2YXIgZm10TmR4ID0gMDsKKyAgICAgICAgICAgIGZtdE5keCA8IGZpbHRlcmFibGVG
b3JtYXRzQnlUeXBlLmxlbmd0aDsKKyAgICAgICAgICAgIGZtdE5keCsrKSB7CisgICAgICAgICAg
ICBmb3JtYXRzR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAg
ICAgJ2N1YmVfZm9ybWF0cycsICdDdWJlIFRleHR1cmUgRm9ybWF0cycpOworICAgICAgICAgICAg
dGhpcy5hZGRDaGlsZChmb3JtYXRzR3JvdXApOworICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVy
TmR4ID0gMDsKKyAgICAgICAgICAgICAgICBmaWx0ZXJOZHggPCBtaW5GaWx0ZXJNb2Rlcy5sZW5n
dGg7CisgICAgICAgICAgICAgICAgZmlsdGVyTmR4KyspIHsKKyAgICAgICAgICAgICAgICBtaW5G
aWx0ZXIgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0ZXJOZHhdLm1vZGU7CisgICAgICAgICAgICAgICAg
ZmlsdGVyTmFtZSA9IG1pbkZpbHRlck1vZGVzW2ZpbHRlck5keF0ubmFtZTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZVtmbXROZHhdLmZvcm1hdDsKKyAg
ICAgICAgICAgICAgICBmb3JtYXROYW1lID0gZmlsdGVyYWJsZUZvcm1hdHNCeVR5cGVbZm10TmR4
XS5uYW1lOworICAgICAgICAgICAgICAgIGlzTWlwbWFwID0gbWluRmlsdGVyICE9IGdsLk5FQVJF
U1QgJiYKKyAgICAgICAgICAgICAgICAgICAgbWluRmlsdGVyICE9IGdsLkxJTkVBUjsKKyAgICAg
ICAgICAgICAgICBtYWdGaWx0ZXIgPSBpc01pcG1hcCA/IGdsLkxJTkVBUiA6IG1pbkZpbHRlcjsK
KyAgICAgICAgICAgICAgICBuYW1lID0gZm9ybWF0TmFtZSArICdfJyArIGZpbHRlck5hbWU7Cisg
ICAgICAgICAgICAgICAgd3JhcFMgPSBnbC5SRVBFQVQ7CisgICAgICAgICAgICAgICAgd3JhcFQg
PSBnbC5SRVBFQVQ7CisgICAgICAgICAgICAgICAgd2lkdGggPSA2NDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQgPSA2NDsKKworICAgICAgICAgICAgICAgIGZvcm1hdHNHcm91cC5hZGRDaGlsZCgK
KyAgICAgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVy
ZUN1YmVGaWx0ZXJpbmdDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycsIG1p
bkZpbHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSAvKiBhbHdheXMgc2FtcGxlIGV4dGVyaW9yIGFzIHdlbGwgKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBTaXplcy4KKyAgICAgICAgZm9yICh2YXIgc2l6ZU5keCA9IDA7IHNpemVOZHggPCBzaXpl
c0N1YmUubGVuZ3RoOyBzaXplTmR4KyspIHsKKyAgICAgICAgICAgIHNpemVzR3JvdXAgPSBuZXcg
dGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAgJ2N1YmVfc2l6ZXMnLCAnQ3Vi
ZSBUZXh0dXJlIFNpemVzJyk7CisgICAgICAgICAgICB0aGlzLmFkZENoaWxkKHNpemVzR3JvdXAp
OworICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyTmR4ID0gMDsKKyAgICAgICAgICAgICAgICBm
aWx0ZXJOZHggPCBtaW5GaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZmlsdGVy
TmR4KyspIHsKKyAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0
ZXJOZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgZmlsdGVyTmFtZSA9IG1pbkZpbHRlck1vZGVz
W2ZpbHRlck5keF0ubmFtZTsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gZ2wuUkdCQTg7
CisgICAgICAgICAgICAgICAgaXNNaXBtYXAgPSBtaW5GaWx0ZXIgIT0gZ2wuTkVBUkVTVCAmJgor
ICAgICAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgIT0gZ2wuTElORUFSOworICAgICAgICAgICAg
ICAgIG1hZ0ZpbHRlciA9IGlzTWlwbWFwID8gZ2wuTElORUFSIDogbWluRmlsdGVyOworICAgICAg
ICAgICAgICAgIHdyYXBTID0gZ2wuUkVQRUFUOworICAgICAgICAgICAgICAgIHdyYXBUID0gZ2wu
UkVQRUFUOworICAgICAgICAgICAgICAgIHdpZHRoID0gc2l6ZXNDdWJlW3NpemVOZHhdLndpZHRo
OworICAgICAgICAgICAgICAgIGhlaWdodCA9IHNpemVzQ3ViZVtzaXplTmR4XS5oZWlnaHQ7Cisg
ICAgICAgICAgICAgICAgbmFtZSA9ICcnICsgd2lkdGggKyAneCcgKyBoZWlnaHQgKyAnXycgKyBm
aWx0ZXJOYW1lOworCisgICAgICAgICAgICAgICAgc2l6ZXNHcm91cC5hZGRDaGlsZCgKKyAgICAg
ICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVG
aWx0ZXJpbmdDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycsIG1pbkZpbHRl
ciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsdGVy
L3dyYXAgbW9kZSBjb21iaW5hdGlvbnMuCisgICAgICAgIGZvciAodmFyIG1pbkZpbHRlck5keCA9
IDA7CisgICAgICAgICAgICBtaW5GaWx0ZXJOZHggPCBtaW5GaWx0ZXJNb2Rlcy5sZW5ndGg7Cisg
ICAgICAgICAgICBtaW5GaWx0ZXJOZHgrKykgeworICAgICAgICAgICAgY29tYmluYXRpb25zR3Jv
dXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAgJ2N1YmVfY29t
YmluYXRpb25zJywgJ0N1YmUgRmlsdGVyIGFuZCB3cmFwIG1vZGUgY29tYmluYXRpb25zJworICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoY29tYmluYXRpb25zR3JvdXAp
OworICAgICAgICAgICAgZm9yICh2YXIgbWFnRmlsdGVyTmR4ID0gMDsKKyAgICAgICAgICAgICAg
ICBtYWdGaWx0ZXJOZHggPCBtYWdGaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAg
bWFnRmlsdGVyTmR4KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB3cmFwU05keCA9IDA7
CisgICAgICAgICAgICAgICAgICAgIHdyYXBTTmR4IDwgd3JhcE1vZGVzLmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgICAgd3JhcFNOZHgrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciB3cmFwVE5keCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwVE5keCA8IHdyYXBN
b2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwVE5keCsrKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgPSBtaW5GaWx0ZXJNb2Rlc1ttaW5GaWx0ZXJO
ZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWdGaWx0ZXIgPSBtYWdGaWx0ZXJN
b2Rlc1ttYWdGaWx0ZXJOZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBnbC5SR0JBODsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBTID0gd3JhcE1vZGVzW3dy
YXBTTmR4XS5tb2RlOworICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFQgPSB3cmFwTW9kZXNb
d3JhcFROZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDYzOworICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gNjM7CisgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gbWluRmlsdGVyTW9kZXNbbWluRmlsdGVyTmR4XS5uYW1lICsgJ18nICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYWdGaWx0ZXJNb2Rlc1ttYWdGaWx0ZXJOZHhdLm5hbWUg
KyAnXycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2Rlc1t3cmFwU05keF0u
bmFtZSArICdfJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGVzW3dyYXBU
TmR4XS5uYW1lOworCisgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnNHcm91cC5h
ZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlQ3ViZUZpbHRl
cmluZ0Nhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsICcnLCBtaW5G
aWx0ZXIsIG1hZ0ZpbHRlciwgd3JhcFMsIHdyYXBULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENhc2VzIHdpdGggbm8gdmlzaWJsZSBjdWJlIGVkZ2VzLgorICAgICAgICAvKiogQHR5
cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgb25seUZhY2VJbnRlcmlv
ckdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ2N1YmVfbm9f
ZWRnZXNfdmlzaWJsZScsICJEb24ndCBzYW1wbGUgYW55d2hlcmUgbmVhciBhIGZhY2UncyBlZGdl
cyIKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChvbmx5RmFjZUludGVyaW9yR3Jv
dXApOworCisgICAgICAgIGZvciAodmFyIGlzTGluZWFySSA9IDA7IGlzTGluZWFySSA8PSAxOyBp
c0xpbmVhckkrKykgeworICAgICAgICAgICAgdmFyIGlzTGluZWFyID0gaXNMaW5lYXJJICE9IDA7
CisgICAgICAgICAgICB2YXIgZmlsdGVyID0gaXNMaW5lYXIgPyBnbC5MSU5FQVIgOiBnbC5ORUFS
RVNUOworCisgICAgICAgICAgICBvbmx5RmFjZUludGVyaW9yR3JvdXAuYWRkQ2hpbGQoCisgICAg
ICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZUN1YmVGaWx0
ZXJpbmdDYXNlKAorICAgICAgICAgICAgICAgICAgICBpc0xpbmVhciA/ICdsaW5lYXInIDogJ25l
YXJlc3QnLCAnJywKKyAgICAgICAgICAgICAgICAgICAgZmlsdGVyLCBmaWx0ZXIsIGdsLlJFUEVB
VCwgZ2wuUkVQRUFULAorICAgICAgICAgICAgICAgICAgICB0cnVlLCBnbC5SR0JBOCwgNjMsIDYz
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZvcm1hdHMuCisgICAgICAgIGZvciAodmFyIGZtdE5keCA9IDA7CisgICAgICAgICAgICBm
bXROZHggPCBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZS5sZW5ndGg7CisgICAgICAgICAgICBmbXRO
ZHgrKykgeworICAgICAgICAgICAgZm9ybWF0c0dyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBU
ZXN0KAorICAgICAgICAgICAgICAgICcyZF9hcnJheV9mb3JtYXRzJywgJzJEIEFycmF5IFRleHR1
cmUgRm9ybWF0cycpOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChmb3JtYXRzR3JvdXApOwor
ICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyTmR4ID0gMDsKKyAgICAgICAgICAgICAgICBmaWx0
ZXJOZHggPCBtaW5GaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZmlsdGVyTmR4
KyspIHsKKyAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0ZXJO
ZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgZmlsdGVyTmFtZSA9IG1pbkZpbHRlck1vZGVzW2Zp
bHRlck5keF0ubmFtZTsKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBmaWx0ZXJhYmxlRm9ybWF0
c0J5VHlwZVtmbXROZHhdLmZvcm1hdDsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0TmFtZSA9
IGZpbHRlcmFibGVGb3JtYXRzQnlUeXBlW2ZtdE5keF0ubmFtZTsKKyAgICAgICAgICAgICAgICBp
c01pcG1hcCA9IG1pbkZpbHRlciAhPSBnbC5ORUFSRVNUICYmCisgICAgICAgICAgICAgICAgICAg
IG1pbkZpbHRlciAhPSBnbC5MSU5FQVI7CisgICAgICAgICAgICAgICAgbWFnRmlsdGVyID0gaXNN
aXBtYXAgPyBnbC5MSU5FQVIgOiBtaW5GaWx0ZXI7CisgICAgICAgICAgICAgICAgbmFtZSA9IGZv
cm1hdE5hbWUgKyAnXycgKyBmaWx0ZXJOYW1lOworICAgICAgICAgICAgICAgIHdyYXBTID0gZ2wu
UkVQRUFUOworICAgICAgICAgICAgICAgIHdyYXBUID0gZ2wuUkVQRUFUOworICAgICAgICAgICAg
ICAgIHdpZHRoID0gMTI4OworICAgICAgICAgICAgICAgIGhlaWdodCA9IDEyODsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUxheWVycyA9IDg7CisKKyAgICAg
ICAgICAgICAgICBmb3JtYXRzR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgIG5l
dyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLlRleHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsICcnLCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlciwg
d3JhcFMsIHdyYXBULAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBudW1MYXllcnMKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTaXplcy4KKyAgICAgICAg
Zm9yICh2YXIgc2l6ZU5keCA9IDA7IHNpemVOZHggPCBzaXplczJEQXJyYXkubGVuZ3RoOyBzaXpl
TmR4KyspIHsKKyAgICAgICAgICAgIHNpemVzR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRl
c3QoCisgICAgICAgICAgICAgICAgJzJkX2FycmF5X3NpemVzJywgJzJEIEFycmF5IFRleHR1cmUg
U2l6ZXMnKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoc2l6ZXNHcm91cCk7CisgICAgICAg
ICAgICBmb3IgKHZhciBmaWx0ZXJOZHggPSAwOworICAgICAgICAgICAgICAgIGZpbHRlck5keCA8
IG1pbkZpbHRlck1vZGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBmaWx0ZXJOZHgrKykgewor
ICAgICAgICAgICAgICAgIG1pbkZpbHRlciA9IG1pbkZpbHRlck1vZGVzW2ZpbHRlck5keF0ubW9k
ZTsKKyAgICAgICAgICAgICAgICBmaWx0ZXJOYW1lID0gbWluRmlsdGVyTW9kZXNbZmlsdGVyTmR4
XS5uYW1lOworICAgICAgICAgICAgICAgIGZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICAgICAg
ICAgIGlzTWlwbWFwID0gbWluRmlsdGVyICE9IGdsLk5FQVJFU1QgJiYKKyAgICAgICAgICAgICAg
ICAgICAgbWluRmlsdGVyICE9IGdsLkxJTkVBUjsKKyAgICAgICAgICAgICAgICBtYWdGaWx0ZXIg
PSBpc01pcG1hcCA/IGdsLkxJTkVBUiA6IG1pbkZpbHRlcjsKKyAgICAgICAgICAgICAgICB3cmFw
UyA9IGdsLlJFUEVBVDsKKyAgICAgICAgICAgICAgICB3cmFwVCA9IGdsLlJFUEVBVDsKKyAgICAg
ICAgICAgICAgICB3aWR0aCA9IHNpemVzMkRBcnJheVtzaXplTmR4XS53aWR0aDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQgPSBzaXplczJEQXJyYXlbc2l6ZU5keF0uaGVpZ2h0OworICAgICAgICAg
ICAgICAgIG51bUxheWVycyA9IHNpemVzMkRBcnJheVtzaXplTmR4XS5udW1MYXllcnM7CisgICAg
ICAgICAgICAgICAgbmFtZSA9ICcnICsgd2lkdGggKyAneCcgKyBoZWlnaHQgKyAneCcgKworICAg
ICAgICAgICAgICAgICAgICBudW1MYXllcnMgKyAnXycgKyBmaWx0ZXJOYW1lOworCisgICAgICAg
ICAgICAgICAgc2l6ZXNHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgbmV3IGVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTJEQXJyYXlGaWx0ZXJpbmdDYXNlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFw
Uywgd3JhcFQsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IG51bUxheWVycworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdyYXAgbW9kZXMuCisgICAgICAg
IGZvciAodmFyIG1pbkZpbHRlck5keCA9IDA7CisgICAgICAgICAgICBtaW5GaWx0ZXJOZHggPCBt
aW5GaWx0ZXJNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICBtaW5GaWx0ZXJOZHgrKykgeworICAg
ICAgICAgICAgY29tYmluYXRpb25zR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisg
ICAgICAgICAgICAgICAgJzJkX2FycmF5X2NvbWJpbmF0aW9ucycsCisgICAgICAgICAgICAgICAg
JzJEIEFycmF5IEZpbHRlciBhbmQgd3JhcCBtb2RlIGNvbWJpbmF0aW9ucycpOworICAgICAgICAg
ICAgdGhpcy5hZGRDaGlsZChjb21iaW5hdGlvbnNHcm91cCk7CisgICAgICAgICAgICBmb3IgKHZh
ciBtYWdGaWx0ZXJOZHggPSAwOworICAgICAgICAgICAgICAgIG1hZ0ZpbHRlck5keCA8IG1hZ0Zp
bHRlck1vZGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBtYWdGaWx0ZXJOZHgrKykgeworICAg
ICAgICAgICAgICAgIGZvciAodmFyIHdyYXBTTmR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
d3JhcFNOZHggPCB3cmFwTW9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB3cmFwU05k
eCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHdyYXBUTmR4ID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHdyYXBUTmR4IDwgd3JhcE1vZGVzLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdyYXBUTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1p
bkZpbHRlciA9IG1pbkZpbHRlck1vZGVzW21pbkZpbHRlck5keF0ubW9kZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hZ0ZpbHRlciA9IG1hZ0ZpbHRlck1vZGVzW21hZ0ZpbHRlck5keF0ubW9k
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICAg
ICAgICAgICAgICAgICAgd3JhcFMgPSB3cmFwTW9kZXNbd3JhcFNOZHhdLm1vZGU7CisgICAgICAg
ICAgICAgICAgICAgICAgICB3cmFwVCA9IHdyYXBNb2Rlc1t3cmFwVE5keF0ubW9kZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTIzOworICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0ID0gMTA3OworICAgICAgICAgICAgICAgICAgICAgICAgbnVtTGF5ZXJzID0gNzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBtaW5GaWx0ZXJNb2Rlc1ttaW5GaWx0ZXJOZHhd
Lm5hbWUgKyAnXycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ0ZpbHRlck1vZGVz
W21hZ0ZpbHRlck5keF0ubmFtZSArICdfJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JhcE1vZGVzW3dyYXBTTmR4XS5uYW1lICsgJ18nICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cmFwTW9kZXNbd3JhcFROZHhdLm5hbWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbWJpbmF0aW9uc0dyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmUyREFycmF5RmlsdGVyaW5nQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSwgJycsIG1pbkZpbHRlciwgbWFnRmlsdGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cmFwUywgd3JhcFQsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgbnVtTGF5ZXJzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIDNEIHRleHR1cmUgZmlsdGVyaW5nLgorCisgICAgICAgIC8vIEZvcm1hdHMuCisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZGVwdGggPSA2NDsKKyAgICAgICAgZm9y
ICh2YXIgZm10TmR4ID0gMDsKKyAgICAgICAgICAgIGZtdE5keCA8IGZpbHRlcmFibGVGb3JtYXRz
QnlUeXBlLmxlbmd0aDsKKyAgICAgICAgICAgIGZtdE5keCsrKSB7CisgICAgICAgICAgICBmb3Jt
YXRzR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAgJzNk
X2Zvcm1hdHMnLCAnM0QgVGV4dHVyZSBGb3JtYXRzJyk7CisgICAgICAgICAgICB0aGlzLmFkZENo
aWxkKGZvcm1hdHNHcm91cCk7CisgICAgICAgICAgICBmb3IgKHZhciBmaWx0ZXJOZHggPSAwOwor
ICAgICAgICAgICAgICAgIGZpbHRlck5keCA8IG1pbkZpbHRlck1vZGVzLmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICBmaWx0ZXJOZHgrKykgeworICAgICAgICAgICAgICAgIG1pbkZpbHRlciA9IG1p
bkZpbHRlck1vZGVzW2ZpbHRlck5keF0ubW9kZTsKKyAgICAgICAgICAgICAgICBmaWx0ZXJOYW1l
ID0gbWluRmlsdGVyTW9kZXNbZmlsdGVyTmR4XS5uYW1lOworICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGZpbHRlcmFibGVGb3JtYXRzQnlUeXBlW2ZtdE5keF0uZm9ybWF0OworICAgICAgICAgICAg
ICAgIGZvcm1hdE5hbWUgPSBmaWx0ZXJhYmxlRm9ybWF0c0J5VHlwZVtmbXROZHhdLm5hbWU7Cisg
ICAgICAgICAgICAgICAgaXNNaXBtYXAgPSBtaW5GaWx0ZXIgIT0gZ2wuTkVBUkVTVCAmJgorICAg
ICAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgIT0gZ2wuTElORUFSOworICAgICAgICAgICAgICAg
IG1hZ0ZpbHRlciA9IGlzTWlwbWFwID8gZ2wuTElORUFSIDogbWluRmlsdGVyOworICAgICAgICAg
ICAgICAgIG5hbWUgPSBmb3JtYXROYW1lICsgJ18nICsgZmlsdGVyTmFtZTsKKyAgICAgICAgICAg
ICAgICB3cmFwUyA9IGdsLlJFUEVBVDsKKyAgICAgICAgICAgICAgICB3cmFwVCA9IGdsLlJFUEVB
VDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHdyYXBSID0gZ2wu
UkVQRUFUOworICAgICAgICAgICAgICAgIHdpZHRoID0gNjQ7CisgICAgICAgICAgICAgICAgaGVp
Z2h0ID0gNjQ7CisgICAgICAgICAgICAgICAgZGVwdGggPSA2NDsKKworICAgICAgICAgICAgICAg
IGZvcm1hdHNHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMuVGV4dHVyZTNERmlsdGVyaW5nQ2FzZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWUsICcnLCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdyYXBTLCB3cmFwVCwgd3JhcFIsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2l6
ZXMuCisgICAgICAgIGZvciAodmFyIHNpemVOZHggPSAwOyBzaXplTmR4IDwgc2l6ZXMzRC5sZW5n
dGg7IHNpemVOZHgrKykgeworICAgICAgICAgICAgc2l6ZXNHcm91cCA9IG5ldyB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICAgICAnM2Rfc2l6ZXMnLCAnM0QgVGV4dHVyZSBTaXpl
cycpOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChzaXplc0dyb3VwKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGZpbHRlck5keCA9IDA7CisgICAgICAgICAgICAgICAgZmlsdGVyTmR4IDwgbWlu
RmlsdGVyTW9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGZpbHRlck5keCsrKSB7CisgICAg
ICAgICAgICAgICAgbWluRmlsdGVyID0gbWluRmlsdGVyTW9kZXNbZmlsdGVyTmR4XS5tb2RlOwor
ICAgICAgICAgICAgICAgIGZpbHRlck5hbWUgPSBtaW5GaWx0ZXJNb2Rlc1tmaWx0ZXJOZHhdLm5h
bWU7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgICAgICAgICAgICAg
aXNNaXBtYXAgPQorICAgICAgICAgICAgICAgICAgICBtaW5GaWx0ZXIgIT0gZ2wuTkVBUkVTVCAm
JiBtaW5GaWx0ZXIgIT0gZ2wuTElORUFSOworICAgICAgICAgICAgICAgIG1hZ0ZpbHRlciA9Cisg
ICAgICAgICAgICAgICAgICAgIGlzTWlwbWFwID8gZ2wuTElORUFSIDogbWluRmlsdGVyOworICAg
ICAgICAgICAgICAgIHdyYXBTID0gZ2wuUkVQRUFUOworICAgICAgICAgICAgICAgIHdyYXBUID0g
Z2wuUkVQRUFUOworICAgICAgICAgICAgICAgIHdyYXBSID0gZ2wuUkVQRUFUOworICAgICAgICAg
ICAgICAgIHdpZHRoID0gc2l6ZXMzRFtzaXplTmR4XS53aWR0aDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQgPSBzaXplczNEW3NpemVOZHhdLmhlaWdodDsKKyAgICAgICAgICAgICAgICBkZXB0aCA9
IHNpemVzM0Rbc2l6ZU5keF0uZGVwdGg7CisgICAgICAgICAgICAgICAgbmFtZSA9ICcnICsgd2lk
dGggKyAneCcgKyBoZWlnaHQgKyAneCcgKyBkZXB0aCArCisgICAgICAgICAgICAgICAgICAgICdf
JyArIGZpbHRlck5hbWU7CisKKyAgICAgICAgICAgICAgICBzaXplc0dyb3VwLmFkZENoaWxkKAor
ICAgICAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5UZXh0dXJl
M0RGaWx0ZXJpbmdDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycsIG1pbkZp
bHRlciwgbWFnRmlsdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFMsIHdyYXBULCB3
cmFwUiwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXcmFwIG1vZGVzLgorICAgICAgICBmb3IgKHZh
ciBtaW5GaWx0ZXJOZHggPSAwOworICAgICAgICAgICAgbWluRmlsdGVyTmR4IDwgbWluRmlsdGVy
TW9kZXMubGVuZ3RoOworICAgICAgICAgICAgbWluRmlsdGVyTmR4KyspIHsKKyAgICAgICAgICAg
IGZvciAodmFyIG1hZ0ZpbHRlck5keCA9IDA7CisgICAgICAgICAgICAgICAgbWFnRmlsdGVyTmR4
IDwgbWFnRmlsdGVyTW9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIG1hZ0ZpbHRlck5keCsr
KSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgd3JhcFNOZHggPSAwOworICAgICAgICAgICAg
ICAgICAgICB3cmFwU05keCA8IHdyYXBNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAg
IHdyYXBTTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgY29tYmluYXRpb25zR3JvdXAgPSBu
ZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAnM2RfY29t
YmluYXRpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICczRCBGaWx0ZXIgYW5kIHdyYXAg
bW9kZSBjb21iaW5hdGlvbnMnKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChj
b21iaW5hdGlvbnNHcm91cCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHdyYXBUTmR4
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBUTmR4IDwgd3JhcE1vZGVzLmxlbmd0
aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBUTmR4KyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIHdyYXBSTmR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cmFwUk5keCA8IHdyYXBNb2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JhcFJOZHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZpbHRl
ciA9IG1pbkZpbHRlck1vZGVzW21pbkZpbHRlck5keF0ubW9kZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYWdGaWx0ZXIgPSBtYWdGaWx0ZXJNb2Rlc1ttYWdGaWx0ZXJOZHhdLm1vZGU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JhcFMgPSB3cmFwTW9kZXNbd3JhcFNOZHhdLm1vZGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFQgPSB3cmFwTW9kZXNbd3JhcFROZHhdLm1v
ZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFIgPSB3cmFwTW9kZXNbd3JhcFJO
ZHhdLm1vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSA2MzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSA1NzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXB0aCA9IDY3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBt
aW5GaWx0ZXJNb2Rlc1ttaW5GaWx0ZXJOZHhdLm5hbWUgKyAnXycgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYWdGaWx0ZXJNb2Rlc1ttYWdGaWx0ZXJOZHhdLm5hbWUgKyAnXycg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZXNbd3JhcFNOZHhdLm5h
bWUgKyAnXycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZXNbd3Jh
cFROZHhdLm5hbWUgKyAnXycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFw
TW9kZXNbd3JhcFJOZHhdLm5hbWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21i
aW5hdGlvbnNHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmUzREZpbHRlcmlu
Z0Nhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCAnJywgbWlu
RmlsdGVyLCBtYWdGaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cmFwUywgd3JhcFQsIHdyYXBSLCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW5k
IGV4ZWN1dGUgdGhlIHRlc3QgY2FzZXMKKyAgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHR9IGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSByYW5nZSBUZXN0
IHJhbmdlCisgICAgICovCisgICAgZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4gPSBmdW5j
dGlvbihjb250ZXh0LCByYW5nZSkgeworICAgICAgICBnbCA9IGNvbnRleHQ7CisKKyAgICAgICAg
Y29uc3QgY2FudmFzID0gZ2wuY2FudmFzOworICAgICAgICBjYW52YXMud2lkdGggPSBjYW52YXNX
SDsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc1dIOworCisgICAgICAgIC8vU2V0IHVw
IFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1
bm5lcjsKKworICAgICAgICBzdGF0ZS5zZXRSb290KG5ldyBlczNmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzLlRleHR1cmVGaWx0ZXJpbmdUZXN0cygpKTsKKyAgICAgICAgaWYgKHJhbmdlKQorICAgICAg
ICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5k
IGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0
TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHN0
YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENh
c2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVz
dEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAg
ICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5qcyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmVGV4dHVyZUZvcm1hdFRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMDAyMjVhOGRiMTdh
MDE1OTI5NTJkOGY2MjY1YWI1YTYwNTlmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5qcwpAQCAtMCwwICsxLDExODUgQEAKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0
aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Cisg
KgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICoKKyAqLworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50
Y3VDb21wcmVzc2VkVGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3Ry
VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1
aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWwnKTsKKworZ29vZy5zY29wZShm
dW5jdGlvbigpIHsKKwordmFyIGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMgPSBmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHM7Cit2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29y
ay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsKK3ZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlUmFuZG9tOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VU
ZXN0Q2FzZTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwor
dmFyIGdsdVRleHR1cmUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmU7Cit2YXIgZ2x1VGV4
dHVyZVV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOwordmFyIHRjdVRleHR1
cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7Cit2YXIgZ2xzVGV4dHVyZVRlc3RVdGls
ID0gbW9kdWxlcy5zaGFyZWQuZ2xzVGV4dHVyZVRlc3RVdGlsOwordmFyIHRjdVRleHR1cmVVdGls
ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbDsKK3ZhciBnbHVTdHJVdGlsID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTdHJVdGlsOwordmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlTWF0aDsKK3ZhciB0Y3VDb21wcmVzc2VkVGV4dHVyZSA9IGZyYW1ld29yay5jb21t
b24udGN1Q29tcHJlc3NlZFRleHR1cmU7CisKKy8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dH0gKi8gdmFyIGdsOworCit2YXIgREVfQVNTRVJUID0gZnVuY3Rpb24oeCkgeworICAgIGlm
ICgheCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVkJyk7Cit9OworCitl
czNmVGV4dHVyZUZvcm1hdFRlc3RzLnZlcnNpb24gPSAnMzAwIGVzJzsKKworZXMzZlRleHR1cmVG
b3JtYXRUZXN0cy50ZXN0RGVzY3JpcHRpb24gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGVzdCA9
IHRjdVRlc3RDYXNlLnJ1bm5lci5jdXJyZW50VGVzdDsKKyAgICByZXR1cm4gdGVzdC5kZXNjcmlw
dGlvbjsKK307CisKK2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuc2V0UGFyZW50Q2xhc3MgPSBmdW5j
dGlvbihjaGlsZCwgcGFyZW50KSB7CisgICAgY2hpbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShwYXJlbnQucHJvdG90eXBlKTsKKyAgICBjaGlsZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBj
aGlsZDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGVzdENh
c2UuRGVxcFRlc3R9CisgKi8KK2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0
Q2FzZSA9IGZ1bmN0aW9uKGRlc2NyaXB0b3IpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5j
YWxsKHRoaXMsIGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5kZXNjcmlwdGlvbik7CisgICAg
dGhpcy5tX2Zvcm1hdCA9IGRlc2NyaXB0b3IuZm9ybWF0OworICAgIHRoaXMubV9kYXRhVHlwZSA9
IGRlc2NyaXB0b3IuZGF0YVR5cGU7CisgICAgdGhpcy5tX3dpZHRoID0gZGVzY3JpcHRvci53aWR0
aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0gZGVzY3JpcHRvci5oZWlnaHQ7CisgICAgdGhpcy5tX3Jl
bmRlcmVyID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIoZXMzZlRleHR1
cmVGb3JtYXRUZXN0cy52ZXJzaW9uLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
SElHSFApOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5zZXRQYXJlbnRDbGFzcyhlczNm
VGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUyREZvcm1hdENhc2UsIHRjdVRlc3RDYXNlLkRlcXBU
ZXN0KTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5UZXh0dXJlMkRGb3JtYXRDYXNlLnByb3Rv
dHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgLyp0Y3U6OlRleHR1cmVGb3JtYXQqLyB2YXIg
Zm10ID0gdGhpcy5tX2RhdGFUeXBlID8gZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1h
dCh0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUpIDogZ2x1VGV4dHVyZVV0aWwubWFwR0xJ
bnRlcm5hbEZvcm1hdCh0aGlzLm1fZm9ybWF0KTsKKyAgICAvKnRjdTo6VGV4dHVyZUZvcm1hdElu
Zm8qLyB2YXIgc3BlYyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKGZtdCk7
CisgICAgLyogVE9ETyA6IFBvcnQKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBmbXROYW1lOwor
CisgICAgaWYgKG1fZGF0YVR5cGUpCisgICAgICAgIGZtdE5hbWUgPDwgZ2x1OjpnZXRQaXhlbEZv
cm1hdFN0cihtX2Zvcm1hdCkgPDwgIiwgIiA8PCBnbHU6OmdldFR5cGVTdHIobV9kYXRhVHlwZSk7
CisgICAgZWxzZQorICAgICAgICBmbXROYW1lIDw8IGdsdTo6Z2V0UGl4ZWxGb3JtYXRTdHIobV9m
b3JtYXQpOworCisgICAgbG9nIDw8IFRlc3RMb2c6Ok1lc3NhZ2UgPDwgIjJEIHRleHR1cmUsICIg
PDwgZm10TmFtZS5zdHIoKSA8PCAiLCAiIDw8IG1fd2lkdGggPDwgIngiIDw8IG1faGVpZ2h0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIixcbiBmaWxsIHdpdGggIiA8PCBmb3JtYXRH
cmFkaWVudCgmc3BlYy52YWx1ZU1pbiwgJnNwZWMudmFsdWVNYXgpIDw8ICIgZ3JhZGllbnQiCisg
ICAgICAgIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7CisgICAgKi8KKworICAgIHRoaXMubV90ZXh0
dXJlID0gdGhpcy5tX2RhdGFUeXBlID8KKyAgICAgICAgICAgICAgZ2x1VGV4dHVyZS50ZXh0dXJl
MkRGcm9tRm9ybWF0KGdsLCB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsIHRoaXMubV93
aWR0aCwgdGhpcy5tX2hlaWdodCkgOiAvLyBJbXBsaWNpdCBpbnRlcm5hbCBmb3JtYXQuCisgICAg
ICAgICAgICAgIGdsdVRleHR1cmUudGV4dHVyZTJERnJvbUludGVybmFsRm9ybWF0KGdsLCB0aGlz
Lm1fZm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpOyAvLyBFeHBsaWNpdCBpbnRl
cm5hbCBmb3JtYXQuCisKKyAgICAvLyBGaWxsIGxldmVsIDAuCisgICAgdGhpcy5tX3RleHR1cmUu
Z2V0UmVmVGV4dHVyZSgpLmFsbG9jTGV2ZWwoMCk7CisgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdp
dGhDb21wb25lbnRHcmFkaWVudHModGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdldExl
dmVsKDApLCBzcGVjLnZhbHVlTWluLCBzcGVjLnZhbHVlTWF4KTsKK307CisKK2VzM2ZUZXh0dXJl
Rm9ybWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0Q2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rp
b24oKSB7CisgICAgLyogVE9ETzogSW1wbGVtZW50ICovCit9OworCitlczNmVGV4dHVyZUZvcm1h
dFRlc3RzLlRleHR1cmUyREZvcm1hdENhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigp
IHsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQgKi8KKworICAgIHZhciB2aWV3cG9ydCA9IG5ldyBn
bHNUZXh0dXJlVGVzdFV0aWwuUmFuZG9tVmlld3BvcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NhbnZhcycpLCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQvKiwgZGVTdHJpbmdIYXNoKGdl
dE5hbWUoKSkqLyk7CisKKyAgICAvKiB0Y3U6OlN1cmZhY2UgKi8gdmFyIHJlbmRlcmVkRnJhbWUg
PSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQp
OworICAgIC8qIHRjdTo6U3VyZmFjZSAqLyB2YXIgcmVmZXJlbmNlRnJhbWUgPSBuZXcgdGN1U3Vy
ZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworICAgIC8qIFRP
RE86IEltcGxlbWVudAorICAgIC8vIHRjdTo6UkdCQSB0aHJlc2hvbGQgPSBtX3JlbmRlckN0eC5n
ZXRSZW5kZXJUYXJnZXQoKS5nZXRQaXhlbEZvcm1hdCgpLmdldENvbG9yVGhyZXNob2xkKCkgKyB0
Y3U6OlJHQkEoMSwxLDEsMSk7CisgICAgKi8KKyAgICB2YXIgdGhyZXNob2xkID0gWzMsIDMsIDMs
IDNdOworICAgIHZhciByZW5kZXJQYXJhbXMgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVy
ZW5jZVBhcmFtcyhnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQp
OworCisgICAgLyogdGN1OjpUZXh0dXJlRm9ybWF0SW5mbyovIHZhciBzcGVjID0gdGN1VGV4dHVy
ZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8odGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgp
LmdldEZvcm1hdCgpKTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3cmFwUyA9IGdsLkNMQU1QX1RP
X0VER0U7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgd3JhcFQgPSBnbC5DTEFNUF9UT19FREdFOwor
ICAgIC8qKiBAY29uc3QgKi8gdmFyIG1pbkZpbHRlciA9IGdsLk5FQVJFU1Q7CisgICAgLyoqIEBj
b25zdCAqLyB2YXIgbWFnRmlsdGVyID0gZ2wuTkVBUkVTVDsKKworICAgIHJlbmRlclBhcmFtcy5m
bGFncy5sb2dfcHJvZ3JhbXMgPSB0cnVlOworICAgIHJlbmRlclBhcmFtcy5mbGFncy5sb2dfdW5p
Zm9ybXMgPSB0cnVlOworCisgICAgcmVuZGVyUGFyYW1zLnNhbXBsZXJUeXBlID0gZ2xzVGV4dHVy
ZVRlc3RVdGlsLmdldFNhbXBsZXJUeXBlKHRoaXMubV90ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5n
ZXRGb3JtYXQoKSk7CisgICAgcmVuZGVyUGFyYW1zLnNhbXBsZXIgPSBuZXcgdGN1VGV4dHVyZS5T
YW1wbGVyKHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwgdGN1VGV4dHVyZS5XcmFw
TW9kZS5DTEFNUF9UT19FREdFLCB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0UsCisg
ICAgIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNULCB0Y3VUZXh0dXJlLkZpbHRlck1vZGUu
TkVBUkVTVCk7CisgICAgcmVuZGVyUGFyYW1zLmNvbG9yU2NhbGUgPSBzcGVjLmxvb2t1cFNjYWxl
OworICAgIHJlbmRlclBhcmFtcy5jb2xvckJpYXMgPSBzcGVjLmxvb2t1cEJpYXM7CisKKyAgICB2
YXIgdGV4Q29vcmQgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZVF1YWRUZXhDb29yZDJEKFsw
LCAwXSwgWzEsIDFdKTsKKworICAgIC8vIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlIDw8ICJUZXh0
dXJlIHBhcmFtZXRlcnM6IgorICAgIC8vIDw8ICJcbiBXUkFQX1MgPSAiIDw8IGdsdTo6Z2V0VGV4
dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfV1JBUF9TLCB3cmFwUykKKyAgICAvLyA8
PCAiXG4gV1JBUF9UID0gIiA8PCBnbHU6OmdldFRleHR1cmVQYXJhbWV0ZXJWYWx1ZVN0cihnbC5U
RVhUVVJFX1dSQVBfVCwgd3JhcFQpCisgICAgLy8gPDwgIlxuIE1JTl9GSUxURVIgPSAiIDw8IGds
dTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgbWlu
RmlsdGVyKQorICAgIC8vIDw8ICJcbiBNQUdfRklMVEVSID0gIiA8PCBnbHU6OmdldFRleHR1cmVQ
YXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0ZpbHRlcikKKyAgICAv
LyA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworCisgICAgLy8gU2V0dXAgYmFzZSB2aWV3cG9ydC4K
KyAgICBnbC52aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwg
dmlld3BvcnQuaGVpZ2h0KTsKKworICAgIC8vIFVwbG9hZCB0ZXh0dXJlIGRhdGEgdG8gR0wuCisg
ICAgdGhpcy5tX3RleHR1cmUudXBsb2FkKCk7CisKKyAgICAvLyBCaW5kIHRvIHVuaXQgMC4KKyAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0aGlzLm1fdGV4dHVyZS5nZXRHTFRleHR1cmUoKSk7CisKKyAgICAvLyBTZXR1
cCBuZWFyZXN0IG5laWdoYm9yIGZpbHRlcmluZyBhbmQgY2xhbXAtdG8tZWRnZS4KKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCB3cmFwUyk7Cisg
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgd3Jh
cFQpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBtaW5GaWx0ZXIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSLCBtYWdGaWx0ZXIpOworCisgICAgLy8gLy8gRHJhdy4KKyAg
ICB0aGlzLm1fcmVuZGVyZXIucmVuZGVyUXVhZCgwLCB0ZXhDb29yZCwgcmVuZGVyUGFyYW1zKTsK
KyAgICByZW5kZXJlZEZyYW1lLnJlYWRWaWV3cG9ydChnbCwgdmlld3BvcnQpOworCisgICAgLy8g
Ly8gQ29tcHV0ZSByZWZlcmVuY2UuCisgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1
cmUyRChuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3MocmVmZXJlbmNlRnJhbWUs
IHVuZGVmaW5lZCAvKm1fcmVuZGVyQ3R4LmdldFJlbmRlclRhcmdldCgpLmdldFBpeGVsRm9ybWF0
KCkqLyksCisgICAgICAgIHRoaXMubV90ZXh0dXJlLmdldFJlZlRleHR1cmUoKSwgdGV4Q29vcmQs
IHJlbmRlclBhcmFtcyk7CisKKyAgICAvLyBDb21wYXJlIGFuZCBsb2cuCisgICAgdmFyIGlzT2sg
PSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcGFyZUltYWdlcyhyZWZlcmVuY2VGcmFtZSwgcmVuZGVy
ZWRGcmFtZSwgdGhyZXNob2xkKTsKKworICAgIGFzc2VydE1zZ09wdGlvbnMoaXNPaywgZXMzZlRl
eHR1cmVGb3JtYXRUZXN0cy50ZXN0RGVzY3JpcHRpb24oKSwgdHJ1ZSwgZmFsc2UpOworICAgIHJl
dHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7Cit9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICovCitlczNmVGV4
dHVyZUZvcm1hdFRlc3RzLlRleHR1cmVDdWJlRm9ybWF0Q2FzZSA9IGZ1bmN0aW9uKGRlc2NyaXB0
b3IpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIGRlc2NyaXB0b3IubmFt
ZSwgZGVzY3JpcHRvci5kZXNjcmlwdGlvbik7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGRlc2NyaXB0
b3IuZm9ybWF0OworICAgIHRoaXMubV9kYXRhVHlwZSA9IGRlc2NyaXB0b3IuZGF0YVR5cGU7Cisg
ICAgdGhpcy5tX3dpZHRoID0gZGVzY3JpcHRvci53aWR0aDsKKyAgICB0aGlzLm1faGVpZ2h0ID0g
ZGVzY3JpcHRvci5oZWlnaHQ7CisgICAgdGhpcy5tX3JlbmRlcmVyID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIoZXMzZlRleHR1cmVGb3JtYXRUZXN0cy52ZXJzaW9uLCBn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFApOworICAgIERFX0FTU0VSVCh0
aGlzLm1fd2lkdGggPT0gdGhpcy5tX2hlaWdodCk7Cit9OworCitlczNmVGV4dHVyZUZvcm1hdFRl
c3RzLnNldFBhcmVudENsYXNzKGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZUN1YmVGb3Jt
YXRDYXNlLCB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCk7CisKK2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMu
VGV4dHVyZUN1YmVGb3JtYXRDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAg
Lyp0Y3U6OlRleHR1cmVGb3JtYXQqLyB2YXIgZm10ID0gdGhpcy5tX2RhdGFUeXBlID8gZ2x1VGV4
dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdCh0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5
cGUpIDogZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1fZm9ybWF0KTsK
KyAgICAvKnRjdTo6VGV4dHVyZUZvcm1hdEluZm8qLyB2YXIgc3BlYyA9IHRjdVRleHR1cmVVdGls
LmdldFRleHR1cmVGb3JtYXRJbmZvKGZtdCk7CisgICAgLyogVE9ETyA6IFBvcnQKKworICAgIHN0
ZDo6b3N0cmluZ3N0cmVhbSBmbXROYW1lOworCisgICAgaWYgKG1fZGF0YVR5cGUpCisgICAgICAg
IGZtdE5hbWUgPDwgZ2x1OjpnZXRQaXhlbEZvcm1hdFN0cihtX2Zvcm1hdCkgPDwgIiwgIiA8PCBn
bHU6OmdldFR5cGVTdHIobV9kYXRhVHlwZSk7CisgICAgZWxzZQorICAgICAgICBmbXROYW1lIDw8
IGdsdTo6Z2V0UGl4ZWxGb3JtYXRTdHIobV9mb3JtYXQpOworCisgICAgbG9nIDw8IFRlc3RMb2c6
Ok1lc3NhZ2UgPDwgIjJEIHRleHR1cmUsICIgPDwgZm10TmFtZS5zdHIoKSA8PCAiLCAiIDw8IG1f
d2lkdGggPDwgIngiIDw8IG1faGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IixcbiBmaWxsIHdpdGggIiA8PCBmb3JtYXRHcmFkaWVudCgmc3BlYy52YWx1ZU1pbiwgJnNwZWMu
dmFsdWVNYXgpIDw8ICIgZ3JhZGllbnQiCisgICAgICAgIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7
CisgICAgKi8KKworICAgIHRoaXMubV90ZXh0dXJlID0gdGhpcy5tX2RhdGFUeXBlID8KKyAgICAg
ICAgICAgICAgZ2x1VGV4dHVyZS5jdWJlRnJvbUZvcm1hdChnbCwgdGhpcy5tX2Zvcm1hdCwgdGhp
cy5tX2RhdGFUeXBlLCB0aGlzLm1fd2lkdGgpIDogLy8gSW1wbGljaXQgaW50ZXJuYWwgZm9ybWF0
LgorICAgICAgICAgICAgICBnbHVUZXh0dXJlLmN1YmVGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRo
aXMubV9mb3JtYXQsIHRoaXMubV93aWR0aCk7IC8vIEV4cGxpY2l0IGludGVybmFsIGZvcm1hdC4K
KworICAgIC8vIEZpbGwgbGV2ZWwgMC4KKyAgICBmb3IgKHZhciBmYWNlIGluIHRjdVRleHR1cmUu
Q3ViZUZhY2UpIHsKKyAgICAgICAgdmFyIGdNaW4gPSBudWxsOworICAgICAgICB2YXIgZ01heCA9
IG51bGw7CisKKyAgICAgICAgc3dpdGNoICh0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdKSB7Cisg
ICAgICAgICAgICBjYXNlIDA6IGdNaW4gPSBkZU1hdGguc3dpenpsZShzcGVjLnZhbHVlTWluLCBb
MCwgMSwgMiwgM10pOyBnTWF4ID0gZGVNYXRoLnN3aXp6bGUoc3BlYy52YWx1ZU1heCwgWzAsIDEs
IDIsIDNdKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6IGdNaW4gPSBkZU1hdGguc3dpenps
ZShzcGVjLnZhbHVlTWluLCBbMiwgMSwgMCwgM10pOyBnTWF4ID0gZGVNYXRoLnN3aXp6bGUoc3Bl
Yy52YWx1ZU1heCwgWzIsIDEsIDAsIDNdKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGdN
aW4gPSBkZU1hdGguc3dpenpsZShzcGVjLnZhbHVlTWluLCBbMSwgMiwgMCwgM10pOyBnTWF4ID0g
ZGVNYXRoLnN3aXp6bGUoc3BlYy52YWx1ZU1heCwgWzEsIDIsIDAsIDNdKTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDM6IGdNaW4gPSBkZU1hdGguc3dpenpsZShzcGVjLnZhbHVlTWF4LCBbMCwg
MSwgMiwgM10pOyBnTWF4ID0gZGVNYXRoLnN3aXp6bGUoc3BlYy52YWx1ZU1pbiwgWzAsIDEsIDIs
IDNdKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGdNaW4gPSBkZU1hdGguc3dpenpsZShz
cGVjLnZhbHVlTWF4LCBbMiwgMSwgMCwgM10pOyBnTWF4ID0gZGVNYXRoLnN3aXp6bGUoc3BlYy52
YWx1ZU1pbiwgWzIsIDEsIDAsIDNdKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGdNaW4g
PSBkZU1hdGguc3dpenpsZShzcGVjLnZhbHVlTWF4LCBbMSwgMiwgMCwgM10pOyBnTWF4ID0gZGVN
YXRoLnN3aXp6bGUoc3BlYy52YWx1ZU1pbiwgWzEsIDIsIDAsIDNdKTsgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbCh0
Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdLCAwKTsKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmls
bFdpdGhDb21wb25lbnRHcmFkaWVudHModGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdl
dExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdKSwgZ01pbiwgZ01heCk7Cisg
ICAgfQorCisgICAgdGhpcy5tX3RleHR1cmUudXBsb2FkKCk7CisgICAgdGhpcy5tX2N1ckZhY2Ug
PSAwOworICAgIHRoaXMubV9pc09rID0gdHJ1ZTsKK307CisKK2VzM2ZUZXh0dXJlRm9ybWF0VGVz
dHMuVGV4dHVyZUN1YmVGb3JtYXRDYXNlLnByb3RvdHlwZS50ZXN0RmFjZSA9IGZ1bmN0aW9uKGZh
Y2UpIHsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQgKi8KKworICAgIHZhciB2aWV3cG9ydCA9IG5l
dyBnbHNUZXh0dXJlVGVzdFV0aWwuUmFuZG9tVmlld3BvcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NhbnZhcycpLCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQvKiwgZGVTdHJpbmdIYXNo
KGdldE5hbWUoKSkqLyk7CisKKyAgICAvKiB0Y3U6OlN1cmZhY2UgKi8gdmFyIHJlbmRlcmVkRnJh
bWUgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWln
aHQpOworICAgIC8qIHRjdTo6U3VyZmFjZSAqLyB2YXIgcmVmZXJlbmNlRnJhbWUgPSBuZXcgdGN1
U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworICAgIC8q
IFRPRE86IEltcGxlbWVudAorICAgIC8vIHRjdTo6UkdCQSB0aHJlc2hvbGQgPSBtX3JlbmRlckN0
eC5nZXRSZW5kZXJUYXJnZXQoKS5nZXRQaXhlbEZvcm1hdCgpLmdldENvbG9yVGhyZXNob2xkKCkg
KyB0Y3U6OlJHQkEoMSwxLDEsMSk7CisgICAgKi8KKyAgICB2YXIgdGhyZXNob2xkID0gWzMsIDMs
IDMsIDNdOworICAgIHZhciByZW5kZXJQYXJhbXMgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJl
ZmVyZW5jZVBhcmFtcyhnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVf
Q1VCRSk7CisKKyAgICAvKiB0Y3U6OlRleHR1cmVGb3JtYXRJbmZvKi8gdmFyIHNwZWMgPSB0Y3VU
ZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyh0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0
dXJlKCkuZ2V0Rm9ybWF0KCkpOworICAgIC8qKiBAY29uc3QgKi8gdmFyIHdyYXBTID0gZ2wuQ0xB
TVBfVE9fRURHRTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3cmFwVCA9IGdsLkNMQU1QX1RPX0VE
R0U7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgbWluRmlsdGVyID0gZ2wuTkVBUkVTVDsKKyAgICAv
KiogQGNvbnN0ICovIHZhciBtYWdGaWx0ZXIgPSBnbC5ORUFSRVNUOworCisgICAgcmVuZGVyUGFy
YW1zLmZsYWdzLmxvZ19wcm9ncmFtcyA9IHRydWU7CisgICAgcmVuZGVyUGFyYW1zLmZsYWdzLmxv
Z191bmlmb3JtcyA9IHRydWU7CisKKyAgICByZW5kZXJQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNU
ZXh0dXJlVGVzdFV0aWwuZ2V0U2FtcGxlclR5cGUodGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVy
ZSgpLmdldEZvcm1hdCgpKTsKKyAgICByZW5kZXJQYXJhbXMuc2FtcGxlciA9IG5ldyB0Y3VUZXh0
dXJlLlNhbXBsZXIodGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFLCB0Y3VUZXh0dXJl
LldyYXBNb2RlLkNMQU1QX1RPX0VER0UsIHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURH
RSwKKyAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsIHRjdVRleHR1cmUuRmlsdGVy
TW9kZS5ORUFSRVNUKTsKKyAgICByZW5kZXJQYXJhbXMuY29sb3JTY2FsZSA9IHNwZWMubG9va3Vw
U2NhbGU7CisgICAgcmVuZGVyUGFyYW1zLmNvbG9yQmlhcyA9IHNwZWMubG9va3VwQmlhczsKKwor
ICAgIC8vIExvZyByZW5kZXIgaW5mbyBvbiBmaXJzdCBmYWNlLgorICAgIGlmIChmYWNlID09PSB0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1gpIHsKKyAgICAgICAgcmVuZGVy
UGFyYW1zLmZsYWdzLmxvZ19wcm9ncmFtcyA9IHRydWU7CisgICAgICAgIHJlbmRlclBhcmFtcy5m
bGFncy5sb2dfdW5pZm9ybXMgPSB0cnVlOworICAgIH0KKworICAgIHZhciB0ZXhDb29yZCA9IGds
c1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkQ3ViZShmYWNlKTsKKworICAgIC8v
IGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlIDw8ICJUZXh0dXJlIHBhcmFtZXRlcnM6IgorICAgIC8v
IDw8ICJcbiBXUkFQX1MgPSAiIDw8IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGds
LlRFWFRVUkVfV1JBUF9TLCB3cmFwUykKKyAgICAvLyA8PCAiXG4gV1JBUF9UID0gIiA8PCBnbHU6
OmdldFRleHR1cmVQYXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhUVVJFX1dSQVBfVCwgd3JhcFQpCisg
ICAgLy8gPDwgIlxuIE1JTl9GSUxURVIgPSAiIDw8IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZh
bHVlU3RyKGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgbWluRmlsdGVyKQorICAgIC8vIDw8ICJcbiBN
QUdfRklMVEVSID0gIiA8PCBnbHU6OmdldFRleHR1cmVQYXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhU
VVJFX01BR19GSUxURVIsIG1hZ0ZpbHRlcikKKyAgICAvLyA8PCBUZXN0TG9nOjpFbmRNZXNzYWdl
OworCisgICAgLy8gU2V0dXAgYmFzZSB2aWV3cG9ydC4KKyAgICBnbC52aWV3cG9ydCh2aWV3cG9y
dC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKworICAg
IC8vIEJpbmQgdG8gdW5pdCAwLgorICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOwor
ICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRoaXMubV90ZXh0dXJlLmdl
dEdMVGV4dHVyZSgpKTsKKworICAgIC8vIFNldHVwIG5lYXJlc3QgbmVpZ2hib3IgZmlsdGVyaW5n
IGFuZCBjbGFtcC10by1lZGdlLgorICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJF
X01BUCwgZ2wuVEVYVFVSRV9XUkFQX1MsIHdyYXBTKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfV1JBUF9ULCB3cmFwVCk7CisgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIsIG1p
bkZpbHRlcik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5U
RVhUVVJFX01BR19GSUxURVIsIG1hZ0ZpbHRlcik7CisKKyAgICAvLyAvLyBEcmF3LgorICAgIHRo
aXMubV9yZW5kZXJlci5yZW5kZXJRdWFkKDAsIHRleENvb3JkLCByZW5kZXJQYXJhbXMpOworICAg
IHJlbmRlcmVkRnJhbWUucmVhZFZpZXdwb3J0KGdsLCB2aWV3cG9ydCk7CisKKyAgICAvLyAvLyBD
b21wdXRlIHJlZmVyZW5jZS4KKyAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZUN1
YmUobmV3IGdsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzKHJlZmVyZW5jZUZyYW1lLCB1
bmRlZmluZWQgLyptX3JlbmRlckN0eC5nZXRSZW5kZXJUYXJnZXQoKS5nZXRQaXhlbEZvcm1hdCgp
Ki8pLAorICAgICAgICB0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCksIHRleENvb3JkLCBy
ZW5kZXJQYXJhbXMpOworCisgICAgLy8gQ29tcGFyZSBhbmQgbG9nLgorICAgIHZhciBza2lwUGl4
ZWxzID0gbnVsbDsKKyAgICBpZiAocmVuZGVyUGFyYW1zLnNhbXBsZXJUeXBlID09IGdsc1RleHR1
cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9JTlQgfHwKKyAgICAgICAgcmVuZGVy
UGFyYW1zLnNhbXBsZXJUeXBlID09IGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1Q
TEVSVFlQRV9VSU5UKSB7CisgICAgICAgIC8vIFNraXAgdG9wIHJpZ2h0IHBpeGVsIGR1ZSB0byBN
YWMgSW50ZWwgZHJpdmVyIGJ1Zy4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9u
b3NHcm91cC9XZWJHTC9pc3N1ZXMvMTgxOQorICAgICAgICBza2lwUGl4ZWxzID0gWworICAgICAg
ICAgICAgW3RoaXMubV93aWR0aCAtIDEsIHRoaXMubV9oZWlnaHQgLSAxXQorICAgICAgICBdOwor
ICAgIH0KKyAgICB2YXIgaXNPayA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wYXJlSW1hZ2VzKHJl
ZmVyZW5jZUZyYW1lLCByZW5kZXJlZEZyYW1lLCB0aHJlc2hvbGQsIHNraXBQaXhlbHMpOworCisg
ICAgYXNzZXJ0TXNnT3B0aW9ucyhpc09rLCAnRmFjZTogJyArIHRoaXMubV9jdXJGYWNlICsgJyAn
ICsgZXMzZlRleHR1cmVGb3JtYXRUZXN0cy50ZXN0RGVzY3JpcHRpb24oKSwgdHJ1ZSwgZmFsc2Up
OworICAgIHJldHVybiBpc09rOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5UZXh0dXJl
Q3ViZUZvcm1hdENhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBkZWJ1
ZygnVGVzdGluZyBmYWNlICcgKyB0aGlzLm1fY3VyRmFjZSk7CisgICAgLy8gRXhlY3V0ZSB0ZXN0
IGZvciBhbGwgZmFjZXMuCisgICAgaWYgKCF0aGlzLnRlc3RGYWNlKHRoaXMubV9jdXJGYWNlKSkK
KyAgICAgICAgdGhpcy5tX2lzT2sgPSBmYWxzZTsKKworICAgIHRoaXMubV9jdXJGYWNlICs9IDE7
CisKKyAgICBpZiAodGhpcy5tX2N1ckZhY2UgPCBPYmplY3Qua2V5cyh0Y3VUZXh0dXJlLkN1YmVG
YWNlKS5sZW5ndGgpCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LkNP
TlRJTlVFOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1
bHQuU1RPUDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGVz
dENhc2UuRGVxcFRlc3R9CisgKi8KK2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJEQXJy
YXlGb3JtYXRDYXNlID0gZnVuY3Rpb24oZGVzY3JpcHRvcikgeworICAgIHRjdVRlc3RDYXNlLkRl
cXBUZXN0LmNhbGwodGhpcywgZGVzY3JpcHRvci5uYW1lLCBkZXNjcmlwdG9yLmRlc2NyaXB0aW9u
KTsKKyAgICB0aGlzLm1fZm9ybWF0ID0gZGVzY3JpcHRvci5mb3JtYXQ7CisgICAgdGhpcy5tX2Rh
dGFUeXBlID0gZGVzY3JpcHRvci5kYXRhVHlwZTsKKyAgICB0aGlzLm1fd2lkdGggPSBkZXNjcmlw
dG9yLndpZHRoOworICAgIHRoaXMubV9oZWlnaHQgPSBkZXNjcmlwdG9yLmhlaWdodDsKKyAgICB0
aGlzLm1fbnVtTGF5ZXJzID0gZGVzY3JpcHRvci5udW1MYXllcnM7CisgICAgdGhpcy5tX3JlbmRl
cmVyID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIoZXMzZlRleHR1cmVG
b3JtYXRUZXN0cy52ZXJzaW9uLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElH
SFApOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5zZXRQYXJlbnRDbGFzcyhlczNmVGV4
dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUyREFycmF5Rm9ybWF0Q2FzZSwgdGN1VGVzdENhc2UuRGVx
cFRlc3QpOworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUyREFycmF5Rm9ybWF0Q2Fz
ZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgIC8qdGN1OjpUZXh0dXJlRm9ybWF0
Ki8gdmFyIGZtdCA9IHRoaXMubV9kYXRhVHlwZSA/IGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNm
ZXJGb3JtYXQodGhpcy5tX2Zvcm1hdCwgdGhpcy5tX2RhdGFUeXBlKSA6IGdsdVRleHR1cmVVdGls
Lm1hcEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2Zvcm1hdCk7CisgICAgLyp0Y3U6OlRleHR1cmVG
b3JtYXRJbmZvKi8gdmFyIHNwZWMgPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5m
byhmbXQpOworICAgIC8qIFRPRE8gOiBQb3J0CisKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gZm10
TmFtZTsKKworICAgIGlmIChtX2RhdGFUeXBlKQorICAgICAgICBmbXROYW1lIDw8IGdsdTo6Z2V0
UGl4ZWxGb3JtYXRTdHIobV9mb3JtYXQpIDw8ICIsICIgPDwgZ2x1OjpnZXRUeXBlU3RyKG1fZGF0
YVR5cGUpOworICAgIGVsc2UKKyAgICAgICAgZm10TmFtZSA8PCBnbHU6OmdldFBpeGVsRm9ybWF0
U3RyKG1fZm9ybWF0KTsKKworICAgIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdlIDw8ICIyRCB0ZXh0
dXJlLCAiIDw8IGZtdE5hbWUuc3RyKCkgPDwgIiwgIiA8PCBtX3dpZHRoIDw8ICJ4IiA8PCBtX2hl
aWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsXG4gZmlsbCB3aXRoICIgPDwg
Zm9ybWF0R3JhZGllbnQoJnNwZWMudmFsdWVNaW4sICZzcGVjLnZhbHVlTWF4KSA8PCAiIGdyYWRp
ZW50IgorICAgICAgICA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworICAgICovCisKKyAgICB0aGlz
Lm1fdGV4dHVyZSA9IHRoaXMubV9kYXRhVHlwZSA/CisgICAgICAgICAgICAgIGdsdVRleHR1cmUu
dGV4dHVyZTJEQXJyYXlGcm9tRm9ybWF0KGdsLCB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5
cGUsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX251bUxheWVycykgOiAvLyBJ
bXBsaWNpdCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgICAgICAgIGdsdVRleHR1cmUudGV4dHVy
ZTJEQXJyYXlGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMubV9mb3JtYXQsIHRoaXMubV93aWR0
aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX251bUxheWVycyk7IC8vIEV4cGxpY2l0IGludGVybmFs
IGZvcm1hdC4KKworICAgIHRoaXMubV90ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVs
KDApOworICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHRoaXMu
bV90ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5nZXRMZXZlbCgwKSwgc3BlYy52YWx1ZU1pbiwgc3Bl
Yy52YWx1ZU1heCk7CisKKyAgICB0aGlzLm1fY3VyTGF5ZXIgPSAwOworICAgIHRoaXMubV9pc09r
ID0gdHJ1ZTsKK307CisKK2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJEQXJyYXlGb3Jt
YXRDYXNlLnByb3RvdHlwZS50ZXN0TGF5ZXIgPSBmdW5jdGlvbihsYXllck5keCkgeworICAgIC8q
IFRPRE86IEltcGxlbWVudCAqLworCisgICAgdmFyIHZpZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5SYW5kb21WaWV3cG9ydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyks
IHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodC8qLCBkZVN0cmluZ0hhc2goZ2V0TmFtZSgpKSov
KTsKKworICAgIC8qIHRjdTo6U3VyZmFjZSAqLyB2YXIgcmVuZGVyZWRGcmFtZSA9IG5ldyB0Y3VT
dXJmYWNlLlN1cmZhY2Uodmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7CisgICAgLyog
dGN1OjpTdXJmYWNlICovIHZhciByZWZlcmVuY2VGcmFtZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZh
Y2Uodmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7CisgICAgLyogVE9ETzogSW1wbGVt
ZW50CisgICAgLy8gdGN1OjpSR0JBIHRocmVzaG9sZCA9IG1fcmVuZGVyQ3R4LmdldFJlbmRlclRh
cmdldCgpLmdldFBpeGVsRm9ybWF0KCkuZ2V0Q29sb3JUaHJlc2hvbGQoKSArIHRjdTo6UkdCQSgx
LDEsMSwxKTsKKyAgICAqLworICAgIHZhciB0aHJlc2hvbGQgPSBbMywgMywgMywgM107CisgICAg
dmFyIHJlbmRlclBhcmFtcyA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1z
KGdsc1RleHR1cmVUZXN0VXRpbC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8yRF9BUlJBWSk7CisK
KyAgICAvKiB0Y3U6OlRleHR1cmVGb3JtYXRJbmZvKi8gdmFyIHNwZWMgPSB0Y3VUZXh0dXJlVXRp
bC5nZXRUZXh0dXJlRm9ybWF0SW5mbyh0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCkuZ2V0
Rm9ybWF0KCkpOworICAgIC8qKiBAY29uc3QgKi8gdmFyIHdyYXBTID0gZ2wuQ0xBTVBfVE9fRURH
RTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3cmFwVCA9IGdsLkNMQU1QX1RPX0VER0U7CisgICAg
LyoqIEBjb25zdCAqLyB2YXIgbWluRmlsdGVyID0gZ2wuTkVBUkVTVDsKKyAgICAvKiogQGNvbnN0
ICovIHZhciBtYWdGaWx0ZXIgPSBnbC5ORUFSRVNUOworCisgICAgcmVuZGVyUGFyYW1zLmZsYWdz
LmxvZ19wcm9ncmFtcyA9IHRydWU7CisgICAgcmVuZGVyUGFyYW1zLmZsYWdzLmxvZ191bmlmb3Jt
cyA9IHRydWU7CisKKyAgICByZW5kZXJQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNUZXh0dXJlVGVz
dFV0aWwuZ2V0U2FtcGxlclR5cGUodGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdldEZv
cm1hdCgpKTsKKyAgICByZW5kZXJQYXJhbXMuc2FtcGxlciA9IG5ldyB0Y3VUZXh0dXJlLlNhbXBs
ZXIodGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFLCB0Y3VUZXh0dXJlLldyYXBNb2Rl
LkNMQU1QX1RPX0VER0UsIHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwKKyAgICAg
dGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFS
RVNUKTsKKyAgICByZW5kZXJQYXJhbXMuY29sb3JTY2FsZSA9IHNwZWMubG9va3VwU2NhbGU7Cisg
ICAgcmVuZGVyUGFyYW1zLmNvbG9yQmlhcyA9IHNwZWMubG9va3VwQmlhczsKKworICAgIHZhciB0
ZXhDb29yZCA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkMkRBcnJheShs
YXllck5keCwgWzAsIDBdLCBbMSwgMV0pOworCisgICAgLy8gbG9nIDw8IFRlc3RMb2c6Ok1lc3Nh
Z2UgPDwgIlRleHR1cmUgcGFyYW1ldGVyczoiCisgICAgLy8gPDwgIlxuIFdSQVBfUyA9ICIgPDwg
Z2x1OjpnZXRUZXh0dXJlUGFyYW1ldGVyVmFsdWVTdHIoZ2wuVEVYVFVSRV9XUkFQX1MsIHdyYXBT
KQorICAgIC8vIDw8ICJcbiBXUkFQX1QgPSAiIDw8IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZh
bHVlU3RyKGdsLlRFWFRVUkVfV1JBUF9ULCB3cmFwVCkKKyAgICAvLyA8PCAiXG4gTUlOX0ZJTFRF
UiA9ICIgPDwgZ2x1OjpnZXRUZXh0dXJlUGFyYW1ldGVyVmFsdWVTdHIoZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBtaW5GaWx0ZXIpCisgICAgLy8gPDwgIlxuIE1BR19GSUxURVIgPSAiIDw8IGdsdTo6
Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgbWFnRmls
dGVyKQorICAgIC8vIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7CisKKyAgICAvLyBTZXR1cCBiYXNl
IHZpZXdwb3J0LgorICAgIGdsLnZpZXdwb3J0KHZpZXdwb3J0LngsIHZpZXdwb3J0LnksIHZpZXdw
b3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworCisgICAgdGhpcy5tX3RleHR1cmUudXBsb2Fk
KCk7CisKKyAgICAvLyBCaW5kIHRvIHVuaXQgMC4KKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRF
WFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0aGlzLm1f
dGV4dHVyZS5nZXRHTFRleHR1cmUoKSk7CisKKyAgICAvLyBTZXR1cCBuZWFyZXN0IG5laWdoYm9y
IGZpbHRlcmluZyBhbmQgY2xhbXAtdG8tZWRnZS4KKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfV1JBUF9TLCB3cmFwUyk7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhUVVJFX1dSQVBfVCwgd3JhcFQpOwor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRF9BUlJBWSwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBtaW5GaWx0ZXIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRF9B
UlJBWSwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBtYWdGaWx0ZXIpOworCisgICAgLy8gLy8gRHJh
dy4KKyAgICB0aGlzLm1fcmVuZGVyZXIucmVuZGVyUXVhZCgwLCB0ZXhDb29yZCwgcmVuZGVyUGFy
YW1zKTsKKyAgICByZW5kZXJlZEZyYW1lLnJlYWRWaWV3cG9ydChnbCwgdmlld3BvcnQpOworCisg
ICAgLy8gLy8gQ29tcHV0ZSByZWZlcmVuY2UuCisgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBs
ZVRleHR1cmUyREFycmF5KG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZl
cmVuY2VGcmFtZSwgdW5kZWZpbmVkIC8qbV9yZW5kZXJDdHguZ2V0UmVuZGVyVGFyZ2V0KCkuZ2V0
UGl4ZWxGb3JtYXQoKSovKSwKKyAgICAgICAgdGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgp
LmdldFZpZXcoKSwgdGV4Q29vcmQsIHJlbmRlclBhcmFtcyk7CisKKyAgICAvLyBDb21wYXJlIGFu
ZCBsb2cuCisgICAgdmFyIGlzT2sgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcGFyZUltYWdlcyhy
ZWZlcmVuY2VGcmFtZSwgcmVuZGVyZWRGcmFtZSwgdGhyZXNob2xkKTsKKworICAgIGFzc2VydE1z
Z09wdGlvbnMoaXNPaywgJ0xheWVyOiAnICsgdGhpcy5tX2N1ckxheWVyICsgJyAnICsgZXMzZlRl
eHR1cmVGb3JtYXRUZXN0cy50ZXN0RGVzY3JpcHRpb24oKSwgdHJ1ZSwgZmFsc2UpOworICAgIHJl
dHVybiBpc09rOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5UZXh0dXJlMkRBcnJheUZv
cm1hdENhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygnVGVz
dGluZyBsYXllciAnICsgdGhpcy5tX2N1ckxheWVyKTsKKyAgICAvLyBFeGVjdXRlIHRlc3QgZm9y
IGFsbCBsYXllcnMuCisgICAgaWYgKCF0aGlzLnRlc3RMYXllcih0aGlzLm1fY3VyTGF5ZXIpKQor
ICAgICAgICB0aGlzLm1faXNPayA9IGZhbHNlOworCisgICAgdGhpcy5tX2N1ckxheWVyICs9IDE7
CisKKyAgICBpZiAodGhpcy5tX2N1ckxheWVyID09IHRoaXMubV9udW1MYXllcnMpCisgICAgICAg
IHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5DT05USU5VRTsKK307CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgKi8K
K2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTNERm9ybWF0Q2FzZSA9IGZ1bmN0aW9uKGRl
c2NyaXB0b3IpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIGRlc2NyaXB0
b3IubmFtZSwgZGVzY3JpcHRvci5kZXNjcmlwdGlvbik7CisgICAgdGhpcy5tX2Zvcm1hdCA9IGRl
c2NyaXB0b3IuZm9ybWF0OworICAgIHRoaXMubV9kYXRhVHlwZSA9IGRlc2NyaXB0b3IuZGF0YVR5
cGU7CisgICAgdGhpcy5tX3dpZHRoID0gZGVzY3JpcHRvci53aWR0aDsKKyAgICB0aGlzLm1faGVp
Z2h0ID0gZGVzY3JpcHRvci5oZWlnaHQ7CisgICAgdGhpcy5tX2RlcHRoID0gZGVzY3JpcHRvci5k
ZXB0aDsKKyAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1
cmVSZW5kZXJlcihlczNmVGV4dHVyZUZvcm1hdFRlc3RzLnZlcnNpb24sIGdsdVNoYWRlclV0aWwu
cHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7Cit9OworCitlczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LnNldFBhcmVudENsYXNzKGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTNERm9ybWF0Q2Fz
ZSwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1
cmUzREZvcm1hdENhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAvKnRjdTo6
VGV4dHVyZUZvcm1hdCovIHZhciBmbXQgPSB0aGlzLm1fZGF0YVR5cGUgPyBnbHVUZXh0dXJlVXRp
bC5tYXBHTFRyYW5zZmVyRm9ybWF0KHRoaXMubV9mb3JtYXQsIHRoaXMubV9kYXRhVHlwZSkgOiBn
bHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KHRoaXMubV9mb3JtYXQpOworICAgIC8q
dGN1OjpUZXh0dXJlRm9ybWF0SW5mbyovIHZhciBzcGVjID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4
dHVyZUZvcm1hdEluZm8oZm10KTsKKyAgICAvKiBUT0RPIDogUG9ydAorCisgICAgc3RkOjpvc3Ry
aW5nc3RyZWFtIGZtdE5hbWU7CisKKyAgICBpZiAobV9kYXRhVHlwZSkKKyAgICAgICAgZm10TmFt
ZSA8PCBnbHU6OmdldFBpeGVsRm9ybWF0U3RyKG1fZm9ybWF0KSA8PCAiLCAiIDw8IGdsdTo6Z2V0
VHlwZVN0cihtX2RhdGFUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIGZtdE5hbWUgPDwgZ2x1Ojpn
ZXRQaXhlbEZvcm1hdFN0cihtX2Zvcm1hdCk7CisKKyAgICBsb2cgPDwgVGVzdExvZzo6TWVzc2Fn
ZSA8PCAiMkQgdGV4dHVyZSwgIiA8PCBmbXROYW1lLnN0cigpIDw8ICIsICIgPDwgbV93aWR0aCA8
PCAieCIgPDwgbV9oZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLFxuIGZp
bGwgd2l0aCAiIDw8IGZvcm1hdEdyYWRpZW50KCZzcGVjLnZhbHVlTWluLCAmc3BlYy52YWx1ZU1h
eCkgPDwgIiBncmFkaWVudCIKKyAgICAgICAgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKKyAgICAq
LworCisgICAgdGhpcy5tX3RleHR1cmUgPSB0aGlzLm1fZGF0YVR5cGUgPworICAgICAgICAgICAg
ICBnbHVUZXh0dXJlLnRleHR1cmUzREZyb21Gb3JtYXQoZ2wsIHRoaXMubV9mb3JtYXQsIHRoaXMu
bV9kYXRhVHlwZSwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgpIDog
Ly8gSW1wbGljaXQgaW50ZXJuYWwgZm9ybWF0LgorICAgICAgICAgICAgICBnbHVUZXh0dXJlLnRl
eHR1cmUzREZyb21JbnRlcm5hbEZvcm1hdChnbCwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3dpZHRo
LCB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgpOyAvLyBFeHBsaWNpdCBpbnRlcm5hbCBmb3Jt
YXQuCisKKyAgICB0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbCgwKTsK
KyAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cyh0aGlzLm1fdGV4
dHVyZS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwoMCksIHNwZWMudmFsdWVNaW4sIHNwZWMudmFs
dWVNYXgpOworCisgICAgdGhpcy5tX2N1clNsaWNlID0gMDsKKyAgICB0aGlzLm1faXNPayA9IHRy
dWU7Cit9OworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUzREZvcm1hdENhc2UucHJv
dG90eXBlLnRlc3RTbGljZSA9IGZ1bmN0aW9uKHNsaWNlTmR4KSB7CisgICAgLyogVE9ETzogSW1w
bGVtZW50ICovCisKKyAgICB2YXIgdmlld3BvcnQgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJh
bmRvbVZpZXdwb3J0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKSwgdGhpcy5tX3dp
ZHRoLCB0aGlzLm1faGVpZ2h0LyosIGRlU3RyaW5nSGFzaChnZXROYW1lKCkpKi8pOworCisgICAg
LyogdGN1OjpTdXJmYWNlICovIHZhciByZW5kZXJlZEZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3Vy
ZmFjZSh2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICAvKiB0Y3U6OlN1cmZh
Y2UgKi8gdmFyIHJlZmVyZW5jZUZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9y
dC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQKKyAgICAv
LyB0Y3U6OlJHQkEgdGhyZXNob2xkID0gbV9yZW5kZXJDdHguZ2V0UmVuZGVyVGFyZ2V0KCkuZ2V0
UGl4ZWxGb3JtYXQoKS5nZXRDb2xvclRocmVzaG9sZCgpICsgdGN1OjpSR0JBKDEsMSwxLDEpOwor
ICAgICovCisgICAgdmFyIHRocmVzaG9sZCA9IFszLCAzLCAzLCAzXTsKKyAgICB2YXIgcmVuZGVy
UGFyYW1zID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXMoZ2xzVGV4dHVy
ZVRlc3RVdGlsLnRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzNEKTsKKworICAgIC8qIHRjdTo6VGV4
dHVyZUZvcm1hdEluZm8qLyB2YXIgc3BlYyA9IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3Jt
YXRJbmZvKHRoaXMubV90ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5nZXRGb3JtYXQoKSk7CisgICAg
dmFyIHIgPSAoc2xpY2VOZHggKyAwLjUpIC8gdGhpcy5tX2RlcHRoOworICAgIC8qKiBAY29uc3Qg
Ki8gdmFyIHdyYXBTID0gZ2wuQ0xBTVBfVE9fRURHRTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3
cmFwVCA9IGdsLkNMQU1QX1RPX0VER0U7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgbWluRmlsdGVy
ID0gZ2wuTkVBUkVTVDsKKyAgICAvKiogQGNvbnN0ICovIHZhciBtYWdGaWx0ZXIgPSBnbC5ORUFS
RVNUOworCisgICAgcmVuZGVyUGFyYW1zLmZsYWdzLmxvZ19wcm9ncmFtcyA9IHRydWU7CisgICAg
cmVuZGVyUGFyYW1zLmZsYWdzLmxvZ191bmlmb3JtcyA9IHRydWU7CisKKyAgICByZW5kZXJQYXJh
bXMuc2FtcGxlclR5cGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwuZ2V0U2FtcGxlclR5cGUodGhpcy5t
X3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLmdldEZvcm1hdCgpKTsKKyAgICByZW5kZXJQYXJhbXMu
c2FtcGxlciA9IG5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIodGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFN
UF9UT19FREdFLCB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0UsIHRjdVRleHR1cmUu
V3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwKKyAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJF
U1QsIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUKTsKKyAgICByZW5kZXJQYXJhbXMuY29s
b3JTY2FsZSA9IHNwZWMubG9va3VwU2NhbGU7CisgICAgcmVuZGVyUGFyYW1zLmNvbG9yQmlhcyA9
IHNwZWMubG9va3VwQmlhczsKKworICAgIHZhciB0ZXhDb29yZCA9IGdsc1RleHR1cmVUZXN0VXRp
bC5jb21wdXRlUXVhZFRleENvb3JkM0QoWzAsIDAsIHJdLCBbMSwgMSwgcl0sIFswLCAxLCAyXSk7
CisKKyAgICAvLyBsb2cgPDwgVGVzdExvZzo6TWVzc2FnZSA8PCAiVGV4dHVyZSBwYXJhbWV0ZXJz
OiIKKyAgICAvLyA8PCAiXG4gV1JBUF9TID0gIiA8PCBnbHU6OmdldFRleHR1cmVQYXJhbWV0ZXJW
YWx1ZVN0cihnbC5URVhUVVJFX1dSQVBfUywgd3JhcFMpCisgICAgLy8gPDwgIlxuIFdSQVBfVCA9
ICIgPDwgZ2x1OjpnZXRUZXh0dXJlUGFyYW1ldGVyVmFsdWVTdHIoZ2wuVEVYVFVSRV9XUkFQX1Qs
IHdyYXBUKQorICAgIC8vIDw8ICJcbiBNSU5fRklMVEVSID0gIiA8PCBnbHU6OmdldFRleHR1cmVQ
YXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcikKKyAgICAv
LyA8PCAiXG4gTUFHX0ZJTFRFUiA9ICIgPDwgZ2x1OjpnZXRUZXh0dXJlUGFyYW1ldGVyVmFsdWVT
dHIoZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBtYWdGaWx0ZXIpCisgICAgLy8gPDwgVGVzdExvZzo6
RW5kTWVzc2FnZTsKKworICAgIC8vIFNldHVwIGJhc2Ugdmlld3BvcnQuCisgICAgZ2wudmlld3Bv
cnQodmlld3BvcnQueCwgdmlld3BvcnQueSwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdo
dCk7CisKKyAgICB0aGlzLm1fdGV4dHVyZS51cGxvYWQoKTsKKworICAgIC8vIEJpbmQgdG8gdW5p
dCAwLgorICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfM0QsIHRoaXMubV90ZXh0dXJlLmdldEdMVGV4dHVyZSgpKTsKKworICAg
IC8vIFNldHVwIG5lYXJlc3QgbmVpZ2hib3IgZmlsdGVyaW5nIGFuZCBjbGFtcC10by1lZGdlLgor
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIHdy
YXBTKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfV1JB
UF9ULCB3cmFwVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzNELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzNELCBnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0ZpbHRlcik7CisKKyAgICAvLyAvLyBE
cmF3LgorICAgIHRoaXMubV9yZW5kZXJlci5yZW5kZXJRdWFkKDAsIHRleENvb3JkLCByZW5kZXJQ
YXJhbXMpOworICAgIHJlbmRlcmVkRnJhbWUucmVhZFZpZXdwb3J0KGdsLCB2aWV3cG9ydCk7CisK
KyAgICAvLyAvLyBDb21wdXRlIHJlZmVyZW5jZS4KKyAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2Ft
cGxlVGV4dHVyZTNEKG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVu
Y2VGcmFtZSwgdW5kZWZpbmVkIC8qbV9yZW5kZXJDdHguZ2V0UmVuZGVyVGFyZ2V0KCkuZ2V0UGl4
ZWxGb3JtYXQoKSovKSwKKyAgICAgICAgdGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLCB0
ZXhDb29yZCwgcmVuZGVyUGFyYW1zKTsKKworICAgIC8vIENvbXBhcmUgYW5kIGxvZy4KKyAgICB2
YXIgaXNPayA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wYXJlSW1hZ2VzKHJlZmVyZW5jZUZyYW1l
LCByZW5kZXJlZEZyYW1lLCB0aHJlc2hvbGQpOworCisgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc09r
LCAnU2xpY2U6ICcgKyB0aGlzLm1fY3VyU2xpY2UgKyAnICcgKyBlczNmVGV4dHVyZUZvcm1hdFRl
c3RzLnRlc3REZXNjcmlwdGlvbigpLCB0cnVlLCBmYWxzZSk7CisgICAgcmV0dXJuIGlzT2s7Cit9
OworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUzREZvcm1hdENhc2UucHJvdG90eXBl
Lml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBzbGljZSAnICsgdGhp
cy5tX2N1clNsaWNlKTsKKyAgICAvLyBFeGVjdXRlIHRlc3QgZm9yIGFsbCBsYXllcnMuCisgICAg
aWYgKCF0aGlzLnRlc3RTbGljZSh0aGlzLm1fY3VyU2xpY2UpKQorICAgICAgICB0aGlzLm1faXNP
ayA9IGZhbHNlOworCisgICAgdGhpcy5tX2N1clNsaWNlICs9IDE7CisKKyAgICBpZiAodGhpcy5t
X2N1clNsaWNlID49IHRoaXMubV9kZXB0aCkKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0
ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0LkNPTlRJTlVFOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqLworZXMzZlRleHR1cmVGb3JtYXRUZXN0
cy5Db21wcmVzc2VkMkRGb3JtYXRDYXNlID0gZnVuY3Rpb24oZGVzY3JpcHRvcikgeworICAgIHRj
dVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgZGVzY3JpcHRvci5uYW1lLCBkZXNjcmlwdG9y
LmRlc2NyaXB0aW9uKTsKKyAgICB0aGlzLm1fZm9ybWF0ID0gZGVzY3JpcHRvci5mb3JtYXQ7Cisg
ICAgdGhpcy5tX2RhdGFUeXBlID0gZGVzY3JpcHRvci5kYXRhVHlwZTsKKyAgICB0aGlzLm1fd2lk
dGggPSBkZXNjcmlwdG9yLndpZHRoOworICAgIHRoaXMubV9oZWlnaHQgPSBkZXNjcmlwdG9yLmhl
aWdodDsKKyAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1
cmVSZW5kZXJlcihlczNmVGV4dHVyZUZvcm1hdFRlc3RzLnZlcnNpb24sIGdsdVNoYWRlclV0aWwu
cHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7Cit9OworCitlczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LnNldFBhcmVudENsYXNzKGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuQ29tcHJlc3NlZDJERm9ybWF0
Q2FzZSwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLkNv
bXByZXNzZWQyREZvcm1hdENhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgY29tcHJlc3NlZCA9IG5ldyB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Db21wcmVzc2VkVGV4dHVy
ZSh0aGlzLm1fZm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQpOworICAgIHZhciBy
YW5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgwKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
bXByZXNzZWQubV9kYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbXByZXNzZWQubV9kYXRh
W2ldID0gcmFuZC5nZXRJbnQoMCwgMjU1KTsKKyAgICB9CisgICAgdGhpcy5tX3RleHR1cmUgPSBn
bHVUZXh0dXJlLmNvbXByZXNzZWQyREZyb21JbnRlcm5hbEZvcm1hdChnbCwgdGhpcy5tX2Zvcm1h
dCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCBjb21wcmVzc2VkKTsKK307CisKK2VzM2ZU
ZXh0dXJlRm9ybWF0VGVzdHMuQ29tcHJlc3NlZDJERm9ybWF0Q2FzZS5wcm90b3R5cGUuZGVpbml0
ID0gZnVuY3Rpb24oKSB7CisgICAgLyogVE9ETzogSW1wbGVtZW50ICovCit9OworCitlczNmVGV4
dHVyZUZvcm1hdFRlc3RzLkNvbXByZXNzZWQyREZvcm1hdENhc2UucHJvdG90eXBlLml0ZXJhdGUg
PSBmdW5jdGlvbigpIHsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQgKi8KKworICAgIHZhciB2aWV3
cG9ydCA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuUmFuZG9tVmlld3BvcnQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NhbnZhcycpLCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQvKiwgZGVT
dHJpbmdIYXNoKGdldE5hbWUoKSkqLyk7CisKKyAgICAvKiB0Y3U6OlN1cmZhY2UgKi8gdmFyIHJl
bmRlcmVkRnJhbWUgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3
cG9ydC5oZWlnaHQpOworICAgIC8qIHRjdTo6U3VyZmFjZSAqLyB2YXIgcmVmZXJlbmNlRnJhbWUg
PSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQp
OworICAgIC8qIFRPRE86IEltcGxlbWVudAorICAgIC8vIHRjdTo6UkdCQSB0aHJlc2hvbGQgPSBt
X3JlbmRlckN0eC5nZXRSZW5kZXJUYXJnZXQoKS5nZXRQaXhlbEZvcm1hdCgpLmdldENvbG9yVGhy
ZXNob2xkKCkgKyB0Y3U6OlJHQkEoMSwxLDEsMSk7CisgICAgKi8KKyAgICB2YXIgdGhyZXNob2xk
ID0gWzMsIDMsIDMsIDNdOworICAgIHZhciByZW5kZXJQYXJhbXMgPSBuZXcgZ2xzVGV4dHVyZVRl
c3RVdGlsLlJlZmVyZW5jZVBhcmFtcyhnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGUuVEVY
VFVSRVRZUEVfMkQpOworCisgICAgLyogdGN1OjpUZXh0dXJlRm9ybWF0SW5mbyovIHZhciBzcGVj
ID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8odGhpcy5tX3RleHR1cmUuZ2V0
UmVmVGV4dHVyZSgpLmdldEZvcm1hdCgpKTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3cmFwUyA9
IGdsLkNMQU1QX1RPX0VER0U7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgd3JhcFQgPSBnbC5DTEFN
UF9UT19FREdFOworICAgIC8qKiBAY29uc3QgKi8gdmFyIG1pbkZpbHRlciA9IGdsLk5FQVJFU1Q7
CisgICAgLyoqIEBjb25zdCAqLyB2YXIgbWFnRmlsdGVyID0gZ2wuTkVBUkVTVDsKKworICAgIHJl
bmRlclBhcmFtcy5mbGFncy5sb2dfcHJvZ3JhbXMgPSB0cnVlOworICAgIHJlbmRlclBhcmFtcy5m
bGFncy5sb2dfdW5pZm9ybXMgPSB0cnVlOworCisgICAgcmVuZGVyUGFyYW1zLnNhbXBsZXJUeXBl
ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmdldFNhbXBsZXJUeXBlKHRoaXMubV90ZXh0dXJlLmdldFJl
ZlRleHR1cmUoKS5nZXRGb3JtYXQoKSk7CisgICAgcmVuZGVyUGFyYW1zLnNhbXBsZXIgPSBuZXcg
dGN1VGV4dHVyZS5TYW1wbGVyKHRjdVRleHR1cmUuV3JhcE1vZGUuQ0xBTVBfVE9fRURHRSwgdGN1
VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19FREdFLCB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1Q
X1RPX0VER0UsCisgICAgIHRjdVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNULCB0Y3VUZXh0dXJl
LkZpbHRlck1vZGUuTkVBUkVTVCk7CisgICAgcmVuZGVyUGFyYW1zLmNvbG9yU2NhbGUgPSBzcGVj
Lmxvb2t1cFNjYWxlOworICAgIHJlbmRlclBhcmFtcy5jb2xvckJpYXMgPSBzcGVjLmxvb2t1cEJp
YXM7CisKKyAgICB2YXIgdGV4Q29vcmQgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZVF1YWRU
ZXhDb29yZDJEKFswLCAwXSwgWzEsIDFdKTsKKworICAgIC8vIGxvZyA8PCBUZXN0TG9nOjpNZXNz
YWdlIDw8ICJUZXh0dXJlIHBhcmFtZXRlcnM6IgorICAgIC8vIDw8ICJcbiBXUkFQX1MgPSAiIDw8
IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfV1JBUF9TLCB3cmFw
UykKKyAgICAvLyA8PCAiXG4gV1JBUF9UID0gIiA8PCBnbHU6OmdldFRleHR1cmVQYXJhbWV0ZXJW
YWx1ZVN0cihnbC5URVhUVVJFX1dSQVBfVCwgd3JhcFQpCisgICAgLy8gPDwgIlxuIE1JTl9GSUxU
RVIgPSAiIDw8IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgbWluRmlsdGVyKQorICAgIC8vIDw8ICJcbiBNQUdfRklMVEVSID0gIiA8PCBnbHU6
OmdldFRleHR1cmVQYXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0Zp
bHRlcikKKyAgICAvLyA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworCisgICAgLy8gU2V0dXAgYmFz
ZSB2aWV3cG9ydC4KKyAgICBnbC52aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3
cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKworICAgIC8vIEJpbmQgdG8gdW5pdCAwLgor
ICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRoaXMubV90ZXh0dXJlLmdldEdMVGV4dHVyZSgpKTsKKworICAgIC8vIFNl
dHVwIG5lYXJlc3QgbmVpZ2hib3IgZmlsdGVyaW5nIGFuZCBjbGFtcC10by1lZGdlLgorICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIHdyYXBTKTsK
KyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCB3
cmFwVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIG1pbkZpbHRlcik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0ZpbHRlcik7CisKKyAgICAvLyAvLyBEcmF3Lgor
ICAgIHRoaXMubV9yZW5kZXJlci5yZW5kZXJRdWFkKDAsIHRleENvb3JkLCByZW5kZXJQYXJhbXMp
OworICAgIHJlbmRlcmVkRnJhbWUucmVhZFZpZXdwb3J0KGdsLCB2aWV3cG9ydCk7CisKKyAgICAv
LyAvLyBDb21wdXRlIHJlZmVyZW5jZS4KKyAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4
dHVyZTJEKG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVuY2VGcmFt
ZSwgdW5kZWZpbmVkIC8qbV9yZW5kZXJDdHguZ2V0UmVuZGVyVGFyZ2V0KCkuZ2V0UGl4ZWxGb3Jt
YXQoKSovKSwKKyAgICAgICAgdGhpcy5tX3RleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLCB0ZXhDb29y
ZCwgcmVuZGVyUGFyYW1zKTsKKworICAgIC8vIENvbXBhcmUgYW5kIGxvZy4KKyAgICB2YXIgaXNP
ayA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wYXJlSW1hZ2VzKHJlZmVyZW5jZUZyYW1lLCByZW5k
ZXJlZEZyYW1lLCB0aHJlc2hvbGQpOworCisgICAgYXNzZXJ0TXNnT3B0aW9ucyhpc09rLCBlczNm
VGV4dHVyZUZvcm1hdFRlc3RzLnRlc3REZXNjcmlwdGlvbigpLCB0cnVlLCBmYWxzZSk7CisgICAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKK307CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgKi8KK2VzM2ZU
ZXh0dXJlRm9ybWF0VGVzdHMuQ29tcHJlc3NlZEN1YmVGb3JtYXRDYXNlID0gZnVuY3Rpb24oZGVz
Y3JpcHRvcikgeworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgZGVzY3JpcHRv
ci5uYW1lLCBkZXNjcmlwdG9yLmRlc2NyaXB0aW9uKTsKKyAgICB0aGlzLm1fZm9ybWF0ID0gZGVz
Y3JpcHRvci5mb3JtYXQ7CisgICAgdGhpcy5tX2RhdGFUeXBlID0gZGVzY3JpcHRvci5kYXRhVHlw
ZTsKKyAgICB0aGlzLm1fd2lkdGggPSBkZXNjcmlwdG9yLndpZHRoOworICAgIHRoaXMubV9oZWln
aHQgPSBkZXNjcmlwdG9yLmhlaWdodDsKKyAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4
dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlcihlczNmVGV4dHVyZUZvcm1hdFRlc3RzLnZlcnNp
b24sIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7CisgICAgdGhpcy5t
X2N1ckZhY2UgPSAwOworICAgIHRoaXMubV9pc09rID0gdHJ1ZTsKKyAgICBERV9BU1NFUlQodGhp
cy5tX3dpZHRoID09IHRoaXMubV9oZWlnaHQpOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0
cy5zZXRQYXJlbnRDbGFzcyhlczNmVGV4dHVyZUZvcm1hdFRlc3RzLkNvbXByZXNzZWRDdWJlRm9y
bWF0Q2FzZSwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitlczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LkNvbXByZXNzZWRDdWJlRm9ybWF0Q2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjb21wcmVzc2VkID0gbmV3IHRjdUNvbXByZXNzZWRUZXh0dXJlLkNvbXByZXNzZWRU
ZXh0dXJlKHRoaXMubV9mb3JtYXQsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCk7CisgICAg
dmFyIHJhbmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKDApOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29tcHJlc3NlZC5tX2RhdGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29tcHJlc3NlZC5t
X2RhdGFbaV0gPSByYW5kLmdldEludCgwLCAyNTUpOworICAgIH0KKyAgICB0aGlzLm1fdGV4dHVy
ZSA9IGdsdVRleHR1cmUuY29tcHJlc3NlZEN1YmVGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMu
bV9mb3JtYXQsIHRoaXMubV93aWR0aCwgY29tcHJlc3NlZCk7Cit9OworCitlczNmVGV4dHVyZUZv
cm1hdFRlc3RzLkNvbXByZXNzZWRDdWJlRm9ybWF0Q2FzZS5wcm90b3R5cGUudGVzdEZhY2UgPSBm
dW5jdGlvbihmYWNlKSB7CisgICAgLyogVE9ETzogSW1wbGVtZW50ICovCisKKyAgICB2YXIgdmll
d3BvcnQgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJhbmRvbVZpZXdwb3J0KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjYW52YXMnKSwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LyosIGRl
U3RyaW5nSGFzaChnZXROYW1lKCkpKi8pOworCisgICAgLyogdGN1OjpTdXJmYWNlICovIHZhciBy
ZW5kZXJlZEZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9ydC53aWR0aCwgdmll
d3BvcnQuaGVpZ2h0KTsKKyAgICAvKiB0Y3U6OlN1cmZhY2UgKi8gdmFyIHJlZmVyZW5jZUZyYW1l
ID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0
KTsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQKKyAgICAvLyB0Y3U6OlJHQkEgdGhyZXNob2xkID0g
bV9yZW5kZXJDdHguZ2V0UmVuZGVyVGFyZ2V0KCkuZ2V0UGl4ZWxGb3JtYXQoKS5nZXRDb2xvclRo
cmVzaG9sZCgpICsgdGN1OjpSR0JBKDEsMSwxLDEpOworICAgICovCisgICAgLy8gVGhyZXNob2xk
IGhpZ2ggZW5vdWdoIHRvIGNvdmVyIG51bWVyaWNhbCBlcnJvcnMgaW4gc29mdHdhcmUgZGVjb2Rl
cnMgb24gV2luZG93cyBhbmQgTWFjLiAgVGhyZXNob2xkIGlzIDE3IGluIG5hdGl2ZSBkRVFQLgor
ICAgIHZhciB0aHJlc2hvbGQgPSBbNiwgNiwgNiwgNl07CisgICAgdmFyIHJlbmRlclBhcmFtcyA9
IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zKGdsc1RleHR1cmVUZXN0VXRp
bC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFKTsKKworICAgIC8qKiBAY29uc3QgKi8gdmFy
IHdyYXBTID0gZ2wuQ0xBTVBfVE9fRURHRTsKKyAgICAvKiogQGNvbnN0ICovIHZhciB3cmFwVCA9
IGdsLkNMQU1QX1RPX0VER0U7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgbWluRmlsdGVyID0gZ2wu
TkVBUkVTVDsKKyAgICAvKiogQGNvbnN0ICovIHZhciBtYWdGaWx0ZXIgPSBnbC5ORUFSRVNUOwor
CisgICAgcmVuZGVyUGFyYW1zLmZsYWdzLmxvZ19wcm9ncmFtcyA9IHRydWU7CisgICAgcmVuZGVy
UGFyYW1zLmZsYWdzLmxvZ191bmlmb3JtcyA9IHRydWU7CisKKyAgICByZW5kZXJQYXJhbXMuc2Ft
cGxlclR5cGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwuZ2V0U2FtcGxlclR5cGUodGhpcy5tX3RleHR1
cmUuZ2V0UmVmVGV4dHVyZSgpLmdldEZvcm1hdCgpKTsKKyAgICByZW5kZXJQYXJhbXMuc2FtcGxl
ciA9IG5ldyB0Y3VUZXh0dXJlLlNhbXBsZXIodGN1VGV4dHVyZS5XcmFwTW9kZS5DTEFNUF9UT19F
REdFLCB0Y3VUZXh0dXJlLldyYXBNb2RlLkNMQU1QX1RPX0VER0UsIHRjdVRleHR1cmUuV3JhcE1v
ZGUuQ0xBTVBfVE9fRURHRSwKKyAgICAgdGN1VGV4dHVyZS5GaWx0ZXJNb2RlLk5FQVJFU1QsIHRj
dVRleHR1cmUuRmlsdGVyTW9kZS5ORUFSRVNUKTsKKworICAgIC8vIExvZyByZW5kZXIgaW5mbyBv
biBmaXJzdCBmYWNlLgorICAgIGlmIChmYWNlID09PSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVG
QUNFX05FR0FUSVZFX1gpIHsKKyAgICAgICAgcmVuZGVyUGFyYW1zLmZsYWdzLmxvZ19wcm9ncmFt
cyA9IHRydWU7CisgICAgICAgIHJlbmRlclBhcmFtcy5mbGFncy5sb2dfdW5pZm9ybXMgPSB0cnVl
OworICAgIH0KKworICAgIHZhciB0ZXhDb29yZCA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRl
UXVhZFRleENvb3JkQ3ViZShmYWNlKTsKKworICAgIC8vIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdl
IDw8ICJUZXh0dXJlIHBhcmFtZXRlcnM6IgorICAgIC8vIDw8ICJcbiBXUkFQX1MgPSAiIDw8IGds
dTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfV1JBUF9TLCB3cmFwUykK
KyAgICAvLyA8PCAiXG4gV1JBUF9UID0gIiA8PCBnbHU6OmdldFRleHR1cmVQYXJhbWV0ZXJWYWx1
ZVN0cihnbC5URVhUVVJFX1dSQVBfVCwgd3JhcFQpCisgICAgLy8gPDwgIlxuIE1JTl9GSUxURVIg
PSAiIDw8IGdsdTo6Z2V0VGV4dHVyZVBhcmFtZXRlclZhbHVlU3RyKGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgbWluRmlsdGVyKQorICAgIC8vIDw8ICJcbiBNQUdfRklMVEVSID0gIiA8PCBnbHU6Omdl
dFRleHR1cmVQYXJhbWV0ZXJWYWx1ZVN0cihnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0ZpbHRl
cikKKyAgICAvLyA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworCisgICAgLy8gU2V0dXAgYmFzZSB2
aWV3cG9ydC4KKyAgICBnbC52aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9y
dC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKworICAgIC8vIEJpbmQgdG8gdW5pdCAwLgorICAg
IGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfQ1VCRV9NQVAsIHRoaXMubV90ZXh0dXJlLmdldEdMVGV4dHVyZSgpKTsKKworICAgIC8v
IFNldHVwIG5lYXJlc3QgbmVpZ2hib3IgZmlsdGVyaW5nIGFuZCBjbGFtcC10by1lZGdlLgorICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1Ms
IHdyYXBTKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRF
WFRVUkVfV1JBUF9ULCB3cmFwVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NV
QkVfTUFQLCBnbC5URVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX01BR19GSUxURVIsIG1hZ0Zp
bHRlcik7CisKKyAgICAvLyAvLyBEcmF3LgorICAgIHRoaXMubV9yZW5kZXJlci5yZW5kZXJRdWFk
KDAsIHRleENvb3JkLCByZW5kZXJQYXJhbXMpOworICAgIHJlbmRlcmVkRnJhbWUucmVhZFZpZXdw
b3J0KGdsLCB2aWV3cG9ydCk7CisKKyAgICAvLyAvLyBDb21wdXRlIHJlZmVyZW5jZS4KKyAgICBn
bHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZUN1YmUobmV3IGdsc1RleHR1cmVUZXN0VXRp
bC5TdXJmYWNlQWNjZXNzKHJlZmVyZW5jZUZyYW1lLCB1bmRlZmluZWQgLyptX3JlbmRlckN0eC5n
ZXRSZW5kZXJUYXJnZXQoKS5nZXRQaXhlbEZvcm1hdCgpKi8pLAorICAgICAgICB0aGlzLm1fdGV4
dHVyZS5nZXRSZWZUZXh0dXJlKCksIHRleENvb3JkLCByZW5kZXJQYXJhbXMpOworCisgICAgLy8g
Q29tcGFyZSBhbmQgbG9nLgorICAgIHZhciBpc09rID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXBh
cmVJbWFnZXMocmVmZXJlbmNlRnJhbWUsIHJlbmRlcmVkRnJhbWUsIHRocmVzaG9sZCk7CisKKyAg
ICBhc3NlcnRNc2dPcHRpb25zKGlzT2ssICdGYWNlOiAnICsgdGhpcy5tX2N1ckZhY2UgKyAnICcg
KyBlczNmVGV4dHVyZUZvcm1hdFRlc3RzLnRlc3REZXNjcmlwdGlvbigpLCB0cnVlLCBmYWxzZSk7
CisgICAgcmV0dXJuIGlzT2s7Cit9OworCitlczNmVGV4dHVyZUZvcm1hdFRlc3RzLkNvbXByZXNz
ZWRDdWJlRm9ybWF0Q2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIGRl
YnVnKCdUZXN0aW5nIGZhY2UgJyArIHRoaXMubV9jdXJGYWNlKTsKKyAgICAvLyBFeGVjdXRlIHRl
c3QgZm9yIGFsbCBmYWNlcy4KKyAgICBpZiAoIXRoaXMudGVzdEZhY2UodGhpcy5tX2N1ckZhY2Up
KQorICAgICAgICB0aGlzLm1faXNPayA9IGZhbHNlOworCisgICAgdGhpcy5tX2N1ckZhY2UgKz0g
MTsKKworICAgIGlmICh0aGlzLm1fY3VyRmFjZSA8IE9iamVjdC5rZXlzKHRjdVRleHR1cmUuQ3Vi
ZUZhY2UpLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQu
Q09OVElOVUU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJl
c3VsdC5TVE9QOworfTsKKworZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5nZW5UZXN0Q2FzZXMgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgc3Rh
dGUuc2V0Um9vdCh0Y3VUZXN0Q2FzZS5uZXdUZXN0KCd0ZXh0dXJlX2Zvcm1hdCcsICdUb3AgbGV2
ZWwnKSk7CisKKyAgICB2YXIgdGV4Rm9ybWF0cyA9IFsKKyAgICAgICAgWydhbHBoYScsIGdsLkFM
UEhBLCBnbC5VTlNJR05FRF9CWVRFXSwKKyAgICAgICAgWydsdW1pbmFuY2UnLCBnbC5MVU1JTkFO
Q0UsIGdsLlVOU0lHTkVEX0JZVEVdLAorICAgICAgICBbJ2x1bWluYW5jZV9hbHBoYScsIGdsLkxV
TUlOQU5DRV9BTFBIQSwgZ2wuVU5TSUdORURfQllURV0sCisgICAgICAgIFsncmdiX3Vuc2lnbmVk
X3Nob3J0XzVfNl81JywgZ2wuUkdCLCBnbC5VTlNJR05FRF9TSE9SVF81XzZfNV0sCisgICAgICAg
IFsncmdiX3Vuc2lnbmVkX2J5dGUnLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEVdLAorICAgICAg
ICBbJ3JnYmFfdW5zaWduZWRfc2hvcnRfNF80XzRfNCcsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX1NI
T1JUXzRfNF80XzRdLAorICAgICAgICBbJ3JnYmFfdW5zaWduZWRfc2hvcnRfNV81XzVfMScsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzFdLAorICAgICAgICBbJ3JnYmFfdW5zaWdu
ZWRfYnl0ZScsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEVdCisgICAgXTsKKworICAgIHZhciB1
bnNpemVkMkRHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3Vuc2l6ZWQnLCAnVW5zaXplZCBm
b3JtYXRzICgyRCwgQ3ViZW1hcCknKTsKKyAgICBzdGF0ZS50ZXN0Q2FzZXMuYWRkQ2hpbGQodW5z
aXplZDJER3JvdXApOworICAgIHZhciB1bnNpemVkMkRBcnJheUdyb3VwID0gdGN1VGVzdENhc2Uu
bmV3VGVzdCgndW5zaXplZCcsICdVbnNpemVkIGZvcm1hdHMgKDJEIEFycmF5KScpOworICAgIHN0
YXRlLnRlc3RDYXNlcy5hZGRDaGlsZCh1bnNpemVkMkRBcnJheUdyb3VwKTsKKyAgICB2YXIgdW5z
aXplZDNER3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCd1bnNpemVkJywgJ1Vuc2l6ZWQgZm9y
bWF0cyAoM0QpJyk7CisgICAgc3RhdGUudGVzdENhc2VzLmFkZENoaWxkKHVuc2l6ZWQzREdyb3Vw
KTsKKworICAgIHRleEZvcm1hdHMuZm9yRWFjaChmdW5jdGlvbihlbGVtKSB7CisgICAgICAgIHZh
ciBmb3JtYXQgPSBlbGVtWzFdOworICAgICAgICB2YXIgZGF0YVR5cGUgPSBlbGVtWzJdOworICAg
ICAgICB2YXIgbmFtZUJhc2UgPSBlbGVtWzBdOworICAgICAgICB2YXIgZGVzY3JpcHRpb25CYXNl
ID0gZ2x1U3RyVXRpbC5nZXRQaXhlbEZvcm1hdE5hbWUoZm9ybWF0KSArICcsICcgKyBnbHVTdHJV
dGlsLmdldFR5cGVOYW1lKGRhdGFUeXBlKTsKKyAgICAgICAgdW5zaXplZDJER3JvdXAuYWRkQ2hp
bGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0Q2FzZSh7CisgICAg
ICAgICAgICBuYW1lOiBuYW1lQmFzZSArICdfMmRfcG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRFWFRVUkVfMkQnLAorICAgICAgICAgICAgZm9y
bWF0OiBmb3JtYXQsCisgICAgICAgICAgICBkYXRhVHlwZTogZGF0YVR5cGUsCisgICAgICAgICAg
ICB3aWR0aDogMTI4LAorICAgICAgICAgICAgaGVpZ2h0OiAxMjgKKyAgICAgICAgfSkpOworICAg
ICAgICB1bnNpemVkMkRHcm91cC5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5U
ZXh0dXJlMkRGb3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ18yZF9u
cG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRF
WFRVUkVfMkQnLAorICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXQsCisgICAgICAgICAgICBkYXRh
VHlwZTogZGF0YVR5cGUsCisgICAgICAgICAgICB3aWR0aDogNjMsCisgICAgICAgICAgICBoZWln
aHQ6IDExMgorICAgICAgICB9KSk7CisgICAgICAgIHVuc2l6ZWQyREdyb3VwLmFkZENoaWxkKG5l
dyBlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmVDdWJlRm9ybWF0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lOiBuYW1lQmFzZSArICdfY3ViZV9wb3QnLAorICAgICAgICAgICAgZGVzY3JpcHRp
b246IGRlc2NyaXB0aW9uQmFzZSArICcgZ2wuVEVYVFVSRV9DVUJFX01BUCcsCisgICAgICAgICAg
ICBmb3JtYXQ6IGZvcm1hdCwKKyAgICAgICAgICAgIGRhdGFUeXBlOiBkYXRhVHlwZSwKKyAgICAg
ICAgICAgIHdpZHRoOiA2NCwKKyAgICAgICAgICAgIGhlaWdodDogNjQKKyAgICAgICAgfSkpOwor
ICAgICAgICB1bnNpemVkMkRHcm91cC5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVGb3JtYXRUZXN0
cy5UZXh0dXJlQ3ViZUZvcm1hdENhc2UoeworICAgICAgICAgICAgbmFtZTogbmFtZUJhc2UgKyAn
X2N1YmVfbnBvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25CYXNlICsg
JyBnbC5URVhUVVJFX0NVQkVfTUFQJywKKyAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LAorICAg
ICAgICAgICAgZGF0YVR5cGU6IGRhdGFUeXBlLAorICAgICAgICAgICAgd2lkdGg6IDU3LAorICAg
ICAgICAgICAgaGVpZ2h0OiA1NworICAgICAgICB9KSk7CisgICAgICAgIHVuc2l6ZWQyREFycmF5
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJEQXJyYXlG
b3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ18yZF9hcnJheV9wb3Qn
LAorICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uQmFzZSArICcgZ2wuVEVYVFVS
RV8yRF9BUlJBWScsCisgICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCwKKyAgICAgICAgICAgIGRh
dGFUeXBlOiBkYXRhVHlwZSwKKyAgICAgICAgICAgIHdpZHRoOiA2NCwKKyAgICAgICAgICAgIGhl
aWdodDogNjQsCisgICAgICAgICAgICBudW1MYXllcnM6IDgKKyAgICAgICAgfSkpOworICAgICAg
ICB1bnNpemVkMkRBcnJheUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LlRleHR1cmUyREFycmF5Rm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFzZSAr
ICdfMmRfYXJyYXlfbnBvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25C
YXNlICsgJyBnbC5URVhUVVJFXzJEX0FSUkFZJywKKyAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0
LAorICAgICAgICAgICAgZGF0YVR5cGU6IGRhdGFUeXBlLAorICAgICAgICAgICAgd2lkdGg6IDYz
LAorICAgICAgICAgICAgaGVpZ2h0OiA1NywKKyAgICAgICAgICAgIG51bUxheWVyczogNworICAg
ICAgICB9KSk7CisgICAgICAgIHVuc2l6ZWQzREdyb3VwLmFkZENoaWxkKG5ldyBlczNmVGV4dHVy
ZUZvcm1hdFRlc3RzLlRleHR1cmUzREZvcm1hdENhc2UoeworICAgICAgICAgICAgbmFtZTogbmFt
ZUJhc2UgKyAnXzNkX3BvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25C
YXNlICsgJyBnbC5URVhUVVJFXzNEJywKKyAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LAorICAg
ICAgICAgICAgZGF0YVR5cGU6IGRhdGFUeXBlLAorICAgICAgICAgICAgd2lkdGg6IDgsCisgICAg
ICAgICAgICBoZWlnaHQ6IDMyLAorICAgICAgICAgICAgZGVwdGg6IDE2CisgICAgICAgIH0pKTsK
KyAgICAgICAgdW5zaXplZDNER3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVz
dHMuVGV4dHVyZTNERm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFzZSArICdf
M2RfbnBvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25CYXNlICsgJyBn
bC5URVhUVVJFXzNEJywKKyAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LAorICAgICAgICAgICAg
ZGF0YVR5cGU6IGRhdGFUeXBlLAorICAgICAgICAgICAgd2lkdGg6IDExLAorICAgICAgICAgICAg
aGVpZ2h0OiAzMSwKKyAgICAgICAgICAgIGRlcHRoOiA3CisgICAgICAgIH0pKTsKKyAgICB9KTsK
KworICAgIHZhciBzaXplZENvbG9yRm9ybWF0cyA9IFsKKyAgICAgICAgWydyZ2JhMzJmJywgZ2wu
UkdCQTMyRl0sCisgICAgICAgIFsncmdiYTMyaScsIGdsLlJHQkEzMkldLAorICAgICAgICBbJ3Jn
YmEzMnVpJywgZ2wuUkdCQTMyVUldLAorICAgICAgICBbJ3JnYmExNmYnLCBnbC5SR0JBMTZGXSwK
KyAgICAgICAgWydyZ2JhMTZpJywgZ2wuUkdCQTE2SV0sCisgICAgICAgIFsncmdiYTE2dWknLCBn
bC5SR0JBMTZVSV0sCisgICAgICAgIFsncmdiYTgnLCBnbC5SR0JBOF0sCisgICAgICAgIFsncmdi
YThpJywgZ2wuUkdCQThJXSwKKyAgICAgICAgWydyZ2JhOHVpJywgZ2wuUkdCQThVSV0sCisgICAg
ICAgIFsnc3JnYjhfYWxwaGE4JywgZ2wuU1JHQjhfQUxQSEE4XSwKKyAgICAgICAgWydyZ2IxMF9h
MicsIGdsLlJHQjEwX0EyXSwKKyAgICAgICAgWydyZ2IxMF9hMnVpJywgZ2wuUkdCMTBfQTJVSV0s
CisgICAgICAgIFsncmdiYTQnLCBnbC5SR0JBNF0sCisgICAgICAgIFsncmdiNV9hMScsIGdsLlJH
QjVfQTFdLAorICAgICAgICBbJ3JnYmE4X3Nub3JtJywgZ2wuUkdCQThfU05PUk1dLAorICAgICAg
ICBbJ3JnYjgnLCBnbC5SR0I4XSwKKyAgICAgICAgWydyZ2I1NjUnLCBnbC5SR0I1NjVdLAorICAg
ICAgICBbJ3IxMWZfZzExZl9iMTBmJywgZ2wuUjExRl9HMTFGX0IxMEZdLAorICAgICAgICBbJ3Jn
YjMyZicsIGdsLlJHQjMyRl0sCisgICAgICAgIFsncmdiMzJpJywgZ2wuUkdCMzJJXSwKKyAgICAg
ICAgWydyZ2IzMnVpJywgZ2wuUkdCMzJVSV0sCisgICAgICAgIFsncmdiMTZmJywgZ2wuUkdCMTZG
XSwKKyAgICAgICAgWydyZ2IxNmknLCBnbC5SR0IxNkldLAorICAgICAgICBbJ3JnYjE2dWknLCBn
bC5SR0IxNlVJXSwKKyAgICAgICAgWydyZ2I4X3Nub3JtJywgZ2wuUkdCOF9TTk9STV0sCisgICAg
ICAgIFsncmdiOGknLCBnbC5SR0I4SV0sCisgICAgICAgIFsncmdiOHVpJywgZ2wuUkdCOFVJXSwK
KyAgICAgICAgWydzcmdiOCcsIGdsLlNSR0I4XSwKKyAgICAgICAgWydyZ2I5X2U1JywgZ2wuUkdC
OV9FNV0sCisgICAgICAgIFsncmczMmYnLCBnbC5SRzMyRl0sCisgICAgICAgIFsncmczMmknLCBn
bC5SRzMySV0sCisgICAgICAgIFsncmczMnVpJywgZ2wuUkczMlVJXSwKKyAgICAgICAgWydyZzE2
ZicsIGdsLlJHMTZGXSwKKyAgICAgICAgWydyZzE2aScsIGdsLlJHMTZJXSwKKyAgICAgICAgWydy
ZzE2dWknLCBnbC5SRzE2VUldLAorICAgICAgICBbJ3JnOCcsIGdsLlJHOF0sCisgICAgICAgIFsn
cmc4aScsIGdsLlJHOEldLAorICAgICAgICBbJ3JnOHVpJywgZ2wuUkc4VUldLAorICAgICAgICBb
J3JnOF9zbm9ybScsIGdsLlJHOF9TTk9STV0sCisgICAgICAgIFsncjMyZicsIGdsLlIzMkZdLAor
ICAgICAgICBbJ3IzMmknLCBnbC5SMzJJXSwKKyAgICAgICAgWydyMzJ1aScsIGdsLlIzMlVJXSwK
KyAgICAgICAgWydyMTZmJywgZ2wuUjE2Rl0sCisgICAgICAgIFsncjE2aScsIGdsLlIxNkldLAor
ICAgICAgICBbJ3IxNnVpJywgZ2wuUjE2VUldLAorICAgICAgICBbJ3I4JywgZ2wuUjhdLAorICAg
ICAgICBbJ3I4aScsIGdsLlI4SV0sCisgICAgICAgIFsncjh1aScsIGdsLlI4VUldLAorICAgICAg
ICBbJ3I4X3Nub3JtJywgZ2wuUjhfU05PUk1dCisgICAgXTsKKworICAgIHZhciBzcGxpdFNpemVk
Q29sb3JUZXN0cyA9IDQ7CisgICAgdmFyIHNpemVkQ29sb3IyRFBPVEdyb3VwID0gW107CisgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IHNwbGl0U2l6ZWRDb2xvclRlc3RzOyArK2lpKSB7CisgICAg
ICAgIHNpemVkQ29sb3IyRFBPVEdyb3VwLnB1c2godGN1VGVzdENhc2UubmV3VGVzdCgnc2l6ZWQn
LCAnU2l6ZWQgZm9ybWF0cyAoMkQgUE9UKScpKTsKKyAgICAgICAgc3RhdGUudGVzdENhc2VzLmFk
ZENoaWxkKHNpemVkQ29sb3IyRFBPVEdyb3VwW2lpXSk7CisgICAgfQorICAgIHZhciBzaXplZENv
bG9yMkROUE9UR3JvdXAgPSBbXTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRTaXpl
ZENvbG9yVGVzdHM7ICsraWkpIHsKKyAgICAgICAgc2l6ZWRDb2xvcjJETlBPVEdyb3VwLnB1c2go
dGN1VGVzdENhc2UubmV3VGVzdCgnc2l6ZWQnLCAnU2l6ZWQgZm9ybWF0cyAoMkQgTlBPVCknKSk7
CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcy5hZGRDaGlsZChzaXplZENvbG9yMkROUE9UR3JvdXBb
aWldKTsKKyAgICB9CisgICAgdmFyIHNpemVkQ29sb3JDdWJlUE9UR3JvdXAgPSBbXTsKKyAgICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRTaXplZENvbG9yVGVzdHM7ICsraWkpIHsKKyAgICAg
ICAgc2l6ZWRDb2xvckN1YmVQT1RHcm91cC5wdXNoKHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3NpemVk
JywgJ1NpemVkIGZvcm1hdHMgKEN1YmVtYXAgUE9UKScpKTsKKyAgICAgICAgc3RhdGUudGVzdENh
c2VzLmFkZENoaWxkKHNpemVkQ29sb3JDdWJlUE9UR3JvdXBbaWldKTsKKyAgICB9CisgICAgdmFy
IHNpemVkQ29sb3JDdWJlTlBPVEdyb3VwID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHNwbGl0U2l6ZWRDb2xvclRlc3RzOyArK2lpKSB7CisgICAgICAgIHNpemVkQ29sb3JDdWJlTlBP
VEdyb3VwLnB1c2godGN1VGVzdENhc2UubmV3VGVzdCgnc2l6ZWQnLCAnU2l6ZWQgZm9ybWF0cyAo
Q3ViZW1hcCBOUE9UKScpKTsKKyAgICAgICAgc3RhdGUudGVzdENhc2VzLmFkZENoaWxkKHNpemVk
Q29sb3JDdWJlTlBPVEdyb3VwW2lpXSk7CisgICAgfQorICAgIHZhciBzaXplZENvbG9yMkRBcnJh
eVBPVEdyb3VwID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNwbGl0U2l6ZWRDb2xv
clRlc3RzOyArK2lpKSB7CisgICAgICAgIHNpemVkQ29sb3IyREFycmF5UE9UR3JvdXAucHVzaCh0
Y3VUZXN0Q2FzZS5uZXdUZXN0KCdzaXplZCcsICdTaXplZCBmb3JtYXRzICgyRCBBcnJheSBQT1Qp
JykpOworICAgICAgICBzdGF0ZS50ZXN0Q2FzZXMuYWRkQ2hpbGQoc2l6ZWRDb2xvcjJEQXJyYXlQ
T1RHcm91cFtpaV0pOworICAgIH0KKyAgICB2YXIgc2l6ZWRDb2xvcjJEQXJyYXlOUE9UR3JvdXAg
PSBbXTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRTaXplZENvbG9yVGVzdHM7ICsr
aWkpIHsKKyAgICAgICAgc2l6ZWRDb2xvcjJEQXJyYXlOUE9UR3JvdXAucHVzaCh0Y3VUZXN0Q2Fz
ZS5uZXdUZXN0KCdzaXplZCcsICdTaXplZCBmb3JtYXRzICgyRCBBcnJheSBOUE9UKScpKTsKKyAg
ICAgICAgc3RhdGUudGVzdENhc2VzLmFkZENoaWxkKHNpemVkQ29sb3IyREFycmF5TlBPVEdyb3Vw
W2lpXSk7CisgICAgfQorICAgIHZhciBzaXplZENvbG9yM0RQT1RHcm91cCA9IFtdOworICAgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCBzcGxpdFNpemVkQ29sb3JUZXN0czsgKytpaSkgeworICAgICAg
ICBzaXplZENvbG9yM0RQT1RHcm91cC5wdXNoKHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3NpemVkJywg
J1NpemVkIGZvcm1hdHMgKDNEIFBPVCknKSk7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcy5hZGRD
aGlsZChzaXplZENvbG9yM0RQT1RHcm91cFtpaV0pOworICAgIH0KKyAgICB2YXIgc2l6ZWRDb2xv
cjNETlBPVEdyb3VwID0gW107CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNwbGl0U2l6ZWRD
b2xvclRlc3RzOyArK2lpKSB7CisgICAgICAgIHNpemVkQ29sb3IzRE5QT1RHcm91cC5wdXNoKHRj
dVRlc3RDYXNlLm5ld1Rlc3QoJ3NpemVkJywgJ1NpemVkIGZvcm1hdHMgKDNEIE5QT1QpJykpOwor
ICAgICAgICBzdGF0ZS50ZXN0Q2FzZXMuYWRkQ2hpbGQoc2l6ZWRDb2xvcjNETlBPVEdyb3VwW2lp
XSk7CisgICAgfQorCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNpemVkQ29sb3JGb3JtYXRz
Lmxlbmd0aDsgKytpaSkgeworICAgICAgICB2YXIgaW50ZXJuYWxGb3JtYXQgPSBzaXplZENvbG9y
Rm9ybWF0c1tpaV1bMV07CisgICAgICAgIHZhciBuYW1lQmFzZSA9IHNpemVkQ29sb3JGb3JtYXRz
W2lpXVswXTsKKyAgICAgICAgdmFyIGRlc2NyaXB0aW9uQmFzZSA9IGdsdVN0clV0aWwuZ2V0UGl4
ZWxGb3JtYXROYW1lKGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgc2l6ZWRDb2xvcjJEUE9UR3Jv
dXBbaWkgJSBzcGxpdFNpemVkQ29sb3JUZXN0c10uYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9y
bWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFz
ZSArICdfcG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAn
IGdsLlRFWFRVUkVfMkQnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgIHdpZHRoOiAxMjgsCisgICAgICAgICAgICBoZWlnaHQ6IDEyOAorICAgICAgICB9
KSk7CisgICAgICAgIHNpemVkQ29sb3IyRE5QT1RHcm91cFtpaSAlIHNwbGl0U2l6ZWRDb2xvclRl
c3RzXS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5UZXh0dXJlMkRGb3JtYXRD
YXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19ucG90JywKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRFWFRVUkVfMkQnLAorICAgICAg
ICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgIHdpZHRoOiA2MywKKyAg
ICAgICAgICAgIGhlaWdodDogMTEyCisgICAgICAgIH0pKTsKKyAgICAgICAgc2l6ZWRDb2xvckN1
YmVQT1RHcm91cFtpaSAlIHNwbGl0U2l6ZWRDb2xvclRlc3RzXS5hZGRDaGlsZChuZXcgZXMzZlRl
eHR1cmVGb3JtYXRUZXN0cy5UZXh0dXJlQ3ViZUZvcm1hdENhc2UoeworICAgICAgICAgICAgbmFt
ZTogbmFtZUJhc2UgKyAnX3BvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRp
b25CYXNlICsgJyBnbC5URVhUVVJFX0NVQkVfTUFQJywKKyAgICAgICAgICAgIGZvcm1hdDogaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICB3aWR0aDogNjQsCisgICAgICAgICAgICBoZWlnaHQ6
IDY0CisgICAgICAgIH0pKTsKKyAgICAgICAgc2l6ZWRDb2xvckN1YmVOUE9UR3JvdXBbaWkgJSBz
cGxpdFNpemVkQ29sb3JUZXN0c10uYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMu
VGV4dHVyZUN1YmVGb3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19u
cG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRF
WFRVUkVfQ1VCRV9NQVAnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgIHdpZHRoOiA1NywKKyAgICAgICAgICAgIGhlaWdodDogNTcKKyAgICAgICAgfSkp
OworICAgICAgICBzaXplZENvbG9yMkRBcnJheVBPVEdyb3VwW2lpICUgc3BsaXRTaXplZENvbG9y
VGVzdHNdLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUyREFycmF5
Rm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFzZSArICdfcG90JywKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRFWFRVUkVfMkRfQVJS
QVknLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgIHdp
ZHRoOiA2NCwKKyAgICAgICAgICAgIGhlaWdodDogNjQsCisgICAgICAgICAgICBudW1MYXllcnM6
IDgKKworICAgICAgICB9KSk7CisgICAgICAgIHNpemVkQ29sb3IyREFycmF5TlBPVEdyb3VwW2lp
ICUgc3BsaXRTaXplZENvbG9yVGVzdHNdLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZUZvcm1hdFRl
c3RzLlRleHR1cmUyREFycmF5Rm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFz
ZSArICdfbnBvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25CYXNlICsg
JyBnbC5URVhUVVJFXzJEX0FSUkFZJywKKyAgICAgICAgICAgIGZvcm1hdDogaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICB3aWR0aDogNjMsCisgICAgICAgICAgICBoZWlnaHQ6IDU3LAorICAg
ICAgICAgICAgbnVtTGF5ZXJzOiA3CisgICAgICAgIH0pKTsKKyAgICAgICAgc2l6ZWRDb2xvcjNE
UE9UR3JvdXBbaWkgJSBzcGxpdFNpemVkQ29sb3JUZXN0c10uYWRkQ2hpbGQobmV3IGVzM2ZUZXh0
dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTNERm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBu
YW1lQmFzZSArICdfcG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJh
c2UgKyAnIGdsLlRFWFRVUkVfM0QnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgIHdpZHRoOiA4LAorICAgICAgICAgICAgaGVpZ2h0OiAzMiwKKyAgICAg
ICAgICAgIGRlcHRoOiAxNgorICAgICAgICB9KSk7CisgICAgICAgIHNpemVkQ29sb3IzRE5QT1RH
cm91cFtpaSAlIHNwbGl0U2l6ZWRDb2xvclRlc3RzXS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVG
b3JtYXRUZXN0cy5UZXh0dXJlM0RGb3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVC
YXNlICsgJ19ucG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2Ug
KyAnIGdsLlRFWFRVUkVfM0QnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgIHdpZHRoOiAxMSwKKyAgICAgICAgICAgIGhlaWdodDogMzEsCisgICAgICAg
ICAgICBkZXB0aDogNworICAgICAgICB9KSk7CisgICAgfQorCisgICAgdmFyIHNpemVkRGVwdGhT
dGVuY2lsRm9ybWF0cyA9IFsKKyAgICAgICAgLy8gRGVwdGggYW5kIHN0ZW5jaWwgZm9ybWF0cwor
ICAgICAgICBbJ2RlcHRoX2NvbXBvbmVudDMyZicsIGdsLkRFUFRIX0NPTVBPTkVOVDMyRl0sCisg
ICAgICAgIFsnZGVwdGhfY29tcG9uZW50MjQnLCBnbC5ERVBUSF9DT01QT05FTlQyNF0sCisgICAg
ICAgIFsnZGVwdGhfY29tcG9uZW50MTYnLCBnbC5ERVBUSF9DT01QT05FTlQxNl0sCisgICAgICAg
IC8vIFRoZSBmb2xsb3dpbmcgZm9ybWF0IGlzIHJlc3RyaWN0ZWQgaW4gV2ViR0wyLgorICAgICAg
ICAvLyBbJ2RlcHRoMzJmX3N0ZW5jaWw4JywgZ2wuREVQVEgzMkZfU1RFTkNJTDhdLAorICAgICAg
ICBbJ2RlcHRoMjRfc3RlbmNpbDgnLCBnbC5ERVBUSDI0X1NURU5DSUw4XQorICAgIF07CisgICAg
dmFyIHNpemVkRGVwdGhTdGVuY2lsR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdzaXplZCcs
ICdTaXplZCBmb3JtYXRzIChEZXB0aCBTdGVuY2lsKScpOworICAgIHN0YXRlLnRlc3RDYXNlcy5h
ZGRDaGlsZChzaXplZERlcHRoU3RlbmNpbEdyb3VwKTsKKyAgICBzaXplZERlcHRoU3RlbmNpbEZv
cm1hdHMuZm9yRWFjaChmdW5jdGlvbihlbGVtKSB7CisgICAgICAgIHZhciBpbnRlcm5hbEZvcm1h
dCA9IGVsZW1bMV07CisgICAgICAgIHZhciBuYW1lQmFzZSA9IGVsZW1bMF07CisgICAgICAgIHZh
ciBkZXNjcmlwdGlvbkJhc2UgPSBnbHVTdHJVdGlsLmdldFBpeGVsRm9ybWF0TmFtZShpbnRlcm5h
bEZvcm1hdCk7CisgICAgICAgIHNpemVkRGVwdGhTdGVuY2lsR3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBu
YW1lOiBuYW1lQmFzZSArICdfcG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlw
dGlvbkJhc2UgKyAnIGdsLlRFWFRVUkVfMkQnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgIHdpZHRoOiAxMjgsCisgICAgICAgICAgICBoZWlnaHQ6IDEy
OAorICAgICAgICB9KSk7CisgICAgICAgIHNpemVkRGVwdGhTdGVuY2lsR3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZTJERm9ybWF0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lOiBuYW1lQmFzZSArICdfbnBvdCcsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjog
ZGVzY3JpcHRpb25CYXNlICsgJyBnbC5URVhUVVJFXzJEJywKKyAgICAgICAgICAgIGZvcm1hdDog
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICB3aWR0aDogNjMsCisgICAgICAgICAgICBoZWln
aHQ6IDExMgorICAgICAgICB9KSk7CisgICAgICAgIHNpemVkRGVwdGhTdGVuY2lsR3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZUN1YmVGb3JtYXRDYXNlKHsK
KyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19wb3QnLAorICAgICAgICAgICAgZGVzY3Jp
cHRpb246IGRlc2NyaXB0aW9uQmFzZSArICcgZ2wuVEVYVFVSRV9DVUJFX01BUCcsCisgICAgICAg
ICAgICBmb3JtYXQ6IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgd2lkdGg6IDY0LAorICAg
ICAgICAgICAgaGVpZ2h0OiA2NAorICAgICAgICB9KSk7CisgICAgICAgIHNpemVkRGVwdGhTdGVu
Y2lsR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuVGV4dHVyZUN1YmVG
b3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19ucG90JywKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGdsLlRFWFRVUkVfQ1VCRV9N
QVAnLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgIHdp
ZHRoOiA1NywKKyAgICAgICAgICAgIGhlaWdodDogNTcKKyAgICAgICAgfSkpOworICAgICAgICBz
aXplZERlcHRoU3RlbmNpbEdyb3VwLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LlRleHR1cmUyREFycmF5Rm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFzZSAr
ICdfcG90JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkJhc2UgKyAnIGds
LlRFWFRVUkVfMkRfQVJSQVknLAorICAgICAgICAgICAgZm9ybWF0OiBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgIHdpZHRoOiA2NCwKKyAgICAgICAgICAgIGhlaWdodDogNjQsCisgICAgICAg
ICAgICBudW1MYXllcnM6IDgKKyAgICAgICAgfSkpOworICAgICAgICBzaXplZERlcHRoU3RlbmNp
bEdyb3VwLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZUZvcm1hdFRlc3RzLlRleHR1cmUyREFycmF5
Rm9ybWF0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBuYW1lQmFzZSArICdfbnBvdCcsCisgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25CYXNlICsgJyBnbC5URVhUVVJFXzJEX0FS
UkFZJywKKyAgICAgICAgICAgIGZvcm1hdDogaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICB3
aWR0aDogNjMsCisgICAgICAgICAgICBoZWlnaHQ6IDU3LAorICAgICAgICAgICAgbnVtTGF5ZXJz
OiA3CisgICAgICAgIH0pKTsKKyAgICB9KTsKKworICAgIHZhciBjb21wcmVzc2VkMkRHcm91cCA9
IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ2NvbXByZXNzZWQnLCAnQ29tcHJlc3NlZCBmb3JtYXRzICgy
RCknKTsKKyAgICBzdGF0ZS50ZXN0Q2FzZXMuYWRkQ2hpbGQoY29tcHJlc3NlZDJER3JvdXApOwor
ICAgIHZhciBjb21wcmVzc2VkQ3ViZUdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnY29tcHJl
c3NlZCcsICdDb21wcmVzc2VkIGZvcm1hdHMgKEN1YmVtYXApJyk7CisgICAgc3RhdGUudGVzdENh
c2VzLmFkZENoaWxkKGNvbXByZXNzZWRDdWJlR3JvdXApOworICAgIHZhciBldGMyRm9ybWF0cyA9
IFsKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1IxMV9FQUMnLCAnZWFjX3IxMScsIHRjdUNvbXBy
ZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfUjExXSwKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1NJ
R05FRF9SMTFfRUFDJywgJ2VhY19zaWduZWRfcjExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9y
bWF0LkVBQ19TSUdORURfUjExXSwKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1JHMTFfRUFDJywg
J2VhY19yZzExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVBQ19SRzExXSwKKyAgICAg
ICAgWydnbC5DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQycsICdlYWNfc2lnbmVkX3JnMTEnLCB0
Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRUFDX1NJR05FRF9SRzExXSwKKyAgICAgICAgWydn
bC5DT01QUkVTU0VEX1JHQjhfRVRDMicsICdldGMyX3JnYjgnLCB0Y3VDb21wcmVzc2VkVGV4dHVy
ZS5Gb3JtYXQuRVRDMl9SR0I4XSwKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1NSR0I4X0VUQzIn
LCAnZXRjMl9zcmdiOCcsIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1NSR0I4XSwK
KyAgICAgICAgWydnbC5DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyJywg
J2V0YzJfcmdiOF9wdW5jaHRocm91Z2hfYWxwaGExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9y
bWF0LkVUQzJfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExXSwKKyAgICAgICAgWydnbC5DT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMicsICdldGMyX3NyZ2I4X3B1bmNodGhy
b3VnaF9hbHBoYTEnLCB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExXSwKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
JywgJ2V0YzJfZWFjX3JnYmE4JywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfRUFD
X1JHQkE4XSwKKyAgICAgICAgWydnbC5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQycs
ICdldGMyX2VhY19zcmdiOF9hbHBoYTgnLCB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRD
Ml9FQUNfU1JHQjhfQUxQSEE4XQorICAgIF07CisgICAgaWYgKCFnbHVUZXh0dXJlVXRpbC5lbmFi
bGVDb21wcmVzc2VkVGV4dHVyZUVUQygpKSB7CisgICAgICAgIGRlYnVnKCdTa2lwcGluZyBFVEMy
L0VBQyB0ZXh0dXJlIGZvcm1hdCB0ZXN0czogbm8gc3VwcG9ydCBmb3IgV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YycpOworICAgICAgICBldGMyRm9ybWF0cyA9IFtdOworICAgIH0KKyAgICBl
dGMyRm9ybWF0cy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW0pIHsKKyAgICAgICAgdmFyIG5hbWVCYXNl
ID0gZWxlbVsxXTsKKyAgICAgICAgdmFyIGRlc2NyaXB0aW9uQmFzZSA9IGVsZW1bMF07CisgICAg
ICAgIHZhciBmb3JtYXQgPSBlbGVtWzJdOworICAgICAgICBjb21wcmVzc2VkMkRHcm91cC5hZGRD
aGlsZChuZXcgZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5Db21wcmVzc2VkMkRGb3JtYXRDYXNlKHsK
KyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ18yZF9wb3QnLAorICAgICAgICAgICAgZGVz
Y3JpcHRpb246IGRlc2NyaXB0aW9uQmFzZSArICcsIGdsLlRFWFRVUkVfMkQnLAorICAgICAgICAg
ICAgZm9ybWF0OiBmb3JtYXQsCisgICAgICAgICAgICB3aWR0aDogMTI4LAorICAgICAgICAgICAg
aGVpZ2h0OiA2NAorICAgICAgICB9KSk7CisgICAgICAgIGNvbXByZXNzZWRDdWJlR3JvdXAuYWRk
Q2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuQ29tcHJlc3NlZEN1YmVGb3JtYXRDYXNl
KHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19jdWJlX3BvdCcsCisgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25CYXNlICsgJywgZ2wuVEVYVFVSRV9DVUJFX01BUCcs
CisgICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCwKKyAgICAgICAgICAgIHdpZHRoOiA2NCwKKyAg
ICAgICAgICAgIGhlaWdodDogNjQKKyAgICAgICAgfSkpOworICAgICAgICBjb21wcmVzc2VkMkRH
cm91cC5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5Db21wcmVzc2VkMkRGb3Jt
YXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ18yZF9wb3QnLAorICAgICAg
ICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uQmFzZSArICcsIGdsLlRFWFRVUkVfMkQnLAor
ICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXQsCisgICAgICAgICAgICB3aWR0aDogMTI4LAorICAg
ICAgICAgICAgaGVpZ2h0OiA2NAorICAgICAgICB9KSk7CisgICAgICAgIGNvbXByZXNzZWRDdWJl
R3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuQ29tcHJlc3NlZEN1YmVG
b3JtYXRDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IG5hbWVCYXNlICsgJ19jdWJlX25wb3QnLAor
ICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uQmFzZSArICcsIGdsLlRFWFRVUkVf
Q1VCRV9NQVAnLAorICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXQsCisgICAgICAgICAgICB3aWR0
aDogNTEsCisgICAgICAgICAgICBoZWlnaHQ6IDUxCisgICAgICAgIH0pKTsKKyAgICB9KTsKK307
CisKKy8qKgorICogQ3JlYXRlIGFuZCBleGVjdXRlIHRoZSB0ZXN0IGNhc2VzCisgKi8KK2VzM2ZU
ZXh0dXJlRm9ybWF0VGVzdHMucnVuID0gZnVuY3Rpb24oY29udGV4dCwgcmFuZ2UpIHsKKyAgICBn
bCA9IGNvbnRleHQ7CisgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHRy
eSB7CisgICAgICAgIGVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuZ2VuVGVzdENhc2VzKCk7CisgICAg
ICAgIGlmIChyYW5nZSkKKyAgICAgICAgICAgIHN0YXRlLnNldFJhbmdlKHJhbmdlKTsKKyAgICAg
ICAgc3RhdGUucnVuQ2FsbGJhY2sodGN1VGVzdENhc2UucnVuVGVzdENhc2VzKTsKKyAgICB9IGNh
dGNoIChlcnIpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAg
c3RhdGUudGVybWluYXRlKCk7CisgICAgfQorCit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg3ODIyOGIyMzk3M2FlZDNiYzYwODUyOWVlMzJhMDFh
NDVhMjQyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLmpzCkBAIC0wLDAgKzEsODk4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVt
ZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIw
MTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICog
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0
JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2UnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdVJHQkEnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50
Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2Un
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhDb21wYXJlVmVyaWZpZXIn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcicp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVm
ZmVyQWNjZXNzJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1RleHR1cmVUZXN0
VXRpbCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCit2YXIgZXMzZlRleHR1cmVTaGFk
b3dUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0czsKK3ZhciB0
Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgZ2xzVGV4dHVy
ZVRlc3RVdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzVGV4dHVyZVRlc3RVdGlsOwordmFyIGdsdVNo
YWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7Cit2YXIgZ2x1VGV4dHVy
ZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZTsKK3ZhciBnbHVUZXh0dXJlVXRpbCA9IGZy
YW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7Cit2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29y
ay5jb21tb24udGN1VGV4dHVyZTsKK3ZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdUltYWdlQ29tcGFyZTsKK3ZhciB0Y3VMb2dJbWFnZSA9IGZyYW1ld29yay5jb21tb24u
dGN1TG9nSW1hZ2U7Cit2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRl
eHR1cmVVdGlsOwordmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVJHQkE7Cit2YXIg
ZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwordmFyIHRjdVBpeGVsRm9y
bWF0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VQaXhlbEZvcm1hdDsKK3ZhciB0Y3VTdXJmYWNlID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwordmFyIHRjdVRleENvbXBhcmVWZXJpZmllciA9
IGZyYW1ld29yay5jb21tb24udGN1VGV4Q29tcGFyZVZlcmlmaWVyOwordmFyIHRjdVRleExvb2t1
cFZlcmlmaWVyID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcjsKK3ZhciBy
ck11bHRpc2FtcGxlUGl4ZWxCdWZmZXJBY2Nlc3MgPSBmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVy
ZXIucnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzOwordmFyIGRlU3RyaW5nID0gZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7Cit2YXIgZGVVdGlsID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVVdGlsOworCisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy52ZXJzaW9uID0g
JzMwMCBlcyc7CisKKyAgICAvKiogQGNvbnN0ICovIHZhciBWSUVXUE9SVF9XSURUSCA9IDY0Owor
ICAgIC8qKiBAY29uc3QgKi8gdmFyIFZJRVdQT1JUX0hFSUdIVCA9IDY0OworICAgIC8qKiBAY29u
c3QgKi8gdmFyIE1JTl9WSUVXUE9SVF9XSURUSCA9IDY0OworICAgIC8qKiBAY29uc3QgKi8gdmFy
IE1JTl9WSUVXUE9SVF9IRUlHSFQgPSA2NDsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlv
bih4KSB7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNz
ZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1
cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLmlzRmxvYXRpbmdQb2ludERlcHRoRm9ybWF0
ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgICAgIC8vIE9ubHkgdHdvIGRlcHRoIGFuZCBkZXB0
aC1zdGVuY2lsIGZvcm1hdHMgYXJlIGZsb2F0aW5nIHBvaW50CisgICAgICAgIHJldHVybiAoZm9y
bWF0Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkQgJiYgZm9ybWF0LnR5cGUgPT0g
dGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVCkgfHwgKGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0
dXJlLkNoYW5uZWxPcmRlci5EUyAmJiBmb3JtYXQudHlwZSA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxU
eXBlLkZMT0FUX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gYWNjZXNzCisgICAgICov
CisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5jbGFtcEZsb2F0aW5nUG9pbnRUZXh0dXJlID0g
ZnVuY3Rpb24oYWNjZXNzKSB7CisgICAgICAgIERFX0FTU0VSVChlczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLmlzRmxvYXRpbmdQb2ludERlcHRoRm9ybWF0KGFjY2Vzcy5nZXRGb3JtYXQoKSkpOworICAg
ICAgICBmb3IgKHZhciB6ID0gMDsgeiA8IGFjY2Vzcy5nZXREZXB0aCgpOyArK3opCisgICAgICAg
ICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGFjY2Vzcy5nZXRIZWlnaHQoKTsgKyt5KQorICAgICAg
ICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgYWNjZXNzLmdldFdpZHRoKCk7ICsreCkKKyAg
ICAgICAgICAgICAgICAgICAgYWNjZXNzLnNldFBpeERlcHRoKGRlTWF0aC5jbGFtcChhY2Nlc3Mu
Z2V0UGl4RGVwdGgoeCwgeSwgeiksIDAuMCwgMS4wKSwgeCwgeSwgeik7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlMkR8dGN1VGV4dHVyZS5UZXh0
dXJlMkRBcnJheX0gdGFyZ2V0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5j
bGFtcEZsb2F0aW5nUG9pbnRUZXh0dXJlMkQgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAg
Zm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8IHRhcmdldC5nZXROdW1MZXZlbHMoKTsgKytsZXZl
bCkKKyAgICAgICAgICAgIGlmICghdGFyZ2V0LmlzTGV2ZWxFbXB0eShsZXZlbCkpCisgICAgICAg
ICAgICAgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5jbGFtcEZsb2F0aW5nUG9pbnRUZXh0dXJl
KHRhcmdldC5nZXRMZXZlbChsZXZlbCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3RjdVRleHR1cmUuVGV4dHVyZUN1YmV9IHRhcmdldAorICAgICAqLworICAgIGVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMuY2xhbXBGbG9hdGluZ1BvaW50VGV4dHVyZUN1YmUgPSBmdW5jdGlvbih0
YXJnZXQpIHsKKyAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSAwOyBsZXZlbCA8IHRhcmdldC5nZXRO
dW1MZXZlbHMoKTsgKytsZXZlbCkKKyAgICAgICAgICAgIGZvciAodmFyIGZhY2UgPSB0Y3VUZXh0
dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1g7IGZhY2UgPCBPYmplY3Qua2V5cyh0Y3VU
ZXh0dXJlLkN1YmVGYWNlKS5sZW5ndGg7IGZhY2UrKykKKyAgICAgICAgICAgICAgICBlczNmVGV4
dHVyZVNoYWRvd1Rlc3RzLmNsYW1wRmxvYXRpbmdQb2ludFRleHR1cmUodGFyZ2V0LmdldExldmVs
RmFjZShsZXZlbCwgZmFjZSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez99
IHRleHR1cmVUeXBlCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJB
Y2Nlc3N9IHJlc3VsdAorICAgICAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlMkR8dGN1VGV4
dHVyZS5UZXh0dXJlMkRBcnJheXx0Y3VUZXh0dXJlLlRleHR1cmVDdWJlfSBzcmMKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgICAgICogQHBhcmFtIHtnbHNUZXh0dXJl
VGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBzYW1wbGVQYXJhbXMKKyAgICAgKiBAcGFyYW0ge3Rj
dVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBjb21wYXJlUHJlYworICAg
ICAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9ufSBsb2RQcmVjaXNp
b24KKyAgICAgKiBAcGFyYW0ge3RjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0fSBwaXhlbEZvcm1h
dAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMudmVyaWZ5VGV4Q29tcGFyZVJl
c3VsdCA9IGZ1bmN0aW9uKHRleHR1cmVUeXBlLCByZXN1bHQsIHNyYywgdGV4Q29vcmQsIHNhbXBs
ZVBhcmFtcywgY29tcGFyZVByZWMsIGxvZFByZWNpc2lvbiwgcGl4ZWxGb3JtYXQpIHsKKyAgICAg
ICAgdmFyIHJlZmVyZW5jZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UocmVzdWx0LmdldFdpZHRo
KCksIHJlc3VsdC5nZXRIZWlnaHQoKSk7CisgICAgICAgIHZhciBlcnJvck1hc2sgPSBuZXcgdGN1
U3VyZmFjZS5TdXJmYWNlKHJlc3VsdC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0SGVpZ2h0KCkpOwor
ICAgICAgICB2YXIgbm9uU2hhZG93VGhyZXNob2xkID0gZGVNYXRoLnN3aXp6bGUodGN1VGV4TG9v
a3VwVmVyaWZpZXIuY29tcHV0ZUZpeGVkUG9pbnRUaHJlc2hvbGQoZGVNYXRoLnN1YnRyYWN0KGds
c1RleHR1cmVUZXN0VXRpbC5nZXRCaXRzVmVjKHBpeGVsRm9ybWF0KSwgWzEsIDEsIDEsIDFdKSks
IFsxLCAyLCAzXSk7CisgICAgICAgIHZhciBudW1GYWlsZWRQaXhlbHM7CisKKyAgICAgICAgaWYg
KGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuaXNGbG9hdGluZ1BvaW50RGVwdGhGb3JtYXQoc3JjLmdl
dEZvcm1hdCgpKSkgeworICAgICAgICAgICAgdmFyIGNsYW1wZWRTb3VyY2UgPSAvKmRlVXRpbC5j
bG9uZSgqL3NyYy8qKSovOworCisgICAgICAgICAgICBpZiAodGV4dHVyZVR5cGUgPT0gdGN1VGV4
dHVyZS5UZXh0dXJlMkQpIHsKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
LmNsYW1wRmxvYXRpbmdQb2ludFRleHR1cmUyRCgvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVy
ZTJEfSAqLyhjbGFtcGVkU291cmNlKSk7CisgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RV
dGlsLnNhbXBsZVRleHR1cmUyRChuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3Mo
cmVmZXJlbmNlLCBwaXhlbEZvcm1hdCksIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRW
aWV3fSAqLyAoY2xhbXBlZFNvdXJjZS5nZXRWaWV3KCkpLCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1z
KTsKKyAgICAgICAgICAgICAgICAvLyBzYW1wbGUgY2xhbXBlZCB2YWx1ZXMKKyAgICAgICAgICAg
ICAgICBudW1GYWlsZWRQaXhlbHMgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZVRleHR1cmVD
b21wYXJlRGlmZjJEKHJlc3VsdCwgcmVmZXJlbmNlLmdldEFjY2VzcygpLCBlcnJvck1hc2suZ2V0
QWNjZXNzKCksIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3fSAqLyAoY2xhbXBl
ZFNvdXJjZS5nZXRWaWV3KCkpLCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zLCBjb21wYXJlUHJlYywg
bG9kUHJlY2lzaW9uLCBub25TaGFkb3dUaHJlc2hvbGQpOworICAgICAgICAgICAgfSBlbHNlIGlm
ICh0ZXh0dXJlVHlwZSA9PSB0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5KSB7CisgICAgICAgICAg
ICAgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5jbGFtcEZsb2F0aW5nUG9pbnRUZXh0dXJlMkQo
LyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5fSAqLyhjbGFtcGVkU291cmNlKSk7
CisgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1cmUyREFycmF5
KG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVuY2UsIHBpeGVsRm9y
bWF0KSwgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5Vmlld30gKi8gKGNsYW1w
ZWRTb3VyY2UuZ2V0VmlldygpKSwgdGV4Q29vcmQsIHNhbXBsZVBhcmFtcyk7CisgICAgICAgICAg
ICAgICAgLy8gc2FtcGxlIGNsYW1wZWQgdmFsdWVzCisgICAgICAgICAgICAgICAgbnVtRmFpbGVk
UGl4ZWxzID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVUZXh0dXJlQ29tcGFyZURpZmYyREFy
cmF5KHJlc3VsdCwgcmVmZXJlbmNlLmdldEFjY2VzcygpLCBlcnJvck1hc2suZ2V0QWNjZXNzKCks
IC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheVZpZXd9ICovIChjbGFtcGVkU291
cmNlLmdldFZpZXcoKSksIHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIGNvbXBhcmVQcmVjLCBsb2RQ
cmVjaXNpb24sIG5vblNoYWRvd1RocmVzaG9sZCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRl
eHR1cmVUeXBlID09IHRjdVRleHR1cmUuVGV4dHVyZUN1YmUpIHsKKyAgICAgICAgICAgICAgICBl
czNmVGV4dHVyZVNoYWRvd1Rlc3RzLmNsYW1wRmxvYXRpbmdQb2ludFRleHR1cmVDdWJlKC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZX0gKi8oY2xhbXBlZFNvdXJjZSkpOworICAgICAg
ICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVUZXh0dXJlQ3ViZShuZXcgZ2xzVGV4
dHVyZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3MocmVmZXJlbmNlLCBwaXhlbEZvcm1hdCksIC8qKiBA
dHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXd9ICovIChjbGFtcGVkU291cmNlLmdldFZp
ZXcoKSksIHRleENvb3JkLCBzYW1wbGVQYXJhbXMpOworICAgICAgICAgICAgICAgIC8vIHNhbXBs
ZSBjbGFtcGVkIHZhbHVlcworICAgICAgICAgICAgICAgIG51bUZhaWxlZFBpeGVscyA9IGdsc1Rl
eHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVyZUNvbXBhcmVEaWZmQ3ViZShyZXN1bHQsIHJlZmVy
ZW5jZS5nZXRBY2Nlc3MoKSwgZXJyb3JNYXNrLmdldEFjY2VzcygpLCAvKiogQHR5cGUge3RjdVRl
eHR1cmUuVGV4dHVyZUN1YmVWaWV3fSAqLyAoY2xhbXBlZFNvdXJjZS5nZXRWaWV3KCkpLCB0ZXhD
b29yZCwgc2FtcGxlUGFyYW1zLCBjb21wYXJlUHJlYywgbG9kUHJlY2lzaW9uLCBub25TaGFkb3dU
aHJlc2hvbGQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdJbnZhbGlkIHRleHR1cmUgdHlwZScpOworCisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAodGV4dHVyZVR5cGUgPT0gdGN1VGV4dHVyZS5UZXh0dXJlMkQpIHsKKyAgICAg
ICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZTJEKG5ldyBnbHNUZXh0
dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVuY2UsIHBpeGVsRm9ybWF0KSwgLyoqIEB0
eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXd9ICovIChzcmMuZ2V0VmlldygpKSwgdGV4Q29v
cmQsIHNhbXBsZVBhcmFtcyk7CisgICAgICAgICAgICAgICAgLy8gc2FtcGxlIHJhdyB2YWx1ZXMg
KHRoZXkgYXJlIGd1YXJhbnRlZWQgdG8gYmUgaW4gWzAsIDFdIHJhbmdlIGFzIHRoZSBmb3JtYXQg
Y2Fubm90IHJlcHJlc2VudCBhbnkgb3RoZXIgdmFsdWVzKQorICAgICAgICAgICAgICAgIG51bUZh
aWxlZFBpeGVscyA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVyZUNvbXBhcmVEaWZm
MkQocmVzdWx0LCByZWZlcmVuY2UuZ2V0QWNjZXNzKCksIGVycm9yTWFzay5nZXRBY2Nlc3MoKSwg
LyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXd9ICovIChzcmMuZ2V0VmlldygpKSwg
dGV4Q29vcmQsIHNhbXBsZVBhcmFtcywgY29tcGFyZVByZWMsIGxvZFByZWNpc2lvbiwgbm9uU2hh
ZG93VGhyZXNob2xkKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGV4dHVyZVR5cGUgPT0gdGN1
VGV4dHVyZS5UZXh0dXJlMkRBcnJheSkgeworICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0
VXRpbC5zYW1wbGVUZXh0dXJlMkRBcnJheShuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlN1cmZhY2VB
Y2Nlc3MocmVmZXJlbmNlLCBwaXhlbEZvcm1hdCksIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0
dXJlMkRBcnJheVZpZXd9ICovIChzcmMuZ2V0VmlldygpKSwgdGV4Q29vcmQsIHNhbXBsZVBhcmFt
cyk7CisgICAgICAgICAgICAgICAgLy8gc2FtcGxlIHJhdyB2YWx1ZXMgKHRoZXkgYXJlIGd1YXJh
bnRlZWQgdG8gYmUgaW4gWzAsIDFdIHJhbmdlIGFzIHRoZSBmb3JtYXQgY2Fubm90IHJlcHJlc2Vu
dCBhbnkgb3RoZXIgdmFsdWVzKQorICAgICAgICAgICAgICAgIG51bUZhaWxlZFBpeGVscyA9IGds
c1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVyZUNvbXBhcmVEaWZmMkRBcnJheShyZXN1bHQs
IHJlZmVyZW5jZS5nZXRBY2Nlc3MoKSwgZXJyb3JNYXNrLmdldEFjY2VzcygpLCAvKiogQHR5cGUg
e3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fSAqLyAoc3JjLmdldFZpZXcoKSksIHRleENv
b3JkLCBzYW1wbGVQYXJhbXMsIGNvbXBhcmVQcmVjLCBsb2RQcmVjaXNpb24sIG5vblNoYWRvd1Ro
cmVzaG9sZCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRleHR1cmVUeXBlID09IHRjdVRleHR1
cmUuVGV4dHVyZUN1YmUpIHsKKyAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2Ft
cGxlVGV4dHVyZUN1YmUobmV3IGdsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzKHJlZmVy
ZW5jZSwgcGl4ZWxGb3JtYXQpLCAvKiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3
fSAqLyAoc3JjLmdldFZpZXcoKSksIHRleENvb3JkLCBzYW1wbGVQYXJhbXMpOworICAgICAgICAg
ICAgICAgIC8vIHNhbXBsZSByYXcgdmFsdWVzICh0aGV5IGFyZSBndWFyYW50ZWVkIHRvIGJlIGlu
IFswLCAxXSByYW5nZSBhcyB0aGUgZm9ybWF0IGNhbm5vdCByZXByZXNlbnQgYW55IG90aGVyIHZh
bHVlcykKKyAgICAgICAgICAgICAgICBudW1GYWlsZWRQaXhlbHMgPSBnbHNUZXh0dXJlVGVzdFV0
aWwuY29tcHV0ZVRleHR1cmVDb21wYXJlRGlmZkN1YmUocmVzdWx0LCByZWZlcmVuY2UuZ2V0QWNj
ZXNzKCksIGVycm9yTWFzay5nZXRBY2Nlc3MoKSwgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1
cmVDdWJlVmlld30gKi8gKHNyYy5nZXRWaWV3KCkpLCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zLCBj
b21wYXJlUHJlYywgbG9kUHJlY2lzaW9uLCBub25TaGFkb3dUaHJlc2hvbGQpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRleHR1
cmUgdHlwZScpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bUZhaWxlZFBpeGVscyA+IDAp
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRVJST1I6IFJlc3VsdCB2ZXJpZmlj
YXRpb24gZmFpbGVkLCBnb3QgJyArIG51bUZhaWxlZFBpeGVscyArICcgaW52YWxpZCBwaXhlbHMh
Jyk7CisKKyAgICAgICAgaWYgKG51bUZhaWxlZFBpeGVscyA+IDApCisgICAgICAgICAgICB0Y3VJ
bWFnZUNvbXBhcmUuZGlzcGxheUltYWdlcyhyZXN1bHQsIHJlZmVyZW5jZS5nZXRBY2Nlc3MoKSwg
ZXJyb3JNYXNrLmdldEFjY2VzcygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGN1TG9n
SW1hZ2UubG9nSW1hZ2VXaXRoSW5mbyhyZXN1bHQsICdSZXN1bHQnKTsKKworICAgICAgICByZXR1
cm4gbnVtRmFpbGVkUGl4ZWxzID09IDA7CisKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gZm9ybWF0CisgICAgICogQHN0cnVjdAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMuRm9ybWF0ID0gZnVuY3Rpb24obmFtZSwgZm9ybWF0KSB7CisgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5mb3JtYXQgPSBmb3JtYXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG1pbkZpbHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYWdGaWx0ZXIKKyAg
ICAgKiBAc3RydWN0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5GaWx0ZXIg
PSBmdW5jdGlvbihuYW1lLCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlcikgeworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubWluRmlsdGVyID0gbWluRmlsdGVyOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGZ1bmMKKyAgICAgKiBAc3RydWN0CisgICAgICovCisgICAgZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5Db21wYXJlRnVuYyA9IGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmZ1bmMgPSBmdW5jOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGV4TmR4CisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHJlZgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb2RYCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGxvZFkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb1gKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gb1kKKyAgICAgKiBAc3RydWN0CisgICAgICovCisgICAgZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5UZXN0Q2FzZSA9IGZ1bmN0aW9uKHRleE5keCwgcmVmLCBsb2RYLCBs
b2RZLCBvWCwgb1kpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMudGV4TmR4
ID0gdGV4TmR4OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5yZWYgPSByZWY7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmxvZFggPSBsb2RYOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5sb2RZID0gbG9kWTsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMub1ggPSBvWAorICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5vWSA9IG9ZOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAcGFyYW0gez9nbHVUZXh0dXJlLlRleHR1cmUyRHw/Z2x1VGV4dHVyZS5UZXh0dXJl
Q3ViZXw/Z2x1VGV4dHVyZS5UZXh0dXJlMkRBcnJheX0gdGV4CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHJlZgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbWluQ29vcmQKKyAgICAgKiBA
cGFyYW0ge0FycmF5PG51bWJlcj59IG1heENvb3JkCisgICAgICogQHN0cnVjdAorICAgICAqLwor
ICAgIGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuRmlsdGVyQ2FzZSA9IGZ1bmN0aW9uKHRleCwgcmVm
LCBtaW5Db29yZCwgbWF4Q29vcmQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2x1VGV4dHVyZS5U
ZXh0dXJlMkR8P2dsdVRleHR1cmUuVGV4dHVyZUN1YmV8P2dsdVRleHR1cmUuVGV4dHVyZTJEQXJy
YXl9ICovIHRoaXMudGV4dHVyZSA9IHRleDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB0aGlzLm1pbkNvb3JkID0gbWluQ29vcmQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdGhpcy5tYXhDb29yZCA9IG1heENvb3JkOworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdGhpcy5yZWYgPSByZWY7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluRmlsdGVyCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IG1hZ0ZpbHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3cmFwUwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3cmFwVAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3Jt
YXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbXBhcmVGdW5jCisgICAgICogQGV4dGVu
ZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMuVGV4dHVyZTJEU2hhZG93Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIG1pbkZpbHRl
ciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgY29tcGFy
ZUZ1bmMpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBk
ZXNjKTsKKyAgICAgICAgdGhpcy5tX21pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgdGhp
cy5tX21hZ0ZpbHRlciA9IG1hZ0ZpbHRlcjsKKyAgICAgICAgdGhpcy5tX3dyYXBTID0gd3JhcFM7
CisgICAgICAgIHRoaXMubV93cmFwVCA9IHdyYXBUOworICAgICAgICB0aGlzLm1fZm9ybWF0ID0g
Zm9ybWF0OworICAgICAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhpcy5tX2hl
aWdodCA9IGhlaWdodDsKKyAgICAgICAgdGhpcy5tX2NvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmM7
CisgICAgICAgIHRoaXMubV9yZW5kZXJlciA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuVGV4dHVy
ZVJlbmRlcmVyKGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMudmVyc2lvbiwgZ2x1U2hhZGVyVXRpbC5w
cmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKTsKKyAgICAgICAgdGhpcy5tX2Nhc2VOZHggPSAwOwor
ICAgICAgICB0aGlzLm1fY2FzZXMgPSBbXTsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTaGFk
b3dUZXN0cy5UZXh0dXJlMkRTaGFkb3dDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1
VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
LlRleHR1cmUyRFNoYWRvd0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlRleHR1cmVT
aGFkb3dUZXN0cy5UZXh0dXJlMkRTaGFkb3dDYXNlOworCisgICAgZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cy5UZXh0dXJlMkRTaGFkb3dDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisK
KyAgICAgICAgLy8gQ3JlYXRlIDIgdGV4dHVyZXMuCisgICAgICAgIHRoaXMubV90ZXh0dXJlcyA9
IFtdOworICAgICAgICB0aGlzLm1fdGV4dHVyZXNbMF0gPSBnbHVUZXh0dXJlLnRleHR1cmUyREZy
b21JbnRlcm5hbEZvcm1hdChnbCwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1f
aGVpZ2h0KTsKKyAgICAgICAgdGhpcy5tX3RleHR1cmVzWzFdID0gZ2x1VGV4dHVyZS50ZXh0dXJl
MkRGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMubV9mb3JtYXQsIHRoaXMubV93aWR0aCwgdGhp
cy5tX2hlaWdodCk7CisKKyAgICAgICAgdmFyIG51bUxldmVscyA9IHRoaXMubV90ZXh0dXJlc1sw
XS5nZXRSZWZUZXh0dXJlKCkuZ2V0TnVtTGV2ZWxzKCk7CisKKyAgICAgICAgZm9yICh2YXIgbGV2
ZWxOZHggPSAwOyBsZXZlbE5keCA8IG51bUxldmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAg
ICAgdGhpcy5tX3RleHR1cmVzWzBdLmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVsKGxldmVsTmR4
KTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRz
KHRoaXMubV90ZXh0dXJlc1swXS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpLCBb
LTAuNSwgLTAuNSwgLTAuNSwgMi4wXSwgWzEsIDEsIDEsIDBdKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAobGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IG51bUxldmVsczsgbGV2ZWxOZHgrKykg
eworICAgICAgICAgICAgdmFyIHN0ZXAgPSAweDAwZmZmZmZmIC8gbnVtTGV2ZWxzOworICAgICAg
ICAgICAgdmFyIHJnYiA9IHN0ZXAgKiBsZXZlbE5keDsKKyAgICAgICAgICAgIHZhciBjb2xvckEg
PSAweGZmMDAwMDAwIHwgcmdiOworICAgICAgICAgICAgdmFyIGNvbG9yQiA9IDB4ZmYwMDAwMDAg
fCB+cmdiOworCisgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZXNbMV0uZ2V0UmVmVGV4dHVyZSgp
LmFsbG9jTGV2ZWwobGV2ZWxOZHgpOworICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdp
dGhHcmlkKHRoaXMubV90ZXh0dXJlc1sxXS5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxO
ZHgpLCA0LCB0Y3VSR0JBLm5ld1JHQkFGcm9tVmFsdWUoY29sb3JBKS50b1ZlYygpLCB0Y3VSR0JB
Lm5ld1JHQkFGcm9tVmFsdWUoY29sb3JCKS50b1ZlYygpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX3RleHR1cmVzLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgdGhpcy5tX3RleHR1cmVzW2ldLnVwbG9hZCgpOworCisgICAgICAgIHZhciByZWZJblJh
bmdlVXBwZXIgPSAodGhpcy5tX2NvbXBhcmVGdW5jID09IGdsLkVRVUFMIHx8IHRoaXMubV9jb21w
YXJlRnVuYyA9PSBnbC5OT1RFUVVBTCkgPyAxLjAgOiAwLjU7CisgICAgICAgIHZhciByZWZJblJh
bmdlTG93ZXIgPSAodGhpcy5tX2NvbXBhcmVGdW5jID09IGdsLkVRVUFMIHx8IHRoaXMubV9jb21w
YXJlRnVuYyA9PSBnbC5OT1RFUVVBTCkgPyAwLjAgOiAwLjU7CisKKyAgICAgICAgdmFyIHJlZk91
dE9mQm91bmRzVXBwZXIgPSAxLjE7CisgICAgICAgIHZhciByZWZPdXRPZkJvdW5kc0xvd2VyID0g
LTAuMTsKKworICAgICAgICBudW1MZXZlbHMgPSB0aGlzLm1fdGV4dHVyZXNbMF0uZ2V0UmVmVGV4
dHVyZSgpLmdldE51bUxldmVscygpOworCisgICAgICAgIHZhciBjYXNlcyA9IFtdOworICAgICAg
ICBjYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLlRlc3RDYXNlKDAsIHJlZklu
UmFuZ2VVcHBlciwgMS42LCAyLjksIC0xLjAsIC0yLjcpKTsKKyAgICAgICAgY2FzZXMucHVzaChu
ZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5UZXN0Q2FzZSgwLCByZWZJblJhbmdlTG93ZXIsIC0y
LjAsIC0xLjM1LCAtMC4yLCAwLjcpKTsKKyAgICAgICAgY2FzZXMucHVzaChuZXcgZXMzZlRleHR1
cmVTaGFkb3dUZXN0cy5UZXN0Q2FzZSgxLCByZWZJblJhbmdlVXBwZXIsIDAuMTQsIDAuMjc1LCAt
MS41LCAtMS4xKSk7CisgICAgICAgIGNhc2VzLnB1c2gobmV3IGVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMuVGVzdENhc2UoMSwgcmVmSW5SYW5nZUxvd2VyLCAtMC45MiwgLTIuNjQsIDAuNCwgLTAuMSkp
OworICAgICAgICBjYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLlRlc3RDYXNl
KDEsIHJlZk91dE9mQm91bmRzVXBwZXIsIC0wLjM5LCAtMC41MiwgMC42NSwgMC44NykpOworICAg
ICAgICBjYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLlRlc3RDYXNlKDEsIHJl
Zk91dE9mQm91bmRzTG93ZXIsIC0xLjU1LCAwLjY1LCAwLjM1LCAwLjkxKSk7CisKKyAgICAgICAg
dmFyIHZpZXdwb3J0VyA9IE1hdGgubWluKFZJRVdQT1JUX1dJRFRILCBnbC5jYW52YXMud2lkdGgp
OworICAgICAgICB2YXIgdmlld3BvcnRIID0gTWF0aC5taW4oVklFV1BPUlRfSEVJR0hULCBnbC5j
YW52YXMuaGVpZ2h0KTsKKworICAgICAgICBmb3IgKHZhciBjYXNlTmR4ID0gMDsgY2FzZU5keCA8
IGNhc2VzLmxlbmd0aDsgY2FzZU5keCsrKSB7CisgICAgICAgICAgICB2YXIgdGV4TmR4ID0gZGVN
YXRoLmNsYW1wKGNhc2VzW2Nhc2VOZHhdLnRleE5keCwgMCwgdGhpcy5tX3RleHR1cmVzLmxlbmd0
aCAtIDEpOworICAgICAgICAgICAgdmFyIHJlZiA9IGNhc2VzW2Nhc2VOZHhdLnJlZjsKKyAgICAg
ICAgICAgIHZhciBsb2RYID0gY2FzZXNbY2FzZU5keF0ubG9kWDsKKyAgICAgICAgICAgIHZhciBs
b2RZID0gY2FzZXNbY2FzZU5keF0ubG9kWTsKKyAgICAgICAgICAgIHZhciBvWCA9IGNhc2VzW2Nh
c2VOZHhdLm9YOworICAgICAgICAgICAgdmFyIG9ZID0gY2FzZXNbY2FzZU5keF0ub1k7CisgICAg
ICAgICAgICB2YXIgc1ggPSBNYXRoLmV4cChsb2RYICogTWF0aC5sb2coMikpICogdmlld3BvcnRX
IC8gdGhpcy5tX3RleHR1cmVzW3RleE5keF0uZ2V0UmVmVGV4dHVyZSgpLmdldFdpZHRoKCk7Cisg
ICAgICAgICAgICB2YXIgc1kgPSBNYXRoLmV4cChsb2RZICogTWF0aC5sb2coMikpICogdmlld3Bv
cnRIIC8gdGhpcy5tX3RleHR1cmVzW3RleE5keF0uZ2V0UmVmVGV4dHVyZSgpLmdldEhlaWdodCgp
OworCisgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaChuZXcgZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cy5GaWx0ZXJDYXNlKHRoaXMubV90ZXh0dXJlc1t0ZXhOZHhdLCByZWYsIFtvWCwgb1ldLCBb
b1ggKyBzWCwgb1kgKyBzWV0pKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubV9jYXNlTmR4
ID0gMDsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5UZXh0dXJlMkRTaGFk
b3dDYXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIHZp
ZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2FudmFzJyksIFZJRVdQT1JUX1dJRFRILCBWSUVXUE9SVF9IRUlHSFQp
OworICAgICAgICB2YXIgY3VyQ2FzZSA9IHRoaXMubV9jYXNlc1t0aGlzLm1fY2FzZU5keF07Cisg
ICAgICAgIHZhciBzYW1wbGVQYXJhbXMgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5j
ZVBhcmFtcyhnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfMkQpOwor
ICAgICAgICB2YXIgcmVuZGVyZWQgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0Lndp
ZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworICAgICAgICB2YXIgdGV4Q29vcmQgPSBbXTsKKworICAg
ICAgICBpZiAodmlld3BvcnQud2lkdGggPCBNSU5fVklFV1BPUlRfV0lEVEggfHwgdmlld3BvcnQu
aGVpZ2h0IDwgTUlOX1ZJRVdQT1JUX0hFSUdIVCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignVG9vIHNtYWxsIHJlbmRlciB0YXJnZXQnKTsKKworICAgICAgICAvLyBTZXR1cCBwYXJhbXMg
Zm9yIHJlZmVyZW5jZS4KKyAgICAgICAgc2FtcGxlUGFyYW1zLnNhbXBsZXIgPSBnbHVUZXh0dXJl
VXRpbC5tYXBHTFNhbXBsZXIodGhpcy5tX3dyYXBTLCB0aGlzLm1fd3JhcFQsIGdsLkNMQU1QX1RP
X0VER0UsIHRoaXMubV9taW5GaWx0ZXIsIHRoaXMubV9tYWdGaWx0ZXIpOworICAgICAgICBzYW1w
bGVQYXJhbXMuc2FtcGxlci5jb21wYXJlID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xDb21wYXJlRnVu
Yyh0aGlzLm1fY29tcGFyZUZ1bmMpOworICAgICAgICBzYW1wbGVQYXJhbXMuc2FtcGxlclR5cGUg
PSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfU0hBRE9XOworICAg
ICAgICBzYW1wbGVQYXJhbXMubG9kTW9kZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5sb2RNb2RlLkVY
QUNUOworICAgICAgICBzYW1wbGVQYXJhbXMucmVmID0gY3VyQ2FzZS5yZWY7CisKKyAgICAgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0NvbXBhcmUgcmVmZXJlbmNlIHZhbHVlID0gJyArIHNhbXBs
ZVBhcmFtcy5yZWYpOworCisgICAgICAgIC8vIENvbXB1dGUgdGV4dHVyZSBjb29yZGluYXRlcy4K
KyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1RleHR1cmUgY29vcmRpbmF0ZXM6ICcgKyBj
dXJDYXNlLm1pbkNvb3JkICsgJyAtPiAnICsgY3VyQ2FzZS5tYXhDb29yZCk7CisKKyAgICAgICAg
dGV4Q29vcmQgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZVF1YWRUZXhDb29yZDJEKGN1ckNh
c2UubWluQ29vcmQsIGN1ckNhc2UubWF4Q29vcmQpOworCisgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIGN1ckNhc2UudGV4dHVyZS5nZXRHTFRleHR1cmUoKSk7CisgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0
aGlzLm1fbWluRmlsdGVyKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIHRoaXMubV9tYWdGaWx0ZXIpOworICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCB0aGlzLm1fd3Jh
cFMpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9ULCB0aGlzLm1fd3JhcFQpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFLCBnbC5DT01QQVJFX1JFRl9UT19URVhUVVJF
KTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NP
TVBBUkVfRlVOQywgdGhpcy5tX2NvbXBhcmVGdW5jKTsKKworICAgICAgICBnbC52aWV3cG9ydCh2
aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsK
KyAgICAgICAgdGhpcy5tX3JlbmRlcmVyLnJlbmRlclF1YWQoMCwgdGV4Q29vcmQsIHNhbXBsZVBh
cmFtcyk7CisgICAgICAgIHJlbmRlcmVkLnJlYWRWaWV3cG9ydChnbCwgdmlld3BvcnQpOworCisK
KyAgICAgICAgdmFyIHBpeGVsRm9ybWF0ID0gbmV3IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0
KDgsIDgsIDgsIDgpOworICAgICAgICB2YXIgbG9kUHJlY2lzaW9uID0gbmV3IHRjdVRleExvb2t1
cFZlcmlmaWVyLkxvZFByZWNpc2lvbigxOCwgNik7CisgICAgICAgIHZhciB0ZXhDb21wYXJlUHJl
Y2lzaW9uID0gbmV3IHRjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9uKFsy
MCwgMjAsIDBdLCBbNywgNywgMF0sIDUsIDE2LCBwaXhlbEZvcm1hdC5yZWRCaXRzIC0gMSk7CisK
KyAgICAgICAgdmFyIGlzSGlnaFF1YWxpdHkgPSBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnZlcmlm
eVRleENvbXBhcmVSZXN1bHQodGN1VGV4dHVyZS5UZXh0dXJlMkQsIHJlbmRlcmVkLmdldEFjY2Vz
cygpLCBjdXJDYXNlLnRleHR1cmUuZ2V0UmVmVGV4dHVyZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmQsIHNhbXBsZVBhcmFt
cywgdGV4Q29tcGFyZVByZWNpc2lvbiwgbG9kUHJlY2lzaW9uLCBwaXhlbEZvcm1hdCk7CisKKyAg
ICAgICAgaWYgKCFpc0hpZ2hRdWFsaXR5KSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnV2FybmluZzogVmVyaWZpY2F0aW9uIGFzc3VtaW5nIGhpZ2gtcXVhbGl0eSBQQ0YgZmls
dGVyaW5nIGZhaWxlZC4nKTsKKworICAgICAgICAgICAgbG9kUHJlY2lzaW9uLmxvZEJpdHMgPSA0
OworICAgICAgICAgICAgdGV4Q29tcGFyZVByZWNpc2lvbi51dndCaXRzID0gWzQsIDQsIDBdOwor
ICAgICAgICAgICAgdGV4Q29tcGFyZVByZWNpc2lvbi5wY2ZCaXRzID0gMDsKKworICAgICAgICAg
ICAgdmFyIGlzT2sgPSBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnZlcmlmeVRleENvbXBhcmVSZXN1
bHQodGN1VGV4dHVyZS5UZXh0dXJlMkQsIHJlbmRlcmVkLmdldEFjY2VzcygpLCBjdXJDYXNlLnRl
eHR1cmUuZ2V0UmVmVGV4dHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zLCB0ZXhDb21wYXJlUHJl
Y2lzaW9uLCBsb2RQcmVjaXNpb24sIHBpeGVsRm9ybWF0KTsKKworICAgICAgICAgICAgaWYgKCFp
c09rKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0VSUk9SOiBWZXJp
ZmljYXRpb24gYWdhaW5zdCBsb3cgcHJlY2lzaW9uIHJlcXVpcmVtZW50cyBmYWlsZWQsIGZhaWxp
bmcgdGVzdCBjYXNlLicpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFn
ZSB2ZXJpZmljYXRpb24gZmFpbGVkJywgZmFsc2UpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZE9wdGlvbnMoJ0xvdy1xdWFsaXR5IHJlc3VsdCcsIHRydWUp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdIaWdoLXF1
YWxpdHkgcmVzdWx0JywgdHJ1ZSk7CisKKyAgICAgICAgdGhpcy5tX2Nhc2VOZHggKz0gMTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMubV9jYXNlTmR4IDwgdGhpcy5tX2Nhc2VzLmxlbmd0aCA/IHRjdVRl
c3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUUgOiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0
LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbWluRmlsdGVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1hZ0ZpbHRl
cgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3cmFwUworICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3
cmFwVAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc2l6ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb21wYXJlRnVuYworICAgICAqIEBleHRl
bmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNoYWRv
d1Rlc3RzLlRleHR1cmVDdWJlU2hhZG93Q2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIG1pbkZp
bHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsIGZvcm1hdCwgc2l6ZSwgY29tcGFyZUZ1bmMp
IHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjKTsK
KyAgICAgICAgdGhpcy5tX21pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgdGhpcy5tX21h
Z0ZpbHRlciA9IG1hZ0ZpbHRlcjsKKyAgICAgICAgdGhpcy5tX3dyYXBTID0gd3JhcFM7CisgICAg
ICAgIHRoaXMubV93cmFwVCA9IHdyYXBUOworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0
OworICAgICAgICB0aGlzLm1fc2l6ZSA9IHNpemU7CisgICAgICAgIHRoaXMubV9jb21wYXJlRnVu
YyA9IGNvbXBhcmVGdW5jOworICAgICAgICB0aGlzLm1fcmVuZGVyZXIgPSBuZXcgZ2xzVGV4dHVy
ZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlcihlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnZlcnNpb24s
IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7CisgICAgICAgIHRoaXMu
bV9jYXNlTmR4ID0gMDsKKyAgICAgICAgdGhpcy5tX2Nhc2VzID0gW107CisgICAgfTsKKworICAg
IGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuVGV4dHVyZUN1YmVTaGFkb3dDYXNlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBlczNm
VGV4dHVyZVNoYWRvd1Rlc3RzLlRleHR1cmVDdWJlU2hhZG93Q2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLlRleHR1cmVDdWJlU2hhZG93Q2FzZTsKKwor
ICAgIGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuVGV4dHVyZUN1YmVTaGFkb3dDYXNlLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIERFX0FTU0VSVCghdGhpcy5tX2dyYWRpZW50
VGV4ICYmICF0aGlzLm1fZ3JpZFRleCk7CisKKyAgICAgICAgdmFyIG51bUxldmVscyA9IE1hdGgu
Zmxvb3IoTWF0aC5sb2cyKHRoaXMubV9zaXplKSkgKyAxOworICAgICAgICAvKiogQHR5cGUge3Rj
dVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gKi8gdmFyIHRleEZtdCA9IGdsdVRleHR1cmVVdGlsLm1h
cEdMSW50ZXJuYWxGb3JtYXQodGhpcy5tX2Zvcm1hdCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGV4dHVyZVV0aWwuVGV4dHVyZUZvcm1hdEluZm99ICovIHZhciBmbXRJbmZvID0gdGN1VGV4dHVy
ZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8odGV4Rm10KTsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgY0JpYXMgPSBmbXRJbmZvLnZhbHVlTWluOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjU2NhbGUgPSBkZU1hdGguc3VidHJhY3Qo
Zm10SW5mby52YWx1ZU1heCwgZm10SW5mby52YWx1ZU1pbik7CisKKyAgICAgICAgLy8gQ3JlYXRl
IHRleHR1cmVzLgorICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXggPSBnbHVUZXh0dXJlLmN1YmVG
cm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMubV9mb3JtYXQsIHRoaXMubV9zaXplKTsKKyAgICAg
ICAgdGhpcy5tX2dyaWRUZXggPSBnbHVUZXh0dXJlLmN1YmVGcm9tSW50ZXJuYWxGb3JtYXQoZ2ws
IHRoaXMubV9mb3JtYXQsIHRoaXMubV9zaXplKTsKKworICAgICAgICAvLyBGaWxsIGZpcnN0IHdp
dGggZ3JhZGllbnQgdGV4dHVyZS4KKyAgICAgICAgdmFyIGdyYWRpZW50cyA9IFtbWy0xLjAsIC0x
LjAsIC0xLjAsIDIuMF0sIFsxLjAsIDEuMCwgMS4wLCAwLjBdXSwgLy8gbmVnYXRpdmUgeAorICAg
ICAgICAgICAgW1swLjAsIC0xLjAsIC0xLjAsIDIuMF0sIFsxLjAsIDEuMCwgMS4wLCAwLjBdXSwg
Ly8gcG9zaXRpdmUgeAorICAgICAgICAgICAgW1stMS4wLCAwLjAsIC0xLjAsIDIuMF0sIFsxLjAs
IDEuMCwgMS4wLCAwLjBdXSwgLy8gbmVnYXRpdmUgeQorICAgICAgICAgICAgW1stMS4wLCAtMS4w
LCAwLjAsIDIuMF0sIFsxLjAsIDEuMCwgMS4wLCAwLjBdXSwgLy8gcG9zaXRpdmUgeQorICAgICAg
ICAgICAgW1stMS4wLCAtMS4wLCAtMS4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXV0sIC8v
IG5lZ2F0aXZlIHoKKyAgICAgICAgICAgIFtbMC4wLCAwLjAsIDAuMCwgMi4wXSwgWzEuMCwgMS4w
LCAxLjAsIDAuMF1dXTsgLy8gcG9zaXRpdmUgegorCisgICAgICAgIGZvciAodmFyIGZhY2UgaW4g
dGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAw
OyBsZXZlbE5keCA8IG51bUxldmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgIHRo
aXMubV9ncmFkaWVudFRleC5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1
YmVGYWNlW2ZhY2VdLCBsZXZlbE5keCk7CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwu
ZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHModGhpcy5tX2dyYWRpZW50VGV4LmdldFJlZlRleHR1
cmUoKS5nZXRMZXZlbEZhY2UobGV2ZWxOZHgsIHRjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZV0pLCBk
ZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseShncmFkaWVudHNbdGN1VGV4dHVyZS5DdWJlRmFjZVtm
YWNlXV1bMF0sIGNTY2FsZSksIGNCaWFzKSwgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkoZ3Jh
ZGllbnRzW3RjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZV1dWzFdLCBjU2NhbGUpLCBjQmlhcykpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBzZWNvbmQgd2l0aCBn
cmlkIHRleHR1cmUuCisgICAgICAgIGZvciAodmFyIGZhY2UgaW4gdGN1VGV4dHVyZS5DdWJlRmFj
ZSkgeworICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBsZXZlbE5keCA8IG51bUxl
dmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgICAgIHZhciBzdGVwID0gMHgwMGZmZmZm
ZiAvIChudW1MZXZlbHMgKiBPYmplY3Qua2V5cyh0Y3VUZXh0dXJlLkN1YmVGYWNlKS5sZW5ndGgp
OworICAgICAgICAgICAgICAgIHZhciByZ2IgPSBzdGVwICogbGV2ZWxOZHggKiBmYWNlOworICAg
ICAgICAgICAgICAgIHZhciBjb2xvckEgPSAweGZmMDAwMDAwIHwgcmdiOworICAgICAgICAgICAg
ICAgIHZhciBjb2xvckIgPSAweGZmMDAwMDAwIHwgfnJnYjsKKworICAgICAgICAgICAgICAgIHRo
aXMubV9ncmlkVGV4LmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVsKHRjdVRleHR1cmUuQ3ViZUZh
Y2VbZmFjZV0sIGxldmVsTmR4KTsKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxs
V2l0aEdyaWQodGhpcy5tX2dyaWRUZXguZ2V0UmVmVGV4dHVyZSgpLmdldExldmVsRmFjZShsZXZl
bE5keCwgdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXSksIDQsIGRlTWF0aC5hZGQoZGVNYXRoLm11
bHRpcGx5KHRjdVJHQkEubmV3UkdCQUZyb21WYWx1ZShjb2xvckEpLnRvVmVjKCksIGNTY2FsZSks
IGNCaWFzKSwgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkodGN1UkdCQS5uZXdSR0JBRnJvbVZh
bHVlKGNvbG9yQikudG9WZWMoKSwgY1NjYWxlKSwgY0JpYXMpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFVwbG9hZC4KKyAgICAgICAgdGhpcy5tX2dyYWRpZW50VGV4
LnVwbG9hZCgpOworICAgICAgICB0aGlzLm1fZ3JpZFRleC51cGxvYWQoKTsKKworICAgICAgICB2
YXIgcmVmSW5SYW5nZVVwcGVyID0gKHRoaXMubV9jb21wYXJlRnVuYyA9PSBnbC5FUVVBTCB8fCB0
aGlzLm1fY29tcGFyZUZ1bmMgPT0gZ2wuTk9URVFVQUwpID8gMS4wIDogMC41OworICAgICAgICB2
YXIgcmVmSW5SYW5nZUxvd2VyID0gKHRoaXMubV9jb21wYXJlRnVuYyA9PSBnbC5FUVVBTCB8fCB0
aGlzLm1fY29tcGFyZUZ1bmMgPT0gZ2wuTk9URVFVQUwpID8gMC4wIDogMC41OworICAgICAgICB2
YXIgcmVmT3V0T2ZCb3VuZHNVcHBlciA9IDEuMTsKKyAgICAgICAgdmFyIHJlZk91dE9mQm91bmRz
TG93ZXIgPSAtMC4xOworICAgICAgICB2YXIgc2luZ2xlU2FtcGxlID0gbmV3IHJyTXVsdGlzYW1w
bGVQaXhlbEJ1ZmZlckFjY2Vzcy5NdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzKCkuZ2V0TnVt
U2FtcGxlcygpID09IDA7CisgICAgICAgIC8vdmFyIHNpbmdsZVNhbXBsZSA9IHRoaXMubV9jb250
ZXh0LmdldFJlbmRlclRhcmdldCgpLmdldE51bVNhbXBsZXMoKSA9PSAwOworCisgICAgICAgIGlm
IChzaW5nbGVTYW1wbGUpCisgICAgICAgICAgICB0aGlzLm1fY2FzZXMucHVzaChuZXcgZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5GaWx0ZXJDYXNlKHRoaXMubV9ncmFkaWVudFRleCwgcmVmSW5SYW5n
ZVVwcGVyLCBbLTEuMjUsIC0xLjJdLCBbMS4yLCAxLjI1XSkpOyAvLyBtaW5pZmljYXRpb24KKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2gobmV3IGVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMuRmlsdGVyQ2FzZSh0aGlzLm1fZ3JhZGllbnRUZXgsIHJlZkluUmFuZ2VVcHBl
ciwgWy0xLjE5LCAtMS4zXSwgWzEuMSwgMS4zNV0pKTsgLy8gbWluaWZpY2F0aW9uIC0gdy8gdHVu
ZWQgY29vcmRpbmF0ZXMgdG8gYXZvaWQgaGl0dGluZyB0cmlhbmdsZSBlZGdlcworCisgICAgICAg
IHRoaXMubV9jYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRlckNhc2Uo
dGhpcy5tX2dyYWRpZW50VGV4LCByZWZJblJhbmdlTG93ZXIsIFswLjgsIDAuOF0sIFsxLjI1LCAx
LjIwXSkpOyAvLyBtYWduaWZpY2F0aW9uCisgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKG5ldyBl
czNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRlckNhc2UodGhpcy5tX2dyaWRUZXgsIHJlZkluUmFu
Z2VVcHBlciwgWy0xLjE5LCAtMS4zXSwgWzEuMSwgMS4zNV0pKTsgLy8gbWluaWZpY2F0aW9uCisg
ICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRl
ckNhc2UodGhpcy5tX2dyaWRUZXgsIHJlZkluUmFuZ2VMb3dlciwgWy0xLjIsIC0xLjFdLCBbLTAu
OCwgLTAuOF0pKTsgLy8gbWFnbmlmaWNhdGlvbgorICAgICAgICB0aGlzLm1fY2FzZXMucHVzaChu
ZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5GaWx0ZXJDYXNlKHRoaXMubV9ncmlkVGV4LCByZWZP
dXRPZkJvdW5kc1VwcGVyLCBbLTAuNjEsIC0wLjFdLCBbMC45LCAxLjE4XSkpOyAvLyByZWZlcmVu
Y2UgdmFsdWUgY2xhbXAsIHVwcGVyCisKKyAgICAgICAgaWYgKHNpbmdsZVNhbXBsZSkKKyAgICAg
ICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRl
ckNhc2UodGhpcy5tX2dyaWRUZXgsIHJlZk91dE9mQm91bmRzTG93ZXIsIFstMC43NSwgMS4wXSwg
WzAuMDUsIDAuNzVdKSk7IC8vIHJlZmVyZW5jZSB2YWx1ZSBjbGFtcCwgbG93ZXIKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1c2gobmV3IGVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMuRmlsdGVyQ2FzZSh0aGlzLm1fZ3JpZFRleCwgcmVmT3V0T2ZCb3VuZHNMb3dlciwgWy0w
Ljc1LCAxLjBdLCBbMC4yNSwgMC43NV0pKTsgLy8gcmVmZXJlbmNlIHZhbHVlIGNsYW1wLCBsb3dl
cgorCisgICAgICAgIHRoaXMubV9jYXNlTmR4ID0gMDsKKyAgICB9OworCisgICAgZXMzZlRleHR1
cmVTaGFkb3dUZXN0cy5UZXh0dXJlQ3ViZVNoYWRvd0Nhc2UucHJvdG90eXBlLml0ZXJhdGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHZpZXdwb3J0U2l6ZSA9IDI4OworICAgICAgICB2YXIg
dmlld3BvcnQgPSBuZXcgZ2xzVGV4dHVyZVRlc3RVdGlsLlJhbmRvbVZpZXdwb3J0KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKSwgdmlld3BvcnRTaXplLCB2aWV3cG9ydFNpemUsIGRl
U3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpIF4gZGVNYXRoLmRlTWF0aEhhc2go
dGhpcy5tX2Nhc2VOZHgpKTsKKyAgICAgICAgdmFyIGN1ckNhc2UgPSB0aGlzLm1fY2FzZXNbdGhp
cy5tX2Nhc2VOZHhdOworICAgICAgICB2YXIgc2FtcGxlUGFyYW1zID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXMoZ2xzVGV4dHVyZVRlc3RVdGlsLnRleHR1cmVUeXBlLlRF
WFRVUkVUWVBFX0NVQkUpOworCisgICAgICAgIGlmICh2aWV3cG9ydC53aWR0aCA8IHZpZXdwb3J0
U2l6ZSB8fCB2aWV3cG9ydC5oZWlnaHQgPCB2aWV3cG9ydFNpemUpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ1RvbyBzbWFsbCByZW5kZXIgdGFyZ2V0Jyk7CisKKyAgICAgICAgLy8gU2V0
dXAgdGV4dHVyZQorICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCBj
dXJDYXNlLnRleHR1cmUuZ2V0R0xUZXh0dXJlKCkpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5tX21pbkZp
bHRlcik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wu
VEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLm1fbWFnRmlsdGVyKTsKKyAgICAgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX1dSQVBfUywgdGhpcy5tX3dy
YXBTKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5U
RVhUVVJFX1dSQVBfVCwgdGhpcy5tX3dyYXBUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFX0NVQkVfTUFQLCBnbC5URVhUVVJFX0NPTVBBUkVfTU9ERSwgZ2wuQ09NUEFSRV9S
RUZfVE9fVEVYVFVSRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJF
X01BUCwgZ2wuVEVYVFVSRV9DT01QQVJFX0ZVTkMsIHRoaXMubV9jb21wYXJlRnVuYyk7CisKKyAg
ICAgICAgLy8gT3RoZXIgc3RhdGUKKyAgICAgICAgZ2wudmlld3BvcnQodmlld3BvcnQueCwgdmll
d3BvcnQueSwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7CisKKyAgICAgICAgLy8g
UGFyYW1zIGZvciByZWZlcmVuY2UgY29tcHV0YXRpb24uCisgICAgICAgIHNhbXBsZVBhcmFtcy5z
YW1wbGVyID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xTYW1wbGVyKGdsLkNMQU1QX1RPX0VER0UsIGds
LkNMQU1QX1RPX0VER0UsIGdsLkNMQU1QX1RPX0VER0UsIHRoaXMubV9taW5GaWx0ZXIsIHRoaXMu
bV9tYWdGaWx0ZXIpOworICAgICAgICBzYW1wbGVQYXJhbXMuc2FtcGxlci5zZWFtbGVzc0N1YmVN
YXAgPSB0cnVlOworICAgICAgICBzYW1wbGVQYXJhbXMuc2FtcGxlci5jb21wYXJlID0gZ2x1VGV4
dHVyZVV0aWwubWFwR0xDb21wYXJlRnVuYyh0aGlzLm1fY29tcGFyZUZ1bmMpOworICAgICAgICBz
YW1wbGVQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUu
U0FNUExFUlRZUEVfU0hBRE9XOworICAgICAgICBzYW1wbGVQYXJhbXMubG9kTW9kZSA9IGdsc1Rl
eHR1cmVUZXN0VXRpbC5sb2RNb2RlLkVYQUNUOworICAgICAgICBzYW1wbGVQYXJhbXMucmVmID0g
Y3VyQ2FzZS5yZWY7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoCisgICAgICAgICAg
ICAnQ29tcGFyZSByZWZlcmVuY2UgdmFsdWUgPSAnICsgc2FtcGxlUGFyYW1zLnJlZiArICdcbicg
KworICAgICAgICAgICAgJ0Nvb3JkaW5hdGVzOiAnICsgY3VyQ2FzZS5taW5Db29yZCArICcgLT4g
JyArIGN1ckNhc2UubWF4Q29vcmQpOworCisgICAgICAgIGZvciAodmFyIGZhY2VOZHggaW4gdGN1
VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1
YmVGYWNlW2ZhY2VOZHhdOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyB0Y3VTdXJmYWNl
LlN1cmZhY2Uodmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7CisgICAgICAgICAgICB2
YXIgdGV4Q29vcmQgPSBbXTsKKworICAgICAgICAgICAgdGV4Q29vcmQgPSBnbHNUZXh0dXJlVGVz
dFV0aWwuY29tcHV0ZVF1YWRUZXhDb29yZEN1YmVGYWNlKGZhY2UsIGN1ckNhc2UubWluQ29vcmQs
IGN1ckNhc2UubWF4Q29vcmQpOworCisgICAgICAgICAgICB0aGlzLm1fcmVuZGVyZXIucmVuZGVy
UXVhZCgwLCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zKTsKKworICAgICAgICAgICAgcmVzdWx0LnJl
YWRWaWV3cG9ydChnbCwgdmlld3BvcnQpOworCisgICAgICAgICAgICB2YXIgcGl4ZWxGb3JtYXQg
PSBuZXcgdGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXQoOCwgOCwgOCwgOCk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvZFByZWNpc2lvbn0gKi8gdmFyIGxv
ZFByZWNpc2lvbiA9IG5ldyB0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb24oMTAsIDUp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhDb21wYXJlVmVyaWZpZXIuVGV4Q29tcGFy
ZVByZWNpc2lvbn0gKi8gdmFyIHRleENvbXBhcmVQcmVjaXNpb24gPSBuZXcgdGN1VGV4Q29tcGFy
ZVZlcmlmaWVyLlRleENvbXBhcmVQcmVjaXNpb24oCisgICAgICAgICAgICAgICAgWzEwLCAxMCwg
MTBdLAorICAgICAgICAgICAgICAgIFs2LCA2LCAwXSwKKyAgICAgICAgICAgICAgICA1LAorICAg
ICAgICAgICAgICAgIDE2LAorICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0LnJlZEJpdHMgLSAx
CisgICAgICAgICAgICApOworCisgICAgICAgICAgICB2YXIgaXNIaWdoUXVhbGl0eSA9IGVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMudmVyaWZ5VGV4Q29tcGFyZVJlc3VsdCh0Y3VUZXh0dXJlLlRleHR1
cmVDdWJlLCByZXN1bHQuZ2V0QWNjZXNzKCksIGN1ckNhc2UudGV4dHVyZS5nZXRSZWZUZXh0dXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIHRleENvbXBhcmVQcmVjaXNpb24sIGxvZFByZWNpc2lv
biwgcGl4ZWxGb3JtYXQpOworCisgICAgICAgICAgICBpZiAoIWlzSGlnaFF1YWxpdHkpIHsKKyAg
ICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnV2FybmluZzogVmVyaWZpY2F0aW9u
IGFzc3VtaW5nIGhpZ2gtcXVhbGl0eSBQQ0YgZmlsdGVyaW5nIGZhaWxlZC4nKTsKKworICAgICAg
ICAgICAgICAgIGxvZFByZWNpc2lvbi5sb2RCaXRzID0gNDsKKyAgICAgICAgICAgICAgICB0ZXhD
b21wYXJlUHJlY2lzaW9uLnV2d0JpdHMgPSBbNCwgNCwgMF07CisgICAgICAgICAgICAgICAgdGV4
Q29tcGFyZVByZWNpc2lvbi5wY2ZCaXRzID0gMDsKKworICAgICAgICAgICAgICAgIHZhciBpc09r
ID0gZXMzZlRleHR1cmVTaGFkb3dUZXN0cy52ZXJpZnlUZXhDb21wYXJlUmVzdWx0KHRjdVRleHR1
cmUuVGV4dHVyZUN1YmUsIHJlc3VsdC5nZXRBY2Nlc3MoKSwgY3VyQ2FzZS50ZXh0dXJlLmdldFJl
ZlRleHR1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
Q29vcmQsIHNhbXBsZVBhcmFtcywgdGV4Q29tcGFyZVByZWNpc2lvbiwgbG9kUHJlY2lzaW9uLCBw
aXhlbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgaWYgKCFpc09rKSB7CisgICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogVmVyaWZpY2F0aW9uIGFnYWluc3Qg
bG93IHByZWNpc2lvbiByZXF1aXJlbWVudHMgZmFpbGVkLCBmYWlsaW5nIHRlc3QgY2FzZS4nKTsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ltYWdlIHZlcmlmaWNhdGlv
biBmYWlsZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdMb3ctcXVhbGl0eSByZXN1bHQnLCB0cnVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
T3B0aW9ucygnSGlnaC1xdWFsaXR5IHJlc3VsdCcsIHRydWUpOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5tX2Nhc2VOZHggKz0gMTsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9jYXNlTmR4IDwg
dGhpcy5tX2Nhc2VzLmxlbmd0aCA/IHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuQ09OVElOVUUg
OiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIFRlc3R1cmUyREFycmF5U2hhZG93Q2FzZQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IG1pbkZpbHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYWdGaWx0ZXIKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gd3JhcFMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MYXll
cnMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29tcGFyZUZ1bmMKKyAgICAgKi8KKyAgICBlczNm
VGV4dHVyZVNoYWRvd1Rlc3RzLlRleHR1cmUyREFycmF5U2hhZG93Q2FzZSA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2MsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFwUywgd3JhcFQsIGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgbnVtTGF5ZXJzLCBjb21wYXJlRnVuYykgeworICAgICAgICB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX21pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubV9tYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fd3JhcFMgPSB3cmFwUzsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubV93cmFwVCA9IHdyYXBUOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMubV93aWR0aCA9IHdpZHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX2hlaWdodCA9IGhlaWdodDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMubV9udW1MYXllcnMgPSBudW1MYXllcnM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fY29tcGFyZUZ1bmMgPSBjb21wYXJlRnVuYzsKKyAgICAgICAgLyoqIEB0eXBl
IHs/Z2x1VGV4dHVyZS5UZXh0dXJlMkRBcnJheX0gKi8gdGhpcy5tX2dyYWRpZW50VGV4ID0gbnVs
bDsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2x1VGV4dHVyZS5UZXh0dXJlMkRBcnJheX0gKi8gdGhp
cy5tX2dyaWRUZXggPSBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRp
bC5UZXh0dXJlUmVuZGVyZXJ9ICovIHRoaXMubV9yZW5kZXJlciA9IG5ldyBnbHNUZXh0dXJlVGVz
dFV0aWwuVGV4dHVyZVJlbmRlcmVyKGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMudmVyc2lvbiwgZ2x1
U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRlckNhc2U+fSAqLyB0aGlzLm1fY2Fz
ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9jYXNlTmR4ID0g
MDsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5UZXh0dXJlMkRBcnJheVNo
YWRvd0Nhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworICAgIGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuVGV4dHVyZTJEQXJyYXlTaGFk
b3dDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuVGV4
dHVyZTJEQXJyYXlTaGFkb3dDYXNlOworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLwor
ICAgIGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuVGV4dHVyZTJEQXJyYXlTaGFkb3dDYXNlLnByb3Rv
dHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5U
ZXh0dXJlRm9ybWF0fSAqLyB2YXIgdGV4Rm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5h
bEZvcm1hdCh0aGlzLm1fZm9ybWF0KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlVXRp
bC5UZXh0dXJlRm9ybWF0SW5mb30gKi8gdmFyIGZtdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRU
ZXh0dXJlRm9ybWF0SW5mbyh0ZXhGbXQpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59Ki8gdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdChmbXRJbmZvLnZhbHVlTWF4LCBmbXRJ
bmZvLnZhbHVlTWluKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSovIHZhciBj
QmlhcyA9IGZtdEluZm8udmFsdWVNaW47CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZh
ciBudW1MZXZlbHMgPSBkZU1hdGgubG9nVG9GbG9vcihNYXRoLm1heCh0aGlzLm1fd2lkdGgsIHRo
aXMubV9oZWlnaHQpKSArIDE7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRleHR1cmVzLgorICAgICAg
ICB0aGlzLm1fZ3JhZGllbnRUZXggPSBnbHVUZXh0dXJlLnRleHR1cmUyREFycmF5RnJvbUludGVy
bmFsRm9ybWF0KGdsLCB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQs
IHRoaXMubV9udW1MYXllcnMpOworICAgICAgICB0aGlzLm1fZ3JpZFRleCA9IGdsdVRleHR1cmUu
dGV4dHVyZTJEQXJyYXlGcm9tSW50ZXJuYWxGb3JtYXQoZ2wsIHRoaXMubV9mb3JtYXQsIHRoaXMu
bV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5tX251bUxheWVycyk7CisKKyAgICAgICAgLy8g
RmlsbCBmaXJzdCBncmFkaWVudCB0ZXh0dXJlLgorICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9
IDA7IGxldmVsTmR4IDwgbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59Ki8gdmFyIGdNaW4gPSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0
aXBseShbLTAuNSwgLTAuNSwgLTAuNSwgMi4wXSwgY1NjYWxlKSwgY0JpYXMpOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSovIHZhciBnTWF4ID0gZGVNYXRoLmFkZChkZU1h
dGgubXVsdGlwbHkoWzEuMCwgMS4wLCAxLjAsIDAuMF0sIGNTY2FsZSksIGNCaWFzKTsKKworICAg
ICAgICAgICAgdGhpcy5tX2dyYWRpZW50VGV4LmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVsKGxl
dmVsTmR4KTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3Jh
ZGllbnRzKAorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzc30gKi8gKHRoaXMubV9ncmFkaWVudFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwo
bGV2ZWxOZHgpKSwgZ01pbiwgZ01heCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaWxsIHNl
Y29uZCB3aXRoIGdyaWQgdGV4dHVyZS4KKyAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBs
ZXZlbE5keCA8IG51bUxldmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9Ki8gdmFyIHN0ZXAgPSBNYXRoLmZsb29yKDB4MDBmZmZmZmYgLyBudW1MZXZlbHMp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHJnYiA9IHN0ZXAgKiBsZXZl
bE5keDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciBjb2xvckEgPSBkZU1h
dGguYmluYXJ5T3AoMHhmZjAwMDAwMCwgcmdiLCBkZU1hdGguQmluYXJ5T3AuT1IpOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIGNvbG9yQiA9IGRlTWF0aC5iaW5hcnlPcCgw
eGZmMDAwMDAwLCBkZU1hdGguYmluYXJ5Tm90KHJnYiksIGRlTWF0aC5CaW5hcnlPcC5PUik7CisK
KyAgICAgICAgICAgIHRoaXMubV9ncmlkVGV4LmdldFJlZlRleHR1cmUoKS5hbGxvY0xldmVsKGxl
dmVsTmR4KTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9ICovICh0
aGlzLm1fZ3JpZFRleC5nZXRSZWZUZXh0dXJlKCkuZ2V0TGV2ZWwobGV2ZWxOZHgpKSwgNCwKKyAg
ICAgICAgICAgICAgICBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseSh0Y3VSR0JBLm5ld1JHQkFG
cm9tVmFsdWUoY29sb3JBKS50b1ZlYygpLCBjU2NhbGUpLCBjQmlhcyksCisgICAgICAgICAgICAg
ICAgZGVNYXRoLmFkZChkZU1hdGgubXVsdGlwbHkodGN1UkdCQS5uZXdSR0JBRnJvbVZhbHVlKGNv
bG9yQikudG9WZWMoKSwgY1NjYWxlKSwgY0JpYXMpCisgICAgICAgICAgICApOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVXBsb2FkLgorICAgICAgICB0aGlzLm1fZ3JhZGllbnRUZXgudXBsb2Fk
KCk7CisgICAgICAgIHRoaXMubV9ncmlkVGV4LnVwbG9hZCgpOworCisgICAgICAgIC8vIENvbXB1
dGUgY2FzZXMuCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmSW5SYW5nZVVw
cGVyID0gKHRoaXMubV9jb21wYXJlRnVuYyA9PSBnbC5FUVVBTCB8fCB0aGlzLm1fY29tcGFyZUZ1
bmMgPT0gZ2wuTk9URVFVQUwpID8gMS4wIDogMC41OworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHJlZkluUmFuZ2VMb3dlciA9ICh0aGlzLm1fY29tcGFyZUZ1bmMgPT0gZ2wuRVFV
QUwgfHwgdGhpcy5tX2NvbXBhcmVGdW5jID09IGdsLk5PVEVRVUFMKSA/IDAuMCA6IDAuNTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZPdXRPZkJvdW5kc1VwcGVyID0gMS4x
OyAvLyAhPCBsb29rdXAgZnVuY3Rpb24gc2hvdWxkIGNsYW1wIHZhbHVlcyB0byBbMCwgMV0gcmFu
Z2UKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZPdXRPZkJvdW5kc0xvd2Vy
ID0gLTAuMTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PHt0ZXhOZHg6IG51bWJlciwgcmVm
OiBudW1iZXIsIGxvZFg6IG51bWJlciwgbG9kWTogbnVtYmVyLCBvWDogbnVtYmVyLCBvWTogbnVt
YmVyfT59ICovCisgICAgICAgIHZhciBjYXNlcyA9IFt7IHRleE5keDogMCwgcmVmOiByZWZJblJh
bmdlVXBwZXIsIGxvZFg6IDEuNiwgbG9kWTogMi45LCBvWDogLTEuMCwgb1k6IC0yLjcgfSx7IHRl
eE5keDogMCwgcmVmOiByZWZJblJhbmdlTG93ZXIsIGxvZFg6IC0yLjAsIGxvZFk6IC0xLjM1LCBv
WDogLTAuMiwgb1k6IDAuNyB9LHsgdGV4TmR4OiAxLCByZWY6IHJlZkluUmFuZ2VVcHBlciwgbG9k
WDogMC4xNCwgbG9kWTogMC4yNzUsIG9YOiAtMS41LCBvWTogLTEuMSB9LHsgdGV4TmR4OiAxLCBy
ZWY6IHJlZkluUmFuZ2VMb3dlciwgbG9kWDogLTAuOTIsIGxvZFk6IC0yLjY0LCBvWDogMC40LCBv
WTogLTAuMSB9LHsgdGV4TmR4OiAxLCByZWY6IHJlZk91dE9mQm91bmRzVXBwZXIsIGxvZFg6IC0w
LjQ5LCBsb2RZOiAtMC4yMiwgb1g6IDAuNDUsIG9ZOiAwLjk3IH0seyB0ZXhOZHg6IDEsIHJlZjog
cmVmT3V0T2ZCb3VuZHNMb3dlciwgbG9kWDogLTAuODUsIGxvZFk6IDAuNzUsIG9YOiAwLjI1LCBv
WTogMC42MSB9CisgICAgICAgIF07CisKKyAgICAgICAgdmFyIHZpZXdwb3J0VyA9IE1hdGgubWlu
KFZJRVdQT1JUX1dJRFRILCBnbC5jYW52YXMud2lkdGgpOworICAgICAgICB2YXIgdmlld3BvcnRI
ID0gTWF0aC5taW4oVklFV1BPUlRfSEVJR0hULCBnbC5jYW52YXMuaGVpZ2h0KTsKKworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1pbkxheWVyID0gLTAuNTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhMYXllciA9IHRoaXMubV9udW1MYXllcnM7CisKKyAg
ICAgICAgZm9yICh2YXIgY2FzZU5keCA9IDA7IGNhc2VOZHggPCBjYXNlcy5sZW5ndGg7IGNhc2VO
ZHgrKykgeworICAgICAgICAgICAgdmFyIHRleCA9IGNhc2VzW2Nhc2VOZHhdLnRleE5keCA+IDAg
PyB0aGlzLm1fZ3JpZFRleCA6IHRoaXMubV9ncmFkaWVudFRleDsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVmID0gY2FzZXNbY2FzZU5keF0ucmVmOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsb2RYID0gY2FzZXNbY2FzZU5keF0ubG9kWDsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9kWSA9IGNhc2VzW2Nhc2VO
ZHhdLmxvZFk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9YID0gY2Fz
ZXNbY2FzZU5keF0ub1g7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9Z
ID0gY2FzZXNbY2FzZU5keF0ub1k7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHNYID0gTWF0aC5leHAobG9kWCAqIE1hdGguTE4yKSAqIHZpZXdwb3J0VyAvIHRleC5nZXRS
ZWZUZXh0dXJlKCkuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgc1kgPSBNYXRoLmV4cChsb2RZICogTWF0aC5MTjIpICogdmlld3BvcnRIIC8gdGV4Lmdl
dFJlZlRleHR1cmUoKS5nZXRIZWlnaHQoKTsKKworICAgICAgICAgICAgdGhpcy5tX2Nhc2VzLnB1
c2gobmV3IGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuRmlsdGVyQ2FzZSh0ZXgsIHJlZiwgW29YLCBv
WSwgbWluTGF5ZXJdLCBbb1ggKyBzWCwgb1kgKyBzWSwgbWF4TGF5ZXJdKSk7CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLm1fY2FzZU5keCA9IDA7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge3RjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5UZXh0dXJlMkRBcnJheVNoYWRvd0Nhc2UucHJvdG90eXBlLml0ZXJh
dGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHZpZXdwb3J0ID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5SYW5kb21WaWV3cG9ydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyks
IFZJRVdQT1JUX1dJRFRILCBWSUVXUE9SVF9IRUlHSFQsIGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0
aGlzLmZ1bGxOYW1lKCkpIF4gZGVNYXRoLmRlTWF0aEhhc2godGhpcy5tX2Nhc2VOZHgpKTsKKyAg
ICAgICAgdmFyIGN1ckNhc2UgPSB0aGlzLm1fY2FzZXNbdGhpcy5tX2Nhc2VOZHhdOworICAgICAg
ICB2YXIgc2FtcGxlUGFyYW1zID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJh
bXMoZ2xzVGV4dHVyZVRlc3RVdGlsLnRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJEX0FSUkFZKTsK
KyAgICAgICAgdmFyIHJlbmRlcmVkID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh2aWV3cG9ydC53
aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICAgICAgdmFyIHRleENvb3JkID0gW107CisKKyAg
ICAgICAgdGV4Q29vcmQgPSBbY3VyQ2FzZS5taW5Db29yZFswXSwgY3VyQ2FzZS5taW5Db29yZFsx
XSwgY3VyQ2FzZS5taW5Db29yZFsyXSwKKyAgICAgICAgICAgIGN1ckNhc2UubWluQ29vcmRbMF0s
IGN1ckNhc2UubWF4Q29vcmRbMV0sIChjdXJDYXNlLm1pbkNvb3JkWzJdICsgY3VyQ2FzZS5tYXhD
b29yZFsyXSkgLyAyLjAsCisgICAgICAgICAgICBjdXJDYXNlLm1heENvb3JkWzBdLCBjdXJDYXNl
Lm1pbkNvb3JkWzFdLCAoY3VyQ2FzZS5taW5Db29yZFsyXSArIGN1ckNhc2UubWF4Q29vcmRbMl0p
IC8gMi4wLAorICAgICAgICAgICAgY3VyQ2FzZS5tYXhDb29yZFswXSwgY3VyQ2FzZS5tYXhDb29y
ZFsxXSwgY3VyQ2FzZS5tYXhDb29yZFsyXV07CisKKyAgICAgICAgaWYgKHZpZXdwb3J0LndpZHRo
IDwgTUlOX1ZJRVdQT1JUX1dJRFRIIHx8IHZpZXdwb3J0LmhlaWdodCA8IE1JTl9WSUVXUE9SVF9I
RUlHSFQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBzbWFsbCByZW5kZXIgdGFy
Z2V0Jyk7CisKKyAgICAgICAgc2FtcGxlUGFyYW1zLnNhbXBsZXIgPSBnbHVUZXh0dXJlVXRpbC5t
YXBHTFNhbXBsZXJXcmFwU1QodGhpcy5tX3dyYXBTLCB0aGlzLm1fd3JhcFQsIHRoaXMubV9taW5G
aWx0ZXIsIHRoaXMubV9tYWdGaWx0ZXIpOworICAgICAgICBzYW1wbGVQYXJhbXMuc2FtcGxlci5j
b21wYXJlID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xDb21wYXJlRnVuYyh0aGlzLm1fY29tcGFyZUZ1
bmMpOworICAgICAgICBzYW1wbGVQYXJhbXMuc2FtcGxlclR5cGUgPSBnbHNUZXh0dXJlVGVzdFV0
aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfU0hBRE9XOworICAgICAgICBzYW1wbGVQYXJhbXMu
bG9kTW9kZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5sb2RNb2RlLkVYQUNUOworICAgICAgICBzYW1w
bGVQYXJhbXMucmVmID0gY3VyQ2FzZS5yZWY7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoCisgICAgICAgICAgICAnQ29tcGFyZSByZWZlcmVuY2UgdmFsdWUgPSAnICsgc2FtcGxlUGFy
YW1zLnJlZiArICdcbicgKworICAgICAgICAgICAgJ1RleHR1cmUgQ29vcmRpbmF0ZXM6ICcgKyBj
dXJDYXNlLm1pbkNvb3JkICsgJyAtPiAnICsgY3VyQ2FzZS5tYXhDb29yZAorICAgICAgICApOwor
CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIGN1ckNhc2UudGV4
dHVyZS5nZXRHTFRleHR1cmUoKSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRF9BUlJBWSwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0aGlzLm1fbWluRmlsdGVyKTsKKyAg
ICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhUVVJFX01B
R19GSUxURVIsIHRoaXMubV9tYWdGaWx0ZXIpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfV1JBUF9TLCB0aGlzLm1fd3JhcFMpOworICAg
ICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfV1JB
UF9ULCB0aGlzLm1fd3JhcFQpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkRfQVJSQVksIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFLCBnbC5DT01QQVJFX1JFRl9UT19URVhU
VVJFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5U
RVhUVVJFX0NPTVBBUkVfRlVOQywgdGhpcy5tX2NvbXBhcmVGdW5jKTsKKworICAgICAgICBnbC52
aWV3cG9ydCh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQu
aGVpZ2h0KTsKKyAgICAgICAgdGhpcy5tX3JlbmRlcmVyLnJlbmRlclF1YWQoMCwgdGV4Q29vcmQs
IHNhbXBsZVBhcmFtcyk7CisgICAgICAgIHJlbmRlcmVkLnJlYWRWaWV3cG9ydChnbCwgdmlld3Bv
cnQpOworCisgICAgICAgIHZhciBwaXhlbEZvcm1hdCA9IG5ldyB0Y3VQaXhlbEZvcm1hdC5QaXhl
bEZvcm1hdCg4LCA4LCA4LCA4KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJp
Zmllci5Mb2RQcmVjaXNpb259ICovIHZhciBsb2RQcmVjaXNpb24gPSBuZXcgdGN1VGV4TG9va3Vw
VmVyaWZpZXIuTG9kUHJlY2lzaW9uKDE4LCA2KTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXhD
b21wYXJlVmVyaWZpZXIuVGV4Q29tcGFyZVByZWNpc2lvbn0gKi8gdmFyIHRleENvbXBhcmVQcmVj
aXNpb24gPSBuZXcgdGN1VGV4Q29tcGFyZVZlcmlmaWVyLlRleENvbXBhcmVQcmVjaXNpb24oCisg
ICAgICAgICAgICBbMjAsIDIwLCAyMF0sCisgICAgICAgICAgICBbNywgNywgN10sCisgICAgICAg
ICAgICA1LAorICAgICAgICAgICAgMTYsCisgICAgICAgICAgICBwaXhlbEZvcm1hdC5yZWRCaXRz
IC0gMQorICAgICAgICApOworCisgICAgICAgIHZhciBpc0hpZ2hRdWFsaXR5ID0gZXMzZlRleHR1
cmVTaGFkb3dUZXN0cy52ZXJpZnlUZXhDb21wYXJlUmVzdWx0KHRjdVRleHR1cmUuVGV4dHVyZTJE
QXJyYXksIHJlbmRlcmVkLmdldEFjY2VzcygpLCBjdXJDYXNlLnRleHR1cmUuZ2V0UmVmVGV4dHVy
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIHRleENvbXBhcmVQcmVjaXNpb24sIGxvZFBy
ZWNpc2lvbiwgcGl4ZWxGb3JtYXQpOworCisgICAgICAgIGlmICghaXNIaWdoUXVhbGl0eSkgewor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1dhcm5pbmc6IFZlcmlmaWNhdGlvbiBh
c3N1bWluZyBoaWdoLXF1YWxpdHkgUENGIGZpbHRlcmluZyBmYWlsZWQnKTsKKworICAgICAgICAg
ICAgbG9kUHJlY2lzaW9uLmxvZEJpdHMgPSA0OworICAgICAgICAgICAgdGV4Q29tcGFyZVByZWNp
c2lvbi51dndCaXRzID0gWzQsIDQsIDRdOworICAgICAgICAgICAgdGV4Q29tcGFyZVByZWNpc2lv
bi5wY2ZCaXRzID0gMDsKKworICAgICAgICAgICAgdmFyIGlzT2sgPSBlczNmVGV4dHVyZVNoYWRv
d1Rlc3RzLnZlcmlmeVRleENvbXBhcmVSZXN1bHQodGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheSwg
cmVuZGVyZWQuZ2V0QWNjZXNzKCksIGN1ckNhc2UudGV4dHVyZS5nZXRSZWZUZXh0dXJlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmQsIHNhbXBsZVBhcmFt
cywgdGV4Q29tcGFyZVByZWNpc2lvbiwgbG9kUHJlY2lzaW9uLCBwaXhlbEZvcm1hdCk7CisKKyAg
ICAgICAgICAgIGlmICghaXNPaykgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdFUlJPUjogVmVyaWZpY2F0aW9uIGFnYWluc3QgbG93IHByZWNpc2lvbiByZXF1aXJlbWVu
dHMgZmFpbGVkLCBmYWlsaW5nIHRlc3QgY2FzZS4nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkT3B0aW9ucygnSW1hZ2UgdmVyaWZpY2F0aW9uIGZhaWxlZCcsIGZhbHNlKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCdMb3ctcXVhbGl0
eSByZXN1bHQnLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
T3B0aW9ucygnSGlnaC1xdWFsaXR5IHJlc3VsdCcsIHRydWUpOworCisgICAgICAgIHRoaXMubV9j
YXNlTmR4ICs9IDE7CisgICAgICAgIHJldHVybiB0aGlzLm1fY2FzZU5keCA8IHRoaXMubV9jYXNl
cy5sZW5ndGggPyB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LkNPTlRJTlVFIDogdGN1VGVzdENh
c2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVGV4
dHVyZVNoYWRvd1Rlc3RzLkZvcm1hdD59ICovIHZhciBmb3JtYXRzID0gW107CisgICAgICAgIGZv
cm1hdHMucHVzaChuZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5Gb3JtYXQoJ2RlcHRoX2NvbXBv
bmVudDE2JywgZ2wuREVQVEhfQ09NUE9ORU5UMTYpKTsKKyAgICAgICAgZm9ybWF0cy5wdXNoKG5l
dyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZvcm1hdCgnZGVwdGhfY29tcG9uZW50MzJmJywgZ2wu
REVQVEhfQ09NUE9ORU5UMzJGKSk7CisgICAgICAgIGZvcm1hdHMucHVzaChuZXcgZXMzZlRleHR1
cmVTaGFkb3dUZXN0cy5Gb3JtYXQoJ2RlcHRoMjRfc3RlbmNpbDgnLCBnbC5ERVBUSDI0X1NURU5D
SUw4KSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
LkZpbHRlcj59ICovIHZhciBmaWx0ZXJzID0gW107CisgICAgICAgIGZpbHRlcnMucHVzaChuZXcg
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5GaWx0ZXIoJ25lYXJlc3QnLCBnbC5ORUFSRVNULCBnbC5O
RUFSRVNUKSk7CisgICAgICAgIGZpbHRlcnMucHVzaChuZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5GaWx0ZXIoJ2xpbmVhcicsIGdsLkxJTkVBUiwgZ2wuTElORUFSKSk7CisgICAgICAgIGZpbHRl
cnMucHVzaChuZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5GaWx0ZXIoJ25lYXJlc3RfbWlwbWFw
X25lYXJlc3QnLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCBnbC5MSU5FQVIpKTsKKyAgICAg
ICAgZmlsdGVycy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRlcignbGluZWFy
X21pcG1hcF9uZWFyZXN0JywgZ2wuTElORUFSX01JUE1BUF9ORUFSRVNULCBnbC5MSU5FQVIpKTsK
KyAgICAgICAgZmlsdGVycy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZpbHRlcign
bmVhcmVzdF9taXBtYXBfbGluZWFyJywgZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSLCBnbC5MSU5F
QVIpKTsKKyAgICAgICAgZmlsdGVycy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkZp
bHRlcignbGluZWFyX21pcG1hcF9saW5lYXInLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUiwgZ2wu
TElORUFSKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLkNvbXBhcmVGdW5jPn0gKi8gdmFyIGNvbXBhcmVGdW5jcyA9IFtdOworICAgICAgICBjb21w
YXJlRnVuY3MucHVzaChuZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5Db21wYXJlRnVuYygnbGVz
c19vcl9lcXVhbCcsIGdsLkxFUVVBTCkpOworICAgICAgICBjb21wYXJlRnVuY3MucHVzaChuZXcg
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5Db21wYXJlRnVuYygnZ3JlYXRlcl9vcl9lcXVhbCcsIGds
LkdFUVVBTCkpOworICAgICAgICBjb21wYXJlRnVuY3MucHVzaChuZXcgZXMzZlRleHR1cmVTaGFk
b3dUZXN0cy5Db21wYXJlRnVuYygnbGVzcycsIGdsLkxFU1MpKTsKKyAgICAgICAgY29tcGFyZUZ1
bmNzLnB1c2gobmV3IGVzM2ZUZXh0dXJlU2hhZG93VGVzdHMuQ29tcGFyZUZ1bmMoJ2dyZWF0ZXIn
LCBnbC5HUkVBVEVSKSk7CisgICAgICAgIGNvbXBhcmVGdW5jcy5wdXNoKG5ldyBlczNmVGV4dHVy
ZVNoYWRvd1Rlc3RzLkNvbXBhcmVGdW5jKCdlcXVhbCcsIGdsLkVRVUFMKSk7CisgICAgICAgIGNv
bXBhcmVGdW5jcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkNvbXBhcmVGdW5jKCdu
b3RfZXF1YWwnLCBnbC5OT1RFUVVBTCkpOworICAgICAgICBjb21wYXJlRnVuY3MucHVzaChuZXcg
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5Db21wYXJlRnVuYygnYWx3YXlzJywgZ2wuQUxXQVlTKSk7
CisgICAgICAgIGNvbXBhcmVGdW5jcy5wdXNoKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLkNv
bXBhcmVGdW5jKCduZXZlcicsIGdsLk5FVkVSKSk7CisKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1
VGVzdENhc2UucnVubmVyOworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fSAqLyB2YXIgdGVzdEdyb3VwID0gc3RhdGUudGVzdENhc2VzOworCisgICAgICAgIGZvciAodmFy
IGZpbHRlck5keCA9IDA7IGZpbHRlck5keCA8IGZpbHRlcnMubGVuZ3RoOyBmaWx0ZXJOZHgrKykg
eworICAgICAgICAgICAgZm9yICh2YXIgY29tcGFyZU5keCA9IDA7IGNvbXBhcmVOZHggPCBjb21w
YXJlRnVuY3MubGVuZ3RoOyBjb21wYXJlTmR4KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgZmls
dGVyR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KAorICAgICAgICAgICAgICAgICAgICAnMmQu
JyArIGZpbHRlcnNbZmlsdGVyTmR4XS5uYW1lLCAnMkQgdGV4dHVyZSBzaGFkb3cgbG9va3VwIHRl
c3RzJyk7CisgICAgICAgICAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGZpbHRlckdyb3VwKTsK
KworICAgICAgICAgICAgICAgIGZvciAodmFyIGZvcm1hdE5keCA9IDA7IGZvcm1hdE5keCA8IGZv
cm1hdHMubGVuZ3RoOyBmb3JtYXROZHgrKykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG1pbkZpbHRlciA9IGZpbHRlcnNbZmlsdGVyTmR4XS5taW5GaWx0
ZXI7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWFnRmls
dGVyID0gZmlsdGVyc1tmaWx0ZXJOZHhdLm1hZ0ZpbHRlcjsKKyAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmb3JtYXQgPSBmb3JtYXRzW2Zvcm1hdE5keF0uZm9y
bWF0OworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNvbXBh
cmVGdW5jID0gY29tcGFyZUZ1bmNzW2NvbXBhcmVOZHhdLmZ1bmM7CisgICAgICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd3JhcFMgPSBnbC5SRVBFQVQ7CisgICAgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd3JhcFQgPSBnbC5SRVBFQVQ7
CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSAz
MjsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQg
PSA2NDsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBuYW1l
ID0gY29tcGFyZUZ1bmNzW2NvbXBhcmVOZHhdLm5hbWUgKyAnXycgKyBmb3JtYXRzW2Zvcm1hdE5k
eF0ubmFtZTsKKworICAgICAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5UZXh0dXJlMkRTaGFkb3dDYXNlKG5hbWUsICcnLCBtaW5G
aWx0ZXIsIG1hZ0ZpbHRlciwgd3JhcFMsIHdyYXBULCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGNv
bXBhcmVGdW5jKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZm9yIChmaWx0ZXJOZHggPSAwOyBmaWx0ZXJOZHggPCBmaWx0ZXJzLmxlbmd0
aDsgZmlsdGVyTmR4KyspIHsKKyAgICAgICAgICAgIGZvciAoY29tcGFyZU5keCA9IDA7IGNvbXBh
cmVOZHggPCBjb21wYXJlRnVuY3MubGVuZ3RoOyBjb21wYXJlTmR4KyspIHsKKyAgICAgICAgICAg
ICAgICBmaWx0ZXJHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoCisgICAgICAgICAgICAgICAg
ICAgICdjdWJlLicgKyBmaWx0ZXJzW2ZpbHRlck5keF0ubmFtZSwgJ0N1YmUgbWFwIHRleHR1cmUg
c2hhZG93IGxvb2t1cCB0ZXN0cycpOworICAgICAgICAgICAgICAgIHRlc3RHcm91cC5hZGRDaGls
ZChmaWx0ZXJHcm91cCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGZvcm1hdE5keCA9IDA7IGZv
cm1hdE5keCA8IGZvcm1hdHMubGVuZ3RoOyBmb3JtYXROZHgrKykgeworICAgICAgICAgICAgICAg
ICAgICBtaW5GaWx0ZXIgPSBmaWx0ZXJzW2ZpbHRlck5keF0ubWluRmlsdGVyOworICAgICAgICAg
ICAgICAgICAgICBtYWdGaWx0ZXIgPSBmaWx0ZXJzW2ZpbHRlck5keF0ubWFnRmlsdGVyOworICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXRzW2Zvcm1hdE5keF0uZm9ybWF0OworICAg
ICAgICAgICAgICAgICAgICBjb21wYXJlRnVuYyA9IGNvbXBhcmVGdW5jc1tjb21wYXJlTmR4XS5m
dW5jOworICAgICAgICAgICAgICAgICAgICB3cmFwUyA9IGdsLlJFUEVBVDsKKyAgICAgICAgICAg
ICAgICAgICAgd3JhcFQgPSBnbC5SRVBFQVQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBzaXpl
ID0gMzI7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBjb21wYXJlRnVuY3NbY29tcGFyZU5k
eF0ubmFtZSArICdfJyArIGZvcm1hdHNbZm9ybWF0TmR4XS5uYW1lOworCisgICAgICAgICAgICAg
ICAgICAgIGZpbHRlckdyb3VwLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLlRl
eHR1cmVDdWJlU2hhZG93Q2FzZShuYW1lLCAnJywgbWluRmlsdGVyLCBtYWdGaWx0ZXIsIHdyYXBT
LCB3cmFwVCwgZm9ybWF0LCBzaXplLCBjb21wYXJlRnVuYykpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGZpbHRlck5keCA9
IDA7IGZpbHRlck5keCA8IGZpbHRlcnMubGVuZ3RoOyBmaWx0ZXJOZHgrKykgeworICAgICAgICAg
ICAgZm9yICh2YXIgY29tcGFyZU5keCA9IDA7IGNvbXBhcmVOZHggPCBjb21wYXJlRnVuY3MubGVu
Z3RoOyBjb21wYXJlTmR4KyspIHsKKyAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cCA9IHRjdVRl
c3RDYXNlLm5ld1Rlc3QoCisgICAgICAgICAgICAgICAgICAgICcyZF9hcnJheS4nICsgZmlsdGVy
c1tmaWx0ZXJOZHhdLm5hbWUsICcyRCB0ZXh0dXJlIGFycmF5IHNoYWRvdyBsb29rdXAgdGVzdHMn
KTsKKyAgICAgICAgICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoZmlsdGVyR3JvdXApOworCisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgZm9ybWF0TmR4ID0gMDsgZm9ybWF0TmR4IDwgZm9ybWF0
cy5sZW5ndGg7IGZvcm1hdE5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1pbkZpbHRlciA9
IGZpbHRlcnNbZmlsdGVyTmR4XS5taW5GaWx0ZXI7CisgICAgICAgICAgICAgICAgICAgIG1hZ0Zp
bHRlciA9IGZpbHRlcnNbZmlsdGVyTmR4XS5tYWdGaWx0ZXI7CisgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCA9IGZvcm1hdHNbZm9ybWF0TmR4XS5mb3JtYXQ7CisgICAgICAgICAgICAgICAgICAg
IGNvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmNzW2NvbXBhcmVOZHhdLmZ1bmM7CisgICAgICAgICAg
ICAgICAgICAgIHdyYXBTID0gZ2wuUkVQRUFUOworICAgICAgICAgICAgICAgICAgICB3cmFwVCA9
IGdsLlJFUEVBVDsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAzMjsKKyAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0ID0gNjQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBudW1MYXllcnMg
PSA4OworICAgICAgICAgICAgICAgICAgICBuYW1lID0gY29tcGFyZUZ1bmNzW2NvbXBhcmVOZHhd
Lm5hbWUgKyAnXycgKyBmb3JtYXRzW2Zvcm1hdE5keF0ubmFtZTsKKworICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJHcm91cC5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5UZXh0
dXJlMkRBcnJheVNoYWRvd0Nhc2UobmFtZSwgJycsIG1pbkZpbHRlciwgbWFnRmlsdGVyLCB3cmFw
Uywgd3JhcFQsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbnVtTGF5ZXJzLCBjb21wYXJlRnVuYykp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisK
KyAgICBlczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQsIHJhbmdl
KSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgVGVzdCBSb290IHBh
cmFtZXRlcnMKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ3RleHR1cmVfc2hhZG93JzsKKyAgICAg
ICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdUZXh0dXJlIFNoYWRvdyBUZXN0JzsKKyAgICAgICAg
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1l
ID0gdGVzdE5hbWU7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rl
c3QodGVzdE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAg
bmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3Vy
cmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0
aW9uKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9DcmVhdGUgdGVzdCBjYXNlcwor
ICAgICAgICAgICAgZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5pbml0KCk7CisgICAgICAgICAgICBp
ZiAocmFuZ2UpCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAg
ICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENh
c2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50
ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmY1ZWRjNTUwZTJlZWQ3MTJiODA1
Mjc0NjI5NDhiMGM0ZGEyM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLmpzCkBAIC0wLDAgKzEsNzQ1NiBAQAorLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRp
ZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAq
CisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
J0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxG
b3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3Ry
aW5nJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJHTENvbnRleHQnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVy
ZW5jZUNvbnRleHQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9UZXN0VXRp
bCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAgIHZhciBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cyA9CisgICAgICAgIGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHM7CisgICAgdmFyIHRjdVBpeGVsRm9ybWF0ID0gZnJhbWV3b3JrLmNvbW1v
bi50Y3VQaXhlbEZvcm1hdDsKKyAgICB2YXIgdGN1SW1hZ2VDb21wYXJlID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VJbWFnZUNvbXBhcmU7CisgICAgdmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVN1cmZhY2U7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VUZXN0Q2FzZTsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4
dHVyZTsKKyAgICB2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1
cmVVdGlsOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7
CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cisg
ICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7CisgICAg
dmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAg
dmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbDsKKyAg
ICB2YXIgc2dsckdMQ29udGV4dCA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNn
bHJHTENvbnRleHQ7CisgICAgdmFyIHNnbHJSZWZlcmVuY2VDb250ZXh0ID0KKyAgICAgICAgZnJh
bWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsclJlZmVyZW5jZUNvbnRleHQ7CisgICAg
dmFyIHJyVXRpbCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclV0aWw7CisgICAgdmFy
IGVzM2ZGYm9UZXN0VXRpbCA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1Rlc3RVdGlsOworICAg
IHZhciB0Y3VMb2dJbWFnZSA9IGZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2U7CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcmV0dXJu
IHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMubWFwR0xVbnNpemVkSW50ZXJuYWxGb3JtYXQgPSBmdW5jdGlvbigKKyAg
ICAgICAgaW50ZXJuYWxGb3JtYXQKKyAgICApIHsKKyAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZv
cm1hdCkgeworICAgICAgICAgICAgY2FzZSBnbC5BTFBIQToKKyAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgdGN1
VGV4dHVyZS5DaGFubmVsT3JkZXIuQSwKKyAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5D
aGFubmVsVHlwZS5VTk9STV9JTlQ4CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGNh
c2UgZ2wuTFVNSU5BTkNFOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGN1VGV4dHVyZS5U
ZXh0dXJlRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRl
ci5MLAorICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VDgKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0VfQUxQ
SEE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkxBLAorICAgICAg
ICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgY2FzZSBnbC5SR0I6CisgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQiwKKyAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVy
ZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IGNhc2UgZ2wuUkdCQToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4
dHVyZUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UkdCQSwKKyAgICAgICAgICAgICAgICAgICAgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9J
TlQ4CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKAorICAgICAgICAgICAgICAgICAgICAnQ2FuXCd0IG1hcCBH
TCB1bnNpemVkIGludGVybmFsIGZvcm1hdCAoJyArCisgICAgICAgICAgICAgICAgICAgIGludGVy
bmFsRm9ybWF0LnRvU3RyaW5nKDE2KSArICcpIHRvIHRleHR1cmUgZm9ybWF0JworICAgICAgICAg
ICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmFyIFZJRVdQT1JUX1dJRFRIID0g
MjU2OworICAgIHZhciBWSUVXUE9SVF9IRUlHSFQgPSAyNTY7CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAg
ICogQHBhcmFtIHtudW1iZXI9fSBkZXB0aAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAg
Ki8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5tYXhMZXZlbENvdW50ID0gZnVu
Y3Rpb24oCisgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoCisgICAgKSB7CisgICAgICAgIGRl
cHRoID0gZGVwdGggfHwgMDsKKyAgICAgICAgcmV0dXJuIGRlTWF0aC5sb2dUb0Zsb29yKE1hdGgu
bWF4KHdpZHRoLCBNYXRoLm1heChoZWlnaHQsIGRlcHRoKSkpICsgMTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAqIEBwYXJhbSB7
QXJyYXk8bnVtYmVyPn0gbWluVmFsCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBtYXhW
YWwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9t
VmVjdG9yID0gZnVuY3Rpb24oCisgICAgICAgIHJuZCwgbWluVmFsLCBtYXhWYWwsIHNpemUKKyAg
ICApIHsKKyAgICAgICAgdmFyIHJlcyA9IFtdOworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBzaXplOyBuZHgrKykKKyAgICAgICAgICAgIHJlc1tuZHhdID0gcm5kLmdldEZsb2F0KG1p
blZhbFtuZHhdLCBtYXhWYWxbbmR4XSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9IHBpeGVs
Rm9ybWF0CisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IHRleHR1cmVG
b3JtYXQKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSAoaXZlYzQpCisgICAgICovCisg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuZ2V0UGl4ZWxGb3JtYXRDb21wYXJlRGVw
dGggPSBmdW5jdGlvbigKKyAgICAgICAgcGl4ZWxGb3JtYXQsIHRleHR1cmVGb3JtYXQKKyAgICAp
IHsKKyAgICAgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0Lm9yZGVyKSB7CisgICAgICAgICAgICBj
YXNlIHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkw6CisgICAgICAgICAgICBjYXNlIHRjdVRleHR1
cmUuQ2hhbm5lbE9yZGVyLkxBOgorICAgICAgICAgICAgICAgIHJldHVybiBbCisgICAgICAgICAg
ICAgICAgICAgIHBpeGVsRm9ybWF0LnJlZEJpdHMsIHBpeGVsRm9ybWF0LnJlZEJpdHMsCisgICAg
ICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0LnJlZEJpdHMsIHBpeGVsRm9ybWF0LmFscGhhQml0
cworICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHJldHVybiBbCisgICAgICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0LnJlZEJpdHMsIHBp
eGVsRm9ybWF0LmdyZWVuQml0cywKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQuYmx1
ZUJpdHMsIHBpeGVsRm9ybWF0LmFscGhhQml0cworICAgICAgICAgICAgICAgIF07CisgICAgICAg
IH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VQaXhlbEZvcm1hdC5QaXhl
bEZvcm1hdH0gcGl4ZWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZv
cm1hdH0gdGV4dHVyZUZvcm1hdAorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59ICh1dmVj
NCkKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5jb21wdXRlQ29t
cGFyZVRocmVzaG9sZCA9IGZ1bmN0aW9uKAorICAgICAgICBwaXhlbEZvcm1hdCwgdGV4dHVyZUZv
cm1hdAorICAgICkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAg
ICAgIHZhciB0ZXhGb3JtYXRCaXRzID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEJp
dERlcHRoKAorICAgICAgICAgICAgdGV4dHVyZUZvcm1hdAorICAgICAgICApOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgIHZhciBwaXhlbEZvcm1hdEJpdHMg
PQorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuZ2V0UGl4ZWxGb3Jt
YXRDb21wYXJlRGVwdGgoCisgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQsIHRleHR1cmVGb3Jt
YXQKKyAgICAgICAgICAgICk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8K
KyAgICAgICAgdmFyIGFjY3VyYXRlRm10Qml0cyA9IGRlTWF0aC5taW4ocGl4ZWxGb3JtYXRCaXRz
LCB0ZXhGb3JtYXRCaXRzKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLwor
ICAgICAgICB2YXIgY29tcGFyZUJpdHMgPSBkZU1hdGguYWRkU2NhbGFyKAorICAgICAgICAgICAg
dGN1VGV4dHVyZVV0aWwuc2VsZWN0KAorICAgICAgICAgICAgICAgIGFjY3VyYXRlRm10Qml0cywg
WzgsIDgsIDgsIDhdLAorICAgICAgICAgICAgICAgIGRlTWF0aC5ncmVhdGVyVGhhbihhY2N1cmF0
ZUZtdEJpdHMsIFswLCAwLCAwLCAwXSkKKyAgICAgICAgICAgICksIC0gMQorICAgICAgICApOwor
CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b21wYXJlQml0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKDEgPDwgY29t
cGFyZUJpdHNbaV0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRl
c3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzYworICAgICAqIGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlU3BlY0Nhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjKSB7CisgICAgICAg
IHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzYyk7CisgICAgICAgIC8q
KgorICAgICAgICAgKiBAdHlwZSB7CisgICAgICAgICAqICAgICA/c2dsckdMQ29udGV4dC5HTENv
bnRleHR8c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dAorICAgICAgICAgKiB9
CisgICAgICAgICAqLworICAgICAgICAgdGhpcy5tX2NvbnRleHQgPSBudWxsOworICAgIH07CisK
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY0Nhc2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90
eXBlCisgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVT
cGVjQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY0Nhc2U7CisKKyAgICAvKioKKyAgICAgKiBkZWluaXQK
KyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY0Nh
c2UucHJvdG90eXBlLmRlaW5pdCA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDQpOworICAgICAgICBnbC5waXhlbFN0b3JlaShn
bC5VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19JTUFHRV9IRUlHSFQsIDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJ
UF9QSVhFTFMsIDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dT
LCAwKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfSU1BR0VTLCAwKTsK
KworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOwor
ICAgIH0KKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUgLSBOZWVkcyB0byBiZSBvdmVy
cmlkZGVuCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZVNwZWNDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0KKyAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IG92ZXJyaWRlJyk7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIHZlcmlmeVRleHR1cmUgLSBOZWVkcyB0byBiZSBvdmVycmlkZGVuCisgICAgICog
QHBhcmFtIHtzZ2xyR0xDb250ZXh0LkdMQ29udGV4dH0gd2ViZ2wyQ29udGV4dAorICAgICAqIEBw
YXJhbSB7c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0gcmVmQ29udGV4dAor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlLnByb3RvdHlwZS52ZXJpZnlUZXh0dXJlID0KKyAg
ICBmdW5jdGlvbigKKyAgICAgICAgd2ViZ2wyQ29udGV4dCwgcmVmQ29udGV4dAorICAgICkgewor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3Qgb3ZlcnJpZGUnKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0KKyAgICAgKi8K
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY0Nhc2UucHJvdG90
eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGdsLmNhbnZhcy53aWR0aCA8
IFZJRVdQT1JUX1dJRFRIIHx8CisgICAgICAgICAgICBnbC5jYW52YXMuaGVpZ2h0IDwgVklFV1BP
UlRfSEVJR0hUKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb28gc21hbGwgdmlld3Bv
cnQnLCAnJyk7CisKKyAgICAgICAgLy8gQ29udGV4dCBzaXplLCBhbmQgdmlld3BvcnQgZm9yIEdM
RVMzCisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3Ry
aW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgdmFyIHdpZHRoID0gTWF0aC5taW4o
Z2wuY2FudmFzLndpZHRoLCBWSUVXUE9SVF9XSURUSCk7CisgICAgICAgIHZhciBoZWlnaHQgPSBN
YXRoLm1pbihnbC5jYW52YXMuaGVpZ2h0LCBWSUVXUE9SVF9IRUlHSFQpOworICAgICAgICB2YXIg
eCA9IHJuZC5nZXRJbnQoMCwgZ2wuY2FudmFzLndpZHRoIC0gd2lkdGgpOworICAgICAgICB2YXIg
eSA9IHJuZC5nZXRJbnQoMCwgZ2wuY2FudmFzLmhlaWdodCAtIGhlaWdodCk7CisKKyAgICAgICAg
Ly8gQ29udGV4dHMuCisgICAgICAgIC8qKiBAdHlwZSB7c2dsckdMQ29udGV4dC5HTENvbnRleHR9
ICovCisgICAgICAgIHZhciB3ZWJnbDJDb250ZXh0ID0gbmV3IHNnbHJHTENvbnRleHQuR0xDb250
ZXh0KAorICAgICAgICAgICAgZ2wsIFt4LCB5LCB3aWR0aCwgaGVpZ2h0XQorICAgICAgICApOwor
CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4
dEJ1ZmZlcnN9ICovCisgICAgICAgIHZhciByZWZCdWZmZXJzID0gbmV3IHNnbHJSZWZlcmVuY2VD
b250ZXh0LlJlZmVyZW5jZUNvbnRleHRCdWZmZXJzKAorICAgICAgICAgICAgbmV3IHRjdVBpeGVs
Rm9ybWF0LlBpeGVsRm9ybWF0KAorICAgICAgICAgICAgICAgIDgsIDgsIDgsIGdsLmdldFBhcmFt
ZXRlcihnbC5BTFBIQV9CSVRTKSA/IDggOiAwCisgICAgICAgICAgICApLCAwIC8qIGRlcHRoICov
LCAwIC8qIHN0ZW5jaWwgKi8sIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgKTsKKworICAgICAgICAv
KiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9ICovCisgICAg
ICAgIHZhciByZWZDb250ZXh0ID0gbmV3IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNv
bnRleHQoCisgICAgICAgICAgICBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29u
dGV4dExpbWl0cyhnbCksCisgICAgICAgICAgICByZWZCdWZmZXJzLmdldENvbG9yYnVmZmVyKCks
IHJlZkJ1ZmZlcnMuZ2V0RGVwdGhidWZmZXIoKSwKKyAgICAgICAgICAgIHJlZkJ1ZmZlcnMuZ2V0
U3RlbmNpbGJ1ZmZlcigpCisgICAgICAgICk7CisKKyAgICAgICAgLy8gQ2xlYXIgY29sb3IgYnVm
ZmVyLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgrKykgeworICAgICAg
ICAgICAgdGhpcy5tX2NvbnRleHQgPSBuZHggPyByZWZDb250ZXh0IDogd2ViZ2wyQ29udGV4dDsK
KyAgICAgICAgICAgIC8vIEMrKyBwb3J0IHVzZXMgKDAuMTI1LCAwLjI1LCAwLjUsIDEuMCksIGJ1
dCBoZXJlIHdlIHVzZSAoMCwgMCwgMCwgMCkKKyAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIG9w
dGltaXplIHRoZSBgY2xlYXInIG9wIGluIFJlZmVyZW5jZUNvbnRleHQuCisgICAgICAgICAgICB0
aGlzLm1fY29udGV4dC5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICAgICAgdGhpcy5t
X2NvbnRleHQuY2xlYXIoCisgICAgICAgICAgICAgICAgZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQgfAorICAgICAgICAgICAgICAgIGdsLlNURU5DSUxfQlVGRkVSX0JJ
VAorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnN0cnVjdCB0ZXh0
dXJlIHVzaW5nIGJvdGggR0xFUzMgYW5kIHJlZmVyZW5jZSBjb250ZXh0cy4KKyAgICAgICAgZm9y
ICh2YXIgbmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAgICAgIHRoaXMubV9jb250
ZXh0ID0gbmR4ID8gcmVmQ29udGV4dCA6IHdlYmdsMkNvbnRleHQ7CisgICAgICAgICAgICB0aGlz
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGNoZWNrTWVzc2FnZSgKKyAgICAgICAgICAg
ICAgICB0aGlzLm1fY29udGV4dC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLAorICAgICAgICAg
ICAgICAgICdQcm9ibGVtIGNyZWF0aW5nIHRleHR1cmUuJworICAgICAgICAgICAgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFZlcmlmeSByZXN1bHRzLgorICAgICAgICBpZiAodGhpcy52ZXJp
ZnlUZXh0dXJlKHdlYmdsMkNvbnRleHQsIHJlZkNvbnRleHQpKQorICAgICAgICAgICAgdGVzdFBh
c3NlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdWZXJpZmljYXRp
b24gZmFpbGVkJyk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQu
U1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZh
Y2V9IGRzdAorICAgICAqIEBwYXJhbSB7CisgICAgICogID9XZWJHTFByb2dyYW18CisgICAgICog
IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW0KKyAgICAgKiB9IHByb2dyYW0KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlLnByb3RvdHlwZS5yZW5kZXJUZXggPQor
ICAgIGZ1bmN0aW9uKGRzdCwgcHJvZ3JhbSwgd2lkdGgsIGhlaWdodCkgeworICAgICAgICB2YXIg
dGFyZ2V0VyA9IHRoaXMubV9jb250ZXh0LmdldFdpZHRoKCk7CisgICAgICAgIHZhciB0YXJnZXRI
ID0gdGhpcy5tX2NvbnRleHQuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgdmFyIHcgPSB3aWR0aCAv
IHRhcmdldFc7CisgICAgICAgIHZhciBoID0gaGVpZ2h0IC8gdGFyZ2V0SDsKKworICAgICAgICBy
clV0aWwuZHJhd1F1YWQoCisgICAgICAgICAgICB0aGlzLm1fY29udGV4dCwgcHJvZ3JhbSwgWy0x
LjAsIC0xLjAsIDAuMF0sCisgICAgICAgICAgICBbLTEuMCArIHcgKiAyLjAsIC0xLjAgKyBoICog
Mi4wLCAwLjBdCisgICAgICAgICk7CisKKyAgICAgICAgLy8gUmVhZCBwaXhlbHMgYmFjay4KKyAg
ICAgICAgZHN0LnJlYWRWaWV3cG9ydCh0aGlzLm1fY29udGV4dCwgWzAsIDAsIHdpZHRoLCBoZWln
aHRdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVTcGVjQ2FzZX0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXR9IGZvcm1hdAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gbnVtTGV2ZWxzCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFt
ZSwgZGVzYywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudW1MZXZlbHMKKyAgICApIHsKKyAgICAg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzYyk7CisKKyAgICAgICAgdGhpcy5tX3RleEZvcm1hdCA9IGZvcm1hdDsKKyAg
ICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8gPSB0Y3VUZXh0dXJlVXRpbC5nZXRUZXh0dXJlRm9y
bWF0SW5mbyhmb3JtYXQpOworICAgICAgICB0aGlzLm1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAg
dGhpcy5tX2hlaWdodCA9IGhlaWdodDsKKyAgICAgICAgdGhpcy5tX251bUxldmVscyA9IG51bUxl
dmVsczsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZTJEU3BlY0Nhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlLnByb3RvdHlwZQorICAgICk7CisK
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXh0dXJlMkRTcGVjQ2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c2dsckdMQ29u
dGV4dC5HTENvbnRleHR9IHdlYmdsMkNvbnRleHQKKyAgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVu
Y2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9IHJlZkNvbnRleHQKKyAgICAgKi8KKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90b3R5cGUudmVy
aWZ5VGV4dHVyZSA9CisgICAgZnVuY3Rpb24oCisgICAgICAgIHdlYmdsMkNvbnRleHQsIHJlZkNv
bnRleHQKKyAgICApIHsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuVGV4dHVy
ZTJEU2hhZGVyfSAqLworICAgICAgICB2YXIgc2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5U
ZXh0dXJlMkRTaGFkZXIoCisgICAgICAgICAgICBbZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJE
VHlwZSh0aGlzLm1fdGV4Rm9ybWF0KV0sCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUX1ZFQzQKKyAgICAgICAgKTsKKworICAgICAgICB2YXIgc2hhZGVySURnbGVzID0g
d2ViZ2wyQ29udGV4dC5jcmVhdGVQcm9ncmFtKHNoYWRlcik7CisgICAgICAgIHZhciBzaGFkZXJJ
RFJlZiA9IHJlZkNvbnRleHQuY3JlYXRlUHJvZ3JhbShzaGFkZXIpOworCisgICAgICAgIHNoYWRl
ci5zZXRUZXhTY2FsZUJpYXMoCisgICAgICAgICAgICAwLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby5s
b29rdXBTY2FsZSwKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLmxvb2t1cEJpYXMK
KyAgICAgICAgKTsKKworICAgICAgICAvLyBTZXQgc3RhdGUuCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgY3R4ID0gbmR4ID8gcmVm
Q29udGV4dCA6IHdlYmdsMkNvbnRleHQ7CisKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0ID0g
Y3R4OworCisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAg
ICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVT
VF9NSVBNQVBfTkVBUkVTVAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250
ZXh0LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUCisgICAgICAgICAgICApOworICAgICAgICAgICAg
dGhpcy5tX2NvbnRleHQudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRQorICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAg
ICAgZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UKKyAg
ICAgICAgICAgICk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAor
ICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFYX0xFVkVMLCB0aGlz
Lm1fbnVtTGV2ZWxzIC0gMQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAodmFyIGxldmVsTmR4ID0gMDsgbGV2ZWxOZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBsZXZlbE5k
eCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRo
ID4+IGxldmVsTmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlz
Lm1faGVpZ2h0ID4+IGxldmVsTmR4KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFj
ZS5TdXJmYWNlfSAqLyB2YXIgcmVmZXJlbmNlID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSgpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciByZXN1bHQg
PSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IDI7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJm
YWNlLlN1cmZhY2V9ICovCisgICAgICAgICAgICAgICAgdmFyIGRzdCA9IG5keCA/IHJlZmVyZW5j
ZSA6IHJlc3VsdDsKKyAgICAgICAgICAgICAgICB2YXIgY3R4ID0gbmR4ID8gcmVmQ29udGV4dCA6
IHdlYmdsMkNvbnRleHQ7CisgICAgICAgICAgICAgICAgdmFyIHNoYWRlcklEID0gbmR4ID8gc2hh
ZGVySURSZWYgOiBzaGFkZXJJRGdsZXM7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4
dCA9IGN0eDsKKyAgICAgICAgICAgICAgICBzaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCBzaGFkZXJJ
RCk7CisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXgoZHN0LCBzaGFkZXJJRCwgbGV2ZWxX
LCBsZXZlbEgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGhyZXNob2xkID0K
KyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmNvbXB1dGVDb21wYXJl
VGhyZXNob2xkKAorICAgICAgICAgICAgICAgIHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJv
bUNvbnRleHQoZ2wpLCB0aGlzLm1fdGV4Rm9ybWF0CisgICAgICAgICAgICApOworICAgICAgICAg
ICAgdmFyIGxldmVsU3RyID0gbGV2ZWxOZHgudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHZhciBu
YW1lID0gJ0xldmVsJyArIGxldmVsU3RyOworICAgICAgICAgICAgdmFyIGRlc2MgPSAnTGV2ZWwg
JyArIGxldmVsU3RyOworICAgICAgICAgICAgdmFyIGlzT2sgPSB0Y3VJbWFnZUNvbXBhcmUuaW50
VGhyZXNob2xkQ29tcGFyZSgKKyAgICAgICAgICAgICAgICBuYW1lLCBkZXNjLCByZWZlcmVuY2Uu
Z2V0QWNjZXNzKCksIHJlc3VsdC5nZXRBY2Nlc3MoKSwKKyAgICAgICAgICAgICAgICB0aHJlc2hv
bGQsIGxldmVsTmR4ID09IDAgPworICAgICAgICAgICAgICAgIHRjdUltYWdlQ29tcGFyZS5Db21w
YXJlTG9nTW9kZS5SRVNVTFQgOgorICAgICAgICAgICAgICAgIHRjdUltYWdlQ29tcGFyZS5Db21w
YXJlTG9nTW9kZS5PTl9FUlJPUgorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgaWYgKCFp
c09rKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnSW1hZ2UgY29tcGFyaXNvbiBmYWls
ZWQnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIHRjdUxvZ0ltYWdlLmxvZ0ltYWdlV2l0aEluZm8ocmVzdWx0
LmdldEFjY2VzcygpLCdDb21wYXJpc29uIE9LIG9uIGxldmVsOiAnICsgbGV2ZWxOZHgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtTGV2ZWxzCisgICAgICovCisgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZSA9IGZ1bmN0aW9uKAorICAg
ICAgICBuYW1lLCBkZXNjLCBmb3JtYXQsIHNpemUsIG51bUxldmVscworICAgICkgeworICAgICAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY0Nhc2UuY2FsbCgKKyAg
ICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2MKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5tX3Rl
eEZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8gPSB0Y3VUZXh0
dXJlVXRpbC5nZXRUZXh0dXJlRm9ybWF0SW5mbyhmb3JtYXQpOworICAgICAgICB0aGlzLm1fc2l6
ZSA9IHNpemU7CisgICAgICAgIHRoaXMubV9udW1MZXZlbHMgPSBudW1MZXZlbHM7CisgICAgfTsK
KworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2Uu
cHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZShlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlU3BlY0Nhc2UucHJvdG90eXBlKTsKKworICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVj
Q2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c2dsckdMQ29udGV4dC5HTENvbnRleHR9
IHdlYmdsMkNvbnRleHQKKyAgICAgKiBAcGFyYW0ge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVy
ZW5jZUNvbnRleHR9IHJlZkNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLnByb3RvdHlwZS52ZXJpZnlUZXh0dXJlID0K
KyAgICBmdW5jdGlvbigKKyAgICAgICAgd2ViZ2wyQ29udGV4dCwgcmVmQ29udGV4dAorICAgICkg
eworICAgICAgICAvKiogQHR5cGUge2VzM2ZGYm9UZXN0VXRpbC5UZXh0dXJlQ3ViZVNoYWRlcn0g
Ki8KKyAgICAgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwuVGV4dHVyZUN1YmVT
aGFkZXIoCisgICAgICAgICAgICBnbHVUZXh0dXJlVXRpbC5nZXRTYW1wbGVyQ3ViZVR5cGUodGhp
cy5tX3RleEZvcm1hdCksCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
X1ZFQzQKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHNoYWRlcklEZ2xlcyA9IHdlYmdsMkNvbnRl
eHQuY3JlYXRlUHJvZ3JhbShzaGFkZXIpOworICAgICAgICB2YXIgc2hhZGVySURSZWYgPSByZWZD
b250ZXh0LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKworICAgICAgICBzaGFkZXIuc2V0VGV4U2Nh
bGVCaWFzKAorICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8ubG9va3VwU2NhbGUsIHRo
aXMubV90ZXhGb3JtYXRJbmZvLmxvb2t1cEJpYXMKKyAgICAgICAgKTsKKworICAgICAgICAvLyBT
ZXQgc3RhdGUuCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDI7IG5keCsrKSB7Cisg
ICAgICAgICAgICB2YXIgY3R4ID0gbmR4ID8gcmVmQ29udGV4dCA6IHdlYmdsMkNvbnRleHQ7CisK
KyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0ID0gY3R4OworCisgICAgICAgICAgICB0aGlzLm1f
Y29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9N
QVAsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICBnbC5ORUFSRVNUX01J
UE1BUF9ORUFSRVNUCisgICAgICAgICAgICApOworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQu
dGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQLCBnbC5U
RVhUVVJFX01BR19GSUxURVIsCisgICAgICAgICAgICAgICAgZ2wuTkVBUkVTVAorICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFBhcmFtZXRlcmkoCisgICAgICAg
ICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1MsCisgICAgICAg
ICAgICAgICAgZ2wuQ0xBTVBfVE9fRURHRQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRo
aXMubV9jb250ZXh0LnRleFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9D
VUJFX01BUCwgZ2wuVEVYVFVSRV9XUkFQX1QsCisgICAgICAgICAgICAgICAgZ2wuQ0xBTVBfVE9f
RURHRQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFBhcmFt
ZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVYVFVSRV9N
QVhfTEVWRUwsCisgICAgICAgICAgICAgICAgdGhpcy5tX251bUxldmVscyAtIDEKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBsZXZlbE5keCA9IDA7IGxldmVs
TmR4IDwgdGhpcy5tX251bUxldmVsczsgbGV2ZWxOZHgrKykgeworICAgICAgICAgICAgdmFyIGxl
dmVsU2l6ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXplID4+IGxldmVsTmR4KTsKKyAgICAgICAg
ICAgIHZhciBpc09rID0gdHJ1ZTsKKworICAgICAgICAgICAgZm9yICh2YXIgZiBpbiB0Y3VUZXh0
dXJlLkN1YmVGYWNlKSB7CisgICAgICAgICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1
YmVGYWNlW2ZdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNl
fSAqLworICAgICAgICAgICAgICAgIHZhciByZWZlcmVuY2UgPSBuZXcgdGN1U3VyZmFjZS5TdXJm
YWNlKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICov
CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoKTsK
KworICAgICAgICAgICAgICAgIGlmIChsZXZlbFNpemUgPD0gMikKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7IC8vIEZ1enp5IGNvbXBhcmUgZG9lc24ndCB3b3JrIGZvciBpbWFnZXMgdGhp
cyBzbWFsbC4KKworICAgICAgICAgICAgICAgIHNoYWRlci5zZXRGYWNlKGZhY2UpOworCisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAgICAgICAg
ICAgICAgICAgIHZhciBkc3QgPSBuZHggPyByZWZlcmVuY2UgOiByZXN1bHQ7CisgICAgICAgICAg
ICAgICAgICAgIGN0eCA9IG5keCA/IHJlZkNvbnRleHQgOiB3ZWJnbDJDb250ZXh0OworICAgICAg
ICAgICAgICAgICAgICB2YXIgc2hhZGVySUQgPSBuZHggPyBzaGFkZXJJRFJlZiA6IHNoYWRlcklE
Z2xlczsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4dCA9IGN0eDsKKyAgICAg
ICAgICAgICAgICAgICAgc2hhZGVyLnNldFVuaWZvcm1zKGN0eCwgc2hhZGVySUQpOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLnJlbmRlclRleChkc3QsIHNoYWRlcklELCBsZXZlbFNpemUsIGxl
dmVsU2l6ZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIHRocmVz
aG9sZCA9IDAuMDI7CisgICAgICAgICAgICAgICAgdmFyIGZhY2VTdHIgPSBmYWNlLnRvU3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgdmFyIGxldmVsU3RyID0gbGV2ZWxOZHgudG9TdHJpbmcoKTsK
KyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICdMZXZlbCcgKyBsZXZlbFN0cjsKKyAgICAgICAg
ICAgICAgICB2YXIgZGVzYyA9ICdMZXZlbCAnICsgbGV2ZWxTdHIgKyAnLCBmYWNlICcgKyBmYWNl
U3RyOworICAgICAgICAgICAgICAgIHZhciBpc0ZhY2VPayA9IHRjdUltYWdlQ29tcGFyZS5mdXp6
eUNvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGRlc2MsIHJlZmVyZW5jZS5nZXRB
Y2Nlc3MoKSwgcmVzdWx0LmdldEFjY2VzcygpLAorICAgICAgICAgICAgICAgICAgICB0aHJlc2hv
bGQsIGxldmVsTmR4ID09IDAgPworICAgICAgICAgICAgICAgICAgICB0Y3VJbWFnZUNvbXBhcmUu
Q29tcGFyZUxvZ01vZGUuUkVTVUxUIDoKKyAgICAgICAgICAgICAgICAgICAgdGN1SW1hZ2VDb21w
YXJlLkNvbXBhcmVMb2dNb2RlLk9OX0VSUk9SCisgICAgICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgICAgIGlmICghaXNGYWNlT2spIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgnSW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1hdH0gZm9y
bWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MYXllcnMKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbnVtTGV2ZWxzCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBk
ZXNjLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG51bUxheWVycywgbnVtTGV2ZWxzCisgICAgKSB7
CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVTcGVjQ2FzZS5j
YWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYworICAgICAgICApOworICAgICAgICB0
aGlzLm1fdGV4Rm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mbyA9
IHRjdVRleHR1cmVVdGlsLmdldFRleHR1cmVGb3JtYXRJbmZvKGZvcm1hdCk7CisgICAgICAgIHRo
aXMubV93aWR0aCA9IHdpZHRoOworICAgICAgICB0aGlzLm1faGVpZ2h0ID0gaGVpZ2h0OworICAg
ICAgICB0aGlzLm1fbnVtTGF5ZXJzID0gbnVtTGF5ZXJzOworICAgICAgICB0aGlzLm1fbnVtTGV2
ZWxzID0gbnVtTGV2ZWxzOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXh0dXJlMkRBcnJheVNwZWNDYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5j
cmVhdGUoZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlLnByb3Rv
dHlwZSk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRBcnJh
eVNwZWNDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLlRleHR1cmUyREFycmF5U3BlY0Nhc2U7CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3NnbHJHTENvbnRleHQuR0xDb250ZXh0fSB3ZWJnbDJDb250ZXh0CisgICAgICog
QHBhcmFtIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fSByZWZDb250ZXh0
CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJy
YXlTcGVjQ2FzZS5wcm90b3R5cGUudmVyaWZ5VGV4dHVyZSA9CisgICAgZnVuY3Rpb24oCisgICAg
ICAgIHdlYmdsMkNvbnRleHQsIHJlZkNvbnRleHQKKyAgICApIHsKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmRmJvVGVzdFV0aWwuVGV4dHVyZTJEQXJyYXlTaGFkZXJ9ICovCisgICAgICAgIHZhciBz
aGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLlRleHR1cmUyREFycmF5U2hhZGVyKAorICAgICAg
ICAgICAgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjJEQXJyYXlUeXBlKHRoaXMubV90ZXhGb3Jt
YXQpLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0CisgICAg
ICAgICk7CisgICAgICAgIHZhciBzaGFkZXJJRGdsZXMgPSB3ZWJnbDJDb250ZXh0LmNyZWF0ZVBy
b2dyYW0oc2hhZGVyKTsKKyAgICAgICAgdmFyIHNoYWRlcklEUmVmID0gcmVmQ29udGV4dC5jcmVh
dGVQcm9ncmFtKHNoYWRlcik7CisKKyAgICAgICAgc2hhZGVyLnNldFRleFNjYWxlQmlhcygKKyAg
ICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLmxvb2t1cFNjYWxlLCB0aGlzLm1fdGV4Rm9y
bWF0SW5mby5sb29rdXBCaWFzCisgICAgICAgICk7CisKKyAgICAgICAgLy8gU2V0IHN0YXRlLgor
ICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgrKykgeworICAgICAgICAgICAg
dmFyIGN0eCA9IG5keCA/IHJlZkNvbnRleHQgOiB3ZWJnbDJDb250ZXh0OworCisgICAgICAgICAg
ICB0aGlzLm1fY29udGV4dCA9IGN0eDsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4
UGFyYW1ldGVyaSgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJEX0FSUkFZLCBnbC5URVhU
VVJFX01JTl9GSUxURVIsCisgICAgICAgICAgICAgICAgZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFBhcmFtZXRl
cmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRF9BUlJBWSwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLAorICAgICAgICAgICAgICAgIGdsLk5FQVJFU1QKKyAgICAgICAgICAgICk7CisgICAg
ICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfV1JBUF9TLAorICAgICAgICAgICAgICAgIGds
LkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4
dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkRfQVJSQVksIGds
LlRFWFRVUkVfV1JBUF9ULAorICAgICAgICAgICAgICAgIGdsLkNMQU1QX1RPX0VER0UKKyAgICAg
ICAgICAgICk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAg
ICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfV1JBUF9SLAorICAg
ICAgICAgICAgICAgIGdsLkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7CisgICAgICAgICAg
ICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRFWFRV
UkVfMkRfQVJSQVksIGdsLlRFWFRVUkVfTUFYX0xFVkVMLAorICAgICAgICAgICAgICAgIHRoaXMu
bV9udW1MZXZlbHMgLSAxCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZm9y
ICh2YXIgbGF5ZXJOZHggPSAwOyBsYXllck5keCA8IHRoaXMubV9udW1MYXllcnM7IGxheWVyTmR4
KyspIHsKKyAgICAgICAgICAgIHZhciBsYXllck9rID0gdHJ1ZTsKKworICAgICAgICAgICAgc2hh
ZGVyLnNldExheWVyKGxheWVyTmR4KTsKKyAgICAgICAgICAgIGZvciAodmFyIGxldmVsTmR4ID0g
MDsgbGV2ZWxOZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBsZXZlbE5keCsrKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGxldmVsVyA9IE1hdGgubWF4KDEsIHRoaXMubV93aWR0aCA+PiBsZXZlbE5keCk7
CisgICAgICAgICAgICAgICAgdmFyIGxldmVsSCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQg
Pj4gbGV2ZWxOZHgpOworCisgICAgICAgICAgICAgICAgaWYgKGxldmVsVyA9PSAxIHx8IGxldmVs
SCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlcmluZyB0byB0ZXh0dXJlIG9m
IHNpemUgeDEgaXMgcHJvYmxlbWF0aWMgaW4gcmVmZXJlbmNlcmVuZGVyZXIKKyAgICAgICAgICAg
ICAgICAgICAgLy8gZHVlIHRvIGl0cyBkZXZpYXRpb24gZnJvbSBjKysgY29kZTogY3JidWcuY29t
LzYxMzIwNgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAg
ICAgICAgICAgICAgdmFyIHJlZmVyZW5jZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoKTsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8KKyAgICAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSgpOworCisgICAgICAg
ICAgICAgICAgdmFyIGlzT2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4
ID0gMDsgbmR4IDwgMjsgbmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt0
Y3VTdXJmYWNlLlN1cmZhY2V9ICovCisgICAgICAgICAgICAgICAgICAgIHZhciBkc3QgPSBuZHgg
PyByZWZlcmVuY2UgOiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGN0eCA9IG5keCA/IHJl
ZkNvbnRleHQgOiB3ZWJnbDJDb250ZXh0OworICAgICAgICAgICAgICAgICAgICB2YXIgc2hhZGVy
SUQgPSBuZHggPyBzaGFkZXJJRFJlZiA6IHNoYWRlcklEZ2xlczsKKworICAgICAgICAgICAgICAg
ICAgICB0aGlzLm1fY29udGV4dCA9IGN0eDsKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnNl
dFVuaWZvcm1zKGN0eCwgc2hhZGVySUQpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRl
clRleChkc3QsIHNoYWRlcklELCBsZXZlbFcsIGxldmVsSCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgdmFyIHRocmVzaG9sZCA9CisgICAgICAgICAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuY29tcHV0ZUNvbXBhcmVUaHJlc2hvbGQoCisgICAgICAg
ICAgICAgICAgICAgIHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJvbUNvbnRleHQoZ2wpLCB0
aGlzLm1fdGV4Rm9ybWF0CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB2YXIg
bGV2ZWxTdHIgPSBsZXZlbE5keC50b1N0cmluZygpOworICAgICAgICAgICAgICAgIHZhciBsYXll
clN0ciA9IGxheWVyTmR4LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAn
TGF5ZXInICsgbGF5ZXJTdHIgKyAnTGV2ZWwnICsgbGV2ZWxTdHI7CisgICAgICAgICAgICAgICAg
dmFyIGRlc2MgPSAnTGF5ZXIgJyArIGxheWVyU3RyICsgJywgTGV2ZWwgJyArIGxldmVsU3RyOwor
ICAgICAgICAgICAgICAgIHZhciBkZXB0aE9rID0gdGN1SW1hZ2VDb21wYXJlLmludFRocmVzaG9s
ZENvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGRlc2MsIHJlZmVyZW5jZS5nZXRB
Y2Nlc3MoKSwgcmVzdWx0LmdldEFjY2VzcygpLAorICAgICAgICAgICAgICAgICAgICB0aHJlc2hv
bGQsIChsZXZlbE5keCA9PSAwICYmIGxheWVyTmR4ID09IDApID8KKyAgICAgICAgICAgICAgICAg
ICAgdGN1SW1hZ2VDb21wYXJlLkNvbXBhcmVMb2dNb2RlLlJFU1VMVCA6CisgICAgICAgICAgICAg
ICAgICAgIHRjdUltYWdlQ29tcGFyZS5Db21wYXJlTG9nTW9kZS5PTl9FUlJPUgorICAgICAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWRlcHRoT2spIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgnSW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQnKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge3RjdVRleHR1cmUu
VGV4dHVyZUZvcm1hdH0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAgICAgKi8KKyAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlM0RTcGVjQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAg
ICBuYW1lLCBkZXNjLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBudW1MZXZlbHMKKyAg
ICApIHsKKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWND
YXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjCisgICAgICAgICk7CisgICAg
ICAgIHRoaXMubV90ZXhGb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJ
bmZvID0gdGN1VGV4dHVyZVV0aWwuZ2V0VGV4dHVyZUZvcm1hdEluZm8oZm9ybWF0KTsKKyAgICAg
ICAgdGhpcy5tX3dpZHRoID0gd2lkdGg7CisgICAgICAgIHRoaXMubV9oZWlnaHQgPSBoZWlnaHQ7
CisgICAgICAgIHRoaXMubV9kZXB0aCA9IGRlcHRoOworICAgICAgICB0aGlzLm1fbnVtTGV2ZWxz
ID0gbnVtTGV2ZWxzOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXh0dXJlM0RTcGVjQ2FzZS5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVTcGVjQ2FzZS5wcm90b3R5cGUpOwor
CisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuVGV4dHVyZTNEU3BlY0Nhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3NnbHJHTENv
bnRleHQuR0xDb250ZXh0fSB3ZWJnbDJDb250ZXh0CisgICAgICogQHBhcmFtIHtzZ2xyUmVmZXJl
bmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fSByZWZDb250ZXh0CisgICAgICovCisgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJvdG90eXBlLnZl
cmlmeVRleHR1cmUgPQorICAgIGZ1bmN0aW9uKAorICAgICAgICB3ZWJnbDJDb250ZXh0LCByZWZD
b250ZXh0CisgICAgKSB7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLlRleHR1
cmUzRFNoYWRlcn0gKi8KKyAgICAgICAgdmFyIHNoYWRlciA9IG5ldyBlczNmRmJvVGVzdFV0aWwu
VGV4dHVyZTNEU2hhZGVyKAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwuZ2V0U2FtcGxlcjNE
KHRoaXMubV90ZXhGb3JtYXQpLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9WRUM0CisgICAgICAgICk7CisgICAgICAgIHZhciBzaGFkZXJJRGdsZXMgPSB3ZWJnbDJD
b250ZXh0LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKyAgICAgICAgdmFyIHNoYWRlcklEUmVmID0g
cmVmQ29udGV4dC5jcmVhdGVQcm9ncmFtKHNoYWRlcik7CisKKyAgICAgICAgc2hhZGVyLnNldFRl
eFNjYWxlQmlhcygKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLmxvb2t1cFNjYWxl
LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby5sb29rdXBCaWFzCisgICAgICAgICk7CisKKyAgICAgICAg
Ly8gU2V0IHN0YXRlLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgrKykg
eworICAgICAgICAgICAgdmFyIGN0eCA9IG5keCA/IHJlZkNvbnRleHQgOiB3ZWJnbDJDb250ZXh0
OworCisgICAgICAgICAgICB0aGlzLm1fY29udGV4dCA9IGN0eDsKKworICAgICAgICAgICAgdGhp
cy5tX2NvbnRleHQudGV4UGFyYW1ldGVyaSgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzNE
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsCisgICAgICAgICAgICAgICAgZ2wuTkVBUkVTVF9NSVBN
QVBfTkVBUkVTVAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRl
eFBhcmFtZXRlcmkoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLAorICAgICAgICAgICAgICAgIGdsLk5FQVJFU1QKKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAg
IGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfV1JBUF9TLAorICAgICAgICAgICAgICAgIGdsLkNM
QU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50
ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVf
V1JBUF9ULAorICAgICAgICAgICAgICAgIGdsLkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAg
ICAgIGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRVUkVfV1JBUF9SLAorICAgICAgICAgICAgICAgIGds
LkNMQU1QX1RPX0VER0UKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4
dC50ZXhQYXJhbWV0ZXJpKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfM0QsIGdsLlRFWFRV
UkVfTUFYX0xFVkVMLAorICAgICAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMgLSAxCisgICAg
ICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgbGV2ZWxOZHggPSAwOyBs
ZXZlbE5keCA8IHRoaXMubV9udW1MZXZlbHM7IGxldmVsTmR4KyspIHsKKyAgICAgICAgICAgIHZh
ciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbGV2ZWxOZHgpOworICAgICAg
ICAgICAgdmFyIGxldmVsSCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbGV2ZWxOZHgp
OworICAgICAgICAgICAgdmFyIGxldmVsRCA9IE1hdGgubWF4KDEsIHRoaXMubV9kZXB0aCA+PiBs
ZXZlbE5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxPayA9IHRydWU7CisKKyAgICAgICAgICAg
IGlmIChsZXZlbFcgPT0gMSB8fCBsZXZlbEggPT0gMSkgeworICAgICAgICAgICAgICAgIC8vIFJl
bmRlcmluZyB0byB0ZXh0dXJlIG9mIHNpemUgeDEgaXMgcHJvYmxlbWF0aWMgaW4gcmVmZXJlbmNl
cmVuZGVyZXIKKyAgICAgICAgICAgICAgICAvLyBkdWUgdG8gaXRzIGRldmlhdGlvbiBmcm9tIGMr
KyBjb2RlOiBjcmJ1Zy5jb20vNjEzMjA2CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGRlcHRoID0gMDsgZGVwdGggPCBsZXZl
bEQ7IGRlcHRoKyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3Vy
ZmFjZX0gKi8KKyAgICAgICAgICAgICAgICB2YXIgcmVmZXJlbmNlID0gbmV3IHRjdVN1cmZhY2Uu
U3VyZmFjZSgpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNl
fSAqLworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNl
KCk7CisKKyAgICAgICAgICAgICAgICBzaGFkZXIuc2V0RGVwdGgoKGRlcHRoICsgMC41KSAvIGxl
dmVsRCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAyOyBuZHgr
KykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0g
Ki8KKyAgICAgICAgICAgICAgICAgICAgdmFyIGRzdCA9IG5keCA/IHJlZmVyZW5jZSA6IHJlc3Vs
dDsKKyAgICAgICAgICAgICAgICAgICAgY3R4ID0gbmR4ID8gcmVmQ29udGV4dCA6IHdlYmdsMkNv
bnRleHQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBzaGFkZXJJRCA9IG5keCA/IHNoYWRlcklE
UmVmIDogc2hhZGVySURnbGVzOworCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jb250ZXh0
ID0gY3R4OworICAgICAgICAgICAgICAgICAgICBzaGFkZXIuc2V0VW5pZm9ybXMoY3R4LCBzaGFk
ZXJJRCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVGV4KGRzdCwgc2hhZGVySUQs
IGxldmVsVywgbGV2ZWxIKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2
YXIgdGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5jb21wdXRlQ29tcGFyZVRocmVzaG9sZCgKKyAgICAgICAgICAgICAgICAgICAgdGN1UGl4
ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dChnbCksIHRoaXMubV90ZXhGb3JtYXQKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIHZhciBsZXZlbFN0ciA9IGxldmVsTmR4
LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdmFyIHNsaWNlU3RyID0gZGVwdGgudG9TdHJp
bmcoKTsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICdMYXllcicgKyBsZXZlbFN0ciArICdT
bGljZScgKyBzbGljZVN0cjsKKyAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICdMYXllciAnICsg
bGV2ZWxTdHIgKyAnLCBTbGljZSAnICsgc2xpY2VTdHI7CisgICAgICAgICAgICAgICAgdmFyIGRl
cHRoT2sgPSB0Y3VJbWFnZUNvbXBhcmUuaW50VGhyZXNob2xkQ29tcGFyZSgKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZSwgZGVzYywgcmVmZXJlbmNlLmdldEFjY2VzcygpLCByZXN1bHQuZ2V0QWNj
ZXNzKCksCisgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCwgKGxldmVsTmR4ID09IDAgJiYg
ZGVwdGggPT0gMCkgPworICAgICAgICAgICAgICAgICAgICB0Y3VJbWFnZUNvbXBhcmUuQ29tcGFy
ZUxvZ01vZGUuUkVTVUxUIDoKKyAgICAgICAgICAgICAgICAgICAgdGN1SW1hZ2VDb21wYXJlLkNv
bXBhcmVMb2dNb2RlLk9OX0VSUk9SCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAg
ICAgIGlmICghZGVwdGhPaykgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdJbWFn
ZSBjb21wYXJpc29uIGZhaWxlZCcpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8vIEJhc2ljIFRleEltYWdlMkQoKSB3aXRoIDJE
IHRleHR1cmUgdXNhZ2UKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2V9Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0
YVR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaGVpZ2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFz
aWNUZXhJbWFnZTJEQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBmb3JtYXQs
IGRhdGFUeXBlLCB3aWR0aCwgaGVpZ2h0CisgICAgKSB7CisgICAgICAgIC8vIFVuc2l6ZWQgaW50
ZXJuYWwgZm9ybWF0LgorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0
dXJlMkRTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4
dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgICAgICBmb3JtYXQsIGRh
dGFUeXBlCisgICAgICAgICAgICApLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0CisgICAgICAgICAgICApCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0
OworICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPSBkYXRhVHlwZTsKKyAgICB9OworCisgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhJbWFnZTJEQ2FzZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKAorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5U
ZXh0dXJlMkRTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICApOworCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhJbWFnZTJEQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlMkRD
YXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWln
aHQKKyAgICAgKiBAcmV0dXJuIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1Rl
eEltYWdlMkRDYXNlfQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Lm5ld0Jhc2ljVGV4SW1hZ2UyRENhc2VJbnRlcm5hbCA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1l
LCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodAorICAgICkgeworICAgICAgICAv
LyBTaXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0dXJlVXRp
bC5nZXRUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICk7CisgICAgICAgIHZhciB0ZXN0
Y2FzZSA9IG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlMkRD
YXNlKAorICAgICAgICAgICAgbmFtZSwgZGVzYywgZm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLCB3
aWR0aCwgaGVpZ2h0CisgICAgICAgICk7CisgICAgICAgIHRlc3RjYXNlLm1faW50ZXJuYWxGb3Jt
YXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgcmV0dXJuIHRlc3RjYXNlOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhJbWFnZTJEQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4
dHVyZSA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAg
ICB2YXIgbGV2ZWxEYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAg
ICAgdGhpcy5tX3RleEZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAg
ICk7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3Ry
aW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4
dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGds
LlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8
IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0
aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0g
TWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGdNaW4g
PSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAg
ICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVj
dG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4s
CisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXplKGxldmVsVywgbGV2ZWxI
KTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRz
KAorICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1hZ2UyRCgKKyAg
ICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCBuZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwg
bGV2ZWxXLCBsZXZlbEgsIDAsCisgICAgICAgICAgICAgICAgdGhpcy5tX2Zvcm1hdCwgdGhpcy5t
X2RhdGFUeXBlLAorICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRh
UHRyKCkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gQmFzaWMg
VGV4SW1hZ2UyRCgpIHdpdGggY3ViZW1hcCB1c2FnZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0
dXJlQ3ViZVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGRhdGFUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAg
ICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlQ3Vi
ZUNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgZm9ybWF0LCBkYXRhVHlwZSwg
c2l6ZQorICAgICkgeworICAgICAgICAvLyBVbnNpemVkIGludGVybmFsIGZvcm1hdC4KKyAgICAg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZS5jYWxs
KAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFu
c2ZlckZvcm1hdCgKKyAgICAgICAgICAgICAgICBmb3JtYXQsIGRhdGFUeXBlCisgICAgICAgICAg
ICApLCBzaXplLCBkZU1hdGgubG9nVG9GbG9vcihzaXplKSArIDEKKyAgICAgICAgKTsKKworICAg
ICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9mb3Jt
YXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9IGRhdGFUeXBlOworICAgIH07
CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlQ3ViZUNh
c2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UucHJvdG90eXBlCisg
ICAgICAgICk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNp
Y1RleEltYWdlQ3ViZUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhJbWFnZUN1YmVDYXNlOworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
YworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzaXplCisgICAgICogQHJldHVybiB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuQmFzaWNUZXhJbWFnZUN1YmVDYXNlfQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLm5ld0Jhc2ljVGV4SW1hZ2VDdWJlQ2FzZUludGVybmFsID0gZnVuY3Rpb24o
CisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBzaXplCisgICAgKSB7CisgICAg
ICAgIC8vIFNpemVkIGludGVybmFsIGZvcm1hdC4KKyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1
cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgKTsKKyAgICAgICAgdmFy
IHRlc3RjYXNlID0gbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4SW1h
Z2VDdWJlQ2FzZSgKKyAgICAgICAgICAgIG5hbWUsIGRlc2MsIGZtdC5mb3JtYXQsIGZtdC5kYXRh
VHlwZSwgc2l6ZQorICAgICAgICApOworICAgICAgICB0ZXN0Y2FzZS5tX2ludGVybmFsRm9ybWF0
ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgIHJldHVybiB0ZXN0Y2FzZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogY3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLgorICAgIEJhc2ljVGV4SW1hZ2VDdWJlQ2FzZS5wcm90b3R5cGUuY3Jl
YXRlVGV4dHVyZSA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOwor
ICAgICAgICB2YXIgbGV2ZWxEYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAg
ICAgICAgICAgdGhpcy5tX3RleEZvcm1hdCwgdGhpcy5tX3NpemUsIHRoaXMubV9zaXplCisgICAg
ICAgICk7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRl
U3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29u
dGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2
ZWxTaXplID0gTWF0aC5tYXgoMSwgdGhpcy5tX3NpemUgPj4gbmR4KTsKKworICAgICAgICAgICAg
bGV2ZWxEYXRhLnNldFNpemUobGV2ZWxTaXplLCBsZXZlbFNpemUpOworCisgICAgICAgICAgICBm
b3IgKHZhciBmIGluIHRjdVRleHR1cmUuQ3ViZUZhY2UpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZmFjZSA9IHRjdVRleHR1cmUuQ3ViZUZhY2VbZl07CisgICAgICAgICAgICAgICAgdmFyIGdNaW4g
PSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAg
ICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgICAgICB2YXIgZ01heCA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4
Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1h
dEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAg
dGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoCisgICAgICAgICAgICAg
ICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAgICAg
ICk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTJEKAorICAgICAg
ICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5zX2N1YmVNYXBGYWNl
c1tmYWNlXSwKKyAgICAgICAgICAgICAgICAgICAgbmR4LCB0aGlzLm1faW50ZXJuYWxGb3JtYXQs
IGxldmVsU2l6ZSwgbGV2ZWxTaXplLCAwLAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZm9y
bWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRB
Y2Nlc3MoKS5nZXREYXRhUHRyKCkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKworICAgIC8vIEJhc2ljIFRleEltYWdlM0QoKSB3aXRoIDJEIGFy
cmF5IHRleHR1cmUgdXNhZ2UKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
ZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVj
Q2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBudW1MYXllcnMKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlMkRBcnJheUNhc2UgPSBmdW5jdGlvbigKKyAgICAg
ICAgbmFtZSwgZGVzYywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG51bUxheWVycwor
ICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRB
cnJheVNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLAorICAgICAg
ICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCks
IHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICBudW1MYXllcnMsIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLm1heExldmVsQ291bnQoCisgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdo
dAorICAgICAgICAgICAgKQorICAgICAgICApOworCisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZv
cm1hdCA9IGludGVybmFsRm9ybWF0OworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5CYXNpY1RleEltYWdlMkRBcnJheUNhc2UucHJvdG90eXBlID0KKyAgICAgICAg
T2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LlRleHR1cmUyREFycmF5U3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY1RleEltYWdlMkRBcnJheUNhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuQmFzaWNUZXhJbWFnZTJEQXJyYXlDYXNlOworCisgICAgLyoqCisgICAgICogY3JlYXRl
VGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAg
IEJhc2ljVGV4SW1hZ2UyREFycmF5Q2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9CisgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgbGV2ZWxE
YXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAgICAgdGhpcy5tX3Rl
eEZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7CisgICAgICAg
IHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlz
LmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwu
Z2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisKKyAgICAgICAgdGV4ID0gdGhp
cy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJEX0FSUkFZLCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4
dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAg
dmFyIGxldmVsVyA9IE1hdGgubWF4KDEsIHRoaXMubV93aWR0aCA+PiBuZHgpOworICAgICAgICAg
ICAgdmFyIGxldmVsSCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbmR4KTsKKworICAg
ICAgICAgICAgdmFyIGdNaW4gPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21W
ZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1p
biwKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZv
cm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8u
dmFsdWVNYXgsIDQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRT
aXplKGxldmVsVywgbGV2ZWxILCB0aGlzLm1fbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxl
dmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1hZ2UzRCgKKyAgICAgICAgICAgICAgICBnbC5URVhU
VVJFXzJEX0FSUkFZLCBuZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2ZWxXLCBsZXZlbEgs
CisgICAgICAgICAgICAgICAgdGhpcy5tX251bUxheWVycywgMCwgdHJhbnNmZXJGbXQuZm9ybWF0
LAorICAgICAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBsZXZlbERhdGEuZ2V0QWNj
ZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8vIEJhc2ljIFRleEltYWdlM0QoKSB3aXRoIDNEIHRleHR1cmUgdXNhZ2UKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBp
bnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAgKi8K
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleEltYWdlM0RDYXNlID0g
ZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aAorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXh0dXJlM0RTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywK
KyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxG
b3JtYXQpLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgZGVwdGgsIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLm1heExldmVsQ291bnQoCisgICAgICAgICAgICAgICAgd2lkdGgsIGhl
aWdodCwgZGVwdGgKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLm1f
aW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICB9OworCisgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhJbWFnZTNEQ2FzZS5wcm90b3R5cGUgPQorICAg
ICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY1RleEltYWdlM0RDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LkJhc2ljVGV4SW1hZ2UzRENhc2U7CisKKyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisg
ICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgQmFzaWNUZXhJ
bWFnZTNEQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9CisgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgbGV2ZWxEYXRhID0gbmV3IHRjdVRl
eHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdCwgdGhpcy5t
X3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7CisgICAgICAgIHZhciBybmQgPSBuZXcg
ZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsK
KyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3Jt
YXQodGhpcy5tX3RleEZvcm1hdCk7CisKKyAgICAgICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3Jl
YXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzNELCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfQUxJR05NRU5ULCAxKTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlz
Lm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxldmVsVyA9IE1hdGgubWF4
KDEsIHRoaXMubV93aWR0aCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGxldmVsSCA9IE1hdGgu
bWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEQgPSBN
YXRoLm1heCgxLCB0aGlzLm1fZGVwdGggPj4gbmR4KTsKKworICAgICAgICAgICAgdmFyIGdNaW4g
PSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAg
ICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVj
dG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4s
CisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXplKGxldmVsVywgbGV2ZWxI
LCBsZXZlbEQpOworICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRH
cmFkaWVudHMoCisgICAgICAgICAgICAgICAgbGV2ZWxEYXRhLmdldEFjY2VzcygpLCBnTWluLCBn
TWF4CisgICAgICAgICAgICApOworCisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFn
ZTNEKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfM0QsIG5keCwgdGhpcy5tX2ludGVybmFs
Rm9ybWF0LCBsZXZlbFcsIGxldmVsSCwKKyAgICAgICAgICAgICAgICBsZXZlbEQsIDAsIHRyYW5z
ZmVyRm10LmZvcm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgbGV2
ZWxEYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvLyBSYW5kb21pemVkIDJEIHRleHR1cmUgc3BlY2lmaWNhdGlvbiB1
c2luZyBUZXhJbWFnZTJECisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlfQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRh
dGFUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGhlaWdodAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlJh
bmRvbU9yZGVyVGV4SW1hZ2UyRENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywg
Zm9ybWF0LCBkYXRhVHlwZSwgd2lkdGgsIGhlaWdodAorICAgICkgeworICAgICAgICAvLyBVbnNp
emVkIGludGVybmFsIGZvcm1hdC4KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuVGV4dHVyZTJEU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2Ms
IGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoCisgICAgICAgICAgICAgICAgZm9y
bWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm1heExldmVsQ291bnQoCisgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodAorICAgICAgICAgICAgKQorICAgICAgICApOworCisgICAgICAg
IHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2Zvcm1hdCA9
IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2RhdGFUeXBlID0gZGF0YVR5cGU7CisgICAgfTsKKwor
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlJhbmRvbU9yZGVyVGV4SW1hZ2UyRENh
c2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgKTsKKworICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFJhbmRvbU9yZGVyVGV4SW1hZ2UyRENh
c2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuUmFuZG9tT3JkZXJUZXhJbWFnZTJEQ2FzZTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHJldHVybiB7ZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuUmFuZG9tT3JkZXJUZXhJbWFnZTJEQ2FzZX0KKyAgICAg
Ki8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdSYW5kb21PcmRlclRleElt
YWdlMkRDYXNlSW50ZXJuYWwgPQorICAgIGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGludGVybmFsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAgIC8vIFNpemVkIGludGVybmFsIGZvcm1hdC4K
KyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KAorICAg
ICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1h
dCkKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHRlc3RjYXNlID0gbmV3IGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLlJhbmRvbU9yZGVyVGV4SW1hZ2UyRENhc2UoCisgICAgICAgICAgICBu
YW1lLCBkZXNjLCBmbXQuZm9ybWF0LCBmbXQuZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQKKyAgICAg
ICAgKTsKKyAgICAgICAgdGVzdGNhc2UubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0
OworICAgICAgICByZXR1cm4gdGVzdGNhc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGNy
ZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4K
KyAgICBSYW5kb21PcmRlclRleEltYWdlMkRDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgbGV2ZWxE
YXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAgICAgdGhpcy5tX3Rl
eEZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7CisgICAgICAg
IHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlz
LmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElH
Tk1FTlQsIDEpOworCisgICAgICAgIHZhciBsZXZlbHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLm1fbnVtTGV2ZWxzOyBpKyspCisgICAgICAgICAgICBsZXZlbHNbaV0g
PSBpOworICAgICAgICBsZXZlbHMgPSBybmQuc2h1ZmZsZShsZXZlbHMpOworCisgICAgICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAg
ICAgICB2YXIgbGV2ZWxOZHggPSBsZXZlbHNbbmR4XTsKKyAgICAgICAgICAgIHZhciBsZXZlbFcg
PSBNYXRoLm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbGV2ZWxOZHgpOworICAgICAgICAgICAgdmFy
IGxldmVsSCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbGV2ZWxOZHgpOworICAgICAg
ICAgICAgdmFyIGdNaW4gPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0
b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwK
KyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1h
dEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFs
dWVNYXgsIDQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXpl
KGxldmVsVywgbGV2ZWxIKTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29t
cG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKSwg
Z01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQu
dGV4SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCBsZXZlbE5keCwgdGhp
cy5tX2ludGVybmFsRm9ybWF0LCBsZXZlbFcsIGxldmVsSCwgMCwKKyAgICAgICAgICAgICAgICB0
aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgbGV2ZWxEYXRh
LmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICAvLyBSYW5kb21pemVkIGN1YmVtYXAgdGV4dHVyZSBzcGVjaWZpY2F0aW9uIHVz
aW5nIFRleEltYWdlMkQKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZX0K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNj
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBk
YXRhVHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICovCisgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuUmFuZG9tT3JkZXJUZXhJbWFnZUN1YmVDYXNlID0gZnVu
Y3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGZvcm1hdCwgZGF0YVR5cGUsIHNpemUKKyAgICAp
IHsKKyAgICAgICAgLy8gVW5zaXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAg
ICAgIHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQo
CisgICAgICAgICAgICAgICAgZm9ybWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgc2l6ZSwg
ZGVNYXRoLmxvZ1RvRmxvb3Ioc2l6ZSkgKyAxCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0
OworICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPSBkYXRhVHlwZTsKKyAgICB9OworCisgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuUmFuZG9tT3JkZXJUZXhJbWFnZUN1YmVDYXNlLnBy
b3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLnByb3RvdHlwZQorICAgICAg
ICApOworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgUmFuZG9tT3Jk
ZXJUZXhJbWFnZUN1YmVDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlJhbmRvbU9yZGVyVGV4SW1hZ2VDdWJlQ2FzZTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEByZXR1cm4ge2VzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlJhbmRvbU9yZGVyVGV4SW1hZ2VDdWJlQ2FzZX0KKyAgICAgKi8KKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdSYW5kb21PcmRlclRleEltYWdlQ3ViZUNhc2VJ
bnRlcm5hbCA9CisgICAgZnVuY3Rpb24obmFtZSwgZGVzYywgaW50ZXJuYWxGb3JtYXQsIHNpemUp
IHsKKyAgICAgICAgLy8gU2l6ZWQgaW50ZXJuYWwgZm9ybWF0LgorICAgICAgICB2YXIgZm10ID0g
Z2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoCisgICAgICAgICAgICBnbHVUZXh0dXJl
VXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KQorICAgICAgICApOworICAg
ICAgICB2YXIgdGVzdGNhc2UgPSBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuUmFu
ZG9tT3JkZXJUZXhJbWFnZUN1YmVDYXNlKAorICAgICAgICAgICAgbmFtZSwgZGVzYywgZm10LmZv
cm1hdCwgZm10LmRhdGFUeXBlLCBzaXplCisgICAgICAgICk7CisgICAgICAgIHRlc3RjYXNlLm1f
aW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgcmV0dXJuIHRlc3RjYXNl
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgUmFuZG9tT3JkZXJUZXhJbWFnZUN1
YmVDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0KKyAgICBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBsZXZlbERhdGEgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWwoCisgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0LCB0aGlzLm1fc2l6
ZSwgdGhpcy5tX3NpemUKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRv
bS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMuZnVsbE5hbWUoKSkpOworCisgICAg
ICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5t
X2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsKKyAgICAgICAg
dGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAg
ICAgICAgLy8gTGV2ZWwtZmFjZSBwYWlycy4KKyAgICAgICAgdmFyIGltYWdlcyA9IFtdOworCisg
ICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKQor
ICAgICAgICAgICAgZm9yICh2YXIgZiBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZdOworICAgICAgICAgICAg
ICAgIGltYWdlc1tuZHggKiA2ICsgZmFjZV0gPSB7bmR4OiBuZHgsIGZhY2U6IGZhY2V9OworICAg
ICAgICAgICAgfQorCisgICAgICAgIGltYWdlcyA9IHJuZC5zaHVmZmxlKGltYWdlcyk7CisKKyAg
ICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgaW1hZ2VzLmxlbmd0aDsgbmR4KyspIHsKKyAg
ICAgICAgICAgIHZhciBsZXZlbE5keCA9IGltYWdlc1tuZHhdLm5keDsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlLkN1YmVGYWNlfSAqLworICAgICAg
ICAgICAgdmFyIGZhY2UgPSBpbWFnZXNbbmR4XS5mYWNlOworICAgICAgICAgICAgdmFyIGxldmVs
U2l6ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXplID4+IGxldmVsTmR4KTsKKworICAgICAgICAg
ICAgdmFyIGdNaW4gPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3Io
CisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAg
ICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdElu
Zm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVN
YXgsIDQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXplKGxl
dmVsU2l6ZSwgbGV2ZWxTaXplKTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRo
Q29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3Mo
KSwgZ01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRl
eHQudGV4SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5zX2N1YmVNYXBGYWNlc1tmYWNlXSwKKyAgICAgICAgICAgICAgICBsZXZlbE5keCwgdGhp
cy5tX2ludGVybmFsRm9ybWF0LCBsZXZlbFNpemUsIGxldmVsU2l6ZSwgMCwKKyAgICAgICAgICAg
ICAgICB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgbGV2
ZWxEYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvLyBUZXhJbWFnZTJEKCkgdW5wYWNrIGFsaWdubWVudCBjYXNlLgor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhVHlwZQorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gbnVtTGV2ZWxzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGFsaWdu
bWVudAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdl
MkRBbGlnbkNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgZm9ybWF0LCBkYXRh
VHlwZSwgd2lkdGgsIGhlaWdodCwgbnVtTGV2ZWxzLCBhbGlnbm1lbnQKKyAgICApIHsKKyAgICAg
ICAgLy8gVW5zaXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBu
YW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAg
ICAgICAgIGZvcm1hdCwgZGF0YVR5cGUKKyAgICAgICAgICAgICksIHdpZHRoLCBoZWlnaHQsIG51
bUxldmVscworICAgICAgICApOworCisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGZv
cm1hdDsKKyAgICAgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2Rh
dGFUeXBlID0gZGF0YVR5cGU7CisgICAgICAgIHRoaXMubV9hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7
CisgICAgfTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRB
bGlnbkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgKTsKKwor
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRleEltYWdlMkRBbGlnbkNh
c2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuVGV4SW1hZ2UyREFsaWduQ2FzZTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgKiBAcGFyYW0ge251
bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICog
QHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscwor
ICAgICogQHBhcmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqIEByZXR1cm4ge2VzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRBbGlnbkNhc2V9CisgICAgICovCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWduQ2FzZUludGVy
bmFsID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBudW1MZXZlbHMsIGFsaWdubWVudAorICAgICkgeworICAgICAgICAvLyBTaXpl
ZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRU
cmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxG
b3JtYXQoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICk7CisgICAgICAgIHZhciB0ZXN0Y2FzZSA9
IG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJEQWxpZ25DYXNlKAor
ICAgICAgICAgICAgbmFtZSwgZGVzYywgZm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLAorICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgbnVtTGV2ZWxzLCBhbGlnbm1lbnQKKyAgICAgICAgKTsKKyAg
ICAgICAgdGVzdGNhc2UubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAg
ICByZXR1cm4gdGVzdGNhc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1
cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJE
QWxpZ25DYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0KKyAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJ9ICov
IHZhciBkYXRhOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVO
VCwgdGhpcy5tX2FsaWdubWVudCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dGhpcy5tX251bUxldmVsczsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRo
Lm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBN
YXRoLm1heCgxLCB0aGlzLm1faGVpZ2h0ID4+IG5keCk7CisgICAgICAgICAgICB2YXIgY29sb3JB
ID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoCisgICAgICAg
ICAgICAgICAgICAgIFsxLjAsIDAuMCwgMC4wLCAxLjBdLAorICAgICAgICAgICAgICAgICAgICBk
ZU1hdGguc3VidHJhY3QoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0
SW5mby52YWx1ZU1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJ
bmZvLnZhbHVlTWluCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApLCB0
aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IHZhciBjb2xvckIgPSBkZU1hdGguYWRkKAorICAgICAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBs
eSgKKyAgICAgICAgICAgICAgICAgICAgWzAuMCwgMS4wLCAwLjAsIDEuMF0sCisgICAgICAgICAg
ICAgICAgICAgIGRlTWF0aC5zdWJ0cmFjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X3RleEZvcm1hdEluZm8udmFsdWVNaW4KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgICksIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluCisgICAgICAgICAgICApOwor
CisgICAgICAgICAgICB2YXIgcm93UGl0Y2ggPSBkZU1hdGguZGVBbGlnbjMyKAorICAgICAgICAg
ICAgICAgIGxldmVsVyAqIHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxTaXplKCksIHRoaXMubV9h
bGlnbm1lbnQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB2YXIgY2VsbFNpemUgPSBNYXRo
Lm1heCgxLCBNYXRoLm1pbihsZXZlbFcgPj4gMiwgbGV2ZWxIID4+IDIpKTsKKyAgICAgICAgICAg
IGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIocm93UGl0Y2ggKiBsZXZlbEgpOworICAgICAgICAgICAg
dmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzKHtmb3JtYXQ6IHRo
aXMubV90ZXhGb3JtYXQsIHdpZHRoOiBsZXZlbFcsCisgICAgICAgICAgICAgICAgICAgIGhlaWdo
dDogbGV2ZWxILCByb3dQaXRjaDogcm93UGl0Y2gsIGRhdGE6IGRhdGF9CisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChhY2Nlc3MsIGNl
bGxTaXplLCBjb2xvckEsIGNvbG9yQgorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGhp
cy5tX2NvbnRleHQudGV4SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELCBu
ZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2ZWxXLCBsZXZlbEgsIDAsCisgICAgICAgICAg
ICAgICAgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX2RhdGFUeXBlLAorICAgICAgICAgICAgICAgIGFj
Y2Vzcy5nZXREYXRhUHRyKCkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgLy8gVGV4SW1hZ2VDdWJlIHVucGFjayBhbGlnbm1lbnQgY2FzZS4KKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1h
dAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhVHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzaXplCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUxldmVscworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBhbGlnbm1lbnQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXhJbWFnZUN1YmVBbGlnbkNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVz
YywgZm9ybWF0LCBkYXRhVHlwZSwgc2l6ZSwgbnVtTGV2ZWxzLCBhbGlnbm1lbnQKKyAgICApIHsK
KyAgICAgICAgLy8gVW5zaXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAg
IHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoCisg
ICAgICAgICAgICAgICAgZm9ybWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgc2l6ZSwgbnVt
TGV2ZWxzCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gZm9y
bWF0OworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fZGF0
YVR5cGUgPSBkYXRhVHlwZTsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsK
KyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2VDdWJl
QWxpZ25DYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLnByb3Rv
dHlwZQorICAgICAgICApOworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisg
ICAgVGV4SW1hZ2VDdWJlQWxpZ25DYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlQ3ViZUFsaWduQ2FzZTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gYWxpZ25tZW50CisgICAgICogQHJldHVybiB7ZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2VDdWJlQWxpZ25DYXNlfQorICAgICAqLworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUlu
dGVybmFsID0KKyAgICBmdW5jdGlvbihuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwg
bnVtTGV2ZWxzLCBhbGlnbm1lbnQpIHsKKyAgICAgICAgLy8gU2l6ZWQgaW50ZXJuYWwgZm9ybWF0
LgorICAgICAgICB2YXIgZm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoCisg
ICAgICAgICAgICBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0KQorICAgICAgICApOworICAgICAgICB2YXIgdGVzdGNhc2UgPSBuZXcgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2VDdWJlQWxpZ25DYXNlKAorICAgICAgICAgICAgbmFt
ZSwgZGVzYywgZm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLCBzaXplLCBudW1MZXZlbHMsIGFsaWdu
bWVudAorICAgICAgICApOworICAgICAgICB0ZXN0Y2FzZS5tX2ludGVybmFsRm9ybWF0ID0gaW50
ZXJuYWxGb3JtYXQ7CisgICAgICAgIHJldHVybiB0ZXN0Y2FzZTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogY3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLgorICAgIFRleEltYWdlQ3ViZUFsaWduQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4
dHVyZSA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAg
ICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhp
cy5mdWxsTmFtZSgpKSk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJ9ICovIHZhciBk
YXRhOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVO
VCwgdGhpcy5tX2FsaWdubWVudCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dGhpcy5tX251bUxldmVsczsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFNpemUgPSBN
YXRoLm1heCgxLCB0aGlzLm1fc2l6ZSA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGNlbGxTaXpl
ID0gTWF0aC5tYXgoMSwgbGV2ZWxTaXplID4+IDIpOworICAgICAgICAgICAgdmFyIHJvd1BpdGNo
ID0gZGVNYXRoLmRlQWxpZ24zMigKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0Lmdl
dFBpeGVsU2l6ZSgpICogbGV2ZWxTaXplLCB0aGlzLm1fYWxpZ25tZW50CisgICAgICAgICAgICAp
OworICAgICAgICAgICAgdmFyIGNvbG9yQSA9IGRlTWF0aC5hZGQoZGVNYXRoLm11bHRpcGx5KAor
ICAgICAgICAgICAgICAgIFsxLjAsIDAuMCwgMC4wLCAxLjBdLCBkZU1hdGguc3VidHJhY3QoCisg
ICAgICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1f
dGV4Rm9ybWF0SW5mby52YWx1ZU1pbgorICAgICAgICAgICAgICAgICkpLCB0aGlzLm1fdGV4Rm9y
bWF0SW5mby52YWx1ZU1pbgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciBjb2xvckIg
PSBkZU1hdGguYWRkKGRlTWF0aC5tdWx0aXBseSgKKyAgICAgICAgICAgICAgICBbMC4wLCAxLjAs
IDAuMCwgMS4wXSwgZGVNYXRoLnN1YnRyYWN0KAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
dGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4KKyAg
ICAgICAgICAgICAgICApKSwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4KKyAgICAgICAg
ICAgICk7CisKKyAgICAgICAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIocm93UGl0Y2ggKiBs
ZXZlbFNpemUpOworICAgICAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVs
QnVmZmVyQWNjZXNzKHtmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsIHdpZHRoOiBsZXZlbFNpemUs
CisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbGV2ZWxTaXplLCByb3dQaXRjaDogcm93UGl0
Y2gsIGRhdGE6IGRhdGF9CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRjdVRleHR1
cmVVdGlsLmZpbGxXaXRoR3JpZChhY2Nlc3MsIGNlbGxTaXplLCBjb2xvckEsIGNvbG9yQgorICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgZm9yICh2YXIgZiBpbiB0Y3VUZXh0dXJlLkN1YmVG
YWNlKSB7CisgICAgICAgICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1YmVGYWNlW2Zd
OworICAgICAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAg
ICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzW2Zh
Y2VdLAorICAgICAgICAgICAgICAgICAgICBuZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2
ZWxTaXplLCBsZXZlbFNpemUsIDAsCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mb3JtYXQs
IHRoaXMubV9kYXRhVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzLmdldERhdGFQdHIo
KQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLy8gVGV4SW1hZ2UyRCgpIHVucGFjayBwYXJhbWV0ZXJzIGNhc2UuCisgICAgLyoqCisg
ICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50
ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd0xlbmd0aAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBza2lwUm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwUGl4
ZWxzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqLworICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRQYXJhbXNDYXNlID0gZnVuY3Rpb24o
CisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCByb3dM
ZW5ndGgsIHNraXBSb3dzLAorICAgICAgICBza2lwUGl4ZWxzLCBhbGlnbm1lbnQKKyAgICApIHsK
KyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2Uu
Y2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2MsCisgICAgICAgICAgICBnbHVUZXh0
dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKKyAgICAgICAgICAg
IHdpZHRoLCBoZWlnaHQsIDEKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9y
bWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgIHRoaXMubV9yb3dMZW5ndGggPSByb3dMZW5n
dGg7CisgICAgICAgIHRoaXMubV9za2lwUm93cyA9IHNraXBSb3dzOworICAgICAgICB0aGlzLm1f
c2tpcFBpeGVscyA9IHNraXBQaXhlbHM7CisgICAgICAgIHRoaXMubV9hbGlnbm1lbnQgPSBhbGln
bm1lbnQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleElt
YWdlMkRQYXJhbXNDYXNlLnByb3RvdHlwZSA9CisgICAgT2JqZWN0LmNyZWF0ZShlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90b3R5cGUpOworCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyRFBhcmFtc0Nhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
VGV4SW1hZ2UyRFBhcmFtc0Nhc2U7CisKKyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisg
ICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyRFBhcmFt
c0Nhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPQorICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlz
Lm1fdGV4Rm9ybWF0KTsKKyAgICAgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV90ZXhGb3JtYXQu
Z2V0UGl4ZWxTaXplKCk7CisgICAgICAgIHZhciByb3dMZW5ndGggPSB0aGlzLm1fcm93TGVuZ3Ro
ID4gMCA/IHRoaXMubV9yb3dMZW5ndGggOiB0aGlzLm1fd2lkdGg7CisgICAgICAgIHZhciByb3dQ
aXRjaCA9IGRlTWF0aC5kZUFsaWduMzIocm93TGVuZ3RoICogcGl4ZWxTaXplLCB0aGlzLm1fYWxp
Z25tZW50KTsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMubV9oZWlnaHQgKyB0aGlzLm1fc2tp
cFJvd3M7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICAvKiogQHR5cGUge0FycmF5
QnVmZmVyfSAqLyB2YXIgZGF0YTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAg
ICAgICAgdGhpcy5tX251bUxldmVscyA9PSAxLCAnTnVtYmVyIG9mIGxldmVscyBkaWZmZXJlbnQg
dG8gMScsCisgICAgICAgICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICApOworCisgICAgICAgIC8v
IEZpbGwgZGF0YSB3aXRoIGdyaWQuCisgICAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIocm93
UGl0Y2ggKiBoZWlnaHQgKyB0aGlzLm1fc2tpcFBpeGVscyAqIHBpeGVsU2l6ZSk7CisKKyAgICAg
ICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhG
b3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbgorICAgICAg
ICApOworICAgICAgICB2YXIgY0JpYXMgPSB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbjsK
KyAgICAgICAgdmFyIGNvbG9yQSA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVs
dGlwbHkoCisgICAgICAgICAgICAgICAgWzEuMCwgMC4wLCAwLjAsIDEuMF0sIGNTY2FsZQorICAg
ICAgICAgICAgKSwgY0JpYXMKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGNvbG9yQiA9IGRlTWF0
aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoCisgICAgICAgICAgICAgICAgWzAu
MCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZQorICAgICAgICAgICAgKSwgY0JpYXMKKyAgICAgICAg
KTsKKworICAgICAgICB2YXIgYWNjZXNzV2l0aE9mZnNldCA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVs
QnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQs
CisgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMubV93aWR0aCwKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IHRoaXMubV9oZWlnaHQsCisgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNo
LAorICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICAgICAgb2Zmc2V0OiB0
aGlzLm1fc2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXpl
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3Jp
ZChhY2Nlc3NXaXRoT2Zmc2V0LCA0LCBjb2xvckEsIGNvbG9yQgorICAgICAgICApOworICAgICAg
ICB2YXIgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAg
ICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICB3aWR0
aDogdGhpcy5tX3dpZHRoLAorICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5tX2hlaWdodCwK
KyAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgZGF0
YTogZGF0YSwKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLm1fY29udGV4dC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdUSCwgdGhpcy5tX3Jvd0xlbmd0aCk7CisgICAg
ICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIHRoaXMu
bV9za2lwUm93cyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19TS0lQX1BJWEVMUywgdGhpcy5tX3NraXBQaXhlbHMpOworICAgICAgICB0aGlzLm1fY29udGV4
dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCB0aGlzLm1fYWxpZ25tZW50KTsKKwor
ICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRo
aXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIHRo
aXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAgICBnbC5URVhUVVJFXzJELCAwLCB0
aGlzLm1faW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICB0aGlzLm1fd2lkdGgsIHRoaXMubV9o
ZWlnaHQsIDAsCisgICAgICAgICAgICB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRh
dGFUeXBlLCBhY2Nlc3MuZ2V0RGF0YVB0cigpCisgICAgICAgICk7CisgICAgfTsKKworICAgIC8v
IFRleEltYWdlM0QoKSB1bnBhY2sgcGFyYW1ldGVycyBjYXNlLgorICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXh0dXJlM0RTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9y
bWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpbWFnZUhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dMZW5ndGgKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gc2tpcEltYWdlcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lw
Um93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwUGl4ZWxzCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGFsaWdubWVudAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzLlRleEltYWdlM0RQYXJhbXNDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2Ms
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW1hZ2VIZWlnaHQsCisgICAg
ICAgIHJvd0xlbmd0aCwgc2tpcEltYWdlcywgc2tpcFJvd3MsIHNraXBQaXhlbHMsIGFsaWdubWVu
dAorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJl
M0RTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywKKyAgICAgICAg
ICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpLAor
ICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDEKKyAgICAgICAgKTsKKworICAgICAg
ICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5t
X2ltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7CisgICAgICAgIHRoaXMubV9yb3dMZW5ndGggPSBy
b3dMZW5ndGg7CisgICAgICAgIHRoaXMubV9za2lwSW1hZ2VzID0gc2tpcEltYWdlczsKKyAgICAg
ICAgdGhpcy5tX3NraXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxz
ID0gc2tpcFBpeGVsczsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAg
ICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UzRFBhcmFt
c0Nhc2UucHJvdG90eXBlID0KKyAgICBPYmplY3QuY3JlYXRlKGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlLnByb3RvdHlwZSk7CisKKyAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTNEUGFyYW1zQ2FzZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlM0RT
cGVjQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTNEUGFyYW1zQ2FzZS5wcm90b3R5
cGUuY3JlYXRlVGV4dHVyZSA9CisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0cmFuc2Zl
ckZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KHRoaXMubV90ZXhGb3JtYXQp
OworICAgICAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5tX3RleEZvcm1hdC5nZXRQaXhlbFNpemUo
KTsKKyAgICAgICAgdmFyIHJvd0xlbmd0aCA9IHRoaXMubV9yb3dMZW5ndGggPiAwID8gdGhpcy5t
X3Jvd0xlbmd0aCA6IHRoaXMubV93aWR0aDsKKyAgICAgICAgdmFyIHJvd1BpdGNoID0gZGVNYXRo
LmRlQWxpZ24zMihyb3dMZW5ndGggKiBwaXhlbFNpemUsIHRoaXMubV9hbGlnbm1lbnQpOworICAg
ICAgICB2YXIgaW1hZ2VIZWlnaHQgPSB0aGlzLm1faW1hZ2VIZWlnaHQgPiAwID8KKyAgICAgICAg
ICAgIHRoaXMubV9pbWFnZUhlaWdodCA6IHRoaXMubV9oZWlnaHQ7CisgICAgICAgIHZhciBzbGlj
ZVBpdGNoID0gaW1hZ2VIZWlnaHQgKiByb3dQaXRjaDsKKworICAgICAgICB2YXIgdGV4ID0gbnVs
bDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGE7CisKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMgPT0gMSwg
J051bWJlciBvZiBsZXZlbHMgZGlmZmVyZW50IHRvIDEnLAorICAgICAgICAgICAgZmFsc2UsIHRy
dWUKKyAgICAgICAgKTsKKworICAgICAgICAvLyBGaWxsIGRhdGEgd2l0aCBncmlkLgorICAgICAg
ICBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHNsaWNlUGl0Y2ggKiAodGhpcy5tX2RlcHRoICsgdGhp
cy5tX3NraXBJbWFnZXMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
c2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplKTsKKwor
ICAgICAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRyYWN0KAorICAgICAgICAgICAgdGhpcy5t
X3RleEZvcm1hdEluZm8udmFsdWVNYXgsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluCisg
ICAgICAgICk7CisgICAgICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVl
TWluOworICAgICAgICB2YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0
aC5tdWx0aXBseSgKKyAgICAgICAgICAgICAgICBbMS4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxl
CisgICAgICAgICAgICApLCBjQmlhcworICAgICAgICApOworICAgICAgICB2YXIgY29sb3JCID0g
ZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseSgKKyAgICAgICAgICAgICAg
ICBbMC4wLCAxLjAsIDAuMCwgMS4wXSwgY1NjYWxlCisgICAgICAgICAgICApLCBjQmlhcworICAg
ICAgICApOworCisgICAgICAgIHZhciBhY2Nlc3NXaXRoT2Zmc2V0ID0gbmV3IHRjdVRleHR1cmUu
UGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZv
cm1hdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5tX3dpZHRoLAorICAgICAgICAgICAg
ICAgIGhlaWdodDogdGhpcy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICBkZXB0aDogdGhpcy5t
X2RlcHRoLAorICAgICAgICAgICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICBzbGljZVBpdGNoOiBzbGljZVBpdGNoLAorICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEs
CisgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm1fc2tpcEltYWdlcyAqIHNsaWNlUGl0Y2gg
KyB0aGlzLm1fc2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxT
aXplCisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJl
LlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV90ZXhG
b3JtYXQsCisgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMubV93aWR0aCwKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IHRoaXMubV9oZWlnaHQsCisgICAgICAgICAgICAgICAgZGVwdGg6IHRoaXMu
bV9kZXB0aCwKKyAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgc2xpY2VQaXRjaDogc2xpY2VQaXRjaCwKKyAgICAgICAgICAgICAgICBkYXRhOiBkYXRh
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKAor
ICAgICAgICAgICAgYWNjZXNzV2l0aE9mZnNldCwgNCwgY29sb3JBLCBjb2xvckIKKyAgICAgICAg
KTsKKworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfSU1BR0Vf
SEVJR0hULCB0aGlzLm1faW1hZ2VIZWlnaHQpOworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhl
bFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdUSCwgdGhpcy5tX3Jvd0xlbmd0aCk7CisgICAgICAg
IHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX0lNQUdFUywgdGhpcy5t
X3NraXBJbWFnZXMpOworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfU0tJUF9ST1dTLCB0aGlzLm1fc2tpcFJvd3MpOworICAgICAgICB0aGlzLm1fY29udGV4dC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHRoaXMubV9za2lwUGl4ZWxzKTsKKyAg
ICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgdGhp
cy5tX2FsaWdubWVudCk7CisKKyAgICAgICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNE
LCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTNEKAorICAgICAgICAgICAg
Z2wuVEVYVFVSRV8zRCwgMCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgdGhp
cy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgsIDAsCisgICAgICAgICAgICB0
cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBhY2Nlc3MuZ2V0RGF0YVB0
cigpCisgICAgICAgICk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRT
cGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBkYXRhVHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5CYXNpY1RleFN1YkltYWdlMkRDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUs
IGRlc2MsIGZvcm1hdCwgZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQKKyAgICApIHsKKyAgICAgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UuY2FsbCgKKyAg
ICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJG
b3JtYXQoCisgICAgICAgICAgICAgICAgZm9ybWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwg
d2lkdGgsIGhlaWdodCwgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3Vu
dCgKKyAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0CisgICAgICAgICAgICApCisgICAgICAg
ICk7CisKKyAgICAgICAgdGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2lu
dGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPSBkYXRhVHlw
ZTsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhT
dWJJbWFnZTJEQ2FzZS5wcm90b3R5cGUgPQorICAgIE9iamVjdC5jcmVhdGUoZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlKTsKKworICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3ViSW1hZ2UyRENhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
QmFzaWNUZXhTdWJJbWFnZTJEQ2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHJldHVybiB7ZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuQmFzaWNUZXhTdWJJbWFnZTJEQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdCYXNpY1RleFN1YkltYWdlMkRDYXNlSW50ZXJuYWwg
PQorICAgIGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSB7CisgICAgICAgIC8vIFNpemVkIGludGVybmFsIGZvcm1hdC4KKyAgICAgICAgdmFyIGZtdCA9
IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgZ2x1VGV4dHVy
ZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgKTsKKyAg
ICAgICAgdmFyIHRlc3RjYXNlID0gbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJh
c2ljVGV4U3ViSW1hZ2UyRENhc2UoCisgICAgICAgICAgICBuYW1lLCBkZXNjLCBmbXQuZm9ybWF0
LCBmbXQuZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgKTsKKyAgICAgICAgdGVzdGNh
c2UubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm4gdGVz
dGNhc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLgorICAgIEJhc2ljVGV4U3ViSW1hZ2UyRENhc2UucHJvdG90eXBlLmNyZWF0
ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAg
IHZhciBkYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAgICAgdGhp
cy5tX3RleEZvcm1hdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7Cisg
ICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFz
aCh0aGlzLmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMu
bV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgo
MSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0gTWF0aC5t
YXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGdNaW4gPSBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAg
cm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICB0aGlz
Lm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9yKAor
ICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAg
ICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAg
ICk7CisKKyAgICAgICAgICAgIGRhdGEuc2V0U2l6ZShsZXZlbFcsIGxldmVsSCk7CisgICAgICAg
ICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cygKKyAgICAgICAg
ICAgICAgICBkYXRhLmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAgICAgICApOworCisg
ICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTJEKAorICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfMkQsIG5keCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LCBsZXZlbFcsIGxldmVsSCwg
MCwKKyAgICAgICAgICAgICAgICB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAg
ICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkKKyAgICAgICAgICAgICk7
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fbnVt
TGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxldmVsVyA9IE1hdGgubWF4KDEsIHRo
aXMubV93aWR0aCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGxldmVsSCA9IE1hdGgubWF4KDEs
IHRoaXMubV9oZWlnaHQgPj4gbmR4KTsKKworICAgICAgICAgICAgdmFyIHcgPSBybmQuZ2V0SW50
KDEsIGxldmVsVyk7CisgICAgICAgICAgICB2YXIgaCA9IHJuZC5nZXRJbnQoMSwgbGV2ZWxIKTsK
KyAgICAgICAgICAgIHZhciB4ID0gcm5kLmdldEludCgwLCBsZXZlbFcgLSB3KTsKKyAgICAgICAg
ICAgIHZhciB5ID0gcm5kLmdldEludCgwLCBsZXZlbEggLSBoKTsKKworICAgICAgICAgICAgdmFy
IGNvbG9yQSA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAg
ICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluLAorICAgICAg
ICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICAp
OworICAgICAgICAgICAgdmFyIGNvbG9yQiA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZv
LnZhbHVlTWluLAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4
LCA0CisgICAgICAgICAgICApOworICAgICAgICAgICAgdmFyIGNlbGxTaXplID0gcm5kLmdldElu
dCgyLCAxNik7CisKKyAgICAgICAgICAgIGRhdGEuc2V0U2l6ZSh3LCBoKTsKKyAgICAgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAgICBkYXRhLmdldEFj
Y2VzcygpLCBjZWxsU2l6ZSwgY29sb3JBLCBjb2xvckIKKyAgICAgICAgICAgICk7CisKKyAgICAg
ICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQoCisgICAgICAgICAgICAgICAgZ2wu
VEVYVFVSRV8yRCwgbmR4LCB4LCB5LCB3LCBoLCB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5
cGUsCisgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkKKyAgICAg
ICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1
cmVDdWJlU3BlY0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZGF0YVR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAg
ICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3ViSW1hZ2VD
dWJlQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBmb3JtYXQsIGRhdGFUeXBl
LCBzaXplCisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRl
eHR1cmVDdWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2MsIGds
dVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoCisgICAgICAgICAgICAgICAgZm9ybWF0
LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgc2l6ZSwgZGVNYXRoLmxvZ1RvRmxvb3Ioc2l6ZSkg
KyAxCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gZm9ybWF0
OworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9ybWF0OworICAgICAgICB0aGlzLm1fZGF0YVR5
cGUgPSBkYXRhVHlwZTsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuQmFzaWNUZXhTdWJJbWFnZUN1YmVDYXNlLnByb3RvdHlwZSA9CisgICAgT2JqZWN0LmNyZWF0
ZShlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLnByb3Rv
dHlwZSk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY1Rl
eFN1YkltYWdlQ3ViZUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdWJJbWFnZUN1YmVDYXNlOworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBzaXplCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMubmV3QmFzaWNUZXhTdWJJbWFnZUN1YmVDYXNlSW50ZXJuYWwgPQorICAgIGZ1bmN0aW9uKG5h
bWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBzaXplKSB7CisgICAgICAgIC8vIFNpemVkIGludGVy
bmFsIGZvcm1hdC4KKyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVy
Rm9ybWF0KAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdChp
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHRlc3RjYXNlID0KKyAgICAg
ICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN1YkltYWdl
Q3ViZUNhc2UoCisgICAgICAgICAgICBuYW1lLCBkZXNjLCBmbXQuZm9ybWF0LCBmbXQuZGF0YVR5
cGUsCisgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgdGVzdGNhc2UubV9pbnRlcm5hbEZvcm1h
dCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm4gdGVzdGNhc2U7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY1RleFN1YkltYWdlQ3ViZUNhc2UucHJvdG90eXBl
LmNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7Cisg
ICAgICAgIHZhciBkYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAg
ICAgdGhpcy5tX3RleEZvcm1hdCwgdGhpcy5tX3NpemUsIHRoaXMubV9zaXplCisgICAgICAgICk7
CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5n
SGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfQ1VCRV9NQVAsIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxTaXpl
ID0gTWF0aC5tYXgoMSwgdGhpcy5tX3NpemUgPj4gbmR4KTsKKyAgICAgICAgICAgIGRhdGEuc2V0
U2l6ZShsZXZlbFNpemUsIGxldmVsU2l6ZSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGZhY2Ug
PSAvKiogQHR5cGUge3RjdVRleHR1cmUuQ3ViZUZhY2V9ICovICgwKTsKKyAgICAgICAgICAgICAg
ICBmYWNlIDwgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuc19jdWJlTWFwRmFjZXMubGVu
Z3RoOworICAgICAgICAgICAgICAgIGZhY2UrKykgeworICAgICAgICAgICAgICAgIHZhciBnTWlu
ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAg
ICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluLAorICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgdmFyIGdNYXggPSBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3Rl
eEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3Jt
YXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAg
ICAgICAgICBkYXRhLmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAgICAgICAgICAgKTsK
KworICAgICAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAg
ICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzW2Zh
Y2VdLCBuZHgsCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2
ZWxTaXplLCBsZXZlbFNpemUsIDAsCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mb3JtYXQs
IHRoaXMubV9kYXRhVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3MoKS5n
ZXREYXRhUHRyKCkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gUmUtc3BlY2lmeSBwYXJ0cyBvZiBlYWNoIGZhY2UgYW5kIGxldmVsLgor
ICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykg
eworICAgICAgICAgICAgdmFyIGxldmVsU2l6ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXplID4+
IG5keCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGYgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkg
eworICAgICAgICAgICAgICAgIHZhciBmYWNlID0gdGN1VGV4dHVyZS5DdWJlRmFjZVtmXTsKKwor
ICAgICAgICAgICAgICAgIHZhciB3ID0gcm5kLmdldEludCgxLCBsZXZlbFNpemUpOworICAgICAg
ICAgICAgICAgIHZhciBoID0gcm5kLmdldEludCgxLCBsZXZlbFNpemUpOworICAgICAgICAgICAg
ICAgIHZhciB4ID0gcm5kLmdldEludCgwLCBsZXZlbFNpemUgLSB3KTsKKyAgICAgICAgICAgICAg
ICB2YXIgeSA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxTaXplIC0gaCk7CisKKyAgICAgICAgICAgICAg
ICB2YXIgY29sb3JBID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9y
KAorICAgICAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWlu
LAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAor
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdmFyIGNvbG9yQiA9IGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICAgICAg
cm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgIHZhciBjZWxsU2l6ZSA9IHJuZC5nZXRJbnQoMiwgMTYpOworCisgICAgICAg
ICAgICAgICAgZGF0YS5zZXRTaXplKHcsIGgpOworICAgICAgICAgICAgICAgIHRjdVRleHR1cmVV
dGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3MoKSwg
Y2VsbFNpemUsIGNvbG9yQSwgY29sb3JCCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQoCisgICAgICAgICAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzW2ZhY2VdLAorICAg
ICAgICAgICAgICAgICAgICBuZHgsIHgsIHksIHcsIGgsIHRoaXMubV9mb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMubV9kYXRhVHlwZSwgZGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRy
KCkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsK
KworICAgIC8vIFRleFN1YkltYWdlMkQoKSB1bnBhY2sgcGFyYW1ldGVycyBjYXNlLgorICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJYCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IHN1YlkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViVworICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzdWJICisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd0xlbmd0aAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwUm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
a2lwUGl4ZWxzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqLworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleFN1YkltYWdlMkRQYXJhbXNDYXNlID0g
ZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBzdWJYLCBzdWJZLCBzdWJXLCBzdWJILAorICAgICAgICByb3dMZW5ndGgsIHNraXBSb3dz
LCBza2lwUGl4ZWxzLCBhbGlnbm1lbnQKKyAgICApIHsKKyAgICAgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMs
IG5hbWUsIGRlc2MsCisgICAgICAgICAgICBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9y
bWF0KGludGVybmFsRm9ybWF0KSwKKyAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIDEKKyAgICAg
ICAgKTsKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7Cisg
ICAgICAgIHRoaXMubV9zdWJYID0gc3ViWDsKKyAgICAgICAgdGhpcy5tX3N1YlkgPSBzdWJZOwor
ICAgICAgICB0aGlzLm1fc3ViVyA9IHN1Ylc7CisgICAgICAgIHRoaXMubV9zdWJIID0gc3ViSDsK
KyAgICAgICAgdGhpcy5tX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgdGhpcy5tX3Nr
aXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxzID0gc2tpcFBpeGVs
czsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICB9OworCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyRFBhcmFtc0Nhc2UucHJv
dG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLnByb3RvdHlwZQorICAgICAgICAp
OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4U3ViSW1hZ2Uy
RFBhcmFtc0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyRFBhcmFtc0Nhc2U7CisKKyAgICAvKioKKyAg
ICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuCisgICAgVGV4U3ViSW1hZ2UyRFBhcmFtc0Nhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1
cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0
aWwuZ2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAgICAgIHZhciBwaXhl
bFNpemUgPSB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2YXIgdGV4
ID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGE7CisK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMg
PT0gMSwgJ051bWJlciBvZiBsZXZlbHMgZGlmZmVyZW50IHRvIDEnLAorICAgICAgICAgICAgZmFs
c2UsIHRydWUKKyAgICAgICAgKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisKKyAgICAgICAgLy8gRmlyc3QgZmlsbCB0ZXh0dXJlIHdpdGggZ3JhZGll
bnQuCisgICAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoCisgICAgICAgICAgICBkZU1hdGgu
ZGVBbGlnbjMyKHRoaXMubV93aWR0aCAqIHBpeGVsU2l6ZSwgNCkgKiB0aGlzLm1faGVpZ2h0Cisg
ICAgICAgICk7CisgICAgICAgIHZhciBhY2Nlc3MgPSBuZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzcyh7CisgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLm1fdGV4Rm9ybWF0LAorICAg
ICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgaGVpZ2h0
OiB0aGlzLm1faGVpZ2h0LAorICAgICAgICAgICAgICAgIHJvd1BpdGNoOiBkZU1hdGguZGVBbGln
bjMyKHRoaXMubV93aWR0aCAqIHBpeGVsU2l6ZSwgNCksCisgICAgICAgICAgICAgICAgZGF0YTog
ZGF0YQorICAgICAgICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29t
cG9uZW50R3JhZGllbnRzKGFjY2VzcywgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sIHRo
aXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4CisgICAgICAgICk7CisgICAgICAgIHRoaXMubV9j
b250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAgICBnbC5URVhUVVJFXzJELCAwLCB0aGlzLm1f
aW50ZXJuYWxGb3JtYXQsIHRoaXMubV93aWR0aCwKKyAgICAgICAgICAgIHRoaXMubV9oZWlnaHQs
IDAsIHRyYW5zZmVyRm10LmZvcm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsCisgICAgICAgICAg
ICBhY2Nlc3MuZ2V0RGF0YVB0cigpCisgICAgICAgICk7CisKKyAgICAgICAgLy8gRmlsbCBkYXRh
IHdpdGggZ3JpZC4KKyAgICAgICAgdmFyIHJvd0xlbmd0aCA9IHRoaXMubV9yb3dMZW5ndGggPiAw
ID8gdGhpcy5tX3Jvd0xlbmd0aCA6IHRoaXMubV9zdWJXOworICAgICAgICB2YXIgcm93UGl0Y2gg
PSBkZU1hdGguZGVBbGlnbjMyKHJvd0xlbmd0aCAqIHBpeGVsU2l6ZSwgdGhpcy5tX2FsaWdubWVu
dCk7CisgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLm1fc3ViSCArIHRoaXMubV9za2lwUm93czsK
KyAgICAgICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdCgKKyAgICAgICAgICAgIHRoaXMu
bV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbgor
ICAgICAgICApOworICAgICAgICB2YXIgY0JpYXMgPSB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1
ZU1pbjsKKyAgICAgICAgdmFyIGNvbG9yQSA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1h
dGgubXVsdGlwbHkoCisgICAgICAgICAgICAgICAgWzEuMCwgMC4wLCAwLjAsIDEuMF0sIGNTY2Fs
ZQorICAgICAgICAgICAgKSwgY0JpYXMKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGNvbG9yQiA9
IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoCisgICAgICAgICAgICAg
ICAgWzAuMCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZQorICAgICAgICAgICAgKSwgY0JpYXMKKyAg
ICAgICAgKTsKKworICAgICAgICBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHJvd1BpdGNoICogaGVp
Z2h0ICsgdGhpcy5tX3NraXBQaXhlbHMgKiBwaXhlbFNpemUpOworICAgICAgICB0Y3VUZXh0dXJl
VXRpbC5maWxsV2l0aEdyaWQoCisgICAgICAgICAgICBuZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzcyh7CisgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLm1fdGV4Rm9ybWF0LAorICAg
ICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fc3ViVywKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IHRoaXMubV9zdWJILAorICAgICAgICAgICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5tX3Nr
aXBSb3dzICogcm93UGl0Y2ggKyB0aGlzLm1fc2tpcFBpeGVscyAqIHBpeGVsU2l6ZQorICAgICAg
ICAgICAgICAgIH0pICwKKyAgICAgICAgICAgIDQsIGNvbG9yQSwgY29sb3JCCisgICAgICAgICk7
CisKKyAgICAgICAgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3Moewor
ICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICB3aWR0aDogdGhpcy5tX3N1YlcsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm1fc3Vi
SCwKKyAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ZGF0YTogZGF0YQorICAgICAgICAgICAgfSk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19ST1dfTEVOR1RILCB0aGlzLm1fcm93TGVuZ3RoKTsKKyAgICAgICAg
dGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3Nr
aXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NL
SVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVscyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIHRoaXMubV9hbGlnbm1lbnQpOworICAgICAg
ICB0aGlzLm1fY29udGV4dC50ZXhTdWJJbWFnZTJEKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8y
RCwgMCwgdGhpcy5tX3N1YlgsIHRoaXMubV9zdWJZLAorICAgICAgICAgICAgdGhpcy5tX3N1Ylcs
IHRoaXMubV9zdWJILAorICAgICAgICAgICAgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFuc2ZlckZt
dC5kYXRhVHlwZSwKKyAgICAgICAgICAgIGFjY2Vzcy5nZXREYXRhUHRyKCkKKyAgICAgICAgKTsK
KyAgICB9OworCisgICAgLy8gQmFzaWMgVGV4U3ViSW1hZ2UzRCgpIHdpdGggM0QgdGV4dHVyZSB1
c2FnZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlM0RTcGVjQ2FzZX0KKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRo
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBk
ZXB0aAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4
U3ViSW1hZ2UzRENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgaW50ZXJuYWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoCisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0
aGlzLCBuYW1lLCBkZXNjLAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5h
bEZvcm1hdChpbnRlcm5hbEZvcm1hdCksCisgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAg
ICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aAorICAgICAgICAgICAgKQorICAgICAgICApOwor
CisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgIH07
CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN1YkltYWdlM0RD
YXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlM0RTcGVjQ2FzZS5wcm90b3R5cGUKKyAg
ICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3Vi
SW1hZ2UzRENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5CYXNpY1RleFN1YkltYWdlM0RDYXNlOworCisgICAgLyoqCisgICAgICog
Y3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LgorICAgIEJhc2ljVGV4U3ViSW1hZ2UzRENhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBkYXRhID0g
bmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVsKAorICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1h
dCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7CisgICAgICAgIHZhciBy
bmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxO
YW1lKCkpKTsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJh
bnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisKKyAgICAgICAgdGV4ID0gdGhpcy5tX2Nv
bnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzNELCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3Jl
aShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgICAgICAvLyBGaXJzdCBzcGVjaWZ5IGZ1
bGwgdGV4dHVyZS4KKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxl
dmVsczsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlz
Lm1fd2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0
aGlzLm1faGVpZ2h0ID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxEID0gTWF0aC5tYXgo
MSwgdGhpcy5tX2RlcHRoID4+IG5keCk7CisKKyAgICAgICAgICAgIHZhciBnTWluID0gZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJu
ZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5t
X3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB2
YXIgZ01heCA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAg
ICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluLAorICAgICAg
ICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICAp
OworCisgICAgICAgICAgICBkYXRhLnNldFNpemUobGV2ZWxXLCBsZXZlbEgsIGxldmVsRCk7Cisg
ICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cygKKyAg
ICAgICAgICAgICAgICBkYXRhLmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAgICAgICAp
OworCisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTNEKAorICAgICAgICAgICAg
ICAgIGdsLlRFWFRVUkVfM0QsIG5keCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LCBsZXZlbFcsIGxl
dmVsSCwKKyAgICAgICAgICAgICAgICBsZXZlbEQsIDAsIHRyYW5zZmVyRm10LmZvcm1hdCwgdHJh
bnNmZXJGbXQuZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3MoKS5nZXRE
YXRhUHRyKCkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZS1zcGVj
aWZ5IHBhcnRzIG9mIGVhY2ggbGV2ZWwuCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8
IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0
aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0g
TWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGxldmVs
RCA9IE1hdGgubWF4KDEsIHRoaXMubV9kZXB0aCA+PiBuZHgpOworCisgICAgICAgICAgICB2YXIg
dyA9IHJuZC5nZXRJbnQoMSwgbGV2ZWxXKTsKKyAgICAgICAgICAgIHZhciBoID0gcm5kLmdldElu
dCgxLCBsZXZlbEgpOworICAgICAgICAgICAgdmFyIGQgPSBybmQuZ2V0SW50KDEsIGxldmVsRCk7
CisgICAgICAgICAgICB2YXIgeCA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxXIC0gdyk7CisgICAgICAg
ICAgICB2YXIgeSA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxIIC0gaCk7CisgICAgICAgICAgICB2YXIg
eiA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxEIC0gZCk7CisKKyAgICAgICAgICAgIHZhciBjb2xvckEg
PSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAg
ICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIHZhciBjb2xvckIgPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21W
ZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1p
biwKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciBjZWxsU2l6ZSA9IHJuZC5nZXRJbnQoMiwgMTYp
OworCisgICAgICAgICAgICBkYXRhLnNldFNpemUodywgaCwgZCk7CisgICAgICAgICAgICB0Y3VU
ZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQoCisgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3Mo
KSwgY2VsbFNpemUsIGNvbG9yQSwgY29sb3JCCisgICAgICAgICAgICApOworCisgICAgICAgICAg
ICB0aGlzLm1fY29udGV4dC50ZXhTdWJJbWFnZTNEKAorICAgICAgICAgICAgICAgIGdsLlRFWFRV
UkVfM0QsIG5keCwgeCwgeSwgeiwgdywgaCwgZCwKKyAgICAgICAgICAgICAgICB0cmFuc2ZlckZt
dC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLAorICAgICAgICAgICAgICAgIGRhdGEuZ2V0
QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8vIFRleFN1YkltYWdlMkQoKSB0byB0ZXh0dXJlIGluaXRpYWxpemVkIHdpdGggZW1w
dHkgZGF0YQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhVHlwZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWln
aHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFn
ZTJERW1wdHlUZXhDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGZvcm1hdCwg
ZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQKKyAgICApIHsKKyAgICAgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMs
IG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoCisgICAgICAg
ICAgICAgICAgZm9ybWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgd2lkdGgsIGhlaWdodCwg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAgICAg
ICAgICB3aWR0aCwgaGVpZ2h0CisgICAgICAgICAgICApCisgICAgICAgICk7CisKKyAgICAgICAg
dGhpcy5tX2Zvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0g
Zm9ybWF0OworICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPSBkYXRhVHlwZTsKKyAgICB9OworCisg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyREVtcHR5VGV4Q2Fz
ZS5wcm90b3R5cGUgPQorICAgIE9iamVjdC5jcmVhdGUoZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlKTsKKworICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLgorICAgIFRleFN1YkltYWdlMkRFbXB0eVRleENhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4
U3ViSW1hZ2UyREVtcHR5VGV4Q2FzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2UyREVtcHR5VGV4Q2FzZUludGVybmFsID0KKyAgICBmdW5j
dGlvbihuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCkgeworICAgICAg
ICAvLyBTaXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0dXJl
VXRpbC5nZXRUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdM
SW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICk7CisgICAgICAgIHZhciB0
ZXN0Y2FzZSA9CisgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
VGV4U3ViSW1hZ2UyREVtcHR5VGV4Q2FzZSgKKyAgICAgICAgICAgICAgICBuYW1lLCBkZXNjLCBm
bXQuZm9ybWF0LCBmbXQuZGF0YVR5cGUsIHdpZHRoLCBoZWlnaHQKKyAgICAgICAgICAgICk7Cisg
ICAgICAgIHRlc3RjYXNlLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAg
ICAgcmV0dXJuIHRlc3RjYXNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0
dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4
U3ViSW1hZ2UyREVtcHR5VGV4Q2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcgdGN1
VGV4dHVyZS5UZXh0dXJlTGV2ZWwoCisgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0LCB0aGlz
Lm1fd2lkdGgsIHRoaXMubV9oZWlnaHQKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHJuZCA9IG5l
dyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMuZnVsbE5hbWUoKSkp
OworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisK
KyAgICAgICAgLy8gRmlyc3QgYWxsb2NhdGUgc3RvcmFnZSBmb3IgZWFjaCBsZXZlbC4KKyAgICAg
ICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVsczsgbmR4KyspIHsKKyAg
ICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbmR4KTsK
KyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlzLm1faGVpZ2h0ID4+IG5k
eCk7CisKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAg
ICAgICAgZ2wuVEVYVFVSRV8yRCwgbmR4LCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIGxldmVsVywg
bGV2ZWxILCAwLAorICAgICAgICAgICAgICAgIHRoaXMubV9mb3JtYXQsIHRoaXMubV9kYXRhVHlw
ZSwKKyAgICAgICAgICAgICAgICBudWxsCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU3BlY2lmeSBwaXhlbCBkYXRhIHRvIGFsbCBsZXZlbHMgdXNpbmcgZ2xUZXhTdWJJ
bWFnZTJEKCkKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVs
czsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1f
d2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlz
Lm1faGVpZ2h0ID4+IG5keCk7CisgICAgICAgICAgICB2YXIgZ01pbiA9IGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICBybmQsIHRoaXMu
bV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluLAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3Jt
YXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICApOworICAgICAgICAgICAgdmFyIGdNYXgg
PSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAg
ICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKworICAg
ICAgICAgICAgZGF0YS5zZXRTaXplKGxldmVsVywgbGV2ZWxIKTsKKyAgICAgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGRh
dGEuZ2V0QWNjZXNzKCksIGdNaW4sIGdNYXgKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAg
IHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVS
RV8yRCwgbmR4LCAwLCAwLCBsZXZlbFcsIGxldmVsSCwKKyAgICAgICAgICAgICAgICB0aGlzLm1f
Zm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgZGF0YS5nZXRBY2Nlc3Mo
KS5nZXREYXRhUHRyKCkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
Ly8gVGV4U3ViSW1hZ2UyRCgpIHRvIGVtcHR5IGN1YmVtYXAgdGV4dHVyZQorICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9y
bWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGFUeXBlCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHNpemUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhT
dWJJbWFnZUN1YmVFbXB0eVRleENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywg
Zm9ybWF0LCBkYXRhVHlwZSwgc2l6ZQorICAgICkgeworICAgICAgICAvLyBVbnNpemVkIGludGVy
bmFsIGZvcm1hdC4KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZUN1YmVTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4
dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgICAgICBmb3JtYXQsIGRh
dGFUeXBlCisgICAgICAgICAgICApLCBzaXplLCBkZU1hdGgubG9nVG9GbG9vcihzaXplKSArIDEK
KyAgICAgICAgKTsKKworICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBmb3JtYXQ7Cisg
ICAgICAgIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9
IGRhdGFUeXBlOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5U
ZXhTdWJJbWFnZUN1YmVFbXB0eVRleENhc2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNy
ZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVD
dWJlU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZUN1YmVFbXB0eVRleENhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4
U3ViSW1hZ2VDdWJlRW1wdHlUZXhDYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICog
QHJldHVybiB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlRW1w
dHlUZXhDYXNlfQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5l
d1RleFN1YkltYWdlQ3ViZUVtcHR5VGV4Q2FzZUludGVybmFsID0KKyAgICBmdW5jdGlvbihuYW1l
LCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSkgeworICAgICAgICAvLyBTaXplZCBpbnRlcm5h
bCBmb3JtYXQuCisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZv
cm1hdCgKKyAgICAgICAgICAgIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50
ZXJuYWxGb3JtYXQpCisgICAgICAgICk7CisgICAgICAgIHZhciB0ZXN0Y2FzZSA9CisgICAgICAg
ICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlRW1w
dHlUZXhDYXNlKAorICAgICAgICAgICAgICAgIG5hbWUsIGRlc2MsIGZtdC5mb3JtYXQsIGZtdC5k
YXRhVHlwZSwgc2l6ZQorICAgICAgICAgICAgKTsKKyAgICAgICAgdGVzdGNhc2UubV9pbnRlcm5h
bEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm4gdGVzdGNhc2U7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZUN1YmVFbXB0eVRleENhc2Uu
cHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPQorICAgIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
dGV4ID0gbnVsbDsKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlTGV2
ZWwoCisgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0LCB0aGlzLm1fc2l6ZSwgdGhpcy5tX3Np
emUKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVT
dHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMuZnVsbE5hbWUoKSkpOworCisgICAgICAgIHRleCA9IHRo
aXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICAgICAgLy8gU3Bl
Y2lmeSBzdG9yYWdlIGZvciBlYWNoIGxldmVsLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxldmVsU2l6
ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXplID4+IG5keCk7CisKKyAgICAgICAgICAgIGZvciAo
dmFyIGYgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgICAgIHZhciBmYWNl
ID0gdGN1VGV4dHVyZS5DdWJlRmFjZVtmXTsKKyAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4
dC50ZXhJbWFnZTJEKAorICAgICAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5zX2N1YmVNYXBGYWNlc1tmYWNlXSwKKyAgICAgICAgICAgICAgICAgICAgbmR4LCB0
aGlzLm1faW50ZXJuYWxGb3JtYXQsIGxldmVsU2l6ZSwgbGV2ZWxTaXplLCAwLAorICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgIG51bGwKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gU3BlY2lmeSBkYXRhIHVzaW5nIGdsVGV4U3ViSW1hZ2UyRCgpCisgICAg
ICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7Cisg
ICAgICAgICAgICB2YXIgbGV2ZWxTaXplID0gTWF0aC5tYXgoMSwgdGhpcy5tX3NpemUgPj4gbmR4
KTsKKworICAgICAgICAgICAgZGF0YS5zZXRTaXplKGxldmVsU2l6ZSwgbGV2ZWxTaXplKTsKKwor
ICAgICAgICAgICAgZm9yICh2YXIgZiBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZdOworICAgICAgICAgICAg
ICAgIHZhciBnTWluID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9y
KAorICAgICAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWlu
LAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAor
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdmFyIGdNYXggPSBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgICAgIHJu
ZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICAgICAgKTsKKworICAg
ICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAor
ICAgICAgICAgICAgICAgICAgICBkYXRhLmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdl
MkQoCisgICAgICAgICAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNf
Y3ViZU1hcEZhY2VzW2ZhY2VdLAorICAgICAgICAgICAgICAgICAgICBuZHgsIDAsIDAsIGxldmVs
U2l6ZSwgbGV2ZWxTaXplLCB0aGlzLm1fZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB0aGlz
Lm1fZGF0YVR5cGUsIGRhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBUZXhTdWJJ
bWFnZTJEKCkgdW5wYWNrIGFsaWdubWVudCB3aXRoIDJEIHRleHR1cmUKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YVR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
d2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN1YlgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViWQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzdWJXCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YkgKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gYWxpZ25tZW50CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuVGV4U3ViSW1hZ2UyREFsaWduQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNj
LCBmb3JtYXQsIGRhdGFUeXBlLCB3aWR0aCwgaGVpZ2h0LCBzdWJYLCBzdWJZLCBzdWJXLCBzdWJI
LAorICAgICAgICBhbGlnbm1lbnQKKyAgICApIHsKKyAgICAgICAgLy8gVW5zaXplZCBpbnRlcm5h
bCBmb3JtYXQuCisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUy
RFNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJl
VXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgICAgIGZvcm1hdCwgZGF0YVR5
cGUKKyAgICAgICAgICAgICksIHdpZHRoLCBoZWlnaHQsIDEKKyAgICAgICAgKTsKKworICAgICAg
ICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9mb3JtYXQg
PSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9kYXRhVHlwZSA9IGRhdGFUeXBlOworICAgICAgICB0
aGlzLm1fc3ViWCA9IHN1Ylg7CisgICAgICAgIHRoaXMubV9zdWJZID0gc3ViWTsKKyAgICAgICAg
dGhpcy5tX3N1YlcgPSBzdWJXOworICAgICAgICB0aGlzLm1fc3ViSCA9IHN1Ykg7CisgICAgICAg
IHRoaXMubV9hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleFN1YkltYWdlMkRBbGlnbkNhc2UucHJvdG90eXBlID0KKyAg
ICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLnByb3RvdHlwZQorICAgICAgICApOworCisgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4U3ViSW1hZ2UyREFsaWduQ2FzZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXhTdWJJbWFnZTJEQWxpZ25DYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViWAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJZCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YlcK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViSAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhbGln
bm1lbnQKKyAgICAgKiBAcmV0dXJuIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhT
dWJJbWFnZTJEQWxpZ25DYXNlfQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLm5ld1RleFN1YkltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCA9IGZ1bmN0aW9uKAorICAg
ICAgICBuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc3ViWCwgc3Vi
WSwgc3ViVywgc3ViSCwKKyAgICAgICAgYWxpZ25tZW50CisgICAgKSB7CisgICAgICAgIC8vIFNp
emVkIGludGVybmFsIGZvcm1hdC4KKyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1cmVVdGlsLmdl
dFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5h
bEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHRlc3RjYXNl
ID0gbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleFN1YkltYWdlMkRBbGlnbkNh
c2UoCisgICAgICAgICAgICBuYW1lLCBkZXNjLCBmbXQuZm9ybWF0LCBmbXQuZGF0YVR5cGUsCisg
ICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBzdWJYLCBzdWJZLCBzdWJXLCBzdWJILCBhbGlnbm1l
bnQKKyAgICAgICAgKTsKKyAgICAgICAgdGVzdGNhc2UubV9pbnRlcm5hbEZvcm1hdCA9IGludGVy
bmFsRm9ybWF0OworICAgICAgICByZXR1cm4gdGVzdGNhc2U7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZTJEQWxpZ25DYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0
dXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICAvKiog
QHR5cGUge0FycmF5QnVmZmVyfSAqLyB2YXIgZGF0YTsKKworICAgICAgICB0ZXggPSB0aGlzLm1f
Y29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKyAgICAgICAgLy8gU3BlY2lmeSBiYXNlIGxldmVs
LgorICAgICAgICBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4
ZWxTaXplKCkgKgorICAgICAgICAgICAgdGhpcy5tX3dpZHRoICogdGhpcy5tX2hlaWdodAorICAg
ICAgICApOworICAgICAgICB2YXIgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJB
Y2Nlc3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICB3aWR0aDogdGhpcy5tX3dpZHRoLAorICAgICAgICAgICAgICAgIGhlaWdodDog
dGhpcy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICBkYXRhOiBkYXRhCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoYWNj
ZXNzLCBbMCwgMCwgMCwgMF0sIFsxLCAxLCAxLCAxXSk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisgICAgICAgIHRoaXMubV9j
b250ZXh0LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2ludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0LCAwLCB0aGlzLm1fZm9y
bWF0LCB0aGlzLm1fZGF0YVR5cGUsCisgICAgICAgICAgICBhY2Nlc3MuZ2V0RGF0YVB0cigpCisg
ICAgICAgICk7CisKKyAgICAgICAgLy8gUmUtc3BlY2lmeSBzdWJyZWN0YW5nbGUuCisgICAgICAg
IHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFsaWduMzIoCisgICAgICAgICAgICB0aGlzLm1fdGV4
Rm9ybWF0LmdldFBpeGVsU2l6ZSgpICogdGhpcy5tX3N1YlcsIHRoaXMubV9hbGlnbm1lbnQKKyAg
ICAgICAgKTsKKyAgICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihyb3dQaXRjaCAqIHRoaXMu
bV9zdWJIKTsKKyAgICAgICAgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nl
c3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICB3aWR0aDogdGhpcy5tX3N1YlcsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlz
Lm1fc3ViSCwKKyAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGls
LmZpbGxXaXRoR3JpZChhY2Nlc3MsIDQsIFsxLCAwLCAwLCAxXSwgWzAsIDEsIDAsIDFdCisgICAg
ICAgICk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FM
SUdOTUVOVCwgdGhpcy5tX2FsaWdubWVudCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1
YkltYWdlMkQoCisgICAgICAgICAgICBnbC5URVhUVVJFXzJELCAwLCB0aGlzLm1fc3ViWCwgdGhp
cy5tX3N1YlksIHRoaXMubV9zdWJXLAorICAgICAgICAgICAgdGhpcy5tX3N1YkgsIHRoaXMubV9m
b3JtYXQsIHRoaXMubV9kYXRhVHlwZSwgYWNjZXNzLmdldERhdGFQdHIoKQorICAgICAgICApOwor
ICAgIH07CisKKyAgICAvLyBUZXhTdWJJbWFnZTJEKCkgdW5wYWNrIGFsaWdubWVudCB3aXRoIGN1
YmVtYXAgdGV4dHVyZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlfQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRh
dGFUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc3ViWAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJZCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN1YlcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViSAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBhbGlnbm1lbnQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVz
YywgZm9ybWF0LCBkYXRhVHlwZSwgc2l6ZSwgc3ViWCwgc3ViWSwgc3ViVywgc3ViSCwgYWxpZ25t
ZW50CisgICAgKSB7CisgICAgICAgIC8vIFVuc2l6ZWQgaW50ZXJuYWwgZm9ybWF0LgorICAgICAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLmNhbGwo
CisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5z
ZmVyRm9ybWF0KAorICAgICAgICAgICAgICAgIGZvcm1hdCwgZGF0YVR5cGUKKyAgICAgICAgICAg
ICksIHNpemUsIDEKKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQg
PSBmb3JtYXQ7CisgICAgICAgIHRoaXMubV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHRoaXMu
bV9kYXRhVHlwZSA9IGRhdGFUeXBlOworICAgICAgICB0aGlzLm1fc3ViWCA9IHN1Ylg7CisgICAg
ICAgIHRoaXMubV9zdWJZID0gc3ViWTsKKyAgICAgICAgdGhpcy5tX3N1YlcgPSBzdWJXOworICAg
ICAgICB0aGlzLm1fc3ViSCA9IHN1Ykg7CisgICAgICAgIHRoaXMubV9hbGlnbm1lbnQgPSBhbGln
bm1lbnQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleFN1
YkltYWdlQ3ViZUFsaWduQ2FzZS5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAor
ICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVj
Q2FzZS5wcm90b3R5cGUKKyAgICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLgorICAgIFRleFN1YkltYWdlQ3ViZUFsaWduQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZUN1
YmVBbGlnbkNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFs
Rm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc3ViWAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJZCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN1YlcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViSAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBhbGlnbm1lbnQKKyAgICAgKiBAcmV0dXJuIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2V9CisgICAgICovCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2VDdWJlQWxpZ25DYXNlSW50ZXJuYWwgPQor
ICAgIGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwK
KyAgICAgICAgc3ViWCwgc3ViWSwgc3ViVywgc3ViSCwgYWxpZ25tZW50CisgICAgKSB7CisgICAg
ICAgIC8vIFNpemVkIGludGVybmFsIGZvcm1hdC4KKyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1
cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgKTsKKyAgICAgICAgdmFy
IHRlc3RjYXNlID0KKyAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2UoCisgICAgICAgICAgICAgICAgbmFtZSwgZGVzYywg
Zm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLCBzaXplLAorICAgICAgICAgICAgICAgIHN1YlgsIHN1
YlksIHN1YlcsIHN1YkgsIGFsaWdubWVudAorICAgICAgICAgICAgKTsKKyAgICAgICAgdGVzdGNh
c2UubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm4gdGVz
dGNhc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8K
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZUN1YmVB
bGlnbkNhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPQorICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAgICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3JlYXRl
VGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
X0NVQkVfTUFQLCB0ZXgpOworCisgICAgICAgIHZhciBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHRo
aXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxTaXplKCkgKiB0aGlzLm1fc2l6ZSAqIHRoaXMubV9zaXpl
KTsKKyAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
KHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsCisgICAgICAgICAg
ICAgICAgd2lkdGg6IHRoaXMubV9zaXplLAorICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5t
X3NpemUsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgfSk7CisgICAg
ICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKGFjY2VzcywgWzAs
IDAsIDAsIDBdLCBbMSwgMSwgMSwgMV0KKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLm1fY29u
dGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKyAgICAgICAgZm9yICh2
YXIgZiBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisgICAgICAgICAgICB2YXIgZmFjZSA9IHRj
dVRleHR1cmUuQ3ViZUZhY2VbZl07CisgICAgICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFn
ZTJEKAorICAgICAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3Vi
ZU1hcEZhY2VzW2ZhY2VdLAorICAgICAgICAgICAgICAgIDAsIHRoaXMubV9pbnRlcm5hbEZvcm1h
dCwgdGhpcy5tX3NpemUsIHRoaXMubV9zaXplLCAwLAorICAgICAgICAgICAgICAgIHRoaXMubV9m
b3JtYXQsIHRoaXMubV9kYXRhVHlwZSwKKyAgICAgICAgICAgICAgICBhY2Nlc3MuZ2V0RGF0YVB0
cigpCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmUtc3BlY2lmeSBz
dWJyZWN0YW5nbGUuCisgICAgICAgIHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFsaWduMzIoCisg
ICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpICogdGhpcy5tX3N1Ylcs
IHRoaXMubV9hbGlnbm1lbnQKKyAgICAgICAgKTsKKyAgICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1
ZmZlcihyb3dQaXRjaCAqIHRoaXMubV9zdWJIKTsKKyAgICAgICAgYWNjZXNzID0gbmV3IHRjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5t
X3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5tX3N1YlcsCisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiB0aGlzLm1fc3ViSCwKKyAgICAgICAgICAgICAgICByb3dQaXRjaDog
cm93UGl0Y2gsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0YQorICAgICAgICB9KTsKKyAgICAg
ICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGFjY2VzcywgNCwgWzEsIDAsIDAsIDFdLCBb
MCwgMSwgMCwgMV0KKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9y
ZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgdGhpcy5tX2FsaWdubWVudCk7CisgICAgICAgIGZvciAo
dmFyIGYgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgdmFyIGZhY2UgPSB0
Y3VUZXh0dXJlLkN1YmVGYWNlW2ZdOworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3Vi
SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5z
X2N1YmVNYXBGYWNlc1tmYWNlXSwKKyAgICAgICAgICAgICAgICAwLCB0aGlzLm1fc3ViWCwgdGhp
cy5tX3N1YlksIHRoaXMubV9zdWJXLCB0aGlzLm1fc3ViSCwKKyAgICAgICAgICAgICAgICB0aGlz
Lm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUsIGFjY2Vzcy5nZXREYXRhUHRyKCkKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gVGV4U3ViSW1hZ2UzRCgpIHVucGFj
ayBwYXJhbWV0ZXJzIGNhc2UuCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNl
fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGRlcHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YlggLAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzdWJZICwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViWiAsCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YlcgLAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJI
ICwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViRCAsCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGltYWdlSGVpZ2h0ICwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcm93TGVuZ3RoICwKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gc2tpcEltYWdlcyAsCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNr
aXBSb3dzICwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcFBpeGVscyAsCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlRleFN1YkltYWdlM0RQYXJhbXNDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5h
bWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKKyAgICAgICAg
c3ViWCwgc3ViWSwgc3ViWiwgc3ViVywgc3ViSCwgc3ViRCwKKyAgICAgICAgaW1hZ2VIZWlnaHQs
IHJvd0xlbmd0aCwgc2tpcEltYWdlcywgc2tpcFJvd3MsIHNraXBQaXhlbHMsIGFsaWdubWVudAor
ICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlM0RT
cGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywKKyAgICAgICAgICAg
IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpLAorICAg
ICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDEKKyAgICAgICAgKTsKKworICAgICAgICB0
aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3N1
YlggPSBzdWJYOworICAgICAgICB0aGlzLm1fc3ViWSA9IHN1Ylk7CisgICAgICAgIHRoaXMubV9z
dWJaID0gc3ViWjsKKyAgICAgICAgdGhpcy5tX3N1YlcgPSBzdWJXOworICAgICAgICB0aGlzLm1f
c3ViSCA9IHN1Ykg7CisgICAgICAgIHRoaXMubV9zdWJEID0gc3ViRDsKKyAgICAgICAgdGhpcy5t
X2ltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7CisgICAgICAgIHRoaXMubV9yb3dMZW5ndGggPSBy
b3dMZW5ndGg7CisgICAgICAgIHRoaXMubV9za2lwSW1hZ2VzID0gc2tpcEltYWdlczsKKyAgICAg
ICAgdGhpcy5tX3NraXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxz
ID0gc2tpcFBpeGVsczsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAg
ICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UzRFBh
cmFtc0Nhc2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlLnByb3RvdHlw
ZQorICAgICAgICApOworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAg
VGV4U3ViSW1hZ2UzRFBhcmFtc0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UzRFBhcmFtc0Nhc2U7CisK
KyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4U3ViSW1hZ2UzRFBhcmFtc0Nhc2UucHJvdG90eXBl
LmNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0g
Z2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAg
ICAgIHZhciBwaXhlbFNpemUgPSB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAg
ICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAgICAgdmFyIHJvd1BpdGNoID0gZGVNYXRoLmRlQWxp
Z24zMihwaXhlbFNpemUgKiB0aGlzLm1fd2lkdGgsIDQpOworICAgICAgICB2YXIgc2xpY2VQaXRj
aCA9IHJvd1BpdGNoICogdGhpcy5tX2hlaWdodDsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygK
KyAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMgPT0gMSwgJ051bWJlbCBvZiBsZXZlbHMgZGlm
ZmVyZW50IHRoYW4gMScsCisgICAgICAgICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICApOworCisg
ICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhp
cy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4KTsKKworICAgICAgICAv
LyBGaWxsIHdpdGggZ3JhZGllbnQuCisKKyAgICAgICAgdmFyIGRhdGEgPSBuZXcgQXJyYXlCdWZm
ZXIoc2xpY2VQaXRjaCAqIHRoaXMubV9kZXB0aCk7CisgICAgICAgIHZhciBhY2Nlc3MgPSBuZXcg
dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0OiB0aGlzLm1fdGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
OiB0aGlzLm1faGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoOiB0aGlz
Lm1fZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlUGl0Y2g6IHNsaWNlUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGll
bnRzKGFjY2VzcywgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sIHRoaXMubV90ZXhGb3Jt
YXRJbmZvLnZhbHVlTWF4KTsKKworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTNEKAor
ICAgICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgMCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LCB0aGlz
Lm1fd2lkdGgsCisgICAgICAgICAgICB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgsIDAsIHRy
YW5zZmVyRm10LmZvcm1hdCwKKyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBhY2Nl
c3MuZ2V0RGF0YVB0cigpCisgICAgICAgICk7CisKKyAgICAgICAgLy8gRmlsbCBkYXRhIHdpdGgg
Z3JpZC4KKyAgICAgICAgdmFyIHJvd0xlbmd0aCA9IHRoaXMubV9yb3dMZW5ndGggPiAwID8gdGhp
cy5tX3Jvd0xlbmd0aCA6IHRoaXMubV9zdWJXOworICAgICAgICByb3dQaXRjaCA9IGRlTWF0aC5k
ZUFsaWduMzIocm93TGVuZ3RoICogcGl4ZWxTaXplLCB0aGlzLm1fYWxpZ25tZW50KTsKKyAgICAg
ICAgdmFyIGltYWdlSGVpZ2h0ID0gdGhpcy5tX2ltYWdlSGVpZ2h0ID4gMCA/IHRoaXMubV9pbWFn
ZUhlaWdodCA6IHRoaXMubV9zdWJIOworICAgICAgICBzbGljZVBpdGNoID0gaW1hZ2VIZWlnaHQg
KiByb3dQaXRjaDsKKyAgICAgICAgdmFyIGNTY2FsZSA9IGRlTWF0aC5zdWJ0cmFjdCh0aGlzLm1f
dGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4pOwor
ICAgICAgICB2YXIgY0JpYXMgPSB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbjsKKyAgICAg
ICAgdmFyIGNvbG9yQSA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHko
WzEuMCwgMC4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNCaWFzCisgICAgICAgICk7CisgICAgICAg
IHZhciBjb2xvckIgPSBkZU1hdGguYWRkKAorICAgICAgICAgICAgZGVNYXRoLm11bHRpcGx5KFsw
LjAsIDEuMCwgMC4wLCAxLjBdLCBjU2NhbGUpLCBjQmlhcworICAgICAgICApOworCisgICAgICAg
IGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2xpY2VQaXRjaCAqICh0aGlzLm1fZGVwdGggKyB0aGlz
Lm1fc2tpcEltYWdlcykgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9z
a2lwUm93cyAqIHJvd1BpdGNoICsgdGhpcy5tX3NraXBQaXhlbHMgKiBwaXhlbFNpemUpOworICAg
ICAgICB2YXIgYWNjZXNzV2l0aE9mZnNldCA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNj
ZXNzKHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsCisgICAgICAg
ICAgICAgICAgd2lkdGg6IHRoaXMubV9zdWJXLAorICAgICAgICAgICAgICAgIGhlaWdodDogdGhp
cy5tX3N1YkgsCisgICAgICAgICAgICAgICAgZGVwdGg6IHRoaXMubV9zdWJELAorICAgICAgICAg
ICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAgICAgICAgICAgICBzbGljZVBpdGNoOiBz
bGljZVBpdGNoLAorICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICAgICAg
b2Zmc2V0OiB0aGlzLm1fc2tpcEltYWdlcyAqIHNsaWNlUGl0Y2ggKyB0aGlzLm1fc2tpcFJvd3Mg
KiByb3dQaXRjaCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3Moewor
ICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICB3aWR0aDogdGhpcy5tX3N1YlcsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm1fc3Vi
SCwKKyAgICAgICAgICAgICAgICBkZXB0aDogdGhpcy5tX3N1YkQsCisgICAgICAgICAgICAgICAg
cm93UGl0Y2g6IHJvd1BpdGNoLAorICAgICAgICAgICAgICAgIHNsaWNlUGl0Y2g6IHNsaWNlUGl0
Y2gsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgfSk7CisgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChhY2Nlc3NXaXRoT2Zmc2V0LCA0LCBjb2xvckEs
IGNvbG9yQik7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X0lNQUdFX0hFSUdIVCwgdGhpcy5tX2ltYWdlSGVpZ2h0KTsKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1JPV19MRU5HVEgsIHRoaXMubV9yb3dMZW5ndGgpOwor
ICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMs
IHRoaXMubV9za2lwSW1hZ2VzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWko
Z2wuVU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVs
cyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1F
TlQsIHRoaXMubV9hbGlnbm1lbnQpOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhTdWJJbWFn
ZTNEKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgMCwgdGhpcy5tX3N1YlgsIHRoaXMubV9z
dWJZLCB0aGlzLm1fc3ViWiwKKyAgICAgICAgICAgIHRoaXMubV9zdWJXLCB0aGlzLm1fc3ViSCwg
dGhpcy5tX3N1YkQsCisgICAgICAgICAgICB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10
LmRhdGFUeXBlLCBhY2Nlc3MuZ2V0RGF0YVB0cigpCisgICAgICAgICk7CisgICAgfTsKKworICAg
IC8vIEJhc2ljIENvcHlUZXhJbWFnZTJEKCkgd2l0aCAyRCB0ZXh0dXJlIHVzYWdlCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gaGVpZ2h0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuQmFzaWNDb3B5VGV4SW1hZ2UyRENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwg
ZGVzYywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQKKyAgICApIHsKKyAgICAgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UuY2FsbCgKKyAgICAg
ICAgICAgIHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3Jt
YXQoCisgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIGdsLlVOU0lHTkVEX0JZVEUKKyAg
ICAgICAgICAgICksIHdpZHRoLCBoZWlnaHQsIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Lm1heExldmVsQ291bnQoCisgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodAorICAgICAgICAg
ICAgKQorICAgICAgICApOworCisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVy
bmFsRm9ybWF0OworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5C
YXNpY0NvcHlUZXhJbWFnZTJEQ2FzZS5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRl
KAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEU3Bl
Y0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy4KKyAgICBCYXNpY0NvcHlUZXhJbWFnZTJEQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY0NvcHlUZXhJ
bWFnZTJEQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY0NvcHlUZXhJbWFnZTJE
Q2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
cGl4ZWxGb3JtYXQgPSB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdEZyb21Db250ZXh0KGdsKTsK
KyAgICAgICAgdmFyIHRhcmdldEhhc1JHQiA9IHBpeGVsRm9ybWF0LnJlZEJpdHMgPiAwICYmCisg
ICAgICAgICAgICBwaXhlbEZvcm1hdC5ncmVlbkJpdHMgPiAwICYmCisgICAgICAgICAgICBwaXhl
bEZvcm1hdC5ibHVlQml0cyA+IDA7CisgICAgICAgIHZhciB0YXJnZXRIYXNBbHBoYSA9IHBpeGVs
Rm9ybWF0LmFscGhhQml0cyA+IDA7CisgICAgICAgIHZhciBmbXQgPSBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5tYXBHTFVuc2l6ZWRJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAg
ICB0aGlzLm1faW50ZXJuYWxGb3JtYXQKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIHRleEhhc1JH
QiA9IGZtdC5vcmRlciAhPSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5BOworICAgICAgICB2YXIg
dGV4SGFzQWxwaGEgPSBmbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSB8
fAorICAgICAgICAgICAgZm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkxBIHx8
CisgICAgICAgICAgICBmbXQub3JkZXIgPT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQTsKKyAg
ICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFu
ZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuR3JhZGllbnRTaGFkZXJ9ICovCisgICAgICAgIHZhciBz
aGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyKAorICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0CisgICAgICAgICk7CisgICAgICAgIHZh
ciBzaGFkZXJJRCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKworICAg
ICAgICBpZiAoKHRleEhhc1JHQiAmJiAhdGFyZ2V0SGFzUkdCKSB8fCAodGV4SGFzQWxwaGEgJiYg
IXRhcmdldEhhc0FscGhhKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKKyAgICAgICAg
ICAgICAgICAnQ29weWluZyBmcm9tIGN1cnJlbnQgZnJhbWVidWZmZXIgaXMgbm90IHN1cHBvcnRl
ZCcKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgLy8gRmlsbCByZW5kZXIgdGFyZ2V0IHdpdGgg
Z3JhZGllbnQuCisgICAgICAgIHNoYWRlci5zZXRHcmFkaWVudCgKKyAgICAgICAgICAgIHRoaXMu
bV9jb250ZXh0LCBzaGFkZXJJRCwgWzAsIDAsIDAsIDBdLCBbMSwgMSwgMSwgMV0KKyAgICAgICAg
KTsKKyAgICAgICAgcnJVdGlsLmRyYXdRdWFkKAorICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQs
IHNoYWRlcklELCBbLTEuMCwgLTEuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjBdCisgICAgICAgICk7
CisKKyAgICAgICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAg
ICB0aGlzLm1fY29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAg
ICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7Cisg
ICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7
CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0gTWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBu
ZHgpOworICAgICAgICAgICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIHRoaXMubV93aWR0aCAtIGxl
dmVsVyk7CisgICAgICAgICAgICB2YXIgeSA9IHJuZC5nZXRJbnQoMCwgdGhpcy5tX2hlaWdodCAt
IGxldmVsSCk7CisKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LmNvcHlUZXhJbWFnZTJEKAor
ICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIG5keCwgdGhpcy5tX2ludGVybmFsRm9ybWF0
LCB4LCB5LAorICAgICAgICAgICAgICAgIGxldmVsVywgbGV2ZWxILCAwCisgICAgICAgICAgICAp
OworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIEJhc2ljIENvcHlUZXhJbWFnZTJEKCkgd2l0
aCBjdWJlbWFwIHVzYWdlCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2V9
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
YworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzaXplCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
QmFzaWNDb3B5VGV4SW1hZ2VDdWJlQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNj
LCBpbnRlcm5hbEZvcm1hdCwgc2l6ZQorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlz
LCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTFRyYW5zZmVyRm9ybWF0KAorICAgICAg
ICAgICAgICAgIGludGVybmFsRm9ybWF0LCBnbC5VTlNJR05FRF9CWVRFCisgICAgICAgICAgICAp
LCBzaXplLCBkZU1hdGgubG9nVG9GbG9vcihzaXplKSArIDEKKyAgICAgICAgKTsKKworICAgICAg
ICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICB9OworCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4SW1hZ2VDdWJlQ2FzZS5w
cm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICAg
ICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIEJhc2ljQ29w
eVRleEltYWdlQ3ViZUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4SW1hZ2VDdWJlQ2FzZTsKKworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIEJhc2ljQ29weVRleEltYWdlQ3Vi
ZUNhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IHBpeGVsRm9ybWF0ID0gdGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dChnbCk7
CisgICAgICAgIHZhciB0YXJnZXRIYXNSR0IgPSBwaXhlbEZvcm1hdC5yZWRCaXRzID4gMCAmJgor
ICAgICAgICAgICAgcGl4ZWxGb3JtYXQuZ3JlZW5CaXRzID4gMCAmJgorICAgICAgICAgICAgcGl4
ZWxGb3JtYXQuYmx1ZUJpdHMgPiAwOworICAgICAgICB2YXIgdGFyZ2V0SGFzQWxwaGEgPSBwaXhl
bEZvcm1hdC5hbHBoYUJpdHMgPiAwOworICAgICAgICB2YXIgZm10ID0gZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMubWFwR0xVbnNpemVkSW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAg
ICAgdGhpcy5tX2ludGVybmFsRm9ybWF0CisgICAgICAgICk7CisgICAgICAgIHZhciB0ZXhIYXNS
R0IgPSBmbXQub3JkZXIgIT0gdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQTsKKyAgICAgICAgdmFy
IHRleEhhc0FscGhhID0gZm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEg
fHwKKyAgICAgICAgICAgIGZtdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5MQSB8
fAorICAgICAgICAgICAgZm10Lm9yZGVyID09IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkE7Cisg
ICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJh
bmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5mdWxsTmFtZSgpKSk7CisgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZkZib1Rlc3RVdGlsLkdyYWRpZW50U2hhZGVyfSAqLworICAgICAgICB2YXIg
c2hhZGVyID0gbmV3IGVzM2ZGYm9UZXN0VXRpbC5HcmFkaWVudFNoYWRlcigKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNAorICAgICAgICApOworICAgICAgICB2
YXIgc2hhZGVySUQgPSB0aGlzLm1fY29udGV4dC5jcmVhdGVQcm9ncmFtKHNoYWRlcik7CisKKyAg
ICAgICAgaWYgKCh0ZXhIYXNSR0IgJiYgIXRhcmdldEhhc1JHQikgfHwgKHRleEhhc0FscGhhICYm
ICF0YXJnZXRIYXNBbHBoYSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCisgICAgICAg
ICAgICAgICAgJ0NvcHlpbmcgZnJvbSBjdXJyZW50IGZyYW1lYnVmZmVyIGlzIG5vdCBzdXBwb3J0
ZWQnCisgICAgICAgICAgICApOworCisgICAgICAgIC8vIEZpbGwgcmVuZGVyIHRhcmdldCB3aXRo
IGdyYWRpZW50LgorICAgICAgICBzaGFkZXIuc2V0R3JhZGllbnQoCisgICAgICAgICAgICB0aGlz
Lm1fY29udGV4dCwgc2hhZGVySUQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdCisgICAgICAg
ICk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0
LCBzaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAgICAp
OworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4KTsK
KworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgr
KykgeworICAgICAgICAgICAgdmFyIGxldmVsU2l6ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXpl
ID4+IG5keCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGYgaW4gdGN1VGV4dHVyZS5DdWJlRmFj
ZSkgeworICAgICAgICAgICAgICAgIHZhciBmYWNlID0gdGN1VGV4dHVyZS5DdWJlRmFjZVtmXTsK
KyAgICAgICAgICAgICAgICB2YXIgeCA9IHJuZC5nZXRJbnQoMCwgdGhpcy5tX3NpemUgLSBsZXZl
bFNpemUpOworICAgICAgICAgICAgICAgIHZhciB5ID0gcm5kLmdldEludCgwLCB0aGlzLm1fc2l6
ZSAtIGxldmVsU2l6ZSk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4dC5jb3B5VGV4
SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuc19jdWJlTWFwRmFjZXNbZmFjZV0sIG5keCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0LCB4LCB5LCBsZXZlbFNpemUsIGxldmVsU2l6ZSwgMAorICAgICAgICAg
ICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gQmFz
aWMgQ29weVRleFN1YkltYWdlMkQoKSB3aXRoIDJEIHRleHR1cmUgdXNhZ2UKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmb3Jt
YXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YVR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICovCisgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4U3ViSW1hZ2UyRENhc2UgPSBm
dW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgZm9ybWF0LCBkYXRhVHlwZSwgd2lkdGgsIGhl
aWdodAorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0
dXJlMkRTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4
dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgICAgICBmb3JtYXQsIGRh
dGFUeXBlCisgICAgICAgICAgICApLCB3aWR0aCwgaGVpZ2h0LCBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5tYXhMZXZlbENvdW50KAorICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQK
KyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLm1fZm9ybWF0ID0gZm9y
bWF0OworICAgICAgICB0aGlzLm1fZGF0YVR5cGUgPSBkYXRhVHlwZTsKKyAgICB9OworCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4U3ViSW1hZ2UyRENhc2Uu
cHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLnByb3RvdHlwZQorICAgICAg
ICApOworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgQmFzaWNDb3B5
VGV4U3ViSW1hZ2UyRENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4U3ViSW1hZ2UyRENhc2U7CisKKyAg
ICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuCisgICAgQmFzaWNDb3B5VGV4U3ViSW1hZ2UyRENhc2UucHJvdG90eXBl
LmNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHBpeGVsRm9ybWF0ID0g
dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXRGcm9tQ29udGV4dChnbCk7CisgICAgICAgIHZhciB0
YXJnZXRIYXNSR0IgPSBwaXhlbEZvcm1hdC5yZWRCaXRzID4gMCAmJgorICAgICAgICAgICAgcGl4
ZWxGb3JtYXQuZ3JlZW5CaXRzID4gMCAmJgorICAgICAgICAgICAgcGl4ZWxGb3JtYXQuYmx1ZUJp
dHMgPiAwOworICAgICAgICB2YXIgdGFyZ2V0SGFzQWxwaGEgPSBwaXhlbEZvcm1hdC5hbHBoYUJp
dHMgPiAwOworICAgICAgICB2YXIgZm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xUcmFuc2ZlckZv
cm1hdCgKKyAgICAgICAgICAgICAgICB0aGlzLm1fZm9ybWF0LCB0aGlzLm1fZGF0YVR5cGUKKyAg
ICAgICAgKTsKKyAgICAgICAgdmFyIHRleEhhc1JHQiA9IGZtdC5vcmRlciAhPSB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5BOworICAgICAgICB2YXIgdGV4SGFzQWxwaGEgPSBmbXQub3JkZXIgPT0g
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSB8fAorICAgICAgICAgICAgZm10Lm9yZGVyID09
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkxBIHx8CisgICAgICAgICAgICBmbXQub3JkZXIgPT0g
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQTsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAg
ICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0
aGlzLmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuR3Jh
ZGllbnRTaGFkZXJ9ICovCisgICAgICAgIHZhciBzaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGls
LkdyYWRpZW50U2hhZGVyKAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0CisgICAgICAgICk7CisgICAgICAgIHZhciBzaGFkZXJJRCA9IHRoaXMubV9jb250ZXh0
LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKworICAgICAgICBpZiAoKHRleEhhc1JHQiAmJiAhdGFy
Z2V0SGFzUkdCKSB8fCAodGV4SGFzQWxwaGEgJiYgIXRhcmdldEhhc0FscGhhKSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigKKyAgICAgICAgICAgICAgICAnQ29weWluZyBmcm9tIGN1cnJl
bnQgZnJhbWVidWZmZXIgaXMgbm90IHN1cHBvcnRlZCcKKyAgICAgICAgICAgICk7CisKKyAgICAg
ICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1f
Y29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICB0aGlzLm1f
Y29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgICAgICAv
LyBGaXJzdCBzcGVjaWZ5IGZ1bGwgdGV4dHVyZS4KKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgdGhpcy5tX251bUxldmVsczsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcg
PSBNYXRoLm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZl
bEggPSBNYXRoLm1heCgxLCB0aGlzLm1faGVpZ2h0ID4+IG5keCk7CisKKyAgICAgICAgICAgIHZh
ciBjb2xvckEgPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisg
ICAgICAgICAgICAgICAgcm5kLCBbMCwgMCwgMCwgMF0sIFsxLCAxLCAxLCAxXSwgNAorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHZhciBjb2xvckIgPSBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCBbMCwgMCwgMCwgMF0s
IFsxLCAxLCAxLCAxXSwgNAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciBjZWxsU2l6
ZSA9IHJuZC5nZXRJbnQoMiwgMTYpOworCisgICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmVMZXZlbChmbXQsIGxldmVsVywgbGV2ZWxIKTsKKyAgICAgICAgICAgIHRj
dVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAgICBkYXRhLmdldEFjY2Vz
cygpLCBjZWxsU2l6ZSwgY29sb3JBLCBjb2xvckIKKyAgICAgICAgICAgICk7CisKKyAgICAgICAg
ICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVS
RV8yRCwgbmR4LCB0aGlzLm1fZm9ybWF0LCBsZXZlbFcsIGxldmVsSCwgMCwgdGhpcy5tX2Zvcm1h
dCwgdGhpcy5tX2RhdGFUeXBlLCBkYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbGwgcmVuZGVyIHRhcmdldCB3aXRo
IGdyYWRpZW50LgorICAgICAgICBzaGFkZXIuc2V0R3JhZGllbnQoCisgICAgICAgICAgICB0aGlz
Lm1fY29udGV4dCwgc2hhZGVySUQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdCisgICAgICAg
ICk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0
LCBzaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAgICAgICAp
OworCisgICAgICAgIC8vIFJlLXNwZWNpZnkgcGFydHMgb2YgZWFjaCBsZXZlbC4KKyAgICAgICAg
Zm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVsczsgbmR4KyspIHsKKyAgICAg
ICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1fd2lkdGggPj4gbmR4KTsKKyAg
ICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlzLm1faGVpZ2h0ID4+IG5keCk7
CisKKyAgICAgICAgICAgIHZhciB3ID0gcm5kLmdldEludCgxLCBsZXZlbFcpOworICAgICAgICAg
ICAgdmFyIGggPSBybmQuZ2V0SW50KDEsIGxldmVsSCk7CisgICAgICAgICAgICB2YXIgeG8gPSBy
bmQuZ2V0SW50KDAsIGxldmVsVyAtIHcpOworICAgICAgICAgICAgdmFyIHlvID0gcm5kLmdldElu
dCgwLCBsZXZlbEggLSBoKTsKKworICAgICAgICAgICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIHRo
aXMubV93aWR0aCAtIHcpOworICAgICAgICAgICAgdmFyIHkgPSBybmQuZ2V0SW50KDAsIHRoaXMu
bV9oZWlnaHQgLSBoKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQuY29weVRleFN1Yklt
YWdlMkQoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgbmR4LCB4bywgeW8sIHgsIHks
IHcsIGgKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gQmFzaWMg
Q29weVRleFN1YkltYWdlMkQoKSB3aXRoIGN1YmVtYXAgdXNhZ2UKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuVGV4dHVyZUN1YmVTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhVHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
aXplCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5
VGV4U3ViSW1hZ2VDdWJlQ2FzZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBmb3Jt
YXQsIGRhdGFUeXBlLCBzaXplCisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5h
bWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQoCisgICAgICAgICAg
ICAgICAgZm9ybWF0LCBkYXRhVHlwZQorICAgICAgICAgICAgKSwgc2l6ZSwgZGVNYXRoLmxvZ1Rv
Rmxvb3Ioc2l6ZSkgKyAxCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2Zvcm1hdCA9IGZv
cm1hdDsKKyAgICAgICAgdGhpcy5tX2RhdGFUeXBlID0gZGF0YVR5cGU7CisgICAgfTsKKworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlQ3ViZUNh
c2UucHJvdG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UucHJvdG90eXBlCisg
ICAgICAgICk7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNp
Y0NvcHlUZXhTdWJJbWFnZUN1YmVDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlQ3ViZUNh
c2U7CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY0NvcHlU
ZXhTdWJJbWFnZUN1YmVDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBwaXhlbEZvcm1hdCA9IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0RnJv
bUNvbnRleHQoZ2wpOworICAgICAgICB2YXIgdGFyZ2V0SGFzUkdCID0gcGl4ZWxGb3JtYXQucmVk
Qml0cyA+IDAgJiYKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0LmdyZWVuQml0cyA+IDAgJiYKKyAg
ICAgICAgICAgIHBpeGVsRm9ybWF0LmJsdWVCaXRzID4gMDsKKyAgICAgICAgdmFyIHRhcmdldEhh
c0FscGhhID0gcGl4ZWxGb3JtYXQuYWxwaGFCaXRzID4gMDsKKyAgICAgICAgdmFyIGZtdCA9IGds
dVRleHR1cmVVdGlsLm1hcEdMVHJhbnNmZXJGb3JtYXQodGhpcy5tX2Zvcm1hdCwgdGhpcy5tX2Rh
dGFUeXBlKTsKKyAgICAgICAgdmFyIHRleEhhc1JHQiA9IGZtdC5vcmRlciAhPSB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5BOworICAgICAgICB2YXIgdGV4SGFzQWxwaGEgPSBmbXQub3JkZXIgPT0g
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSB8fAorICAgICAgICAgICAgZm10Lm9yZGVyID09
IHRjdVRleHR1cmUuQ2hhbm5lbE9yZGVyLkxBIHx8CisgICAgICAgICAgICBmbXQub3JkZXIgPT0g
dGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuQTsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAg
ICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0
aGlzLmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmRmJvVGVzdFV0aWwuR3Jh
ZGllbnRTaGFkZXJ9ICovCisgICAgICAgIHZhciBzaGFkZXIgPSBuZXcgZXMzZkZib1Rlc3RVdGls
LkdyYWRpZW50U2hhZGVyKAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0CisgICAgICAgICk7CisgICAgICAgIHZhciBzaGFkZXJJRCA9IHRoaXMubV9jb250ZXh0
LmNyZWF0ZVByb2dyYW0oc2hhZGVyKTsKKworICAgICAgICBpZiAoKHRleEhhc1JHQiAmJiAhdGFy
Z2V0SGFzUkdCKSB8fCAodGV4SGFzQWxwaGEgJiYgIXRhcmdldEhhc0FscGhhKSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigKKyAgICAgICAgICAgICAgICAnQ29weWluZyBmcm9tIGN1cnJl
bnQgZnJhbWVidWZmZXIgaXMgbm90IHN1cHBvcnRlZCcKKyAgICAgICAgICAgICk7CisKKyAgICAg
ICAgdGV4ID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1f
Y29udGV4dC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXgpOworICAgICAgICB0
aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAg
ICAgICB2YXIgZGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbChmbXQpOworCisgICAg
ICAgIC8vIEZpcnN0IHNwZWNpZnkgZnVsbCB0ZXh0dXJlLgorICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxl
dmVsU2l6ZSA9IE1hdGgubWF4KDEsIHRoaXMubV9zaXplID4+IG5keCk7CisKKyAgICAgICAgICAg
IGRhdGEuc2V0U2l6ZShsZXZlbFNpemUsIGxldmVsU2l6ZSk7CisKKyAgICAgICAgICAgIGZvciAo
dmFyIGYgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgICAgIHZhciBmYWNl
ID0gdGN1VGV4dHVyZS5DdWJlRmFjZVtmXTsKKyAgICAgICAgICAgICAgICB2YXIgY29sb3JBID0g
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAg
ICAgICAgICBybmQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdLCA0CisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgICAgICB2YXIgY29sb3JCID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgICAgICBybmQsIFswLCAwLCAw
LCAwXSwgWzEsIDEsIDEsIDFdLCA0CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICB2YXIgY2VsbFNpemUgPSBybmQuZ2V0SW50KDIsIDE2KTsKKworICAgICAgICAgICAgICAgIHRj
dVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5nZXRB
Y2Nlc3MoKSwgY2VsbFNpemUsIGNvbG9yQSwgY29sb3JCCisgICAgICAgICAgICAgICAgKTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAgICAg
ICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzW2ZhY2Vd
LAorICAgICAgICAgICAgICAgICAgICBuZHgsIHRoaXMubV9mb3JtYXQsIGxldmVsU2l6ZSwgbGV2
ZWxTaXplLCAwLCB0aGlzLm1fZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZGF0
YVR5cGUsIGRhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbGwgcmVuZGVyIHRhcmdl
dCB3aXRoIGdyYWRpZW50LgorICAgICAgICBzaGFkZXIuc2V0R3JhZGllbnQoCisgICAgICAgICAg
ICB0aGlzLm1fY29udGV4dCwgc2hhZGVySUQsIFswLCAwLCAwLCAwXSwgWzEsIDEsIDEsIDFdCisg
ICAgICAgICk7CisgICAgICAgIHJyVXRpbC5kcmF3UXVhZCgKKyAgICAgICAgICAgIHRoaXMubV9j
b250ZXh0LCBzaGFkZXJJRCwgWy0xLjAsIC0xLjAsIDAuMF0sIFsxLjAsIDEuMCwgMC4wXQorICAg
ICAgICApOworCisgICAgICAgIC8vIFJlLXNwZWNpZnkgcGFydHMgb2YgZWFjaCBmYWNlIGFuZCBs
ZXZlbC4KKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVsczsg
bmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFNpemUgPSBNYXRoLm1heCgxLCB0aGlzLm1f
c2l6ZSA+PiBuZHgpOworCisgICAgICAgICAgICBmb3IgKHZhciBmIGluIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzKSB7CisgICAgICAgICAgICAgICAgdmFyIHcg
PSBybmQuZ2V0SW50KDEsIGxldmVsU2l6ZSk7CisgICAgICAgICAgICAgICAgdmFyIGggPSBybmQu
Z2V0SW50KDEsIGxldmVsU2l6ZSk7CisgICAgICAgICAgICAgICAgdmFyIHhvID0gcm5kLmdldElu
dCgwLCBsZXZlbFNpemUgLSB3KTsKKyAgICAgICAgICAgICAgICB2YXIgeW8gPSBybmQuZ2V0SW50
KDAsIGxldmVsU2l6ZSAtIGgpOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBybmQuZ2V0SW50
KDAsIHRoaXMubV9zaXplIC0gdyk7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBybmQuZ2V0SW50
KDAsIHRoaXMubV9zaXplIC0gaCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fY29udGV4dC5j
b3B5VGV4U3ViSW1hZ2UyRCgKKyAgICAgICAgICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuc19jdWJlTWFwRmFjZXNbZl0sCisgICAgICAgICAgICAgICAgICAgIG5keCwg
eG8sIHlvLCB4LCB5LCB3LCBoCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvLyBCYXNpYyBnbFRleFN0b3JhZ2UyRCgpIHdpdGggMkQg
dGV4dHVyZSB1c2FnZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBudW1MZXZlbHMKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5CYXNpY1RleFN0b3JhZ2UyRENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVz
YywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG51bUxldmVscworICAgICkgeworICAg
ICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5jYWxs
KAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRl
cm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAg
KSwgd2lkdGgsIGhlaWdodCwgbnVtTGV2ZWxzCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZTJEQ2FzZS5wcm90b3R5cGUgPQor
ICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN0b3JhZ2UyRENhc2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
QmFzaWNUZXhTdG9yYWdlMkRDYXNlOworCisgICAgLyoqCisgICAgICogY3JlYXRlVGV4dHVyZQor
ICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIEJhc2ljVGV4
U3RvcmFnZTJEQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgZm10ID0gZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCh0aGlzLm1f
aW50ZXJuYWxGb3JtYXQpOworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRp
bC5nZXRUcmFuc2ZlckZvcm1hdChmbXQpOworICAgICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAg
ICAgdmFyIGxldmVsRGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbCgKKyAgICAgICAg
ICAgIGZtdCwgdGhpcy5tX3dpZHRoLCB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7CisgICAgICAg
IHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlz
LmZ1bGxOYW1lKCkpKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN0b3JhZ2UyRCgKKyAgICAgICAgICAg
IGdsLlRFWFRVUkVfMkQsIHRoaXMubV9udW1MZXZlbHMsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodAorICAgICAgICApOworCisg
ICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDEp
OworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5k
eCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRo
ID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0gTWF0aC5tYXgoMSwgdGhpcy5tX2hl
aWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGdNaW4gPSBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4
Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5m
by52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAg
IHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhp
cy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAgICk7CisKKyAgICAgICAg
ICAgIGxldmVsRGF0YS5zZXRTaXplKGxldmVsVywgbGV2ZWxIKTsKKyAgICAgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxl
dmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3ViSW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBnbC5U
RVhUVVJFXzJELCBuZHgsIDAsIDAsIGxldmVsVywgbGV2ZWxILAorICAgICAgICAgICAgICAgIHRy
YW5zZmVyRm10LmZvcm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsCisgICAgICAgICAgICAgICAg
bGV2ZWxEYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvLyBCYXNpYyBnbFRleFN0b3JhZ2UyRCgpIHdpdGggY3ViZW1h
cCB1c2FnZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlfQorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
c2l6ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAgICAgKi8KKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN0b3JhZ2VDdWJlQ2FzZSA9IGZ1bmN0
aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgbnVtTGV2ZWxz
CisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVD
dWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1
cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3Jt
YXQKKyAgICAgICAgICAgICksIHNpemUsIG51bUxldmVscworICAgICAgICApOworCisgICAgICAg
IHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgIH07CisKKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN0b3JhZ2VDdWJlQ2FzZS5wcm90
b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICAgICAg
KTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZUN1
YmVDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZUN1YmVDYXNlOworCisgICAgLyoqCisgICAgICog
Y3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LkJhc2ljVGV4U3RvcmFnZUN1YmVDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9y
bWF0KHRoaXMubV9pbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIHZhciB0cmFuc2ZlckZtdCA9IGds
dVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KGZtdCk7CisgICAgICAgIHZhciB0ZXggPSBu
dWxsOworICAgICAgICB2YXIgbGV2ZWxEYXRhID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUxldmVs
KAorICAgICAgICAgICAgZm10LCB0aGlzLm1fc2l6ZSwgdGhpcy5tX3NpemUKKyAgICAgICAgKTsK
KyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdI
YXNoKHRoaXMuZnVsbE5hbWUoKSkpOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV9DVUJFX01BUCwgdGV4KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3RvcmFnZTJE
KAorICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGhpcy5tX251bUxldmVscywgdGhp
cy5tX2ludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgdGhpcy5tX3NpemUsIHRoaXMubV9zaXpl
CisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhp
cy5tX251bUxldmVsczsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFNpemUgPSBNYXRo
Lm1heCgxLCB0aGlzLm1fc2l6ZSA+PiBuZHgpOworCisgICAgICAgICAgICBsZXZlbERhdGEuc2V0
U2l6ZShsZXZlbFNpemUsIGxldmVsU2l6ZSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGYgaW4g
dGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgICAgIHZhciBmYWNlID0gdGN1VGV4
dHVyZS5DdWJlRmFjZVtmXTsKKyAgICAgICAgICAgICAgICB2YXIgZ01pbiA9IGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICAgICAgcm5k
LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQKKyAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFuZG9t
VmVjdG9yKAorICAgICAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZh
bHVlTWluLAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1h
eCwgNAorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRp
bC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cygKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxE
YXRhLmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQoCisgICAgICAgICAgICAgICAg
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzW2ZhY2VdLAor
ICAgICAgICAgICAgICAgICAgICBuZHgsIDAsIDAsIGxldmVsU2l6ZSwgbGV2ZWxTaXplLAorICAg
ICAgICAgICAgICAgICAgICB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBl
LAorICAgICAgICAgICAgICAgICAgICBsZXZlbERhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigp
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisK
KyAgICAvLyBCYXNpYyBnbFRleFN0b3JhZ2UzRCgpIHdpdGggMkQgYXJyYXkgdGV4dHVyZSB1c2Fn
ZQorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRBcnJheVNwZWNDYXNlfQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IG51bUxheWVycworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1MZXZlbHMKKyAgICAgKi8KKyAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN0b3JhZ2UyREFycmF5Q2Fz
ZSA9IGZ1bmN0aW9uKAorICAgICAgICBuYW1lLCBkZXNjLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgbnVtTGF5ZXJzLCBudW1MZXZlbHMKKyAgICApIHsKKyAgICAgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2FzZS5jYWxsKAorICAgICAg
ICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1h
dCgKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAgKSwgd2lkdGgs
IGhlaWdodCwgbnVtTGF5ZXJzLCBudW1MZXZlbHMKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZTJEQXJyYXlDYXNlLnByb3RvdHlw
ZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXh0dXJlMkRBcnJheVNwZWNDYXNlLnByb3RvdHlwZQorICAgICAgICAp
OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgQmFzaWNUZXhTdG9y
YWdlMkRBcnJheUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdG9yYWdlMkRBcnJheUNhc2U7CisKKyAgICAv
KioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuQmFzaWNUZXhTdG9yYWdlMkRBcnJheUNhc2UucHJvdG90eXBlLmNyZWF0ZVRl
eHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZh
ciBsZXZlbERhdGEgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwoCisgICAgICAgICAgICB0
aGlzLm1fdGV4Rm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQKKyAgICAgICAgKTsK
KyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdI
YXNoKHRoaXMuZnVsbE5hbWUoKSkpOworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQK
KyAgICAgICAgKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJS
QVksIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN0b3JhZ2UzRCgKKyAgICAgICAg
ICAgIGdsLlRFWFRVUkVfMkRfQVJSQVksIHRoaXMubV9udW1MZXZlbHMsIHRoaXMubV9pbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgdGhpcy5t
X251bUxheWVycworICAgICAgICApOworCisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3Rv
cmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7
IG5keCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxX
ID0gTWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2
ZWxIID0gTWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFy
IGdNaW4gPSBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAg
ICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAg
ICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIHZhciBnTWF4ID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucmFu
ZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFs
dWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIDQK
KyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXplKGxldmVsVywg
bGV2ZWxILCB0aGlzLm1fbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZp
bGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRB
Y2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGhpcy5t
X2NvbnRleHQudGV4U3ViSW1hZ2UzRCgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJEX0FS
UkFZLCBuZHgsIDAsIDAsIDAsIGxldmVsVywgbGV2ZWxILAorICAgICAgICAgICAgICAgIHRoaXMu
bV9udW1MYXllcnMsIHRyYW5zZmVyRm10LmZvcm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsCisg
ICAgICAgICAgICAgICAgbGV2ZWxEYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBCYXNpYyBUZXhTdG9yYWdlM0Qo
KSB3aXRoIDNEIHRleHR1cmUgdXNhZ2UKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTNEU3Bl
Y0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbEZvcm1hdAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtTGV2ZWxz
CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdG9y
YWdlM0RDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbnVtTGV2ZWxzCisgICAgKSB7CisgICAgICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlLmNhbGwoCisgICAgICAg
ICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0
KAorICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICApLCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgbnVtTGV2ZWxzCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2lu
dGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgfTsKKworICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZTNEQ2FzZS5wcm90b3R5cGUgPQorICAg
ICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBCYXNpY1RleFN0b3JhZ2UzRENhc2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuQmFzaWNUZXhTdG9yYWdlM0RDYXNlOworCisgICAgLyoqCisgICAgICogY3JlYXRlVGV4dHVy
ZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIEJhc2lj
VGV4U3RvcmFnZTNEQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAgICAgdmFyIGxldmVsRGF0YSA9IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmVMZXZlbCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQsIHRoaXMu
bV93aWR0aCwgdGhpcy5tX2hlaWdodAorICAgICAgICApOworICAgICAgICB2YXIgcm5kID0gbmV3
IGRlUmFuZG9tLlJhbmRvbShkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5mdWxsTmFtZSgpKSk7
CisgICAgICAgIHZhciB0cmFuc2ZlckZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9y
bWF0KAorICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdAorICAgICAgICApOworCisgICAgICAg
IHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4KTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQudGV4U3RvcmFnZTNEKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgdGhpcy5tX251
bUxldmVscywgdGhpcy5tX2ludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgdGhpcy5tX3dpZHRo
LCB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgKKyAgICAgICAgKTsKKworICAgICAgICB0aGlz
Lm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAg
ICAgICAgICAgdmFyIGxldmVsVyA9IE1hdGgubWF4KDEsIHRoaXMubV93aWR0aCA+PiBuZHgpOwor
ICAgICAgICAgICAgdmFyIGxldmVsSCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbmR4
KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEQgPSBNYXRoLm1heCgxLCB0aGlzLm1fZGVwdGggPj4g
bmR4KTsKKyAgICAgICAgICAgIHZhciBnTWluID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMucmFuZG9tVmVjdG9yKAorICAgICAgICAgICAgICAgIHJuZCwgdGhpcy5tX3RleEZvcm1hdElu
Zm8udmFsdWVNaW4sCisgICAgICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVN
YXgsIDQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICB2YXIgZ01heCA9IGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLnJhbmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICBybmQsIHRo
aXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluLAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhG
b3JtYXRJbmZvLnZhbHVlTWF4LCA0CisgICAgICAgICAgICApOworCisgICAgICAgICAgICBsZXZl
bERhdGEuc2V0U2l6ZShsZXZlbFcsIGxldmVsSCwgbGV2ZWxEKTsKKyAgICAgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAgICAgICAgICAgIGxl
dmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3ViSW1hZ2UzRCgKKyAgICAgICAgICAgICAgICBnbC5U
RVhUVVJFXzNELCBuZHgsIDAsIDAsIDAsIGxldmVsVywgbGV2ZWxILAorICAgICAgICAgICAgICAg
IGxldmVsRCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFuc2ZlckZtdC5kYXRhVHlwZSwKKyAgICAg
ICAgICAgICAgICBsZXZlbERhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAg
ICApOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIFBpeGVsIGJ1ZmZlciBvYmplY3QgY2Fz
ZXMuCisKKyAgICAvLyBUZXhJbWFnZTJEKCkgZnJvbSBwaXhlbCBidWZmZXIgb2JqZWN0LgorICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dMZW5ndGgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcFJvd3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
c2tpcFBpeGVscworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhbGlnbm1lbnQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gb2Zmc2V0CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4SW1hZ2UyREJ1ZmZlckNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVz
YywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHJvd0xlbmd0aCwKKyAgICAgICAgc2tp
cFJvd3MsIHNraXBQaXhlbHMsIGFsaWdubWVudCwgb2Zmc2V0CisgICAgKSB7CisgICAgICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLmNhbGwoCisgICAg
ICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9y
bWF0KAorICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICApLCB3aWR0
aCwgaGVpZ2h0LCAxCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0
ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgIHRoaXMubV9yb3dMZW5ndGggPSByb3dMZW5ndGg7
CisgICAgICAgIHRoaXMubV9za2lwUm93cyA9IHNraXBSb3dzOworICAgICAgICB0aGlzLm1fc2tp
cFBpeGVscyA9IHNraXBQaXhlbHM7CisgICAgICAgIHRoaXMubV9hbGlnbm1lbnQgPSBhbGlnbm1l
bnQ7CisgICAgICAgIHRoaXMubV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgfTsKKworICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRCdWZmZXJDYXNlLnByb3RvdHlwZSA9
CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICAgICAgKTsKKworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRleEltYWdlMkRCdWZmZXJDYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLlRleEltYWdlMkRCdWZmZXJDYXNlOworCisgICAgLyoqCisgICAgICogY3JlYXRlVGV4
dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdl
MkRCdWZmZXJDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0KKyAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3Jt
YXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAgICAgIHZhciBwaXhlbFNpemUgPSB0aGlzLm1fdGV4
Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2YXIgcm93TGVuZ3RoID0gdGhpcy5tX3Jv
d0xlbmd0aCA+IDAgPworICAgICAgICAgICAgdGhpcy5tX3Jvd0xlbmd0aCA6CisgICAgICAgICAg
ICB0aGlzLm1fd2lkdGggKyB0aGlzLm1fc2tpcFBpeGVsczsKKyAgICAgICAgdmFyIHJvd1BpdGNo
ID0gZGVNYXRoLmRlQWxpZ24zMigKKyAgICAgICAgICAgIHJvd0xlbmd0aCAqIHBpeGVsU2l6ZSwg
dGhpcy5tX2FsaWdubWVudAorICAgICAgICApOworICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5t
X2hlaWdodCArIHRoaXMubV9za2lwUm93czsKKyAgICAgICAgdmFyIGJ1ZiA9IG51bGw7CisgICAg
ICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihy
b3dQaXRjaCAqIGhlaWdodCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplICsgdGhpcy5t
X29mZnNldCk7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMu
bV9udW1MZXZlbHMgPT0gMSwgJ051bWJlciBvZiBsZXZlbHMgZGlmZmVyZW50IHRoYW4gMScsCisg
ICAgICAgICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICApOworCisgICAgICAgIC8vIEZpbGwgZGF0
YSB3aXRoIGdyaWQuCisgICAgICAgIHZhciBjU2NhbGUgPSBkZU1hdGguc3VidHJhY3QodGhpcy5t
X3RleEZvcm1hdEluZm8udmFsdWVNYXgsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluKTsK
KyAgICAgICAgdmFyIGNCaWFzID0gdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW47CisgICAg
ICAgIHZhciBjb2xvckEgPSBkZU1hdGguYWRkKAorICAgICAgICAgICAgZGVNYXRoLm11bHRpcGx5
KFsxLjAsIDAuMCwgMC4wLCAxLjBdLCBjU2NhbGUpLCBjQmlhcworICAgICAgICApOworICAgICAg
ICB2YXIgY29sb3JCID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseShb
MC4wLCAxLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAgICAgICAgKTsKKworICAgICAg
ICB2YXIgYWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhp
cy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6
IHRoaXMubV9za2lwUm93cyAqIHJvd1BpdGNoICsgdGhpcy5tX3NraXBQaXhlbHMgKiBwaXhlbFNp
emUgKyB0aGlzLm1fb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICB0Y3VU
ZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQoYWNjZXNzLCA0LCBjb2xvckEsIGNvbG9yQik7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIGJ1ZmZlciBhbmQgdXBsb2FkLgorICAgICAgICBidWYgPSB0aGlzLm1f
Y29udGV4dC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZEJ1ZmZl
cihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYpOworICAgICAgICB0aGlzLm1fY29udGV4dC5i
dWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEsIGdsLlNUQVRJQ19EUkFXCisg
ICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X1JPV19MRU5HVEgsIHRoaXMubV9yb3dMZW5ndGgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCB0aGlzLm1fc2tpcFJvd3MpOworICAgICAg
ICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHRoaXMu
bV9za2lwUGl4ZWxzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0FMSUdOTUVOVCwgdGhpcy5tX2FsaWdubWVudCk7CisKKyAgICAgICAgdGV4ID0gdGhpcy5t
X2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
IHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgMCwgdHJhbnNmZXJGbXQuZm9ybWF0LCB0cmFu
c2ZlckZtdC5kYXRhVHlwZSwKKyAgICAgICAgICAgIHRoaXMubV9vZmZzZXQKKyAgICAgICAgKTsK
KyAgICB9OworCisgICAgLy8gVGV4SW1hZ2UyRCgpIGN1YmVtYXAgZnJvbSBwaXhlbCBidWZmZXIg
b2JqZWN0IGNhc2UKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZX0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcm93TGVuZ3RoCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHNraXBSb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBQaXhlbHMKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gYWxpZ25tZW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9m
ZnNldAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdl
Q3ViZUJ1ZmZlckNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgaW50ZXJuYWxG
b3JtYXQsIHNpemUsIHJvd0xlbmd0aCwgc2tpcFJvd3MsIHNraXBQaXhlbHMsCisgICAgICAgIGFs
aWdubWVudCwgb2Zmc2V0CisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLlRleHR1cmVDdWJlU3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUs
IGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAg
ICAgaW50ZXJuYWxGb3JtYXQKKyAgICAgICAgICAgICksIHNpemUsIDEKKyAgICAgICAgKTsKKwor
ICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAg
dGhpcy5tX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgdGhpcy5tX3NraXBSb3dzID0g
c2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxzID0gc2tpcFBpeGVsczsKKyAgICAg
ICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICAgICAgdGhpcy5tX29mZnNldCA9
IG9mZnNldDsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4
SW1hZ2VDdWJlQnVmZmVyQ2FzZS5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAor
ICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVj
Q2FzZS5wcm90b3R5cGUKKyAgICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLgorICAgIFRleEltYWdlQ3ViZUJ1ZmZlckNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2VDdWJlQnVm
ZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhJbWFnZUN1YmVCdWZmZXJDYXNl
LnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBybmQg
PSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1l
KCkpKTsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fdGV4Rm9ybWF0KTsKKyAgICAgICAgdmFy
IHBpeGVsU2l6ZSA9IHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxTaXplKCk7CisgICAgICAgIHZh
ciByb3dMZW5ndGggPSB0aGlzLm1fcm93TGVuZ3RoID4gMCA/CisgICAgICAgICAgICB0aGlzLm1f
cm93TGVuZ3RoIDogdGhpcy5tX3NpemUgKyB0aGlzLm1fc2tpcFBpeGVsczsKKyAgICAgICAgdmFy
IHJvd1BpdGNoID0gZGVNYXRoLmRlQWxpZ24zMigKKyAgICAgICAgICAgIHJvd0xlbmd0aCAqIHBp
eGVsU2l6ZSwgdGhpcy5tX2FsaWdubWVudAorICAgICAgICApOworICAgICAgICB2YXIgaGVpZ2h0
ID0gdGhpcy5tX3NpemUgKyB0aGlzLm1fc2tpcFJvd3M7CisKKyAgICAgICAgdmFyIGRhdGEgPSBu
ZXcgQXJyYXlCdWZmZXIocm93UGl0Y2ggKiBoZWlnaHQgKyB0aGlzLm1fc2tpcFBpeGVscyAqIHBp
eGVsU2l6ZSArIHRoaXMubV9vZmZzZXQpOworICAgICAgICB2YXIgYWNjZXNzID0gbmV3IHRjdVRl
eHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aDogdGhpcy5tX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlz
Lm1fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMubV9za2lwUm93cyAqIHJvd1BpdGNoICsgdGhpcy5t
X3NraXBQaXhlbHMgKiBwaXhlbFNpemUgKyB0aGlzLm1fb2Zmc2V0CisgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgdGhp
cy5tX251bUxldmVscyA9PSAxLCAnTnVtYmVyIG9mIGxldmVscyBpcyBkaWZmZXJlbnQgdGhhbiAx
JywKKyAgICAgICAgICAgIGZhbHNlLCB0cnVlCisgICAgICAgICk7CisKKyAgICAgICAgdGV4ID0g
dGhpcy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXgpOworICAgICAgICB0aGlzLm1fY29u
dGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgICAgICBmb3Ig
KHZhciBmIGluIHRjdVRleHR1cmUuQ3ViZUZhY2UpIHsKKyAgICAgICAgICAgIHZhciBmYWNlID0g
dGN1VGV4dHVyZS5DdWJlRmFjZVtmXTsKKyAgICAgICAgICAgIHZhciBidWYgPSBudWxsOworCisg
ICAgICAgICAgICB2YXIgZ01pbiA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJhbmRv
bVZlY3RvcigKKyAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVl
TWluLAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0Cisg
ICAgICAgICAgICApOworICAgICAgICAgICAgdmFyIGdNYXggPSBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1fdGV4
Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5m
by52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGN1VGV4dHVyZVV0
aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoYWNjZXNzLCBnTWluLCBnTWF4KTsKKworICAg
ICAgICAgICAgLy8gQ3JlYXRlIGJ1ZmZlciBhbmQgdXBsb2FkLgorICAgICAgICAgICAgYnVmID0g
dGhpcy5tX2NvbnRleHQuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgICAgICB0aGlzLm1fY29udGV4
dC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGJ1Zik7CisgICAgICAgICAgICB0
aGlzLm1fY29udGV4dC5idWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEsIGds
LlNUQVRJQ19EUkFXKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWko
Z2wuVU5QQUNLX1JPV19MRU5HVEgsIHRoaXMubV9yb3dMZW5ndGgpOworICAgICAgICAgICAgdGhp
cy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBS
b3dzKTsKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19T
S0lQX1BJWEVMUywgdGhpcy5tX3NraXBQaXhlbHMpOworICAgICAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgdGhpcy5tX2FsaWdubWVudCk7CisK
KyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlMkQoCisgICAgICAgICAgICAgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuc19jdWJlTWFwRmFjZXNbZmFjZV0sIDAsCisg
ICAgICAgICAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0LCB0aGlzLm1fc2l6ZSwgdGhpcy5t
X3NpemUsIDAsIGZtdC5mb3JtYXQsCisgICAgICAgICAgICAgICAgZm10LmRhdGFUeXBlLCB0aGlz
Lm1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBUZXhJbWFnZTNEKCkgMkQg
YXJyYXkgZnJvbSBwaXhlbCBidWZmZXIgb2JqZWN0LgorICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0
dXJlMkRBcnJheVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3Jt
YXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGltYWdlSGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd0xlbmd0aAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBza2lwSW1hZ2VzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBS
b3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBQaXhlbHMKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gYWxpZ25tZW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqLwor
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRBcnJheUJ1ZmZlckNh
c2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBpbWFnZUhlaWdodCwKKyAgICAgICAgcm93TGVuZ3RoLCBza2lwSW1h
Z2VzLCBza2lwUm93cywgc2tpcFBpeGVscywgYWxpZ25tZW50LCBvZmZzZXQKKyAgICApIHsKKyAg
ICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2Fz
ZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAgICAg
ICAgICAgKSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDEKKyAgICAgICAgKTsKKworICAgICAgICB0
aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5tX2lt
YWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7CisgICAgICAgIHRoaXMubV9yb3dMZW5ndGggPSByb3dM
ZW5ndGg7CisgICAgICAgIHRoaXMubV9za2lwSW1hZ2VzID0gc2tpcEltYWdlczsKKyAgICAgICAg
dGhpcy5tX3NraXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxzID0g
c2tpcFBpeGVsczsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICAg
ICAgdGhpcy5tX29mZnNldCA9IG9mZnNldDsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyREFycmF5QnVmZmVyQ2FzZS5wcm90b3R5cGUgPQorICAg
ICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICAgICAgKTsKKworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRleEltYWdlMkRBcnJheUJ1ZmZl
ckNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4SW1hZ2UyREFycmF5QnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAq
IGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy4KKyAgICBUZXhJbWFnZTJEQXJyYXlCdWZmZXJDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0cmFuc2ZlckZtdCA9IGdsdVRleHR1cmVVdGls
LmdldFRyYW5zZmVyRm9ybWF0KAorICAgICAgICAgICAgdGhpcy5tX3RleEZvcm1hdAorICAgICAg
ICApOworICAgICAgICB2YXIgcGl4ZWxTaXplID0gdGhpcy5tX3RleEZvcm1hdC5nZXRQaXhlbFNp
emUoKTsKKyAgICAgICAgdmFyIHJvd0xlbmd0aCA9IHRoaXMubV9yb3dMZW5ndGggPiAwID8gdGhp
cy5tX3Jvd0xlbmd0aCA6IHRoaXMubV93aWR0aDsKKyAgICAgICAgdmFyIHJvd1BpdGNoID0gZGVN
YXRoLmRlQWxpZ24zMigKKyAgICAgICAgICAgIHJvd0xlbmd0aCAqIHBpeGVsU2l6ZSwgdGhpcy5t
X2FsaWdubWVudAorICAgICAgICApOworICAgICAgICB2YXIgaW1hZ2VIZWlnaHQgPSB0aGlzLm1f
aW1hZ2VIZWlnaHQgPiAwID8KKyAgICAgICAgICAgIHRoaXMubV9pbWFnZUhlaWdodCA6IHRoaXMu
bV9oZWlnaHQ7CisgICAgICAgIHZhciBzbGljZVBpdGNoID0gaW1hZ2VIZWlnaHQgKiByb3dQaXRj
aDsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBidWYgPSBudWxsOworICAg
ICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcigKKyAgICAgICAgICAgIHNsaWNlUGl0Y2gg
KiAodGhpcy5tX251bUxheWVycyArIHRoaXMubV9za2lwSW1hZ2VzKSArCisgICAgICAgICAgICB0
aGlzLm1fc2tpcFJvd3MgKiByb3dQaXRjaCArIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXpl
ICsgdGhpcy5tX29mZnNldAorICAgICAgICApOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
CisgICAgICAgICAgICB0aGlzLm1fbnVtTGV2ZWxzID09IDEsICdOdW1iZXIgb2YgbGV2ZWxzIGlz
IGRpZmZlcmVudCB0aGFuIDEnLAorICAgICAgICAgICAgZmFsc2UsIHRydWUKKyAgICAgICAgKTsK
KworICAgICAgICAvLyBGaWxsIGRhdGEgd2l0aCBncmlkLgorICAgICAgICB2YXIgY1NjYWxlID0g
ZGVNYXRoLnN1YnRyYWN0KHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4
Rm9ybWF0SW5mby52YWx1ZU1pbik7CisgICAgICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhGb3Jt
YXRJbmZvLnZhbHVlTWluOworICAgICAgICB2YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAgICAg
ICAgICAgIGRlTWF0aC5tdWx0aXBseShbMS4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0Jp
YXMKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGNvbG9yQiA9IGRlTWF0aC5hZGQoCisgICAgICAg
ICAgICBkZU1hdGgubXVsdGlwbHkoWzAuMCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNCaWFz
CisgICAgICAgICk7CisKKyAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVs
QnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3Rl
eEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMubV9oZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBkZXB0aDogdGhpcy5tX251bUxheWVycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJvd1BpdGNoOiByb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNl
UGl0Y2g6IHNsaWNlUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm1fc2tpcEltYWdlcyAqIHNsaWNl
UGl0Y2ggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9za2lwUm93cyAqIHJv
d1BpdGNoICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fc2tpcFBpeGVscyAq
IHBpeGVsU2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX29mZnNldAor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxX
aXRoR3JpZChhY2Nlc3MsIDQsIGNvbG9yQSwgY29sb3JCKTsKKworICAgICAgICAvLyBDcmVhdGUg
YnVmZmVyIGFuZCB1cGxvYWQuCisgICAgICAgIGJ1ZiA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZUJ1
ZmZlcigpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFD
S19CVUZGRVIsIGJ1Zik7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJ1ZmZlckRhdGEoZ2wuUElY
RUxfVU5QQUNLX0JVRkZFUiwgZGF0YSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIHRoaXMu
bV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19JTUFHRV9IRUlHSFQsIHRoaXMubV9pbWFn
ZUhlaWdodCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19S
T1dfTEVOR1RILCB0aGlzLm1fcm93TGVuZ3RoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfSU1BR0VTLCB0aGlzLm1fc2tpcEltYWdlcyk7CisgICAg
ICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIHRoaXMu
bV9za2lwUm93cyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19TS0lQX1BJWEVMUywgdGhpcy5tX3NraXBQaXhlbHMpOworICAgICAgICB0aGlzLm1fY29udGV4
dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQUxJR05NRU5ULCB0aGlzLm1fYWxpZ25tZW50KTsKKwor
ICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRo
aXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleCk7CisgICAg
ICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlM0QoCisgICAgICAgICAgICBnbC5URVhUVVJFXzJE
X0FSUkFZLCAwLCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIHRoaXMubV93aWR0aCwKKyAgICAgICAg
ICAgIHRoaXMubV9oZWlnaHQsIHRoaXMubV9udW1MYXllcnMsIDAsIHRyYW5zZmVyRm10LmZvcm1h
dCwKKyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCB0aGlzLm1fb2Zmc2V0CisgICAg
ICAgICk7CisgICAgfTsKKworICAgIC8vIFRleEltYWdlM0QoKSBmcm9tIHBpeGVsIGJ1ZmZlciBv
YmplY3QuCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2Vz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlfQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGRlcHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGltYWdlSGVpZ2h0CisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHJvd0xlbmd0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwSW1hZ2VzCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBSb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNr
aXBQaXhlbHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYWxpZ25tZW50CisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG9mZnNldAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzLlRleEltYWdlM0RCdWZmZXJDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2Ms
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW1hZ2VIZWlnaHQsCisgICAg
ICAgIHJvd0xlbmd0aCwgc2tpcEltYWdlcywgc2tpcFJvd3MsIHNraXBQaXhlbHMsIGFsaWdubWVu
dCwgb2Zmc2V0CisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LlRleHR1cmUzRFNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBn
bHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KAorICAgICAgICAgICAgICAgIGludGVy
bmFsRm9ybWF0CisgICAgICAgICAgICApLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMQorICAgICAg
ICApOworCisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0Owor
ICAgICAgICB0aGlzLm1faW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdodDsKKyAgICAgICAgdGhpcy5t
X3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgdGhpcy5tX3NraXBJbWFnZXMgPSBza2lw
SW1hZ2VzOworICAgICAgICB0aGlzLm1fc2tpcFJvd3MgPSBza2lwUm93czsKKyAgICAgICAgdGhp
cy5tX3NraXBQaXhlbHMgPSBza2lwUGl4ZWxzOworICAgICAgICB0aGlzLm1fYWxpZ25tZW50ID0g
YWxpZ25tZW50OworICAgICAgICB0aGlzLm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH07CisKKyAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTNEQnVmZmVyQ2FzZS5wcm90
b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7
CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhJbWFnZTNEQnVm
ZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXhJbWFnZTNEQnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNy
ZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4K
KyAgICBUZXhJbWFnZTNEQnVmZmVyQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFu
c2ZlckZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQKKyAgICAgICAgKTsKKyAg
ICAgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxTaXplKCk7Cisg
ICAgICAgIHZhciByb3dMZW5ndGggPSB0aGlzLm1fcm93TGVuZ3RoID4gMCA/IHRoaXMubV9yb3dM
ZW5ndGggOiB0aGlzLm1fd2lkdGg7CisgICAgICAgIHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFs
aWduMzIoCisgICAgICAgICAgICByb3dMZW5ndGggKiBwaXhlbFNpemUsIHRoaXMubV9hbGlnbm1l
bnQKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGltYWdlSGVpZ2h0ID0gdGhpcy5tX2ltYWdlSGVp
Z2h0ID4gMCA/CisgICAgICAgICAgICB0aGlzLm1faW1hZ2VIZWlnaHQgOiB0aGlzLm1faGVpZ2h0
OworICAgICAgICB2YXIgc2xpY2VQaXRjaCA9IGltYWdlSGVpZ2h0ICogcm93UGl0Y2g7CisgICAg
ICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgYnVmID0gbnVsbDsKKyAgICAgICAgdmFy
IGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoCisgICAgICAgICAgICBzbGljZVBpdGNoICogKHRoaXMu
bV9kZXB0aCArIHRoaXMubV9za2lwSW1hZ2VzKSArCisgICAgICAgICAgICByb3dQaXRjaCAqIHRo
aXMubV9za2lwUm93cyArIHBpeGVsU2l6ZSAqIHRoaXMubV9za2lwUGl4ZWxzICsgdGhpcy5tX29m
ZnNldAorICAgICAgICApOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAg
ICB0aGlzLm1fbnVtTGV2ZWxzID09IDEsICdOdW1iZXIgb2YgbGV2ZWxzIGlzIGRpZmZlcmVudCB0
aGFuIDEnLAorICAgICAgICAgICAgZmFsc2UsIHRydWUKKyAgICAgICAgKTsKKworICAgICAgICAv
LyBGaWxsIGRhdGEgd2l0aCBncmlkLgorICAgICAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRy
YWN0KHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52
YWx1ZU1pbik7CisgICAgICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVl
TWluOworICAgICAgICB2YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0
aC5tdWx0aXBseShbMS4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAgICAgICAg
KTsKKyAgICAgICAgdmFyIGNvbG9yQiA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgu
bXVsdGlwbHkoWzAuMCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNCaWFzCisgICAgICAgICk7
CisKKyAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNz
KHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICBoZWlnaHQ6IHRoaXMubV9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aDogdGhpcy5tX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6
IHJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VQaXRjaDogc2xpY2VQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICBvZmZzZXQ6IHRoaXMubV9za2lwSW1hZ2VzICogc2xpY2VQaXRjaCArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3NraXBSb3dzICogcm93UGl0Y2ggKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fb2Zmc2V0CisgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGFjY2Vzcywg
NCwgY29sb3JBLCBjb2xvckIpOworCisgICAgICAgIC8vIENyZWF0ZSBidWZmZXIgYW5kIHVwbG9h
ZC4KKyAgICAgICAgYnVmID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlQnVmZmVyKCk7CisgICAgICAg
IHRoaXMubV9jb250ZXh0LmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmKTsK
KyAgICAgICAgdGhpcy5tX2NvbnRleHQuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBBQ0tfQlVGRkVS
LCBkYXRhLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hFSUdIVCwgdGhpcy5tX2ltYWdlSGVpZ2h0KTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1JPV19MRU5HVEgsIHRoaXMu
bV9yb3dMZW5ndGgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfU0tJUF9JTUFHRVMsIHRoaXMubV9za2lwSW1hZ2VzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAg
ICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0
aGlzLm1fc2tpcFBpeGVscyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGds
LlVOUEFDS19BTElHTk1FTlQsIHRoaXMubV9hbGlnbm1lbnQpOworCisgICAgICAgIHRleCA9IHRo
aXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4
SW1hZ2UzRCgKKyAgICAgICAgICAgIGdsLlRFWFRVUkVfM0QsIDAsIHRoaXMubV9pbnRlcm5hbEZv
cm1hdCwgdGhpcy5tX3dpZHRoLAorICAgICAgICAgICAgdGhpcy5tX2hlaWdodCwgdGhpcy5tX2Rl
cHRoLCAwLCB0cmFuc2ZlckZtdC5mb3JtYXQsCisgICAgICAgICAgICB0cmFuc2ZlckZtdC5kYXRh
VHlwZSwgdGhpcy5tX29mZnNldAorICAgICAgICApOworICAgIH07CisKKyAgICAvLyBUZXhTdWJJ
bWFnZTJEKCkgUEJPIGNhc2UuCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNl
fQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHN1YlgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViWQorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBzdWJXCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YkgKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gcm93TGVuZ3RoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBSb3dz
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBQaXhlbHMKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gYWxpZ25tZW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqLworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleFN1YkltYWdlMkRCdWZmZXJDYXNlID0g
ZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBzdWJYLCBzdWJZLCBzdWJXLCBzdWJILAorICAgICAgICByb3dMZW5ndGgsIHNraXBSb3dz
LCBza2lwUGl4ZWxzLCBhbGlnbm1lbnQsIG9mZnNldAorICAgICkgeworICAgICAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5jYWxsKAorICAgICAgICAg
ICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCgK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAgKSwgd2lkdGgsIGhl
aWdodCwgMQorICAgICAgICApOworICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRl
cm5hbEZvcm1hdDsKKyAgICAgICAgdGhpcy5tX3N1YlggPSBzdWJYOworICAgICAgICB0aGlzLm1f
c3ViWSA9IHN1Ylk7CisgICAgICAgIHRoaXMubV9zdWJXID0gc3ViVzsKKyAgICAgICAgdGhpcy5t
X3N1YkggPSBzdWJIOworICAgICAgICB0aGlzLm1fcm93TGVuZ3RoID0gcm93TGVuZ3RoOworICAg
ICAgICB0aGlzLm1fc2tpcFJvd3MgPSBza2lwUm93czsKKyAgICAgICAgdGhpcy5tX3NraXBQaXhl
bHMgPSBza2lwUGl4ZWxzOworICAgICAgICB0aGlzLm1fYWxpZ25tZW50ID0gYWxpZ25tZW50Owor
ICAgICAgICB0aGlzLm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH07CisKKyAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJEQnVmZmVyQ2FzZS5wcm90b3R5cGUgPQor
ICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuVGV4dHVyZTJEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisKKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZTJEQnVmZmVyQ2Fz
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXhTdWJJbWFnZTJEQnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNyZWF0
ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAg
ICBUZXhTdWJJbWFnZTJEQnVmZmVyQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFu
c2ZlckZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQKKyAgICAgICAgKTsKKyAg
ICAgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxTaXplKCk7Cisg
ICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgYnVmID0gbnVsbDsKKyAgICAgICAg
dmFyIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoCisgICAgICAgICAgICBkZU1hdGguZGVBbGlnbjMy
KHRoaXMubV93aWR0aCAqIHBpeGVsU2l6ZSwgNCkgKiB0aGlzLm1faGVpZ2h0CisgICAgICAgICk7
CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubV9udW1MZXZl
bHMgPT0gMSwgJ051bWJlciBvZiBsZXZlbHMgaXMgZGlmZmVyZW50IHRoYW4gMScsCisgICAgICAg
ICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICApOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250
ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4KTsKKworICAgICAgICB2YXIgYWNjZXNzID0gbmV3IHRjdVRleHR1
cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0
aGlzLm1fdGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMubV93
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5tX2hlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJvd1BpdGNoOiBkZU1hdGguZGVBbGlnbjMyKHRoaXMubV93
aWR0aCAqIHBpeGVsU2l6ZSwgNCksCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRh
CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgLy8gRmlyc3QgZmlsbCB0ZXh0
dXJlIHdpdGggZ3JhZGllbnQuCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9u
ZW50R3JhZGllbnRzKGFjY2VzcywgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNaW4sIHRoaXMu
bV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1h
Z2UyRCgKKyAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIDAsIHRoaXMubV9pbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodCwgMCwgdHJhbnNmZXJG
bXQuZm9ybWF0LAorICAgICAgICAgICAgdHJhbnNmZXJGbXQuZGF0YVR5cGUsIGFjY2Vzcy5nZXRE
YXRhUHRyKCkKKyAgICAgICAgKTsKKworICAgICAgICAvLyBGaWxsIGRhdGEgd2l0aCBncmlkLgor
ICAgICAgICB2YXIgcm93TGVuZ3RoID0gdGhpcy5tX3Jvd0xlbmd0aCA+IDAgPyB0aGlzLm1fcm93
TGVuZ3RoIDogdGhpcy5tX3N1Ylc7CisgICAgICAgIHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFs
aWduMzIoCisgICAgICAgICAgICByb3dMZW5ndGggKiBwaXhlbFNpemUsIHRoaXMubV9hbGlnbm1l
bnQKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMubV9zdWJIICsgdGhpcy5t
X3NraXBSb3dzOworICAgICAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRyYWN0KHRoaXMubV90
ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbik7Cisg
ICAgICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluOworICAgICAg
ICB2YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseShb
MS4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAgICAgICAgKTsKKyAgICAgICAg
dmFyIGNvbG9yQiA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzAu
MCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNCaWFzCisgICAgICAgICk7CisKKyAgICAgICAg
YWNjZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0OiB0aGlzLm1fdGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGg6IHRoaXMubV9zdWJXLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
OiB0aGlzLm1fc3ViSCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1BpdGNoOiByb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBBcnJheUJ1ZmZlcihyb3dQaXRj
aCAqIGhlaWdodCArIHRoaXMubV9vZmZzZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0OiB0aGlzLm1fc2tpcFJvd3MgKiByb3dQaXRjaCArCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX29mZnNldAorICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChhY2Nlc3MsIDQsIGNvbG9y
QSwgY29sb3JCKTsKKworICAgICAgICBidWYgPSB0aGlzLm1fY29udGV4dC5jcmVhdGVCdWZmZXIo
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVG
RkVSLCBidWYpOworICAgICAgICB0aGlzLm1fY29udGV4dC5idWZmZXJEYXRhKGdsLlBJWEVMX1VO
UEFDS19CVUZGRVIsIGFjY2Vzcy5nZXRCdWZmZXIoKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAg
ICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19ST1dfTEVOR1RILCB0aGlz
Lm1fcm93TGVuZ3RoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQu
cGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVscyk7Cisg
ICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIHRo
aXMubV9hbGlnbm1lbnQpOworCisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQo
CisgICAgICAgICAgICBnbC5URVhUVVJFXzJELCAwLCB0aGlzLm1fc3ViWCwgdGhpcy5tX3N1Ylks
CisgICAgICAgICAgICB0aGlzLm1fc3ViVywgdGhpcy5tX3N1YkgsIHRyYW5zZmVyRm10LmZvcm1h
dCwKKyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCB0aGlzLm1fb2Zmc2V0CisgICAg
ICAgICk7CisgICAgfTsKKworICAgIC8vIFRleFN1YkltYWdlMkQoKSBjdWJlbWFwIFBCTyBjYXNl
LgorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlfQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJYCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YlkK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViVworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJI
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd0xlbmd0aAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBza2lwUm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwUGl4ZWxzCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAg
ICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZUN1YmVC
dWZmZXJDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0
LCBzaXplLCBzdWJYLCBzdWJZLCBzdWJXLCBzdWJILCByb3dMZW5ndGgsCisgICAgICAgIHNraXBS
b3dzLCBza2lwUGl4ZWxzLCBhbGlnbm1lbnQsIG9mZnNldAorICAgICkgeworICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlQ3ViZVNwZWNDYXNlLmNhbGwoCisgICAg
ICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0dXJlVXRpbC5tYXBHTEludGVybmFsRm9y
bWF0KAorICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0CisgICAgICAgICAgICApLCBzaXpl
LCAxCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJu
YWxGb3JtYXQ7CisgICAgICAgIHRoaXMubV9zdWJYID0gc3ViWDsKKyAgICAgICAgdGhpcy5tX3N1
YlkgPSBzdWJZOworICAgICAgICB0aGlzLm1fc3ViVyA9IHN1Ylc7CisgICAgICAgIHRoaXMubV9z
dWJIID0gc3ViSDsKKyAgICAgICAgdGhpcy5tX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAg
ICAgdGhpcy5tX3NraXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAgIHRoaXMubV9za2lwUGl4ZWxz
ID0gc2tpcFBpeGVsczsKKyAgICAgICAgdGhpcy5tX2FsaWdubWVudCA9IGFsaWdubWVudDsKKyAg
ICAgICAgdGhpcy5tX29mZnNldCA9IG9mZnNldDsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlQnVmZmVyQ2FzZS5wcm90b3R5cGUgPQor
ICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuVGV4dHVyZUN1YmVTcGVjQ2FzZS5wcm90b3R5cGUKKyAgICAgICAgKTsKKworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRleFN1YkltYWdlQ3ViZUJ1ZmZl
ckNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlQnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAq
IGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy4KKyAgICBUZXhTdWJJbWFnZUN1YmVCdWZmZXJDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRl
U3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1lKCkpKTsKKyAgICAgICAgdmFyIHRyYW5z
ZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoCisgICAgICAgICAgICB0
aGlzLm1fdGV4Rm9ybWF0CisgICAgICAgICk7CisgICAgICAgIHZhciBwaXhlbFNpemUgPSB0aGlz
Lm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2YXIgdGV4ID0gbnVsbDsKKyAg
ICAgICAgdmFyIGJ1ZiA9IG51bGw7CisgICAgICAgIHZhciBkYXRhID0gbmV3IEFycmF5QnVmZmVy
KAorICAgICAgICAgICAgZGVNYXRoLmRlQWxpZ24zMih0aGlzLm1fc2l6ZSAqIHBpeGVsU2l6ZSwg
NCkgKiB0aGlzLm1fc2l6ZQorICAgICAgICApOworICAgICAgICB2YXIgYWNjZXNzID0gbmV3IHRj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aDogdGhpcy5tX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0
aGlzLm1fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogZGVNYXRo
LmRlQWxpZ24zMih0aGlzLm1fc2l6ZSAqIHBpeGVsU2l6ZSwgNCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICB0aGlzLm1fbnVtTGV2ZWxzID09IDEs
ICdOdW1iZXIgb2YgbGV2ZWxzIGlzIGRpZmZlcmVudCB0aGFuIDEnLAorICAgICAgICAgICAgZmFs
c2UsIHRydWUKKyAgICAgICAgKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfQ1VCRV9NQVAsIHRleCk7CisKKyAgICAgICAgLy8gRmlsbCBmYWNlcyB3aXRoIGRpZmZlcmVu
dCBncmFkaWVudHMuCisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICAgICAgZm9yICh2YXIgZiBpbiB0Y3VUZXh0dXJlLkN1
YmVGYWNlKSB7CisgICAgICAgICAgICB2YXIgZmFjZSA9IHRjdVRleHR1cmUuQ3ViZUZhY2VbZl07
CisgICAgICAgICAgICB2YXIgZ01pbiA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJh
bmRvbVZlY3RvcigKKyAgICAgICAgICAgICAgICBybmQsIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZh
bHVlTWluLAorICAgICAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4LCA0
CisgICAgICAgICAgICApOworICAgICAgICAgICAgdmFyIGdNYXggPSBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5yYW5kb21WZWN0b3IoCisgICAgICAgICAgICAgICAgcm5kLCB0aGlzLm1f
dGV4Rm9ybWF0SW5mby52YWx1ZU1pbiwKKyAgICAgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0
SW5mby52YWx1ZU1heCwgNAorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgdGN1VGV4dHVy
ZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoYWNjZXNzLCBnTWluLCBnTWF4KTsKKwor
ICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5zX2N1YmVNYXBGYWNlc1tmYWNlXSwgMCwKKyAg
ICAgICAgICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIHRoaXMubV9zaXplLCB0aGlzLm1f
c2l6ZSwgMCwKKyAgICAgICAgICAgICAgICB0cmFuc2ZlckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10
LmRhdGFUeXBlLAorICAgICAgICAgICAgICAgIGFjY2Vzcy5nZXREYXRhUHRyKCkKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaWxsIGRhdGEgd2l0aCBncmlkLgorICAg
ICAgICB2YXIgcm93TGVuZ3RoID0gdGhpcy5tX3Jvd0xlbmd0aCA+IDAgPyB0aGlzLm1fcm93TGVu
Z3RoIDogdGhpcy5tX3N1Ylc7CisgICAgICAgIHZhciByb3dQaXRjaCA9IGRlTWF0aC5kZUFsaWdu
MzIoCisgICAgICAgICAgICByb3dMZW5ndGggKiBwaXhlbFNpemUsIHRoaXMubV9hbGlnbm1lbnQK
KyAgICAgICAgKTsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMubV9zdWJIICsgdGhpcy5tX3Nr
aXBSb3dzOworICAgICAgICB2YXIgY1NjYWxlID0gZGVNYXRoLnN1YnRyYWN0KHRoaXMubV90ZXhG
b3JtYXRJbmZvLnZhbHVlTWF4LCB0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1pbik7CisgICAg
ICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWluOworICAgICAgICB2
YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAgIGRlTWF0aC5tdWx0aXBseShbMS4w
LCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAgICAgICAgKTsKKyAgICAgICAgdmFy
IGNvbG9yQiA9IGRlTWF0aC5hZGQoCisgICAgICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzAuMCwg
MS4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNCaWFzCisgICAgICAgICk7CisKKyAgICAgICAgZGF0
YSA9IG5ldyBBcnJheUJ1ZmZlcihyb3dQaXRjaCAqIGhlaWdodCArIHRoaXMubV9za2lwUGl4ZWxz
ICogcGl4ZWxTaXplICsgdGhpcy5tX29mZnNldCk7CisgICAgICAgIHZhciBhY2Nlc3NTdWIgPSBu
ZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aDogdGhpcy5tX3N1YlcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMubV9z
dWJILAorICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldDogdGhpcy5tX3NraXBSb3dzICogcm93UGl0Y2ggKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMubV9za2lwUGl4ZWxzICogcGl4ZWxTaXplICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1fb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhHcmlkKGFjY2Vzc1N1YiwgNCwgY29sb3JBLCBj
b2xvckIpOworCisgICAgICAgIGJ1ZiA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOwor
ICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIs
IGJ1Zik7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJ1ZmZlckRhdGEoCisgICAgICAgICAgICBn
bC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBkYXRhLCBnbC5TVEFUSUNfRFJBVworICAgICAgICApOwor
CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19ST1dfTEVOR1RI
LCB0aGlzLm1fcm93TGVuZ3RoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWko
Z2wuVU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVs
cyk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1F
TlQsIHRoaXMubV9hbGlnbm1lbnQpOworCisgICAgICAgIGZvciAodmFyIGYgaW4gdGN1VGV4dHVy
ZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgdmFyIGZhY2UgPSB0Y3VUZXh0dXJlLkN1YmVGYWNl
W2ZdOworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3ViSW1hZ2UyRCgKKyAgICAgICAg
ICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5zX2N1YmVNYXBGYWNlc1tmYWNl
XSwgMCwKKyAgICAgICAgICAgICAgICB0aGlzLm1fc3ViWCwgdGhpcy5tX3N1YlksIHRoaXMubV9z
dWJXLCB0aGlzLm1fc3ViSCwKKyAgICAgICAgICAgICAgICB0cmFuc2ZlckZtdC5mb3JtYXQsIHRy
YW5zZmVyRm10LmRhdGFUeXBlLCB0aGlzLm1fb2Zmc2V0CisgICAgICAgICAgICApOworICAgICAg
ICB9CisgICAgfTsKKworICAgIC8vIFRleFN1YkltYWdlM0QoKSAyRCBhcnJheSBQQk8gY2FzZS4K
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2FzZX0KKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRo
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBk
ZXB0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJYCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHN1YlkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViWgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzdWJXCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YkgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc3ViRAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbWFnZUhlaWdodAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSByb3dMZW5ndGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcEltYWdlcwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwUm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
a2lwUGl4ZWxzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGFsaWdubWVudAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXhTdWJJbWFnZTJEQXJyYXlCdWZmZXJDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5h
bWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgc3ViWCwgc3Vi
WSwgc3ViWiwKKyAgICAgICAgc3ViVywgc3ViSCwgc3ViRCwgaW1hZ2VIZWlnaHQsIHJvd0xlbmd0
aCwgc2tpcEltYWdlcywgc2tpcFJvd3MsCisgICAgICAgIHNraXBQaXhlbHMsIGFsaWdubWVudCwg
b2Zmc2V0CisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRl
eHR1cmUyREFycmF5U3BlY0Nhc2UuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsIG5hbWUsIGRlc2Ms
IGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQoCisgICAgICAgICAgICAgICAgaW50
ZXJuYWxGb3JtYXQKKyAgICAgICAgICAgICksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAxCisgICAg
ICAgICk7CisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0Owor
ICAgICAgICB0aGlzLm1fc3ViWCA9IHN1Ylg7CisgICAgICAgIHRoaXMubV9zdWJZID0gc3ViWTsK
KyAgICAgICAgdGhpcy5tX3N1YlogPSBzdWJaOworICAgICAgICB0aGlzLm1fc3ViVyA9IHN1Ylc7
CisgICAgICAgIHRoaXMubV9zdWJIID0gc3ViSDsKKyAgICAgICAgdGhpcy5tX3N1YkQgPSBzdWJE
OworICAgICAgICB0aGlzLm1faW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdodDsKKyAgICAgICAgdGhp
cy5tX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgdGhpcy5tX3NraXBJbWFnZXMgPSBz
a2lwSW1hZ2VzOworICAgICAgICB0aGlzLm1fc2tpcFJvd3MgPSBza2lwUm93czsKKyAgICAgICAg
dGhpcy5tX3NraXBQaXhlbHMgPSBza2lwUGl4ZWxzOworICAgICAgICB0aGlzLm1fYWxpZ25tZW50
ID0gYWxpZ25tZW50OworICAgICAgICB0aGlzLm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH07CisK
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJEQXJyYXlCdWZm
ZXJDYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRBcnJheVNwZWNDYXNlLnByb3Rv
dHlwZQorICAgICAgICApOworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisg
ICAgVGV4U3ViSW1hZ2UyREFycmF5QnVmZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQor
ICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJEQXJyYXlC
dWZmZXJDYXNlOworCisgICAgLyoqCisgICAgICogY3JlYXRlVGV4dHVyZQorICAgICAqLworICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRleFN1YkltYWdlMkRBcnJheUJ1
ZmZlckNhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoCisgICAg
ICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0CisgICAgICAgICk7CisgICAgICAgIHZhciBwaXhlbFNp
emUgPSB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2YXIgdGV4ID0g
bnVsbDsKKyAgICAgICAgdmFyIGJ1ZiA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXlC
dWZmZXJ9ICovIHZhciBkYXRhOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAg
ICAgICB0aGlzLm1fbnVtTGV2ZWxzID09IDEsICdOdW1iZXIgb2YgbGV2ZWxzIGlzIGRpZmZlcmVu
dCB0aGFuIDEnLAorICAgICAgICAgICAgZmFsc2UsIHRydWUKKyAgICAgICAgKTsKKworICAgICAg
ICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9j
b250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleCk7CisKKyAgICAgICAg
Ly8gRmlsbCB3aXRoIGdyYWRpZW50LgorICAgICAgICB2YXIgcm93UGl0Y2ggPSBkZU1hdGguZGVB
bGlnbjMyKHBpeGVsU2l6ZSAqIHRoaXMubV93aWR0aCwgNCk7CisgICAgICAgIHZhciBzbGljZVBp
dGNoID0gcm93UGl0Y2ggKiB0aGlzLm1faGVpZ2h0OworCisgICAgICAgIGRhdGEgPSBuZXcgQXJy
YXlCdWZmZXIoc2xpY2VQaXRjaCAqIHRoaXMubV9udW1MYXllcnMpOworICAgICAgICB2YXIgYWNj
ZXNzID0gbmV3IHRjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3MoeworICAgICAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0OiB0aGlzLm1fdGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGg6IHRoaXMubV93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDog
dGhpcy5tX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoOiB0aGlzLm1fbnVt
TGF5ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2xpY2VQaXRjaDogc2xpY2VQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE6IGRhdGEKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKGFjY2VzcywgdGhpcy5t
X3RleEZvcm1hdEluZm8udmFsdWVNaW4sIHRoaXMubV90ZXhGb3JtYXRJbmZvLnZhbHVlTWF4Cisg
ICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1hZ2UzRChnbC5URVhUVVJF
XzJEX0FSUkFZLCAwLCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIHRoaXMubV93aWR0aCwgdGhpcy5t
X2hlaWdodCwKKyAgICAgICAgICAgIHRoaXMubV9udW1MYXllcnMsIDAsIHRyYW5zZmVyRm10LmZv
cm1hdCwgdHJhbnNmZXJGbXQuZGF0YVR5cGUsIGFjY2Vzcy5nZXREYXRhUHRyKCkpOworCisgICAg
ICAgIC8vIEZpbGwgZGF0YSB3aXRoIGdyaWQuCisgICAgICAgIHZhciByb3dMZW5ndGggPSB0aGlz
Lm1fcm93TGVuZ3RoID4gMCA/IHRoaXMubV9yb3dMZW5ndGggOiB0aGlzLm1fc3ViVzsKKyAgICAg
ICAgcm93UGl0Y2ggPSBkZU1hdGguZGVBbGlnbjMyKAorICAgICAgICAgICAgcm93TGVuZ3RoICog
cGl4ZWxTaXplLCB0aGlzLm1fYWxpZ25tZW50CisgICAgICAgICk7CisgICAgICAgIHZhciBoZWln
aHQgPSB0aGlzLm1fc3ViSCArIHRoaXMubV9za2lwUm93czsKKyAgICAgICAgdmFyIGNTY2FsZSA9
IGRlTWF0aC5zdWJ0cmFjdCh0aGlzLm1fdGV4Rm9ybWF0SW5mby52YWx1ZU1heCwgdGhpcy5tX3Rl
eEZvcm1hdEluZm8udmFsdWVNaW4pOworCisgICAgICAgIHZhciBjQmlhcyA9IHRoaXMubV90ZXhG
b3JtYXRJbmZvLnZhbHVlTWluOworICAgICAgICB2YXIgY29sb3JBID0gZGVNYXRoLmFkZCgKKyAg
ICAgICAgICAgIGRlTWF0aC5tdWx0aXBseShbMS4wLCAwLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwg
Y0JpYXMKKyAgICAgICAgKTsKKyAgICAgICAgdmFyIGNvbG9yQiA9IGRlTWF0aC5hZGQoCisgICAg
ICAgICAgICBkZU1hdGgubXVsdGlwbHkoWzAuMCwgMS4wLCAwLjAsIDEuMF0sIGNTY2FsZSksIGNC
aWFzCisgICAgICAgICk7CisKKyAgICAgICAgdmFyIGFjY2Vzc1N1YiA9IG5ldyB0Y3VUZXh0dXJl
LlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhp
cy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fc3Vi
VywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5tX3N1YkgsCisgICAgICAg
ICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhOiBuZXcgQXJyYXlCdWZmZXIocm93UGl0Y2ggKiBoZWlnaHQgKyB0aGlzLm1fb2Zm
c2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5tX3NraXBSb3dzICog
cm93UGl0Y2ggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fc2tpcFBp
eGVscyAqIHBpeGVsU2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV9vZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHRjdVRleHR1cmVVdGls
LmZpbGxXaXRoR3JpZChhY2Nlc3NTdWIsIDQsIGNvbG9yQSwgY29sb3JCKTsKKworICAgICAgICBi
dWYgPSB0aGlzLm1fY29udGV4dC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYpOworICAgICAgICB0aGlz
Lm1fY29udGV4dC5idWZmZXJEYXRhKAorICAgICAgICAgICAgZ2wuUElYRUxfVU5QQUNLX0JVRkZF
UiwgYWNjZXNzU3ViLmdldEJ1ZmZlcigpLCBnbC5TVEFUSUNfRFJBVworICAgICAgICApOworCisg
ICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19ST1dfTEVOR1RILCB0
aGlzLm1fcm93TGVuZ3RoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wu
VU5QQUNLX1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRl
eHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVscyk7
CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQs
IHRoaXMubV9hbGlnbm1lbnQpOworICAgIH07CisKKyAgICAvLyBUZXhTdWJJbWFnZTNEKCkgUEJP
IGNhc2UuCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2Vz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUzRFNwZWNDYXNlfQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGRlcHRoCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN1YlgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc3ViWQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJaCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN1YlcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3ViSAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzdWJECisgICAgICogQHBhcmFtIHtudW1iZXJ9IGltYWdlSGVpZ2h0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHJvd0xlbmd0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwSW1hZ2Vz
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBSb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNraXBQaXhlbHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYWxpZ25tZW50CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLlRleFN1YkltYWdlM0RCdWZmZXJDYXNlID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUs
IGRlc2MsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgc3ViWCwgc3ViWSwg
c3ViWiwKKyAgICAgICAgc3ViVywgc3ViSCwgc3ViRCwgaW1hZ2VIZWlnaHQsIHJvd0xlbmd0aCwg
c2tpcEltYWdlcywgc2tpcFJvd3MsCisgICAgICAgIHNraXBQaXhlbHMsIGFsaWdubWVudCwgb2Zm
c2V0CisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleHR1
cmUzRFNwZWNDYXNlLmNhbGwoCisgICAgICAgICAgICB0aGlzLCBuYW1lLCBkZXNjLCBnbHVUZXh0
dXJlVXRpbC5tYXBHTEludGVybmFsRm9ybWF0KAorICAgICAgICAgICAgICAgIGludGVybmFsRm9y
bWF0CisgICAgICAgICAgICApLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMQorICAgICAgICApOwor
CisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAg
ICB0aGlzLm1fc3ViWCA9IHN1Ylg7CisgICAgICAgIHRoaXMubV9zdWJZID0gc3ViWTsKKyAgICAg
ICAgdGhpcy5tX3N1YlogPSBzdWJaOworICAgICAgICB0aGlzLm1fc3ViVyA9IHN1Ylc7CisgICAg
ICAgIHRoaXMubV9zdWJIID0gc3ViSDsKKyAgICAgICAgdGhpcy5tX3N1YkQgPSBzdWJEOworICAg
ICAgICB0aGlzLm1faW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdodDsKKyAgICAgICAgdGhpcy5tX3Jv
d0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICAgICAgdGhpcy5tX3NraXBJbWFnZXMgPSBza2lwSW1h
Z2VzOworICAgICAgICB0aGlzLm1fc2tpcFJvd3MgPSBza2lwUm93czsKKyAgICAgICAgdGhpcy5t
X3NraXBQaXhlbHMgPSBza2lwUGl4ZWxzOworICAgICAgICB0aGlzLm1fYWxpZ25tZW50ID0gYWxp
Z25tZW50OworICAgICAgICB0aGlzLm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH07CisKKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTNEQnVmZmVyQ2FzZS5wcm90
b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTNEU3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7
CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZTNE
QnVmZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTNEQnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAg
ICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy4KKyAgICBUZXhTdWJJbWFnZTNEQnVmZmVyQ2FzZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVy
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgdHJhbnNmZXJGbXQgPSBnbHVUZXh0dXJlVXRp
bC5nZXRUcmFuc2ZlckZvcm1hdCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQKKyAgICAg
ICAgKTsKKyAgICAgICAgdmFyIHBpeGVsU2l6ZSA9IHRoaXMubV90ZXhGb3JtYXQuZ2V0UGl4ZWxT
aXplKCk7CisgICAgICAgIHZhciB0ZXggPSBudWxsOworICAgICAgICB2YXIgYnVmID0gbnVsbDsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGE7CisKKyAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMgPT0gMSwgJ051
bWJlciBvZiBsZXZlbHMgaXMgZGlmZmVyZW50IHRoYW4gMScsCisgICAgICAgICAgICBmYWxzZSwg
dHJ1ZQorICAgICAgICApOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8z
RCwgdGV4KTsKKworICAgICAgICAvLyBGaWxsIHdpdGggZ3JhZGllbnQuCisgICAgICAgIHZhciBy
b3dQaXRjaCA9IGRlTWF0aC5kZUFsaWduMzIocGl4ZWxTaXplICogdGhpcy5tX3dpZHRoLCA0KTsK
KyAgICAgICAgdmFyIHNsaWNlUGl0Y2ggPSByb3dQaXRjaCAqIHRoaXMubV9oZWlnaHQ7CisKKyAg
ICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihzbGljZVBpdGNoICogdGhpcy5tX2RlcHRoKTsK
KyAgICAgICAgdmFyIGFjY2VzcyA9IG5ldyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzKHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQ6IHRoaXMubV9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXB0aDogdGhpcy5tX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2g6IHJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VQaXRjaDogc2xpY2VQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGF9KTsKKyAgICAgICAgdGN1VGV4dHVy
ZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoYWNjZXNzLCB0aGlzLm1fdGV4Rm9ybWF0
SW5mby52YWx1ZU1pbiwgdGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgKKyAgICAgICAgKTsK
KworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJbWFnZTNEKAorICAgICAgICAgICAgZ2wuVEVY
VFVSRV8zRCwgMCwgdGhpcy5tX2ludGVybmFsRm9ybWF0LCB0aGlzLm1fd2lkdGgsCisgICAgICAg
ICAgICB0aGlzLm1faGVpZ2h0LCB0aGlzLm1fZGVwdGgsIDAsIHRyYW5zZmVyRm10LmZvcm1hdCwK
KyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCBhY2Nlc3MuZ2V0RGF0YVB0cigpCisg
ICAgICAgICk7CisKKyAgICAgICAgLy8gRmlsbCBkYXRhIHdpdGggZ3JpZC4KKyAgICAgICAgdmFy
IHJvd0xlbmd0aCA9IHRoaXMubV9yb3dMZW5ndGggPiAwID8gdGhpcy5tX3Jvd0xlbmd0aCA6IHRo
aXMubV9zdWJXOworICAgICAgICByb3dQaXRjaCA9IGRlTWF0aC5kZUFsaWduMzIoCisgICAgICAg
ICAgICByb3dMZW5ndGggKiBwaXhlbFNpemUsIHRoaXMubV9hbGlnbm1lbnQKKyAgICAgICAgKTsK
KyAgICAgICAgdmFyIGltYWdlSGVpZ2h0ID0gdGhpcy5tX2ltYWdlSGVpZ2h0ID4gMCA/CisgICAg
ICAgICAgICB0aGlzLm1faW1hZ2VIZWlnaHQgOiB0aGlzLm1fc3ViSDsKKyAgICAgICAgc2xpY2VQ
aXRjaCA9IGltYWdlSGVpZ2h0ICogcm93UGl0Y2g7CisgICAgICAgIHZhciBjU2NhbGUgPSBkZU1h
dGguc3VidHJhY3QodGhpcy5tX3RleEZvcm1hdEluZm8udmFsdWVNYXgsIHRoaXMubV90ZXhGb3Jt
YXRJbmZvLnZhbHVlTWluKTsKKyAgICAgICAgdmFyIGNCaWFzID0gdGhpcy5tX3RleEZvcm1hdElu
Zm8udmFsdWVNaW47CisgICAgICAgIHZhciBjb2xvckEgPSBkZU1hdGguYWRkKAorICAgICAgICAg
ICAgZGVNYXRoLm11bHRpcGx5KFsxLjAsIDAuMCwgMC4wLCAxLjBdLCBjU2NhbGUpLCBjQmlhcwor
ICAgICAgICApOworICAgICAgICB2YXIgY29sb3JCID0gZGVNYXRoLmFkZCgKKyAgICAgICAgICAg
IGRlTWF0aC5tdWx0aXBseShbMC4wLCAxLjAsIDAuMCwgMS4wXSwgY1NjYWxlKSwgY0JpYXMKKyAg
ICAgICAgKTsKKworICAgICAgICBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHNsaWNlUGl0Y2ggKiAo
dGhpcy5tX3N1YkQgKyB0aGlzLm1fc2tpcEltYWdlcykgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJvd1BpdGNoICogdGhpcy5tX3NraXBSb3dzICsgcGl4ZWxTaXplICogdGhpcy5t
X3NraXBQaXhlbHMgKyB0aGlzLm1fb2Zmc2V0KTsKKyAgICAgICAgdmFyIGFjY2Vzc1N1YiA9IG5l
dyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
OiB0aGlzLm1fc3ViVywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5tX3N1
YkgsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogdGhpcy5tX3N1YkQsCisgICAgICAg
ICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzbGljZVBpdGNoOiBzbGljZVBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YTogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5tX3NraXBJbWFn
ZXMgKiBzbGljZVBpdGNoICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X3NraXBSb3dzICogcm93UGl0Y2ggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLm1fc2tpcFBpeGVscyAqIHBpeGVsU2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMubV9vZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHRj
dVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZChhY2Nlc3NTdWIsIDQsIGNvbG9yQSwgY29sb3JCCisg
ICAgICAgICk7CisKKyAgICAgICAgYnVmID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlQnVmZmVyKCk7
CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZF
UiwgYnVmKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYnVmZmVyRGF0YSgKKyAgICAgICAgICAg
IGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEsIGdsLlNUQVRJQ19EUkFXCisgICAgICAgICk7
CisKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hF
SUdIVCwgdGhpcy5tX2ltYWdlSGVpZ2h0KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX1JPV19MRU5HVEgsIHRoaXMubV9yb3dMZW5ndGgpOworICAgICAgICB0
aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMsIHRoaXMubV9z
a2lwSW1hZ2VzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X1NLSVBfUk9XUywgdGhpcy5tX3NraXBSb3dzKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCB0aGlzLm1fc2tpcFBpeGVscyk7CisgICAg
ICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIHRoaXMu
bV9hbGlnbm1lbnQpOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhTdWJJbWFnZTNEKAorICAg
ICAgICAgICAgZ2wuVEVYVFVSRV8zRCwgMCwgdGhpcy5tX3N1YlgsIHRoaXMubV9zdWJZLCB0aGlz
Lm1fc3ViWiwKKyAgICAgICAgICAgIHRoaXMubV9zdWJXLCB0aGlzLm1fc3ViSCwgdGhpcy5tX3N1
YkQsIHRyYW5zZmVyRm10LmZvcm1hdCwKKyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBl
LCB0aGlzLm1fb2Zmc2V0CisgICAgICAgICk7CisgICAgfTsKKworICAgIC8vIFRleEltYWdlMkQo
KSBkZXB0aCBjYXNlLgorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGltYWdlV2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VIZWlnaHQKKyAgICAg
Ki8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJERGVwdGhDYXNl
ID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodAorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwg
ZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAgKSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQs
CisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5tYXhMZXZlbENvdW50
KAorICAgICAgICAgICAgICAgIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0CisgICAgICAgICAgICAp
CisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgICAgIC8vIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBiZWhhdmlvciBuZWFy
IFstMiwgMl0sIG1hcCBpdCB0byB2aXNpYmxlIHJhbmdlIFswLCAxXQorICAgICAgICB0aGlzLm1f
dGV4Rm9ybWF0SW5mby5sb29rdXBCaWFzID0gWzAuMjUsIDAuMCwgMC4wLCAxLjBdOworICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby5sb29rdXBTY2FsZSA9IFswLjUsIDEuMCwgMS4wLCAwLjBd
OworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJE
RGVwdGhDYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAgICAg
ICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90b3R5
cGUKKyAgICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAg
IFRleEltYWdlMkREZXB0aENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyRERlcHRoQ2FzZTsKKworICAgIC8q
KgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5UZXhJbWFnZTJERGVwdGhDYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJlID0K
KyAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZtdCA9IGdsdVRleHR1cmVVdGlsLmdldFRy
YW5zZmVyRm9ybWF0KHRoaXMubV90ZXhGb3JtYXQpOworICAgICAgICB2YXIgdGV4ID0gbnVsbDsK
KyAgICAgICAgdmFyIGxldmVsRGF0YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbCgKKyAg
ICAgICAgICAgIHRoaXMubV90ZXhGb3JtYXQsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodAor
ICAgICAgICApOworCisgICAgICAgIHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
KTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVO
VCwgMSk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVs
czsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1f
d2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlz
Lm1faGVpZ2h0ID4+IG5keCk7CisgICAgICAgICAgICB2YXIgZ01pbiA9IFstMS41LCAtMi4wLCAx
LjcsIC0xLjVdOworICAgICAgICAgICAgdmFyIGdNYXggPSBbMi4wLCAxLjUsIC0xLjAsIDIuMF07
CisKKyAgICAgICAgICAgIGxldmVsRGF0YS5zZXRTaXplKGxldmVsVywgbGV2ZWxIKTsKKyAgICAg
ICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKAorICAgICAg
ICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKSwgZ01pbiwgZ01heAorICAgICAgICAgICAg
KTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4SW1hZ2UyRCgKKyAgICAgICAgICAg
ICAgICBnbC5URVhUVVJFXzJELCBuZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2ZWxXLCBs
ZXZlbEgsIDAsCisgICAgICAgICAgICAgICAgZm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLCBsZXZl
bERhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICApOworICAgICAgICB9
CisgICAgfTsKKworICAgIC8vIFRleEltYWdlM0QoKSBkZXB0aCBjYXNlLgorICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlMkRBcnJheVNwZWNDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
aW50ZXJuYWxGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VXaWR0aAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBpbWFnZUhlaWdodAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1M
YXllcnMKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFn
ZTJEQXJyYXlEZXB0aENhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFtZSwgZGVzYywgaW50ZXJu
YWxGb3JtYXQsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBudW1MYXllcnMKKyAgICApIHsKKyAg
ICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2Fz
ZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFw
R0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAgICAg
ICAgICAgKSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIG51bUxheWVycywKKyAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm1heExldmVsQ291bnQoCisgICAgICAgICAg
ICAgICAgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsK
KworICAgICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAg
ICAgLy8gd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGJlaGF2aW9yIG5lYXIgWy0yLCAyXSwgbWFw
IGl0IHRvIHZpc2libGUgcmFuZ2UgWzAsIDFdCisgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZv
Lmxvb2t1cEJpYXMgPSBbMC4yNSwgMC4wLCAwLjAsIDEuMF07CisgICAgICAgIHRoaXMubV90ZXhG
b3JtYXRJbmZvLmxvb2t1cFNjYWxlID0gWzAuNSwgMS4wLCAxLjAsIDAuMF07CisgICAgfTsKKwor
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkRBcnJheURlcHRoQ2Fz
ZS5wcm90b3R5cGUgPQorICAgICAgICBPYmplY3QuY3JlYXRlKAorICAgICAgICAgICAgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJyYXlTcGVjQ2FzZS5wcm90b3R5cGUK
KyAgICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgorICAgIFRl
eEltYWdlMkRBcnJheURlcHRoQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJEQXJyYXlEZXB0aENhc2U7CisK
KyAgICAvKioKKyAgICAgKiBjcmVhdGVUZXh0dXJlCisgICAgICovCisgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4SW1hZ2UyREFycmF5RGVwdGhDYXNlLnByb3RvdHlw
ZS5jcmVhdGVUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fdGV4Rm9ybWF0KTsKKyAgICAgICAgdmFy
IHRleCA9IG51bGw7CisgICAgICAgIHZhciBsZXZlbERhdGEgPSBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlTGV2ZWwoCisgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0LCB0aGlzLm1fd2lkdGgsIHRo
aXMubV9oZWlnaHQKKyAgICAgICAgKTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkRfQVJSQVksIHRleCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0g
TWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxI
ID0gTWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGdN
aW4gPSBbLTEuNSwgLTIuMCwgMS43LCAtMS41XTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gWzIu
MCwgMS41LCAtMS4wLCAyLjBdOworCisgICAgICAgICAgICBsZXZlbERhdGEuc2V0U2l6ZShsZXZl
bFcsIGxldmVsSCwgdGhpcy5tX251bUxheWVycyk7CisgICAgICAgICAgICB0Y3VUZXh0dXJlVXRp
bC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cygKKyAgICAgICAgICAgICAgICBsZXZlbERhdGEu
Z2V0QWNjZXNzKCksIGdNaW4sIGdNYXgKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHRo
aXMubV9jb250ZXh0LnRleEltYWdlM0QoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRF9B
UlJBWSwgbmR4LCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIGxldmVsVywgbGV2ZWxILAorICAgICAg
ICAgICAgICAgIHRoaXMubV9udW1MYXllcnMsIDAsIGZtdC5mb3JtYXQsIGZtdC5kYXRhVHlwZSwK
KyAgICAgICAgICAgICAgICBsZXZlbERhdGEuZ2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAg
ICAgICAgICApOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIFRleFN1YkltYWdlMkQoKSBk
ZXB0aCBjYXNlLgorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRz
IHtlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGltYWdlV2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VIZWlnaHQKKyAgICAgKi8K
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJERGVwdGhDYXNl
ID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodAorICAgICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwg
ZGVzYywgZ2x1VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdAorICAgICAgICAgICAgKSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQs
CisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5tYXhMZXZlbENvdW50
KAorICAgICAgICAgICAgICAgIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0CisgICAgICAgICAgICAp
CisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5tX2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgICAgIC8vIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBiZWhhdmlvciBuZWFy
IFstMiwgMl0sIG1hcCBpdCB0byB2aXNpYmxlIHJhbmdlIFswLCAxXQorICAgICAgICB0aGlzLm1f
dGV4Rm9ybWF0SW5mby5sb29rdXBCaWFzID0gWzAuMjUsIDAuMCwgMC4wLCAxLjBdOworICAgICAg
ICB0aGlzLm1fdGV4Rm9ybWF0SW5mby5sb29rdXBTY2FsZSA9IFswLjUsIDEuMCwgMS4wLCAwLjBd
OworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFn
ZTJERGVwdGhDYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUoCisgICAgICAg
ICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZS5wcm90
b3R5cGUKKyAgICAgICAgKTsKKworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLgor
ICAgIFRleFN1YkltYWdlMkREZXB0aENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyRERlcHRoQ2FzZTsK
KworICAgIC8qKgorICAgICAqIGNyZWF0ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZTJERGVwdGhDYXNlLnByb3RvdHlw
ZS5jcmVhdGVUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmbXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdCh0aGlzLm1fdGV4Rm9ybWF0KTsKKyAgICAgICAgdmFy
IHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMuZnVs
bE5hbWUoKSkpOworICAgICAgICB2YXIgdGV4ID0gbnVsbDsKKyAgICAgICAgdmFyIGxldmVsRGF0
YSA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVMZXZlbCgKKyAgICAgICAgICAgIHRoaXMubV90ZXhG
b3JtYXQsIHRoaXMubV93aWR0aCwgdGhpcy5tX2hlaWdodAorICAgICAgICApOworCisgICAgICAg
IHRleCA9IHRoaXMubV9jb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgdGhpcy5tX2Nv
bnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICAgICAgLy8g
Rmlyc3Qgc3BlY2lmeSBmdWxsIHRleHR1cmUuCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHRoaXMubV9udW1MZXZlbHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0g
TWF0aC5tYXgoMSwgdGhpcy5tX3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxI
ID0gTWF0aC5tYXgoMSwgdGhpcy5tX2hlaWdodCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGdN
aW4gPSBbLTEuNSwgLTIuMCwgMS43LCAtMS41XTsKKyAgICAgICAgICAgIHZhciBnTWF4ID0gWzIu
MCwgMS41LCAtMS4wLCAyLjBdOworCisgICAgICAgICAgICBsZXZlbERhdGEuc2V0U2l6ZShsZXZl
bFcsIGxldmVsSCk7CisgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVu
dEdyYWRpZW50cygKKyAgICAgICAgICAgICAgICBsZXZlbERhdGEuZ2V0QWNjZXNzKCksIGdNaW4s
IGdNYXgKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleElt
YWdlMkQoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgbmR4LCB0aGlzLm1faW50ZXJu
YWxGb3JtYXQsIGxldmVsVywgbGV2ZWxILCAwLAorICAgICAgICAgICAgICAgIGZtdC5mb3JtYXQs
IGZtdC5kYXRhVHlwZSwgbGV2ZWxEYXRhLmdldEFjY2VzcygpLmdldERhdGFQdHIoKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlLXNwZWNpZnkgcGFydHMgb2YgZWFj
aCBsZXZlbC4KKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX251bUxldmVs
czsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBsZXZlbFcgPSBNYXRoLm1heCgxLCB0aGlzLm1f
d2lkdGggPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBsZXZlbEggPSBNYXRoLm1heCgxLCB0aGlz
Lm1faGVpZ2h0ID4+IG5keCk7CisKKyAgICAgICAgICAgIHZhciB3ID0gcm5kLmdldEludCgxLCBs
ZXZlbFcpOworICAgICAgICAgICAgdmFyIGggPSBybmQuZ2V0SW50KDEsIGxldmVsSCk7CisgICAg
ICAgICAgICB2YXIgeCA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxXIC0gdyk7CisgICAgICAgICAgICB2
YXIgeSA9IHJuZC5nZXRJbnQoMCwgbGV2ZWxIIC0gaCk7CisKKyAgICAgICAgICAgICB2YXIgY29s
b3JBID0gWzIuMCwgMS41LCAtMS4wLCAyLjBdOworICAgICAgICAgICAgIHZhciBjb2xvckIgPSBb
LTEuNSwgLTIuMCwgMS43LCAtMS41XTsKKyAgICAgICAgICAgICB2YXIgY2VsbFNpemUgPSBybmQu
Z2V0SW50KDIsIDE2KTsKKworICAgICAgICAgICAgbGV2ZWxEYXRhLnNldFNpemUodywgaCk7Cisg
ICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aEdyaWQoCisgICAgICAgICAgICAgICAg
bGV2ZWxEYXRhLmdldEFjY2VzcygpLCBjZWxsU2l6ZSwgY29sb3JBLCBjb2xvckIKKyAgICAgICAg
ICAgICk7CisKKyAgICAgICAgICAgIHRoaXMubV9jb250ZXh0LnRleFN1YkltYWdlMkQoCisgICAg
ICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgbmR4LCB4LCB5LCB3LCBoLCBmbXQuZm9ybWF0LCBm
bXQuZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgbGV2ZWxEYXRhLmdldEFjY2VzcygpLmdldERh
dGFQdHIoKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBUZXhT
dWJJbWFnZTNEKCkgZGVwdGggY2FzZS4KKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZTJEQXJy
YXlTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0CisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGltYWdlV2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW1h
Z2VIZWlnaHQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtTGF5ZXJzCisgICAgICovCisgICAg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyREFycmF5RGVwdGhDYXNl
ID0gZnVuY3Rpb24oCisgICAgICAgIG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodCwgbnVtTGF5ZXJzCisgICAgKSB7CisgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyREFycmF5U3BlY0Nhc2UuY2FsbCgKKyAgICAgICAg
ICAgIHRoaXMsIG5hbWUsIGRlc2MsIGdsdVRleHR1cmVVdGlsLm1hcEdMSW50ZXJuYWxGb3JtYXQo
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQKKyAgICAgICAgICAgICksIGltYWdlV2lk
dGgsIGltYWdlSGVpZ2h0LCBudW1MYXllcnMsCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5tYXhMZXZlbENvdW50KAorICAgICAgICAgICAgICAgIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0CisgICAgICAgICAgICApCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5t
X2ludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgIC8vIHdlIGFyZSBpbnRl
cmVzdGVkIGluIHRoZSBiZWhhdmlvciBuZWFyIFstMiwgMl0sIG1hcCBpdCB0byB2aXNpYmxlIHJh
bmdlIFswLCAxXQorICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby5sb29rdXBCaWFzID0gWzAu
MjUsIDAuMCwgMC4wLCAxLjBdOworICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0SW5mby5sb29rdXBT
Y2FsZSA9IFswLjUsIDEuMCwgMS4wLCAwLjBdOworICAgIH07CisKKyAgICBlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJEQXJyYXlEZXB0aENhc2UucHJvdG90eXBlID0K
KyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLlRleHR1cmUyREFycmF5U3BlY0Nhc2UucHJvdG90eXBlCisgICAgICAgICk7CisK
KyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAgICBUZXhTdWJJbWFnZTJEQXJy
YXlEZXB0aENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0KKyAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyREFycmF5RGVwdGhDYXNlOworCisgICAgLyoq
CisgICAgICogY3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLgorICAgIFRleFN1YkltYWdlMkRBcnJheURlcHRoQ2FzZS5wcm90b3R5cGUuY3Jl
YXRlVGV4dHVyZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZm10ID0gZ2x1VGV4dHVyZVV0
aWwuZ2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAgICAgIHZhciBybmQg
PSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLmZ1bGxOYW1l
KCkpKTsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAgIHZhciBsZXZlbERhdGEgPSBu
ZXcgdGN1VGV4dHVyZS5UZXh0dXJlTGV2ZWwoCisgICAgICAgICAgICB0aGlzLm1fdGV4Rm9ybWF0
LCB0aGlzLm1fd2lkdGgsIHRoaXMubV9oZWlnaHQKKyAgICAgICAgKTsKKworICAgICAgICB0ZXgg
PSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRleCk7CisgICAgICAgIHRoaXMubV9j
b250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgICAgIC8v
IEZpcnN0IHNwZWNpZnkgZnVsbCB0ZXh0dXJlLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCB0aGlzLm1fbnVtTGV2ZWxzOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGxldmVsVyA9
IE1hdGgubWF4KDEsIHRoaXMubV93aWR0aCA+PiBuZHgpOworICAgICAgICAgICAgdmFyIGxldmVs
SCA9IE1hdGgubWF4KDEsIHRoaXMubV9oZWlnaHQgPj4gbmR4KTsKKyAgICAgICAgICAgIHZhciBn
TWluID0gWy0xLjUsIC0yLjAsIDEuNywgLTEuNV07CisgICAgICAgICAgICB2YXIgZ01heCA9IFsy
LjAsIDEuNSwgLTEuMCwgMi4wXTsKKworICAgICAgICAgICAgbGV2ZWxEYXRhLnNldFNpemUobGV2
ZWxXLCBsZXZlbEgsIHRoaXMubV9udW1MYXllcnMpOworICAgICAgICAgICAgdGN1VGV4dHVyZVV0
aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoCisgICAgICAgICAgICAgICAgbGV2ZWxEYXRh
LmdldEFjY2VzcygpLCBnTWluLCBnTWF4CisgICAgICAgICAgICApOworICAgICAgICAgICAgdGhp
cy5tX2NvbnRleHQudGV4SW1hZ2UzRCgKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJEX0FS
UkFZLCBuZHgsIHRoaXMubV9pbnRlcm5hbEZvcm1hdCwgbGV2ZWxXLCBsZXZlbEgsCisgICAgICAg
ICAgICAgICAgdGhpcy5tX251bUxheWVycywgMCwgZm10LmZvcm1hdCwgZm10LmRhdGFUeXBlLAor
ICAgICAgICAgICAgICAgIGxldmVsRGF0YS5nZXRBY2Nlc3MoKS5nZXREYXRhUHRyKCkKKyAgICAg
ICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZS1zcGVjaWZ5IHBhcnRzIG9mIGVh
Y2ggbGV2ZWwuCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9udW1MZXZl
bHM7IG5keCsrKSB7CisgICAgICAgICAgICB2YXIgbGV2ZWxXID0gTWF0aC5tYXgoMSwgdGhpcy5t
X3dpZHRoID4+IG5keCk7CisgICAgICAgICAgICB2YXIgbGV2ZWxIID0gTWF0aC5tYXgoMSwgdGhp
cy5tX2hlaWdodCA+PiBuZHgpOworCisgICAgICAgICAgICB2YXIgdyA9IHJuZC5nZXRJbnQoMSwg
bGV2ZWxXKTsKKyAgICAgICAgICAgIHZhciBoID0gcm5kLmdldEludCgxLCBsZXZlbEgpOworICAg
ICAgICAgICAgdmFyIGQgPSBybmQuZ2V0SW50KDEsIHRoaXMubV9udW1MYXllcnMpOworICAgICAg
ICAgICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIGxldmVsVyAtIHcpOworICAgICAgICAgICAgdmFy
IHkgPSBybmQuZ2V0SW50KDAsIGxldmVsSCAtIGgpOworICAgICAgICAgICAgdmFyIHogPSBybmQu
Z2V0SW50KDAsIHRoaXMubV9udW1MYXllcnMgLSBkKTsKKworICAgICAgICAgICAgIHZhciBjb2xv
ckEgPSBbMi4wLCAxLjUsIC0xLjAsIDIuMF07CisgICAgICAgICAgICAgdmFyIGNvbG9yQiA9IFst
MS41LCAtMi4wLCAxLjcsIC0xLjVdOworICAgICAgICAgICAgIHZhciBjZWxsU2l6ZSA9IHJuZC5n
ZXRJbnQoMiwgMTYpOworCisgICAgICAgICAgICBsZXZlbERhdGEuc2V0U2l6ZSh3LCBoLCBkKTsK
KyAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoR3JpZCgKKyAgICAgICAgICAgICAg
ICBsZXZlbERhdGEuZ2V0QWNjZXNzKCksIGNlbGxTaXplLCBjb2xvckEsIGNvbG9yQgorICAgICAg
ICAgICAgKTsKKworICAgICAgICAgICAgdGhpcy5tX2NvbnRleHQudGV4U3ViSW1hZ2UzRCgKKyAg
ICAgICAgICAgICAgICBnbC5URVhUVVJFXzJEX0FSUkFZLCBuZHgsIHgsIHksIHosIHcsIGgsIGQs
IGZtdC5mb3JtYXQsCisgICAgICAgICAgICAgICAgZm10LmRhdGFUeXBlLCBsZXZlbERhdGEuZ2V0
QWNjZXNzKCkuZ2V0RGF0YVB0cigpCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfTsK
KworICAgIC8vIFRleEltYWdlMkQoKSBkZXB0aCBjYXNlIHdpdGggcGJvLgorICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5UZXh0dXJlMkRTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVy
bmFsRm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGltYWdlV2lkdGgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gaW1hZ2VIZWlnaHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5UZXhJbWFnZTJERGVwdGhCdWZmZXJDYXNlID0gZnVuY3Rpb24oCisgICAgICAg
IG5hbWUsIGRlc2MsIGludGVybmFsRm9ybWF0LCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodAorICAg
ICkgeworICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRTcGVj
Q2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1VGV4dHVyZVV0aWwu
bWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdAorICAg
ICAgICAgICAgKSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIDEKKyAgICAgICAgKTsKKworICAg
ICAgICB0aGlzLm1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgLy8g
d2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGJlaGF2aW9yIG5lYXIgWy0yLCAyXSwgbWFwIGl0IHRv
IHZpc2libGUgcmFuZ2UgWzAsIDFdCisgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJbmZvLmxvb2t1
cEJpYXMgPSBbMC4yNSwgMC4wLCAwLjAsIDEuMF07CisgICAgICAgIHRoaXMubV90ZXhGb3JtYXRJ
bmZvLmxvb2t1cFNjYWxlID0gWzAuNSwgMS4wLCAxLjAsIDAuMF07CisgICAgfTsKKworICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkREZXB0aEJ1ZmZlckNhc2UucHJv
dG90eXBlID0KKyAgICAgICAgT2JqZWN0LmNyZWF0ZSgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmUyRFNwZWNDYXNlLnByb3RvdHlwZQorICAgICAgICAp
OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuCisgICAgVGV4SW1hZ2UyRERl
cHRoQnVmZmVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPQorICAgICAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTJERGVwdGhCdWZmZXJDYXNlOworCisgICAgLyoq
CisgICAgICogY3JlYXRlVGV4dHVyZQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLgorICAgIFRleEltYWdlMkREZXB0aEJ1ZmZlckNhc2UucHJvdG90eXBlLmNyZWF0
ZVRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4
dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAgICAgIHZh
ciBwaXhlbFNpemUgPSB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2
YXIgcm93TGVuZ3RoID0gdGhpcy5tX3dpZHRoOworICAgICAgICB2YXIgYWxpZ25tZW50ID0gNDsK
KyAgICAgICAgdmFyIHJvd1BpdGNoID0gZGVNYXRoLmRlQWxpZ24zMihyb3dMZW5ndGggKiBwaXhl
bFNpemUsIGFsaWdubWVudCk7CisgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLm1faGVpZ2h0Owor
ICAgICAgICB2YXIgYnVmID0gbnVsbDsKKyAgICAgICAgdmFyIHRleCA9IG51bGw7CisgICAgICAg
IHZhciBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHJvd1BpdGNoICogaGVpZ2h0KTsKKworICAgICAg
ICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgdGhpcy5tX251bUxldmVscyA9PSAxLCAn
TnVtYmVyIG9mIGxldmVscyBpcyBkaWZmZXJlbnQgdGhhbiAxJywKKyAgICAgICAgICAgIGZhbHNl
LCB0cnVlCisgICAgICAgICk7CisKKyAgICAgICAgLy8gRmlsbCBkYXRhIHdpdGggZ3JhZGllbnQK
KyAgICAgICAgdmFyIGdNaW4gPSBbLTEuNSwgLTIuMCwgMS43LCAtMS41XTsKKyAgICAgICAgdmFy
IGdNYXggPSBbMi4wLCAxLjUsIC0xLjAsIDIuMF07CisKKyAgICAgICAgdmFyIGFjY2VzcyA9IG5l
dyB0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzKHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdDogdGhpcy5tX3RleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
OiB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMubV9o
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhCisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cyhhY2Nlc3Ms
IGdNaW4sIGdNYXgpOworCisgICAgICAgIC8vIENyZWF0ZSBidWZmZXIgYW5kIHVwbG9hZC4KKyAg
ICAgICAgYnVmID0gdGhpcy5tX2NvbnRleHQuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIHRoaXMu
bV9jb250ZXh0LmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmKTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQuYnVmZmVyRGF0YSgKKyAgICAgICAgICAgIGdsLlBJWEVMX1VOUEFD
S19CVUZGRVIsIGFjY2Vzcy5nZXRCdWZmZXIoKSwgZ2wuU1RBVElDX0RSQVcKKyAgICAgICAgKTsK
KworICAgICAgICB0aGlzLm1fY29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdU
SCwgcm93TGVuZ3RoKTsKKyAgICAgICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGds
LlVOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3Rv
cmVpKGdsLlVOUEFDS19BTElHTk1FTlQsIGFsaWdubWVudCk7CisKKyAgICAgICAgdGV4ID0gdGhp
cy5tX2NvbnRleHQuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICB0aGlzLm1fY29udGV4dC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICB0aGlzLm1fY29udGV4dC50ZXhJ
bWFnZTJEKAorICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5tX2ludGVybmFsRm9y
bWF0LCB0aGlzLm1fd2lkdGgsCisgICAgICAgICAgICB0aGlzLm1faGVpZ2h0LCAwLCB0cmFuc2Zl
ckZtdC5mb3JtYXQsIHRyYW5zZmVyRm10LmRhdGFUeXBlLCAwCisgICAgICAgICk7CisgICAgICAg
IHRoaXMubV9jb250ZXh0LmRlbGV0ZUJ1ZmZlcihidWYpOworICAgIH07CisKKyAgICAvLyBUZXhJ
bWFnZTNEKCkgZGVwdGggY2FzZSB3aXRoIHBiby4KKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZTJEQXJyYXlTcGVjQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsRm9ybWF0
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGltYWdlV2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaW1hZ2VIZWlnaHQKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXhJbWFnZTJEQXJyYXlEZXB0aEJ1ZmZlckNhc2UgPSBmdW5jdGlvbigKKyAgICAgICAgbmFt
ZSwgZGVzYywgaW50ZXJuYWxGb3JtYXQsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBudW1MYXll
cnMKKyAgICApIHsKKyAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVy
ZTJEQXJyYXlTcGVjQ2FzZS5jYWxsKAorICAgICAgICAgICAgdGhpcywgbmFtZSwgZGVzYywgZ2x1
VGV4dHVyZVV0aWwubWFwR0xJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bEZvcm1hdAorICAgICAgICAgICAgKSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIG51bUxheWVy
cywgMQorICAgICAgICApOworCisgICAgICAgIHRoaXMubV9pbnRlcm5hbEZvcm1hdCA9IGludGVy
bmFsRm9ybWF0OworICAgICAgICAvLyB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgYmVoYXZpb3Ig
bmVhciBbLTIsIDJdLCBtYXAgaXQgdG8gdmlzaWJsZSByYW5nZSBbMCwgMV0KKyAgICAgICAgdGhp
cy5tX3RleEZvcm1hdEluZm8ubG9va3VwQmlhcyA9IFswLjI1LCAwLjAsIDAuMCwgMS4wXTsKKyAg
ICAgICAgdGhpcy5tX3RleEZvcm1hdEluZm8ubG9va3VwU2NhbGUgPSBbMC41LCAxLjAsIDEuMCwg
MC4wXTsKKyAgICB9OworCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1h
Z2UyREFycmF5RGVwdGhCdWZmZXJDYXNlLnByb3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVh
dGUoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlMkRB
cnJheVNwZWNDYXNlLnByb3RvdHlwZQorICAgICAgICApOworCisgICAgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuCisgICAgVGV4SW1hZ2UyREFycmF5RGVwdGhCdWZmZXJDYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LlRleEltYWdlMkRBcnJheURlcHRoQnVmZmVyQ2FzZTsKKworICAgIC8qKgorICAgICAqIGNyZWF0
ZVRleHR1cmUKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy4KKyAg
ICBUZXhJbWFnZTJEQXJyYXlEZXB0aEJ1ZmZlckNhc2UucHJvdG90eXBlLmNyZWF0ZVRleHR1cmUg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyRm10ID0gZ2x1VGV4dHVyZVV0aWwu
Z2V0VHJhbnNmZXJGb3JtYXQodGhpcy5tX3RleEZvcm1hdCk7CisgICAgICAgIHZhciBwaXhlbFNp
emUgPSB0aGlzLm1fdGV4Rm9ybWF0LmdldFBpeGVsU2l6ZSgpOworICAgICAgICB2YXIgcm93TGVu
Z3RoID0gdGhpcy5tX3dpZHRoOworICAgICAgICB2YXIgYWxpZ25tZW50ID0gNDsKKyAgICAgICAg
dmFyIHJvd1BpdGNoID0gZGVNYXRoLmRlQWxpZ24zMihyb3dMZW5ndGggKiBwaXhlbFNpemUsIGFs
aWdubWVudCk7CisgICAgICAgIHZhciBpbWFnZUhlaWdodCA9IHRoaXMubV9oZWlnaHQ7CisgICAg
ICAgIHZhciBzbGljZVBpdGNoID0gaW1hZ2VIZWlnaHQgKiByb3dQaXRjaDsKKyAgICAgICAgdmFy
IHRleCA9IG51bGw7CisgICAgICAgIHZhciBidWYgPSBudWxsOworICAgICAgICB2YXIgZGF0YSA9
IG5ldyBBcnJheUJ1ZmZlcihzbGljZVBpdGNoICogdGhpcy5tX251bUxheWVycyk7CisKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubV9udW1MZXZlbHMgPT0gMSwg
J051bWJlciBvZiBsZXZlbHMgaXMgZGlmZmVyZW50IHRoYW4gMScsCisgICAgICAgICAgICBmYWxz
ZSwgdHJ1ZQorICAgICAgICApOworCisgICAgICAgIC8vIEZpbGwgZGF0YSB3aXRoIGdyYWRpZW50
CisgICAgICAgIHZhciBnTWluID0gWy0xLjUsIC0yLjAsIDEuNywgLTEuNV07CisgICAgICAgIHZh
ciBnTWF4ID0gWzIuMCwgMS41LCAtMS4wLCAyLjBdOworCisgICAgICAgIHZhciBhY2Nlc3MgPSBu
ZXcgdGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzcyh7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQ6IHRoaXMubV90ZXhGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aDogdGhpcy5tX3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm1f
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGg6IHRoaXMubV9udW1MYXllcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaDogcm93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzbGljZVBpdGNoOiBzbGljZVBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YTogZGF0YQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgdGN1VGV4
dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMoYWNjZXNzLCBnTWluLCBnTWF4KTsK
KworICAgICAgICBidWYgPSB0aGlzLm1fY29udGV4dC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAg
dGhpcy5tX2NvbnRleHQuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYpOwor
ICAgICAgICB0aGlzLm1fY29udGV4dC5idWZmZXJEYXRhKAorICAgICAgICAgICAgZ2wuUElYRUxf
VU5QQUNLX0JVRkZFUiwgYWNjZXNzLmdldEJ1ZmZlcigpLCBnbC5TVEFUSUNfRFJBVworICAgICAg
ICApOworCisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19JTUFH
RV9IRUlHSFQsIHJvd0xlbmd0aCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnBpeGVsU3RvcmVp
KGdsLlVOUEFDS19ST1dfTEVOR1RILCByb3dMZW5ndGgpOworICAgICAgICB0aGlzLm1fY29udGV4
dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMsIDApOworICAgICAgICB0aGlzLm1f
Y29udGV4dC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAgICAgICAgdGhp
cy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCAwKTsKKyAgICAg
ICAgdGhpcy5tX2NvbnRleHQucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgYWxpZ25t
ZW50KTsKKworICAgICAgICB0ZXggPSB0aGlzLm1fY29udGV4dC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgIHRoaXMubV9jb250ZXh0LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkRfQVJSQVksIHRl
eCk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LnRleEltYWdlM0QoCisgICAgICAgICAgICBnbC5U
RVhUVVJFXzJEX0FSUkFZLCAwLCB0aGlzLm1faW50ZXJuYWxGb3JtYXQsIHRoaXMubV93aWR0aCwK
KyAgICAgICAgICAgIHRoaXMubV9oZWlnaHQsIHRoaXMubV9udW1MYXllcnMsIDAsIHRyYW5zZmVy
Rm10LmZvcm1hdCwKKyAgICAgICAgICAgIHRyYW5zZmVyRm10LmRhdGFUeXBlLCAwCisgICAgICAg
ICk7CisgICAgICAgIHRoaXMubV9jb250ZXh0LmRlbGV0ZUJ1ZmZlcihidWYpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENh
c2UuRGVxcFRlc3R9CisgICAgICovCisgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0
Q2FzZS5EZXFwVGVzdC5jYWxsKAorICAgICAgICAgICAgdGhpcywgJ3NwZWNpZmljYXRpb24nLCAn
VGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzJworICAgICAgICApOworICAgIH07CisKKyAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnBy
b3RvdHlwZSA9CisgICAgICAgIE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJv
dG90eXBlKTsKKyAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9CisgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHM7CisKKyAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnByb3Rv
dHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLnNfY3ViZU1hcEZhY2VzID0gWworICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9YLAorICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YLAorICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgICAg
ICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLAorICAgICAgICAgICAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLAorICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9aCisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx7bmFt
ZTogc3RyaW5nLCBmb3JtYXQ6IG51bWJlciwgZGF0YVR5cGU6IG51bWJlcn0+fSAqLworICAgICAg
ICB2YXIgdW5zaXplZEZvcm1hdHMgPSBbeworICAgICAgICAgICAgICAgIG5hbWU6ICdhbHBoYV91
bnNpZ25lZF9ieXRlJywKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLkFMUEhBLAorICAgICAg
ICAgICAgICAgIGRhdGFUeXBlOiBnbC5VTlNJR05FRF9CWVRFCisgICAgICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAgICAgbmFtZTogJ2x1bWluYW5jZV91bnNpZ25lZF9ieXRlJywKKyAgICAgICAg
ICAgICAgICBmb3JtYXQ6IGdsLkxVTUlOQU5DRSwKKyAgICAgICAgICAgICAgICBkYXRhVHlwZTog
Z2wuVU5TSUdORURfQllURQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6
ICdsdW1pbmFuY2VfYWxwaGFfdW5zaWduZWRfYnl0ZScsCisgICAgICAgICAgICAgICAgZm9ybWF0
OiBnbC5MVU1JTkFOQ0VfQUxQSEEsCisgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGdsLlVOU0lH
TkVEX0JZVEUKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiX3Vu
c2lnbmVkX3Nob3J0XzVfNl81JywKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IGdsLlJHQiwKKyAg
ICAgICAgICAgICAgICBkYXRhVHlwZTogZ2wuVU5TSUdORURfU0hPUlRfNV82XzUKKyAgICAgICAg
ICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiX3Vuc2lnbmVkX2J5dGUnLAorICAg
ICAgICAgICAgICAgIGZvcm1hdDogZ2wuUkdCLAorICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBn
bC5VTlNJR05FRF9CWVRFCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTog
J3JnYmFfdW5zaWduZWRfc2hvcnRfNF80XzRfNCcsCisgICAgICAgICAgICAgICAgZm9ybWF0OiBn
bC5SR0JBLAorICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBnbC5VTlNJR05FRF9TSE9SVF80XzRf
NF80CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmFfdW5zaWdu
ZWRfc2hvcnRfNV81XzVfMScsCisgICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0JBLAorICAg
ICAgICAgICAgICAgIGRhdGFUeXBlOiBnbC5VTlNJR05FRF9TSE9SVF81XzVfNV8xCisgICAgICAg
ICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmFfdW5zaWduZWRfYnl0ZScsCisg
ICAgICAgICAgICAgICAgZm9ybWF0OiBnbC5SR0JBLAorICAgICAgICAgICAgICAgIGRhdGFUeXBl
OiBnbC5VTlNJR05FRF9CWVRFCisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTx7bmFtZTogc3RyaW5nLCBpbnRlcm5hbEZvcm1hdDogbnVtYmVyfT59
ICovCisgICAgICAgIHZhciBjb2xvckZvcm1hdHMgPSBbeworICAgICAgICAgICAgICAgIG5hbWU6
ICdyZ2JhMzJmJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEzMkYKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYTMyaScsIGludGVybmFsRm9ybWF0OiBnbC5SR0JB
MzJJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmEzMnVpJywg
aW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEzMlVJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAg
ICAgICAgbmFtZTogJ3JnYmExNmYnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQTE2RgorICAgICAg
ICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhMTZpJywgaW50ZXJuYWxGb3Jt
YXQ6IGdsLlJHQkExNkkKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAn
cmdiYTE2dWknLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQTE2VUkKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYTgnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQTgK
KyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThpJywgaW50ZXJu
YWxGb3JtYXQ6IGdsLlJHQkE4SQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZ2JhOHVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkE4VUkKKyAgICAgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnc3JnYjhfYWxwaGE4JywgaW50ZXJuYWxGb3JtYXQ6
IGdsLlNSR0I4X0FMUEhBOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6
ICdyZ2IxMF9hMicsIGludGVybmFsRm9ybWF0OiBnbC5SR0IxMF9BMgorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2IxMF9hMnVpJywgaW50ZXJuYWxGb3JtYXQ6IGds
LlJHQjEwX0EyVUkKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdi
YTQnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQTQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAncmdiNV9hMScsIGludGVybmFsRm9ybWF0OiBnbC5SR0I1X0ExCisgICAg
ICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X3Nub3JtJywgaW50ZXJu
YWxGb3JtYXQ6IGdsLlJHQkE4X1NOT1JNCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAg
ICAgbmFtZTogJ3JnYjgnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCOAorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I1NjUnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdC
NTY1CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3IxMWZfZzExZl9i
MTBmJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlIxMUZfRzExRl9CMTBGCisgICAgICAgICAgICB9LCB7
CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjMyZicsIGludGVybmFsRm9ybWF0OiBnbC5SR0Iz
MkYKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiMzJpJywgaW50
ZXJuYWxGb3JtYXQ6IGdsLlJHQjMySQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAg
IG5hbWU6ICdyZ2IzMnVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQjMyVUkKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiMTZmJywgaW50ZXJuYWxGb3JtYXQ6IGds
LlJHQjE2RgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2IxNmkn
LCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCMTZJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAg
ICAgICAgbmFtZTogJ3JnYjE2dWknLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCMTZVSQorICAgICAg
ICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X3Nub3JtJywgaW50ZXJuYWxG
b3JtYXQ6IGdsLlJHQjhfU05PUk0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBu
YW1lOiAncmdiOGknLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCOEkKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiOHVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQjhV
SQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdzcmdiOCcsIGludGVy
bmFsRm9ybWF0OiBnbC5TUkdCOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZ2I5X2U1JywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQjlfRTUKKyAgICAgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmczMmYnLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkcz
MkYKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmczMmknLCBpbnRl
cm5hbEZvcm1hdDogZ2wuUkczMkkKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBu
YW1lOiAncmczMnVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHMzJVSQorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZzE2ZicsIGludGVybmFsRm9ybWF0OiBnbC5SRzE2
RgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZzE2aScsIGludGVy
bmFsRm9ybWF0OiBnbC5SRzE2SQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZzE2dWknLCBpbnRlcm5hbEZvcm1hdDogZ2wuUkcxNlVJCisgICAgICAgICAgICB9LCB7
CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnOCcsIGludGVybmFsRm9ybWF0OiBnbC5SRzgKKyAg
ICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmc4aScsIGludGVybmFsRm9y
bWF0OiBnbC5SRzhJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3Jn
OHVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHOFVJCisgICAgICAgICAgICB9LCB7CisgICAgICAg
ICAgICAgICAgbmFtZTogJ3JnOF9zbm9ybScsIGludGVybmFsRm9ybWF0OiBnbC5SRzhfU05PUk0K
KyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjMyZicsIGludGVybmFs
Rm9ybWF0OiBnbC5SMzJGCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTog
J3IzMmknLCBpbnRlcm5hbEZvcm1hdDogZ2wuUjMySQorICAgICAgICAgICAgfSwgeworICAgICAg
ICAgICAgICAgIG5hbWU6ICdyMzJ1aScsIGludGVybmFsRm9ybWF0OiBnbC5SMzJVSQorICAgICAg
ICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyMTZmJywgaW50ZXJuYWxGb3JtYXQ6
IGdsLlIxNkYKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjE2aScs
IGludGVybmFsRm9ybWF0OiBnbC5SMTZJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAg
ICAgbmFtZTogJ3IxNnVpJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlIxNlVJCisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4JywgaW50ZXJuYWxGb3JtYXQ6IGdsLlI4Cisg
ICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4aScsIGludGVybmFsRm9y
bWF0OiBnbC5SOEkKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjh1
aScsIGludGVybmFsRm9ybWF0OiBnbC5SOFVJCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAg
ICAgICAgbmFtZTogJ3I4X3Nub3JtJywgaW50ZXJuYWxGb3JtYXQ6IGdsLlI4X1NOT1JNCisgICAg
ICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgLy8gRGVwdGggYW5kIHN0ZW5jaWwgZm9y
bWF0cworICAgICAgICAvKiogQHR5cGUge0FycmF5PHtuYW1lOiBzdHJpbmcsIGludGVybmFsRm9y
bWF0OiBudW1iZXJ9Pn0gKi8KKyAgICAgICAgdmFyIGRlcHRoU3RlbmNpbEZvcm1hdHMgPSBbewor
ICAgICAgICAgICAgICAgIG5hbWU6ICdkZXB0aF9jb21wb25lbnQzMmYnLAorICAgICAgICAgICAg
ICAgIGludGVybmFsRm9ybWF0OiBnbC5ERVBUSF9DT01QT05FTlQzMkYKKyAgICAgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnZGVwdGhfY29tcG9uZW50MjQnLAorICAgICAgICAg
ICAgICAgIGludGVybmFsRm9ybWF0OiBnbC5ERVBUSF9DT01QT05FTlQyNAorICAgICAgICAgICAg
fSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdkZXB0aF9jb21wb25lbnQxNicsCisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLkRFUFRIX0NPTVBPTkVOVDE2CisgICAgICAgICAg
ICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ2RlcHRoMzJmX3N0ZW5jaWw4JywKKyAgICAg
ICAgICAgICAgICBpbnRlcm5hbEZvcm1hdDogZ2wuREVQVEgzMkZfU1RFTkNJTDgKKyAgICAgICAg
ICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnZGVwdGgyNF9zdGVuY2lsOCcsCisgICAg
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLkRFUFRIMjRfU1RFTkNJTDgKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgXTsKKworICAgICAgICAvLyBCYXNpYyBUZXhJbWFnZTJEIHVzYWdlLgor
ICAgICAgICB2YXIgc3BsaXRCYXNpY1RleDJEID0gMiwgc3BsaXRCYXNpY1RleEN1YmUgPSA1Owor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLworICAg
ICAgICB2YXIgYmFzaWNUZXhJbWFnZUdyb3VwMkQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHNwbGl0QmFzaWNUZXgyRDsgKytpaSkgeworICAgICAgICAgICAgYmFzaWNUZXhJ
bWFnZUdyb3VwMkQucHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGVzdENhc2UuRGVxcFRl
c3QoJ2Jhc2ljX3RleGltYWdlMmQnLCAnQmFzaWMgZ2xUZXhJbWFnZTJEKCkgdXNhZ2UnKQorICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoYmFzaWNUZXhJbWFnZUdyb3Vw
MkRbaWldKTsKKyAgICAgICAgfQorICAgICAgICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0+fSAqLworICAgICAgICB2YXIgYmFzaWNUZXhJbWFnZUdyb3VwQ3ViZSA9IFtd
OworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRCYXNpY1RleEN1YmU7ICsraWkp
IHsKKyAgICAgICAgICAgIGJhc2ljVGV4SW1hZ2VHcm91cEN1YmUucHVzaCgKKyAgICAgICAgICAg
ICAgICBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ2Jhc2ljX3RleGltYWdlMmQnLCAnQmFzaWMg
Z2xUZXhJbWFnZTJEKCkgdXNhZ2UnKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMu
YWRkQ2hpbGQoYmFzaWNUZXhJbWFnZUdyb3VwQ3ViZVtpaV0pOworICAgICAgICB9CisgICAgICAg
IGZvciAodmFyIGZvcm1hdE5keCA9IDA7IGZvcm1hdE5keCA8IGNvbG9yRm9ybWF0cy5sZW5ndGg7
IGZvcm1hdE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAgICAg
ICAgICAgIHZhciBmbXROYW1lID0gY29sb3JGb3JtYXRzW2Zvcm1hdE5keF0ubmFtZTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgdmFyIGZvcm1hdCA9IGNv
bG9yRm9ybWF0c1tmb3JtYXROZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovCisgICAgICAgICAgICB2YXIgdGV4MkRXaWR0aCA9IDY0OworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAgICAgICB2YXIgdGV4MkRIZWlnaHQg
PSAxMjg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgICAgIHZh
ciB0ZXhDdWJlU2l6ZSA9IDY0OworCisgICAgICAgICAgICBiYXNpY1RleEltYWdlR3JvdXAyRFtm
b3JtYXROZHggJSBzcGxpdEJhc2ljVGV4MkRdLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld0Jhc2ljVGV4SW1hZ2UyRENhc2VJbnRlcm5h
bCgKKyAgICAgICAgICAgICAgICAgICAgZm10TmFtZSArICdfMmQnLCAnJywgZm9ybWF0LCB0ZXgy
RFdpZHRoLCB0ZXgyREhlaWdodAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICBiYXNpY1RleEltYWdlR3JvdXBDdWJlW2Zvcm1hdE5keCAlIHNwbGl0QmFzaWNU
ZXhDdWJlXS5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5uZXdCYXNpY1RleEltYWdlQ3ViZUNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAg
ICAgICAgZm10TmFtZSArICdfY3ViZScsICcnLCBmb3JtYXQsIHRleEN1YmVTaXplCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJhbmRv
bWl6ZWQgVGV4SW1hZ2UyRCBvcmRlci4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHJhbmRvbVRleEltYWdlR3JvdXAgPSBuZXcgdGN1VGVz
dENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAncmFuZG9tX3RleGltYWdlMmQnLCAnUmFuZG9t
aXplZCBnbFRleEltYWdlMkQoKSB1c2FnZScKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRD
aGlsZChyYW5kb21UZXhJbWFnZUdyb3VwKTsKKyAgICAgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRv
bS5SYW5kb20oOSk7CisKKyAgICAgICAgLy8gMkQgY2FzZXMuCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDEwOyBuZHgrKykgeworICAgICAgICAgICAgdmFyIGZvcm1hdE5keCA9IHJu
ZC5nZXRJbnQoMCwgY29sb3JGb3JtYXRzLmxlbmd0aCAtIDEpOworICAgICAgICAgICAgdmFyIHdp
ZHRoID0gMSA8PCBybmQuZ2V0SW50KDIsIDgpOworICAgICAgICAgICAgdmFyIGhlaWdodCA9IDEg
PDwgcm5kLmdldEludCgyLCA4KTsKKworICAgICAgICAgICAgcmFuZG9tVGV4SW1hZ2VHcm91cC5h
ZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5u
ZXdSYW5kb21PcmRlclRleEltYWdlMkRDYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgICAg
ICcyZC4nICsgY29sb3JGb3JtYXRzW2Zvcm1hdE5keF0ubmFtZSwgJycsCisgICAgICAgICAgICAg
ICAgICAgIGNvbG9yRm9ybWF0c1tmb3JtYXROZHhdLmludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEN1YmVtYXAgY2FzZXMuCisgICAgICAgIHJhbmRvbVRleEltYWdlR3JvdXAgPSBuZXcg
dGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAncmFuZG9tX3RleGltYWdlMmQnLCAn
UmFuZG9taXplZCBnbFRleEltYWdlMkQoKSB1c2FnZScKKyAgICAgICAgKTsKKyAgICAgICAgdGhp
cy5hZGRDaGlsZChyYW5kb21UZXhJbWFnZUdyb3VwKTsKKworICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCAxMDsgbmR4KyspIHsKKyAgICAgICAgICAgIGZvcm1hdE5keCA9IHJuZC5nZXRJ
bnQoMCwgY29sb3JGb3JtYXRzLmxlbmd0aCAtIDEpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBzaXplID0gMSA8PCBybmQuZ2V0SW50KDIsIDgpOworCisgICAgICAgICAg
ICByYW5kb21UZXhJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1JhbmRvbU9yZGVyVGV4SW1hZ2VDdWJlQ2FzZUludGVy
bmFsKAorICAgICAgICAgICAgICAgICAgICAnY3ViZS4nICsgY29sb3JGb3JtYXRzW2Zvcm1hdE5k
eF0ubmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgIGNvbG9yRm9ybWF0c1tmb3JtYXROZHhd
LmludGVybmFsRm9ybWF0LCBzaXplCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFRleEltYWdlMkQgdW5wYWNrIGFsaWdubWVudC4KKyAg
ICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIGFs
aWduR3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAndGV4aW1h
Z2UyZF9hbGlnbicsICdnbFRleEltYWdlMkQoKSB1bnBhY2sgYWxpZ25tZW50IHRlc3RzJworICAg
ICAgICApOworICAgICAgICB0aGlzLmFkZENoaWxkKGFsaWduR3JvdXApOworCisgICAgICAgIGFs
aWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5uZXdUZXhJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJk
X3I4XzRfOCcsICcnLCBnbC5SOCwgNCwgOCwgNCwgOAorICAgICAgICAgICAgKQorICAgICAgICAp
OworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAg
ICAgICAgICAgICcyZF9yOF82M18xJywgJycsIGdsLlI4LCA2MywgMzAsIDEsIDEKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAg
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJ
bnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnMmRfcjhfNjNfMicsICcnLCBnbC5SOCwgNjMsIDMw
LCAxLCAyCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRk
Q2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJ
bWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3I4XzYzXzQnLCAn
JywgZ2wuUjgsIDYzLCAzMCwgMSwgNAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAg
ICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAg
ICcyZF9yOF82M184JywgJycsIGdsLlI4LCA2MywgMzAsIDEsIDgKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgK
KyAgICAgICAgICAgICAgICAnMmRfcmdiYTRfNTFfMScsICcnLCBnbC5SR0JBNCwgNTEsIDMwLCAx
LCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hp
bGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFn
ZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYmE0XzUxXzInLCAn
JywgZ2wuUkdCQTQsIDUxLCAzMCwgMSwgMgorICAgICAgICAgICAgKQorICAgICAgICApOworICAg
ICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAg
ICAgICcyZF9yZ2JhNF81MV80JywgJycsIGdsLlJHQkE0LCA1MSwgMzAsIDEsIDQKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAg
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJ
bnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnMmRfcmdiYTRfNTFfOCcsICcnLCBnbC5SR0JBNCwg
NTEsIDMwLCAxLCA4CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3Jv
dXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5u
ZXdUZXhJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYjhf
MzlfMScsICcnLCBnbC5SR0I4LCAzOSwgNDMsIDEsIDEKKyAgICAgICAgICAgICkKKyAgICAgICAg
KTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAg
ICAgICAgICAgICAnMmRfcmdiOF8zOV8yJywgJycsIGdsLlJHQjgsIDM5LCA0MywgMSwgMgorICAg
ICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAg
ICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWdu
Q2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICcyZF9yZ2I4XzM5XzQnLCAnJywgZ2wuUkdC
OCwgMzksIDQzLCAxLCA0CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWdu
R3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5uZXdUZXhJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3Jn
YjhfMzlfOCcsICcnLCBnbC5SR0I4LCAzOSwgNDMsIDEsIDgKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAg
ICAgICAgICAgICAgICAnMmRfcmdiYThfNDdfMScsICcnLCBnbC5SR0JBOCwgNDcsIDI3LCAxLCAx
CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQo
CisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZTJE
QWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYmE4XzQ3XzInLCAnJywg
Z2wuUkdCQTgsIDQ3LCAyNywgMSwgMgorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAg
ICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMubmV3VGV4SW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAg
ICcyZF9yZ2JhOF80N180JywgJycsIGdsLlJHQkE4LCA0NywgMjcsIDEsIDQKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlMkRBbGlnbkNhc2VJbnRl
cm5hbCgKKyAgICAgICAgICAgICAgICAnMmRfcmdiYThfNDdfOCcsICcnLCBnbC5SR0JBOCwgNDcs
IDI3LCAxLCA4CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAu
YWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdU
ZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yOF80
XzgnLCAnJywgZ2wuUjgsIDQsIDMsIDgKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAg
ICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAg
ICAgICdjdWJlX3I4XzYzXzEnLCAnJywgZ2wuUjgsIDYzLCAxLCAxCisgICAgICAgICAgICApCisg
ICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5h
bCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yOF82M18yJywgJycsIGdsLlI4LCA2MywgMSwgMgor
ICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAor
ICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2VDdWJl
QWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcjhfNjNfNCcsICcnLCBn
bC5SOCwgNjMsIDEsIDQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25H
cm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Lm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJl
X3I4XzYzXzgnLCAnJywgZ2wuUjgsIDYzLCAxLCA4CisgICAgICAgICAgICApCisgICAgICAgICk7
CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAg
ICAgICAgICAgICAnY3ViZV9yZ2JhNF81MV8xJywgJycsIGdsLlJHQkE0LCA1MSwgMSwgMQorICAg
ICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAg
ICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2VDdWJlQWxp
Z25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiYTRfNTFfMicsICcnLCBn
bC5SR0JBNCwgNTEsIDEsIDIKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxp
Z25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzLm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdj
dWJlX3JnYmE0XzUxXzQnLCAnJywgZ2wuUkdCQTQsIDUxLCAxLCA0CisgICAgICAgICAgICApCisg
ICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5h
bCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yZ2JhNF81MV84JywgJycsIGdsLlJHQkE0LCA1MSwg
MSwgOAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENo
aWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1h
Z2VDdWJlQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiOF8zOV8x
JywgJycsIGdsLlJHQjgsIDM5LCAxLCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAg
ICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAg
ICAgICAnY3ViZV9yZ2I4XzM5XzInLCAnJywgZ2wuUkdCOCwgMzksIDEsIDIKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUlu
dGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJlX3JnYjhfMzlfNCcsICcnLCBnbC5SR0I4LCAz
OSwgMSwgNAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFk
ZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4
SW1hZ2VDdWJlQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiOF8z
OV84JywgJycsIGdsLlJHQjgsIDM5LCAxLCA4CisgICAgICAgICAgICApCisgICAgICAgICk7Cisg
ICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAg
ICAgICAgICAnY3ViZV9yZ2JhOF80N18xJywgJycsIGdsLlJHQkE4LCA0NywgMSwgMQorICAgICAg
ICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAg
ICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4SW1hZ2VDdWJlQWxpZ25D
YXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiYThfNDdfMicsICcnLCBnbC5S
R0JBOCwgNDcsIDEsIDIKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25H
cm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Lm5ld1RleEltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJl
X3JnYmE4XzQ3XzQnLCAnJywgZ2wuUkdCQTgsIDQ3LCAxLCA0CisgICAgICAgICAgICApCisgICAg
ICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgK
KyAgICAgICAgICAgICAgICAnY3ViZV9yZ2JhOF80N184JywgJycsIGdsLlJHQkE4LCA0NywgMSwg
OAorICAgICAgICAgICAgKQorICAgICAgICApOworCisgICAgICAgIC8vIGdsVGV4SW1hZ2UyRCgp
IHVucGFjayBwYXJhbWV0ZXIgY2FzZXMuCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2Uu
RGVxcFRlc3R9ICovCisgICAgICAgIHZhciBwYXJhbUdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRl
cXBUZXN0KAorICAgICAgICAgICAgJ3RleGltYWdlMmRfdW5wYWNrX3BhcmFtcycsCisgICAgICAg
ICAgICAnZ2xUZXhJbWFnZTJEKCkgcGl4ZWwgdHJhbnNmZXIgbW9kZSBjYXNlcycKKyAgICAgICAg
KTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChwYXJhbUdyb3VwKTsKKworICAgICAgICB2YXIgY2Fz
ZXMgPSBbeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X2FsaWdubWVudCcsIGZvcm1hdDog
Z2wuUkdCOCwgd2lkdGg6IDMxLAorICAgICAgICAgICAgICAgIGhlaWdodDogMzAsIHJvd0xlbmd0
aDogMCwgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDAsCisgICAgICAgICAgICAgICAgYWxpZ25t
ZW50OiAyCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfcm93
X2xlbmd0aCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDMxLAorICAgICAgICAgICAgICAgIGhl
aWdodDogMzAsIHJvd0xlbmd0aDogNTAsIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAwLAorICAg
ICAgICAgICAgICAgIGFsaWdubWVudDogNAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAg
ICAgIG5hbWU6ICdyZ2I4X3NraXBfcm93cycsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDMxLAor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAsIHJvd0xlbmd0aDogMCwgc2tpcFJvd3M6IDMsIHNr
aXBQaXhlbHM6IDAsCisgICAgICAgICAgICAgICAgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9waXhlbHMnLCBmb3JtYXQ6IGds
LlJHQjgsIHdpZHRoOiAzMSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwLCByb3dMZW5ndGg6
IDM2LCBza2lwUm93czogMCwgc2tpcFBpeGVsczogNSwKKyAgICAgICAgICAgICAgICBhbGlnbm1l
bnQ6IDQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjhfY29tcGxl
eDEnLCBmb3JtYXQ6IGdsLlI4LCB3aWR0aDogMzEsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MCwgcm93TGVuZ3RoOiA2NCwgc2tpcFJvd3M6IDEsIHNraXBQaXhlbHM6IDMsCisgICAgICAgICAg
ICAgICAgYWxpZ25tZW50OiAxCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFt
ZTogJ3I4X2NvbXBsZXgyJywgZm9ybWF0OiBnbC5SOCwgd2lkdGg6IDMxLAorICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAsIHJvd0xlbmd0aDogNjQsIHNraXBSb3dzOiAxLCBza2lwUGl4ZWxzOiAz
LAorICAgICAgICAgICAgICAgIGFsaWdubWVudDogMgorICAgICAgICAgICAgfSwgeworICAgICAg
ICAgICAgICAgIG5hbWU6ICdyOF9jb21wbGV4MycsIGZvcm1hdDogZ2wuUjgsIHdpZHRoOiAzMSwK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwLCByb3dMZW5ndGg6IDY0LCBza2lwUm93czogMSwg
c2tpcFBpeGVsczogMywKKyAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IDQKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjhfY29tcGxleDQnLCBmb3JtYXQ6IGdsLlI4
LCB3aWR0aDogMzEsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMCwgcm93TGVuZ3RoOiA2NCwg
c2tpcFJvd3M6IDEsIHNraXBQaXhlbHM6IDMsCisgICAgICAgICAgICAgICAgYWxpZ25tZW50OiA4
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X2NvbXBsZXgx
JywgZm9ybWF0OiBnbC5SR0JBOCwgd2lkdGg6IDU2LAorICAgICAgICAgICAgICAgIGhlaWdodDog
NjEsIHJvd0xlbmd0aDogNjksIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAwLAorICAgICAgICAg
ICAgICAgIGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZ2JhOF9jb21wbGV4MicsIGZvcm1hdDogZ2wuUkdCQTgsIHdpZHRoOiA1NiwKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDYxLCByb3dMZW5ndGg6IDY5LCBza2lwUm93czogMCwgc2tpcFBp
eGVsczogNywKKyAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IDgKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThfY29tcGxleDMnLCBmb3JtYXQ6IGdsLlJHQkE4
LCB3aWR0aDogNTYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MSwgcm93TGVuZ3RoOiA2OSwg
c2tpcFJvd3M6IDMsIHNraXBQaXhlbHM6IDAsCisgICAgICAgICAgICAgICAgYWxpZ25tZW50OiA4
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X2NvbXBsZXg0
JywgZm9ybWF0OiBnbC5SR0JBOCwgd2lkdGg6IDU2LAorICAgICAgICAgICAgICAgIGhlaWdodDog
NjEsIHJvd0xlbmd0aDogNjksIHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiA3LAorICAgICAgICAg
ICAgICAgIGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZ2JhMzJmX2NvbXBsZXgnLCBmb3JtYXQ6IGdsLlJHQkEzMkYsIHdpZHRoOiAxOSwKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDEwLCByb3dMZW5ndGg6IDI3LCBza2lwUm93czogMSwgc2tp
cFBpeGVsczogNywKKyAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IDgKKyAgICAgICAgICAgIH0K
KyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBjYXNlcy5sZW5n
dGg7IG5keCsrKQorICAgICAgICAgICAgcGFyYW1Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
ICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyRFBhcmFtc0Nh
c2UoCisgICAgICAgICAgICAgICAgICAgIGNhc2VzW25keF0ubmFtZSwgJycsIGNhc2VzW25keF0u
Zm9ybWF0LCBjYXNlc1tuZHhdLndpZHRoLAorICAgICAgICAgICAgICAgICAgICBjYXNlc1tuZHhd
LmhlaWdodCwgY2FzZXNbbmR4XS5yb3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGNhc2Vz
W25keF0uc2tpcFJvd3MsIGNhc2VzW25keF0uc2tpcFBpeGVscywKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZXNbbmR4XS5hbGlnbm1lbnQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp
OworCisgICAgICAgIC8vIGdsVGV4SW1hZ2UyRCgpIHBibyBjYXNlcy4KKyAgICAgICAgdmFyIHNw
bGl0UGJvVGV4MkQgPSAyLCBzcGxpdFBib1RleEN1YmUgPSA1OworICAgICAgICAvKiogQHR5cGUg
e0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLyB2YXIgcGJvR3JvdXAyRCA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRQYm9UZXgyRDsgKytpaSkgeworICAg
ICAgICAgICAgcGJvR3JvdXAyRC5wdXNoKG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgndGV4aW1h
Z2UyZF9wYm8nLCAnZ2xUZXhJbWFnZTJEKCkgZnJvbSBQQk8nKSk7CisgICAgICAgICAgICB0aGlz
LmFkZENoaWxkKHBib0dyb3VwMkRbaWldKTsKKyAgICAgICAgfQorICAgICAgICAvKiogQHR5cGUg
e0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLyB2YXIgcGJvR3JvdXBDdWJlID0gW107
CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzcGxpdFBib1RleEN1YmU7ICsraWkpIHsK
KyAgICAgICAgICAgIHBib0dyb3VwQ3ViZS5wdXNoKG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgn
dGV4aW1hZ2UyZF9wYm8nLCAnZ2xUZXhJbWFnZTJEKCkgZnJvbSBQQk8nKSk7CisgICAgICAgICAg
IHRoaXMuYWRkQ2hpbGQocGJvR3JvdXBDdWJlW2lpXSk7CisgICAgICAgIH0KKyAgICAgICAgZm9y
ICh2YXIgZm9ybWF0TmR4ID0gMDsgZm9ybWF0TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgZm9y
bWF0TmR4KyspIHsKKyAgICAgICAgICAgIGZtdE5hbWUgPSBjb2xvckZvcm1hdHNbZm9ybWF0TmR4
XS5uYW1lOworICAgICAgICAgICAgZm9ybWF0ID0gY29sb3JGb3JtYXRzW2Zvcm1hdE5keF0uaW50
ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICB0ZXgyRFdpZHRoID0gNjU7CisgICAgICAgICAgICB0
ZXgyREhlaWdodCA9IDM3OworICAgICAgICAgICAgdGV4Q3ViZVNpemUgPSA2NDsKKworICAgICAg
ICAgICAgcGJvR3JvdXAyRFtmb3JtYXROZHggJSBzcGxpdFBib1RleDJEXS5hZGRDaGlsZCgKKyAg
ICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2Uy
REJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIGZtdE5hbWUgKyAnXzJkJywgJycsIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdGV4MkRXaWR0aCwgdGV4MkRIZWlnaHQsIDAsIDAs
IDAsIDQsIDAKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAg
cGJvR3JvdXBDdWJlW2Zvcm1hdE5keCAlIHNwbGl0UGJvVGV4Q3ViZV0uYWRkQ2hpbGQoCisgICAg
ICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlQ3Vi
ZUJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIGZtdE5hbWUgKyAnX2N1YmUnLCAnJywg
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB0ZXhDdWJlU2l6ZSwgMCwgMCwgMCwgNCwgMAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBQYXJhbWV0ZXIgY2FzZXMKKyAgICAgICAgdmFyIHBib0dyb3VwUGFyYW1zID0gbmV3IHRjdVRl
c3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ3RleGltYWdlMmRfcGJvJywgJ2dsVGV4SW1h
Z2UyRCgpIGZyb20gUEJPJworICAgICAgICApOworICAgICAgICB0aGlzLmFkZENoaWxkKHBib0dy
b3VwUGFyYW1zKTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0eXBlIHtBcnJheTx7bmFtZTog
c3RyaW5nLCBmb3JtYXQ6IG51bWJlciwgd2lkdGg6IG51bWJlciwKKyAgICAgICAgICogaGVpZ2h0
OiBudW1iZXIsIHJvd0xlbmd0aDogbnVtYmVyLCBza2lwUm93czogbnVtYmVyLAorICAgICAgICAg
KiBza2lwUGl4ZWxzOiBudW1iZXIsIGFsaWdubWVudDogbnVtYmVyLCBvZmZzZXQ6IG51bWJlcn0+
fQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIHBhcmFtZXRlckNhc2VzID0gW3sKKyAgICAgICAg
ICAgICAgICBuYW1lOiAncmdiOF9vZmZzZXQnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAzMSwK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwLCByb3dMZW5ndGg6IDAsIHNraXBSb3dzOiAwLCBz
a2lwUGl4ZWxzOiAwLAorICAgICAgICAgICAgICAgIGFsaWdubWVudDogNCwgb2Zmc2V0OiA2Nwor
ICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X2FsaWdubWVudCcs
IGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDMxLAorICAgICAgICAgICAgICAgIGhlaWdodDogMzAs
IHJvd0xlbmd0aDogMCwgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDAsCisgICAgICAgICAgICAg
ICAgYWxpZ25tZW50OiAyLCBvZmZzZXQ6IDAKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAg
ICAgICBuYW1lOiAncmdiOF9yb3dfbGVuZ3RoJywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMzEs
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMCwgcm93TGVuZ3RoOiA1MCwgc2tpcFJvd3M6IDAs
IHNraXBQaXhlbHM6IDAsCisgICAgICAgICAgICAgICAgYWxpZ25tZW50OiA0LCBvZmZzZXQ6IDAK
KyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiOF9za2lwX3Jvd3Mn
LCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAzMSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
LCByb3dMZW5ndGg6IDAsIHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAwLAorICAgICAgICAgICAg
ICAgIGFsaWdubWVudDogNCwgb2Zmc2V0OiAwCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAg
ICAgICAgbmFtZTogJ3JnYjhfc2tpcF9waXhlbHMnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAz
MSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwLCByb3dMZW5ndGg6IDM2LCBza2lwUm93czog
MCwgc2tpcFBpeGVsczogNSwKKyAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IDQsIG9mZnNldDog
MAorICAgICAgICAgICAgfQorICAgICAgICBdOworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBwYXJhbWV0ZXJDYXNlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICBwYm9Hcm91
cFBhcmFtcy5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuVGV4SW1hZ2UyREJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHBh
cmFtZXRlckNhc2VzW25keF0ubmFtZSArICdfMmQnLCAnJywKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVyQ2FzZXNbbmR4XS5mb3JtYXQsIHBhcmFtZXRlckNhc2VzW25keF0ud2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uaGVpZ2h0LCBwYXJhbWV0ZXJD
YXNlc1tuZHhdLnJvd0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNb
bmR4XS5za2lwUm93cywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5z
a2lwUGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDYXNlc1tuZHhdLmFsaWdu
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5vZmZzZXQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAgcGJvR3JvdXBQYXJh
bXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLlRleEltYWdlQ3ViZUJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIHBhcmFt
ZXRlckNhc2VzW25keF0ubmFtZSArICdfY3ViZScsICcnLAorICAgICAgICAgICAgICAgICAgICBw
YXJhbWV0ZXJDYXNlc1tuZHhdLmZvcm1hdCwgcGFyYW1ldGVyQ2FzZXNbbmR4XS53aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5yb3dMZW5ndGgsIHBhcmFtZXRl
ckNhc2VzW25keF0uc2tpcFJvd3MsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2Vz
W25keF0uc2tpcFBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4
XS5hbGlnbm1lbnQsIHBhcmFtZXRlckNhc2VzW25keF0ub2Zmc2V0CisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdsVGV4SW1hZ2UyRCgp
IGRlcHRoIGNhc2VzLgorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAq
LworICAgICAgICB2YXIgc2hhZG93MmRHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgK
KyAgICAgICAgICAgICd0ZXhpbWFnZTJkX2RlcHRoJywKKyAgICAgICAgICAgICdnbFRleEltYWdl
MkQoKSB3aXRoIGRlcHRoIG9yIGRlcHRoL3N0ZW5jaWwgZm9ybWF0JworICAgICAgICApOworICAg
ICAgICB0aGlzLmFkZENoaWxkKHNoYWRvdzJkR3JvdXApOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IGRlcHRoU3RlbmNpbEZvcm1hdHMubGVuZ3RoOyBuZHgrKykgeworICAgICAg
ICAgICAgLy8gV2ViR0wgMiBzcGVjaWZpYyBjb25zdHJhaW50LgorICAgICAgICAgICAgaWYgKGRl
cHRoU3RlbmNpbEZvcm1hdHNbbmR4XS5pbnRlcm5hbEZvcm1hdCA9PSBnbC5ERVBUSDMyRl9TVEVO
Q0lMOCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZhciB0ZXgyRFdp
ZHRoID0gNjQ7CisgICAgICAgICAgICB2YXIgdGV4MkRIZWlnaHQgPSAxMjg7CisKKyAgICAgICAg
ICAgIHNoYWRvdzJkR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlMkREZXB0aENhc2UoCisgICAgICAgICAgICAg
ICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdHNbbmR4XS5uYW1lLCAnJywKKyAgICAgICAgICAgICAg
ICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0c1tuZHhdLmludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICB0ZXgyRFdpZHRoLCB0ZXgyREhlaWdodAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBnbFRleEltYWdlMkQoKSBkZXB0
aCBjYXNlcyB3aXRoIHBiby4KKyAgICAgICAgc2hhZG93MmRHcm91cCA9IG5ldyB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhpbWFnZTJkX2RlcHRoX3BibycsCisgICAgICAg
ICAgICAnZ2xUZXhJbWFnZTJEKCkgd2l0aCBkZXB0aCBvciBkZXB0aC9zdGVuY2lsIGZvcm1hdCB3
aXRoIHBibycKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChzaGFkb3cyZEdyb3Vw
KTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBkZXB0aFN0ZW5jaWxGb3JtYXRz
Lmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgIHRleDJEV2lkdGggPSA2NDsKKyAgICAgICAg
ICAgIHRleDJESGVpZ2h0ID0gMTI4OworCisgICAgICAgICAgICBzaGFkb3cyZEdyb3VwLmFkZENo
aWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5U
ZXhJbWFnZTJERGVwdGhCdWZmZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5j
aWxGb3JtYXRzW25keF0ubmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNp
bEZvcm1hdHNbbmR4XS5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdGV4MkRX
aWR0aCwgdGV4MkRIZWlnaHQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgVGV4U3ViSW1hZ2UyRCB1c2FnZS4KKyAgICAgICAg
c3BsaXRCYXNpY1RleDJEID0gMzsKKyAgICAgICAgc3BsaXRCYXNpY1RleEN1YmUgPSA1OworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLworICAgICAg
ICB2YXIgYmFzaWNUZXhTdWJJbWFnZUdyb3VwMkQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHNwbGl0QmFzaWNUZXgyRDsgKytpaSkgeworICAgICAgICAgICAgYmFzaWNUZXhT
dWJJbWFnZUdyb3VwMkQucHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGVzdENhc2UuRGVx
cFRlc3QoJ2Jhc2ljX3RleHN1YmltYWdlMmQnLCAnQmFzaWMgZ2xUZXhTdWJJbWFnZTJEKCkgdXNh
Z2UnKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoYmFzaWNUZXhT
dWJJbWFnZUdyb3VwMkRbaWldKTsKKyAgICAgICAgfQorICAgICAgICAvKiogQHR5cGUge0FycmF5
PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLworICAgICAgICB2YXIgYmFzaWNUZXhTdWJJbWFn
ZUdyb3VwQ3ViZSA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRCYXNp
Y1RleEN1YmU7ICsraWkpIHsKKyAgICAgICAgICAgIGJhc2ljVGV4U3ViSW1hZ2VHcm91cEN1YmUu
cHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ2Jhc2ljX3Rl
eHN1YmltYWdlMmQnLCAnQmFzaWMgZ2xUZXhTdWJJbWFnZTJEKCkgdXNhZ2UnKQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoYmFzaWNUZXhTdWJJbWFnZUdyb3VwQ3Vi
ZVtpaV0pOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGZvcm1hdE5keCA9IDA7IGZvcm1h
dE5keCA8IGNvbG9yRm9ybWF0cy5sZW5ndGg7IGZvcm1hdE5keCsrKSB7CisgICAgICAgICAgICBm
bXROYW1lID0gY29sb3JGb3JtYXRzW2Zvcm1hdE5keF0ubmFtZTsKKyAgICAgICAgICAgIGZvcm1h
dCA9IGNvbG9yRm9ybWF0c1tmb3JtYXROZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAg
dGV4MkRXaWR0aCA9IDY0OworICAgICAgICAgICAgdGV4MkRIZWlnaHQgPSAxMjg7CisgICAgICAg
ICAgICB0ZXhDdWJlU2l6ZSA9IDY0OworCisgICAgICAgICAgICBiYXNpY1RleFN1YkltYWdlR3Jv
dXAyRFtmb3JtYXROZHggJSBzcGxpdEJhc2ljVGV4MkRdLmFkZENoaWxkKAorICAgICAgICAgICAg
ICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld0Jhc2ljVGV4U3ViSW1hZ2UyRENh
c2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAgICAgZm10TmFtZSArICdfMmQnLCAnJywgZm9y
bWF0LCB0ZXgyRFdpZHRoLCB0ZXgyREhlaWdodAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICk7CisgICAgICAgICAgICBiYXNpY1RleFN1YkltYWdlR3JvdXBDdWJlW2Zvcm1hdE5keCAl
IHNwbGl0QmFzaWNUZXhDdWJlXS5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5uZXdCYXNpY1RleEltYWdlQ3ViZUNhc2VJbnRlcm5hbCgKKyAg
ICAgICAgICAgICAgICAgICAgZm10TmFtZSArICdfY3ViZScsICcnLCBmb3JtYXQsIHRleEN1YmVT
aXplCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRleFN1YkltYWdlMkQgdG8gZW1wdHkgdGV4dHVyZS4KKyAgICAgICAgLyoqIEB0eXBl
IHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHRleFN1YkltYWdlRW1wdHlU
ZXhHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhzdWJp
bWFnZTJkX2VtcHR5X3RleCcsCisgICAgICAgICAgICAnZ2xUZXhTdWJJbWFnZTJEKCkgdG8gdGV4
dHVyZSB0aGF0IGhhcyBzdG9yYWdlIGJ1dCBubyBkYXRhJworICAgICAgICApOworICAgICAgICB0
aGlzLmFkZENoaWxkKHRleFN1YkltYWdlRW1wdHlUZXhHcm91cCk7CisgICAgICAgIGZvciAodmFy
IGZvcm1hdE5keCA9IDA7IGZvcm1hdE5keCA8IHVuc2l6ZWRGb3JtYXRzLmxlbmd0aDsgZm9ybWF0
TmR4KyspIHsKKyAgICAgICAgICAgIGZtdE5hbWUgPSB1bnNpemVkRm9ybWF0c1tmb3JtYXROZHhd
Lm5hbWU7CisgICAgICAgICAgICBmb3JtYXQgPSB1bnNpemVkRm9ybWF0c1tmb3JtYXROZHhdLmZv
cm1hdDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgdmFy
IGRhdGFUeXBlID0gdW5zaXplZEZvcm1hdHNbZm9ybWF0TmR4XS5kYXRhVHlwZTsKKyAgICAgICAg
ICAgIHRleDJEV2lkdGggPSA2NDsKKyAgICAgICAgICAgIHRleDJESGVpZ2h0ID0gMzI7CisgICAg
ICAgICAgICB0ZXhDdWJlU2l6ZSA9IDMyOworCisgICAgICAgICAgICB0ZXhTdWJJbWFnZUVtcHR5
VGV4R3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLlRleFN1YkltYWdlMkRFbXB0eVRleENhc2UoCisgICAgICAgICAgICAgICAg
ICAgIGZtdE5hbWUgKyAnXzJkJywgJycsIGZvcm1hdCwgZGF0YVR5cGUsIHRleDJEV2lkdGgsIHRl
eDJESGVpZ2h0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IHRleFN1YkltYWdlRW1wdHlUZXhHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlRW1wdHlUZXhDYXNl
KAorICAgICAgICAgICAgICAgICAgICBmbXROYW1lICsgJ19jdWJlJywgJycsIGZvcm1hdCwgZGF0
YVR5cGUsIHRleEN1YmVTaXplCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRleFN1YkltYWdlMkQgYWxpZ25tZW50IGNhc2VzLgorICAg
ICAgICBhbGlnbkdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAg
J3RleHN1YmltYWdlMmRfYWxpZ24nLCAnZ2xUZXhTdWJJbWFnZTJEKCkgdW5wYWNrIGFsaWdubWVu
dCB0ZXN0cycKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChhbGlnbkdyb3VwKTsK
KworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAg
ICAgICAgICAgICAgICcyZF9yOF8xXzEnLCAnJywgZ2wuUjgsIDY0LCA2NCwgMTMsIDE3LCAxLCA2
LCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hp
bGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJ
bWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3I4XzFfMicsICcn
LCBnbC5SOCwgNjQsIDY0LCAxMywgMTcsIDEsIDYsIDIKKyAgICAgICAgICAgICkKKyAgICAgICAg
KTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAg
ICAgICAgICAgICAgICAnMmRfcjhfMV80JywgJycsIGdsLlI4LCA2NCwgNjQsIDEzLCAxNywgMSwg
NiwgNAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENo
aWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4U3Vi
SW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICcyZF9yOF8xXzgnLCAn
JywgZ2wuUjgsIDY0LCA2NCwgMTMsIDE3LCAxLCA2LCA4CisgICAgICAgICAgICApCisgICAgICAg
ICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisg
ICAgICAgICAgICAgICAgJzJkX3I4XzYzXzEnLCAnJywgZ2wuUjgsIDY0LCA2NCwgMSwgOSwgNjMs
IDMwLCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRk
Q2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhT
dWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3I4XzYzXzIn
LCAnJywgZ2wuUjgsIDY0LCA2NCwgMSwgOSwgNjMsIDMwLCAyCisgICAgICAgICAgICApCisgICAg
ICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwo
CisgICAgICAgICAgICAgICAgJzJkX3I4XzYzXzQnLCAnJywgZ2wuUjgsIDY0LCA2NCwgMSwgOSwg
NjMsIDMwLCA0CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAu
YWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdU
ZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3I4XzYz
XzgnLCAnJywgZ2wuUjgsIDY0LCA2NCwgMSwgOSwgNjMsIDMwLCA4CisgICAgICAgICAgICApCisg
ICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJu
YWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYmE0XzUxXzEnLCAnJywgZ2wuUkdCQTQsIDY0LCA2
NCwgNywgMjksIDUxLCAzMCwgMQorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBh
bGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMubmV3VGV4U3ViSW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAg
ICcyZF9yZ2JhNF81MV8yJywgJycsIGdsLlJHQkE0LCA2NCwgNjQsIDcsIDI5LCA1MSwgMzAsIDIK
KyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgK
KyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdl
MkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnMmRfcmdiYTRfNTFfNCcsICcn
LCBnbC5SR0JBNCwgNjQsIDY0LCA3LCAyOSwgNTEsIDMwLCA0CisgICAgICAgICAgICApCisgICAg
ICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJuYWwo
CisgICAgICAgICAgICAgICAgJzJkX3JnYmE0XzUxXzgnLCAnJywgZ2wuUkdCQTQsIDY0LCA2NCwg
NywgMjksIDUxLCAzMCwgOAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGln
bkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMubmV3VGV4U3ViSW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICcy
ZF9yZ2I4XzM5XzEnLCAnJywgZ2wuUkdCOCwgNjQsIDY0LCAxMSwgOCwgMzksIDQzLCAxCisgICAg
ICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAg
ICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxp
Z25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYjhfMzlfMicsICcnLCBnbC5S
R0I4LCA2NCwgNjQsIDExLCA4LCAzOSwgNDMsIDIKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsK
KyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAg
ICAgICAgICAgICAnMmRfcmdiOF8zOV80JywgJycsIGdsLlJHQjgsIDY0LCA2NCwgMTEsIDgsIDM5
LCA0MywgNAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFk
ZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4
U3ViSW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICcyZF9yZ2I4XzM5
XzgnLCAnJywgZ2wuUkdCOCwgNjQsIDY0LCAxMSwgOCwgMzksIDQzLCA4CisgICAgICAgICAgICAp
CisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50
ZXJuYWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYmE4XzQ3XzEnLCAnJywgZ2wuUkdCQTgsIDY0
LCA2NCwgMTAsIDEsIDQ3LCAyNywgMQorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAg
ICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2UyREFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAg
ICAgICcyZF9yZ2JhOF80N18yJywgJycsIGdsLlJHQkE4LCA2NCwgNjQsIDEwLCAxLCA0NywgMjcs
IDIKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGls
ZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1Yklt
YWdlMkRBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnMmRfcmdiYThfNDdfNCcs
ICcnLCBnbC5SR0JBOCwgNjQsIDY0LCAxMCwgMSwgNDcsIDI3LCA0CisgICAgICAgICAgICApCisg
ICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZTJEQWxpZ25DYXNlSW50ZXJu
YWwoCisgICAgICAgICAgICAgICAgJzJkX3JnYmE4XzQ3XzgnLCAnJywgZ2wuUkdCQTgsIDY0LCA2
NCwgMTAsIDEsIDQ3LCAyNywgOAorICAgICAgICAgICAgKQorICAgICAgICApOworCisgICAgICAg
IGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5uZXdUZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAg
ICAgICAnY3ViZV9yOF8xXzEnLCAnJywgZ2wuUjgsIDY0LCAxMywgMTcsIDEsIDYsIDEKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAg
ICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFs
aWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJlX3I4XzFfMicsICcnLCBnbC5S
OCwgNjQsIDEzLCAxNywgMSwgNiwgMgorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAg
ICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2VDdWJlQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAg
ICAgICAgJ2N1YmVfcjhfMV80JywgJycsIGdsLlI4LCA2NCwgMTMsIDE3LCAxLCA2LCA0CisgICAg
ICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisgICAg
ICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZUN1YmVB
bGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yOF8xXzgnLCAnJywgZ2wu
UjgsIDY0LCAxMywgMTcsIDEsIDYsIDgKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAg
ICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAg
ICAgICAgICdjdWJlX3I4XzYzXzEnLCAnJywgZ2wuUjgsIDY0LCAxLCA5LCA2MywgMzAsIDEKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAg
ICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3Vi
ZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJlX3I4XzYzXzInLCAnJywg
Z2wuUjgsIDY0LCAxLCA5LCA2MywgMzAsIDIKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAg
ICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAg
ICAgICAgICAgICdjdWJlX3I4XzYzXzQnLCAnJywgZ2wuUjgsIDY0LCAxLCA5LCA2MywgMzAsIDQK
KyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgK
KyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdl
Q3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJlX3I4XzYzXzgnLCAn
JywgZ2wuUjgsIDY0LCAxLCA5LCA2MywgMzAsIDgKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsK
KyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAg
ICAgICAgICAgICAgICdjdWJlX3JnYmE0XzUxXzEnLCAnJywgZ2wuUkdCQTQsIDY0LCA3LCAyOSwg
NTEsIDMwLCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAu
YWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdU
ZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3ViZV9y
Z2JhNF81MV8yJywgJycsIGdsLlJHQkE0LCA2NCwgNywgMjksIDUxLCAzMCwgMgorICAgICAgICAg
ICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAg
ICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2VDdWJlQWxpZ25D
YXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiYTRfNTFfNCcsICcnLCBnbC5S
R0JBNCwgNjQsIDcsIDI5LCA1MSwgMzAsIDQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAg
ICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAgICAg
ICAgICAgICAgICdjdWJlX3JnYmE0XzUxXzgnLCAnJywgZ2wuUkdCQTQsIDY0LCA3LCAyOSwgNTEs
IDMwLCA4CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRk
Q2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhT
dWJJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yZ2I4
XzM5XzEnLCAnJywgZ2wuUkdCOCwgNjQsIDExLCA4LCAzOSwgNDMsIDEKKyAgICAgICAgICAgICkK
KyAgICAgICAgKTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUlu
dGVybmFsKAorICAgICAgICAgICAgICAgICdjdWJlX3JnYjhfMzlfMicsICcnLCBnbC5SR0I4LCA2
NCwgMTEsIDgsIDM5LCA0MywgMgorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBh
bGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMubmV3VGV4U3ViSW1hZ2VDdWJlQWxpZ25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAg
ICAgJ2N1YmVfcmdiOF8zOV80JywgJycsIGdsLlJHQjgsIDY0LCAxMSwgOCwgMzksIDQzLCA0Cisg
ICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3JvdXAuYWRkQ2hpbGQoCisg
ICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5uZXdUZXhTdWJJbWFnZUN1
YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3ViZV9yZ2I4XzM5XzgnLCAn
JywgZ2wuUkdCOCwgNjQsIDExLCA4LCAzOSwgNDMsIDgKKyAgICAgICAgICAgICkKKyAgICAgICAg
KTsKKyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAor
ICAgICAgICAgICAgICAgICdjdWJlX3JnYmE4XzQ3XzEnLCAnJywgZ2wuUkdCQTgsIDY0LCAxMCwg
MSwgNDcsIDI3LCAxCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGFsaWduR3Jv
dXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5u
ZXdUZXhTdWJJbWFnZUN1YmVBbGlnbkNhc2VJbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAnY3Vi
ZV9yZ2JhOF80N18yJywgJycsIGdsLlJHQkE4LCA2NCwgMTAsIDEsIDQ3LCAyNywgMgorICAgICAg
ICAgICAgKQorICAgICAgICApOworICAgICAgICBhbGlnbkdyb3VwLmFkZENoaWxkKAorICAgICAg
ICAgICAgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubmV3VGV4U3ViSW1hZ2VDdWJlQWxp
Z25DYXNlSW50ZXJuYWwoCisgICAgICAgICAgICAgICAgJ2N1YmVfcmdiYThfNDdfNCcsICcnLCBn
bC5SR0JBOCwgNjQsIDEwLCAxLCA0NywgMjcsIDQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsK
KyAgICAgICAgYWxpZ25Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLm5ld1RleFN1YkltYWdlQ3ViZUFsaWduQ2FzZUludGVybmFsKAorICAg
ICAgICAgICAgICAgICdjdWJlX3JnYmE4XzQ3XzgnLCAnJywgZ2wuUkdCQTgsIDY0LCAxMCwgMSwg
NDcsIDI3LCA4CisgICAgICAgICAgICApCisgICAgICAgICk7CisKKyAgICAgICAgLy8gZ2xUZXhT
dWJJbWFnZTJEKCkgcGl4ZWwgdHJhbnNmZXIgbW9kZSBjYXNlcy4KKyAgICAgICAgcGFyYW1Hcm91
cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhzdWJpbWFnZTJk
X3VucGFja19wYXJhbXMnLAorICAgICAgICAgICAgJ2dsVGV4U3ViSW1hZ2UyRCgpIHBpeGVsIHRy
YW5zZmVyIG1vZGUgY2FzZXMnCisgICAgICAgICk7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQocGFy
YW1Hcm91cCk7CisKKyAgICAgICAgY2FzZXMgPSBbeworICAgICAgICAgICAgICAgIG5hbWU6ICdy
Z2I4X2FsaWdubWVudCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDU0LAorICAgICAgICAgICAg
ICAgIGhlaWdodDogNjAsIHN1Ylg6IDExLCBzdWJZOiA3LCBzdWJXOiAzMSwgc3ViSDogMzAsCisg
ICAgICAgICAgICAgICAgcm93TGVuZ3RoOiAwLCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMCwg
YWxpZ25tZW50OiAyCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3Jn
Yjhfcm93X2xlbmd0aCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDU0LAorICAgICAgICAgICAg
ICAgIGhlaWdodDogNjAsIHN1Ylg6IDExLCBzdWJZOiA3LCBzdWJXOiAzMSwgc3ViSDogMzAsCisg
ICAgICAgICAgICAgICAgcm93TGVuZ3RoOiA1MCwgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDAs
IGFsaWdubWVudDogNAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdy
Z2I4X3NraXBfcm93cycsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDU0LAorICAgICAgICAgICAg
ICAgIGhlaWdodDogNjAsIHN1Ylg6IDExLCBzdWJZOiA3LCBzdWJXOiAzMSwgc3ViSDogMzAsCisg
ICAgICAgICAgICAgICAgcm93TGVuZ3RoOiAwLCBza2lwUm93czogMywgc2tpcFBpeGVsczogMCwg
YWxpZ25tZW50OiA0CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3Jn
Yjhfc2tpcF9waXhlbHMnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiA1NCwKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDYwLCBzdWJYOiAxMSwgc3ViWTogNywgc3ViVzogMzEsIHN1Ykg6IDMwLAor
ICAgICAgICAgICAgICAgIHJvd0xlbmd0aDogMzYsIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiA1
LCBhbGlnbm1lbnQ6IDQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAn
cjhfY29tcGxleDEnLCBmb3JtYXQ6IGdsLlI4LCB3aWR0aDogNTQsCisgICAgICAgICAgICAgICAg
aGVpZ2h0OiA2MCwgc3ViWDogMTEsIHN1Ylk6IDcsIHN1Ylc6IDMxLCBzdWJIOiAzMCwKKyAgICAg
ICAgICAgICAgICByb3dMZW5ndGg6IDY0LCBza2lwUm93czogMSwgc2tpcFBpeGVsczogMywgYWxp
Z25tZW50OiAxCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4X2Nv
bXBsZXgyJywgZm9ybWF0OiBnbC5SOCwgd2lkdGg6IDU0LAorICAgICAgICAgICAgICAgIGhlaWdo
dDogNjAsIHN1Ylg6IDExLCBzdWJZOiA3LCBzdWJXOiAzMSwgc3ViSDogMzAsCisgICAgICAgICAg
ICAgICAgcm93TGVuZ3RoOiA2NCwgc2tpcFJvd3M6IDEsIHNraXBQaXhlbHM6IDMsIGFsaWdubWVu
dDogMgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyOF9jb21wbGV4
MycsIGZvcm1hdDogZ2wuUjgsIHdpZHRoOiA1NCwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDYw
LCBzdWJYOiAxMSwgc3ViWTogNywgc3ViVzogMzEsIHN1Ykg6IDMwLAorICAgICAgICAgICAgICAg
IHJvd0xlbmd0aDogNjQsIHNraXBSb3dzOiAxLCBza2lwUGl4ZWxzOiAzLCBhbGlnbm1lbnQ6IDQK
KyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjhfY29tcGxleDQnLCBm
b3JtYXQ6IGdsLlI4LCB3aWR0aDogNTQsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MCwgc3Vi
WDogMTEsIHN1Ylk6IDcsIHN1Ylc6IDMxLCBzdWJIOiAzMCwKKyAgICAgICAgICAgICAgICByb3dM
ZW5ndGg6IDY0LCBza2lwUm93czogMSwgc2tpcFBpeGVsczogMywgYWxpZ25tZW50OiA4CisgICAg
ICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X2NvbXBsZXgxJywgZm9y
bWF0OiBnbC5SR0JBOCwgd2lkdGg6IDkyLAorICAgICAgICAgICAgICAgIGhlaWdodDogODQsIHN1
Ylg6IDEzLCBzdWJZOiAxOSwgc3ViVzogNTYsIHN1Ykg6IDYxLAorICAgICAgICAgICAgICAgIHJv
d0xlbmd0aDogNjksIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAwLCBhbGlnbm1lbnQ6IDgKKyAg
ICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThfY29tcGxleDInLCBm
b3JtYXQ6IGdsLlJHQkE4LCB3aWR0aDogOTIsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiA4NCwg
c3ViWDogMTMsIHN1Ylk6IDE5LCBzdWJXOiA1Niwgc3ViSDogNjEsCisgICAgICAgICAgICAgICAg
cm93TGVuZ3RoOiA2OSwgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDcsIGFsaWdubWVudDogOAor
ICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhOF9jb21wbGV4Mycs
IGZvcm1hdDogZ2wuUkdCQTgsIHdpZHRoOiA5MiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDg0
LCBzdWJYOiAxMywgc3ViWTogMTksIHN1Ylc6IDU2LCBzdWJIOiA2MSwKKyAgICAgICAgICAgICAg
ICByb3dMZW5ndGg6IDY5LCBza2lwUm93czogMywgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA4
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X2NvbXBsZXg0
JywgZm9ybWF0OiBnbC5SR0JBOCwgd2lkdGg6IDkyLAorICAgICAgICAgICAgICAgIGhlaWdodDog
ODQsIHN1Ylg6IDEzLCBzdWJZOiAxOSwgc3ViVzogNTYsIHN1Ykg6IDYxLAorICAgICAgICAgICAg
ICAgIHJvd0xlbmd0aDogNjksIHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiA3LCBhbGlnbm1lbnQ6
IDgKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYTMyZl9jb21w
bGV4JywgZm9ybWF0OiBnbC5SR0JBMzJGLCB3aWR0aDogOTIsCisgICAgICAgICAgICAgICAgaGVp
Z2h0OiA4NCwgc3ViWDogMTMsIHN1Ylk6IDE5LCBzdWJXOiA1Niwgc3ViSDogNjEsCisgICAgICAg
ICAgICAgICAgcm93TGVuZ3RoOiA2OSwgc2tpcFJvd3M6IDMsIHNraXBQaXhlbHM6IDcsIGFsaWdu
bWVudDogOAorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IGNhc2VzLmxlbmd0aDsgbmR4KyspCisgICAgICAgICAgICBwYXJhbUdyb3Vw
LmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5UZXhTdWJJbWFnZTJEUGFyYW1zQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgY2FzZXNb
bmR4XS5uYW1lLCAnJywgY2FzZXNbbmR4XS5mb3JtYXQsIGNhc2VzW25keF0ud2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgIGNhc2VzW25keF0uaGVpZ2h0LCBjYXNlc1tuZHhdLnN1YlgsIGNhc2Vz
W25keF0uc3ViWSwKKyAgICAgICAgICAgICAgICAgICAgY2FzZXNbbmR4XS5zdWJXLCBjYXNlc1tu
ZHhdLnN1YkgsIGNhc2VzW25keF0ucm93TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBjYXNl
c1tuZHhdLnNraXBSb3dzLCBjYXNlc1tuZHhdLnNraXBQaXhlbHMsCisgICAgICAgICAgICAgICAg
ICAgIGNhc2VzW25keF0uYWxpZ25tZW50CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KTsKKworICAgICAgICAvLyBnbFRleFN1YkltYWdlMkQoKSBQQk8gY2FzZXMuCisgICAgICAgIHNw
bGl0UGJvVGV4MkQgPSAyOworICAgICAgICBzcGxpdFBib1RleEN1YmUgPSA1OworICAgICAgICBw
Ym9Hcm91cDJEID0gW107CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzcGxpdFBib1Rl
eDJEOyArK2lpKSB7CisgICAgICAgICAgICBwYm9Hcm91cDJELnB1c2gobmV3IHRjdVRlc3RDYXNl
LkRlcXBUZXN0KAorICAgICAgICAgICAgICAgICd0ZXhzdWJpbWFnZTJkX3BibycsCisgICAgICAg
ICAgICAgICAgJ2dsVGV4U3ViSW1hZ2UyRCgpIHBpeGVsIGJ1ZmZlciBvYmplY3QgdGVzdHMnCisg
ICAgICAgICAgICApKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQocGJvR3JvdXAyRFtpaV0p
OworICAgICAgICB9CisgICAgICAgIHBib0dyb3VwQ3ViZSA9IFtdOworICAgICAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgc3BsaXRQYm9UZXhDdWJlOyArK2lpKSB7CisgICAgICAgICAgICBwYm9H
cm91cEN1YmUucHVzaChuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAgICAg
J3RleHN1YmltYWdlMmRfcGJvJywKKyAgICAgICAgICAgICAgICAnZ2xUZXhTdWJJbWFnZTJEKCkg
cGl4ZWwgYnVmZmVyIG9iamVjdCB0ZXN0cycKKyAgICAgICAgICAgICkpOworICAgICAgICAgICAg
dGhpcy5hZGRDaGlsZChwYm9Hcm91cEN1YmVbaWldKTsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IGNvbG9yRm9ybWF0cy5sZW5ndGg7IG5keCsrKSB7CisgICAg
ICAgICAgICBwYm9Hcm91cDJEW25keCAlIHNwbGl0UGJvVGV4MkRdLmFkZENoaWxkKAorICAgICAg
ICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTJE
QnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgY29sb3JGb3JtYXRzW25keF0ubmFtZSAr
ICdfMmQnLCAnJywKKyAgICAgICAgICAgICAgICAgICAgY29sb3JGb3JtYXRzW25keF0uaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIDU0LCAvLyBXaWR0aAorICAgICAgICAgICAg
ICAgICAgICA2MCwgLy8gSGVpZ2h0CisgICAgICAgICAgICAgICAgICAgIDExLCAvLyBTdWIgWAor
ICAgICAgICAgICAgICAgICAgICA3LCAvLyBTdWIgWQorICAgICAgICAgICAgICAgICAgICAzMSwg
Ly8gU3ViIFcKKyAgICAgICAgICAgICAgICAgICAgMzAsIC8vIFN1YiBICisgICAgICAgICAgICAg
ICAgICAgIDAsIC8vIFJvdyBsZW4KKyAgICAgICAgICAgICAgICAgICAgMCwgLy8gU2tpcCByb3dz
CisgICAgICAgICAgICAgICAgICAgIDAsIC8vIFNraXAgcGl4ZWxzCisgICAgICAgICAgICAgICAg
ICAgIDQsIC8vIEFsaWdubWVudAorICAgICAgICAgICAgICAgICAgICAwIC8qIG9mZnNldCAqLwor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBwYm9Hcm91cEN1
YmVbbmR4ICUgc3BsaXRQYm9UZXhDdWJlXS5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcg
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VDdWJlQnVmZmVyQ2FzZSgK
KyAgICAgICAgICAgICAgICAgICAgY29sb3JGb3JtYXRzW25keF0ubmFtZSArICdfY3ViZScsICcn
LAorICAgICAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHNbbmR4XS5pbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgNjQsIC8vIFNpemUKKyAgICAgICAgICAgICAgICAgICAgMTEs
IC8vIFN1YiBYCisgICAgICAgICAgICAgICAgICAgIDcsIC8vIFN1YiBZCisgICAgICAgICAgICAg
ICAgICAgIDMxLCAvLyBTdWIgVworICAgICAgICAgICAgICAgICAgICAzMCwgLy8gU3ViIEgKKyAg
ICAgICAgICAgICAgICAgICAgMCwgLy8gUm93IGxlbgorICAgICAgICAgICAgICAgICAgICAwLCAv
LyBTa2lwIHJvd3MKKyAgICAgICAgICAgICAgICAgICAgMCwgLy8gU2tpcCBwaXhlbHMKKyAgICAg
ICAgICAgICAgICAgICAgNCwgLy8gQWxpZ25tZW50CisgICAgICAgICAgICAgICAgICAgIDAgLyog
b2Zmc2V0ICovCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQor
CisgICAgICAgIHBib0dyb3VwUGFyYW1zID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAg
ICAgICAgICAgJ3RleHN1YmltYWdlMmRfcGJvJywKKyAgICAgICAgICAgICdnbFRleFN1YkltYWdl
MkQoKSBwaXhlbCBidWZmZXIgb2JqZWN0IHRlc3RzJworICAgICAgICApOworICAgICAgICB0aGlz
LmFkZENoaWxkKHBib0dyb3VwUGFyYW1zKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx7bmFt
ZTogc3RyaW5nLCBmb3JtYXQ6IG51bWJlciwgd2lkdGg6IG51bWJlciwKKyAgICAgICAgICogaGVp
Z2h0OiBudW1iZXIsIHN1Ylg6IG51bWJlciwgc3ViWTogbnVtYmVyLAorICAgICAgICAgKiBzdWJX
OiBudW1iZXIsIHN1Ykg6IG51bWJlciwgcm93TGVuZ3RoOiBudW1iZXIsIHNraXBSb3dzOiBudW1i
ZXIsCisgICAgICAgICAqIHNraXBQaXhlbHM6IG51bWJlciwgYWxpZ25tZW50OiBudW1iZXIsIG9m
ZnNldDogbnVtYmVyfT59CisgICAgICAgICAqLworICAgICAgICB2YXIgcGFyYW1DYXNlcyA9IFt7
CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfb2Zmc2V0JywgZm9ybWF0OiBnbC5SR0I4LCB3
aWR0aDogNTQsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MCwgc3ViWDogMTEsIHN1Ylk6IDcs
IHN1Ylc6IDMxLCBzdWJIOiAzMCwKKyAgICAgICAgICAgICAgICByb3dMZW5ndGg6IDAsIHNraXBS
b3dzOiAwLCBza2lwUGl4ZWxzOiAwLAorICAgICAgICAgICAgICAgIGFsaWdubWVudDogNCwgb2Zm
c2V0OiA2NworICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X2Fs
aWdubWVudCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDU0LAorICAgICAgICAgICAgICAgIGhl
aWdodDogNjAsIHN1Ylg6IDExLCBzdWJZOiA3LCBzdWJXOiAzMSwgc3ViSDogMzAsCisgICAgICAg
ICAgICAgICAgcm93TGVuZ3RoOiAwLCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMCwKKyAgICAg
ICAgICAgICAgICBhbGlnbm1lbnQ6IDIsIG9mZnNldDogMAorICAgICAgICAgICAgfSwgeworICAg
ICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X3Jvd19sZW5ndGgnLCBmb3JtYXQ6IGdsLlJHQjgsIHdp
ZHRoOiA1NCwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDYwLCBzdWJYOiAxMSwgc3ViWTogNywg
c3ViVzogMzEsIHN1Ykg6IDMwLAorICAgICAgICAgICAgICAgIHJvd0xlbmd0aDogNTAsIHNraXBS
b3dzOiAwLCBza2lwUGl4ZWxzOiAwLAorICAgICAgICAgICAgICAgIGFsaWdubWVudDogNCwgb2Zm
c2V0OiAwCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tp
cF9yb3dzJywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogNTQsCisgICAgICAgICAgICAgICAgaGVp
Z2h0OiA2MCwgc3ViWDogMTEsIHN1Ylk6IDcsIHN1Ylc6IDMxLCBzdWJIOiAzMCwKKyAgICAgICAg
ICAgICAgICByb3dMZW5ndGg6IDAsIHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAwLAorICAgICAg
ICAgICAgICAgIGFsaWdubWVudDogNCwgb2Zmc2V0OiAwCisgICAgICAgICAgICB9LCB7CisgICAg
ICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9waXhlbHMnLCBmb3JtYXQ6IGdsLlJHQjgsIHdp
ZHRoOiA1NCwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDYwLCBzdWJYOiAxMSwgc3ViWTogNywg
c3ViVzogMzEsIHN1Ykg6IDMwLAorICAgICAgICAgICAgICAgIHJvd0xlbmd0aDogMzYsIHNraXBS
b3dzOiAwLCBza2lwUGl4ZWxzOiA1LAorICAgICAgICAgICAgICAgIGFsaWdubWVudDogNCwgb2Zm
c2V0OiAwCisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgbmR4
ID0gMDsgbmR4IDwgcGFyYW1DYXNlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICBwYm9H
cm91cFBhcmFtcy5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UyREJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtQ2FzZXNbbmR4XS5uYW1lICsgJ18yZCcsICcnLAorICAgICAgICAgICAgICAgICAg
ICBwYXJhbUNhc2VzW25keF0uZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2Vz
W25keF0ud2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5oZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5zdWJYLAorICAgICAgICAgICAg
ICAgICAgICBwYXJhbUNhc2VzW25keF0uc3ViWSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1D
YXNlc1tuZHhdLnN1YlcsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5zdWJI
LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0ucm93TGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uc2tpcFJvd3MsCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtQ2FzZXNbbmR4XS5za2lwUGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICBwYXJh
bUNhc2VzW25keF0uYWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25k
eF0ub2Zmc2V0KSk7CisgICAgICAgICAgICBwYm9Hcm91cFBhcmFtcy5hZGRDaGlsZCgKKyAgICAg
ICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2VD
dWJlQnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLm5hbWUg
KyAnX2N1YmUnLCAnJywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLmZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLndpZHRoLAorICAgICAgICAg
ICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uc3ViWCwKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1DYXNlc1tuZHhdLnN1YlksCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5z
dWJXLAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uc3ViSCwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLnJvd0xlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1DYXNlc1tuZHhdLnNraXBSb3dzLAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNh
c2VzW25keF0uc2tpcFBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhd
LmFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLm9mZnNldAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBnbFRleFN1YkltYWdlMkQoKSBkZXB0aCBjYXNlcy4KKyAgICAgICAgc2hhZG93MmRHcm91cCA9
IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhzdWJpbWFnZTJkX2Rl
cHRoJywKKyAgICAgICAgICAgICdnbFRleFN1YkltYWdlMkQoKSB3aXRoIGRlcHRoIG9yIGRlcHRo
L3N0ZW5jaWwgZm9ybWF0JworICAgICAgICApOworICAgICAgICB0aGlzLmFkZENoaWxkKHNoYWRv
dzJkR3JvdXApOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGRlcHRoU3RlbmNp
bEZvcm1hdHMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgLy8gV2ViR0wgMiBzcGVjaWZp
YyBjb25zdHJhaW50LgorICAgICAgICAgICAgaWYgKGRlcHRoU3RlbmNpbEZvcm1hdHNbbmR4XS5p
bnRlcm5hbEZvcm1hdCA9PSBnbC5ERVBUSDMyRl9TVEVOQ0lMOCkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIHRleDJEV2lkdGggPSA2NDsKKyAgICAgICAgICAgIHRleDJE
SGVpZ2h0ID0gMzI7CisKKyAgICAgICAgICAgIHNoYWRvdzJkR3JvdXAuYWRkQ2hpbGQoCisgICAg
ICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleFN1YkltYWdl
MkREZXB0aENhc2UoCisgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdHNbbmR4
XS5uYW1lLCAnJywKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0c1tuZHhd
LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB0ZXgyRFdpZHRoLCB0ZXgyREhl
aWdodAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBCYXNpYyBnbENvcHlUZXhJbWFnZTJEKCkgY2FzZXMKKyAgICAgICAgLyoqIEB0eXBl
IHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIGNvcHlUZXhJbWFnZUdyb3Vw
ID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ2Jhc2ljX2NvcHl0ZXhp
bWFnZTJkJywgJ0Jhc2ljIGdsQ29weVRleEltYWdlMkQoKSB1c2FnZScKKyAgICAgICAgKTsKKyAg
ICAgICAgdGhpcy5hZGRDaGlsZChjb3B5VGV4SW1hZ2VHcm91cCk7CisKKyAgICAgICAgY29weVRl
eEltYWdlR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4SW1hZ2UyRENhc2UoCisgICAgICAgICAgICAgICAgJzJk
X2FscGhhJywgJycsIGdsLkFMUEhBLCAxMjgsIDY0CisgICAgICAgICAgICApCisgICAgICAgICk7
CisgICAgICAgIGNvcHlUZXhJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3IGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleEltYWdlMkRDYXNlKAorICAg
ICAgICAgICAgICAgICcyZF9sdW1pbmFuY2UnLCAnJywgZ2wuTFVNSU5BTkNFLCAxMjgsIDY0Cisg
ICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGNvcHlUZXhJbWFnZUdyb3VwLmFkZENo
aWxkKAorICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2lj
Q29weVRleEltYWdlMkRDYXNlKAorICAgICAgICAgICAgICAgICcyZF9sdW1pbmFuY2VfYWxwaGEn
LCAnJywgZ2wuTFVNSU5BTkNFX0FMUEhBLCAxMjgsIDY0CisgICAgICAgICAgICApCisgICAgICAg
ICk7CisgICAgICAgIGNvcHlUZXhJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3
IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleEltYWdlMkRDYXNlKAor
ICAgICAgICAgICAgICAgICcyZF9yZ2InLCAnJywgZ2wuUkdCLCAxMjgsIDY0CisgICAgICAgICAg
ICApCisgICAgICAgICk7CisgICAgICAgIGNvcHlUZXhJbWFnZUdyb3VwLmFkZENoaWxkKAorICAg
ICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleElt
YWdlMkRDYXNlKAorICAgICAgICAgICAgICAgICcyZF9yZ2JhJywgJycsIGdsLlJHQkEsIDEyOCwg
NjQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKworICAgICAgICBjb3B5VGV4SW1hZ2VHcm91
cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5CYXNpY0NvcHlUZXhJbWFnZUN1YmVDYXNlKAorICAgICAgICAgICAgICAgICdjdWJlX2FscGhh
JywgJycsIGdsLkFMUEhBLCA2NAorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBj
b3B5VGV4SW1hZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5CYXNpY0NvcHlUZXhJbWFnZUN1YmVDYXNlKAorICAgICAgICAgICAg
ICAgICdjdWJlX2x1bWluYW5jZScsICcnLCBnbC5MVU1JTkFOQ0UsIDY0CisgICAgICAgICAgICAp
CisgICAgICAgICk7CisgICAgICAgIGNvcHlUZXhJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAg
ICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleEltYWdl
Q3ViZUNhc2UoCisgICAgICAgICAgICAgICAgJ2N1YmVfbHVtaW5hbmNlX2FscGhhJywgJycsIGds
LkxVTUlOQU5DRV9BTFBIQSwgNjQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAg
Y29weVRleEltYWdlR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4SW1hZ2VDdWJlQ2FzZSgKKyAgICAgICAgICAg
ICAgICAnY3ViZV9yZ2InLCAnJywgZ2wuUkdCLCA2NAorICAgICAgICAgICAgKQorICAgICAgICAp
OworICAgICAgICBjb3B5VGV4SW1hZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIG5ldyBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY0NvcHlUZXhJbWFnZUN1YmVDYXNlKAor
ICAgICAgICAgICAgICAgICdjdWJlX3JnYmEnLCAnJywgZ2wuUkdCQSwgNjQKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKworICAgICAgICAvLyBCYXNpYyBnbENvcHlUZXhTdWJJbWFnZTJEKCkg
Y2FzZXMKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAg
ICAgdmFyIGNvcHlUZXhTdWJJbWFnZUdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAor
ICAgICAgICAgICAgJ2Jhc2ljX2NvcHl0ZXhzdWJpbWFnZTJkJywgJ0Jhc2ljIGdsQ29weVRleFN1
YkltYWdlMkQoKSB1c2FnZScKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChjb3B5
VGV4U3ViSW1hZ2VHcm91cCk7CisKKyAgICAgICAgY29weVRleFN1YkltYWdlR3JvdXAuYWRkQ2hp
bGQoCisgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWND
b3B5VGV4U3ViSW1hZ2UyRENhc2UoCisgICAgICAgICAgICAgICAgJzJkX2FscGhhJywgJycsIGds
LkFMUEhBLCBnbC5VTlNJR05FRF9CWVRFLCAxMjgsIDY0CisgICAgICAgICAgICApCisgICAgICAg
ICk7CisgICAgICAgIGNvcHlUZXhTdWJJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAg
bmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlMkRD
YXNlKAorICAgICAgICAgICAgICAgICcyZF9sdW1pbmFuY2UnLCAnJywgZ2wuTFVNSU5BTkNFLCBn
bC5VTlNJR05FRF9CWVRFLCAxMjgsIDY0CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAg
ICAgIGNvcHlUZXhTdWJJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3IGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlMkRDYXNlKAorICAg
ICAgICAgICAgICAgICcyZF9sdW1pbmFuY2VfYWxwaGEnLCAnJywgZ2wuTFVNSU5BTkNFX0FMUEhB
LCBnbC5VTlNJR05FRF9CWVRFLCAxMjgsIDY0CisgICAgICAgICAgICApCisgICAgICAgICk7Cisg
ICAgICAgIGNvcHlUZXhTdWJJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3IGVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlMkRDYXNlKAor
ICAgICAgICAgICAgICAgICcyZF9yZ2InLCAnJywgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCAx
MjgsIDY0CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGNvcHlUZXhTdWJJbWFn
ZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlMkRDYXNlKAorICAgICAgICAgICAgICAgICcyZF9y
Z2JhJywgJycsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIDEyOCwgNjQKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKworICAgICAgICBjb3B5VGV4U3ViSW1hZ2VHcm91cC5hZGRDaGlsZCgK
KyAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY0NvcHlU
ZXhTdWJJbWFnZUN1YmVDYXNlKAorICAgICAgICAgICAgICAgICdjdWJlX2FscGhhJywgJycsIGds
LkFMUEhBLCBnbC5VTlNJR05FRF9CWVRFLCA2NAorICAgICAgICAgICAgKQorICAgICAgICApOwor
ICAgICAgICBjb3B5VGV4U3ViSW1hZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgIG5ldyBl
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY0NvcHlUZXhTdWJJbWFnZUN1YmVDYXNl
KAorICAgICAgICAgICAgICAgICdjdWJlX2x1bWluYW5jZScsICcnLCBnbC5MVU1JTkFOQ0UsIGds
LlVOU0lHTkVEX0JZVEUsIDY0CisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIGNv
cHlUZXhTdWJJbWFnZUdyb3VwLmFkZENoaWxkKAorICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJl
U3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljQ29weVRleFN1YkltYWdlQ3ViZUNhc2UoCisgICAgICAg
ICAgICAgICAgJ2N1YmVfbHVtaW5hbmNlX2FscGhhJywgJycsIGdsLkxVTUlOQU5DRV9BTFBIQSwg
Z2wuVU5TSUdORURfQllURSwgNjQKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICAgICAg
Y29weVRleFN1YkltYWdlR3JvdXAuYWRkQ2hpbGQoCisgICAgICAgICAgICBuZXcgZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNDb3B5VGV4U3ViSW1hZ2VDdWJlQ2FzZSgKKyAgICAg
ICAgICAgICAgICAnY3ViZV9yZ2InLCAnJywgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLCA2NAor
ICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICBjb3B5VGV4U3ViSW1hZ2VHcm91cC5h
ZGRDaGlsZCgKKyAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5C
YXNpY0NvcHlUZXhTdWJJbWFnZUN1YmVDYXNlKAorICAgICAgICAgICAgICAgICdjdWJlX3JnYmEn
LCAnJywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgNjQKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKTsKKworICAgICAgICAvLyBCYXNpYyBUZXhJbWFnZTNEIHVzYWdlLgorICAgICAgICB2YXIg
c3BsaXRCYXNpY1RleDJEQXJyYXkgPSAzLCBzcGxpdEJhc2ljVGV4M0QgPSA1OworICAgICAgICAv
KiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLworICAgICAgICB2YXIg
YmFzaWNUZXhJbWFnZUdyb3VwMkRBcnJheSA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgc3BsaXRCYXNpY1RleDJEQXJyYXk7ICsraWkpIHsKKyAgICAgICAgICAgIGJhc2ljVGV4
SW1hZ2VHcm91cDJEQXJyYXkucHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGVzdENhc2Uu
RGVxcFRlc3QoJ2Jhc2ljX3RleGltYWdlM2QnLCAnQmFzaWMgZ2xUZXhJbWFnZTNEKCkgdXNhZ2Un
KQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoYmFzaWNUZXhJbWFn
ZUdyb3VwMkRBcnJheVtpaV0pOworICAgICAgICB9CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
e3RjdVRlc3RDYXNlLkRlcXBUZXN0fT59ICovCisgICAgICAgIHZhciBiYXNpY1RleEltYWdlR3Jv
dXAzRCA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRCYXNpY1RleDNE
OyArK2lpKSB7CisgICAgICAgICAgICBiYXNpY1RleEltYWdlR3JvdXAzRC5wdXNoKAorICAgICAg
ICAgICAgICAgIG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgnYmFzaWNfdGV4aW1hZ2UzZCcsICdC
YXNpYyBnbFRleEltYWdlM0QoKSB1c2FnZScpCisgICAgICAgICAgICApOworICAgICAgICAgICAg
dGhpcy5hZGRDaGlsZChiYXNpY1RleEltYWdlR3JvdXAzRFtpaV0pOworICAgICAgICB9CisgICAg
ICAgIGZvciAodmFyIGZvcm1hdE5keCA9IDA7IGZvcm1hdE5keCA8IGNvbG9yRm9ybWF0cy5sZW5n
dGg7IGZvcm1hdE5keCsrKSB7CisgICAgICAgICAgICBmbXROYW1lID0gY29sb3JGb3JtYXRzW2Zv
cm1hdE5keF0ubmFtZTsKKyAgICAgICAgICAgIGZvcm1hdCA9IGNvbG9yRm9ybWF0c1tmb3JtYXRO
ZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciB0ZXgyREFycmF5V2lkdGggPSA1NzsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdGV4MkRBcnJheUhlaWdodCA9IDQ0OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB0ZXgyREFycmF5TGV2ZWxzID0gNTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgdGV4M0RXaWR0aCA9IDYzOworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB0ZXgzREhlaWdodCA9IDI5OworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB0ZXgzRERlcHRoID0gMTE7CisKKyAgICAgICAgICAgIGJhc2ljVGV4SW1h
Z2VHcm91cDJEQXJyYXlbZm9ybWF0TmR4ICUgc3BsaXRCYXNpY1RleDJEQXJyYXldLmFkZENoaWxk
KAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNp
Y1RleEltYWdlMkRBcnJheUNhc2UoCisgICAgICAgICAgICAgICAgICAgIGZtdE5hbWUgKyAnXzJk
X2FycmF5JywgJycsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdGV4MkRBcnJheVdpZHRo
LCB0ZXgyREFycmF5SGVpZ2h0LCB0ZXgyREFycmF5TGV2ZWxzCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGJhc2ljVGV4SW1hZ2VHcm91cDNEW2Zvcm1hdE5k
eCAlIHNwbGl0QmFzaWNUZXgzRF0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4SW1hZ2UzRENhc2UoCisgICAgICAgICAg
ICAgICAgICAgIGZtdE5hbWUgKyAnXzNkJywgJycsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgdGV4M0RXaWR0aCwgdGV4M0RIZWlnaHQsIHRleDNERGVwdGgKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLy8gZ2xUZXhJbWFnZTNEKCkg
dW5wYWNrIHBhcmFtcyBjYXNlcy4KKyAgICAgICAgcGFyYW1Hcm91cCA9IG5ldyB0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhpbWFnZTNkX3VucGFja19wYXJhbXMnLCAnZ2xU
ZXhJbWFnZTNEKCkgdW5wYWNrIHBhcmFtZXRlcnMnCisgICAgICAgICk7CisgICAgICAgIHRoaXMu
YWRkQ2hpbGQocGFyYW1Hcm91cCk7CisKKyAgICAgICAgY2FzZXMgPSBbeworICAgICAgICAgICAg
ICAgIG5hbWU6ICdyZ2I4X2ltYWdlX2hlaWdodCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDIz
LAorICAgICAgICAgICAgICAgIGhlaWdodDogMTksIGRlcHRoOiA4LCBpbWFnZUhlaWdodDogMjYs
IHJvd0xlbmd0aDogMCwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAwLCBza2lwUm93czog
MCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9LCB7CisgICAgICAg
ICAgICAgICAgbmFtZTogJ3JnYjhfcm93X2xlbmd0aCcsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6
IDIzLAorICAgICAgICAgICAgICAgIGhlaWdodDogMTksIGRlcHRoOiA4LCBpbWFnZUhlaWdodDog
MCwgcm93TGVuZ3RoOiAyNywKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAwLCBza2lwUm93
czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9LCB7CisgICAg
ICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9pbWFnZXMnLCBmb3JtYXQ6IGdsLlJHQjgsIHdp
ZHRoOiAyMywKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE5LCBkZXB0aDogOCwgaW1hZ2VIZWln
aHQ6IDAsIHJvd0xlbmd0aDogMCwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAzLCBza2lw
Um93czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9yb3dzJywgZm9ybWF0OiBnbC5SR0I4LCB3
aWR0aDogMjMsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOSwgZGVwdGg6IDgsIGltYWdlSGVp
Z2h0OiAyMiwgcm93TGVuZ3RoOiAwLAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6IDAsIHNr
aXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAwLCBhbGlnbm1lbnQ6IDQKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiOF9za2lwX3BpeGVscycsIGZvcm1hdDogZ2wuUkdC
OCwgd2lkdGg6IDIzLAorICAgICAgICAgICAgICAgIGhlaWdodDogMTksIGRlcHRoOiA4LCBpbWFn
ZUhlaWdodDogMCwgcm93TGVuZ3RoOiAyNSwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAw
LCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMiwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4X2NvbXBsZXgxJywgZm9ybWF0OiBnbC5SOCwg
d2lkdGg6IDEzLAorICAgICAgICAgICAgICAgIGhlaWdodDogMTcsIGRlcHRoOiAxMSwgaW1hZ2VI
ZWlnaHQ6IDIzLCByb3dMZW5ndGg6IDE1LAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6IDIs
IHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAxLCBhbGlnbm1lbnQ6IDEKKyAgICAgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncjhfY29tcGxleDInLCBmb3JtYXQ6IGdsLlI4LCB3
aWR0aDogMTMsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNywgZGVwdGg6IDExLCBpbWFnZUhl
aWdodDogMjMsIHJvd0xlbmd0aDogMTUsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMiwg
c2tpcFJvd3M6IDMsIHNraXBQaXhlbHM6IDEsIGFsaWdubWVudDogMgorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyOF9jb21wbGV4MycsIGZvcm1hdDogZ2wuUjgsIHdp
ZHRoOiAxMywKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE3LCBkZXB0aDogMTEsIGltYWdlSGVp
Z2h0OiAyMywgcm93TGVuZ3RoOiAxNSwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAyLCBz
a2lwUm93czogMywgc2tpcFBpeGVsczogMSwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9LCB7
CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4X2NvbXBsZXg0JywgZm9ybWF0OiBnbC5SOCwgd2lk
dGg6IDEzLAorICAgICAgICAgICAgICAgIGhlaWdodDogMTcsIGRlcHRoOiAxMSwgaW1hZ2VIZWln
aHQ6IDIzLCByb3dMZW5ndGg6IDE1LAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6IDIsIHNr
aXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAxLCBhbGlnbm1lbnQ6IDgKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThfY29tcGxleDEnLCBmb3JtYXQ6IGdsLlJHQkE4
LCB3aWR0aDogMTEsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMCwgZGVwdGg6IDgsIGltYWdl
SGVpZ2h0OiAyNSwgcm93TGVuZ3RoOiAxNCwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAw
LCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA4CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmE4X2NvbXBsZXgyJywgZm9ybWF0OiBnbC5S
R0JBOCwgd2lkdGg6IDExLAorICAgICAgICAgICAgICAgIGhlaWdodDogMjAsIGRlcHRoOiA4LCBp
bWFnZUhlaWdodDogMjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAgICAgICAgICAgc2tpcEltYWdl
czogMCwgc2tpcFJvd3M6IDIsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogOAorICAgICAgICAg
ICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhOF9jb21wbGV4MycsIGZvcm1hdDog
Z2wuUkdCQTgsIHdpZHRoOiAxMSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwLCBkZXB0aDog
OCwgaW1hZ2VIZWlnaHQ6IDI1LCByb3dMZW5ndGg6IDE0LAorICAgICAgICAgICAgICAgIHNraXBJ
bWFnZXM6IDAsIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAzLCBhbGlnbm1lbnQ6IDgKKyAgICAg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiYThfY29tcGxleDQnLCBmb3Jt
YXQ6IGdsLlJHQkE4LCB3aWR0aDogMTEsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMCwgZGVw
dGg6IDgsIGltYWdlSGVpZ2h0OiAyNSwgcm93TGVuZ3RoOiAxNCwKKyAgICAgICAgICAgICAgICBz
a2lwSW1hZ2VzOiAwLCBza2lwUm93czogMiwgc2tpcFBpeGVsczogMywgYWxpZ25tZW50OiA4Cisg
ICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYmEzMmZfY29tcGxleCcs
IGZvcm1hdDogZ2wuUkdCQTMyRiwgd2lkdGg6IDExLAorICAgICAgICAgICAgICAgIGhlaWdodDog
MjAsIGRlcHRoOiA4LCBpbWFnZUhlaWdodDogMjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAgICAg
ICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDIsIHNraXBQaXhlbHM6IDMsIGFsaWdubWVu
dDogOAorICAgICAgICAgICAgIH0KKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBjYXNlcy5sZW5ndGg7IG5keCsrKQorICAgICAgICAgICAgcGFyYW1Hcm91cC5h
ZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMuVGV4SW1hZ2UzRFBhcmFtc0Nhc2UoCisgICAgICAgICAgICAgICAgICAgIGNhc2VzW25keF0u
bmFtZSwgJycsIGNhc2VzW25keF0uZm9ybWF0LCBjYXNlc1tuZHhdLndpZHRoLAorICAgICAgICAg
ICAgICAgICAgICBjYXNlc1tuZHhdLmhlaWdodCwgY2FzZXNbbmR4XS5kZXB0aCwgY2FzZXNbbmR4
XS5pbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgY2FzZXNbbmR4XS5yb3dMZW5ndGgs
IGNhc2VzW25keF0uc2tpcEltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgY2FzZXNbbmR4XS5z
a2lwUm93cywgY2FzZXNbbmR4XS5za2lwUGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICBjYXNl
c1tuZHhdLmFsaWdubWVudAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisKKyAg
ICAgICAgLy8gZ2xUZXhJbWFnZTNEKCkgcGJvIGNhc2VzLgorICAgICAgICB2YXIgc3BsaXRUZXgy
REFycmF5ID0gMiwgc3BsaXRUZXgzRCA9IDI7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8e3Rj
dVRlc3RDYXNlLkRlcXBUZXN0fT59ICovIHZhciBwYm9Hcm91cDJEQXJyYXkgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNwbGl0VGV4MkRBcnJheTsgKytpaSkgeworICAgICAg
ICAgICAgcGJvR3JvdXAyREFycmF5LnB1c2goCisgICAgICAgICAgICAgICAgbmV3IHRjdVRlc3RD
YXNlLkRlcXBUZXN0KCd0ZXhpbWFnZTNkX3BibycsICdnbFRleEltYWdlM0QoKSBmcm9tIFBCTycp
CisgICAgICAgICAgICApOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChwYm9Hcm91cDJEQXJy
YXlbaWldKTsKKyAgICAgICAgfQorICAgICAgICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0+fSAqLyB2YXIgcGJvR3JvdXAzRCA9IFtdOworICAgICAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgc3BsaXRUZXgzRDsgKytpaSkgeworICAgICAgICAgICAgcGJvR3JvdXAzRC5w
dXNoKAorICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgndGV4aW1hZ2Uz
ZF9wYm8nLCAnZ2xUZXhJbWFnZTNEKCkgZnJvbSBQQk8nKQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIHRoaXMuYWRkQ2hpbGQocGJvR3JvdXAzRFtpaV0pOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh2YXIgZm9ybWF0TmR4ID0gMDsgZm9ybWF0TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0
aDsgZm9ybWF0TmR4KyspIHsKKyAgICAgICAgICAgIGZtdE5hbWUgPSBjb2xvckZvcm1hdHNbZm9y
bWF0TmR4XS5uYW1lOworICAgICAgICAgICAgZm9ybWF0ID0gY29sb3JGb3JtYXRzW2Zvcm1hdE5k
eF0uaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICB0ZXgzRFdpZHRoID0gMTE7CisgICAgICAg
ICAgICB0ZXgzREhlaWdodCA9IDIwOworICAgICAgICAgICAgdGV4M0REZXB0aCA9IDg7CisKKyAg
ICAgICAgICAgIHBib0dyb3VwMkRBcnJheVtmb3JtYXROZHggJSBzcGxpdFRleDJEQXJyYXldLmFk
ZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5UZXhJbWFnZTJEQXJyYXlCdWZmZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICBmbXROYW1l
ICsgJ18yZF9hcnJheScsICcnLCBmb3JtYXQsIHRleDNEV2lkdGgsIHRleDNESGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICB0ZXgzRERlcHRoLCAwLCAwLCAwLCAwLCAwLCA0LCAwCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHBib0dyb3VwM0RbZm9ybWF0
TmR4ICUgc3BsaXRUZXgzRF0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRleEltYWdlM0RCdWZmZXJDYXNlKAorICAgICAgICAgICAg
ICAgICAgICBmbXROYW1lICsgJ18zZCcsICcnLCBmb3JtYXQsIHRleDNEV2lkdGgsIHRleDNESGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICB0ZXgzRERlcHRoLCAwLCAwLCAwLCAwLCAwLCA0LCAw
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFBhcmFtZXRlciBjYXNlcworICAgICAgICBwYXJhbWV0ZXJDYXNlcyA9IFt7CisgICAgICAg
ICAgICAgICAgbmFtZTogJ3JnYjhfb2Zmc2V0JywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjMs
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOSwgZGVwdGg6IDgsIGltYWdlSGVpZ2h0OiAwLCBy
b3dMZW5ndGg6IDAsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDAs
IHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogMSwKKyAgICAgICAgICAgICAgICBvZmZzZXQ6IDY3
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfYWxpZ25tZW50
JywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjMsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAx
OSwgZGVwdGg6IDgsIGltYWdlSGVpZ2h0OiAwLCByb3dMZW5ndGg6IDAsCisgICAgICAgICAgICAg
ICAgc2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDog
MiwKKyAgICAgICAgICAgICAgICBvZmZzZXQ6IDAKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAncmdiOF9pbWFnZV9oZWlnaHQnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRo
OiAyMywKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE5LCBkZXB0aDogOCwgaW1hZ2VIZWlnaHQ6
IDI2LCByb3dMZW5ndGg6IDAsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJv
d3M6IDAsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogNCwKKyAgICAgICAgICAgICAgICBvZmZz
ZXQ6IDAKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiOF9yb3df
bGVuZ3RoJywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjMsCisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAxOSwgZGVwdGg6IDgsIGltYWdlSGVpZ2h0OiAwLCByb3dMZW5ndGg6IDI3LAorICAgICAg
ICAgICAgICAgIHNraXBJbWFnZXM6IDAsIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAwLCBhbGln
bm1lbnQ6IDQsCisgICAgICAgICAgICAgICAgb2Zmc2V0OiAwCisgICAgICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9pbWFnZXMnLCBmb3JtYXQ6IGdsLlJHQjgs
IHdpZHRoOiAyMywKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE5LCBkZXB0aDogOCwgaW1hZ2VI
ZWlnaHQ6IDAsIHJvd0xlbmd0aDogMCwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAzLCBz
a2lwUm93czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA0LAorICAgICAgICAgICAgICAg
IG9mZnNldDogMAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4
X3NraXBfcm93cycsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDIzLAorICAgICAgICAgICAgICAg
IGhlaWdodDogMTksIGRlcHRoOiA4LCBpbWFnZUhlaWdodDogMjIsIHJvd0xlbmd0aDogMCwKKyAg
ICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAwLCBza2lwUm93czogMywgc2tpcFBpeGVsczogMCwg
YWxpZ25tZW50OiA0LAorICAgICAgICAgICAgICAgIG9mZnNldDogMAorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X3NraXBfcGl4ZWxzJywgZm9ybWF0OiBnbC5S
R0I4LCB3aWR0aDogMjMsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOSwgZGVwdGg6IDgsIGlt
YWdlSGVpZ2h0OiAwLCByb3dMZW5ndGg6IDI1LAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6
IDAsIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAyLCBhbGlnbm1lbnQ6IDQsCisgICAgICAgICAg
ICAgICAgb2Zmc2V0OiAwCisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgcGJv
R3JvdXBQYXJhbXMgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ3RleGltYWdlM2RfcGJvJywg
J2dsVGV4SW1hZ2UzRCgpIGZyb20gUEJPJyk7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQocGJvR3Jv
dXBQYXJhbXMpOworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBwYXJhbWV0ZXJDYXNl
cy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICBwYm9Hcm91cFBhcmFtcy5hZGRDaGlsZCgK
KyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1h
Z2UyREFycmF5QnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNb
bmR4XS5uYW1lICsgJ18yZF9hcnJheScsICcnLAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0
ZXJDYXNlc1tuZHhdLmZvcm1hdCwgcGFyYW1ldGVyQ2FzZXNbbmR4XS53aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5oZWlnaHQsIHBhcmFtZXRlckNhc2VzW25k
eF0uZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uaW1hZ2VI
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0ucm93TGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDYXNlc1tuZHhdLnNraXBJbWFnZXMsCisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uc2tpcFJvd3MsCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uc2tpcFBpeGVscywKKyAgICAgICAgICAg
ICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5hbGlnbm1lbnQsIHBhcmFtZXRlckNhc2VzW25k
eF0ub2Zmc2V0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IHBib0dyb3VwUGFyYW1zLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5UZXhJbWFnZTNEQnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5uYW1lICsgJ18zZCcsICcnLAorICAgICAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJDYXNlc1tuZHhdLmZvcm1hdCwgcGFyYW1ldGVyQ2FzZXNbbmR4XS53
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5oZWlnaHQsIHBh
cmFtZXRlckNhc2VzW25keF0uZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNh
c2VzW25keF0uaW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2Vz
W25keF0ucm93TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDYXNlc1tuZHhd
LnNraXBJbWFnZXMsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uc2tp
cFJvd3MsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNhc2VzW25keF0uc2tpcFBpeGVs
cywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQ2FzZXNbbmR4XS5hbGlnbm1lbnQsIHBh
cmFtZXRlckNhc2VzW25keF0ub2Zmc2V0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdsVGV4SW1hZ2UzRCgpIGRlcHRoIGNhc2VzLgor
ICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIg
c2hhZG93M2RHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0
ZXhpbWFnZTNkX2RlcHRoJywKKyAgICAgICAgICAgICdnbFRleEltYWdlM0QoKSB3aXRoIGRlcHRo
IG9yIGRlcHRoL3N0ZW5jaWwgZm9ybWF0JworICAgICAgICApOworICAgICAgICB0aGlzLmFkZENo
aWxkKHNoYWRvdzNkR3JvdXApOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IGRl
cHRoU3RlbmNpbEZvcm1hdHMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgLy8gV2ViR0wg
MiBzcGVjaWZpYyBjb25zdHJhaW50LgorICAgICAgICAgICAgaWYgKGRlcHRoU3RlbmNpbEZvcm1h
dHNbbmR4XS5pbnRlcm5hbEZvcm1hdCA9PSBnbC5ERVBUSDMyRl9TVEVOQ0lMOCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRleDNEV2lkdGggPSAzMjsKKyAgICAgICAg
ICAgIHRleDNESGVpZ2h0ID0gNjQ7CisgICAgICAgICAgICB0ZXgzRERlcHRoID0gODsKKworICAg
ICAgICAgICAgc2hhZG93M2RHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4SW1hZ2UyREFycmF5RGVwdGhDYXNlKAorICAg
ICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxGb3JtYXRzW25keF0ubmFtZSArICdfMmRfYXJy
YXknLCAnJywKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0c1tuZHhdLmlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICB0ZXgzRFdpZHRoLCB0ZXgzREhlaWdo
dCwgdGV4M0REZXB0aAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBnbFRleEltYWdlM0QoKSBkZXB0aCBjYXNlcyB3aXRoIHBiby4KKyAg
ICAgICAgc2hhZG93M2RHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAg
ICAgICd0ZXhpbWFnZTNkX2RlcHRoX3BibycsCisgICAgICAgICAgICAnZ2xUZXhJbWFnZTNEKCkg
d2l0aCBkZXB0aCBvciBkZXB0aC9zdGVuY2lsIGZvcm1hdCB3aXRoIHBibycKKyAgICAgICAgKTsK
KyAgICAgICAgdGhpcy5hZGRDaGlsZChzaGFkb3czZEdyb3VwKTsKKworICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCBkZXB0aFN0ZW5jaWxGb3JtYXRzLmxlbmd0aDsgbmR4KyspIHsKKyAg
ICAgICAgICAgIHRleDNEV2lkdGggPSAzMjsKKyAgICAgICAgICAgIHRleDNESGVpZ2h0ID0gNjQ7
CisgICAgICAgICAgICB0ZXgzRERlcHRoID0gODsKKworICAgICAgICAgICAgc2hhZG93M2RHcm91
cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuVGV4SW1hZ2UyREFycmF5RGVwdGhCdWZmZXJDYXNlKAorICAgICAgICAgICAgICAgICAg
ICBkZXB0aFN0ZW5jaWxGb3JtYXRzW25keF0ubmFtZSArICdfMmRfYXJyYXknLCAnJywKKyAgICAg
ICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0c1tuZHhdLmludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICB0ZXgzRFdpZHRoLCB0ZXgzREhlaWdodCwgdGV4M0REZXB0aAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBCYXNpYyBUZXhTdWJJbWFnZTNEIHVzYWdlLgorICAgICAgICBzcGxpdFRleDNEID0gNTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTx7dGN1VGVzdENhc2UuRGVxcFRlc3R9Pn0gKi8gdmFyIGJh
c2ljVGV4U3ViSW1hZ2VHcm91cCA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
c3BsaXRUZXgzRDsgKytpaSkgeworICAgICAgICAgICAgYmFzaWNUZXhTdWJJbWFnZUdyb3VwLnB1
c2goCisgICAgICAgICAgICAgICAgbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCdiYXNpY190ZXhz
dWJpbWFnZTNkJywgJ0Jhc2ljIGdsVGV4U3ViSW1hZ2UzRCgpIHVzYWdlJykKKyAgICAgICAgICAg
ICk7CisgICAgICAgICAgICB0aGlzLmFkZENoaWxkKGJhc2ljVGV4U3ViSW1hZ2VHcm91cFtpaV0p
OworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgZm9ybWF0TmR4ID0gMDsgZm9ybWF0TmR4
IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgZm9ybWF0TmR4KyspIHsKKyAgICAgICAgICAgIGZtdE5h
bWUgPSBjb2xvckZvcm1hdHNbZm9ybWF0TmR4XS5uYW1lOworICAgICAgICAgICAgZm9ybWF0ID0g
Y29sb3JGb3JtYXRzW2Zvcm1hdE5keF0uaW50ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICB0ZXgz
RFdpZHRoID0gMzI7CisgICAgICAgICAgICB0ZXgzREhlaWdodCA9IDY0OworICAgICAgICAgICAg
dGV4M0REZXB0aCA9IDg7CisKKyAgICAgICAgICAgIGJhc2ljVGV4U3ViSW1hZ2VHcm91cFtmb3Jt
YXROZHggJSBzcGxpdFRleDNEXS5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdWJJbWFnZTNEQ2FzZSgKKyAgICAgICAg
ICAgICAgICAgICAgZm10TmFtZSArICdfM2QnLCAnJywgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICB0ZXgzRFdpZHRoLCB0ZXgzREhlaWdodCwgdGV4M0REZXB0aAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBnbFRleFN1YkltYWdl
M0QoKSB1bnBhY2sgcGFyYW1zIGNhc2VzLgorICAgICAgICBwYXJhbUdyb3VwID0gbmV3IHRjdVRl
c3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ3RleHN1YmltYWdlM2RfdW5wYWNrX3BhcmFt
cycsICdnbFRleFN1YkltYWdlM0QoKSB1bnBhY2sgcGFyYW1ldGVycycKKyAgICAgICAgKTsKKyAg
ICAgICAgdGhpcy5hZGRDaGlsZChwYXJhbUdyb3VwKTsKKworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PHtuYW1lOiBzdHJpbmcsIGZvcm1hdDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLAorICAgICAg
ICAgKiBoZWlnaHQ6IG51bWJlciwgZGVwdGg6IG51bWJlciwgc3ViWDogbnVtYmVyLCBzdWJZOiBu
dW1iZXIsCisgICAgICAgICAqIHN1Ylo6IG51bWJlciwgc3ViVzogbnVtYmVyLCBzdWJIOiBudW1i
ZXIsIHN1YkQ6IG51bWJlciwKKyAgICAgICAgICogaW1hZ2VIZWlnaHQ6IG51bWJlciwgcm93TGVu
Z3RoOiBudW1iZXIsIHNraXBJbWFnZXM6IG51bWJlciwKKyAgICAgICAgICogc2tpcFJvd3M6IG51
bWJlciwgc2tpcFBpeGVsczogbnVtYmVyLCBhbGlnbm1lbnQ6IG51bWJlcn0+fQorICAgICAgICAg
Ki8KKyAgICAgICAgdmFyIGNhc2VzU3ViSW1hZ2UzRCA9IFt7CisgICAgICAgICAgICAgICAgbmFt
ZTogJ3JnYjhfaW1hZ2VfaGVpZ2h0JywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjYsCisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAyNSwgZGVwdGg6IDEwLCBzdWJYOiAxLCBzdWJZOiAyLCBzdWJa
OiAxLCBzdWJXOiAyMywKKyAgICAgICAgICAgICAgICBzdWJIOiAxOSwgc3ViRDogOCwgaW1hZ2VI
ZWlnaHQ6IDI2LCByb3dMZW5ndGg6IDAsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwg
c2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogNAorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X3Jvd19sZW5ndGgnLCBmb3JtYXQ6IGdsLlJH
QjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1
Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6IDIzLAorICAgICAgICAgICAgICAgIHN1Ykg6
IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMCwgcm93TGVuZ3RoOiAyNywKKyAgICAgICAgICAg
ICAgICBza2lwSW1hZ2VzOiAwLCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50
OiA0CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9p
bWFnZXMnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6IDIzLAor
ICAgICAgICAgICAgICAgIHN1Ykg6IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMCwgcm93TGVu
Z3RoOiAwLAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6IDMsIHNraXBSb3dzOiAwLCBza2lw
UGl4ZWxzOiAwLCBhbGlnbm1lbnQ6IDQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAg
ICBuYW1lOiAncmdiOF9za2lwX3Jvd3MnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAyNiwKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDEsIHN1Ylk6IDIsIHN1
Ylo6IDEsIHN1Ylc6IDIzLAorICAgICAgICAgICAgICAgIHN1Ykg6IDE5LCBzdWJEOiA4LCBpbWFn
ZUhlaWdodDogMjIsIHJvd0xlbmd0aDogMCwKKyAgICAgICAgICAgICAgICBza2lwSW1hZ2VzOiAw
LCBza2lwUm93czogMywgc2tpcFBpeGVsczogMCwgYWxpZ25tZW50OiA0CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9waXhlbHMnLCBmb3JtYXQ6IGds
LlJHQjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAs
IHN1Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6IDIzLAorICAgICAgICAgICAgICAgIHN1
Ykg6IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMCwgcm93TGVuZ3RoOiAyNSwKKyAgICAgICAg
ICAgICAgICBza2lwSW1hZ2VzOiAwLCBza2lwUm93czogMCwgc2tpcFBpeGVsczogMiwgYWxpZ25t
ZW50OiA0CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4X2NvbXBs
ZXgxJywgZm9ybWF0OiBnbC5SOCwgd2lkdGg6IDE1LAorICAgICAgICAgICAgICAgIGhlaWdodDog
MjAsIGRlcHRoOiAxMSwgc3ViWDogMSwgc3ViWTogMSwgc3ViWjogMCwgc3ViVzogMTMsCisgICAg
ICAgICAgICAgICAgc3ViSDogMTcsIHN1YkQ6IDExLCBpbWFnZUhlaWdodDogMjMsIHJvd0xlbmd0
aDogMTUsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMiwgc2tpcFJvd3M6IDMsIHNraXBQ
aXhlbHM6IDEsIGFsaWdubWVudDogMQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAg
IG5hbWU6ICdyOF9jb21wbGV4MicsIGZvcm1hdDogZ2wuUjgsIHdpZHRoOiAxNSwKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDIwLCBkZXB0aDogMTEsIHN1Ylg6IDEsIHN1Ylk6IDEsIHN1Ylo6IDAs
IHN1Ylc6IDEzLAorICAgICAgICAgICAgICAgIHN1Ykg6IDE3LCBzdWJEOiAxMSwgaW1hZ2VIZWln
aHQ6IDIzLCByb3dMZW5ndGg6IDE1LAorICAgICAgICAgICAgICAgIHNraXBJbWFnZXM6IDIsIHNr
aXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAxLCBhbGlnbm1lbnQ6IDIKKyAgICAgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICAgICBuYW1lOiAncjhfY29tcGxleDMnLCBmb3JtYXQ6IGdsLlI4LCB3aWR0
aDogMTUsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMCwgZGVwdGg6IDExLCBzdWJYOiAxLCBz
dWJZOiAxLCBzdWJaOiAwLCBzdWJXOiAxMywKKyAgICAgICAgICAgICAgICBzdWJIOiAxNywgc3Vi
RDogMTEsIGltYWdlSGVpZ2h0OiAyMywgcm93TGVuZ3RoOiAxNSwKKyAgICAgICAgICAgICAgICBz
a2lwSW1hZ2VzOiAyLCBza2lwUm93czogMywgc2tpcFBpeGVsczogMSwgYWxpZ25tZW50OiA0Cisg
ICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3I4X2NvbXBsZXg0JywgZm9y
bWF0OiBnbC5SOCwgd2lkdGg6IDE1LAorICAgICAgICAgICAgICAgIGhlaWdodDogMjAsIGRlcHRo
OiAxMSwgc3ViWDogMSwgc3ViWTogMSwgc3ViWjogMCwgc3ViVzogMTMsCisgICAgICAgICAgICAg
ICAgc3ViSDogMTcsIHN1YkQ6IDExLCBpbWFnZUhlaWdodDogMjMsIHJvd0xlbmd0aDogMTUsCisg
ICAgICAgICAgICAgICAgc2tpcEltYWdlczogMiwgc2tpcFJvd3M6IDMsIHNraXBQaXhlbHM6IDEs
IGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdy
Z2JhOF9jb21wbGV4MScsIGZvcm1hdDogZ2wuUkdCQTgsIHdpZHRoOiAxNSwKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDAsIHN1Ylk6IDUsIHN1Ylo6IDEsIHN1
Ylc6IDExLAorICAgICAgICAgICAgICAgIHN1Ykg6IDIwLCBzdWJEOiA4LCBpbWFnZUhlaWdodDog
MjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJv
d3M6IDAsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwgeworICAg
ICAgICAgICAgICAgIG5hbWU6ICdyZ2JhOF9jb21wbGV4MicsIGZvcm1hdDogZ2wuUkdCQTgsIHdp
ZHRoOiAxNSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDAs
IHN1Ylk6IDUsIHN1Ylo6IDEsIHN1Ylc6IDExLAorICAgICAgICAgICAgICAgIHN1Ykg6IDIwLCBz
dWJEOiA4LCBpbWFnZUhlaWdodDogMjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAgICAgICAgICAg
c2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDIsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogOAor
ICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhOF9jb21wbGV4Mycs
IGZvcm1hdDogZ2wuUkdCQTgsIHdpZHRoOiAxNSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1
LCBkZXB0aDogMTAsIHN1Ylg6IDAsIHN1Ylk6IDUsIHN1Ylo6IDEsIHN1Ylc6IDExLAorICAgICAg
ICAgICAgICAgIHN1Ykg6IDIwLCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMjUsIHJvd0xlbmd0aDog
MTQsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDAsIHNraXBQaXhl
bHM6IDMsIGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5h
bWU6ICdyZ2JhOF9jb21wbGV4NCcsIGZvcm1hdDogZ2wuUkdCQTgsIHdpZHRoOiAxNSwKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDAsIHN1Ylk6IDUsIHN1Ylo6
IDEsIHN1Ylc6IDExLAorICAgICAgICAgICAgICAgIHN1Ykg6IDIwLCBzdWJEOiA4LCBpbWFnZUhl
aWdodDogMjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAgICAgICAgICAgc2tpcEltYWdlczogMCwg
c2tpcFJvd3M6IDIsIHNraXBQaXhlbHM6IDMsIGFsaWdubWVudDogOAorICAgICAgICAgICAgfSwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2JhMzJmX2NvbXBsZXgnLCBmb3JtYXQ6IGdsLlJH
QkEzMkYsIHdpZHRoOiAxNSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAs
IHN1Ylg6IDAsIHN1Ylk6IDUsIHN1Ylo6IDEsIHN1Ylc6IDExLAorICAgICAgICAgICAgICAgIHN1
Ykg6IDIwLCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMjUsIHJvd0xlbmd0aDogMTQsCisgICAgICAg
ICAgICAgICAgc2tpcEltYWdlczogMCwgc2tpcFJvd3M6IDIsIHNraXBQaXhlbHM6IDMsIGFsaWdu
bWVudDogOAorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IGNhc2VzU3ViSW1hZ2UzRC5sZW5ndGg7IG5keCsrKQorICAgICAgICAgICAg
cGFyYW1Hcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1hZ2UzRFBhcmFtc0Nhc2UoCisgICAgICAgICAgICAgICAg
ICAgIGNhc2VzU3ViSW1hZ2UzRFtuZHhdLm5hbWUsICcnLCBjYXNlc1N1YkltYWdlM0RbbmR4XS5m
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGNhc2VzU3ViSW1hZ2UzRFtuZHhdLndpZHRoLCBj
YXNlc1N1YkltYWdlM0RbbmR4XS5oZWlnaHQsIGNhc2VzU3ViSW1hZ2UzRFtuZHhdLmRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICBjYXNlc1N1YkltYWdlM0RbbmR4XS5zdWJYLCBjYXNlc1N1Yklt
YWdlM0RbbmR4XS5zdWJZLCBjYXNlc1N1YkltYWdlM0RbbmR4XS5zdWJaLAorICAgICAgICAgICAg
ICAgICAgICBjYXNlc1N1YkltYWdlM0RbbmR4XS5zdWJXLCBjYXNlc1N1YkltYWdlM0RbbmR4XS5z
dWJILCBjYXNlc1N1YkltYWdlM0RbbmR4XS5zdWJELAorICAgICAgICAgICAgICAgICAgICBjYXNl
c1N1YkltYWdlM0RbbmR4XS5pbWFnZUhlaWdodCwgY2FzZXNTdWJJbWFnZTNEW25keF0ucm93TGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICBjYXNlc1N1YkltYWdlM0RbbmR4XS5za2lwSW1hZ2Vz
LCBjYXNlc1N1YkltYWdlM0RbbmR4XS5za2lwUm93cywKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZXNTdWJJbWFnZTNEW25keF0uc2tpcFBpeGVscywgY2FzZXNTdWJJbWFnZTNEW25keF0uYWxpZ25t
ZW50CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKworICAgICAgICAvLyBnbFRl
eFN1YkltYWdlM0QoKSBQQk8gY2FzZXMuCisgICAgICAgIHNwbGl0VGV4MkRBcnJheSA9IDI7Cisg
ICAgICAgIHBib0dyb3VwMkRBcnJheSA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlp
IDwgc3BsaXRUZXgyREFycmF5OyArK2lpKSB7CisgICAgICAgICAgICBwYm9Hcm91cDJEQXJyYXku
cHVzaCgKKyAgICAgICAgICAgICAgICBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ3RleHN1Ymlt
YWdlM2RfcGJvJywgJ2dsVGV4U3ViSW1hZ2UzRCgpIHBpeGVsIGJ1ZmZlciBvYmplY3QgdGVzdHMn
KQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQocGJvR3JvdXAyREFy
cmF5W2lpXSk7CisgICAgICAgIH0KKworICAgICAgICBzcGxpdFRleDNEID0gMjsKKyAgICAgICAg
cGJvR3JvdXAzRCA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRUZXgz
RDsgKytpaSkgeworICAgICAgICAgICAgcGJvR3JvdXAzRC5wdXNoKAorICAgICAgICAgICAgICAg
IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgndGV4c3ViaW1hZ2UzZF9wYm8nLCAnZ2xUZXhTdWJJ
bWFnZTNEKCkgcGl4ZWwgYnVmZmVyIG9iamVjdCB0ZXN0cycpCisgICAgICAgICAgICApOworICAg
ICAgICAgICAgdGhpcy5hZGRDaGlsZChwYm9Hcm91cDNEW2lpXSk7CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBjb2xvckZvcm1hdHMubGVuZ3RoOyBuZHgrKykg
eworICAgICAgICAgICAgcGJvR3JvdXAyREFycmF5W25keCAlIHNwbGl0VGV4MkRBcnJheV0uYWRk
Q2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LlRleFN1YkltYWdlMkRBcnJheUJ1ZmZlckNhc2UoCisgICAgICAgICAgICAgICAgICAgIGNvbG9y
Rm9ybWF0c1tuZHhdLm5hbWUgKyAnXzJkX2FycmF5JywgJycsCisgICAgICAgICAgICAgICAgICAg
IGNvbG9yRm9ybWF0c1tuZHhdLmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAy
NiwgLy8gV2lkdGgKKyAgICAgICAgICAgICAgICAgICAgMjUsIC8vIEhlaWdodAorICAgICAgICAg
ICAgICAgICAgICAxMCwgLy8gRGVwdGgKKyAgICAgICAgICAgICAgICAgICAgMSwgLy8gU3ViIFgK
KyAgICAgICAgICAgICAgICAgICAgMiwgLy8gU3ViIFkKKyAgICAgICAgICAgICAgICAgICAgMCwg
Ly8gU3ViIFoKKyAgICAgICAgICAgICAgICAgICAgMjMsIC8vIFN1YiBXCisgICAgICAgICAgICAg
ICAgICAgIDE5LCAvLyBTdWIgSAorICAgICAgICAgICAgICAgICAgICA4LCAvLyBTdWIgRAorICAg
ICAgICAgICAgICAgICAgICAwLCAvLyBJbWFnZSBoZWlnaHQKKyAgICAgICAgICAgICAgICAgICAg
MCwgLy8gUm93IGxlbmd0aAorICAgICAgICAgICAgICAgICAgICAwLCAvLyBTa2lwIGltYWdlcwor
ICAgICAgICAgICAgICAgICAgICAwLCAvLyBTa2lwIHJvd3MKKyAgICAgICAgICAgICAgICAgICAg
MCwgLy8gU2tpcCBwaXhlbHMKKyAgICAgICAgICAgICAgICAgICAgNCwgLy8gQWxpZ25tZW50Cisg
ICAgICAgICAgICAgICAgICAgIDAgLy8gb2Zmc2V0CisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHBib0dyb3VwM0RbbmR4ICUgc3BsaXRUZXgzRF0uYWRkQ2hp
bGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLlRl
eFN1YkltYWdlM0RCdWZmZXJDYXNlKAorICAgICAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHNb
bmR4XS5uYW1lICsgJ18zZCcsICcnLAorICAgICAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHNb
bmR4XS5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgMjYsIC8vIFdpZHRoCisg
ICAgICAgICAgICAgICAgICAgIDI1LCAvLyBIZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgMTAs
IC8vIERlcHRoCisgICAgICAgICAgICAgICAgICAgIDEsIC8vIFN1YiBYCisgICAgICAgICAgICAg
ICAgICAgIDIsIC8vIFN1YiBZCisgICAgICAgICAgICAgICAgICAgIDAsIC8vIFN1YiBaCisgICAg
ICAgICAgICAgICAgICAgIDIzLCAvLyBTdWIgVworICAgICAgICAgICAgICAgICAgICAxOSwgLy8g
U3ViIEgKKyAgICAgICAgICAgICAgICAgICAgOCwgLy8gU3ViIEQKKyAgICAgICAgICAgICAgICAg
ICAgMCwgLy8gSW1hZ2UgaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgIDAsIC8vIFJvdyBsZW5n
dGgKKyAgICAgICAgICAgICAgICAgICAgMCwgLy8gU2tpcCBpbWFnZXMKKyAgICAgICAgICAgICAg
ICAgICAgMCwgLy8gU2tpcCByb3dzCisgICAgICAgICAgICAgICAgICAgIDAsIC8vIFNraXAgcGl4
ZWxzCisgICAgICAgICAgICAgICAgICAgIDQsIC8vIEFsaWdubWVudAorICAgICAgICAgICAgICAg
ICAgICAwIC8vIG9mZnNldAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAg
ICAgIH0KKworICAgICAgICBwYXJhbUNhc2VzID0gW3sKKyAgICAgICAgICAgICAgICBuYW1lOiAn
cmdiOF9vZmZzZXQnLCBmb3JtYXQ6IGdsLlJHQjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAsIHN1Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6
IDIzLAorICAgICAgICAgICAgICAgIHN1Ykg6IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMCwg
cm93TGVuZ3RoOiAwLCBza2lwSW1hZ2VzOiAwLAorICAgICAgICAgICAgICAgIHNraXBSb3dzOiAw
LCBza2lwUGl4ZWxzOiAwLCBhbGlnbm1lbnQ6IDQsIG9mZnNldDogNjcKKyAgICAgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAncmdiOF9pbWFnZV9oZWlnaHQnLCBmb3JtYXQ6IGds
LlJHQjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0aDogMTAs
IHN1Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6IDIzLAorICAgICAgICAgICAgICAgIHN1
Ykg6IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMjYsIHJvd0xlbmd0aDogMCwgc2tpcEltYWdl
czogMCwKKyAgICAgICAgICAgICAgICBza2lwUm93czogMCwgc2tpcFBpeGVsczogMCwgYWxpZ25t
ZW50OiA0LCBvZmZzZXQ6IDAKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBuYW1l
OiAncmdiOF9yb3dfbGVuZ3RoJywgZm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjYsCisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAyNSwgZGVwdGg6IDEwLCBzdWJYOiAxLCBzdWJZOiAyLCBzdWJaOiAx
LCBzdWJXOiAyMywKKyAgICAgICAgICAgICAgICBzdWJIOiAxOSwgc3ViRDogOCwgaW1hZ2VIZWln
aHQ6IDAsIHJvd0xlbmd0aDogMjcsIHNraXBJbWFnZXM6IDAsCisgICAgICAgICAgICAgICAgc2tp
cFJvd3M6IDAsIHNraXBQaXhlbHM6IDAsIGFsaWdubWVudDogNCwgb2Zmc2V0OiAwCisgICAgICAg
ICAgICB9LCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ3JnYjhfc2tpcF9pbWFnZXMnLCBmb3Jt
YXQ6IGdsLlJHQjgsIHdpZHRoOiAyNiwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1LCBkZXB0
aDogMTAsIHN1Ylg6IDEsIHN1Ylk6IDIsIHN1Ylo6IDEsIHN1Ylc6IDIzLAorICAgICAgICAgICAg
ICAgIHN1Ykg6IDE5LCBzdWJEOiA4LCBpbWFnZUhlaWdodDogMCwgcm93TGVuZ3RoOiAwLCBza2lw
SW1hZ2VzOiAzLAorICAgICAgICAgICAgICAgIHNraXBSb3dzOiAwLCBza2lwUGl4ZWxzOiAwLCBh
bGlnbm1lbnQ6IDQsIG9mZnNldDogMAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAg
IG5hbWU6ICdyZ2I4X3NraXBfcm93cycsIGZvcm1hdDogZ2wuUkdCOCwgd2lkdGg6IDI2LAorICAg
ICAgICAgICAgICAgIGhlaWdodDogMjUsIGRlcHRoOiAxMCwgc3ViWDogMSwgc3ViWTogMiwgc3Vi
WjogMSwgc3ViVzogMjMsCisgICAgICAgICAgICAgICAgc3ViSDogMTksIHN1YkQ6IDgsIGltYWdl
SGVpZ2h0OiAyMiwgcm93TGVuZ3RoOiAwLCBza2lwSW1hZ2VzOiAwLAorICAgICAgICAgICAgICAg
IHNraXBSb3dzOiAzLCBza2lwUGl4ZWxzOiAwLCBhbGlnbm1lbnQ6IDQsIG9mZnNldDogMAorICAg
ICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZ2I4X3NraXBfcGl4ZWxzJywg
Zm9ybWF0OiBnbC5SR0I4LCB3aWR0aDogMjYsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyNSwg
ZGVwdGg6IDEwLCBzdWJYOiAxLCBzdWJZOiAyLCBzdWJaOiAxLCBzdWJXOiAyMywKKyAgICAgICAg
ICAgICAgICBzdWJIOiAxOSwgc3ViRDogOCwgaW1hZ2VIZWlnaHQ6IDAsIHJvd0xlbmd0aDogMjUs
IHNraXBJbWFnZXM6IDAsCisgICAgICAgICAgICAgICAgc2tpcFJvd3M6IDAsIHNraXBQaXhlbHM6
IDIsIGFsaWdubWVudDogNCwgb2Zmc2V0OiAwCisgICAgICAgICAgICB9CisgICAgICAgIF07CisK
KyAgICAgICAgcGJvR3JvdXBQYXJhbXMgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAg
ICAgICAgICAndGV4c3ViaW1hZ2UzZF9wYm8nLCAnZ2xUZXhTdWJJbWFnZTNEKCkgcGl4ZWwgYnVm
ZmVyIG9iamVjdCB0ZXN0cycKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChwYm9H
cm91cFBhcmFtcyk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgcGFyYW1DYXNl
cy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICBwYm9Hcm91cFBhcmFtcy5hZGRDaGlsZCgK
KyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3Vi
SW1hZ2UyREFycmF5QnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tu
ZHhdLm5hbWUgKyAnXzJkX2FycmF5JywgJycsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2Fz
ZXNbbmR4XS5mb3JtYXQsIHBhcmFtQ2FzZXNbbmR4XS53aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1DYXNlc1tuZHhdLmhlaWdodCwgcGFyYW1DYXNlc1tuZHhdLmRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uc3ViWCwgcGFyYW1DYXNlc1tuZHhdLnN1Ylks
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5zdWJaLCBwYXJhbUNhc2VzW25k
eF0uc3ViVywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLnN1YkgsIHBhcmFt
Q2FzZXNbbmR4XS5zdWJELAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uaW1h
Z2VIZWlnaHQsIHBhcmFtQ2FzZXNbbmR4XS5yb3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtQ2FzZXNbbmR4XS5za2lwSW1hZ2VzLCBwYXJhbUNhc2VzW25keF0uc2tpcFJvd3MsCisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5za2lwUGl4ZWxzLCBwYXJhbUNhc2Vz
W25keF0uYWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0ub2Zm
c2V0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHBib0dy
b3VwUGFyYW1zLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5UZXhTdWJJbWFnZTNEQnVmZmVyQ2FzZSgKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1DYXNlc1tuZHhdLm5hbWUgKyAnXzNkJywgJycsCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtQ2FzZXNbbmR4XS5mb3JtYXQsIHBhcmFtQ2FzZXNbbmR4XS53aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLmhlaWdodCwgcGFyYW1DYXNlc1tuZHhdLmRlcHRo
LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2VzW25keF0uc3ViWCwgcGFyYW1DYXNlc1tu
ZHhdLnN1YlksCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5zdWJaLCBwYXJh
bUNhc2VzW25keF0uc3ViVywKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1DYXNlc1tuZHhdLnN1
YkgsIHBhcmFtQ2FzZXNbbmR4XS5zdWJELAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2Vz
W25keF0uaW1hZ2VIZWlnaHQsIHBhcmFtQ2FzZXNbbmR4XS5yb3dMZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5za2lwSW1hZ2VzLCBwYXJhbUNhc2VzW25keF0uc2tp
cFJvd3MsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtQ2FzZXNbbmR4XS5za2lwUGl4ZWxzLCBw
YXJhbUNhc2VzW25keF0uYWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICBwYXJhbUNhc2Vz
W25keF0ub2Zmc2V0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIGdsVGV4U3ViSW1hZ2UzRCgpIGRlcHRoIGNhc2VzLgorICAgICAgICBz
aGFkb3czZEdyb3VwID0gbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KAorICAgICAgICAgICAgJ3Rl
eHN1YmltYWdlM2RfZGVwdGgnLAorICAgICAgICAgICAgJ2dsVGV4U3ViSW1hZ2UzRCgpIHdpdGgg
ZGVwdGggb3IgZGVwdGgvc3RlbmNpbCBmb3JtYXQnCisgICAgICAgICk7CisgICAgICAgIHRoaXMu
YWRkQ2hpbGQoc2hhZG93M2RHcm91cCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgZGVwdGhTdGVuY2lsRm9ybWF0cy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICAvLyBX
ZWJHTCAyIHNwZWNpZmljIGNvbnN0cmFpbnQuCisgICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2ls
Rm9ybWF0c1tuZHhdLmludGVybmFsRm9ybWF0ID09IGdsLkRFUFRIMzJGX1NURU5DSUw4KQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGV4MkRBcnJheVdpZHRoID0gNTc7
CisgICAgICAgICAgICB0ZXgyREFycmF5SGVpZ2h0ID0gNDQ7CisgICAgICAgICAgICB0ZXgyREFy
cmF5TGV2ZWxzID0gNTsKKworICAgICAgICAgICAgc2hhZG93M2RHcm91cC5hZGRDaGlsZCgKKyAg
ICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4U3ViSW1h
Z2UyREFycmF5RGVwdGhDYXNlKAorICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxGb3Jt
YXRzW25keF0ubmFtZSArICdfMmRfYXJyYXknLCAnJywKKyAgICAgICAgICAgICAgICAgICAgZGVw
dGhTdGVuY2lsRm9ybWF0c1tuZHhdLmludGVybmFsRm9ybWF0LCB0ZXgyREFycmF5V2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHRleDJEQXJyYXlIZWlnaHQsIHRleDJEQXJyYXlMZXZlbHMKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Z2xUZXhTdG9yYWdlMkQoKSBjYXNlcy4KKworICAgICAgICAvLyBDb2xvciBmb3JtYXRzCisgICAg
ICAgIHZhciBzcGxpdFN0b3JhZ2UyRCA9IDMsIHNwbGl0U3RvcmFnZUN1YmUgPSA1OworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+fSAqLyB2YXIgY29sb3JG
b3JtYXRHcm91cDJEID0gW107CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBzcGxpdFN0
b3JhZ2UyRDsgKytpaSkgeworICAgICAgICAgICAgY29sb3JGb3JtYXRHcm91cDJELnB1c2goCisg
ICAgICAgICAgICAgICAgbmV3IHRjdVRlc3RDYXNlLkRlcXBUZXN0KCd0ZXhzdG9yYWdlMmQuZm9y
bWF0JywgJ2dsVGV4U3RvcmFnZTJEKCkgd2l0aCBhbGwgZm9ybWF0cycpCisgICAgICAgICAgICAp
OworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChjb2xvckZvcm1hdEdyb3VwMkRbaWldKTsKKyAg
ICAgICAgfQorICAgICAgICAvKiogQHR5cGUge0FycmF5PHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0+
fSAqLyB2YXIgY29sb3JGb3JtYXRHcm91cEN1YmUgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHNwbGl0U3RvcmFnZUN1YmU7ICsraWkpIHsKKyAgICAgICAgICAgIGNvbG9yRm9y
bWF0R3JvdXBDdWJlLnB1c2goCisgICAgICAgICAgICAgICAgbmV3IHRjdVRlc3RDYXNlLkRlcXBU
ZXN0KCd0ZXhzdG9yYWdlMmQuZm9ybWF0JywgJ2dsVGV4U3RvcmFnZTJEKCkgd2l0aCBhbGwgZm9y
bWF0cycpCisgICAgICAgICAgICApOworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChjb2xvckZv
cm1hdEdyb3VwQ3ViZVtpaV0pOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgZm9ybWF0
TmR4ID0gMDsgZm9ybWF0TmR4IDwgY29sb3JGb3JtYXRzLmxlbmd0aDsgZm9ybWF0TmR4KyspIHsK
KyAgICAgICAgICAgIGZtdE5hbWUgPSBjb2xvckZvcm1hdHNbZm9ybWF0TmR4XS5uYW1lOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbnRlcm5hbEZvcm1hdCA9IGNvbG9y
Rm9ybWF0c1tmb3JtYXROZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgdmFyIHRleDJE
V2lkdGggPSAxMTc7CisgICAgICAgICAgICB2YXIgdGV4MkRIZWlnaHQgPSA5NzsKKyAgICAgICAg
ICAgIHZhciB0ZXgyRExldmVscyA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm1heExl
dmVsQ291bnQodGV4MkRXaWR0aCwgdGV4MkRIZWlnaHQpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBjdWJlU2l6ZSA9IDU3OworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCisgICAgICAgICAgICB2YXIgY3ViZUxldmVscyA9IGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLm1heExldmVsQ291bnQoCisgICAgICAgICAgICAgICAgY3ViZVNpemUsIGN1
YmVTaXplCisgICAgICAgICAgICApOworCisgICAgICAgICAgICBjb2xvckZvcm1hdEdyb3VwMkRb
Zm9ybWF0TmR4ICUgc3BsaXRTdG9yYWdlMkRdLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5l
dyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5CYXNpY1RleFN0b3JhZ2UyRENhc2UoCisg
ICAgICAgICAgICAgICAgICAgIGZtdE5hbWUgKyAnXzJkJywgJycsIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICB0ZXgyRFdpZHRoLCB0ZXgyREhlaWdodCwgdGV4MkRMZXZlbHMK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAgY29sb3JGb3Jt
YXRHcm91cEN1YmVbZm9ybWF0TmR4ICUgc3BsaXRTdG9yYWdlQ3ViZV0uYWRkQ2hpbGQoCisgICAg
ICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3Rv
cmFnZUN1YmVDYXNlKAorICAgICAgICAgICAgICAgICAgICBmbXROYW1lICsgJ19jdWJlJywgJycs
IGludGVybmFsRm9ybWF0LCBjdWJlU2l6ZSwgY3ViZUxldmVscworICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZXB0aCAvIHN0ZW5jaWwg
Zm9ybWF0cy4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAg
ICAgICAgdmFyIHN0b3JhZ2VHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAg
ICAgICAgICd0ZXhzdG9yYWdlMmQuZm9ybWF0JywKKyAgICAgICAgICAgICdnbFRleFN0b3JhZ2Uy
RCgpIHdpdGggYWxsIGZvcm1hdHMnCisgICAgICAgICk7CisgICAgICAgIHRoaXMuYWRkQ2hpbGQo
c3RvcmFnZUdyb3VwKTsKKworICAgICAgICBmb3IgKHZhciBmb3JtYXROZHggPSAwOyBmb3JtYXRO
ZHggPCBkZXB0aFN0ZW5jaWxGb3JtYXRzLmxlbmd0aDsgZm9ybWF0TmR4KyspIHsKKyAgICAgICAg
ICAgIGZtdE5hbWUgPSBkZXB0aFN0ZW5jaWxGb3JtYXRzW2Zvcm1hdE5keF0ubmFtZTsKKyAgICAg
ICAgICAgIGludGVybmFsRm9ybWF0ID0gZGVwdGhTdGVuY2lsRm9ybWF0c1tmb3JtYXROZHhdLmlu
dGVybmFsRm9ybWF0OworICAgICAgICAgICAgLy8gV2ViR0wgMiBzcGVjaWZpYyBjb25zdHJhaW50
LgorICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0ID09IGdsLkRFUFRIMzJGX1NURU5DSUw4
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0ZXgyRFdpZHRoID0g
MTE3OworICAgICAgICAgICAgdGV4MkRIZWlnaHQgPSA5NzsKKyAgICAgICAgICAgIHRleDJETGV2
ZWxzID0gZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAg
ICAgICAgICAgICB0ZXgyRFdpZHRoLCB0ZXgyREhlaWdodAorICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIGN1YmVTaXplID0gNTc7CisgICAgICAgICAgICBjdWJlTGV2ZWxzID0gZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAgICAgICAgICBjdWJl
U2l6ZSwgY3ViZVNpemUKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIHN0b3JhZ2VHcm91
cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuQmFzaWNUZXhTdG9yYWdlMkRDYXNlKAorICAgICAgICAgICAgICAgICAgICBmbXROYW1l
ICsgJ18yZCcsICcnLCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdGV4MkRX
aWR0aCwgdGV4MkRIZWlnaHQsIHRleDJETGV2ZWxzCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHN0b3JhZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
ICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdG9yYWdlQ3Vi
ZUNhc2UoCisgICAgICAgICAgICAgICAgICAgIGZtdE5hbWUgKyAnX2N1YmUnLCAnJywgaW50ZXJu
YWxGb3JtYXQsIGN1YmVTaXplLCBjdWJlTGV2ZWxzCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNpemVzLgorICAgICAgICBzdG9yYWdl
R3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAndGV4c3RvcmFn
ZTJkLnNpemUnLAorICAgICAgICAgICAgJ2dsVGV4U3RvcmFnZTJEKCkgd2l0aCB2YXJpb3VzIHNp
emVzJworICAgICAgICApOworICAgICAgICB0aGlzLmFkZENoaWxkKHN0b3JhZ2VHcm91cCk7CisK
KyAgICAgICAgLy8gICAgVyBIIEwKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx7d2lkdGg6IG51
bWJlciwgaGVpZ2h0OiBudW1iZXIsIGxldmVsczogbnVtYmVyfT59ICovCisgICAgICAgIHZhciB0
ZXgyRFNpemVzID0gW3sKKyAgICAgICAgICAgICAgICB3aWR0aDogMSwgaGVpZ2h0OiAxLCBsZXZl
bHM6IDEKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMiwgaGVpZ2h0
OiAyLCBsZXZlbHM6IDIKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
NjQsIGhlaWdodDogMzIsIGxldmVsczogNworICAgICAgICAgICAgfSwgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMiwgaGVpZ2h0OiA2NCwgbGV2ZWxzOiA0CisgICAgICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDU3LCBoZWlnaHQ6IDYzLCBsZXZlbHM6IDEKKyAgICAgICAg
ICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTcsIGhlaWdodDogNjMsIGxldmVsczog
MgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1NywgaGVpZ2h0OiA2
MywgbGV2ZWxzOiA2CisgICAgICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgLy8gICAg
UyBMCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8e3NpemVzOiBudW1iZXIsIGxldmVsczogbnVt
YmVyfT59ICovCisgICAgICAgIHZhciBjdWJlU2l6ZXMgPSBbeworICAgICAgICAgICAgICAgIHNp
emVzOiAxLCBsZXZlbHM6IDEKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBzaXpl
czogMiwgbGV2ZWxzOiAyCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgc2l6ZXM6
IDU3LCBsZXZlbHM6IDEKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBzaXplczog
NTcsIGxldmVsczogMgorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHNpemVzOiA1
NywgbGV2ZWxzOiA2CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgc2l6ZXM6IDY0
LCBsZXZlbHM6IDQKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBzaXplczogNjQs
IGxldmVsczogNworICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFy
IG5keCA9IDA7IG5keCA8IHRleDJEU2l6ZXMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAg
Zm9ybWF0ID0gZ2wuUkdCQTg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHdpZHRoID0gdGV4MkRTaXplc1tuZHhdLndpZHRoOworICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBoZWlnaHQgPSB0ZXgyRFNpemVzW25keF0uaGVpZ2h0OworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsZXZlbHMgPSB0ZXgyRFNpemVzW25keF0ubGV2
ZWxzOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisgICAgICAgICAgICB2YXIg
bmFtZSA9ICcyZF8nICsgd2lkdGggKyAneCcgKyBoZWlnaHQgKyAnXycgKyBsZXZlbHMgKyAnX2xl
dmVscyc7CisKKyAgICAgICAgICAgIHN0b3JhZ2VHcm91cC5hZGRDaGlsZCgKKyAgICAgICAgICAg
ICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuQmFzaWNUZXhTdG9yYWdlMkRD
YXNlKAorICAgICAgICAgICAgICAgICAgICBuYW1lLCAnJywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBsZXZlbHMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICB9CisK
KyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgY3ViZVNpemVzLmxlbmd0aDsgbmR4Kysp
IHsKKyAgICAgICAgICAgIGZvcm1hdCA9IGdsLlJHQkE4OworICAgICAgICAgICAgc2l6ZSA9IGN1
YmVTaXplc1tuZHhdLnNpemVzOworICAgICAgICAgICAgbGV2ZWxzID0gY3ViZVNpemVzW25keF0u
bGV2ZWxzOworICAgICAgICAgICAgbmFtZSA9ICdjdWJlXycgKyBzaXplICsgJ3gnICsgc2l6ZSAr
ICdfJyArIGxldmVscyArICdfbGV2ZWxzJzsKKworICAgICAgICAgICAgc3RvcmFnZUdyb3VwLmFk
ZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5CYXNpY1RleFN0b3JhZ2VDdWJlQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycs
IGZvcm1hdCwgc2l6ZSwgbGV2ZWxzCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIGdsVGV4U3RvcmFnZTNEKCkgY2FzZXMuCisKKyAgICAg
ICAgLy8gQ29sb3IgZm9ybWF0cy4KKyAgICAgICAgdmFyIHNwbGl0U3RvcmFnZTJEQXJyYXkgPSAz
LCBzcGxpdFN0b3JhZ2UzRCA9IDQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8e3RjdVRlc3RD
YXNlLkRlcXBUZXN0fT59ICovIHZhciBjb2xvckZvcm1hdEdyb3VwMkRBcnJheSA9IFtdOworICAg
ICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc3BsaXRTdG9yYWdlMkRBcnJheTsgKytpaSkgewor
ICAgICAgICAgICAgY29sb3JGb3JtYXRHcm91cDJEQXJyYXkucHVzaCgKKyAgICAgICAgICAgICAg
ICBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoJ3RleHN0b3JhZ2UzZC5mb3JtYXQnLCAnZ2xUZXhT
dG9yYWdlM0QoKSB3aXRoIGFsbCBmb3JtYXRzJykKKyAgICAgICAgICAgICk7CisgICAgICAgICAg
ICB0aGlzLmFkZENoaWxkKGNvbG9yRm9ybWF0R3JvdXAyREFycmF5W2lpXSk7CisgICAgICAgIH0K
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx7dGN1VGVzdENhc2UuRGVxcFRlc3R9Pn0gKi8gdmFy
IGNvbG9yRm9ybWF0R3JvdXAzRCA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
c3BsaXRTdG9yYWdlM0Q7ICsraWkpIHsKKyAgICAgICAgICAgIGNvbG9yRm9ybWF0R3JvdXAzRC5w
dXNoKAorICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgndGV4c3RvcmFn
ZTNkLmZvcm1hdCcsICdnbFRleFN0b3JhZ2UzRCgpIHdpdGggYWxsIGZvcm1hdHMnKQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoY29sb3JGb3JtYXRHcm91cDNEW2lp
XSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb2xvciBmb3JtYXRzLgorICAgICAgICBmb3Ig
KHZhciBmb3JtYXROZHggPSAwOyBmb3JtYXROZHggPCBjb2xvckZvcm1hdHMubGVuZ3RoOyBmb3Jt
YXROZHgrKykgeworICAgICAgICAgICAgZm10TmFtZSA9IGNvbG9yRm9ybWF0c1tmb3JtYXROZHhd
Lm5hbWU7CisgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCA9IGNvbG9yRm9ybWF0c1tmb3JtYXRO
ZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgdGV4MkRBcnJheVdpZHRoID0gNTc7Cisg
ICAgICAgICAgICB0ZXgyREFycmF5SGVpZ2h0ID0gMTM7CisgICAgICAgICAgICB2YXIgdGV4MkRB
cnJheUxheWVycyA9IDc7CisgICAgICAgICAgICB0ZXgyREFycmF5TGV2ZWxzID0gZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAgICAgICAgICB0ZXgy
REFycmF5V2lkdGgsIHRleDJEQXJyYXlIZWlnaHQKKyAgICAgICAgICAgICk7CisgICAgICAgICAg
ICB0ZXgzRFdpZHRoID0gNTk7CisgICAgICAgICAgICB0ZXgzREhlaWdodCA9IDM3OworICAgICAg
ICAgICAgdGV4M0REZXB0aCA9IDExOworICAgICAgICAgICAgdmFyIHRleDNETGV2ZWxzID0gZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMubWF4TGV2ZWxDb3VudCgKKyAgICAgICAgICAgICAg
ICB0ZXgzRFdpZHRoLCB0ZXgzREhlaWdodCwgdGV4M0REZXB0aAorICAgICAgICAgICAgKTsKKwor
ICAgICAgICAgICAgY29sb3JGb3JtYXRHcm91cDJEQXJyYXlbZm9ybWF0TmR4ICUgc3BsaXRTdG9y
YWdlMkRBcnJheV0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZTJEQXJyYXlDYXNlKAorICAgICAgICAgICAg
ICAgICAgICBmbXROYW1lICsgJ18yZF9hcnJheScsICcnLCBpbnRlcm5hbEZvcm1hdCwgdGV4MkRB
cnJheVdpZHRoLAorICAgICAgICAgICAgICAgICAgICB0ZXgyREFycmF5SGVpZ2h0LCB0ZXgyREFy
cmF5TGF5ZXJzLCB0ZXgyREFycmF5TGV2ZWxzCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIGNvbG9yRm9ybWF0R3JvdXAzRFtmb3JtYXROZHggJSBzcGxpdFN0
b3JhZ2UzRF0uYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzLkJhc2ljVGV4U3RvcmFnZTNEQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAg
Zm10TmFtZSArICdfM2QnLCAnJywgaW50ZXJuYWxGb3JtYXQsIHRleDNEV2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgIHRleDNESGVpZ2h0LCB0ZXgzRERlcHRoLCB0ZXgzRExldmVscworICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBzdG9yYWdl
R3JvdXAgPSBuZXcgdGN1VGVzdENhc2UuRGVxcFRlc3QoCisgICAgICAgICAgICAndGV4c3RvcmFn
ZTNkLmZvcm1hdCcsCisgICAgICAgICAgICAnZ2xUZXhTdG9yYWdlM0QoKSB3aXRoIGFsbCBmb3Jt
YXRzJworICAgICAgICApOworICAgICAgICB0aGlzLmFkZENoaWxkKHN0b3JhZ2VHcm91cCk7CisK
KyAgICAgICAgLy8gRGVwdGgvc3RlbmNpbCBmb3JtYXRzIChvbmx5IDJEIHRleHR1cmUgYXJyYXkg
aXMgc3VwcG9ydGVkKS4KKyAgICAgICAgZm9yICh2YXIgZm9ybWF0TmR4ID0gMDsKKyAgICAgICAg
ICAgIGZvcm1hdE5keCA8IGRlcHRoU3RlbmNpbEZvcm1hdHMubGVuZ3RoOworICAgICAgICAgICAg
Zm9ybWF0TmR4KyspIHsKKyAgICAgICAgICAgIGZtdE5hbWUgPSBkZXB0aFN0ZW5jaWxGb3JtYXRz
W2Zvcm1hdE5keF0ubmFtZTsKKyAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gZGVwdGhTdGVu
Y2lsRm9ybWF0c1tmb3JtYXROZHhdLmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgLy8gV2Vi
R0wgMiBzcGVjaWZpYyBjb25zdHJhaW50LgorICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0
ID09IGdsLkRFUFRIMzJGX1NURU5DSUw4KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICB0ZXgyREFycmF5V2lkdGggPSA1NzsKKyAgICAgICAgICAgIHRleDJEQXJyYXlI
ZWlnaHQgPSAxMzsKKyAgICAgICAgICAgIHRleDJEQXJyYXlMYXllcnMgPSA3OworICAgICAgICAg
ICAgdGV4MkRBcnJheUxldmVscyA9IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLm1heExl
dmVsQ291bnQoCisgICAgICAgICAgICAgICAgdGV4MkRBcnJheVdpZHRoLCB0ZXgyREFycmF5SGVp
Z2h0CisgICAgICAgICAgICApOworCisgICAgICAgICAgICBzdG9yYWdlR3JvdXAuYWRkQ2hpbGQo
CisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJhc2lj
VGV4U3RvcmFnZTJEQXJyYXlDYXNlKAorICAgICAgICAgICAgICAgICAgICBmbXROYW1lICsgJ18y
ZF9hcnJheScsICcnLCBpbnRlcm5hbEZvcm1hdCwgdGV4MkRBcnJheVdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICB0ZXgyREFycmF5SGVpZ2h0LCB0ZXgyREFycmF5TGF5ZXJzLCB0ZXgyREFycmF5
TGV2ZWxzCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFNpemVzLgorICAgICAgICAvLyAgICBXIEggTGEgTGUKKyAgICAgICAgLyoqCisg
ICAgICAgICAqIEB0eXBlIHtBcnJheTx7d2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsCisg
ICAgICAgICAqIGxheWVyczogbnVtYmVyLCBsZXZlbHM6IG51bWJlcn0+fQorICAgICAgICAgKi8K
KyAgICAgICAgdmFyIHRleDJEQXJyYXlTaXplcyA9IFt7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDEsIGhlaWdodDogMSwgbGF5ZXJzOiAxLCBsZXZlbHM6IDEKKyAgICAgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMiwgaGVpZ2h0OiAyLCBsYXllcnM6IDIsIGxldmVsczogMgor
ICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA2NCwgaGVpZ2h0OiAzMiwg
bGF5ZXJzOiAzLCBsZXZlbHM6IDcKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzIsIGhlaWdodDogNjQsIGxheWVyczogMywgbGV2ZWxzOiA0CisgICAgICAgICAgICB9
LCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDU3LCBoZWlnaHQ6IDYzLCBsYXllcnM6IDUsIGxl
dmVsczogMQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1NywgaGVp
Z2h0OiA2MywgbGF5ZXJzOiA1LCBsZXZlbHM6IDIKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogNTcsIGhlaWdodDogNjMsIGxheWVyczogNSwgbGV2ZWxzOiA2CisgICAg
ICAgICAgICB9CisgICAgICAgIF07CisKKyAgICAgICAgLy8gICAgVyBIIEQgTAorICAgICAgICAv
KioKKyAgICAgICAgICogQHR5cGUge0FycmF5PHt3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJl
ciwKKyAgICAgICAgICogZGVwdGg6IG51bWJlciwgbGV2ZWxzOiBudW1iZXJ9Pn0KKyAgICAgICAg
ICovCisgICAgICAgIHZhciB0ZXgzRFNpemVzID0gW3sKKyAgICAgICAgICAgICAgICB3aWR0aDog
MSwgaGVpZ2h0OiAxLCBkZXB0aDogMSwgbGV2ZWxzOiAxCisgICAgICAgICAgICB9LCB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDIsIGhlaWdodDogMiwgZGVwdGg6IDIsIGxldmVsczogMgorICAg
ICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA2NCwgaGVpZ2h0OiAzMiwgZGVw
dGg6IDE2LCBsZXZlbHM6IDcKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzIsIGhlaWdodDogNjQsIGRlcHRoOiAxNiwgbGV2ZWxzOiA0CisgICAgICAgICAgICB9LCB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMyLCBoZWlnaHQ6IDE2LCBkZXB0aDogNjQsIGxldmVs
czogNAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1NywgaGVpZ2h0
OiA2MywgZGVwdGg6IDExLCBsZXZlbHM6IDEKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogNTcsIGhlaWdodDogNjMsIGRlcHRoOiAxMSwgbGV2ZWxzOiAyCisgICAgICAg
ICAgICB9LCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDU3LCBoZWlnaHQ6IDYzLCBkZXB0aDog
MTEsIGxldmVsczogNgorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIHN0b3Jh
Z2VHcm91cCA9IG5ldyB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCgKKyAgICAgICAgICAgICd0ZXhzdG9y
YWdlM2Quc2l6ZScsICdnbFRleFN0b3JhZ2UzRCgpIHdpdGggdmFyaW91cyBzaXplcycKKyAgICAg
ICAgKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChzdG9yYWdlR3JvdXApOworCisgICAgICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHRleDJEQXJyYXlTaXplcy5sZW5ndGg7IG5keCsrKSB7Cisg
ICAgICAgICAgICBmb3JtYXQgPSBnbC5SR0JBODsKKyAgICAgICAgICAgIHdpZHRoID0gdGV4MkRB
cnJheVNpemVzW25keF0ud2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSB0ZXgyREFycmF5U2l6
ZXNbbmR4XS5oZWlnaHQ7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxh
eWVycyA9IHRleDJEQXJyYXlTaXplc1tuZHhdLmxheWVyczsKKyAgICAgICAgICAgIGxldmVscyA9
IHRleDJEQXJyYXlTaXplc1tuZHhdLmxldmVsczsKKyAgICAgICAgICAgIG5hbWUgPSAnMmRfYXJy
YXlfJyArIHdpZHRoICsgJ3gnICsgaGVpZ2h0ICsgJ3gnICsKKyAgICAgICAgICAgICAgICBsYXll
cnMgKyAnXycgKyBsZXZlbHMgKyAnX2xldmVscyc7CisKKyAgICAgICAgICAgIHN0b3JhZ2VHcm91
cC5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuQmFzaWNUZXhTdG9yYWdlMkRBcnJheUNhc2UoCisgICAgICAgICAgICAgICAgICAgIG5h
bWUsICcnLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IHRleDNEU2l6ZXMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgZm9y
bWF0ID0gZ2wuUkdCQTg7CisgICAgICAgICAgICB3aWR0aCA9IHRleDNEU2l6ZXNbbmR4XS53aWR0
aDsKKyAgICAgICAgICAgIGhlaWdodCA9IHRleDNEU2l6ZXNbbmR4XS5oZWlnaHQ7CisgICAgICAg
ICAgICB2YXIgZGVwdGggPSB0ZXgzRFNpemVzW25keF0uZGVwdGg7CisgICAgICAgICAgICBsZXZl
bHMgPSB0ZXgzRFNpemVzW25keF0ubGV2ZWxzOworICAgICAgICAgICAgbmFtZSA9ICczZF8nICsg
d2lkdGggKyAneCcgKyBoZWlnaHQgKyAneCcgKworICAgICAgICAgICAgICAgIGRlcHRoICsgJ18n
ICsgbGV2ZWxzICsgJ19sZXZlbHMnOworCisgICAgICAgICAgICBzdG9yYWdlR3JvdXAuYWRkQ2hp
bGQoCisgICAgICAgICAgICAgICAgbmV3IGVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLkJh
c2ljVGV4U3RvcmFnZTNEQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgJycsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscworICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBSdW4gdGVzdAor
ICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisgICAgKiBAcGFy
YW0ge0FycmF5PG51bWJlcj49fSByYW5nZSBUZXN0IHJhbmdlCisgICAgKi8KKyAgICBlczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0LCByYW5nZSkgewor
ICAgICAgICBnbCA9IGNvbnRleHQ7CisgICAgICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0
ZXJzCisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAgICAgc3Rh
dGUuc2V0Um9vdChuZXcgZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cygpKTsKKyAgICAgICAgaWYgKHJhbmdlKQorICAgICAgICAgICAgc3RhdGUu
c2V0UmFuZ2UocmFuZ2UpOworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9u
IG9mIHRoaXMgdGVzdCBzZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZShzdGF0ZS50
ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNl
cy5nZXREZXNjcmlwdGlvbigpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9SdW4g
dGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAg
ICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlv
bnMoJ0ZhaWxlZCB0byBlczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4gdGVzdHMnLCBm
YWxzZSk7CisgICAgICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAg
ICAgIH0KKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVyZVN0
YXRlUXVlcnkuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiMWY0ZDZiYjliMjQwOTFjOGUyODRiM2Y0MGVjNTcyMDJhYTlkNDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LmpzCkBAIC0wLDAgKzEsMzc2
IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0g
T3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lT
LAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3RhdGVRdWVyeScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5k
ZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkFwaUNhc2UnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVRdWVy
eScpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgewordmFyIGVzM2ZUZXh0dXJlU3RhdGVRdWVy
eSA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5OwordmFyIHRjdVRlc3RD
YXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBnbHNTdGF0ZVF1ZXJ5ID0g
bW9kdWxlcy5zaGFyZWQuZ2xzU3RhdGVRdWVyeTsKK3ZhciBlczNmQXBpQ2FzZSA9IGZ1bmN0aW9u
YWwuZ2xlczMuZXMzZkFwaUNhc2U7Cit2YXIgZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRl
YmFzZS5kZVJhbmRvbTsKKwordmFyIHNldFBhcmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBh
cmVudCkgeworICAgIGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3Rv
dHlwZSk7CisgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cit9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZBcGlDYXNlLkFwaUNhc2V9Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisg
KiBAcGFyYW0ge251bWJlcn0gdGV4dHVyZVRhcmdldAorICovCitlczNmVGV4dHVyZVN0YXRlUXVl
cnkuVGV4dHVyZUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGV4dHVyZVRhcmdl
dCkgeworICAgIGVzM2ZBcGlDYXNlLkFwaUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlv
biwgZ2wpOworICAgIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJlfSAqLyB0aGlzLm1fdGV4dHVyZTsK
KyAgICB0aGlzLm1fdGV4dHVyZVRhcmdldCA9IHRleHR1cmVUYXJnZXQ7Cit9OworCitzZXRQYXJl
bnRDbGFzcyhlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2UsIGVzM2ZBcGlDYXNlLkFw
aUNhc2UpOworCitlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2UucHJvdG90eXBlLnRl
c3RUZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1
bmN0aW9uLiBQbGVhc2Ugb3ZlcnJpZGUuJyk7Cit9OworCitlczNmVGV4dHVyZVN0YXRlUXVlcnku
VGV4dHVyZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm1fdGV4
dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZSh0aGlzLm1fdGV4
dHVyZVRhcmdldCwgdGhpcy5tX3RleHR1cmUpOworCisgICAgdGhpcy50ZXN0VGV4dHVyZSgpOwor
CisgICAgZ2wuYmluZFRleHR1cmUodGhpcy5tX3RleHR1cmVUYXJnZXQsIG51bGwpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGhpcy5tX3RleHR1cmUpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2V9CisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBA
cGFyYW0ge251bWJlcn0gdGV4dHVyZVRhcmdldAorICovCitlczNmVGV4dHVyZVN0YXRlUXVlcnku
SXNUZXh0dXJlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCB0ZXh0dXJlVGFyZ2V0
KSB7CisgICAgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVDYXNlLmNhbGwodGhpcywgbmFt
ZSwgZGVzY3JpcHRpb24sIHRleHR1cmVUYXJnZXQpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZXMz
ZlRleHR1cmVTdGF0ZVF1ZXJ5LklzVGV4dHVyZUNhc2UsIGVzM2ZUZXh0dXJlU3RhdGVRdWVyeS5U
ZXh0dXJlQ2FzZSk7CisKK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5Jc1RleHR1cmVDYXNlLnByb3Rv
dHlwZS50ZXN0VGV4dHVyZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVR
dWVyeS5jb21wYXJlKGdsLmlzVGV4dHVyZSh0aGlzLm1fdGV4dHVyZSksIHRydWUpLCAnZ2wuaXNU
ZXh0dXJlKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgdHJ1ZScpOworfTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2V9
CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
CisgKiBAcGFyYW0ge251bWJlcn0gdGV4dHVyZVRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IHZh
bHVlTmFtZQorICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxWYWx1ZQorICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSB2YWx1ZVJhbmdlCisgKi8KK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJl
UGFyYW1DYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHRleHR1cmVUYXJnZXQsIHZh
bHVlTmFtZSwgaW5pdGlhbFZhbHVlLCB2YWx1ZVJhbmdlKSB7CisgICAgZXMzZlRleHR1cmVTdGF0
ZVF1ZXJ5LlRleHR1cmVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHRleHR1cmVU
YXJnZXQpOworICAgIHRoaXMubV92YWx1ZU5hbWUgPSB2YWx1ZU5hbWU7CisgICAgdGhpcy5tX2lu
aXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsKKyAgICB0aGlzLm1fdmFsdWVSYW5nZSA9IHZhbHVl
UmFuZ2U7Cit9OworCitzZXRQYXJlbnRDbGFzcyhlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVy
ZVBhcmFtQ2FzZSwgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVDYXNlKTsKKworZXMzZlRl
eHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVQYXJhbUNhc2UucHJvdG90eXBlLnRlc3RUZXh0dXJlID0g
ZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVRleHR1cmUo
dGhpcy5tX3RleHR1cmVUYXJnZXQsIHRoaXMubV92YWx1ZU5hbWUsIHRoaXMubV9pbml0aWFsVmFs
dWUpKTsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV92YWx1ZVJhbmdlLmxl
bmd0aDsgKytuZHgpIHsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0aGlzLm1fdGV4dHVyZVRh
cmdldCwgdGhpcy5tX3ZhbHVlTmFtZSwgdGhpcy5tX3ZhbHVlUmFuZ2VbbmR4XSk7CisKKyAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVRleHR1cmUodGhpcy5tX3RleHR1cmVU
YXJnZXQsIHRoaXMubV92YWx1ZU5hbWUsIHRoaXMubV92YWx1ZVJhbmdlW25keF0pKTsKKyAgICB9
CisKKyAgICAvL2NoZWNrIHVuaXQgY29udmVyc2lvbnMgd2l0aCBmbG9hdAorCisgICAgZm9yICh2
YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX3ZhbHVlUmFuZ2UubGVuZ3RoOyArK25keCkgeworICAg
ICAgICBnbC50ZXhQYXJhbWV0ZXJmKHRoaXMubV90ZXh0dXJlVGFyZ2V0LCB0aGlzLm1fdmFsdWVO
YW1lLCB0aGlzLm1fdmFsdWVSYW5nZVtuZHhdKTsKKworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0
YXRlUXVlcnkudmVyaWZ5VGV4dHVyZSh0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGhpcy5tX3ZhbHVl
TmFtZSwgdGhpcy5tX3ZhbHVlUmFuZ2VbbmR4XSkpOworICAgIH0KK307CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7ZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVDYXNl
fQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
bgorICogQHBhcmFtIHtudW1iZXJ9IHRleHR1cmVUYXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBs
b2RUYXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsVmFsdWUKKyAqLworZXMzZlRleHR1
cmVTdGF0ZVF1ZXJ5LlRleHR1cmVMT0RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24s
IHRleHR1cmVUYXJnZXQsIGxvZFRhcmdldCwgaW5pdGlhbFZhbHVlKSB7CisgICAgZXMzZlRleHR1
cmVTdGF0ZVF1ZXJ5LlRleHR1cmVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHRl
eHR1cmVUYXJnZXQpOworICAgIHRoaXMubV9sb2RUYXJnZXQgPSBsb2RUYXJnZXQ7CisgICAgdGhp
cy5tX2luaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsKK307CisKK3NldFBhcmVudENsYXNzKGVz
M2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlTE9EQ2FzZSwgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5
LlRleHR1cmVDYXNlKTsKKworZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVMT0RDYXNlLnBy
b3RvdHlwZS50ZXN0VGV4dHVyZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBybmQgPSBuZXcgZGVS
YW5kb20uUmFuZG9tKDB4YWJjZGVmKTsKKworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52
ZXJpZnlUZXh0dXJlKHRoaXMubV90ZXh0dXJlVGFyZ2V0LCB0aGlzLm1fbG9kVGFyZ2V0LCB0aGlz
Lm1faW5pdGlhbFZhbHVlKSk7CisKKyAgICB2YXIgbnVtSXRlcmF0aW9ucyA9IDYwOworICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IG51bUl0ZXJhdGlvbnM7ICsrbmR4KSB7CisgICAgICAgIHZh
ciByZWYgPSBybmQuZ2V0RmxvYXQoLTY0MDAwLCA2NDAwMCk7CisKKyAgICAgICAgZ2wudGV4UGFy
YW1ldGVyZih0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGhpcy5tX2xvZFRhcmdldCwgcmVmKTsKKwor
ICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VGV4dHVyZSh0aGlzLm1fdGV4
dHVyZVRhcmdldCwgdGhpcy5tX2xvZFRhcmdldCwgcmVmKSk7CisgICAgfQorCisgICAgLy8gY2hl
Y2sgdW5pdCBjb252ZXJzaW9ucyB3aXRoIGludAorCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4
IDwgbnVtSXRlcmF0aW9uczsgKytuZHgpIHsKKyAgICAgICAgdmFyIHJlZiA9IHJuZC5nZXRJbnQo
LTY0MDAwLCA2NDAwMCk7CisKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0aGlzLm1fdGV4dHVy
ZVRhcmdldCwgdGhpcy5tX2xvZFRhcmdldCwgcmVmKTsKKworICAgICAgICB0aGlzLmNoZWNrKGds
c1N0YXRlUXVlcnkudmVyaWZ5VGV4dHVyZSh0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGhpcy5tX2xv
ZFRhcmdldCwgcmVmKSk7CisgICAgfQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2V9CisgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge251
bWJlcn0gdGV4dHVyZVRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IGxldmVsVGFyZ2V0CisgKiBA
cGFyYW0ge251bWJlcn0gaW5pdGlhbFZhbHVlCisgKi8KK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5U
ZXh0dXJlTGV2ZWxDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHRleHR1cmVUYXJn
ZXQsIGxldmVsVGFyZ2V0LCBpbml0aWFsVmFsdWUpIHsKKyAgICBlczNmVGV4dHVyZVN0YXRlUXVl
cnkuVGV4dHVyZUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgdGV4dHVyZVRhcmdl
dCk7CisgICAgdGhpcy5tX2xldmVsVGFyZ2V0ID0gbGV2ZWxUYXJnZXQ7CisgICAgdGhpcy5tX2lu
aXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsKK307CisKK3NldFBhcmVudENsYXNzKGVzM2ZUZXh0
dXJlU3RhdGVRdWVyeS5UZXh0dXJlTGV2ZWxDYXNlLCBlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4
dHVyZUNhc2UpOworCitlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUxldmVsQ2FzZS5wcm90
b3R5cGUudGVzdFRleHR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcm5kID0gbmV3IGRlUmFu
ZG9tLlJhbmRvbSgweGFiY2RlZik7CisKKyAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVy
aWZ5VGV4dHVyZSh0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGhpcy5tX2xldmVsVGFyZ2V0LCB0aGlz
Lm1faW5pdGlhbFZhbHVlKSk7CisKKyAgICB2YXIgbnVtSXRlcmF0aW9ucyA9IDYwOworICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IG51bUl0ZXJhdGlvbnM7ICsrbmR4KSB7CisgICAgICAgIHZh
ciByZWYgPSBybmQuZ2V0SW50KDAsIDY0MDAwKTsKKworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KHRoaXMubV90ZXh0dXJlVGFyZ2V0LCB0aGlzLm1fbGV2ZWxUYXJnZXQsIHJlZik7CisKKyAgICAg
ICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVRleHR1cmUodGhpcy5tX3RleHR1cmVU
YXJnZXQsIHRoaXMubV9sZXZlbFRhcmdldCwgcmVmKSk7CisgICAgfQorCisgICAgLy8gY2hlY2sg
dW5pdCBjb252ZXJzaW9ucyB3aXRoIGZsb2F0CisgICAgdmFyIG5vblNpZ25pZmljYW50T2Zmc2V0
cyA9IFstMC40NSwgLTAuMjUsIDAsIDAuNDVdOyAvLyBvZmZzZXRzIE8gc28gdGhhdCBmb3IgYW55
IGludGVnZXJzIHogaW4gWiwgbyBpbiBPIHJvdW5kVG9DbG9zZXN0SW50KHorbyk9PXoKKworICAg
IGZvciAodmFyIG5keCA9IDA7IG5keCA8IG51bUl0ZXJhdGlvbnM7ICsrbmR4KSB7CisgICAgICAg
IHZhciByZWYgPSBybmQuZ2V0SW50KDAsIDY0MDAwKTsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG5vblNpZ25pZmljYW50T2Zmc2V0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
Z2wudGV4UGFyYW1ldGVyZih0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGhpcy5tX2xldmVsVGFyZ2V0
LCByZWYgKyBub25TaWduaWZpY2FudE9mZnNldHNbaV0pOworICAgICAgICAgICAgdGhpcy5jaGVj
ayhnbHNTdGF0ZVF1ZXJ5LnZlcmlmeVRleHR1cmUodGhpcy5tX3RleHR1cmVUYXJnZXQsIHRoaXMu
bV9sZXZlbFRhcmdldCwgcmVmKSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlQ2Fz
ZX0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRp
b24KKyAqIEBwYXJhbSB7bnVtYmVyfSB0ZXh0dXJlVGFyZ2V0CisgKi8KK2VzM2ZUZXh0dXJlU3Rh
dGVRdWVyeS5UZXh0dXJlSW1tdXRhYmxlTGV2ZWxzQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2Ny
aXB0aW9uLCB0ZXh0dXJlVGFyZ2V0KSB7CisgICAgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1
cmVDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIHRleHR1cmVUYXJnZXQpOworfTsK
Kworc2V0UGFyZW50Q2xhc3MoZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVJbW11dGFibGVM
ZXZlbHNDYXNlLCBlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2UpOworCitlczNmVGV4
dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUltbXV0YWJsZUxldmVsc0Nhc2UucHJvdG90eXBlLnRlc3RU
ZXh0dXJlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5jaGVjayhnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eVRleHR1cmUodGhpcy5tX3RleHR1cmVUYXJnZXQsIGdsLlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVM
UywgMCkpOworICAgIGZvciAodmFyIGxldmVsID0gMTsgbGV2ZWwgPD0gODsgKytsZXZlbCkgewor
ICAgICAgICB2YXIgdGV4dHVyZUlEID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5i
aW5kVGV4dHVyZSh0aGlzLm1fdGV4dHVyZVRhcmdldCwgdGV4dHVyZUlEKTsKKworICAgICAgICBp
ZiAodGhpcy5tX3RleHR1cmVUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRF9BUlJBWSB8fCB0aGlzLm1f
dGV4dHVyZVRhcmdldCA9PSBnbC5URVhUVVJFXzNEKQorICAgICAgICAgICAgZ2wudGV4U3RvcmFn
ZTNEKHRoaXMubV90ZXh0dXJlVGFyZ2V0LCBsZXZlbCwgZ2wuUkdCOCwgMjU2LCAyNTYsIDI1Nik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsLnRleFN0b3JhZ2UyRCh0aGlzLm1fdGV4dHVy
ZVRhcmdldCwgbGV2ZWwsIGdsLlJHQjgsIDI1NiwgMjU2KTsKKworICAgICAgICB0aGlzLmNoZWNr
KGdsc1N0YXRlUXVlcnkudmVyaWZ5VGV4dHVyZSh0aGlzLm1fdGV4dHVyZVRhcmdldCwgZ2wuVEVY
VFVSRV9JTU1VVEFCTEVfTEVWRUxTLCBsZXZlbCkpOworICAgICAgICBnbC5kZWxldGVUZXh0dXJl
KHRleHR1cmVJRCk7CisgICAgfQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUNhc2V9CisgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgKiBAcGFyYW0ge251bWJl
cn0gdGV4dHVyZVRhcmdldAorICovCitlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZUltbXV0
YWJsZUZvcm1hdENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgdGV4dHVyZVRhcmdl
dCkgeworICAgIGVzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uLCB0ZXh0dXJlVGFyZ2V0KTsKK307CisKK3NldFBhcmVudENsYXNzKGVz
M2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlSW1tdXRhYmxlRm9ybWF0Q2FzZSwgZXMzZlRleHR1
cmVTdGF0ZVF1ZXJ5LlRleHR1cmVDYXNlKTsKKworZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1
cmVJbW11dGFibGVGb3JtYXRDYXNlLnByb3RvdHlwZS50ZXN0VGV4dHVyZSA9IGZ1bmN0aW9uKCkg
eworICAgIHRoaXMuY2hlY2soZ2xzU3RhdGVRdWVyeS52ZXJpZnlUZXh0dXJlKHRoaXMubV90ZXh0
dXJlVGFyZ2V0LCBnbC5URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMsIDApKTsKKyAgICB2YXIgdGVz
dFNpbmdsZUZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgICAgICB2YXIgdGV4dHVyZUlE
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5kVGV4dHVyZSh0aGlzLm1fdGV4
dHVyZVRhcmdldCwgdGV4dHVyZUlEKTsKKworICAgICAgICBpZiAodGhpcy5tX3RleHR1cmVUYXJn
ZXQgPT0gZ2wuVEVYVFVSRV8yRF9BUlJBWSB8fCB0aGlzLm1fdGV4dHVyZVRhcmdldCA9PSBnbC5U
RVhUVVJFXzNEKQorICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTNEKHRoaXMubV90ZXh0dXJlVGFy
Z2V0LCAxLCBmb3JtYXQsIDMyLCAzMiwgMzIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBn
bC50ZXhTdG9yYWdlMkQodGhpcy5tX3RleHR1cmVUYXJnZXQsIDEsIGZvcm1hdCwgMzIsIDMyKTsK
KworICAgICAgICB0aGlzLmNoZWNrKGdsc1N0YXRlUXVlcnkudmVyaWZ5VGV4dHVyZSh0aGlzLm1f
dGV4dHVyZVRhcmdldCwgZ2wuVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFULCAxKSk7CisgICAgICAg
IGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZUlEKTsKKyAgICB9OworCisgICAgdmFyIGZvcm1hdHMg
PSBbCisgICAgICAgIGdsLlJHQkEzMkksIGdsLlJHQkEzMlVJLCBnbC5SR0JBMTZJLCBnbC5SR0JB
MTZVSSwgZ2wuUkdCQTgsIGdsLlJHQkE4SSwKKyAgICAgICAgZ2wuUkdCQThVSSwgZ2wuU1JHQjhf
QUxQSEE4LCBnbC5SR0IxMF9BMiwgZ2wuUkdCMTBfQTJVSSwgZ2wuUkdCQTQsCisgICAgICAgIGds
LlJHQjVfQTEsIGdsLlJHQjgsIGdsLlJHQjU2NSwgZ2wuUkczMkksIGdsLlJHMzJVSSwgZ2wuUkcx
NkksIGdsLlJHMTZVSSwKKyAgICAgICAgZ2wuUkc4LCBnbC5SRzhJLCBnbC5SRzhVSSwgZ2wuUjMy
SSwgZ2wuUjMyVUksIGdsLlIxNkksIGdsLlIxNlVJLCBnbC5SOCwKKyAgICAgICAgZ2wuUjhJLCBn
bC5SOFVJLAorCisgICAgICAgIGdsLlJHQkEzMkYsIGdsLlJHQkExNkYsIGdsLlJHQkE4X1NOT1JN
LCBnbC5SR0IzMkYsCisgICAgICAgIGdsLlJHQjMySSwgZ2wuUkdCMzJVSSwgZ2wuUkdCMTZGLCBn
bC5SR0IxNkksIGdsLlJHQjE2VUksIGdsLlJHQjhfU05PUk0sCisgICAgICAgIGdsLlJHQjhJLCBn
bC5SR0I4VUksIGdsLlNSR0I4LCBnbC5SMTFGX0cxMUZfQjEwRiwgZ2wuUkdCOV9FNSwgZ2wuUkcz
MkYsCisgICAgICAgIGdsLlJHMTZGLCBnbC5SRzhfU05PUk0sIGdsLlIzMkYsIGdsLlIxNkYsIGds
LlI4X1NOT1JNCisgICAgXTsKKworICAgIHZhciBub24zZEZvcm1hdHMgPSBbCisgICAgICAgIGds
LkRFUFRIX0NPTVBPTkVOVDMyRiwgZ2wuREVQVEhfQ09NUE9ORU5UMjQsIGdsLkRFUFRIX0NPTVBP
TkVOVDE2LAorICAgICAgICBnbC5ERVBUSDMyRl9TVEVOQ0lMOCwgZ2wuREVQVEgyNF9TVEVOQ0lM
OAorICAgIF07CisKKyAgICBmb3IgKHZhciBmb3JtYXROZHggPSAwOyBmb3JtYXROZHggPCBmb3Jt
YXRzLmxlbmd0aDsgKytmb3JtYXROZHgpCisgICAgICAgIHRlc3RTaW5nbGVGb3JtYXQuYmluZCh0
aGlzLCBmb3JtYXRzW2Zvcm1hdE5keF0pOworCisgICAgaWYgKHRoaXMubV90ZXh0dXJlVGFyZ2V0
ICE9IGdsLlRFWFRVUkVfM0QpCisgICAgICAgIGZvciAodmFyIGZvcm1hdE5keCA9IDA7IGZvcm1h
dE5keCA8IG5vbjNkRm9ybWF0cy5sZW5ndGg7ICsrZm9ybWF0TmR4KQorICAgICAgICAgICAgdGVz
dFNpbmdsZUZvcm1hdC5iaW5kKHRoaXMsIG5vbjNkRm9ybWF0c1tmb3JtYXROZHhdKTsKK307CisK
Ky8qKgorKiBAY29uc3RydWN0b3IKKyogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQor
Ki8KK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlU3RhdGVRdWVyeSA9IGZ1bmN0aW9uKCkg
eworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3RleHR1cmUnLCAnVGV4dHVy
ZSBTdGF0ZSBRdWVyeSB0ZXN0cycpOworfTsKKworZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1
cmVTdGF0ZVF1ZXJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRl
c3QucHJvdG90eXBlKTsKK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlU3RhdGVRdWVyeS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZVN0YXRl
UXVlcnk7CisKK2VzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlU3RhdGVRdWVyeS5wcm90b3R5
cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXh0dXJlVGFyZ2V0cyA9IFsKKyAgICAg
ICAgWyd0ZXh0dXJlXzJkJywgZ2wuVEVYVFVSRV8yRF0sCisgICAgICAgIFsndGV4dHVyZV8zZCcs
IGdsLlRFWFRVUkVfM0RdLAorICAgICAgICBbJ3RleHR1cmVfMmRfYXJyYXknLCBnbC5URVhUVVJF
XzJEX0FSUkFZXSwKKyAgICAgICAgWyd0ZXh0dXJlX2N1YmVfbWFwJywgZ2wuVEVYVFVSRV9DVUJF
X01BUF0KKyAgICBdOworCisgICAgdmFyIHN0YXRlID0gdGhpczsKKyAgICB2YXIgd3JhcFZhbHVl
cyA9IFtnbC5DTEFNUF9UT19FREdFLCBnbC5SRVBFQVQsIGdsLk1JUlJPUkVEX1JFUEVBVF07Cisg
ICAgdmFyIG1hZ1ZhbHVlcyA9IFtnbC5ORUFSRVNULCBnbC5MSU5FQVJdOworICAgIHZhciBtaW5W
YWx1ZXMgPSBbZ2wuTkVBUkVTVCwgZ2wuTElORUFSLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNU
LCBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIsIGdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCwgZ2wu
TElORUFSX01JUE1BUF9MSU5FQVJdOworICAgIHZhciBtb2RlcyA9IFtnbC5DT01QQVJFX1JFRl9U
T19URVhUVVJFLCBnbC5OT05FXTsKKyAgICB2YXIgY29tcGFyZUZ1bmNzID0gW2dsLkxFUVVBTCwg
Z2wuR0VRVUFMLCBnbC5MRVNTLCBnbC5HUkVBVEVSLCBnbC5FUVVBTCwgZ2wuTk9URVFVQUwsIGds
LkFMV0FZUywgZ2wuTkVWRVJdOworICAgIHRleHR1cmVUYXJnZXRzLmZvckVhY2goZnVuY3Rpb24o
ZWxlbSkgeworICAgICAgICB2YXIgbmFtZSA9IGVsZW1bMF07CisgICAgICAgIHZhciB0YXJnZXQg
PSBlbGVtWzFdOworICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1
ZXJ5LklzVGV4dHVyZUNhc2UobmFtZSArICdfaXNfdGV4dHVyZScsICdJc1RleHR1cmUnLCB0YXJn
ZXQpKTsKKyAgICAgICAgc3RhdGUuYWRkQ2hpbGQobmV3IGVzM2ZUZXh0dXJlU3RhdGVRdWVyeS5U
ZXh0dXJlUGFyYW1DYXNlKG5hbWUgKyAnX3RleHR1cmVfd3JhcF9zJyAsICdURVhUVVJFX1dSQVBf
UycsCisgICAgICAgICAgICB0YXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5SRVBFQVQsIHdy
YXBWYWx1ZXMpKTsKKyAgICAgICAgaWYgKHRhcmdldCA9PSBnbC5URVhUVVJFXzJEIHx8CisgICAg
ICAgICAgICB0YXJnZXQgPT0gZ2wuVEVYVFVSRV8zRCB8fAorICAgICAgICAgICAgdGFyZ2V0ID09
IGdsLlRFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMz
ZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVQYXJhbUNhc2UobmFtZSArICdfdGV4dHVyZV93cmFw
X3QnICwgJ1RFWFRVUkVfV1JBUF9UJywKKyAgICAgICAgICAgICAgICB0YXJnZXQsIGdsLlRFWFRV
UkVfV1JBUF9ULCBnbC5SRVBFQVQsIHdyYXBWYWx1ZXMpKTsKKworICAgICAgICBpZiAodGFyZ2V0
ID09IGdsLlRFWFRVUkVfM0QpCisgICAgICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMzZlRl
eHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVQYXJhbUNhc2UobmFtZSArICdfdGV4dHVyZV93cmFwX3In
ICwgJ1RFWFRVUkVfV1JBUF9SJywKKyAgICAgICAgICAgICAgICB0YXJnZXQsIGdsLlRFWFRVUkVf
V1JBUF9SLCBnbC5SRVBFQVQsIHdyYXBWYWx1ZXMpKTsKKworICAgICAgICBzdGF0ZS5hZGRDaGls
ZChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVQYXJhbUNhc2UobmFtZSArICdfdGV4
dHVyZV9tYWdfZmlsdGVyJyAsICdURVhUVVJFX01BR19GSUxURVInLAorICAgICAgICAgICAgdGFy
Z2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUiwgbWFnVmFsdWVzKSk7CisgICAg
ICAgIHN0YXRlLmFkZENoaWxkKG5ldyBlczNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZVBhcmFt
Q2FzZShuYW1lICsgJ190ZXh0dXJlX21pbl9maWx0ZXInICwgJ1RFWFRVUkVfTUlOX0ZJTFRFUics
CisgICAgICAgICAgICB0YXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVF9N
SVBNQVBfTElORUFSLCBtaW5WYWx1ZXMpKTsKKyAgICAgICAgc3RhdGUuYWRkQ2hpbGQobmV3IGVz
M2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlTE9EQ2FzZShuYW1lICsgJ190ZXh0dXJlX21pbl9s
b2QnICwgJ1RFWFRVUkVfTUlOX0xPRCcsIHRhcmdldCwgZ2wuVEVYVFVSRV9NSU5fTE9ELCAtMTAw
MCkpOworICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRl
eHR1cmVMT0RDYXNlKG5hbWUgKyAnX3RleHR1cmVfbWF4X2xvZCcgLCAnVEVYVFVSRV9NQVhfTE9E
JywgdGFyZ2V0LCBnbC5URVhUVVJFX01BWF9MT0QsIDEwMDApKTsKKyAgICAgICAgc3RhdGUuYWRk
Q2hpbGQobmV3IGVzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlTGV2ZWxDYXNlKG5hbWUgKyAn
X3RleHR1cmVfYmFzZV9sZXZlbCcgLCAnVEVYVFVSRV9CQVNFX0xFVkVMJywgdGFyZ2V0LCBnbC5U
RVhUVVJFX0JBU0VfTEVWRUwsIDApKTsKKyAgICAgICAgc3RhdGUuYWRkQ2hpbGQobmV3IGVzM2ZU
ZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlTGV2ZWxDYXNlKG5hbWUgKyAnX3RleHR1cmVfbWF4X2xl
dmVsJyAsICdURVhUVVJFX01BWF9MRVZFTCcsIHRhcmdldCwgZ2wuVEVYVFVSRV9NQVhfTEVWRUws
IDEwMDApKTsKKworICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1
ZXJ5LlRleHR1cmVQYXJhbUNhc2UobmFtZSArICdfdGV4dHVyZV9jb21wYXJlX21vZGUnICwgJ1RF
WFRVUkVfQ09NUEFSRV9NT0RFJywKKyAgICAgICAgICAgIHRhcmdldCwgZ2wuVEVYVFVSRV9DT01Q
QVJFX01PREUsIGdsLk5PTkUsIG1vZGVzKSk7CisgICAgICAgIHN0YXRlLmFkZENoaWxkKG5ldyBl
czNmVGV4dHVyZVN0YXRlUXVlcnkuVGV4dHVyZVBhcmFtQ2FzZShuYW1lICsgJ190ZXh0dXJlX2Nv
bXBhcmVfZnVuYycgLCAnVEVYVFVSRV9DT01QQVJFX0ZVTkMnLAorICAgICAgICAgICAgdGFyZ2V0
LCBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywgZ2wuTEVRVUFMLCBjb21wYXJlRnVuY3MpKTsKKwor
ICAgICAgICBzdGF0ZS5hZGRDaGlsZChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1cmVJ
bW11dGFibGVMZXZlbHNDYXNlKG5hbWUgKyAnX3RleHR1cmVfaW1tdXRhYmxlX2xldmVscycsICdU
RVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMnLCB0YXJnZXQpKTsKKyAgICAgICAgc3RhdGUuYWRkQ2hp
bGQobmV3IGVzM2ZUZXh0dXJlU3RhdGVRdWVyeS5UZXh0dXJlSW1tdXRhYmxlRm9ybWF0Q2FzZShu
YW1lICsgJ190ZXh0dXJlX2ltbXV0YWJsZV9mb3JtYXQnLCAnVEVYVFVSRV9JTU1VVEFCTEVfRk9S
TUFUJywgdGFyZ2V0KSk7CisgICAgfSk7Cit9OworCisvKioKKyogUnVuIHRlc3QKKyogQHBhcmFt
IHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0fSBjb250ZXh0CisqLworZXMzZlRleHR1cmVTdGF0ZVF1
ZXJ5LnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICBnbCA9IGNvbnRleHQ7CisgICAgLy9T
ZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5y
dW5uZXI7CisgICAgc3RhdGUuc2V0Um9vdChuZXcgZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5LlRleHR1
cmVTdGF0ZVF1ZXJ5KCkpOworCisgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2Yg
dGhpcyB0ZXN0IHNlcmllcy4KKyAgICBzZXRDdXJyZW50VGVzdE5hbWUoc3RhdGUudGVzdENhc2Vz
LmZ1bGxOYW1lKCkpOworICAgIGRlc2NyaXB0aW9uKHN0YXRlLnRlc3RDYXNlcy5nZXREZXNjcmlw
dGlvbigpKTsKKworICAgIHRyeSB7CisgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMKKyAgICAgICAg
dGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgfQorICAgIGNhdGNoIChlcnIpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmVGV4dHVyZVN0YXRlUXVlcnku
cnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRl
KCk7CisgICAgfQorfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVX
cmFwVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRleHR1cmVXcmFwVGVzdHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTZkNmU5NmQxNGE0Njg3NDQ0MGYzYTAyMDhhNGMzZGYzYTY5ODdmMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9lczNmVGV4dHVyZVdyYXBUZXN0cy5qcwpAQCAtMCwwICsxLDQzNCBA
QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9w
ZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuY29tbW9uLnRjdUNvbXByZXNzZWRUZXh0dXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVz
dENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJp
ZmllcicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmUnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4
dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1RleHR1cmVUZXN0VXRpbCcpOworCitn
b29nLnNjb3BlKGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7P1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHR9ICovIHZhciBnbDsKKworICAgIHZhciBlczNmVGV4dHVyZVdyYXBUZXN0cyA9IGZ1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZ2x1VGV4dHVyZSA9IGZyYW1l
d29yay5vcGVuZ2wuZ2x1VGV4dHVyZTsKKyAgICB2YXIgZ2x1VGV4dHVyZVV0aWwgPSBmcmFtZXdv
cmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOworICAgIHZhciBnbHNUZXh0dXJlVGVzdFV0aWwgPSBt
b2R1bGVzLnNoYXJlZC5nbHNUZXh0dXJlVGVzdFV0aWw7CisgICAgdmFyIHRjdUNvbXByZXNzZWRU
ZXh0dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VDb21wcmVzc2VkVGV4dHVyZTsKKyAgICB2YXIg
ZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKyAgICB2YXIgZGVN
YXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciB0Y3VQaXhlbEZv
cm1hdCA9IGZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQ7CisgICAgdmFyIHRjdVN1cmZh
Y2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7CisgICAgdmFyIHRjdVRleExvb2t1cFZl
cmlmaWVyID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXhMb29rdXBWZXJpZmllcjsKKyAgICB2YXIg
dGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAgICB2YXIgdGN1VGV4
dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsOworICAgIHZhciBkZVN0
cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworCisgICAgLyoqCisgICAg
ICogQGVudW0ge251bWJlcn0KKyAgICAgKi8KKyAgICB2YXIgVmlld3BvcnQgPSB7CisgICAgICAg
IFdJRFRIOiAyNTYsCisgICAgICAgIEhFSUdIVDogMjU2CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPj19IGJsCisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+PX0gdHIKKyAgICAgKi8KKyAgICBlczNmVGV4dHVyZVdy
YXBUZXN0cy5DYXNlID0gZnVuY3Rpb24oYmwsIHRyKSB7CisgICAgICAgIC8qKiBAdHlwZSB7P0Fy
cmF5PG51bWJlcj59ICovIHRoaXMuYm90dG9tTGVmdCA9IGJsIHx8IG51bGw7CisgICAgICAgIC8q
KiBAdHlwZSB7P0FycmF5PG51bWJlcj59ICovIHRoaXMudG9wUmlnaHQgPSB0ciB8fCBudWxsOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgKiBAcGFyYW0gez90Y3VDb21wcmVz
c2VkVGV4dHVyZS5Gb3JtYXR9IGNvbXByZXNzZWRGb3JtYXQKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gd3JhcFMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd3JhcFQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbWluRmlsdGVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1hZ0ZpbHRlcgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAg
ICAgKi8KKyAgICBlczNmVGV4dHVyZVdyYXBUZXN0cy5UZXh0dXJlV3JhcENhc2UgPSBmdW5jdGlv
bihuYW1lLCBkZXNjcmlwdGlvbiwgY29tcHJlc3NlZEZvcm1hdCwgd3JhcFMsIHdyYXBULCBtaW5G
aWx0ZXIsIG1hZ0ZpbHRlciwgd2lkdGgsIGhlaWdodCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubV9mb3JtYXQgPSBnbC5OT05FOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdGhpcy5tX2RhdGFUeXBlID0gZ2wuTk9ORTsKKyAgICAgICAgLyoqIEB0eXBl
IHs/dGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0fSAqLyB0aGlzLm1fY29tcHJlc3NlZEZvcm1h
dCA9IGNvbXByZXNzZWRGb3JtYXQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
Lm1fd3JhcFMgPSB3cmFwUzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV93
cmFwVCA9IHdyYXBUOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX21pbkZp
bHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9t
YWdGaWx0ZXIgPSBtYWdGaWx0ZXI7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
Lm1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9o
ZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlRleHR1cmVXcmFw
VGVzdHMuQ2FzZT59ICovIHRoaXMubV9jYXNlcyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX2Nhc2VOZHggPSAwOworICAgICAgICAvKiogQHR5cGUge2dsdVRleHR1
cmUuVGV4dHVyZTJEfSAqLyB0aGlzLm1fdGV4dHVyZSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlcn0gKi8KKyAgICAgICAgdGhpcy5t
X3JlbmRlcmVyID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIoZ2x1U2hh
ZGVyVXRpbC5nZXRHTFNMVmVyc2lvblN0cmluZyhnbHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9uLlYz
MDBfRVMpLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCk7CisgICAg
fTsKKworICAgIGVzM2ZUZXh0dXJlV3JhcFRlc3RzLlRleHR1cmVXcmFwQ2FzZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisKKyAgICAv
KiogQ29weSB0aGUgY29uc3RydWN0b3IgKi8KKyAgICBlczNmVGV4dHVyZVdyYXBUZXN0cy5UZXh0
dXJlV3JhcENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlRleHR1cmVXcmFwVGVzdHMu
VGV4dHVyZVdyYXBDYXNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGFUeXBlCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHdyYXBTCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdyYXBUCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG1pbkZpbHRlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYWdGaWx0ZXIK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVp
Z2h0CisgICAgICogQHJldHVybiB7ZXMzZlRleHR1cmVXcmFwVGVzdHMuVGV4dHVyZVdyYXBDYXNl
fQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlV3JhcFRlc3RzLnRleHR1cmVXcmFwQ2FzZUZyb21G
b3JtYXQgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgZm9ybWF0LCBkYXRhVHlwZSwgd3Jh
cFMsIHdyYXBULCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlciwgd2lkdGgsIGhlaWdodCkgeworICAgICAg
ICB2YXIgdGV4V3JhcENhc2UgPSBuZXcgZXMzZlRleHR1cmVXcmFwVGVzdHMuVGV4dHVyZVdyYXBD
YXNlKG5hbWUsIGRlc2NyaXB0aW9uLCBudWxsLCB3cmFwUywgd3JhcFQsIG1pbkZpbHRlciwgbWFn
RmlsdGVyLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgdGV4V3JhcENhc2UubV9mb3JtYXQgPSBn
bC5SR0JBOworICAgICAgICB0ZXhXcmFwQ2FzZS5tX2RhdGFUeXBlID0gZ2wuVU5TSUdORURfQllU
RTsKKyAgICAgICAgcmV0dXJuIHRleFdyYXBDYXNlOworICAgIH07CisKKyAgICAvKioKKyAgICAg
Ki8KKyAgICBlczNmVGV4dHVyZVdyYXBUZXN0cy5UZXh0dXJlV3JhcENhc2UucHJvdG90eXBlLmlu
aXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9jb21wcmVzc2VkRm9ybWF0ICE9
PSBudWxsKSB7CisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb21wcmVzc2VkIHRleHR1cmUuCisK
KyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGhpcy5tX2Zvcm1hdCA9PSBnbC5OT05FICYm
IHRoaXMubV9kYXRhVHlwZSA9PSBnbC5OT05FLCAnaW5pdC9jb21wcmVzc2VkRm9ybWF0JywgZmFs
c2UsIHRydWUpOworICAgICAgICAgICAgaWYgKHRjdUNvbXByZXNzZWRUZXh0dXJlLmlzRXRjRm9y
bWF0KHRoaXMubV9jb21wcmVzc2VkRm9ybWF0KSkgeworICAgICAgICAgICAgICAgIC8vIENyZWF0
ZSBFVEMgdGV4dHVyZS4gQW55IGNvbnRlbnQgaXMgdmFsaWQuCisKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge3RjdUNvbXByZXNzZWRUZXh0dXJlLkNvbXByZXNzZWRUZXh0dXJlfSovCisgICAg
ICAgICAgICAgICAgdmFyIGNvbXByZXNzZWRUZXh0dXJlID0gbmV3IHRjdUNvbXByZXNzZWRUZXh0
dXJlLkNvbXByZXNzZWRUZXh0dXJlKHRoaXMubV9jb21wcmVzc2VkRm9ybWF0LCB0aGlzLm1fd2lk
dGgsIHRoaXMubV9oZWlnaHQpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgZGF0YVNpemUgPSBjb21wcmVzc2VkVGV4dHVyZS5nZXREYXRhU2l6ZSgpOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7Z29vZy5OdW1iZXJBcnJheX0gKi8gdmFyIGRhdGEgPSBjb21w
cmVzc2VkVGV4dHVyZS5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtkZVJh
bmRvbS5SYW5kb219ICovIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5nLmRl
U3RyaW5nSGFzaCh0aGlzLm5hbWUpKTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YVNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHJuZC5n
ZXRGbG9hdCgpICYgMHhmZjsKKworICAgICAgICAgICAgICAgIHRoaXMubV90ZXh0dXJlID0gZ2x1
VGV4dHVyZS50ZXh0dXJlMkRGcm9tQ29tcHJlc3NlZFRleHR1cmUoZ2wsIDEsIFtjb21wcmVzc2Vk
VGV4dHVyZV0pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdPbmx5IEVUQzIgYW5kIEVBQyBhcmUgc3VwcG9ydGVkLicpOworICAgICAgICB9IGVs
c2V7CisgICAgICAgICAgICB0aGlzLm1fdGV4dHVyZSA9IGdsdVRleHR1cmUudGV4dHVyZTJERnJv
bUZvcm1hdChnbCwgdGhpcy5tX2Zvcm1hdCwgdGhpcy5tX2RhdGFUeXBlLCB0aGlzLm1fd2lkdGgs
IHRoaXMubV9oZWlnaHQpOworCisgICAgICAgICAgICAvLyBGaWxsIGxldmVsIDAuCisgICAgICAg
ICAgICB0aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCkuYWxsb2NMZXZlbCgwKTsKKyAgICAg
ICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHRoaXMubV90
ZXh0dXJlLmdldFJlZlRleHR1cmUoKS5nZXRMZXZlbCgwKSwgWy0wLjUsIC0wLjUsIC0wLjUsIDIu
MF0sIFsxLjAsIDEuMCwgMS4wLCAwLjBdKTsKKworICAgICAgICAgICAgdGhpcy5tX3RleHR1cmUu
dXBsb2FkKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWItY2FzZXMuCisKKyAgICAgICAg
dGhpcy5tX2Nhc2VzLnB1c2gobmV3IGVzM2ZUZXh0dXJlV3JhcFRlc3RzLkNhc2UoWy0xLjUsIC0z
LjBdLCBbMS41LCAyLjVdKSk7CisgICAgICAgIHRoaXMubV9jYXNlcy5wdXNoKG5ldyBlczNmVGV4
dHVyZVdyYXBUZXN0cy5DYXNlKFstMC41LCAwLjc1XSwgWzAuMjUsIDEuMjVdKSk7CisgICAgICAg
IGFzc2VydE1zZ09wdGlvbnModGhpcy5tX2Nhc2VOZHggPT0gMCwgJ21fY2FzZU5keCAhPSAwJywg
ZmFsc2UsIHRydWUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0
Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGVzM2ZUZXh0dXJlV3JhcFRlc3RzLlRl
eHR1cmVXcmFwQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAv
KiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydH0gKi8gdmFyIHZpZXdw
b3J0ID0gbmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SYW5kb21WaWV3cG9ydChnbC5jYW52YXMsIFZp
ZXdwb3J0LldJRFRILCBWaWV3cG9ydC5IRUlHSFQsIGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlz
Lm5hbWUpICsgdGhpcy5tX2Nhc2VOZHgpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2Uu
U3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkRnJhbWUgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZp
ZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1
cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlZmVyZW5jZUZyYW1lID0gbmV3IHRjdVN1cmZhY2UuU3Vy
ZmFjZSh2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAgICAgICAgLyoqIEB0eXBl
IHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSAqLyB2YXIgcmVmUGFyYW1zID0g
bmV3IGdsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXMoZ2xzVGV4dHVyZVRlc3RVdGls
LnRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzJEKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0
dXJlLlRleHR1cmVGb3JtYXR9ICovIHZhciB0ZXhGb3JtYXQgPSB0aGlzLm1fdGV4dHVyZS5nZXRS
ZWZUZXh0dXJlKCkuZ2V0Rm9ybWF0KCk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVy
Pn0gKi8gdmFyIHRleENvb3JkOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmVVdGlsLlRl
eHR1cmVGb3JtYXRJbmZvfSAqLyB2YXIgdGV4Rm9ybWF0SW5mbyA9IHRjdVRleHR1cmVVdGlsLmdl
dFRleHR1cmVGb3JtYXRJbmZvKHRleEZvcm1hdCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIHVzZURlZmF1bHRDb2xvclNjYWxlQW5kQmlhcyA9IHRydWU7CisKKyAgICAgICAg
Ly8gQmluZCB0byB1bml0IDAuCisgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAp
OworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0aGlzLm1fdGV4dHVyZS5n
ZXRHTFRleHR1cmUoKSk7CisKKyAgICAgICAgLy8gU2V0dXAgZmlsdGVyaW5nIGFuZCB3cmFwIG1v
ZGVzLgorICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TLCB0aGlzLm1fd3JhcFMpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCB0aGlzLm1fd3JhcFQpOworICAgICAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5tX21p
bkZpbHRlcik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NQUdfRklMVEVSLCB0aGlzLm1fbWFnRmlsdGVyKTsKKworICAgICAgICAvLyBQYXJhbWV0
ZXJzIGZvciByZWZlcmVuY2UgaW1hZ2VzLgorICAgICAgICByZWZQYXJhbXMuc2FtcGxlciA9IGds
dVRleHR1cmVVdGlsLm1hcEdMU2FtcGxlcldyYXBTVCh0aGlzLm1fd3JhcFMsIHRoaXMubV93cmFw
VCwgdGhpcy5tX21pbkZpbHRlciwgdGhpcy5tX21hZ0ZpbHRlcik7CisgICAgICAgIHJlZlBhcmFt
cy5sb2RNb2RlID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGUuRVhBQ1Q7CisgICAgICAgIHJl
ZlBhcmFtcy5zYW1wbGVyVHlwZSA9IGdsc1RleHR1cmVUZXN0VXRpbC5nZXRTYW1wbGVyVHlwZSh0
aGlzLm1fdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCkuZ2V0Rm9ybWF0KCkpOworICAgICAgICByZWZQ
YXJhbXMuY29sb3JTY2FsZSA9IHVzZURlZmF1bHRDb2xvclNjYWxlQW5kQmlhcyA/IHRleEZvcm1h
dEluZm8ubG9va3VwU2NhbGUgOiBbMS4wLCAxLjAsIDEuMCwgMS4wXTsKKyAgICAgICAgcmVmUGFy
YW1zLmNvbG9yQmlhcyA9IHVzZURlZmF1bHRDb2xvclNjYWxlQW5kQmlhcyA/IHRleEZvcm1hdElu
Zm8ubG9va3VwQmlhcyA6IFswLCAwLCAwLCAwXTsKKworICAgICAgICBnbC52aWV3cG9ydCh2aWV3
cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKKyAg
ICAgICAgdGV4Q29vcmQgPSBnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZVF1YWRUZXhDb29yZDJE
KHRoaXMubV9jYXNlc1t0aGlzLm1fY2FzZU5keF0uYm90dG9tTGVmdCwgdGhpcy5tX2Nhc2VzW3Ro
aXMubV9jYXNlTmR4XS50b3BSaWdodCk7CisgICAgICAgIHRoaXMubV9yZW5kZXJlci5yZW5kZXJR
dWFkKDAsIHRleENvb3JkLCByZWZQYXJhbXMpOworCisgICAgICAgIC8vIGdsdVBpeGVsVHJhbnNm
ZXIucmVhZFBpeGVscyh2aWV3cG9ydC54LCB2aWV3cG9ydC55LCByZW5kZXJlZEZyYW1lLmdldEFj
Y2VzcygpKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwaXhlbFNpemUgPSBy
ZW5kZXJlZEZyYW1lLmdldEFjY2VzcygpLmdldEZvcm1hdCgpLmdldFBpeGVsU2l6ZSgpOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBhcmFtID0gZGVNYXRoLmRlSXNQb3dlck9m
VHdvMzIocGl4ZWxTaXplKSA/IE1hdGgubWluKHBpeGVsU2l6ZSwgOCkgOiAxOworCisgICAgICAg
IGdsLnBpeGVsU3RvcmVpKGdsLlBBQ0tfQUxJR05NRU5ULCBwYXJhbSk7CisgICAgICAgIC8qKiBA
dHlwZSB7Z2x1VGV4dHVyZVV0aWwuVHJhbnNmZXJGb3JtYXR9ICovIHZhciBmb3JtYXQgPSBnbHVU
ZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChyZW5kZXJlZEZyYW1lLmdldEFjY2VzcygpLmdl
dEZvcm1hdCgpKTsKKworICAgICAgICByZW5kZXJlZEZyYW1lLnJlYWRWaWV3cG9ydChnbCwgdmll
d3BvcnQpOworCisgICAgICAgIC8vIGNvbnN0IHRjdTo6U2NvcGVkTG9nU2VjdGlvbiBzZWN0aW9u
IChsb2csIHN0cmluZygiVGVzdCIpICsgZGU6OnRvU3RyaW5nKG1fY2FzZU5keCksIHN0cmluZygi
VGVzdCAiKSArIGRlOjp0b1N0cmluZyhtX2Nhc2VOZHgpKTsKKyAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgaXNOZWFyZXN0T25seSA9IHRoaXMubV9taW5GaWx0ZXIgPT0gZ2wuTkVB
UkVTVCAmJiB0aGlzLm1fbWFnRmlsdGVyID09IGdsLk5FQVJFU1Q7CisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdmFyIGlzU1JHQiA9IHRleEZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJl
LkNoYW5uZWxPcmRlci5zUkdCIHx8IHRleEZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5zUkdCQTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VQaXhlbEZvcm1hdC5QaXhlbEZv
cm1hdH0gKi8gdmFyIHBpeGVsRm9ybWF0ID0gbmV3IHRjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0
KDgsIDgsIDgsIDgpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBj
b2xvckJpdHMgPSBkZU1hdGgubWF4KGRlTWF0aC5zdWJ0cmFjdChnbHNUZXh0dXJlVGVzdFV0aWwu
Z2V0Qml0c1ZlYyhwaXhlbEZvcm1hdCksIChpc05lYXJlc3RPbmx5ICYmICFpc1NSR0IgPyBbMSwg
MSwgMSwgMV0gOiBbMiwgMiwgMiwgMl0pKSwgWzAsIDAsIDAsIDBdKTsKKyAgICAgICAgLyoqIEB0
eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259ICovIHZhciBsb2RQcmVjaXNp
b24gPSBuZXcgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9uKDE4LCA1KTsKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259ICovCisg
ICAgICAgIHZhciBsb29rdXBQcmVjaXNpb24gPSBuZXcgdGN1VGV4TG9va3VwVmVyaWZpZXIuTG9v
a3VwUHJlY2lzaW9uKAorICAgICAgICAgICAgWzIwLCAyMCwgMF0sCisgICAgICAgICAgICBbNSwg
NSwgMF0sCisgICAgICAgICAgICBkZU1hdGguZGl2aWRlKHRjdVRleExvb2t1cFZlcmlmaWVyLmNv
bXB1dGVGaXhlZFBvaW50VGhyZXNob2xkKGNvbG9yQml0cyksIHJlZlBhcmFtcy5jb2xvclNjYWxl
KSwKKyAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5nZXRDb21wYXJlTWFzayhwaXhlbEZv
cm1hdCkKKyAgICAgICAgKTsKKworICAgICAgICAvLyBsb2cgPDwgVGVzdExvZzo6TWVzc2FnZSA8
PCAiTm90ZTogbG9va3VwIGNvb3JkaW5hdGVzOiBib3R0b20tbGVmdCAiIDw8IG1fY2FzZXNbbV9j
YXNlTmR4XS5ib3R0b21MZWZ0IDw8ICIsIHRvcC1yaWdodCAiIDw8IG1fY2FzZXNbbV9jYXNlTmR4
XS50b3BSaWdodCA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworCisgICAgICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSBnbHNUZXh0dXJlVGVzdFV0aWwudmVyaWZ5VGV4dHVyZTJE
UmVzdWx0KHJlbmRlcmVkRnJhbWUuZ2V0QWNjZXNzKCksIHRoaXMubV90ZXh0dXJlLmdldFJlZlRl
eHR1cmUoKSwgdGV4Q29vcmQsIHJlZlBhcmFtcywgbG9va3VwUHJlY2lzaW9uLCBsb2RQcmVjaXNp
b24sIHBpeGVsRm9ybWF0KTsKKworICAgICAgICBpZiAoIWlzT2spCisgICAgICAgICAgICB0ZXN0
RmFpbGVkT3B0aW9ucygnQ2FzZSAnICsgdGhpcy5tX2Nhc2VOZHggKyAnOiB2ZXJpZnlUZXh0dXJl
MkRSZXN1bHQgaXMgZmFsc2UnLCBmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRl
c3RQYXNzZWRPcHRpb25zKCdDYXNlICcgKyB0aGlzLm1fY2FzZU5keCArICc6IE9LJywgdHJ1ZSk7
CisKKyAgICAgICAgdGhpcy5tX2Nhc2VOZHgrKzsKKworICAgICAgICByZXR1cm4gdGhpcy5tX2Nh
c2VOZHggPCB0aGlzLm1fY2FzZXMubGVuZ3RoID8gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5D
T05USU5VRSA6IHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogSW5pdGlhbGl6ZSB0ZXN0CisgICAgICovCisgICAgZXMzZlRleHR1cmVXcmFw
VGVzdHMuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgdGVzdEdyb3VwID0gdGN1VGVz
dENhc2UucnVubmVyLnRlc3RDYXNlczsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciBuYW1lOworICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAq
IEBzdHJ1Y3QKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBh
cmFtIHtudW1iZXJ9IG1vZGUKKyAgICAgICAgICovCisgICAgICAgIHZhciBXcmFwTW9kZSA9IGZ1
bmN0aW9uKG5hbWUsIG1vZGUpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0
aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bW9kZSA9IG1vZGU7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXcmFw
TW9kZT59ICovIHZhciB3cmFwTW9kZXMgPSBbCisgICAgICAgICAgICBuZXcgV3JhcE1vZGUoJ2Ns
YW1wJywgZ2wuQ0xBTVBfVE9fRURHRSksCisgICAgICAgICAgICBuZXcgV3JhcE1vZGUoJ3JlcGVh
dCcsIGdsLlJFUEVBVCksCisgICAgICAgICAgICBuZXcgV3JhcE1vZGUoJ21pcnJvcicsIGdsLk1J
UlJPUkVEX1JFUEVBVCkKKyAgICAgICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAgICAgICAgICovCisgICAg
ICAgIHZhciBGaWx0ZXJpbmdNb2RlID0gZnVuY3Rpb24obmFtZSwgbW9kZSkgeworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tb2RlID0gbW9kZTsKKyAgICAgICAgfTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PEZpbHRlcmluZ01vZGU+fSAqLyB2YXIgZmlsdGVyaW5nTW9k
ZXMgPSBbCisgICAgICAgICAgICBuZXcgRmlsdGVyaW5nTW9kZSgnbmVhcmVzdCcsIGdsLk5FQVJF
U1QpLAorICAgICAgICAgICAgbmV3IEZpbHRlcmluZ01vZGUoJ2xpbmVhcicsIGdsLkxJTkVBUikK
KyAgICAgICAgXTsKKworICAgICAgICAvKiBCZWdpbiBSR0JBOCBDYXNlcyAqLworICAgICAgICAv
KioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRo
CisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAgICAgICAgICovCisgICAgICAg
IHZhciBSZ2JhOFNpemUgPSBmdW5jdGlvbihuYW1lLCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAg
ICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIH07CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxSZ2JhOFNpemU+fSAqLyB2YXIgcmdiYThTaXplcyA9
IFsKKyAgICAgICAgICAgIG5ldyBSZ2JhOFNpemUoJ3BvdCcsIDY0LCAxMjgpLAorICAgICAgICAg
ICAgbmV3IFJnYmE4U2l6ZSgnbnBvdCcsIDYzLCAxMTIpCisgICAgICAgIF07CisKKyAgICAgICAg
Zm9yICh2YXIgc2l6ZSA9IDA7IHNpemUgPCByZ2JhOFNpemVzLmxlbmd0aDsgc2l6ZSsrKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgcmdiYThH
cm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3JnYmE4JywgJycpOworICAgICAgICAgICAgdGVz
dEdyb3VwLmFkZENoaWxkKHJnYmE4R3JvdXApOworICAgICAgICAgICAgZm9yICh2YXIgd3JhcFMg
PSAwOyB3cmFwUyA8IHdyYXBNb2Rlcy5sZW5ndGg7IHdyYXBTKyspIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciB3cmFwVCA9IDA7IHdyYXBUIDwgd3JhcE1vZGVzLmxlbmd0aDsgd3JhcFQrKykg
eworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmaWx0ZXIgPSAwOyBmaWx0ZXIgPCBmaWx0
ZXJpbmdNb2Rlcy5sZW5ndGg7IGZpbHRlcisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2Rlc1t3cmFwU10ubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZXNbd3JhcFRdLm5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyaW5nTW9kZXNbZmlsdGVyXS5uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmE4U2l6ZXNbc2l6ZV0ubmFtZQorICAgICAg
ICAgICAgICAgICAgICAgICAgXS5qb2luKCdfJyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJnYmE4R3JvdXAuYWRkQ2hpbGQoZXMzZlRleHR1cmVXcmFwVGVzdHMudGV4dHVyZVdyYXBDYXNl
RnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCAnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2Rlc1t3cmFwU10ubW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cmFwTW9kZXNbd3JhcFRdLm1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsdGVyaW5nTW9kZXNbZmlsdGVyXS5tb2RlLCBmaWx0ZXJpbmdNb2Rlc1tm
aWx0ZXJdLm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYThTaXplc1tzaXpl
XS53aWR0aCwgcmdiYThTaXplc1tzaXplXS5oZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIC8qIEVuZCBSR0JBOCBDYXNlcyAqLworCisgICAgICAg
IC8qIEJlZ2luIEVUQy0yIChhbmQgRUFDKSBjYXNlcyAqLworICAgICAgICAvKioKKyAgICAgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgICAgICogQHBhcmFtIHt0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3Jt
YXR9IGZvcm1hdAorICAgICAgICAgKi8KKyAgICAgICAgdmFyIEV0YzJGb3JtYXQgPSBmdW5jdGlv
bihuYW1lLCBmb3JtYXQpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlz
Lm5hbWUgPSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VDb21wcmVzc2VkVGV4dHVy
ZS5Gb3JtYXR9ICovIHRoaXMuZm9ybWF0ID0gZm9ybWF0OworICAgICAgICB9OworCisgICAgICAg
IHZhciBldGMyRm9ybWF0cyA9IFsKKyAgICAgICAgICAgIG5ldyBFdGMyRm9ybWF0KCdlYWNfcjEx
JywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVBQ19SMTEpLAorICAgICAgICAgICAgbmV3
IEV0YzJGb3JtYXQoJ2VhY19zaWduZWRfcjExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0
LkVBQ19TSUdORURfUjExKSwKKyAgICAgICAgICAgIG5ldyBFdGMyRm9ybWF0KCdlYWNfcmcxMScs
IHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FQUNfUkcxMSksCisgICAgICAgICAgICBuZXcg
RXRjMkZvcm1hdCgnZWFjX3NpZ25lZF9yZzExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0
LkVBQ19TSUdORURfUkcxMSksCisgICAgICAgICAgICBuZXcgRXRjMkZvcm1hdCgnZXRjMl9yZ2I4
JywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJfUkdCOCksCisgICAgICAgICAgICBu
ZXcgRXRjMkZvcm1hdCgnZXRjMl9zcmdiOCcsIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5F
VEMyX1NSR0I4KSwKKyAgICAgICAgICAgIG5ldyBFdGMyRm9ybWF0KCdldGMyX3JnYjhfcHVuY2h0
aHJvdWdoX2FscGhhMScsIHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMSksCisgICAgICAgICAgICBuZXcgRXRjMkZvcm1hdCgnZXRjMl9zcmdi
OF9wdW5jaHRocm91Z2hfYWxwaGExJywgdGN1Q29tcHJlc3NlZFRleHR1cmUuRm9ybWF0LkVUQzJf
U1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMSksCisgICAgICAgICAgICBuZXcgRXRjMkZvcm1hdCgn
ZXRjMl9lYWNfcmdiYTgnLCB0Y3VDb21wcmVzc2VkVGV4dHVyZS5Gb3JtYXQuRVRDMl9FQUNfUkdC
QTgpLAorICAgICAgICAgICAgbmV3IEV0YzJGb3JtYXQoJ2V0YzJfZWFjX3NyZ2I4X2FscGhhOCcs
IHRjdUNvbXByZXNzZWRUZXh0dXJlLkZvcm1hdC5FVEMyX0VBQ19TUkdCOF9BTFBIQTgpCisgICAg
ICAgIF07CisgICAgICAgIGlmICghZ2x1VGV4dHVyZVV0aWwuZW5hYmxlQ29tcHJlc3NlZFRleHR1
cmVFVEMoKSkgeworICAgICAgICAgICAgZGVidWcoJ1NraXBwaW5nIEVUQzIvRUFDIHRleHR1cmUg
Zm9ybWF0IHRlc3RzOiBubyBzdXBwb3J0IGZvciBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRj
Jyk7CisgICAgICAgICAgICBldGMyRm9ybWF0cyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAg
LyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAc3RydWN0CisgICAgICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0
aAorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgICAgICAgICAqLworICAgICAg
ICB2YXIgRXRjMlNpemUgPSBmdW5jdGlvbihuYW1lLCB3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAg
ICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIH07CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxFdGMyU2l6ZT59ICovIHZhciBldGMyU2l6ZXMgPSBb
CisgICAgICAgICAgICBuZXcgRXRjMlNpemUoJ3BvdCcsIDY0LCAxMjgpLAorICAgICAgICAgICAg
bmV3IEV0YzJTaXplKCducG90JywgMTIzLCAxMDcpCisgICAgICAgIF07CisKKyAgICAgICAgZm9y
ICh2YXIgZm9ybWF0TmR4ID0gMDsgZm9ybWF0TmR4IDwgZXRjMkZvcm1hdHMubGVuZ3RoOyBmb3Jt
YXROZHgrKykgeworICAgICAgICAgICAgZm9yICh2YXIgc2l6ZSA9IDA7IHNpemUgPCBldGMyU2l6
ZXMubGVuZ3RoOyBzaXplKyspIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RD
YXNlLkRlcXBUZXN0fSAqLyB2YXIgZm9ybWF0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGV0
YzJGb3JtYXRzW2Zvcm1hdE5keF0ubmFtZSwgJycpOworICAgICAgICAgICAgICAgIHRlc3RHcm91
cC5hZGRDaGlsZChmb3JtYXRHcm91cCk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgd3JhcFMg
PSAwOyB3cmFwUyA8IHdyYXBNb2Rlcy5sZW5ndGg7IHdyYXBTKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgd3JhcFQgPSAwOyB3cmFwVCA8IHdyYXBNb2Rlcy5sZW5ndGg7IHdyYXBU
KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlciA9IDA7IGZpbHRl
ciA8IGZpbHRlcmluZ01vZGVzLmxlbmd0aDsgZmlsdGVyKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFw
TW9kZXNbd3JhcFNdLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBN
b2Rlc1t3cmFwVF0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
aW5nTW9kZXNbZmlsdGVyXS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dGMyU2l6ZXNbc2l6ZV0ubmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbign
XycpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0R3JvdXAuYWRkQ2hpbGQo
bmV3IGVzM2ZUZXh0dXJlV3JhcFRlc3RzLlRleHR1cmVXcmFwQ2FzZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV0YzJGb3JtYXRzW2Zvcm1hdE5keF0uZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cmFwTW9kZXNbd3JhcFNdLm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyYXBNb2Rlc1t3cmFwVF0ubW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsdGVyaW5nTW9kZXNbZmlsdGVyXS5tb2RlLCBmaWx0ZXJpbmdNb2Rlc1tmaWx0
ZXJdLm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0YzJTaXplc1tzaXpl
XS53aWR0aCwgZXRjMlNpemVzW3NpemVdLmhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIFJ1biB0ZXN0CisgICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdD
b250ZXh0fSBjb250ZXh0CisgICAgICovCisgICAgZXMzZlRleHR1cmVXcmFwVGVzdHMucnVuID0g
ZnVuY3Rpb24oY29udGV4dCwgcmFuZ2UpIHsKKyAgICAgICAgZ2wgPSBjb250ZXh0OworICAgICAg
ICAvL1NldCB1cCBUZXN0IFJvb3QgcGFyYW1ldGVycworICAgICAgICB2YXIgdGVzdE5hbWUgPSAn
dGV4dHVyZV93cmFwJzsKKyAgICAgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdUZXh0dXJlIFdy
YXAgVGVzdHMnOworICAgICAgICB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAg
ICAgICAgc3RhdGUudGVzdE5hbWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgc3RhdGUuc2V0Um9vdCh0
Y3VUZXN0Q2FzZS5uZXdUZXN0KHRlc3ROYW1lLCB0ZXN0RGVzY3JpcHRpb24sIG51bGwpKTsKKwor
ICAgICAgICAvL1NldCB1cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVz
LgorICAgICAgICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdE5hbWUpOworICAgICAgICBkZXNjcmlw
dGlvbih0ZXN0RGVzY3JpcHRpb24pOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL0Ny
ZWF0ZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICBlczNmVGV4dHVyZVdyYXBUZXN0cy5pbml0KCk7
CisgICAgICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0UmFuZ2Uo
cmFuZ2UpOworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAgdGN1VGVz
dENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVycikgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmVGV4dHVyZVdyYXBU
ZXN0cy5ydW4gdGVzdHMnLCBmYWxzZSk7CisgICAgICAgICAgICBzdGF0ZS50ZXJtaW5hdGUoKTsK
KyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViZWFlNjk4NWQ1M2FhYjhiMTA4YTJiNjQ4ZWJiMzc2OGFmODM5
NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuanMKQEAgLTAsMCArMSwxOTE0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVt
ZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIw
MTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICog
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJl
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJz
LmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdURy
YXdVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3Jh
bScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlv
bigpIHsKKworICAgIHZhciBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cyA9IGZ1bmN0aW9uYWwu
Z2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHM7CisgICAgdmFyIGdsdVNoYWRlclV0aWwg
PSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIGdsdURyYXdVdGlsID0g
ZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbDsKKyAgICB2YXIgZ2x1VmFyVHlwZSA9IGZyYW1l
d29yay5vcGVuZ2wuZ2x1VmFyVHlwZTsKKyAgICB2YXIgZ2x1VmFyVHlwZVV0aWwgPSBmcmFtZXdv
cmsub3BlbmdsLmdsdVZhclR5cGVVdGlsOworICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOworICAgIHZhciBkZVJhbmRvbSA9IGZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsu
ZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGli
cy5kZWJhc2UuZGVTdHJpbmc7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1v
bi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZTsKKyAgICB2YXIgdGN1SW1hZ2VDb21wYXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VJ
bWFnZUNvbXBhcmU7CisKKyAgICAvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICov
IHZhciBnbDsKKworICAgIHZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJl
bnQpIHsKKyAgICAgICAgY2hpbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJv
dG90eXBlKTsKKyAgICAgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGQ7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZXMzZlRyYW5zZm9y
bUZlZWRiYWNrVGVzdHMuU3RhdGUgPSB7CisgICAgICAgIERSQVc6IDAsCisgICAgICAgIFZFUklG
WTogMSwKKyAgICAgICAgRklOSVNIOiAyCisgICAgfTsKKworICAgIC8qIE1heGltdW0gdGltZSB0
byB3YWl0IGZvciBxdWVyeSByZXN1bHQgKGluIHNlY29uZHMpICovCisgICAgLyoqIEBjb25zdCAq
LyBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5NQVhfVkVSSUZZX1dBSVQgPSA1OworCisgICAg
LyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5W
SUVXUE9SVF9XSURUSCA9IDEyODsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGVz
M2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlZJRVdQT1JUX0hFSUdIVCA9IDEyODsKKyAgICAvKiog
QGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkJVRkZF
Ul9HVUFSRF9NVUxUSVBMSUVSID0gMjsKKworICAgIC8qKgorICAgICAqIEVudW1zIGZvciBlczNm
VHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uCisgICAgICogQGVudW0ge251bWJl
cn0KKyAgICAgKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9u
ID0geworICAgICAgICBTTU9PVEg6IDAsCisgICAgICAgIEZMQVQ6IDEsCisgICAgICAgIENFTlRS
T0lEOiAyCisKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJucyBlczNmVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uIG5hbWU6IHNtb290aCwgZmxhdCBvciBjZW50cm9p
ZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcnBvbCBlczNmVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0cy5pbnRlcnBvbGF0aW9uIGVudW0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Cisg
ICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0SW50ZXJwb2xhdGlvbk5h
bWUgPSBmdW5jdGlvbihpbnRlcnBvbCkgeworCisgICAgICAgIHN3aXRjaCAoaW50ZXJwb2wpIHsK
KyAgICAgICAgY2FzZSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLlNN
T09USDogcmV0dXJuICdzbW9vdGgnOworICAgICAgICBjYXNlIGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLmludGVycG9sYXRpb24uRkxBVDogcmV0dXJuICdmbGF0JzsKKyAgICAgICAgY2FzZSBl
czNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLkNFTlRST0lEOiByZXR1cm4g
J2NlbnRyb2lkJzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignVW5yZWNvZ25pemVkIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmludGVycG9sYXRpb24g
bmFtZSAnICsgaW50ZXJwb2wpOworICAgICAgIH0KKworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAc3RydWN0CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge2ds
dVZhclR5cGUuVmFyVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcnBvbGF0
aW9uCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZlZWRi
YWNrVGVzdHMuVmFyeWluZyA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIGludGVycG9sYXRpb24pIHsK
KyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKKyAg
ICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjsKKyAgICB9OworCisgICAg
LyoqIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmZpbmRBdHRyaWJ1dGVOYW1lRXF1YWxzCisg
ICAgICogUmVwbGFjZXMgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgIlZhcnlpbmdOYW1lRXF1
YWxzIiBhbmQgIkF0dHJpYnV0ZU5hbWVFcXVhbHMiIGluIHRoZSBDKysgdmVyc2lvbgorICAgICAq
IFJldHVybnMgYW4gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuQXR0cmlidXRlIG9yIGVzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlZhcnlpbmcgb2JqZWN0IHdoaWNoIG1hdGNoZXMgaXRzIG5h
bWUgd2l0aCB0aGUgcGFzc2VkIHN0cmluZyB2YWx1ZSBpbiB0aGUgZnVuY3Rpb24KKyAgICAgKiBA
cGFyYW0geyhBcnJheTxlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5BdHRyaWJ1dGU+IHwgQXJy
YXk8ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVmFyeWluZz4pfSBhcnJheQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHJldHVybiB7IChlczNmVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0cy5BdHRyaWJ1dGUgfCBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5WYXJ5aW5nIHwg
bnVsbCl9CisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZmluZEF0dHJp
YnV0ZU5hbWVFcXVhbHMgPSBmdW5jdGlvbihhcnJheSwgbmFtZSkgeworICAgICAgICBmb3IgKHZh
ciBwb3MgPSAwOyBwb3MgPCBhcnJheS5sZW5ndGg7IHBvcysrKSB7CisgICAgICAgICAgICBpZiAo
YXJyYXlbcG9zXS5uYW1lID09PSBuYW1lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5
W3Bvc107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSB0eXBlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGVz
M2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUs
IG9mZnNldCkgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLnR5cGUg
PSB0eXBlOworICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQ29uc3RydWN0cyBhbiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5PdXRwdXQg
b2JqZWN0CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuT3V0cHV0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB0aGlzLmJ1ZmZlck5keCA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLm9mZnNldCA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5h
bWU7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSAqLyB0aGlzLnR5cGUg
PSBudWxsOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzLkF0dHJpYnV0ZT59ICovIHRoaXMuaW5wdXRzID0gW107CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIENvbnN0cnVjdHMgYW4gb2JqZWN0IHR5cGUgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuRHJhd0NhbGwuCisgICAgICogQ29udGFpbnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBhcyB3
ZWxsIGFzIHdoZXRoZXIgdGhlIFRyYW5zZm9ybSBGZWVkYmFjayBpcyBlbmFibGVkIG9yIG5vdC4K
KyAgICAgKiBAc3RydWN0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUVsZW1lbnRzCisgICAg
ICogQHBhcmFtIHtib29sZWFufSB0ZkVuYWJsZWQgaXMgVHJhbnNmb3JtIEZlZWRiYWNrIGVuYWJs
ZWQgb3Igbm90CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZlRyYW5zZm9y
bUZlZWRiYWNrVGVzdHMuRHJhd0NhbGwgPSBmdW5jdGlvbihudW1FbGVtZW50cywgdGZFbmFibGVk
KSB7CisgICAgICAgIHRoaXMubnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKKyAgICAgICAgdGhp
cy50cmFuc2Zvcm1GZWVkYmFja0VuYWJsZWQgPSB0ZkVuYWJsZWQ7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLlByb2dyYW1TcGVjID0gZnVuY3Rpb24oKSB7CisKKyAgICAvKiogQHR5cGUge0FycmF5
PGdsdVZhclR5cGUuU3RydWN0VHlwZT59ICovIHZhciBtX3N0cnVjdHMgPSBbXTsKKyAgICAvKiog
QHR5cGUge0FycmF5PGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlZhcnlpbmc+fSAqLyB2YXIg
bV92YXJ5aW5ncyA9IFtdOworICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIG1f
dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyA9IFtdOworCisgICAgICAgIHRoaXMuY3JlYXRlU3Ry
dWN0ID0gZnVuY3Rpb24obmFtZSkgeworICAgICAgICAgICAgdmFyIHN0cnVjdCA9IGdsdVZhclR5
cGUubmV3U3RydWN0VHlwZShuYW1lKTsKKyAgICAgICAgICAgIG1fc3RydWN0cy5wdXNoKHN0cnVj
dCk7CisgICAgICAgICAgICByZXR1cm4gc3RydWN0OworICAgICAgICB9OworCisgICAgICAgIHRo
aXMuYWRkVmFyeWluZyA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIGludGVycCkgeworICAgICAgICAg
ICAgbV92YXJ5aW5ncy5wdXNoKG5ldyBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5WYXJ5aW5n
KG5hbWUsIHR5cGUsIGludGVycCkpOworICAgICAgICB9OworCisgICAgICAgIHRoaXMuYWRkVHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nID0gZnVuY3Rpb24obmFtZSkgeworICAgICAgICAgICAgbV90
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnB1c2gobmFtZSk7CisgICAgICAgIH07CisKKyAgICAg
ICAgdGhpcy5nZXRTdHJ1Y3RzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbV9z
dHJ1Y3RzOworICAgICAgICB9OworICAgICAgICB0aGlzLmdldFZhcnlpbmdzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICByZXR1cm4gbV92YXJ5aW5nczsKKyAgICAgICAgfTsKKyAgICAgICAg
dGhpcy5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV90cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOworICAgICAgICB9OworCisg
ICAgICAgIHRoaXMuaXNQb2ludFNpemVVc2VkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG1fdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChtX3RyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NbaV0g
PT0gJ2dsX1BvaW50U2l6ZScpIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworCisgICAgfTsKKworICAgIC8qKiBSZXR1cm5z
IGlmIHRoZSBwcm9ncmFtIGlzIHN1cHBvcnRlZCBvciBub3QKKyAgICAgKiBAcGFyYW0ge2VzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlByb2dyYW1TcGVjfSBzcGVjCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHRmTW9kZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuaXNQcm9ncmFtU3VwcG9ydGVkID0gZnVuY3Rpb24oc3Bl
YywgdGZNb2RlKSB7CisgICAgICAgIHZhciBtYXhWZXJ0ZXhBdHRyaWJzID0gTnVtYmVyKGdsLmdl
dFBhcmFtZXRlcihnbC5NQVhfVkVSVEVYX0FUVFJJQlMpKTsKKyAgICAgICAgdmFyIG1heFRmSW50
ZXJsZWF2ZWRDb21wb25lbnRzID0gTnVtYmVyKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVFJBTlNG
T1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMpKTsKKyAgICAgICAgdmFyIG1heFRm
U2VwYXJhdGVBdHRyaWJzID0gTnVtYmVyKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVFJBTlNGT1JN
X0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMpKTsKKyAgICAgICAgdmFyIG1heFRmU2VwYXJhdGVD
b21wb25lbnRzID0gTnVtYmVyKGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVFJBTlNGT1JNX0ZFRURC
QUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMpKTsKKworICAgICAgICAvLyBDaGVjayB2ZXJ0ZXggYXR0
cmlicy4KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0b3RhbFZlcnRleEF0dHJp
YnMgPSAoCisgICAgICAgICAgICAxIC8qIGFfcG9zaXRpb24gKi8gKyAoc3BlYy5pc1BvaW50U2l6
ZVVzZWQoKSA/IDEgOiAwKQorICAgICAgICApOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3BlYy5nZXRWYXJ5aW5ncygpLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciB2X2l0ZXIgPSBuZXcgZ2x1VmFyVHlwZVV0aWwuVmVjdG9yVHlwZUl0ZXJhdG9yKHNwZWMuZ2V0
VmFyeWluZ3MoKVtpXS50eXBlKTsgIXZfaXRlci5lbmQoKTsgdl9pdGVyLm5leHQoKSkgeworICAg
ICAgICAgICAgICAgIHRvdGFsVmVydGV4QXR0cmlicyArPSAxOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHRvdGFsVmVydGV4QXR0cmlicyA+IG1heFZlcnRleEF0dHJp
YnMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFZlcnRleCBhdHRyaWJ1dGUgZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMuY291bnQgZXhjZWVkZWQuCisKKyAgICAgICAgLy8gY2hlY2sg
dmFyeWluZ3MKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0b3RhbFRmQ29tcG9u
ZW50cyA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdG90YWxUZkF0dHJp
YnMgPSAwOworICAgICAgICAvKiogQHR5cGUge09iamVjdC48bnVtYmVyLCBudW1iZXI+fSAqLyB2
YXIgcHJlc2V0TnVtQ29tcG9uZW50cyA9IHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uOiA0LAor
ICAgICAgICAgICAgZ2xfUG9pbnRTaXplOiAxCisgICAgICAgIH07CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc3BlYy5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBuYW1lID0gc3BlYy5nZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKClbaV07CisgICAgICAgICAgICB2YXIgbnVtQ29tcG9uZW50cyA9IDA7CisKKyAgICAg
ICAgICAgIGlmICh0eXBlb2YocHJlc2V0TnVtQ29tcG9uZW50c1tuYW1lXSkgIT0gJ3VuZGVmaW5l
ZCcpIHsKKyAgICAgICAgICAgICAgICBudW1Db21wb25lbnRzID0gcHJlc2V0TnVtQ29tcG9uZW50
c1tuYW1lXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHZhck5h
bWUgPSBnbHVWYXJUeXBlVXRpbC5wYXJzZVZhcmlhYmxlTmFtZShuYW1lKTsKKyAgICAgICAgICAg
ICAgICAvLyBmaW5kIHRoZSB2YXJ5aW5nIGNhbGxlZCB2YXJOYW1lCisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5WYXJ5aW5nfSAqLyB2YXIgdmFy
eWluZyA9IChmdW5jdGlvbih2YXJ5aW5ncykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHZhcnlpbmdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmFyeWluZ3NbaV0ubmFtZSA9PSB2YXJOYW1lKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhcnlpbmdzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICAgICAgICAgIH0oc3BlYy5nZXRWYXJ5aW5ncygpKSk7CisKKyAgICAgICAgICAg
ICAgICAvLyBnbHU6OlR5cGVDb21wb25lbnRWZWN0b3IKKyAgICAgICAgICAgICAgICB2YXIgdmFy
UGF0aCA9IGdsdVZhclR5cGVVdGlsLnBhcnNlVHlwZVBhdGgobmFtZSwgdmFyeWluZy50eXBlKTsK
KyAgICAgICAgICAgICAgICBudW1Db21wb25lbnRzID0gZ2x1VmFyVHlwZVV0aWwuZ2V0VmFyVHlw
ZSh2YXJ5aW5nLnR5cGUsIHZhclBhdGgpLmdldFNjYWxhclNpemUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHRmTW9kZSA9PSBnbC5TRVBBUkFURV9BVFRSSUJTICYmIG51bUNv
bXBvbmVudHMgPiBtYXhUZlNlcGFyYXRlQ29tcG9uZW50cykKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIFBlci1hdHRyaWJ1dGUgY29tcG9uZW50IGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLmNvdW50IGV4Y2VlZGVkLgorCisgICAgICAgICAgICB0b3RhbFRmQ29tcG9uZW50cyAr
PSBudW1Db21wb25lbnRzOworICAgICAgICAgICAgdG90YWxUZkF0dHJpYnMgKz0gMTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0Zk1vZGUgPT0gZ2wuU0VQQVJBVEVfQVRUUklCUyAmJiB0b3Rh
bFRmQXR0cmlicyA+IG1heFRmU2VwYXJhdGVBdHRyaWJzKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmICh0Zk1vZGUgPT0gZ2wuSU5URVJMRUFWRURfQVRUUklCUyAmJiB0
b3RhbFRmQ29tcG9uZW50cyA+IG1heFRmSW50ZXJsZWF2ZWRDb21wb25lbnRzKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJ5aW5nTmFtZQorICAgICAqIEBwYXJhbSB7
QXJyYXk8Z2x1VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudD59IHBhdGgKKyAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0
QXR0cmlidXRlTmFtZSA9IGZ1bmN0aW9uKHZhcnlpbmdOYW1lLCBwYXRoKSB7CisgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciBzdHIgPSAnYV8nICsgdmFyeWluZ05hbWUuc3Vic3RyKC9edl8v
LnRlc3QodmFyeWluZ05hbWUpID8gMiA6IDApOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGF0aC5sZW5ndGg7ICsraSkgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IHByZWZpeDsKKworICAgICAgICAgICAgc3dpdGNoIChwYXRoW2ldLnR5cGUpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19UeXBlLlNUUlVD
VF9NRU1CRVI6IHByZWZpeCA9ICdfbSc7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1
VmFyVHlwZVV0aWwuVmFyVHlwZUNvbXBvbmVudC5zX1R5cGUuQVJSQVlfRUxFTUVOVDogcHJlZml4
ID0gJ19lJzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVWYXJUeXBlVXRpbC5WYXJU
eXBlQ29tcG9uZW50LnNfVHlwZS5NQVRSSVhfQ09MVU1OOiBwcmVmaXggPSAnX2MnOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsdVZhclR5cGVVdGlsLlZhclR5cGVDb21wb25lbnQuc19U
eXBlLlZFQ1RPUl9DT01QT05FTlQ6IHByZWZpeCA9ICdfcyc7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxp
ZCB0eXBlIGluIHRoZSBjb21wb25lbnQgcGF0aC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0ciArPSBwcmVmaXggKyBwYXRoW2ldLmluZGV4OworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBzdHI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIG9yaWdpbmFsIGRlZmluaXRpb246
CisgICAgICogc3RhdGljIHZvaWQgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2VuU2hhZGVy
U291cmNlcyAoY29uc3QgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuUHJvZ3JhbVNwZWMmIHNw
ZWMsIHN0ZDo6c3RyaW5nJiB2ZXJ0U291cmNlLCBzdGQ6OnN0cmluZyYgZnJhZ1NvdXJjZSwgYm9v
bCBwb2ludFNpemVSZXF1aXJlZCkKKyAgICAgKiBpbiBwbGFjZSBvZiB0aGUgc3RkOjpzdHJpbmcg
cmVmZXJlbmNlcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRob3NlIHBhcmFtcyBpbiBhbiBvYmpl
Y3QKKyAgICAgKgorICAgICAqIEBwYXJhbSB7ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuUHJv
Z3JhbVNwZWN9IHNwZWMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBvaW50U2l6ZVJlcXVpcmVk
CisgICAgICogQHJldHVybiB7T2JqZWN0LjxzdHJpbmcsIHN0cmluZz59CisgICAgICovCisgICAg
ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2VuU2hhZGVyU291cmNlcyA9IGZ1bmN0aW9uKHNw
ZWMsIHBvaW50U2l6ZVJlcXVpcmVkKSB7CisKKyAgICAgICAgdmFyIHZ0eCA9IHsgc3RyOiBudWxs
IH07CisgICAgICAgIHZhciBmcmFnID0geyBzdHI6IG51bGwgfTsKKyAgICAgICAgdmFyIGFkZFBv
aW50U2l6ZSA9IHNwZWMuaXNQb2ludFNpemVVc2VkKCk7CisKKyAgICAgICAgdnR4LnN0ciA9ICcj
dmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bv
c2l0aW9uO1xuJzsKKyAgICAgICAgZnJhZy5zdHIgPSAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAg
ICAgICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19j
b2xvcjtcbicgKworICAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWM0IHVfc2NhbGU7
XG4nICsKKyAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gaGlnaHAgdmVjNCB1X2JpYXM7XG4nOwor
ICAgICAgICAvL3Z0eC5zdHIgPSAnYXR0cmlidXRlIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbic7
CisgICAgICAgIC8vZnJhZy5zdHIgPSAndW5pZm9ybSBoaWdocCB2ZWM0IHVfc2NhbGU7XG4nICsK
KyAgICAgICAgLy8gICAgICAgICAndW5pZm9ybSBoaWdocCB2ZWM0IHVfYmlhcztcbic7CisKKyAg
ICAgICAgaWYgKGFkZFBvaW50U2l6ZSkgeworICAgICAgICAgICAgdnR4LnN0ciArPSAnaW4gaGln
aHAgZmxvYXQgYV9wb2ludFNpemU7XG4nOworICAgICAgICAgICAgLy92dHguc3RyICs9ICdhdHRy
aWJ1dGUgaGlnaHAgZmxvYXQgYV9wb2ludFNpemU7XG4nOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRGVjbGFyZSBhdHRyaWJ1dGVzLgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwZWMu
Z2V0VmFyeWluZ3MoKS5sZW5ndGg7ICsraSkgeworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgbmFtZSA9IHNwZWMuZ2V0VmFyeWluZ3MoKVtpXS5uYW1lOworICAgICAgICAvKiog
QHR5cGUge2dsdVZhclR5cGUuVmFyVHlwZX0gKi8gdmFyIHR5cGUgPSBzcGVjLmdldFZhcnlpbmdz
KClbaV0udHlwZTsKKworICAgICAgICAgICAgZm9yICh2YXIgdmVjSXRlciA9IG5ldyBnbHVWYXJU
eXBlVXRpbC5WZWN0b3JUeXBlSXRlcmF0b3IodHlwZSk7ICF2ZWNJdGVyLmVuZCgpOyB2ZWNJdGVy
Lm5leHQoKSkgeworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlZhclR5
cGV9ICovCisgICAgICAgICAgICAgICAgdmFyIGF0dHJpYlR5cGUgPSBnbHVWYXJUeXBlVXRpbC5n
ZXRWYXJUeXBlKHR5cGUsIHZlY0l0ZXIuZ2V0UGF0aCgpKTsKKworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLworICAgICAgICAgICAgICAgIHZhciBhdHRyaWJOYW1lID0gZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0QXR0cmlidXRlTmFtZShuYW1lLCB2ZWNJdGVyLmdl
dFBhdGgoKSk7CisgICAgICAgICAgICAgICAgdnR4LnN0ciArPSAnaW4gJyArIGdsdVZhclR5cGUu
ZGVjbGFyZVZhcmlhYmxlKGF0dHJpYlR5cGUsIGF0dHJpYk5hbWUpICsgJztcbic7CisKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIERlY2xhcmUgdmFyeWluZ3MuCisgICAg
ICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDI7ICsrbmR4KSB7CisgICAgICAgICAgICB2YXIg
aW5vdXQgPSBuZHggPyAnaW4nIDogJ291dCc7CisgICAgICAgICAgICB2YXIgc2hhZGVyID0gbmR4
ID8gZnJhZyA6IHZ0eDsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGVjLmdl
dFN0cnVjdHMoKS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBzdHJ1Y3QgPSBz
cGVjLmdldFN0cnVjdHMoKVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoc3RydWN0Lmhhc1R5cGVO
YW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnN0ciArPSBnbHVWYXJUeXBlLmRl
Y2xhcmVTdHJ1Y3RUeXBlKHN0cnVjdCkgKyAnO1xuJzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8ZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuVmFyeWluZz59ICovIHZhciB2YXJ5aW5ncyA9IHNwZWMuZ2V0VmFyeWluZ3Mo
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFyeWluZ3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdmFyeWluZyA9IHZhcnlpbmdzW2ldOworICAgICAgICAg
ICAgICAgIHNoYWRlci5zdHIgKz0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0SW50ZXJw
b2xhdGlvbk5hbWUodmFyeWluZy5pbnRlcnBvbGF0aW9uKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnICcgKyBpbm91dCArICcgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bHVWYXJUeXBlLmRlY2xhcmVWYXJpYWJsZSh2YXJ5aW5nLnR5cGUsIHZhcnlpbmcubmFtZSkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJztcbic7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICB2dHguc3RyICs9ICdcbnZvaWQgbWFpbiAodm9pZClcbiB7XG4nICsKKyAg
ICAgICAgICAgICAgICAgJ1x0Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuJzsKKyAgICAgICAg
ZnJhZy5zdHIgKz0gJ1xudm9pZCBtYWluICh2b2lkKVxuIHtcbicgKworICAgICAgICAgICAgICAg
ICAnXHRoaWdocCB2ZWM0IHJlcyA9IHZlYzQoMC4wKTtcbic7CisKKyAgICAgICAgaWYgKGFkZFBv
aW50U2l6ZSkgeworICAgICAgICAgICAgdnR4LnN0ciArPSAnXHRnbF9Qb2ludFNpemUgPSBhX3Bv
aW50U2l6ZTtcbic7CisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRTaXplUmVxdWlyZWQpIHsKKyAg
ICAgICAgICAgIHZ0eC5zdHIgKz0gJ1x0Z2xfUG9pbnRTaXplID0gMS4wO1xuJzsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BlYy5nZXRWYXJ5aW5ncygpLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IHNwZWMuZ2V0VmFyeWluZ3MoKVtpXS5u
YW1lOworICAgICAgICAgICAgdmFyIHR5cGUgPSBzcGVjLmdldFZhcnlpbmdzKClbaV0udHlwZTsK
KworICAgICAgICAgICAgZm9yICh2YXIgdmVjSXRlciA9IG5ldyBnbHVWYXJUeXBlVXRpbC5WZWN0
b3JUeXBlSXRlcmF0b3IodHlwZSk7ICF2ZWNJdGVyLmVuZCgpOyB2ZWNJdGVyLm5leHQoKSkgewor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSAqL3ZhciBzdWJU
eXBlID0gZ2x1VmFyVHlwZVV0aWwuZ2V0VmFyVHlwZSh0eXBlLCB2ZWNJdGVyLmdldFBhdGgoKSk7
CisgICAgICAgICAgICAgICAgdmFyIGF0dHJpYk5hbWUgPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0cy5nZXRBdHRyaWJ1dGVOYW1lKG5hbWUsIHZlY0l0ZXIuZ2V0UGF0aCgpKTsKKworICAgICAg
ICAgICAgICAgIGlmICghKAorICAgICAgICAgICAgICAgICAgICBzdWJUeXBlLmlzQmFzaWNUeXBl
KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlU2NhbGFy
T3JWZWN0b3Ioc3ViVHlwZS5nZXRCYXNpY1R5cGUoKSkKKyAgICAgICAgICAgICAgICApKSB0aHJv
dyBuZXcgRXJyb3IoJ05vdCBhIHNjYWxhciBvciB2ZWN0b3IuJyk7CisKKyAgICAgICAgICAgICAg
ICAvLyBWZXJ0ZXg6IGFzc2lnbiBmcm9tIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAgICB2dHgu
c3RyICs9ICdcdCcgKyBuYW1lICsgdmVjSXRlci50b1N0cmluZygpICsgJyA9ICcgKyBhdHRyaWJO
YW1lICsgJztcbic7CisKKyAgICAgICAgICAgICAgICAvLyBGcmFnbWVudDogYWRkIHRvIHJlcyB2
YXJpYWJsZS4KKyAgICAgICAgICAgICAgICB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVTY2FsYXJTaXplKHN1YlR5cGUuZ2V0QmFzaWNUeXBlKCkpOworCisgICAgICAg
ICAgICAgICAgZnJhZy5zdHIgKz0gJ1x0cmVzICs9ICc7CisgICAgICAgICAgICAgICAgaWYgKHNj
YWxhclNpemUgPT0gMSkgZnJhZy5zdHIgKz0gJ3ZlYzQoJyArIG5hbWUgKyB2ZWNJdGVyLnRvU3Ry
aW5nKCkgKyAnKSc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NhbGFyU2l6ZSA9PSAyKSBm
cmFnLnN0ciArPSAndmVjMignICsgbmFtZSArIHZlY0l0ZXIudG9TdHJpbmcoKSArICcpLnh4eXkn
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjYWxhclNpemUgPT0gMykgZnJhZy5zdHIgKz0g
J3ZlYzMoJyArIG5hbWUgKyB2ZWNJdGVyLnRvU3RyaW5nKCkgKyAnKS54eXp4JzsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChzY2FsYXJTaXplID09IDQpIGZyYWcuc3RyICs9ICd2ZWM0KCcgKyBu
YW1lICsgdmVjSXRlci50b1N0cmluZygpICsgJyknOworCisgICAgICAgICAgICAgICAgZnJhZy5z
dHIgKz0gJztcbic7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmcmFnLnN0
ciArPSAnXHRvX2NvbG9yID0gcmVzICogdV9zY2FsZSArIHVfYmlhcztcbn1cbic7CisgICAgICAg
IC8vZnJhZy5zdHIgKz0gJ1x0Z2xfRnJhZ0NvbG9yID0gcmVzICogdV9zY2FsZSArIHVfYmlhcztc
bn1cbic7CisgICAgICAgIHZ0eC5zdHIgKz0gJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgIHZlcnRTb3VyY2U6IHZ0eC5zdHIsCisgICAgICAgICAgICBmcmFnU291cmNlOiBm
cmFnLnN0cgorICAgICAgICB9OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEg
U2hhZGVyIHByb2dyYW0KKyAgICAgKiBAcGFyYW0ge2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3Rz
LlByb2dyYW1TcGVjfSBzcGVjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlck1vZGUKKyAg
ICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUgR0xl
bnVtIHRoYXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAgKiBAcmV0
dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19CisgICAgICovCisgICAgZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMuY3JlYXRlVmVydGV4Q2FwdHVyZVByb2dyYW0gPSBmdW5jdGlv
bihzcGVjLCBidWZmZXJNb2RlLCBwcmltaXRpdmVUeXBlKSB7CisKKyAgICAvKiogQHR5cGUge09i
amVjdC48c3RyaW5nLCBzdHJpbmc+fSAqLyB2YXIgc291cmNlID0gZXMzZlRyYW5zZm9ybUZlZWRi
YWNrVGVzdHMuZ2VuU2hhZGVyU291cmNlcyhzcGVjLCBwcmltaXRpdmVUeXBlID09PSBnbHVEcmF3
VXRpbC5wcmltaXRpdmVUeXBlLlBPSU5UUyAvKiBJcyBwb2ludCBzaXplIHJlcXVpcmVkPyAqLyk7
CisKKyAgICAgICAgdmFyIHByb2dyYW1Tb3VyY2VzID0gbmV3IGdsdVNoYWRlclByb2dyYW0uUHJv
Z3JhbVNvdXJjZXMoKTsKKyAgICAgICAgcHJvZ3JhbVNvdXJjZXMuYWRkKG5ldyBnbHVTaGFkZXJQ
cm9ncmFtLlZlcnRleFNvdXJjZShzb3VyY2UudmVydFNvdXJjZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgLmFkZChuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5GcmFnbWVudFNvdXJjZShzb3VyY2UuZnJh
Z1NvdXJjZSkpCisgICAgICAgICAgICAgICAgICAgICAgLmFkZChuZXcgZ2x1U2hhZGVyUHJvZ3Jh
bS5UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHNwZWMuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAuYWRkKG5ldyBnbHVTaGFkZXJQcm9ncmFt
LlRyYW5zZm9ybUZlZWRiYWNrTW9kZShidWZmZXJNb2RlKSk7CisKKyAgICAgICAgcmV0dXJuIG5l
dyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0oZ2wsIHByb2dyYW1Tb3VyY2VzKTsKKwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLkF0dHJpYnV0ZT59IGF0dHJpYnV0ZXMKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVz
M2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlZhcnlpbmc+fSB2YXJ5aW5ncworICAgICAqIEBwYXJh
bSB7Ym9vbGVhbn0gdXNlUG9pbnRTaXplCisgICAgICogQHJldHVybiB7bnVtYmVyfSBpbnB1dCBz
dHJpZGUKKyAgICAgKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5jb21wdXRlSW5w
dXRMYXlvdXQgPSBmdW5jdGlvbihhdHRyaWJ1dGVzLCB2YXJ5aW5ncywgdXNlUG9pbnRTaXplKSB7
CisKKyAgICAgICAgdmFyIGlucHV0U3RyaWRlID0gMDsKKworICAgICAgICAvLyBBZGQgcG9zaXRp
b24KKyAgICAgICAgdmFyIGRhdGFUeXBlVmVjNCA9IGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24u
UFJFQ0lTSU9OX0hJR0hQKTsKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVHJhbnNm
b3JtRmVlZGJhY2tUZXN0cy5BdHRyaWJ1dGUoJ2FfcG9zaXRpb24nLCBkYXRhVHlwZVZlYzQsIGlu
cHV0U3RyaWRlKSk7CisgICAgICAgIGlucHV0U3RyaWRlICs9IDQgKiA0OyAvKnNpemVvZihkZVVp
bnQzMikqLworCisgICAgICAgIGlmICh1c2VQb2ludFNpemUpIHsKKyAgICAgICAgICAgIHZhciBk
YXRhVHlwZUZsb2F0ID0gZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVCwgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKTsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
QXR0cmlidXRlKCdhX3BvaW50U2l6ZScsIGRhdGFUeXBlRmxvYXQsIGlucHV0U3RyaWRlKSk7Cisg
ICAgICAgICAgICBpbnB1dFN0cmlkZSArPSAxICogNDsgLypzaXplb2YoZGVVaW50MzIpKi8KKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFyeWluZ3MubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIHZlY0l0ZXIgPSBuZXcgZ2x1VmFyVHlwZVV0aWwu
VmVjdG9yVHlwZUl0ZXJhdG9yKHZhcnlpbmdzW2ldLnR5cGUpOyAhdmVjSXRlci5lbmQoKTsgdmVj
SXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHZlY0l0ZXIuZ2V0VHlw
ZSgpOyAvLyBvcmlnaW5hbGx5IGdldFR5cGUoKSBpbiBnZXRWYXJUeXBlKCkgd2l0aGluIGdsdVZB
UlR5cGVVdGlsLmhwcC4KKyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGVzM2ZUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RzLmdldEF0dHJpYnV0ZU5hbWUodmFyeWluZ3NbaV0ubmFtZSwgdmVjSXRlci5n
ZXRQYXRoKCkpOworCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVHJh
bnNmb3JtRmVlZGJhY2tUZXN0cy5BdHRyaWJ1dGUobmFtZSwgdHlwZSwgaW5wdXRTdHJpZGUpKTsK
KyAgICAgICAgICAgICAgICBpbnB1dFN0cmlkZSArPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
U2NhbGFyU2l6ZSh0eXBlLmdldEJhc2ljVHlwZSgpKSAqIDQ7IC8qc2l6ZW9mKGRlVWludDMyKSov
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaW5wdXRTdHJpZGU7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuT3V0cHV0Pn0gdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzCisgICAgICogQHBh
cmFtIHtBcnJheTxlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5BdHRyaWJ1dGU+fSBhdHRyaWJ1
dGVzCisgICAgICogQHBhcmFtIHtBcnJheTxlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5WYXJ5
aW5nPn0gdmFyeWluZ3MKKyAgICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVyTW9kZQorICAgICAq
LworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmNvbXB1dGVUcmFuc2Zvcm1GZWVkYmFj
a091dHB1dHMgPSBmdW5jdGlvbih0cmFuc2Zvcm1GZWVkYmFja091dHB1dHMsIGF0dHJpYnV0ZXMs
IHZhcnlpbmdzLCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLCBidWZmZXJNb2RlKSB7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhY2N1bXVsYXRlZFNpemUgPSAwOworCisg
ICAgICAgIC8vIHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0cy5yZXNpemUodHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncy5zaXplKCkpOworICAgICAgICBmb3IgKHZhciB2YXJOZHggPSAwOyB2YXJOZHgg
PCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmxlbmd0aDsgdmFyTmR4KyspIHsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZSA9IHRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3NbdmFyTmR4XTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnVm
TmR4ID0gKGJ1ZmZlck1vZGUgPT09IGdsLlNFUEFSQVRFX0FUVFJJQlMgPyB2YXJOZHggOiAwKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb2Zmc2V0ID0gKGJ1ZmZlck1v
ZGUgPT09IGdsLlNFUEFSQVRFX0FUVFJJQlMgPyAwIDogYWNjdW11bGF0ZWRTaXplKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuT3V0cHV0fSAqLyB2
YXIgb3V0cHV0ID0gbmV3IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLk91dHB1dCgpOworCisg
ICAgICAgICAgICBvdXRwdXQubmFtZSA9IG5hbWU7CisgICAgICAgICAgICBvdXRwdXQuYnVmZmVy
TmR4ID0gYnVmTmR4OworICAgICAgICAgICAgb3V0cHV0Lm9mZnNldCA9IG9mZnNldDsKKworICAg
ICAgICAgICAgaWYgKG5hbWUgPT09ICdnbF9Qb3NpdGlvbicpIHsKKyAgICAgICAgICAgICAgICB2
YXIgcG9zSW4gPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5maW5kQXR0cmlidXRlTmFtZUVx
dWFscyhhdHRyaWJ1dGVzLCAnYV9wb3NpdGlvbicpOworICAgICAgICAgICAgICAgIG91dHB1dC50
eXBlID0gcG9zSW4udHlwZTsKKyAgICAgICAgICAgICAgICBvdXRwdXQuaW5wdXRzLnB1c2gocG9z
SW4pOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnZ2xfUG9pbnRTaXplJykgewor
ICAgICAgICAgICAgICAgIHZhciBzaXplSW4gPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5m
aW5kQXR0cmlidXRlTmFtZUVxdWFscyhhdHRyaWJ1dGVzLCAnYV9wb2ludFNpemUnKTsKKyAgICAg
ICAgICAgICAgICBvdXRwdXQudHlwZSA9IHNpemVJbi50eXBlOworICAgICAgICAgICAgICAgIG91
dHB1dC5pbnB1dHMucHVzaChzaXplSW4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB2YXIgdmFyTmFtZSA9IGdsdVZhclR5cGVVdGlsLnBhcnNlVmFyaWFibGVOYW1lKG5h
bWUpOworICAgICAgICAgICAgICAgIHZhciB2YXJ5aW5nID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMuZmluZEF0dHJpYnV0ZU5hbWVFcXVhbHModmFyeWluZ3MsIHZhck5hbWUpOworCisgICAg
ICAgICAgICAgICAgdmFyIHZhclBhdGggPSBnbHVWYXJUeXBlVXRpbC5wYXJzZVR5cGVQYXRoKG5h
bWUsIHZhcnlpbmcudHlwZSk7CisgICAgICAgICAgICAgICAgb3V0cHV0LnR5cGUgPSBnbHVWYXJU
eXBlVXRpbC5nZXRWYXJUeXBlKHZhcnlpbmcudHlwZSwgdmFyUGF0aCk7CisKKyAgICAgICAgICAg
ICAgICAvLyBBZGQgYWxsIHZlY3Rvcml6ZWQgYXR0cmlidXRlcyBhcyBpbnB1dHMuCisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaXRlciA9IG5ldyBnbHVWYXJUeXBlVXRpbC5WZWN0b3JUeXBlSXRl
cmF0b3Iob3V0cHV0LnR5cGUpOyAhaXRlci5lbmQoKTsgaXRlci5uZXh0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGZ1bGxwYXRoID0gdmFyUGF0aC5jb25jYXQoaXRlci5nZXRQYXRoKCkp
OworICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmliTmFtZSA9IGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLmdldEF0dHJpYnV0ZU5hbWUodmFyTmFtZSwgZnVsbHBhdGgpOworICAgICAgICAg
ICAgICAgICAgICB2YXIgYXR0cmliID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZmluZEF0
dHJpYnV0ZU5hbWVFcXVhbHMoYXR0cmlidXRlcywgYXR0cmliTmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIG91dHB1dC5pbnB1dHMucHVzaChhdHRyaWIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0cy5wdXNoKG91
dHB1dCk7CisgICAgICAgICAgICBhY2N1bXVsYXRlZFNpemUgKz0gb3V0cHV0LnR5cGUuZ2V0U2Nh
bGFyU2l6ZSgpICogNDsgLypzaXplb2YoZGVVaW50MzIpKi8KKyAgICAgICAgfQorICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkF0dHJp
YnV0ZX0gYXR0cmliCisgICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYnVmZmVyCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1FbGVtZW50
cworICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQKKyAgICAgKi8KKyAgICBlczNm
VHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5nZW5BdHRyaWJ1dGVEYXRhID0gZnVuY3Rpb24oYXR0cmli
LCBidWZmZXIsIHN0cmlkZSwgbnVtRWxlbWVudHMsIHJuZCkgeworCisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgZWxlbWVudFNpemUgPSA0OyAvKnNpemVvZihkZVVpbnQzMikqLwor
ICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0Zsb2F0ID0gZ2x1U2hhZGVyVXRp
bC5pc0RhdGFUeXBlRmxvYXRPclZlYyhhdHRyaWIudHlwZS5nZXRCYXNpY1R5cGUoKSk7CisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzSW50ID0gZ2x1U2hhZGVyVXRpbC5pc0Rh
dGFUeXBlSW50T3JJVmVjKGF0dHJpYi50eXBlLmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNVaW50ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBl
VWludE9yVVZlYyhhdHRyaWIudHlwZS5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHByZWNpc2lvbiA9IGF0dHJpYi50
eXBlLmdldFByZWNpc2lvbigpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bnVtQ29tcHMgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShhdHRyaWIudHlw
ZS5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICAgICAgZm9yICh2YXIgZWxlbU5keCA9IDA7IGVsZW1O
ZHggPCBudW1FbGVtZW50czsgZWxlbU5keCsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBjb21w
TmR4ID0gMDsgY29tcE5keCA8IG51bUNvbXBzOyBjb21wTmR4KyspIHsKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG9mZnNldCA9IGF0dHJpYi5vZmZzZXQgKyBlbGVt
TmR4ICogc3RyaWRlICsgY29tcE5keCAqIGVsZW1lbnRTaXplOworICAgICAgICAgICAgICAgIGlm
IChpc0Zsb2F0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBuZXcgRmxvYXQzMkFy
cmF5KGJ1ZmZlciwgb2Zmc2V0LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmVj
aXNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVj
aXNpb24uUFJFQ0lTSU9OX0xPV1A6IHBvc1swXSA9IDAuMjUgKiBybmQuZ2V0SW50KDAsIDQpOyBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNp
b24uUFJFQ0lTSU9OX01FRElVTVA6IHBvc1swXSA9IHJuZC5nZXRGbG9hdCgtMWUzLCAxZTMpOyBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNp
b24uUFJFQ0lTSU9OX0hJR0hQOiBwb3NbMF0gPSBybmQuZ2V0RmxvYXQoLTFlNSwgMWU1KTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vu
a25vd24gcHJlY2lzaW9uOiAnICsgcHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHBvcyA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChwcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6IHBvc1swXSA9IHJuZC5n
ZXRJbnQoLTEyOCwgMTI3KTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOiBwb3NbMF0gPSBybmQuZ2V0
SW50KC0zMjc2OCwgMzI3NjcpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQOiBwb3NbMF0gPSBybmQuZ2V0
SW50KCk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3
IEVycm9yKCdVbmtub3duIHByZWNpc2lvbjogJyArIHByZWNpc2lvbik7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVWludCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgcG9zID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCAxKTsK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6IHBv
c1swXSA9IHJuZC5nZXRJbnQoMCwgMjU1KTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOiBwb3NbMF0g
PSBybmQuZ2V0SW50KDAsIDY1NTM1KTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUDogcG9zWzBdID0gTWF0
aC5hYnMocm5kLmdldEludCgpKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJlY2lzaW9uOiAnICsgcHJlY2lzaW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkF0dHJpYnV0ZT59IGF0dHJpYnV0ZXMKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbnVtSW5wdXRzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGlucHV0U3RyaWRl
CisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAqIEByZXR1cm4ge0Fy
cmF5QnVmZmVyfQorICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmdlbklu
cHV0RGF0YSA9IGZ1bmN0aW9uKGF0dHJpYnV0ZXMsIG51bUlucHV0cywgaW5wdXRTdHJpZGUsIHJu
ZCkgeworICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKG51bUlucHV0cyAqIGlu
cHV0U3RyaWRlKTsKKworICAgICAgICB2YXIgcG9zaXRpb24gPSBlczNmVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0cy5maW5kQXR0cmlidXRlTmFtZUVxdWFscyhhdHRyaWJ1dGVzLCAnYV9wb3NpdGlvbicp
OworICAgICAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQ
b3NpdGlvbiBhdHRyaWJ1dGUgbm90IGZvdW5kLicpOworCisgICAgICAgIGZvciAodmFyIG5keCA9
IDA7IG5keCA8IG51bUlucHV0czsgbmR4KyspIHsKKyAgICAgICAgICAgIHZhciBwb3MgPSBuZXcg
RmxvYXQzMkFycmF5KGJ1ZmZlciwgcG9zaXRpb24ub2Zmc2V0ICsgaW5wdXRTdHJpZGUgKiBuZHgs
IDQpOworICAgICAgICAgICAgcG9zWzBdID0gcm5kLmdldEZsb2F0KC0xLjIsIDEuMik7CisgICAg
ICAgICAgICBwb3NbMV0gPSBybmQuZ2V0RmxvYXQoLTEuMiwgMS4yKTsKKyAgICAgICAgICAgIHBv
c1syXSA9IHJuZC5nZXRGbG9hdCgtMS4yLCAxLjIpOworICAgICAgICAgICAgcG9zWzNdID0gcm5k
LmdldEZsb2F0KDAuMSwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBwb2ludFNpemVQ
b3MgPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5maW5kQXR0cmlidXRlTmFtZUVxdWFscyhh
dHRyaWJ1dGVzLCAnYV9wb2ludFNpemUnKTsKKyAgICAgICAgaWYgKHBvaW50U2l6ZVBvcykgewor
ICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtSW5wdXRzOyBuZHgrKykgewor
ICAgICAgICAgICAgICAgIHZhciBwb3MgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlciwgcG9pbnRT
aXplUG9zLm9mZnNldCArIGlucHV0U3RyaWRlICogbmR4LCAxKTsKKyAgICAgICAgICAgICAgICBw
b3NbMF0gPSBybmQuZ2V0RmxvYXQoMSwgOCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBSYW5kb20gZGF0YSBmb3IgcmVzdCBvZiBjb21wb25lbnRzLgorICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzW2ldLm5hbWUgIT0gJ2FfcG9zaXRpb24nICYmIGF0dHJpYnV0ZXNbaV0u
bmFtZSAhPSAnYV9wb2ludFNpemUnKQorICAgICAgICAgICAgICAgIGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLmdlbkF0dHJpYnV0ZURhdGEoYXR0cmlidXRlc1tpXSwgYnVmZmVyLCBpbnB1dFN0
cmlkZSwgbnVtSW5wdXRzLCBybmQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
cjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG91dHB1
dHMgd2l0aCB0aGUgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY291bnQgZm9yIHRoZSBQcmlt
aXRpdmVzIGluIHRoZSBUcmFuc2Zvcm0gRmVlZGJhY2suCisgICAgICogQHBhcmFtIHtnbHVEcmF3
VXRpbC5wcmltaXRpdmVUeXBlfSBwcmltaXRpdmVUeXBlIEdMZW51bSB0aGF0IHNwZWNpZmllcyB3
aGF0IGtpbmQgb2YgcHJpbWl0aXZlIGlzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUVsZW1l
bnRzCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RzLmdldFRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0Q291bnQgPSBmdW5jdGlvbihw
cmltaXRpdmVUeXBlLCBudW1FbGVtZW50cykgeworCisgICAgc3dpdGNoIChwcmltaXRpdmVUeXBl
KSB7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRVM6IHJl
dHVybiBudW1FbGVtZW50cyAtIG51bUVsZW1lbnRzICUgMzsKKyAgICAgICAgY2FzZSBnbHVEcmF3
VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFX1NUUklQOiByZXR1cm4gTWF0aC5tYXgoMCwgbnVt
RWxlbWVudHMgLSAyKSAqIDM7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlw
ZS5UUklBTkdMRV9GQU46IHJldHVybiBNYXRoLm1heCgwLCBudW1FbGVtZW50cyAtIDIpICogMzsK
KyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVTOiByZXR1cm4gbnVt
RWxlbWVudHMgLSBudW1FbGVtZW50cyAlIDI7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5MSU5FX1NUUklQOiByZXR1cm4gTWF0aC5tYXgoMCwgbnVtRWxlbWVudHMgLSAx
KSAqIDI7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX0xPT1A6
IHJldHVybiBudW1FbGVtZW50cyA+IDEgPyBudW1FbGVtZW50cyAqIDIgOiAwOworICAgICAgICBj
YXNlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuUE9JTlRTOiByZXR1cm4gbnVtRWxlbWVudHM7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2du
aXplZCBwcmltaXRpdmVUeXBlICcgKyBwcmltaXRpdmVUeXBlKTsKKyAgICAgICB9CisKKyAgICB9
OworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG51bWJlciB3aXRoIHRoZSBlczNmVHJhbnNm
b3JtRmVlZGJhY2tUZXN0cy5jb3VudCBmb3IgdGhlIFByaW1pdGl2ZXMgaW4gdGhlIFRyYW5zZm9y
bSBGZWVkYmFjay4KKyAgICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHBy
aW1pdGl2ZVR5cGUgR0xlbnVtIHRoYXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUg
aXMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbWVudHMKKyAgICAgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0VHJhbnNm
b3JtRmVlZGJhY2tQcmltaXRpdmVDb3VudCA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUsIG51bUVs
ZW1lbnRzKSB7CisKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUpIHsKKyAgICAgICAgY2FzZSBn
bHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFUzogcmV0dXJuIE1hdGguZmxvb3IobnVt
RWxlbWVudHMgLyAzKTsKKyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRS
SUFOR0xFX1NUUklQOiByZXR1cm4gTWF0aC5tYXgoMCwgbnVtRWxlbWVudHMgLSAyKTsKKyAgICAg
ICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFX0ZBTjogcmV0dXJuIE1h
dGgubWF4KDAsIG51bUVsZW1lbnRzIC0gMik7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5MSU5FUzogcmV0dXJuIE1hdGguZmxvb3IobnVtRWxlbWVudHMgLyAyKTsKKyAg
ICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfU1RSSVA6IHJldHVybiBN
YXRoLm1heCgwLCBudW1FbGVtZW50cyAtIDEpOworICAgICAgICBjYXNlIGdsdURyYXdVdGlsLnBy
aW1pdGl2ZVR5cGUuTElORV9MT09QOiByZXR1cm4gbnVtRWxlbWVudHMgPiAxID8gbnVtRWxlbWVu
dHMgOiAwOworICAgICAgICBjYXNlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuUE9JTlRTOiBy
ZXR1cm4gbnVtRWxlbWVudHM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ1VucmVjb2duaXplZCBwcmltaXRpdmVUeXBlICcgKyBwcmltaXRpdmVUeXBlKTsK
KyAgICAgICB9CisKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHlwZSBv
ZiBQcmltaXRpdmUgTW9kZTogVHJpYW5nbGVzIGZvciBhbGwgVHJpYW5nbGUgUHJpbWl0aXZlJ3Mg
dHlwZSBhbmQgc2FtZSBmb3IgTGluZSBhbmQgUG9pbnRzLgorICAgICAqIEBwYXJhbSB7Z2x1RHJh
d1V0aWwucHJpbWl0aXZlVHlwZX0gcHJpbWl0aXZlVHlwZSBHTGVudW0gdGhhdCBzcGVjaWZpZXMg
d2hhdCBraW5kIG9mIHByaW1pdGl2ZSBpcworICAgICAqIEByZXR1cm4ge251bWJlcn0gcHJpbWl0
aXZlVHlwZQorICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmdldFRyYW5z
Zm9ybUZlZWRiYWNrUHJpbWl0aXZlTW9kZSA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUpIHsKKwor
ICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgeworICAgICAgICBjYXNlIGdsdURyYXdVdGlsLnBy
aW1pdGl2ZVR5cGUuVFJJQU5HTEVTOgorICAgICAgICBjYXNlIGdsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGUuVFJJQU5HTEVfU1RSSVA6CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZl
VHlwZS5UUklBTkdMRV9GQU46CisgICAgICAgICAgICByZXR1cm4gZ2wuVFJJQU5HTEVTOworCisg
ICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FUzoKKyAgICAgICAgY2Fz
ZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLkxJTkVfU1RSSVA6CisgICAgICAgIGNhc2UgZ2x1
RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5FX0xPT1A6CisgICAgICAgICAgICByZXR1cm4gZ2wu
TElORVM7CisKKyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlBPSU5UUzoK
KyAgICAgICAgICAgIHJldHVybiBnbC5QT0lOVFM7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHByaW1pdGl2ZVR5cGUgJyArIHBy
aW1pdGl2ZVR5cGUpOworICAgICAgIH0KKworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1
cm5zIHRoZSBhdHRyaWJ1dGUgaW5kZXggZm9yIGEgY2VydGFpbiBwcmltaXRpdmUgdHlwZS4KKyAg
ICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUgR0xl
bnVtIHRoYXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbnVtSW5wdXRzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG91dE5keAorICAg
ICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0cy5nZXRBdHRyaWJ1dGVJbmRleCA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUsIG51bUlucHV0
cywgb3V0TmR4KSB7CisKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUpIHsKKworICAgICAgICBj
YXNlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTOiByZXR1cm4gb3V0TmR4Owor
ICAgICAgICBjYXNlIGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuTElORVM6IHJldHVybiBvdXRO
ZHg7CisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5QT0lOVFM6IHJldHVy
biBvdXROZHg7CisKKyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFO
R0xFX1NUUklQOiB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU5k
eCA9IG91dE5keCAvIDM7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZ0
eE5keCA9IG91dE5keCAlIDM7CisgICAgICAgICAgICByZXR1cm4gKHRyaU5keCAlIDIgIT0gMCAm
JiB2dHhOZHggPCAyKSA/ICh0cmlOZHggKyAxIC0gdnR4TmR4KSA6ICh0cmlOZHggKyB2dHhOZHgp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRS
SUFOR0xFX0ZBTjoKKyAgICAgICAgICAgIHJldHVybiAob3V0TmR4ICUgMyAhPSAwKSA/IChvdXRO
ZHggLyAzICsgb3V0TmR4ICUgMykgOiAwOworCisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJp
bWl0aXZlVHlwZS5MSU5FX1NUUklQOgorICAgICAgICAgICAgcmV0dXJuIG91dE5keCAvIDIgKyBv
dXROZHggJSAyOworCisgICAgICAgIGNhc2UgZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5MSU5F
X0xPT1A6IHsKKyAgICAgICAgICAgIHZhciBpbk5keCA9IG91dE5keCAvIDIgKyBvdXROZHggJSAy
OworICAgICAgICAgICAgcmV0dXJuIGluTmR4IDwgbnVtSW5wdXRzID8gaW5OZHggOiAwOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
VW5yZWNvZ25pemVkIHByaW1pdGl2ZVR5cGUgJyArIHByaW1pdGl2ZVR5cGUpOworICAgICAgIH0K
KworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGV9IHByaW1pdGl2ZVR5cGUgdHlwZSBudW1iZXIgaW4gZ2x1RHJhd1V0aWwucHJpbWl0aXZl
VHlwZQorICAgICAqIEBwYXJhbSB7ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuT3V0cHV0fSBv
dXRwdXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtSW5wdXRzCisgICAgICogQHBhcmFtIHtP
YmplY3R9IGJ1ZmZlcnMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufSBpc09rCisgICAgICovCisg
ICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY29tcGFyZVRyYW5zZm9ybUZlZWRiYWNrT3V0
cHV0ID0gZnVuY3Rpb24ocHJpbWl0aXZlVHlwZSwgb3V0cHV0LCBudW1JbnB1dHMsIGJ1ZmZlcnMp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IHRydWU7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb3V0T2Zmc2V0ID0gb3V0cHV0Lm9mZnNldDsK
KworICAgICAgICBmb3IgKHZhciBhdHRyTmR4ID0gMDsgYXR0ck5keCA8IG91dHB1dC5pbnB1dHMu
bGVuZ3RoOyBhdHRyTmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0cy5BdHRyaWJ1dGV9ICovIHZhciBhdHRyaWJ1dGUgPSBvdXRwdXQuaW5wdXRzW2F0
dHJOZHhdOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZh
ciB0eXBlID0gYXR0cmlidXRlLnR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtQ29tcG9uZW50cyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVTY2FsYXJTaXplKHR5cGUpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5w
cmVjaXNpb259ICovIHZhciBwcmVjaXNpb24gPSBhdHRyaWJ1dGUudHlwZS5nZXRQcmVjaXNpb24o
KTsKKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNjYWxhclR5cGUgPSBnbHVT
aGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZSh0eXBlKTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBudW1PdXRwdXRzID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
Z2V0VHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRDb3VudChwcmltaXRpdmVUeXBlLCBudW1JbnB1dHMp
OworCisgICAgICAgICAgICBmb3IgKHZhciBvdXROZHggPSAwOyBvdXROZHggPCBudW1PdXRwdXRz
OyBvdXROZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbk5k
eCA9IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmdldEF0dHJpYnV0ZUluZGV4KHByaW1pdGl2
ZVR5cGUsIG51bUlucHV0cywgb3V0TmR4KTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGNv
bXBOZHggPSAwOyBjb21wTmR4IDwgbnVtQ29tcG9uZW50czsgY29tcE5keCsrKSB7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNFcXVhbCA9IGZhbHNlOworCisg
ICAgICAgICAgICAgICAgICAgIGlmIChzY2FsYXJUeXBlID09PSAnZmxvYXQnKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgb3V0QnVmZmVyID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXJz
Lm91dHB1dC5idWZmZXIsIGJ1ZmZlcnMub3V0cHV0Lm9mZnNldCArIGJ1ZmZlcnMub3V0cHV0LnN0
cmlkZSAqIG91dE5keCArIG91dE9mZnNldCArIGNvbXBOZHggKiA0LCAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBpbkJ1ZmZlciA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVycy5pbnB1
dC5idWZmZXIsIGJ1ZmZlcnMuaW5wdXQub2Zmc2V0ICsgYnVmZmVycy5pbnB1dC5zdHJpZGUgKiBp
bk5keCArIGF0dHJpYnV0ZS5vZmZzZXQgKyBjb21wTmR4ICogNCwgMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgZGlmSW5PdXQgPSBpbkJ1ZmZlclswXSAtIG91dEJ1ZmZlclswXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE86IE9yaWdpbmFsIGNvZGUgdXNlZCBVTFAgY29t
cGFyaXNvbiBmb3IgaGlnaHAgYW5kIG1lZGl1bXAgcHJlY2lzaW9uLiBUaGlzIGNvdWxkIGNhdXNl
IGZhaWx1cmVzLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmVjaXNpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lz
aW9uLlBSRUNJU0lPTl9ISUdIUDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c0VxdWFsID0gTWF0aC5hYnMoZGlmSW5PdXQpIDwgMC4xOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJ
U0lPTl9NRURJVU1QOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRXF1YWwg
PSBNYXRoLmFicyhkaWZJbk91dCkgPCAwLjE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xP
V1A6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFcXVhbCA9IE1hdGguYWJz
KGRpZkluT3V0KSA8IDAuMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcignVW5rbm93biBwcmVjaXNpb246ICcgKyBwcmVjaXNpb24pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG91dEJ1ZmZlciA9IG5ldyBVaW50MzJBcnJheShidWZmZXJzLm91dHB1dC5i
dWZmZXIsIGJ1ZmZlcnMub3V0cHV0Lm9mZnNldCArIGJ1ZmZlcnMub3V0cHV0LnN0cmlkZSAqIG91
dE5keCArIG91dE9mZnNldCArIGNvbXBOZHggKiA0LCAxKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBpbkJ1ZmZlciA9IG5ldyBVaW50MzJBcnJheShidWZmZXJzLmlucHV0LmJ1ZmZlciwg
YnVmZmVycy5pbnB1dC5vZmZzZXQgKyBidWZmZXJzLmlucHV0LnN0cmlkZSAqIGluTmR4ICsgYXR0
cmlidXRlLm9mZnNldCArIGNvbXBOZHggKiA0LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlzRXF1YWwgPSAoaW5CdWZmZXJbMF0gPT0gb3V0QnVmZmVyWzBdKTsgLy8gQml0LWV4YWN0IG1h
dGNoIHJlcXVpcmVkIGZvciBpbnRlZ2VyIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnTWlzbWF0Y2ggaW4gJyArIG91dHB1dC5uYW1lICsg
JyAoJyArIGF0dHJpYnV0ZS5uYW1lICsgJyksIG91dHB1dCA9ICcgKyBvdXROZHggKyAnLCBpbnB1
dCA9ICcgKyBpbk5keCArICcsIGNvbXBvbmVudCA9ICcgKyBjb21wTmR4KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKCFpc09rKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFpc09rKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBvdXRPZmZzZXQgKz0gbnVtQ29tcG9uZW50cyAqIDQ7IC8qc2l6ZW9mKGRlVWlu
dDMyKSovCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaXNPazsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogUmV0dXJucyAoZm9yIGFsbCB0aGUgZHJhdyBjYWxscykgdGhlIHR5cGUgb2Yg
UHJpbWl0aXZlIE1vZGUsIGFzIGl0IGNhbGxzICJlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5n
ZXRUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZUNvdW50Ii4KKyAgICAgKiBAcGFyYW0ge2dsdURy
YXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUgR0xlbnVtIHRoYXQgc3BlY2lmaWVz
IHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLkRyYXdDYWxsPn0gYXJyYXkgT2JqZWN0LjxudW1iZXIsIGJvb2xl
YW4+CisgICAgICogQHJldHVybiB7bnVtYmVyfSBwcmltQ291bnQKKyAgICAgKi8KKyAgICBlczNm
VHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5jb21wdXRlVHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVD
b3VudCA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUsIGFycmF5KSB7CisKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHByaW1Db3VudCA9IDA7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhcnJheS5sZW5ndGg7ICsrIGkpIHsKKworICAgICAgICAgICAgaWYgKGFycmF5W2ldLnRy
YW5zZm9ybUZlZWRiYWNrRW5hYmxlZCkKKyAgICAgICAgICAgICAgICBwcmltQ291bnQgKz0gZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0VHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVDb3Vu
dChwcmltaXRpdmVUeXBlLCBhcnJheVtpXS5udW1FbGVtZW50cyk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gcHJpbUNvdW50OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gdGFyZ2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlclNpemUKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gZ3VhcmRTaXplCisgICAgICovCisgICAgZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMud3JpdGVCdWZmZXJHdWFyZCA9IGZ1bmN0aW9uKHRhcmdldCwgYnVmZmVyU2l6
ZSwgZ3VhcmRTaXplKSB7CisgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZ3Vh
cmRTaXplKTsKKyAgICAgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGd1YXJkU2l6ZTsgKytpKSB2aWV3W2ldID0gMHhjZDsK
KyAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YSh0YXJnZXQsIGJ1ZmZlclNpemUsIGJ1ZmZlcik7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIFZlcmlmaWVzIGd1YXJkCisgICAgICogQHBhcmFtIHtB
cnJheUJ1ZmZlcn0gYnVmZmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0CisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy52ZXJpZnlHdWFyZCA9IGZ1bmN0aW9uKGJ1ZmZlciwgc3RhcnQpIHsKKyAgICAgICAgc3RhcnQg
PSBzdGFydCB8fCAwOworICAgICAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwg
c3RhcnQpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIGlmICh2aWV3W2ldICE9IDB4Y2QpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBidWZmZXJNb2RlCisgICAgICogQHBhcmFtIHtnbHVEcmF3VXRpbC5wcmltaXRp
dmVUeXBlfSBwcmltaXRpdmVUeXBlIEdMZW51bSB0aGF0IHNwZWNpZmllcyB3aGF0IGtpbmQgb2Yg
cHJpbWl0aXZlIGlzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMzZlRyYW5z
Zm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlID0gZnVuY3Rpb24obmFtZSwg
ZGVzYywgYnVmZmVyTW9kZSwgcHJpbWl0aXZlVHlwZSkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICB0aGlzLm1fYnVmZmVyTW9k
ZSA9IGJ1ZmZlck1vZGU7CisgICAgICAgIHRoaXMubV9wcmltaXRpdmVUeXBlID0gcHJpbWl0aXZl
VHlwZTsKKyAgICAgICAgdGhpcy5tX3Byb2dTcGVjID0gbmV3IGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLlByb2dyYW1TcGVjKCk7CisKKyAgICAgICAgLy8gRGVyaXZlZCBmcm9tIGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLlByb2dyYW1TcGVjIGluIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzLmluaXQoKQorICAgICAgICB0aGlzLm1faW5wdXRTdHJpZGUgPSAwOworICAgICAgICB0aGlz
Lm1fYXR0cmlidXRlcyA9IFtdOyAvLyB2ZWN0b3I8ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
QXR0cmlidXRlPgorICAgICAgICB0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzID0gW107
IC8vIHZlY3RvcjxlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5PdXRwdXQ+CisgICAgICAgIHRo
aXMubV9idWZmZXJTdHJpZGVzID0gW107IC8vIHZlY3RvcjxpbnQ+CisKKyAgICAgICAgLy8gR0wg
c3RhdGUuCisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbnVsbDsgLy8gZ2x1OjpTaGFkZXJQcm9n
cmFtCisgICAgICAgIHRoaXMubV90cmFuc2Zvcm1GZWVkYmFjayA9IG51bGw7IC8vIGdsdTo6VHJh
bnNmb3JtRmVlZGJhY2sKKyAgICAgICAgdGhpcy5tX291dHB1dEJ1ZmZlcnMgPSBbXTsgLy8gdmVj
dG9yPGRlVWludDMyPgorCisgICAgICAgIHRoaXMubV9pdGVyTmR4ID0gMDsgLy8gaW50CisgICAg
ICAgIHRoaXMubV90ZXN0UGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgLy8gU3RhdGUgbWFjaGluZQor
ICAgICAgICB0aGlzLm1fc3RhdGUgPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5TdGF0ZS5E
UkFXOworICAgICAgICB0aGlzLm1fdmVyaWZ5U3RhcnQgPSBudWxsOworCisgICAgICAgIHRoaXMu
bV9mcmFtZVdpdGhUZiA9IG51bGw7CisgICAgICAgIHRoaXMubV9mcmFtZVdpdGhvdXRUZiA9IG51
bGw7CisKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0VyA9IDA7CisgICAgICAgIHRoaXMubV92aWV3
cG9ydEggPSAwOworICAgICAgICB0aGlzLm1fdmlld3BvcnRYID0gMDsKKyAgICAgICAgdGhpcy5t
X3ZpZXdwb3J0WSA9IDA7CisKKyAgICAgICAgdGhpcy5tX3ByaW1pdGl2ZVF1ZXJ5ID0gbnVsbDsK
KyAgICAgICAgdGhpcy5tX291dHB1dHNPayA9IHRydWU7CisKKyAgICB9OworCisgICAgc2V0UGFy
ZW50Q2xhc3MoZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNl
LCB0Y3VUZXN0Q2FzZS5EZXFwVGVzdCk7CisKKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2UucHJvdG90eXBlLmNyZWF0ZVZlcmlmaWNhdGlvblJlc3Vs
dCA9IGZ1bmN0aW9uKHJldHJ5LCByZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHsgcmV0cnk6IHJl
dHJ5LCByZXN1bHQ6IHJlc3VsdCB9OworICAgIH0KKworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5wcm90b3R5cGUuZHVtcFNoYWRlclRleHQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGRiZ2V4dCA9IGdsLmdldEV4dGVuc2lvbignV0VCR0xf
ZGVidWdfc2hhZGVycycpOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGhpcy5tX3By
b2dyYW0uc2hhZGVycy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgICAgIGRlYnVnKCdTaGFkZXIg
c291cmNlICcgKyBpaSArICcgYmVmb3JlIHRyYW5zbGF0aW9uOicpCisgICAgICAgICAgICBkZWJ1
Zyh0aGlzLm1fcHJvZ3JhbS5zaGFkZXJzW2lpXS5pbmZvLnNvdXJjZSk7CisgICAgICAgICAgICBk
ZWJ1ZygnJyk7CisgICAgICAgICAgICBkZWJ1ZygnU2hhZGVyIHNvdXJjZSAnICsgaWkgKyAnIGFm
dGVyIHRyYW5zbGF0aW9uOicpOworICAgICAgICAgICAgZGVidWcoZGJnZXh0LmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2UodGhpcy5tX3Byb2dyYW0uc2hhZGVyc1tpaV0uc2hhZGVyKSk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3Jt
RmVlZGJhY2tDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMu
bV9wcm9ncmFtID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY3JlYXRlVmVydGV4Q2FwdHVy
ZVByb2dyYW0oCisgICAgICAgICAgICB0aGlzLm1fcHJvZ1NwZWMsCisgICAgICAgICAgICB0aGlz
Lm1fYnVmZmVyTW9kZSwKKyAgICAgICAgICAgIHRoaXMubV9wcmltaXRpdmVUeXBlCisgICAgICAg
ICk7CisKKyAgICAgICAgaWYgKCF0aGlzLm1fcHJvZ3JhbS5pc09rKCkpIHsKKyAgICAgICAgICAg
IC8vIHRoaXMuZHVtcFNoYWRlclRleHQoKTsKKworICAgICAgICAgICAgdmFyIGxpbmtGYWlsID0g
dGhpcy5tX3Byb2dyYW0uc2hhZGVyc09LICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAh
dGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbUluZm8oKS5saW5rT2s7CisKKyAgICAgICAgICAgIGlm
IChsaW5rRmFpbCkgeworICAgICAgICAgICAgICAgIGlmICghZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMuaXNQcm9ncmFtU3VwcG9ydGVkKHRoaXMubV9wcm9nU3BlYywgdGhpcy5tX2J1ZmZlck1v
ZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtc2cgPSAnTm90IFN1cHBvcnRlZC4gSW1w
bGVtZW50YXRpb24gbGltaXRzIGV4Y2VlZGVkLic7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
TWVzc2FnZShmYWxzZSwgbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RG
YWlsZWRFeGNlcHRpb24obXNnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLmhhc0FycmF5c0luVEZWYXJ5aW5ncyh0aGlzLm1fcHJvZ1NwZWMp
KSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdDYXB0dXJpbmcgYXJyYXlzIGlzIG5vdCBz
dXBwb3J0ZWQgKHVuZGVmaW5lZCBpbiBzcGVjaWZpY2F0aW9uKSc7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrTWVzc2FnZShmYWxzZSwgbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFRlc3RGYWlsZWRFeGNlcHRpb24obXNnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xpbmsgZmFpbGVkOiAnICsgdGhp
cy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbUluZm8oKS5pbmZvTG9nKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
Q29tcGlsZSBmYWlsZWQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIGRlYnVnKCdQcm9ncmFtIGlzICcgKworICAgICAgICAgICAgLy8gICAgICAgKGds
LmdldFByb2dyYW1QYXJhbWV0ZXIodGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCBnbC5MSU5L
X1NUQVRVUykgPyAnbGlua2VkJyA6ICdub3QgbGlua2VkJykpOworICAgICAgICAgICAgLy8gdGhp
cy5kdW1wU2hhZGVyVGV4dCgpOworICAgICAgICB9CisKKy8vICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdUcmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3M6ICcgKyB0Y3UuZm9ybWF0QXJy
YXkodGhpcy5tX3Byb2dTcGVjLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKSkpOworICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnVHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzOiAn
ICsgdGhpcy5tX3Byb2dTcGVjLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKSk7CisKKyAg
ICAgICAgLy8gUHJpbnQgb3V0IHRyYW5zZm9ybSBmZWVkYmFjayBwb2ludHMgcmVwb3J0ZWQgYnkg
R0wuCisgICAgICAgIC8vIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdUcmFuc2Zvcm0gZmVlZGJhY2sg
dmFyeWluZ3MgcmVwb3J0ZWQgYnkgY29tcGlsZXI6Jyk7CisgICAgICAgIC8vbG9nVHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhsb2csIGdsLCB0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOwor
CisgICAgICAgIC8vIENvbXB1dGUgaW5wdXQgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgdGhpcy5t
X2lucHV0U3RyaWRlID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY29tcHV0ZUlucHV0TGF5
b3V0KHRoaXMubV9hdHRyaWJ1dGVzLCB0aGlzLm1fcHJvZ1NwZWMuZ2V0VmFyeWluZ3MoKSwgdGhp
cy5tX3Byb2dTcGVjLmlzUG9pbnRTaXplVXNlZCgpKTsKKworICAgICAgICAvLyBCdWlsZCBsaXN0
IG9mIHZhcnlpbmdzIHVzZWQgaW4gdHJhbnNmb3JtIGZlZWRiYWNrLgorICAgICAgICBlczNmVHJh
bnNmb3JtRmVlZGJhY2tUZXN0cy5jb21wdXRlVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzKAorICAg
ICAgICAgICAgdGhpcy5tX3RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0cywKKyAgICAgICAgICAgIHRo
aXMubV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgdGhpcy5tX3Byb2dTcGVjLmdldFZhcnlpbmdz
KCksCisgICAgICAgICAgICB0aGlzLm1fcHJvZ1NwZWMuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncygpLAorICAgICAgICAgICAgdGhpcy5tX2J1ZmZlck1vZGUKKyAgICAgICAgKTsKKyAgICAg
ICAgaWYgKCF0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzLmxlbmd0aCkgeworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2Zvcm1GZWVkYmFja091dHB1dHMgY2Fubm90IGJl
IGVtcHR5LicpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMubV9idWZmZXJNb2RlID09
IGdsLlNFUEFSQVRFX0FUVFJJQlMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5tX3RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgIHRoaXMubV9idWZmZXJTdHJpZGVzLnB1c2godGhpcy5tX3RyYW5zZm9ybUZlZWRiYWNr
T3V0cHV0c1tpXS50eXBlLmdldFNjYWxhclNpemUoKSAqIDQgLypzaXplb2YoZGVVaW50MzIpKi8p
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHRvdGFs
U2l6ZSA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubV90cmFuc2Zv
cm1GZWVkYmFja091dHB1dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB0b3RhbFNp
emUgKz0gdGhpcy5tX3RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0c1tpXS50eXBlLmdldFNjYWxhclNp
emUoKSAqIDQgLypzaXplb2YoZGVVaW50MzIpKi87CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0aGlzLm1fYnVmZmVyU3RyaWRlcy5wdXNoKHRvdGFsU2l6ZSk7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLm1fb3V0cHV0QnVmZmVycy5sZW5ndGggPSB0aGlzLm1fYnVmZmVyU3RyaWRlcy5s
ZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX291dHB1dEJ1ZmZlcnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICB0aGlzLm1fb3V0cHV0QnVmZmVyc1tpXSA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworCisgICAgICAgIHRoaXMubV90cmFuc2Zvcm1GZWVkYmFjayA9IGdsLmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICAgICAgdGhpcy5tX2l0ZXJOZHggPSAwOwor
Ly8gICAgICAgICAgdGhpcy5tX3Rlc3RDdHguc2V0VGVzdFJlc3VsdChRUF9URVNUX1JFU1VMVF9Q
QVNTLCAnUGFzcycpOworCisgICAgfTsKKworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3Rz
LlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX291dHB1dEJ1ZmZlcnMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIodGhpcy5tX291dHB1dEJ1ZmZlcnNbaV0p
OworCisgICAgLy8gICAgZGVsZXRlIHRoaXMubV90cmFuc2Zvcm1GZWVkYmFjazsKKyAgICAgICAg
dGhpcy5tX3RyYW5zZm9ybUZlZWRiYWNrID0gbnVsbDsKKworICAgIC8vICAgIGRlbGV0ZSB0aGlz
Lm1fcHJvZ3JhbTsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBudWxsOworCisgICAgICAgIC8v
IENsZWFuIHVwIHN0YXRlLgorICAgICAgICB0aGlzLm1fYXR0cmlidXRlcyA9IFtdOworICAgICAg
ICB0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzID0gW107CisgICAgICAgIHRoaXMubV9i
dWZmZXJTdHJpZGVzID0gW107CisgICAgICAgIHRoaXMubV9pbnB1dFN0cmlkZSA9IDA7CisKKyAg
ICB9OworCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tD
YXNlLnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzID0gZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlLnNfaXRlcmF0ZTsK
KyAgICAgICAgdmFyIG51bUl0ZXJhdGlvbnMgPSBzLml0ZXJhdGlvbnMubGVuZ3RoOworICAgICAg
ICB2YXIgc2VlZCA9IGRlTWF0aC5kZU1hdGhIYXNoKHRoaXMubV9pdGVyTmR4KTsKKyAgICAgICAg
c3dpdGNoKHRoaXMubV9zdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBlczNmVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0cy5TdGF0ZS5EUkFXOgorICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCdUZXN0aW5nICcgKworICAgICAgICAgICAgICAgICAgICBzLnRlc3RDYXNlc1tzLml0ZXJh
dGlvbnNbdGhpcy5tX2l0ZXJOZHhdXS5sZW5ndGggKworICAgICAgICAgICAgICAgICAgICAnIGRy
YXcgY2FsbHMsIChlbGVtZW50IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmNvdW50LCBURiBz
dGF0ZSk6ICcgKworICAgICAgICAgICAgICAgICAgICBzLnRlc3RDYXNlc1tzLml0ZXJhdGlvbnNb
dGhpcy5tX2l0ZXJOZHhdXQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdGhp
cy5kcmF3KHMudGVzdENhc2VzW3MuaXRlcmF0aW9uc1t0aGlzLm1faXRlck5keF1dLCBzZWVkKTsK
KyAgICAgICAgICAgICAgICB0aGlzLm1fc3RhdGUgPSBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5TdGF0ZS5WRVJJRlk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlN0YXRlLlZFUklGWToKKyAgICAgICAgICAgICAg
ICB2YXIgdmVyaWZ5UmVzdWx0ID0gdGhpcy52ZXJpZnkocy50ZXN0Q2FzZXNbcy5pdGVyYXRpb25z
W3RoaXMubV9pdGVyTmR4XV0pOworICAgICAgICAgICAgICAgIGlmICh2ZXJpZnlSZXN1bHQucmV0
cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHRoaXMubV90ZXN0UGFzc2VkID0gdmVyaWZ5UmVzdWx0LnJlc3VsdDsKKyAg
ICAgICAgICAgICAgICB0aGlzLm1faXRlck5keCArPSAxOworICAgICAgICAgICAgICAgIGlmICh0
aGlzLm1fdGVzdFBhc3NlZCAmJiB0aGlzLm1faXRlck5keCA8IG51bUl0ZXJhdGlvbnMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX3N0YXRlID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuU3RhdGUuRFJBVzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAgICAgICAgICAgY2FzZSBl
czNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5TdGF0ZS5GSU5JU0g6CisgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLm1fdGVzdFBhc3NlZCkgdGVzdEZhaWxlZE9wdGlvbnMoJ1Jlc3VsdCBjb21wYXJp
c29uIGZhaWxlZCBmb3IgaXRlcmF0aW9uICcgKyBzLml0ZXJhdGlvbnNbdGhpcy5tX2l0ZXJOZHgg
LSAxXSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGVsc2UgdGVzdFBhc3NlZE9wdGlvbnMoJ1Jl
c3VsdCBjb21wYXJpc29uIHN1Y2NlZWRlZCcsIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVy
biB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5DT05USU5VRTsKKworICAgIH07CisKKyAg
ICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2UucHJvdG90
eXBlLmRyYXcgPSBmdW5jdGlvbihjYWxscywgc2VlZCkgeworICAgICAgICB2YXIgX21pbiA9IGZ1
bmN0aW9uKHgsIHkpIHsgcmV0dXJuIHggPCB5ID8geCA6IHk7IH07CisKKyAgICAgICAgdmFyIHJu
ZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oc2VlZCk7CisgICAgICAgIHZhciBudW1JbnB1dHMgPSAw
OworICAgICAgICB2YXIgbnVtT3V0cHV0cyA9IDA7CisgICAgICAgIHZhciB3aWR0aCA9IGdsLmRy
YXdpbmdCdWZmZXJXaWR0aDsKKyAgICAgICAgdmFyIGhlaWdodCA9IGdsLmRyYXdpbmdCdWZmZXJI
ZWlnaHQ7CisgICAgICAgIHRoaXMubV92aWV3cG9ydFcgPSBfbWluKGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLlZJRVdQT1JUX1dJRFRILCB3aWR0aCk7CisgICAgICAgIHRoaXMubV92aWV3cG9y
dEggPSBfbWluKGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlZJRVdQT1JUX0hFSUdIVCwgaGVp
Z2h0KTsKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0WCA9IHJuZC5nZXRJbnQoMCwgd2lkdGggLSB0
aGlzLm1fdmlld3BvcnRXKTsKKyAgICAgICAgdGhpcy5tX3ZpZXdwb3J0WSA9IHJuZC5nZXRJbnQo
MCwgaGVpZ2h0IC0gdGhpcy5tX3ZpZXdwb3J0SCk7CisgICAgICAgIHRoaXMubV9mcmFtZVdpdGhU
ZiA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UodGhpcy5tX3ZpZXdwb3J0VywgdGhpcy5tX3ZpZXdw
b3J0SCk7IC8vIHRjdTo6U3VyZmFjZQorICAgICAgICB0aGlzLm1fZnJhbWVXaXRob3V0VGYgPSBu
ZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHRoaXMubV92aWV3cG9ydFcsIHRoaXMubV92aWV3cG9ydEgp
OyAvLyB0Y3U6OlN1cmZhY2UKKyAgICAgICAgdGhpcy5tX3ByaW1pdGl2ZVF1ZXJ5ID0gZ2wuY3Jl
YXRlUXVlcnkoKTsKKyAgICAgICAgdGhpcy5tX291dHB1dHNPayA9IHRydWU7CisKKyAgICAgICAg
Ly8gQ29tcHV0ZSB0b3RhbHMuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjYWxsID0gY2FsbHNbaV07CisgICAgICAgICAg
ICBudW1JbnB1dHMgKz0gY2FsbC5udW1FbGVtZW50czsKKyAgICAgICAgICAgIG51bU91dHB1dHMg
Kz0gY2FsbC50cmFuc2Zvcm1GZWVkYmFja0VuYWJsZWQgPyBlczNmVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0cy5nZXRUcmFuc2Zvcm1GZWVkYmFja091dHB1dENvdW50KHRoaXMubV9wcmltaXRpdmVUeXBl
LCBjYWxsLm51bUVsZW1lbnRzKSA6IDA7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbnB1dCBk
YXRhLgorICAgICAgICB2YXIgaW5wdXREYXRhID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
Z2VuSW5wdXREYXRhKHRoaXMubV9hdHRyaWJ1dGVzLCBudW1JbnB1dHMsIHRoaXMubV9pbnB1dFN0
cmlkZSwgcm5kKTsKKworICAgICAgICBnbC5iaW5kVHJhbnNmb3JtRmVlZGJhY2soZ2wuVFJBTlNG
T1JNX0ZFRURCQUNLLCB0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2spOworCisgICAgICAgIC8vIEFs
bG9jYXRlIHN0b3JhZ2UgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBvdXRwdXQgYnVmZmVycyBhbmQg
YmluZCB0byB0YXJnZXRzLgorICAgICAgICBmb3IgKHZhciBidWZOZHggPSAwOyBidWZOZHggPCB0
aGlzLm1fb3V0cHV0QnVmZmVycy5sZW5ndGg7ICsrYnVmTmR4KSB7CisgICAgICAgICAgICB2YXIg
YnVmZmVyID0gdGhpcy5tX291dHB1dEJ1ZmZlcnNbYnVmTmR4XTsgLy8gZGVVaW50MzIKKyAgICAg
ICAgICAgIHZhciBzdHJpZGUgPSB0aGlzLm1fYnVmZmVyU3RyaWRlc1tidWZOZHhdOyAvLyBpbnQK
KyAgICAgICAgICAgIHZhciB0YXJnZXQgPSBidWZOZHg7IC8vIGludAorICAgICAgICAgICAgdmFy
IHNpemUgPSBzdHJpZGUgKiBudW1PdXRwdXRzOyAvLyBpbnQKKyAgICAgICAgICAgIHZhciBndWFy
ZFNpemUgPSBzdHJpZGUgKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5CVUZGRVJfR1VBUkRf
TVVMVElQTElFUjsgLy8gaW50CisgICAgICAgICAgICB2YXIgdXNhZ2UgPSBnbC5EWU5BTUlDX1JF
QUQ7IC8vIGNvbnN0IGRlVWludDMyCisKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVyKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgc2l6ZSArIGd1YXJkU2l6ZSwgdXNhZ2Up
OworICAgICAgICAgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMud3JpdGVCdWZmZXJHdWFy
ZChnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzaXplLCBndWFyZFNpemUpOworCisgICAg
ICAgICAgICAvLyBcdG9kbyBbMjAxMi0wNy0zMCBweXJ5XSBnbEJpbmRCdWZmZXJSYW5nZSgpPwor
ICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgdGFyZ2V0LCBidWZmZXIpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGF0dHJpYkJ1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgYXR0cmliQnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIGlucHV0RGF0YSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgIC8vIFNldHVwIGF0dHJp
YnV0ZXMuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX2F0dHJpYnV0ZXMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBhdHRyaWIgPSB0aGlzLm1fYXR0cmlidXRlc1tp
XTsKKyAgICAgICAgICAgIHZhciBsb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1fcHJv
Z3JhbS5nZXRQcm9ncmFtKCksIGF0dHJpYi5uYW1lKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLworICAgICAgICAgICAgdmFyIHNjYWxhclR5cGUgPSBnbHVTaGFkZXJVdGlsLmdl
dERhdGFUeXBlU2NhbGFyVHlwZShhdHRyaWIudHlwZS5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgICAgIHZhciBudW1Db21wb25lbnRz
ID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUoYXR0cmliLnR5cGUuZ2V0QmFz
aWNUeXBlKCkpOworCisgICAgICAgICAgICBpZiAobG9jID49IDApIHsKKyAgICAgICAgICAgICAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2MpOworICAgICAgICAgICAgICAgIHN3aXRj
aCAoc2NhbGFyVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlICdmbG9hdCc6CisgICAg
ICAgICAgICAgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGxvYywgbnVtQ29tcG9u
ZW50cywgZ2wuRkxPQVQsIGZhbHNlLCB0aGlzLm1faW5wdXRTdHJpZGUsIGF0dHJpYi5vZmZzZXQp
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW50JzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdsLnZlcnRleEF0dHJpYklQb2ludGVyKGxvYywgbnVtQ29tcG9uZW50cywgZ2wu
SU5ULCB0aGlzLm1faW5wdXRTdHJpZGUsIGF0dHJpYi5vZmZzZXQpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAndWludCc6CisgICAgICAgICAgICAgICAgICAgICAgICBnbC52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihsb2MsIG51bUNvbXBvbmVudHMsIGdsLlVOU0lHTkVEX0lOVCwgdGhp
cy5tX2lucHV0U3RyaWRlLCBhdHRyaWIub2Zmc2V0KTsgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0dXAgdmlld3BvcnQu
CisgICAgICAgIGdsLnZpZXdwb3J0KHRoaXMubV92aWV3cG9ydFgsIHRoaXMubV92aWV3cG9ydFks
IHRoaXMubV92aWV3cG9ydFcsIHRoaXMubV92aWV3cG9ydEgpOworCisgICAgICAgIC8vIFNldHVw
IHByb2dyYW0uCisgICAgICAgIGdsLnVzZVByb2dyYW0odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3Jh
bSgpKTsKKworICAgICAgICBnbC51bmlmb3JtNGZ2KAorICAgICAgICAgICAgZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSwgJ3Vfc2NhbGUnKSwKKyAgICAg
ICAgICAgIFswLjAxLCAwLjAxLCAwLjAxLCAwLjAxXQorICAgICAgICApOworICAgICAgICBnbC51
bmlmb3JtNGZ2KAorICAgICAgICAgICAgZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9n
cmFtLmdldFByb2dyYW0oKSwgJ3VfYmlhcycpLAorICAgICAgICAgICAgWzAuNSwgMC41LCAwLjUs
IDAuNV0KKyAgICAgICAgKTsKKworICAgICAgICAvLyBFbmFibGUgcXVlcnkuCisgICAgICAgIGds
LmJlZ2luUXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgdGhp
cy5tX3ByaW1pdGl2ZVF1ZXJ5KTsKKworICAgICAgICAvLyBEcmF3CisgICAgICAgIHZhciBvZmZz
ZXQgPSAwOworICAgICAgICB2YXIgdGZFbmFibGVkID0gdHJ1ZTsKKworICAgICAgICBnbC5jbGVh
cihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICB2YXIgdGZQcmltaXRpdmVNb2RlID0g
ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZ2V0VHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVN
b2RlKHRoaXMubV9wcmltaXRpdmVUeXBlKTsKKyAgICAgICAgZ2wuYmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayh0ZlByaW1pdGl2ZU1vZGUpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2Fs
bHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjYWxsID0gY2FsbHNbaV07CisKKyAg
ICAgICAgICAgIC8vIFBhdXNlIG9yIHJlc3VtZSB0cmFuc2Zvcm0gZmVlZGJhY2sgaWYgbmVjZXNz
YXJ5LgorICAgICAgICAgICAgaWYgKGNhbGwudHJhbnNmb3JtRmVlZGJhY2tFbmFibGVkICE9IHRm
RW5hYmxlZCkgeworICAgICAgICAgICAgICAgIGlmIChjYWxsLnRyYW5zZm9ybUZlZWRiYWNrRW5h
YmxlZCkKKyAgICAgICAgICAgICAgICAgICAgZ2wucmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdsLnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgICAgICB0ZkVuYWJsZWQgPSBjYWxsLnRyYW5zZm9y
bUZlZWRiYWNrRW5hYmxlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wuZHJhd0Fy
cmF5cyhnbHVEcmF3VXRpbC5nZXRQcmltaXRpdmVHTFR5cGUoZ2wsIHRoaXMubV9wcmltaXRpdmVU
eXBlKSwgb2Zmc2V0LCBjYWxsLm51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIG9mZnNldCArPSBj
YWxsLm51bUVsZW1lbnRzOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVzdW1lIGZlZWRiYWNr
IGJlZm9yZSBmaW5pc2hpbmcgaXQuCisgICAgICAgIGlmICghdGZFbmFibGVkKQorICAgICAgICAg
ICAgZ2wucmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgICAgICBnbC5lbmRUcmFuc2Zv
cm1GZWVkYmFjaygpOworCisgICAgICAgIGdsLmVuZFF1ZXJ5KGdsLlRSQU5TRk9STV9GRUVEQkFD
S19QUklNSVRJVkVTX1dSSVRURU4pOworCisgICAgICAgIC8vIENoZWNrIGFuZCBsb2cgcXVlcnkg
c3RhdHVzIHJpZ2h0IGFmdGVyIHN1Ym1pdAorICAgICAgICB2YXIgcXVlcnkgPSB0aGlzLm1fcHJp
bWl0aXZlUXVlcnk7CisKKyAgICAgICAgdmFyIGF2YWlsYWJsZSA9IGdsLmdldFF1ZXJ5UGFyYW1l
dGVyKHF1ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKTsKKworICAgICAgICBpZiAoYXZh
aWxhYmxlKSB7CisgICAgICAgICAgICB0aGlzLm1fdGVzdFBhc3NlZCA9IGZhbHNlOworICAgICAg
ICAgICAgdGhpcy5tX3N0YXRlID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuU3RhdGUuRklO
SVNIOworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ1RyYW5zZm9ybSBmZWVkYmFjayBx
dWVyeSByZXN1bHQgbXVzdCBub3QgYmUgYXZhaWxhYmxlIHRoZSBzYW1lIGZyYW1lIGFzIHRoZXkg
YXJlIGlzc3VlZC4nLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXBhcmUgcmVz
dWx0IGJ1ZmZlcnMuCisgICAgICAgIGZvciAodmFyIGJ1ZmZlck5keCA9IDA7IGJ1ZmZlck5keCA8
IHRoaXMubV9vdXRwdXRCdWZmZXJzLmxlbmd0aDsgKytidWZmZXJOZHgpIHsKKyAgICAgICAgICAg
IHZhciBzdHJpZGUgPSB0aGlzLm1fYnVmZmVyU3RyaWRlc1tidWZmZXJOZHhdOyAvLyBpbnQKKyAg
ICAgICAgICAgIHZhciBzaXplID0gc3RyaWRlICogbnVtT3V0cHV0czsgLy8gaW50CisgICAgICAg
ICAgICB2YXIgZ3VhcmRTaXplID0gc3RyaWRlICogZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
QlVGRkVSX0dVQVJEX01VTFRJUExJRVI7IC8vIGludAorICAgICAgICAgICAgdmFyIGJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcihzaXplICsgZ3VhcmRTaXplKTsgLy8gY29uc3Qgdm9pZCoKKworICAg
ICAgICAgICAgLy8gQmluZCBidWZmZXIgZm9yIHJlYWRpbmcuCisgICAgICAgICAgICBnbC5iaW5k
QnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHRoaXMubV9vdXRwdXRCdWZmZXJz
W2J1ZmZlck5keF0pOworCisgICAgICAgICAgICBnbC5nZXRCdWZmZXJTdWJEYXRhKGdsLlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG5ldyBVaW50OEFycmF5KGJ1ZmZlcikpOworCisgICAg
ICAgICAgICAvLyBWZXJpZnkgYWxsIG91dHB1dCB2YXJpYWJsZXMgdGhhdCBhcmUgd3JpdHRlbiB0
byB0aGlzIGJ1ZmZlci4KKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX3Ry
YW5zZm9ybUZlZWRiYWNrT3V0cHV0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZh
ciBvdXQgPSB0aGlzLm1fdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRzW2ldOworCisgICAgICAgICAg
ICAgICAgaWYgKG91dC5idWZmZXJOZHggIT0gYnVmZmVyTmR4KQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZhciBpbnB1dE9mZnNldCA9IDA7CisgICAg
ICAgICAgICAgICAgdmFyIG91dHB1dE9mZnNldCA9IDA7CisKKyAgICAgICAgICAgICAgICAvLyBQ
cm9jZXNzIGFsbCBkcmF3IGNhbGxzIGFuZCBjaGVjayBvbmVzIHdpdGggdHJhbnNmb3JtIGZlZWRi
YWNrIGVuYWJsZWQKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjYWxsTmR4ID0gMDsgY2FsbE5k
eCA8IGNhbGxzLmxlbmd0aDsgKytjYWxsTmR4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBj
YWxsID0gY2FsbHNbY2FsbE5keF07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGwudHJh
bnNmb3JtRmVlZGJhY2tFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5w
dXRQdHIgPSBpbnB1dERhdGFbMF0gKyBpbnB1dE9mZnNldCAqIHRoaXMubV9pbnB1dFN0cmlkZTsg
Ly8gY29uc3QgZGVVaW50OCoKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRwdXRQdHIg
PSBvdXRwdXRPZmZzZXQgKiBzdHJpZGU7IC8vIGNvbnN0IGRlVWludDgqCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY29tcGFyZVRyYW5z
Zm9ybUZlZWRiYWNrT3V0cHV0KHRoaXMubV9wcmltaXRpdmVUeXBlLCBvdXQsIGNhbGwubnVtRWxl
bWVudHMsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI6IGlucHV0RGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogaW5wdXRPZmZzZXQgKiB0aGlz
Lm1faW5wdXRTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
ZGU6IHRoaXMubV9pbnB1dFN0cmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBvdXRwdXRPZmZzZXQgKiBzdHJpZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGU6IHN0cmlkZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fb3V0cHV0c09rID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpbnB1
dE9mZnNldCArPSBjYWxsLm51bUVsZW1lbnRzOworICAgICAgICAgICAgICAgICAgICBvdXRwdXRP
ZmZzZXQgKz0gY2FsbC50cmFuc2Zvcm1GZWVkYmFja0VuYWJsZWQgPyBlczNmVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0cy5nZXRUcmFuc2Zvcm1GZWVkYmFja091dHB1dENvdW50KHRoaXMubV9wcmltaXRp
dmVUeXBlLCBjYWxsLm51bUVsZW1lbnRzKSA6IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBWZXJpZnkgZ3VhcmRiYW5kLgorICAgICAgICAgICAg
aWYgKCFlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy52ZXJpZnlHdWFyZChidWZmZXIsIHNpemUp
KSB7CisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Vycm9yOiBUcmFuc2Zv
cm0gZmVlZGJhY2sgYnVmZmVyIG92ZXJydW4gZGV0ZWN0ZWQnKTsKKyAgICAgICAgICAgICAgICB0
aGlzLm1fb3V0cHV0c09rID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
OworCisgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNl
LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbihjYWxscykgeworICAgICAgICAvLyBDaGVjayBz
dGF0dXMgYWZ0ZXIgbWFwcGluZyBidWZmZXJzLgorICAgICAgICB2YXIgbXVzdEJlUmVhZHkgPSB0
aGlzLm1fb3V0cHV0QnVmZmVycy5sZW5ndGggPiAwOyAvLyBNYXBwaW5nIGJ1ZmZlciBmb3JjZXMg
c3luY2hyb25pemF0aW9uLiAvLyBjb25zdCBib29sCisgICAgICAgIHZhciBleHBlY3RlZENvdW50
ID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuY29tcHV0ZVRyYW5zZm9ybUZlZWRiYWNrUHJp
bWl0aXZlQ291bnQodGhpcy5tX3ByaW1pdGl2ZVR5cGUsIGNhbGxzKTsgLy8gY29uc3QgaW50Cisg
ICAgICAgIHZhciBhdmFpbGFibGUgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChnbC5nZXRRdWVy
eVBhcmFtZXRlcih0aGlzLm1fcHJpbWl0aXZlUXVlcnksIGdsLlFVRVJZX1JFU1VMVF9BVkFJTEFC
TEUpKTsKKyAgICAgICAgdmFyIHZlcmlmeV9vZmZzZXQgPSAwOworICAgICAgICB2YXIgcXVlcnlP
ayA9IHRydWU7CisgICAgICAgIGlmICghYXZhaWxhYmxlKSB7CisgICAgICAgICAgICBpZiAoIXRo
aXMubV92ZXJpZnlTdGFydCkKKyAgICAgICAgICAgICAgICB0aGlzLm1fdmVyaWZ5U3RhcnQgPSBu
ZXcgRGF0ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJl
bnQgPSBuZXcgRGF0ZSgpOworICAgICAgICAgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IDAuMDAx
ICogKGN1cnJlbnQuZ2V0VGltZSgpIC0gdGhpcy5tX3ZlcmlmeVN0YXJ0LmdldFRpbWUoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsYXBzZWRUaW1lID4gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuTUFYX1ZFUklGWV9XQUlUKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1F1
ZXJ5IHJlc3VsdCBub3QgYXZhaWxhYmxlIGFmdGVyICcgKyBlbGFwc2VkVGltZSArICcgc2Vjb25k
cy4nKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3N0YXRlID0gZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuU3RhdGUuRklOSVNIOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5jcmVhdGVWZXJpZmljYXRpb25SZXN1bHQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVWZXJpZmlj
YXRpb25SZXN1bHQodHJ1ZSwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG51bVBy
aW1pdGl2ZXMgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFF1ZXJ5UGFyYW1ldGVyKHRo
aXMubV9wcmltaXRpdmVRdWVyeSwgZ2wuUVVFUllfUkVTVUxUKSk7CisKKyAgICAgICAgaWYgKCFt
dXN0QmVSZWFkeSAmJiBhdmFpbGFibGUgPT0gZmFsc2UpCisgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnRVJST1I6IGdsLlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRU
RU4gcmVzdWx0IG5vdCBhdmFpbGFibGUgYWZ0ZXIgbWFwcGluZyBidWZmZXJzIScpOworCisgICAg
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZF
U19XUklUVEVOID0gJyArIG51bVByaW1pdGl2ZXMpOworCisgICAgICAgIGlmIChudW1QcmltaXRp
dmVzICE9IGV4cGVjdGVkQ291bnQpIHsKKyAgICAgICAgICAgIHF1ZXJ5T2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogRXhwZWN0ZWQgJyArIGV4cGVj
dGVkQ291bnQgKyAnIHByaW1pdGl2ZXMhJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVh
ciB0cmFuc2Zvcm0gZmVlZGJhY2sgc3RhdGUuCisgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwpOworICAgICAgICBmb3IgKHZhciBidWZO
ZHggPSAwOyBidWZOZHggPCB0aGlzLm1fb3V0cHV0QnVmZmVycy5sZW5ndGg7ICsrYnVmTmR4KSB7
CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIs
IG51bGwpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgYnVmTmR4LCBudWxsKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKworICAgICAgICAvLyBSZWFkIGJhY2sgcmVu
ZGVyZWQgaW1hZ2UuCisgICAgICAgIHRoaXMubV9mcmFtZVdpdGhUZi5yZWFkVmlld3BvcnQoZ2ws
IFt0aGlzLm1fdmlld3BvcnRYLCB0aGlzLm1fdmlld3BvcnRZLCB0aGlzLm1fdmlld3BvcnRXLCB0
aGlzLm1fdmlld3BvcnRIXSk7CisKKyAgICAgICAgLy8gUmVuZGVyIHdpdGhvdXQgdHJhbnNmb3Jt
IGZlZWRiYWNrLgorCisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBjYWxsID0gY2FsbHNbaV07CisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsdURy
YXdVdGlsLmdldFByaW1pdGl2ZUdMVHlwZShnbCwgdGhpcy5tX3ByaW1pdGl2ZVR5cGUpLCB2ZXJp
Znlfb2Zmc2V0LCBjYWxsLm51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIHZlcmlmeV9vZmZzZXQg
Kz0gY2FsbC5udW1FbGVtZW50czsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm1fZnJhbWVXaXRo
b3V0VGYucmVhZFZpZXdwb3J0KGdsLCBbdGhpcy5tX3ZpZXdwb3J0WCwgdGhpcy5tX3ZpZXdwb3J0
WSwgdGhpcy5tX3ZpZXdwb3J0VywgdGhpcy5tX3ZpZXdwb3J0SF0pOworCisgICAgICAgIC8vIENv
bXBhcmUgaW1hZ2VzIHdpdGggYW5kIHdpdGhvdXQgdHJhbnNmb3JtIGZlZWRiYWNrLgorICAgICAg
ICB2YXIgaW1hZ2VzT2sgPSB0Y3VJbWFnZUNvbXBhcmUucGl4ZWxUaHJlc2hvbGRDb21wYXJlKCdS
ZXN1bHQnLCAnSW1hZ2UgY29tcGFyaXNvbiByZXN1bHQnLCB0aGlzLm1fZnJhbWVXaXRob3V0VGYs
IHRoaXMubV9mcmFtZVdpdGhUZiwgWzEsIDEsIDEsIDFdLCB0Y3VJbWFnZUNvbXBhcmUuQ29tcGFy
ZUxvZ01vZGUuT05fRVJST1IpOworCisgICAgICAgIGlmIChpbWFnZXNPaykKKyAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZW5kZXJpbmcgcmVzdWx0IGNvbXBhcmlzb24gYmV0d2Vl
biBURiBlbmFibGVkIGFuZCBURiBkaXNhYmxlZCBwYXNzZWQuJyk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogUmVuZGVyaW5nIHJlc3VsdCBj
b21wYXJpc29uIGJldHdlZW4gVEYgZW5hYmxlZCBhbmQgVEYgZGlzYWJsZWQgZmFpbGVkIScpOwor
CisgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVZlcmlmaWNhdGlvblJlc3VsdChmYWxzZSwgdGhp
cy5tX291dHB1dHNPayAmJiBpbWFnZXNPayAmJiBxdWVyeU9rKTsKKworICAgIH07CisKKyAgICBl
czNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYyA9IGZ1bmN0aW9uKG51bUVsZW1lbnRzLCB0ZkVu
YWJsZWQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5E
cmF3Q2FsbChudW1FbGVtZW50cywgdGZFbmFibGVkKTsKKyAgICB9OworCisgICAgLy8gc3RhdGlj
IGRhdGEKKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nh
c2Uuc19pdGVyYXRlID0geworCisgICAgICAgIHRlc3RDYXNlczogeworICAgICAgICAgICAgZWxl
bUNvdW50MTogW2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDEsIHRydWUpXSwKKyAgICAg
ICAgICAgIGVsZW1Db3VudDI6IFtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYygyLCB0cnVl
KV0sCisgICAgICAgICAgICBlbGVtQ291bnQzOiBbZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
ZGMoMywgdHJ1ZSldLAorICAgICAgICAgICAgZWxlbUNvdW50NDogW2VzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLmRjKDQsIHRydWUpXSwKKyAgICAgICAgICAgIGVsZW1Db3VudDEyMzogW2VzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDEyMywgdHJ1ZSldLAorICAgICAgICAgICAgYmFzaWNQ
YXVzZTE6IFtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYyg2NCwgdHJ1ZSksIGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDY0LCBmYWxzZSksIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzLmRjKDY0LCB0cnVlKV0sCisgICAgICAgICAgICBiYXNpY1BhdXNlMjogW2VzM2ZUcmFuc2Zv
cm1GZWVkYmFja1Rlc3RzLmRjKDEzLCB0cnVlKSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
ZGMoNSwgdHJ1ZSksIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDE3LCBmYWxzZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYygz
LCB0cnVlKSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZGMoNywgZmFsc2UpXSwKKyAgICAg
ICAgICAgIHN0YXJ0UGF1c2VkOiBbZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZGMoMTIzLCBm
YWxzZSksIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDEyMywgdHJ1ZSldLAorICAgICAg
ICAgICAgcmFuZG9tMTogW2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDY1LCB0cnVlKSwg
ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuZGMoMTM1LCBmYWxzZSksIGVzM2ZUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RzLmRjKDc0LCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVz
M2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDE2LCBmYWxzZSksIGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLmRjKDIyNiwgZmFsc2UpLCBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYyg5
LCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFj
a1Rlc3RzLmRjKDE3NCwgZmFsc2UpXSwKKyAgICAgICAgICAgIHJhbmRvbTI6IFtlczNmVHJhbnNm
b3JtRmVlZGJhY2tUZXN0cy5kYygyMTcsIHRydWUpLCBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5kYygxNzEsIHRydWUpLCBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5kYygxNDcsIHRydWUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
ZGMoMTUyLCBmYWxzZSksIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmRjKDU1LCB0cnVlKV0K
KyAgICAgICAgfSwKKyAgICAgICAgaXRlcmF0aW9uczogWworICAgICAgICAgICAgJ2VsZW1Db3Vu
dDEnLCAnZWxlbUNvdW50MicsICdlbGVtQ291bnQzJywgJ2VsZW1Db3VudDQnLCAnZWxlbUNvdW50
MTIzJywKKyAgICAgICAgICAgICdiYXNpY1BhdXNlMScsICdiYXNpY1BhdXNlMicsICdzdGFydFBh
dXNlZCcsCisgICAgICAgICAgICAncmFuZG9tMScsICdyYW5kb20yJworICAgICAgICBdCisgICAg
fTsKKworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmhhc0FycmF5c0luVEZWYXJ5aW5n
cyA9IGZ1bmN0aW9uKHNwZWMpIHsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwZWMu
Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygpLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgdGZWYXIgPSBzcGVjLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKVtpXTsKKyAg
ICAgICAgICAgIHZhciB2YXJOYW1lID0gZ2x1VmFyVHlwZVV0aWwucGFyc2VWYXJpYWJsZU5hbWUo
dGZWYXIpOworCisgICAgICAgIHZhciBhdHRyID0gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
ZmluZEF0dHJpYnV0ZU5hbWVFcXVhbHMoc3BlYy5nZXRWYXJ5aW5ncygpLCB2YXJOYW1lKTsKKyAg
ICAgICAgaWYgKGF0dHIgJiYgYXR0ci50eXBlLmlzQXJyYXlUeXBlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
fTsKKworICAgIC8qKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5Qb3NpdGlvbkNhc2UKKyAg
ICAgKiBAZXh0ZW5kcyB7ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJh
Y2tDYXNlfQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGRlc2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVyTW9kZQorICAgICAqIEBwYXJh
bSB7Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZX0gcHJpbWl0aXZlVHlwZSBHTGVudW0gdGhhdCBz
cGVjaWZpZXMgd2hhdCBraW5kIG9mIHByaW1pdGl2ZSBpcworICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlBvc2l0aW9uQ2FzZSA9IGZ1
bmN0aW9uKG5hbWUsIGRlc2MsIGJ1ZmZlck1vZGUsIHByaW1pdGl2ZVR5cGUpIHsKKyAgICAgICAg
ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tDYXNlLmNhbGwodGhp
cywgbmFtZSwgZGVzYywgYnVmZmVyTW9kZSwgcHJpbWl0aXZlVHlwZSk7CisgICAgICAgIHRoaXMu
bV9wcm9nU3BlYy5hZGRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoJ2dsX1Bvc2l0aW9uJyk7Cisg
ICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlBv
c2l0aW9uQ2FzZSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVlZGJhY2tD
YXNlKTsKKworICAgIC8qKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5Qb2ludFNpemVDYXNl
CisgICAgICogQGV4dGVuZHMge2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZl
ZWRiYWNrQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlck1vZGUKKyAgICAgKiBA
cGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUgR0xlbnVtIHRo
YXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5Qb2ludFNpemVDYXNl
ID0gZnVuY3Rpb24obmFtZSwgZGVzYywgYnVmZmVyTW9kZSwgcHJpbWl0aXZlVHlwZSkgeworICAg
ICAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2UuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjLCBidWZmZXJNb2RlLCBwcmltaXRpdmVUeXBlKTsKKyAgICAgICAg
dGhpcy5tX3Byb2dTcGVjLmFkZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZygnZ2xfUG9pbnRTaXpl
Jyk7CisKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMuUG9pbnRTaXplQ2FzZSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3Jt
RmVlZGJhY2tDYXNlKTsKKworICAgIC8qKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5CYXNp
Y1R5cGVDYXNlCisgICAgICogQGV4dGVuZHMge2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlRy
YW5zZm9ybUZlZWRiYWNrQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlck1vZGUK
KyAgICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5cGUg
R0xlbnVtIHRoYXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAgKiBA
cGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge2dsdVNo
YWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb24KKyAgICAgKiBAcGFyYW0ge2VzM2ZUcmFuc2Zv
cm1GZWVkYmFja1Rlc3RzLmludGVycG9sYXRpb259IGludGVycG9sYXRpb24gZW51bSBudW1iZXIg
aW4gdGhpcyBqYXZhc2NyaXB0CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuQmFzaWNUeXBlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRl
c2MsIGJ1ZmZlck1vZGUsIHByaW1pdGl2ZVR5cGUsIHR5cGUsIHByZWNpc2lvbiwgaW50ZXJwb2xh
dGlvbikgeworICAgICAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVk
YmFja0Nhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBidWZmZXJNb2RlLCBwcmltaXRpdmVUeXBl
KTsKKworICAgICAgICB0aGlzLm1fcHJvZ1NwZWMuYWRkVmFyeWluZygndl92YXJBJywgZ2x1VmFy
VHlwZS5uZXdUeXBlQmFzaWModHlwZSwgcHJlY2lzaW9uKSwgaW50ZXJwb2xhdGlvbik7CisgICAg
ICAgIHRoaXMubV9wcm9nU3BlYy5hZGRWYXJ5aW5nKCd2X3ZhckInLCBnbHVWYXJUeXBlLm5ld1R5
cGVCYXNpYyh0eXBlLCBwcmVjaXNpb24pLCBpbnRlcnBvbGF0aW9uKTsKKworICAgICAgICB0aGlz
Lm1fcHJvZ1NwZWMuYWRkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCd2X3ZhckEnKTsKKyAgICAg
ICAgdGhpcy5tX3Byb2dTcGVjLmFkZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZygndl92YXJCJyk7
CisKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuQmFzaWNUeXBlQ2FzZSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJhbnNmb3JtRmVl
ZGJhY2tDYXNlKTsKKworICAgIC8qKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5CYXNpY0Fy
cmF5Q2FzZQorICAgICAqIEBleHRlbmRzIHtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFu
c2Zvcm1GZWVkYmFja0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXJNb2RlCisg
ICAgICogQHBhcmFtIHtnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlfSBwcmltaXRpdmVUeXBlIEdM
ZW51bSB0aGF0IHNwZWNpZmllcyB3aGF0IGtpbmQgb2YgcHJpbWl0aXZlIGlzCisgICAgICogQHBh
cmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFk
ZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICogQHBhcmFtIHtlczNmVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9ufSBpbnRlcnBvbGF0aW9uIGVudW0gbnVtYmVyIGlu
IHRoaXMgamF2YXNjcmlwdAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGVzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkJhc2ljQXJyYXlDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
YywgYnVmZmVyTW9kZSwgcHJpbWl0aXZlVHlwZSwgdHlwZSwgcHJlY2lzaW9uLCBpbnRlcnBvbGF0
aW9uKSB7CisgICAgICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZlZWRi
YWNrQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIGJ1ZmZlck1vZGUsIHByaW1pdGl2ZVR5cGUp
OworCisgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodHlwZSkgfHwg
dGhpcy5tX2J1ZmZlck1vZGUgPT09IGdsLlNFUEFSQVRFX0FUVFJJQlMpIHsKKyAgICAgICAgICAg
IC8vIG5vdGUgRm9yIG1hdHJpeCB0eXBlcyB3ZSBuZWVkIHRvIHVzZSByZWR1Y2VkIGFycmF5IHNp
emVzIG9yIG90aGVyd2lzZSB3ZSB3aWxsIGV4Y2VlZCBtYXhpbXVtIGF0dHJpYnV0ZSAoMTYpCisg
ICAgICAgICAgICAvLyBvciB0cmFuc2Zvcm0gZmVlZGJhY2sgY29tcG9uZW50IGVzM2ZUcmFuc2Zv
cm1GZWVkYmFja1Rlc3RzLmNvdW50ICg2NCkuCisgICAgICAgICAgICAvLyBPbiBzZXBhcmF0ZSBh
dHRyaWJzIG1vZGUgbWF4aW11bSBjb21wb25lbnQgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
Y291bnQgcGVyIHZhcnlpbmcgaXMgNC4KKyAgICAgICAgICAgIHRoaXMubV9wcm9nU3BlYy5hZGRW
YXJ5aW5nKCd2X3ZhckEnLCBnbHVWYXJUeXBlLm5ld1R5cGVBcnJheShnbHVWYXJUeXBlLm5ld1R5
cGVCYXNpYyh0eXBlLCBwcmVjaXNpb24pLCAxKSwgaW50ZXJwb2xhdGlvbik7CisgICAgICAgICAg
ICB0aGlzLm1fcHJvZ1NwZWMuYWRkVmFyeWluZygndl92YXJCJywgZ2x1VmFyVHlwZS5uZXdUeXBl
QXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZSwgcHJlY2lzaW9uKSwgMiksIGludGVy
cG9sYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5tX3Byb2dTcGVj
LmFkZFZhcnlpbmcoJ3ZfdmFyQScsIGdsdVZhclR5cGUubmV3VHlwZUFycmF5KGdsdVZhclR5cGUu
bmV3VHlwZUJhc2ljKHR5cGUsIHByZWNpc2lvbiksIDMpLCBpbnRlcnBvbGF0aW9uKTsKKyAgICAg
ICAgICAgIHRoaXMubV9wcm9nU3BlYy5hZGRWYXJ5aW5nKCd2X3ZhckInLCBnbHVWYXJUeXBlLm5l
d1R5cGVBcnJheShnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyh0eXBlLCBwcmVjaXNpb24pLCA0KSwg
aW50ZXJwb2xhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm1fcHJvZ1NwZWMuYWRk
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCd2X3ZhckEnKTsKKyAgICAgICAgdGhpcy5tX3Byb2dT
cGVjLmFkZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZygndl92YXJCJyk7CisKKyAgICB9OworCisg
ICAgc2V0UGFyZW50Q2xhc3MoZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuQmFzaWNBcnJheUNh
c2UsIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZSk7CisK
KyAgICAvKiogZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuQXJyYXlFbGVtZW50Q2FzZQorICAg
ICAqIEBleHRlbmRzIHtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVkYmFj
a0Nhc2V9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBidWZmZXJNb2RlCisgICAgICogQHBhcmFt
IHtnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlfSBwcmltaXRpdmVUeXBlIEdMZW51bSB0aGF0IHNw
ZWNpZmllcyB3aGF0IGtpbmQgb2YgcHJpbWl0aXZlIGlzCisgICAgICogQHBhcmFtIHtnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbn0gcHJlY2lzaW9uCisgICAgICogQHBhcmFtIHtlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5pbnRlcnBvbGF0aW9ufSBpbnRlcnBvbGF0aW9uIGVudW0gbnVtYmVyIGluIHRoaXMgamF2YXNj
cmlwdAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLkFycmF5RWxlbWVudENhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjLCBidWZmZXJN
b2RlLCBwcmltaXRpdmVUeXBlLCB0eXBlLCBwcmVjaXNpb24sIGludGVycG9sYXRpb24pIHsKKwor
ICAgICAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5UcmFuc2Zvcm1GZWVkYmFja0Nhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBidWZmZXJNb2RlLCBwcmltaXRpdmVUeXBlKTsKKworICAg
ICAgICB0aGlzLm1fcHJvZ1NwZWMuYWRkVmFyeWluZygndl92YXJBJywgZ2x1VmFyVHlwZS5uZXdU
eXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZSwgcHJlY2lzaW9uKSwgMyksIGlu
dGVycG9sYXRpb24pOworICAgICAgICB0aGlzLm1fcHJvZ1NwZWMuYWRkVmFyeWluZygndl92YXJC
JywgZ2x1VmFyVHlwZS5uZXdUeXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZSwg
cHJlY2lzaW9uKSwgNCksIGludGVycG9sYXRpb24pOworCisgICAgICAgIHRoaXMubV9wcm9nU3Bl
Yy5hZGRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoJ3ZfdmFyQVsxXScpOworICAgICAgICB0aGlz
Lm1fcHJvZ1NwZWMuYWRkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCd2X3ZhckJbMF0nKTsKKyAg
ICAgICAgdGhpcy5tX3Byb2dTcGVjLmFkZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZygndl92YXJC
WzNdJyk7CisKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZXMzZlRyYW5zZm9ybUZlZWRi
YWNrVGVzdHMuQXJyYXlFbGVtZW50Q2FzZSwgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuVHJh
bnNmb3JtRmVlZGJhY2tDYXNlKTsKKworICAgIC8qKiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5SYW5kb21DYXNlCisgICAgICogQGV4dGVuZHMge2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3Rz
LlRyYW5zZm9ybUZlZWRiYWNrQ2FzZX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZlck1v
ZGUKKyAgICAgKiBAcGFyYW0ge2dsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGV9IHByaW1pdGl2ZVR5
cGUgR0xlbnVtIHRoYXQgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBwcmltaXRpdmUgaXMKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAg
IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlJhbmRvbUNhc2UgPSBmdW5jdGlvbihuYW1lLCBk
ZXNjLCBidWZmZXJNb2RlLCBwcmltaXRpdmVUeXBlLCBzZWVkKSB7CisgICAgICAgIGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5jYWxsKHRoaXMsIG5hbWUs
IGRlc2MsIGJ1ZmZlck1vZGUsIHByaW1pdGl2ZVR5cGUpOworCisgICAgfTsKKworICAgIHNldFBh
cmVudENsYXNzKGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlJhbmRvbUNhc2UsIGVzM2ZUcmFu
c2Zvcm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZSk7CisKKyAgICBlczNmVHJh
bnNmb3JtRmVlZGJhY2tUZXN0cy5SYW5kb21DYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24o
KSB7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAgIHZhciBzZWVkID0g
LypkZVN0cmluZy5kZVN0cmluZ0hhc2goZ2V0TmFtZSgpKSBeICovIGRlTWF0aC5kZU1hdGhIYXNo
KHRoaXMubV9pdGVyTmR4KTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsdVNoYWRlclV0
aWwuRGF0YVR5cGU+fSAqLworICAgICAgICB2YXIgdHlwZUNhbmRpZGF0ZXMgPSBbCisgICAgICAg
ICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULAorICAgICAgICAgICAgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5GTE9BVF9WRUMzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQsCisgICAgICAg
ICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLAorICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UX1ZFQzQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQs
CisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMiwKKyAgICAgICAg
ICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzLAorICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQsCisKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
RkxPQVRfTUFUMlgzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQyWDQsCisKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gy
LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzLAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQzWDQsCisKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgyLAorICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDMsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDQKKyAgICAgICAgXTsKKworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PGdsdVNoYWRlclV0aWwucHJlY2lzaW9uPn0gKi8KKyAgICAgICAgdmFyIHByZWNpc2lvbnMg
PSBbCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTE9XUCwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QLAor
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQCisgICAg
ICAgIF07CisKKyAgICAgICAgdmFyIGludGVycE1vZGVzID0gW3tuYW1lOiAnc21vb3RoJywgaW50
ZXJwOiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLlNNT09USH0sIHtu
YW1lOiAnZmxhdCcsIGludGVycDogZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuaW50ZXJwb2xh
dGlvbi5GTEFUfSwge25hbWU6ICdjZW50cm9pZCcsIGludGVycDogZXMzZlRyYW5zZm9ybUZlZWRi
YWNrVGVzdHMuaW50ZXJwb2xhdGlvbi5DRU5UUk9JRH0KKyAgICAgICAgXTsKKworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEF0dHJpYnV0ZVZlY3RvcnMgPSAxNjsKKyAgICAg
ICAvLyoqIEB0eXBlIHtudW1iZXJ9ICovICB2YXIgbWF4VHJhbnNmb3JtRmVlZGJhY2tDb21wb25l
bnRzID0gNjQ7IC8vIG5vdGUgSXQgaXMgZW5vdWdoIHRvIGxpbWl0IGF0dHJpYnV0ZSBzZXQgc2l6
ZS4KKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNTZXBhcmF0ZU1vZGUgPSAo
dGhpcy5tX2J1ZmZlck1vZGUgPT09IGdsLlNFUEFSQVRFX0FUVFJJQlMpOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heFRyYW5zZm9ybUZlZWRiYWNrVmFycyA9IGlzU2VwYXJh
dGVNb2RlID8gNCA6IG1heEF0dHJpYnV0ZVZlY3RvcnM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgYXJyYXlXZWlnaHQgPSAwLjM7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgcG9zaXRpb25XZWlnaHQgPSAwLjc7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgcG9pbnRTaXplV2VpZ2h0ID0gMC4xOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIGNhcHR1cmVGdWxsQXJyYXlXZWlnaHQgPSAwLjU7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtkZVJhbmRvbS5SYW5kb219ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oc2VlZCk7CisgICAgICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIHVzZVBvc2l0aW9uID0gcm5kLmdldEZsb2F0KCkgPCBwb3NpdGlvbldl
aWdodDsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdXNlUG9pbnRTaXplID0g
cm5kLmdldEZsb2F0KCkgPCBwb2ludFNpemVXZWlnaHQ7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbnVtQXR0cmliVmVjdG9yc1RvVXNlID0gcm5kLmdldEludCgKKyAgICAgICAg
ICAgIDEsIG1heEF0dHJpYnV0ZVZlY3RvcnMgLSAxLypwb3NpdGlvbiovIC0gKHVzZVBvaW50U2l6
ZSA/IDEgOiAwKQorICAgICAgICApOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtQXR0cmlidXRlVmVjdG9ycyA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdmFyTmR4ID0gMDsKKworICAgICAgICAvLyBHZW5lcmF0ZSB2YXJ5aW5ncy4KKyAgICAg
ICAgd2hpbGUgKG51bUF0dHJpYnV0ZVZlY3RvcnMgPCBudW1BdHRyaWJWZWN0b3JzVG9Vc2UpIHsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgdmFyIG1heFZl
Y3MgPSBpc1NlcGFyYXRlTW9kZSA/IE1hdGgubWluKDIgLyphdCBtb3N0IDIqbWF0MiovLCBudW1B
dHRyaWJWZWN0b3JzVG9Vc2UgLSBudW1BdHRyaWJ1dGVWZWN0b3JzKSA6IG51bUF0dHJpYlZlY3Rv
cnNUb1VzZSAtIG51bUF0dHJpYnV0ZVZlY3RvcnM7CisgICAgICAgICAgICAvKiogQHR5cGUge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9ICovCisgICAgICAgICAgICB2YXIgYmVnaW4gPSB0eXBlQ2Fu
ZGlkYXRlc1swXTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAg
ICAgdmFyIGVuZENhbmRpZGF0ZXMgPSBiZWdpbiArICgKKyAgICAgICAgICAgICAgICBtYXhWZWNz
ID49IDQgPyAyMSA6ICgKKyAgICAgICAgICAgICAgICAgICAgbWF4VmVjcyA+PSAzID8gMTggOiAo
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhWZWNzID49IDIgPyAoaXNTZXBhcmF0ZU1vZGUg
PyAxMyA6IDE1KSA6IDEyCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSAqLworICAgICAgICAgICAgdmFyIGVuZCA9IHR5cGVDYW5kaWRhdGVzW2VuZENhbmRp
ZGF0ZXNdOworCisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
ICovCisgICAgICAgICAgICB2YXIgdHlwZSA9IHJuZC5jaG9vc2UodHlwZUNhbmRpZGF0ZXMpWzBd
OworCisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLwor
ICAgICAgICAgICAgdmFyIHByZWNpc2lvbiA9IHJuZC5jaG9vc2UocHJlY2lzaW9ucylbMF07CisK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuaW50ZXJw
b2xhdGlvbn0gKi8KKyAgICAgICAgICAgIHZhciBpbnRlcnAgPSAodHlwZSA9PT0gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVCkgPworICAgICAgICAgICAgICAgICAgICAgICBybmQuY2hvb3Nl
KGludGVycE1vZGVzKVswXS5pbnRlcnAgOgorICAgICAgICAgICAgICAgICAgICAgICBlczNmVHJh
bnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLkZMQVQ7CisKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgdmFyIG51bVZlY3MgPSBnbHVTaGFkZXJV
dGlsLmlzRGF0YVR5cGVNYXRyaXgodHlwZSkgPyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0
cml4TnVtQ29sdW1ucyh0eXBlKSA6IDE7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8KKyAgICAgICAgICAgIHZhciBudW1Db21wcyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVT
Y2FsYXJTaXplKHR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAg
ICAgICAgICB2YXIgbWF4QXJyYXlMZW4gPSBNYXRoLm1heCgxLCBpc1NlcGFyYXRlTW9kZSA/ICg0
IC8gbnVtQ29tcHMpIDogKG1heFZlY3MgLyBudW1WZWNzKSk7CisgICAgICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovCisgICAgICAgICAgICB2YXIgdXNlQXJyYXkgPSBybmQuZ2V0RmxvYXQo
KSA8IGFycmF5V2VpZ2h0OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAg
ICAgICAgICB2YXIgYXJyYXlMZW4gPSB1c2VBcnJheSA/IHJuZC5nZXRJbnQoMSwgbWF4QXJyYXlM
ZW4pIDogMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLworICAgICAgICAgICAg
dmFyIG5hbWUgPSAndl92YXInICsgdmFyTmR4OworCisgICAgICAgICAgICBpZiAodXNlQXJyYXkp
CisgICAgICAgICAgICAgICAgdGhpcy5tX3Byb2dTcGVjLmFkZFZhcnlpbmcobmFtZSwgZ2x1VmFy
VHlwZS5uZXdUeXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZSwgcHJlY2lzaW9u
KSwgYXJyYXlMZW4pLCBpbnRlcnApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRoaXMubV9wcm9nU3BlYy5hZGRWYXJ5aW5nKG5hbWUsIGdsdVZhclR5cGUubmV3VHlwZUJhc2lj
KHR5cGUsIHByZWNpc2lvbiksIGludGVycCk7CisKKyAgICAgICAgICAgIG51bUF0dHJpYnV0ZVZl
Y3RvcnMgKz0gYXJyYXlMZW4gKiBudW1WZWNzOworICAgICAgICAgICAgdmFyTmR4ICs9IDE7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBHZW5lcmF0ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgY2FuZGlk
YXRlIHNldC4KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdGZDYW5k
aWRhdGVzID0gW107CisKKyAgICAgICAgaWYgKHVzZVBvc2l0aW9uKSB0ZkNhbmRpZGF0ZXMucHVz
aCgnZ2xfUG9zaXRpb24nKTsKKyAgICAgICAgaWYgKHVzZVBvaW50U2l6ZSkgdGZDYW5kaWRhdGVz
LnB1c2goJ2dsX1BvaW50U2l6ZScpOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8
IHZhck5keDsgbmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlRyYW5zZm9ybUZl
ZWRiYWNrVGVzdHMuVmFyeWluZ30gKi8KKyAgICAgICAgICAgIHZhciB2YXJ5aW5nID0gdGhpcy5t
X3Byb2dTcGVjLmdldFZhcnlpbmdzKClbbmR4XTsKKworICAgICAgICAgICAgaWYgKHZhcnlpbmcu
dHlwZS5pc0FycmF5VHlwZSgpKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLworICAgICAgICAgICAgICAgIHZhciBjYXB0dXJlRnVsbCA9IHJuZC5nZXRGbG9hdCgpIDwg
Y2FwdHVyZUZ1bGxBcnJheVdlaWdodDsKKworICAgICAgICAgICAgICAgIGlmIChjYXB0dXJlRnVs
bCkgeworICAgICAgICAgICAgICAgICAgICB0ZkNhbmRpZGF0ZXMucHVzaCh2YXJ5aW5nLm5hbWUp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgICAgICAgICB2YXIgbnVtRWxlbSA9IHZhcnlpbmcu
dHlwZS5nZXRBcnJheVNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZWxlbU5k
eCA9IDA7IGVsZW1OZHggPCBudW1FbGVtOyBlbGVtTmR4KyspCisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZkNhbmRpZGF0ZXMucHVzaCh2YXJ5aW5nLm5hbWUgKyAnWycgKyBlbGVtTmR4ICsgJ10n
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZkNhbmRpZGF0ZXMucHVzaCh2YXJ5aW5nLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gUGljayByYW5kb20gc2VsZWN0aW9uLgorICAgICAgICB2YXIgdGZWYXJ5aW5ncyA9IFtdOwor
ICAgICAgICBybmQuY2hvb3NlKHRmQ2FuZGlkYXRlcywgdGZWYXJ5aW5ncywgTWF0aC5taW4odGZD
YW5kaWRhdGVzLmxlbmd0aCwgbWF4VHJhbnNmb3JtRmVlZGJhY2tWYXJzKSk7CisgICAgICAgIHJu
ZC5zaHVmZmxlKHRmVmFyeWluZ3MpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRmVmFy
eWluZ3MubGVuZ3RoOyBpKyspCisgICAgICAgICAgICB0aGlzLm1fcHJvZ1NwZWMuYWRkVHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKHRmVmFyeWluZ3NbaV0pOworCisgICAgICAgIGVzM2ZUcmFuc2Zv
cm1GZWVkYmFja1Rlc3RzLlRyYW5zZm9ybUZlZWRiYWNrQ2FzZS5wcm90b3R5cGUuaW5pdC5jYWxs
KHRoaXMpOworCisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgdGhlIHRlc3QgaW4g
b3JkZXIgdG8gYmUgZXhlY3V0ZWQKKyAgICAqKi8KKyAgICBlczNmVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0cy5pbml0ID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7dGN1
VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0Y3VUZXN0Q2Fz
ZS5ydW5uZXIudGVzdENhc2VzOworCisgICAgICAgIHZhciBidWZmZXJNb2RlcyA9IFt7bmFtZTog
J3NlcGFyYXRlJywgbW9kZTogZ2wuU0VQQVJBVEVfQVRUUklCU30sIHtuYW1lOiAnaW50ZXJsZWF2
ZWQnLCBtb2RlOiBnbC5JTlRFUkxFQVZFRF9BVFRSSUJTfQorICAgICAgICBdOworCisgICAgICAg
IHZhciBwcmltaXRpdmVUeXBlcyA9IFt7bmFtZTogJ3BvaW50cycsIHR5cGU6IGdsdURyYXdVdGls
LnByaW1pdGl2ZVR5cGUuUE9JTlRTfSwge25hbWU6ICdsaW5lcycsIHR5cGU6IGdsdURyYXdVdGls
LnByaW1pdGl2ZVR5cGUuTElORVN9LCB7bmFtZTogJ3RyaWFuZ2xlcycsIHR5cGU6IGdsdURyYXdV
dGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTfQorICAgICAgICBdOworCisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59ICovCisgICAgICAgIHZhciBiYXNp
Y1R5cGVzID0gWworICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCwKKyAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywKKyAgICAgICAgICAgIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfTUFUMlgzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQy
WDQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYMiwKKyAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMywKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0LAorICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDIsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLkZMT0FUX01BVDRYMywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUNCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5ULAor
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMiwKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMsCisgICAgICAgICAgICBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVF9WRUM0LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5VSU5ULAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzIsCisg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMywKKyAgICAgICAgICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0CisgICAgICAgIF07CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLnByZWNpc2lvbj59ICovCisgICAgICAgIHZh
ciBwcmVjaXNpb25zID0gWworCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5Q
UkVDSVNJT05fTE9XUCwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJ
U0lPTl9NRURJVU1QLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lT
SU9OX0hJR0hQCisKKyAgICAgICAgICAgIC8vIGdsc1VCQy5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9O
X0xPVywKKyAgICAgICAgICAgIC8vIGdsc1VCQy5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElV
TSwKKyAgICAgICAgICAgIC8vIGdsc1VCQy5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX0hJR0gKKyAg
ICAgICAgXTsKKworICAgICAgICB2YXIgaW50ZXJwTW9kZXMgPSBbe25hbWU6ICdzbW9vdGgnLCBp
bnRlcnA6IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmludGVycG9sYXRpb24uU01PT1RIfSwg
e25hbWU6ICdmbGF0JywgaW50ZXJwOiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBv
bGF0aW9uLkZMQVR9LCB7bmFtZTogJ2NlbnRyb2lkJywgaW50ZXJwOiBlczNmVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLkNFTlRST0lEfQorICAgICAgICBdOworCisgICAgICAg
IC8vIC5wb3NpdGlvbgorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAq
LworICAgICAgICB2YXIgcG9zaXRpb25Hcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3Bvc2l0
aW9uJywgJ2dsX1Bvc2l0aW9uIGNhcHR1cmUgdXNpbmcgdHJhbnNmb3JtIGZlZWRiYWNrJyk7Cisg
ICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChwb3NpdGlvbkdyb3VwKTsKKworICAgICAgICBmb3Ig
KHZhciBwcmltaXRpdmVUeXBlID0gMDsgcHJpbWl0aXZlVHlwZSA8IHByaW1pdGl2ZVR5cGVzLmxl
bmd0aDsgcHJpbWl0aXZlVHlwZSsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBidWZmZXJNb2Rl
ID0gMDsgYnVmZmVyTW9kZSA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgYnVmZmVyTW9kZSsrKSB7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisgICAgICAgICAgICAgICAgdmFy
IG5hbWUgPSBwcmltaXRpdmVUeXBlc1twcmltaXRpdmVUeXBlXS5uYW1lICsgJ18nICsgYnVmZmVy
TW9kZXNbYnVmZmVyTW9kZV0ubmFtZTsKKworICAgICAgICAgICAgICAgIHBvc2l0aW9uR3JvdXAu
YWRkQ2hpbGQobmV3IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLlBvc2l0aW9uQ2FzZSgKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJycsCisgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlck1vZGVzW2J1ZmZlck1vZGVdLm1vZGUsCisgICAgICAgICAgICAg
ICAgICAgIHByaW1pdGl2ZVR5cGVzW3ByaW1pdGl2ZVR5cGVdLnR5cGUKKyAgICAgICAgICAgICAg
ICApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5wb2ludF9zaXpl
CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciBwb2ludFNp
emVHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3BvaW50X3NpemUnLCAnZ2xfUG9pbnRTaXpl
IGNhcHR1cmUgdXNpbmcgdHJhbnNmb3JtIGZlZWRiYWNrJyk7CisgICAgICAgIHRlc3RHcm91cC5h
ZGRDaGlsZChwb2ludFNpemVHcm91cCk7CisKKyAgICAgICAgZm9yICh2YXIgcHJpbWl0aXZlVHlw
ZSA9IDA7IHByaW1pdGl2ZVR5cGUgPCBwcmltaXRpdmVUeXBlcy5sZW5ndGg7IHByaW1pdGl2ZVR5
cGUrKykgeworICAgICAgICAgICAgZm9yICh2YXIgYnVmZmVyTW9kZSA9IDA7IGJ1ZmZlck1vZGUg
PCBidWZmZXJNb2Rlcy5sZW5ndGg7IGJ1ZmZlck1vZGUrKykgeworICAgICAgICAgICAgICAgIHZh
ciBuYW1lID0gcHJpbWl0aXZlVHlwZXNbcHJpbWl0aXZlVHlwZV0ubmFtZSArICdfJyArIGJ1ZmZl
ck1vZGVzW2J1ZmZlck1vZGVdLm5hbWU7CisKKyAgICAgICAgICAgICAgICBwb2ludFNpemVHcm91
cC5hZGRDaGlsZChuZXcgZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuUG9pbnRTaXplQ2FzZSgK
KyAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJycsCisgICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlck1vZGVzW2J1ZmZlck1vZGVdLm1vZGUsCisgICAgICAgICAg
ICAgICAgICAgIHByaW1pdGl2ZVR5cGVzW3ByaW1pdGl2ZVR5cGVdLnR5cGUKKyAgICAgICAgICAg
ICAgICApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIC5iYXNpY190
eXBlCisgICAgICAgIGZvciAodmFyIGJ1ZmZlck1vZGVOZHggPSAwOyBidWZmZXJNb2RlTmR4IDwg
YnVmZmVyTW9kZXMubGVuZ3RoOyBidWZmZXJNb2RlTmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgdmFyIGJ1ZmZlck1vZGUgPSBidWZmZXJNb2Rl
c1tidWZmZXJNb2RlTmR4XS5tb2RlOworICAgICAgICAgICAgZm9yICh2YXIgcHJpbWl0aXZlVHlw
ZU5keCA9IDA7IHByaW1pdGl2ZVR5cGVOZHggPCBwcmltaXRpdmVUeXBlcy5sZW5ndGg7IHByaW1p
dGl2ZVR5cGVOZHgrKykgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2Uu
RGVxcFRlc3R9ICovCisgICAgICAgICAgICAgICAgdmFyIHByaW1pdGl2ZUdyb3VwID0gdGN1VGVz
dENhc2UubmV3VGVzdCgKKyAgICAgICAgICAgICAgICAgICAgJ2Jhc2ljX3R5cGVzLicgKyBidWZm
ZXJNb2Rlc1tidWZmZXJNb2RlTmR4XS5uYW1lICsgJy4nICsgcHJpbWl0aXZlVHlwZXNbcHJpbWl0
aXZlVHlwZU5keF0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIHR5cGVzIGluIHRy
YW5zZm9ybSBmZWVkYmFjaycpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LworICAgICAgICAgICAgICAgIHZhciBwcmltaXRpdmVUeXBlID0gcHJpbWl0aXZlVHlwZXNbcHJp
bWl0aXZlVHlwZU5keF0udHlwZTsKKyAgICAgICAgICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQo
cHJpbWl0aXZlR3JvdXApOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZU5keCA9IDA7
IHR5cGVOZHggPCBiYXNpY1R5cGVzLmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8KKyAgICAgICAgICAg
ICAgICAgICAgdmFyIHR5cGUgPSBiYXNpY1R5cGVzW3R5cGVOZHhdOworICAgICAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovCisgICAgICAgICAgICAgICAgICAgIHZhciBpc0Zs
b2F0ID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclR5cGUodHlwZSkgPT0gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBw
cmVjTmR4ID0gMDsgcHJlY05keCA8IHByZWNpc2lvbnMubGVuZ3RoOyBwcmVjTmR4KyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259
ICovCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gcHJlY2lzaW9uc1tw
cmVjTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZ2x1U2hhZGVyVXRp
bC5nZXRQcmVjaXNpb25OYW1lKHByZWNpc2lvbikgKyAnXycgKyBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlTmFtZSh0eXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlR3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkJhc2ljVHlwZUNhc2Uo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGbG9hdCA/IGVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLmludGVycG9sYXRpb24uU01PT1RIIDogZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuaW50ZXJwb2xhdGlvbi5GTEFUCisgICAgICAgICAgICAgICAgICAgICAgICApKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIC5hcnJheQorICAgICAgICBmb3IgKHZhciBidWZmZXJNb2RlTmR4
ID0gMDsgYnVmZmVyTW9kZU5keCA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgYnVmZmVyTW9kZU5keCsr
KSB7CisgICAgICAgICAgICB2YXIgYnVmZmVyTW9kZSA9IGJ1ZmZlck1vZGVzW2J1ZmZlck1vZGVO
ZHhdLm1vZGU7CisgICAgICAgICAgICBmb3IgKHZhciBwcmltaXRpdmVUeXBlTmR4ID0gMDsgcHJp
bWl0aXZlVHlwZU5keCA8IHByaW1pdGl2ZVR5cGVzLmxlbmd0aDsgcHJpbWl0aXZlVHlwZU5keCsr
KSB7CisgICAgICAgICAgICAgICAgdmFyIHByaW1pdGl2ZUdyb3VwID0gdGN1VGVzdENhc2UubmV3
VGVzdCgKKyAgICAgICAgICAgICAgICAgICAgJ2FycmF5LicgKyBidWZmZXJNb2Rlc1tidWZmZXJN
b2RlTmR4XS5uYW1lICsgJy4nICsgcHJpbWl0aXZlVHlwZXNbcHJpbWl0aXZlVHlwZU5keF0ubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgJ0NhcHR1cmluZyB3aG9sZSBhcnJheSBpbiBURicpOwor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICAgICAgICAgIHZh
ciBwcmltaXRpdmVUeXBlID0gcHJpbWl0aXZlVHlwZXNbcHJpbWl0aXZlVHlwZU5keF0udHlwZTsK
KyAgICAgICAgICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQocHJpbWl0aXZlR3JvdXApOworCisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZU5keCA9IDA7IHR5cGVOZHggPCBiYXNpY1R5cGVz
Lmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gYmFz
aWNUeXBlc1t0eXBlTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGlzRmxvYXQgPSBnbHVT
aGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZSh0eXBlKSA9PSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByZWNOZHggPSAw
OyBwcmVjTmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7IHByZWNOZHgrKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHByZWNpc2lvbiA9IHByZWNpc2lvbnNbcHJlY05keF07CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFt
ZShwcmVjaXNpb24pICsgJ18nICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUodHlwZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZUdyb3VwLmFkZENoaWxkKG5ldyBl
czNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5CYXNpY0FycmF5Q2FzZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlck1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbWl0aXZlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpc0Zsb2F0ID8gZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMuaW50ZXJw
b2xhdGlvbi5TTU9PVEggOiBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9u
LkZMQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gLmFycmF5X2VsZW1lbnQKKyAgICAgICAgZm9yICh2YXIgYnVmZmVyTW9kZU5keCA9IDA7IGJ1
ZmZlck1vZGVOZHggPCBidWZmZXJNb2Rlcy5sZW5ndGg7IGJ1ZmZlck1vZGVOZHgrKykgeworICAg
ICAgICAgICAgdmFyIGJ1ZmZlck1vZGUgPSBidWZmZXJNb2Rlc1tidWZmZXJNb2RlTmR4XS5tb2Rl
OworICAgICAgICAgICAgZm9yICh2YXIgcHJpbWl0aXZlVHlwZU5keCA9IDA7IHByaW1pdGl2ZVR5
cGVOZHggPCBwcmltaXRpdmVUeXBlcy5sZW5ndGg7IHByaW1pdGl2ZVR5cGVOZHgrKykgeworICAg
ICAgICAgICAgICAgIHZhciBwcmltaXRpdmVHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoCisg
ICAgICAgICAgICAgICAgICAgICdhcnJheV9lbGVtZW50LicgKyBidWZmZXJNb2Rlc1tidWZmZXJN
b2RlTmR4XS5uYW1lICsgJy4nICsgcHJpbWl0aXZlVHlwZXNbcHJpbWl0aXZlVHlwZU5keF0ubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgJ0NhcHR1cmluZyBzaW5nbGUgYXJyYXkgZWxlbWVudCBp
biBURicpOworICAgICAgICAgICAgICAgIHZhciBwcmltaXRpdmVUeXBlID0gcHJpbWl0aXZlVHlw
ZXNbcHJpbWl0aXZlVHlwZU5keF0udHlwZTsKKyAgICAgICAgICAgICAgICB0ZXN0R3JvdXAuYWRk
Q2hpbGQocHJpbWl0aXZlR3JvdXApOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZU5k
eCA9IDA7IHR5cGVOZHggPCBiYXNpY1R5cGVzLmxlbmd0aDsgdHlwZU5keCsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciB0eXBlID0gYmFzaWNUeXBlc1t0eXBlTmR4XTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGlzRmxvYXQgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlw
ZSh0eXBlKSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOworCisgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIHByZWNOZHggPSAwOyBwcmVjTmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7
IHByZWNOZHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZWNpc2lvbiA9IHBy
ZWNpc2lvbnNbcHJlY05keF07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGds
dVNoYWRlclV0aWwuZ2V0UHJlY2lzaW9uTmFtZShwcmVjaXNpb24pICsgJ18nICsgZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZU5hbWUodHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW1pdGl2ZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5BcnJh
eUVsZW1lbnRDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmxvYXQgPyBlczNm
VHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5pbnRlcnBvbGF0aW9uLlNNT09USCA6IGVzM2ZUcmFuc2Zv
cm1GZWVkYmFja1Rlc3RzLmludGVycG9sYXRpb24uRkxBVAorICAgICAgICAgICAgICAgICAgICAg
ICAgKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAuaW50ZXJwb2xhdGlvbgorICAgICAgICBm
b3IgKHZhciBtb2RlTmR4ID0gMDsgbW9kZU5keCA8IGludGVycE1vZGVzLmxlbmd0aDsgbW9kZU5k
eCsrKSB7CisgICAgICAgICAgICB2YXIgaW50ZXJwID0gaW50ZXJwTW9kZXNbbW9kZU5keF0uaW50
ZXJwOworICAgICAgICAgICAgdmFyIG1vZGVHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoCisg
ICAgICAgICAgICAgICAgJ2ludGVycG9sYXRpb24uJyArIGludGVycE1vZGVzW21vZGVOZHhdLm5h
bWUsCisgICAgICAgICAgICAgICAgJ0RpZmZlcmVudCBpbnRlcnBvbGF0aW9uIG1vZGVzIGluIHRy
YW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncycpOworICAgICAgICAgICAgdGVzdEdyb3VwLmFkZENo
aWxkKG1vZGVHcm91cCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByZWNOZHggPSAwOyBwcmVj
TmR4IDwgcHJlY2lzaW9ucy5sZW5ndGg7IHByZWNOZHgrKykgeworICAgICAgICAgICAgICAgIHZh
ciBwcmVjaXNpb24gPSBwcmVjaXNpb25zW3ByZWNOZHhdOworCisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgcHJpbWl0aXZlVHlwZSA9IDA7IHByaW1pdGl2ZVR5cGUgPCBwcmltaXRpdmVUeXBlcy5s
ZW5ndGg7IHByaW1pdGl2ZVR5cGUrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBi
dWZmZXJNb2RlID0gMDsgYnVmZmVyTW9kZSA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgYnVmZmVyTW9k
ZSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUocHJlY2lzaW9u
KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ192ZWM0XycgKyBwcmltaXRpdmVUeXBl
c1twcmltaXRpdmVUeXBlXS5uYW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXycg
KyBidWZmZXJNb2Rlc1tidWZmZXJNb2RlXS5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzLkJhc2ljVHlwZUNhc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWZmZXJNb2Rlc1tidWZmZXJNb2RlXS5tb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVR5cGVzW3ByaW1pdGl2ZVR5cGVdLnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9WRUM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcnAKKyAgICAgICAgICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gLnJhbmRvbQorICAgICAgICBmb3IgKHZhciBidWZmZXJN
b2RlTmR4ID0gMDsgYnVmZmVyTW9kZU5keCA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgYnVmZmVyTW9k
ZU5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8KKyAgICAgICAgICAg
IHZhciBidWZmZXJNb2RlID0gYnVmZmVyTW9kZXNbYnVmZmVyTW9kZU5keF0ubW9kZTsKKyAgICAg
ICAgICAgIGZvciAodmFyIHByaW1pdGl2ZVR5cGVOZHggPSAwOyBwcmltaXRpdmVUeXBlTmR4IDwg
cHJpbWl0aXZlVHlwZXMubGVuZ3RoOyBwcmltaXRpdmVUeXBlTmR4KyspIHsKKyAgICAgICAgICAg
ICAgICB2YXIgcHJpbWl0aXZlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KAorICAgICAgICAg
ICAgICAgICAgICAncmFuZG9tLicgKyBidWZmZXJNb2Rlc1tidWZmZXJNb2RlTmR4XS5uYW1lICsg
Jy4nICsgcHJpbWl0aXZlVHlwZXNbcHJpbWl0aXZlVHlwZU5keF0ubmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgJ1JhbmRvbWl6ZWQgdHJhbnNmb3JtIGZlZWRiYWNrIGNhc2VzJyk7CisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAgICAgICAgICAgdmFyIHByaW1p
dGl2ZVR5cGUgPSBwcmltaXRpdmVUeXBlc1twcmltaXRpdmVUeXBlTmR4XS50eXBlOworICAgICAg
ICAgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChwcmltaXRpdmVHcm91cCk7CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCAxMDsgbmR4KyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgICAgICAgICAgICAgICAgIHZhciBz
ZWVkID0gZGVNYXRoLmRlTWF0aEhhc2goYnVmZmVyTW9kZSkgXiBkZU1hdGguZGVNYXRoSGFzaChw
cmltaXRpdmVUeXBlKSBeIGRlTWF0aC5kZU1hdGhIYXNoKG5keCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbWl0aXZlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzLlJhbmRvbUNhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAobmR4ICsgMSkudG9TdHJp
bmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzZWVkCisgICAgICAgICAgICAgICAgICAgICkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfTsKKworICAg
IC8qKgorICAgICAqIENyZWF0ZSBhbmQgZXhlY3V0ZSB0aGUgdGVzdCBjYXNlcworICAgICAqLwor
ICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQsIHJh
bmdlKSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ3Ry
YW5zZm9ybV9mZWVkYmFjayc7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnVHJhbnNm
b3JtIEZlZWRiYWNrIFRlc3RzJzsKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVu
bmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0gdGVzdE5hbWU7CisgICAgICAgIHN0YXRl
LnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QodGVzdE5hbWUsIHRlc3REZXNjcmlwdGlv
biwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhp
cyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAg
ICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9uKTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmluaXQoKTsKKyAgICAgICAgICAgIGlm
IChyYW5nZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zZXRSYW5nZShyYW5nZSk7CisgICAgICAg
ICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyKSB7
CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOworICAgICAgICAgICAgdGN1
VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisKKyAgICB9OworCit9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVW5pZm9ybUFwaVRlc3RzLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2VzM2ZVbmlmb3JtQXBpVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllNTBmMWZjOTk1YTM5YTNlMjdk
YzJiODE5MzRmNDM2YjA1MjAxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVW5p
Zm9ybUFwaVRlc3RzLmpzCkBAIC0wLDAgKzEsMzIwMyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
KiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENv
cHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICog
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5pZm9y
bUFwaVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3
VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclByb2dyYW0n
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsK
KworICAgIHZhciBlczNmVW5pZm9ybUFwaVRlc3RzID0gZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5p
Zm9ybUFwaVRlc3RzOworICAgIHZhciBnbHVEcmF3VXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
RHJhd1V0aWw7CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNo
YWRlclV0aWw7CisgICAgdmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclByb2dyYW07CisgICAgdmFyIGdsdVRleHR1cmUgPSBmcmFtZXdvcmsub3BlbmdsLmds
dVRleHR1cmU7CisgICAgdmFyIGdsdVZhclR5cGUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5
cGU7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsK
KyAgICB2YXIgdGN1U3VyZmFjZSA9IGZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZTsKKyAgICB2
YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAgICB2YXIgZGVN
YXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOworICAgIHZhciBkZVN0cmluZyA9
IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAgIHZhciBkZVJhbmRvbSA9IGZy
YW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworCisgICAgLyoqIEB0eXBlIHtXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0fSAqLyB2YXIgZ2w7CisKKyAgICAvKiogQHR5cGVkZWYge2Z1bmN0aW9u
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUpOiBib29sZWFufSAqLworICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuZGF0YVR5cGVQcmVkaWNhdGU7CisKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZXMz
ZlVuaWZvcm1BcGlUZXN0cy5NQVhfUkVOREVSX1dJRFRIID0gMzI7CisgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIGVzM2ZVbmlmb3JtQXBpVGVzdHMuTUFYX1JFTkRFUl9IRUlHSFQgPSAzMjsKKyAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gZXMzZlVuaWZvcm1BcGlUZXN0cy5NQVhfTlVNX1NBTVBM
RVJfVU5JRk9STVMgPSAxNjsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZT59ICovIGVzM2ZVbmlmb3JtQXBpVGVzdHMuc190ZXN0RGF0YVR5cGVzID0gWworICAg
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQsCisgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9WRUMyLAorICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywKKyAg
ICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsCisgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQyLAorICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
MlgzLAorICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0LAorICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gyLAorICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUMywKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNCwK
KyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMiwKKyAgICBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMywKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDQsCisKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVCwKKyAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLAorICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5U
X1ZFQzMsCisgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNCwKKworICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVCwKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRf
VkVDMiwKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMywKKyAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDNCwKKworICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
Qk9PTCwKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDMiwKKyAgICBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDMywKKyAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJP
T0xfVkVDNCwKKworICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRCwKKyAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfQ1VCRQorICAgICAgICAvLyBcbm90ZSBXZSBk
b24ndCB0ZXN0IGFsbCBzYW1wbGVyIHR5cGVzIGhlcmUuCisgICAgXTsKKworICAgIC8qKgorICAg
ICAqIFJldHVybnMgYSBzdWJzdHJpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIHRoZSBsYXN0IG9j
Y3VyZW5jZSBvZiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgY2hhcmFjdGVyCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IHN0ciBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHNlYXJjaAorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBjIEEgc2luZ2xlIGNoYXJhY3RlcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLmJlZm9yZUxhc3QgPSBmdW5jdGlvbihz
dHIsIGMpIHsKKyAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxhc3RJbmRleE9m
KGMpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1BcGlUZXN0cy5maWxs
V2l0aENvbG9yCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBh
Y2Nlc3MgLAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29sb3IgQXJyYXkgb2YgZm91
ciBjb2xvciBjb21wb25lbnRzLgorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZmls
bFdpdGhDb2xvciA9IGZ1bmN0aW9uKGFjY2VzcywgY29sb3IpIHsKKyAgICAgICAgZm9yICh2YXIg
eiA9IDA7IHogPCBhY2Nlc3MuZ2V0RGVwdGgoKTsgeisrKQorICAgICAgICBmb3IgKHZhciB5ID0g
MDsgeSA8IGFjY2Vzcy5nZXRIZWlnaHQoKTsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0gMDsg
eCA8IGFjY2Vzcy5nZXRXaWR0aCgpOyB4KyspCisgICAgICAgICAgICBhY2Nlc3Muc2V0UGl4ZWwo
Y29sb3IsIHgsIHksIHopOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRTYW1wbGVyTnVtTG9va3VwRGltZW5zaW9ucyA9
IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8yRDoKKyAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8yRDoKKyAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfMkQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIDI7CisKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1Q
TEVSXzNEOgorICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9TQU1Q
TEVSXzNEOgorICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FN
UExFUl8zRDoKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1QTEVS
XzJEX1NIQURPVzoKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5TQU1Q
TEVSXzJEX0FSUkFZOgorICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLlVJTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5TQU1QTEVSX0NVQkU6CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuSU5UX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsK
KworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfQ1VCRV9T
SEFET1c6CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8y
RF9BUlJBWV9TSEFET1c6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFw
aVRlc3RzLmdldFNhbXBsZXJOdW1Mb29rdXBEaW1lbnNpb25zIC0gSW52YWxpZCB0eXBlJyk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAvKioKKyAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZX0gdHlwZQorICAgICogQHJldHVybiB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0KKyAg
ICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0U2FtcGxlckxvb2t1cFJldHVyblR5cGUg
PSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkQ6CisgICAgICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl9DVUJFOgorICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfMkRfQVJSQVk6CisgICAgICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuU0FNUExFUl8zRDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0OworCisgICAgICAgICAgICBjYXNl
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9TQU1QTEVSXzJEOgorICAgICAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl9DVUJFOgorICAgICAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1NBTVBMRVJfM0Q6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0OworCisg
ICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfMkQ6Cisg
ICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1NBTVBMRVJfQ1VCRToK
KyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExFUl8yRF9B
UlJBWToKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfU0FNUExF
Ul8zRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRf
VkVDNDsKKworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJf
MkRfU0hBRE9XOgorICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBM
RVJfQ1VCRV9TSEFET1c6CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
U0FNUExFUl8yRF9BUlJBWV9TSEFET1c6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVQ7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLmdldFNhbXBsZXJMb29r
dXBSZXR1cm5UeXBlIC0gSW52YWxpZCB0eXBlJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBUIERhdGFUeXBlIHRv
IGNvbXBhcmUgdGhlIHR5cGUuIFVzZWQgdG8gYmUgYSB0ZW1wbGF0ZSBwYXJhbQorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyA9IGZ1bmN0
aW9uKFQsIHQpIHsKKyAgICAgICAgcmV0dXJuIHQgPT0gVDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IE4gUm93IG51bWJlci4gVXNlZCB0byBiZSBhIHRlbXBsYXRl
IHBhcmFtZXRlcgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdAorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5k
YXRhVHlwZUlzTWF0cml4V2l0aE5Sb3dzID0gZnVuY3Rpb24oTiwgdCkgeworICAgICAgICByZXR1
cm4gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHQpICYmIGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKHQpID09IE47CisgICAgfTsKKworICAgLyoqCisgICAgKiBA
cGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdHlwZQorICAgICogQHBhcmFtIHtlczNmVW5pZm9y
bUFwaVRlc3RzLmRhdGFUeXBlUHJlZGljYXRlfSBwcmVkaWNhdGUKKyAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLnR5cGVDb250YWluc01hdGNo
aW5nQmFzaWNUeXBlID0gZnVuY3Rpb24odHlwZSwgcHJlZGljYXRlKSB7CisgICAgICAgIGlmICh0
eXBlLmlzQmFzaWNUeXBlKCkpCisgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlKHR5cGUuZ2V0
QmFzaWNUeXBlKCkpOworICAgICAgICBlbHNlIGlmICh0eXBlLmlzQXJyYXlUeXBlKCkpCisgICAg
ICAgICAgICByZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy50eXBlQ29udGFpbnNNYXRjaGluZ0Jh
c2ljVHlwZSh0eXBlLmdldEVsZW1lbnRUeXBlKCksIHByZWRpY2F0ZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0eXBlLmlzU3RydWN0VHlwZSgpLCAnZXMz
ZlVuaWZvcm1BcGlUZXN0cy50eXBlQ29udGFpbnNNYXRjaGluZ0Jhc2ljVHlwZSAtIG5vdCBhIHN0
cnVjdCB0eXBlJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJU
eXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1Y3RUeXBlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5nZXRTaXplKCk7IGkrKykK
KyAgICAgICAgICAgICAgICBpZiAoZXMzZlVuaWZvcm1BcGlUZXN0cy50eXBlQ29udGFpbnNNYXRj
aGluZ0Jhc2ljVHlwZShzdHJ1Y3RUeXBlLmdldE1lbWJlcihpKS5nZXRUeXBlKCksIHByZWRpY2F0
ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJy
YXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59IGRzdAorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlw
ZS5WYXJUeXBlfSB0eXBlCisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXREaXN0
aW5jdFNhbXBsZXJUeXBlcyA9IGZ1bmN0aW9uKGRzdCwgdHlwZSkgeworICAgICAgICBpZiAodHlw
ZS5pc0Jhc2ljVHlwZSgpKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwu
RGF0YVR5cGV9ICovIHZhciBiYXNpY1R5cGUgPSB0eXBlLmdldEJhc2ljVHlwZSgpOworICAgICAg
ICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIoYmFzaWNUeXBlKSAmJiBk
c3QuaW5kZXhPZihiYXNpY1R5cGUpID09IC0xKQorICAgICAgICAgICAgICAgIGRzdC5wdXNoKGJh
c2ljVHlwZSk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZS5pc0FycmF5VHlwZSgpKQorICAgICAg
ICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXREaXN0aW5jdFNhbXBsZXJUeXBlcyhkc3QsIHR5
cGUuZ2V0RWxlbWVudFR5cGUoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucyh0eXBlLmlzU3RydWN0VHlwZSgpLCAnZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRE
aXN0aW5jdFNhbXBsZXJUeXBlcyAtIG5vdCBhIHN0cnVjdCB0eXBlJywgZmFsc2UsIHRydWUpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1
Y3RUeXBlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3RydWN0VHlwZS5nZXRTaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICBlczNmVW5pZm9y
bUFwaVRlc3RzLmdldERpc3RpbmN0U2FtcGxlclR5cGVzKGRzdCwgc3RydWN0VHlwZS5nZXRNZW1i
ZXIoaSkuZ2V0VHlwZSgpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLmdldE51bVNhbXBsZXJzSW5UeXBlID0g
ZnVuY3Rpb24odHlwZSkgeworICAgICAgICBpZiAodHlwZS5pc0Jhc2ljVHlwZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIodHlwZS5nZXRCYXNp
Y1R5cGUoKSkgPyAxIDogMDsKKyAgICAgICAgZWxzZSBpZiAodHlwZS5pc0FycmF5VHlwZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0TnVtU2FtcGxlcnNJblR5
cGUodHlwZS5nZXRFbGVtZW50VHlwZSgpKSAqIHR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0eXBlLmlzU3RydWN0VHlwZSgp
LCAnZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXROdW1TYW1wbGVyc0luVHlwZSAtIG5vdCBhIHN0cnVj
dCB0eXBlJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBl
LlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1Y3RUeXBlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3VtID0gMDsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5nZXRTaXplKCk7IGkrKykKKyAgICAgICAgICAg
ICAgICBzdW0gKz0gZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXROdW1TYW1wbGVyc0luVHlwZShzdHJ1
Y3RUeXBlLmdldE1lbWJlcihpKS5nZXRUeXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN1bTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKiogQHR5cGVkZWYgeyB7dHlwZTogZ2x1VmFyVHlw
ZS5WYXJUeXBlLCBuZHg6IG51bWJlcn19ICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJU
eXBlV2l0aEluZGV4OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1heERlcHRo
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGN1clN0cnVjdElkeCBPdXQgcGFyYW1ldGVyLCBpbnN0
ZWFkIHJldHVybmluZyBpdCBpbiB0aGUgVmFyVHlwZVdpdGhJbmRleCBzdHJ1Y3R1cmUuCisgICAg
ICogQHBhcmFtIHtBcnJheTxnbHVWYXJUeXBlLlN0cnVjdFR5cGU+fSBzdHJ1Y3RUeXBlc0RzdAor
ICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQKKyAgICAgKiBAcmV0dXJuIHtlczNm
VW5pZm9ybUFwaVRlc3RzLlZhclR5cGVXaXRoSW5kZXh9CisgICAgICovCisgICAgZXMzZlVuaWZv
cm1BcGlUZXN0cy5nZW5lcmF0ZVJhbmRvbVR5cGUgPSBmdW5jdGlvbihtYXhEZXB0aCwgY3VyU3Ry
dWN0SWR4LCBzdHJ1Y3RUeXBlc0RzdCwgcm5kKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIGlzU3RydWN0ID0gbWF4RGVwdGggPiAwICYmIHJuZC5nZXRGbG9hdCgpIDwgMC4y
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0FycmF5ID0gcm5kLmdldEZs
b2F0KCkgPCAwLjM7CisKKyAgICAgICAgaWYgKGlzU3RydWN0KSB7CisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG51bU1lbWJlcnMgPSBybmQuZ2V0SW50KDEsIDUpOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1Y3RU
eXBlID0gZ2x1VmFyVHlwZS5uZXdTdHJ1Y3RUeXBlKCdzdHJ1Y3RUeXBlJyArIGN1clN0cnVjdElk
eCsrKTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1NZW1iZXJzOyBpKysp
IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVHlw
ZVdpdGhJbmRleH0gKi8gdmFyIHR5cGVXaXRoSW5kZXggPSBlczNmVW5pZm9ybUFwaVRlc3RzLmdl
bmVyYXRlUmFuZG9tVHlwZShtYXhEZXB0aCAtIDEsIGN1clN0cnVjdElkeCwgc3RydWN0VHlwZXNE
c3QsIHJuZCk7CisgICAgICAgICAgICAgICAgY3VyU3RydWN0SWR4ID0gdHlwZVdpdGhJbmRleC5u
ZHg7CisgICAgICAgICAgICAgICAgc3RydWN0VHlwZS5hZGRNZW1iZXIoJ20nICsgaSwgdHlwZVdp
dGhJbmRleC50eXBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RydWN0VHlwZXNE
c3QucHVzaChzdHJ1Y3RUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiAoaXNBcnJheSA/IHsKKyAg
ICAgICAgICAgICAgICB0eXBlOiBnbHVWYXJUeXBlLm5ld1R5cGVBcnJheShnbHVWYXJUeXBlLm5l
d1R5cGVTdHJ1Y3Qoc3RydWN0VHlwZSksIHJuZC5nZXRJbnQoMSwgNSkpLAorICAgICAgICAgICAg
ICAgIG5keDogY3VyU3RydWN0SWR4CisgICAgICAgICAgICB9CisgICAgICAgICAgICA6IHsKKyAg
ICAgICAgICAgICAgICB0eXBlOiBnbHVWYXJUeXBlLm5ld1R5cGVTdHJ1Y3Qoc3RydWN0VHlwZSks
CisgICAgICAgICAgICAgICAgbmR4OiBjdXJTdHJ1Y3RJZHgKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlfSAqLyB2YXIgYmFzaWNUeXBlID0gZXMzZlVuaWZvcm1BcGlUZXN0cy5zX3Rlc3REYXRhVHlw
ZXNbcm5kLmdldEludCgwLCBlczNmVW5pZm9ybUFwaVRlc3RzLnNfdGVzdERhdGFUeXBlcy5sZW5n
dGggLSAxKV07CisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9u
fSAqLyB2YXIgcHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKCFnbHVTaGFkZXJVdGlsLmlzRGF0
YVR5cGVCb29sT3JCVmVjKGJhc2ljVHlwZSkpCisgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0g
Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX01FRElVTVA7CisgICAgICAgICAgICBy
ZXR1cm4gKGlzQXJyYXkgPyB7CisgICAgICAgICAgICAgICAgdHlwZTogZ2x1VmFyVHlwZS5uZXdU
eXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMoYmFzaWNUeXBlLCBwcmVjaXNpb24pLCBy
bmQuZ2V0SW50KDEsIDUpKSwKKyAgICAgICAgICAgICAgICBuZHg6IGN1clN0cnVjdElkeAorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgOiB7CisgICAgICAgICAgICAgICAgdHlwZTogZ2x1VmFy
VHlwZS5uZXdUeXBlQmFzaWMoYmFzaWNUeXBlLCBwcmVjaXNpb24pLAorICAgICAgICAgICAgICAg
IG5keDogY3VyU3RydWN0SWR4CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBlczNmVW5pZm9ybUFwaVRlc3RzLlNhbXBsZXJWIHN0cnVjdHVyZQor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuU2Ft
cGxlclYgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5zYW1wbGVyViA9IHsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1bml0OiAwLAorICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLyBmaWxsQ29sb3I6IFtdCisgICAgICAgIH07CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWUgY2xhc3MuIG1heSBj
b250YWluIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAg
ICBlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdGhpcy50eXBlOworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlciB8IGJvb2xlYW4+IHwgZXMzZlVuaWZvcm1BcGlUZXN0cy5T
YW1wbGVyVn0gKi8gdGhpcy52YWwgPSBbXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVu
dW0ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJU
eXBlID0geworICAgICAgICBWRVJURVg6IDAsCisgICAgICAgIEZSQUdNRU5UOiAxLAorICAgICAg
ICBCT1RIOiAyCisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQXBpVGVzdHMu
VW5pZm9ybSBzdHJ1Y3QuCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVfCisgICAgICogQHBh
cmFtIHtnbHVWYXJUeXBlLlZhclR5cGV9IHR5cGVfCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtID0gZnVuY3Rpb24obmFtZV8sIHR5
cGVfKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lXzsK
KyAgICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlZhclR5cGV9ICovIHRoaXMudHlwZSA9IHR5
cGVfOworICAgIH07CisKKyAgICAvLyBBIHNldCBvZiB1bmlmb3JtcywgYWxvbmcgd2l0aCByZWxh
dGVkIHN0cnVjdCB0eXBlcy4KKyAgICAvKioKKyAgICAgKiBjbGFzcyBlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm1Db2xsZWN0aW9uCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAg
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybT59ICovIHRo
aXMubV91bmlmb3JtcyA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsdVZhclR5cGUu
U3RydWN0VHlwZT59ICovIHRoaXMubV9zdHJ1Y3RUeXBlcyA9IFtdOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0TnVtVW5pZm9ybXMgPSBmdW5jdGlv
bigpIHtyZXR1cm4gdGhpcy5tX3VuaWZvcm1zLmxlbmd0aDt9OworCisgICAgLyoqCisgICAgICog
QHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9y
bUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldE51bVN0cnVjdFR5cGVzID0gZnVuY3Rpb24oKSB7cmV0
dXJuIHRoaXMubV9zdHJ1Y3RUeXBlcy5sZW5ndGg7fTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBuZHgKKyAgICAgKiBAcmV0dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm19CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5w
cm90b3R5cGUuZ2V0VW5pZm9ybSA9IGZ1bmN0aW9uKG5keCkge3JldHVybiB0aGlzLm1fdW5pZm9y
bXNbbmR4XTt9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG5keAorICAgICAq
IEByZXR1cm4ge2dsdVZhclR5cGUuU3RydWN0VHlwZX0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9y
bUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLnByb3RvdHlwZS5nZXRTdHJ1Y3RUeXBlID0gZnVu
Y3Rpb24obmR4KSB7cmV0dXJuIHRoaXMubV9zdHJ1Y3RUeXBlc1tuZHhdO307CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybX0gdW5pZm9ybQorICAg
ICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24ucHJvdG90eXBl
LmFkZFVuaWZvcm0gPSBmdW5jdGlvbih1bmlmb3JtKSB7dGhpcy5tX3VuaWZvcm1zLnB1c2godW5p
Zm9ybSk7fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBl
fSB0eXBlCisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlv
bi5wcm90b3R5cGUuYWRkU3RydWN0VHlwZSA9IGZ1bmN0aW9uKHR5cGUpIHt0aGlzLm1fc3RydWN0
VHlwZXMucHVzaCh0eXBlKTt9OworCisgICAgLy8gQWRkIHRoZSBjb250ZW50cyBvZiBtX3VuaWZv
cm1zIGFuZCBtX3N0cnVjdFR5cGVzIHRvIHJlY2VpdmVyLCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0
aGlzIG9uZS4KKyAgICAvLyBcbm90ZSByZWNlaXZlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHN0
cnVjdCB0eXBlcy4KKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMu
VW5pZm9ybUNvbGxlY3Rpb259IHJlY2VpdmVyCisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5wcm90b3R5cGUubW92ZUNvbnRlbnRzID0gZnVuY3Rpb24o
cmVjZWl2ZXIpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1fdW5pZm9ybXMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICByZWNlaXZlci5hZGRVbmlmb3JtKHRoaXMubV91bmlm
b3Jtc1tpXSk7CisgICAgICAgIHRoaXMubV91bmlmb3Jtcy5sZW5ndGggPSAwOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX3N0cnVjdFR5cGVzLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgcmVjZWl2ZXIuYWRkU3RydWN0VHlwZSh0aGlzLm1fc3RydWN0VHlwZXNbaV0pOwor
ICAgICAgICB0aGlzLm1fc3RydWN0VHlwZXMubGVuZ3RoID0gMDsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlUHJlZGljYXRlfSBw
cmVkaWNhdGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVzM2ZVbmlm
b3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24ucHJvdG90eXBlLmNvbnRhaW5zTWF0Y2hpbmdC
YXNpY1R5cGUgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLm1fdW5pZm9ybXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZXMzZlVu
aWZvcm1BcGlUZXN0cy50eXBlQ29udGFpbnNNYXRjaGluZ0Jhc2ljVHlwZSh0aGlzLm1fdW5pZm9y
bXNbaV0udHlwZSwgcHJlZGljYXRlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtB
cnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFw
aVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLnByb3RvdHlwZS5nZXRTYW1wbGVyVHlwZXMgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
Pn0gKi8gdmFyIHNhbXBsZXJUeXBlcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMubV91bmlmb3Jtcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuZ2V0RGlzdGluY3RTYW1wbGVyVHlwZXMoc2FtcGxlclR5cGVzLCB0aGlzLm1fdW5pZm9y
bXNbaV0udHlwZSk7CisgICAgICAgIHJldHVybiBzYW1wbGVyVHlwZXM7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZvcm1B
cGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5wcm90b3R5cGUuY29udGFpbnNTZXZlcmFsU2FtcGxl
clR5cGVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFNhbXBsZXJUeXBl
cygpLmxlbmd0aCA+IDE7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJl
cn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLnBy
b3RvdHlwZS5nZXROdW1TYW1wbGVycyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3VtID0g
MDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1fdW5pZm9ybXMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBzdW0gKz0gZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXROdW1TYW1wbGVy
c0luVHlwZSh0aGlzLm1fdW5pZm9ybXNbaV0udHlwZSk7CisgICAgICAgIHJldHVybiBzdW07Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0g
dHlwZQorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZVN1ZmZpeAorICAgICAqIEByZXR1cm4g
e2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259CisgICAgICovCisgICAgZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5iYXNpYyA9IGZ1bmN0aW9uKHR5cGUs
IG5hbWVTdWZmaXgpIHsKKyAgICAgICAgaWYgKG5hbWVTdWZmaXggPT09IHVuZGVmaW5lZCkgbmFt
ZVN1ZmZpeCA9ICcnOworICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybUNvbGxlY3Rpb259ICovIHZhciByZXMgPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlm
b3JtQ29sbGVjdGlvbigpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lz
aW9ufSAqLyB2YXIgcHJlYzsKKyAgICAgICAgaWYgKCFnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVC
b29sT3JCVmVjKHR5cGUpKQorICAgICAgICAgICAgcHJlYyA9IGdsdVNoYWRlclV0aWwucHJlY2lz
aW9uLlBSRUNJU0lPTl9NRURJVU1QOworICAgICAgICByZXMubV91bmlmb3Jtcy5wdXNoKG5ldyBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm0oJ3VfdmFyJyArIG5hbWVTdWZmaXgsIGdsdVZhclR5
cGUubmV3VHlwZUJhc2ljKHR5cGUsIHByZWMpKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlw
ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZVN1ZmZpeAorICAgICAqIEByZXR1cm4ge2Vz
M2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259CisgICAgICovCisgICAgZXMzZlVu
aWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5iYXNpY0FycmF5ID0gZnVuY3Rpb24odHlw
ZSwgbmFtZVN1ZmZpeCkgeworICAgICAgICBpZiAobmFtZVN1ZmZpeCA9PT0gdW5kZWZpbmVkKSBu
YW1lU3VmZml4ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ29sbGVjdGlvbn0gKi8gdmFyIHJlcyA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1Db2xsZWN0aW9uKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5wcmVj
aXNpb259ICovIHZhciBwcmVjOworICAgICAgICBpZiAoIWdsdVNoYWRlclV0aWwuaXNEYXRhVHlw
ZUJvb2xPckJWZWModHlwZSkpCisgICAgICAgICAgICBwcmVjID0gZ2x1U2hhZGVyVXRpbC5wcmVj
aXNpb24uUFJFQ0lTSU9OX01FRElVTVA7CisgICAgICAgIHJlcy5tX3VuaWZvcm1zLnB1c2gobmV3
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybSgndV92YXInICsgbmFtZVN1ZmZpeCwgZ2x1VmFy
VHlwZS5uZXdUeXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZSwgcHJlYyksIDMp
KSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZTAKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9IHR5cGUxCisgICAgICogQHBhcmFtIHtib29sZWFufSBjb250YWluc0Fy
cmF5cworICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZVN1ZmZpeAorICAgICAqIEByZXR1cm4g
e2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259CisgICAgICovCisgICAgZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5iYXNpY1N0cnVjdCA9IGZ1bmN0aW9u
KHR5cGUwLCB0eXBlMSwgY29udGFpbnNBcnJheXMsIG5hbWVTdWZmaXgpIHsKKyAgICAgICAgaWYg
KG5hbWVTdWZmaXggPT09IHVuZGVmaW5lZCkgbmFtZVN1ZmZpeCA9ICcnOworICAgICAgICAvKiog
QHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259ICovIHZhciByZXMg
PSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbigpOworICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlYzA7CisgICAgICAg
IGlmICghZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyh0eXBlMCkpCisgICAgICAg
ICAgICBwcmVjMCA9IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOwor
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlYzE7
CisgICAgICAgIGlmICghZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyh0eXBlMSkp
CisgICAgICAgICAgICBwcmVjMSA9IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9N
RURJVU1QOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBlfSAqLyB2
YXIgc3RydWN0VHlwZSA9IGdsdVZhclR5cGUubmV3U3RydWN0VHlwZSgnc3RydWN0VHlwZScgKyBu
YW1lU3VmZml4KTsKKyAgICAgICAgc3RydWN0VHlwZS5hZGRNZW1iZXIoJ20wJywgZ2x1VmFyVHlw
ZS5uZXdUeXBlQmFzaWModHlwZTAsIHByZWMwKSk7CisgICAgICAgIHN0cnVjdFR5cGUuYWRkTWVt
YmVyKCdtMScsIGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKHR5cGUxLCBwcmVjMSkpOworICAgICAg
ICBpZiAoY29udGFpbnNBcnJheXMpIHsKKyAgICAgICAgICAgIHN0cnVjdFR5cGUuYWRkTWVtYmVy
KCdtMicsIGdsdVZhclR5cGUubmV3VHlwZUFycmF5KGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKHR5
cGUwLCBwcmVjMCksIDMpKTsKKyAgICAgICAgICAgIHN0cnVjdFR5cGUuYWRkTWVtYmVyKCdtMycs
IGdsdVZhclR5cGUubmV3VHlwZUFycmF5KGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKHR5cGUxLCBw
cmVjMSksIDMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcy5hZGRTdHJ1Y3RUeXBlKHN0cnVj
dFR5cGUpOworICAgICAgICByZXMuYWRkVW5pZm9ybShuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtKCd1X3ZhcicgKyBuYW1lU3VmZml4LCBnbHVWYXJUeXBlLm5ld1R5cGVTdHJ1Y3Qoc3Ry
dWN0VHlwZSkpKTsKKworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUwCisgICAgICogQHBhcmFt
IHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB0eXBlMQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
Y29udGFpbnNBcnJheXMKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWVTdWZmaXgKKyAgICAg
KiBAcmV0dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufQorICAgICAq
LworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24uc3RydWN0SW5BcnJh
eSA9IGZ1bmN0aW9uKHR5cGUwLCB0eXBlMSwgY29udGFpbnNBcnJheXMsIG5hbWVTdWZmaXgpIHsK
KyAgICAgICAgaWYgKG5hbWVTdWZmaXggPT09IHVuZGVmaW5lZCkgbmFtZVN1ZmZpeCA9ICcnOwor
ICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259
ICovIHZhciByZXMgPSBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLmJhc2lj
U3RydWN0KHR5cGUwLCB0eXBlMSwgY29udGFpbnNBcnJheXMsIG5hbWVTdWZmaXgpOworICAgICAg
ICByZXMuZ2V0VW5pZm9ybSgwKS50eXBlID0gZ2x1VmFyVHlwZS5uZXdUeXBlQXJyYXkocmVzLmdl
dFVuaWZvcm0oMCkudHlwZSwgMyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZTAKKyAgICAg
KiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUxCisgICAgICogQHBhcmFtIHtz
dHJpbmc9fSBuYW1lU3VmZml4CisgICAgICogQHJldHVybiB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ29sbGVjdGlvbn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm1Db2xsZWN0aW9uLm5lc3RlZEFycmF5c1N0cnVjdHMgPSBmdW5jdGlvbih0eXBlMCwgdHlwZTEs
IG5hbWVTdWZmaXgpIHsKKyAgICAgICAgaWYgKG5hbWVTdWZmaXggPT09IHVuZGVmaW5lZCkgbmFt
ZVN1ZmZpeCA9ICcnOworICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybUNvbGxlY3Rpb259ICovIHZhciByZXMgPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlm
b3JtQ29sbGVjdGlvbigpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwucHJlY2lz
aW9ufSAqLyB2YXIgcHJlYzA7CisgICAgICAgIGlmICghZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBl
Qm9vbE9yQlZlYyh0eXBlMCkpCisgICAgICAgICAgICBwcmVjMCA9IGdsdVNoYWRlclV0aWwucHJl
Y2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0
aWwucHJlY2lzaW9ufSAqLyB2YXIgcHJlYzE7CisgICAgICAgIGlmICghZ2x1U2hhZGVyVXRpbC5p
c0RhdGFUeXBlQm9vbE9yQlZlYyh0eXBlMSkpCisgICAgICAgICAgICBwcmVjMSA9IGdsdVNoYWRl
clV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOworICAgICAgICAvKiogQHR5cGUge2ds
dVZhclR5cGUuU3RydWN0VHlwZX0gKi8gdmFyIHN0cnVjdFR5cGUgPSBnbHVWYXJUeXBlLm5ld1N0
cnVjdFR5cGUoJ3N0cnVjdFR5cGUnICsgbmFtZVN1ZmZpeCk7CisgICAgICAgIC8qKiBAdHlwZSB7
Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBlfSAqLyB2YXIgc3ViU3RydWN0VHlwZSA9IGdsdVZhclR5cGUu
bmV3U3RydWN0VHlwZSgnc3ViU3RydWN0VHlwZScgKyBuYW1lU3VmZml4KTsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdWJTdWJTdHJ1Y3RUeXBlID0g
Z2x1VmFyVHlwZS5uZXdTdHJ1Y3RUeXBlKCdzdWJTdWJTdHJ1Y3RUeXBlJyArIG5hbWVTdWZmaXgp
OworCisgICAgICAgIHN1YlN1YlN0cnVjdFR5cGUuYWRkTWVtYmVyKCdtc3MwJywgZ2x1VmFyVHlw
ZS5uZXdUeXBlQmFzaWModHlwZTAsIHByZWMwKSk7CisgICAgICAgIHN1YlN1YlN0cnVjdFR5cGUu
YWRkTWVtYmVyKCdtc3MxJywgZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZTEsIHByZWMxKSk7
CisKKyAgICAgICAgc3ViU3RydWN0VHlwZS5hZGRNZW1iZXIoJ21zMCcsIGdsdVZhclR5cGUubmV3
VHlwZUJhc2ljKHR5cGUxLCBwcmVjMSkpOworICAgICAgICBzdWJTdHJ1Y3RUeXBlLmFkZE1lbWJl
cignbXMxJywgZ2x1VmFyVHlwZS5uZXdUeXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlQmFzaWMo
dHlwZTAsIHByZWMwKSwgMikpOworICAgICAgICBzdWJTdHJ1Y3RUeXBlLmFkZE1lbWJlcignbXMy
JywgZ2x1VmFyVHlwZS5uZXdUeXBlQXJyYXkoZ2x1VmFyVHlwZS5uZXdUeXBlU3RydWN0KHN1YlN1
YlN0cnVjdFR5cGUpLCAyKSk7CisKKyAgICAgICAgc3RydWN0VHlwZS5hZGRNZW1iZXIoJ20wJywg
Z2x1VmFyVHlwZS5uZXdUeXBlQmFzaWModHlwZTAsIHByZWMwKSk7CisgICAgICAgIHN0cnVjdFR5
cGUuYWRkTWVtYmVyKCdtMScsIGdsdVZhclR5cGUubmV3VHlwZVN0cnVjdChzdWJTdHJ1Y3RUeXBl
KSk7CisgICAgICAgIHN0cnVjdFR5cGUuYWRkTWVtYmVyKCdtMicsIGdsdVZhclR5cGUubmV3VHlw
ZUJhc2ljKHR5cGUxLCBwcmVjMSkpOworCisgICAgICAgIHJlcy5hZGRTdHJ1Y3RUeXBlKHN1YlN1
YlN0cnVjdFR5cGUpOworICAgICAgICByZXMuYWRkU3RydWN0VHlwZShzdWJTdHJ1Y3RUeXBlKTsK
KyAgICAgICAgcmVzLmFkZFN0cnVjdFR5cGUoc3RydWN0VHlwZSk7CisKKyAgICAgICAgcmVzLmFk
ZFVuaWZvcm0obmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybSgndV92YXInICsgbmFtZVN1
ZmZpeCwgZ2x1VmFyVHlwZS5uZXdUeXBlU3RydWN0KHN0cnVjdFR5cGUpKSk7CisKKyAgICAgICAg
cmV0dXJuIHJlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBu
YW1lU3VmZml4CisgICAgICogQHJldHVybiB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29s
bGVjdGlvbn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0
aW9uLm11bHRpcGxlQmFzaWMgPSBmdW5jdGlvbihuYW1lU3VmZml4KSB7CisgICAgICAgIGlmIChu
YW1lU3VmZml4ID09PSB1bmRlZmluZWQpIG5hbWVTdWZmaXggPSAnJzsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8gdmFyIHR5cGVzID0gW2dsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMs
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDMsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMyXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufSAqLyB2YXIg
cmVzID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24oKTsKKworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259ICovIHZh
ciBzdWIgPSBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLmJhc2ljKHR5cGVz
W2ldLCAnXycgKyBpICsgbmFtZVN1ZmZpeCk7CisgICAgICAgICAgICBzdWIubW92ZUNvbnRlbnRz
KHJlcyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWVTdWZmaXgKKyAgICAgKiBAcmV0dXJuIHtl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufQorICAgICAqLworICAgIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24ubXVsdGlwbGVCYXNpY0FycmF5ID0gZnVu
Y3Rpb24obmFtZVN1ZmZpeCkgeworICAgICAgICBpZiAobmFtZVN1ZmZpeCA9PT0gdW5kZWZpbmVk
KSBuYW1lU3VmZml4ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRp
bC5EYXRhVHlwZT59ICovIHZhciB0eXBlcyA9IFtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FU
LCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkJPT0xfVkVDMl07CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlm
b3JtQ29sbGVjdGlvbn0gKi8gdmFyIHJlcyA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm1Db2xsZWN0aW9uKCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1Db2xsZWN0aW9ufSAqLyB2YXIgc3ViID0gZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3Jt
Q29sbGVjdGlvbi5iYXNpY0FycmF5KHR5cGVzW2ldLCAnXycgKyBpICsgbmFtZVN1ZmZpeCk7Cisg
ICAgICAgICAgICBzdWIubW92ZUNvbnRlbnRzKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG5h
bWVTdWZmaXgKKyAgICAgKiBAcmV0dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xs
ZWN0aW9ufQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rp
b24ubXVsdGlwbGVOZXN0ZWRBcnJheXNTdHJ1Y3RzID0gZnVuY3Rpb24obmFtZVN1ZmZpeCkgewor
ICAgICAgICBpZiAobmFtZVN1ZmZpeCA9PT0gdW5kZWZpbmVkKSBuYW1lU3VmZml4ID0gJyc7Cisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZT59ICovIHZhciB0
eXBlczAgPSBbZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCwgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5JTlQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0XTsKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8gdmFyIHR5cGVzMSA9IFtn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5UX1ZFQzQsIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF07CisgICAgICAgIC8qKiBAdHlw
ZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbn0gKi8gdmFyIHJlcyA9IG5l
dyBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uKCk7CisKKyAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyh0eXBlczAubGVuZ3RoID09IHR5cGVzMS5sZW5ndGgsICdlczNmVW5pZm9y
bUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLm11bHRpcGxlTmVzdGVkQXJyYXlzU3RydWN0cyAt
IGxlbmd0aHMgYXJlIG5vdCB0aGUgc2FtZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHR5cGVzMC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgLyoqIEB0
eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufSAqLyB2YXIgc3ViID0g
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5uZXN0ZWRBcnJheXNTdHJ1Y3Rz
KHR5cGVzMFtpXSwgdHlwZXMxW2ldLCAnXycgKyBpICsgbmFtZVN1ZmZpeCk7CisgICAgICAgICAg
ICBzdWIubW92ZUNvbnRlbnRzKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVz
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAq
IEByZXR1cm4ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259CisgICAgICov
CisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5yYW5kb20gPSBmdW5j
dGlvbihzZWVkKSB7CisgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2YXIg
cm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShzZWVkKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1Vbmlmb3JtcyA9IHJuZC5nZXRJbnQoMSwgNSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RydWN0SWR4ID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufSAqLyB2YXIgcmVzID0gbmV3IGVz
M2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb24oKTsKKworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bVVuaWZvcm1zOyBpKyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8Z2x1VmFyVHlwZS5TdHJ1Y3RUeXBlPn0gKi8gdmFyIHN0cnVjdFR5cGVzID0gW107Cisg
ICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybX0gKi8gdmFy
IHVuaWZvcm0gPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtKCd1X3ZhcicgKyBpLCBu
ZXcgZ2x1VmFyVHlwZS5WYXJUeXBlKCkpOworCisgICAgICAgICAgICAvLyBcbm90ZSBEaXNjYXJk
IHVuaWZvcm1zIHRoYXQgd291bGQgY2F1c2UgbnVtYmVyIG9mIHNhbXBsZXJzIHRvIGV4Y2VlZCBl
czNmVW5pZm9ybUFwaVRlc3RzLk1BWF9OVU1fU0FNUExFUl9VTklGT1JNUy4KKyAgICAgICAgICAg
IGRvIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2Vu
ZXJhdGVSYW5kb21UeXBlKDMsIHN0cnVjdElkeCwgc3RydWN0VHlwZXMsIHJuZCk7CisgICAgICAg
ICAgICAgICAgc3RydWN0SWR4ID0gdGVtcC5uZHg7CisgICAgICAgICAgICAgICAgdW5pZm9ybS50
eXBlID0gdGVtcC50eXBlOworICAgICAgICAgICAgfSB3aGlsZSAocmVzLmdldE51bVNhbXBsZXJz
KCkgKyBlczNmVW5pZm9ybUFwaVRlc3RzLmdldE51bVNhbXBsZXJzSW5UeXBlKHVuaWZvcm0udHlw
ZSkgPiBlczNmVW5pZm9ybUFwaVRlc3RzLk1BWF9OVU1fU0FNUExFUl9VTklGT1JNUyk7CisKKyAg
ICAgICAgICAgIHJlcy5hZGRVbmlmb3JtKHVuaWZvcm0pOworICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBzdHJ1Y3RUeXBlcy5sZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICByZXMu
YWRkU3RydWN0VHlwZShzdHJ1Y3RUeXBlc1tqXSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gcmVzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBp
VGVzdHMuVmFyVmFsdWV9IHNhbXBsZXIKKyAgICAgKiBAcmV0dXJuIHtlczNmVW5pZm9ybUFwaVRl
c3RzLlZhclZhbHVlfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0U2FtcGxl
ckZpbGxWYWx1ZSA9IGZ1bmN0aW9uKHNhbXBsZXIpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKHNhbXBsZXIudHlwZSksICdlczNmVW5p
Zm9ybUFwaVRlc3RzLmdldFNhbXBsZXJGaWxsVmFsdWUgLSBub3QgYSBzYW1wbGVyIHR5cGUnLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZh
clZhbHVlfSAqLyB2YXIgcmVzdWx0ID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWUo
KTsKKyAgICAgICAgcmVzdWx0LnR5cGUgPSBlczNmVW5pZm9ybUFwaVRlc3RzLmdldFNhbXBsZXJM
b29rdXBSZXR1cm5UeXBlKHNhbXBsZXIudHlwZSk7CisKKyAgICAgICAgc3dpdGNoIChyZXN1bHQu
dHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZF
QzQ6CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC52YWxbaV0gPSBzYW1wbGVyLnZhbC5zYW1wbGVyVi5maWxsQ29s
b3JbaV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0OgorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudmFsW2ldID0gc2FtcGxl
ci52YWwuc2FtcGxlclYuZmlsbENvbG9yW2ldOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0OgorICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQudmFsW2ldID0gc2FtcGxlci52YWwuc2FtcGxlclYuZmlsbENvbG9yW2ldOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUOgorICAgICAgICAgICAgICAgIHJlc3VsdC52YWxbMF0gPSBzYW1wbGVyLnZhbC5zYW1w
bGVyVi5maWxsQ29sb3JbMF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlU
ZXN0cy5nZXRTYW1wbGVyRmlsbFZhbHVlIC0gSW52YWxpZCB0eXBlJyk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWV9IHNhbXBsZXIKKyAgICAgKiBAcmV0dXJuIHtl
czNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuZ2V0U2FtcGxlclVuaXRWYWx1ZSA9IGZ1bmN0aW9uKHNhbXBsZXIpIHsKKyAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKHNhbXBsZXIu
dHlwZSksICdlczNmVW5pZm9ybUFwaVRlc3RzLmdldFNhbXBsZXJVbml0VmFsdWUgLSBub3QgYSBz
YW1wbGVyIHR5cGUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5p
Zm9ybUFwaVRlc3RzLlZhclZhbHVlfSAqLyB2YXIgcmVzdWx0ID0gbmV3IGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVmFyVmFsdWUoKTsKKyAgICAgICAgcmVzdWx0LnR5cGUgPSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLklOVDsKKyAgICAgICAgcmVzdWx0LnZhbFswXSA9IHNhbXBsZXIudmFsLnNhbXBsZXJW
LnVuaXQ7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBvcmlnaW5hbAorICAgICAqIEByZXR1
cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5nZXREYXRhVHlwZVRyYW5zcG9zZWRNYXRyaXggPSBmdW5jdGlvbihvcmlnaW5hbCkgewor
ICAgICAgICByZXR1cm4gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeChnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlTWF0cml4TnVtUm93cyhvcmlnaW5hbCksIGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5zKG9yaWdpbmFsKSk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZX0gb3JpZ2luYWwKKyAg
ICAgKiBAcmV0dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfQorICAgICAqLworICAg
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0VHJhbnNwb3NlTWF0cml4ID0gZnVuY3Rpb24ob3JpZ2lu
YWwpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVN
YXRyaXgob3JpZ2luYWwudHlwZSksICdlczNmVW5pZm9ybUFwaVRlc3RzLmdldFRyYW5zcG9zZU1h
dHJpeCAtIG5vdCBhIG1hdHJpeCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHJvd3MgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVt
Um93cyhvcmlnaW5hbC50eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBj
b2xzID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnMob3JpZ2luYWwu
dHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZX0g
Ki8gdmFyIHJlc3VsdCA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlKCk7CisgICAg
ICAgIHJlc3VsdC50eXBlID0gZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXREYXRhVHlwZVRyYW5zcG9z
ZWRNYXRyaXgob3JpZ2luYWwudHlwZSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBy
b3dzOyBpKyspCisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29sczsgaisrKQorICAgICAg
ICAgICAgcmVzdWx0LnZhbFtpICogY29scyArIGpdID0gb3JpZ2luYWwudmFsW2ogKiByb3dzICsg
aV07CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfSB2YWx1ZQorICAgICAqIEByZXR1
cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLnNoYWRlclZhclZh
bHVlU3RyID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBudW1FbGVtcyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHZhbHVl
LnR5cGUpOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHJlc3VsdCA9ICcnOwor
CisgICAgICAgIGlmIChudW1FbGVtcyA+IDEpCisgICAgICAgICAgICByZXN1bHQgKz0gZ2x1U2hh
ZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUodmFsdWUudHlwZSkgKyAnKCc7CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSA+IDAp
CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcsICc7CisKKyAgICAgICAgICAgIGlmIChnbHVT
aGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHZhbHVlLnR5cGUpIHx8IGdsdVNoYWRlclV0
aWwuaXNEYXRhVHlwZU1hdHJpeCh2YWx1ZS50eXBlKSkKKyAgICAgICAgICAgICAgICByZXN1bHQg
Kz0gdmFsdWUudmFsW2ldLnRvRml4ZWQoMik7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWMoKHZhbHVlLnR5cGUpKSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQgKz0gdmFsdWUudmFsW2ldOworICAgICAgICAgICAgZWxzZSBpZiAoZ2x1U2hhZGVy
VXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYygodmFsdWUudHlwZSkpKQorICAgICAgICAgICAgICAg
IHJlc3VsdCArPSB2YWx1ZS52YWxbaV0gKyAndSc7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVT
aGFkZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKCh2YWx1ZS50eXBlKSkpCisgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9IHZhbHVlLnZhbFtpXSA/ICd0cnVlJyA6ICdmYWxzZSc7CisgICAgICAg
ICAgICBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKCh2YWx1ZS50eXBl
KSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuc2hhZGVy
VmFyVmFsdWVTdHIoZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRTYW1wbGVyRmlsbFZhbHVlKHZhbHVl
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdl
czNmVW5pZm9ybUFwaVRlc3RzLnNoYWRlclZhclZhbHVlU3RyIC0gaW52YWxpZCB0eXBlJyk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobnVtRWxlbXMgPiAxKQorICAgICAgICAgICAgcmVzdWx0
ICs9ICcpJzsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWV9IHZhbHVlCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuYXBpVmFy
VmFsdWVTdHIgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG51bUVsZW1zID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodmFs
dWUudHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcmVzdWx0ID0gJyc7
CisKKyAgICAgICAgaWYgKG51bUVsZW1zID4gMSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAnKCc7
CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKSB7CisgICAgICAg
ICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcsICc7CisKKyAgICAg
ICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHZhbHVlLnR5cGUp
IHx8IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh2YWx1ZS50eXBlKSkKKyAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gdmFsdWUudmFsW2ldLnRvRml4ZWQoMik7CisgICAgICAgICAgICBl
bHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWModmFsdWUudHlwZSkgfHwK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVVpbnRPclVWZWModmFsdWUudHlw
ZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhbHVlLnZhbFtpXTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWModmFsdWUudHlwZSkp
CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhbHVlLnZhbFtpXSA/ICd0cnVlJyA6ICdmYWxz
ZSc7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVy
KHZhbHVlLnR5cGUpKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YWx1ZS52YWwuc2FtcGxl
clYudW5pdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuYXBpVmFyVmFsdWVTdHIgLSBJbnZhbGlkIHR5cGUnKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChudW1FbGVtcyA+IDEpCisgICAgICAgICAgICByZXN1
bHQgKz0gJyknOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIC8vIHNh
bXBsZXJVbml0IHVzZWQgaWYgdHlwZSBpcyBhIHNhbXBsZXIgdHlwZS4gXG5vdGUgU2FtcGxlcnMn
IHVuaXQgbnVtYmVycyBhcmUgbm90IHJhbmRvbWl6ZWQuCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5S
YW5kb219IHJuZAorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gc2FtcGxlclVuaXQKKyAgICAgKiBA
cmV0dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfQorICAgICAqLworICAgIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuZ2VuZXJhdGVSYW5kb21WYXJWYWx1ZSA9IGZ1bmN0aW9uKHR5cGUsIHJu
ZCwgc2FtcGxlclVuaXQpIHsKKyAgICAgICAgaWYgKHNhbXBsZXJVbml0ID09PSB1bmRlZmluZWQp
IHNhbXBsZXJVbml0ID0gLTE7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVt
RWxlbXMgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh0eXBlKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfSAqLyB2YXIgcmVzdWx0
ID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWUoKTsKKyAgICAgICAgcmVzdWx0LnR5
cGUgPSB0eXBlOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAoc2Ft
cGxlclVuaXQgPj0gMCkgPT0gKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIodHlwZSkp
LAorICAgICAgICAgICAgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuZ2VuZXJhdGVSYW5kb21WYXJWYWx1
ZSAtIHNhbXBsZXIgdW5pdHMgZG8gbm90IG1hdGNoIHR5cGUnLCBmYWxzZSwgdHJ1ZQorICAgICAg
ICApOworCisgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKHR5
cGUpIHx8IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0eXBlKSkgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQorICAgICAgICAgICAgICAgIHJl
c3VsdC52YWxbaV0gPSBybmQuZ2V0RmxvYXQoLTEwLjAsIDEwLjApOworICAgICAgICB9IGVsc2Ug
aWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUludE9ySVZlYyh0eXBlKSkgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQorICAgICAgICAgICAgICAgIHJl
c3VsdC52YWxbaV0gPSBybmQuZ2V0SW50KC0xMCwgMTApOworICAgICAgICB9IGVsc2UgaWYgKGds
dVNoYWRlclV0aWwuaXNEYXRhVHlwZVVpbnRPclVWZWModHlwZSkpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtRWxlbXM7IGkrKykKKyAgICAgICAgICAgICAgICByZXN1bHQu
dmFsW2ldID0gcm5kLmdldEludCgwLCAxMCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVy
VXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyh0eXBlKSkgeworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdC52YWxbaV0g
PSBybmQuZ2V0Qm9vbCgpOworICAgICAgICB9IGVsc2UgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRh
VHlwZVNhbXBsZXIodHlwZSkpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRp
bC5EYXRhVHlwZX0gKi8gdmFyIHRleFJlc3VsdFR5cGUgPSBlczNmVW5pZm9ybUFwaVRlc3RzLmdl
dFNhbXBsZXJMb29rdXBSZXR1cm5UeXBlKHR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgdGV4UmVzdWx0U2NhbGFyVHlwZSA9IGdsdVNo
YWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBlQXNEYXRhVHlwZSh0ZXhSZXN1bHRUeXBlKTsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdGV4UmVzdWx0TnVtRGltcyA9
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKHRleFJlc3VsdFR5cGUpOworCisg
ICAgICAgICAgICByZXN1bHQudmFsID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuU2FtcGxlclYo
KTsKKyAgICAgICAgICAgIHJlc3VsdC52YWwuc2FtcGxlclYudW5pdCA9IHNhbXBsZXJVbml0Owor
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleFJlc3VsdE51bURpbXM7IGkrKykg
eworICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4UmVzdWx0U2NhbGFyVHlwZSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6IHJlc3VsdC52
YWwuc2FtcGxlclYuZmlsbENvbG9yW2ldID0gcm5kLmdldEZsb2F0KDAuMCwgMS4wKTsgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ6IHJl
c3VsdC52YWwuc2FtcGxlclYuZmlsbENvbG9yW2ldID0gcm5kLmdldEludCgtMTAsIDEwKTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5U
OiByZXN1bHQudmFsLnNhbXBsZXJWLmZpbGxDb2xvcltpXSA9IHJuZC5nZXRJbnQoMCwgMTApOyBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlUZXN0cy5nZW5lcmF0ZVJhbmRvbVZh
clZhbHVlIC0gSW52YWxpZCBzY2FsYXIgdHlwZScpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Vz
M2ZVbmlmb3JtQXBpVGVzdHMuZ2VuZXJhdGVSYW5kb21WYXJWYWx1ZSAtIEludmFsaWQgdHlwZScp
OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge2VzM2ZV
bmlmb3JtQXBpVGVzdHMuVmFyVmFsdWV9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0
cy5nZW5lcmF0ZVplcm9WYXJWYWx1ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBudW1FbGVtcyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVT
Y2FsYXJTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMu
VmFyVmFsdWV9ICovIHZhciByZXN1bHQgPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1
ZSgpOworICAgICAgICByZXN1bHQudHlwZSA9IHR5cGU7CisKKyAgICAgICAgaWYgKGdsdVNoYWRl
clV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWModHlwZSkgfHwgZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlTWF0cml4KHR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUVs
ZW1zOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0LnZhbFtpXSA9IDAuMDsKKyAgICAgICAg
fSBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWModHlwZSkpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRWxlbXM7IGkrKykKKyAgICAgICAgICAg
ICAgICByZXN1bHQudmFsW2ldID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChnbHVTaGFkZXJVdGls
LmlzRGF0YVR5cGVVaW50T3JVVmVjKHR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG51bUVsZW1zOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0LnZhbFtpXSA9IDA7
CisgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyh0
eXBlKSkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC52YWxbaV0gPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlm
IChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKHR5cGUpKSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0ZXhSZXN1bHRUeXBlID0g
ZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRTYW1wbGVyTG9va3VwUmV0dXJuVHlwZSh0eXBlKTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHRleFJl
c3VsdFNjYWxhclR5cGUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZUFzRGF0
YVR5cGUodGV4UmVzdWx0VHlwZSk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHRleFJlc3VsdE51bURpbXMgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6
ZSh0ZXhSZXN1bHRUeXBlKTsKKworICAgICAgICAgICAgcmVzdWx0LnZhbCA9IG5ldyBlczNmVW5p
Zm9ybUFwaVRlc3RzLlNhbXBsZXJWKCk7CisgICAgICAgICAgICByZXN1bHQudmFsLnNhbXBsZXJW
LnVuaXQgPSAwOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleFJlc3VsdE51
bURpbXM7IGkrKykgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4UmVzdWx0U2NhbGFyVHlw
ZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVQ6IHJlc3VsdC52YWwuc2FtcGxlclYuZmlsbENvbG9yW2ldID0gMC4xMiAqIGk7IGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOiByZXN1
bHQudmFsLnNhbXBsZXJWLmZpbGxDb2xvcltpXSA9IC0yICsgaTsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOiByZXN1bHQudmFsLnNh
bXBsZXJWLmZpbGxDb2xvcltpXSA9IDQgKyBpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVu
aWZvcm1BcGlUZXN0cy5nZW5lcmF0ZVplcm9WYXJWYWx1ZSAtIEludmFsaWQgc2NhbGFyIHR5cGUn
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLmdlbmVyYXRlWmVy
b1ZhclZhbHVlIC0gSW52YWxpZCB0eXBlJyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZh
bHVlfSBhCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlfSBiCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3Rz
LmFwaVZhclZhbHVlRXF1YWxzID0gZnVuY3Rpb24oYSwgYikgeworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6
ZShhLnR5cGUpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZsb2F0VGhyZXNo
b2xkID0gMC4wNTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGEudHlwZSA9PSBiLnR5cGUs
ICdlczNmVW5pZm9ybUFwaVRlc3RzLmFwaVZhclZhbHVlRXF1YWxzIC0gdHlwZXMgYXJlIGRpZmZl
cmVudCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlRmxvYXRPclZlYyhhLnR5cGUpIHx8IGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeChh
LnR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAg
ICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYS52YWxbaV0gLSBiLnZhbFtpXSkgPj0gZmxvYXRU
aHJlc2hvbGQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBl
bHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWMoYS50eXBlKSkgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAg
aWYgKGEudmFsW2ldICE9IGIudmFsW2ldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZl
YyhhLnR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykK
KyAgICAgICAgICAgICAgICBpZiAoYS52YWxbaV0gIT0gYi52YWxbaV0pCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlz
RGF0YVR5cGVCb29sT3JCVmVjKGEudHlwZSkpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChhLnZhbFtpXSAhPSBiLnZhbFtp
XSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYg
KGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIoYS50eXBlKSkgeworICAgICAgICAgICAg
aWYgKGEudmFsLnNhbXBsZXJWLnVuaXQgIT0gYi52YWwuc2FtcGxlclYudW5pdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLmFwaVZhclZhbHVlRXF1YWxzIC0gSW52YWxp
ZCB0eXBlJyk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZX0gYm9vbFZhbHVlCisgICAg
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB0YXJnZXRTY2FsYXJUeXBlCisgICAg
ICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAqIEByZXR1cm4ge2VzM2ZVbmlm
b3JtQXBpVGVzdHMuVmFyVmFsdWV9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5n
ZXRSYW5kb21Cb29sUmVwcmVzZW50YXRpb24gPSBmdW5jdGlvbihib29sVmFsdWUsIHRhcmdldFNj
YWxhclR5cGUsIHJuZCkgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAg
Z2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyhib29sVmFsdWUudHlwZSksCisgICAg
ICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRSYW5kb21Cb29sUmVwcmVzZW50YXRpb24g
LSBEYXRhIHR5cGUgbm90IGJvb2xlYW4gb3IgYm9vbGVhbiB2ZWN0b3InLAorICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICB0cnVlCisgICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNp
emUoYm9vbFZhbHVlLnR5cGUpOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0
YVR5cGV9ICovIHZhciB0YXJnZXRUeXBlID0gc2l6ZSA9PSAxID8gdGFyZ2V0U2NhbGFyVHlwZSA6
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IodGFyZ2V0U2NhbGFyVHlwZSwgc2l6ZSk7
CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZX0gKi8gdmFy
IHJlc3VsdCA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlKCk7CisgICAgICAgIHJl
c3VsdC50eXBlID0gdGFyZ2V0VHlwZTsKKworICAgICAgICBzd2l0Y2ggKHRhcmdldFNjYWxhclR5
cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ6CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGJvb2xWYWx1ZS52YWxbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC52YWxbaV0gPSBybmQuZ2V0SW50KC0xMCwgMTApOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC52YWxbaV0gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQudmFsW2ldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQudmFsW2ldID0gMDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5VSU5UOgorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChib29sVmFsdWUudmFsW2ldKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnZhbFtpXSA9IHJuZC5nZXRJbnQoMSwgMTApOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudmFs
W2ldID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDoKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoYm9vbFZhbHVlLnZhbFtpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LnZhbFtpXSA9IHJuZC5nZXRGbG9hdCgtMTAuMCwgMTAuMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0LnZhbFtpXSA9PSAwLjApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LnZhbFtpXSA9IDEuMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQudmFsW2ldID0gMDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLmdldFJhbmRvbUJv
b2xSZXByZXNlbnRhdGlvbiAtIEludmFsaWQgdHlwZScpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmVW5p
Zm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7P3N0cmlu
Z30KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLmdldENhc2VTaGFkZXJUeXBlTmFt
ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVNoYWRlclR5cGUuVkVSVEVYOiByZXR1cm4g
J3ZlcnRleCc7CisgICAgICAgICAgICBjYXNlIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVNoYWRl
clR5cGUuRlJBR01FTlQ6IHJldHVybiAnZnJhZ21lbnQnOworICAgICAgICAgICAgY2FzZSBlczNm
VW5pZm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlLkJPVEg6IHJldHVybiAnYm90aCc7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVu
aWZvcm1BcGlUZXN0cy5nZXRDYXNlU2hhZGVyVHlwZU5hbWUgLSBJbnZhbGlkIHNoYWRlciB0eXBl
Jyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNlZWQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1B
cGlUZXN0cy5yYW5kb21DYXNlU2hhZGVyVHlwZSA9IGZ1bmN0aW9uKHNlZWQpIHsKKyAgICAgICAg
cmV0dXJuIChuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpKS5nZXRJbnQoMCwgT2JqZWN0LmtleXMo
ZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZSkubGVuZ3RoIC0gMSk7CisgICAgfTsK
KworICAgIC8vZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZSBkZWZpbml0aW9ucworCisg
ICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1BcGlUZXN0cy5GZWF0dXJlIC0gSW1wbGVtZW50ZWQg
YXMgYSBmdW5jdGlvbiB0byBjcmVhdGUgYW4gb2JqZWN0IHdpdGhvdXQgdW53YW50ZWQgcHJvcGVy
dGllcy4KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRl
c3RzLkZlYXR1cmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQVJSQVlVU0FHRV9PTkxZX01J
RERMRV9JTkRFWDogb25seSBtaWRkbGUgaW5kZXggb2YgZWFjaCBhcnJheSBpcyB1c2VkIGluIHNo
YWRlci4gSWYgbm90IGdpdmVuLCB1c2UgYWxsIGluZGljZXMuCisgICAgICAgIHRoaXMuQVJSQVlV
U0FHRV9PTkxZX01JRERMRV9JTkRFWCA9IGZhbHNlOworCisgICAgICAgIC8vIFVOSUZPUk1GVU5D
X1ZBTFVFOiB1c2UgcGFzcy1ieS12YWx1ZSB2ZXJzaW9ucyBvZiB1bmlmb3JtIGFzc2lnbm1lbnQg
ZnVuY3MsIGUuZy4gZ2xVbmlmb3JtMWYoKSwgd2hlcmUgcG9zc2libGUuIElmIG5vdCBnaXZlbiwg
dXNlIHBhc3MtYnktcG9pbnRlciB2ZXJzaW9ucy4KKyAgICAgICAgdGhpcy5VTklGT1JNRlVOQ19W
QUxVRSA9IGZhbHNlOworCisgICAgICAgIC8vIE1BVFJJWE1PREVfUk9XTUFKT1I6IHBhc3MgbWF0
cmljZXMgdG8gR0wgaW4gcm93IG1ham9yIGZvcm0uIElmIG5vdCBnaXZlbiwgdXNlIGNvbHVtbiBt
YWpvci4KKyAgICAgICAgdGhpcy5NQVRSSVhNT0RFX1JPV01BSk9SID0gZmFsc2U7CisKKyAgICAg
ICAgLy8gQVJSQVlBU1NJR046IGhvdyBiYXNpYy10eXBlIGFycmF5cyBhcmUgYXNzaWduZWQgd2l0
aCBnbFVuaWZvcm0qKCkuIElmIG5vbmUgZ2l2ZW4sIGFzc2lnbiBlYWNoIGVsZW1lbnQgb2YgYW4g
YXJyYXkgc2VwYXJhdGVseS4KKyAgICAgICAgdGhpcy5BUlJBWUFTU0lHTl9GVUxMID0gZmFsc2U7
IC8vITwgQXNzaWduIGFsbCBlbGVtZW50cyBvZiBhbiBhcnJheSB3aXRoIG9uZSBnbFVuaWZvcm0q
KCkuCisgICAgICAgIHRoaXMuQVJSQVlBU1NJR05fQkxPQ0tTX09GX1RXTyA9IGZhbHNlOyAvLyE8
IEFzc2lnbiB0d28gZWxlbWVudHMgcGVyIG9uZSBnbFVuaWZvcm0qKCkuCisKKyAgICAgICAgLy8g
VU5JRk9STVVTQUdFX0VWRVJZX09USEVSOiB1c2UgYWJvdXQgaGFsZiBvZiB0aGUgdW5pZm9ybXMu
IElmIG5vdCBnaXZlbiwgdXNlIGFsbCB1bmlmb3JtcyAoZXhjZXB0IHRoYXQgc29tZSBhcnJheSBp
bmRpY2VzIG1heSBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBBUlJBWVVTQUdFKS4KKyAgICAgICAg
dGhpcy5VTklGT1JNVVNBR0VfRVZFUllfT1RIRVIgPSBmYWxzZTsKKworICAgICAgICAvLyBCT09M
RUFOQVBJVFlQRTogdHlwZSB1c2VkIHRvIHBhc3MgYm9vbGVhbnMgdG8gYW5kIGZyb20gR0wgYXBp
LiBJZiBub25lIGdpdmVuLCB1c2UgZmxvYXQuCisgICAgICAgIHRoaXMuQk9PTEVBTkFQSVRZUEVf
SU5UID0gZmFsc2U7CisgICAgICAgIHRoaXMuQk9PTEVBTkFQSVRZUEVfVUlOVCA9IGZhbHNlOwor
CisgICAgICAgIC8vIFVOSUZPUk1WQUxVRV9aRVJPOiB1c2UgemVyby12YWx1ZWQgdW5pZm9ybXMu
IElmIG5vdCBnaXZlbiwgdXNlIHJhbmRvbSB1bmlmb3JtIHZhbHVlcy4KKyAgICAgICAgdGhpcy5V
TklGT1JNVkFMVUVfWkVSTyA9IGZhbHNlOworCisgICAgICAgIC8vIEFSUkFZX0ZJUlNUX0VMRU1f
TkFNRV9OT19JTkRFWDogaW4gY2VydGFpbiBBUEkgZnVuY3Rpb25zLCB3aGVuIHJlZmVycmluZyB0
byB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheSwgdXNlIGp1c3QgdGhlIGFycmF5IG5hbWUg
d2l0aG91dCBbMF0gYXQgdGhlIGVuZC4KKyAgICAgICAgdGhpcy5BUlJBWV9GSVJTVF9FTEVNX05B
TUVfTk9fSU5ERVggPSBmYWxzZTsKKyAgICB9OworCisgICAgLy8gQSBiYXNpYyB1bmlmb3JtIGlz
IGEgdW5pZm9ybSAocG9zc2libHkgc3RydWN0IG9yIGFycmF5IG1lbWJlcikgd2hvc2UgdHlwZSBp
cyBhIGJhc2ljIHR5cGUgKGUuZy4gZmxvYXQsIGl2ZWM0LCBzYW1wbGVyMmQpLgorICAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXworICAgICAq
IEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZV8KKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGlzVXNlZEluU2hhZGVyXworICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0
cy5WYXJWYWx1ZX0gZmluYWxWYWx1ZV8KKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IHJvb3ROYW1l
XworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZWxlbU5keF8KKyAgICAgKiBAcGFyYW0ge251bWJl
cj19IHJvb3RTaXplXworICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlm
b3JtID0gZnVuY3Rpb24obmFtZV8sIHR5cGVfLCBpc1VzZWRJblNoYWRlcl8sIGZpbmFsVmFsdWVf
LCByb290TmFtZV8sIGVsZW1OZHhfLCByb290U2l6ZV8pIHsKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWVfOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9ICovIHRoaXMudHlwZSA9IHR5cGVfOworICAgICAgICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovIHRoaXMuaXNVc2VkSW5TaGFkZXIgPSBpc1VzZWRJblNoYWRlcl87CisgICAg
ICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZX0gKi8gdGhpcy5maW5h
bFZhbHVlID0gZmluYWxWYWx1ZV87IC8vITwgVGhlIHZhbHVlIHdlIHVsdGltYXRlbHkgd2FudCB0
byBzZXQgZm9yIHRoaXMgdW5pZm9ybS4KKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dGhpcy5yb290TmFtZSA9IHJvb3ROYW1lXyA9PT0gdW5kZWZpbmVkID8gbmFtZV8gOiByb290TmFt
ZV87IC8vITwgSWYgdGhpcyBpcyBhIG1lbWJlciBvZiBhIGJhc2ljLXR5cGVkIGFycmF5LCByb290
TmFtZSBpcyB0aGUgbmFtZSBvZiB0aGF0IGFycmF5IHdpdGggIlswXSIgYXBwZW5kZWQuIE90aGVy
d2lzZSBpdCBlcXVhbHMgbmFtZS4KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
ZWxlbU5keCA9IGVsZW1OZHhfID09PSB1bmRlZmluZWQgPyAtMSA6IGVsZW1OZHhfOyAvLyE8IElm
IHRoaXMgaXMgYSBtZW1iZXIgb2YgYSBiYXNpYy10eXBlZCBhcnJheSwgZWxlbU5keCBpcyB0aGUg
aW5kZXggaW4gdGhhdCBhcnJheS4gT3RoZXJ3aXNlIC0xLgorICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5yb290U2l6ZSA9IHJvb3RTaXplXyA9PT0gdW5kZWZpbmVkID8gMSA6IHJv
b3RTaXplXzsgLy8hPCBJZiB0aGlzIGlzIGEgbWVtYmVyIG9mIGEgYmFzaWMtdHlwZWQgYXJyYXks
IHJvb3RTaXplIGlzIHRoZSBzaXplIG9mIHRoYXQgYXJyYXkuIE90aGVyd2lzZSAxLgorICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFz
aWNVbmlmb3JtPn0gdmVjCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0
dXJuIHtlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybX0KKyAgICAgKi8KKyAgICBlczNm
VW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybS5maW5kV2l0aE5hbWUgPSBmdW5jdGlvbih2ZWMs
IG5hbWUpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZWMubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIGlmICh2ZWNbaV0ubmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgICAgIHJl
dHVybiB2ZWNbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfTsKKwor
ICAgIC8vIFJlZmVyZW5jZSB2YWx1ZXMgZm9yIGluZm8gdGhhdCBpcyBleHBlY3RlZCB0byBiZSBy
ZXBvcnRlZCBieSBnbEdldEFjdGl2ZVVuaWZvcm0oKSBvciBnbEdldEFjdGl2ZVVuaWZvcm1zKCku
CisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWVfCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSB0eXBlXworICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gdXNlZAorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMu
QmFzaWNVbmlmb3JtUmVwb3J0UmVmID0gZnVuY3Rpb24obmFtZV8sIHR5cGVfLCB1c2VkKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lXzsKKyAgICAgICAg
Ly8gXG5vdGUgbWluU2l6ZSBhbmQgbWF4U2l6ZSBhcmUgZm9yIGFycmF5cyBhbmQgY2FuIGJlIGRp
c3RpbmN0IHNpbmNlIGltcGxlbWVudGF0aW9ucyBhcmUgYWxsb3dlZCwgYnV0IG5vdCByZXF1aXJl
ZCwgdG8gdHJpbSB0aGUgaW5hY3RpdmUgZW5kIGluZGljZXMgb2YgYXJyYXlzLgorICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5taW5TaXplID0gMTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHRoaXMubWF4U2l6ZSA9IDE7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZX0gKi8gdGhpcy50eXBlID0gdHlwZV87CisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdGhpcy5pc1VzZWRJblNoYWRlciA9IHVzZWQ7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIFRvIGJlIHVzZWQgYWZ0ZXIgY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbWluUworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhTCisgICAgICogQHJldHVy
biB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWZ9CisgICAgICovCisg
ICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWYucHJvdG90eXBlLmNv
bnN0cnVjdG9yX0EgPSBmdW5jdGlvbihtaW5TLCBtYXhTKSB7CisgICAgICAgIHRoaXMubWluU2l6
ZSA9IG1pblM7CisgICAgICAgIHRoaXMubWF4U2l6ZSA9IG1heFM7CisKKyAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucygKKyAgICAgICAgICAgIHRoaXMubWluU2l6ZSA8PSB0aGlzLm1heFNpemUsCisg
ICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWYucHJv
dG90eXBlLmNvbnN0cnVjdG9yX0EgLSBtaW4gc2l6ZSBub3Qgc21hbGxlciBvciBlcXVhbCB0aGFu
IG1heCBzaXplJywKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgdHJ1ZQorICAgICAg
ICApOworCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAgICAvLyBJbmZvIHRoYXQg
aXMgYWN0dWFsbHkgcmVwb3J0ZWQgYnkgZ2xHZXRBY3RpdmVVbmlmb3JtKCkgb3IgZ2xHZXRBY3Rp
dmVVbmlmb3JtcygpLgorICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lXworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuYW1lTGVuZ3RoXworICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXworICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5E
YXRhVHlwZX0gdHlwZV8KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhfCisgICAgICovCisg
ICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTCA9IGZ1bmN0aW9uKG5h
bWVfLCBuYW1lTGVuZ3RoXywgc2l6ZV8sIHR5cGVfLCBpbmRleF8pIHsKKyAgICAgICAgdGhpcy5u
YW1lID0gbmFtZV87CisgICAgICAgIHRoaXMubmFtZUxlbmd0aCA9IG5hbWVMZW5ndGhfOworICAg
ICAgICB0aGlzLnNpemUgPSBzaXplXzsKKyAgICAgICAgdGhpcy50eXBlID0gdHlwZV87CisgICAg
ICAgIHRoaXMuaW5kZXggPSBpbmRleF87CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTD59IHZlYwor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHJldHVybiB7ZXMzZlVuaWZvcm1B
cGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTH0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFw
aVRlc3RzLkJhc2ljVW5pZm9ybVJlcG9ydEdMLmZpbmRXaXRoTmFtZSA9IGZ1bmN0aW9uKHZlYywg
bmFtZSkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZlYy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgaWYgKHZlY1tpXS5uYW1lID09IG5hbWUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHZlY1tpXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZSBjbGFzcywgaW5o
ZXJpdHMgZnJvbSBUZXN0Q2FzZSBjbGFzcworICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisg
ICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbikg
eyAvLyBcbm90ZSBSYW5kb21pemVzIGNhc2VUeXBlLCB1bmlmb3JtQ29sbGVjdGlvbiBhbmQgZmVh
dHVyZXMuCisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24pOworCisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5GZWF0
dXJlfSAqLyB0aGlzLm1fZmVhdHVyZXM7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1B
cGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbn0gKFNoYXJlZFB0cikgKi8gdGhpcy5tX3VuaWZvcm1D
b2xsZWN0aW9uOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fY2FzZVNo
YWRlclR5cGUgPSAwOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1VGV4dHVyZS5UZXh0
dXJlMkQ+fSAqLyB0aGlzLm1fdGV4dHVyZXMyZCA9IFtdOworICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PGdsdVRleHR1cmUuVGV4dHVyZUN1YmU+fSAqLyB0aGlzLm1fdGV4dHVyZXNDdWJlID0gW107
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2ZpbGxlZFRleHR1
cmVVbml0cyA9IFtdOworICAgIH07CisKKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1D
YXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90
eXBlKTsKKyAgICAvKiogZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZSBwcm90b3R5cGUg
cmVzdG9yZSAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZTsKKworICAgIC8q
KgorICAgICAqIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UgbmV3Qy4gQ3JlYXRlcyBh
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UuIFVzZSBhZnRlciBjb25zdHJ1Y3Rvci4K
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEByZXR1cm4ge2VzM2ZVbmlmb3Jt
QXBpVGVzdHMuVW5pZm9ybUNhc2V9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ2FzZS5wcm90b3R5cGUubmV3QyA9IGZ1bmN0aW9uKHNlZWQpIHsKKyAgICAgICAgdGhp
cy5tX2ZlYXR1cmVzID0gdGhpcy5yYW5kb21GZWF0dXJlcyhzZWVkKTsKKyAgICAgICAgdGhpcy5t
X3VuaWZvcm1Db2xsZWN0aW9uID0gZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlv
bi5yYW5kb20oc2VlZCk7CisgICAgICAgIHRoaXMubV9jYXNlU2hhZGVyVHlwZSA9IGVzM2ZVbmlm
b3JtQXBpVGVzdHMucmFuZG9tQ2FzZVNoYWRlclR5cGUoc2VlZCk7CisKKyAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybUNhc2UgbmV3X0IgKHN0YXRpYykuIENyZWF0ZXMgYSBlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1DYXNlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZGVzY3JpcHRpb24KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBy
ZXR1cm4ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2V9CisgICAgICovCisgICAgZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5uZXdfQyA9IGZ1bmN0aW9uKG5hbWUsIGRlc2Ny
aXB0aW9uLCBzZWVkKSB7CisgICAgICAgIHZhciB1bmlmb3JtQ2FzZSA9IG5ldyBlczNmVW5pZm9y
bUFwaVRlc3RzLlVuaWZvcm1DYXNlKG5hbWUsIGRlc2NyaXB0aW9uKS5uZXdDKHNlZWQpOworCisg
ICAgICAgIHJldHVybiB1bmlmb3JtQ2FzZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZSBuZXdfQi4gQ3JlYXRlcyBhIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuVW5pZm9ybUNhc2UuIFVzZSBhZnRlciBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAcGFy
YW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVNoYWRlclR5cGV9IGNhc2VTaGFkZXJUeXBlCisg
ICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufSB1bmlm
b3JtQ29sbGVjdGlvbiAoU2hhcmVkUHRyKQorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlU
ZXN0cy5GZWF0dXJlfSBmZWF0dXJlcworICAgICAqIEByZXR1cm4ge2VzM2ZVbmlmb3JtQXBpVGVz
dHMuVW5pZm9ybUNhc2V9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3Jt
Q2FzZS5wcm90b3R5cGUubmV3QiA9IGZ1bmN0aW9uKGNhc2VTaGFkZXJUeXBlLCB1bmlmb3JtQ29s
bGVjdGlvbiwgZmVhdHVyZXMpIHsKKyAgICAgICAgdGhpcy5tX2Nhc2VTaGFkZXJUeXBlID0gY2Fz
ZVNoYWRlclR5cGU7CisgICAgICAgIHRoaXMubV91bmlmb3JtQ29sbGVjdGlvbiA9IHVuaWZvcm1D
b2xsZWN0aW9uOworICAgICAgICB0aGlzLm1fZmVhdHVyZXMgPSBmZWF0dXJlczsKKworICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ2FzZSBuZXdfQiAoc3RhdGljKS4gQ3JlYXRlcyBhIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVW5pZm9ybUNhc2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlU
ZXN0cy5DYXNlU2hhZGVyVHlwZX0gY2FzZVNoYWRlclR5cGUKKyAgICAgKiBAcGFyYW0ge2VzM2ZV
bmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259IHVuaWZvcm1Db2xsZWN0aW9uIChTaGFy
ZWRQdHIpCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmV9IGZlYXR1
cmVzCisgICAgICogQHJldHVybiB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZX0KKyAg
ICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLm5ld19CID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24sIGNhc2VTaGFkZXJUeXBlLCB1bmlmb3JtQ29sbGVjdGlvbiwg
ZmVhdHVyZXMpIHsKKyAgICAgICAgdmFyIHVuaWZvcm1DYXNlID0gbmV3IGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVW5pZm9ybUNhc2UobmFtZSwgZGVzY3JpcHRpb24pLm5ld0IoY2FzZVNoYWRlclR5cGUs
IHVuaWZvcm1Db2xsZWN0aW9uLCBmZWF0dXJlcyk7CisKKyAgICAgICAgcmV0dXJuIHVuaWZvcm1D
YXNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm1DYXNlIG5ld19BLiBDcmVhdGVzIGEgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS4g
VXNlIGFmdGVyIGNvbnN0cnVjdG9yLgorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0
cy5DYXNlU2hhZGVyVHlwZX0gY2FzZVNoYWRlclR5cGUKKyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlm
b3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259IHVuaWZvcm1Db2xsZWN0aW9uIChTaGFyZWRQ
dHIpCisgICAgICogQHJldHVybiB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZX0KKyAg
ICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5uZXdB
ID0gZnVuY3Rpb24oY2FzZVNoYWRlclR5cGUsIHVuaWZvcm1Db2xsZWN0aW9uKSB7CisgICAgICAg
dGhpcy5tX2Nhc2VTaGFkZXJUeXBlID0gY2FzZVNoYWRlclR5cGU7CisgICAgICAgdGhpcy5tX3Vu
aWZvcm1Db2xsZWN0aW9uID0gdW5pZm9ybUNvbGxlY3Rpb247CisgICAgICAgdGhpcy5tX2ZlYXR1
cmVzID0gbnVsbDsKKworICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlIG5ld19BIChzdGF0aWMpLiBDcmVh
dGVzIGEgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICogQHBh
cmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlfSBjYXNlU2hhZGVyVHlwZQor
ICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbn0gdW5p
Zm9ybUNvbGxlY3Rpb24gKFNoYXJlZFB0cikKKyAgICAgKiBAcmV0dXJuIHtlczNmVW5pZm9ybUFw
aVRlc3RzLlVuaWZvcm1DYXNlfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybUNhc2UubmV3X0EgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgY2FzZVNoYWRlclR5
cGUsIHVuaWZvcm1Db2xsZWN0aW9uKSB7CisgICAgICAgIHZhciB1bmlmb3JtQ2FzZSA9IG5ldyBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlKG5hbWUsIGRlc2NyaXB0aW9uKS5uZXdBKGNh
c2VTaGFkZXJUeXBlLCB1bmlmb3JtQ29sbGVjdGlvbik7CisKKyAgICAgICAgcmV0dXJuIHVuaWZv
cm1DYXNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAor
ICAgICAqIEByZXR1cm4ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuRmVhdHVyZX0KKyAgICAgKi8KKyAg
ICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5yYW5kb21GZWF0dXJl
cyA9IGZ1bmN0aW9uKHNlZWQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRl
c3RzLkZlYXR1cmV9ICovIHZhciByZXN1bHQgPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5GZWF0
dXJlKCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRvbS5SYW5kb219ICovIHZhciBybmQg
PSBuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpOworCisgICAgICAgIHJlc3VsdC5BUlJBWVVTQUdF
X09OTFlfTUlERExFX0lOREVYID0gcm5kLmdldEJvb2woKTsKKyAgICAgICAgcmVzdWx0LlVOSUZP
Uk1GVU5DX1ZBTFVFID0gcm5kLmdldEJvb2woKTsKKyAgICAgICAgcmVzdWx0Lk1BVFJJWE1PREVf
Uk9XTUFKT1IgPSBybmQuZ2V0Qm9vbCgpOworICAgICAgICByZXN1bHQuQVJSQVlBU1NJR05fRlVM
TCA9IHJuZC5nZXRCb29sKCk7CisgICAgICAgIHJlc3VsdC5BUlJBWUFTU0lHTl9CTE9DS1NfT0Zf
VFdPID0gIXJlc3VsdC5BUlJBWUFTU0lHTl9GVUxMOworICAgICAgICByZXN1bHQuVU5JRk9STVVT
QUdFX0VWRVJZX09USEVSID0gcm5kLmdldEJvb2woKTsKKyAgICAgICAgcmVzdWx0LkJPT0xFQU5B
UElUWVBFX0lOVCA9IHJuZC5nZXRCb29sKCk7CisgICAgICAgIHJlc3VsdC5CT09MRUFOQVBJVFlQ
RV9VSU5UID0gIXJlc3VsdC5CT09MRUFOQVBJVFlQRV9JTlQ7CisgICAgICAgIHJlc3VsdC5VTklG
T1JNVkFMVUVfWkVSTyA9IHJuZC5nZXRCb29sKCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSB0aGUgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ2FzZQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9y
bUNhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBudW1TYW1wbGVyVW5pZm9ybXMgPSB0aGlzLm1fdW5pZm9ybUNvbGxlY3Rp
b24uZ2V0TnVtU2FtcGxlcnMoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2
ZXJ0ZXhUZXhVbml0c1JlcXVpcmVkID0gdGhpcy5tX2Nhc2VTaGFkZXJUeXBlICE9IGVzM2ZVbmlm
b3JtQXBpVGVzdHMuQ2FzZVNoYWRlclR5cGUuRlJBR01FTlQgPyBudW1TYW1wbGVyVW5pZm9ybXMg
OiAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZyYWdtZW50VGV4VW5pdHNS
ZXF1aXJlZCA9IHRoaXMubV9jYXNlU2hhZGVyVHlwZSAhPSBlczNmVW5pZm9ybUFwaVRlc3RzLkNh
c2VTaGFkZXJUeXBlLlZFUlRFWCA/IG51bVNhbXBsZXJVbmlmb3JtcyA6IDA7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY29tYmluZWRUZXhVbml0c1JlcXVpcmVkID0gdmVydGV4
VGV4VW5pdHNSZXF1aXJlZCArIGZyYWdtZW50VGV4VW5pdHNSZXF1aXJlZDsKKyAgICAgICAgdmFy
IHZlcnRleFRleFVuaXRzU3VwcG9ydGVkID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQ
YXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKSk7CisgICAgICAgIHZh
ciBmcmFnbWVudFRleFVuaXRzU3VwcG9ydGVkID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5n
ZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpKTsKKyAgICAgICAgdmFyIGNv
bWJpbmVkVGV4VW5pdHNTdXBwb3J0ZWQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBh
cmFtZXRlcihnbC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUykpOworCisgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICBudW1TYW1wbGVyVW5pZm9ybXMgPD0gZXMz
ZlVuaWZvcm1BcGlUZXN0cy5NQVhfTlVNX1NBTVBMRVJfVU5JRk9STVMsCisgICAgICAgICAgICAn
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUuaW5pdCAtIHNhbXBsZXIg
dW5pZm9ybXMgZXhjZWVkIE1BWF9OVU1fU0FNUExFUl9VTklGT1JNUycsCisgICAgICAgICAgICBm
YWxzZSwKKyAgICAgICAgICAgIHRydWUKKyAgICAgICAgKTsKKworICAgICAgICBpZiAodmVydGV4
VGV4VW5pdHNSZXF1aXJlZCA+IHZlcnRleFRleFVuaXRzU3VwcG9ydGVkKQorICAgICAgICAgICAg
dGVzdEZhaWxlZE9wdGlvbnMoJycgKyB2ZXJ0ZXhUZXhVbml0c1JlcXVpcmVkICsgJyB2ZXJ0ZXgg
dGV4dHVyZSB1bml0cyByZXF1aXJlZCwgJyArIHZlcnRleFRleFVuaXRzU3VwcG9ydGVkICsgJyBz
dXBwb3J0ZWQnLCB0cnVlKTsKKyAgICAgICAgaWYgKGZyYWdtZW50VGV4VW5pdHNSZXF1aXJlZCA+
IGZyYWdtZW50VGV4VW5pdHNTdXBwb3J0ZWQpCisgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9u
cygnJyArIGZyYWdtZW50VGV4VW5pdHNSZXF1aXJlZCArICcgZnJhZ21lbnQgdGV4dHVyZSB1bml0
cyByZXF1aXJlZCwgJyArIGZyYWdtZW50VGV4VW5pdHNTdXBwb3J0ZWQgKyAnIHN1cHBvcnRlZCcs
IHRydWUpOworICAgICAgICBpZiAoY29tYmluZWRUZXhVbml0c1JlcXVpcmVkID4gY29tYmluZWRU
ZXhVbml0c1N1cHBvcnRlZCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCcnICsgY29t
YmluZWRUZXhVbml0c1JlcXVpcmVkICsgJyBjb21iaW5lZCB0ZXh0dXJlIHVuaXRzIHJlcXVpcmVk
LCAnICsgY29tYmluZWRUZXhVbml0c1N1cHBvcnRlZCArICcgc3VwcG9ydGVkJywgdHJ1ZSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0
cy5CYXNpY1VuaWZvcm0+fSBiYXNpY1VuaWZvcm1zRHN0CisgICAgICogQHBhcmFtIHtBcnJheTxl
czNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybVJlcG9ydFJlZj59IGJhc2ljVW5pZm9ybVJl
cG9ydHNEc3QKKyAgICAgKiBAcGFyYW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gdmFyVHlwZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJOYW1lCisgICAgICogQHBhcmFtIHtib29sZWFufSBpc1Bh
cmVudEFjdGl2ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzYW1wbGVyVW5pdENvdW50ZXIKKyAg
ICAgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisgICAgICogQHJldHVybiB7bnVtYmVy
fSBVc2VkIHRvIGJlIG91dHB1dCBwYXJhbWV0ZXIuIFNhbXBsZXIgdW5pdCBjb3VudAorICAgICAq
LworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmdlbmVyYXRl
QmFzaWNVbmlmb3JtcyA9IGZ1bmN0aW9uKGJhc2ljVW5pZm9ybXNEc3QsIGJhc2ljVW5pZm9ybVJl
cG9ydHNEc3QsIHZhclR5cGUsIHZhck5hbWUsIGlzUGFyZW50QWN0aXZlLCBzYW1wbGVyVW5pdENv
dW50ZXIsIHJuZCkgeworICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFy
VmFsdWV9ICovIHZhciB2YWx1ZTsKKworICAgICAgICBpZiAodmFyVHlwZS5pc0Jhc2ljVHlwZSgp
KSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0FjdGl2ZSA9IGlz
UGFyZW50QWN0aXZlICYmICh0aGlzLm1fZmVhdHVyZXMuVU5JRk9STVVTQUdFX0VWRVJZX09USEVS
ID8gYmFzaWNVbmlmb3Jtc0RzdC5sZW5ndGggJSAyID09IDAgOiB0cnVlKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHR5cGUgPSB2YXJUeXBl
LmdldEJhc2ljVHlwZSgpOworICAgICAgICAgICAgdmFsdWUgPSB0aGlzLm1fZmVhdHVyZXMuVU5J
Rk9STVZBTFVFX1pFUk8gPyBlczNmVW5pZm9ybUFwaVRlc3RzLmdlbmVyYXRlWmVyb1ZhclZhbHVl
KHR5cGUpIDoKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIodHlw
ZSkgPyBlczNmVW5pZm9ybUFwaVRlc3RzLmdlbmVyYXRlUmFuZG9tVmFyVmFsdWUodHlwZSwgcm5k
LCBzYW1wbGVyVW5pdENvdW50ZXIrKykgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZW5lcmF0ZVJhbmRvbVZhclZh
bHVlKHZhclR5cGUuZ2V0QmFzaWNUeXBlKCksIHJuZCk7CisKKyAgICAgICAgICAgIGJhc2ljVW5p
Zm9ybXNEc3QucHVzaChuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm0odmFyTmFt
ZSwgdmFyVHlwZS5nZXRCYXNpY1R5cGUoKSwgaXNBY3RpdmUsIHZhbHVlKSk7CisgICAgICAgICAg
ICBiYXNpY1VuaWZvcm1SZXBvcnRzRHN0LnB1c2gobmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFz
aWNVbmlmb3JtUmVwb3J0UmVmKHZhck5hbWUsIHZhclR5cGUuZ2V0QmFzaWNUeXBlKCksIGlzQWN0
aXZlKSk7CisgICAgICAgIH0gZWxzZSBpZiAodmFyVHlwZS5pc0FycmF5VHlwZSgpKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNpemUgPSB2YXJUeXBlLmdldEFycmF5
U2l6ZSgpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBhcnJheVJvb3RO
YW1lID0gJycgKyB2YXJOYW1lICsgJ1swXSc7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PGJvb2xlYW4+fSAqLyB2YXIgaXNFbGVtQWN0aXZlID0gW107CisKKyAgICAgICAgICAgIGZvciAo
dmFyIGVsZW1OZHggPSAwOyBlbGVtTmR4IDwgdmFyVHlwZS5nZXRBcnJheVNpemUoKTsgZWxlbU5k
eCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBpbmRleGVk
TmFtZSA9ICcnICsgdmFyTmFtZSArICdbJyArIGVsZW1OZHggKyAnXSc7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNDdXJFbGVtQWN0aXZlID0gaXNQYXJlbnRB
Y3RpdmUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHRoaXMubV9mZWF0dXJlcy5VTklGT1JNVVNBR0VfRVZFUllfT1RIRVIgPyBiYXNpY1VuaWZv
cm1zRHN0Lmxlbmd0aCAlIDIgPT0gMCA6IHRydWUpICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1fZmVhdHVyZXMuQVJSQVlVU0FHRV9P
TkxZX01JRERMRV9JTkRFWCA/IGVsZW1OZHggPT0gTWF0aC5mbG9vcihzaXplIC8gMikgOiB0cnVl
KTsKKworICAgICAgICAgICAgICAgIGlzRWxlbUFjdGl2ZS5wdXNoKGlzQ3VyRWxlbUFjdGl2ZSk7
CisKKyAgICAgICAgICAgICAgICBpZiAodmFyVHlwZS5nZXRFbGVtZW50VHlwZSgpLmlzQmFzaWNU
eXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gXG5vdGUgV2UgZG9uJ3Qgd2FudCBzZXBh
cmF0ZSBlbnRyaWVzIGluIGJhc2ljVW5pZm9ybVJlcG9ydHNEc3QgZm9yIGVsZW1lbnRzIG9mIGJh
c2ljLXR5cGUgYXJyYXlzLgorICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9ICovIHZhciBlbGVtQmFzaWNUeXBlID0gdmFyVHlwZS5nZXRFbGVtZW50
VHlwZSgpLmdldEJhc2ljVHlwZSgpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMu
bV9mZWF0dXJlcy5VTklGT1JNVkFMVUVfWkVSTyA/IGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2VuZXJh
dGVaZXJvVmFyVmFsdWUoZWxlbUJhc2ljVHlwZSkgOgorICAgICAgICAgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKGVsZW1CYXNpY1R5cGUpID8gZXMzZlVuaWZvcm1B
cGlUZXN0cy5nZW5lcmF0ZVJhbmRvbVZhclZhbHVlKGVsZW1CYXNpY1R5cGUsIHJuZCwgc2FtcGxl
clVuaXRDb3VudGVyKyspIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZW5lcmF0ZVJhbmRvbVZhclZh
bHVlKGVsZW1CYXNpY1R5cGUsIHJuZCk7CisKKyAgICAgICAgICAgICAgICAgICAgYmFzaWNVbmlm
b3Jtc0RzdC5wdXNoKG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybShpbmRleGVk
TmFtZSwgZWxlbUJhc2ljVHlwZSwgaXNDdXJFbGVtQWN0aXZlLCB2YWx1ZSwgYXJyYXlSb290TmFt
ZSwgZWxlbU5keCwgc2l6ZSkpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVyVW5pdENvdW50ZXIgPSB0aGlzLmdlbmVyYXRlQmFzaWNVbmlmb3Jtcyhi
YXNpY1VuaWZvcm1zRHN0LCBiYXNpY1VuaWZvcm1SZXBvcnRzRHN0LCB2YXJUeXBlLmdldEVsZW1l
bnRUeXBlKCksIGluZGV4ZWROYW1lLCBpc0N1ckVsZW1BY3RpdmUsIHNhbXBsZXJVbml0Q291bnRl
ciwgcm5kKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZhclR5cGUuZ2V0RWxl
bWVudFR5cGUoKS5pc0Jhc2ljVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtaW5TaXplOworICAgICAgICAgICAgICAgIGZvciAobWluU2l6ZSA9IHZh
clR5cGUuZ2V0QXJyYXlTaXplKCk7IG1pblNpemUgPiAwICYmICFpc0VsZW1BY3RpdmVbbWluU2l6
ZSAtIDFdOyBtaW5TaXplLS0pIHt9CisKKyAgICAgICAgICAgICAgICBiYXNpY1VuaWZvcm1SZXBv
cnRzRHN0LnB1c2gobmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0UmVm
KGFycmF5Um9vdE5hbWUsIHZhclR5cGUuZ2V0RWxlbWVudFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwg
aXNQYXJlbnRBY3RpdmUgJiYgbWluU2l6ZSA+IDApLmNvbnN0cnVjdG9yX0EobWluU2l6ZSwgc2l6
ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0
TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAgICB2YXJUeXBlLmlzU3RydWN0VHlwZSgpLAorICAg
ICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5n
ZW5lcmF0ZUJhc2ljVW5pZm9ybXMgLSBub3QgYSBzdHJ1Y3QgdHlwZScsCisgICAgICAgICAgICAg
ICAgZmFsc2UsCisgICAgICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgKTsKKworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtnbHVWYXJUeXBlLlN0cnVjdFR5cGV9ICovIHZhciBzdHJ1Y3RUeXBl
ID0gdmFyVHlwZS5nZXRTdHJ1Y3QoKTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzdHJ1Y3RUeXBlLmdldFNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtnbHVWYXJUeXBlLlN0cnVjdE1lbWJlcn0gKi8gdmFyIG1lbWJlciA9IHN0cnVjdFR5cGUuZ2V0
TWVtYmVyKGkpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbWVt
YmVyRnVsbE5hbWUgPSAnJyArIHZhck5hbWUgKyAnLicgKyBtZW1iZXIuZ2V0TmFtZSgpOworCisg
ICAgICAgICAgICAgICAgc2FtcGxlclVuaXRDb3VudGVyID0gdGhpcy5nZW5lcmF0ZUJhc2ljVW5p
Zm9ybXMoYmFzaWNVbmlmb3Jtc0RzdCwgYmFzaWNVbmlmb3JtUmVwb3J0c0RzdCwgbWVtYmVyLmdl
dFR5cGUoKSwgbWVtYmVyRnVsbE5hbWUsIGlzUGFyZW50QWN0aXZlLCBzYW1wbGVyVW5pdENvdW50
ZXIsIHJuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2Ft
cGxlclVuaXRDb3VudGVyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZHN0CisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLndyaXRlVW5pZm9ybURlZmluaXRpb25zID0g
ZnVuY3Rpb24oZHN0KSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX3VuaWZv
cm1Db2xsZWN0aW9uLmdldE51bVN0cnVjdFR5cGVzKCk7IGkrKykKKyAgICAgICAgICAgIGRzdCAr
PSBnbHVWYXJUeXBlLmRlY2xhcmVTdHJ1Y3RUeXBlKHRoaXMubV91bmlmb3JtQ29sbGVjdGlvbi5n
ZXRTdHJ1Y3RUeXBlKGkpLCAwKSArICc7XG4nOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5tX3VuaWZvcm1Db2xsZWN0aW9uLmdldE51bVVuaWZvcm1zKCk7IGkrKykKKyAgICAg
ICAgICAgIGRzdCArPSAndW5pZm9ybSAnICsgZ2x1VmFyVHlwZS5kZWNsYXJlVmFyaWFibGUodGhp
cy5tX3VuaWZvcm1Db2xsZWN0aW9uLmdldFVuaWZvcm0oaSkudHlwZSwgdGhpcy5tX3VuaWZvcm1D
b2xsZWN0aW9uLmdldFVuaWZvcm0oaSkubmFtZSwgMCkgKyAnO1xuJzsKKworICAgICAgICBkc3Qg
Kz0gJ1xuJzsKKworICAgICAgICB2YXIgY29tcGFyZUZ1bmNzID0gW3sKKyAgICAgICAgICAgICAg
ICByZXF1aXJpbmdUeXBlczogW2dsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWMsIGds
dVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlv
bjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV9mbG9hdCAobWVkaXVtcCBmbG9hdCBhLCBtZWRpdW1w
IGZsb2F0IGIpIHsgcmV0dXJuIGFicyhhIC0gYikgPCAwLjA1ID8gMS4wIDogMC4wOyB9JworICAg
ICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFU
eXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMiwgdCk7fSwKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRh
dGFUeXBlSXNNYXRyaXhXaXRoTlJvd3MoMiwgdCk7fQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV92ZWMyIChtZWRp
dW1wIHZlYzIgYSwgbWVkaXVtcCB2ZWMyIGIpIHsgcmV0dXJuIGNvbXBhcmVfZmxvYXQoYS54LCBi
LngpKmNvbXBhcmVfZmxvYXQoYS55LCBiLnkpOyB9JworICAgICAgICAgICAgfSx7CisgICAgICAg
ICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
dCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfVkVDMywgdCk7fSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlSXNNYXRyaXhXaXRoTlJv
d3MoMywgdCk7fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlv
bjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV92ZWMzIChtZWRpdW1wIHZlYzMgYSwgbWVkaXVtcCB2
ZWMzIGIpIHsgcmV0dXJuIGNvbXBhcmVfZmxvYXQoYS54LCBiLngpKmNvbXBhcmVfZmxvYXQoYS55
LCBiLnkpKmNvbXBhcmVfZmxvYXQoYS56LCBiLnopOyB9JworICAgICAgICAgICAgfSx7CisgICAg
ICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgdCk7fSwKKyAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlSXNNYXRyaXhXaXRo
TlJvd3MoNCwgdCk7fV0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxv
YXQgY29tcGFyZV92ZWM0IChtZWRpdW1wIHZlYzQgYSwgbWVkaXVtcCB2ZWM0IGIpIHsgcmV0dXJu
IGNvbXBhcmVfZmxvYXQoYS54LCBiLngpKmNvbXBhcmVfZmxvYXQoYS55LCBiLnkpKmNvbXBhcmVf
ZmxvYXQoYS56LCBiLnopKmNvbXBhcmVfZmxvYXQoYS53LCBiLncpOyB9JworICAgICAgICAgICAg
fSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxz
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMiwgdCk7fSwKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1
YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV9t
YXQyIChtZWRpdW1wIG1hdDIgYSwgbWVkaXVtcCBtYXQyIGIpIHsgcmV0dXJuIGNvbXBhcmVfdmVj
MihhWzBdLCBiWzBdKSpjb21wYXJlX3ZlYzIoYVsxXSwgYlsxXSk7IH0nCisgICAgICAgICAgICB9
LHsKKyAgICAgICAgICAgICAgICByZXF1aXJpbmdUeXBlczogWworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMo
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDMsIHQpO30sCisgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVx
dWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQsIHQpO30KKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgIGRlZmluaXRpb246ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVf
bWF0MngzIChtZWRpdW1wIG1hdDJ4MyBhLCBtZWRpdW1wIG1hdDJ4MyBiKSB7IHJldHVybiBjb21w
YXJlX3ZlYzMoYVswXSwgYlswXSkqY29tcGFyZV92ZWMzKGFbMV0sIGJbMV0pOyB9JworICAgICAg
ICAgICAgfSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBl
RXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMlg0LCB0KTt9LAorICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0
YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlZBTElELCB0KTt9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBkZWZpbml0aW9uOiAnbWVkaXVtcCBmbG9hdCBj
b21wYXJlX21hdDJ4NCAobWVkaXVtcCBtYXQyeDQgYSwgbWVkaXVtcCBtYXQyeDQgYikgeyByZXR1
cm4gY29tcGFyZV92ZWM0KGFbMF0sIGJbMF0pKmNvbXBhcmVfdmVjNChhWzFdLCBiWzFdKTsgfScK
KyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIHJlcXVpcmluZ1R5cGVzOiBbCisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5k
YXRhVHlwZUVxdWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYMiwgdCk7fSwK
KyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRl
c3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAg
ZmxvYXQgY29tcGFyZV9tYXQzeDIgKG1lZGl1bXAgbWF0M3gyIGEsIG1lZGl1bXAgbWF0M3gyIGIp
IHsgcmV0dXJuIGNvbXBhcmVfdmVjMihhWzBdLCBiWzBdKSpjb21wYXJlX3ZlYzIoYVsxXSwgYlsx
XSkqY29tcGFyZV92ZWMyKGFbMl0sIGJbMl0pOyB9JworICAgICAgICAgICAgfSx7CisgICAgICAg
ICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
dCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuRkxPQVRfTUFUMywgdCk7fSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV9tYXQzIChtZWRpdW1w
IG1hdDMgYSwgbWVkaXVtcCBtYXQzIGIpIHsgcmV0dXJuIGNvbXBhcmVfdmVjMyhhWzBdLCBiWzBd
KSpjb21wYXJlX3ZlYzMoYVsxXSwgYlsxXSkqY29tcGFyZV92ZWMzKGFbMl0sIGJbMl0pOyB9Jwor
ICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRh
dGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0LCB0KTt9LAor
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVz
dHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlZBTElELCB0KTt9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBkZWZpbml0aW9uOiAnbWVkaXVtcCBm
bG9hdCBjb21wYXJlX21hdDN4NCAobWVkaXVtcCBtYXQzeDQgYSwgbWVkaXVtcCBtYXQzeDQgYikg
eyByZXR1cm4gY29tcGFyZV92ZWM0KGFbMF0sIGJbMF0pKmNvbXBhcmVfdmVjNChhWzFdLCBiWzFd
KSpjb21wYXJlX3ZlYzQoYVsyXSwgYlsyXSk7IH0nCisgICAgICAgICAgICB9LHsKKyAgICAgICAg
ICAgICAgICByZXF1aXJpbmdUeXBlczogWworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0
KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDIsIHQpO30sCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQsIHQpO30KKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGRlZmluaXRpb246ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfbWF0NHgyIChtZWRp
dW1wIG1hdDR4MiBhLCBtZWRpdW1wIG1hdDR4MiBiKSB7IHJldHVybiBjb21wYXJlX3ZlYzIoYVsw
XSwgYlswXSkqY29tcGFyZV92ZWMyKGFbMV0sIGJbMV0pKmNvbXBhcmVfdmVjMihhWzJdLCBiWzJd
KSpjb21wYXJlX3ZlYzIoYVszXSwgYlszXSk7IH0nCisgICAgICAgICAgICB9LHsKKyAgICAgICAg
ICAgICAgICByZXF1aXJpbmdUeXBlczogWworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0
KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDMsIHQpO30sCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQsIHQpO30KKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGRlZmluaXRpb246ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfbWF0NHgzIChtZWRp
dW1wIG1hdDR4MyBhLCBtZWRpdW1wIG1hdDR4MyBiKSB7IHJldHVybiBjb21wYXJlX3ZlYzMoYVsw
XSwgYlswXSkqY29tcGFyZV92ZWMzKGFbMV0sIGJbMV0pKmNvbXBhcmVfdmVjMyhhWzJdLCBiWzJd
KSpjb21wYXJlX3ZlYzMoYVszXSwgYlszXSk7IH0nCisgICAgICAgICAgICB9LHsKKyAgICAgICAg
ICAgICAgICByZXF1aXJpbmdUeXBlczogWworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0
KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRp
bC5EYXRhVHlwZS5GTE9BVF9NQVQ0LCB0KTt9LAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlZBTElELCB0KTt9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICBkZWZpbml0aW9uOiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX21hdDQgKG1lZGl1bXAg
bWF0NCBhLCBtZWRpdW1wIG1hdDQgYikgeyByZXR1cm4gY29tcGFyZV92ZWM0KGFbMF0sIGJbMF0p
KmNvbXBhcmVfdmVjNChhWzFdLCBiWzFdKSpjb21wYXJlX3ZlYzQoYVsyXSwgYlsyXSkqY29tcGFy
ZV92ZWM0KGFbM10sIGJbM10pOyB9JworICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAg
cmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVy
biBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5ULCB0KTt9LAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVz
M2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlZBTElELCB0KTt9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBkZWZpbml0
aW9uOiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX2ludCAobWVkaXVtcCBpbnQgYSwgbWVkaXVtcCBp
bnQgYikgeyByZXR1cm4gYSA9PSBiID8gMS4wIDogMC4wOyB9JworICAgICAgICAgICAgfSx7Cisg
ICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsIHQpO30sCisgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQsIHQpO30KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgIGRlZmluaXRpb246ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfaXZlYzIgKG1l
ZGl1bXAgaXZlYzIgYSwgbWVkaXVtcCBpdmVjMiBiKSB7IHJldHVybiBhID09IGIgPyAxLjAgOiAw
LjA7IH0nCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICByZXF1aXJpbmdUeXBlczog
WworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMywgdCk7
fSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFw
aVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7
fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1
bXAgZmxvYXQgY29tcGFyZV9pdmVjMyAobWVkaXVtcCBpdmVjMyBhLCBtZWRpdW1wIGl2ZWMzIGIp
IHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAgICAgIH0seworICAgICAg
ICAgICAgICAgIHJlcXVpcmluZ1R5cGVzOiBbCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLklOVF9WRUM0LCB0KTt9LAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5JTlZBTElELCB0KTt9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICBkZWZpbml0aW9uOiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX2l2ZWM0IChtZWRpdW1w
IGl2ZWM0IGEsIG1lZGl1bXAgaXZlYzQgYikgeyByZXR1cm4gYSA9PSBiID8gMS4wIDogMC4wOyB9
JworICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3Rz
LmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgdCk7fSwKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRh
dGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQg
Y29tcGFyZV91aW50IChtZWRpdW1wIHVpbnQgYSwgbWVkaXVtcCB1aW50IGIpIHsgcmV0dXJuIGEg
PT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIHJl
cXVpcmluZ1R5cGVzOiBbCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4g
ZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LlVJTlRfVkVDMiwgdCk7fSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVy
biBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5WQUxJRCwgdCk7fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVm
aW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV91dmVjMiAobWVkaXVtcCB1dmVjMiBhLCBt
ZWRpdW1wIHV2ZWMyIGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAg
ICAgIH0seworICAgICAgICAgICAgICAgIHJlcXVpcmluZ1R5cGVzOiBbCisgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVx
dWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMywgdCk7fSwKKyAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBl
RXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFy
ZV91dmVjMyAobWVkaXVtcCB1dmVjMyBhLCBtZWRpdW1wIHV2ZWMzIGIpIHsgcmV0dXJuIGEgPT0g
YiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIHJlcXVp
cmluZ1R5cGVzOiBbCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMz
ZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlRfVkVDNCwgdCk7fSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBl
czNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5WQUxJRCwgdCk7fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5p
dGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFyZV91dmVjNCAobWVkaXVtcCB1dmVjNCBhLCBtZWRp
dW1wIHV2ZWM0IGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAgICAg
IH0seworICAgICAgICAgICAgICAgIHJlcXVpcmluZ1R5cGVzOiBbCisgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFs
cyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wsIHQpO30sCisgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQsIHQpO30KKyAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgIGRlZmluaXRpb246ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfYm9vbCAo
Ym9vbCBhLCBib29sIGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAg
ICAgIH0seworICAgICAgICAgICAgICAgIHJlcXVpcmluZ1R5cGVzOiBbCisgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVuaWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVx
dWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDMiwgdCk7fSwKKyAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3RzLmRhdGFUeXBl
RXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCwgdCk7fQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogJ21lZGl1bXAgZmxvYXQgY29tcGFy
ZV9idmVjMiAoYnZlYzIgYSwgYnZlYzIgYikgeyByZXR1cm4gYSA9PSBiID8gMS4wIDogMC4wOyB9
JworICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgcmVxdWlyaW5nVHlwZXM6IFsKKyAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odCkge3JldHVybiBlczNmVW5pZm9ybUFwaVRlc3Rz
LmRhdGFUeXBlRXF1YWxzKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzLCB0KTt9LAor
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlmb3JtQXBpVGVz
dHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlZBTElELCB0KTt9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBkZWZpbml0aW9uOiAnbWVkaXVtcCBm
bG9hdCBjb21wYXJlX2J2ZWMzIChidmVjMyBhLCBidmVjMyBiKSB7IHJldHVybiBhID09IGIgPyAx
LjAgOiAwLjA7IH0nCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICByZXF1aXJpbmdU
eXBlczogWworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7cmV0dXJuIGVzM2ZVbmlm
b3JtQXBpVGVzdHMuZGF0YVR5cGVFcXVhbHMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZF
QzQsIHQpO30sCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHtyZXR1cm4gZXMzZlVu
aWZvcm1BcGlUZXN0cy5kYXRhVHlwZUVxdWFscyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFM
SUQsIHQpO30KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGRlZmluaXRpb246
ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfYnZlYzQgKGJ2ZWM0IGEsIGJ2ZWM0IGIpIHsgcmV0dXJu
IGEgPT0gYiA/IDEuMCA6IDAuMDsgfScKKyAgICAgICAgICAgIH0KKyAgICAgICAgXTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0YVR5cGU+fSAqLyB2YXIgc2Ft
cGxlclR5cGVzID0gdGhpcy5tX3VuaWZvcm1Db2xsZWN0aW9uLmdldFNhbXBsZXJUeXBlcygpOwor
CisgICAgICAgIGZvciAodmFyIGNvbXBGdW5jTmR4ID0gMDsgY29tcEZ1bmNOZHggPCBjb21wYXJl
RnVuY3MubGVuZ3RoOyBjb21wRnVuY05keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuZGF0YVR5cGVQcmVkaWNhdGU+fSAqLyB2YXIgdHlwZVJl
cSA9IGNvbXBhcmVGdW5jc1tjb21wRnVuY05keF0ucmVxdWlyaW5nVHlwZXM7CisgICAgICAgICAg
ICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBjb250YWluc1R5cGVTYW1wbGVyID0gZmFsc2U7
CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2FtcGxlclR5cGVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBs
ZXIoc2FtcGxlclR5cGVzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2ds
dVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciByZXRUeXBlID0gZXMzZlVuaWZvcm1BcGlUZXN0
cy5nZXRTYW1wbGVyTG9va3VwUmV0dXJuVHlwZShzYW1wbGVyVHlwZXNbaV0pOworICAgICAgICAg
ICAgICAgICAgICBpZiAodHlwZVJlcVswXShyZXRUeXBlKSB8fCB0eXBlUmVxWzFdKHJldFR5cGUp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluc1R5cGVTYW1wbGVyID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udGFp
bnNUeXBlU2FtcGxlciB8fCB0aGlzLm1fdW5pZm9ybUNvbGxlY3Rpb24uY29udGFpbnNNYXRjaGlu
Z0Jhc2ljVHlwZSh0eXBlUmVxWzBdKSB8fCB0aGlzLm1fdW5pZm9ybUNvbGxlY3Rpb24uY29udGFp
bnNNYXRjaGluZ0Jhc2ljVHlwZSh0eXBlUmVxWzFdKSkKKyAgICAgICAgICAgICAgICBkc3QgKz0g
Y29tcGFyZUZ1bmNzW2NvbXBGdW5jTmR4XS5kZWZpbml0aW9uICsgJ1xuJzsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkc3QKKyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlm
b3JtfSB1bmlmb3JtCisgICAgICogQHJldHVybiB7c3RyaW5nfSBVc2VkIHRvIHdyaXRlIHRoZSBz
dHJpbmcgaW4gdGhlIG91dHB1dCBwYXJhbWV0ZXIKKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFw
aVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS53cml0ZVVuaWZvcm1Db21wYXJlRXhwciA9IGZ1
bmN0aW9uKGRzdCwgdW5pZm9ybSkgeworICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlU2FtcGxlcih1bmlmb3JtLnR5cGUpKQorICAgICAgICAgICAgZHN0ICs9ICdjb21wYXJlXycg
KyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShlczNmVW5pZm9ybUFwaVRlc3RzLmdldFNh
bXBsZXJMb29rdXBSZXR1cm5UeXBlKHVuaWZvcm0udHlwZSkpICsgJyh0ZXh0dXJlKCcgKyB1bmlm
b3JtLm5hbWUgKyAnLCB2ZWMnICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRTYW1wbGVyTnVtTG9v
a3VwRGltZW5zaW9ucyh1bmlmb3JtLnR5cGUpICsgJygwLjApKSc7IC8vV2ViR0wyLjAKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZHN0ICs9ICdjb21wYXJlXycgKyBnbHVTaGFkZXJVdGlsLmdl
dERhdGFUeXBlTmFtZSh1bmlmb3JtLnR5cGUpICsgJygnICsgdW5pZm9ybS5uYW1lOworCisgICAg
ICAgIGRzdCArPSAnLCAnICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5zaGFkZXJWYXJWYWx1ZVN0cih1
bmlmb3JtLmZpbmFsVmFsdWUpICsgJyknOworCisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkc3QKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtPn0gYmFzaWNVbmlmb3JtcworICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYWJsZU5hbWUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9
IFVzZWQgdG8gd3JpdGUgdGhlIHN0cmluZyBpbiB0aGUgb3V0cHV0IHBhcmFtZXRlcgorICAgICAq
LworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLndyaXRlVW5p
Zm9ybUNvbXBhcmlzb25zID0gZnVuY3Rpb24oZHN0LCBiYXNpY1VuaWZvcm1zLCB2YXJpYWJsZU5h
bWUpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNpY1VuaWZvcm1zLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNV
bmlmb3JtfSAqLyB2YXIgdW5pZiA9IGJhc2ljVW5pZm9ybXNbaV07CisKKyAgICAgICAgICAgIGlm
ICh1bmlmLmlzVXNlZEluU2hhZGVyKSB7CisgICAgICAgICAgICAgICAgZHN0ICs9ICdcdCcgKyB2
YXJpYWJsZU5hbWUgKyAnICo9ICc7CisgICAgICAgICAgICAgICAgZHN0ID0gdGhpcy53cml0ZVVu
aWZvcm1Db21wYXJlRXhwcihkc3QsIGJhc2ljVW5pZm9ybXNbaV0pOworICAgICAgICAgICAgICAg
IGRzdCArPSAnO1xuJzsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGRzdCAr
PSAnXHQvLyBVTlVTRUQ6ICcgKyBiYXNpY1VuaWZvcm1zW2ldLm5hbWUgKyAnXG4nOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybT59IGJhc2ljVW5pZm9y
bXMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUuZ2VuZXJhdGVWZXJ0ZXhTb3VyY2UgPSBmdW5jdGlv
bihiYXNpY1VuaWZvcm1zKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlz
VmVydGV4Q2FzZSA9IHRoaXMubV9jYXNlU2hhZGVyVHlwZSA9PSBlczNmVW5pZm9ybUFwaVRlc3Rz
LkNhc2VTaGFkZXJUeXBlLlZFUlRFWCB8fCB0aGlzLm1fY2FzZVNoYWRlclR5cGUgPT0gZXMzZlVu
aWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZS5CT1RIOworICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdmFyIHJlc3VsdCA9ICcnOworCisgICAgICAgIHJlc3VsdCArPSAnI3ZlcnNpb24g
MzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAgICdpbiBoaWdocCB2ZWM0IGFfcG9zaXRpb247
XG4nICsKKyAgICAgICAgICAgICAgICAgICdvdXQgbWVkaXVtcCBmbG9hdCB2X3Z0eE91dDtcbicg
KworICAgICAgICAgICAgICAgICAgJ1xuJzsKKworICAgICAgICBpZiAoaXNWZXJ0ZXhDYXNlKQor
ICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy53cml0ZVVuaWZvcm1EZWZpbml0aW9ucyhyZXN1bHQp
OworCisgICAgICAgIHJlc3VsdCArPSAnXG4nICsKKyAgICAgICAgICAgICAgICAgICd2b2lkIG1h
aW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAgICcge1xuJyArCisgICAgICAgICAgICAg
ICAgICAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICAg
JyB2X3Z0eE91dCA9IDEuMDtcbic7CisKKyAgICAgICAgaWYgKGlzVmVydGV4Q2FzZSkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRoaXMud3JpdGVVbmlmb3JtQ29tcGFyaXNvbnMocmVzdWx0LCBiYXNp
Y1VuaWZvcm1zLCAndl92dHhPdXQnKTsKKworICAgICAgICByZXN1bHQgKz0gJ31cbic7CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
cnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybT59IGJhc2ljVW5pZm9ybXMKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ2FzZS5wcm90b3R5cGUuZ2VuZXJhdGVGcmFnbWVudFNvdXJjZSA9IGZ1bmN0aW9uKGJh
c2ljVW5pZm9ybXMpIHsKKyAgICAgICAgLyoqQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0ZyYWdt
ZW50Q2FzZSA9IHRoaXMubV9jYXNlU2hhZGVyVHlwZSA9PSBlczNmVW5pZm9ybUFwaVRlc3RzLkNh
c2VTaGFkZXJUeXBlLkZSQUdNRU5UIHx8IHRoaXMubV9jYXNlU2hhZGVyVHlwZSA9PSBlczNmVW5p
Zm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlLkJPVEg7CisgICAgICAgIC8qKkB0eXBlIHtzdHJp
bmd9ICovIHZhciByZXN1bHQgPSAnJzsKKworICAgICAgICByZXN1bHQgKz0gJyN2ZXJzaW9uIDMw
MCBlc1xuJyArCisgICAgICAgICAgICAgICAgICAnaW4gbWVkaXVtcCBmbG9hdCB2X3Z0eE91dDtc
bicgKworICAgICAgICAgICAgICAgICAgJ1xuJzsKKworICAgICAgICBpZiAoaXNGcmFnbWVudENh
c2UpCisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLndyaXRlVW5pZm9ybURlZmluaXRpb25zKHJl
c3VsdCk7CisKKyAgICAgICAgcmVzdWx0ICs9ICdcbicgKworICAgICAgICAgICAgICAgICAgJ2xh
eW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4nICsK
KyAgICAgICAgICAgICAgICAgICdcbicgKworICAgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworICAgICAgICAgICAgICAgICAgJyB7XG4nICsKKyAgICAgICAgICAgICAgICAg
ICcgbWVkaXVtcCBmbG9hdCByZXN1bHQgPSB2X3Z0eE91dDtcbic7CisKKyAgICAgICAgaWYgKGlz
RnJhZ21lbnRDYXNlKQorICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy53cml0ZVVuaWZvcm1Db21w
YXJpc29ucyhyZXN1bHQsIGJhc2ljVW5pZm9ybXMsICdyZXN1bHQnKTsKKworICAgICAgICByZXN1
bHQgKz0gJyBkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4w
KTtcbicgKworICAgICAgICAgICAgICAgICAgJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3Rz
LlZhclZhbHVlfSB2YWx1ZQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9y
bUNhc2UucHJvdG90eXBlLnNldHVwVGV4dHVyZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAg
IC8vIFxub3RlIE5vIGhhbmRsaW5nIGZvciBzYW1wbGVycyBvdGhlciB0aGFuIDJEIG9yIGN1YmUu
CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuZ2V0U2FtcGxlckxvb2t1cFJldHVyblR5cGUodmFsdWUudHlwZSkgPT0gZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0LAorICAgICAgICAgICAgJ2VzM2ZVbmlmb3JtQXBpVGVz
dHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLnNldHVwVGV4dHVyZSAtIHNhbXBsZXIgcmV0dXJuIHR5
cGUgc2hvdWxkIGJlIHZlYzRmJywgZmFsc2UsIHRydWUKKyAgICAgICAgKTsKKworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHdpZHRoID0gMzI7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gMzI7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNvbG9yID0gdmFsdWUudmFsLnNhbXBsZXJWLmZpbGxDb2xvcjsKKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmVDdWJlfSAqLyB2YXIgcmVmVGV4dHVyZTsK
KyAgICAgICAgLyoqIEB0eXBlIHtnbHVUZXh0dXJlLlRleHR1cmVDdWJlfSAqLyB2YXIgdGV4dHVy
ZTsKKworICAgICAgICBpZiAodmFsdWUudHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNB
TVBMRVJfMkQpIHsKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbHVUZXh0dXJlLnRleHR1cmUyREZy
b21Gb3JtYXQoZ2wsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICAgICAgcmVmVGV4dHVyZSA9IHRleHR1cmUuZ2V0UmVmVGV4dHVyZSgpOworICAgICAg
ICAgICAgdGhpcy5tX3RleHR1cmVzMmQucHVzaCh0ZXh0dXJlKTsKKworICAgICAgICAgICAgcmVm
VGV4dHVyZS5hbGxvY0xldmVsKDApOworICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5m
aWxsV2l0aENvbG9yKHJlZlRleHR1cmUuZ2V0TGV2ZWwoMCksIGNvbG9yKTsKKworICAgICAgICAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgdmFsdWUudmFsLnNhbXBsZXJWLnVuaXQp
OworICAgICAgICAgICAgdGhpcy5tX2ZpbGxlZFRleHR1cmVVbml0cy5wdXNoKHZhbHVlLnZhbC5z
YW1wbGVyVi51bml0KTsKKyAgICAgICAgICAgIHRleHR1cmUudXBsb2FkKCk7CisgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNM
QU1QX1RPX0VER0UpOworICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJF
U1QpOworICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlw
ZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJfQ1VCRSkgeworICAgICAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyh3aWR0aCA9PSBoZWlnaHQsICdlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1DYXNlLnByb3RvdHlwZS5zZXR1cFRleHR1cmUgLSBub24gc3F1YXJlIHRleHR1cmUnLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHRleHR1cmUgPSBnbHVUZXh0dXJlLmN1YmVGcm9t
Rm9ybWF0KGdsLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB3aWR0aCk7CisgICAgICAgICAg
ICByZWZUZXh0dXJlID0gdGV4dHVyZS5nZXRSZWZUZXh0dXJlKCk7CisgICAgICAgICAgICB0aGlz
Lm1fdGV4dHVyZXNDdWJlLnB1c2godGV4dHVyZSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGZh
Y2UgaW4gdGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgICAgIHJlZlRleHR1cmUu
YWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlW2ZhY2VdLCAwKTsKKyAgICAgICAgICAgICAg
ICBlczNmVW5pZm9ybUFwaVRlc3RzLmZpbGxXaXRoQ29sb3IocmVmVGV4dHVyZS5nZXRMZXZlbEZh
Y2UoMCwgdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXSksIGNvbG9yKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgdmFsdWUudmFsLnNh
bXBsZXJWLnVuaXQpOworICAgICAgICAgICAgdGhpcy5tX2ZpbGxlZFRleHR1cmVVbml0cy5wdXNo
KHZhbHVlLnZhbC5zYW1wbGVyVi51bml0KTsKKyAgICAgICAgICAgIHRleHR1cmUudXBsb2FkKCk7
CisgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV9DVUJFX01BUCwgZ2wuVEVY
VFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFX0NVQkVfTUFQLCBn
bC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICAgICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNm
VW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5zZXR1cFRleHR1cmUgLSBJbnZh
bGlkIHNhbXBsZXIgdHlwZScpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0w+fSBiYXNpY1VuaWZv
cm1SZXBvcnRzRHN0CisgICAgICogQHBhcmFtIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJh
c2ljVW5pZm9ybVJlcG9ydFJlZj59IGJhc2ljVW5pZm9ybVJlcG9ydHNSZWYKKyAgICAgKiBAcGFy
YW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbUdMCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5nZXRB
Y3RpdmVVbmlmb3Jtc09uZUJ5T25lID0gZnVuY3Rpb24oYmFzaWNVbmlmb3JtUmVwb3J0c0RzdCwg
YmFzaWNVbmlmb3JtUmVwb3J0c1JlZiwgcHJvZ3JhbUdMKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
V2ViR0xQcm9ncmFtfSAqLyB2YXIgbnVtQWN0aXZlVW5pZm9ybXM7CisgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdmFyIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgICAgbnVtQWN0aXZlVW5p
Zm9ybXMgPSAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbUdMLCBnbC5BQ1RJVkVfVU5JRk9STVMpKTsKKyAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJy8vIE51bWJlciBvZiBhY3RpdmUgdW5pZm9ybXMgcmVwb3J0ZWQ6ICcgKyBudW1B
Y3RpdmVVbmlmb3Jtcyk7CisKKyAgICAgICAgZm9yICh2YXIgdW5pZk5keCA9IDA7IHVuaWZOZHgg
PCBudW1BY3RpdmVVbmlmb3JtczsgdW5pZk5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKEdMaW50KSovIHZhciByZXBvcnRlZFNpemUgPSAtMTsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAoR0xlbnVtKSovIHZhciByZXBvcnRlZFR5cGVHTCA9IGdsLk5PTkU7
CisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBy
ZXBvcnRlZFR5cGU7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHJlcG9y
dGVkTmFtZVN0cjsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xBY3RpdmVJbmZvfSAqLyB2
YXIgYWN0aXZlSW5mbzsKKworICAgICAgICAgICBhY3RpdmVJbmZvID0gZ2wuZ2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtR0wsIHVuaWZOZHgpOworCisgICAgICAgICAgICByZXBvcnRlZE5hbWVTdHIg
PSBhY3RpdmVJbmZvLm5hbWU7CisgICAgICAgICAgICByZXBvcnRlZFR5cGVHTCA9IGFjdGl2ZUlu
Zm8udHlwZTsKKyAgICAgICAgICAgIHJlcG9ydGVkU2l6ZSA9IGFjdGl2ZUluZm8uc2l6ZTsKKwor
ICAgICAgICAgICAgcmVwb3J0ZWRUeXBlID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZUZyb21H
TFR5cGUocmVwb3J0ZWRUeXBlR0wpOworCisgICAgICAgICAgICBjaGVja01lc3NhZ2UocmVwb3J0
ZWRUeXBlICE9PSB1bmRlZmluZWQsICdJbnZhbGlkIHVuaWZvcm0gdHlwZScpOworCisgICAgICAg
ICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gR290IG5hbWUgPSAnICsgcmVwb3J0ZWROYW1l
U3RyICsgJywgc2l6ZSA9ICcgKyByZXBvcnRlZFNpemUgKyAnLCB0eXBlID0gJyArIGdsdVNoYWRl
clV0aWwuZ2V0RGF0YVR5cGVOYW1lKHJlcG9ydGVkVHlwZSkpOworCisgICAgICAgICAgICAvLyBJ
Z25vcmUgYnVpbHQtaW4gdW5pZm9ybXMuCisgICAgICAgICAgICBpZiAocmVwb3J0ZWROYW1lU3Ry
LmluZGV4T2YoJ2dsXycpID09IC0xKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciByZWZlcmVuY2VOZHg7CisgICAgICAgICAgICAgICAgZm9yIChyZWZlcmVuY2VO
ZHggPSAwOyByZWZlcmVuY2VOZHggPCBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLmxlbmd0aDsgcmVm
ZXJlbmNlTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2ljVW5pZm9ybVJlcG9y
dHNSZWZbcmVmZXJlbmNlTmR4XS5uYW1lID09IHJlcG9ydGVkTmFtZVN0cikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChyZWZlcmVuY2VOZHggPj0gYmFzaWNVbmlmb3JtUmVwb3J0c1JlZi5sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IGludmFs
aWQgbm9uLWJ1aWx0LWluIHVuaWZvcm0gbmFtZSByZXBvcnRlZCcpOworICAgICAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybVJl
cG9ydFJlZn0gKi8gdmFyIHJlZmVyZW5jZSA9IGJhc2ljVW5pZm9ybVJlcG9ydHNSZWZbcmVmZXJl
bmNlTmR4XTsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLnR5cGUgIT09IHVuZGVmaW5lZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlw
ZS5nZXRBY3RpdmVVbmlmb3Jtc09uZUJ5T25lIC0gdHlwZSBpcyB1bmRlZmluZWQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB0cnVlCisg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoCisgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UubWluU2l6ZSA+PSAxIHx8IChy
ZWZlcmVuY2UubWluU2l6ZSA9PSAwICYmICFyZWZlcmVuY2UuaXNVc2VkSW5TaGFkZXIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJv
dG90eXBlLmdldEFjdGl2ZVVuaWZvcm1zT25lQnlPbmUgLSB1bmlmb3JtIG1pbiBzaXplIGRvZXMg
bm90IG1hdGNoIHVzYWdlIGluIHNoYWRlcicsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRydWUKKyAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZS5taW5TaXplIDw9IHJlZmVyZW5jZS5tYXhTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBl
LmdldEFjdGl2ZVVuaWZvcm1zT25lQnlPbmUgLSB1bmlmb3JtIG1pbiBzaXplIGJpZ2dlciB0aGFu
IG1heCBzaXplJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAg
ICAgICAgIGlmIChlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybVJlcG9ydEdMLmZpbmRX
aXRoTmFtZShiYXNpY1VuaWZvcm1SZXBvcnRzRHN0LCByZXBvcnRlZE5hbWVTdHIpICE9PSBudWxs
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJ
TFVSRTogc2FtZSB1bmlmb3JtIG5hbWUgcmVwb3J0ZWQgdHdpY2UnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGJhc2ljVW5pZm9ybVJlcG9ydHNEc3QucHVzaChuZXcgZXMzZlVuaWZv
cm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTChyZXBvcnRlZE5hbWVTdHIsIHJlcG9ydGVk
TmFtZVN0ci5sZW5ndGgsIHJlcG9ydGVkU2l6ZSwgcmVwb3J0ZWRUeXBlLCB1bmlmTmR4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydGVkVHlwZSAhPSByZWZlcmVuY2UudHlwZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxV
UkU6IHdyb25nIHR5cGUgcmVwb3J0ZWQsIHNob3VsZCBiZSAnICsgZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZU5hbWUocmVmZXJlbmNlLnR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAocmVwb3J0ZWRTaXplIDwgcmVmZXJlbmNlLm1pblNpemUgfHwgcmVwb3J0ZWRTaXplID4g
cmVmZXJlbmNlLm1heFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCcvLyBGQUlMVVJFOiB3cm9uZyBzaXplIHJlcG9ydGVkLCBzaG91bGQgYmUgJyAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZmVyZW5jZS5taW5TaXplID09IHJlZmVy
ZW5jZS5tYXhTaXplID8gcmVmZXJlbmNlLm1pblNpemUgOiAnaW4gdGhlIHJhbmdlIFsnICsgcmVm
ZXJlbmNlLm1pblNpemUgKyAnLCAnICsgcmVmZXJlbmNlLm1heFNpemUgKyAnXScpKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlm
b3JtUmVwb3J0UmVmfSAqLyB2YXIgZXhwZWN0ZWQgPSBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmW2ld
OworICAgICAgICAgICAgaWYgKGV4cGVjdGVkLmlzVXNlZEluU2hhZGVyICYmIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0wuZmluZFdpdGhOYW1lKGJhc2ljVW5pZm9ybVJl
cG9ydHNEc3QsIGV4cGVjdGVkLm5hbWUpID09PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IHVuaWZvcm0gd2l0aCBuYW1lICcgKyBleHBl
Y3RlZC5uYW1lICsgJyB3YXMgbm90IHJlcG9ydGVkIGJ5IEdMJyk7CisgICAgICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHN1Y2Nlc3M7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMz
ZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTD59IGJhc2ljVW5pZm9ybVJlcG9y
dHNEc3QKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlm
b3JtUmVwb3J0UmVmPn0gYmFzaWNVbmlmb3JtUmVwb3J0c1JlZgorICAgICAqIEBwYXJhbSB7V2Vi
R0xQcm9ncmFtfSBwcm9ncmFtR0wKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwor
ICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmdldEFjdGl2ZVVu
aWZvcm1zID0gZnVuY3Rpb24oYmFzaWNVbmlmb3JtUmVwb3J0c0RzdCwgYmFzaWNVbmlmb3JtUmVw
b3J0c1JlZiwgcHJvZ3JhbUdMKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0g
Ki8gdmFyIHF1ZXJ5TmFtZXMgPSBuZXcgQXJyYXkoYmFzaWNVbmlmb3JtUmVwb3J0c1JlZi5sZW5n
dGgpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciBxdWVyeU5hbWVz
QyA9IG5ldyBBcnJheShiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLmxlbmd0aCk7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKEdMdWludCkgKi8gdmFyIHVuaWZvcm1JbmRpY2VzID0g
bmV3IEFycmF5KGJhc2ljVW5pZm9ybVJlcG9ydHNSZWYubGVuZ3RoKTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdmFsaWRVbmlmb3JtSW5kaWNlcyA9IFtdOyAvLyBU
aGlzIHNoYWxsIGhhdmUgdGhlIHNhbWUgY29udGVudHMsIGFuZCBpbiBzYW1lIG9yZGVyLCBhcyB1
bmlmb3JtSW5kaWNlcywgYnV0IHdpdGggZ2wuSU5WQUxJRF9JTkRFWCBlbnRyaWVzIHJlbW92ZWQu
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHN1Y2Nlc3MgPSB0cnVlOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzaWNVbmlmb3JtUmVwb3J0c1JlZi5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBuYW1lID0gYmFz
aWNVbmlmb3JtUmVwb3J0c1JlZltpXS5uYW1lOworICAgICAgICAgICAgcXVlcnlOYW1lc1tpXSA9
IHRoaXMubV9mZWF0dXJlcy5BUlJBWV9GSVJTVF9FTEVNX05BTUVfTk9fSU5ERVggJiYgbmFtZVtu
YW1lLmxlbmd0aCAtIDFdID09ICddJyA/IGVzM2ZVbmlmb3JtQXBpVGVzdHMuYmVmb3JlTGFzdChu
YW1lLCAnWycpIDogbmFtZTsKKyAgICAgICAgICAgIHF1ZXJ5TmFtZXNDW2ldID0gcXVlcnlOYW1l
c1tpXTsKKyAgICAgICAgfQorCisgICAgICAgdW5pZm9ybUluZGljZXMgPSBnbC5nZXRVbmlmb3Jt
SW5kaWNlcyhwcm9ncmFtR0wsIHF1ZXJ5TmFtZXNDKTsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVuaWZvcm1JbmRpY2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodW5p
Zm9ybUluZGljZXNbaV0gIT0gZ2wuSU5WQUxJRF9JTkRFWCkKKyAgICAgICAgICAgICAgICB2YWxp
ZFVuaWZvcm1JbmRpY2VzLnB1c2godW5pZm9ybUluZGljZXNbaV0pOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWYgKGJhc2ljVW5pZm9ybVJlcG9ydHNSZWZbaV0uaXNVc2Vk
SW5TaGFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8v
IEZBSUxVUkU6IHVuaWZvcm0gd2l0aCBuYW1lICcgKyBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmW2ld
Lm5hbWUgKyAnIHJlY2VpdmVkIGdsLklOVkFMSURfSU5ERVgnKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh2YWxpZFVuaWZvcm1JbmRpY2VzLmxlbmd0aCA+IDApIHsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIHVuaWZvcm1OYW1l
QnVmID0gbmV3IEFycmF5KHZhbGlkVW5pZm9ybUluZGljZXMubGVuZ3RoKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKEdMaW50KSAqLyB2YXIgdW5pZm9ybVNpemVCdWYg
PSBuZXcgQXJyYXkodmFsaWRVbmlmb3JtSW5kaWNlcy5sZW5ndGgpOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAoR0xpbnQpICovIHZhciB1bmlmb3JtVHlwZUJ1ZiA9IG5l
dyBBcnJheSh2YWxpZFVuaWZvcm1JbmRpY2VzLmxlbmd0aCk7CisKKyAgICAgICAgICAgdW5pZm9y
bVNpemVCdWYgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtR0wsIHZhbGlkVW5pZm9ybUlu
ZGljZXMsIGdsLlVOSUZPUk1fU0laRSk7CisgICAgICAgICAgIHVuaWZvcm1UeXBlQnVmID0gZ2wu
Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbUdMLCB2YWxpZFVuaWZvcm1JbmRpY2VzLCBnbC5VTklG
T1JNX1RZUEUpOworCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZhbGlk
TmR4ID0gLTE7IC8vIEtlZXBzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4IHRvIHZhbGlkVW5pZm9y
bUluZGljZXMgd2hpbGUgdW5pZk5keCBpcyB0aGUgaW5kZXggdG8gdW5pZm9ybUluZGljZXMuCisg
ICAgICAgICAgICBmb3IgKHZhciB1bmlmTmR4ID0gMDsgdW5pZk5keCA8IHVuaWZvcm1JbmRpY2Vz
Lmxlbmd0aDsgdW5pZk5keCsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuaWZvcm1JbmRpY2Vz
W3VuaWZOZHhdID09IGdsLklOVkFMSURfSU5ERVgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgdmFsaWROZHgrKzsKKworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWZ9ICovIHZh
ciByZWZlcmVuY2UgPSBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmW3VuaWZOZHhdOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVwb3J0ZWRJbmRleCA9IHZhbGlkVW5p
Zm9ybUluZGljZXNbdmFsaWROZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgcmVwb3J0ZWROYW1lTGVuZ3RoID0gcmVmZXJlbmNlLm5hbWUubGVuZ3RoOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmVwb3J0ZWRTaXplID0gdW5p
Zm9ybVNpemVCdWZbdmFsaWROZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIHJlcG9ydGVkVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVGcm9tR0xUeXBlKHVuaWZvcm1UeXBlQnVmW3ZhbGlkTmR4XSk7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciByZXBvcnRlZE5hbWVTdHIgPSByZWZlcmVu
Y2UubmFtZTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBHb3Qg
bmFtZSBzaXplID0gJyArIHJlcG9ydGVkU2l6ZSArCisgICAgICAgICAgICAgICAgICAgICcsIHR5
cGUgPSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUocmVwb3J0ZWRUeXBlKSArCisg
ICAgICAgICAgICAgICAgICAgICcgZm9yIHRoZSB1bmlmb3JtIGF0IGluZGV4ICcgKyByZXBvcnRl
ZEluZGV4ICsgJyAoJyArIHJlZmVyZW5jZS5uYW1lICsgJyknKTsKKworICAgICAgICAgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS50eXBlICE9
PSB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1DYXNlLnByb3RvdHlwZS5nZXRBY3RpdmVVbmlmb3JtcyAtIHR5cGUgaXMgdW5kZWZpbmVk
JywKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHRydWUK
KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisg
ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5taW5TaXplID49IDEgfHwgKHJlZmVyZW5jZS5t
aW5TaXplID09IDAgJiYgIXJlZmVyZW5jZS5pc1VzZWRJblNoYWRlciksCisgICAgICAgICAgICAg
ICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5nZXRBY3Rp
dmVVbmlmb3JtcyAtIHVuaWZvcm0gbWluIHNpemUgZG9lcyBub3QgbWF0Y2ggdXNhZ2UgaW4gc2hh
ZGVyJywKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHRy
dWUKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5taW5TaXplIDw9IHJlZmVyZW5jZS5tYXhT
aXplLAorICAgICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2Fz
ZS5wcm90b3R5cGUuZ2V0QWN0aXZlVW5pZm9ybXMgLSB1bmlmb3JtIG1pbiBzaXplIGJpZ2dlciB0
aGFuIG1heCBzaXplJywKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgIHRydWUKKyAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgaWYgKGVz
M2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0wuZmluZFdpdGhOYW1lKGJhc2lj
VW5pZm9ybVJlcG9ydHNEc3QsIHJlcG9ydGVkTmFtZVN0cikgIT09IG51bGwpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IHNhbWUgdW5pZm9y
bSBuYW1lIHJlcG9ydGVkIHR3aWNlJyk7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYmFzaWNVbmlmb3JtUmVw
b3J0c0RzdC5wdXNoKG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybVJlcG9ydEdM
KHJlZmVyZW5jZS5uYW1lLCByZXBvcnRlZE5hbWVMZW5ndGgsIHJlcG9ydGVkU2l6ZSwgcmVwb3J0
ZWRUeXBlLCByZXBvcnRlZEluZGV4KSk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVwb3J0ZWRU
eXBlICE9IHJlZmVyZW5jZS50eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCcvLyBGQUlMVVJFOiB3cm9uZyB0eXBlIHJlcG9ydGVkLCBzaG91bGQgYmUgJyAr
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHJlZmVyZW5jZS50eXBlKSk7CisgICAgICAg
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAocmVwb3J0ZWRTaXplIDwgcmVmZXJlbmNlLm1pblNpemUgfHwgcmVwb3J0
ZWRTaXplID4gcmVmZXJlbmNlLm1heFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IHdyb25nIHNpemUgcmVwb3J0ZWQsIHNob3VsZCBi
ZSAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIChyZWZlcmVuY2UubWluU2l6ZSA9PSByZWZl
cmVuY2UubWF4U2l6ZSA/IHJlZmVyZW5jZS5taW5TaXplIDogJ2luIHRoZSByYW5nZSBbJyArIHJl
ZmVyZW5jZS5taW5TaXplICsgJywgJyArIHJlZmVyZW5jZS5tYXhTaXplICsgJ10nKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFz
aWNVbmlmb3JtUmVwb3J0R0w+fSB1bmlmb3JtUmVzdWx0cworICAgICAqIEBwYXJhbSB7QXJyYXk8
ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTD59IHVuaWZvcm1zUmVzdWx0
cworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUudW5pZm9ybVZzVW5pZm9ybXNDb21wYXJpc29uID0g
ZnVuY3Rpb24odW5pZm9ybVJlc3VsdHMsIHVuaWZvcm1zUmVzdWx0cykgeworICAgICAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgLyoqIEB0eXBl
IHtlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybVJlcG9ydEdMfSAqLyB2YXIgdW5pZm9y
bXNSZXN1bHQ7CisKKyAgICAgICAgZm9yICh2YXIgdW5pZm9ybVJlc3VsdE5keCA9IDA7IHVuaWZv
cm1SZXN1bHROZHggPCB1bmlmb3JtUmVzdWx0cy5sZW5ndGg7IHVuaWZvcm1SZXN1bHROZHgrKykg
eworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9y
bVJlcG9ydEdMfSAqLyB2YXIgdW5pZm9ybVJlc3VsdCA9IHVuaWZvcm1SZXN1bHRzW3VuaWZvcm1S
ZXN1bHROZHhdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB1bmlmb3Jt
TmFtZSA9IHVuaWZvcm1SZXN1bHQubmFtZTsKKyAgICAgICAgICAgIHVuaWZvcm1zUmVzdWx0ID0g
ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRHTC5maW5kV2l0aE5hbWUodW5p
Zm9ybXNSZXN1bHRzLCB1bmlmb3JtTmFtZSk7CisKKyAgICAgICAgICAgIGlmICh1bmlmb3Jtc1Jl
c3VsdCAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcv
LyBDaGVja2luZyB1bmlmb3JtICcgKyB1bmlmb3JtTmFtZSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAodW5pZm9ybVJlc3VsdC5pbmRleCAhPSB1bmlmb3Jtc1Jlc3VsdC5pbmRleCkgeworICAgICAg
ICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJTFVSRTogZ2xHZXRBY3Rp
dmVVbmlmb3JtKCkgYW5kIGdsR2V0VW5pZm9ybUluZGljZXMoKSBnYXZlIGRpZmZlcmVudCBpbmRp
Y2VzIGZvciB1bmlmb3JtICcgKyB1bmlmb3JtTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHVu
aWZvcm1SZXN1bHQubmFtZUxlbmd0aCAhPSB1bmlmb3Jtc1Jlc3VsdC5uYW1lTGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcvLyBGQUlMVVJFOiBnbEdl
dEFjdGl2ZVVuaWZvcm0oKSBhbmQgZ2xHZXRBY3RpdmVVbmlmb3JtcygpIGdhdmUgaW5jb21wYXRp
YmxlIG5hbWUgbGVuZ3RocyBmb3IgdW5pZm9ybSAnICsgdW5pZm9ybU5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmICh1bmlmb3JtUmVzdWx0LnNpemUgIT0gdW5pZm9ybXNSZXN1bHQuc2l6ZSkgewor
ICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJTFVSRTogZ2xH
ZXRBY3RpdmVVbmlmb3JtKCkgYW5kIGdsR2V0QWN0aXZlVW5pZm9ybXMoKSBnYXZlIGRpZmZlcmVu
dCBzaXplcyBmb3IgdW5pZm9ybSAnICsgdW5pZm9ybU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
ICh1bmlmb3JtUmVzdWx0LnR5cGUgIT0gdW5pZm9ybXNSZXN1bHQudHlwZSkgeworICAgICAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJTFVSRTogZ2xHZXRBY3RpdmVV
bmlmb3JtKCkgYW5kIGdsR2V0QWN0aXZlVW5pZm9ybXMoKSBnYXZlIGRpZmZlcmVudCB0eXBlcyBm
b3IgdW5pZm9ybSAnICsgdW5pZm9ybU5hbWUpOworICAgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJTFVSRTogdW5pZm9ybSAnICsg
dW5pZm9ybU5hbWUgKyAnIHdhcyByZXBvcnRlZCBhY3RpdmUgYnkgZ2xHZXRBY3RpdmVVbmlmb3Jt
KCkgYnV0IG5vdCBieSBnbEdldFVuaWZvcm1JbmRpY2VzKCknKTsKKyAgICAgICAgICAgICAgICBz
dWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KHZhciB1bmlmb3Jtc1Jlc3VsdE5keCA9IDA7IHVuaWZvcm1zUmVzdWx0TmR4IDwgdW5pZm9ybXNS
ZXN1bHRzLmxlbmd0aDsgdW5pZm9ybXNSZXN1bHROZHgrKykgeworICAgICAgICAgICAgdW5pZm9y
bXNSZXN1bHQgPSB1bmlmb3Jtc1Jlc3VsdHNbdW5pZm9ybXNSZXN1bHROZHhdOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB1bmlmb3Jtc05hbWUgPSB1bmlmb3Jtc1Jlc3Vs
dC5uYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2lj
VW5pZm9ybVJlcG9ydEdMfSAqLyB2YXIgdW5pZm9ybXNSZXN1bHRJdCA9IGVzM2ZVbmlmb3JtQXBp
VGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0wuZmluZFdpdGhOYW1lKHVuaWZvcm1zUmVzdWx0cywg
dW5pZm9ybXNOYW1lKTsKKworICAgICAgICAgICAgaWYgKHVuaWZvcm1zUmVzdWx0SXQgPT09IG51
bGwpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRkFJTFVSRTog
dW5pZm9ybSAnICsgdW5pZm9ybXNOYW1lICsgJyB3YXMgcmVwb3J0ZWQgYWN0aXZlIGJ5IGdsR2V0
VW5pZm9ybUluZGljZXMoKSBidXQgbm90IGJ5IGdsR2V0QWN0aXZlVW5pZm9ybSgpJyk7CisgICAg
ICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZT59IHZhbHVlc0RzdAorICAgICAq
IEBwYXJhbSB7QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm0+fSBiYXNpY1Vu
aWZvcm1zCisgICAgICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW1HTAorICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3Jt
Q2FzZS5wcm90b3R5cGUuZ2V0VW5pZm9ybXMgPSBmdW5jdGlvbih2YWx1ZXNEc3QsIGJhc2ljVW5p
Zm9ybXMsIHByb2dyYW1HTCkgeworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBz
dWNjZXNzID0gdHJ1ZTsKKworICAgICAgICBmb3IgKHZhciB1bmlmTmR4ID0gMDsgdW5pZk5keCA8
IGJhc2ljVW5pZm9ybXMubGVuZ3RoOyB1bmlmTmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm19ICovIHZhciB1bmlmb3JtID0gYmFz
aWNVbmlmb3Jtc1t1bmlmTmR4XTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2
YXIgcXVlcnlOYW1lID0gdGhpcy5tX2ZlYXR1cmVzLkFSUkFZX0ZJUlNUX0VMRU1fTkFNRV9OT19J
TkRFWCAmJiB1bmlmb3JtLmVsZW1OZHggPT0gMCA/IGVzM2ZVbmlmb3JtQXBpVGVzdHMuYmVmb3Jl
TGFzdCh1bmlmb3JtLm5hbWUsICdbJykgOiB1bmlmb3JtLm5hbWU7CisgICAgICAgICAgICAvKiog
QHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgbG9jYXRpb24gPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbUdMLCBxdWVyeU5hbWUpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNp
emUodW5pZm9ybS50eXBlKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlU
ZXN0cy5WYXJWYWx1ZX0gKi8gdmFyIHZhbHVlID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFy
VmFsdWUoKTsKKworICAgICAgICAgICAgaWYgKCFsb2NhdGlvbikgeworICAgICAgICAgICAgICAg
IHZhbHVlLnR5cGUgPSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQ7CisgICAgICAgICAg
ICAgICAgdmFsdWVzRHN0LnB1c2godmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh1bmlmb3Jt
LmlzVXNlZEluU2hhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKCcvLyBGQUlMVVJFOiAnICsgdW5pZm9ybS5uYW1lICsgJyB3YXMgdXNlZCBpbiBzaGFkZXIs
IGJ1dCBoYXMgbG9jYXRpb24gLTEnKTsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFsdWUudHlwZSA9IHVuaWZvcm0udHlwZTsKKworICAg
ICAgICAgICAgdmFyIHJlc3VsdCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0VW5pZm9y
bShwcm9ncmFtR0wsIGxvY2F0aW9uKSk7CisKKyAgICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGls
LmlzRGF0YVR5cGVTYW1wbGVyKHVuaWZvcm0udHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1
ZS52YWwgPSBuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5TYW1wbGVyVigpOworICAgICAgICAgICAg
ICAgIHZhbHVlLnZhbC5zYW1wbGVyVi51bml0ID0gcmVzdWx0OworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgdmFsdWUudmFsID0gLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyAocmVzdWx0Lmxlbmd0aCA9PT0gdW5kZWZpbmVkID8gW3Jlc3VsdF0gOiByZXN1bHQpOworCisg
ICAgICAgICAgICB2YWx1ZXNEc3QucHVzaCh2YWx1ZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCcvLyBHb3QgJyArIHVuaWZvcm0ubmFtZSArICcgdmFsdWUgJyArIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuYXBpVmFyVmFsdWVTdHIodmFsdWUpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBzdWNjZXNzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWU+fSB2YWx1ZXMKKyAgICAgKiBAcGFyYW0g
e0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtPn0gYmFzaWNVbmlmb3Jtcwor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0
cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUuY2hlY2tVbmlmb3JtRGVmYXVsdFZhbHVlcyA9IGZ1bmN0
aW9uKHZhbHVlcywgYmFzaWNVbmlmb3JtcykgeworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBzdWNjZXNzID0gdHJ1ZTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAg
ICAgICAgICAgdmFsdWVzLmxlbmd0aCA9PSBiYXNpY1VuaWZvcm1zLmxlbmd0aCwKKyAgICAgICAg
ICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5jaGVja1VuaWZv
cm1EZWZhdWx0VmFsdWVzIC0gbGVuZ3RocyBkbyBub3QgbWF0Y2gnLAorICAgICAgICAgICAgZmFs
c2UsCisgICAgICAgICAgICB0cnVlCisgICAgICAgICk7CisKKyAgICAgICAgZm9yICh2YXIgdW5p
Zk5keCA9IDA7IHVuaWZOZHggPCBiYXNpY1VuaWZvcm1zLmxlbmd0aDsgdW5pZk5keCsrKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtfSAq
LyB2YXIgdW5pZm9ybSA9IGJhc2ljVW5pZm9ybXNbdW5pZk5keF07CisgICAgICAgICAgICAvKiog
QHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWV9ICovIHZhciB1bmlmVmFsdWUgPSB2
YWx1ZXNbdW5pZk5keF07CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZh
bFNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh1bmlmb3JtLnR5cGUp
OworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gQ2hlY2tpbmcgdW5pZm9y
bSAnICsgdW5pZm9ybS5uYW1lKTsKKworICAgICAgICAgICAgaWYgKHVuaWZWYWx1ZS50eXBlID09
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5WQUxJRCkgLy8gVGhpcyBoYXBwZW5zIHdoZW4gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24oKSByZXR1cm5lZCAtMS4KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgdmFyIENIRUNLX1VOSUZPUk0gPSBmdW5jdGlvbihaRVJPKSB7Cisg
ICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHZhbFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWZWYWx1
ZS52YWxbaV0gIT0gWkVSTykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCcvLyBGQUlMVVJFOiB1bmlmb3JtICcgKyB1bmlmb3JtLm5hbWUgKyAnIGhh
cyBub24temVybyBpbml0aWFsIHZhbHVlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoZmFsc2UpOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUZsb2F0T3JWZWMo
dW5pZm9ybS50eXBlKSB8fCBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgodW5pZm9ybS50
eXBlKSkKKyAgICAgICAgICAgICAgICBDSEVDS19VTklGT1JNKDAuMCk7CisgICAgICAgICAgICBl
bHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRPcklWZWModW5pZm9ybS50eXBlKSkK
KyAgICAgICAgICAgICAgICBDSEVDS19VTklGT1JNKDApOworICAgICAgICAgICAgZWxzZSBpZiAo
Z2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYyh1bmlmb3JtLnR5cGUpKQorICAgICAg
ICAgICAgICAgIENIRUNLX1VOSUZPUk0oMCk7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFk
ZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKHVuaWZvcm0udHlwZSkpCisgICAgICAgICAgICAg
ICAgQ0hFQ0tfVU5JRk9STShmYWxzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFkZXJV
dGlsLmlzRGF0YVR5cGVTYW1wbGVyKHVuaWZvcm0udHlwZSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodW5pZlZhbHVlLnZhbC5zYW1wbGVyVi51bml0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IHVuaWZvcm0gJyArIHVuaWZvcm0u
bmFtZSArICcgaGFzIG5vbi16ZXJvIGluaXRpYWwgdmFsdWUnKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ2FzZS5wcm90b3R5cGUuY2hlY2tVbmlmb3JtRGVmYXVsdFZhbHVlcyAtIGludmFsaWQg
dW5pZm9ybSB0eXBlJyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3Rz
LkJhc2ljVW5pZm9ybT59IGJhc2ljVW5pZm9ybXMKKyAgICAgKiBAcGFyYW0ge1dlYkdMUHJvZ3Jh
bX0gcHJvZ3JhbUdMCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAq
LworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmFzc2lnblVu
aWZvcm1zID0gZnVuY3Rpb24oYmFzaWNVbmlmb3JtcywgcHJvZ3JhbUdMLCBybmQpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdHJhbnNwb3NlID0gZmFsc2U7IC8vTm8gc3Vw
cG9ydCB0byB0cmFuc3Bvc2UgdW5pZm9ybSBtYXRyaWNlcyBpbiBXZWJHTCwgbXVzdCBhbHdheXMg
YmUgZmFsc2UuICh0aGlzLm1fZmVhdHVyZXMuTUFUUklYTU9ERV9ST1dNQUpPUikgIT0gMDsKKyAg
ICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAoR0xib29sZWFuKSAqLyB2YXIgdHJhbnNwb3NlR0wg
PSB0cmFuc3Bvc2U7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0g
Ki8gdmFyIGJvb2xBcGlUeXBlID0gdGhpcy5tX2ZlYXR1cmVzLkJPT0xFQU5BUElUWVBFX0lOVCA/
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9mZWF0dXJlcy5CT09MRUFOQVBJVFlQRV9VSU5U
ID8gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ7CisK
KyAgICAgICAgZm9yICh2YXIgdW5pZk5keCA9IDA7IHVuaWZOZHggPCBiYXNpY1VuaWZvcm1zLmxl
bmd0aDsgdW5pZk5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBp
VGVzdHMuQmFzaWNVbmlmb3JtfSAqLyB2YXIgdW5pZm9ybSA9IGJhc2ljVW5pZm9ybXNbdW5pZk5k
eF07CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0FycmF5TWVtYmVy
ID0gdW5pZm9ybS5lbGVtTmR4ID49IDA7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30g
Ki8gdmFyIHF1ZXJ5TmFtZSA9IHRoaXMubV9mZWF0dXJlcy5BUlJBWV9GSVJTVF9FTEVNX05BTUVf
Tk9fSU5ERVggJiYgdW5pZm9ybS5lbGVtTmR4ID09IDAgPyBlczNmVW5pZm9ybUFwaVRlc3RzLmJl
Zm9yZUxhc3QodW5pZm9ybS5uYW1lLCAnWycpIDogdW5pZm9ybS5uYW1lOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1WYWx1ZXNUb0Fzc2lnbiA9ICFpc0FycmF5TWVt
YmVyID8gMSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV9mZWF0dXJlcy5BUlJBWUFTU0lHTl9GVUxMID8gKHVuaWZvcm0uZWxl
bU5keCA9PSAwID8gdW5pZm9ybS5yb290U2l6ZSA6IDApIDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2ZlYXR1cmVzLkFSUkFZ
QVNTSUdOX0JMT0NLU19PRl9UV08gPyAodW5pZm9ybS5lbGVtTmR4ICUgMiA9PSAwID8gMiA6IDAp
IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogRGVmYXVsdDogYXNzaWduIGFycmF5IGVsZW1lbnRzIHNlcGFyYXRlbHkgKi8gMTsKKwor
ICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAgICBudW1WYWx1ZXNU
b0Fzc2lnbiA+PSAwLAorICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm1DYXNlLnByb3RvdHlwZS5hc3NpZ25Vbmlmb3JtcyAtIG51bWJlciBvZiB2YWx1ZXMgdG8gYXNz
aWduIG5vdCBhIHBvc2l0aXZlIGludGVnZXInLAorICAgICAgICAgICAgICAgIGZhbHNlLAorICAg
ICAgICAgICAgICAgIHRydWUKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBhc3NlcnRNc2dP
cHRpb25zKAorICAgICAgICAgICAgICAgIG51bVZhbHVlc1RvQXNzaWduID09IDEgfHwgaXNBcnJh
eU1lbWJlciwKKyAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2Fz
ZS5wcm90b3R5cGUuYXNzaWduVW5pZm9ybXMgLSBub3QgYW4gYXJyYXkgbWVtYmVyIGFuZCBudW1i
ZXIgb2YgdmFsdWVzIHRvIGFzc2lnbiBub3QgMScsCisgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgaWYgKG51
bVZhbHVlc1RvQXNzaWduID09IDApIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnLy8gZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtICcgKyB1bmlmb3JtLm5hbWUgKyAn
IGlzIGNvdmVyZWQgYnkgYW5vdGhlciBnbFVuaWZvcm0qdigpIGNhbGwgdG8gdGhlIHNhbWUgYXJy
YXknKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIGxvY2F0aW9uID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1HTCwgcXVlcnlOYW1lKTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdHlwZVNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlU2NhbGFyU2l6ZSh1bmlmb3JtLnR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgYXNzaWduQnlWYWx1ZSA9IHRoaXMubV9mZWF0dXJlcy5VTklGT1JNRlVO
Q19WQUxVRSAmJiAhZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHVuaWZvcm0udHlwZSkg
JiYgbnVtVmFsdWVzVG9Bc3NpZ24gPT0gMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYXJWYWx1ZT59ICovIHZhciB2YWx1ZXNUb0Fzc2lnbiA9IFtd
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYnVmZmVyOwor
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVZhbHVlc1RvQXNzaWduOyBpKysp
IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGN1ck5hbWUgPSBp
c0FycmF5TWVtYmVyID8gZXMzZlVuaWZvcm1BcGlUZXN0cy5iZWZvcmVMYXN0KHVuaWZvcm0ucm9v
dE5hbWUsICdbJykgKyAnWycgKyAodW5pZm9ybS5lbGVtTmR4ICsgaSkgKyAnXScgOiB1bmlmb3Jt
Lm5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlZh
clZhbHVlfSAqLyB2YXIgdW5pZlZhbHVlID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFs
dWUoKTsKKworICAgICAgICAgICAgICAgIGlmIChpc0FycmF5TWVtYmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm19ICov
IHZhciBlbGVtVW5pZiA9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtLmZpbmRXaXRo
TmFtZShiYXNpY1VuaWZvcm1zLCBjdXJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVs
ZW1VbmlmID09PSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIHVuaWZWYWx1ZSA9IGVsZW1VbmlmLmZpbmFsVmFsdWU7CisgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHVuaWZWYWx1ZSA9IHVuaWZvcm0u
ZmluYWxWYWx1ZTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlU
ZXN0cy5WYXJWYWx1ZX0gKi8gdmFyIGFwaVZhbHVlID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBl
Qm9vbE9yQlZlYyh1bmlmVmFsdWUudHlwZSkgPyBlczNmVW5pZm9ybUFwaVRlc3RzLmdldFJhbmRv
bUJvb2xSZXByZXNlbnRhdGlvbih1bmlmVmFsdWUsIGJvb2xBcGlUeXBlLCBybmQpIDoKKyAgICAg
ICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKHVuaWZWYWx1ZS50eXBl
KSA/IGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0U2FtcGxlclVuaXRWYWx1ZSh1bmlmVmFsdWUpIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmVmFsdWU7CisKKyAg
ICAgICAgICAgICAgICB2YWx1ZXNUb0Fzc2lnbi5wdXNoKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlw
ZU1hdHJpeChhcGlWYWx1ZS50eXBlKSAmJiB0cmFuc3Bvc2UgPyBlczNmVW5pZm9ybUFwaVRlc3Rz
LmdldFRyYW5zcG9zZU1hdHJpeChhcGlWYWx1ZSkgOiBhcGlWYWx1ZSk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZlYyh1bmlmb3JtLnR5cGUp
KQorICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gVXNpbmcgdHlw
ZSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoYm9vbEFwaVR5cGUpICsgJyB0byBz
ZXQgYm9vbGVhbiB2YWx1ZSAnICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5hcGlWYXJWYWx1ZVN0cih1
bmlmVmFsdWUpICsgJyBmb3IgJyArIGN1ck5hbWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBsZXIodW5pZm9ybS50eXBlKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIFRleHR1cmUgZm9yIHRoZSBzYW1w
bGVyIHVuaWZvcm0gJyArIGN1ck5hbWUgKyAnIHdpbGwgYmUgZmlsbGVkIHdpdGggY29sb3IgJyAr
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuYXBpVmFyVmFsdWVTdHIoZXMzZlVuaWZvcm1BcGlUZXN0cy5n
ZXRTYW1wbGVyRmlsbFZhbHVlKHVuaWZvcm0uZmluYWxWYWx1ZSkpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAgICB2YWx1ZXNU
b0Fzc2lnbi5sZW5ndGggPiAwLAorICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3Rz
LlVuaWZvcm1DYXNlLnByb3RvdHlwZS5hc3NpZ25Vbmlmb3JtcyAtIHZhbHVlcyBxdWFudGl0eSBs
ZXNzIHRoYW4gb25lJywKKyAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICB0
cnVlCisgICAgICAgICAgICApOworCisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0Rh
dGFUeXBlRmxvYXRPclZlYyh2YWx1ZXNUb0Fzc2lnblswXS50eXBlKSkgeworICAgICAgICAgICAg
ICAgIGlmIChhc3NpZ25CeVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlw
ZVNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogZ2wudW5pZm9ybTFmKGxv
Y2F0aW9uLCB2YWx1ZXNUb0Fzc2lnblswXS52YWxbMF0pOyBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjogZ2wudW5pZm9ybTJmKGxvY2F0aW9uLCB2YWx1ZXNUb0Fzc2lnblsw
XS52YWxbMF0sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFsxXSk7IGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOiBnbC51bmlmb3JtM2YobG9jYXRpb24sIHZhbHVlc1RvQXNzaWdu
WzBdLnZhbFswXSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzFdLCB2YWx1ZXNUb0Fzc2lnblswXS52
YWxbMl0pOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogZ2wudW5pZm9y
bTRmKGxvY2F0aW9uLCB2YWx1ZXNUb0Fzc2lnblswXS52YWxbMF0sIHZhbHVlc1RvQXNzaWduWzBd
LnZhbFsxXSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzJdLCB2YWx1ZXNUb0Fzc2lnblswXS52YWxb
M10pOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1DYXNlLnByb3RvdHlwZS5hc3NpZ25Vbmlmb3JtcyAtIEludmFsaWQgdHlwZSBzaXplJyk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBidWZmZXIgPSBuZXcgQXJyYXkodmFsdWVzVG9Bc3NpZ24ubGVuZ3RoICog
dHlwZVNpemUpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZl
ci5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IHZhbHVl
c1RvQXNzaWduW01hdGguZmxvb3IoaSAvIHR5cGVTaXplKV0udmFsW2kgJSB0eXBlU2l6ZV07CisK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlU2l6ZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOiBnbC51bmlmb3JtMWZ2KGxvY2F0aW9uLCBidWZmZXIpOyBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogZ2wudW5pZm9ybTJmdihsb2NhdGlvbiwg
YnVmZmVyKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IGdsLnVuaWZv
cm0zZnYobG9jYXRpb24sIGJ1ZmZlcik7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0OiBnbC51bmlmb3JtNGZ2KGxvY2F0aW9uLCBidWZmZXIpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZS5h
c3NpZ25Vbmlmb3JtcyAtIEludmFsaWQgdHlwZSBzaXplJyk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGdsdVNoYWRlclV0
aWwuaXNEYXRhVHlwZU1hdHJpeCh2YWx1ZXNUb0Fzc2lnblswXS50eXBlKSkgeworICAgICAgICAg
ICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAgICAgICFhc3NpZ25CeVZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2Fz
ZS5wcm90b3R5cGUuYXNzaWduVW5pZm9ybXMgLSBhc3NpZ25pbmcgYnkgdmFsdWUgaW4gbWF0cml4
IHR5cGUnLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZQorICAgICAgICAgICAgICAg
ICk7CisKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBuZXcgQXJyYXkodmFsdWVzVG9Bc3NpZ24u
bGVuZ3RoICogdHlwZVNpemUpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YnVmZmVyLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSB2YWx1
ZXNUb0Fzc2lnbltNYXRoLmZsb29yKGkgLyB0eXBlU2l6ZSldLnZhbFtpICUgdHlwZVNpemVdOwor
CisgICAgICAgICAgICAgICAgc3dpdGNoICh1bmlmb3JtLnR5cGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6IGdsLnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZUdMLCBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcikp
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDM6IGdsLnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZUdMLCBu
ZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcikpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDQ6IGdsLnVuaWZvcm1NYXRyaXg0ZnYo
bG9jYXRpb24sIHRyYW5zcG9zZUdMLCBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcikpOyBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01B
VDJYMzogZ2wudW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2VHTCwgbmV3IEZs
b2F0MzJBcnJheShidWZmZXIpKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDQ6IGdsLnVuaWZvcm1NYXRyaXgyeDRmdihs
b2NhdGlvbiwgdHJhbnNwb3NlR0wsIG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKSk7IGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
M1gyOiBnbC51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHRyYW5zcG9zZUdMLCBuZXcgRmxv
YXQzMkFycmF5KGJ1ZmZlcikpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogZ2wudW5pZm9ybU1hdHJpeDN4NGZ2KGxv
Y2F0aW9uLCB0cmFuc3Bvc2VHTCwgbmV3IEZsb2F0MzJBcnJheShidWZmZXIpKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0
WDI6IGdsLnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgdHJhbnNwb3NlR0wsIG5ldyBGbG9h
dDMyQXJyYXkoYnVmZmVyKSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgzOiBnbC51bmlmb3JtTWF0cml4NHgzZnYobG9j
YXRpb24sIHRyYW5zcG9zZUdMLCBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcikpOyBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUuYXNz
aWduVW5pZm9ybXMgLSBJbnZhbGlkIHVuaWZvcm0gdHlwZScpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50T3JJVmVj
KHZhbHVlc1RvQXNzaWduWzBdLnR5cGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFzc2lnbkJ5
VmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlU2l6ZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxOiBnbC51bmlmb3JtMWkobG9jYXRpb24sIHZhbHVlc1Rv
QXNzaWduWzBdLnZhbFswXSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAy
OiBnbC51bmlmb3JtMmkobG9jYXRpb24sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFswXSwgdmFsdWVz
VG9Bc3NpZ25bMF0udmFsWzFdKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDM6IGdsLnVuaWZvcm0zaShsb2NhdGlvbiwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzBdLCB2YWx1
ZXNUb0Fzc2lnblswXS52YWxbMV0sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFsyXSk7IGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBnbC51bmlmb3JtNGkobG9jYXRpb24sIHZh
bHVlc1RvQXNzaWduWzBdLnZhbFswXSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzFdLCB2YWx1ZXNU
b0Fzc2lnblswXS52YWxbMl0sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFszXSk7IGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90
eXBlLmFzc2lnblVuaWZvcm1zIC0gSW52YWxpZCB0eXBlIHNpemUnKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJ1
ZmZlciA9IG5ldyBBcnJheSh2YWx1ZXNUb0Fzc2lnbi5sZW5ndGggKiB0eXBlU2l6ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2ldID0gdmFsdWVzVG9Bc3NpZ25bTWF0aC5m
bG9vcihpIC8gdHlwZVNpemUpXS52YWxbaSAlIHR5cGVTaXplXTsKKworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHR5cGVTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6
IGdsLnVuaWZvcm0xaXYobG9jYXRpb24sIGJ1ZmZlcik7IGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOiBnbC51bmlmb3JtMml2KGxvY2F0aW9uLCBidWZmZXIpOyBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogZ2wudW5pZm9ybTNpdihsb2NhdGlvbiwg
YnVmZmVyKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IGdsLnVuaWZv
cm00aXYobG9jYXRpb24sIGJ1ZmZlcik7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Vz
M2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmFzc2lnblVuaWZvcm1zIC0g
SW52YWxpZCB0eXBlIHNpemUnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWlu
dE9yVVZlYyh2YWx1ZXNUb0Fzc2lnblswXS50eXBlKSkgeworICAgICAgICAgICAgICAgIGlmIChh
c3NpZ25CeVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZVNpemUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogZ2wudW5pZm9ybTF1aShsb2NhdGlvbiwg
dmFsdWVzVG9Bc3NpZ25bMF0udmFsWzBdKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6IGdsLnVuaWZvcm0ydWkobG9jYXRpb24sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFsw
XSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzFdKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6IGdsLnVuaWZvcm0zdWkobG9jYXRpb24sIHZhbHVlc1RvQXNzaWduWzBdLnZh
bFswXSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzFdLCB2YWx1ZXNUb0Fzc2lnblswXS52YWxbMl0p
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogZ2wudW5pZm9ybTR1aShs
b2NhdGlvbiwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzBdLCB2YWx1ZXNUb0Fzc2lnblswXS52YWxb
MV0sIHZhbHVlc1RvQXNzaWduWzBdLnZhbFsyXSwgdmFsdWVzVG9Bc3NpZ25bMF0udmFsWzNdKTsg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3Jt
Q2FzZS5wcm90b3R5cGUuYXNzaWduVW5pZm9ybXMgLSBJbnZhbGlkIHR5cGUgc2l6ZScpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyID0gbmV3IEFycmF5KHZhbHVlc1RvQXNzaWduLmxlbmd0aCAqIHR5cGVT
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXIubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSB2YWx1ZXNUb0Fz
c2lnbltNYXRoLmZsb29yKGkgLyB0eXBlU2l6ZSldLnZhbFtpICUgdHlwZVNpemVdOworCisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZVNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMTogZ2wudW5pZm9ybTF1aXYobG9jYXRpb24sIGJ1ZmZlcik7IGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBnbC51bmlmb3JtMnVpdihsb2NhdGlvbiwgYnVm
ZmVyKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IGdsLnVuaWZvcm0z
dWl2KGxvY2F0aW9uLCBidWZmZXIpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgNDogZ2wudW5pZm9ybTR1aXYobG9jYXRpb24sIGJ1ZmZlcik7IGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmFz
c2lnblVuaWZvcm1zIC0gSW52YWxpZCB0eXBlIHNpemUnKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRp
bC5pc0RhdGFUeXBlU2FtcGxlcih2YWx1ZXNUb0Fzc2lnblswXS50eXBlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhc3NpZ25CeVZhbHVlKQorICAgICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0x
aShsb2NhdGlvbiwgdW5pZm9ybS5maW5hbFZhbHVlLnZhbC5zYW1wbGVyVi51bml0KTsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovICh1bmlmb3JtLmZpbmFsVmFsdWUudmFsKTsKKyAgICAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtMWl2KGxvY2F0aW9uLCB1bml0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90eXBlLmFzc2lnblVuaWZvcm1z
IC0gSW52YWxpZCB1bmlmb3JtIHR5cGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWU+fSB2YWx1
ZXMKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3Jt
Pn0gYmFzaWNVbmlmb3JtcworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUuY29tcGFyZVVuaWZvcm1W
YWx1ZXMgPSBmdW5jdGlvbih2YWx1ZXMsIGJhc2ljVW5pZm9ybXMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgc3VjY2VzcyA9IHRydWU7CisKKyAgICAgICAgZm9yICh2YXIg
dW5pZk5keCA9IDA7IHVuaWZOZHggPCBiYXNpY1VuaWZvcm1zLmxlbmd0aDsgdW5pZk5keCsrKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3Jt
fSAqLyB2YXIgdW5pZm9ybSA9IGJhc2ljVW5pZm9ybXNbdW5pZk5keF07CisgICAgICAgICAgICAv
KiogQHR5cGUge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWV9ICovIHZhciB1bmlmVmFsdWUg
PSB2YWx1ZXNbdW5pZk5keF07CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCcv
LyBDaGVja2luZyB1bmlmb3JtICcgKyB1bmlmb3JtLm5hbWUpOworCisgICAgICAgICAgICBpZiAo
dW5pZlZhbHVlLnR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlZBTElEKSAvLyBUaGlz
IGhhcHBlbnMgd2hlbiBnbEdldFVuaWZvcm1Mb2NhdGlvbigpIHJldHVybmVkIC0xLgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoIWVzM2ZVbmlmb3JtQXBpVGVz
dHMuYXBpVmFyVmFsdWVFcXVhbHModW5pZlZhbHVlLCB1bmlmb3JtLmZpbmFsVmFsdWUpKSB7Cisg
ICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJy8vIEZBSUxVUkU6IHZhbHVlIG9i
dGFpbmVkIHdpdGggZ2xHZXRVbmlmb3JtKigpIGZvciB1bmlmb3JtICcgKyB1bmlmb3JtLm5hbWUg
KyAnIGRpZmZlcnMgZnJvbSB2YWx1ZSBzZXQgd2l0aCBnbFVuaWZvcm0qKCknKTsKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9OworCisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVt
YmVyfSAqLyBlczNmVW5pZm9ybUFwaVRlc3RzLlZJRVdQT1JUX1dJRFRIID0gMTI4OworICAgIC8q
KiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gZXMzZlVuaWZvcm1BcGlUZXN0cy5WSUVXUE9SVF9I
RUlHSFQgPSAxMjg7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuQmFzaWNVbmlmb3JtPn0gYmFzaWNVbmlmb3JtcworICAgICAqIEBwYXJhbSB7Z2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSBwcm9ncmFtCisgICAgICogQHBhcmFtIHtkZVJh
bmRvbS5SYW5kb219IHJuZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5wcm90b3R5cGUucmVuZGVyVGVzdCA9IGZ1
bmN0aW9uKGJhc2ljVW5pZm9ybXMsIHByb2dyYW0sIHJuZCkgeworICAgICAgICAvL2NvbnN0IHRj
dTo6UmVuZGVyVGFyZ2V0JiByZW5kZXJUYXJnZXQgPSBtX2NvbnRleHQuZ2V0UmVuZGVyVGFyZ2V0
KCk7CisgICAgICAgIC8qKiBAY29uc3QgKi8gdmFyIHZpZXdwb3J0VyA9IE1hdGgubWluKGdsLmNh
bnZhcy53aWR0aCwgZXMzZlVuaWZvcm1BcGlUZXN0cy5WSUVXUE9SVF9XSURUSCk7CisgICAgICAg
IC8qKiBAY29uc3QgKi8gdmFyIHZpZXdwb3J0SCA9IE1hdGgubWluKGdsLmNhbnZhcy5oZWlnaHQs
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVklFV1BPUlRfSEVJR0hUKTsKKyAgICAgICAgLyoqIEBjb25z
dCAqLyB2YXIgdmlld3BvcnRYID0gcm5kLmdldEludCgwLCBnbC5jYW52YXMud2lkdGggLSB2aWV3
cG9ydFcpOworICAgICAgICAvKiogQGNvbnN0ICovIHZhciB2aWV3cG9ydFkgPSBybmQuZ2V0SW50
KDAsIGdsLmNhbnZhcy5oZWlnaHQgLSB2aWV3cG9ydEgpOworICAgICAgICAvKiogQHR5cGUge3Rj
dVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkSW1nID0gbmV3IHRjdVN1cmZhY2UuU3Vy
ZmFjZSh2aWV3cG9ydFcsIHZpZXdwb3J0SCk7CisKKyAgICAgICAgLy8gQXNzZXJ0IHRoYXQgbm8g
dHdvIHNhbXBsZXJzIG9mIGRpZmZlcmVudCB0eXBlcyBoYXZlIHRoZSBzYW1lIHRleHR1cmUgdW5p
dCAtIHRoaXMgaXMgYW4gZXJyb3IgaW4gR0wuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YmFzaWNVbmlmb3Jtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0
aWwuaXNEYXRhVHlwZVNhbXBsZXIoYmFzaWNVbmlmb3Jtc1tpXS50eXBlKSkgeworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaTsgaisrKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTYW1wbGVyKGJhc2ljVW5pZm9ybXNbal0udHlw
ZSkgJiYgYmFzaWNVbmlmb3Jtc1tpXS50eXBlICE9IGJhc2ljVW5pZm9ybXNbal0udHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzaWNVbmlmb3Jtc1tpXS5maW5hbFZhbHVlLnZhbC5zYW1wbGVyVi51bml0
ICE9IGJhc2ljVW5pZm9ybXNbal0uZmluYWxWYWx1ZS52YWwuc2FtcGxlclYudW5pdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5w
cm90b3R5cGUucmVuZGVyVGVzdCAtIHNhbXBsZXIgdW5pdHMgaGF2ZSB0aGUgc2FtZSB0ZXh0dXJl
IHVuaXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cnVlCisgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzaWNVbmlmb3Jtcy5sZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNhbXBs
ZXIoYmFzaWNVbmlmb3Jtc1tpXS50eXBlKSAmJiB0aGlzLm1fZmlsbGVkVGV4dHVyZVVuaXRzLmlu
ZGV4T2YoYmFzaWNVbmlmb3Jtc1tpXS5maW5hbFZhbHVlLnZhbCkgPT0gLTEpIHsKKyAgICAgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnLy8gRmlsbGluZyB0ZXh0dXJlIGF0IHVuaXQg
JyArIGVzM2ZVbmlmb3JtQXBpVGVzdHMuYXBpVmFyVmFsdWVTdHIoYmFzaWNVbmlmb3Jtc1tpXS5m
aW5hbFZhbHVlKSArICcgd2l0aCBjb2xvciAnICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5zaGFkZXJW
YXJWYWx1ZVN0cihiYXNpY1VuaWZvcm1zW2ldLmZpbmFsVmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLnNldHVwVGV4dHVyZShiYXNpY1VuaWZvcm1zW2ldLmZpbmFsVmFsdWUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICBnbC52aWV3cG9ydCh2aWV3cG9ydFgsIHZpZXdw
b3J0WSwgdmlld3BvcnRXLCB2aWV3cG9ydEgpOworCisgICAgICAgIC8qKiBAdHlwZSB7RmxvYXQz
MkFycmF5fSAqLyB2YXIgcG9zaXRpb24gPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAg
IC0xLjAsIC0xLjAsIDAuMCwgMS4wLAorICAgICAgICAgICAgLTEuMCwgMS4wLCAwLjAsIDEuMCwK
KyAgICAgICAgICAgIDEuMCwgLTEuMCwgMC4wLCAxLjAsCisgICAgICAgICAgICAxLjAsIDEuMCwg
MC4wLCAxLjAKKyAgICAgICAgXSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50MTZBcnJheX0g
Ki8KKyAgICAgICAgdmFyIGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkoWzAsIDEsIDIsIDIsIDEs
IDNdKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBvc0xvYyA9IGdsLmdl
dEF0dHJpYkxvY2F0aW9uKHByb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9wb3NpdGlvbicpOworICAg
ICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NMb2MpOworCisgICAgICAgIHZhciBn
bF9wb3NpdGlvbl9idWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGdsX3Bvc2l0aW9uX2J1ZmZlcik7CisgICAgICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbiwgZ2wuU1RBVElDX0RSQVcpOworICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc0xvYywgNCwgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKKworICAgICAgICB2YXIgZ2xfaW5kZXhfYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGdsX2luZGV4
X2J1ZmZlcik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IGluZGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wu
VFJJQU5HTEVTLCBpbmRpY2VzLmxlbmd0aCwgZ2wuVU5TSUdORURfU0hPUlQsIDApOworCisgICAg
ICAgIHJlbmRlcmVkSW1nLnJlYWRWaWV3cG9ydChnbCwgW3ZpZXdwb3J0WCwgdmlld3BvcnRZLCB2
aWV3cG9ydFcsIHZpZXdwb3J0SF0pOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtRmFpbGVkUGl4ZWxzID0gMDsKKyAgICAgICAgdmFyIHdoaXRlUGl4ZWwgPSBuZXcgZ2x1
RHJhd1V0aWwuUGl4ZWwoWzI1NS4wLCAyNTUuMCwgMjU1LjAsIDI1NS4wXSk7CisgICAgICAgIGZv
ciAodmFyIHkgPSAwOyB5IDwgcmVuZGVyZWRJbWcuZ2V0SGVpZ2h0KCk7IHkrKykgeworICAgICAg
ICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByZW5kZXJlZEltZy5nZXRXaWR0aCgpOyB4KyspIHsK
KyAgICAgICAgICAgICAgICB2YXIgY3VycmVudFBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVs
KHJlbmRlcmVkSW1nLmdldFBpeGVsKHgsIHkpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdoaXRl
UGl4ZWwuZXF1YWxzKGN1cnJlbnRQaXhlbCkpCisgICAgICAgICAgICAgICAgICAgIG51bUZhaWxl
ZFBpeGVscyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG51
bUZhaWxlZFBpeGVscyA+IDApIHsKKyAgICAgICAgICAgIC8vVE9ETzogbG9nIDw8IFRlc3RMb2c6
OkltYWdlKCJSZW5kZXJlZEltYWdlIiwgIlJlbmRlcmVkIGltYWdlIiwgcmVuZGVyZWRJbWcpOwor
ICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0ZBSUxVUkU6IGltYWdlIGNvbXBhcmlz
b24gZmFpbGVkLCBnb3QgJyArIG51bUZhaWxlZFBpeGVscyArICcgbm9uLXdoaXRlIHBpeGVscycp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1N1Y2Nlc3M6IGdvdCBhbGwtd2hpdGUgcGl4ZWxzIChh
bGwgdW5pZm9ybXMgaGF2ZSBjb3JyZWN0IHZhbHVlcyknKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3RjdVRl
c3RDYXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ2FzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiog
QHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20o
ZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMubmFtZSkgXiBkZVJhbmRvbS5nZXRCYXNlU2VlZCgp
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5p
Zm9ybT59ICovIHZhciBiYXNpY1VuaWZvcm1zID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWY+fSAqLyB2YXIgYmFz
aWNVbmlmb3JtUmVwb3J0c1JlZiA9IFtdOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgc2FtcGxlclVuaXRDb3VudGVyID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1fdW5pZm9ybUNvbGxlY3Rpb24uZ2V0TnVtVW5pZm9ybXMoKTsgaSsrKQorICAgICAg
ICAgICAgc2FtcGxlclVuaXRDb3VudGVyID0gdGhpcy5nZW5lcmF0ZUJhc2ljVW5pZm9ybXMoYmFz
aWNVbmlmb3JtcywgYmFzaWNVbmlmb3JtUmVwb3J0c1JlZiwgdGhpcy5tX3VuaWZvcm1Db2xsZWN0
aW9uLmdldFVuaWZvcm0oaSkudHlwZSwgdGhpcy5tX3VuaWZvcm1Db2xsZWN0aW9uLmdldFVuaWZv
cm0oaSkubmFtZSwgdHJ1ZSwgc2FtcGxlclVuaXRDb3VudGVyLCBybmQpOworCisgICAgICAgIC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydGV4U291cmNlID0gdGhpcy5nZW5lcmF0ZVZlcnRl
eFNvdXJjZShiYXNpY1VuaWZvcm1zKTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZh
ciBmcmFnbWVudFNvdXJjZSA9IHRoaXMuZ2VuZXJhdGVGcmFnbWVudFNvdXJjZShiYXNpY1VuaWZv
cm1zKTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19
ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwg
Z2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXModmVydGV4U291cmNlLCBmcmFnbWVu
dFNvdXJjZSkpOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKHByb2dyYW0uZ2V0UHJv
Z3JhbUluZm8oKS5pbmZvTG9nKTsKKworICAgICAgICBpZiAoIXByb2dyYW0uaXNPaygpKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnQ29tcGlsZSBmYWlsZWQnLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgICAg
ICB9CisKKyAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKworICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzdWNjZXNzID0gdGhpcy50ZXN0KGJhc2lj
VW5pZm9ybXMsIGJhc2ljVW5pZm9ybVJlcG9ydHNSZWYsIHByb2dyYW0sIHJuZCk7CisgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoc3VjY2VzcywgJycsIHRydWUsIGZhbHNlKTsKKworICAgICAgICBy
ZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMu
Q2FzZVR5cGUgPSB7CisgICAgICAgIFVOSUZPUk06IDAsIC8vITwgQ2hlY2sgaW5mbyByZXR1cm5l
ZCBieSBnbEdldEFjdGl2ZVVuaWZvcm0oKS4KKyAgICAgICAgSU5ESUNFU19VTklGT1JNU0lWOiAx
LCAvLyE8IENoZWNrIGluZm8gcmV0dXJuZWQgYnkgZ2xHZXRVbmlmb3JtSW5kaWNlcygpICsgZ2xH
ZXRBY3RpdmVVbmlmb3JtcygpLiBUT0RPOiBDaGVjayAnSVYnIHBhcnQKKyAgICAgICAgQ09OU0lT
VEVOQ1k6IDIgLy8hPCBRdWVyeSBpbmZvIHdpdGggYm90aCBhYm92ZSBtZXRob2RzLCBhbmQgY2hl
Y2sgY29uc2lzdGVuY3kuCisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVW5pZm9ybUluZm9RdWVyeUNhc2UgY2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlw
dGlvbgorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZX0g
c2hhZGVyVHlwZQorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29s
bGVjdGlvbn0gdW5pZm9ybUNvbGxlY3Rpb24KKyAgICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBp
VGVzdHMuQ2FzZVR5cGV9IGNhc2VUeXBlCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRl
c3RzLkZlYXR1cmV9IGFkZGl0aW9uYWxGZWF0dXJlcworICAgICAqIEBleHRlbmRzIHtlczNmVW5p
Zm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVz
dHMuVW5pZm9ybUluZm9RdWVyeUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgc2hh
ZGVyVHlwZSwgdW5pZm9ybUNvbGxlY3Rpb24sIGNhc2VUeXBlLCBhZGRpdGlvbmFsRmVhdHVyZXMp
IHsKKyAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgdGhpcy5uZXdCKHNoYWRlclR5cGUsIHVuaWZvcm1D
b2xsZWN0aW9uLCBhZGRpdGlvbmFsRmVhdHVyZXMpOworICAgICAgICAvKiogQHR5cGUge2VzM2ZV
bmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGV9ICovIHRoaXMubV9jYXNlVHlwZSA9IGNhc2VUeXBlOwor
ICAgIH07CisKKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1JbmZvUXVlcnlDYXNlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5w
cm90b3R5cGUpOworICAgIC8qKiBDb25zdHJ1Y3RvciByZXN0b3JlICovCisgICAgZXMzZlVuaWZv
cm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1JbmZvUXVlcnlDYXNlOworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VUeXBlfSBjYXNlVHlwZQorICAgICAq
IEByZXR1cm4gez9zdHJpbmd9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlm
b3JtSW5mb1F1ZXJ5Q2FzZS5nZXRDYXNlVHlwZU5hbWUgPSBmdW5jdGlvbihjYXNlVHlwZSkgewor
ICAgICAgICBzd2l0Y2ggKGNhc2VUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuQ2FzZVR5cGUuVU5JRk9STTogcmV0dXJuICdhY3RpdmVfdW5pZm9ybSc7CisgICAg
ICAgICAgICBjYXNlIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuSU5ESUNFU19VTklGT1JN
U0lWOiByZXR1cm4gJ2luZGljZXNfYWN0aXZlX3VuaWZvcm1zaXYnOworICAgICAgICAgICAgY2Fz
ZSBlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VUeXBlLkNPTlNJU1RFTkNZOiByZXR1cm4gJ2NvbnNp
c3RlbmN5JzsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdJbnZhbGlkIHR5cGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGV9IGNhc2VUeXBlCisgICAg
ICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1JbmZvUXVlcnlDYXNlLmdldENhc2VUeXBlRGVzY3JpcHRpb24gPSBmdW5jdGlvbihjYXNl
VHlwZSkgeworICAgICAgIHN3aXRjaCAoY2FzZVR5cGUpIHsKKyAgICAgICAgICAgY2FzZSBlczNm
VW5pZm9ybUFwaVRlc3RzLkNhc2VUeXBlLlVOSUZPUk06IHJldHVybiAnVGVzdCBnbEdldEFjdGl2
ZVVuaWZvcm0oKSc7CisgICAgICAgICAgIGNhc2UgZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlVHlw
ZS5JTkRJQ0VTX1VOSUZPUk1TSVY6IHJldHVybiAnVGVzdCBnbEdldFVuaWZvcm1JbmRpY2VzKCkg
YWxvbmcgd2l0aCBnbEdldEFjdGl2ZVVuaWZvcm1zKCknOworICAgICAgICAgICBjYXNlIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuQ09OU0lTVEVOQ1k6IHJldHVybiAnQ2hlY2sgY29uc2lz
dGVuY3kgYmV0d2VlbiByZXN1bHRzIGZyb20gZ2xHZXRBY3RpdmVVbmlmb3JtKCkgYW5kIGdsR2V0
VW5pZm9ybUluZGljZXMoKSArIGdsR2V0QWN0aXZlVW5pZm9ybXMoKSc7CisgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHlwZScpOwor
ICAgICAgIH0KKyAgICB9OworCisgICAgLy8gXG5vdGUgQWx0aG91Z2ggdGhpcyBpcyBvbmx5IHVz
ZWQgaW4gVW5pZm9ybUFwaVRlc3Q6OmVzM2ZVbmlmb3JtQXBpVGVzdHMuaW5pdCwgaXQgbmVlZHMg
dG8gYmUgZGVmaW5lZCBoZXJlIGFzIGl0J3MgdXNlZCBhcyBhIHRlbXBsYXRlIGFyZ3VtZW50Lgor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7P3N0cmluZ30gbmFt
ZQorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbn0g
dW5pZm9ybUNvbGxlY3Rpb25fCisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlm
b3JtQ29sbGVjdGlvbkNhc2UgPSBmdW5jdGlvbihuYW1lLCB1bmlmb3JtQ29sbGVjdGlvbl8pIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZVByZWZpeCA9IG5hbWUgPyBu
YW1lICsgJ18nIDogJyc7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5V
bmlmb3JtQ29sbGVjdGlvbn0gKFNoYXJlZFB0cikgKi8gdGhpcy51bmlmb3JtQ29sbGVjdGlvbiA9
IHVuaWZvcm1Db2xsZWN0aW9uXzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
cnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5pZm9ybT59IGJhc2ljVW5pZm9ybXMKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0
UmVmPn0gYmFzaWNVbmlmb3JtUmVwb3J0c1JlZgorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJv
Z3JhbS5TaGFkZXJQcm9ncmFtfSBwcm9ncmFtCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5k
b219IHJuZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZXMzZlVuaWZv
cm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5Q2FzZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9u
KGJhc2ljVW5pZm9ybXMsIGJhc2ljVW5pZm9ybVJlcG9ydHNSZWYsIHByb2dyYW0sIHJuZCkgewor
ICAgICAgICAvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8gdmFyIHByb2dyYW1HTCA9IHByb2dy
YW0uZ2V0UHJvZ3JhbSgpOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZVbmlmb3JtQXBp
VGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0w+fSAqLyB2YXIgYmFzaWNVbmlmb3JtUmVwb3J0c1Vu
aWZvcm0gPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3Rz
LkJhc2ljVW5pZm9ybVJlcG9ydEdMPn0gKi8gdmFyIGJhc2ljVW5pZm9ybVJlcG9ydHNVbmlmb3Jt
cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzdWNjZXNzOworCisg
ICAgICAgIGlmICh0aGlzLm1fY2FzZVR5cGUgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlVHlw
ZS5VTklGT1JNIHx8IHRoaXMubV9jYXNlVHlwZSA9PSBlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VU
eXBlLkNPTlNJU1RFTkNZKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIC8vVE9ETzo6IGNvbnN0IFNjb3BlZExvZ1NlY3Rpb24gc2VjdGlvbihsb2csICJJbmZv
R2V0QWN0aXZlVW5pZm9ybSIsICJlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm0gaW5mb3JtYXRp
b24gcXVlcmllcyB3aXRoIGdsR2V0QWN0aXZlVW5pZm9ybSgpIik7CisgICAgICAgICAgICBzdWNj
ZXNzID0gdGhpcy5nZXRBY3RpdmVVbmlmb3Jtc09uZUJ5T25lKGJhc2ljVW5pZm9ybVJlcG9ydHNV
bmlmb3JtLCBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLCBwcm9ncmFtR0wpOworCisgICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5tX2Nhc2VUeXBlID09
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuVU5JRk9STSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2Nh
c2VUeXBlID09IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuQ09OU0lTVEVOQ1ksCisgICAg
ICAgICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5
Q2FzZS5wcm90b3R5cGUudGVzdCAtIGNhc2UgdHlwZSBpcyBub3QgY29uc2lzdGVuY3knLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB0cnVl
CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCcvLyBOb3RlOiB0aGlzIGlzIGEgY29uc2lzdGVuY3kgY2FzZSwgc28gaWdub3Jp
bmcgYWJvdmUgZmFpbHVyZShzKScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fY2FzZVR5cGUgPT0gZXMzZlVuaWZvcm1B
cGlUZXN0cy5DYXNlVHlwZS5JTkRJQ0VTX1VOSUZPUk1TSVYgfHwgdGhpcy5tX2Nhc2VUeXBlID09
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuQ09OU0lTVEVOQ1kpIHsKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgICAgICAgICAgLy9UT0RPOiBjb25zdCBTY29wZWRMb2dT
ZWN0aW9uIHNlY3Rpb24obG9nLCAiSW5mb0dldEFjdGl2ZVVuaWZvcm1zIiwgImVzM2ZVbmlmb3Jt
QXBpVGVzdHMuVW5pZm9ybSBpbmZvcm1hdGlvbiBxdWVyaWVzIHdpdGggZ2xHZXRVbmlmb3JtSW5k
aWNlcygpIGFuZCBnbEdldEFjdGl2ZVVuaWZvcm1zKCkiKTsKKyAgICAgICAgICAgIHN1Y2Nlc3Mg
PSB0aGlzLmdldEFjdGl2ZVVuaWZvcm1zKGJhc2ljVW5pZm9ybVJlcG9ydHNVbmlmb3JtcywgYmFz
aWNVbmlmb3JtUmVwb3J0c1JlZiwgcHJvZ3JhbUdMKTsKKworICAgICAgICAgICAgaWYgKCFzdWNj
ZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMubV9jYXNlVHlwZSA9PSBlczNmVW5pZm9y
bUFwaVRlc3RzLkNhc2VUeXBlLklORElDRVNfVU5JRk9STVNJVikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2Nh
c2VUeXBlID09IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVR5cGUuQ09OU0lTVEVOQ1ksCisgICAg
ICAgICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5
Q2FzZS5wcm90b3R5cGUudGVzdCAtIGNhc2UgdHlwZSBpcyBub3QgY29uc2lzdGVuY3knLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB0cnVl
CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCcvLyBOb3RlOiB0aGlzIGlzIGEgY29uc2lzdGVuY3kgY2FzZSwgc28gaWdub3Jp
bmcgYWJvdmUgZmFpbHVyZShzKScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLm1fY2FzZVR5cGUgPT0gZXMzZlVuaWZvcm1B
cGlUZXN0cy5DYXNlVHlwZS5DT05TSVNURU5DWSkgeworICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOworCisgICAgICAgICAgICAvL1RPRE86IGNvbnN0IFNjb3BlZExvZ1NlY3Rpb24gc2VjdGlv
bihsb2csICJDb21wYXJlVW5pZm9ybVZzVW5pZm9ybXMiLCAiQ29tcGFyaXNvbiBvZiByZXN1bHRz
IGZyb20gZ2xHZXRBY3RpdmVVbmlmb3JtKCkgYW5kIGdsR2V0QWN0aXZlVW5pZm9ybXMoKSIpOwor
ICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMudW5pZm9ybVZzVW5pZm9ybXNDb21wYXJpc29uKGJh
c2ljVW5pZm9ybVJlcG9ydHNVbmlmb3JtLCBiYXNpY1VuaWZvcm1SZXBvcnRzVW5pZm9ybXMpOwor
CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5W
YWx1ZVRvQ2hlY2sgPSB7CisgICAgICAgIElOSVRJQUw6IDAsIC8vITwgVmVyaWZ5IHRoZSBpbml0
aWFsIHZhbHVlcyBvZiB0aGUgdW5pZm9ybXMgKGkuZS4gY2hlY2sgdGhhdCB0aGV5J3JlIHplcm8p
LgorICAgICAgICBBU1NJR05FRDogMSAvLyE8IEFzc2lnbiB2YWx1ZXMgdG8gdW5pZm9ybXMgd2l0
aCBnbFVuaWZvcm0qKCksIGFuZCBjaGVjayB0aG9zZS4KKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGVudW0ge251bWJlcn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLkNoZWNr
TWV0aG9kID0geworICAgICAgICBHRVRfVU5JRk9STTogMCwgLy8hPCBDaGVjayB2YWx1ZXMgd2l0
aCBnbEdldFVuaWZvcm0qKCkuCisgICAgICAgIFJFTkRFUjogMSAvLyE8IENoZWNrIHZhbHVlcyBi
eSByZW5kZXJpbmcgd2l0aCB0aGUgdmFsdWUtY2hlY2tpbmcgc2hhZGVyLgorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuQXNzaWduTWV0aG9kID0geworICAgICAgICBQT0lOVEVSOiAwLAorICAgICAgICBWQUxV
RTogMQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZv
cm1WYWx1ZUNhc2UgdGVzdCBjbGFzcworICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAg
ICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlfSBzaGFkZXJUeXBl
CisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9ufSB1
bmlmb3JtQ29sbGVjdGlvbiAoU2hhcmVkUHRyKQorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1B
cGlUZXN0cy5WYWx1ZVRvQ2hlY2t9IHZhbHVlVG9DaGVjaworICAgICAqIEBwYXJhbSB7ZXMzZlVu
aWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZH0gY2hlY2tNZXRob2QKKyAgICAgKiBAcGFyYW0gez9l
czNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhvZH0gYXNzaWduTWV0aG9kCisgICAgICogQHBh
cmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmV9IGFkZGl0aW9uYWxGZWF0dXJlcworICAg
ICAqIEBleHRlbmRzIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlfQorICAgICAqLwor
ICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZhbHVlQ2FzZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2NyaXB0aW9uLCBzaGFkZXJUeXBlLCB1bmlmb3JtQ29sbGVjdGlvbiwgdmFsdWVUb0NoZWNr
LCBjaGVja01ldGhvZCwgYXNzaWduTWV0aG9kLCBhZGRpdGlvbmFsRmVhdHVyZXMpIHsKKyAgICAg
ICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2Ny
aXB0aW9uKTsKKworICAgICAgICBhZGRpdGlvbmFsRmVhdHVyZXMuVU5JRk9STVZBTFVFX1pFUk8g
fD0gdmFsdWVUb0NoZWNrID09IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLklOSVRJ
QUw7CisgICAgICAgIGFkZGl0aW9uYWxGZWF0dXJlcy5VTklGT1JNRlVOQ19WQUxVRSB8PSBhc3Np
Z25NZXRob2QgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5Bc3NpZ25NZXRob2QuVkFMVUU7CisgICAg
ICAgIHRoaXMubmV3QihzaGFkZXJUeXBlLCB1bmlmb3JtQ29sbGVjdGlvbiwgYWRkaXRpb25hbEZl
YXR1cmVzKTsKKworICAgICAgICB0aGlzLm1fdmFsdWVUb0NoZWNrID0gdmFsdWVUb0NoZWNrOwor
ICAgICAgICB0aGlzLm1fY2hlY2tNZXRob2QgPSBjaGVja01ldGhvZDsKKworICAgICAgICBhc3Nl
cnRNc2dPcHRpb25zKAorICAgICAgICAgICAgIShhc3NpZ25NZXRob2QgPT09IHVuZGVmaW5lZCAm
JiB2YWx1ZVRvQ2hlY2sgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5WYWx1ZVRvQ2hlY2suQVNTSUdO
RUQpLAorICAgICAgICAgICAgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZhbHVlQ2FzZSAt
IGFzc2lnbiBtZXRob2QgaXMgdW5kZWZpbmVkIHdoZW4gdmFsdWUgdG8gY2hlY2sgcmVxdWlyZXMg
aXQnLAorICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICB0cnVlCisgICAgICAgICk7Cisg
ICAgfTsKKworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZhbHVlQ2FzZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2UucHJvdG90
eXBlKTsKKyAgICAvKiogQ29uc3RydWN0b3IgcmVzdG9yZSAqLworICAgIGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVW5pZm9ybVZhbHVlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVW5pZm9y
bUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Vz
M2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrfSB2YWx1ZVRvQ2hlY2sKKyAgICAgKiBAcmV0
dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZh
bHVlQ2FzZS5nZXRWYWx1ZVRvQ2hlY2tOYW1lID0gZnVuY3Rpb24odmFsdWVUb0NoZWNrKSB7Cisg
ICAgICAgIHN3aXRjaCAodmFsdWVUb0NoZWNrKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZVbmlm
b3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLklOSVRJQUw6IHJldHVybiAnaW5pdGlhbCc7CisgICAg
ICAgICAgICBjYXNlIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLkFTU0lHTkVEOiBy
ZXR1cm4gJ2Fzc2lnbmVkJzsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcign
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlLmdldFZhbHVlVG9DaGVja05hbWUg
LSBJbnZhbGlkIHZhbHVlIHRvIGNoZWNrIG9wdGlvbicpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5WYWx1ZVRvQ2hlY2t9
IHZhbHVlVG9DaGVjaworICAgICAqIEByZXR1cm4gez9zdHJpbmd9CisgICAgICovCisgICAgZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlLmdldFZhbHVlVG9DaGVja0Rlc2NyaXB0
aW9uID0gZnVuY3Rpb24odmFsdWVUb0NoZWNrKSB7CisgICAgICAgIHN3aXRjaCAodmFsdWVUb0No
ZWNrKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNr
LklOSVRJQUw6IHJldHVybiAnQ2hlY2sgaW5pdGlhbCB1bmlmb3JtIHZhbHVlcyAoemVyb3MpJzsK
KyAgICAgICAgICAgIGNhc2UgZXMzZlVuaWZvcm1BcGlUZXN0cy5WYWx1ZVRvQ2hlY2suQVNTSUdO
RUQ6IHJldHVybiAnQ2hlY2sgYXNzaWduZWQgdW5pZm9ybSB2YWx1ZXMnOworICAgICAgICAgICAg
ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1
ZUNhc2UuZ2V0VmFsdWVUb0NoZWNrRGVzY3JpcHRpb24gLSBJbnZhbGlkIHZhbHVlIHRvIGNoZWNr
IG9wdGlvbicpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
ZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZH0gY2hlY2tNZXRob2QKKyAgICAgKiBAcmV0
dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZh
bHVlQ2FzZS5nZXRDaGVja01ldGhvZE5hbWUgPSBmdW5jdGlvbihjaGVja01ldGhvZCkgeworICAg
ICAgICBzd2l0Y2ggKGNoZWNrTWV0aG9kKSB7CisgICAgICAgICAgICBjYXNlIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuQ2hlY2tNZXRob2QuR0VUX1VOSUZPUk06IHJldHVybiAnZ2V0X3VuaWZvcm0nOwor
ICAgICAgICAgICAgY2FzZSBlczNmVW5pZm9ybUFwaVRlc3RzLkNoZWNrTWV0aG9kLlJFTkRFUjog
cmV0dXJuICdyZW5kZXInOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0Q2hlY2tNZXRob2ROYW1lIC0g
SW52YWxpZCBjaGVjayBtZXRob2QnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2VzM2ZVbmlmb3JtQXBpVGVzdHMuQ2hlY2tNZXRob2R9IGNoZWNrTWV0aG9k
CisgICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0Q2hlY2tNZXRob2REZXNjcmlwdGlvbiA9IGZ1bmN0aW9u
KGNoZWNrTWV0aG9kKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2tNZXRob2QpIHsKKyAgICAgICAg
ICAgIGNhc2UgZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZC5HRVRfVU5JRk9STTogcmV0
dXJuICdWZXJpZnkgdmFsdWVzIHdpdGggZ2xHZXRVbmlmb3JtKigpJzsKKyAgICAgICAgICAgIGNh
c2UgZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZC5SRU5ERVI6IHJldHVybiAnVmVyaWZ5
IHZhbHVlcyBieSByZW5kZXJpbmcnOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKCdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0Q2hlY2tNZXRob2RE
ZXNjcmlwdGlvbiAtIEludmFsaWQgY2hlY2sgbWV0aG9kJyk7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhv
ZH0gYXNzaWduTWV0aG9kCisgICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0QXNzaWduTWV0aG9kTmFtZSA9
IGZ1bmN0aW9uKGFzc2lnbk1ldGhvZCkgeworICAgICAgICBzd2l0Y2ggKGFzc2lnbk1ldGhvZCkg
eworICAgICAgICAgICAgY2FzZSBlczNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhvZC5QT0lO
VEVSOiByZXR1cm4gJ2J5X3BvaW50ZXInOworICAgICAgICAgICAgY2FzZSBlczNmVW5pZm9ybUFw
aVRlc3RzLkFzc2lnbk1ldGhvZC5WQUxVRTogcmV0dXJuICdieV92YWx1ZSc7CisgICAgICAgICAg
ICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZh
bHVlQ2FzZS5nZXRBc3NpZ25NZXRob2ROYW1lIC0gSW52YWxpZCBhc3NpZ24gbWV0aG9kJyk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtlczNmVW5pZm9ybUFw
aVRlc3RzLkFzc2lnbk1ldGhvZH0gYXNzaWduTWV0aG9kCisgICAgICogQHJldHVybiB7P3N0cmlu
Z30KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0
QXNzaWduTWV0aG9kRGVzY3JpcHRpb24gPSBmdW5jdGlvbihhc3NpZ25NZXRob2QpIHsKKyAgICAg
ICAgc3dpdGNoIChhc3NpZ25NZXRob2QpIHsKKyAgICAgICAgICAgIGNhc2UgZXMzZlVuaWZvcm1B
cGlUZXN0cy5Bc3NpZ25NZXRob2QuUE9JTlRFUjogcmV0dXJuICdBc3NpZ24gdmFsdWVzIGJ5LXBv
aW50ZXInOworICAgICAgICAgICAgY2FzZSBlczNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhv
ZC5WQUxVRTogcmV0dXJuICdBc3NpZ24gdmFsdWVzIGJ5LXZhbHVlJzsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6IHRocm93IG5ldyBFcnJvcignZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVD
YXNlLmdldEFzc2lnbk1ldGhvZERlc2NyaXB0aW9uIC0gSW52YWxpZCBhc3NpZ24gbWV0aG9kJyk7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1BcGlUZXN0
cy5Vbmlmb3JtVmFsdWVDYXNlIHRlc3QgZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0ge0FycmF5PGVz
M2ZVbmlmb3JtQXBpVGVzdHMuQmFzaWNVbmlmb3JtPn0gYmFzaWNVbmlmb3JtcworICAgICAqIEBw
YXJhbSB7QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWY+fSBi
YXNpY1VuaWZvcm1SZXBvcnRzUmVmCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW19IHByb2dyYW0KKyAgICAgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5k
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm1WYWx1ZUNhc2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbihiYXNpY1VuaWZv
cm1zLCBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLCBwcm9ncmFtLCBybmQpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBwcm9ncmFtR0wgPSBwcm9ncmFtLmdldFByb2dy
YW0oKTsKKworICAgICAgICBpZiAodGhpcy5tX3ZhbHVlVG9DaGVjayA9PSBlczNmVW5pZm9ybUFw
aVRlc3RzLlZhbHVlVG9DaGVjay5BU1NJR05FRCkgeworICAgICAgICAgICAgLy9UT0RPOiBjb25z
dCBTY29wZWRMb2dTZWN0aW9uIHNlY3Rpb24obG9nLCAiVW5pZm9ybUFzc2lnbiIsICJlczNmVW5p
Zm9ybUFwaVRlc3RzLlVuaWZvcm0gdmFsdWUgYXNzaWdubWVudHMiKTsKKyAgICAgICAgICAgIHRo
aXMuYXNzaWduVW5pZm9ybXMoYmFzaWNVbmlmb3JtcywgcHJvZ3JhbUdMLCBybmQpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoCisgICAgICAgICAgICAgICAg
dGhpcy5tX3ZhbHVlVG9DaGVjayA9PSBlczNmVW5pZm9ybUFwaVRlc3RzLlZhbHVlVG9DaGVjay5J
TklUSUFMLAorICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1
ZUNhc2UucHJvdG90eXBlLnRlc3QgLSB2YWx1ZSB0byBjaGVjayBub3QgaW5pdGlhbCcsCisgICAg
ICAgICAgICAgICAgZmFsc2UsIHRydWUKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSovIHZhciBzdWNjZXNzOworCisgICAgICAgIGlmICh0aGlzLm1fY2hlY2tN
ZXRob2QgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZC5HRVRfVU5JRk9STSkgewor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVl
Pn0gKi8gdmFyIHZhbHVlcyA9IFtdOworCisgICAgICAgICAgICAvL1RPRE86IGNvbnN0IFNjb3Bl
ZExvZ1NlY3Rpb24gc2VjdGlvbihsb2csICJHZXRVbmlmb3JtcyIsICJlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm0gdmFsdWUgcXVlcnkiKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0aGlzLmdl
dFVuaWZvcm1zKHZhbHVlcywgYmFzaWNVbmlmb3JtcywgcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOwor
CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICBpZiAodGhpcy5tX3ZhbHVlVG9DaGVjayA9PSBlczNmVW5pZm9ybUFw
aVRlc3RzLlZhbHVlVG9DaGVjay5BU1NJR05FRCkgeworICAgICAgICAgICAgICAgIC8vVE9ETzog
Y29uc3QgU2NvcGVkTG9nU2VjdGlvbiBzZWN0aW9uKGxvZywgIlZhbHVlQ2hlY2siLCAiVmVyaWZ5
IHRoYXQgdGhlIHJlcG9ydGVkIHZhbHVlcyBtYXRjaCB0aGUgYXNzaWduZWQgdmFsdWVzIik7Cisg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMuY29tcGFyZVVuaWZvcm1WYWx1ZXModmFsdWVz
LCBiYXNpY1VuaWZvcm1zKTsKKworICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
dmFsdWVUb0NoZWNrID09IGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLklOSVRJQUws
CisgICAgICAgICAgICAgICAgICAgICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNh
c2UucHJvdG90eXBlLnRlc3QgLSB2YWx1ZSB0byBjaGVjayBub3QgaW5pdGlhbCcsCisgICAgICAg
ICAgICAgICAgICAgIGZhbHNlLCB0cnVlCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgIC8vVE9ETzogY29uc3QgU2NvcGVkTG9nU2VjdGlvbiBzZWN0aW9uKGxvZywgIlZhbHVl
Q2hlY2siLCAiVmVyaWZ5IHRoYXQgdGhlIHVuaWZvcm1zIGhhdmUgY29ycmVjdCBpbml0aWFsIHZh
bHVlcyAoemVyb3MpIik7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMuY2hlY2tVbmlm
b3JtRGVmYXVsdFZhbHVlcyh2YWx1ZXMsIGJhc2ljVW5pZm9ybXMpOworCisgICAgICAgICAgICAg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KAorICAgICAgICAgICAgICAgIHRoaXMubV9jaGVja01ldGhvZCA9PSBlczNmVW5pZm9ybUFwaVRl
c3RzLkNoZWNrTWV0aG9kLlJFTkRFUiwKKyAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtVmFsdWVDYXNlLnByb3RvdHlwZS50ZXN0IC0gY2hlY2sgbWV0aG9kIGRpZmZl
cmVudCB0aGFuIFJFTkRFUicsCisgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUKKyAgICAgICAg
ICAgICk7CisKKyAgICAgICAgICAgIC8vVE9ETzogY29uc3QgU2NvcGVkTG9nU2VjdGlvbiBzZWN0
aW9uKGxvZywgIlJlbmRlclRlc3QiLCAiUmVuZGVyIHRlc3QiKTsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSB0aGlzLnJlbmRlclRlc3QoYmFzaWNVbmlmb3JtcywgcHJvZ3JhbSwgcm5kKTsKKworICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBlczNmVW5pZm9ybUFwaVRlc3RzLlJhbmRvbVVuaWZvcm1DYXNlIHRlc3QgY2xhc3MKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgICAg
ICogQGV4dGVuZHMge2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNhc2V9CisgICAgICovCisg
ICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5SYW5kb21Vbmlmb3JtQ2FzZSA9IGZ1bmN0aW9uKG5hbWUs
IGRlc2NyaXB0aW9uLCBzZWVkKSB7CisgICAgICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9y
bUNhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgICAgIHRoaXMubmV3Qyhz
ZWVkIF4gZGVSYW5kb20uZ2V0QmFzZVNlZWQoKSk7CisgICAgfTsKKworICAgIGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuUmFuZG9tVW5pZm9ybUNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlczNm
VW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1DYXNlLnByb3RvdHlwZSk7CisgICAgLyoqIENvbnN0cnVj
dG9yIHJlc3RvcmUgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlJhbmRvbVVuaWZvcm1DYXNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuUmFuZG9tVW5pZm9y
bUNhc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVz
dHMuQmFzaWNVbmlmb3JtPn0gYmFzaWNVbmlmb3JtcworICAgICAqIEBwYXJhbSB7QXJyYXk8ZXMz
ZlVuaWZvcm1BcGlUZXN0cy5CYXNpY1VuaWZvcm1SZXBvcnRSZWY+fSBiYXNpY1VuaWZvcm1SZXBv
cnRzUmVmCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHBy
b2dyYW0KKyAgICAgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisgICAgICogQHJldHVy
biB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLlJhbmRvbVVuaWZv
cm1DYXNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oYmFzaWNVbmlmb3JtcywgYmFzaWNVbmlm
b3JtUmVwb3J0c1JlZiwgcHJvZ3JhbSwgcm5kKSB7CisgICAgICAgIC8vIFxub3RlIERpZmZlcmVu
dCBzYW1wbGVyIHR5cGVzIG1heSBub3QgYmUgYm91bmQgdG8gc2FtZSB1bml0IHdoZW4gcmVuZGVy
aW5nLgorICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59Ki8gdmFyIHJlbmRlcmluZ1Bvc3NpYmxl
ID0gIXRoaXMubV9mZWF0dXJlcy5VTklGT1JNVkFMVUVfWkVSTyB8fCAhdGhpcy5tX3VuaWZvcm1D
b2xsZWN0aW9uLmNvbnRhaW5zU2V2ZXJhbFNhbXBsZXJUeXBlcygpOworCisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBlcmZvcm1HZXRBY3RpdmVVbmlmb3JtcyA9IHJuZC5nZXRC
b29sKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBlcmZvcm1HZXRBY3Rp
dmVVbmlmb3Jtc2l2ID0gcm5kLmdldEJvb2woKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLyB2YXIgcGVyZm9ybVVuaWZvcm1Wc1VuaWZvcm1zaXZDb21wYXJpc29uID0gcGVyZm9ybUdl
dEFjdGl2ZVVuaWZvcm1zICYmIHBlcmZvcm1HZXRBY3RpdmVVbmlmb3Jtc2l2ICYmIHJuZC5nZXRC
b29sKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBlcmZvcm1HZXRVbmlm
b3JtcyA9IHJuZC5nZXRCb29sKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFy
IHBlcmZvcm1DaGVja1VuaWZvcm1EZWZhdWx0VmFsdWVzID0gcGVyZm9ybUdldFVuaWZvcm1zICYm
IHJuZC5nZXRCb29sKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBlcmZv
cm1Bc3NpZ25Vbmlmb3JtcyA9IHJuZC5nZXRCb29sKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIHBlcmZvcm1Db21wYXJlVW5pZm9ybVZhbHVlcyA9IHBlcmZvcm1HZXRVbmlm
b3JtcyAmJiBwZXJmb3JtQXNzaWduVW5pZm9ybXMgJiYgcm5kLmdldEJvb2woKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgcGVyZm9ybVJlbmRlclRlc3QgPSByZW5kZXJpbmdQ
b3NzaWJsZSAmJiBwZXJmb3JtQXNzaWduVW5pZm9ybXMgJiYgcm5kLmdldEJvb2woKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBwcm9ncmFtR0wgPSBwcm9ncmFtLmdl
dFByb2dyYW0oKTsKKworICAgICAgICBpZiAoIShwZXJmb3JtR2V0QWN0aXZlVW5pZm9ybXMgfHwg
cGVyZm9ybUdldEFjdGl2ZVVuaWZvcm1zaXYgfHwgcGVyZm9ybVVuaWZvcm1Wc1VuaWZvcm1zaXZD
b21wYXJpc29uIHx8IHBlcmZvcm1HZXRVbmlmb3JtcyB8fCBwZXJmb3JtQ2hlY2tVbmlmb3JtRGVm
YXVsdFZhbHVlcyB8fCBwZXJmb3JtQXNzaWduVW5pZm9ybXMgfHwgcGVyZm9ybUNvbXBhcmVVbmlm
b3JtVmFsdWVzIHx8IHBlcmZvcm1SZW5kZXJUZXN0KSkKKyAgICAgICAgICAgIHBlcmZvcm1HZXRB
Y3RpdmVVbmlmb3JtcyA9IHRydWU7IC8vIERvIHNvbWV0aGluZyBhdCBsZWFzdC4KKworICAgICAg
ICB2YXIgUEVSRk9STV9BTkRfQ0hFQ0sgPSBmdW5jdGlvbihDQUxMLCBTRUNUSU9OX05BTUUsIFNF
Q1RJT05fREVTQ1JJUFRJT04pIHsKKyAgICAgICAgICAgIC8vVE9ETzogY29uc3QgU2NvcGVkTG9n
U2VjdGlvbiBzZWN0aW9uKGxvZywgKFNFQ1RJT05fTkFNRSksIChTRUNUSU9OX0RFU0NSSVBUSU9O
KSk7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzdWNjZXNzID0gQ0FM
TCgpOworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZVbmlmb3Jt
QXBpVGVzdHMuQmFzaWNVbmlmb3JtUmVwb3J0R0w+fSAqLyB2YXIgcmVwb3J0c1VuaWZvcm0gPSBb
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLkJhc2ljVW5p
Zm9ybVJlcG9ydEdMPn0gKi8gdmFyIHJlcG9ydHNVbmlmb3Jtc2l2ID0gW107CisKKyAgICAgICAg
dmFyIGN1cnJlbnQgPSB0aGlzOyAvL1RvIHVzZSAidGhpcyIgaW4gYW5vbnltb3VzIGZ1bmN0aW9u
LgorCisgICAgICAgIGlmIChwZXJmb3JtR2V0QWN0aXZlVW5pZm9ybXMpCisgICAgICAgICAgICBQ
RVJGT1JNX0FORF9DSEVDSyhmdW5jdGlvbigpIHtjdXJyZW50LmdldEFjdGl2ZVVuaWZvcm1zT25l
QnlPbmUocmVwb3J0c1VuaWZvcm0sIGJhc2ljVW5pZm9ybVJlcG9ydHNSZWYsIHByb2dyYW1HTCk7
fSwgJ0luZm9HZXRBY3RpdmVVbmlmb3JtJywgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybSBp
bmZvcm1hdGlvbiBxdWVyaWVzIHdpdGggZ2xHZXRBY3RpdmVVbmlmb3JtKCknKTsKKworICAgICAg
ICBpZiAocGVyZm9ybUdldEFjdGl2ZVVuaWZvcm1zaXYpCisgICAgICAgICAgICBQRVJGT1JNX0FO
RF9DSEVDSyhmdW5jdGlvbigpIHtjdXJyZW50LmdldEFjdGl2ZVVuaWZvcm1zKHJlcG9ydHNVbmlm
b3Jtc2l2LCBiYXNpY1VuaWZvcm1SZXBvcnRzUmVmLCBwcm9ncmFtR0wpO30sICdJbmZvR2V0QWN0
aXZlVW5pZm9ybXNpdicsICdlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm0gaW5mb3JtYXRpb24g
cXVlcmllcyB3aXRoIGdsR2V0SW5kaWNlcygpIGFuZCBnbEdldEFjdGl2ZVVuaWZvcm1zaXYoKScp
OworCisgICAgICAgIGlmIChwZXJmb3JtVW5pZm9ybVZzVW5pZm9ybXNpdkNvbXBhcmlzb24pCisg
ICAgICAgICAgICBQRVJGT1JNX0FORF9DSEVDSyhmdW5jdGlvbigpIHtjdXJyZW50LnVuaWZvcm1W
c1VuaWZvcm1zQ29tcGFyaXNvbihyZXBvcnRzVW5pZm9ybSwgcmVwb3J0c1VuaWZvcm1zaXYpO30s
ICdDb21wYXJlVW5pZm9ybVZzVW5pZm9ybXNpdicsICdDb21wYXJpc29uIG9mIHJlc3VsdHMgZnJv
bSBnbEdldEFjdGl2ZVVuaWZvcm0oKSBhbmQgZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2KCknKTsKKwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFyVmFsdWU+fSAq
LyB2YXIgdW5pZm9ybURlZmF1bHRWYWx1ZXMgPSBbXTsKKworICAgICAgICBpZiAocGVyZm9ybUdl
dFVuaWZvcm1zKQorICAgICAgICAgICAgUEVSRk9STV9BTkRfQ0hFQ0soZnVuY3Rpb24oKSB7Y3Vy
cmVudC5nZXRVbmlmb3Jtcyh1bmlmb3JtRGVmYXVsdFZhbHVlcywgYmFzaWNVbmlmb3JtcywgcHJv
Z3JhbUdMKTt9LCAnR2V0VW5pZm9ybURlZmF1bHRzJywgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybSBkZWZhdWx0IHZhbHVlIHF1ZXJ5Jyk7CisKKyAgICAgICAgaWYgKHBlcmZvcm1DaGVja1Vu
aWZvcm1EZWZhdWx0VmFsdWVzKQorICAgICAgICAgICAgUEVSRk9STV9BTkRfQ0hFQ0soZnVuY3Rp
b24oKSB7Y3VycmVudC5jaGVja1VuaWZvcm1EZWZhdWx0VmFsdWVzKHVuaWZvcm1EZWZhdWx0VmFs
dWVzLCBiYXNpY1VuaWZvcm1zKTt9LCAnRGVmYXVsdFZhbHVlQ2hlY2snLCAnVmVyaWZ5IHRoYXQg
dGhlIHVuaWZvcm1zIGhhdmUgY29ycmVjdCBpbml0aWFsIHZhbHVlcyAoemVyb3MpJyk7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxlczNmVW5pZm9ybUFwaVRlc3RzLlZhclZhbHVlPn0gKi8g
dmFyIHVuaWZvcm1WYWx1ZXMgPSBbXTsKKworICAgICAgICBpZiAocGVyZm9ybUFzc2lnblVuaWZv
cm1zKSB7CisgICAgICAgICAgICAvL1RPRE86IGNvbnN0IFNjb3BlZExvZ1NlY3Rpb24gc2VjdGlv
bihsb2csICJVbmlmb3JtQXNzaWduIiwgImVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybSB2YWx1
ZSBhc3NpZ25tZW50cyIpOworICAgICAgICAgICAgdGhpcy5hc3NpZ25Vbmlmb3JtcyhiYXNpY1Vu
aWZvcm1zLCBwcm9ncmFtR0wsIHJuZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGVyZm9y
bUNvbXBhcmVVbmlmb3JtVmFsdWVzKSB7CisgICAgICAgICAgICBQRVJGT1JNX0FORF9DSEVDSyhm
dW5jdGlvbigpIHtjdXJyZW50LmdldFVuaWZvcm1zKHVuaWZvcm1WYWx1ZXMsIGJhc2ljVW5pZm9y
bXMsIHByb2dyYW1HTCk7fSwgJ0dldFVuaWZvcm1zJywgJ2VzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybSB2YWx1ZSBxdWVyeScpOworICAgICAgICAgICAgUEVSRk9STV9BTkRfQ0hFQ0soZnVuY3Rp
b24oKSB7Y3VycmVudC5jb21wYXJlVW5pZm9ybVZhbHVlcyh1bmlmb3JtVmFsdWVzLCBiYXNpY1Vu
aWZvcm1zKTt9LCAnVmFsdWVDaGVjaycsICdWZXJpZnkgdGhhdCB0aGUgcmVwb3J0ZWQgdmFsdWVz
IG1hdGNoIHRoZSBhc3NpZ25lZCB2YWx1ZXMnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
ZXJmb3JtUmVuZGVyVGVzdCkKKyAgICAgICAgICAgIFBFUkZPUk1fQU5EX0NIRUNLKGZ1bmN0aW9u
KCkge2N1cnJlbnQucmVuZGVyVGVzdChiYXNpY1VuaWZvcm1zLCBwcm9ncmFtLCBybmQpO30sICdS
ZW5kZXJUZXN0JywgJ1JlbmRlciB0ZXN0Jyk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIHRoZSB0ZXN0cyB0byBiZSBwZXJmb3Jt
ZWQuCisgICAgICovCisgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5pbml0ID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAgICAgdmFyIHRl
c3RHcm91cCA9IHN0YXRlLnRlc3RDYXNlczsKKworICAgICAgICAvLyBHZW5lcmF0ZSBzZXRzIG9m
IFVuaWZvcm1Db2xsZWN0aW9ucyB0aGF0IGFyZSB1c2VkIGJ5IHNldmVyYWwgY2FzZXMuCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAZW51bQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIFVuaWZv
cm1Db2xsZWN0aW9ucyA9IHsKKyAgICAgICAgICAgIEJBU0lDOiAwLAorICAgICAgICAgICAgQkFT
SUNfQVJSQVk6IDEsCisgICAgICAgICAgICBCQVNJQ19TVFJVQ1Q6IDIsCisgICAgICAgICAgICBT
VFJVQ1RfSU5fQVJSQVk6IDMsCisgICAgICAgICAgICBBUlJBWV9JTl9TVFJVQ1Q6IDQsCisgICAg
ICAgICAgICBORVNURURfU1RSVUNUU19BUlJBWVM6IDUsCisgICAgICAgICAgICBNVUxUSVBMRV9C
QVNJQzogNiwKKyAgICAgICAgICAgIE1VTFRJUExFX0JBU0lDX0FSUkFZOiA3LAorICAgICAgICAg
ICAgTVVMVElQTEVfTkVTVEVEX1NUUlVDVFNfQVJSQVlTOiA4CisgICAgICAgIH07CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKi8KKyAgICAgICAgdmFy
IFVuaWZvcm1Db2xsZWN0aW9uR3JvdXAgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSAnJzsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbkNhc2U+fSAqLyB0aGlz
LmNhc2VzID0gW107CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxVbmlm
b3JtQ29sbGVjdGlvbkdyb3VwPn0gKi8gdmFyIGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnMgPSBu
ZXcgQXJyYXkoT2JqZWN0LmtleXMoVW5pZm9ybUNvbGxlY3Rpb25zKS5sZW5ndGgpOworCisgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZTsKKworICAgICAgICAvL0luaXRpYWxp
emUKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25z
Lmxlbmd0aDsgaSsrKSBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25zW2ldID0gbmV3IFVuaWZvcm1D
b2xsZWN0aW9uR3JvdXAoKTsKKworICAgICAgICBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25zW1Vu
aWZvcm1Db2xsZWN0aW9ucy5CQVNJQ10ubmFtZSA9ICdiYXNpYyc7CisgICAgICAgIGRlZmF1bHRV
bmlmb3JtQ29sbGVjdGlvbnNbVW5pZm9ybUNvbGxlY3Rpb25zLkJBU0lDX0FSUkFZXS5uYW1lID0g
J2Jhc2ljX2FycmF5JzsKKyAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlmb3Jt
Q29sbGVjdGlvbnMuQkFTSUNfU1RSVUNUXS5uYW1lID0gJ2Jhc2ljX3N0cnVjdCc7CisgICAgICAg
IGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnNbVW5pZm9ybUNvbGxlY3Rpb25zLlNUUlVDVF9JTl9B
UlJBWV0ubmFtZSA9ICdzdHJ1Y3RfaW5fYXJyYXknOworICAgICAgICBkZWZhdWx0VW5pZm9ybUNv
bGxlY3Rpb25zW1VuaWZvcm1Db2xsZWN0aW9ucy5BUlJBWV9JTl9TVFJVQ1RdLm5hbWUgPSAnYXJy
YXlfaW5fc3RydWN0JzsKKyAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlmb3Jt
Q29sbGVjdGlvbnMuTkVTVEVEX1NUUlVDVFNfQVJSQVlTXS5uYW1lID0gJ25lc3RlZF9zdHJ1Y3Rz
X2FycmF5cyc7CisgICAgICAgIGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnNbVW5pZm9ybUNvbGxl
Y3Rpb25zLk1VTFRJUExFX0JBU0lDXS5uYW1lID0gJ211bHRpcGxlX2Jhc2ljJzsKKyAgICAgICAg
ZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlmb3JtQ29sbGVjdGlvbnMuTVVMVElQTEVfQkFT
SUNfQVJSQVldLm5hbWUgPSAnbXVsdGlwbGVfYmFzaWNfYXJyYXknOworICAgICAgICBkZWZhdWx0
VW5pZm9ybUNvbGxlY3Rpb25zW1VuaWZvcm1Db2xsZWN0aW9ucy5NVUxUSVBMRV9ORVNURURfU1RS
VUNUU19BUlJBWVNdLm5hbWUgPSAnbXVsdGlwbGVfbmVzdGVkX3N0cnVjdHNfYXJyYXlzJzsKKwor
ICAgICAgICBmb3IgKHZhciBkYXRhVHlwZU5keCA9IDA7IGRhdGFUeXBlTmR4IDwgZXMzZlVuaWZv
cm1BcGlUZXN0cy5zX3Rlc3REYXRhVHlwZXMubGVuZ3RoOyBkYXRhVHlwZU5keCsrKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBkYXRhVHlw
ZSA9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuc190ZXN0RGF0YVR5cGVzW2RhdGFUeXBlTmR4XTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdHlwZU5hbWUgPSBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlTmFtZShkYXRhVHlwZSk7CisKKyAgICAgICAgICAgIGRlZmF1bHRVbmlm
b3JtQ29sbGVjdGlvbnNbVW5pZm9ybUNvbGxlY3Rpb25zLkJBU0lDXS5jYXNlcy5wdXNoKG5ldyBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uQ2FzZSh0eXBlTmFtZSwgZXMzZlVu
aWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5iYXNpYyhkYXRhVHlwZSkpKTsKKworICAg
ICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNjYWxhcihkYXRhVHlwZSkgfHwK
KyAgICAgICAgICAgICAgICAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlVmVjdG9yKGRhdGFUeXBl
KSAmJiBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShkYXRhVHlwZSkgPT0gNCkg
fHwKKyAgICAgICAgICAgICAgICBkYXRhVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDQgfHwKKyAgICAgICAgICAgICAgICBkYXRhVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlNBTVBMRVJfMkQpCisgICAgICAgICAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0
aW9uc1tVbmlmb3JtQ29sbGVjdGlvbnMuQkFTSUNfQVJSQVldLmNhc2VzLnB1c2gobmV3IGVzM2ZV
bmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb25DYXNlKHR5cGVOYW1lLCBlczNmVW5pZm9y
bUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLmJhc2ljQXJyYXkoZGF0YVR5cGUpKSk7CisKKyAg
ICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVTY2FsYXIoZGF0YVR5cGUpIHx8
CisgICAgICAgICAgICAgICAgZGF0YVR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQ0IHx8CisgICAgICAgICAgICAgICAgZGF0YVR5cGUgPT0gZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5TQU1QTEVSXzJEKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlfSAqLyB2YXIgc2Vjb25kRGF0YVR5cGU7CisgICAgICAgICAgICAgICAgaWYg
KGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZVNjYWxhcihkYXRhVHlwZSkpCisgICAgICAgICAgICAg
ICAgICAgIHNlY29uZERhdGFUeXBlID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVZlY3Rvcihk
YXRhVHlwZSwgNCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT0gZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0KQorICAgICAgICAgICAgICAgICAgICBzZWNvbmRE
YXRhVHlwZSA9IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlNBTVBMRVJf
MkQpCisgICAgICAgICAgICAgICAgICAgIHNlY29uZERhdGFUeXBlID0gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5TQU1QTEVSX0NVQkU7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KAorICAgICAgICAgICAgICAgICAgICBzZWNvbmREYXRhVHlwZSAhPT0gdW5kZWZpbmVkLAorICAg
ICAgICAgICAgICAgICAgICAnZXMzZlVuaWZvcm1BcGlUZXN0cy5pbml0IC0gc2Vjb25kIGRhdGEg
dHlwZSB1bmRlZmluZWQnLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZQorICAgICAg
ICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IHNlY29uZFR5cGVOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoc2Vjb25kRGF0
YVR5cGUpOworICAgICAgICAgICAgICAgIG5hbWUgPSB0eXBlTmFtZSArICdfJyArIHNlY29uZFR5
cGVOYW1lOworCisgICAgICAgICAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlm
b3JtQ29sbGVjdGlvbnMuQkFTSUNfU1RSVUNUXS5jYXNlcy5wdXNoKG5ldyBlczNmVW5pZm9ybUFw
aVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uQ2FzZShuYW1lLCBlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1Db2xsZWN0aW9uLmJhc2ljU3RydWN0KGRhdGFUeXBlLCBzZWNvbmREYXRhVHlwZSwgZmFs
c2UpKSk7CisgICAgICAgICAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlmb3Jt
Q29sbGVjdGlvbnMuQVJSQVlfSU5fU1RSVUNUXS5jYXNlcy5wdXNoKG5ldyBlczNmVW5pZm9ybUFw
aVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uQ2FzZShuYW1lLCBlczNmVW5pZm9ybUFwaVRlc3RzLlVu
aWZvcm1Db2xsZWN0aW9uLmJhc2ljU3RydWN0KGRhdGFUeXBlLCBzZWNvbmREYXRhVHlwZSwgdHJ1
ZSkpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25zW1VuaWZvcm1D
b2xsZWN0aW9ucy5TVFJVQ1RfSU5fQVJSQVldLmNhc2VzLnB1c2gobmV3IGVzM2ZVbmlmb3JtQXBp
VGVzdHMuVW5pZm9ybUNvbGxlY3Rpb25DYXNlKG5hbWUsIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5p
Zm9ybUNvbGxlY3Rpb24uc3RydWN0SW5BcnJheShkYXRhVHlwZSwgc2Vjb25kRGF0YVR5cGUsIGZh
bHNlKSkpOworICAgICAgICAgICAgICAgIGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnNbVW5pZm9y
bUNvbGxlY3Rpb25zLk5FU1RFRF9TVFJVQ1RTX0FSUkFZU10uY2FzZXMucHVzaChuZXcgZXMzZlVu
aWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbkNhc2UobmFtZSwgZXMzZlVuaWZvcm1BcGlU
ZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5uZXN0ZWRBcnJheXNTdHJ1Y3RzKGRhdGFUeXBlLCBzZWNv
bmREYXRhVHlwZSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
VW5pZm9ybUNvbGxlY3Rpb25zW1VuaWZvcm1Db2xsZWN0aW9ucy5NVUxUSVBMRV9CQVNJQ10uY2Fz
ZXMucHVzaChuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbkNhc2UobnVs
bCwgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtQ29sbGVjdGlvbi5tdWx0aXBsZUJhc2ljKCkp
KTsKKyAgICAgICAgZGVmYXVsdFVuaWZvcm1Db2xsZWN0aW9uc1tVbmlmb3JtQ29sbGVjdGlvbnMu
TVVMVElQTEVfQkFTSUNfQVJSQVldLmNhc2VzLnB1c2gobmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMu
VW5pZm9ybUNvbGxlY3Rpb25DYXNlKG51bGwsIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybUNv
bGxlY3Rpb24ubXVsdGlwbGVCYXNpY0FycmF5KCkpKTsKKyAgICAgICAgZGVmYXVsdFVuaWZvcm1D
b2xsZWN0aW9uc1tVbmlmb3JtQ29sbGVjdGlvbnMuTVVMVElQTEVfTkVTVEVEX1NUUlVDVFNfQVJS
QVlTXS5jYXNlcy5wdXNoKG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9u
Q2FzZShudWxsLCBlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9uLm11bHRpcGxl
TmVzdGVkQXJyYXlzU3RydWN0cygpKSk7CisKKyAgICAgICAgLy8gSW5mby1xdWVyeSBjYXNlcyAo
Y2hlY2sgaW5mbyByZXR1cm5lZCBieSBlLmcuIGdsR2V0QWN0aXZlVW5pZm9ybXMoKSkuCisKKyAg
ICAgICAgLy8gaW5mb19xdWVyeQorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fSAqLworICAgICAgICB2YXIgaW5mb1F1ZXJ5R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0
KCdpbmZvX3F1ZXJ5JywgJ1Rlc3QgdW5pZm9ybSBpbmZvIHF1ZXJ5aW5nIGZ1bmN0aW9ucycpOwor
ICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoaW5mb1F1ZXJ5R3JvdXApOworCisgICAgICAgIC8q
KiBAdHlwZSB7VW5pZm9ybUNvbGxlY3Rpb25Hcm91cH0gKi8gdmFyIGNvbGxlY3Rpb25Hcm91cDsK
KyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1Db2xsZWN0aW9u
Q2FzZX0gKi8gdmFyIGNvbGxlY3Rpb25DYXNlOworICAgICAgICAvKiogQHR5cGUge2VzM2ZVbmlm
b3JtQXBpVGVzdHMuVW5pZm9ybUNvbGxlY3Rpb259IChTaGFyZWRQdHIpICovIHZhciB1bmlmb3Jt
Q29sbGVjdGlvbjsKKyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1
cmV9ICovIHZhciBmZWF0dXJlczsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0gKi8gdmFyIGNvbGxlY3Rpb25UZXN0R3JvdXA7CisgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgY29sbE5hbWU7CisgICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlU
ZXN0cy5DaGVja01ldGhvZH0gKi8gdmFyIGNoZWNrTWV0aG9kOworICAgICAgICAvKiogQHR5cGUg
e3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgY2hlY2tNZXRob2RHcm91cDsKKyAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBjb2xsZWN0aW9uR3JvdXBOYW1lOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBjb250YWluc0Jvb2xlYW5zOworICAgICAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciB2YXJ5Qm9vbEFwaVR5cGU7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtQm9vbFZhcmlhdGlvbnM7CisgICAgICAgIC8qKiBAdHlwZSB7
ZXMzZlVuaWZvcm1BcGlUZXN0cy5GZWF0dXJlfSAqLyB2YXIgYm9vbGVhblR5cGVGZWF0OworICAg
ICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGJvb2xlYW5UeXBlTmFtZTsKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIHVudXNlZFVuaWZvcm1zR3Jv
dXA7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgc2hhZGVyVHlw
ZXMgPSBPYmplY3Qua2V5cyhlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlKTsKKwor
ICAgICAgICBmb3IgKHZhciBjYXNlVHlwZUkgaW4gZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlVHlw
ZSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VUeXBl
fSAqLyB2YXIgY2FzZVR5cGUgPSBlczNmVW5pZm9ybUFwaVRlc3RzLkNhc2VUeXBlW2Nhc2VUeXBl
SV07CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAg
ICAgICAgICAgdmFyIGNhc2VUeXBlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGVzM2ZVbmlm
b3JtQXBpVGVzdHMuVW5pZm9ybUluZm9RdWVyeUNhc2UuZ2V0Q2FzZVR5cGVOYW1lKGNhc2VUeXBl
KSwgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5Q2FzZS5nZXRDYXNlVHlwZURl
c2NyaXB0aW9uKGNhc2VUeXBlKSk7CisgICAgICAgICAgICBpbmZvUXVlcnlHcm91cC5hZGRDaGls
ZChjYXNlVHlwZUdyb3VwKTsKKworICAgICAgICAgICAgZm9yICh2YXIgY29sbGVjdGlvbkdyb3Vw
TmR4ID0gMDsgY29sbGVjdGlvbkdyb3VwTmR4IDwgT2JqZWN0LmtleXMoVW5pZm9ybUNvbGxlY3Rp
b25zKS5sZW5ndGg7IGNvbGxlY3Rpb25Hcm91cE5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFy
IG51bUFycmF5Rmlyc3RFbGVtTmFtZUNhc2VzID0gY2FzZVR5cGUgPT0gZXMzZlVuaWZvcm1BcGlU
ZXN0cy5DYXNlVHlwZS5JTkRJQ0VTX1VOSUZPUk1TSVYgJiYgY29sbGVjdGlvbkdyb3VwTmR4ID09
IFVuaWZvcm1Db2xsZWN0aW9ucy5CQVNJQ19BUlJBWSA/IDIgOiAxOworCisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgcmVmZXJUb0ZpcnN0QXJyYXlFbGVtV2l0aG91dEluZGV4SSA9IDA7IHJlZmVy
VG9GaXJzdEFycmF5RWxlbVdpdGhvdXRJbmRleEkgPCBudW1BcnJheUZpcnN0RWxlbU5hbWVDYXNl
czsgcmVmZXJUb0ZpcnN0QXJyYXlFbGVtV2l0aG91dEluZGV4SSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbGxlY3Rpb25Hcm91cCA9IGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnNbY29sbGVj
dGlvbkdyb3VwTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkdyb3VwTmFtZSA9
IGNvbGxlY3Rpb25Hcm91cC5uYW1lICsgKHJlZmVyVG9GaXJzdEFycmF5RWxlbVdpdGhvdXRJbmRl
eEkgPT0gMCA/ICcnIDogJ19maXJzdF9lbGVtX3dpdGhvdXRfYnJhY2tldHMnKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29sbGVjdGlvblRlc3RHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoY29s
bGVjdGlvbkdyb3VwTmFtZSwgJycpOworICAgICAgICAgICAgICAgICAgICBjYXNlVHlwZUdyb3Vw
LmFkZENoaWxkKGNvbGxlY3Rpb25UZXN0R3JvdXApOworCisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIGNvbGxlY3Rpb25OZHggPSAwOyBjb2xsZWN0aW9uTmR4IDwgY29sbGVjdGlvbkdyb3Vw
LmNhc2VzLmxlbmd0aDsgY29sbGVjdGlvbk5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb2xsZWN0aW9uQ2FzZSA9IGNvbGxlY3Rpb25Hcm91cC5jYXNlc1tjb2xsZWN0aW9uTmR4XTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkZXJUeXBl
cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBjb2xs
ZWN0aW9uQ2FzZS5uYW1lUHJlZml4ICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRDYXNlU2hhZGVy
VHlwZU5hbWUoZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZVtzaGFkZXJUeXBlc1tp
XV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1Db2xsZWN0aW9uID0gY29s
bGVjdGlvbkNhc2UudW5pZm9ybUNvbGxlY3Rpb247CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmZWF0dXJlcyA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy5BUlJBWV9GSVJTVF9FTEVNX05BTUVfTk9f
SU5ERVggPSByZWZlclRvRmlyc3RBcnJheUVsZW1XaXRob3V0SW5kZXhJICE9IDA7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uVGVzdEdyb3VwLmFkZENoaWxkKG5ldyBl
czNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1JbmZvUXVlcnlDYXNlKG5hbWUsICcnLCBlczNmVW5p
Zm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlW3NoYWRlclR5cGVzW2ldXSwgdW5pZm9ybUNvbGxl
Y3Rpb24sIGNhc2VUeXBlLCBmZWF0dXJlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBJbmZvLXF1ZXJ5aW5nIGNhc2VzIHdoZW4gdW51c2VkIHVuaWZvcm1z
IGFyZSBwcmVzZW50LgorCisgICAgICAgICAgICB1bnVzZWRVbmlmb3Jtc0dyb3VwID0gdGN1VGVz
dENhc2UubmV3VGVzdCgndW51c2VkX3VuaWZvcm1zJywgJ1Rlc3Qgd2l0aCB1bnVzZWQgdW5pZm9y
bXMnKTsKKyAgICAgICAgICAgIGNhc2VUeXBlR3JvdXAuYWRkQ2hpbGQodW51c2VkVW5pZm9ybXNH
cm91cCk7CisKKyAgICAgICAgICAgIGNvbGxlY3Rpb25Hcm91cCA9IGRlZmF1bHRVbmlmb3JtQ29s
bGVjdGlvbnNbVW5pZm9ybUNvbGxlY3Rpb25zLkFSUkFZX0lOX1NUUlVDVF07CisKKyAgICAgICAg
ICAgIGZvciAodmFyIGNvbGxlY3Rpb25OZHggPSAwOyBjb2xsZWN0aW9uTmR4IDwgY29sbGVjdGlv
bkdyb3VwLmNhc2VzLmxlbmd0aDsgY29sbGVjdGlvbk5keCsrKSB7CisgICAgICAgICAgICAgICAg
Y29sbGVjdGlvbkNhc2UgPSBjb2xsZWN0aW9uR3JvdXAuY2FzZXNbY29sbGVjdGlvbk5keF07Cisg
ICAgICAgICAgICAgICAgY29sbE5hbWUgPSBjb2xsZWN0aW9uQ2FzZS5uYW1lUHJlZml4OworICAg
ICAgICAgICAgICAgIHVuaWZvcm1Db2xsZWN0aW9uID0gY29sbGVjdGlvbkNhc2UudW5pZm9ybUNv
bGxlY3Rpb247CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNoYWRlclR5
cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBjb2xsTmFtZSAr
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuZ2V0Q2FzZVNoYWRlclR5cGVOYW1lKGVzM2ZVbmlmb3JtQXBp
VGVzdHMuQ2FzZVNoYWRlclR5cGVbc2hhZGVyVHlwZXNbaV1dKTsKKworICAgICAgICAgICAgICAg
ICAgICBmZWF0dXJlcyA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmVhdHVyZXMuVU5JRk9STVVTQUdFX0VWRVJZX09USEVSID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuQVJSQVlVU0FHRV9PTkxZX01JRERMRV9JTkRF
WCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgdW51c2VkVW5pZm9ybXNHcm91cC5hZGRD
aGlsZChuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtSW5mb1F1ZXJ5Q2FzZShuYW1lLCAn
JywgZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZVtzaGFkZXJUeXBlc1tpXV0sIHVu
aWZvcm1Db2xsZWN0aW9uLCBjYXNlVHlwZSwgZmVhdHVyZXMpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBDYXNlcyB0ZXN0aW5nIHVu
aWZvcm0gdmFsdWVzLgorCisgICAgICAgIC8vIENhc2VzIGNoZWNraW5nIHVuaWZvcm1zJyBpbml0
aWFsIHZhbHVlcyAoYWxsIG11c3QgYmUgemVyb3MpLCB3aXRoIGdsR2V0VW5pZm9ybSooKSBvciBi
eSByZW5kZXJpbmcuCisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8gdmFyIGluaXRpYWxWYWx1ZXNHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoCisgICAgICAg
ICAgICAndmFsdWUuJyArIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZhbHVlQ2FzZS5nZXRW
YWx1ZVRvQ2hlY2tOYW1lKGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLklOSVRJQUwp
LAorICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlLmdldFZh
bHVlVG9DaGVja0Rlc2NyaXB0aW9uKGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLklO
SVRJQUwpKTsKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKGluaXRpYWxWYWx1ZXNHcm91cCk7
CisKKyAgICAgICAgZm9yICh2YXIgY2hlY2tNZXRob2RJIGluIGVzM2ZVbmlmb3JtQXBpVGVzdHMu
Q2hlY2tNZXRob2QpIHsKKyAgICAgICAgICAgIGNoZWNrTWV0aG9kID0gZXMzZlVuaWZvcm1BcGlU
ZXN0cy5DaGVja01ldGhvZFtjaGVja01ldGhvZEldOworICAgICAgICAgICAgY2hlY2tNZXRob2RH
cm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFs
dWVDYXNlLmdldENoZWNrTWV0aG9kTmFtZShjaGVja01ldGhvZCksIGVzM2ZVbmlmb3JtQXBpVGVz
dHMuVW5pZm9ybVZhbHVlQ2FzZS5nZXRDaGVja01ldGhvZERlc2NyaXB0aW9uKGNoZWNrTWV0aG9k
KSk7CisgICAgICAgICAgICBpbml0aWFsVmFsdWVzR3JvdXAuYWRkQ2hpbGQoY2hlY2tNZXRob2RH
cm91cCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGNvbGxlY3Rpb25Hcm91cE5keCA9IDA7IGNv
bGxlY3Rpb25Hcm91cE5keCA8IE9iamVjdC5rZXlzKFVuaWZvcm1Db2xsZWN0aW9ucykubGVuZ3Ro
OyBjb2xsZWN0aW9uR3JvdXBOZHgrKykgeworICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Hcm91
cCA9IGRlZmF1bHRVbmlmb3JtQ29sbGVjdGlvbnNbY29sbGVjdGlvbkdyb3VwTmR4XTsKKyAgICAg
ICAgICAgICAgICBjb2xsZWN0aW9uVGVzdEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChjb2xs
ZWN0aW9uR3JvdXAubmFtZSwgJycpOworICAgICAgICAgICAgICAgIGNoZWNrTWV0aG9kR3JvdXAu
YWRkQ2hpbGQoY29sbGVjdGlvblRlc3RHcm91cCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZh
ciBjb2xsZWN0aW9uTmR4ID0gMDsgY29sbGVjdGlvbk5keCA8IGNvbGxlY3Rpb25Hcm91cC5jYXNl
cy5sZW5ndGg7IGNvbGxlY3Rpb25OZHgrKykgeworICAgICAgICAgICAgICAgICAgICBjb2xsZWN0
aW9uQ2FzZSA9IGNvbGxlY3Rpb25Hcm91cC5jYXNlc1tjb2xsZWN0aW9uTmR4XTsKKyAgICAgICAg
ICAgICAgICAgICAgY29sbE5hbWUgPSBjb2xsZWN0aW9uQ2FzZS5uYW1lUHJlZml4OworICAgICAg
ICAgICAgICAgICAgICB1bmlmb3JtQ29sbGVjdGlvbiA9IGNvbGxlY3Rpb25DYXNlLnVuaWZvcm1D
b2xsZWN0aW9uOworICAgICAgICAgICAgICAgICAgICBjb250YWluc0Jvb2xlYW5zID0gdW5pZm9y
bUNvbGxlY3Rpb24uY29udGFpbnNNYXRjaGluZ0Jhc2ljVHlwZShnbHVTaGFkZXJVdGlsLmlzRGF0
YVR5cGVCb29sT3JCVmVjKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyeUJvb2xBcGlUeXBlID0g
Y2hlY2tNZXRob2QgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVja01ldGhvZC5HRVRfVU5JRk9S
TSAmJiBjb250YWluc0Jvb2xlYW5zICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25Hcm91cE5keCA9PSBV
bmlmb3JtQ29sbGVjdGlvbnMuQkFTSUMgfHwgY29sbGVjdGlvbkdyb3VwTmR4ID09IFVuaWZvcm1D
b2xsZWN0aW9ucy5CQVNJQ19BUlJBWSk7CisgICAgICAgICAgICAgICAgICAgIG51bUJvb2xWYXJp
YXRpb25zID0gdmFyeUJvb2xBcGlUeXBlID8gMyA6IDE7CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrTWV0aG9kID09IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2hlY2tNZXRob2QuUkVOREVS
ICYmIHVuaWZvcm1Db2xsZWN0aW9uLmNvbnRhaW5zU2V2ZXJhbFNhbXBsZXJUeXBlcygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFxub3RlIFNhbXBsZXJzJyBpbml0aWFs
IEFQSSB2YWx1ZXMgKGkuZS4gdGhlaXIgdGV4dHVyZSB1bml0cykgYXJlIDAsIGFuZCBubyB0d28g
c2FtcGxlcnMgb2YgZGlmZmVyZW50IHR5cGVzIHNoYWxsIGhhdmUgc2FtZSB1bml0IHdoZW4gcmVu
ZGVyaW5nLgorCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGJvb2xlYW5UeXBlSSA9IDA7
IGJvb2xlYW5UeXBlSSA8IG51bUJvb2xWYXJpYXRpb25zOyBib29sZWFuVHlwZUkrKykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbGVhblR5cGVGZWF0ID0gbmV3IGVzM2ZVbmlmb3JtQXBp
VGVzdHMuRmVhdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhblR5cGVGZWF0
LkJPT0xFQU5BUElUWVBFX0lOVCA9IGJvb2xlYW5UeXBlSSA9PSAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbGVhblR5cGVGZWF0LkJPT0xFQU5BUElUWVBFX1VJTlQgPSBib29sZWFuVHlw
ZUkgPT0gMjsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhblR5cGVOYW1lID0gYm9v
bGVhblR5cGVJID09IDEgPyAnaW50JyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuVHlwZUkgPT0gMiA/ICd1aW50JyA6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmxvYXQnOworICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHZhciBuYW1lV2l0aEFwaVR5cGUgPSB2YXJ5Qm9vbEFwaVR5cGUgPyBjb2xsTmFtZSArICdh
cGlfJyArIGJvb2xlYW5UeXBlTmFtZSArICdfJyA6IGNvbGxOYW1lOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNoYWRlclR5cGVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVXaXRoQXBpVHlwZSArIGVz
M2ZVbmlmb3JtQXBpVGVzdHMuZ2V0Q2FzZVNoYWRlclR5cGVOYW1lKGVzM2ZVbmlmb3JtQXBpVGVz
dHMuQ2FzZVNoYWRlclR5cGVbc2hhZGVyVHlwZXNbaV1dKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2xsZWN0aW9uVGVzdEdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm1WYWx1ZUNhc2UobmFtZSwgJycsIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2FzZVNo
YWRlclR5cGVbc2hhZGVyVHlwZXNbaV1dLCB1bmlmb3JtQ29sbGVjdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5WYWx1ZVRvQ2hlY2suSU5JVElBTCwgY2hl
Y2tNZXRob2QsIG51bGwsIGJvb2xlYW5UeXBlRmVhdCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FzZXMgdGhhdCBmaXJzdCBhc3NpZ24gdmFs
dWVzIHRvIGVhY2ggdW5pZm9ybSwgdGhlbiBjaGVjayB0aGUgdmFsdWVzIHdpdGggZ2xHZXRVbmlm
b3JtKigpIG9yIGJ5IHJlbmRlcmluZy4KKworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fSAqLyB2YXIgYXNzaWduZWRWYWx1ZXNHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rl
c3QoCisgICAgICAgICAgICAndmFsdWUuJyArIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZh
bHVlQ2FzZS5nZXRWYWx1ZVRvQ2hlY2tOYW1lKGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0No
ZWNrLkFTU0lHTkVEKSwKKyAgICAgICAgICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVW5pZm9ybVZh
bHVlQ2FzZS5nZXRWYWx1ZVRvQ2hlY2tEZXNjcmlwdGlvbihlczNmVW5pZm9ybUFwaVRlc3RzLlZh
bHVlVG9DaGVjay5BU1NJR05FRCkpOworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoYXNzaWdu
ZWRWYWx1ZXNHcm91cCk7CisKKyAgICAgICAgZm9yICh2YXIgYXNzaWduTWV0aG9kSSBpbiBlczNm
VW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhvZCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtl
czNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhvZH0gKi8gdmFyIGFzc2lnbk1ldGhvZCA9IGVz
M2ZVbmlmb3JtQXBpVGVzdHMuQXNzaWduTWV0aG9kW2Fzc2lnbk1ldGhvZEldOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIGFzc2lnbk1ldGhvZEdy
b3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChlczNmVW5pZm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1
ZUNhc2UuZ2V0QXNzaWduTWV0aG9kTmFtZShhc3NpZ25NZXRob2QpLCBlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0QXNzaWduTWV0aG9kRGVzY3JpcHRpb24oYXNzaWduTWV0
aG9kKSk7CisgICAgICAgICAgICBhc3NpZ25lZFZhbHVlc0dyb3VwLmFkZENoaWxkKGFzc2lnbk1l
dGhvZEdyb3VwKTsKKworICAgICAgICAgICAgZm9yICh2YXIgY2hlY2tNZXRob2RJIGluIGVzM2ZV
bmlmb3JtQXBpVGVzdHMuQ2hlY2tNZXRob2QpIHsKKyAgICAgICAgICAgICAgICBjaGVja01ldGhv
ZCA9IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2hlY2tNZXRob2RbY2hlY2tNZXRob2RJXTsKKyAgICAg
ICAgICAgICAgICBjaGVja01ldGhvZEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChlczNmVW5p
Zm9ybUFwaVRlc3RzLlVuaWZvcm1WYWx1ZUNhc2UuZ2V0Q2hlY2tNZXRob2ROYW1lKGNoZWNrTWV0
aG9kKSwgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlLmdldENoZWNrTWV0aG9k
RGVzY3JpcHRpb24oY2hlY2tNZXRob2QpKTsKKyAgICAgICAgICAgICAgICBhc3NpZ25NZXRob2RH
cm91cC5hZGRDaGlsZChjaGVja01ldGhvZEdyb3VwKTsKKworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGNvbGxlY3Rpb25Hcm91cE5keCA9IDA7IGNvbGxlY3Rpb25Hcm91cE5keCA8IE9iamVjdC5r
ZXlzKFVuaWZvcm1Db2xsZWN0aW9ucykubGVuZ3RoOyBjb2xsZWN0aW9uR3JvdXBOZHgrKykgewor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUFycmF5Rmly
c3RFbGVtTmFtZUNhc2VzID0gY2hlY2tNZXRob2QgPT0gZXMzZlVuaWZvcm1BcGlUZXN0cy5DaGVj
a01ldGhvZC5HRVRfVU5JRk9STSAmJiBjb2xsZWN0aW9uR3JvdXBOZHggPT0gVW5pZm9ybUNvbGxl
Y3Rpb25zLkJBU0lDX0FSUkFZID8gMiA6IDE7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgcmVmZXJUb0ZpcnN0QXJyYXlFbGVtV2l0aG91dEluZGV4SSA9IDA7IHJlZmVyVG9GaXJzdEFy
cmF5RWxlbVdpdGhvdXRJbmRleEkgPCBudW1BcnJheUZpcnN0RWxlbU5hbWVDYXNlczsgcmVmZXJU
b0ZpcnN0QXJyYXlFbGVtV2l0aG91dEluZGV4SSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb2xsZWN0aW9uR3JvdXAgPSBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25zW2NvbGxlY3Rpb25H
cm91cE5keF07CisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uR3JvdXBOYW1lID0g
Y29sbGVjdGlvbkdyb3VwLm5hbWUgKyAocmVmZXJUb0ZpcnN0QXJyYXlFbGVtV2l0aG91dEluZGV4
SSA9PSAwID8gJycgOiAnX2ZpcnN0X2VsZW1fd2l0aG91dF9icmFja2V0cycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29sbGVjdGlvblRlc3RHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qo
Y29sbGVjdGlvbkdyb3VwTmFtZSwgJycpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tN
ZXRob2RHcm91cC5hZGRDaGlsZChjb2xsZWN0aW9uVGVzdEdyb3VwKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgY29sbGVjdGlvbk5keCA9IDA7IGNvbGxlY3Rpb25OZHggPCBj
b2xsZWN0aW9uR3JvdXAuY2FzZXMubGVuZ3RoOyBjb2xsZWN0aW9uTmR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uQ2FzZSA9IGNvbGxlY3Rpb25Hcm91cC5jYXNl
c1tjb2xsZWN0aW9uTmR4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsTmFtZSA9
IGNvbGxlY3Rpb25DYXNlLm5hbWVQcmVmaXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pZm9ybUNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uQ2FzZS51bmlmb3JtQ29sbGVjdGlvbjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluc0Jvb2xlYW5zID0gdW5pZm9ybUNvbGxl
Y3Rpb24uY29udGFpbnNNYXRjaGluZ0Jhc2ljVHlwZShnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVC
b29sT3JCVmVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJ5Qm9vbEFwaVR5cGUg
PSBjaGVja01ldGhvZCA9PSBlczNmVW5pZm9ybUFwaVRlc3RzLkNoZWNrTWV0aG9kLkdFVF9VTklG
T1JNICYmIGNvbnRhaW5zQm9vbGVhbnMgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlv
bkdyb3VwTmR4ID09IFVuaWZvcm1Db2xsZWN0aW9ucy5CQVNJQyB8fCBjb2xsZWN0aW9uR3JvdXBO
ZHggPT0gVW5pZm9ybUNvbGxlY3Rpb25zLkJBU0lDX0FSUkFZKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1Cb29sVmFyaWF0aW9ucyA9IHZhcnlCb29sQXBpVHlwZSA/IDMgOiAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGNv
bnRhaW5zTWF0cmljZXMgPSB1bmlmb3JtQ29sbGVjdGlvbi5jb250YWluc01hdGNoaW5nQmFzaWNU
eXBlKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdmFyeU1hdHJpeE1vZGUgPSBjb250
YWluc01hdHJpY2VzICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25Hcm91cE5keCA9
PSBVbmlmb3JtQ29sbGVjdGlvbnMuQkFTSUMgfHwgY29sbGVjdGlvbkdyb3VwTmR4ID09IFVuaWZv
cm1Db2xsZWN0aW9ucy5CQVNJQ19BUlJBWSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1NYXRWYXJpYXRpb25zID0gdmFyeU1hdHJpeE1v
ZGUgPyAyIDogMTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluc01h
dHJpY2VzICYmIGFzc2lnbk1ldGhvZCAhPSBlczNmVW5pZm9ybUFwaVRlc3RzLkFzc2lnbk1ldGhv
ZC5QT0lOVEVSKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGJvb2xlYW5UeXBlSSA9IDA7IGJv
b2xlYW5UeXBlSSA8IG51bUJvb2xWYXJpYXRpb25zOyBib29sZWFuVHlwZUkrKykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuVHlwZUZlYXQgPSBuZXcgZXMzZlVuaWZv
cm1BcGlUZXN0cy5GZWF0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2xlYW5UeXBlRmVhdC5CT09MRUFOQVBJVFlQRV9JTlQgPSBib29sZWFuVHlwZUkgPT0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhblR5cGVGZWF0LkJPT0xFQU5BUElU
WVBFX1VJTlQgPSBib29sZWFuVHlwZUkgPT0gMjsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sZWFuVHlwZU5hbWUgPSBib29sZWFuVHlwZUkgPT0gMSA/ICdpbnQnIDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2xlYW5UeXBlSSA9PSAyID8gJ3VpbnQnIDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdmbG9hdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgbmFtZVdpdGhCb29sVHlwZSA9IHZhcnlCb29sQXBpVHlwZSA/IGNvbGxOYW1l
ICsgJ2FwaV8nICsgYm9vbGVhblR5cGVOYW1lICsgJ18nIDogY29sbE5hbWU7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbWF0cml4VHlwZUkgPSAwOyBtYXRyaXhU
eXBlSSA8IG51bU1hdFZhcmlhdGlvbnM7IG1hdHJpeFR5cGVJKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZVdpdGhN
YXRyaXhUeXBlID0gbmFtZVdpdGhCb29sVHlwZSArIChtYXRyaXhUeXBlSSA9PSAxID8gJ3Jvd19t
YWpvcl8nIDogJycpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNoYWRlclR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVXaXRoTWF0cml4VHlwZSArIGVz
M2ZVbmlmb3JtQXBpVGVzdHMuZ2V0Q2FzZVNoYWRlclR5cGVOYW1lKGVzM2ZVbmlmb3JtQXBpVGVz
dHMuQ2FzZVNoYWRlclR5cGVbc2hhZGVyVHlwZXNbaV1dKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW5UeXBlRmVhdC5BUlJBWV9GSVJTVF9FTEVNX05B
TUVfTk9fSU5ERVggPSByZWZlclRvRmlyc3RBcnJheUVsZW1XaXRob3V0SW5kZXhJICE9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhblR5cGVGZWF0Lk1B
VFJJWE1PREVfUk9XTUFKT1IgPSBtYXRyaXhUeXBlSSA9PSAxOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvblRlc3RHcm91cC5hZGRDaGlsZChuZXcg
ZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlKG5hbWUsICcnLCBlczNmVW5pZm9y
bUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlW3NoYWRlclR5cGVzW2ldXSwgdW5pZm9ybUNvbGxlY3Rp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzM2ZVbmlmb3JtQXBpVGVz
dHMuVmFsdWVUb0NoZWNrLkFTU0lHTkVELCBjaGVja01ldGhvZCwgYXNzaWduTWV0aG9kLCBib29s
ZWFuVHlwZUZlYXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IENhc2VzIGFzc2lnbiBtdWx0aXBsZSBiYXNpYy1hcnJheSBlbGVtZW50cyB3aXRoIG9uZSBnbFVu
aWZvcm0qdigpIChpLmUuIHRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgYmlnZ2VyIHRoYW4gMSkuCisK
KyAgICAgICAgLyoqIEB0eXBlIHtlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmV9ICovIHZhciBh
cnJheUFzc2lnbkZ1bGxNb2RlID0gbmV3IGVzM2ZVbmlmb3JtQXBpVGVzdHMuRmVhdHVyZSgpOwor
ICAgICAgICBhcnJheUFzc2lnbkZ1bGxNb2RlLkFSUkFZQVNTSUdOX0ZVTEwgPSB0cnVlOworCisg
ICAgICAgIC8qKiBAdHlwZSB7ZXMzZlVuaWZvcm1BcGlUZXN0cy5GZWF0dXJlfSAqLyB2YXIgYXJy
YXlBc3NpZ25CbG9ja3NPZlR3byA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmUoKTsK
KyAgICAgICAgYXJyYXlBc3NpZ25GdWxsTW9kZS5BUlJBWUFTU0lHTl9CTE9DS1NfT0ZfVFdPID0g
dHJ1ZTsKKworICAgICAgICB2YXIgYXJyYXlBc3NpZ25Hcm91cHMgPQorICAgICAgICBbe2FycmF5
QXNzaWduTW9kZTogYXJyYXlBc3NpZ25GdWxsTW9kZSwgbmFtZTogJ2Jhc2ljX2FycmF5X2Fzc2ln
bl9mdWxsJywgZGVzY3JpcHRpb246ICdBc3NpZ24gZW50aXJlIGJhc2ljLXR5cGUgYXJyYXlzIHBl
ciBnbFVuaWZvcm0qdigpIGNhbGwnfSwge2FycmF5QXNzaWduTW9kZTogYXJyYXlBc3NpZ25CbG9j
a3NPZlR3bywgbmFtZTogJ2Jhc2ljX2FycmF5X2Fzc2lnbl9wYXJ0aWFsJywgZGVzY3JpcHRpb246
ICdBc3NpZ24gdHdvIGVsZW1lbnRzIG9mIGEgYmFzaWMtdHlwZSBhcnJheSBwZXIgZ2xVbmlmb3Jt
KnYoKSBjYWxsJ30KKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBhcnJheUFzc2lnbkdy
b3VwTmR4ID0gMDsgYXJyYXlBc3NpZ25Hcm91cE5keCA8IGFycmF5QXNzaWduR3JvdXBzLmxlbmd0
aDsgYXJyYXlBc3NpZ25Hcm91cE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2VzM2ZV
bmlmb3JtQXBpVGVzdHMuRmVhdHVyZX0gKi8gdmFyIGFycmF5QXNzaWduTW9kZSA9IGFycmF5QXNz
aWduR3JvdXBzW2FycmF5QXNzaWduR3JvdXBOZHhdLmFycmF5QXNzaWduTW9kZTsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZ3JvdXBOYW1lID0gYXJyYXlBc3NpZ25Hcm91
cHNbYXJyYXlBc3NpZ25Hcm91cE5keF0ubmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgZ3JvdXBEZXNjID0gYXJyYXlBc3NpZ25Hcm91cHNbYXJyYXlBc3NpZ25Hcm91
cE5keF0uZGVzY3JpcHRpb247CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2Uu
RGVxcFRlc3R9ICovIHZhciBjdXJBcnJheUFzc2lnbkdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVz
dChncm91cE5hbWUsIGdyb3VwRGVzYyk7CisgICAgICAgICAgICBhc3NpZ25lZFZhbHVlc0dyb3Vw
LmFkZENoaWxkKGN1ckFycmF5QXNzaWduR3JvdXApOworCisgICAgICAgICAgICAvKiogQHR5cGUg
e0FycmF5PG51bWJlcj59ICovIHZhciBiYXNpY0FycmF5Q29sbGVjdGlvbkdyb3VwcyA9IFtVbmlm
b3JtQ29sbGVjdGlvbnMuQkFTSUNfQVJSQVksIFVuaWZvcm1Db2xsZWN0aW9ucy5BUlJBWV9JTl9T
VFJVQ1QsIFVuaWZvcm1Db2xsZWN0aW9ucy5NVUxUSVBMRV9CQVNJQ19BUlJBWV07CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGNvbGxlY3Rpb25Hcm91cE5keCA9IDA7IGNvbGxlY3Rpb25Hcm91cE5k
eCA8IGJhc2ljQXJyYXlDb2xsZWN0aW9uR3JvdXBzLmxlbmd0aDsgY29sbGVjdGlvbkdyb3VwTmR4
KyspIHsKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uR3JvdXAgPSBkZWZhdWx0VW5pZm9ybUNv
bGxlY3Rpb25zW2Jhc2ljQXJyYXlDb2xsZWN0aW9uR3JvdXBzW2NvbGxlY3Rpb25Hcm91cE5keF1d
OworICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25UZXN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdU
ZXN0KGNvbGxlY3Rpb25Hcm91cC5uYW1lLCAnJyk7CisgICAgICAgICAgICAgICAgY3VyQXJyYXlB
c3NpZ25Hcm91cC5hZGRDaGlsZChjb2xsZWN0aW9uVGVzdEdyb3VwKTsKKworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGNvbGxlY3Rpb25OZHggPSAwOyBjb2xsZWN0aW9uTmR4IDwgY29sbGVjdGlv
bkdyb3VwLmNhc2VzLmxlbmd0aDsgY29sbGVjdGlvbk5keCsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbGxlY3Rpb25DYXNlID0gY29sbGVjdGlvbkdyb3VwLmNhc2VzW2NvbGxlY3Rpb25OZHhd
OworICAgICAgICAgICAgICAgICAgICBjb2xsTmFtZSA9IGNvbGxlY3Rpb25DYXNlLm5hbWVQcmVm
aXg7CisgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1Db2xsZWN0aW9uID0gY29sbGVjdGlvbkNh
c2UudW5pZm9ybUNvbGxlY3Rpb247CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzaGFkZXJUeXBlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9IGNvbGxOYW1lICsgZXMzZlVuaWZvcm1BcGlUZXN0cy5nZXRDYXNlU2hhZGVyVHlw
ZU5hbWUoZXMzZlVuaWZvcm1BcGlUZXN0cy5DYXNlU2hhZGVyVHlwZVtzaGFkZXJUeXBlc1tpXV0p
OworICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvblRlc3RHcm91cC5hZGRDaGlsZChu
ZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlKG5hbWUsICcnLCBlczNmVW5p
Zm9ybUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlW3NoYWRlclR5cGVzW2ldXSwgdW5pZm9ybUNvbGxl
Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1BcGlUZXN0cy5WYWx1ZVRvQ2hl
Y2suQVNTSUdORUQsIGVzM2ZVbmlmb3JtQXBpVGVzdHMuQ2hlY2tNZXRob2QuR0VUX1VOSUZPUk0s
IGVzM2ZVbmlmb3JtQXBpVGVzdHMuQXNzaWduTWV0aG9kLlBPSU5URVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJyYXlBc3NpZ25Nb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBWYWx1ZSBj
aGVja2luZyBjYXNlcyB3aGVuIHVudXNlZCB1bmlmb3JtcyBhcmUgcHJlc2VudC4KKworICAgICAg
ICB1bnVzZWRVbmlmb3Jtc0dyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgndW51c2VkX3VuaWZv
cm1zJywgJ1Rlc3Qgd2l0aCB1bnVzZWQgdW5pZm9ybXMnKTsKKyAgICAgICAgYXNzaWduZWRWYWx1
ZXNHcm91cC5hZGRDaGlsZCh1bnVzZWRVbmlmb3Jtc0dyb3VwKTsKKworICAgICAgICBjb2xsZWN0
aW9uR3JvdXAgPSBkZWZhdWx0VW5pZm9ybUNvbGxlY3Rpb25zW1VuaWZvcm1Db2xsZWN0aW9ucy5B
UlJBWV9JTl9TVFJVQ1RdOworCisgICAgICAgIGZvciAodmFyIGNvbGxlY3Rpb25OZHggPSAwOyBj
b2xsZWN0aW9uTmR4IDwgY29sbGVjdGlvbkdyb3VwLmNhc2VzLmxlbmd0aDsgY29sbGVjdGlvbk5k
eCsrKSB7CisgICAgICAgICAgICBjb2xsZWN0aW9uQ2FzZSA9IGNvbGxlY3Rpb25Hcm91cC5jYXNl
c1tjb2xsZWN0aW9uTmR4XTsKKyAgICAgICAgICAgIGNvbGxOYW1lID0gY29sbGVjdGlvbkNhc2Uu
bmFtZVByZWZpeDsKKyAgICAgICAgICAgIHVuaWZvcm1Db2xsZWN0aW9uID0gY29sbGVjdGlvbkNh
c2UudW5pZm9ybUNvbGxlY3Rpb247CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2hhZGVyVHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuYW1lID0gY29sbE5h
bWUgKyBlczNmVW5pZm9ybUFwaVRlc3RzLmdldENhc2VTaGFkZXJUeXBlTmFtZShlczNmVW5pZm9y
bUFwaVRlc3RzLkNhc2VTaGFkZXJUeXBlW3NoYWRlclR5cGVzW2ldXSk7CisKKyAgICAgICAgICAg
ICAgICBmZWF0dXJlcyA9IG5ldyBlczNmVW5pZm9ybUFwaVRlc3RzLkZlYXR1cmUoKTsKKyAgICAg
ICAgICAgICAgICBmZWF0dXJlcy5BUlJBWVVTQUdFX09OTFlfTUlERExFX0lOREVYID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBmZWF0dXJlcy5VTklGT1JNVVNBR0VfRVZFUllfT1RIRVIgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgdW51c2VkVW5pZm9ybXNHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZlVuaWZvcm1BcGlUZXN0cy5Vbmlmb3JtVmFsdWVDYXNlKG5hbWUsICcnLCBlczNmVW5pZm9ybUFw
aVRlc3RzLkNhc2VTaGFkZXJUeXBlW3NoYWRlclR5cGVzW2ldXSwgdW5pZm9ybUNvbGxlY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzM2ZVbmlmb3JtQXBpVGVzdHMuVmFsdWVUb0NoZWNrLkFTU0lHTkVELCBl
czNmVW5pZm9ybUFwaVRlc3RzLkNoZWNrTWV0aG9kLkdFVF9VTklGT1JNLCBlczNmVW5pZm9ybUFw
aVRlc3RzLkFzc2lnbk1ldGhvZC5QT0lOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcykpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmFuZG9tIGNhc2VzLgorCisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtUmFuZG9tQ2FzZXMgPSAxMDA7CisgICAg
ICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovIHZhciByYW5kb21Hcm91cCA9
IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3JhbmRvbScsICdSYW5kb20gY2FzZXMnKTsKKyAgICAgICAg
dGVzdEdyb3VwLmFkZENoaWxkKHJhbmRvbUdyb3VwKTsKKworICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBudW1SYW5kb21DYXNlczsgbmR4KyspCisgICAgICAgICAgICByYW5kb21Hcm91
cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1BcGlUZXN0cy5SYW5kb21Vbmlmb3JtQ2FzZSgnJyAr
IG5keCwgJycsIG5keCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW5kIGV4
ZWN1dGUgdGhlIHRlc3QgY2FzZXMKKyAgICAgKiBAcGFyYW0ge1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUFwaVRlc3RzLnJ1biA9IGZ1bmN0
aW9uKGNvbnRleHQsIHJhbmdlKSB7CisgICAgICAgIGdsID0gY29udGV4dDsKKyAgICAgICAgLy9T
ZXQgdXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ3VuaWZv
cm1fYXBpJzsKKyAgICAgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9ICdlczNmVW5pZm9ybUFwaVRl
c3RzLlVuaWZvcm0gQVBJIFRlc3RzJzsKKyAgICAgICAgdmFyIHN0YXRlID0gdGN1VGVzdENhc2Uu
cnVubmVyOworCisgICAgICAgIHN0YXRlLnRlc3ROYW1lID0gdGVzdE5hbWU7CisgICAgICAgIHN0
YXRlLnRlc3RDYXNlcyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QodGVzdE5hbWUsIHRlc3REZXNjcmlw
dGlvbiwgbnVsbCk7CisKKyAgICAgICAgLy9TZXQgdXAgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2Yg
dGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVudFRlc3ROYW1lKHRlc3ROYW1lKTsK
KyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9uKTsKKworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgLy9DcmVhdGUgdGVzdCBjYXNlcworICAgICAgICAgICAgZXMzZlVuaWZvcm1B
cGlUZXN0cy5pbml0KCk7CisgICAgICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICAgICAg
c3RhdGUuc2V0UmFuZ2UocmFuZ2UpOworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAg
ICAgICAgICAgdGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAg
Y2F0Y2ggKGVycikgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBl
czNmVW5pZm9ybUFwaVRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAgICAgICAgIHRjdVRl
c3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZVbmlmb3JtQmxvY2tUZXN0cy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9l
czNmVW5pZm9ybUJsb2NrVGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFhOTBmZGM2NGRlNmEwM2E2MGNj
YWJhYzMyMDE5NjBjMTk4NDFiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNmVW5p
Zm9ybUJsb2NrVGVzdHMuanMKQEAgLTAsMCArMSw3NDggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBD
b3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAq
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZv
cm1CbG9ja1Rlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENh
c2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdt
b2R1bGVzLnNoYXJlZC5nbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlJyk7Citnb29nLnJlcXVpcmUo
J21vZHVsZXMuc2hhcmVkLmdsc1VuaWZvcm1CbG9ja0Nhc2UnKTsKKworZ29vZy5zY29wZShmdW5j
dGlvbigpIHsKKworICAgIHZhciBlczNmVW5pZm9ybUJsb2NrVGVzdHMgPSBmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0czsKKyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1l
d29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsKKyAgICB2YXIgZ2xzVW5pZm9ybUJsb2NrQ2FzZSA9
IG1vZHVsZXMuc2hhcmVkLmdsc1VuaWZvcm1CbG9ja0Nhc2U7CisgICAgdmFyIGdsc1JhbmRvbVVu
aWZvcm1CbG9ja0Nhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNl
OworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cisg
ICAgdmFyIGRlTWF0aCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aDsKKyAgICB2YXIg
ZGVSYW5kb20gPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbTsKKworICAgIC8qKgor
ICAgICAqIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAKKyAgICAg
KiBAcGFyYW0ge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSBwYXJlbnRHcm91cAorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBncm91cE5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24K
KyAgICAgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQnVmZmVyTW9kZX0gYnVmZmVyTW9k
ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmZWF0dXJlcworICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBudW1DYXNlcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlU2VlZAorICAgICAqLworICAg
IGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAgPSBmdW5jdGlvbihw
YXJlbnRHcm91cCwgZ3JvdXBOYW1lLCBkZXNjcmlwdGlvbiwgYnVmZmVyTW9kZSwgZmVhdHVyZXMs
IG51bUNhc2VzLCBiYXNlU2VlZCkgeworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRl
cXBUZXN0fSAqLworICAgICAgICB2YXIgZ3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGdyb3Vw
TmFtZSwgZGVzY3JpcHRpb24pOworICAgICAgICBwYXJlbnRHcm91cC5hZGRDaGlsZChncm91cCk7
CisKKyAgICAgICAgYmFzZVNlZWQgKz0gZGVSYW5kb20uZ2V0QmFzZVNlZWQoKTsKKworICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1DYXNlczsgbmR4KyspCisgICAgICAgICAgICBn
cm91cC5hZGRDaGlsZChuZXcgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5SYW5kb21Vbmlmb3Jt
QmxvY2tDYXNlKCcnICsgbmR4LCAnJywgYnVmZmVyTW9kZSwgZmVhdHVyZXMsIG5keCArIGJhc2VT
ZWVkKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5C
bG9ja0Jhc2ljVHlwZUNhc2UgY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZSBUaGUgbmFtZSBvZiB0aGUgdGVzdAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
biBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHRlc3QKKyAgICAgKiBAcGFyYW0ge2dsc1VuaWZvcm1C
bG9ja0Nhc2UuVmFyVHlwZX0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgYmxvY2sKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGF5b3V0RmxhZ3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtSW5zdGFu
Y2VzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUJsb2NrVGVz
dHMuQmxvY2tCYXNpY1R5cGVDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIHR5cGUs
IGxheW91dEZsYWdzLCBudW1JbnN0YW5jZXMpIHsKKyAgICAgICAgZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5Vbmlmb3JtQmxvY2tDYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24sIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuQnVmZmVyTW9kZS5CVUZGRVJNT0RFX1BFUl9CTE9DSyk7CisgICAgICAgIC8q
KiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2t9Ki8gdmFyIGJsb2NrID0g
dGhpcy5tX2ludGVyZmFjZS5hbGxvY0Jsb2NrKCdCbG9jaycpOworICAgICAgICBibG9jay5hZGRV
bmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ3ZhcicsIHR5cGUsIDApKTsK
KyAgICAgICAgYmxvY2suc2V0RmxhZ3MobGF5b3V0RmxhZ3MpOworCisgICAgICAgIGlmIChudW1J
bnN0YW5jZXMgPiAwKSB7CisgICAgICAgICAgICBibG9jay5zZXRBcnJheVNpemUobnVtSW5zdGFu
Y2VzKTsKKyAgICAgICAgICAgIGJsb2NrLnNldEluc3RhbmNlTmFtZSgnYmxvY2snKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tCYXNpY1R5cGVD
YXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
QmxvY2tDYXNlLnByb3RvdHlwZSk7CisgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrQmFz
aWNUeXBlQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVW5pZm9ybUJsb2NrVGVzdHMu
QmxvY2tCYXNpY1R5cGVDYXNlOworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1CbG9ja1Rl
c3RzLmNyZWF0ZUJsb2NrQmFzaWNUeXBlQ2FzZXMKKyAgICAgKiBAcGFyYW0ge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fSBncm91cAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBh
cmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGF5b3V0RmxhZ3MKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG51bUluc3RhbmNlcwor
ICAgICAqLworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVCbG9ja0Jhc2ljVHlwZUNh
c2VzID0gZnVuY3Rpb24oZ3JvdXAsIG5hbWUsIHR5cGUsIGxheW91dEZsYWdzLCBudW1JbnN0YW5j
ZXMpIHsKKyAgICAgICAgbnVtSW5zdGFuY2VzID0gKG51bUluc3RhbmNlcyA9PT0gdW5kZWZpbmVk
KSA/IDAgOiBudW1JbnN0YW5jZXM7CisgICAgICAgIGdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5p
Zm9ybUJsb2NrVGVzdHMuQmxvY2tCYXNpY1R5cGVDYXNlKG5hbWUgKyAnX3ZlcnRleCcsICcnLCB0
eXBlLCBsYXlvdXRGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xB
UkVfVkVSVEVYLCBudW1JbnN0YW5jZXMpKTsKKyAgICAgICAgZ3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja0Jhc2ljVHlwZUNhc2UobmFtZSArICdfZnJhZ21lbnQn
LCAnJywgdHlwZSwgbGF5b3V0RmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFn
cy5ERUNMQVJFX0ZSQUdNRU5ULCBudW1JbnN0YW5jZXMpKTsKKworICAgICAgICAvL2FsZXJ0KGdy
b3VwLnNwZWNbMF0ubV9pbnN0YW5jZSk7CisgICAgICAgIGlmICghKGxheW91dEZsYWdzICYgZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1BBQ0tFRCkpCisgICAgICAgICAg
ICBncm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrQmFzaWNUeXBl
Q2FzZShuYW1lICsgJ19ib3RoJywgJycsIHR5cGUsIGxheW91dEZsYWdzIHwgZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9WRVJURVggfCBnbHNVbmlmb3JtQmxvY2tDYXNl
LlVuaWZvcm1GbGFncy5ERUNMQVJFX0ZSQUdNRU5ULCBudW1JbnN0YW5jZXMpKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0
Q2FzZSBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9m
IHRoZSB0ZXN0CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlw
dGlvbiBvZiB0aGUgdGVzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXlvdXRGbGFncworICAg
ICAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlfSBidWZmZXJNb2RlCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUluc3RhbmNlcworICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2V9Cisg
ICAgICovCisgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0Q2FzZSA9
IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBsYXlvdXRGbGFncywgYnVmZmVyTW9kZSwgbnVt
SW5zdGFuY2VzKSB7CisgICAgICAgIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2Fz
ZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBidWZmZXJNb2RlKTsKKyAgICAgICAgdGhp
cy5tX2xheW91dEZsYWdzID0gbGF5b3V0RmxhZ3M7CisgICAgICAgIHRoaXMubV9udW1JbnN0YW5j
ZXMgPSBudW1JbnN0YW5jZXM7CisgICAgfTsKKworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5C
bG9ja1NpbmdsZVN0cnVjdENhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlKTsKKyAgICBlczNmVW5pZm9ybUJs
b2NrVGVzdHMuQmxvY2tTaW5nbGVTdHJ1Y3RDYXNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVz
M2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja1NpbmdsZVN0cnVjdENhc2U7CisKKyAgICBlczNmVW5p
Zm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5nbGVTdHJ1Y3RDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIC8qKkB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5
cGV9Ki8gdmFyIHR5cGVTID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY1N0cnVjdCgnUycpOworICAg
ICAgICB0eXBlUy5hZGRNZW1iZXIoJ2EnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVC
YXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLCBnbHNVbmlmb3JtQmxvY2tDYXNl
LlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCksIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUZsYWdzLlVOVVNFRF9CT1RIKTsgLy8gRmlyc3QgbWVtYmVyIGlzIHVudXNlZC4KKyAgICAgICAg
dHlwZVMuYWRkTWVtYmVyKCdiJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlQXJyYXko
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05f
TUVESVVNKSwgNCkpOworICAgICAgICB0eXBlUy5hZGRNZW1iZXIoJ2MnLCBnbHNVbmlmb3JtQmxv
Y2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQs
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSk7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFy
IGJsb2NrID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY0Jsb2NrKCdCbG9jaycpOworICAgICAgICBi
bG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ3MnLCBnbHNV
bmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVTdHJ1Y3QodHlwZVMpLCAwKSk7CisgICAgICAgIGJs
b2NrLnNldEZsYWdzKHRoaXMubV9sYXlvdXRGbGFncyk7CisKKyAgICAgICAgaWYgKHRoaXMubV9u
dW1JbnN0YW5jZXMgPiAwKSB7CisgICAgICAgICAgICBibG9jay5zZXRJbnN0YW5jZU5hbWUoJ2Js
b2NrJyk7CisgICAgICAgICAgICBibG9jay5zZXRBcnJheVNpemUodGhpcy5tX251bUluc3RhbmNl
cyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1CbG9j
a1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0QXJyYXlDYXNlIGNvbnN0cnVjdG9yCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZXN0CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxheW91dEZsYWdzCisgICAgICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tD
YXNlLkJ1ZmZlck1vZGV9IGJ1ZmZlck1vZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtSW5z
dGFuY2VzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1VuaWZvcm1C
bG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUJsb2Nr
VGVzdHMuQmxvY2tTaW5nbGVTdHJ1Y3RBcnJheUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlw
dGlvbiwgbGF5b3V0RmxhZ3MsIGJ1ZmZlck1vZGUsIG51bUluc3RhbmNlcykgeworICAgICAgICBn
bHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNj
cmlwdGlvbiwgYnVmZmVyTW9kZSk7CisgICAgICAgIHRoaXMubV9sYXlvdXRGbGFncyA9IGxheW91
dEZsYWdzOworICAgICAgICB0aGlzLm1fbnVtSW5zdGFuY2VzID0gbnVtSW5zdGFuY2VzOworICAg
IH07CisKKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5nbGVTdHJ1Y3RBcnJheUNh
c2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1C
bG9ja0Nhc2UucHJvdG90eXBlKTsKKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5n
bGVTdHJ1Y3RBcnJheUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlVuaWZvcm1CbG9j
a1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0QXJyYXlDYXNlOworCisgICAgZXMzZlVuaWZvcm1CbG9j
a1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0QXJyYXlDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIC8qKkB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9
Ki8gdmFyIHR5cGVTID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY1N0cnVjdCgnUycpOworICAgICAg
ICB0eXBlUy5hZGRNZW1iZXIoJ2EnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNp
YyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVu
aWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCksIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZs
YWdzLlVOVVNFRF9CT1RIKTsgLy8gRmlyc3QgbWVtYmVyIGlzIHVudXNlZC4KKyAgICAgICAgdHlw
ZVMuYWRkTWVtYmVyKCdiJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlQXJyYXkoZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5G
TE9BVF9NQVQzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUVE
SVVNKSwgNCkpOworICAgICAgICB0eXBlUy5hZGRNZW1iZXIoJ2MnLCBnbHNVbmlmb3JtQmxvY2tD
YXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIGds
c1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJs
b2NrID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY0Jsb2NrKCdCbG9jaycpOworICAgICAgICBibG9j
ay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ3UnLCBnbHNVbmlm
b3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQs
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9MT1cpKSk7CisgICAg
ICAgIGJsb2NrLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgncycs
IGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUFycmF5KGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
bmV3VmFyVHlwZVN0cnVjdCh0eXBlUyksIDMpKSk7CisgICAgICAgIGJsb2NrLmFkZFVuaWZvcm0o
bmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgndicsIGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
bmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNCwgZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSkpKTsKKyAgICAgICAg
YmxvY2suc2V0RmxhZ3ModGhpcy5tX2xheW91dEZsYWdzKTsKKworICAgICAgICBpZiAodGhpcy5t
X251bUluc3RhbmNlcyA+IDApIHsKKyAgICAgICAgICAgIGJsb2NrLnNldEluc3RhbmNlTmFtZSgn
YmxvY2snKTsKKyAgICAgICAgICAgIGJsb2NrLnNldEFycmF5U2l6ZSh0aGlzLm1fbnVtSW5zdGFu
Y2VzKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmVW5pZm9ybUJs
b2NrVGVzdHMuQmxvY2tTaW5nbGVOZXN0ZWRTdHJ1Y3RDYXNlIGNvbnN0cnVjdG9yCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHRlc3QKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZXN0CisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxheW91dEZsYWdzCisgICAgICogQHBhcmFtIHtnbHNVbmlmb3JtQmxv
Y2tDYXNlLkJ1ZmZlck1vZGV9IGJ1ZmZlck1vZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVt
SW5zdGFuY2VzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUJs
b2NrVGVzdHMuQmxvY2tTaW5nbGVOZXN0ZWRTdHJ1Y3RDYXNlID0gZnVuY3Rpb24obmFtZSwgZGVz
Y3JpcHRpb24sIGxheW91dEZsYWdzLCBidWZmZXJNb2RlLCBudW1JbnN0YW5jZXMpIHsKKyAgICAg
ICAgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2tDYXNlLmNhbGwodGhpcywgbmFtZSwg
ZGVzY3JpcHRpb24sIGJ1ZmZlck1vZGUpOworICAgICAgICB0aGlzLm1fbGF5b3V0RmxhZ3MgPSBs
YXlvdXRGbGFnczsKKyAgICAgICAgdGhpcy5tX251bUluc3RhbmNlcyA9IG51bUluc3RhbmNlczsK
KyAgICB9OworCisgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlTmVzdGVkU3Ry
dWN0Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9j
a1NpbmdsZU5lc3RlZFN0cnVjdENhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlVuaWZv
cm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlTmVzdGVkU3RydWN0Q2FzZTsKKworICAgIGVzM2ZVbmlm
b3JtQmxvY2tUZXN0cy5CbG9ja1NpbmdsZU5lc3RlZFN0cnVjdENhc2UucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3Ry
dWN0VHlwZX0qLyB2YXIgdHlwZVMgPSB0aGlzLm1faW50ZXJmYWNlLmFsbG9jU3RydWN0KCdTJyk7
CisgICAgICAgIHR5cGVTLmFkZE1lbWJlcignYScsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFy
VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzMsIGdsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSk7CisgICAgICAgIHR5cGVTLmFkZE1l
bWJlcignYicsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUFycmF5KGdsc1VuaWZvcm1C
bG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
MywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSksIDQp
KTsKKyAgICAgICAgdHlwZVMuYWRkTWVtYmVyKCdjJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdW
YXJUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0LCBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCksIGdsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybUZsYWdzLlVOVVNFRF9CT1RIKTsKKworICAgICAgICAvKipAdHlwZSB7Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlfSovIHZhciB0eXBlVCA9IHRoaXMubV9pbnRlcmZhY2Uu
YWxsb2NTdHJ1Y3QoJ1QnKTsKKyAgICAgICAgdHlwZVQuYWRkTWVtYmVyKCdhJywgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5uZXdWYXJUeXBlQmFzaWMoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9N
QVQzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUVESVVNKSk7
CisgICAgICAgIHR5cGVULmFkZE1lbWJlcignYicsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFy
VHlwZVN0cnVjdCh0eXBlUykpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtQmxvY2t9ICovIHZhciBibG9jayA9IHRoaXMubV9pbnRlcmZhY2UuYWxsb2NC
bG9jaygnQmxvY2snKTsKKyAgICAgICAgYmxvY2suYWRkVW5pZm9ybShuZXcgZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5Vbmlmb3JtKCdzJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlU3RydWN0
KHR5cGVTKSwgMCkpOworICAgICAgICBibG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxv
Y2tDYXNlLlVuaWZvcm0oJ3YnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUZsYWdzLlBSRUNJU0lPTl9MT1cpLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFn
cy5VTlVTRURfQk9USCkpOworICAgICAgICBibG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm0oJ3QnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVTdHJ1
Y3QodHlwZVQpLCAwKSk7CisgICAgICAgIGJsb2NrLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1C
bG9ja0Nhc2UuVW5pZm9ybSgndScsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2lj
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuUFJFQ0lTSU9OX0hJR0gpLCAwKSk7CisgICAgICAgIGJsb2NrLnNldEZsYWdzKHRoaXMu
bV9sYXlvdXRGbGFncyk7CisKKyAgICAgICAgaWYgKHRoaXMubV9udW1JbnN0YW5jZXMgPiAwKSB7
CisgICAgICAgICAgICBibG9jay5zZXRJbnN0YW5jZU5hbWUoJ2Jsb2NrJyk7CisgICAgICAgICAg
ICBibG9jay5zZXRBcnJheVNpemUodGhpcy5tX251bUluc3RhbmNlcyk7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgLyoqCisgICAgICogZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xl
TmVzdGVkU3RydWN0QXJyYXlDYXNlIGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3Jp
cHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZXN0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxheW91dEZsYWdzCisgICAgICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1v
ZGV9IGJ1ZmZlck1vZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtSW5zdGFuY2VzCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUJsb2NrQ2FzZX0KKyAgICAgKi8KKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tT
aW5nbGVOZXN0ZWRTdHJ1Y3RBcnJheUNhc2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwg
bGF5b3V0RmxhZ3MsIGJ1ZmZlck1vZGUsIG51bUluc3RhbmNlcykgeworICAgICAgICBnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlv
biwgYnVmZmVyTW9kZSk7CisgICAgICAgIHRoaXMubV9sYXlvdXRGbGFncyA9IGxheW91dEZsYWdz
OworICAgICAgICB0aGlzLm1fbnVtSW5zdGFuY2VzID0gbnVtSW5zdGFuY2VzOworICAgIH07CisK
KyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5nbGVOZXN0ZWRTdHJ1Y3RBcnJheUNh
c2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1C
bG9ja0Nhc2UucHJvdG90eXBlKTsKKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5n
bGVOZXN0ZWRTdHJ1Y3RBcnJheUNhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlVuaWZv
cm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlTmVzdGVkU3RydWN0QXJyYXlDYXNlOworCisgICAgZXMz
ZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlTmVzdGVkU3RydWN0QXJyYXlDYXNlLnByb3Rv
dHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKkB0eXBlIHtnbHNVbmlmb3JtQmxv
Y2tDYXNlLlN0cnVjdFR5cGV9Ki8gdmFyIHR5cGVTID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY1N0
cnVjdCgnUycpOworICAgICAgICB0eXBlUy5hZGRNZW1iZXIoJ2EnLCBnbHNVbmlmb3JtQmxvY2tD
YXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzLCBnbHNV
bmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCkpOworICAgICAgICB0
eXBlUy5hZGRNZW1iZXIoJ2InLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVBcnJheShn
bHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LklOVF9WRUMyLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUVE
SVVNKSwgNCkpOworICAgICAgICB0eXBlUy5hZGRNZW1iZXIoJ2MnLCBnbHNVbmlmb3JtQmxvY2tD
YXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIGds
c1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSwgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0JPVEgpOworCisgICAgICAgIC8qKkB0eXBl
IHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9Ki8gdmFyIHR5cGVUID0gdGhpcy5tX2lu
dGVyZmFjZS5hbGxvY1N0cnVjdCgnVCcpOworICAgICAgICB0eXBlVC5hZGRNZW1iZXIoJ2EnLCBn
bHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDMsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9N
RURJVU0pKTsKKyAgICAgICAgdHlwZVQuYWRkTWVtYmVyKCdiJywgZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5uZXdWYXJUeXBlQXJyYXkoZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlU3RydWN0KHR5
cGVTKSwgMykpOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtQmxvY2t9ICovIHZhciBibG9jayA9IHRoaXMubV9pbnRlcmZhY2UuYWxsb2NCbG9jaygnQmxv
Y2snKTsKKyAgICAgICAgYmxvY2suYWRkVW5pZm9ybShuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5V
bmlmb3JtKCdzJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlU3RydWN0KHR5cGVTKSwg
MCkpOworICAgICAgICBibG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVu
aWZvcm0oJ3YnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzIsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdz
LlBSRUNJU0lPTl9MT1cpLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5VTlVTRURf
Qk9USCkpOworICAgICAgICBibG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNl
LlVuaWZvcm0oJ3QnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVBcnJheShnbHNVbmlm
b3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVTdHJ1Y3QodHlwZVQpLCAyKSwgMCkpOworICAgICAgICBi
bG9jay5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ3UnLCBnbHNV
bmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJ
TlQsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSwgMCkp
OworICAgICAgICBibG9jay5zZXRGbGFncyh0aGlzLm1fbGF5b3V0RmxhZ3MpOworCisgICAgICAg
IGlmICh0aGlzLm1fbnVtSW5zdGFuY2VzID4gMCkgeworICAgICAgICAgICAgYmxvY2suc2V0SW5z
dGFuY2VOYW1lKCdibG9jaycpOworICAgICAgICAgICAgYmxvY2suc2V0QXJyYXlTaXplKHRoaXMu
bV9udW1JbnN0YW5jZXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVz
M2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja011bHRpQmFzaWNUeXBlc0Nhc2UgY29uc3RydWN0b3IK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdAorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHRlc3QK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ3NBCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZs
YWdzQgorICAgICAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlfSBidWZm
ZXJNb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUluc3RhbmNlcworICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9j
a0Nhc2V9CisgICAgICovCisgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrTXVsdGlCYXNp
Y1R5cGVzQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBmbGFnc0EsIGZsYWdzQiwg
YnVmZmVyTW9kZSwgbnVtSW5zdGFuY2VzKSB7CisgICAgICAgIGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUJsb2NrQ2FzZS5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uLCBidWZmZXJNb2Rl
KTsKKyAgICAgICAgdGhpcy5tX2ZsYWdzQSA9IGZsYWdzQTsKKyAgICAgICAgdGhpcy5tX2ZsYWdz
QiA9IGZsYWdzQjsKKyAgICAgICAgdGhpcy5tX251bUluc3RhbmNlcyA9IG51bUluc3RhbmNlczsK
KyAgICB9OworCisgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrTXVsdGlCYXNpY1R5cGVz
Q2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUJsb2NrQ2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja011
bHRpQmFzaWNUeXBlc0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlVuaWZvcm1CbG9j
a1Rlc3RzLkJsb2NrTXVsdGlCYXNpY1R5cGVzQ2FzZTsKKworICAgIGVzM2ZVbmlmb3JtQmxvY2tU
ZXN0cy5CbG9ja011bHRpQmFzaWNUeXBlc0Nhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30g
Ki8gdmFyIGJsb2NrQSA9IHRoaXMubV9pbnRlcmZhY2UuYWxsb2NCbG9jaygnQmxvY2tBJyk7Cisg
ICAgICAgIGJsb2NrQS5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0o
J2EnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FULCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05f
SElHSCkpKTsKKyAgICAgICAgYmxvY2tBLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybSgnYicsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1G
bGFncy5QUkVDSVNJT05fTE9XKSwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5V
U0VEX0JPVEgpKTsKKyAgICAgICAgYmxvY2tBLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybSgnYycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMiwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSkpKTsKKyAgICAgICAgYmxvY2tBLnNldEluc3RhbmNl
TmFtZSgnYmxvY2tBJyk7CisgICAgICAgIGJsb2NrQS5zZXRGbGFncyh0aGlzLm1fZmxhZ3NBKTsK
KworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrfSAq
LyB2YXIgYmxvY2tCID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY0Jsb2NrKCdCbG9ja0InKTsKKyAg
ICAgICAgYmxvY2tCLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgn
YScsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUMywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lT
SU9OX01FRElVTSkpKTsKKyAgICAgICAgYmxvY2tCLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1C
bG9ja0Nhc2UuVW5pZm9ybSgnYicsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2lj
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUZsYWdzLlBSRUNJU0lPTl9MT1cpKSk7CisgICAgICAgIGJsb2NrQi5hZGRVbmlmb3JtKG5l
dyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ2MnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5l
d1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSwgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0JPVEgpKTsKKyAgICAgICAgYmxvY2tCLmFkZFVuaWZv
cm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgnZCcsIGdsc1VuaWZvcm1CbG9ja0Nh
c2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTCwgMCkpKTsKKyAg
ICAgICAgYmxvY2tCLnNldEluc3RhbmNlTmFtZSgnYmxvY2tCJyk7CisgICAgICAgIGJsb2NrQi5z
ZXRGbGFncyh0aGlzLm1fZmxhZ3NCKTsKKworICAgICAgICBpZiAodGhpcy5tX251bUluc3RhbmNl
cyA+IDApIHsKKyAgICAgICAgICAgIGJsb2NrQS5zZXRBcnJheVNpemUodGhpcy5tX251bUluc3Rh
bmNlcyk7CisgICAgICAgICAgICBibG9ja0Iuc2V0QXJyYXlTaXplKHRoaXMubV9udW1JbnN0YW5j
ZXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGVzM2ZVbmlmb3JtQmxv
Y2tUZXN0cy5CbG9ja011bHRpTmVzdGVkU3RydWN0Q2FzZSBjb25zdHJ1Y3RvcgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0ZXN0CisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGVzdAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBmbGFnc0EKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ3NCCisgICAg
ICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGV9IGJ1ZmZlck1vZGUKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gbnVtSW5zdGFuY2VzCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZX0KKyAg
ICAgKi8KKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tNdWx0aU5lc3RlZFN0cnVjdENh
c2UgPSBmdW5jdGlvbihuYW1lLCBkZXNjcmlwdGlvbiwgZmxhZ3NBLCBmbGFnc0IsIGJ1ZmZlck1v
ZGUsIG51bUluc3RhbmNlcykgeworICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1C
bG9ja0Nhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgYnVmZmVyTW9kZSk7CisgICAg
ICAgIHRoaXMubV9mbGFnc0EgPSBmbGFnc0E7CisgICAgICAgIHRoaXMubV9mbGFnc0IgPSBmbGFn
c0I7CisgICAgICAgIHRoaXMubV9udW1JbnN0YW5jZXMgPSBudW1JbnN0YW5jZXM7CisgICAgfTsK
KworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja011bHRpTmVzdGVkU3RydWN0Q2FzZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2Nr
Q2FzZS5wcm90b3R5cGUpOworICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja011bHRpTmVz
dGVkU3RydWN0Q2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVW5pZm9ybUJsb2NrVGVz
dHMuQmxvY2tNdWx0aU5lc3RlZFN0cnVjdENhc2U7CisKKyAgICBlczNmVW5pZm9ybUJsb2NrVGVz
dHMuQmxvY2tNdWx0aU5lc3RlZFN0cnVjdENhc2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLyoqQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZX0qLyB2
YXIgdHlwZVMgPSB0aGlzLm1faW50ZXJmYWNlLmFsbG9jU3RydWN0KCdTJyk7CisgICAgICAgIHR5
cGVTLmFkZE1lbWJlcignYScsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtRmxhZ3MuUFJFQ0lTSU9OX0xPVykpOworICAgICAgICB0eXBlUy5hZGRNZW1iZXIoJ2InLCBn
bHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVBcnJheShnbHNVbmlmb3JtQmxvY2tDYXNlLm5l
d1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLCBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUVESVVNKSwgNCkpOworICAgICAgICB0
eXBlUy5hZGRNZW1iZXIoJ2MnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSk7CisKKyAgICAgICAgLyoqQHR5cGUge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuU3RydWN0VHlwZX0qLyB2YXIgdHlwZVQgPSB0aGlzLm1faW50ZXJmYWNlLmFs
bG9jU3RydWN0KCdUJyk7CisgICAgICAgIHR5cGVULmFkZE1lbWJlcignYScsIGdsc1VuaWZvcm1C
bG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSksIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlVOVVNFRF9CT1RIKTsKKyAgICAgICAgdHlwZVQuYWRk
TWVtYmVyKCdiJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlU3RydWN0KHR5cGVTKSk7
CisgICAgICAgIHR5cGVULmFkZE1lbWJlcignYycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFy
VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0LCAwKSk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJs
b2NrQSA9IHRoaXMubV9pbnRlcmZhY2UuYWxsb2NCbG9jaygnQmxvY2tBJyk7CisgICAgICAgIGJs
b2NrQS5hZGRVbmlmb3JtKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm0oJ2EnLCBnbHNV
bmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyhnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FULCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCkpKTsK
KyAgICAgICAgYmxvY2tBLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bSgnYicsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZVN0cnVjdCh0eXBlUykpKTsKKyAg
ICAgICAgYmxvY2tBLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgn
YycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuVUlOVF9WRUMzLCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJ
T05fTE9XKSwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0JPVEgpKTsK
KyAgICAgICAgYmxvY2tBLnNldEluc3RhbmNlTmFtZSgnYmxvY2tBJyk7CisgICAgICAgIGJsb2Nr
QS5zZXRGbGFncyh0aGlzLm1fZmxhZ3NBKTsKKworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrfSAqLyB2YXIgYmxvY2tCID0gdGhpcy5tX2ludGVyZmFj
ZS5hbGxvY0Jsb2NrKCdCbG9ja0InKTsKKyAgICAgICAgYmxvY2tCLmFkZFVuaWZvcm0obmV3IGds
c1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgnYScsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFy
VHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMiwgZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSkpKTsKKyAgICAgICAgYmxvY2tC
LmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgnYicsIGdsc1VuaWZv
cm1CbG9ja0Nhc2UubmV3VmFyVHlwZVN0cnVjdCh0eXBlVCkpKTsKKyAgICAgICAgYmxvY2tCLmFk
ZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgnYycsIGdsc1VuaWZvcm1C
bG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0
LCAwKSwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0JPVEgpKTsKKyAg
ICAgICAgYmxvY2tCLmFkZFVuaWZvcm0obmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSgn
ZCcsIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuQk9PTCwgMCkpKTsKKyAgICAgICAgYmxvY2tCLnNldEluc3RhbmNlTmFtZSgnYmxvY2tC
Jyk7CisgICAgICAgIGJsb2NrQi5zZXRGbGFncyh0aGlzLm1fZmxhZ3NCKTsKKworICAgICAgICBp
ZiAodGhpcy5tX251bUluc3RhbmNlcyA+IDApIHsKKyAgICAgICAgICAgIGJsb2NrQS5zZXRBcnJh
eVNpemUodGhpcy5tX251bUluc3RhbmNlcyk7CisgICAgICAgICAgICBibG9ja0Iuc2V0QXJyYXlT
aXplKHRoaXMubV9udW1JbnN0YW5jZXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIENyZWF0ZXMgdGhlIHRlc3QgaGllcmFyY2h5IHRvIGJlIGV4ZWN1dGVkLgorICAgICAq
Ki8KKyAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAvKiogQGNvbnN0IEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8gdmFyIHRlc3RHcm91
cCA9IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXN0Q2FzZXM7CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8KKyAgICAgICAgdmFyIGJhc2ljVHlwZXMg
PSBbCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FULAorICAgICAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyLAorICAgICAgICAgICAgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9WRUM0LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMyLAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMywKKyAgICAgICAgICAgIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLlVJTlQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVD
MiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzLAorICAgICAg
ICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQsCisgICAgICAgICAgICBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkJPT0xfVkVDMiwKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9W
RUMzLAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQsCisgICAg
ICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDIsCisgICAgICAgICAgICBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDMsCisgICAgICAgICAgICBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUX01BVDQsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkZMT0FUX01BVDJYMywKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfTUFUMlg0LAorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQz
WDIsCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNCwKKyAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgyLAorICAgICAgICAg
ICAgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDMKKyAgICAgICAgXTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PE9iamVjdC48c3RyaW5nLCBnbHNVbmlmb3JtQmxvY2tDYXNl
LlVuaWZvcm1GbGFncz4+fSAqLworICAgICAgICB2YXIgcHJlY2lzaW9uRmxhZ3MgPSBbeyBuYW1l
OiAnbG93cCcsIGZsYWdzOiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJ
T05fTE9XIH0sIHsgbmFtZTogJ21lZGl1bXAnLCBmbGFnczogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5V
bmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01FRElVTSB9LCB7IG5hbWU6ICdoaWdocCcsIGZsYWdzOiBn
bHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCB9CisgICAgICAg
IF07CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxPYmplY3QuPHN0cmluZywgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3M+Pn0gKi8KKyAgICAgICAgdmFyIGxheW91dEZsYWdzID0g
WyAvKiB7IG5hbWU6ICdzaGFyZWQnLCBmbGFnczogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuTEFZT1VUX1NIQVJFRCB9LCAqLworICAgICAgICAgICAgLyogeyBuYW1lOiAncGFja2Vk
JywgZmxhZ3M6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9QQUNLRUQg
fSwgKi8geyBuYW1lOiAnc3RkMTQwJywgZmxhZ3M6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUZsYWdzLkxBWU9VVF9TVEQxNDAgfQorICAgICAgICBdOworCisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8T2JqZWN0LjxzdHJpbmcsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzPj59
ICovCisgICAgICAgIHZhciBtYXRyaXhGbGFncyA9IFt7IG5hbWU6ICdyb3dfbWFqb3InLCBmbGFn
czogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1JPV19NQUpPUiB9LCB7
IG5hbWU6ICdjb2x1bW5fbWFqb3InLCBmbGFnczogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuTEFZT1VUX0NPTFVNTl9NQUpPUiB9CisgICAgICAgIF07CisKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxPYmplY3QuPHN0cmluZywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxh
Z3M+Pn0gKi8KKyAgICAgICAgdmFyIGJ1ZmZlck1vZGVzID0gW3sgbmFtZTogJ3Blcl9ibG9ja19i
dWZmZXInLCBtb2RlOiBnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGUuQlVGRkVSTU9ERV9Q
RVJfQkxPQ0sgfSwgeyBuYW1lOiAnc2luZ2xlX2J1ZmZlcicsIG1vZGU6IGdsc1VuaWZvcm1CbG9j
a0Nhc2UuQnVmZmVyTW9kZS5CVUZGRVJNT0RFX1NJTkdMRSB9CisgICAgICAgIF07CisKKyAgICAg
ICAgLy8gdWJvLnNpbmdsZV9iYXNpY190eXBlCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENh
c2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBzaW5nbGVCYXNpY1R5cGVHcm91cCA9IHRjdVRl
c3RDYXNlLm5ld1Rlc3QoJ3NpbmdsZV9iYXNpY190eXBlJywgJ1NpbmdsZSBiYXNpYyB2YXJpYWJs
ZSBpbiBzaW5nbGUgYnVmZmVyJyk7CisKKyAgICAgICAgdGVzdEdyb3VwLmFkZENoaWxkKHNpbmds
ZUJhc2ljVHlwZUdyb3VwKTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBU
ZXN0fSAqLworICAgICAgICB2YXIgbGF5b3V0R3JvdXA7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1
U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8KKyAgICAgICAgdmFyIHR5cGU7CisgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLworICAgICAgICB2YXIgdHlwZU5hbWU7CisgICAgICAgIC8qKiBAdHlw
ZSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBtb2RlR3JvdXA7CisgICAg
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLworICAgICAgICB2YXIgYmFzZU5hbWU7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgICB2YXIgYmFzZUZsYWdzOworCisgICAgICAg
IGZvciAodmFyIGxheW91dEZsYWdOZHggPSAwOyBsYXlvdXRGbGFnTmR4IDwgbGF5b3V0RmxhZ3Mu
bGVuZ3RoOyBsYXlvdXRGbGFnTmR4KyspIHsKKworICAgICAgICAgICAgbGF5b3V0R3JvdXAgPSB0
Y3VUZXN0Q2FzZS5uZXdUZXN0KGxheW91dEZsYWdzW2xheW91dEZsYWdOZHhdLm5hbWUsICcnLCBu
dWxsKTsKKyAgICAgICAgICAgIHNpbmdsZUJhc2ljVHlwZUdyb3VwLmFkZENoaWxkKGxheW91dEdy
b3VwKTsKKworICAgICAgICAgICAgZm9yICh2YXIgYmFzaWNUeXBlTmR4ID0gMDsgYmFzaWNUeXBl
TmR4IDwgYmFzaWNUeXBlcy5sZW5ndGg7IGJhc2ljVHlwZU5keCsrKSB7CisgICAgICAgICAgICAg
ICAgdHlwZSA9IGJhc2ljVHlwZXNbYmFzaWNUeXBlTmR4XTsKKyAgICAgICAgICAgICAgICB0eXBl
TmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHR5cGUpOworCisgICAgICAgICAg
ICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWModHlwZSkpCisgICAg
ICAgICAgICAgICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVCbG9ja0Jhc2ljVHlw
ZUNhc2VzKGxheW91dEdyb3VwLCB0eXBlTmFtZSwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJU
eXBlQmFzaWModHlwZSwgMCksIGxheW91dEZsYWdzW2xheW91dEZsYWdOZHhdLmZsYWdzKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJlY05k
eCA9IDA7IHByZWNOZHggPCBwcmVjaXNpb25GbGFncy5sZW5ndGg7IHByZWNOZHgrKykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVCbG9ja0Jhc2lj
VHlwZUNhc2VzKGxheW91dEdyb3VwLCBwcmVjaXNpb25GbGFnc1twcmVjTmR4XS5uYW1lICsgJ18n
ICsgdHlwZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNl
Lm5ld1ZhclR5cGVCYXNpYyh0eXBlLCBwcmVjaXNpb25GbGFnc1twcmVjTmR4XS5mbGFncyksIGxh
eW91dEZsYWdzW2xheW91dEZsYWdOZHhdLmZsYWdzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHR5cGUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG1hdEZsYWdOZHggPSAwOyBtYXRGbGFnTmR4
IDwgbWF0cml4RmxhZ3MubGVuZ3RoOyBtYXRGbGFnTmR4KyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIHByZWNOZHggPSAwOyBwcmVjTmR4IDwgcHJlY2lzaW9uRmxhZ3MubGVu
Z3RoOyBwcmVjTmR4KyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1C
bG9ja1Rlc3RzLmNyZWF0ZUJsb2NrQmFzaWNUeXBlQ2FzZXMobGF5b3V0R3JvdXAsIG1hdHJpeEZs
YWdzW21hdEZsYWdOZHhdLm5hbWUgKyAnXycgKyBwcmVjaXNpb25GbGFnc1twcmVjTmR4XS5uYW1l
ICsgJ18nICsgdHlwZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5uZXdWYXJUeXBlQmFzaWModHlwZSwgcHJlY2lzaW9uRmxhZ3NbcHJlY05keF0u
ZmxhZ3MpLCBsYXlvdXRGbGFnc1tsYXlvdXRGbGFnTmR4XS5mbGFncyB8IG1hdHJpeEZsYWdzW21h
dEZsYWdOZHhdLmZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgndWJvLnNpbmdsZV9iYXNpY190eXBlOiBUZXN0cyBjcmVhdGVkJyk7CisKKyAgICAgICAgLy8g
dWJvLnNpbmdsZV9iYXNpY19hcnJheQorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRl
cXBUZXN0fSAqLworICAgICAgICB2YXIgc2luZ2xlQmFzaWNBcnJheUdyb3VwID0gdGN1VGVzdENh
c2UubmV3VGVzdCgnc2luZ2xlX2Jhc2ljX2FycmF5JywgJ1NpbmdsZSBiYXNpYyBhcnJheSB2YXJp
YWJsZSBpbiBzaW5nbGUgYnVmZmVyJyk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChzaW5n
bGVCYXNpY0FycmF5R3JvdXApOworCisgICAgICAgIGZvciAodmFyIGxheW91dEZsYWdOZHggPSAw
OyBsYXlvdXRGbGFnTmR4IDwgbGF5b3V0RmxhZ3MubGVuZ3RoOyBsYXlvdXRGbGFnTmR4KyspIHsK
KyAgICAgICAgICAgIGxheW91dEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChsYXlvdXRGbGFn
c1tsYXlvdXRGbGFnTmR4XS5uYW1lLCAnJywgbnVsbCk7CisgICAgICAgICAgICBzaW5nbGVCYXNp
Y0FycmF5R3JvdXAuYWRkQ2hpbGQobGF5b3V0R3JvdXApOworCisgICAgICAgICAgICBmb3IgKHZh
ciBiYXNpY1R5cGVOZHggPSAwOyBiYXNpY1R5cGVOZHggPCBiYXNpY1R5cGVzLmxlbmd0aDsgYmFz
aWNUeXBlTmR4KyspIHsKKyAgICAgICAgICAgICAgICB0eXBlID0gYmFzaWNUeXBlc1tiYXNpY1R5
cGVOZHhdOworICAgICAgICAgICAgICAgIHR5cGVOYW1lID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZU5hbWUodHlwZSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBhcnJheVNpemUgPSAzOworCisgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3Rz
LmNyZWF0ZUJsb2NrQmFzaWNUeXBlQ2FzZXMobGF5b3V0R3JvdXAsIHR5cGVOYW1lLAorICAgICAg
ICAgICAgICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVBcnJheShnbHNVbmlm
b3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyh0eXBlLCBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5
cGVCb29sT3JCVmVjKHR5cGUpID8gMCA6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdz
LlBSRUNJU0lPTl9ISUdIKSwgYXJyYXlTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0
RmxhZ3NbbGF5b3V0RmxhZ05keF0uZmxhZ3MpOworCisgICAgICAgICAgICAgICAgaWYgKGdsdVNo
YWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBtYXRGbGFnTmR4ID0gMDsgbWF0RmxhZ05keCA8IG1hdHJpeEZsYWdzLmxlbmd0aDsg
bWF0RmxhZ05keCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1CbG9ja1Rl
c3RzLmNyZWF0ZUJsb2NrQmFzaWNUeXBlQ2FzZXMobGF5b3V0R3JvdXAsIG1hdHJpeEZsYWdzW21h
dEZsYWdOZHhdLm5hbWUgKyAnXycgKyB0eXBlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUFycmF5KGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
bmV3VmFyVHlwZUJhc2ljKHR5cGUsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBS
RUNJU0lPTl9ISUdIKSwgYXJyYXlTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXlvdXRGbGFnc1tsYXlvdXRGbGFnTmR4XS5mbGFncyB8IG1hdHJpeEZsYWdzW21hdEZsYWdOZHhd
LmZsYWdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ3Viby5zaW5nbGVfYmFzaWNfYXJyYXk6IFRlc3Rz
IGNyZWF0ZWQnKTsKKworICAgICAgICAvLyB1Ym8uc2luZ2xlX3N0cnVjdAorICAgICAgICAvKiog
QHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgc2luZ2xlU3RydWN0
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdzaW5nbGVfc3RydWN0JywgJ1NpbmdsZSBzdHJ1
Y3QgaW4gdW5pZm9ybSBibG9jaycpOworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoc2luZ2xl
U3RydWN0R3JvdXApOworCisgICAgICAgIGZvciAodmFyIG1vZGVOZHggPSAwOyBtb2RlTmR4IDwg
YnVmZmVyTW9kZXMubGVuZ3RoOyBtb2RlTmR4KyspIHsKKyAgICAgICAgICAgIG1vZGVHcm91cCA9
IHRjdVRlc3RDYXNlLm5ld1Rlc3QoYnVmZmVyTW9kZXNbbW9kZU5keF0ubmFtZSwgJycpOworICAg
ICAgICAgICAgc2luZ2xlU3RydWN0R3JvdXAuYWRkQ2hpbGQobW9kZUdyb3VwKTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgbGF5b3V0RmxhZ05keCA9IDA7IGxheW91dEZsYWdOZHggPCBsYXlvdXRG
bGFncy5sZW5ndGg7IGxheW91dEZsYWdOZHgrKykgeworICAgICAgICAgICAgICAgIGZvciAodmFy
IGlzQXJyYXkgPSAwOyBpc0FycmF5IDwgMjsgaXNBcnJheSsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGJhc2VOYW1lID0gbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0ubmFtZTsKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZUZsYWdzID0gbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0uZmxhZ3M7
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUgPT0g
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfU0lOR0xFICYmIGlzQXJy
YXkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBEb2Vzbid0IG1h
a2Ugc2Vuc2UgdG8gYWRkIHRoaXMgdmFyaWFudC4KKworICAgICAgICAgICAgICAgICAgICBpZiAo
aXNBcnJheSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VOYW1lICs9ICdfaW5zdGFuY2Vf
YXJyYXknOworCisgICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMz
ZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xlU3RydWN0Q2FzZShiYXNlTmFtZSArICdfdmVy
dGV4JywgJycsIGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRF
Q0xBUkVfVkVSVEVYLCBidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDAp
KTsKKyAgICAgICAgICAgICAgICAgICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9y
bUJsb2NrVGVzdHMuQmxvY2tTaW5nbGVTdHJ1Y3RDYXNlKGJhc2VOYW1lICsgJ19mcmFnbWVudCcs
ICcnLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJF
X0ZSQUdNRU5ULCBidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDApKTsK
KworICAgICAgICAgICAgICAgICAgICBpZiAoIShiYXNlRmxhZ3MgJiBnbHNVbmlmb3JtQmxvY2tD
YXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfUEFDS0VEKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2luZ2xl
U3RydWN0Q2FzZShiYXNlTmFtZSArICdfYm90aCcsICcnLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCB8IGdsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfRlJBR01FTlQsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1v
ZGUsIGlzQXJyYXkgPyAzIDogMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgndWJvLnNpbmdsZV9zdHJ1
Y3Q6IFRlc3RzIGNyZWF0ZWQnKTsKKworICAgICAgICAvLyB1Ym8uc2luZ2xlX3N0cnVjdF9hcnJh
eQorICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2
YXIgc2luZ2xlU3RydWN0QXJyYXlHcm91cCA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3NpbmdsZV9z
dHJ1Y3RfYXJyYXknLCAnU3RydWN0IGFycmF5IGluIG9uZSB1bmlmb3JtIGJsb2NrJyk7CisgICAg
ICAgIHRlc3RHcm91cC5hZGRDaGlsZChzaW5nbGVTdHJ1Y3RBcnJheUdyb3VwKTsKKworICAgICAg
ICBmb3IgKHZhciBtb2RlTmR4ID0gMDsgbW9kZU5keCA8IGJ1ZmZlck1vZGVzLmxlbmd0aDsgbW9k
ZU5keCsrKSB7CisgICAgICAgICAgICBtb2RlR3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KGJ1
ZmZlck1vZGVzW21vZGVOZHhdLm5hbWUsICcnKTsKKyAgICAgICAgICAgIHNpbmdsZVN0cnVjdEFy
cmF5R3JvdXAuYWRkQ2hpbGQobW9kZUdyb3VwKTsKKworICAgICAgICAgICAgZm9yICh2YXIgbGF5
b3V0RmxhZ05keCA9IDA7IGxheW91dEZsYWdOZHggPCBsYXlvdXRGbGFncy5sZW5ndGg7IGxheW91
dEZsYWdOZHgrKykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGlzQXJyYXkgPSAwOyBpc0Fy
cmF5IDwgMjsgaXNBcnJheSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJhc2VOYW1lID0gbGF5
b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZUZs
YWdzID0gbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0uZmxhZ3M7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUgPT0gZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfU0lOR0xFICYmIGlzQXJyYXkgPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYWRkIHRo
aXMgdmFyaWFudC4KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VOYW1lICs9ICdfaW5zdGFuY2VfYXJyYXknOworCisgICAgICAg
ICAgICAgICAgICAgIG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3Rz
LkJsb2NrU2luZ2xlU3RydWN0QXJyYXlDYXNlKGJhc2VOYW1lICsgJ192ZXJ0ZXgnLCAnJywgYmFz
ZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9WRVJURVgs
IGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDogMCkpOworICAgICAgICAg
ICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5C
bG9ja1NpbmdsZVN0cnVjdEFycmF5Q2FzZShiYXNlTmFtZSArICdfZnJhZ21lbnQnLCAnJywgYmFz
ZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9GUkFHTUVO
VCwgYnVmZmVyTW9kZXNbbW9kZU5keF0ubW9kZSwgaXNBcnJheSA/IDMgOiAwKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCEoYmFzZUZsYWdzICYgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtRmxhZ3MuTEFZT1VUX1BBQ0tFRCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlR3Jv
dXAuYWRkQ2hpbGQobmV3IGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja1NpbmdsZVN0cnVjdEFy
cmF5Q2FzZShiYXNlTmFtZSArICdfYm90aCcsICcnLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxv
Y2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCB8IGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUZsYWdzLkRFQ0xBUkVfRlJBR01FTlQsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUs
IGlzQXJyYXkgPyAzIDogMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgndWJvLnNpbmdsZV9zdHJ1Y3Rf
YXJyYXk6IFRlc3RzIGNyZWF0ZWQnKTsKKworICAgICAgICAvLyB1Ym8uc2luZ2xlX25lc3RlZF9z
dHJ1Y3QKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAg
ICAgdmFyIHNpbmdsZU5lc3RlZFN0cnVjdEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnc2lu
Z2xlX25lc3RlZF9zdHJ1Y3QnLCAnTmVzdGVkIHN0cnVjdCBpbiBvbmUgdW5pZm9ybSBibG9jaycp
OworICAgICAgICB0ZXN0R3JvdXAuYWRkQ2hpbGQoc2luZ2xlTmVzdGVkU3RydWN0R3JvdXApOwor
CisgICAgICAgIGZvciAodmFyIG1vZGVOZHggPSAwOyBtb2RlTmR4IDwgYnVmZmVyTW9kZXMubGVu
Z3RoOyBtb2RlTmR4KyspIHsKKyAgICAgICAgICAgIG1vZGVHcm91cCA9IHRjdVRlc3RDYXNlLm5l
d1Rlc3QoYnVmZmVyTW9kZXNbbW9kZU5keF0ubmFtZSwgJycpOworICAgICAgICAgICAgc2luZ2xl
TmVzdGVkU3RydWN0R3JvdXAuYWRkQ2hpbGQobW9kZUdyb3VwKTsKKworICAgICAgICAgICAgZm9y
ICh2YXIgbGF5b3V0RmxhZ05keCA9IDA7IGxheW91dEZsYWdOZHggPCBsYXlvdXRGbGFncy5sZW5n
dGg7IGxheW91dEZsYWdOZHgrKykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGlzQXJyYXkg
PSAwOyBpc0FycmF5IDwgMjsgaXNBcnJheSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJhc2VO
YW1lID0gbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0ubmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZUZsYWdzID0gbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0uZmxhZ3M7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUgPT0gZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfU0lOR0xFICYmIGlzQXJyYXkgPT0gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBEb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gYWRkIHRoaXMgdmFyaWFudC4KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VOYW1lICs9ICdfaW5zdGFuY2VfYXJyYXknOwor
CisgICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1C
bG9ja1Rlc3RzLkJsb2NrU2luZ2xlTmVzdGVkU3RydWN0Q2FzZShiYXNlTmFtZSArICdfdmVydGV4
JywgJycsIGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xB
UkVfVkVSVEVYLCBidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDApKTsK
KyAgICAgICAgICAgICAgICAgICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9ybUJs
b2NrVGVzdHMuQmxvY2tTaW5nbGVOZXN0ZWRTdHJ1Y3RDYXNlKGJhc2VOYW1lICsgJ19mcmFnbWVu
dCcsICcnLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNM
QVJFX0ZSQUdNRU5ULCBidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDAp
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIShiYXNlRmxhZ3MgJiBnbHNVbmlmb3JtQmxv
Y2tDYXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfUEFDS0VEKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrU2lu
Z2xlTmVzdGVkU3RydWN0Q2FzZShiYXNlTmFtZSArICdfYm90aCcsICcnLCBiYXNlRmxhZ3MgfCBn
bHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCB8IGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfRlJBR01FTlQsIGJ1ZmZlck1vZGVzW21v
ZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDogMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgndWJvLnNp
bmdsZV9uZXN0ZWRfc3RydWN0OiBUZXN0cyBjcmVhdGVkJyk7CisKKyAgICAgICAgLy8gdWJvLnNp
bmdsZV9uZXN0ZWRfc3RydWN0X2FycmF5CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2Uu
RGVxcFRlc3R9ICovCisgICAgICAgIHZhciBzaW5nbGVOZXN0ZWRTdHJ1Y3RBcnJheUdyb3VwID0g
dGN1VGVzdENhc2UubmV3VGVzdCgnc2luZ2xlX25lc3RlZF9zdHJ1Y3RfYXJyYXknLCAnTmVzdGVk
IHN0cnVjdCBhcnJheSBpbiBvbmUgdW5pZm9ybSBibG9jaycpOworICAgICAgICB0ZXN0R3JvdXAu
YWRkQ2hpbGQoc2luZ2xlTmVzdGVkU3RydWN0QXJyYXlHcm91cCk7CisKKyAgICAgICAgZm9yICh2
YXIgbW9kZU5keCA9IDA7IG1vZGVOZHggPCBidWZmZXJNb2Rlcy5sZW5ndGg7IG1vZGVOZHgrKykg
eworICAgICAgICAgICAgbW9kZUdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChidWZmZXJNb2Rl
c1ttb2RlTmR4XS5uYW1lLCAnJyk7CisgICAgICAgICAgICBzaW5nbGVOZXN0ZWRTdHJ1Y3RBcnJh
eUdyb3VwLmFkZENoaWxkKG1vZGVHcm91cCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGxheW91
dEZsYWdOZHggPSAwOyBsYXlvdXRGbGFnTmR4IDwgbGF5b3V0RmxhZ3MubGVuZ3RoOyBsYXlvdXRG
bGFnTmR4KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpc0FycmF5ID0gMDsgaXNBcnJh
eSA8IDI7IGlzQXJyYXkrKykgeworICAgICAgICAgICAgICAgICAgICBiYXNlTmFtZSA9IGxheW91
dEZsYWdzW2xheW91dEZsYWdOZHhdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJhc2VGbGFn
cyA9IGxheW91dEZsYWdzW2xheW91dEZsYWdOZHhdLmZsYWdzOworCisgICAgICAgICAgICAgICAg
ICAgIGlmIChidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlID09IGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
QnVmZmVyTW9kZS5CVUZGRVJNT0RFX1NJTkdMRSAmJiBpc0FycmF5ID09IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9lc24ndCBtYWtlIHNlbnNlIHRvIGFkZCB0aGlz
IHZhcmlhbnQuCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlTmFtZSArPSAnX2luc3RhbmNlX2FycmF5JzsKKworICAgICAgICAg
ICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5C
bG9ja1NpbmdsZU5lc3RlZFN0cnVjdEFycmF5Q2FzZShiYXNlTmFtZSArICdfdmVydGV4JywgJycs
IGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfVkVS
VEVYLCBidWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9ybUJsb2NrVGVz
dHMuQmxvY2tTaW5nbGVOZXN0ZWRTdHJ1Y3RBcnJheUNhc2UoYmFzZU5hbWUgKyAnX2ZyYWdtZW50
JywgJycsIGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xB
UkVfRlJBR01FTlQsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDogMCkp
OworCisgICAgICAgICAgICAgICAgICAgIGlmICghKGJhc2VGbGFncyAmIGdsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9QQUNLRUQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tTaW5n
bGVOZXN0ZWRTdHJ1Y3RBcnJheUNhc2UoYmFzZU5hbWUgKyAnX2JvdGgnLCAnJywgYmFzZUZsYWdz
IHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9WRVJURVggfCBnbHNV
bmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX0ZSQUdNRU5ULCBidWZmZXJNb2Rl
c1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDApKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ3Vi
by5zaW5nbGVfbmVzdGVkX3N0cnVjdF9hcnJheTogVGVzdHMgY3JlYXRlZCcpOworCisgICAgICAg
IC8vIHViby5pbnN0YW5jZV9hcnJheV9iYXNpY190eXBlCisgICAgICAgIC8qKiBAdHlwZSB7dGN1
VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciBpbnN0YW5jZUFycmF5QmFzaWNUeXBl
R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdpbnN0YW5jZV9hcnJheV9iYXNpY190eXBlJywg
J1NpbmdsZSBiYXNpYyB2YXJpYWJsZSBpbiBpbnN0YW5jZSBhcnJheScpOworICAgICAgICB0ZXN0
R3JvdXAuYWRkQ2hpbGQoaW5zdGFuY2VBcnJheUJhc2ljVHlwZUdyb3VwKTsKKworICAgICAgICBm
b3IgKHZhciBsYXlvdXRGbGFnTmR4ID0gMDsgbGF5b3V0RmxhZ05keCA8IGxheW91dEZsYWdzLmxl
bmd0aDsgbGF5b3V0RmxhZ05keCsrKSB7CisgICAgICAgICAgICBsYXlvdXRHcm91cCA9IHRjdVRl
c3RDYXNlLm5ld1Rlc3QobGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0ubmFtZSwgJycpOworICAg
ICAgICAgICAgaW5zdGFuY2VBcnJheUJhc2ljVHlwZUdyb3VwLmFkZENoaWxkKGxheW91dEdyb3Vw
KTsKKworICAgICAgICAgICAgZm9yICh2YXIgYmFzaWNUeXBlTmR4ID0gMDsgYmFzaWNUeXBlTmR4
IDwgYmFzaWNUeXBlcy5sZW5ndGg7IGJhc2ljVHlwZU5keCsrKSB7CisgICAgICAgICAgICAgICAg
dHlwZSA9IGJhc2ljVHlwZXNbYmFzaWNUeXBlTmR4XTsKKyAgICAgICAgICAgICAgICB0eXBlTmFt
ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHR5cGUpOworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtSW5zdGFuY2VzID0gMzsKKworICAgICAgICAg
ICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVCbG9ja0Jhc2ljVHlwZUNhc2VzKGxh
eW91dEdyb3VwLCB0eXBlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5uZXdWYXJUeXBlQmFzaWModHlwZSwgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9y
QlZlYyh0eXBlKSA/IDAgOiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJ
T05fSElHSCksCisgICAgICAgICAgICAgICAgICAgIGxheW91dEZsYWdzW2xheW91dEZsYWdOZHhd
LmZsYWdzLCBudW1JbnN0YW5jZXMpOworCisgICAgICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0
aWwuaXNEYXRhVHlwZU1hdHJpeCh0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBtYXRGbGFnTmR4ID0gMDsgbWF0RmxhZ05keCA8IG1hdHJpeEZsYWdzLmxlbmd0aDsgbWF0Rmxh
Z05keCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLmNy
ZWF0ZUJsb2NrQmFzaWNUeXBlQ2FzZXMobGF5b3V0R3JvdXAsIG1hdHJpeEZsYWdzW21hdEZsYWdO
ZHhdLm5hbWUgKyAnXycgKyB0eXBlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1Vu
aWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZUJhc2ljKHR5cGUsIGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9ISUdIKSwgbGF5b3V0RmxhZ3NbbGF5b3V0RmxhZ05keF0u
ZmxhZ3MgfCBtYXRyaXhGbGFnc1ttYXRGbGFnTmR4XS5mbGFncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1JbnN0YW5jZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgndWJvLmluc3RhbmNl
X2FycmF5X2Jhc2ljX3R5cGU6IFRlc3RzIGNyZWF0ZWQnKTsKKworICAgICAgICAvLyB1Ym8ubXVs
dGlfYmFzaWNfdHlwZXMKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8KKyAgICAgICAgdmFyIG11bHRpQmFzaWNUeXBlc0dyb3VwID0gdGN1VGVzdENhc2UubmV3VGVz
dCgnbXVsdGlfYmFzaWNfdHlwZXMnLCAnTXVsdGlwbGUgYnVmZmVycyB3aXRoIGJhc2ljIHR5cGVz
Jyk7CisgICAgICAgIHRlc3RHcm91cC5hZGRDaGlsZChtdWx0aUJhc2ljVHlwZXNHcm91cCk7CisK
KyAgICAgICAgZm9yICh2YXIgbW9kZU5keCA9IDA7IG1vZGVOZHggPCBidWZmZXJNb2Rlcy5sZW5n
dGg7IG1vZGVOZHgrKykgeworICAgICAgICAgICAgbW9kZUdyb3VwID0gdGN1VGVzdENhc2UubmV3
VGVzdChidWZmZXJNb2Rlc1ttb2RlTmR4XS5uYW1lLCAnJyk7CisgICAgICAgICAgICBtdWx0aUJh
c2ljVHlwZXNHcm91cC5hZGRDaGlsZChtb2RlR3JvdXApOworCisgICAgICAgICAgICBmb3IgKHZh
ciBsYXlvdXRGbGFnTmR4ID0gMDsgbGF5b3V0RmxhZ05keCA8IGxheW91dEZsYWdzLmxlbmd0aDsg
bGF5b3V0RmxhZ05keCsrKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaXNBcnJheSA9IDA7
IGlzQXJyYXkgPCAyOyBpc0FycmF5KyspIHsKKyAgICAgICAgICAgICAgICAgICAgYmFzZU5hbWUg
PSBsYXlvdXRGbGFnc1tsYXlvdXRGbGFnTmR4XS5uYW1lOworICAgICAgICAgICAgICAgICAgICBi
YXNlRmxhZ3MgPSBsYXlvdXRGbGFnc1tsYXlvdXRGbGFnTmR4XS5mbGFnczsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VOYW1l
ICs9ICdfaW5zdGFuY2VfYXJyYXknOworCisgICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrTXVsdGlCYXNpY1R5cGVzQ2Fz
ZShiYXNlTmFtZSArICdfdmVydGV4JywgJycsIGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfVkVSVEVYLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxv
Y2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCwgYnVmZmVyTW9kZXNbbW9kZU5keF0u
bW9kZSwgaXNBcnJheSA/IDMgOiAwKSk7CisgICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC5h
ZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLkJsb2NrTXVsdGlCYXNpY1R5cGVzQ2Fz
ZShiYXNlTmFtZSArICdfZnJhZ21lbnQnLCAnJywgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9GUkFHTUVOVCwgYmFzZUZsYWdzIHwgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9GUkFHTUVOVCwgYnVmZmVyTW9kZXNbbW9k
ZU5keF0ubW9kZSwgaXNBcnJheSA/IDMgOiAwKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCEoYmFzZUZsYWdzICYgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1BB
Q0tFRCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVz
M2ZVbmlmb3JtQmxvY2tUZXN0cy5CbG9ja011bHRpQmFzaWNUeXBlc0Nhc2UoYmFzZU5hbWUgKyAn
X2JvdGgnLCAnJywgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
REVDTEFSRV9WRVJURVggfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJF
X0ZSQUdNRU5ULCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5E
RUNMQVJFX1ZFUlRFWCB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVf
RlJBR01FTlQsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDogMCkpOwor
CisgICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC5hZGRDaGlsZChuZXcgZXMzZlVuaWZvcm1C
bG9ja1Rlc3RzLkJsb2NrTXVsdGlCYXNpY1R5cGVzQ2FzZShiYXNlTmFtZSArICdfbWl4ZWQnLCAn
JywgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9W
RVJURVgsIGJhc2VGbGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xB
UkVfRlJBR01FTlQsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDogMCkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgndWJvLm11bHRpX2Jhc2ljX3R5cGVzOiBUZXN0cyBjcmVhdGVk
Jyk7CisKKyAgICAgICAgLy8gdWJvLm11bHRpX25lc3RlZF9zdHJ1Y3QKKyAgICAgICAgLyoqIEB0
eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIG11bHRpTmVzdGVkU3Ry
dWN0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdtdWx0aV9uZXN0ZWRfc3RydWN0JywgJ011
bHRpcGxlIGJ1ZmZlcnMgd2l0aCBiYXNpYyB0eXBlcycpOworICAgICAgICB0ZXN0R3JvdXAuYWRk
Q2hpbGQobXVsdGlOZXN0ZWRTdHJ1Y3RHcm91cCk7CisKKyAgICAgICAgZm9yICh2YXIgbW9kZU5k
eCA9IDA7IG1vZGVOZHggPCBidWZmZXJNb2Rlcy5sZW5ndGg7IG1vZGVOZHgrKykgeworICAgICAg
ICAgICAgbW9kZUdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChidWZmZXJNb2Rlc1ttb2RlTmR4
XS5uYW1lLCAnJyk7CisgICAgICAgICAgICBtdWx0aU5lc3RlZFN0cnVjdEdyb3VwLmFkZENoaWxk
KG1vZGVHcm91cCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGxheW91dEZsYWdOZHggPSAwOyBs
YXlvdXRGbGFnTmR4IDwgbGF5b3V0RmxhZ3MubGVuZ3RoOyBsYXlvdXRGbGFnTmR4KyspIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpc0FycmF5ID0gMDsgaXNBcnJheSA8IDI7IGlzQXJyYXkr
KykgeworICAgICAgICAgICAgICAgICAgICBiYXNlTmFtZSA9IGxheW91dEZsYWdzW2xheW91dEZs
YWdOZHhdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJhc2VGbGFncyA9IGxheW91dEZsYWdz
W2xheW91dEZsYWdOZHhdLmZsYWdzOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5
KQorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZU5hbWUgKz0gJ19pbnN0YW5jZV9hcnJheSc7
CisKKyAgICAgICAgICAgICAgICAgICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9y
bUJsb2NrVGVzdHMuQmxvY2tNdWx0aU5lc3RlZFN0cnVjdENhc2UoYmFzZU5hbWUgKyAnX3ZlcnRl
eCcsICcnLCBiYXNlRmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNM
QVJFX1ZFUlRFWCwgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
REVDTEFSRV9WRVJURVgsIGJ1ZmZlck1vZGVzW21vZGVOZHhdLm1vZGUsIGlzQXJyYXkgPyAzIDog
MCkpOworICAgICAgICAgICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZVbmlm
b3JtQmxvY2tUZXN0cy5CbG9ja011bHRpTmVzdGVkU3RydWN0Q2FzZShiYXNlTmFtZSArICdfZnJh
Z21lbnQnLCAnJywgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
REVDTEFSRV9GUkFHTUVOVCwgYmFzZUZsYWdzIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuREVDTEFSRV9GUkFHTUVOVCwgYnVmZmVyTW9kZXNbbW9kZU5keF0ubW9kZSwgaXNBcnJh
eSA/IDMgOiAwKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoYmFzZUZsYWdzICYgZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1BBQ0tFRCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RlR3JvdXAuYWRkQ2hpbGQobmV3IGVzM2ZVbmlmb3JtQmxvY2tUZXN0
cy5CbG9ja011bHRpTmVzdGVkU3RydWN0Q2FzZShiYXNlTmFtZSArICdfYm90aCcsICcnLCBiYXNl
RmxhZ3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCB8
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfRlJBR01FTlQsIGJhc2VG
bGFncyB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfVkVSVEVYIHwg
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9GUkFHTUVOVCwgYnVmZmVy
TW9kZXNbbW9kZU5keF0ubW9kZSwgaXNBcnJheSA/IDMgOiAwKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbW9kZUdyb3VwLmFkZENoaWxkKG5ldyBlczNmVW5pZm9ybUJsb2NrVGVzdHMuQmxvY2tN
dWx0aU5lc3RlZFN0cnVjdENhc2UoYmFzZU5hbWUgKyAnX21peGVkJywgJycsIGJhc2VGbGFncyB8
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfVkVSVEVYLCBiYXNlRmxh
Z3MgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX0ZSQUdNRU5ULCBi
dWZmZXJNb2Rlc1ttb2RlTmR4XS5tb2RlLCBpc0FycmF5ID8gMyA6IDApKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyZWRMb2dUb0Nv
bnNvbGUoJ3Viby5tdWx0aV9uZXN0ZWRfc3RydWN0OiBUZXN0cyBjcmVhdGVkJyk7CisKKyAgICAg
ICAgLyogdWJvLnJhbmRvbSAqLworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBh
bGxTaGFkZXJzID0gZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0dXJlQml0cy5GRUFUVVJF
X1ZFUlRFWF9CTE9DS1MgfCBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZF
QVRVUkVfRlJBR01FTlRfQkxPQ0tTIHwgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0dXJl
Qml0cy5GRUFUVVJFX1NIQVJFRF9CTE9DS1M7CisgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGFsbExheW91dHMgPSBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRz
LkZFQVRVUkVfU1REMTQwX0xBWU9VVDsKKyAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgYWxsQmFzaWNUeXBlcyA9IGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMu
RkVBVFVSRV9WRUNUT1JTIHwgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0dXJlQml0cy5G
RUFUVVJFX01BVFJJQ0VTOworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB1bnVz
ZWQgPSBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfVU5VU0VE
X01FTUJFUlMgfCBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVf
VU5VU0VEX1VOSUZPUk1TOworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXRG
bGFncyA9IGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMuRkVBVFVSRV9NQVRS
SVhfTEFZT1VUOworICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhbGxGZWF0dXJl
cyA9ICh+Z2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0dXJlQml0cy5GRUFUVVJFX0FSUkFZ
U19PRl9BUlJBWVMgJiAweEZGRkYpOworCisgICAgICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNl
LkRlcXBUZXN0fSAqLworICAgICAgICAgdmFyIHJhbmRvbUdyb3VwID0gdGN1VGVzdENhc2UubmV3
VGVzdCgncmFuZG9tJywgJ1JhbmRvbSBVbmlmb3JtIEJsb2NrIGNhc2VzJyk7CisgICAgICAgICB0
ZXN0R3JvdXAuYWRkQ2hpbGQocmFuZG9tR3JvdXApOworCisgICAgICAgICAvLyBCYXNpYyB0eXBl
cy4KKyAgICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAo
cmFuZG9tR3JvdXAsICdzY2FsYXJfdHlwZXMnLCAnU2NhbGFyIHR5cGVzIG9ubHksIHBlci1ibG9j
ayBidWZmZXJzJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfUEVS
X0JMT0NLLCBhbGxTaGFkZXJzIHwgYWxsTGF5b3V0cyB8IHVudXNlZCwgMjUsIDApOworICAgICAg
ICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLmNyZWF0ZVJhbmRvbUNhc2VHcm91cChyYW5kb21Hcm91
cCwgJ3ZlY3Rvcl90eXBlcycsICdTY2FsYXIgYW5kIHZlY3RvciB0eXBlcyBvbmx5LCBwZXItYmxv
Y2sgYnVmZmVycycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuQnVmZmVyTW9kZS5CVUZGRVJNT0RFX1BF
Ul9CTE9DSywgYWxsU2hhZGVycyB8IGFsbExheW91dHMgfCB1bnVzZWQgfCBnbHNSYW5kb21Vbmlm
b3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfVkVDVE9SUywgMjUsIDI1KTsKKyAgICAg
ICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAocmFuZG9tR3Jv
dXAsICdiYXNpY190eXBlcycsICdBbGwgYmFzaWMgdHlwZXMsIHBlci1ibG9jayBidWZmZXJzJywg
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfUEVSX0JMT0NLLCBhbGxT
aGFkZXJzIHwgYWxsTGF5b3V0cyB8IHVudXNlZCB8IGFsbEJhc2ljVHlwZXMgfCBtYXRGbGFncywg
MjUsIDUwKTsKKyAgICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNl
R3JvdXAocmFuZG9tR3JvdXAsICdiYXNpY19hcnJheXMnLCAnQXJyYXlzLCBwZXItYmxvY2sgYnVm
ZmVycycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuQnVmZmVyTW9kZS5CVUZGRVJNT0RFX1BFUl9CTE9D
SywgYWxsU2hhZGVycyB8IGFsbExheW91dHMgfCB1bnVzZWQgfCBhbGxCYXNpY1R5cGVzIHwgbWF0
RmxhZ3MgfCBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfQVJS
QVlTLCAyNSwgNTApOworCisgICAgICAgICBlczNmVW5pZm9ybUJsb2NrVGVzdHMuY3JlYXRlUmFu
ZG9tQ2FzZUdyb3VwKHJhbmRvbUdyb3VwLCAnYmFzaWNfaW5zdGFuY2VfYXJyYXlzJywgJ0Jhc2lj
IGluc3RhbmNlIGFycmF5cywgcGVyLWJsb2NrIGJ1ZmZlcnMnLCBnbHNVbmlmb3JtQmxvY2tDYXNl
LkJ1ZmZlck1vZGUuQlVGRkVSTU9ERV9QRVJfQkxPQ0ssIGFsbFNoYWRlcnMgfCBhbGxMYXlvdXRz
IHwgdW51c2VkIHwgYWxsQmFzaWNUeXBlcyB8IG1hdEZsYWdzIHwgZ2xzUmFuZG9tVW5pZm9ybUJs
b2NrQ2FzZS5GZWF0dXJlQml0cy5GRUFUVVJFX0lOU1RBTkNFX0FSUkFZUywgMjUsIDc1KTsKKyAg
ICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAocmFuZG9t
R3JvdXAsICduZXN0ZWRfc3RydWN0cycsICdOZXN0ZWQgc3RydWN0cywgcGVyLWJsb2NrIGJ1ZmZl
cnMnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGUuQlVGRkVSTU9ERV9QRVJfQkxPQ0ss
IGFsbFNoYWRlcnMgfCBhbGxMYXlvdXRzIHwgdW51c2VkIHwgYWxsQmFzaWNUeXBlcyB8IG1hdEZs
YWdzIHwgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0dXJlQml0cy5GRUFUVVJFX1NUUlVD
VFMsIDI1LCAxMDApOworICAgICAgICAgZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLmNyZWF0ZVJhbmRv
bUNhc2VHcm91cChyYW5kb21Hcm91cCwgJ25lc3RlZF9zdHJ1Y3RzX2FycmF5cycsICdOZXN0ZWQg
c3RydWN0cywgYXJyYXlzLCBwZXItYmxvY2sgYnVmZmVycycsIGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
QnVmZmVyTW9kZS5CVUZGRVJNT0RFX1BFUl9CTE9DSywgYWxsU2hhZGVycyB8IGFsbExheW91dHMg
fCB1bnVzZWQgfCBhbGxCYXNpY1R5cGVzIHwgbWF0RmxhZ3MgfCBnbHNSYW5kb21Vbmlmb3JtQmxv
Y2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfU1RSVUNUUyB8IGdsc1JhbmRvbVVuaWZvcm1CbG9j
a0Nhc2UuRmVhdHVyZUJpdHMuRkVBVFVSRV9BUlJBWVMsIDI1LCAxNTApOworICAgICAgICAgZXMz
ZlVuaWZvcm1CbG9ja1Rlc3RzLmNyZWF0ZVJhbmRvbUNhc2VHcm91cChyYW5kb21Hcm91cCwgJ25l
c3RlZF9zdHJ1Y3RzX2luc3RhbmNlX2FycmF5cycsICdOZXN0ZWQgc3RydWN0cywgaW5zdGFuY2Ug
YXJyYXlzLCBwZXItYmxvY2sgYnVmZmVycycsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuQnVmZmVyTW9k
ZS5CVUZGRVJNT0RFX1BFUl9CTE9DSywgYWxsU2hhZGVycyB8IGFsbExheW91dHMgfCB1bnVzZWQg
fCBhbGxCYXNpY1R5cGVzIHwgbWF0RmxhZ3MgfCBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZl
YXR1cmVCaXRzLkZFQVRVUkVfU1RSVUNUUyB8IGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVh
dHVyZUJpdHMuRkVBVFVSRV9JTlNUQU5DRV9BUlJBWVMsIDI1LCAxMjUpOworICAgICAgICAgZXMz
ZlVuaWZvcm1CbG9ja1Rlc3RzLmNyZWF0ZVJhbmRvbUNhc2VHcm91cChyYW5kb21Hcm91cCwgJ25l
c3RlZF9zdHJ1Y3RzX2FycmF5c19pbnN0YW5jZV9hcnJheXMnLCAnTmVzdGVkIHN0cnVjdHMsIGlu
c3RhbmNlIGFycmF5cywgcGVyLWJsb2NrIGJ1ZmZlcnMnLCBnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1
ZmZlck1vZGUuQlVGRkVSTU9ERV9QRVJfQkxPQ0ssIGFsbFNoYWRlcnMgfCBhbGxMYXlvdXRzIHwg
dW51c2VkIHwgYWxsQmFzaWNUeXBlcyB8IG1hdEZsYWdzIHwgZ2xzUmFuZG9tVW5pZm9ybUJsb2Nr
Q2FzZS5GZWF0dXJlQml0cy5GRUFUVVJFX1NUUlVDVFMgfCBnbHNSYW5kb21Vbmlmb3JtQmxvY2tD
YXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfQVJSQVlTIHwgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2Fz
ZS5GZWF0dXJlQml0cy5GRUFUVVJFX0lOU1RBTkNFX0FSUkFZUywgMjUsIDE3NSk7CisKKyAgICAg
ICAgIC8vIERpc2FibGVkOiBXZWJHTCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBvciBwYWNrZWQg
dW5pZm9ybSBidWZmZXJzLgorICAgICAgICAgLy9lczNmVW5pZm9ybUJsb2NrVGVzdHMuY3JlYXRl
UmFuZG9tQ2FzZUdyb3VwKHJhbmRvbUdyb3VwLCAnYWxsX3Blcl9ibG9ja19idWZmZXJzJywgJ0Fs
bCByYW5kb20gZmVhdHVyZXMsIHBlci1ibG9jayBidWZmZXJzJywgZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVfUEVSX0JMT0NLLCBhbGxGZWF0dXJlcywgNTAsIDIwMCk7
CisgICAgICAgICAvL2VzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcmVhdGVSYW5kb21DYXNlR3JvdXAo
cmFuZG9tR3JvdXAsICdhbGxfc2hhcmVkX2J1ZmZlcicsICdBbGwgcmFuZG9tIGZlYXR1cmVzLCBz
aGFyZWQgYnVmZmVyJywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlLkJVRkZFUk1PREVf
U0lOR0xFLCBhbGxGZWF0dXJlcywgNTAsIDI1MCk7CisgICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgndWJvLnJhbmRvbTogVGVzdHMgY3JlYXRlZCcpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBDcmVhdGUgYW5kIGV4ZWN1dGUgdGhlIHRlc3QgY2FzZXMKKyAgICAgKi8KKyAgICBlczNm
VW5pZm9ybUJsb2NrVGVzdHMucnVuID0gZnVuY3Rpb24ocmFuZ2UpIHsKKyAgICAgICAgLy9TZXQg
dXAgVGVzdCBSb290IHBhcmFtZXRlcnMKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gJ3Vibyc7Cisg
ICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSAnVW5pZm9ybSBCbG9jayBUZXN0cyc7CisgICAg
ICAgIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICBzdGF0ZS5zZXRS
b290KHRjdVRlc3RDYXNlLm5ld1Rlc3QodGVzdE5hbWUsIHRlc3REZXNjcmlwdGlvbiwgbnVsbCkp
OworCisgICAgICAgIC8vU2V0IHVwIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdCBz
ZXJpZXMuCisgICAgICAgIHNldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CisgICAgICAgIGRl
c2NyaXB0aW9uKHRlc3REZXNjcmlwdGlvbik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IC8vQ3JlYXRlIHRlc3QgY2FzZXMKKyAgICAgICAgICAgIGVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5p
bml0KCk7CisgICAgICAgICAgICBpZiAocmFuZ2UpCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0
UmFuZ2UocmFuZ2UpOworICAgICAgICAgICAgLy9SdW4gdGVzdCBjYXNlcworICAgICAgICAgICAg
dGN1VGVzdENhc2UucnVuVGVzdENhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGVy
cikgeworICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBlczNmVW5pZm9y
bUJsb2NrVGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENhc2Uu
cnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMz
ZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVlNDY5OTVjYTk4MTlhMjc5
Y2I3OGYzZGY4MDZmYTc3MDkxYzg4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9lczNm
VmVydGV4QXJyYXlPYmplY3RUZXN0cy5qcwpAQCAtMCwwICsxLDg3NSBAQAorLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRp
ZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAq
CisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
J0xpY2Vuc2UnKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywKKyAqIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVmVydGV4QXJyYXlPYmplY3RUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29t
bW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVN1cmZhY2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24o
KSB7Cit2YXIgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMgPSBmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzOwordmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNl
LmRlUmFuZG9tOwordmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmc7Cit2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwordmFy
IHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOwordmFy
IGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlVXRpbDsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqLworZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuQXR0cmlidXRlID0gZnVu
Y3Rpb24oKSB7CisgICAgdGhpcy5lbmFibGVkID0gZmFsc2U7CisgICAgdGhpcy5zaXplID0gMTsK
KyAgICB0aGlzLnN0cmlkZSA9IDA7CisgICAgdGhpcy50eXBlID0gZ2wuRkxPQVQ7CisgICAgdGhp
cy5pbnRlZ2VyID0gZmFsc2U7CisgICAgdGhpcy5kaXZpc29yID0gMDsKKyAgICB0aGlzLm9mZnNl
dCA9IDA7CisgICAgdGhpcy5ub3JtYWxpemVkID0gZmFsc2U7CisgICAgdGhpcy5idWZmZXJOZHgg
PSAwOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBzdHJ1Y3QKKyAqLworZXMzZlZl
cnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
IHRoaXMuYXR0cmlidXRlcyA9IFtdOworICAgIHRoaXMuZWxlbWVudEFycmF5QnVmZmVyID0gMDsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAc3RydWN0CisgKi8KK2VzM2ZWZXJ0ZXhB
cnJheU9iamVjdFRlc3RzLkJ1ZmZlclNwZWMgPSBmdW5jdGlvbihjb3VudCwgc2l6ZSwgY29tcG9u
ZW50Q291bnQsIHN0cmlkZSwgb2Zmc2V0LCB0eXBlLCBpbnRSYW5nZU1pbiwgaW50UmFuZ2VNYXgs
IGZsb2F0UmFuZ2VNaW4sIGZsb2F0UmFuZ2VNYXgpIHsKKyAgICB0aGlzLmNvdW50ID0gY291bnQ7
CisgICAgdGhpcy5zaXplID0gc2l6ZTsKKyAgICB0aGlzLmNvbXBvbmVudENvdW50ID0gY29tcG9u
ZW50Q291bnQ7CisgICAgdGhpcy5zdHJpZGUgPSBzdHJpZGU7CisgICAgdGhpcy5vZmZzZXQgPSBv
ZmZzZXQ7CisKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworCisgICAgdGhpcy5pbnRSYW5nZU1pbiA9
IGludFJhbmdlTWluOworICAgIHRoaXMuaW50UmFuZ2VNYXggPSBpbnRSYW5nZU1heDsKKworICAg
IHRoaXMuZmxvYXRSYW5nZU1pbiA9IGZsb2F0UmFuZ2VNaW47CisgICAgdGhpcy5mbG9hdFJhbmdl
TWF4ID0gZmxvYXRSYW5nZU1heDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2Vz
M2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlNwZWMgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmNv
dW50ID0gLTE7CisgICAgdGhpcy5pbnN0YW5jZXMgPSAtMTsKKyAgICB0aGlzLnVzZURyYXdFbGVt
ZW50cyA9IGZhbHNlOworICAgIHRoaXMuaW5kZXhUeXBlID0gZ2wuTk9ORTsKKyAgICB0aGlzLmlu
ZGV4T2Zmc2V0ID0gLTE7CisgICAgdGhpcy5pbmRleFJhbmdlTWluID0gLTE7CisgICAgdGhpcy5p
bmRleFJhbmdlTWF4ID0gLTE7CisgICAgdGhpcy5pbmRleENvdW50ID0gLTE7CisgICAgdGhpcy5i
dWZmZXJzID0gW107Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge3Rj
dVRlc3RDYXNlLkRlcXBUZXN0fQorICogQHBhcmFtIHtlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0
cy5TcGVjfSBzcGVjCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtzdHJpbmd9
IGRlc2NyaXB0aW9uCisgKi8KK2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5
T2JqZWN0VGVzdCA9IGZ1bmN0aW9uKHNwZWMsIG5hbWUsIGRlc2NyaXB0aW9uKSB7CisgICAgdGN1
VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbik7CisgICAgdGhp
cy5tX3NwZWMgPSBzcGVjOworICAgIHRoaXMubV9yYW5kb20gPSBuZXcgZGVSYW5kb20uUmFuZG9t
KGRlU3RyaW5nLmRlU3RyaW5nSGFzaChuYW1lKSk7CisgICAgLyoqIEB0eXBlIEFycmF5PFdlYkdM
QnVmZmVyPn0gKi8gdGhpcy5tX2J1ZmZlcnMgPSBbXTsKKyAgICAvLyBtYXBwaW5nIDAgLT4gbnVs
bCBvYmplY3QKKyAgICB0aGlzLm1fYnVmZmVycy5wdXNoKG51bGwpOworfTsKKworZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0LnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKK2VzM2ZWZXJ0ZXhBcnJh
eU9iamVjdFRlc3RzLlZlcnRleEFycmF5T2JqZWN0VGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3Q7CisKK2Vz
M2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5T2JqZWN0VGVzdC5wcm90b3R5cGUu
aW5pdCA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMubV92YW9Qcm9ncmFtID0gdGhpcy5jcmVhdGVQ
cm9ncmFtKHRoaXMubV9zcGVjLnZhbyk7CisgICAgLy8gbV9sb2cgPDwgdGN1OjpUZXN0TG9nOjpN
ZXNzYWdlIDw8ICJQcm9ncmFtIHVzZWQgd2l0aCBWZXJ0ZXggQXJyYXkgT2JqZWN0IiA8PCB0Y3U6
OlRlc3RMb2c6OkVuZE1lc3NhZ2U7CisgICAgLy8gbV9sb2cgPDwgKm1fdmFvUHJvZ3JhbTsKKyAg
ICB0aGlzLm1fc3RhdGVQcm9ncmFtID0gdGhpcy5jcmVhdGVQcm9ncmFtKHRoaXMubV9zcGVjLnN0
YXRlKTsKKyAgICAvLyBtX2xvZyA8PCB0Y3U6OlRlc3RMb2c6Ok1lc3NhZ2UgPDwgIlByb2dyYW0g
dXNlZCB3aXRoIFZlcnRleCBBcnJheSBTdGF0ZSIgPDwgdGN1OjpUZXN0TG9nOjpFbmRNZXNzYWdl
OworICAgIC8vIG1fbG9nIDw8ICptX3N0YXRlUHJvZ3JhbTsKKworICAgIGlmICghdGhpcy5tX3Zh
b1Byb2dyYW0uaXNPaygpIHx8ICF0aGlzLm1fc3RhdGVQcm9ncmFtLmlzT2soKSkKKyAgICAgICAg
dGVzdEZhaWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBjb21waWxlIHNoYWRlcnMnLCB0cnVlKTsKK307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldCBHTCB0YXJnZXQKKyAqIEBwYXJhbSB7
bnVtYmVyfSBpbmRleCBJbmRleCBvZiB0aGUgYnVmZmVyIHRvIGJpbmQKKyAqLworZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0LnByb3RvdHlwZS5iaW5kQnVm
ZmVyID0gZnVuY3Rpb24odGFyZ2V0LCBpbmRleCkgeworICAgIGlmICh0eXBlb2YgdGhpcy5tX2J1
ZmZlcnNbaW5kZXhdID09PSAndW5kZWZpbmVkJykgeworICAgICAgICB2YXIgZGF0YSA9IHRoaXMu
Y3JlYXRlUmFuZG9tQnVmZmVyRGF0YSh0aGlzLm1fc3BlYy5idWZmZXJzW2luZGV4IC0gMV0pOwor
ICAgICAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIHRoaXMubV9i
dWZmZXJzW2luZGV4XSA9IGJ1ZmZlcjsKKworICAgICAgICBnbC5iaW5kQnVmZmVyKHRhcmdldCwg
YnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEsIGdsLkRZTkFNSUNf
RFJBVyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIodGFyZ2V0LCBudWxsKTsKKyAgICB9CisKKyAg
ICBnbC5iaW5kQnVmZmVyKHRhcmdldCwgdGhpcy5tX2J1ZmZlcnNbaW5kZXhdKTsKK307CisKKy8q
KgorICogQHBhcmFtIHtlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5CdWZmZXJTcGVjfSBidWZm
ZXIKKyAqLworZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0
LnByb3RvdHlwZS5jcmVhdGVSYW5kb21CdWZmZXJEYXRhID0gZnVuY3Rpb24oYnVmZmVyKSB7Cisg
ICAgdmFyIHR5cGVkQXJyYXk7CisgICAgc3dpdGNoIChidWZmZXIudHlwZSkgeworICAgICAgICBj
YXNlIGdsLkZMT0FUOiB0eXBlZEFycmF5ID0gRmxvYXQzMkFycmF5OyBicmVhazsKKyAgICAgICAg
Y2FzZSBnbC5JTlQ6IHR5cGVkQXJyYXkgPSBJbnQzMkFycmF5OyBicmVhazsKKyAgICAgICAgY2Fz
ZSBnbC5VTlNJR05FRF9JTlQ6IHR5cGVkQXJyYXkgPSBVaW50MzJBcnJheTsgYnJlYWs7CisgICAg
ICAgIGNhc2UgZ2wuU0hPUlQ6IHR5cGVkQXJyYXkgPSBJbnQxNkFycmF5OyBicmVhazsKKyAgICAg
ICAgY2FzZSBnbC5VTlNJR05FRF9TSE9SVDogdHlwZWRBcnJheSA9IFVpbnQxNkFycmF5OyBicmVh
azsKKyAgICAgICAgY2FzZSBnbC5CWVRFOiB0eXBlZEFycmF5ID0gSW50OEFycmF5OyBicmVhazsK
KyAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOiB0eXBlZEFycmF5ID0gVWludDhBcnJheTsg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lu
dmFsaWQgdHlwZTogJyArIGJ1ZmZlci50eXBlKTsKKyAgICB9CisKKyAgICB2YXIgcmF3ID0gbmV3
IEFycmF5QnVmZmVyKGJ1ZmZlci5zaXplKTsKKyAgICB2YXIgc3RyaWRlOworCisgICAgaWYgKGJ1
ZmZlci5zdHJpZGUgIT0gMCkgeworICAgICAgICBzdHJpZGUgPSBidWZmZXIuc3RyaWRlOworICAg
IH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAoYnVmZmVyLnR5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgZ2wuRkxPQVQ6IHN0cmlkZSA9IGJ1ZmZlci5jb21wb25lbnRDb3VudCAqIDQ7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbC5JTlQ6IHN0cmlkZSA9IGJ1ZmZlci5jb21wb25lbnRDb3VudCAq
IDQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlQ6IHN0cmlkZSA9IGJ1
ZmZlci5jb21wb25lbnRDb3VudCAqIDQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbC5TSE9S
VDogc3RyaWRlID0gYnVmZmVyLmNvbXBvbmVudENvdW50ICogMjsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JUOiBzdHJpZGUgPSBidWZmZXIuY29tcG9uZW50Q291bnQg
KiAyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuQllURTogc3RyaWRlID0gYnVmZmVyLmNv
bXBvbmVudENvdW50ICogMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX0JZ
VEU6IHN0cmlkZSA9IGJ1ZmZlci5jb21wb25lbnRDb3VudCAqIDE7IGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgdmFyIG9mZnNldCA9IDA7CisKKyAgICBmb3IgKHZhciBwb3MgPSAwOyBw
b3MgPCBidWZmZXIuY291bnQ7IHBvcysrKSB7CisgICAgICAgIHZhciBkYXRhID0gbmV3IHR5cGVk
QXJyYXkocmF3LCBvZmZzZXQsIGJ1ZmZlci5jb21wb25lbnRDb3VudCk7CisgICAgICAgIGZvciAo
dmFyIGNvbXBvbmVudE5keCA9IDA7IGNvbXBvbmVudE5keCA8IGJ1ZmZlci5jb21wb25lbnRDb3Vu
dDsgY29tcG9uZW50TmR4KyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYnVmZmVyLnR5cGUpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsLkZMT0FUOiB7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFbY29tcG9uZW50TmR4XSA9IHRoaXMubV9yYW5kb20uZ2V0RmxvYXQoYnVmZmVyLmZsb2F0UmFu
Z2VNaW4sIGJ1ZmZlci5mbG9hdFJhbmdlTWF4KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVtjb21wb25lbnROZHhdID0gdGhpcy5tX3JhbmRvbS5nZXRJbnQoYnVm
ZmVyLmludFJhbmdlTWluLCBidWZmZXIuaW50UmFuZ2VNYXgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBzdHJpZGU7Cisg
ICAgfQorCisgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5KHJhdyk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7ZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZX0gc3RhdGUK
KyAqLworZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0LnBy
b3RvdHlwZS5jcmVhdGVQcm9ncmFtID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICB2YXIgdnR4ID0g
Jyc7CisgICAgdmFyIHZhbHVlID0gJyc7CisKKyAgICB2dHggKz0gJyN2ZXJzaW9uIDMwMCBlc1xu
JzsKKworICAgIGZvciAodmFyIGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IHN0YXRlLmF0dHJp
YnV0ZXMubGVuZ3RoOyBhdHRyaWJOZHgrKykgeworICAgICAgICBpZiAoc3RhdGUuYXR0cmlidXRl
c1thdHRyaWJOZHhdLmludGVnZXIpCisgICAgICAgICAgICB2dHggKz0gJ2xheW91dChsb2NhdGlv
biA9ICcgKyBhdHRyaWJOZHggKyAnKSBpbiBtZWRpdW1wIGl2ZWM0IGFfYXR0cmliJyArIGF0dHJp
Yk5keCArICc7XG4nOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2dHggKz0gJ2xheW91dChs
b2NhdGlvbiA9ICcgKyBhdHRyaWJOZHggKyAnKSBpbiBtZWRpdW1wIHZlYzQgYV9hdHRyaWInICsg
YXR0cmliTmR4ICsgJztcbic7CisKKyAgICAgICAgaWYgKHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmli
TmR4XS5pbnRlZ2VyKSB7CisgICAgICAgICAgICB2YXIgc2NhbGUgPSAwLjA7CisKKyAgICAgICAg
ICAgIC8vIFRPRE86IFNob3VsZCBpdCBiZSBzdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0udHlw
ZT8KKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLnR5cGUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlNIT1JUOiBzY2FsZSA9ICgxLjAgLyAoKDEgPDwg
MTQpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVEX1NIT1JU
OiBzY2FsZSA9ICgxLjAgLyAoKDEgPDwgMTUpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIGdsLklOVDogc2NhbGUgPSAoMS4wIC8gKCgxIDw8IDMwKSAtIDEpKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlQ6IHNjYWxlID0gKDEuMCAvICgoMSA8
PCAzMSkgLSAxKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuQllURTogc2NhbGUg
PSAoMS4wIC8gKCgxIDw8IDYpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGds
LlVOU0lHTkVEX0JZVEU6IHNjYWxlID0gKDEuMCAvICgoMSA8PCA3KSAtIDEpKTsgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0ludmFsaWQgdHlwZTogJyArIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSArPSAoYXR0cmliTmR4ICE9IDAgPyAnICsgJyA6
ICcnKSArIHNjYWxlICsgJyAqIHZlYzQoYV9hdHRyaWInICsgYXR0cmliTmR4ICsgJyknOworICAg
ICAgICB9IGVsc2UgaWYgKHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS50eXBlICE9IGdsLkZM
T0FUICYmICFzdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0ubm9ybWFsaXplZCkgeworICAgICAg
ICAgICAgdmFyIHNjYWxlID0gMC4wOworCisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlLmF0dHJp
YnV0ZXNbYXR0cmliTmR4XS50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5TSE9SVDog
c2NhbGUgPSAoMC41IC8gKCgxIDw8IDE0KSAtIDEpKTsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBnbC5VTlNJR05FRF9TSE9SVDogc2NhbGUgPSAoMC41IC8gKCgxIDw8IDE1KSAtIDEpKTsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbC5JTlQ6IHNjYWxlID0gKDAuNSAvICgoMSA8
PCAzMCkgLSAxKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5U
OiBzY2FsZSA9ICgwLjUgLyAoKDEgPDwgMzEpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIGdsLkJZVEU6IHNjYWxlID0gKDAuNSAvICgoMSA8PCA2KSAtIDEpKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOiBzY2FsZSA9ICgwLjUgLyAoKDEg
PDwgNykgLSAxKSk7IGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGU6ICcgKyBzdGF0ZS5hdHRy
aWJ1dGVzWzBdLnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUgKz0gKGF0
dHJpYk5keCAhPSAwID8gJyArICcgOiAnJykgKyBzY2FsZSArICcgKiBhX2F0dHJpYicgKyBhdHRy
aWJOZHg7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdmFsdWUgKz0gKGF0dHJpYk5keCAh
PSAwID8gJyArICcgOiAnJykgKyAnYV9hdHRyaWInICsgYXR0cmliTmR4OworICAgIH0KKworICAg
IHZ0eCArPQorICAgICAgICAnb3V0IG1lZGl1bXAgdmVjNCB2X3ZhbHVlO1xuJyArCisgICAgICAg
ICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAgICAnXHR2X3Zh
bHVlID0gJyArIHZhbHVlICsgJztcbic7CisKKyAgICBpZiAoc3RhdGUuYXR0cmlidXRlc1swXS5p
bnRlZ2VyKSB7CisgICAgICAgIHZhciBzY2FsZSA9IDAuMDsKKworICAgICAgICBzd2l0Y2ggKHN0
YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbC5TSE9SVDogc2Nh
bGUgPSAoMS4wIC8gKCgxIDw8IDE0KSAtIDEpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
LlVOU0lHTkVEX1NIT1JUOiBzY2FsZSA9ICgxLjAgLyAoKDEgPDwgMTUpIC0gMSkpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2wuSU5UOiBzY2FsZSA9ICgxLjAgLyAoKDEgPDwgMzApIC0gMSkp
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfSU5UOiBzY2FsZSA9ICgxLjAg
LyAoKDEgPDwgMzEpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wuQllURTogc2Nh
bGUgPSAoMS4wIC8gKCgxIDw8IDYpIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2wu
VU5TSUdORURfQllURTogc2NhbGUgPSAoMS4wIC8gKCgxIDw8IDcpIC0gMSkpOyBicmVhazsKKwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lu
dmFsaWQgdHlwZTogJyArIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2dHggKz0KKyAgICAgICAgICAgICdcdGdsX1Bvc2l0aW9uID0gdmVjNCgnICsgc2Nh
bGUgKyAnICogJyArICd2ZWMzKGFfYXR0cmliMC54eXopLCAxLjApO1xuJyArCisgICAgICAgICAg
ICAnfSc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlLmF0dHJpYnV0ZXNbMF0ubm9y
bWFsaXplZCB8fCBzdGF0ZS5hdHRyaWJ1dGVzWzBdLnR5cGUgPT0gZ2wuRkxPQVQpIHsKKyAgICAg
ICAgICAgIHZ0eCArPQorICAgICAgICAgICAgICAgICdcdGdsX1Bvc2l0aW9uID0gdmVjNChhX2F0
dHJpYjAueHl6LCAxLjApO1xuJyArCisgICAgICAgICAgICAgICAgJ30nOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdmFyIHNjYWxlID0gMC4wOworCisgICAgICAgICAgICBzd2l0Y2gg
KHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgZ2wuU0hP
UlQ6IHNjYWxlID0gKDEuMCAvICgoMSA8PCAxNCkgLSAxKSk7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgZ2wuVU5TSUdORURfU0hPUlQ6IHNjYWxlID0gKDEuMCAvICgoMSA8PCAxNSkgLSAx
KSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2wuSU5UOiBzY2FsZSA9ICgxLjAgLyAo
KDEgPDwgMzApIC0gMSkpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlVOU0lHTkVE
X0lOVDogc2NhbGUgPSAoMS4wIC8gKCgxIDw8IDMxKSAtIDEpKTsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBnbC5CWVRFOiBzY2FsZSA9ICgxLjAgLyAoKDEgPDwgNikgLSAxKSk7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgZ2wuVU5TSUdORURfQllURTogc2NhbGUgPSAoMS4wIC8g
KCgxIDw8IDcpIC0gMSkpOyBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0eXBlOiAnICsgc3RhdGUu
YXR0cmlidXRlc1swXS50eXBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2NhbGUg
Kj0gMC41OworCisgICAgICAgICAgICB2dHggKz0KKyAgICAgICAgICAgICAgICAnXHRnbF9Qb3Np
dGlvbiA9IHZlYzQoJyArIHNjYWxlICsgJyAqICcgKyAnYV9hdHRyaWIwLnh5eiwgMS4wKTtcbicg
KworICAgICAgICAgICAgICAgICd9JzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBmcmFn
bWVudFNoYWRlciA9CisgICAgICAgICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAnaW4g
bWVkaXVtcCB2ZWM0IHZfdmFsdWU7XG4nICsKKyAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yO1xuJyArCisgICAgICAgICd2b2lkIG1haW4gKHZv
aWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAgICAnXHRmcmFnQ29sb3IgPSB2ZWM0KHZf
dmFsdWUueHl6LCAxLjApO1xuJyArCisgICAgICAgICd9JzsKKworICAgIHJldHVybiBuZXcgZ2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhG
cmFnU291cmNlcyh2dHgsIGZyYWdtZW50U2hhZGVyKSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7
ZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZX0gc3RhdGUKKyAqLwor
ZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0LnByb3RvdHlw
ZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgdGhpcy5iaW5kQnVmZmVyKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIpOworCisgICAgZm9y
ICh2YXIgYXR0cmliTmR4ID0gMDsgYXR0cmliTmR4IDwgc3RhdGUuYXR0cmlidXRlcy5sZW5ndGg7
IGF0dHJpYk5keCsrKSB7CisgICAgICAgIHRoaXMuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5idWZmZXJOZHgpOworICAgICAgICBpZiAoc3Rh
dGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLmVuYWJsZWQpCisgICAgICAgICAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShhdHRyaWJOZHgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBn
bC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoYXR0cmliTmR4KTsKKworICAgICAgICBpZiAoc3Rh
dGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLmludGVnZXIpCisgICAgICAgICAgICBnbC52ZXJ0ZXhB
dHRyaWJJUG9pbnRlcihhdHRyaWJOZHgsIHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5zaXpl
LCBzdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0udHlwZSwgc3RhdGUuYXR0cmlidXRlc1thdHRy
aWJOZHhdLnN0cmlkZSwgc3RhdGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLm9mZnNldCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoYXR0cmliTmR4LCBz
dGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0uc2l6ZSwgc3RhdGUuYXR0cmlidXRlc1thdHRyaWJO
ZHhdLnR5cGUsIHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5ub3JtYWxpemVkLCBzdGF0ZS5h
dHRyaWJ1dGVzW2F0dHJpYk5keF0uc3RyaWRlLCBzdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0u
b2Zmc2V0KTsKKworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGF0dHJpYk5keCwgc3Rh
dGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLmRpdmlzb3IpOworICAgIH0KK307CisKKy8qKgorICog
QHBhcmFtIHtlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0ZXhBcnJheVN0YXRlfSBzdGF0
ZQorICovCitlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3Qu
cHJvdG90eXBlLm1ha2VEcmF3Q2FsbCA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgZ2wuY2xlYXJD
b2xvcigwLjcsIDAuNywgMC43LCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworICAgIHZhciBzcGVjID0gdGhpcy5tX3NwZWM7CisKKyAgICBpZiAoc3BlYy51c2VEcmF3
RWxlbWVudHMpIHsKKyAgICAgICAgaWYgKHNwZWMuaW5zdGFuY2VzID09IDApCisgICAgICAgICAg
ICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCBzcGVjLmNvdW50LCBzcGVjLmluZGV4VHlw
ZSwgc3BlYy5pbmRleE9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsLmRyYXdF
bGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIHNwZWMuY291bnQsIHNwZWMuaW5kZXhUeXBl
LCBzcGVjLmluZGV4T2Zmc2V0LCBzcGVjLmluc3RhbmNlcyk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKHNwZWMuaW5zdGFuY2VzID09IDApCisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgc3BlYy5jb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGds
LmRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCAwLCBzcGVjLmNvdW50LCBzcGVjLmlu
c3RhbmNlcyk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFj
ZX0gdmFvUmVzdWx0CisgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gZGVmYXVsdFJlc3Vs
dAorICovCitlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3Qu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKHZhb1Jlc3VsdCwgZGVmYXVsdFJlc3VsdCkgewor
ICAgdmFyIHZhbyA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisKKyAgICBnbC5iaW5kVmVydGV4
QXJyYXkodmFvKTsKKyAgICB0aGlzLnNldFN0YXRlKHRoaXMubV9zcGVjLnZhbyk7CisgICAgZ2wu
YmluZFZlcnRleEFycmF5KG51bGwpOworCisgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLm1fc3BlYy5z
dGF0ZSk7CisKKyAgICBnbC5iaW5kVmVydGV4QXJyYXkodmFvKTsKKyAgICBnbC51c2VQcm9ncmFt
KHRoaXMubV92YW9Qcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgdGhpcy5tYWtlRHJhd0NhbGwo
dGhpcy5tX3NwZWMudmFvKTsKKyAgICB2YW9SZXN1bHQucmVhZFZpZXdwb3J0KCk7CisgICAgdGhp
cy5zZXRTdGF0ZSh0aGlzLm1fc3BlYy52YW8pOworICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxs
KTsKKworICAgIGdsLnVzZVByb2dyYW0odGhpcy5tX3N0YXRlUHJvZ3JhbS5nZXRQcm9ncmFtKCkp
OworICAgIHRoaXMubWFrZURyYXdDYWxsKHRoaXMubV9zcGVjLnN0YXRlKTsKKyAgICBkZWZhdWx0
UmVzdWx0LnJlYWRWaWV3cG9ydCgpOworCisgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmFvKTsK
K307CisKKy8qKgorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHZhb1JlZgorICogQHBh
cmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGRlZmF1bHRSZWYKKyAqLworZXMzZlZlcnRleEFycmF5
T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0LnByb3RvdHlwZS5nZW5SZWZlcmVuY2Vz
ID0gZnVuY3Rpb24odmFvUmVmLCBkZWZhdWx0UmVmKSB7CisgICAgdGhpcy5zZXRTdGF0ZSh0aGlz
Lm1fc3BlYy52YW8pOworICAgIGdsLnVzZVByb2dyYW0odGhpcy5tX3Zhb1Byb2dyYW0uZ2V0UHJv
Z3JhbSgpKTsKKyAgICB0aGlzLm1ha2VEcmF3Q2FsbCh0aGlzLm1fc3BlYy52YW8pOworICAgIHZh
b1JlZi5yZWFkVmlld3BvcnQoKTsKKworICAgIHRoaXMuc2V0U3RhdGUodGhpcy5tX3NwZWMuc3Rh
dGUpOworICAgIGdsLnVzZVByb2dyYW0odGhpcy5tX3N0YXRlUHJvZ3JhbS5nZXRQcm9ncmFtKCkp
OworICAgIHRoaXMubWFrZURyYXdDYWxsKHRoaXMubV9zcGVjLnN0YXRlKTsKKyAgICBkZWZhdWx0
UmVmLnJlYWRWaWV3cG9ydCgpOworfTsKKworZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVy
dGV4QXJyYXlPYmplY3RUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIHZhb1JlZmVyZW5jZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoKTsKKyAgICB2YXIgc3Rh
dGVSZWZlcmVuY2UgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKCk7CisgICAgdmFyIHZhb1Jlc3Vs
dCA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoKTsKKyAgICB2YXIgc3RhdGVSZXN1bHQgPSBuZXcg
dGN1U3VyZmFjZS5TdXJmYWNlKCk7CisKKyAgICB2YXIgaXNPazsKKworICAgIC8vIGxvZ1ZlcnRl
eEFycmF5U3RhdGUobV9sb2csIG1fc3BlYy52YW8sICJWZXJ0ZXggQXJyYXkgT2JqZWN0IFN0YXRl
Iik7CisgICAgLy8gbG9nVmVydGV4QXJyYXlTdGF0ZShtX2xvZywgbV9zcGVjLnN0YXRlLCAiT3Bl
bkdMIFZlcnRleCBBcnJheSBTdGF0ZSIpOworICAgIHRoaXMuZ2VuUmVmZXJlbmNlcyhzdGF0ZVJl
ZmVyZW5jZSwgdmFvUmVmZXJlbmNlKTsKKyAgICB0aGlzLnJlbmRlcihzdGF0ZVJlc3VsdCwgdmFv
UmVzdWx0KTsKKworICAgIGlzT2sgPSB0Y3VJbWFnZUNvbXBhcmUucGl4ZWxUaHJlc2hvbGRDb21w
YXJlKCdSZXN1bHRzJywgJ0NvbXBhcmlzb24gcmVzdWx0IGZyb20gcmVuZGVyaW5nIHdpdGggVmVy
dGV4IEFycmF5IFN0YXRlJywgc3RhdGVSZWZlcmVuY2UsIHN0YXRlUmVzdWx0LCBbMCwgMCwgMCwg
MF0pOworICAgIGlzT2sgPSBpc09rICYmIHRjdUltYWdlQ29tcGFyZS5waXhlbFRocmVzaG9sZENv
bXBhcmUoJ1Jlc3VsdHMnLCAnQ29tcGFyaXNvbiByZXN1bHQgZnJvbSByZW5kZXJpbmcgd2l0aCBW
ZXJ0ZXggQXJyYXkgT2JqZWN0JywgdmFvUmVmZXJlbmNlLCB2YW9SZXN1bHQsIFswLCAwLCAwLCAw
XSk7CisKKyAgICBpZiAoIWlzT2spCisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdSZXN1bHQg
Y29tcGFyaXNvbiBmYWlsZWQnLCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2Vk
T3B0aW9ucygnUGFzcycsIHRydWUpOworCisgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVS
ZXN1bHQuU1RPUDsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7dGN1
VGVzdENhc2UuRGVxcFRlc3R9CisgKi8KK2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5jYWxsKHRoaXMsICd2ZXJ0ZXhfYXJyYXlfb2JqZWN0cycsICdWZXJ0ZXggYXJyYXkgb2JqZWN0
IHRlc3QgY2FzZXMnKTsKK307CisKK2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFy
cmF5T2JqZWN0VGVzdHMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5wcm90b3R5cGUpOworZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVmVydGV4QXJyYXlPYmplY3RU
ZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3RzOworCitlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0
cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3RzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGZsb2F0Q29vcmRCdWZmZXI0OF8xID0gbmV3IGVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRl
c3RzLkJ1ZmZlclNwZWMoNDgsIDM4NCwgMiwgMCwgMCwgZ2wuRkxPQVQsIDAsIDAsIC0xLjAsIDEu
MCk7CisgICAgdmFyIGZsb2F0Q29vcmRCdWZmZXI0OF8yID0gbmV3IGVzM2ZWZXJ0ZXhBcnJheU9i
amVjdFRlc3RzLkJ1ZmZlclNwZWMoNDgsIDM4NCwgMiwgMCwgMCwgZ2wuRkxPQVQsIDAsIDAsIC0x
LjAsIDEuMCk7CisKKyAgICB2YXIgc2hvcnRDb29yZEJ1ZmZlcjQ4ID0gbmV3IGVzM2ZWZXJ0ZXhB
cnJheU9iamVjdFRlc3RzLkJ1ZmZlclNwZWMoNDgsIDE5MiwgMiwgMCwgMCwgZ2wuU0hPUlQsIC0z
Mjc2OCwgMzI3NjgsIDAuMCwgMC4wKTsKKworICAgIHZhciBzcGVjOworICAgIHZhciBzdGF0ZTsK
KyAgICAvLyBEaWZmZXJlbnQgYnVmZmVyCisgICAgc3BlYyA9IG5ldyBlczNmVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5TcGVjKCk7CisKKyAgICBzdGF0ZSA9IG5ldyBlczNmVmVydGV4QXJyYXlPYmpl
Y3RUZXN0cy5WZXJ0ZXhBcnJheVN0YXRlKCk7CisKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzLnB1c2go
bmV3IGVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLkF0dHJpYnV0ZSgpKTsKKworICAgIHN0YXRl
LmF0dHJpYnV0ZXNbMF0uZW5hYmxlZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5z
aXplID0gMjsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLnN0cmlkZSA9IDA7CisgICAgc3RhdGUu
YXR0cmlidXRlc1swXS50eXBlID0gZ2wuRkxPQVQ7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5p
bnRlZ2VyID0gZmFsc2U7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5kaXZpc29yID0gMDsKKyAg
ICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLm9mZnNldCA9IDA7CisgICAgc3RhdGUuYXR0cmlidXRlc1sw
XS5ub3JtYWxpemVkID0gZmFsc2U7CisKKyAgICBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIgPSAw
OworCisgICAgc3BlYy5idWZmZXJzLnB1c2goZmxvYXRDb29yZEJ1ZmZlcjQ4XzEpOworICAgIHNw
ZWMuYnVmZmVycy5wdXNoKGZsb2F0Q29vcmRCdWZmZXI0OF8yKTsKKworICAgIHNwZWMudXNlRHJh
d0VsZW1lbnRzID0gZmFsc2U7CisgICAgc3BlYy5pbnN0YW5jZXMgPSAwOworICAgIHNwZWMuY291
bnQgPSA0ODsKKyAgICBzcGVjLnZhbyA9IHN0YXRlOworICAgIHNwZWMuc3RhdGUgPSBkZVV0aWwu
Y2xvbmUoc3RhdGUpOworICAgIHNwZWMuaW5kZXhPZmZzZXQgPSAwOworICAgIHNwZWMuaW5kZXhS
YW5nZU1pbiA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWF4ID0gMDsKKyAgICBzcGVjLmluZGV4
VHlwZSA9IGdsLk5PTkU7CisgICAgc3BlYy5pbmRleENvdW50ID0gMDsKKworICAgIHNwZWMuc3Rh
dGUuYXR0cmlidXRlc1swXS5idWZmZXJOZHggPSAxOworICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNb
MF0uYnVmZmVyTmR4ID0gMjsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3Qoc3BlYywgJ2RpZmZfYnVmZmVyJywgJ2Rp
ZmZfYnVmZmVyJykpOworCisgICAgLy8gRGlmZmVyZW50IHNpemUKKyAgICBzcGVjID0gbmV3IGVz
M2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlNwZWMoKTsKKworICAgIHN0YXRlID0gbmV3IGVzM2ZW
ZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5U3RhdGUoKTsKKworICAgIHN0YXRlLmF0
dHJpYnV0ZXMucHVzaChuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuQXR0cmlidXRlKCkp
OworCisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5lbmFibGVkID0gdHJ1ZTsKKyAgICBzdGF0ZS5h
dHRyaWJ1dGVzWzBdLnNpemUgPSAyOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uc3RyaWRlID0g
MDsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLnR5cGUgPSBnbC5GTE9BVDsKKyAgICBzdGF0ZS5h
dHRyaWJ1dGVzWzBdLmludGVnZXIgPSBmYWxzZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmRp
dmlzb3IgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0ub2Zmc2V0ID0gMDsKKyAgICBzdGF0
ZS5hdHRyaWJ1dGVzWzBdLm5vcm1hbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVz
WzBdLmJ1ZmZlck5keCA9IDE7CisKKyAgICBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIgPSAwOwor
CisgICAgc3BlYy5idWZmZXJzLnB1c2goZmxvYXRDb29yZEJ1ZmZlcjQ4XzEpOworCisgICAgc3Bl
Yy51c2VEcmF3RWxlbWVudHMgPSBmYWxzZTsKKyAgICBzcGVjLmluc3RhbmNlcyA9IDA7CisgICAg
c3BlYy5jb3VudCA9IDI0OworICAgIHNwZWMudmFvID0gc3RhdGU7CisgICAgc3BlYy5zdGF0ZSA9
IGRlVXRpbC5jbG9uZShzdGF0ZSk7CisgICAgc3BlYy5pbmRleE9mZnNldCA9IDA7CisgICAgc3Bl
Yy5pbmRleFJhbmdlTWluID0gMDsKKyAgICBzcGVjLmluZGV4UmFuZ2VNYXggPSAwOworICAgIHNw
ZWMuaW5kZXhUeXBlID0gZ2wuTk9ORTsKKyAgICBzcGVjLmluZGV4Q291bnQgPSAwOworCisgICAg
c3BlYy5zdGF0ZS5hdHRyaWJ1dGVzWzBdLnNpemUgPSAyOworICAgIHNwZWMudmFvLmF0dHJpYnV0
ZXNbMF0uc2l6ZSA9IDM7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRleEFycmF5T2Jq
ZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0KHNwZWMsICdkaWZmX3NpemUnLCAnZGlmZl9z
aXplJykpOworCisgICAgLy8gRGlmZmVyZW50IHN0cmlkZQorICAgIHNwZWMgPSBuZXcgZXMzZlZl
cnRleEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOworCisgICAgc3RhdGUgPSBuZXcgZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSgpOworCisgICAgc3RhdGUuYXR0cmli
dXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1dGUoKSk7CisK
KyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmVuYWJsZWQgPSB0cnVlOworICAgIHN0YXRlLmF0dHJp
YnV0ZXNbMF0uc2l6ZSA9IDI7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5zdHJpZGUgPSAwOwor
ICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSA9IGdsLlNIT1JUOworICAgIHN0YXRlLmF0dHJp
YnV0ZXNbMF0uaW50ZWdlciA9IGZhbHNlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uZGl2aXNv
ciA9IDA7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5vZmZzZXQgPSAwOworICAgIHN0YXRlLmF0
dHJpYnV0ZXNbMF0ubm9ybWFsaXplZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5i
dWZmZXJOZHggPSAxOworCisgICAgc3RhdGUuZWxlbWVudEFycmF5QnVmZmVyID0gMDsKKworICAg
IHNwZWMuYnVmZmVycy5wdXNoKHNob3J0Q29vcmRCdWZmZXI0OCk7CisKKyAgICBzcGVjLnVzZURy
YXdFbGVtZW50cyA9IGZhbHNlOworICAgIHNwZWMuaW5zdGFuY2VzID0gMDsKKyAgICBzcGVjLmNv
dW50ID0gMjQ7CisgICAgc3BlYy52YW8gPSBzdGF0ZTsKKyAgICBzcGVjLnN0YXRlID0gZGVVdGls
LmNsb25lKHN0YXRlKTsKKyAgICBzcGVjLmluZGV4T2Zmc2V0ID0gMDsKKyAgICBzcGVjLmluZGV4
UmFuZ2VNaW4gPSAwOworICAgIHNwZWMuaW5kZXhSYW5nZU1heCA9IDA7CisgICAgc3BlYy5pbmRl
eFR5cGUgPSBnbC5OT05FOworICAgIHNwZWMuaW5kZXhDb3VudCA9IDA7CisKKyAgICBzcGVjLnZh
by5hdHRyaWJ1dGVzWzBdLnN0cmlkZSA9IDI7CisgICAgc3BlYy5zdGF0ZS5hdHRyaWJ1dGVzWzBd
LnN0cmlkZSA9IDQ7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0
VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0KHNwZWMsICdkaWZmX3N0cmlkZScsICdkaWZmX3N0
cmlkZScpKTsKKworICAgIC8vIERpZmZlcmVudCB0eXBlcworICAgIHNwZWMgPSBuZXcgZXMzZlZl
cnRleEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOworCisgICAgc3RhdGUgPSBuZXcgZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSgpOworCisgICAgc3RhdGUuYXR0cmli
dXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1dGUoKSk7CisK
KyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmVuYWJsZWQgPSB0cnVlOworICAgIHN0YXRlLmF0dHJp
YnV0ZXNbMF0uc2l6ZSA9IDI7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5zdHJpZGUgPSAwOwor
ICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSA9IGdsLlNIT1JUOworICAgIHN0YXRlLmF0dHJp
YnV0ZXNbMF0uaW50ZWdlciA9IGZhbHNlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uZGl2aXNv
ciA9IDA7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5vZmZzZXQgPSAwOworICAgIHN0YXRlLmF0
dHJpYnV0ZXNbMF0ubm9ybWFsaXplZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5i
dWZmZXJOZHggPSAxOworCisgICAgc3RhdGUuZWxlbWVudEFycmF5QnVmZmVyID0gMDsKKworICAg
IHNwZWMuYnVmZmVycy5wdXNoKHNob3J0Q29vcmRCdWZmZXI0OCk7CisKKyAgICBzcGVjLnVzZURy
YXdFbGVtZW50cyA9IGZhbHNlOworICAgIHNwZWMuaW5zdGFuY2VzID0gMDsKKyAgICBzcGVjLmNv
dW50ID0gMjQ7CisgICAgc3BlYy52YW8gPSBzdGF0ZTsKKyAgICBzcGVjLnN0YXRlID0gZGVVdGls
LmNsb25lKHN0YXRlKTsKKyAgICBzcGVjLmluZGV4T2Zmc2V0ID0gMDsKKyAgICBzcGVjLmluZGV4
UmFuZ2VNaW4gPSAwOworICAgIHNwZWMuaW5kZXhSYW5nZU1heCA9IDA7CisgICAgc3BlYy5pbmRl
eFR5cGUgPSBnbC5OT05FOworICAgIHNwZWMuaW5kZXhDb3VudCA9IDA7CisKKyAgICBzcGVjLnZh
by5hdHRyaWJ1dGVzWzBdLnR5cGUgPSBnbC5TSE9SVDsKKyAgICBzcGVjLnN0YXRlLmF0dHJpYnV0
ZXNbMF0udHlwZSA9IGdsLkJZVEU7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRleEFy
cmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0KHNwZWMsICdkaWZmX3R5cGUnLCAn
ZGlmZl90eXBlJykpOworCisgICAgLy8gRGlmZmVyZW50ICJpbnRlZ2VyIgorICAgIHNwZWMgPSBu
ZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOworCisgICAgc3RhdGUgPSBuZXcg
ZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSgpOworCisgICAgc3Rh
dGUuYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1
dGUoKSk7CisKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmVuYWJsZWQgPSB0cnVlOworICAgIHN0
YXRlLmF0dHJpYnV0ZXNbMF0uc2l6ZSA9IDI7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5zdHJp
ZGUgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSA9IGdsLkJZVEU7CisgICAgc3Rh
dGUuYXR0cmlidXRlc1swXS5pbnRlZ2VyID0gdHJ1ZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBd
LmRpdmlzb3IgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0ub2Zmc2V0ID0gMDsKKyAgICBz
dGF0ZS5hdHRyaWJ1dGVzWzBdLm5vcm1hbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0ZS5hdHRyaWJ1
dGVzWzBdLmJ1ZmZlck5keCA9IDE7CisKKyAgICBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIgPSAw
OworCisgICAgc3BlYy5idWZmZXJzLnB1c2goc2hvcnRDb29yZEJ1ZmZlcjQ4KTsKKworICAgIHNw
ZWMudXNlRHJhd0VsZW1lbnRzID0gZmFsc2U7CisgICAgc3BlYy5jb3VudCA9IDI0OworICAgIHNw
ZWMudmFvID0gc3RhdGU7CisgICAgc3BlYy5zdGF0ZSA9IGRlVXRpbC5jbG9uZShzdGF0ZSk7Cisg
ICAgc3BlYy5pbnN0YW5jZXMgPSAwOworICAgIHNwZWMuaW5kZXhPZmZzZXQgPSAwOworICAgIHNw
ZWMuaW5kZXhSYW5nZU1pbiA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWF4ID0gMDsKKyAgICBz
cGVjLmluZGV4VHlwZSA9IGdsLk5PTkU7CisgICAgc3BlYy5pbmRleENvdW50ID0gMDsKKworICAg
IHNwZWMuc3RhdGUuYXR0cmlidXRlc1swXS5pbnRlZ2VyID0gZmFsc2U7CisgICAgc3BlYy52YW8u
YXR0cmlidXRlc1swXS5pbnRlZ2VyID0gdHJ1ZTsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNm
VmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0ZXhBcnJheU9iamVjdFRlc3Qoc3BlYywgJ2RpZmZf
aW50ZWdlcicsICdkaWZmX2ludGVnZXInKSk7CisKKyAgICAvLyBEaWZmZXJlbnQgZGl2aXNvcgor
ICAgIHNwZWMgPSBuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOworCisgICAg
c3RhdGUgPSBuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSgp
OworCisgICAgc3RhdGUuYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RU
ZXN0cy5BdHRyaWJ1dGUoKSk7CisgICAgc3RhdGUuYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVy
dGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1dGUoKSk7CisKKyAgICBzdGF0ZS5hdHRyaWJ1dGVz
WzBdLmVuYWJsZWQgPSB0cnVlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uc2l6ZSA9IDI7Cisg
ICAgc3RhdGUuYXR0cmlidXRlc1swXS5zdHJpZGUgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNb
MF0udHlwZSA9IGdsLlNIT1JUOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uaW50ZWdlciA9IGZh
bHNlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uZGl2aXNvciA9IDA7CisgICAgc3RhdGUuYXR0
cmlidXRlc1swXS5vZmZzZXQgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0ubm9ybWFsaXpl
ZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5idWZmZXJOZHggPSAxOworCisgICAg
c3RhdGUuYXR0cmlidXRlc1sxXS5lbmFibGVkID0gdHJ1ZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVz
WzFdLnNpemUgPSA0OworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMV0uc3RyaWRlID0gMDsKKyAgICBz
dGF0ZS5hdHRyaWJ1dGVzWzFdLnR5cGUgPSBnbC5GTE9BVDsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVz
WzFdLmludGVnZXIgPSBmYWxzZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzFdLmRpdmlzb3IgPSAw
OworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMV0ub2Zmc2V0ID0gMDsKKyAgICBzdGF0ZS5hdHRyaWJ1
dGVzWzFdLm5vcm1hbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzFdLmJ1ZmZl
ck5keCA9IDI7CisKKyAgICBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIgPSAwOworCisgICAgc3Bl
Yy5idWZmZXJzLnB1c2goc2hvcnRDb29yZEJ1ZmZlcjQ4KTsKKyAgICBzcGVjLmJ1ZmZlcnMucHVz
aChmbG9hdENvb3JkQnVmZmVyNDhfMSk7CisKKyAgICBzcGVjLnVzZURyYXdFbGVtZW50cyA9IGZh
bHNlOworICAgIHNwZWMuaW5zdGFuY2VzID0gMTA7CisgICAgc3BlYy5jb3VudCA9IDEyOworICAg
IHNwZWMudmFvID0gc3RhdGU7CisgICAgc3BlYy5zdGF0ZSA9IGRlVXRpbC5jbG9uZShzdGF0ZSk7
CisgICAgc3BlYy5pbmRleE9mZnNldCA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWluID0gMDsK
KyAgICBzcGVjLmluZGV4UmFuZ2VNYXggPSAwOworICAgIHNwZWMuaW5kZXhUeXBlID0gZ2wuTk9O
RTsKKyAgICBzcGVjLmluZGV4Q291bnQgPSAwOworCisgICAgc3BlYy52YW8uYXR0cmlidXRlc1sx
XS5kaXZpc29yID0gMzsKKyAgICBzcGVjLnN0YXRlLmF0dHJpYnV0ZXNbMV0uZGl2aXNvciA9IDI7
CisKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5WZXJ0
ZXhBcnJheU9iamVjdFRlc3Qoc3BlYywgJ2RpZmZfZGl2aXNvcicsICdkaWZmX2Rpdmlzb3InKSk7
CisKKyAgICAvLyBEaWZmZXJlbnQgb2Zmc2V0CisgICAgc3BlYyA9IG5ldyBlczNmVmVydGV4QXJy
YXlPYmplY3RUZXN0cy5TcGVjKCk7CisKKyAgICBzdGF0ZSA9IG5ldyBlczNmVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5WZXJ0ZXhBcnJheVN0YXRlKCk7CisKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzLnB1
c2gobmV3IGVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLkF0dHJpYnV0ZSgpKTsKKworICAgIHN0
YXRlLmF0dHJpYnV0ZXNbMF0uZW5hYmxlZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1sw
XS5zaXplID0gMjsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLnN0cmlkZSA9IDA7CisgICAgc3Rh
dGUuYXR0cmlidXRlc1swXS50eXBlID0gZ2wuU0hPUlQ7CisgICAgc3RhdGUuYXR0cmlidXRlc1sw
XS5pbnRlZ2VyID0gZmFsc2U7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5kaXZpc29yID0gMDsK
KyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLm9mZnNldCA9IDA7CisgICAgc3RhdGUuYXR0cmlidXRl
c1swXS5ub3JtYWxpemVkID0gdHJ1ZTsKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmJ1ZmZlck5k
eCA9IDE7CisKKyAgICBzdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIgPSAwOworCisgICAgc3BlYy5i
dWZmZXJzLnB1c2goc2hvcnRDb29yZEJ1ZmZlcjQ4KTsKKworICAgIHNwZWMudXNlRHJhd0VsZW1l
bnRzID0gZmFsc2U7CisgICAgc3BlYy5pbnN0YW5jZXMgPSAwOworICAgIHNwZWMuY291bnQgPSAy
NDsKKyAgICBzcGVjLnZhbyA9IHN0YXRlOworICAgIHNwZWMuc3RhdGUgPSBkZVV0aWwuY2xvbmUo
c3RhdGUpOworICAgIHNwZWMuaW5kZXhPZmZzZXQgPSAwOworICAgIHNwZWMuaW5kZXhSYW5nZU1p
biA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWF4ID0gMDsKKyAgICBzcGVjLmluZGV4VHlwZSA9
IGdsLk5PTkU7CisgICAgc3BlYy5pbmRleENvdW50ID0gMDsKKworICAgIHNwZWMudmFvLmF0dHJp
YnV0ZXNbMF0ub2Zmc2V0ID0gMjsKKyAgICBzcGVjLnN0YXRlLmF0dHJpYnV0ZXNbMF0ub2Zmc2V0
ID0gNDsKKyAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5W
ZXJ0ZXhBcnJheU9iamVjdFRlc3Qoc3BlYywgJ2RpZmZfb2Zmc2V0JywgJ2RpZmZfb2Zmc2V0Jykp
OworCisgICAgLy8gRGlmZmVyZW50IG5vcm1hbGl6ZQorICAgIHNwZWMgPSBuZXcgZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOworCisgICAgc3RhdGUgPSBuZXcgZXMzZlZlcnRleEFy
cmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlTdGF0ZSgpOworCisgICAgc3RhdGUuYXR0cmlidXRl
cy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1dGUoKSk7CisKKyAg
ICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmVuYWJsZWQgPSB0cnVlOworICAgIHN0YXRlLmF0dHJpYnV0
ZXNbMF0uc2l6ZSA9IDI7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5zdHJpZGUgPSAwOworICAg
IHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSA9IGdsLlNIT1JUOworICAgIHN0YXRlLmF0dHJpYnV0
ZXNbMF0uaW50ZWdlciA9IGZhbHNlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uZGl2aXNvciA9
IDA7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5vZmZzZXQgPSAwOworICAgIHN0YXRlLmF0dHJp
YnV0ZXNbMF0ubm9ybWFsaXplZCA9IHRydWU7CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5idWZm
ZXJOZHggPSAxOworCisgICAgc3RhdGUuZWxlbWVudEFycmF5QnVmZmVyID0gMDsKKworICAgIHNw
ZWMuYnVmZmVycy5wdXNoKHNob3J0Q29vcmRCdWZmZXI0OCk7CisKKyAgICBzcGVjLnVzZURyYXdF
bGVtZW50cyA9IGZhbHNlOworICAgIHNwZWMuaW5zdGFuY2VzID0gMDsKKyAgICBzcGVjLmNvdW50
ID0gNDg7CisgICAgc3BlYy52YW8gPSBzdGF0ZTsKKyAgICBzcGVjLnN0YXRlID0gZGVVdGlsLmNs
b25lKHN0YXRlKTsKKyAgICBzcGVjLmluZGV4T2Zmc2V0ID0gMDsKKyAgICBzcGVjLmluZGV4UmFu
Z2VNaW4gPSAwOworICAgIHNwZWMuaW5kZXhSYW5nZU1heCA9IDA7CisgICAgc3BlYy5pbmRleFR5
cGUgPSBnbC5OT05FOworICAgIHNwZWMuaW5kZXhDb3VudCA9IDA7CisKKyAgICBzcGVjLnZhby5h
dHRyaWJ1dGVzWzBdLm5vcm1hbGl6ZWQgPSB0cnVlOworICAgIHNwZWMuc3RhdGUuYXR0cmlidXRl
c1swXS5ub3JtYWxpemVkID0gZmFsc2U7CisgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlPYmplY3RUZXN0KHNwZWMsICdkaWZmX25vcm1h
bGl6ZScsICdkaWZmX25vcm1hbGl6ZScpKTsKKworICAgIC8vIERyYXdFbGVtZW50cyB3aXRoIGJ1
ZmZlcgorICAgIHNwZWMgPSBuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuU3BlYygpOwor
CisgICAgc3RhdGUgPSBuZXcgZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuVmVydGV4QXJyYXlT
dGF0ZSgpOworCisgICAgc3RhdGUuYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5BdHRyaWJ1dGUoKSk7CisKKyAgICBzdGF0ZS5hdHRyaWJ1dGVzWzBdLmVuYWJs
ZWQgPSB0cnVlOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uc2l6ZSA9IDI7CisgICAgc3RhdGUu
YXR0cmlidXRlc1swXS5zdHJpZGUgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0udHlwZSA9
IGdsLkZMT0FUOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0uaW50ZWdlciA9IGZhbHNlOworICAg
IHN0YXRlLmF0dHJpYnV0ZXNbMF0uZGl2aXNvciA9IDA7CisgICAgc3RhdGUuYXR0cmlidXRlc1sw
XS5vZmZzZXQgPSAwOworICAgIHN0YXRlLmF0dHJpYnV0ZXNbMF0ubm9ybWFsaXplZCA9IHRydWU7
CisgICAgc3RhdGUuYXR0cmlidXRlc1swXS5idWZmZXJOZHggPSAxOworCisgICAgc3RhdGUuZWxl
bWVudEFycmF5QnVmZmVyID0gMDsKKworICAgIHNwZWMuYnVmZmVycy5wdXNoKGZsb2F0Q29vcmRC
dWZmZXI0OF8xKTsKKworICAgIHZhciBpbmRleEJ1ZmZlciA9IG5ldyBlczNmVmVydGV4QXJyYXlP
YmplY3RUZXN0cy5CdWZmZXJTcGVjKDI0LCAxOTIsIDEsIDAsIDAsIGdsLlVOU0lHTkVEX1NIT1JU
LCAwLCA0NywgMC4wLCAwLjApOworICAgIHNwZWMuYnVmZmVycy5wdXNoKGluZGV4QnVmZmVyKTsK
KyAgICBzcGVjLmJ1ZmZlcnMucHVzaChpbmRleEJ1ZmZlcik7CisKKyAgICBzcGVjLnVzZURyYXdF
bGVtZW50cyA9IHRydWU7CisgICAgc3BlYy5jb3VudCA9IDI0OworICAgIHNwZWMudmFvID0gc3Rh
dGU7CisgICAgc3BlYy5zdGF0ZSA9IGRlVXRpbC5jbG9uZShzdGF0ZSk7CisgICAgc3BlYy5pbnN0
YW5jZXMgPSAwOworICAgIHNwZWMuaW5kZXhPZmZzZXQgPSAwOworICAgIHNwZWMuaW5kZXhSYW5n
ZU1pbiA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWF4ID0gNDg7CisgICAgc3BlYy5pbmRleFR5
cGUgPSBnbC5VTlNJR05FRF9TSE9SVDsKKyAgICBzcGVjLmluZGV4Q291bnQgPSAyNDsKKworICAg
IHNwZWMuc3RhdGUuZWxlbWVudEFycmF5QnVmZmVyID0gMzsKKyAgICBzcGVjLnZhby5lbGVtZW50
QXJyYXlCdWZmZXIgPSAyOworICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZWZXJ0ZXhBcnJheU9i
amVjdFRlc3RzLlZlcnRleEFycmF5T2JqZWN0VGVzdChzcGVjLCAnZGlmZl9pbmRpY2VzJywgJ2Rp
ZmZfaW5kaWNlcycpKTsKKworICAgIHZhciBhdHRyaWJDb3VudCA9IC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUykpOworICAgIHZhciBy
YW5kb20gPSBuZXcgZGVSYW5kb20uUmFuZG9tKGF0dHJpYkNvdW50KTsKKyAgICBzcGVjID0gbmV3
IGVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlNwZWMoKTsKKworICAgIHN0YXRlID0gbmV3IGVz
M2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5U3RhdGUoKTsKKworICAgIHNwZWMu
dXNlRHJhd0VsZW1lbnRzID0gZmFsc2U7CisgICAgc3BlYy5pbnN0YW5jZXMgPSAwOworICAgIHNw
ZWMuY291bnQgPSAyNDsKKyAgICBzcGVjLnZhbyA9IHN0YXRlOworICAgIHNwZWMuc3RhdGUgPSBk
ZVV0aWwuY2xvbmUoc3RhdGUpOworICAgIHNwZWMuaW5kZXhPZmZzZXQgPSAwOworICAgIHNwZWMu
aW5kZXhSYW5nZU1pbiA9IDA7CisgICAgc3BlYy5pbmRleFJhbmdlTWF4ID0gMDsKKyAgICBzcGVj
LmluZGV4VHlwZSA9IGdsLk5PTkU7CisgICAgc3BlYy5pbmRleENvdW50ID0gMDsKKyAgICBzcGVj
LnZhby5lbGVtZW50QXJyYXlCdWZmZXIgPSAwOworICAgIHNwZWMuc3RhdGUuZWxlbWVudEFycmF5
QnVmZmVyID0gMDsKKworICAgIC8vIFVzZSBhbGwgYXR0cmlidXRlcworICAgIGZvciAodmFyIGF0
dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IGF0dHJpYkNvdW50OyBhdHRyaWJOZHgrKykgeworICAg
ICAgICBzcGVjLmJ1ZmZlcnMucHVzaChzaG9ydENvb3JkQnVmZmVyNDgpOworCisgICAgICAgIHNw
ZWMuc3RhdGUuYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5B
dHRyaWJ1dGUoKSk7CisgICAgICAgIHNwZWMuc3RhdGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLmVu
YWJsZWQgPSAocmFuZG9tLmdldEludCgwLCA0KSA9PSAwKSA/IGZhbHNlIDogdHJ1ZTsKKyAgICAg
ICAgc3BlYy5zdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0uc2l6ZSA9IHJhbmRvbS5nZXRJbnQo
MiwgNCk7CisgICAgICAgIHNwZWMuc3RhdGUuYXR0cmlidXRlc1thdHRyaWJOZHhdLnN0cmlkZSA9
IDIgKiByYW5kb20uZ2V0SW50KDEsIDMpOworICAgICAgICBzcGVjLnN0YXRlLmF0dHJpYnV0ZXNb
YXR0cmliTmR4XS50eXBlID0gZ2wuU0hPUlQ7CisgICAgICAgIHNwZWMuc3RhdGUuYXR0cmlidXRl
c1thdHRyaWJOZHhdLmludGVnZXIgPSByYW5kb20uZ2V0Qm9vbCgpOworICAgICAgICBzcGVjLnN0
YXRlLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5kaXZpc29yID0gcmFuZG9tLmdldEludCgwLCAxKTsK
KyAgICAgICAgc3BlYy5zdGF0ZS5hdHRyaWJ1dGVzW2F0dHJpYk5keF0ub2Zmc2V0ID0gMiAqIHJh
bmRvbS5nZXRJbnQoMCwgMik7CisgICAgICAgIHNwZWMuc3RhdGUuYXR0cmlidXRlc1thdHRyaWJO
ZHhdLm5vcm1hbGl6ZWQgPSByYW5kb20uZ2V0Qm9vbCgpOworICAgICAgICBzcGVjLnN0YXRlLmF0
dHJpYnV0ZXNbYXR0cmliTmR4XS5idWZmZXJOZHggPSBhdHRyaWJOZHggKyAxOworCisgICAgICAg
IGlmIChhdHRyaWJOZHggPT0gMCkgeworICAgICAgICAgICAgc3BlYy5zdGF0ZS5hdHRyaWJ1dGVz
W2F0dHJpYk5keF0uZGl2aXNvciA9IDA7CisgICAgICAgICAgICBzcGVjLnN0YXRlLmF0dHJpYnV0
ZXNbYXR0cmliTmR4XS5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHNwZWMuc3RhdGUuYXR0
cmlidXRlc1thdHRyaWJOZHhdLnNpemUgPSAyOworICAgICAgICB9CisKKyAgICAgICAgc3BlYy52
YW8uYXR0cmlidXRlcy5wdXNoKG5ldyBlczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5BdHRyaWJ1
dGUoKSk7CisgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5lbmFibGVkID0g
KHJhbmRvbS5nZXRJbnQoMCwgNCkgPT0gMCkgPyBmYWxzZSA6IHRydWU7CisgICAgICAgIHNwZWMu
dmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5zaXplID0gcmFuZG9tLmdldEludCgyLCA0KTsKKyAg
ICAgICAgc3BlYy52YW8uYXR0cmlidXRlc1thdHRyaWJOZHhdLnN0cmlkZSA9IDIgKiByYW5kb20u
Z2V0SW50KDEsIDMpOworICAgICAgICBzcGVjLnZhby5hdHRyaWJ1dGVzW2F0dHJpYk5keF0udHlw
ZSA9IGdsLlNIT1JUOworICAgICAgICBzcGVjLnZhby5hdHRyaWJ1dGVzW2F0dHJpYk5keF0uaW50
ZWdlciA9IHJhbmRvbS5nZXRCb29sKCk7CisgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0
cmliTmR4XS5kaXZpc29yID0gcmFuZG9tLmdldEludCgwLCAxKTsKKyAgICAgICAgc3BlYy52YW8u
YXR0cmlidXRlc1thdHRyaWJOZHhdLm9mZnNldCA9IDIgKiByYW5kb20uZ2V0SW50KDAsIDIpOwor
ICAgICAgICBzcGVjLnZhby5hdHRyaWJ1dGVzW2F0dHJpYk5keF0ubm9ybWFsaXplZCA9IHJhbmRv
bS5nZXRCb29sKCk7CisgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5idWZm
ZXJOZHggPSBhdHRyaWJDb3VudCAtIGF0dHJpYk5keDsKKworICAgICAgICBpZiAoYXR0cmliTmR4
ID09IDApIHsKKyAgICAgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5kaXZp
c29yID0gMDsKKyAgICAgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5lbmFi
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHNwZWMudmFvLmF0dHJpYnV0ZXNbYXR0cmliTmR4XS5z
aXplID0gMjsKKyAgICAgICAgfQorCisgICAgfQorICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZW
ZXJ0ZXhBcnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5T2JqZWN0VGVzdChzcGVjLCAnYWxsX2F0
dHJpYnV0ZXMnLCAnYWxsX2F0dHJpYnV0ZXMnKSk7CisKK307CisKKy8qKgorICogUnVuIHRlc3QK
KyAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICovCitlczNmVmVy
dGV4QXJyYXlPYmplY3RUZXN0cy5ydW4gPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgZ2wgPSBj
b250ZXh0OworICAgIC8vU2V0IHVwIFRlc3QgUm9vdCBwYXJhbWV0ZXJzCisgICAgdmFyIHN0YXRl
ID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIHN0YXRlLnNldFJvb3QobmV3IGVzM2ZWZXJ0ZXhB
cnJheU9iamVjdFRlc3RzLlZlcnRleEFycmF5T2JqZWN0VGVzdHMoKSk7CisKKyAgICAvL1NldCB1
cCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3Qgc2VyaWVzLgorICAgIHNldEN1cnJl
bnRUZXN0TmFtZShzdGF0ZS50ZXN0Q2FzZXMuZnVsbE5hbWUoKSk7CisgICAgZGVzY3JpcHRpb24o
c3RhdGUudGVzdENhc2VzLmdldERlc2NyaXB0aW9uKCkpOworCisgICAgdHJ5IHsKKyAgICAgICAg
Ly9SdW4gdGVzdCBjYXNlcworICAgICAgICB0Y3VUZXN0Q2FzZS5ydW5UZXN0Q2FzZXMoKTsKKyAg
ICB9CisgICAgY2F0Y2ggKGVycikgeworICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVk
IHRvIGVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLnJ1biB0ZXN0cycsIGZhbHNlKTsKKyAgICAg
ICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgIH0KK307CisKK30pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2VzM2ZWZXJ0ZXhBcnJheVRlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Vz
M2ZWZXJ0ZXhBcnJheVRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjZmQzNDMzMTM1N2FmYjUyNjhjYmU1
MzkyYmEzMTEzZWQ0OTFmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZXMzZlZlcnRl
eEFycmF5VGVzdHMuanMKQEAgLTAsMCArMSwxMTAzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq
IGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29w
eXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhB
cnJheVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2Uu
ZGVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVWYXJUeXBlJyk7Citnb29nLnJlcXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1Zl
cnRleEFycmF5VGVzdHMnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZhciBl
czNmVmVydGV4QXJyYXlUZXN0cyA9IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVz
dHM7CisgICAgdmFyIGdsdURyYXdVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbDsK
KyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbDsK
KyAgICB2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJv
Z3JhbTsKKyAgICB2YXIgZ2x1VGV4dHVyZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZTsK
KyAgICB2YXIgZ2x1VmFyVHlwZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZTsKKyAgICB2
YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOworICAgIHZhciB0
Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOworICAgIHZhciB0Y3VUZXh0
dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOworICAgIHZhciBkZU1hdGggPSBmcmFt
ZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3Jr
LmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVSYW5kb207CisgICAgdmFyIGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMu
ZGViYXNlLmRlVXRpbDsKKyAgICB2YXIgZ2xzVmVydGV4QXJyYXlUZXN0cyA9IG1vZHVsZXMuc2hh
cmVkLmdsc1ZlcnRleEFycmF5VGVzdHM7CisKKyAgICB2YXIgREVfQVNTRVJUID0gZnVuY3Rpb24o
eCkgeworICAgICAgICBpZiAoIXgpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2Vy
dCBmYWlsZWQnKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZXMzZlZlcnRleEFycmF5VGVz
dHMuU2luZ2xlVmVydGV4QXJyYXlVc2FnZUdyb3VwCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBwYXJhbSB7Z2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlfSB1c2FnZQorICAgICAqLworICAgIGVzM2ZWZXJ0
ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5VXNhZ2VHcm91cCA9IGZ1bmN0aW9uKHVzYWdl
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwoCisgICAgICAgICAgICB0aGlz
LAorICAgICAgICAgICAgInNpbmdsZV9hdHRyaWJ1dGUudXNhZ2VzLiIgKyBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkudXNhZ2VUeXBlVG9TdHJpbmcodXNhZ2UpLAorICAgICAgICAgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LnVzYWdlVHlwZVRvU3RyaW5nKHVzYWdlKQorICAgICAg
ICApOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgICAgIHRoaXMubV91c2Fn
ZSA9IHVzYWdlOworICAgIH07CisKKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0
ZXhBcnJheVVzYWdlR3JvdXAucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRl
eEFycmF5VXNhZ2VHcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVmVydGV4QXJyYXlU
ZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheVVzYWdlR3JvdXA7CisKKyAgICAvKioKKyAgICAgKiBpbml0
CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlVc2Fn
ZUdyb3VwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNvdW50cyA9IFsxLCAyNTZdOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzdHJpZGVzID0gWzAsIC0xLCAxNywgMzJdOyAvLyBU
cmVhdCBuZWdhdGl2ZSB2YWx1ZSBhcyBzaXplb2YgaW5wdXQuIFNhbWUgYXMgMCwgYnV0IGRvbmUg
b3V0c2lkZSBvZiBHTC4KKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlPn0gKi8gdmFyIGlucHV0VHlwZXMgPSBbCisgICAgICAgICAg
ICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FULAorICAgICAgICAg
ICAgLypnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZJWEVELCovCisgICAg
ICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JULAorICAg
ICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5CWVRFCisgICAg
ICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaW5wdXRUeXBlTmR4ID0gMDsgaW5wdXRUeXBlTmR4
IDwgaW5wdXRUeXBlcy5sZW5ndGg7IGlucHV0VHlwZU5keCsrKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBjb3VudE5keCA9IDA7IGNvdW50TmR4IDwgY291bnRzLmxlbmd0aDsgY291bnROZHgrKykg
eworICAgICAgICAgICAgICAgIGZvciAodmFyIHN0cmlkZU5keCA9IDA7IHN0cmlkZU5keCA8IHN0
cmlkZXMubGVuZ3RoOyBzdHJpZGVOZHgrKykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHN0cmlkZSA9IChzdHJpZGVzW3N0cmlkZU5keF0gPCAwID8gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LmlucHV0VHlwZVNpemUoaW5wdXRUeXBlc1tpbnB1dFR5
cGVOZHhdKSAqIDIgOiBzdHJpZGVzW3N0cmlkZU5keF0pOworICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBhbGlnbmVkID0gKHN0cmlkZSAlIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5pbnB1dFR5cGVTaXplKGlucHV0VHlwZXNbaW5wdXRUeXBlTmR4XSkp
ID09IDA7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFt
ZSA9ICdzdHJpZGUnICsgc3RyaWRlICsgJ18nICsgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LmlucHV0VHlwZVRvU3RyaW5nKGlucHV0VHlwZXNbaW5wdXRUeXBlTmR4XSkgKyAnX3F1YWRzJyAr
IGNvdW50c1tjb3VudE5keF07CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFycmF5U3BlYyA9
IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMuQXJyYXlT
cGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlc1tpbnB1dFR5cGVOZHhdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1
dFR5cGUuVkVDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5TdG9yYWdlLkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV91
c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3Rz
LkdMVmFsdWUuZ2V0TWluVmFsdWUoaW5wdXRUeXBlc1tpbnB1dFR5cGVOZHhdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZS5nZXRNYXhWYWx1ZShpbnB1dFR5cGVzW2lucHV0VHlwZU5keF0pCisgICAgICAgICAgICAgICAg
ICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNwZWMgPSBuZXcgZ2xzVmVydGV4QXJy
YXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVjKCk7CisgICAgICAgICAgICAgICAgICAg
IHNwZWMucHJpbWl0aXZlID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5U
UklBTkdMRVM7CisgICAgICAgICAgICAgICAgICAgIHNwZWMuZHJhd0NvdW50ID0gY291bnRzW2Nv
dW50TmR4XTsKKyAgICAgICAgICAgICAgICAgICAgc3BlYy5maXJzdCA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIHNwZWMuYXJyYXlzLnB1c2goYXJyYXlTcGVjKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoYWxpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVs
dGlWZXJ0ZXhBcnJheVRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMs
IG5hbWUsIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVW
ZXJ0ZXhBcnJheVN0cmlkZUdyb3VwCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LklucHV0VHlwZX0gdHlwZQorICAgICAqLworICAgIGVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLlNpbmdsZVZlcnRleEFycmF5U3RyaWRlR3JvdXAgPSBmdW5jdGlvbih0eXBlKSB7Cisg
ICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LmlucHV0VHlwZVRvU3RyaW5nKHR5cGUpLCBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuaW5wdXRUeXBlVG9TdHJpbmcodHlwZSkpOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRh
YmxlKCk7CisgICAgICAgIHRoaXMubV90eXBlID0gdHlwZTsKKyAgICB9OworCisgICAgZXMzZlZl
cnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlTdHJpZGVHcm91cC5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZl
cnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlTdHJpZGVHcm91cC5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheVN0cmlkZUdy
b3VwOworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLworICAgIGVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLlNpbmdsZVZlcnRleEFycmF5U3RyaWRlR3JvdXAucHJvdG90eXBlLmluaXQgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuU3RvcmFnZT59ICovIHZhciBzdG9yYWdlcyA9IFsKKyAgICAgICAgICAgIC8vIFVzZXIg
c3RvcmFnZSBub3Qgc3VwcG9ydGVkIGluIFdlYkdMIC0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LlN0b3JhZ2UuVVNFUiwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5TdG9yYWdlLkJVRkZFUgorICAgICAgICBdOworICAgICAgICB2YXIgY291bnRzID0gWzEsIDI1
Nl07CisgICAgICAgIHZhciBzdHJpZGVzID0gWy8qMCwqLyAtMSwgMTcsIDMyXTsgLy8gVHJlYXQg
bmVnYXRpdmUgdmFsdWUgYXMgc2l6ZW9mIGlucHV0LiBTYW1lIGFzIDAsIGJ1dCBkb25lIG91dHNp
ZGUgb2YgR0wuCisKKyAgICAgICAgZm9yICh2YXIgc3RvcmFnZU5keCA9IDA7IHN0b3JhZ2VOZHgg
PCBzdG9yYWdlcy5sZW5ndGg7IHN0b3JhZ2VOZHgrKykgeworICAgICAgICAgICAgZm9yICh2YXIg
Y29tcG9uZW50Q291bnQgPSAyOyBjb21wb25lbnRDb3VudCA8IDU7IGNvbXBvbmVudENvdW50Kysp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudE5keCA9IDA7IGNvdW50TmR4IDwgY291
bnRzLmxlbmd0aDsgY291bnROZHgrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBz
dHJpZGVOZHggPSAwOyBzdHJpZGVOZHggPCBzdHJpZGVzLmxlbmd0aDsgc3RyaWRlTmR4KyspIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHBhY2tl
ZCA9IHRoaXMubV90eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUu
VU5TSUdORURfSU5UXzJfMTBfMTBfMTAgfHwgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RyaWRlID0gKHN0cmlkZXNbc3RyaWRl
TmR4XSA8IDApID8gKChwYWNrZWQpID8gKDE2KSA6IChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuaW5wdXRUeXBlU2l6ZSh0aGlzLm1fdHlwZSkgKiBjb21wb25lbnRDb3VudCkpIDogKHN0cmlk
ZXNbc3RyaWRlTmR4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIGFsaWdubWVudCA9IChwYWNrZWQpID8gKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5pbnB1dFR5cGVTaXplKHRoaXMubV90eXBlKSAqIGNvbXBvbmVudENvdW50KSA6IChnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0aGlzLm1fdHlwZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYnVmZmVyVW5h
bGlnbmVkID0gKHN0b3JhZ2VzW3N0b3JhZ2VOZHhdID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5TdG9yYWdlLkJVRkZFUikgJiYgKHN0cmlkZSAlIGFsaWdubWVudCkgIT0gMDsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBuYW1lID0gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LnN0b3JhZ2VUb1N0cmluZyhzdG9yYWdlc1tzdG9yYWdl
TmR4XSkgKyAnX3N0cmlkZScgKyBzdHJpZGUgKyAnX2NvbXBvbmVudHMnICsgY29tcG9uZW50Q291
bnQgKyAnX3F1YWRzJyArIGNvdW50c1tjb3VudE5keF07CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgodGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0
VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV90eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUu
SU5UXzJfMTBfMTBfMTApICYmIGNvbXBvbmVudENvdW50ICE9IDQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVjLkFycmF5U3Bl
Y30gKi8gdmFyIGFycmF5U3BlYyA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4
QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMubV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmFnZXNbc3RvcmFnZU5keF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLkRZTkFNSUNfRFJBVywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21wb25lbnRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0
ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0TWluVmFsdWUodGhpcy5tX3R5cGUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRNYXhWYWx1
ZSh0aGlzLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzcGVjID0gbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0
ZXhBcnJheVRlc3QuU3BlYygpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLnByaW1p
dGl2ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJQU5HTEVTOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5kcmF3Q291bnQgPSBjb3VudHNbY291bnROZHhd
OworICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5maXJzdCA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzcGVjLmFycmF5cy5wdXNoKGFycmF5U3BlYyk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghYnVmZmVyVW5hbGlnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBn
bHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3BlYywgbmFtZSwgbmFtZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVW
ZXJ0ZXhBcnJheVN0cmlkZVRlc3RzCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZWZXJ0ZXhBcnJheVRl
c3RzLlNpbmdsZVZlcnRleEFycmF5U3RyaWRlVGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnc2luZ2xlX2F0dHJpYnV0ZS5zdHJpZGVz
JywgJ1NpbmdsZSBzdHJpZGUgdmVydGV4IGF0cmlidXRlJyk7CisgICAgICAgIHRoaXMubWFrZUV4
ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVy
dGV4QXJyYXlTdHJpZGVUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNl
LkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVy
dGV4QXJyYXlTdHJpZGVUZXN0cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVmVydGV4QXJy
YXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheVN0cmlkZVRlc3RzOworCisgICAgZXMzZlZlcnRleEFy
cmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlTdHJpZGVUZXN0cy5wcm90b3R5cGUuaW5pdCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5JbnB1dFR5cGU+fSAqLyB2YXIgaW5wdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGds
c1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQsCisgICAgICAgICAgICBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JULAorICAgICAgICAgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5CWVRFLAorICAgICAgICAgICAg
LypnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JULAor
ICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05F
RF9CWVRFLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZS5GSVhFRCwqLworICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0
VHlwZS5JTlRfMl8xMF8xMF8xMAorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIGlucHV0
VHlwZU5keCA9IDA7IGlucHV0VHlwZU5keCA8IGlucHV0VHlwZXMubGVuZ3RoOyBpbnB1dFR5cGVO
ZHgrKykKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGVz
M2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5U3RyaWRlR3JvdXAoCisgICAgICAg
ICAgICAgICAgICAgIGlucHV0VHlwZXNbaW5wdXRUeXBlTmR4XQorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge2ds
c1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKi8KKyAgICBl
czNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheUZpcnN0R3JvdXAgPSBmdW5jdGlv
bih0eXBlKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwoCisgICAgICAgICAg
ICB0aGlzLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LmlucHV0VHlw
ZVRvU3RyaW5nKHR5cGUpLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LmlucHV0VHlwZVRvU3RyaW5nKHR5cGUpCisgICAgICAgICk7CisgICAgICAgIHRoaXMubWFrZUV4
ZWN1dGFibGUoKTsKKworICAgICAgICB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgfTsKKworICAg
IGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Rmlyc3RHcm91cC5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAg
ZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlGaXJzdEdyb3VwLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Rmly
c3RHcm91cDsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBlczNmVmVydGV4
QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheUZpcnN0R3JvdXAucHJvdG90eXBlLmluaXQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGNvdW50cyA9IFs1LCAyNTZdOworICAgICAgICB2YXIg
Zmlyc3RzID0gWzYsIDI0XTsKKyAgICAgICAgdmFyIG9mZnNldHMgPSBbMSwgMTYsIDE3XTsKKyAg
ICAgICAgdmFyIHN0cmlkZXMgPSBbLyowLCovIC0xLCAxNywgMzJdOyAvLyBUcmVhZCBuZWdhdGl2
ZSB2YWx1ZSBhcyBzaXplb2YgaW5wdXQuIFNhbWUgYXMgMCwgYnV0IGRvbmUgb3V0c2lkZSBvZiBH
TC4KKworICAgICAgICBmb3IgKHZhciBvZmZzZXROZHggPSAwOyBvZmZzZXROZHggPCBvZmZzZXRz
Lmxlbmd0aDsgb2Zmc2V0TmR4KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvdW50TmR4ID0g
MDsgY291bnROZHggPCBjb3VudHMubGVuZ3RoOyBjb3VudE5keCsrKSB7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgc3RyaWRlTmR4ID0gMDsgc3RyaWRlTmR4IDwgc3RyaWRlcy5sZW5ndGg7IHN0
cmlkZU5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGZpcnN0TmR4ID0gMDsg
Zmlyc3ROZHggPCBmaXJzdHMubGVuZ3RoOyBmaXJzdE5keCsrKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcGFja2VkID0gdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMubV90eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTA7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y29tcG9uZW50Q291bnQgPSBwYWNrZWQgPyA0IDogMjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdHJpZGUgPSBzdHJpZGVzW3N0cmlkZU5keF0gPCAwID8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocGFja2VkID8gOCA6IChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5w
dXRUeXBlU2l6ZSh0aGlzLm1fdHlwZSkgKiBjb21wb25lbnRDb3VudCkpIDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3RyaWRlc1tzdHJpZGVOZHhdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBhbGlnbm1lbnQgPSBwYWNrZWQgPworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0aGlzLm1fdHlw
ZSkgKiBjb21wb25lbnRDb3VudCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0aGlzLm1fdHlwZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGFsaWduZWQgPSAoKHN0cmlkZSAlIGFsaWdubWVudCkg
PT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG9mZnNldHNbb2Zmc2V0TmR4
XSAlIGFsaWdubWVudCkgPT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9
ICdmaXJzdCcgKyBmaXJzdHNbZmlyc3ROZHhdICsgJ19vZmZzZXQnICsgb2Zmc2V0c1tvZmZzZXRO
ZHhdICsgJ19zdHJpZGUnICsgc3RyaWRlICsgJ19xdWFkcycgKyBjb3VudHNbY291bnROZHhdOwor
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJyYXlTcGVjID0gbmV3IGdsc1ZlcnRleEFy
cmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYy5BcnJheVNwZWMoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZS5C
VUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LlVzYWdlLkRZTkFNSUNfRFJBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21wb25lbnRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzW29mZnNl
dE5keF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1Zl
cnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRNaW5WYWx1ZSh0aGlzLm1fdHlwZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1heFZh
bHVlKHRoaXMubV90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHNwZWMgPSBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZl
cnRleEFycmF5VGVzdC5TcGVjKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLnByaW1p
dGl2ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJQU5HTEVTOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5kcmF3Q291bnQgPSBjb3VudHNbY291bnROZHhd
OworICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5maXJzdCA9IGZpcnN0c1tmaXJzdE5keF07
CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLmFycmF5cy5wdXNoKGFycmF5U3BlYyk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGlnbmVkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYywgbmFtZSwgbmFtZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
ZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICovCisgICAgZXMzZlZlcnRleEFy
cmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlGaXJzdFRlc3RzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3NpbmdsZV9hdHRyaWJ1dGUuZmly
c3QnLCAnU2luZ2xlIHZlcnRleCBhdHRyaWJ1dGUsIGRpZmZlcmVudCBmaXJzdCB2YWx1ZXMgdG8g
ZHJhd0FycmF5cycpOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgfTsKKwor
ICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Rmlyc3RUZXN0cy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7Cisg
ICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlGaXJzdFRlc3RzLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5
Rmlyc3RUZXN0czsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBlczNmVmVy
dGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheUZpcnN0VGVzdHMucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVGVzdCBvZmZzZXQgd2l0aCBkaWZmZXJlbnQgaW5w
dXQgdHlwZXMsIGNvbXBvbmVudCBjb3VudHMgYW5kIHN0b3JhZ2UsIFVzYWdlKD8pCisgICAgICAg
IHZhciBpbnB1dFR5cGVzID0gWworICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LklucHV0VHlwZS5GTE9BVCwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5JbnB1dFR5cGUuQllURSwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTAKKyAgICAgICAgXTsKKworICAgICAgICBmb3Ig
KHZhciBpbnB1dFR5cGVOZHggPSAwOyBpbnB1dFR5cGVOZHggPCBpbnB1dFR5cGVzLmxlbmd0aDsg
aW5wdXRUeXBlTmR4KyspIHsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoCisgICAgICAgICAg
ICAgICAgbmV3IGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Rmlyc3RHcm91
cCgKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlc1tpbnB1dFR5cGVOZHhdCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRl
c3R9CisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBl
fSB0eXBlCisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJy
YXlPZmZzZXRHcm91cCA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVx
cFRlc3QuY2FsbCgKKyAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlVG9TdHJpbmcodHlwZSksCisgICAgICAgICAgICBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlVG9TdHJpbmcodHlwZSkKKyAgICAgICAg
KTsKKyAgICAgICAgdGhpcy5tYWtlRXhlY3V0YWJsZSgpOworICAgICAgICB0aGlzLm1fdHlwZSA9
IHR5cGU7CisgICAgfTsKKworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFy
cmF5T2Zmc2V0R3JvdXAucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFy
cmF5T2Zmc2V0R3JvdXAucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlZlcnRleEFycmF5VGVz
dHMuU2luZ2xlVmVydGV4QXJyYXlPZmZzZXRHcm91cDsKKworICAgIC8qKgorICAgICAqIGluaXQK
KyAgICAgKi8KKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU9mZnNl
dEdyb3VwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBjb3VudHMg
PSBbMSwgMjU2XTsKKyAgICAgICAgdmFyIG9mZnNldHMgPSBbMSwgNCwgMTcsIDMyXTsKKyAgICAg
ICAgdmFyIHN0cmlkZXMgPSBbLyowLCovIC0xLCAxNywgMzJdOyAvLyBUcmVhZCBuZWdhdGl2ZSB2
YWx1ZSBhcyBzaXplb2YgaW5wdXQuIFNhbWUgYXMgMCwgYnV0IGRvbmUgb3V0c2lkZSBvZiBHTC4K
KworICAgICAgICBmb3IgKHZhciBvZmZzZXROZHggPSAwOyBvZmZzZXROZHggPCBvZmZzZXRzLmxl
bmd0aDsgb2Zmc2V0TmR4KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvdW50TmR4ID0gMDsg
Y291bnROZHggPCBjb3VudHMubGVuZ3RoOyBjb3VudE5keCsrKSB7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgc3RyaWRlTmR4ID0gMDsgc3RyaWRlTmR4IDwgc3RyaWRlcy5sZW5ndGg7IHN0cmlk
ZU5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwYWNrZWQgPSB0aGlzLm1fdHlwZSA9
PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVF8yXzEw
XzEwXzEwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdHlwZSA9PSBnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwOworICAgICAgICAg
ICAgICAgICAgICB2YXIgY29tcG9uZW50Q291bnQgPSBwYWNrZWQgPyA0IDogMjsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0cmlkZSA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlk
ZXNbc3RyaWRlTmR4XSA8IDAgPworICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LmlucHV0VHlwZVNpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5tX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICkgKiBjb21wb25lbnRDb3Vu
dCA6CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzW3N0cmlkZU5keF0KKyAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFsaWdubWVudCA9IHBhY2tl
ZCA/CisgICAgICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
aW5wdXRUeXBlU2l6ZSh0aGlzLm1fdHlwZSkgKiBjb21wb25lbnRDb3VudCA6CisgICAgICAgICAg
ICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0
aGlzLm1fdHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFsaWduZWQgPSAoKHN0cmlk
ZSAlIGFsaWdubWVudCkgPT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICgob2Zmc2V0
c1tvZmZzZXROZHhdICUgYWxpZ25tZW50KSA9PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IG5hbWUgPSAnb2Zmc2V0JyArIG9mZnNldHNbb2Zmc2V0TmR4XSArCisgICAgICAgICAgICAgICAg
ICAgICAgICAnX3N0cmlkZScgKyBzdHJpZGUgKyAnX3F1YWRzJyArCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudHNbY291bnROZHhdOworCisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVjLkFycmF5U3Bl
Y30gKi8gdmFyIGFycmF5U3BlYyA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4
QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5t
X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuT3V0cHV0VHlwZS5WRUMyLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UuQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLkRZTkFNSUNfRFJBVywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBvbmVudENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0c1tvZmZzZXROZHhdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0TWluVmFsdWUodGhpcy5tX3R5cGUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVl
KHRoaXMubV90eXBlKQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAg
ICAgIHZhciBzcGVjID0gbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRl
c3QuU3BlYygpOworICAgICAgICAgICAgICAgICAgICBzcGVjLnByaW1pdGl2ZSA9IGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJQU5HTEVTOworICAgICAgICAgICAgICAg
ICAgICBzcGVjLmRyYXdDb3VudCA9IGNvdW50c1tjb3VudE5keF07CisgICAgICAgICAgICAgICAg
ICAgIHNwZWMuZmlyc3QgPSAwOworICAgICAgICAgICAgICAgICAgICBzcGVjLmFycmF5cy5wdXNo
KGFycmF5U3BlYyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWduZWQpCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLCBuYW1lLCBuYW1lCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQor
ICAgICAqLworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5T2Zmc2V0
VGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0
aGlzLCAnc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQnLCAnU2luZ2xlIHZlcnRleCBhdHJpYnV0ZSBv
ZmZzZXQgZWxlbWVudCcpOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgfTsK
KworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5T2Zmc2V0VGVzdHMu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUp
OworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5T2Zmc2V0VGVzdHMu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4
QXJyYXlPZmZzZXRUZXN0czsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBl
czNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU9mZnNldFRlc3RzLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRlc3Qgb2Zmc2V0IHdpdGggZGlmZmVy
ZW50IGlucHV0IHR5cGVzLCBjb21wb25lbnQgY291bnRzIGFuZCBzdG9yYWdlLCBVc2FnZSg/KQor
ICAgICAgICB2YXIgaW5wdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlLkJZVEUsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwCisgICAgICAgIF07CisKKyAgICAg
ICAgZm9yICh2YXIgaW5wdXRUeXBlTmR4ID0gMDsgaW5wdXRUeXBlTmR4IDwgaW5wdXRUeXBlcy5s
ZW5ndGg7IGlucHV0VHlwZU5keCsrKSB7CisgICAgICAgICAgICB0aGlzLmFkZENoaWxkKAorICAg
ICAgICAgICAgICAgIG5ldyBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU9m
ZnNldEdyb3VwKAorICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGVzW2lucHV0VHlwZU5keF0K
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5J
bnB1dFR5cGV9IHR5cGUKKyAgICAgKi8KKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVW
ZXJ0ZXhBcnJheU5vcm1hbGl6ZUdyb3VwID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICB0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKAorICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIGds
c1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5pbnB1dFR5cGVUb1N0cmluZyh0eXBlKSwKKyAgICAg
ICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5pbnB1dFR5cGVUb1N0cmluZyh0eXBl
KQorICAgICAgICApOworICAgICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgICAgIHRo
aXMubV90eXBlID0gdHlwZTsKKyAgICB9OworCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2lu
Z2xlVmVydGV4QXJyYXlOb3JtYWxpemVHcm91cC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMu
U2luZ2xlVmVydGV4QXJyYXlOb3JtYWxpemVHcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBl
czNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU5vcm1hbGl6ZUdyb3VwOworCisg
ICAgLyoqCisgICAgICogaW5pdCBmb3IgU2luZ2xlVmVydGV4QXJyYXlOb3JtYWxpemVHcm91cAor
ICAgICAqLworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Tm9ybWFs
aXplR3JvdXAucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGNvdW50
cyA9IFsxLCAyNTZdOworCisgICAgICAgIGZvciAodmFyIGNvbXBvbmVudENvdW50ID0gMjsgY29t
cG9uZW50Q291bnQgPCA1OyBjb21wb25lbnRDb3VudCsrKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBjb3VudE5keCA9IDA7IGNvdW50TmR4IDwgY291bnRzLmxlbmd0aDsgY291bnROZHgrKykgewor
ICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5J
TlRfMl8xMF8xMF8xMAorICAgICAgICAgICAgICAgICAgICApICYmIGNvbXBvbmVudENvdW50ICE9
IDQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAnY29tcG9uZW50cycgKyBjb21wb25lbnRDb3VudC50
b1N0cmluZygpICsgJ19xdWFkcycgKyBjb3VudHNbY291bnROZHhdLnRvU3RyaW5nKCk7CisKKyAg
ICAgICAgICAgICAgICB2YXIgYXJyYXlTcGVjID0gbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVs
dGlWZXJ0ZXhBcnJheVRlc3QuU3BlYy5BcnJheVNwZWMoCisgICAgICAgICAgICAgICAgICAgIHRo
aXMubV90eXBlLAorICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuT3V0cHV0VHlwZS5WRUM0LAorICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuU3RvcmFnZS5CVUZGRVIsIC8vTm8gVVNFUiBTdG9yYWdlIHN1cHBvcnQgaW4g
V2ViR0wyCisgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5V
c2FnZS5EWU5BTUlDX0RSQVcsCisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudENvdW50LAor
ICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3Rz
LkdMVmFsdWUuZ2V0TWluVmFsdWUodGhpcy5tX3R5cGUpLAorICAgICAgICAgICAgICAgICAgICBn
bHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0TWF4VmFsdWUodGhpcy5tX3R5cGUpCisgICAg
ICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHZhciBzcGVjID0gbmV3IGdsc1ZlcnRl
eEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYygpOworICAgICAgICAgICAgICAg
IHNwZWMucHJpbWl0aXZlID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5U
UklBTkdMRVM7CisgICAgICAgICAgICAgICAgc3BlYy5kcmF3Q291bnQgPSBjb3VudHNbY291bnRO
ZHhdOworICAgICAgICAgICAgICAgIHNwZWMuZmlyc3QgPSAwOworICAgICAgICAgICAgICAgIHNw
ZWMuYXJyYXlzLnB1c2goYXJyYXlTcGVjKTsKKworICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hp
bGQoCisgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVy
dGV4QXJyYXlUZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc3BlYywgbmFtZSwgbmFtZQor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICovCisgICAgZXMzZlZlcnRl
eEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlOb3JtYWxpemVUZXN0cyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdzaW5nbGVfYXR0cmli
dXRlLm5vcm1hbGl6ZScsICdTaW5nbGUgbm9ybWFsaXplIHZlcnRleCBhdHJpYnV0ZScpOworICAg
ICAgICB0aGlzLm1ha2VFeGVjdXRhYmxlKCk7CisgICAgfTsKKworICAgIGVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Tm9ybWFsaXplVGVzdHMucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGVzM2ZWZXJ0ZXhB
cnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Tm9ybWFsaXplVGVzdHMucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlOb3JtYWxpemVU
ZXN0czsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBlczNmVmVydGV4QXJy
YXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU5vcm1hbGl6ZVRlc3RzLnByb3RvdHlwZS5pbml0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRlc3Qgbm9ybWFsaXphdGlvbiB3aXRoIGRpZmZlcmVu
dCBpbnB1dCB0eXBlcywgY29tcG9uZW50IGNvdW50cyBhbmQgc3RvcmFnZQorICAgICAgICAvKiog
QHR5cGUge0FycmF5PGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGU+fSAqLyB2
YXIgaW5wdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5JbnB1dFR5cGUuRkxPQVQsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuSW5wdXRUeXBlLlNIT1JULAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LklucHV0VHlwZS5CWVRFLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LklucHV0VHlwZS5VTlNJR05FRF9TSE9SVCwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfQllURSwKKyAgICAgICAgICAgIC8vZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GSVhFRCwKKyAgICAgICAgICAgIGds
c1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5ULAorICAgICAg
ICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5JTlQsCisgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkhBTEYsCisgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0
VHlwZS5JTlRfMl8xMF8xMF8xMAorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIGlucHV0
VHlwZU5keCA9IDA7IGlucHV0VHlwZU5keCA8IGlucHV0VHlwZXMubGVuZ3RoOyBpbnB1dFR5cGVO
ZHgrKykgeworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZCgKKyAgICAgICAgICAgICAgICBuZXcg
ZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlOb3JtYWxpemVHcm91cCgKKyAg
ICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlc1tpbnB1dFR5cGVOZHhdCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9Cisg
ICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlfSB0eXBl
CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlPdXRw
dXRUeXBlR3JvdXAgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBU
ZXN0LmNhbGwoCisgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgInNpbmdsZV9hdHRyaWJ1
dGUub3V0cHV0X3R5cGVzLiIgKyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBl
VG9TdHJpbmcodHlwZSksCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
aW5wdXRUeXBlVG9TdHJpbmcodHlwZSkKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5tYWtlRXhl
Y3V0YWJsZSgpOworICAgICAgICB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgfTsKKworICAgIGVz
M2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5T3V0cHV0VHlwZUdyb3VwLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAg
ICBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU91dHB1dFR5cGVHcm91cC5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhB
cnJheU91dHB1dFR5cGVHcm91cDsKKworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZl
cnRleEFycmF5T3V0cHV0VHlwZUdyb3VwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBvdXRwdXRUeXBlcyA9IFsKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzIsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMzLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDNCwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUMyLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzMsCisgICAgICAgICAgICBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5JVkVDNCwKKyAgICAgICAgICAgIGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlVWRUMyLAorICAgICAgICAgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzMsCisgICAgICAgICAgICBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5VVkVDNAorICAgICAgICBdOworICAg
ICAgICB2YXIgc3RvcmFnZXMgPSBbZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2Uu
QlVGRkVSXTsgLy9ObyBVU0VSIHN0b3JhZ2Ugc3VwcG9ydCBpbiBXZWJHTDIKKyAgICAgICAgdmFy
IGNvdW50cyA9IFsxLCAyNTZdOworCisgICAgICAgIGZvciAodmFyIG91dHB1dFR5cGVOZHggPSAw
OyBvdXRwdXRUeXBlTmR4IDwgb3V0cHV0VHlwZXMubGVuZ3RoOyBvdXRwdXRUeXBlTmR4KyspIHsK
KyAgICAgICAgICAgIGZvciAodmFyIHN0b3JhZ2VOZHggPSAwOyBzdG9yYWdlTmR4IDwgc3RvcmFn
ZXMubGVuZ3RoOyBzdG9yYWdlTmR4KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjb21w
b25lbnRDb3VudCA9IDI7IGNvbXBvbmVudENvdW50IDwgNTsgY29tcG9uZW50Q291bnQrKykgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudE5keCA9IDA7IGNvdW50TmR4IDwgY291
bnRzLmxlbmd0aDsgY291bnROZHgrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5h
bWUgPSAnY29tcG9uZW50cycgKyBjb21wb25lbnRDb3VudCArICdfJyArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lm91dHB1dFR5cGVUb1N0
cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VHlwZXNbb3V0cHV0
VHlwZU5keF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnX3F1YWRzJyArIGNvdW50c1tjb3VudE5keF07CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBpbnB1dElzU2lnbmVkSW50ZWdlciA9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZS5JTlQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdHlwZSA9
PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JUIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5CWVRFOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5w
dXRJc1VuaWduZWRJbnRlZ2VyID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1f
dHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lO
VCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV90eXBlID09IGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfU0hPUlQgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBvdXRwdXRJc1NpZ25lZEludGVnZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dFR5cGVzW291dHB1dFR5cGVOZHhdID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5PdXRwdXRUeXBlLklWRUMyIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
VHlwZXNbb3V0cHV0VHlwZU5keF0gPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1
dFR5cGUuSVZFQzMgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRUeXBlc1tv
dXRwdXRUeXBlTmR4XSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5J
VkVDNDsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dHB1dElzVW5zaWduZWRJbnRl
Z2VyID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRUeXBlc1tvdXRwdXRUeXBl
TmR4XSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5VVkVDMiB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFR5cGVzW291dHB1dFR5cGVOZHhdID09
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlVWRUMzIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VHlwZXNbb3V0cHV0VHlwZU5keF0gPT0gZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQ7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIElmIGlucHV0IHR5cGUgaXMgZmxvYXQgdHlwZSBhbmQgb3V0cHV0IHR5cGUg
aXMgaW50IHR5cGUgc2tpcAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLm1fdHlw
ZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FUIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LklucHV0VHlwZS5IQUxGKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChvdXRwdXRUeXBlc1tvdXRwdXRUeXBlTmR4XSA+PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuT3V0cHV0VHlwZS5JTlQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMubV90eXBlID09IGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTAgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdHlwZSA9PSBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChvdXRwdXRUeXBlc1tvdXRwdXRUeXBlTmR4XSA+PSBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5JTlQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMubV90
eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5U
XzJfMTBfMTBfMTAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fdHlwZSA9
PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudENvdW50ICE9IDQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIExvYWRpbmcgc2lnbmVkIGRhdGEgYXMgdW5zaWduZWQgY2F1c2VzIHVuZGVmaW5lZCB2
YWx1ZXMgYW5kIHZpY2UgdmVyc2EKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dElz
U2lnbmVkSW50ZWdlciAmJiBvdXRwdXRJc1Vuc2lnbmVkSW50ZWdlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1
dElzVW5pZ25lZEludGVnZXIgJiYgb3V0cHV0SXNTaWduZWRJbnRlZ2VyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
YXJyYXlTcGVjID0gbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3Qu
U3BlYy5BcnJheVNwZWMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tX3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VHlwZXNbb3V0cHV0VHlwZU5keF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZXNbc3RvcmFnZU5keF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdl
LkRZTkFNSUNfRFJBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRDb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1pblZhbHVl
KHRoaXMubV90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLkdMVmFsdWUuZ2V0TWF4VmFsdWUodGhpcy5tX3R5cGUpCisgICAgICAgICAgICAgICAg
ICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3BlYyA9IG5ldyBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNwZWMucHJpbWl0aXZlID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LlByaW1pdGl2ZS5UUklBTkdMRVM7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLmRyYXdD
b3VudCA9IGNvdW50c1tjb3VudE5keF07CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLmZp
cnN0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMuYXJyYXlzLnB1c2goYXJyYXlT
cGVjKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFy
cmF5VGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYywgbmFtZSwgbmFt
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZW
ZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlDb3VudFRlc3RzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ211bHRpcGxlX2F0dHJp
YnV0ZXMuYXR0cmlidXRlX2NvdW50JywgJ0F0dHJpYnV0ZSBjb3VudHMnKTsKKyAgICAgICAgdGhp
cy5tYWtlRXhlY3V0YWJsZSgpOworICAgIH07CisKKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5N
dWx0aVZlcnRleEFycmF5Q291bnRUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRl
c3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVs
dGlWZXJ0ZXhBcnJheUNvdW50VGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlZlcnRl
eEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheUNvdW50VGVzdHM7CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlY30g
c3BlYworICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBlczNmVmVydGV4QXJy
YXlUZXN0cy5NdWx0aVZlcnRleEFycmF5Q291bnRUZXN0cy5wcm90b3R5cGUuZ2V0VGVzdE5hbWUg
PSBmdW5jdGlvbihzcGVjKSB7CisgICAgICAgIHZhciBuYW1lID0gJyc7CisgICAgICAgIG5hbWUg
Kz0gc3BlYy5hcnJheXMubGVuZ3RoOworCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH07CisK
KyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5Q291bnRUZXN0cy5wcm90
b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBUZXN0IGF0dHJpYnV0ZSBjb3Vu
dHMKKyAgICAgICAgdmFyIGFycmF5Q291bnRzID0gWzIsIDMsIDQsIDUsIDYsIDcsIDhdOworCisg
ICAgICAgIGZvciAodmFyIGFycmF5Q291bnROZHggPSAwOyBhcnJheUNvdW50TmR4IDwgYXJyYXlD
b3VudHMubGVuZ3RoOyBhcnJheUNvdW50TmR4KyspIHsKKyAgICAgICAgICAgIHZhciBzcGVjID0g
bmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYygpOworCisg
ICAgICAgICAgICBzcGVjLnByaW1pdGl2ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Q
cmltaXRpdmUuVFJJQU5HTEVTOworICAgICAgICAgICAgc3BlYy5kcmF3Q291bnQgPSAyNTY7Cisg
ICAgICAgICAgICBzcGVjLmZpcnN0ID0gMDsKKworICAgICAgICAgICAgZm9yICh2YXIgYXJyYXlO
ZHggPSAwOyBhcnJheU5keCA8IGFycmF5Q291bnRzW2FycmF5Q291bnROZHhdOyBhcnJheU5keCsr
KSB7CisgICAgICAgICAgICAgICAgdmFyIGFycmF5U3BlYyA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRl
c3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVjKAorICAgICAgICAgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FULAorICAgICAg
ICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMy
LAorICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFn
ZS5CVUZGRVIsIC8vIE5vIFVTRVIgc3RvcmFnZSBzdXBwb3J0IGluIFdlYkdMMgorICAgICAgICAg
ICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVXNhZ2UuRFlOQU1JQ19EUkFX
LAorICAgICAgICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1pblZhbHVlKGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQpLAorICAgICAgICAgICAgICAgICAg
ICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0TWF4VmFsdWUoZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LklucHV0VHlwZS5GTE9BVCkKKyAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgICAgIHNwZWMuYXJyYXlzLnB1c2goYXJyYXlTcGVjKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldFRlc3ROYW1lKHNwZWMpOworICAgICAgICAg
ICAgdmFyIGRlc2MgPSB0aGlzLmdldFRlc3ROYW1lKHNwZWMpOworCisgICAgICAgICAgICB0aGlz
LmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRp
VmVydGV4QXJyYXlUZXN0KAorICAgICAgICAgICAgICAgICAgICBzcGVjLCBuYW1lLCBkZXNjCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2Uu
RGVxcFRlc3R9CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhB
cnJheVN0b3JhZ2VUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsICdtdWx0aXBsZV9hdHRyaWJ1dGVzLnN0b3JhZ2UnLCAnQXR0cmlidXRl
IHN0b3JhZ2VzJyk7CisgICAgICAgIHRoaXMubWFrZUV4ZWN1dGFibGUoKTsKKyAgICB9OworCisg
ICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVN0b3JhZ2VUZXN0cy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7Cisg
ICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVN0b3JhZ2VUZXN0cy5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBlczNmVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5
U3RvcmFnZVRlc3RzOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRl
c3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWN9IHNwZWMKKyAgICAgKiBAcmV0dXJuIHtzdHJp
bmd9CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVN0
b3JhZ2VUZXN0cy5wcm90b3R5cGUuZ2V0VGVzdE5hbWUgPSBmdW5jdGlvbihzcGVjKSB7CisgICAg
ICAgIHZhciBuYW1lID0gJyc7CisgICAgICAgIG5hbWUgKz0gc3BlYy5hcnJheXMubGVuZ3RoOwor
CisgICAgICAgIGZvciAodmFyIGFycmF5TmR4ID0gMDsgYXJyYXlOZHggPCBzcGVjLmFycmF5cy5s
ZW5ndGg7IGFycmF5TmR4KyspCisgICAgICAgICAgICBuYW1lICs9ICdfJyArIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5zdG9yYWdlVG9TdHJpbmcoc3BlYy5hcnJheXNbYXJyYXlOZHhdLnN0
b3JhZ2UpOworCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlY30g
c3BlYworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAqLworICAgIGVzM2ZWZXJ0
ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlTdG9yYWdlVGVzdHMucHJvdG90eXBlLmFkZFN0
b3JhZ2VDYXNlcyA9IGZ1bmN0aW9uKHNwZWMsIGRlcHRoKSB7CisgICAgICAgIGlmIChkZXB0aCA9
PSAwKSB7CisgICAgICAgICAgICAvLyBTa2lwIHRyaXZpYWwgY2FzZSwgdXNlZCBlbHNld2hlcmUK
KyAgICAgICAgICAgIHZhciBvayA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh2YXIgYXJyYXlO
ZHggPSAwOyBhcnJheU5keCA8IHNwZWMuYXJyYXlzLmxlbmd0aDsgYXJyYXlOZHgrKykgeworICAg
ICAgICAgICAgICAgIGlmIChzcGVjLmFycmF5c1thcnJheU5keF0uc3RvcmFnZSAhPSBnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZS5VU0VSKSB7CisgICAgICAgICAgICAgICAgICAg
IG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldFRlc3ROYW1lKHNwZWMp
OworICAgICAgICAgICAgdmFyIGRlc2MgPSB0aGlzLmdldFRlc3ROYW1lKHNwZWMpOworCisgICAg
ICAgICAgICB0aGlzLmFkZENoaWxkKAorICAgICAgICAgICAgICAgIG5ldyBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0KAorICAgICAgICAgICAgICAgICAgICBzcGVjLCBu
YW1lLCBkZXNjCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdG9yYWdlcyA9IFsKKyAgICAgICAg
ICAgIC8vZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UuVVNFUiwgTm90IHN1cHBv
cnRlZCBpbiBXZWJHTCAyLjAKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5TdG9yYWdlLkJVRkZFUgorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIHN0b3JhZ2VO
ZHggPSAwOyBzdG9yYWdlTmR4IDwgc3RvcmFnZXMubGVuZ3RoOyBzdG9yYWdlTmR4KyspIHsKKyAg
ICAgICAgICAgIHZhciBhcnJheVNwZWMgPSBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZl
cnRleEFycmF5VGVzdC5TcGVjLkFycmF5U3BlYygKKyAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FULAorICAgICAgICAgICAgICAgIGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzIsCisgICAgICAgICAgICAgICAg
c3RvcmFnZXNbc3RvcmFnZU5keF0sCisgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LlVzYWdlLkRZTkFNSUNfRFJBVywKKyAgICAgICAgICAgICAgICAyLAorICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0TWluVmFsdWUo
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GTE9BVCksCisgICAgICAgICAg
ICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVlKGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQpCisgICAgICAgICAgICApOworCisgICAg
ICAgICAgICB2YXIgX3NwZWMgPSBzcGVjOworICAgICAgICAgICAgX3NwZWMuYXJyYXlzLnB1c2go
YXJyYXlTcGVjKTsKKyAgICAgICAgICAgIHRoaXMuYWRkU3RvcmFnZUNhc2VzKF9zcGVjLCBkZXB0
aCAtIDEpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGluaXQKKyAgICAg
Ki8KKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5U3RvcmFnZVRlc3Rz
LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRlc3QgZGlmZmVyZW50
IHN0b3JhZ2VzCisgICAgICAgIHZhciBhcnJheUNvdW50cyA9IFszXTsKKworICAgICAgICB2YXIg
c3BlYyA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMo
KTsKKworICAgICAgICBzcGVjLnByaW1pdGl2ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5QcmltaXRpdmUuVFJJQU5HTEVTOworICAgICAgICBzcGVjLmRyYXdDb3VudCA9IDI1NjsKKyAg
ICAgICAgc3BlYy5maXJzdCA9IDA7CisKKyAgICAgICAgZm9yICh2YXIgYXJyYXlDb3VudE5keCA9
IDA7IGFycmF5Q291bnROZHggPCBhcnJheUNvdW50cy5sZW5ndGg7IGFycmF5Q291bnROZHgrKykK
KyAgICAgICAgICAgIHRoaXMuYWRkU3RvcmFnZUNhc2VzKHNwZWMsIGFycmF5Q291bnRzW2FycmF5
Q291bnROZHhdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGVzM2ZWZXJ0
ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlTdHJpZGVUZXN0cyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdtdWx0aXBsZV9hdHRyaWJ1
dGVzLnN0cmlkZScsICdTdHJpZGVzJyk7CisgICAgICAgIHRoaXMubWFrZUV4ZWN1dGFibGUoKTsK
KyAgICB9OworCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVN0cmlk
ZVRlc3RzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJv
dG90eXBlKTsKKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5U3RyaWRl
VGVzdHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlW
ZXJ0ZXhBcnJheVN0cmlkZVRlc3RzOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0
ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWN9IHNwZWMKKyAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0
ZXhBcnJheVN0cmlkZVRlc3RzLnByb3RvdHlwZS5nZXRUZXN0TmFtZSA9IGZ1bmN0aW9uKHNwZWMp
IHsKKyAgICAgICAgdmFyIG5hbWUgPSAnJzsKKworICAgICAgICBuYW1lICs9IHNwZWMuYXJyYXlz
Lmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgc3Bl
Yy5hcnJheXMubGVuZ3RoOyBhcnJheU5keCsrKSB7CisgICAgICAgICAgICBuYW1lICs9ICdfJyAr
CisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlVG9TdHJp
bmcoc3BlYy5hcnJheXNbYXJyYXlOZHhdLmlucHV0VHlwZSkgKworICAgICAgICAgICAgc3BlYy5h
cnJheXNbYXJyYXlOZHhdLmNvbXBvbmVudENvdW50ICsgJ18nICsKKyAgICAgICAgICAgIHNwZWMu
YXJyYXlzW2FycmF5TmR4XS5zdHJpZGU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmFt
ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLworICAgIGVzM2ZWZXJ0
ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlTdHJpZGVUZXN0cy5wcm90b3R5cGUuaW5pdCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBUZXN0IGRpZmZlcmVudCBzdHJpZGVzLCB3aXRoIG11
bHRpcGxlIGFycmF5cywgaW5wdXQgdHlwZXM/PworICAgICAgICB2YXIgYXJyYXlDb3VudHMgPSBb
M107CisKKyAgICAgICAgdmFyIHNwZWMgPSBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZl
cnRleEFycmF5VGVzdC5TcGVjKCk7CisKKyAgICAgICAgc3BlYy5wcmltaXRpdmUgPSBnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZlLlRSSUFOR0xFUzsKKyAgICAgICAgc3BlYy5k
cmF3Q291bnQgPSAyNTY7CisgICAgICAgIHNwZWMuZmlyc3QgPSAwOworCisgICAgICAgIGZvciAo
dmFyIGFycmF5Q291bnROZHggPSAwOyBhcnJheUNvdW50TmR4IDwgYXJyYXlDb3VudHMubGVuZ3Ro
OyBhcnJheUNvdW50TmR4KyspCisgICAgICAgICAgICB0aGlzLmFkZFN0cmlkZUNhc2VzKHNwZWMs
IGFycmF5Q291bnRzW2FycmF5Q291bnROZHhdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWN9IHNw
ZWMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAgKi8KKyAgICBlczNmVmVydGV4
QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5U3RyaWRlVGVzdHMucHJvdG90eXBlLmFkZFN0cmlk
ZUNhc2VzID0gZnVuY3Rpb24oc3BlYywgZGVwdGgpIHsKKyAgICAgICAgaWYgKGRlcHRoID09IDAp
IHsKKyAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXRUZXN0TmFtZShzcGVjKTsKKyAgICAg
ICAgICAgIHZhciBkZXNjID0gdGhpcy5nZXRUZXN0TmFtZShzcGVjKTsKKyAgICAgICAgICAgIHRo
aXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVs
dGlWZXJ0ZXhBcnJheVRlc3QoCisgICAgICAgICAgICAgICAgICAgIHNwZWMsIG5hbWUsIGRlc2MK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIHN0cmlkZXMgPSBbMCwgLTEsIDE3LCAzMl07CisgICAg
ICAgIHZhciBpbnB1dFR5cGUgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBl
LkZMT0FUOworCisgICAgICAgIGZvciAodmFyIHN0cmlkZU5keCA9IDA7IHN0cmlkZU5keCA8IHN0
cmlkZXMubGVuZ3RoOyBzdHJpZGVOZHgrKykgeworICAgICAgICAgICAgdmFyIGNvbXBvbmVudENv
dW50ID0gMjsKKyAgICAgICAgICAgIHZhciBzdHJpZGUgPSBzdHJpZGVzW3N0cmlkZU5keF0gPj0g
MCA/IHN0cmlkZXNbc3RyaWRlTmR4XSA6IGNvbXBvbmVudENvdW50ICogZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LmlucHV0VHlwZVNpemUoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZS5GTE9BVCk7CisgICAgICAgICAgICB2YXIgYXJyYXlTcGVjID0gbmV3IGdsc1ZlcnRl
eEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYy5BcnJheVNwZWMoCisgICAgICAg
ICAgICAgICAgaW5wdXRUeXBlLAorICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5PdXRwdXRUeXBlLlZFQzIsCisgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LlN0b3JhZ2UuQlVGRkVSLCAvL1VTRVIgc3RvcmFnZSBub3Qgc3VwcG9ydGVk
IGluIFdlYkdMIDIuMAorICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5Vc2FnZS5EWU5BTUlDX0RSQVcsCisgICAgICAgICAgICAgICAgY29tcG9uZW50Q291bnQsCisg
ICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBzdHJpZGUsCisgICAgICAgICAgICAg
ICAgZmFsc2UsCisgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdl
dE1pblZhbHVlKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQpLAor
ICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRNYXhWYWx1ZShn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FUKQorICAgICAgICAgICAg
KTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYWxpZ25lZCA9IChz
dHJpZGUgJSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZShpbnB1dFR5
cGUpKSA9PSAwOworICAgICAgICAgICAgaWYgKGFsaWduZWQpIHsKKyAgICAgICAgICAgICAgICB2
YXIgX3NwZWMgPSAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJh
eVRlc3QuU3BlY30gKi8gKGRlVXRpbC5jbG9uZShzcGVjKSk7IC8vVG8gYXNzaWduIHNwZWMgYnkg
dmFsdWU7CisgICAgICAgICAgICAgICAgX3NwZWMuYXJyYXlzLnB1c2goYXJyYXlTcGVjKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmFkZFN0cmlkZUNhc2VzKF9zcGVjLCBkZXB0aCAtIDEpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAg
ICBlczNmVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5T3V0cHV0VGVzdHMgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAnbXVsdGlw
bGVfYXR0cmlidXRlcy5pbnB1dF90eXBlcycsICdpbnB1dCB0eXBlcycpOworICAgICAgICB0aGlz
Lm1ha2VFeGVjdXRhYmxlKCk7CisgICAgfTsKKworICAgIGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLk11
bHRpVmVydGV4QXJyYXlPdXRwdXRUZXN0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRl
c3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVs
dGlWZXJ0ZXhBcnJheU91dHB1dFRlc3RzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGVzM2ZWZXJ0
ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlPdXRwdXRUZXN0czsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVj
fSBzcGVjCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGVzM2ZWZXJ0ZXhB
cnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlPdXRwdXRUZXN0cy5wcm90b3R5cGUuZ2V0VGVzdE5h
bWUgPSBmdW5jdGlvbihzcGVjKSB7CisgICAgICAgIHZhciBuYW1lID0gJyc7CisKKyAgICAgICAg
bmFtZSArPSBzcGVjLmFycmF5cy5sZW5ndGg7CisKKyAgICAgICAgZm9yICh2YXIgYXJyYXlOZHgg
PSAwOyBhcnJheU5keCA8IHNwZWMuYXJyYXlzLmxlbmd0aDsgYXJyYXlOZHgrKykgeworICAgICAg
ICAgICAgbmFtZSArPSAnXycgKworICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LmlucHV0VHlwZVRvU3RyaW5nKHNwZWMuYXJyYXlzW2FycmF5TmR4XS5pbnB1dFR5cGUpICsK
KyAgICAgICAgICAgIHNwZWMuYXJyYXlzW2FycmF5TmR4XS5jb21wb25lbnRDb3VudCArICdfJyAr
CisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkub3V0cHV0VHlwZVRvU3Ry
aW5nKHNwZWMuYXJyYXlzW2FycmF5TmR4XS5vdXRwdXRUeXBlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBuYW1lOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBpbml0CisgICAgICov
CisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheU91dHB1dFRlc3RzLnBy
b3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRlc3QgZGlmZmVyZW50IGlu
cHV0IHR5cGVzLCB3aXRoIG11bHRpcGxlIGFycmF5cworICAgICAgICB2YXIgYXJyYXlDb3VudHMg
PSBbM107CisKKyAgICAgICAgdmFyIHNwZWMgPSBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0
aVZlcnRleEFycmF5VGVzdC5TcGVjKCk7CisKKyAgICAgICAgc3BlYy5wcmltaXRpdmUgPSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZlLlRSSUFOR0xFUzsKKyAgICAgICAgc3Bl
Yy5kcmF3Q291bnQgPSAyNTY7CisgICAgICAgIHNwZWMuZmlyc3QgPSAwOworCisgICAgICAgIGZv
ciAodmFyIGFycmF5Q291bnROZHggPSAwOyBhcnJheUNvdW50TmR4IDwgYXJyYXlDb3VudHMubGVu
Z3RoOyBhcnJheUNvdW50TmR4KyspCisgICAgICAgICAgICB0aGlzLmFkZElucHV0VHlwZUNhc2Vz
KHNwZWMsIGFycmF5Q291bnRzW2FycmF5Q291bnROZHhdKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNw
ZWN9IHNwZWMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAgICAgKi8KKyAgICBlczNm
VmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5T3V0cHV0VGVzdHMucHJvdG90eXBlLmFk
ZElucHV0VHlwZUNhc2VzID0gZnVuY3Rpb24oc3BlYywgZGVwdGgpIHsKKyAgICAgICAgaWYgKGRl
cHRoID09IDApIHsKKyAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXRUZXN0TmFtZShzcGVj
KTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gdGhpcy5nZXRUZXN0TmFtZShzcGVjKTsKKyAgICAg
ICAgICAgIHRoaXMuYWRkQ2hpbGQoCisgICAgICAgICAgICAgICAgbmV3IGdsc1ZlcnRleEFycmF5
VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QoCisgICAgICAgICAgICAgICAgICAgIHNwZWMsIG5h
bWUsIGRlc2MKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGlucHV0VHlwZXMgPSBbCisgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkJZVEUsCisgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JULAorICAgICAg
ICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9CWVRF
LAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJ
R05FRF9TSE9SVAorICAgICAgICBdOworCisgICAgICAgIGZvciAodmFyIGlucHV0VHlwZU5keCA9
IDA7IGlucHV0VHlwZU5keCA8IGlucHV0VHlwZXMubGVuZ3RoOyBpbnB1dFR5cGVOZHgrKykgewor
ICAgICAgICAgICAgdmFyIGFycmF5U3BlYyA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRp
VmVydGV4QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVjKAorICAgICAgICAgICAgICAgIGlucHV0VHlw
ZXNbaW5wdXRUeXBlTmR4XSwKKyAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZS5WRUMyLAorICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5TdG9yYWdlLkJVRkZFUiwgLy9VU0VSIHN0b3JhZ2Ugbm90IHN1cHBvcnRlZCBp
biBXZWJHTCAyLjAKKyAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
VXNhZ2UuRFlOQU1JQ19EUkFXLAorICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg
ICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRNaW5WYWx1ZShpbnB1dFR5cGVz
W2lucHV0VHlwZU5keF0pLAorICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xW
YWx1ZS5nZXRNYXhWYWx1ZShpbnB1dFR5cGVzW2lucHV0VHlwZU5keF0pCisgICAgICAgICAgICAp
OworCisgICAgICAgICAgICB2YXIgX3NwZWMgPSAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVz
dHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlY30gKi8gKGRlVXRpbC5jbG9uZShzcGVjKSk7Cisg
ICAgICAgICAgICBfc3BlYy5hcnJheXMucHVzaChhcnJheVNwZWMpOworICAgICAgICAgICAgdGhp
cy5hZGRJbnB1dFR5cGVDYXNlcyhfc3BlYywgZGVwdGggLSAxKTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBlczNmVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3RH
cm91cAorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0KKyAgICAgKi8KKyAgICBlczNmVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRl
c3RHcm91cCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxs
KHRoaXMsICd2ZXJ0ZXhfYXJyYXlzJywgJ1ZlcnRleCBhcnJheSBhbmQgYXJyYXkgdGVzdHMnKTsK
KyAgICAgICAgdGhpcy5tYWtlRXhlY3V0YWJsZSgpOworICAgIH07CisKKyAgICBlczNmVmVydGV4
QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3RHcm91cC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZXMzZlZlcnRleEFycmF5VGVz
dHMuVmVydGV4QXJyYXlUZXN0R3JvdXAucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZXMzZlZlcnRl
eEFycmF5VGVzdHMuVmVydGV4QXJyYXlUZXN0R3JvdXA7CisKKyAgICAvKioKKyAgICAgKiBpbml0
CisgICAgICovCisgICAgZXMzZlZlcnRleEFycmF5VGVzdHMuVmVydGV4QXJyYXlUZXN0R3JvdXAu
cHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcg
ZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlTdHJpZGVUZXN0cygpKTsKKyAg
ICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRleEFycmF5VGVzdHMuU2luZ2xlVmVydGV4
QXJyYXlOb3JtYWxpemVUZXN0cygpKTsKKworICAgICAgICAvLyBUZXN0IG91dHB1dCB0eXBlcyB3
aXRoIGRpZmZlcmVudCBpbnB1dCB0eXBlcywgY29tcG9uZW50IGNvdW50cyBhbmQgc3RvcmFnZSwg
VXNhZ2U/LCBQcmVjaXNpb24/LCBmbG9hdD8KKyAgICAgICAgdmFyIGlucHV0VHlwZXMgPSBbCisg
ICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FULAor
ICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5TSE9SVCwK
KyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuQllURSwK
KyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdO
RURfU0hPUlQsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRU
eXBlLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5JbnB1dFR5cGUuSU5ULAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LklucHV0VHlwZS5IQUxGLAorICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCwKKyAgICAgICAgICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTAKKyAg
ICAgICAgXTsKKyAgICAgICAgZm9yICh2YXIgaW5wdXRUeXBlTmR4ID0gMDsgaW5wdXRUeXBlTmR4
IDwgaW5wdXRUeXBlcy5sZW5ndGg7IGlucHV0VHlwZU5keCsrKSB7CisgICAgICAgICAgICB0aGlz
LmFkZENoaWxkKG5ldyBlczNmVmVydGV4QXJyYXlUZXN0cy5TaW5nbGVWZXJ0ZXhBcnJheU91dHB1
dFR5cGVHcm91cChpbnB1dFR5cGVzW2lucHV0VHlwZU5keF0pKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlPn0g
Ki8gdmFyIHVzYWdlcyA9IFsKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5Vc2FnZS5TVEFUSUNfRFJBVywKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5Vc2FnZS5TVFJFQU1fRFJBVywKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5Vc2FnZS5EWU5BTUlDX0RSQVcsCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuVXNhZ2UuU1RBVElDX0NPUFksCisgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuVXNhZ2UuU1RSRUFNX0NPUFksCisgICAgICAgICAgICBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuVXNhZ2UuRFlOQU1JQ19DT1BZLAorICAgICAgICAgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLlNUQVRJQ19SRUFELAorICAgICAgICAgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLlNUUkVBTV9SRUFELAorICAgICAgICAgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLkRZTkFNSUNfUkVBRAorICAgICAgICBd
OworICAgICAgICBmb3IgKHZhciB1c2FnZU5keCA9IDA7IHVzYWdlTmR4IDwgdXNhZ2VzLmxlbmd0
aDsgdXNhZ2VOZHgrKykgeworICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRl
eEFycmF5VGVzdHMuU2luZ2xlVmVydGV4QXJyYXlVc2FnZUdyb3VwKHVzYWdlc1t1c2FnZU5keF0p
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYWRkQ2hpbGQobmV3IGVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLlNpbmdsZVZlcnRleEFycmF5T2Zmc2V0VGVzdHMoKSk7CisgICAgICAgIHRoaXMuYWRk
Q2hpbGQobmV3IGVzM2ZWZXJ0ZXhBcnJheVRlc3RzLlNpbmdsZVZlcnRleEFycmF5Rmlyc3RUZXN0
cygpKTsKKworICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmVmVydGV4QXJyYXlUZXN0cy5N
dWx0aVZlcnRleEFycmF5Q291bnRUZXN0cygpKTsKKyAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcg
ZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVN0b3JhZ2VUZXN0cygpKTsKKyAg
ICAgICAgdGhpcy5hZGRDaGlsZChuZXcgZXMzZlZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhB
cnJheVN0cmlkZVRlc3RzKCkpOworICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBlczNmVmVydGV4
QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5T3V0cHV0VGVzdHMoKSk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIENyZWF0ZSBhbmQgZXhlY3V0ZSB0aGUgdGVzdCBjYXNlcworICAgICAqIEBw
YXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gY29udGV4dAorICAgICAqLworICAgIGVzM2ZW
ZXJ0ZXhBcnJheVRlc3RzLnJ1biA9IGZ1bmN0aW9uKGNvbnRleHQsIHJhbmdlKSB7CisgICAgICAg
IGdsID0gY29udGV4dDsKKyAgICAgICAgLy9TZXQgdXAgcm9vdCBUZXN0CisgICAgICAgIHZhciBz
dGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKworICAgICAgICB2YXIgdGVzdCA9IG5ldyBlczNm
VmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3RHcm91cCgpOworICAgICAgICB2YXIgdGVz
dE5hbWUgPSB0ZXN0LmZ1bGxOYW1lKCk7CisgICAgICAgIHZhciB0ZXN0RGVzY3JpcHRpb24gPSB0
ZXN0LmdldERlc2NyaXB0aW9uKCk7CisgICAgICAgIHN0YXRlLnRlc3RDYXNlcyA9IHRlc3Q7Cisg
ICAgICAgIHN0YXRlLnRlc3ROYW1lID0gdGVzdE5hbWU7CisKKyAgICAgICAgLy9TZXQgdXAgbmFt
ZSBhbmQgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZXN0IHNlcmllcy4KKyAgICAgICAgc2V0Q3VycmVu
dFRlc3ROYW1lKHRlc3ROYW1lKTsKKyAgICAgICAgZGVzY3JpcHRpb24odGVzdERlc2NyaXB0aW9u
KTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHJhbmdlKQorICAgICAgICAgICAg
ICAgIHN0YXRlLnNldFJhbmdlKHJhbmdlKTsKKyAgICAgICAgICAgIC8vUnVuIHRlc3QgY2FzZXMK
KyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB9IGNhdGNo
IChlcnIpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZXMzZlZl
cnRleEFycmF5VGVzdHMucnVuIHRlc3RzJywgZmFsc2UpOworICAgICAgICAgICAgdGN1VGVzdENh
c2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1
ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MDg2MzYwMjgxNjdkZTk5MjdmZTIyNDUyOTdkYmYxODI5
MTBkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIuaHRtbApA
QCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0V2l0aFdyYXBwZXJUaGF0
VGhyb3dzT25HTEVycm9yKCdjYW52YXMnLCBudWxsLCAyKTsKKworCisgICAgdHJ5IHsKKyAgICAg
ICAgZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wpOworICAg
IH0KKyAgICBjYXRjaChlcnIpCisgICAgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShl
cnIpOworICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvY29sb3JidWZmZXIvYmxlbmQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1
ZmZlci9ibGVuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjZjZjBjYjdlNTg5MjAyOTk5OGIwMzBiYjE0
YzIyNzY4MDI2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIv
YmxlbmQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGZib2NvbG9yYnVmZmVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJP
IENvbG9yIEJ1ZmZlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9D
b2xvcmJ1ZmZlclRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOwordmFyIGV4dCA9IGdsLmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1
ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3Rz
LnJ1bihnbCwgWzI1LCAyNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvY2xlYXIuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9j
b2xvcmJ1ZmZlci9jbGVhci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MzFhZmIzNjRjYzQ5YzFmMTBiMDlm
NzU1NThmNWU4MTY2MGJmODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3Ji
dWZmZXIvY2xlYXIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIGZib2NvbG9yYnVmZmVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgRkJPIENvbG9yIEJ1ZmZlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZGYm9Db2xvcmJ1ZmZlclRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOwordmFyIGV4dCA9IGdsLmdldEV4dGVuc2lvbignRVhUX2Nv
bG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZl
clRlc3RzLnJ1bihnbCwgWzAsIDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDJkXzAwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZmJvY29sb3JidWZmZXIvdGV4MmRfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTkxOGIyZGQ3YzBm
OTBjNWJjNDc0YTllN2U1MjI4MWIyYjYxNzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2Zib2NvbG9yYnVmZmVyL3RleDJkXzAwLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRl
bnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
RmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsxLCAyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZF8wMS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDJkXzAxLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjUzZjg5ZTJhOWUzM2QwMTQwZTEyMzIzZTU0NWQyZDc4NzA5YjgwNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZF8wMS5odG1sCkBAIC0wLDAgKzEsMzIg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvY29sb3JidWZm
ZXJfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGQk8gQ29sb3IgQnVmZmVyIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7Cit2YXIgZXh0
ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZm
ZXIvdGV4MmRfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZF8wMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlOTU1Y2I4ZjAwZGMzOGY3YjhmMDQ4YzVhMGJiNjBlMGYxZDliMTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4MmRfMDIuaHRtbApA
QCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IGZib2NvbG9yYnVmZmVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJPIENvbG9yIEJ1ZmZl
ciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOwordmFyIGV4dCA9IGdsLmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLnJ1bihnbCwgWzMs
IDRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2Zib2NvbG9yYnVmZmVyL3RleDJkXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIv
dGV4MmRfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTMxMDhlODZmMWRjZTE4Y2VjMDg0M2Y1NDQ4NGYz
NzhiZTVmZWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3Rl
eDJkXzAzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZC
TyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJv
Q29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9i
dWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0
cy5ydW4oZ2wsIFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZF8wNC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zi
b2NvbG9yYnVmZmVyL3RleDJkXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdmNWIyNzgyZjk3ODdiNjIz
ZDM3NGMzODNhMDM4ZDdiMDJjYjE0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9j
b2xvcmJ1ZmZlci90ZXgyZF8wNC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvY29sb3JidWZmZXJfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBGQk8gQ29sb3IgQnVmZmVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7Cit2YXIgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9u
KCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0Nv
bG9yYnVmZmVyVGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4MmRfMDUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZF8wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkOGJk
Y2JhYWIyNDJkYjFmNzNmNjllZTA1NmUzOWEzMDdlOGE5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4MmRfMDUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib2NvbG9yYnVmZmVyX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJPIENvbG9yIEJ1ZmZlciBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwordmFyIGV4dCA9IGds
LmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLnJ1bihnbCwgWzYsIDddKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3Rl
eDJkYXJyYXlfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzAw
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWU0MmYwMDIxYzliNzlkNjM4NmM5YjQzYjZjNDY2YTcwMmJkZjlh
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5
XzAwLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBD
b2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29s
b3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZm
ZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5y
dW4oZ2wsIFsxMywgMTRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDJkYXJyYXlfMDEuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAxY2VlM2Iy
MmZlOGM0ZjZkNGM1YzgxYmM2NWViYWQzNTUyZmNmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzAxLmh0bWwKQEAgLTAsMCArMSwzMiBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBn
bC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsxNCwgMTVdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVy
L3RleDJkYXJyYXlfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5
XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY5ZGQ2MDYxY2MxNDU0YWJlNDAxMmNhZDg5ZDQ5NTUwNmM5
MDEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFy
cmF5XzAyLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZC
TyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJv
Q29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9i
dWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0
cy5ydW4oZ2wsIFsxNSwgMTZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDJkYXJyYXlfMDMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY5Yjc2
ODU3ZTY4NWJlMmJiMDIyYTVlN2RiZDBlYzU2ZjVmYzZlNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzAzLmh0bWwKQEAgLTAsMCArMSwzMiBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZl
cl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQg
PSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsxNiwgMTddKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVm
ZmVyL3RleDJkYXJyYXlfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFy
cmF5XzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJlZjViNmNmN2QxYWQwMDRlNDQxMjRlZDAyMTA1Nzkx
YTEwMDdlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgy
ZGFycmF5XzA0Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
RmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJU
ZXN0cy5ydW4oZ2wsIFsxNywgMThdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDJkYXJyYXlfMDUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2
NjhiZDYzNWZkMTZhMjZiNTM4MDhjYzI4Mzg3OTBjY2ExZmE0ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXgyZGFycmF5XzA1Lmh0bWwKQEAgLTAsMCArMSwz
MiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1
ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVp
Z2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBl
eHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsxOCwgMTldKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9y
YnVmZmVyL3RleDNkXzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4M2RfMDAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OGMwNGRmMGU3YmQyZTUyYjY5MmMzYjJlZGQ0ZThmNTRjODVlYzYy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzAwLmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBC
dWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZm
ZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxv
YXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2ws
IFsxOSwgMjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3Ji
dWZmZXIvdGV4M2RfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGIwMWMxNjllZDBlYzZlOGVjMDZjZjRk
MWVhNzgzZDdmZTk5YWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVm
ZmVyL3RleDNkXzAxLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9j
b2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZm
ZXJUZXN0cy5ydW4oZ2wsIFsyMCwgMjFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzAyLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZmJvY29sb3JidWZmZXIvdGV4M2RfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2E3ZTI5MWU5
Y2JlMmQyNzUwN2VjNTU2NGFjZGViOGU4YzdhZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzAyLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRF
eHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsyMSwgMjJdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNk
XzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4M2RfMDMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iN2Y3ZjE4ZDhmNWEyNzg0M2ZjMTdlYmUzMzAyNzBiMzM4Y2M4ZWY1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzAzLmh0bWwKQEAgLTAsMCAr
MSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xv
cmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3Zh
ciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFsyMiwgMjNdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2Nv
bG9yYnVmZmVyL3RleDNkXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4M2Rf
MDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMGE0NDczODU3MzZlMjE3MjZkZmJmZTg5ZWRiMjA0YjhlYTk0
YTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzA0
Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xv
ciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3Ji
dWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJf
ZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4o
Z2wsIFsyMywgMjRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleDNkXzA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29s
b3JidWZmZXIvdGV4M2RfMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWNlNDZjYzMzMjJkOGQ5NmE2MWJi
YTE2ZGZjMGNlMjU5NWQ3YzgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9y
YnVmZmVyL3RleDNkXzA1Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZlcl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ0VY
VF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3Ji
dWZmZXJUZXN0cy5ydW4oZ2wsIFsyNCwgMjVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9yYnVmZmVyL3RleGN1YmVfMDAuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXhjdWJlXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZm
MDRiZWUyZDc3YWExZjMyZDk1MTAwZGUxNzRjMTdhYzg0MGVmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXhjdWJlXzAwLmh0bWwKQEAgLTAsMCArMSwzMiBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9jb2xvcmJ1ZmZl
cl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBDb2xvciBCdWZmZXIgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKK3ZhciBleHQg
PSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5ydW4oZ2wsIFs3LCA4XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZl
ci90ZXhjdWJlXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8wMS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4NTEyZWIwYWNhNzA3NTU1ZjdiNTFmZDk0ZjJlN2Y1NjI5Y2FlYzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8wMS5o
dG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gZmJvY29sb3JidWZmZXJfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGQk8gQ29sb3Ig
QnVmZmVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVm
ZmVyVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7Cit2YXIgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zs
b2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMucnVuKGds
LCBbOCwgOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9y
YnVmZmVyL3RleGN1YmVfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2YzZmE3NTBlNmFiNWY4MTNhMTAy
ZmRlMGI2ZTBmZjE2ZTkwNjhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2NvbG9y
YnVmZmVyL3RleGN1YmVfMDIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib2NvbG9yYnVmZmVyX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgRkJPIENvbG9yIEJ1ZmZlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwordmFyIGV4dCA9IGdsLmdldEV4dGVuc2lvbign
RVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9Db2xv
cmJ1ZmZlclRlc3RzLnJ1bihnbCwgWzksIDEwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXhjdWJlXzAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8wMy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJl
NTU4MDA4NTk0Y2YyZTU4N2I3NzcwZjliOGI2ZGFkZDhjMTg5MWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8wMy5odG1sCkBAIC0wLDAgKzEsMzIg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvY29sb3JidWZm
ZXJfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGQk8gQ29sb3IgQnVmZmVyIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7Cit2YXIgZXh0
ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMucnVuKGdsLCBbMTAsIDExXSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb2xvcmJ1
ZmZlci90ZXhjdWJlXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8w
NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2MDJhY2FmMjU1NzkyNTRjYjdhZWI2Yjk4N2YyZTY4OGFkM2Fl
ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvY29sb3JidWZmZXIvdGV4Y3ViZV8w
NC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gZmJvY29sb3JidWZmZXJfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGQk8gQ29s
b3IgQnVmZmVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9y
YnVmZmVyVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7Cit2YXIgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVy
X2Zsb2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMucnVu
KGdsLCBbMTEsIDEyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9jb2xvcmJ1ZmZlci90ZXhjdWJlXzA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJv
Y29sb3JidWZmZXIvdGV4Y3ViZV8wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3N2ExYmQyNDgyZmYwNTFh
YWYyYzA5Y2I1MWM2NDNmNTQ2OWM1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJv
Y29sb3JidWZmZXIvdGV4Y3ViZV8wNS5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvY29sb3JidWZmZXJfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBGQk8gQ29sb3IgQnVmZmVyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7Cit2YXIgZXh0ID0gZ2wuZ2V0RXh0ZW5z
aW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZi
b0NvbG9yYnVmZmVyVGVzdHMucnVuKGdsLCBbMTIsIDEzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9jb21wbGV0ZW5lc3MuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mYm9jb21wbGV0ZW5lc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGRjMDU1NTQzYzkxMjAz
NjUyOTVlYzE3MzQxN2E4Yzg1MzJkODU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zi
b2NvbXBsZXRlbmVzcy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJPIENvbXBsZXRlbmVzcyBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvQ29tcGxl
dGVuZXNzVGVzdHMnKTs8L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdtb2R1bGVzLnNo
YXJlZC5nbHNGYm9VdGlsJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC9jYW52YXM+Cis8c2NyaXB0PgorCisg
ICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCisgICAgdHJ5IHsKKyAgICAgICAgZnVuY3Rpb25h
bC5nbGVzMy5lczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuaW5pdEdsRGVwZW5kZW50cyhnbCk7Cisg
ICAgICAgIGZ1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLnJ1bihnbCk7
CisgICAgfQorICAgIGNhdGNoKGVycikgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShl
cnIpOworICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvZGVwdGhidWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9kZXB0aGJ1ZmZlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU3NGI4Mjg1YzBjNWU4Njg1YzQyNWQ1ZWUxNDcwOTE1YWYzYWM2OTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvZGVwdGhidWZmZXIuaHRtbApAQCAtMCww
ICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBE
ZXB0aGJ1ZmZlciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHRXaXRoV3JhcHBlclRoYXRUaHJvd3NP
bkdMRXJyb3IoJ2NhbnZhcycsIG51bGwsIDIpOworCisKKyAgICB0cnkgeworICAgICAgICBmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLnJ1bihnbCk7CisgICAgfQorICAg
IGNhdGNoKGVycikKKyAgICB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7Cisg
ICAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9mYm9pbnZhbGlkYXRlL2RlZmF1bHQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9pbnZhbGlkYXRlL2Rl
ZmF1bHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA3YTVmNmRiMWMwMWIyYzJhNmJhZGVlYTk1Mzg4N2Fh
NjIzYzAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2ludmFsaWRhdGUvZGVmYXVs
dC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gZmJvaW52YWxpZGF0ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBJbnZh
bGlkYXRlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0ludmFsaWRh
dGVUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7
c3RlbmNpbDogdHJ1ZX0sIDIpOwordmFyIGV4dGVudGlvbiA9IGdsLmdldEV4dGVuc2lvbignRVhU
X2NvbG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9JbnZhbGlk
YXRlVGVzdHMucnVuKGdsLCBbMCwgMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS9mb3JtYXRfMDAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mYm9pbnZhbGlkYXRlL2Zvcm1hdF8wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwYTRmYWQ2M2Qw
ZTJlZjUwZDQ3YmZmZTljYzRiZjBlYmMwNmMzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZmJvaW52YWxpZGF0ZS9mb3JtYXRfMDAuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib2ludmFsaWRhdGVfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGQk8gSW52YWxpZGF0ZSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywge3N0ZW5jaWw6IHRydWV9LCAyKTsKK3ZhciBleHRlbnRp
b24gPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmRmJvSW52YWxpZGF0ZVRlc3RzLnJ1bihnbCwgWzMsIDRdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2ludmFsaWRh
dGUvZm9ybWF0XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS9mb3JtYXRfMDEuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYTEzMGZhYWRiMDZjM2ZjOTAyYzFjYmNmOTRjODc0YjBkMzQxMTgwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2ludmFsaWRhdGUvZm9ybWF0XzAxLmh0bWwK
QEAgLTAsMCArMSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBmYm9pbnZhbGlkYXRlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJPIEludmFsaWRhdGUg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvSW52YWxpZGF0ZVRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MTI4IiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtzdGVuY2ls
OiB0cnVlfSwgMik7Cit2YXIgZXh0ZW50aW9uID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3Jf
YnVmZmVyX2Zsb2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0ludmFsaWRhdGVUZXN0
cy5ydW4oZ2wsIFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9mYm9pbnZhbGlkYXRlL2Zvcm1hdF8wMi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zi
b2ludmFsaWRhdGUvZm9ybWF0XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FlY2ZiZjFhNWJmZGI0ODFl
OTJkN2Y1NGUwM2FlOTQxZWYzOGI4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9p
bnZhbGlkYXRlL2Zvcm1hdF8wMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvaW52YWxpZGF0ZV90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIEZCTyBJbnZhbGlkYXRlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkZib0ludmFsaWRhdGVUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCB7c3RlbmNpbDogdHJ1ZX0sIDIpOwordmFyIGV4dGVudGlvbiA9IGds
LmdldEV4dGVuc2lvbignRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS9zdWIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9mYm9pbnZhbGlkYXRlL3N1Yi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODgz
YzBjNDQzYTYzNzAxM2U2MWE4ZjBhZDg3ZjBhM2NmYzA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvaW52YWxpZGF0ZS9zdWIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib2ludmFsaWRhdGVfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGQk8gSW52YWxpZGF0ZSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGYm9JbnZhbGlkYXRlVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywge3N0ZW5jaWw6IHRydWV9LCAyKTsKK3ZhciBleHRlbnRp
b24gPSBnbC5nZXRFeHRlbnNpb24oJ0VYVF9jb2xvcl9idWZmZXJfZmxvYXQnKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmRmJvSW52YWxpZGF0ZVRlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2ludmFsaWRh
dGUvdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS90YXJnZXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMzZjMzM1ZDRmYTk1N2Y5ZTUyZWNhOWZjNTg4N2Y4ZDFjZWE5YzkyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib2ludmFsaWRhdGUvdGFyZ2V0Lmh0bWwKQEAgLTAsMCAr
MSwzMiBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9pbnZh
bGlkYXRlX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRkJPIEludmFsaWRhdGUgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvSW52YWxpZGF0ZVRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTI4IiBoZWln
aHQ9IjEyOCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtzdGVuY2lsOiB0cnVlfSwg
Mik7Cit2YXIgZXh0ZW50aW9uID0gZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfY29sb3JfYnVmZmVyX2Zs
b2F0Jyk7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0ludmFsaWRhdGVUZXN0cy5ydW4oZ2ws
IFs2LCA3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mYm9pbnZhbGlkYXRlL3dob2xlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS93
aG9sZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3OTJmYTc2NTJmZmQ4YTYxMzUzNDM0YWU0NWE1ZGU0Njlk
YmQxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvaW52YWxpZGF0ZS93aG9sZS5o
dG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gZmJvaW52YWxpZGF0ZV90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZCTyBJbnZhbGlk
YXRlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib0ludmFsaWRhdGVU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjEyOCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7c3Rl
bmNpbDogdHJ1ZX0sIDIpOwordmFyIGV4dGVudGlvbiA9IGdsLmdldEV4dGVuc2lvbignRVhUX2Nv
bG9yX2J1ZmZlcl9mbG9hdCcpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9JbnZhbGlkYXRl
VGVzdHMucnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZmJvbXVsdGlzYW1wbGUuMl9zYW1wbGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZmJvbXVsdGlzYW1wbGUuMl9zYW1wbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRlODg1NzQ5YTEy
YjA0YjhmYzdkZjQxNTQ1ZjdiNGMwZjIzMDZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9mYm9tdWx0aXNhbXBsZS4yX3NhbXBsZXMuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZibyBNdWx0aXNhbXBsZSBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTE5IiBoZWlnaHQ9IjEzMSI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLnJ1bihnbCwgWzAsIDFdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib211bHRpc2FtcGxlLjRfc2Ft
cGxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib211bHRpc2FtcGxlLjRfc2FtcGxlcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlOGQ3NWM2OTFiZWI5M2ZiN2NiYWZkYWEwN2FhODZmZDI3ZDE3YTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvbXVsdGlzYW1wbGUuNF9zYW1wbGVzLmh0bWwKQEAgLTAs
MCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGYm8g
TXVsdGlzYW1wbGUgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvTXVsdGlzYW1wbGVUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjEx
OSIgaGVpZ2h0PSIxMzEiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvTXVsdGlzYW1wbGVUZXN0cy5ydW4oZ2wsIFsxLCAy
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9m
Ym9tdWx0aXNhbXBsZS44X3NhbXBsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9tdWx0aXNhbXBsZS44
X3NhbXBsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWZiOWU3MGYyMWE5NTJkYjdkOWM1YTMxNjA4Y2Uz
ZTdiZjZkYTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib211bHRpc2FtcGxlLjhf
c2FtcGxlcy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgRmJvIE11bHRpc2FtcGxlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZi
b011bHRpc2FtcGxlVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIxMTkiIGhlaWdodD0iMTMxIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib011bHRpc2FtcGxl
VGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAwLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxOGVl
MGU2ZWYyNDkxYWJkNmEyODI2ZjJkNmQ2ODc4NmRhZmQwNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3JlbmRlcl90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5k
ZXJUZXN0LnJ1bihnbCwgWzEwLCAxMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAxLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZi
OTNkNDg2M2RhZGM5OGMyYzNlOGY0ZDJhZDFiOTNmN2ViMjIzMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDEuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3JlbmRlcl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9S
ZW5kZXJUZXN0LnJ1bihnbCwgWzExLCAxMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAyLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDgwNzZlZDc5YjM0NTAzZWVlMDVjNTE4MGFiOWVjNDBjNzBjNjQ3NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDIuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3JlbmRl
cl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZG
Ym9SZW5kZXJUZXN0LnJ1bihnbCwgWzEyLCAxM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzAzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2M3MmYyYmNhYjM4OTBhNWQwNDg5MzUzM2RjNjM5Yjg2ZDFjN2E1NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDMuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3Jl
bmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzA0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzA0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTAwN2U4Yzc0OTRhM2NmZDM1ZmFhYzc3MjY5ZWRlNmFkNzk2MWQ0OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDQuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZi
b3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzE0LCAxNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9y
XzA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzA1Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWVjOTdhNTkxMmJkNjBlYTU3OWY1MTk3ZmVlM2NkOTVjOWZlNTFkMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDUuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzE1LCAxNl0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2Nv
bG9yXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRlX2NvbG9yXzA2Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTFhYjhkZWM5N2QzNmJhN2MyYzg4MDkwYTQ1ZDA2YzY0MDdjNmU2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfY29sb3JfMDYuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRl
ciBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEy
OCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzE2LCAxN10pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRl
X2RlcHRoX3N0ZW5jaWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVjcmVhdGVfZGVwdGhf
c3RlbmNpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNGNhNzRlNTRhNjEyYzJmZDY0MmYzNjk2ZjNkMTMw
MTliYzIyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3JlY3JlYXRl
X2RlcHRoX3N0ZW5jaWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJU
ZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzE3LCAx
OF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZmJvcmVuZGVyL3Jlc2l6ZV8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9yZXNpemVfMDAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZDliYWIyM2YyMWVmOWU0MWVjNGM0MDU5M2FhOTQzZDEwNDc0ZDJh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9yZXNpemVfMDAuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzYsIDddKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9yZXNpemVfMDEuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvcmVzaXplXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYjA5
NjUzYzk5Nzk1MWQ5MmI1M2Q1ZTY5ZjY3M2MwMjNhMDk3MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mYm9yZW5kZXIvcmVzaXplXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9yZW5kZXJfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBSZW5kZXIgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmRmJvUmVuZGVyVGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvUmVuZGVyVGVzdC5y
dW4oZ2wsIFs3LCA4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9mYm9yZW5kZXIvcmVzaXplXzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVy
L3Jlc2l6ZV8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZjRjMTM2MTYyNWI2ZmJmMDUyYzMxYmE2N2M2
OGI1OTcyY2YwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3Jlc2l6
ZV8wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gZmJvcmVuZGVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZm
ZXIgUmVuZGVyIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1JlbmRlclRlc3QnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTI4Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZib1JlbmRlclRlc3QucnVuKGdsLCBbOCwgOV0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3Jl
c2l6ZV8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9yZXNpemVfMDMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YTZlMmM4MWQ3MWFhMjE1M2NkZWMyMDJkOGUxMjRjYzZmODJiMTYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9yZXNpemVfMDMuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZib3JlbmRlcl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRlciBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9S
ZW5kZXJUZXN0LnJ1bihnbCwgWzksIDEwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvc2hhcmVkX2NvbG9yYnVmZmVyXzAwLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9jb2xvcmJ1ZmZlcl8wMC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU0MDA0ZjJkN2M1Yzg2MTkxZmM1ZWYyMTM5ZTZmYWUyZGQ0Yjg0NGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9jb2xvcmJ1ZmZlcl8wMC5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gZmJvcmVuZGVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgUmVuZGVy
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1JlbmRlclRlc3QnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTI4
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkZib1JlbmRlclRlc3QucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9jb2xv
cmJ1ZmZlcl8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9zaGFyZWRfY29sb3JidWZmZXJf
MDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iM2FjNzllZmJjMjZlZGNlNTJmNGNjNjMzMjY3NDVmYzQyMDE2
OGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9zaGFyZWRfY29sb3Ji
dWZmZXJfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1l
YnVmZmVyIFJlbmRlciBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzMsIDRdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRl
ci9zaGFyZWRfY29sb3JidWZmZXJfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvc2hhcmVk
X2NvbG9yYnVmZmVyXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY4NTAyOWIxZjk1YjNkYzhhM2VlYTM0
YWJlOTE2ZDIzNzljOGQ4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIv
c2hhcmVkX2NvbG9yYnVmZmVyXzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9yZW5kZXJfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBGcmFtZWJ1ZmZlciBSZW5kZXIgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJv
UmVuZGVyVGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvUmVuZGVyVGVzdC5ydW4oZ2ws
IFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mYm9yZW5kZXIvc2hhcmVkX2NvbG9yYnVmZmVyX2NsZWFyLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZmJvcmVuZGVyL3NoYXJlZF9jb2xvcmJ1ZmZlcl9jbGVhci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YTQ2
NzQ0Y2E2NzAwY2Y4MmE3YTZiNzg1MGI1NDY2ZTllZDAxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9jb2xvcmJ1ZmZlcl9jbGVhci5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZmJvcmVu
ZGVyX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgUmVuZGVyIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZib1JlbmRlclRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTI4Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZib1JlbmRlclRlc3QucnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9kZXB0aF9zdGVuY2ls
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3NoYXJlZF9kZXB0aF9zdGVuY2lsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmY1YzYyNjQzMTMwOTQyOTc1MTE5NzEwMGI4N2ExZjc1NjkyMTRmMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9yZW5kZXIvc2hhcmVkX2RlcHRoX3N0ZW5jaWwuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIGZib3JlbmRlcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYW1lYnVmZmVyIFJlbmRl
ciBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0Jyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEy
OCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGYm9SZW5kZXJUZXN0LnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9zdGVuY2lsX2Ns
ZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvcmVuZGVyL3N0ZW5jaWxfY2xlYXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41OWMwODE5ZmU2OGUzZjVhMTU1YjlmMjg1YzdiNjg1NTgyZGI4MWQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib3JlbmRlci9zdGVuY2lsX2NsZWFyLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmYm9yZW5k
ZXJfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBSZW5kZXIgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmRmJvUmVuZGVyVGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMjgiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
RmJvUmVuZGVyVGVzdC5ydW4oZ2wsIFswLCAxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9zdGF0ZXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZmJvc3RhdGVxdWVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1Y2MzNmI2YTE3OGExNDE0ZWY4Mzc1MTBm
ODhkYjllMDg4YzQ1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RhdGVxdWVy
eS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgRmJvIFN0YXRlIFF1ZXJ5IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZib1N0YXRl
UXVlcnlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvU3RhdGVRdWVyeVRlc3RzLnJ1
bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9mYm9zdGVuY2lsYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RlbmNpbGJ1ZmZlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI1MWFjYzU3ZGQ2MTllZWE4Y2M5ZjgxODhlMjZlMWYzZmI3MWYyYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RlbmNpbGJ1ZmZlci5odG1sCkBAIC0wLDAg
KzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRmJvIFN0
ZW5jaWxidWZmZXIgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMucnVuKGdsKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zsb2F0
c3RhdGVxdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zsb2F0c3RhdGVxdWVyeS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmZDMyNjkzOWU2M2IzOTI1NGFjNjJmZGY2NDA4OWNjZjFmYTEzMWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZmxvYXRzdGF0ZXF1ZXJ5Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGbG9hdCBTdGF0ZSBRdWVy
eSBUZXN0cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMucnVuKGdsKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYWdkZXB0aC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ZyYWdkZXB0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxZWU4NzRhZTNkMWE2
YmM1YjY1ODM4MzA3MWY0OWMwOTcyOGI3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhZ2RlcHRoLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFnIERlcHRoIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdE
ZXB0aFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFnRGVwdGhUZXN0cy5ydW4oZ2wp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJh
Z21lbnRvdXRwdXQvYXJyYXkuZml4ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFnbWVudG91dHB1dC9h
cnJheS5maXhlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNGMxN2FlYzZlOWUyYzI5NTQ3YzczYTY5ZDZk
YTY4ZWMwODk5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQv
YXJyYXkuZml4ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0
cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucnVu
KGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYXJyYXkuZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFn
bWVudG91dHB1dC9hcnJheS5mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3NGZlNzhlZWNhZWVlZTQ4
ODk0OTQwOWQ3ODZkN2I4MDc1ZjhkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJh
Z21lbnRvdXRwdXQvYXJyYXkuZmxvYXQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0
cHV0VGVzdHMucnVuKGdsLCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYXJyYXkuaW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZnJhZ21lbnRvdXRwdXQvYXJyYXkuaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwMGU4MDRi
NjZkMGZjNjM2Njg1YTI4Mzc3ODNkYmVmZWY0NDBkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9mcmFnbWVudG91dHB1dC9hcnJheS5pbnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdt
ZW50T3V0cHV0VGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYXJyYXkudWludC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYWdtZW50b3V0cHV0L2FycmF5LnVpbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YjNlNWQ5NmE2N2I0NjE5NzBmMTkxNTk5MGY1OTY4Nzc4NzA1ODM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYWdtZW50b3V0cHV0L2FycmF5LnVpbnQuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0
cHV0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucnVuKGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYmFzaWMu
Zml4ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFnbWVudG91dHB1dC9iYXNpYy5maXhlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU1OGVkYTY5Yzg1YzFhNTBmZTdmMjJhNDc3YWUxZjliZDkyNTIyMjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYmFzaWMuZml4ZWQuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucnVuKGdsLCBbMSwgMl0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRv
dXRwdXQvYmFzaWMuZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFnbWVudG91dHB1dC9iYXNpYy5m
bG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZmU5YTJmZmZkNDUwOTA5NmQ2MmQ1ZjlkNGIxNGU4ZjAy
YWU2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYmFzaWMu
ZmxvYXQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJh
Z21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucnVuKGdsLCBb
MCwgMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhZ21lbnRvdXRwdXQvYmFzaWMuaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRw
dXQvYmFzaWMuaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcxZDhkMDE1MWVmYTY4YzdlOGQwNDJiZGJj
ZTNlMzliMTljZWU4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFnbWVudG91dHB1
dC9iYXNpYy5pbnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0
cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMucnVu
KGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvYmFzaWMudWludC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYWdt
ZW50b3V0cHV0L2Jhc2ljLnVpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTVhYTkwZDllMGRkOGU2ODBk
NjY3YTA1ZGZkMzY1MmNiODdhNDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYWdt
ZW50b3V0cHV0L2Jhc2ljLnVpbnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50T3V0cHV0
VGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvcmFuZG9tXzAwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhZ21lbnRvdXRwdXQvcmFuZG9tXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU5MmUyZjExNDBh
OTg1NTRiY2ZjYjFiNzU2MGMzN2M3M2YzZTY5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9mcmFnbWVudG91dHB1dC9yYW5kb21fMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYWdtZW50
T3V0cHV0VGVzdHMucnVuKGdsLCBbOCwgOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvcmFuZG9tXzAxLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvcmFuZG9tXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU2MjY4
OWNlMGQ1YmE1NTZmMzFkOWQyMzhmMWU4ZTMzYTQ0Yjc5NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9mcmFnbWVudG91dHB1dC9yYW5kb21fMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGZyYWdtZW50b3V0cHV0X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhZ21lbnQgT3V0cHV0IFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMucnVuKGdsLCBbOSwgMTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYWdtZW50b3V0cHV0L3JhbmRvbV8wMi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ZyYWdtZW50b3V0cHV0L3JhbmRvbV8wMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNiY2Y5YzU0NDJjODQyYzQ5ZmY4OTZhMTVlMWUxMjU1YzU1MGI3YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZnJhZ21lbnRvdXRwdXQvcmFuZG9tXzAyLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFnbWVudG91
dHB1dF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZyYWdtZW50IE91dHB1dCBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGcmFnbWVudE91dHB1dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFnbWVudE91dHB1dFRlc3RzLnJ1bihnbCwgWzEwLCAxMV0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2Nv
bnZlcnNpb25fMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQvY29udmVyc2lvbl8w
MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxMjRhNjU2OTg3YWM5MDJjMGRlYWZkZjQyZjY3NWNmM2M2MmZj
NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNp
b25fMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGZyYW1lYnVmZmVyYmxpdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZy
YW1lYnVmZmVyIEJsaXQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJh
bWVidWZmZXJCbGl0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzLnJ1bihnbCwgWzcsIDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzAxLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMDEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MDM4OTcyNWZiNDE4ZWIxYTRkYjkxNGQ2ZTdiZGZiMzU4NjZkZTVhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzAxLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1
ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs4LCA5
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9m
cmFtZWJ1ZmZlcmJsaXQvY29udmVyc2lvbl8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVy
YmxpdC9jb252ZXJzaW9uXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViZmQwNGQwNjkxNGNhMjc2MjE0
ZWQxNTYyZWMyM2JmZmU1MmVhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1
ZmZlcmJsaXQvY29udmVyc2lvbl8wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZnJhbWVidWZmZXJibGl0X3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgQmxpdCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmRnJhbWVidWZmZXJCbGl0VGVzdHMucnVuKGdsLCBbOSwgMTBdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252
ZXJzaW9uXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMDMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNTM5ODY1YTlhMDQ1YmQzYmQwNzJmOGU5ZTM1NGRlMTIxZjkyYmRi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9u
XzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFt
ZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5ydW4oZ2wsIFsxMCwgMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMDQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OThmOTI2OGQ2YWM1N2IzZjllMDcxZDFhOTBlNGIxNzhjYmEyMGQxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA0Lmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1
ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsxMSwg
MTJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZm
ZXJibGl0L2NvbnZlcnNpb25fMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDQ1YzRhODcwMDY2NDVkY2Rh
ZTE5NTRiYmFkNzdlODg5ODVkNGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1l
YnVmZmVyYmxpdC9jb252ZXJzaW9uXzA1Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsxMiwgMTNdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9j
b252ZXJzaW9uXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25f
MDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODUxYTczZDVjNDYyZTJjYjQwNjcyNDdkMjA0N2FmNmVmYTY4
MDFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJz
aW9uXzA2Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBG
cmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZy
YW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJs
aXRUZXN0cy5ydW4oZ2wsIFsxMywgMTRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMDcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MDBjMmMxNTY3YTA5MGZjNWQ5ZjRlZjA1MDJlOGY3ODBiNGUyMGZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA3Lmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFt
ZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsx
NCwgMTVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVi
dWZmZXJibGl0L2NvbnZlcnNpb25fMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWVhMmNjZTRmZDdiOGZj
MDNmZDY3NzY5NzVlZmQyMTg3OTQyYTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zy
YW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzA4Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsxNSwgMTZdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxp
dC9jb252ZXJzaW9uXzA5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNp
b25fMDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjBkNGJlYTY3NzczZWE2OGY4ZWU1OWMwYWExZTkwNTEz
MmYxZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252
ZXJzaW9uXzA5Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZl
ckJsaXRUZXN0cy5ydW4oZ2wsIFsxNiwgMTddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzEwLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTAuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZjE1ZjA4ZjFlMzI0NmFhYjYwNmQ5NmQ1ODAxMmQ5OWJlZGNhZTc1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzEwLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBm
cmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2ws
IFsxNywgMThdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzExLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJh
bWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YThhMjc2MGMyZGNk
YWI4NzY3Y2MwOTk2M2ExMDRjN2YyZDE4NWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzExLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsxOCwgMTldKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVy
YmxpdC9jb252ZXJzaW9uXzEyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZl
cnNpb25fMTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDk1NGZiMTg3NTg4NWI1YzdmYzI3ZDNlYzAyNTlm
MTYwOTExNThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9j
b252ZXJzaW9uXzEyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1
ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsxOSwgMjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzEz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNjhkNzc4ZDg0NzQyM2YzOGRkNTNlYzU5ZWYwMTliNjA4YWNjMGI4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzEzLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBC
bGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4o
Z2wsIFsyMCwgMjFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmJjNGIxYzY4
ZTMwOThmNmQyYjAwNjc5OGEzOTAyNzJlMjNmOGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyMSwgMjJdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVm
ZmVyYmxpdC9jb252ZXJzaW9uXzE1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2Nv
bnZlcnNpb25fMTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjMxZGI1YTJhNTE0ODAyNDVjMjc1MmY2ODA0
YzVjZjI1MmUyYTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxp
dC9jb252ZXJzaW9uXzE1Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFt
ZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyMiwgMjNdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9u
XzE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMWRlMmZiMzdlMzY0NTZiZWI4NDk0ZTc5N2E4ZjhmZjI2OWE2OGM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE2Lmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZl
ciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5y
dW4oZ2wsIFsyMywgMjRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTkzOTk2
OGY2ZmYyM2Y1N2I5NTljYjc1YzdjNmViZjI0MWEyMjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE3Lmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJs
aXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyNCwgMjVdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1l
YnVmZmVyYmxpdC9jb252ZXJzaW9uXzE4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0
L2NvbnZlcnNpb25fMTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDNiMWY5ZDIyZTZjNjMwYmE0ZTViNTFm
ZDcxMmViYjZjZWUwMTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVy
YmxpdC9jb252ZXJzaW9uXzE4Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZG
cmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyNSwgMjZdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJz
aW9uXzE5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMTkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Y2E3NGU0YWUxNjE4NDFiMGEyYWJiMmNlZmYzYWI1Y2NkNDk4ODkwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzE5
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1
ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVm
ZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0
cy5ydW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzIwLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMjAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Rm
ZTExMzdjOWMxNTkzYzA2ODVmY2U2NGM0MzYzNzI4YTIyMGNhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzIwLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZl
cmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyNywgMjhd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zy
YW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzIxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJi
bGl0L2NvbnZlcnNpb25fMjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTdiY2JiY2NlOWNkYzRkYWE1MWI0
NTVkMmE5ZjQyOWM1OWUzNTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVm
ZmVyYmxpdC9jb252ZXJzaW9uXzIxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsyOCwgMjldKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252
ZXJzaW9uXzIyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMjIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YmYyMWY5ZTNiMDg4YWU1OWI5NjFjODM4YjYxZjFjMDExNTQ1NjVj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9u
XzIyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFt
ZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5ydW4oZ2wsIFsyOSwgMzBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzIzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMjMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MjM4YmRiNDE5Y2E2NDZlMDBkZGRlMzBjZTEyMGYxMGRmZDg5Y2E4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzIzLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1
ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszMCwg
MzFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZm
ZXJibGl0L2NvbnZlcnNpb25fMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTczMTNhNjY0NzgyYjZlYjZj
Yzc3M2U0NmM4ZGUzNDgyY2UzYmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1l
YnVmZmVyYmxpdC9jb252ZXJzaW9uXzI0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszMSwgMzJdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9j
b252ZXJzaW9uXzI1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25f
MjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNTNkZDRiZTVmODAyMjM2NWJmYmY0ZTIxMmVkMDFiNWViZGM1
MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJz
aW9uXzI1Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBG
cmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZy
YW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJs
aXRUZXN0cy5ydW4oZ2wsIFszMiwgMzNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMjYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jN2Y3OWVjYTZmZGI5MGE5OTIwYTE0ZGJjNTAzNjFiYjI0YmI3Mzg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI2Lmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFt
ZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFsz
MywgMzRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI3Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVi
dWZmZXJibGl0L2NvbnZlcnNpb25fMjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGM0MTY0NWY3MGY1Njhi
MWU3ZDEyNzY4ZGJhMjlhMmQ5NTY1N2MwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zy
YW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI3Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszNCwgMzVdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxp
dC9jb252ZXJzaW9uXzI4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNp
b25fMjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjIyYmI3ZjMwMzU0MjM3OTMyZThjMjg5ZmQ3ZWVkMDcw
MTc0OGViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252
ZXJzaW9uXzI4Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZl
ckJsaXRUZXN0cy5ydW4oZ2wsIFszNSwgMzZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI5Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMjkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MWQyOTgxMGNkMDUwOTNhNWM5OTFlZjc1ZDk0NGRhOWUwM2VlYTUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzI5Lmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBm
cmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2ws
IFszNiwgMzddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMwLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJh
bWVidWZmZXJibGl0L2NvbnZlcnNpb25fMzAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWU0MWJmY2M2ZjM0
M2Y2MDc4MTIyNmVmMTJkMzM4YTJiYzkzOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszNywgMzhdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVy
YmxpdC9jb252ZXJzaW9uXzMxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZl
cnNpb25fMzEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWU5NjA5MGUzNTA1ODYyNzM2OTg2NThiYzRiYzNk
MmQ2ZjE3Yjk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9j
b252ZXJzaW9uXzMxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1
ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszOCwgMzldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMzIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZGRkNDlmY2U4YzMxY2I0OWYxNzFmZjdjZDdhZGIxZDIwNTdkOTY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMyLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBC
bGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4o
Z2wsIFszOSwgNDBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhbWVidWZmZXJibGl0L2NvbnZlcnNpb25fMzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2EzMjY0NmFl
NDViMWFlMTBhMDk1MWEyYTgwMzJlMjljNTA2ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2ZyYW1lYnVmZmVyYmxpdC9jb252ZXJzaW9uXzMzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0MCwgNDFdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVm
ZmVyYmxpdC9jb252ZXJzaW9uXzM0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2Nv
bnZlcnNpb25fMzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjJjYjdmM2NhYzcxNTQwMDdkNzU4YTQ3YTc4
ZTAzZGExNjA2M2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxp
dC9jb252ZXJzaW9uXzM0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFt
ZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0MSwgNDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2Zy
YW1lYnVmZmVyXzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2RlZmF1bHRfZnJh
bWVidWZmZXJfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDljOWJmZjViOTMxZmY1MWQ1OWRlYzFkNWMx
ZDA5NWQ4ZTJlNzAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxp
dC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0MywgNDRdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9k
ZWZhdWx0X2ZyYW1lYnVmZmVyXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2Rl
ZmF1bHRfZnJhbWVidWZmZXJfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmNmOWE2NDcxNDQ1OThjNzI1
YWJhMjVhZWVhZmNlMjdhN2E0ZGJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1l
YnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0NCwgNDVdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVm
ZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZm
ZXJibGl0L2RlZmF1bHRfZnJhbWVidWZmZXJfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzg5Yjk3YzZj
ODZkZmUzMzk3OWI4ZDNmNTI3YzU3OGQxY2E5MzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAyLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1
ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0NSwg
NDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhbWVidWZmZXJibGl0L2RlZmF1bHRfZnJhbWVidWZmZXJfMDMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MWIwMjUyZGFhN2U0MjkxOTI0ZTcwZjE0ODgyODNhYWIwN2Q5ZDQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzAzLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBC
bGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4o
Z2wsIFs0NiwgNDddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzA0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2RlZmF1bHRfZnJhbWVidWZmZXJfMDQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MDU2MmE5OTk4YjcyM2ZhMmE0Y2ZlOTMyMGJlZmQwOTQ2ZTcwNmI3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVy
XzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFt
ZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5ydW4oZ2wsIFs0NywgNDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1lYnVmZmVyXzA1
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2RlZmF1bHRfZnJhbWVidWZmZXJfMDUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YmQ1YzdkYjU0OGFhZjM3YTQzZDE4YjBmZGFiYmZhOTM2OTczOTE4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2Zy
YW1lYnVmZmVyXzA1Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1
ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0OCwgNDldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZWZhdWx0X2ZyYW1l
YnVmZmVyXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2RlZmF1bHRfZnJhbWVi
dWZmZXJfMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDY0NWNmMmMxOGM3NjhmZTkyMjFhZGRhMDZhYTM1
OWJhNjYxZTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9k
ZWZhdWx0X2ZyYW1lYnVmZmVyXzA2Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs0OSwgNTBdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZXB0
aF9zdGVuY2lsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L2RlcHRoX3N0ZW5jaWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYjA5ZDY3ZjcwMjg2MGFhYmU4Nzk0ZDBlZGVjMDE0OWRmZDk2YTIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9kZXB0aF9zdGVu
Y2lsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBGcmFt
ZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRU
ZXN0cy5ydW4oZ2wsIFs0MiwgNDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzAwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhbWVidWZmZXJibGl0L3JlY3RfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDA3NmMwMmVhMmVh
Y2U0NDM0ZWE2MGQ3ZmRkZjVjZDJkODNmYTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQvcmVj
dF8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzAxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDJhNTNjZWRjZjJmNGY2OTEwMTI4ZDY4YWEzOTFmNTMwZDMwNmQ2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQvcmVjdF8wMS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZnJhbWVi
dWZmZXJibGl0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgQmxpdCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIw
MCIgaGVpZ2h0PSIyMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMucnVuKGdsLCBbMSwg
Ml0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhbWVidWZmZXJibGl0L3JlY3RfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQv
cmVjdF8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3M2ViMzk2ZDY1YjBjYjljOGM5YTAyYTFkYzk2Nzk0
M2Q0NGZlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L3Jl
Y3RfMDIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGZyYW1lYnVmZmVyYmxpdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZy
YW1lYnVmZmVyIEJsaXQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJh
bWVidWZmZXJCbGl0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzAzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhbWVidWZmZXJibGl0L3JlY3RfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njk3MWNhMGYwOTlj
NDg4ZjcxOWZmZmRjMWVjNGQyYTY2MGQ0ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFszLCA0XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQvcmVj
dF8wNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzA0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzkyMzlmMzJmM2ZhNzJkYWZiNDU4MDU1MjAzYTBhNWU4NGU0MGUxYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQvcmVjdF8wNC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gZnJhbWVi
dWZmZXJibGl0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRnJhbWVidWZmZXIgQmxpdCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIw
MCIgaGVpZ2h0PSIyMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMucnVuKGdsLCBbNCwg
NV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
ZnJhbWVidWZmZXJibGl0L3JlY3RfMDUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mcmFtZWJ1ZmZlcmJsaXQv
cmVjdF8wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MDM1M2ExNWMwYjA4ODljOWNhYzNhYmQ2MjE3MmRl
YjFjNzVkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZnJhbWVidWZmZXJibGl0L3Jl
Y3RfMDUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIGZyYW1lYnVmZmVyYmxpdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEZy
YW1lYnVmZmVyIEJsaXQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmRnJh
bWVidWZmZXJCbGl0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxp
dFRlc3RzLnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzA2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvZnJhbWVidWZmZXJibGl0L3JlY3RfMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmI5MGRkYTQ4NjFi
NTk3YzUzOTlkYjRkMmIxMmY1NzY3NGU1M2E2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2ZyYW1lYnVmZmVyYmxpdC9yZWN0XzA2Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBmcmFtZWJ1ZmZlcmJsaXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBGcmFtZWJ1ZmZlciBCbGl0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZkZyYW1lYnVmZmVyQmxpdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5ydW4oZ2wsIFs2LCA3XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9pbmRleGVkc3RhdGVxdWVyeS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2luZGV4ZWRzdGF0ZXF1ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU1N2Rj
YjE4MzgwMTkzMTkyOGRlYWIyYWI4YTZlZjRjMTUyZTFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9pbmRleGVkc3RhdGVxdWVyeS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgSW5kZXhlZCBJbnRlZ2VyIFZhbHVlcyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9pbnN0YW5jZWRyZW5kZXJp
bmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9pbnN0YW5jZWRyZW5kZXJpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZGUwYTAxNmM0YTQ3Y2FhOGE4NDI0NDQ2Zjc2YjdmNzZlYjYxYmRlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL2luc3RhbmNlZHJlbmRlcmluZy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgSW5zdGFuY2VkIFJlbmRlcmlu
ZyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMucnVuKGdsKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2ludGVnZXJzdGF0
ZXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvaW50ZWdlcnN0YXRlcXVlcnkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MTBkZGY5ODg4NDBlYWViZjZhZDgxZTk5MTg1NWRiMjVhODczODcyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL2ludGVnZXJzdGF0ZXF1ZXJ5Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBJbnRlZ2VyIFZhbHVlcyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9pbnRlcm5hbGZvcm1hdHF1
ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvaW50ZXJuYWxmb3JtYXRxdWVyeS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc2NWRlZGU0MDhiNDY5MDQ5NGRmYjNmYjUzZGEyOGE4OWFkMTZlNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvaW50ZXJuYWxmb3JtYXRxdWVyeS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgSW50ZXJuYWxmb3JtYXQg
cXVlcnkgdGVzdHMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMucnVu
KGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L2xpZmV0aW1lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbGlmZXRpbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2Y4
MDgwN2UwNWI2ZWUxZWM3YjgxZjViNzRhM2Y2OWM3NjRmMzU3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL2xpZmV0aW1lLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBMaWZldGltZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZMaWZldGltZVRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Rlc3ROYW1lID0gJ2xp
ZmV0aW1lJzsKK3NldEN1cnJlbnRUZXN0TmFtZSh0ZXN0TmFtZSk7CitkZXNjcmlwdGlvbigiRnVu
Y3Rpb25hbCB0ZXN0OiAiICsgdGVzdE5hbWUgKyAiLiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7CisvKiogQHR5cGUge1dlYkdMMlJlbmRlcmluZ0NvbnRleHR9ICovIHZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCisgICAgdHJ5eworICAgICAg
ICBmdW5jdGlvbmFsLmdsZXMzLmVzM2ZMaWZldGltZVRlc3RzLnJ1bihnbCk7CisgICAgfQorICAg
IGNhdGNoKGVycikKKyAgICB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
bXVsdGlzYW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9tdWx0aXNhbXBsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwMmRiMzAzNWU5MjY3YzUwZGYxZmZjMDY0YmFjNDliMmY2ZjYyYjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvbXVsdGlzYW1wbGUuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIE11bHRpc2FtcGxlIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZk11bHRpc2FtcGxlVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk11
bHRpc2FtcGxlVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVmZmVyYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVn
YXRpdmVidWZmZXJhcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzU0MzU5ODE4N2ZjY2MzMzg3YzJmZjI4
YzRiNWEwMzlhODYwOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVm
ZmVyYXBpLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBOZWdhdGl2ZSBCdWZmZXIgQVBJIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZUJ1ZmZl
ckFwaVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC9jYW52YXM+Cis8c2NyaXB0PgorCisgICAgdmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCisgICAgdHJ5IHsKKyAgICAgICAgZnVuY3Rpb25hbC5nbGVz
My5lczNmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5ydW4oZ2wpOworICAgIH0KKyAgICBjYXRjaChl
cnIpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICB9CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlZnJh
Z21lbnRhcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZWZyYWdtZW50YXBpLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTFkZTBjMjljMjQxMGQzNDQ3YmI1ZjRiODA5Y2ViNTQwMjFmM2ZkNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZWZyYWdtZW50YXBpLmh0bWwKQEAgLTAsMCArMSwy
MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBOZWdhdGl2ZSBG
cmFnbWVudCBBUEkgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0
PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlc2hhZGVy
YXBpLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmVzaGFkZXJhcGkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MWQ5ZmM2NmViYjA2ZTgyNTAxOWQ4MTQ4MmY2NWZmN2RhNjBiNDAyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL25lZ2F0aXZlc2hhZGVyYXBpLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBOZWdhdGl2ZSBTaGFkZXIgQVBJ
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlc3RhdGVh
cGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXN0YXRlYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU0
MDkwZWFmOGM5MGM1ZmVlZmZjNmRmZTY2MDQyYTkxMzg4OTgzNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9uZWdhdGl2ZXN0YXRlYXBpLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBOZWdhdGl2ZSBTdGF0ZSBBUEkgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdh
dGl2ZVN0YXRlQXBpVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZldGV4dHVyZWFwaS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L25lZ2F0aXZldGV4dHVyZWFwaS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNjE0ODAwMzk0ZmQ0NGZlNThk
NjE5Njc3YzIwNmIzODIxMjk0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRp
dmV0ZXh0dXJlYXBpLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBOZWdhdGl2ZSBUZXh0dXJlIEFQSSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmTmVnYXRp
dmVUZXh0dXJlQXBpVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+CisK
KyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKKyAgICB0cnkgeworICAgICAgICBmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ydW4oZ2wpOworICAgIH0KKyAg
ICBjYXRjaChlcnIpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoZXJyKTsKKyAgICB9
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25l
Z2F0aXZldmVydGV4YXJyYXlhcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXZlcnRleGFycmF5
YXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkzNTE0Y2I4NTVlZTJhM2ZlM2M1NDE1Y2ZkNTQxZDQ2YTc4
YjkzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXZlcnRleGFycmF5YXBp
Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBOZWdhdGl2ZSBWZXJ0ZXggQXJyYXkgQVBJIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZOZWdhdGl2ZVZlcnRl
eEFycmF5QXBpVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+CisKKyAg
ICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKKyAgICB0cnkgeworICAgICAgICBmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMucnVuKGdsKTsKKyAgICB9Cisg
ICAgY2F0Y2goZXJyKSB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGVycik7CisgICAg
fQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9v
Y2NsdXNpb25xdWVyeV9jb25zZXJ2YXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9vY2NsdXNpb25xdWVy
eV9jb25zZXJ2YXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDVhYmMxMjhmNTMxNDI0MDE4ZmYzNzVj
OGM5OTg2NDA2N2QxZmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL29jY2x1c2lvbnF1
ZXJ5X2NvbnNlcnZhdGl2ZS5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgT2NjbHVzaW9uIFF1ZXJ5IENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmT2NjbHVzaW9uUXVlcnlUZXN0cycpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIHtzdGVuY2lsOiB0cnVlLCBwcmVzZXJ2ZURyYXdpbmdCdWZm
ZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmT2NjbHVzaW9uUXVlcnlUZXN0
cy5ydW4oZ2wsIFszMSwgNjJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL29jY2x1c2lvbnF1ZXJ5X3N0cmljdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL29j
Y2x1c2lvbnF1ZXJ5X3N0cmljdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDRlOTYxY2UzZGI0YWY5NGI1
YjA2ZDFjOTQxZTU0MDBlN2Q1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvb2NjbHVz
aW9ucXVlcnlfc3RyaWN0Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBPY2NsdXNpb24gUXVlcnkgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZPY2NsdXNpb25RdWVyeVRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywge3N0ZW5jaWw6IHRydWUsIHByZXNlcnZlRHJhd2luZ0J1ZmZl
cjogdHJ1ZX0sIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZPY2NsdXNpb25RdWVyeVRlc3Rz
LnJ1bihnbCwgWzAsIDMxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9waXhlbGJ1ZmZlcm9iamVjdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3BpeGVsYnVm
ZmVyb2JqZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ5ZGQzMTdkZWI4ZTQzN2NhYjRmZmZkYzhiNjk1
MjBmNDU3MDY3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9waXhlbGJ1ZmZlcm9iamVj
dC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgUGl4ZWwgQnVmZmVyIE9iamVjdCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQaXhl
bEJ1ZmZlck9iamVjdFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywge3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZX0sIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3QucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDAu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRpdmVyZXN0YXJ0LzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZl
YTQ5ZWQyMjdmNDJmMzIzZTEwNWIxYzQ5MzUxYWY1NDEzMTBlZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9wcmltaXRpdmVyZXN0YXJ0LzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBwcmltaXRpdmVyZXN0YXJ0X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgUHJpbWl0aXZlIFJlc3RhcnQgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMucnVuKGdsLCBbMCwgMV0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcHJpbWl0aXZl
cmVzdGFydC8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OWM2MzMxYjYzOTlmM2U4ZDE5M2E3NmM0M2FmZjNlNTMyYmU4ZjRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDEuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHByaW1pdGl2
ZXJlc3RhcnRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBQcmltaXRpdmUgUmVzdGFydCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5ydW4oZ2wsIFsx
LCAyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9wcmltaXRpdmVyZXN0YXJ0LzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcHJpbWl0aXZlcmVzdGFydC8w
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU1NTJmNTkxNzJjYTE5MTc1ODdhMjg2MzVjMGMxNGY2ZmQyNmNl
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcHJpbWl0aXZlcmVzdGFydC8wMi5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gcHJpbWl0aXZlcmVzdGFydF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFByaW1pdGl2ZSBS
ZXN0YXJ0IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlByaW1pdGl2ZVJl
c3RhcnRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmUHJpbWl0aXZlUmVzdGFydFRlc3Rz
LnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRp
dmVyZXN0YXJ0LzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZiNWZiMmI5YzdlNGM5NGMxMjM3ZGUxODNk
NzcxNmQ3YzNmMzdjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRpdmVyZXN0
YXJ0LzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSBwcmltaXRpdmVyZXN0YXJ0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
UHJpbWl0aXZlIFJlc3RhcnQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
UHJpbWl0aXZlUmVzdGFydFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQcmltaXRpdmVS
ZXN0YXJ0VGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcHJpbWl0aXZlcmVzdGFydC8wNC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzM1NDA2N2E2N2JlZDhl
ZDM1N2UwYmFiM2Y2OTlkODFjOGI1OWNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3By
aW1pdGl2ZXJlc3RhcnQvMDQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHByaW1pdGl2ZXJlc3RhcnRfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBQcmltaXRpdmUgUmVzdGFydCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5ydW4oZ2wsIFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRpdmVyZXN0YXJ0LzA1Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvcHJpbWl0aXZlcmVzdGFydC8wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZDA5
MzhkMGI3ZDE4NDlmYmJlYzMzMmZhNThjZjM3ZmVhZjhkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvcHJpbWl0aXZlcmVzdGFydC8wNS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gcHJpbWl0aXZlcmVzdGFydF90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFByaW1pdGl2ZSBSZXN0YXJ0IENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLnJ1bihnbCwgWzUsIDZdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJl
c3RhcnQvMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRpdmVyZXN0YXJ0LzA2Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWQ0MDM5ODc3YjJiZWRkOGI1YWQ1ZGM0YmExOTUxNWQ4NTMzNjUzOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9wcmltaXRpdmVyZXN0YXJ0LzA2Lmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBwcmltaXRpdmVy
ZXN0YXJ0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgUHJpbWl0aXZlIFJlc3RhcnQgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMucnVuKGdsLCBbNiwg
N10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
cHJpbWl0aXZlcmVzdGFydC8wNy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZjhiNDdmYjI1MTU1N2JhMjk1MzhjYTU5ZGY2NDc4MzhjYjc4OTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ByaW1pdGl2ZXJlc3RhcnQvMDcuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHByaW1pdGl2ZXJlc3RhcnRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBQcmltaXRpdmUgUmVz
dGFydCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZQcmltaXRpdmVSZXN0
YXJ0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5y
dW4oZ2wsIFs3LCA4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9yYXN0ZXJpemVyZGlzY2FyZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Jhc3Rlcml6ZXJk
aXNjYXJkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1YTIzMzQwNGIxMWJmMTY0ODQ3MzMwYTQyMjc1ZDIx
ZDkyNGY1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9yYXN0ZXJpemVyZGlzY2FyZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgUmFzdGVyaXplciBEaXNjYXJkIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlJhc3Rlcml6
ZXJEaXNjYXJkVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywge3N0ZW5jaWw6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmUmFzdGVy
aXplckRpc2NhcmRUZXN0cy5ydW4oZ2wpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcmJvc3RhdGVxdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Jib3N0
YXRlcXVlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDExNjMyMDUzYTNkZTNhMDQ3Yjc2OTdhMjdkN2Ux
MzhmNjg4ODNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Jib3N0YXRlcXVlcnkuaHRt
bApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFJibyBTdGF0ZSBRdWVyeSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZSYm9TdGF0ZVF1ZXJ5
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5ydW4oZ2wp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcmVh
ZHBpeGVsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvcmVhZHBpeGVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJlMTE2
N2Y0OTExMDIwYzllMjQ4ODAzYzMzMGYzYmQ4Y2RiMGI0YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9yZWFkcGl4ZWwuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFJlYWRQaXhlbCBUZXN0cyBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlJlYWRQaXhlbFRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywge3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZX0sIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZSZWFkUGl4ZWxUZXN0cy5ydW4oZ2wpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2FtcGxlcm9iamVjdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NhbXBsZXJvYmplY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjkxODc2NTdhOTI5
OWY1NWEyNTYzMTVkZWY0OTI1N2NiNWIzZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NhbXBsZXJvYmplY3QuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFNhbXBsZXIgT2JqZWN0IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNhbXBsZXJPYmplY3RUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2FtcGxlck9i
amVjdFRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zYW1wbGVyc3RhdGVxdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NhbXBsZXJz
dGF0ZXF1ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc4ZGViZWYyZTNjYzE1ZjFlNWJmMGUxYTEzM2Uy
ZWNhNzA4ZDc4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zYW1wbGVyc3RhdGVxdWVy
eS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgU2FtcGxlciBTdGF0ZSBRdWVyeSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTYW1w
bGVyU3RhdGVRdWVyeVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTYW1wbGVyU3RhdGVR
dWVyeVRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zaGFkZXJhcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJhcGkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMzNlNzgxNDhlMjE2Y2RiNDAyOGIyYTljYTllMzgyMjIwZTZkYmFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmFwaS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIEFQSSBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJBcGlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2hhZGVyQXBpVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmJ1aWx0aW52YXIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9z
aGFkZXJidWlsdGludmFyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhhN2JlMjJlMThlMDJjYTEwYjkwZDJm
OGE1YWIyMmFlNmE4MjU3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJidWls
dGludmFyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBTaGFkZXIgQnVpbHQtaW4gVmFyIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlckJ1aWx0aW5WYXJUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5ydW4oZ2wpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyY29tbW9uZnVu
Y3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJjb21tb25mdW5jdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBkYmFkMjU3ZmE3ZmMzNTM3NzhiMTQ1YmZiMjY0MTJiOTk2YTc1MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyY29tbW9uZnVuY3Rpb24uaHRtbApAQCAtMCwwICsxLDI0
IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBDb21t
b24gRnVuY3Rpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25U
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5y
dW4oZ2wpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVyZGVyaXZhdGVfZGZkeC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmRlcml2YXRlX2Rm
ZHguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YzJjNjc5ZWY0NmIwZmNiNGI0ZDhiYjZhYWU5MDU0YzBjMzQy
YjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmRlcml2YXRlX2RmZHguaHRt
bApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFNoYWRlciBEZXJpdmF0ZSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJEZXJpdmF0
ZVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLnJ1bihn
bCwgWzAsIDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcmRlcml2YXRlX2RmZHkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJkZXJpdmF0
ZV9kZmR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdhMmRhM2FjMTRkMTczNmQ0OTYwZmNiYTI3Mjk2MWY2
ZGNiY2ViNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJkZXJpdmF0ZV9kZmR5
Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBTaGFkZXIgRGVyaXZhdGUgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyRGVy
aXZhdGVUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5y
dW4oZ2wsIFsxLCAyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJkZXJpdmF0ZV9md2lkdGguaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJk
ZXJpdmF0ZV9md2lkdGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhiOTBmOTEzMDE1ZTJlZmI5YTVmZjUz
MGMxOWZiNDIzY2ZjMTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmRlcml2
YXRlX2Z3aWR0aC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIERlcml2YXRlIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlckRlcml2YXRlVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckRlcml2
YXRlVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvbWF0XzAwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVyaW5kZXhpbmcvbWF0XzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNkN2U5OGZhMmVlYjZi
YzU1MDhjODI0M2E4YmU0OGM5MTVhYjMwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9z
aGFkZXJpbmRleGluZy9tYXRfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlckluZGV4aW5nVGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvbWF0XzAxLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvbWF0XzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU2YzMy
MmUzMTA0YmMzMDdkMmU1Mjc3ODM0ZDNmMGFhNDZkMTExMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJpbmRleGluZy9tYXRfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMucnVuKGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvbWF0
XzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvbWF0XzAyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGViZGM1N2MyZTJjNmMyNDdmMjA0NDE3NDFmN2JlOWY4YmE0YzE2ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJpbmRleGluZy9tYXRfMDIuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4
aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMucnVuKGdsLCBbOCwgOV0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5k
ZXhpbmcvdG1wLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvdG1wLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc5YTg4ODRmODkwODYyMDIwMWY0NGJjNjMxYmY2OGFjYmYwNGRkYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJpbmRleGluZy90bXAuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4
aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5k
ZXhpbmcvdW5pZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmluZGV4aW5nL3VuaWZvcm0uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Yzg2YTZmMTg1YjViOGQzZDdjODMxNjc3MmYzOWFkZGNmZTdlYjY3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmluZGV4aW5nL3VuaWZvcm0uaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIEluZGV4aW5n
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVzdHMucnVuKGdsLCBb
MSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVyaW5kZXhpbmcvdmFyeWluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmluZGV4aW5n
L3ZhcnlpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE5YzAyMmY4MWFiYzVjMmY1ZjVmMDcyOGViZDVl
MTlhMGNlZjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmluZGV4aW5nL3Zh
cnlpbmcuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hh
ZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRl
ckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5nVGVz
dHMucnVuKGdsLCBbMCwgMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvdmVjMi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRl
cmluZGV4aW5nL3ZlYzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmM4MGMxYzRlZmNmYjNjOWRkOGFiOTNi
OGZiNDg4ZWIyMDE3MTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmluZGV4
aW5nL3ZlYzIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
U2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4aW5n
VGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvdmVjMy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcmluZGV4aW5nL3ZlYzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWFiZjAyN2EzMTFjM2MzZDQ0YTJl
MGY1NWMxNWFhYjIxMzFiNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmlu
ZGV4aW5nL3ZlYzMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckluZGV4
aW5nVGVzdHMucnVuKGdsLCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyaW5kZXhpbmcvdmVjNC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcmluZGV4aW5nL3ZlYzQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODk2ZTcyNmI0NWQzYTJjNTIz
ODZjOGViZWRjNjAwYTZiYjE4OTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRl
cmluZGV4aW5nL3ZlYzQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcmluZGV4aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgU2hhZGVyIEluZGV4aW5nIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlckluZGV4aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlcklu
ZGV4aW5nVGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybG9vcF9kb193aGlsZS5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3NoYWRlcmxvb3BfZG9fd2hpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjU3NDMzODUyYjE5YjI2
MjlmNzc5MGYwYjhjNzc4YjExMTMwZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcmxvb3BfZG9fd2hpbGUuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBMb29wIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlckxvb3BUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyTG9vcFRl
c3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcmxvb3BfZm9yLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybG9v
cF9mb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmM1MDk1YzkxOWMxYjEzNmE3Y2VhZjgzNjg0ZTlmYTk1
YzIwNDFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcmxvb3BfZm9yLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBTaGFkZXIgTG9vcCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJMb29wVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlckxvb3BUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJs
b29wX3doaWxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybG9vcF93aGlsZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhYzM2NjUxY2IyNzAyMGQ3NTBiYjFmZGI3ZjA2MzJjZDQ2MTQzNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybG9vcF93aGlsZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIExvb3AgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyTG9vcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZTaGFkZXJMb29wVGVzdHMucnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2FkZF9hc3NpZ24u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvYWRkX2Fzc2lnbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJiNzBlNGQ2ODFiZjU4NGE0NTBlZDhkYmZlYTM5YjUyZjE4ZTNmNzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2FkZF9hc3NpZ24uaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJp
eF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFk
ZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzI5LCAzMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2FkZF9jb25zdC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9hZGRfY29uc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjE1Y2Iy
OWFiOWY3MDRmYWM3MDkxMmZlZmNmMTViNDQzNGExY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcm1hdHJpeC9hZGRfY29uc3QuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LnJ1bihnbCwgWzAsIDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9hZGRfZHluYW1pYy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcm1hdHJpeC9hZGRfZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZWViMjg3YWFiYmYy
OGY1MTU3OWM2NjFkODkzMzU0NjQwMTMwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVybWF0cml4L2FkZF9keW5hbWljLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJtYXRyaXhfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBTaGFkZXIgTWF0cml4IFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyTWF0cml4VGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyTWF0cml4VGVzdC5y
dW4oZ2wsIFsyLCAzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvYWRkX3VuaWZvcm0uaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFk
ZXJtYXRyaXgvYWRkX3VuaWZvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjQ1OWY2YzZjMzU4OWJmYTZm
MjVhYzRlODIxNDU2MDZkMmEyYmJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRl
cm1hdHJpeC9hZGRfdW5pZm9ybS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1h
dHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuKGds
LCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVybWF0cml4L2RldGVybWluYW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0
cml4L2RldGVybWluYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI4ODVmODMyMjhiOGQwOTg5MTY1ZDdh
OTczN2U5ZWNlYmZmZmM2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRy
aXgvZGV0ZXJtaW5hbnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhU
ZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzIx
LCAyMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVybWF0cml4L2Rpdl9hc3NpZ24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgv
ZGl2X2Fzc2lnbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkOTEzZGY3OTkxMDYxNzNmZjExZDQyODkxZDY5
NThlMDBiOTdmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2Rp
dl9hc3NpZ24uaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNo
YWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzMyLCAzM10p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hh
ZGVybWF0cml4L2Rpdl9jb25zdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9kaXZfY29u
c3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOTU4ZDc1MDM2ZmIxZWUxYzg2NWQzNGNlOTBkYWE5NDc1YjU5
NmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9kaXZfY29uc3Qu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRy
aXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzE1LCAxNl0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4
L2Rpdl9keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2Rpdl9keW5hbWljLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjIzYzlhOWJjMDI3NTk1ODZiYjJkYTg1N2FiMGU3Y2FkZTUyNjQ3OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvZGl2X2R5bmFtaWMuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXgg
VGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzE3LCAxOF0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2Rp
dl91bmlmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2Rpdl91bmlmb3JtLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGM3Nzg0N2M5NTI1N2Q0MjIzNWNkNTQxODM1NzMxZDAxYTExNzgyYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvZGl2X3VuaWZvcm0uaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzE2LCAxN10pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2ludmVy
c2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvaW52ZXJzZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMxNGExOWUyYzkyOWY4ZWQ0ZGRlMTE5NGE1NmRmMmMzOTg5MzcyZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L2ludmVyc2UuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJN
YXRyaXhUZXN0LnJ1bihnbCwgWzIyLCAyM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L21hdHJpeGNvbXBtdWx0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L21hdHJpeGNvbXBtdWx0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWFiNjhkMzYyYWViM2Y4NGIwZGVhMzVjZDc4YzI1YTQyNGI5NGI0OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbWF0cml4Y29tcG11bHQuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1h
dHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZT
aGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzE4LCAxOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9hc3NpZ24uaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX2Fzc2lnbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3
MWExNTU2YjY3ZWEyOTdmYzI1NTU4YzUxYjgzNjhjNmUxNDA5YjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9hc3NpZ24uaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJN
YXRyaXhUZXN0LnJ1bihnbCwgWzMxLCAzMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9jb25zdF9oaWdocC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9tdWxfY29uc3RfaGlnaHAuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MGZmMThmNzdhOWQ2ZTVmNTcyMDk3OTM0YzAwYTViM2U5MmJiMzE1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9tdWxfY29uc3RfaGlnaHAuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRl
cm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzgsIDldKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9tdWxfY29uc3RfbG93
cC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9tdWxfY29uc3RfbG93cC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQwNTU5ZWJmN2EyYmJiMGZlYmUwYjAyZjg5MjEzNjczMzY5ZjgzNTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9jb25zdF9sb3dwLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBz
aGFkZXJtYXRyaXhfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgTWF0cml4IFRlc3Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyTWF0cml4VGVzdCcpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmU2hhZGVyTWF0cml4VGVzdC5ydW4oZ2wsIFs2LCA3XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX2NvbnN0
X21lZGl1bXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX2NvbnN0X21lZGl1bXAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMWVmYWVmOTMwZWMzYzM0MGY5NjE1MGUxOGU3MjNlYWJiYTE0M2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9tdWxfY29uc3RfbWVk
aXVtcC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVy
IE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhl
aWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuKGdsLCBbNywgOF0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0
cml4L211bF9keW5hbWljX2hpZ2hwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9k
eW5hbWljX2hpZ2hwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNiNTdiYWRkOTA3ZDJkNWNkMjYyNjkxZmM0
MjMxNzExYjg1Y2IxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgv
bXVsX2R5bmFtaWNfaGlnaHAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRy
aXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwg
WzE0LCAxNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVybWF0cml4L211bF9keW5hbWljX2xvd3AuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFk
ZXJtYXRyaXgvbXVsX2R5bmFtaWNfbG93cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZDNjZTEwNjg5Zjhl
Mzk4ODBjZDIxOGYyZGY4M2JmOTg3M2E2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVybWF0cml4L211bF9keW5hbWljX2xvd3AuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhU
ZXN0LnJ1bihnbCwgWzEyLCAxM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9keW5hbWljX21lZGl1bXAuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX2R5bmFtaWNfbWVkaXVtcC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJmOTVmYWY3NzRiMTgyNjZlMThmMWU3NzA4NDg4NjRmZDEyNmI2NmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF9keW5hbWljX21lZGl1bXAuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVz
dDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF91
bmlmb3JtX2hpZ2hwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L211bF91bmlmb3JtX2hp
Z2hwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEzZDdkMjFhYzE0MDRkYmU0NjhjMmFlZTAzZDE3ZTdjOTY5
Mjk5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX3VuaWZv
cm1faGlnaHAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNo
YWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0Jyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihnbCwgWzExLCAxMl0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hh
ZGVybWF0cml4L211bF91bmlmb3JtX2xvd3AuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgv
bXVsX3VuaWZvcm1fbG93cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYTQzNGNkMmI2MDY1ZGNhM2Y5MGQy
ZWE0ZDVmNjAwZDM5MzQ5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0
cml4L211bF91bmlmb3JtX2xvd3AuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJN
YXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0LnJ1bihn
bCwgWzksIDEwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX3VuaWZvcm1fbWVkaXVtcC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcm1hdHJpeC9tdWxfdW5pZm9ybV9tZWRpdW1wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmMDIy
Y2I0NTgzMmM0ZmE3ODY1Y2E2ZTgwM2RkODJhNjg2MmNmZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJtYXRyaXgvbXVsX3VuaWZvcm1fbWVkaXVtcC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0
cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMTAsIDExXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbmVnYXRpb24uaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvbmVnYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTBmZGI4
MzFmMzI0YTMwZWM5YzkyNDlhYTBmMjMyZjliNDJiZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcm1hdHJpeC9uZWdhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRl
c3QucnVuKGdsLCBbMjQsIDI1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvb3V0ZXJwcm9kdWN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVybWF0cml4L291dGVycHJvZHVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlM2E1YmI1NmEz
ZWE1ZmNmOTExNDM4MGM5ZDQ1NzNjYjZlMzY5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVybWF0cml4L291dGVycHJvZHVjdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRl
c3QucnVuKGdsLCBbMTksIDIwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcG9zdF9kZWNyZW1lbnQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9zaGFkZXJtYXRyaXgvcG9zdF9kZWNyZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTVmN2Jk
NDZmY2U5ZTE2NzExZjMzMTM3MjhlZGNmYmI2MDg3MDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcm1hdHJpeC9wb3N0X2RlY3JlbWVudC5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1h
dHJpeFRlc3QucnVuKGdsLCBbMjgsIDI5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcG9zdF9pbmNyZW1lbnQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcG9zdF9pbmNyZW1lbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
Mzc5ZmRiODgyYjEyN2JkNmNhMjkwZDVmNGU5NmQxMzhmYmRmMzMyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9wb3N0X2luY3JlbWVudC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0
cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMjcsIDI4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcHJlX2RlY3JlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9wcmVfZGVjcmVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzkyMWZiNjk3ZmY3ZTJjZmUxZTcwYzA2ZWRjYTNjMTE0ZTA0MGJkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcHJlX2RlY3JlbWVudC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVy
bWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMjYsIDI3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcHJlX2luY3JlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9wcmVfaW5jcmVtZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWMwNmVlNzFiMWQwOGZmZjYzY2JkZjAwYWFkOTA3NmRiZWYyZWZkYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvcHJlX2luY3JlbWVudC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hh
ZGVybWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMjUsIDI2XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvc3ViX2Fzc2ln
bi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9zdWJfYXNzaWduLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzliZjFmZDM0NDU2ZWFjZDc1YjYyOTFiMjI3MTA2YjZmZjljZjIzZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvc3ViX2Fzc2lnbi5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0
cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNo
YWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMzAsIDMxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgvc3ViX2NvbnN0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L3N1Yl9jb25zdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NzRm
NjEyNmI3NGQ1N2JkOTJmN2YzNTc2ZmY5ZmUxMmEwMTI1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvc2hhZGVybWF0cml4L3N1Yl9jb25zdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlck1hdHJpeFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJp
eFRlc3QucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4L3N1Yl9keW5hbWljLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVybWF0cml4L3N1Yl9keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQwOGRmNDc0M2Iz
ZTgyMWM1YzhiMTVkZWM2MzJkNGE3MWUxMDRhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9zaGFkZXJtYXRyaXgvc3ViX2R5bmFtaWMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm1hdHJpeF90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFNoYWRlciBNYXRyaXggVGVzdDwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZT
aGFkZXJNYXRyaXhUZXN0Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJNYXRyaXhUZXN0
LnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJpeC9zdWJfdW5pZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcm1hdHJpeC9zdWJfdW5pZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkN2MyOTNkMGM3OWIxMmZk
YWNlZjIwZjAwMGNkZjJmODRkOTFiMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hh
ZGVybWF0cml4L3N1Yl91bmlmb3JtLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJtYXRyaXhfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBTaGFkZXIgTWF0cml4IFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVy
TWF0cml4VGVzdCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyTWF0cml4VGVzdC5ydW4o
Z2wsIFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJtYXRyaXgvdHJhbnNwb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0
cml4L3RyYW5zcG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNDY1NDEwZmQyMDA2MDY3MTZhMzEwNGUy
MGIzMmRlNmJkM2YzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVybWF0cml4
L3RyYW5zcG9zZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
U2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3Qn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuKGdsLCBbMjAsIDIx
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9z
aGFkZXJtYXRyaXgvdW5hcnlfYWRkaXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJtYXRyaXgv
dW5hcnlfYWRkaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmNiNTI2ZWJiNWY0YzRlMDljNWNlNzZl
YjRhYjk2NzE5YThjMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm1hdHJp
eC91bmFyeV9hZGRpdGlvbi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVybWF0cml4X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgU2hhZGVyIE1hdHJpeCBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJp
eFRlc3QnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck1hdHJpeFRlc3QucnVuKGdsLCBb
MjMsIDI0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9zaGFkZXJvcGVyYXRvci9hbmdsZV9hbmRfdHJpZ29ub21ldHJ5XzAwLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRyeV8wMC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0ZDNjM2MyNmU1OGIxZTQzYTU0ZDllMDc5MjQ0NGE1OGQ0YWY1NDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRy
eV8wMC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gc2hhZGVyb3BlcmF0b3JfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFk
ZXIgT3BlcmF0b3IgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFk
ZXJPcGVyYXRvclRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMucnVuKGdsLCBbMTksIDIwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9hbmdsZV9hbmRfdHJpZ29ub21ldHJ5
XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRy
eV8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDJhMDA3YmVlOTNlMTdkMTI2OWQxMWQ1MzdmM2M1Mjk3
N2NmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVf
YW5kX3RyaWdvbm9tZXRyeV8wMS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVyb3BlcmF0b3JfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3IgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGdsLCBbMjAsIDIxXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9hbmdsZV9h
bmRfdHJpZ29ub21ldHJ5XzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVf
YW5kX3RyaWdvbm9tZXRyeV8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MjczYzY0OWE2ZjQ4YjgzNzI5
ODAyYTFmYTQzN2RmYTRhNjdmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVy
b3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRyeV8wMi5odG1sCkBAIC0wLDAgKzEsMzMgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVyb3BlcmF0b3Jf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3IgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZ29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzJyk7Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGdsLCBbMjEsIDIyXSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJv
cGVyYXRvci9hbmdsZV9hbmRfdHJpZ29ub21ldHJ5XzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVy
b3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRyeV8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjYTNl
ZjI0N2YwZWM3YmMyZjMxNWY2Y2E0OTVhYTA0MDJjYTJmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYW5nbGVfYW5kX3RyaWdvbm9tZXRyeV8wMy5odG1sCkBA
IC0wLDAgKzEsMzMgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
c2hhZGVyb3BlcmF0b3JfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3Ig
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRl
c3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGds
LCBbMjIsIDIzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJvcGVyYXRvci9iaW5hcnlfb3BlcmF0b3JfMDAuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9zaGFkZXJvcGVyYXRvci9iaW5hcnlfb3BlcmF0b3JfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWZi
ODA0M2MzM2Q3MzVhNjU5MGU1NzZiZTAyOWRhMjc4ZWVlMmFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wMC5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVy
b3BlcmF0b3JfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3IgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzJyk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGdsLCBbMywg
NF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVy
b3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc0MGVkZWEyYzdl
ZTgwYjY4Mzc2MDg1ODY4MTM5MTFmZDQ5NmMzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9zaGFkZXJvcGVyYXRvci9iaW5hcnlfb3BlcmF0b3JfMDEuaHRtbApAQCAtMCwwICsxLDMzIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm9wZXJhdG9y
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE9wZXJhdG9yIENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2dvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cycpOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWln
aHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnJ1bihnbCwgWzQsIDVdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9w
ZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9y
L2JpbmFyeV9vcGVyYXRvcl8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzRmZWM2NWEzZjYzYTMxMDM2
NjVmZmNlMWU1NTUyYmQxYzQ5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVy
b3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzAyLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFs1LCA2XSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9i
aW5hcnlfb3BlcmF0b3JfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9iaW5hcnlf
b3BlcmF0b3JfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIzYWZjYTMzOGZmYTRlZjQ3YWNjMzBjMGJl
YzM1OTg5YjNkZWFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9y
L2JpbmFyeV9vcGVyYXRvcl8wMy5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVyb3BlcmF0b3JfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3IgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29w
ZXJhdG9yXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9y
XzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNjMGQ5NjRkYWMxMjQyNTg5NmVhYjYzNjczMGMzMTU0ZDc1
ODllNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9iaW5hcnlf
b3BlcmF0b3JfMDQuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm9wZXJhdG9yX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgU2hhZGVyIE9wZXJhdG9yIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2dvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2hhZGVyT3BlcmF0b3JUZXN0cycpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJP
cGVyYXRvclRlc3RzLnJ1bihnbCwgWzcsIDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8w
NS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wNS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZmNWExODkzMjdmNzc3MzJhNDJmN2Q5OWMwMTllNjY2N2M0ZDFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9y
XzA1Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRl
ciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5ydW4oZ2wsIFs4LCA5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9iaW5hcnlfb3BlcmF0b3JfMDYuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9iaW5hcnlfb3BlcmF0b3JfMDYuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNWYyYzFkOGEzNTA0M2FjM2IwOTJmNDM1NTk5OGE2YjExZDE3YjVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wNi5odG1s
CkBAIC0wLDAgKzEsMzMgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gc2hhZGVyb3BlcmF0b3JfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0
b3IgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZ29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRv
clRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVu
KGdsLCBbOSwgMTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wNy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wNy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVi
NTkzM2RjMWIzMzA3NjYwOWFlODY1ODMyNDFlNzE5ZmFjMGFjMmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzA3Lmh0bWwKQEAgLTAs
MCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFk
ZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMn
KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAy
KTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsx
MCwgMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wOC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNTcyNmM1
NjJlOTc2ODA1MGZlYWQ3OTU0MDg5OGM0ZWMwYTFkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzA4Lmh0bWwKQEAgLTAsMCArMSwz
MyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVy
YXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsxMSwgMTJd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wOS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9w
ZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8wOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NGZkMWQ2YzhiY2Ez
YzdiYTFiNTAzY2E5M2YzNjEzZjc2ZTg1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzA5Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsxMiwgMTNdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9w
ZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8xMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9y
L2JpbmFyeV9vcGVyYXRvcl8xMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmM3Njg2NDYzMDk4YzZhNTRl
NDVkNWVkNmM4OWVmNmRkMzM1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVy
b3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzEwLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsxMywgMTRdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9y
L2JpbmFyeV9vcGVyYXRvcl8xMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFy
eV9vcGVyYXRvcl8xMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4YTY2ZmZlOWJkMWJhMTMwMDY3NGE4NmRl
NTQ5MzlhNmQ4NWFmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0
b3IvYmluYXJ5X29wZXJhdG9yXzExLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsxNCwgMTVdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFy
eV9vcGVyYXRvcl8xMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVy
YXRvcl8xMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NjNiNmZmMzAxNTg1Y2VjZWJjMGU2MTMwODNkNWUx
ZGZjNjcyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmlu
YXJ5X29wZXJhdG9yXzEyLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsxNSwgMTZdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVy
YXRvcl8xMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8x
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjYWE0OTcwNjI4MTc5NzRhYWVjMTFkM2FlMTdiZjVjNWY0YjBl
MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29w
ZXJhdG9yXzEzLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5ydW4oZ2wsIFsxNiwgMTddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8x
NC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8xNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0NWRiNTBlZWZkYTJlZTMxMzQyMmVmMWMxY2VkNWI3YWFlNTkxNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9y
XzE0Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRl
ciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5ydW4oZ2wsIFsxNywgMThdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8xNS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2JpbmFyeV9vcGVyYXRvcl8xNS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxMWI5YWFlNTMwYzZiYmM0NTJmNzZkMTA5ZWI4NzUxMTM3ZWVmNzAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvYmluYXJ5X29wZXJhdG9yXzE1Lmh0
bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVy
YXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJh
dG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5y
dW4oZ2wsIFsxOCwgMTldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2Jvb2xfY29tcGFyZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcm9wZXJhdG9yL2Jvb2xfY29tcGFyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZGJmYzY1Yjgw
YmRjOGYzODEzMzNkOWUzYjk2M2I0NGJlMzcwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvc2hhZGVyb3BlcmF0b3IvYm9vbF9jb21wYXJlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFszNCwgMzVdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJh
dG9yL2NvbW1vbl9mdW5jdGlvbnNfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9j
b21tb25fZnVuY3Rpb25zXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxNGJhZDU5N2ZjZTQ5ZGEzN2Fj
ZGEyNzJhNWIyMDllZjBjMTMyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJv
cGVyYXRvci9jb21tb25fZnVuY3Rpb25zXzAwLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyNCwgMjVdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9y
L2NvbW1vbl9mdW5jdGlvbnNfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21t
b25fZnVuY3Rpb25zXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyY2UwZjQwN2M1NmJjYzFhODEyYWNh
ZTlmZTI5N2Y0MjAwNTAxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVy
YXRvci9jb21tb25fZnVuY3Rpb25zXzAxLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyNSwgMjZdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2Nv
bW1vbl9mdW5jdGlvbnNfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25f
ZnVuY3Rpb25zXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI4MTAwMjg3MGQ5MmYxYTNhOThhZmJmZTIz
NTBmMzU3OWM0MDJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRv
ci9jb21tb25fZnVuY3Rpb25zXzAyLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2NvbW1v
bl9mdW5jdGlvbnNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25fZnVu
Y3Rpb25zXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgxOGRlYWU0ZTJkNDU4M2IzMTRlZTcwZDQ0MmZi
MTY3YzIyN2FmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9j
b21tb25fZnVuY3Rpb25zXzAzLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyNywgMjhdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2NvbW1vbl9m
dW5jdGlvbnNfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25fZnVuY3Rp
b25zXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJkNGJiYzY4ZTJjMGY3NDc3NmVkNWRkZjcwYTUyNzAx
OTg4MWQ3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21t
b25fZnVuY3Rpb25zXzA0Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyOCwgMjldKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2NvbW1vbl9mdW5j
dGlvbnNfMDUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25fZnVuY3Rpb25z
XzA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjllYTJjYzFkNjdmMzFlMGJlZTRiNTE3ZTk1NGFiZDk0YWE2
N2NjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25f
ZnVuY3Rpb25zXzA1Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVy
T3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyOSwgMzBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2NvbW1vbl9mdW5jdGlv
bnNfMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25fZnVuY3Rpb25zXzA2
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTgxOGRhNDcxYWY4MzM0NGM3ZjU3NTEyMTc1N2Y3ZDc4Nzg2ZTY0
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRvci9jb21tb25fZnVu
Y3Rpb25zXzA2Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5ydW4oZ2wsIFszMCwgMzFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2V4cG9uZW50aWFsLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvZXhwb25lbnRpYWwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NDlmNDRmOWM4NGM1NzZhODU4ODE1NDFiMGI0NzVkODhlYTcxYjkxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2V4cG9uZW50aWFsLmh0bWwKQEAgLTAsMCArMSwz
MyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVy
YXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFsyMywgMjRd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcm9wZXJhdG9yL2Zsb2F0X2NvbXBhcmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVyYXRv
ci9mbG9hdF9jb21wYXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUxMGY1MWY5YWVkNzMwZGRlMGUwYTM1
MThjOTM0MzA2NmUwZmNiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVy
YXRvci9mbG9hdF9jb21wYXJlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
U2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFszMiwgMzNdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2dlb21ldHJp
Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL2dlb21ldHJpYy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIwYmE3NjRkZWNhNDZhNWJiY2E2Mjg1Njk1MzcwNzY3MzZiMTk3YzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvZ2VvbWV0cmljLmh0bWwKQEAgLTAsMCAr
MSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJv
cGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citn
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFszMSwg
MzJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcm9wZXJhdG9yL2ludF9jb21wYXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0
b3IvaW50X2NvbXBhcmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGE0MjIyZTg2OWQyYTEwOWY5Y2JjZDQz
ZmI3ODBjZTNhNmIwMmRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJh
dG9yL2ludF9jb21wYXJlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFszMywgMzRdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL3NlbGVjdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL3NlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmZWE0MmQzYTQzM2U1MjE0MTViN2UwZTk2YjMzZjUxZmU2ZTU0NTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3Ivc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwz
MyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJvcGVy
YXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRvciBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citnb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMnKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4oZ2wsIFszNSwgMzZd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3No
YWRlcm9wZXJhdG9yL3NlcXVlbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3Ivc2Vx
dWVuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWI2MWVkNGE0OGNhMjRkOWI3ZTg0ODg2NjRjZDI4ZTli
YmM5OTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL3NlcXVl
bmNlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRl
ciBPcGVyYXRvciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRl
ck9wZXJhdG9yVGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JU
ZXN0cy5ydW4oZ2wsIFszNiwgMzddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL3VuYXJ5X29wZXJhdG9yXzAwLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyb3BlcmF0b3IvdW5hcnlfb3BlcmF0b3JfMDAuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZTgwYmNkNjIzZjdiYmMxNDZmMWI1NzAzNWZkODg5OGZiMGQyYjIyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcm9wZXJhdG9yL3VuYXJ5X29wZXJhdG9yXzAwLmh0bWwK
QEAgLTAsMCArMSwzMyBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSBzaGFkZXJvcGVyYXRvcl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBPcGVyYXRv
ciBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9y
VGVzdHMnKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5ydW4o
Z2wsIFswLCAxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJvcGVyYXRvci91bmFyeV9vcGVyYXRvcl8wMS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcm9wZXJhdG9yL3VuYXJ5X29wZXJhdG9yXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmZWUz
Mjc0OTNlZjdiNmE1ZDJjMjgzZjg0YjM4OTU2NWRkMGQyYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJvcGVyYXRvci91bmFyeV9vcGVyYXRvcl8wMS5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVyb3Bl
cmF0b3JfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgT3BlcmF0b3IgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZ29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzJyk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMucnVuKGdsLCBbMSwgMl0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hh
ZGVyb3BlcmF0b3IvdW5hcnlfb3BlcmF0b3JfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJvcGVy
YXRvci91bmFyeV9vcGVyYXRvcl8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiOGM1ZTVlMDNjZmI4NTMz
YmJiNWVlODA1Y2Y4YjkyMzQyYjdlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hh
ZGVyb3BlcmF0b3IvdW5hcnlfb3BlcmF0b3JfMDIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcm9wZXJhdG9yX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIE9wZXJhdG9yIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2dvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyT3BlcmF0b3JUZXN0cycpOworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnBhY2tpbmdm
dW5jdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnBhY2tpbmdmdW5jdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEwN2U5YjFkODE0YmZhNjQ5YjI2NWUwNzc5Mjc0ZTE5NTc3NTgyZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVycGFja2luZ2Z1bmN0aW9uLmh0bWwKQEAgLTAsMCAr
MSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIg
UGFja2luZyBGdW5jdGlvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Citnb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclBhY2tpbmdG
dW5jdGlvblRlc3RzJyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclBhY2tpbmdGdW5j
dGlvblRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zaGFkZXJwcmVjaXNpb25fZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFk
ZXJwcmVjaXNpb25fZmxvYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjc4NzMzNzE2NmM0M2Y2MTk3NWM2
ZGRkMGM0NjZmNWI5MmZjYzgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnBy
ZWNpc2lvbl9mbG9hdC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFByZWNpc2lvbiBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVy
UHJlY2lzaW9uVGVzdHMucnVuKGdsLCBbMCwgMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVycHJlY2lzaW9uX2ludC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnByZWNpc2lvbl9pbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzY1OTAxN2NmZTY0
ZmVjY2IxYTRmNGZiNzUzYTczMTc5OGE1YjRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3NoYWRlcnByZWNpc2lvbl9pbnQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBQcmVjaXNpb24gQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlNoYWRlclByZWNpc2lvblRlc3RzLnJ1bihnbCwgWzEsIDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnByZWNpc2lvbl91aW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVycHJlY2lzaW9uX3VpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk3
ZWQ3YjE5ZDQwMDg3ZTI2ZTBiZWEzYWRjMTg1NmFlZjEyNmE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcnByZWNpc2lvbl91aW50Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgUHJlY2lzaW9uIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclByZWNpc2lvblRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5ydW4oZ2wsIFsyLCAzXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJzdGF0ZXF1
ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyc3RhdGVxdWVyeS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMy
NWJiMGJmMjUwZTJhNjlkN2M5YjMzYWE4ZWNlOGYxMmU4OTAxZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyc3RhdGVxdWVyeS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFN0YXRlIFF1ZXJ5IENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworICAgIHRyeSB7
CisgICAgICAgIGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5ydW4o
Z2wpOworICAgIH0KKyAgICBjYXRjaChlcnIpCisgICAgeworICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZShlcnIpOworICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyc3RydWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyc3Ry
dWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxMGNlYjJkNWRkMjE4MGRmNGUxZTU0YmNmZGMzYTNjNzQy
ODE0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJzdHJ1Y3QuaHRtbApAQCAt
MCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNo
YWRlciBTdHJ1Y3QgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3RydWN0VGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclN0cnVjdFRlc3RzLnJ1bihnbCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJzd2l0Y2gu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJzd2l0Y2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTRmOTA0NGQ0
OTUyMTUzOWI1MDQwMWMxMThmNGU4NTYwNmI2ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3NoYWRlcnN3aXRjaC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFN3aXRjaCBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZTaGFkZXJTd2l0Y2hUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyU3dp
dGNoVGVzdHMucnVuKGdsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXhlbGZldGNoLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleGVsZmV0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Nzg3MDEyZDUxODBkYjdiNzc2NTg5ZTdlZWMxOGNhMmJiN2U1ZTlmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXhlbGZldGNoLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFk
ZXJ0ZXh0dXJlZnVuY3Rpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgVGV4dHVy
ZSBGdW5jdGlvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVy
ZUZ1bmN0aW9uVGVzdHMucnVuKGdsLCBbMTIsIDEzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4ZWxm
ZXRjaG9mZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXhlbGZl
dGNob2Zmc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQyZTBkZTUwNjI1ZTMxYjZlYmQ2MzQ2ZDk3Y2E2
YTljNGQ5N2VjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVu
Y3Rpb24vdGV4ZWxmZXRjaG9mZnNldC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVydGV4dHVyZWZ1bmN0aW9uX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFRleHR1cmUgRnVuY3Rpb24gQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnJ1bihnbCwg
WzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFk
ZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NjY4YjRkOWQ4NWRi
MjI2NDRlMTMxMDU3MjgxNzJkOWM5YmU5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcnRleHR1cmVmdW5jdGlv
bl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBUZXh0dXJlIEZ1bmN0aW9uIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5y
dW4oZ2wsIFswLCAxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZWdyYWQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZWdyYWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZWYzZDkyMTA0OGI1MDQ1M2U5YWYxNDU2MGVhNjMxZmRkYTA4NmIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlZ3JhZC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hh
ZGVydGV4dHVyZWZ1bmN0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFRleHR1
cmUgRnVuY3Rpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLnJ1bihnbCwgWzgsIDldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJl
Z3JhZG9mZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJl
Z3JhZG9mZnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMTYwODRiZjk1OTEyZjg1ZGIxY2RlOTc4MmJh
ODMxMmNlOGIyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1
bmN0aW9uL3RleHR1cmVncmFkb2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJ0ZXh0dXJlZnVuY3Rpb25fdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgVGV4dHVyZSBGdW5jdGlvbiBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMucnVuKGds
LCBbOSwgMTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlbG9kLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
c2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmVsb2QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjhiYWRl
NDk1MTQ0NDE4OWIzMTEyNTllN2RiMTAwOWI3NGI5ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlbG9kLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJ0ZXh0
dXJlZnVuY3Rpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgVGV4dHVyZSBGdW5j
dGlvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJl
RnVuY3Rpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMucnVuKGdsLCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmVsb2RvZmZz
ZXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZWxvZG9mZnNl
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzNzkyYzNkODM5YWQ0MDQyNzZkMGRmNDAyZTdkOGNhOWJkZjFi
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3Rl
eHR1cmVsb2RvZmZzZXQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcnRleHR1cmVmdW5jdGlvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFNoYWRlciBUZXh0dXJlIEZ1bmN0aW9uIENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ydW4oZ2wsIFs1LCA2XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFk
ZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZW9mZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRl
eHR1cmVmdW5jdGlvbi90ZXh0dXJlb2Zmc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiOWM2YWZmYTEz
MTBiOTFkZWIzMDY2ODcxMDk2MWY1YjQwNDMzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZW9mZnNldC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVydGV4dHVy
ZWZ1bmN0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFRleHR1cmUgRnVuY3Rp
b24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1
bmN0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlv
blRlc3RzLnJ1bihnbCwgWzEsIDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvai5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvai5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY3NmM3Y2RlMGNlMTMzMmM2Y2IwOWZmM2IzZjJhY2U2M2M4ZTMxNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmVwcm9qLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSBzaGFkZXJ0ZXh0dXJlZnVuY3Rpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFk
ZXIgVGV4dHVyZSBGdW5jdGlvbiBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hh
ZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9u
L3RleHR1cmVwcm9qZ3JhZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90
ZXh0dXJlcHJvamdyYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjg5NzhhYmJiZjU4OGViMDVhZWQzODUx
ZDQzOGYzODc3ZTljMTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1
cmVmdW5jdGlvbi90ZXh0dXJlcHJvamdyYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcnRleHR1cmVmdW5jdGlvbl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFNoYWRlciBUZXh0dXJlIEZ1bmN0aW9uIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ydW4o
Z2wsIFsxMCwgMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamdyYWRvZmZzZXQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZXByb2pncmFkb2Zmc2V0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDIxNjVlNGY4Nzk1NDZlNDdhNjBkZTUzZThmOTFhYzBkZWJhOTVh
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4
dHVyZXByb2pncmFkb2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJ0ZXh0dXJlZnVuY3Rpb25fdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgVGV4dHVyZSBGdW5jdGlvbiBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVp
Z2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMucnVuKGdsLCBbMTEs
IDEyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZXByb2psb2QuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9z
aGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZXByb2psb2QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTBm
Yzc2YjJhN2EyYmVmNGQxYThjMmNiMjM0ZWMzZDg0N2ViNmFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlcHJvamxvZC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hh
ZGVydGV4dHVyZWZ1bmN0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFRleHR1
cmUgRnVuY3Rpb24gQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVy
VGV4dHVyZUZ1bmN0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLnJ1bihnbCwgWzYsIDddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0dXJl
cHJvamxvZG9mZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnRleHR1cmVmdW5jdGlvbi90ZXh0
dXJlcHJvamxvZG9mZnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZDk3NjBhYjg4OGQ2NTQwNzc1NjA3
Y2Q3OTAzMjExOTU3ZjA5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4
dHVyZWZ1bmN0aW9uL3RleHR1cmVwcm9qbG9kb2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBzaGFkZXJ0ZXh0dXJlZnVu
Y3Rpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBTaGFkZXIgVGV4dHVyZSBGdW5jdGlvbiBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rp
b25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMucnVuKGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmVwcm9qb2Zmc2V0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvc2hhZGVydGV4dHVyZWZ1bmN0aW9uL3RleHR1cmVwcm9qb2Zmc2V0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2IzODNhNzJkYWNmZTdiY2IxNzcyYjNiMzlhZTVlYmNlYjUxYTA3MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJlZnVuY3Rpb24vdGV4dHVy
ZXByb2pvZmZzZXQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHNoYWRlcnRleHR1cmVmdW5jdGlvbl90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFNoYWRlciBUZXh0dXJlIEZ1bmN0aW9uIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ydW4oZ2wsIFszLCA0XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0
ZXh0dXJlZnVuY3Rpb24vdGV4dHVyZXNpemUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJ0ZXh0dXJl
ZnVuY3Rpb24vdGV4dHVyZXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDVhMjg1YjUxZWUyY2RhN2Ix
YWMyN2NlZWRiMWY2ODJhODc5NTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRl
cnRleHR1cmVmdW5jdGlvbi90ZXh0dXJlc2l6ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gc2hhZGVydGV4dHVyZWZ1bmN0aW9u
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgU2hhZGVyIFRleHR1cmUgRnVuY3Rpb24gQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlNoYWRlclRleHR1cmVGdW5jdGlvblRlc3RzLnJ1
bihnbCwgWzE0LCAxNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc3RyaW5ncXVlcnkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zdHJpbmdxdWVyeS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc5MDQ1ZGI1MTU3NWQ2NTlhNTBmMDY2ZjFkN2Q5YTJmM2FhMTJkNDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc3RyaW5ncXVlcnkuaHRtbApAQCAtMCwwICsxLDI0
IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFN0cmluZyBRdWVy
eSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTdHJpbmdRdWVyeVRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZTdHJpbmdRdWVyeVRlc3RzLnJ1bihnbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc3lu
Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkNGMwOWYwNTM0OWExODQxYzk1NDk0N2VkYzZkNzU0NjQ3NDVh
NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc3luYy5odG1sCkBAIC0wLDAgKzEsMzIg
QEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgRmVuY2UgU3luYyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZTeW5jVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKKworICAgIHRyeSB7CisgICAgICAg
IGZ1bmN0aW9uYWwuZ2xlczMuZXMzZlN5bmNUZXN0cy5ydW4oZ2wpOworICAgIH0KKyAgICBjYXRj
aChlcnIpCisgICAgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOworICAgIH0K
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8yZF9hcnJheV9jb21iaW5hdGlvbnNfMDAuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2NvbWJpbmF0aW9uc18wMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYyOTgxMzM1NWI2MjAwNzMxYTgwZDkxNzMzNTk5MTczMjE4MjkyMmMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9jb21iaW5hdGlvbnNfMDAu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2ws
IFs1OSwgNjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfY29tYmluYXRpb25zXzAxLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9jb21iaW5hdGlvbnNfMDEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmQwNGNkYjZlYmNjOGU4ZmQ4MWFhNWVlMjhkNjMyNDEyMjA5ZTMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfY29tYmlu
YXRpb25zXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMucnVuKGdsLCBbNjAsIDYxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2NvbWJpbmF0aW9uc18w
Mi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfY29tYmluYXRpb25z
XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNmMzgyNmQ1ZWM5ZWEyMDYyOGJiOWQ0YjhkMWU4NWJjYmYx
YjRlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Fy
cmF5X2NvbWJpbmF0aW9uc18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzYxLCA2Ml0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9jb21i
aW5hdGlvbnNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Nv
bWJpbmF0aW9uc18wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZTIzZDJhN2QxMGMxN2MxMGZkY2RhYTg4
OWVkMDgwNjJjMTkzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8yZF9hcnJheV9jb21iaW5hdGlvbnNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs2MiwgNjNdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRf
YXJyYXlfY29tYmluYXRpb25zXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8y
ZF9hcnJheV9jb21iaW5hdGlvbnNfMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmQxNTFmYjE3MzYxYmY4
NjNjNWU2ZDA0NDBlNTI1Yzk5NDQ2Njk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfY29tYmluYXRpb25zXzA0Lmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmls
dGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNjMsIDY0XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmls
dGVyaW5nLzJkX2FycmF5X2NvbWJpbmF0aW9uc18wNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvMmRfYXJyYXlfY29tYmluYXRpb25zXzA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZlOGQ3
MWQxODg1MzdhYTZjNjU0NDZiNTcwZWVjMDc0YjVhYWU2MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2NvbWJpbmF0aW9uc18wNS5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
dGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVy
aW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIg
aGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzY0LCA2
NV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRzXzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRzXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M4MjJi
MmY1NzhjYmNiYzY3ZTVhN2MyNDhmMjdhZDdjOTVkYjNmMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDAuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs0NCwgNDVdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmaWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0c18wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0c18wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYzIxOGE0NmQ0
NDE5Yjk5NDVkOTg3NWY0YWIyODcwYThhZTk5MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRzXzAxLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmls
dGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNDUsIDQ2XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmls
dGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nLzJkX2FycmF5X2Zvcm1hdHNfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIzYjY3Mzc1MTBkOGVj
YWNjNjBkMmQyMzg0NWFiM2I4YTJiYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0c18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmlu
Z190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzQ2LCA0N10pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8yZF9hcnJheV9mb3JtYXRzXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8y
ZF9hcnJheV9mb3JtYXRzXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNhY2IxMWExOTAxMzhiOTAyNDky
YmYwNzdhZDYzYmQ4M2M4ZmVkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs0NywgNDhdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRf
YXJyYXlfZm9ybWF0c18wNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJy
YXlfZm9ybWF0c18wNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNmY3ZTllZDI2ZGI4NTViOTFmNTkzMjIz
YTkwMmU0YzI0ZTkwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8yZF9hcnJheV9mb3JtYXRzXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNDgsIDQ5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5
X2Zvcm1hdHNfMDUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Zv
cm1hdHNfMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWZjM2JkNDhkMzcxNmI0OGRiYTM2NDg3NTVmNmIy
NzJmMTM2NGIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
MmRfYXJyYXlfZm9ybWF0c18wNS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzQ5LCA1MF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3Jt
YXRzXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRz
XzA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1ZTE2OGI5OGQwYWM5MzliYmRmNzQ2MDljNDgwZTEwMDAw
ZDlhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Fy
cmF5X2Zvcm1hdHNfMDYuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cy5ydW4oZ2wsIFs1MCwgNTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0c18w
Ny5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0c18wNy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ0YjU5ZGUxMmE5NWNjNzEzNTU5MzhkZWRjMjM1OGYyY2Q4MWYwNWEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9m
b3JtYXRzXzA3Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMucnVuKGdsLCBbNTEsIDUyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDguaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMjFmMGY3NGU4MzUzMzNlYzQ4MTliYjQzODFkNDNjZmEwMGRkZTQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfZm9ybWF0
c18wOC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1
bihnbCwgWzUyLCA1M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRzXzA5Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9mb3JtYXRzXzA5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjMwNmY3MGQ4MDYyNTQwMWVlMDA4ZWNjN2U0MWUzNzM4NjA5Mzc1ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X2Zvcm1hdHNfMDku
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2ws
IFs1MywgNTRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlfc2l6ZXNfMDAuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X3NpemVzXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U3
YzA4YzU3YmY3YjJjYjllMDY4ZDBhNTAzN2Q1YzQ4MGFlMzRlYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X3NpemVzXzAwLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcg
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWln
aHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNTQsIDU1XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzJkX2FycmF5X3NpemVzXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8yZF9hcnJheV9zaXplc18wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4M2FkMjFmYzMwZjU0
YTIwZTc0ZTZhNDY4YmQxZDYxOWY4OWRlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9zaXplc18wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmlu
Z190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzU1LCA1Nl0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8yZF9hcnJheV9zaXplc18wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRf
YXJyYXlfc2l6ZXNfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzkzMGQ3MWMwYjAxOWViN2E0ODZhYjY1
ZmEzMmYwNDFmYmRlMTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvMmRfYXJyYXlfc2l6ZXNfMDIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs1NiwgNTddKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfYXJyYXlf
c2l6ZXNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X3NpemVz
XzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEzMTYxNGUxMDUzMjUxYzE2M2E4YzgxZDQyZTNmYWVhYTg5
Zjc1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Fy
cmF5X3NpemVzXzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMucnVuKGdsLCBbNTcsIDU4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2FycmF5X3NpemVzXzA0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9zaXplc18wNC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY1MWU5N2QwNGIwOTgxYTE4ODNkNWY4YTA3MWU2NjExMzUxNmM2YzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9hcnJheV9zaXplc18w
NC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihn
bCwgWzU4LCA1OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9jb21iaW5hdGlvbnNfMDAuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2NvbWJpbmF0aW9uc18wMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1OTRjODFkZjJkZTZiOWJiOTg5ZWE5NjhlZjBhYzVlNmZlNDQ2MjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9jb21iaW5hdGlvbnNfMDAuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRl
cmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAi
IGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxNiwg
MTddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmaWx0ZXJpbmcvMmRfY29tYmluYXRpb25zXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8yZF9jb21iaW5hdGlvbnNfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODc1ZGRj
MTI0M2ZiYzVlMTI5NjY3ZWRiZmQ5ZmQ0NGE3NDJkYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfY29tYmluYXRpb25zXzAxLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
ZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9
IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbMTcsIDE4XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzJkX2NvbWJpbmF0aW9uc18wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvMmRfY29tYmluYXRpb25zXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTExNTBiZTA4NGY0ZmZm
YjI2ZjhmZDc2YzQ5YzVmNDY3NzJkMGE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nLzJkX2NvbWJpbmF0aW9uc18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmlu
Z190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzE4LCAxOV0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8yZF9jb21iaW5hdGlvbnNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJk
X2NvbWJpbmF0aW9uc18wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMmQwZDQ0ZDlhYmQ1OTFmNTRmMmU0
Y2E0YWFmNWZjM2QxZDQ3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8yZF9jb21iaW5hdGlvbnNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxOSwgMjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfY29t
YmluYXRpb25zXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9jb21iaW5h
dGlvbnNfMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTRmZmMwNGY2ZDU3NTc0ZDgwMTI2Zjk2ZGQzN2Fj
OTUyN2EwZTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
MmRfY29tYmluYXRpb25zXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmls
dGVyaW5nVGVzdHMucnVuKGdsLCBbMjAsIDIxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2NvbWJpbmF0aW9u
c18wNS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfY29tYmluYXRpb25zXzA1
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDI5YWU2ZTNlMWEwZDA1NGZmN2ZkYWQ5ZmFlMzk5NDJiYWFmZjFl
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2NvbWJp
bmF0aW9uc18wNS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzLnJ1bihnbCwgWzIxLCAyMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzAwLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzAwLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGI1OGM2Zjc4NzUzZjdjYzAzNWUzMWRjNzZjMDg3MTk4Zjc2YjMyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDAuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzJkX2Zvcm1hdHNfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjBkNDE5ZDNhYmJmNDI2Y2NmZWNkNDgz
NjhjYzA5NjAxMWUwZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvMmRfZm9ybWF0c18wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzEsIDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18wMi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18wMi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2NzAzMTM4NDU0NjYyNDI1Njg4ZWYzYzc2MWIyMzJhZjU5NzM1MDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzAyLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0
ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAw
IiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbMiwg
M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8yZF9mb3JtYXRzXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxMGQyZGI3NTlmZWJlMzQy
MzlmMTcxOTgzZmM2Y2I3YmRhN2M0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFszLCA0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1h
dHNfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTIyN2MxZGQ0YjFjOWQ1NWRkMjQ3ZTZiNzUzNmI5YTk5YmMxZGQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18w
NC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihn
bCwgWzQsIDVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18wNS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzOTdmYmY2YjIz
NjY2NDQzNGU0N2M1NzgzMmIzYWYyZDU3ZWI5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzA1Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5n
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8y
ZF9mb3JtYXRzXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRz
XzA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ViNDBkMTQzMzRlMDZlYjQ1MmIwOGEwOTcyNmM0ZjU4NjZl
ZWFjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zv
cm1hdHNfMDYuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmls
dGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0
cy5ydW4oZ2wsIFs2LCA3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDcuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM2
YWM3YzVjYWNiNTJmM2Q2MTc3Zjc2ZDQ3YmFiMjU2MWNmMTg5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfZm9ybWF0c18wNy5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZp
bHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIz
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzcsIDhdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvMmRfZm9ybWF0c18wOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRf
Zm9ybWF0c18wOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMjlmZTcyM2NjZDQ2YzM2MjBlNWQ1NTg1N2I1
NzBiZmFhZGZjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8yZF9mb3JtYXRzXzA4Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMucnVuKGdsLCBbOCwgOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzA5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9mb3JtYXRzXzA5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGFlODIyNzY0NzVmODUwMzBiYzQ2ZmQ1MzQyMzQ0NGE3NjRkNmQ0NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX2Zvcm1hdHNfMDkuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmlu
ZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhl
aWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs5LCAxMF0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8yZF9zaXplc18wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJp
bmcvMmRfc2l6ZXNfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDJlMmQ3MzZhMmY5OTQ4ZmU4MjZiNGY1
NDQ1MzA2YTE2NmIyYTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvMmRfc2l6ZXNfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMCwgMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfc2l6ZXNfMDEuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX3NpemVzXzAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODdiYzNmOWE2YWFmM2QzYjNjYWQ4Yzk0MDI4NDZkOTYzY2VlYWYxMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX3NpemVzXzAxLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcg
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWln
aHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbMTEsIDEyXSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzJkX3NpemVzXzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8yZF9zaXplc18wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YTljOTAxMDI5NDllOWFiN2RkNTdkMmZj
OTRjYWYxM2NhNTc3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8yZF9zaXplc18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRl
cmluZ1Rlc3RzLnJ1bihnbCwgWzEyLCAxM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9zaXplc18wMy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfc2l6ZXNfMDMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zODMxZTU4YTJlZmIwMmE4ZDU5ZDMxNTE2MmI0M2QwZDIyOWExMzcwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvMmRfc2l6ZXNfMDMuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMywgMTRdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmaWx0ZXJpbmcvMmRfc2l6ZXNfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzJkX3NpemVzXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjZTVmNmIxMjM1MDAzNWJmODAyZmU3ZTIz
YzdlZDdlODA3Y2E0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nLzJkX3NpemVzXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMucnVuKGdsLCBbMTQsIDE1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzJkX3NpemVzXzA1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9zaXplc18wNS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0ZjFiNjVhMmY2MzQxYzY0MTEyN2IzN2M0NmU3OWJiN2MzMjJiYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8yZF9zaXplc18wNS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0
PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzE1LCAxNl0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmls
dGVyaW5nLzNkX2NvbWJpbmF0aW9uc18wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MzNmZWZmODBmY2Zh
NTZhZDFlOThjMTVjMTc5MmQ2ZDA5Yjg3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJp
bmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs4MCwgODFdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJp
bmcvM2RfY29tYmluYXRpb25zXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8z
ZF9jb21iaW5hdGlvbnNfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDExOTNkNWVjMTYzYzkyYWMwZDYz
MzQ4ZTg2OGY1NWY2ZGYzNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbODEsIDgyXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Nv
bWJpbmF0aW9uc18wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmlu
YXRpb25zXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkxM2FiMzVlYjNlNjFjOWZmMzNiOWVlYmNhNmIz
YjgzYWYxZmYwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzNkX2NvbWJpbmF0aW9uc18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzgyLCA4M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlv
bnNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18w
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI2MGFmMGVhMjFiNjE4MTg5NTlmZDVhZWM2ZjdiZDUwODk1YWEz
ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21i
aW5hdGlvbnNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5ydW4oZ2wsIFs4MywgODRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzA0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZTQ4OTIyNDlhYjYxY2FmMDg5YTgxODExZjM2NTBlNzUxMTM5ZjJkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25z
XzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVu
KGdsLCBbODQsIDg1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18wNS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzA1Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDg3NTg0Njg0ZjZkMmE0ODQ2YmRiNDI3MDVkZGM5Y2NlNzlhYjJhNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18wNS5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmls
dGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzg1
LCA4Nl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDYuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18wNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzJj
ODA4Y2I3YzA0YTQzOTVkMDM0MDZhNDcyZTA1YjVmM2YyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDYuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs4NiwgODddKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzA3Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMDcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWEyYmU5NTFiM2E0
NDhjYTdjNWVjNzA1MzA4YWUxYTViYTBhMWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzA3Lmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVy
aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbODcsIDg4XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nLzNkX2NvbWJpbmF0aW9uc18wOC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
M2RfY29tYmluYXRpb25zXzA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyYTI1YWI3OTQ5YzgyNjFlOWFl
MGFhMDUxNDU4ZTA0ODE4MDg5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18wOC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzg4LCA4OV0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9j
b21iaW5hdGlvbnNfMDkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJp
bmF0aW9uc18wOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNGMzYzUwZDBmZmYwYzY0ZjBkN2Q3OWFkMWIw
NzNmZWVmNGFlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8zZF9jb21iaW5hdGlvbnNfMDkuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs4OSwgOTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRp
b25zXzEwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNf
MTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zODcyMTUwYjc1YTNjNjM3MWU1ZjVhYWJjODhiNzE2MzQwNGIz
MzUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29t
YmluYXRpb25zXzEwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMucnVuKGdsLCBbOTAsIDkxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18xMS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzExLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzA3NjNhMmVhN2ViMzlmOWE4Y2FhMzU4YTkyMmVmNTBjM2Y4ZDNjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9u
c18xMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1
bihnbCwgWzkxLCA5Ml0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18xMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyNTJmNTI5ZTQ0NGUzN2EwYjk3YzQwMWMzOGFhZDg1MGEwMGE3YTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTIuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZp
bHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIz
MDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs5
MiwgOTNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzEzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzNl
OWIxMzVlYTJhNDYyNDUyMWZlODA3ZTM4NjZiYTQzYzIzODU4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzEzLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcg
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWln
aHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbOTMsIDk0XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18xNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzE0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjYjBkNzU3MzQz
NTY0ZjAyZTcxMTU5NzkyZDhhYTY5MzE3NmQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18xNC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRl
cmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzk0LCA5NV0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8zZF9jb21iaW5hdGlvbnNfMTUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzNkX2NvbWJpbmF0aW9uc18xNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNDU5MGRkNDE5MjQ2MDljODIx
YTE2YWZiYjRhOGIyZjZlMDk4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs5NSwgOTZdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2Rf
Y29tYmluYXRpb25zXzE2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21i
aW5hdGlvbnNfMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDgzOGZjM2Y2YzIyNzgzNzI5MjYxODUzNjk4
NzI0NzIzYzZiMDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJp
bmcvM2RfY29tYmluYXRpb25zXzE2Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbOTYsIDk3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0
aW9uc18xNy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25z
XzE3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlOTI0ZGFhZWNlYzA3NDg1MzlkOGNkMzZhOTlmNDlhYTAy
ODBjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Nv
bWJpbmF0aW9uc18xNy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzLnJ1bihnbCwgWzk3LCA5OF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTgu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18xOC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljZDc5Y2ViNWIxZjllNDdjZTQxMmNjNmZhMWFlMjBmZGIxMjFhMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlv
bnNfMTguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5y
dW4oZ2wsIFs5OCwgOTldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzE5Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMTkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMjI0ODIyYzYyM2YzYzNhOTk0NmFlNzk0ZjgwMTMwOWVmODQzNDAxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfY29tYmluYXRpb25zXzE5Lmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBG
aWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBb
OTksIDEwMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjAuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yMC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJj
OTU5YTgxMWE5NjViYTNlZmUxMTViYjI2ZTg3MmE2M2I0NDI2M2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjAuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmlu
ZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhl
aWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDAsIDEw
MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjEuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YzZmMGEz
ZDZiMzhiY2YyMTNjOGQwMmZiYTk3MDE2ZjE4MjM2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjEuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVm
aWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0i
MzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDEsIDEwMl0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmls
dGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ODBlM2EzYTk0NWE2
NGMwMGFiZWI0MzhkOTk5OThlNWJmMzU3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjIuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJp
bmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDIsIDEwM10pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8zZF9jb21iaW5hdGlvbnNfMjMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzNkX2NvbWJpbmF0aW9uc18yMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YzY0N2FmZjBiMTViN2JmYjcw
ZjFmMThmMmU0YTY0NWZmODAxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDMsIDEwNF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8z
ZF9jb21iaW5hdGlvbnNfMjQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Nv
bWJpbmF0aW9uc18yNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlODE2MzBkNDIyNmRiOTRjMThlM2RlN2Ji
YWNlY2RmNDNiMjU5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8zZF9jb21iaW5hdGlvbnNfMjQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDQsIDEwNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21i
aW5hdGlvbnNfMjUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0
aW9uc18yNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMGNmZjM3MzcxOTU4ZGY5MTNmZmU1ODRkZDZjMDZj
NjA5N2QxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8z
ZF9jb21iaW5hdGlvbnNfMjUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDUsIDEwNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlv
bnNfMjYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18y
Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEzNDIzZGNiYzQ4NDAwY2JkNTg1ZDRlY2Q3OWRkNjgyN2Q3ODU3
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21i
aW5hdGlvbnNfMjYuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5ydW4oZ2wsIFsxMDYsIDEwN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yNy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA3MWMzNjY3MmUyZDM3NzAyZTI2M2QyNGIyOTI2ZTIzMGRmYTliODMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlv
bnNfMjcuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5y
dW4oZ2wsIFsxMDcsIDEwOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjguaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yOC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA3ZDE3ZWRjZjQ2N2JkZmE5YzY0NmE0MjZiYzgxZWRmNjA3OTk5YmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjgu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2ws
IFsxMDgsIDEwOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjkuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18yOS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNkN2Y2M2UxNGNjYzk2MmY3MzUxZjY3MjE3MzlmN2M4YTlkYjY1YTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMjkuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRl
cmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAi
IGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMDks
IDExMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzAuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18zMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2OTg4
YmQwNDYxYzAxNzFjMTk2MTJmNzY5NjA0MWNmMzk5OGFlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzAuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMTAsIDExMV0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9uc18zMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NmFjZTM5MTc3
OGY1MjljYzk0YTVhMjVkMDU5ZmYyYWJiMDI0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzEuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0
ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMTEsIDExMl0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nLzNkX2NvbWJpbmF0aW9uc18zMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYTBhZTQzMmI0ZThmMjhh
OWExM2Y5Nzc4NDgzYTY5OTRmYmQwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMTIsIDExM10pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8zZF9jb21iaW5hdGlvbnNfMzMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNk
X2NvbWJpbmF0aW9uc18zMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5Y2IyOWZiNGExMTA3Yzg4ZjAwZWRi
MmI5NTQ1NjMzZDY4OGJjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8zZF9jb21iaW5hdGlvbnNfMzMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMTMsIDExNF0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9j
b21iaW5hdGlvbnNfMzQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJp
bmF0aW9uc18zNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZmIxMjI0MTQ4MzIwNmVmNzcwMjBiODcyNmU5
ZjdjNjRkMzM4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8zZF9jb21iaW5hdGlvbnNfMzQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsxMTQsIDExNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9jb21iaW5h
dGlvbnNfMzUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2NvbWJpbmF0aW9u
c18zNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MTFmNjhlMGY0NDUxMDJlM2VlNGIwNDZkN2JhZmQyYzVi
ZTI2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9j
b21iaW5hdGlvbnNfMzUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cy5ydW4oZ2wsIFsxMTUsIDExNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzAwLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzAwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWI0MWNhMjM3ZDY1NTdmY2M0OTczZTQwNDQ1YmM2ZTQ2NmZiNGQxZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDAuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRl
cmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAi
IGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs2NSwg
NjZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9ybWF0c18wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvM2RfZm9ybWF0c18wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MDU5ZjdlMzk4NDliYWQ3
ZWYyZmM3NWJiOGQ0OGYwOTYwNjFmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNjYsIDY3XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zv
cm1hdHNfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NTI5YWVjODMwMjI2ZmNjYTFjZjdjMGY0NjJlZDIxZTY2YTY5ZGMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9ybWF0
c18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1
bihnbCwgWzY3LCA2OF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzAzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODYw
Y2VlN2MwMDUzZGM2MGM0Mjc5OGFlM2UyNzViZjYxMzc4NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDMuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0
ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs2OCwgNjldKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvM2RfZm9ybWF0c18wNC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2Rf
Zm9ybWF0c18wNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYjBhYWIxYWMxN2RmZGQ4YTFhNjYxZDMxNDg4
OTdjY2MwOTBhM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8zZF9mb3JtYXRzXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMucnVuKGdsLCBbNjksIDcwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYmE2ZDBmNjY2MjRmM2FiMDExYTM4Yjg5YjYxZTY2ODA0NzMxMDk4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9ybWF0c18wNS5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
dGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVy
aW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIg
aGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzcwLCA3
MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRzXzA2Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy8zZF9mb3JtYXRzXzA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwNmMzYzFlNGU3MjUwODc1
OGI4MTA4NWUzMDcwYzdkNzg0NjE5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDYuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs3MSwgNzJdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9y
bWF0c18wNy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9ybWF0c18wNy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyN2NlYmEwYzgyZGFmOTRkYjQyNDQ5NTdhMzZmOGQwZDUyMTYzNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9mb3JtYXRz
XzA3Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVu
KGdsLCBbNzIsIDczXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nLzNkX2Zvcm1hdHNfMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTVkMzE3
ZWNiZWVlNDNhYTk5ODk2M2UwMjdhYWQ0MWQxNTY0YjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2RfZm9ybWF0c18wOC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRl
cmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzczLCA3NF0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy8zZF9mb3JtYXRzXzA5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9m
b3JtYXRzXzA5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJlN2I0MTQxOTRkYWZhZjBlMjYxNzZhY2JiYTNj
MTA5NmNiZmNkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzNkX2Zvcm1hdHNfMDkuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cy5ydW4oZ2wsIFs3NCwgNzVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2Rfc2l6ZXNfMDAuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX3NpemVzXzAwLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2ZmODE3MDI1OGVmYzI0YjMwMjhiNTM5MWU2OGM4YWMxMjBmOGQ5ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX3NpemVzXzAwLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
ZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9
IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNzUsIDc2XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nLzNkX3NpemVzXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8z
ZF9zaXplc18wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNjNhZTk0MTM5ZWExZTczZTY3MWRiODRkZTg5
NGU2Njc2OTFkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy8zZF9zaXplc18wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzLnJ1bihnbCwgWzc2LCA3N10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9zaXplc18wMi5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2Rfc2l6ZXNfMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
N2U3YTMwYzU1ZDUzNTg4NmNmNjMwNmE4ODQ5YjU5YTM3NDBhOGQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvM2Rfc2l6ZXNfMDIuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVm
aWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0i
MzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs3NywgNzhdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvM2Rfc2l6ZXNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNk
X3NpemVzXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg4OGRiNzE0NWFjYTBlMjA5ZTU1YmU0Njc0ZjQ3
MmNkOGQ2M2QyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
LzNkX3NpemVzXzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMucnVuKGdsLCBbNzgsIDc5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nLzNkX3NpemVzXzA0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9zaXplc18wNC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQx
ZjRhNWY4Njk0ZjQzYzJlNDZmOWMzZWZjOGYxNTc1Yjg4YTNkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy8zZF9zaXplc18wNC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZp
bHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIz
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzc5LCA4MF0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy9jdWJlX2NvbWJpbmF0aW9uc18wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvY3ViZV9jb21iaW5hdGlvbnNfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWU1OWVlYTAyOGE4
ZWQ1NjBkNjJhMjlmZGRjZDllNzNhOTdmYzJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9jb21iaW5hdGlvbnNfMDAuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0
ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFszNywgMzhdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0
ZXJpbmcvY3ViZV9jb21iaW5hdGlvbnNfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nL2N1YmVfY29tYmluYXRpb25zXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgzM2YwZjg0ZWYzMmZl
NDZlY2QzZTA5MGZmZWI2M2NlMDc2MWI5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nL2N1YmVfY29tYmluYXRpb25zXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVy
aW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbMzgsIDM5XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVy
aW5nL2N1YmVfY29tYmluYXRpb25zXzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy9jdWJlX2NvbWJpbmF0aW9uc18wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYzAwMTc4NjQwYWY5Njdm
NmU0NWQxMmI4MTliMTRhYWZiOGFjZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy9jdWJlX2NvbWJpbmF0aW9uc18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmlu
Z190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzM5LCA0MF0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy9jdWJlX2NvbWJpbmF0aW9uc18wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
Y3ViZV9jb21iaW5hdGlvbnNfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODBiYzAwZDgwNjRmMGM2YjQ1
ZGQ5ZWVlMmYyYzE0Y2YxODQ2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmaWx0ZXJpbmcvY3ViZV9jb21iaW5hdGlvbnNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFs0MCwgNDFdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
Y3ViZV9jb21iaW5hdGlvbnNfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1
YmVfY29tYmluYXRpb25zXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ2OWFjODY3YjliNTM3YjM2YzRl
Y2IxMDk5ZGFjNWNhMzA0MDI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
ZmlsdGVyaW5nL2N1YmVfY29tYmluYXRpb25zXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNDEsIDQyXSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1
YmVfY29tYmluYXRpb25zXzA1Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJl
X2NvbWJpbmF0aW9uc18wNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNmJiYjc1NWM1ZDkwZDQzOWQxMGQ5
YzBlNWRmOWU1ODg4Y2ZjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy9jdWJlX2NvbWJpbmF0aW9uc18wNS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzQyLCA0M10pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJl
X2Zvcm1hdHNfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0
c18wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMjg4NzRmNzVlYTNmZWQ0NDI5ODQwYjZhNjAyMGI2YWEx
NWQ3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJl
X2Zvcm1hdHNfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5ydW4oZ2wsIFsyMiwgMjNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzAxLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX2Zvcm1hdHNfMDEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOWM5NjZlNjgwZGQwNzM4N2ZiOGYyMjU5ZjQyNmZkYjc5YWZhMzM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzAxLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0
ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAw
IiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbMjMs
IDI0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY5YzI1NmJlZDdh
ZDYxOGVmNzAxN2Y5ZGM3ZDZhYWRlMTFhZTNjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmlu
Z190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzI0LCAyNV0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy9jdWJlX2Zvcm1hdHNfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVf
Zm9ybWF0c18wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZjc4YTQ2Y2Q4MzYzOTliN2YzMDBhZTI1MDFm
MDU4NjhiNDhlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmlu
Zy9jdWJlX2Zvcm1hdHNfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cy5ydW4oZ2wsIFsyNSwgMjZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzA0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX2Zvcm1hdHNfMDQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjA3ZGVhNjUyNzdmOGU0ZmVlZDg3ZTJmODA4MWVkZjQ1NDM1MTAwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzA0
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGds
LCBbMjYsIDI3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wNS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdjY2Iy
YzE3MTdlZWMyZjA0OTQxNTMxOGE0NjZiMTU0MTUyNzgzNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wNS5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZp
bHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5nIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIz
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzI3LCAyOF0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy9jdWJlX2Zvcm1hdHNfMDYuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5n
L2N1YmVfZm9ybWF0c18wNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OTY3MDdiYWEwNDJiMWY4ZTM5YjA4
NTU3NTliYjI3NWVlMjRjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZp
bHRlcmluZy9jdWJlX2Zvcm1hdHNfMDYuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFsyOCwgMjldKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3Jt
YXRzXzA3Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX2Zvcm1hdHNfMDcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNjgzZTcxZWE2ZTU4N2RiY2IzYzdlOGYzNDJlOWRiZTM4ZjQxNDQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3Jt
YXRzXzA3Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
VGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRl
cmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMu
cnVuKGdsLCBbMjksIDMwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wOC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9mb3JtYXRzXzA4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDY5ZGNmYWU2NDY3ZTBmZjJkZDQyZjQwNjcwZTFjMDM0Zjc5NTNhNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfZm9ybWF0c18wOC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4
dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmlsdGVyaW5n
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVp
Z2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzMwLCAzMV0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy9jdWJlX2Zvcm1hdHNfMDkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmls
dGVyaW5nL2N1YmVfZm9ybWF0c18wOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzNGU1MWU4ZjQxZTI1YTNh
NzUyMzg0YzIxMGI2NmU4NDZhN2U0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZpbHRlcmluZy9jdWJlX2Zvcm1hdHNfMDkuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFszMSwgMzJdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3Vi
ZV9ub19lZGdlc192aXNpYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJl
X25vX2VkZ2VzX3Zpc2libGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzFkZjNiYjk4NGExZTkxN2M2NDE1
Y2I2ZjIxMDA0NmZkYTUzODA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvY3ViZV9ub19lZGdlc192aXNpYmxlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMucnVuKGdsLCBbNDMsIDQ0XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1
YmVfc2l6ZXNfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfc2l6ZXNf
MDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZTRmZTRkZmE0OTg1ZGUxYTgzNmMwNTVjYjNmMDZmZTcwMzdi
OGNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9z
aXplc18wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRleHR1cmUgRmlsdGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0
ZXJpbmdUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3Rz
LnJ1bihnbCwgWzMyLCAzM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX3NpemVzXzAxLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX3NpemVzXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRk
YjNmYzA0YzU0NjM5ZWIzMmFiYmIzNDBmNGFmNTYwYWY2MjFjZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfc2l6ZXNfMDEuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVm
aWx0ZXJpbmdfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0i
MzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFszMywgMzRdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVm
aWx0ZXJpbmcvY3ViZV9zaXplc18wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcv
Y3ViZV9zaXplc18wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmN2FjNzY0NGRlMWRkOTJlZGI5YjE3MWVi
ZGQzMGRhZDFkMmU2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZpbHRl
cmluZy9jdWJlX3NpemVzXzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZmlsdGVyaW5nX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVGV4dHVyZSBGaWx0ZXJpbmcgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZpbHRlcmluZ1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRmls
dGVyaW5nVGVzdHMucnVuKGdsLCBbMzQsIDM1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfc2l6ZXNfMDMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZmlsdGVyaW5nL2N1YmVfc2l6ZXNfMDMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YjhkOTRjNTFmZGZlZGM1MGQ4M2ExNWYwMWUyMDNhZTQ4ZGU3OTQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmaWx0ZXJpbmcvY3ViZV9zaXplc18wMy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZWZpbHRlcmluZ190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgRmls
dGVyaW5nIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLnJ1bihnbCwgWzM1
LCAzNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZpbHRlcmluZy9jdWJlX3NpemVzXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZpbHRlcmluZy9jdWJlX3NpemVzXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEyNjBjNzUxZjhhNzNh
MzhjNWMzN2QzMzVkYjc3YmRhNGY2MzhiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZmlsdGVyaW5nL2N1YmVfc2l6ZXNfMDQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmaWx0ZXJpbmdfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIEZpbHRlcmluZyBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ydW4oZ2wsIFszNiwgMzddKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvY29tcHJl
c3NlZF8yZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvY29tcHJlc3NlZF8yZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhmMTA0ZjBmZmMxY2IxZWJiN2JkZmZmYzQyODUxNGU1ZjNkZWJkZjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9jb21wcmVzc2VkXzJkLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzM2LCAz
N10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZvcm1hdC9jb21wcmVzc2VkX2N1YmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9y
bWF0L2NvbXByZXNzZWRfY3ViZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZTdmMjA1NWUyYzc4NmI5NmJi
ZDc4ZmNiY2VmYzZhMzBiNDAyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC9jb21wcmVzc2VkX2N1YmUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
Rm9ybWF0VGVzdHMucnVuKGdsLCBbMzcsIDM4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX2Fy
cmF5X25wb3RfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJk
X2FycmF5X25wb3RfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDg2N2Q4N2ExZjE4ZmVmYjE2ZmI1ZmYz
ZGU1ZDFkYzcyMDQxY2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3Jt
YXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfbnBvdF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFsyMywgMjRdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29s
b3JfMmRfYXJyYXlfbnBvdF8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRf
Y29sb3JfMmRfYXJyYXlfbnBvdF8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMTQzZWFmNzQzMWY0NGE1
NTZjMDAwZDdhMzIxMzIwMzlkZjNiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9hcnJheV9ucG90XzAxLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9y
bWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzI0LCAyNV0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9z
aXplZF9jb2xvcl8yZF9hcnJheV9ucG90XzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1h
dC9zaXplZF9jb2xvcl8yZF9hcnJheV9ucG90XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJhOGIyYzk4
ZTZlNmMzMGVkMDA2NDEzYmUyNjc0YTVlNDJlZDdmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX2FycmF5X25wb3RfMDIuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRp
b24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWln
aHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbMjUsIDI2XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
Zm9ybWF0L3NpemVkX2NvbG9yXzJkX2FycmF5X25wb3RfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX2FycmF5X25wb3RfMDMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NWZlYTY5MDdkMGQ1ZWRiMTA3ZTIyZjc3MWUxYjlhM2Q3MzViNmZkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfbnBvdF8wMy5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3Bl
Y2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIz
MDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFsyNiwg
MjddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfcG90XzAwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9hcnJheV9wb3RfMDAuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NzVmYjA4OWI5NjhkOGMzZTFlNGJjMjg4ZTEyZTFhYmEwNTg0NDRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfcG90
XzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwg
WzE5LCAyMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9hcnJheV9wb3RfMDEuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX2FycmF5X3BvdF8wMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExMjY3NjY5YzFhOWRlOTE5YjFlNThlOTNjMDkzMGVlYzc3MzFkZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9hcnJh
eV9wb3RfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZv
cm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVu
KGdsLCBbMjAsIDIxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX2FycmF5X3BvdF8wMi5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfcG90XzAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjYxOTBhNGY3OTQzNDk3NDkzYzYxMWI3N2IwYzkxZTkwNTEwOGZlZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJk
X2FycmF5X3BvdF8wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0
cy5ydW4oZ2wsIFsyMSwgMjJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfMmRfYXJyYXlfcG90XzAz
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9hcnJheV9wb3Rf
MDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZDQyODA4MjUzM2M0NzFiNGFiM2U5YmJlMTgxZGQwN2FkZGQ2
MTBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29s
b3JfMmRfYXJyYXlfcG90XzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1h
dFRlc3RzLnJ1bihnbCwgWzIyLCAyM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAwLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzBjZWExNmQ4NzA1OThkOTViMTYxMjY4OTg1M2UwMDViNjAxZTIyNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJk
X25wb3RfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZv
cm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVu
KGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAxLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2EzODMyNWEzY2MzMjZhOWI5NDM4MDc5Y2M3ZjZhMGNkYzZjZDAwMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX25wb3RfMDEuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNp
ZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAw
IiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbOCwgOV0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRjM2UwZmJj
ZmE1MWZkZDBmNzJjYTU4NjVjNjIwYTU2ODdlMWFkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX25wb3RfMDIuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVm
b3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbOSwgMTBdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQv
c2l6ZWRfY29sb3JfMmRfbnBvdF8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6
ZWRfY29sb3JfMmRfbnBvdF8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2M2RlM2FlMmYxOTI4ZTAzZDhl
NDFmY2NlMGQwZGYxNjEwZmEyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9ucG90XzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzEwLCAxMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xv
cl8yZF9wb3RfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJk
X3BvdF8wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ODBhYzcxOTY1MDZiZGJmYThjNTBhNTE1NTU3ODFl
YTE5ZDBlMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXpl
ZF9jb2xvcl8yZF9wb3RfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0
VGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9wb3RfMDEuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX3BvdF8wMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU2NWYxZjg1MWU1NzBkYzY3YWViZTFhZmY3NjliMWQ4NTljM2Q5NTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9wb3Rf
MDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBb
NCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9wb3RfMDIuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzJkX3BvdF8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0ZDQ3
MTVkMmYwNTE0ZWUzNmFhODg0ZGY0MzRhZjkwNTJiODViYWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9wb3RfMDIuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24g
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9
IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1h
dC9zaXplZF9jb2xvcl8yZF9wb3RfMDMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3Np
emVkX2NvbG9yXzJkX3BvdF8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTQwZDdmNzlkZWE0ZWQ5OTcz
MDA5OGVkZWU3YjVlM2NiMjcxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC9zaXplZF9jb2xvcl8yZF9wb3RfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8z
ZF9ucG90XzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9u
cG90XzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxZWVkM2ExMDczZWUwMzBiNGI1ZjY3NzM2NzQ5MjA0
YTUzOWYwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVk
X2NvbG9yXzNkX25wb3RfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0
VGVzdHMucnVuKGdsLCBbMzEsIDMyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX25wb3RfMDEu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX25wb3RfMDEuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YWRmNjZiNjUyMWI5Y2I0MzlkYjMwM2Q5MWM4MmFhY2JmYTAzOWI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfM2Rf
bnBvdF8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9y
bWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4o
Z2wsIFszMiwgMzNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfM2RfbnBvdF8wMi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfM2RfbnBvdF8wMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZmNmRkNzIyZTMwZjI3NDM2MTRiNWQ2Yjg2ODg1ZTIwMWVmYTQ2ZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9ucG90XzAyLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzMzLCAz
NF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9ucG90XzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9ucG90XzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQyZjZl
ZDA0NDc1MWZkNTc0NDViYmFmNzg5NmU5ZmY4MDY2YWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX25wb3RfMDMuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24g
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9
IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbMzQsIDM1XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9y
bWF0L3NpemVkX2NvbG9yXzNkX3BvdF8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQv
c2l6ZWRfY29sb3JfM2RfcG90XzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkM2RlZGQzOGU2M2JkMDFj
MDYxY2I0MmYwNTA2NjRlNGY0OGM4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX3BvdF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFsyNywgMjhdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29s
b3JfM2RfcG90XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8z
ZF9wb3RfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNiYjVlYTkxN2YwMGJmYTc1OWVlNjcwYTJmM2Vi
OTQ1MDQ2YWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6
ZWRfY29sb3JfM2RfcG90XzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1h
dFRlc3RzLnJ1bihnbCwgWzI4LCAyOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9wb3RfMDIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX3BvdF8wMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYyOGYyNTg5ZGQzYWQ2ZWEzYWY0YzM5ZDIyMWZlOTBkZGNmOThkNzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl8zZF9w
b3RfMDIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1h
dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGds
LCBbMjksIDMwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX3BvdF8wMy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfM2RfcG90XzAzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTYwMjhjOTI5MDA0MDJiNmY2NDcwYjhmZDRmOWRlOGRkYjkxOWM3NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yXzNkX3BvdF8wMy5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
dGV4dHVyZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNh
dGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhl
aWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFszMCwgMzFdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9ucG90XzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC9zaXplZF9jb2xvcl9jdWJlX25wb3RfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTY0MDNm
M2Y0OGFjNGVlYjFmYTZmMWYxMjEwZTM0MDQ5MGIxMzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9ucG90XzAwLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9u
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0
PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzE1LCAxNl0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZv
cm1hdC9zaXplZF9jb2xvcl9jdWJlX25wb3RfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9y
bWF0L3NpemVkX2NvbG9yX2N1YmVfbnBvdF8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNzlkZDE5MzJi
ZTU3OTdkOWRiM2U2NTJhMjc2MmViODliYzRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl9jdWJlX25wb3RfMDEuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVm
b3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbMTYsIDE3XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0
L3NpemVkX2NvbG9yX2N1YmVfbnBvdF8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQv
c2l6ZWRfY29sb3JfY3ViZV9ucG90XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNiZmRlNjMzNmVmNzRj
YmE2MjQ1NzA0MTdkMzQwMzkwOGM4MzExNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yX2N1YmVfbnBvdF8wMi5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1h
dF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFsxNywgMThdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6
ZWRfY29sb3JfY3ViZV9ucG90XzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXpl
ZF9jb2xvcl9jdWJlX25wb3RfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTlmN2IzNjE4MzRjYWY5MWU5
Y2IzMGQ2ZmU3YTYwNmI3NjIwNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9ucG90XzAzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzE4LCAxOV0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9j
b2xvcl9jdWJlX3BvdF8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29s
b3JfY3ViZV9wb3RfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Zjg4ZjdlNTcyZDU0YzU0ZmMyZTBiN2Mx
NTE5NjIwM2JmYTQ1ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3Jt
YXQvc2l6ZWRfY29sb3JfY3ViZV9wb3RfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlRm9ybWF0VGVzdHMucnVuKGdsLCBbMTEsIDEyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yX2N1
YmVfcG90XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl9jdWJl
X3BvdF8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMjRjNmQ4ZWIwMDhmODVhZTY0YWMyNzY5MzJhNTIx
NTM3ZjA1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXpl
ZF9jb2xvcl9jdWJlX3BvdF8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3Jt
YXRUZXN0cy5ydW4oZ2wsIFsxMiwgMTNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9wb3Rf
MDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9yX2N1YmVfcG90XzAy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2NlOTNkNjVhNmE1YjE0MWM5M2NiNmY1OGE1MmYyNjJjNmZiZmE0
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2NvbG9y
X2N1YmVfcG90XzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LnJ1bihnbCwgWzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC9zaXplZF9jb2xvcl9jdWJlX3BvdF8wMy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9wb3RfMDMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mY2JmOGQ2NDkzZWE4MTZjN2ViN2ZhMDY5NGJmOTM2ZWE4ZmY2Mjg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfY29sb3JfY3ViZV9w
b3RfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVmb3JtYXRfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1h
dFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMucnVuKGds
LCBbMTQsIDE1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlZm9ybWF0L3NpemVkX2RlcHRoX3N0ZW5jaWwuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlZm9ybWF0L3NpemVkX2RlcHRoX3N0ZW5jaWwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2Ex
ZmJmYmM5ZTNjZGYxMzE5YjJjNTQ2YzYzMWI5NDMxMTBlNzc2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvc2l6ZWRfZGVwdGhfc3RlbmNpbC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZWZvcm1hdF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlRm9ybWF0VGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMDAiIGhlaWdodD0i
MzAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ydW4oZ2wsIFszNSwgMzZdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3Jt
YXQvdW5zaXplZF8yZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvdW5zaXplZF8yZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ0N2U0Mzg3Zjk1ODQ4MWNiYjJjZTY4NDViNzY1MTliMzA1OWIyYjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZWZvcm1hdC91bnNpemVkXzJkLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzAsIDFd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVmb3JtYXQvdW5zaXplZF8yZF9hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3Jt
YXQvdW5zaXplZF8yZF9hcnJheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYWViNDUxZTIzNmU5YTUwOWY1
N2RlMWJlMjNkOTVlZmFmMjA3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZWZvcm1hdC91bnNpemVkXzJkX2FycmF5Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzEsIDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvdW5zaXplZF8zZC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVmb3JtYXQvdW5zaXplZF8zZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZTI1
ZmRlMWE1OTZjMWEzOWVhZWY0NTQ1NjExNDM4ZjM3ODE5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZWZvcm1hdC91bnNpemVkXzNkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlZm9ybWF0X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVGb3JtYXRUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZUZvcm1hdFRlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlf
bGluZWFyX2Fsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGlu
ZWFyX2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4M2E1MGE4MGMxZDE4YTM4MzIyN2UwODg5OWE2
NzExNjdhMzFmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9hcnJheV9saW5lYXJfYWx3YXlzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTEwLCAxMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGlu
ZWFyX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJf
ZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDMxZDIxODBkOWI5ZWU1ZTk5NGI3OTg4MTNjMDc4MjU4
MzI1MDhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJy
YXlfbGluZWFyX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbMTA4LCAxMDldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX2dy
ZWF0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9ncmVh
dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVmMzkwMGVhMTdhYzI0Y2JjM2EwMzlhZDJhZWQ1MTZlNGI0
NTIxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5
X2xpbmVhcl9ncmVhdGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbMTA3LCAxMDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX2dy
ZWF0ZXJfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xp
bmVhcl9ncmVhdGVyX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5MTQyNTdlNTFhMWU5YTFm
YjQ1MDIyOTg2Mjc2Y2FhZDc2OTU1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9ncmVhdGVyX29yX2VxdWFsLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTA1LCAxMDZdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX2xlc3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hh
ZG93LzJkX2FycmF5X2xpbmVhcl9sZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI0MzE1ZTcyZjVhOWM4
ZGM2NTRlMzlkYzM0ODhkNjU1OTdkYjc5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9sZXNzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTA2LCAxMDddKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
MmRfYXJyYXlfbGluZWFyX2xlc3Nfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hh
ZG93LzJkX2FycmF5X2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc3ZjNh
ZTgxMDgyNGUzNGZiNmM1MDhlNTc5ZjJkMjVjNmY0MjdhNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTA0
LCAxMDVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfYWx3YXlzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVh
cl9hbHdheXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDk1ZTdlM2IwNTAzMzAyYzNmMTlkYWE4MzhmZDgx
ZWI2NDU3NTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRf
YXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfYWx3YXlzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTQyLCAxNDNdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
MmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzQwZmNlZGVkOTM0Yjk3NmI1ZTc4NWQyMjNlZjMwNGI4YzA1ZmY3YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBf
bGluZWFyX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMucnVuKGdsLCBbMTQwLCAxNDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1h
cF9saW5lYXJfZ3JlYXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlf
bGluZWFyX21pcG1hcF9saW5lYXJfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MTMzNzljM2Y5
N2QwN2ViZDRmNDU4MWM3OWYxYjkwMzI5YTVjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ncmVhdGVyLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFk
b3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBb
MTM5LCAxNDBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfZ3JlYXRl
cl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFy
X21pcG1hcF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYjkwYjEz
MTY1YTZiNDdkNjkxYTM2OGEzZWNkNDI2Zjc1MmE1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ncmVhdGVy
X29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
VGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMucnVuKGdsLCBbMTM3LCAxMzhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9s
aW5lYXJfbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFy
X21pcG1hcF9saW5lYXJfbGVzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNmQxMjI0NmEwNGY0ZTRiMmJl
ZDhjYzdjODJmMzM5NjViYzE0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVhcl9sZXNzLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTM4LCAxMzldKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfbGVzc19vcl9lcXVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJf
bGVzc19vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNWM0NWRjODdhMTBiMzM2OTFkY2I5ZjMz
ZjczM2Y4ZGE0NmMwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTM2LCAxMzdd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9saW5lYXJfbmV2ZXIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbGluZWFyX25ldmVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmM3MTc3ZDRlYjE3NzE4MzRhNWQxMjFmZjg3OTFmYzc5MTkwNzI0
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xp
bmVhcl9taXBtYXBfbGluZWFyX25ldmVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTQzLCAxNDRdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlf
bGluZWFyX21pcG1hcF9saW5lYXJfbm90X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lY2UyODk4NjgzZmY2ZDkwNTFjMDg0Yzc0MzU3Yjc2MTFhMjIyODkxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9s
aW5lYXJfbm90X2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbMTQxLCAxNDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21p
cG1hcF9uZWFyZXN0X2Fsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJy
YXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Y2UwZGEz
NTY4Y2YxODkwZDg0MGViNGJjMTMzOWE5ZjM0Yzc5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX25lYXJlc3RfYWx3YXlz
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBT
aGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGds
LCBbMTI2LCAxMjddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2Vx
dWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFw
X25lYXJlc3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjlkZDAyOGVkZGY1ZTIyOGRiNGJhYzkx
MjU4YjlmZjdmNTUzMTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFk
b3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hh
ZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2Ug
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTI0LCAxMjVdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2dyZWF0ZXIuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTZjZGMyYWJhN2U1ZDU5ZGU0YjdhZGVkMTMzYzIyODA0NGRlZjJm
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xp
bmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTIzLCAxMjRdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJy
YXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyX29y
X2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYzYWI0YTJhODE1MjhlY2NjY2RmMTllZGMxNzE0ZWJi
Yzc1MGI3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2Fy
cmF5X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyX29yX2VxdWFsLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTIxLCAxMjJdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X2xlc3MuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9sZXNzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTJjYmY0ZDcxZDQ4NTM1ZDcwOGViYjMyYzFiODI2ODdkMjZjMzUxZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVh
cl9taXBtYXBfbmVhcmVzdF9sZXNzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTIyLCAxMjNdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGlu
ZWFyX21pcG1hcF9uZWFyZXN0X2xlc3Nfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93LzJkX2FycmF5X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWExNmNhMmQwMzZiYzgwODFjMzc2Njk0ZWMzOTFjNTYzNWNjNDIzYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X2xpbmVhcl9t
aXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTIwLCAxMjFdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJy
YXlfbGluZWFyX21pcG1hcF9uZWFyZXN0X25ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX25lYXJlc3RfbmV2ZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZjhjNmI0ZTdmYjBjMWQ4YzRmNDRlMTUzZTI0YmI5ZjBhZmViM2UyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9uZWFy
ZXN0X25ldmVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
VGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMucnVuKGdsLCBbMTI3LCAxMjhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX21pcG1hcF9u
ZWFyZXN0X25vdF9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlf
bGluZWFyX21pcG1hcF9uZWFyZXN0X25vdF9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMjU5NzAy
NWE5ZmY2MmQ0Y2FkYjc3ZTM5MDNjNDhmNDI5OGJmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbWlwbWFwX25lYXJlc3Rfbm90X2Vx
dWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNo
YWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVu
KGdsLCBbMTI1LCAxMjZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX25ldmVyLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbmV2ZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYWY2MzBmOTVlZDlhZTIyYjE5NGViZTI1MGZjNzQ1OWU3OTI0NDI3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX25ldmVyLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFk
b3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBb
MTExLCAxMTJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX25vdF9lcXVhbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbGluZWFyX25vdF9lcXVhbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI1ZjM3YjdhMjRjMWEwOGQ5Y2Y1Mzg5ZmE0ZGUwZTAyYTBiY2EzODgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9saW5lYXJfbm90X2Vx
dWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNo
YWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVu
KGdsLCBbMTA5LCAxMTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9hbHdheXMuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfYWx3YXlzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdlMzBiYTUzMGE4MTkzZDEyM2MwNzAyNGFjMzEwNTkwZWQyZTY1MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfYWx3
YXlzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNo
YWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVu
KGdsLCBbMTAyLCAxMDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9lcXVhbC5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9lcXVhbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAxMjFhZTBjNmZmMjM3NzEyNzBiOTExMTc2Mzc2NGU1OTBhNDQ4OTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X2VxdWFs
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBT
aGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGds
LCBbMTAwLCAxMDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9ncmVhdGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X2dyZWF0ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNDA3NzAwNTMxNjZlOGU2ODkyMzFlOTM5OGEzOTNlMGRiNGI0YTE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9ncmVh
dGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNo
YWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVu
KGdsLCBbOTksIDEwMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1
YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfZ3JlYXRl
cl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiODM4ZTBkYTBhNGU1MWY1Njk5YjhkZTAxNmU3
MTljOTk2ODg4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9hcnJheV9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs5NywgOThdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRf
YXJyYXlfbmVhcmVzdF9sZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJh
eV9uZWFyZXN0X2xlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWU1NmNkYzM1ODk1ZWEwNzk0OTc0ZjA1
ZWM0ZWQxNGNkMWY1NDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFk
b3cvMmRfYXJyYXlfbmVhcmVzdF9sZXNzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbOTgsIDk5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25l
YXJlc3RfbGVzc19vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJy
YXlfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk4MGZjZDg4OTY0NjQ2
NzcwMzhjYjkxMTJmOTU0MGRhNjI1YzI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfbGVzc19vcl9lcXVhbC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzk2LCA5N10pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfYWx3YXlzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfYWx3YXlz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmU3ODJjMzdhMTU2YmYxMWI3YjZlMzNkZmQ4NTk5Y2ZjZWIzZDUz
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25l
YXJlc3RfbWlwbWFwX2xpbmVhcl9hbHdheXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMzQsIDEzNV0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJh
eV9uZWFyZXN0X21pcG1hcF9saW5lYXJfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hh
ZG93LzJkX2FycmF5X25lYXJlc3RfbWlwbWFwX2xpbmVhcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU3ODM4ZDgzOGU4ZGM0MmM0MDJmODZmNGI3YThjMmNkY2Y5NDNkZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5l
YXJfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5ydW4oZ2wsIFsxMzIsIDEzM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9s
aW5lYXJfZ3JlYXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVh
cmVzdF9taXBtYXBfbGluZWFyX2dyZWF0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzg1ZmQwNTdkNGRm
ZGIwNTg4MWMyNzEwNTVlOTQ4ZGZkMzk4NjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbGluZWFyX2dyZWF0ZXIuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRv
dyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsx
MzEsIDEzMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfZ3JlYXRl
cl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVz
dF9taXBtYXBfbGluZWFyX2dyZWF0ZXJfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzA3NGNi
ODgxNjUyMjNiODFkMjdjMjM1YjE1NzI0NjU3NzEyNGIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbGluZWFyX2dyZWF0
ZXJfb3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cy5ydW4oZ2wsIFsxMjksIDEzMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1h
cF9saW5lYXJfbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVh
cmVzdF9taXBtYXBfbGluZWFyX2xlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDlhMDc4N2MyMzJmMzcz
ZDBiZDY4NzdkOTI1YzBiOTk0ZTAwMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbGluZWFyX2xlc3MuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAi
IGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMzAsIDEz
MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfbGVzc19vcl9lcXVh
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBf
bGluZWFyX2xlc3Nfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWQ2ODA5MDZlNzgzMmNiMzM4
ZjY1YjFiNGQ2NDc2MTFkN2Q4YjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbGluZWFyX2xlc3Nfb3JfZXF1YWwuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRv
dyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsx
MjgsIDEyOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfbmV2ZXIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfbWlwbWFwX2xp
bmVhcl9uZXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NGIzYjdhMzcxZDVhNzdjYWRjNzNlOGY5Y2M0
ZGVhZmQwZmU5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfbmV2ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3df
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMzUsIDEzNl0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfbm90X2VxdWFsLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9saW5lYXJfbm90X2VxdWFs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzYxMWJiYTJiMzgxOGY2YmYyNWMwYzFkOGYzOTkzOWYxNTg0YmY3
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25l
YXJlc3RfbWlwbWFwX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMzMsIDEzNF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9h
cnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2Fsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9hbHdheXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lODBkNjExYTIxMGYyNzQ0ZGRiY2U5Mzk1Yzk5NjE3YWJmMTdkZGEwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBt
YXBfbmVhcmVzdF9hbHdheXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVT
aGFkb3dUZXN0cy5ydW4oZ2wsIFsxMTgsIDExOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0
X21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9h
cnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM4YWY2
OTljZmFiY2M2MjAxZWY0MmI5NGI4N2UwNzdmZGY2YWMwZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfbWlwbWFwX25lYXJlc3RfZXF1
YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFsxMTYsIDExN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0
X2dyZWF0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3Rf
bWlwbWFwX25lYXJlc3RfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZDNmNTM3ZjBjYmEzNjdh
YjUxMmJmODA5ZTE3MTFjMGI4MDBhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXIuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMTUs
IDExNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXJf
b3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3Rf
bWlwbWFwX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2YTNjYTBj
N2YwNzhiM2VhMGZkNmI5NTcwMjc5ZTQxNDQ1ZjgxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2dyZWF0
ZXJfb3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cy5ydW4oZ2wsIFsxMTMsIDExNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1h
cF9uZWFyZXN0X2xlc3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25l
YXJlc3RfbWlwbWFwX25lYXJlc3RfbGVzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjOTg5NWM3YzBmYWE3
NzhmZmMxOGY2OWMxYTc5ZGVjZDA5MzhhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3MuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMTQs
IDExNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3Nfb3Jf
ZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfbWlw
bWFwX25lYXJlc3RfbGVzc19vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZjUzODFkYjQ1NTQx
Mjk3YjMyZTM4NDRlNjY5NDE3YzcwNTE1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3Nfb3JfZXF1
YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFsxMTIsIDExM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0
X25ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21p
cG1hcF9uZWFyZXN0X25ldmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1OWRlMTFlODU1ZmUzNTQzOTdk
NjAwNmU4ODAyZmUyYjRiNjVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93LzJkX2FycmF5X25lYXJlc3RfbWlwbWFwX25lYXJlc3RfbmV2ZXIuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMTksIDEyMF0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X25vdF9lcXVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbmVhcmVz
dF9ub3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQyYTE2NTdkZTQwZTlmYjU3MDI2YjQ0YzJj
ZDQ1MGJmNzhjYzFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
MmRfYXJyYXlfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
aGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMTcsIDExOF0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy8yZF9hcnJheV9uZWFyZXN0X25ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9hcnJheV9uZWFyZXN0X25ldmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcwYjM5M2U4ZjUw
YzFjZTRmZGM5OWFkMmIwNmI1NTBhZmRjNzg0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX2FycmF5X25lYXJlc3RfbmV2ZXIuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFk
b3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMDMsIDEwNF0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9hcnJheV9uZWFyZXN0X25vdF9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzUyNDE5
YmI2NjU3ODM2YTg1NDViYmY1ZmM3NWVhN2Q3NDhmODk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfYXJyYXlfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAi
IGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxMDEsIDEw
Ml0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9saW5lYXJfYWx3YXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMwNzJlNGU5YTg2YjhmNjFk
ZGFlMjdlOGI3ZGFhMDU3ZDk4ZTE0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX2xpbmVhcl9hbHdheXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsxNCwgMTVdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFy
X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfZXF1YWwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYzM1ODA2OWE1OTk2YTQxMDE4ZWM0YTUyYzQ2MGMwNzZlZTA1ZGM3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX2VxdWFs
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBT
aGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGds
LCBbMTIsIDEzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9ncmVhdGVyLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTA5YmZj
OGNjY2NjZjAyYWQ2YjBmYzVmODIwYmIzNjgwZDVhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfZ3JlYXRlci5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRv
d190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIx
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzExLCAxMl0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy8yZF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFk
b3cvMmRfbGluZWFyX2dyZWF0ZXJfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTA2NWNkZTQz
YzBjZWU1ZTYxZWMyMTU3YTk5YWY0MjM3YWEwNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX2dyZWF0ZXJfb3JfZXF1YWwuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs5LCAxMF0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy8yZF9saW5lYXJfbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRf
bGluZWFyX2xlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGQ5OGI5MTRiN2E3MGUyZWMyMjNmMzgzZDRm
OWVmYTIwNWViZTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
MmRfbGluZWFyX2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFk
b3dUZXN0cy5ydW4oZ2wsIFsxMCwgMTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX2xlc3Nfb3JfZXF1
YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9sZXNzX29yX2VxdWFs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTBkNGMxNTg0ZmU1NjA5ODIxOGU2MzU0NTkxZDEzNDA2YmQzZDA5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9s
ZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMucnVuKGdsLCBbOCwgOV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX2xpbmVhcl9h
bHdheXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGlu
ZWFyX2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MWUyZDJlNDhlYmM0ZDgyYjQ3N2M3YjYyMzI3
ZDBkZThhY2FhODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9saW5lYXJfbWlwbWFwX2xpbmVhcl9hbHdheXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs0NiwgNDddKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGlu
ZWFyX21pcG1hcF9saW5lYXJfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJk
X2xpbmVhcl9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNlNjA0MTYzYTY4
NjRkMjJhYjU0ZjNhMjY4YTVkZmUzODEyMzE5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNDQsIDQ1XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGluZWFyX2dyZWF0ZXIuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGluZWFyX2dyZWF0ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMGUxNjNlMmViZTQwOTgxZTNjYjdlNmE1ZWNkNmFhN2NkZjVhZTY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5l
YXJfZ3JlYXRlci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLnJ1bihnbCwgWzQzLCA0NF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX2xpbmVhcl9n
cmVhdGVyX29yX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJf
bWlwbWFwX2xpbmVhcl9ncmVhdGVyX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ5OGQwYjI5
ZDllNWY4MzNlNWVhM2UwMjQ2YjE1ODg0OTc1MTBjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGluZWFyX2dyZWF0ZXJfb3JfZXF1
YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFs0MSwgNDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5lYXJfbGVzcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5lYXJfbGVzcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhjOWMwMThlNWEyMzVmMDE1OTg1NGZhNjVjYTAzOGU0OTFjODJhZDcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlw
bWFwX2xpbmVhcl9sZXNzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbNDIsIDQzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbGlu
ZWFyX2xlc3Nfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVh
cl9taXBtYXBfbGluZWFyX2xlc3Nfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTIzZGIyZWZi
YTJiZWMyZmRlMGE1ZmJjZGEzYzMzMzE4ZTgzNGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5lYXJfbGVzc19vcl9lcXVhbC5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hh
ZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwg
WzQwLCA0MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX2xpbmVhcl9uZXZlci5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5lYXJfbmV2ZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MTk3NDY0NzRhZTNlN2UzYjYxOWVlYzUxNTI0ZWNhNWM1ZTYwZmZjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1h
cF9saW5lYXJfbmV2ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFk
b3dUZXN0cy5ydW4oZ2wsIFs0NywgNDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5l
YXJfbm90X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlw
bWFwX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2E5YzQ0YTdmMmY2ODg3NjYz
M2ZlODg1YjY5ZDBkYWU2YzE0M2ZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9saW5lYXJfbm90X2VxdWFsLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNDUsIDQ2XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9hbHdheXMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9hbHdheXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzlhNWVlYzljMWJkYTNiNmM2MjExNmI3OGVmNWQ2ZTcwMWMzMzViCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9uZWFyZXN0
X2Fsd2F5cy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
LnJ1bihnbCwgWzMwLCAzMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX25lYXJlc3RfZXF1
YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVz
dF9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZGZiNGE4OGNmODMyYmQ2MTJmMGYzMmRmNzY2Njc3
MjVhNmMxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9s
aW5lYXJfbWlwbWFwX25lYXJlc3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGli
cmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsyOCwgMjldKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFy
X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJk
X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODlmNDhlNDc5
YzNiNDA3YTgwZGY4ZTY5MmE2ZDYyOTA5NGY4ODFmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMjcs
IDI4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyX29yX2VxdWFs
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX25lYXJlc3Rf
Z3JlYXRlcl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5OTYyMzkzZTFiZTRhNGVhZDhmNzlk
MGE5NDg1MGZlZGU1NmI1MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9saW5lYXJfbWlwbWFwX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4
dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIg
aGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzI1LCAyNl0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX25lYXJlc3RfbGVzcy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9uZWFyZXN0X2xlc3MuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMjIwNzA3NWNkOWEzNTM1ZDE4NDkxMTM5Y2RmYmU0MmNlMTI3NzBiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9uZWFyZXN0
X2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5y
dW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9uZWFyZXN0X2xlc3Nf
b3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBf
bmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYwMDE4N2ViZTY4ZDU4ZjFk
YmYxNDVhOTgwOGI4NzRlNDQyNjI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0
ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMjQsIDI1
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9uZXZlci5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX21pcG1hcF9uZWFyZXN0X25ldmVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWQ0OTlmOGM3MzhjYzlmZGY3NzQ0Y2UzMDBiODkwZTVmMDlhYmNlZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVh
cmVzdF9uZXZlci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzLnJ1bihnbCwgWzMxLCAzMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFwX25lYXJlc3Rf
bm90X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9saW5lYXJfbWlwbWFw
X25lYXJlc3Rfbm90X2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIyYTY1ZTQxZGJiNTU0MTJkNzk5
ZmJmMWY0NjUxMDVhMjc1Nzk4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93LzJkX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
aGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsyOSwgMzBdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvMmRfbGluZWFyX25ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9s
aW5lYXJfbmV2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzM2OGMyNzU5N2Q4MTA0NGQ5ZTA0OGI2YjBj
YWYyYzJlZWM1NTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
MmRfbGluZWFyX25ldmVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbMTUsIDE2XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9ub3RfZXF1YWwu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OTA2OTJiNGQ0ZTg5YWQ3M2QyN2Q3OTc1MmM3NjVjOWM5ZDFkN2Y5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbGluZWFyX25vdF9lcXVh
bC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUg
U2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFk
b3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihn
bCwgWzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X2Fsd2F5cy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9hbHdheXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODExNjg1
ZjhlMTMwZjAyMDJmN2ZkZGY0NGYxMDkzYTg0ZTU4ZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9hbHdheXMuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFk
b3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs2LCA3XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
LzJkX25lYXJlc3RfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJl
c3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjU3NGZlMzVjYmQzMzlhMmFkZGNmOGU1NmYwMTM1
MDdhNTk0OGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRf
bmVhcmVzdF9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzLnJ1bihnbCwgWzQsIDVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9ncmVhdGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X2dyZWF0ZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYjZkZjY3M2FlNjhiNGFkNzcxY2RmZDUwMDUxYmFiZGYxN2MyYTAxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9ncmVhdGVyLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMywg
NF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2NDM4OGY2MzY4MjJkNjY0ZmM5ZWYyMzlkMmJkMTQxN2RkNTc5YjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1
YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFsxLCAyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9sZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVmYTFhMDFhNWQx
M2IwMDRjOTI2Mzc3YzU4Zjk1MjUxNWRjZjE1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbGVzcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVh
cmVzdF9sZXNzX29yX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFy
ZXN0X2xlc3Nfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5NmJmNTlmMjFjZDdhMDE5YTUz
YzQ1NGEwN2E1ODY3MDc1MGYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvMmRfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMCwgMV0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFy
ZXN0X21pcG1hcF9saW5lYXJfYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfYWx3YXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc5OWFhOWZm
NzQwNzJiMjg5MDMyNWQxYWQ5YTEwODA2Yjk5M2UxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9hbHdheXMuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFszOCwg
MzldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfZXF1YWwuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZDBkZDZhMWQ4MmYwYWU0NDE2MDhmZjVjZWM3OGI1YTJiOTM5NWI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBf
bGluZWFyX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMucnVuKGdsLCBbMzYsIDM3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVh
cl9ncmVhdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1h
cF9saW5lYXJfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZDk4YzA2NzdlNmMzOTQ0ZTAzYzFl
NjJkM2I3OTI0NzRkYWQ5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy8yZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfZ3JlYXRlci5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRv
d190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIx
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzM1LCAzNl0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy8yZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbGluZWFyX2dyZWF0ZXJfb3JfZXF1
YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZWUyMmRjM2U3OGI2NGQyYWY4ZDYxMWQ2MTJmMGUzNjRjMjA1
MTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVz
dF9taXBtYXBfbGluZWFyX2dyZWF0ZXJfb3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFszMywgMzRdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRf
bmVhcmVzdF9taXBtYXBfbGluZWFyX2xlc3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI5NTRhNTVh
N2YxNGE3ZDc4MDRkZjVhMjNiNzA4YzJjYThhMjAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0
ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMzQsIDM1
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfbGVzc19v
cl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZWI0MWMwZWEwMzA1NzlmOGZjYTA5NDNlNGE2ZmRj
ZThmMGRiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9u
ZWFyZXN0X21pcG1hcF9saW5lYXJfbGVzc19vcl9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAi
PiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5n
bGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzMyLCAzM10pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfbmV2ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hh
ZG93LzJkX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9uZXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNTVk
ZDZjNDFkZWU1MTcwMTgyODgyYjk0NGI4MDY5Y2EyZGM2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9saW5lYXJfbmV2ZXIuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRv
dyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsz
OSwgNDBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbGluZWFyX25vdF9lcXVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbGluZWFyX25vdF9l
cXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NmNiOGEzOTNhZWU5MWY1NjZiMDg2NzA5ODI4NTAwMTIw
M2E0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFy
ZXN0X21pcG1hcF9saW5lYXJfbm90X2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMzcsIDM4XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJl
c3RfbWlwbWFwX25lYXJlc3RfYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8y
ZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZWY1MTNi
ZWY2NjY5YzIxZjNiMWNhOGVmOWExYWQyZDQxOTM5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2Fsd2F5cy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAy
KTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzIy
LCAyM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzkzYzU0NGM2ZmQzZTc2NTk3OTUxNmMzNGQ0YTYxOGZhNWM3NGEwOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlw
bWFwX25lYXJlc3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVT
aGFkb3dUZXN0cy5ydW4oZ2wsIFsyMCwgMjFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBf
bmVhcmVzdF9ncmVhdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0
X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjZlNDMxMjU1ODdhMWVh
YzM0MTE3NjIxNWNiYWVmYmUyODU5OTkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTksIDIwXSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ncmVh
dGVyX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVjYTllYjMyN2Y1YzllOGY1ZWJmYThjMDMy
ODE2NzM2NmU5YjQwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
LzJkX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzE3LCAxOF0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3MuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfbGVzcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE0MzI0YzI0NDcyZjIxOTQ1MDVkYTJjMjlkZjgxNWExNTM0MDhhZDUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9uZWFyZXN0
X2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5y
dW4oZ2wsIFsxOCwgMTldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9sZXNz
X29yX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1h
cF9uZWFyZXN0X2xlc3Nfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjNiMTQ4ODIzOTAxZTE3
ZmNiYzE0MTFlYzIxNmJjNTkyNGZmOGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cg
Q29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbMTYs
IDE3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfbmV2ZXIuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93LzJkX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfbmV2ZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZTc0ZjEwYmIyODgzZGM5YWM0OTQ1MGE0OGNjNzM1NWZlNjk1ZTRhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBt
YXBfbmVhcmVzdF9uZXZlci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQor
RE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxl
PldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNo
YWRvd1Rlc3RzLnJ1bihnbCwgWzIzLCAyNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0X21pcG1hcF9u
ZWFyZXN0X25vdF9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVz
dF9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDRiMmUzYWU5NTgw
MzY5NDVjZjRmYzRkZGVlY2NkMmRlN2EyM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBD
b25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFsyMSwg
MjJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9uZXZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvMmRfbmVhcmVzdF9uZXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNDQ3ZGFjNDVjOGJjYjk3
NTRkZGRlZjkwOTA2NzQ4ZDE3YTAyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNoYWRvdy8yZF9uZWFyZXN0X25ldmVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxl
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy8yZF9uZWFyZXN0
X25vdF9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVhcmVzdF9ub3Rf
ZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTg5NzdiZjkxODFhZWUxMDNmOGQ5YmEzMTExODc4OWRm
MjgwNWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvMmRfbmVh
cmVzdF9ub3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFk
b3dUZXN0cy5ydW4oZ2wsIFs1LCA2XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX2Fsd2F5cy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfYWx3YXlzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODQ2ZDZlZTdlNGViY2JiZTdmMjcyNDdiN2M1MTc5MWRlN2RjZTRkOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX2Fsd2F5cy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAy
KTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzYy
LCA2M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvY3ViZV9saW5lYXJfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjllMDk3N2Y3ZjUx
MTQzMjlhNzQ0NzY1YmVmNTMxZDRiNDI0MGEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVz
dF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs2MCwgNjFdKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3Vi
ZV9saW5lYXJfZ3JlYXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5l
YXJfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMzVmODY0MjhkNzM3NjE4MGU3NGE3OTIyZmYx
MWJjZjU0OTI4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9j
dWJlX2xpbmVhcl9ncmVhdGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMucnVuKGdsLCBbNTksIDYwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX2dyZWF0
ZXJfb3JfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX2dy
ZWF0ZXJfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjg3NjA1ODE4ZWNhNDljMmYxYjg3Yjky
Zjc1MTYwZTcwNTc3MGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFk
b3cvY3ViZV9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzU3LCA1OF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJl
X2xpbmVhcl9sZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9s
ZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlOGFmZmIyYjM3YmRkNjA3YWYzZWY5ZTNjNWJhMTMxYTFk
ZGRiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGlu
ZWFyX2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5ydW4oZ2wsIFs1OCwgNTldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbGVzc19vcl9lcXVhbC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbGVzc19vcl9lcXVhbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3YWQ1NTk3MjJhNmNkNzYwMDM5M2E3M2VkYzBhZTEwYzBkM2ZmOGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9s
ZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMucnVuKGdsLCBbNTYsIDU3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9saW5l
YXJfYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBt
YXBfbGluZWFyX2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYzhhOTQ2ZGZiYWJhZDg1MjliZWNh
YzNmNWMzMzMwMjc0YTAyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX2Fsd2F5cy5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRv
d190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Y2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIx
MDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzk0LCA5NV0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzNjYzhjYTBlOTNiNmJlOGYwODE0OTlmMmNmNDcwYWFiNzk5ZGRhNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9saW5lYXJfZXF1
YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFs5MiwgOTNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ncmVhdGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFy
X2dyZWF0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjk0YjY1YWNiMzdkZDJkOWI3ZDI4ZDQ5YTRlNjdj
NzhiM2RmYjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3Vi
ZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ncmVhdGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbOTEsIDkyXSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVf
bGluZWFyX21pcG1hcF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ncmVhdGVyX29yX2VxdWFsLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDE5ODY2NTAyYjM4NGIwODQ5MDc1MzkzYmE1MjkxZWJjNTE2MjNhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21p
cG1hcF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzg5LCA5MF0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xp
bmVhcl9taXBtYXBfbGluZWFyX2xlc3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1
YmVfbGluZWFyX21pcG1hcF9saW5lYXJfbGVzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkM2M5OGNiMDhj
M2Q1ZTYyOGVhODMyNDlmYmU3NTBjOTRmYmM3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX2xlc3MuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAi
IGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs5MCwgOTFd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX2xlc3Nf
b3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTcyZDk4OWExN2FjOGNlZjNhNjcwMGFjNTUwMTIw
NjIyOTYwNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3Vi
ZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9sZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbODgsIDg5XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
L2N1YmVfbGluZWFyX21pcG1hcF9saW5lYXJfbmV2ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9saW5lYXJfbmV2ZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MDE1ZGVjNGZiZjI4MWFiOGJhYzdhM2FjYWViMjZlNmQ1ZGVmZDFhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9uZXZl
ci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUg
U2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFk
b3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihn
bCwgWzk1LCA5Nl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbGluZWFyX25vdF9lcXVh
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX2xpbmVh
cl9ub3RfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjdiMGQ1ZjdmMTI0OTdjNmFkZmQ5YjVmNzQ4
YzYwY2M1MjU2ODIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
Y3ViZV9saW5lYXJfbWlwbWFwX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3df
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAw
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs5MywgOTRdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
Y3ViZV9saW5lYXJfbWlwbWFwX25lYXJlc3RfYWx3YXlzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9hbHdheXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMjJiOTJkNDEyNmEwNmJlNjdjMzJiYjM3OGE0OTE2MjY3Nzg0MjgxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX25lYXJlc3Rf
YWx3YXlzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMu
cnVuKGdsLCBbNzgsIDc5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFyZXN0X2Vx
dWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbmVh
cmVzdF9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxMDJlNTZkY2JiY2QwODgxNzYyNjg2YTEwMTEw
MzUyM2Q1YWUxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9j
dWJlX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzc2LCA3N10pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJl
X2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODBlZDBlM2I0MWM4NjljMmUwYzdhMmFjODliYzU4MjM1YWQyMDgwZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFyZXN0X2dy
ZWF0ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5y
dW4oZ2wsIFs3NSwgNzZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX25lYXJlc3RfZ3Jl
YXRlcl9vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJf
bWlwbWFwX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1OTBmNzZi
Yjg5ZDBiNWZjNGI1MTlkODlhMjI0YjFmZTQ3MjdkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9ncmVhdGVyX29y
X2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMu
cnVuKGdsLCBbNzMsIDc0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFyZXN0X2xl
c3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFy
ZXN0X2xlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q5OWJkOTdmMjBmMjM2MTcwM2Q4ZGJjZTM5MTI3
OGQ0NmE4NDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3Vi
ZV9saW5lYXJfbWlwbWFwX25lYXJlc3RfbGVzcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzc0LCA3NV0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xp
bmVhcl9taXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX2xpbmVhcl9taXBtYXBfbmVhcmVzdF9sZXNzX29yX2VxdWFsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNiZGJhNWZmNTE2YTE1ZGM3Y2Q0MzUyNzkyZTBkOWIxMTE4Yzk3ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9u
ZWFyZXN0X2xlc3Nfb3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs3MiwgNzNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlw
bWFwX25lYXJlc3RfbmV2ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGlu
ZWFyX21pcG1hcF9uZWFyZXN0X25ldmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZmZTZmZTQ1MmZlNDUy
NzEyZTUyMmJjNWZkZjAwMzExZjg0Nzc1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFyZXN0X25ldmVyLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNzksIDgwXSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93L2N1YmVfbGluZWFyX21pcG1hcF9uZWFyZXN0X25vdF9lcXVhbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbWlwbWFwX25lYXJlc3Rfbm90X2VxdWFs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWRkZWIzOWQ5MTU0MmY3OTFjMDQyYjIyZmQyOTdjZGNjODE0NzZk
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbGluZWFy
X21pcG1hcF9uZWFyZXN0X25vdF9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzc3LCA3OF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVh
cl9uZXZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbmV2ZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOTYzMjFmZTFiYjkxNWYwZWJmZTMwZTQ4NGFkMmY1YWY4ZTVkY2I3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJf
bmV2ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5y
dW4oZ2wsIFs2MywgNjRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbm90X2VxdWFsLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX2xpbmVhcl9ub3RfZXF1YWwuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wYzY2M2NkYWYxNGViYmNmYzFmMGIxNTkzM2U5MTViODMzYzkxZDIzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9saW5lYXJfbm90X2VxdWFsLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFk
b3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBb
NjEsIDYyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9hbHdheXMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9hbHdheXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTI1YzVl
ZjBiYTdmN2M5ZDliZDg0MDZhY2M3MGY0Njg1NTBhMzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X2Fsd2F5cy5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNo
YWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0
PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzU0LCA1NV0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy9jdWJlX25lYXJlc3RfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1
YmVfbmVhcmVzdF9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNzZjYjA2MmE0OTFjMDA0MjA5NjEx
ZTliOWY1YmZmZDhmZDdjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNo
YWRvdy9jdWJlX25lYXJlc3RfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs1MiwgNTNdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0
X2dyZWF0ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9ncmVh
dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVmYTBiNjJkNmMzNGJmMDYyNTliNjE3MjYyZTFhMGZlOGQz
Y2I0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVh
cmVzdF9ncmVhdGVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4K
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
J2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93
VGVzdHMucnVuKGdsLCBbNTEsIDUyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9ncmVhdGVyX29y
X2VxdWFsLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfZ3JlYXRl
cl9vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZTcwODVkYTI5YWMwZmZiMWI0N2I0YTNiYjY5
NDk4MDg0ZTBkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9j
dWJlX25lYXJlc3RfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzQ5LCA1MF0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25l
YXJlc3RfbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X2xl
c3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40N2M0YjM0ZDE3NGE1NjAwMWQ2NjBjYjcxZDczZmI0MzljMmFi
MjJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFy
ZXN0X2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5ydW4oZ2wsIFs1MCwgNTFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X2xlc3Nfb3JfZXF1YWwu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9sZXNzX29yX2VxdWFs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM5ZjAwNWMwYWM5YmFiNDAxZmE3NWRlNTA0NGIxOWIyNzA0ZDE0
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVz
dF9sZXNzX29yX2VxdWFsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMucnVuKGdsLCBbNDgsIDQ5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBf
bGluZWFyX2Fsd2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0
X21pcG1hcF9saW5lYXJfYWx3YXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRhZjExYzUxMTAwYzk2MmJj
OGYzMTg4NWI3ZjI3MTdjN2JkMDBlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbGluZWFyX2Fsd2F5cy5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzg2LCA4N10pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9saW5lYXJfZXF1YWwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NmMxZTFkNTg2MjEzYzllMmVjODYyOWVhYmM5MGJjNzg1MzgyYTMyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9s
aW5lYXJfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dU
ZXN0cy5ydW4oZ2wsIFs4NCwgODVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9saW5l
YXJfZ3JlYXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21p
cG1hcF9saW5lYXJfZ3JlYXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZTEwODdhODZkM2QwY2Q1Y2Zm
MjhmMWIwMGVhZGYzNTdkNjkyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9ncmVhdGVyLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbODMsIDg0XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbGluZWFyX2dyZWF0ZXJfb3JfZXF1YWwuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbGluZWFyX2dyZWF0
ZXJfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTE3NzNjMmUyMzU1ZTdkYTg4MzZjMzgwZjBi
MGQ3Nzk3ZWI3MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cv
Y3ViZV9uZWFyZXN0X21pcG1hcF9saW5lYXJfZ3JlYXRlcl9vcl9lcXVhbC5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVy
ZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzgxLCA4Ml0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTRhYTA4ZDEzOTc5MDE0ZGQwZTQwZWYzNjYyNGM4OWUwZTcxZjRiYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbGlu
ZWFyX2xlc3MuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5ydW4oZ2wsIFs4MiwgODNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9saW5lYXJf
bGVzc19vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0
X21pcG1hcF9saW5lYXJfbGVzc19vcl9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjcwNWMyMGE0
YjFmZGExNzBiNmYyNDIyZTM0N2RhY2U4OGZmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9sZXNzX29yX2VxdWFs
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBT
aGFkb3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGds
LCBbODAsIDgxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbGluZWFyX25ldmVyLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9u
ZXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YmMwMDgxNmQ3NzY1NDFmYjM3ZjllOGZlNjFmYzFkMTNm
YWU0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25l
YXJlc3RfbWlwbWFwX2xpbmVhcl9uZXZlci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzg3LCA4OF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJl
c3RfbWlwbWFwX2xpbmVhcl9ub3RfZXF1YWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
L2N1YmVfbmVhcmVzdF9taXBtYXBfbGluZWFyX25vdF9lcXVhbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhk
N2E5MDBhNzc0OTE0MWIyNjRhMzA5NjJiZjczOTg2ODgwZDFkNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX2xpbmVhcl9ub3Rf
ZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElU
IQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0
dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
U2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5y
dW4oZ2wsIFs4NSwgODZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2Fs
d2F5cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9u
ZWFyZXN0X2Fsd2F5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxMDg2OWUwNmE3NmFmNzZjNDNhZjNjNWY0
MjhkZjgyMDBmZTYyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRv
dy9jdWJlX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfYWx3YXlzLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNzAsIDcxXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2VxdWFsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTlhODc4ZDFkMGJiNDI3M2M0NGY1MTVjZTNjNGZhODcxMTEyOGI2YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVz
dF9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3Rz
LnJ1bihnbCwgWzY4LCA2OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX25lYXJlc3Rf
Z3JlYXRlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1h
cF9uZWFyZXN0X2dyZWF0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzc4OGJjNWYwY2NjYzYwOTY1MTBk
OWE5ZTIwMzdhNjBkMDlhMzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXIuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
aGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4oZ2wsIFs2NywgNjhdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
aGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2dyZWF0ZXJfb3JfZXF1YWwuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ncmVh
dGVyX29yX2VxdWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdlODZlOWNjMDVjOWMzZTY5ZGI1MDU0OGQw
YTBiNmZmOGM0MjU0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ncmVhdGVyX29yX2VxdWFsLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9y
bWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNjUsIDY2XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9sZXNzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX25lYXJlc3RfbGVzcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkYjY0YTk1ZWQ4YzNjYjliMGQ1MTAzNjhlNTBhOTA4ZTNkMTNiNTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFw
X25lYXJlc3RfbGVzcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzLnJ1bihnbCwgWzY2LCA2N10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFwX25l
YXJlc3RfbGVzc19vcl9lcXVhbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9u
ZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3Nfb3JfZXF1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmI2
ZGI3MjNmYjRmOTBkYTc5Zjk2MWRhYTlhNGY4NDM3ZmE4NjE5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X2xlc3Nf
b3JfZXF1YWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU2hhZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0
cy5ydW4oZ2wsIFs2NCwgNjVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0
X25ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbWlwbWFw
X25lYXJlc3RfbmV2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDcxZTU4NTlmY2Y3ZmY4YWFhNTQyNWFj
MjQ1YzI1ZjJmMTJjYjE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFk
b3cvY3ViZV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0X25ldmVyLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFkb3cgQ29uZm9ybWFuY2UgVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEw
MCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBbNzEsIDcyXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93
L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9taXBtYXBfbmVhcmVzdF9ub3RfZXF1YWwuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTY4MTY5NWZjNTdiMzljMTM0NzA5MDFmZjFiMDZkZmY5NDgzZTUzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X21pcG1h
cF9uZWFyZXN0X25vdF9lcXVhbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRleHR1cmUgU2hhZG93IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNoYWRvd1Rlc3RzLnJ1bihnbCwgWzY5LCA3MF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbmV2
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc2hhZG93L2N1YmVfbmVhcmVzdF9uZXZlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE1ZDViNTMxZjA0NjRmMDFiZjBiZjZjM2YzNmE1NzljZWY0MDhhOWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3RfbmV2
ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNoYWRvdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hh
ZG93VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5ydW4o
Z2wsIFs1NSwgNTZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X25vdF9lcXVhbC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzaGFkb3cvY3ViZV9uZWFyZXN0X25vdF9lcXVhbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhM2E0MWRkYjNmYjJmYzc5NDBlYTY4NTBlMTIyMGY2ZjMzNzVhNzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNoYWRvdy9jdWJlX25lYXJlc3Rfbm90X2VxdWFsLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTaGFk
b3cgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNoYWRvd1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU2hhZG93VGVzdHMucnVuKGdsLCBb
NTMsIDU0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY19jb3B5dGV4aW1hZ2UyZC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX2NvcHl0ZXhpbWFnZTJkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGFkMDRmNmEzMzc4ZjE0NzhjZDFhYjVjMTlmNzJkNGQzNzVhMDBkZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY19jb3B5dGV4
aW1hZ2UyZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RP
IE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5X
ZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs0MSwgNDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2lj
X2NvcHl0ZXhzdWJpbWFnZTJkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
YmFzaWNfY29weXRleHN1YmltYWdlMmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTgzMmQ1ZThmNmRmMzM1
OWY1MmVkYTc3YWY2YjQ0NjEyNmIxNzliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX2NvcHl0ZXhzdWJpbWFnZTJkLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNh
dGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihn
bCwgWzQyLCA0M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF8yZF8wMC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlMmRfMmRfMDAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNWEzOTQxZmQ0OGY5ZmEwNjA0ZDIxMTUwNmNlMzQzZjA4NzE1ZTMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2lj
X3RleGltYWdlMmRfMmRfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMCwgMV0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vYmFzaWNfdGV4aW1hZ2UyZF8yZF8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZp
Y2F0aW9uL2Jhc2ljX3RleGltYWdlMmRfMmRfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjU4YmIwZjJj
ZGJmMDBhN2MwYWUyY2MyM2RhNjVkZGZhZWMwMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlMmRfMmRfMDEuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzAw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9j
dWJlXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBiNDRmYTA2NDgzNTM2ZTVhM2ExNWIzMGY5Mzc0YzVh
YzljNGQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlv
bi9iYXNpY190ZXhpbWFnZTJkX2N1YmVfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWQ1OWZkMDExZWQxNWJlNzQzZGU5ODkyNjI5NGEwYjExODRkODRhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTJkX2N1
YmVfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4
aW1hZ2UyZF9jdWJlXzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFz
aWNfdGV4aW1hZ2UyZF9jdWJlXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFmYmFiYzBiZDIzNGVjNmVm
NWM4Zjc5ZTIwNmE5NmRjODFlYWM3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTJkX2N1YmVfMDIuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
cGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0
aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGds
LCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzAz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFmNjYyZmI3MTY2MDhhMTA4OGQwODE4NDg4M2ZmNmEwNGY1M2Qw
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNp
Y190ZXhpbWFnZTJkX2N1YmVfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNSwgNl0pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmlj
YXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UyZF9jdWJlXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMw
Y2JkYTY0NTJjZjk1YjliZDM4MWY5NTU0MjQ2YWE5Yjk3NTY0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTJkX2N1YmVfMDQu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2Uz
ZF8yZF9hcnJheV8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2lj
X3RleGltYWdlM2RfMmRfYXJyYXlfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGY1ZjgyYTg5ZTI5NDhh
N2NjOGEwMTJkODMyZDRlOGY2OGFlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfMmRfYXJyYXlfMDAuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbNDMsIDQ0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTNkXzJkX2Fy
cmF5XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1h
Z2UzZF8yZF9hcnJheV8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmRiZWM2NmNmN2FkZjUyYzZiODBm
ZjM4MWI5ZGNlYTBiYzkyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UzZF8yZF9hcnJheV8wMS5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNw
ZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRp
b24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2ws
IFs0NCwgNDVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfMmRfYXJyYXlfMDIu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTNkXzJk
X2FycmF5XzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZjVjMGRjOTk1OTQ0NWIzZDBhY2U0YzQzOWI0
ODRiNWMxODk4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi9iYXNpY190ZXhpbWFnZTNkXzJkX2FycmF5XzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNh
dGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWln
aHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzQ1LCA0
Nl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UzZF8zZF8wMC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfM2RfMDAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMzBhOTgwYjllZjFiYWU5MWEyMzFjNzJiN2JmNDgyYWNiYTMzNDZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdl
M2RfM2RfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitE
TyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+
V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29v
Zy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNDYsIDQ3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNp
Y190ZXhpbWFnZTNkXzNkXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
YmFzaWNfdGV4aW1hZ2UzZF8zZF8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZTg0NDk5OTBjODJkOTY2
MWU0ODU0Y2IwN2ZiYzdhZDQ5MTExOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UzZF8zZF8wMS5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNw
ZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRp
b24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2ws
IFs0NywgNDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfM2RfMDIuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTNkXzNkXzAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQxZTZkMzY4OTVhYWIwMmE4MTRiODA0MTU0YzUyM2FlZGUxZTUyNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190
ZXhpbWFnZTNkXzNkXzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzQ4LCA0OV0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vYmFzaWNfdGV4aW1hZ2UzZF8zZF8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZp
Y2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfM2RfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWJkNjY2NTg5
NmM0Y2FhNzhlYzZhYmMwYjI1ZDdlZWU5ZDdmYjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleGltYWdlM2RfM2RfMDMuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbNDksIDUwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhpbWFnZTNkXzNkXzA0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4aW1hZ2UzZF8z
ZF8wNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNWY1ODJjMzFlNGYzNmM5ZTdiYTJkNDlkMDljMjc2OGY3
MGMwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
YmFzaWNfdGV4aW1hZ2UzZF8zZF8wNC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs1MCwgNTFdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlMmRfMmRfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTJkXzJkXzAwLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmM5YWI4MmE5NzVmOTQyODRlYTdmYmYzYWZhMTEyNzI5Nzc1MzBlNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTJk
XzJkXzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzIxLCAyMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNf
dGV4c3ViaW1hZ2UyZF8yZF8wMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9u
L2Jhc2ljX3RleHN1YmltYWdlMmRfMmRfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2U4YzRlZDY5MjY2
MGIxOGM4MThkNWFiOWMwZmY5NjQ3ZDU0YWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlMmRfMmRfMDEuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbMjIsIDIzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTJkXzJk
XzAyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1h
Z2UyZF8yZF8wMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMzM5Y2M3OWU3Mzk5NjdhZDEzMGNiNTc5ZjU5
ZDIyZmJlY2VkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmlj
YXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UyZF8yZF8wMi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRp
b25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFsyMywgMjRd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlMmRfY3ViZV8wMC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlMmRfY3ViZV8wMC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxNTJiNTkyNjY4YTljZjdkNDhjYjlhMzE3YjhlNTgzM2RjNjIyNDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNf
dGV4c3ViaW1hZ2UyZF9jdWJlXzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzI0LCAyNV0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNp
ZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UyZF9jdWJlXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UyZF9jdWJlXzAxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTE5Mzg3YmY0Y2FmNTU1OGYzZGQ5NTVlMzRiYzBlMTA5OTlhYmMzNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFn
ZTJkX2N1YmVfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMjUsIDI2XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9i
YXNpY190ZXhzdWJpbWFnZTJkX2N1YmVfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lm
aWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTJkX2N1YmVfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmQ4
OGQzMDk0NjdmZTQwYmUzMWRkYzdmYWIwYmRlNTJiOTk1NzhmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlMmRfY3ViZV8w
Mi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5ydW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1
YmltYWdlMmRfY3ViZV8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jh
c2ljX3RleHN1YmltYWdlMmRfY3ViZV8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMmE1NTBiNDQ3M2Ji
YTQ2MmM0ZTU4YWYxNjkyZGM2N2U2YzJiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UyZF9jdWJlXzAzLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0
ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3Bl
Y2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
LnJ1bihnbCwgWzI3LCAyOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UyZF9j
dWJlXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3Vi
aW1hZ2UyZF9jdWJlXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYzZTVkYTVkMWM2ZWI5YTRlZTUyZGMw
M2YwMTNjOGExYzhiZTEyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3Bl
Y2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTJkX2N1YmVfMDQuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVj
aWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9u
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBb
MjgsIDI5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTNkXzAwLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UzZF8wMC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM0MThjMTY3Yjg4NWM4NjI4ZTU0ZDQ3NGZiZGM4ZDgzOTExYzFmYjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4
c3ViaW1hZ2UzZF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs1OSwgNjBdKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9u
L2Jhc2ljX3RleHN1YmltYWdlM2RfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi9iYXNpY190ZXhzdWJpbWFnZTNkXzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0YzU2ZTM4Mzdi
NmVjOTc0MWI3NTNhZWIwN2E2ZmYxMmM5NTUxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTNkXzAxLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lm
aWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1
bihnbCwgWzYwLCA2MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UzZF8wMi5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdlM2Rf
MDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZDc2MWM5MzkxZjRmMmNjZDQ1NzY3NGYwMDQ0OTI5MmQyOWZj
ZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jh
c2ljX3RleHN1YmltYWdlM2RfMDIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNjEsIDYyXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lm
aWNhdGlvbi9iYXNpY190ZXhzdWJpbWFnZTNkXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UzZF8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNGNk
Mzk1YTgzYTYxMDFkNDZkNTYzYzkxNzM0NWJiMzYwNTE0OGQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vYmFzaWNfdGV4c3ViaW1hZ2UzZF8wMy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5ydW4oZ2wsIFs2MiwgNjNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL2Jhc2ljX3RleHN1YmltYWdl
M2RfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi9iYXNpY190ZXhzdWJp
bWFnZTNkXzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM2ZGY1ZmUyNTM1NGM2ZGU1ZDJkYzgxZTMyZDc5
MThiZDgwZjhiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi9iYXNpY190ZXhzdWJpbWFnZTNkXzA0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1
NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzYzLCA2NF0pOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNwZWNpZmljYXRpb24vcmFuZG9tX3RleGltYWdlMmRfMmQuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi9yYW5kb21fdGV4aW1hZ2UyZF8yZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQx
NjYxNTJjZWE5MDhmNGZjZjhlMzRmMGRhZWM5ODRmMzdjMWE0NTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vcmFuZG9tX3RleGltYWdlMmRfMmQuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMucnVuKGdsLCBbNywgOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vcmFuZG9tX3RleGltYWdlMmRf
Y3ViZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3JhbmRvbV90ZXhpbWFn
ZTJkX2N1YmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2ZjYzc3MTQyYjk4OGQxZWE0ZmI0NDg2MDFkY2Fm
MDlkYTA1N2I2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0
aW9uL3JhbmRvbV90ZXhpbWFnZTJkX2N1YmUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbOCwgOV0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9hbGlnbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL3RleGltYWdlMmRfYWxpZ24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjg0NDE3OGZmNjMz
MDQ5ZTdiNjQzZjFkZDkwNGM0YzEwNWNhMWQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlMmRfYWxpZ24uaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVj
aWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9u
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBb
OSwgMTBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlMmRfZGVwdGguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX2RlcHRoLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmIyZTMxYjc2ZWEyYmM5NDFiMjgwODk1ZTU1MGUzZmNlNzVjMjliNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX2RlcHRoLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJv
bSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUg
U3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzLnJ1bihnbCwgWzE5LCAyMF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9kZXB0aF9w
Ym8uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX2RlcHRo
X3Biby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjY2Y1MmJhMWI0NGNkN2Q0YTI1ZjkyNzg3YzUxN2Y3ODk1
MTMyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4aW1hZ2UyZF9kZXB0aF9wYm8uaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMjAsIDIxXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lm
aWNhdGlvbi90ZXhpbWFnZTJkX3Bib18yZF8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL3RleGltYWdlMmRfcGJvXzJkXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmOWY2YTBk
NDE5OTVmM2Y5Y2Y5YWQwYWY5OTU0M2QxYTMyMDg4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX3Bib18yZF8wMC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4
dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNp
ZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5y
dW4oZ2wsIFsxMSwgMTJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlMmRfcGJvXzJkXzAxLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9fMmRfMDEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNmY1MDNkYmIxNGI1MzgzNGU2N2ZlMmVhZTBhNTdjNDRjNWYzOTQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGlt
YWdlMmRfcGJvXzJkXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzEyLCAxM10pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vdGV4aW1hZ2UyZF9wYm9fY3ViZV8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZp
Y2F0aW9uL3RleGltYWdlMmRfcGJvX2N1YmVfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGI3Y2U0NjFl
NzgyMTI3MDAxNjFkOGI2MWIwMjNkMWU2YjBkMGQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlMmRfcGJvX2N1YmVfMDAuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbMTMsIDE0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX3Bib19jdWJlXzAx
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9fY3Vi
ZV8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ZTNlYmI0N2FkYjFmODAwYWY4MzBkYWM3Zjc2ODdhM2Uy
MmFiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4aW1hZ2UyZF9wYm9fY3ViZV8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFsxNCwgMTVdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL3RleGltYWdlMmRfcGJvX2N1YmVfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX3Bib19jdWJlXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZm
NzRlYmY5OThlYTg5NjM2M2Y4NGE5YWQ4MjliODZmYTI2OTFjNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX3Bib19jdWJlXzAyLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLnJ1bihnbCwgWzE1LCAxNl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9f
Y3ViZV8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlMmRf
cGJvX2N1YmVfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmM2M2RjZjQ0MTdjYzBkODdhNmY0YTIxY2Ey
ZTBlMDU1YWY5Njc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZp
Y2F0aW9uL3RleGltYWdlMmRfcGJvX2N1YmVfMDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0t
CisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9u
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0i
MjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMTYsIDE3XSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJkX3Bib19jdWJlXzA0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9fY3ViZV8wNC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmMjZmNjFiYjAxYjgwYTg3M2Q5M2RiYTgzYjczNWVkN2YwMTVjOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9fY3Vi
ZV8wNC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5ydW4oZ2wsIFsxNywgMThdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdl
MmRfcGJvX3BhcmFtcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGlt
YWdlMmRfcGJvX3BhcmFtcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiNGM3Yjg3YTBlYjk5OGRiMTQ2ZmVi
ZDQ2MDg4NjI5Y2RjMWZiODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4aW1hZ2UyZF9wYm9fcGFyYW1zLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNh
dGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWln
aHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzE4LCAx
OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF91bnBhY2tfcGFyYW1zLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UyZF91bnBhY2tfcGFyYW1zLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDNmZGYzODNhMGE2YmNmMjVhOTM3ODY2YzRhMTJhZWNhNTA2MDQ2YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTJk
X3VucGFja19wYXJhbXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMTAsIDExXSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlv
bi90ZXhpbWFnZTNkX2RlcHRoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4aW1hZ2UzZF9kZXB0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YTY2OTFhODczYmU4NDk3YmRlYWM4
OWY0OTVhNWYxOTRjNDdiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9kZXB0aC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs1NywgNThdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfZGVwdGhfcGJvLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9kZXB0aF9wYm8uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OGVjMjlkMzk1NmUwNzc4ODYyY2IzNzk1MzE0NjdjYzQ3Njc3NDRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfZGVwdGhfcGJvLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLnJ1bihnbCwgWzU4LCA1OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9wYm9f
MmRfYXJyYXlfMDAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFn
ZTNkX3Bib18yZF9hcnJheV8wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOTYzYWY5YjUwNDgyMWMyY2Zi
OTkyZTRkZmQwMjBlMDA2OTIyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9wYm9fMmRfYXJyYXlfMDAuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
cGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0
aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIy
NTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7
CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGds
LCBbNTIsIDUzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTNkX3Bib18yZF9hcnJheV8wMS5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfcGJvXzJkX2Fy
cmF5XzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEzYzllMzE3NTM2YzljZjMzMWI3ZmQyZGU5NmNhZDY4
MzcyZDQ4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlv
bi90ZXhpbWFnZTNkX3Bib18yZF9hcnJheV8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs1MywgNTRdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfcGJvXzNkXzAwLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9wYm9fM2RfMDAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NzI2MjFkYzk2YWE5MzEzNjgyZjQzODJiYmIxYmE0YjJlMWQ5ZmE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfcGJvXzNkXzAwLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lm
aWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLnJ1bihnbCwgWzU0LCA1NV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4aW1hZ2UzZF9wYm9f
M2RfMDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhpbWFnZTNkX3Bi
b18zZF8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNzVhMWMwYjFmMzk1YzgzNzNhNDMyYjAzNTZiMzcy
M2I3NWIzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vdGV4aW1hZ2UzZF9wYm9fM2RfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNTUsIDU2XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3Bl
Y2lmaWNhdGlvbi90ZXhpbWFnZTNkX3Bib19wYXJhbXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c3BlY2lmaWNhdGlvbi90ZXhpbWFnZTNkX3Bib19wYXJhbXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTNi
YzgzMWQyM2E0MDRlNjc0NzAxYTA3M2U1MzUyNzRlNDZiYzg5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfcGJvX3BhcmFtcy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMn
LCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25U
ZXN0cy5ydW4oZ2wsIFs1NiwgNTddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2RfdW5wYWNr
X3BhcmFtcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleGltYWdlM2Rf
dW5wYWNrX3BhcmFtcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmQ2YzIxNTcxMzViOWViZjE4ZGIyNjA1
NzI2MzQyZjcxMTI5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNp
ZmljYXRpb24vdGV4aW1hZ2UzZF91bnBhY2tfcGFyYW1zLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNh
dGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWln
aHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzUxLCA1
Ml0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF8yZF8wMC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UyZF9mb3JtYXRfMmRfMDAuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZmE1NzE2ODNiYzg4NzE1ZmNiYzdhMTQ4Yzg5MGU3NzhkYjZlMDAyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3Jh
Z2UyZF9mb3JtYXRfMmRfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJh
dG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52
YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNzEsIDcyXSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0XzJkXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF8yZF8wMS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3
NjQ5OTNmMzllNzdkZmZlZGVhYTkyMzAxMWJkMjZkYTNkZDAxNWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF8yZF8w
MS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBU
ZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmlj
YXRpb25UZXN0cy5ydW4oZ2wsIFs3MiwgNzNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2Uy
ZF9mb3JtYXRfMmRfMDIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhz
dG9yYWdlMmRfZm9ybWF0XzJkXzAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTMwNzdlNjg0YjRlMzU4ODRj
NDMyMjIyNGVmOTliMzdiZGFhZDRhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0XzJkXzAyLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNh
dGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihn
bCwgWzczLCA3NF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF9jdWJlXzAw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1h
dF9jdWJlXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhhNGM2YzhhNGRhMTI5YWNjYmIwMTk3ZGZiODFm
MjcyZDExNGNlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0X2N1YmVfMDAuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0
aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdo
dD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNzQsIDc1
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0X2N1YmVfMDEuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0X2N1YmVfMDEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNTYxNTRkMzBiNTM0YmFlOTE4NThkOWQ2NmY4ZTViNzg2YjQwYTIw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0
b3JhZ2UyZF9mb3JtYXRfY3ViZV8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs3NSwgNzZdKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL3RleHN0b3JhZ2UyZF9mb3JtYXRfY3ViZV8wMi5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UyZF9mb3JtYXRfY3ViZV8wMi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM1NzVjMzlkNmVhY2M2OWM2ZGJhMzRkMGJmYWU0ZDI3YzZhZTM5YjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zv
cm1hdF9jdWJlXzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzc2LCA3N10pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4c3RvcmFnZTJkX2Zvcm1hdF9jdWJlXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNp
ZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF9jdWJlXzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0
YTc2NzUzMGZkNGRhZGM5NzZhZDZmNjYyNjEzZmExOGI0YzhlMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0X2N1YmVf
MDMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
VGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVT
cGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMucnVuKGdsLCBbNzcsIDc4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdl
MmRfZm9ybWF0X2N1YmVfMDQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90
ZXhzdG9yYWdlMmRfZm9ybWF0X2N1YmVfMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTlhYTEwNDg2ZjMx
M2ExMTAwZDdhZDZiZWMyNzEwMjdhZjRkMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UyZF9mb3JtYXRfY3ViZV8wNC5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
dGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNw
ZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5ydW4oZ2wsIFs3OCwgNzldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UyZF9mb3JtYXRf
ZGVwdGhfc3RlbmNpbC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0
b3JhZ2UyZF9mb3JtYXRfZGVwdGhfc3RlbmNpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNDU0YzQ0NzVh
Y2NlMzA2MDk0OTkzMWQ1MDc0MjI5NDQ5MjJjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJkX2Zvcm1hdF9kZXB0aF9zdGVuY2ls
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0i
Y2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2Nh
bnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNh
dGlvblRlc3RzLnJ1bihnbCwgWzc5LCA4MF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTJk
X2Zvcm1hdF9zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3Rv
cmFnZTJkX2Zvcm1hdF9zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ3YmI3YzAwOTUyN2RiZTkxYTVm
MDc5ZmM4OGI1NTM4NjZmMDdkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlMmRfZm9ybWF0X3NpemUuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVj
aWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9u
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYi
IGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBb
ODAsIDgxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9ybWF0XzJkX2FycmF5XzAw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1h
dF8yZF9hcnJheV8wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NzkyZDg1YjU2YjEwZDIxZjRiZWZlMTFm
YjBlMWFkYzIyMjhiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNp
ZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1hdF8yZF9hcnJheV8wMC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNw
ZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRp
b24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2ws
IFs4MSwgODJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfMmRfYXJyYXlf
MDEuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9y
bWF0XzJkX2FycmF5XzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzMTQwNTE0ZWQzYTBkZjBhNmM2Zjgx
ZWJlMzc0Mzk2NDg2MDYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3Bl
Y2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9ybWF0XzJkX2FycmF5XzAxLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
c3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNh
dGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihn
bCwgWzgyLCA4M10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1hdF8yZF9hcnJh
eV8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9m
b3JtYXRfMmRfYXJyYXlfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzFiN2JhMzg2ODhlM2FjMTJhNjhh
ZGQ0NzhmZTIyMzA4OTk1ZjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVz
cGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfMmRfYXJyYXlfMDIuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1
cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZp
Y2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVu
KGdsLCBbODMsIDg0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9ybWF0XzNkXzAw
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1h
dF8zZF8wMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YmZhZDUwZmZmNDBmYjBhMzNjNjQxYzYyODVhYWY4
NTE0ODdjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vdGV4c3RvcmFnZTNkX2Zvcm1hdF8zZF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs4NCwgODVdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfM2RfMDEuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9ybWF0XzNkXzAxLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTY3M2NhMTgxMWE1MjI2YTFkMmE5NmJkZmE2OTk0MTQwNTE0NjRmNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2Rf
Zm9ybWF0XzNkXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJl
L2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzg1LCA4Nl0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4c3RvcmFnZTNkX2Zvcm1hdF8zZF8wMi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZp
Y2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfM2RfMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWQ2NThi
ZWNmZTllMDQ3Y2NhOWRjOGU5MmMzNTdlZDFlYTA1MWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfM2RfMDIuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZp
Y2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMucnVuKGdsLCBbODYsIDg3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdG9yYWdlM2RfZm9y
bWF0XzNkXzAzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFn
ZTNkX2Zvcm1hdF8zZF8wMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlZTRhZTBiZjUwY2I4NGE2OGViOGRi
ZjE3Mzk2MjhlMzYyMzJjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1hdF8zZF8wMy5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNp
ZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24g
VGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVx
dWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs4
NywgODhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3JtYXRfZGVwdGhfc3RlbmNp
bC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN0b3JhZ2UzZF9mb3Jt
YXRfZGVwdGhfc3RlbmNpbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMTBhYzJhOTRhOTE5MjFjZTkyNzA0
ZWNiYTkxMmUxODA3YTk0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNw
ZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1hdF9kZXB0aF9zdGVuY2lsLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lm
aWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1
bihnbCwgWzg4LCA4OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1hdF9zaXpl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3RvcmFnZTNkX2Zvcm1h
dF9zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY4MWQ4MzA3MWJiN2MzZWMyNzhhOTA2MjZlNWVhOWE4
YTRkMTY0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlv
bi90ZXhzdG9yYWdlM2RfZm9ybWF0X3NpemUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbODksIDkwXSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX2FsaWduLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9hbGlnbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MDA5
OGQxOTBjZGY0OGMxODBmZGYyYjM1OWVjZjk5MjM0YTE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9hbGlnbi5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20g
dGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNw
ZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5ydW4oZ2wsIFszMCwgMzFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfZGVwdGgu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX2RlcHRo
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzMxOTRlYzE1MDdmYzg0MWI1YjAxYmUzZGJlNzE1ZGNkY2MxYmQ0
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhz
dWJpbWFnZTJkX2RlcHRoLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzQwLCA0MV0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vdGV4c3ViaW1hZ2UyZF9lbXB0eV90ZXguaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lm
aWNhdGlvbi90ZXhzdWJpbWFnZTJkX2VtcHR5X3RleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkYTVlZWQ1
OGMxMTM3YzA3OWU3ZDZmOTViMzVhNDJhYTE0NDQ3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9lbXB0eV90ZXguaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9t
IHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBT
cGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVz
dHMucnVuKGdsLCBbMjksIDMwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX3Bib18y
ZF8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRf
cGJvXzJkXzAwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQzOTFjMjUyYTI0Yjc3MjEyZTg0MjY5NjcyMTQw
ZjM2YzI3MGRiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNh
dGlvbi90ZXhzdWJpbWFnZTJkX3Bib18yZF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25f
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIy
NTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFszMiwgMzNdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvXzJkXzAxLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9wYm9fMmRfMDEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MDZjNzA5MTdlYjU1MTM3NDM4ZDUxNTU2OTFmMGRhNmE0YjM0OTJiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJv
XzJkXzAxLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3Bl
Y2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzMzLCAzNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3Vi
aW1hZ2UyZF9wYm9fY3ViZV8wMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9u
L3RleHN1YmltYWdlMmRfcGJvX2N1YmVfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZkMDk1MmM1MzI2
MmUyY2NlNGFlZTM3ZGI5NTk5YzcwNmM2ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX2N1YmVfMDAuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRl
eHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVj
aWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
cnVuKGdsLCBbMzQsIDM1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX3Bib19jdWJl
XzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9w
Ym9fY3ViZV8wMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmZDg0MWM1Y2M2YTcyNDg0YzJkYTMzNTJjZjBj
YTZjZjgxYjZiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmlj
YXRpb24vdGV4c3ViaW1hZ2UyZF9wYm9fY3ViZV8wMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRp
b25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFszNSwgMzZd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX2N1YmVfMDIuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX3Bib19jdWJlXzAyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjYyYTJhMTU3OThjOWM1YTVkNjI5OWM1OWVhNzljMGEwOTA2MjA1MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFn
ZTJkX3Bib19jdWJlXzAyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUg
aXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzM2LCAzN10pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRp
b24vdGV4c3ViaW1hZ2UyZF9wYm9fY3ViZV8wMy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVj
aWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX2N1YmVfMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjZh
YjM1MWI3ZjI5YWM1ZTRmN2EyM2IzZDIzYzYyYTYxYzE2NjZjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX2N1YmVfMDMu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJ
VCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4
dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVj
aWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMucnVuKGdsLCBbMzcsIDM4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJk
X3Bib19jdWJlXzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3Vi
aW1hZ2UyZF9wYm9fY3ViZV8wNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxN2Q4NDAxOGExZDM0NTljNTNi
ZjBiMWUzODU2MjkwYjg4N2IwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF9wYm9fY3ViZV8wNC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNw
ZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRp
b24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1
NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2ws
IFszOCwgMzldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX3BhcmFtcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlMmRfcGJvX3BhcmFt
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI2ZTEwMjdlMGI5MWZlZWIxYjVlZTBmMGE4Njg1MDlhMDVjOWI2
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4
c3ViaW1hZ2UyZF9wYm9fcGFyYW1zLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlvbl90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzM5LCA0MF0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNp
ZmljYXRpb24vdGV4c3ViaW1hZ2UyZF91bnBhY2tfcGFyYW1zLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UyZF91bnBhY2tfcGFyYW1zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGUzNDFlNzk4YjE4NzY1Mzk3YWY3ZTZjMjIyOTVjNjJkNmNkNDc5NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTJkX3Vu
cGFja19wYXJhbXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbMzEsIDMyXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90
ZXhzdWJpbWFnZTNkX2RlcHRoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24v
dGV4c3ViaW1hZ2UzZF9kZXB0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MzVmMWU5Yzg2ZTM2YWFhM2Yx
Yjk3NjIzY2ZlNDQ5OTYxNzdiMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UzZF9kZXB0aC5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmlj
YXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVz
dHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVp
Z2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs3MCwg
NzFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlM2RfcGJvXzJkX2FycmF5XzAwLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UzZF9wYm9fMmRfYXJy
YXlfMDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODQ0M2ZmZmMyZDc3YzJmMzg2ZTM5NDg5MDRjMDUzM2I0
ZWY5YmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9u
L3RleHN1YmltYWdlM2RfcGJvXzJkX2FycmF5XzAwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3BlY2lmaWNhdGlv
bl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwgWzY1LCA2Nl0p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4
dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UzZF9wYm9fMmRfYXJyYXlfMDEuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTNkX3Bib18yZF9hcnJheV8w
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1NzgxOTI4MjdlNTRhMTY1MTMwOTU4OWMxMmU4OGZlZjZlMDg4
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4
c3ViaW1hZ2UzZF9wYm9fMmRfYXJyYXlfMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2
Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNjYsIDY3XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
c3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTNkX3Bib18zZF8wMC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlM2RfcGJvXzNkXzAwLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjVhZGI2MDRhMGFlNjliNzFkZmZkYjBhOWE0YjA0MmI0NGExYTVhZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTNkX3Bib18z
ZF8wMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5P
VCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJH
TCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs2NywgNjhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1Ymlt
YWdlM2RfcGJvXzNkXzAxLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4
c3ViaW1hZ2UzZF9wYm9fM2RfMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmZmMzg3ZTc1MWJhMWVjODEz
NTA0OTgyMDYzOGUzZDRkMGQyMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlM2RfcGJvXzNkXzAxLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc3Bl
Y2lmaWNhdGlvbl90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlv
biBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLnJ1bihnbCwg
WzY4LCA2OV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UzZF9wYm9fcGFyYW1zLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXNwZWNpZmljYXRpb24vdGV4c3ViaW1hZ2UzZF9wYm9fcGFyYW1z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2I0MzExZGIxNDI1NGYwYzEzYzI0N2M1MjY0M2VjYTZmMjExODAz
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lmaWNhdGlvbi90ZXhz
dWJpbWFnZTNkX3Bib19wYXJhbXMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzcGVjaWZpY2F0aW9uX3Rlc3RfZ2Vu
ZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMucnVuKGdsLCBbNjksIDcwXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJlc3BlY2lm
aWNhdGlvbi90ZXhzdWJpbWFnZTNkX3VucGFja19wYXJhbXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJlc3BlY2lmaWNhdGlvbi90ZXhzdWJpbWFnZTNkX3VucGFja19wYXJhbXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZjNmNzI0MmYwOTdmNjk0NzE3MzczZGQ0ZmRiY2RjY2JhNzBiMDg5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzcGVjaWZpY2F0aW9uL3RleHN1YmltYWdlM2RfdW5w
YWNrX3BhcmFtcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNwZWNpZmljYXRpb25fdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5ydW4oZ2wsIFs2NCwgNjVdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmVzdGF0ZXF1ZXJ5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXN0YXRlcXVlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjY2MDBiZWUy
NzM0NjZhMzJhMTNiNmZiOTQ2MjRlYmQzMmZhYTRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmVzdGF0ZXF1ZXJ5Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFN0YXRlIFF1ZXJ5IENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlU3RhdGVRdWVyeS5ydW4oZ2wpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0
dXJld3JhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMTk4NTI1OTVkYjE3NDcyYjgxMTFlOWIyYzBjNTkw
YjRiNDcyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAuaHRtbApA
QCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRleHR1cmUgV3JhcCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzIsIDNdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmV3cmFwL2VhY19yMTFfbnBvdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2VhY19yMTFf
bnBvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzY2JlNTAwYTdjZTQ5MDYyYjQ5Y2VhZmM0MDg1NjA0MmYz
N2FhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZWFjX3IxMV9u
cG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUg
U3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzMsIDRd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmV3cmFwL2VhY19yMTFfcG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZWFjX3Ix
MV9wb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzUxYWE5OThhMjQzZGZlYTk4OTBjNTI3ZTVjMzlkZjUy
YmIyYzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2VhY19yMTFf
cG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUg
U3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzIsIDNd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmV3cmFwL2VhY19yZzExX25wb3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9lYWNf
cmcxMV9ucG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGExYWU4ZjkyNDMwOTc3YWQxMDM0MjYwYWYwNjBk
N2FhOTlhMTdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9lYWNf
cmcxMV9ucG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRl
eHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3Jh
cFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwg
WzcsIDhdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmV3cmFwL2VhY19yZzExX3BvdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFw
L2VhY19yZzExX3BvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkNGJmMmMzY2U0MjRjYTMyYjRjMTQ1MzI5
MTlkNzdiNzcyMTIzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAv
ZWFjX3JnMTFfcG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
V3JhcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycs
IG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihn
bCwgWzYsIDddKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmV3cmFwL2VhY19zaWduZWRfcjExX25wb3QuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJld3JhcC9lYWNfc2lnbmVkX3IxMV9ucG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdhZWNhNDc5
ODM3ZWM3MmU0ZWVkNGZiYTcyNTdmNGViYzY2OTI3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJld3JhcC9lYWNfc2lnbmVkX3IxMV9ucG90Lmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2VhY19zaWduZWRfcjEx
X3BvdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2VhY19zaWduZWRfcjExX3BvdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjYjc1ZTIyZTIxNDUzZWQyNGFiMGQzZTc5NWU0NTQxNzQxMzFiYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZWFjX3NpZ25lZF9yMTFfcG90
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3Bl
Y2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2
IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOwor
CitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzQsIDVdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmV3cmFwL2VhY19zaWduZWRfcmcxMV9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAv
ZWFjX3NpZ25lZF9yZzExX25wb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTA1Yzc2Nzc1NWU3MTU1ODQ3
YzJiN2MwODRjMGRjNDYzMzAwNWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmV3cmFwL2VhY19zaWduZWRfcmcxMV9ucG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQor
CitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9j
bG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVx
cC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNj
cmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJl
V3JhcFRlc3RzLnJ1bihnbCwgWzksIDEwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9lYWNfc2lnbmVkX3JnMTFfcG90Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZWFjX3NpZ25lZF9yZzExX3BvdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzZjNhOGI1MzY5OTkzZDg4ZDgzNTZkNDcyZTRlYjI4MTVjNjBjMmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZWFjX3NpZ25lZF9yZzExX3BvdC5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmlj
YXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVp
Z2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cy5ydW4oZ2wsIFs4LCA5XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3Jh
cC9ldGMyX2VhY19yZ2JhOF9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9l
YWNfcmdiYThfbnBvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYWI0Y2FhNDg1NzY4YzU1NWVjNTNmNWNi
MThkZTNmYjgyMGE3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAv
ZXRjMl9lYWNfcmdiYThfbnBvdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVdyYXBUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0
cy5ydW4oZ2wsIFsxOSwgMjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfZWFjX3JnYmE4X3BvdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfZWFjX3JnYmE4X3BvdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
ZDFkY2QwMzA2NWI1YjE3ZmNhY2U4NWRjYzY4YjNjNDMwZTU4ZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9lYWNfcmdiYThfcG90Lmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJl
d3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzE4LCAxOV0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9l
YWNfc3JnYjhfYWxwaGE4X25wb3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9ldGMyX2Vh
Y19zcmdiOF9hbHBoYThfbnBvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YzZiZWJiMDQ4ZmM4NDU1NTZl
MGIwYjJhMTA2ZTMwMmJmZWY2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVy
ZXdyYXAvZXRjMl9lYWNfc3JnYjhfYWxwaGE4X25wb3QuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmV3cmFwX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRl
eHR1cmVXcmFwVGVzdHMucnVuKGdsLCBbMjEsIDIyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9ldGMyX2VhY19zcmdiOF9h
bHBoYThfcG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9lYWNfc3JnYjhfYWxw
aGE4X3BvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZmVmOGE2ZWMzYTRhNzAxZGNjYjNhODA5ZWNlNTEy
NzkwYThjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9l
YWNfc3JnYjhfYWxwaGE4X3BvdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VGV4dHVyZVdyYXBUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0
cy5ydW4oZ2wsIFsyMCwgMjFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfcmdiOF9ucG90Lmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXdyYXAvZXRjMl9yZ2I4X25wb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjllOGFkYjNm
ODNmZjBjNzkwMDE3ZDRhNmVkZjg3OWIxMTAwNmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmV3cmFwL2V0YzJfcmdiOF9ucG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEt
LQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFy
eS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFs
LmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0
dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzExLCAxMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9yZ2I4X3BvdC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfcmdiOF9wb3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OWNjNjM5OGZmYjliOGNmZmNiNTcxMDY0M2ZjZTVkNjQ4YTFkMzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfcmdiOF9wb3QuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmV3cmFw
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRleHR1cmVXcmFwVGVzdHMucnVuKGdsLCBbMTAsIDExXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9ldGMyX3JnYjhf
cHVuY2h0aHJvdWdoX2FscGhhMV9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRj
Ml9yZ2I4X3B1bmNodGhyb3VnaF9hbHBoYTFfbnBvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZDhjMDEx
Njc4NzZhMzJjOTdjMTIzN2M5MGRiMjA5ZTMzYzdlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdGV4dHVyZXdyYXAvZXRjMl9yZ2I4X3B1bmNodGhyb3VnaF9hbHBoYTFfbnBvdC5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmlj
YXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVp
Z2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cy5ydW4oZ2wsIFsxNSwgMTZdKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3
cmFwL2V0YzJfcmdiOF9wdW5jaHRocm91Z2hfYWxwaGExX3BvdC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Rl
eHR1cmV3cmFwL2V0YzJfcmdiOF9wdW5jaHRocm91Z2hfYWxwaGExX3BvdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA3YjVjZjIwOWRkNWNjZjUwZWNiN2I4M2ZiNzFlNTE0ZGRmZjI1YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9yZ2I4X3B1bmNodGhyb3VnaF9hbHBo
YTFfcG90Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB0ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1
cmUgU3BlY2lmaWNhdGlvbiBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjU2IiBoZWlnaHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzE0
LCAxNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdGV4dHVyZXdyYXAvZXRjMl9zcmdiOF9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdy
YXAvZXRjMl9zcmdiOF9ucG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJjYjAzNGNjZGVkZDcxZDY5MmFi
NTA5MzM4Yzk0MDJjMDM5NWI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJl
d3JhcC9ldGMyX3NyZ2I4X25wb3QuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmV3cmFwX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVGV4dHVyZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUv
Z29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRleHR1cmVXcmFwVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0Pgor
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgn
Y2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVz
dHMucnVuKGdsLCBbMTMsIDE0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9ldGMyX3NyZ2I4X3BvdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RleHR1cmV3cmFwL2V0YzJfc3JnYjhfcG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYxMjRmMDQ4
OTcwMDNhYWEzNDc4YzI3OTcyMmJjMDJiYmYwMDQ5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90ZXh0dXJld3JhcC9ldGMyX3NyZ2I4X3BvdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXdyYXBfdGVzdF9n
ZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4
dHVyZVdyYXBUZXN0cy5ydW4oZ2wsIFsxMiwgMTNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfc3JnYjhfcHVuY2h0
aHJvdWdoX2FscGhhMV9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvZXRjMl9zcmdi
OF9wdW5jaHRocm91Z2hfYWxwaGExX25wb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmQzODMzOGJlNzZm
NGFhNjBjNTkyNTZkMmYzMjBmNjU3Mjg4ODkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3RleHR1cmV3cmFwL2V0YzJfc3JnYjhfcHVuY2h0aHJvdWdoX2FscGhhMV9ucG90Lmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0
ZXh0dXJld3JhcF90ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRleHR1cmUgU3BlY2lmaWNhdGlv
biBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzJyk7PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWlnaHQ9
IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlv
bmFsLmdsZXMzLmVzM2ZUZXh0dXJlV3JhcFRlc3RzLnJ1bihnbCwgWzE3LCAxOF0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAv
ZXRjMl9zcmdiOF9wdW5jaHRocm91Z2hfYWxwaGExX3BvdC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1
cmV3cmFwL2V0YzJfc3JnYjhfcHVuY2h0aHJvdWdoX2FscGhhMV9wb3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yN2FmMDk0ZWQyNWVjNDM4M2NlNmE5ZGQ4YmI2ZmE3OTdmYjViYWE0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL2V0YzJfc3JnYjhfcHVuY2h0aHJvdWdoX2FscGhh
MV9wb3QuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHRleHR1cmV3cmFwX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVGV4dHVy
ZSBTcGVjaWZpY2F0aW9uIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVz
dHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIyNTYiIGhlaWdodD0iMjU2Ij4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdM
VGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRleHR1cmVXcmFwVGVzdHMucnVuKGdsLCBbMTYs
IDE3XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90ZXh0dXJld3JhcC9yZ2JhOF9ucG90Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvcmdi
YThfbnBvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNWE0MDYwN2JiMGRmMTE4ZGE0ZDg1MWEwODk4NmE4
Y2Q1NDMwODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdGV4dHVyZXdyYXAvcmdiYThf
bnBvdC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQor
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJl
IFNwZWNpZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0
cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjI1NiIgaGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAy
KTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cy5ydW4oZ2wsIFsxLCAy
XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
ZXh0dXJld3JhcC9yZ2JhOF9wb3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90ZXh0dXJld3JhcC9yZ2JhOF9w
b3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWI5YjQ2MzlkYzUzNzEzOGQxZmM1MGE3MWQ4NmIzNTc2YTNh
YWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RleHR1cmV3cmFwL3JnYmE4X3BvdC5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gdGV4dHVyZXdyYXBfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUZXh0dXJlIFNwZWNp
ZmljYXRpb24gVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVGV4dHVyZVdyYXBUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zv
cm1mZWVkYmFjay9hcnJheV9lbGVtZW50X2ludGVybGVhdmVkX2xpbmVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdHJhbnNmb3JtZmVlZGJhY2svYXJyYXlfZWxlbWVudF9pbnRlcmxlYXZlZF9saW5lcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNiZjVlMGNiMmQ1MTRmNDM3MmZkMGEzMGU1NGY2ZTIzYzQ2ZDg4MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYXJyYXlfZWxlbWVu
dF9pbnRlcmxlYXZlZF9saW5lcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJh
bnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Zy
YW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4K
KzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisK
K2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTgs
IDE5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9lbGVtZW50X2ludGVybGVhdmVkX3BvaW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2FycmF5X2VsZW1lbnRfaW50ZXJsZWF2ZWRf
cG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFkYzg3NTQzODJiZjI1NzlhYzg4NGZiOGUxM2EzZDYz
NjUyOTRmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9h
cnJheV9lbGVtZW50X2ludGVybGVhdmVkX3BvaW50cy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQw
Ij48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0
cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
cnVuKGdsLCBbMTcsIDE4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9lbGVtZW50X2ludGVybGVhdmVk
X3RyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2FycmF5X2VsZW1l
bnRfaW50ZXJsZWF2ZWRfdHJpYW5nbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZiZGYwMGJjM2VkYzJk
YjA4YWY5ZDVhMTg5YjhhNjZkMWQxZTAxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9lbGVtZW50X2ludGVybGVhdmVkX3RyaWFuZ2xlcy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVk
YmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlw
ZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJl
c2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTksIDIwXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJh
eV9lbGVtZW50X3NlcGFyYXRlX2xpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJh
Y2svYXJyYXlfZWxlbWVudF9zZXBhcmF0ZV9saW5lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NjY3YzZi
MjIyMDgwNTcxNTRjYmQ0YTBlNjU4NjBlOTcxYmEwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYXJyYXlfZWxlbWVudF9zZXBhcmF0ZV9saW5lcy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVk
YmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlw
ZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJl
c2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTUsIDE2XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJh
eV9lbGVtZW50X3NlcGFyYXRlX3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRi
YWNrL2FycmF5X2VsZW1lbnRfc2VwYXJhdGVfcG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkyZGQy
NTUxZTJkYWYxMTg4Yzk5ZjMyYzNmMmNmNmJhMjU1Y2Q3NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9lbGVtZW50X3NlcGFyYXRlX3BvaW50cy5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBG
ZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdv
b2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycp
Ozwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFy
VHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7
cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMz
ZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTQsIDE1XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9h
cnJheV9lbGVtZW50X3NlcGFyYXRlX3RyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9y
bWZlZWRiYWNrL2FycmF5X2VsZW1lbnRfc2VwYXJhdGVfdHJpYW5nbGVzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGJmNWNmOTU5MDM2NDE5MmNkZjQ3MmUwNzVkNzg5ZTUxYmUwOWRlMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9lbGVtZW50X3NlcGFyYXRl
X3RyaWFuZ2xlcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5v
cGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTYsIDE3XSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zv
cm1mZWVkYmFjay9hcnJheV9pbnRlcmxlYXZlZF9saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5z
Zm9ybWZlZWRiYWNrL2FycmF5X2ludGVybGVhdmVkX2xpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM0
YjA4OGQzNWVhNGQxY2U0ZDgzYjg5MmEzNzU4ZmE2Nzk1YjEwNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9pbnRlcmxlYXZlZF9saW5lcy5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVk
YmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlw
ZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJl
c2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMTIsIDEzXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJh
eV9pbnRlcmxlYXZlZF9wb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9h
cnJheV9pbnRlcmxlYXZlZF9wb2ludHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTA4NTM4ZjJiN2Y1YWVm
OWExYWFlNjBkMmMxYzZkMDZiYmQ1NTM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Ry
YW5zZm9ybWZlZWRiYWNrL2FycmF5X2ludGVybGVhdmVkX3BvaW50cy5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNo
YWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNj
cmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhl
aWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5n
QnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRi
YWNrVGVzdHMucnVuKGdsLCBbMTEsIDEyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9pbnRlcmxlYXZl
ZF90cmlhbmdsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9pbnRl
cmxlYXZlZF90cmlhbmdsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmVhNTI3Yjc2NGQ1MWMzMTZkODZh
YjlhOTAwMzU5NmU2MDJjYmJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9y
bWZlZWRiYWNrL2FycmF5X2ludGVybGVhdmVkX3RyaWFuZ2xlcy5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRv
d190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdo
dD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVm
ZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMucnVuKGdsLCBbMTMsIDE0XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9zZXBhcmF0ZV9saW5l
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2FycmF5X3NlcGFyYXRlX2xpbmVz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDkyZTZlMDAzZjBiNDVkOTkwYTAwM2NhZmY0ZTdhNjhhNjRmOWMw
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9z
ZXBhcmF0ZV9saW5lcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbOSwgMTBdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5z
Zm9ybWZlZWRiYWNrL2FycmF5X3NlcGFyYXRlX3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5z
Zm9ybWZlZWRiYWNrL2FycmF5X3NlcGFyYXRlX3BvaW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YTdh
ZDk1Y2IyNmExYmNiZWFlNzYzMzNiNGI4OTY0NmFiMmVjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYXJyYXlfc2VwYXJhdGVfcG9pbnRzLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0
ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRiYWNr
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlVXRp
bCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtwcmVzZXJ2
ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNm
b3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFs4LCA5XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9zZXBh
cmF0ZV90cmlhbmdsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9hcnJheV9z
ZXBhcmF0ZV90cmlhbmdsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWQ0Yjc0NTBkNTM1MjNiZTAwN2Ez
MDQ1ODY3YTFhYzdhMGVkNWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9y
bWZlZWRiYWNrL2FycmF5X3NlcGFyYXRlX3RyaWFuZ2xlcy5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJh
cnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25h
bC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0i
MjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVy
OiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMucnVuKGdsLCBbMTAsIDExXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9iYXNpY190eXBlc19pbnRlcmxlYXZl
ZF9saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2Jhc2ljX3R5cGVzX2lu
dGVybGVhdmVkX2xpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY2NTNhOTdiN2I0MDQyNjU0MjA4MTA2
YmU4MGZjOTQyYmM4NDZmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1m
ZWVkYmFjay9iYXNpY190eXBlc19pbnRlcmxlYXZlZF9saW5lcy5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRv
d190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxp
YnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rp
b25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlw
dD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdo
dD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVm
ZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNr
VGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYmFzaWNfdHlwZXNfaW50ZXJsZWF2
ZWRfcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYmFzaWNfdHlwZXNf
aW50ZXJsZWF2ZWRfcG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ3NTNkYTVhOTk1MDkwNTU1MWI0
ZmQ3YmU0ODdlOTg3NjI0NjhiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zv
cm1mZWVkYmFjay9iYXNpY190eXBlc19pbnRlcmxlYXZlZF9wb2ludHMuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
aGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMnKTs8L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGVVdGlsJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzIwIiBo
ZWlnaHQ9IjI0MCI+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywge3ByZXNlcnZlRHJhd2lu
Z0J1ZmZlcjogdHJ1ZX0sIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLnJ1bihnbCwgWzUsIDZdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2Jhc2ljX3R5cGVzX2ludGVy
bGVhdmVkX3RyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2Jhc2lj
X3R5cGVzX2ludGVybGVhdmVkX3RyaWFuZ2xlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMWYyMzkxMjZh
NGYyYTAzNTE3MjBkOTBiMTI4NTE0Mjc1YmM2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdHJhbnNmb3JtZmVlZGJhY2svYmFzaWNfdHlwZXNfaW50ZXJsZWF2ZWRfdHJpYW5nbGVzLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
ZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZl
ZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzJyk7
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJU
eXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtw
cmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFs3LCA4XSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9iYXNp
Y190eXBlc19zZXBhcmF0ZV9saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNr
L2Jhc2ljX3R5cGVzX3NlcGFyYXRlX2xpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNjU1MTQxZTQ2
YmQxNDkyZWZlNGNmYzViNDA5Nzk2YzQxMjAxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My90cmFuc2Zvcm1mZWVkYmFjay9iYXNpY190eXBlc19zZXBhcmF0ZV9saW5lcy5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4
dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBU
ZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9j
bG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWly
ZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0
PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwn
KTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIz
MjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVE
cmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9y
bUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMywgNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYmFzaWNfdHlwZXNf
c2VwYXJhdGVfcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svYmFzaWNf
dHlwZXNfc2VwYXJhdGVfcG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRiZTQxNTkyODIxNmMzZTZh
NTg2YjAzYThiY2MzZmViNzM0MjA4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFu
c2Zvcm1mZWVkYmFjay9iYXNpY190eXBlc19zZXBhcmF0ZV9wb2ludHMuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVz
aGFkb3dfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3Vy
ZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMnKTs8L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGVVdGlsJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzIwIiBo
ZWlnaHQ9IjI0MCI+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywge3ByZXNlcnZlRHJhd2lu
Z0J1ZmZlcjogdHJ1ZX0sIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVk
YmFja1Rlc3RzLnJ1bihnbCwgWzIsIDNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2Jhc2ljX3R5cGVzX3NlcGFy
YXRlX3RyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2Jhc2ljX3R5
cGVzX3NlcGFyYXRlX3RyaWFuZ2xlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNzM2MzBmYjNiYzE0MWI4
ZDdjNWZlZTI2NTMzMWY2MTIzZTkyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJh
bnNmb3JtZmVlZGJhY2svYmFzaWNfdHlwZXNfc2VwYXJhdGVfdHJpYW5nbGVzLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0
dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRiYWNrIFRl
c3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzJyk7PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlVXRpbCcp
Ozwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMy
MCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtwcmVzZXJ2ZURy
YXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFs0LCA1XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9pbnRlcnBvbGF0aW9u
X2NlbnRyb2lkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svaW50ZXJwb2xhdGlv
bl9jZW50cm9pZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViY2ViMTZkYjJkMzFlYmFkMmUyNDg2MzVjZGEy
YjI3Y2JlODc2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJh
Y2svaW50ZXJwb2xhdGlvbl9jZW50cm9pZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVy
YXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3Vy
ZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVw
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5l
czNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwg
Mik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGds
LCBbMjIsIDIzXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9pbnRlcnBvbGF0aW9uX2ZsYXQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy90cmFuc2Zvcm1mZWVkYmFjay9pbnRlcnBvbGF0aW9uX2ZsYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YTM1Mjk4NjdkZmMzNDEwNTBlNmIwZjk2ZTkwNmYwNjJlOGIwMGU0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2ludGVycG9sYXRpb25fZmxhdC5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZy
b20gdGV4dHVyZXNoYWRvd190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgor
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVk
YmFjayBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlw
ZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJl
c2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMucnVuKGdsLCBbMjEsIDIyXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9pbnRl
cnBvbGF0aW9uX3Ntb290aC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL2ludGVy
cG9sYXRpb25fc21vb3RoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk0NjRlZTI2MzE2YTU0MTU5YjdiZDg5
MWIyYTFiMTk3YTc5ODc4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1m
ZWVkYmFjay9pbnRlcnBvbGF0aW9uX3Ntb290aC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0K
KworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0X2dl
bmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIj48
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVl
fSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMucnVu
KGdsLCBbMjAsIDIxXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9wb2ludF9zaXplLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dHJhbnNmb3JtZmVlZGJhY2svcG9pbnRfc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzkxYmZmNmI1
NWZmMWUyNWZmNTlkOWM0MDQxZGM1M2E4M2JlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdHJhbnNmb3JtZmVlZGJhY2svcG9pbnRfc2l6ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGV4dHVyZXNoYWRvd190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFRyYW5zZm9ybSBGZWVkYmFjayBUZXN0czwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cycpOzwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1VmFyVHlwZVV0aWwnKTs8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQw
Ij48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wg
PSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCB7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0
cnVlfSwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMu
cnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svcG9zaXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
cmFuc2Zvcm1mZWVkYmFjay9wb3NpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNGRjNmYwZWVjMDhl
NTUyOWFlZmYzMDFiMTQ0MWFlMDdkYjMwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dHJhbnNmb3JtZmVlZGJhY2svcG9zaXRpb24uaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisK
K1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRleHR1cmVzaGFkb3dfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBUcmFuc2Zvcm0gRmVlZGJhY2sgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVzdHMnKTs8L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGVVdGlsJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywge3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZX0s
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLnJ1bihn
bCwgWzAsIDFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL3JhbmRvbV9pbnRlcmxlYXZlZF9saW5lcy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL3JhbmRvbV9pbnRlcmxlYXZlZF9saW5lcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmNjNiZmRjZjdiOTQwMDg0YzE3YTNlZmQ4ZjM3MGVlNzI0MGJmNmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdHJhbnNmb3JtZmVlZGJhY2svcmFuZG9tX2ludGVy
bGVhdmVkX2xpbmVzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVHJhbnNmb3JtIEZlZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVWYXJUeXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFsyNywgMjhdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5z
Zm9ybWZlZWRiYWNrL3JhbmRvbV9pbnRlcmxlYXZlZF9wb2ludHMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90
cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21faW50ZXJsZWF2ZWRfcG9pbnRzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDM5MDI5YzBhOTI1Y2FkZTQ3MWNhMzFiNWQ3YTJjZTViODRhNWZkZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21faW50ZXJsZWF2ZWRfcG9p
bnRzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNm
b3JtIEZlZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5n
bHVWYXJUeXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRi
YWNrL3JhbmRvbV9pbnRlcmxlYXZlZF90cmlhbmdsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zv
cm1mZWVkYmFjay9yYW5kb21faW50ZXJsZWF2ZWRfdHJpYW5nbGVzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTc3OThhNDM1NjFjNmU5OTc2NWY2NjkxYjJjNDM0NGJkZjE0ZGQ0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21faW50ZXJsZWF2ZWRfdHJpYW5n
bGVzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNm
b3JtIEZlZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rl
c3RzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5n
bHVWYXJUeXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFsyOCwgMjldKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRi
YWNrL3JhbmRvbV9zZXBhcmF0ZV9saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRi
YWNrL3JhbmRvbV9zZXBhcmF0ZV9saW5lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2YmZlYTgwMmZkYzNh
YzBjZmNmYTZlOGM4ZjY2ZjJkYjU2Y2E3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dHJhbnNmb3JtZmVlZGJhY2svcmFuZG9tX3NlcGFyYXRlX2xpbmVzLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hh
ZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRiYWNrIFRlc3RzPC90
aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8c2Ny
aXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlVXRpbCcpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVp
Z2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIHtwcmVzZXJ2ZURyYXdpbmdC
dWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0cy5ydW4oZ2wsIFsyNCwgMjVdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3RyYW5zZm9ybWZlZWRiYWNrL3JhbmRvbV9zZXBhcmF0ZV9w
b2ludHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21fc2VwYXJhdGVf
cG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NkNmY1MjBhZTRmMWM0YjFmM2ZjNWMyZjNkMzVlNGVi
MmM1YmI1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9y
YW5kb21fc2VwYXJhdGVfcG9pbnRzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9y
LnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgVHJhbnNmb3JtIEZlZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dv
b2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZU
cmFuc2Zvcm1GZWVkYmFja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsK
KworZnVuY3Rpb25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFsy
MywgMjRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3RyYW5zZm9ybWZlZWRiYWNrL3JhbmRvbV9zZXBhcmF0ZV90cmlhbmdsZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21fc2VwYXJhdGVfdHJpYW5nbGVzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWIyMjFlZjA1M2JhOTJjNzExZTFmM2ZhNDM3NTdiM2Q2NDY3OTlmZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy90cmFuc2Zvcm1mZWVkYmFjay9yYW5kb21fc2VwYXJh
dGVfdHJpYW5nbGVzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMg
YXV0by1nZW5lcmF0ZWQgZnJvbSB0ZXh0dXJlc2hhZG93X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBO
T1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgVHJhbnNmb3JtIEZlZWRiYWNrIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVWYXJUeXBlVXRpbCcpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ydW4oZ2wsIFsyNSwgMjZdKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZv
cm1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FiMTM2
ZjVmNmM0MWVjN2NmMWZkNDViMDEwZGViMmJiYTA2MzAwZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy91bmlmb3JtYXBpLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEFQSSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3Jt
QXBpVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywg
bnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1BcGlUZXN0cy5ydW4oZ2wp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5p
Zm9ybWFwaS9pbmZvX3F1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWFwaS9pbmZvX3F1ZXJ5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2I3NzdlODc1ZjA3MmI4OTJiNWYxM2MwNDg2Mjk0MmM2NmEwOTU1
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpL2luZm9fcXVlcnkuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBm
cm9tIHVuaWZvcm1hcGlfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEFQSSBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQXBpVGVzdHMnKTs8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1
bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1BcGlUZXN0cy5ydW4oZ2wsIFswLCAxXSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYXBp
L3JhbmRvbS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1hcGkvcmFuZG9tLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjlhMjBjNmQ0YmI0NWJmNDJjOTRiNDEyMDJlOTJkZmYyN2IzNGVhNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpL3JhbmRvbS5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdW5pZm9ybWFwaV90ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFVuaWZvcm0gQVBJIENvbmZvcm1hbmNlIFRlc3RzPC90aXRs
ZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1s
aWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1BcGlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZh
cz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNm
VW5pZm9ybUFwaVRlc3RzLnJ1bihnbCwgWzMsIDRdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1hcGkvdmFsdWVfYXNzaWduZWQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpL3ZhbHVlX2Fzc2lnbmVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWNjZTc5NmU2YjkzY2Y1ZTkyYjFmZjRjYjBlYzVjOTJlMWU5Yzc3YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpL3ZhbHVlX2Fzc2lnbmVkLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB1bmlmb3JtYXBp
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybSBBUEkgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5pZm9ybUFwaVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZVbmlmb3JtQXBpVGVzdHMucnVuKGdsLCBbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWFwaS92YWx1ZV9pbml0aWFs
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWFwaS92YWx1ZV9pbml0aWFsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDI0NGM3MGNkOTZlYWFhNGNiMDI3MmFhNmM1Mzk3ZjM0ZDU3YTk1ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYXBpL3ZhbHVlX2luaXRpYWwuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHVuaWZvcm1h
cGlfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEFQSSBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQXBpVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlVuaWZvcm1BcGlUZXN0cy5ydW4oZ2wsIFsxLCAyXSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9pbnN0YW5j
ZV9hcnJheV9iYXNpY190eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWJ1ZmZlcnMvaW5zdGFu
Y2VfYXJyYXlfYmFzaWNfdHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNzY4NzIyYjRmMzJkMTZjNGM5
YTQ2M2M4YmFkOThhMDg1NDExNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9y
bWJ1ZmZlcnMvaW5zdGFuY2VfYXJyYXlfYmFzaWNfdHlwZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdW5pZm9ybWJ1ZmZlcnNf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJsb2NrIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5ydW4oWzYsIDddKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL211bHRpX2Jh
c2ljX3R5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWJ1ZmZlcnMvbXVsdGlfYmFzaWNfdHlw
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMDVlMjc2ZmY3MDRhYTY3M2ZiYTQ2MDg4YzRjMDdmNzE2YzU3
Y2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL211bHRpX2Jh
c2ljX3R5cGVzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB1bmlmb3JtYnVmZmVyc190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFVuaWZvcm0gQmxvY2sgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5p
Zm9ybUJsb2NrVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2Fu
dmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3Rz
LnJ1bihbNywgOF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvdW5pZm9ybWJ1ZmZlcnMvbXVsdGlfbmVzdGVkX3N0cnVjdC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2ds
ZXMzL3VuaWZvcm1idWZmZXJzL211bHRpX25lc3RlZF9zdHJ1Y3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MTUyNTY5NTVlYWRiODFjNjVmYzM2YWE4MzAxNjUxMTlmZjk3OGMxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL211bHRpX25lc3RlZF9zdHJ1Y3QuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHVu
aWZvcm1idWZmZXJzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybSBCbG9jayBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cycpOzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIg
aGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKwor
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5pZm9ybUJsb2NrVGVzdHMucnVuKFs4LCA5XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVm
ZmVycy9yYW5kb20uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9yYW5kb20uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMWQxYmY2ODU4NzQyZTZjZDY4OTU3MzgzNzYxODFiMTA4ZjRkZTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL3JhbmRvbS5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdW5p
Zm9ybWJ1ZmZlcnNfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJsb2NrIENvbmZv
cm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5n
b29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzJyk7PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBo
ZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5ydW4oWzksIDEwXSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVm
ZmVycy9zaW5nbGVfYmFzaWNfYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9z
aW5nbGVfYmFzaWNfYXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDU4YzM5MThiYzgxZDkxOGQyNGJl
MWI4NzhlODVmYjI5NjlkZDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1i
dWZmZXJzL3NpbmdsZV9iYXNpY19hcnJheS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKwor
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdW5pZm9ybWJ1ZmZlcnNfdGVzdF9nZW5l
cmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJsb2NrIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRp
bHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJy
YXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9u
YWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFz
PgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZV
bmlmb3JtQmxvY2tUZXN0cy5ydW4oWzEsIDJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL3NpbmdsZV9iYXNpY190eXBl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdW5pZm9ybWJ1ZmZlcnMvc2luZ2xlX2Jhc2ljX3R5cGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMGViYmVkNzk4MGJlNDFhYTNiYzE1NGIyMzMxZjY1ODU2NDJjMzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL3NpbmdsZV9iYXNpY190eXBl
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgZnJvbSB1bmlmb3JtYnVmZmVyc190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFVuaWZvcm0g
QmxvY2sgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5pZm9ybUJsb2Nr
VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVs
bCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLnJ1bihbMCwg
MV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dW5pZm9ybWJ1ZmZlcnMvc2luZ2xlX25lc3RlZF9zdHJ1Y3QuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlm
b3JtYnVmZmVycy9zaW5nbGVfbmVzdGVkX3N0cnVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMzNkODcz
MWE1YzQyMWUyNGRmZDMyYWU5MjNiNzM1OTk1MzliZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdW5pZm9ybWJ1ZmZlcnMvc2luZ2xlX25lc3RlZF9zdHJ1Y3QuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHVuaWZvcm1i
dWZmZXJzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybSBCbG9jayBDb25mb3JtYW5j
ZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5y
ZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0
PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVW5pZm9ybUJsb2NrVGVzdHMucnVuKFs0LCA1XSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9z
aW5nbGVfbmVzdGVkX3N0cnVjdF9hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJz
L3NpbmdsZV9uZXN0ZWRfc3RydWN0X2FycmF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA2ZmRmOWNkMzBm
NTA5ZTEwYjQwMDllMjU1Mzk3OThmMWY0Njc5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My91bmlmb3JtYnVmZmVycy9zaW5nbGVfbmVzdGVkX3N0cnVjdF9hcnJheS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdW5pZm9y
bWJ1ZmZlcnNfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBVbmlmb3JtIEJsb2NrIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cy5ydW4oWzUsIDZdKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3VuaWZvcm1idWZmZXJz
L3NpbmdsZV9zdHJ1Y3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9zaW5nbGVfc3Ry
dWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk3N2Y2NDkxOWExMDA2MjY5NDMwMGE0NDQyYzA2ZmMyMjBh
MjYyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy91bmlmb3JtYnVmZmVycy9zaW5nbGVf
c3RydWN0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgZnJvbSB1bmlmb3JtYnVmZmVyc190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVE
SVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFVu
aWZvcm0gQmxvY2sgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVW5pZm9y
bUJsb2NrVGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLnJ1
bihbMiwgM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvdW5pZm9ybWJ1ZmZlcnMvc2luZ2xlX3N0cnVjdF9hcnJheS5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L3VuaWZvcm1idWZmZXJzL3NpbmdsZV9zdHJ1Y3RfYXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjM5
YmJmZWM1MWZjNjA5MzY3ZjEzYjJlMjA3NmUyYzEyNjA3YjMxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3VuaWZvcm1idWZmZXJzL3NpbmdsZV9zdHJ1Y3RfYXJyYXkuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHVuaWZv
cm1idWZmZXJzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVW5pZm9ybSBCbG9jayBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZVbmlmb3JtQmxvY2tUZXN0cycpOzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVW5pZm9ybUJsb2NrVGVzdHMucnVuKFszLCA0XSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheW9i
amVjdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5b2JqZWN0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTY4ODhiMDU5ZWZjZGNjZmU1MWQ5NWM0ZTY4YjZjMDY3MTU5MjAzZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheW9iamVjdC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5IE9iamVj
dCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1
aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjU2IiBoZWln
aHQ9IjI1NiI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLnJ1bihnbCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMv
bXVsdGlwbGVfYXR0cmlidXRlcy5jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9t
dWx0aXBsZV9hdHRyaWJ1dGVzLmNvdW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUzODBjOTVlZWE2MzMz
NTRmYzQwMTE1NGNiNGZlMTMyYTE2YTI4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92
ZXJ0ZXhhcnJheXMvbXVsdGlwbGVfYXR0cmlidXRlcy5jb3VudC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlz
X3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0
czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Ns
b3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJl
KCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmds
ZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzIzLCAyNF0pOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL211bHRp
cGxlX2F0dHJpYnV0ZXMub3V0cHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL211bHRp
cGxlX2F0dHJpYnV0ZXMub3V0cHV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdmZjRhODQyMGIyYTA1ZjVi
MzI3Njg1MWQ1MjMxZmMzMzA1NDEwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0
ZXhhcnJheXMvbXVsdGlwbGVfYXR0cmlidXRlcy5vdXRwdXQuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190
ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9z
dXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgn
ZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8
L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3
dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVz
My5lczNmVmVydGV4QXJyYXlUZXN0cy5ydW4oZ2wsIFsyNiwgMjddKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9tdWx0aXBs
ZV9hdHRyaWJ1dGVzLnN0b3JhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvbXVsdGlw
bGVfYXR0cmlidXRlcy5zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRkYTQ1ODAwOWE4OTE1YmE0
OTI2MDY0M2I4MGZmNjFjMmRjNjY0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0
ZXhhcnJheXMvbXVsdGlwbGVfYXR0cmlidXRlcy5zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlZlcnRleEFycmF5VGVzdHMucnVuKGdsLCBbMjQsIDI1XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvbXVsdGlw
bGVfYXR0cmlidXRlcy5zdHJpZGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvbXVsdGlw
bGVfYXR0cmlidXRlcy5zdHJpZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTEzYTJkOTNmOGFkYzI2MTYw
ODk3M2UzY2Y5ZGIwMjE1NGVmMzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRl
eGFycmF5cy9tdWx0aXBsZV9hdHRyaWJ1dGVzLnN0cmlkZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rl
c3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1
cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdm
dW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwv
Y2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzI1LCAyNl0pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9h
dHRyaWJ1dGUuZmlyc3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJp
YnV0ZS5maXJzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMmIxYTIzYjdjMDQzZDU5MmYyNzcxMGJkYjFk
ZDA2NjI2MDRkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3Np
bmdsZV9hdHRyaWJ1dGUuZmlyc3QuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRvci5w
eQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRp
dGxlPldlYkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xv
c3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAt
ZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVz
My5lczNmVmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52
YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3Jp
cHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJy
YXlUZXN0cy5ydW4oZ2wsIFsyMiwgMjNdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm5vcm1h
bGl6ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
ZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm5vcm1h
bGl6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5Mjg5MGE5N2M5ZDUyZTAxOWNkMmMzOGU4ZTk0YWYxZjgz
OTM0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9h
dHRyaWJ1dGUubm9ybWFsaXplLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5
VGVzdHMucnVuKGdsLCBbMSwgMl0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmI5Mjg2YzFhYjlmYjM5MzNhNWIzY2VkYjdmOTk1MzI3ZTNmNDc3OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5v
ZmZzZXQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQh
CisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRl
eCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJy
YXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBu
dWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cy5ydW4oZ2ws
IFsyMSwgMjJdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm91dHB1dF90eXBlLmJ5dGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5i
eXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJhYmRlMjU4NzFkMmQ5OGU0MTg3OTViNmZjODEzNDE2ZWRl
YTEyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0
dHJpYnV0ZS5vdXRwdXRfdHlwZS5ieXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNfdGVzdF9nZW5lcmF0
b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5
L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9k
ZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwu
Z2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8
c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRl
eEFycmF5VGVzdHMucnVuKGdsLCBbNCwgNV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0
cHV0X3R5cGUuZmxvYXQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJp
YnV0ZS5vdXRwdXRfdHlwZS5mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0Y2Q2NzU2MWIxNTliNDAz
OWJjODlhYTBlYWE4M2MzMGYzYzE0ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVy
dGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0X3R5cGUuZmxvYXQuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRl
eGFycmF5c190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFu
Y2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cu
cmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0
PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rp
b25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cy5ydW4oZ2wsIFsyLCAzXSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMv
c2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5oYWxmLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4
YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0X3R5cGUuaGFsZi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk1NzQwMjQ0YTc0YWNjN2JlZGFiMDZiZWY2ZjZlMGJjZGRiMTA5ZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0X3R5cGUu
aGFsZi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEK
KworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4
IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51
bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwg
WzksIDEwXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5pbnQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5pbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYzNmNDkwM2MxYjU3NzRiNmE1YWY2ZTM1OTQ5NzcxZmVmNDQxNjA4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmli
dXRlLm91dHB1dF90eXBlLmludC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLnJ1bihnbCwgWzgsIDldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm91dHB1dF90
eXBlLmludF8yXzEwXzEwXzEwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9h
dHRyaWJ1dGUub3V0cHV0X3R5cGUuaW50XzJfMTBfMTBfMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWVm
ZjZkOTk5NTVkOTFiMDExM2Y1ZmJiNTc0OTkzMDZmY2NiNjc0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm91dHB1dF90eXBlLmludF8y
XzEwXzEwXzEwLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBF
RElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBW
ZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9i
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRl
eEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFz
JywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMucnVu
KGdsLCBbMTEsIDEyXSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5zaG9y
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLm91dHB1dF90
eXBlLnNob3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY2Y2JmZmE5ZmQzYzQyZDIzZTFlZWU1ZTc0Y2Zj
YzQ3OTNjNjBjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2lu
Z2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS5zaG9ydC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
LS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3Rf
Z2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUt
bGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2Fu
dmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVz
M2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzMsIDRdKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmli
dXRlLm91dHB1dF90eXBlLnVuc2lnbmVkX2J5dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJh
eXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS51bnNpZ25lZF9ieXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWVmM2RlYjlkNTcxYWYxZjhiMDE4MTc5MTFhNjEyZTQ2NjI2MTAwMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRf
dHlwZS51bnNpZ25lZF9ieXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNfdGVzdF9nZW5lcmF0b3IucHkK
K0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1
cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRl
cHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMu
ZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5
VGVzdHMucnVuKGdsLCBbNiwgN10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0X3R5
cGUudW5zaWduZWRfaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRy
aWJ1dGUub3V0cHV0X3R5cGUudW5zaWduZWRfaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZmZjZhNjI4
ZTZkOGVkMzUxYzc1NzUyMmI5OGVkY2E3NWNiM2Q5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9n
bGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS51bnNpZ25lZF9p
bnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVy
YXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisK
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRleCBB
cnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlU
ZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxs
LCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cy5ydW4oZ2wsIFs3
LCA4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVz
My92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS51bnNpZ25lZF9pbnRf
Ml8xMF8xMF8xMC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRl
Lm91dHB1dF90eXBlLnVuc2lnbmVkX2ludF8yXzEwXzEwXzEwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI5
MGFlMWVkNzRmOGJmZGQwNjcyNjFlYTFhOWU3YzFjNmVkNzRkYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS51bnNp
Z25lZF9pbnRfMl8xMF8xMF8xMC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5
CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0
bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9z
dXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1k
ZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMz
LmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlw
dD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRl
eHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJh
eVRlc3RzLnJ1bihnbCwgWzEwLCAxMV0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0
X3R5cGUudW5zaWduZWRfc2hvcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xl
X2F0dHJpYnV0ZS5vdXRwdXRfdHlwZS51bnNpZ25lZF9zaG9ydC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJm
NTZjMzU1YWNhMDljYmRmNzFjMGYzMzM3ZGVmYmY1ZDIyZWIzYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUub3V0cHV0X3R5cGUudW5z
aWduZWRfc2hvcnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRvci5weQorRE8gTk9U
IEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdM
IFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9nb29n
L2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVy
dGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdjYW52
YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cy5y
dW4oZ2wsIFs1LCA2XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5zdHJpZGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS5zdHJpZGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NmJkOWUyMDM2NDQzZjM2NjBjNDc4YjlhZTQxNjg5MTdiN2IwMjNhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnN0cmlkZS5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+
CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5
cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3Rz
Jyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0i
MjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIp
OworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzAsIDFd
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Zl
cnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLmR5bmFtaWNfY29weS5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFs
L2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLmR5bmFtaWNfY29weS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0NzgzNGM3NGM0ZDMyZWUyODk0YTUzMmZhNzU5NmViMzA0NGFlNDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1
dGUudXNhZ2UuZHluYW1pY19jb3B5Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCEtLQorCitUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNfdGVzdF9nZW5lcmF0b3Iu
cHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0
aXRsZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xvc3VyZS1saWJyYXJ5L2Ns
b3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFw
LWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4gPC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFy
cmF5VGVzdHMucnVuKGdsLCBbMTcsIDE4XSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2Fn
ZS5keW5hbWljX2RyYXcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJp
YnV0ZS51c2FnZS5keW5hbWljX2RyYXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWI1OTgyZGFmNmU3ZDRj
MzBlN2Q1NTA1ODU0MWFkNWM2MjgwNjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Zl
cnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLmR5bmFtaWNfZHJhdy5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdmVy
dGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKworLS0+CisKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFycmF5cyBDb25mb3Jt
YW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Z29v
Zy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzJyk7PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWln
aHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGwsIDIpOworCitmdW5j
dGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzE0LCAxNV0pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJy
YXlzL3NpbmdsZV9hdHRyaWJ1dGUudXNhZ2UuZHluYW1pY19yZWFkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMv
dmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUudXNhZ2UuZHluYW1pY19yZWFkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGQ4NjhjZTZhMTdiMTlmM2M0OGNmM2ZiMDU0OTMyY2I3NGM4MTIxZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2Fn
ZS5keW5hbWljX3JlYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1RoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRvci5weQorRE8g
Tk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldl
YkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkvY2xvc3VyZS9n
b29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2RlcXAtZGVwcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5nbGVzMy5lczNm
VmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9
ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxzY3JpcHQ+Cit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCdj
YW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0
cy5ydW4oZ2wsIFsyMCwgMjFdKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLnN0YXRp
Y19jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUudXNh
Z2Uuc3RhdGljX2NvcHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzFjMjg2MTY0ZWE1MjVmM2MzODRjNzU2
ODA0MzA0Y2FmNzQzZTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5
cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLnN0YXRpY19jb3B5Lmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0ZXhhcnJheXNf
dGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vY2xv
c3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29nLnJlcXVpcmUo
J2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4g
PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0aW9uYWwuZ2xl
czMuZXMzZlZlcnRleEFycmF5VGVzdHMucnVuKGdsLCBbMTUsIDE2XSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xl
X2F0dHJpYnV0ZS51c2FnZS5zdGF0aWNfZHJhdy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5
cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLnN0YXRpY19kcmF3Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIz
YmI2MTI2NThlNWM2YjA0MGEzY2MzYTg1ZDIxMmU3ZTQ5NzM1MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2FnZS5zdGF0aWNfZHJh
dy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1QgRURJVCEKKwor
LS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wgVmVydGV4IEFy
cmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRl
c3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJH
TFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZhcycsIG51bGws
IDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1bihnbCwgWzEy
LCAxM10pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xl
czMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUudXNhZ2Uuc3RhdGljX3JlYWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rp
b25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2FnZS5zdGF0aWNfcmVh
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmZWQzYTliZmE0MDkzMTJmOTcwNGI2NjA0NjVkMDZjNTE2ZTNj
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRy
aWJ1dGUudXNhZ2Uuc3RhdGljX3JlYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IS0tCisKK1Ro
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0X2dlbmVyYXRv
ci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PHRpdGxlPldlYkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJlLWxpYnJhcnkv
Y2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Rl
cXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVuY3Rpb25hbC5n
bGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2NhbnZhcz4KKzxz
Y3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5lczNmVmVydGV4
QXJyYXlUZXN0cy5ydW4oZ2wsIFsxOCwgMTldKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3ZlcnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVz
YWdlLnN0cmVhbV9jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRy
aWJ1dGUudXNhZ2Uuc3RyZWFtX2NvcHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2M2M2QxMDdmYWM4ZDVk
Yjk3YjljZDNjMjU1ZjAwYjM5MDM3MDYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Zl
cnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLnN0cmVhbV9jb3B5Lmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPCEtLQorCitUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB2ZXJ0
ZXhhcnJheXNfdGVzdF9nZW5lcmF0b3IucHkKK0RPIE5PVCBFRElUIQorCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBWZXJ0ZXggQXJyYXlzIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vY2xvc3VyZS1saWJyYXJ5L2Nsb3N1cmUvZ29vZy9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9kZXFwLWRlcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD5nb29n
LnJlcXVpcmUoJ2Z1bmN0aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMnKTs8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4gPC9jYW52YXM+Cis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwor
dmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJywgbnVsbCwgMik7CisKK2Z1bmN0
aW9uYWwuZ2xlczMuZXMzZlZlcnRleEFycmF5VGVzdHMucnVuKGdsLCBbMTYsIDE3XSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJh
eXMvc2luZ2xlX2F0dHJpYnV0ZS51c2FnZS5zdHJlYW1fZHJhdy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3Zl
cnRleGFycmF5cy9zaW5nbGVfYXR0cmlidXRlLnVzYWdlLnN0cmVhbV9kcmF3Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM4Y2U1ZTE0ZTY1NDZiMDdlYWJjNjM0NjEyMjViMjZhMTYyZTVjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2FnZS5z
dHJlYW1fZHJhdy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhLS0KKworVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGZyb20gdmVydGV4YXJyYXlzX3Rlc3RfZ2VuZXJhdG9yLnB5CitETyBOT1Qg
RURJVCEKKworLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+V2ViR0wg
VmVydGV4IEFycmF5cyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Nsb3N1cmUtbGlicmFyeS9jbG9zdXJlL2dvb2cv
YmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZGVxcC1kZXBzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Z29vZy5yZXF1aXJlKCdmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0
ZXhBcnJheVRlc3RzJyk7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+IDwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciB3
dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoJ2NhbnZh
cycsIG51bGwsIDIpOworCitmdW5jdGlvbmFsLmdsZXMzLmVzM2ZWZXJ0ZXhBcnJheVRlc3RzLnJ1
bihnbCwgWzEzLCAxNF0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3NpbmdsZV9hdHRyaWJ1dGUudXNhZ2Uuc3RyZWFtX3Jl
YWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy92ZXJ0ZXhhcnJheXMvc2luZ2xlX2F0dHJpYnV0ZS51c2FnZS5z
dHJlYW1fcmVhZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZDJhNzM2YzZmYjVjMWRlOTE4ODVlZTljN2Zm
YjNjYTNjNGZiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvdmVydGV4YXJyYXlzL3Np
bmdsZV9hdHRyaWJ1dGUudXNhZ2Uuc3RyZWFtX3JlYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IS0tCisKK1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHZlcnRleGFycmF5c190ZXN0
X2dlbmVyYXRvci5weQorRE8gTk9UIEVESVQhCisKKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPHRpdGxlPldlYkdMIFZlcnRleCBBcnJheXMgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMvd2ViZ2wtdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9jbG9zdXJl
LWxpYnJhcnkvY2xvc3VyZS9nb29nL2Jhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2RlcXAtZGVwcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pmdvb2cucmVxdWlyZSgnZnVu
Y3Rpb25hbC5nbGVzMy5lczNmVmVydGV4QXJyYXlUZXN0cycpOzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPiA8L2Nh
bnZhcz4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCdjYW52YXMnLCBudWxsLCAyKTsKKworZnVuY3Rpb25hbC5nbGVzMy5l
czNmVmVydGV4QXJyYXlUZXN0cy5ydW4oZ2wsIFsxOSwgMjBdKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9t
b2R1bGVzL3NoYXJlZC9nbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
YTAzM2ZmYzA3YzNjNDU3NGZiODdkZDBhMjA1YjRjZWEwMmYzNjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVs
ZXMvc2hhcmVkL2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuanMKQEAgLTAsMCArMSwxNDc3IEBA
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3Bl
bkdMIChFUykgTW9kdWxlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNl
IFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJyaWVmIEF0dHJpYnV0ZSBsb2Nh
dGlvbiB0ZXN0cworICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJv
dmlkZSgnbW9kdWxlcy5zaGFyZWQuZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cycpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisK
KyAgICB2YXIgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cyA9IG1vZHVsZXMuc2hhcmVkLmdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNv
bW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVu
Z2wuZ2x1U2hhZGVyVXRpbDsKKyAgICB2YXIgdGN1U3RyaW5nVGVtcGxhdGUgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlOworCisgICAgICAvKioKKyAgICAgICAgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IGJpbmRpbmdzCisgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJp
YgorICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgICAgKi8KKyAgICAgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5nZXRCb3VuZExvY2F0aW9uID0gZnVuY3Rpb24oYmluZGluZ3Ms
IGF0dHJpYikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYmluZGluZ3NbYXR0cmliXSA9PT0g
dW5kZWZpbmVkID8gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbkVudW0uVU5ERUYg
OiBiaW5kaW5nc1thdHRyaWJdKTsKKyAgICAgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGU+fSBhdHRyaWJ1dGVz
CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiaW5kaW5ncworICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5oYXNBdHRy
aWJ1dGVBbGlhc2luZyA9IGZ1bmN0aW9uKGF0dHJpYnV0ZXMsIGJpbmRpbmdzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8Ym9vbGVhbj59ICovIHZhciByZXNlcnZlZFNwYWNlcyA9IFtdOwor
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9jYXRpb247CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2l6ZTsKKworICAgICAgICBmb3IgKHZhciBhdHRyaWJO
ZHggPSAwOyBhdHRyaWJOZHggPCBhdHRyaWJ1dGVzLmxlbmd0aDsgYXR0cmliTmR4KyspIHsKKyAg
ICAgICAgICAgICAgbG9jYXRpb24gPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdldEJvdW5k
TG9jYXRpb24oYmluZGluZ3MsIGF0dHJpYnV0ZXNbYXR0cmliTmR4XS5nZXROYW1lKCkpOworICAg
ICAgICAgICAgICAgIHNpemUgPSBhdHRyaWJ1dGVzW2F0dHJpYk5keF0uZ2V0VHlwZSgpLmdldExv
Y2F0aW9uU2l6ZSgpOworCisgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9IGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25FbnVtLlVOREVGKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc2VydmVkU3BhY2VzW2xvY2F0aW9uICsgaV0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc2VydmVkU3BhY2VzW2xvY2F0aW9uICsgaV0gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZXRNYXhBdHRyaWJ1dGVMb2NhdGlvbnMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhBdHRy
aWJzOworICAgICAgICBtYXhBdHRyaWJzID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQ
YXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKSk7CisgICAgICAgIHJldHVybiBtYXhBdHRy
aWJzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPn0gYXR0cmlidXRlcworICAgICAqIEByZXR1cm4ge3N0
cmluZ30KKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlQXR0
cmlidXRlRGVmaW5pdGlvbnMgPSBmdW5jdGlvbihhdHRyaWJ1dGVzKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB2YXIgc3JjID0gJyc7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRl
c1tpXS5nZXRMYXlvdXRMb2NhdGlvbigpICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9j
YXRpb25FbnVtLlVOREVGKQorICAgICAgICAgICAgICAgIHNyYyArPSAoJ2xheW91dChsb2NhdGlv
biA9ICcgKyBhdHRyaWJ1dGVzW2ldLmdldExheW91dExvY2F0aW9uKCkgKyAnKSAnKTsKKworICAg
ICAgICAgICAgc3JjICs9ICcke1ZUWF9JTlBVVH0gbWVkaXVtcCAnOworICAgICAgICAgICAgc3Jj
ICs9IChhdHRyaWJ1dGVzW2ldLmdldFR5cGUoKS5nZXROYW1lKCkgKyAnICcpOworICAgICAgICAg
ICAgc3JjICs9IGF0dHJpYnV0ZXNbaV0uZ2V0TmFtZSgpOworICAgICAgICAgICAgc3JjICs9IChh
dHRyaWJ1dGVzW2ldLmdldEFycmF5U2l6ZSgpICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QXJyYXlFbnVtLk5PVCA/CisgICAgICAgICAgICAgICAgJ1snICsgYXR0cmlidXRlc1tpXS5nZXRB
cnJheVNpemUoKSArICddJyA6ICcnKTsKKyAgICAgICAgICAgIHNyYyArPSAnO1xuJzsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBzcmM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGU+fSBhdHRyaWJ1
dGVzCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuZ2VuZXJhdGVDb25kaXRpb25Vbmlmb3JtRGVmaW5pdGlvbnMgPSBmdW5jdGlv
bihhdHRyaWJ1dGVzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc3JjID0g
Jyc7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8gdmFyIGNvbmRpdGlvbnMg
PSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmdldENvbmRpdGlvbigpLm5vdEVx
dWFscyhnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLkNvbnN0Q29uZC5ORVZFUikpICYmCisgICAgICAgICAgICAgICAgYXR0
cmlidXRlc1tpXS5nZXRDb25kaXRpb24oKS5ub3RFcXVhbHMoZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5OZXdDb25kV2l0aEVudW0oZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Db25zdENvbmQu
QUxXQVlTKSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMuaW5kZXhPZihhdHRyaWJ1
dGVzW2ldLmdldENvbmRpdGlvbigpLmdldE5hbWUoKSkgPT0gLTEpCisgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvbnMucHVzaChhdHRyaWJ1dGVzW2ldLmdldENvbmRpdGlvbigpLmdldE5hbWUo
KSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmRpdGlvbnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBzcmMgKz0gKCd1bmlmb3JtIG1lZGl1bXAgZmxvYXQg
dV8nICsgY29uZGl0aW9uc1tpXSArICc7XG4nKTsKKworICAgICAgICByZXR1cm4gc3JjOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QXR0cmlidXRlfSBhdHRyaWIKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGlkCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2Vu
ZXJhdGVUb1ZlYzRFeHByZXNzaW9uID0gZnVuY3Rpb24oYXR0cmliLCBpZCkgeworICAgICAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNyYyA9ICcnOworICAgICAgICBpZCA9IGlkID09PSB1
bmRlZmluZWQgPyAtMSA6IGlkOworCisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLworICAg
ICAgICB2YXIgdmFyaWFibGVOYW1lID0gKGF0dHJpYi5nZXROYW1lKCkgKyAoYXR0cmliLmdldEFy
cmF5U2l6ZSgpICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA/ICdb
JyArIGlkICsgJ10nIDogJycpKTsKKworICAgICAgICBzd2l0Y2ggKGF0dHJpYi5nZXRUeXBlKCku
Z2V0R0xUeXBlRW51bSgpKSB7CisgICAgICAgICAgICBjYXNlIGdsLklOVF9WRUMyOgorICAgICAg
ICAgICAgY2FzZSBnbC5VTlNJR05FRF9JTlRfVkVDMjoKKyAgICAgICAgICAgIGNhc2UgZ2wuRkxP
QVRfVkVDMjoKKyAgICAgICAgICAgICAgICBzcmMgKz0gKCd2ZWM0KCcgKyB2YXJpYWJsZU5hbWUg
KyAnLnh5LCAnICsgdmFyaWFibGVOYW1lICsgJy55eCknKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgY2FzZSBnbC5JTlRfVkVDMzoKKyAgICAgICAgICAgIGNhc2UgZ2wu
VU5TSUdORURfSU5UX1ZFQzM6CisgICAgICAgICAgICBjYXNlIGdsLkZMT0FUX1ZFQzM6CisgICAg
ICAgICAgICAgICAgc3JjICs9ICgndmVjNCgnICsgdmFyaWFibGVOYW1lICsgJy54eXosICcgKyB2
YXJpYWJsZU5hbWUgKyAnLngpJyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3JjICs9ICgndmVjNCgnICsgdmFyaWFibGVO
YW1lICsgJyknKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBzcmM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8Z2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGU+fSBhdHRyaWJ1dGVzCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2Vu
ZXJhdGVPdXRwdXRDb2RlID0gZnVuY3Rpb24oYXR0cmlidXRlcykgeworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIHNyYyA9ICcnOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNb
aV0uZ2V0Q29uZGl0aW9uKCkuZXF1YWxzKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTmV3Q29u
ZFdpdGhFbnVtKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLk5FVkVSKSkpIHsK
KyAgICAgICAgICAgICAgICBzcmMgKz0gJ1x0aWYgKDAgIT0gMClcblx0e1xuJzsKKworICAgICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmdldEFycmF5U2l6ZSgpID09IGdsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCkKKyAgICAgICAgICAgICAgICAgICAgc3JjICs9
ICgnXHRcdGNvbG9yICs9ICcgKyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlVG9W
ZWM0RXhwcmVzc2lvbihhdHRyaWJ1dGVzW2ldKSArICc7XG4nKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyaWJ1dGVz
W2ldLmdldEFycmF5U2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBzcmMgKz0g
KCdcdFx0Y29sb3IgKz0gJyArIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJhdGVUb1Zl
YzRFeHByZXNzaW9uKGF0dHJpYnV0ZXNbaV0sIGopICsgJztcbicpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHNyYyArPSAnXHR9XG4nOworICAgICAgICAgICAgfSBlbHNl
IGlmIChhdHRyaWJ1dGVzW2ldLmdldENvbmRpdGlvbigpLmVxdWFscyhnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbnN0
Q29uZC5BTFdBWVMpKSkgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmdldEFy
cmF5U2l6ZSgpID09IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCkKKyAg
ICAgICAgICAgICAgICAgICAgc3JjICs9ICgnXHRjb2xvciArPSAnICsgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5nZW5lcmF0ZVRvVmVjNEV4cHJlc3Npb24oYXR0cmlidXRlc1tpXSkgKyAnO1xu
Jyk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgYXR0cmlidXRlc1tpXS5nZXRBcnJheVNpemUoKTsgaisrKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3JjICs9ICgnXHRjb2xvciArPSAnICsgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5nZW5lcmF0ZVRvVmVjNEV4cHJlc3Npb24oYXR0cmlidXRlc1tpXSwgaikgKyAnO1xu
Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzcmMgKz0gKCdcdGlmICh1XycgKyBhdHRyaWJ1dGVzW2ldLmdldENvbmRpdGlvbigpLmdl
dE5hbWUoKSArIChhdHRyaWJ1dGVzW2ldLmdldENvbmRpdGlvbigpLmdldE5lZ2F0ZSgpID8gJyAh
PSAnIDogJyA9PSAnKSArICcwLjApXG4nKTsKKyAgICAgICAgICAgICAgICBzcmMgKz0gJ1x0e1xu
JzsKKworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmdldEFycmF5U2l6ZSgpID09
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCkKKyAgICAgICAgICAgICAg
ICAgICAgc3JjICs9ICgnXHRcdGNvbG9yICs9ICcgKyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LmdlbmVyYXRlVG9WZWM0RXhwcmVzc2lvbihhdHRyaWJ1dGVzW2ldKSArICc7XG4nKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBhdHRyaWJ1dGVzW2ldLmdldEFycmF5U2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAg
ICAgICBzcmMgKz0gKCdcdFx0Y29sb3IgKz0gJyArIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
Z2VuZXJhdGVUb1ZlYzRFeHByZXNzaW9uKGF0dHJpYnV0ZXNbaV0sIGopICsgJztcbicpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNyYyArPSAnXHR9XG4nOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNyYzsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJp
YnV0ZT59IGF0dHJpYnV0ZXMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZVZlcnRleFNoYWRlclRlbXBsYXRlID0g
ZnVuY3Rpb24oYXR0cmlidXRlcykgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IHNyYyA9ICcnOworCisgICAgICAgIHNyYyA9ICcke1ZFUlNJT059XG4nICsKKyAgICAgICAgJyR7
VlRYX09VVFBVVH0gbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nICsKKyAgICAgICAgZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZUF0dHJpYnV0ZURlZmluaXRpb25zKGF0dHJpYnV0ZXMp
ICsKKyAgICAgICAgJ1xuJyArCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2Vu
ZXJhdGVDb25kaXRpb25Vbmlmb3JtRGVmaW5pdGlvbnMoYXR0cmlidXRlcykgKworICAgICAgICAn
XG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAne1xuJyArCisg
ICAgICAgICdcdG1lZGl1bXAgdmVjNCBjb2xvciA9IHZlYzQoMC4wKTtcbicgKworICAgICAgICAn
XG4nICsKKyAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZU91dHB1dENv
ZGUoYXR0cmlidXRlcykgKworICAgICAgICAnXG4nICsKKyAgICAgICAgJ1x0dl9jb2xvciA9IGNv
bG9yO1xuJyArCisgICAgICAgICdcdGdsX1Bvc2l0aW9uID0gY29sb3I7XG4nICsKKyAgICAgICAg
J31cbic7CisKKyAgICAgICAgcmV0dXJuIHNyYzsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59IGF0dHJp
YnV0ZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF0dHJpYnV0ZUFsaWFzaW5nCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
Y3JlYXRlVmVydGV4U2hhZGVyU291cmNlID0gZnVuY3Rpb24oYXR0cmlidXRlcywgYXR0cmlidXRl
QWxpYXNpbmcpIHsKKyAgICAgICAgLy8gXG5vdGUgT24gR0xFUyBvbmx5IEdMU0wgI3ZlcnNpb24g
MTAwIHN1cHBvcnRzIGFsaWFzaW5nCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5H
TFNMVmVyc2lvbn0gKi8gdmFyIGdsc2xWZXJzaW9uID0gZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVy
c2lvbihnbCk7CisgICAgICAgIGdsc2xWZXJzaW9uID0gYXR0cmlidXRlQWxpYXNpbmcgPyBnbHVT
aGFkZXJVdGlsLkdMU0xWZXJzaW9uLlYxMDBfRVMgOiBnbHNsVmVyc2lvbjsKKyAgICAgICAgLyoq
IEB0eXBlIHtib29sZWFufSAqLyB2YXIgdXNlc0luT3V0UXVhbGlmaWVycyA9IGdsdVNoYWRlclV0
aWwuZ2xzbFZlcnNpb25Vc2VzSW5PdXRRdWFsaWZpZXJzKGdsc2xWZXJzaW9uKTsKKyAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSA9IGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJhdGVWZXJ0ZXhTaGFkZXJUZW1wbGF0ZShhdHRyaWJ1dGVz
KTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciBwYXJhbWV0ZXJz
ID0gW107CisKKyAgICAgICAgcGFyYW1ldGVyc1snVkVSU0lPTiddID0gZ2x1U2hhZGVyVXRpbC5n
ZXRHTFNMVmVyc2lvbkRlY2xhcmF0aW9uKGdsc2xWZXJzaW9uKTsKKyAgICAgICAgcGFyYW1ldGVy
c1snVlRYX09VVFBVVCddID0gdXNlc0luT3V0UXVhbGlmaWVycyA/ICdvdXQnIDogJ3Zhcnlpbmcn
OworICAgICAgICBwYXJhbWV0ZXJzWydWVFhfSU5QVVQnXSA9IHVzZXNJbk91dFF1YWxpZmllcnMg
PyAnaW4nIDogJ2F0dHJpYnV0ZSc7CisgICAgICAgIHBhcmFtZXRlcnNbJ0ZSQUdfSU5QVVQnXSA9
IHVzZXNJbk91dFF1YWxpZmllcnMgPyAnaW4nIDogJ3ZhcnlpbmcnOworICAgICAgICBwYXJhbWV0
ZXJzWydGUkFHX09VVFBVVF9WQVInXSA9IHVzZXNJbk91dFF1YWxpZmllcnMgPyAnZEVRUF9GcmFn
Q29sb3InIDogJ2dsX0ZyYWdDb2xvcic7CisgICAgICAgIHBhcmFtZXRlcnNbJ0ZSQUdfT1VUUFVU
X0RFQ0xBUkFUSU9OJ10gPSB1c2VzSW5PdXRRdWFsaWZpZXJzID8gJ2xheW91dChsb2NhdGlvbj0w
KSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yOycgOiAnJzsKKworICAgICAgICByZXR1
cm4gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZSh2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSwgcGFy
YW1ldGVycyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXR0
cmlidXRlQWxpYXNpbmcKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5jcmVhdGVGcmFnbWVudFNoYWRlclNvdXJjZSA9IGZ1bmN0
aW9uKGF0dHJpYnV0ZUFsaWFzaW5nKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2
YXIgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSAnJzsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSAnJHtWRVJTSU9OfVxuJyArCisgICAgICAgICcke0ZSQUdfT1VUUFVUX0RFQ0xBUkFUSU9O
fVxuJyArCisgICAgICAgICcke0ZSQUdfSU5QVVR9IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyAr
CisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJ3tcbicgKworICAgICAg
ICAnXHQke0ZSQUdfT1VUUFVUX1ZBUn0gPSB2X2NvbG9yO1xuJyArCisgICAgICAgICd9XG4nOwor
CisgICAgICAgIC8vIFxub3RlIE9uIEdMRVMgb25seSBHTFNMICN2ZXJzaW9uIDEwMCBzdXBwb3J0
cyBhbGlhc2luZworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuR0xTTFZlcnNpb259
ICovIHZhciBnbHNsVmVyc2lvbiA9IGdsdVNoYWRlclV0aWwuZ2V0R0xTTFZlcnNpb24oZ2wpOwor
ICAgICAgICBnbHNsVmVyc2lvbiA9IGF0dHJpYnV0ZUFsaWFzaW5nID8gZ2x1U2hhZGVyVXRpbC5H
TFNMVmVyc2lvbi5WMTAwX0VTIDogZ2xzbFZlcnNpb247CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIHVzZXNJbk91dFF1YWxpZmllcnMgPSBnbHVTaGFkZXJVdGlsLmdsc2xWZXJz
aW9uVXNlc0luT3V0UXVhbGlmaWVycyhnbHNsVmVyc2lvbik7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgcGFyYW1ldGVycyA9IFtdOworCisgICAgICAgIHBhcmFt
ZXRlcnNbJ1ZFUlNJT04nXSA9IGdsdVNoYWRlclV0aWwuZ2V0R0xTTFZlcnNpb25EZWNsYXJhdGlv
bihnbHNsVmVyc2lvbik7CisgICAgICAgIHBhcmFtZXRlcnNbJ1ZUWF9PVVRQVVQnXSA9IHVzZXNJ
bk91dFF1YWxpZmllcnMgPyAnb3V0JyA6ICd2YXJ5aW5nJzsKKyAgICAgICAgcGFyYW1ldGVyc1sn
VlRYX0lOUFVUJ10gPSB1c2VzSW5PdXRRdWFsaWZpZXJzID8gJ2luJyA6ICdhdHRyaWJ1dGUnOwor
ICAgICAgICBwYXJhbWV0ZXJzWydGUkFHX0lOUFVUJ10gPSB1c2VzSW5PdXRRdWFsaWZpZXJzID8g
J2luJyA6ICd2YXJ5aW5nJzsKKyAgICAgICAgcGFyYW1ldGVyc1snRlJBR19PVVRQVVRfVkFSJ10g
PSB1c2VzSW5PdXRRdWFsaWZpZXJzID8gJ2RFUVBfRnJhZ0NvbG9yJyA6ICdnbF9GcmFnQ29sb3In
OworICAgICAgICBwYXJhbWV0ZXJzWydGUkFHX09VVFBVVF9ERUNMQVJBVElPTiddID0gdXNlc0lu
T3V0UXVhbGlmaWVycyA/ICdsYXlvdXQobG9jYXRpb249MCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQ
X0ZyYWdDb2xvcjsnIDogJyc7CisKKyAgICAgICAgcmV0dXJuIHRjdVN0cmluZ1RlbXBsYXRlLnNw
ZWNpYWxpemUoZnJhZ21lbnRTaGFkZXJTb3VyY2UsIHBhcmFtZXRlcnMpOworICAgIH07CisKKyAg
ICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmxvZ1Byb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFt
KSB7CisgICAgICAgIHZhciBwcm9ncmFtTGlua09rID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyAo
Z2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykpOworICAgICAg
ICAvKipAdHlwZXtzdHJpbmd9ICovIHZhciBwcm9ncmFtSW5mb0xvZyA9IGdsLmdldFByb2dyYW1J
bmZvTG9nKHByb2dyYW0pOworICAgICAgICAvKipAdHlwZXtzdHJpbmd9ICovIHZhciBsb2cgPSAn
UHJvZ3JhbSBMaW5rIEluZm86ICcgKyBwcm9ncmFtSW5mb0xvZyArCisgICAgICAgICdMaW5rIHJl
c3VsdDogJyArIChwcm9ncmFtTGlua09rID8gJ09rJyA6ICdGYWlsJyk7CisKKyAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUobG9nKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5sb2dBdHRyaWJ1dGVzID0gZnVuY3Rpb24oYXR0cmlidXRlcykgeworICAgICAgICAv
KipAdHlwZXtzdHJpbmd9ICovIHZhciBsb2c7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworCisgICAgICAgICAgICBsb2cgPSAnVHlwZTogJyAr
IGF0dHJpYnV0ZXNbaV0uZ2V0VHlwZSgpLmdldE5hbWUoKSArCisgICAgICAgICAgICAnLCBOYW1l
OiAnICsgYXR0cmlidXRlc1tpXS5nZXROYW1lKCkgKworICAgICAgICAgICAgKGF0dHJpYnV0ZXNb
aV0uZ2V0TGF5b3V0TG9jYXRpb24oKSAhPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkxvY2F0
aW9uRW51bS5VTkRFRiA/ICcsIExheW91dCBsb2NhdGlvbiAnICsgYXR0cmlidXRlc1tpXS5nZXRM
YXlvdXRMb2NhdGlvbigpIDogJycpOworCisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZShsb2cpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB2ZXJ0ZXhTaGFkZXJTb3VyY2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmVydGV4U2hh
ZGVySW5mb0xvZworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVydGV4Q29tcGlsZU9rCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGZyYWdtZW50U2hhZGVyU291cmNlCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGZyYWdtZW50U2hhZGVySW5mb0xvZworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZnJh
Z21lbnRDb21waWxlT2sKKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmxv
Z1NoYWRlcnMgPSBmdW5jdGlvbih2ZXJ0ZXhTaGFkZXJTb3VyY2UsIHZlcnRleFNoYWRlckluZm9M
b2csIHZlcnRleENvbXBpbGVPaywgZnJhZ21lbnRTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVy
SW5mb0xvZywgZnJhZ21lbnRDb21waWxlT2spIHsKKworICAgICAgICAvKipAdHlwZXtzdHJpbmd9
ICovIHZhciBsb2c7CisgICAgICAgIGxvZyA9ICdcblZlcnRleCBTaGFkZXIgSW5mbzogJyArCisg
ICAgICAgIHZlcnRleFNoYWRlclNvdXJjZSArCisgICAgICAgICdcbkluZm8gTG9nOiAnICsKKyAg
ICAgICAgdmVydGV4U2hhZGVySW5mb0xvZyArCisgICAgICAgICdcbkNvbXBpbGF0aW9uIHJlc3Vs
dDogJyArICh2ZXJ0ZXhDb21waWxlT2sgPyAnT2snIDogJ0ZhaWxlZCcpICsKKworICAgICAgICAn
XG5GcmFnbWVudCBTaGFkZXIgSW5mbzogJyArCisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNl
ICsKKyAgICAgICAgJ1xuSW5mbyBMb2c6ICcgKworICAgICAgICBmcmFnbWVudFNoYWRlckluZm9M
b2cgKworICAgICAgICAnXG5Db21waWxhdGlvbiByZXN1bHQ6ICcgKyAoZnJhZ21lbnRDb21waWxl
T2sgPyAnT2snIDogJ0ZhaWxlZCcpOworCisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGxv
Zyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9n
cmFtCisgICAgICogQHBhcmFtIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJp
YnV0ZT59IGF0dHJpYnV0ZXMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAg
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuY2hlY2tBY3RpdmVBdHRyaWJRdWVyeSA9IGZ1bmN0
aW9uKHByb2dyYW0sIGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBhY3RpdmVBdHRyaWJDb3VudCA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3Ry
aW5nPn0gKi8gdmFyIGFjdGl2ZUF0dHJpYnV0ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgaXNPayA9IHRydWU7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgbG9nOworCisgICAgICAgIGFjdGl2ZUF0dHJpYkNvdW50ID0gLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJV
VEVTKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0
dHJpYnV0ZX0gKi8gdmFyIGF0dHJpYjsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNBY3RpdmU7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xBY3RpdmVJbmZvfSAqLyB2YXIg
YWN0aXZlSW5mbzsKKworICAgICAgICBmb3IgKHZhciBhY3RpdmVBdHRyaWJOZHggPSAwOyBhY3Rp
dmVBdHRyaWJOZHggPCBhY3RpdmVBdHRyaWJDb3VudDsgYWN0aXZlQXR0cmliTmR4KyspIHsKKwor
ICAgICAgICAgICAgYWN0aXZlSW5mbyA9IGdsLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBhY3Rp
dmVBdHRyaWJOZHgpOworCisgICAgICAgICAgICBsb2cgPSAnZ2xHZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbScgKworICAgICAgICAgICAgJ1xuaW5kZXg9ICcgKyBhY3RpdmVBdHRyaWJOZHggKworICAg
ICAgICAgICAgJ1xuc2l6ZT0gJyArIGFjdGl2ZUluZm8uc2l6ZSArCisgICAgICAgICAgICAnXG50
eXBlPSAnICsgYWN0aXZlSW5mby50eXBlICsKKyAgICAgICAgICAgICdcbm5hbWU9ICcgKyBhY3Rp
dmVJbmZvLm5hbWU7CisKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKGxvZyk7CisK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBmb3VuZCA9IGZhbHNl
OworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0cmliTmR4ID0gMDsgYXR0cmliTmR4IDwg
YXR0cmlidXRlcy5sZW5ndGg7IGF0dHJpYk5keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGF0
dHJpYiA9IGF0dHJpYnV0ZXNbYXR0cmliTmR4XTsKKworICAgICAgICAgICAgICAgICAgICBpZiAo
YXR0cmliLmdldE5hbWUoKSA9PSBhY3RpdmVJbmZvLm5hbWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhY3RpdmVJbmZvLnR5cGUgIT0gYXR0cmliLmdldFR5cGUoKS5nZXRHTFR5cGVF
bnVtKCkpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyA9ICdFcnJvcjogV3Jv
bmcgdHlwZSAnICsgYXR0cmliLmdldFR5cGUoKS5nZXRHTFR5cGVFbnVtKCkgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcgZXhwZWN0ZWQ9ICcgKyBhY3RpdmVJbmZvLnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUobG9nKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYi5nZXRBcnJheVNp
emUoKSA9PSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5RW51bS5OT1QpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSW5mby5zaXplICE9IDEpIHsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRXJyb3I6
IFdyb25nIHNpemUgJyArIGFjdGl2ZUluZm8uc2l6ZSArICcgZXhwZWN0ZWQgMScpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc09rID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSW5mby5zaXplICE9IGF0dHJpYi5nZXRBcnJh
eVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnRXJyb3I6IFdyb25nIHNpemUgJyArIGFjdGl2ZUluZm8uc2l6ZSArICcgZXhwZWN0
ZWQgJyArIGF0dHJpYi5nZXRBcnJheVNpemUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNPayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIGxvZyA9ICdFcnJvcjogVW5rbm93biBhdHRyaWJ1dGUgJyAr
IGFjdGl2ZUluZm8ubmFtZSArICcgcmV0dXJuZWQ9IGJ5IGdsR2V0QWN0aXZlQXR0cmliKCkuJzsK
KyAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUobG9nKTsKKworICAgICAg
ICAgICAgICAgICAgICBpc09rID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBhY3RpdmVBdHRyaWJ1dGVzLnB1c2goYWN0aXZlSW5mby5uYW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAodmFyIGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IGF0dHJpYnV0ZXMu
bGVuZ3RoOyBhdHRyaWJOZHgrKykgeworICAgICAgICAgICAgYXR0cmliID0gYXR0cmlidXRlc1th
dHRyaWJOZHhdOworICAgICAgICAgICAgaXNBY3RpdmUgPSBhdHRyaWIuZ2V0Q29uZGl0aW9uKCku
bm90RXF1YWxzKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTmV3Q29uZFdpdGhFbnVtKGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLk5FVkVSKSk7CisKKyAgICAgICAgICAgIGlm
IChpc0FjdGl2ZSkgeworICAgICAgICAgICAgICAgIGlmIChhY3RpdmVBdHRyaWJ1dGVzLmluZGV4
T2YoYXR0cmliLmdldE5hbWUoKSkgPT0gLTEpIHsKKworICAgICAgICAgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnRXJyb3I6IEFjdGl2ZSBhdHRyaWJ1dGUgJyArIGF0dHJpYi5nZXRO
YW1lKCkgKyAnd2FzblwndCByZXR1cm5lZCBieSBnbEdldEFjdGl2ZUF0dHJpYigpLicpOworICAg
ICAgICAgICAgICAgICAgICBpc09rID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aXZlQXR0cmlidXRlc1thdHRy
aWIuZ2V0TmFtZSgpXSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnTm90ZTogSW5hY3RpdmUgYXR0cmlidXRlICcgKyBhdHRyaWIuZ2V0TmFt
ZSgpICsgJ3dhcyByZXR1cm5lZCBieSBnbEdldEFjdGl2ZUF0dHJpYigpLicpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGlzT2s7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgICAgICogQHBhcmFtIHtB
cnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59IGF0dHJpYnV0ZXMKKyAg
ICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpbmRpbmdzCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNoZWNrQXR0cmli
TG9jYXRpb25RdWVyeSA9IGZ1bmN0aW9uKHByb2dyYW0sIGF0dHJpYnV0ZXMsIGJpbmRpbmdzKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSB0cnVlOworICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGxvZzsKKworICAgICAgICBmb3IgKHZhciBhdHRy
aWJOZHggPSAwOyBhdHRyaWJOZHggPCBhdHRyaWJ1dGVzLmxlbmd0aDsgYXR0cmliTmR4KyspIHsK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1
dGV9ICovIHZhciBhdHRyaWIgPSBhdHRyaWJ1dGVzW2F0dHJpYk5keF07CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGV4cGVjdGVkTG9jYXRpb24gPSAoYXR0cmliLmdldExh
eW91dExvY2F0aW9uKCkgIT0gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbkVudW0u
VU5ERUYgPyBhdHRyaWIuZ2V0TGF5b3V0TG9jYXRpb24oKSA6IGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuZ2V0Qm91bmRMb2NhdGlvbihiaW5kaW5ncywgYXR0cmliLmdldE5hbWUoKSkpOworICAg
ICAgICAgICAgdmFyIGxvY2F0aW9uID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBhdHRyaWIuZ2V0TmFtZSgpKSk7CisKKyAgICAgICAgICAgIGlm
IChhdHRyaWIuZ2V0Q29uZGl0aW9uKCkuZXF1YWxzKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
TmV3Q29uZFdpdGhFbnVtKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLk5FVkVS
KSkgJiYgbG9jYXRpb24gIT0gLTEpCisgICAgICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ05vdGU6IEluYWN0aXZlIGF0dHJpYnV0ZSB3aXRoIGxvY2F0aW9uLicpOworCisgICAgICAg
ICAgICBpZiAoYXR0cmliLmdldENvbmRpdGlvbigpLm5vdEVxdWFscyhnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbnN0
Q29uZC5ORVZFUikpICYmIGV4cGVjdGVkTG9jYXRpb24gIT0gZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5Mb2NhdGlvbkVudW0uVU5ERUYgJiYgZXhwZWN0ZWRMb2NhdGlvbiAhPSBsb2NhdGlvbikK
KyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdFcnJvcjogSW52YWxpZCBhdHRyaWJ1
dGUgbG9jYXRpb24uJyk7CisKKyAgICAgICAgICAgIGlzT2sgPSAoYXR0cmliLmdldENvbmRpdGlv
bigpLmVxdWFscyhnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbnN0Q29uZC5ORVZFUikpIHx8IGV4cGVjdGVkTG9jYXRp
b24gPT0gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbkVudW0uVU5ERUYgfHwgZXhw
ZWN0ZWRMb2NhdGlvbiA9PSBsb2NhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
aXNPazsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHBy
b2dyYW0KKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0
cmlidXRlPn0gYXR0cmlidXRlcworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYmluZGlu
Z3MKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuY2hlY2tRdWVyeSA9IGZ1bmN0aW9uKHByb2dyYW0sIGF0dHJpYnV0ZXMsIGJp
bmRpbmdzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2sgPSBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNoZWNrQWN0aXZlQXR0cmliUXVlcnkocHJvZ3JhbSwgYXR0
cmlidXRlcyk7CisKKyAgICAgICAgaWYgKCFnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNoZWNr
QXR0cmliTG9jYXRpb25RdWVyeShwcm9ncmFtLCBhdHRyaWJ1dGVzLCBiaW5kaW5ncykpCisgICAg
ICAgICAgICBpc09rID0gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIGlzT2s7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgICAgICogQHBh
cmFtIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59IGF0dHJpYnV0
ZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF0dHJpYnV0ZUFsaWFzaW5nCisgICAgICogQHJl
dHVybiB7T2JqZWN0fQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuY3Jl
YXRlQW5kQXR0YWNoU2hhZGVycyA9IGZ1bmN0aW9uKHByb2dyYW0sIGF0dHJpYnV0ZXMsIGF0dHJp
YnV0ZUFsaWFzaW5nKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVydGV4
U2hhZGVyU291cmNlID0gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5jcmVhdGVWZXJ0ZXhTaGFk
ZXJTb3VyY2UoYXR0cmlidXRlcywgYXR0cmlidXRlQWxpYXNpbmcpOworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIGZyYWdtZW50U2hhZGVyU291cmNlID0gZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5jcmVhdGVGcmFnbWVudFNoYWRlclNvdXJjZShhdHRyaWJ1dGVBbGlhc2luZyk7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFNoYWRlcn0gKi8gdmFyIHZlcnRleFNoYWRlciA9
IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTFNoYWRlcn0gKi8gdmFyIGZyYWdtZW50U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZS
QUdNRU5UX1NIQURFUik7CisKKyAgICAgICAgZ2wuc2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwg
dmVydGV4U2hhZGVyU291cmNlKTsKKyAgICAgICAgZ2wuc2hhZGVyU291cmNlKGZyYWdtZW50U2hh
ZGVyLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcih2
ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsK
KworICAgICAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKKyAgICAg
ICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdtZW50U2hhZGVyKTsKKworICAgICAgICB2
YXIgdmVydGV4U2hhZGVyQ29tcGlsZU9rID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyAoZ2wuZ2V0
U2hhZGVyUGFyYW1ldGVyKHZlcnRleFNoYWRlciwgZ2wuQ09NUElMRV9TVEFUVVMpKTsKKyAgICAg
ICAgdmFyIGZyYWdtZW50U2hhZGVyQ29tcGlsZU9rID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyAo
Z2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZyYWdtZW50U2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykp
OworCisgICAgICAgIC8vIGxvZyBzaGFkZXJzCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMubG9nU2hhZGVycyh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGdsLmdldFNoYWRlckluZm9Mb2co
dmVydGV4U2hhZGVyKSwKKyAgICAgICAgICAgIHZlcnRleFNoYWRlckNvbXBpbGVPaywKKyAgICAg
ICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlLCBnbC5nZXRTaGFkZXJJbmZvTG9nKGZyYWdtZW50
U2hhZGVyKSwKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyQ29tcGlsZU9rKTsKKworICAgICAg
ICBhc3NlcnRNc2dPcHRpb25zKHZlcnRleFNoYWRlckNvbXBpbGVPaywgJ3ZlcnRleCBTaGFkZXIg
Y29tcGlsZSBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
ZnJhZ21lbnRTaGFkZXJDb21waWxlT2ssICdmcmFnbWVudCBTaGFkZXIgY29tcGlsZSBmYWlsZWQn
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7
CisgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisKKyAgICAgICAgcmV0
dXJuIHtmaXJzdDogdmVydGV4U2hhZGVyLCBzZWNvbmQ6IGZyYWdtZW50U2hhZGVyfTsKKworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICAg
ICAqIEBwYXJhbSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gYmluZHMK
KyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmJpbmRBdHRyaWJ1dGVzID0g
ZnVuY3Rpb24ocHJvZ3JhbSwgYmluZHMpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBi
aW5kcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0Jp
bmQgYXR0cmlidXRlOiAnICsgYmluZHNbaV0uZ2V0QXR0cmlidXRlTmFtZSgpICsgJyB0byAnICsg
YmluZHNbaV0uZ2V0TG9jYXRpb24oKSk7CisgICAgICAgICAgICBnbC5iaW5kQXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgYmluZHNbaV0uZ2V0TG9jYXRpb24oKSwgYmluZHNbaV0uZ2V0QXR0cmlidXRl
TmFtZSgpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2ds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gYXJyYXlTaXplCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAg
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJhdGVUZXN0TmFtZSA9IGZ1bmN0aW9uKHR5
cGUsIGFycmF5U2l6ZSkgeworICAgICAgICByZXR1cm4gdHlwZS5nZXROYW1lKCkgKyAoYXJyYXlT
aXplICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA/ICdfYXJyYXlf
JyArIGFycmF5U2l6ZSA6ICcnKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
bG9jYXRpb25TaXplCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHR5cGVFbnVtCisgICAgICovCisg
ICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlID0gZnVuY3Rpb24obmFtZSwg
bG9jYXRpb25TaXplLCB0eXBlRW51bSkgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dGhpcy5tX25hbWUgPSBuYW1lOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5t
X2xvY2F0aW9uU2l6ZSA9IGxvY2F0aW9uU2l6ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMubV9nbFR5cGVFbnVtID0gdHlwZUVudW07CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLkF0dHJpYlR5cGUucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubV9uYW1lOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBl
LnByb3RvdHlwZS5nZXRMb2NhdGlvblNpemUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMubV9sb2NhdGlvblNpemU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5
cGUucHJvdG90eXBlLmdldEdMVHlwZUVudW0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMubV9nbFR5cGVFbnVtOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAZW51bSB7bnVt
YmVyfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kID0g
eworICAgICAgICBBTFdBWVM6IDAsCisgICAgICAgIE5FVkVSOiAxCisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtib29sZWFuPX0gbmVnYXRlCisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5Db25kID0gZnVuY3Rpb24obmFtZSwgbmVnYXRlKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX25lZ2F0ZSA9IG5lZ2F0ZSA9PT0gdW5kZWZpbmVkID8g
ZmFsc2UgOiBuZWdhdGU7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fbmFt
ZSA9IG5hbWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5Db25zdENvbmR9IGNvbmQKKyAgICAgKiBAcmV0dXJuIHtnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLkNvbmR9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5OZXdDb25kV2l0aEVudW0gPSBmdW5jdGlvbihjb25kKSB7CisgICAgICAgIHZhciBjb25k
T2JqID0gbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uZCgnJywgZmFsc2UpOworICAg
ICAgICBjb25kT2JqLm1fbmFtZSA9ICdfX2Fsd2F5c19fJzsKKyAgICAgICAgY29uZE9iai5tX25l
Z2F0ZSA9IChjb25kICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLk5FVkVS
KTsKKworICAgICAgICByZXR1cm4gY29uZE9iajsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbmR9IG90aGVyCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNv
bmQucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiAo
dGhpcy5tX25lZ2F0ZSA9PSBvdGhlci5tX25lZ2F0ZSAmJiB0aGlzLm1fbmFtZSA9PSBvdGhlci5t
X25hbWUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQ29uZH0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAq
LworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uZC5wcm90b3R5cGUubm90RXF1YWxz
ID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuICghdGhpcy5lcXVhbHMob3RoZXIp
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwor
ICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uZC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX25hbWU7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5Db25kLnByb3RvdHlwZS5nZXROZWdhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMubV9uZWdhdGU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVt
IHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlv
bkVudW0gPSB7CisgICAgICAgIFVOREVGOiAtMQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
ZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJy
YXlFbnVtID0geworICAgICAgICBOT1Q6IC0xCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRy
aWJUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0g
e251bWJlcj19IGxheW91dExvY2F0aW9uCisgICAgICogQHBhcmFtIHtnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkNvbmQ9fSBjb25kCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBhcnJheVNpemUK
KyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSA9IGZ1bmN0
aW9uKHR5cGUsIG5hbWUsIGxheW91dExvY2F0aW9uLCBjb25kLCBhcnJheVNpemUpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHRo
aXMubV90eXBlID0gdHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubV9u
YW1lID0gbmFtZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9sYXlvdXRM
b2NhdGlvbiA9IGxheW91dExvY2F0aW9uID09PSB1bmRlZmluZWQgPyBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkxvY2F0aW9uRW51bS5VTkRFRiA6IGxheW91dExvY2F0aW9uOworICAgICAgICAv
KiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uZH0gKi8gdGhpcy5tX2NvbmQg
PSBjb25kID09PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkNvbnN0Q29uZC5BTFdBWVMpIDogY29uZDsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHRoaXMubV9hcnJheVNpemUgPSBhcnJheVNpemUgPT09IHVuZGVmaW5lZCA/IGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA6IGFycmF5U2l6ZTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5B
dHRyaWJUeXBlfQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
dXRlLnByb3RvdHlwZS5nZXRUeXBlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm1fdHlwZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAg
ICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlLnByb3RvdHlwZS5n
ZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbmFtZTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlLnByb3RvdHlwZS5nZXRMYXlvdXRMb2NhdGlv
biA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2xheW91dExvY2F0aW9uOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLkNvbmR9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1
dGUucHJvdG90eXBlLmdldENvbmRpdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tX2NvbmQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAgKi8KKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZS5wcm90b3R5
cGUuZ2V0QXJyYXlTaXplID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fYXJy
YXlTaXplOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gYXR0cmlidXRlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvY2F0aW9u
CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kID0gZnVuY3Rpb24o
YXR0cmlidXRlLCBsb2NhdGlvbikgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhp
cy5tX2F0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHRoaXMubV9sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5C
aW5kLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLm1fYXR0cmlidXRlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kLnBy
b3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5t
X2xvY2F0aW9uOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPn0gYXR0cmlidXRlcworICAgICAqIEBwYXJh
bSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gcHJlQXR0YWNoQmluZAor
ICAgICAqIEBwYXJhbSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gcHJl
TGlua0JpbmQKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QmluZD59IHBvc3RMaW5rQmluZAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVsaW5rCisgICAg
ICogQHBhcmFtIHtib29sZWFuPX0gcmVhdHRhY2gKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPj19IHJlYXR0YWNoQXR0cmlidXRlcworICAg
ICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVuVGVzdCA9IGZ1bmN0aW9uKGF0
dHJpYnV0ZXMsIHByZUF0dGFjaEJpbmQsIHByZUxpbmtCaW5kLCBwb3N0TGlua0JpbmQsIHJlbGlu
aywgcmVhdHRhY2gsIHJlYXR0YWNoQXR0cmlidXRlcykgeworICAgICAgICByZWF0dGFjaCA9IHJl
YXR0YWNoID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IHJlYXR0YWNoOworICAgICAgICByZWF0dGFj
aEF0dHJpYnV0ZXMgPSByZWF0dGFjaEF0dHJpYnV0ZXMgPT09IHVuZGVmaW5lZCA/IFtdIDogcmVh
dHRhY2hBdHRyaWJ1dGVzOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovIHZhciBpc09rID0gdHJ1ZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGFjdGl2ZUJpbmRpbmdzID0gW107CisKKyAgICAgICAgICAgIGZv
ciAodmFyIGJpbmROZHggPSAwOyBiaW5kTmR4IDwgcHJlQXR0YWNoQmluZC5sZW5ndGg7IGJpbmRO
ZHgrKykKKyAgICAgICAgICAgICAgICBhY3RpdmVCaW5kaW5nc1twcmVBdHRhY2hCaW5kW2JpbmRO
ZHhdLmdldEF0dHJpYnV0ZU5hbWUoKV0gPSBwcmVBdHRhY2hCaW5kW2JpbmROZHhdLmdldExvY2F0
aW9uKCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGJpbmROZHggPSAwOyBiaW5kTmR4IDwgcHJl
TGlua0JpbmQubGVuZ3RoOyBiaW5kTmR4KyspCisgICAgICAgICAgICAgICAgYWN0aXZlQmluZGlu
Z3NbcHJlTGlua0JpbmRbYmluZE5keF0uZ2V0QXR0cmlidXRlTmFtZSgpXSA9IHByZUxpbmtCaW5k
W2JpbmROZHhdLmdldExvY2F0aW9uKCk7CisKKyAgICAgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMubG9nQXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKKworICAgICAgICAgICAgLyoqIEB0
eXBlIHtXZWJHTFByb2dyYW19ICovIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOwor
CisgICAgICAgICAgICBpZiAoIXByZUF0dGFjaEJpbmQubGVuZ3RoID09IDApCisgICAgICAgICAg
ICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5iaW5kQXR0cmlidXRlcyhwcm9ncmFtLCBw
cmVBdHRhY2hCaW5kKTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHsqfSAqLyB2YXIgc2hhZGVy
cyA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuY3JlYXRlQW5kQXR0YWNoU2hhZGVycyhwcm9n
cmFtLCBhdHRyaWJ1dGVzLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmhhc0F0dHJpYnV0ZUFs
aWFzaW5nKGF0dHJpYnV0ZXMsIGFjdGl2ZUJpbmRpbmdzKSk7CisKKyAgICAgICAgICAgIGlmICgh
cHJlTGlua0JpbmQubGVuZ3RoID09IDApCisgICAgICAgICAgICAgICAgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5iaW5kQXR0cmlidXRlcyhwcm9ncmFtLCBwcmVMaW5rQmluZCk7CisKKyAgICAg
ICAgICAgICAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgICAgIGFz
c2VydE1zZ09wdGlvbnMoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NU
QVRVUykgPT0gdHJ1ZSwgJ2xpbmsgcHJvZ3JhbSBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmxvZ1Byb2dyYW0ocHJvZ3Jh
bSk7CisKKyAgICAgICAgICAgIGlmICghZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5jaGVja1F1
ZXJ5KHByb2dyYW0sIGF0dHJpYnV0ZXMsIGFjdGl2ZUJpbmRpbmdzKSkKKyAgICAgICAgICAgICAg
ICBpc09rID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICghcG9zdExpbmtCaW5kLmxlbmd0aCA9
PSAwKSB7CisgICAgICAgICAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5iaW5kQXR0
cmlidXRlcyhwcm9ncmFtLCBwb3N0TGlua0JpbmQpOworCisgICAgICAgICAgICAgICAgaWYgKCFn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNoZWNrUXVlcnkocHJvZ3JhbSwgYXR0cmlidXRlcywg
YWN0aXZlQmluZGluZ3MpKQorICAgICAgICAgICAgICAgICAgICBpc09rID0gZmFsc2U7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZWxpbmspIHsKKyAgICAgICAgICAgICAgICBn
bC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlv
bnMoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgPT0gdHJ1
ZSwgJ2xpbmsgcHJvZ3JhbSBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAg
ICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmxvZ1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBiaW5kTmR4ID0gMDsgYmluZE5keCA8IHBvc3RMaW5rQmluZC5s
ZW5ndGg7IGJpbmROZHgrKykKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZlQmluZGluZ3NbcG9z
dExpbmtCaW5kW2JpbmROZHhdLmdldEF0dHJpYnV0ZU5hbWUoKV0gPSBwb3N0TGlua0JpbmRbYmlu
ZE5keF0uZ2V0TG9jYXRpb24oKTsKKworICAgICAgICAgICAgICAgIGlmICghZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5jaGVja1F1ZXJ5KHByb2dyYW0sIGF0dHJpYnV0ZXMsIGFjdGl2ZUJpbmRp
bmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaXNPayA9IGZhbHNlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocmVhdHRhY2gpIHsKKyAgICAgICAgICAgICAgICBnbC5kZXRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVycy5maXJzdCk7CisgICAgICAgICAgICAgICAgZ2wuZGV0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcnMuc2Vjb25kKTsKKworICAgICAgICAgICAgICAgIGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuY3JlYXRlQW5kQXR0YWNoU2hhZGVycyhwcm9ncmFtLCByZWF0
dGFjaEF0dHJpYnV0ZXMsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuaGFzQXR0cmlidXRlQWxp
YXNpbmcocmVhdHRhY2hBdHRyaWJ1dGVzLCBhY3RpdmVCaW5kaW5ncykpOworCisgICAgICAgICAg
ICAgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMp
ID09IHRydWUsICdsaW5rIHByb2dyYW0gZmFpbGVkJywgZmFsc2UsIHRydWUpOworCisgICAgICAg
ICAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5sb2dQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgICAgICAgICAgICAgaWYgKCFnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNoZWNrUXVl
cnkocHJvZ3JhbSwgcmVhdHRhY2hBdHRyaWJ1dGVzLCBhY3RpdmVCaW5kaW5ncykpCisgICAgICAg
ICAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Z2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhpc09rLCAnJywgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgaWYgKHByb2dyYW0pCisgICAgICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9n
cmFtKTsKKworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVx
cFRlc3R9CisgICAgICogQHBhcmFtIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5
cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGFycmF5U2l6ZQorICAgICAqLworICAg
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZEF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlvbih0
eXBlLCBhcnJheVNpemUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9h
cnJheVNpemUgPSBhcnJheVNpemUgPT09IHVuZGVmaW5lZCA/IGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuQXJyYXlFbnVtLk5PVCA6IGFycmF5U2l6ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHRoaXMubV90eXBlID0gdHlwZTsK
KyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNpemUp
LCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5cGUs
IHRoaXMubV9hcnJheVNpemUpKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5CaW5kQXR0cmlidXRlVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RD
YXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5C
aW5kQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkJpbmRBdHRyaWJ1dGVUZXN0OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5CaW5kQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59
ICovIHZhciBub0JpbmRpbmdzID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5k
Pn0gKi8gdmFyIGJpbmRpbmdzID0gW107CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh0aGlzLm1fdHlwZSwgJ2FfMCcsIGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25FbnVtLlVOREVGLCBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNv
bnN0Q29uZC5BTFdBWVMpLCB0aGlzLm1fYXJyYXlTaXplKSk7CisgICAgICAgIGJpbmRpbmdzLnB1
c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8wJywgMykpOworCisgICAg
ICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVuVGVzdChhdHRyaWJ1dGVzLCBub0JpbmRp
bmdzLCBiaW5kaW5ncywgbm9CaW5kaW5ncywgZmFsc2UpOworICAgICAgICByZXR1cm4gdGN1VGVz
dENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICog
QHBhcmFtIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9IHR5cGUKKyAgICAg
KiBAcGFyYW0ge251bWJlcj19IGFycmF5U2l6ZQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQmluZE1heEF0dHJpYnV0ZXNUZXN0ID0gZnVuY3Rpb24odHlwZSwgYXJyYXlT
aXplKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fYXJyYXlTaXplID0g
YXJyYXlTaXplID09PSB1bmRlZmluZWQgPyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5
RW51bS5OT1QgOiBhcnJheVNpemU7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5BdHRyaWJUeXBlfSAqLyB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgICAgIHRj
dVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5n
ZW5lcmF0ZVRlc3ROYW1lKHRoaXMubV90eXBlLCB0aGlzLm1fYXJyYXlTaXplKSwgZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZVRlc3ROYW1lKHRoaXMubV90eXBlLCB0aGlzLm1fYXJy
YXlTaXplKSk7CisgICAgfTsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZE1h
eEF0dHJpYnV0ZXNUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVx
cFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmRNYXhB
dHRyaWJ1dGVzVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkJpbmRNYXhBdHRyaWJ1dGVzVGVzdDsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuQmluZE1heEF0dHJpYnV0ZXNUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5C
aW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhBdHRyaWJ1dGVzID0gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZXRNYXhB
dHRyaWJ1dGVMb2NhdGlvbnMoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBh
cnJheUVsZW1lbnRDb3VudCA9ICh0aGlzLm1fYXJyYXlTaXplICE9IGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA/IHRoaXMubV9hcnJheVNpemUgOiAxKTsKKworICAgICAg
ICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPn0g
Ki8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBuZHggPSAwOworCisgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdNQVhfVkVSVEVYX0FUVFJJQlM6ICcgKyBtYXhBdHRyaWJ1dGVzKTsKKworICAg
ICAgICBmb3IgKHZhciBsb2MgPSBtYXhBdHRyaWJ1dGVzIC0gKGFycmF5RWxlbWVudENvdW50ICog
dGhpcy5tX3R5cGUuZ2V0TG9jYXRpb25TaXplKCkpOyBsb2MgPj0gMDsgbG9jIC09IChhcnJheUVs
ZW1lbnRDb3VudCAqIHRoaXMubV90eXBlLmdldExvY2F0aW9uU2l6ZSgpKSkgeworICAgICAgICAg
ICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0
ZSh0aGlzLm1fdHlwZSwgJ2FfJyArIG5keCwgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2Nh
dGlvbkVudW0uVU5ERUYsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTmV3Q29uZFdpdGhFbnVt
KGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLkFMV0FZUyksIHRoaXMubV9hcnJh
eVNpemUpKTsKKyAgICAgICAgICAgIGJpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQmluZCgnYV8nICsgbmR4LCBsb2MpKTsKKyAgICAgICAgICAgIG5keCsrOworICAg
ICAgICB9CisKKyAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJp
YnV0ZXMsIG5vQmluZGluZ3MsIGJpbmRpbmdzLCBub0JpbmRpbmdzLCBmYWxzZSk7CisgICAgICAg
IHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0KKyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlw
ZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYXJyYXlTaXplCisgICAgICovCisgICAg
Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kSG9sZUF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlv
bih0eXBlLCBhcnJheVNpemUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
bV9hcnJheVNpemUgPSBhcnJheVNpemUgPT09IHVuZGVmaW5lZCA/IGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA6IGFycmF5U2l6ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHRoaXMubV90eXBlID0gdHlw
ZTsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNp
emUpLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5
cGUsIHRoaXMubV9hcnJheVNpemUpKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5CaW5kSG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0
Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuQmluZEhvbGVBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZEhvbGVBdHRyaWJ1dGVUZXN0OworCisgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kSG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90eXBlLml0ZXJh
dGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgbm9CaW5kaW5ncyA9IFtdOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIG1heEF0dHJpYnV0ZXMgPSBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLmdldE1heEF0dHJpYnV0ZUxvY2F0aW9ucygpOworICAgICAgICAvKiogQHR5cGUge2ds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdmFyIHZlYzQgPSBuZXcgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wuRkxPQVRfVkVD
NCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXJyYXlFbGVtZW50Q291bnQg
PSAodGhpcy5tX2FycmF5U2l6ZSAhPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5RW51
bS5OT1QgPyB0aGlzLm1fYXJyYXlTaXplIDogMSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVz
ID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5CaW5kPn0gKi8gdmFyIGJpbmRpbmdzID0gW107CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNo
KG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAnYV8wJykpOwor
ICAgICAgICBiaW5kaW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQo
J2FfMCcsIDApKTsKKworICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQXR0cmlidXRlKHRoaXMubV90eXBlLCAnYV8xJywgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5Mb2NhdGlvbkVudW0uVU5ERUYsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
TmV3Q29uZFdpdGhFbnVtKGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQ29uc3RDb25kLkFMV0FZ
UyksIHRoaXMubV9hcnJheVNpemUpKTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG5keCA9IDI7CisgICAgICAgIGZvciAodmFyIGxvYyA9IDEgKyB0aGlzLm1fdHlwZS5nZXRM
b2NhdGlvblNpemUoKSAqIGFycmF5RWxlbWVudENvdW50OyBsb2MgPCBtYXhBdHRyaWJ1dGVzOyBs
b2MrKykgeworICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAnYV8nICsgbmR4KSk7CisgICAgICAgICAgICBiaW5k
aW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQoJ2FfJyArIG5keCwg
bG9jKSk7CisKKyAgICAgICAgICAgIG5keCsrOworICAgICAgICB9CisKKyAgICAgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJpYnV0ZXMsIG5vQmluZGluZ3MsIGJpbmRp
bmdzLCBub0JpbmRpbmdzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLlByZUF0dGFjaEJpbmRBdHRyaWJ1dGVUZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3ByZV9hdHRh
Y2gnLCAncHJlX2F0dGFjaCcpOworICAgIH07CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLlByZUF0dGFjaEJpbmRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
dGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLlByZUF0dGFjaEJpbmRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUHJlQXR0YWNoQmluZEF0dHJpYnV0ZVRlc3Q7CisK
KyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLlByZUF0dGFjaEJpbmRBdHRyaWJ1dGVUZXN0
LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBb
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhBdHRyaWJ1dGVzID0gZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZXRNYXhBdHRyaWJ1dGVMb2NhdGlvbnMoKTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRl
Pn0gKi8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBuZHggPSAwOworCisgICAgICAgIGF0dHJpYnV0
ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUobmV3IGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndmVjNCcsIDEsIGdsLkZMT0FUX1ZFQzQp
LCAnYV8wJykpOworICAgICAgICBiaW5kaW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkJpbmQoJ2FfMCcsIDMpKTsKKworICAgICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLnJ1blRlc3QoYXR0cmlidXRlcywgYmluZGluZ3MsIG5vQmluZGluZ3MsIG5vQmluZGluZ3Ms
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMg
e3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuUHJlTGlua0JpbmRBdHRyaWJ1dGVUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRj
dVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3ByZV9saW5rJywgJ3ByZV9saW5rJyk7Cisg
ICAgfTsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUHJlTGlua0JpbmRBdHRyaWJ1
dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJv
dG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLlByZUxpbmtCaW5kQXR0cmli
dXRlVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LlByZUxpbmtCaW5kQXR0cmlidXRlVGVzdDsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuUHJlTGlua0JpbmRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5C
aW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBbXTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5
PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPn0gKi8gdmFyIGF0dHJpYnV0ZXMg
PSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkJpbmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBuZHggPSAwOworCisgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QXR0cmliVHlwZSgndmVjNCcsIDEsIGdsLkZMT0FUX1ZFQzQpLCAnYV8wJykpOworICAgICAgICBi
aW5kaW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQoJ2FfMCcsIDMp
KTsKKworICAgICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLnJ1blRlc3QoYXR0cmlidXRl
cywgYmluZGluZ3MsIG5vQmluZGluZ3MsIG5vQmluZGluZ3MsIGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0
fQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUG9zdExpbmtCaW5kQXR0
cmlidXRlVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5j
YWxsKHRoaXMsICdwb3N0X2xpbmsnLCAncG9zdF9saW5rJyk7CisgICAgfTsKKworICAgIGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUG9zdExpbmtCaW5kQXR0cmlidXRlVGVzdC5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5Qb3N0TGlua0JpbmRBdHRyaWJ1dGVUZXN0LnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUG9zdExpbmtCaW5kQXR0
cmlidXRlVGVzdDsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUG9zdExpbmtCaW5k
QXR0cmlidXRlVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAv
KiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBu
b0JpbmRpbmdzID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFy
IGJpbmRpbmdzID0gW107CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZShuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5B
dHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wuRkxPQVRfVkVDNCksICdhXzAnKSk7CisgICAgICAgIGJp
bmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8wJywgMykp
OworCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVuVGVzdChhdHRyaWJ1dGVz
LCBub0JpbmRpbmdzLCBub0JpbmRpbmdzLCBiaW5kaW5ncywgZmFsc2UpOworICAgICAgICByZXR1
cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9
CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kUmVhdHRhY2hBdHRy
aWJ1dGVUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNh
bGwodGhpcywgJ3JlYXR0YWNoJywgJ3JlYXR0YWNoJyk7CisgICAgfTsKKworICAgIGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuQmluZFJlYXR0YWNoQXR0cmlidXRlVGVzdC5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kUmVhdHRhY2hBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZFJlYXR0YWNoQXR0cmli
dXRlVGVzdDsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZFJlYXR0YWNoQXR0
cmlidXRlVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiog
QHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBub0Jp
bmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5BdHRyaWJUeXBlfSAqLyB2YXIgdmVjNCA9IG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkF0dHJpYlR5cGUoJ3ZlYzQnLCAxLCBnbC5GTE9BVF9WRUM0KTsKKyAgICAgICAgLyoqIEB0eXBl
IHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHZhciB2ZWMyID0gbmV3
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndmVjMicsIDEsIGdsLkZMT0FU
X1ZFQzIpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5CaW5kPn0gKi8gdmFyIGJpbmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGU+fSAqLyB2YXIgYXR0cmlidXRl
cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuQXR0cmlidXRlPn0gKi8gdmFyIHJlYXR0YWNoQXR0cmlidXRlcyA9IFtdOworCisgICAgICAg
IGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUo
dmVjNCwgJ2FfMCcpKTsKKyAgICAgICAgYmluZGluZ3MucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5CaW5kKCdhXzAnLCAxKSk7CisgICAgICAgIGJpbmRpbmdzLnB1c2gobmV3IGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8xJywgMSkpOworCisgICAgICAgIHJlYXR0
YWNoQXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0
ZSh2ZWMyLCAnYV8xJykpOworCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVu
VGVzdChhdHRyaWJ1dGVzLCBub0JpbmRpbmdzLCBiaW5kaW5ncywgbm9CaW5kaW5ncywgZmFsc2Us
IHRydWUsIHJlYXR0YWNoQXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5J
dGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0g
e2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlwZQorICAgICAqIEBwYXJh
bSB7bnVtYmVyPX0gYXJyYXlTaXplCisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5Mb2NhdGlvbkF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlvbih0eXBlLCBhcnJheVNpemUpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9hcnJheVNpemUgPSBhcnJheVNp
emUgPT09IHVuZGVmaW5lZCA/IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5P
VCA6IGFycmF5U2l6ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLkF0dHJpYlR5cGV9ICovIHRoaXMubV90eXBlID0gdHlwZTsKKyAgICAgICAgdGN1VGVzdENh
c2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRl
VGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNpemUpLCBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNpemUp
KTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbkF0dHJp
YnV0ZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25BdHRyaWJ1
dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
TG9jYXRpb25BdHRyaWJ1dGVUZXN0OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5M
b2NhdGlvbkF0dHJpYnV0ZVRlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAq
LyB2YXIgbm9CaW5kaW5ncyA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlPn0gKi8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKwor
ICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0
cmlidXRlKHRoaXMubV90eXBlLCAnYV8wJywgMywgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5O
ZXdDb25kV2l0aEVudW0oZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Db25zdENvbmQuQUxXQVlT
KSwgdGhpcy5tX2FycmF5U2l6ZSkpOworCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMucnVuVGVzdChhdHRyaWJ1dGVzLCBub0JpbmRpbmdzLCBub0JpbmRpbmdzLCBub0JpbmRpbmdz
LCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRz
IHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYXJyYXlT
aXplCisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbk1heEF0
dHJpYnV0ZXNUZXN0ID0gZnVuY3Rpb24odHlwZSwgYXJyYXlTaXplKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fYXJyYXlTaXplID0gYXJyYXlTaXplID09PSB1bmRlZmlu
ZWQgPyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5RW51bS5OT1QgOiBhcnJheVNpemU7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBl
fSAqLyB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNh
bGwodGhpcywgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZVRlc3ROYW1lKHRoaXMu
bV90eXBlLCB0aGlzLm1fYXJyYXlTaXplKSwgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZW5l
cmF0ZVRlc3ROYW1lKHRoaXMubV90eXBlLCB0aGlzLm1fYXJyYXlTaXplKSk7CisgICAgfTsKKwor
ICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25NYXhBdHRyaWJ1dGVzVGVzdC5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7
CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Mb2NhdGlvbk1heEF0dHJpYnV0ZXNUZXN0
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRp
b25NYXhBdHRyaWJ1dGVzVGVzdDsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9j
YXRpb25NYXhBdHRyaWJ1dGVzVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59
ICovIHZhciBub0JpbmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4QXR0cmlidXRlcyA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2V0TWF4QXR0cmli
dXRlTG9jYXRpb25zKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXJyYXlF
bGVtZW50Q291bnQgPSAodGhpcy5tX2FycmF5U2l6ZSAhPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRl
c3RzLkFycmF5RW51bS5OT1QgPyB0aGlzLm1fYXJyYXlTaXplIDogMSk7CisKKyAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZh
ciBhdHRyaWJ1dGVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbmR4
ID0gMDsKKworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnTUFYX1ZFUlRFWF9BVFRSSUJT
OiAnICsgbWF4QXR0cmlidXRlcyk7CisKKyAgICAgICAgZm9yICh2YXIgbG9jID0gbWF4QXR0cmli
dXRlcyAtIChhcnJheUVsZW1lbnRDb3VudCAqIHRoaXMubV90eXBlLmdldExvY2F0aW9uU2l6ZSgp
KTsgbG9jID49IDA7IGxvYyAtPSAoYXJyYXlFbGVtZW50Q291bnQgKiB0aGlzLm1fdHlwZS5nZXRM
b2NhdGlvblNpemUoKSkpIHsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUodGhpcy5tX3R5cGUsICdhXycgKyBuZHgsIGxv
YywgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5OZXdDb25kV2l0aEVudW0oZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5Db25zdENvbmQuQUxXQVlTKSwgdGhpcy5tX2FycmF5U2l6ZSkpOworICAg
ICAgICAgICAgbmR4Kys7CisgICAgICAgIH0KKworICAgICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLnJ1blRlc3QoYXR0cmlidXRlcywgbm9CaW5kaW5ncywgbm9CaW5kaW5ncywgbm9CaW5k
aW5ncywgZmFsc2UpOworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5T
VE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGFy
cmF5U2l6ZQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25I
b2xlQXR0cmlidXRlVGVzdCA9IGZ1bmN0aW9uKHR5cGUsIGFycmF5U2l6ZSkgeworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2FycmF5U2l6ZSA9IGFycmF5U2l6ZSA9PT0gdW5k
ZWZpbmVkID8gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BcnJheUVudW0uTk9UIDogYXJyYXlT
aXplOworICAgICAgICAvKiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
VHlwZX0gKi8gdGhpcy5tX3R5cGUgPSB0eXBlOworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5jYWxsKHRoaXMsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJhdGVUZXN0TmFtZSh0
aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6ZSksIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
Z2VuZXJhdGVUZXN0TmFtZSh0aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6ZSkpOworICAgIH07
CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkxvY2F0aW9uSG9sZUF0dHJpYnV0ZVRl
c3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5
cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25Ib2xlQXR0cmlidXRl
VGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkxv
Y2F0aW9uSG9sZUF0dHJpYnV0ZVRlc3Q7CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkxvY2F0aW9uSG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJp
bmQ+fSAqLyB2YXIgbm9CaW5kaW5ncyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG1heEF0dHJpYnV0ZXMgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdldE1heEF0
dHJpYnV0ZUxvY2F0aW9ucygpOworICAgICAgICAvKiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdmFyIHZlYzQgPSBuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wuRkxPQVRfVkVDNCk7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXJyYXlFbGVtZW50Q291bnQgPSAodGhpcy5tX2FycmF5
U2l6ZSAhPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5RW51bS5OT1QgPyB0aGlzLm1f
YXJyYXlTaXplIDogMSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107CisKKyAgICAg
ICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0
ZSh2ZWM0LCAnYV8wJywgMCkpOworCisgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUodGhpcy5tX3R5cGUsICdhXzEnLCBnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLkxvY2F0aW9uRW51bS5VTkRFRiwgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5OZXdDb25kV2l0aEVudW0oZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Db25zdENv
bmQuQUxXQVlTKSwgdGhpcy5tX2FycmF5U2l6ZSkpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbmR4ID0gMjsKKyAgICAgICAgZm9yICh2YXIgbG9jID0gMSArIHRoaXMubV90
eXBlLmdldExvY2F0aW9uU2l6ZSgpICogYXJyYXlFbGVtZW50Q291bnQ7IGxvYyA8IG1heEF0dHJp
YnV0ZXM7IGxvYysrKSB7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHZlYzQsICdhXycgKyBuZHgsIGxvYykpOworICAg
ICAgICAgICAgbmR4Kys7CisgICAgICAgIH0KKworICAgICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLnJ1blRlc3QoYXR0cmlidXRlcywgbm9CaW5kaW5ncywgbm9CaW5kaW5ncywgbm9CaW5k
aW5ncywgZmFsc2UpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0
LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0g
YXJyYXlTaXplCisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5NaXhlZEF0
dHJpYnV0ZVRlc3QgPSBmdW5jdGlvbih0eXBlLCBhcnJheVNpemUpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHRoaXMubV90eXBl
ID0gdHlwZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9hcnJheVNpemUg
PSBhcnJheVNpemUgPT09IHVuZGVmaW5lZCA/IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJy
YXlFbnVtLk5PVCA6IGFycmF5U2l6ZTsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2Fs
bCh0aGlzLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5t
X3R5cGUsIHRoaXMubV9hcnJheVNpemUpLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVy
YXRlVGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNpemUpKTsKKyAgICB9OworCisg
ICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5NaXhlZEF0dHJpYnV0ZVRlc3QucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRBdHRyaWJ1dGVUZXN0Owor
CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5NaXhlZEF0dHJpYnV0ZVRlc3QucHJvdG90
eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgbm9CaW5kaW5ncyA9IFtdOworCisg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0g
Ki8gdmFyIGJpbmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGU+fSAqLyB2YXIgYXR0cmlidXRlcyA9IFtdOworCisg
ICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRy
aWJ1dGUodGhpcy5tX3R5cGUsICdhXzAnLCAzLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5l
d0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbnN0Q29uZC5BTFdBWVMp
LCB0aGlzLm1fYXJyYXlTaXplKSk7CisgICAgICAgIGJpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8wJywgNCkpOworCisgICAgICAgIGdsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMucnVuVGVzdChhdHRyaWJ1dGVzLCBub0JpbmRpbmdzLCBiaW5kaW5ncywg
bm9CaW5kaW5ncywgZmFsc2UpOworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJl
c3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJl
cj19IGFycmF5U2l6ZQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4
ZWRNYXhBdHRyaWJ1dGVzVGVzdCA9IGZ1bmN0aW9uKHR5cGUsIGFycmF5U2l6ZSkgeworICAgICAg
ICAvKiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdGhp
cy5tX3R5cGUgPSB0eXBlOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2Fy
cmF5U2l6ZSA9IGFycmF5U2l6ZSA9PT0gdW5kZWZpbmVkID8gZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5BcnJheUVudW0uTk9UIDogYXJyYXlTaXplOworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJhdGVUZXN0TmFt
ZSh0aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6ZSksIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuZ2VuZXJhdGVUZXN0TmFtZSh0aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6ZSkpOworICAg
IH07CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVkTWF4QXR0cmlidXRlc1Rl
c3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5
cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRNYXhBdHRyaWJ1dGVzVGVz
dC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVk
TWF4QXR0cmlidXRlc1Rlc3Q7CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVk
TWF4QXR0cmlidXRlc1Rlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2
YXIgbm9CaW5kaW5ncyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1h
eEF0dHJpYnV0ZXMgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdldE1heEF0dHJpYnV0ZUxv
Y2F0aW9ucygpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFycmF5RWxlbWVu
dENvdW50ID0gKHRoaXMubV9hcnJheVNpemUgIT0gZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5B
cnJheUVudW0uTk9UID8gdGhpcy5tX2FycmF5U2l6ZSA6IDEpOworCisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIGJpbmRpbmdz
ID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5BdHRyaWJ1dGU+fSAqLyB2YXIgYXR0cmlidXRlcyA9IFtdOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG5keCA9IDA7CisKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J01BWF9WRVJURVhfQVRUUklCUzogJyArIG1heEF0dHJpYnV0ZXMpOworCisgICAgICAgIGZvciAo
dmFyIGxvYyA9IG1heEF0dHJpYnV0ZXMgLSAoYXJyYXlFbGVtZW50Q291bnQgKiB0aGlzLm1fdHlw
ZS5nZXRMb2NhdGlvblNpemUoKSk7IGxvYyA+PSAwOyBsb2MgLT0gKGFycmF5RWxlbWVudENvdW50
ICogdGhpcy5tX3R5cGUuZ2V0TG9jYXRpb25TaXplKCkpKSB7CisgICAgICAgICAgICBpZiAoKG5k
eCAlIDIpICE9IDApCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh0aGlzLm1fdHlwZSwgJ2FfJyArIG5keCwgbG9j
LCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkNvbnN0Q29uZC5BTFdBWVMpLCB0aGlzLm1fYXJyYXlTaXplKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHRoaXMubV90eXBlLCAnYV8nICsgbmR4LCBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkxvY2F0aW9uRW51bS5VTkRFRiwgZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5OZXdDb25kV2l0aEVudW0oZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5D
b25zdENvbmQuQUxXQVlTKSwgdGhpcy5tX2FycmF5U2l6ZSkpOworICAgICAgICAgICAgICAgIGJp
bmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8nICsgbmR4
LCBsb2MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5keCsrOworICAgICAgICB9CisK
KyAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJpYnV0ZXMsIG5v
QmluZGluZ3MsIGJpbmRpbmdzLCBub0JpbmRpbmdzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0
Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAg
ICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlwZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYXJyYXlTaXplCisgICAgICovCisgICAgZ2xzQXR0cmli
dXRlTG9jYXRpb25UZXN0cy5NaXhlZEhvbGVBdHRyaWJ1dGVUZXN0ID0gZnVuY3Rpb24odHlwZSwg
YXJyYXlTaXplKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5BdHRyaWJUeXBlfSAqLyB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB0aGlzLm1fYXJyYXlTaXplID0gYXJyYXlTaXplID09PSB1bmRlZmluZWQgPyBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkFycmF5RW51bS5OT1QgOiBhcnJheVNpemU7CisgICAg
ICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5nZW5lcmF0ZVRlc3ROYW1lKHRoaXMubV90eXBlLCB0aGlzLm1fYXJyYXlTaXplKSwgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5nZW5lcmF0ZVRlc3ROYW1lKHRoaXMubV90eXBlLCB0aGlz
Lm1fYXJyYXlTaXplKSk7CisgICAgfTsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
TWl4ZWRIb2xlQXR0cmlidXRlVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRjdVRlc3RD
YXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5N
aXhlZEhvbGVBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuTWl4ZWRIb2xlQXR0cmlidXRlVGVzdDsKKworICAgIGdsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuTWl4ZWRIb2xlQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQmluZD59ICovIHZhciBub0JpbmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWF4QXR0cmlidXRlcyA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuZ2V0TWF4QXR0cmlidXRlTG9jYXRpb25zKCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlfSAqLyB2YXIgdmVjNCA9IG5ldyBnbHNBdHRy
aWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ3ZlYzQnLCAxLCBnbC5GTE9BVF9WRUM0KTsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhcnJheUVsZW1lbnRDb3VudCA9ICh0
aGlzLm1fYXJyYXlTaXplICE9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5P
VCA/IHRoaXMubV9hcnJheVNpemUgOiAxKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBiaW5kaW5ncyA9IFtdOworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRl
Pn0gKi8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKworICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHZlYzQsICdhXzAnKSk7CisgICAg
ICAgIGJpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8w
JywgMCkpOworCisgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5BdHRyaWJ1dGUodGhpcy5tX3R5cGUsICdhXzEnLCBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkxvY2F0aW9uRW51bS5VTkRFRiwgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5OZXdD
b25kV2l0aEVudW0oZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Db25zdENvbmQuQUxXQVlTKSwg
dGhpcy5tX2FycmF5U2l6ZSkpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bmR4ID0gMjsKKyAgICAgICAgZm9yICh2YXIgbG9jID0gMSArIHRoaXMubV90eXBlLmdldExvY2F0
aW9uU2l6ZSgpICogYXJyYXlFbGVtZW50Q291bnQ7IGxvYyA8IG1heEF0dHJpYnV0ZXM7IGxvYysr
KSB7CisgICAgICAgICAgICBpZiAoKG5keCAlIDIpICE9IDApCisgICAgICAgICAgICAgICAgYXR0
cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0
LCAnYV8nICsgbmR4LCBsb2MpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUo
dmVjNCwgJ2FfJyArIG5keCwgbG9jKSk7CisgICAgICAgICAgICAgICAgYmluZGluZ3MucHVzaChu
ZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdhXycgKyBuZHgsIGxvYykpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbmR4Kys7CisgICAgICAgIH0KKworICAgICAgICBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLnJ1blRlc3QoYXR0cmlidXRlcywgbm9CaW5kaW5ncywgYmlu
ZGluZ3MsIG5vQmluZGluZ3MsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0
ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZFJlbGlua0F0dHJpYnV0ZVRlc3QgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAncmVsaW5rJywg
J3JlbGluaycpOworICAgIH07CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmRS
ZWxpbmtBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2Uu
RGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmRS
ZWxpbmtBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQmluZFJlbGlua0F0dHJpYnV0ZVRlc3Q7CisKKyAgICBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkJpbmRSZWxpbmtBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5CaW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBl
IHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHZhciB2ZWM0ID0gbmV3
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZSgndmVjNCcsIDEsIGdsLkZMT0FU
X1ZFQzQpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5BdHRyaWJ1dGU+fSAqLyB2YXIgYXR0cmlidXRlcyA9IFtdOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBwcmVMaW5r
QmluZGluZ3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgcG9zdExpbmtCaW5kaW5ncyA9IFtdOworCisgICAgICAg
IGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUo
dmVjNCwgJ2FfMCcpKTsKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAnYV8xJykpOworCisgICAgICAgIHByZUxpbmtC
aW5kaW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQoJ2FfMCcsIDMp
KTsKKyAgICAgICAgcHJlTGlua0JpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMuQmluZCgnYV8wJywgNSkpOworCisgICAgICAgIHBvc3RMaW5rQmluZGluZ3MucHVzaChu
ZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdhXzAnLCA2KSk7CisKKyAgICAgICAg
Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJpYnV0ZXMsIG5vQmluZGluZ3Ms
IHByZUxpbmtCaW5kaW5ncywgcG9zdExpbmtCaW5kaW5ncywgdHJ1ZSk7CisgICAgICAgIHJldHVy
biB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0K
KyAgICAgKiBAcGFyYW0ge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gdHlw
ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYXJyYXlTaXplCisgICAgICovCisgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kUmVsaW5rSG9sZUF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlv
bih0eXBlLCBhcnJheVNpemUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkF0dHJpYlR5cGV9ICovIHRoaXMubV90eXBlID0gdHlwZTsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9hcnJheVNpemUgPSBhcnJheVNpemUgPT09IHVuZGVm
aW5lZCA/IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXJyYXlFbnVtLk5PVCA6IGFycmF5U2l6
ZTsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5cGUsIHRoaXMubV9hcnJheVNp
emUpLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdlbmVyYXRlVGVzdE5hbWUodGhpcy5tX3R5
cGUsIHRoaXMubV9hcnJheVNpemUpKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5CaW5kUmVsaW5rSG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQmluZFJlbGlua0hvbGVBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZFJlbGlua0hvbGVBdHRyaWJ1dGVU
ZXN0OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kUmVsaW5rSG9sZUF0dHJp
YnV0ZVRlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgbm9CaW5k
aW5ncyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEF0dHJpYnV0
ZXMgPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmdldE1heEF0dHJpYnV0ZUxvY2F0aW9ucygp
OworICAgICAgICAvKiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlw
ZX0gKi8gdmFyIHZlYzQgPSBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBl
KCd2ZWM0JywgMSwgZ2wuRkxPQVRfVkVDNCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgYXJyYXlFbGVtZW50Q291bnQgPSAodGhpcy5tX2FycmF5U2l6ZSAhPSBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLkFycmF5RW51bS5OT1QgPyB0aGlzLm1fYXJyYXlTaXplIDogMSk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJp
YnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIHByZUxpbmtCaW5kaW5ncyA9
IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
QmluZD59ICovIHZhciBwb3N0TGlua0JpbmRpbmdzID0gW107CisKKyAgICAgICAgYXR0cmlidXRl
cy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAnYV8w
JykpOworICAgICAgICBwcmVMaW5rQmluZGluZ3MucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5CaW5kKCdhXzAnLCAwKSk7CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh0aGlzLm1fdHlwZSwgJ2FfMScsIGds
c0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTG9jYXRpb25FbnVtLlVOREVGLCBnbHNBdHRyaWJ1dGVM
b2NhdGlvblRlc3RzLk5ld0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNv
bnN0Q29uZC5BTFdBWVMpLCB0aGlzLm1fYXJyYXlTaXplKSk7CisKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBuZHggPSAyOworICAgICAgICBmb3IgKHZhciBsb2MgPSAxICsgdGhp
cy5tX3R5cGUuZ2V0TG9jYXRpb25TaXplKCkgKiBhcnJheUVsZW1lbnRDb3VudDsgbG9jIDwgbWF4
QXR0cmlidXRlczsgbG9jKyspIHsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaChuZXcgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJ1dGUodmVjNCwgJ2FfJyArIG5keCkpOworICAg
ICAgICAgICAgcHJlTGlua0JpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVz
dHMuQmluZCgnYV8nICsgbmR4LCBsb2MpKTsKKworICAgICAgICAgICAgbmR4Kys7CisgICAgICAg
IH0KKworICAgICAgICBwb3N0TGlua0JpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuQmluZCgnYV8yJywgMSkpOworCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9u
VGVzdHMucnVuVGVzdChhdHRyaWJ1dGVzLCBub0JpbmRpbmdzLCBwcmVMaW5rQmluZGluZ3MsIHBv
c3RMaW5rQmluZGluZ3MsIHRydWUpOworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0
ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICogQHBhcmFtIHtnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge251
bWJlcj19IGFycmF5U2l6ZQorICAgICAqLworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMu
TWl4ZWRSZWxpbmtIb2xlQXR0cmlidXRlVGVzdCA9IGZ1bmN0aW9uKHR5cGUsIGFycmF5U2l6ZSkg
eworICAgICAgICAvKiogQHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlw
ZX0gKi8gdGhpcy5tX3R5cGUgPSB0eXBlOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5tX2FycmF5U2l6ZSA9IGFycmF5U2l6ZSA9PT0gdW5kZWZpbmVkID8gZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5BcnJheUVudW0uTk9UIDogYXJyYXlTaXplOworICAgICAgICB0Y3VUZXN0
Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuZ2VuZXJh
dGVUZXN0TmFtZSh0aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6ZSksIGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuZ2VuZXJhdGVUZXN0TmFtZSh0aGlzLm1fdHlwZSwgdGhpcy5tX2FycmF5U2l6
ZSkpOworICAgIH07CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVkUmVsaW5r
SG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRS
ZWxpbmtIb2xlQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLk1peGVkUmVsaW5rSG9sZUF0dHJpYnV0ZVRlc3Q7CisKKyAgICBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVkUmVsaW5rSG9sZUF0dHJpYnV0ZVRlc3QucHJvdG90
eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgbm9CaW5kaW5ncyA9IFtdOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEF0dHJpYnV0ZXMgPSBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLmdldE1heEF0dHJpYnV0ZUxvY2F0aW9ucygpOworICAgICAgICAvKiog
QHR5cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdmFyIHZlYzQg
PSBuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wu
RkxPQVRfVkVDNCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXJyYXlFbGVt
ZW50Q291bnQgPSAodGhpcy5tX2FycmF5U2l6ZSAhPSBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkFycmF5RW51bS5OT1QgPyB0aGlzLm1fYXJyYXlTaXplIDogMSk7CisKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgcHJlTGlu
a0JpbmRpbmdzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIHBvc3RMaW5rQmluZGluZ3MgPSBbXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICov
IHZhciBhdHRyaWJ1dGVzID0gW107CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAnYV8wJykpOworICAgICAgICBw
cmVMaW5rQmluZGluZ3MucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdh
XzAnLCAwKSk7CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkF0dHJpYnV0ZSh0aGlzLm1fdHlwZSwgJ2FfMScsIGdsc0F0dHJpYnV0ZUxvY2F0
aW9uVGVzdHMuTG9jYXRpb25FbnVtLlVOREVGLCBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk5l
d0NvbmRXaXRoRW51bShnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkNvbnN0Q29uZC5BTFdBWVMp
LCB0aGlzLm1fYXJyYXlTaXplKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBuZHggPSAyOworICAgICAgICBmb3IgKHZhciBsb2MgPSAxICsgdGhpcy5tX3R5cGUuZ2V0TG9j
YXRpb25TaXplKCkgKiBhcnJheUVsZW1lbnRDb3VudDsgbG9jIDwgbWF4QXR0cmlidXRlczsgbG9j
KyspIHsKKyAgICAgICAgICAgIGlmICgobmR4ICUgMikgIT0gMCkKKyAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHZl
YzQsICdhXycgKyBuZHgsIGxvYykpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0
ZSh2ZWM0LCAnYV8nICsgbmR4KSk7CisgICAgICAgICAgICAgICAgcHJlTGlua0JpbmRpbmdzLnB1
c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8nICsgbmR4LCBsb2MpKTsK
KworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmR4Kys7CisgICAgICAgIH0KKworICAgICAg
ICBwb3N0TGlua0JpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmlu
ZCgnYV8yJywgMSkpOworCisgICAgICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVuVGVz
dChhdHRyaWJ1dGVzLCBub0JpbmRpbmdzLCBwcmVMaW5rQmluZGluZ3MsIHBvc3RMaW5rQmluZGlu
Z3MsIHRydWUpOworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9Q
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICovCisgICAgZ2xzQXR0cmlidXRlTG9jYXRp
b25UZXN0cy5QcmVBdHRhY2hNaXhlZEF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAncHJlX2F0dGFjaCcsICdwcmVfYXR0
YWNoJyk7CisgICAgfTsKKworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUHJlQXR0YWNo
TWl4ZWRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVzdENhc2Uu
RGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLlByZUF0
dGFjaE1peGVkQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNBdHRyaWJ1
dGVMb2NhdGlvblRlc3RzLlByZUF0dGFjaE1peGVkQXR0cmlidXRlVGVzdDsKKworICAgIGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuUHJlQXR0YWNoTWl4ZWRBdHRyaWJ1dGVUZXN0LnByb3RvdHlw
ZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBbXTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRl
Pn0gKi8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKworICAg
ICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
dXRlKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ3ZlYzQnLCAxLCBn
bC5GTE9BVF9WRUM0KSwgJ2FfMCcsIDEpKTsKKyAgICAgICAgYmluZGluZ3MucHVzaChuZXcgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdhXzAnLCAzKSk7CisKKyAgICAgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJpYnV0ZXMsIGJpbmRpbmdzLCBub0JpbmRp
bmdzLCBub0JpbmRpbmdzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLlByZUxpbmtNaXhlZEF0dHJpYnV0ZVRlc3QgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCAncHJlX2xpbmsn
LCAncHJlX2xpbmsnKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Q
cmVMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVz
dENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LlByZUxpbmtNaXhlZEF0dHJpYnV0ZVRlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5QcmVMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0OworCisgICAgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5QcmVMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0LnByb3RvdHlw
ZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIG5vQmluZGluZ3MgPSBbXTsKKworICAg
ICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRl
Pn0gKi8gdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKworICAg
ICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
dXRlKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYlR5cGUoJ3ZlYzQnLCAxLCBn
bC5GTE9BVF9WRUM0KSwgJ2FfMCcsIDEpKTsKKyAgICAgICAgYmluZGluZ3MucHVzaChuZXcgZ2xz
QXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdhXzAnLCAzKSk7CisKKyAgICAgICAgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0KGF0dHJpYnV0ZXMsIG5vQmluZGluZ3MsIGJpbmRp
bmdzLCBub0JpbmRpbmdzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LlNUT1A7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKi8KKyAgICBnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLlBvc3RMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3Bvc3RfbGlu
aycsICdwb3N0X2xpbmsnKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0
cy5Qb3N0TGlua01peGVkQXR0cmlidXRlVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHRj
dVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25U
ZXN0cy5Qb3N0TGlua01peGVkQXR0cmlidXRlVGVzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBn
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLlBvc3RMaW5rTWl4ZWRBdHRyaWJ1dGVUZXN0OworCisg
ICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5Qb3N0TGlua01peGVkQXR0cmlidXRlVGVzdC5w
cm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5
PGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBub0JpbmRpbmdzID0gW107
CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0
dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIGJpbmRpbmdzID0gW107
CisKKyAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3Rz
LkF0dHJpYnV0ZShuZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0
JywgMSwgZ2wuRkxPQVRfVkVDNCksICdhXzAnLCAxKSk7CisgICAgICAgIGJpbmRpbmdzLnB1c2go
bmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8wJywgMykpOworCisgICAgICAg
IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMucnVuVGVzdChhdHRyaWJ1dGVzLCBub0JpbmRpbmdz
LCBub0JpbmRpbmdzLCBiaW5kaW5ncywgZmFsc2UpOworICAgICAgICByZXR1cm4gdGN1VGVzdENh
c2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICovCisg
ICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5NaXhlZFJlYXR0YWNoQXR0cmlidXRlVGVzdCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsICdy
ZWF0dGFjaCcsICdyZWF0dGFjaCcpOworICAgIH07CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLk1peGVkUmVhdHRhY2hBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLk1peGVkUmVhdHRhY2hBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRSZWF0dGFjaEF0dHJpYnV0ZVRlc3Q7
CisKKyAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLk1peGVkUmVhdHRhY2hBdHRyaWJ1dGVU
ZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIG5vQmluZGluZ3Mg
PSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJp
YlR5cGV9ICovIHZhciB2ZWM0ID0gbmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmli
VHlwZSgndmVjNCcsIDEsIGdsLkZMT0FUX1ZFQzQpOworICAgICAgICAvKiogQHR5cGUge2dsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdmFyIHZlYzIgPSBuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWMyJywgMSwgZ2wuRkxPQVRfVkVDMik7
CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJp
bmQ+fSAqLyB2YXIgYmluZGluZ3MgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNB
dHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107
CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRy
aWJ1dGU+fSAqLyB2YXIgcmVhdHRhY2hBdHRyaWJ1dGVzID0gW107CisKKyAgICAgICAgYXR0cmli
dXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0ZSh2ZWM0LCAn
YV8wJywgMikpOworICAgICAgICBiaW5kaW5ncy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkJpbmQoJ2FfMCcsIDEpKTsKKyAgICAgICAgYmluZGluZ3MucHVzaChuZXcgZ2xzQXR0
cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kKCdhXzEnLCAxKSk7CisKKyAgICAgICAgcmVhdHRhY2hB
dHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHZl
YzIsICdhXzEnKSk7CisKKyAgICAgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5ydW5UZXN0
KGF0dHJpYnV0ZXMsIG5vQmluZGluZ3MsIGJpbmRpbmdzLCBub0JpbmRpbmdzLCBmYWxzZSwgdHJ1
ZSwgcmVhdHRhY2hBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJh
dGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqLworICAgIGdsc0F0
dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRSZWxpbmtBdHRyaWJ1dGVUZXN0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgJ3JlbGluaycsICdy
ZWxpbmsnKTsKKyAgICB9OworCisgICAgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5NaXhlZFJl
bGlua0F0dHJpYnV0ZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuTWl4ZWRS
ZWxpbmtBdHRyaWJ1dGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuTWl4ZWRSZWxpbmtBdHRyaWJ1dGVUZXN0OworCisgICAgZ2xzQXR0cmlidXRl
TG9jYXRpb25UZXN0cy5NaXhlZFJlbGlua0F0dHJpYnV0ZVRlc3QucHJvdG90eXBlLml0ZXJhdGUg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2Nh
dGlvblRlc3RzLkJpbmQ+fSAqLyB2YXIgbm9CaW5kaW5ncyA9IFtdOworICAgICAgICAvKiogQHR5
cGUge2dsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmliVHlwZX0gKi8gdmFyIHZlYzQgPSBu
ZXcgZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5BdHRyaWJUeXBlKCd2ZWM0JywgMSwgZ2wuRkxP
QVRfVkVDNCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNBdHRyaWJ1dGVMb2NhdGlv
blRlc3RzLkF0dHJpYnV0ZT59ICovIHZhciBhdHRyaWJ1dGVzID0gW107CisgICAgICAgIC8qKiBA
dHlwZSB7QXJyYXk8Z2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5CaW5kPn0gKi8gdmFyIHByZUxp
bmtCaW5kaW5ncyA9IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0F0dHJpYnV0ZUxv
Y2F0aW9uVGVzdHMuQmluZD59ICovIHZhciBwb3N0TGlua0JpbmRpbmdzID0gW107CisKKyAgICAg
ICAgYXR0cmlidXRlcy5wdXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkF0dHJpYnV0
ZSh2ZWM0LCAnYV8wJywgMSkpOworICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmV3IGdsc0F0dHJp
YnV0ZUxvY2F0aW9uVGVzdHMuQXR0cmlidXRlKHZlYzQsICdhXzEnKSk7CisKKyAgICAgICAgcHJl
TGlua0JpbmRpbmdzLnB1c2gobmV3IGdsc0F0dHJpYnV0ZUxvY2F0aW9uVGVzdHMuQmluZCgnYV8w
JywgMykpOworICAgICAgICBwcmVMaW5rQmluZGluZ3MucHVzaChuZXcgZ2xzQXR0cmlidXRlTG9j
YXRpb25UZXN0cy5CaW5kKCdhXzAnLCA1KSk7CisKKyAgICAgICAgcG9zdExpbmtCaW5kaW5ncy5w
dXNoKG5ldyBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLkJpbmQoJ2FfMCcsIDYpKTsKKworICAg
ICAgICBnbHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLnJ1blRlc3QoYXR0cmlidXRlcywgbm9CaW5k
aW5ncywgcHJlTGlua0JpbmRpbmdzLCBwb3N0TGlua0JpbmRpbmdzLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvbW9kdWxlcy9zaGFyZWQvZ2xzQnVmZmVyVGVzdFV0aWwuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0J1ZmZl
clRlc3RVdGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0Njc4MmI0YjY1MTQxNmQ2YzZlMmNiNTg3NGYzNTY4
NDc2ODQyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0J1ZmZlclRlc3RVdGlsLmpz
CkBAIC0wLDAgKzEsMTA2OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMg
UXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
K2dvb2cucHJvdmlkZSgnbW9kdWxlcy5zaGFyZWQuZ2xzQnVmZmVyVGVzdFV0aWwnKTsKK2dvb2cu
cmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRl
c3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLmRlbGlicy5kZWJhc2UuZGVVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFk
ZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRp
bCcpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGdsc0J1ZmZlclRlc3RV
dGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzQnVmZmVyVGVzdFV0aWw7CisgICAgdmFyIHRjdUltYWdl
Q29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOworICAgIHZhciB0Y3VS
R0JBID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOworICAgIHZhciB0Y3VTdXJmYWNlID0gZnJh
bWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29y
ay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVRleHR1cmUgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVRleHR1cmU7CisgICAgdmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3Bl
bmdsLmdsdVNoYWRlclByb2dyYW07CisgICAgdmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsu
b3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAgdmFyIGdsdURyYXdVdGlsID0gZnJhbWV3b3JrLm9w
ZW5nbC5nbHVEcmF3VXRpbDsKKyAgICB2YXIgZGVVdGlsID0gZnJhbWV3b3JrLmRlbGlicy5kZWJh
c2UuZGVVdGlsOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1h
dGg7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207
CisgICAgdmFyIGRlU3RyaW5nID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJpbmc7CisK
KyAgICBnbHNCdWZmZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFID0gODsgLy8hPCBRdWFkIHNp
emUgaW4gVmVydGV4QXJyYXlWZXJpZmllcgorICAgIGdsc0J1ZmZlclRlc3RVdGlsLk1BWF9MSU5F
U19QRVJfSU5ERVhfQVJSQVlfRFJBVyA9IDEyODsgLy8hPCBNYXhpbXVtIG51bWJlciBvZiBsaW5l
cyBwZXIgb25lIGRyYXcgaW4gSW5kZXhBcnJheVZlcmlmaWVyCisgICAgZ2xzQnVmZmVyVGVzdFV0
aWwuSU5ERVhfQVJSQVlfRFJBV19WSUVXUE9SVF9XSURUSCA9IDEyODsKKyAgICBnbHNCdWZmZXJU
ZXN0VXRpbC5JTkRFWF9BUlJBWV9EUkFXX1ZJRVdQT1JUX0hFSUdIVCA9IDEyODsKKworICAgIC8v
IEhlbHBlciBmdW5jdGlvbnMuCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9
IHB0cgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1CeXRlcworICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzZWVkCisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuZmlsbFdpdGhSYW5kb21C
eXRlcyA9IGZ1bmN0aW9uKHB0ciwgbnVtQnl0ZXMsIHNlZWQpIHsKKyAgICAgICAgdmFyIHJuZCA9
IG5ldyBkZVJhbmRvbS5SYW5kb20oc2VlZCk7CisgICAgICAgIGZvciAodmFyIGxlZnQgPSBudW1C
eXRlczsgbGVmdCA+IDA7IGxlZnQtLSkKKyAgICAgICAgICAgIHB0cltsZWZ0IC0gMV0gPSBybmQu
Z2V0SW50KCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0g
cmVzUHRyCisgICAgICogQHBhcmFtIHtVaW50OEFycmF5fSByZWZQdHIKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbnVtQnl0ZXMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAg
IGdsc0J1ZmZlclRlc3RVdGlsLmNvbXBhcmVCeXRlQXJyYXlzID0gZnVuY3Rpb24ocmVzUHRyLCBy
ZWZQdHIsIG51bUJ5dGVzKSB7CisgICAgICAgIHZhciBpc09rID0gdHJ1ZTsKKyAgICAgICAgdmFy
IG1heFNwYW5MZW4gPSA4OworICAgICAgICB2YXIgbWF4RGlmZlNwYW5zID0gNDsKKyAgICAgICAg
dmFyIG51bURpZmZTcGFucyA9IDA7CisgICAgICAgIHZhciBkaWZmU3BhblN0YXJ0ID0gLTE7Cisg
ICAgICAgIHZhciBuZHggPSAwOworCisgICAgICAgIHZhciBsb2cgPSAnVmVyaWZpY2F0aW9uIHJl
c3VsdDogJzsKKworICAgICAgICBmb3IgKDsgbmR4IDwgbnVtQnl0ZXM7IG5keCsrKSB7CisgICAg
ICAgICAgICBpZiAocmVzUHRyW25keF0gIT0gcmVmUHRyW25keF0pIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZGlmZlNwYW5TdGFydCA8IDApCisgICAgICAgICAgICAgICAgICAgIGRpZmZTcGFuU3Rh
cnQgPSBuZHg7CisKKyAgICAgICAgICAgICAgICBpc09rID0gZmFsc2U7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGRpZmZTcGFuU3RhcnQgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChudW1E
aWZmU3BhbnMgPCBtYXhEaWZmU3BhbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9
IG5keCAtIGRpZmZTcGFuU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcmludExlbiA9
IE1hdGgubWluKGxlbiwgbWF4U3Bhbkxlbik7CisKKyAgICAgICAgICAgICAgICAgICAgbG9nICs9
IGxlbiArICcgYnl0ZSBkaWZmZXJlbmNlIGF0IG9mZnNldCAnICsgZGlmZlNwYW5TdGFydCArICdc
bicgKworICAgICAgICAgICAgICAgICAgICAgICAgJyBleHBlY3RlZCAnICsgcmVmUHRyLnN1YmFy
cmF5KGRpZmZTcGFuU3RhcnQsIGRpZmZTcGFuU3RhcnQgKyBwcmludExlbikgKworICAgICAgICAg
ICAgICAgICAgICAgICAgJyBnb3QgJyArIHJlc1B0ci5zdWJhcnJheShkaWZmU3BhblN0YXJ0LCBk
aWZmU3BhblN0YXJ0ICsgcHJpbnRMZW4pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBsb2cgKz0gJyhvdXRwdXQgdG9vIGxvbmcsIHRydW5jYXRlZCknOworCisg
ICAgICAgICAgICAgICAgbnVtRGlmZlNwYW5zICs9IDE7CisgICAgICAgICAgICAgICAgZGlmZlNw
YW5TdGFydCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGRp
ZmZTcGFuU3RhcnQgPj0gMCkgeworICAgICAgICAgICAgaWYgKG51bURpZmZTcGFucyA8IG1heERp
ZmZTcGFucykgeworICAgICAgICAgICAgICAgIHZhciBsZW4gPSBuZHggLSBkaWZmU3BhblN0YXJ0
OworICAgICAgICAgICAgICAgIHZhciBwcmludExlbiA9IE1hdGgubWluKGxlbiwgbWF4U3Bhbkxl
bik7CisKKyAgICAgICAgICAgICAgICBsb2cgKz0gbGVuICsgJyBieXRlIGRpZmZlcmVuY2UgYXQg
b2Zmc2V0ICcgKyBkaWZmU3BhblN0YXJ0ICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICcg
ZXhwZWN0ZWQgJyArIHJlZlB0ci5zdWJhcnJheShkaWZmU3BhblN0YXJ0LCBkaWZmU3BhblN0YXJ0
ICsgcHJpbnRMZW4pICsKKyAgICAgICAgICAgICAgICAgICAgJyBnb3QgJyArIHJlc1B0ci5zdWJh
cnJheShkaWZmU3BhblN0YXJ0LCBkaWZmU3BhblN0YXJ0ICsgcHJpbnRMZW4pOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbG9nICs9ICcob3V0cHV0IHRvbyBsb25nLCB0cnVu
Y2F0ZWQpJzsKKyAgICAgICAgfQorCisgICAgICAgIGxvZyArPSAoaXNPayA/ICdWZXJpZmljYXRp
b24gcGFzc2VkLicgOiAnVmVyaWZpY2F0aW9uIEZBSUxFRCEnKTsKKworICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZShsb2cpOworCisgICAgICAgIHJldHVybiBpc09rOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICogQHJldHVybiB7c3Ry
aW5nfQorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLmdldEJ1ZmZlclRhcmdldE5hbWUg
PSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuQVJSQVlfQlVGRkVSOiByZXR1cm4gJ2FycmF5JzsKKyAgICAgICAgICAgIGNh
c2UgZ2wuQ09QWV9SRUFEX0JVRkZFUjogcmV0dXJuICdjb3B5X3JlYWQnOworICAgICAgICAgICAg
Y2FzZSBnbC5DT1BZX1dSSVRFX0JVRkZFUjogcmV0dXJuICdjb3B5X3dyaXRlJzsKKyAgICAgICAg
ICAgIGNhc2UgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVI6IHJldHVybiAnZWxlbWVudF9hcnJheSc7
CisgICAgICAgICAgICBjYXNlIGdsLlBJWEVMX1BBQ0tfQlVGRkVSOiByZXR1cm4gJ3BpeGVsX3Bh
Y2snOworICAgICAgICAgICAgY2FzZSBnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSOiByZXR1cm4gJ3Bp
eGVsX3VucGFjayc7CisgICAgICAgICAgICAvL2Nhc2UgZ2wuVEVYVFVSRV9CVUZGRVI6IHJldHVy
biAidGV4dHVyZSI7IC8vVE9ETzogVW5pbXBsZW1lbnRlZCBpbiBXZWJHTCAyLiBSZW1vdmU/Cisg
ICAgICAgICAgICBjYXNlIGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6IHJldHVybiAndHJh
bnNmb3JtX2ZlZWRiYWNrJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuVU5JRk9STV9CVUZGRVI6IHJl
dHVybiAndW5pZm9ybSc7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignSW52YWxpZCBidWZmZXIgdGFyZ2V0Jyk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGhpbnQKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuZ2V0VXNhZ2VIaW50TmFt
ZSA9IGZ1bmN0aW9uKGhpbnQpIHsKKyAgICAgICAgc3dpdGNoIChoaW50KSB7CisgICAgICAgICAg
ICBjYXNlIGdsLlNUUkVBTV9EUkFXOiByZXR1cm4gJ3N0cmVhbV9kcmF3JzsKKyAgICAgICAgICAg
IGNhc2UgZ2wuU1RSRUFNX1JFQUQ6IHJldHVybiAnc3RyZWFtX3JlYWQnOworICAgICAgICAgICAg
Y2FzZSBnbC5TVFJFQU1fQ09QWTogcmV0dXJuICdzdHJlYW1fY29weSc7CisgICAgICAgICAgICBj
YXNlIGdsLlNUQVRJQ19EUkFXOiByZXR1cm4gJ3N0YXRpY19kcmF3JzsKKyAgICAgICAgICAgIGNh
c2UgZ2wuU1RBVElDX1JFQUQ6IHJldHVybiAnc3RhdGljX3JlYWQnOworICAgICAgICAgICAgY2Fz
ZSBnbC5TVEFUSUNfQ09QWTogcmV0dXJuICdzdGF0aWNfY29weSc7CisgICAgICAgICAgICBjYXNl
IGdsLkRZTkFNSUNfRFJBVzogcmV0dXJuICdkeW5hbWljX2RyYXcnOworICAgICAgICAgICAgY2Fz
ZSBnbC5EWU5BTUlDX1JFQUQ6IHJldHVybiAnZHluYW1pY19yZWFkJzsKKyAgICAgICAgICAgIGNh
c2UgZ2wuRFlOQU1JQ19DT1BZOiByZXR1cm4gJ2R5bmFtaWNfY29weSc7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJ1ZmZlciB1c2Fn
ZSBoaW50Jyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gQmFzZSBjbGFzcyBmb3IgYnVm
ZmVyIGNhc2VzLgorICAgIC8vIEJ1ZmZlckNhc2UKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAg
ICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlckNhc2UgPSBmdW5jdGlvbihuYW1lLCBk
ZXNjcmlwdGlvbikgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTEJ1ZmZlcj59
ICovIHRoaXMubV9hbGxvY2F0ZWRCdWZmZXJzID0gW107CisgICAgfTsKKworICAgIGdsc0J1ZmZl
clRlc3RVdGlsLkJ1ZmZlckNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlckNhc2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyQ2FzZTsKKwor
ICAgIC8qKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZm
ZXJDYXNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAq
IGRlaW5pdAorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlckNhc2UucHJvdG90
eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCB0aGlzLm1fYWxsb2NhdGVkQnVmZmVycy5sZW5ndGg7IG5keCsrKQorICAgICAgICAgICAgdGhp
cy5kZWxldGVCdWZmZXIodGhpcy5tX2FsbG9jYXRlZEJ1ZmZlcnNbbmR4XSk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkdMQnVmZmVyfQorICAgICAqLworICAgIGdsc0J1
ZmZlclRlc3RVdGlsLkJ1ZmZlckNhc2UucHJvdG90eXBlLmdlbkJ1ZmZlciA9IGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgYnVmID0gMDsKKyAgICAgICAgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgICAgIGlmIChidWYgIT0gMCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICBkZVV0aWwuZGVQdXNoVW5pcXVlVG9BcnJheSh0aGlzLm1fYWxsb2NhdGVkQnVmZmVycywg
YnVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAg
ICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnI7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1ZjsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJHTEJ1ZmZlcn0gYnVmZmVyCisgICAgICovCisg
ICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyQ2FzZS5wcm90b3R5cGUuZGVsZXRlQnVmZmVyID0g
ZnVuY3Rpb24oYnVmZmVyKSB7CisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworICAg
ICAgICB0aGlzLm1fYWxsb2NhdGVkQnVmZmVycy5zcGxpY2UodGhpcy5tX2FsbG9jYXRlZEJ1ZmZl
cnMuaW5kZXhPZihidWZmZXIpLCAxKTsKKyAgICB9OworCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwu
QnVmZmVyQ2FzZS5wcm90b3R5cGUuY2hlY2tFcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVyciA9IGdsLmdldEVycm9yKCk7CisgICAgICAgIGlm
IChlcnIgIT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICB0aHJvdyBuZXcgVGVzdEZhaWxlZEV4
Y2VwdGlvbignR290ICcgKyBXZWJHTFRlc3RVdGlscy5nbEVudW1Ub1N0cmluZyhnbCwgZXJyKSk7
CisgICAgfTsKKworICAgIC8vIFJlZmVyZW5jZSBidWZmZXIuCisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5SZWZlcmVuY2VCdWZm
ZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdGhp
cy5tX2RhdGE7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zm
c2V0CisgICAgICogQHJldHVybiB7VWludDhBcnJheX0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJU
ZXN0VXRpbC5SZWZlcmVuY2VCdWZmZXIucHJvdG90eXBlLmdldFB0ciA9IGZ1bmN0aW9uKG9mZnNl
dCkgeworICAgICAgICBvZmZzZXQgPSBvZmZzZXQgPyBvZmZzZXQgOiAwOyByZXR1cm4gbmV3IFVp
bnQ4QXJyYXkodGhpcy5tX2RhdGEsIG9mZnNldCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBudW1CeXRlcworICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGls
LlJlZmVyZW5jZUJ1ZmZlci5wcm90b3R5cGUuc2V0U2l6ZSA9IGZ1bmN0aW9uKG51bUJ5dGVzKSB7
CisgICAgICAgIHRoaXMubV9kYXRhID0gbmV3IEFycmF5QnVmZmVyKG51bUJ5dGVzKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUJ5dGVzCisgICAgICogQHBh
cmFtIHtVaW50OEFycmF5fSBieXRlcworICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLlJl
ZmVyZW5jZUJ1ZmZlci5wcm90b3R5cGUuc2V0RGF0YSA9IGZ1bmN0aW9uKG51bUJ5dGVzLCBieXRl
cykgeworICAgICAgICB0aGlzLnNldFNpemUobnVtQnl0ZXMpOworICAgICAgICB2YXIgZHN0ID0g
bmV3IFVpbnQ4QXJyYXkodGhpcy5tX2RhdGEpOworICAgICAgICBkc3Quc2V0KGJ5dGVzLnN1YmFy
cmF5KG51bUJ5dGVzKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXMKKyAgICAgKiBAcGFyYW0g
e1VpbnQ4QXJyYXl9IGJ5dGVzCisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuUmVmZXJl
bmNlQnVmZmVyLnByb3RvdHlwZS5zZXRTdWJEYXRhID0gZnVuY3Rpb24ob2Zmc2V0LCBudW1CeXRl
cywgYnl0ZXMpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhkZU1hdGguZGVJbkJvdW5kczMy
KG9mZnNldCwgMCwgdGhpcy5tX2RhdGEuYnl0ZUxlbmd0aCkgJiYgZGVNYXRoLmRlSW5SYW5nZTMy
KG9mZnNldCArIG51bUJ5dGVzLCBvZmZzZXQsIHRoaXMubV9kYXRhLmJ5dGVMZW5ndGgpLAorICAg
ICAgICAgICAgJ1BhcmFtZXRlcnMgbm90IGluIGJ1ZmZlciBib3VuZHMgb3IgcmFuZ2UnLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgIHZhciBkc3QgPSBuZXcgVWludDhBcnJheSh0aGlzLm1fZGF0YSwg
b2Zmc2V0KTsKKyAgICAgICAgZHN0LnNldChieXRlcy5zdWJhcnJheShvZmZzZXQsIG9mZnNldCAr
IG51bUJ5dGVzKSk7CisgICAgfTsKKworICAgIC8vIEJ1ZmZlciB3cml0ZXIgc3lzdGVtLgorCisg
ICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0
VXRpbC5Xcml0ZVR5cGUgPSB7CisgICAgICAgIEJVRkZFUl9TVUJfREFUQTogMCwKKyAgICAgICAg
QlVGRkVSX1dSSVRFX01BUDogMSwKKyAgICAgICAgVFJBTlNGT1JNX0ZFRURCQUNLOiAyLAorICAg
ICAgICBQSVhFTF9QQUNLOiAzCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xz
QnVmZmVyVGVzdFV0aWwuV3JpdGVUeXBlfSB3cml0ZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5nZXRXcml0ZVR5cGVEZXNjcmlwdGlvbiA9
IGZ1bmN0aW9uKHdyaXRlKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi8g
dmFyIHNfZGVzYyA9IFsKKyAgICAgICAgICAgICdnbC5idWZmZXJTdWJEYXRhKCknLAorICAgICAg
ICAgICAgJ2dsLm1hcEJ1ZmZlclJhbmdlKCknLAorICAgICAgICAgICAgJ3RyYW5zZm9ybSBmZWVk
YmFjaycsCisgICAgICAgICAgICAnZ2wucmVhZFBpeGVscygpIGludG8gUEJPIGJpbmRpbmcnCisg
ICAgICAgIF07CisgICAgICAgIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGRlVXRpbC5n
ZXRBcnJheUVsZW1lbnQoc19kZXNjLCB3cml0ZSkpOworICAgIH07CisKKyAgICAvLyBCdWZmZXJX
cml0ZXJCYXNlCisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBn
bHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJXcml0ZXJCYXNlID0gZnVuY3Rpb24oKSB7fTsKKworICAg
IC8qKgorICAgICAqIC8vTWVhbnQgdG8gYmUgb3ZlcnJpZGVuCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlcldyaXRlckJhc2UucHJv
dG90eXBlLmdldE1pblNpemUgPSBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGJl
IG92ZXJyaWRlbicpOyB9OworCisgICAgLyoqCisgICAgICogLy9NZWFudCB0byBiZSBvdmVycmlk
ZW4KKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0
aWwuQnVmZmVyV3JpdGVyQmFzZS5wcm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7
IHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBvdmVycmlkZW4nKTsgfTsKKworICAgIC8qKgorICAg
ICAqIC8vTWVhbnQgdG8gYmUgb3ZlcnJpZGVuCisgICAgICogQHBhcmFtIHtXZWJHTEJ1ZmZlcn0g
YnVmZmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBudW1CeXRlcworICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMKKyAgICAgKi8K
KyAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJXcml0ZXJCYXNlLnByb3RvdHlwZS53cml0ZU5v
VGFyZ2V0ID0gZnVuY3Rpb24oYnVmZmVyLCBvZmZzZXQsIG51bUJ5dGVzLCBieXRlcykgeyB0aHJv
dyBuZXcgRXJyb3IoJ011c3QgYmUgb3ZlcnJpZGVuJyk7IH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkdMQnVmZmVyfSBidWZmZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUJ5dGVzCisgICAgICogQHBhcmFtIHtVaW50OEFy
cmF5fSBieXRlcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRIaW50CisgICAgICovCisg
ICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyV3JpdGVyQmFzZS5wcm90b3R5cGUud3JpdGUgPSBm
dW5jdGlvbihidWZmZXIsIG9mZnNldCwgbnVtQnl0ZXMsIGJ5dGVzLCB0YXJnZXRIaW50KSB7Cisg
ICAgICAgIHRoaXMud3JpdGVOb1RhcmdldChidWZmZXIsIG9mZnNldCwgbnVtQnl0ZXMsIGJ5dGVz
KTsKKyAgICB9OworCisgICAgLy8gQnVmZmVyV3JpdGVyCisKKyAgICAvKioKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2dsc0J1ZmZlclRlc3RVdGlsLldyaXRlVHlwZX0gd3Jp
dGVUeXBlCisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyV3JpdGVyID0gZnVu
Y3Rpb24od3JpdGVUeXBlKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQnVmZmVyVGVzdFV0aWwu
QnVmZmVyV3JpdGVyQmFzZX0gKi8gdGhpcy5tX3dyaXRlciA9IG51bGw7CisgICAgICAgIHN3aXRj
aCAod3JpdGVUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc0J1ZmZlclRlc3RVdGlsLldyaXRl
VHlwZS5CVUZGRVJfU1VCX0RBVEE6IHRoaXMubV93cml0ZXIgPSBuZXcgZ2xzQnVmZmVyVGVzdFV0
aWwuQnVmZmVyU3ViRGF0YVdyaXRlcigpOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5zdXBwb3J0ZWQgd3JpdGVyJyk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwor
ICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlcldyaXRlci5wcm90b3R5cGUuZ2V0TWluU2l6ZSA9
IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLm1fd3JpdGVyLmdldE1pblNpemUoKTt9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RV
dGlsLkJ1ZmZlcldyaXRlci5wcm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7cmV0
dXJuIHRoaXMubV93cml0ZXIuZ2V0QWxpZ25tZW50KCk7fTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXMKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJy
YXl9IGJ5dGVzCisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyV3JpdGVyLnBy
b3RvdHlwZS53cml0ZU5vVGFyZ2V0ID0gZnVuY3Rpb24oYnVmZmVyLCBvZmZzZXQsIG51bUJ5dGVz
LCBieXRlcykgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG51bUJ5dGVzID49IHRoaXMuZ2V0
TWluU2l6ZSgpLCAnTnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlIGlzIHNtYWxsZXIgdGhhbiB0aGUg
bWluaW11bSBzaXplLicsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhv
ZmZzZXQgJSB0aGlzLmdldEFsaWdubWVudCgpID09IDAsICdPZmZzZXQgaXMgbm90IGFsaWduZWQu
JywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKChvZmZzZXQgKyBudW1C
eXRlcykgJSB0aGlzLmdldEFsaWdubWVudCgpID09IDAsICdCdWZmZXIgc2VnbWVudCBpcyBub3Qg
YWxpZ25lZCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMubV93cml0ZXIud3Jp
dGVOb1RhcmdldChidWZmZXIsIG9mZnNldCwgbnVtQnl0ZXMsIGJ5dGVzKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJHTEJ1ZmZlcn0gYnVmZmVyCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1CeXRlcworICAgICAq
IEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0
SGludAorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlcldyaXRlci5wcm90b3R5
cGUud3JpdGUgPSBmdW5jdGlvbihidWZmZXIsIG9mZnNldCwgbnVtQnl0ZXMsIGJ5dGVzLCB0YXJn
ZXRIaW50KSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMobnVtQnl0ZXMgPj0gdGhpcy5nZXRN
aW5TaXplKCksICdOdW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUgaXMgc21hbGxlciB0aGFuIHRoZSBt
aW5pbXVtIHNpemUuJywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG9m
ZnNldCAlIHRoaXMuZ2V0QWxpZ25tZW50KCkgPT0gMCwgJ09mZnNldCBpcyBub3QgYWxpZ25lZC4n
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoKG9mZnNldCArIG51bUJ5
dGVzKSAlIHRoaXMuZ2V0QWxpZ25tZW50KCkgPT0gMCwgJ0J1ZmZlciBzZWdtZW50IGlzIG5vdCBh
bGlnbmVkJywgZmFsc2UsIHRydWUpOworICAgICAgICByZXR1cm4gdGhpcy5tX3dyaXRlci53cml0
ZShidWZmZXIsIG9mZnNldCwgbnVtQnl0ZXMsIGJ5dGVzLCB0YXJnZXRIaW50KTsKKyAgICB9Owor
CisgICAgLy8gQnVmZmVyU3ViRGF0YVdyaXRlcgorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlcldyaXRlckJhc2V9
CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyU3ViRGF0YVdyaXRlciA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJXcml0ZXJCYXNlLmNh
bGwodGhpcyk7CisgICAgfTsKKworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclN1YkRhdGFX
cml0ZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJX
cml0ZXJCYXNlLnByb3RvdHlwZSk7CisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyU3ViRGF0
YVdyaXRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJT
dWJEYXRhV3JpdGVyOworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclN1YkRhdGFXcml0ZXIucHJvdG90eXBlLmdl
dE1pblNpemUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyU3Vi
RGF0YVdyaXRlci5wcm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7IHJldHVybiAx
OyB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJHTEJ1ZmZlcn0gYnVmZmVyCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1CeXRl
cworICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMKKyAgICAgKi8KKyAgICBnbHNCdWZm
ZXJUZXN0VXRpbC5CdWZmZXJTdWJEYXRhV3JpdGVyLnByb3RvdHlwZS53cml0ZU5vVGFyZ2V0ID0g
ZnVuY3Rpb24oYnVmZmVyLCBvZmZzZXQsIG51bUJ5dGVzLCBieXRlcykgeworICAgICAgICB0aGlz
LndyaXRlKGJ1ZmZlciwgb2Zmc2V0LCBudW1CeXRlcywgYnl0ZXMsIGdsLkFSUkFZX0JVRkZFUik7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVt
Qnl0ZXMKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHRhcmdldAorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclN1YkRh
dGFXcml0ZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmZmVyLCBvZmZzZXQsIG51bUJ5
dGVzLCBieXRlcywgdGFyZ2V0KSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIodGFyZ2V0LCBidWZm
ZXIpOworICAgICAgICBnbC5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBieXRlcyk7Cisg
ICAgICAgIGdsLmJpbmRCdWZmZXIodGFyZ2V0LCBudWxsKTsKKyAgICB9OworCisgICAgLy8gQnVm
ZmVyIHZlcmlmaWVyIHN5c3RlbS4KKworICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9Cisg
ICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuVmVyaWZ5VHlwZSA9IHsKKyAgICAgICAgQVNf
VkVSVEVYX0FSUkFZOiAwLAorICAgICAgICBBU19JTkRFWF9BUlJBWTogMSwKKyAgICAgICAgQVNf
VU5JRk9STV9CVUZGRVI6IDIsCisgICAgICAgIEFTX1BJWEVMX1VOUEFDS19CVUZGRVI6IDMsCisg
ICAgICAgIEJVRkZFUl9SRUFEX01BUDogNAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2dsc0J1ZmZlclRlc3RVdGlsLlZlcmlmeVR5cGV9IHZlcmlmeQorICAgICAqIEByZXR1cm4g
e3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5nZXRWZXJpZnlUeXBlRGVz
Y3JpcHRpb24gPSBmdW5jdGlvbih2ZXJpZnkpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxz
dHJpbmc+fSAqLyB2YXIgc19kZXNjID0KKyAgICAgICAgWworICAgICAgICAgICAgJ3JlbmRlcmlu
ZyBhcyB2ZXJ0ZXggZGF0YScsCisgICAgICAgICAgICAncmVuZGVyaW5nIGFzIGluZGV4IGRhdGEn
LAorICAgICAgICAgICAgJ3JlYWRpbmcgaW4gc2hhZGVyIGFzIHVuaWZvcm0gYnVmZmVyIGRhdGEn
LAorICAgICAgICAgICAgJ3VzaW5nIGFzIFBCTyBhbmQgdXBsb2FkaW5nIHRvIHRleHR1cmUnLAor
ICAgICAgICAgICAgJ3JlYWRpbmcgYmFjayB1c2luZyBnbE1hcEJ1ZmZlclJhbmdlKCknCisgICAg
ICAgIF07CisKKyAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZGVVdGlsLmdl
dEFycmF5RWxlbWVudChzX2Rlc2MsIHZlcmlmeSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJWZXJp
ZmllckJhc2UgPSBmdW5jdGlvbigpIHt9OworCisgICAgLyoqCisgICAgICogLy9NZWFudCB0byBi
ZSBvdmVycmlkZW4KKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVm
ZmVyVGVzdFV0aWwuQnVmZmVyVmVyaWZpZXJCYXNlLnByb3RvdHlwZS5nZXRNaW5TaXplID0gZnVu
Y3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBvdmVycmlkZW4nKTsgfTsKKworICAg
IC8qKgorICAgICAqIC8vTWVhbnQgdG8gYmUgb3ZlcnJpZGVuCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclZlcmlmaWVyQmFzZS5w
cm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcignTXVz
dCBiZSBvdmVycmlkZW4nKTsgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xCdWZm
ZXJ9IGJ1ZmZlcgorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gcmVmZXJlbmNlCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1CeXRlcwor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwu
QnVmZmVyVmVyaWZpZXJCYXNlLnByb3RvdHlwZS52ZXJpZnlOb1RhcmdldCA9IGZ1bmN0aW9uKGJ1
ZmZlciwgcmVmZXJlbmNlLCBvZmZzZXQsIG51bUJ5dGVzKSB7CisgICAgICAgIHRocm93IG5ldyBF
cnJvcignTXVzdCBiZSBvdmVycmlkZW4nKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogLy9N
ZWFudCB0byBiZSBvdmVycmlkZW4KKyAgICAgKiBAcGFyYW0ge1dlYkdMQnVmZmVyfSBidWZmZXIK
KyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHJlZmVyZW5jZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXMKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gdGFyZ2V0SGludAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICov
CisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyVmVyaWZpZXJCYXNlLnByb3RvdHlwZS52ZXJp
ZnkgPSBmdW5jdGlvbihidWZmZXIsIHJlZmVyZW5jZSwgb2Zmc2V0LCBudW1CeXRlcywgdGFyZ2V0
SGludCkgeworICAgICAgICAvL0luIFdlYkdMIDIsIEVMRU1FTlRfQVJSQVlfQlVGRkVSIGFuZCBU
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSIGNhbm5vdCBiZSByZWJvdW5kIHRvIGEgZGlmZmVyZW50
CisgICAgICAgIC8vdHlwZSBvZiBidWZmZXIsIHNvLCBsZXQncyBjb3B5IHRoZWlyIGRhdGEgdG8g
YW4gQVJSQVkgQlVGRkVSIGFuZCBwYXNzIHRoYXQgb25lIGluc3RlYWQgdG8gYmUgdmVyaWZpZWQu
CisgICAgICAgIHZhciB3YXNSZWFkQnVmZmVyQ3JlYXRlZCA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgaWYgKHRhcmdldEhpbnQgPT0gZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIg
fHwgdGFyZ2V0SGludCA9PSBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHJlYWRCdWZmZXIgPSBuZXcgVWludDhBcnJheShvZmZzZXQgKyBudW1CeXRl
cyk7CisgICAgICAgICAgICAgICAgZ2wuZ2V0QnVmZmVyU3ViRGF0YSh0YXJnZXRIaW50LCAwLCBy
ZWFkQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsK
KworICAgICAgICAgICAgICAgIHdhc1JlYWRCdWZmZXJDcmVhdGVkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgICAg
ICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCByZWFkQnVmZmVyLCBnbC5T
VEFUSUNfRFJBVyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB0
aGlzLnZlcmlmeU5vVGFyZ2V0KGJ1ZmZlciwgcmVmZXJlbmNlLCBvZmZzZXQsIG51bUJ5dGVzKTsK
KworICAgICAgICAgICAgaWYgKHdhc1JlYWRCdWZmZXJDcmVhdGVkKQorICAgICAgICAgICAgICAg
IGdsLmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGlmICh3YXNSZWFkQnVmZmVyQ3Jl
YXRlZCkKKyAgICAgICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAg
ICAgIHRocm93IGVycjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBCdWZmZXJWZXJpZmll
cgorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtnbHNCdWZm
ZXJUZXN0VXRpbC5WZXJpZnlUeXBlfSB2ZXJpZnlUeXBlCisgICAgICovCisgICAgZ2xzQnVmZmVy
VGVzdFV0aWwuQnVmZmVyVmVyaWZpZXIgPSBmdW5jdGlvbih2ZXJpZnlUeXBlKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7Z2xzQnVmZmVyVGVzdFV0aWwuQnVmZmVyVmVyaWZpZXJCYXNlfSAqLyB0aGlz
Lm1fdmVyaWZpZXIgPSBudWxsOworICAgICAgICBzd2l0Y2ggKHZlcmlmeVR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2xzQnVmZmVyVGVzdFV0aWwuVmVyaWZ5VHlwZS5BU19WRVJURVhfQVJSQVk6
IHRoaXMubV92ZXJpZmllciA9IG5ldyBnbHNCdWZmZXJUZXN0VXRpbC5WZXJ0ZXhBcnJheVZlcmlm
aWVyKCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNCdWZmZXJUZXN0VXRpbC5WZXJpZnlU
eXBlLkFTX0lOREVYX0FSUkFZOiB0aGlzLm1fdmVyaWZpZXIgPSBuZXcgZ2xzQnVmZmVyVGVzdFV0
aWwuSW5kZXhBcnJheVZlcmlmaWVyKCk7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbnN1cHBvcnRlZCB2ZXJpZmllciB0eXBlJyk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclZlcmlmaWVyLnByb3RvdHlwZS5nZXRN
aW5TaXplID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fdmVyaWZpZXIuZ2V0TWluU2l6ZSgp
OyB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGds
c0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclZlcmlmaWVyLnByb3RvdHlwZS5nZXRBbGlnbm1lbnQgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV92ZXJpZmllci5nZXRBbGlnbm1lbnQoKTsgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICAgICAqIEBwYXJh
bSB7VWludDhBcnJheX0gcmVmZXJlbmNlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUJ5dGVz
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRp
bC5CdWZmZXJWZXJpZmllci5wcm90b3R5cGUudmVyaWZ5Tm9UYXJnZXQgPSBmdW5jdGlvbihidWZm
ZXIsIHJlZmVyZW5jZSwgb2Zmc2V0LCBudW1CeXRlcykgeworICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKG51bUJ5dGVzID49IHRoaXMuZ2V0TWluU2l6ZSgpLCAnTnVtYmVyIG9mIGJ5dGVzIHRvIHdy
aXRlIGlzIHNtYWxsZXIgdGhhbiB0aGUgbWluaW11bSBzaXplLicsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhvZmZzZXQgJSB0aGlzLmdldEFsaWdubWVudCgpID09IDAs
ICdPZmZzZXQgaXMgbm90IGFsaWduZWQuJywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKChvZmZzZXQgKyBudW1CeXRlcykgJSB0aGlzLmdldEFsaWdubWVudCgpID09IDAs
ICdCdWZmZXIgc2VnbWVudCBpcyBub3QgYWxpZ25lZCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMubV92ZXJpZmllci52ZXJpZnlOb1RhcmdldChidWZmZXIsIHJlZmVyZW5jZSwg
b2Zmc2V0LCBudW1CeXRlcyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
R0xCdWZmZXJ9IGJ1ZmZlcgorICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gcmVmZXJlbmNlCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1C
eXRlcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRIaW50CisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJWZXJpZmllci5w
cm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24oYnVmZmVyLCByZWZlcmVuY2UsIG9mZnNldCwgbnVt
Qnl0ZXMsIHRhcmdldEhpbnQpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhudW1CeXRlcyA+
PSB0aGlzLmdldE1pblNpemUoKSwgJ051bWJlciBvZiBieXRlcyB0byB3cml0ZSBpcyBzbWFsbGVy
IHRoYW4gdGhlIG1pbmltdW0gc2l6ZS4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1z
Z09wdGlvbnMob2Zmc2V0ICUgdGhpcy5nZXRBbGlnbm1lbnQoKSA9PSAwLCAnT2Zmc2V0IGlzIG5v
dCBhbGlnbmVkLicsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygob2Zm
c2V0ICsgbnVtQnl0ZXMpICUgdGhpcy5nZXRBbGlnbm1lbnQoKSA9PSAwLCAnQnVmZmVyIHNlZ21l
bnQgaXMgbm90IGFsaWduZWQnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0aGlzLm1f
dmVyaWZpZXIudmVyaWZ5KGJ1ZmZlciwgcmVmZXJlbmNlLCBvZmZzZXQsIG51bUJ5dGVzLCB0YXJn
ZXRIaW50KTsKKyAgICB9OworCisgICAgLy8gVmVydGV4QXJyYXlWZXJpZmllcgorCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1ZmZlclRlc3RVdGls
LkJ1ZmZlclZlcmlmaWVyQmFzZX0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5WZXJ0
ZXhBcnJheVZlcmlmaWVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1ZmZlclRlc3RVdGls
LkJ1ZmZlclZlcmlmaWVyQmFzZS5jYWxsKHRoaXMpOworICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAg
ICAgICB0aGlzLm1fcG9zTG9jID0gMDsKKyAgICAgICAgdGhpcy5tX2J5dGVWZWNMb2MgPSAwOwor
ICAgICAgICAvKiogQHR5cGUge1dlYkdMVmVydGV4QXJyYXlPYmplY3R9ICovIHRoaXMubV92YW8g
PSBudWxsOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbn0g
Ki8gdmFyIGdsc2xWZXJzaW9uID0gZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvbihnbCk7CisK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbHVTaGFkZXJVdGlsLmlzR0xTTFZlcnNpb25TdXBw
b3J0ZWQoZ2wsIGdsc2xWZXJzaW9uKSwgJ1Vuc3VwcG9ydGVkIEdMU0wgdmVyc2lvbicsIGZhbHNl
LCB0cnVlKTsKKworICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW0oZ2wsIGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3VyY2VzKAor
ICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvbkRlY2xhcmF0aW9uKGdsc2xW
ZXJzaW9uKSArICdcbicgKworICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzIgYV9wb3NpdGlvbjtc
bicgKworICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMyBhX2J5dGVWZWM7XG4nICsKKyAgICAg
ICAgICAgICdvdXQgbWVkaXVtcCB2ZWMzIHZfYnl0ZVZlYztcbicgKworICAgICAgICAgICAgJ3Zv
aWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBn
bF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMC4wLCAxLjApO1xuJyArCisgICAgICAgICAg
ICAnIHZfYnl0ZVZlYyA9IGFfYnl0ZVZlYztcbicgKworICAgICAgICAgICAgJ31cbicsCisKKyAg
ICAgICAgICAgIGdsdVNoYWRlclV0aWwuZ2V0R0xTTFZlcnNpb25EZWNsYXJhdGlvbihnbHNsVmVy
c2lvbikgKyAnXG4nICsKKyAgICAgICAgICAgICdpbiBtZWRpdW1wIHZlYzMgdl9ieXRlVmVjO1xu
JyArCisgICAgICAgICAgICAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBv
X2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAg
ICAgICAne1xuJyArCisgICAgICAgICAgICAnIG9fY29sb3IgPSB2ZWM0KHZfYnl0ZVZlYywgMS4w
KTtcbicgKworICAgICAgICAgICAgJ31cbicKKyAgICAgICAgKSk7CisKKyAgICAgICAgaWYgKCF0
aGlzLm1fcHJvZ3JhbS5pc09rKCkpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0NvbXBpbGUg
ZmFpbGVkJyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm1fcG9zTG9jID0gZ2wuZ2V0QXR0
cmliTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9wb3NpdGlvbicpOwor
ICAgICAgICB0aGlzLm1fYnl0ZVZlY0xvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMubV9w
cm9ncmFtLmdldFByb2dyYW0oKSwgJ2FfYnl0ZVZlYycpOworCisgICAgICAgIHRoaXMubV92YW8g
PSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICB0aGlzLm1fcG9zaXRpb25CdWYgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgdGhpcy5tX2luZGV4QnVmID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgfTsKKworICAgIGdsc0J1ZmZlclRlc3RVdGlsLlZlcnRleEFycmF5VmVyaWZp
ZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJWZXJp
ZmllckJhc2UucHJvdG90eXBlKTsKKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5WZXJ0ZXhBcnJheVZl
cmlmaWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1ZmZlclRlc3RVdGlsLlZlcnRleEFy
cmF5VmVyaWZpZXI7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuVmVydGV4QXJyYXlWZXJpZmllci5wcm90b3R5cGUuZ2V0
TWluU2l6ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMyAqIDQ7IH07CisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuVmVydGV4
QXJyYXlWZXJpZmllci5wcm90b3R5cGUuZ2V0QWxpZ25tZW50ID0gZnVuY3Rpb24oKSB7IHJldHVy
biAxOyB9OworCisgICAgLyoqCisgICAgICogZGVpbml0CisgICAgICovCisgICAgZ2xzQnVmZmVy
VGVzdFV0aWwuVmVydGV4QXJyYXlWZXJpZmllci5wcm90b3R5cGUuZGVpbml0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmICh0aGlzLm1fdmFvKSBnbC5kZWxldGVWZXJ0ZXhBcnJheSh0aGlzLm1f
dmFvKTsKKyAgICAgICAgaWYgKHRoaXMubV9wb3NpdGlvbkJ1ZikgZ2wuZGVsZXRlQnVmZmVyKHRo
aXMubV9wb3NpdGlvbkJ1Zik7CisgICAgICAgIGlmICh0aGlzLm1faW5kZXhCdWYpIGdsLmRlbGV0
ZUJ1ZmZlcih0aGlzLm1faW5kZXhCdWYpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gZ3JpZFNpemVYCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGdyaWRTaXplWQor
ICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xzQnVmZmVyVGVz
dFV0aWwuY29tcHV0ZVBvc2l0aW9ucyA9IGZ1bmN0aW9uKGdyaWRTaXplWCwgZ3JpZFNpemVZKSB7
CisgICAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciB5ID0gMDsg
eSA8IGdyaWRTaXplWTsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGdyaWRTaXpl
WDsgeCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN4MCA9ICh4
ICsgMCkgLyBncmlkU2l6ZVg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHN5MCA9ICh5ICsgMCkgLyBncmlkU2l6ZVk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIHN4MSA9ICh4ICsgMSkgLyBncmlkU2l6ZVg7CisgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHN5MSA9ICh5ICsgMSkgLyBncmlkU2l6ZVk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZ4MCA9IDIuMCAqIHN4MCAtIDEuMDsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZnkwID0gMi4wICogc3kwIC0gMS4wOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmeDEgPSAyLjAgKiBzeDEgLSAx
LjA7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZ5MSA9IDIuMCAqIHN5
MSAtIDEuMDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZU5keCA9
ICh5ICogZ3JpZFNpemVYICsgeCkgKiA4OworCisgICAgICAgICAgICBwb3NpdGlvbnNbYmFzZU5k
eCArIDBdID0gZngwOyBwb3NpdGlvbnNbYmFzZU5keCArIDFdID0gZnkwOworICAgICAgICAgICAg
cG9zaXRpb25zW2Jhc2VOZHggKyAyXSA9IGZ4MDsgcG9zaXRpb25zW2Jhc2VOZHggKyAzXSA9IGZ5
MTsKKyAgICAgICAgICAgIHBvc2l0aW9uc1tiYXNlTmR4ICsgNF0gPSBmeDE7IHBvc2l0aW9uc1ti
YXNlTmR4ICsgNV0gPSBmeTA7CisgICAgICAgICAgICBwb3NpdGlvbnNbYmFzZU5keCArIDZdID0g
ZngxOyBwb3NpdGlvbnNbYmFzZU5keCArIDddID0gZnkxOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHBvc2l0aW9uczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGdyaWRTaXplWAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBncmlkU2l6ZVkKKyAgICAgKiBA
cmV0dXJuIHtVaW50MTZBcnJheX0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5jb21w
dXRlSW5kaWNlcyA9IGZ1bmN0aW9uKGdyaWRTaXplWCwgZ3JpZFNpemVZKSB7CisgICAgICAgIHZh
ciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KDMgKiAyICogZ3JpZFNpemVYICogZ3JpZFNpemVZ
KTsKKworICAgICAgICBmb3IgKHZhciBxdWFkTmR4ID0gMDsgcXVhZE5keCA8IGdyaWRTaXplWCAq
IGdyaWRTaXplWTsgcXVhZE5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHYwMCA9IHF1YWROZHggKiA0ICsgMDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdjAxID0gcXVhZE5keCAqIDQgKyAxOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB2MTAgPSBxdWFkTmR4ICogNCArIDI7CisgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHYxMSA9IHF1YWROZHggKiA0ICsgMzsKKworICAgICAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyh2MTEgPCAoMSA8PCAxNiksICdWZXJ0ZXggaW5kZXggdmFsdWUg
d29uXCd0IGZpdCBpbnRvIGEgMTYtYml0IG51bWJlcicsIGZhbHNlLCB0cnVlKTsKKworICAgICAg
ICAgICAgaW5kaWNlc1txdWFkTmR4ICogNiArIDBdID0gdjEwOworICAgICAgICAgICAgaW5kaWNl
c1txdWFkTmR4ICogNiArIDFdID0gdjAwOworICAgICAgICAgICAgaW5kaWNlc1txdWFkTmR4ICog
NiArIDJdID0gdjAxOworCisgICAgICAgICAgICBpbmRpY2VzW3F1YWROZHggKiA2ICsgM10gPSB2
MTA7CisgICAgICAgICAgICBpbmRpY2VzW3F1YWROZHggKiA2ICsgNF0gPSB2MDE7CisgICAgICAg
ICAgICBpbmRpY2VzW3F1YWROZHggKiA2ICsgNV0gPSB2MTE7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gaW5kaWNlczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtVaW50
OEFycmF5fSBwdHIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdnR4TmR4CisgICAgICogQHJldHVy
biB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5mZXRjaFZ0
eENvbG9yID0gZnVuY3Rpb24ocHRyLCB2dHhOZHgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyB0Y3VS
R0JBLlJHQkEoWworICAgICAgICAgICAgcHRyW3Z0eE5keCAqIDMgKyAwXSwKKyAgICAgICAgICAg
IHB0clt2dHhOZHggKiAzICsgMV0sCisgICAgICAgICAgICBwdHJbdnR4TmR4ICogMyArIDJdLAor
ICAgICAgICAgICAgMjU1XSkudG9WZWMoKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGRzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1R
dWFkcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dMZW5ndGgKKyAgICAgKiBAcGFyYW0ge1Vp
bnQ4QXJyYXl9IGluUHRyCisgICAgICovCisgICAgZ2xzQnVmZmVyVGVzdFV0aWwucmVuZGVyUXVh
ZEdyaWRSZWZlcmVuY2UgPSBmdW5jdGlvbihkc3QsIG51bVF1YWRzLCByb3dMZW5ndGgsIGluUHRy
KSB7CisgICAgICAgIGRzdC5zZXRTaXplKHJvd0xlbmd0aCAqIGdsc0J1ZmZlclRlc3RVdGlsLlZF
UklGWV9RVUFEX1NJWkUsIChNYXRoLmZsb29yKG51bVF1YWRzIC8gcm93TGVuZ3RoKSArIChudW1R
dWFkcyAlIHJvd0xlbmd0aCAhPSAwID8gMSA6IDApKSAqIGdsc0J1ZmZlclRlc3RVdGlsLlZFUklG
WV9RVUFEX1NJWkUpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzc30gKi8gdmFyIGRzdEFjY2VzcyA9IGRzdC5nZXRBY2Nlc3MoKTsKKyAgICAgICAgZHN0
QWNjZXNzLmNsZWFyKFswLCAwLCAwLCAxLjBdKTsKKworICAgICAgICBmb3IgKHZhciBxdWFkTmR4
ID0gMDsgcXVhZE5keCA8IG51bVF1YWRzOyBxdWFkTmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgeDAgPSAocXVhZE5keCAlIHJvd0xlbmd0aCkgKiBnbHNCdWZm
ZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB5MCA9IE1hdGguZmxvb3IocXVhZE5keCAvIHJvd0xlbmd0aCkgKiBnbHNCdWZm
ZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLyB2YXIgdjAwID0gZ2xzQnVmZmVyVGVzdFV0aWwuZmV0Y2hWdHhDb2xvcihp
blB0ciwgcXVhZE5keCAqIDQgKyAwKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHYxMCA9IGdsc0J1ZmZlclRlc3RVdGlsLmZldGNoVnR4Q29sb3IoaW5QdHIs
IHF1YWROZHggKiA0ICsgMSk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIHZhciB2MDEgPSBnbHNCdWZmZXJUZXN0VXRpbC5mZXRjaFZ0eENvbG9yKGluUHRyLCBxdWFk
TmR4ICogNCArIDIpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgdjExID0gZ2xzQnVmZmVyVGVzdFV0aWwuZmV0Y2hWdHhDb2xvcihpblB0ciwgcXVhZE5keCAq
IDQgKyAzKTsKKworICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBnbHNCdWZmZXJUZXN0
VXRpbC5WRVJJRllfUVVBRF9TSVpFOyB5KyspCisgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsg
eCA8IGdsc0J1ZmZlclRlc3RVdGlsLlZFUklGWV9RVUFEX1NJWkU7IHgrKykgeworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZnggPSAoeCArIDAuNSkgLyBnbHNCdWZm
ZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZnkgPSAoeSArIDAuNSkgLyBnbHNCdWZmZXJUZXN0VXRpbC5WRVJJRllf
UVVBRF9TSVpFOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIg
dHJpID0gZnggKyBmeSA8PSAxLjA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciB0eCA9IHRyaSA/IGZ4IDogKDEuMCAtIGZ4KTsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHR5ID0gdHJpID8gZnkgOiAoMS4wIC0gZnkpOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHQwID0gdHJpID8gdjAw
IDogdjExOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IHQxID0gdHJpID8gdjAxIDogdjEwOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIHQyID0gdHJpID8gdjEwIDogdjAxOworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNvbG9yID0gZGVNYXRoLmFkZCgKKyAgICAg
ICAgICAgICAgICAgICAgZGVNYXRoLmFkZCh0MCwgZGVNYXRoLnNjYWxlKGRlTWF0aC5zdWJ0cmFj
dCh0MSwgdDApLCB0eCkpLAorICAgICAgICAgICAgICAgICAgICBkZU1hdGguc2NhbGUoZGVNYXRo
LnN1YnRyYWN0KHQyLCB0MCksIHR5KQorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAg
ICAgICBkc3RBY2Nlc3Muc2V0UGl4ZWwoY29sb3IsIHgwICsgeCwgeTAgKyB5KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkdM
QnVmZmVyfSBidWZmZXIKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHJlZlB0cgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXMK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGls
LlZlcnRleEFycmF5VmVyaWZpZXIucHJvdG90eXBlLnZlcmlmeU5vVGFyZ2V0ID0gZnVuY3Rpb24o
YnVmZmVyLCByZWZQdHIsIG9mZnNldCwgbnVtQnl0ZXMpIHsKKyAgICAgICAgdmFyIG51bUJ5dGVz
SW5WdHggPSAzOworICAgICAgICB2YXIgbnVtQnl0ZXNJblF1YWQgPSBudW1CeXRlc0luVnR4ICog
NDsKKyAgICAgICAgdmFyIG1heFF1YWRzWCA9IE1hdGgubWluKDEyOCwgTWF0aC5mbG9vcihnbC5k
cmF3aW5nQnVmZmVyV2lkdGggLyBnbHNCdWZmZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFKSk7
CisgICAgICAgIHZhciBtYXhRdWFkc1kgPSBNYXRoLm1pbigxMjgsIE1hdGguZmxvb3IoZ2wuZHJh
d2luZ0J1ZmZlckhlaWdodCAvIGdsc0J1ZmZlclRlc3RVdGlsLlZFUklGWV9RVUFEX1NJWkUpKTsK
KyAgICAgICAgdmFyIG1heFF1YWRzUGVyQmF0Y2ggPSBtYXhRdWFkc1ggKiBtYXhRdWFkc1k7Cisg
ICAgICAgIHZhciBudW1WZXJpZmllZCA9IDA7CisgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy5t
X3Byb2dyYW0uZ2V0UHJvZ3JhbSgpOworICAgICAgICAvKiogQHR5cGUge3RjdVJHQkEuUkdCQX0g
Ki8gdmFyIHRocmVzaG9sZCA9IC8qVE9ETzogcmVuZGVyVGFyZ2V0LmdldFBpeGVsRm9ybWF0KCku
Z2V0Q29sb3JUaHJlc2hvbGQoKSArIHRjdTo6UkdCQSgzLDMsMywzKTsqLyBuZXcgdGN1UkdCQS5S
R0JBKFszLCAzLCAzLCAzXSk7CisgICAgICAgIHZhciBpc09rID0gdHJ1ZTsKKworICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBwb3NpdGlvbnMgPSBbXTsKKyAgICAgICAg
LyoqIEB0eXBlIHtVaW50MTZBcnJheX0gKi92YXIgaW5kaWNlczsKKworICAgICAgICAvKiogQHR5
cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlbmRlcmVkID0gbmV3IHRjdVN1cmZhY2Uu
U3VyZmFjZSgpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFy
IHJlZmVyZW5jZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoKTsKKworICAgICAgICAvLyBDYW4n
dCByZW5kZXIgZnVsbCBxdWFkIHdpdGggc21hbGxlciBidWZmZXJzLgorICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKG51bUJ5dGVzID49IG51bUJ5dGVzSW5RdWFkLCAnTnVtYmVyIG9mIGJ5dGVzIG11
c3QgYmUgYmlnZ2VyIHRoYW4gbnVtYmVyIG9mIGJ5dGVzIHBlciBxdWFkJywgZmFsc2UsIHRydWUp
OworCisgICAgICAgIHBvc2l0aW9ucyA9IGdsc0J1ZmZlclRlc3RVdGlsLmNvbXB1dGVQb3NpdGlv
bnMobWF4UXVhZHNYLCBtYXhRdWFkc1kpOworICAgICAgICBpbmRpY2VzID0gZ2xzQnVmZmVyVGVz
dFV0aWwuY29tcHV0ZUluZGljZXMobWF4UXVhZHNYLCBtYXhRdWFkc1kpOworCisgICAgICAgIC8v
IFJlc2V0IGJ1ZmZlciBiaW5kaW5ncy4KKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9Q
QUNLX0JVRkZFUiwgbnVsbCk7CisKKyAgICAgICAgLy8gU2V0dXAgcmVuZGVyaW5nIHN0YXRlLgor
ICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCBtYXhRdWFkc1ggKiBnbHNCdWZmZXJUZXN0VXRpbC5W
RVJJRllfUVVBRF9TSVpFLCBtYXhRdWFkc1kgKiBnbHNCdWZmZXJUZXN0VXRpbC5WRVJJRllfUVVB
RF9TSVpFKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAg
ICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXko
dGhpcy5tX3Zhbyk7CisKKyAgICAgICAgLy8gVXBsb2FkIHBvc2l0aW9ucworICAgICAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy5tX3Bvc2l0aW9uQnVmKTsKKyAgICAgICAg
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25z
KSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0
aGlzLm1fcG9zTG9jKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih0aGlzLm1fcG9z
TG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIC8vIFVwbG9hZCBpbmRp
Y2VzCisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMu
bV9pbmRleEJ1Zik7CisgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG5ldyBVaW50MTZBcnJheShpbmRpY2VzKSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAg
IGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMubV9ieXRlVmVjTG9jKTsKKworICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKworICAgICAgICB3aGls
ZSAobnVtVmVyaWZpZWQgPCBudW1CeXRlcykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1SZW1haW5pbmcgPSBudW1CeXRlcyAtIG51bVZlcmlmaWVkOworICAgICAg
ICAgICAgdmFyIGlzTGVmdG92ZXJCYXRjaCA9IG51bVJlbWFpbmluZyA8IG51bUJ5dGVzSW5RdWFk
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1CeXRlc1RvVmVyaWZ5
ID0gaXNMZWZ0b3ZlckJhdGNoID8gbnVtQnl0ZXNJblF1YWQgOiBNYXRoLm1pbihtYXhRdWFkc1Bl
ckJhdGNoICogbnVtQnl0ZXNJblF1YWQsIG51bVJlbWFpbmluZyAtIG51bVJlbWFpbmluZyAlIG51
bUJ5dGVzSW5RdWFkKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY3Vy
T2Zmc2V0ID0gaXNMZWZ0b3ZlckJhdGNoID8gKG51bUJ5dGVzIC0gbnVtQnl0ZXNJblF1YWQpIDog
bnVtVmVyaWZpZWQ7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bVF1
YWRzID0gTWF0aC5mbG9vcihudW1CeXRlc1RvVmVyaWZ5IC8gbnVtQnl0ZXNJblF1YWQpOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Db2xzID0gTWF0aC5taW4obWF4
UXVhZHNYLCBudW1RdWFkcyk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG51bVJvd3MgPSBNYXRoLmZsb29yKG51bVF1YWRzIC8gbWF4UXVhZHNYKSArIChudW1RdWFkcyAl
IG1heFF1YWRzWCAhPSAwID8gMSA6IDApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHZhciBpbWFnZVNldERlc2MgPSAnQnl0ZXMgJyArIChvZmZzZXQgKyBjdXJPZmZzZXQpICsg
JyB0byAnICsgKG9mZnNldCArIGN1ck9mZnNldCArIG51bUJ5dGVzVG9WZXJpZnkgLSAxKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhudW1CeXRlc1RvVmVyaWZ5ID4gMCAmJiBudW1C
eXRlc1RvVmVyaWZ5ICUgbnVtQnl0ZXNJblF1YWQgPT0gMCwgJ0J5dGVzIHRvIHZlcmlmeSBtdXN0
IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIGJ5dGVz
IHBlciBxdWFkJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhk
ZU1hdGguZGVJbkJvdW5kczMyKGN1ck9mZnNldCwgMCwgbnVtQnl0ZXMpLCAnT2Zmc2V0IG91dCBv
ZiBib3VuZHMnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGRl
TWF0aC5kZUluUmFuZ2UzMihjdXJPZmZzZXQgKyBudW1CeXRlc1RvVmVyaWZ5LCBjdXJPZmZzZXQs
IG51bUJ5dGVzKSwgJ1JhbmdlIG9mIGJ5dGVzIHRvIHZlcmlmeSBvdXRzaWRlIG9mIGJvdW5kcycs
IGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgLy8gUmVuZGVyIGJhdGNoLgorICAgICAgICAg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKHRoaXMubV9ieXRlVmVjTG9jLCAzLCBnbC5VTlNJR05FRF9CWVRFLCB0cnVl
LCAwLCBvZmZzZXQgKyBjdXJPZmZzZXQpOworICAgICAgICAgICAgZ2wuZHJhd0VsZW1lbnRzKGds
LlRSSUFOR0xFUywgbnVtUXVhZHMgKiA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7CisKKyAgICAg
ICAgICAgIGdsc0J1ZmZlclRlc3RVdGlsLnJlbmRlclF1YWRHcmlkUmVmZXJlbmNlKHJlZmVyZW5j
ZSwgbnVtUXVhZHMsIG51bUNvbHMsIHJlZlB0ci5zdWJhcnJheShvZmZzZXQgKyBjdXJPZmZzZXQp
KTsKKworICAgICAgICAgICAgcmVuZGVyZWQuc2V0U2l6ZShudW1Db2xzICogZ2xzQnVmZmVyVGVz
dFV0aWwuVkVSSUZZX1FVQURfU0laRSwgbnVtUm93cyAqIGdsc0J1ZmZlclRlc3RVdGlsLlZFUklG
WV9RVUFEX1NJWkUpOworICAgICAgICAgICAgcmVuZGVyZWQucmVhZFZpZXdwb3J0KGdsLCBbMCwg
MCwgbnVtQ29scyAqIGdsc0J1ZmZlclRlc3RVdGlsLlZFUklGWV9RVUFEX1NJWkUsIG51bVJvd3Mg
KiBnbHNCdWZmZXJUZXN0VXRpbC5WRVJJRllfUVVBRF9TSVpFXSk7CisKKyAgICAgICAgICAgIGlm
ICghdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSgnUmVuZGVyUmVzdWx0Jywg
aW1hZ2VTZXREZXNjLCByZWZlcmVuY2UsIHJlbmRlcmVkLCB0aHJlc2hvbGQudG9JVmVjKCksIHRj
dUltYWdlQ29tcGFyZS5Db21wYXJlTG9nTW9kZS5SRVNVTFQpKSB7CisgICAgICAgICAgICAgICAg
aXNPayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBudW1WZXJpZmllZCArPSBpc0xlZnRvdmVyQmF0Y2ggPyBudW1SZW1haW5pbmcg
OiBudW1CeXRlc1RvVmVyaWZ5OworICAgICAgICB9CisKKyAgICAgICAgZ2wuYmluZFZlcnRleEFy
cmF5KG51bGwpOworCisgICAgICAgIHJldHVybiBpc09rOworICAgIH07CisKKyAgICAvLyBJbmRl
eEFycmF5VmVyaWZpZXIKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtnbHNCdWZmZXJUZXN0VXRpbC5CdWZmZXJWZXJpZmllckJhc2V9CisgICAgICovCisg
ICAgZ2xzQnVmZmVyVGVzdFV0aWwuSW5kZXhBcnJheVZlcmlmaWVyID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclZlcmlmaWVyQmFzZS5jYWxsKHRoaXMpOwor
CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbnVsbDsKKyAgICAgICAgdGhpcy5tX3Bvc0xvYyA9
IDA7CisgICAgICAgIHRoaXMubV9jb2xvckxvYyA9IDA7CisKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9ufSAqLyB2YXIgZ2xzbFZlcnNpb24gPSBnbHVTaGFkZXJV
dGlsLkdMU0xWZXJzaW9uLlYzMDBfRVM7CisKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbHVT
aGFkZXJVdGlsLmlzR0xTTFZlcnNpb25TdXBwb3J0ZWQoZ2wsIGdsc2xWZXJzaW9uKSwgJ0dMU0wg
dmVyc2lvbiBub3Qgc3VwcG9ydGVkJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHRoaXMubV9w
cm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVy
UHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMoCisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmdl
dEdMU0xWZXJzaW9uRGVjbGFyYXRpb24oZ2xzbFZlcnNpb24pICsgJ1xuJyArCisgICAgICAgICAg
ICAnaW4gaGlnaHAgdmVjMiBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAnaW4gbWVkaXVt
cCB2ZWMzIGFfY29sb3I7XG4nICsKKyAgICAgICAgICAgICdvdXQgbWVkaXVtcCB2ZWMzIHZfY29s
b3I7XG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAg
ICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24sIDAu
MCwgMS4wKTtcbicgKworICAgICAgICAgICAgJyB2X2NvbG9yID0gYV9jb2xvcjtcbicgKworICAg
ICAgICAgICAgJ31cbicsCisKKyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuZ2V0R0xTTFZlcnNp
b25EZWNsYXJhdGlvbihnbHNsVmVyc2lvbikgKyAnXG4nICsKKyAgICAgICAgICAgICdpbiBtZWRp
dW1wIHZlYzMgdl9jb2xvcjtcbicgKworICAgICAgICAgICAgJ2xheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworICAgICAgICAgICAgJ3ZvaWQgbWFpbiAo
dm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicgKworICAgICAgICAgICAgJyBvX2NvbG9yID0g
dmVjNCh2X2NvbG9yLCAxLjApO1xuJyArCisgICAgICAgICAgICAnfVxuJykpOworCisgICAgICAg
IGlmICghdGhpcy5tX3Byb2dyYW0uaXNPaygpKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdD
b21waWxlIGZhaWxlZCcpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tX3Bvc0xvYyA9IGds
LmdldEF0dHJpYkxvY2F0aW9uKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSwgJ2FfcG9zaXRp
b24nKTsKKyAgICAgICAgdGhpcy5tX2NvbG9yTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhp
cy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCAnYV9jb2xvcicpOworCisgICAgICAgIHRoaXMubV92
YW8gPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICB0aGlzLm1fcG9zaXRpb25CdWYg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgdGhpcy5tX2NvbG9yQnVmID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgfTsKKworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkluZGV4QXJyYXlWZXJp
Zmllci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1ZmZlclRlc3RVdGlsLkJ1ZmZlclZl
cmlmaWVyQmFzZS5wcm90b3R5cGUpOworICAgIGdsc0J1ZmZlclRlc3RVdGlsLkluZGV4QXJyYXlW
ZXJpZmllci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWZmZXJUZXN0VXRpbC5JbmRleEFy
cmF5VmVyaWZpZXI7CisKKyAgICAvKioKKyAgICAgKiBkZWluaXQKKyAgICAgKi8KKyAgICBnbHNC
dWZmZXJUZXN0VXRpbC5JbmRleEFycmF5VmVyaWZpZXIucHJvdG90eXBlLmRlaW5pdCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBpZiAodGhpcy5tX3ZhbykgZ2wuZGVsZXRlVmVydGV4QXJyYXkodGhp
cy5tX3Zhbyk7CisgICAgICAgIGlmICh0aGlzLm1fcG9zaXRpb25CdWYpIGdsLmRlbGV0ZUJ1ZmZl
cih0aGlzLm1fcG9zaXRpb25CdWYpOworICAgICAgICBpZiAodGhpcy5tX2NvbG9yQnVmKSBnbC5k
ZWxldGVCdWZmZXIodGhpcy5tX2NvbG9yQnVmKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBnbHNCdWZmZXJUZXN0VXRpbC5j
b21wdXRlSW5kZXhWZXJpZmllclBvc2l0aW9ucyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
bnVtUG9zWCA9IDE2OworICAgICAgICB2YXIgbnVtUG9zWSA9IDE2OworCisgICAgICAgIHZhciBk
c3QgPSBbXTsKKworICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IG51bVBvc1k7IHkrKykgewor
ICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1Qb3NYOyB4KyspIHsKKyAgICAgICAg
ICAgICAgICB2YXIgeGYgPSB4IC8gKG51bVBvc1ggLSAxKTsKKyAgICAgICAgICAgICAgICB2YXIg
eWYgPSB5IC8gKG51bVBvc1kgLSAxKTsKKworICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAy
ICogKHkgKiBudW1Qb3NYICsgeCk7CisgICAgICAgICAgICAgICAgZHN0W29mZnNldF0gPSAyLjAg
KiB4ZiAtIDEuMDsKKyAgICAgICAgICAgICAgICBkc3Rbb2Zmc2V0ICsgMV0gPSAyLjAgKiB5ZiAt
IDEuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkc3Q7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICov
CisgICAgZ2xzQnVmZmVyVGVzdFV0aWwuY29tcHV0ZUluZGV4VmVyaWZpZXJDb2xvcnMgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Db2xvcnMgPSAy
NTY7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluVmFsID0gMC4xOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1heFZhbCA9IDAuNTsKKyAgICAgICAgdmFy
IHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oMHhhYmMyMzEpOworCisgICAgICAgIHZhciBkc3Qg
PSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNvbG9yczsgKytpKSB7Cisg
ICAgICAgICAgICBkc3RbMyAqIGldID0gcm5kLmdldEZsb2F0KG1pblZhbCwgbWF4VmFsKTsKKyAg
ICAgICAgICAgIGRzdFszICogaSArIDFdID0gcm5kLmdldEZsb2F0KG1pblZhbCwgbWF4VmFsKTsK
KyAgICAgICAgICAgIGRzdFszICogaSArIDJdID0gcm5kLmdldEZsb2F0KG1pblZhbCwgbWF4VmFs
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZHN0CisgICAgICogQHBhcmFtIHtBcnJheTxu
dW1iZXI+fSBzcmMKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGluZGljZXMKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbnVtSW5kaWNlcworICAgICAqLworICAgIGdsc0J1ZmZlclRlc3RVdGls
LmV4ZWNWZXJ0ZXhGZXRjaCA9IGZ1bmN0aW9uKGRzdCwgc3JjLCBpbmRpY2VzLCBudW1JbmRpY2Vz
KSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtSW5kaWNlczsgKytpKQorICAgICAg
ICAgICAgZHN0W2ldID0gc3JjW2luZGljZXNbaV1dOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkdMQnVmZmVyfSBidWZmZXIKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9
IHJlZlB0cgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbnVtQnl0ZXMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGds
c0J1ZmZlclRlc3RVdGlsLkluZGV4QXJyYXlWZXJpZmllci5wcm90b3R5cGUudmVyaWZ5ID0gZnVu
Y3Rpb24oYnVmZmVyLCByZWZQdHIsIG9mZnNldCwgbnVtQnl0ZXMpIHsKKyAgICAgICAgdmFyIHZp
ZXdwb3J0VyA9IE1hdGgubWluKGdsc0J1ZmZlclRlc3RVdGlsLklOREVYX0FSUkFZX0RSQVdfVklF
V1BPUlRfV0lEVEgsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCk7CisgICAgICAgIHZhciB2aWV3cG9y
dEggPSBNYXRoLm1pbihnbHNCdWZmZXJUZXN0VXRpbC5JTkRFWF9BUlJBWV9EUkFXX1ZJRVdQT1JU
X0hFSUdIVCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCk7CisgICAgICAgIHZhciBtaW5CeXRlc1Bl
ckJhdGNoID0gMjsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciB0aHJl
c2hvbGQgPSBuZXcgdGN1UkdCQS5SR0JBKFswLCAwLCAwLCAwXSk7CisKKyAgICAgICAgdmFyIHBv
c2l0aW9ucyA9IFtdOworICAgICAgICB2YXIgY29sb3JzID0gW107CisKKyAgICAgICAgdmFyIGZl
dGNoZWRQb3MgPSBbXTsKKyAgICAgICAgdmFyIGZldGNoZWRDb2xvciA9IFtdOworCisgICAgICAg
IC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgaW5kZXhCdWZmZXJJbWcgPSBu
ZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0Vywgdmlld3BvcnRIKTsKKyAgICAgICAgLyoq
IEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciByZWZlcmVuY2VJbWcgPSBuZXcgdGN1
U3VyZmFjZS5TdXJmYWNlKHZpZXdwb3J0Vywgdmlld3BvcnRIKTsKKworICAgICAgICB2YXIgbnVt
VmVyaWZpZWQgPSAwOworICAgICAgICB2YXIgaXNPayA9IHRydWU7CisKKyAgICAgICAgcG9zaXRp
b25zID0gZ2xzQnVmZmVyVGVzdFV0aWwuY29tcHV0ZUluZGV4VmVyaWZpZXJQb3NpdGlvbnMoKTsK
KyAgICAgICAgY29sb3JzID0gZ2xzQnVmZmVyVGVzdFV0aWwuY29tcHV0ZUluZGV4VmVyaWZpZXJD
b2xvcnMoKTsKKworICAgICAgICAvLyBSZXNldCBidWZmZXIgYmluZGluZ3MuCisgICAgICAgIGds
LmJpbmRWZXJ0ZXhBcnJheSh0aGlzLm1fdmFvKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5Q
SVhFTF9QQUNLX0JVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gU2V0dXAgcmVuZGVyaW5nIHN0
YXRlLgorICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCB2aWV3cG9ydFcsIHZpZXdwb3J0SCk7Cisg
ICAgICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgZ2wudXNl
UHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworICAgICAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh0aGlzLm1fcG9zTG9jKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkodGhpcy5tX2NvbG9yTG9jKTsKKyAgICAgICAgZ2wuZW5hYmxlKGdsLkJMRU5E
KTsKKyAgICAgICAgZ2wuYmxlbmRGdW5jKGdsLk9ORSwgZ2wuT05FKTsKKyAgICAgICAgZ2wuYmxl
bmRFcXVhdGlvbihnbC5GVU5DX0FERCk7CisKKyAgICAgICAgd2hpbGUgKG51bVZlcmlmaWVkIDwg
bnVtQnl0ZXMpIHsKKyAgICAgICAgICAgIHZhciBudW1SZW1haW5pbmcgPSBudW1CeXRlcyAtIG51
bVZlcmlmaWVkOworICAgICAgICAgICAgdmFyIGlzTGVmdG92ZXJCYXRjaCA9IG51bVJlbWFpbmlu
ZyA8IG1pbkJ5dGVzUGVyQmF0Y2g7CisgICAgICAgICAgICB2YXIgbnVtQnl0ZXNUb1ZlcmlmeSA9
IGlzTGVmdG92ZXJCYXRjaCA/IG1pbkJ5dGVzUGVyQmF0Y2ggOiBNYXRoLm1pbihnbHNCdWZmZXJU
ZXN0VXRpbC5NQVhfTElORVNfUEVSX0lOREVYX0FSUkFZX0RSQVcgKyAxLCBudW1SZW1haW5pbmcp
OworICAgICAgICAgICAgdmFyIGN1ck9mZnNldCA9IGlzTGVmdG92ZXJCYXRjaCA/IChudW1CeXRl
cyAtIG1pbkJ5dGVzUGVyQmF0Y2gpIDogbnVtVmVyaWZpZWQ7CisgICAgICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdmFyIGltYWdlU2V0RGVzYyA9ICdCeXRlcyAnICsgKG9mZnNldCArIGN1
ck9mZnNldCkgKyAnIHRvICcgKyAob2Zmc2V0ICsgY3VyT2Zmc2V0ICsgbnVtQnl0ZXNUb1Zlcmlm
eSAtIDEpOworCisgICAgICAgICAgICAvLyBTdGVwIDE6IFJlbmRlciB1c2luZyBpbmRleCBidWZm
ZXIuCisgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAg
ICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHRoaXMubV9wb3NpdGlvbkJ1Zik7
CisgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJB
cnJheShwb3NpdGlvbnMpLCBnbC5TVFJFQU1fRFJBVyk7CisgICAgICAgICAgICBnbC52ZXJ0ZXhB
dHRyaWJQb2ludGVyKHRoaXMubV9wb3NMb2MsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisK
KyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0aGlzLm1fY29sb3JC
dWYpOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9h
dDMyQXJyYXkoY29sb3JzKSwgZ2wuU1RSRUFNX0RSQVcpOworICAgICAgICAgICAgZ2wudmVydGV4
QXR0cmliUG9pbnRlcih0aGlzLm1fY29sb3JMb2MsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7
CisKKyAgICAgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5MSU5FX1NUUklQLCBudW1CeXRlc1Rv
VmVyaWZ5LCBnbC5VTlNJR05FRF9CWVRFLCBvZmZzZXQgKyBjdXJPZmZzZXQpOworICAgICAgICAg
ICAgaW5kZXhCdWZmZXJJbWcucmVhZFZpZXdwb3J0KGdsKTsKKworICAgICAgICAgICAgLy8gU3Rl
cCAyOiBEbyBtYW51YWwgZmV0Y2ggYW5kIHJlbmRlciB3aXRob3V0IGluZGV4IGJ1ZmZlci4KKyAg
ICAgICAgICAgIGdsc0J1ZmZlclRlc3RVdGlsLmV4ZWNWZXJ0ZXhGZXRjaChmZXRjaGVkUG9zLCBw
b3NpdGlvbnMsIHJlZlB0ci5zdWJhcnJheShvZmZzZXQgKyBjdXJPZmZzZXQpLCBudW1CeXRlc1Rv
VmVyaWZ5KTsKKyAgICAgICAgICAgIGdsc0J1ZmZlclRlc3RVdGlsLmV4ZWNWZXJ0ZXhGZXRjaChm
ZXRjaGVkQ29sb3IsIGNvbG9ycywgcmVmUHRyLnN1YmFycmF5KG9mZnNldCArIGN1ck9mZnNldCks
IG51bUJ5dGVzVG9WZXJpZnkpOworCisgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHRo
aXMubV9wb3NpdGlvbkJ1Zik7CisgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgbmV3IEZsb2F0MzJBcnJheShmZXRjaGVkUG9zKSwgZ2wuU1RSRUFNX0RSQVcpOworICAg
ICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih0aGlzLm1fcG9zTG9jLCAyLCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOworCisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdGhpcy5tX2NvbG9yQnVmKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KGZldGNoZWRDb2xvciksIGdsLlNUUkVBTV9EUkFX
KTsKKyAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodGhpcy5tX2NvbG9yTG9jLCAz
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGds
LkxJTkVfU1RSSVAsIDAsIG51bUJ5dGVzVG9WZXJpZnkpOworICAgICAgICAgICAgcmVmZXJlbmNl
SW1nLnJlYWRWaWV3cG9ydChnbCwgWzAsIDAsIHZpZXdwb3J0Vywgdmlld3BvcnRIXSk7CisKKyAg
ICAgICAgICAgIGlmICghdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSgnUmVu
ZGVyUmVzdWx0JywgaW1hZ2VTZXREZXNjLCByZWZlcmVuY2VJbWcsIGluZGV4QnVmZmVySW1nLCB0
aHJlc2hvbGQudG9JVmVjKCksIHRjdUltYWdlQ29tcGFyZS5Db21wYXJlTG9nTW9kZS5SRVNVTFQp
KSB7CisgICAgICAgICAgICAgICAgaXNPayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBudW1WZXJpZmllZCArPSBpc0xlZnRvdmVy
QmF0Y2ggPyBudW1SZW1haW5pbmcgOiBudW1CeXRlc1RvVmVyaWZ5OworICAgICAgICB9CisKKyAg
ICAgICAgZ2wuYmluZFZlcnRleEFycmF5KG51bGwpOworCisgICAgICAgIHJldHVybiBpc09rOwor
ICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L21vZHVsZXMvc2hhcmVkL2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZGMzYmU3MGYzM2NlNTdjNTk3NTViZDBlODI4YjcyNTBmMmIyYmI4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1
bGVzL3NoYXJlZC9nbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuanMKQEAgLTAsMCArMSw1NDE1IEBA
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gT3Bl
bkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdtb2R1
bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLmNvbW1vbi50Y3VGbG9hdEZvcm1hdCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdUludGVydmFsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
TWF0cml4Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4VXRpbCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1
U2hhZGVyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVZhclR5cGUn
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdM
Q29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHNVbml0VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hh
ZGVyRXhlY1V0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKworICAgIHZhciBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMgPSBtb2R1bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZTsKKyAgICB2YXIgZ2x1U2hhZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
UHJvZ3JhbTsKKyAgICB2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hh
ZGVyVXRpbDsKKyAgICB2YXIgdGN1SW50ZXJ2YWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUludGVy
dmFsOworICAgIHZhciB0Y3VGbG9hdEZvcm1hdCA9IGZyYW1ld29yay5jb21tb24udGN1RmxvYXRG
b3JtYXQ7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5k
b207CisgICAgdmFyIGdsc1NoYWRlckV4ZWNVdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVy
RXhlY1V0aWw7CisgICAgdmFyIHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBs
ZXJlZmVyZW5jZS5zZ2xyR0xDb250ZXh0OworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZU1hdGg7CisgICAgdmFyIGRlVXRpbCA9IGZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlVXRpbDsKKyAgICB2YXIgZ2x1VmFyVHlwZSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VmFy
VHlwZTsKKyAgICB2YXIgdGN1TWF0cml4ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXg7Cisg
ICAgdmFyIHRjdU1hdHJpeFV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeFV0aWw7Cisg
ICAgdmFyIHJlZiA9IG1vZHVsZXMuc2hhcmVkLmdsc0J1aWx0aW5QcmVjaXNpb25UZXN0c1VuaXRU
ZXN0cy5jcHByZWZlcmVuY2U7CisgICAgdmFyIHJlZmVyZW5jZUNvbXBhcmlzb24gPSBtb2R1bGVz
LnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9uVGVzdHNVbml0VGVzdHMucmVmZXJlbmNlQ29tcGFy
aXNvbjsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgh
eCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07
CisKK3ZhciBzZXRQYXJlbnRDbGFzcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsKKyAgICBj
aGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpOworICAgIGNo
aWxkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNoaWxkOworfTsKKworICAgIC8qKiBAdHlwZWRl
ZiB7KHRjdUludGVydmFsLkludGVydmFsfEFycmF5PHRjdUludGVydmFsLkludGVydmFsPnx0Y3VN
YXRyaXguTWF0cml4KX0gKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW50ZXJ2YWxz
OworCisgICAgLyoqIEB0eXBlZGVmIHsobnVtYmVyfEFycmF5PG51bWJlcj58dGN1TWF0cml4Lk1h
dHJpeCl9ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhbHVlOworCisgICAgLyoq
IEB0eXBlZGVmIHsoc3RyaW5nKX0gKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHlw
ZW5hbWU7CisKKyAgICAvL0NoYW5nZSB0byB0cnVlIGZvciBXZWJHTCB1bml0IHRlc3RpbmcKKyAg
ICB2YXIgZW5hYmxlVW5pdHRlc3RzID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5pc0Zsb2F0ID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlICUgMSAhPT0gMDsKKyAgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBSCisgICAgICogQHBhcmFtIHtzdHJp
bmc9fSBQMAorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gUDEKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Zz19IFAyCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBQMworICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUgPSBmdW5jdGlvbihSLCBQMCwgUDEsIFAyLCBQMykg
eworICAgICAgICB0aGlzLlJldCA9IFI7CisgICAgICAgIHRoaXMuQXJnMCA9IFAwID09PSB1bmRl
ZmluZWQgPyAndm9pZCcgOiBQMDsKKyAgICAgICAgdGhpcy5BcmcxID0gUDEgPT09IHVuZGVmaW5l
ZCA/ICd2b2lkJyA6IFAxOworICAgICAgICB0aGlzLkFyZzIgPSBQMiA9PT0gdW5kZWZpbmVkID8g
J3ZvaWQnIDogUDI7CisgICAgICAgIHRoaXMuQXJnMyA9IFAzID09PSB1bmRlZmluZWQgPyAndm9p
ZCcgOiBQMzsKKyAgICB9OworCisgICAgLyoqIEB0eXBlZGVmIHtBcnJheTxnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuRnVuY0Jhc2U+fSAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5G
dW5jU2V0OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHRlbXBsYXRl
IFQKKyAgICAgKiBAcGFyYW0ge1R9IEEwCisgICAgICogQHBhcmFtIHtUfSBBMQorICAgICAqIEBw
YXJhbSB7VH0gQTIKKyAgICAgKiBAcGFyYW0ge1R9IEEzCisgICAgICovCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlR1cGxlNCA9IGZ1bmN0aW9uKEEwLCBBMSwgQTIsIEEzKSB7CisgICAg
ICAgIHRoaXMuYSA9IEEwOworICAgICAgICB0aGlzLmIgPSBBMTsKKyAgICAgICAgdGhpcy5jID0g
QTI7CisgICAgICAgIHRoaXMuZCA9IEEzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAdHlw
ZWRlZiB7IWdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UdXBsZTQ8c3RyaW5nPn0KKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUGFyYW1OYW1lczsKKworICAgIC8qKgorICAg
ICAqIFJldHVybnMgdHJ1ZSBmb3IgYWxsIG90aGVyIHR5cGVzIGV4Y2VwdCBWb2lkCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLmlzVHlwZVZhbGlkID0gZnVuY3Rpb24odHlwZW5hbWUpIHsKKyAgICAgICAgaWYgKHR5
cGVuYW1lID09PSAndm9pZCcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgZm9yIGFs
bCBvdGhlciB0eXBlcyBleGNlcHQgVm9pZAorICAgICAqIEBwYXJhbSB7Kn0gSW4KKyAgICAgKiBA
cmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLm51
bUlucHV0cyA9IGZ1bmN0aW9uKEluKSB7CisgICAgICAgIHJldHVybiAoIWdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5pc1R5cGVWYWxpZChJbi5JbjApID8gMCA6CisgICAgICAgICAgICAgICAgIWds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5pc1R5cGVWYWxpZChJbi5JbjEpID8gMSA6CisgICAgICAg
ICAgICAgICAgIWdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5pc1R5cGVWYWxpZChJbi5JbjIpID8g
MiA6CisgICAgICAgICAgICAgICAgIWdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5pc1R5cGVWYWxp
ZChJbi5JbjMpID8gMyA6CisgICAgICAgICAgICAgICAgNCk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIFJldHVybnMgdHJ1ZSBmb3IgYWxsIG90aGVyIHR5cGVzIGV4Y2VwdCBWb2lkCisgICAg
ICogQHBhcmFtIHsqfSBPdXQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLm51bU91dHB1dHMgPSBmdW5jdGlvbihPdXQpIHsKKyAg
ICAgICAgcmV0dXJuICghZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmlzVHlwZVZhbGlkKE91dC5P
dXQwKSA/IDAgOgorICAgICAgICAgICAgICAgICFnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuaXNU
eXBlVmFsaWQoT3V0Lk91dDEpID8gMSA6CisgICAgICAgICAgICAgICAgMik7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlR5cGVuYW1lPX0gSW4wXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlR5cGVuYW1lPX0gSW4xXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlR5cGVuYW1lPX0gSW4yXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlR5cGVuYW1lPX0gSW4zXworICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5JblR5cGVzID0gZnVuY3Rpb24oSW4wXywgSW4xXywgSW4yXywgSW4zXykgewor
ICAgICAgICB0aGlzLkluMCA9IEluMF8gPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IEluMF87Cisg
ICAgICAgIHRoaXMuSW4xID0gSW4xXyA9PT0gdW5kZWZpbmVkID8gJ3ZvaWQnIDogSW4xXzsKKyAg
ICAgICAgdGhpcy5JbjIgPSBJbjJfID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiBJbjJfOworICAg
ICAgICB0aGlzLkluMyA9IEluM18gPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IEluM187CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7Z2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlR5cGVuYW1lPX0gT3V0MF8KKyAgICAgKiBAcGFyYW0ge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5UeXBlbmFtZT19IE91dDFfCisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLk91dFR5cGVzID0gZnVuY3Rpb24oT3V0MF8sIE91dDFfKSB7Cisg
ICAgICAgIHRoaXMuT3V0MCA9IE91dDBfID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiBPdXQwXzsK
KyAgICAgICAgdGhpcy5PdXQxID0gT3V0MV8gPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IE91dDFf
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRW52aXJvbm1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtPYmplY3R9ICovIHRoaXMubV9tYXAgPSB7fTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGV9IHZh
cmlhYmxlCisgICAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgICAqLworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5FbnZpcm9ubWVudC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKHZhcmlh
YmxlLCB2YWx1ZSkgeworICAgICAgICB0aGlzLm1fbWFwW3ZhcmlhYmxlLmdldE5hbWUoKV0gPSB2
YWx1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSB2YXJpYWJsZQorICAg
ICAqIEByZXR1cm4ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnRlcnZhbHN9CisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkVudmlyb25tZW50LnByb3RvdHlwZS5sb29r
dXAgPSBmdW5jdGlvbih2YXJpYWJsZSkgeworICAgICAgICBpZiAodmFyaWFibGUgaW5zdGFuY2Vv
ZiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUpCisgICAgICAgICAgIHJldHVybiB0
aGlzLm1fbWFwW3ZhcmlhYmxlLmdldE5hbWUoKV07CisKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdJbnZhbGlkIGxvb2t1cCBpbnB1dDogJyArIHZhcmlhYmxlKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9h
dEZvcm1hdH0gZm9ybWF0XworICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVjaXNpb259
IGZsb2F0UHJlY2lzaW9uXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkVudmlyb25tZW50fSBlbnZfCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBjYWxsRGVwdGhfCisg
ICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0ID0gZnVuY3Rp
b24oZm9ybWF0XywgZmxvYXRQcmVjaXNpb25fLCBlbnZfLCBjYWxsRGVwdGhfKSB7CisgICAgICAg
IHRoaXMuZm9ybWF0ID0gZm9ybWF0XzsKKyAgICAgICAgdGhpcy5mbG9hdFByZWNpc2lvbiA9IGZs
b2F0UHJlY2lzaW9uXzsKKyAgICAgICAgdGhpcy5lbnYgPSBlbnZfOworICAgICAgICB0aGlzLmNh
bGxEZXB0aCA9IGNhbGxEZXB0aF8gPT09IHVuZGVmaW5lZCA/IDAgOiBjYWxsRGVwdGhfOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUgdHlwZW5hbWUK
KyAgICAgKiBAcGFyYW0ge3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSBmbXQKKyAgICAgKiBA
cGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnRlcnZhbHN9IHZhbHVlCisgICAgICog
QHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludGVydmFsc30KKyAgICAgKi8KKyAg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNvbnZlcnQgPSBmdW5jdGlvbih0eXBlbmFtZSwg
Zm10LCB2YWx1ZSkgeworICAgICAgICB2YXIgdHJhaXRzID0gZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlRyYWl0cy50cmFpdHNGYWN0b3J5KHR5cGVuYW1lKTsKKworICAgICAgICBpZiAodmFsdWUg
aW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgdmFyIHJldCA9IFtdOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAg
ICByZXQucHVzaCh0cmFpdHMuZG9Db252ZXJ0KGZtdCwgdmFsdWVbaV0pKTsKKyAgICAgICAgICAg
IHJldHVybiByZXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB0
Y3VNYXRyaXguTWF0cml4KSB7CisgICAgICAgICAgICB2YXIgcmV0ID0gbmV3IHRjdU1hdHJpeC5N
YXRyaXgodmFsdWUucm93cywgdmFsdWUuY29scyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHZhbHVlLnJvd3M7IGkrKykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IHZhbHVlLmNvbHM7IGorKykKKyAgICAgICAgICAgICAgICAgICAgcmV0LnNldChpLCBqLCB0
cmFpdHMuZG9Db252ZXJ0KGZtdCwgdmFsdWUuZ2V0KGksIGopKSk7CisgICAgICAgICAgICByZXR1
cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRyYWl0cy5kb0NvbnZlcnQoZm10
LCB2YWx1ZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBldmVy
eSBlbGVtZW50IG9mIGBpdmFsYCBjb250YWlucyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9m
IGB2YWx1ZWAuCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lIHR5cGVuYW1lCisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW50ZXJ2YWxzfSBpdmFsCisgICAg
ICogQHBhcmFtIHsqfSB2YWx1ZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisg
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jb250YWlucyA9IGZ1bmN0aW9uKHR5cGVuYW1l
LCBpdmFsLCB2YWx1ZSkgeworICAgICAgICB2YXIgdHJhaXRzID0gZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlRyYWl0cy50cmFpdHNGYWN0b3J5KHR5cGVuYW1lKTsKKyAgICAgICAgdmFyIGNvbnRh
aW5zID0gdHJ1ZTsKKworICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBjb250YWlucyAmPSB0cmFpdHMuZG9Db250YWlucyhpdmFsW2ldLCB2YWx1ZVtpXSk7
CisgICAgICAgICAgICByZXR1cm4gY29udGFpbnM7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dmFsdWUgaW5zdGFuY2VvZiB0Y3VNYXRyaXguTWF0cml4KSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHZhbHVlLnJvd3M7IGkrKykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IHZhbHVlLmNvbHM7IGorKykKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMg
Jj0gdHJhaXRzLmRvQ29udGFpbnMoaXZhbC5nZXQoaSwgaiksIHZhbHVlLmdldChpLCBqKSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udGFpbnM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dHJhaXRzLmRvQ29udGFpbnMoaXZhbCwgdmFsdWUpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUgdHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JbnRlcnZhbHN9IGl2YWwwCisgICAgICogQHBhcmFtIHtnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuSW50ZXJ2YWxzfSBpdmFsMQorICAgICAqIEByZXR1cm4ge2ds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnRlcnZhbHN9CisgICAgICovCisgICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy51bmlvbiA9IGZ1bmN0aW9uKHR5cGVuYW1lLCBpdmFsMCwgaXZhbDEp
IHsKKyAgICAgICAgdmFyIHRyYWl0cyA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHMu
dHJhaXRzRmFjdG9yeSh0eXBlbmFtZSk7CisKKyAgICAgICAgaWYgKGl2YWwwIGluc3RhbmNlb2Yg
QXJyYXkpIHsKKyAgICAgICAgICAgIHZhciByZXQgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgaXZhbDAubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgcmV0LnB1c2go
dHJhaXRzLmRvVW5pb24oaXZhbDBbaV0sIGl2YWwxW2ldKSk7CisgICAgICAgICAgICByZXR1cm4g
cmV0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGl2YWwwIGluc3RhbmNlb2YgdGN1TWF0cml4
Lk1hdHJpeCkgeworICAgICAgICAgICAgdmFyIHJldCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KGl2
YWwwLnJvd3MsIGl2YWwwLmNvbHMpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBp
dmFsMC5yb3dzOyBpKyspCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdmFs
MC5jb2xzOyBqKyspCisgICAgICAgICAgICAgICAgICAgIHJldC5zZXQoaSwgaiwgdHJhaXRzLmRv
VW5pb24oaXZhbDAuZ2V0KGksIGopLCBpdmFsMS5nZXQoaSwgaikpKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJhaXRzLmRvVW5pb24oaXZh
bDAsIGl2YWwxKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5
cGVuYW1lCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlRyYWl0cyA9IGZ1bmN0aW9uKHR5cGVuYW1lKSB7CisgICAgICAgIHRoaXMudHlw
ZW5hbWUgPSB0eXBlbmFtZTsKKyAgICAgICAgdGhpcy5yb3dzID0gMTsKKyAgICAgICAgdGhpcy5j
b2xzID0gMTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0cy5w
cm90b3R5cGUuaXNTY2FsYXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucm93
cyA9PSAxICYmIHRoaXMuY29scyA9PSAxOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuVHJhaXRzLnByb3RvdHlwZS5pc1ZlY3RvciA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5yb3dzID4gMCAmJiB0aGlzLmNvbHMgPT0gMTsKKyAgICB9OworCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0cy5wcm90b3R5cGUuaXNNYXRyaXggPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucm93cyA+IDAgJiYgdGhpcy5jb2xzID4gMTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0eXBlbmFtZQorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHMudHJhaXRzRmFjdG9yeSA9
IGZ1bmN0aW9uKHR5cGVuYW1lKSB7CisgICAgICAgIHN3aXRjaCAodHlwZW5hbWUpIHsKKyAgICAg
ICAgICAgIGNhc2UgJ2Jvb2xlYW4nIDogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVHJhaXRzQm9vbCgpOworICAgICAgICAgICAgY2FzZSAnZmxvYXQnIDogY2FzZSAndmVjMicg
OiBjYXNlICd2ZWMzJyA6IGNhc2UgJ3ZlYzQnIDoKKyAgICAgICAgICAgIGNhc2UgJ21hdDInIDog
Y2FzZSAnbWF0MngzJyA6IGNhc2UgJ21hdDJ4NCcgOgorICAgICAgICAgICAgY2FzZSAnbWF0M3gy
JyA6IGNhc2UgJ21hdDMnIDogY2FzZSAnbWF0M3g0JyA6CisgICAgICAgICAgICBjYXNlICdtYXQ0
eDInIDogY2FzZSAnbWF0NHgzJyA6IGNhc2UgJ21hdDQnIDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHNGbG9hdCh0eXBlbmFtZSk7Cisg
ICAgICAgICAgICBjYXNlICdpbnQnIDogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVHJhaXRzSW50KCk7CisgICAgICAgICAgICBjYXNlICd2b2lkJyA6IHJldHVybiBuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0c1ZvaWQoKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGVuYW1lOicgKyB0
eXBlbmFtZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLnJvdW5kID0gZnVuY3Rpb24odHlwZW5hbWUsIGZtdCwgdmFsdWUpIHsKKyAgICAgICAgdmFy
IHRyYWl0cyA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHMudHJhaXRzRmFjdG9yeSh0
eXBlbmFtZSk7CisKKyAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAg
ICAgICAgIHZhciByZXQgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFs
dWUubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgcmV0LnB1c2godHJhaXRzLmRvUm91bmQo
Zm10LCB2YWx1ZVtpXSkpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHRjdU1hdHJpeC5NYXRyaXgpIHsKKyAgICAgICAg
ICAgIHZhciByZXQgPSBuZXcgdGN1TWF0cml4Lk1hdHJpeCh2YWx1ZS5yb3dzLCB2YWx1ZS5jb2xz
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUucm93czsgaSsrKQorICAg
ICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUuY29sczsgaisrKQorICAgICAg
ICAgICAgICAgICAgICByZXQuc2V0KGksIGosIHRyYWl0cy5kb1JvdW5kKGZtdCwgdmFsdWUuZ2V0
KGksIGopKSk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRyYWl0cy5kb1JvdW5kKGZtdCwgdmFsdWUpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBjYXN0IHRoZSBpbnB1dCB0eXBlZCBhcnJheSB0byBjb3JyZWN0IHR5cGUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gdHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge2dvb2cuVHlwZWRBcnJheX0g
aW5wdXQKKyAgICAgKiBAcmV0dXJuIHtnb29nLlR5cGVkQXJyYXl9CisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLmNhc3QgPSBmdW5jdGlvbih0eXBlbmFtZSwgaW5wdXQpIHsK
KyAgICAgICAgdmFyIHRyYWl0cyA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHMudHJh
aXRzRmFjdG9yeSh0eXBlbmFtZSk7CisgICAgICAgIHJldHVybiB0cmFpdHMuZG9DYXN0KGlucHV0
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHN9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlRyYWl0c1ZvaWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0cy5jYWxsKHRoaXMsICd2b2lkJyk7CisgICAgfTsK
KworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHNWb2lk
LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzKTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Kn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzVm9pZC5wcm90b3R5cGUu
ZG9NYWtlSVZhbCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgdGN1SW50
ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSB2
YWx1ZTEKKyAgICAgKiBAcGFyYW0geyp9IHZhbHVlMgorICAgICAqIEByZXR1cm4ge3RjdUludGVy
dmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFp
dHNWb2lkLnByb3RvdHlwZS5kb1VuaW9uID0gZnVuY3Rpb24odmFsdWUxLCB2YWx1ZTIpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzVm9pZC5wcm90b3R5cGUu
ZG9Db250YWlucyA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0
fSBmbXQKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSBpdmFsCisgICAgICog
QHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlRyYWl0c1ZvaWQucHJvdG90eXBlLmRvQ29udmVydCA9IGZ1bmN0aW9uKGZt
dCwgaXZhbCkgeworICAgICAgICByZXR1cm4gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3Jt
YXR9IGZtdAorICAgICAqIEBwYXJhbSB7Kn0gaXZhbAorICAgICAqIEByZXR1cm4ge3RjdUludGVy
dmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFp
dHNWb2lkLnByb3RvdHlwZS5kb1JvdW5kID0gZnVuY3Rpb24oZm10LCBpdmFsKSB7CisgICAgICAg
IHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gZm10CisgICAgICogQHBh
cmFtIHsqfSBpdmFsCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0
c1ZvaWQucHJvdG90eXBlLmRvUHJpbnRJVmFsID0gZnVuY3Rpb24oZm10LCBpdmFsKSB7CisgICAg
ICAgIHJldHVybiAnKCknOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUZs
b2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSBmbXQKKyAgICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0c1ZvaWQucHJvdG90eXBlLmRv
UHJpbnRWYWx1ZSA9IGZ1bmN0aW9uKGZtdCwgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuICcoKSc7
CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5kYXRhVHlwZVNpemUgPSBm
dW5jdGlvbihkZXRhaWxlZFR5cGUpIHsKKyAgICAgICAgdmFyIHNpemUgPSBbMSwgMV07CisgICAg
ICAgIHN3aXRjaCAoZGV0YWlsZWRUeXBlKSB7CisgICAgICAgICAgICBjYXNlICd2ZWMyJyA6IHNp
emVbMF0gPSAyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3ZlYzMnIDogc2l6ZVswXSA9IDM7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAndmVjNCcgOiBzaXplWzBdID0gNDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICdtYXQyJyA6IHNpemUgPSBbMiAsIDJdOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgJ21hdDJ4MycgOiBzaXplID0gWzMgLCAyXTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICdtYXQyeDQnIDogc2l6ZSA9IFs0ICwgMl07IGJyZWFrOworCisgICAgICAgICAgICBjYXNl
ICdtYXQzeDInIDogc2l6ZSA9IFsyICwgM107IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnbWF0
MycgOiBzaXplID0gWzMgLCAzXTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdtYXQzeDQnIDog
c2l6ZSA9IFs0ICwgM107IGJyZWFrOworCisgICAgICAgICAgICBjYXNlICdtYXQ0eDInIDogc2l6
ZSA9IFsyICwgNF07IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnbWF0NHgzJyA6IHNpemUgPSBb
MyAsIDRdOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ21hdDQnIDogc2l6ZSA9IFs0ICwgNF07
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzaXplOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlRyYWl0c30KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUKKyAgICAg
KiBAcGFyYW0ge3N0cmluZz19IGRldGFpbGVkVHlwZQorICAgICAqLworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMgPSBmdW5jdGlvbih0eXBlbmFtZSwgZGV0YWlsZWRU
eXBlKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFpdHMuY2FsbCh0aGlz
LCB0eXBlbmFtZSk7CisgICAgICAgIHZhciBzaXplID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LmRhdGFUeXBlU2l6ZShkZXRhaWxlZFR5cGUpOworICAgICAgICB0aGlzLnJvd3MgPSBzaXplWzBd
OworICAgICAgICB0aGlzLmNvbHMgPSBzaXplWzFdOworCisgICAgICAgIC8qKiB0eXBle3RjdUlu
dGVydmFsLkludGVydmFsfSAqLyB0aGlzLmlWYWw7CisgICAgfTsKKworICAgIHNldFBhcmVudENs
YXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMsIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5UcmFpdHMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNjYWxh
clRyYWl0cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5UcmFpdHMucHJvdG90eXBlKTsKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2NhbGFy
VHJhaXRzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5T
Y2FsYXJUcmFpdHM7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAgICog
QHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlNjYWxhclRyYWl0cy5wcm90b3R5cGUuZG9NYWtlSVZhbCA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgICAgIC8vIFRoYW5rZnVsbHkgYWxsIHNjYWxhciB0eXBlcyBoYXZlIGEg
d2VsbC1kZWZpbmVkIGNvbnZlcnNpb24gdG8gYGRvdWJsZWAsCisgICAgICAgIC8vIGhlbmNlIElu
dGVydmFsIGNhbiByZXByZXNlbnQgdGhlaXIgcmFuZ2VzIHdpdGhvdXQgcHJvYmxlbXMuCisgICAg
ICAgIHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoLyoqIEB0eXBlIHtudW1iZXJ9ICov
ICh2YWx1ZSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFs
LkludGVydmFsfSBhCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gYgorICAg
ICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMucHJvdG90eXBlLmRvVW5pb24gPSBmdW5jdGlv
bihhLCBiKSB7CisgICAgICAgIHJldHVybiBhLm9wZXJhdG9yT3JCaW5hcnkoYik7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGEKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAq
LworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMucHJvdG90eXBlLmRv
Q29udGFpbnMgPSBmdW5jdGlvbihhLCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gYS5jb250YWlu
cyhuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwodmFsdWUpKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gZm10CisgICAgICogQHBh
cmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gaXZhbAorICAgICAqIEByZXR1cm4ge3RjdUludGVy
dmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2Fs
YXJUcmFpdHMucHJvdG90eXBlLmRvQ29udmVydCA9IGZ1bmN0aW9uKGZtdCwgaXZhbCkgeworICAg
ICAgICByZXR1cm4gZm10LmNvbnZlcnQoaXZhbCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9IGZtdAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB2YWx1ZQorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMucHJvdG90eXBl
LmRvUm91bmQgPSBmdW5jdGlvbihmbXQsIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBmbXQucm91
bmRPdXQobmV3IHRjdUludGVydmFsLkludGVydmFsKHZhbHVlKSwgZmFsc2UpOy8vVE9ETyBjYXN0
IHRvIGRvdWJsZQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNjYWxhclRyYWl0c30KKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGV0YWlsZWRUeXBlCisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlRyYWl0c0Zsb2F0ID0gZnVuY3Rpb24oZGV0YWlsZWRUeXBlKSB7CisgICAg
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMuY2FsbCh0aGlzLCAnZmxv
YXQnLCBkZXRhaWxlZFR5cGUpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVHJhaXRzRmxvYXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuU2NhbGFyVHJhaXRzLnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlRyYWl0c0Zsb2F0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5UcmFpdHNGbG9hdDsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1Rmxv
YXRGb3JtYXQuRmxvYXRGb3JtYXR9IGZtdAorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50
ZXJ2YWx9IGl2YWwKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRz
RmxvYXQucHJvdG90eXBlLmRvUHJpbnRJVmFsID0gZnVuY3Rpb24oZm10LCBpdmFsKSB7CisgICAg
ICAgIHJldHVybiBmbXQuaW50ZXJ2YWxUb0hleChpdmFsKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtnb29nLlR5cGVkQXJyYXl9IGlucHV0CisgICAgICogQHJldHVybiB7Z29v
Zy5UeXBlZEFycmF5fQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFp
dHNGbG9hdC5wcm90b3R5cGUuZG9DYXN0ID0gZnVuY3Rpb24oaW5wdXQpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBGbG9hdDMyQXJyYXkoaW5wdXQuYnVmZmVyKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gZm10CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHZhbHVlCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlRyYWl0c0Zsb2F0LnByb3RvdHlwZS5kb1ByaW50VmFsdWUgPSBmdW5jdGlvbihmbXQsIHZhbHVl
KSB7CisgICAgICAgIHJldHVybiBmbXQuZmxvYXRUb0hleCh2YWx1ZSk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuU2NhbGFyVHJhaXRzfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5UcmFpdHNCb29sID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5TY2FsYXJUcmFpdHMuY2FsbCh0aGlzLCAnYm9vbGVhbicpOworICAgIH07CisK
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzQm9vbC5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJUcmFpdHMucHJvdG90eXBl
KTsKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzQm9vbC5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzQm9vbDsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9IGZtdAorICAgICAq
IEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGl2YWwKKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzQm9vbC5wcm90b3R5cGUuZG9QcmludElWYWwgPSBmdW5j
dGlvbihmbXQsIGl2YWwpIHsKKyAgICAgICAgLyoqIHR5cGV7c3RyaW5nfSAqLyB2YXIgb3MgPSAn
eyc7CisgICAgICAgIHZhciBpZmFsc2UgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoMCk7Cisg
ICAgICAgIHZhciBpdHJ1ZSA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgxKTsKKyAgICAgICAg
aWYgKGl2YWwuY29udGFpbnMoaWZhbHNlKSkKKyAgICAgICAgICAgIG9zICs9ICdmYWxzZSc7Cisg
ICAgICAgIGlmIChpdmFsLmNvbnRhaW5zKGlmYWxzZSkgJiYgaXZhbC5jb250YWlucyhpdHJ1ZSkp
CisgICAgICAgICAgICBvcyArPSAnLCAnOworICAgICAgICBpZiAoaXZhbC5jb250YWlucyhpdHJ1
ZSkpCisgICAgICAgICAgICBvcyArPSAndHJ1ZSc7CisgICAgICAgIG9zICs9ICd9JzsKKyAgICAg
ICAgcmV0dXJuIG9zOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUZsb2F0
Rm9ybWF0LkZsb2F0Rm9ybWF0fSBmbXQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlCisg
ICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0c0Jvb2wucHJvdG90eXBl
LmRvUHJpbnRWYWx1ZSA9IGZ1bmN0aW9uKGZtdCwgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZh
bHVlID8gJ3RydWUnIDogJ2ZhbHNlJzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2FsYXJU
cmFpdHN9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYWl0c0ludCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2NhbGFyVHJh
aXRzLmNhbGwodGhpcywgJ2ludCcpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuVHJhaXRzSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlNjYWxhclRyYWl0cy5wcm90b3R5cGUpOworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5UcmFpdHNJbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlRyYWl0c0ludDsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1RmxvYXRG
b3JtYXQuRmxvYXRGb3JtYXR9IGZtdAorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9IGl2YWwKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJhaXRzSW50
LnByb3RvdHlwZS5kb1ByaW50SVZhbCA9IGZ1bmN0aW9uKGZtdCwgaXZhbCkgeworICAgICAgICBy
ZXR1cm4gJ1snICsgKGl2YWwubG8oKSkgKyAnLCAnICsgKGl2YWwuaGkoKSkgKyAnXSc7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9
IGZtdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5UcmFpdHNJbnQucHJvdG90eXBlLmRvUHJpbnRWYWx1ZSA9IGZ1bmN0
aW9uKGZtdCwgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDEwKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlN0YXRlbWVudCA9IGZ1bmN0aW9uKCkgeworCisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250
ZXh0fSBjdHgKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3RhdGVtZW50
LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24oY3R4KSB7CisgICAgICAgIHRoaXMuZG9FeGVj
dXRlKGN0eCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3RhdGVtZW50LnByb3RvdHlwZS5w
cmludCA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kb1ByaW50KCk7CisgICAg
fTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdGF0ZW1lbnQucHJvdG90eXBlLnRv
U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnByaW50KCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIE91dHB1dCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBleHBy
ZXNzaW9uIHJlZmVycyB0bworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZ1bmNTZXR9IGRzdAorICAgICAqCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlN0YXRlbWVudC5wcm90b3R5cGUuZ2V0VXNlZEZ1bmNzID0gZnVuY3Rpb24oZHN0KSB7Cisg
ICAgICAgIHRoaXMuZG9HZXRVc2VkRnVuY3MoZHN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9IGN0eAorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdGF0ZW1lbnQucHJvdG90eXBlLmRv
RXhlY3V0ZSA9IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1
YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5TdGF0ZW1lbnQucHJvdG90eXBlLmRvUHJpbnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uLiBQbGVhc2Ugb3ZlcnJpZGUuJyk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIE91dHB1dCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBleHBy
ZXNzaW9uIHJlZmVycyB0bworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZ1bmNTZXR9IGRzdAorICAgICAqCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlN0YXRlbWVudC5wcm90b3R5cGUuZG9HZXRVc2VkRnVuY3MgPSBmdW5jdGlvbihkc3QpIHsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uLiBQbGVhc2Ugb3ZlcnJp
ZGUuJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3RhdGVtZW50fQorICAgICAqIEBwYXJh
bSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlfSB2YXJpYWJsZQorICAgICAqIEBw
YXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJ9IHZhbHVlCisgICAgICogQHBhcmFt
IHtib29sZWFufSBpc0RlY2xhcmF0aW9uCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZhcmlhYmxlU3RhdGVtZW50ID0gZnVuY3Rpb24odmFyaWFibGUsIHZhbHVlLCBpc0Rl
Y2xhcmF0aW9uKSB7CisgICAgICAgIHRoaXMubV92YXJpYWJsZSA9IHZhcmlhYmxlOworICAgICAg
ICB0aGlzLm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5tX2lzRGVjbGFyYXRpb24gPSBp
c0RlY2xhcmF0aW9uOworCisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5WYXJpYWJsZVN0YXRlbWVudCwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlN0YXRlbWVudCk7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZhcmlhYmxlU3RhdGVtZW50LnByb3RvdHlwZS5kb0V4ZWN1dGUgPSBmdW5jdGlvbihj
dHgpIHsKKyAgICAgICAgY3R4LmVudi5iaW5kKHRoaXMubV92YXJpYWJsZSwgdGhpcy5tX3ZhbHVl
LmV2YWx1YXRlKGN0eCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJp
bmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlU3RhdGVt
ZW50LnByb3RvdHlwZS5kb1ByaW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB2ID0gdGhp
cy5tX3ZhcmlhYmxlOworICAgICAgICB2YXIgb3MgPSAnJzsKKyAgICAgICAgaWYgKHRoaXMubV9p
c0RlY2xhcmF0aW9uKQorICAgICAgICAgICAgb3MgKz0gZ2x1VmFyVHlwZS5kZWNsYXJlVmFyaWFi
bGUoZ2x1VmFyVHlwZS5nZXRWYXJUeXBlT2Yodi50eXBlbmFtZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICB2LmdldE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9zICs9IHYu
Z2V0TmFtZSgpOworCisgICAgICAgIG9zICs9ICcgPSAnICsgdGhpcy5tX3ZhbHVlLnByaW50RXhw
cigpICsgJztcbic7CisKKyAgICAgICAgcmV0dXJuIG9zOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBPdXRwdXQgdGhlIGZ1bmN0aW9ucyB0aGF0IHRoaXMgZXhwcmVzc2lvbiByZWZlcnMgdG8K
KyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jU2V0fSBkc3QKKyAg
ICAgKgorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZVN0YXRl
bWVudC5wcm90b3R5cGUuZG9HZXRVc2VkRnVuY3MgPSBmdW5jdGlvbihkc3QpIHsKKyAgICAgICAg
dGhpcy5tX3ZhbHVlLmdldFVzZWRGdW5jcyhkc3QpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZX0gdmFyaWFibGUKKyAg
ICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByfSBkZWZpbmllbnMKKyAg
ICAgKiBAcmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGVTdGF0ZW1lbnR9
CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLnZhcmlhYmxlRGVjbGFyYXRp
b24gPSBmdW5jdGlvbih2YXJpYWJsZSwgZGVmaW5pZW5zKSB7CisgICAgICAgIHJldHVybiBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlU3RhdGVtZW50KHZhcmlhYmxlLCBkZWZp
bmllbnMsIHRydWUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7Z2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkV4cGFuZENvbnRleHR9IGN0eAorICAgICAqIEBwYXJhbSB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJ9IGV4cHIKKyAgICAgKiBAcmV0dXJuIHtnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGV9CisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLmJpbmRFeHByZXNzaW9uID0gZnVuY3Rpb24odHlwZW5hbWUsIG5hbWUsIGN0
eCwgZXhwcikgeworICAgICAgICB2YXIgdmFyaWFibGUgPSBjdHguZ2VuU3ltKHR5cGVuYW1lLCBu
YW1lKTsKKyAgICAgICAgY3R4LmFkZFN0YXRlbWVudChnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
dmFyaWFibGVEZWNsYXJhdGlvbih2YXJpYWJsZSwgZXhwcikpOworICAgICAgICByZXR1cm4gdmFy
aWFibGU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENvbW1vbiBiYXNlIGNsYXNzIGZvciBh
bGwgZXhwcmVzc2lvbnMgcmVnYXJkbGVzcyBvZiB0aGVpciB0eXBlLgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByQmFzZSA9IGZ1
bmN0aW9uKCkge307CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlLnByb3RvdHlwZS5wcmludEV4
cHIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZG9QcmludEV4cHIoKTsKKyAg
ICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlLnByb3RvdHlwZS50
b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wcmludEV4cHIoKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByQmFzZS5wcm90b3R5cGUuZG9QcmludEV4cHIg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9u
LiBQbGVhc2Ugb3ZlcnJpZGUuJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIE91dHB1dCB0
aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBleHByZXNzaW9uIHJlZmVycyB0bworICAgICAqIEBwYXJh
bSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNTZXR9IGRzdAorICAgICAqCisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlLnByb3RvdHlwZS5nZXRVc2Vk
RnVuY3MgPSBmdW5jdGlvbigvKkZ1bmNTZXQmKi8gZHN0KSB7CisgICAgICAgIHRoaXMuZG9HZXRV
c2VkRnVuY3MoZHN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogT3V0cHV0IHRoZSBmdW5j
dGlvbnMgdGhhdCB0aGlzIGV4cHJlc3Npb24gcmVmZXJzIHRvCisgICAgICogQHBhcmFtIHtnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY1NldH0gZHN0CisgICAgICoKKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwckJhc2UucHJvdG90eXBlLmRvR2V0VXNlZEZ1bmNz
ID0gZnVuY3Rpb24oLypGdW5jU2V0JiovIGRzdCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogVHlwZS1zcGVjaWZpYyBvcGVyYXRpb25zIGZvciBhbiBleHByZXNzaW9uIHJlcHJl
c2VudGluZyB0eXBlIHR5cGVuYW1lLgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwckJhc2V9CisgICAgICogQHBhcmFtIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHlwZW5hbWV9IHR5cGVuYW1lCisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHIgPSBmdW5jdGlvbih0eXBlbmFtZSkgeworICAg
ICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwckJhc2UuY2FsbCh0aGlzKTsKKyAgICAg
ICAgdGhpcy50eXBlbmFtZSA9IHR5cGVuYW1lOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFz
cyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwciwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkV4cHJCYXNlKTsKKworICAgIC8qKgorICAgICAqIFR5cGUtc3BlY2lmaWMgb3BlcmF0aW9ucyBm
b3IgYW4gZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdHlwZSB0eXBlbmFtZS4KKyAgICAgKiBAcGFy
YW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICovCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHIucHJvdG90eXBlLmV2YWx1YXRlID0gZnVu
Y3Rpb24oY3R4KSB7CisgICAgICAgIHJldHVybiB0aGlzLmRvRXZhbHVhdGUoY3R4KTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogVHlwZS1zcGVjaWZpYyBvcGVyYXRpb25zIGZvciBhbiBleHBy
ZXNzaW9uIHJlcHJlc2VudGluZyB0eXBlIHR5cGVuYW1lLgorICAgICAqIEBwYXJhbSB7Z2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRXhwci5wcm90b3R5cGUuZG9FdmFsdWF0ZSA9IGZ1bmN0aW9uKGN0
eCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBv
dmVycmlkZS4nKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByfQorICAgICAqIEBwYXJh
bSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR5cGVuYW1lfSB0eXBlbmFtZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nPX0gbmFtZQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5WYXJpYWJsZSA9IGZ1bmN0aW9uKHR5cGVuYW1lLCBuYW1lKSB7CisgICAgICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5FeHByLmNhbGwodGhpcywgdHlwZW5hbWUpOworICAgICAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX25hbWUgPSBuYW1lIHx8ICc8dW5kZWZpbmVkPic7Cisg
ICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJp
YWJsZSwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHIpOworCisgICAgLyoqCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5W
YXJpYWJsZS5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tX25hbWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUucHJvdG90eXBl
LmRvUHJpbnRFeHByID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbmFtZTsK
KyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlLnByb3RvdHlw
ZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kb1ByaW50RXhw
cigpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICogQHJldHVybiB7Kn0KKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUucHJvdG90eXBlLmRvRXZhbHVhdGUg
PSBmdW5jdGlvbihjdHgpIHsKKyAgICAgICAgcmV0dXJuIGN0eC5lbnYubG9va3VwKHRoaXMpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlfQorICAgICAqIEBwYXJhbSB7Kj19IHQK
KyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVm9pZCA9IGZ1bmN0aW9uKHQp
IHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlLmNhbGwodGhpcywg
J3ZvaWQnKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZvaWQsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZSk7CisKKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVm9pZC5wcm90b3R5cGUuZG9FdmFsdWF0ZSA9IGZ1bmN0
aW9uKGN0eCkgeworICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZhcmlhYmxlfQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAqLwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCA9IGZ1bmN0aW9uKHZhbHVlKSB7
CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZS5jYWxsKHRoaXMsICdm
bG9hdCcpOworICAgICAgICB0aGlzLm1fdmFsdWUgPSB2YWx1ZTsKKyAgICB9OworCisgICAgc2V0
UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnN0YW50LCBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuVmFyaWFibGUpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkNvbnN0YW50LnByb3RvdHlwZS5kb0V2YWx1YXRlID0gZnVuY3Rpb24oY3R4KSB7CisgICAgICAg
IHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwodGhpcy5tX3ZhbHVlKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHsqfSB0eXBlbmFt
ZQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmcg
PSBmdW5jdGlvbih0eXBlbmFtZSkgeworICAgICAgICB0aGlzLnR5cGVuYW1lID0gdHlwZW5hbWU7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRz
IHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcn0KKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZX0gdmVjdG9yCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGluZGV4CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZlY3RvclZhcmlh
YmxlID0gZnVuY3Rpb24odmVjdG9yLCBpbmRleCkgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRXhwci5jYWxsKHRoaXMsIHZlY3Rvci50eXBlbmFtZSk7CisgICAgICAgIHRoaXMu
bV92ZWN0b3IgPSB2ZWN0b3I7CisgICAgICAgIHRoaXMubV9pbmRleCA9IGluZGV4OworICAgIH07
CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmVjdG9yVmFy
aWFibGUsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByKTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAg
KiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuVmVjdG9yVmFyaWFibGUucHJvdG90eXBlLmRvRXZhbHVhdGUgPSBmdW5j
dGlvbihjdHgpIHsKKyAgICAgICAgdmFyIHRtcCA9IHRoaXMubV92ZWN0b3IuZG9FdmFsdWF0ZShj
dHgpOworICAgICAgICByZXR1cm4gdG1wW3RoaXMubV9pbmRleF07CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRXhwcn0KKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5W
YXJpYWJsZX0gbWF0cml4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJvdworICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBjb2wKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWF0
cml4VmFyaWFibGUgPSBmdW5jdGlvbihtYXRyaXgsIHJvdywgY29sKSB7CisgICAgICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByLmNhbGwodGhpcywgbWF0cml4LnR5cGVuYW1lKTsKKyAg
ICAgICAgdGhpcy5tX21hdHJpeCA9IG1hdHJpeDsKKyAgICAgICAgdGhpcy5tX3JvdyA9IHJvdzsK
KyAgICAgICAgdGhpcy5tX2NvbCA9IGNvbDsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3Mo
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1hdHJpeFZhcmlhYmxlLCBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRXhwcik7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwu
SW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1hdHJpeFZh
cmlhYmxlLnByb3RvdHlwZS5kb0V2YWx1YXRlID0gZnVuY3Rpb24oY3R4KSB7CisgICAgICAgIHZh
ciB0bXAgPSB0aGlzLm1fbWF0cml4LmRvRXZhbHVhdGUoY3R4KTsKKyAgICAgICAgcmV0dXJuIHRt
cC5nZXQodGhpcy5tX3JvdywgdGhpcy5tX2NvbCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RXhwcn0KKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UeXBlbmFtZX0g
dHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfSBm
dW5jCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcj19IGFyZzAK
KyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByPX0gYXJnMQorICAg
ICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHI9fSBhcmcyCisgICAgICog
QHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcj19IGFyZzMKKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHkgPSBmdW5jdGlvbih0eXBlbmFtZSwgZnVu
YywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRXhwci5jYWxsKHRoaXMsIHR5cGVuYW1lKTsKKyAgICAgICAgdGhpcy5tX2Z1bmMgPSBm
dW5jOworICAgICAgICAvKiogQHR5cGUge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UdXBsZTR9
ICovIHRoaXMubV9hcmdzOworICAgICAgICBpZiAoYXJnMCBpbnN0YW5jZW9mIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5UdXBsZTQpCisgICAgICAgICAgICB0aGlzLm1fYXJncyA9IC8qKiBAdHlw
ZSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1cGxlNH0gKi8gKGFyZzApOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMubV9hcmdzID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5UdXBsZTQoYXJnMCB8fCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZvaWQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnMSB8fCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZvaWQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnMiB8fCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZvaWQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMyB8
fCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZvaWQoKSk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5LCBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcik7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5LnBy
b3RvdHlwZS5kb1ByaW50RXhwciA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgYXJncyA9IFt0
aGlzLm1fYXJncy5hLCB0aGlzLm1fYXJncy5iLCB0aGlzLm1fYXJncy5jLCB0aGlzLm1fYXJncy5k
XTsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9mdW5jLnByaW50KGFyZ3MpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4
dH0gY3R4CisgICAgICogQHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludGVydmFs
c30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHkucHJvdG90eXBl
LmRvRXZhbHVhdGUgPSBmdW5jdGlvbihjdHgpIHsKKyAgICAgICAgdmFyIGRlYnVnID0gZmFsc2U7
CisKKyAgICAgICAgaWYgKGRlYnVnKSB7CisgICAgICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQXBwbHkucHJvdG90eXBlLmRvRXZhbHVhdGUubGV2ZWwgPSBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuQXBwbHkucHJvdG90eXBlLmRvRXZhbHVhdGUubGV2ZWwgfHwgMDsKKyAgICAgICAg
ICAgIHZhciBsZXZlbCA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseS5wcm90b3R5cGUu
ZG9FdmFsdWF0ZS5sZXZlbDsKKyAgICAgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5B
cHBseS5wcm90b3R5cGUuZG9FdmFsdWF0ZS5sZXZlbCsrOworICAgICAgICAgICAgdmFyIG5hbWUg
PSB0aGlzLm1fZnVuYy5jb25zdHJ1Y3Rvci50b1N0cmluZygpOworICAgICAgICAgICAgbmFtZSA9
IG5hbWUucmVwbGFjZSgvW1xzXFNdKmdsc0J1aWx0aW5QcmVjaXNpb25UZXN0c1wuL20sICcnKS5y
ZXBsYWNlKC9cLmNhbGxbXHNcU10qL20sICcnKTsKKyAgICAgICAgICAgIGlmICh0aGlzLm1fZnVu
Yy5nZXROYW1lKQorICAgICAgICAgICAgICAgIG5hbWUgKz0gJyAnICsgdGhpcy5tX2Z1bmMuZ2V0
TmFtZSgpOworICAgICAgICAgICAgY29uc29sZS5sb2coJzwnICsgbGV2ZWwgKyAnPiBGdW5jdGlv
biAnICsgbmFtZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYSA9IHRoaXMubV9hcmdzLmEu
ZXZhbHVhdGUoY3R4KTsKKyAgICAgICAgdmFyIGIgPSB0aGlzLm1fYXJncy5iLmV2YWx1YXRlKGN0
eCk7CisgICAgICAgIHZhciBjID0gdGhpcy5tX2FyZ3MuYy5ldmFsdWF0ZShjdHgpOworICAgICAg
ICB2YXIgZCA9IHRoaXMubV9hcmdzLmQuZXZhbHVhdGUoY3R4KTsKKyAgICAgICAgdmFyIHJldFZh
bCA9IHRoaXMubV9mdW5jLmFwcGx5RnVuY3Rpb24oY3R4LCBhLCBiLCBjLCBkKTsKKworICAgICAg
ICBpZiAoZGVidWcpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCc8JyArIGxldmVsICsgJz4g
YTogJyArIGEpOworICAgICAgICAgICAgY29uc29sZS5sb2coJzwnICsgbGV2ZWwgKyAnPiBiOiAn
ICsgYik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygnPCcgKyBsZXZlbCArICc+IHJldHVybmlu
ZzogJyArIHJldFZhbCk7CisgICAgICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBw
bHkucHJvdG90eXBlLmRvRXZhbHVhdGUubGV2ZWwtLTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmV0VmFsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5GdW5jfSBmdW5jCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRXhwcj19IGFyZzAKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5FeHByPX0gYXJnMQorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkV4cHI9fSBhcmcyCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhw
cj19IGFyZzMKKyAgICAgKi8KKyAgICB2YXIgYXBwID0gZnVuY3Rpb24oZnVuYywgYXJnMCwgYXJn
MSwgYXJnMiwgYXJnMykgeworICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5BcHBseSgnZmxvYXQnLCBmdW5jLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVu
Y1NldH0gZHN0CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5LnBy
b3RvdHlwZS5kb0dldFVzZWRGdW5jcyA9IGZ1bmN0aW9uKGRzdCkgeworICAgICAgICB0aGlzLm1f
ZnVuYy5nZXRVc2VkRnVuY3MoZHN0KTsKKyAgICAgICAgdGhpcy5tX2FyZ3MuYS5nZXRVc2VkRnVu
Y3MoZHN0KTsKKyAgICAgICAgdGhpcy5tX2FyZ3MuYi5nZXRVc2VkRnVuY3MoZHN0KTsKKyAgICAg
ICAgdGhpcy5tX2FyZ3MuYy5nZXRVc2VkRnVuY3MoZHN0KTsKKyAgICAgICAgdGhpcy5tX2FyZ3Mu
ZC5nZXRVc2VkRnVuY3MoZHN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseX0KKyAg
ICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfSBmdW5jCisgICAgICog
QHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcj19IGFyZzAKKyAgICAgKiBAcGFy
YW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByPX0gYXJnMQorICAgICAqIEBwYXJhbSB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHI9fSBhcmcyCisgICAgICogQHBhcmFtIHtnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwcj19IGFyZzMKKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIgPSBmdW5jdGlvbihmdW5jLCBhcmcwLCBhcmcxLCBh
cmcyLCBhcmczKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseS5jYWxs
KHRoaXMsICdmbG9hdCcsIGZ1bmMsIGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH07CisK
KyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIs
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseSk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuQXBwbHlTY2FsYXIucHJvdG90eXBlLmRvRXZhbHVhdGUgPSBmdW5jdGlvbihjdHgp
IHsKKyAgICAgICAgdmFyIGRlYnVnID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGRlYnVnKSB7Cisg
ICAgICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIucHJvdG90eXBl
LmRvRXZhbHVhdGUubGV2ZWwgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIu
cHJvdG90eXBlLmRvRXZhbHVhdGUubGV2ZWwgfHwgMDsKKyAgICAgICAgICAgIHZhciBsZXZlbCA9
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhci5wcm90b3R5cGUuZG9FdmFsdWF0
ZS5sZXZlbDsKKyAgICAgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxh
ci5wcm90b3R5cGUuZG9FdmFsdWF0ZS5sZXZlbCsrOworICAgICAgICAgICAgdmFyIG5hbWUgPSB0
aGlzLm1fZnVuYy5jb25zdHJ1Y3Rvci50b1N0cmluZygpOworICAgICAgICAgICAgbmFtZSA9IG5h
bWUucmVwbGFjZSgvW1xzXFNdKmdsc0J1aWx0aW5QcmVjaXNpb25UZXN0c1wuL20sICcnKS5yZXBs
YWNlKC9cLmNhbGxbXHNcU10qL20sICcnKTsKKyAgICAgICAgICAgIGlmICh0aGlzLm1fZnVuYy5n
ZXROYW1lKQorICAgICAgICAgICAgICAgIG5hbWUgKz0gJyAnICsgdGhpcy5tX2Z1bmMuZ2V0TmFt
ZSgpOworICAgICAgICAgICAgY29uc29sZS5sb2coJ3NjYWxhcjwnICsgbGV2ZWwgKyAnPiBGdW5j
dGlvbiAnICsgbmFtZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYSA9IHRoaXMubV9hcmdz
LmEuZXZhbHVhdGUoY3R4KTsKKyAgICAgICAgdmFyIGIgPSB0aGlzLm1fYXJncy5iLmV2YWx1YXRl
KGN0eCk7CisgICAgICAgIHZhciBjID0gdGhpcy5tX2FyZ3MuYy5ldmFsdWF0ZShjdHgpOworICAg
ICAgICB2YXIgZCA9IHRoaXMubV9hcmdzLmQuZXZhbHVhdGUoY3R4KTsKKyAgICAgICAgaWYgKGEg
aW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgdmFyIHJldCA9IFtdOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAg
dmFyIHAwID0gYSBpbnN0YW5jZW9mIEFycmF5ID8gYVtpXSA6IGE7CisgICAgICAgICAgICAgICAg
dmFyIHAxID0gYiBpbnN0YW5jZW9mIEFycmF5ID8gYltpXSA6IGI7CisgICAgICAgICAgICAgICAg
dmFyIHAyID0gYyBpbnN0YW5jZW9mIEFycmF5ID8gY1tpXSA6IGM7CisgICAgICAgICAgICAgICAg
dmFyIHAzID0gZCBpbnN0YW5jZW9mIEFycmF5ID8gZFtpXSA6IGQ7CisgICAgICAgICAgICAgICAg
cmV0LnB1c2godGhpcy5tX2Z1bmMuYXBwbHlGdW5jdGlvbihjdHgsIHAwLCBwMSwgcDIsIHAzKSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIHJldFZhbCA9IHRoaXMubV9mdW5jLmFwcGx5RnVuY3Rpb24oY3R4LCBhLCBiLCBj
LCBkKTsKKworICAgICAgICBpZiAoZGVidWcpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCdz
Y2FsYXI8JyArIGxldmVsICsgJz4gYTogJyArIGEpOworICAgICAgICAgICAgY29uc29sZS5sb2co
J3NjYWxhcjwnICsgbGV2ZWwgKyAnPiBiOiAnICsgYik7CisgICAgICAgICAgICBjb25zb2xlLmxv
Zygnc2NhbGFyPCcgKyBsZXZlbCArICc+IHJldHVybjE6ICcgKyByZXQpOworICAgICAgICAgICAg
Y29uc29sZS5sb2coJ3NjYWxhcjwnICsgbGV2ZWwgKyAnPiByZXR1cm4yOiAnICsgcmV0VmFsKTsK
KyAgICAgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseS5wcm90b3R5cGUuZG9F
dmFsdWF0ZS5sZXZlbC0tOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2ds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuQXBwbHlWYXIgPSBmdW5jdGlvbih0eXBlbmFtZSwgZnVuYywgYXJnMCwgYXJn
MSwgYXJnMiwgYXJnMykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHku
Y2FsbCh0aGlzLCB0eXBlbmFtZSwgZnVuYywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVZh
ciwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5KTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBA
cmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW50ZXJ2YWxzfQorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVZhci5wcm90b3R5cGUuZG9FdmFsdWF0ZSA9
IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2Z1bmMuYXBwbHlGdW5jdGlv
bihjdHgsCisgICAgICAgICAgICAgICAgICAgIGN0eC5lbnYubG9va3VwKHRoaXMubV9hcmdzLmEp
LCBjdHguZW52Lmxvb2t1cCh0aGlzLm1fYXJncy5iKSwKKyAgICAgICAgICAgICAgICAgICAgY3R4
LmVudi5sb29rdXAodGhpcy5tX2FyZ3MuYyksIGN0eC5lbnYubG9va3VwKHRoaXMubV9hcmdzLmQp
LAorICAgICAgICAgICAgICAgICAgICBbdGhpcy5tX2FyZ3MuYS5nZXROYW1lKCksIHRoaXMubV9h
cmdzLmIuZ2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICB0aGlzLm1fYXJncy5jLmdldE5h
bWUoKSwgdGhpcy5tX2FyZ3MuZC5nZXROYW1lKCldKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1
bmNCYXNlID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Jhc2UucHJvdG90
eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICcnOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkZ1bmNCYXNlLnByb3RvdHlwZS5nZXRSZXF1aXJlZEV4dGVuc2lvbiA9
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJyc7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7QXJyYXk8Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlPn0gYXJn
cworICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRnVuY0Jhc2UucHJvdG90eXBlLnByaW50ID0gZnVuY3Rpb24oYXJncykgeworICAg
ICAgICByZXR1cm4gJyc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEluZGV4IG9mIG91dHB1
dCBwYXJhbWV0ZXIsIG9yIC0xIGlmIG5vbmUgb2YgdGhlIHBhcmFtZXRlcnMgaXMgb3V0cHV0Lgor
ICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRnVuY0Jhc2UucHJvdG90eXBlLmdldE91dFBhcmFtSW5kZXggPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNCYXNlLnBy
b3RvdHlwZS5wcmludERlZmluaXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZG9QcmludERlZmluaXRpb24oKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jQmFz
ZS5wcm90b3R5cGUuZG9QcmludERlZmluaXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uLiBQbGVhc2Ugb3ZlcnJpZGUuJyk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIHR5cGVkZWYgc2V0PGNvbnN0IEZ1bmNCYXNlKj4gRnVuY1Nl
dDsKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jU2V0fSBkc3QK
KyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Jhc2UucHJvdG90eXBl
LmdldFVzZWRGdW5jcyA9IGZ1bmN0aW9uKGRzdCkgeworICAgICAgICB0aGlzLmRvR2V0VXNlZEZ1
bmNzKGRzdCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkZ1bmNTZXR9IGRzdAorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5GdW5jQmFzZS5wcm90b3R5cGUuZG9HZXRVc2VkRnVuY3MgPSBmdW5jdGlvbihkc3Qp
IHt9OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAg
LyoqCisgICAgICogXGJyaWVmIEZ1bmN0aW9uIG9iamVjdHMuCisgICAgICoKKyAgICAgKiBFYWNo
IEZ1bmMgb2JqZWN0IHJlcHJlc2VudHMgYSBHTFNMIGZ1bmN0aW9uLiBJdCBjYW4gYmUgYXBwbGll
ZCB0byBpbnRlcnZhbAorICAgICAqIGFyZ3VtZW50cywgYW5kIGl0IHJldHVybnMgdGhlIGFuIGlu
dGVydmFsIHRoYXQgaXMgYSBjb25zZXJ2YXRpdmUKKyAgICAgKiBhcHByb3hpbWF0aW9uIG9mIHRo
ZSBpbWFnZSBvZiB0aGUgR0xTTCBmdW5jdGlvbiBvdmVyIHRoZSBhcmd1bWVudAorICAgICAqIGlu
dGVydmFscy4gVGhhdCBpcywgaXQgaXMgZ2l2ZW4gYSBzZXQgb2YgcG9zc2libGUgYXJndW1lbnRz
IGFuZCBpdCByZXR1cm5zCisgICAgICogdGhlIHNldCBvZiBwb3NzaWJsZSB2YWx1ZXMuCisgICAg
ICoKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkZ1bmNCYXNlfQorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlNpZ25hdHVyZX0gU2lnXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2lnXz4KKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuYyA9IGZ1bmN0aW9uKFNpZ18pIHsKKyAgICAg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNCYXNlLmNhbGwodGhpcyk7CisgICAgICAg
IHRoaXMuU2lnID0gU2lnXzsKKyAgICAgICAgdGhpcy5SZXQgPSB0aGlzLlNpZy5SZXQ7CisgICAg
ICAgIHRoaXMuQXJnMCA9IHRoaXMuU2lnLkFyZzA7CisgICAgICAgIHRoaXMuQXJnMSA9IHRoaXMu
U2lnLkFyZzE7CisgICAgICAgIHRoaXMuQXJnMiA9IHRoaXMuU2lnLkFyZzI7CisgICAgICAgIHRo
aXMuQXJnMyA9IHRoaXMuU2lnLkFyZzM7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5GdW5jLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkZ1bmNCYXNlLnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZ1bmMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1
bmM7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5FeHByQmFzZT59IGFyZ3MKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmMucHJvdG90eXBlLnByaW50ID0gZnVuY3Rp
b24oYXJncykgeworICAgICAgICByZXR1cm4gdGhpcy5kb1ByaW50KGFyZ3MpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29u
dGV4dH0gY3R4CisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW50ZXJ2
YWxzPX0gSWFyZzAKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnRl
cnZhbHM9fSBJYXJnMQorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLklu
dGVydmFscz19IElhcmcyCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
SW50ZXJ2YWxzPX0gSWFyZzMKKyAgICAgKiBAcmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuSW50ZXJ2YWxzfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5j
LnByb3RvdHlwZS5hcHBseUZ1bmN0aW9uID0gZnVuY3Rpb24oY3R4LCBJYXJnMCwgSWFyZzEsIElh
cmcyLCBJYXJnMywgdmFyaWFibGVuYW1lcykgeworICAgICAgICByZXR1cm4gdGhpcy5hcHBseUFy
Z3MoY3R4LCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1cGxlNChJYXJnMCwgSWFyZzEs
IElhcmcyLCBJYXJnMyksIHZhcmlhYmxlbmFtZXMpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0fSBhcmdzCisgICAgICog
QHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludGVydmFsc30KKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuYy5wcm90b3R5cGUuYXBwbHlBcmdzID0gZnVu
Y3Rpb24oY3R4LCBhcmdzLCB2YXJpYWJsZW5hbWVzKSB7CisgICAgICAgIHJldHVybiB0aGlzLmRv
QXBwbHkoY3R4LCBhcmdzLCB2YXJpYWJsZW5hbWVzKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlBhcmFtTmFtZXN9CisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmMucHJvdG90eXBlLmdldFBhcmFtTmFt
ZXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZG9HZXRQYXJhbU5hbWVzKCk7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkV4cHJCYXNlPn0gYXJncworICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuYy5wcm90b3R5cGUuZG9QcmludCA9
IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgLyoqIHR5cGV7c3RyaW5nfSAqLyB2YXIgb3MgPSB0
aGlzLmdldE5hbWUoKSArICcoJzsKKworICAgICAgICAvLyBUT0RPOiBmaXggdGhlIGdlbmVyaWNz
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgIGlmIChnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuaXNUeXBlVmFsaWQoYXJnc1tpXS50eXBl
bmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSAwKQorICAgICAgICAgICAgICAgICAg
ICBvcyArPSAnLCAnOworICAgICAgICAgICAgICAgIG9zICs9IGFyZ3NbaV07CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgb3MgKz0gJyknOworCisgICAgICAgIHJldHVybiBvczsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlBhcmFt
TmFtZXN9IGFyZ3MKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuYy5w
cm90b3R5cGUuZG9HZXRQYXJhbU5hbWVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlBhcmFtTmFtZXN9ICovIHZhciBuYW1lcyA9IG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0KCdhJywgJ2InLCAnYycsICdkJyk7Cisg
ICAgICAgIHJldHVybiBuYW1lczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfQorICAg
ICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZX0gU2lnIHRlbXBs
YXRlIDx0eXBlbmFtZSBTaWc+CisgICAgICoKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuUHJpbWl0aXZlRnVuYyA9IGZ1bmN0aW9uKFNpZykgeworICAgICAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRnVuYy5jYWxsKHRoaXMsIFNpZyk7CisgICAgICAgIHRoaXMuUmV0
ID0gU2lnLlJldDsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1p
dGl2ZUZ1bmMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRnVuYy5wcm90b3R5cGUpOworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRp
dmVGdW5jLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Q
cmltaXRpdmVGdW5jOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jfQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSB0eXBlbmFtZQorICAgICAqCisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkNvbmQgPSBmdW5jdGlvbih0eXBlbmFtZSkgeworICAgICAgICB2YXIgc2ln
ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUodHlwZW5hbWUsICdib29s
ZWFuJywgdHlwZW5hbWUsIHR5cGVuYW1lKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlByaW1pdGl2ZUZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgIH07CisKKyAgICBzZXRQYXJl
bnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uZCwgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlByaW1pdGl2ZUZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNv
bmQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdfY29u
ZCc7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25kLnByb3RvdHlw
ZS5kb1ByaW50ID0gZnVuY3Rpb24oYXJncykgeworICAgICAgICB2YXIgc3RyID0gJygnICsgYXJn
c1swXSArICcgPyAnICsgYXJnc1sxXSArICcgOiAnICsgYXJnc1syXSArICcpJzsKKyAgICAgICAg
cmV0dXJuIHN0cjsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbmQu
cHJvdG90eXBlLmRvQXBwbHkgPSBmdW5jdGlvbihjdHgsIGlhcmdzKSB7CisgICAgICAgIHZhciBy
ZXQ7CisgICAgICAgIGlmIChnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY29udGFpbnModGhpcy5T
aWcuQXJnMCwgaWFyZ3MuYSwgMSkpCisgICAgICAgICAgICByZXQgPSBpYXJncy5iOworICAgICAg
ICBpZiAoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNvbnRhaW5zKHRoaXMuU2lnLkFyZzAsIGlh
cmdzLmEsIDApKSB7CisgICAgICAgICAgICBpZiAocmV0KQorICAgICAgICAgICAgICAgIHJldCA9
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy51bmlvbih0aGlzLlNpZy5SZXQsIHJldCwgaWFyZ3Mu
Yyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0ID0gaWFyZ3MuYzsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocmV0KQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAg
ICAgcmV0dXJuIG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgpOworICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBJZiBtdWx0aXBsZUlucHV0cyBpcyBmYWxzZSwgR2VuVmVjIGR1cGxpY2F0ZXMgZmly
c3QgaW5wdXQgdG8gcHJvcGVyIHNpemUKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0
ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmN9CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBtdWx0aXBsZUlucHV0
cworICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5WZWMgPSBmdW5jdGlv
bihzaXplLCBtdWx0aXBsZUlucHV0cykgeworICAgICAgICB2YXIgdmVjTmFtZSA9IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5zaXplVG9OYW1lKHNpemUpOworICAgICAgICB2YXIgcCA9IFsKKyAg
ICAgICAgICAgIHNpemUgPj0gMSA/ICdmbG9hdCcgOiB1bmRlZmluZWQsCisgICAgICAgICAgICBz
aXplID49IDIgPyAnZmxvYXQnIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgc2l6ZSA+PSAzID8g
J2Zsb2F0JyA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIHNpemUgPj0gNCA/ICdmbG9hdCcgOiB1
bmRlZmluZWQKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuU2lnbmF0dXJlKHZlY05hbWUsIHBbMF0sIHBbMV0sIHBbMl0sIHBbM10pOwor
ICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuYy5jYWxsKHRoaXMs
IHNpZyk7CisgICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7CisgICAgICAgIHRoaXMudmVjTmFtZSA9
IHZlY05hbWU7CisgICAgICAgIHRoaXMubXVsdGlwbGVJbnB1dHMgPSBtdWx0aXBsZUlucHV0cyB8
fCBmYWxzZTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkdlblZlYywgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMpOwor
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlblZlYy5wcm90b3R5cGUuZ2V0TmFtZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy52ZWNOYW1lOworICAgIH07CisKKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuVmVjLnByb3RvdHlwZS5kb0FwcGx5ID0gZnVu
Y3Rpb24oY3R4LCBpYXJncykgeworICAgICAgICBpZiAodGhpcy5zaXplID09IDEpCisgICAgICAg
ICAgICByZXR1cm4gaWFyZ3MuYTsKKworICAgICAgICB2YXIgcmV0ID0gdGhpcy5tdWx0aXBsZUlu
cHV0cyA/CisgICAgICAgICAgICAgICAgICAgICAgICBbaWFyZ3MuYSwgaWFyZ3MuYiwgaWFyZ3Mu
YywgaWFyZ3MuZF0gOgorICAgICAgICAgICAgICAgICAgICAgICAgW2lhcmdzLmEsIGlhcmdzLmEs
IGlhcmdzLmEsIGlhcmdzLmFdOworCisgICAgICAgIHJldHVybiByZXQuc2xpY2UoMCwgdGhpcy5z
aXplKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jfQorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSByb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHMKKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuTWF0ID0gZnVuY3Rpb24ocm93cywgY29s
cykgeworICAgICAgICB2YXIgbmFtZSA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5kYXRhVHlw
ZU5hbWVPZk1hdHJpeCgnZmxvYXQnLCByb3dzLCBjb2xzKTsKKyAgICAgICAgdmFyIHZlY05hbWUg
PSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuc2l6ZVRvTmFtZShyb3dzKTsKKyAgICAgICAgdmFy
IHAgPSBbCisgICAgICAgICAgICBjb2xzID49IDEgPyB2ZWNOYW1lIDogdW5kZWZpbmVkLAorICAg
ICAgICAgICAgY29scyA+PSAyID8gdmVjTmFtZSA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGNv
bHMgPj0gMyA/IHZlY05hbWUgOiB1bmRlZmluZWQsCisgICAgICAgICAgICBjb2xzID49IDQgPyB2
ZWNOYW1lIDogdW5kZWZpbmVkCisgICAgICAgIF07CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZShuYW1lLCBwWzBdLCBwWzFdLCBwWzJdLCBw
WzNdKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMuY2Fs
bCh0aGlzLCBzaWcpOworICAgICAgICB0aGlzLnJvd3MgPSByb3dzOworICAgICAgICB0aGlzLmNv
bHMgPSBjb2xzOworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLnZlY05h
bWUgPSB2ZWNOYW1lOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuR2VuTWF0LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVu
Yyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuTWF0LnByb3RvdHlwZS5nZXRO
YW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfTsKKwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5NYXQucHJvdG90eXBlLmRvQXBwbHkgPSBm
dW5jdGlvbihjdHgsIGlhcmdzKSB7CisgICAgICAgIHZhciByZXQgPSBuZXcgdGN1TWF0cml4Lk1h
dHJpeCh0aGlzLnJvd3MsIHRoaXMuY29scyk7CisgICAgICAgIHZhciBpbnB1dHMgPSBbaWFyZ3Mu
YSwgaWFyZ3MuYiwgaWFyZ3MuYywgaWFyZ3MuZF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLnJvd3M7IGkrKykKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhp
cy5jb2xzOyBqKyspCisgICAgICAgICAgICAgICAgcmV0LnNldChpLCBqLCBpbnB1dHNbal1baV0p
OworICAgICAgICByZXR1cm4gcmV0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2
ZUZ1bmN9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lCisgICAgICoKKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29tcGFyZU9wZXJhdG9yID0gZnVuY3Rpb24o
dHlwZW5hbWUpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU2lnbmF0dXJlKCdib29sZWFuJywgdHlwZW5hbWUsIHR5cGVuYW1lKTsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAg
IH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29tcGFy
ZU9wZXJhdG9yLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuYyk7CisKKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29tcGFyZU9wZXJhdG9yLnByb3RvdHlwZS5kb1By
aW50ID0gZnVuY3Rpb24oYXJncykgeworICAgICAgICB2YXIgc3RyID0gJygnICsgYXJnc1swXSAr
IHRoaXMuZ2V0U3ltYm9sKCkgKyBhcmdzWzFdICsgJyknOworICAgICAgICByZXR1cm4gc3RyOwor
ICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29tcGFyZU9wZXJhdG9yLnBy
b3RvdHlwZS5kb0FwcGx5ID0gZnVuY3Rpb24oY3R4LCBpYXJncykgeworICAgICAgICB2YXIgYXJn
MCA9IGlhcmdzLmE7CisgICAgICAgIHZhciBhcmcxID0gaWFyZ3MuYjsKKworICAgICAgICB2YXIg
cmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisKKyAgICAgICAgaWYgKHRoaXMuY2Fu
U3VjY2VlZChhcmcwLCBhcmcxKSkKKyAgICAgICAgICAgIHJldCA9IG5ldyB0Y3VJbnRlcnZhbC5J
bnRlcnZhbCgxKTsKKyAgICAgICAgaWYgKHRoaXMuY2FuRmFpbChhcmcwLCBhcmcxKSkKKyAgICAg
ICAgICAgIHJldC5vcGVyYXRvck9yQXNzaWduQmluYXJ5KG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZh
bCgwKSk7CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
b21wYXJlT3BlcmF0b3IucHJvdG90eXBlLmdldFN5bWJvbCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0g
YXJnMAorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGFyZzEKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
b21wYXJlT3BlcmF0b3IucHJvdG90eXBlLmNhblN1Y2NlZWQgPSBmdW5jdGlvbihhcmcwLCBhcmcx
KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4gUGxlYXNlIG92
ZXJyaWRlLicpOworICAgIH07CisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5J
bnRlcnZhbH0gYXJnMAorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IGFyZzEK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5Db21wYXJlT3BlcmF0b3IucHJvdG90eXBlLmNhbkZhaWwgPSBmdW5jdGlvbihhcmcw
LCBhcmcxKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4gUGxl
YXNlIG92ZXJyaWRlLicpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IK
KyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBhcmVPcGVyYXRv
cn0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUKKyAgICAgKgorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5MZXNzVGhhbiA9IGZ1bmN0aW9uKHR5cGVuYW1lKSB7
CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db21wYXJlT3BlcmF0b3IuY2FsbCh0
aGlzLCB0eXBlbmFtZSk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5MZXNzVGhhbiwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBhcmVP
cGVyYXRvcik7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTGVzc1RoYW4ucHJvdG90
eXBlLmdldFN5bWJvbCA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJzwnOworICAgIH07
CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTGVzc1RoYW4ucHJvdG90eXBlLmNhblN1
Y2NlZWQgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgICAgcmV0dXJuIChhLmxvKCkgPCBiLmhpKCkp
OworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTGVzc1RoYW4ucHJvdG90
eXBlLmNhbkZhaWwgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgICAgIHJldHVybiAhKGEuaGkoKSA8
IGIubG8oKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuY30KKyAgICAg
KgorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMxID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNpZ25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlByaW1pdGl2ZUZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgIH07CisKKyAgICBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jLnByb3RvdHlwZSk7CisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzE7CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0fSBpYXJncworICAgICAq
IEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMxLnByb3RvdHlwZS5kb0FwcGx5ID0gZnVuY3Rpb24oY3R4
LCBpYXJncykgeworICAgICAgICB2YXIgYSA9IC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9ICovIChpYXJncy5hKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlNb25vdG9uZShjdHgs
IGEpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRl
cnZhbH0gaWFyZzAKKyAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAg
Ki8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMS5wcm90b3R5cGUuYXBw
bHlNb25vdG9uZSA9IGZ1bmN0aW9uKGN0eCwgaWFyZzApIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gdmFyIHJldCA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZh
bCgpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IHgKKyAgICAg
ICAgICogQHBhcmFtIHtudW1iZXI9fSB5CisgICAgICAgICAqIEByZXR1cm4ge3RjdUludGVydmFs
LkludGVydmFsfQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIGJvZHkgPSBmdW5jdGlvbih4LCB5
KSB7CisgICAgICAgICAgICB4ID0geCB8fCAwOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBw
bHlQb2ludChjdHgsIHgpOworICAgICAgICB9OworICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5h
cHBseU1vbm90b25lMShpYXJnMCwgYm9keS5iaW5kKHRoaXMpKTsKKworICAgICAgICByZXQub3Bl
cmF0b3JPckFzc2lnbkJpbmFyeSh0aGlzLmlubmVyRXh0cmVtYShjdHgsIGlhcmcwKSk7CisKKyAg
ICAgICAgcmV0Lm9wZXJhdG9yQW5kQXNzaWduQmluYXJ5KHRoaXMuZ2V0Q29kb21haW4oKS5vcGVy
YXRvck9yQmluYXJ5KG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChOYU4pKSk7CisKKyAgICAgICAg
cmV0dXJuIGN0eC5mb3JtYXQuY29udmVydChyZXQpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAg
ICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gaWFyZ3MKKyAgICAgKiBAcmV0dXJuIHt0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRmxvYXRGdW5jMS5wcm90b3R5cGUuaW5uZXJFeHRyZW1hID0gZnVuY3Rpb24oY3R4LCBpYXJn
cykgeworICAgICAgICByZXR1cm4gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7IC8vIGVtcHR5
IGludGVydmFsLCBpLmUuIG5vIGV4dHJlbWEKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9IGN0eAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBhcmcwCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9
CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEucHJvdG90
eXBlLmFwcGx5UG9pbnQgPSBmdW5jdGlvbihjdHgsIGFyZzApIHsKKyAgICAgICAgdmFyIGV4YWN0
ID0gdGhpcy5hcHBseUV4YWN0KGFyZzApOworICAgICAgICB2YXIgcHJlYyA9IHRoaXMucHJlY2lz
aW9uKGN0eCwgZXhhY3QsIGFyZzApOworCisgICAgICAgIHZhciBhID0gbmV3IHRjdUludGVydmFs
LkludGVydmFsKGV4YWN0KTsKKyAgICAgICAgdmFyIGIgPSB0Y3VJbnRlcnZhbC53aXRoTnVtYmVy
cygtcHJlYywgcHJlYyk7CisgICAgICAgIHJldHVybiB0Y3VJbnRlcnZhbC5JbnRlcnZhbC5vcGVy
YXRvclN1bShhLCBiKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHgKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkZsb2F0RnVuYzEucHJvdG90eXBlLmFwcGx5RXhhY3QgPSBmdW5jdGlvbih4KSB7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgZXJyb3IuIENhbm5vdCBhcHBseScp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZh
bH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMS5wcm90
b3R5cGUuZ2V0Q29kb21haW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRjdUludGVy
dmFsLnVuYm91bmRlZCh0cnVlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9IGN0eAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEucHJv
dG90eXBlLnByZWNpc2lvbiA9IGZ1bmN0aW9uKGN0eCwgeCwgeSkgeworICAgICAgICByZXR1cm4g
MDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMxfQorICAgICAqLworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5OZWdhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEuY2FsbCh0aGlzKTsKKyAgICB9OworCisg
ICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk5lZ2F0ZSwgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLk5lZ2F0ZS5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gJ19uZWdhdGUnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
TmVnYXRlLnByb3RvdHlwZS5kb1ByaW50ID0gZnVuY3Rpb24oYXJncykgeworICAgICAgICByZXR1
cm4gJy0nICsgYXJnc1swXTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
Lk5lZ2F0ZS5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rpb24oY3R4LCByZXQsIHgpIHsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfTsKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTmVn
YXRlLnByb3RvdHlwZS5hcHBseUV4YWN0ID0gZnVuY3Rpb24oeCkgeworICAgICAgICByZXR1cm4g
LXg7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMX0KKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW52ZXJzZVNxcnQgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzEuY2FsbCh0aGlzKTsKKyAgICB9
OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludmVyc2VT
cXJ0LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMSk7CisKKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuSW52ZXJzZVNxcnQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuICdpbnZlcnNlc3FydCc7CisgICAgfTsKKworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JbnZlcnNlU3FydC5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVu
Y3Rpb24oY3R4LCByZXQsIHgpIHsKKyAgICAgICAgaWYgKHggPD0gMCkKKyAgICAgICAgICAgIHJl
dHVybiBOYU47CisgICAgICAgIHJldHVybiBjdHguZm9ybWF0LnVscChyZXQsIDIuMCk7CisgICAg
fTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnZlcnNlU3FydC5wcm90b3R5cGUu
YXBwbHlFeGFjdCA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgcmV0dXJuIDEgLyBNYXRoLnNxcnQo
eCk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbnZlcnNlU3FydC5w
cm90b3R5cGUuZ2V0Q29kb21haW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRjdUlu
dGVydmFsLndpdGhOdW1iZXJzKDAsIEluZmluaXR5KTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5GbG9hdEZ1bmMxfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Sb3Vu
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRG
dW5jMS5jYWxsKHRoaXMpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuUm91bmQsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMx
KTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Sb3VuZC5wcm90b3R5cGUuZ2V0TmFt
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ3JvdW5kJzsKKyAgICB9OworCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlJvdW5kLnByb3RvdHlwZS5wcmVjaXNpb24gPSBmdW5j
dGlvbihjdHgsIHJldCwgeCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9OworCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlJvdW5kLnByb3RvdHlwZS5hcHBseVBvaW50ID0gZnVuY3Rp
b24oY3R4LCB4KSB7CisgICAgICAgIHZhciB0cnVuY2F0ZWQgPSBNYXRoLnRydW5jKHgpOworICAg
ICAgICB2YXIgZnJhY3QgPSB4IC0gdHJ1bmNhdGVkOworICAgICAgICB2YXIgcmV0ID0gbmV3IHRj
dUludGVydmFsLkludGVydmFsKCk7CisKKyAgICAgICAgLy8gV2hlbiB4IGlzIGluZiBvciAtaW5m
LCB0cnVuY2F0ZWQgd291bGQgYmUgaW5mIG9yIC1pbmYgdG9vLiBUaGVuIGZyYWN0CisgICAgICAg
IC8vIHdvdWxkIGJlIE5hTiAoaW5mIC0gaW5mKS4gV2hpbGUgaW4gbmF0aXZlIGMgY29kZSwgaXQg
d291bGQgYmUgMCAoaW5mKSBvciAtMCAoLWluZikuCisgICAgICAgIC8vIFRoaXMgYmVoYXZpb3Ig
aW4gSlMgZGlmZmVycyBmcm9tIHRoYXQgaW4gbmF0aXZlIGMgY29kZS4KKyAgICAgICAgaWYgKE1h
dGguYWJzKGZyYWN0KSA8PSAwLjUgfHwgaXNOYU4oZnJhY3QpKQorICAgICAgICAgICAgcmV0Lm9w
ZXJhdG9yT3JBc3NpZ25CaW5hcnkobmV3IHRjdUludGVydmFsLkludGVydmFsKHRydW5jYXRlZCkp
OworICAgICAgICBpZiAoTWF0aC5hYnMoZnJhY3QpID49IDAuNSkKKyAgICAgICAgICAgIHJldC5v
cGVyYXRvck9yQXNzaWduQmluYXJ5KG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCh0cnVuY2F0ZWQg
KyBkZU1hdGguZGVTaWduKGZyYWN0KSkpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMX0KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuRG91YmxlRnVuYzF9IGZ1bmMKKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzEgPSBmdW5jdGlvbihuYW1l
LCBmdW5jKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMxLmNh
bGwodGhpcyk7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fbmFtZSA9IG5h
bWU7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuRG91YmxlRnVuYzF9ICovdGhpcy5t
X2Z1bmMgPSBmdW5jOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zs
b2F0RnVuYzEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRmxvYXRGdW5jMS5wcm90b3R5cGUpOworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
RmxvYXRGdW5jMS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuQ0Zsb2F0RnVuYzE7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMxLnByb3RvdHlwZS5n
ZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbmFtZTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMx
LnByb3RvdHlwZS5hcHBseUV4YWN0ID0gZnVuY3Rpb24oeCkgeworICAgICAgICByZXR1cm4gdGhp
cy5tX2Z1bmMoeCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFByaW1pdGl2ZUZ1bmM8U2ln
bmF0dXJlPGZsb2F0LCBmbG9hdCwgZmxvYXQ+ID4KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmN9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzIgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJl
fSAqLyB2YXIgU2lnID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUoJ2Zs
b2F0JywgJ2Zsb2F0JywgJ2Zsb2F0Jyk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5QcmltaXRpdmVGdW5jLmNhbGwodGhpcywgU2lnKTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuYy5wcm90b3R5cGUpOworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMyOworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9IGN0eAorICAgICAqIEBw
YXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1cGxlNH0gaWFyZ3MKKyAgICAgKiBAcmV0
dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRmxvYXRGdW5jMi5wcm90b3R5cGUuZG9BcHBseSA9IGZ1bmN0aW9uKGN0eCwgaWFy
Z3MpIHsKKyAgICAgICAgdmFyIGEgPSAvKiogQHR5cGUge3RjdUludGVydmFsLkludGVydmFsfSAq
LyAoaWFyZ3MuYSk7CisgICAgICAgIHZhciBiID0gLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRl
cnZhbH0gKi8gKGlhcmdzLmIpOworICAgICAgICByZXR1cm4gdGhpcy5hcHBseU1vbm90b25lKGN0
eCwgYSwgYik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFs
LkludGVydmFsfSB4aQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IHlpCisg
ICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzIucHJvdG90eXBlLmFwcGx5TW9ub3RvbmUgPSBm
dW5jdGlvbihjdHgsIHhpLCB5aSkgeworICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFsLklu
dGVydmFsfSAqLyB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0geAorICAgICAgICAgKiBAcGFyYW0g
e251bWJlcj19IHkKKyAgICAgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9Cisg
ICAgICAgICAqLworICAgICAgICB2YXIgYm9keSA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAg
ICAgIHggPSB4IHx8IDA7CisgICAgICAgICAgICB5ID0geSB8fCAwOworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuYXBwbHlQb2ludChjdHgsIHgsIHkpOworICAgICAgICB9OworICAgICAgICByZXQg
PSB0Y3VJbnRlcnZhbC5hcHBseU1vbm90b25lMih4aSwgeWksIGJvZHkuYmluZCh0aGlzKSk7CisK
KyAgICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGhpcy5pbm5lckV4dHJlbWEoY3R4
LCB4aSwgeWkpKTsKKworICAgICAgICByZXQub3BlcmF0b3JBbmRBc3NpZ25CaW5hcnkodGhpcy5n
ZXRDb2RvbWFpbigpLm9wZXJhdG9yT3JCaW5hcnkobmV3IHRjdUludGVydmFsLkludGVydmFsKE5h
TikpKTsKKworICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC5jb252ZXJ0KHJldCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2YWxD
b250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkludGVydmFsfSB4aQorICAg
ICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IHlpCisgICAgICogQHJldHVybiB7dGN1
SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZsb2F0RnVuYzIucHJvdG90eXBlLmlubmVyRXh0cmVtYSA9IGZ1bmN0aW9uKGN0eCwgeGksIHlp
KSB7CisgICAgICAgIHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsgLy8gZW1wdHkg
aW50ZXJ2YWwsIGkuZS4gbm8gZXh0cmVtYQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICAqIEByZXR1cm4g
e3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5GbG9hdEZ1bmMyLnByb3RvdHlwZS5hcHBseVBvaW50ID0gZnVuY3Rpb24oY3R4LCB4LCB5
KSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXhhY3QgPSB0aGlzLmFwcGx5
RXhhY3QoeCwgeSk7CisgICAgICAgIHZhciBwcmVjID0gdGhpcy5wcmVjaXNpb24oY3R4LCBleGFj
dCwgeCwgeSk7CisKKyAgICAgICAgdmFyIGEgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZXhh
Y3QpOworICAgICAgICB2YXIgYiA9IHRjdUludGVydmFsLndpdGhOdW1iZXJzKC1wcmVjLCBwcmVj
KTsKKyAgICAgICAgcmV0dXJuIHRjdUludGVydmFsLkludGVydmFsLm9wZXJhdG9yU3VtKGEsIGIp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB5CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMyLnByb3RvdHlwZS5hcHBseUV4YWN0ID0g
ZnVuY3Rpb24oeCwgeSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rp
b24uIFBsZWFzZSBvdmVycmlkZScpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRmxvYXRGdW5jMi5wcm90b3R5cGUuZ2V0Q29kb21haW4gPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuIHRjdUludGVydmFsLnVuYm91bmRlZCh0cnVlKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9
IGN0eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMyLnByb3RvdHlwZS5w
cmVjaXNpb24gPSBmdW5jdGlvbihjdHgsIHJldCwgeCwgeSkgeworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZScpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkZsb2F0RnVuYzJ9CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcGFyYW0ge3RjdUludGVydmFsLkRvdWJsZUZ1bmMyfSBmdW5jCisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMyID0gZnVuY3Rpb24obmFtZSwgZnVu
YykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMi5jYWxsKHRo
aXMpOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX25hbWUgPSBuYW1lOwor
ICAgICAgICAvKiogQHR5cGUge3RjdUludGVydmFsLkRvdWJsZUZ1bmMyfSAqLyB0aGlzLm1fZnVu
YyA9IGZ1bmM7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DRmxvYXRG
dW5jMi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5G
bG9hdEZ1bmMyLnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9h
dEZ1bmMyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
RmxvYXRGdW5jMjsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzIucHJvdG90eXBlLmdldE5h
bWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9uYW1lOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB5CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5DRmxvYXRGdW5jMi5wcm90b3R5cGUuYXBwbHlFeGFjdCA9IGZ1bmN0aW9uKHgs
IHkpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9mdW5jKHgsIHkpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkZsb2F0RnVuYzJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkluZml4T3BlcmF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkZsb2F0RnVuYzIuY2FsbCh0aGlzKTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMi5wcm90b3R5cGUpOworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JbmZpeE9wZXJhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JbmZpeE9wZXJhdG9yOworCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5JbmZpeE9wZXJhdG9yLnByb3RvdHlwZS5nZXRTeW1ib2wgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzIuY2FsbCh0aGlzKTsKKyAgICAg
ICAgcmV0dXJuICcnOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHByQmFzZT59IGFyZ3MKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0
b3IucHJvdG90eXBlLmRvUHJpbnQgPSBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgIHJldHVybiAn
KCcgKyBhcmdzWzBdICsgJyAnICsgdGhpcy5nZXRTeW1ib2woKSArICcgJyArIGFyZ3NbMV0gKyAn
KSc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9
CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0b3IucHJv
dG90eXBlLmFwcGx5UG9pbnQgPSBmdW5jdGlvbihjdHgsIHgsIHkpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBleGFjdCA9IHRoaXMuYXBwbHlFeGFjdCh4LCB5KTsKKworICAg
ICAgICAvLyBBbGxvdyBlaXRoZXIgcmVwcmVzZW50YWJsZSBudW1iZXIgb24gYm90aCBzaWRlcyBv
ZiB0aGUgZXhhY3QgdmFsdWUsCisgICAgICAgIC8vIGJ1dCByZXF1aXJlIGV4YWN0bHkgcmVwcmVz
ZW50YWJsZSB2YWx1ZXMgdG8gYmUgcHJlc2VydmVkLgorICAgICAgICByZXR1cm4gY3R4LmZvcm1h
dC5yb3VuZE91dChuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoZXhhY3QpLCBpc0Zpbml0ZSh4KSAm
JiBpc0Zpbml0ZSh5KSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHoK
KyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkluZml4T3BlcmF0b3IucHJvdG90eXBlLnByZWNpc2lvbiA9IGZ1bmN0aW9uKGN0eCwg
eCwgeSwgeikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
U2lnbmF0dXJlPGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0PgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVu
Y30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5T
aWduYXR1cmV9ICovIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25h
dHVyZSgnZmxvYXQnLCAnZmxvYXQnLCAnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgIH07
CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMy5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jLnByb3Rv
dHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzMucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzM7CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4
dH0gY3R4CisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0fSBp
YXJncworICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMzLnByb3RvdHlwZS5kb0FwcGx5ID0g
ZnVuY3Rpb24oY3R4LCBpYXJncykgeworICAgICAgICB2YXIgYSA9IC8qKiBAdHlwZSB7dGN1SW50
ZXJ2YWwuSW50ZXJ2YWx9ICovIChpYXJncy5hKTsKKyAgICAgICAgdmFyIGIgPSAvKiogQHR5cGUg
e3RjdUludGVydmFsLkludGVydmFsfSAqLyAoaWFyZ3MuYik7CisgICAgICAgIHZhciBjID0gLyoq
IEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gKGlhcmdzLmMpOworICAgICAgICB2YXIg
cmV0VmFsID0gdGhpcy5hcHBseU1vbm90b25lKGN0eCwgYSwgYiwgYyk7CisgICAgICAgIHJldHVy
biByZXRWYWw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge3RjdUludGVydmFs
LkludGVydmFsfSB4aQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9IHlpCisg
ICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gemkKKyAgICAgKiBAcmV0dXJuIHt0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRmxvYXRGdW5jMy5wcm90b3R5cGUuYXBwbHlNb25vdG9uZSA9IGZ1bmN0aW9uKGN0eCwgeGks
IHlpLCB6aSkgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSB4Cisg
ICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0geQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19
IHoKKyAgICAgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICAgICAq
LworICAgICAgICB2YXIgYm9keSA9IGZ1bmN0aW9uKHgsIHksIHopIHsKKyAgICAgICAgICAgIHgg
PSB4IHx8IDA7CisgICAgICAgICAgICB5ID0geSB8fCAwOworICAgICAgICAgICAgeiA9IHogfHwg
MDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5UG9pbnQoY3R4LCB4LCB5LCB6KTsKKyAg
ICAgICAgfTsKKyAgICAgICAgdmFyIHJldCA9IHRjdUludGVydmFsLmFwcGx5TW9ub3RvbmUzKHhp
LCB5aSwgemksIGJvZHkuYmluZCh0aGlzKSk7CisgICAgICAgIHZhciByZXRWYWw7CisKKyAgICAg
ICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGhpcy5pbm5lckV4dHJlbWEoY3R4LCB4aSwg
eWksIHppKSk7CisKKyAgICAgICAgcmV0Lm9wZXJhdG9yQW5kQXNzaWduQmluYXJ5KHRoaXMuZ2V0
Q29kb21haW4oKS5vcGVyYXRvck9yQmluYXJ5KG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbChOYU4p
KSk7CisKKyAgICAgICAgcmV0VmFsID0gY3R4LmZvcm1hdC5jb252ZXJ0KHJldCk7CisgICAgICAg
IHJldHVybiByZXRWYWw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge3RjdUlu
dGVydmFsLkludGVydmFsfSB4aQorICAgICAqIEBwYXJhbSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9
IHlpCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gemkKKyAgICAgKiBAcmV0
dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRmxvYXRGdW5jMy5wcm90b3R5cGUuaW5uZXJFeHRyZW1hID0gZnVuY3Rpb24oY3R4
LCB4aSwgeWksIHppKSB7CisgICAgICAgIHJldHVybiBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwo
KTsgLy8gZW1wdHkgaW50ZXJ2YWwsIGkuZS4gbm8gZXh0cmVtYQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb2F0RnVuYzMucHJv
dG90eXBlLmFwcGx5UG9pbnQgPSBmdW5jdGlvbihjdHgsIHgsIHksIHopIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBleGFjdCA9IHRoaXMuYXBwbHlFeGFjdCh4LCB5LCB6KTsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwcmVjID0gdGhpcy5wcmVjaXNpb24o
Y3R4LCBleGFjdCwgeCwgeSwgeik7CisKKyAgICAgICAgdmFyIGEgPSBuZXcgdGN1SW50ZXJ2YWwu
SW50ZXJ2YWwoZXhhY3QpOworICAgICAgICB2YXIgYiA9IHRjdUludGVydmFsLndpdGhOdW1iZXJz
KC1wcmVjLCBwcmVjKTsKKyAgICAgICAgcmV0dXJuIHRjdUludGVydmFsLkludGVydmFsLm9wZXJh
dG9yU3VtKGEsIGIpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHoKKyAg
ICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkZsb2F0RnVuYzMucHJvdG90eXBlLmFwcGx5RXhhY3QgPSBmdW5jdGlvbih4LCB5LCB6KSB7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4gUGxlYXNlIG92ZXJy
aWRlJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkV2YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB6CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMzLnByb3RvdHlwZS5wcmVjaXNp
b24gPSBmdW5jdGlvbihjdHgsIHJlc3VsdCwgeCwgeSwgeikgeworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZScpOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMy5wcm90b3R5cGUuZ2V0Q29kb21h
aW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRjdUludGVydmFsLnVuYm91bmRlZCh0
cnVlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMzfQorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DbGFtcCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmxvYXRGdW5jMy5jYWxsKHRoaXMpOworICAgIH07CisK
KyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2xhbXAsIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMzKTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5DbGFtcC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gJ2NsYW1wJzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNs
YW1wLnByb3RvdHlwZS5hcHBseUV4YWN0ID0gZnVuY3Rpb24oeCwgbWluVmFsLCBtYXhWYWwpIHsK
KyAgICAgICAgdmFyIGRlYnVnID0gZmFsc2U7CisgICAgICAgIHZhciByZXRWYWw7CisKKyAgICAg
ICAgcmV0VmFsID0gZGVNYXRoLmNsYW1wKHgsIG1pblZhbCwgbWF4VmFsKTsKKyAgICAgICAgaWYg
KGRlYnVnKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygnPiBtaW5WYWw6ICcgKyBtaW5WYWwp
OworICAgICAgICAgICAgY29uc29sZS5sb2coJz4gbWF4VmFsOiAnICsgbWF4VmFsKTsKKyAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCc+IHg6ICcgKyB4KTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9n
KCc+IHJldDogJyArIHJldFZhbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldFZhbDsK
KworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2xhbXAucHJvdG90eXBl
LnByZWNpc2lvbiA9IGZ1bmN0aW9uKGN0eCwgcmVzdWx0LCB4LCBtaW5WYWwsIG1heFZhbCkgewor
ICAgICAgICB2YXIgZGVidWcgPSBmYWxzZTsKKyAgICAgICAgdmFyIHJldFZhbDsKKworICAgICAg
ICByZXRWYWwgPSBtaW5WYWwgPiBtYXhWYWwgPyBOYU4gOiAwOworCisgICAgICAgIGlmIChkZWJ1
ZykgeworICAgICAgICAgICAgY29uc29sZS5sb2coJ3ByZWNpc2lvbj4gbWluVmFsOiAnICsgbWlu
VmFsKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwcmVjaXNpb24+IG1heFZhbDogJyArIG1h
eFZhbCk7CisgICAgICAgICAgICBjb25zb2xlLmxvZygncHJlY2lzaW9uPiB4OiAnICsgeCk7Cisg
ICAgICAgICAgICBjb25zb2xlLmxvZygncHJlY2lzaW9uPiByZXQ6ICcgKyByZXRWYWwpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5JbmZpeE9wZXJhdG9yfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5B
ZGQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4
T3BlcmF0b3IuY2FsbCh0aGlzKTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkFkZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5JbmZpeE9wZXJhdG9yLnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkFkZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWRk
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5BZGQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuICdhZGQnOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFkZC5wcm90
b3R5cGUuZ2V0U3ltYm9sID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnKyc7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV2
YWxDb250ZXh0fSBjdHgKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5U
dXBsZTR9IGlhcmdzCisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFkZC5wcm90b3R5cGUuZG9BcHBseSA9
IGZ1bmN0aW9uKGN0eCwgaWFyZ3MpIHsKKyAgICAgICAgdmFyIGEgPSAvKiogQHR5cGUge3RjdUlu
dGVydmFsLkludGVydmFsfSAqLyAoaWFyZ3MuYSk7CisgICAgICAgIHZhciBiID0gLyoqIEB0eXBl
IHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8gKGlhcmdzLmIpOworICAgICAgICAvLyBGYXN0LXBh
dGggZm9yIGNvbW1vbiBjYXNlCisgICAgICAgIGlmIChpYXJncy5hLmlzT3JkaW5hcnkoKSAmJiBp
YXJncy5iLmlzT3JkaW5hcnkoKSkgeworICAgICAgICAgICAgLyoqIHR5cGV7dGN1SW50ZXJ2YWwu
SW50ZXJ2YWx9ICovIHZhciByZXQ7CisgICAgICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5zZXRJ
bnRlcnZhbEJvdW5kcygKKyAgICAgICAgICAgICAgICBmdW5jdGlvbihkdW1teSkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaWFyZ3MuYS5sbygpICsgaWFyZ3MuYi5sbygpOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oZHVtbXkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGlhcmdzLmEuaGkoKSArIGlhcmdzLmIuaGkoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBjdHguZm9ybWF0LmNvbnZlcnQoY3R4LmZv
cm1hdC5yb3VuZE91dChyZXQsIHRydWUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhp
cy5hcHBseU1vbm90b25lKGN0eCwgYSwgYik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFkZC5wcm90
b3R5cGUuYXBwbHlFeGFjdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgcmV0dXJuIHggKyB5
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0b3J9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1YiA9IGZ1bmN0aW9uKCkgeworICAgICAgICBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuSW5maXhPcGVyYXRvci5jYWxsKHRoaXMpOworICAgIH07CisK
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0b3IucHJvdG90eXBlKTsKKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWI7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1Yi5wcm90b3R5
cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ3N1Yic7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuU3ViLnByb3RvdHlwZS5nZXRTeW1ib2wgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuICctJzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHR9IGN0eAorICAgICAqIEBwYXJhbSB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1cGxlNH0gaWFyZ3MKKyAgICAgKiBAcmV0dXJuIHt0
Y3VJbnRlcnZhbC5JbnRlcnZhbH0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU3ViLnByb3RvdHlwZS5kb0FwcGx5ID0gZnVuY3Rpb24oY3R4LCBpYXJncykgeworICAgICAg
ICB2YXIgYSA9IC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9ICovIChpYXJncy5hKTsK
KyAgICAgICAgdmFyIGIgPSAvKiogQHR5cGUge3RjdUludGVydmFsLkludGVydmFsfSAqLyAoaWFy
Z3MuYik7CisgICAgICAgIHZhciByZXRWYWw7CisKKyAgICAgICAgLy8gRmFzdC1wYXRoIGZvciBj
b21tb24gY2FzZQorICAgICAgICBpZiAoaWFyZ3MuYS5pc09yZGluYXJ5KCkgJiYgaWFyZ3MuYi5p
c09yZGluYXJ5KCkpIHsKKyAgICAgICAgICAgIC8qKiB0eXBle3RjdUludGVydmFsLkludGVydmFs
fSAqLyB2YXIgcmV0OworICAgICAgICAgICAgcmV0ID0gdGN1SW50ZXJ2YWwuc2V0SW50ZXJ2YWxC
b3VuZHMoCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oZHVtbXkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGlhcmdzLmEubG8oKSAtIGlhcmdzLmIuaGkoKTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGR1bW15KSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpYXJncy5hLmhpKCkgLSBpYXJncy5iLmxvKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC5jb252ZXJ0KGN0eC5mb3JtYXQucm91
bmRPdXQocmV0LCB0cnVlKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0VmFsID0gdGhpcy5hcHBs
eU1vbm90b25lKGN0eCwgYSwgYik7CisgICAgICAgIHJldHVybiByZXRWYWw7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHkKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlN1Yi5wcm90b3R5cGUuYXBwbHlFeGFjdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAg
ICAgICAgcmV0dXJuIHggLSB5OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0
b3J9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11bCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW5maXhPcGVyYXRvci5jYWxs
KHRoaXMpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluZml4T3BlcmF0
b3IucHJvdG90eXBlKTsKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWw7CisKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLk11bC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gJ211bCc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsLnByb3RvdHlwZS5nZXRTeW1i
b2wgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICcqJzsKKyAgICB9OworCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLmlzTmVnYXRpdmUgPSBmdW5jdGlvbihuKSB7CisgICAgICAg
IHJldHVybiAoKG4gPSArbikgfHwgMSAvIG4pIDwgMDsKKyAgICB9OworCisgICAvKioKKyAgICAg
KiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0fSBpYXJncworICAgICAq
IEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5NdWwucHJvdG90eXBlLmRvQXBwbHkgPSBmdW5jdGlvbihjdHgsIGlhcmdz
KSB7CisgICAgICAgIHZhciBhID0gLyoqIEB0eXBlIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gKi8g
KGlhcmdzLmEpOworICAgICAgICB2YXIgYiA9IC8qKiBAdHlwZSB7dGN1SW50ZXJ2YWwuSW50ZXJ2
YWx9ICovIChpYXJncy5iKTsKKyAgICAgICAgLy8gRmFzdC1wYXRoIGZvciBjb21tb24gY2FzZQor
ICAgICAgICBpZiAoaWFyZ3MuYS5pc09yZGluYXJ5KCkgJiYgaWFyZ3MuYi5pc09yZGluYXJ5KCkp
IHsKKyAgICAgICAgICAgIC8qKiB0eXBle3RjdUludGVydmFsLkludGVydmFsfSAqLyB2YXIgcmV0
ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisgICAgICAgICAgICBpZiAoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLmlzTmVnYXRpdmUoYS5oaSgpKSkgeworICAgICAgICAgICAgICAgIGEg
PSBhLm9wZXJhdG9yTmVnYXRpdmUoKTsKKyAgICAgICAgICAgICAgICBiID0gYi5vcGVyYXRvck5l
Z2F0aXZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYS5sbygpID49IDAgJiYg
Yi5sbygpID49IDApIHsKKyAgICAgICAgICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5zZXRJbnRl
cnZhbEJvdW5kcygKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZHVtbXkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBpYXJncy5hLmxvKCkgKiBpYXJncy5iLmxvKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGR1bW15
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWFyZ3MuYS5oaSgpICogaWFyZ3Mu
Yi5oaSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y3R4LmZvcm1hdC5jb252ZXJ0KGN0eC5mb3JtYXQucm91bmRPdXQocmV0LCB0cnVlKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoYS5sbygpID49IDAgJiYgYi5oaSgpIDw9IDApIHsK
KyAgICAgICAgICAgICAgICByZXQgPSB0Y3VJbnRlcnZhbC5zZXRJbnRlcnZhbEJvdW5kcygKKyAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZHVtbXkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpYXJncy5hLmhpKCkgKiBpYXJncy5iLmxvKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGR1bW15KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaWFyZ3MuYS5sbygpICogaWFyZ3MuYi5oaSgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC5jb252
ZXJ0KGN0eC5mb3JtYXQucm91bmRPdXQocmV0LCB0cnVlKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5hcHBseU1vbm90b25lKGN0eCwgYSwgYik7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHkKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLk11bC5wcm90b3R5cGUuYXBwbHlFeGFjdCA9IGZ1bmN0aW9uKHgs
IHkpIHsKKyAgICAgICAgcmV0dXJuIHggKiB5OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICog
QHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0geGkKKyAgICAgKiBAcGFyYW0ge3RjdUludGVy
dmFsLkludGVydmFsfSB5aQorICAgICAqIEByZXR1cm4ge3RjdUludGVydmFsLkludGVydmFsfQor
ICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwucHJvdG90eXBlLmlubmVy
RXh0cmVtYSA9IGZ1bmN0aW9uKGN0eCwgeGksIHlpKSB7CisgICAgICAgIGlmICgoKHhpLmNvbnRh
aW5zKHRjdUludGVydmFsLk5FR0FUSVZFX0lORklOSVRZKSB8fCB4aS5jb250YWlucyh0Y3VJbnRl
cnZhbC5QT1NJVElWRV9JTkZJTklUWSkpICYmIHlpLmNvbnRhaW5zKHRjdUludGVydmFsLlpFUk8p
KSB8fAorICAgICAgICAgICAgKCh5aS5jb250YWlucyh0Y3VJbnRlcnZhbC5ORUdBVElWRV9JTkZJ
TklUWSkgfHwgeWkuY29udGFpbnModGN1SW50ZXJ2YWwuUE9TSVRJVkVfSU5GSU5JVFkpKSAmJiB4
aS5jb250YWlucyh0Y3VJbnRlcnZhbC5aRVJPKSkpCisgICAgICAgICAgICByZXR1cm4gbmV3IHRj
dUludGVydmFsLkludGVydmFsKE5hTik7CisKKyAgICAgICAgcmV0dXJuIG5ldyB0Y3VJbnRlcnZh
bC5JbnRlcnZhbCgpOyAvLyBlbXB0eSBpbnRlcnZhbCwgaS5lLiBubyBleHRyZW1hCisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuSW5maXhPcGVyYXRvcn0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGl2ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5JbmZpeE9wZXJhdG9yLmNhbGwodGhpcyk7CisgICAgfTsKKworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EaXYucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuSW5maXhPcGVyYXRvci5wcm90b3R5cGUpOworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EaXYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkRpdjsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGl2LnByb3RvdHlwZS5nZXROYW1l
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnZGl2JzsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5EaXYucHJvdG90eXBlLmdldFN5bWJvbCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gJy8nOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5FdmFsQ29udGV4dH0gY3R4CisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZh
bC5JbnRlcnZhbH0gbm9tCisgICAgICogQHBhcmFtIHt0Y3VJbnRlcnZhbC5JbnRlcnZhbH0gZGVu
CisgICAgICogQHJldHVybiB7dGN1SW50ZXJ2YWwuSW50ZXJ2YWx9CisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkRpdi5wcm90b3R5cGUuaW5uZXJFeHRyZW1hID0gZnVuY3Rp
b24oY3R4LCBub20sIGRlbikgeworICAgICAgICB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLklu
dGVydmFsKCk7CisgICAgICAgIGlmIChkZW4uY29udGFpbnModGN1SW50ZXJ2YWwuWkVSTykpIHsK
KyAgICAgICAgICAgIGlmIChub20uY29udGFpbnModGN1SW50ZXJ2YWwuWkVSTykpCisgICAgICAg
ICAgICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGN1SW50ZXJ2YWwuTkFOKTsKKyAg
ICAgICAgICAgIGlmIChub20ubG8oKSA8IDAgfHwgbm9tLmhpKCkgPiAwLjApCisgICAgICAgICAg
ICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGN1SW50ZXJ2YWwudW5ib3VuZGVkKCkp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkRpdi5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rpb24oY3R4
LCByZXQsIG5vbSwgZGVuKSB7CisgICAgICAgIHZhciBmbXQgPSBjdHguZm9ybWF0OworCisgICAg
ICAgIC8vIFx0b2RvIFsyMDE0LTAzLTA1IGxhdXJpXSBDaGVjayB0aGF0IHRoZSBsaW1pdHMgaW4g
R0xTTCAzLjEwIGFyZSBhY3R1YWxseSBjb3JyZWN0LgorICAgICAgICAvLyBGb3Igbm93LCB3ZSBh
c3N1bWUgdGhhdCBkaXZpc2lvbidzIHByZWNpc2lvbiBpcyAyLjUgVUxQIHdoZW4gdGhlIHZhbHVl
IGlzIHdpdGhpbgorICAgICAgICAvLyBbMl5NSU5FWFAsIDJeTUFYRVhQLTFdCisKKyAgICAgICAg
aWYgKGRlbiA9PT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOyAvLyBSZXN1bHQgbXVzdCBiZSBl
eGFjdGx5IGluZgorICAgICAgICBlbHNlIGlmIChkZU1hdGguZGVJbkJvdW5kczMyKE1hdGguYWJz
KGRlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguZGVMZEV4cCgxLCBm
bXQuZ2V0TWluRXhwKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLmRl
TGRFeHAoMSwgZm10LmdldE1heEV4cCgpIC0gMSkpKQorICAgICAgICAgICAgcmV0dXJuIGZtdC51
bHAocmV0LCAyLjUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7
IC8vIENhbiBiZSBhbnkgbnVtYmVyLCBidXQgbXVzdCBiZSBhIG51bWJlci4KKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
eQorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRGl2LnByb3RvdHlwZS5hcHBseUV4YWN0ID0gZnVuY3Rpb24oeCwgeSkgeworICAg
ICAgICByZXR1cm4geCAvIHk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5EaXYucHJvdG90eXBlLmFwcGx5UG9pbnQgPSBmdW5jdGlvbihjdHgsIHgsIHkpIHsKKyAgICAg
ICAgdmFyIHJldCA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9hdEZ1bmMyLnByb3RvdHlw
ZS5hcHBseVBvaW50LmNhbGwodGhpcywgY3R4LCB4LCB5KTsKKyAgICAgICAgaWYgKGlzRmluaXRl
KHgpICYmIGlzRmluaXRlKHkpICYmIHkgIT0gMCkgeworICAgICAgICAgICAgdmFyIGRzdCA9IGN0
eC5mb3JtYXQuY29udmVydChyZXQpOworICAgICAgICAgICAgaWYgKGRzdC5jb250YWlucyh0Y3VJ
bnRlcnZhbC5ORUdBVElWRV9JTkZJTklUWSkpIHsKKyAgICAgICAgICAgICAgICByZXQub3BlcmF0
b3JPckFzc2lnbkJpbmFyeSgtY3R4LmZvcm1hdC5nZXRNYXhWYWx1ZSgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChkc3QuY29udGFpbnModGN1SW50ZXJ2YWwuUE9TSVRJVkVfSU5G
SU5JVFkpKSB7CisgICAgICAgICAgICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkoK2N0
eC5mb3JtYXQuZ2V0TWF4VmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jfQor
ICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db21wV2lzZUZ1bmMgPSBmdW5j
dGlvbih0eXBlbmFtZSwgU2lnKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Q
cmltaXRpdmVGdW5jLmNhbGwodGhpcywgU2lnKTsKKyAgICAgICAgdGhpcy50eXBlbmFtZSA9IHR5
cGVuYW1lOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQ29tcFdpc2VGdW5jLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVu
Yyk7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBXaXNlRnVuYy5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kb0dldFNjYWxhckZ1bmMoKS5nZXROYW1l
KCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkV4cHJCYXNlPn0gYXJncworICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29tcFdpc2VGdW5jLnByb3RvdHlw
ZS5kb1ByaW50ID0gZnVuY3Rpb24oYXJncykgeworICAgICAgICByZXR1cm4gdGhpcy5kb0dldFNj
YWxhckZ1bmMoKS5wcmludChhcmdzKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVy
biB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmN9CisgICAgICovCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkNvbXBXaXNlRnVuYy5wcm90b3R5cGUuZG9HZXRTY2FsYXJGdW5jID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4g
UGxlYXNlIG92ZXJyaWRlLicpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBXaXNlRnVu
Y30KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b2xzCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBNYXRGdW5jQmFz
ZSA9IGZ1bmN0aW9uKHJvd3MsIGNvbHMpIHsKKyAgICAgICAgdmFyIG5hbWUgPSBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuZGF0YVR5cGVOYW1lT2ZNYXRyaXgoJ2Zsb2F0Jywgcm93cywgY29scyk7
CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db21wV2lzZUZ1bmMuY2FsbCh0aGlz
LCAnZmxvYXQnLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZShuYW1lLCBu
YW1lLCBuYW1lKSk7CisgICAgICAgIHRoaXMucm93cyA9IHJvd3M7CisgICAgICAgIHRoaXMuY29s
cyA9IGNvbHM7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5Db21wTWF0RnVuY0Jhc2UsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db21wV2lz
ZUZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBNYXRGdW5jQmFzZS5w
cm90b3R5cGUuZG9BcHBseSA9IGZ1bmN0aW9uKGN0eCwgaWFyZ3MpIHsKKyAgICAgICAgdmFyIHJl
dCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2xzKTsKKyAgICAgICAg
dmFyIGZ1biA9IHRoaXMuZG9HZXRTY2FsYXJGdW5jKCk7CisKKyAgICAgICAgZm9yICh2YXIgcm93
ID0gMDsgcm93IDwgdGhpcy5yb3dzOyArK3JvdykKKyAgICAgICAgICAgIGZvciAodmFyIGNvbCA9
IDA7IGNvbCA8IHRoaXMuY29sczsgKytjb2wpCisgICAgICAgICAgICAgICAgcmV0LnNldChyb3cs
IGNvbCwgZnVuLmFwcGx5RnVuY3Rpb24oY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpYXJncy5hLmdldChyb3csIGNvbCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhcmdzLmIuZ2V0KHJvdywg
Y29sKSkpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
Q29tcE1hdEZ1bmNCYXNlfQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3Omdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5GdW5jKX0gRgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dzCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvbHMKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQ29tcE1hdEZ1bmMgPSBmdW5jdGlvbihGLCByb3dzLCBjb2xzKSB7CisgICAgICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db21wTWF0RnVuY0Jhc2UuY2FsbCh0aGlzLCByb3dzLCBj
b2xzKTsKKyAgICAgICAgdGhpcy5tX2Z1bmN0aW9uID0gRjsKKyAgICB9OworCisgICAgc2V0UGFy
ZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBNYXRGdW5jLCBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuQ29tcE1hdEZ1bmNCYXNlKTsKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5Db21wTWF0RnVuYy5wcm90b3R5cGUuZG9HZXRTY2FsYXJGdW5jID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgdGhpcy5tX2Z1bmN0aW9uKCk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5TY2FsYXJNYXRyaXhDb21wTXVsdCA9IGZ1bmN0aW9uKCkgeworICAgICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwuY2FsbCh0aGlzKTsKKyAgICB9OworCisgICAgc2V0UGFy
ZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNjYWxhck1hdHJpeENvbXBNdWx0LCBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2NhbGFyTWF0
cml4Q29tcE11bHQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuICdtYXRyaXhDb21wTXVsdCc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXk8Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlPn0gYXJncworICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2Nh
bGFyTWF0cml4Q29tcE11bHQucHJvdG90eXBlLmRvUHJpbnQgPSBmdW5jdGlvbihhcmdzKSB7Cisg
ICAgICAgIHJldHVybiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuYy5wcm90b3R5cGUuZG9Q
cmludC5jYWxsKHRoaXMsIGFyZ3MpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbXBNYXRG
dW5jfQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGNvbHMKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWF0cml4Q29tcE11
bHQgPSBmdW5jdGlvbihyb3dzLCBjb2xzKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5Db21wTWF0RnVuYy5jYWxsKHRoaXMsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TY2Fs
YXJNYXRyaXhDb21wTXVsdCwgcm93cywgY29scyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENs
YXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhDb21wTXVsdCwgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkNvbXBNYXRGdW5jKTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVu
Y30KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b2xzCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk91dGVyUHJvZHVjdCA9
IGZ1bmN0aW9uKHJvd3MsIGNvbHMpIHsKKyAgICAgICAgdmFyIG5hbWUgPSBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuZGF0YVR5cGVOYW1lT2ZNYXRyaXgoJ2Zsb2F0Jywgcm93cywgY29scyk7Cisg
ICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZShu
YW1lLCAndmVjJyArIHJvd3MsICd2ZWMnICsgY29scyk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5QcmltaXRpdmVGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICAgICAgdGhpcy5y
b3dzID0gcm93czsKKyAgICAgICAgdGhpcy5jb2xzID0gY29sczsKKyAgICB9OworCisgICAgc2V0
UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk91dGVyUHJvZHVjdCwgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMpOworCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5PdXRl
clByb2R1Y3QucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
ICdvdXRlclByb2R1Y3QnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
T3V0ZXJQcm9kdWN0LnByb3RvdHlwZS5kb0FwcGx5ID0gZnVuY3Rpb24oY3R4LCBpYXJncykgewor
ICAgICAgICB2YXIgcmV0ID0gbmV3IHRjdU1hdHJpeC5NYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNv
bHMpOworICAgICAgICB2YXIgbXVsID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwo
KTsKKworICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7ICsrcm93KSB7
CisgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCB0aGlzLmNvbHM7ICsrY29sKQor
ICAgICAgICAgICAgICAgIHJldC5zZXQocm93LCBjb2wsIG11bC5hcHBseUZ1bmN0aW9uKGN0eCwg
aWFyZ3MuYVtyb3ddLCBpYXJncy5iW2NvbF0pKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biByZXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuY30KKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gcm93cworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2xzCisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYW5zcG9zZSA9IGZ1bmN0aW9uKHJvd3Ms
IGNvbHMpIHsKKyAgICAgICAgdmFyIG5hbWVSZXQgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
ZGF0YVR5cGVOYW1lT2ZNYXRyaXgoJ2Zsb2F0Jywgcm93cywgY29scyk7CisgICAgICAgIHZhciBu
YW1lUGFyYW0gPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuZGF0YVR5cGVOYW1lT2ZNYXRyaXgo
J2Zsb2F0JywgY29scywgcm93cyk7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlNpZ25hdHVyZShuYW1lUmV0LCBuYW1lUGFyYW0pOworICAgICAgICBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAg
ICAgIHRoaXMucm93cyA9IHJvd3M7CisgICAgICAgIHRoaXMuY29scyA9IGNvbHM7CisgICAgfTsK
KworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmFuc3Bvc2Us
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jKTsKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVHJhbnNwb3NlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiAndHJhbnNwb3NlJzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlRyYW5zcG9zZS5wcm90b3R5cGUuZG9BcHBseSA9IGZ1bmN0aW9uKGN0eCwgaWFyZ3MpIHsKKyAg
ICAgICAgdmFyIHJldCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2xz
KTsKKworICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7ICsrcm93KQor
ICAgICAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgdGhpcy5jb2xzOyArK2NvbCkKKyAg
ICAgICAgICAgICAgICByZXQuc2V0KHJvdywgY29sLCBpYXJncy5hLmdldChjb2wsIHJvdykpOwor
CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBwYXJhbSB7Kn0gSW4KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuSW5wdXRzID0gZnVuY3Rpb24oSW4pIHsKKyAgICAgICAgLy8gdmVjdG9yPHR5cGVu
YW1lIEluOjpJbjA+IGluMDsKKyAgICAgICAgLy8gdmVjdG9yPHR5cGVuYW1lIEluOjpJbjE+IGlu
MTsKKyAgICAgICAgLy8gdmVjdG9yPHR5cGVuYW1lIEluOjpJbjI+IGluMjsKKyAgICAgICAgLy8g
dmVjdG9yPHR5cGVuYW1lIEluOjpJbjM+IGluMzsKKyAgICAgICAgdGhpcy5pbjAgPSBbXTsKKyAg
ICAgICAgdGhpcy5pbjEgPSBbXTsKKyAgICAgICAgdGhpcy5pbjIgPSBbXTsKKyAgICAgICAgdGhp
cy5pbjMgPSBbXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0geyp9IE91dAorICAgICAqLwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5PdXRwdXRzID0gZnVuY3Rpb24oc2l6ZSwgT3V0
KSB7CisgICAgICAgIC8vIE91dHB1dHMgKHNpemVfdCBzaXplKSA6IG91dDAoc2l6ZSksIG91dDEo
c2l6ZSkge30KKyAgICAgICAgdGhpcy5vdXQwID0gW107CisgICAgICAgIHRoaXMub3V0MSA9IFtd
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0g
eyp9IEluCisgICAgICogQHBhcmFtIHsqfSBPdXQKKyAgICAgKi8KKyAgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlZhcmlhYmxlcyA9IGZ1bmN0aW9uKEluLCBPdXQpIHsKKyAgICAgICAgdGhp
cy5pbjAgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlKEluLkluMCk7Cisg
ICAgICAgIHRoaXMuaW4xID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZShJ
bi5JbjEpOworICAgICAgICB0aGlzLmluMiA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
VmFyaWFibGUoSW4uSW4yKTsKKyAgICAgICAgdGhpcy5pbjMgPSBuZXcgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlZhcmlhYmxlKEluLkluMyk7CisgICAgICAgIHRoaXMub3V0MCA9IG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUoT3V0Lk91dDApOworICAgICAgICB0aGlzLm91
dDEgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlKE91dC5PdXQxKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihuZXc6Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmMpfSBGCisgICAgICogQHJldHVy
biB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNzfQorICAgICAqLworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5tYWtlVmVjdG9yaXplZEZ1bmNzID0gZnVuY3Rpb24oRikgewor
ICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5GdW5jcygKKyAg
ICAgICAgICAgICAgICBuZXcgRigpLAorICAgICAgICAgICAgICAgIG5ldyBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuVmVjdG9yaXplZEZ1bmMobmV3IEYoKSwgMiksCisgICAgICAgICAgICAgICAg
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WZWN0b3JpemVkRnVuYyhuZXcgRigpLCAzKSwK
KyAgICAgICAgICAgICAgICBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZlY3Rvcml6ZWRG
dW5jKG5ldyBGKCksIDQpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHlwZW5hbWV9IHR5cGVu
YW1lCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nID0gZnVu
Y3Rpb24odHlwZW5hbWUpIHsKKyAgICAgICAgdGhpcy50eXBlbmFtZSA9IHR5cGVuYW1lOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5U
eXBlbmFtZX0gdHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IHNpemUKKyAgICAgKiBA
cmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmd9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nRmFjdG9yeSA9IGZ1bmN0aW9uKHR5cGVu
YW1lLCBzaXplKSB7CisgICAgICAgIGlmIChzaXplID4gMSkKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ1ZlY3Rvcih0eXBlbmFt
ZSwgc2l6ZSk7CisgICAgICAgIHN3aXRjaCAodHlwZW5hbWUpIHsKKyAgICAgICAgICAgIGNhc2Ug
J3ZlYzQnIDogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBs
aW5nVmVjdG9yKCdmbG9hdCcsIDQpOworICAgICAgICAgICAgY2FzZSAndmVjMycgOiByZXR1cm4g
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdWZWN0b3IoJ2Zsb2F0
JywgMyk7CisgICAgICAgICAgICBjYXNlICd2ZWMyJyA6IHJldHVybiBuZXcgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ1ZlY3RvcignZmxvYXQnLCAyKTsKKyAgICAgICAg
ICAgIGNhc2UgJ2Jvb2xlYW4nIDogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RGVmYXVsdFNhbXBsaW5nQm9vbCh0eXBlbmFtZSk7CisgICAgICAgICAgICBjYXNlICdmbG9hdCcg
OiByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdGbG9h
dCh0eXBlbmFtZSk7CisgICAgICAgICAgICBjYXNlICdtYXQyJzogcmV0dXJuIG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nTWF0cml4KCdmbG9hdCcsIDIsIDIpOwor
ICAgICAgICAgICAgY2FzZSAnbWF0MngzJzogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRGVmYXVsdFNhbXBsaW5nTWF0cml4KCdmbG9hdCcsIDMsIDIpOworICAgICAgICAgICAg
Y2FzZSAnbWF0Mng0JzogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVs
dFNhbXBsaW5nTWF0cml4KCdmbG9hdCcsIDQsIDIpOworICAgICAgICAgICAgY2FzZSAnbWF0M3gy
JzogcmV0dXJuIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nTWF0
cml4KCdmbG9hdCcsIDIsIDMpOworICAgICAgICAgICAgY2FzZSAnbWF0Myc6IHJldHVybiBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ01hdHJpeCgnZmxvYXQnLCAz
LCAzKTsKKyAgICAgICAgICAgIGNhc2UgJ21hdDN4NCc6IHJldHVybiBuZXcgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ01hdHJpeCgnZmxvYXQnLCA0LCAzKTsKKyAgICAg
ICAgICAgIGNhc2UgJ21hdDR4Mic6IHJldHVybiBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkRlZmF1bHRTYW1wbGluZ01hdHJpeCgnZmxvYXQnLCAyLCA0KTsKKyAgICAgICAgICAgIGNhc2Ug
J21hdDR4Myc6IHJldHVybiBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1w
bGluZ01hdHJpeCgnZmxvYXQnLCAzLCA0KTsKKyAgICAgICAgICAgIGNhc2UgJ21hdDQnOiByZXR1
cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdNYXRyaXgoJ2Zs
b2F0JywgNCwgNCk7CisgICAgICAgICAgICBjYXNlICdpbnQnIDogcmV0dXJuIG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nSW50KHR5cGVuYW1lKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2Ft
cGxpbmdWb2lkKHR5cGVuYW1lKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0
Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gZm10CisgICAgICogQHBhcmFtIHtBcnJheTwqPn0g
YXJyCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nLnByb3Rv
dHlwZS5nZW5GaXhlZHMgPSBmdW5jdGlvbihmbXQsIGFycikgeworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gZm10Cisg
ICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgICAgICog
QHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJhbmRvbQorICAgICAqIEByZXR1cm4geyp9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nLnByb3RvdHlwZS5nZW5S
YW5kb20gPSBmdW5jdGlvbihmbXQsIHByZWNpc2lvbiwgcmFuZG9tKSB7CisgICAgICAgIHJldHVy
biAwOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nLnByb3RvdHlwZS5nZXRXZWln
aHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuU2FtcGxpbmd9CisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
VHlwZW5hbWV9IHR5cGVuYW1lCisgICAgICovCisgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5EZWZhdWx0U2FtcGxpbmdWb2lkID0gZnVuY3Rpb24odHlwZW5hbWUpIHsKKyAgICAgICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TYW1wbGluZy5jYWxsKHRoaXMsIHR5cGVuYW1lKTsKKyAg
ICAgfTsKKworICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nVm9p
ZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TYW1w
bGluZy5wcm90b3R5cGUpOworICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNh
bXBsaW5nVm9pZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRGVmYXVsdFNhbXBsaW5nVm9pZDsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1Rmxv
YXRGb3JtYXQuRmxvYXRGb3JtYXR9IGZtdAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
ZHN0CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGlu
Z1ZvaWQucHJvdG90eXBlLmdlbkZpeGVkcyA9IGZ1bmN0aW9uKGZtdCwgZHN0KSB7CisgICAgICAg
IGRzdC5wdXNoKE5hTik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmd9CisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHlwZW5hbWV9IHR5cGVuYW1lCisg
ICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Jvb2wg
PSBmdW5jdGlvbih0eXBlbmFtZSkgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
U2FtcGxpbmcuY2FsbCh0aGlzLCB0eXBlbmFtZSk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdCb29sLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nLnByb3RvdHlwZSk7CisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Jvb2wucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Jvb2w7CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSBmbXQK
KyAgICAgKiBAcGFyYW0ge0FycmF5PEJvb2xlYW4+fSBkc3QKKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nQm9vbC5wcm90b3R5cGUuZ2VuRml4ZWRz
ID0gZnVuY3Rpb24oZm10LCBkc3QpIHsKKyAgICAgICAgZHN0LnB1c2godHJ1ZSk7CisgICAgICAg
IGRzdC5wdXNoKGZhbHNlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TYW1wbGluZ30KKyAg
ICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UeXBlbmFtZX0gdHlwZW5hbWUK
KyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nSW50
ID0gZnVuY3Rpb24odHlwZW5hbWUpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNhbXBsaW5nLmNhbGwodGhpcywgdHlwZW5hbWUpOworICAgIH07CisKKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nLnByb3RvdHlwZSk7CisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0ludC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nSW50OworCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0ludC5wcm90b3R5cGUu
Z2VuUmFuZG9tID0gZnVuY3Rpb24oZm10LCBwcmVjLCBybmQpIHsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBleHAgPSBybmQuZ2V0SW50KDAsIHRoaXMuZ2V0TnVtQml0cyhwcmVj
KSAtIDIpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNpZ24gPSBybmQuZ2V0
Qm9vbCgpID8gLTEgOiAxOworCisgICAgICAgIHJldHVybiBzaWduICogcm5kLmdldEludCgwLCAx
IDw8IGV4cCk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0
U2FtcGxpbmdJbnQucHJvdG90eXBlLmdlbkZpeGVkcyA9IGZ1bmN0aW9uKGZtdCwgZHN0KSB7Cisg
ICAgICAgIGRzdC5wdXNoKDApOworICAgICAgICBkc3QucHVzaCgtMSk7CisgICAgICAgIGRzdC5w
dXNoKDEpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNh
bXBsaW5nSW50LnByb3RvdHlwZS5nZXRXZWlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIDEuMDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHVTaGFkZXJVdGls
LnByZWNpc2lvbn0gcHJlYworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nSW50LnByb3RvdHlwZS5nZXRO
dW1CaXRzID0gZnVuY3Rpb24ocHJlYykgeworICAgICAgICBzd2l0Y2ggKHByZWMpIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6IHJldHVy
biA4OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
TUVESVVNUDogcmV0dXJuIDE2OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLnByZWNp
c2lvbi5QUkVDSVNJT05fSElHSFA6IHJldHVybiAzMjsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByZWNpc2lvbjogJyArIHBy
ZWMpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmd9CisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHlwZW5hbWV9IHR5cGVuYW1lCisg
ICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Zsb2F0
ID0gZnVuY3Rpb24odHlwZW5hbWUpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNhbXBsaW5nLmNhbGwodGhpcywgdHlwZW5hbWUpOworICAgIH07CisKKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nRmxvYXQucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmcucHJvdG90eXBlKTsKKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nRmxvYXQucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Zsb2F0
OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlZmF1bHRTYW1wbGluZ0Zsb2F0LnBy
b3RvdHlwZS5nZW5SYW5kb20gPSBmdW5jdGlvbihmb3JtYXQsIHByZWMsIHJuZCkgeworICAgICAg
ICAvKiogdHlwZXtudW1iZXJ9ICovIHZhciBtaW5FeHAgPSBmb3JtYXQuZ2V0TWluRXhwKCk7Cisg
ICAgICAgIC8qKiB0eXBle251bWJlcn0gKi8gdmFyIG1heEV4cCA9IGZvcm1hdC5nZXRNYXhFeHAo
KTsKKyAgICAgICAgLyoqIHR5cGV7Ym9vbGVhbn0gKi8gdmFyIGhhdmVTdWJub3JtYWwgPSBmb3Jt
YXQuaGFzU3Vibm9ybWFsKCkgIT0gdGN1RmxvYXRGb3JtYXQuWWVzTm9NYXliZS5OTzsKKworICAg
ICAgICAvLyBDaG9vc2UgZXhwb25lbnQgc28gdGhhdCB0aGUgY3VtdWxhdGl2ZSBkaXN0cmlidXRp
b24gaXMgY3ViaWMuCisgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHByb2JhYmlsaXR5IGRpc3Ry
aWJ1dGlvbiBxdWFkcmF0aWMsIHdpdGggdGhlIHBlYWsgY2VudGVyZWQgb24gemVyby4KKyAgICAg
ICAgLyoqIHR5cGV7bnVtYmVyfSAqLyB2YXIgbWluUm9vdCA9IGRlTWF0aC5kZUNicnQobWluRXhw
IC0gMC41IC0gKGhhdmVTdWJub3JtYWwgPyAxLjAgOiAwLjApKTsKKyAgICAgICAgLyoqIHR5cGV7
bnVtYmVyfSAqLyB2YXIgbWF4Um9vdCA9IGRlTWF0aC5kZUNicnQobWF4RXhwICsgMC41KTsKKyAg
ICAgICAgLyoqIHR5cGV7bnVtYmVyfSAqLyB2YXIgZnJhY3Rpb25CaXRzID0gZm9ybWF0LmdldEZy
YWN0aW9uQml0cygpOworICAgICAgICAvKiogdHlwZXtudW1iZXJ9ICovIHZhciBleHAgPSBkZU1h
dGgucmludChNYXRoLnBvdyhybmQuZ2V0RmxvYXQobWluUm9vdCwgbWF4Um9vdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My4wKSk7CisgICAgICAgIC8qKiB0eXBle251bWJlcn0gKi8gdmFyIGJhc2UgPSAwLjA7IC8vIGlu
dGVncmFsIHBvd2VyIG9mIHR3bworICAgICAgICAvKiogdHlwZXtudW1iZXJ9ICovIHZhciBxdWFu
dHVtID0gMC4wOyAvLyBzbWFsbGVzdCByZXByZXNlbnRhYmxlIGRpZmZlcmVuY2UgaW4gdGhlIGJp
bmFkZQorICAgICAgICAvKiogdHlwZXtudW1iZXJ9ICovIHZhciBzaWduaWZpY2FuZCA9IDAuMDsg
Ly8gU2lnbmlmaWNhbmQuCisKKyAgICAgICAgLy8gREVfQVNTRVJUKGZyYWN0aW9uQml0cyA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpkaWdpdHMpOworCisgICAgICAgIC8vIEdlbmVyYXRl
IHNvbWUgb2NjYXNpb25hbCBzcGVjaWFsIG51bWJlcnMKKyAgICAgICAgc3dpdGNoIChybmQuZ2V0
SW50KDAsIDY0KSkgeworICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gMDsKKyAgICAgICAgICAg
IGNhc2UgMTogcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGNh
c2UgMjogcmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGNhc2Ug
MzogcmV0dXJuIE5hTjsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGV4cCA+PSBtaW5FeHApIHsKKyAgICAgICAgICAgIC8vIE5vcm1hbCBudW1i
ZXIKKyAgICAgICAgICAgIGJhc2UgPSBkZU1hdGguZGVGbG9hdExkRXhwKDEuMCwgZXhwKTsKKyAg
ICAgICAgICAgIHF1YW50dW0gPSBkZU1hdGguZGVGbG9hdExkRXhwKDEuMCwgZXhwIC0gZnJhY3Rp
b25CaXRzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN1Ym5vcm1hbAorICAg
ICAgICAgICAgYmFzZSA9IDAuMDsKKyAgICAgICAgICAgIHF1YW50dW0gPSBkZU1hdGguZGVGbG9h
dExkRXhwKDEuMCwgbWluRXhwIC0gZnJhY3Rpb25CaXRzKTsKKyAgICAgICAgfQorCisgICAgICAg
IHN3aXRjaCAocm5kLmdldEludCgwLCAxNikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBoaWdoZXN0
IG51bWJlciBpbiB0aGlzIGJpbmFkZSwgc2lnbmlmaWNhbmQgaXMgYWxsIGJpdHMgb25lLgorICAg
ICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kID0gYmFzZSAtIHF1
YW50dW07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBTaWduaWZpY2Fu
ZCBpcyBvbmUuCisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc2lnbmlmaWNh
bmQgPSBxdWFudHVtOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gU2ln
bmlmaWNhbmQgaXMgemVyby4KKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBz
aWduaWZpY2FuZCA9IDAuMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8v
IFJhbmRvbSAoZXZlbmx5IGRpc3RyaWJ1dGVkKSBzaWduaWZpY2FuZC4KKyAgICAgICAgICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgICAgICAgICAvKiogdHlwZXtudW1iZXJ9ICovIHZhciBpbnRGcmFj
dGlvbiA9IHJuZC5nZXRJbnQoKSAmICgoMSA8PCBmcmFjdGlvbkJpdHMpIC0gMSk7CisgICAgICAg
ICAgICAgICAgc2lnbmlmaWNhbmQgPSBpbnRGcmFjdGlvbiAqIHF1YW50dW07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQcm9kdWNlIHBvc2l0aXZlIG51bWJlcnMgbW9y
ZSBvZnRlbiB0aGFuIG5lZ2F0aXZlLgorICAgICAgICByZXR1cm4gKHJuZC5nZXRJbnQoMCwgMykg
PT0gMCA/IC0xLjAgOiAxLjApICogKGJhc2UgKyBzaWduaWZpY2FuZCk7CisgICAgfTsKKworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdGbG9hdC5wcm90b3R5cGUu
Z2VuRml4ZWRzID0gZnVuY3Rpb24oZm9ybWF0LCBkc3QpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBtaW5FeHAgPSBmb3JtYXQuZ2V0TWluRXhwKCk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4RXhwID0gZm9ybWF0LmdldE1heEV4cCgpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZyYWN0aW9uQml0cyA9IGZvcm1hdC5nZXRGcmFj
dGlvbkJpdHMoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtaW5RdWFudHVt
ID0gZGVNYXRoLmRlRmxvYXRMZEV4cCgxLjAsIG1pbkV4cCAtIGZyYWN0aW9uQml0cyk7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWluTm9ybWFsaXplZCA9IGRlTWF0aC5kZUZs
b2F0TGRFeHAoMS4wLCBtaW5FeHApOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IG1heFF1YW50dW0gPSBkZU1hdGguZGVGbG9hdExkRXhwKDEuMCwgbWF4RXhwIC0gZnJhY3Rpb25C
aXRzKTsKKworICAgICAgICAvLyBJZiB1bml0IHRlc3RpbmcgaXMgZW5hYmxlZCwgaW5jbHVkZSBl
eGFjdCBudW1iZXJzCisgICAgICAgIGlmIChlbmFibGVVbml0dGVzdHMpIHsKKyAgICAgICAgICAg
IGRzdC5wdXNoKDAuMik7CisgICAgICAgICAgICBkc3QucHVzaCgwLjUpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gTmFOCisgICAgICAgIGRzdC5wdXNoKE5hTik7CisgICAgICAgIC8vIFplcm8K
KyAgICAgICAgZHN0LnB1c2goMC4wKTsKKworICAgICAgICBmb3IgKHZhciBzaWduID0gLTE7IHNp
Z24gPD0gMTsgc2lnbiArPSAyKSB7CisgICAgICAgICAgICAvLyBTbWFsbGVzdCBzdWJub3JtYWwK
KyAgICAgICAgICAgIGRzdC5wdXNoKHNpZ24gKiBtaW5RdWFudHVtKTsKKworICAgICAgICAgICAg
Ly8gTGFyZ2VzdCBzdWJub3JtYWwKKyAgICAgICAgICAgIGRzdC5wdXNoKHNpZ24gKiAobWluTm9y
bWFsaXplZCAtIG1pblF1YW50dW0pKTsKKworICAgICAgICAgICAgLy8gU21hbGxlc3Qgbm9ybWFs
aXplZAorICAgICAgICAgICAgZHN0LnB1c2goc2lnbiAqIG1pbk5vcm1hbGl6ZWQpOworCisgICAg
ICAgICAgICAvLyBOZXh0IHNtYWxsZXN0IG5vcm1hbGl6ZWQKKyAgICAgICAgICAgIGRzdC5wdXNo
KHNpZ24gKiAobWluTm9ybWFsaXplZCArIG1pblF1YW50dW0pKTsKKworICAgICAgICAgICAgZHN0
LnB1c2goc2lnbiAqIDAuNSk7CisgICAgICAgICAgICBkc3QucHVzaChzaWduICogMS4wKTsKKyAg
ICAgICAgICAgIGRzdC5wdXNoKHNpZ24gKiAyLjApOworCisgICAgICAgICAgICAvLyBMYXJnZXN0
IG51bWJlcgorICAgICAgICAgICAgZHN0LnB1c2goc2lnbiAqIChkZU1hdGguZGVGbG9hdExkRXhw
KDEuMCwgbWF4RXhwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlTWF0
aC5kZUZsb2F0TGRFeHAoMS4wLCBtYXhFeHApIC0gbWF4UXVhbnR1bSkpKTsKKworICAgICAgICAg
ICAgZHN0LnB1c2goc2lnbiAqIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMg
e2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TYW1wbGluZ30KKyAgICAgKiBAcGFyYW0ge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5UeXBlbmFtZX0gdHlwZW5hbWUKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gc2l6ZQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0
U2FtcGxpbmdWZWN0b3IgPSBmdW5jdGlvbih0eXBlbmFtZSwgc2l6ZSkgeworICAgICAgICBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmcuY2FsbCh0aGlzLCB0eXBlbmFtZSk7CisgICAg
ICAgIHRoaXMuc2l6ZSA9IHNpemU7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5EZWZhdWx0U2FtcGxpbmdWZWN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmcucHJvdG90eXBlKTsKKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nVmVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdWZWN0b3I7CisKKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nVmVjdG9yLnByb3RvdHlw
ZS5nZW5SYW5kb20gPSBmdW5jdGlvbihmbXQsIHByZWMsIHJuZCkgeworICAgICAgICAvKiogQHR5
cGUge0FycmF5PCo+fSAqLyB2YXIgcmV0ID0gW107CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgdGhpcy5zaXplOyArK25keCkKKyAgICAgICAgICAgIHJldFtuZHhdID0gZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nRmFjdG9yeSh0aGlzLnR5cGVuYW1lKS5nZW5SYW5k
b20oZm10LCBwcmVjLCBybmQpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdWZWN0b3IucHJvdG90eXBl
LmdlbkZpeGVkcyA9IGZ1bmN0aW9uKGZtdCwgZHN0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Kj59ICovIHZhciBzY2FsYXJzID0gW107CisKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlNhbXBsaW5nRmFjdG9yeSh0aGlzLnR5cGVuYW1lKS5nZW5GaXhlZHMoZm10LCBzY2Fs
YXJzKTsKKworICAgICAgICBmb3IgKHZhciBzY2FsYXJOZHggPSAwOyBzY2FsYXJOZHggPCBzY2Fs
YXJzLmxlbmd0aDsgKytzY2FsYXJOZHgpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IFtdOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemU7IGkrKykKKyAgICAgICAg
ICAgICAgICB2YWx1ZVtpXSA9IHNjYWxhcnNbc2NhbGFyTmR4XTsKKyAgICAgICAgICAgIGRzdC5w
dXNoKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRGVmYXVsdFNhbXBsaW5nVmVjdG9yLnByb3RvdHlwZS5nZXRXZWlnaHQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgucG93KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5T
YW1wbGluZ0ZhY3RvcnkodGhpcy50eXBlbmFtZSkuZ2V0V2VpZ2h0KCksIHRoaXMuc2l6ZSk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmd9CisgICAgICogQHBhcmFtIHtnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVHlwZW5hbWV9IHR5cGVuYW1lCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHJvd3MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29scworICAgICAqLworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdNYXRyaXggPSBmdW5jdGlvbih0eXBl
bmFtZSwgcm93cywgY29scykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2Ft
cGxpbmcuY2FsbCh0aGlzLCB0eXBlbmFtZSk7CisgICAgICAgIHRoaXMucm93cyA9IHJvd3M7Cisg
ICAgICAgIHRoaXMuY29scyA9IGNvbHM7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5EZWZhdWx0U2FtcGxpbmdNYXRyaXgucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmcucHJvdG90eXBlKTsKKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nTWF0cml4LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdNYXRyaXg7CisK
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVmYXVsdFNhbXBsaW5nTWF0cml4LnByb3Rv
dHlwZS5nZW5SYW5kb20gPSBmdW5jdGlvbihmbXQsIHByZWMsIHJuZCkgeworICAgICAgICAvKiog
QHR5cGUge3RjdU1hdHJpeC5NYXRyaXh9ICovIHZhciByZXQgPSBuZXcgdGN1TWF0cml4Lk1hdHJp
eCh0aGlzLnJvd3MsIHRoaXMuY29scyk7CisgICAgICAgIHZhciBzYW1wbGVyID0gZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlNhbXBsaW5nRmFjdG9yeSh0aGlzLnR5cGVuYW1lKTsKKworICAgICAg
ICBmb3IgKHZhciByb3dOZHggPSAwOyByb3dOZHggPCB0aGlzLnJvd3M7ICsrcm93TmR4KQorICAg
ICAgICAgICAgZm9yICh2YXIgY29sTmR4ID0gMDsgY29sTmR4IDwgdGhpcy5jb2xzOyArK2NvbE5k
eCkKKyAgICAgICAgICAgICAgICByZXQuc2V0KHJvd05keCwgY29sTmR4LCBzYW1wbGVyLmdlblJh
bmRvbShmbXQsIHByZWMsIHJuZCkpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdNYXRyaXgucHJvdG90
eXBlLmdlbkZpeGVkcyA9IGZ1bmN0aW9uKGZtdCwgZHN0KSB7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNjYWxhcnMgPSBbXTsKKworICAgICAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuU2FtcGxpbmdGYWN0b3J5KHRoaXMudHlwZW5hbWUpLmdlbkZpeGVkcyhm
bXQsIHNjYWxhcnMpOworCisgICAgICAgIGZvciAodmFyIHNjYWxhck5keCA9IDA7IHNjYWxhck5k
eCA8IHNjYWxhcnMubGVuZ3RoOyArK3NjYWxhck5keCkKKyAgICAgICAgICAgIGRzdC5wdXNoKG5l
dyB0Y3VNYXRyaXguTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2xzLCBzY2FsYXJzW3NjYWxhck5k
eF0pKTsKKworICAgICAgICBpZiAodGhpcy5jb2xzID09IHRoaXMucm93cykgeworICAgICAgICAg
ICAgdmFyIG1hdCA9IG5ldyB0Y3VNYXRyaXguTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2xzLCAw
KTsKKyAgICAgICAgICAgIHZhciB4ID0gMTsKKyAgICAgICAgICAgIG1hdC5zZXQoMCwgMCwgeCk7
CisgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLmNvbHM7ICsrbmR4KSB7
CisgICAgICAgICAgICAgICAgbWF0LnNldCh0aGlzLmNvbHMgLSAxIC0gbmR4LCBuZHgsIHgpOwor
ICAgICAgICAgICAgICAgIHggKj0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRzdC5w
dXNoKG1hdCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkRlZmF1bHRTYW1wbGluZ01hdHJpeC5wcm90b3R5cGUuZ2V0V2VpZ2h0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiBNYXRoLnBvdyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2Ft
cGxpbmdGYWN0b3J5KHRoaXMudHlwZW5hbWUpLmdldFdlaWdodCgpLCB0aGlzLnJvd3MgKiB0aGlz
LmNvbHMpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IHNpemUKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5JblR5cGVzfSBJbgorICAgICAqLworICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
U2FtcGxpbmdzID0gZnVuY3Rpb24oSW4sIHNpemUpIHsKKyAgICAgICAgdGhpcy5pbjAgPSBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmdGYWN0b3J5KEluLkluMCwgc2l6ZSk7CisgICAg
ICAgIHRoaXMuaW4xID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nRmFjdG9yeShJ
bi5JbjEsIHNpemUpOworICAgICAgICB0aGlzLmluMiA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5TYW1wbGluZ0ZhY3RvcnkoSW4uSW4yLCBzaXplKTsKKyAgICAgICAgdGhpcy5pbjMgPSBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU2FtcGxpbmdGYWN0b3J5KEluLkluMywgc2l6ZSk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLklu
VHlwZXN9IEluCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBzaXplCisgICAgICogQGNvbnN0cnVj
dG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TYW1wbGluZ3N9
CisgICAgICovCisgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxpbmdz
ID0gZnVuY3Rpb24oSW4sIHNpemUpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNhbXBsaW5ncy5jYWxsKHRoaXMsIEluLCBzaXplKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQor
ICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnRleHR9IGNvbnRleHQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHRl
bnNpb24KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzaW9uQ2Fz
ZSA9IGZ1bmN0aW9uKGNvbnRleHQsIG5hbWUsIGV4dGVuc2lvbikgeworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5tX2V4dGVuc2lvbiA9IGV4dGVuc2lvbiA9PT0gdW5kZWZpbmVk
ID8gJycgOiBleHRlbnNpb247CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkNvbnRleHR9ICovIHRoaXMubV9jdHggPSBjb250ZXh0OworICAgICAgICAvKiogQHR5
cGUgeyp9ICovIHRoaXMubV9zdGF0dXM7CisgICAgICAgIC8qKiBAdHlwZSB7ZGVSYW5kb20uUmFu
ZG9tfSAqLyB0aGlzLm1fcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbSgxMjM0KTsgLy8gICAgKDB4
ZGVhZGJlZWZ1ICsgY29udGV4dC50ZXN0Q29udGV4dC5nZXRDb21tYW5kTGluZSgpLmdldEJhc2VT
ZWVkKCkpCisgICAgICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZXh0
ZW5zaW9uKTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2lv
bkNhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90
b3R5cGUpOworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNpb25DYXNlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNpb25DYXNl
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9
CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2lvbkNhc2UucHJv
dG90eXBlLmdldEZvcm1hdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2N0
eC5mbG9hdEZvcm1hdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIG91dHB1
dCB2YWx1ZSBleHRyYWN0ZWQgZnJvbSBmbGF0IGFycmF5CisgICAgICogQHBhcmFtIHtnb29nLk51
bWJlckFycmF5fSBvdXRwdXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggb2Yg
dGhlIGVsZW1lbnQgdG8gZXh0cmFjdAorICAgICAqIEBwYXJhbSB7Kn0gcmVmZXJlbmNlIFJlZmVy
ZW5jZSBmb3IgdHlwZSBpbmZvcm1haW9uCisgICAgICogQHJldHVybiB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlZhbHVlfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5n
ZXRPdXRwdXQgPSBmdW5jdGlvbihvdXRwdXQsIGluZGV4LCByZWZlcmVuY2UpIHsKKyAgICAgICAg
aWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICB2YXIgcmV0ID0g
W107CisgICAgICAgICAgICB2YXIgc2l6ZSA9IHJlZmVyZW5jZS5sZW5ndGg7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICByZXRbaV0g
PSBvdXRwdXRbc2l6ZSAqIGluZGV4ICsgaV07CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAg
ICAgICB9CisgICAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiB0Y3VNYXRyaXguTWF0cml4
KSB7CisgICAgICAgICAgICB2YXIgcmV0ID0gbmV3IHRjdU1hdHJpeC5NYXRyaXgocmVmZXJlbmNl
LnJvd3MsIHJlZmVyZW5jZS5jb2xzKTsKKyAgICAgICAgICAgIHZhciBzaXplID0gcmVmZXJlbmNl
LnJvd3MgKiByZWZlcmVuY2UuY29sczsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVmZXJlbmNlLnJvd3M7IGkrKykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IHJlZmVyZW5jZS5jb2xzOyBqKyspCisgICAgICAgICAgICAgICAgICAgIHJldC5zZXQoaSwgaiwg
b3V0cHV0W3NpemUgKiBpbmRleCArIGogKiByZWZlcmVuY2Uucm93cyArIGldKTsKKyAgICAgICAg
ICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb3V0cHV0W2luZGV4
XTsKKyAgICB9OworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlZhcmlhYmxlc30gdmFyaWFibGVzIFZhcmlhYmxlczxJbiwgT3V0PgorICAgICAqIEBwYXJh
bSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLklucHV0c30gaW5wdXRzIElucHV0czxJbj4KKyAg
ICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdGF0ZW1lbnR9IHN0bXQKKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzaW9uQ2FzZS5wcm90b3R5
cGUudGVzdFN0YXRlbWVudCA9IGZ1bmN0aW9uKHZhcmlhYmxlcywgaW5wdXRzLCBzdG10KSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9ICovIHZhciBmbXQg
PSB0aGlzLmdldEZvcm1hdCgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGlu
Q291bnQgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMubnVtSW5wdXRzKHRoaXMuSW4pOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dENvdW50ID0gZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLm51bU91dHB1dHModGhpcy5PdXQpOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG51bVZhbHVlcyA9IChpbkNvdW50ID4gMCkgPyBpbnB1dHMuaW4wLmxlbmd0aCA6
IDE7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9ICovIHZh
ciBoaWdocEZtdCA9IHRoaXMubV9jdHguaGlnaHBGb3JtYXQ7CisgICAgICAgIHZhciBvdXRwdXRz
ID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4TXNncyA9IDEwMDsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1FcnJvcnMgPSAwOworICAgICAg
ICAvKiogQHR5cGUge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWN9ICovIHZhciBzcGVjID0g
bmV3IGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWMoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRW52aXJvbm1lbnR9ICovIHZhciBlbnYgPSBuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkVudmlyb25tZW50KCk7IC8vIEhvaXN0ZWQgb3V0IG9mIHRo
ZSBpbm5lciBsb29wIGZvciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgc3dpdGNoIChpbkNvdW50
KSB7CisgICAgICAgICAgICBjYXNlIDQ6IERFX0FTU0VSVChpbnB1dHMuaW4zLmxlbmd0aCA9PSBu
dW1WYWx1ZXMpOworICAgICAgICAgICAgY2FzZSAzOiBERV9BU1NFUlQoaW5wdXRzLmluMi5sZW5n
dGggPT0gbnVtVmFsdWVzKTsKKyAgICAgICAgICAgIGNhc2UgMjogREVfQVNTRVJUKGlucHV0cy5p
bjEubGVuZ3RoID09IG51bVZhbHVlcyk7CisgICAgICAgICAgICBjYXNlIDE6IERFX0FTU0VSVChp
bnB1dHMuaW4wLmxlbmd0aCA9PSBudW1WYWx1ZXMpOworICAgICAgICAgICAgZGVmYXVsdDogYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuYWJsZVVuaXR0ZXN0cykKKyAgICAgICAgICAg
IG51bVZhbHVlcyA9IDI7CisKKyAgICAgICAgLy8gVE9ETzogRml4IGxvZ2dpbmcKKyAgICAgICAg
Ly9QcmludCBvdXQgdGhlIHN0YXRlbWVudCBhbmQgaXRzIGRlZmluaXRpb25zCisgICAgICAgIC8v
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJTdGF0ZW1lbnQ6ICIgKyBzdG10KTsKKyAgICAgICAgLy8g
dmFyIGZ1bmNJbmZvID0gJycKKyAgICAgICAgLy8gdmFyIGZ1bmNzID0ge307CisgICAgICAgIC8v
IHN0bXQuZ2V0VXNlZEZ1bmNzKGZ1bmNzKTsKKyAgICAgICAgLy8gZm9yICh2YXIga2V5IGluIGZ1
bmNzKSB7CisgICAgICAgIC8vICAgICB2YXIgZnVuYyA9IGZ1bmNzW2tleV07CisgICAgICAgIC8v
ICAgICBmdW5jSW5mbyArPSBmdW5jLnByaW50RGVmaW5pdGlvbigpOworICAgICAgICAvLyB9Owor
ICAgICAgICAvLyBpZiAoZnVuY0luZm8ubGVuZ3RoID4gMCkKKyAgICAgICAgLy8gICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdSZWZlcmVuY2UgZGVmaW5pdGlvbnM6JyArIGZ1bmNJbmZvKTsKKwor
ICAgICAgICAvLyBJbml0aWFsaXplIFNoYWRlclNwZWMgZnJvbSBwcmVjaXNpb24sIHZhcmlhYmxl
cyBhbmQgc3RhdGVtZW50LgorCisgICAgICAgIHNwZWMuZ2xvYmFsRGVjbGFyYXRpb25zID0gJ3By
ZWNpc2lvbiAnICsgZ2x1U2hhZGVyVXRpbC5nZXRQcmVjaXNpb25OYW1lKHRoaXMubV9jdHgucHJl
Y2lzaW9uKSArICcgZmxvYXQ7XG4nOworCisgICAgICAgIGlmICh0aGlzLm1fZXh0ZW5zaW9uLmxl
bmd0aCA+IDApCisgICAgICAgICAgICBzcGVjLmdsb2JhbERlY2xhcmF0aW9ucyArPSAnI2V4dGVu
c2lvbiAnICsgdGhpcy5tX2V4dGVuc2lvbiArICcgOiByZXF1aXJlXG4nOworCisgICAgICAgIHNw
ZWMuaW5wdXRzID0gW107CisKKyAgICAgICAgc3dpdGNoIChpbkNvdW50KSB7CisgICAgICAgICAg
ICBjYXNlIDQ6IHNwZWMuaW5wdXRzWzNdID0gdGhpcy5tYWtlU3ltYm9sKHZhcmlhYmxlcy5pbjMp
OworICAgICAgICAgICAgY2FzZSAzOiBzcGVjLmlucHV0c1syXSA9IHRoaXMubWFrZVN5bWJvbCh2
YXJpYWJsZXMuaW4yKTsKKyAgICAgICAgICAgIGNhc2UgMjogc3BlYy5pbnB1dHNbMV0gPSB0aGlz
Lm1ha2VTeW1ib2wodmFyaWFibGVzLmluMSk7CisgICAgICAgICAgICBjYXNlIDE6IHNwZWMuaW5w
dXRzWzBdID0gdGhpcy5tYWtlU3ltYm9sKHZhcmlhYmxlcy5pbjApOworICAgICAgICAgICAgZGVm
YXVsdDogYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzcGVjLm91dHB1dHMgPSBbXTsKKwor
ICAgICAgICBzd2l0Y2ggKG91dENvdW50KSB7CisgICAgICAgICAgICBjYXNlIDI6IHNwZWMub3V0
cHV0c1sxXSA9IHRoaXMubWFrZVN5bWJvbCh2YXJpYWJsZXMub3V0MSk7CisgICAgICAgICAgICBj
YXNlIDE6IHNwZWMub3V0cHV0c1swXSA9IHRoaXMubWFrZVN5bWJvbCh2YXJpYWJsZXMub3V0MCk7
CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNwZWMu
c291cmNlID0gc3RtdDsKKworICAgICAgICBpZiAoZW5hYmxlVW5pdHRlc3RzID09IGZhbHNlKSB7
CisgICAgICAgICAgICAvLyBSdW4gdGhlIHNoYWRlciB3aXRoIGlucHV0cy4KKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7Z2xzU2hhZGVyRXhlY1V0aWwuU2hhZGVyRXhlY3V0b3J9ICovCisgICAgICAg
ICAgICB2YXIgZXhlY3V0b3IgPSBnbHNTaGFkZXJFeGVjVXRpbC5jcmVhdGVFeGVjdXRvcih0aGlz
Lm1fY3R4LnNoYWRlclR5cGUsIHNwZWMpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTwq
Pn0gKi8gdmFyIGlucHV0QXJyID0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgIHRjdU1hdHJp
eFV0aWwuZmxhdHRlbihpbnB1dHMuaW4wKSwgdGN1TWF0cml4VXRpbC5mbGF0dGVuKGlucHV0cy5p
bjEpLCB0Y3VNYXRyaXhVdGlsLmZsYXR0ZW4oaW5wdXRzLmluMiksIHRjdU1hdHJpeFV0aWwuZmxh
dHRlbihpbnB1dHMuaW4zKQorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgLy8gZXhlY3V0
b3IubG9nKGxvZygpKTsKKyAgICAgICAgICAgIGlmICghZXhlY3V0b3IuaXNPaygpKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoJ1NoYWRlciBjb21waWxhdGlvbiBmYWlsZWQnKTsKKworICAg
ICAgICAgICAgZXhlY3V0b3IudXNlUHJvZ3JhbSgpOworICAgICAgICAgICAgdmFyIG91dHB1dEFy
cmF5ID0gZXhlY3V0b3IuZXhlY3V0ZShudW1WYWx1ZXMsIGlucHV0QXJyKTsKKworICAgICAgICAg
ICAgc3dpdGNoIChvdXRDb3VudCkgeworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0c1sxXSA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jYXN0KHRo
aXMuT3V0Lk91dDEsIG91dHB1dEFycmF5WzFdKTsKKyAgICAgICAgICAgICAgICBjYXNlIDE6Cisg
ICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF0gPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
Y2FzdCh0aGlzLk91dC5PdXQwLCBvdXRwdXRBcnJheVswXSk7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDogYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJbml0
aWFsaXplIGVudmlyb25tZW50IHdpdGggZHVtbXkgdmFsdWVzIHNvIHdlIGRvbid0IG5lZWQgdG8g
YmluZCBpbiBpbm5lciBsb29wLgorCisgICAgICAgIHZhciBpbjAgPSBuZXcgdGN1SW50ZXJ2YWwu
SW50ZXJ2YWwoKTsKKyAgICAgICAgdmFyIGluMSA9IG5ldyB0Y3VJbnRlcnZhbC5JbnRlcnZhbCgp
OworICAgICAgICB2YXIgaW4yID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7CisgICAgICAg
IHZhciBpbjMgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICAgICAgdmFyIHJlZmVy
ZW5jZTAgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKyAgICAgICAgdmFyIHJlZmVyZW5j
ZTEgPSBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoKTsKKworICAgICAgICBlbnYuYmluZCh2YXJp
YWJsZXMuaW4wLCBpbjApOworICAgICAgICBlbnYuYmluZCh2YXJpYWJsZXMuaW4xLCBpbjEpOwor
ICAgICAgICBlbnYuYmluZCh2YXJpYWJsZXMuaW4yLCBpbjIpOworICAgICAgICBlbnYuYmluZCh2
YXJpYWJsZXMuaW4zLCBpbjMpOworICAgICAgICBlbnYuYmluZCh2YXJpYWJsZXMub3V0MCwgcmVm
ZXJlbmNlMCk7CisgICAgICAgIGVudi5iaW5kKHZhcmlhYmxlcy5vdXQxLCByZWZlcmVuY2UxKTsK
KworICAgICAgICAvLyBGb3IgZWFjaCBpbnB1dCB0dXBsZSwgY29tcHV0ZSBvdXRwdXQgcmVmZXJl
bmNlIGludGVydmFsIGFuZCBjb21wYXJlCisgICAgICAgIC8vIHNoYWRlciBvdXRwdXQgdG8gdGhl
IHJlZmVyZW5jZS4KKyAgICAgICAgZm9yICh2YXIgdmFsdWVOZHggPSAwOyB2YWx1ZU5keCA8IG51
bVZhbHVlczsgdmFsdWVOZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LyB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciB2YWx1ZTAsIHZhbHVlMTsKKyAg
ICAgICAgICAgIHZhciBtc2cgPSAnJzsKKworICAgICAgICAgICAgdmFyIGluMF8gPSBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuY29udmVydCh0aGlzLkFyZzAsIGZtdCwgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLnJvdW5kKHRoaXMuQXJnMCwgZm10LCBpbnB1dHMuaW4wW3ZhbHVlTmR4XSkpOwor
ICAgICAgICAgICAgdmFyIGluMV8gPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY29udmVydCh0
aGlzLkFyZzEsIGZtdCwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLnJvdW5kKHRoaXMuQXJnMSwg
Zm10LCBpbnB1dHMuaW4xW3ZhbHVlTmR4XSkpOworICAgICAgICAgICAgdmFyIGluMl8gPSBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuY29udmVydCh0aGlzLkFyZzIsIGZtdCwgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLnJvdW5kKHRoaXMuQXJnMiwgZm10LCBpbnB1dHMuaW4yW3ZhbHVlTmR4XSkp
OworICAgICAgICAgICAgdmFyIGluM18gPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY29udmVy
dCh0aGlzLkFyZzMsIGZtdCwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLnJvdW5kKHRoaXMuQXJn
MywgZm10LCBpbnB1dHMuaW4zW3ZhbHVlTmR4XSkpOworCisgICAgICAgICAgICBlbnYuYmluZCh2
YXJpYWJsZXMuaW4wLCBpbjBfKTsKKyAgICAgICAgICAgIGVudi5iaW5kKHZhcmlhYmxlcy5pbjEs
IGluMV8pOworICAgICAgICAgICAgZW52LmJpbmQodmFyaWFibGVzLmluMiwgaW4yXyk7CisgICAg
ICAgICAgICBlbnYuYmluZCh2YXJpYWJsZXMuaW4zLCBpbjNfKTsKKworICAgICAgICAgICAgc3Rt
dC5leGVjdXRlKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZhbENvbnRleHQoZm10LCB0
aGlzLm1fY3R4LnByZWNpc2lvbiwgZW52KSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAob3V0Q291
bnQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZTEgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY29udmVydCh0aGlzLk91dC5PdXQxLCBo
aWdocEZtdCwgZW52Lmxvb2t1cCh2YXJpYWJsZXMub3V0MSkpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZW5hYmxlVW5pdHRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVmZXJlbmNlQ29tcGFyaXNvbihyZWZlcmVuY2UxLCB2YWx1ZU5keCArIG91dENvdW50IC0gMSwg
dGhpcy5tX2N0eC5mbG9hdEZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmdl
dE91dHB1dChvdXRwdXRzWzFdLCB2YWx1ZU5keCwgcmVmZXJlbmNlMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jb250YWlucyh0aGlzLk91
dC5PdXQxLCByZWZlcmVuY2UxLCB2YWx1ZTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
c2cgPSAnU2hhZGVyIG91dHB1dCAxICgnICsgdmFsdWUxICsgJykgaXMgb3V0c2lkZSBhY2NlcHRh
YmxlIHJhbmdlOiAnICsgcmVmZXJlbmNlMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlMCA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jb252ZXJ0KHRoaXMuT3V0Lk91dDAs
IGhpZ2hwRm10LCBlbnYubG9va3VwKHZhcmlhYmxlcy5vdXQwKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChlbmFibGVVbml0dGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSByZWZlcmVuY2VDb21wYXJpc29uKHJlZmVyZW5jZTAsIHZhbHVlTmR4ICsgb3V0Q291bnQgLSAx
LCB0aGlzLm1fY3R4LmZsb2F0Rm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTAgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
Z2V0T3V0cHV0KG91dHB1dHNbMF0sIHZhbHVlTmR4LCByZWZlcmVuY2UwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNvbnRhaW5zKHRoaXMu
T3V0Lk91dDAsIHJlZmVyZW5jZTAsIHZhbHVlMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1zZyA9ICdTaGFkZXIgb3V0cHV0IDAgKCcgKyB2YWx1ZTAgKyAnKSBpcyBvdXRzaWRlIGFjY2Vw
dGFibGUgcmFuZ2U6ICcgKyByZWZlcmVuY2UwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgICsrbnVtRXJyb3Jz
OworCisgICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiBudW1FcnJvcnMgPD0gbWF4TXNncykgewor
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgYnVpbGRlciA9ICcnOwor
CisgICAgICAgICAgICAgICAgYnVpbGRlciArPSAocmVzdWx0ID8gJ1Bhc3NlZCcgOiAnRmFpbGVk
JykgKyAnXG4nICsgbXNnICsgJ1xuIHNhbXBsZTpcbicgKyB2YWx1ZU5keDsKKworICAgICAgICAg
ICAgICAgIGlmIChpbkNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyICs9
ICdcdCcgKyB2YXJpYWJsZXMuaW4wLmdldE5hbWUoKSArICcgPSAnICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnB1dHMuaW4wW3ZhbHVlTmR4XSArICdcbic7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGluQ291bnQgPiAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIgKz0gJ1x0JyArIHZhcmlhYmxlcy5pbjEuZ2V0TmFtZSgpICsgJyA9ICcg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0cy5pbjFbdmFsdWVOZHhdICsgJ1xu
JzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaW5Db3VudCA+IDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlciArPSAnXHQnICsgdmFyaWFibGVzLmluMi5n
ZXROYW1lKCkgKyAnID0gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzLmlu
Mlt2YWx1ZU5keF0gKyAnXG4nOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChpbkNvdW50ID4gMykgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyICs9ICdcdCcg
KyB2YXJpYWJsZXMuaW4zLmdldE5hbWUoKSArICcgPSAnICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dHMuaW4zW3ZhbHVlTmR4XSArICdcbic7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKGVuYWJsZVVuaXR0ZXN0cyA9PSBmYWxzZSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAob3V0Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyICs9ICdcdCcgKyB2YXJpYWJsZXMub3V0MC5nZXROYW1lKCkgKyAnID0gJyArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUwICsgJ1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdcdEV4cGVjdGVkIHJhbmdlOiAnICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlMCArICdcbic7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAob3V0Q291bnQgPiAxKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyICs9ICdcdCcgKyB2YXJpYWJsZXMub3V0MS5nZXROYW1lKCkg
KyAnID0gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUxICsgJ1xuJyArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdEV4cGVjdGVkIHJhbmdlOiAnICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlMSArICdcbic7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmZmVy
ZWRMb2dUb0NvbnNvbGUoYnVpbGRlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobnVtRXJyb3JzID4gbWF4TXNncykgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoJyhTa2lwcGVkICcgKyAobnVtRXJyb3JzIC0gbWF4TXNncykgKyAnIG1lc3NhZ2Vz
LiknKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChudW1FcnJvcnMgPT0gMCkgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgnQWxsICcgKyBudW1WYWx1ZXMgKyAnIGlucHV0cyBwYXNzZWQuJyk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCcnICsgbnVtRXJyb3Jz
ICsgJy8nICsgbnVtVmFsdWVzICsgJyBpbnB1dHMgZmFpbGVkLicpOworICAgICAgICB9CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZh
cmlhYmxlfSB2YXJpYWJsZSBWYXJpYWJsZTx0eXBlbmFtZT4KKyAgICAgKiBAcmV0dXJuIHtnbHNT
aGFkZXJFeGVjVXRpbC5TeW1ib2x9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlByZWNpc2lvbkNhc2UucHJvdG90eXBlLm1ha2VTeW1ib2wgPSBmdW5jdGlvbih2YXJpYWJs
ZSkgeworICAgICAgICB2YXIgdiA9IHZhcmlhYmxlOworICAgICAgICByZXR1cm4gbmV3IGdsc1No
YWRlckV4ZWNVdGlsLlN5bWJvbCh2LmdldE5hbWUoKSwgZ2x1VmFyVHlwZS5nZXRWYXJUeXBlT2Yo
di50eXBlbmFtZSwgdGhpcy5tX3NpemUsIHRoaXMubV9jdHgucHJlY2lzaW9uKSk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVHVwbGU0fQorICAgICAqIEBwYXJhbSB7Kn0gaW4wCisgICAgICog
QHBhcmFtIHsqfSBpbjEKKyAgICAgKiBAcGFyYW0geyp9IGluMgorICAgICAqIEBwYXJhbSB7Kn0g
aW4zCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluVHVwbGUgPSBmdW5j
dGlvbihpbjAsIGluMSwgaW4yLCBpbjMpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlR1cGxlNC5jYWxsKHRoaXMsIGluMCwgaW4xLCBpbjIsIGluMyk7CisgICAgfTsKKworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JblR1cGxlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1cGxlNC5wcm90b3R5cGUpOworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JblR1cGxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JblR1cGxlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHsq
fSBJbgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nc30g
c2FtcGxpbmdzIFNhbXBsaW5nczxJbj4KKyAgICAgKiBAcGFyYW0ge3RjdUZsb2F0Rm9ybWF0LkZs
b2F0Rm9ybWF0fSBmbG9hdEZvcm1hdAorICAgICAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5wcmVj
aXNpb259IGludFByZWNpc2lvbgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1TYW1wbGVzCisg
ICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAgICAqIEByZXR1cm4ge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5JbnB1dHN9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmdlbmVyYXRlSW5wdXRzID0gZnVuY3Rpb24oSW4sIHNhbXBsaW5ncywgZmxvYXRG
b3JtYXQsIGludFByZWNpc2lvbiwgbnVtU2FtcGxlcywgcm5kKSB7CisgICAgICAgIC8qSW5wdXRz
PEluPiovIHZhciByZXQgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLklucHV0cyhJbik7
CisgICAgICAgIC8qSW5wdXRzPEluPiovIHZhciBmaXhlZElucHV0cyA9IG5ldyBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuSW5wdXRzKEluKTsKKyAgICAgICAgLy8gc2V0PEluVHVwbGU8SW4+LCBJ
bnB1dExlc3M8SW5UdXBsZTxJbj4gPiA+IHNlZW5JbnB1dHM7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluVHVwbGUsZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLklucHV0TGVzcz59ICovCisgICAgICAgIHZhciBzZWVuSW5wdXRzID0gW107CisKKyAg
ICAgICAgc2FtcGxpbmdzLmluMC5nZW5GaXhlZHMoZmxvYXRGb3JtYXQsIGZpeGVkSW5wdXRzLmlu
MCk7CisgICAgICAgIHNhbXBsaW5ncy5pbjEuZ2VuRml4ZWRzKGZsb2F0Rm9ybWF0LCBmaXhlZElu
cHV0cy5pbjEpOworICAgICAgICBzYW1wbGluZ3MuaW4yLmdlbkZpeGVkcyhmbG9hdEZvcm1hdCwg
Zml4ZWRJbnB1dHMuaW4yKTsKKyAgICAgICAgc2FtcGxpbmdzLmluMy5nZW5GaXhlZHMoZmxvYXRG
b3JtYXQsIGZpeGVkSW5wdXRzLmluMyk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4MCA9IDA7IG5k
eDAgPCBmaXhlZElucHV0cy5pbjAubGVuZ3RoOyArK25keDApIHsKKyAgICAgICAgICAgIGZvciAo
dmFyIG5keDEgPSAwOyBuZHgxIDwgZml4ZWRJbnB1dHMuaW4xLmxlbmd0aDsgKytuZHgxKSB7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4MiA9IDA7IG5keDIgPCBmaXhlZElucHV0cy5pbjIu
bGVuZ3RoOyArK25keDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4MyA9IDA7
IG5keDMgPCBmaXhlZElucHV0cy5pbjMubGVuZ3RoOyArK25keDMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciB0dXBsZSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW5UdXBs
ZShmaXhlZElucHV0cy5pbjBbbmR4MF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpeGVkSW5wdXRzLmluMVtuZHgxXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRJbnB1dHMuaW4y
W25keDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXhlZElucHV0cy5pbjNbbmR4M10pOworCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWVuSW5wdXRzLnB1c2godHVwbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmluMC5w
dXNoKHR1cGxlLmEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmluMS5wdXNoKHR1cGxl
LmIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmluMi5wdXNoKHR1cGxlLmMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0LmluMy5wdXNoKHR1cGxlLmQpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtU2FtcGxlczsgKytuZHgpIHsKKyAg
ICAgICAgICAgIHZhciBpbjAgPSBzYW1wbGluZ3MuaW4wLmdlblJhbmRvbShmbG9hdEZvcm1hdCwg
aW50UHJlY2lzaW9uLCBybmQpOworICAgICAgICAgICAgdmFyIGluMSA9IHNhbXBsaW5ncy5pbjEu
Z2VuUmFuZG9tKGZsb2F0Rm9ybWF0LCBpbnRQcmVjaXNpb24sIHJuZCk7CisgICAgICAgICAgICB2
YXIgaW4yID0gc2FtcGxpbmdzLmluMi5nZW5SYW5kb20oZmxvYXRGb3JtYXQsIGludFByZWNpc2lv
biwgcm5kKTsKKyAgICAgICAgICAgIHZhciBpbjMgPSBzYW1wbGluZ3MuaW4zLmdlblJhbmRvbShm
bG9hdEZvcm1hdCwgaW50UHJlY2lzaW9uLCBybmQpOworICAgICAgICAgICAgdmFyIHR1cGxlID0g
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5JblR1cGxlKGluMCwgaW4xLCBpbjIsIGluMyk7
CisKKyAgICAgICAgICAgIC8vIGlmIChkZTo6Y29udGFpbnMoc2VlbklucHV0cywgdHVwbGUpKQor
ICAgICAgICAgICAgLy8gICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBzZWVuSW5wdXRzLnB1
c2godHVwbGUpOworICAgICAgICAgICAgcmV0LmluMC5wdXNoKGluMCk7CisgICAgICAgICAgICBy
ZXQuaW4xLnB1c2goaW4xKTsKKyAgICAgICAgICAgIHJldC5pbjIucHVzaChpbjIpOworICAgICAg
ICAgICAgcmV0LmluMy5wdXNoKGluMyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmV0
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2lvbkNhc2V9CisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5G
dW5jQmFzZX0gZnVuYworICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5j
Q2FzZUJhc2UgPSBmdW5jdGlvbihjb250ZXh0LCBuYW1lLCBmdW5jKSB7CisgICAgICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNpb25DYXNlLmNhbGwodGhpcywgY29udGV4dCwgbmFt
ZSwgZnVuYy5nZXRSZXF1aXJlZEV4dGVuc2lvbigpKTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkZ1bmNDYXNlQmFzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNpb25DYXNlLnByb3RvdHlwZSk7CisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNlQmFzZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VCYXNlOworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkZ1bmNDYXNlQmFzZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9u
KCkgeworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoISh0aGlzLm1fZXh0ZW5zaW9uICE9PSB1
bmRlZmluZWQgJiYgdGhpcy5tX2V4dGVuc2lvbi50cmltKCkgIT09ICcnKSAmJgorICAgICAgICAg
ICAgIXNnbHJHTENvbnRleHQuaXNFeHRlbnNpb25TdXBwb3J0ZWQoZ2wsIHRoaXMubV9leHRlbnNp
b24pLAorICAgICAgICAgICAgICAgICdVbnN1cHBvcnRlZCBleHRlbnNpb246ICcgKyB0aGlzLm1f
ZXh0ZW5zaW9uLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdGhpcy5ydW5UZXN0KCk7CisKKyAg
ICAgICAgLy8gbV9zdGF0dXMuc2V0VGVzdENvbnRleHRSZXN1bHQobV90ZXN0Q3R4KTsKKyAgICAg
ICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5GdW5jQ2FzZUJhc2V9CisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuQ29udGV4dH0gY29udGV4dAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY30gZnVuYworICAgICAq
LworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Jbk91dEZ1bmNDYXNlID0gZnVuY3Rpb24o
Y29udGV4dCwgbmFtZSwgZnVuYykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RnVuY0Nhc2VCYXNlLmNhbGwodGhpcywgY29udGV4dCwgbmFtZSwgZnVuYyk7CisgICAgICAgIHRo
aXMuU2lnID0gZnVuYy5TaWc7CisgICAgICAgIHRoaXMubV9mdW5jID0gZnVuYzsKKyAgICAgICAg
dGhpcy5SZXQgPSBmdW5jLlNpZy5SZXQ7CisgICAgICAgIHRoaXMuQXJnMCA9IGZ1bmMuU2lnLkFy
ZzA7CisgICAgICAgIHRoaXMuQXJnMSA9IGZ1bmMuU2lnLkFyZzE7CisgICAgICAgIHRoaXMuQXJn
MiA9IGZ1bmMuU2lnLkFyZzI7CisgICAgICAgIHRoaXMuQXJnMyA9IGZ1bmMuU2lnLkFyZzM7Cisg
ICAgICAgIHRoaXMuSW4gPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluVHlwZXModGhp
cy5BcmcwLCB0aGlzLkFyZzIsIHRoaXMuQXJnMyk7CisgICAgICAgIHRoaXMuT3V0ID0gbmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5PdXRUeXBlcyh0aGlzLlJldCwgdGhpcy5BcmcxKTsKKyAg
ICAgICAgdGhpcy5tX3NpemUgPSB0aGlzLm1fZnVuYy5tX3NpemU7CisgICAgfTsKKworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Jbk91dEZ1bmNDYXNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNlQmFzZS5wcm90b3R5cGUpOwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Jbk91dEZ1bmNDYXNlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Jbk91dEZ1bmNDYXNlOworCisgICAg
LyoqCisgICAgICogU2FtcGxpbmdzPEluPgorICAgICAqIEByZXR1cm4ge2dsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5TYW1wbGluZ3N9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkluT3V0RnVuY0Nhc2UucHJvdG90eXBlLmdldFNhbXBsaW5ncyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0U2FtcGxp
bmdzKHRoaXMuSW4sIHRoaXMubV9zaXplKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlfSBTaWdfCisgICAgICovCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkluT3V0RnVuY0Nhc2UucHJvdG90eXBlLnJ1blRl
c3QgPSBmdW5jdGlvbihTaWdfKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLklucHV0c30gKi8gdmFyIGlucHV0cyA9IChnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuZ2VuZXJhdGVJbnB1dHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5JbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNhbXBsaW5ncygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdHguZmxvYXRGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5tX2N0eC5wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX2N0eC5udW1SYW5kb21zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9ybmQpKTsKKworICAg
ICAgICB2YXIgdmFyaWFibGVzID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJs
ZXModGhpcy5JbiwgdGhpcy5PdXQpOworICAgICAgICAvLyBWYXJpYWJsZXM8SW4sIE91dD4gdmFy
aWFibGVzOworICAgICAgICAvLworICAgICAgICB2YXJpYWJsZXMub3V0MCA9IG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUodGhpcy5PdXQuT3V0MCwgJ291dDAnKTsKKyAgICAg
ICAgdmFyaWFibGVzLm91dDEgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxl
KHRoaXMuQXJnMSwgJ291dDEnKTsKKyAgICAgICAgdmFyaWFibGVzLmluMCA9IG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUodGhpcy5BcmcwLCAnaW4wJyk7CisgICAgICAgIHZh
cmlhYmxlcy5pbjEgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlKHRoaXMu
QXJnMiwgJ2luMScpOworICAgICAgICB2YXJpYWJsZXMuaW4yID0gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5WYXJpYWJsZSh0aGlzLkFyZzMsICdpbjInKTsKKyAgICAgICAgdmFyaWFibGVz
LmluMyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUoJ3ZvaWQnLCAnaW4z
Jyk7CisKKyAgICAgICAgdmFyIGV4cHIgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYXBwbHlW
YXIodGhpcy5tX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZXMuaW4wLCB2YXJpYWJsZXMub3V0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlcy5pbjEsIHZhcmlhYmxlcy5pbjIpOworICAgICAgICB2YXIg
c3RtdCA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy52YXJpYWJsZUFzc2lnbm1lbnQodmFyaWFi
bGVzLm91dDAsIGV4cHIpOworCisgICAgICAgIHRoaXMudGVzdFN0YXRlbWVudCh2YXJpYWJsZXMs
IGlucHV0cywgc3RtdCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VCYXNlfQor
ICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnRleHR9IGNvbnRleHQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkZ1bmN9IGZ1bmMKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRnVuY0Nhc2UgPSBmdW5jdGlvbihjb250ZXh0LCBuYW1lLCBmdW5jKSB7CisgICAgICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jQ2FzZUJhc2UuY2FsbCh0aGlzLCBjb250ZXh0
LCBuYW1lLCBmdW5jKTsKKyAgICAgICAgdGhpcy5TaWcgPSBmdW5jLlNpZzsKKyAgICAgICAgdGhp
cy5tX2Z1bmMgPSBmdW5jOworICAgICAgICB0aGlzLlJldCA9IGZ1bmMuU2lnLlJldDsKKyAgICAg
ICAgdGhpcy5BcmcwID0gZnVuYy5TaWcuQXJnMDsKKyAgICAgICAgdGhpcy5BcmcxID0gZnVuYy5T
aWcuQXJnMTsKKyAgICAgICAgdGhpcy5BcmcyID0gZnVuYy5TaWcuQXJnMjsKKyAgICAgICAgdGhp
cy5BcmczID0gZnVuYy5TaWcuQXJnMzsKKyAgICAgICAgdGhpcy5JbiA9IG5ldyBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuSW5UeXBlcyh0aGlzLkFyZzAsIHRoaXMuQXJnMSwgdGhpcy5BcmcyLCB0
aGlzLkFyZzMpOworICAgICAgICB0aGlzLk91dCA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuT3V0VHlwZXModGhpcy5SZXQpOworICAgICAgICB0aGlzLm1fc2l6ZSA9IHRoaXMubV9mdW5j
Lm1fc2l6ZTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmND
YXNlQmFzZS5wcm90b3R5cGUpOworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jQ2Fz
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nh
c2U7CisKKyAgICAvKioKKyAgICAgKiBTYW1wbGluZ3M8SW4+CisgICAgICogQHJldHVybiB7Z2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlNhbXBsaW5nc30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2UucHJvdG90eXBlLmdldFNhbXBsaW5ncyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZWZhdWx0
U2FtcGxpbmdzKHRoaXMuSW4sIHRoaXMubV9zaXplKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlfSBTaWdfCisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNlLnByb3RvdHlwZS5ydW5U
ZXN0ID0gZnVuY3Rpb24oU2lnXykgeworICAgICAgICAvKiogQHR5cGUge2dsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5JbnB1dHN9ICovIHZhciBpbnB1dHMgPSAoZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLmdlbmVyYXRlSW5wdXRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTYW1wbGluZ3MoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fY3R4LmZsb2F0Rm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMubV9jdHgucHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdHgubnVtUmFuZG9tcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcm5kKSk7CisKKyAg
ICAgICAgdmFyIHZhcmlhYmxlcyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFi
bGVzKHRoaXMuSW4sIHRoaXMuT3V0KTsKKyAgICAgICAgLy8gVmFyaWFibGVzPEluLCBPdXQ+IHZh
cmlhYmxlczsKKyAgICAgICAgLy8KKyAgICAgICAgdmFyaWFibGVzLm91dDAgPSBuZXcgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlKHRoaXMuUmV0LCAnb3V0MCcpOworICAgICAgICB2
YXJpYWJsZXMub3V0MSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUoJ3Zv
aWQnLCAnb3V0MScpOworICAgICAgICB2YXJpYWJsZXMuaW4wID0gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5WYXJpYWJsZSh0aGlzLkFyZzAsICdpbjAnKTsKKyAgICAgICAgdmFyaWFibGVz
LmluMSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUodGhpcy5BcmcxLCAn
aW4xJyk7CisgICAgICAgIHZhcmlhYmxlcy5pbjIgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlZhcmlhYmxlKHRoaXMuQXJnMiwgJ2luMicpOworICAgICAgICB2YXJpYWJsZXMuaW4zID0g
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZSh0aGlzLkFyZzMsICdpbjMnKTsK
KworICAgICAgICB2YXIgZXhwciA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hcHBseVZhcih0
aGlzLm1fZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
Ymxlcy5pbjAsIHZhcmlhYmxlcy5pbjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZXMuaW4yLCB2YXJpYWJsZXMuaW4zKTsKKyAgICAgICAgdmFyIHN0bXQg
PSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMudmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlcy5v
dXQwLCBleHByKTsKKworICAgICAgICB0aGlzLnRlc3RTdGF0ZW1lbnQodmFyaWFibGVzLCBpbnB1
dHMsIHN0bXQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5GdW5jfSBmdW5jCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuVmFyaWFibGV9IGFyZzAKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5WYXJpYWJsZX0gYXJnMQorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZhcmlhYmxlfSBhcmcyCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuVmFyaWFibGV9IGFyZzMKKyAgICAgKiBAcmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQXBwbHlWYXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFw
cGx5VmFyID0gZnVuY3Rpb24oZnVuYywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykgeworICAgICAg
ICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVZhcihmdW5jLlNpZywg
ZnVuYywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlfSB2YXJpYWJsZQorICAg
ICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5VmFyfSB2YWx1ZQorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEZWNsYXJhdGlvbgorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy52YXJpYWJsZVN0YXRlbWVudCA9IGZ1bmN0aW9uKHZhcmlhYmxlLCB2
YWx1ZSwgaXNEZWNsYXJhdGlvbikgeworICAgICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5WYXJpYWJsZVN0YXRlbWVudCh2YXJpYWJsZSwgdmFsdWUsIGlzRGVjbGFyYXRp
b24pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5WYXJpYWJsZX0gdmFyaWFibGUKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5BcHBseVZhcn0gdmFsdWUKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMudmFyaWFibGVBc3NpZ25tZW50ID0gZnVuY3Rpb24odmFyaWFibGUsIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMudmFyaWFibGVTdGF0ZW1l
bnQodmFyaWFibGUsIHZhbHVlLCBmYWxzZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFj
dG9yaWVzID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5
PGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeT59CisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3JpZXMucHJvdG90eXBlLmdldEZhY3Rvcmll
cyA9IGZ1bmN0aW9uKCkge307CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3JpZXN9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkJ1aWx0aW5GdW5jcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
YXNlRmFjdG9yeT59ICovIHRoaXMubV9mYWN0b3JpZXMgPSBbXTsKKyAgICB9OworCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkJ1aWx0aW5GdW5jcy5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yaWVzLnByb3RvdHlwZSk7Cisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkJ1aWx0aW5GdW5jcy5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQnVpbHRpbkZ1bmNzOworCisgICAgLyoq
CisgICAgICogQHJldHVybiB7QXJyYXk8Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0
b3J5Pn0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQnVpbHRpbkZ1bmNz
LnByb3RvdHlwZS5nZXRGYWN0b3JpZXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubV9mYWN0b3JpZXMuc2xpY2UoKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2FzZUZhY3Rvcnl9IGZhY3QKKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQnVpbHRpbkZ1bmNzLnByb3RvdHlwZS5hZGRGYWN0
b3J5ID0gZnVuY3Rpb24oZmFjdCkgeworICAgICAgICB0aGlzLm1fZmFjdG9yaWVzLnB1c2goZmFj
dCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkNvbnRleHR9IGNvbnRleHQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmN9IGZ1bmMKKyAgICAgKiBA
cmV0dXJuIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzaW9uQ2FzZX0KKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3JlYXRlRnVuY0Nhc2UgPSBmdW5jdGlvbihj
b250ZXh0LCBuYW1lLCBmdW5jKSB7CisgICAgICAgIHN3aXRjaCAoZnVuYy5nZXRPdXRQYXJhbUlu
ZGV4KCkpIHsKKyAgICAgICAgICAgIGNhc2UgLTE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2UoY29udGV4dCwgbmFtZSwgZnVuYyk7
CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuSW5PdXRGdW5jQ2FzZShjb250ZXh0LCBuYW1lLCBmdW5jKTsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCEnSW1w
b3NzaWJsZScpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeSA9
IGZ1bmN0aW9uKCkge307CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3J5LnByb3RvdHlwZS5n
ZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5DYXNlRmFjdG9yeS5wcm90b3R5cGUuZ2V0RGVzYyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gJyc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnRleHR9IGN0eAorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlQ2FzZSA9IGZ1bmN0
aW9uKGN0eCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBs
ZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeX0K
KyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfSBmdW5jCisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbXBsZUZ1bmNDYXNlRmFjdG9yeSA9
IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VG
YWN0b3J5LmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMubV9mdW5jID0gZnVuYzsKKyAgICB9Owor
CisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbXBsZUZ1bmND
YXNlRmFjdG9yeSwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3J5KTsKKworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaW1wbGVGdW5jQ2FzZUZhY3RvcnkucHJvdG90eXBl
LmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9mdW5jLmdldE5h
bWUoKS50b0xvd2VyQ2FzZSgpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU2ltcGxlRnVuY0Nhc2VGYWN0b3J5LnByb3RvdHlwZS5nZXREZXNjID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiAiRnVuY3Rpb24gJyIgKyB0aGlzLmdldE5hbWUoKSArICInIjsKKyAg
ICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbXBsZUZ1bmNDYXNlRmFjdG9y
eS5wcm90b3R5cGUuY3JlYXRlQ2FzZSA9IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICByZXR1cm4g
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNyZWF0ZUZ1bmNDYXNlKGN0eCwgY3R4Lm5hbWUsIHRo
aXMubV9mdW5jKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeX0KKyAgICAg
Ki8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VGYWN0b3J5ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeS5jYWxs
KHRoaXMpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRnVuY0Nhc2VGYWN0b3J5LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2FzZUZhY3Rv
cnkpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNlRmFjdG9yeS5wcm90
b3R5cGUuZ2V0RnVuYyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Zp
cnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNlRmFjdG9yeS5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nZXRGdW5jKCkuZ2V0TmFtZSgpLnRvTG93
ZXJDYXNlKCk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jQ2Fz
ZUZhY3RvcnkucHJvdG90eXBlLmdldERlc2MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
ICJGdW5jdGlvbiAnIiArIHRoaXMuZ2V0RnVuYygpLmdldE5hbWUoKSArICInIjsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5GdW5jQ2FzZUZhY3Rvcnl9CisgICAgICovCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlRlbXBsYXRlRnVuY0Nhc2VGYWN0b3J5ID0gZnVuY3Rpb24oZ2VuRikg
eworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VGYWN0b3J5LmNhbGwo
dGhpcyk7CisgICAgICAgIHRoaXMubV9nZW5GID0gZ2VuRjsKKyAgICB9OworCisgICAgc2V0UGFy
ZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRlbXBsYXRlRnVuY0Nhc2VGYWN0b3J5
LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VGYWN0b3J5KTsKKworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5UZW1wbGF0ZUZ1bmNDYXNlRmFjdG9yeS5wcm90b3R5cGUuZ2V0
RnVuYyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IHRoaXMubV9nZW5GKDEpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5Db250ZXh0fSBjdHgKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVGVt
cGxhdGVGdW5jQ2FzZUZhY3RvcnkucHJvdG90eXBlLmNyZWF0ZUNhc2UgPSBmdW5jdGlvbihjdHgp
IHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChjdHgubmFtZSwgY3R4
Lm5hbWUpOworICAgICAgICBncm91cC5hZGRDaGlsZChnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
Y3JlYXRlRnVuY0Nhc2UoY3R4LCAnc2NhbGFyJywgbmV3IHRoaXMubV9nZW5GKDEpKSk7CisgICAg
ICAgIGdyb3VwLmFkZENoaWxkKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcmVhdGVGdW5jQ2Fz
ZShjdHgsICd2ZWMyJywgbmV3IHRoaXMubV9nZW5GKDIpKSk7CisgICAgICAgIGdyb3VwLmFkZENo
aWxkKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcmVhdGVGdW5jQ2FzZShjdHgsICd2ZWMzJywg
bmV3IHRoaXMubV9nZW5GKDMpKSk7CisgICAgICAgIGdyb3VwLmFkZENoaWxkKGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5jcmVhdGVGdW5jQ2FzZShjdHgsICd2ZWM0JywgbmV3IHRoaXMubV9nZW5G
KDQpKSk7CisKKyAgICAgICAgcmV0dXJuIGdyb3VwOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZ1bmNDYXNlRmFjdG9yeX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
TWF0cml4RnVuY0Nhc2VGYWN0b3J5ID0gZnVuY3Rpb24oZ2VuRikgeworICAgICAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VGYWN0b3J5LmNhbGwodGhpcyk7CisgICAgICAgIHRo
aXMubV9nZW5GID0gZ2VuRjsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLk1hdHJpeEZ1bmNDYXNlRmFjdG9yeSwgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkZ1bmNDYXNlRmFjdG9yeSk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
TWF0cml4RnVuY0Nhc2VGYWN0b3J5LnByb3RvdHlwZS5nZXRGdW5jID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiBuZXcgdGhpcy5tX2dlbkYoMiwgMik7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnRleHR9IGN0eAorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhGdW5jQ2FzZUZhY3Rvcnku
cHJvdG90eXBlLmNyZWF0ZUNhc2UgPSBmdW5jdGlvbihjdHgpIHsKKyAgICAgICAgdmFyIGdyb3Vw
ID0gdGN1VGVzdENhc2UubmV3VGVzdChjdHgubmFtZSwgY3R4Lm5hbWUpOworICAgICAgICB0aGlz
LmFkZENhc2UoY3R4LCBncm91cCwgMiwgMik7CisgICAgICAgIHRoaXMuYWRkQ2FzZShjdHgsIGdy
b3VwLCAzLCAyKTsKKyAgICAgICAgdGhpcy5hZGRDYXNlKGN0eCwgZ3JvdXAsIDQsIDIpOworICAg
ICAgICB0aGlzLmFkZENhc2UoY3R4LCBncm91cCwgMiwgMyk7CisgICAgICAgIHRoaXMuYWRkQ2Fz
ZShjdHgsIGdyb3VwLCAzLCAzKTsKKyAgICAgICAgdGhpcy5hZGRDYXNlKGN0eCwgZ3JvdXAsIDQs
IDMpOworICAgICAgICB0aGlzLmFkZENhc2UoY3R4LCBncm91cCwgMiwgNCk7CisgICAgICAgIHRo
aXMuYWRkQ2FzZShjdHgsIGdyb3VwLCAzLCA0KTsKKyAgICAgICAgdGhpcy5hZGRDYXNlKGN0eCwg
Z3JvdXAsIDQsIDQpOworCisgICAgICAgIHJldHVybiBncm91cDsKKyAgICB9OworCisgICAvKioK
KyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db250ZXh0fSBjdHgKKyAg
ICAgKiBAcGFyYW0ge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSBncm91cAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSByb3dzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHMKKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWF0cml4RnVuY0Nhc2VGYWN0b3J5LnByb3RvdHlwZS5h
ZGRDYXNlID0gZnVuY3Rpb24oY3R4LCBncm91cCwgcm93cywgY29scykgeworICAgICAgICB2YXIg
bmFtZSA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5kYXRhVHlwZU5hbWVPZk1hdHJpeCgnZmxv
YXQnLCByb3dzLCBjb2xzKTsKKyAgICAgICAgZ3JvdXAuYWRkQ2hpbGQoZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmNyZWF0ZUZ1bmNDYXNlKGN0eCwgbmFtZSwgbmV3IHRoaXMubV9nZW5GKHJvd3Ms
IGNvbHMpKSk7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5kYXRhVHlw
ZU5hbWVPZk1hdHJpeCA9IGZ1bmN0aW9uKHR5cGVuYW1lLCByb3dzLCBjb2xzKSB7CisgICAgICAg
IHN3aXRjaCAodHlwZW5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzoKKyAgICAgICAg
ICAgICAgICBpZiAocm93cyA9PT0gY29scykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdt
YXQnICsgcm93czsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAnbWF0JyArIGNvbHMgKyAneCcgKyByb3dzOworICAgICAgICB9CisgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMgKCcgKyB0eXBlbmFtZSArICcsICcgKyByb3dz
ICsgJywgJyArIGNvbHMgKyAnKScpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNDYXNl
RmFjdG9yeX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3F1YXJlTWF0
cml4RnVuY0Nhc2VGYWN0b3J5ID0gZnVuY3Rpb24oZ2VuRikgeworICAgICAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRnVuY0Nhc2VGYWN0b3J5LmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMu
bV9nZW5GID0gZ2VuRjsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlNxdWFyZU1hdHJpeEZ1bmNDYXNlRmFjdG9yeSwgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkZ1bmNDYXNlRmFjdG9yeSk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU3F1YXJlTWF0cml4RnVuY0Nhc2VGYWN0b3J5LnByb3RvdHlwZS5nZXRGdW5jID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHJldHVybiBuZXcgdGhpcy5tX2dlbkYoMik7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnRleHR9IGN0
eAorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TcXVhcmVNYXRyaXhGdW5j
Q2FzZUZhY3RvcnkucHJvdG90eXBlLmNyZWF0ZUNhc2UgPSBmdW5jdGlvbihjdHgpIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChjdHgubmFtZSwgY3R4Lm5hbWUpOwor
CisgICAgICAgIGdyb3VwLmFkZENoaWxkKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcmVhdGVG
dW5jQ2FzZShjdHgsICdtYXQyJywgbmV3IHRoaXMubV9nZW5GKDIpKSk7CisgICAgICAgIHJldHVy
biBncm91cDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmltaXRpdmVGdW5jfQorICAgICAq
IEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmN9IHNjYWxhckZ1bmMKKyAgICAg
KiBAcGFyYW0ge251bWJlcj19IHNpemUKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuR2VuRnVuYyA9IGZ1bmN0aW9uKHNjYWxhckZ1bmMsIHNpemUpIHsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlByaW1pdGl2ZUZ1bmMuY2FsbCh0aGlzLCBzY2FsYXJGdW5j
LlNpZyk7CisgICAgICAgIHRoaXMubV9mdW5jID0gc2NhbGFyRnVuYzsKKyAgICAgICAgdGhpcy5t
X3NpemUgPSBzaXplOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2Vu
RnVuYy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Q
cmltaXRpdmVGdW5jLnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdl
bkZ1bmMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdl
bkZ1bmM7CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmMucHJvdG90eXBlLmdldE5hbWUgPSBmdW5j
dGlvbigpIHsKKyAgICAgICByZXR1cm4gdGhpcy5tX2Z1bmMuZ2V0TmFtZSgpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkdlbkZ1bmMucHJvdG90eXBlLmdldE91dFBhcmFtSW5kZXggPSBmdW5j
dGlvbigpIHsKKyAgICAgICByZXR1cm4gdGhpcy5tX2Z1bmMuZ2V0T3V0UGFyYW1JbmRleCgpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmMucHJvdG90eXBlLmdldFJlcXVpcmVkRXh0
ZW5zaW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgcmV0dXJuIHRoaXMubV9mdW5jLmdldFJlcXVp
cmVkRXh0ZW5zaW9uKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cHJCYXNlPn0gYXJncworICAgICAqLworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5GdW5jLnByb3RvdHlwZS5kb1ByaW50ID0gZnVuY3Rp
b24oYXJncykgeworICAgICAgIHJldHVybiB0aGlzLm1fZnVuYy5wcmludChhcmdzKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXZh
bENvbnRleHR9IGN0eAorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlR1
cGxlNH0gaWFyZ3MKKyAgICAgKiBAcmV0dXJuIHsqfQorICAgICAqLworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5HZW5GdW5jLnByb3RvdHlwZS5kb0FwcGx5ID0gZnVuY3Rpb24oY3R4LCBp
YXJncykgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PCo+fSAqLyB2YXIgcmV0ID0gW107CisK
KyAgICAgICAgaWYgKHRoaXMubV9zaXplID4gMSkgeworICAgICAgICAgICAgZm9yICh2YXIgbmR4
ID0gMDsgbmR4IDwgdGhpcy5tX3NpemU7ICsrbmR4KSB7CisgICAgICAgICAgICAgICAgdmFyIGEg
PSBpYXJncy5hID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpYXJncy5hW25keF07CisgICAg
ICAgICAgICAgICAgdmFyIGIgPSBpYXJncy5iID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBp
YXJncy5iW25keF07CisgICAgICAgICAgICAgICAgdmFyIGMgPSBpYXJncy5jID09PSB1bmRlZmlu
ZWQgPyB1bmRlZmluZWQgOiBpYXJncy5jW25keF07CisgICAgICAgICAgICAgICAgdmFyIGQgPSBp
YXJncy5kID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpYXJncy5kW25keF07CisgICAgICAg
ICAgICAgICAgcmV0W25keF0gPSB0aGlzLm1fZnVuYy5hcHBseUZ1bmN0aW9uKGN0eCwgYSwgYiwg
YywgZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0WzBd
ID0gdGhpcy5tX2Z1bmMuYXBwbHlGdW5jdGlvbihjdHgsIGlhcmdzLmEsIGlhcmdzLmIsIGlhcmdz
LmMsIGlhcmdzLmQpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmNTZXR9IGRzdAorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5GdW5jLnByb3RvdHlwZS5kb0dl
dFVzZWRGdW5jcyA9IGZ1bmN0aW9uKGRzdCkgeworICAgICAgICB0aGlzLm1fZnVuYy5nZXRVc2Vk
RnVuY3MoZHN0KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5GdW5jfQorICAgICAqIEBw
YXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmN9IGZ1bmMKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gc2l6ZQorICAgICAqLworICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmVj
dG9yaXplZEZ1bmMgPSBmdW5jdGlvbihmdW5jLCBzaXplKSB7CisgICAgICAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuR2VuRnVuYy5jYWxsKHRoaXMsIGZ1bmMsIHNpemUpOworICAgIH07CisK
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmVjdG9yaXplZEZ1bmMucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuRnVuYy5wcm90b3R5cGUp
OworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WZWN0b3JpemVkRnVuYy5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmVjdG9yaXplZEZ1bmM7CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5GdW5jfSBmdW5jXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkdlbkZ1bmN9IGZ1bmMyXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkdlbkZ1bmN9IGZ1bmMzXworICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkdlbkZ1bmN9IGZ1bmM0XworICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5HZW5GdW5jcyA9IGZ1bmN0aW9uKGZ1bmNfLCBmdW5jMl8sIGZ1bmMzXywgZnVuYzRf
KSB7CisgICAgICAgIHRoaXMuZnVuYyA9IGZ1bmNfOworICAgICAgICB0aGlzLmZ1bmMyID0gZnVu
YzJfOworICAgICAgICB0aGlzLmZ1bmMzID0gZnVuYzNfOworICAgICAgICB0aGlzLmZ1bmM0ID0g
ZnVuYzRfOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
ZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3J5fQorICAgICAqIEBw
YXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNzfSBmdW5jcworICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkdlbkZ1bmNDYXNlRmFjdG9yeSA9IGZ1bmN0aW9uKGZ1bmNzLCBuYW1lKSB7CisgICAgICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yeS5jYWxsKHRoaXMpOworICAgICAgICB0
aGlzLm1fZnVuY3MgPSBmdW5jczsKKyAgICAgICAgdGhpcy5tX25hbWUgPSBuYW1lOworICAgIH07
CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuRnVuY0Nhc2VGYWN0b3J5LnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3J5
LnByb3RvdHlwZSk7CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNDYXNlRmFj
dG9yeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2Vu
RnVuY0Nhc2VGYWN0b3J5OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuQ29udGV4dH0gY3R4CisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuRGVx
cFRlc3R9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNDYXNl
RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlQ2FzZSA9IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICAv
KiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLworICAgICAgICB2YXIgZ3JvdXAgPSB0
Y3VUZXN0Q2FzZS5uZXdUZXN0KGN0eC5uYW1lLCBjdHgubmFtZSk7CisgICAgICAgIGdyb3VwLmFk
ZENoaWxkKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcmVhdGVGdW5jQ2FzZShjdHgsICdzY2Fs
YXInLCB0aGlzLm1fZnVuY3MuZnVuYykpOworICAgICAgICBncm91cC5hZGRDaGlsZChnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuY3JlYXRlRnVuY0Nhc2UoY3R4LCAndmVjMicsIHRoaXMubV9mdW5j
cy5mdW5jMikpOworICAgICAgICBncm91cC5hZGRDaGlsZChnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuY3JlYXRlRnVuY0Nhc2UoY3R4LCAndmVjMycsIHRoaXMubV9mdW5jcy5mdW5jMykpOworICAg
ICAgICBncm91cC5hZGRDaGlsZChnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3JlYXRlRnVuY0Nh
c2UoY3R4LCAndmVjNCcsIHRoaXMubV9mdW5jcy5mdW5jNCkpOworCisgICAgICAgIHJldHVybiBn
cm91cDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAq
LworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5GdW5jQ2FzZUZhY3RvcnkucHJvdG90
eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9uYW1lOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNDYXNlRmFjdG9yeS5wcm90b3R5cGUuZ2V0
RGVzYyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gIkZ1bmN0aW9uICciICsgdGhpcy5t
X2Z1bmNzLmZ1bmMuZ2V0TmFtZSgpICsgIiciOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZV8KKyAgICAgKiBAcGFyYW0g
e3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSBmbG9hdEZvcm1hdF8KKyAgICAgKiBAcGFyYW0g
e3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSBoaWdocEZvcm1hdF8KKyAgICAgKiBAcGFyYW0g
e2dsdVNoYWRlclV0aWwucHJlY2lzaW9ufSBwcmVjaXNpb25fCisgICAgICogQHBhcmFtIHtnbHVT
aGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9IHNoYWRlclR5cGVfCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IG51bVJhbmRvbXNfCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNv
bnRleHQgPSBmdW5jdGlvbihuYW1lXywgZmxvYXRGb3JtYXRfLCBoaWdocEZvcm1hdF8sIHByZWNp
c2lvbl8sIHNoYWRlclR5cGVfLCBudW1SYW5kb21zXykgeworICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZV87CisgICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXRG
b3JtYXQuRmxvYXRGb3JtYXR9ICovIHRoaXMuZmxvYXRGb3JtYXQgPSBmbG9hdEZvcm1hdF87Cisg
ICAgICAgIC8qKiBAdHlwZSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9ICovIHRoaXMuaGln
aHBGb3JtYXQgPSBoaWdocEZvcm1hdF87CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRp
bC5wcmVjaXNpb259ICovIHRoaXMucHJlY2lzaW9uID0gcHJlY2lzaW9uXzsKKyAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGV9ICovIHRoaXMuc2hhZGVyVHlwZSA9
IHNoYWRlclR5cGVfOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5udW1SYW5k
b21zID0gbnVtUmFuZG9tc187CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3Rv
cgorICAgICAqIEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9IGhpZ2hwXworICAg
ICAqIEBwYXJhbSB7dGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXR9IG1lZGl1bXBfCisgICAgICog
QHBhcmFtIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gbG93cF8KKyAgICAgKiBAcGFyYW0g
e0FycmF5PGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZT59IHNoYWRlclR5cGVzXworICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBudW1SYW5kb21zXworICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5QcmVjaXNpb25UZXN0Q29udGV4dCA9IGZ1bmN0aW9uKGhpZ2hwXywgbWVkaXVt
cF8sIGxvd3BfLCBzaGFkZXJUeXBlc18sIG51bVJhbmRvbXNfKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlPn0gKi8gdGhpcy5zaGFkZXJUeXBl
cyA9IHNoYWRlclR5cGVzXzsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VGbG9hdEZvcm1h
dC5GbG9hdEZvcm1hdD59ICovIHRoaXMuZm9ybWF0cyA9IFtdOworICAgICAgICB0aGlzLmZvcm1h
dHNbZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQXSA9IGhpZ2hwXzsKKyAg
ICAgICAgdGhpcy5mb3JtYXRzW2dsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJ
VU1QXSA9IG1lZGl1bXBfOworICAgICAgICB0aGlzLmZvcm1hdHNbZ2x1U2hhZGVyVXRpbC5wcmVj
aXNpb24uUFJFQ0lTSU9OX0xPV1BdID0gbG93cF87CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm51bVJhbmRvbXMgPSBudW1SYW5kb21zXzsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogXGJyaWVmIFNpbXBsZSBpbmNyZW1lbnRhbCBjb3VudGVyLgorICAgICAqCisgICAgICog
VGhpcyBpcyB1c2VkIHRvIG1ha2Ugc3VyZSB0aGF0IGRpZmZlcmVudCBFeHBhbmRDb250ZXh0cyB3
aWxsIG5vdCBwcm9kdWNlCisgICAgICogb3ZlcmxhcHBpbmcgdGVtcG9yYXJ5IG5hbWVzLgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqCisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkNvdW50ZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX2NvdW50ID0gMDsK
KyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvdW50ZXIucHJvdG90eXBl
LmdldCA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2NvdW50Kys7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5FeHBhbmRDb250ZXh0ID0gZnVuY3Rpb24oY291bnRlcikgeworICAg
ICAgICB0aGlzLm1fY291bnRlciA9IGNvdW50ZXI7CisgICAgICAgIHRoaXMubV9zdGF0ZW1lbnRz
ID0gW107CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlbmFt
ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlTmFtZQorICAgICAqIEByZXR1cm4ge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5WYXJpYWJsZX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuRXhwYW5kQ29udGV4dC5wcm90b3R5cGUuZ2VuU3ltID0gZnVuY3Rpb24odHlw
ZW5hbWUsIGJhc2VOYW1lKSB7CisgICAgICAgIHJldHVybiBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZhcmlhYmxlKHR5cGVuYW1lLCBiYXNlTmFtZSArIHRoaXMubV9jb3VudGVyLmdldCgp
KTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cGFuZENvbnRleHQu
cHJvdG90eXBlLmFkZFN0YXRlbWVudCA9IGZ1bmN0aW9uKC8qY29uc3QgU3RhdGVtZW50UCYqLyBz
dG10KSB7CisgICAgICAgIHRoaXMubV9zdGF0ZW1lbnRzLnB1c2goc3RtdCk7CisgICAgfTsKKwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHBhbmRDb250ZXh0LnByb3RvdHlwZS5nZXRT
dGF0ZW1lbnRzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fc3RhdGVtZW50
czsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVu
ZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfQorICAgICAqIEBwYXJhbSB7Z2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZX0gU2lnXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2ln
Xz4KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMgPSBm
dW5jdGlvbihTaWdfKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jLmNh
bGwodGhpcywgU2lnXyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYywgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1bmMp
OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLnByb3RvdHlwZS5k
b1ByaW50RGVmaW5pdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb3MgPSAnJzsKKyAg
ICAgICAgdmFyIHBhcmFtTmFtZXMgPSB0aGlzLmdldFBhcmFtTmFtZXMoKTsKKworICAgICAgICB0
aGlzLmluaXRpYWxpemUoKTsKKworICAgICAgICBvcyArPSB0aGlzLlJldCArICcgJyArIHRoaXMu
Z2V0TmFtZSgpICsKKyAgICAgICAgICAgICcoJzsKKyAgICAgICAgaWYgKGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5pc1R5cGVWYWxpZCh0aGlzLkFyZzApKQorICAgICAgICAgICAgb3MgKz0gdGhp
cy5BcmcwICsgJyAnICsgcGFyYW1OYW1lcy5hOworICAgICAgICBpZiAoZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmlzVHlwZVZhbGlkKHRoaXMuQXJnMSkpCisgICAgICAgICAgICBvcyArPSAnLCAn
ICsgdGhpcy5BcmcxICsgJyAnICsgcGFyYW1OYW1lcy5iOworICAgICAgICBpZiAoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLmlzVHlwZVZhbGlkKHRoaXMuQXJnMikpCisgICAgICAgICAgICBvcyAr
PSAnLCAnICsgdGhpcy5BcmcyICsgJyAnICsgcGFyYW1OYW1lcy5jOworICAgICAgICBpZiAoZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLmlzVHlwZVZhbGlkKHRoaXMuQXJnMykpCisgICAgICAgICAg
ICBvcyArPSAnLCAnICsgdGhpcy5BcmczICsgJyAnICsgcGFyYW1OYW1lcy5kOworICAgICAgICBv
cyArPSAnKVxue1xuJzsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1f
Ym9keS5sZW5ndGg7ICsrbmR4KQorICAgICAgICAgICAgb3MgKz0gdGhpcy5tX2JvZHlbbmR4XTsK
KyAgICAgICAgb3MgKz0gJ3JldHVybiAnICsgdGhpcy5tX3JldCArICc7XG4nOworICAgICAgICBv
cyArPSAnfVxuJzsKKworICAgICAgICByZXR1cm4gb3M7CisgICAgfTsKKworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5wcm90b3R5cGUuZG9BcHBseSA9IGZ1bmN0aW9u
KGN0eCwgYXJncykgeworICAgICAgICB2YXIgZnVuRW52ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FbnZpcm9ubWVudCgpOworICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKworICAg
ICAgICBmdW5FbnYuYmluZCh0aGlzLm1fdmFyMCwgYXJncy5hKTsKKyAgICAgICAgZnVuRW52LmJp
bmQodGhpcy5tX3ZhcjEsIGFyZ3MuYik7CisgICAgICAgIGZ1bkVudi5iaW5kKHRoaXMubV92YXIy
LCBhcmdzLmMpOworICAgICAgICBmdW5FbnYuYmluZCh0aGlzLm1fdmFyMywgYXJncy5kKTsKKwor
ICAgICAgICB2YXIgZnVuQ3R4ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FdmFsQ29u
dGV4dChjdHguZm9ybWF0LCBjdHguZmxvYXRQcmVjaXNpb24sIGZ1bkVudiwgY3R4LmNhbGxEZXB0
aCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5tX2JvZHkubGVuZ3Ro
OyArK25keCkKKyAgICAgICAgICAgIHRoaXMubV9ib2R5W25keF0uZXhlY3V0ZShmdW5DdHgpOwor
CisgICAgICAgIHZhciByZXQgPSB0aGlzLm1fcmV0LmV2YWx1YXRlKGZ1bkN0eCk7CisKKyAgICAg
ICAgLy8gXHRvZG8gW2xhdXJpXSBTdG9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgdmFsdWVzIGlu
IGVudmlyb25tZW50CisgICAgICAgIGFyZ3MuYSA9IGZ1bkVudi5sb29rdXAodGhpcy5tX3ZhcjAp
OworICAgICAgICBhcmdzLmIgPSBmdW5FbnYubG9va3VwKHRoaXMubV92YXIxKTsKKyAgICAgICAg
YXJncy5jID0gZnVuRW52Lmxvb2t1cCh0aGlzLm1fdmFyMik7CisgICAgICAgIGFyZ3MuZCA9IGZ1
bkVudi5sb29rdXAodGhpcy5tX3ZhcjMpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsK
KworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5wcm90b3R5cGUuaW5p
dGlhbGl6ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIXRoaXMubV9yZXQpIHsKKyAgICAg
ICAgICAgIHZhciBwYXJhbU5hbWVzID0gdGhpcy5nZXRQYXJhbU5hbWVzKCk7CisgICAgICAgICAg
ICB2YXIgc3ltQ291bnRlciA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ291bnRlcigp
OworICAgICAgICAgICAgdmFyIGN0eCA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhw
YW5kQ29udGV4dChzeW1Db3VudGVyKTsKKworICAgICAgICAgICAgdGhpcy5tX3ZhcjAgPSBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZhcmlhYmxlKHRoaXMuQXJnMCwgcGFyYW1OYW1lcy5h
KTsKKyAgICAgICAgICAgIHRoaXMubV92YXIxID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5WYXJpYWJsZSh0aGlzLkFyZzEsIHBhcmFtTmFtZXMuYik7CisgICAgICAgICAgICB0aGlzLm1f
dmFyMiA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVmFyaWFibGUodGhpcy5BcmcyLCBw
YXJhbU5hbWVzLmMpOworICAgICAgICAgICAgdGhpcy5tX3ZhcjMgPSBuZXcgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlZhcmlhYmxlKHRoaXMuQXJnMywgcGFyYW1OYW1lcy5kKTsKKyAgICAgICAg
ICAgIHZhciBhcmdzID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UdXBsZTQodGhpcy5t
X3ZhcjAsCisgICAgICAgICAgICAgICAgdGhpcy5tX3ZhcjEsIHRoaXMubV92YXIyLCB0aGlzLm1f
dmFyMyk7CisKKyAgICAgICAgICAgIHRoaXMubV9yZXQgPSB0aGlzLmRvRXhwYW5kKGN0eCwgYXJn
cyk7CisgICAgICAgICAgICB0aGlzLm1fYm9keSA9IGN0eC5nZXRTdGF0ZW1lbnRzKCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5jfQorICAgICAqIEBwYXJhbSB7Z2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZX0gU2lnXyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U2lnXz4KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWx0ZXJuYXRpdmVz
ID0gZnVuY3Rpb24oU2lnXykgeworICAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZ1
bmMuY2FsbCh0aGlzLCBTaWdfKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkFsdGVybmF0aXZlcyxnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWx0ZXJuYXRpdmVzLnByb3Rv
dHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnYWx0ZXJuYXRpdmVz
JzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFsdGVybmF0aXZlcy5w
cm90b3R5cGUuZG9QcmludERlZmluaXRpb24gPSBmdW5jdGlvbigpIHt9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkFsdGVybmF0aXZlcy5wcm90b3R5cGUuZG9HZXRVc2VkRnVuY3Mg
PSBmdW5jdGlvbihkc3QpIHt9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFsdGVy
bmF0aXZlcy5wcm90b3R5cGUuZG9BcHBseSA9IGZ1bmN0aW9uKGN0eCxhcmdzKSB7CisgICAgICAg
IHJldHVybiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMudW5pb24odGhpcy5TaWcuUmV0LGFyZ3Mu
YSxhcmdzLmIpOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWx0ZXJu
YXRpdmVzLnByb3RvdHlwZS5kb1ByaW50ID0gZnVuY3Rpb24oYXJncykgeworICAgICAgICByZXR1
cm4gJ3snICsgYXJnc1swXSArICd8JyArIGFyZ3NbMV0gKyAnfSc7CisgICAgfTsKKworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5zaXplVG9OYW1lID0gZnVuY3Rpb24oc2l6ZSkgeworICAg
ICAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuICd2ZWM0JzsK
KyAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICd2ZWMzJzsKKyAgICAgICAgICAgIGNhc2UgMjog
cmV0dXJuICd2ZWMyJzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJ2Zsb2F0JzsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNpemUKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRG
dW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Eb3QgPSBmdW5jdGlv
bihzaXplKSB7CisgICAgICAgIHZhciBuYW1lID0gZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLnNp
emVUb05hbWUoc2l6ZSk7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlNpZ25hdHVyZSgnZmxvYXQnLCBuYW1lLCBuYW1lKTsKKyAgICAgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICAgICAgdGhp
cy5tX2lucHV0U2l6ZSA9IHNpemU7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5Eb3QsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVk
RnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRG90LnByb3RvdHlwZS5nZXRO
YW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnZG90JzsKKyAgICB9OworCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRvdC5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlv
bihjdHgsIGFyZ3MpIHsKKyAgICAgICAgaWYgKHRoaXMubV9pbnB1dFNpemUgPiAxKSB7CisgICAg
ICAgICAgICB2YXIgdmFsID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCks
CisgICAgICAgICAgICAgICAgbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WZWN0b3JWYXJp
YWJsZShhcmdzLmEsIDApLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlZlY3RvclZhcmlh
YmxlKGFyZ3MuYiwgMCkpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLm1f
aW5wdXRTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgdG1wID0gbmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5BcHBseSgnZmxvYXQnLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLk11bCgpLAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlZlY3RvclZhcmlhYmxlKGFyZ3MuYSwgaSksIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVmVjdG9yVmFyaWFibGUoYXJncy5iLCBpKSk7CisgICAgICAgICAgICAgICAgdmFsID0gYXBw
KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWRkKCksIHZhbCwgdG1wKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB2YWw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBhcmdzLmEgKiBhcmdzLmIKKyAgICAgICAgICAgIHZhciByZXQgPSBhcHAobmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwoKSwgYXJncy5hLCBhcmdzLmIpOworICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBleHRlbmRzIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkxlbmd0aCA9IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAgICAgdmFy
IG5hbWUgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuc2l6ZVRvTmFtZShzaXplKTsKKyAgICAg
ICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKCdmbG9h
dCcsIG5hbWUpOworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMu
Y2FsbCh0aGlzLCBzaWcpOworICAgICAgICB0aGlzLm1faW5wdXRTaXplID0gc2l6ZTsKKyAgICB9
OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkxlbmd0aCwg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jKTsKKworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5MZW5ndGgucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuICdsZW5ndGgnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuTGVuZ3RoLnByb3RvdHlwZS5kb0V4cGFuZCA9IGZ1bmN0aW9uKGN0eCwgYXJncykgewor
ICAgICAgICAvL3NxcnQoZG90KGFyZ3MuYSwgYXJncy5hKSk7CisgICAgICAgIHZhciB2MCA9IGFw
cChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRvdCh0aGlzLm1faW5wdXRTaXplKSwgYXJn
cy5hLCBhcmdzLmEpOworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5TcXJ0KCksIHYwKTsKKyAgICAgICAgcmV0dXJuIHYxOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAg
ICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAg
ICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpc3RhbmNlID0gZnVuY3Rpb24oc2l6
ZSkgeworICAgICAgICB2YXIgbmFtZSA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5zaXplVG9O
YW1lKHNpemUpOworICAgICAgICB2YXIgc2lnID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5TaWduYXR1cmUoJ2Zsb2F0JywgbmFtZSwgbmFtZSk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAgICAgIHRoaXMubV9p
bnB1dFNpemUgPSBzaXplOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGlzdGFuY2UsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVk
RnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGlzdGFuY2UucHJvdG90eXBl
LmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdkaXN0YW5jZSc7CisgICAg
fTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EaXN0YW5jZS5wcm90b3R5cGUuZG9F
eHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy9sZW5ndGgoYXJncy5hIC0g
YXJncy5iKTsKKyAgICAgICAgdmFyIHYwID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5B
cHBseVNjYWxhcihuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1YigpLCBhcmdzLmEsIGFy
Z3MuYik7CisgICAgICAgIHZhciB2MSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
Lkxlbmd0aCh0aGlzLm1faW5wdXRTaXplKSwgdjApOworICAgICAgICByZXR1cm4gdjE7CisgICAg
fTsKKworICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuQ3Jvc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKCd2ZWMzJywgJ3ZlYzMnLCAndmVj
MycpOworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0
aGlzLCBzaWcpOworICAgICAgICB0aGlzLm1faW5wdXRTaXplID0gMzsKKyAgICB9OworCisgICAg
c2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNyb3NzLCBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkNyb3NzLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biAnY3Jvc3MnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ3Jvc3Mu
cHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vIHZl
YzMoeC5hWzFdICogeC5iWzJdIC0geC5iWzFdICogeC5hWzJdLAorICAgICAgICAvLyAgICAgIHgu
YVsyXSAqIHguYlswXSAtIHguYlsyXSAqIHguYVswXSwKKyAgICAgICAgLy8gICAgICB4LmFbMF0g
KiB4LmJbMV0gLSB4LmJbMF0gKiB4LmFbMV0pOworICAgICAgICB2YXIgYSA9IFtdLCBiID0gW107
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tX2lucHV0U2l6ZTsgaSsrKSB7Cisg
ICAgICAgICAgICBhW2ldID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5WZWN0b3JWYXJp
YWJsZShhcmdzLmEsIGkpOworICAgICAgICAgICAgYltpXSA9IG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuVmVjdG9yVmFyaWFibGUoYXJncy5iLCBpKTsKKyAgICAgICAgfQorICAgICAgICB2
YXIgdjAgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwoKSwgYVsxXSwgYlsy
XSk7CisgICAgICAgIHZhciB2MSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11
bCgpLCBiWzFdLCBhWzJdKTsKKyAgICAgICAgdmFyIHYyID0gYXBwKG5ldyBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuU3ViKCksIHYwLCB2MSk7CisKKyAgICAgICAgdmFyIHYzID0gYXBwKG5ldyBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIGFbMl0sIGJbMF0pOworICAgICAgICB2YXIg
djQgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwoKSwgYlsyXSwgYVswXSk7
CisgICAgICAgIHZhciB2NSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1Yigp
LCB2MywgdjQpOworCisgICAgICAgIHZhciB2NiA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLk11bCgpLCBhWzBdLCBiWzFdKTsKKyAgICAgICAgdmFyIHY3ID0gYXBwKG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIGJbMF0sIGFbMV0pOworICAgICAgICB2YXIgdjgg
PSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWIoKSwgdjYsIHY3KTsKKworICAg
ICAgICB2YXIgdjkgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5WZWModGhp
cy5tX2lucHV0U2l6ZSwgdHJ1ZSksIHYyLCB2NSwgdjgpOworICAgICAgICByZXR1cm4gdjk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzaXplCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJp
dmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTm9ybWFsaXpl
ID0gZnVuY3Rpb24oc2l6ZSkgeworICAgICAgICB2YXIgbmFtZSA9IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5zaXplVG9OYW1lKHNpemUpOworICAgICAgICB2YXIgc2lnID0gbmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUobmFtZSwgbmFtZSk7CisgICAgICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAgICAgIHRo
aXMubV9pbnB1dFNpemUgPSBzaXplOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuTm9ybWFsaXplLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk5vcm1hbGl6ZS5w
cm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ25vcm1hbGl6
ZSc7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Ob3JtYWxpemUucHJv
dG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vYXJncy5h
IC8gbGVuZ3RoPFNpemU+KGFyZ3MuYSk7CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkxlbmd0aCh0aGlzLm1faW5wdXRTaXplKSwgYXJncy5hKTsKKyAg
ICAgICAgdmFyIHYxID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhcihu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpdigpLCBhcmdzLmEsIHYwKTsKKyAgICAgICAg
cmV0dXJuIHYxOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkZhY2VGb3J3YXJkID0gZnVuY3Rpb24oc2l6ZSkgeworICAgICAgICB2YXIgbmFtZSA9IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5zaXplVG9OYW1lKHNpemUpOworICAgICAgICB2YXIgc2ln
ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUobmFtZSwgbmFtZSwgbmFt
ZSwgbmFtZSk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5j
YWxsKHRoaXMsIHNpZyk7CisgICAgICAgIHRoaXMubV9pbnB1dFNpemUgPSBzaXplOworICAgICAg
ICB0aGlzLnR5cGVuYW1lID0gbmFtZTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkZhY2VGb3J3YXJkLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZhY2VGb3J3
YXJkLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnZmFj
ZWZvcndhcmQnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmFjZUZv
cndhcmQucHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAg
IC8vY29uZChkb3QoYXJncy5jLCBhcmdzLmIpIDwgY29uc3RhbnQoMC4wZiksIGFyZ3MuYSwgLWFy
Z3MuYSk7CisgICAgICAgIHZhciB6ZXJvID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
b25zdGFudCgwKTsKKyAgICAgICAgdmFyIHYwID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5BcHBseVNjYWxhcihuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk5lZ2F0ZSgpLCBhcmdz
LmEpOworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
b3QodGhpcy5tX2lucHV0U2l6ZSksIGFyZ3MuYywgYXJncy5iKTsKKyAgICAgICAgdmFyIHYyID0g
YXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTGVzc1RoYW4oJ2Zsb2F0JyksIHYxLCB6
ZXJvKTsKKyAgICAgICAgdmFyIHYzID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
Q29uZCh0aGlzLnR5cGVuYW1lKSwgdjIsIGFyZ3MuYSwgdjApOworICAgICAgICByZXR1cm4gdjM7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzaXplCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
ZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmVmbGVj
dCA9IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAgICAgdmFyIG5hbWUgPSBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuc2l6ZVRvTmFtZShzaXplKTsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKG5hbWUsIG5hbWUsIG5hbWUpOworICAgICAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAg
ICAgICB0aGlzLm1faW5wdXRTaXplID0gc2l6ZTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xh
c3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlJlZmxlY3QsIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmVmbGVj
dC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ3JlZmxl
Y3QnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmVmbGVjdC5wcm90
b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy9hcmdzLmEg
LSAoYXJncy5iICogZG90KGFyZ3MuYiwgYXJncy5hKSAqIGNvbnN0YW50KDIuMGYpKTsKKyAgICAg
ICAgdmFyIHR3byA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uc3RhbnQoMik7Cisg
ICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRvdCh0aGlz
Lm1faW5wdXRTaXplKSwgYXJncy5iLCBhcmdzLmEpOworICAgICAgICB2YXIgdjEgPSBuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuTXVsKCksIGFyZ3MuYiwgdjApOworICAgICAgICB2YXIgdjIgPSBuZXcgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
TXVsKCksIHYxLCB0d28pOworICAgICAgICB2YXIgdjMgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViKCksIGFy
Z3MuYSwgdjIpOworICAgICAgICByZXR1cm4gdjM7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICogQGV4dGVu
ZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmVmcmFjdCA9IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAg
ICAgdmFyIG5hbWUgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuc2l6ZVRvTmFtZShzaXplKTsK
KyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJl
KG5hbWUsIG5hbWUsIG5hbWUsICdmbG9hdCcpOworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgICAgICB0aGlzLm1faW5wdXRT
aXplID0gc2l6ZTsKKyAgICAgICAgdGhpcy50eXBlbmFtZSA9IG5hbWU7CisgICAgfTsKKworICAg
IHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5SZWZyYWN0LCBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlJlZnJhY3QucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuICdyZWZyYWN0JzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlJlZnJhY3QucHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAg
ICAgIHZhciBpID0gYXJncy5hOworICAgICAgICB2YXIgbiA9IGFyZ3MuYjsKKyAgICAgICAgdmFy
IGV0YSA9IGFyZ3MuYzsKKyAgICAgICAgdmFyIHplcm8gPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkNvbnN0YW50KDApOworICAgICAgICB2YXIgb25lID0gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5Db25zdGFudCgxKTsKKyAgICAgICAgLy8gZG90TkkgPSBkb3QobiwgaSkKKyAg
ICAgICAgdmFyIHYwID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRG90KHRoaXMu
bV9pbnB1dFNpemUpLCBuLCBpKTsKKyAgICAgICAgdmFyIGRvdE5JID0gZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmJpbmRFeHByZXNzaW9uKCdmbG9hdCcsICdkb3ROSScsIGN0eCwgdjApOworICAg
ICAgICAvLyBrID0gMSAtIGV0YSAqIGV0YSAqICgxIC0gZG90TkkgKiBkb3ROSSkKKyAgICAgICAg
dmFyIHYxID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhcihuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLk11bCgpLCBkb3ROSSwgZG90TkkpOworICAgICAgICB2YXIg
djIgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuU3ViKCksIG9uZSwgdjEpOworICAgICAgICB2YXIgdjMgPSBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuTXVsKCksIGV0YSwgZXRhKTsKKyAgICAgICAgdmFyIHY0ID0gbmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhcihuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
Lk11bCgpLCB2MywgdjIpOworICAgICAgICB2YXIgdjUgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViKCksIG9u
ZSwgdjQpOworICAgICAgICB2YXIgayA9IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5iaW5kRXhw
cmVzc2lvbignZmxvYXQnLCAnaycsIGN0eCwgdjUpOworCisgICAgICAgIC8vIGkgKiBldGEgLSBu
ICogKGV0YSAqIGRvdE5JICsgc3FydChrKSkKKyAgICAgICAgdmFyIHY2ID0gbmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhcihuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
Lk11bCgpLCBldGEsIGRvdE5JKTsKKyAgICAgICAgdmFyIHY3ID0gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5BcHBseVNjYWxhcihuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNxcnQo
KSwgayk7CisgICAgICAgIHZhciB2OCA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBw
bHlTY2FsYXIobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BZGQoKSwgdjYsIHY3KTsKKyAg
ICAgICAgdmFyIHY5ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseVNjYWxhcihu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11bCgpLCBuLCB2OCk7CisgICAgICAgIHZhciB2
MTAgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5U2NhbGFyKG5ldyBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIGksIGV0YSk7CisgICAgdmFyIHYxMSA9IG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5TdWIoKSwgdjEwLCB2OSk7CisKKyAgICAgICAgdmFyIHYxMiA9IG5ldyBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuQXBwbHlTY2FsYXIobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5M
ZXNzVGhhbignZmxvYXQnKSwgaywgemVybyk7CisKKyAgICAgICAgdmFyIHplcm9WZWN0b3IgPSBh
cHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5HZW5WZWModGhpcy5tX2lucHV0U2l6ZSks
IHplcm8pOworICAgICAgICB2YXIgdjEzID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuQ29uZCh0aGlzLnR5cGVuYW1lKSwgdjEyLCB6ZXJvVmVjdG9yLCB2MTEpOworICAgICAgICBy
ZXR1cm4gdjEzOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAg
KiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jfQorICAgICAq
LworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5SYWRpYW5zID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZSgn
ZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2
ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlJhZGlhbnMsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
ZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmFkaWFucy5wcm90
b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ3JhZGlhbnMnOwor
ICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUmFkaWFucy5wcm90b3R5cGUu
ZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgdmFyIHZhbCA9IGFwcChu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpdigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5Db25zdGFudChNYXRoLlBJKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uc3Rh
bnQoMTgwKSk7CisgICAgICAgIHJldHVybiBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFw
cGx5KCdmbG9hdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5hKTsKKworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5EZWdyZWVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnKTsKKyAg
ICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2ln
KTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkRlZ3JlZXMsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVncmVlcy5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gJ2RlZ3JlZXMnOworICAgIH07CisKKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVncmVlcy5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihj
dHgsIGFyZ3MpIHsKKyAgICAgICAgdmFyIHZhbCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkRpdigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCgxODApLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudChNYXRoLlBJKSk7CisgICAgICAgIHJl
dHVybiBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFwcGx5KCdmbG9hdCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuTXVsKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJncy5hKTsKKworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2
ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaW5oID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNpZ25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICB9OworCisgICAgc2V0UGFy
ZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbmgsIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lu
aC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ3Npbmgn
OworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2luaC5wcm90b3R5cGUu
ZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy8gKGV4cCh4KSAtIGV4
cCgteCkpIC8gY29uc3RhbnQoMi4wZikKKyAgICAgICAgdmFyIHggPSBhcmdzLmE7CisgICAgICAg
IHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cCgpLCB4KTsKKyAg
ICAgICAgdmFyIHYxID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTmVnYXRlKCks
IHgpOworICAgICAgICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5F
eHAoKSwgdjEpOworICAgICAgICB2YXIgdjMgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5TdWIoKSwgdjAsIHYyKTsKKyAgICAgICAgdmFyIHY0ID0gbmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5Db25zdGFudCgyKTsKKyAgICAgICAgdmFyIHY1ID0gbmV3IGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5BcHBseSgnZmxvYXQnLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkRpdiwgdjMsIHY0KTsKKyAgICAgICAgcmV0dXJuIHY1OworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkRlcml2ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
b3NoID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLlNpZ25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICB9OworCisg
ICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvc2gsIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQ29zaC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gJ2Nvc2gnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29zaC5w
cm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy8gKGV4
cCh4KSArIGV4cCgteCkpIC8gY29uc3RhbnQoMi4wZikKKyAgICAgICAgdmFyIHggPSBhcmdzLmE7
CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cCgp
LCB4KTsKKyAgICAgICAgdmFyIHYxID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
TmVnYXRlKCksIHgpOworICAgICAgICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FeHAoKSwgdjEpOworICAgICAgICB2YXIgdjMgPSBhcHAobmV3IGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5BZGQoKSwgdjAsIHYyKTsKKyAgICAgICAgdmFyIHY0ID0gbmV3IGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCgyKTsKKyAgICAgICAgdmFyIHY1ID0gbmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseSgnZmxvYXQnLCBuZXcgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkRpdiwgdjMsIHY0KTsKKyAgICAgICAgcmV0dXJuIHY1OworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5UYW5oID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAg
ICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRhbmgs
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuVGFuaC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gJ3RhbmgnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuVGFuaC5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAg
ICAgLy8gc2luaCh4KSAvIGNvc2goeCkKKyAgICAgICAgdmFyIHggPSBhcmdzLmE7CisgICAgICAg
IHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbmgoKSwgeCk7Cisg
ICAgICAgIHZhciB2MSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvc2goKSwg
eCk7CisgICAgICAgIHZhciB2MiA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXBwbHko
J2Zsb2F0JywgbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EaXYsIHYwLCB2MSk7CisgICAg
ICAgIHJldHVybiB2MjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQVNpbmggPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJl
KCdmbG9hdCcsICdmbG9hdCcpOworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVy
aXZlZEZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQVNpbmgsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
ZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQVNpbmgucHJvdG90
eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdhc2luaCc7CisgICAg
fTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BU2luaC5wcm90b3R5cGUuZG9FeHBh
bmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy8gbG9nKHggKyBzcXJ0KHggKiB4
ICsgY29uc3RhbnQoMS4wZikpKQorICAgICAgICB2YXIgeCA9IGFyZ3MuYTsKKyAgICAgICAgdmFy
IHYwID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIHgsIHgpOworICAg
ICAgICB2YXIgdjEgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnN0YW50KDEpOwor
ICAgICAgICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BZGQoKSwg
djAsIHYxKTsKKyAgICAgICAgdmFyIHYzID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU3FydCgpLCB2Mik7CisgICAgICAgIHZhciB2NCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkFkZCgpLCB4LCB2Myk7CisgICAgICAgIHZhciB2NSA9IGFwcChuZXcgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkxvZygpLCB2NCk7CisgICAgICAgIHJldHVybiB2NTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuQUNvc2ggPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKCdmbG9hdCcsICdmbG9hdCcpOwor
ICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlzLCBz
aWcpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuQUNvc2gsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQUNvc2gucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuICdhY29zaCc7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5BQ29zaC5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFy
Z3MpIHsKKyAgICAgICAgLy8gbG9nKHggKyBzcXJ0KCh4ICsgY29uc3RhbnQoMS4wZikpICogKHgg
LSBjb25zdGFudCgxLjBmKSkpKQorICAgICAgICB2YXIgeCA9IGFyZ3MuYTsKKyAgICAgICAgdmFy
IG9uZSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uc3RhbnQoMSk7CisgICAgICAg
IHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFkZCgpLCB4LCBvbmUp
OworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWIo
KSwgeCwgb25lKTsKKyAgICAgICAgdmFyIHYyID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuTXVsKCksIHYwLCB2MSk7CisgICAgICAgIHZhciB2MyA9IGFwcChuZXcgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlNxcnQoKSwgdjIpOworICAgICAgICB2YXIgdjQgPSBhcHAobmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BZGQoKSwgeCwgdjMpOworICAgICAgICB2YXIgdjUgPSBh
cHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Mb2coKSwgdjQpOworICAgICAgICByZXR1
cm4gdjU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAgICovCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFUYW5oID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpZ25hdHVyZSgnZmxvYXQn
LCAnZmxvYXQnKTsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5j
LmNhbGwodGhpcywgc2lnKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkFUYW5oLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1
bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFUYW5oLnByb3RvdHlwZS5nZXRO
YW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAnYXRhbmgnOworICAgIH07CisKKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQVRhbmgucHJvdG90eXBlLmRvRXhwYW5kID0gZnVu
Y3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vIGNvbnN0YW50KDAuNWYpICogbG9nKChjb25z
dGFudCgxLjBmKSArIHgpIC8gKGNvbnN0YW50KDEuMGYpIC0geCkpCisgICAgICAgIHZhciB4ID0g
YXJncy5hOworICAgICAgICB2YXIgb25lID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5D
b25zdGFudCgxKTsKKyAgICAgICAgdmFyIGhhbGYgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkNvbnN0YW50KDAuNSk7CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkFkZCgpLCBvbmUsIHgpOworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWIoKSwgb25lLCB4KTsKKyAgICAgICAgdmFyIHYyID0g
YXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGl2KCksIHYwLCB2MSk7CisgICAgICAg
IHZhciB2MyA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkxvZygpLCB2Mik7Cisg
ICAgICAgIHZhciB2NCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11bCgpLCBo
YWxmLCB2Myk7CisgICAgICAgIHJldHVybiB2NDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
ZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3FydCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2lnID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5TaWduYXR1cmUoJ2Zsb2F0JywgJ2Zsb2F0Jyk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAgfTsKKworICAgIHNl
dFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TcXJ0LCBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LlNxcnQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdz
cXJ0JzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNxcnQucHJvdG90
eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vIGNvbnN0YW50
KDEuMGYpIC8gYXBwPEludmVyc2VTcXJ0Pih4KQorICAgICAgICB2YXIgeCA9IGFyZ3MuYTsKKyAg
ICAgICAgdmFyIG9uZSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uc3RhbnQoMSk7
CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludmVy
c2VTcXJ0KCksIHgpOworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5EaXYoKSwgb25lLCB2MCk7CisgICAgICAgIHJldHVybiB2MTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRnJhY3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKCdmbG9hdCcsICdmbG9hdCcpOworICAgICAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlzLCBzaWcpOwor
ICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRnJh
Y3QsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRnJhY3QucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuICdmcmFjdCc7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5GcmFjdC5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsK
KyAgICAgICAgLy8geCAtIGZsb29yKHgpCisgICAgICAgIHZhciB4ID0gYXJncy5hOworICAgICAg
ICB2YXIgdjAgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GbG9vcigpLCB4KTsK
KyAgICAgICAgdmFyIHYxID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViKCks
IHgsIHYwKTsKKyAgICAgICAgcmV0dXJuIHYxOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRl
cml2ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Nb2QgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuU2lnbmF0dXJlKCdmbG9hdCcsICdmbG9hdCcsICdmbG9hdCcpOworICAgICAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlzLCBzaWcpOworICAgIH07CisK
KyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTW9kLCBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLk1vZC5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gJ21vZCc7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Nb2QucHJv
dG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vIHggLSB5
ICogZmxvb3IoeC95KQorICAgICAgICB2YXIgeCA9IGFyZ3MuYTsKKyAgICAgICAgdmFyIHkgPSBh
cmdzLmI7CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkRpdigpLCB4LCB5KTsKKyAgICAgICAgdmFyIHYxID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRmxvb3IoKSwgdjApOworICAgICAgICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5NdWwoKSwgeSwgdjEpOworICAgICAgICB2YXIgdjMgPSBhcHAobmV3
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWIoKSwgeCwgdjIpOworICAgICAgICByZXR1cm4g
djM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJpbWl0aXZlRnVuY30KKyAgICAgKi8KKyAg
ICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTW9kZiA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgc2lnID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUoJ2Zsb2F0Jywg
J2Zsb2F0JywgJ2Zsb2F0Jyk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Qcmlt
aXRpdmVGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICB9OworICAgIHNldFBhcmVudENsYXNzKGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Nb2RmLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJp
bWl0aXZlRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTW9kZi5wcm90b3R5
cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ21vZGYnOworICAgIH07
CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTW9kZi5wcm90b3R5cGUuZG9BcHBseSA9
IGZ1bmN0aW9uKGN0eCwgaWFyZ3MsIHZhcmlhYmxlbmFtZXMpIHsKKyAgICAgICAgdmFyIGludFBh
cnQ7CisgICAgICAgIHZhciBmdW5jMSA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgICAgIGludFBh
cnQgPSBNYXRoLnRydW5jKHgpOworICAgICAgICAgICAgcmV0dXJuIHggLSBpbnRQYXJ0OworICAg
ICAgICB9OworICAgICAgICB2YXIgZnVuYzIgPSBmdW5jdGlvbih4KSB7CisgICAgICAgICAgICBy
ZXR1cm4gTWF0aC50cnVuYyh4KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZnJhY0lWID0g
dGN1SW50ZXJ2YWwuYXBwbHlNb25vdG9uZTFwKGZ1bmMxLCBpYXJncy5hKTsKKyAgICAgICAgdmFy
IHdob2xlSVYgPSB0Y3VJbnRlcnZhbC5hcHBseU1vbm90b25lMXAoZnVuYzIsIGlhcmdzLmEpOwor
CisgICAgICAgIGlmICghaWFyZ3MuYS5pc0Zpbml0ZSgpKSB7CisgICAgICAgICAgICAvLyBCZWhh
dmlvciBvbiBtb2RmKEluZikgbm90IHdlbGwtZGVmaW5lZCwgYWxsb3cgYW55dGhpbmcgYXMgYSBm
cmFjdGlvbmFsIHBhcnQKKyAgICAgICAgICAgIC8vIFNlZSBLaHJvbm9zIGJ1ZyAxMzkwNworICAg
ICAgICAgICAgZnJhY0lWLm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGN1SW50ZXJ2YWwuTkFOKTsK
KyAgICAgICAgfQorCisgICAgICAgIGN0eC5lbnYubV9tYXBbdmFyaWFibGVuYW1lc1sxXV0gPSB3
aG9sZUlWOworICAgICAgICByZXR1cm4gZnJhY0lWOworICAgIH07CisKKyAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuTW9kZi5wcm90b3R5cGUuZ2V0T3V0UGFyYW1JbmRleCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVk
RnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWl4ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBzaWcgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNp
Z25hdHVyZSgnZmxvYXQnLCAnZmxvYXQnLCAnZmxvYXQnLCAnZmxvYXQnKTsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jLmNhbGwodGhpcywgc2lnKTsKKyAgICB9
OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1peCwgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jKTsKKworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5NaXgucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuICdtaXgnOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWl4
LnByb3RvdHlwZS5vcGVyYXRpb24xID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8v
ICh4ICogKGNvbnN0YW50KDEuMGYpIC0gYSkpICsgeSAqIGEKKyAgICAgICAgdmFyIHggPSBhcmdz
LmE7CisgICAgICAgIHZhciB5ID0gYXJncy5iOworICAgICAgICB2YXIgYSA9IGFyZ3MuYzsKKyAg
ICAgICAgdmFyIG9uZSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29uc3RhbnQoMSk7
CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1Yigp
LCBvbmUsIGEpOworICAgICAgICB2YXIgdjEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5NdWwoKSwgeCwgdjApOworICAgICAgICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5NdWwoKSwgeSwgYSk7CisgICAgICAgIHZhciB2MyA9IGFwcChuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkFkZCgpLCB2MSwgdjIpOworICAgICAgICByZXR1cm4gdjM7
CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NaXgucHJvdG90eXBlLm9w
ZXJhdGlvbjIgPSBmdW5jdGlvbihjdHgsIGFyZ3MpIHsKKyAgICAgICAgLy8geCArICh5IC0geCkg
KiBhCisgICAgICAgIHZhciB4ID0gYXJncy5hOworICAgICAgICB2YXIgeSA9IGFyZ3MuYjsKKyAg
ICAgICAgdmFyIGEgPSBhcmdzLmM7CisgICAgICAgIHZhciB2MCA9IGFwcChuZXcgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlN1YigpLCB5LCB4KTsKKyAgICAgICAgdmFyIHYxID0gYXBwKG5ldyBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIGEsIHYwKTsKKyAgICAgICAgdmFyIHYyID0g
YXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWRkKCksIHgsIHYxKTsKKyAgICAgICAg
cmV0dXJuIHYyOworICAgIH07CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWl4LnBy
b3RvdHlwZS5kb0V4cGFuZCA9IGZ1bmN0aW9uKGN0eCwgYXJncyl7CisgICAgICAgIHJldHVybiBh
cHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BbHRlcm5hdGl2ZXModGhpcy5TaWcpLCB0
aGlzLm9wZXJhdGlvbjEoY3R4LCBhcmdzKSwgdGhpcy5vcGVyYXRpb24yKGN0eCwgYXJncyksIG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVm9pZCgpLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlZvaWQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU21vb3RoU3RlcCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgc2lnID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWdu
YXR1cmUoJ2Zsb2F0JywgJ2Zsb2F0JywgJ2Zsb2F0JywgJ2Zsb2F0Jyk7CisgICAgICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAgfTsK
KworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TbW9vdGhTdGVw
LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlNtb290aFN0ZXAucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuICdzbW9vdGhzdGVwJzsKKyAgICB9OworCisgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlNtb290aFN0ZXAucHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24o
Y3R4LCBhcmdzKSB7CisgICAgICAgIHZhciBlZGdlMCA9IGFyZ3MuYTsKKyAgICAgICAgdmFyIGVk
Z2UxID0gYXJncy5iOworICAgICAgICB2YXIgeCA9IGFyZ3MuYzsKKyAgICAgICAgdmFyIHplcm8g
PSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNvbnN0YW50KDApOworICAgICAgICB2YXIg
b25lID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCgxKTsKKyAgICAgICAg
Ly9jbGFtcCgoeCAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgY29uc3RhbnQoMC4wZiksIGNv
bnN0YW50KDEuMGYpKTsKKyAgICAgICAgdmFyIHYwID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuU3ViKCksIHgsIGVkZ2UwKTsKKyAgICAgICAgdmFyIHYxID0gYXBwKG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuU3ViKCksIGVkZ2UxLCBlZGdlMCk7CisgICAgICAgIHZhciB2
MiA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpdigpLCB2MCwgdjEpOworICAg
ICAgICB2YXIgdjMgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DbGFtcCgpLCB2
MiwgemVybywgb25lKTsKKyAgICAgICAgdmFyIHQgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
YmluZEV4cHJlc3Npb24oJ2Zsb2F0JywgJ3QnLCBjdHgsIHYzKTsKKyAgICAgICAgLy8odCAqIHQg
KiAoY29uc3RhbnQoMy4wZikgLSBjb25zdGFudCgyLjBmKSAqIHQpKQorICAgICAgICB2YXIgdHdv
ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCgyKTsKKyAgICAgICAgdmFy
IHRocmVlID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db25zdGFudCgzKTsKKyAgICAg
ICAgdmFyIHY0ID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIHYzLCB2
Myk7CisgICAgICAgIHZhciB2NSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11
bCgpLCB0d28sIHYzKTsKKyAgICAgICAgdmFyIHY2ID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuU3ViKCksIHRocmVlLCB2NSk7CisgICAgICAgIHZhciB2NyA9IGFwcChuZXcgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLk11bCgpLCB2NCwgdjYpOworICAgICAgICByZXR1cm4gdjc7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRz
IHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlBvdyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2ln
ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUoJ2Zsb2F0JywgJ2Zsb2F0
JywgJ2Zsb2F0Jyk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVu
Yy5jYWxsKHRoaXMsIHNpZyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5Qb3csIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVu
Yyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUG93LnByb3RvdHlwZS5nZXROYW1l
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAncG93JzsKKyAgICB9OworCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlBvdy5wcm90b3R5cGUuZG9FeHBhbmQgPSBmdW5jdGlvbihj
dHgsIGFyZ3MpIHsKKyAgICAgICAgLy8gZXhwMih5ICogbG9nMih4KSkKKyAgICAgICAgdmFyIHgg
PSBhcmdzLmE7CisgICAgICAgIHZhciB5ID0gYXJncy5iOworICAgICAgICB2YXIgdjAgPSBhcHAo
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Mb2cyKCksIHgpOworICAgICAgICB2YXIgdjEg
PSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwoKSwgeSwgdjApOworICAgICAg
ICB2YXIgdjIgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHAyKCksIHYxKTsK
KyAgICAgICAgcmV0dXJuIHYyOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMx
fQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHBGdW5jID0gZnVuY3Rp
b24obmFtZSwgZnVuYykgeworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0
RnVuYzEuY2FsbCh0aGlzLCBuYW1lLCBmdW5jKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xh
c3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cEZ1bmMsIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5DRmxvYXRGdW5jMSk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwRnVu
Yy5wcm90b3R5cGUuZ2V0Q29kb21haW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRj
dUludGVydmFsLndpdGhOdW1iZXJzKDAsIEluZmluaXR5KTsKKyAgICB9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkV4cEZ1bmMucHJvdG90eXBlLnByZWNpc2lvbiA9IGZ1bmN0aW9u
KGN0eCwgcmV0LCB4KSB7CisgICAgICAgIHN3aXRjaCAoY3R4LmZsb2F0UHJlY2lzaW9uKSB7Cisg
ICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC51bHAocmV0LCAzLjAgKyAyLjAgKiBN
YXRoLmFicyh4KSk7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lzaW9uLlBS
RUNJU0lPTl9NRURJVU1QOgorICAgICAgICAgICAgICAgIHJldHVybiBjdHguZm9ybWF0LnVscChy
ZXQsIDIuMCArIDIuMCAqIE1hdGguYWJzKHgpKTsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0xPV1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIGN0
eC5mb3JtYXQudWxwKHJldCwgMi4wKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCEnSW1wb3NzaWJsZScpOworICAgICAgICB9CisgICAgfTsK
KworICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5FeHBGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5FeHAgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkV4cEZ1bmMuY2FsbCh0aGlzLCAnZXhwJywgTWF0aC5leHApOworICAgIH07CisKKyAgICBz
ZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwLCBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuRXhwRnVuYyk7CisKKyAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwRnVuY30KKyAgICAgKi8K
KyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRXhwMiA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAvKioKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgICAgICogQHJldHVybiB7
bnVtYmVyfQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIGV4cDIgPSBmdW5jdGlvbih4KSB7Cisg
ICAgICAgICAgICByZXR1cm4gTWF0aC5leHAoeCAqIE1hdGguTE4yKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cEZ1bmMuY2FsbCh0aGlzLCAnZXhwMics
IGV4cDIpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRXhwMiwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkV4cEZ1bmMpOworCisgICAgLyoq
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5DRmxvYXRGdW5jMX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuTG9nRnVuYyA9IGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKKyAgICAgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMxLmNhbGwodGhpcywgbmFtZSwgZnVuYyk7CisgICAgfTsK
KworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Mb2dGdW5jLCBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzEpOworCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkxvZ0Z1bmMucHJvdG90eXBlLnByZWNpc2lvbiA9IGZ1bmN0aW9uKGN0eCwg
cmV0LCB4KSB7CisgICAgICAgIGlmICh4IDw9IDApCisgICAgICAgICAgICByZXR1cm4gTmFOOwor
ICAgICAgICBzd2l0Y2ggKGN0eC5mbG9hdFByZWNpc2lvbikgeworICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFA6CisgICAgICAgICAgICAgICAg
cmV0dXJuICgwLjUgPD0geCAmJiB4IDw9IDIuMCkgPyBkZU1hdGguZGVMZEV4cCgxLjAsIC0yMSkg
OiBjdHguZm9ybWF0LnVscChyZXQsIDMuMCk7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0
aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9NRURJVU1QOgorICAgICAgICAgICAgICAgIHJldHVybiAo
MC41IDw9IHggJiYgeCA8PSAyLjApID8gZGVNYXRoLmRlTGRFeHAoMS4wLCAtNykgOiBjdHguZm9y
bWF0LnVscChyZXQsIDIuMCk7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwucHJlY2lz
aW9uLlBSRUNJU0lPTl9MT1dQOgorICAgICAgICAgICAgICAgIHJldHVybiBjdHguZm9ybWF0LnVs
cChyZXQsIDIuMCk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcighJ0ltcG9zc2libGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgIC8qKgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuTG9nRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTG9n
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Mb2dGdW5j
LmNhbGwodGhpcywgJ2xvZycsIE1hdGgubG9nKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xh
c3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkxvZywgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkxvZ0Z1bmMpOworCisgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5k
cyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkxvZ0Z1bmN9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkxvZzIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkxvZ0Z1bmMuY2FsbCh0aGlzLCAnbG9nMicsIE1hdGgubG9nMik7Cisg
ICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Mb2cy
LCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTG9nRnVuYyk7CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNG
bG9hdEZ1bmMxfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNl
RnVuYzEgPSBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5DRmxvYXRGdW5jMS5jYWxsKHRoaXMsIG5hbWUsIGZ1bmMpOworICAgIH07CisKKyAg
ICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMxLCBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzEpOworCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMS5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rpb24o
Y3R4LCByZXQsIHgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuUHJlY2lzZUZ1bmMxfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5B
YnMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNp
c2VGdW5jMS5jYWxsKHRoaXMsICdhYnMnLCBNYXRoLmFicyk7CisgICAgfTsKKyAgICBzZXRQYXJl
bnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQWJzLCBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuUHJlY2lzZUZ1bmMxKTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMxfQorICAg
ICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVuYzEuY2FsbCh0aGlzLCAn
c2lnbicsIE1hdGguc2lnbik7CisgICAgfTsKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuU2lnbiwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5j
MSk7CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMX0KKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRmxvb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMS5jYWxsKHRoaXMsICdmbG9vcicsIE1hdGguZmxv
b3IpOworICAgIH07CisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkZsb29yLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMxKTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuUHJlY2lzZUZ1bmMxfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5Sb3VuZEV2ZW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLlByZWNpc2VGdW5jMS5jYWxsKHRoaXMsICdyb3VuZEV2ZW4nLCBkZU1hdGgucmludCk7
CisgICAgfTsKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUm91
bmRFdmVuLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMxKTsKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuUHJlY2lzZUZ1bmMxfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5DZWlsID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5QcmVjaXNlRnVuYzEuY2FsbCh0aGlzLCAnY2VpbCcsIE1hdGguY2VpbCk7CisgICAgfTsKKyAg
ICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2VpbCwgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMSk7CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2VG
dW5jMX0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJ1bmMgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMS5j
YWxsKHRoaXMsICd0cnVuYycsIE1hdGgudHJ1bmMpOworICAgIH07CisgICAgc2V0UGFyZW50Q2xh
c3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRydW5jLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuUHJlY2lzZUZ1bmMxKTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzJ9CisgICAgICov
CisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2VGdW5jMiA9IGZ1bmN0aW9uKG5h
bWUsIGZ1bmMpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMy
LmNhbGwodGhpcywgbmFtZSwgZnVuYyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVuYzIsIGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5DRmxvYXRGdW5jMik7CisKKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lz
ZUZ1bmMyLnByb3RvdHlwZS5wcmVjaXNpb24gPSBmdW5jdGlvbihjdHgsIHJldCwgeCwgeSkgewor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVuYzJ9
CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1pbiA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMyLmNhbGwodGhp
cywgJ21pbicsIE1hdGgubWluKTsKKyAgICB9OworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5NaW4sIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVu
YzIpOworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2ds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVuYzJ9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLk1heCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMyLmNhbGwodGhpcywgJ21heCcsIE1hdGgubWF4KTsK
KyAgICB9OworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXgs
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5QcmVjaXNlRnVuYzIpOworCisgICAgLyoqCisgICAg
ICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5QcmVjaXNlRnVuYzJ9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN0
ZXAgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBlZGdlCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICAgICAqIHJldHVybiBu
dW1iZXIKKyAgICAgICAgICovCisgICAgICAgIHZhciBzdGVwID0gZnVuY3Rpb24oZWRnZSwgeCkg
eworICAgICAgICAgICAgcmV0dXJuIHggPCBlZGdlID8gMC4wIDogMS4wOworICAgICAgICB9Owor
ICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMyLmNhbGwodGhpcywg
J3N0ZXAnLCBzdGVwKTsKKyAgICB9OworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5TdGVwLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzZUZ1bmMyKTsK
KworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzF9CisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlRyaWdGdW5jID0gZnVuY3Rpb24obmFtZSwgZnVuYywgbG9FeCwgaGlFeCkg
eworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzEuY2FsbCh0aGlz
LCBuYW1lLCBmdW5jKTsKKyAgICAgICAgdGhpcy5tX2xvRXh0cmVtdW0gPSBsb0V4OworICAgICAg
ICB0aGlzLm1faGlFeHRyZW11bSA9IGhpRXg7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNz
KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVuYywgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkNGbG9hdEZ1bmMxKTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVu
Yy5wcm90b3R5cGUuaW5uZXJFeHRyZW1hID0gZnVuY3Rpb24oY3R4LCBhbmdsZSkgeworICAgICAg
ICB2YXIgbG8gPSBhbmdsZS5sbygpOworICAgICAgICB2YXIgaGkgPSBhbmdsZS5oaSgpOworICAg
ICAgICB2YXIgbG9TbG9wZSA9IHRoaXMuZG9HZXRTbG9wZShsbyk7CisgICAgICAgIHZhciBoaVNs
b3BlID0gdGhpcy5kb0dldFNsb3BlKGhpKTsKKworICAgICAgICAvLyBEZXRlY3QgdGhlIGhpZ2gg
YW5kIGxvdyB2YWx1ZXMgdGhlIGZ1bmN0aW9uIGNhbiB0YWtlIGJldHdlZW4gdGhlCisgICAgICAg
IC8vIGludGVydmFsIGVuZHBvaW50cy4KKyAgICAgICAgaWYgKGFuZ2xlLmxlbmd0aCgpID49IDIu
MCAqIE1hdGguUEkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBpbnRlcnZhbCBpcyBsb25nZXIgdGhh
biBhIGZ1bGwgY3ljbGUsIHNvIGl0IG11c3QgZ2V0IGFsbCBwb3NzaWJsZSB2YWx1ZXMuCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5tX2hpRXh0cmVtdW0ub3BlcmF0b3JPckJpbmFyeSh0aGlzLm1f
bG9FeHRyZW11bSk7CisgICAgICAgIH0gZWxzZSBpZiAobG9TbG9wZSA9PSAxICYmIGhpU2xvcGUg
PT0gLTEpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzbG9wZSBjYW4gY2hhbmdlIGZyb20gcG9zaXRp
dmUgdG8gbmVnYXRpdmUgb25seSBhdCB0aGUgbWF4aW11bSB2YWx1ZS4KKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLm1faGlFeHRyZW11bTsKKyAgICAgICAgfSBlbHNlIGlmIChsb1Nsb3BlID09IC0x
ICYmIGhpU2xvcGUgPT0gMSkgeworICAgICAgICAgICAgLy8gVGhlIHNsb3BlIGNhbiBjaGFuZ2Ug
ZnJvbSBuZWdhdGl2ZSB0byBwb3NpdGl2ZSBvbmx5IGF0IHRoZSBtYXhpbXVtIHZhbHVlLgorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMubV9sb0V4dHJlbXVtOworICAgICAgICB9IGVsc2UgaWYgKGxv
U2xvcGUgPT0gaGlTbG9wZSAmJgorICAgICAgICAgICAgICAgICBkZU1hdGguZGVTaWduKHRoaXMu
YXBwbHlFeGFjdChoaSkgLSB0aGlzLmFwcGx5RXhhY3QobG8pKSAqIGxvU2xvcGUgPT0gLTEpIHsK
KyAgICAgICAgICAgIC8vIFRoZSBzbG9wZSBoYXMgY2hhbmdlZCB0d2ljZSBiZXR3ZWVuIHRoZSBl
bmRwb2ludHMsIHNvIGJvdGggZXh0cmVtYSBhcmUgaW5jbHVkZWQuCisgICAgICAgICAgICByZXR1
cm4gdGhpcy5tX2hpRXh0cmVtdW0ub3BlcmF0b3JPckJpbmFyeSh0aGlzLm1fbG9FeHRyZW11bSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7
CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVuYy5wcm90b3R5
cGUuZ2V0Q29kb21haW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmVz
dWx0IGlzIGFsd2F5cyB3aXRoaW4gWy0xLCAxXSwgb3IgTmFOIChmb3IgKy1pbmYpCisgICAgICAg
IHZhciB2ID0gdGN1SW50ZXJ2YWwud2l0aEludGVydmFscyhuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2
YWwoLTEpLCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoMSkpOworICAgICAgICByZXR1cm4gdi5v
cGVyYXRvck9yQmluYXJ5KHRjdUludGVydmFsLk5BTik7CisgICAgfTsKKworICAgIGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVuYy5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rpb24o
Y3R4LCByZXQsIGFyZykgeworICAgICAgICBpZiAoY3R4LmZsb2F0UHJlY2lzaW9uID09IGdsdVNo
YWRlclV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCkgeworICAgICAgICAgICAgLy8gVXNl
IHByZWNpc2lvbiBmcm9tIE9wZW5DTCBmYXN0IHJlbGF4ZWQgbWF0aAorICAgICAgICAgICAgaWYg
KC1NYXRoLlBJIDw9IGFyZyAmJiBhcmcgPD0gTWF0aC5QSSkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBkZU1hdGguZGVMZEV4cCgxLjAsIC0xMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIC8vICJsYXJnZXIgb3RoZXJ3aXNlIiwgbGV0J3MgcGljayB8eHwgKiAyXi0x
MiAsIHdoaWNoIGlzIHNsaWdodGx5IG92ZXIKKyAgICAgICAgICAgICAgICAvLyAyXi0xMSBhdCB4
ID09IHBpLgorICAgICAgICAgICAgICAgIHJldHVybiBkZU1hdGguZGVMZEV4cChNYXRoLmFicyhh
cmcpLCAtMTIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGN0eC5mbG9hdFBy
ZWNpc2lvbiA9PSBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fTUVESVVNUCkgewor
ICAgICAgICAgICAgaWYgKC1NYXRoLlBJIDw9IGFyZyAmJiBhcmcgPD0gTWF0aC5QSSkgeworICAg
ICAgICAgICAgICAgIC8vIGZyb20gT3BlbkNMIGhhbGYtZmxvYXQgZXh0ZW5zaW9uIHNwZWNpZmlj
YXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC51bHAocmV0LCAyLjApOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyB8eHwgKiAyXi0xMCAsIHNs
aWdodGx5IGxhcmdlciB0aGFuIDIgVUxQIGF0IHggPT0gcGkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZGVNYXRoLmRlTGRFeHAoTWF0aC5hYnMoYXJnKSwgLTEwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGZyb20gT3BlbkNMIGhhbGYtZmxvYXQgZXh0
ZW5zaW9uIHNwZWNpZmljYXRpb24KKyAgICAgICAgICAgIHJldHVybiBjdHguZm9ybWF0LnVscChy
ZXQsIDIuMCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGFuZ2xlCisgICAgICogQHJldHVybiBudW1iZXIKKyAgICAgKi8KKyAgICBnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuVHJpZ0Z1bmMucHJvdG90eXBlLmRvR2V0U2xvcGUgPSBmdW5jdGlv
bihhbmdsZSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBs
ZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9y
CisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVuY30KKyAg
ICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2luID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UcmlnRnVuYy5jYWxsKHRoaXMsICdzaW4n
LCBNYXRoLnNpbiwgbmV3IHRjdUludGVydmFsLkludGVydmFsKC0xKSwgbmV3IHRjdUludGVydmFs
LkludGVydmFsKDEpKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlNpbiwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyaWdGdW5jKTsKKwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaW4ucHJvdG90eXBlLmRvR2V0U2xvcGUgPSBm
dW5jdGlvbihhbmdsZSkgeworICAgICAgICByZXR1cm4gZGVNYXRoLmRlU2lnbihNYXRoLmNvcyhh
bmdsZSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBA
ZXh0ZW5kcyB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyaWdGdW5jfQorICAgICAqLworICAg
IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5Db3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLlRyaWdGdW5jLmNhbGwodGhpcywgJ2NvcycsIE1hdGguY29z
LCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwoLTEpLCBuZXcgdGN1SW50ZXJ2YWwuSW50ZXJ2YWwo
MSkpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuQ29zLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVHJpZ0Z1bmMpOworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkNvcy5wcm90b3R5cGUuZG9HZXRTbG9wZSA9IGZ1bmN0aW9uKGFu
Z2xlKSB7CisgICAgICAgIHJldHVybiAtZGVNYXRoLmRlU2lnbihNYXRoLnNpbihhbmdsZSkpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRlcml2ZWRGdW5jfQorICAgICAqLworICAgIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5UYW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNpZyA9
IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2lnbmF0dXJlKCdmbG9hdCcsICdmbG9hdCcp
OworICAgICAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMuY2FsbCh0aGlz
LCBzaWcpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRDbGFzcyhnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuVGFuLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRhbi5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gJ3Rhbic7CisgICAgfTsKKworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5UYW4ucHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24oY3R4LCBhcmdzKSB7
CisgICAgICAgIC8vICBzaW4oeCkgKiAoY29uc3RhbnQoMS4wZikgLyBjb3MoeCkKKyAgICAgICAg
dmFyIHggPSBhcmdzLmE7CisgICAgICAgIHZhciBzaW4gPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5TaW4oKSwgeCk7CisgICAgICAgIHZhciBjb3MgPSBhcHAobmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5Db3MoKSwgeCk7CisgICAgICAgIHZhciBleHByID0gYXBwKG5ldyBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGl2KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkNvbnN0YW50KDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29zKTsKKworICAgICAgICBleHByID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5BcHBseSgnZmxvYXQnLCBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk11bCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHByKTsKKyAgICAgICAgcmV0dXJuIGV4cHI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zs
b2F0RnVuYzF9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFTaW4gPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMx
LmNhbGwodGhpcywgJ2FzaW4nLCBNYXRoLmFzaW4pOworICAgIH07CisKKyAgICBzZXRQYXJlbnRD
bGFzcyhnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQVNpbiwgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkNGbG9hdEZ1bmMxKTsKKworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BU2luLnBy
b3RvdHlwZS5wcmVjaXNpb24gPSBmdW5jdGlvbihjdHgsIHJldCwgeCkgeworICAgICAgICBpZiAo
IWRlTWF0aC5kZUluQm91bmRzMzIoeCwgLTEuMCwgMS4wKSkKKyAgICAgICAgICAgIHJldHVybiBO
YU47CisKKyAgICAgICAgaWYgKGN0eC5mbG9hdFByZWNpc2lvbiA9PSBnbHVTaGFkZXJVdGlsLnBy
ZWNpc2lvbi5QUkVDSVNJT05fSElHSFApIHsKKyAgICAgICAgICAgIC8vIEFic29sdXRlIGVycm9y
IG9mIDJeLTExCisgICAgICAgICAgICByZXR1cm4gZGVNYXRoLmRlTGRFeHAoMS4wLCAtMTEpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQWJzb2x1dGUgZXJyb3Igb2YgMl4tOAor
ICAgICAgICAgICAgcmV0dXJuIGRlTWF0aC5kZUxkRXhwKDEuMCwgLTgpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzF9CisgICAgICovCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkFyY1RyaWdGdW5jID0gZnVuY3Rpb24obmFtZSwgZnVuYywgcHJl
Y2lzaW9uVUxQcywgZG9tYWluLCBjb2Rkb21haW4pIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkNGbG9hdEZ1bmMxLmNhbGwodGhpcywgbmFtZSwgZnVuYyk7CisgICAgICAgIHRo
aXMubV9wcmVjaXNpb24gPSBwcmVjaXNpb25VTFBzOworICAgICAgICB0aGlzLm1fZG9tYWluID0g
ZG9tYWluOworICAgICAgICB0aGlzLm1fY29kb21haW4gPSBjb2Rkb21haW47CisgICAgfTsKKwor
ICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcmNUcmlnRnVuYywg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNGbG9hdEZ1bmMxKTsKKworICAgIGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5BcmNUcmlnRnVuYy5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rpb24o
Y3R4LCByZXQsIHgpIHsKKyAgICAgICAgaWYgKCF0aGlzLm1fZG9tYWluLmNvbnRhaW5zKG5ldyB0
Y3VJbnRlcnZhbC5JbnRlcnZhbCh4KSkpCisgICAgICAgICAgICByZXR1cm4gTmFOOworCisgICAg
ICAgIGlmIChjdHguZmxvYXRQcmVjaXNpb24gPT0gZ2x1U2hhZGVyVXRpbC5wcmVjaXNpb24uUFJF
Q0lTSU9OX0hJR0hQKSB7CisgICAgICAgICAgICAvLyBVc2UgT3BlbkNMJ3MgcHJlY2lzaW9uCisg
ICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC51bHAocmV0LCB0aGlzLm1fcHJlY2lzaW9uKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFVzZSBPcGVuQ0wgaGFsZi1mbG9hdCBz
cGVjCisgICAgICAgICAgICByZXR1cm4gY3R4LmZvcm1hdC51bHAocmV0LCAyLjApOworICAgICAg
ICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXJjVHJpZ0Z1bmN9CisgICAgICovCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFDb3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLkFyY1RyaWdGdW5jLmNhbGwodGhpcywgJ2Fjb3MnLCBNYXRo
LmFjb3MsIDQwOTYuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRjdUludGVydmFsLndpdGhOdW1iZXJzKC0xLCAxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjdUludGVydmFsLndpdGhOdW1iZXJzKDAs
IE1hdGguUEkpKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkFDb3MsIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcmNUcmlnRnVuYyk7CisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkFyY1RyaWdGdW5jfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVj
aXNpb25UZXN0cy5BVGFuID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5BcmNUcmlnRnVuYy5jYWxsKHRoaXMsICdhdGFuJywgTWF0aC5hdGFuLCA0MDk2LjAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VJbnRl
cnZhbC51bmJvdW5kZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRjdUludGVydmFsLndpdGhOdW1iZXJzKC1NYXRoLlBJICogMC41LCBNYXRoLlBJ
ICogMC41KSk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5BVGFuLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQXJjVHJpZ0Z1bmMpOworCisg
ICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5DRmxvYXRGdW5jMn0KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuQVRhbjIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLkNGbG9hdEZ1bmMyLmNhbGwodGhpcywgJ2F0YW4nLCBNYXRoLmF0YW4yKTsKKyAgICB9
OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFUYW4yLCBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ0Zsb2F0RnVuYzIpOworCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkFUYW4yLnByb3RvdHlwZS5pbm5lckV4dHJlbWEgPSBmdW5jdGlvbihjdHgs
IHhpLCB5aSkgeworICAgICAgICB2YXIgcmV0ID0gbmV3IHRjdUludGVydmFsLkludGVydmFsKCk7
CisKKyAgICAgICAgaWYgKHlpLmNvbnRhaW5zKHRjdUludGVydmFsLlpFUk8pKSB7CisgICAgICAg
ICAgICBpZiAoeGkuY29udGFpbnModGN1SW50ZXJ2YWwuWkVSTykpCisgICAgICAgICAgICAgICAg
cmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGN1SW50ZXJ2YWwuTkFOKTsKKyAgICAgICAgICAg
IGlmICh4aS5pbnRlcnNlY3RzKHRjdUludGVydmFsLndpdGhOdW1iZXJzKC1JbmZpbml0eSwgMCkp
KQorICAgICAgICAgICAgICAgIHJldC5vcGVyYXRvck9yQXNzaWduQmluYXJ5KHRjdUludGVydmFs
LndpdGhOdW1iZXJzKC1NYXRoLlBJLCBNYXRoLlBJKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY3R4LmZvcm1hdC5oYXNJbmYoKSAhPSB0Y3VGbG9hdEZvcm1hdC5ZZXNOb01heWJlLllFUyAm
JiAoIXlpLmlzRmluaXRlKCkgfHwgIXhpLmlzRmluaXRlKCkpKSB7CisgICAgICAgICAgICAvLyBJ
bmZpbml0aWVzIG1heSBub3QgYmUgc3VwcG9ydGVkLCBhbGxvdyBhbnl0aGluZywgaW5jbHVkaW5n
IE5hTgorICAgICAgICAgICAgcmV0Lm9wZXJhdG9yT3JBc3NpZ25CaW5hcnkodGN1SW50ZXJ2YWwu
TkFOKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKworICAgIGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BVGFuMi5wcm90b3R5cGUucHJlY2lzaW9uID0gZnVuY3Rp
b24oY3R4LCByZXQsIHgsIHkpIHsKKyAgICAgICAgaWYgKGN0eC5mbG9hdFByZWNpc2lvbiA9PSBn
bHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFApCisgICAgICAgICAgICByZXR1
cm4gY3R4LmZvcm1hdC51bHAocmV0LCA0MDk2LjApOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gY3R4LmZvcm1hdC51bHAocmV0LCAyLjApOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBl
eHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmN9CisgICAgICovCisg
ICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRldGVybWluYW50QmFzZSA9IGZ1bmN0aW9uKHNp
emUpIHsKKyAgICAgICAgdmFyIHNpZyA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuU2ln
bmF0dXJlKCdmbG9hdCcsICdtYXQnICsgc2l6ZSk7CisgICAgICAgIGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNpZyk7CisgICAgfTsKKworICAgIHNldFBh
cmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXRlcm1pbmFudEJhc2UsIGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYyk7CisKKyAgICBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuRGV0ZXJtaW5hbnRCYXNlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiAnZGV0ZXJtaW5hbnQnOworICAgIH07CisKKyAgIC8qKgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMu
RGV0ZXJtaW5hbnRCYXNlfQorICAgICAqLworICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5E
ZXRlcm1pbmFudCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBUT0RPOiBTdXBwb3J0IHNpemVz
IDMgYW5kIDQKKyAgICAgICAgdGhpcy5zaXplID0gMjsKKyAgICAgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkRldGVybWluYW50QmFzZS5jYWxsKHRoaXMsIHRoaXMuc2l6ZSk7CisgICAgfTsK
KworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXRlcm1pbmFu
dCwgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRldGVybWluYW50QmFzZSk7CisKKyAgICBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuRGV0ZXJtaW5hbnQucHJvdG90eXBlLmRvRXhwYW5kID0gZnVu
Y3Rpb24oY3R4LCBhcmdzKSB7CisgICAgICAgIC8vICBtYXRbMF1bMF0gKiBtYXRbMV1bMV0gLSBt
YXRbMV1bMF0gKiBtYXRbMF1bMV0KKyAgICAgICAgdmFyIGVsZW0wXzAgPSBuZXcgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLk1hdHJpeFZhcmlhYmxlKGFyZ3MuYSwgMCwgMCk7CisgICAgICAgIHZh
ciBlbGVtMF8xID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhWYXJpYWJsZShh
cmdzLmEsIDAsIDEpOworICAgICAgICB2YXIgZWxlbTFfMCA9IG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuTWF0cml4VmFyaWFibGUoYXJncy5hLCAxLCAwKTsKKyAgICAgICAgdmFyIGVsZW0x
XzEgPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1hdHJpeFZhcmlhYmxlKGFyZ3MuYSwg
MSwgMSk7CisKKyAgICAgICAgdmFyIHZhbDAgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5NdWwoKSwgZWxlbTBfMCwgZWxlbTFfMSk7CisgICAgICAgIHZhciB2YWwxID0gYXBwKG5l
dyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTXVsKCksIGVsZW0wXzEsIGVsZW0xXzApOworICAg
ICAgICByZXR1cm4gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BcHBseSgnZmxvYXQnLCBu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlN1YigpLCB2YWwwLCB2YWwxKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuY30KKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHMuSW52ZXJzZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnNpemUgPSAy
OworICAgICAgICB2YXIgbmFtZSA9ICdtYXQnICsgdGhpcy5zaXplOworICAgICAgICB2YXIgc2ln
ID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaWduYXR1cmUobmFtZSwgbmFtZSk7Cisg
ICAgICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EZXJpdmVkRnVuYy5jYWxsKHRoaXMsIHNp
Zyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNzKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5JbnZlcnNlLCBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRGVyaXZlZEZ1bmMpOworCisgICAg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkludmVyc2UucHJvdG90eXBlLmdldE5hbWUgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuICdpbnZlcnNlJzsKKyAgICB9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLkludmVyc2UucHJvdG90eXBlLmRvRXhwYW5kID0gZnVuY3Rpb24o
Y3R4LCBhcmdzKSB7CisgICAgICAgIHZhciBtYXQgPSBhcmdzLmE7CisgICAgICAgIHZhciB2MCA9
IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRldGVybWluYW50KCksIG1hdCk7Cisg
ICAgICAgIHZhciBkZXQgPSBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYmluZEV4cHJlc3Npb24o
J2Zsb2F0JywgJ2RldCcsIGN0eCwgdjApOworCisgICAgICAgIHZhciBlbGVtMF8wID0gbmV3IGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhWYXJpYWJsZShhcmdzLmEsIDAsIDApOworICAg
ICAgICB2YXIgZWxlbTBfMSA9IG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWF0cml4VmFy
aWFibGUoYXJncy5hLCAwLCAxKTsKKyAgICAgICAgdmFyIGVsZW0xXzAgPSBuZXcgZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLk1hdHJpeFZhcmlhYmxlKGFyZ3MuYSwgMSwgMCk7CisgICAgICAgIHZh
ciBlbGVtMV8xID0gbmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhWYXJpYWJsZShh
cmdzLmEsIDEsIDEpOworCisgICAgICAgIHZhciByZXN1bHQwXzAgPSBhcHAobmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5EaXYoKSwgZWxlbTFfMSwgZGV0KTsKKyAgICAgICAgdmFyIHJlc3Vs
dDBfMSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpdigpLCBlbGVtMF8xLCBk
ZXQpOworICAgICAgICByZXN1bHQwXzEgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5OZWdhdGUoKSwgcmVzdWx0MF8xKTsKKyAgICAgICAgdmFyIHJlc3VsdDFfMCA9IGFwcChuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRpdigpLCBlbGVtMV8wLCBkZXQpOworICAgICAgICBy
ZXN1bHQxXzAgPSBhcHAobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5OZWdhdGUoKSwgcmVz
dWx0MV8wKTsKKyAgICAgICAgdmFyIHJlc3VsdDFfMSA9IGFwcChuZXcgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkRpdigpLCBlbGVtMF8wLCBkZXQpOworCisgICAgICAgIHZhciBjb2wwID0gYXBw
KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuR2VuVmVjKHRoaXMuc2l6ZSwgdHJ1ZSksIHJl
c3VsdDBfMCwgcmVzdWx0MV8wKTsKKyAgICAgICAgdmFyIGNvbDEgPSBhcHAobmV3IGdsc0J1aWx0
aW5QcmVjaXNpb25UZXN0cy5HZW5WZWModGhpcy5zaXplLCB0cnVlKSwgcmVzdWx0MF8xLCByZXN1
bHQxXzEpOworICAgICAgICB2YXIgcmV0ID0gYXBwKG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuR2VuTWF0KHRoaXMuc2l6ZSwgdGhpcy5zaXplKSwgY29sMCwgY29sMSk7CisKKyAgICAgICAg
cmV0dXJuIHJldDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuUHJlY2lzaW9uVGVzdENvbnRleHR9IGN0eAorICAgICAqIEBwYXJhbSB7
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3J5fSBmYWN0b3J5CisgICAgICogQHJl
dHVybiB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmNyZWF0ZUZ1bmNHcm91cCA9IGZ1bmN0aW9uKGN0eCwgZmFjdG9yeSkgeworICAg
ICAgICAvKiogQHR5cGUge3RjdVRlc3RDYXNlLkRlcXBUZXN0fSAqLyB2YXIgZ3JvdXAgPSB0Y3VU
ZXN0Q2FzZS5uZXdUZXN0KGZhY3RvcnkuZ2V0TmFtZSgpLCBmYWN0b3J5LmdldERlc2MoKSk7CisK
KyAgICAgICAgZm9yICh2YXIgcHJlY05keCBpbiBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbikgewor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gKi8gdmFyIHBy
ZWNpc2lvbiA9IGdsdVNoYWRlclV0aWwucHJlY2lzaW9uW3ByZWNOZHhdOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBwcmVjTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0UHJl
Y2lzaW9uTmFtZShwcmVjaXNpb24pOworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VGbG9hdEZv
cm1hdC5GbG9hdEZvcm1hdH0gKi8gdmFyIGZtdCA9IGN0eC5mb3JtYXRzW3ByZWNpc2lvbl07Cisg
ICAgICAgICAgICAvKiogQHR5cGUge3RjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9ybWF0fSAqLyB2YXIg
aGlnaHBGbXQgPSBjdHguZm9ybWF0c1tnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05f
SElHSFBdOworCisgICAgICAgICAgICBmb3IgKHZhciBzaGFkZXJOZHggaW4gY3R4LnNoYWRlclR5
cGVzKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFtLnNoYWRl
clR5cGV9ICovIHZhciBzaGFkZXJUeXBlID0gY3R4LnNoYWRlclR5cGVzW3NoYWRlck5keF07Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzaGFkZXJOYW1lID0gZ2x1
U2hhZGVyUHJvZ3JhbS5nZXRTaGFkZXJUeXBlTmFtZShzaGFkZXJUeXBlKTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG5hbWUgPSBwcmVjTmFtZSArICdfJyArIHNo
YWRlck5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuQ29udGV4dH0gKi8gdmFyIGNhc2VDdHggPSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkNvbnRleHQobmFtZSwgZm10LCBoaWdocEZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIHNoYWRlclR5cGUsIGN0eC5udW1S
YW5kb21zKTsKKworICAgICAgICAgICAgICAgIGdyb3VwLmFkZENoaWxkKGZhY3RvcnkuY3JlYXRl
Q2FzZShjYXNlQ3R4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gZ3JvdXA7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLkNhc2VGYWN0b3JpZXN9IGNhc2VzCisgICAgICogQHBhcmFtIHtBcnJheTxn
bHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGU+fSBzaGFkZXJUeXBlcworICAgICAqIEBwYXJhbSB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9IGRzdEdyb3VwCisgICAgICovCisgICAgZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLmFkZEJ1aWx0aW5QcmVjaXNpb25UZXN0cyA9IGZ1bmN0aW9uKGNhc2VzLCBz
aGFkZXJUeXBlcywgZHN0R3JvdXApIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VGbG9hdEZvcm1h
dC5GbG9hdEZvcm1hdH0gKi8gdmFyIGhpZ2hwID0gbmV3IHRjdUZsb2F0Rm9ybWF0LkZsb2F0Rm9y
bWF0KC0xMjYsIDEyNywgMjMsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGN1RmxvYXRGb3JtYXQuWWVzTm9NYXliZS5NQVlCRSwgLy8gc3Vi
bm9ybWFscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTLCAvLyBpbmZpbml0aWVzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1RmxvYXRGb3JtYXQuWWVz
Tm9NYXliZS5NQVlCRSk7IC8vIE5hTgorICAgICAgICAvLyBcdG9kbyBbMjAxNC0wNC0wMSBsYXVy
aV0gQ2hlY2sgdGhlc2Ugb25jZSBLaHJvbm9zIGJ1ZyAxMTg0MCBpcyByZXNvbHZlZC4KKyAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0gKi8gdmFyIG1lZGl1bXAg
PSBuZXcgdGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXQoLTEzLCAxMywgOSwgZmFsc2UpOworICAg
ICAgICAvLyBBIGZpeGVkLXBvaW50IGZvcm1hdCBpcyBqdXN0IGEgZmxvYXRpbmcgcG9pbnQgZm9y
bWF0IHdpdGggYSBmaXhlZAorICAgICAgICAvLyBleHBvbmVudCBhbmQgc3VwcG9ydCBmb3Igc3Vi
bm9ybWFscy4KKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VGbG9hdEZvcm1hdC5GbG9hdEZvcm1hdH0g
Ki8gdmFyIGxvd3AgPSBuZXcgdGN1RmxvYXRGb3JtYXQuRmxvYXRGb3JtYXQoMCwgMCwgNywgZmFs
c2UsIHRjdUZsb2F0Rm9ybWF0Llllc05vTWF5YmUuWUVTKTsKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuUHJlY2lzaW9uVGVzdENvbnRleHR9ICovIHZhciBjdHgg
PSBuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlByZWNpc2lvblRlc3RDb250ZXh0KGhpZ2hw
LCBtZWRpdW1wLCBsb3dwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNoYWRlclR5cGVzLCAxNjM4NCk7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgY2FzZXMuZ2V0RmFjdG9yaWVzKCkubGVuZ3RoOyArK25keCkKKyAgICAgICAgICAg
IGRzdEdyb3VwLmFkZENoaWxkKGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcmVhdGVGdW5jR3Jv
dXAoY3R4LCBjYXNlcy5nZXRGYWN0b3JpZXMoKVtuZHhdKSk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3Omdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5GdW5j
KX0gRgorICAgICAqIEBwYXJhbSB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VGYWN0b3Jp
ZXN9IGZ1bmNzCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lCisgICAgICovCisgICAgZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkgPSBmdW5jdGlvbihGLCBmdW5j
cywgbmFtZSkgeworICAgICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAg
bmFtZSA9IChuZXcgRigpKS5nZXROYW1lKCk7CisKKyAgICAgICAgZnVuY3MuYWRkRmFjdG9yeShu
ZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkdlbkZ1bmNDYXNlRmFjdG9yeShnbHNCdWlsdGlu
UHJlY2lzaW9uVGVzdHMubWFrZVZlY3Rvcml6ZWRGdW5jcyhGKSwgbmFtZSkpOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG5ldzpnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuRnVuYyl9IEYKKyAgICAgKi8KKyAgICBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3Jl
YXRlU2ltcGxlRnVuY0Nhc2VGYWN0b3J5ID0gZnVuY3Rpb24oRikgeworICAgICAgICByZXR1cm4g
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TaW1wbGVGdW5jQ2FzZUZhY3RvcnkobmV3IEYo
KSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjYXNlSWQgdGVz
dCBjYXNlIElkCisgICAgICogQHJldHVybiB7Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkNhc2VG
YWN0b3JpZXN9CisgICAgICovCisgICAgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNyZWF0ZUVT
M0J1aWx0aW5DYXNlcyA9IGZ1bmN0aW9uKGNhc2VJZCkgeworICAgICAgICAvKiogQHR5cGUge2ds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DYXNlRmFjdG9yaWVzfSAqLyB2YXIgZnVuY3MgPSBuZXcg
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkJ1aWx0aW5GdW5jcygpOworCisgICAgICAgIHN3aXRj
aCAoY2FzZUlkKSB7CisgICAgICAgICAgICBjYXNlIDA6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BZGQsIGZ1bmNzKTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRT
Y2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdWIsIGZ1bmNzKTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDI6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJG
YWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NdWwsIGZ1bmNzKTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDM6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5
KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5EaXYsIGZ1bmNzKTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDQ6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5SYWRpYW5zLCBmdW5jcyk7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSA1OiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRGVncmVlcywgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgNjogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLlNpbiwgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzog
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLkNvcywgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODogZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLlRhbiwgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOTogZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFT
aW4sIGZ1bmNzKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQUNvcywg
ZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5BVGFuLCBmdW5j
cyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjogZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFUYW4yLCBmdW5jcywg
J2F0YW4yJyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzogZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNpbmgsIGZ1
bmNzKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ29zaCwgZnVuY3Mp
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5h
ZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UYW5oLCBmdW5jcyk7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxNjogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNj
YWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFTaW5oLCBmdW5jcyk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxNzogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxh
ckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFDb3NoLCBmdW5jcyk7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxODogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZh
Y3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkFUYW5oLCBmdW5jcyk7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxOTogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3Rv
cnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlBvdywgZnVuY3MpOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMjA6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGds
c0J1aWx0aW5QcmVjaXNpb25UZXN0cy5FeHAsIGZ1bmNzKTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDIxOiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWls
dGluUHJlY2lzaW9uVGVzdHMuRXhwMiwgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MjI6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5Mb2csIGZ1bmNzKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIzOiBn
bHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuTG9nMiwgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjQ6IGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25U
ZXN0cy5TcXJ0LCBmdW5jcyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyNTogZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LkludmVyc2VTcXJ0LCBmdW5jcyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyNjogZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLkFicywgZnVuY3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjc6IGdsc0J1aWx0aW5Q
cmVjaXNpb25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5T
aWduLCBmdW5jcyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyODogZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZsb29y
LCBmdW5jcyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOTogZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRydW5jLCBm
dW5jcyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzMDogZ2xzQnVpbHRpblByZWNpc2lvblRl
c3RzLmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlJvdW5kLCBmdW5j
cyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzMTogZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
LmFkZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlJvdW5kRXZlbiwgZnVu
Y3MpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzI6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5DZWlsLCBmdW5jcyk7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzMzogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFk
ZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkZyYWN0LCBmdW5jcyk7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAzNDogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNj
YWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1vZCwgZnVuY3MpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMzU6IGZ1bmNzLmFkZEZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLmNyZWF0ZVNpbXBsZUZ1bmNDYXNlRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuTW9kZikpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzY6IGdsc0J1aWx0aW5QcmVjaXNp
b25UZXN0cy5hZGRTY2FsYXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NaW4sIGZ1
bmNzKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM3OiBnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuYWRkU2NhbGFyRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuTWF4LCBmdW5jcyk7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzODogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFk
ZFNjYWxhckZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLk1peCwgZnVuY3MpOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMzk6IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5hZGRTY2Fs
YXJGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5TdGVwLCBmdW5jcyk7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA0MDogZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmFkZFNjYWxhckZh
Y3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNtb290aFN0ZXAsIGZ1bmNzKTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDQxOiBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuYWRkU2NhbGFy
RmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuQ2xhbXAsIGZ1bmNzKTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDQyOiBmdW5jcy5hZGRGYWN0b3J5KG5ldyBnbHNCdWlsdGluUHJlY2lz
aW9uVGVzdHMuVGVtcGxhdGVGdW5jQ2FzZUZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
Lkxlbmd0aCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDM6IGZ1bmNzLmFkZEZhY3Rvcnko
bmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UZW1wbGF0ZUZ1bmNDYXNlRmFjdG9yeShnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuRGlzdGFuY2UpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDQ0OiBmdW5jcy5hZGRGYWN0b3J5KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVGVtcGxh
dGVGdW5jQ2FzZUZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLkRvdCkpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgNDU6IGZ1bmNzLmFkZEZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzLmNyZWF0ZVNpbXBsZUZ1bmNDYXNlRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHMuQ3Jvc3MpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ2OiBmdW5jcy5hZGRGYWN0b3J5
KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVGVtcGxhdGVGdW5jQ2FzZUZhY3RvcnkoZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLk5vcm1hbGl6ZSkpOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgNDc6IGZ1bmNzLmFkZEZhY3RvcnkobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5UZW1w
bGF0ZUZ1bmNDYXNlRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuRmFjZUZvcndhcmQp
KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ4OiBmdW5jcy5hZGRGYWN0b3J5KG5ldyBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuVGVtcGxhdGVGdW5jQ2FzZUZhY3RvcnkoZ2xzQnVpbHRpblBy
ZWNpc2lvblRlc3RzLlJlZmxlY3QpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ5OiBmdW5j
cy5hZGRGYWN0b3J5KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuVGVtcGxhdGVGdW5jQ2Fz
ZUZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlJlZnJhY3QpKTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDUwOiBmdW5jcy5hZGRGYWN0b3J5KG5ldyBnbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHMuTWF0cml4RnVuY0Nhc2VGYWN0b3J5KGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRy
aXhDb21wTXVsdCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNTE6IGZ1bmNzLmFkZEZhY3Rv
cnkobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5NYXRyaXhGdW5jQ2FzZUZhY3RvcnkoZ2xz
QnVpbHRpblByZWNpc2lvblRlc3RzLk91dGVyUHJvZHVjdCkpOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgNTI6IGZ1bmNzLmFkZEZhY3RvcnkobmV3IGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5N
YXRyaXhGdW5jQ2FzZUZhY3RvcnkoZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlRyYW5zcG9zZSkp
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNTM6IGZ1bmNzLmFkZEZhY3RvcnkobmV3IGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0cy5TcXVhcmVNYXRyaXhGdW5jQ2FzZUZhY3RvcnkoZ2xzQnVpbHRp
blByZWNpc2lvblRlc3RzLkRldGVybWluYW50KSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1
NDogZnVuY3MuYWRkRmFjdG9yeShuZXcgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLlNxdWFyZU1h
dHJpeEZ1bmNDYXNlRmFjdG9yeShnbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuSW52ZXJzZSkpOyBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGZ1bmNzOworICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNCdWls
dGluUHJlY2lzaW9uVGVzdHNVbml0VGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0J1aWx0aW5QcmVjaXNp
b25UZXN0c1VuaXRUZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGRmOWQyOGUzNThkNTIyMjM5MTM0MzEy
ZTJjZmYwMzAxYjY1OGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNCdWlsdGluUHJl
Y2lzaW9uVGVzdHNVbml0VGVzdHMuanMKQEAgLTAsMCArMSwyODE5IEBACisndXNlIHN0cmljdCc7
Citnb29nLnByb3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc0J1aWx0aW5QcmVjaXNpb25UZXN0c1Vu
aXRUZXN0cycpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUludGVydmFsJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1TWF0cml4Jyk7CisKK2dvb2cuc2Nv
cGUoZnVuY3Rpb24oKSB7CisKKyAgICBtb2R1bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9u
VGVzdHNVbml0VGVzdHMuY3BwcmVmZXJlbmNlID0gW107CisgICAgdmFyIHRjdUludGVydmFsID0g
ZnJhbWV3b3JrLmNvbW1vbi50Y3VJbnRlcnZhbDsKKyAgICB2YXIgZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzVW5pdFRlc3RzID0gbW9kdWxlcy5zaGFyZWQuZ2xzQnVpbHRpblByZWNpc2lvblRlc3Rz
VW5pdFRlc3RzOworICAgIHZhciB0Y3VNYXRyaXggPSBmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJp
eDsKKworICAgIHZhciByZWYgPSBtb2R1bGVzLnNoYXJlZC5nbHNCdWlsdGluUHJlY2lzaW9uVGVz
dHNVbml0VGVzdHMuY3BwcmVmZXJlbmNlOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFkZC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYWRkLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMzkwNjI1LCAwLjQwNjI1LCBmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNjk1MzEzLCAwLjcwMzEyNSwgZmFsc2UsIDAuNjk1MzEzLCAwLjcwMzEyNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMzkwNjI1LCAwLjQwNjI1LCBmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjUs
IGZhbHNlLCAwLjM5MDYyNSwgMC40MDYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hZGQubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNjk1MzEz
LCAwLjcwMzEyNSwgZmFsc2UsIDAuNjk1MzEzLCAwLjcwMzEyNSwgZmFsc2UsIDAuNjk1MzEzLCAw
LjcwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubG93cF92ZXJ0
ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM5MDYyNSwgMC40MDYy
NSwgZmFsc2UsIDAuMzkwNjI1LCAwLjQwNjI1LCBmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjUsIGZh
bHNlLCAwLjM5MDYyNSwgMC40MDYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hZGQubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjY5NTMxMywgMC43MDMxMjUsIGZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjUsIGZhbHNlLCAwLjY5
NTMxMywgMC43MDMxMjUsIGZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzkwNjI1LCAwLjQwNjI1XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5sb3dwX2ZyYWdtZW50LnNjYWxh
cicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5NTMx
MywgMC43MDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmxvd3Bf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjUsIGZhbHNlLCAwLjM5
MDYyNSwgMC40MDYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubG93
cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjUsIGZhbHNlLCAw
LjY5NTMxMywgMC43MDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRk
Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzkwNjI1LCAwLjQw
NjI1LCBmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjUsIGZhbHNlLCAwLjM5MDYyNSwgMC40MDYyNV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubG93cF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC42OTUzMTMsIDAuNzAzMTI1LCBmYWxzZSwgMC42OTUz
MTMsIDAuNzAzMTI1LCBmYWxzZSwgMC42OTUzMTMsIDAuNzAzMTI1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFkZC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjUsIGZhbHNlLCAwLjM5MDYyNSwgMC40
MDYyNSwgZmFsc2UsIDAuMzkwNjI1LCAwLjQwNjI1LCBmYWxzZSwgMC4zOTA2MjUsIDAuNDA2MjVd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmxvd3BfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjUsIGZh
bHNlLCAwLjY5NTMxMywgMC43MDMxMjUsIGZhbHNlLCAwLjY5NTMxMywgMC43MDMxMjUsIGZhbHNl
LCAwLjY5NTMxMywgMC43MDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWRkLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjM5OTkwMiwgMC40MDAzOTFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uYWRkLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAw
LjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5OTIxOSwgMC43MDAxOTVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLm1lZGl1bXBfdmVydGV4LnZlYzInLCBp
bnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwgZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubWVkaXVtcF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAw
MTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5tZWRpdW1wX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTk5MDIsIDAuNDAwMzkxLCBmYWxzZSwg
MC4zOTk5MDIsIDAuNDAwMzkxLCBmYWxzZSwgMC4zOTk5MDIsIDAuNDAwMzkxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAw
MTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFkZC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwgZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwg
ZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwgZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubWVkaXVtcF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5OTIxOSwgMC43MDAxOTUsIGZhbHNl
LCAwLjY5OTIxOSwgMC43MDAxOTUsIGZhbHNlLCAwLjY5OTIxOSwgMC43MDAxOTUsIGZhbHNlLCAw
LjY5OTIxOSwgMC43MDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRk
Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hZGQubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwg
MC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5tZWRpdW1wX2ZyYWdtZW50LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwgZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubWVkaXVtcF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjY5OTIxOSwgMC43MDAxOTUsIGZhbHNlLCAwLjY5OTIxOSwg
MC43MDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLm1lZGl1bXBf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAu
MiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwg
ZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MSwgZmFsc2UsIDAuMzk5OTAyLCAwLjQwMDM5MV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQubWVkaXVtcF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1LCBmYWxzZSwgMC42OTky
MTksIDAuNzAwMTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFkZC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTk5MDIsIDAuNDAwMzkxLCBmYWxzZSwgMC4zOTk5MDIs
IDAuNDAwMzkxLCBmYWxzZSwgMC4zOTk5MDIsIDAuNDAwMzkxLCBmYWxzZSwgMC4zOTk5MDIsIDAu
NDAwMzkxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5tZWRpdW1wX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC42OTkyMTksIDAu
NzAwMTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAw
MTk1LCBmYWxzZSwgMC42OTkyMTksIDAuNzAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFkZC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFkZC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNywgMC43XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmFkZC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40LCAw
LjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
ZGQuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwg
MC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNywgMC43LCBmYWxzZSwgMC43LCAw
LjddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmhpZ2hwX3ZlcnRleC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNCwgZmFs
c2UsIDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFkZC5oaWdo
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNywgMC43LCBmYWxzZSwgMC43
LCAwLjcsIGZhbHNlLCAwLjcsIDAuN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hZGQuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNCwgZmFsc2UsIDAuNCwgMC40LCBmYWxzZSwgMC40LCAw
LjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmhpZ2hwX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNywgMC43LCBmYWxzZSwgMC43
LCAwLjcsIGZhbHNlLCAwLjcsIDAuNywgZmFsc2UsIDAuNywgMC43XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFkZC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAu
MiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40LCAwLjRdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWRkLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcsIDAuN119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hZGQuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43LCAw
LjcsIGZhbHNlLCAwLjcsIDAuN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
ZGQuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNCwgMC40LCBm
YWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hZGQuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNywgMC43LCBmYWxzZSwgMC43LCAwLjcsIGZhbHNlLCAwLjcsIDAuN119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hZGQuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQsIDAuNCwgZmFsc2UsIDAuNCwgMC40LCBmYWxzZSwg
MC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hZGQuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjcsIDAuNywgZmFsc2UsIDAuNywgMC43LCBmYWxzZSwgMC43LCAwLjcsIGZhbHNlLCAw
LjcsIDAuN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubG93cF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC0wLjAwNzgxMjUsIDAuMDA3ODEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zdWIubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnN1Yi5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDc4
MTI1LCAwLjAwNzgxMjUsIGZhbHNlLCAtMC4wMDc4MTI1LCAwLjAwNzgxMjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC0wLjMwNDY4OCwgLTAuMjk2ODc1LCBmYWxzZSwgLTAuMzA0Njg4LCAtMC4yOTY4NzVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDc4MTI1LCAwLjAwNzgxMjUsIGZhbHNlLCAtMC4wMDc4MTI1
LCAwLjAwNzgxMjUsIGZhbHNlLCAtMC4wMDc4MTI1LCAwLjAwNzgxMjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC4zMDQ2ODgsIC0wLjI5Njg3NSwgZmFsc2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1
LCBmYWxzZSwgLTAuMzA0Njg4LCAtMC4yOTY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc3ViLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4MTI1LCBmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4MTI1
LCBmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4MTI1LCBmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4
MTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5sb3dwX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1
LCBmYWxzZSwgLTAuMzA0Njg4LCAtMC4yOTY4NzUsIGZhbHNlLCAtMC4zMDQ2ODgsIC0wLjI5Njg3
NSwgZmFsc2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnN1Yi5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDc4MTI1LCAwLjAwNzgxMjVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5w
dXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwNDY4OCwgLTAu
Mjk2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5sb3dwX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwNzgxMjUsIDAuMDA3ODEyNSwgZmFsc2UsIC0wLjAw
NzgxMjUsIDAuMDA3ODEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIu
bG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4zMDQ2ODgsIC0wLjI5Njg3NSwgZmFs
c2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnN1Yi5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
IHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDc4
MTI1LCAwLjAwNzgxMjUsIGZhbHNlLCAtMC4wMDc4MTI1LCAwLjAwNzgxMjUsIGZhbHNlLCAtMC4w
MDc4MTI1LCAwLjAwNzgxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3Vi
Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwNDY4OCwgLTAu
Mjk2ODc1LCBmYWxzZSwgLTAuMzA0Njg4LCAtMC4yOTY4NzUsIGZhbHNlLCAtMC4zMDQ2ODgsIC0w
LjI5Njg3NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubG93cF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwNzgxMjUsIDAu
MDA3ODEyNSwgZmFsc2UsIC0wLjAwNzgxMjUsIDAuMDA3ODEyNSwgZmFsc2UsIC0wLjAwNzgxMjUs
IDAuMDA3ODEyNSwgZmFsc2UsIC0wLjAwNzgxMjUsIDAuMDA3ODEyNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwNDY4OCwgLTAuMjk2ODc1LCBmYWxzZSwgLTAuMzA0Njg4
LCAtMC4yOTY4NzUsIGZhbHNlLCAtMC4zMDQ2ODgsIC0wLjI5Njg3NSwgZmFsc2UsIC0wLjMwNDY4
OCwgLTAuMjk2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRp
dW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zdWIubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
NSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwMDI5MywgLTAuMjk5ODA1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRpdW1wX3ZlcnRleC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQxLCBmYWxzZSwgLTAuMDAwMjQ0MTQx
LCAwLjAwMDI0NDE0MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubWVk
aXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMzAwMjkzLCAtMC4yOTk4MDUsIGZhbHNl
LCAtMC4zMDAyOTMsIC0wLjI5OTgwNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zdWIubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDI0
NDE0MSwgMC4wMDAyNDQxNDEsIGZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQxLCBmYWxz
ZSwgLTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zdWIubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0w
LjMwMDI5MywgLTAuMjk5ODA1LCBmYWxzZSwgLTAuMzAwMjkzLCAtMC4yOTk4MDUsIGZhbHNlLCAt
MC4zMDAyOTMsIC0wLjI5OTgwNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
dWIubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
MC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQxLCBmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0
MSwgZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4wMDAyNDQxNDEsIGZhbHNlLCAtMC4wMDAyNDQxNDEs
IDAuMDAwMjQ0MTQxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRp
dW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwMDI5
MywgLTAuMjk5ODA1LCBmYWxzZSwgLTAuMzAwMjkzLCAtMC4yOTk4MDUsIGZhbHNlLCAtMC4zMDAy
OTMsIC0wLjI5OTgwNSwgZmFsc2UsIC0wLjMwMDI5MywgLTAuMjk5ODA1XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAyNDQxNDEsIDAu
MDAwMjQ0MTQxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRpdW1w
X2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC4zMDAyOTMsIC0wLjI5OTgwNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zdWIubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAyNDQx
NDEsIDAuMDAwMjQ0MTQxLCBmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0MV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubWVkaXVtcF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtMC4zMDAyOTMsIC0wLjI5OTgwNSwgZmFsc2UsIC0wLjMwMDI5MywgLTAuMjk5
ODA1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQx
LCBmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0MSwgZmFsc2UsIC0wLjAwMDI0NDE0MSwg
MC4wMDAyNDQxNDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLm1lZGl1
bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMwMDI5MywgLTAuMjk5
ODA1LCBmYWxzZSwgLTAuMzAwMjkzLCAtMC4yOTk4MDUsIGZhbHNlLCAtMC4zMDAyOTMsIC0wLjI5
OTgwNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIubWVkaXVtcF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDI0NDE0MSwg
MC4wMDAyNDQxNDEsIGZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQxLCBmYWxzZSwgLTAu
MDAwMjQ0MTQxLCAwLjAwMDI0NDE0MSwgZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4wMDAyNDQxNDFd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLm1lZGl1bXBfZnJhZ21lbnQu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4zMDAyOTMsIC0wLjI5OTgw
NSwgZmFsc2UsIC0wLjMwMDI5MywgLTAuMjk5ODA1LCBmYWxzZSwgLTAuMzAwMjkzLCAtMC4yOTk4
MDUsIGZhbHNlLCAtMC4zMDAyOTMsIC0wLjI5OTgwNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5zdWIuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnN1Yi5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMsIC0wLjNdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc3ViLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIuaGlnaHBf
dmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMsIC0wLjMsIGZhbHNlLCAtMC4zLCAtMC4zXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5oaWdocF92ZXJ0ZXgudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdWIuaGlnaHBfdmVydGV4LnZlYzMnLCBp
bnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4zLCAtMC4zLCBmYWxzZSwgLTAuMywgLTAuMywgZmFsc2Us
IC0wLjMsIC0wLjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmhpZ2hw
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uc3ViLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIC0wLjMsIC0wLjMsIGZhbHNlLCAtMC4zLCAtMC4zLCBmYWxzZSwgLTAuMywgLTAu
MywgZmFsc2UsIC0wLjMsIC0wLjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c3ViLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnN1Yi5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuMywgLTAuM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zdWIuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3ViLmhpZ2hwX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjMsIC0wLjMsIGZhbHNlLCAtMC4zLCAtMC4zXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5oaWdocF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5oaWdocF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMywgLTAuMywgZmFsc2UsIC0wLjMsIC0wLjMsIGZhbHNl
LCAtMC4zLCAtMC4zXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN1Yi5oaWdo
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc3ViLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTAuMywgLTAuMywgZmFsc2UsIC0wLjMsIC0wLjMsIGZhbHNlLCAtMC4z
LCAtMC4zLCBmYWxzZSwgLTAuMywgLTAuM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5tdWwubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm11bC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1
LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubXVsLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
IHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1
LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfdmVydGV4
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUs
IGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bXVsLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4w
OTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUs
IDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
MiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubG93cF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAu
MDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5sb3dwX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfZnJh
Z21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2
MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm11bC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUs
IDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubWVkaXVtcF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bXVsLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm11bC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBp
bnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubXVsLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwg
ZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubXVsLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZh
bHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubWVkaXVtcF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxz
ZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNl
LCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm11bC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm11bC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5tZWRpdW1wX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5tZWRpdW1w
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11
bC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZl
YzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLm1lZGl1bXBf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgs
IGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwubWVkaXVtcF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEs
IGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwg
ZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubXVsLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwg
ZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5oaWdocF92ZXJ0ZXguc2NhbGFy
JywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAu
MDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmhpZ2hwX3ZlcnRleC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4x
LCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubXVsLmhpZ2hwX3ZlcnRl
eC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubXVsLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAu
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwuaGlnaHBfdmVydGV4LnZl
YzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAu
MDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tdWwuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2Us
IDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubXVsLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm11bC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubXVsLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm11bC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFs
c2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5oaWdo
cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm11bC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm11bC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxz
ZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubXVsLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lmxv
d3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmRpdi5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigw
LjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmRpdi5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAt
SW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRp
di5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYubG93cF9mcmFn
bWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5kaXYubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5kaXYubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5m
aW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYubG93cF9mcmFnbWVudC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmRpdi5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFs
c2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uZGl2Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYu
bWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuOTk2MzM4LCAxLjAwNjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZGl2Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuOTk2MzM4LCAxLjAwNjEsIGZhbHNlLCAwLjk5NjMzOCwgMS4wMDYxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjM5ODY4MiwgMC40MDE2MTEsIGZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBp
bnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk5NjMzOCwgMS4wMDYxLCBmYWxzZSwgMC45OTYzMzgsIDEu
MDA2MSwgZmFsc2UsIDAuOTk2MzM4LCAxLjAwNjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZGl2Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjM5ODY4MiwgMC40MDE2MTEsIGZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTEsIGZhbHNlLCAwLjM5
ODY4MiwgMC40MDE2MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lm1l
ZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45OTYz
MzgsIDEuMDA2MSwgZmFsc2UsIDAuOTk2MzM4LCAxLjAwNjEsIGZhbHNlLCAwLjk5NjMzOCwgMS4w
MDYxLCBmYWxzZSwgMC45OTYzMzgsIDEuMDA2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kaXYubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTEsIGZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTEsIGZh
bHNlLCAwLjM5ODY4MiwgMC40MDE2MTEsIGZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFy
JywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTk2MzM4
LCAxLjAwNjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2Lm1lZGl1bXBf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMzk4NjgyLCAwLjQwMTYxMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5kaXYubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk5NjMzOCwgMS4w
MDYxLCBmYWxzZSwgMC45OTYzMzgsIDEuMDA2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kaXYubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM5ODY4Miwg
MC40MDE2MTEsIGZhbHNlLCAwLjM5ODY4MiwgMC40MDE2MTFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZGl2Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuOTk2MzM4LCAxLjAwNjEsIGZhbHNlLCAwLjk5NjMzOCwgMS4wMDYxLCBmYWxzZSwg
MC45OTYzMzgsIDEuMDA2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYu
bWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTg2ODIsIDAu
NDAxNjExLCBmYWxzZSwgMC4zOTg2ODIsIDAuNDAxNjExLCBmYWxzZSwgMC4zOTg2ODIsIDAuNDAx
NjExXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45OTYzMzgsIDEuMDA2
MSwgZmFsc2UsIDAuOTk2MzM4LCAxLjAwNjEsIGZhbHNlLCAwLjk5NjMzOCwgMS4wMDYxLCBmYWxz
ZSwgMC45OTYzMzgsIDEuMDA2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5k
aXYubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMzk4NjgyLCAwLjQwMTYxMSwgZmFsc2UsIDAuMzk4NjgyLCAwLjQwMTYxMSwgZmFsc2UsIDAu
Mzk4NjgyLCAwLjQwMTYxMSwgZmFsc2UsIDAuMzk4NjgyLCAwLjQwMTYxMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNCwgMC40XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZGl2LmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUs
IDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQsIDAuNCwgZmFsc2UsIDAuNCwg
MC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5oaWdocF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwg
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfdmVydGV4LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQsIDAuNCwgZmFsc2UsIDAuNCwgMC40LCBmYWxz
ZSwgMC40LCAwLjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGl2LmhpZ2hw
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNl
LCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZGl2LmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNCwgMC40LCBmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNCwgZmFs
c2UsIDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5oaWdo
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGln
aHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRp
di5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIs
IDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNCwgMC40LCBmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXYuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEs
IDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpdi5o
aWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZl
YzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNCwg
MC40LCBmYWxzZSwgMC40LCAwLjQsIGZhbHNlLCAwLjQsIDAuNCwgZmFsc2UsIDAuNCwgMC40XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubG93cF92ZXJ0ZXguc2Nh
bGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5z
Lmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucmFkaWFucy5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5yYWRpYW5zLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJhZGlhbnMubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5sb3dwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5yYWRpYW5zLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5
LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnJhZGlhbnMubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucmFkaWFucy5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5sb3dwX2ZyYWdtZW50LnNjYWxh
cicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5s
b3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubG93
cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLmxvd3Bf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMu
bG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5y
YWRpYW5zLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwg
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ucmFkaWFucy5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwMzQ3MTM3LCAwLjAwMzUwOTUyXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubWVkaXVtcF92ZXJ0ZXguc2NhbGFy
JywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDg2ODIy
NSwgMC4wMDg3NzM4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMu
bWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDM0NzEzNywgMC4wMDM1MDk1MiwgZmFsc2UsIDAuMDAz
NDcxMzcsIDAuMDAzNTA5NTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFk
aWFucy5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3MzgsIGZhbHNlLCAw
LjAwODY4MjI1LCAwLjAwODc3MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
cmFkaWFucy5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDAzNDcxMzcsIDAuMDAzNTA5NTIs
IGZhbHNlLCAwLjAwMzQ3MTM3LCAwLjAwMzUwOTUyLCBmYWxzZSwgMC4wMDM0NzEzNywgMC4wMDM1
MDk1Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLm1lZGl1bXBf
dmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDg2ODIyNSwgMC4wMDg3NzM4LCBmYWxzZSwgMC4wMDg2ODIy
NSwgMC4wMDg3NzM4LCBmYWxzZSwgMC4wMDg2ODIyNSwgMC4wMDg3NzM4XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMDAzNDcxMzcsIDAuMDAzNTA5NTIsIGZhbHNlLCAwLjAwMzQ3MTM3LCAwLjAwMzUwOTUy
LCBmYWxzZSwgMC4wMDM0NzEzNywgMC4wMDM1MDk1MiwgZmFsc2UsIDAuMDAzNDcxMzcsIDAuMDAz
NTA5NTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5tZWRpdW1w
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDg2ODIyNSwgMC4wMDg3NzM4LCBmYWxzZSwgMC4w
MDg2ODIyNSwgMC4wMDg3NzM4LCBmYWxzZSwgMC4wMDg2ODIyNSwgMC4wMDg3NzM4LCBmYWxzZSwg
MC4wMDg2ODIyNSwgMC4wMDg3NzM4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJhZGlhbnMubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwMzQ3MTM3LCAwLjAwMzUwOTUyXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubWVkaXVtcF9mcmFnbWVudC5zY2FsYXIn
LCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODY4MjI1
LCAwLjAwODc3MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDAzNDcxMzcsIDAuMDAzNTA5NTIsIGZhbHNlLCAwLjAw
MzQ3MTM3LCAwLjAwMzUwOTUyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJh
ZGlhbnMubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3MzgsIGZhbHNl
LCAwLjAwODY4MjI1LCAwLjAwODc3MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ucmFkaWFucy5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDM0NzEzNywgMC4wMDM1
MDk1MiwgZmFsc2UsIDAuMDAzNDcxMzcsIDAuMDAzNTA5NTIsIGZhbHNlLCAwLjAwMzQ3MTM3LCAw
LjAwMzUwOTUyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMubWVk
aXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDA4NjgyMjUsIDAuMDA4NzczOCwgZmFsc2UsIDAu
MDA4NjgyMjUsIDAuMDA4NzczOCwgZmFsc2UsIDAuMDA4NjgyMjUsIDAuMDA4NzczOF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLm1lZGl1bXBfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMDAzNDcxMzcsIDAuMDAzNTA5NTIsIGZhbHNlLCAwLjAwMzQ3MTM3LCAw
LjAwMzUwOTUyLCBmYWxzZSwgMC4wMDM0NzEzNywgMC4wMDM1MDk1MiwgZmFsc2UsIDAuMDAzNDcx
MzcsIDAuMDAzNTA5NTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFu
cy5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3Mzgs
IGZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3MzgsIGZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3
MzgsIGZhbHNlLCAwLjAwODY4MjI1LCAwLjAwODc3MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucmFkaWFucy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2Nl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLmhpZ2hwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODcy
NjY0LCAwLjAwODcyNjY1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlh
bnMuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDAzNDkwNjYsIDAuMDAzNDkwNjYsIGZhbHNlLCAwLjAw
MzQ5MDY2LCAwLjAwMzQ5MDY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJh
ZGlhbnMuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjUsIGZhbHNlLCAw
LjAwODcyNjY0LCAwLjAwODcyNjY1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJhZGlhbnMuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2Niwg
ZmFsc2UsIDAuMDAzNDkwNjYsIDAuMDAzNDkwNjYsIGZhbHNlLCAwLjAwMzQ5MDY2LCAwLjAwMzQ5
MDY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMuaGlnaHBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4wMDg3MjY2NCwgMC4wMDg3MjY2NSwgZmFsc2UsIDAuMDA4NzI2NjQs
IDAuMDA4NzI2NjUsIGZhbHNlLCAwLjAwODcyNjY0LCAwLjAwODcyNjY1XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAwMzQ5MDY2LCAwLjAwMzQ5MDY2LCBmYWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2Niwg
ZmFsc2UsIDAuMDAzNDkwNjYsIDAuMDAzNDkwNjYsIGZhbHNlLCAwLjAwMzQ5MDY2LCAwLjAwMzQ5
MDY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMuaGlnaHBfdmVy
dGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwODcyNjY0LCAwLjAwODcyNjY1LCBmYWxzZSwgMC4wMDg3
MjY2NCwgMC4wMDg3MjY2NSwgZmFsc2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjUsIGZhbHNlLCAw
LjAwODcyNjY0LCAwLjAwODcyNjY1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJhZGlhbnMuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2Nl19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDA4NzI2NjQsIDAu
MDA4NzI2NjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5oaWdo
cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjAwMzQ5MDY2LCAwLjAwMzQ5MDY2LCBmYWxzZSwgMC4wMDM0OTA2
NiwgMC4wMDM0OTA2Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5z
LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjUsIGZhbHNlLCAwLjAw
ODcyNjY0LCAwLjAwODcyNjY1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJh
ZGlhbnMuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAwMzQ5MDY2LCAwLjAwMzQ5MDY2LCBm
YWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2NiwgZmFsc2UsIDAuMDAzNDkwNjYsIDAuMDAzNDkw
NjZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmFkaWFucy5oaWdocF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjUsIGZhbHNlLCAwLjAwODcyNjY0
LCAwLjAwODcyNjY1LCBmYWxzZSwgMC4wMDg3MjY2NCwgMC4wMDg3MjY2NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yYWRpYW5zLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjAwMzQ5MDY2LCAwLjAwMzQ5MDY2LCBmYWxzZSwgMC4wMDM0OTA2NiwgMC4wMDM0OTA2
NiwgZmFsc2UsIDAuMDAzNDkwNjYsIDAuMDAzNDkwNjYsIGZhbHNlLCAwLjAwMzQ5MDY2LCAwLjAw
MzQ5MDY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJhZGlhbnMuaGlnaHBf
ZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjUsIGZhbHNlLCAw
LjAwODcyNjY0LCAwLjAwODcyNjY1LCBmYWxzZSwgMC4wMDg3MjY2NCwgMC4wMDg3MjY2NSwgZmFs
c2UsIDAuMDA4NzI2NjQsIDAuMDA4NzI2NjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZGVncmVlcy5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6
ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0
eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmxvd3BfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubG93cF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5sb3dwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5kZWdyZWVzLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFs
c2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubG93cF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5
LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5sb3dwX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmxvd3BfZnJh
Z21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5kZWdyZWVzLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmxv
d3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubG93cF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLm1lZGl1bXBfdmVydGV4
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEx
LjQyMTksIDExLjUxNTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVl
cy5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAyOC41NjI1LCAyOC43NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kZWdyZWVzLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDExLjQyMTksIDExLjUxNTYsIGZh
bHNlLCAxMS40MjE5LCAxMS41MTU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmRlZ3JlZXMubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMjguNTYyNSwgMjguNzUsIGZhbHNlLCAyOC41
NjI1LCAyOC43NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLm1l
ZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMTEuNDIxOSwgMTEuNTE1NiwgZmFsc2UsIDExLjQyMTks
IDExLjUxNTYsIGZhbHNlLCAxMS40MjE5LCAxMS41MTU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmRlZ3JlZXMubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyOC41NjI1LCAy
OC43NSwgZmFsc2UsIDI4LjU2MjUsIDI4Ljc1LCBmYWxzZSwgMjguNTYyNSwgMjguNzVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5tZWRpdW1wX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMTEuNDIxOSwgMTEuNTE1NiwgZmFsc2UsIDExLjQyMTksIDExLjUxNTYsIGZh
bHNlLCAxMS40MjE5LCAxMS41MTU2LCBmYWxzZSwgMTEuNDIxOSwgMTEuNTE1Nl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAyOC41NjI1LCAyOC43NSwgZmFsc2UsIDI4LjU2MjUsIDI4Ljc1LCBmYWxzZSwgMjgu
NTYyNSwgMjguNzUsIGZhbHNlLCAyOC41NjI1LCAyOC43NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5kZWdyZWVzLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMTEuNDIxOSwgMTEuNTE1Nl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLm1lZGl1bXBfZnJhZ21lbnQu
c2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMjgu
NTYyNSwgMjguNzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDExLjQyMTksIDExLjUxNTYsIGZhbHNlLCAxMS40MjE5LCAx
MS41MTU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubWVkaXVt
cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAyOC41NjI1LCAyOC43NSwgZmFsc2UsIDI4LjU2MjUsIDI4Ljc1XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubWVkaXVtcF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDExLjQyMTksIDExLjUxNTYsIGZhbHNlLCAxMS40MjE5LCAxMS41MTU2LCBm
YWxzZSwgMTEuNDIxOSwgMTEuNTE1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5kZWdyZWVzLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyOC41NjI1LCAyOC43NSwgZmFs
c2UsIDI4LjU2MjUsIDI4Ljc1LCBmYWxzZSwgMjguNTYyNSwgMjguNzVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxMS40MjE5LCAxMS41MTU2LCBmYWxzZSwgMTEuNDIxOSwgMTEuNTE1NiwgZmFsc2UsIDEx
LjQyMTksIDExLjUxNTYsIGZhbHNlLCAxMS40MjE5LCAxMS41MTU2XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6
ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMjguNTYyNSwgMjguNzUsIGZhbHNlLCAyOC41NjI1LCAyOC43NSwgZmFsc2UsIDI4LjU2MjUs
IDI4Ljc1LCBmYWxzZSwgMjguNTYyNSwgMjguNzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZGVncmVlcy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMTEuNDU5MiwgMTEuNDU5Ml19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1
dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyOC42NDc5LCAyOC42NDc5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMuaGlnaHBfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDExLjQ1OTIsIDExLjQ1OTIsIGZhbHNlLCAxMS40NTkyLCAxMS40NTkyXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMuaGlnaHBfdmVydGV4LnZlYzInLCBp
bnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDI4
LjY0NzksIDI4LjY0NzksIGZhbHNlLCAyOC42NDc5LCAyOC42NDc5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMTEuNDU5
MiwgMTEuNDU5MiwgZmFsc2UsIDExLjQ1OTIsIDExLjQ1OTIsIGZhbHNlLCAxMS40NTkyLCAxMS40
NTkyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMuaGlnaHBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMjguNjQ3OSwgMjguNjQ3OSwgZmFsc2UsIDI4LjY0NzksIDI4LjY0Nzks
IGZhbHNlLCAyOC42NDc5LCAyOC42NDc5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmRlZ3JlZXMuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxMS40NTkyLCAxMS40NTky
LCBmYWxzZSwgMTEuNDU5MiwgMTEuNDU5MiwgZmFsc2UsIDExLjQ1OTIsIDExLjQ1OTIsIGZhbHNl
LCAxMS40NTkyLCAxMS40NTkyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRl
Z3JlZXMuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyOC42NDc5LCAyOC42NDc5LCBmYWxz
ZSwgMjguNjQ3OSwgMjguNjQ3OSwgZmFsc2UsIDI4LjY0NzksIDI4LjY0NzksIGZhbHNlLCAyOC42
NDc5LCAyOC42NDc5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3JlZXMu
aGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMTEuNDU5MiwgMTEuNDU5Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kZWdyZWVzLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDI4LjY0NzksIDI4LjY0NzldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxMS40
NTkyLCAxMS40NTkyLCBmYWxzZSwgMTEuNDU5MiwgMTEuNDU5Ml19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5kZWdyZWVzLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDI4LjY0NzksIDI4
LjY0NzksIGZhbHNlLCAyOC42NDc5LCAyOC42NDc5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmRlZ3JlZXMuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxMS40NTkyLCAxMS40
NTkyLCBmYWxzZSwgMTEuNDU5MiwgMTEuNDU5MiwgZmFsc2UsIDExLjQ1OTIsIDExLjQ1OTJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGVncmVlcy5oaWdocF9mcmFnbWVudC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDI4LjY0NzksIDI4LjY0NzksIGZhbHNlLCAyOC42NDc5LCAyOC42NDc5LCBmYWxz
ZSwgMjguNjQ3OSwgMjguNjQ3OV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5k
ZWdyZWVzLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxMS40NTkyLCAxMS40NTkyLCBm
YWxzZSwgMTEuNDU5MiwgMTEuNDU5MiwgZmFsc2UsIDExLjQ1OTIsIDExLjQ1OTIsIGZhbHNlLCAx
MS40NTkyLCAxMS40NTkyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRlZ3Jl
ZXMuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDI4LjY0NzksIDI4LjY0NzksIGZhbHNl
LCAyOC42NDc5LCAyOC42NDc5LCBmYWxzZSwgMjguNjQ3OSwgMjguNjQ3OSwgZmFsc2UsIDI4LjY0
NzksIDI4LjY0NzldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLmxvd3Bf
dmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMTc4NDQ4LCAwLjIxNzM1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zaW4ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnNpbi5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE3ODQ0OCwgMC4yMTczNTYsIGZh
bHNlLCAwLjE3ODQ0OCwgMC4yMTczNTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc2luLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDYzODAxLCAwLjQ5NTA1MSwgZmFsc2UsIDAuNDYz
ODAxLCAwLjQ5NTA1MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubG93
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE3ODQ0OCwgMC4yMTczNTYsIGZhbHNlLCAwLjE3ODQ0OCwg
MC4yMTczNTYsIGZhbHNlLCAwLjE3ODQ0OCwgMC4yMTczNTZdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc2luLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NjM4MDEsIDAuNDk1
MDUxLCBmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxLCBmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5sb3dwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2
LCBmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5sb3dwX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxLCBmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxLCBm
YWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxLCBmYWxzZSwgMC40NjM4MDEsIDAuNDk1MDUxXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5sb3dwX2ZyYWdtZW50LnNjYWxhcics
IGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTc4NDQ4LCAw
LjIxNzM1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubG93cF9mcmFn
bWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjQ2MzgwMSwgMC40OTUwNTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c2luLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBmYWxzZSwgMC4xNzg0
NDgsIDAuMjE3MzU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5sb3dw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNDYzODAxLCAwLjQ5NTA1MSwgZmFsc2UsIDAuNDYzODAxLCAwLjQ5
NTA1MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubG93cF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTc4NDQ4LCAwLjIxNzM1NiwgZmFsc2UsIDAuMTc4NDQ4LCAwLjIxNzM1
NiwgZmFsc2UsIDAuMTc4NDQ4LCAwLjIxNzM1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zaW4ubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDYzODAxLCAwLjQ5NTA1MSwg
ZmFsc2UsIDAuNDYzODAxLCAwLjQ5NTA1MSwgZmFsc2UsIDAuNDYzODAxLCAwLjQ5NTA1MV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubG93cF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBm
YWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2LCBmYWxzZSwgMC4xNzg0NDgsIDAuMjE3MzU2XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5sb3dwX2ZyYWdtZW50LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjQ2MzgwMSwgMC40OTUwNTEsIGZhbHNlLCAwLjQ2MzgwMSwgMC40OTUwNTEsIGZh
bHNlLCAwLjQ2MzgwMSwgMC40OTUwNTEsIGZhbHNlLCAwLjQ2MzgwMSwgMC40OTUwNTFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLm1lZGl1bXBfdmVydGV4LnNjYWxhcics
IGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4MTMzLCAw
LjE5OTM0OV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubWVkaXVtcF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC40Nzg0NDksIDAuNDgwNDAyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpbi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODEzMywgMC4xOTkzNDksIGZhbHNlLCAwLjE5
ODEzMywgMC4xOTkzNDldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLm1l
ZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuNDc4NDQ5LCAwLjQ4MDQwMiwgZmFsc2UsIDAuNDc4NDQ5LCAw
LjQ4MDQwMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubWVkaXVtcF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODEzMywgMC4xOTkzNDksIGZhbHNlLCAwLjE5ODEzMywgMC4x
OTkzNDksIGZhbHNlLCAwLjE5ODEzMywgMC4xOTkzNDldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uc2luLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40Nzg0NDksIDAuNDgw
NDAyLCBmYWxzZSwgMC40Nzg0NDksIDAuNDgwNDAyLCBmYWxzZSwgMC40Nzg0NDksIDAuNDgwNDAy
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5tZWRpdW1wX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5LCBmYWxzZSwgMC4xOTgxMzMsIDAuMTk5
MzQ5LCBmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5LCBmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5tZWRpdW1wX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC40Nzg0NDksIDAuNDgwNDAyLCBmYWxzZSwgMC40Nzg0NDksIDAuNDgw
NDAyLCBmYWxzZSwgMC40Nzg0NDksIDAuNDgwNDAyLCBmYWxzZSwgMC40Nzg0NDksIDAuNDgwNDAy
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5tZWRpdW1wX2ZyYWdtZW50
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTk4MTMzLCAwLjE5OTM0OV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4u
bWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjQ3ODQ0OSwgMC40ODA0MDJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uc2luLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5
LCBmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnNpbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDc4NDQ5LCAwLjQ4MDQwMiwgZmFs
c2UsIDAuNDc4NDQ5LCAwLjQ4MDQwMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zaW4ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4MTMzLCAwLjE5OTM0OSwgZmFs
c2UsIDAuMTk4MTMzLCAwLjE5OTM0OSwgZmFsc2UsIDAuMTk4MTMzLCAwLjE5OTM0OV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNDc4NDQ5LCAwLjQ4MDQwMiwgZmFsc2UsIDAuNDc4NDQ5LCAwLjQ4MDQwMiwgZmFsc2Us
IDAuNDc4NDQ5LCAwLjQ4MDQwMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
aW4ubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5LCBm
YWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5LCBmYWxzZSwgMC4xOTgxMzMsIDAuMTk5MzQ5LCBmYWxz
ZSwgMC4xOTgxMzMsIDAuMTk5MzQ5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ3ODQ0OSwgMC40ODA0MDIs
IGZhbHNlLCAwLjQ3ODQ0OSwgMC40ODA0MDIsIGZhbHNlLCAwLjQ3ODQ0OSwgMC40ODA0MDIsIGZh
bHNlLCAwLjQ3ODQ0OSwgMC40ODA0MDJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc2luLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNThdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc2luLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ3ODkzNywgMC40Nzk5MTRdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODE4
MSwgMC4xOTkxNTgsIGZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNThdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc2luLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ3ODkzNywgMC40Nzk5
MTQsIGZhbHNlLCAwLjQ3ODkzNywgMC40Nzk5MTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc2luLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OCwg
ZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OCwgZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4uaGlnaHBfdmVydGV4LnZlYzMnLCBp
bnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxzZSwg
MC40Nzg5MzcsIDAuNDc5OTE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNp
bi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OCwgZmFsc2Us
IDAuMTk4MTgxLCAwLjE5OTE1OCwgZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OCwgZmFsc2UsIDAu
MTk4MTgxLCAwLjE5OTE1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW4u
aGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ3ODkzNywgMC40Nzk5MTQsIGZhbHNlLCAw
LjQ3ODkzNywgMC40Nzk5MTQsIGZhbHNlLCAwLjQ3ODkzNywgMC40Nzk5MTQsIGZhbHNlLCAwLjQ3
ODkzNywgMC40Nzk5MTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLmhp
Z2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTk4MTgxLCAwLjE5OTE1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zaW4uaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODE4MSwg
MC4xOTkxNTgsIGZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNThdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc2luLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDc4OTM3LCAwLjQ3OTkx
NCwgZmFsc2UsIDAuNDc4OTM3LCAwLjQ3OTkxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zaW4uaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNTgs
IGZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNTgsIGZhbHNlLCAwLjE5ODE4MSwgMC4xOTkxNThdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luLmhpZ2hwX2ZyYWdtZW50LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxz
ZSwgMC40Nzg5MzcsIDAuNDc5OTE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpbi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTgxODEsIDAuMTk5MTU4LCBm
YWxzZSwgMC4xOTgxODEsIDAuMTk5MTU4LCBmYWxzZSwgMC4xOTgxODEsIDAuMTk5MTU4LCBmYWxz
ZSwgMC4xOTgxODEsIDAuMTk5MTU4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpbi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBm
YWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxzZSwgMC40Nzg5MzcsIDAuNDc5OTE0LCBmYWxz
ZSwgMC40Nzg5MzcsIDAuNDc5OTE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmNvcy5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjk2MzgxNiwgMC45OTY2MTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uY29zLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODYxOTU4LCAwLjg5MzIwOF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45NjM4MTYsIDAu
OTk2NjEyLCBmYWxzZSwgMC45NjM4MTYsIDAuOTk2NjEyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmNvcy5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg2MTk1OCwgMC44OTMyMDgsIGZh
bHNlLCAwLjg2MTk1OCwgMC44OTMyMDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uY29zLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45NjM4MTYsIDAuOTk2NjEyLCBmYWxzZSwg
MC45NjM4MTYsIDAuOTk2NjEyLCBmYWxzZSwgMC45NjM4MTYsIDAuOTk2NjEyXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODYx
OTU4LCAwLjg5MzIwOCwgZmFsc2UsIDAuODYxOTU4LCAwLjg5MzIwOCwgZmFsc2UsIDAuODYxOTU4
LCAwLjg5MzIwOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubG93cF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTYzODE2LCAwLjk5NjYxMiwgZmFsc2UsIDAuOTYzODE2
LCAwLjk5NjYxMiwgZmFsc2UsIDAuOTYzODE2LCAwLjk5NjYxMiwgZmFsc2UsIDAuOTYzODE2LCAw
Ljk5NjYxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubG93cF92ZXJ0
ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuODYxOTU4LCAwLjg5MzIwOCwgZmFsc2UsIDAuODYxOTU4LCAw
Ljg5MzIwOCwgZmFsc2UsIDAuODYxOTU4LCAwLjg5MzIwOCwgZmFsc2UsIDAuODYxOTU4LCAwLjg5
MzIwOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubG93cF9mcmFnbWVu
dC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
Ljk2MzgxNiwgMC45OTY2MTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29z
Lmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC44NjE5NTgsIDAuODkzMjA4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmNvcy5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTYzODE2LCAwLjk5NjYxMiwgZmFs
c2UsIDAuOTYzODE2LCAwLjk5NjYxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5jb3MubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg2MTk1OCwgMC44OTMyMDgsIGZhbHNlLCAwLjg2
MTk1OCwgMC44OTMyMDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zLmxv
d3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk2MzgxNiwgMC45OTY2MTIsIGZhbHNlLCAwLjk2Mzgx
NiwgMC45OTY2MTIsIGZhbHNlLCAwLjk2MzgxNiwgMC45OTY2MTJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY29zLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg2MTk1OCwg
MC44OTMyMDgsIGZhbHNlLCAwLjg2MTk1OCwgMC44OTMyMDgsIGZhbHNlLCAwLjg2MTk1OCwgMC44
OTMyMDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zLmxvd3BfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuOTYzODE2LCAwLjk5NjYxMiwgZmFsc2UsIDAuOTYzODE2LCAw
Ljk5NjYxMiwgZmFsc2UsIDAuOTYzODE2LCAwLjk5NjYxMiwgZmFsc2UsIDAuOTYzODE2LCAwLjk5
NjYxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubG93cF9mcmFnbWVu
dC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC44NjE5NTgsIDAuODkzMjA4LCBmYWxzZSwgMC44NjE5NTgsIDAu
ODkzMjA4LCBmYWxzZSwgMC44NjE5NTgsIDAuODkzMjA4LCBmYWxzZSwgMC44NjE5NTgsIDAuODkz
MjA4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5tZWRpdW1wX3ZlcnRl
eC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
Ljk3ODA3NSwgMC45ODIwMjldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29z
Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuODc1NjI5LCAwLjg3OTUzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5jb3MubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45NzgwNzUsIDAuOTgyMDI5LCBm
YWxzZSwgMC45NzgwNzUsIDAuOTgyMDI5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmNvcy5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg3NTYyOSwgMC44Nzk1MzYsIGZhbHNlLCAw
Ljg3NTYyOSwgMC44Nzk1MzZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29z
Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45NzgwNzUsIDAuOTgyMDI5LCBmYWxzZSwgMC45
NzgwNzUsIDAuOTgyMDI5LCBmYWxzZSwgMC45NzgwNzUsIDAuOTgyMDI5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODc1
NjI5LCAwLjg3OTUzNiwgZmFsc2UsIDAuODc1NjI5LCAwLjg3OTUzNiwgZmFsc2UsIDAuODc1NjI5
LCAwLjg3OTUzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubWVkaXVt
cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTc4MDc1LCAwLjk4MjAyOSwgZmFsc2UsIDAuOTc4
MDc1LCAwLjk4MjAyOSwgZmFsc2UsIDAuOTc4MDc1LCAwLjk4MjAyOSwgZmFsc2UsIDAuOTc4MDc1
LCAwLjk4MjAyOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubWVkaXVt
cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODc1NjI5LCAwLjg3OTUzNiwgZmFsc2UsIDAuODc1
NjI5LCAwLjg3OTUzNiwgZmFsc2UsIDAuODc1NjI5LCAwLjg3OTUzNiwgZmFsc2UsIDAuODc1NjI5
LCAwLjg3OTUzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MubWVkaXVt
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjk3ODA3NSwgMC45ODIwMjldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uY29zLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC44NzU2MjksIDAuODc5NTM2XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTc4MDc1
LCAwLjk4MjAyOSwgZmFsc2UsIDAuOTc4MDc1LCAwLjk4MjAyOV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5jb3MubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg3NTYyOSwgMC44
Nzk1MzYsIGZhbHNlLCAwLjg3NTYyOSwgMC44Nzk1MzZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uY29zLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk3ODA3NSwgMC45
ODIwMjksIGZhbHNlLCAwLjk3ODA3NSwgMC45ODIwMjksIGZhbHNlLCAwLjk3ODA3NSwgMC45ODIw
MjldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zLm1lZGl1bXBfZnJhZ21l
bnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjg3NTYyOSwgMC44Nzk1MzYsIGZhbHNlLCAwLjg3NTYyOSwgMC44Nzk1
MzYsIGZhbHNlLCAwLjg3NTYyOSwgMC44Nzk1MzZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uY29zLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTc4MDc1LCAw
Ljk4MjAyOSwgZmFsc2UsIDAuOTc4MDc1LCAwLjk4MjAyOSwgZmFsc2UsIDAuOTc4MDc1LCAwLjk4
MjAyOSwgZmFsc2UsIDAuOTc4MDc1LCAwLjk4MjAyOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5jb3MubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC44NzU2Mjks
IDAuODc5NTM2LCBmYWxzZSwgMC44NzU2MjksIDAuODc5NTM2LCBmYWxzZSwgMC44NzU2MjksIDAu
ODc5NTM2LCBmYWxzZSwgMC44NzU2MjksIDAuODc5NTM2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmNvcy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45Nzk1NzgsIDAuOTgwNTU1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6
ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC44NzcwOTQsIDAuODc4MDcx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC45Nzk1NzgsIDAuOTgwNTU1LCBmYWxzZSwgMC45Nzk1NzgsIDAuOTgwNTU1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC44Nzcw
OTQsIDAuODc4MDcxLCBmYWxzZSwgMC44NzcwOTQsIDAuODc4MDcxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk3OTU3OCwg
MC45ODA1NTUsIGZhbHNlLCAwLjk3OTU3OCwgMC45ODA1NTUsIGZhbHNlLCAwLjk3OTU3OCwgMC45
ODA1NTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zLmhpZ2hwX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3
MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5jb3MuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk3OTU3OCwgMC45ODA1
NTUsIGZhbHNlLCAwLjk3OTU3OCwgMC45ODA1NTUsIGZhbHNlLCAwLjk3OTU3OCwgMC45ODA1NTUs
IGZhbHNlLCAwLjk3OTU3OCwgMC45ODA1NTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uY29zLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC44NzcwOTQsIDAuODc4MDcx
LCBmYWxzZSwgMC44NzcwOTQsIDAuODc4MDcxLCBmYWxzZSwgMC44NzcwOTQsIDAuODc4MDcxLCBm
YWxzZSwgMC44NzcwOTQsIDAuODc4MDcxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmNvcy5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk3OTU3OCwgMC45ODA1NTVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY29zLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3MuaGlnaHBfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC45Nzk1NzgsIDAuOTgwNTU1LCBmYWxzZSwgMC45Nzk1NzgsIDAuOTgwNTU1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg3NzA5
NCwgMC44NzgwNzEsIGZhbHNlLCAwLjg3NzA5NCwgMC44NzgwNzFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY29zLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45Nzk1Nzgs
IDAuOTgwNTU1LCBmYWxzZSwgMC45Nzk1NzgsIDAuOTgwNTU1LCBmYWxzZSwgMC45Nzk1NzgsIDAu
OTgwNTU1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvcy5oaWdocF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3
ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5jb3MuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuOTc5NTc4LCAw
Ljk4MDU1NSwgZmFsc2UsIDAuOTc5NTc4LCAwLjk4MDU1NSwgZmFsc2UsIDAuOTc5NTc4LCAwLjk4
MDU1NSwgZmFsc2UsIDAuOTc5NTc4LCAwLjk4MDU1NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5jb3MuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuODc3MDk0LCAw
Ljg3ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3
ODA3MSwgZmFsc2UsIDAuODc3MDk0LCAwLjg3ODA3MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi50YW4ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubG93cF92ZXJ0ZXgudmVjMics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnRhbi5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubG93cF92ZXJ0
ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24udGFuLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRhbi5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50YW4ubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfZnJhZ21l
bnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
dGFuLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLm1lZGl1bXBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwNjg0
LCAwLjIwNDgzNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubWVkaXVt
cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41NDEwMTYsIDAuNTUxNzU4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnRhbi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMDY4NCwgMC4yMDQ4MzQsIGZhbHNlLCAw
LjIwMDY4NCwgMC4yMDQ4MzRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFu
Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQxMDE2LCAwLjU1MTc1OCwgZmFsc2UsIDAuNTQxMDE2
LCAwLjU1MTc1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubWVkaXVt
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMDY4NCwgMC4yMDQ4MzQsIGZhbHNlLCAwLjIwMDY4NCwg
MC4yMDQ4MzQsIGZhbHNlLCAwLjIwMDY4NCwgMC4yMDQ4MzRdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udGFuLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41NDEwMTYsIDAu
NTUxNzU4LCBmYWxzZSwgMC41NDEwMTYsIDAuNTUxNzU4LCBmYWxzZSwgMC41NDEwMTYsIDAuNTUx
NzU4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5tZWRpdW1wX3ZlcnRl
eC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0LCBmYWxzZSwgMC4yMDA2ODQsIDAu
MjA0ODM0LCBmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0LCBmYWxzZSwgMC4yMDA2ODQsIDAuMjA0
ODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5tZWRpdW1wX3ZlcnRl
eC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC41NDEwMTYsIDAuNTUxNzU4LCBmYWxzZSwgMC41NDEwMTYsIDAu
NTUxNzU4LCBmYWxzZSwgMC41NDEwMTYsIDAuNTUxNzU4LCBmYWxzZSwgMC41NDEwMTYsIDAuNTUx
NzU4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5tZWRpdW1wX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMjAwNjg0LCAwLjIwNDgzNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50
YW4ubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjU0MTAxNiwgMC41NTE3NThdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udGFuLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDA2ODQsIDAuMjA0
ODM0LCBmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnRhbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQxMDE2LCAwLjU1MTc1OCwg
ZmFsc2UsIDAuNTQxMDE2LCAwLjU1MTc1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi50YW4ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwNjg0LCAwLjIwNDgzNCwg
ZmFsc2UsIDAuMjAwNjg0LCAwLjIwNDgzNCwgZmFsc2UsIDAuMjAwNjg0LCAwLjIwNDgzNF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4ubWVkaXVtcF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNTQxMDE2LCAwLjU1MTc1OCwgZmFsc2UsIDAuNTQxMDE2LCAwLjU1MTc1OCwgZmFs
c2UsIDAuNTQxMDE2LCAwLjU1MTc1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi50YW4ubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0
LCBmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0LCBmYWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0LCBm
YWxzZSwgMC4yMDA2ODQsIDAuMjA0ODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnRhbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0MTAxNiwgMC41NTE3
NTgsIGZhbHNlLCAwLjU0MTAxNiwgMC41NTE3NTgsIGZhbHNlLCAwLjU0MTAxNiwgMC41NTE3NTgs
IGZhbHNlLCAwLjU0MTAxNiwgMC41NTE3NThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24udGFuLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2M119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAy
MTExLCAwLjIwMzMxLCBmYWxzZSwgMC4yMDIxMTEsIDAuMjAzMzFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24udGFuLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0NTQ0MywgMC41NDcx
NjMsIGZhbHNlLCAwLjU0NTQ0MywgMC41NDcxNjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udGFuLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAyMTExLCAwLjIwMzMxLCBm
YWxzZSwgMC4yMDIxMTEsIDAuMjAzMzEsIGZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41NDU0NDMsIDAuNTQ3MTYzLCBmYWxzZSwgMC41NDU0NDMsIDAuNTQ3MTYzLCBmYWxzZSwgMC41
NDU0NDMsIDAuNTQ3MTYzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5o
aWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAyMTExLCAwLjIwMzMxLCBmYWxzZSwgMC4y
MDIxMTEsIDAuMjAzMzEsIGZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMSwgZmFsc2UsIDAuMjAyMTEx
LCAwLjIwMzMxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbi5oaWdocF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQz
LCAwLjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQzLCAw
LjU0NzE2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfZnJh
Z21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4yMDIxMTEsIDAuMjAzMzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
dGFuLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDIxMTEsIDAuMjAzMzEs
IGZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi50YW4uaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41NDU0NDMsIDAuNTQ3MTYzLCBmYWxzZSwg
MC41NDU0NDMsIDAuNTQ3MTYzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRh
bi5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAyMTExLCAwLjIwMzMxLCBmYWxzZSwgMC4y
MDIxMTEsIDAuMjAzMzEsIGZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVj
MygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0NTQ0
MywgMC41NDcxNjMsIGZhbHNlLCAwLjU0NTQ0MywgMC41NDcxNjMsIGZhbHNlLCAwLjU0NTQ0Mywg
MC41NDcxNjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuLmhpZ2hwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMjExMSwgMC4yMDMzMSwgZmFsc2UsIDAuMjAyMTEx
LCAwLjIwMzMxLCBmYWxzZSwgMC4yMDIxMTEsIDAuMjAzMzEsIGZhbHNlLCAwLjIwMjExMSwgMC4y
MDMzMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW4uaGlnaHBfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQzLCAw
LjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQzLCAwLjU0NzE2MywgZmFsc2UsIDAuNTQ1NDQzLCAwLjU0
NzE2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLmxvd3BfdmVydGV4
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTgwOTUxLCAwLjIyMDE3M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2lu
Lmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hc2luLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgwOTUxLCAwLjIyMDE3MywgZmFsc2Us
IDAuMTgwOTUxLCAwLjIyMDE3M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
c2luLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNCwgZmFsc2UsIDAuNTA3OTc0
LCAwLjUzOTIyNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLmxvd3Bf
dmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTczLCBmYWxzZSwgMC4xODA5NTEsIDAu
MjIwMTczLCBmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTczXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFzaW4ubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUwNzk3NCwgMC41Mzky
MjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41MzkyMjRd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5sb3dwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTczLCBmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTcz
LCBmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTczLCBmYWxzZSwgMC4xODA5NTEsIDAuMjIwMTczXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4ubG93cF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNCwgZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNCwg
ZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNCwgZmFsc2UsIDAuNTA3OTc0LCAwLjUzOTIyNF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLmxvd3BfZnJhZ21lbnQuc2NhbGFy
JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xODA5NTEs
IDAuMjIwMTczXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4ubG93cF9m
cmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjUwNzk3NCwgMC41MzkyMjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXNpbi5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgwOTUxLCAwLjIyMDE3MywgZmFsc2UsIDAu
MTgwOTUxLCAwLjIyMDE3M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2lu
Lmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MDc5NzQsIDAuNTM5MjI0LCBmYWxzZSwgMC41MDc5NzQs
IDAuNTM5MjI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4ubG93cF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgwOTUxLCAwLjIyMDE3MywgZmFsc2UsIDAuMTgwOTUxLCAw
LjIyMDE3MywgZmFsc2UsIDAuMTgwOTUxLCAwLjIyMDE3M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hc2luLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUwNzk3NCwgMC41
MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41Mzky
MjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5sb3dwX2ZyYWdtZW50
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE4MDk1MSwgMC4yMjAxNzMsIGZhbHNlLCAwLjE4MDk1MSwgMC4y
MjAxNzMsIGZhbHNlLCAwLjE4MDk1MSwgMC4yMjAxNzMsIGZhbHNlLCAwLjE4MDk1MSwgMC4yMjAx
NzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5sb3dwX2ZyYWdtZW50
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjUwNzk3NCwgMC41MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41
MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41MzkyMjQsIGZhbHNlLCAwLjUwNzk3NCwgMC41Mzky
MjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5tZWRpdW1wX3ZlcnRl
eC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjIwMDgyLCAwLjIwMjA0Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2lu
Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hc2luLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwODIsIDAuMjAyMDQ2LCBm
YWxzZSwgMC4yMDA4MiwgMC4yMDIwNDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXNpbi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUyMTY0NiwgMC41MjU1NTIsIGZhbHNlLCAw
LjUyMTY0NiwgMC41MjU1NTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNp
bi5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwODIsIDAuMjAyMDQ2LCBmYWxzZSwgMC4y
MDA4MiwgMC4yMDIwNDYsIGZhbHNlLCAwLjIwMDgyLCAwLjIwMjA0Nl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjE2
NDYsIDAuNTI1NTUyLCBmYWxzZSwgMC41MjE2NDYsIDAuNTI1NTUyLCBmYWxzZSwgMC41MjE2NDYs
IDAuNTI1NTUyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4ubWVkaXVt
cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwODIsIDAuMjAyMDQ2LCBmYWxzZSwgMC4yMDA4
MiwgMC4yMDIwNDYsIGZhbHNlLCAwLjIwMDgyLCAwLjIwMjA0NiwgZmFsc2UsIDAuMjAwODIsIDAu
MjAyMDQ2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4ubWVkaXVtcF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1MiwgZmFsc2UsIDAuNTIxNjQ2
LCAwLjUyNTU1MiwgZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1MiwgZmFsc2UsIDAuNTIxNjQ2LCAw
LjUyNTU1Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLm1lZGl1bXBf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4yMDA4MiwgMC4yMDIwNDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXNpbi5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1Ml19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDA4Miwg
MC4yMDIwNDYsIGZhbHNlLCAwLjIwMDgyLCAwLjIwMjA0Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hc2luLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjE2NDYsIDAuNTI1
NTUyLCBmYWxzZSwgMC41MjE2NDYsIDAuNTI1NTUyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFzaW4ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAwODIsIDAuMjAy
MDQ2LCBmYWxzZSwgMC4yMDA4MiwgMC4yMDIwNDYsIGZhbHNlLCAwLjIwMDgyLCAwLjIwMjA0Nl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLm1lZGl1bXBfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjUyMTY0NiwgMC41MjU1NTIsIGZhbHNlLCAwLjUyMTY0NiwgMC41MjU1NTIs
IGZhbHNlLCAwLjUyMTY0NiwgMC41MjU1NTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uYXNpbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMDgyLCAwLjIw
MjA0NiwgZmFsc2UsIDAuMjAwODIsIDAuMjAyMDQ2LCBmYWxzZSwgMC4yMDA4MiwgMC4yMDIwNDYs
IGZhbHNlLCAwLjIwMDgyLCAwLjIwMjA0Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hc2luLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTIxNjQ2LCAwLjUy
NTU1MiwgZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1MiwgZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1
MiwgZmFsc2UsIDAuNTIxNjQ2LCAwLjUyNTU1Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hc2luLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMTM1OCwgMC4yMDEzNThdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4uaGlnaHBfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMjAxMzU4LCAwLjIwMTM1OCwgZmFsc2UsIDAuMjAxMzU4LCAwLjIwMTM1OF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUyMzU5
OSwgMC41MjM1OTksIGZhbHNlLCAwLjUyMzU5OSwgMC41MjM1OTldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uYXNpbi5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMTM1OCwg
MC4yMDEzNTgsIGZhbHNlLCAwLjIwMTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIwMTM1OCwgMC4y
MDEzNThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5oaWdocF92ZXJ0
ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUyMzU5OSwgMC41MjM1OTksIGZhbHNlLCAwLjUyMzU5OSwgMC41MjM1
OTksIGZhbHNlLCAwLjUyMzU5OSwgMC41MjM1OTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYXNpbi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAxMzU4LCAwLjIw
MTM1OCwgZmFsc2UsIDAuMjAxMzU4LCAwLjIwMTM1OCwgZmFsc2UsIDAuMjAxMzU4LCAwLjIwMTM1
OCwgZmFsc2UsIDAuMjAxMzU4LCAwLjIwMTM1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hc2luLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjM1OTksIDAuNTIz
NTk5LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5
LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmFzaW4uaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDEzNTgsIDAuMjAxMzU4XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4uaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6
ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4uaGlnaHBfZnJhZ21lbnQu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4yMDEzNTgsIDAuMjAxMzU4LCBmYWxzZSwgMC4yMDEzNTgsIDAuMjAxMzU4XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4uaGlnaHBfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41MjM1OTksIDAuNTIzNTk5LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW4uaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjIwMTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIwMTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIw
MTM1OCwgMC4yMDEzNThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5o
aWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTIzNTk5LCAwLjUyMzU5OSwgZmFsc2UsIDAuNTIz
NTk5LCAwLjUyMzU5OSwgZmFsc2UsIDAuNTIzNTk5LCAwLjUyMzU5OV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjIwMTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIwMTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIw
MTM1OCwgMC4yMDEzNTgsIGZhbHNlLCAwLjIwMTM1OCwgMC4yMDEzNThdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41MjM1OTksIDAuNTIzNTk5LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5LCBmYWxzZSwgMC41
MjM1OTksIDAuNTIzNTk5LCBmYWxzZSwgMC41MjM1OTksIDAuNTIzNTk5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zNTA2MiwgMS4zODk4NV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmxvd3BfdmVydGV4LnNjYWxhcics
IGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDMxNTcsIDEu
MDYyODJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5sb3dwX3ZlcnRl
eC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLjM1MDYyLCAxLjM4OTg1LCBmYWxzZSwgMS4zNTA2MiwgMS4zODk4NV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDMx
NTcsIDEuMDYyODIsIGZhbHNlLCAxLjAzMTU3LCAxLjA2MjgyXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmFjb3MubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM1MDYyLCAxLjM4
OTg1LCBmYWxzZSwgMS4zNTA2MiwgMS4zODk4NSwgZmFsc2UsIDEuMzUwNjIsIDEuMzg5ODVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5sb3dwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDEuMDMxNTcsIDEuMDYyODIsIGZhbHNlLCAxLjAzMTU3LCAxLjA2MjgyLCBmYWxzZSwgMS4w
MzE1NywgMS4wNjI4Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmxv
d3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM1MDYyLCAxLjM4OTg1LCBmYWxzZSwgMS4zNTA2
MiwgMS4zODk4NSwgZmFsc2UsIDEuMzUwNjIsIDEuMzg5ODUsIGZhbHNlLCAxLjM1MDYyLCAxLjM4
OTg1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubG93cF92ZXJ0ZXgu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDEuMDMxNTcsIDEuMDYyODIsIGZhbHNlLCAxLjAzMTU3LCAxLjA2Mjgy
LCBmYWxzZSwgMS4wMzE1NywgMS4wNjI4MiwgZmFsc2UsIDEuMDMxNTcsIDEuMDYyODJdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5sb3dwX2ZyYWdtZW50LnNjYWxhcics
IGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzUwNjIsIDEu
Mzg5ODVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5sb3dwX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEuMDMxNTcsIDEuMDYyODJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNv
cy5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzUwNjIsIDEuMzg5ODUsIGZhbHNlLCAxLjM1MDYyLCAx
LjM4OTg1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubG93cF9mcmFn
bWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAxLjAzMTU3LCAxLjA2MjgyLCBmYWxzZSwgMS4wMzE1NywgMS4wNjI4Ml19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmxvd3BfZnJhZ21lbnQudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjM1MDYyLCAxLjM4OTg1LCBmYWxzZSwgMS4zNTA2MiwgMS4zODk4NSwgZmFsc2UsIDEu
MzUwNjIsIDEuMzg5ODVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5s
b3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMzE1NywgMS4wNjI4MiwgZmFsc2UsIDEuMDMxNTcs
IDEuMDYyODIsIGZhbHNlLCAxLjAzMTU3LCAxLjA2MjgyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFjb3MubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zNTA2Miwg
MS4zODk4NSwgZmFsc2UsIDEuMzUwNjIsIDEuMzg5ODUsIGZhbHNlLCAxLjM1MDYyLCAxLjM4OTg1
LCBmYWxzZSwgMS4zNTA2MiwgMS4zODk4NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hY29zLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDMxNTcsIDEuMDYyODIs
IGZhbHNlLCAxLjAzMTU3LCAxLjA2MjgyLCBmYWxzZSwgMS4wMzE1NywgMS4wNjI4MiwgZmFsc2Us
IDEuMDMxNTcsIDEuMDYyODJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNv
cy5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAxLjM2NTMzLCAxLjM3MzM5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFjb3MubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wNDMyOSwgMS4wNTExXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zNjUzMywg
MS4zNzMzOSwgZmFsc2UsIDEuMzY1MzMsIDEuMzczMzldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYWNvcy5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0MzI5LCAxLjA1MTEsIGZh
bHNlLCAxLjA0MzI5LCAxLjA1MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWNvcy5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzY1MzMsIDEuMzczMzksIGZhbHNlLCAx
LjM2NTMzLCAxLjM3MzM5LCBmYWxzZSwgMS4zNjUzMywgMS4zNzMzOV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wNDMy
OSwgMS4wNTExLCBmYWxzZSwgMS4wNDMyOSwgMS4wNTExLCBmYWxzZSwgMS4wNDMyOSwgMS4wNTEx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubWVkaXVtcF92ZXJ0ZXgu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDEuMzY1MzMsIDEuMzczMzksIGZhbHNlLCAxLjM2NTMzLCAxLjM3MzM5
LCBmYWxzZSwgMS4zNjUzMywgMS4zNzMzOSwgZmFsc2UsIDEuMzY1MzMsIDEuMzczMzldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5tZWRpdW1wX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4wNDMyOSwgMS4wNTExLCBmYWxzZSwgMS4wNDMyOSwgMS4wNTExLCBmYWxzZSwg
MS4wNDMyOSwgMS4wNTExLCBmYWxzZSwgMS4wNDMyOSwgMS4wNTExXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM2NTMzLCAxLjM3MzM5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubWVkaXVtcF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0
MzI5LCAxLjA1MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5tZWRp
dW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEuMzY1MzMsIDEuMzczMzksIGZhbHNlLCAxLjM2NTMzLCAxLjM3
MzM5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MubWVkaXVtcF9mcmFn
bWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAxLjA0MzI5LCAxLjA1MTEsIGZhbHNlLCAxLjA0MzI5LCAxLjA1MTFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5tZWRpdW1wX2ZyYWdtZW50LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMS4zNjUzMywgMS4zNzMzOSwgZmFsc2UsIDEuMzY1MzMsIDEuMzczMzksIGZhbHNlLCAx
LjM2NTMzLCAxLjM3MzM5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3Mu
bWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDQzMjksIDEuMDUxMSwgZmFsc2UsIDEuMDQz
MjksIDEuMDUxMSwgZmFsc2UsIDEuMDQzMjksIDEuMDUxMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hY29zLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzY1
MzMsIDEuMzczMzksIGZhbHNlLCAxLjM2NTMzLCAxLjM3MzM5LCBmYWxzZSwgMS4zNjUzMywgMS4z
NzMzOSwgZmFsc2UsIDEuMzY1MzMsIDEuMzczMzldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYWNvcy5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0MzI5LCAx
LjA1MTEsIGZhbHNlLCAxLjA0MzI5LCAxLjA1MTEsIGZhbHNlLCAxLjA0MzI5LCAxLjA1MTEsIGZh
bHNlLCAxLjA0MzI5LCAxLjA1MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWNvcy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hY29zLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0NzIsIDEuMDQ3Ml19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM2OTQ0LCAxLjM2
OTQ0LCBmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hY29zLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0NzIsIDEuMDQ3MiwgZmFsc2UsIDEu
MDQ3MiwgMS4wNDcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MuaGln
aHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NCwgZmFsc2UsIDEuMzY5NDQsIDEu
MzY5NDQsIGZhbHNlLCAxLjM2OTQ0LCAxLjM2OTQ0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFjb3MuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wNDcyLCAxLjA0NzIsIGZh
bHNlLCAxLjA0NzIsIDEuMDQ3MiwgZmFsc2UsIDEuMDQ3MiwgMS4wNDcyXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3MuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LjM2OTQ0LCAxLjM2OTQ0LCBmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NCwgZmFsc2UsIDEuMzY5NDQs
IDEuMzY5NDQsIGZhbHNlLCAxLjM2OTQ0LCAxLjM2OTQ0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFjb3MuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0NzIsIDEu
MDQ3MiwgZmFsc2UsIDEuMDQ3MiwgMS4wNDcyLCBmYWxzZSwgMS4wNDcyLCAxLjA0NzIsIGZhbHNl
LCAxLjA0NzIsIDEuMDQ3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29z
LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDEuMzY5NDQsIDEuMzY5NDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYWNvcy5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0NzIsIDEuMDQ3Ml19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzY5NDQsIDEu
MzY5NDQsIGZhbHNlLCAxLjM2OTQ0LCAxLjM2OTQ0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFjb3MuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wNDcyLCAxLjA0NzIsIGZhbHNl
LCAxLjA0NzIsIDEuMDQ3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29z
LmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NCwgZmFsc2UsIDEuMzY5
NDQsIDEuMzY5NDQsIGZhbHNlLCAxLjM2OTQ0LCAxLjM2OTQ0XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmFjb3MuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjA0NzIsIDEu
MDQ3MiwgZmFsc2UsIDEuMDQ3MiwgMS4wNDcyLCBmYWxzZSwgMS4wNDcyLCAxLjA0NzJdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvcy5oaWdocF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NCwgZmFsc2UsIDEuMzY5NDQsIDEuMzY5NDQsIGZhbHNl
LCAxLjM2OTQ0LCAxLjM2OTQ0LCBmYWxzZSwgMS4zNjk0NCwgMS4zNjk0NF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjA0NzIsIDEuMDQ3MiwgZmFsc2UsIDEuMDQ3MiwgMS4wNDcyLCBmYWxzZSwgMS4wNDcyLCAx
LjA0NzIsIGZhbHNlLCAxLjA0NzIsIDEuMDQ3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hdGFuMi5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43NTAxNjgsIDAuODIwNjI4XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM1Njc3MywgMC40MDE1MDhd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubG93cF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC43NTAxNjgsIDAuODIwNjI4LCBmYWxzZSwgMC43NTAxNjgsIDAuODIw
NjI4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmxvd3BfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOCwgZmFsc2UsIDAuMzU2NzczLCAw
LjQwMTUwOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5sb3dwX3Zl
cnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43NTAxNjgsIDAuODIwNjI4LCBmYWxz
ZSwgMC43NTAxNjgsIDAuODIwNjI4LCBmYWxzZSwgMC43NTAxNjgsIDAuODIwNjI4XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjM1Njc3MywgMC40MDE1MDgsIGZhbHNlLCAwLjM1Njc3MywgMC40
MDE1MDgsIGZhbHNlLCAwLjM1Njc3MywgMC40MDE1MDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYXRhbjIubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2Mjgs
IGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjhdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubG93cF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM1Njc3MywgMC40MDE1MDgsIGZhbHNl
LCAwLjM1Njc3MywgMC40MDE1MDgsIGZhbHNlLCAwLjM1Njc3MywgMC40MDE1MDgsIGZhbHNlLCAw
LjM1Njc3MywgMC40MDE1MDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRh
bjIubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC43NTAxNjgsIDAuODIwNjI4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmF0YW4yLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
NSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5sb3dwX2ZyYWdtZW50LnZlYzInLCBp
bnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNzUwMTY4LCAwLjgyMDYyOCwgZmFsc2UsIDAuNzUwMTY4LCAwLjgyMDYyOF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5sb3dwX2ZyYWdtZW50LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOCwgZmFsc2UsIDAuMzU2NzczLCAwLjQw
MTUwOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5sb3dwX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNl
LCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjhdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubG93cF9mcmFnbWVudC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4zNTY3NzMsIDAuNDAxNTA4LCBmYWxzZSwgMC4zNTY3NzMsIDAu
NDAxNTA4LCBmYWxzZSwgMC4zNTY3NzMsIDAuNDAxNTA4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmF0YW4yLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2
MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2MjgsIGZhbHNlLCAwLjc1MDE2OCwgMC44MjA2Mjhd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubG93cF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOCwg
ZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOCwgZmFsc2UsIDAuMzU2NzczLCAwLjQwMTUwOCwgZmFs
c2UsIDAuMzU2NzczLCAwLjQwMTUwOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hdGFuMi5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC43ODI4MzUsIDAuNzg3OTYxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4Ml19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5tZWRpdW1wX3ZlcnRleC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjc4MjgzNSwgMC43ODc5NjEsIGZhbHNlLCAwLjc4MjgzNSwgMC43
ODc5NjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF92
ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zNzk0NDYsIDAuMzgxODIsIGZhbHNlLCAwLjM3OTQ0
NiwgMC4zODE4Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5tZWRp
dW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43ODI4MzUsIDAuNzg3OTYx
LCBmYWxzZSwgMC43ODI4MzUsIDAuNzg3OTYxLCBmYWxzZSwgMC43ODI4MzUsIDAuNzg3OTYxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLm1lZGl1bXBfdmVydGV4LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4MiwgZmFsc2UsIDAuMzc5
NDQ2LCAwLjM4MTgyLCBmYWxzZSwgMC4zNzk0NDYsIDAuMzgxODJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjc4MjgzNSwgMC43ODc5NjEsIGZhbHNlLCAwLjc4MjgzNSwg
MC43ODc5NjEsIGZhbHNlLCAwLjc4MjgzNSwgMC43ODc5NjEsIGZhbHNlLCAwLjc4MjgzNSwgMC43
ODc5NjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM3OTQ0NiwgMC4z
ODE4MiwgZmFsc2UsIDAuMzc5NDQ2LCAwLjM4MTgyLCBmYWxzZSwgMC4zNzk0NDYsIDAuMzgxODIs
IGZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hdGFuMi5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjc4MjgzNSwgMC43ODc5NjFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBp
bnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zNzk0NDYsIDAu
MzgxODJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF9m
cmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjc4MjgzNSwgMC43ODc5NjEsIGZhbHNlLCAwLjc4
MjgzNSwgMC43ODc5NjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIu
bWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUs
IDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4MiwgZmFs
c2UsIDAuMzc5NDQ2LCAwLjM4MTgyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmF0YW4yLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4y
KSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzgy
ODM1LCAwLjc4Nzk2MSwgZmFsc2UsIDAuNzgyODM1LCAwLjc4Nzk2MSwgZmFsc2UsIDAuNzgyODM1
LCAwLjc4Nzk2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5tZWRp
dW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4
MiwgZmFsc2UsIDAuMzc5NDQ2LCAwLjM4MTgyLCBmYWxzZSwgMC4zNzk0NDYsIDAuMzgxODJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIubWVkaXVtcF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzgyODM1LCAwLjc4Nzk2MSwg
ZmFsc2UsIDAuNzgyODM1LCAwLjc4Nzk2MSwgZmFsc2UsIDAuNzgyODM1LCAwLjc4Nzk2MSwgZmFs
c2UsIDAuNzgyODM1LCAwLjc4Nzk2MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hdGFuMi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4zNzk0NDYsIDAuMzgxODIsIGZhbHNlLCAwLjM3OTQ0NiwgMC4zODE4MiwgZmFsc2Us
IDAuMzc5NDQ2LCAwLjM4MTgyLCBmYWxzZSwgMC4zNzk0NDYsIDAuMzgxODJdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjc4NTM5OCwgMC43ODUz
OThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIuaGlnaHBfdmVydGV4
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjM4MDUwNiwgMC4zODA1MDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRh
bjIuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFs
c2UsIDAuNzg1Mzk4LCAwLjc4NTM5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hdGFuMi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIo
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3
LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmF0YW4yLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43
ODUzOTgsIDAuNzg1Mzk4LCBmYWxzZSwgMC43ODUzOTgsIDAuNzg1Mzk4LCBmYWxzZSwgMC43ODUz
OTgsIDAuNzg1Mzk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmhp
Z2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3
LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmhpZ2hwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFs
c2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFsc2Us
IDAuNzg1Mzk4LCAwLjc4NTM5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
dGFuMi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjM4MDUwNiwgMC4zODA1MDcsIGZhbHNlLCAwLjM4MDUwNiwgMC4zODA1MDcsIGZhbHNlLCAwLjM4
MDUwNiwgMC4zODA1MDcsIGZhbHNlLCAwLjM4MDUwNiwgMC4zODA1MDddfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbjIuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6
ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5
OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuMi5oaWdocF9mcmFnbWVu
dC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4zODA1MDYsIDAuMzgwNTA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0
YW4yLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAu
MiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwg
ZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hdGFuMi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM4MDUwNiwgMC4z
ODA1MDcsIGZhbHNlLCAwLjM4MDUwNiwgMC4zODA1MDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYXRhbjIuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFsc2UsIDAuNzg1Mzk4LCAwLjc4NTM5OCwgZmFsc2Us
IDAuNzg1Mzk4LCAwLjc4NTM5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
dGFuMi5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zODA1MDYs
IDAuMzgwNTA3LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3LCBmYWxzZSwgMC4zODA1MDYsIDAu
MzgwNTA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4yLmhpZ2hwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43ODUzOTgsIDAu
Nzg1Mzk4LCBmYWxzZSwgMC43ODUzOTgsIDAuNzg1Mzk4LCBmYWxzZSwgMC43ODUzOTgsIDAuNzg1
Mzk4LCBmYWxzZSwgMC43ODUzOTgsIDAuNzg1Mzk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmF0YW4yLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3
LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3LCBmYWxzZSwgMC4zODA1MDYsIDAuMzgwNTA3XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93cF92ZXJ0ZXguc2NhbGFy
JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNzcyNTks
IDAuMjE2MDI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93cF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC40NDgwMjMsIDAuNDc5MjczXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmF0YW4ubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNzcyNTksIDAuMjE2MDI0LCBmYWxzZSwgMC4xNzcy
NTksIDAuMjE2MDI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC40NDgwMjMsIDAuNDc5MjczLCBmYWxzZSwgMC40NDgwMjMsIDAuNDc5
MjczXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93cF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjE3NzI1OSwgMC4yMTYwMjQsIGZhbHNlLCAwLjE3NzI1OSwgMC4yMTYwMjQs
IGZhbHNlLCAwLjE3NzI1OSwgMC4yMTYwMjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uYXRhbi5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3MywgZmFs
c2UsIDAuNDQ4MDIzLCAwLjQ3OTI3MywgZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3M119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE3NzI1OSwgMC4yMTYwMjQsIGZhbHNlLCAwLjE3NzI1OSwgMC4yMTYwMjQsIGZhbHNl
LCAwLjE3NzI1OSwgMC4yMTYwMjQsIGZhbHNlLCAwLjE3NzI1OSwgMC4yMTYwMjRdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6
ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC40NDgwMjMsIDAuNDc5MjczLCBmYWxzZSwgMC40NDgwMjMsIDAuNDc5MjczLCBmYWxzZSwg
MC40NDgwMjMsIDAuNDc5MjczLCBmYWxzZSwgMC40NDgwMjMsIDAuNDc5MjczXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE3NzI1OSwgMC4yMTYw
MjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5sb3dwX2ZyYWdtZW50
LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NDQ4MDIzLCAwLjQ3OTI3M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFu
Lmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNzcyNTksIDAuMjE2MDI0LCBmYWxzZSwgMC4xNzcyNTks
IDAuMjE2MDI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubG93cF9m
cmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjQ0ODAyMywgMC40NzkyNzMsIGZhbHNlLCAwLjQ0ODAyMywgMC40Nzky
NzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5sb3dwX2ZyYWdtZW50
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xNzcyNTksIDAuMjE2MDI0LCBmYWxzZSwgMC4xNzcyNTksIDAuMjE2MDI0
LCBmYWxzZSwgMC4xNzcyNTksIDAuMjE2MDI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmF0YW4ubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3Mywg
ZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3MywgZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3M119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLmxvd3BfZnJhZ21lbnQudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTc3MjU5LCAwLjIxNjAyNCwgZmFsc2UsIDAuMTc3MjU5LCAwLjIxNjAyNCwg
ZmFsc2UsIDAuMTc3MjU5LCAwLjIxNjAyNCwgZmFsc2UsIDAuMTc3MjU5LCAwLjIxNjAyNF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLmxvd3BfZnJhZ21lbnQudmVjNCcs
IGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3MywgZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3Mywg
ZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3MywgZmFsc2UsIDAuNDQ4MDIzLCAwLjQ3OTI3M119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLm1lZGl1bXBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk2ODYs
IDAuMTk4MDcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubWVkaXVt
cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmF0YW4ubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTY4NiwgMC4xOTgwNzIsIGZhbHNlLCAw
LjE5Njg2LCAwLjE5ODA3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFu
Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDYyNjcxLCAwLjQ2NDYyNCwgZmFsc2UsIDAuNDYyNjcx
LCAwLjQ2NDYyNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLm1lZGl1
bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTY4NiwgMC4xOTgwNzIsIGZhbHNlLCAwLjE5Njg2LCAw
LjE5ODA3MiwgZmFsc2UsIDAuMTk2ODYsIDAuMTk4MDcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmF0YW4ubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjY3MSwgMC40
NjQ2MjQsIGZhbHNlLCAwLjQ2MjY3MSwgMC40NjQ2MjQsIGZhbHNlLCAwLjQ2MjY3MSwgMC40NjQ2
MjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5tZWRpdW1wX3ZlcnRl
eC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTY4NiwgMC4xOTgwNzIsIGZhbHNlLCAwLjE5Njg2LCAwLjE5
ODA3MiwgZmFsc2UsIDAuMTk2ODYsIDAuMTk4MDcyLCBmYWxzZSwgMC4xOTY4NiwgMC4xOTgwNzJd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5tZWRpdW1wX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0LCBmYWxzZSwgMC40NjI2NzEsIDAuNDY0
NjI0LCBmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0LCBmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubWVkaXVtcF9mcmFnbWVu
dC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5Njg2LCAwLjE5ODA3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFu
Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmF0YW4ubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5Njg2LCAwLjE5ODA3
MiwgZmFsc2UsIDAuMTk2ODYsIDAuMTk4MDcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmF0YW4ubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjY3MSwgMC40NjQ2MjQsIGZh
bHNlLCAwLjQ2MjY3MSwgMC40NjQ2MjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXRhbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTY4NiwgMC4xOTgwNzIsIGZh
bHNlLCAwLjE5Njg2LCAwLjE5ODA3MiwgZmFsc2UsIDAuMTk2ODYsIDAuMTk4MDcyXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW4ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNDYyNjcxLCAwLjQ2NDYyNCwgZmFsc2UsIDAuNDYyNjcxLCAwLjQ2NDYyNCwgZmFsc2Us
IDAuNDYyNjcxLCAwLjQ2NDYyNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
dGFuLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk2ODYsIDAuMTk4MDcyLCBm
YWxzZSwgMC4xOTY4NiwgMC4xOTgwNzIsIGZhbHNlLCAwLjE5Njg2LCAwLjE5ODA3MiwgZmFsc2Us
IDAuMTk2ODYsIDAuMTk4MDcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0
YW4ubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0LCBm
YWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0LCBmYWxzZSwgMC40NjI2NzEsIDAuNDY0NjI0LCBmYWxz
ZSwgMC40NjI2NzEsIDAuNDY0NjI0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmF0YW4uaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hdGFuLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDhdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTcz
OTUsIDAuMTk3Mzk2LCBmYWxzZSwgMC4xOTczOTUsIDAuMTk3Mzk2XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW4uaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDYzNjQ3LCAwLjQ2
MzY0OCwgZmFsc2UsIDAuNDYzNjQ3LCAwLjQ2MzY0OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hdGFuLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5
NiwgZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5Nl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLmhpZ2hwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNDYzNjQ3LCAwLjQ2MzY0OCwgZmFsc2UsIDAuNDYzNjQ3LCAwLjQ2MzY0OCwgZmFs
c2UsIDAuNDYzNjQ3LCAwLjQ2MzY0OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hdGFuLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTczOTUsIDAuMTk3Mzk2LCBm
YWxzZSwgMC4xOTczOTUsIDAuMTk3Mzk2LCBmYWxzZSwgMC4xOTczOTUsIDAuMTk3Mzk2LCBmYWxz
ZSwgMC4xOTczOTUsIDAuMTk3Mzk2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmF0YW4uaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDgsIGZh
bHNlLCAwLjQ2MzY0NywgMC40NjM2NDgsIGZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDgsIGZhbHNl
LCAwLjQ2MzY0NywgMC40NjM2NDhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YXRhbi5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5NzM5NSwgMC4xOTczOTZdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uYXRhbi5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDhdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5oaWdocF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5NzM5NSwgMC4xOTczOTYsIGZhbHNlLCAwLjE5NzM5NSwgMC4xOTczOTZdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MzY0
NywgMC40NjM2NDgsIGZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDhdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uYXRhbi5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzk1
LCAwLjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAw
LjE5NzM5Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuLmhpZ2hwX2Zy
YWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC40NjM2NDcsIDAuNDYzNjQ4LCBmYWxzZSwgMC40NjM2NDcsIDAu
NDYzNjQ4LCBmYWxzZSwgMC40NjM2NDcsIDAuNDYzNjQ4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmF0YW4uaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzk1
LCAwLjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAw
LjE5NzM5NiwgZmFsc2UsIDAuMTk3Mzk1LCAwLjE5NzM5Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hdGFuLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MzY0
NywgMC40NjM2NDgsIGZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDgsIGZhbHNlLCAwLjQ2MzY0Nywg
MC40NjM2NDgsIGZhbHNlLCAwLjQ2MzY0NywgMC40NjM2NDhdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc2luaC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5w
dXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmxvd3BfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubG93cF92ZXJ0ZXgudmVjMics
IGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5o
Lmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAt
SW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5w
dXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmxvd3BfZnJhZ21l
bnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
aW5oLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5s
b3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubG93cF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5sb3dwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubG93
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5o
Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTk3MTQ0LCAwLjIwNTY4OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5zaW5oLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTcx
NDQsIDAuMjA1Njg4LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MTQxNiwgMC41
Mjg4MDksIGZhbHNlLCAwLjUxNDE2LCAwLjUyODgwOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5zaW5oLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTcxNDQsIDAuMjA1
Njg4LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubWVkaXVtcF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjUxNDE2LCAwLjUyODgwOSwgZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5LCBm
YWxzZSwgMC41MTQxNiwgMC41Mjg4MDldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc2luaC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4
LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4LCBm
YWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnNpbmgubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5
LCBmYWxzZSwgMC41MTQxNiwgMC41Mjg4MDksIGZhbHNlLCAwLjUxNDE2LCAwLjUyODgwOSwgZmFs
c2UsIDAuNTE0MTYsIDAuNTI4ODA5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpbmgubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NzE0NCwgMC4yMDU2ODhdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc2luaC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgubWVkaXVtcF9mcmFnbWVudC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5NzE0NCwgMC4yMDU2ODgsIGZhbHNlLCAwLjE5NzE0NCwgMC4yMDU2ODhdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNTE0MTYsIDAuNTI4ODA5LCBmYWxzZSwgMC41MTQxNiwgMC41Mjg4MDldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xOTcxNDQsIDAuMjA1Njg4LCBmYWxzZSwgMC4xOTcxNDQsIDAuMjA1Njg4LCBmYWxzZSwgMC4x
OTcxNDQsIDAuMjA1Njg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmgu
bWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5LCBmYWxzZSwgMC41
MTQxNiwgMC41Mjg4MDksIGZhbHNlLCAwLjUxNDE2LCAwLjUyODgwOV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMTk3MTQ0LCAwLjIwNTY4OCwgZmFsc2UsIDAuMTk3MTQ0LCAwLjIwNTY4OCwgZmFsc2UsIDAu
MTk3MTQ0LCAwLjIwNTY4OCwgZmFsc2UsIDAuMTk3MTQ0LCAwLjIwNTY4OF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNTE0MTYsIDAuNTI4ODA5LCBmYWxzZSwgMC41MTQxNiwgMC41Mjg4MDksIGZhbHNlLCAw
LjUxNDE2LCAwLjUyODgwOSwgZmFsc2UsIDAuNTE0MTYsIDAuNTI4ODA5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmguaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmhpZ2hwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUyMTA5
NSwgMC41MjEwOTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5oaWdo
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4yMDEzMzYsIDAuMjAxMzM2LCBmYWxzZSwgMC4yMDEzMzYsIDAuMjAx
MzM2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmguaGlnaHBfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNTIxMDk1LCAwLjUyMTA5NiwgZmFsc2UsIDAuNTIxMDk1LCAwLjUyMTA5Nl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmhpZ2hwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMjAxMzM2LCAwLjIwMTMzNiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNiwgZmFsc2Us
IDAuMjAxMzM2LCAwLjIwMTMzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
aW5oLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTIxMDk1LCAwLjUyMTA5NiwgZmFsc2UsIDAu
NTIxMDk1LCAwLjUyMTA5NiwgZmFsc2UsIDAuNTIxMDk1LCAwLjUyMTA5Nl19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4yMDEzMzYsIDAuMjAxMzM2LCBmYWxzZSwgMC4yMDEzMzYsIDAuMjAxMzM2LCBmYWxzZSwgMC4y
MDEzMzYsIDAuMjAxMzM2LCBmYWxzZSwgMC4yMDEzMzYsIDAuMjAxMzM2XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmguaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjUyMTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUy
MTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTZdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMTMzNiwgMC4yMDEzMzZd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5oaWdocF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUy
MTA5NSwgMC41MjEwOTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5o
aWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIwMTMzNiwgMC4yMDEzMzYsIGZhbHNlLCAwLjIwMTMzNiwg
MC4yMDEzMzZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5oaWdocF9m
cmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEw
OTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2luaC5oaWdocF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMz
NiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zaW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MjEwOTUsIDAuNTIxMDk2
LCBmYWxzZSwgMC41MjEwOTUsIDAuNTIxMDk2LCBmYWxzZSwgMC41MjEwOTUsIDAuNTIxMDk2XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpbmguaGlnaHBfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMz
NiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNiwgZmFsc2UsIDAuMjAxMzM2LCAwLjIwMTMzNl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaW5oLmhpZ2hwX2ZyYWdtZW50LnZl
YzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEw
OTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTYsIGZhbHNlLCAwLjUyMTA5NSwgMC41MjEwOTZd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5sb3dwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5sb3dw
X3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uY29zaC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5s
b3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5sb3dwX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5jb3NoLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0
cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubG93cF92ZXJ0ZXgudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmxvd3BfZnJhZ21l
bnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAt
SW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNv
c2gubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5sb3dw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmxvd3BfZnJhZ21l
bnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uY29zaC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubG93cF9mcmFnbWVudC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubG93cF9mcmFnbWVudC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubWVkaXVtcF92ZXJ0ZXguc2Nh
bGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMTA3
NCwgMS4wMzAyN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLm1lZGl1
bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDEuMTE4MTYsIDEuMTM3N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5jb3NoLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDEwNzQsIDEuMDMwMjcsIGZhbHNlLCAxLjAx
MDc0LCAxLjAzMDI3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubWVk
aXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMS4xMTgxNiwgMS4xMzc3LCBmYWxzZSwgMS4xMTgxNiwgMS4xMzc3
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubWVkaXVtcF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAxLjAxMDc0LCAxLjAzMDI3LCBmYWxzZSwgMS4wMTA3NCwgMS4wMzAyNywgZmFs
c2UsIDEuMDEwNzQsIDEuMDMwMjddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
Y29zaC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTE4MTYsIDEuMTM3NywgZmFsc2UsIDEu
MTE4MTYsIDEuMTM3NywgZmFsc2UsIDEuMTE4MTYsIDEuMTM3N119KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5jb3NoLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjAx
MDc0LCAxLjAzMDI3LCBmYWxzZSwgMS4wMTA3NCwgMS4wMzAyNywgZmFsc2UsIDEuMDEwNzQsIDEu
MDMwMjcsIGZhbHNlLCAxLjAxMDc0LCAxLjAzMDI3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmNvc2gubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTE4MTYsIDEu
MTM3NywgZmFsc2UsIDEuMTE4MTYsIDEuMTM3NywgZmFsc2UsIDEuMTE4MTYsIDEuMTM3NywgZmFs
c2UsIDEuMTE4MTYsIDEuMTM3N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5j
b3NoLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMS4wMTA3NCwgMS4wMzAyN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5jb3NoLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUs
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMTgxNiwgMS4xMzc3XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubWVkaXVtcF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LjAxMDc0LCAxLjAzMDI3LCBmYWxzZSwgMS4wMTA3NCwgMS4wMzAyN119KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMTgxNiwg
MS4xMzc3LCBmYWxzZSwgMS4xMTgxNiwgMS4xMzc3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmNvc2gubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDEwNzQsIDEuMDMw
MjcsIGZhbHNlLCAxLjAxMDc0LCAxLjAzMDI3LCBmYWxzZSwgMS4wMTA3NCwgMS4wMzAyN119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLm1lZGl1bXBfZnJhZ21lbnQudmVj
MycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLjExODE2LCAxLjEzNzcsIGZhbHNlLCAxLjExODE2LCAxLjEzNzcsIGZhbHNlLCAx
LjExODE2LCAxLjEzNzddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjAxMDc0LCAxLjAzMDI3LCBmYWxzZSwg
MS4wMTA3NCwgMS4wMzAyNywgZmFsc2UsIDEuMDEwNzQsIDEuMDMwMjcsIGZhbHNlLCAxLjAxMDc0
LCAxLjAzMDI3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2gubWVkaXVt
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMTgxNiwgMS4xMzc3LCBmYWxzZSwgMS4xMTgx
NiwgMS4xMzc3LCBmYWxzZSwgMS4xMTgxNiwgMS4xMzc3LCBmYWxzZSwgMS4xMTgxNiwgMS4xMzc3
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2guaGlnaHBfdmVydGV4LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMDIw
MDcsIDEuMDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5oaWdo
cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMS4xMjc2MywgMS4xMjc2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5jb3NoLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjAyMDA3LCAxLjAyMDA3LCBmYWxzZSwgMS4wMjAw
NywgMS4wMjAwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmhpZ2hw
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzLCBmYWxzZSwgMS4xMjc2MywgMS4xMjc2M119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmhpZ2hwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDEuMDIwMDcsIDEuMDIwMDcsIGZhbHNlLCAxLjAyMDA3LCAxLjAyMDA3LCBmYWxzZSwg
MS4wMjAwNywgMS4wMjAwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3No
LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTI3NjMsIDEuMTI3NjMsIGZhbHNlLCAxLjEyNzYz
LCAxLjEyNzYzLCBmYWxzZSwgMS4xMjc2MywgMS4xMjc2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5jb3NoLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMjAwNywg
MS4wMjAwNywgZmFsc2UsIDEuMDIwMDcsIDEuMDIwMDcsIGZhbHNlLCAxLjAyMDA3LCAxLjAyMDA3
LCBmYWxzZSwgMS4wMjAwNywgMS4wMjAwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5jb3NoLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMjc2MywgMS4xMjc2Mywg
ZmFsc2UsIDEuMTI3NjMsIDEuMTI3NjMsIGZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzLCBmYWxzZSwg
MS4xMjc2MywgMS4xMjc2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3No
LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDEuMDIwMDcsIDEuMDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uY29zaC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2guaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMjAwNywg
MS4wMjAwNywgZmFsc2UsIDEuMDIwMDcsIDEuMDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uY29zaC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzLCBm
YWxzZSwgMS4xMjc2MywgMS4xMjc2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5jb3NoLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMjAwNywgMS4wMjAwNywgZmFsc2Us
IDEuMDIwMDcsIDEuMDIwMDcsIGZhbHNlLCAxLjAyMDA3LCAxLjAyMDA3XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNvc2guaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjEy
NzYzLCAxLjEyNzYzLCBmYWxzZSwgMS4xMjc2MywgMS4xMjc2MywgZmFsc2UsIDEuMTI3NjMsIDEu
MTI3NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY29zaC5oaWdocF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMS4wMjAwNywgMS4wMjAwNywgZmFsc2UsIDEuMDIwMDcsIDEu
MDIwMDcsIGZhbHNlLCAxLjAyMDA3LCAxLjAyMDA3LCBmYWxzZSwgMS4wMjAwNywgMS4wMjAwN119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jb3NoLmhpZ2hwX2ZyYWdtZW50LnZl
YzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzLCBmYWxzZSwgMS4xMjc2MywgMS4xMjc2Mywg
ZmFsc2UsIDEuMTI3NjMsIDEuMTI3NjMsIGZhbHNlLCAxLjEyNzYzLCAxLjEyNzYzXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5w
dXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF92ZXJ0ZXgu
c2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgu
bG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF92ZXJ0
ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF92ZXJ0ZXgudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
dGFuaC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1J
bmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAu
MiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5sb3dwX2ZyYWdtZW50LnNjYWxh
cicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmxvd3Bf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubG93cF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5sb3dwX2ZyYWdtZW50LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0
cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVl
LCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnRhbmgubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTkwNzQsIDAuMjA0
MTEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubWVkaXVtcF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC40NTA3MTEsIDAuNDc0MTQ2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRh
bmgubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTA3NCwgMC4yMDQxMTMsIGZhbHNlLCAwLjE5MDc0
LCAwLjIwNDExM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLm1lZGl1
bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNDUwNzExLCAwLjQ3NDE0NiwgZmFsc2UsIDAuNDUwNzExLCAwLjQ3
NDE0Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLm1lZGl1bXBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTA3NCwgMC4yMDQxMTMsIGZhbHNlLCAwLjE5MDc0LCAwLjIwNDEx
MywgZmFsc2UsIDAuMTkwNzQsIDAuMjA0MTEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnRhbmgubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ1MDcxMSwgMC40NzQxNDYs
IGZhbHNlLCAwLjQ1MDcxMSwgMC40NzQxNDYsIGZhbHNlLCAwLjQ1MDcxMSwgMC40NzQxNDZdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5tZWRpdW1wX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xOTA3NCwgMC4yMDQxMTMsIGZhbHNlLCAwLjE5MDc0LCAwLjIwNDExMywg
ZmFsc2UsIDAuMTkwNzQsIDAuMjA0MTEzLCBmYWxzZSwgMC4xOTA3NCwgMC4yMDQxMTNdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5tZWRpdW1wX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2LCBmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2LCBm
YWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2LCBmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubWVkaXVtcF9mcmFnbWVudC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5MDc0
LCAwLjIwNDExM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5MDc0LCAwLjIwNDExMywgZmFs
c2UsIDAuMTkwNzQsIDAuMjA0MTEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ1MDcxMSwgMC40NzQxNDYsIGZhbHNlLCAw
LjQ1MDcxMSwgMC40NzQxNDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFu
aC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTA3NCwgMC4yMDQxMTMsIGZhbHNlLCAw
LjE5MDc0LCAwLjIwNDExMywgZmFsc2UsIDAuMTkwNzQsIDAuMjA0MTEzXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NDUwNzExLCAwLjQ3NDE0NiwgZmFsc2UsIDAuNDUwNzExLCAwLjQ3NDE0NiwgZmFsc2UsIDAuNDUw
NzExLCAwLjQ3NDE0Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLm1l
ZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTkwNzQsIDAuMjA0MTEzLCBmYWxzZSwg
MC4xOTA3NCwgMC4yMDQxMTMsIGZhbHNlLCAwLjE5MDc0LCAwLjIwNDExMywgZmFsc2UsIDAuMTkw
NzQsIDAuMjA0MTEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgubWVk
aXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2LCBmYWxzZSwg
MC40NTA3MTEsIDAuNDc0MTQ2LCBmYWxzZSwgMC40NTA3MTEsIDAuNDc0MTQ2LCBmYWxzZSwgMC40
NTA3MTEsIDAuNDc0MTQ2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgu
aGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMThdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTczNzUsIDAu
MTk3Mzc2LCBmYWxzZSwgMC4xOTczNzUsIDAuMTk3Mzc2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRhbmguaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDYyMTE2LCAwLjQ2MjExOCwg
ZmFsc2UsIDAuNDYyMTE2LCAwLjQ2MjExOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi50YW5oLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3NiwgZmFs
c2UsIDAuMTk3Mzc1LCAwLjE5NzM3NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3Nl19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDYyMTE2LCAwLjQ2MjExOCwgZmFsc2UsIDAuNDYyMTE2LCAwLjQ2MjExOCwgZmFsc2UsIDAu
NDYyMTE2LCAwLjQ2MjExOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5o
LmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTczNzUsIDAuMTk3Mzc2LCBmYWxzZSwg
MC4xOTczNzUsIDAuMTk3Mzc2LCBmYWxzZSwgMC4xOTczNzUsIDAuMTk3Mzc2LCBmYWxzZSwgMC4x
OTczNzUsIDAuMTk3Mzc2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRhbmgu
aGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMTgsIGZhbHNlLCAw
LjQ2MjExNiwgMC40NjIxMTgsIGZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMTgsIGZhbHNlLCAwLjQ2
MjExNiwgMC40NjIxMThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5o
aWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjE5NzM3NSwgMC4xOTczNzZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMThdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NzM3
NSwgMC4xOTczNzYsIGZhbHNlLCAwLjE5NzM3NSwgMC4xOTczNzZdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjExNiwgMC40
NjIxMTgsIGZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzc1LCAwLjE5
NzM3NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3
Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC40NjIxMTYsIDAuNDYyMTE4LCBmYWxzZSwgMC40NjIxMTYsIDAuNDYyMTE4
LCBmYWxzZSwgMC40NjIxMTYsIDAuNDYyMTE4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnRhbmguaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk3Mzc1LCAwLjE5
NzM3NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3
NiwgZmFsc2UsIDAuMTk3Mzc1LCAwLjE5NzM3Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2MjExNiwgMC40
NjIxMTgsIGZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMTgsIGZhbHNlLCAwLjQ2MjExNiwgMC40NjIx
MTgsIGZhbHNlLCAwLjQ2MjExNiwgMC40NjIxMThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYXNpbmgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5sb3dwX3ZlcnRleC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHks
IEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmxvd3BfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFzaW5oLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYXNpbmgubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hc2luaC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5sb3dwX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5sb3dwX2ZyYWdtZW50LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAt
SW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5o
Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAt
SW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2
MTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubWVkaXVtcF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC40NjgwMzMsIDAuNDk0NTIxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFz
aW5oLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgzNTgyLCAwLjIxMzYxOSwgZmFsc2UsIDAuMTgz
NTgyLCAwLjIxMzYxOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5t
ZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2ODAzMywgMC40OTQ1MjEsIGZhbHNlLCAwLjQ2ODAzMywg
MC40OTQ1MjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubWVkaXVt
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4Miwg
MC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2MTldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uYXNpbmgubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ2ODAzMywg
MC40OTQ1MjEsIGZhbHNlLCAwLjQ2ODAzMywgMC40OTQ1MjEsIGZhbHNlLCAwLjQ2ODAzMywgMC40
OTQ1MjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubWVkaXVtcF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgzNTgyLCAwLjIxMzYxOSwgZmFsc2UsIDAuMTgzNTgy
LCAwLjIxMzYxOSwgZmFsc2UsIDAuMTgzNTgyLCAwLjIxMzYxOSwgZmFsc2UsIDAuMTgzNTgyLCAw
LjIxMzYxOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5tZWRpdW1w
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40Njgw
MzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40NjgwMzMs
IDAuNDk0NTIxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xODM1ODIsIDAuMjEzNjE5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmFzaW5oLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4x
ODM1ODIsIDAuMjEzNjE5LCBmYWxzZSwgMC4xODM1ODIsIDAuMjEzNjE5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40Njgw
MzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4
MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4
MiwgMC4yMTM2MTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubWVk
aXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDY4MDMzLCAwLjQ5NDUyMSwgZmFsc2UsIDAuNDY4
MDMzLCAwLjQ5NDUyMSwgZmFsc2UsIDAuNDY4MDMzLCAwLjQ5NDUyMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjE4MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAw
LjE4MzU4MiwgMC4yMTM2MTksIGZhbHNlLCAwLjE4MzU4MiwgMC4yMTM2MTldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5w
dXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxLCBmYWxz
ZSwgMC40NjgwMzMsIDAuNDk0NTIxLCBmYWxzZSwgMC40NjgwMzMsIDAuNDk0NTIxXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBp
bnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODY4OSwgMC4x
OTg2OTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmguaGlnaHBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDgxMjExLCAwLjQ4MTIxM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
c2luaC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTg2ODksIDAuMTk4NjkxLCBmYWxzZSwgMC4xOTg2
ODksIDAuMTk4NjkxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFzaW5oLmhp
Z2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjQ4MTIxMSwgMC40ODEyMTMsIGZhbHNlLCAwLjQ4MTIxMSwgMC40
ODEyMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmguaGlnaHBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTg2ODksIDAuMTk4NjkxLCBmYWxzZSwgMC4xOTg2ODksIDAuMTk4
NjkxLCBmYWxzZSwgMC4xOTg2ODksIDAuMTk4NjkxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFzaW5oLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIx
MywgZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIxMywgZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIxM119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5oaWdocF92ZXJ0ZXgudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwgZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5
MSwgZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwgZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5oaWdocF92ZXJ0ZXgudmVj
NCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIxMywgZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIx
MywgZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIxMywgZmFsc2UsIDAuNDgxMjExLCAwLjQ4MTIxM119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hc2luaC5oaWdocF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5
ODY4OSwgMC4xOTg2OTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmgu
aGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC40ODEyMTEsIDAuNDgxMjEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmFzaW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwg
ZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hc2luaC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ4MTIxMSwgMC40ODEyMTMsIGZhbHNl
LCAwLjQ4MTIxMSwgMC40ODEyMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YXNpbmguaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODY4OSwgMC4xOTg2OTEsIGZhbHNl
LCAwLjE5ODY4OSwgMC4xOTg2OTEsIGZhbHNlLCAwLjE5ODY4OSwgMC4xOTg2OTFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNpbmguaGlnaHBfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjQ4MTIxMSwgMC40ODEyMTMsIGZhbHNlLCAwLjQ4MTIxMSwgMC40ODEyMTMsIGZhbHNlLCAw
LjQ4MTIxMSwgMC40ODEyMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXNp
bmguaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwgZmFs
c2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwgZmFsc2UsIDAuMTk4Njg5LCAwLjE5ODY5MSwgZmFsc2Us
IDAuMTk4Njg5LCAwLjE5ODY5MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
c2luaC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40ODEyMTEsIDAuNDgxMjEzLCBm
YWxzZSwgMC40ODEyMTEsIDAuNDgxMjEzLCBmYWxzZSwgMC40ODEyMTEsIDAuNDgxMjEzLCBmYWxz
ZSwgMC40ODEyMTEsIDAuNDgxMjEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFjb3NoLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hY29zaC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hY29zaC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5sb3dwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hY29zaC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0
cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVl
LCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFjb3NoLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRy
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWNvc2gubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uYWNvc2gubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubG93cF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1J
bmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0
eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5sb3dwX2Zy
YWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFjb3NoLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hY29zaC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0
eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwg
SW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uYWNvc2gubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIs
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLm1lZGl1bXBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5tZWRp
dW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubWVkaXVtcF92
ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLm1lZGl1bXBfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmFjb3NoLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLm1lZGl1bXBfdmVydGV4LnZl
YzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2gubWVkaXVtcF92ZXJ0ZXgu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5tZWRpdW1wX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
Y29zaC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hY29zaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hY29zaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLm1lZGl1bXBfZnJh
Z21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYWNvc2gubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHks
IEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmFjb3NoLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhpZ2hwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2guaGln
aHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hY29zaC5oaWdocF92ZXJ0
ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhpZ2hwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hY29zaC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2guaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2guaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2guaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhpZ2hwX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hY29zaC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1J
bmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNv
c2guaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhp
Z2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHks
IEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFjb3NoLmhpZ2hw
X2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWNvc2guaGln
aHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5s
b3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uYXRhbmgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hdGFuaC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRy
dWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXRhbmgubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1J
bmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgu
bG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5s
b3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmxv
d3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmF0YW5oLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHks
IEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmF0YW5oLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmF0YW5oLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgubG93cF9mcmFnbWVudC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwg
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hdGFuaC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHks
IHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uYXRhbmgubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmlu
aXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5
LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmF0YW5oLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1
dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0NDkyMiwgMC41NTM3
MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgubWVkaXVtcF92ZXJ0
ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xOTYyODksIDAuMjA4OTg0LCBmYWxzZSwgMC4xOTYyODksIDAuMjA4OTg0XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLm1lZGl1bXBfdmVydGV4LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNTQ0OTIyLCAwLjU1MzcxMSwgZmFsc2UsIDAuNTQ0OTIyLCAwLjU1MzcxMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5tZWRpdW1wX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMTk2Mjg5LCAwLjIwODk4NCwgZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NCwgZmFsc2Us
IDAuMTk2Mjg5LCAwLjIwODk4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5h
dGFuaC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQ0OTIyLCAwLjU1MzcxMSwgZmFsc2Us
IDAuNTQ0OTIyLCAwLjU1MzcxMSwgZmFsc2UsIDAuNTQ0OTIyLCAwLjU1MzcxMV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5w
dXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4xOTYyODksIDAuMjA4OTg0LCBmYWxzZSwgMC4xOTYyODksIDAuMjA4OTg0LCBmYWxz
ZSwgMC4xOTYyODksIDAuMjA4OTg0LCBmYWxzZSwgMC4xOTYyODksIDAuMjA4OTg0XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTEsIGZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTEsIGZh
bHNlLCAwLjU0NDkyMiwgMC41NTM3MTEsIGZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgubWVkaXVtcF9mcmFnbWVudC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NjI4
OSwgMC4yMDg5ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgubWVk
aXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYXRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NjI4OSwgMC4yMDg5ODQs
IGZhbHNlLCAwLjE5NjI4OSwgMC4yMDg5ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uYXRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTEsIGZh
bHNlLCAwLjU0NDkyMiwgMC41NTM3MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYXRhbmgubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NCwg
ZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NCwgZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5tZWRpdW1wX2ZyYWdtZW50LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC41NDQ5MjIsIDAuNTUzNzExLCBmYWxzZSwgMC41NDQ5MjIsIDAuNTUzNzExLCBm
YWxzZSwgMC41NDQ5MjIsIDAuNTUzNzExXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmF0YW5oLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk2Mjg5LCAwLjIw
ODk4NCwgZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NCwgZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4
NCwgZmFsc2UsIDAuMTk2Mjg5LCAwLjIwODk4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5hdGFuaC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0NDkyMiwg
MC41NTM3MTEsIGZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTEsIGZhbHNlLCAwLjU0NDkyMiwgMC41
NTM3MTEsIGZhbHNlLCAwLjU0NDkyMiwgMC41NTM3MTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uYXRhbmguaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAyNzMyLCAwLjIwMjczM119KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5w
dXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41NDkzMDYsIDAuNTQ5
MzA2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hwX3ZlcnRl
eC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjIwMjczMiwgMC4yMDI3MzMsIGZhbHNlLCAwLjIwMjczMiwgMC4yMDI3MzNdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmguaGlnaHBfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNTQ5MzA2LCAwLjU0OTMwNiwgZmFsc2UsIDAuNTQ5MzA2LCAwLjU0OTMwNl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjIwMjczMiwgMC4yMDI3MzMsIGZhbHNlLCAwLjIwMjczMiwgMC4yMDI3MzMsIGZhbHNlLCAwLjIw
MjczMiwgMC4yMDI3MzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgu
aGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41NDkzMDYsIDAuNTQ5MzA2LCBmYWxzZSwgMC41NDkz
MDYsIDAuNTQ5MzA2LCBmYWxzZSwgMC41NDkzMDYsIDAuNTQ5MzA2XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4y
MDI3MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3
MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIsIDAuMjAyNzMzXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41
NDkzMDYsIDAuNTQ5MzA2LCBmYWxzZSwgMC41NDkzMDYsIDAuNTQ5MzA2LCBmYWxzZSwgMC41NDkz
MDYsIDAuNTQ5MzA2LCBmYWxzZSwgMC41NDkzMDYsIDAuNTQ5MzA2XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjAyNzMyLCAwLjIwMjczM119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5oaWdocF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0
OTMwNiwgMC41NDkzMDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYXRhbmgu
aGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDI3MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIs
IDAuMjAyNzMzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNTQ5MzA2LCAwLjU0OTMwNiwgZmFsc2UsIDAuNTQ5MzA2LCAwLjU0
OTMwNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5oaWdocF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMjAyNzMyLCAwLjIwMjczMywgZmFsc2UsIDAuMjAyNzMyLCAwLjIw
MjczMywgZmFsc2UsIDAuMjAyNzMyLCAwLjIwMjczM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hdGFuaC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTQ5MzA2LCAwLjU0
OTMwNiwgZmFsc2UsIDAuNTQ5MzA2LCAwLjU0OTMwNiwgZmFsc2UsIDAuNTQ5MzA2LCAwLjU0OTMw
Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hdGFuaC5oaWdocF9mcmFnbWVu
dC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4yMDI3MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIsIDAu
MjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIsIDAuMjAyNzMzLCBmYWxzZSwgMC4yMDI3MzIsIDAuMjAy
NzMzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmF0YW5oLmhpZ2hwX2ZyYWdt
ZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU0OTMwNiwgMC41NDkzMDYsIGZhbHNlLCAwLjU0OTMwNiwg
MC41NDkzMDYsIGZhbHNlLCAwLjU0OTMwNiwgMC41NDkzMDYsIGZhbHNlLCAwLjU0OTMwNiwgMC41
NDkzMDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxvd3BfdmVydGV4
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LCAwLjc4MjU2Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cubG93cF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAuNTE4MzRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxv
d3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAuNzgyNTY2LCBmYWxzZSwgMCwgMC43ODI1
NjZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxvd3BfdmVydGV4LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDAuNTE4MzQsIGZhbHNlLCAwLCAwLjUxODM0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMCwgMC43ODI1NjYsIGZhbHNlLCAwLCAwLjc4MjU2NiwgZmFsc2UsIDAsIDAu
NzgyNTY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5sb3dwX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMC41MTgzNCwgZmFsc2UsIDAsIDAuNTE4
MzQsIGZhbHNlLCAwLCAwLjUxODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnBvdy5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
IHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDAuNzgyNTY2LCBmYWxzZSwgMCwgMC43ODI1NjYsIGZhbHNlLCAwLCAwLjc4MjU2NiwgZmFsc2Us
IDAsIDAuNzgyNTY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5sb3dw
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAuNTE4MzQs
IGZhbHNlLCAwLCAwLjUxODM0LCBmYWxzZSwgMCwgMC41MTgzNCwgZmFsc2UsIDAsIDAuNTE4MzRd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxvd3BfZnJhZ21lbnQuc2Nh
bGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAu
NzgyNTY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5sb3dwX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLCAwLjUxODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5sb3dw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAuNzgyNTY2LCBmYWxzZSwgMCwgMC43ODI1
NjZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxvd3BfZnJhZ21lbnQu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMCwgMC41MTgzNCwgZmFsc2UsIDAsIDAuNTE4MzRdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDAuNzgyNTY2LCBmYWxzZSwgMCwgMC43ODI1NjYsIGZhbHNlLCAw
LCAwLjc4MjU2Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cubG93cF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMC41MTgzNCwgZmFsc2UsIDAs
IDAuNTE4MzQsIGZhbHNlLCAwLCAwLjUxODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnBvdy5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMCwgMC43ODI1NjYsIGZhbHNlLCAwLCAwLjc4MjU2NiwgZmFsc2UsIDAsIDAuNzgyNTY2
LCBmYWxzZSwgMCwgMC43ODI1NjZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
cG93Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LCAwLjUxODM0LCBmYWxzZSwgMCwgMC41MTgzNCwgZmFsc2UsIDAsIDAuNTE4MzQsIGZhbHNlLCAw
LCAwLjUxODM0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5tZWRpdW1w
X3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC43MjA3MDQsIDAuNzI4NjMzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnBvdy5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDM1MzUsIDAuNDUwNzgzXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnBvdy5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjcyMDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzNdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4M119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzMywgZmFsc2UsIDAuNzIwNzA0LCAw
LjcyODYzMywgZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5wb3cubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2Us
IDAuNDQzNTM1LCAwLjQ1MDc4M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5w
b3cubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjcyMDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcy
MDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzNdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDM1MzUsIDAuNDUwNzgzLCBmYWxzZSwgMC40NDM1MzUs
IDAuNDUwNzgzLCBmYWxzZSwgMC40NDM1MzUsIDAuNDUwNzgzLCBmYWxzZSwgMC40NDM1MzUsIDAu
NDUwNzgzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5tZWRpdW1wX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjcyMDcwNCwgMC43Mjg2MzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ucG93Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4M119KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjcyMDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzNdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40NDM1MzUsIDAuNDUwNzgzLCBmYWxzZSwgMC40NDM1MzUsIDAuNDUwNzgzXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5tZWRpdW1wX2ZyYWdtZW50LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcy
MDcwNCwgMC43Mjg2MzMsIGZhbHNlLCAwLjcyMDcwNCwgMC43Mjg2MzNdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4
MywgZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5wb3cubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzMywgZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzMywg
ZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzMywgZmFsc2UsIDAuNzIwNzA0LCAwLjcyODYzM119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cubWVkaXVtcF9mcmFnbWVudC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwg
MC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFs
c2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2UsIDAuNDQzNTM1LCAwLjQ1MDc4MywgZmFsc2Us
IDAuNDQzNTM1LCAwLjQ1MDc4M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5w
b3cuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjcyNDc3OSwgMC43MjQ3OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5wb3cuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTRdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93LmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjcyNDc3OSwgMC43MjQ3OCwgZmFsc2UsIDAuNzI0Nzc5LCAwLjcyNDc4XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNzI0Nzc5LCAwLjcyNDc4LCBmYWxzZSwgMC43MjQ3NzksIDAuNzI0
NzgsIGZhbHNlLCAwLjcyNDc3OSwgMC43MjQ3OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5wb3cuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ0
NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIx
MywgMC40NDcyMTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93LmhpZ2hw
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzI0Nzc5LCAw
LjcyNDc4LCBmYWxzZSwgMC43MjQ3NzksIDAuNzI0NzgsIGZhbHNlLCAwLjcyNDc3OSwgMC43MjQ3
OCwgZmFsc2UsIDAuNzI0Nzc5LCAwLjcyNDc4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnBvdy5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNl
LCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTRdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucG93LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcyNDc3OSwgMC43
MjQ3OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5wb3cuaGlnaHBfZnJhZ21l
bnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDQ3MjEzLCAwLjQ0NzIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5w
b3cuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4y
LCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43MjQ3NzksIDAuNzI0NzgsIGZh
bHNlLCAwLjcyNDc3OSwgMC43MjQ3OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5wb3cuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIo
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0
LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnBvdy5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43
MjQ3NzksIDAuNzI0NzgsIGZhbHNlLCAwLjcyNDc3OSwgMC43MjQ3OCwgZmFsc2UsIDAuNzI0Nzc5
LCAwLjcyNDc4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5oaWdocF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBm
YWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5oaWdocF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzI0Nzc5LCAwLjcyNDc4LCBmYWxzZSwg
MC43MjQ3NzksIDAuNzI0NzgsIGZhbHNlLCAwLjcyNDc3OSwgMC43MjQ3OCwgZmFsc2UsIDAuNzI0
Nzc5LCAwLjcyNDc4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnBvdy5oaWdo
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ3MjEz
LCAwLjQ0NzIxNCwgZmFsc2UsIDAuNDQ3MjEzLCAwLjQ0NzIxNCwgZmFsc2UsIDAuNDQ3MjEzLCAw
LjQ0NzIxNCwgZmFsc2UsIDAuNDQ3MjEzLCAwLjQ0NzIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5leHAubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4yMDAwNywgMS4yNDA4NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42MzMxLCAxLjY2NDM1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5sb3dwX3ZlcnRleC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjIw
MDA3LCAxLjI0MDg1LCBmYWxzZSwgMS4yMDAwNywgMS4yNDA4NV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42MzMxLCAxLjY2NDM1LCBm
YWxzZSwgMS42MzMxLCAxLjY2NDM1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmV4cC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjAwMDcsIDEuMjQwODUsIGZhbHNlLCAxLjIw
MDA3LCAxLjI0MDg1LCBmYWxzZSwgMS4yMDAwNywgMS4yNDA4NV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjYzMzEsIDEuNjY0
MzUsIGZhbHNlLCAxLjYzMzEsIDEuNjY0MzUsIGZhbHNlLCAxLjYzMzEsIDEuNjY0MzVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjIwMDA3LCAxLjI0MDg1LCBmYWxzZSwgMS4yMDAwNywgMS4yNDA4NSwgZmFsc2UsIDEu
MjAwMDcsIDEuMjQwODUsIGZhbHNlLCAxLjIwMDA3LCAxLjI0MDg1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmV4cC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
NSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42MzMx
LCAxLjY2NDM1LCBmYWxzZSwgMS42MzMxLCAxLjY2NDM1LCBmYWxzZSwgMS42MzMxLCAxLjY2NDM1
LCBmYWxzZSwgMS42MzMxLCAxLjY2NDM1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmV4cC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEuMjAwMDcsIDEuMjQwODVdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZXhwLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42MzMxLCAxLjY2NDM1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjAwMDcs
IDEuMjQwODUsIGZhbHNlLCAxLjIwMDA3LCAxLjI0MDg1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmV4cC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjMzMSwgMS42NjQzNSwgZmFs
c2UsIDEuNjMzMSwgMS42NjQzNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5l
eHAubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjAwMDcsIDEuMjQwODUsIGZhbHNlLCAxLjIw
MDA3LCAxLjI0MDg1LCBmYWxzZSwgMS4yMDAwNywgMS4yNDA4NV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjMzMSwgMS42
NjQzNSwgZmFsc2UsIDEuNjMzMSwgMS42NjQzNSwgZmFsc2UsIDEuNjMzMSwgMS42NjQzNV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4yMDAwNywgMS4yNDA4NSwgZmFsc2UsIDEuMjAwMDcsIDEuMjQwODUsIGZhbHNl
LCAxLjIwMDA3LCAxLjI0MDg1LCBmYWxzZSwgMS4yMDAwNywgMS4yNDA4NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MS42MzMxLCAxLjY2NDM1LCBmYWxzZSwgMS42MzMxLCAxLjY2NDM1LCBmYWxzZSwgMS42MzMxLCAx
LjY2NDM1LCBmYWxzZSwgMS42MzMxLCAxLjY2NDM1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmV4cC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjIxNjY2LCAxLjIyNjMzXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5tZWRpdW1wX3ZlcnRleC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjIxNjY2LCAxLjIyNjMzLCBmYWxzZSwgMS4yMTY2NiwgMS4yMjYzM119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42NDI4Niwg
MS42NTQ1OCwgZmFsc2UsIDEuNjQyODYsIDEuNjU0NThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZXhwLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4yMTY2NiwgMS4yMjYz
MywgZmFsc2UsIDEuMjE2NjYsIDEuMjI2MzMsIGZhbHNlLCAxLjIxNjY2LCAxLjIyNjMzXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5tZWRpdW1wX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDEuNjQyODYsIDEuNjU0NTgsIGZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4LCBmYWxzZSwgMS42
NDI4NiwgMS42NTQ1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubWVk
aXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjE2NjYsIDEuMjI2MzMsIGZhbHNlLCAxLjIx
NjY2LCAxLjIyNjMzLCBmYWxzZSwgMS4yMTY2NiwgMS4yMjYzMywgZmFsc2UsIDEuMjE2NjYsIDEu
MjI2MzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLm1lZGl1bXBfdmVy
dGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4LCBmYWxzZSwgMS42NDI4NiwgMS42
NTQ1OCwgZmFsc2UsIDEuNjQyODYsIDEuNjU0NTgsIGZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5tZWRpdW1wX2ZyYWdtZW50LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjE2
NjYsIDEuMjI2MzNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS42NDI4NiwgMS42NTQ1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5leHAubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjIxNjY2LCAxLjIyNjMzLCBmYWxzZSwg
MS4yMTY2NiwgMS4yMjYzM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAu
bWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4LCBmYWxzZSwgMS42NDI4Niwg
MS42NTQ1OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubWVkaXVtcF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEuMjE2NjYsIDEuMjI2MzMsIGZhbHNlLCAxLjIxNjY2LCAxLjIy
NjMzLCBmYWxzZSwgMS4yMTY2NiwgMS4yMjYzM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5leHAubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjQyODYsIDEuNjU0NTgs
IGZhbHNlLCAxLjY0Mjg2LCAxLjY1NDU4LCBmYWxzZSwgMS42NDI4NiwgMS42NTQ1OF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubWVkaXVtcF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4yMTY2NiwgMS4yMjYzMywgZmFsc2UsIDEuMjE2NjYsIDEuMjI2MzMsIGZhbHNl
LCAxLjIxNjY2LCAxLjIyNjMzLCBmYWxzZSwgMS4yMTY2NiwgMS4yMjYzM119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6
ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMS42NDI4NiwgMS42NTQ1OCwgZmFsc2UsIDEuNjQyODYsIDEuNjU0NTgsIGZhbHNlLCAxLjY0
Mjg2LCAxLjY1NDU4LCBmYWxzZSwgMS42NDI4NiwgMS42NTQ1OF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5leHAuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjIxNCwgMS4yMjE0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6
ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42NDg3MiwgMS42NDg3Ml19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAuaGlnaHBfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEuMjIxNCwgMS4yMjE0LCBmYWxzZSwgMS4yMjE0LCAxLjIyMTRdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0ODcyLCAxLjY0ODcy
LCBmYWxzZSwgMS42NDg3MiwgMS42NDg3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5leHAuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4yMjE0LCAxLjIyMTQsIGZhbHNlLCAx
LjIyMTQsIDEuMjIxNCwgZmFsc2UsIDEuMjIxNCwgMS4yMjE0XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmV4cC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0ODcyLCAxLjY0
ODcyLCBmYWxzZSwgMS42NDg3MiwgMS42NDg3MiwgZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4yMjE0LCAxLjIyMTQsIGZhbHNlLCAxLjIyMTQsIDEuMjIxNCwgZmFsc2UsIDEu
MjIxNCwgMS4yMjE0LCBmYWxzZSwgMS4yMjE0LCAxLjIyMTRdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS42NDg3Miwg
MS42NDg3MiwgZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzIsIGZhbHNlLCAxLjY0ODcyLCAxLjY0ODcy
LCBmYWxzZSwgMS42NDg3MiwgMS42NDg3Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5leHAuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMS4yMjE0LCAxLjIyMTRdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzJdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjIx
NCwgMS4yMjE0LCBmYWxzZSwgMS4yMjE0LCAxLjIyMTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZXhwLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzIsIGZh
bHNlLCAxLjY0ODcyLCAxLjY0ODcyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmV4cC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMjIxNCwgMS4yMjE0LCBmYWxzZSwgMS4y
MjE0LCAxLjIyMTQsIGZhbHNlLCAxLjIyMTQsIDEuMjIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5leHAuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjY0ODcyLCAxLjY0
ODcyLCBmYWxzZSwgMS42NDg3MiwgMS42NDg3MiwgZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwLmhpZ2hwX2ZyYWdtZW50LnZlYzQn
LCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAxLjIyMTQsIDEuMjIxNCwgZmFsc2UsIDEuMjIxNCwgMS4yMjE0LCBmYWxzZSwg
MS4yMjE0LCAxLjIyMTQsIGZhbHNlLCAxLjIyMTQsIDEuMjIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5leHAuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNjQ4
NzIsIDEuNjQ4NzIsIGZhbHNlLCAxLjY0ODcyLCAxLjY0ODcyLCBmYWxzZSwgMS42NDg3MiwgMS42
NDg3MiwgZmFsc2UsIDEuNjQ4NzIsIDEuNjQ4NzJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubG9nLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjY0ODc4LCAtMS41NzgzMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUs
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1MjJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmxvd3BfdmVydGV4LnZlYzInLCBp
bnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0x
LjY0ODc4LCAtMS41NzgzMSwgZmFsc2UsIC0xLjY0ODc4LCAtMS41NzgzMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzA4NzcyLCAt
MC42Nzc1MjIsIGZhbHNlLCAtMC43MDg3NzIsIC0wLjY3NzUyMl19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5sb2cubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS42NDg3OCwgLTEu
NTc4MzEsIGZhbHNlLCAtMS42NDg3OCwgLTEuNTc4MzEsIGZhbHNlLCAtMS42NDg3OCwgLTEuNTc4
MzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmxvd3BfdmVydGV4LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1MjIsIGZhbHNlLCAtMC43MDg3NzIsIC0wLjY3NzUy
MiwgZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3NTIyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmxvZy5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3
ODMxLCBmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3ODMxLCBmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3ODMx
LCBmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3ODMxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxvZy5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1
MjIsIGZhbHNlLCAtMC43MDg3NzIsIC0wLjY3NzUyMiwgZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3
NTIyLCBmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1MjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubG9nLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3ODMxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3
NTIyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5sb3dwX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0xLjY0ODc4LCAtMS41NzgzMSwgZmFsc2UsIC0xLjY0ODc4LCAtMS41NzgzMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cubG93cF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
MC43MDg3NzIsIC0wLjY3NzUyMiwgZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3NTIyXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LTEuNjQ4NzgsIC0xLjU3ODMxLCBmYWxzZSwgLTEuNjQ4NzgsIC0xLjU3ODMxLCBmYWxzZSwgLTEu
NjQ4NzgsIC0xLjU3ODMxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5s
b3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1MjIsIGZhbHNlLCAtMC43
MDg3NzIsIC0wLjY3NzUyMiwgZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3NTIyXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtMS42NDg3OCwgLTEuNTc4MzEsIGZhbHNlLCAtMS42NDg3OCwgLTEuNTc4MzEsIGZhbHNlLCAt
MS42NDg3OCwgLTEuNTc4MzEsIGZhbHNlLCAtMS42NDg3OCwgLTEuNTc4MzFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC0wLjcwODc3MiwgLTAuNjc3NTIyLCBmYWxzZSwgLTAuNzA4NzcyLCAtMC42Nzc1MjIsIGZhbHNl
LCAtMC43MDg3NzIsIC0wLjY3NzUyMiwgZmFsc2UsIC0wLjcwODc3MiwgLTAuNjc3NTIyXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX3ZlcnRleC5zY2FsYXIn
LCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS42MTM1OSwg
LTEuNjA0NTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLm1lZGl1bXBf
dmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC0wLjcwMDk2LCAtMC42ODUzMzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubG9nLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjYxMzU5LCAtMS42MDQ1NiwgZmFsc2UsIC0x
LjYxMzU5LCAtMS42MDQ1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cu
bWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzAwOTYsIC0wLjY4NTMzNSwgZmFsc2UsIC0wLjcwMDk2
LCAtMC42ODUzMzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLm1lZGl1
bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjEzNTksIC0xLjYwNDU2LCBmYWxzZSwgLTEuNjEzNTks
IC0xLjYwNDU2LCBmYWxzZSwgLTEuNjEzNTksIC0xLjYwNDU2XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjcwMDk2LCAt
MC42ODUzMzUsIGZhbHNlLCAtMC43MDA5NiwgLTAuNjg1MzM1LCBmYWxzZSwgLTAuNzAwOTYsIC0w
LjY4NTMzNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cubWVkaXVtcF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjYxMzU5LCAtMS42MDQ1NiwgZmFsc2UsIC0xLjYxMzU5
LCAtMS42MDQ1NiwgZmFsc2UsIC0xLjYxMzU5LCAtMS42MDQ1NiwgZmFsc2UsIC0xLjYxMzU5LCAt
MS42MDQ1Nl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cubWVkaXVtcF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjcwMDk2LCAtMC42ODUzMzUsIGZhbHNlLCAtMC43MDA5
NiwgLTAuNjg1MzM1LCBmYWxzZSwgLTAuNzAwOTYsIC0wLjY4NTMzNSwgZmFsc2UsIC0wLjcwMDk2
LCAtMC42ODUzMzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTEuNjEzNTksIC0xLjYwNDU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxvZy5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjcwMDk2LCAtMC42ODUzMzVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjEz
NTksIC0xLjYwNDU2LCBmYWxzZSwgLTEuNjEzNTksIC0xLjYwNDU2XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjcwMDk2LCAt
MC42ODUzMzUsIGZhbHNlLCAtMC43MDA5NiwgLTAuNjg1MzM1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjEzNTks
IC0xLjYwNDU2LCBmYWxzZSwgLTEuNjEzNTksIC0xLjYwNDU2LCBmYWxzZSwgLTEuNjEzNTksIC0x
LjYwNDU2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX2Zy
YWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuNzAwOTYsIC0wLjY4NTMzNSwgZmFsc2UsIC0wLjcwMDk2LCAt
MC42ODUzMzUsIGZhbHNlLCAtMC43MDA5NiwgLTAuNjg1MzM1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmxvZy5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS42
MTM1OSwgLTEuNjA0NTYsIGZhbHNlLCAtMS42MTM1OSwgLTEuNjA0NTYsIGZhbHNlLCAtMS42MTM1
OSwgLTEuNjA0NTYsIGZhbHNlLCAtMS42MTM1OSwgLTEuNjA0NTZdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubG9nLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0w
LjcwMDk2LCAtMC42ODUzMzUsIGZhbHNlLCAtMC43MDA5NiwgLTAuNjg1MzM1LCBmYWxzZSwgLTAu
NzAwOTYsIC0wLjY4NTMzNSwgZmFsc2UsIC0wLjcwMDk2LCAtMC42ODUzMzVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS42MDk0NCwgLTEuNjA5NDRd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmhpZ2hwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC42OTMx
NDgsIC0wLjY5MzE0N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cuaGln
aHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0xLjYwOTQ0LCAtMS42
MDk0NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cuaGlnaHBfdmVydGV4
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0wLjY5MzE0OCwgLTAuNjkzMTQ3LCBmYWxzZSwgLTAuNjkzMTQ4LCAtMC42OTMxNDdd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nLmhpZ2hwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFs
c2UsIC0xLjYwOTQ0LCAtMS42MDk0NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5sb2cuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuNjkzMTQ4LCAtMC42OTMxNDcsIGZhbHNl
LCAtMC42OTMxNDgsIC0wLjY5MzE0NywgZmFsc2UsIC0wLjY5MzE0OCwgLTAuNjkzMTQ3XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5oaWdocF92ZXJ0ZXgudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFs
c2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0NywgZmFsc2UsIC0wLjY5MzE0OCwgLTAuNjkzMTQ3LCBm
YWxzZSwgLTAuNjkzMTQ4LCAtMC42OTMxNDcsIGZhbHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0N119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cuaGlnaHBfZnJhZ21lbnQuc2Nh
bGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjA5
NDQsIC0xLjYwOTQ0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZy5oaWdo
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5sb2cuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuNjA5NDQsIC0xLjYwOTQ0LCBmYWxz
ZSwgLTEuNjA5NDQsIC0xLjYwOTQ0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmxvZy5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0NywgZmFsc2UsIC0w
LjY5MzE0OCwgLTAuNjkzMTQ3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxv
Zy5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0x
LjYwOTQ0LCAtMS42MDk0NCwgZmFsc2UsIC0xLjYwOTQ0LCAtMS42MDk0NF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC42
OTMxNDgsIC0wLjY5MzE0NywgZmFsc2UsIC0wLjY5MzE0OCwgLTAuNjkzMTQ3LCBmYWxzZSwgLTAu
NjkzMTQ4LCAtMC42OTMxNDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9n
LmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS42MDk0NCwgLTEuNjA5NDQsIGZhbHNl
LCAtMS42MDk0NCwgLTEuNjA5NDQsIGZhbHNlLCAtMS42MDk0NCwgLTEuNjA5NDQsIGZhbHNlLCAt
MS42MDk0NCwgLTEuNjA5NDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9n
LmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0NywgZmFs
c2UsIC0wLjY5MzE0OCwgLTAuNjkzMTQ3LCBmYWxzZSwgLTAuNjkzMTQ4LCAtMC42OTMxNDcsIGZh
bHNlLCAtMC42OTMxNDgsIC0wLjY5MzE0N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5leHAyLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEuMTI5MzUsIDEuMTY2ODFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZXhwMi5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMjkzNSwg
MS4xNjY4MSwgZmFsc2UsIDEuMTI5MzUsIDEuMTY2ODFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZXhwMi5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxz
ZSwgMS4zOTg1OSwgMS40Mjk4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5l
eHAyLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMjkzNSwgMS4xNjY4MSwgZmFsc2UsIDEuMTI5
MzUsIDEuMTY2ODEsIGZhbHNlLCAxLjEyOTM1LCAxLjE2NjgxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmV4cDIubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQy
OTg0LCBmYWxzZSwgMS4zOTg1OSwgMS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODRdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5sb3dwX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMS4xMjkzNSwgMS4xNjY4MSwgZmFsc2UsIDEuMTI5MzUsIDEuMTY2ODEsIGZhbHNl
LCAxLjEyOTM1LCAxLjE2NjgxLCBmYWxzZSwgMS4xMjkzNSwgMS4xNjY4MV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwgMS40Mjk4NCwgZmFsc2UsIDEuMzk4NTks
IDEuNDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmV4cDIubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjEyOTM1LCAxLjE2NjgxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1
dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubG93cF9mcmFnbWVudC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjEyOTM1LCAxLjE2NjgxLCBmYWxzZSwgMS4xMjkzNSwgMS4xNjY4MV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zOTg1
OSwgMS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODRdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZXhwMi5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xMjkzNSwgMS4x
NjY4MSwgZmFsc2UsIDEuMTI5MzUsIDEuMTY2ODEsIGZhbHNlLCAxLjEyOTM1LCAxLjE2NjgxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubG93cF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDEuMzk4NTksIDEuNDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwg
MS4zOTg1OSwgMS40Mjk4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAy
Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTI5MzUsIDEuMTY2ODEsIGZhbHNlLCAx
LjEyOTM1LCAxLjE2NjgxLCBmYWxzZSwgMS4xMjkzNSwgMS4xNjY4MSwgZmFsc2UsIDEuMTI5MzUs
IDEuMTY2ODFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5sb3dwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwg
MS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubWVkaXVtcF92ZXJ0ZXgu
c2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4x
NDM5NywgMS4xNTM1NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLm1l
ZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDEuNDA4MzUsIDEuNDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZXhwMi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjE0Mzk3LCAxLjE1MzU0LCBmYWxzZSwg
MS4xNDM5NywgMS4xNTM1NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAy
Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDA4MzUsIDEuNDIwMDcsIGZhbHNlLCAxLjQwODM1LCAx
LjQyMDA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubWVkaXVtcF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLjE0Mzk3LCAxLjE1MzU0LCBmYWxzZSwgMS4xNDM5NywgMS4xNTM1
NCwgZmFsc2UsIDEuMTQzOTcsIDEuMTUzNTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZXhwMi5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDA4MzUsIDEuNDIwMDcsIGZh
bHNlLCAxLjQwODM1LCAxLjQyMDA3LCBmYWxzZSwgMS40MDgzNSwgMS40MjAwN119KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjE0Mzk3LCAxLjE1MzU0LCBmYWxzZSwgMS4xNDM5NywgMS4xNTM1NCwgZmFsc2UsIDEu
MTQzOTcsIDEuMTUzNTQsIGZhbHNlLCAxLjE0Mzk3LCAxLjE1MzU0XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEu
NDA4MzUsIDEuNDIwMDcsIGZhbHNlLCAxLjQwODM1LCAxLjQyMDA3LCBmYWxzZSwgMS40MDgzNSwg
MS40MjAwNywgZmFsc2UsIDEuNDA4MzUsIDEuNDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZXhwMi5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTQzOTcsIDEuMTUzNTRdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcics
IGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDA4MzUsIDEu
NDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5tZWRpdW1wX2Zy
YWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDEuMTQzOTcsIDEuMTUzNTQsIGZhbHNlLCAxLjE0Mzk3LCAxLjE1MzU0XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIubWVkaXVtcF9mcmFnbWVudC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjQwODM1LCAxLjQyMDA3LCBmYWxzZSwgMS40MDgzNSwgMS40MjAwN119KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjE0Mzk3LCAxLjE1MzU0LCBmYWxzZSwgMS4xNDM5NywgMS4xNTM1NCwgZmFsc2UsIDEuMTQz
OTcsIDEuMTUzNTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5tZWRp
dW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MDgzNSwgMS40MjAwNywgZmFsc2UsIDEuNDA4MzUs
IDEuNDIwMDcsIGZhbHNlLCAxLjQwODM1LCAxLjQyMDA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmV4cDIubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xNDM5
NywgMS4xNTM1NCwgZmFsc2UsIDEuMTQzOTcsIDEuMTUzNTQsIGZhbHNlLCAxLjE0Mzk3LCAxLjE1
MzU0LCBmYWxzZSwgMS4xNDM5NywgMS4xNTM1NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5leHAyLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDA4MzUsIDEu
NDIwMDcsIGZhbHNlLCAxLjQwODM1LCAxLjQyMDA3LCBmYWxzZSwgMS40MDgzNSwgMS40MjAwNywg
ZmFsc2UsIDEuNDA4MzUsIDEuNDIwMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uZXhwMi5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMS4xNDg3LCAxLjE0ODddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZXhwMi5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjE0ODcsIDEu
MTQ4NywgZmFsc2UsIDEuMTQ4NywgMS4xNDg3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmV4cDIuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAx
LjQxNDIxLCAxLjQxNDIxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIu
aGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xNDg3LCAxLjE0ODcsIGZhbHNlLCAxLjE0ODcsIDEu
MTQ4NywgZmFsc2UsIDEuMTQ4NywgMS4xNDg3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmV4cDIuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTQyMSwgMS40MTQyMSwgZmFs
c2UsIDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmV4cDIuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjE0ODcsIDEuMTQ4NywgZmFsc2UsIDEuMTQ4NywgMS4xNDg3LCBmYWxzZSwgMS4xNDg3LCAx
LjE0ODcsIGZhbHNlLCAxLjE0ODcsIDEuMTQ4N119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5leHAyLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTQyMSwgMS40MTQy
MSwgZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxz
ZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5l
eHAyLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDEuMTQ4NywgMS4xNDg3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmV4cDIuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5leHAyLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMTQ4Nywg
MS4xNDg3LCBmYWxzZSwgMS4xNDg3LCAxLjE0ODddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZXhwMi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxz
ZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5l
eHAyLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4xNDg3LCAxLjE0ODcsIGZhbHNlLCAxLjE0
ODcsIDEuMTQ4NywgZmFsc2UsIDEuMTQ4NywgMS4xNDg3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmV4cDIuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxNDIxLCAxLjQx
NDIxLCBmYWxzZSwgMS40MTQyMSwgMS40MTQyMSwgZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjFdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZXhwMi5oaWdocF9mcmFnbWVudC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMS4xNDg3LCAxLjE0ODcsIGZhbHNlLCAxLjE0ODcsIDEuMTQ4NywgZmFsc2Us
IDEuMTQ4NywgMS4xNDg3LCBmYWxzZSwgMS4xNDg3LCAxLjE0ODddfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZXhwMi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40
MTQyMSwgMS40MTQyMSwgZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAx
LjQxNDIxLCBmYWxzZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5sb2cyLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgLTEuOTkyMTldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4wMTU2MywgLTAuOTg0Mzc1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubG93cF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCAtMS45OTIxOSwgZmFsc2UsIC1JbmZpbml0eSwgLTEuOTkyMTldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5sb3dwX3ZlcnRleC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4w
MTU2MywgLTAuOTg0Mzc1LCBmYWxzZSwgLTEuMDE1NjMsIC0wLjk4NDM3NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmlu
aXR5LCAtMS45OTIxOSwgZmFsc2UsIC1JbmZpbml0eSwgLTEuOTkyMTksIGZhbHNlLCAtSW5maW5p
dHksIC0xLjk5MjE5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubG93
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4wMTU2MywgLTAuOTg0Mzc1LCBmYWxzZSwgLTEuMDE1NjMs
IC0wLjk4NDM3NSwgZmFsc2UsIC0xLjAxNTYzLCAtMC45ODQzNzVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubG9nMi5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmlu
aXR5LCAtMS45OTIxOSwgZmFsc2UsIC1JbmZpbml0eSwgLTEuOTkyMTksIGZhbHNlLCAtSW5maW5p
dHksIC0xLjk5MjE5LCBmYWxzZSwgLUluZmluaXR5LCAtMS45OTIxOV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4w
MTU2MywgLTAuOTg0Mzc1LCBmYWxzZSwgLTEuMDE1NjMsIC0wLjk4NDM3NSwgZmFsc2UsIC0xLjAx
NTYzLCAtMC45ODQzNzUsIGZhbHNlLCAtMS4wMTU2MywgLTAuOTg0Mzc1XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIC0xLjk5MjE5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubG93cF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4w
MTU2MywgLTAuOTg0Mzc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIu
bG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIC0xLjk5MjE5LCBmYWxzZSwgLUluZmluaXR5
LCAtMS45OTIxOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmxvd3Bf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTEuMDE1NjMsIC0wLjk4NDM3NSwgZmFsc2UsIC0xLjAxNTYzLCAtMC45
ODQzNzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5sb3dwX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCAtMS45OTIxOSwgZmFsc2UsIC1JbmZpbml0eSwgLTEu
OTkyMTksIGZhbHNlLCAtSW5maW5pdHksIC0xLjk5MjE5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmxvZzIubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjAxNTYzLCAtMC45
ODQzNzUsIGZhbHNlLCAtMS4wMTU2MywgLTAuOTg0Mzc1LCBmYWxzZSwgLTEuMDE1NjMsIC0wLjk4
NDM3NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmxvd3BfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgLTEuOTkyMTksIGZhbHNlLCAtSW5maW5pdHks
IC0xLjk5MjE5LCBmYWxzZSwgLUluZmluaXR5LCAtMS45OTIxOSwgZmFsc2UsIC1JbmZpbml0eSwg
LTEuOTkyMTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5sb3dwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4wMTU2MywgLTAuOTg0Mzc1LCBmYWxzZSwgLTEuMDE1
NjMsIC0wLjk4NDM3NSwgZmFsc2UsIC0xLjAxNTYzLCAtMC45ODQzNzUsIGZhbHNlLCAtMS4wMTU2
MywgLTAuOTg0Mzc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubWVk
aXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTIuMzMwMDksIC0yLjMxMjcxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxvZzIubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuMDA3ODEsIC0wLjk5MjE4OF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0yLjMzMDA5
LCAtMi4zMTI3MSwgZmFsc2UsIC0yLjMzMDA5LCAtMi4zMTI3MV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5sb2cyLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLjAwNzgxLCAtMC45
OTIxODgsIGZhbHNlLCAtMS4wMDc4MSwgLTAuOTkyMTg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmxvZzIubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMi4zMzAwOSwgLTIu
MzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIuMzEy
NzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5tZWRpdW1wX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIC0xLjAwNzgxLCAtMC45OTIxODgsIGZhbHNlLCAtMS4wMDc4MSwgLTAuOTky
MTg4LCBmYWxzZSwgLTEuMDA3ODEsIC0wLjk5MjE4OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5sb2cyLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMi4zMzAwOSwg
LTIuMzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIu
MzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubG9nMi5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEuMDA3ODEs
IC0wLjk5MjE4OCwgZmFsc2UsIC0xLjAwNzgxLCAtMC45OTIxODgsIGZhbHNlLCAtMS4wMDc4MSwg
LTAuOTkyMTg4LCBmYWxzZSwgLTEuMDA3ODEsIC0wLjk5MjE4OF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5sb2cyLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTIuMzMwMDksIC0yLjMxMjcxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubWVkaXVtcF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4w
MDc4MSwgLTAuOTkyMTg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIu
bWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAtMi4zMzAw
OSwgLTIuMzEyNzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5tZWRp
dW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC0xLjAwNzgxLCAtMC45OTIxODgsIGZhbHNlLCAtMS4wMDc4MSwg
LTAuOTkyMTg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIubWVkaXVt
cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0yLjMzMDA5LCAtMi4zMTI3MSwgZmFsc2UsIC0yLjMzMDA5
LCAtMi4zMTI3MSwgZmFsc2UsIC0yLjMzMDA5LCAtMi4zMTI3MV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5sb2cyLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVj
MygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4wMDc4
MSwgLTAuOTkyMTg4LCBmYWxzZSwgLTEuMDA3ODEsIC0wLjk5MjE4OCwgZmFsc2UsIC0xLjAwNzgx
LCAtMC45OTIxODhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5tZWRp
dW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAt
Mi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAtMi4zMzAwOSwgLTIuMzEyNzEsIGZhbHNlLCAtMi4z
MzAwOSwgLTIuMzEyNzFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMS4wMDc4MSwgLTAuOTkyMTg4LCBmYWxz
ZSwgLTEuMDA3ODEsIC0wLjk5MjE4OCwgZmFsc2UsIC0xLjAwNzgxLCAtMC45OTIxODgsIGZhbHNl
LCAtMS4wMDc4MSwgLTAuOTkyMTg4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmxvZzIuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5sb2cyLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMSwgLTFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubG9nMi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTIuMzIxOTMsIC0yLjMyMTkz
LCBmYWxzZSwgLTIuMzIxOTMsIC0yLjMyMTkzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxvZzIuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLCAtMSwgZmFsc2UsIC0xLCAtMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmhpZ2hwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFsc2Us
IC0yLjMyMTkzLCAtMi4zMjE5M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5s
b2cyLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0xLCAtMSwgZmFsc2UsIC0xLCAtMSwgZmFsc2Us
IC0xLCAtMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmhpZ2hwX3Zl
cnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTIuMzIxOTMsIC0yLjMyMTkzLCBmYWxzZSwgLTIuMzIxOTMs
IC0yLjMyMTkzLCBmYWxzZSwgLTIuMzIxOTMsIC0yLjMyMTkzLCBmYWxzZSwgLTIuMzIxOTMsIC0y
LjMyMTkzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIuaGlnaHBfdmVy
dGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtMSwgLTEsIGZhbHNlLCAtMSwgLTEsIGZhbHNlLCAtMSwgLTEs
IGZhbHNlLCAtMSwgLTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5o
aWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtMi4zMjE5MywgLTIuMzIxOTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubG9nMi5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMSwgLTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubG9nMi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMi4zMjE5MywgLTIuMzIxOTMs
IGZhbHNlLCAtMi4zMjE5MywgLTIuMzIxOTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubG9nMi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMSwgLTEsIGZhbHNlLCAtMSwgLTFdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubG9nMi5oaWdocF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFs
c2UsIC0yLjMyMTkzLCAtMi4zMjE5M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5sb2cyLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTEsIC0xLCBmYWxzZSwgLTEsIC0xLCBm
YWxzZSwgLTEsIC0xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxvZzIuaGln
aHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFsc2UsIC0y
LjMyMTkzLCAtMi4zMjE5MywgZmFsc2UsIC0yLjMyMTkzLCAtMi4zMjE5MywgZmFsc2UsIC0yLjMy
MTkzLCAtMi4zMjE5M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sb2cyLmhp
Z2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMSwgLTEsIGZhbHNlLCAtMSwgLTEsIGZhbHNl
LCAtMSwgLTEsIGZhbHNlLCAtMSwgLTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc3FydC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnNxcnQubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc3FydC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lmxvd3BfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5p
dHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnNxcnQubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uc3FydC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zcXJ0Lmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lmxvd3BfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lmxvd3BfZnJh
Z21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5p
dHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5sb3dwX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQubG93cF9mcmFnbWVudC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5zcXJ0Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5sb3dwX2ZyYWdtZW50LnZlYzQn
LCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQubG93cF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lm1lZGl1bXBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDQ0MzgyLCAwLjQ1MDIyMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
cXJ0Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNzAyNzE4LCAwLjcxMTUwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zcXJ0Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ0MzgyLCAwLjQ1MDIy
MiwgZmFsc2UsIDAuNDQ0MzgyLCAwLjQ1MDIyMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zcXJ0Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzAyNzE4LCAwLjcxMTUwNywgZmFs
c2UsIDAuNzAyNzE4LCAwLjcxMTUwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zcXJ0Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDQzODIsIDAuNDUwMjIyLCBmYWxz
ZSwgMC40NDQzODIsIDAuNDUwMjIyLCBmYWxzZSwgMC40NDQzODIsIDAuNDUwMjIyXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlu
cHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAw
LjcwMjcxOCwgMC43MTE1MDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3Fy
dC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDQzODIsIDAuNDUwMjIyLCBmYWxz
ZSwgMC40NDQzODIsIDAuNDUwMjIyLCBmYWxzZSwgMC40NDQzODIsIDAuNDUwMjIyLCBmYWxzZSwg
MC40NDQzODIsIDAuNDUwMjIyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNx
cnQubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzAyNzE4LCAwLjcxMTUwNywgZmFs
c2UsIDAuNzAyNzE4LCAwLjcxMTUwNywgZmFsc2UsIDAuNzAyNzE4LCAwLjcxMTUwNywgZmFsc2Us
IDAuNzAyNzE4LCAwLjcxMTUwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
cXJ0Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC40NDQzODIsIDAuNDUwMjIyXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnNxcnQubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAu
NSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDddfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5tZWRpdW1wX2ZyYWdtZW50LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNDQ0MzgyLCAwLjQ1MDIyMiwgZmFsc2UsIDAuNDQ0MzgyLCAwLjQ1MDIyMl19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0Lm1lZGl1bXBfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC43MDI3MTgsIDAuNzExNTA3LCBmYWxzZSwgMC43MDI3MTgsIDAuNzExNTA3XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDQ0MzgyLCAwLjQ1MDIyMiwgZmFsc2UsIDAuNDQ0MzgyLCAwLjQ1MDIyMiwgZmFsc2UsIDAu
NDQ0MzgyLCAwLjQ1MDIyMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0
Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAw
LjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDddfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjQ0NDM4MiwgMC40NTAyMjIsIGZhbHNlLCAwLjQ0NDM4MiwgMC40NTAyMjIsIGZhbHNl
LCAwLjQ0NDM4MiwgMC40NTAyMjIsIGZhbHNlLCAwLjQ0NDM4MiwgMC40NTAyMjJdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDcsIGZh
bHNlLCAwLjcwMjcxOCwgMC43MTE1MDcsIGZhbHNlLCAwLjcwMjcxOCwgMC43MTE1MDddfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5oaWdocF92ZXJ0ZXguc2NhbGFyJywg
aW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDcyMTMsIDAu
NDQ3MjE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQuaGlnaHBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNzA3MTA3LCAwLjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5z
cXJ0LmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIx
MywgMC40NDcyMTRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5oaWdo
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC43MDcxMDcsIDAuNzA3MTA3LCBmYWxzZSwgMC43MDcxMDcsIDAuNzA3
MTA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQuaGlnaHBfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0
LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnNxcnQuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC43MDcxMDcsIDAuNzA3MTA3LCBm
YWxzZSwgMC43MDcxMDcsIDAuNzA3MTA3LCBmYWxzZSwgMC43MDcxMDcsIDAuNzA3MTA3XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQuaGlnaHBfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZh
bHNlLCAwLjQ0NzIxMywgMC40NDcyMTQsIGZhbHNlLCAwLjQ0NzIxMywgMC40NDcyMTRdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFs
c2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwN119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcics
IGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ3MjEzLCAw
LjQ0NzIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0LmhpZ2hwX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNzA3MTA3LCAwLjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zcXJ0LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDQ3MjEzLCAwLjQ0NzIxNCwgZmFsc2UsIDAu
NDQ3MjEzLCAwLjQ0NzIxNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0
LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3
LCAwLjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zcXJ0LmhpZ2hw
X2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMs
IDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnNxcnQuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwNzEwNywg
MC43MDcxMDcsIGZhbHNlLCAwLjcwNzEwNywgMC43MDcxMDcsIGZhbHNlLCAwLjcwNzEwNywgMC43
MDcxMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3FydC5oaWdocF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMs
IDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAuNDQ3MjE0LCBmYWxzZSwgMC40NDcyMTMsIDAu
NDQ3MjE0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNxcnQuaGlnaHBfZnJh
Z21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3
LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA3LCAw
LjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5s
b3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLjk5MjE5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5pbnZlcnNlc3FydC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuOTky
MTksIEluZmluaXR5LCBmYWxzZSwgMS45OTIxOSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS4zOTg1OSwg
MS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjk5MjE5LCBJ
bmZpbml0eSwgZmFsc2UsIDEuOTkyMTksIEluZmluaXR5LCBmYWxzZSwgMS45OTIxOSwgSW5maW5p
dHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQubG93cF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwgMS40Mjk4
NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uaW52ZXJzZXNxcnQubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuOTkyMTksIElu
ZmluaXR5LCBmYWxzZSwgMS45OTIxOSwgSW5maW5pdHksIGZhbHNlLCAxLjk5MjE5LCBJbmZpbml0
eSwgZmFsc2UsIDEuOTkyMTksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmludmVyc2VzcXJ0Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAx
LjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwgMS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODQs
IGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmludmVyc2VzcXJ0Lmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS45OTIxOSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQubG93cF9mcmFnbWVudC5zY2FsYXIn
LCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAx
LjQyOTg0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0Lmxv
d3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMS45OTIxOSwgSW5maW5pdHksIGZhbHNlLCAxLjk5MjE5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5sb3dw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDEuMzk4NTksIDEuNDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0Lmxvd3BfZnJh
Z21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLjk5MjE5LCBJbmZpbml0eSwgZmFsc2UsIDEuOTkyMTksIEluZmlu
aXR5LCBmYWxzZSwgMS45OTIxOSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uaW52ZXJzZXNxcnQubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuMzk4NTksIDEu
NDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwgMS40Mjk4NF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5sb3dwX2ZyYWdt
ZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAxLjk5MjE5LCBJbmZpbml0eSwgZmFsc2UsIDEuOTkyMTksIElu
ZmluaXR5LCBmYWxzZSwgMS45OTIxOSwgSW5maW5pdHksIGZhbHNlLCAxLjk5MjE5LCBJbmZpbml0
eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5sb3dwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0LCBmYWxzZSwgMS4zOTg1OSwg
MS40Mjk4NCwgZmFsc2UsIDEuMzk4NTksIDEuNDI5ODQsIGZhbHNlLCAxLjM5ODU5LCAxLjQyOTg0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0Lm1lZGl1bXBf
dmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDIuMjI3MTYsIDIuMjQ0MTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
aW52ZXJzZXNxcnQubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTAzMSwgMS40MTgxMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyLjIy
NzE2LCAyLjI0NDE1LCBmYWxzZSwgMi4yMjcxNiwgMi4yNDQxNV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxMDMx
LCAxLjQxODEyLCBmYWxzZSwgMS40MTAzMSwgMS40MTgxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDIuMjI3
MTYsIDIuMjQ0MTUsIGZhbHNlLCAyLjIyNzE2LCAyLjI0NDE1LCBmYWxzZSwgMi4yMjcxNiwgMi4y
NDQxNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRp
dW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDEwMzEsIDEuNDE4MTIsIGZhbHNlLCAxLjQxMDMxLCAx
LjQxODEyLCBmYWxzZSwgMS40MTAzMSwgMS40MTgxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMi4y
MjcxNiwgMi4yNDQxNSwgZmFsc2UsIDIuMjI3MTYsIDIuMjQ0MTUsIGZhbHNlLCAyLjIyNzE2LCAy
LjI0NDE1LCBmYWxzZSwgMi4yMjcxNiwgMi4yNDQxNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40
MTAzMSwgMS40MTgxMiwgZmFsc2UsIDEuNDEwMzEsIDEuNDE4MTIsIGZhbHNlLCAxLjQxMDMxLCAx
LjQxODEyLCBmYWxzZSwgMS40MTAzMSwgMS40MTgxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5pbnZlcnNlc3FydC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDIuMjI3MTYsIDIuMjQ0MTVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQubWVkaXVtcF9mcmFn
bWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjQxMDMxLCAxLjQxODEyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmlu
dmVyc2VzcXJ0Lm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMi4yMjcxNiwgMi4yNDQxNSwgZmFsc2Us
IDIuMjI3MTYsIDIuMjQ0MTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52
ZXJzZXNxcnQubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxMDMxLCAxLjQxODEyLCBmYWxzZSwg
MS40MTAzMSwgMS40MTgxMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZl
cnNlc3FydC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMi4yMjcxNiwgMi4yNDQxNSwgZmFs
c2UsIDIuMjI3MTYsIDIuMjQ0MTUsIGZhbHNlLCAyLjIyNzE2LCAyLjI0NDE1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0Lm1lZGl1bXBfZnJhZ21lbnQudmVj
MycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLjQxMDMxLCAxLjQxODEyLCBmYWxzZSwgMS40MTAzMSwgMS40MTgxMiwgZmFsc2Us
IDEuNDEwMzEsIDEuNDE4MTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52
ZXJzZXNxcnQubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMi4yMjcxNiwgMi4yNDQx
NSwgZmFsc2UsIDIuMjI3MTYsIDIuMjQ0MTUsIGZhbHNlLCAyLjIyNzE2LCAyLjI0NDE1LCBmYWxz
ZSwgMi4yMjcxNiwgMi4yNDQxNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5p
bnZlcnNlc3FydC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxMDMxLCAxLjQx
ODEyLCBmYWxzZSwgMS40MTAzMSwgMS40MTgxMiwgZmFsc2UsIDEuNDEwMzEsIDEuNDE4MTIsIGZh
bHNlLCAxLjQxMDMxLCAxLjQxODEyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmludmVyc2VzcXJ0LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyLjIzNjA3LCAyLjIzNjA3XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1
dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxNDIxLCAxLjQxNDIx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0LmhpZ2hwX3Zl
cnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAyLjIzNjA3LCAyLjIzNjA3LCBmYWxzZSwgMi4yMzYwNywgMi4yMzYwN119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5oaWdocF92ZXJ0ZXgu
dmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMS40MTQyMSwgMS40MTQyMSwgZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQuaGlnaHBfdmVydGV4LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMi4yMzYwNywgMi4yMzYwNywgZmFsc2UsIDIuMjM2MDcsIDIuMjM2MDcsIGZhbHNlLCAy
LjIzNjA3LCAyLjIzNjA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVy
c2VzcXJ0LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAx
LjQxNDIxLCAxLjQxNDIxLCBmYWxzZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDIuMjM2MDcsIDIuMjM2MDcsIGZhbHNlLCAyLjIzNjA3LCAyLjIzNjA3LCBmYWxzZSwgMi4y
MzYwNywgMi4yMzYwNywgZmFsc2UsIDIuMjM2MDcsIDIuMjM2MDddfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxzZSwgMS40MTQyMSwgMS40MTQyMSwgZmFsc2UsIDEuNDE0
MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmludmVyc2VzcXJ0LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDIuMjM2MDcsIDIuMjM2MDdd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZXNxcnQuaGlnaHBfZnJh
Z21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMS40MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5p
bnZlcnNlc3FydC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAyLjIzNjA3LCAyLjIzNjA3LCBmYWxzZSwg
Mi4yMzYwNywgMi4yMzYwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZl
cnNlc3FydC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxzZSwgMS40
MTQyMSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNl
c3FydC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDIuMjM2MDcsIDIuMjM2MDcsIGZhbHNlLCAy
LjIzNjA3LCAyLjIzNjA3LCBmYWxzZSwgMi4yMzYwNywgMi4yMzYwN119KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3FydC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxzZSwgMS40MTQy
MSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3Fy
dC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMi4yMzYwNywgMi4yMzYwNywgZmFsc2Us
IDIuMjM2MDcsIDIuMjM2MDcsIGZhbHNlLCAyLjIzNjA3LCAyLjIzNjA3LCBmYWxzZSwgMi4yMzYw
NywgMi4yMzYwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlc3Fy
dC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMS40MTQyMSwgMS40MTQyMSwgZmFsc2Us
IDEuNDE0MjEsIDEuNDE0MjEsIGZhbHNlLCAxLjQxNDIxLCAxLjQxNDIxLCBmYWxzZSwgMS40MTQy
MSwgMS40MTQyMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubG93cF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFicy5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5hYnMubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUz
MTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5sb3dw
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmFicy5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAw
LjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubG93cF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmxvd3BfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZh
bHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAw
LjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubG93cF9mcmFn
bWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWJzLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYWJzLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5s
b3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5
NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMx
MywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmxvd3Bf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41
LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmxvd3BfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAw
LjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubG93cF9mcmFnbWVu
dC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwg
MC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
YWJzLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5hYnMubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uYWJzLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIw
MDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5hYnMubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAu
NSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUs
IDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubWVkaXVtcF92ZXJ0
ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAx
OTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uYWJzLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmFicy5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1
LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmFicy5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6
ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5tZWRpdW1wX2ZyYWdtZW50
LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5tZWRpdW1wX2Zy
YWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5
NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMubWVkaXVtcF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmFicy5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAu
MjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAw
MTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5tZWRpdW1wX2ZyYWdtZW50
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4y
MDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAx
OTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLm1lZGl1bXBfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFicy5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uYWJzLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hYnMuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmhpZ2hwX3ZlcnRleC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmFicy5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4y
LCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJz
LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNl
LCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMuaGlnaHBf
dmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwg
MC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5hYnMuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIs
IDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmFicy5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmFicy5oaWdocF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0
OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uYWJzLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAu
Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5hYnMuaGlnaHBfZnJhZ21lbnQu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAu
NSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNp
Z24ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWdu
Lmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5s
b3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zaWduLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24ubG93cF92ZXJ0ZXgudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uc2lnbi5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWdu
Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEs
IDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24u
bG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5s
b3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5s
b3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5s
b3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnNpZ24ubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwg
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLmxvd3BfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwg
ZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnNpZ24ubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEs
IGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5zaWduLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAx
LCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uc2lnbi5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnNpZ24ubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zaWduLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24ubWVkaXVtcF92ZXJ0ZXgudmVjMics
IGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2ln
bi5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwg
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLm1lZGl1bXBfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24ubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6
ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFy
JywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLm1lZGl1bXBfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c2lnbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24ubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5zaWduLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwg
MSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2ln
bi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFs
c2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnNpZ24ubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEs
IGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5zaWduLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnNpZ24uaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc2lnbi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFs
c2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5oaWdocF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc2lnbi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc2lnbi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwg
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc2lnbi5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnNpZ24uaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5zaWduLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24uaGlnaHBfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c2lnbi5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwg
MSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zaWduLmhpZ2hwX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNpZ24uaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc2lnbi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5w
dXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9vci5sb3dwX3ZlcnRleC5zY2FsYXInLCBp
bnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLmxvd3BfdmVydGV4LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZmxvb3IubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3Iu
bG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93cF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93cF92ZXJ0ZXgudmVjNCcs
IGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93cF9mcmFnbWVudC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLmxvd3BfZnJhZ21lbnQuc2Nh
bGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9vci5sb3dwX2ZyYWdtZW50LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmZsb29yLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5mbG9vci5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUs
IDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLmxv
d3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3Iu
bG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9v
ci5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZs
b29yLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
Zmxvb3IubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVk
aXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF92ZXJ0ZXgudmVj
MycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBp
bnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFy
JywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9vci5tZWRpdW1wX2ZyYWdtZW50LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmZsb29yLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IubWVkaXVtcF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5mbG9vci5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmZsb29yLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZmxvb3IubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5mbG9vci5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5mbG9vci5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5mbG9vci5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGlnaHBfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZs
b29yLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9vci5oaWdocF92ZXJ0ZXgu
dmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mbG9vci5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZsb29yLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3Iu
aGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uZmxvb3IuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGlnaHBf
ZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmxvb3IuaGln
aHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMu
bG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5s
b3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmxv
d3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRydW5jLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmxvd3BfdmVydGV4LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRydW5jLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRy
dW5jLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRy
dW5jLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRy
dW5jLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50
cnVuYy5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
dHJ1bmMubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmxvd3Bf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMubG93cF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cnVuYy5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRydW5jLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24udHJ1bmMubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1
bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRydW5jLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRy
dW5jLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1bXBfdmVy
dGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1bXBf
dmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5t
ZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1
bmMubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1l
ZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMubWVkaXVtcF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcs
IGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMuaGlnaHBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMuaGlnaHBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMuaGlnaHBfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRy
dW5jLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24udHJ1bmMuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmhpZ2hwX3Zl
cnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5oaWdocF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJ1bmMuaGlnaHBf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cnVuYy5oaWdo
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmhp
Z2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRydW5jLmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmhpZ2hwX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRydW5jLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnRydW5jLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRydW5jLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnJvdW5kLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ucm91bmQubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX3ZlcnRleC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5y
b3VuZC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX3ZlcnRleC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwg
MSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDog
JzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubG93cF9m
cmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yb3VuZC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5k
Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDFd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubG93cF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5sb3dwX2ZyYWdtZW50
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAw
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kLm1lZGl1bXBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubWVkaXVtcF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1w
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1wX3ZlcnRleC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDEs
IGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5yb3VuZC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5yb3VuZC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41
LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMSwgZmFsc2Us
IDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ucm91bmQubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAu
NSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubWVkaXVt
cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5yb3VuZC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJvdW5kLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFs
c2UsIDAsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQubWVkaXVt
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2Us
IDAsIDEsIGZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJv
dW5kLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJv
dW5kLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJv
dW5kLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMSwgZmFsc2Us
IDAsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmQuaGlnaHBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5yb3VuZC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucm91bmQuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwg
MCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnJvdW5kLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucm91bmQuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdocF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5yb3VuZC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdo
cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdocF9mcmFnbWVudC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZC5oaWdocF9mcmFnbWVudC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwg
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubG93cF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubG93cF92
ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubG93
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucm91bmRldmVuLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5sb3dwX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0
OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucm91bmRldmVuLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnJvdW5kZXZlbi5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
NSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91
bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucm91bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
cm91bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ucm91bmRldmVuLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAu
NSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucm91bmRldmVuLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4y
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0
OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLm1lZGl1bXBfdmVydGV4LnZlYzInLCBp
bnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5k
ZXZlbi5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucm91bmRldmVuLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJvdW5kZXZlbi5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5yb3VuZGV2ZW4ubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ucm91bmRldmVuLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6
ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4ubWVkaXVtcF9mcmFnbWVudC5zY2FsYXIn
LCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAw
LjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQn
LCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5oaWdocF92ZXJ0ZXgu
c2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4uaGlnaHBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hw
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yb3VuZGV2ZW4uaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41
LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5oaWdocF92ZXJ0
ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yb3VuZGV2ZW4uaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnJvdW5kZXZlbi5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hwX2ZyYWdtZW50LnNjYWxh
cicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hwX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnJvdW5kZXZlbi5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4uaGlnaHBfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucm91bmRldmVuLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnJvdW5kZXZlbi5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5yb3VuZGV2ZW4uaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubG93cF92ZXJ0ZXgu
dmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uY2VpbC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwg
MSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3BfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEs
IDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2Us
IDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5sb3dwX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmNlaWwubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBm
YWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmxvd3Bf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubG93cF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLm1lZGl1bXBfdmVydGV4LnNjYWxh
cicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5tZWRpdW1wX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubWVkaXVtcF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
Y2VpbC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmNlaWwubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwg
ZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5tZWRp
dW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAx
LCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLm1l
ZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEs
IDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwu
bWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNl
aWwubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmNlaWwubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwubWVkaXVtcF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwuaGlnaHBfdmVydGV4LnNjYWxhcics
IGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5oaWdocF92ZXJ0ZXguc2NhbGFyJywg
aW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAx
LCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhp
Z2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWls
LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX2ZyYWdtZW50LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5oaWdocF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNlaWwuaGlnaHBfZnJhZ21lbnQu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uY2VpbC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWlsLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmNlaWwuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2VpbC5o
aWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jZWls
LmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2Us
IDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZy
YWN0Lmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5mcmFjdC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5mcmFjdC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUs
IGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZnJhY3QubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5sb3dwX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFs
c2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5mcmFjdC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUs
IGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFj
dC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwg
MC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0
Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5mcmFjdC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlu
cHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjMics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0
OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAw
LjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5m
cmFjdC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwg
MC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0
OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJhY3QubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwg
MC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lm1lZGl1bXBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5m
cmFjdC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5mcmFjdC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZnJhY3QubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5tZWRpdW1wX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFs
c2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5mcmFjdC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAw
LjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5m
cmFjdC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxz
ZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmZyYWN0Lm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5
NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5tZWRpdW1wX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lm1lZGl1
bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAu
MjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lm1lZGl1bXBf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4x
OTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5
NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0Lm1l
ZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxz
ZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJhY3QubWVk
aXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwg
MC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4x
OTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0
Lm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAw
LjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmZyYWN0LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcw
LjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJhY3QuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4y
LCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJh
Y3QuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJhY3QuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwg
MC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwg
MC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZyYWN0LmhpZ2hwX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBm
YWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZnJhY3Qu
aGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZnJhY3QuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZnJhY3QuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAu
Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5oaWdocF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmZyYWN0LmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZh
bHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmZyYWN0LmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC41LCAw
LjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNl
LCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmZyYWN0LmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFs
c2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mcmFjdC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5w
dXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLmxvd3BfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1vZC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5tb2QubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubW9kLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4y
LCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm1vZC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5sb3dw
X3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubW9kLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5p
dHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0
eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QubG93cF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2Qu
bG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5tb2QubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5tb2QubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5m
aW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2
ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5p
dHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm1vZC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
SW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9k
Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5m
aW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QubWVkaXVt
cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubW9kLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC0wLjAwMDI0NDE0MSwgMC4yMDAxOTUsIGZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMjAwMTk1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5tZWRpdW1wX3ZlcnRleC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4y
MDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMjAwMTk1LCBm
YWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NSwgZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4yMDAx
OTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfdmVydGV4
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAw
LjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NSwgZmFsc2UsIC0w
LjAwMDI0NDE0MSwgMC4yMDAxOTUsIGZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMjAwMTk1LCBmYWxz
ZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5tb2QubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDI0NDE0
MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1
bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tb2QubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAyNDQx
NDEsIDAuMjAwMTk1LCBmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLm1lZGl1bXBfZnJhZ21lbnQudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4yMDAxOTUsIGZhbHNlLCAtMC4w
MDAyNDQxNDEsIDAuMjAwMTk1LCBmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QubWVkaXVtcF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEs
IDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm1vZC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDAwMjQ0MTQxLCAwLjIwMDE5NSwgZmFsc2UsIC0wLjAwMDI0
NDE0MSwgMC4yMDAxOTUsIGZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMjAwMTk1LCBmYWxzZSwgLTAu
MDAwMjQ0MTQxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
b2QubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLjJdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLCAwLjIsIGZhbHNlLCAwLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubW9kLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVj
MigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2Us
IDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5oaWdocF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMiwg
ZmFsc2UsIDAsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QuaGln
aHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAw
LjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubW9kLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDAuMiwgZmFsc2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QuaGlnaHBfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwg
ZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubW9kLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIs
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubW9kLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAw
LjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MCwgMC4yLCBmYWxzZSwgMCwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1vZC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5oaWdocF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMC4yLCBmYWxzZSwgMCwgMC4yLCBm
YWxzZSwgMCwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZC5oaWdo
cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAw
LjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1vZC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMiwgZmFsc2UsIDAsIDAuMl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tb2QuaGlnaHBfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwg
MC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5tb2RmLmxvd3BfdmVydGV4JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tb2RmLmxvd3BfdmVydGV4JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1vZGYubG93cF92ZXJ0ZXgnLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1vZGYubG93cF92ZXJ0ZXgnLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
b2RmLmxvd3BfZnJhZ21lbnQnLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubG93
cF9mcmFnbWVudCcsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
b2RmLmxvd3BfZnJhZ21lbnQnLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubG93
cF9mcmFnbWVudCcsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubWVkaXVt
cF92ZXJ0ZXgnLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubWVkaXVtcF92ZXJ0
ZXgnLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1
MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5tZWRp
dW1wX3ZlcnRleCcsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5tZWRpdW1wX3Zl
cnRleCcsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwg
MC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubWVkaXVtcF9mcmFn
bWVudCcsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5tZWRpdW1wX2ZyYWdtZW50
JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEs
IDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYubWVkaXVt
cF9mcmFnbWVudCcsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5tZWRpdW1wX2Zy
YWdtZW50JywgaW5wdXQ6ICcwLjUsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41
LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5oaWdocF92ZXJ0
ZXgnLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYuaGlnaHBfdmVydGV4JywgaW5w
dXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubW9kZi5oaWdocF92ZXJ0ZXgnLCBpbnB1dDog
JzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1vZGYuaGlnaHBfdmVydGV4JywgaW5wdXQ6ICcwLjUsICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubW9kZi5oaWdocF9mcmFnbWVudCcsIGlucHV0OiAnMC4yLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubW9kZi5oaWdocF9mcmFnbWVudCcsIGlucHV0OiAnMC4yLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm1vZGYuaGlnaHBfZnJhZ21lbnQnLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1vZGYuaGlnaHBfZnJhZ21lbnQnLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5taW4ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5taW4ubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4ubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4y
MDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubWluLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5
NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLmxv
d3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMs
IDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAu
MjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1pbi5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwg
ZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4ubG93cF9mcmFnbWVudC5zY2FsYXIn
LCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMs
IDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5sb3dwX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubWluLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIo
MC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1
LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm1pbi5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2
ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5taW4ubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5s
b3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMx
MjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLmxvd3BfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZh
bHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNl
LCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bWluLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5
NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLm1lZGl1bXBfdmVydGV4LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5
OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLm1l
ZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
aW4ubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41
LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1pbi5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5
NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEs
IDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5tZWRpdW1w
X3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5tZWRpdW1wX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4u
bWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5
OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1
MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubWluLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4ubWVkaXVtcF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4x
OTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFs
c2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5taW4ubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVj
MigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAx
OTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWluLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4u
bWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAu
MjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAw
MTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAw
MTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1
LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm1pbi5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5oaWdocF92ZXJ0ZXguc2NhbGFyJywg
aW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5oaWdocF92ZXJ0ZXguc2NhbGFy
JywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4y
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5oaWdocF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubWluLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2
ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIs
IGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1pbi5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubWluLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwg
MC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1pbi5oaWdocF9mcmFnbWVu
dC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWluLmhpZ2hwX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGln
aHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVj
MygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfZnJhZ21lbnQudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAw
LjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfZnJh
Z21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFs
c2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taW4uaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxz
ZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tYXgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIs
IDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubWF4Lmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
IHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMx
MywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywg
MC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lmxvd3BfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41
LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4
Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUz
MTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMs
IDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm1heC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwg
ZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5s
b3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWF4Lmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1heC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEz
LCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5tYXgubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1heC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZl
YzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywg
MC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4y
MDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lmxvd3BfZnJhZ21l
bnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUs
IGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXgu
bG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1
MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEz
LCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5tYXgubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAu
NSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1h
eC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1heC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubWF4Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXgubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tYXgubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5
OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXgubWVk
aXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5tYXgubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFs
c2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWF4Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXgubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBp
bnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lm1lZGl1bXBfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAw
MTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5tZWRpdW1wX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAw
LjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5tYXgubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
MiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwg
MC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4x
OTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41
LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4LmhpZ2hwX3ZlcnRleC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAw
LjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4LmhpZ2hwX3ZlcnRleC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41
LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4LmhpZ2hwX3ZlcnRl
eC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tYXguaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIs
IDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubWF4LmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
MiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxz
ZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5tYXguaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF4LmhpZ2hwX2Zy
YWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXguaGln
aHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1h
eC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIs
IDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwg
MC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4y
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF9mcmFnbWVudC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFs
c2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdo
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4y
LCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1heC5oaWdocF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUs
IGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmNsYW1wLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIs
IDAuMiwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmxvd3BfdmVydGV4LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAwLjIsIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAu
MjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmxvd3BfdmVy
dGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5jbGFtcC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMx
MywgMC4yMDMxMjUsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwg
KCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1
MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5p
dHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHks
IHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uY2xhbXAubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMC4xOTUz
MTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmxv
d3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5j
ZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uY2xhbXAubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAw
LjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywg
cmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5sb3dwX2Zy
YWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVj
MigwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwg
ZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5jbGFtcC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJl
bmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5jbGFtcC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5jbGFtcC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5j
bGFtcC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEz
LCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAuMTk1MzEzLCAw
LjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5tZWRpdW1w
X3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5jbGFtcC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjUs
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF92
ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMy
KDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmNsYW1wLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJl
bmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5jbGFtcC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4y
MDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0
cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVl
LCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmNsYW1wLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5
OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUx
LCAwLjIwMDE5NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5tZWRp
dW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuMiwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmNsYW1wLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
MiwgMC41LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF9mcmFnbWVudC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAu
bWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIs
IDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwg
MC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZp
bml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF9mcmFnbWVudC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZp
bml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0
eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY2xhbXAubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgw
LjUsIDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4y
MDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAx
OTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uY2xhbXAuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAu
MiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAw
LjIsIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAw
LjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5oaWdocF92
ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAw
LjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmNsYW1wLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41
LCAwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNl
LCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5w
dXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMl19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5oaWdocF9mcmFnbWVudC5zY2Fs
YXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwg
MC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmhpZ2hwX2ZyYWdt
ZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAw
LjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfZnJhZ21l
bnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAu
NSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAu
Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jbGFtcC5oaWdocF9mcmFnbWVu
dC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwg
ZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uY2xhbXAuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIs
IDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmhpZ2hwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFs
c2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNsYW1wLmhp
Z2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAu
MiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1p
eC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTc5Njg4LCAwLjIxMDkzOF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5taXgubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC41
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4NzUsIDAuMjAzMTI1XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5Mzhd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lmxvd3BfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTg3NSwgMC4yMDMxMjUsIGZhbHNlLCAwLjE4NzUs
IDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5sb3dwX3Zl
cnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAw
LjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE3OTY4
OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwg
MC4yMTA5MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lmxvd3BfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTg3NSwg
MC4yMDMxMjUsIGZhbHNlLCAwLjE4NzUsIDAuMjAzMTI1LCBmYWxzZSwgMC4xODc1LCAwLjIwMzEy
NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXgubG93cF92ZXJ0ZXgudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xNzk2ODgsIDAuMjEwOTM4LCBmYWxzZSwgMC4xNzk2ODgsIDAuMjEwOTM4LCBmYWxzZSwgMC4x
Nzk2ODgsIDAuMjEwOTM4LCBmYWxzZSwgMC4xNzk2ODgsIDAuMjEwOTM4XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4NzUsIDAuMjAzMTI1
LCBmYWxzZSwgMC4xODc1LCAwLjIwMzEyNSwgZmFsc2UsIDAuMTg3NSwgMC4yMDMxMjUsIGZhbHNl
LCAwLjE4NzUsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1p
eC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuMiwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xNzk2ODgsIDAuMjEwOTM4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1peC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIs
IDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xODc1LCAwLjIwMzEyNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXgubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4y
MTA5MzhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lmxvd3BfZnJhZ21l
bnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAu
NSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xODc1LCAwLjIwMzEyNSwgZmFsc2Us
IDAuMTg3NSwgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4
Lmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4xNzk2ODgsIDAuMjEwOTM4LCBmYWxzZSwgMC4xNzk2ODgsIDAuMjEwOTM4LCBmYWxzZSwg
MC4xNzk2ODgsIDAuMjEwOTM4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1p
eC5sb3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMTg3NSwgMC4yMDMxMjUsIGZhbHNlLCAwLjE4NzUsIDAuMjAzMTI1LCBmYWxzZSwgMC4x
ODc1LCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXgubG93
cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5
MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5MzgsIGZhbHNlLCAwLjE3OTY4OCwgMC4yMTA5Mzhd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lmxvd3BfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xODc1LCAwLjIwMzEyNSwgZmFsc2UsIDAuMTg3NSwgMC4yMDMxMjUsIGZhbHNlLCAwLjE4NzUs
IDAuMjAzMTI1LCBmYWxzZSwgMC4xODc1LCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5taXgubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
MiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTcwNywgMC4yMDA2ODRdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lm1lZGl1bXBfdmVydGV4LnNjYWxhcics
IGlucHV0OiAnMC4yLCAwLjIsIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEs
IDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5tZWRpdW1w
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZl
YzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTcwNywgMC4yMDA2ODQs
IGZhbHNlLCAwLjE5OTcwNywgMC4yMDA2ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubWl4Lm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2
ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXgubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk3MDcsIDAuMjAwNjg0LCBmYWxzZSwg
MC4xOTk3MDcsIDAuMjAwNjg0LCBmYWxzZSwgMC4xOTk3MDcsIDAuMjAwNjg0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41
LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWl4Lm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1
dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5NzA3
LCAwLjIwMDY4NCwgZmFsc2UsIDAuMTk5NzA3LCAwLjIwMDY4NCwgZmFsc2UsIDAuMTk5NzA3LCAw
LjIwMDY4NCwgZmFsc2UsIDAuMTk5NzA3LCAwLjIwMDY4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5taXgubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxz
ZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1peC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuMiwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk3MDcsIDAuMjAwNjg0XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm1peC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAn
MC4yLCAwLjIsIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5tZWRpdW1wX2ZyYWdtZW50
LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIs
IDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5NzA3LCAwLjIwMDY4NCwgZmFsc2Us
IDAuMTk5NzA3LCAwLjIwMDY4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
aXgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1
MSwgMC4yMDAxOTUsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubWl4Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVj
MygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4y
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk3MDcsIDAuMjAwNjg0LCBmYWxzZSwgMC4x
OTk3MDcsIDAuMjAwNjg0LCBmYWxzZSwgMC4xOTk3MDcsIDAuMjAwNjg0XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1peC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUs
IDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXgubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5w
dXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTcw
NywgMC4yMDA2ODQsIGZhbHNlLCAwLjE5OTcwNywgMC4yMDA2ODQsIGZhbHNlLCAwLjE5OTcwNywg
MC4yMDA2ODQsIGZhbHNlLCAwLjE5OTcwNywgMC4yMDA2ODRdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubWl4Lm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1
LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBm
YWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1peC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5taXguaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuNSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubWl4LmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm1peC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4y
LCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5taXguaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZl
YzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXguaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAw
LjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAw
LjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
aXguaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIs
IDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1peC5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubWl4LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuMiwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWl4LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAu
NSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ubWl4LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4y
LCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubWl4LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWl4LmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAu
Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5taXguaGlnaHBfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMygwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZh
bHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm1peC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAuMiwgMC4y
LCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5taXguaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLjIs
IDAuMiwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc3RlcC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwg
MC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAw
LjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnN0ZXAubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMSwg
ZmFsc2UsIDAsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5sb3dw
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3Zl
YzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMz
KDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAw
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubG93cF92ZXJ0ZXgu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwg
ZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnN0ZXAubG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5zdGVwLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uc3RlcC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2
ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDEsIGZhbHNlLCAw
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubG93cF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAw
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubG93cF9mcmFnbWVu
dC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUs
IDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAx
LCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uc3RlcC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zdGVwLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnN0ZXAubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMSwgZmFs
c2UsIDAsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5tZWRpdW1w
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBmYWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEs
IGZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAubWVk
aXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBm
YWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnN0ZXAubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAu
MiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6
ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnN0ZXAubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwg
MSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLm1lZGl1bXBfZnJh
Z21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxLCBmYWxz
ZSwgMCwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLm1lZGl1bXBf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBm
YWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLm1lZGl1
bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAxLCBm
YWxzZSwgMCwgMSwgZmFsc2UsIDAsIDEsIGZhbHNlLCAwLCAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnN0ZXAubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2Us
IDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF92ZXJ0
ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigw
LjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwg
MSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5o
aWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAx
LCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmhp
Z2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwg
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEs
IGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAuaGln
aHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFs
c2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zdGVwLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwg
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVwLmhpZ2hwX2ZyYWdtZW50
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAuaGlnaHBfZnJhZ21l
bnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc3RlcC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zdGVw
LmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwg
MSwgMSwgZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc3Rl
cC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMSwgZmFsc2Us
IDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0
ZXAuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAx
LCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnN0ZXAuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAxLCAxLCBmYWxzZSwgMSwgMSwgZmFsc2UsIDEsIDEsIGZh
bHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0ZXAu
bG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5j
ZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc21vb3Roc3RlcC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4y
LCAwLjUsICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfdmVydGV4LnZlYzIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiks
ICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhz
dGVwLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwg
MC4yKSwgdmVjMigwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUs
IDAuNSksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAu
NSwgMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
MiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5sb3dwX2ZyYWdtZW50LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuNSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290
aHN0ZXAubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0
eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDog
J3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpJywgcmVm
ZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmxvd3Bf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5m
aW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5p
dHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0
ZXAubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c21vb3Roc3RlcC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhz
dGVwLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCkn
LCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHks
IEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIEluZmluaXR5LCB0cnVlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0ZXAubWVk
aXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5j
ZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uc21vb3Roc3RlcC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwg
MC4yLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDNdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5tZWRp
dW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiks
IHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAzLCBmYWxzZSwgMCwg
M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLm1lZGl1bXBf
dmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIs
IDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVw
Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAsIDMsIGZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zbW9vdGhzdGVwLm1lZGl1bXBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41
LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDMsIGZhbHNlLCAwLCAzLCBm
YWxzZSwgMCwgMywgZmFsc2UsIDAsIDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc21vb3Roc3RlcC5tZWRpdW1wX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIs
IDAuMiwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0ZXAubWVkaXVtcF9mcmFnbWVudC5z
Y2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5tZWRpdW1w
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0
eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zbW9vdGhzdGVwLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigw
LjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMCwgMywgZmFsc2UsIDAsIDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uc21vb3Roc3RlcC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4y
LCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgp
JywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0
OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMywgZmFsc2UsIDAsIDMsIGZhbHNl
LCAwLCAzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0ZXAubWVk
aXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKScsIHJl
ZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5p
dHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5tZWRpdW1w
X2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAsIDMsIGZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgMywgZmFsc2UsIDAsIDNd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5oaWdocF92ZXJ0
ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW3RydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
c21vb3Roc3RlcC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC41LCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnNtb290aHN0ZXAuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmhpZ2hwX3ZlcnRleC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgM119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5w
dXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwg
MC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRy
dWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5oaWdocF92ZXJ0ZXgudmVj
MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMywgZmFsc2UsIDAs
IDMsIGZhbHNlLCAwLCAzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290
aHN0ZXAuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
JywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmhp
Z2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgMywgZmFsc2UsIDAsIDMsIGZhbHNlLCAwLCAz
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnNtb290aHN0ZXAuaGlnaHBfZnJh
Z21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uc21vb3Roc3RlcC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAw
LjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uc21vb3Roc3RlcC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5j
ZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHksIHRydWUsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uc21vb3Roc3RlcC5oaWdocF9mcmFn
bWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIo
MC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgM119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmhpZ2hwX2ZyYWdtZW50
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiks
IHZlYzMoMC4yLCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5zbW9vdGhzdGVwLmhpZ2hw
X2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAw
LjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAs
IDMsIGZhbHNlLCAwLCAzLCBmYWxzZSwgMCwgM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5zbW9vdGhzdGVwLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwg
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eSwgdHJ1
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5zbW9vdGhzdGVwLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUs
IDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDMsIGZhbHNlLCAwLCAzLCBmYWxzZSwg
MCwgMywgZmFsc2UsIDAsIDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVu
Z3RoLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3Ro
Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGgubG93
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5n
dGgubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfZnJhZ21lbnQuc2NhbGFy
JywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGgubG93
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxlbmd0aC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfZnJhZ21lbnQudmVj
MicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5sZW5ndGgubG93cF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmxvd3BfZnJhZ21lbnQudmVj
MycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmxlbmd0aC5sb3dwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5sb3dwX2Zy
YWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5ODcxMiwgMC4yMDE0
ODldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLm1lZGl1bXBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNDk3ODA1LCAwLjUwMzQyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxl
bmd0aC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjI4MDkyMSwgMC4yODUwNDVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLm1lZGl1bXBfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzAy
NzE4LCAwLjcxMTUwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGgu
bWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM0NDA3MiwgMC4zNDkwOTVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC44NjA2NjQsIDAuODcxNDA2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxl
bmd0aC5tZWRpdW1wX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zOTcxMjEsIDAuNDAzMjg1XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5tZWRpdW1wX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC45OTU2MDksIDEuMDA2ODRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubGVuZ3RoLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIs
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTg3MTIsIDAuMjAxNDg5XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5tZWRpdW1wX2ZyYWdtZW50LnNj
YWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDk3
ODA1LCAwLjUwMzQyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5t
ZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjgwOTIxLCAwLjI4NTA0NV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGgubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwMjcx
OCwgMC43MTE1MDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLm1l
ZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM0NDA3MiwgMC4zNDkwOTVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjg2MDY2NCwgMC44NzE0MDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bGVuZ3RoLm1lZGl1bXBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzk3MTIxLCAwLjQwMzI4
NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGgubWVkaXVtcF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC45OTU2MDksIDEuMDA2ODRdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAu
MiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGguaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0
OiAnMC41LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdocF92ZXJ0ZXgudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4y
ODI4NDMsIDAuMjgyODQzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0
aC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC43MDcxMDcsIDAuNzA3MTA3XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM0NjQx
LCAwLjM0NjQxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdo
cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjg2NjAyNSwgMC44NjYwMjZdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40
LCAwLjRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmhpZ2hwX3Zl
cnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5sZW5ndGguaGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubGVuZ3RoLmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjI4Mjg0Mywg
MC4yODI4NDNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubGVuZ3RoLmhpZ2hw
X2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNzA3MTA3LCAwLjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5sZW5ndGguaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM0NjQxLCAw
LjM0NjQxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdocF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuODY2MDI1LCAwLjg2NjAyNl19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5sZW5ndGguaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmxlbmd0aC5oaWdocF9m
cmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kaXN0YW5jZS5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAo
KSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmxvd3BfdmVydGV4LnNjYWxhcicsIGlu
cHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmxvd3Bf
dmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmRpc3RhbmNlLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFu
Y2UubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UubG93cF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UubG93cF92
ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmxvd3Bf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBb
dHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5kaXN0YW5jZS5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmxvd3BfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmRpc3RhbmNlLmxvd3BfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5s
b3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4y
LCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5p
dHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UubG93cF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAw
LjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5sb3dwX2ZyYWdtZW50LnZl
YzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmxvd3BfZnJhZ21lbnQu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAw
LjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLm1lZGl1bXBfdmVy
dGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZGlzdGFuY2UubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjk3ODE5LCAwLjMwMjI3N119KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3Ry
dWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uZGlzdGFuY2UubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40MjEyNzYsIDAu
NDI3Mzk0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLm1lZGl1
bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAw
LjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHld
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UubWVkaXVtcF92ZXJ0
ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE1NjcyLCAwLjUyNDA3NV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRpdW1wX3ZlcnRleC52ZWM0
JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRpdW1wX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTk1NjM3LCAwLjYwNDk2Ml19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRpdW1wX2ZyYWdt
ZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZGlzdGFuY2UubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yOTc4MTksIDAuMzAyMjc3XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmRpc3RhbmNlLm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40MjEy
NzYsIDAuNDI3Mzk0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNl
Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRp
dW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUxNTY3MiwgMC41MjQw
NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UubWVkaXVtcF9m
cmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5tZWRp
dW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41OTU2
MzcsIDAuNjA0OTYyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNl
LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmRpc3RhbmNlLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zLCAwLjNdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwg
LUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5k
aXN0YW5jZS5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIo
MC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40MjQyNjQsIDAuNDI0MjY0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmhpZ2hwX3ZlcnRl
eC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmhpZ2hwX3ZlcnRleC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC41MTk2MTUsIDAuNTE5NjE1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjYsIDAuNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5kaXN0YW5jZS5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwg
MC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFt0cnVlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRpc3RhbmNlLmhpZ2hwX2ZyYWdtZW50LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjMs
IDAuM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5jZS5oaWdocF9m
cmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW3RydWUsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGlzdGFuY2UuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC40MjQyNjQsIDAuNDI0MjY0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmRpc3RhbmNlLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW3RydWUs
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZGlzdGFuY2UuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4y
KSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTE5
NjE1LCAwLjUxOTYxNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0YW5j
ZS5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
IHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbdHJ1ZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kaXN0
YW5jZS5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNiwgMC42XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX3Zl
cnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
ZG90Lmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5kb3QubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNjI1LCAwLjA5
Mzc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX3ZlcnRleC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjE4NzUsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmRvdC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4wOTM3NSwgMC4xNDA2MjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90
Lmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41
LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjI4MTI1LCAwLjMwNDY4
OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QubG93cF92ZXJ0ZXgudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEyNSwgMC4xODc1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6
ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMzc1LCAwLjQwNjI1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4y
LCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QubG93cF9mcmFnbWVudC5zY2FsYXIn
LCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lmxvd3BfZnJh
Z21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNjI1LCAwLjA5Mzc1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MTg3NSwgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lmxv
d3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTQwNjI1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5sb3dwX2ZyYWdtZW50LnZl
YzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjI4MTI1LCAwLjMwNDY4OF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTI1LCAwLjE4NzVdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZG90Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjM3NSwgMC40MDYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5kb3QubWVkaXVtcF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0
OiAnMC4yLCAwLjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAw
MDk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5tZWRpdW1wX3ZlcnRl
eC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA3OTk1NjEsIDAuMDgwMjAwMl19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRv
dC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xMTk4NzMsIDAu
MTIwMzYxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5tZWRpdW1wX3Zl
cnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAw
LjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yOTk4MDUsIDAuMzAwMjkzXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5tZWRpdW1wX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTU5NjY4LCAwLjE2MDY0NV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlu
cHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjM5OTQxNCwgMC40MDAzOTFdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lm1lZGl1bXBf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24uZG90Lm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNzk5NTYxLCAw
LjA4MDIwMDJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90Lm1lZGl1bXBf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5tZWRpdW1wX2ZyYWdtZW50LnZlYzMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjExOTg3MywgMC4xMjAzNjFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZG90Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMjk5ODA1LCAwLjMwMDI5M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5kb3QubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMTU5NjY4LCAwLjE2MDY0NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5kb3QubWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAw
LjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMzk5NDE0LCAwLjQwMDM5MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5kb3QuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmRvdC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmRvdC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOCwgMC4w
OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3QuaGlnaHBfdmVydGV4LnZl
YzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmRvdC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTIsIDAu
MTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90LmhpZ2hwX3ZlcnRleC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4zLCAwLjNdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZG90LmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMTYsIDAuMTZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24uZG90LmhpZ2hwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5oaWdocF9m
cmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3Qu
aGlnaHBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmRvdC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigw
LjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA4LCAwLjA4XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRvdC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kb3Qu
aGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTIsIDAuMTJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZG90LmhpZ2hwX2ZyYWdtZW50LnZlYzMn
LCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjMsIDAuM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5kb3QuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjE2LCAwLjE2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmRvdC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuNCwgMC40XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNyb3NzLmxvd3Bf
dmVydGV4JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDE1NjI1LCAwLjAxNTYyNSwgZmFsc2Us
IC0wLjAxNTYyNSwgMC4wMTU2MjUsIGZhbHNlLCAtMC4wMTU2MjUsIDAuMDE1NjI1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNyb3NzLmxvd3BfdmVydGV4JywgaW5wdXQ6ICd2
ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4MTI1LCBmYWxzZSwgLTAuMDA3ODEyNSwgMC4w
MDc4MTI1LCBmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMDc4MTI1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmNyb3NzLmxvd3BfZnJhZ21lbnQnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtMC4wMTU2MjUsIDAuMDE1NjI1LCBmYWxzZSwgLTAuMDE1NjI1LCAwLjAxNTYyNSwgZmFsc2Us
IC0wLjAxNTYyNSwgMC4wMTU2MjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
Y3Jvc3MubG93cF9mcmFnbWVudCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwNzgxMjUsIDAu
MDA3ODEyNSwgZmFsc2UsIC0wLjAwNzgxMjUsIDAuMDA3ODEyNSwgZmFsc2UsIC0wLjAwNzgxMjUs
IDAuMDA3ODEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jcm9zcy5tZWRp
dW1wX3ZlcnRleCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDEyMjA3LCAwLjAwMDEyMjA3
LCBmYWxzZSwgLTAuMDAwMTIyMDcsIDAuMDAwMTIyMDcsIGZhbHNlLCAtMC4wMDAxMjIwNywgMC4w
MDAxMjIwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jcm9zcy5tZWRpdW1w
X3ZlcnRleCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjAwMDEyMjA3LCAwLjAwMDEyMjA3LCBm
YWxzZSwgLTAuMDAwMTIyMDcsIDAuMDAwMTIyMDcsIGZhbHNlLCAtMC4wMDAxMjIwNywgMC4wMDAx
MjIwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jcm9zcy5tZWRpdW1wX2Zy
YWdtZW50JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDAwMTIyMDcsIDAuMDAwMTIyMDcsIGZh
bHNlLCAtMC4wMDAxMjIwNywgMC4wMDAxMjIwNywgZmFsc2UsIC0wLjAwMDEyMjA3LCAwLjAwMDEy
MjA3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNyb3NzLm1lZGl1bXBfZnJh
Z21lbnQnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wMDAxMjIwNywgMC4wMDAxMjIwNywgZmFs
c2UsIC0wLjAwMDEyMjA3LCAwLjAwMDEyMjA3LCBmYWxzZSwgLTAuMDAwMTIyMDcsIDAuMDAwMTIy
MDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uY3Jvc3MuaGlnaHBfdmVydGV4
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTMuNzI1MjllLTAwOSwgMy43MjUyOWUtMDA5LCBmYWxz
ZSwgLTMuNzI1MjllLTAwOSwgMy43MjUyOWUtMDA5LCBmYWxzZSwgLTMuNzI1MjllLTAwOSwgMy43
MjUyOWUtMDA5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmNyb3NzLmhpZ2hw
X3ZlcnRleCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jcm9zcy5oaWdocF9mcmFn
bWVudCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0zLjcyNTI5ZS0wMDksIDMuNzI1MjllLTAwOSwg
ZmFsc2UsIC0zLjcyNTI5ZS0wMDksIDMuNzI1MjllLTAwOSwgZmFsc2UsIC0zLjcyNTI5ZS0wMDks
IDMuNzI1MjllLTAwOV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5jcm9zcy5o
aWdocF9mcmFnbWVudCcsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUu
bG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5ub3JtYWxpemUubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjUsICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUubG93cF92ZXJ0ZXgudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfdmVydGV4LnZlYzInLCBpbnB1
dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3Jt
YWxpemUubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41KSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwg
LUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwg
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5sb3dwX3ZlcnRleC52
ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUubG93cF9m
cmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm5vcm1hbGl6ZS5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUlu
ZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfZnJhZ21lbnQudmVjMycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2Us
IC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bm9ybWFsaXplLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3BfZnJhZ21lbnQu
dmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5m
aW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmxvd3Bf
ZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5m
aW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZp
bml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFs
aXplLm1lZGl1bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuOTg5OTI2LCAxLjAxMjM1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAu
NSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjk5MDc2NSwgMS4wMDkyOV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUubWVkaXVtcF92ZXJ0ZXgu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC42OTkwMzEsIDAuNzE1MDgsIGZhbHNlLCAwLjY5OTAzMSwgMC43MTUwOF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUubWVkaXVtcF92ZXJ0ZXgudmVj
MicsIGlucHV0OiAndmVjMigwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC43MDAyOTMsIDAuNzEzOTY1LCBmYWxzZSwgMC43MDAyOTMsIDAuNzEzOTY1XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5tZWRpdW1wX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNTcwMzI5LCAwLjU4NDI4MiwgZmFsc2UsIDAuNTcwMzI5LCAwLjU4NDI4MiwgZmFs
c2UsIDAuNTcwMzI5LCAwLjU4NDI4Ml19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5ub3JtYWxpemUubWVkaXVtcF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjUsIDAuNSwg
MC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU3MTM0NCwgMC41ODMzODgs
IGZhbHNlLCAwLjU3MTM0NCwgMC41ODMzODgsIGZhbHNlLCAwLjU3MTM0NCwgMC41ODMzODhdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBfdmVydGV4
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjQ5NDU4NiwgMC41MDY1NTksIGZhbHNlLCAwLjQ5NDU4NiwgMC41
MDY1NTksIGZhbHNlLCAwLjQ5NDU4NiwgMC41MDY1NTksIGZhbHNlLCAwLjQ5NDU4NiwgMC41MDY1
NTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBf
dmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjQ5NTM4MywgMC41MDQ2NDYsIGZhbHNlLCAwLjQ5NTM4
MywgMC41MDQ2NDYsIGZhbHNlLCAwLjQ5NTM4MywgMC41MDQ2NDYsIGZhbHNlLCAwLjQ5NTM4Mywg
MC41MDQ2NDZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1l
ZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC45ODk5MjYsIDEuMDEyMzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjUs
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC45OTA3NjUsIDEuMDA5MjldfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBfZnJhZ21lbnQu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC42OTkwMzEsIDAuNzE1MDgsIGZhbHNlLCAwLjY5OTAzMSwgMC43MTUwOF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUubWVkaXVtcF9mcmFnbWVudC52
ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjcwMDI5MywgMC43MTM5NjUsIGZhbHNlLCAwLjcwMDI5MywgMC43MTM5NjVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjU3MDMyOSwgMC41ODQyODIsIGZhbHNlLCAwLjU3MDMyOSwgMC41ODQyODIs
IGZhbHNlLCAwLjU3MDMyOSwgMC41ODQyODJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubm9ybWFsaXplLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU3MTM0NCwgMC41
ODMzODgsIGZhbHNlLCAwLjU3MTM0NCwgMC41ODMzODgsIGZhbHNlLCAwLjU3MTM0NCwgMC41ODMz
ODhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLm1lZGl1bXBf
ZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNDk0NTg2LCAwLjUwNjU1OSwgZmFsc2UsIDAuNDk0
NTg2LCAwLjUwNjU1OSwgZmFsc2UsIDAuNDk0NTg2LCAwLjUwNjU1OSwgZmFsc2UsIDAuNDk0NTg2
LCAwLjUwNjU1OV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUu
bWVkaXVtcF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC40OTUzODMsIDAuNTA0NjQ2LCBmYWxz
ZSwgMC40OTUzODMsIDAuNTA0NjQ2LCBmYWxzZSwgMC40OTUzODMsIDAuNTA0NjQ2LCBmYWxzZSwg
MC40OTUzODMsIDAuNTA0NjQ2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5v
cm1hbGl6ZS5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMSwgMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5ub3JtYWxpemUuaGlnaHBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC41LCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDEsIDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubm9ybWFsaXplLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwNzEwNiwgMC43MDcxMDcsIGZh
bHNlLCAwLjcwNzEwNiwgMC43MDcxMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubm9ybWFsaXplLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuNSwgMC41KSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwNzEwNiwgMC43MDcxMDcsIGZhbHNl
LCAwLjcwNzEwNiwgMC43MDcxMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bm9ybWFsaXplLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNTc3MzUsIDAuNTc3MzUxLCBmYWxz
ZSwgMC41NzczNSwgMC41NzczNTEsIGZhbHNlLCAwLjU3NzM1LCAwLjU3NzM1MV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUuaGlnaHBfdmVydGV4LnZlYzMnLCBp
bnB1dDogJ3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC41NzczNSwgMC41NzczNTEsIGZhbHNlLCAwLjU3NzM1LCAwLjU3NzM1MSwgZmFsc2UsIDAu
NTc3MzUsIDAuNTc3MzUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1h
bGl6ZS5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAw
LjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5oaWdocF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVj
NCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAuNSwgMC41
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5oaWdocF9mcmFn
bWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5oaWdo
cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuNSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAxLCAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6
ZS5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjcwNzEwNiwgMC43MDcxMDcsIGZhbHNlLCAwLjcwNzEw
NiwgMC43MDcxMDddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXpl
LmhpZ2hwX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC41LCAwLjUpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNzA3MTA2LCAwLjcwNzEwNywgZmFsc2UsIDAuNzA3MTA2
LCAwLjcwNzEwN119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5ub3JtYWxpemUu
aGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjU3NzM1LCAwLjU3NzM1MSwgZmFsc2UsIDAuNTc3
MzUsIDAuNTc3MzUxLCBmYWxzZSwgMC41NzczNSwgMC41NzczNTFdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ubm9ybWFsaXplLmhpZ2hwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41
NzczNSwgMC41NzczNTEsIGZhbHNlLCAwLjU3NzM1LCAwLjU3NzM1MSwgZmFsc2UsIDAuNTc3MzUs
IDAuNTc3MzUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm5vcm1hbGl6ZS5o
aWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNSwg
ZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubm9ybWFsaXplLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLjUsIDAuNV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5sb3dwX3ZlcnRl
eC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC0wLjIwMzEyNSwgLTAuMTk1MzEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LmZhY2Vmb3J3YXJkLmxvd3BfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuNSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTNdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQubG93cF92ZXJ0ZXgudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMx
MjUsIC0wLjE5NTMxM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9y
d2FyZC5sb3dwX3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIs
IDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDMxMjUs
IC0wLjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIs
IDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzLCBmYWxz
ZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMxM119KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5sb3dwX3ZlcnRleC52
ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2
ZWMzKDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDMxMjUsIC0w
LjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzLCBmYWxzZSwgLTAuMjAzMTI1LCAt
MC4xOTUzMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQu
bG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0w
LjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzLCBmYWxzZSwgLTAuMjAzMTI1LCAt
MC4xOTUzMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQu
bG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0w
LjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzLCBmYWxzZSwgLTAuMjAzMTI1LCAt
MC4xOTUzMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQu
bG93cF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmxvd3BfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcw
LjIsIDAuMiwgMC41LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMx
M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5sb3dwX2Zy
YWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVj
MigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEz
LCBmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZmFjZWZvcndhcmQubG93cF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEz
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmxvd3BfZnJh
Z21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAz
MTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMxMywgZmFsc2UsIC0wLjIw
MzEyNSwgLTAuMTk1MzEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vm
b3J3YXJkLmxvd3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMx
MywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUz
MTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1
MzEzLCBmYWxzZSwgLTAuMjAzMTI1LCAtMC4xOTUzMTNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZmFjZWZvcndhcmQubG93cF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUs
IDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5
NTMxMywgZmFsc2UsIC0wLjIwMzEyNSwgLTAuMTk1MzEzLCBmYWxzZSwgLTAuMjAzMTI1LCAtMC4x
OTUzMTMsIGZhbHNlLCAtMC4yMDMxMjUsIC0wLjE5NTMxM119KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDog
JzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5
OTUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLm1lZGl1
bXBfdmVydGV4LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuNSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZmFjZWZvcndhcmQubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigw
LjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5tZWRpdW1w
X3ZlcnRleC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZl
YzIoMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1
MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmZhY2Vmb3J3YXJkLm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMo
MC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAu
MjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1MV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5tZWRpdW1wX3ZlcnRleC52ZWMz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5
OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAuMjAwMTk1LCAtMC4x
OTk5NTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQubWVk
aXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0w
LjE5OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAuMjAwMTk1LCAt
MC4xOTk5NTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQu
bWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUs
IC0wLjE5OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAuMjAwMTk1
LCAtMC4xOTk5NTFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndh
cmQubWVkaXVtcF9mcmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywg
aW5wdXQ6ICcwLjIsIDAuMiwgMC41LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDAxOTUs
IC0wLjE5OTk1MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2Fy
ZC5tZWRpdW1wX2ZyYWdtZW50LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAu
MiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIwMDE5
NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQubWVkaXVtcF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1MSwgZmFsc2UsIC0wLjIw
MDE5NSwgLTAuMTk5OTUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vm
b3J3YXJkLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4y
KSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5
OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAn
dmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwg
MC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNl
LCAtMC4yMDAxOTUsIC0wLjE5OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLm1lZGl1bXBfZnJhZ21l
bnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4y
LCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1MSwg
ZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5OTUxLCBmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTFd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQubWVkaXVtcF9m
cmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5OTk1MSwgZmFsc2UsIC0wLjIwMDE5NSwgLTAuMTk5
OTUxLCBmYWxzZSwgLTAuMjAwMTk1LCAtMC4xOTk5NTEsIGZhbHNlLCAtMC4yMDAxOTUsIC0wLjE5
OTk1MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5oaWdo
cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZh
Y2Vmb3J3YXJkLmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjUsICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZmFjZWZvcndhcmQuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmhpZ2hwX3ZlcnRleC52ZWMyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMl19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5oaWdocF92ZXJ0ZXgudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjIsIDAuMiwgMC4yKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMiwgLTAuMiwgZmFsc2Us
IC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLmZhY2Vmb3J3YXJkLmhpZ2hwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAu
MiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMiwgZmFs
c2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZv
cndhcmQuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yLCBmYWxz
ZSwgLTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24uZmFjZWZvcndhcmQuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwg
MC41LCAwLjUsIDAuNSksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNl
LCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjJdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQuaGlnaHBfZnJhZ21lbnQu
c2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
MC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vmb3J3YXJk
LmhpZ2hwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuNSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgLTAuMiwgLTAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5mYWNlZm9yd2FyZC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwg
MC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2
ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMl19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5mYWNlZm9yd2FyZC5oaWdocF9mcmFnbWVudC52ZWMzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAu
MiwgMC4yLCAwLjIpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwg
LTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24uZmFjZWZvcndhcmQuaGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygw
LjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjIsIGZh
bHNlLCAtMC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmZhY2Vm
b3J3YXJkLmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yLCBm
YWxzZSwgLTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24uZmFjZWZvcndhcmQuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAn
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMiwgLTAuMiwg
ZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMl19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfdmVydGV4LnNj
YWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE2
NDA2MywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVj
dC5sb3dwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wODU5Mzc1LCAwLjEwOTM3NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTQ4NDM4
LCAwLjE4NzUsIGZhbHNlLCAwLjE0ODQzOCwgMC4xODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnJlZmxlY3QubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDA3
ODEyNSwgMC4wMTU2MjUsIGZhbHNlLCAtMC4wMDc4MTI1LCAwLjAxNTYyNV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfdmVydGV4LnZlYzMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjEzMjgxMywgMC4xNzE4NzUsIGZhbHNlLCAwLjEzMjgxMywgMC4xNzE4
NzUsIGZhbHNlLCAwLjEzMjgxMywgMC4xNzE4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucmVmbGVjdC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LTAuMTE3MTg4LCAtMC4wNzgxMjUsIGZhbHNlLCAtMC4xMTcxODgsIC0wLjA3ODEyNSwgZmFsc2Us
IC0wLjExNzE4OCwgLTAuMDc4MTI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJlZmxlY3QubG93cF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjExNzE4OCwgMC4xNTYyNSwgZmFsc2UsIDAuMTE3MTg4LCAwLjE1NjI1LCBmYWxzZSwgMC4x
MTcxODgsIDAuMTU2MjUsIGZhbHNlLCAwLjExNzE4OCwgMC4xNTYyNV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3Zl
YzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjEwOTM4LCAtMC4xNzE4NzUsIGZhbHNlLCAtMC4yMTA5
MzgsIC0wLjE3MTg3NSwgZmFsc2UsIC0wLjIxMDkzOCwgLTAuMTcxODc1LCBmYWxzZSwgLTAuMjEw
OTM4LCAtMC4xNzE4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVj
dC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjE2NDA2MywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucmVmbGVjdC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAw
LjUsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA4NTkzNzUsIDAuMTA5Mzc1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QubG93cF9mcmFnbWVudC52ZWMy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjE0ODQzOCwgMC4xODc1LCBmYWxzZSwgMC4xNDg0MzgsIDAuMTg3NV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfZnJhZ21lbnQu
dmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDA3ODEyNSwgMC4wMTU2MjUsIGZhbHNlLCAtMC4wMDc4MTI1
LCAwLjAxNTYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxv
d3BfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIs
IDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTMyODEzLCAwLjE3MTg3
NSwgZmFsc2UsIDAuMTMyODEzLCAwLjE3MTg3NSwgZmFsc2UsIDAuMTMyODEzLCAwLjE3MTg3NV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfZnJhZ21lbnQu
dmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjExNzE4OCwgLTAuMDc4MTI1LCBmYWxzZSwg
LTAuMTE3MTg4LCAtMC4wNzgxMjUsIGZhbHNlLCAtMC4xMTcxODgsIC0wLjA3ODEyNV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lmxvd3BfZnJhZ21lbnQudmVjNCcs
IGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjExNzE4OCwgMC4xNTYyNSwgZmFsc2Us
IDAuMTE3MTg4LCAwLjE1NjI1LCBmYWxzZSwgMC4xMTcxODgsIDAuMTU2MjUsIGZhbHNlLCAwLjEx
NzE4OCwgMC4xNTYyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0
Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4y
MTA5MzgsIC0wLjE3MTg3NSwgZmFsc2UsIC0wLjIxMDkzOCwgLTAuMTcxODc1LCBmYWxzZSwgLTAu
MjEwOTM4LCAtMC4xNzE4NzUsIGZhbHNlLCAtMC4yMTA5MzgsIC0wLjE3MTg3NV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBfdmVydGV4LnNjYWxhcics
IGlucHV0OiAnMC4yLCAwLjIsICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE4MzgzOCwg
MC4xODQzMjZdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVjdC5tZWRp
dW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4wOTk4NTM1LCAwLjEwMDIyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnJlZmxlY3QubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNjc3MjUs
IDAuMTY4NDU3LCBmYWxzZSwgMC4xNjc3MjUsIDAuMTY4NDU3XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnJlZmxlY3QubWVkaXVtcF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LTAuMDAwMjQ0MTQxLCAwLjAwMDI0NDE0MSwgZmFsc2UsIC0wLjAwMDI0NDE0MSwgMC4wMDAyNDQx
NDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVjdC5tZWRpdW1wX3Zl
cnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNTE2MTEsIDAuMTUyMzQ0LCBmYWxz
ZSwgMC4xNTE2MTEsIDAuMTUyMzQ0LCBmYWxzZSwgMC4xNTE2MTEsIDAuMTUyMzQ0XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QubWVkaXVtcF92ZXJ0ZXgudmVjMycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjEwMDM0MiwgLTAuMDk5NjA5NCwgZmFsc2UsIC0wLjEw
MDM0MiwgLTAuMDk5NjA5NCwgZmFsc2UsIC0wLjEwMDM0MiwgLTAuMDk5NjA5NF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBfdmVydGV4LnZlYzQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xMzU0OTgsIDAuMTM2NDc1LCBmYWxzZSwg
MC4xMzU0OTgsIDAuMTM2NDc1LCBmYWxzZSwgMC4xMzU0OTgsIDAuMTM2NDc1LCBmYWxzZSwgMC4x
MzU0OTgsIDAuMTM2NDc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxl
Y3QubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
MC4yMDA0MzksIC0wLjE5OTIxOSwgZmFsc2UsIC0wLjIwMDQzOSwgLTAuMTk5MjE5LCBmYWxzZSwg
LTAuMjAwNDM5LCAtMC4xOTkyMTksIGZhbHNlLCAtMC4yMDA0MzksIC0wLjE5OTIxOV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBfZnJhZ21lbnQuc2Nh
bGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTgz
ODM4LCAwLjE4NDMyNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0
Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMDk5ODUzNSwgMC4xMDAyMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xNjc3MjUsIDAuMTY4NDU3LCBmYWxzZSwgMC4xNjc3MjUsIDAuMTY4NDU3XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QubWVkaXVtcF9mcmFnbWVudC52ZWMyJywg
aW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAtMC4wMDAyNDQxNDEsIDAuMDAwMjQ0MTQxLCBmYWxzZSwgLTAuMDAwMjQ0MTQx
LCAwLjAwMDI0NDE0MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0
Lm1lZGl1bXBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTUxNjExLCAw
LjE1MjM0NCwgZmFsc2UsIDAuMTUxNjExLCAwLjE1MjM0NCwgZmFsc2UsIDAuMTUxNjExLCAwLjE1
MjM0NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBf
ZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjEwMDM0MiwgLTAuMDk5NjA5
NCwgZmFsc2UsIC0wLjEwMDM0MiwgLTAuMDk5NjA5NCwgZmFsc2UsIC0wLjEwMDM0MiwgLTAuMDk5
NjA5NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0Lm1lZGl1bXBf
ZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEzNTQ5OCwg
MC4xMzY0NzUsIGZhbHNlLCAwLjEzNTQ5OCwgMC4xMzY0NzUsIGZhbHNlLCAwLjEzNTQ5OCwgMC4x
MzY0NzUsIGZhbHNlLCAwLjEzNTQ5OCwgMC4xMzY0NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ucmVmbGVjdC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgLTAuMjAwNDM5LCAtMC4xOTkyMTksIGZhbHNlLCAtMC4yMDA0Mzks
IC0wLjE5OTIxOSwgZmFsc2UsIC0wLjIwMDQzOSwgLTAuMTk5MjE5LCBmYWxzZSwgLTAuMjAwNDM5
LCAtMC4xOTkyMTldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVjdC5o
aWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMTg0LCAwLjE4NF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5yZWZsZWN0LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC41LCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucmVmbGVjdC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNjgsIDAu
MTY4LCBmYWxzZSwgMC4xNjgsIDAuMTY4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnJlZmxlY3QuaGlnaHBfdmVydGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2
ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QuaGlnaHBfdmVy
dGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE1MiwgMC4xNTIsIGZhbHNlLCAwLjE1
MiwgMC4xNTIsIGZhbHNlLCAwLjE1MiwgMC4xNTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucmVmbGVjdC5oaWdocF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IC0wLjEsIC0wLjEsIGZhbHNlLCAtMC4xLCAtMC4xLCBmYWxzZSwgLTAuMSwgLTAuMV19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0LmhpZ2hwX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTM2LCAwLjEzNiwgZmFsc2UsIDAuMTM2
LCAwLjEzNiwgZmFsc2UsIDAuMTM2LCAwLjEzNiwgZmFsc2UsIDAuMTM2LCAwLjEzNl19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZsZWN0LmhpZ2hwX3ZlcnRleC52ZWM0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAt
MC4yLCBmYWxzZSwgLTAuMiwgLTAuMiwgZmFsc2UsIC0wLjIsIC0wLjJdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVjdC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgMC4yLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xODQsIDAuMTg0XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QuaGlnaHBfZnJhZ21lbnQu
c2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuNSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QuaGlnaHBf
ZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xNjgsIDAuMTY4LCBmYWxzZSwgMC4xNjgsIDAu
MTY4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3QuaGlnaHBfZnJh
Z21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmbGVjdC5oaWdocF9mcmFnbWVudC52ZWMzJywgaW5wdXQ6
ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xNTIsIDAuMTUyLCBmYWxzZSwgMC4xNTIsIDAuMTUyLCBmYWxzZSwg
MC4xNTIsIDAuMTUyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZmxlY3Qu
aGlnaHBfZnJhZ21lbnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygw
LjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjEsIC0wLjEsIGZh
bHNlLCAtMC4xLCAtMC4xLCBmYWxzZSwgLTAuMSwgLTAuMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5yZWZsZWN0LmhpZ2hwX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xMzYsIDAuMTM2LCBmYWxzZSwgMC4xMzYsIDAuMTM2LCBmYWxz
ZSwgMC4xMzYsIDAuMTM2LCBmYWxzZSwgMC4xMzYsIDAuMTM2XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnJlZmxlY3QuaGlnaHBfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4yLCAtMC4yLCBmYWxzZSwgLTAuMiwgLTAuMiwgZmFsc2Us
IC0wLjIsIC0wLjIsIGZhbHNlLCAtMC4yLCAtMC4yXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnJlZnJhY3QubG93cF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwg
MC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubG93cF92ZXJ0ZXguc2NhbGFyJywg
aW5wdXQ6ICcwLjIsIDAuMiwgMC41LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubG93
cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAw
LjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAt
SW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJl
ZnJhY3QubG93cF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4y
LCAwLjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLnJlZnJhY3QubG93cF92ZXJ0ZXgudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
SW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVm
cmFjdC5sb3dwX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMz
KDAuMiwgMC4yLCAwLjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lmxvd3Bf
dmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwg
SW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ucmVmcmFjdC5sb3dwX3ZlcnRleC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAu
MiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgMC41LCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJ
bmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIElu
ZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubG93cF9m
cmFnbWVudC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ucmVmcmFjdC5sb3dwX2ZyYWdtZW50LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAu
NSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjMicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubG93cF9mcmFnbWVu
dC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIDAuNSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5s
b3dwX2ZyYWdtZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4y
LCAwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZp
bml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmlu
aXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubG93cF9mcmFn
bWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAw
LjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lmxvd3BfZnJhZ21lbnQudmVj
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIs
IDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwg
ZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNp
c2lvbi5yZWZyYWN0Lmxvd3BfZnJhZ21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIDAuNSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHks
IGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfdmVydGV4
LnNjYWxhcicsIGlucHV0OiAnMC4yLCAwLjIsIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LTAuMTU5NDI0LCAtMC4xNTU3NjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
cmVmcmFjdC5tZWRpdW1wX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAuMiwgMC4yLCAwLjUsICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjA3ODczNTQsIC0wLjA3NTY4MzZdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5tZWRpdW1wX3ZlcnRleC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMTYxMzc3LCAtMC4xNTc0NzEsIGZhbHNlLCAtMC4xNjEzNzcsIC0wLjE1NzQ3
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfdmVy
dGV4LnZlYzInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgMC41LCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wODI4ODU3LCAtMC4wNzk4MzQsIGZhbHNlLCAtMC4w
ODI4ODU3LCAtMC4wNzk4MzRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVm
cmFjdC5tZWRpdW1wX3ZlcnRleC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2
ZWMzKDAuMiwgMC4yLCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjE2Mjg0
MiwgLTAuMTU4OTM2LCBmYWxzZSwgLTAuMTYyODQyLCAtMC4xNTg5MzYsIGZhbHNlLCAtMC4xNjI4
NDIsIC0wLjE1ODkzNl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0
Lm1lZGl1bXBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMo
MC4yLCAwLjIsIDAuMiksIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDg3MjgwMywg
LTAuMDg0MjI4NSwgZmFsc2UsIC0wLjA4NzI4MDMsIC0wLjA4NDIyODUsIGZhbHNlLCAtMC4wODcy
ODAzLCAtMC4wODQyMjg1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJh
Y3QubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIp
LCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
LTAuMTY0NTUxLCAtMC4xNjA0LCBmYWxzZSwgLTAuMTY0NTUxLCAtMC4xNjA0LCBmYWxzZSwgLTAu
MTY0NTUxLCAtMC4xNjA0LCBmYWxzZSwgLTAuMTY0NTUxLCAtMC4xNjA0XX0pOworcmVmLnB1c2go
e3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubWVkaXVtcF92ZXJ0ZXgudmVjNCcsIGlucHV0
OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIDAu
NSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDkxNDMwNywgLTAuMDg4Mzc4OSwgZmFsc2Us
IC0wLjA5MTQzMDcsIC0wLjA4ODM3ODksIGZhbHNlLCAtMC4wOTE0MzA3LCAtMC4wODgzNzg5LCBm
YWxzZSwgLTAuMDkxNDMwNywgLTAuMDg4Mzc4OV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAu
MiwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4xNTk0MjQsIC0wLjE1NTc2Ml19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfZnJhZ21lbnQu
c2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC41LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAt
MC4wNzg3MzU0LCAtMC4wNzU2ODM2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnJlZnJhY3QubWVkaXVtcF9mcmFnbWVudC52ZWMyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwg
dmVjMigwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMTYxMzc3LCAt
MC4xNTc0NzEsIGZhbHNlLCAtMC4xNjEzNzcsIC0wLjE1NzQ3MV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAn
dmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIC0wLjA4Mjg4NTcsIC0wLjA3OTgzNCwgZmFsc2UsIC0wLjA4Mjg4NTcsIC0wLjA3OTgzNF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0Lm1lZGl1bXBfZnJhZ21l
bnQudmVjMycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4y
KSwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4xNjI4NDIsIC0wLjE1ODkzNiwgZmFs
c2UsIC0wLjE2Mjg0MiwgLTAuMTU4OTM2LCBmYWxzZSwgLTAuMTYyODQyLCAtMC4xNTg5MzZdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5tZWRpdW1wX2ZyYWdtZW50
LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiks
IDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDg3MjgwMywgLTAuMDg0MjI4NSwgZmFs
c2UsIC0wLjA4NzI4MDMsIC0wLjA4NDIyODUsIGZhbHNlLCAtMC4wODcyODAzLCAtMC4wODQyMjg1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QubWVkaXVtcF9mcmFn
bWVudC52ZWM0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgMC4yLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4xNjQ1NTEsIC0w
LjE2MDQsIGZhbHNlLCAtMC4xNjQ1NTEsIC0wLjE2MDQsIGZhbHNlLCAtMC4xNjQ1NTEsIC0wLjE2
MDQsIGZhbHNlLCAtMC4xNjQ1NTEsIC0wLjE2MDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ucmVmcmFjdC5tZWRpdW1wX2ZyYWdtZW50LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4y
LCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAwLjUsICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIC0wLjA5MTQzMDcsIC0wLjA4ODM3ODksIGZhbHNlLCAtMC4wOTE0MzA3
LCAtMC4wODgzNzg5LCBmYWxzZSwgLTAuMDkxNDMwNywgLTAuMDg4Mzc4OSwgZmFsc2UsIC0wLjA5
MTQzMDcsIC0wLjA4ODM3ODldfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVm
cmFjdC5oaWdocF92ZXJ0ZXguc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC4yLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAtMC4xNTc1NjYsIC0wLjE1NzU2Nl19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0LmhpZ2hwX3ZlcnRleC5zY2FsYXInLCBpbnB1dDogJzAu
MiwgMC4yLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjA3NzI1MTMsIC0wLjA3NzI1
MTJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5oaWdocF92ZXJ0
ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAwLjIsICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjE1OTE4NSwgLTAuMTU5MTg1LCBmYWxzZSwgLTAuMTU5
MTg1LCAtMC4xNTkxODVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFj
dC5oaWdocF92ZXJ0ZXgudmVjMicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAw
LjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjA4MTM4OTgsIC0wLjA4MTM4OTcs
IGZhbHNlLCAtMC4wODEzODk4LCAtMC4wODEzODk3XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnJlZnJhY3QuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgLTAuMTYwODE4LCAtMC4xNjA4MTgsIGZhbHNlLCAtMC4xNjA4MTgsIC0wLjE2MDgxOCwgZmFs
c2UsIC0wLjE2MDgxOCwgLTAuMTYwODE4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnJlZnJhY3QuaGlnaHBfdmVydGV4LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzMoMC4yLCAwLjIsIDAuMiksIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAu
MDg1NjIwMywgLTAuMDg1NjIwMiwgZmFsc2UsIC0wLjA4NTYyMDMsIC0wLjA4NTYyMDIsIGZhbHNl
LCAtMC4wODU2MjAzLCAtMC4wODU2MjAyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnJlZnJhY3QuaGlnaHBfdmVydGV4LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIC0wLjE2MjQ2NCwgLTAuMTYyNDY0LCBmYWxzZSwgLTAuMTYyNDY0LCAtMC4xNjI0NjQs
IGZhbHNlLCAtMC4xNjI0NjQsIC0wLjE2MjQ2NCwgZmFsc2UsIC0wLjE2MjQ2NCwgLTAuMTYyNDY0
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QuaGlnaHBfdmVydGV4
LnZlYzQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwg
MC4yLCAwLjIpLCAwLjUsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjA4OTk0MjYsIC0wLjA4
OTk0MjUsIGZhbHNlLCAtMC4wODk5NDI2LCAtMC4wODk5NDI1LCBmYWxzZSwgLTAuMDg5OTQyNiwg
LTAuMDg5OTQyNSwgZmFsc2UsIC0wLjA4OTk0MjYsIC0wLjA4OTk0MjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5oaWdocF9mcmFnbWVudC5zY2FsYXInLCBpbnB1
dDogJzAuMiwgMC4yLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjE1NzU2NiwgLTAu
MTU3NTY2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QuaGlnaHBf
ZnJhZ21lbnQuc2NhbGFyJywgaW5wdXQ6ICcwLjIsIDAuMiwgMC41LCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAtMC4wNzcyNTEzLCAtMC4wNzcyNTEyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnJlZnJhY3QuaGlnaHBfZnJhZ21lbnQudmVjMicsIGlucHV0OiAndmVjMigwLjIs
IDAuMiksIHZlYzIoMC4yLCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjE1
OTE4NSwgLTAuMTU5MTg1LCBmYWxzZSwgLTAuMTU5MTg1LCAtMC4xNTkxODVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5oaWdocF9mcmFnbWVudC52ZWMyJywgaW5w
dXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksIDAuNSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgLTAuMDgxMzg5OCwgLTAuMDgxMzg5NywgZmFsc2UsIC0wLjA4MTM4OTgsIC0wLjA4
MTM4OTddfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5oaWdocF9m
cmFnbWVudC52ZWMzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4y
LCAwLjIpLCAwLjIsICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIC0wLjE2MDgxOCwgLTAuMTYwODE4
LCBmYWxzZSwgLTAuMTYwODE4LCAtMC4xNjA4MTgsIGZhbHNlLCAtMC4xNjA4MTgsIC0wLjE2MDgx
OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5yZWZyYWN0LmhpZ2hwX2ZyYWdt
ZW50LnZlYzMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksIDAuNSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMDg1NjIwMywgLTAuMDg1NjIwMiwg
ZmFsc2UsIC0wLjA4NTYyMDMsIC0wLjA4NTYyMDIsIGZhbHNlLCAtMC4wODU2MjAzLCAtMC4wODU2
MjAyXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnJlZnJhY3QuaGlnaHBfZnJh
Z21lbnQudmVjNCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksIDAuMiwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLTAuMTYyNDY0LCAt
MC4xNjI0NjQsIGZhbHNlLCAtMC4xNjI0NjQsIC0wLjE2MjQ2NCwgZmFsc2UsIC0wLjE2MjQ2NCwg
LTAuMTYyNDY0LCBmYWxzZSwgLTAuMTYyNDY0LCAtMC4xNjI0NjRdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24ucmVmcmFjdC5oaWdocF9mcmFnbWVudC52ZWM0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgMC41LCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtMC4wODk5NDI2LCAtMC4wODk5NDI1LCBmYWxzZSwgLTAu
MDg5OTQyNiwgLTAuMDg5OTQyNSwgZmFsc2UsIC0wLjA4OTk0MjYsIC0wLjA4OTk0MjUsIGZhbHNl
LCAtMC4wODk5NDI2LCAtMC4wODk5NDI1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigw
LjIsIDApLCB2ZWMyKDAsIDAuMikpLCBtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX3ZlcnRleC5tYXQyJywgaW5w
dXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgbWF0Mih2ZWMyKDAuNSwgMCks
IHZlYzIoMCwgMC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF92
ZXJ0ZXgubWF0MngzJywgaW5wdXQ6ICdtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAu
MiwgMCkpLCBtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCkpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAs
IDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93
cF92ZXJ0ZXgubWF0MngzJywgaW5wdXQ6ICdtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAs
IDAuMiwgMCkpLCBtYXQyeDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCkpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQu
bG93cF92ZXJ0ZXgubWF0Mng0JywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjIsIDAsIDAsIDApLCB2
ZWM0KDAsIDAuMiwgMCwgMCkpLCBtYXQyeDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAu
MiwgMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX3ZlcnRleC5tYXQy
eDQnLCBpbnB1dDogJ21hdDJ4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAw
KSksIG1hdDJ4NCh2ZWM0KDAuNSwgMCwgMCwgMCksIHZlYzQoMCwgMC41LCAwLCAwKSksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAnbWF0
M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApKSwgbWF0M3gyKHZlYzIo
MC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDN4
MicsIGlucHV0OiAnbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDAp
KSwgbWF0M3gyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxv
d3BfdmVydGV4Lm1hdDMnLCBpbnB1dDogJ21hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAu
MiwgMCksIHZlYzMoMCwgMCwgMC4yKSksIG1hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAu
MiwgMCksIHZlYzMoMCwgMCwgMC4yKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAz
MTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF92ZXJ0ZXgubWF0MycsIGlucHV0OiAnbWF0Myh2
ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgbWF0Myh2
ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX3Zl
cnRleC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwg
MC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgbWF0M3g0KHZlYzQoMC4yLCAwLCAwLCAw
KSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDN4NCcsIGlucHV0OiAnbWF0
M3g0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAu
MiwgMCkpLCBtYXQzeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwgMCwgMCksIHZl
YzQoMCwgMCwgMC41LCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQu
bG93cF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAs
IDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkpLCBtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMy
KDAsIDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhj
b21wbXVsdC5sb3dwX3ZlcnRleC5tYXQ0eDInLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCks
IHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksIG1hdDR4Mih2ZWMyKDAuNSwg
MCksIHZlYzIoMCwgMC41KSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm1hdHJpeGNvbXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDR4MycsIGlucHV0OiAnbWF0NHgzKHZlYzMo
MC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAsIDAuMiksIHZlYzMoMCwgMCwg
MCkpLCBtYXQ0eDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwg
MC4yKSwgdmVjMygwLCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1
LCAwLjA0Njg3NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11
bHQubG93cF92ZXJ0ZXgubWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIsIDAsIDApLCB2
ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSksIG1hdDR4Myh2
ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpLCB2ZWMzKDAs
IDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjMsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX3ZlcnRl
eC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAs
IDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksIG1hdDQodmVjNCgw
LjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSwgdmVj
NCgwLCAwLCAwLCAwLjIpKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAu
MDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDMx
MjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNv
bXBtdWx0Lmxvd3BfdmVydGV4Lm1hdDQnLCBpbnB1dDogJ21hdDQodmVjNCgwLjIsIDAsIDAsIDAp
LCB2ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSwgdmVjNCgwLCAwLCAwLCAw
LjIpKSwgbWF0NCh2ZWM0KDAuNSwgMCwgMCwgMCksIHZlYzQoMCwgMC41LCAwLCAwKSwgdmVjNCgw
LCAwLCAwLjUsIDApLCB2ZWM0KDAsIDAsIDAsIDAuNSkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjMsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5tYXQyJywgaW5wdXQ6ICdtYXQy
KHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwg
MC4yKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5t
YXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgbWF0Mih2ZWMy
KDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11
bHQubG93cF9mcmFnbWVudC5tYXQyeDMnLCBpbnB1dDogJ21hdDJ4Myh2ZWMzKDAuMiwgMCwgMCks
IHZlYzMoMCwgMC4yLCAwKSksIG1hdDJ4Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAw
KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1
LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhj
b21wbXVsdC5sb3dwX2ZyYWdtZW50Lm1hdDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAw
LCAwKSwgdmVjMygwLCAwLjIsIDApKSwgbWF0MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAw
LjUsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjMsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1h
dHJpeGNvbXBtdWx0Lmxvd3BfZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICdtYXQyeDQodmVjNCgw
LjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwgMCwgMCkpLCBtYXQyeDQodmVjNCgwLjIsIDAsIDAs
IDApLCB2ZWM0KDAsIDAuMiwgMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4w
MzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5s
b3dwX2ZyYWdtZW50Lm1hdDJ4NCcsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwg
dmVjNCgwLCAwLjIsIDAsIDApKSwgbWF0Mng0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAw
LjUsIDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYz
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5t
YXQzeDInLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigw
LCAwKSksIG1hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVs
dC5sb3dwX2ZyYWdtZW50Lm1hdDN4MicsIGlucHV0OiAnbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVj
MigwLCAwLjIpLCB2ZWMyKDAsIDApKSwgbWF0M3gyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUp
LCB2ZWMyKDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAx
NTYzLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2Mywg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfZnJhZ21lbnQubWF0MycsIGlucHV0OiAnbWF0Myh2ZWMz
KDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgbWF0Myh2ZWMz
KDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX2ZyYWdt
ZW50Lm1hdDMnLCBpbnB1dDogJ21hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCks
IHZlYzMoMCwgMCwgMC4yKSksIG1hdDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCks
IHZlYzMoMCwgMCwgMC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
MDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2
ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDAp
KSwgbWF0M3g0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAs
IDAsIDAuMiwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4
NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLCAw
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3Bf
ZnJhZ21lbnQubWF0M3g0JywgaW5wdXQ6ICdtYXQzeDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0
KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSksIG1hdDN4NCh2ZWM0KDAuNSwgMCwg
MCwgMCksIHZlYzQoMCwgMC41LCAwLCAwKSwgdmVjNCgwLCAwLCAwLjUsIDApKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYz
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX2ZyYWdtZW50Lm1hdDR4MicsIGlucHV0
OiAnbWF0NHgyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApLCB2ZWMyKDAs
IDApKSwgbWF0NHgyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApLCB2ZWMy
KDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5tYXQ0
eDInLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAw
KSwgdmVjMigwLCAwKSksIG1hdDR4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSwgdmVjMigw
LCAwKSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1
NjMsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfZnJh
Z21lbnQubWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAu
MiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSksIG1hdDR4Myh2ZWMzKDAuMiwg
MCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5sb3dwX2ZyYWdtZW50Lm1hdDR4
MycsIGlucHV0OiAnbWF0NHgzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMz
KDAsIDAsIDAuMiksIHZlYzMoMCwgMCwgMCkpLCBtYXQ0eDModmVjMygwLjUsIDAsIDApLCB2ZWMz
KDAsIDAuNSwgMCksIHZlYzMoMCwgMCwgMC41KSwgdmVjMygwLCAwLCAwKSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubG93cF9mcmFnbWVudC5tYXQ0JywgaW5wdXQ6ICdt
YXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAu
MiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksIG1hdDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0
KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSwgdmVjNCgwLCAwLCAwLCAwLjIpKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDMxMjUs
IDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmxvd3BfZnJhZ21l
bnQubWF0NCcsIGlucHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAw
LCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCBtYXQ0KHZlYzQo
MC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwgMCksIHZl
YzQoMCwgMCwgMCwgMC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhj
b21wbXVsdC5tZWRpdW1wX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwg
dmVjMigwLCAwLjIpKSwgbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfdmVydGV4Lm1hdDInLCBpbnB1
dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMikpLCBtYXQyKHZlYzIoMC41LCAwKSwg
dmVjMigwLCAwLjUpKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4x
MDAwOTgsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAw
OThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVk
aXVtcF92ZXJ0ZXgubWF0MngzJywgaW5wdXQ6ICdtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMz
KDAsIDAuMiwgMCkpLCBtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCkpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEs
IGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNv
bXBtdWx0Lm1lZGl1bXBfdmVydGV4Lm1hdDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAw
LCAwKSwgdmVjMygwLCAwLjIsIDApKSwgbWF0MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAw
LjUsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5tYXRyaXhjb21wbXVsdC5tZWRpdW1wX3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ21hdDJ4NCh2
ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSksIG1hdDJ4NCh2ZWM0KDAuMiwg
MCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhj
b21wbXVsdC5tZWRpdW1wX3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ21hdDJ4NCh2ZWM0KDAuMiwg
MCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSksIG1hdDJ4NCh2ZWM0KDAuNSwgMCwgMCwgMCks
IHZlYzQoMCwgMC41LCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5t
ZWRpdW1wX3ZlcnRleC5tYXQzeDInLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIo
MCwgMC4yKSwgdmVjMigwLCAwKSksIG1hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwg
dmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAx
MDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAx
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF92ZXJ0ZXgubWF0M3gyJywgaW5wdXQ6ICdtYXQz
eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCkpLCBtYXQzeDIodmVjMigw
LjUsIDApLCB2ZWMyKDAsIDAuNSksIHZlYzIoMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfdmVydGV4
Lm1hdDMnLCBpbnB1dDogJ21hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZl
YzMoMCwgMCwgMC4yKSksIG1hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZl
YzMoMCwgMCwgMC4yKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4w
NDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF92ZXJ0ZXgubWF0MycsIGlucHV0OiAnbWF0Myh2
ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgbWF0Myh2
ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5t
ZWRpdW1wX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCks
IHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgbWF0M3g0KHZlYzQoMC4y
LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfdmVydGV4Lm1h
dDN4NCcsIGlucHV0OiAnbWF0M3g0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAs
IDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkpLCBtYXQzeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0
KDAsIDAuNSwgMCwgMCksIHZlYzQoMCwgMCwgMC41LCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICdt
YXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkp
LCBtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwg
MCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF92ZXJ0ZXgubWF0
NHgyJywgaW5wdXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwg
MCksIHZlYzIoMCwgMCkpLCBtYXQ0eDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSksIHZlYzIo
MCwgMCksIHZlYzIoMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAw
LjEwMDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVk
aXVtcF92ZXJ0ZXgubWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIsIDAsIDApLCB2ZWMz
KDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSksIG1hdDR4Myh2ZWMz
KDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAs
IDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4w
NDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5tZWRpdW1w
X3ZlcnRleC5tYXQ0eDMnLCBpbnB1dDogJ21hdDR4Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwg
MC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwgbWF0NHgzKHZlYzMoMC41
LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSksIHZlYzMoMCwgMCwgMCkp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAw
OTgsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfdmVy
dGV4Lm1hdDQnLCBpbnB1dDogJ21hdDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwg
MCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSwgdmVjNCgwLCAwLCAwLCAwLjIpKSwgbWF0NCh2ZWM0
KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApLCB2
ZWM0KDAsIDAsIDAsIDAuMikpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMC4wMzk5NzgsIDAuMDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5tYXRyaXhjb21wbXVsdC5tZWRpdW1wX3ZlcnRleC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQo
MC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZl
YzQoMCwgMCwgMCwgMC4yKSksIG1hdDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwg
MCwgMCksIHZlYzQoMCwgMCwgMC41LCAwKSwgdmVjNCgwLCAwLCAwLCAwLjUpKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF9mcmFn
bWVudC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgbWF0
Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1h
dHJpeGNvbXBtdWx0Lm1lZGl1bXBfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAu
MiwgMCksIHZlYzIoMCwgMC4yKSksIG1hdDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5tZWRpdW1wX2ZyYWdtZW50Lm1h
dDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApKSwg
bWF0MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5tZWRpdW1w
X2ZyYWdtZW50Lm1hdDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygw
LCAwLjIsIDApKSwgbWF0MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21w
bXVsdC5tZWRpdW1wX2ZyYWdtZW50Lm1hdDJ4NCcsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC4yLCAw
LCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApKSwgbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwg
dmVjNCgwLCAwLjIsIDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1l
ZGl1bXBfZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjIsIDAsIDAsIDAp
LCB2ZWM0KDAsIDAuMiwgMCwgMCkpLCBtYXQyeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAs
IDAuNSwgMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF9m
cmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4y
KSwgdmVjMigwLCAwKSksIG1hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigw
LCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
bWF0cml4Y29tcG11bHQubWVkaXVtcF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ21hdDN4Mih2
ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksIG1hdDN4Mih2ZWMyKDAuNSwg
MCksIHZlYzIoMCwgMC41KSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF9mcmFnbWVudC5t
YXQzJywgaW5wdXQ6ICdtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMz
KDAsIDAsIDAuMikpLCBtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMz
KDAsIDAsIDAuMikpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQw
MTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfZnJhZ21lbnQubWF0MycsIGlucHV0OiAnbWF0Myh2
ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgbWF0Myh2
ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5t
ZWRpdW1wX2ZyYWdtZW50Lm1hdDN4NCcsIGlucHV0OiAnbWF0M3g0KHZlYzQoMC4yLCAwLCAwLCAw
KSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkpLCBtYXQzeDQodmVjNCgw
LjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF9mcmFnbWVu
dC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4y
LCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgbWF0M3g0KHZlYzQoMC41LCAwLCAwLCAwKSwg
dmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwgMCkpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfZnJhZ21lbnQubWF0NHgyJywgaW5w
dXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCksIHZlYzIo
MCwgMCkpLCBtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCksIHZl
YzIoMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAw
MSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQubWVkaXVtcF9mcmFn
bWVudC5tYXQ0eDInLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwg
dmVjMigwLCAwKSwgdmVjMigwLCAwKSksIG1hdDR4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41
KSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21w
bXVsdC5tZWRpdW1wX2ZyYWdtZW50Lm1hdDR4MycsIGlucHV0OiAnbWF0NHgzKHZlYzMoMC4yLCAw
LCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAsIDAuMiksIHZlYzMoMCwgMCwgMCkpLCBt
YXQ0eDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwg
dmVjMygwLCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4w
NDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11
bHQubWVkaXVtcF9mcmFnbWVudC5tYXQ0eDMnLCBpbnB1dDogJ21hdDR4Myh2ZWMzKDAuMiwgMCwg
MCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwgbWF0
NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSksIHZl
YzMoMCwgMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0
Lm1lZGl1bXBfZnJhZ21lbnQubWF0NCcsIGlucHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCks
IHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAu
MikpLCBtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAs
IDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lm1lZGl1bXBfZnJhZ21lbnQubWF0NCcsIGlu
cHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgw
LCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCBtYXQ0KHZlYzQoMC41LCAwLCAwLCAw
KSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwgMCksIHZlYzQoMCwgMCwgMCwg
MC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBt
dWx0LmhpZ2hwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigw
LCAwLjIpKSwgbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNv
bXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVj
MigwLCAwLjIpKSwgbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29t
cG11bHQuaGlnaHBfdmVydGV4Lm1hdDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAwLCAw
KSwgdmVjMygwLCAwLjIsIDApKSwgbWF0MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIs
IDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdo
cF92ZXJ0ZXgubWF0MngzJywgaW5wdXQ6ICdtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAs
IDAuMiwgMCkpLCBtYXQyeDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCkpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQuaGlnaHBfdmVydGV4Lm1hdDJ4
NCcsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDAp
KSwgbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJp
eGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ21hdDJ4NCh2ZWM0KDAuMiwg
MCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSksIG1hdDJ4NCh2ZWM0KDAuNSwgMCwgMCwgMCks
IHZlYzQoMCwgMC41LCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAu
MSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQzeDInLCBp
bnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksIG1h
dDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQuaGlnaHBfdmVydGV4Lm1hdDN4Mics
IGlucHV0OiAnbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApKSwg
bWF0M3gyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQzJywgaW5w
dXQ6ICdtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAsIDAu
MikpLCBtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAsIDAu
MikpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQz
JywgaW5wdXQ6ICdtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAs
IDAsIDAuMikpLCBtYXQzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAs
IDAsIDAuNSkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQz
eDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAw
KSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgbWF0M3g0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgw
LCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAw
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hw
X3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQo
MCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgbWF0M3g0KHZlYzQoMC41LCAwLCAw
LCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwgMCkpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0
LmhpZ2hwX3ZlcnRleC5tYXQ0eDInLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCksIHZlYzIo
MCwgMC4yKSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksIG1hdDR4Mih2ZWMyKDAuMiwgMCksIHZl
YzIoMCwgMC4yKSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0
LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdo
cF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAu
MiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkpLCBtYXQ0eDIodmVjMigwLjUsIDApLCB2ZWMyKDAs
IDAuNSksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF92ZXJ0ZXgu
bWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCks
IHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSksIG1hdDR4Myh2ZWMzKDAuMiwgMCwgMCks
IHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRy
aXhjb21wbXVsdC5oaWdocF92ZXJ0ZXgubWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIs
IDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSks
IG1hdDR4Myh2ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUp
LCB2ZWMzKDAsIDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xLCAwLjEsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF92ZXJ0ZXgubWF0NCcsIGlucHV0OiAn
bWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAw
LjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCBtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVj
NCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC4wNCwgMC4wNCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX3ZlcnRleC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQo
MC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZl
YzQoMCwgMCwgMCwgMC4yKSksIG1hdDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwg
MCwgMCksIHZlYzQoMCwgMCwgMC41LCAwKSwgdmVjNCgwLCAwLCAwLCAwLjUpKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
MSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0
LmhpZ2hwX2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAs
IDAuMikpLCBtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29t
cG11bHQuaGlnaHBfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuMiwgMCksIHZl
YzIoMCwgMC4yKSksIG1hdDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNv
bXBtdWx0LmhpZ2hwX2ZyYWdtZW50Lm1hdDJ4MycsIGlucHV0OiAnbWF0MngzKHZlYzMoMC4yLCAw
LCAwKSwgdmVjMygwLCAwLjIsIDApKSwgbWF0MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAw
LjIsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5o
aWdocF9mcmFnbWVudC5tYXQyeDMnLCBpbnB1dDogJ21hdDJ4Myh2ZWMzKDAuMiwgMCwgMCksIHZl
YzMoMCwgMC4yLCAwKSksIG1hdDJ4Myh2ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF9mcmFnbWVu
dC5tYXQyeDQnLCBpbnB1dDogJ21hdDJ4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4y
LCAwLCAwKSksIG1hdDJ4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5tYXRyaXhjb21wbXVsdC5oaWdocF9mcmFnbWVudC5tYXQyeDQnLCBpbnB1dDogJ21hdDJ4NCh2
ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSksIG1hdDJ4NCh2ZWM0KDAuNSwg
MCwgMCwgMCksIHZlYzQoMCwgMC41LCAwLCAwKSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX2ZyYWdtZW50
Lm1hdDN4MicsIGlucHV0OiAnbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMy
KDAsIDApKSwgbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF9mcmFn
bWVudC5tYXQzeDInLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwg
dmVjMigwLCAwKSksIG1hdDN4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSwgdmVjMigwLCAw
KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF9mcmFn
bWVudC5tYXQzJywgaW5wdXQ6ICdtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDAp
LCB2ZWMzKDAsIDAsIDAuMikpLCBtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDAp
LCB2ZWMzKDAsIDAsIDAuMikpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4w
NCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAu
MDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAw
LjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0Lmhp
Z2hwX2ZyYWdtZW50Lm1hdDMnLCBpbnB1dDogJ21hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAs
IDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSksIG1hdDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAs
IDAuNSwgMCksIHZlYzMoMCwgMCwgMC41KSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
MSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4x
LCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0cml4Y29tcG11bHQu
aGlnaHBfZnJhZ21lbnQubWF0M3g0JywgaW5wdXQ6ICdtYXQzeDQodmVjNCgwLjIsIDAsIDAsIDAp
LCB2ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSksIG1hdDN4NCh2ZWM0KDAu
MiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0
LCAwLjA0LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5t
YXRyaXhjb21wbXVsdC5oaWdocF9mcmFnbWVudC5tYXQzeDQnLCBpbnB1dDogJ21hdDN4NCh2ZWM0
KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwg
bWF0M3g0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAs
IDAuNSwgMCkpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX2ZyYWdtZW50Lm1hdDR4MicsIGlucHV0OiAnbWF0
NHgyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApLCB2ZWMyKDAsIDApKSwg
bWF0NHgyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApLCB2ZWMyKDAsIDAp
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLm1hdHJpeGNvbXBtdWx0LmhpZ2hwX2ZyYWdtZW50Lm1hdDR4MicsIGlucHV0OiAnbWF0NHgy
KHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAsIDApLCB2ZWMyKDAsIDApKSwgbWF0
NHgyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApLCB2ZWMyKDAsIDApKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ubWF0
cml4Y29tcG11bHQuaGlnaHBfZnJhZ21lbnQubWF0NHgzJywgaW5wdXQ6ICdtYXQ0eDModmVjMygw
LjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAw
KSksIG1hdDR4Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAw
LjIpLCB2ZWMzKDAsIDAsIDApKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAu
MDQsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAw
LjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wNCwg
MC4wNCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF9mcmFnbWVudC5tYXQ0
eDMnLCBpbnB1dDogJ21hdDR4Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVj
MygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwgbWF0NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVj
MygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSksIHZlYzMoMCwgMCwgMCkpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm1hdHJpeGNvbXBtdWx0
LmhpZ2hwX2ZyYWdtZW50Lm1hdDQnLCBpbnB1dDogJ21hdDQodmVjNCgwLjIsIDAsIDAsIDApLCB2
ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSwgdmVjNCgwLCAwLCAwLCAwLjIp
KSwgbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgwLCAw
LCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4wNCwgMC4wNF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5tYXRyaXhjb21wbXVsdC5oaWdocF9m
cmFnbWVudC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAw
LjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksIG1hdDQo
dmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwgMCwgMCksIHZlYzQoMCwgMCwgMC41LCAw
KSwgdmVjNCgwLCAwLCAwLCAwLjUpKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwg
MC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX3ZlcnRleC5tYXQyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwg
MC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF92ZXJ0ZXgubWF0MicsIGlu
cHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFs
c2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDJ4
MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAu
MDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3
NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4
Lm1hdDJ4MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkz
NzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1
NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3Bf
dmVydGV4Lm1hdDJ4NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWMyKDAu
MiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAz
MTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwg
MC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0
Lmxvd3BfdmVydGV4Lm1hdDJ4NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAx
NTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2Mywg
ZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNl
LCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4w
OTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJw
cm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzMo
MC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUs
IGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
b3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1
LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYz
LCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAw
LjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4w
MzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUs
IDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVy
dGV4Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAu
NSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2Us
IDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAx
NTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDN4NCcsIGlucHV0OiAndmVjNCgw
LjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwg
ZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNl
LCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4w
MzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUs
IDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ3ZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMs
IGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxz
ZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAu
MDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1
LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICd2ZWMy
KDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFs
c2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAw
LjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEy
NSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6
ICd2ZWMyKDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2
MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZh
bHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwg
MC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF92ZXJ0ZXgubWF0NHgzJywg
aW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMx
MjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAw
LjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4
NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfdmVydGV4Lm1hdDR4Mycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAx
NTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2Mywg
ZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNl
LCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX3ZlcnRleC5tYXQ0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwg
MC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMx
MjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAw
LjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4
NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBm
YWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAz
MTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX3ZlcnRleC5tYXQ0JywgaW5wdXQ6
ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3
NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAu
MTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2
MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZh
bHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwg
MC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkz
NzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ3Zl
YzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAz
MTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX2ZyYWdtZW50Lm1hdDInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNl
LCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX2ZyYWdtZW50Lm1hdDJ4
MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAu
MDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3
NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmxvd3BfZnJhZ21l
bnQubWF0MngzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4w
OTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUs
IDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2M119KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93
cF9mcmFnbWVudC5tYXQyeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
MigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3
NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZh
bHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwg
MC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMx
MjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJv
ZHVjdC5sb3dwX2ZyYWdtZW50Lm1hdDJ4NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUs
IDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEw
MTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMs
IGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxz
ZSwgMC4wOTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
b3V0ZXJwcm9kdWN0Lmxvd3BfZnJhZ21lbnQubWF0M3gyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMx
MjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAw
LjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4
NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ3ZlYzIo
MC4yLCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAu
MDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1
LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX2ZyYWdtZW50Lm1hdDMnLCBpbnB1dDog
J3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1
LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFs
c2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAw
LjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEy
NSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0Lmxvd3BfZnJhZ21lbnQubWF0MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAu
MTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2
MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZh
bHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwg
MC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF9mcmFnbWVudC5tYXQzeDQn
LCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4w
MzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUs
IDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUs
IGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF9mcmFnbWVudC5tYXQz
eDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwg
MC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkz
NzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAw
LjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1
NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBm
YWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2M119KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubG93cF9mcmFnbWVudC5t
YXQ0eDInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAu
MDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1
LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4w
NDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5sb3dwX2Zy
YWdtZW50Lm1hdDR4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBm
YWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2Us
IDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0
Lmxvd3BfZnJhZ21lbnQubWF0NHgzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzMTI1
LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4w
NDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1
LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFs
c2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAw
LjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEy
NSwgMC4wNDY4NzVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0Lmxvd3BfZnJhZ21lbnQubWF0NHgzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5
Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwg
MC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAx
NTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2Mywg
ZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNl
LCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4w
OTM3NSwgMC4xMDE1NjNdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJw
cm9kdWN0Lmxvd3BfZnJhZ21lbnQubWF0NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4w
MzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUs
IDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0
Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUs
IGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1LCBmYWxz
ZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1LCAwLjA0Njg3NSwgZmFsc2UsIDAu
MDMxMjUsIDAuMDQ2ODc1LCBmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzUsIGZhbHNlLCAwLjAzMTI1
LCAwLjA0Njg3NV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1
Y3QubG93cF9mcmFnbWVudC5tYXQ0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiks
IHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1
LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4x
MDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYz
LCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFs
c2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3NSwgMC4xMDE1NjMsIGZhbHNlLCAw
LjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAuMTAxNTYzLCBmYWxzZSwgMC4wOTM3
NSwgMC4xMDE1NjMsIGZhbHNlLCAwLjA5Mzc1LCAwLjEwMTU2MywgZmFsc2UsIDAuMDkzNzUsIDAu
MTAxNTYzXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5t
ZWRpdW1wX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxz
ZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNl
LCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm91dGVycHJvZHVjdC5tZWRpdW1wX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1Niwg
MC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1wX3ZlcnRleC5tYXQyeDMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEw
MDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAw
MSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1w
X3ZlcnRleC5tYXQyeDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzIoMC41LCAw
LjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFs
c2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxz
ZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNl
LCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm91dGVycHJvZHVjdC5tZWRpdW1wX3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2Us
IDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwg
MC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAw
LjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF92ZXJ0ZXgubWF0
Mng0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJw
cm9kdWN0Lm1lZGl1bXBfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZl
YzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAu
MDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfdmVydGV4Lm1hdDN4MicsIGlucHV0
OiAndmVjMigwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5
OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4
LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBf
dmVydGV4Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIs
IDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBm
YWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZh
bHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFs
c2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxz
ZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfdmVydGV4
Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwg
MC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfdmVydGV4Lm1hdDN4
NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2Us
IDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwg
MC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAw
LjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAu
MDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVy
cHJvZHVjdC5tZWRpdW1wX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAu
MiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwg
MC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF92ZXJ0ZXgubWF0NHgy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0Lm1lZGl1bXBfdmVydGV4Lm1hdDR4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzQo
MC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1
NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1Niwg
MC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1wX3ZlcnRleC5tYXQ0eDMnLCBpbnB1
dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAu
MDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3Qu
bWVkaXVtcF92ZXJ0ZXgubWF0NHgzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1
NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1Niwg
MC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAw
LjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfdmVydGV4Lm1hdDQnLCBpbnB1dDog
J3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAu
MDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3Qu
bWVkaXVtcF92ZXJ0ZXgubWF0NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2
ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5
NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1
NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1Niwg
MC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1wX2ZyYWdtZW50Lm1hdDInLCBpbnB1
dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBm
YWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfZnJh
Z21lbnQubWF0MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5
NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnBy
b2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQyeDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAu
MiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwg
MC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAw
LjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1wX2ZyYWdtZW50Lm1hdDJ4MycsIGlu
cHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEw
MDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAw
MDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAw
OThdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1
bXBfZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZl
YzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzk5NzgsIDAuMDQw
MTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAx
MDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEw
MDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAw
MSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICd2
ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzIoMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAw
OTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5
OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4
LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOThd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBf
ZnJhZ21lbnQubWF0M3gyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwg
MC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZh
bHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFs
c2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxz
ZSwgMC4wMzk5NzgsIDAuMDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5vdXRlcnByb2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ3ZlYzIoMC4y
LCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5tZWRpdW1wX2ZyYWdtZW50Lm1h
dDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lm1lZGl1bXBfZnJhZ21lbnQubWF0Mycs
IGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1
NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQzeDQnLCBp
bnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjIsIDAuMiwgMC4yKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1
Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQzeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwg
MC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5
NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQ0eDIn
LCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1
Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQ0eDInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIpLCB2ZWM0
KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1
NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2
LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYs
IDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQ0eDMnLCBp
bnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5
NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3
OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4
LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5Nzgs
IDAuMDQwMTAwMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1
Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQ0eDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiks
IHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4w
OTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5
OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5
OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5
NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3
NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QubWVkaXVtcF9mcmFnbWVudC5tYXQ0Jywg
aW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIsIDAuMiwgMC4y
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNl
LCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2Us
IDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwg
MC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAw
LjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAu
MDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4w
Mzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5OTc4LCAwLjA0MDEwMDEsIGZhbHNlLCAwLjAz
OTk3OCwgMC4wNDAxMDAxLCBmYWxzZSwgMC4wMzk5NzgsIDAuMDQwMTAwMSwgZmFsc2UsIDAuMDM5
OTc4LCAwLjA0MDEwMDFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJw
cm9kdWN0Lm1lZGl1bXBfZnJhZ21lbnQubWF0NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4y
LCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFs
c2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxz
ZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNl
LCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2Us
IDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwg
MC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAuMDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAw
LjA5OTk3NTYsIDAuMTAwMDk4LCBmYWxzZSwgMC4wOTk5NzU2LCAwLjEwMDA5OCwgZmFsc2UsIDAu
MDk5OTc1NiwgMC4xMDAwOTgsIGZhbHNlLCAwLjA5OTk3NTYsIDAuMTAwMDk4XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0Mics
IGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzIoMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAw
LjA0LCBmYWxzZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5vdXRlcnByb2R1Y3QuaGlnaHBfdmVydGV4Lm1hdDInLCBpbnB1dDogJ3ZlYzIoMC4yLCAwLjIp
LCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0
MngzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxz
ZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxz
ZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnBy
b2R1Y3QuaGlnaHBfdmVydGV4Lm1hdDJ4MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjMigwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFs
c2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAu
MSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ub3V0ZXJwcm9kdWN0LmhpZ2hwX3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAw
LjIsIDAuMiwgMC4yKSwgdmVjMigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QuaGlnaHBfdmVydGV4Lm1hdDJ4NCcsIGlucHV0OiAndmVj
NCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFs
c2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAu
MSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ub3V0ZXJwcm9kdWN0LmhpZ2hwX3ZlcnRleC5tYXQzeDInLCBpbnB1dDogJ3ZlYzIoMC4yLCAw
LjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0M3gy
JywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMygwLjUsIDAuNSwgMC41KSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEs
IDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QuaGlnaHBfdmVy
dGV4Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAu
MiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwg
MC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwg
MC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwg
MC4wNCwgZmFsc2UsIDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24ub3V0ZXJwcm9kdWN0LmhpZ2hwX3ZlcnRleC5tYXQzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4y
LCAwLjIpLCB2ZWMzKDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZh
bHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0M3g0JywgaW5wdXQ6ICd2ZWM0
KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQs
IDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQs
IDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQs
IDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQs
IDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmhp
Z2hwX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVj
MygwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZh
bHNlLCAwLjEsIDAuMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnBy
b2R1Y3QuaGlnaHBfdmVydGV4Lm1hdDR4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzQo
MC4yLCAwLjIsIDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAu
MDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAu
MDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAu
MDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
Lm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4y
KSwgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZh
bHNlLCAwLjEsIDAuMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnBy
b2R1Y3QuaGlnaHBfdmVydGV4Lm1hdDR4MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF92ZXJ0ZXgubWF0NHgz
JywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuNSwgMC41LCAwLjUsIDAuNSks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBm
YWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0LmhpZ2hwX3ZlcnRl
eC5tYXQ0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC4yLCAwLjIs
IDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNl
LCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDRdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0LmhpZ2hwX3ZlcnRleC5t
YXQ0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAu
NSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4x
LCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEs
IGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNl
LCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEs
IDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwg
ZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVy
cHJvZHVjdC5oaWdocF9mcmFnbWVudC5tYXQyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVj
MigwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxz
ZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF9mcmFnbWVu
dC5tYXQyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjMigwLjUsIDAuNSksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4x
LCAwLjEsIGZhbHNlLCAwLjEsIDAuMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5vdXRlcnByb2R1Y3QuaGlnaHBfZnJhZ21lbnQubWF0MngzJywgaW5wdXQ6ICd2ZWMzKDAuMiwg
MC4yLCAwLjIpLCB2ZWMyKDAuMiwgMC4yKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAu
MDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QuaGlnaHBfZnJhZ21lbnQubWF0
MngzJywgaW5wdXQ6ICd2ZWMzKDAuMiwgMC4yLCAwLjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAw
LjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAu
MV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QuaGlnaHBf
ZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzIo
MC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDJ4NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAw
LjIpLCB2ZWMyKDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4x
LCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxz
ZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4x
LCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0Lmhp
Z2hwX2ZyYWdtZW50Lm1hdDN4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiksIHZlYzMoMC4yLCAw
LjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwg
MC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwg
MC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24ub3V0ZXJwcm9kdWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDN4MicsIGlucHV0OiAndmVj
MigwLjIsIDAuMiksIHZlYzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAw
LjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9kdWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDMnLCBp
bnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzMoMC4yLCAwLjIsIDAuMiksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwgZmFsc2Us
IDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZl
YzMoMC41LCAwLjUsIDAuNSksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjEsIDAuMSwg
ZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2Us
IDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwg
MC4xLCBmYWxzZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24u
b3V0ZXJwcm9kdWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDN4NCcsIGlucHV0OiAndmVjNCgwLjIsIDAu
MiwgMC4yLCAwLjIpLCB2ZWMzKDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF9mcmFn
bWVudC5tYXQzeDQnLCBpbnB1dDogJ3ZlYzQoMC4yLCAwLjIsIDAuMiwgMC4yKSwgdmVjMygwLjUs
IDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwg
MC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAw
LjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZh
bHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAw
LjEsIDAuMV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3Qu
aGlnaHBfZnJhZ21lbnQubWF0NHgyJywgaW5wdXQ6ICd2ZWMyKDAuMiwgMC4yKSwgdmVjNCgwLjIs
IDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwgMC4wNCwg
ZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwg
ZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4wNCwgMC4wNCwg
ZmFsc2UsIDAuMDQsIDAuMDRdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0
ZXJwcm9kdWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDR4MicsIGlucHV0OiAndmVjMigwLjIsIDAuMiks
IHZlYzQoMC41LCAwLjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
MSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4x
LCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxz
ZSwgMC4xLCAwLjFdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24ub3V0ZXJwcm9k
dWN0LmhpZ2hwX2ZyYWdtZW50Lm1hdDR4MycsIGlucHV0OiAndmVjMygwLjIsIDAuMiwgMC4yKSwg
dmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBmYWxzZSwgMC4w
NCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF9mcmFnbWVudC5tYXQ0
eDMnLCBpbnB1dDogJ3ZlYzMoMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAwLjUsIDAuNSwgMC41
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEs
IGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNl
LCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEs
IDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5vdXRlcnByb2R1Y3QuaGlnaHBfZnJh
Z21lbnQubWF0NCcsIGlucHV0OiAndmVjNCgwLjIsIDAuMiwgMC4yLCAwLjIpLCB2ZWM0KDAuMiwg
MC4yLCAwLjIsIDAuMiksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0LCBm
YWxzZSwgMC4wNCwgMC4wNCwgZmFsc2UsIDAuMDQsIDAuMDQsIGZhbHNlLCAwLjA0LCAwLjA0XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLm91dGVycHJvZHVjdC5oaWdocF9mcmFn
bWVudC5tYXQ0JywgaW5wdXQ6ICd2ZWM0KDAuMiwgMC4yLCAwLjIsIDAuMiksIHZlYzQoMC41LCAw
LjUsIDAuNSwgMC41KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMSwgMC4xLCBmYWxz
ZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4x
LCAwLjEsIGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEs
IGZhbHNlLCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNl
LCAwLjEsIDAuMSwgZmFsc2UsIDAuMSwgMC4xLCBmYWxzZSwgMC4xLCAwLjEsIGZhbHNlLCAwLjEs
IDAuMSwgZmFsc2UsIDAuMSwgMC4xXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwg
dmVjMigwLCAwLjIpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywg
MC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92
ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5tYXQyeDMnLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAu
MiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92ZXJ0ZXgubWF0Mngz
JywgaW5wdXQ6ICdtYXQzeDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSksIHZlYzIoMCwgMCkp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5t
YXQyeDQnLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigw
LCAwKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUz
MTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX3Zl
cnRleC5tYXQyeDQnLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSwg
dmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92ZXJ0ZXgubWF0M3gyJywg
aW5wdXQ6ICdtYXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCkpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxv
d3BfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAnbWF0MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygw
LCAwLjUsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93
cF92ZXJ0ZXgubWF0MycsIGlucHV0OiAnbWF0Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4y
LCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxvd3BfdmVydGV4Lm1hdDMnLCBpbnB1dDogJ21hdDMo
dmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCksIHZlYzMoMCwgMCwgMC41KSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ21hdDR4
Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMz
KDAsIDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4y
MDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxvd3Bf
dmVydGV4Lm1hdDN4NCcsIGlucHV0OiAnbWF0NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAw
LjUsIDApLCB2ZWMzKDAsIDAsIDAuNSksIHZlYzMoMCwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92
ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0KDAs
IDAuMiwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAw
LjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAz
MTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92ZXJ0ZXgu
bWF0NHgyJywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwg
MCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udHJhbnNwb3NlLmxvd3BfdmVydGV4Lm1hdDR4MycsIGlucHV0OiAnbWF0M3g0KHZl
YzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCkp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIw
MzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1
MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF92ZXJ0ZXgubWF0
NHgzJywgaW5wdXQ6ICdtYXQzeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwgMCwg
MCksIHZlYzQoMCwgMCwgMC41LCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5tYXQ0JywgaW5w
dXQ6ICdtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAs
IDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5
NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX3ZlcnRleC5tYXQ0JywgaW5wdXQ6ICdtYXQ0
KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwg
MCksIHZlYzQoMCwgMCwgMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxvd3BfZnJhZ21lbnQubWF0MicsIGlu
cHV0OiAnbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udHJhbnNwb3NlLmxvd3BfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMy
KDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1h
dDJ4MycsIGlucHV0OiAnbWF0M3gyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpLCB2ZWMyKDAs
IDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5NTMxMywg
MC4yMDMxMjUsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9u
LnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDJ4MycsIGlucHV0OiAnbWF0M3gyKHZlYzIoMC41
LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3By
ZWNpc2lvbi50cmFuc3Bvc2UubG93cF9mcmFnbWVudC5tYXQyeDQnLCBpbnB1dDogJ21hdDR4Mih2
ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAo
KSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEz
LCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDJ4NCcsIGlucHV0OiAn
bWF0NHgyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApLCB2ZWMyKDAsIDAp
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDN4MicsIGlucHV0OiAnbWF0MngzKHZlYzMo
MC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1
c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDN4Mics
IGlucHV0OiAnbWF0MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApKSwgKCksICgp
LCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF9mcmFnbWVudC5tYXQzJywg
aW5wdXQ6ICdtYXQzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAs
IDAuMikpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEy
NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEz
LCAwLjIwMzEyNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMTk1MzEzLCAwLjIwMzEyNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50
cmFuc3Bvc2UubG93cF9mcmFnbWVudC5tYXQzJywgaW5wdXQ6ICdtYXQzKHZlYzMoMC41LCAwLCAw
KSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSkpLCAoKSwgKCksICgpJywgcmVmZXJl
bmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50
cmFuc3Bvc2UubG93cF9mcmFnbWVudC5tYXQzeDQnLCBpbnB1dDogJ21hdDR4Myh2ZWMzKDAuMiwg
MCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpLCB2ZWMzKDAsIDAsIDApKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4x
OTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2UsIDAsIDBdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxvd3BfZnJhZ21lbnQubWF0
M3g0JywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCksIHZl
YzMoMCwgMCwgMC41KSwgdmVjMygwLCAwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1h
dDR4MicsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAs
IDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5NTMxMywgMC4yMDMxMjUs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmxvd3BfZnJhZ21lbnQubWF0NHgy
JywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwgMCwgMCkp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNp
b24udHJhbnNwb3NlLmxvd3BfZnJhZ21lbnQubWF0NHgzJywgaW5wdXQ6ICdtYXQzeDQodmVjNCgw
LjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwgMCwgMCksIHZlYzQoMCwgMCwgMC4yLCAwKSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMs
IDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDR4
MycsIGlucHV0OiAnbWF0M3g0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDAp
LCB2ZWM0KDAsIDAsIDAuNSwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41
LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubG93cF9mcmFnbWVudC5tYXQ0JywgaW5w
dXQ6ICdtYXQ0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAs
IDAsIDAuMiwgMCksIHZlYzQoMCwgMCwgMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6
IFtmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk1MzEzLCAwLjIwMzEyNSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5
NTMxMywgMC4yMDMxMjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4xOTUzMTMsIDAuMjAzMTI1XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5sb3dwX2ZyYWdtZW50Lm1hdDQnLCBpbnB1dDogJ21h
dDQodmVjNCgwLjUsIDAsIDAsIDApLCB2ZWM0KDAsIDAuNSwgMCwgMCksIHZlYzQoMCwgMCwgMC41
LCAwKSwgdmVjNCgwLCAwLCAwLCAwLjUpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5w
dXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0ZXgubWF0Mics
IGlucHV0OiAnbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1bXBfdmVydGV4Lm1hdDInLCBpbnB1dDogJ21hdDIo
dmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFs
c2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0
ZXgubWF0MngzJywgaW5wdXQ6ICdtYXQzeDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZl
YzIoMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIw
MDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5
OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVj
aXNpb24udHJhbnNwb3NlLm1lZGl1bXBfdmVydGV4Lm1hdDJ4MycsIGlucHV0OiAnbWF0M3gyKHZl
YzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0ZXgubWF0Mng0JywgaW5wdXQ6ICdt
YXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0ZXgubWF0Mng0Jywg
aW5wdXQ6ICdtYXQ0eDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSksIHZlYzIoMCwgMCksIHZl
YzIoMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1bXBfdmVydGV4Lm1hdDN4MicsIGlucHV0OiAnbWF0
MngzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX3ZlcnRl
eC5tYXQzeDInLCBpbnB1dDogJ21hdDJ4Myh2ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAw
KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1bXBfdmVy
dGV4Lm1hdDMnLCBpbnB1dDogJ21hdDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCks
IHZlYzMoMCwgMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5
NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX3ZlcnRleC5tYXQzJywgaW5wdXQ6ICdtYXQzKHZl
YzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSkpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0ZXgubWF0M3g0JywgaW5wdXQ6ICdtYXQ0
eDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVj
MygwLCAwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAu
MjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRp
dW1wX3ZlcnRleC5tYXQzeDQnLCBpbnB1dDogJ21hdDR4Myh2ZWMzKDAuNSwgMCwgMCksIHZlYzMo
MCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpLCB2ZWMzKDAsIDAsIDApKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1l
ZGl1bXBfdmVydGV4Lm1hdDR4MicsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwg
dmVjNCgwLCAwLjIsIDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5
OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5OTUx
LCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1
bXBfdmVydGV4Lm1hdDR4MicsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVj
NCgwLCAwLjUsIDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAu
NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rl
c3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX3ZlcnRleC5tYXQ0eDMnLCBpbnB1
dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgw
LCAwLCAwLjIsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwg
MC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1l
ZGl1bXBfdmVydGV4Lm1hdDR4MycsIGlucHV0OiAnbWF0M3g0KHZlYzQoMC41LCAwLCAwLCAwKSwg
dmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAuNSwgMCkpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVt
cF92ZXJ0ZXgubWF0NCcsIGlucHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwg
MC4yLCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1
MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19
KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF92ZXJ0
ZXgubWF0NCcsIGlucHV0OiAnbWF0NCh2ZWM0KDAuNSwgMCwgMCwgMCksIHZlYzQoMCwgMC41LCAw
LCAwKSwgdmVjNCgwLCAwLCAwLjUsIDApLCB2ZWM0KDAsIDAsIDAsIDAuNSkpLCAoKSwgKCksICgp
JywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5t
ZWRpdW1wX2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAs
IDAuMikpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5
NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1XX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX2ZyYWdt
ZW50Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi50cmFuc3Bvc2UubWVkaXVtcF9mcmFnbWVudC5tYXQyeDMnLCBpbnB1dDogJ21hdDN4Mih2ZWMy
KDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF9mcmFnbWVu
dC5tYXQyeDMnLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSwgdmVj
MigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1
bXBfZnJhZ21lbnQubWF0Mng0JywgaW5wdXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAs
IDAuMiksIHZlYzIoMCwgMCksIHZlYzIoMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFu
c3Bvc2UubWVkaXVtcF9mcmFnbWVudC5tYXQyeDQnLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuNSwg
MCksIHZlYzIoMCwgMC41KSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCBy
ZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVk
aXVtcF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ21hdDJ4Myh2ZWMzKDAuMiwgMCwgMCksIHZl
YzMoMCwgMC4yLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEs
IDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4y
MDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTog
J3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ21h
dDJ4Myh2ZWMzKDAuNSwgMCwgMCksIHZlYzMoMCwgMC41LCAwKSksICgpLCAoKSwgKCknLCByZWZl
cmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1bXBfZnJhZ21lbnQubWF0MycsIGlucHV0OiAn
bWF0Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAx
OTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1
MSwgMC4yMDAxOTVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3Nl
Lm1lZGl1bXBfZnJhZ21lbnQubWF0MycsIGlucHV0OiAnbWF0Myh2ZWMzKDAuNSwgMCwgMCksIHZl
YzMoMCwgMC41LCAwKSwgdmVjMygwLCAwLCAwLjUpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTog
W2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNw
b3NlLm1lZGl1bXBfZnJhZ21lbnQubWF0M3g0JywgaW5wdXQ6ICdtYXQ0eDModmVjMygwLjIsIDAs
IDApLCB2ZWMzKDAsIDAuMiwgMCksIHZlYzMoMCwgMCwgMC4yKSwgdmVjMygwLCAwLCAwKSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5
OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUsIGZhbHNlLCAwLCAwXX0pOworcmVm
LnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX2ZyYWdtZW50Lm1h
dDN4NCcsIGlucHV0OiAnbWF0NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2
ZWMzKDAsIDAsIDAuNSksIHZlYzMoMCwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF9mcmFnbWVu
dC5tYXQ0eDInLCBpbnB1dDogJ21hdDJ4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4y
LCAwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4xOTk5NTEsIDAuMjAw
MTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwgMC4yMDAxOTUs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX2ZyYWdtZW50
Lm1hdDR4MicsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUs
IDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnRyYW5zcG9zZS5tZWRpdW1wX2ZyYWdtZW50Lm1hdDR4MycsIGlucHV0OiAnbWF0
M3g0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAu
MiwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5
NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5OTUx
LCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF9m
cmFnbWVudC5tYXQ0eDMnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuNSwgMCwgMCwgMCksIHZlYzQo
MCwgMC41LCAwLCAwKSwgdmVjNCgwLCAwLCAwLjUsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5j
ZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLm1lZGl1bXBfZnJh
Z21lbnQubWF0NCcsIGlucHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4y
LCAwLCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NSwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjE5OTk1MSwg
MC4yMDAxOTUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMC4xOTk5NTEsIDAuMjAwMTk1LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMTk5OTUxLCAwLjIwMDE5NV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UubWVkaXVtcF9mcmFnbWVu
dC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAs
IDApLCB2ZWM0KDAsIDAsIDAuNSwgMCksIHZlYzQoMCwgMCwgMCwgMC41KSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhp
Z2hwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIp
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIo
MC41LCAwKSwgdmVjMigwLCAwLjUpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAw
LjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjVdfSk7City
ZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQy
eDMnLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAw
KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDBd
fSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRl
eC5tYXQyeDMnLCBpbnB1dDogJ21hdDN4Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSwgdmVj
MigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2Us
IDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hw
X3ZlcnRleC5tYXQyeDQnLCBpbnB1dDogJ21hdDR4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4y
KSwgdmVjMigwLCAwKSwgdmVjMigwLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3Jl
Zi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfdmVydGV4Lm1hdDJ4
NCcsIGlucHV0OiAnbWF0NHgyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDAp
LCB2ZWMyKDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF92ZXJ0ZXgubWF0M3gyJywgaW5wdXQ6ICdt
YXQyeDModmVjMygwLjIsIDAsIDApLCB2ZWMzKDAsIDAuMiwgMCkpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF92ZXJ0ZXgubWF0M3gyJywgaW5wdXQ6ICdt
YXQyeDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCkpLCAoKSwgKCksICgpJywgcmVm
ZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF92ZXJ0ZXgubWF0MycsIGlucHV0OiAnbWF0
Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQzJywgaW5wdXQ6ICdtYXQz
KHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSkpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfdmVydGV4Lm1hdDN4NCcsIGlucHV0OiAnbWF0
NHgzKHZlYzMoMC4yLCAwLCAwKSwgdmVjMygwLCAwLjIsIDApLCB2ZWMzKDAsIDAsIDAuMiksIHZl
YzMoMCwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfdmVydGV4Lm1hdDN4NCcsIGlucHV0OiAnbWF0
NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAuNSksIHZl
YzMoMCwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwgMC41LCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfdmVydGV4Lm1hdDR4MicsIGlucHV0OiAnbWF0
Mng0KHZlYzQoMC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApKSwgKCksICgpLCAoKScs
IHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5o
aWdocF92ZXJ0ZXgubWF0NHgyJywgaW5wdXQ6ICdtYXQyeDQodmVjNCgwLjUsIDAsIDAsIDApLCB2
ZWM0KDAsIDAuNSwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwg
MC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAs
IDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQ0eDMnLCBpbnB1
dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgw
LCAwLCAwLjIsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjIsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQ0eDMnLCBpbnB1dDogJ21h
dDN4NCh2ZWM0KDAuNSwgMCwgMCwgMCksIHZlYzQoMCwgMC41LCAwLCAwKSwgdmVjNCgwLCAwLCAw
LjUsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAw
LCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdw
cmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQo
MC4yLCAwLCAwLCAwKSwgdmVjNCgwLCAwLjIsIDAsIDApLCB2ZWM0KDAsIDAsIDAuMiwgMCksIHZl
YzQoMCwgMCwgMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAw
LjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX3ZlcnRleC5tYXQ0JywgaW5wdXQ6ICdt
YXQ0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApLCB2ZWM0KDAsIDAsIDAu
NSwgMCksIHZlYzQoMCwgMCwgMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxz
ZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjVdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDIn
LCBpbnB1dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMikpLCAoKSwgKCksICgpJywg
cmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjIsIDAuMl19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bv
c2UuaGlnaHBfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIo
MCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF9mcmFnbWVudC5tYXQyeDMnLCBpbnB1dDog
J21hdDN4Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSwgdmVjMigwLCAwKSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwg
MCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVz
aCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDJ4Mycs
IGlucHV0OiAnbWF0M3gyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApKSwg
KCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfZnJhZ21lbnQu
bWF0Mng0JywgaW5wdXQ6ICdtYXQ0eDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMiksIHZlYzIo
MCwgMCksIHZlYzIoMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwg
MC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDJ4NCcsIGlu
cHV0OiAnbWF0NHgyKHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpLCB2ZWMyKDAsIDApLCB2ZWMy
KDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAn
cHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF9mcmFnbWVudC5tYXQzeDInLCBpbnB1dDogJ21hdDJ4
Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAu
MiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6
ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDN4MicsIGlucHV0OiAnbWF0
MngzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApKSwgKCksICgpLCAoKScsIHJlZmVy
ZW5jZTogW2ZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfZnJhZ21lbnQubWF0MycsIGlucHV0OiAnbWF0
Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIpKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC4yLCAwLjJdfSk7CityZWYucHVzaCh7dGVzdE5h
bWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDMnLCBpbnB1dDogJ21h
dDModmVjMygwLjUsIDAsIDApLCB2ZWMzKDAsIDAuNSwgMCksIHZlYzMoMCwgMCwgMC41KSksICgp
LCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxz
ZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNl
LCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF9mcmFnbWVudC5tYXQzeDQnLCBpbnB1dDog
J21hdDR4Myh2ZWMzKDAuMiwgMCwgMCksIHZlYzMoMCwgMC4yLCAwKSwgdmVjMygwLCAwLCAwLjIp
LCB2ZWMzKDAsIDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjIsIDAu
MiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZh
bHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFs
c2UsIDAsIDAsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVz
dE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDN4NCcsIGlucHV0
OiAnbWF0NHgzKHZlYzMoMC41LCAwLCAwKSwgdmVjMygwLCAwLjUsIDApLCB2ZWMzKDAsIDAsIDAu
NSksIHZlYzMoMCwgMCwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuNSwg
MC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAuNSwgMC41LCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNoKHt0
ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfZnJhZ21lbnQubWF0NHgyJywgaW5w
dXQ6ICdtYXQyeDQodmVjNCgwLjIsIDAsIDAsIDApLCB2ZWM0KDAsIDAuMiwgMCwgMCkpLCAoKSwg
KCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAsIDAsIGZhbHNlLCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJh
bnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDR4MicsIGlucHV0OiAnbWF0Mng0KHZlYzQoMC41LCAw
LCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAwLjUsIDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwXX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF9mcmFnbWVudC5t
YXQ0eDMnLCBpbnB1dDogJ21hdDN4NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAw
LCAwKSwgdmVjNCgwLCAwLCAwLjIsIDApKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNl
LCAwLjIsIDAuMiwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2Us
IDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC4yLCAwLjIsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDBdfSk7CityZWYu
cHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24udHJhbnNwb3NlLmhpZ2hwX2ZyYWdtZW50Lm1hdDR4
MycsIGlucHV0OiAnbWF0M3g0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAsIDAp
LCB2ZWM0KDAsIDAsIDAuNSwgMCkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAu
NSwgMC41LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41
LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLjUs
IDAuNSwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMF19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi50cmFuc3Bvc2UuaGlnaHBfZnJhZ21lbnQubWF0NCcsIGlu
cHV0OiAnbWF0NCh2ZWM0KDAuMiwgMCwgMCwgMCksIHZlYzQoMCwgMC4yLCAwLCAwKSwgdmVjNCgw
LCAwLCAwLjIsIDApLCB2ZWM0KDAsIDAsIDAsIDAuMikpLCAoKSwgKCksICgpJywgcmVmZXJlbmNl
OiBbZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAw
LCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAs
IGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAuMiwgMC4yXX0p
OworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLnRyYW5zcG9zZS5oaWdocF9mcmFnbWVu
dC5tYXQ0JywgaW5wdXQ6ICdtYXQ0KHZlYzQoMC41LCAwLCAwLCAwKSwgdmVjNCgwLCAwLjUsIDAs
IDApLCB2ZWM0KDAsIDAsIDAuNSwgMCksIHZlYzQoMCwgMCwgMCwgMC41KSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwg
ZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZhbHNlLCAwLCAwLCBm
YWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwgMC41LCAwLjUsIGZh
bHNlLCAwLCAwLCBmYWxzZSwgMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlLCAwLCAwLCBmYWxzZSwg
MC41LCAwLjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGV0ZXJtaW5hbnQu
bG93cF92ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4y
KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wMzEyNSwgMC4wNDY4NzVdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uZGV0ZXJtaW5hbnQubG93cF92ZXJ0ZXgu
bWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwg
KCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yNSwgMC4yNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFt
ZTogJ3ByZWNpc2lvbi5kZXRlcm1pbmFudC5sb3dwX2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ21h
dDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMikpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBb
ZmFsc2UsIDAuMDMxMjUsIDAuMDQ2ODc1XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmRldGVybWluYW50Lmxvd3BfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAu
NSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4y
NSwgMC4yNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZXRlcm1pbmFudC5t
ZWRpdW1wX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAw
LjIpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAx
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmRldGVybWluYW50Lm1lZGl1bXBf
dmVydGV4Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAo
KSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDAuMjUsIDAuMjVdfSk7CityZWYucHVzaCh7
dGVzdE5hbWU6ICdwcmVjaXNpb24uZGV0ZXJtaW5hbnQubWVkaXVtcF9mcmFnbWVudC5tYXQyJywg
aW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjAzOTk3OCwgMC4wNDAxMDAxXX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmRldGVybWluYW50Lm1lZGl1bXBfZnJhZ21lbnQubWF0MicsIGlucHV0
OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVu
Y2U6IFtmYWxzZSwgMC4yNSwgMC4yNV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lv
bi5kZXRlcm1pbmFudC5oaWdocF92ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuMiwg
MCksIHZlYzIoMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4wNCwg
MC4wNF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZXRlcm1pbmFudC5oaWdo
cF92ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSks
ICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgMC4yNSwgMC4yNV19KTsKK3JlZi5wdXNo
KHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5kZXRlcm1pbmFudC5oaWdocF9mcmFnbWVudC5tYXQyJywg
aW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgKCksICgpLCAoKScsIHJl
ZmVyZW5jZTogW2ZhbHNlLCAwLjA0LCAwLjA0XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJl
Y2lzaW9uLmRldGVybWluYW50LmhpZ2hwX2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ21hdDIodmVj
MigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2Us
IDAuMjUsIDAuMjVdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZS5s
b3dwX3ZlcnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIp
KSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lz
aW9uLmludmVyc2UubG93cF92ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCks
IHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHks
IEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0
TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlLmxvd3BfZnJhZ21lbnQubWF0MicsIGlucHV0OiAnbWF0
Mih2ZWMyKDAuMiwgMCksIHZlYzIoMCwgMC4yKSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0eSwgSW5maW5pdHksIGZh
bHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eV19KTsK
K3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlLmxvd3BfZnJhZ21lbnQubWF0
MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgLUluZmluaXR5LCBJbmZpbml0eSwgZmFsc2UsIC1JbmZpbml0
eSwgSW5maW5pdHksIGZhbHNlLCAtSW5maW5pdHksIEluZmluaXR5LCBmYWxzZSwgLUluZmluaXR5
LCBJbmZpbml0eV19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlLm1l
ZGl1bXBfdmVydGV4Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAu
MikpLCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDQuOTY2NzcsIDUuMDI3MTYsIGZh
bHNlLCAtNS45NjA0NmUtMDA3LCA1Ljk2MDQ2ZS0wMDcsIGZhbHNlLCAtNS45NjA0NmUtMDA3LCA1
Ljk2MDQ2ZS0wMDcsIGZhbHNlLCA0Ljk2Njc3LCA1LjAyNzE2XX0pOworcmVmLnB1c2goe3Rlc3RO
YW1lOiAncHJlY2lzaW9uLmludmVyc2UubWVkaXVtcF92ZXJ0ZXgubWF0MicsIGlucHV0OiAnbWF0
Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCknLCByZWZlcmVuY2U6IFtm
YWxzZSwgMS45OTUxMiwgMi4wMDQ4OCwgZmFsc2UsIC01Ljk2MDQ2ZS0wMDcsIDUuOTYwNDZlLTAw
NywgZmFsc2UsIC01Ljk2MDQ2ZS0wMDcsIDUuOTYwNDZlLTAwNywgZmFsc2UsIDEuOTk1MTIsIDIu
MDA0ODhdfSk7CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZS5tZWRpdW1w
X2ZyYWdtZW50Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjIsIDApLCB2ZWMyKDAsIDAuMikp
LCAoKSwgKCksICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDQuOTY2NzcsIDUuMDI3MTYsIGZhbHNl
LCAtNS45NjA0NmUtMDA3LCA1Ljk2MDQ2ZS0wMDcsIGZhbHNlLCAtNS45NjA0NmUtMDA3LCA1Ljk2
MDQ2ZS0wMDcsIGZhbHNlLCA0Ljk2Njc3LCA1LjAyNzE2XX0pOworcmVmLnB1c2goe3Rlc3ROYW1l
OiAncHJlY2lzaW9uLmludmVyc2UubWVkaXVtcF9mcmFnbWVudC5tYXQyJywgaW5wdXQ6ICdtYXQy
KHZlYzIoMC41LCAwKSwgdmVjMigwLCAwLjUpKSwgKCksICgpLCAoKScsIHJlZmVyZW5jZTogW2Zh
bHNlLCAxLjk5NTEyLCAyLjAwNDg4LCBmYWxzZSwgLTUuOTYwNDZlLTAwNywgNS45NjA0NmUtMDA3
LCBmYWxzZSwgLTUuOTYwNDZlLTAwNywgNS45NjA0NmUtMDA3LCBmYWxzZSwgMS45OTUxMiwgMi4w
MDQ4OF19KTsKK3JlZi5wdXNoKHt0ZXN0TmFtZTogJ3ByZWNpc2lvbi5pbnZlcnNlLmhpZ2hwX3Zl
cnRleC5tYXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgKCks
ICgpLCAoKScsIHJlZmVyZW5jZTogW2ZhbHNlLCA1LCA1LCBmYWxzZSwgLTIuODAyNmUtMDQ1LCAy
LjgwMjZlLTA0NSwgZmFsc2UsIC0yLjgwMjZlLTA0NSwgMi44MDI2ZS0wNDUsIGZhbHNlLCA1LCA1
XX0pOworcmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2UuaGlnaHBfdmVydGV4
Lm1hdDInLCBpbnB1dDogJ21hdDIodmVjMigwLjUsIDApLCB2ZWMyKDAsIDAuNSkpLCAoKSwgKCks
ICgpJywgcmVmZXJlbmNlOiBbZmFsc2UsIDIsIDIsIGZhbHNlLCAtMi44MDI2ZS0wNDUsIDIuODAy
NmUtMDQ1LCBmYWxzZSwgLTIuODAyNmUtMDQ1LCAyLjgwMjZlLTA0NSwgZmFsc2UsIDIsIDJdfSk7
CityZWYucHVzaCh7dGVzdE5hbWU6ICdwcmVjaXNpb24uaW52ZXJzZS5oaWdocF9mcmFnbWVudC5t
YXQyJywgaW5wdXQ6ICdtYXQyKHZlYzIoMC4yLCAwKSwgdmVjMigwLCAwLjIpKSwgKCksICgpLCAo
KScsIHJlZmVyZW5jZTogW2ZhbHNlLCA1LCA1LCBmYWxzZSwgLTIuODAyNmUtMDQ1LCAyLjgwMjZl
LTA0NSwgZmFsc2UsIC0yLjgwMjZlLTA0NSwgMi44MDI2ZS0wNDUsIGZhbHNlLCA1LCA1XX0pOwor
cmVmLnB1c2goe3Rlc3ROYW1lOiAncHJlY2lzaW9uLmludmVyc2UuaGlnaHBfZnJhZ21lbnQubWF0
MicsIGlucHV0OiAnbWF0Mih2ZWMyKDAuNSwgMCksIHZlYzIoMCwgMC41KSksICgpLCAoKSwgKCkn
LCByZWZlcmVuY2U6IFtmYWxzZSwgMiwgMiwgZmFsc2UsIC0yLjgwMjZlLTA0NSwgMi44MDI2ZS0w
NDUsIGZhbHNlLCAtMi44MDI2ZS0wNDUsIDIuODAyNmUtMDQ1LCBmYWxzZSwgMiwgMl19KTsKKwor
ICAgIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0c1VuaXRUZXN0cy5wbGFpbkFycmF5ID0gZnVuY3Rp
b24oaW5wdXQpIHsKKyAgICAgICAgdmFyIHJldCA9IFtdOworCisgICAgICAgIGlmIChpbnB1dCBp
bnN0YW5jZW9mIHRjdUludGVydmFsLkludGVydmFsKSB7CisgICAgICAgICAgICB2YXIgaSA9IDA7
CisgICAgICAgICAgICByZXRbaV0gPSBpbnB1dC5tX2hhc05hTjsKKyAgICAgICAgICAgIGkrKzsK
KyAgICAgICAgICAgIHJldFtpXSA9IGlucHV0Lm1fbG87CisgICAgICAgICAgICBpKys7CisgICAg
ICAgICAgICByZXRbaV0gPSBpbnB1dC5tX2hpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIHRjdU1hdHJpeC5NYXRyaXgp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gMDsgaSA8IGlucHV0LmNvbHM7IGkr
KykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGlucHV0LnJvd3M7IGorKywg
bCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHJldFtsXSA9IGlucHV0Lm1hdHJpeFtpXVtqXS5t
X2hhc05hTjsKKyAgICAgICAgICAgICAgICAgICAgbCsrOworICAgICAgICAgICAgICAgICAgICBy
ZXRbbF0gPSBpbnB1dC5tYXRyaXhbaV1bal0ubV9sbzsKKyAgICAgICAgICAgICAgICAgICAgbCsr
OworICAgICAgICAgICAgICAgICAgICByZXRbbF0gPSBpbnB1dC5tYXRyaXhbaV1bal0ubV9oaTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgIHZhciBz
aXplID0gaW5wdXQubGVuZ3RoOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBq
IDwgc2l6ZTsgaisrLCBpKyspIHsKKyAgICAgICAgICAgICAgICByZXRbaV0gPSBpbnB1dFtqXS5t
X2hhc05hTjsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgcmV0W2ldID0g
aW5wdXRbal0ubV9sbzsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgcmV0
W2ldID0gaW5wdXRbal0ubV9oaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBy
ZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9OworCisgICAgZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzVW5pdFRlc3RzLkNvbXBhcmUgPSBmdW5jdGlvbihudW0xLCBudW0y
LCBkaWZmKSB7CisgICAgICAgIGlmIChpc0Zpbml0ZShudW0xKSkKKyAgICAgICAgICAgIGlmIChN
YXRoLmFicyhNYXRoLmFicyhudW0xKSAtIE1hdGguYWJzKG51bTIpKSA8PSBkaWZmKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGlzRmluaXRlKG51
bTIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgZ2xzQnVpbHRpblByZWNp
c2lvblRlc3RzVW5pdFRlc3RzLnJlZmVyZW5jZUNvbXBhcmlzb24gPSBmdW5jdGlvbihyZWZlcmVu
Y2UsIGluZGV4LCBwcmVjaXNpb24pIHsKKyAgICAgICAgaWYgKGluZGV4ID4gMSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHZhciB0ZXN0TmFtZSA9IF9jdXJyZW50VGVzdE5h
bWU7CisgICAgICAgIHZhciBtZXNzYWdlMSA9ICcnOworICAgICAgICB2YXIgcmVmMSA9IGdsc0J1
aWx0aW5QcmVjaXNpb25UZXN0c1VuaXRUZXN0cy5wbGFpbkFycmF5KHJlZmVyZW5jZSk7CisgICAg
ICAgIHZhciBhID0gcmVmLmxlbmd0aDsKKyAgICAgICAgdmFyIGxlbjsKKyAgICAgICAgdmFyIHJl
Zl9sZW4gPSByZWYxLmxlbmd0aDsKKyAgICAgICAgdmFyIGNwcF9uYW47CisgICAgICAgIHZhciBy
ZWZfbmFuOworICAgICAgICB2YXIgcmVmX2xvOworICAgICAgICB2YXIgcmVmX2hpOworICAgICAg
ICB2YXIgY3BwX2xvOworICAgICAgICB2YXIgY3BwX2hpOworICAgICAgICB2YXIgc3RyOworICAg
ICAgICB2YXIgcmV0VmFsMTsKKyAgICAgICAgdmFyIHJldFZhbDI7CisgICAgICAgIHZhciB2YXJm
aXggPSBNYXRoLm1heCgwLjAwMDEsIHByZWNpc2lvbi51bHAoMCwgMikpOworICAgICAgICB2YXIg
ZXJyb3IgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGE7IGkrKykgewor
ICAgICAgICAgICAgc3RyID0gcmVmW2ldLnRlc3ROYW1lOworCisgICAgICAgICAgICBpZiAodGVz
dE5hbWUgPT0gc3RyKSB7CisgICAgICAgICAgICAgICAgbGVuID0gcmVmW2ldLnJlZmVyZW5jZS5s
ZW5ndGg7CisKKyAgICAgICAgICAgICAgICBpZiAobGVuICE9IHJlZl9sZW4pCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgbGVuOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY3BwX25hbiA9IHJlZltpICsg
aW5kZXhdLnJlZmVyZW5jZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgcmVmX25hbiA9IHJlZjFb
al07CisgICAgICAgICAgICAgICAgICAgIGorKzsKKyAgICAgICAgICAgICAgICAgICAgY3BwX2xv
ID0gcmVmW2kgKyBpbmRleF0ucmVmZXJlbmNlW2pdOworICAgICAgICAgICAgICAgICAgICByZWZf
bG8gPSByZWYxW2pdOworICAgICAgICAgICAgICAgICAgICBqKys7CisgICAgICAgICAgICAgICAg
ICAgIGNwcF9oaSA9IHJlZltpICsgaW5kZXhdLnJlZmVyZW5jZVtqXTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVmX2hpID0gcmVmMVtqXTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVmX25h
biA9PSBjcHBfbmFuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwxID0gZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzVW5pdFRlc3RzLkNvbXBhcmUocmVmX2xvLCBjcHBfbG8sIHZhcmZp
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwyID0gZ2xzQnVpbHRpblByZWNpc2lv
blRlc3RzVW5pdFRlc3RzLkNvbXBhcmUocmVmX2hpLCByZWZfaGksIHZhcmZpeCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgocmV0VmFsMSAhPSB0cnVlKSB8fCAocmV0VmFsMiAhPSB0
cnVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UxID0gJ0Vycm9yOiAn
ICsgdmFyZml4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKG1lc3NhZ2UxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlMSA9ICdD
KysgUmVmZXJlbmNlIHZhbHVlczogJyArIGNwcF9uYW4gKyAnLCAnICsgY3BwX2xvICsgJywgJyAr
IGNwcF9oaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZShtZXNzYWdlMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTEgPSAnSlMg
dmFsdWVzOiAnICsgcmVmX25hbiArICcsICcgKyByZWZfbG8gKyAnLCAnICsgcmVmX2hpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKG1lc3NhZ2UxKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
OworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0RyYXdUZXN0cy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xz
RHJhd1Rlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViN2E0YjI5MzVkMzgzYzY0MjgxM2IxNmMzNGQyOTY0
ZjA4NDVmYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0RyYXdUZXN0cy5qcwpAQCAt
MCwwICsxLDM0NTIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxp
dHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29n
LnByb3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc0RyYXdUZXN0cycpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
UGl4ZWxGb3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1VGV4dHVyZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRl
bGlicy5kZWJhc2UuZGVNYXRoJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGVi
YXNlLmRlUmFuZG9tJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVy
VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWwnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29udGV4
dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xy
UmVmZXJlbmNlQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBs
ZXJlZmVyZW5jZS5zZ2xyU2hhZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
cmVmZXJlbmNlcmVuZGVyZXIucnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dCcpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWInKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0
Jyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZ2xzRHJhd1Rlc3RzID0g
bW9kdWxlcy5zaGFyZWQuZ2xzRHJhd1Rlc3RzOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1l
d29yay5jb21tb24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVJHQkEgPSBmcmFtZXdvcmsuY29t
bW9uLnRjdVJHQkE7CisgICAgdmFyIHRjdUZsb2F0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9h
dDsKKyAgICB2YXIgdGN1UGl4ZWxGb3JtYXQgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVBpeGVsRm9y
bWF0OworICAgIHZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VTdXJmYWNlOwor
ICAgIHZhciB0Y3VJbWFnZUNvbXBhcmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFy
ZTsKKyAgICB2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVV
dGlsOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJV
dGlsOworICAgIHZhciBnbHVTdHJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTdHJVdGlsOwor
ICAgIHZhciBzZ2xyR0xDb250ZXh0ID0gZnJhbWV3b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uu
c2dsckdMQ29udGV4dDsKKyAgICB2YXIgc2dsclJlZmVyZW5jZUNvbnRleHQgPSBmcmFtZXdvcmsu
b3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dDsKKyAgICB2YXIgc2ds
clNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hh
ZGVyUHJvZ3JhbTsKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVN
YXRoOworICAgIHZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9t
OworICAgIHZhciByckZyYWdtZW50T3BlcmF0aW9ucyA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5k
ZXJlci5yckZyYWdtZW50T3BlcmF0aW9uczsKKyAgICB2YXIgcnJHZW5lcmljVmVjdG9yID0gZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcjsKKyAgICB2YXIgcnJTaGFk
aW5nQ29udGV4dCA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5yclNoYWRpbmdDb250ZXh0
OworICAgIHZhciByclZlcnRleEF0dHJpYiA9IGZyYW1ld29yay5yZWZlcmVuY2VyZW5kZXJlci5y
clZlcnRleEF0dHJpYjsKKyAgICB2YXIgcnJWZXJ0ZXhQYWNrZXQgPSBmcmFtZXdvcmsucmVmZXJl
bmNlcmVuZGVyZXIucnJWZXJ0ZXhQYWNrZXQ7CisKKyAgICAvKiogQGNvbnN0IHtudW1iZXJ9ICov
IGdsc0RyYXdUZXN0cy5NQVhfUkVOREVSX1RBUkdFVF9TSVpFID0gNTEyOworCisgICAgLy8gVXRp
bHMKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5U
YXJnZXR9IHRhcmdldAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNE
cmF3VGVzdHMudGFyZ2V0VG9HTCA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKHRhcmdldCAhPSBudWxsLCAnVGFyZ2V0IGlzIG51bGwnLCBmYWxzZSwgdHJ1ZSk7
CisKKyAgICAgICAgdmFyIHRhcmdldHMgPSBbCisgICAgICAgICAgICBnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgLy8gVEFSR0VUX0VMRU1FTlRfQVJSQVkgPSAwLAorICAgICAgICAgICAgZ2wuQVJS
QVlfQlVGRkVSIC8vIFRBUkdFVF9BUlJBWSwKKyAgICAgICAgXTsKKworICAgICAgICByZXR1cm4g
dGFyZ2V0c1t0YXJnZXRdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlfSB1c2FnZQorICAgICAqIEByZXR1cm4ge251bWJl
cn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMudXNhZ2VUb0dMID0gZnVuY3Rpb24odXNhZ2Up
IHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh1c2FnZSAhPSBudWxsLCAnVXNhZ2UgaXMgbnVs
bCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgdXNhZ2VzID0gWworICAgICAgICAgICAg
Z2wuRFlOQU1JQ19EUkFXLCAvLyBVU0FHRV9EWU5BTUlDX0RSQVcgPSAwLAorICAgICAgICAgICAg
Z2wuU1RBVElDX0RSQVcsIC8vIFVTQUdFX1NUQVRJQ19EUkFXLAorICAgICAgICAgICAgZ2wuU1RS
RUFNX0RSQVcsIC8vIFVTQUdFX1NUUkVBTV9EUkFXLAorCisgICAgICAgICAgICBnbC5TVFJFQU1f
UkVBRCwgLy8gVVNBR0VfU1RSRUFNX1JFQUQsCisgICAgICAgICAgICBnbC5TVFJFQU1fQ09QWSwg
Ly8gVVNBR0VfU1RSRUFNX0NPUFksCisKKyAgICAgICAgICAgIGdsLlNUQVRJQ19SRUFELCAvLyBV
U0FHRV9TVEFUSUNfUkVBRCwKKyAgICAgICAgICAgIGdsLlNUQVRJQ19DT1BZLCAvLyBVU0FHRV9T
VEFUSUNfQ09QWSwKKworICAgICAgICAgICAgZ2wuRFlOQU1JQ19SRUFELCAvLyBVU0FHRV9EWU5B
TUlDX1JFQUQsCisgICAgICAgICAgICBnbC5EWU5BTUlDX0NPUFkgLy8gVVNBR0VfRFlOQU1JQ19D
T1BZLAorICAgICAgICBdOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHVzYWdlcy5sZW5ndGgg
PT0gT2JqZWN0LmtleXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Vc2FnZSkubGVuZ3RoLAor
ICAgICAgICAgICAgJ0Ftb3VudCBvZiB1c2FnZSBnbCB2bGF1ZXMgaXMgZGlmZmVyZW50IGZyb20g
YW1vdW50IG9mIHVzYWdlcycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICByZXR1cm4gdXNhZ2Vz
W3VzYWdlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Cisg
ICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLmlucHV0VHlwZVRvR0wgPSBmdW5jdGlvbih0eXBlKSB7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZSAhPSBudWxsLCAnSW5wdXQgdHlwZSBpcyBu
dWxsJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHZhciB0eXBlcyA9IFsKKyAgICAgICAgICAg
IGdsLkZMT0FULCAvLyBJTlBVVFRZUEVfRkxPQVQgPSAwLAorICAgICAgICAgICAgZ2wuQllURSwg
Ly8gSU5QVVRUWVBFX0JZVEUsCisgICAgICAgICAgICBnbC5TSE9SVCwgLy8gSU5QVVRUWVBFX1NI
T1JULAorICAgICAgICAgICAgZ2wuVU5TSUdORURfQllURSwgLy8gSU5QVVRUWVBFX1VOU0lHTkVE
X0JZVEUsCisgICAgICAgICAgICBnbC5VTlNJR05FRF9TSE9SVCwgLy8gSU5QVVRUWVBFX1VOU0lH
TkVEX1NIT1JULAorCisgICAgICAgICAgICBnbC5JTlQsIC8vIElOUFVUVFlQRV9JTlQsCisgICAg
ICAgICAgICBnbC5VTlNJR05FRF9JTlQsIC8vIElOUFVUVFlQRV9VTlNJR05FRF9JTlQsCisgICAg
ICAgICAgICBnbC5IQUxGX0ZMT0FULCAvLyBJTlBVVFRZUEVfSEFMRiwKKyAgICAgICAgICAgIGds
LlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgLy8gSU5QVVRUWVBFX1VOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwLAorICAgICAgICAgICAgZ2wuSU5UXzJfMTBfMTBfMTBfUkVWIC8vIElOUFVUVFlQ
RV9JTlRfMl8xMF8xMF8xMCwKKyAgICAgICAgXTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0
eXBlcy5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGUpLmxlbmd0aCwKKyAgICAgICAgICAgICdBbW91bnQgb2YgZ2wgaW5wdXQgdHlwZXMgaXMg
ZGlmZmVyZW50IGZyb20gYW1vdW50IG9mIGlucHV0IHR5cGVzJywgZmFsc2UsIHRydWUpOworCisg
ICAgICAgIHJldHVybiB0eXBlc1t0eXBlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSB0eXBlCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5vdXRwdXRUeXBlVG9H
TFR5cGUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZSAh
PSBudWxsLCAnT3V0cHV0IHR5cGUgaXMgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2
YXIgdHlwZXMgPSBbCisgICAgICAgICAgICAnZmxvYXQnLCAvLyBPVVRQVVRUWVBFX0ZMT0FUID0g
MCwKKyAgICAgICAgICAgICd2ZWMyJywgLy8gT1VUUFVUVFlQRV9WRUMyLAorICAgICAgICAgICAg
J3ZlYzMnLCAvLyBPVVRQVVRUWVBFX1ZFQzMsCisgICAgICAgICAgICAndmVjNCcsIC8vIE9VVFBV
VFRZUEVfVkVDNCwKKworICAgICAgICAgICAgJ2ludCcsIC8vIE9VVFBVVFRZUEVfSU5ULAorICAg
ICAgICAgICAgJ3VpbnQnLCAvLyBPVVRQVVRUWVBFX1VJTlQsCisKKyAgICAgICAgICAgICdpdmVj
MicsIC8vIE9VVFBVVFRZUEVfSVZFQzIsCisgICAgICAgICAgICAnaXZlYzMnLCAvLyBPVVRQVVRU
WVBFX0lWRUMzLAorICAgICAgICAgICAgJ2l2ZWM0JywgLy8gT1VUUFVUVFlQRV9JVkVDNCwKKwor
ICAgICAgICAgICAgJ3V2ZWMyJywgLy8gT1VUUFVUVFlQRV9VVkVDMiwKKyAgICAgICAgICAgICd1
dmVjMycsIC8vIE9VVFBVVFRZUEVfVVZFQzMsCisgICAgICAgICAgICAndXZlYzQnIC8vIE9VVFBV
VFRZUEVfVVZFQzQsCisgICAgICAgIF07CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZXMu
bGVuZ3RoID09IE9iamVjdC5rZXlzKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlw
ZSkubGVuZ3RoLAorICAgICAgICAgICAgJ0Ftb3VudCBvZiBvdXRwdXQgdHlwZSBuYW1lcyBpcyBk
aWZmZXJlbnQgdGhhbiBhbW91bnQgb2Ygb3V0cHV0IHR5cGVzJywgZmFsc2UsIHRydWUpOworCisg
ICAgICAgIHJldHVybiB0eXBlc1t0eXBlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmV9IHByaW1pdGl2ZQorICAg
ICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMucHJpbWl0aXZl
VG9HTCA9IGZ1bmN0aW9uKHByaW1pdGl2ZSkgeworICAgICAgICB2YXIgcHJpbWl0aXZlcyA9IFsK
KyAgICAgICAgICAgIGdsLlBPSU5UUywgLy8gUFJJTUlUSVZFX1BPSU5UUyA9IDAsCisgICAgICAg
ICAgICBnbC5UUklBTkdMRVMsIC8vIFBSSU1JVElWRV9UUklBTkdMRVMsCisgICAgICAgICAgICBn
bC5UUklBTkdMRV9GQU4sIC8vIFBSSU1JVElWRV9UUklBTkdMRV9GQU4sCisgICAgICAgICAgICBn
bC5UUklBTkdMRV9TVFJJUCwgLy8gUFJJTUlUSVZFX1RSSUFOR0xFX1NUUklQLAorICAgICAgICAg
ICAgZ2wuTElORVMsIC8vIFBSSU1JVElWRV9MSU5FUworICAgICAgICAgICAgZ2wuTElORV9TVFJJ
UCwgLy8gUFJJTUlUSVZFX0xJTkVfU1RSSVAKKyAgICAgICAgICAgIGdsLkxJTkVfTE9PUAorICAg
ICAgICBdOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHByaW1pdGl2ZXMubGVuZ3RoID09IE9i
amVjdC5rZXlzKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlKS5sZW5ndGgsCisg
ICAgICAgICAgICAnQW1vdW50IG9mIGdsIHByaW1pdGl2ZSB2YWx1ZXMgaXMgZGlmZmVyZW50IHRo
YW4gYW1vdW50IG9mIHByaW1pdGl2ZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZXNbcHJpbWl0aXZlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGV9IGluZGV4VHlwZQorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuaW5kZXhUeXBlVG9H
TCA9IGZ1bmN0aW9uKGluZGV4VHlwZSkgeworICAgICAgICB2YXIgaW5kZXhUeXBlcyA9IFsKKyAg
ICAgICAgICAgIGdsLlVOU0lHTkVEX0JZVEUsIC8vIElOREVYVFlQRV9CWVRFID0gMCwKKyAgICAg
ICAgICAgIGdsLlVOU0lHTkVEX1NIT1JULCAvLyBJTkRFWFRZUEVfU0hPUlQsCisgICAgICAgICAg
ICBnbC5VTlNJR05FRF9JTlQgLy8gSU5ERVhUWVBFX0lOVCwKKyAgICAgICAgXTsKKyAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhpbmRleFR5cGVzLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4VHlwZSkubGVuZ3RoLAorICAgICAgICAgICAgJ0Ftb3Vu
dCBvZiBnbCBpbmRleCB0eXBlcyBpcyBkaWZmZXJlbnQgdGhhbiBhbW91bnQgb2YgaW5kZXggdHlw
ZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIGluZGV4VHlwZXNbaW5kZXhUeXBl
XTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5JbmRleFR5cGV9IGluZGV4VHlwZQorICAgICAqIEByZXR1cm4gez9nbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuaW5k
ZXhUeXBlVG9JbnB1dFR5cGUgPSBmdW5jdGlvbihpbmRleFR5cGUpIHsKKyAgICAgICAgdmFyIGlu
cHV0VHlwZXMgPSBbCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0
VHlwZS5VTlNJR05FRF9CWVRFLCAvLyBJTkRFWFRZUEVfQllURSA9IDAsCisgICAgICAgICAgICBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVCwgLy8gSU5E
RVhUWVBFX1NIT1JULAorICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGUuVU5TSUdORURfSU5UIC8vIElOREVYVFlQRV9JTlQsCisgICAgICAgIF07CisgICAgICAg
IGFzc2VydE1zZ09wdGlvbnMoaW5wdXRUeXBlcy5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGUpLmxlbmd0aCwKKyAgICAgICAgICAgICdBbW91
bnQgb2YgcmVsZXZhbnQgaW5wdXQgdHlwZXMgaXMgZGlmZmVyZW50IHRoYW4gYW1vdW50IG9mIGlu
ZGV4IHR5cGVzJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHJldHVybiBpbnB1dFR5cGVzW2lu
ZGV4VHlwZV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0K
KyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuaW5wdXRUeXBlSXNGbG9hdFR5cGUgPSBmdW5jdGlv
bih0eXBlKSB7CisgICAgICAgIGlmICh0eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5wdXRUeXBlLkZMT0FUKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0
eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkhBTEYpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGV9
IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0
cy5vdXRwdXRUeXBlSXNGbG9hdFR5cGUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIGlmICh0
eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5GTE9BVCB8fAorICAg
ICAgICAgICAgdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVD
MiB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1
dFR5cGUuVkVDMyB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLk91dHB1dFR5cGUuVkVDNCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMub3V0cHV0VHlwZUlzSW50VHlwZSA9IGZ1
bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5PdXRwdXRUeXBlLklOVCB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzIgfHwKKyAgICAgICAgICAgIHR5cGUgPT0gZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLklWRUMzIHx8CisgICAgICAgICAgICB0
eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5JVkVDNCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRU
eXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3
VGVzdHMub3V0cHV0VHlwZUlzVWludFR5cGUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIGlm
ICh0eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VSU5UIHx8Cisg
ICAgICAgICAgICB0eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5V
VkVDMiB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91
dHB1dFR5cGUuVVZFQzMgfHwKKyAgICAgICAgICAgIHR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUM0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9n
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZX0gcHJpbWl0aXZlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHByaW1pdGl2ZUNvdW50CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIGdsc0RyYXdUZXN0cy5nZXRFbGVtZW50Q291bnQgPSBmdW5jdGlvbihwcmltaXRp
dmUsIHByaW1pdGl2ZUNvdW50KSB7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlKSB7CisgICAg
ICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlBPSU5UUzog
cmV0dXJuIHByaW1pdGl2ZUNvdW50OworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRVM6IHJldHVybiBwcmltaXRpdmVDb3VudCAqIDM7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRS
SUFOR0xFX0ZBTjogcmV0dXJuIHByaW1pdGl2ZUNvdW50ICsgMjsKKyAgICAgICAgICAgIGNhc2Ug
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuVFJJQU5HTEVfU1RSSVA6IHJldHVy
biBwcmltaXRpdmVDb3VudCArIDI7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVTOiByZXR1cm4gcHJpbWl0aXZlQ291bnQgKiAyOworICAg
ICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX1NU
UklQOiByZXR1cm4gcHJpbWl0aXZlQ291bnQgKyAxOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX0xPT1A6IHJldHVybiAocHJpbWl0aXZl
Q291bnQgPT0gMSkgPyAoMikgOiAocHJpbWl0aXZlQ291bnQpOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlJyk7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy9NZXRob2RJbmZvCisKKyAgICAvKioKKyAgICAg
KiBAdHlwZWRlZiB7e2luZGV4ZWQ6IGJvb2xlYW4sIGluc3RhbmNlZDogYm9vbGVhbiwgcmFuZ2Vk
OiBib29sZWFuLCBmaXJzdDogYm9vbGVhbn19CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLk1l
dGhvZEluZm8gPSB7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gaW5kZXhlZDogZmFs
c2UsCisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gaW5zdGFuY2VkOiBmYWxzZSwKKyAg
ICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyByYW5nZWQ6IGZhbHNlLAorICAgICAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIGZpcnN0OiBmYWxzZQorICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9IG1ldGhvZAor
ICAgICAqIEByZXR1cm4ge2dsc0RyYXdUZXN0cy5NZXRob2RJbmZvfQorICAgICAqLworICAgIGds
c0RyYXdUZXN0cy5nZXRNZXRob2RJbmZvID0gZnVuY3Rpb24obWV0aG9kKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8Z2xzRHJhd1Rlc3RzLk1ldGhvZEluZm8+fSAqLyB2YXIgaW5mb3MgPSBb
eworICAgICAgICAgICAgICAgIGluZGV4ZWQ6IGZhbHNlLCBpbnN0YW5jZWQ6IGZhbHNlLCByYW5n
ZWQ6IGZhbHNlLCBmaXJzdDogdHJ1ZSAvLyE8IERSQVdNRVRIT0RfRFJBV0FSUkFZUywKKyAgICAg
ICAgICAgIH0seworICAgICAgICAgICAgICAgIGluZGV4ZWQ6IGZhbHNlLCBpbnN0YW5jZWQ6IHRy
dWUsIHJhbmdlZDogZmFsc2UsIGZpcnN0OiB0cnVlIC8vITwgRFJBV01FVEhPRF9EUkFXQVJSQVlT
X0lOU1RBTkNFRCwKKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgIGluZGV4ZWQ6IHRy
dWUsIGluc3RhbmNlZDogZmFsc2UsIHJhbmdlZDogZmFsc2UsIGZpcnN0OiBmYWxzZSAvLyE8IERS
QVdNRVRIT0RfRFJBV0VMRU1FTlRTLAorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAg
aW5kZXhlZDogdHJ1ZSwgaW5zdGFuY2VkOiBmYWxzZSwgcmFuZ2VkOiB0cnVlLCBmaXJzdDogZmFs
c2UgLy8hPCBEUkFXTUVUSE9EX0RSQVdFTEVNRU5UU19SQU5HRUQsCisgICAgICAgICAgICB9LHsK
KyAgICAgICAgICAgICAgICBpbmRleGVkOiB0cnVlLCBpbnN0YW5jZWQ6IHRydWUsIHJhbmdlZDog
ZmFsc2UsIGZpcnN0OiBmYWxzZSAvLyE8IERSQVdNRVRIT0RfRFJBV0VMRU1FTlRTX0lOU1RBTkNF
RAorICAgICAgICAgICAgfQorICAgICAgICBdOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
aW5mb3MubGVuZ3RoID09IE9iamVjdC5rZXlzKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJh
d01ldGhvZCkubGVuZ3RoLAorICAgICAgICAgICAgJ051bWJlciBvZiBpbmZvIG5hbWVzJywgZmFs
c2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG1ldGhvZCA8IGluZm9zLmxlbmd0
aCwgJ0ludmFsaWQgbWV0aG9kJywgZmFsc2UsIHRydWUpOworICAgICAgICByZXR1cm4gLyoqIEB0
eXBlIHtnbHNEcmF3VGVzdHMuTWV0aG9kSW5mb30gKi8gKGluZm9zW21ldGhvZF0pOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWN9IGEK
KyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWN9IGIKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5jaGVja1NwZWNzU2hhZGVy
Q29tcGF0aWJsZSA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgLy8gT25seSB0aGUgYXR0cmli
dXRlcyBtYXR0ZXIKKyAgICAgICAgaWYgKGEuYXR0cmlicy5sZW5ndGggIT0gYi5hdHRyaWJzLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBuZHgg
PSAwOyBuZHggPCBhLmF0dHJpYnMubGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAgLy8gT25s
eSB0aGUgb3V0cHV0IHR5cGUgKD09IHNoYWRlciBpbnB1dCB0eXBlKSBtYXR0ZXJzIGFuZCB0aGUg
dXNhZ2UgaW4gdGhlIHNoYWRlci4KKworICAgICAgICAgICAgaWYgKGEuYXR0cmlic1tuZHhdLmFk
ZGl0aW9uYWxQb3NpdGlvbkF0dHJpYnV0ZSAhPSBiLmF0dHJpYnNbbmR4XS5hZGRpdGlvbmFsUG9z
aXRpb25BdHRyaWJ1dGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICAvLyBjb21wb25lbnQgY291bnRzIG5lZWQgbm90IHRvIG1hdGNoCisgICAgICAgICAgICBp
ZiAoZ2xzRHJhd1Rlc3RzLm91dHB1dFR5cGVJc0Zsb2F0VHlwZShhLmF0dHJpYnNbbmR4XS5vdXRw
dXRUeXBlKSAmJiBnbHNEcmF3VGVzdHMub3V0cHV0VHlwZUlzRmxvYXRUeXBlKGIuYXR0cmlic1tu
ZHhdLm91dHB1dFR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKGdsc0RyYXdUZXN0cy5vdXRwdXRUeXBlSXNJbnRUeXBlKGEuYXR0cmlic1tuZHhdLm91dHB1
dFR5cGUpICYmIGdsc0RyYXdUZXN0cy5vdXRwdXRUeXBlSXNJbnRUeXBlKGIuYXR0cmlic1tuZHhd
Lm91dHB1dFR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KGdsc0RyYXdUZXN0cy5vdXRwdXRUeXBlSXNVaW50VHlwZShhLmF0dHJpYnNbbmR4XS5vdXRwdXRU
eXBlKSAmJiBnbHNEcmF3VGVzdHMub3V0cHV0VHlwZUlzVWludFR5cGUoYi5hdHRyaWJzW25keF0u
b3V0cHV0VHlwZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisK
KyAgICAvLyBnZW5lcmF0ZSByYW5kb20gdmVjdG9ycyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGRl
cGVuZCBvbiBhcmd1bWVudCBldmFsdWF0aW9uIG9yZGVyCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2RlUmFuZG9tLlJhbmRvbX0gcmFuZG9tCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVy
Pn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuZ2VuZXJhdGVSYW5kb21WZWM0ID0gZnVuY3Rp
b24ocmFuZG9tKSB7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJl
dFZhbCA9IFtdOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAg
ICAgICAgcmV0VmFsW2ldID0gcmFuZG9tLmdldEZsb2F0KCk7CisKKyAgICAgICAgcmV0dXJuIHJl
dFZhbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219
IHJhbmRvbQorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xz
RHJhd1Rlc3RzLmdlbmVyYXRlUmFuZG9tSVZlYzQgPSBmdW5jdGlvbihyYW5kb20pIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgcmV0VmFsID0gW107CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICByZXRWYWxbaV0gPSBy
YW5kb20uZ2V0SW50KCk7CisKKyAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJhbmRvbQorICAgICAqIEByZXR1
cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLmdlbmVyYXRlUmFu
ZG9tVVZlYzQgPSBmdW5jdGlvbihyYW5kb20pIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgcmV0VmFsID0gW107CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0OyArK2kpCisgICAgICAgICAgICByZXRWYWxbaV0gPSBNYXRoLmFicyhyYW5kb20uZ2V0SW50
KCkpOworCisgICAgICAgIHJldHVybiByZXRWYWw7CisgICAgfTsKKworICAgIC8vR0xWYWx1ZQor
CisgICAgLyoqCisgICAgICogZ2xzRHJhd1Rlc3RzLkdMVmFsdWUgY2xhc3MKKyAgICAgKiBAY29u
c3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZSA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAvKiogQHR5cGUge2dvb2cuTnVtYmVyQXJyYXl9ICovIHRoaXMubV92YWx1ZSA9
IFswXTsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGV9ICovIHRoaXMubV90eXBlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2dvb2cuVHlwZWRBcnJheX0gZHN0CisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1
ZX0gdmFsCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLmNvcHlHTFZhbHVlVG9BcnJheSA9IGZ1
bmN0aW9uKGRzdCwgdmFsKSB7CisgICAgICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdmFy
IGRzdDggPSBuZXcgVWludDhBcnJheShkc3QuYnVmZmVyKS5zdWJhcnJheShkc3QuYnl0ZU9mZnNl
dCwgZHN0LmJ5dGVPZmZzZXQgKyBkc3QuYnl0ZUxlbmd0aCk7CisgICAgICAgIC8qKiBAdHlwZSB7
VWludDhBcnJheX0gKi8gdmFyIHZhbDggPSBuZXcgVWludDhBcnJheSh2YWwubV92YWx1ZS5idWZm
ZXIpOyAvLyBUT0RPOiBGaXggZW5jYXBzdWxhdGlvbiBpc3N1ZQorICAgICAgICBkc3Q4LnNldCh2
YWw4KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnb29nLlR5cGVkQXJyYXl9
IGRzdAorICAgICAqIEBwYXJhbSB7Z29vZy5UeXBlZEFycmF5fSBzcmMKKyAgICAgKi8KKyAgICBn
bHNEcmF3VGVzdHMuY29weUFycmF5ID0gZnVuY3Rpb24oZHN0LCBzcmMpIHsKKyAgICAgICAgLyoq
IEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgZHN0OCA9IG5ldyBVaW50OEFycmF5KGRzdC5idWZm
ZXIpLnN1YmFycmF5KGRzdC5ieXRlT2Zmc2V0LCBkc3QuYnl0ZU9mZnNldCArIGRzdC5ieXRlTGVu
Z3RoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgc3JjOCA9IG5ldyBV
aW50OEFycmF5KHNyYy5idWZmZXIpLnN1YmFycmF5KHNyYy5ieXRlT2Zmc2V0LCBzcmMuYnl0ZU9m
ZnNldCArIHNyYy5ieXRlTGVuZ3RoKTsKKyAgICAgICAgZHN0OC5zZXQoc3JjOCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIHR5cGVUb1R5cGVkQXJyYXkgZnVuY3Rpb24uIERldGVybWluZXMg
d2hpY2ggdHlwZSBvZiBhcnJheSB3aWxsIHN0b3JlIHRoZSB2YWx1ZSwgYW5kIHN0b3JlcyBpdC4K
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gdHlwZQorICAgICAqLworICAgIGdsc0RyYXdUZXN0
cy5HTFZhbHVlLnR5cGVUb1R5cGVkQXJyYXkgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkgeworICAg
ICAgICB2YXIgYXJyYXk7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBj
YXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkZMT0FUOgorICAgICAgICAg
ICAgICAgIGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlw
ZS5CWVRFOgorICAgICAgICAgICAgICAgIGFycmF5ID0gbmV3IEludDhBcnJheSgxKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbnB1dFR5cGUuU0hPUlQ6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgSW50MTZB
cnJheSgxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgIGFycmF5ID0gbmV3IFVpbnQxNkFycmF5KDEp
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAgICBhcnJheSA9IG5l
dyBJbnQzMkFycmF5KDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICAgICAgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRU
eXBlLkhBTEY6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMSk7Cisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5mbG9hdFRvSGFsZih2
YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwOgorICAg
ICAgICAgICAgICAgIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0
VHlwZS5JTlRfMl8xMF8xMF8xMDoKKyAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyBJbnQzMkFy
cmF5KDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc0RyYXdUZXN0cy5HTFZhbHVlLnR5cGVU
b1R5cGVkQXJyYXkgLSBJbnZhbGlkIElucHV0VHlwZScpOworICAgICAgICB9CisKKyAgICAgICAg
YXJyYXlbMF0gPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5jcmVhdGUKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gdmFsdWUKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklu
cHV0VHlwZX0gdHlwZQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmNyZWF0ZSA9
IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKSB7CisgICAgICAgIHZhciB2ID0gbmV3IGdsc0RyYXdUZXN0
cy5HTFZhbHVlKCk7CisgICAgICAgIHYubV92YWx1ZSA9IGdsc0RyYXdUZXN0cy5HTFZhbHVlLnR5
cGVUb1R5cGVkQXJyYXkodmFsdWUsIHR5cGUpOworICAgICAgICB2Lm1fdHlwZSA9IHR5cGU7Cisg
ICAgICAgIHJldHVybiB2OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNEcmF3VGVzdHMu
R0xWYWx1ZS5oYWxmVG9GbG9hdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5oYWxm
VG9GbG9hdCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB0Y3VGbG9hdC5oYWxm
RmxvYXRUb051bWJlck5vRGVub3JtKHZhbHVlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGYKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
Z2xzRHJhd1Rlc3RzLkdMVmFsdWUuZmxvYXRUb0hhbGYgPSBmdW5jdGlvbihmKSB7CisgICAgICAg
IC8vIE5vIGRlbm9ybSBzdXBwb3J0LgorICAgICAgICByZXR1cm4gdGN1RmxvYXQubnVtYmVyVG9I
YWxmRmxvYXROb0Rlbm9ybShmKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2xzRHJhd1Rl
c3RzLkdMVmFsdWUuZ2V0TWF4VmFsdWUKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLklucHV0VHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge2dsc0RyYXdUZXN0cy5H
TFZhbHVlfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVlID0g
ZnVuY3Rpb24odHlwZSkgeworICAgICAgICB2YXIgdmFsdWUgPSAwOworCisgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnModHlwZSA+PSAwICYmIHR5cGUgPCBPYmplY3Qua2V5cyhnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLklucHV0VHlwZSkubGVuZ3RoLAorICAgICAgICAgICAgJ0ludmFsaWQgdHlw
ZSBmb3IgR0xWYWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuRkxP
QVQ6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAxMjc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkJZ
VEU6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAxMjc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlNI
T1JUOgorICAgICAgICAgICAgICAgIHZhbHVlID0gMzI3NjA7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBl
LlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAyNTU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgIHZhbHVlID0gNjU1MzA7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDIxNDc0
ODM2NDc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IDQyOTQ5NjcyOTU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkhBTEY6CisgICAgICAg
ICAgICAgICAgdmFsdWUgPSAyNTY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OiAvL0ZvciBhbnkgb3RoZXIgdmFsaWQgdHlwZSwgcmV0dXJuIDAKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZ2xzRHJhd1Rl
c3RzLkdMVmFsdWUuY3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogZ2xzRHJhd1Rlc3RzLkdMVmFsdWUuZ2V0TWluVmFsdWUKKyAgICAgKiBAcGFyYW0gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge2ds
c0RyYXdUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmdl
dE1pblZhbHVlID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICB2YXIgdmFsdWUgPSAwOworCisg
ICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZSA+PSAwICYmIHR5cGUgPCBPYmplY3Qua2V5cyhn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZSkubGVuZ3RoLAorICAgICAgICAgICAg
J0ludmFsaWQgdHlwZSBmb3IgR0xWYWx1ZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5J
bnB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAtMTI3OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZS5CWVRFOgorICAgICAgICAgICAgICAgIHZhbHVlID0gLTEyNzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5JbnB1dFR5cGUuU0hPUlQ6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAtMzI3NjA7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAw
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IC0yMTQ3NDgzNjQ3OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5IQUxGOgorICAgICAg
ICAgICAgICAgIHZhbHVlID0gLTI1NjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6IC8vRm9yIGFueSBvdGhlciB2YWxpZCB0eXBlLCByZXR1cm4gMAorICAgICAg
ICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnbHNEcmF3
VGVzdHMuR0xWYWx1ZS5jcmVhdGUodmFsdWUsIHR5cGUpOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20KKyAgICAgKiBAcGFyYW0ge2RlUmFu
ZG9tLlJhbmRvbX0gcm5kCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gbWlu
CisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gbWF4CisgICAgICogQHJldHVy
biB7Z2xzRHJhd1Rlc3RzLkdMVmFsdWV9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkdMVmFs
dWUuZ2V0UmFuZG9tID0gZnVuY3Rpb24ocm5kLCBtaW4sIG1heCkgeworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKG1pbi5nZXRUeXBlKCkgPT0gbWF4LmdldFR5cGUoKSwgJ01pbiBhbmQgbWF4IHR5
cGVzIGRpZmZlcicsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgbWludiA9IG1pbi5pbnRl
cnByZXQoKTsKKyAgICAgICAgdmFyIG1heHYgPSBtYXguaW50ZXJwcmV0KCk7CisgICAgICAgIHZh
ciB0eXBlID0gbWluLmdldFR5cGUoKTsKKyAgICAgICAgdmFyIHZhbHVlOworCisgICAgICAgIGlm
IChtYXh2IDwgbWludikKKyAgICAgICAgICAgIHJldHVybiBtaW47CisKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5w
dXRUeXBlLkZMT0FUOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZS5IQUxGOiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5H
TFZhbHVlLmNyZWF0ZShtaW52ICsgcm5kLmdldEZsb2F0KCkgKiAobWF4diAtIG1pbnYpLCB0eXBl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5TSE9SVDoKKyAgICAgICAg
ICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfU0hP
UlQ6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBl
LkJZVEU6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRU
eXBlLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfSU5UOiB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsc0RyYXdUZXN0cy5HTFZhbHVlLmNyZWF0ZShtaW52ICsgcm5kLmdldEludCgpICUgKG1heHYg
LSBtaW52KSwgdHlwZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdn
bHNEcmF3VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20gLSBJbnZhbGlkIGlucHV0IHR5cGUnKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBNaW5pbXVt
IGRpZmZlcmVuY2UgcmVxdWlyZWQgYmV0d2VlbiBjb29yZGluYXRlcworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9IHR5cGUKKyAg
ICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3
VGVzdHMuR0xWYWx1ZS5taW5WYWx1ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5w
dXRUeXBlLkZMT0FUOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZS5CWVRFOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLklucHV0VHlwZS5IQUxGOgorICAgICAgICAgICAgICAgIHJldHVybiBnbHNEcmF3VGVzdHMu
R0xWYWx1ZS5jcmVhdGUoNCwgdHlwZSk7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuSW5wdXRUeXBlLlNIT1JUOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2xzRHJhd1Rlc3RzLkdMVmFsdWUuY3JlYXRlKDQgKiAyNTYsIHR5cGUpOworICAg
ICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgICAgIHJldHVybiBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5jcmVh
dGUoNCAqIDIsIHR5cGUpOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLklucHV0VHlwZS5JTlQ6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2xz
RHJhd1Rlc3RzLkdMVmFsdWUuY3JlYXRlKDQgKiAxNjc3NzIxNiwgdHlwZSk7CisKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbHNEcmF3VGVz
dHMuR0xWYWx1ZS5taW5WYWx1ZSAtIEludmFsaWQgaW5wdXQgdHlwZScpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkdMVmFsdWV9IHZh
bAorICAgICAqIEByZXR1cm4ge2dsc0RyYXdUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGds
c0RyYXdUZXN0cy5HTFZhbHVlLmFicyA9IGZ1bmN0aW9uKHZhbCkgeworICAgICAgICB2YXIgdHlw
ZSA9IHZhbC5nZXRUeXBlKCk7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5TSE9SVDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2xzRHJhd1Rlc3RzLkdMVmFsdWUuY3JlYXRlKDB4N0ZGRiAmIHZhbC5n
ZXRWYWx1ZSgpLCB0eXBlKTsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbnB1dFR5cGUuQllURToKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2xzRHJhd1Rlc3Rz
LkdMVmFsdWUuY3JlYXRlKDB4N0YgJiB2YWwuZ2V0VmFsdWUoKSwgdHlwZSk7CisgICAgICAgICAg
ICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKKyAg
ICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuRkxPQVQ6
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkhB
TEY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmNyZWF0ZShN
YXRoLmFicyh2YWwuaW50ZXJwcmV0KCkpLCB0eXBlKTsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuSU5UOgorICAgICAgICAgICAgICAgIHJldHVy
biBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5jcmVhdGUoMHg3RkZGRkZGRiAmIHZhbC5nZXRWYWx1ZSgp
LCB0eXBlKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdnbHNEcmF3VGVzdHMuR0xWYWx1ZS5hYnMgLSBJbnZhbGlkIGlucHV0IHR5cGUnKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHs/Z2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkdM
VmFsdWUucHJvdG90eXBlLmdldFR5cGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubV90eXBlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNEcmF3VGVzdHMuR0xWYWx1
ZS50b0Zsb2F0CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0RyYXdU
ZXN0cy5HTFZhbHVlLnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmludGVycHJldCgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNEcmF3
VGVzdHMuR0xWYWx1ZS5nZXRWYWx1ZQorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8K
KyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV92YWx1ZVswXTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogaW50ZXJwcmV0IGZ1bmN0aW9uLiBSZXR1cm5zIHRoZSBtX3ZhbHVlIGFzIGEgcXVhbnRp
dHkgc28gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgb24gaXQKKyAgICAg
KiBPbmx5IHNvbWUgdHlwZXMgcmVxdWlyZSB0aGlzLgorICAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuaW50ZXJwcmV0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLm1fdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLklucHV0VHlwZS5IQUxGKQorICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0
cy5HTFZhbHVlLmhhbGZUb0Zsb2F0KHRoaXMubV92YWx1ZVswXSk7CisKKyAgICAgICAgcmV0dXJu
IHRoaXMubV92YWx1ZVswXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNE
cmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xW
YWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuYWRkID0g
ZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmNy
ZWF0ZSh0aGlzLmludGVycHJldCgpICsgb3RoZXIuaW50ZXJwcmV0KCksIHRoaXMubV90eXBlKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0g
b3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAg
ICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24ob3RoZXIpIHsK
KyAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmNyZWF0ZSh0aGlzLmludGVycHJl
dCgpICogb3RoZXIuaW50ZXJwcmV0KCksIHRoaXMubV90eXBlKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0
dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xW
YWx1ZS5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIGds
c0RyYXdUZXN0cy5HTFZhbHVlLmNyZWF0ZSh0aGlzLmludGVycHJldCgpIC8gb3RoZXIuaW50ZXJw
cmV0KCksIHRoaXMubV90eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtn
bHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMu
R0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuc3Vi
ID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5HTFZhbHVl
LmNyZWF0ZSh0aGlzLmludGVycHJldCgpIC0gb3RoZXIuaW50ZXJwcmV0KCksIHRoaXMubV90eXBl
KTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1
ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8K
KyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuYWRkVG9TZWxmID0gZnVuY3Rpb24o
b3RoZXIpIHsKKyAgICAgICAgdGhpcy5tX3ZhbHVlWzBdID0gdGhpcy5pbnRlcnByZXQoKSArIG90
aGVyLmludGVycHJldCgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0
dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xW
YWx1ZS5wcm90b3R5cGUuc3ViVG9TZWxmID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgdGhp
cy5tX3ZhbHVlWzBdID0gdGhpcy5pbnRlcnByZXQoKSAtIG90aGVyLmludGVycHJldCgpOworICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNE
cmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xW
YWx1ZX0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUubXVsVG9T
ZWxmID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgdGhpcy5tX3ZhbHVlWzBdID0gdGhpcy5p
bnRlcnByZXQoKSAqIG90aGVyLmludGVycHJldCgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3Ro
ZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBn
bHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuZGl2VG9TZWxmID0gZnVuY3Rpb24ob3RoZXIp
IHsKKyAgICAgICAgdGhpcy5tX3ZhbHVlWzBdID0gdGhpcy5pbnRlcnByZXQoKSAvIG90aGVyLmlu
dGVycHJldCgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5HTFZhbHVlLnByb3RvdHlwZS5lcXVh
bHMgPSBmdW5jdGlvbihvdGhlcikgeworICAgICAgICByZXR1cm4gdGhpcy5tX3ZhbHVlWzBdID09
IG90aGVyLmdldFZhbHVlKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xz
RHJhd1Rlc3RzLkdMVmFsdWV9IG90aGVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUubGVzc1RoYW4gPSBmdW5jdGlv
bihvdGhlcikgeworICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnByZXQoKSA8IG90aGVyLmludGVy
cHJldCgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5H
TFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xz
RHJhd1Rlc3RzLkdMVmFsdWUucHJvdG90eXBlLmdyZWF0ZXJUaGFuID0gZnVuY3Rpb24ob3RoZXIp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwcmV0KCkgPiBvdGhlci5pbnRlcnByZXQoKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0g
b3RoZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0
cy5HTFZhbHVlLnByb3RvdHlwZS5sZXNzT3JFcXVhbFRoYW4gPSBmdW5jdGlvbihvdGhlcikgewor
ICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnByZXQoKSA8PSBvdGhlci5pbnRlcnByZXQoKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuR0xWYWx1ZX0gb3Ro
ZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5H
TFZhbHVlLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbFRoYW4gPSBmdW5jdGlvbihvdGhlcikgewor
ICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnByZXQoKSA+PSBvdGhlci5pbnRlcnByZXQoKTsKKyAg
ICB9OworCisgICAgLy8gQXR0cml1dGVBcnJheQorCisgICAgLyoqCisgICAgICogQXR0cmlidXRl
QXJyYXkKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLlN0b3JhZ2V9IHN0b3JhZ2UKKyAgICAgKiBAcGFyYW0ge3NnbHJHTENvbnRl
eHQuR0xDb250ZXh0IHwgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0gY29u
dGV4dAorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheSA9IGZ1bmN0aW9u
KHN0b3JhZ2UsIGNvbnRleHQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5TdG9yYWdlfSAqLyB0aGlzLm1fc3RvcmFnZSA9IHN0b3JhZ2U7CisgICAgICAg
IC8qKiBAdHlwZSB7c2dsckdMQ29udGV4dC5HTENvbnRleHQgfCBzZ2xyUmVmZXJlbmNlQ29udGV4
dC5SZWZlcmVuY2VDb250ZXh0fSAqLyB0aGlzLm1fY3R4ID0gY29udGV4dDsKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTEJ1ZmZlcnxzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfG51bGx9
ICovIHRoaXMubV9nbEJ1ZmZlcjsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX3NpemUgPSAwOworICAgICAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHRoaXMubV9k
YXRhOyAvL05PVEU6IFVzZWQgaW4gdW5zdXBwb3J0ZWQgdXNlciBzdG9yYWdlCisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fY29tcG9uZW50Q291bnQ7CisgICAgICAgIC8qKiBA
dHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5tX2JvdW5kID0gZmFsc2U7CisgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5UYXJnZXR9ICovIHRoaXMubV90YXJnZXQgPSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlRhcmdldC5BUlJBWTsKKyAgICAgICAgLyoqIEB0eXBl
IHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9ICovIHRoaXMubV9pbnB1dFR5
cGUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDsKKyAgICAgICAg
LyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSAqLyB0aGlz
Lm1fb3V0cHV0VHlwZSA9IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUM0
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubV9ub3JtYWxpemUgPSBmYWxz
ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9zdHJpZGUgPSAwOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX29mZnNldCA9IDA7CisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5tX2RlZmF1bHRBdHRyaWI7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1faW5zdGFuY2VEaXZpc29yID0gMDsKKyAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLm1faXNQb3NpdGlvbkF0dHIgPSBmYWxzZTsK
KworICAgICAgICBpZiAodGhpcy5tX3N0b3JhZ2UgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5TdG9yYWdlLkJVRkZFUikgeworICAgICAgICAgICAgdGhpcy5tX2dsQnVmZmVyID0gdGhpcy5t
X2N0eC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKiogQHJldHVy
biB7bnVtYmVyfSAqLyBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXkucHJvdG90eXBlLmdldENv
bXBvbmVudENvdW50ID0gZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMubV9jb21wb25lbnRDb3VudDt9
OworCisgICAgLyoqIEByZXR1cm4gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlRhcmdldH0g
Ki8gZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5LnByb3RvdHlwZS5nZXRUYXJnZXQgPSBmdW5j
dGlvbigpIHtyZXR1cm4gdGhpcy5tX3RhcmdldDt9OworCisgICAgLyoqIEByZXR1cm4gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gKi8gZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0
ZUFycmF5LnByb3RvdHlwZS5nZXRJbnB1dFR5cGUgPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5t
X2lucHV0VHlwZTt9OworCisgICAgLyoqIEByZXR1cm4gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLk91dHB1dFR5cGV9ICovIGdsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheS5wcm90b3R5cGUu
Z2V0T3V0cHV0VHlwZSA9IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLm1fb3V0cHV0VHlwZTt9Owor
CisgICAgLyoqIEByZXR1cm4gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2V9ICov
IGdsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheS5wcm90b3R5cGUuZ2V0U3RvcmFnZVR5cGUgPSBm
dW5jdGlvbigpIHtyZXR1cm4gdGhpcy5tX3N0b3JhZ2U7fTsKKworICAgIC8qKiBAcmV0dXJuIHti
b29sZWFufSAqLyBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXkucHJvdG90eXBlLmdldE5vcm1h
bGl6ZWQgPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5tX25vcm1hbGl6ZTt9OworCisgICAgLyoq
IEByZXR1cm4ge251bWJlcn0gKi8gZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5LnByb3RvdHlw
ZS5nZXRTdHJpZGUgPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5tX3N0cmlkZTt9OworCisgICAg
LyoqIEByZXR1cm4ge2Jvb2xlYW59ICovIGdsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheS5wcm90
b3R5cGUuaXNCb3VuZCA9IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLm1fYm91bmQ7fTsKKworICAg
IC8qKiBAcmV0dXJuIHtib29sZWFufSAqLyBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXkucHJv
dG90eXBlLmlzUG9zaXRpb25BdHRyaWJ1dGUgPSBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5tX2lz
UG9zaXRpb25BdHRyO307CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuVGFyZ2V0fSB0YXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQor
ICAgICAqIEBwYXJhbSB7Z29vZy5UeXBlZEFycmF5fSBwdHIKKyAgICAgKiBAcGFyYW0gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlfSB1c2FnZQorICAgICAqLworICAgIGdsc0RyYXdU
ZXN0cy5BdHRyaWJ1dGVBcnJheS5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uKHRhcmdldCwgc2l6
ZSwgcHRyLCB1c2FnZSkgeworICAgICAgICB0aGlzLm1fc2l6ZSA9IHNpemU7CisgICAgICAgIHRo
aXMubV90YXJnZXQgPSB0YXJnZXQ7CisKKyAgICAgICAgaWYgKHRoaXMubV9zdG9yYWdlID09IGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVIpIHsKKyAgICAgICAgICAgIHRo
aXMubV9jdHguYmluZEJ1ZmZlcihnbHNEcmF3VGVzdHMudGFyZ2V0VG9HTCh0YXJnZXQpLCB0aGlz
Lm1fZ2xCdWZmZXIpOworICAgICAgICAgICAgdGhpcy5tX2N0eC5idWZmZXJEYXRhKGdsc0RyYXdU
ZXN0cy50YXJnZXRUb0dMKHRhcmdldCksIHB0ciwgZ2xzRHJhd1Rlc3RzLnVzYWdlVG9HTCh1c2Fn
ZSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3Jvbmcg
c3RvcmFnZSB0eXBlJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5UYXJnZXR9IHRhcmdldAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7Z29v
Zy5UeXBlZEFycmF5fSBwdHIKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJy
YXkucHJvdG90eXBlLnN1YmRhdGEgPSBmdW5jdGlvbih0YXJnZXQsIG9mZnNldCwgc2l6ZSwgcHRy
KSB7CisgICAgICAgIHRoaXMubV90YXJnZXQgPSB0YXJnZXQ7CisKKyAgICAgICAgaWYgKHRoaXMu
bV9zdG9yYWdlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVIpIHsK
KyAgICAgICAgICAgIHRoaXMubV9jdHguYmluZEJ1ZmZlcihnbHNEcmF3VGVzdHMudGFyZ2V0VG9H
TCh0YXJnZXQpLCB0aGlzLm1fZ2xCdWZmZXIpOworCisgICAgICAgICAgICB0aGlzLm1fY3R4LmJ1
ZmZlclN1YkRhdGEoZ2xzRHJhd1Rlc3RzLnRhcmdldFRvR0wodGFyZ2V0KSwgb2Zmc2V0LCBzaXpl
LCBwdHIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3Jv
bmcgc3RvcmFnZSB0eXBlJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gYm91bmQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZX0gaW5wdXRUeXBlCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5PdXRwdXRUeXBlfSBvdXRUeXBlCisgICAgICogQHBhcmFtIHtib29sZWFufSBub3Jt
YWxpemVkCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpbnN0YW5jZURpdmlzb3IKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGRlZmF1
bHRBdHRyaWIKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUG9zaXRpb25BdHRyCisgICAgICov
CisgICAgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5LnByb3RvdHlwZS5zZXR1cEFycmF5ID0g
ZnVuY3Rpb24oYm91bmQsIG9mZnNldCwgc2l6ZSwgaW5wdXRUeXBlLCBvdXRUeXBlLAorICAgICAg
ICBub3JtYWxpemVkLCBzdHJpZGUsIGluc3RhbmNlRGl2aXNvciwgZGVmYXVsdEF0dHJpYiwgaXNQ
b3NpdGlvbkF0dHIpIHsKKyAgICAgICAgdGhpcy5tX2NvbXBvbmVudENvdW50ID0gc2l6ZTsKKyAg
ICAgICAgdGhpcy5tX2JvdW5kID0gYm91bmQ7CisgICAgICAgIHRoaXMubV9pbnB1dFR5cGUgPSBp
bnB1dFR5cGU7CisgICAgICAgIHRoaXMubV9vdXRwdXRUeXBlID0gb3V0VHlwZTsKKyAgICAgICAg
dGhpcy5tX25vcm1hbGl6ZSA9IG5vcm1hbGl6ZWQ7CisgICAgICAgIHRoaXMubV9zdHJpZGUgPSBz
dHJpZGU7CisgICAgICAgIHRoaXMubV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIHRoaXMubV9k
ZWZhdWx0QXR0cmliID0gZGVmYXVsdEF0dHJpYjsKKyAgICAgICAgdGhpcy5tX2luc3RhbmNlRGl2
aXNvciA9IGluc3RhbmNlRGl2aXNvcjsKKyAgICAgICAgdGhpcy5tX2lzUG9zaXRpb25BdHRyID0g
aXNQb3NpdGlvbkF0dHI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsb2MgKDMyLWJpdCkKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXku
cHJvdG90eXBlLmJpbmRBdHRyaWJ1dGUgPSBmdW5jdGlvbihsb2MpIHsKKyAgICAgICAgaWYgKCF0
aGlzLmlzQm91bmQoKSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAq
LyB2YXIgYXR0ciA9IHRoaXMubV9kZWZhdWx0QXR0cmliOworICAgICAgICAgICAgc3dpdGNoICh0
aGlzLm1faW5wdXRUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDogeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHRoaXMubV9jb21wb25lbnRDb3VudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OiB0aGlzLm1fY3R4LnZlcnRleEF0dHJpYjFmKGxvYywgYXR0clswXSk7IGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyOiB0aGlzLm1fY3R4LnZlcnRleEF0dHJpYjJmKGxvYywg
YXR0clswXSwgYXR0clsxXSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAz
OiB0aGlzLm1fY3R4LnZlcnRleEF0dHJpYjNmKGxvYywgYXR0clswXSwgYXR0clsxXSwgYXR0clsy
XSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiB0aGlzLm1fY3R4LnZl
cnRleEF0dHJpYjRmKGxvYywgYXR0clswXSwgYXR0clsxXSwgYXR0clsyXSwgYXR0clszXSk7IGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdJ
bnZhbGlkIGNvbXBvbmVudCBjb3VudCcpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5JTlQ6IHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tX2N0eC52ZXJ0ZXhBdHRyaWJJNGkobG9jLCBhdHRyWzBd
LCBhdHRyWzFdLCBhdHRyWzJdLCBhdHRyWzNdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfSU5UOiB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMubV9jdHgudmVydGV4QXR0cmliSTR1aShsb2MsIGF0dHJbMF0sIGF0dHJbMV0sIGF0dHJb
Ml0sIGF0dHJbM10pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdJbnZhbGlkIGlucHV0IHR5cGUnKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiogQHR5
cGUge1VpbnQ4QXJyYXl9ICovIHZhciBiYXNlUHRyID0gbnVsbDsKKworICAgICAgICAgICAgaWYg
KHRoaXMubV9zdG9yYWdlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZG
RVIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1fY3R4LmJpbmRCdWZmZXIoZ2xzRHJhd1Rlc3Rz
LnRhcmdldFRvR0wodGhpcy5tX3RhcmdldCksIHRoaXMubV9nbEJ1ZmZlcik7CisKKyAgICAgICAg
ICAgICAgICBiYXNlUHRyID0gbnVsbDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdG9yYWdlIHR5cGUnKTsKKworICAgICAgICAg
ICAgaWYgKCFnbHNEcmF3VGVzdHMuaW5wdXRUeXBlSXNGbG9hdFR5cGUodGhpcy5tX2lucHV0VHlw
ZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBJbnB1dCBpcyBub3QgZmxvYXQgdHlwZQorCisgICAg
ICAgICAgICAgICAgaWYgKGdsc0RyYXdUZXN0cy5vdXRwdXRUeXBlSXNGbG9hdFR5cGUodGhpcy5t
X291dHB1dFR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5tX2Nv
bXBvbmVudENvdW50OworCisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0eXBlIGlzIGZs
b2F0IHR5cGUKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2N0eC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKGxvYywgc2l6ZSwgZ2xzRHJhd1Rlc3RzLmlucHV0VHlwZVRvR0wodGhpcy5tX2lucHV0VHlw
ZSksIHRoaXMubV9ub3JtYWxpemUsIHRoaXMubV9zdHJpZGUsIHRoaXMubV9vZmZzZXQpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0eXBl
IGlzIGludCB0eXBlCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9jdHgudmVydGV4QXR0cmli
SVBvaW50ZXIobG9jLCB0aGlzLm1fY29tcG9uZW50Q291bnQsIGdsc0RyYXdUZXN0cy5pbnB1dFR5
cGVUb0dMKHRoaXMubV9pbnB1dFR5cGUpLCB0aGlzLm1fc3RyaWRlLCB0aGlzLm1fb2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIElucHV0IHR5cGUgaXMgZmxvYXQgdHlwZQorCisgICAgICAgICAgICAgICAgLy8gT3V0cHV0
IHR5cGUgbXVzdCBiZSBmbG9hdCB0eXBlCisgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhnbHNEcmF3VGVzdHMub3V0cHV0VHlwZUlzRmxvYXRUeXBlKHRoaXMubV9vdXRwdXRUeXBlKSwg
J091dHB1dCB0eXBlIGlzIG5vdCBmbG9hdCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAg
ICAgIHRoaXMubV9jdHgudmVydGV4QXR0cmliUG9pbnRlcihsb2MsIHRoaXMubV9jb21wb25lbnRD
b3VudCwgZ2xzRHJhd1Rlc3RzLmlucHV0VHlwZVRvR0wodGhpcy5tX2lucHV0VHlwZSksIHRoaXMu
bV9ub3JtYWxpemUsCisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9zdHJpZGUsIHRoaXMubV9v
ZmZzZXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5tX2luc3RhbmNl
RGl2aXNvcikKKyAgICAgICAgICAgICAgICB0aGlzLm1fY3R4LnZlcnRleEF0dHJpYkRpdmlzb3Io
bG9jLCB0aGlzLm1faW5zdGFuY2VEaXZpc29yKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVGFyZ2V0fSB0YXJn
ZXQKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXkucHJvdG90eXBlLmJp
bmRJbmRleEFycmF5ID0gZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgICAgIGlmICh0aGlzLm1fc3Rv
cmFnZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSKSB7CisgICAg
ICAgICAgICB0aGlzLm1fY3R4LmJpbmRCdWZmZXIoZ2xzRHJhd1Rlc3RzLnRhcmdldFRvR0wodGFy
Z2V0KSwgdGhpcy5tX2dsQnVmZmVyKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBEcmF3
VGVzdFNoYWRlclByb2dyYW0KKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAq
IEBleHRlbmRzIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfQorICAgICAqIEBwYXJh
bSB7QXJyYXk8Z2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5Pn0gYXJyYXlzCisgICAgICovCisg
ICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U2hhZGVyUHJvZ3JhbSA9IGZ1bmN0aW9uKGFycmF5cykg
eworICAgICAgICBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtLmNhbGwodGhpcywgdGhp
cy5jcmVhdGVQcm9ncmFtRGVjbGFyYXRpb24oYXJyYXlzKSk7CisKKyAgICAgICAgdGhpcy5tX2Nv
bXBvbmVudENvdW50ID0gW107CisgICAgICAgIHRoaXMubV9pc0Nvb3JkID0gW107CisgICAgICAg
IHRoaXMubV9hdHRyVHlwZSA9IFtdOworCisgICAgICAgIGZvciAodmFyIGFycmF5TmR4ID0gMDsg
YXJyYXlOZHggPCBhcnJheXMubGVuZ3RoOyBhcnJheU5keCsrKSB7CisgICAgICAgICAgICB0aGlz
Lm1fY29tcG9uZW50Q291bnRbYXJyYXlOZHhdID0gdGhpcy5nZXRDb21wb25lbnRDb3VudChhcnJh
eXNbYXJyYXlOZHhdLmdldE91dHB1dFR5cGUoKSk7CisgICAgICAgICAgICB0aGlzLm1faXNDb29y
ZFthcnJheU5keF0gPSBhcnJheXNbYXJyYXlOZHhdLmlzUG9zaXRpb25BdHRyaWJ1dGUoKTsKKyAg
ICAgICAgICAgIHRoaXMubV9hdHRyVHlwZVthcnJheU5keF0gPSB0aGlzLm1hcE91dHB1dFR5cGUo
YXJyYXlzW2FycmF5TmR4XS5nZXRPdXRwdXRUeXBlKCkpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNoYWRlclByb2dyYW0ucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtLnByb3RvdHlwZSk7CisgICAg
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTaGFkZXJQcm9ncmFtOworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb2xvcgorICAgICAqIEBwYXJhbSB7Z29vZy5OdW1iZXJB
cnJheX0gYXR0cmliVmFsdWUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtQ29tcG9uZW50cwor
ICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3Rz
LmNhbGNTaGFkZXJDb2xvciA9IGZ1bmN0aW9uKGNvbG9yLCBhdHRyaWJWYWx1ZSwgbnVtQ29tcG9u
ZW50cykgeworICAgICAgICBzd2l0Y2ggKG51bUNvbXBvbmVudHMpIHsKKyAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICBjb2xvclswXSA9IGRlTWF0aC5zY2FsZShjb2xvciwgYXR0
cmliVmFsdWVbMF0pWzBdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICAgICAgY29sb3JbMF0gPSBjb2xvclswXSAqIGF0dHJpYlZhbHVl
WzBdOworICAgICAgICAgICAgICAgIGNvbG9yWzFdID0gY29sb3JbMV0gKiBhdHRyaWJWYWx1ZVsx
XTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAzOgorICAgICAg
ICAgICAgICAgIGNvbG9yWzBdID0gY29sb3JbMF0gKiBhdHRyaWJWYWx1ZVswXTsKKyAgICAgICAg
ICAgICAgICBjb2xvclsxXSA9IGNvbG9yWzFdICogYXR0cmliVmFsdWVbMV07CisgICAgICAgICAg
ICAgICAgY29sb3JbMl0gPSBjb2xvclsyXSAqIGF0dHJpYlZhbHVlWzJdOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgY29sb3Jb
MF0gPSBjb2xvclswXSAqIGF0dHJpYlZhbHVlWzBdICogYXR0cmliVmFsdWVbM107CisgICAgICAg
ICAgICAgICAgY29sb3JbMV0gPSBjb2xvclsxXSAqIGF0dHJpYlZhbHVlWzFdICogYXR0cmliVmFs
dWVbM107CisgICAgICAgICAgICAgICAgY29sb3JbMl0gPSBjb2xvclsyXSAqIGF0dHJpYlZhbHVl
WzJdICogYXR0cmliVmFsdWVbM107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNv
bXBvbmVudCBjb3VudCcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbG9yOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvb3JkCisgICAg
ICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBhdHRyaWJWYWx1ZQorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBudW1Db21wb25lbnRzCisgICAgICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAg
ICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuY2FsY1NoYWRlckNvb3JkID0gZnVuY3Rpb24oY29vcmQs
IGF0dHJpYlZhbHVlLCBudW1Db21wb25lbnRzKSB7CisgICAgICAgIHN3aXRjaCAobnVtQ29tcG9u
ZW50cykgeworICAgICAgICAgICAgY2FzZSAxOgorCisgICAgICAgICAgICAgICAgY29vcmQgPSBk
ZU1hdGguYWRkKGNvb3JkLCBbYXR0cmliVmFsdWVbMF0sIGF0dHJpYlZhbHVlWzBdXSk7CisgICAg
ICAgICAgICAgICAgY29vcmRbMF0gPSBjb29yZFswXTsKKyAgICAgICAgICAgICAgICBjb29yZFsx
XSA9IGNvb3JkWzFdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgICAgIGNvb3JkID0gZGVNYXRoLmFkZChjb29yZCwgW2F0dHJpYlZhbHVl
WzBdLCBhdHRyaWJWYWx1ZVsxXV0pOworICAgICAgICAgICAgICAgIGNvb3JkWzBdID0gY29vcmRb
MF07CisgICAgICAgICAgICAgICAgY29vcmRbMV0gPSBjb29yZFsxXTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBjb29yZCA9IGRl
TWF0aC5hZGQoY29vcmQsIFthdHRyaWJWYWx1ZVswXSArIGF0dHJpYlZhbHVlWzJdLCBhdHRyaWJW
YWx1ZVsxXV0pOworICAgICAgICAgICAgICAgIGNvb3JkWzBdID0gY29vcmRbMF07CisgICAgICAg
ICAgICAgICAgY29vcmRbMV0gPSBjb29yZFsxXTsKKyAgICAgICAgICAgICAgICBjb29yZFsyXSA9
IGNvb3JkWzJdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0Ogor
ICAgICAgICAgICAgICAgIGNvb3JkID0gZGVNYXRoLmFkZChjb29yZCwgW2F0dHJpYlZhbHVlWzBd
ICsgYXR0cmliVmFsdWVbMl0sIGF0dHJpYlZhbHVlWzFdICsgYXR0cmliVmFsdWVbM11dKTsKKyAg
ICAgICAgICAgICAgICBjb29yZFswXSA9IGNvb3JkWzBdOworICAgICAgICAgICAgICAgIGNvb3Jk
WzFdID0gY29vcmRbMV07CisgICAgICAgICAgICAgICAgY29vcmRbMl0gPSBjb29yZFsyXTsKKyAg
ICAgICAgICAgICAgICBjb29yZFszXSA9IGNvb3JkWzNdOworICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignSW52YWxpZCBjb21wb25lbnQgY291bnQnKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBjb29yZDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxyclZlcnRl
eEF0dHJpYi5WZXJ0ZXhBdHRyaWI+fSBpbnB1dHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVy
dGV4UGFja2V0LlZlcnRleFBhY2tldD59IHBhY2tldHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
bnVtUGFja2V0cworICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNoYWRlclByb2dy
YW0ucHJvdG90eXBlLnNoYWRlVmVydGljZXMgPSBmdW5jdGlvbihpbnB1dHMsIHBhY2tldHMsIG51
bVBhY2tldHMpIHsKKyAgICAgICAgdmFyIHVfY29vcmRTY2FsZSA9IHRoaXMuZ2V0VW5pZm9ybUJ5
TmFtZSgndV9jb29yZFNjYWxlJykudmFsdWU7CisgICAgICAgIHZhciB1X2NvbG9yU2NhbGUgPSB0
aGlzLmdldFVuaWZvcm1CeU5hbWUoJ3VfY29sb3JTY2FsZScpLnZhbHVlOworCisgICAgICAgIGZv
ciAodmFyIHBhY2tldE5keCA9IDA7IHBhY2tldE5keCA8IG51bVBhY2tldHM7ICsrcGFja2V0TmR4
KSB7CisgICAgICAgICAgICB2YXIgdmFyeWluZ0xvY0NvbG9yID0gMDsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9ICovIHZhciBwYWNrZXQgPSBw
YWNrZXRzW3BhY2tldE5keF07CisKKyAgICAgICAgICAgIC8vIENhbGMgb3V0cHV0IGNvbG9yCisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb29yZCA9IFswLjAs
IDAuMF07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xv
ciA9IFsxLjAsIDEuMCwgMS4wXTsKKworICAgICAgICAgICAgZm9yICh2YXIgYXR0cmliTmR4ID0g
MDsgYXR0cmliTmR4IDwgdGhpcy5tX2F0dHJUeXBlLmxlbmd0aDsgYXR0cmliTmR4KyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbnVtQ29tcG9uZW50cyA9IHRoaXMubV9jb21wb25lbnRDb3VudFth
dHRyaWJOZHhdOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlz
Q29vcmQgPSB0aGlzLm1faXNDb29yZFthdHRyaWJOZHhdOworCisgICAgICAgICAgICAgICAgdmFy
IGF0dHJpYiA9IHJyVmVydGV4QXR0cmliLnJlYWRWZXJ0ZXhBdHRyaWIoaW5wdXRzW2F0dHJpYk5k
eF0sIHBhY2tldC5pbnN0YW5jZU5keCwgcGFja2V0LnZlcnRleE5keCwgdGhpcy5tX2F0dHJUeXBl
W2F0dHJpYk5keF0pOworCisgICAgICAgICAgICAgICAgaWYgKGlzQ29vcmQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29vcmQgPSBnbHNEcmF3VGVzdHMuY2FsY1NoYWRlckNvb3JkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIs
CisgICAgICAgICAgICAgICAgICAgICAgICBudW1Db21wb25lbnRzCisgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29s
b3IgPSBnbHNEcmF3VGVzdHMuY2FsY1NoYWRlckNvbG9yKAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBudW1Db21wb25lbnRzCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUcmFuc2Zvcm0gcG9z
aXRpb24KKyAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IFt1X2Nvb3JkU2NhbGUgKiBjb29y
ZFswXSwgdV9jb29yZFNjYWxlICogY29vcmRbMV0sIDEuMCwgMS4wXTsKKyAgICAgICAgICAgIHBh
Y2tldC5wb2ludFNpemUgPSAxLjA7CisKKyAgICAgICAgICAgIC8vIFBhc3MgY29sb3IgdG8gRlMK
KyAgICAgICAgICAgIHBhY2tldC5vdXRwdXRzW3ZhcnlpbmdMb2NDb2xvcl0gPSBkZU1hdGguYWRk
KGRlTWF0aC5zY2FsZShbdV9jb2xvclNjYWxlICogY29sb3JbMF0sIHVfY29sb3JTY2FsZSAqIGNv
bG9yWzFdLCB1X2NvbG9yU2NhbGUgKiBjb2xvclsyXSwgMS4wXSwgMC41KSwgWzAuNSwgMC41LCAw
LjUsIDAuNV0pOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXk8cnJGcmFnbWVudE9wZXJhdGlvbnMuRnJhZ21lbnQ+fSBwYWNrZXRzCisgICAgICogQHBh
cmFtIHtyclNoYWRpbmdDb250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAg
ICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5z
aGFkZUZyYWdtZW50cyA9IGZ1bmN0aW9uKHBhY2tldHMsIGNvbnRleHQpIHsKKyAgICAgICAgdmFy
IHZhcnlpbmdMb2NDb2xvciA9IDA7CisKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsg
cGFja2V0TmR4IDwgcGFja2V0cy5sZW5ndGg7ICsrcGFja2V0TmR4KSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge3JyRnJhZ21lbnRPcGVyYXRpb25zLkZyYWdtZW50fSAqLyB2YXIgcGFja2V0ID0g
cGFja2V0c1twYWNrZXROZHhdOworICAgICAgICAgICAgcGFja2V0LnZhbHVlID0gcnJTaGFkaW5n
Q29udGV4dC5yZWFkVmFyeWluZyhwYWNrZXQsIGNvbnRleHQsIHZhcnlpbmdMb2NDb2xvcik7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxnbHNEcmF3
VGVzdHMuQXR0cmlidXRlQXJyYXk+fSBhcnJheXMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Cisg
ICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUu
Z2VuVmVydGV4U291cmNlID0gZnVuY3Rpb24oYXJyYXlzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8c3RyaW5nPn0qLyB2YXIgcGFyYW1zOworICAgICAgICB2YXIgdmVydGV4U2hhZGVyVG1w
bCA9ICcnOworCisgICAgICAgIHBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVTaGFkZXJQYXJhbXMoKTsK
KworICAgICAgICB2ZXJ0ZXhTaGFkZXJUbXBsICs9IHBhcmFtc1snVlRYX0hEUiddOworCisgICAg
ICAgIGZvciAodmFyIGFycmF5TmR4ID0gMDsgYXJyYXlOZHggPCBhcnJheXMubGVuZ3RoOyBhcnJh
eU5keCsrKSB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJUbXBsICs9IHBhcmFtc1snVlRYX0lO
J10gKyAnIGhpZ2hwICcgKyBnbHNEcmF3VGVzdHMub3V0cHV0VHlwZVRvR0xUeXBlKGFycmF5c1th
cnJheU5keF0uZ2V0T3V0cHV0VHlwZSgpKSArICcgYV8nICsgYXJyYXlOZHggKyAnO1xuJzsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRlclRtcGwgKz0KKyAgICAgICAgICAgICd1bmlm
b3JtIGhpZ2hwIGZsb2F0IHVfY29vcmRTY2FsZTtcbicgKworICAgICAgICAgICAgJ3VuaWZvcm0g
aGlnaHAgZmxvYXQgdV9jb2xvclNjYWxlO1xuJyArCisgICAgICAgICAgICBwYXJhbXNbJ1ZUWF9P
VVQnXSArICcgJyArIHBhcmFtc1snQ09MX1BSRUNJU0lPTiddICsgJyB2ZWM0IHZfY29sb3I7XG4n
ICsKKyAgICAgICAgICAgICd2b2lkIG1haW4odm9pZClcbicgKworICAgICAgICAgICAgJ3tcbicg
KworICAgICAgICAgICAgJ1x0Z2xfUG9pbnRTaXplID0gMS4wO1xuJyArCisgICAgICAgICAgICAn
XHRoaWdocCB2ZWMyIGNvb3JkID0gdmVjMigwLjAsIDAuMCk7XG4nICsKKyAgICAgICAgICAgICdc
dGhpZ2hwIHZlYzMgY29sb3IgPSB2ZWMzKDEuMCwgMS4wLCAxLjApO1xuJzsKKworICAgICAgICBm
b3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgYXJyYXlzLmxlbmd0aDsgYXJyYXlOZHgr
KykgeworICAgICAgICAgICAgdmFyIGlzUG9zaXRpb25BdHRyID0gYXJyYXlzW2FycmF5TmR4XS5p
c1Bvc2l0aW9uQXR0cmlidXRlKCk7CisKKyAgICAgICAgICAgIGlmIChpc1Bvc2l0aW9uQXR0cikg
eworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlzW2FycmF5TmR4XS5nZXRPdXRwdXRUeXBl
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
Lk91dHB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVUlOVDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnRleFNoYWRlclRtcGwgKz0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnXHRjb29yZCArPSB2ZWMyKGZsb2F0KGFfJyArIGFycmF5TmR4ICsgJyksIGZsb2F0KGFfJyAr
IGFycmF5TmR4ICsgJykpO1xuJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRU
eXBlLlZFQzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5PdXRwdXRUeXBlLklWRUMyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VVkVDMjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnRleFNoYWRlclRtcGwgKz0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHRj
b29yZCArPSB2ZWMyKGFfJyArIGFycmF5TmR4ICsgJy54eSk7XG4nOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVDMzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzM6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUMzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyVG1wbCArPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdcdGNvb3JkICs9IHZlYzIoYV8nICsgYXJyYXlOZHggKyAnLnh5KTtc
bicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdGNvb3JkLnggKz0gZmxvYXQoYV8n
ICsgYXJyYXlOZHggKyAnLnopO1xuJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRw
dXRUeXBlLlZFQzQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5PdXRwdXRUeXBlLklWRUM0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VVkVDNDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnRleFNoYWRlclRtcGwgKz0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
XHRjb29yZCArPSB2ZWMyKGFfJyArIGFycmF5TmR4ICsgJy54eSk7XG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnXHRjb29yZCArPSB2ZWMyKGFfJyArIGFycmF5TmR4ICsgJy56dyk7
XG4nOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52
YWxpZCBvdXRwdXQgdHlwZScpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKGFycmF5c1thcnJheU5keF0uZ2V0T3V0cHV0VHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLkZMT0FUOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlw
ZS5JTlQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5PdXRwdXRUeXBlLlVJTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJU
bXBsICs9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x0Y29sb3IgPSBjb2xvciAqIGZs
b2F0KGFfJyArIGFycmF5TmR4ICsgJyk7XG4nOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
Lk91dHB1dFR5cGUuVkVDMjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUMyOgorICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4U2hhZGVyVG1wbCArPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdcdGNvbG9yLnJnID0gY29sb3IucmcgKiB2ZWMyKGFfJyArIGFycmF5TmR4ICsgJy54eSk7
XG4nOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVDMzoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUu
SVZFQzM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5PdXRwdXRUeXBlLlVWRUMzOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVy
VG1wbCArPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdGNvbG9yID0gY29sb3Iucmdi
ICogdmVjMyhhXycgKyBhcnJheU5keCArICcueHl6KTtcbic7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUM0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5JVkVDNDoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVVZFQzQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJUbXBsICs9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1x0Y29sb3IgPSBjb2xvci5yZ2IgKiB2ZWMzKGFfJyArIGFycmF5TmR4ICsg
Jy54eXopICogZmxvYXQoYV8nICsgYXJyYXlOZHggKyAnLncpO1xuJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3V0cHV0IHR5cGUnKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRlclRtcGwgKz0KKyAgICAg
ICAgICAgICdcdHZfY29sb3IgPSB2ZWM0KHVfY29sb3JTY2FsZSAqIGNvbG9yLCAxLjApICogMC41
ICsgdmVjNCgwLjUsIDAuNSwgMC41LCAwLjUpO1xuJyArCisgICAgICAgICAgICAnXHRnbF9Qb3Np
dGlvbiA9IHZlYzQodV9jb29yZFNjYWxlICogY29vcmQsIDEuMCwgMS4wKTtcbicgKworICAgICAg
ICAgICAgJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHZlcnRleFNoYWRlclRtcGw7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5nZW5GcmFnbWVudFNvdXJjZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciBw
YXJhbXM7CisKKyAgICAgICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZVNoYWRlclBhcmFtcygpOwor
CisgICAgICAgIHZhciBmcmFnbWVudFNoYWRlclRtcGwgPSBwYXJhbXNbJ0ZSQUdfSERSJ10gKwor
ICAgICAgICAgICAgcGFyYW1zWydGUkFHX0lOJ10gKyAnICcgKyBwYXJhbXNbJ0NPTF9QUkVDSVNJ
T04nXSArICcgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICAgICAndm9pZCBtYWluKHZvaWQp
XG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICdcdCcgKyBwYXJhbXNbJ0ZS
QUdfQ09MT1InXSArICc9IHZfY29sb3I7XG4nICsKKyAgICAgICAgICAgICd9XG4nOworCisgICAg
ICAgIHJldHVybiBmcmFnbWVudFNoYWRlclRtcGw7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge0FycmF5PHN0cmluZz59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuZ2VuZXJhdGVTaGFkZXJQYXJhbXMgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgcGFyYW1zID0g
W107CisgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzR0xTTFZlcnNpb25TdXBwb3J0ZWQoZ2ws
IGdsdVNoYWRlclV0aWwuR0xTTFZlcnNpb24uVjMwMF9FUykpIHsKKyAgICAgICAgICAgIHBhcmFt
c1snVlRYX0lOJ10gPSAnaW4nOworICAgICAgICAgICAgcGFyYW1zWydWVFhfT1VUJ10gPSAnb3V0
JzsKKyAgICAgICAgICAgIHBhcmFtc1snRlJBR19JTiddID0gJ2luJzsKKyAgICAgICAgICAgIHBh
cmFtc1snRlJBR19DT0xPUiddID0gJ2RFUVBfRnJhZ0NvbG9yJzsKKyAgICAgICAgICAgIHBhcmFt
c1snVlRYX0hEUiddID0gJyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICAgICAgICAgIHBhcmFtc1sn
RlJBR19IRFInXSA9ICcjdmVyc2lvbiAzMDAgZXNcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCBt
ZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4nOworICAgICAgICAgICAgcGFyYW1zWydDT0xf
UFJFQ0lTSU9OJ10gPSAnbWVkaXVtcCc7CisgICAgICAgIH0gZWxzZSBpZiAoZ2x1U2hhZGVyVXRp
bC5pc0dMU0xWZXJzaW9uU3VwcG9ydGVkKGdsLCBnbHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9uLlYx
MDBfRVMpKSB7CisgICAgICAgICAgICBwYXJhbXNbJ1ZUWF9JTiddID0gJ2F0dHJpYnV0ZSc7Cisg
ICAgICAgICAgICBwYXJhbXNbJ1ZUWF9PVVQnXSA9ICd2YXJ5aW5nJzsKKyAgICAgICAgICAgIHBh
cmFtc1snRlJBR19JTiddID0gJ3ZhcnlpbmcnOworICAgICAgICAgICAgcGFyYW1zWydGUkFHX0NP
TE9SJ10gPSAnZ2xfRnJhZ0NvbG9yJzsKKyAgICAgICAgICAgIHBhcmFtc1snVlRYX0hEUiddID0g
Jyc7CisgICAgICAgICAgICBwYXJhbXNbJ0ZSQUdfSERSJ10gPSAnJzsKKyAgICAgICAgICAgIHBh
cmFtc1snQ09MX1BSRUNJU0lPTiddID0gJ21lZGl1bXAnOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBHTCB2ZXJzaW9uJyk7CisKKyAgICAgICAg
cmV0dXJuIHBhcmFtczsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7cnJH
ZW5lcmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNoYWRlclByb2dyYW0ucHJvdG90eXBlLm1hcE91dHB1dFR5cGUgPSBmdW5jdGlvbih0
eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICBjYXNlIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUMyOgorICAgICAgICAgICAgY2Fz
ZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVDMzoKKyAgICAgICAgICAg
IGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVDsKKwor
ICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSU5U
OgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUu
SVZFQzI6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5JVkVDMzoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5P
dXRwdXRUeXBlLklWRUM0OgorICAgICAgICAgICAgICAgIHJldHVybiByckdlbmVyaWNWZWN0b3Iu
R2VuZXJpY1ZlY1R5cGUuSU5UMzI7CisKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVJTlQ6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VVkVDMjoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUMzOgorICAgICAgICAgICAgY2FzZSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVVZFQzQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5VSU5UMzI7CisKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlk
IG91dHB1dCB0eXBlJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSB0eXBlCisgICAgICog
QHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNoYWRl
clByb2dyYW0ucHJvdG90eXBlLmdldENvbXBvbmVudENvdW50ID0gZnVuY3Rpb24odHlwZSkgewor
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5PdXRwdXRUeXBlLkZMT0FUOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSU5UOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVUlOVDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gMTsKKworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1
dFR5cGUuVkVDMjoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5P
dXRwdXRUeXBlLklWRUMyOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLk91dHB1dFR5cGUuVVZFQzI6CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisKKyAgICAg
ICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzM6Cisg
ICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5JVkVD
MzoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBl
LlVWRUMzOgorICAgICAgICAgICAgICAgIHJldHVybiAzOworCisgICAgICAgICAgICBjYXNlIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUM0OgorICAgICAgICAgICAgY2Fz
ZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzQ6CisgICAgICAgICAg
ICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5VVkVDNDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gNDsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3V0cHV0IHR5cGUnKTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc0RyYXdUZXN0cy5BdHRy
aWJ1dGVBcnJheT59IGFycmF5cworICAgICAqIEByZXR1cm4ge3NnbHJTaGFkZXJQcm9ncmFtLlNo
YWRlclByb2dyYW1EZWNsYXJhdGlvbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5jcmVhdGVQcm9ncmFtRGVjbGFyYXRpb24gPSBmdW5j
dGlvbihhcnJheXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFk
ZXJQcm9ncmFtRGVjbGFyYXRpb259ICovIHZhciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW1EZWNsYXJhdGlvbigpOworCisgICAgICAgIGZvciAodmFyIGFycmF5TmR4
ID0gMDsgYXJyYXlOZHggPCBhcnJheXMubGVuZ3RoOyBhcnJheU5keCsrKQorICAgICAgICAgICAg
ZGVjbC5wdXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRy
aWJ1dGUoJ2FfJyArIGFycmF5TmR4LCB0aGlzLm1hcE91dHB1dFR5cGUoYXJyYXlzW2FycmF5TmR4
XS5nZXRPdXRwdXRUeXBlKCkpKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4VG9GcmFnbWVu
dFZhcnlpbmcobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nKHJy
R2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hG
cmFnbWVudE91dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQocnJHZW5l
cmljVmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVy
dGV4U291cmNlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UodGhpcy5nZW5WZXJ0
ZXhTb3VyY2UoYXJyYXlzKSkpOworICAgICAgICBkZWNsLnB1c2hGcmFnbWVudFNvdXJjZShuZXcg
c2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRTb3VyY2UodGhpcy5nZW5GcmFnbWVudFNvdXJjZSgp
KSk7CisKKyAgICAgICAgZGVjbC5wdXNoVW5pZm9ybShuZXcgc2dsclNoYWRlclByb2dyYW0uVW5p
Zm9ybSgndV9jb29yZFNjYWxlJywgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVCkpOworICAg
ICAgICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X2Nv
bG9yU2NhbGUnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgcmV0
dXJuIGRlY2w7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEB0eXBlZGVmIHtnbHNEcmF3VGVz
dHMuUmFuZG9tQXJyYXlHZW5lcmF0b3J9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLlJhbmRv
bUFycmF5R2VuZXJhdG9yID0ge307CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dvb2cuVHlw
ZWRBcnJheX0gZGF0YQorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5wdXRUeXBlfSB0eXBlCisgICAgICogQHBhcmFtIHtkZVJhbmRvbS5SYW5kb219IHJuZAorICAg
ICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkdMVmFsdWV9IG1pbgorICAgICAqIEBwYXJhbSB7Z2xz
RHJhd1Rlc3RzLkdMVmFsdWV9IG1heAorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5SYW5kb21B
cnJheUdlbmVyYXRvci5zZXREYXRhID0gZnVuY3Rpb24oZGF0YSwgdHlwZSwgcm5kLCBtaW4sIG1h
eCkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICBjYXNlIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlNIT1JUOgorICAgICAgICAgICAgY2FzZSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVDoKKyAgICAg
ICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuQllURToKKyAg
ICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGUuSU5UOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklu
cHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuSW5wdXRUeXBlLkhBTEY6CisgICAgICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLmNv
cHlHTFZhbHVlVG9BcnJheShkYXRhLCBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20ocm5k
LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQgdHlwZScp
OworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGNyZWF0ZUJhc2ljQXJyYXkK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbGVt
ZW50Q291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29tcG9uZW50Q291bnQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAg
ICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlfSB0eXBlCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGZpcnN0CisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5QcmltaXRpdmV9IHByaW1pdGl2ZQorICAgICAqIEBwYXJhbSB7P2dvb2cu
VHlwZWRBcnJheX0gaW5kaWNlcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFNpemUKKyAg
ICAgKiBAcmV0dXJuIHtnb29nLlR5cGVkQXJyYXl9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3Rz
LlJhbmRvbUFycmF5R2VuZXJhdG9yLmNyZWF0ZUFycmF5ID0gZnVuY3Rpb24oc2VlZCwgZWxlbWVu
dENvdW50LCBjb21wb25lbnRDb3VudCwgb2Zmc2V0LCBzdHJpZGUsIHR5cGUsIGZpcnN0LCBwcmlt
aXRpdmUsIGluZGljZXMsIGluZGV4U2l6ZSkgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGNv
bXBvbmVudENvdW50ID49IDEgJiYgY29tcG9uZW50Q291bnQgPD0gNCwgJ1VuYWNjZXB0YWJsZSBu
dW1iZXIgb2YgY29tcG9uZW50cycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAvKiogQHR5cGUg
e2dsc0RyYXdUZXN0cy5HTFZhbHVlfSAqLyB2YXIgbWluID0gZ2xzRHJhd1Rlc3RzLkdMVmFsdWUu
Z2V0TWluVmFsdWUodHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3RzLkdMVmFs
dWV9ICovIHZhciBtYXggPSBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5nZXRNYXhWYWx1ZSh0eXBlKTsK
KworICAgICAgICB2YXIgcGFja2VkID0gdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMCB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMDsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBsaW1pdDEwID0gKDEgPDwgMTApOworICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxpbWl0MiA9ICgxIDw8IDIpOworCisKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb21wb25lbnRTaXplID0gZ2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5pbnB1dFR5cGVTaXplKHR5cGUpOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGVsZW1lbnRTaXplID0gY29tcG9uZW50U2l6ZSAqIGNvbXBvbmVudENv
dW50OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGJ1ZmZlclNpemUgPSBvZmZz
ZXQgKyBNYXRoLm1heChlbGVtZW50Q291bnQgKiBzdHJpZGUsIGVsZW1lbnRDb3VudCAqIGVsZW1l
bnRTaXplKTsKKworICAgICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXJTaXpl
KTsKKyAgICAgICAgdmFyIHdyaXRlUHRyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSwgb2Zmc2V0KTsK
KworICAgICAgICB2YXIgcHJldmlvdXNDb21wb25lbnRzRmxvYXQgPSBbMCwgMCwgMCwgMF07Cisg
ICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpOworCisgICAgICAgIGZv
ciAodmFyIHZlcnRleE5keCA9IDA7IHZlcnRleE5keCA8IGVsZW1lbnRDb3VudDsgdmVydGV4TmR4
KyspIHsKKyAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gW107CisKKyAgICAgICAgICAgIGZv
ciAodmFyIGNvbXBvbmVudE5keCA9IDA7IGNvbXBvbmVudE5keCA8IGNvbXBvbmVudENvdW50OyBj
b21wb25lbnROZHgrKykgeworICAgICAgICAgICAgICAgIHZhciBnZXRSYW5kb21Db21wb25lbnQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHBhY2tlZCBmb3JtYXRz
IHdlIGNhbid0IHVzZSBHTFZhbHVlCisgICAgICAgICAgICAgICAgICAgIGlmIChwYWNrZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnROZHggPT0gMykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBybmQuZ2V0SW50KCkgJSBsaW1pdDI7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBybmQuZ2V0SW50KCkgJSBsaW1pdDEwOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsc0RyYXdUZXN0cy5HTFZhbHVlLmdldFJhbmRvbShybmQsIG1pbiwgbWF4KTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICB2YXIgY29tcG9uZW50ID0gZ2V0UmFuZG9tQ29tcG9uZW50KCk7CisgICAgICAgICAgICAgICAg
dmFyIGNvbXBvbmVudEZsb2F0ID0gKGNvbXBvbmVudCBpbnN0YW5jZW9mIGdsc0RyYXdUZXN0cy5H
TFZhbHVlKSA/IGNvbXBvbmVudC50b0Zsb2F0KCkgOiBjb21wb25lbnQ7CisKKyAgICAgICAgICAg
ICAgICAvLyBUcnkgdG8gbm90IGNyZWF0ZSB2ZXJ0ZXggbmVhciBwcmV2aW91cworICAgICAgICAg
ICAgICAgIGlmICh2ZXJ0ZXhOZHggIT0gMCAmJiBNYXRoLmFicyhjb21wb25lbnRGbG9hdCAtIHBy
ZXZpb3VzQ29tcG9uZW50c0Zsb2F0W2NvbXBvbmVudE5keF0pIDwgbWluLnRvRmxvYXQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUb28gY2xvc2UsIHRyeSBhZ2FpbiAoYnV0IG9ubHkgb25j
ZSkKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50ID0gZ2V0UmFuZG9tQ29tcG9uZW50KCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEZsb2F0ID0gKGNvbXBvbmVudCBpbnN0YW5j
ZW9mIGdsc0RyYXdUZXN0cy5HTFZhbHVlKSA/IGNvbXBvbmVudC50b0Zsb2F0KCkgOiBjb21wb25l
bnQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNo
KGNvbXBvbmVudCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNDb21wb25lbnRzRmxvYXRbY29t
cG9uZW50TmR4XSA9IGNvbXBvbmVudEZsb2F0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAocGFja2VkKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhY2tlZFZhbHVlID0gZGVNYXRo
LmJpbmFyeU9wKAorICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLnNoaWZ0TGVmdCgvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIChjb21wb25lbnRzKVszXSwgMzApLCBkZU1hdGguYmlu
YXJ5T3AoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVNYXRoLnNoaWZ0TGVmdCgvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIChjb21wb25lbnRzKVsyXSwgMjApLCBkZU1hdGguYmlu
YXJ5T3AoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5zaGlmdExlZnQo
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyAoY29tcG9uZW50cylbMV0sIDEwKSwgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyAoY29tcG9uZW50cylbMF0sIGRlTWF0aC5CaW5hcnlPcC5P
UgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCBkZU1hdGguQmluYXJ5T3AuT1IK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCBkZU1hdGguQmluYXJ5T3AuT1IKKyAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLmNvcHlB
cnJheSh3cml0ZVB0ciwgbmV3IFVpbnQzMkFycmF5KFtwYWNrZWRWYWx1ZV0pKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY29tcG9uZW50TmR4ID0gMDsg
Y29tcG9uZW50TmR4IDwgY29tcG9uZW50Q291bnQ7IGNvbXBvbmVudE5keCsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5jb3B5R0xWYWx1ZVRvQXJyYXkod3JpdGVQdHIuc3Vi
YXJyYXkoY29tcG9uZW50TmR4ICogY29tcG9uZW50U2l6ZSksIGNvbXBvbmVudHNbY29tcG9uZW50
TmR4XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3
cml0ZVB0ciA9IHdyaXRlUHRyLnN1YmFycmF5KHN0cmlkZSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVsZW1lbnRDb3Vu
dAorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBlfSB0
eXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBtaW4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWF4CisgICAgICogQHJldHVybiB7Z29vZy5U
eXBlZEFycmF5fQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5SYW5kb21BcnJheUdlbmVyYXRv
ci5nZW5lcmF0ZUluZGljZXMgPSBmdW5jdGlvbihzZWVkLCBlbGVtZW50Q291bnQsIHR5cGUsIG9m
ZnNldCwgbWluLCBtYXgpIHsKKyAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5SYW5kb21BcnJh
eUdlbmVyYXRvci5jcmVhdGVJbmRpY2VzKHNlZWQsIGVsZW1lbnRDb3VudCwgb2Zmc2V0LCBtaW4s
IG1heCwgdHlwZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
ZWVkCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVsZW1lbnRDb3VudAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG1heAorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5kZXhUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Z29vZy5UeXBlZEFycmF5fQorICAgICAq
LworICAgIGdsc0RyYXdUZXN0cy5SYW5kb21BcnJheUdlbmVyYXRvci5jcmVhdGVJbmRpY2VzID0g
ZnVuY3Rpb24oc2VlZCwgZWxlbWVudENvdW50LCBvZmZzZXQsIG1pbiwgbWF4LCB0eXBlKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciBlbGVtZW50U2l6ZSA9IGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuaW5kZXhUeXBlU2l6ZSh0eXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9Ki8gdmFyIGJ1ZmZlclNpemUgPSBvZmZzZXQgKyBlbGVtZW50Q291bnQgKiBlbGVtZW50
U2l6ZTsKKworICAgICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXJTaXplKTsK
KyAgICAgICAgdmFyIHdyaXRlUHRyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSkuc3ViYXJyYXkob2Zm
c2V0KTsKKworICAgICAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShzZWVkKTsKKwor
ICAgICAgICAvKiBUT0RPOiBnZXQgbGltaXRzIGZvciBnaXZlbiBpbmRleCB0eXBlIC0tPiBpZiAo
bWluIDwgMCB8fCBtaW4gPiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSB8fAorICAgICAg
ICAgICAgbWF4IDwgMCB8fCBtYXggPiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSB8fAor
ICAgICAgICAgICAgbWluID4gbWF4KQorICAgICAgICAgICAgREVfQVNTRVJUKCEiSW52YWxpZCBy
YW5nZSIpOyovCisKKyAgICAgICAgLy8gSlMgcmVmcmFzdCByZXF1aXJlcyBzaHVmZmxlZCB1bmlx
dWUga2V5cworICAgICAgICB2YXIga2V5cyA9IFtdOworICAgICAgICBmb3IgKHZhciBrZXkgPSAw
OyBrZXkgPCBlbGVtZW50Q291bnQ7IGtleSsrKQorICAgICAgICAgICAga2V5cy5wdXNoKGdsc0Ry
YXdUZXN0cy5HTFZhbHVlLmNyZWF0ZShrZXksIGdsc0RyYXdUZXN0cy5pbmRleFR5cGVUb0lucHV0
VHlwZSh0eXBlKSkpOworCisgICAgICAgIGZvciAodmFyIGVsZW1lbnROZHggPSAwOyBlbGVtZW50
TmR4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnROZHgpIHsKKyAgICAgICAgICAgIHZhciByYW5k
b21rZXkgPSBybmQuZ2V0SW50KDAsIGtleXMubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICB2YXIg
bmR4ID0ga2V5c1tyYW5kb21rZXldOworCisgICAgICAgICAgICBrZXlzLnNwbGljZShyYW5kb21r
ZXksIDEpOworCisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuY29weUFycmF5KAorICAgICAgICAg
ICAgICAgIHdyaXRlUHRyLnN1YmFycmF5KGVsZW1lbnRTaXplICogZWxlbWVudE5keCksCisgICAg
ICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkobmR4Lm1fdmFsdWUuYnVmZmVyKQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNlZWQKKyAgICAgKiBA
cGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gdHlwZQorICAgICAq
IEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLlJhbmRv
bUFycmF5R2VuZXJhdG9yLmdlbmVyYXRlQXR0cmlidXRlVmFsdWUgPSBmdW5jdGlvbihzZWVkLCB0
eXBlKSB7CisgICAgICAgIHZhciByYW5kb20gPSBuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpOwor
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2xz
RHJhd1Rlc3RzLmdlbmVyYXRlUmFuZG9tVmVjNChyYW5kb20pOworCisgICAgICAgICAgICBjYXNl
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2xzRHJhd1Rlc3RzLmdlbmVyYXRlUmFuZG9tSVZlYzQocmFuZG9tKTsKKworICAg
ICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05F
RF9JTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5nZW5lcmF0ZVJhbmRv
bVVWZWM0KHJhbmRvbSk7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSB0eXBlJyk7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgLy8gQXR0cmlidXRlUGFjaworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
Z2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0IHwgc2dsckdMQ29udGV4dC5HTENv
bnRleHR9IGRyYXdDb250ZXh0CisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzY3JlZW5T
aXplICgyIHBvc2l0aXZlIGVsZW1lbnRzIGluIGFycmF5KQorICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gdXNlVmFvCisgICAgICogQHBhcmFtIHtib29sZWFufSBsb2dFbmFibGVkCisgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZVBhY2sgPSBmdW5j
dGlvbihkcmF3Q29udGV4dCwgc2NyZWVuU2l6ZSwgdXNlVmFvLCBsb2dFbmFibGVkKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dCB8IHNn
bHJHTENvbnRleHQuR0xDb250ZXh0fSAqLyB0aGlzLm1fY3R4ID0gZHJhd0NvbnRleHQ7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNEcmF3VGVzdHMuQXR0cmlidXRlQXJyYXk+fSAqLyB0
aGlzLm1fYXJyYXlzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclNoYWRlclByb2dyYW0u
U2hhZGVyUHJvZ3JhbX0gKi8gdGhpcy5tX3Byb2dyYW07CisgICAgICAgIC8qKiBAdHlwZSB7dGN1
U3VyZmFjZS5TdXJmYWNlfSAqLyB0aGlzLm1fc2NyZWVuID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFj
ZShzY3JlZW5TaXplWzBdLCBzY3JlZW5TaXplWzFdKTsKKyAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB0aGlzLm1fdXNlVmFvID0gdXNlVmFvOworICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHRoaXMubV9sb2dFbmFibGVkID0gbG9nRW5hYmxlZDsKKyAgICAgICAgLyoqIEB0eXBl
IHtXZWJHTFByb2dyYW0gfCBzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtIHwgbnVsbH0g
Ki8gdGhpcy5tX3Byb2dyYW1JRCA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdHxzZ2xyUmVmZXJlbmNlQ29udGV4dC5WZXJ0ZXhBcnJheXxudWxsfSAqLyB0
aGlzLm1fdmFvSUQgPSBudWxsOworCisgICAgICAgIGlmICh0aGlzLm1fdXNlVmFvKQorICAgICAg
ICAgICAgdGhpcy5tX3Zhb0lEID0gdGhpcy5tX2N0eC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VTdXJmYWNlLlN1cmZhY2V9CisgICAg
ICovCisgICAgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZVBhY2sucHJvdG90eXBlLmdldFN1cmZhY2Ug
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9zY3JlZW47CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpCisgICAgICogQHJldHVybiB7Z2xzRHJh
d1Rlc3RzLkF0dHJpYnV0ZUFycmF5fQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5BdHRyaWJ1
dGVQYWNrLnByb3RvdHlwZS5nZXRBcnJheSA9IGZ1bmN0aW9uKGkpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMubV9hcnJheXNbaV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gbnVt
YmVyCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZVBhY2sucHJvdG90eXBlLmdl
dEFycmF5Q291bnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9hcnJheXMu
bGVuZ3RoOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLlN0b3JhZ2V9IHN0b3JhZ2UKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMu
QXR0cmlidXRlUGFjay5wcm90b3R5cGUubmV3QXJyYXkgPSBmdW5jdGlvbihzdG9yYWdlKSB7Cisg
ICAgICAgIHRoaXMubV9hcnJheXMucHVzaChuZXcgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5
KHN0b3JhZ2UsIHRoaXMubV9jdHgpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogY2xlYXJB
cnJheXMKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuQXR0cmlidXRlUGFjay5wcm90b3R5cGUu
Y2xlYXJBcnJheXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX2FycmF5cy5sZW5ndGgg
PSAwOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiB1cGRhdGVQcm9ncmFtCisgICAgICovCisg
ICAgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZVBhY2sucHJvdG90eXBlLnVwZGF0ZVByb2dyYW0gPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMubV9wcm9ncmFtSUQpCisgICAgICAgICAgICB0
aGlzLm1fY3R4LmRlbGV0ZVByb2dyYW0odGhpcy5tX3Byb2dyYW1JRCk7CisKKyAgICAgICAgdGhp
cy5tX3Byb2dyYW0gPSBuZXcgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U2hhZGVyUHJvZ3JhbSh0aGlz
Lm1fYXJyYXlzKTsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW1JRCA9IHRoaXMubV9jdHguY3JlYXRl
UHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlfSBwcmltaXRpdmUKKyAgICAg
KiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2R9IGRyYXdNZXRo
b2QKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZmlyc3RWZXJ0ZXgKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gdmVydGV4Q291bnQKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLkluZGV4VHlwZX0gaW5kZXhUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4T2Zm
c2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlU3RhcnQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gcmFuZ2VFbmQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5zdGFuY2VDb3VudAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBjb29yZFNjYWxlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNv
bG9yU2NhbGUKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheX0gaW5k
ZXhBcnJheQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5BdHRyaWJ1dGVQYWNrLnByb3RvdHlw
ZS5yZW5kZXIgPSBmdW5jdGlvbihwcmltaXRpdmUsIGRyYXdNZXRob2QsIGZpcnN0VmVydGV4LCB2
ZXJ0ZXhDb3VudCwgaW5kZXhUeXBlLAorICAgICAgICBpbmRleE9mZnNldCwgcmFuZ2VTdGFydCwg
cmFuZ2VFbmQsIGluc3RhbmNlQ291bnQsIGNvb3JkU2NhbGUsIGNvbG9yU2NhbGUsIGluZGV4QXJy
YXkpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fcHJvZ3JhbSAhPSBudWxsLCAn
UHJvZ3JhbSBpcyBudWxsJywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KHRoaXMubV9wcm9ncmFtSUQgIT0gbnVsbCwgJ05vIGNvbnRleHQgY3JlYXRlZCBwcm9ncmFtJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgIHRoaXMubV9jdHgudmlld3BvcnQoMCwgMCwgdGhpcy5t
X3NjcmVlbi5nZXRXaWR0aCgpLCB0aGlzLm1fc2NyZWVuLmdldEhlaWdodCgpKTsKKyAgICAgICAg
dGhpcy5tX2N0eC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIHRoaXMu
bV9jdHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgdGhpcy5tX2N0eC51
c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtSUQpOworCisgICAgICAgIHRoaXMubV9jdHgudW5pZm9y
bTFmKHRoaXMubV9jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9ncmFtSUQsICd1X2Nv
b3JkU2NhbGUnKSwgY29vcmRTY2FsZSk7CisgICAgICAgIHRoaXMubV9jdHgudW5pZm9ybTFmKHRo
aXMubV9jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9ncmFtSUQsICd1X2NvbG9yU2Nh
bGUnKSwgY29sb3JTY2FsZSk7CisKKyAgICAgICAgaWYgKHRoaXMubV91c2VWYW8pCisgICAgICAg
ICAgICB0aGlzLm1fY3R4LmJpbmRWZXJ0ZXhBcnJheSh0aGlzLm1fdmFvSUQpOworCisgICAgICAg
IGlmIChpbmRleEFycmF5KQorICAgICAgICAgICAgaW5kZXhBcnJheS5iaW5kSW5kZXhBcnJheShn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlRhcmdldC5FTEVNRU5UX0FSUkFZKTsKKworICAgICAg
ICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgdGhpcy5tX2FycmF5cy5sZW5ndGg7
IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgIHZhciBhdHRyaWJOYW1lID0gJyc7CisgICAgICAg
ICAgICBhdHRyaWJOYW1lICs9ICdhXycgKyBhcnJheU5keDsKKworICAgICAgICAgICAgdmFyIGxv
YyA9IHRoaXMubV9jdHguZ2V0QXR0cmliTG9jYXRpb24odGhpcy5tX3Byb2dyYW1JRCwgYXR0cmli
TmFtZSk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLm1fYXJyYXlzW2FycmF5TmR4XS5pc0JvdW5k
KCkpCisgICAgICAgICAgICAgICAgdGhpcy5tX2N0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShs
b2MpOworCisgICAgICAgICAgICB0aGlzLm1fYXJyYXlzW2FycmF5TmR4XS5iaW5kQXR0cmlidXRl
KGxvYyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZHJhd01ldGhvZCA9PSBnbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJBV0FSUkFZUykKKyAgICAgICAgICAgIHRoaXMu
bV9jdHguZHJhd0FycmF5cyhnbHNEcmF3VGVzdHMucHJpbWl0aXZlVG9HTChwcmltaXRpdmUpLCBm
aXJzdFZlcnRleCwgdmVydGV4Q291bnQpOworICAgICAgICBlbHNlIGlmIChkcmF3TWV0aG9kID09
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXQVJSQVlTX0lOU1RBTkNF
RCkKKyAgICAgICAgICAgIHRoaXMubV9jdHguZHJhd0FycmF5c0luc3RhbmNlZChnbHNEcmF3VGVz
dHMucHJpbWl0aXZlVG9HTChwcmltaXRpdmUpLCBmaXJzdFZlcnRleCwgdmVydGV4Q291bnQsIGlu
c3RhbmNlQ291bnQpOworICAgICAgICBlbHNlIGlmIChkcmF3TWV0aG9kID09IGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFMpCisgICAgICAgICAgICB0aGlz
Lm1fY3R4LmRyYXdFbGVtZW50cyhnbHNEcmF3VGVzdHMucHJpbWl0aXZlVG9HTChwcmltaXRpdmUp
LCB2ZXJ0ZXhDb3VudCwgZ2xzRHJhd1Rlc3RzLmluZGV4VHlwZVRvR0woaW5kZXhUeXBlKSwgaW5k
ZXhPZmZzZXQpOworICAgICAgICBlbHNlIGlmIChkcmF3TWV0aG9kID09IGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFNfUkFOR0VEKQorICAgICAgICAgICAg
dGhpcy5tX2N0eC5kcmF3UmFuZ2VFbGVtZW50cyhnbHNEcmF3VGVzdHMucHJpbWl0aXZlVG9HTChw
cmltaXRpdmUpLCByYW5nZVN0YXJ0LCByYW5nZUVuZCwgdmVydGV4Q291bnQsIGdsc0RyYXdUZXN0
cy5pbmRleFR5cGVUb0dMKGluZGV4VHlwZSksIGluZGV4T2Zmc2V0KTsKKyAgICAgICAgZWxzZSBp
ZiAoZHJhd01ldGhvZCA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJB
V0VMRU1FTlRTX0lOU1RBTkNFRCkKKyAgICAgICAgICAgIHRoaXMubV9jdHguZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKGdsc0RyYXdUZXN0cy5wcmltaXRpdmVUb0dMKHByaW1pdGl2ZSksIHZlcnRleENv
dW50LCBnbHNEcmF3VGVzdHMuaW5kZXhUeXBlVG9HTChpbmRleFR5cGUpLCBpbmRleE9mZnNldCwg
aW5zdGFuY2VDb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignSW52YWxpZCBkcmF3IG1ldGhvZCcpOworCisgICAgICAgIGZvciAodmFyIGFycmF5TmR4ID0g
MDsgYXJyYXlOZHggPCB0aGlzLm1fYXJyYXlzLmxlbmd0aDsgYXJyYXlOZHgrKykgeworICAgICAg
ICAgICAgaWYgKHRoaXMubV9hcnJheXNbYXJyYXlOZHhdLmlzQm91bmQoKSkgeworICAgICAgICAg
ICAgICAgIHZhciBhdHRyaWJOYW1lID0gJyc7CisgICAgICAgICAgICAgICAgYXR0cmliTmFtZSAr
PSAnYV8nICsgYXJyYXlOZHg7CisKKyAgICAgICAgICAgICAgICB2YXIgbG9jID0gdGhpcy5tX2N0
eC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLm1fcHJvZ3JhbUlELCBhdHRyaWJOYW1lKTsKKworICAg
ICAgICAgICAgICAgIHRoaXMubV9jdHguZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvYyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5tX3VzZVZhbykKKyAg
ICAgICAgICAgIHRoaXMubV9jdHguYmluZFZlcnRleEFycmF5KG51bGwpOworCisgICAgICAgIHRo
aXMubV9jdHgudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgdGhpcy5tX3NjcmVlbi5yZWFkVmll
d3BvcnQodGhpcy5tX2N0eCwgWzAgLCAwLCB0aGlzLm1fc2NyZWVuLmdldFdpZHRoKCksIHRoaXMu
bV9zY3JlZW4uZ2V0SGVpZ2h0KCldKTsKKyAgICB9OworCisgICAgLy8gRHJhd1Rlc3RTcGVjCisK
KyAgICAvKioKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7P2dsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlfSAqLyB0aGlzLnByaW1pdGl2ZSA9IG51bGw7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnByaW1pdGl2ZUNvdW50ID0gMDsgLy8h
PCBudW1iZXIgb2YgcHJpbWl0aXZlcyB0byBkcmF3IChwZXIgaW5zdGFuY2UpCisKKyAgICAgICAg
LyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kfSAqLyB0aGlz
LmRyYXdNZXRob2QgPSBudWxsOworICAgICAgICAvKiogQHR5cGUgez9nbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLkluZGV4VHlwZX0gKi8gdGhpcy5pbmRleFR5cGUgPSBudWxsOyAvLyE8IHVzZWQg
b25seSBpZiBkcmF3TWV0aG9kID0gRHJhd0VsZW1lbnRzKgorICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgPSAwOyAvLyE8IHVzZWQgb25seSBpZiBk
cmF3TWV0aG9kID0gRHJhd0VsZW1lbnRzKgorICAgICAgICAvKiogQHR5cGUgez9nbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2V9ICovIHRoaXMuaW5kZXhTdG9yYWdlID0gbnVsbDsgLy8h
PCB1c2VkIG9ubHkgaWYgZHJhd01ldGhvZCA9IERyYXdFbGVtZW50cyoKKyAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMuZmlyc3QgPSAwOyAvLyE8IHVzZWQgb25seSBpZiBkcmF3TWV0
aG9kID0gRHJhd0FycmF5cyoKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuaW5k
ZXhNaW4gPSAwOyAvLyE8IHVzZWQgb25seSBpZiBkcmF3TWV0aG9kID0gRHJhdypSYW5nZWQKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMuaW5kZXhNYXggPSAwOyAvLyE8IHVzZWQg
b25seSBpZiBkcmF3TWV0aG9kID0gRHJhdypSYW5nZWQKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMuaW5zdGFuY2VDb3VudCA9IDA7IC8vITwgdXNlZCBvbmx5IGlmIGRyYXdNZXRo
b2QgPSBEcmF3Kkluc3RhbmNlZCBvciBEcmF3KkluZGlyZWN0CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB0aGlzLmluZGlyZWN0T2Zmc2V0ID0gMDsgLy8hPCB1c2VkIG9ubHkgaWYgZHJh
d01ldGhvZCA9IERyYXcqSW5kaXJlY3QKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRo
aXMuYmFzZVZlcnRleCA9IDA7IC8vITwgdXNlZCBvbmx5IGlmIGRyYXdNZXRob2QgPSBEcmF3RWxl
bWVudHNJbmRpcmVjdCBvciAqQmFzZVZlcnRleAorCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjPn0gKi8gdGhpcy5hdHRyaWJz
ID0gW107CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5UYXJnZXR9IHRhcmdldAorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLnRhcmdldFRvU3RyaW5nID0gZnVuY3Rp
b24odGFyZ2V0KSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModGFyZ2V0ICE9IG51bGwsICdU
YXJnZXQgaXMgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgdGFyZ2V0cyA9IFsK
KyAgICAgICAgICAgICdlbGVtZW50X2FycmF5JywgLy8gVEFSR0VUX0VMRU1FTlRfQVJSQVkgPSAw
LAorICAgICAgICAgICAgJ2FycmF5JyAvLyBUQVJHRVRfQVJSQVksCisgICAgICAgIF07CisgICAg
ICAgIGFzc2VydE1zZ09wdGlvbnModGFyZ2V0cy5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5UYXJnZXQpLmxlbmd0aCwKKyAgICAgICAgICAgICdUaGUgYW1v
dW50IG9mIHRhcmdldCBuYW1lcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgYW1vdW50IG9mIHRhcmdl
dHMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRhcmdldHNbdGFyZ2V0XTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbnB1dFR5cGVUb1N0cmluZyA9IGZ1bmN0aW9uKHR5
cGUpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0eXBlICE9IG51bGwsICdUeXBlIGlzIG51
bGwnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdmFyIHR5cGVzID0gWworICAgICAgICAgICAg
J2Zsb2F0JywgLy8gSU5QVVRUWVBFX0ZMT0FUID0gMCwKKworICAgICAgICAgICAgJ2J5dGUnLCAv
LyBJTlBVVFRZUEVfQllURSwKKyAgICAgICAgICAgICdzaG9ydCcsIC8vIElOUFVUVFlQRV9TSE9S
VCwKKworICAgICAgICAgICAgJ3Vuc2lnbmVkX2J5dGUnLCAvLyBJTlBVVFRZUEVfVU5TSUdORURf
QllURSwKKyAgICAgICAgICAgICd1bnNpZ25lZF9zaG9ydCcsIC8vIElOUFVUVFlQRV9VTlNJR05F
RF9TSE9SVCwKKworICAgICAgICAgICAgJ2ludCcsIC8vIElOUFVUVFlQRV9JTlQsCisgICAgICAg
ICAgICAndW5zaWduZWRfaW50JywgLy8gSU5QVVRUWVBFX1VOU0lHTkVEX0lOVCwKKyAgICAgICAg
ICAgICdoYWxmJywgLy8gSU5QVVRUWVBFX0hBTEYsCisgICAgICAgICAgICAndW5zaWduZWRfaW50
Ml8xMF8xMF8xMCcsIC8vIElOUFVUVFlQRV9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCwKKyAgICAg
ICAgICAgICdpbnQyXzEwXzEwXzEwJyAvLyBJTlBVVFRZUEVfSU5UXzJfMTBfMTBfMTAsCisgICAg
ICAgIF07CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZXMubGVuZ3RoID09IE9iamVjdC5r
ZXlzKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlKS5sZW5ndGgsCisgICAgICAg
ICAgICAnVGhlIGFtb3VudCBvZiB0eXBlIG5hbWVzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBhbW91
bnQgb2YgdHlwZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHR5cGVzW3R5cGVd
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLk91dHB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICov
CisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5vdXRwdXRUeXBlVG9TdHJpbmcgPSBmdW5j
dGlvbih0eXBlKSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnModHlwZSAhPSBudWxsLCAnVHlw
ZSBpcyBudWxsJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHZhciB0eXBlcyA9IFsKKyAgICAg
ICAgICAgICdmbG9hdCcsIC8vIE9VVFBVVFRZUEVfRkxPQVQgPSAwLAorICAgICAgICAgICAgJ3Zl
YzInLCAvLyBPVVRQVVRUWVBFX1ZFQzIsCisgICAgICAgICAgICAndmVjMycsIC8vIE9VVFBVVFRZ
UEVfVkVDMywKKyAgICAgICAgICAgICd2ZWM0JywgLy8gT1VUUFVUVFlQRV9WRUM0LAorCisgICAg
ICAgICAgICAnaW50JywgLy8gT1VUUFVUVFlQRV9JTlQsCisgICAgICAgICAgICAndWludCcsIC8v
IE9VVFBVVFRZUEVfVUlOVCwKKworICAgICAgICAgICAgJ2l2ZWMyJywgLy8gT1VUUFVUVFlQRV9J
VkVDMiwKKyAgICAgICAgICAgICdpdmVjMycsIC8vIE9VVFBVVFRZUEVfSVZFQzMsCisgICAgICAg
ICAgICAnaXZlYzQnLCAvLyBPVVRQVVRUWVBFX0lWRUM0LAorCisgICAgICAgICAgICAndXZlYzIn
LCAvLyBPVVRQVVRUWVBFX1VWRUMyLAorICAgICAgICAgICAgJ3V2ZWMzJywgLy8gT1VUUFVUVFlQ
RV9VVkVDMywKKyAgICAgICAgICAgICd1dmVjNCcgLy8gT1VUUFVUVFlQRV9VVkVDNCwKKyAgICAg
ICAgXTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0eXBlcy5sZW5ndGggPT0gT2JqZWN0Lmtl
eXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlKS5sZW5ndGgsCisgICAgICAg
ICAgICAnVGhlIGFtb3VudCBvZiB0eXBlIG5hbWVzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBhbW91
bnQgb2YgdHlwZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHR5cGVzW3R5cGVd
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLlVzYWdlfSB1c2FnZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAg
ICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLnVzYWdlVHlwZVRvU3RyaW5nID0gZnVuY3Rpb24o
dXNhZ2UpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh1c2FnZSAhPSBudWxsLCAnVXNhZ2Ug
aXMgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2YXIgdXNhZ2VzID0gWworICAgICAg
ICAgICAgJ2R5bmFtaWNfZHJhdycsIC8vIFVTQUdFX0RZTkFNSUNfRFJBVyA9IDAsCisgICAgICAg
ICAgICAnc3RhdGljX2RyYXcnLCAvLyBVU0FHRV9TVEFUSUNfRFJBVywKKyAgICAgICAgICAgICdz
dHJlYW1fZHJhdycsIC8vIFVTQUdFX1NUUkVBTV9EUkFXLAorCisgICAgICAgICAgICAnc3RyZWFt
X3JlYWQnLCAvLyBVU0FHRV9TVFJFQU1fUkVBRCwKKyAgICAgICAgICAgICdzdHJlYW1fY29weScs
IC8vIFVTQUdFX1NUUkVBTV9DT1BZLAorCisgICAgICAgICAgICAnc3RhdGljX3JlYWQnLCAvLyBV
U0FHRV9TVEFUSUNfUkVBRCwKKyAgICAgICAgICAgICdzdGF0aWNfY29weScsIC8vIFVTQUdFX1NU
QVRJQ19DT1BZLAorCisgICAgICAgICAgICAnZHluYW1pY19yZWFkJywgLy8gVVNBR0VfRFlOQU1J
Q19SRUFELAorICAgICAgICAgICAgJ2R5bmFtaWNfY29weScgLy8gVVNBR0VfRFlOQU1JQ19DT1BZ
LAorICAgICAgICBdOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHVzYWdlcy5sZW5ndGggPT0g
T2JqZWN0LmtleXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Vc2FnZSkubGVuZ3RoLAorICAg
ICAgICAgICAgJ1RoZSBhbW91bnQgb2YgdXNhZ2UgbmFtZXMgaXMgZGlmZmVyZW50IHRoYW4gdGhl
IGFtb3VudCBvZiB1c2FnZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHVzYWdl
c1t1c2FnZV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuU3RvcmFnZX0gc3RvcmFnZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLnN0b3JhZ2VUb1N0cmluZyA9
IGZ1bmN0aW9uKHN0b3JhZ2UpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhzdG9yYWdlICE9
IG51bGwsICdTdG9yYWdlIGlzIG51bGwnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdmFyIHN0
b3JhZ2VzID0gWworICAgICAgICAgICAgJ3VzZXJfcHRyJywgLy8gU1RPUkFHRV9VU0VSID0gMCwK
KyAgICAgICAgICAgICdidWZmZXInIC8vIFNUT1JBR0VfQlVGRkVSLAorICAgICAgICBdOworICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKHN0b3JhZ2VzLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UpLmxlbmd0aCwKKyAgICAgICAgICAgICdUaGUg
YW1vdW50IG9mIHN0b3JhZ2UgbmFtZXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGFtb3VudCBvZiBz
dG9yYWdlcycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICByZXR1cm4gc3RvcmFnZXNbc3RvcmFn
ZV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5QcmltaXRpdmV9IHByaW1pdGl2ZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLnByaW1pdGl2ZVRvU3RyaW5nID0g
ZnVuY3Rpb24ocHJpbWl0aXZlKSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocHJpbWl0aXZl
ICE9IG51bGwsICdQcmltaXRpdmUgaXMgbnVsbCcsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICB2
YXIgcHJpbWl0aXZlcyA9IFsKKyAgICAgICAgICAgICdwb2ludHMnLCAvLyBQUklNSVRJVkVfUE9J
TlRTICwKKyAgICAgICAgICAgICd0cmlhbmdsZXMnLCAvLyBQUklNSVRJVkVfVFJJQU5HTEVTLAor
ICAgICAgICAgICAgJ3RyaWFuZ2xlX2ZhbicsIC8vIFBSSU1JVElWRV9UUklBTkdMRV9GQU4sCisg
ICAgICAgICAgICAndHJpYW5nbGVfc3RyaXAnLCAvLyBQUklNSVRJVkVfVFJJQU5HTEVfU1RSSVAs
CisgICAgICAgICAgICAnbGluZXMnLCAvLyBQUklNSVRJVkVfTElORVMKKyAgICAgICAgICAgICds
aW5lX3N0cmlwJywgLy8gUFJJTUlUSVZFX0xJTkVfU1RSSVAKKyAgICAgICAgICAgICdsaW5lX2xv
b3AnCisgICAgICAgIF07CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocHJpbWl0aXZlcy5sZW5n
dGggPT0gT2JqZWN0LmtleXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUpLmxl
bmd0aCwKKyAgICAgICAgICAgICdUaGUgYW1vdW50IG9mIHByaW1pdGl2ZSBuYW1lcyBpcyBkaWZm
ZXJlbnQgdGhhbiB0aGUgYW1vdW50IG9mIHByaW1pdGl2ZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAg
ICAgICAgcmV0dXJuIHByaW1pdGl2ZXNbcHJpbWl0aXZlXTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGV9IHR5cGUK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5pbmRleFR5cGVUb1N0cmluZyA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgYXNz
ZXJ0TXNnT3B0aW9ucyh0eXBlICE9IG51bGwsICdJbmRleCB0eXBlIGlzIG51bGwnLCBmYWxzZSwg
dHJ1ZSk7CisKKyAgICAgICAgdmFyIGluZGV4VHlwZXMgPSBbCisgICAgICAgICAgICAnYnl0ZScs
IC8vIElOREVYVFlQRV9CWVRFID0gMCwKKyAgICAgICAgICAgICdzaG9ydCcsIC8vIElOREVYVFlQ
RV9TSE9SVCwKKyAgICAgICAgICAgICdpbnQnIC8vIElOREVYVFlQRV9JTlQsCisgICAgICAgIF07
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoaW5kZXhUeXBlcy5sZW5ndGggPT0gT2JqZWN0Lmtl
eXMoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbmRleFR5cGUpLmxlbmd0aCwKKyAgICAgICAg
ICAgICdUaGUgYW1vdW50IG9mIGluZGV4IHR5cGUgbmFtZXMgaXMgZGlmZmVyZW50IHRoYW4gdGhl
IGFtb3VudCBvZiBpbmRleCB0eXBlcycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICByZXR1cm4g
aW5kZXhUeXBlc1t0eXBlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kfSBtZXRob2QKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5kcmF3TWV0
aG9kVG9TdHJpbmcgPSBmdW5jdGlvbihtZXRob2QpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhtZXRob2QgIT0gbnVsbCwgJ01ldGhvZCBpcyBudWxsJywgZmFsc2UsIHRydWUpOworCisgICAg
ICAgIHZhciBtZXRob2RzID0gWworICAgICAgICAgICAgJ2RyYXdfYXJyYXlzJywgLy8hPCBEUkFX
TUVUSE9EX0RSQVdBUlJBWVMKKyAgICAgICAgICAgICdkcmF3X2FycmF5c19pbnN0YW5jZWQnLCAv
LyE8IERSQVdNRVRIT0RfRFJBV0FSUkFZU19JTlNUQU5DRUQKKyAgICAgICAgICAgICdkcmF3X2Vs
ZW1lbnRzJywgLy8hPCBEUkFXTUVUSE9EX0RSQVdFTEVNRU5UUworICAgICAgICAgICAgJ2RyYXdf
cmFuZ2VfZWxlbWVudHMnLCAvLyE8IERSQVdNRVRIT0RfRFJBV0VMRU1FTlRTX1JBTkdFRAorICAg
ICAgICAgICAgJ2RyYXdfZWxlbWVudHNfaW5zdGFuY2VkJyAvLyE8IERSQVdNRVRIT0RfRFJBV0VM
RU1FTlRTX0lOU1RBTkNFRAorICAgICAgICBdOworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKG1l
dGhvZHMubGVuZ3RoID09IE9iamVjdC5rZXlzKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJh
d01ldGhvZCkubGVuZ3RoLAorICAgICAgICAnVGhlIGFtb3VudCBvZiBtZXRob2QgbmFtZXMgaXMg
ZGlmZmVyZW50IHRoYW4gdGhlIGFtb3VudCBvZiBtZXRob2RzJywgZmFsc2UsIHRydWUpOworCisg
ICAgICAgIHJldHVybiBtZXRob2RzW21ldGhvZF07CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlfSB0eXBlCisgICAg
ICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNw
ZWMuaW5wdXRUeXBlU2l6ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0
aW9ucyh0eXBlICE9IG51bGwsICdJbnB1dCB0eXBlIGlzIG51bGwnLCBmYWxzZSwgdHJ1ZSk7CisK
KyAgICAgICAgdmFyIHNpemUgPSBbCisgICAgICAgICAgICA0LCAvLyBJTlBVVFRZUEVfRkxPQVQg
PSAwLAorCisgICAgICAgICAgICAxLCAvLyBJTlBVVFRZUEVfQllURSwKKyAgICAgICAgICAgIDIs
IC8vIElOUFVUVFlQRV9TSE9SVCwKKworICAgICAgICAgICAgMSwgLy8gSU5QVVRUWVBFX1VOU0lH
TkVEX0JZVEUsCisgICAgICAgICAgICAyLCAvLyBJTlBVVFRZUEVfVU5TSUdORURfU0hPUlQsCisK
KyAgICAgICAgICAgIDQsIC8vIElOUFVUVFlQRV9JTlQsCisgICAgICAgICAgICA0LCAvLyBJTlBV
VFRZUEVfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgMiwgLy8gSU5QVVRUWVBFX0hBTEYsCisg
ICAgICAgICAgICA0IC8gNCwgLy8gSU5QVVRUWVBFX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwLAor
ICAgICAgICAgICAgNCAvIDQgLy8gSU5QVVRUWVBFX0lOVF8yXzEwXzEwXzEwLAorICAgICAgICBd
OworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHNpemUubGVuZ3RoID09IE9iamVjdC5rZXlzKGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlKS5sZW5ndGgsCisgICAgICAgICAgICAn
VGhlIGFtb3VudCBvZiB0eXBlIG5hbWVzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBhbW91bnQgb2Yg
dHlwZXMnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHNpemVbdHlwZV07CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5kZXhUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5kZXhUeXBlU2l6ZSA9IGZ1bmN0aW9uKHR5cGUpIHsK
KyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0eXBlICE9IG51bGwsICdUeXBlIGlzIG51bGwnLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdmFyIHNpemUgPSBbCisgICAgICAgICAgICAxLCAvLyBJ
TkRFWFRZUEVfQllURSwKKyAgICAgICAgICAgIDIsIC8vIElOREVYVFlQRV9TSE9SVCwKKyAgICAg
ICAgICAgIDQgLy8gSU5ERVhUWVBFX0lOVCwKKyAgICAgICAgXTsKKyAgICAgICAgYXNzZXJ0TXNn
T3B0aW9ucyhzaXplLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNEcmF3VGVzdHMuRHJhd1Rlc3RT
cGVjLkluZGV4VHlwZSkubGVuZ3RoLAorICAgICAgICAgICAgJ1RoZSBhbW91bnQgb2YgdHlwZSBu
YW1lcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgYW1vdW50IG9mIHR5cGVzJywgZmFsc2UsIHRydWUp
OworCisgICAgICAgIHJldHVybiBzaXplW3R5cGVdOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge2ds
c0RyYXdUZXN0cy5NZXRob2RJbmZvfSAqLyB2YXIgbWV0aG9kSW5mbyA9IGdsc0RyYXdUZXN0cy5n
ZXRNZXRob2RJbmZvKHRoaXMuZHJhd01ldGhvZCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdmFyIGhhc0ZpcnN0ID0gbWV0aG9kSW5mby5maXJzdDsKKyAgICAgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgaW5zdGFuY2VkID0gbWV0aG9kSW5mby5pbnN0YW5jZWQ7CisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHJhbmdlZCA9IG1ldGhvZEluZm8ucmFuZ2Vk
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpbmRleGVkID0gbWV0aG9kSW5m
by5pbmRleGVkOworCisgICAgICAgIHZhciBuYW1lID0gJyc7CisKKyAgICAgICAgZm9yICh2YXIg
bmR4ID0gMDsgbmR4IDwgdGhpcy5hdHRyaWJzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjfSovIHZh
ciBhdHRyaWIgPSB0aGlzLmF0dHJpYnNbbmR4XTsKKworICAgICAgICAgICAgaWYgKHRoaXMuYXR0
cmlicy5sZW5ndGggPiAxKQorICAgICAgICAgICAgICAgIG5hbWUgKz0gJ2F0dHJpYicgKyBuZHgg
KyAnXyc7CisKKyAgICAgICAgICAgIGlmIChuZHggPT0gMCB8fCBhdHRyaWIuYWRkaXRpb25hbFBv
c2l0aW9uQXR0cmlidXRlKQorICAgICAgICAgICAgICAgIG5hbWUgKz0gJ3Bvc18nOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5hbWUgKz0gJ2NvbF8nOworCisgICAgICAgICAg
ICBpZiAoYXR0cmliLnVzZURlZmF1bHRBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICBuYW1l
ICs9ICdub25fYXJyYXlfJyArCisgICAgICAgICAgICAgICAgICAgIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuaW5wdXRUeXBlVG9TdHJpbmcoLyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5JbnB1dFR5cGV9ICovIChhdHRyaWIuaW5wdXRUeXBlKSkgKyAnXycgKworICAgICAg
ICAgICAgICAgICAgICBhdHRyaWIuY29tcG9uZW50Q291bnQgKyAnXycgKworICAgICAgICAgICAg
ICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLm91dHB1dFR5cGVUb1N0cmluZyhhdHRy
aWIub3V0cHV0VHlwZSkgKyAnXyc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIG5hbWUgKz0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5zdG9yYWdlVG9TdHJpbmcoYXR0
cmliLnN0b3JhZ2UpICsgJ18nICsKKyAgICAgICAgICAgICAgICAgICAgYXR0cmliLm9mZnNldCAr
ICdfJyArCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYi5zdHJpZGUgKyAnXycgKworICAgICAg
ICAgICAgICAgICAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLmlucHV0VHlwZVRvU3RyaW5n
KC8qKiBAdHlwZSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlfSAqLyAoYXR0
cmliLmlucHV0VHlwZSkpOworICAgICAgICAgICAgICAgIGlmIChhdHRyaWIuaW5wdXRUeXBlICE9
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVF8yXzEwXzEw
XzEwICYmIGF0dHJpYi5pbnB1dFR5cGUgIT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGUuSU5UXzJfMTBfMTBfMTApCisgICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gYXR0cmli
LmNvbXBvbmVudENvdW50OworICAgICAgICAgICAgICAgIG5hbWUgKz0gJ18nICsKKyAgICAgICAg
ICAgICAgICAgICAgKGF0dHJpYi5ub3JtYWxpemUgPyAnbm9ybWFsaXplZF8nIDogJycpICsKKyAg
ICAgICAgICAgICAgICAgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5vdXRwdXRUeXBlVG9T
dHJpbmcoYXR0cmliLm91dHB1dFR5cGUpICsgJ18nICsKKyAgICAgICAgICAgICAgICAgICAgZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy51c2FnZVR5cGVUb1N0cmluZyhhdHRyaWIudXNhZ2UpICsg
J18nICsKKyAgICAgICAgICAgICAgICAgICAgYXR0cmliLmluc3RhbmNlRGl2aXNvciArICdfJzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmRleGVkKQorICAgICAg
ICAgICAgbmFtZSArPSAnaW5kZXhfJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5kZXhU
eXBlVG9TdHJpbmcodGhpcy5pbmRleFR5cGUpICsgJ18nICsKKyAgICAgICAgICAgICAgICBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLnN0b3JhZ2VUb1N0cmluZyh0aGlzLmluZGV4U3RvcmFnZSkg
KyAnXycgKworICAgICAgICAgICAgICAgICdvZmZzZXQnICsgdGhpcy5pbmRleFBvaW50ZXJPZmZz
ZXQgKyAnXyc7CisgICAgICAgIGlmIChoYXNGaXJzdCkKKyAgICAgICAgICAgIG5hbWUgKz0gJ2Zp
cnN0JyArIHRoaXMuZmlyc3QgKyAnXyc7CisgICAgICAgIGlmIChyYW5nZWQpCisgICAgICAgICAg
ICBuYW1lICs9ICdyYW5nZWRfJyArIHRoaXMuaW5kZXhNaW4gKyAnXycgKyB0aGlzLmluZGV4TWF4
ICsgJ18nOworICAgICAgICBpZiAoaW5zdGFuY2VkKQorICAgICAgICAgICAgbmFtZSArPSAnaW5z
dGFuY2VzJyArIHRoaXMuaW5zdGFuY2VDb3VudCArICdfJzsKKworICAgICAgICBzd2l0Y2ggKHRo
aXMucHJpbWl0aXZlKSB7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNw
ZWMuUHJpbWl0aXZlLlBPSU5UUzoKKyAgICAgICAgICAgICAgICBuYW1lICs9ICdwb2ludHNfJzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5QcmltaXRpdmUuVFJJQU5HTEVTOgorICAgICAgICAgICAgICAgIG5hbWUgKz0g
J3RyaWFuZ2xlc18nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9GQU46CisgICAgICAg
ICAgICAgICAgbmFtZSArPSAndHJpYW5nbGVfZmFuXyc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRS
SUFOR0xFX1NUUklQOgorICAgICAgICAgICAgICAgIG5hbWUgKz0gJ3RyaWFuZ2xlX3N0cmlwXyc7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVTOgorICAgICAgICAgICAgICAgIG5hbWUgKz0gJ2xp
bmVzXyc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVfU1RSSVA6CisgICAgICAgICAgICAgICAg
bmFtZSArPSAnbGluZV9zdHJpcF8nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX0xPT1A6Cisg
ICAgICAgICAgICAgICAgbmFtZSArPSAnbGluZV9sb29wXyc7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignSW52YWxpZCBwcmltaXRpdmUnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIG5hbWUgKz0gdGhpcy5wcmltaXRpdmVDb3VudDsKKworICAgICAgICByZXR1
cm4gbmFtZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAg
ICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMucHJvdG90eXBlLmdldERlc2MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGRlc2MgPSAnJzsKKworICAgICAgICBmb3IgKHZhciBu
ZHggPSAwOyBuZHggPCB0aGlzLmF0dHJpYnMubGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAg
LyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWN9ICovIHZh
ciBhdHRyaWIgPSB0aGlzLmF0dHJpYnNbbmR4XTsKKworICAgICAgICAgICAgaWYgKGF0dHJpYi51
c2VEZWZhdWx0QXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgZGVzYyArPSAnQXR0cmlidXRl
ICcgKyBuZHggKyAnOiBkZWZhdWx0LCAnICsgKChuZHggPT0gMCB8fCBhdHRyaWIuYWRkaXRpb25h
bFBvc2l0aW9uQXR0cmlidXRlKSA/ICgncG9zaXRpb24gLCcpIDogKCdjb2xvciAsJykpICsKKyAg
ICAgICAgICAgICAgICAgICAgJ2lucHV0IGRhdGF0eXBlICcgKyBnbHNEcmF3VGVzdHMuRHJhd1Rl
c3RTcGVjLmlucHV0VHlwZVRvU3RyaW5nKC8qKiBAdHlwZSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlfSAqLyAoYXR0cmliLmlucHV0VHlwZSkpICsgJywgJyArCisgICAgICAg
ICAgICAgICAgICAgICdpbnB1dCBjb21wb25lbnQgY291bnQgJyArIGF0dHJpYi5jb21wb25lbnRD
b3VudCArICcsICcgKworICAgICAgICAgICAgICAgICAgICAndXNlZCBhcyAnICsgZ2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5vdXRwdXRUeXBlVG9TdHJpbmcoYXR0cmliLm91dHB1dFR5cGUpICsg
JywgJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVzYyArPSAnQXR0
cmlidXRlICcgKyBuZHggKyAnOiAnICsgKChuZHggPT0gMCB8fCBhdHRyaWIuYWRkaXRpb25hbFBv
c2l0aW9uQXR0cmlidXRlKSA/ICgncG9zaXRpb24gLCcpIDogKCdjb2xvciAsJykpICsKKyAgICAg
ICAgICAgICAgICAgICAgJ1N0b3JhZ2UgaW4gJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
c3RvcmFnZVRvU3RyaW5nKGF0dHJpYi5zdG9yYWdlKSArICcsICcgKworICAgICAgICAgICAgICAg
ICAgICAnc3RyaWRlICcgKyBhdHRyaWIuc3RyaWRlICsgJywgJyArCisgICAgICAgICAgICAgICAg
ICAgICdpbnB1dCBkYXRhdHlwZSAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbnB1dFR5
cGVUb1N0cmluZygvKiogQHR5cGUgez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlw
ZX0gKi8gKGF0dHJpYi5pbnB1dFR5cGUpKSArICcsICcgKworICAgICAgICAgICAgICAgICAgICAn
aW5wdXQgY29tcG9uZW50IGNvdW50ICcgKyBhdHRyaWIuY29tcG9uZW50Q291bnQgKyAnLCAnICsK
KyAgICAgICAgICAgICAgICAgICAgKGF0dHJpYi5ub3JtYWxpemUgPyAnbm9ybWFsaXplZCwgJyA6
ICcnKSArCisgICAgICAgICAgICAgICAgICAgICd1c2VkIGFzICcgKyBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLm91dHB1dFR5cGVUb1N0cmluZyhhdHRyaWIub3V0cHV0VHlwZSkgKyAnLCAnICsK
KyAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGRpdmlzb3IgJyArIGF0dHJpYi5pbnN0YW5j
ZURpdmlzb3IgKyAnLCAnOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRoaXMuZHJhd01ldGhvZCA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2Qu
RFJBV0FSUkFZUykgeworICAgICAgICAgICAgZGVzYyArPSAnZHJhd0FycmF5cygpLCAnICsKKyAg
ICAgICAgICAgICAgICAnZmlyc3QgJyArIHRoaXMuZmlyc3QgKyAnLCAnOworICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuZHJhd01ldGhvZCA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdN
ZXRob2QuRFJBV0FSUkFZU19JTlNUQU5DRUQpIHsKKyAgICAgICAgICAgIGRlc2MgKz0gJ2RyYXdB
cnJheXNJbnN0YW5jZWQoKSwgJyArCisgICAgICAgICAgICAgICAgJ2ZpcnN0ICcgKyB0aGlzLmZp
cnN0ICsgJywgJyArCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGNvdW50ICcgKyB0aGlzLmlu
c3RhbmNlQ291bnQgKyAnLCAnOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd01ldGhvZCA9
PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2QuRFJBV0VMRU1FTlRTKSB7Cisg
ICAgICAgICAgICBkZXNjICs9ICdkcmF3RWxlbWVudHMoKSwgJyArCisgICAgICAgICAgICAgICAg
J2luZGV4IHR5cGUgJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5kZXhUeXBlVG9TdHJp
bmcodGhpcy5pbmRleFR5cGUpICsgJywgJyArCisgICAgICAgICAgICAgICAgJ2luZGV4IHN0b3Jh
Z2UgaW4gJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuc3RvcmFnZVRvU3RyaW5nKHRoaXMu
aW5kZXhTdG9yYWdlKSArICcsICcgKworICAgICAgICAgICAgICAgICdpbmRleCBvZmZzZXQgJyAr
IHRoaXMuaW5kZXhQb2ludGVyT2Zmc2V0ICsgJywgJzsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlz
LmRyYXdNZXRob2QgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdF
TEVNRU5UU19SQU5HRUQpIHsKKyAgICAgICAgICAgIGRlc2MgKz0gJ2RyYXdFbGVtZW50c1Jhbmdl
ZCgpLCAnICsKKyAgICAgICAgICAgICAgICAnaW5kZXggdHlwZSAnICsgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5pbmRleFR5cGVUb1N0cmluZyh0aGlzLmluZGV4VHlwZSkgKyAnLCAnICsKKyAg
ICAgICAgICAgICAgICAnaW5kZXggc3RvcmFnZSBpbiAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5zdG9yYWdlVG9TdHJpbmcodGhpcy5pbmRleFN0b3JhZ2UpICsgJywgJyArCisgICAgICAg
ICAgICAgICAgJ2luZGV4IG9mZnNldCAnICsgdGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgKyAnLCAn
ICsKKyAgICAgICAgICAgICAgICAncmFuZ2Ugc3RhcnQgJyArIHRoaXMuaW5kZXhNaW4gKyAnLCAn
ICsKKyAgICAgICAgICAgICAgICAncmFuZ2UgZW5kICcgKyB0aGlzLmluZGV4TWF4ICsgJywgJzsK
KyAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdNZXRob2QgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdFTEVNRU5UU19JTlNUQU5DRUQpIHsKKyAgICAgICAgICAg
IGRlc2MgKz0gJ2RyYXdFbGVtZW50c0luc3RhbmNlZCgpLCAnICsKKyAgICAgICAgICAgICAgICAn
aW5kZXggdHlwZSAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbmRleFR5cGVUb1N0cmlu
Zyh0aGlzLmluZGV4VHlwZSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAnaW5kZXggc3RvcmFn
ZSBpbiAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5zdG9yYWdlVG9TdHJpbmcodGhpcy5p
bmRleFN0b3JhZ2UpICsgJywgJyArCisgICAgICAgICAgICAgICAgJ2luZGV4IG9mZnNldCAnICsg
dGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAnaW5zdGFu
Y2UgY291bnQgJyArIHRoaXMuaW5zdGFuY2VDb3VudCArICcsICc7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRyYXcgbWV0aG9kJyk7CisKKyAg
ICAgICAgZGVzYyArPSB0aGlzLnByaW1pdGl2ZUNvdW50OworCisgICAgICAgIHN3aXRjaCAodGhp
cy5wcmltaXRpdmUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5QcmltaXRpdmUuUE9JTlRTOgorICAgICAgICAgICAgICAgIGRlc2MgKz0gJ3BvaW50cyc7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuUHJpbWl0aXZlLlRSSUFOR0xFUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICd0
cmlhbmdsZXMnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9GQU46CisgICAgICAgICAg
ICAgICAgZGVzYyArPSAndHJpYW5nbGVzIChmYW4pJzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuVFJJ
QU5HTEVfU1RSSVA6CisgICAgICAgICAgICAgICAgZGVzYyArPSAndHJpYW5nbGVzIChzdHJpcCkn
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICds
aW5lcyc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVfU1RSSVA6CisgICAgICAgICAgICAgICAg
ZGVzYyArPSAnbGluZXMgKHN0cmlwKSc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVfTE9PUDoK
KyAgICAgICAgICAgICAgICBkZXNjICs9ICdsaW5lcyAobG9vcCknOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlJyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZGVzYzsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
cHJvdG90eXBlLmdldE11bHRpbGluZURlc2MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGRl
c2MgPSAnJzsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLmF0dHJpYnMu
bGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWN9ICovIHZhciBhdHRyaWIgPSB0aGlzLmF0dHJpYnNbbmR4
XTsKKworICAgICAgICAgICAgaWYgKGF0dHJpYi51c2VEZWZhdWx0QXR0cmlidXRlKSB7CisgICAg
ICAgICAgICAgICAgZGVzYyArPSAnQXR0cmlidXRlICcgKyBuZHggKyAnOiBkZWZhdWx0LCAnICsg
KChuZHggPT0gMCB8fCBhdHRyaWIuYWRkaXRpb25hbFBvc2l0aW9uQXR0cmlidXRlKSA/ICgncG9z
aXRpb25cbicpIDogKCdjb2xvclxuJykpICsKKyAgICAgICAgICAgICAgICAgICAgJ1x0aW5wdXQg
ZGF0YXR5cGUgJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5wdXRUeXBlVG9TdHJpbmco
LyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGV9ICovIChhdHRy
aWIuaW5wdXRUeXBlKSkgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ1x0aW5wdXQgY29t
cG9uZW50IGNvdW50ICcgKyBhdHRyaWIuY29tcG9uZW50Q291bnQgKyAnXG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgJ1x0dXNlZCBhcyAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5vdXRw
dXRUeXBlVG9TdHJpbmcoYXR0cmliLm91dHB1dFR5cGUpICsgJ1xuJzsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGVzYyArPSAnQXR0cmlidXRlICcgKyBuZHggKyAnOiAn
ICsgKChuZHggPT0gMCB8fCBhdHRyaWIuYWRkaXRpb25hbFBvc2l0aW9uQXR0cmlidXRlKSA/ICgn
cG9zaXRpb25cbicpIDogKCdjb2xvclxuJykpICsKKyAgICAgICAgICAgICAgICAgICAgJ1x0U3Rv
cmFnZSBpbiAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5zdG9yYWdlVG9TdHJpbmcoYXR0
cmliLnN0b3JhZ2UpICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICdcdHN0cmlkZSAnICsg
YXR0cmliLnN0cmlkZSArICdcbicgKworICAgICAgICAgICAgICAgICAgICAnXHRpbnB1dCBkYXRh
dHlwZSAnICsgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbnB1dFR5cGVUb1N0cmluZygvKiog
QHR5cGUgez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gKi8gKGF0dHJpYi5p
bnB1dFR5cGUpKSArICdcbicgKworICAgICAgICAgICAgICAgICAgICAnXHRpbnB1dCBjb21wb25l
bnQgY291bnQgJyArIGF0dHJpYi5jb21wb25lbnRDb3VudCArICdcbicgKworICAgICAgICAgICAg
ICAgICAgICAoYXR0cmliLm5vcm1hbGl6ZSA/ICdcdG5vcm1hbGl6ZWRcbicgOiAnJykgKworICAg
ICAgICAgICAgICAgICAgICAnXHR1c2VkIGFzICcgKyBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
Lm91dHB1dFR5cGVUb1N0cmluZyhhdHRyaWIub3V0cHV0VHlwZSkgKyAnXG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgJ1x0aW5zdGFuY2UgZGl2aXNvciAnICsgYXR0cmliLmluc3RhbmNlRGl2aXNv
ciArICdcbic7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5k
cmF3TWV0aG9kID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXQVJS
QVlTKSB7CisgICAgICAgICAgICBkZXNjICs9ICdkcmF3QXJyYXlzKClcbicgKworICAgICAgICAg
ICAgICAgICdcdGZpcnN0ICcgKyB0aGlzLmZpcnN0ICsgJ1xuJzsKKyAgICAgICAgfSBlbHNlIGlm
ICh0aGlzLmRyYXdNZXRob2QgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9k
LkRSQVdBUlJBWVNfSU5TVEFOQ0VEKSB7CisgICAgICAgICAgICBkZXNjICs9ICdkcmF3QXJyYXlz
SW5zdGFuY2VkKClcbicgKworICAgICAgICAgICAgICAgICdcdGZpcnN0ICcgKyB0aGlzLmZpcnN0
ICsgJ1xuJyArCisgICAgICAgICAgICAgICAgJ1x0aW5zdGFuY2UgY291bnQgJyArIHRoaXMuaW5z
dGFuY2VDb3VudCArICdcbic7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmF3TWV0aG9kID09
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuRHJhd01ldGhvZC5EUkFXRUxFTUVOVFMpIHsKKyAg
ICAgICAgICAgIGRlc2MgKz0gJ2RyYXdFbGVtZW50cygpXG4nICsKKyAgICAgICAgICAgICAgICAn
XHRpbmRleCB0eXBlICcgKyBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLmluZGV4VHlwZVRvU3Ry
aW5nKHRoaXMuaW5kZXhUeXBlKSArICdcbicgKworICAgICAgICAgICAgICAgICdcdGluZGV4IHN0
b3JhZ2UgaW4gJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuc3RvcmFnZVRvU3RyaW5nKHRo
aXMuaW5kZXhTdG9yYWdlKSArICdcbicgKworICAgICAgICAgICAgICAgICdcdGluZGV4IG9mZnNl
dCAnICsgdGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgKyAnXG4nOworICAgICAgICB9IGVsc2UgaWYg
KHRoaXMuZHJhd01ldGhvZCA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkRyYXdNZXRob2Qu
RFJBV0VMRU1FTlRTX1JBTkdFRCkgeworICAgICAgICAgICAgZGVzYyArPSAnZHJhd0VsZW1lbnRz
UmFuZ2VkKClcbicgKworICAgICAgICAgICAgICAgICdcdGluZGV4IHR5cGUgJyArIGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuaW5kZXhUeXBlVG9TdHJpbmcodGhpcy5pbmRleFR5cGUpICsgJ1xu
JyArCisgICAgICAgICAgICAgICAgJ1x0aW5kZXggc3RvcmFnZSBpbiAnICsgZ2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5zdG9yYWdlVG9TdHJpbmcodGhpcy5pbmRleFN0b3JhZ2UpICsgJ1xuJyAr
CisgICAgICAgICAgICAgICAgJ1x0aW5kZXggb2Zmc2V0ICcgKyB0aGlzLmluZGV4UG9pbnRlck9m
ZnNldCArICdcbicgKworICAgICAgICAgICAgICAgICdcdHJhbmdlIHN0YXJ0ICcgKyB0aGlzLmlu
ZGV4TWluICsgJ1xuJyArCisgICAgICAgICAgICAgICAgJ1x0cmFuZ2UgZW5kICcgKyB0aGlzLmlu
ZGV4TWF4ICsgJ1xuJzsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdNZXRob2QgPT0gZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kLkRSQVdFTEVNRU5UU19JTlNUQU5DRUQp
IHsKKyAgICAgICAgICAgIGRlc2MgKz0gJ2RyYXdFbGVtZW50c0luc3RhbmNlZCgpXG4nICsKKyAg
ICAgICAgICAgICAgICAnXHRpbmRleCB0eXBlICcgKyBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LmluZGV4VHlwZVRvU3RyaW5nKHRoaXMuaW5kZXhUeXBlKSArICdcbicgKworICAgICAgICAgICAg
ICAgICdcdGluZGV4IHN0b3JhZ2UgaW4gJyArIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuc3Rv
cmFnZVRvU3RyaW5nKHRoaXMuaW5kZXhTdG9yYWdlKSArICdcbicgKworICAgICAgICAgICAgICAg
ICdcdGluZGV4IG9mZnNldCAnICsgdGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgKyAnXG4nICsKKyAg
ICAgICAgICAgICAgICAnXHRpbnN0YW5jZSBjb3VudCAnICsgdGhpcy5pbnN0YW5jZUNvdW50ICsg
J1xuJzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFs
aWQgZHJhdyBtZXRob2QnKTsKKworICAgICAgICBkZXNjICs9ICdcdCcgKyB0aGlzLnByaW1pdGl2
ZUNvdW50ICsgJyAnOworCisgICAgICAgIHN3aXRjaCAodGhpcy5wcmltaXRpdmUpIHsKKyAgICAg
ICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuUE9JTlRTOgor
ICAgICAgICAgICAgICAgIGRlc2MgKz0gJ3BvaW50cyc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlRS
SUFOR0xFUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICd0cmlhbmdsZXMnOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
LlByaW1pdGl2ZS5UUklBTkdMRV9GQU46CisgICAgICAgICAgICAgICAgZGVzYyArPSAndHJpYW5n
bGVzIChmYW4pJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmUuVFJJQU5HTEVfU1RSSVA6CisgICAgICAg
ICAgICAgICAgZGVzYyArPSAndHJpYW5nbGVzIChzdHJpcCknOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2
ZS5MSU5FUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICdsaW5lcyc7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJp
bWl0aXZlLkxJTkVfU1RSSVA6CisgICAgICAgICAgICAgICAgZGVzYyArPSAnbGluZXMgKHN0cmlw
KSc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVfTE9PUDoKKyAgICAgICAgICAgICAgICBkZXNj
ICs9ICdsaW5lcyAobG9vcCknOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0
aXZlJyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZXNj
ICs9ICdcbic7CisKKyAgICAgICAgcmV0dXJuIGRlc2M7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5UYXJnZXQgPSB7CisgICAgICAgIEVMRU1FTlRfQVJSQVk6IDAsCisgICAgICAgIEFSUkFZOiAx
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAg
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUgPSB7CisgICAgICAgIEZMT0FUOiAw
LAorCisgICAgICAgIEJZVEU6IDEsCisgICAgICAgIFNIT1JUOiAyLAorCisgICAgICAgIFVOU0lH
TkVEX0JZVEU6IDMsCisgICAgICAgIFVOU0lHTkVEX1NIT1JUOiA0LAorCisgICAgICAgIElOVDog
NSwKKyAgICAgICAgVU5TSUdORURfSU5UOiA2LAorICAgICAgICBIQUxGOiA3LAorICAgICAgICBV
TlNJR05FRF9JTlRfMl8xMF8xMF8xMDogOCwKKyAgICAgICAgSU5UXzJfMTBfMTBfMTA6IDkKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUgPSB7CisgICAgICAgIEZMT0FUOiAwLAor
ICAgICAgICBWRUMyOiAxLAorICAgICAgICBWRUMzOiAyLAorICAgICAgICBWRUM0OiAzLAorCisg
ICAgICAgIElOVDogNCwKKyAgICAgICAgVUlOVDogNSwKKworICAgICAgICBJVkVDMjogNiwKKyAg
ICAgICAgSVZFQzM6IDcsCisgICAgICAgIElWRUM0OiA4LAorCisgICAgICAgIFVWRUMyOiA5LAor
ICAgICAgICBVVkVDMzogMTAsCisgICAgICAgIFVWRUM0OiAxMQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuVXNhZ2UgPSB7CisgICAgICAgIERZTkFNSUNfRFJBVzogMCwKKyAgICAgICAgU1RBVElD
X0RSQVc6IDEsCisgICAgICAgIFNUUkVBTV9EUkFXOiAyLAorCisgICAgICAgIFNUUkVBTV9SRUFE
OiAzLAorICAgICAgICBTVFJFQU1fQ09QWTogNCwKKworICAgICAgICBTVEFUSUNfUkVBRDogNSwK
KyAgICAgICAgU1RBVElDX0NPUFk6IDYsCisKKyAgICAgICAgRFlOQU1JQ19SRUFEOiA3LAorICAg
ICAgICBEWU5BTUlDX0NPUFk6IDgKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0ge251
bWJlcn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3JhZ2UgPSB7
CisgICAgICAgIFVTRVI6IDAsCisgICAgICAgIEJVRkZFUjogMQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuUHJpbWl0aXZlID0geworICAgICAgICBQT0lOVFM6IDAsCisgICAgICAgIFRSSUFOR0xF
UzogMSwKKyAgICAgICAgVFJJQU5HTEVfRkFOOiAyLAorICAgICAgICBUUklBTkdMRV9TVFJJUDog
MywKKyAgICAgICAgTElORVM6IDQsCisgICAgICAgIExJTkVfU1RSSVA6IDUsCisgICAgICAgIExJ
TkVfTE9PUDogNgorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAg
ICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBlID0geworICAgICAg
ICBCWVRFOiAwLAorICAgICAgICBTSE9SVDogMSwKKyAgICAgICAgSU5UOiAyCisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBlbnVtIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5EcmF3TWV0aG9kID0geworICAgICAgICAgRFJBV0FSUkFZUzogMCwKKyAg
ICAgICAgIERSQVdBUlJBWVNfSU5TVEFOQ0VEOiAxLAorICAgICAgICAgRFJBV0VMRU1FTlRTOiAy
LAorICAgICAgICAgRFJBV0VMRU1FTlRTX1JBTkdFRDogMywKKyAgICAgICAgIERSQVdFTEVNRU5U
U19JTlNUQU5DRUQ6IDQKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGVudW0ge251bWJlcn0K
KyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkNvbXBhdGliaWxpdHlUZXN0
VHlwZSA9IHsKKyAgICAgICAgTk9ORTogMCwKKyAgICAgICAgVU5BTElHTkVEX09GRlNFVDogMSwK
KyAgICAgICAgVU5BTElHTkVEX1NUUklERTogMgorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5w
cm90b3R5cGUuaGFzaCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBVc2Ugb25seSBkcmF3bW9k
ZS1yZWxldmFudCB2YWx1ZXMgaW4gImhhc2hpbmciIGFzIHRoZSB1bnJlbGV2YW50IHZhbHVlcyBt
aWdodCBub3QgYmUgc2V0IChjYXVzaW5nIG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yKS4KKyAg
ICAgICAgLyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuTWV0aG9kSW5mb30gKi8gdmFyIG1ldGhvZElu
Zm8gPSBnbHNEcmF3VGVzdHMuZ2V0TWV0aG9kSW5mbyh0aGlzLmRyYXdNZXRob2QpOworICAgICAg
ICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBhcnJheWVkID0gbWV0aG9kSW5mby5maXJzdDsK
KyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaW5zdGFuY2VkID0gbWV0aG9kSW5m
by5pbnN0YW5jZWQ7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHJhbmdlZCA9
IG1ldGhvZEluZm8ucmFuZ2VkOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
bmRleGVkID0gbWV0aG9kSW5mby5pbmRleGVkOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgaW5kZXhIYXNoID0gKCFpbmRleGVkKSA/ICgwKSA6ICh0aGlzLmluZGV4VHlwZSAr
IDEwICogdGhpcy5pbmRleFBvaW50ZXJPZmZzZXQgKyAxMDAgKiB0aGlzLmluZGV4U3RvcmFnZSk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXJyYXlIYXNoID0gKCFhcnJheWVk
KSA/ICgwKSA6ICh0aGlzLmZpcnN0KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBpbmRleFJhbmdlSGFzaCA9ICghcmFuZ2VkKSA/ICgwKSA6ICh0aGlzLmluZGV4TWluICsgMTAg
KiB0aGlzLmluZGV4TWF4KTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbnN0
YW5jZUhhc2ggPSAoIWluc3RhbmNlZCkgPyAoMCkgOiAodGhpcy5pbnN0YW5jZUNvdW50KTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBiYXNpY0hhc2ggPSB0aGlzLnByaW1pdGl2
ZSArIDEwICogdGhpcy5wcmltaXRpdmVDb3VudCArIDEwMCAqIHRoaXMuZHJhd01ldGhvZDsKKwor
ICAgICAgICByZXR1cm4gaW5kZXhIYXNoICsgMyAqIGFycmF5SGFzaCArIDUgKiBpbmRleFJhbmdl
SGFzaCArIDcgKiBpbnN0YW5jZUhhc2ggKyAxMyAqIGJhc2ljSGFzaCArIDE3ICogdGhpcy5hdHRy
aWJzLmxlbmd0aCArIDE5ICogdGhpcy5wcmltaXRpdmVDb3VudDsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLnByb3RvdHlwZS52YWxpZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKHRoaXMucHJpbWl0aXZlICE9IG51bGwsICdQcmltaXRpdmUgaXMgbnVsbCcsIGZh
bHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLmRyYXdNZXRob2QgIT0g
bnVsbCwgJ0RyYXcgbWV0aG9kIGlzIG51bGwnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgdmFy
IG1ldGhvZEluZm8gPSBnbHNEcmF3VGVzdHMuZ2V0TWV0aG9kSW5mbyh0aGlzLmRyYXdNZXRob2Qp
OworCisgICAgICAgIGlmIChtZXRob2RJbmZvLnJhbmdlZCkgeworICAgICAgICAgICAgdmFyIG1h
eEluZGV4VmFsdWUgPSAwOworICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXhUeXBlID09IGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBlLkJZVEUpCisgICAgICAgICAgICAgICAgbWF4
SW5kZXhWYWx1ZSA9IGdsc0RyYXdUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVlKGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEUpLmludGVycHJldCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAodGhpcy5pbmRleFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbmRleFR5cGUuU0hPUlQpCisgICAgICAgICAgICAgICAgbWF4SW5kZXhWYWx1ZSA9IGds
c0RyYXdUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVlKGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
SW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JUKS5pbnRlcnByZXQoKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHRoaXMuaW5kZXhUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5kZXhUeXBl
LklOVCkKKyAgICAgICAgICAgICAgICBtYXhJbmRleFZhbHVlID0gZ2xzRHJhd1Rlc3RzLkdMVmFs
dWUuZ2V0TWF4VmFsdWUoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdO
RURfSU5UKS5pbnRlcnByZXQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5kZXggdHlwZScpOworCisgICAgICAgICAgICBpZiAo
dGhpcy5pbmRleE1pbiA+IHRoaXMuaW5kZXhNYXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXhNaW4gPCAwIHx8IHRoaXMuaW5kZXhNYXgg
PCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlz
LmluZGV4TWluID4gbWF4SW5kZXhWYWx1ZSB8fCB0aGlzLmluZGV4TWF4ID4gbWF4SW5kZXhWYWx1
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobWV0aG9kSW5mby5maXJzdCAmJiB0aGlzLmZpcnN0IDwgMCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Db21wYXRpYmlsaXR5VGVzdFR5
cGV9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5wcm90b3R5cGUuaXND
b21wYXRpYmlsaXR5VGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWV0aG9kSW5mbyA9
IGdsc0RyYXdUZXN0cy5nZXRNZXRob2RJbmZvKHRoaXMuZHJhd01ldGhvZCk7CisKKyAgICAgICAg
dmFyIGJ1ZmZlckFsaWdubWVudEJhZCA9IGZhbHNlOworICAgICAgICB2YXIgc3RyaWRlQWxpZ25t
ZW50QmFkID0gZmFsc2U7CisKKyAgICAgICAgLy8gQXR0cmlidXRlIGJ1ZmZlciBhbGlnbm1lbnQK
KyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdGhpcy5hdHRyaWJzLmxlbmd0aDsgKytu
ZHgpCisgICAgICAgICAgICBpZiAoIXRoaXMuYXR0cmlic1tuZHhdLmlzQnVmZmVyQWxpZ25lZCgp
KQorICAgICAgICAgICAgICAgIGJ1ZmZlckFsaWdubWVudEJhZCA9IHRydWU7CisKKyAgICAgICAg
Ly8gQXR0cmlidXRlIHN0cmlkZSBhbGlnbm1lbnQKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgdGhpcy5hdHRyaWJzLmxlbmd0aDsgKytuZHgpCisgICAgICAgICAgICBpZiAoIXRoaXMu
YXR0cmlic1tuZHhdLmlzQnVmZmVyU3RyaWRlQWxpZ25lZCgpKQorICAgICAgICAgICAgICAgIHN0
cmlkZUFsaWdubWVudEJhZCA9IHRydWU7CisKKyAgICAgICAgLy8gSW5kZXggYnVmZmVyIGFsaWdu
bWVudAorICAgICAgICBpZiAobWV0aG9kSW5mby5pbmRleGVkKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5pbmRleFN0b3JhZ2UgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJV
RkZFUikgeworICAgICAgICAgICAgICAgIHZhciBpbmRleFNpemUgPSAwOworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLmluZGV4VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkluZGV4
VHlwZS5CWVRFKQorICAgICAgICAgICAgICAgICAgICBpbmRleFNpemUgPSAxOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHRoaXMuaW5kZXhUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNw
ZWMuSW5kZXhUeXBlLlNIT1JUKQorICAgICAgICAgICAgICAgICAgICBpbmRleFNpemUgPSAyOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaW5kZXhUeXBlID09IGdsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWMuSW5kZXhUeXBlLklOVCkKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhTaXpl
ID0gNDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcignJyk7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleFBvaW50ZXJPZmZz
ZXQgJSBpbmRleFNpemUgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyQWxpZ25tZW50
QmFkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFxub3Rl
IGNvbWJpbmF0aW9uIGJhZCBhbGlnbm1lbnQgJiBzdHJpZGUgaXMgdHJlYXRlZCBhcyBiYWQgb2Zm
c2V0CisgICAgICAgIGlmIChidWZmZXJBbGlnbm1lbnRCYWQpCisgICAgICAgICAgICByZXR1cm4g
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Db21wYXRpYmlsaXR5VGVzdFR5cGUuVU5BTElHTkVE
X09GRlNFVDsKKyAgICAgICAgZWxzZSBpZiAoc3RyaWRlQWxpZ25tZW50QmFkKQorICAgICAgICAg
ICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQ29tcGF0aWJpbGl0eVRlc3RUeXBl
LlVOQUxJR05FRF9TVFJJREU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkNvbXBhdGliaWxpdHlUZXN0VHlwZS5OT05FOworICAgIH07
CisKKyAgICAvLyBEcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlYworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRy
aWJ1dGVTcGVjID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7P2dsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlfSAqLyB0aGlzLmlucHV0VHlwZSA9IG51bGw7CisgICAg
ICAgIC8qKiBAdHlwZSB7P2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZX0gKi8g
dGhpcy5vdXRwdXRUeXBlID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5TdG9yYWdlfSAqLyB0aGlzLnN0b3JhZ2UgPSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLlN0b3JhZ2UuQlVGRkVSOyAvL0Fsd2F5cyBCVUZGRVIgaW4gV2ViR0wgdXAgdG8g
MgorICAgICAgICAvKiogQHR5cGUgez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlVzYWdlfSAq
LyB0aGlzLnVzYWdlID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMu
Y29tcG9uZW50Q291bnQgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5v
ZmZzZXQgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5zdHJpZGUgPSAw
OworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMubm9ybWFsaXplID0gZmFsc2U7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmluc3RhbmNlRGl2aXNvciA9IDA7
IC8vITwgdXNlZCBvbmx5IGlmIGRyYXdNZXRob2QgPSBEcmF3Kkluc3RhbmNlZAorICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMudXNlRGVmYXVsdEF0dHJpYnV0ZSA9IGZhbHNlOwor
CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhpcy5hZGRpdGlvbmFsUG9zaXRpb25B
dHRyaWJ1dGUgPSBmYWxzZTsgLy8hPCB0cmVhdCB0aGlzIGF0dHJpYnV0ZSBhcyBwb3NpdGlvbiBh
dHRyaWJ1dGUuIEF0dHJpYnV0ZSBhdCBpbmRleCAwIGlzIGFsd2F5IHRyZWF0ZWQgYXMgc3VjaC4g
RmFsc2UgYnkgZGVmYXVsdAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZX0gaW5wdXRUeXBlCisgICAgICogQHBhcmFt
IHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlfSBvdXRwdXRUeXBlCisgICAg
ICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlfSBzdG9yYWdlCisg
ICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Vc2FnZX0gdXNhZ2UKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gY29tcG9uZW50Q291bnQKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gb2Zmc2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gbm9ybWFsaXplCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluc3RhbmNlRGl2aXNv
cgorICAgICAqIEByZXR1cm4ge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3Bl
Y30KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWMu
Y3JlYXRlQXR0cmlidXRlQXJyYXkgPSBmdW5jdGlvbihpbnB1dFR5cGUsIG91dHB1dFR5cGUsIHN0
b3JhZ2UsIHVzYWdlLCBjb21wb25lbnRDb3VudCwKKyAgICAgICAgb2Zmc2V0LCBzdHJpZGUsIG5v
cm1hbGl6ZSwgaW5zdGFuY2VEaXZpc29yKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjfSAqLyB2YXIgc3BlYzsKKworICAgICAgICBz
cGVjLmlucHV0VHlwZSA9IGlucHV0VHlwZTsKKyAgICAgICAgc3BlYy5vdXRwdXRUeXBlID0gb3V0
cHV0VHlwZTsKKyAgICAgICAgc3BlYy5zdG9yYWdlID0gc3RvcmFnZTsKKyAgICAgICAgc3BlYy51
c2FnZSA9IHVzYWdlOworICAgICAgICBzcGVjLmNvbXBvbmVudENvdW50ID0gY29tcG9uZW50Q291
bnQ7CisgICAgICAgIHNwZWMub2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBzcGVjLnN0cmlkZSA9
IHN0cmlkZTsKKyAgICAgICAgc3BlYy5ub3JtYWxpemUgPSBub3JtYWxpemU7CisgICAgICAgIHNw
ZWMuaW5zdGFuY2VEaXZpc29yID0gaW5zdGFuY2VEaXZpc29yOworCisgICAgICAgIHNwZWMudXNl
RGVmYXVsdEF0dHJpYnV0ZSA9IGZhbHNlOworCisgICAgICAgIHJldHVybiBzcGVjOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9nbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklu
cHV0VHlwZX0gaW5wdXRUeXBlCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5PdXRwdXRUeXBlfSBvdXRwdXRUeXBlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbXBv
bmVudENvdW50CisgICAgICogQHJldHVybiB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRy
aWJ1dGVTcGVjfQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmli
dXRlU3BlYy5jcmVhdGVEZWZhdWx0QXR0cmlidXRlID0gZnVuY3Rpb24oaW5wdXRUeXBlLCBvdXRw
dXRUeXBlLCBjb21wb25lbnRDb3VudCkgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGlucHV0
VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5JTlQgfHwgaW5wdXRU
eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVCB8
fCBpbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuRkxPQVQs
ICdJbnZhbGlkIGlucHV0IHR5cGUnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMoaW5wdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLkZM
T0FUIHx8IGNvbXBvbmVudENvdW50ID09IDQsICdJZiBub3QgZmxvYXQsIGlucHV0IHR5cGUgc2hv
dWxkIGhhdmUgNCBjb21wb25lbnRzJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBAdHlw
ZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjfSAqLyB2YXIgc3BlYzsK
KworICAgICAgICBzcGVjLmlucHV0VHlwZSA9IGlucHV0VHlwZTsKKyAgICAgICAgc3BlYy5vdXRw
dXRUeXBlID0gb3V0cHV0VHlwZTsKKyAgICAgICAgc3BlYy5zdG9yYWdlID0gZ2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJVRkZFUjsgLy9BbHdheXMgQlVGRkVSIGluIFdlYkdMIHVw
IHRvIDIKKyAgICAgICAgc3BlYy51c2FnZSA9IG51bGw7CisgICAgICAgIHNwZWMuY29tcG9uZW50
Q291bnQgPSBjb21wb25lbnRDb3VudDsKKyAgICAgICAgc3BlYy5vZmZzZXQgPSAwOworICAgICAg
ICBzcGVjLnN0cmlkZSA9IDA7CisgICAgICAgIHNwZWMubm9ybWFsaXplID0gZmFsc2U7CisgICAg
ICAgIHNwZWMuaW5zdGFuY2VEaXZpc29yID0gMDsKKworICAgICAgICBzcGVjLnVzZURlZmF1bHRB
dHRyaWJ1dGUgPSB0cnVlOworCisgICAgICAgIHJldHVybiBzcGVjOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRy
YXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjLnByb3RvdHlwZS5oYXNoID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh0aGlzLnVzZURlZmF1bHRBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIHJldHVy
biAxICogdGhpcy5pbnB1dFR5cGUgKyA3ICogdGhpcy5vdXRwdXRUeXBlICsgMTMgKiB0aGlzLmNv
bXBvbmVudENvdW50OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDEgKiB0
aGlzLmlucHV0VHlwZSArIDIgKiB0aGlzLm91dHB1dFR5cGUgKyAzICogdGhpcy5zdG9yYWdlICsg
NSAqIHRoaXMudXNhZ2UgKyA3ICogdGhpcy5jb21wb25lbnRDb3VudCArIDExICogdGhpcy5vZmZz
ZXQgKyAxMyAqIHRoaXMuc3RyaWRlICsgMTcgKiAodGhpcy5ub3JtYWxpemUgPyAwIDogMSkgKyAx
OSAqIHRoaXMuaW5zdGFuY2VEaXZpc29yOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5BdHRyaWJ1dGVTcGVjLnByb3RvdHlwZS52YWxpZCA9IGZ1bmN0aW9uKC8qY3R4VHlw
ZSovKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlucHV0VHlwZUZsb2F0
ID0gdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUu
RkxPQVQgfHwgdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1
dFR5cGUuSEFMRjsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaW5wdXRUeXBl
VW5zaWduZWRJbnRlZ2VyID0gdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfQllURSB8fCB0aGlzLmlucHV0VHlwZSA9PSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9TSE9SVCB8fCB0aGlzLmlucHV0
VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlQg
fHwgdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUu
VU5TSUdORURfSU5UXzJfMTBfMTBfMTA7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8g
dmFyIGlucHV0VHlwZVNpZ25lZEludGVnZXIgPSB0aGlzLmlucHV0VHlwZSA9PSBnbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5CWVRFIHx8IHRoaXMuaW5wdXRUeXBlID09IGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLlNIT1JUIHx8IHRoaXMuaW5wdXRUeXBlID09
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVCB8fCB0aGlzLmlucHV0VHlw
ZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMDsK
KyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaW5wdXRUeXBlUGFja2VkID0gdGhp
cy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdO
RURfSU5UXzJfMTBfMTBfMTAgfHwgdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0U3BlYy5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTA7CisKKyAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgb3V0cHV0VHlwZUZsb2F0ID0gdGhpcy5vdXRwdXRUeXBlID09IGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5GTE9BVCB8fCB0aGlzLm91dHB1dFR5cGUg
PT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlZFQzIgfHwgdGhpcy5vdXRw
dXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5WRUMzIHx8IHRo
aXMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVD
NDsKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgb3V0cHV0VHlwZVNpZ25lZElu
dGVnZXIgPSB0aGlzLm91dHB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRw
dXRUeXBlLklOVCB8fCB0aGlzLm91dHB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5PdXRwdXRUeXBlLklWRUMyIHx8IHRoaXMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzMgfHwgdGhpcy5vdXRwdXRUeXBlID09IGdsc0RyYXdU
ZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0VHlwZS5JVkVDNDsKKyAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgb3V0cHV0VHlwZVVuc2lnbmVkSW50ZWdlciA9IHRoaXMub3V0cHV0VHlw
ZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVUlOVCB8fCB0aGlzLm91
dHB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUMyIHx8
IHRoaXMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUu
VVZFQzMgfHwgdGhpcy5vdXRwdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0
cHV0VHlwZS5VVkVDNDsKKworICAgICAgICBpZiAodGhpcy51c2VEZWZhdWx0QXR0cmlidXRlKSB7
CisgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgIT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0
U3BlYy5JbnB1dFR5cGUuSU5UICYmIHRoaXMuaW5wdXRUeXBlICE9IGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVCAmJiB0aGlzLmlucHV0VHlwZSAhPSBnbHNE
cmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VHlwZSAhPSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5GTE9BVCAmJiB0aGlzLmNvbXBvbmVudENvdW50
ICE9IDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyBu
byBjYXN0aW5nIGFsbG93ZWQgKHVuZGVmaW5lZCByZXN1bHRzKQorICAgICAgICAgICAgaWYgKHRo
aXMuaW5wdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuSW5wdXRUeXBlLklOVCAm
JiAhb3V0cHV0VHlwZVNpZ25lZEludGVnZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVCAmJiAhb3V0cHV0VHlwZVVuc2lnbmVkSW50ZWdl
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaW5wdXRUeXBlUGFja2VkICYmIHRoaXMuY29tcG9uZW50Q291bnQgIT0gNCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBJbnZhbGlkIGNvbnZlcnNpb25zOgorCisg
ICAgICAgIC8vIGZsb2F0IC0+IFt1XWludAorICAgICAgICBpZiAoaW5wdXRUeXBlRmxvYXQgJiYg
IW91dHB1dFR5cGVGbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyB1aW50IC0+IGludCAodW5kZWZpbmVkIHJlc3VsdHMpCisgICAgICAgIGlmIChpbnB1dFR5cGVV
bnNpZ25lZEludGVnZXIgJiYgb3V0cHV0VHlwZVNpZ25lZEludGVnZXIpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gaW50IC0+IHVpbnQgKHVuZGVmaW5lZCByZXN1bHRz
KQorICAgICAgICBpZiAoaW5wdXRUeXBlU2lnbmVkSW50ZWdlciAmJiBvdXRwdXRUeXBlVW5zaWdu
ZWRJbnRlZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIHBhY2tl
ZCAtPiBub24tZmxvYXQgKHBhY2tlZCBmb3JtYXRzIGFyZSBjb252ZXJ0ZWQgdG8gZmxvYXRzKQor
ICAgICAgICBpZiAoaW5wdXRUeXBlUGFja2VkICYmICFvdXRwdXRUeXBlRmxvYXQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gSW52YWxpZCBub3JtYWxpemUuIE5vcm1h
bGl6ZSBpcyBvbmx5IHZhbGlkIGlmIG91dHB1dCB0eXBlIGlzIGZsb2F0CisgICAgICAgIGlmICh0
aGlzLm5vcm1hbGl6ZSAmJiAhb3V0cHV0VHlwZUZsb2F0KQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMu
QXR0cmlidXRlU3BlYy5wcm90b3R5cGUuaXNCdWZmZXJBbGlnbmVkID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBpbnB1dFR5cGVQYWNrZWQgPSB0aGlzLmlucHV0VHlwZSA9PSBnbHNEcmF3VGVz
dHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCB8fCB0aGlz
LmlucHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5JTlRfMl8x
MF8xMF8xMDsKKworICAgICAgICAvLyBCdWZmZXIgYWxpZ25tZW50LCBvZmZzZXQgaXMgYSBtdWx0
aXBsZSBvZiB1bmRlcmx5aW5nIGRhdGEgdHlwZSBzaXplPworICAgICAgICBpZiAodGhpcy5zdG9y
YWdlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVIpIHsKKyAgICAg
ICAgICAgIHZhciBkYXRhVHlwZVNpemUgPSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLmlucHV0
VHlwZVNpemUodGhpcy5pbnB1dFR5cGUpOworICAgICAgICAgICAgaWYgKGlucHV0VHlwZVBhY2tl
ZCkKKyAgICAgICAgICAgICAgICBkYXRhVHlwZVNpemUgPSA0OworCisgICAgICAgICAgICBpZiAo
dGhpcy5vZmZzZXQgJSBkYXRhVHlwZVNpemUgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLkF0dHJpYnV0ZVNwZWMucHJvdG90eXBlLmlzQnVmZmVyU3RyaWRlQWxpZ25l
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5wdXRUeXBlUGFja2VkID0gdGhpcy5pbnB1
dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfSU5U
XzJfMTBfMTBfMTAgfHwgdGhpcy5pbnB1dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3Bl
Yy5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTA7CisKKyAgICAgICAgLy8gQnVmZmVyIGFsaWdubWVu
dCwgb2Zmc2V0IGlzIGEgbXVsdGlwbGUgb2YgdW5kZXJseWluZyBkYXRhIHR5cGUgc2l6ZT8KKyAg
ICAgICAgaWYgKHRoaXMuc3RvcmFnZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlN0b3Jh
Z2UuQlVGRkVSKSB7CisgICAgICAgICAgICB2YXIgZGF0YVR5cGVTaXplID0gZ2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5pbnB1dFR5cGVTaXplKHRoaXMuaW5wdXRUeXBlKTsKKyAgICAgICAgICAg
IGlmIChpbnB1dFR5cGVQYWNrZWQpCisgICAgICAgICAgICAgICAgZGF0YVR5cGVTaXplID0gNDsK
KworICAgICAgICAgICAgaWYgKHRoaXMuc3RyaWRlICUgZGF0YVR5cGVTaXplICE9IDApCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRl
bmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWN9IHNwZWMKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0ID0g
ZnVuY3Rpb24oc3BlYywgbmFtZSwgZGVzYykgeworICAgICAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVz
dC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MsIHNwZWMpOworCisgICAgICAgIC8qKiBAdHlwZSB7V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dH0gKi8gdGhpcy5tX3JlbmRlckN0eCA9IGdsOworICAgICAgICAv
KiogQHR5cGUge3RjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0fSAqLyB0aGlzLm1fcGl4ZWxmb3Jt
YXQgPSBuZXcgdGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXQoCisgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5SRURfQklUUykpLCAvKiogQHR5cGUg
e251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5HUkVFTl9CSVRTKSksCisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpKSwg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykpCisg
ICAgICAgICk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZl
cmVuY2VDb250ZXh0QnVmZmVyc30gKi8gdGhpcy5tX3JlZkJ1ZmZlcnMgPSBudWxsOworICAgICAg
ICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9ICovIHRo
aXMubV9yZWZDb250ZXh0ID0gbnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyR0xDb250ZXh0
LkdMQ29udGV4dH0gKi8gdGhpcy5tX2dsZXNDb250ZXh0ID0gbnVsbDsKKworICAgICAgICAvKiog
QHR5cGUge2dsc0RyYXdUZXN0cy5BdHRyaWJ1dGVQYWNrfSAqLyB0aGlzLm1fZ2xBcnJheVBhY2sg
PSBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5BdHRyaWJ1dGVQYWNrfSAq
LyB0aGlzLm1fcnJBcnJheVBhY2sgPSBudWxsOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB0aGlzLm1fbWF4RGlmZlJlZCA9IC0xOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX21heERpZmZHcmVlbiA9IC0xOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5tX21heERpZmZCbHVlID0gLTE7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjPn0gKi8gdGhpcy5tX3NwZWNzID0gW107CisgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi90aGlzLm1faXRlcmF0aW9uX2Rlc2NyaXB0aW9u
cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2l0ZXJhdGlvbiA9
IDA7CisKKyAgICAgICAgaWYgKHNwZWMpCisgICAgICAgICAgICB0aGlzLmFkZEl0ZXJhdGlvbihz
cGVjKTsKKyAgICB9OworCisgICAgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0LnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUodGN1VGVzdENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzRHJhd1Rlc3RzLkRyYXdU
ZXN0OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
fSBzcGVjCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBkZXNjcmlwdGlvbgorICAgICAqLworICAg
IGdsc0RyYXdUZXN0cy5EcmF3VGVzdC5wcm90b3R5cGUuYWRkSXRlcmF0aW9uID0gZnVuY3Rpb24o
c3BlYywgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gVmFsaWRhdGUgc3BlYworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciB2YWxpZFNwZWMgPSBzcGVjLnZhbGlkKCk7CisKKyAg
ICAgICAgaWYgKCF2YWxpZFNwZWMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5tX3NwZWNzLnB1c2goc3BlYyk7CisKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uKQorICAgICAg
ICAgICAgdGhpcy5tX2l0ZXJhdGlvbl9kZXNjcmlwdGlvbnMucHVzaChkZXNjcmlwdGlvbik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMubV9pdGVyYXRpb25fZGVzY3JpcHRpb25zLnB1
c2goJycpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBpbml0CisgICAgICovCisgICAgZ2xz
RHJhd1Rlc3RzLkRyYXdUZXN0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciByZW5kZXJUYXJnZXRXaWR0aCA9IE1hdGgubWluKGdsc0RyYXdUZXN0cy5NQVhfUkVOREVS
X1RBUkdFVF9TSVpFLCBnbC5jYW52YXMud2lkdGgpOworICAgICAgICB2YXIgcmVuZGVyVGFyZ2V0
SGVpZ2h0ID0gTWF0aC5taW4oZ2xzRHJhd1Rlc3RzLk1BWF9SRU5ERVJfVEFSR0VUX1NJWkUsIGds
LmNhbnZhcy5oZWlnaHQpOworICAgICAgICAvKiogQHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0
LlJlZmVyZW5jZUNvbnRleHRMaW1pdHN9ICovIHZhciBsaW1pdHMgPSBuZXcgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dExpbWl0cyhnbCk7CisgICAgICAgIC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gdmFyIHVzZVZhbyA9IHRydWU7CisKKyAgICAgICAgdGhpcy5tX2dsZXNDb250
ZXh0ID0gbmV3IHNnbHJHTENvbnRleHQuR0xDb250ZXh0KGdsKTsKKworICAgICAgICBhc3NlcnRN
c2dPcHRpb25zKHRoaXMubV9zcGVjcy5sZW5ndGggPiAwLCAnU3BlY3MgaXMgZW1wdHknLCBmYWxz
ZSwgdHJ1ZSk7CisKKyAgICAgICAgdGhpcy5tX3JlZkJ1ZmZlcnMgPSBuZXcgc2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dEJ1ZmZlcnModGhpcy5tX3BpeGVsZm9ybWF0LCAwLCAw
LCByZW5kZXJUYXJnZXRXaWR0aCwgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5t
X3JlZkNvbnRleHQgPSBuZXcgc2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dChs
aW1pdHMsIHRoaXMubV9yZWZCdWZmZXJzLmdldENvbG9yYnVmZmVyKCksIHRoaXMubV9yZWZCdWZm
ZXJzLmdldERlcHRoYnVmZmVyKCksIHRoaXMubV9yZWZCdWZmZXJzLmdldFN0ZW5jaWxidWZmZXIo
KSk7CisKKyAgICAgICAgdGhpcy5tX2dsQXJyYXlQYWNrID0gbmV3IGdsc0RyYXdUZXN0cy5BdHRy
aWJ1dGVQYWNrKHRoaXMubV9nbGVzQ29udGV4dCwgW3JlbmRlclRhcmdldFdpZHRoLCByZW5kZXJU
YXJnZXRIZWlnaHRdLCB1c2VWYW8sIHRydWUpOworICAgICAgICB0aGlzLm1fcnJBcnJheVBhY2sg
PSBuZXcgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZVBhY2sodGhpcy5tX3JlZkNvbnRleHQsIFtyZW5k
ZXJUYXJnZXRXaWR0aCwgcmVuZGVyVGFyZ2V0SGVpZ2h0XSwgdXNlVmFvLCBmYWxzZSk7CisKKyAg
ICAgICAgdGhpcy5tX21heERpZmZSZWQgPSBNYXRoLmNlaWwoMjU2LjAgKiAoMTUuMCAvICgxIDw8
IHRoaXMubV9waXhlbGZvcm1hdC5yZWRCaXRzKSkpOworICAgICAgICB0aGlzLm1fbWF4RGlmZkdy
ZWVuID0gTWF0aC5jZWlsKDI1Ni4wICogKDE1LjAgLyAoMSA8PCB0aGlzLm1fcGl4ZWxmb3JtYXQu
Z3JlZW5CaXRzKSkpOworICAgICAgICB0aGlzLm1fbWF4RGlmZkJsdWUgPSBNYXRoLmNlaWwoMjU2
LjAgKiAoMTUuMCAvICgxIDw8IHRoaXMubV9waXhlbGZvcm1hdC5ibHVlQml0cykpKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0K
KyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuRHJhd1Rlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNwZWNOZHggPSBNYXRoLmZsb29yKHRoaXMubV9pdGVy
YXRpb24gLyAyKTsKKyAgICAgICAgdmFyIGRyYXdTdGVwID0gKHRoaXMubV9pdGVyYXRpb24gJSAy
KSA9PSAwOworICAgICAgICB2YXIgY29tcGFyZVN0ZXAgPSAodGhpcy5tX2l0ZXJhdGlvbiAlIDIp
ID09IDE7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdH0gKi8g
dmFyIGl0ZXJhdGVSZXN1bHQgPSAodGhpcy5tX2l0ZXJhdGlvbiArIDEgPT0gdGhpcy5tX3NwZWNz
Lmxlbmd0aCAqIDIpID8gKHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUCkgOiAodGN1VGVz
dENhc2UuSXRlcmF0ZVJlc3VsdC5DT05USU5VRSk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlY30gKi8gdmFyIHNwZWMgPSB0aGlzLm1fc3BlY3Nbc3BlY05keF07
CisgICAgICAgIHZhciB1cGRhdGVQcm9ncmFtID0gKHRoaXMubV9pdGVyYXRpb24gPT0gMCkgfHwg
KGRyYXdTdGVwICYmICFnbHNEcmF3VGVzdHMuY2hlY2tTcGVjc1NoYWRlckNvbXBhdGlibGUodGhp
cy5tX3NwZWNzW3NwZWNOZHhdLCB0aGlzLm1fc3BlY3Nbc3BlY05keCAtIDFdKSk7IC8vIHRyeSB0
byB1c2UgdGhlIHNhbWUgc2hhZGVyIGluIGFsbCBpdGVyYXRpb25zCisKKyAgICAgICAgaWYgKGRy
YXdTdGVwICYmIHRoaXMubV9zcGVjcy5sZW5ndGggIT0gMSkKKyAgICAgICAgICAgIGRlYnVnKCdJ
dGVyYXRpb24gJyArIHNwZWNOZHggKyAnIG9mICcgKyAodGhpcy5tX3NwZWNzLmxlbmd0aCAtIDEp
ICsgJzogJyArIHRoaXMubV9pdGVyYXRpb25fZGVzY3JpcHRpb25zW3NwZWNOZHhdKTsKKworICAg
ICAgICB0aGlzLm1faXRlcmF0aW9uKys7CisKKyAgICAgICAgaWYgKGRyYXdTdGVwKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5NZXRob2RJbmZvfSAqLyB2YXIgbWV0aG9k
SW5mbyA9IGdsc0RyYXdUZXN0cy5nZXRNZXRob2RJbmZvKHNwZWMuZHJhd01ldGhvZCk7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpbmRleGVkID0gbWV0aG9kSW5mby5p
bmRleGVkOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaW5zdGFuY2Vk
ID0gbWV0aG9kSW5mby5pbnN0YW5jZWQ7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciByYW5nZWQgPSBtZXRob2RJbmZvLnJhbmdlZDsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc0ZpcnN0ID0gbWV0aG9kSW5mby5maXJzdDsKKworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwcmltaXRpdmVFbGVtZW50Q291bnQgPSBn
bHNEcmF3VGVzdHMuZ2V0RWxlbWVudENvdW50KHNwZWMucHJpbWl0aXZlLCBzcGVjLnByaW1pdGl2
ZUNvdW50KTsgLy8gITwgZWxlbWVudHMgdG8gYmUgZHJhd24KKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgaW5kZXhNaW4gPSAocmFuZ2VkKSA/IChzcGVjLmluZGV4TWluKSA6
ICgwKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZmlyc3RBZGRpdGlv
biA9IChoYXNGaXJzdCkgPyAoc3BlYy5maXJzdCkgOiAoMCk7CisgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGVsZW1lbnRDb3VudCA9IHByaW1pdGl2ZUVsZW1lbnRDb3VudCAr
IGluZGV4TWluICsgZmlyc3RBZGRpdGlvbjsgLy8gITwgZWxlbWVudHMgaW4gYnVmZmVyIChidWZm
ZXIgc2hvdWxkIGhhdmUgYXQgbGVhc3QgcHJpbWl0aXZlRWxlbWVudENvdW50IEFDQ0VTU0lCTEUg
KGluZGV4IHJhbmdlLCBmaXJzdCkgZWxlbWVudHMpCisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG1heEVsZW1lbnRJbmRleCA9IHByaW1pdGl2ZUVsZW1lbnRDb3VudCArIGlu
ZGV4TWluICsgZmlyc3RBZGRpdGlvbiAtIDE7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIGluZGV4TWF4ID0gTWF0aC5tYXgoMCwgKHJhbmdlZCkgPyAoZGVNYXRoLmNsYW1w
KHNwZWMuaW5kZXhNYXgsIDAsIG1heEVsZW1lbnRJbmRleCkpIDogKG1heEVsZW1lbnRJbmRleCkp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb29yZFNjYWxlID0gdGhp
cy5nZXRDb29yZFNjYWxlKHNwZWMpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBjb2xvclNjYWxlID0gdGhpcy5nZXRDb2xvclNjYWxlKHNwZWMpOworCisgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBudWxsQXR0cmliVmFsdWUgPSBbXTsK
KworICAgICAgICAgICAgLy8gTG9nIGluZm8KKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKHNwZWMuZ2V0TXVsdGlsaW5lRGVzYygpKTsKKworICAgICAgICAgICAgLy8gRGF0YQorICAg
ICAgICAgICAgdGhpcy5tX2dsQXJyYXlQYWNrLmNsZWFyQXJyYXlzKCk7CisgICAgICAgICAgICB0
aGlzLm1fcnJBcnJheVBhY2suY2xlYXJBcnJheXMoKTsKKworICAgICAgICAgICAgLy8gaW5kaWNl
cworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWVkOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbmRleEVsZW1lbnRTaXplOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbmRleEFycmF5U2l6ZTsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgaW5kZXhBcnJheTsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Z29vZy5UeXBlZEFycmF5fSAqLyB2YXIgaW5kZXhQb2ludGVyOworCisg
ICAgICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5BdHRyaWJ1dGVBcnJheX0qLyB2YXIg
Z2xBcnJheTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFy
cmF5fSovIHZhciByckFycmF5OworCisgICAgICAgICAgICBpZiAoaW5kZXhlZCkgeworICAgICAg
ICAgICAgICAgIHNlZWQgPSBzcGVjLmhhc2goKTsKKyAgICAgICAgICAgICAgICBpbmRleEVsZW1l
bnRTaXplID0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5pbmRleFR5cGVTaXplKHNwZWMuaW5k
ZXhUeXBlKTsKKyAgICAgICAgICAgICAgICBpbmRleEFycmF5U2l6ZSA9IHNwZWMuaW5kZXhQb2lu
dGVyT2Zmc2V0ICsgaW5kZXhFbGVtZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKKyAgICAgICAgICAg
ICAgICBpbmRleEFycmF5ID0gZ2xzRHJhd1Rlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmdlbmVy
YXRlSW5kaWNlcyhzZWVkLCBlbGVtZW50Q291bnQsIHNwZWMuaW5kZXhUeXBlLCBzcGVjLmluZGV4
UG9pbnRlck9mZnNldCwgaW5kZXhNaW4sIGluZGV4TWF4KTsKKyAgICAgICAgICAgICAgICBpbmRl
eFBvaW50ZXIgPSBpbmRleEFycmF5LnN1YmFycmF5KHNwZWMuaW5kZXhQb2ludGVyT2Zmc2V0KTsK
KworICAgICAgICAgICAgICAgIGdsQXJyYXkgPSBuZXcgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFy
cmF5KHNwZWMuaW5kZXhTdG9yYWdlLCB0aGlzLm1fZ2xlc0NvbnRleHQpOworICAgICAgICAgICAg
ICAgIHJyQXJyYXkgPSBuZXcgZ2xzRHJhd1Rlc3RzLkF0dHJpYnV0ZUFycmF5KHNwZWMuaW5kZXhT
dG9yYWdlLCB0aGlzLm1fcmVmQ29udGV4dCk7CisKKyAgICAgICAgICAgICAgICBnbEFycmF5LmRh
dGEoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5UYXJnZXQuRUxFTUVOVF9BUlJBWSwgaW5kZXhB
cnJheVNpemUsIGluZGV4QXJyYXksIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuVXNhZ2UuU1RB
VElDX0RSQVcpOworICAgICAgICAgICAgICAgIHJyQXJyYXkuZGF0YShnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLlRhcmdldC5FTEVNRU5UX0FSUkFZLCBpbmRleEFycmF5U2l6ZSwgaW5kZXhBcnJh
eSwgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Vc2FnZS5TVEFUSUNfRFJBVyk7CisKKyAgICAg
ICAgICAgICAgICBpbmRleEFycmF5ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gYXR0cmlidXRlcworICAgICAgICAgICAgZm9yICh2YXIgYXR0cmliTmR4ID0gMDsgYXR0
cmliTmR4IDwgc3BlYy5hdHRyaWJzLmxlbmd0aDsgYXR0cmliTmR4KyspIHsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQXR0cmlidXRlU3BlY30g
Ki8gdmFyIGF0dHJpYlNwZWMgPSBzcGVjLmF0dHJpYnNbYXR0cmliTmR4XTsKKyAgICAgICAgICAg
ICAgICB2YXIgaXNQb3NpdGlvbkF0dHIgPSAoYXR0cmliTmR4ID09IDApIHx8IChhdHRyaWJTcGVj
LmFkZGl0aW9uYWxQb3NpdGlvbkF0dHJpYnV0ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoYXR0
cmliU3BlYy51c2VEZWZhdWx0QXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNlZWQg
PSAxMCAqIGF0dHJpYlNwZWMuaGFzaCgpICsgMTAwICogc3BlYy5oYXNoKCkgKyBhdHRyaWJOZHg7
CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGF0
dHJpYlZhbHVlID0gZ2xzRHJhd1Rlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmdlbmVyYXRlQXR0
cmlidXRlVmFsdWUoc2VlZCwgYXR0cmliU3BlYy5pbnB1dFR5cGUpOworCisgICAgICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZWQgVVNFUiBmb3IgQlVGRkVSIGluIEpTIHZlcnNpb24KKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tX2dsQXJyYXlQYWNrLm5ld0FycmF5KGdsc0RyYXdUZXN0cy5EcmF3
VGVzdFNwZWMuU3RvcmFnZS5CVUZGRVIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcnJB
cnJheVBhY2submV3QXJyYXkoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5TdG9yYWdlLkJVRkZF
Uik7CisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tX2dsQXJyYXlQYWNrLmdldEFycmF5KGF0
dHJpYk5keCkuc2V0dXBBcnJheShmYWxzZSwgMCwgYXR0cmliU3BlYy5jb21wb25lbnRDb3VudCwg
YXR0cmliU3BlYy5pbnB1dFR5cGUsIGF0dHJpYlNwZWMub3V0cHV0VHlwZSwgZmFsc2UsIDAsIDAs
IGF0dHJpYlZhbHVlLCBpc1Bvc2l0aW9uQXR0cik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
bV9yckFycmF5UGFjay5nZXRBcnJheShhdHRyaWJOZHgpLnNldHVwQXJyYXkoZmFsc2UsIDAsIGF0
dHJpYlNwZWMuY29tcG9uZW50Q291bnQsIGF0dHJpYlNwZWMuaW5wdXRUeXBlLCBhdHRyaWJTcGVj
Lm91dHB1dFR5cGUsIGZhbHNlLCAwLCAwLCBhdHRyaWJWYWx1ZSwgaXNQb3NpdGlvbkF0dHIpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlZWQgPSBhdHRy
aWJTcGVjLmhhc2goKSArIDEwMCAqIHNwZWMuaGFzaCgpICsgYXR0cmliTmR4OworICAgICAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGVsZW1lbnRTaXplID0gYXR0cmli
U3BlYy5jb21wb25lbnRDb3VudCAqIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuaW5wdXRUeXBl
U2l6ZShhdHRyaWJTcGVjLmlucHV0VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgc3RyaWRlID0gKGF0dHJpYlNwZWMuc3RyaWRlID09IDApID8gKGVs
ZW1lbnRTaXplKSA6IChhdHRyaWJTcGVjLnN0cmlkZSk7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZXZhbHVhdGVkRWxlbWVudENvdW50ID0gKGluc3RhbmNl
ZCAmJiBhdHRyaWJTcGVjLmluc3RhbmNlRGl2aXNvciA+IDApID8gKHNwZWMuaW5zdGFuY2VDb3Vu
dCAvIGF0dHJpYlNwZWMuaW5zdGFuY2VEaXZpc29yICsgMSkgOiAoZWxlbWVudENvdW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZlcmVuY2VkRWxl
bWVudENvdW50ID0gKHJhbmdlZCkgPyAoTWF0aC5tYXgoZXZhbHVhdGVkRWxlbWVudENvdW50LCBz
cGVjLmluZGV4TWF4ICsgMSkpIDogKGV2YWx1YXRlZEVsZW1lbnRDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnVmZmVyU2l6ZSA9IGF0dHJpYlNw
ZWMub2Zmc2V0ICsgc3RyaWRlICogKHJlZmVyZW5jZWRFbGVtZW50Q291bnQgLSAxKSArIGVsZW1l
bnRTaXplOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dvb2cuVHlwZWRBcnJheX0g
Ki8gdmFyIGRhdGEgPSBnbHNEcmF3VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuY3JlYXRlQXJy
YXkoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmVmZXJlbmNlZEVsZW1lbnRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YlNwZWMuY29tcG9uZW50Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJTcGVj
Lm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dHJpYlNwZWMuaW5wdXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhlZCA/IDAgOiBzcGVjLmZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5w
cmltaXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVkID8gaW5kZXhQb2ludGVy
IDogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4RWxlbWVudFNpemUKKyAgICAg
ICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ2xBcnJheVBh
Y2submV3QXJyYXkoYXR0cmliU3BlYy5zdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5tX3JyQXJyYXlQYWNrLm5ld0FycmF5KGF0dHJpYlNwZWMuc3RvcmFnZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tX2dsQXJyYXlQYWNrLmdldEFycmF5KGF0dHJpYk5keCkuZGF0YShn
bHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlRhcmdldC5BUlJBWSwgYnVmZmVyU2l6ZSwgZGF0YSwg
YXR0cmliU3BlYy51c2FnZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubV9yckFycmF5UGFj
ay5nZXRBcnJheShhdHRyaWJOZHgpLmRhdGEoZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5UYXJn
ZXQuQVJSQVksIGJ1ZmZlclNpemUsIGRhdGEsIGF0dHJpYlNwZWMudXNhZ2UpOworCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMubV9nbEFycmF5UGFjay5nZXRBcnJheShhdHRyaWJOZHgpLnNldHVw
QXJyYXkodHJ1ZSwgYXR0cmliU3BlYy5vZmZzZXQsIGF0dHJpYlNwZWMuY29tcG9uZW50Q291bnQs
IGF0dHJpYlNwZWMuaW5wdXRUeXBlLCBhdHRyaWJTcGVjLm91dHB1dFR5cGUsIGF0dHJpYlNwZWMu
bm9ybWFsaXplLCBhdHRyaWJTcGVjLnN0cmlkZSwgYXR0cmliU3BlYy5pbnN0YW5jZURpdmlzb3Is
IG51bGxBdHRyaWJWYWx1ZSwgaXNQb3NpdGlvbkF0dHIpOworICAgICAgICAgICAgICAgICAgICB0
aGlzLm1fcnJBcnJheVBhY2suZ2V0QXJyYXkoYXR0cmliTmR4KS5zZXR1cEFycmF5KHRydWUsIGF0
dHJpYlNwZWMub2Zmc2V0LCBhdHRyaWJTcGVjLmNvbXBvbmVudENvdW50LCBhdHRyaWJTcGVjLmlu
cHV0VHlwZSwgYXR0cmliU3BlYy5vdXRwdXRUeXBlLCBhdHRyaWJTcGVjLm5vcm1hbGl6ZSwgYXR0
cmliU3BlYy5zdHJpZGUsIGF0dHJpYlNwZWMuaW5zdGFuY2VEaXZpc29yLCBudWxsQXR0cmliVmFs
dWUsIGlzUG9zaXRpb25BdHRyKTsKKworICAgICAgICAgICAgICAgICAgICBkYXRhID0gbnVsbDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNoYWRl
ciBwcm9ncmFtCisgICAgICAgICAgICBpZiAodXBkYXRlUHJvZ3JhbSkgeworICAgICAgICAgICAg
ICAgIHRoaXMubV9nbEFycmF5UGFjay51cGRhdGVQcm9ncmFtKCk7CisgICAgICAgICAgICAgICAg
dGhpcy5tX3JyQXJyYXlQYWNrLnVwZGF0ZVByb2dyYW0oKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLkNvbXBhdGliaWxp
dHlUZXN0VHlwZX0gKi8gdmFyIGN0eXBlOworCisgICAgICAgICAgICAvLyBEcmF3CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIGluZGljZXMKKyAgICAgICAgICAgICAgICBp
ZiAoaW5kZXhlZCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fZ2xBcnJheVBhY2sucmVu
ZGVyKHNwZWMucHJpbWl0aXZlLCBzcGVjLmRyYXdNZXRob2QsIDAsIHByaW1pdGl2ZUVsZW1lbnRD
b3VudCwgc3BlYy5pbmRleFR5cGUsIHNwZWMuaW5kZXhQb2ludGVyT2Zmc2V0LCBzcGVjLmluZGV4
TWluLCBzcGVjLmluZGV4TWF4LCBzcGVjLmluc3RhbmNlQ291bnQsIGNvb3JkU2NhbGUsIGNvbG9y
U2NhbGUsIGdsQXJyYXkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcnJBcnJheVBhY2su
cmVuZGVyKHNwZWMucHJpbWl0aXZlLCBzcGVjLmRyYXdNZXRob2QsIDAsIHByaW1pdGl2ZUVsZW1l
bnRDb3VudCwgc3BlYy5pbmRleFR5cGUsIHNwZWMuaW5kZXhQb2ludGVyT2Zmc2V0LCBzcGVjLmlu
ZGV4TWluLCBzcGVjLmluZGV4TWF4LCBzcGVjLmluc3RhbmNlQ291bnQsIGNvb3JkU2NhbGUsIGNv
bG9yU2NhbGUsIHJyQXJyYXkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV9nbEFycmF5UGFjay5yZW5kZXIoc3BlYy5wcmltaXRpdmUsIHNwZWMu
ZHJhd01ldGhvZCwgc3BlYy5maXJzdCwgcHJpbWl0aXZlRWxlbWVudENvdW50LCBudWxsLCAwLCAw
LCAwLCBzcGVjLmluc3RhbmNlQ291bnQsIGNvb3JkU2NhbGUsIGNvbG9yU2NhbGUsIG51bGwpOwor
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1fcnJBcnJheVBhY2sucmVuZGVyKHNwZWMucHJpbWl0
aXZlLCBzcGVjLmRyYXdNZXRob2QsIHNwZWMuZmlyc3QsIHByaW1pdGl2ZUVsZW1lbnRDb3VudCwg
bnVsbCwgMCwgMCwgMCwgc3BlYy5pbnN0YW5jZUNvdW50LCBjb29yZFNjYWxlLCBjb2xvclNjYWxl
LCBudWxsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygd3R1LkdMRXJyb3JFeGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR0wgRXJyb3JzIGFyZSBvayBpZiB0aGUgbW9kZSBp
cyBub3QgcHJvcGVybHkgYWxpZ25lZAorICAgICAgICAgICAgICAgICAgICBjdHlwZSA9IHNwZWMu
aXNDb21wYXRpYmlsaXR5VGVzdCgpOworCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdHb3QgZXJyb3I6ICcgKyBlcnIubWVzc2FnZSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGN0eXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQ29tcGF0aWJpbGl0
eVRlc3RUeXBlLlVOQUxJR05FRF9PRkZTRVQpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a01lc3NhZ2UoZmFsc2UsICdGYWlsZWQgdG8gZHJhdyB3aXRoIHVuYWxpZ25lZCBidWZmZXJzLicp
OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLkNvbXBhdGliaWxpdHlUZXN0VHlwZS5VTkFMSUdORURfU1RSSURFKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tNZXNzYWdlKGZhbHNlLCAnRmFpbGVkIHRvIGRyYXcgd2l0
aCB1bmFsaWduZWQgc3RyaWRlLicpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVTdGVwKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXMuY29tcGFyZShzcGVjLnByaW1pdGl2ZSkpIHsKKyAgICAgICAgICAgICAgICBjdHlwZSA9
IHNwZWMuaXNDb21wYXRpYmlsaXR5VGVzdCgpOworCisgICAgICAgICAgICAgICAgaWYgKGN0eXBl
ID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuQ29tcGF0aWJpbGl0eVRlc3RUeXBlLlVOQUxJ
R05FRF9PRkZTRVQpCisgICAgICAgICAgICAgICAgICAgIGNoZWNrTWVzc2FnZShmYWxzZSwgJ0Zh
aWxlZCB0byBkcmF3IHdpdGggdW5hbGlnbmVkIGJ1ZmZlcnMuJyk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoY3R5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Db21wYXRpYmlsaXR5
VGVzdFR5cGUuVU5BTElHTkVEX1NUUklERSkKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tNZXNz
YWdlKGZhbHNlLCAnRmFpbGVkIHRvIGRyYXcgd2l0aCB1bmFsaWduZWQgc3RyaWRlLicpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMo
J0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkLicsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gaXRlcmF0ZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJpc29uIGZhaWxlZC4nLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0ZXJhdGVSZXN1bHQgPT0gdGN1VGVzdENhc2UuSXRl
cmF0ZVJlc3VsdC5TVE9QKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgnJyk7CisKKyAgICAgICAg
cmV0dXJuIGl0ZXJhdGVSZXN1bHQ7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBlbnVtIHtu
dW1iZXJ9IFByaW1pdGl2ZUNsYXNzCisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLlByaW1pdGl2
ZUNsYXNzID0geworICAgICAgICBQT0lOVDogMCwKKyAgICAgICAgTElORTogMSwKKyAgICAgICAg
VFJJQU5HTEU6IDIKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rl
c3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmV9IHByaW1pdGl2ZVR5cGUKKyAgICAgKiBAcmV0dXJu
IHtnbHNEcmF3VGVzdHMuUHJpbWl0aXZlQ2xhc3N9CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3Rz
LmdldERyYXdQcmltaXRpdmVDbGFzcyA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5cGUpIHsKKyAgICAg
ICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0
cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLlBPSU5UUzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2xzRHJhd1Rlc3RzLlByaW1pdGl2ZUNsYXNzLlBPSU5UOworCisgICAgICAgICAgICBjYXNlIGds
c0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZlLkxJTkVTOgorICAgICAgICAgICAgY2Fz
ZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX1NUUklQOgorICAgICAg
ICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLlByaW1pdGl2ZS5MSU5FX0xPT1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5QcmltaXRpdmVDbGFzcy5MSU5F
OworCisgICAgICAgICAgICBjYXNlIGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuUHJpbWl0aXZl
LlRSSUFOR0xFUzoKKyAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5Q
cmltaXRpdmUuVFJJQU5HTEVfRkFOOgorICAgICAgICAgICAgY2FzZSBnbHNEcmF3VGVzdHMuRHJh
d1Rlc3RTcGVjLlByaW1pdGl2ZS5UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2xzRHJhd1Rlc3RzLlByaW1pdGl2ZUNsYXNzLlRSSUFOR0xFOworCisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRp
dmUgdHlwZScpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBjMQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjMgorICAgICAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gdGhyZXNob2xkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICBnbHNEcmF3VGVzdHMuY29tcGFyZVVpbnRSR0I4ID0gZnVuY3Rpb24oYzEsIGMyLCB0aHJl
c2hvbGQpIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLmFicygoKGMxID4+IDE2KSAmIDB4ZmYpIC0g
KChjMiA+PiAxNikgJiAweGZmKSkgPD0gdGhyZXNob2xkWzBdICYmICAvLyBSZWQKKyAgICAgICAg
ICAgICAgICBNYXRoLmFicygoKGMxID4+IDgpICYgMHhmZikgLSAoKGMyID4+IDgpICYgMHhmZikp
IDw9IHRocmVzaG9sZFsxXSAmJiAgICAvLyBHcmVlbgorICAgICAgICAgICAgICAgIE1hdGguYWJz
KChjMSAmIDB4ZmYpIC0gKGMyICYgMHhmZikpIDw9IHRocmVzaG9sZFsyXSk7ICAgICAgICAgICAg
ICAgICAgIC8vIEJsdWUKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGMxCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGMyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGMz
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlbmRlclRhcmdldERpZmZlcmVuY2UKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5pc0VkZ2VUcmlwbGV0
Q29tcG9uZW50ID0gZnVuY3Rpb24oYzEsIGMyLCBjMywgcmVuZGVyVGFyZ2V0RGlmZmVyZW5jZSkg
eworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJvdW5kaW5nRGlmZmVyZW5jZSA9
IDIgKiByZW5kZXJUYXJnZXREaWZmZXJlbmNlOyAvLyBzcmMgYW5kIGRzdCBwaXhlbHMgcm91bmRl
ZCB0byBkaWZmZXJlbnQgZGlyZWN0aW9ucworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGQxID0gYzIgLSBjMTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkMiA9
IGMzIC0gYzI7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgcmFtcERpZmYgPSBN
YXRoLmFicyhkMiAtIGQxKTsKKworICAgICAgICByZXR1cm4gcmFtcERpZmYgPiByb3VuZGluZ0Rp
ZmZlcmVuY2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1UkdCQS5SR0JB
fSBjMQorICAgICAqIEBwYXJhbSB7dGN1UkdCQS5SR0JBfSBjMgorICAgICAqIEBwYXJhbSB7dGN1
UkdCQS5SR0JBfSBjMworICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcmVuZGVyVGFyZ2V0
VGhyZXNob2xkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3
VGVzdHMuaXNFZGdlVHJpcGxldCA9IGZ1bmN0aW9uKGMxLCBjMiwgYzMsIHJlbmRlclRhcmdldFRo
cmVzaG9sZCkgeworICAgICAgICAvLyBibGFjayAoYmFja2dyb3VuZCBjb2xvcikgYW5kIG5vbi1i
bGFjayBpcyBhbHdheXMgYW4gZWRnZQorICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBiMSA9IGMxID09IDB4MDAwMDAwOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBiMiA9IGMyID09IDB4MDAwMDAwOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZh
ciBiMyA9IGMzID09IDB4MDAwMDAwOworCisgICAgICAgIC8vIGJvdGggcGl4ZWxzIHdpdGggY292
ZXJhZ2UgYW5kIHBpeGVscyB3aXRob3V0IGNvdmVyYWdlCisgICAgICAgIGlmICgoYjEgJiYgYjIg
JiYgYjMpID09IGZhbHNlICYmIChiMSB8fCBiMiB8fCBiMykgPT0gdHJ1ZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAvLyBhbGwgYmxhY2sKKyAgICAgICAgaWYgKGIxICYmIGIy
ICYmIGIzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBhbGwgd2l0aCBj
b3ZlcmFnZQorICAgICAgICBhc3NlcnRNc2dPcHRpb25zKCFiMSAmJiAhYjIgJiYgIWIzLCAnQWxs
IGNvbG9ycyB3aXRoIGNvdmVyYWdlJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8vIENvbG9y
IGlzIGFsd2F5cyBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgPT4gY29tcG9uZW50IHZhbHVlcyBjaGFu
Z2UgbmVhcmx5IGxpbmVhcmx5CisgICAgICAgIC8vIGluIGFueSBjb25zdGFudCBkaXJlY3Rpb24g
b24gdHJpYW5nbGUgaHVsbC4gKGRmL2R4IH49IEMpLgorCisgICAgICAgIC8vIEVkZ2UgZGV0ZWN0
aW9uICh0aGlzIGZ1bmN0aW9uKSBpcyBydW4gYWdhaW5zdCB0aGUgcmVmZXJlbmNlIGltYWdlCisg
ICAgICAgIC8vID0+IG5vIGRpdGhlcmluZyB0byB3b3JyeSBhYm91dAorCisgICAgICAgIHJldHVy
biBnbHNEcmF3VGVzdHMuaXNFZGdlVHJpcGxldENvbXBvbmVudCgoYzEgPj4gMTYpICYmIDB4ZmYs
IChjMiA+PiAxNikgJiYgMHhmZiwgKGMzID4+IDE2KSAmJiAweGZmLCByZW5kZXJUYXJnZXRUaHJl
c2hvbGRbMF0pIHx8CisgICAgICAgICAgICBnbHNEcmF3VGVzdHMuaXNFZGdlVHJpcGxldENvbXBv
bmVudCgoYzEgPj4gOCkgJiYgMHhmZiwgKGMyID4+IDgpICYmIDB4ZmYsIChjMyA+PiA4KSAmJiAw
eGZmLCByZW5kZXJUYXJnZXRUaHJlc2hvbGRbMV0pIHx8CisgICAgICAgICAgICBnbHNEcmF3VGVz
dHMuaXNFZGdlVHJpcGxldENvbXBvbmVudChjMSAmJiAweGZmLCBjMiAmJiAweGZmLCBjMyAmJiAw
eGZmLCByZW5kZXJUYXJnZXRUaHJlc2hvbGRbMl0pOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBh
cmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJlZgorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVy
Pn0gcmVuZGVyVGFyZ2V0VGhyZXNob2xkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICBnbHNEcmF3VGVzdHMucGl4ZWxOZWFyRWRnZSA9IGZ1bmN0aW9uKHgsIHksIHJlZiwg
cmVuZGVyVGFyZ2V0VGhyZXNob2xkKSB7CisgICAgICAgIC8vIHNob3VsZCBub3QgYmUgY2FsbGVk
IGZvciBlZGdlIHBpeGVscworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHggPj0gMSAmJiB4IDw9
IHJlZi5nZXRXaWR0aCgpIC0gMiwgJ1RoZSBwaXhlbCB3YXMgb24gdGhlIGVkZ2UnLCBmYWxzZSwg
dHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeSA+PSAxICYmIHkgPD0gcmVmLmdldEhl
aWdodCgpIC0gMiwgJ1RoZSBwaXhlbCB3YXMgb24gdGhlIGVkZ2UnLCBmYWxzZSwgdHJ1ZSk7CisK
KyAgICAgICAgLy8gaG9yaXpvbnRhbAorCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgYzE7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYzI7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYzM7CisKKyAgICAgICAgZm9yICh2YXIgZHkgPSAtMTsg
ZHkgPCAyOyArK2R5KSB7CisgICAgICAgICAgICBjMSA9IHJlZi5nZXRQaXhlbFVpbnRSR0I4KHgg
LSAxLCB5ICsgZHkpOworICAgICAgICAgICAgYzIgPSByZWYuZ2V0UGl4ZWxVaW50UkdCOCh4LCB5
ICsgZHkpOworICAgICAgICAgICAgYzMgPSByZWYuZ2V0UGl4ZWxVaW50UkdCOCh4ICsgMSwgeSAr
IGR5KTsKKyAgICAgICAgICAgIGlmIChnbHNEcmF3VGVzdHMuaXNFZGdlVHJpcGxldChjMSwgYzIs
IGMzLCByZW5kZXJUYXJnZXRUaHJlc2hvbGQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgLy8gdmVydGljYWwKKworICAgICAgICBmb3IgKHZhciBk
eCA9IC0xOyBkeCA8IDI7ICsrZHgpIHsKKyAgICAgICAgICAgIGMxID0gcmVmLmdldFBpeGVsVWlu
dFJHQjgoeCArIGR4LCB5IC0gMSk7CisgICAgICAgICAgICBjMiA9IHJlZi5nZXRQaXhlbFVpbnRS
R0I4KHggKyBkeCwgeSk7CisgICAgICAgICAgICBjMyA9IHJlZi5nZXRQaXhlbFVpbnRSR0I4KHgg
KyBkeCwgeSArIDEpOworICAgICAgICAgICAgaWYgKGdsc0RyYXdUZXN0cy5pc0VkZ2VUcmlwbGV0
KGMxLCBjMiwgYzMsIHJlbmRlclRhcmdldFRocmVzaG9sZCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5nZXRWaXN1YWxpemF0aW9uR3JheXNjYWxlQ29s
b3JVaW50UkdCOCA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgLy8gbWFrZSB0cmlhbmdsZSBjb3Zl
cmFnZSBhbmQgZXJyb3IgcGl4ZWxzIG9idmlvdXMgYnkgY29udmVydGluZyBjb3ZlcmFnZSB0byBn
cmF5c2NhbGUKKyAgICAgICAgaWYgKGMgPT0gMHgwMDAwMDApCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIDUwICsgTWF0aC5mbG9vcigoKChj
ID4+IDE2KSAmIDB4ZmYpICsgKChjID4+IDgpICYgMHhmZikgKyAoYyAmIDB4ZmYpKSAvIDgpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHRhcmdldAor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLnBpeGVs
TmVhckxpbmVJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbih4LCB5LCB0YXJnZXQpIHsKKyAgICAgICAg
Ly8gc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIGVkZ2UgcGl4ZWxzCisgICAgICAgIGFzc2VydE1z
Z09wdGlvbnMoeCA+PSAxICYmIHggPD0gdGFyZ2V0LmdldFdpZHRoKCkgLSAyLCAnUGl4ZWwgaXMg
aW4gdGhlIGVkZ2UnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeSA+
PSAxICYmIHkgPD0gdGFyZ2V0LmdldEhlaWdodCgpIC0gMiwgJ1BpeGVsIGlzIGluIHRoZSBlZGdl
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgIHZhciBjb3ZlcmVkUGl4ZWxzID0gMDsKKworICAg
ICAgICBmb3IgKHZhciBkeSA9IC0xOyBkeSA8IDI7IGR5KyspCisgICAgICAgIGZvciAodmFyIGR4
ID0gLTE7IGR4IDwgMjsgZHgrKykgeworICAgICAgICAgICAgdmFyIHRhcmdldENvdmVyYWdlID0g
dGFyZ2V0LmdldFBpeGVsVWludFJHQjgoeCArIGR4LCB5ICsgZHkpOworICAgICAgICAgICAgaWYg
KHRhcmdldENvdmVyYWdlKSB7CisgICAgICAgICAgICAgICAgKytjb3ZlcmVkUGl4ZWxzOworCisg
ICAgICAgICAgICAgICAgLy8gQSBzaW5nbGUgdGhpbiBsaW5lIGNhbm5vdCBoYXZlIG1vcmUgdGhh
biAzIGNvdmVyZWQgcGl4ZWxzIGluIGEgM3gzIGFyZWEKKyAgICAgICAgICAgICAgICBpZiAoY292
ZXJlZFBpeGVscyA+PSA0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisg
ICAgLy8gc2VhcmNoIDN4MyBhcmUgZm9yIG1hdGNoaW5nIGNvbG9yCisgICAgLyoqCisgICAgICog
QHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHRhcmdldAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKiBAcGFyYW0ge3RjdVJHQkEuUkdC
QX0gY29sb3IKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGNvbXBhcmVUaHJlc2hvbGQK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5waXhl
bE5laWdoYm9yaG9vZENvbnRhaW5zQ29sb3IgPSBmdW5jdGlvbih0YXJnZXQsIHgsIHksIGNvbG9y
LCBjb21wYXJlVGhyZXNob2xkKSB7CisgICAgICAgIC8vIHNob3VsZCBub3QgYmUgY2FsbGVkIGZv
ciBlZGdlIHBpeGVscworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHggPj0gMSAmJiB4IDw9IHRh
cmdldC5nZXRXaWR0aCgpIC0gMiwgJ1BpeGVsIGlzIGluIHRoZSBlZGdlJywgZmFsc2UsIHRydWUp
OworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHkgPj0gMSAmJiB5IDw9IHRhcmdldC5nZXRIZWln
aHQoKSAtIDIsICdQaXhlbCBpcyBpbiB0aGUgZWRnZScsIGZhbHNlLCB0cnVlKTsKKworICAgICAg
ICBmb3IgKHZhciBkeSA9IC0xOyBkeSA8IDI7IGR5KyspCisgICAgICAgIGZvciAodmFyIGR4ID0g
LTE7IGR4IDwgMjsgZHgrKykgeworICAgICAgICAgICAgaWYgKGdsc0RyYXdUZXN0cy5jb21wYXJl
VWludFJHQjgoY29sb3IsIHRhcmdldC5nZXRQaXhlbFVpbnRSR0I4KHggKyBkeCwgeSArIGR5KSwg
Y29tcGFyZVRocmVzaG9sZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8vIHNlYXJjaCAzeDMg
YXJlIGZvciBtYXRjaGluZyBjb3ZlcmFnZSAoY292ZXJhZ2UgPT0gKGNvbG9yICE9IGJhY2tncm91
bmQgY29sb3IpKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSB0
YXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5
CisgICAgICogQHBhcmFtIHtib29sZWFufSBjb3ZlcmFnZQorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgZ2xzRHJhd1Rlc3RzLnBpeGVsTmVpZ2hib3Job29kQ29udGFpbnND
b3ZlcmFnZSA9IGZ1bmN0aW9uKHRhcmdldCwgeCwgeSwgY292ZXJhZ2UpIHsKKyAgICAgICAgLy8g
c2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIGVkZ2UgcGl4ZWxzCisgICAgICAgIGFzc2VydE1zZ09w
dGlvbnMoeCA+PSAxICYmIHggPD0gdGFyZ2V0LmdldFdpZHRoKCkgLSAyLCAnUGl4ZWwgaXMgaW4g
dGhlIGVkZ2UnLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoeSA+PSAx
ICYmIHkgPD0gdGFyZ2V0LmdldEhlaWdodCgpIC0gMiwgJ1BpeGVsIGlzIGluIHRoZSBlZGdlJywg
ZmFsc2UsIHRydWUpOworCisgICAgICAgIGZvciAodmFyIGR5ID0gLTE7IGR5IDwgMjsgZHkrKykK
KyAgICAgICAgZm9yICh2YXIgZHggPSAtMTsgZHggPCAyOyBkeCsrKSB7CisgICAgICAgICAgICB2
YXIgdGFyZ2V0Q21wQ292ZXJhZ2UgPSB0YXJnZXQuZ2V0UGl4ZWxVaW50UkdCOCh4ICsgZHgsIHkg
KyBkeSkgIT0gMHgwMDAwMDA7IC8vIFBpeGVsIGlzIG5vdCBibGFjaworICAgICAgICAgICAgaWYg
KHRhcmdldENtcENvdmVyYWdlID09IGNvdmVyYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXROYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGltYWdlU2V0RGVzYworICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBy
ZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0CisgICAg
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb21wYXJlVGhyZXNob2xkCisgICAgICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSByZW5kZXJUYXJnZXRUaHJlc2hvbGQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbWF4QWxsb3dlZEludmFsaWRQaXhlbHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5lZGdlUmVsYXhlZEltYWdlQ29tcGFyZSA9IGZ1bmN0
aW9uKGltYWdlU2V0TmFtZSwgaW1hZ2VTZXREZXNjLCByZWZlcmVuY2UsIHJlc3VsdCwgY29tcGFy
ZVRocmVzaG9sZCwgcmVuZGVyVGFyZ2V0VGhyZXNob2xkLCBtYXhBbGxvd2VkSW52YWxpZFBpeGVs
cykgeworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHJlc3VsdC5nZXRXaWR0aCgpID09IHJlZmVy
ZW5jZS5nZXRXaWR0aCgpICYmIHJlc3VsdC5nZXRIZWlnaHQoKSA9PSByZWZlcmVuY2UuZ2V0SGVp
Z2h0KCksICdSZWZlcmVuY2UgYW5kIHJlc3VsdCBpbWFnZXMgaGF2ZSBkaWZmZXJlbnQgZGltZW5z
aW9ucycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIHZhciBncmVlbiA9IFswLCAyNTUsIDAsIDI1NV07CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdmFyIGVycm9yQ29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHdpZHRoID0gcmVmZXJlbmNlLmdldFdpZHRoKCk7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gcmVmZXJlbmNlLmdl
dEhlaWdodCgpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFy
IGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtRmFpbGluZ1BpeGVscyA9IDA7CisKKyAg
ICAgICAgLy8gY2xlYXIgZXJyb3JtYXNrIGVkZ2VzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBiZSB0
cmFuc3BhcmVudAorCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1h
c2suZ2V0QWNjZXNzKCksIDAsIDAsIDAsIHdpZHRoLCAxLCAxKS5jbGVhcihncmVlbik7CisgICAg
ICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1hc2suZ2V0QWNjZXNzKCksIDAs
IGhlaWdodCAtIDEsIDAsIHdpZHRoLCAxLCAxKS5jbGVhcihncmVlbik7CisgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1hc2suZ2V0QWNjZXNzKCksIDAsIDAsIDAsIDEs
IGhlaWdodCwgMSkuY2xlYXIoZ3JlZW4pOworICAgICAgICB0Y3VUZXh0dXJlVXRpbC5nZXRTdWJy
ZWdpb24oZXJyb3JNYXNrLmdldEFjY2VzcygpLCB3aWR0aCAtIDEsIDAsIDAsIDEsIGhlaWdodCwg
MSkuY2xlYXIoZ3JlZW4pOworCisgICAgICAgIC8vIHNraXAgZWRnZSBwaXhlbHMgc2luY2UgY292
ZXJhZ2Ugb24gZWRnZSBjYW5ub3QgYmUgdmVyaWZpZWQKKworICAgICAgICBmb3IgKHZhciB5ID0g
MTsgeSA8IGhlaWdodCAtIDE7ICsreSkKKyAgICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB3aWR0
aCAtIDE7ICsreCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZQ
aXhlbCA9IHJlZmVyZW5jZS5nZXRQaXhlbFVpbnRSR0I4KHgsIHkpOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY3JlZW5QaXhlbCA9IHJlc3VsdC5nZXRQaXhlbFVpbnRS
R0I4KHgsIHkpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPa1Jl
ZmVyZW5jZVBpeGVsID0gZ2xzRHJhd1Rlc3RzLnBpeGVsTmVpZ2hib3Job29kQ29udGFpbnNDb2xv
cihyZXN1bHQsIHgsIHksIHJlZlBpeGVsLCBjb21wYXJlVGhyZXNob2xkKTsgLy8gc2NyZWVuIGlt
YWdlIGhhcyBhIG1hdGNoaW5nIHBpeGVsIG5lYXJieSAofj0gSWYgc29tZXRoaW5nIGlzIGRyYXdu
IG9uIHJlZmVyZW5jZSwgaXQgbXVzdCBiZSBkcmF3biB0byBzY3JlZW4gdG9vLikKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2tTY3JlZW5QaXhlbCA9IGdsc0RyYXdU
ZXN0cy5waXhlbE5laWdoYm9yaG9vZENvbnRhaW5zQ29sb3IocmVmZXJlbmNlLCB4LCB5LCBzY3Jl
ZW5QaXhlbCwgY29tcGFyZVRocmVzaG9sZCk7IC8vIHJlZmVyZW5jZSBpbWFnZSBoYXMgYSBtYXRj
aGluZyBwaXhlbCBuZWFyYnkgKH49IElmIHNvbWV0aGluZyBpcyBkcmF3biBvbiBzY3JlZW4sIGl0
IG11c3QgYmUgZHJhd24gdG8gcmVmZXJlbmNlIHRvby4pCisKKyAgICAgICAgICAgIGlmIChpc09r
U2NyZWVuUGl4ZWwgJiYgaXNPa1JlZmVyZW5jZVBpeGVsKSB7CisgICAgICAgICAgICAgICAgLy8g
cGl4ZWwgdmFsaWQsIHdyaXRlIGdyZWVuaXNoIHBpeGVscyB0byBtYWtlIHRoZSByZXN1bHQgaW1h
Z2UgZWFzaWVyIHRvIHJlYWQKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGdyYXlzY2FsZVZhbHVlID0gZ2xzRHJhd1Rlc3RzLmdldFZpc3VhbGl6YXRpb25HcmF5c2Nh
bGVDb2xvclVpbnRSR0I4KHNjcmVlblBpeGVsKTsKKyAgICAgICAgICAgICAgICBlcnJvck1hc2su
Z2V0QWNjZXNzKCkuc2V0UGl4ZWwoW2dyYXlzY2FsZVZhbHVlIC8gMjU1LCAxLCBncmF5c2NhbGVW
YWx1ZSAvIDI1NSwgMV0sIHgsIHkpOworICAgICAgICAgICAgfSBlbHNlIGlmICghZ2xzRHJhd1Rl
c3RzLnBpeGVsTmVhckVkZ2UoeCwgeSwgcmVmZXJlbmNlLCByZW5kZXJUYXJnZXRUaHJlc2hvbGQp
KSB7CisgICAgICAgICAgICAgICAgLy8gbm9uLWVkZ2UgcGl4ZWwgdmFsdWVzIG11c3QgYmUgd2l0
aGluIHRocmVzaG9sZCBvZiB0aGUgcmVmZXJlbmNlIHZhbHVlcworICAgICAgICAgICAgICAgIGVy
cm9yTWFzay5nZXRBY2Nlc3MoKS5zZXRQaXhlbChkZU1hdGguc2NhbGUoZXJyb3JDb2xvciwgMSAv
IDI1NSksIHgsIHkpOworICAgICAgICAgICAgICAgICsrbnVtRmFpbGluZ1BpeGVsczsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gd2UgYXJlIG9uL25lYXIgYW4gZWRn
ZSwgdmVyaWZ5IG9ubHkgY292ZXJhZ2UgKGNvdmVyYWdlID09IG5vdCBiYWNrZ3JvdW5kIGNvbG9y
ZWQpCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgcmVmZXJlbmNl
Q292ZXJhZ2UgPSByZWZQaXhlbCAhPSAweDAwMDAwMDsgLy8gTm90IGJsYWNrCisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgc2NyZWVuQ292ZXJhZ2UgPSBzY3JlZW5Q
aXhlbCAhPSAweDAwMDAwMDsgLy8gTm90IGJsYWNrCisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgaXNPa1JlZmVyZW5jZUNvdmVyYWdlID0gZ2xzRHJhd1Rlc3RzLnBp
eGVsTmVpZ2hib3Job29kQ29udGFpbnNDb3ZlcmFnZShyZXN1bHQsIHgsIHksIHJlZmVyZW5jZUNv
dmVyYWdlKTsgLy8gQ2hlY2sgcmVmZXJlbmNlIHBpeGVsIGFnYWluc3Qgc2NyZWVuIHBpeGVsCisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPa1NjcmVlbkNvdmVy
YWdlID0gZ2xzRHJhd1Rlc3RzLnBpeGVsTmVpZ2hib3Job29kQ29udGFpbnNDb3ZlcmFnZShyZWZl
cmVuY2UsIHgsIHksIHNjcmVlbkNvdmVyYWdlKTsgLy8gQ2hlY2sgc2NyZWVuIHBpeGVscyBhZ2Fp
bnN0IHJlZmVyZW5jZSBwaXhlbAorCisgICAgICAgICAgICAgICAgaWYgKGlzT2tTY3JlZW5Db3Zl
cmFnZSAmJiBpc09rUmVmZXJlbmNlQ292ZXJhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
cGl4ZWwgdmFsaWQsIHdyaXRlIGdyZWVuaXNoIHBpeGVscyB0byBtYWtlIHRoZSByZXN1bHQgaW1h
Z2UgZWFzaWVyIHRvIHJlYWQKKyAgICAgICAgICAgICAgICAgICAgdmFyIGdyYXlzY2FsZVZhbHVl
ID0gZ2xzRHJhd1Rlc3RzLmdldFZpc3VhbGl6YXRpb25HcmF5c2NhbGVDb2xvclVpbnRSR0I4KHNj
cmVlblBpeGVsKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNYXNrLmdldEFjY2VzcygpLnNl
dFBpeGVsKFtncmF5c2NhbGVWYWx1ZSAvIDI1NSwgMSwgZ3JheXNjYWxlVmFsdWUgLyAyNTUsIDFd
LCB4LCB5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAv
LyBjb3ZlcmFnZSBkb2VzIG5vdCBtYXRjaAorICAgICAgICAgICAgICAgICAgICBlcnJvck1hc2su
Z2V0QWNjZXNzKCkuc2V0UGl4ZWwoZGVNYXRoLnNjYWxlKGVycm9yQ29sb3IsIDEgLyAyNTUpLCB4
LCB5KTsKKyAgICAgICAgICAgICAgICAgICAgKytudW1GYWlsaW5nUGl4ZWxzOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKAorICAgICAgICAgICAgJ0NvbXBhcmluZyBpbWFnZXM6PC9icj4nICsKKyAgICAg
ICAgICAgICc8c3Bhbj4gPC9zcGFuPmFsbG93ZWQgZGV2aWF0aW9uIGluIHBpeGVsIHBvc2l0aW9u
cyA9IDE8L2JyPicgKworICAgICAgICAgICAgJzxzcGFuPiA8L3NwYW4+bnVtYmVyIG9mIGFsbG93
ZWQgaW52YWxpZCBwaXhlbHMgPSAnICsgbWF4QWxsb3dlZEludmFsaWRQaXhlbHMgKyAnPC9icj4n
ICsKKyAgICAgICAgICAgICc8c3Bhbj4gPC9zcGFuPm51bWJlciBvZiBpbnZhbGlkIHBpeGVscyA9
ICcgKyBudW1GYWlsaW5nUGl4ZWxzCisgICAgICAgICk7CisKKyAgICAgICAgaWYgKG51bUZhaWxp
bmdQaXhlbHMgPiBtYXhBbGxvd2VkSW52YWxpZFBpeGVscykgeworICAgICAgICAgICAgZGVidWco
J0ltYWdlIGNvbXBhcmlzb24gZmFpbGVkLiBDb2xvciB0aHJlc2hvbGQgPSAoJyArIGNvbXBhcmVU
aHJlc2hvbGRbMF0gKyAnLCAnICsgY29tcGFyZVRocmVzaG9sZFsxXSArICcsICcgKyBjb21wYXJl
VGhyZXNob2xkWzJdICsgJyknKTsKKyAgICAgICAgICAgIHRjdUltYWdlQ29tcGFyZS5kaXNwbGF5
SW1hZ2VzKHJlc3VsdC5nZXRBY2Nlc3MoKSwgcmVmZXJlbmNlLmdldEFjY2VzcygpLCBlcnJvck1h
c2suZ2V0QWNjZXNzKCkpOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2VTZXROYW1lCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGltYWdlU2V0RGVzYworICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNl
fSByZWZlcmVuY2UKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0Cisg
ICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb21wYXJlVGhyZXNob2xkCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IG1heEFsbG93ZWRJbnZhbGlkUGl4ZWxzCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBnbHNEcmF3VGVzdHMuaW50ZXJzZWN0aW9uUmVsYXhlZExpbmVJ
bWFnZUNvbXBhcmUgPSBmdW5jdGlvbihpbWFnZVNldE5hbWUsIGltYWdlU2V0RGVzYywgcmVmZXJl
bmNlLCByZXN1bHQsIGNvbXBhcmVUaHJlc2hvbGQsIG1heEFsbG93ZWRJbnZhbGlkUGl4ZWxzKSB7
CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocmVzdWx0LmdldFdpZHRoKCkgPT0gcmVmZXJlbmNl
LmdldFdpZHRoKCkgJiYgcmVzdWx0LmdldEhlaWdodCgpID09IHJlZmVyZW5jZS5nZXRIZWlnaHQo
KSwgJ1JlZmVyZW5jZSBhbmQgcmVzdWx0IGltYWdlcyBoYXZlIGRpZmZlcmVudCBkaW1lbnNpb25z
JywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGdyZWVuID0gWzAsIDI1NSwgMCwgMjU1XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSAqLyB2YXIgZXJyb3JDb2xvciA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgICAgIHZh
ciB3aWR0aCA9IHJlZmVyZW5jZS5nZXRXaWR0aCgpOworICAgICAgICB2YXIgaGVpZ2h0ID0gcmVm
ZXJlbmNlLmdldEhlaWdodCgpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFj
ZX0gKi8gdmFyIGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2Uod2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtRmFpbGluZ1BpeGVscyA9
IDA7CisKKyAgICAgICAgLy8gY2xlYXIgZXJyb3JtYXNrIGVkZ2VzIHdoaWNoIHdvdWxkIG90aGVy
d2lzZSBiZSB0cmFuc3BhcmVudAorCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lv
bihlcnJvck1hc2suZ2V0QWNjZXNzKCksIDAsIDAsIDAsIHdpZHRoLCAxLCAxKS5jbGVhcihncmVl
bik7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1hc2suZ2V0QWNj
ZXNzKCksIDAsIGhlaWdodCAtIDEsIDAsIHdpZHRoLCAxLCAxKS5jbGVhcihncmVlbik7CisgICAg
ICAgIHRjdVRleHR1cmVVdGlsLmdldFN1YnJlZ2lvbihlcnJvck1hc2suZ2V0QWNjZXNzKCksIDAs
IDAsIDAsIDEsIGhlaWdodCwgMSkuY2xlYXIoZ3JlZW4pOworICAgICAgICB0Y3VUZXh0dXJlVXRp
bC5nZXRTdWJyZWdpb24oZXJyb3JNYXNrLmdldEFjY2VzcygpLCB3aWR0aCAtIDEsIDAsIDAsIDEs
IGhlaWdodCwgMSkuY2xlYXIoZ3JlZW4pOworCisgICAgICAgIC8vIHNraXAgZWRnZSBwaXhlbHMg
c2luY2UgY292ZXJhZ2Ugb24gZWRnZSBjYW5ub3QgYmUgdmVyaWZpZWQKKworICAgICAgICBmb3Ig
KHZhciB5ID0gMTsgeSA8IGhlaWdodCAtIDE7ICsreSkKKyAgICAgICAgZm9yICh2YXIgeCA9IDE7
IHggPCB3aWR0aCAtIDE7ICsreCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciByZWZQaXhlbCA9IHJlZmVyZW5jZS5nZXRQaXhlbFVpbnRSR0I4KHgsIHkpOworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY3JlZW5QaXhlbCA9IHJlc3VsdC5nZXRQ
aXhlbFVpbnRSR0I4KHgsIHkpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNPa1NjcmVlblBpeGVsID0gZ2xzRHJhd1Rlc3RzLnBpeGVsTmVpZ2hib3Job29kQ29udGFp
bnNDb2xvcihyZWZlcmVuY2UsIHgsIHksIHNjcmVlblBpeGVsLCBjb21wYXJlVGhyZXNob2xkKTsg
Ly8gcmVmZXJlbmNlIGltYWdlIGhhcyBhIG1hdGNoaW5nIHBpeGVsIG5lYXJieSAofj0gSWYgc29t
ZXRoaW5nIGlzIGRyYXduIG9uIHNjcmVlbiwgaXQgbXVzdCBiZSBkcmF3biB0byByZWZlcmVuY2Ug
dG9vLikKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2tSZWZlcmVu
Y2VQaXhlbCA9IGdsc0RyYXdUZXN0cy5waXhlbE5laWdoYm9yaG9vZENvbnRhaW5zQ29sb3IocmVz
dWx0LCB4LCB5LCByZWZQaXhlbCwgY29tcGFyZVRocmVzaG9sZCk7IC8vIHNjcmVlbiBpbWFnZSBo
YXMgYSBtYXRjaGluZyBwaXhlbCBuZWFyYnkgKH49IElmIHNvbWV0aGluZyBpcyBkcmF3biBvbiBy
ZWZlcmVuY2UsIGl0IG11c3QgYmUgZHJhd24gdG8gc2NyZWVuIHRvby4pCisKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZ3JheXNjYWxlVmFsdWU7CisKKyAgICAgICAgICAg
IGlmIChpc09rU2NyZWVuUGl4ZWwgJiYgaXNPa1JlZmVyZW5jZVBpeGVsKSB7CisgICAgICAgICAg
ICAgICAgLy8gcGl4ZWwgdmFsaWQsIHdyaXRlIGdyZWVuaXNoIHBpeGVscyB0byBtYWtlIHRoZSBy
ZXN1bHQgaW1hZ2UgZWFzaWVyIHRvIHJlYWQKKyAgICAgICAgICAgICAgICBncmF5c2NhbGVWYWx1
ZSA9IGdsc0RyYXdUZXN0cy5nZXRWaXN1YWxpemF0aW9uR3JheXNjYWxlQ29sb3JVaW50UkdCOChz
Y3JlZW5QaXhlbCk7CisgICAgICAgICAgICAgICAgZXJyb3JNYXNrLmdldEFjY2VzcygpLnNldFBp
eGVsKFtncmF5c2NhbGVWYWx1ZSAvIDI1NSwgMSwgZ3JheXNjYWxlVmFsdWUgLyAyNTUsIDFdLCB4
LCB5KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdsc0RyYXdUZXN0cy5waXhlbE5lYXJMaW5l
SW50ZXJzZWN0aW9uKHgsIHksIHJlZmVyZW5jZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICFn
bHNEcmF3VGVzdHMucGl4ZWxOZWFyTGluZUludGVyc2VjdGlvbih4LCB5LCByZXN1bHQpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gbm9uLWludGVyc2VjdGlvbiBwaXhlbCB2YWx1ZXMgbXVzdCBiZSB3
aXRoaW4gdGhyZXNob2xkIG9mIHRoZSByZWZlcmVuY2UgdmFsdWVzCisgICAgICAgICAgICAgICAg
ZXJyb3JNYXNrLmdldEFjY2VzcygpLnNldFBpeGVsKGRlTWF0aC5zY2FsZShlcnJvckNvbG9yLCAx
IC8gMjU1KSwgeCwgeSk7CisgICAgICAgICAgICAgICAgKytudW1GYWlsaW5nUGl4ZWxzOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBwaXhlbCBpcyBuZWFyIGEgbGlu
ZSBpbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgb24vbmVhciBhbiBlZGdl
LCB2ZXJpZnkgb25seSBjb3ZlcmFnZSAoY292ZXJhZ2UgPT0gbm90IGJhY2tncm91bmQgY29sb3Jl
ZCkKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciByZWZlcmVuY2VD
b3ZlcmFnZSA9IHJlZlBpeGVsICE9IDB4MDAwMDAwOyAvLyBOb3QgQmxhY2sKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzY3JlZW5Db3ZlcmFnZSA9IHNjcmVlblBp
eGVsICE9IDB4MDAwMDAwOyAvLyBOb3QgQmxhY2sKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovIHZhciBpc09rU2NyZWVuQ292ZXJhZ2UgPSBnbHNEcmF3VGVzdHMucGl4ZWxO
ZWlnaGJvcmhvb2RDb250YWluc0NvdmVyYWdlKHJlZmVyZW5jZSwgeCwgeSwgc2NyZWVuQ292ZXJh
Z2UpOyAvLyBDaGVjayBzY3JlZW4gcGl4ZWxzIGFnYWluc3QgcmVmZXJlbmNlIHBpeGVsCisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPa1JlZmVyZW5jZUNvdmVy
YWdlID0gZ2xzRHJhd1Rlc3RzLnBpeGVsTmVpZ2hib3Job29kQ29udGFpbnNDb3ZlcmFnZShyZXN1
bHQsIHgsIHksIHJlZmVyZW5jZUNvdmVyYWdlKTsgLy8gQ2hlY2sgcmVmZXJlbmNlIHBpeGVsIGFn
YWluc3Qgc2NyZWVuIHBpeGVsCisKKyAgICAgICAgICAgICAgICBpZiAoaXNPa1NjcmVlbkNvdmVy
YWdlICYmIGlzT2tSZWZlcmVuY2VDb3ZlcmFnZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBw
aXhlbCB2YWxpZCwgd3JpdGUgZ3JlZW5pc2ggcGl4ZWxzIHRvIG1ha2UgdGhlIHJlc3VsdCBpbWFn
ZSBlYXNpZXIgdG8gcmVhZAorICAgICAgICAgICAgICAgICAgICBncmF5c2NhbGVWYWx1ZSA9IGds
c0RyYXdUZXN0cy5nZXRWaXN1YWxpemF0aW9uR3JheXNjYWxlQ29sb3JVaW50UkdCOChzY3JlZW5Q
aXhlbCk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWFzay5nZXRBY2Nlc3MoKS5zZXRQaXhl
bChbZ3JheXNjYWxlVmFsdWUgLyAyNTUsIDEsIGdyYXlzY2FsZVZhbHVlIC8gMjU1LCAxXSwgeCwg
eSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY292
ZXJhZ2UgZG9lcyBub3QgbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNYXNrLmdldEFj
Y2VzcygpLnNldFBpeGVsKGRlTWF0aC5zY2FsZShlcnJvckNvbG9yLCAxIC8gMjU1KSwgeCwgeSk7
CisgICAgICAgICAgICAgICAgICAgICsrbnVtRmFpbGluZ1BpeGVsczsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgKKyAgICAgICAgICAgICdDb21wYXJpbmcgaW1hZ2VzOjwvYnI+JyArCisgICAgICAgICAg
ICAnPHNwYW4+IDwvc3Bhbj5hbGxvd2VkIGRldmlhdGlvbiBpbiBwaXhlbCBwb3NpdGlvbnMgPSAx
PC9icj4nICsKKyAgICAgICAgICAgICc8c3Bhbj4gPC9zcGFuPm51bWJlciBvZiBhbGxvd2VkIGlu
dmFsaWQgcGl4ZWxzID0gJyArIG1heEFsbG93ZWRJbnZhbGlkUGl4ZWxzICsgJzwvYnI+JyArCisg
ICAgICAgICAgICAnPHNwYW4+IDwvc3Bhbj5udW1iZXIgb2YgaW52YWxpZCBwaXhlbHMgPSAnICsg
bnVtRmFpbGluZ1BpeGVscworICAgICAgICApOworCisgICAgICAgIGlmIChudW1GYWlsaW5nUGl4
ZWxzID4gbWF4QWxsb3dlZEludmFsaWRQaXhlbHMpIHsKKyAgICAgICAgICAgIGRlYnVnKCdJbWFn
ZSBjb21wYXJpc29uIGZhaWxlZC4gQ29sb3IgdGhyZXNob2xkID0gKCcgKyBjb21wYXJlVGhyZXNo
b2xkWzBdICsgJywgJyArIGNvbXBhcmVUaHJlc2hvbGRbMV0gKyAnLCAnICsgY29tcGFyZVRocmVz
aG9sZFsyXSArICcpJyk7CisgICAgICAgICAgICB0Y3VJbWFnZUNvbXBhcmUuZGlzcGxheUltYWdl
cyhyZXN1bHQuZ2V0QWNjZXNzKCksIHJlZmVyZW5jZS5nZXRBY2Nlc3MoKSwgZXJyb3JNYXNrLmdl
dEFjY2VzcygpKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHs/Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5QcmltaXRpdmV9IHBy
aW1pdGl2ZVR5cGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc0Ry
YXdUZXN0cy5EcmF3VGVzdC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKHByaW1pdGl2ZVR5
cGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZhY2V9ICovIHZhciByZWYg
PSB0aGlzLm1fcnJBcnJheVBhY2suZ2V0U3VyZmFjZSgpOworICAgICAgICAvKiogQHR5cGUge3Rj
dVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHNjcmVlbiA9IHRoaXMubV9nbEFycmF5UGFjay5nZXRT
dXJmYWNlKCk7CisKKyAgICAgICAgaWYgKC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFy
YW1ldGVyKGdsLlNBTVBMRVMpKSA+IDEpIHsKKyAgICAgICAgICAgIC8vIFx0b2RvIFttaWthXSBJ
bXByb3ZlIGNvbXBhcmUgd2hlbiB1c2luZyBtdWx0aXNhbXBsaW5nCisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnV2FybmluZzogQ29tcGFyaXNpb24gb2YgcmVzdWx0IGZyb20gbXVs
dGlzYW1wbGUgcmVuZGVyIHRhcmdldHMgYXJlIG5vdCBhcyBzdHJpY3QgYXMgd2l0aG91dCBtdWx0
aXNhbXBsaW5nLiBNaWdodCBwcm9kdWNlIGZhbHNlIHBvc2l0aXZlcyEnKTsKKyAgICAgICAgICAg
IHJldHVybiB0Y3VJbWFnZUNvbXBhcmUuZnV6enlDb21wYXJlKCdDb21wYXJlIFJlc3VsdHMnLCAn
Q29tcGFyZSBSZXN1bHRzJywgcmVmLmdldEFjY2VzcygpLCBzY3JlZW4uZ2V0QWNjZXNzKCksIDAu
MywgdGN1SW1hZ2VDb21wYXJlLkNvbXBhcmVMb2dNb2RlLlJFU1VMVCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvKiogQHR5cGUge2dsc0RyYXdUZXN0cy5QcmltaXRpdmVDbGFzc30g
Ki8gdmFyIHByaW1pdGl2ZUNsYXNzID0gZ2xzRHJhd1Rlc3RzLmdldERyYXdQcmltaXRpdmVDbGFz
cyhwcmltaXRpdmVUeXBlKTsKKworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVDbGFzcykg
eworICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rlc3RzLlByaW1pdGl2ZUNsYXNzLlBPSU5U
OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIFBvaW50IGFyZSBleHRyZW1lbHkgdW5saWtlbHkg
dG8gaGF2ZSBvdmVybGFwcGluZyByZWdpb25zLCBkb24ndCBhbGxvdyBhbnkgbm8gZXh0cmEgLyBt
aXNzaW5nIHBpeGVscworICAgICAgICAgICAgICAgICAgICAvKipAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbWF4QWxsb3dlZEludmFsaWRQaXhlbHNXaXRoUG9pbnRzID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRjdUltYWdlQ29tcGFyZS5pbnRUaHJlc2hvbGRQb3NpdGlvbkRldmlhdGlv
bkVycm9yVGhyZXNob2xkQ29tcGFyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICdDb21wYXJl
UmVzdWx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgb2YgcmVuZGVyaW5nJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5nZXRBY2Nlc3MoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNjcmVlbi5nZXRBY2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFt0
aGlzLm1fbWF4RGlmZlJlZCwgdGhpcy5tX21heERpZmZHcmVlbiwgdGhpcy5tX21heERpZmZCbHVl
LCAyNTZdLAorICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDEsIDBdLCAvLyE8IDN4MyBzZWFy
Y2gga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAvLyE8IHJlbGF4IGNvbXBh
cmlzb24gb24gdGhlIGltYWdlIGJvdW5kYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhB
bGxvd2VkSW52YWxpZFBpeGVsc1dpdGhQb2ludHMgLy8hPCBlcnJvciB0aHJlc2hvbGQKKyAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBj
YXNlIGdsc0RyYXdUZXN0cy5QcmltaXRpdmVDbGFzcy5MSU5FOiB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIExpbmVzIGNhbiBwb3RlbnRpYWxseSBoYXZlIGEgbGFyZ2UgbnVtYmVyIG9mIG92ZXJs
YXBwaW5nIHBpeGVscy4gUGl4ZWwgY29tcGFyaXNvbiBtYXkgcG90ZW50aWFsbHkgcHJvZHVjZQor
ICAgICAgICAgICAgICAgICAgICAvLyBmYWxzZSBuZWdhdGl2ZXMgaW4gc3VjaCBwaXhlbHMgaWYg
Zm9yIGV4YW1wbGUgdGhlIHBpeGVsIGluIHF1ZXN0aW9uIGlzIG92ZXJkcmF3biBieSBhbm90aGVy
IGxpbmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZSBpbWFnZSBidXQg
bm90IGluIHRoZSByZXN1bHRpbiBpbWFnZS4gUmVsYXggY29tcGFyaXNvbiBuZWFyIGxpbmUgaW50
ZXJzZWN0aW9uIHBvaW50cyAoYXJlYXMpIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBjb21w
YXJlIG9ubHkgY292ZXJhZ2UsIG5vdCBjb2xvciwgaW4gc3VjaCBwaXhlbHMKKyAgICAgICAgICAg
ICAgICAgICAgLyoqQHR5cGUge251bWJlcn0gKi8gdmFyIG1heEFsbG93ZWRJbnZhbGlkUGl4ZWxz
V2l0aExpbmVzID0gMTU7IC8vIGxpbmUgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIGZldyBiYWQgcGl4
ZWxzCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHNEcmF3VGVzdHMuaW50ZXJzZWN0aW9u
UmVsYXhlZExpbmVJbWFnZUNvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICAnQ29tcGFy
ZVJlc3VsdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVzdWx0IG9mIHJlbmRlcmluZycs
CisgICAgICAgICAgICAgICAgICAgICAgICByZWYsCisgICAgICAgICAgICAgICAgICAgICAgICBz
Y3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy5tX21heERpZmZSZWQsIHRoaXMu
bV9tYXhEaWZmR3JlZW4sIHRoaXMubV9tYXhEaWZmQmx1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhBbGxvd2VkSW52YWxpZFBpeGVsc1dpdGhMaW5lcworICAgICAgICAgICAgICAgICAg
ICApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgZ2xzRHJhd1Rl
c3RzLlByaW1pdGl2ZUNsYXNzLlRSSUFOR0xFOiB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRy
aWFuZ2xlcyBhcmUgbGlrZWx5IHRvIHBhcnRpYWxseSBvciBmdWxseSBvdmVybGFwLiBQaXhlbCBk
aWZmZXJlbmNlIGNvbXBhcmlzb24gaXMgZnJhZ2lsZSBpbiBwaXhlbHMKKyAgICAgICAgICAgICAg
ICAgICAgLy8gd2hlcmUgdGhlcmUgY291bGQgYmUgcG90ZW50aWFsIG92ZXJsYXBwaW5nIHNpbmNl
IHRoZSBwaXhlbHMgbWlnaHQgYmUgY292ZXJlZCBieSBvbmUgdHJpYW5nbGUgaW4gdGhlCisgICAg
ICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZSBpbWFnZSBhbmQgYnkgdGhlIG90aGVyIGluIHRo
ZSByZXN1bHQgaW1hZ2UuIFJlbGF4IGNvbXBhcnNpb24gbmVhciBwcmltaXRpdmUgZWRnZXMgYW5k
CisgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBhcmUgb25seSBjb3ZlcmFnZSwgbm90IGNvbG9y
LCBpbiBzdWNoIHBpeGVscy4KKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBtYXhBbGxvd2VkSW52YWxpZFBpeGVsc1dpdGhUcmlhbmdsZXMgPSAxMDsKKworICAg
ICAgICAgICAgICAgICAgICAvKiBUT0RPOiBJbXBsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHJlbmRlclRhcmdldFRocmVzaG9sZCA9IC8vVE9ETzogZ2V0IGNvbG9yIHRocmVzaG9sZCBm
cm9tIHRoZSBwaXhlbCBmb3JtYXQgLS0+IG1fcmVuZGVyQ3R4LmdldFJlbmRlclRhcmdldCgpLmdl
dFBpeGVsRm9ybWF0KCkuZ2V0Q29sb3JUaHJlc2hvbGQoKS50b0lWZWMoKS54eXooKTsKKyAgICAg
ICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovIHZhciByZW5kZXJUYXJnZXRUaHJlc2hvbGQgPSBbMywgMywgMywgM107CisK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsc0RyYXdUZXN0cy5lZGdlUmVsYXhlZEltYWdl
Q29tcGFyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICdDb21wYXJlUmVzdWx0JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdSZXN1bHQgb2YgcmVuZGVyaW5nJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFt0aGlzLm1fbWF4RGlmZlJlZCwgdGhpcy5tX21heERpZmZHcmVlbiwg
dGhpcy5tX21heERpZmZCbHVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdl
dFRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heEFsbG93ZWRJbnZhbGlkUGl4
ZWxzV2l0aFRyaWFuZ2xlcworICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgY2xhc3MnKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc0RyYXdUZXN0cy5E
cmF3VGVzdFNwZWN9IHNwZWMKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0LnByb3RvdHlwZS5nZXRDb29yZFNjYWxlID0gZnVuY3Rpb24o
c3BlYykgeworICAgICAgICB2YXIgbWF4VmFsdWUgPSAxLjA7CisKKyAgICAgICAgZm9yICh2YXIg
YXJyYXlOZHggPSAwOyBhcnJheU5keCA8IHNwZWMuYXR0cmlicy5sZW5ndGg7IGFycmF5TmR4Kysp
IHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5BdHRy
aWJ1dGVTcGVjfSAqLyB2YXIgYXR0cmliU3BlYyA9IHNwZWMuYXR0cmlic1thcnJheU5keF07Cisg
ICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1Bvc2l0aW9uQXR0ciA9IChh
cnJheU5keCA9PSAwKSB8fCAoYXR0cmliU3BlYy5hZGRpdGlvbmFsUG9zaXRpb25BdHRyaWJ1dGUp
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhdHRyTWF4VmFsdWUgPSAw
OworCisgICAgICAgICAgICBpZiAoIWlzUG9zaXRpb25BdHRyKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAoYXR0cmliU3BlYy5pbnB1dFR5cGUgPT0gZ2xzRHJh
d1Rlc3RzLkRyYXdUZXN0U3BlYy5JbnB1dFR5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTApIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXR0cmliU3BlYy5ub3JtYWxpemUpCisgICAgICAgICAgICAg
ICAgICAgIGF0dHJNYXhWYWx1ZSArPSAxLjA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBhdHRyTWF4VmFsdWUgKz0gMTAyNC4wOworICAgICAgICAgICAgfSBlbHNl
IGlmIChhdHRyaWJTcGVjLmlucHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklu
cHV0VHlwZS5JTlRfMl8xMF8xMF8xMCkgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJTcGVj
Lm5vcm1hbGl6ZSkKKyAgICAgICAgICAgICAgICAgICAgYXR0ck1heFZhbHVlICs9IDEuMDsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGF0dHJNYXhWYWx1ZSArPSA1
MTIuMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1heCA9IGds
c0RyYXdUZXN0cy5HTFZhbHVlLmdldE1heFZhbHVlKGF0dHJpYlNwZWMuaW5wdXRUeXBlKS5nZXRW
YWx1ZSgpOworCisgICAgICAgICAgICAgICAgYXR0ck1heFZhbHVlICs9IChhdHRyaWJTcGVjLm5v
cm1hbGl6ZSAmJiAhZ2xzRHJhd1Rlc3RzLmlucHV0VHlwZUlzRmxvYXRUeXBlKGF0dHJpYlNwZWMu
aW5wdXRUeXBlKSkgPyAoMS4wKSA6IChtYXggKiAxLjEpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoYXR0cmliU3BlYy5vdXRwdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuT3V0cHV0VHlwZS5WRUMzIHx8IGF0dHJpYlNwZWMub3V0cHV0VHlwZSA9PSBnbHNEcmF3
VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVkVDNCB8fAorICAgICAgICAgICAgICAgIGF0
dHJpYlNwZWMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5
cGUuSVZFQzMgfHwgYXR0cmliU3BlYy5vdXRwdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVz
dFNwZWMuT3V0cHV0VHlwZS5JVkVDNCB8fAorICAgICAgICAgICAgICAgIGF0dHJpYlNwZWMub3V0
cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuVVZFQzMgfHwg
YXR0cmliU3BlYy5vdXRwdXRUeXBlID09IGdsc0RyYXdUZXN0cy5EcmF3VGVzdFNwZWMuT3V0cHV0
VHlwZS5VVkVDNCkKKyAgICAgICAgICAgICAgICAgICAgYXR0ck1heFZhbHVlICo9IDI7CisKKyAg
ICAgICAgICAgIG1heFZhbHVlICs9IGF0dHJNYXhWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiAxLjAgLyBtYXhWYWx1ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjfSBzcGVjCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGdsc0RyYXdUZXN0cy5EcmF3VGVzdC5wcm90b3R5cGUuZ2V0Q29sb3JT
Y2FsZSA9IGZ1bmN0aW9uKHNwZWMpIHsKKyAgICAgICAgdmFyIGNvbG9yU2NhbGUgPSAxLjA7CisK
KyAgICAgICAgZm9yICh2YXIgYXJyYXlOZHggPSAxOyBhcnJheU5keCA8IHNwZWMuYXR0cmlicy5s
ZW5ndGg7IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzRHJhd1Rlc3Rz
LkRyYXdUZXN0U3BlYy5BdHRyaWJ1dGVTcGVjfSAqLyB2YXIgYXR0cmliU3BlYyA9IHNwZWMuYXR0
cmlic1thcnJheU5keF07CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
c1Bvc2l0aW9uQXR0ciA9IChhcnJheU5keCA9PSAwKSB8fCAoYXR0cmliU3BlYy5hZGRpdGlvbmFs
UG9zaXRpb25BdHRyaWJ1dGUpOworCisgICAgICAgICAgICBpZiAoaXNQb3NpdGlvbkF0dHIpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChhdHRyaWJTcGVjLmlu
cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVjLklucHV0VHlwZS5VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMCkgeworICAgICAgICAgICAgICAgIGlmICghYXR0cmliU3BlYy5ub3JtYWxp
emUpCisgICAgICAgICAgICAgICAgICAgIGNvbG9yU2NhbGUgKj0gMS4wIC8gMTAyNC4wOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJTcGVjLmlucHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMCkgeworICAgICAgICAgICAgICAg
IGlmICghYXR0cmliU3BlYy5ub3JtYWxpemUpCisgICAgICAgICAgICAgICAgICAgIGNvbG9yU2Nh
bGUgKj0gMS4wIC8gNTEyLjA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHZhciBtYXggPSBnbHNEcmF3VGVzdHMuR0xWYWx1ZS5nZXRNYXhWYWx1ZShhdHRyaWJTcGVjLmlu
cHV0VHlwZSkudG9GbG9hdCgpOworCisgICAgICAgICAgICAgICAgY29sb3JTY2FsZSAqPSAoYXR0
cmliU3BlYy5ub3JtYWxpemUgJiYgIWdsc0RyYXdUZXN0cy5pbnB1dFR5cGVJc0Zsb2F0VHlwZShh
dHRyaWJTcGVjLmlucHV0VHlwZSkgPyAxLjAgOiAoMS4wIC8gbWF4KSk7CisgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYlNwZWMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMuRHJhd1Rlc3RTcGVj
Lk91dHB1dFR5cGUuVkVDNCB8fAorICAgICAgICAgICAgICAgICAgICBhdHRyaWJTcGVjLm91dHB1
dFR5cGUgPT0gZ2xzRHJhd1Rlc3RzLkRyYXdUZXN0U3BlYy5PdXRwdXRUeXBlLlVWRUM0IHx8Cisg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYlNwZWMub3V0cHV0VHlwZSA9PSBnbHNEcmF3VGVzdHMu
RHJhd1Rlc3RTcGVjLk91dHB1dFR5cGUuSVZFQzQpCisgICAgICAgICAgICAgICAgICAgIGNvbG9y
U2NhbGUgKj0gKGF0dHJpYlNwZWMubm9ybWFsaXplICYmICFnbHNEcmF3VGVzdHMuaW5wdXRUeXBl
SXNGbG9hdFR5cGUoYXR0cmliU3BlYy5pbnB1dFR5cGUpID8gMS4wIDogMS4wIC8gbWF4KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb2xvclNjYWxlOworICAg
IH07Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuanMg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVs
ZXMvc2hhcmVkL2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZjU5YzIw
OTI4NGM2N2YzMzQ2YTk2YWQ3NDZkMGVmNjUxZDE0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hh
cmVkL2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmpzCkBAIC0wLDAgKzEsOTYxIEBACisndXNlIHN0
cmljdCc7Citnb29nLnByb3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVPYmplY3RXcmFwcGVyJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U3RyVXRpbCcpOworZ29vZy5yZXF1aXJlKCdtb2R1
bGVzLnNoYXJlZC5nbHNGYm9VdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKKyAg
ICB2YXIgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMgPSBtb2R1bGVzLnNoYXJlZC5nbHNGYm9Db21w
bGV0ZW5lc3NUZXN0czsKKyAgICB2YXIgZ2xzRmJvVXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc0Zi
b1V0aWw7CisgICAgdmFyIGdsdU9iamVjdFdyYXBwZXIgPSBmcmFtZXdvcmsub3BlbmdsLmdsdU9i
amVjdFdyYXBwZXI7CisgICAgdmFyIGdsdVN0clV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVN0
clV0aWw7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2Fz
ZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wK
KyAgICAgKi8KKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5pbml0R2xEZXBlbmRlbnRzID0g
ZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJv
dyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2wgb2JqZWN0Jyk7CisKKyAgICAgICAgLy8gVGhlIGZvbGxv
d2luZyBleHRlbnNpb25zIGFyZSBhcHBsaWNhYmxlIGJvdGggdG8gRVMyIGFuZCBFUzMuCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBPRVNfZGVwdGhfdGV4dHVyZQorICAgICAgICAgKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzLnNfb2VzRGVwdGhUZXh0dXJlRm9ybWF0cyA9IFsKKyAgICAgICAgICAgIGdsc0Zib1V0aWwu
Zm9ybWF0a2V5KGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQpLAorICAgICAg
ICAgICAgZ2xzRmJvVXRpbC5mb3JtYXRrZXkoZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05F
RF9JTlQpCisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE9FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbAorICAgICAgICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0KKyAgICAgICAg
ICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfb2VzUGFja2VkRGVwdGhTdGVu
Y2lsU2l6ZWRGb3JtYXRzID0gWworICAgICAgICAgICAgZ2wuREVQVEgyNF9TVEVOQ0lMOAorICAg
ICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBzX29lc1BhY2tlZERlcHRoU3RlbmNp
bFRleEZvcm1hdHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAq
LworICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1BhY2tlZERlcHRoU3RlbmNp
bFRleEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtleShnbC5ERVBU
SF9TVEVOQ0lMLCBnbC5VTlNJR05FRF9JTlRfMjRfOCkKKyAgICAgICAgXTsKKworICAgICAgICAv
KioKKyAgICAgICAgICogT0VTX3JlcXVpcmVkX2ludGVybmFsZm9ybWF0CisgICAgICAgICAqIEB0
eXBlIHtBcnJheTxudW1iZXI+fQorICAgICAgICAgKi8KKyAgICAgICAgZ2xzRmJvQ29tcGxldGVu
ZXNzVGVzdHMuc19vZXNSZXF1aXJlZEludGVybmFsRm9ybWF0Q29sb3JGb3JtYXRzID0gWworICAg
ICAgICAgICAgLy8gU2FtZSBhcyBFUzIgUkJPIGZvcm1hdHMsIHBsdXMgUkdCQTggKGV2ZW4gd2l0
aG91dCBPRVNfcmdiOF9yZ2JhOCkKKyAgICAgICAgICAgIGdsLlJHQjVfQTEsIGdsLlJHQkE4LCBn
bC5SR0JBNCwgZ2wuUkdCNTY1CisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAq
IHNfb2VzUmVxdWlyZWRJbnRlcm5hbEZvcm1hdERlcHRoRm9ybWF0cworICAgICAgICAgKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVz
c1Rlc3RzLnNfb2VzUmVxdWlyZWRJbnRlcm5hbEZvcm1hdERlcHRoRm9ybWF0cyA9IFsKKyAgICAg
ICAgICAgIGdsLkRFUFRIX0NPTVBPTkVOVDE2CisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisg
ICAgICAgICAqIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdAorICAgICAgICAgKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzLnNfZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXRGb3JtYXRzID0gWworICAgICAgICAgICAgZ2wu
UkdCQTE2RiwgZ2wuUkdCMTZGLCBnbC5SRzE2RiwgZ2wuUjE2RgorICAgICAgICBdOworCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBzX29lc0RlcHRoMjRTaXplZEZvcm1hdHMKKyAgICAgICAgICog
QHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBnbHNGYm9Db21wbGV0
ZW5lc3NUZXN0cy5zX29lc0RlcHRoMjRTaXplZEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbC5E
RVBUSF9DT01QT05FTlQyNAorICAgICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBz
X29lc0RlcHRoMzJTaXplZEZvcm1hdHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59
CisgICAgICAgICAqLworICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc0RlcHRo
MzJTaXplZEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbFsnREVQVEhfQ09NUE9ORU5UMzInXQor
ICAgICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBzX29lc1JnYjhSZ2JhOFJib0Zv
cm1hdHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAg
ICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1JnYjhSZ2JhOFJib0Zvcm1hdHMgPSBb
CisgICAgICAgICAgICBnbC5SR0I4LCBnbC5SR0JBOAorICAgICAgICBdOworCisgICAgICAgIC8q
KgorICAgICAgICAgKiBzX29lc1JlcXVpcmVkSW50ZXJuYWxGb3JtYXRSZ2I4Q29sb3JGb3JtYXQK
KyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBn
bHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1JlcXVpcmVkSW50ZXJuYWxGb3JtYXRSZ2I4Q29s
b3JGb3JtYXQgPSBbCisgICAgICAgICAgICBnbC5SR0I4CisgICAgICAgIF07CisKKyAgICAgICAg
LyoqCisgICAgICAgICAqIHNfZXh0VGV4dHVyZVR5cGUyMTAxMDEwUmV2Rm9ybWF0cworICAgICAg
ICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0Nv
bXBsZXRlbmVzc1Rlc3RzLnNfZXh0VGV4dHVyZVR5cGUyMTAxMDEwUmV2Rm9ybWF0cyA9IFsKKyAg
ICAgICAgICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsLlJHQkEsIGdsLlVOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFViksCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtleShnbC5SR0Is
IGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVikKKyAgICAgICAgXTsKKworICAgICAgICAv
KioKKyAgICAgICAgICogc19vZXNSZXF1aXJlZEludGVybmFsRm9ybWF0MTBiaXRDb2xvckZvcm1h
dHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAg
ICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1JlcXVpcmVkSW50ZXJuYWxGb3JtYXQxMGJp
dENvbG9yRm9ybWF0cyA9IFsKKyAgICAgICAgICAgIGdsLlJHQjEwX0EyLCBnbFsnUkdCMTAnXQor
ICAgICAgICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBzX2V4dFRleHR1cmVSZ1Jib0Zv
cm1hdHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAg
ICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX2V4dFRleHR1cmVSZ1Jib0Zvcm1hdHMgPSBb
CisgICAgICAgICAgICBnbC5SOCwgZ2wuUkc4CisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisg
ICAgICAgICAqIHNfZXh0VGV4dHVyZVJnVGV4Rm9ybWF0cworICAgICAgICAgKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3Rz
LnNfZXh0VGV4dHVyZVJnVGV4Rm9ybWF0cyA9IFsKKyAgICAgICAgICAgIGdsc0Zib1V0aWwuZm9y
bWF0a2V5KGdsLlJFRCwgZ2wuVU5TSUdORURfQllURSksCisgICAgICAgICAgICBnbHNGYm9VdGls
LmZvcm1hdGtleShnbC5SRywgZ2wuVU5TSUdORURfQllURSkKKyAgICAgICAgXTsKKworICAgICAg
ICAvKioKKyAgICAgICAgICogc19leHRUZXh0dXJlUmdGbG9hdFRleEZvcm1hdHMKKyAgICAgICAg
ICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBnbHNGYm9Db21w
bGV0ZW5lc3NUZXN0cy5zX2V4dFRleHR1cmVSZ0Zsb2F0VGV4Rm9ybWF0cyA9IFsKKyAgICAgICAg
ICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsLlJFRCwgZ2wuRkxPQVQpLAorICAgICAgICAgICAg
Z2xzRmJvVXRpbC5mb3JtYXRrZXkoZ2wuUkcsIGdsLkZMT0FUKQorICAgICAgICBdOworCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBzX2V4dFRleHR1cmVSZ0hhbGZGbG9hdFRleEZvcm1hdHMKKyAg
ICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBnbHNG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5zX2V4dFRleHR1cmVSZ0hhbGZGbG9hdFRleEZvcm1hdHMgPSBb
CisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtleShnbC5SRUQsIGdsWydIQUxGX0ZMT0FU
X09FUyddKSwKKyAgICAgICAgICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsLlJHLCBnbFsnSEFM
Rl9GTE9BVF9PRVMnXSkKKyAgICAgICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICogc19u
dlBhY2tlZEZsb2F0UmJvRm9ybWF0cworICAgICAgICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0K
KyAgICAgICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfbnZQYWNrZWRG
bG9hdFJib0Zvcm1hdHMgPSBbCisgICAgICAgICAgICBnbC5SMTFGX0cxMUZfQjEwRgorICAgICAg
ICBdOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBzX252UGFja2VkRmxvYXRUZXhGb3JtYXRz
CisgICAgICAgICAqIEB0eXBlIHtBcnJheTxudW1iZXI+fQorICAgICAgICAgKi8KKyAgICAgICAg
Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19udlBhY2tlZEZsb2F0VGV4Rm9ybWF0cyA9IFsKKyAg
ICAgICAgICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsLlJHQiwgZ2wuVU5TSUdORURfSU5UXzEw
Rl8xMUZfMTFGX1JFVikKKyAgICAgICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICogc19l
eHRTcmdiUmJvRm9ybWF0cworICAgICAgICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0KKyAgICAg
ICAgICovCisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0U3JnYlJib0Zvcm1h
dHMgPSBbCisgICAgICAgICAgICBnbC5TUkdCOF9BTFBIQTgKKyAgICAgICAgXTsKKworICAgICAg
ICAvKioKKyAgICAgICAgICogc19leHRTcmdiUmVuZGVyYWJsZVRleEZvcm1hdHMKKyAgICAgICAg
ICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBnbHNGYm9Db21w
bGV0ZW5lc3NUZXN0cy5zX2V4dFNyZ2JSZW5kZXJhYmxlVGV4Rm9ybWF0cyA9IFsKKyAgICAgICAg
ICAgIGdsc0Zib1V0aWwuZm9ybWF0a2V5KGdsWydTUkdCX0FMUEhBJ10sIGdsLlVOU0lHTkVEX0JZ
VEUpCisgICAgICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIHNfZXh0U3JnYk5vblJl
bmRlcmFibGVUZXhGb3JtYXRzCisgICAgICAgICAqIEB0eXBlIHtBcnJheTxudW1iZXI+fQorICAg
ICAgICAgKi8KKyAgICAgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19leHRTcmdiTm9uUmVu
ZGVyYWJsZVRleEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtleShn
bC5TUkdCLCBnbC5VTlNJR05FRF9CWVRFKSwKKyAgICAgICAgICAgIGdsLlNSR0I4CisgICAgICAg
IF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIHNfbnZTcmdiRm9ybWF0c1Jib0Zvcm1hdHMK
KyAgICAgICAgICogQHR5cGUge0FycmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBn
bHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX252U3JnYkZvcm1hdHNSYm9Gb3JtYXRzID0gWworICAg
ICAgICAgICAgZ2wuU1JHQjgKKyAgICAgICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICog
c19udlNyZ2JGb3JtYXRzVGV4dHVyZUZvcm1hdHMKKyAgICAgICAgICogVGhlIGV4dGVuc2lvbiBk
b2VzIG5vdCBhY3R1YWxseSByZXF1aXJlIGFueSB1bnNpemVkIGZvcm1hdAorICAgICAgICAgKiB0
byBiZSByZW5kZXJhYmxlLiBIb3dldmVyLCB0aGUgcmVuZGVyYWJsaWxpdHkgb2YgdW5zaXplZAor
ICAgICAgICAgKiBTUkdCLFVCWVRFIGludGVybmFsZm9ybWF0LXR5cGUgcGFpciBpcyBpbXBsaWVk
LgorICAgICAgICAgKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0KKyAgICAgICAgICovCisgICAgICAg
IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfbnZTcmdiRm9ybWF0c1RleHR1cmVGb3JtYXRzID0g
WworICAgICAgICAgICAgZ2wuU1JHQjgsCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdGtl
eShnbC5TUkdCLCBnbC5VTlNJR05FRF9CWVRFKQorICAgICAgICBdOworCisgICAgICAgIC8qKgor
ICAgICAgICAgKiBzX29lc1JnYjhSZ2JhOFRleEZvcm1hdHMKKyAgICAgICAgICogQHR5cGUge0Fy
cmF5PG51bWJlcj59CisgICAgICAgICAqLworICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0
cy5zX29lc1JnYjhSZ2JhOFRleEZvcm1hdHMgPSBbCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZv
cm1hdGtleShnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUpLAorICAgICAgICAgICAgZ2xzRmJvVXRp
bC5mb3JtYXRrZXkoZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSkKKyAgICAgICAgXTsKKworICAg
ICAgICB2YXIgZm10ID0gZ2xzRmJvVXRpbC5Gb3JtYXRGbGFnczsKKworICAgICAgICAvKioKKyAg
ICAgICAgICogc19lc0V4dEZvcm1hdHMKKyAgICAgICAgICogQHR5cGUge0FycmF5PGdsc0Zib1V0
aWwuRm9ybWF0RXh0RW50cnk+fQorICAgICAgICAgKi8KKyAgICAgICAgZ2xzRmJvQ29tcGxldGVu
ZXNzVGVzdHMuc19lc0V4dEZvcm1hdHMgPSBbCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5G
b3JtYXRFeHRFbnRyeSgKKyAgICAgICAgICAgICAgICAnT0VTX2RlcHRoX3RleHR1cmUnLAorICAg
ICAgICAgICAgICAgIGZtdC5SRVFVSVJFRF9SRU5ERVJBQkxFIHwgZm10LkRFUFRIX1JFTkRFUkFC
TEUgfCBmbXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdl
QXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19vZXNEZXB0aFRleHR1cmVGb3JtYXRzKQor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5
KAorICAgICAgICAgICAgICAgICdPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwnLAorICAgICAgICAg
ICAgICAgIGZtdC5SRVFVSVJFRF9SRU5ERVJBQkxFIHwgZm10LkRFUFRIX1JFTkRFUkFCTEUgfCBm
bXQuU1RFTkNJTF9SRU5ERVJBQkxFIHwgZm10LlJFTkRFUkJVRkZFUl9WQUxJRCwKKyAgICAgICAg
ICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19v
ZXNQYWNrZWREZXB0aFN0ZW5jaWxTaXplZEZvcm1hdHMpCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnkoCisgICAgICAgICAgICAgICAgJ09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCBPRVNfcmVxdWlyZWRfaW50ZXJuYWxmb3JtYXQnLAorICAg
ICAgICAgICAgICAgIGZtdC5ERVBUSF9SRU5ERVJBQkxFIHwgZm10LlNURU5DSUxfUkVOREVSQUJM
RSB8IGZtdC5URVhUVVJFX1ZBTElELAorICAgICAgICAgICAgICAgIGdsc0Zib1V0aWwucmFuZ2VB
cnJheShnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1BhY2tlZERlcHRoU3RlbmNpbFRleEZv
cm1hdHMpCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICAvLyBcdG9kbyBbMjAxMy0xMi0x
MCBsYXVyaV0gRmluZCBvdXQgaWYgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBpcyByZWFsbHkgYQor
ICAgICAgICAgICAgLy8gcmVxdWlyZW1lbnQgb24gRVMzIGFsc28uIE9yIGlzIGNvbG9yX2J1ZmZl
cl9oYWxmX2Zsb2F0IGFwcGxpY2F0YmxlIGF0CisgICAgICAgICAgICAvLyBhbGwgb24gRVMzLCBz
aW5jZSB0aGVyZSdzIGFsc28gRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdD8KKyAgICAgICAgICAgIG5l
dyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAgICdPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0IEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCcsCisgICAgICAgICAgICAg
ICAgZm10LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBmbXQuQ09MT1JfUkVOREVSQUJMRSB8IGZtdC5S
RU5ERVJCVUZGRVJfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5
KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXRGb3JtYXRz
KQorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgLy8gT0VTX3JlcXVpcmVkX2ludGVybmFs
Zm9ybWF0IGRvZXNuJ3QgYWN0dWFsbHkgc3BlY2lmeSB0aGF0IHRoZXNlIGFyZSByZW5kZXJhYmxl
LAorICAgICAgICAgICAgLy8gc2luY2UgaXQgd2FzIHdyaXR0ZW4gYWdhaW5zdCBFUyAxLjEuCisg
ICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5Gb3JtYXRFeHRFbnRyeSgKKyAgICAgICAgICAgICAg
ICAnT0VTX3JlcXVpcmVkX2ludGVybmFsZm9ybWF0JywKKyAgICAgICAgICAgICAgICAvLyBBbGxv
dyBidXQgZG9uJ3QgcmVxdWlyZSBSR0JBOCB0byBiZSBjb2xvci1yZW5kZXJhYmxlIGlmCisgICAg
ICAgICAgICAgICAgLy8gT0VTX3JnYjhfcmdiYTggaXMgbm90IHByZXNlbnQuCisgICAgICAgICAg
ICAgICAgZm10LkNPTE9SX1JFTkRFUkFCTEUgfCBmbXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAg
ICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19v
ZXNSZXF1aXJlZEludGVybmFsRm9ybWF0Q29sb3JGb3JtYXRzKQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAg
ICdPRVNfcmVxdWlyZWRfaW50ZXJuYWxmb3JtYXQnLAorICAgICAgICAgICAgICAgIGZtdC5ERVBU
SF9SRU5ERVJBQkxFIHwgZm10LlRFWFRVUkVfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJv
VXRpbC5yYW5nZUFycmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfb2VzUmVxdWlyZWRJbnRl
cm5hbEZvcm1hdERlcHRoRm9ybWF0cykKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBuZXcg
Z2xzRmJvVXRpbC5Gb3JtYXRFeHRFbnRyeSgKKyAgICAgICAgICAgICAgICAnRVhUX3RleHR1cmVf
cmcnLAorICAgICAgICAgICAgICAgIGZtdC5SRVFVSVJFRF9SRU5ERVJBQkxFIHwgZm10LkNPTE9S
X1JFTkRFUkFCTEUgfCBmbXQuUkVOREVSQlVGRkVSX1ZBTElELAorICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwucmFuZ2VBcnJheShnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX2V4dFRleHR1cmVS
Z1Jib0Zvcm1hdHMpCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICAvLyBUaGVzZSBhcmUg
bm90IHNwZWNpZmllZCB0byBiZSBjb2xvci1yZW5kZXJhYmxlLCBidXQgdGhlIHdvcmRpbmcgaXMK
KyAgICAgICAgICAgIC8vIGV4YWN0bHkgYXMgYW1iaWd1b3VzIGFzIHRoZSB3b3JkaW5nIGluIHRo
ZSBFUzIgc3BlYy4KKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAor
ICAgICAgICAgICAgICAgICdFWFRfdGV4dHVyZV9yZycsCisgICAgICAgICAgICAgICAgZm10LlJF
UVVJUkVEX1JFTkRFUkFCTEUgfCBmbXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBn
bHNGYm9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19leHRUZXh0dXJl
UmdUZXhGb3JtYXRzKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGls
LkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAgICdFWFRfdGV4dHVyZV9yZyBPRVNfdGV4
dHVyZV9mbG9hdCcsCisgICAgICAgICAgICAgICAgZm10LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBm
bXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJyYXko
Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19leHRUZXh0dXJlUmdGbG9hdFRleEZvcm1hdHMpCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnko
CisgICAgICAgICAgICAgICAgJ0VYVF90ZXh0dXJlX3JnIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQn
LAorICAgICAgICAgICAgICAgIGZtdC5SRVFVSVJFRF9SRU5ERVJBQkxFIHwgZm10LlRFWFRVUkVf
VkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGdsc0Zib0NvbXBs
ZXRlbmVzc1Rlc3RzLnNfZXh0VGV4dHVyZVJnSGFsZkZsb2F0VGV4Rm9ybWF0cykKKyAgICAgICAg
ICAgICksCisKKyAgICAgICAgICAgIC8vIFNvbWUgVGVncmEgZHJpdmVycyByZXBvcnQgZ2wuRVhU
X3BhY2tlZF9mbG9hdCBldmVuIGZvciBFUy4gVHJlYXQgaXQgYXMKKyAgICAgICAgICAgIC8vIGEg
c3lub255bSBmb3IgdGhlIE5WXyB2ZXJzaW9uLgorICAgICAgICAgICAgbmV3IGdsc0Zib1V0aWwu
Rm9ybWF0RXh0RW50cnkoCisgICAgICAgICAgICAgICAgJ0VYVF9wYWNrZWRfZmxvYXQnLAorICAg
ICAgICAgICAgICAgIGZtdC5SRVFVSVJFRF9SRU5ERVJBQkxFIHwgZm10LlRFWFRVUkVfVkFMSUQs
CisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGdsc0Zib0NvbXBsZXRlbmVz
c1Rlc3RzLnNfbnZQYWNrZWRGbG9hdFRleEZvcm1hdHMpCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnkoCisgICAgICAgICAgICAgICAgJ0VY
VF9wYWNrZWRfZmxvYXQgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0JywKKyAgICAgICAgICAg
ICAgICBmbXQuUkVRVUlSRURfUkVOREVSQUJMRSB8IGZtdC5DT0xPUl9SRU5ERVJBQkxFIHwgZm10
LlJFTkRFUkJVRkZFUl9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJy
YXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19udlBhY2tlZEZsb2F0UmJvRm9ybWF0cykKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5Gb3JtYXRFeHRFbnRyeSgK
KyAgICAgICAgICAgICAgICAnRVhUX3NSR0InLAorICAgICAgICAgICAgICAgIGZtdC5DT0xPUl9S
RU5ERVJBQkxFIHwgZm10LlRFWFRVUkVfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRp
bC5yYW5nZUFycmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0U3JnYlJlbmRlcmFibGVU
ZXhGb3JtYXRzKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZv
cm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAgICdFWFRfc1JHQicsCisgICAgICAgICAgICAg
ICAgZm10LlRFWFRVUkVfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFy
cmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0U3JnYk5vblJlbmRlcmFibGVUZXhGb3Jt
YXRzKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4
dEVudHJ5KAorICAgICAgICAgICAgICAgICdFWFRfc1JHQicsCisgICAgICAgICAgICAgICAgZm10
LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBmbXQuQ09MT1JfUkVOREVSQUJMRSB8IGZtdC5SRU5ERVJC
VUZGRVJfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGdsc0Zi
b0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0U3JnYlJib0Zvcm1hdHMpCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnkoCisgICAgICAgICAgICAg
ICAgJ05WX3NSR0JfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgZm10LlJFUVVJUkVEX1JFTkRF
UkFCTEUgfCBmbXQuQ09MT1JfUkVOREVSQUJMRSB8IGZtdC5SRU5ERVJCVUZGRVJfVkFMSUQsCisg
ICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzLnNfbnZTcmdiRm9ybWF0c1Jib0Zvcm1hdHMpCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnkoCisgICAgICAgICAgICAgICAgJ05WX3NS
R0JfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgZm10LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBm
bXQuQ09MT1JfUkVOREVSQUJMRSB8IGZtdC5URVhUVVJFX1ZBTElELAorICAgICAgICAgICAgICAg
IGdsc0Zib1V0aWwucmFuZ2VBcnJheShnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX252U3JnYkZv
cm1hdHNUZXh0dXJlRm9ybWF0cykKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIC8vIElu
IEtocm9ub3MgYnVnIDczMzMgZGlzY3Vzc2lvbiwgdGhlIGNvbnNlbnN1cyBpcyB0aGF0IHRoZXNl
IHRleHR1cmUKKyAgICAgICAgICAgIC8vIGZvcm1hdHMsIGF0IGxlYXN0LCBzaG91bGQgYmUgY29s
b3ItcmVuZGVyYWJsZS4gU3RpbGwsIHRoYXQgY2Fubm90IGJlCisgICAgICAgICAgICAvLyBmb3Vu
ZCBpbiBhbnkgZXh0ZW5zaW9uIHNwZWNzLCBzbyBvbmx5IGFsbG93IGl0LCBub3QgcmVxdWlyZSBp
dC4KKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAg
ICAgICAgICdPRVNfcmdiOF9yZ2JhOCcsCisgICAgICAgICAgICAgICAgZm10LkNPTE9SX1JFTkRF
UkFCTEUgfCBmbXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJh
bmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19vZXNSZ2I4UmdiYThUZXhGb3JtYXRz
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVu
dHJ5KAorICAgICAgICAgICAgICAgICdPRVNfcmdiOF9yZ2JhOCcsCisgICAgICAgICAgICAgICAg
Zm10LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBmbXQuQ09MT1JfUkVOREVSQUJMRSB8IGZtdC5SRU5E
RVJCVUZGRVJfVkFMSUQsCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFycmF5KGds
c0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfb2VzUmdiOFJnYmE4UmJvRm9ybWF0cykKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5Gb3JtYXRFeHRFbnRyeSgKKyAgICAg
ICAgICAgICAgICAnT0VTX3JnYjhfcmdiYTggT0VTX3JlcXVpcmVkX2ludGVybmFsZm9ybWF0JywK
KyAgICAgICAgICAgICAgICBmbXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNG
Ym9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19vZXNSZXF1aXJlZElu
dGVybmFsRm9ybWF0UmdiOENvbG9yRm9ybWF0KQorICAgICAgICAgICAgKSwKKworICAgICAgICAg
ICAgLy8gVGhlIGRlcHRoLXJlbmRlcmFiaWxpdHkgb2YgdGhlIGRlcHRoIFJCTyBmb3JtYXRzIGlz
IG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAvLyBzcGVsbGVkIG91dCwgYnV0IGFsbCByZW5k
ZXJidWZmZXIgZm9ybWF0cyBhcmUgbWVhbnQgdG8gYmUgcmVuZGVyYWJsZS4KKyAgICAgICAgICAg
IG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAgICdPRVNfZGVw
dGgyNCcsCisgICAgICAgICAgICAgICAgZm10LlJFUVVJUkVEX1JFTkRFUkFCTEUgfCBmbXQuREVQ
VEhfUkVOREVSQUJMRSB8IGZtdC5SRU5ERVJCVUZGRVJfVkFMSUQsCisgICAgICAgICAgICAgICAg
Z2xzRmJvVXRpbC5yYW5nZUFycmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfb2VzRGVwdGgy
NFNpemVkRm9ybWF0cykKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRp
bC5Gb3JtYXRFeHRFbnRyeSgKKyAgICAgICAgICAgICAgICAnT0VTX2RlcHRoMjQgT0VTX3JlcXVp
cmVkX2ludGVybmFsZm9ybWF0IE9FU19kZXB0aF90ZXh0dXJlJywKKyAgICAgICAgICAgICAgICBm
bXQuVEVYVFVSRV9WQUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJyYXko
Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19vZXNEZXB0aDI0U2l6ZWRGb3JtYXRzKQorICAgICAg
ICAgICAgKSwKKworICAgICAgICAgICAgbmV3IGdsc0Zib1V0aWwuRm9ybWF0RXh0RW50cnkoCisg
ICAgICAgICAgICAgICAgJ09FU19kZXB0aDMyJywKKyAgICAgICAgICAgICAgICBmbXQuUkVRVUlS
RURfUkVOREVSQUJMRSB8IGZtdC5ERVBUSF9SRU5ERVJBQkxFIHwgZm10LlJFTkRFUkJVRkZFUl9W
QUxJRCwKKyAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxl
dGVuZXNzVGVzdHMuc19vZXNEZXB0aDMyU2l6ZWRGb3JtYXRzKQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLkZvcm1hdEV4dEVudHJ5KAorICAgICAgICAgICAgICAg
ICdPRVNfZGVwdGgzMiBPRVNfcmVxdWlyZWRfaW50ZXJuYWxmb3JtYXQgT0VTX2RlcHRoX3RleHR1
cmUnLAorICAgICAgICAgICAgICAgIGZtdC5URVhUVVJFX1ZBTElELAorICAgICAgICAgICAgICAg
IGdsc0Zib1V0aWwucmFuZ2VBcnJheShnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc0RlcHRo
MzJTaXplZEZvcm1hdHMpCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICBuZXcgZ2xzRmJv
VXRpbC5Gb3JtYXRFeHRFbnRyeSgKKyAgICAgICAgICAgICAgICAnRVhUX3RleHR1cmVfdHlwZV8y
XzEwXzEwXzEwX1JFVicsCisgICAgICAgICAgICAgICAgZm10LlRFWFRVUkVfVkFMSUQsIC8vIGV4
cGxpY2l0bHkgdW5yZW5kZXJhYmxlCisgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5yYW5nZUFy
cmF5KGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnNfZXh0VGV4dHVyZVR5cGUyMTAxMDEwUmV2Rm9y
bWF0cykKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5Gb3JtYXRF
eHRFbnRyeSgKKyAgICAgICAgICAgICAgICAnRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JF
ViBPRVNfcmVxdWlyZWRfaW50ZXJuYWxmb3JtYXQnLAorICAgICAgICAgICAgICAgIGZtdC5URVhU
VVJFX1ZBTElELCAvLyBleHBsaWNpdGx5IHVucmVuZGVyYWJsZQorICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwucmFuZ2VBcnJheShnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5zX29lc1JlcXVpcmVk
SW50ZXJuYWxGb3JtYXQxMGJpdENvbG9yRm9ybWF0cykKKyAgICAgICAgICAgICkKKyAgICAgICAg
XTsKKworICAgIH07IC8vIGluaXRHbERlcGVuZGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBw
YXJhbSB7bnVsbH0gdGVzdEN0eAorICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlfSByZW5kZXJDdHgKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5DaGVja2VyRmFjdG9yeX0g
ZmFjdG9yeQorICAgICovCisgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuQ29udGV4dCA9IGZ1
bmN0aW9uKHRlc3RDdHgsIHJlbmRlckN0eCwgZmFjdG9yeSkgeworCisgICAgICAgIHRoaXMubV90
ZXN0Q3R4ID0gdGVzdEN0eDsKKyAgICAgICAgdGhpcy5tX3JlbmRlckN0eCA9IHJlbmRlckN0eDsK
KyAgICAgICAgdGhpcy5tX2N0eEZvcm1hdHMgPSBuZXcgZ2xzRmJvVXRpbC5Gb3JtYXREQigpOwor
ICAgICAgICB0aGlzLm1fbWluRm9ybWF0cyA9IG5ldyBnbHNGYm9VdGlsLkZvcm1hdERCKCk7Cisg
ICAgICAgIHRoaXMubV9tYXhGb3JtYXRzID0gbmV3IGdsc0Zib1V0aWwuRm9ybWF0REIoKTsKKyAg
ICAgICAgdGhpcy5tX3ZlcmlmaWVyID0gbmV3IGdsc0Zib1V0aWwuRmJvVmVyaWZpZXIodGhpcy5t
X2N0eEZvcm1hdHMsIGZhY3RvcnkpOworICAgICAgICB0aGlzLm1faGF2ZU11bHRpQ29sb3JBdHRz
ID0gZmFsc2U7CisKKyAgICAgICAgLy8gRm9ybWF0RXh0RW50cmllcworICAgICAgICB2YXIgZXh0
UmFuZ2UgPSBnbHNGYm9VdGlsLnJhbmdlQXJyYXkoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc19l
c0V4dEZvcm1hdHMpOworICAgICAgICB0aGlzLmFkZEV4dEZvcm1hdHMoZXh0UmFuZ2UpOworCisg
ICAgfTsKKworICAgIC8vIFJlbmRlckNvbnRleHQmCisgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVz
dHMuQ29udGV4dC5wcm90b3R5cGUuZ2V0UmVuZGVyQ29udGV4dCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5tX3JlbmRlckN0eDsKKyAgICB9OworCisgICAgLy8gVGVzdENvbnRl
eHQmCisgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuQ29udGV4dC5wcm90b3R5cGUuZ2V0VGVz
dENvbnRleHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV90ZXN0Q3R4Owor
ICAgIH07CisKKyAgICAvLyBjb25zdCBGYm9WZXJpZmllciYKKyAgICBnbHNGYm9Db21wbGV0ZW5l
c3NUZXN0cy5Db250ZXh0LnByb3RvdHlwZS5nZXRWZXJpZmllciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5tX3ZlcmlmaWVyOworICAgIH07CisKKyAgICAvLyBjb25zdCBGb3Jt
YXREQiYKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5Db250ZXh0LnByb3RvdHlwZS5nZXRN
aW5Gb3JtYXRzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbWluRm9ybWF0
czsKKyAgICB9OworCisgICAgLy8gY29uc3QgRm9ybWF0REImCisgICAgZ2xzRmJvQ29tcGxldGVu
ZXNzVGVzdHMuQ29udGV4dC5wcm90b3R5cGUuZ2V0Q3R4Rm9ybWF0cyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5tX2N0eEZvcm1hdHM7CisgICAgfTsKKworICAgIC8vIGJvb2wK
KyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5Db250ZXh0LnByb3RvdHlwZS5oYXZlTXVsdGlD
b2xvckF0dHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9oYXZlTXVsdGlD
b2xvckF0dHM7CisgICAgfTsKKworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLkNvbnRleHQu
cHJvdG90eXBlLnNldEhhdmVNdWx0aWNvbG9yQXR0cyA9IGZ1bmN0aW9uKGhhdmUpIHsKKyAgICAg
ICAgdGhpcy5tX2hhdmVNdWx0aUNvbG9yQXR0cyA9IChoYXZlID09IHRydWUpOworICAgIH07CisK
KyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5Db250ZXh0LnByb3RvdHlwZS5hZGRGb3JtYXRz
ID0gZnVuY3Rpb24oZm10UmFuZ2UpIHsKKyAgICAgICAgZ2xzRmJvVXRpbC5hZGRGb3JtYXRzKHRo
aXMubV9taW5Gb3JtYXRzLCBmbXRSYW5nZSk7CisgICAgICAgIGdsc0Zib1V0aWwuYWRkRm9ybWF0
cyh0aGlzLm1fY3R4Rm9ybWF0cywgZm10UmFuZ2UpOworICAgICAgICBnbHNGYm9VdGlsLmFkZEZv
cm1hdHModGhpcy5tX21heEZvcm1hdHMsIGZtdFJhbmdlKTsKKyAgICB9OworICAgIGdsc0Zib0Nv
bXBsZXRlbmVzc1Rlc3RzLkNvbnRleHQucHJvdG90eXBlLmFkZEV4dEZvcm1hdHMgPSBmdW5jdGlv
bihleHRSYW5nZSkgeworICAgICAgICBnbHNGYm9VdGlsLmFkZEV4dEZvcm1hdHModGhpcy5tX2N0
eEZvcm1hdHMsIGV4dFJhbmdlLCB0aGlzLm1fcmVuZGVyQ3R4KTsKKyAgICAgICAgZ2xzRmJvVXRp
bC5hZGRFeHRGb3JtYXRzKHRoaXMubV9tYXhGb3JtYXRzLCBleHRSYW5nZSwgdGhpcy5tX3JlbmRl
ckN0eCk7CisgICAgfTsKKworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLkNvbnRleHQucHJv
dG90eXBlLmNyZWF0ZVJlbmRlcmFibGVUZXN0cyA9IGZ1bmN0aW9uKGdsKSB7CisKKyAgICAgICAg
LyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0gKi8KKyAgICAgICAgdmFyIHJlbmRlcmFi
bGVUZXN0cyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3JlbmRlcmFibGUnLCAnVGVzdHMgZm9yIHN1
cHBvcnQgb2YgcmVuZGVyYWJsZSBpbWFnZSBmb3JtYXRzJyk7CisgICAgICAgIC8qKiBAdHlwZSB7
dGN1VGVzdENhc2UuRGVxcFRlc3R9ICovCisgICAgICAgIHZhciByYlJlbmRlcmFibGVUZXN0cyA9
IHRjdVRlc3RDYXNlLm5ld1Rlc3QoJ3JlbmRlcmJ1ZmZlcicsICdUZXN0cyBmb3IgcmVuZGVyYnVm
ZmVyIGZvcm1hdHMnKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0g
Ki8KKyAgICAgICAgdmFyIHRleFJlbmRlcmFibGVUZXN0cyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3Qo
J3RleHR1cmUnLCAnVGVzdHMgZm9yIHRleHR1cmUgZm9ybWF0cycpOworCisgICAgICAgIHZhciBh
dHRQb2ludHMgPSBbCisgICAgICAgICAgICBbZ2wuREVQVEhfQVRUQUNITUVOVCwgJ2RlcHRoJywg
J1Rlc3RzIGZvciBkZXB0aCBhdHRhY2htZW50cyddLAorICAgICAgICAgICAgW2dsLlNURU5DSUxf
QVRUQUNITUVOVCwgJ3N0ZW5jaWwnLCAnVGVzdHMgZm9yIHN0ZW5jaWwgYXR0YWNobWVudHMnXSwK
KyAgICAgICAgICAgIFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgJ2NvbG9yMCcsICdUZXN0cyBmb3Ig
Y29sb3IgYXR0YWNobWVudHMnXQorICAgICAgICBdOworCisgICAgICAgIC8vIEF0IGVhY2ggYXR0
YWNobWVudCBwb2ludCwgaXRlcmF0ZSB0aHJvdWdoIGFsbCB0aGUgcG9zc2libGUgZm9ybWF0cyB0
bworICAgICAgICAvLyBkZXRlY3QgYm90aCBmYWxzZSBwb3NpdGl2ZXMgYW5kIGZhbHNlIG5lZ2F0
aXZlcy4KKyAgICAgICAgdmFyIHJib0ZtdHMgPSB0aGlzLm1fbWF4Rm9ybWF0cy5nZXRGb3JtYXRz
KGdsc0Zib1V0aWwuRm9ybWF0RmxhZ3MuQU5ZX0ZPUk1BVCk7CisgICAgICAgIHZhciB0ZXhGbXRz
ID0gdGhpcy5tX21heEZvcm1hdHMuZ2V0Rm9ybWF0cyhnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLkFO
WV9GT1JNQVQpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsX2F0dFBvaW50cyA9IGF0dFBv
aW50cy5sZW5ndGg7IGkgPCBsX2F0dFBvaW50czsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmJB
dHRUZXN0cyA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QoYXR0UG9pbnRzW2ldWzFdLCBhdHRQb2ludHNb
aV1bMl0pOworICAgICAgICAgICAgdmFyIHRleEF0dFRlc3RzID0gdGN1VGVzdENhc2UubmV3VGVz
dChhdHRQb2ludHNbaV1bMV0sIGF0dFBvaW50c1tpXVsyXSk7CisKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwLCBsX3Jib0ZtdHMgPSByYm9GbXRzLmxlbmd0aDsgaiA8IGxfcmJvRm10czsgKytq
KSB7CisgICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3Rz
LnJlbmRlcmFibGVQYXJhbXMoCisgICAgICAgICAgICAgICAgICAgIGF0dFBvaW50c1tpXVswXSwg
Z2wuUkVOREVSQlVGRkVSLCByYm9GbXRzW2pdCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICByYkF0dFRlc3RzLmFkZENoaWxkKAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xz
RmJvQ29tcGxldGVuZXNzVGVzdHMuUmVuZGVyYWJsZVRlc3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5yZW5kZXJhYmxlUGFyYW1zLmdldE5hbWUocGFy
YW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnJl
bmRlcmFibGVQYXJhbXMuZ2V0RGVzY3JpcHRpb24ocGFyYW1zKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMsIHBhcmFtcworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJiUmVuZGVyYWJsZVRlc3RzLmFkZENo
aWxkKHJiQXR0VGVzdHMpOworCisgICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgbF90ZXhGbXRz
ID0gdGV4Rm10cy5sZW5ndGg7IGogPCBsX3RleEZtdHM7ICsraikgeworICAgICAgICAgICAgICAg
IHZhciBwYXJhbXMgPSBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5yZW5kZXJhYmxlUGFyYW1zKAor
ICAgICAgICAgICAgICAgICAgICBhdHRQb2ludHNbaV1bMF0sIGdsLlRFWFRVUkUsIHRleEZtdHNb
al0KKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIHRleEF0dFRlc3RzLmFkZENo
aWxkKAorICAgICAgICAgICAgICAgICAgICBuZXcgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuUmVu
ZGVyYWJsZVRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5yZW5kZXJhYmxlUGFyYW1zLmdldE5hbWUocGFyYW1zKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnJlbmRlcmFibGVQYXJhbXMuZ2V0RGVzY3Jp
cHRpb24ocGFyYW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIHBhcmFtcworICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHRleFJlbmRlcmFibGVUZXN0cy5hZGRDaGlsZCh0ZXhBdHRUZXN0cyk7CisKKyAg
ICAgICAgfQorICAgICAgICByZW5kZXJhYmxlVGVzdHMuYWRkQ2hpbGQocmJSZW5kZXJhYmxlVGVz
dHMpOworICAgICAgICByZW5kZXJhYmxlVGVzdHMuYWRkQ2hpbGQodGV4UmVuZGVyYWJsZVRlc3Rz
KTsKKworICAgICAgICByZXR1cm4gcmVuZGVyYWJsZVRlc3RzOworICAgIH07CisKKyAgICBnbHNG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5Db250ZXh0LnByb3RvdHlwZS5jcmVhdGVBdHRhY2htZW50VGVz
dHMgPSBmdW5jdGlvbihnbCkgeworCisgICAgICAgIHZhciBhdHRDb21iVGVzdHMgPSB0Y3VUZXN0
Q2FzZS5uZXdUZXN0KCdhdHRhY2htZW50X2NvbWJpbmF0aW9ucycsICdUZXN0cyBmb3IgYXR0YWNo
bWVudCBjb21iaW5hdGlvbnMnKTsKKworICAgICAgICB2YXIgc19idWZUeXBlcyA9IFtnbC5OT05F
LCBnbC5SRU5ERVJCVUZGRVIsIGdsLlRFWFRVUkVdOworICAgICAgICB2YXIgbHNfYnVmVHlwZXMg
PSBzX2J1ZlR5cGVzLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBjb2wwID0gMDsgY29sMCA8
IGxzX2J1ZlR5cGVzOyArK2NvbDApCisgICAgICAgICAgICBmb3IgKHZhciBjb2xuID0gMDsgY29s
biA8IGxzX2J1ZlR5cGVzOyArK2NvbG4pCisgICAgICAgICAgICAgICAgZm9yICh2YXIgZGVwID0g
MDsgZGVwIDwgbHNfYnVmVHlwZXM7ICsrZGVwKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBzdGMgPSAwOyBzdGMgPCBsc19idWZUeXBlczsgKytzdGMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBwYXJhbXMgPSBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5hdHRhY2htZW50UGFy
YW1zKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNfYnVmVHlwZXNbY29sMF0sIHNfYnVm
VHlwZXNbY29sbl0sIHNfYnVmVHlwZXNbZGVwXSwgc19idWZUeXBlc1tzdGNdCisgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgYXR0Q29tYlRlc3RzLmFk
ZENoaWxkKG5ldyBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5BdHRhY2htZW50VGVzdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5hdHRhY2htZW50
UGFyYW1zLmdldE5hbWUocGFyYW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5hdHRhY2htZW50UGFyYW1zLmdldERlc2NyaXB0aW9uKHBhcmFt
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgcGFyYW1zCisgICAgICAgICAg
ICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4g
YXR0Q29tYlRlc3RzOworICAgIH07CisKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5Db250
ZXh0LnByb3RvdHlwZS5jcmVhdGVTaXplVGVzdHMgPSBmdW5jdGlvbihnbCkgeworCisgICAgICAg
IHZhciBzaXplVGVzdHMgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdzaXplJywgJ1Rlc3RzIGZvciBh
dHRhY2htZW50IHNpemVzJyk7CisKKyAgICAgICAgc2l6ZVRlc3RzLmFkZENoaWxkKG5ldyBnbHNG
Ym9Db21wbGV0ZW5lc3NUZXN0cy5FbXB0eUltYWdlVGVzdCgKKyAgICAgICAgICAgICd6ZXJvJywg
J1Rlc3QgZm9yIHplcm8tc2l6ZWQgaW1hZ2UgYXR0YWNobWVudCcsIHRoaXMKKyAgICAgICAgKSk7
CisKKyAgICAgICAgcmV0dXJuIHNpemVUZXN0czsKKworICAgIH07CisKKyAgICAvKioKKyAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAg
KiBAcGFyYW0ge09iamVjdH0gcGFyYW1zCisgICAgKi8KKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5UZXN0QmFzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIHBhcmFtcykgeworICAgICAgICB0
Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2MpOworICAgICAgICB0aGlz
Lm1fcGFyYW1zID0gcGFyYW1zOworICAgIH07CisgICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMu
VGVzdEJhc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5w
cm90b3R5cGUpOworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlOworCisgICAg
Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuVGVzdEJhc2UucHJvdG90eXBlLmdldENvbnRleHQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICB9Owor
CisgICAgLy8gR0xlbnVtIGF0dFBvaW50LCBHTGVudW0gYnVmVHlwZQorICAgIC8qKgorICAgICog
QHBhcmFtIHtudW1iZXJ9IGF0dFBvaW50CisgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmVHlwZQor
ICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAqLworICAg
IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLnByb3RvdHlwZS5nZXREZWZhdWx0Rm9y
bWF0ID0gZnVuY3Rpb24oYXR0UG9pbnQsIGJ1ZlR5cGUsIGdsKSB7CisgICAgICAgIGdsID0gZ2wg
fHwgd2luZG93LmdsOworCisgICAgICAgIGlmIChidWZUeXBlID09IGdsLk5PTkUpIHsKKyAgICAg
ICAgICAgIHJldHVybiBnbHNGYm9VdGlsLkltYWdlRm9ybWF0Lm5vbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFByZWZlciBhIHN0YW5kYXJkIGZvcm1hdCwgaWYgdGhlcmUgaXMgb25lLCBi
dXQgaWYgbm90LCB1c2UgYSBmb3JtYXQKKyAgICAgICAgLy8gcHJvdmlkZWQgYnkgYW4gZXh0ZW5z
aW9uLgorICAgICAgICB2YXIgZm9ybWF0cyA9IHRoaXMubV9jdHguZ2V0TWluRm9ybWF0cygpLmdl
dEZvcm1hdHMoCisgICAgICAgICAgICBnbHNGYm9VdGlsLmZvcm1hdEZsYWcoYXR0UG9pbnQsIGds
KSB8IGdsc0Zib1V0aWwuZm9ybWF0RmxhZyhidWZUeXBlLCBnbCkKKyAgICAgICAgKTsKKworICAg
ICAgICBpZiAoIWZvcm1hdHMubGVuZ3RoKSB7CisgICAgICAgICAgICBmb3JtYXRzID0gdGhpcy5t
X2N0eC5nZXRDdHhGb3JtYXRzKCkuZ2V0Rm9ybWF0cygKKyAgICAgICAgICAgICAgICBnbHNGYm9V
dGlsLmZvcm1hdEZsYWcoYXR0UG9pbnQsIGdsKSB8IGdsc0Zib1V0aWwuZm9ybWF0RmxhZyhidWZU
eXBlLCBnbCkKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3JtYXRz
Lmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBhdHRh
Y2htZW50IGtpbmQgZm9yIGF0dGFjaG1lbnQgcG9pbnQnKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBmb3JtYXRzWzBdOworCisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtu
dW1iZXJ9IGJ1ZlR5cGUKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0gZm9y
bWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBo
ZWlnaHQKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5GYm9CdWlsZGVyfSBidWlsZGVyCisgICAg
KiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U9fSBnbAorICAgICogQHJldHVybiB7
Z2xzRmJvVXRpbC5JbWFnZX0KKyAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLm1h
a2VJbWFnZSA9IGZ1bmN0aW9uKGJ1ZlR5cGUsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYnVpbGRl
ciwgZ2wpIHsKKyAgICAgICAgZ2wgPSBnbCB8fCB3aW5kb3cuZ2w7CisgICAgICAgIHZhciBpbWFn
ZSA9IDA7CisgICAgICAgIHN3aXRjaCAoYnVmVHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbC5O
T05FOgorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBnbC5SRU5ERVJCVUZGRVI6CisgICAgICAgICAgICAgICAgaW1h
Z2UgPSAvKiogQHR5cGUge2dsc0Zib1V0aWwuUmVuZGVyYnVmZmVyfSovKGJ1aWxkZXIubWFrZUNv
bmZpZyhnbHNGYm9VdGlsLlJlbmRlcmJ1ZmZlcikpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFOgorICAgICAgICAgICAgICAgIGltYWdlID0gLyoq
IEB0eXBlIHtnbHNGYm9VdGlsLlRleHR1cmUyRH0qLyhidWlsZGVyLm1ha2VDb25maWcoZ2xzRmJv
VXRpbC5UZXh0dXJlMkQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIGNhc2Un
KTsKKyAgICAgICAgfQorICAgICAgICBpbWFnZS5pbnRlcm5hbEZvcm1hdCA9IGZvcm1hdDsKKyAg
ICAgICAgaW1hZ2Uud2lkdGggPSB3aWR0aDsKKyAgICAgICAgaW1hZ2UuaGVpZ2h0ID0gaGVpZ2h0
OworICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFt
IHtudW1iZXJ9IGJ1ZlR5cGUKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0g
Zm9ybWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBoZWlnaHQKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5GYm9CdWlsZGVyfSBidWlsZGVyCisg
ICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U9fSBnbAorICAgICogQHJldHVy
biB7Z2xzRmJvVXRpbC5BdHRhY2htZW50fQorICAgICovCisgICAgZ2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMubWFrZUF0dGFjaG1lbnQgPSBmdW5jdGlvbihidWZUeXBlLCBmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJ1aWxkZXIsIGdsKSB7CisgICAgICAgIGdsID0gZ2wgfHwgd2luZG93LmdsOworICAg
ICAgICB2YXIgY2ZnID0gZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMubWFrZUltYWdlKGJ1ZlR5cGUs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYnVpbGRlciwgZ2wpOworICAgICAgICBpZiAoY2ZnID09
IG51bGwpIHJldHVybiBudWxsOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2xzRmJvVXRpbC5BdHRh
Y2htZW50fSAqLyB2YXIgYXR0ID0gbnVsbDsKKyAgICAgICAgdmFyIGltZyA9IDA7CisKKyAgICAg
ICAgdmFyIG1hc2sgPSBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlJFTkRFUkJVRkZFUiB8IGds
c0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuVEVYVFVSRV8yRDsKKworICAgICAgICBzd2l0Y2ggKGNm
Zy50eXBlICYgbWFzaykgeworICAgICAgICAgICAgY2FzZSBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5
cGVzLlJFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgICAgICBpbWcgPSBidWlsZGVyLmdsQ3JlYXRl
UmJvKC8qKiBAdHlwZSB7Z2xzRmJvVXRpbC5SZW5kZXJidWZmZXJ9ICovKGNmZykpOworICAgICAg
ICAgICAgICAgIGF0dCA9IC8qKiBAdHlwZSB7Z2xzRmJvVXRpbC5SZW5kZXJidWZmZXJBdHRhY2ht
ZW50fSAqLyAoYnVpbGRlci5tYWtlQ29uZmlnKGdsc0Zib1V0aWwuUmVuZGVyYnVmZmVyQXR0YWNo
bWVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgaW1nID0gYnVp
bGRlci5nbENyZWF0ZVRleHR1cmUoLyoqIEB0eXBlIHtnbHNGYm9VdGlsLlRleHR1cmUyRH0gKi8o
Y2ZnKSk7CisgICAgICAgICAgICAgICAgYXR0ID0gLyoqIEB0eXBlIHtnbHNGYm9VdGlsLlRleHR1
cmVGbGF0QXR0YWNobWVudH0gKi8gKGJ1aWxkZXIubWFrZUNvbmZpZyhnbHNGYm9VdGlsLlRleHR1
cmVGbGF0QXR0YWNobWVudCkpOworICAgICAgICAgICAgICAgIGF0dC50ZXhUYXJnZXQgPSBnbC5U
RVhUVVJFXzJEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbmZpZy4nKTsK
KyAgICAgICAgfQorICAgICAgICBhdHQuaW1hZ2VOYW1lID0gaW1nOworICAgICAgICByZXR1cm4g
YXR0OworICAgIH07CisKKyAgICAvL0dMZW51bSB0YXJnZXQsIEdMZW51bSBidWZUeXBlLCBJbWFn
ZUZvcm1hdCBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGYm9CdWlsZGVy
JiBidWlsZGVyLCB3ZWJnbGN0eAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJn
ZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYnVmVHlwZQorICAgICAqIEBwYXJhbSB7Z2xzRmJv
VXRpbC5JbWFnZUZvcm1hdH0gZm9ybWF0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5G
Ym9CdWlsZGVyfSBidWlsZGVyCisgICAgICogQHBhcmFtIHtXZWJHTDJSZW5kZXJpbmdDb250ZXh0
fSBnbAorICAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLnByb3Rv
dHlwZS5hdHRhY2hUYXJnZXRUb05ldyA9IGZ1bmN0aW9uKAorICAgICAgICB0YXJnZXQsIGJ1ZlR5
cGUsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYnVpbGRlciwgZ2wKKyAgICApIHsKKyAgICAgICAg
dmFyIGltZ0ZtdCA9IGZvcm1hdDsKKyAgICAgICAgaWYgKGltZ0ZtdC5mb3JtYXQgPT0gZ2wuTk9O
RSkKKyAgICAgICAgICAgIGltZ0ZtdCA9IHRoaXMuZ2V0RGVmYXVsdEZvcm1hdCh0YXJnZXQsIGJ1
ZlR5cGUsIGdsKTsKKyAgICAgICAgdmFyIGF0dCA9IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLm1h
a2VBdHRhY2htZW50KGJ1ZlR5cGUsIGltZ0ZtdCwgd2lkdGgsIGhlaWdodCwgYnVpbGRlciwgZ2wp
OworICAgICAgICBidWlsZGVyLmdsQXR0YWNoKHRhcmdldCwgYXR0KTsKKyAgICB9OworCisgICAg
LyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhdHVzCisgICAgKiBAcGFyYW0ge1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U9fSBnbAorICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICovCisg
ICAgZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuc3RhdHVzTmFtZSA9IGZ1bmN0aW9uKHN0YXR1cywg
Z2wpIHsKKyAgICAgICAgZ2wgPSBnbCB8fCB3aW5kb3cuZ2w7CisKKyAgICAgICAgdmFyIGVycm9y
TmFtZSA9IGdsdVN0clV0aWwuZ2V0RXJyb3JOYW1lKHN0YXR1cyk7CisgICAgICAgIGlmIChzdGF0
dXMgIT0gZ2wuTk9fRVJST1IgJiYgZXJyb3JOYW1lICE9ICcnKQorICAgICAgICAgICAgcmV0dXJu
IGVycm9yTmFtZSArICcgKGR1cmluZyBGQk8gaW5pdGlhbGl6YXRpb24pJzsKKworICAgICAgICB2
YXIgZmJTdGF0dXNOYW1lID0gZ2x1U3RyVXRpbC5nZXRGcmFtZWJ1ZmZlclN0YXR1c05hbWUoc3Rh
dHVzKTsKKyAgICAgICAgaWYgKGZiU3RhdHVzTmFtZSAhPSAnJykKKyAgICAgICAgICAgIHJldHVy
biBmYlN0YXR1c05hbWU7CisKKyAgICAgICAgcmV0dXJuICd1bmtub3duIHZhbHVlICgnICsgc3Rh
dHVzICsgJyknOworICAgIH07CisKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5UZXN0QmFz
ZS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZ2wgPSB3aW5k
b3cuZ2w7CisKKyAgICAgICAgdmFyIGZibyA9IG5ldyBnbHVPYmplY3RXcmFwcGVyLkZyYW1lYnVm
ZmVyKGdsKTsKKyAgICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgZ2xzRmJvVXRpbC5GYm9CdWlsZGVy
KGZiby5nZXQoKSwgZ2wuRlJBTUVCVUZGRVIsIGdsKTsKKyAgICAgICAgdmFyIHJldCA9IHRoaXMu
YnVpbGQoYnVpbGRlciwgZ2wpOworICAgICAgICB2YXIgc3RhdHVzZXMgPSB0aGlzLm1fY3R4Lmdl
dFZlcmlmaWVyKCkudmFsaWRTdGF0dXNDb2RlcyhidWlsZGVyLCBnbCk7CisKKyAgICAgICAgdmFy
IGVycm9yQ29kZSA9IGJ1aWxkZXIuZ2V0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yQ29kZSAh
PSBnbC5OT19FUlJPUikgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1JlY2Vp
dmVkICcgKyBnbHVTdHJVdGlsLmdldEVycm9yTmFtZShlcnJvckNvZGUpICsgJyAoZHVyaW5nIEZC
TyBpbml0aWFsaXphdGlvbikuJyk7CisgICAgICAgICAgICBpZiAoc3RhdHVzZXMuaXNFcnJvckNv
ZGVWYWxpZChlcnJvckNvZGUpKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHN0YXR1c2VzLmlzRXJyb3JDb2RlUmVxdWlyZWQoZ2wuTk9fRVJST1Ip
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdFeGNlcHRlZCBubyBlcnJvciBi
dXQgZ290ICcgKyBnbHVTdHJVdGlsLmdldEVycm9yTmFtZShlcnJvckNvZGUpLCB0cnVlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnR290IHdy
b25nIGVycm9yIGNvZGUnLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZh
ciBmYm9TdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTsK
KyAgICAgICAgICAgIHZhciB2YWxpZFN0YXR1cyA9IHN0YXR1c2VzLmlzRkJPU3RhdHVzVmFsaWQo
ZmJvU3RhdHVzKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZWNlaXZlZCAn
ICsgZ2x1U3RyVXRpbC5nZXRGcmFtZWJ1ZmZlclN0YXR1c05hbWUoZmJvU3RhdHVzKSk7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGZib1N0YXR1
cyA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkT3B0aW9ucygnRnJhbWVidWZmZXIgY2hlY2tlZCBhcyBjb21wbGV0ZSwgZXhwZWN0ZWQg
aW5jb21wbGV0ZScsIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzZXMu
aXNGQk9TdGF0dXNSZXF1aXJlZChnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZyYW1lYnVmZmVyIGNoZWNrZWQgYXMgaW5j
b21wbGV0ZSwgZXhwZWN0ZWQgY29tcGxldGUnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAvLyBBbiBpbmNvbXBsZXRlIHN0YXR1cyBpcyBhbGxv
d2VkLCBidXQgbm90IF90aGlzXyBpbmNvbXBsZXRlIHN0YXR1cy4KKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ZyYW1lYnVmZmVyIGNoZWNrZWQgYXMgaW5jb21wbGV0ZSwg
YnV0IHdpdGggd3Jvbmcgc3RhdHVzJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIGlmIChmYm9TdGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUgJiYg
c3RhdHVzZXMuaXNGQk9TdGF0dXNWYWxpZChnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygnV2FybmluZzogZnJhbWVidWZmZXIgb2Jq
ZWN0IGNvdWxkIGhhdmUgY2hlY2tlZCBhcyBjb21wbGV0ZSBidXQgZGlkIG5vdC4nLCB0cnVlKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcGFzcworICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
dWlsZGVyLmRlaW5pdCgpOworCisgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVz
dWx0LlNUT1A7CisgICAgfTsKKworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmZvcm1hdE5h
bWUgPSBmdW5jdGlvbihmb3JtYXQsIGdsKSB7CisgICAgICAgIGlmICghKGdsID0gZ2wgfHwgd2lu
ZG93LmdsKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEdMIG9iamVjdCcpOworCisgICAgICAg
IHZhciBzID0gZ2x1U3RyVXRpbC5nZXRQaXhlbEZvcm1hdE5hbWUoZm9ybWF0LmZvcm1hdCkuc3Vi
c3RyKDMpLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgaWYgKGZvcm1hdC51bnNpemVkVHlwZSAh
PSBnbC5OT05FKQorICAgICAgICAgICAgcyArPSAnXycgKyBnbHVTdHJVdGlsLmdldFR5cGVOYW1l
KGZvcm1hdC51bnNpemVkVHlwZSkuc3Vic3RyKDMpLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAg
cmV0dXJuIHM7CisgICAgfTsKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5mb3JtYXREZXNj
ID0gZnVuY3Rpb24oZm9ybWF0LCBnbCkgeworICAgICAgICBpZiAoIShnbCA9IGdsIHx8IHdpbmRv
dy5nbCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBHTCBvYmplY3QnKTsKKworICAgICAgICB2
YXIgcyA9IGdsdVN0clV0aWwuZ2V0UGl4ZWxGb3JtYXROYW1lKGZvcm1hdC5mb3JtYXQpOworCisg
ICAgICAgIGlmIChmb3JtYXQudW5zaXplZFR5cGUgIT0gZ2wuTk9ORSkKKyAgICAgICAgICAgIHMg
Kz0gJyB3aXRoIHR5cGUgJyArIGdsdVN0clV0aWwuZ2V0VHlwZU5hbWUoZm9ybWF0LnVuc2l6ZWRU
eXBlKTsKKworICAgICAgICByZXR1cm4gczsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAdHlw
ZWRlZiB7e2F0dFBvaW50OiBudW1iZXIsIGJ1ZlR5cGU6IG51bWJlciwgZm9ybWF0OiBnbHNGYm9V
dGlsLkltYWdlRm9ybWF0fX0KKyAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnJl
bmRlcmFibGVQYXJhbXNUOworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gYXR0UG9p
bnQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBidWZUeXBlCisgICAgKiBAcGFyYW0ge2dsc0Zib1V0
aWwuSW1hZ2VGb3JtYXR9IGZvcm1hdAorICAgICogQHJldHVybiB7Z2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMucmVuZGVyYWJsZVBhcmFtc1R9CisgICAgKi8KKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5yZW5kZXJhYmxlUGFyYW1zID0gZnVuY3Rpb24oYXR0UG9pbnQsIGJ1ZlR5cGUsIGZvcm1h
dCkgeworICAgICAgICB2YXIgcmV0ID0geworICAgICAgICAgICAgYXR0UG9pbnQ6IGF0dFBvaW50
LAorICAgICAgICAgICAgYnVmVHlwZTogYnVmVHlwZSwKKyAgICAgICAgICAgIGZvcm1hdDogZm9y
bWF0CisgICAgICAgIH07CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKKyAgICAvKioKKyAg
ICAqIEBwYXJhbSB7Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMucmVuZGVyYWJsZVBhcmFtc1R9IHBh
cmFtcworICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAq
IEByZXR1cm4ge3N0cmluZ30KKyAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnJl
bmRlcmFibGVQYXJhbXMuZ2V0TmFtZSA9IGZ1bmN0aW9uKHBhcmFtcywgZ2wpIHsKKyAgICAgICAg
cmV0dXJuIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmZvcm1hdE5hbWUocGFyYW1zLmZvcm1hdCwg
Z2wpOworICAgIH07CisgICAgLyoqCisgICAgKiBAcGFyYW0ge2dsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzLnJlbmRlcmFibGVQYXJhbXNUfSBwYXJhbXMKKyAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZT19IGdsCisgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgKi8KKyAgICBn
bHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5yZW5kZXJhYmxlUGFyYW1zLmdldERlc2NyaXB0aW9uID0g
ZnVuY3Rpb24ocGFyYW1zLCBnbCkgeworICAgICAgICByZXR1cm4gZ2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMuZm9ybWF0RGVzYyhwYXJhbXMuZm9ybWF0LCBnbCk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7Z2xzRmJvQ29tcGxldGVuZXNzVGVz
dHMuVGVzdEJhc2V9CisgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2MKKyAgICAqIEBwYXJhbSB7Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuQ29udGV4
dH0gY3R4CisgICAgKiBAcGFyYW0ge2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLnJlbmRlcmFibGVQ
YXJhbXNUfSBwYXJhbXMKKyAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlJlbmRl
cmFibGVUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzYywgY3R4LCBwYXJhbXMpIHsKKyAgICAgICAg
Z2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuVGVzdEJhc2UuY2FsbCh0aGlzLCBuYW1lLCBkZXNjLCBw
YXJhbXMpOworICAgICAgICB0aGlzLm1fY3R4ID0gY3R4OworICAgIH07CisgICAgZ2xzRmJvQ29t
cGxldGVuZXNzVGVzdHMuUmVuZGVyYWJsZVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShn
bHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5UZXN0QmFzZS5wcm90b3R5cGUpOworICAgIGdsc0Zib0Nv
bXBsZXRlbmVzc1Rlc3RzLlJlbmRlcmFibGVUZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGds
c0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlJlbmRlcmFibGVUZXN0OworCisgICAgZ2xzRmJvQ29tcGxl
dGVuZXNzVGVzdHMuUmVuZGVyYWJsZVRlc3QucHJvdG90eXBlLmJ1aWxkID0gZnVuY3Rpb24oYnVp
bGRlciwgZ2wpIHsKKyAgICAgICAgdGhpcy5hdHRhY2hUYXJnZXRUb05ldyh0aGlzLm1fcGFyYW1z
LmF0dFBvaW50LCB0aGlzLm1fcGFyYW1zLmJ1ZlR5cGUsIHRoaXMubV9wYXJhbXMuZm9ybWF0LCA2
NCwgNjQsIGJ1aWxkZXIsIGdsKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAg
IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0dFR5cGVOYW1lID0gZnVuY3Rpb24oYnVmVHlwZSwg
Z2wpIHsKKyAgICAgICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJvdyBuZXcgRXJy
b3IoJ0ludmFsaWQgR0wgb2JqZWN0Jyk7CisgICAgICAgIHN3aXRjaCAoYnVmVHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBnbC5OT05FOiByZXR1cm4gJ25vbmUnOworICAgICAgICAgICAgY2FzZSBn
bC5SRU5ERVJCVUZGRVI6IHJldHVybiAncmJvJzsKKyAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVS
RTogcmV0dXJuICd0ZXgnOworICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIGNhc2UnKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAdHlwZWRlZiB7e2NvbG9yMEtpbmQ6IG51bWJlciwgY29sb3JuS2luZDog
bnVtYmVyLCBkZXB0aEtpbmQ6IG51bWJlciwgc3RlbmNpbEtpbmQ6IG51bWJlcn19CisgICAgKi8K
KyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5hdHRhY2htZW50UGFyYW1zVDsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbG9yMEtpbmQKKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBjb2xvcm5LaW5kCisgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGhLaW5kCisgICAgKiBAcGFy
YW0ge251bWJlcn0gc3RlbmNpbEtpbmQKKyAgICAqIEByZXR1cm4ge2dsc0Zib0NvbXBsZXRlbmVz
c1Rlc3RzLmF0dGFjaG1lbnRQYXJhbXNUfQorICAgICovCisgICAgZ2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMuYXR0YWNobWVudFBhcmFtcyA9IGZ1bmN0aW9uKGNvbG9yMEtpbmQsIGNvbG9ybktpbmQs
IGRlcHRoS2luZCwgc3RlbmNpbEtpbmQpIHsKKyAgICAgICAgdmFyIHJldCA9IHsKKyAgICAgICAg
ICAgIGNvbG9yMEtpbmQ6IGNvbG9yMEtpbmQsCisgICAgICAgICAgICBjb2xvcm5LaW5kOiBjb2xv
cm5LaW5kLAorICAgICAgICAgICAgZGVwdGhLaW5kOiBkZXB0aEtpbmQsCisgICAgICAgICAgICBz
dGVuY2lsS2luZDogc3RlbmNpbEtpbmQKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHJldDsK
KyAgICB9OworICAgIC8qKgorICAgICogQHBhcmFtIHtnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5h
dHRhY2htZW50UGFyYW1zVH0gcGFyYW1zCisgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U9fSBnbAorICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICovCisgICAgZ2xzRmJv
Q29tcGxldGVuZXNzVGVzdHMuYXR0YWNobWVudFBhcmFtcy5nZXROYW1lID0gZnVuY3Rpb24ocGFy
YW1zLCBnbCkgeworICAgICAgICByZXR1cm4gKGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0dFR5
cGVOYW1lKHBhcmFtcy5jb2xvcjBLaW5kLCBnbCkgKyAnXycgKworICAgICAgICAgICAgICAgIGds
c0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0dFR5cGVOYW1lKHBhcmFtcy5jb2xvcm5LaW5kLCBnbCkg
KyAnXycgKworICAgICAgICAgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0dFR5cGVO
YW1lKHBhcmFtcy5kZXB0aEtpbmQsIGdsKSArICdfJyArCisgICAgICAgICAgICAgICAgZ2xzRmJv
Q29tcGxldGVuZXNzVGVzdHMuYXR0VHlwZU5hbWUocGFyYW1zLnN0ZW5jaWxLaW5kLCBnbCkpOwor
ICAgIH07CisgICAgLyoqCisgICAgKiBAcGFyYW0ge2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0
dGFjaG1lbnRQYXJhbXNUfSBwYXJhbXMKKyAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAqLwor
ICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmF0dGFjaG1lbnRQYXJhbXMuZ2V0RGVzY3JpcHRp
b24gPSBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5hdHRhY2htZW50UGFyYW1zLmdldE5hbWU7CisK
KyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICogQGV4dGVuZHMge2dsc0Zib0NvbXBs
ZXRlbmVzc1Rlc3RzLlRlc3RCYXNlfQorICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgKiBAcGFyYW0ge2dsc0Zib0NvbXBsZXRlbmVzc1Rl
c3RzLkNvbnRleHR9IGN0eAorICAgICogQHBhcmFtIHtnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5h
dHRhY2htZW50UGFyYW1zVH0gcGFyYW1zCisgICAgKi8KKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5BdHRhY2htZW50VGVzdCA9IGZ1bmN0aW9uKG5hbWUsIGRlc2MsIGN0eCwgcGFyYW1zKSB7
CisgICAgICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLmNhbGwodGhpcywgbmFt
ZSwgZGVzYywgcGFyYW1zKTsKKyAgICAgICAgdGhpcy5tX2N0eCA9IGN0eDsKKyAgICB9OworICAg
IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLkF0dGFjaG1lbnRUZXN0LnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuVGVzdEJhc2UucHJvdG90eXBlKTsKKyAg
ICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5BdHRhY2htZW50VGVzdC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5BdHRhY2htZW50VGVzdDsKKworICAgIGds
c0Zib0NvbXBsZXRlbmVzc1Rlc3RzLkF0dGFjaG1lbnRUZXN0LnByb3RvdHlwZS5tYWtlRGVwdGhB
bmRTdGVuY2lsID0gZnVuY3Rpb24oYnVpbGRlciwgZ2wpIHsKKworICAgICAgICAvKiogQHR5cGUg
e2dsc0Zib1V0aWwuQXR0YWNobWVudH0gKi8KKyAgICAgICAgdmFyIGF0dCA9IG51bGw7CisKKyAg
ICAgICAgaWYgKHRoaXMubV9wYXJhbXMuc3RlbmNpbEtpbmQgPT0gdGhpcy5tX3BhcmFtcy5kZXB0
aEtpbmQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgY29tbW9uIHN0ZW5jaWwrZGVw
dGggLWZvcm1hdCwgdHJ5IHRvIHVzZSBhIGNvbW1vbgorICAgICAgICAgICAgLy8gaW1hZ2UgZm9y
IGJvdGggYXR0YWNobWVudHMuCisgICAgICAgICAgICB2YXIgZmxhZ3MgPSBnbHNGYm9VdGlsLkZv
cm1hdEZsYWdzLkRFUFRIX1JFTkRFUkFCTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xz
RmJvVXRpbC5Gb3JtYXRGbGFncy5TVEVOQ0lMX1JFTkRFUkFCTEUgfAorICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xzRmJvVXRpbC5mb3JtYXRGbGFnKHRoaXMubV9wYXJhbXMuc3RlbmNpbEtpbmQs
IGdsKTsKKworICAgICAgICAgICAgdmFyIGZvcm1hdHMgPSB0aGlzLm1fY3R4LmdldE1pbkZvcm1h
dHMoKS5nZXRGb3JtYXRzKGZsYWdzKTsKKyAgICAgICAgICAgIGlmIChmb3JtYXRzLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPSBmb3JtYXRzWzBdOworICAgICAgICAgICAg
ICAgIGF0dCA9IGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLm1ha2VBdHRhY2htZW50KHRoaXMubV9w
YXJhbXMuZGVwdGhLaW5kLCBmb3JtYXQsIDY0LCA2NCwgYnVpbGRlciwgZ2wpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuZ2xBdHRhY2goZ2wuREVQVEhfQVRUQUNITUVOVCwgYXR0KTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmdsQXR0YWNoKGdsLlNURU5DSUxfQVRUQUNITUVOVCwgYXR0KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgLy8gRWl0aGVyIHRoZSBraW5kcyB3ZXJlIHNlcGFyYXRlLCBvciBhIHN1aXRhYmxlIGZvcm1h
dCB3YXMgbm90IGZvdW5kLgorICAgICAgICAvLyBDcmVhdGUgc2VwYXJhdGUgaW1hZ2VzLgorICAg
ICAgICB0aGlzLmF0dGFjaFRhcmdldFRvTmV3KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgdGhpcy5t
X3BhcmFtcy5zdGVuY2lsS2luZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNG
Ym9VdGlsLkltYWdlRm9ybWF0Lm5vbmUoKSwgNjQsIDY0LCBidWlsZGVyLCBnbCk7CisgICAgICAg
IHRoaXMuYXR0YWNoVGFyZ2V0VG9OZXcoZ2wuREVQVEhfQVRUQUNITUVOVCwgdGhpcy5tX3BhcmFt
cy5kZXB0aEtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRpbC5J
bWFnZUZvcm1hdC5ub25lKCksIDY0LCA2NCwgYnVpbGRlciwgZ2wpOworICAgIH07CisKKyAgICBn
bHNGYm9Db21wbGV0ZW5lc3NUZXN0cy5BdHRhY2htZW50VGVzdC5wcm90b3R5cGUuYnVpbGQgPSBm
dW5jdGlvbihidWlsZGVyLCBnbCkgeworCisgICAgICAgIHRoaXMuYXR0YWNoVGFyZ2V0VG9OZXco
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIHRoaXMubV9wYXJhbXMuY29sb3IwS2luZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbHNGYm9VdGlsLkltYWdlRm9ybWF0Lm5vbmUoKSwgNjQs
IDY0LCBidWlsZGVyLCBnbCk7CisKKyAgICAgICAgaWYgKHRoaXMubV9wYXJhbXMuY29sb3JuS2lu
ZCAhPSBnbC5OT05FKSB7CisgICAgICAgICAgICBpZiAodGhpcy5tX2N0eC5oYXZlTXVsdGlDb2xv
ckF0dHMoKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpcGxlIGF0dGFj
aG1lbnRzIG5vdCBzdXBwb3J0ZWQnKTsKKyAgICAgICAgICAgIHZhciBtYXhBdHRhY2htZW50cyA9
IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfQ09MT1JfQVRUQUNITUVOVFMpOworCisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IG1heEF0dGFjaG1lbnRzOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLmF0dGFjaFRhcmdldFRvTmV3KGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgaSwgdGhp
cy5tX3BhcmFtcy5jb2xvcm5LaW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdC5ub25lKCksIDY0LCA2NCwgYnVpbGRlciwgZ2wp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tYWtlRGVwdGhBbmRT
dGVuY2lsKGJ1aWxkZXIsIGdsKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBleHRlbmRzIHtnbHNGYm9Db21wbGV0
ZW5lc3NUZXN0cy5UZXN0QmFzZX0KKyAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzYworICAgICogQHBhcmFtIHtnbHNGYm9Db21wbGV0ZW5lc3NUZXN0
cy5Db250ZXh0fSBjdHgKKyAgICAqLworICAgIGdsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLkVtcHR5
SW1hZ2VUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzYywgY3R4KSB7CisgICAgICAgIGdsc0Zib0Nv
bXBsZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLmNhbGwodGhpcywgbmFtZSwgZGVzYywgbnVsbCk7Cisg
ICAgICAgIHRoaXMubV9jdHggPSBjdHg7CisgICAgfTsKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5FbXB0eUltYWdlVGVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0Zib0NvbXBs
ZXRlbmVzc1Rlc3RzLlRlc3RCYXNlLnByb3RvdHlwZSk7CisgICAgZ2xzRmJvQ29tcGxldGVuZXNz
VGVzdHMuRW1wdHlJbWFnZVRlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzRmJvQ29tcGxl
dGVuZXNzVGVzdHMuRW1wdHlJbWFnZVRlc3Q7CisKKyAgICBnbHNGYm9Db21wbGV0ZW5lc3NUZXN0
cy5FbXB0eUltYWdlVGVzdC5wcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbihidWlsZGVyLCBnbCkg
eworICAgICAgICB0aGlzLmF0dGFjaFRhcmdldFRvTmV3KGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzRmJvVXRp
bC5JbWFnZUZvcm1hdC5ub25lKCksIDAsIDAsIGJ1aWxkZXIsIGdsKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0Zib1V0aWwuanMg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVs
ZXMvc2hhcmVkL2dsc0Zib1V0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkMDU4OTFmMmU0OTRhNjVmYWZk
NGY5OTMzOTMyY2I1Y2I0NjNhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzRmJvVXRp
bC5qcwpAQCAtMCwwICsxLDE0MTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1l
bnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAx
NCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7Citnb29nLnByb3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc0Zib1V0aWwnKTsKK2dvb2cucmVx
dWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsub3BlbmdsLmdsdVN0clV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsK
KworICAgIHZhciBnbHNGYm9VdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzRmJvVXRpbDsKKyAgICB2
YXIgZ2x1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmVVdGlsOworICAg
IHZhciBnbHVTdHJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTdHJVdGlsOworICAgIHZhciBE
RV9BU1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworICAgIH07CisKKyAgICAvKioKKyAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICogQHRlbXBsYXRlIEtleVQKKyAgICAqIEB0ZW1wbGF0ZSBWYWx1
ZVQKKyAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oIUtleVQsICFLZXlUKTpib29sZWFufSBjb21wYXJl
Zm5jCisgICAgKi8KKyAgICBnbHNGYm9VdGlsLk1hcCA9IGZ1bmN0aW9uKGNvbXBhcmVmbmMpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx7Zmlyc3Q6ICFLZXlULCBzZWNvbmQ6IFZhbHVlVH0+
fSAqLworICAgICAgICB0aGlzLnN0b3JlID0gW107CisgICAgICAgIHRoaXMuY29tcGFyZSA9IGNv
bXBhcmVmbmM7CisgICAgICAgIHRoaXMubGVuZ3RoID0gMDsKKyAgICB9OworCisgICAgLyoqCisg
ICAgKiBAcGFyYW0ge251bWJlcn0gbnVtMQorICAgICogQHBhcmFtIHtudW1iZXJ9IG51bTIKKyAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLk1hcC5jb21wYXJl
TnVtYmVyID0gZnVuY3Rpb24obnVtMSwgbnVtMikgeworICAgICAgICByZXR1cm4gbnVtMSA8IG51
bTI7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHshS2V5VH0ga2V5CisgICAgKiBA
cGFyYW0ge1ZhbHVlVH0gdmFsdWUKKyAgICAqIEByZXR1cm4ge3tmaXJzdDogIUtleVQsIHNlY29u
ZDogVmFsdWVUfX0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuTWFwLnByb3RvdHlwZS5wYWlyID0g
ZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgZmly
c3Q6IGtleSwKKyAgICAgICAgICAgIHNlY29uZDogdmFsdWUKKyAgICAgICAgfTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBAcHJvdGVjdGVkCisgICAgKiBAcGFyYW0geyFLZXlUfSBrZXkKKyAg
ICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuTWFwLnByb3RvdHlw
ZS5maW5kSW5zZXJ0aW9uUG9pbnQgPSBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIC8qKiBA
dHlwZSB7bnVtYmVyfSAqL2ksIC8qKiBAdHlwZSB7bnVtYmVyfSAqL2xlbmd0aDsKKyAgICAgICAg
Zm9yIChpID0gMCwgbGVuZ3RoID0gdGhpcy5zdG9yZS5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBhcmUoa2V5LCB0aGlzLnN0b3JlW2ldLmZpcnN0
KSkgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGk7CisgICAgfTsKKworICAgIC8q
KgorICAgICogaW5kZXggc2hvdWxkIGJlIGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBmaW5kSW5zZXJ0
aW9uUG9pbnQuCisgICAgKiByZXR1cm5zIHRydWUgaWYgdGhlIGNvbXBhcmUgZnVuY3Rpb24gcmV0
dXJucyBmYWxzZSByZWZsZXhpdmVseQorICAgICogKGkuZS4gbm8gbWF0dGVyIHRoZSBvcmRlciBp
biB3aGljaCB0aGUga2V5cyBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cykuCisgICAgKiBAcHJvdGVj
dGVkCisgICAgKiBAcGFyYW0geyFLZXlUfSBrZXkKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eAorICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuTWFwLnBy
b3RvdHlwZS5mb3VuZEluZGV4TWF0Y2hlcyA9IGZ1bmN0aW9uKGtleSwgaW5kZXgpIHsKKyAgICAg
ICAgcmV0dXJuICgKKyAgICAgICAgICAgIHRoaXMuc3RvcmVbaW5kZXhdICE9PSB1bmRlZmluZWQg
JiYKKyAgICAgICAgICAgICF0aGlzLmNvbXBhcmUodGhpcy5zdG9yZVtpbmRleF0uZmlyc3QsIGtl
eSkKKyAgICAgICAgKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0geyFLZXlUfSBr
ZXkKKyAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLk1hcC5w
cm90b3R5cGUuaXNzZXQgPSBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZm91
bmRJbmRleE1hdGNoZXMoa2V5LCB0aGlzLmZpbmRJbnNlcnRpb25Qb2ludChrZXkpKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgKiBAcGFyYW0geyFLZXlUfSBrZXkKKyAgICAqIEBwYXJhbSB7VmFs
dWVUfSB2YWx1ZQorICAgICovCisgICAgZ2xzRmJvVXRpbC5NYXAucHJvdG90eXBlLnNldCA9IGZ1
bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5maW5kSW5zZXJ0
aW9uUG9pbnQoa2V5KTsKKyAgICAgICAgaWYgKHRoaXMuZm91bmRJbmRleE1hdGNoZXMoa2V5LCBp
bmRleCkpIHsKKyAgICAgICAgICAgIHRoaXMuc3RvcmVbaW5kZXhdLnNlY29uZCA9IHZhbHVlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5zdG9yZS5zcGxpY2UoaW5kZXgsIDAs
IHRoaXMucGFpcihrZXksIHZhbHVlKSk7CisgICAgICAgICAgICArK3RoaXMubGVuZ3RoOworICAg
ICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHshS2V5VH0ga2V5CisgICAg
KiBAcmV0dXJuIHs/VmFsdWVUfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5NYXAucHJvdG90eXBl
LnJlbW92ZSA9IGZ1bmN0aW9uKGtleSkgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmZpbmRJ
bnNlcnRpb25Qb2ludChrZXkpOworICAgICAgICAvKiogQHR5cGUgez9WYWx1ZVR9ICovIHZhciBy
ZXQgPSBudWxsOworICAgICAgICBpZiAodGhpcy5mb3VuZEluZGV4TWF0Y2hlcyhrZXksIGluZGV4
KSkgeworICAgICAgICAgICAgcmV0ID0gdGhpcy5zdG9yZVtpbmRleF0uc2Vjb25kOworICAgICAg
ICAgICAgdGhpcy5zdG9yZS5zcGxpY2UoaW5kZXgsIDEpOworICAgICAgICAgICAgLS10aGlzLmxl
bmd0aDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH07CisKKyAgICAvKioK
KyAgICAqIEBwYXJhbSB7S2V5VH0ga2V5CisgICAgKiBAcmV0dXJuIHs/e2ZpcnN0OiBLZXlULCBz
ZWNvbmQ6IFZhbHVlVH19CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLk1hcC5wcm90b3R5cGUuZ2V0
ID0gZnVuY3Rpb24oa2V5KSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZmluZEluc2VydGlv
blBvaW50KGtleSk7CisgICAgICAgIGlmICh0aGlzLmZvdW5kSW5kZXhNYXRjaGVzKGtleSwgaW5k
ZXgpKSByZXR1cm4gdGhpcy5zdG9yZVtpbmRleF07CisgICAgICAgIHJldHVybiBudWxsOworICAg
IH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7S2V5VH0ga2V5CisgICAgKiBAcmV0dXJuIHs/
VmFsdWVUfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5NYXAucHJvdG90eXBlLmdldFZhbHVlID0g
ZnVuY3Rpb24oa2V5KSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZmluZEluc2VydGlvblBv
aW50KGtleSk7CisgICAgICAgIGlmICh0aGlzLmZvdW5kSW5kZXhNYXRjaGVzKGtleSwgaW5kZXgp
KSByZXR1cm4gdGhpcy5zdG9yZVtpbmRleF0uc2Vjb25kOworICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0geyFLZXlUfSBrZXkKKyAgICAqIEBwYXJh
bSB7VmFsdWVUfSBmYWxsYmFjaworICAgICogQHJldHVybiB7VmFsdWVUfQorICAgICovCisgICAg
Z2xzRmJvVXRpbC5NYXAucHJvdG90eXBlLmxvb2t1cERlZmF1bHQgPSBmdW5jdGlvbihrZXksIGZh
bGxiYWNrKSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZmluZEluc2VydGlvblBvaW50KGtl
eSk7CisgICAgICAgIGlmICh0aGlzLmZvdW5kSW5kZXhNYXRjaGVzKGtleSwgaW5kZXgpKSByZXR1
cm4gdGhpcy5zdG9yZVtpbmRleF0uc2Vjb25kOworICAgICAgICByZXR1cm4gZmFsbGJhY2s7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgKiBAcmV0
dXJuIHt7Zmlyc3Q6IEtleVQsIHNlY29uZDogVmFsdWVUfXx1bmRlZmluZWR9CisgICAgKi8KKyAg
ICBnbHNGYm9VdGlsLk1hcC5wcm90b3R5cGUuZ2V0SW5kZXggPSBmdW5jdGlvbihpbmRleCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVtpbmRleF07CisgICAgfTsKKworICAgIC8qKgorICAg
ICogVXNlIHRoZSBjYWxsYmFjayB0byBzZXQgdGhlIHZhbHVlIHRvIGJlIGlkZW50aWZpZWQgYnkg
a2V5LgorICAgICogSWYgYSB2YWx1ZSBpcyBhbHJlYWR5IGlkZW50aWZpZWQgYnkgdGhlIGtleSwg
aXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrCisgICAgKiBAcGFyYW0geyFLZXlUfSBr
ZXkKKyAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oVmFsdWVUPSk6IVZhbHVlVH0gY2FsbGJhY2sKKyAg
ICAqLworICAgIGdsc0Zib1V0aWwuTWFwLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbihr
ZXksIGNhbGxiYWNrKSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZmluZEluc2VydGlvblBv
aW50KGtleSk7CisgICAgICAgIGlmICh0aGlzLmZvdW5kSW5kZXhNYXRjaGVzKGtleSwgaW5kZXgp
KSB7CisgICAgICAgICAgICB0aGlzLnN0b3JlW2luZGV4XS5zZWNvbmQgPSBjYWxsYmFjayh0aGlz
LnN0b3JlW2luZGV4XS5zZWNvbmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp
cy5zdG9yZS5zcGxpY2UoaW5kZXgsIDAsIHRoaXMucGFpcihrZXksIGNhbGxiYWNrKCkpKTsKKyAg
ICAgICAgICAgICsrdGhpcy5sZW5ndGg7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisg
ICAgKiByZW1vdmVkIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBNYXAKKyAgICAqLworICAgIGdsc0Zi
b1V0aWwuTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnN0
b3JlLnNwbGljZSgwLCB0aGlzLmxlbmd0aCk7CisgICAgICAgIHRoaXMubGVuZ3RoID0gMDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqLworICAgIGdsc0Zib1V0
aWwuRm9ybWF0REIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX21hcCA9IC8qKiBAdHlw
ZSB7Z2xzRmJvVXRpbC5NYXA8Z2xzRmJvVXRpbC5JbWFnZUZvcm1hdCxudW1iZXI+fSAqLygKKyAg
ICAgICAgICAgIG5ldyBnbHNGYm9VdGlsLk1hcChnbHNGYm9VdGlsLkltYWdlRm9ybWF0Lmxlc3N0
aGFuKQorICAgICAgICApOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7Z2xzRmJv
VXRpbC5JbWFnZUZvcm1hdH0gZm9ybWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3RmxhZ3MK
KyAgICAqLworICAgIGdsc0Zib1V0aWwuRm9ybWF0REIucHJvdG90eXBlLmFkZEZvcm1hdCA9IGZ1
bmN0aW9uKGZvcm1hdCwgbmV3RmxhZ3MpIHsKKyAgICAgICAgdGhpcy5tX21hcC50cmFuc2Zvcm0o
Zm9ybWF0LCBmdW5jdGlvbihmbGFncykgeworICAgICAgICAgICAgcmV0dXJuIGZsYWdzIHwgbmV3
RmxhZ3M7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVt
YmVyfSByZXF1aXJlbWVudHMKKyAgICAqIEByZXR1cm4ge0FycmF5PGdsc0Zib1V0aWwuSW1hZ2VG
b3JtYXQ+fQorICAgICovCisgICAgZ2xzRmJvVXRpbC5Gb3JtYXREQi5wcm90b3R5cGUuZ2V0Rm9y
bWF0cyA9IGZ1bmN0aW9uKHJlcXVpcmVtZW50cykgeworICAgICAgICAvKiogQHR5cGUge0FycmF5
PGdsc0Zib1V0aWwuSW1hZ2VGb3JtYXQ+fSAqLyB2YXIgcmV0ID0gW107CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5tX21hcC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IHBhaXIgPSB0aGlzLm1fbWFwLmdldEluZGV4KGkpOworICAgICAgICAgICAgaWYgKChwYWlyLnNl
Y29uZCAmIHJlcXVpcmVtZW50cykgPT0gcmVxdWlyZW1lbnRzKQorICAgICAgICAgICAgcmV0LnB1
c2gocGFpci5maXJzdCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmV0OworICAgIH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0gZm9ybWF0
CisgICAgKiBAcGFyYW0ge251bWJlcn0gZmFsbGJhY2sKKyAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAqLworICAgIGdsc0Zib1V0aWwuRm9ybWF0REIucHJvdG90eXBlLmdldEZvcm1hdEluZm8g
PSBmdW5jdGlvbihmb3JtYXQsIGZhbGxiYWNrKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fbWFw
Lmxvb2t1cERlZmF1bHQoZm9ybWF0LCBmYWxsYmFjayk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHBhcmFtIHtPYmplY3R9IG1hcAorICAgICogQHBhcmFtIHtudW1iZXJ9IGtleQorICAgICog
QHBhcmFtIHtudW1iZXJ9IGZhbGxiYWNrCisgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgKi8K
KyAgICBnbHNGYm9VdGlsLmxvb2t1cERlZmF1bHQgPSBmdW5jdGlvbihtYXAsIGtleSwgZmFsbGJh
Y2spIHsKKyAgICAgICAgcmV0dXJuIChtYXBba2V5XSAhPT0gdW5kZWZpbmVkKSA/IG1hcFtrZXld
IDogZmFsbGJhY2s7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBhcnJheQorICAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW0KKyAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLmNvbnRhaW5zID0gZnVuY3Rpb24oYXJyYXks
IGl0ZW0pIHsKKyAgICAgICAgdmFyIGwgPSBhcnJheS5sZW5ndGg7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbDsgKytpKQorICAgICAgICAgICAgaWYgKGFycmF5W2ldID09IGl0ZW0pIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAg
ICogQHR5cGVkZWYge0FycmF5PChudW1iZXIgfCBnbHNGYm9VdGlsLlJhbmdlPG51bWJlcj4pPn0K
KyAgICAqLworICAgIGdsc0Zib1V0aWwuZm9ybWF0VDsKKworICAgIC8qKgorICAgICogQHBhcmFt
IHtnbHNGYm9VdGlsLkZvcm1hdERCfSBkYgorICAgICogQHBhcmFtIHtnbHNGYm9VdGlsLlJhbmdl
PGdsc0Zib1V0aWwuZm9ybWF0VD59IHN0ZEZtdHMKKyAgICAqLworICAgIGdsc0Zib1V0aWwuYWRk
Rm9ybWF0cyA9IGZ1bmN0aW9uKGRiLCBzdGRGbXRzKSB7CisgICAgICAgIGZvciAodmFyIHNldCA9
IHN0ZEZtdHMucmVzZXQoKTsgc2V0ID0gc3RkRm10cy5jdXJyZW50KCk7IHN0ZEZtdHMubmV4dCgp
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBmbXQgPSBzZXRbMV0ucmVzZXQoKTsgZm10ID0gc2V0
WzFdLmN1cnJlbnQoKTsgc2V0WzFdLm5leHQoKSkgeworICAgICAgICAgICAgICAgIGRiLmFkZEZv
cm1hdChnbHNGYm9VdGlsLmZvcm1hdEtleUluZm8oZm10KSwgc2V0WzBdKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRp
bC5Gb3JtYXREQn0gZGIKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5SYW5nZX0gZXh0Rm10cwor
ICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAqIEB0aHJv
d3Mge0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5hZGRFeHRGb3JtYXRzID0gZnVuY3Rp
b24oZGIsIGV4dEZtdHMsIGdsKSB7CisgICAgICAgIGlmICghKGdsID0gZ2wgfHwgd2luZG93Lmds
KSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdsIG9iamVjdCcpOworICAgICAgICB2YXIgZXh0
ZW5zaW9ucyA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKworICAgICAgICAvLyBsb29w
IHRocm91Z2ggdGhlIHJhbmdlLCBsb29raW5nIGF0IHRoZSBleHRlbnRpb25zLgorICAgICAgICBm
b3IgKHZhciBleHQgPSBleHRGbXRzLnJlc2V0KCk7IGV4dCA9IGV4dEZtdHMuY3VycmVudCgpOyBl
eHRGbXRzLm5leHQoKSkgeworICAgICAgICAgICAgdmFyIHRva2VucyA9IGV4dC5leHRlbnNpb25z
LnNwbGl0KC9ccysvKTsKKworICAgICAgICAgICAgdmFyIHN1cHBvcnRlZCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdG9rZW5zLmxlbmd0aDsgaSA8
IGw7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMuaW5kZXhPZih0b2tl
bnNbaV0pID09PSAtMSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBpZiAoc3VwcG9ydGVkKSB7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgZm9ybWF0ID0gZXh0LmZvcm1hdHMucmVzZXQoKTsgZm9ybWF0
ID0gZXh0LmZvcm1hdHMuY3VycmVudCgpOyBleHQuZm9ybWF0cy5uZXh0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGIuYWRkRm9ybWF0KGdsc0Zib1V0aWwuZm9ybWF0S2V5SW5mbyhmb3JtYXQp
LCBleHQuZmxhZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICB9CisKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge251bWJlcn0gZ2xlbnVtCisg
ICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U9fSBnbAorICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICogQHRocm93cyB7RXJyb3J9CisgICAgKi8KKyAgICBnbHNGYm9VdGls
LmZvcm1hdEZsYWcgPSBmdW5jdGlvbihnbGVudW0sIGdsKSB7CisgICAgICAgIGlmICghKGdsID0g
Z2wgfHwgd2luZG93LmdsKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdsIG9iamVjdCcpOwor
CisgICAgICAgIHN3aXRjaCAoZ2xlbnVtKSB7CisgICAgICAgICBjYXNlIGdsLk5PTkU6CisgICAg
ICAgICAgICByZXR1cm4gZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5BTllfRk9STUFUOworICAgICAg
ICAgY2FzZSBnbC5SRU5ERVJCVUZGRVI6CisgICAgICAgICAgICByZXR1cm4gZ2xzRmJvVXRpbC5G
b3JtYXRGbGFncy5SRU5ERVJCVUZGRVJfVkFMSUQ7CisgICAgICAgICBjYXNlIGdsLlRFWFRVUkU6
CisgICAgICAgICAgICByZXR1cm4gZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5URVhUVVJFX1ZBTElE
OworICAgICAgICAgY2FzZSBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICByZXR1
cm4gZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5TVEVOQ0lMX1JFTkRFUkFCTEU7CisgICAgICAgICBj
YXNlIGdsLkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICByZXR1cm4gZ2xzRmJvVXRpbC5G
b3JtYXRGbGFncy5ERVBUSF9SRU5ERVJBQkxFOworICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGlmIChnbGVudW0gPCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCB8fCBnbGVudW0gPiBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMTUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsZW51
bSBvdXQgb2YgcmFuZ2UnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncy5DT0xPUl9SRU5ERVJBQkxFOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIFJlbW92ZSB2YWx1ZSBmcm9tIGFycmF5CisgICAgKiBAcGFyYW0ge0FycmF5
fSBhcnJheQorICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlCisgICAgKi8KKyAgICBnbHNGYm9V
dGlsLnJlbW92ZV9mcm9tX2FycmF5ID0gZnVuY3Rpb24oYXJyYXksIHZhbHVlKSB7CisgICAgICAg
IHZhciBpbmRleCA9IDA7CisgICAgICAgIHdoaWxlICgoaW5kZXggPSBhcnJheS5pbmRleE9mKHZh
bHVlKSkgIT0gLTEpIHsKKyAgICAgICAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2xzRmJvVXRpbC5Gb3JtYXRFeHRFbnRy
eQorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAcGFyYW0ge3N0
cmluZz19IGV4dGVuc2lvbnMKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGZsYWdzCisgICAgICog
QHBhcmFtIHtnbHNGYm9VdGlsLlJhbmdlPX0gZm9ybWF0cworICAgICAqLworICAgIGdsc0Zib1V0
aWwuRm9ybWF0RXh0RW50cnkgPSBmdW5jdGlvbihleHRlbnNpb25zLCBmbGFncywgZm9ybWF0cykg
eworICAgICAgICB0aGlzLmV4dGVuc2lvbnMgPSBudWxsOworICAgICAgICB0aGlzLmZsYWdzID0g
bnVsbDsKKyAgICAgICAgdGhpcy5mb3JtYXRzID0gbnVsbDsKKworICAgICAgICBpZiAoZXh0ZW5z
aW9ucyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICB0aGlzLmV4dGVuc2lvbnMgPSBleHRl
bnNpb25zOworICAgICAgICAgICAgaWYgKGZsYWdzICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLmZsYWdzID0gZmxhZ3M7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHMg
IT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRzID0gZm9ybWF0
czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfTsKKworICAgIC8qKgorICAgICAq
IGdsc0Zib1V0aWwuUmFuZ2UKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAc3RydWN0Cisg
ICAgICogQHRlbXBsYXRlIFQKKyAgICAgKiBAcGFyYW0ge0FycmF5PFQ+fSBhcnJheQorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZAorICAg
ICAqLworICAgIGdsc0Zib1V0aWwuUmFuZ2UgPSBmdW5jdGlvbihhcnJheSwgYmVnaW4sIGVuZCkg
eworICAgICAgICAvLyBAcHJpdmF0ZQorICAgICAgICB0aGlzLm1fYmVnaW4gPSAoYmVnaW4gPT09
IHVuZGVmaW5lZCA/IDAgOiBiZWdpbik7CisgICAgICAgIC8vIEBwcml2YXRlCisgICAgICAgIHRo
aXMubV9lbmQgPSBlbmQgfHwgYXJyYXkubGVuZ3RoOworICAgICAgICAvKioKKyAgICAgICAgKiBA
cHJpdmF0ZQorICAgICAgICAqIEB0eXBlIHtBcnJheTxUPn0KKyAgICAgICAgKi8KKyAgICAgICAg
dGhpcy5tX2FycmF5ID0gYXJyYXk7CisgICAgICAgIC8vIEBwcml2YXRlCisgICAgICAgIHRoaXMu
bV9pbmRleCA9IHRoaXMubV9iZWdpbjsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJu
IHtBcnJheTxUPn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuUmFuZ2UucHJvdG90eXBlLmFycmF5
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fYXJyYXk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5S
YW5nZS5wcm90b3R5cGUuYmVnaW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
bV9iZWdpbjsKKyAgICB9OworCisgICAgLyoqICAqZ2VuZXJhdGVkIGJ5IHNjcmlwdCoKKyAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuUmFuZ2UucHJvdG90eXBl
LmVuZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2VuZDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHBvaW50ZXIgaW5kZXggYXMgd2Vs
bCBhcyB0aGUgY3VycmVudCBvYmplY3QKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZAorICAgICog
QHJldHVybiB7e2ZpcnN0OiBudW1iZXIsIHNlY29uZDogVH19CisgICAgKi8KKyAgICBnbHNGYm9V
dGlsLlJhbmdlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihpZCkgeworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgZmlyc3Q6IGlkLAorICAgICAgICAgICAgc2Vjb25kOiB0aGlzLm1fYXJy
YXlbaWRdCisgICAgICAgIH07CisgICAgfTsKKworICAgIC8qKgorICAgICogU2V0cyB0aGUgaW50
ZXJuYWwgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSByYW5nZSwgYW5kIHJldHVybnMg
dGhlIGZpcnN0IG9iamVjdC4KKyAgICAqIEByZXR1cm4ge1R9CisgICAgKi8KKyAgICBnbHNGYm9V
dGlsLlJhbmdlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLm1f
aW5kZXggPSB0aGlzLm1fYmVnaW47CisgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQoKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiByZXR1cm5zIHRoZSBjdXJyZW50IG9iamVjdCB3aXRoaW4g
dGhlIHNwZWNpZmllZCByYW5nZS4gVGhlIGludGVybmFsIHBvaW50ZXIgaXMgdW5hbHRlcmVkLgor
ICAgICogQHJldHVybiB7VH0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuUmFuZ2UucHJvdG90eXBl
LmN1cnJlbnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9pbmRleCA8IHRo
aXMubV9lbmQgPyB0aGlzLm1fYXJyYXlbdGhpcy5tX2luZGV4XSA6IG51bGw7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICogSW5jcmVtZW50cyB0aGUgaW50ZXJuYWwgcG9pbnRlcgorICAgICovCisg
ICAgZ2xzRmJvVXRpbC5SYW5nZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICArK3RoaXMubV9pbmRleDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2xzRmJvVXRpbC5y
YW5nZUFycmF5CisgICAgICogcmVwbGFjZXMgdGhlIG1hY3JvIEdMU19BUlJBWV9SQU5HRQorICAg
ICAqIENyZWF0ZXMgYSBuZXcgUmFuZ2Ugb2JqZWN0IGZyb20gdGhlIHNwZWNpZmllZCBhcnJheSwg
c3Bhbm5pbmcgdGhlIHdob2xlIGFycmF5LgorICAgICAqIEB0ZW1wbGF0ZSBUCisgICAgICogQHBh
cmFtIHtBcnJheTxUPn0gYXJyYXkKKyAgICAgKiBAcmV0dXJuIHtnbHNGYm9VdGlsLlJhbmdlPFQ+
fQorICAgICAqLworICAgIGdsc0Zib1V0aWwucmFuZ2VBcnJheSA9IGZ1bmN0aW9uKGFycmF5KSB7
CisgICAgICAgIHJldHVybiBuZXcgZ2xzRmJvVXRpbC5SYW5nZShhcnJheSk7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAc3RydWN0CisgICAgKiBAcGFyYW0g
e251bWJlcj19IGZvcm1hdAorICAgICogQHBhcmFtIHtudW1iZXI9fSB1bnNpemVkVHlwZQorICAg
ICovCisgICAgZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCwgdW5zaXpl
ZFR5cGUpIHsKKyAgICAgICAgdGhpcy5mb3JtYXQgPSBmb3JtYXQgfHwgMDsKKyAgICAgICAgLy8h
IFR5cGUgaWYgZm9ybWF0IGlzIHVuc2l6ZWQsIGdsLk5PTkUgaWYgc2l6ZWQuCisgICAgICAgIHRo
aXMudW5zaXplZFR5cGUgPSB1bnNpemVkVHlwZSB8fCAwOworCisgICAgfTsKKworICAgIC8qKgor
ICAgICogQHBhcmFtIHshZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0gb2JqMQorICAgICogQHBhcmFt
IHshZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0gb2JqMgorICAgICogQHJldHVybiB7Ym9vbGVhbn0K
KyAgICAqLworICAgIGdsc0Zib1V0aWwuSW1hZ2VGb3JtYXQubGVzc3RoYW4gPSBmdW5jdGlvbihv
YmoxLCBvYmoyKSB7CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAob2JqMS5mb3JtYXQg
PCBvYmoyLmZvcm1hdCkgfHwKKyAgICAgICAgICAgIChvYmoxLmZvcm1hdCA9PSBvYmoyLmZvcm1h
dCAmJiBvYmoxLnVuc2l6ZWRUeXBlIDwgb2JqMi51bnNpemVkVHlwZSkKKyAgICAgICAgKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgKiBTZXRzIHRoZSBvYmplY3QncyBwYXJhbWV0ZXJzIHRvIGds
Lk5PTkUKKyAgICAqLworICAgIGdsc0Zib1V0aWwuSW1hZ2VGb3JtYXQucHJvdG90eXBlLm5vbmUg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5mb3JtYXQgPSAwOworICAgICAgICB0aGlzLnVu
c2l6ZWRUeXBlID0gMDsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuIHtnbHNGYm9V
dGlsLkltYWdlRm9ybWF0fQorICAgICovCisgICAgZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdC5ub25l
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBvYmogPSBuZXcgZ2xzRmJvVXRpbC5JbWFnZUZv
cm1hdCgpOworICAgICAgICBvYmoubm9uZSgpOworICAgICAgICByZXR1cm4gb2JqOworICAgIH07
CisKKyAgICAvLyB3aGVyZSBrZXkgaXMgYSBGb3JtYXRLZXksIGFuZCBhIEZvcm1hdEtleSBpcyBh
IHVuc2lnbmVkIDMyYml0IGludC4KKworICAgIC8qKgorICAgICogQHBhcmFtIHtudW1iZXJ9IGtl
eQorICAgICogQHJldHVybiB7Z2xzRmJvVXRpbC5JbWFnZUZvcm1hdH0KKyAgICAqLworICAgIGds
c0Zib1V0aWwuZm9ybWF0S2V5SW5mbyA9IGZ1bmN0aW9uKGtleSkgeworICAgICAgICByZXR1cm4g
bmV3IGdsc0Zib1V0aWwuSW1hZ2VGb3JtYXQoCisgICAgICAgICAgICAoa2V5ICYgMHgwMDAwZmZm
ZiksCisgICAgICAgICAgICAoa2V5ICYgMHhmZmZmMDAwMCkgPj4+IDE2CisgICAgICAgICk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwuQ29uZmlnIENsYXNzLgorICAgICAq
IEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsc0Zib1V0aWwuQ29uZmlnID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHRoaXMudHlwZSA9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQ09ORklH
OworICAgICAgICB0aGlzLnRhcmdldCA9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdGFyZ2V0Lk5PTkU7
CisgICAgfTsKKyAgICAvKioKKyAgICAgKiBAZW51bSB7bnVtYmVyfQorICAgICAqLworICAgIGds
c0Zib1V0aWwuQ29uZmlnLnNfdGFyZ2V0ID0geworICAgICAgICBOT05FOiAwLAorICAgICAgICBS
RU5ERVJCVUZGRVI6IDB4OEQ0MSwKKyAgICAgICAgVEVYVFVSRV8yRDogMHgwREUxLAorICAgICAg
ICBURVhUVVJFX0NVQkVfTUFQOiAweDg1MTMsCisgICAgICAgIFRFWFRVUkVfM0Q6IDB4ODA2RiwK
KyAgICAgICAgVEVYVFVSRV8yRF9BUlJBWTogMHg4QzFBLAorCisgICAgICAgIEZSQU1FQlVGRkVS
OiAweDhENDAKKyAgICB9OworCisgICAgLy8gdGhlIGMrKyB1c2VzIGR5bmFtaWMgY2FzdHMgdG8g
ZGV0ZXJtYWluIGlmIGFuIG9iamVjdCBpbmhlcml0cyBmcm9tIGEKKyAgICAvLyBnaXZlbiBjbGFz
cy4gSGVyZSwgZWFjaCBjbGFzcycgY29uc3RydWN0b3IgYXNzaWducyBhIGJpdCB0byBvYmoudHlw
ZS4KKyAgICAvLyBsb29rIGZvciB0aGUgYml0IHRvIHNlZSBpZiBhbiBvYmplY3QgaW5oZXJpdHMg
dGhhdCBjbGFzcy4KKworICAgIC8qKgorICAgICogQGVudW0KKyAgICAqLworICAgIGdsc0Zib1V0
aWwuQ29uZmlnLnNfdHlwZXMgPSB7CisgICAgICAgIENPTkZJRzogMHgwMDAwMDEsCisKKyAgICAg
ICAgSU1BR0U6IDB4MDAwMDEwLAorICAgICAgICBSRU5ERVJCVUZGRVI6IDB4MDAwMDIwLAorICAg
ICAgICBURVhUVVJFOiAweDAwMDA0MCwKKyAgICAgICAgVEVYVFVSRV9GTEFUOiAweDAwMDA4MCwK
KyAgICAgICAgVEVYVFVSRV8yRDogMHgwMDAxMDAsCisgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVA6
IDB4MDAwMjAwLAorICAgICAgICBURVhUVVJFX0xBWUVSRUQ6IDB4MDAwNDAwLAorICAgICAgICBU
RVhUVVJFXzNEOiAweDAwMDgwMCwKKyAgICAgICAgVEVYVFVSRV8yRF9BUlJBWTogMHgwMDEwMDAs
CisKKyAgICAgICAgQVRUQUNITUVOVDogMHgwMTAwMDAsCisgICAgICAgIEFUVF9SRU5ERVJCVUZG
RVI6IDB4MDIwMDAwLAorICAgICAgICBBVFRfVEVYVFVSRTogMHgwNDAwMDAsCisgICAgICAgIEFU
VF9URVhUVVJFX0ZMQVQ6IDB4MDgwMDAwLAorICAgICAgICBBVFRfVEVYVFVSRV9MQVlFUjogMHgx
MDAwMDAsCisKKyAgICAgICAgVU5VU0VEOiAweEZGRTBFMDBFCisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIGdsc0Zib1V0aWwuSW1hZ2UgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0Zib1V0aWwuQ29uZmlnfQorICAgICAqLworICAgIGdsc0Zib1V0aWwu
SW1hZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzRmJvVXRpbC5Db25maWcuY2FsbCh0aGlz
KTsKKyAgICAgICAgdGhpcy50eXBlIHw9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuSU1BR0U7
CisgICAgICAgIHRoaXMud2lkdGggPSAwOworICAgICAgICB0aGlzLmhlaWdodCA9IDA7CisgICAg
ICAgIHRoaXMuaW50ZXJuYWxGb3JtYXQgPSBuZXcgZ2xzRmJvVXRpbC5JbWFnZUZvcm1hdCgpOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNGYm9VdGlsLlJlbmRlcmJ1ZmZlciBDbGFzcy4K
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzRmJvVXRpbC5JbWFnZX0K
KyAgICAgKi8KKyAgICBnbHNGYm9VdGlsLlJlbmRlcmJ1ZmZlciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBnbHNGYm9VdGlsLkltYWdlLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMudHlwZSB8PSBn
bHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlJFTkRFUkJVRkZFUjsKKyAgICAgICAgdGhpcy50YXJn
ZXQgPSBnbHNGYm9VdGlsLkNvbmZpZy5zX3RhcmdldC5SRU5ERVJCVUZGRVI7CisgICAgICAgIHRo
aXMubnVtU2FtcGxlcyA9IDA7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwu
VGV4dHVyZSBDbGFzcy4KKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xz
RmJvVXRpbC5JbWFnZX0KKyAgICAgKi8KKyAgICBnbHNGYm9VdGlsLlRleHR1cmUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgZ2xzRmJvVXRpbC5JbWFnZS5jYWxsKHRoaXMpOworICAgICAgICB0aGlz
LnR5cGUgfD0gZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFOworICAgICAgICB0aGlz
Lm51bUxldmVscyA9IDE7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwuVGV4
dHVyZUZsYXQgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2ds
c0Zib1V0aWwuVGV4dHVyZX0KKyAgICAgKi8KKyAgICBnbHNGYm9VdGlsLlRleHR1cmVGbGF0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0Zib1V0aWwuVGV4dHVyZS5jYWxsKHRoaXMpOworICAg
ICAgICB0aGlzLnR5cGUgfD0gZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFX0ZMQVQ7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwuVGV4dHVyZTJEIENsYXNzLgor
ICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLlRleHR1cmVG
bGF0fQorICAgICAqLworICAgIGdsc0Zib1V0aWwuVGV4dHVyZTJEID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdsc0Zib1V0aWwuVGV4dHVyZUZsYXQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy50
eXBlIHw9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuVEVYVFVSRV8yRDsKKyAgICAgICAgdGhp
cy50YXJnZXQgPSBnbHNGYm9VdGlsLkNvbmZpZy5zX3RhcmdldC5URVhUVVJFXzJEOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBnbHNGYm9VdGlsLlRleHR1cmVDdWJlTWFwIENsYXNzLgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLlRleHR1cmVGbGF0
fQorICAgICAqLworICAgIGdsc0Zib1V0aWwuVGV4dHVyZUN1YmVNYXAgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZ2xzRmJvVXRpbC5UZXh0dXJlRmxhdC5jYWxsKHRoaXMpOworICAgICAgICB0aGlz
LnR5cGUgfD0gZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFX0NVQkVfTUFQOworICAg
ICAgICB0aGlzLnRhcmdldCA9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdGFyZ2V0LlRFWFRVUkVfQ1VC
RV9NQVA7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwuVGV4dHVyZUxheWVy
ZWQgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc0Zib1V0
aWwuVGV4dHVyZX0KKyAgICAgKi8KKyAgICBnbHNGYm9VdGlsLlRleHR1cmVMYXllcmVkID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGdsc0Zib1V0aWwuVGV4dHVyZS5jYWxsKHRoaXMpOworICAgICAg
ICB0aGlzLnR5cGUgfD0gZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFX0xBWUVSRUQ7
CisgICAgICAgIHRoaXMubnVtTGF5ZXJzID0gMTsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
Z2xzRmJvVXRpbC5UZXh0dXJlM0QgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICog
QGV4dGVuZHMge2dsc0Zib1V0aWwuVGV4dHVyZUxheWVyZWR9CisgICAgICovCisgICAgZ2xzRmJv
VXRpbC5UZXh0dXJlM0QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzRmJvVXRpbC5UZXh0dXJl
TGF5ZXJlZC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLnR5cGUgfD0gZ2xzRmJvVXRpbC5Db25m
aWcuc190eXBlcy5URVhUVVJFXzNEOworICAgICAgICB0aGlzLnRhcmdldCA9IGdsc0Zib1V0aWwu
Q29uZmlnLnNfdGFyZ2V0LlRFWFRVUkVfM0Q7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGds
c0Zib1V0aWwuVGV4dHVyZTJEQXJyYXkgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0Zib1V0aWwuVGV4dHVyZUxheWVyZWR9CisgICAgICovCisgICAgZ2xz
RmJvVXRpbC5UZXh0dXJlMkRBcnJheSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBnbHNGYm9VdGls
LlRleHR1cmVMYXllcmVkLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMudHlwZSB8PSBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfMkRfQVJSQVk7CisgICAgICAgIHRoaXMudGFyZ2V0
ID0gZ2xzRmJvVXRpbC5Db25maWcuc190YXJnZXQuVEVYVFVSRV8yRF9BUlJBWTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogZ2xzRmJvVXRpbC5BdHRhY2htZW50IENsYXNzLgorICAgICAqIEBj
b25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLkNvbmZpZ30KKyAgICAgKi8K
KyAgICBnbHNGYm9VdGlsLkF0dGFjaG1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZ2xzRmJv
VXRpbC5Db25maWcuY2FsbCh0aGlzKTsKKworICAgICAgICB0aGlzLnR5cGUgfD0gZ2xzRmJvVXRp
bC5Db25maWcuc190eXBlcy5BVFRBQ0hNRU5UOworCisgICAgICAgIC8qKiBAdHlwZSB7Z2xzRmJv
VXRpbC5Db25maWcuc190YXJnZXR9ICovCisgICAgICAgIHRoaXMudGFyZ2V0ID0gZ2xzRmJvVXRp
bC5Db25maWcuc190YXJnZXQuRlJBTUVCVUZGRVI7CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TE9iamVjdH0gKi8KKyAgICAgICAgdGhpcy5pbWFnZU5hbWUgPSBudWxsOworICAgIH07CisKKyAg
ICAvKioKKyAgICAqIHRoaXMgZnVuY3Rpb24gaXMgZGVjbGFyZWQsIGJ1dCBoYXMgbm8gZGVmaW5p
dGlvbi9pcyB1bnVzZWQgaW4gdGhlIGMrKworICAgICogQHBhcmFtIHtudW1iZXJ9IGF0dFBvaW50
CisgICAgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2UKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSB2ZnIK
KyAgICAqLworICAgIGdsc0Zib1V0aWwuQXR0YWNobWVudC5wcm90b3R5cGUuaXNDb21wbGV0ZSA9
IGZ1bmN0aW9uKGF0dFBvaW50LCBpbWFnZSwgdmZyKSB7IH07CisKKyAgICAvKioKKyAgICAgKiBn
bHNGYm9VdGlsLlJlbmRlckJ1ZmZlckF0dGFjaG1lbnRzIENsYXNzLgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLkF0dGFjaG1lbnR9CisgICAgICovCisg
ICAgZ2xzRmJvVXRpbC5SZW5kZXJidWZmZXJBdHRhY2htZW50ID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGdsc0Zib1V0aWwuQXR0YWNobWVudC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLnR5cGUg
fD0gZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5BVFRfUkVOREVSQlVGRkVSOworICAgICAgICB0
aGlzLnJlbmRlcmJ1ZmZlclRhcmdldCA9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdGFyZ2V0LlJFTkRF
UkJVRkZFUjsKKyAgICB9OworICAgIGdsc0Zib1V0aWwuUmVuZGVyYnVmZmVyQXR0YWNobWVudC5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0Zib1V0aWwuQXR0YWNobWVudC5wcm90b3R5cGUp
OworICAgIGdsc0Zib1V0aWwuUmVuZGVyYnVmZmVyQXR0YWNobWVudC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBnbHNGYm9VdGlsLlJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ7CisKKyAgICAvKioKKyAg
ICAgKiBnbHNGYm9VdGlsLlRleHR1cmVBdHRhY2htZW50IENsYXNzLgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNGYm9VdGlsLkF0dGFjaG1lbnR9CisgICAgICovCisg
ICAgZ2xzRmJvVXRpbC5UZXh0dXJlQXR0YWNobWVudCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBn
bHNGYm9VdGlsLkF0dGFjaG1lbnQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy50eXBlIHw9IGds
c0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkU7CisgICAgICAgIHRoaXMubGV2ZWwg
PSAwOworICAgIH07CisgICAgZ2xzRmJvVXRpbC5UZXh0dXJlQXR0YWNobWVudC5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKGdsc0Zib1V0aWwuQXR0YWNobWVudC5wcm90b3R5cGUpOworICAgIGds
c0Zib1V0aWwuVGV4dHVyZUF0dGFjaG1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzRmJv
VXRpbC5UZXh0dXJlQXR0YWNobWVudDsKKworICAgIC8qKgorICAgICAqIGdsc0Zib1V0aWwuVGV4
dHVyZUZsYXRBdHRhY2htZW50IENsYXNzLgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBl
eHRlbmRzIHtnbHNGYm9VdGlsLlRleHR1cmVBdHRhY2htZW50fQorICAgICAqLworICAgIGdsc0Zi
b1V0aWwuVGV4dHVyZUZsYXRBdHRhY2htZW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsc0Zi
b1V0aWwuVGV4dHVyZUF0dGFjaG1lbnQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy50eXBlIHw9
IGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkVfRkxBVDsKKyAgICAgICAgdGhp
cy50ZXhUYXJnZXQgPSBnbHNGYm9VdGlsLkNvbmZpZy5zX3RhcmdldC5OT05FOworICAgIH07Cisg
ICAgZ2xzRmJvVXRpbC5UZXh0dXJlRmxhdEF0dGFjaG1lbnQucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShnbHNGYm9VdGlsLlRleHR1cmVBdHRhY2htZW50LnByb3RvdHlwZSk7CisgICAgZ2xzRmJv
VXRpbC5UZXh0dXJlRmxhdEF0dGFjaG1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzRmJv
VXRpbC5UZXh0dXJlRmxhdEF0dGFjaG1lbnQ7CisKKyAgICAvKioKKyAgICAgKiBnbHNGYm9VdGls
LlRleHR1cmVMYXllckF0dGFjaG1lbnQgQ2xhc3MuCisgICAgICogQGNvbnN0cnVjdG9yCisgICAg
ICogQGV4dGVuZHMge2dsc0Zib1V0aWwuVGV4dHVyZUF0dGFjaG1lbnR9CisgICAgICovCisgICAg
Z2xzRmJvVXRpbC5UZXh0dXJlTGF5ZXJBdHRhY2htZW50ID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGdsc0Zib1V0aWwuVGV4dHVyZUF0dGFjaG1lbnQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy50
eXBlIHw9IGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkVfTEFZRVI7CisgICAg
ICAgIHRoaXMubGF5ZXIgPSAwOworICAgIH07CisgICAgZ2xzRmJvVXRpbC5UZXh0dXJlTGF5ZXJB
dHRhY2htZW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZ2xzRmJvVXRpbC5UZXh0dXJlQXR0
YWNobWVudC5wcm90b3R5cGUpOworICAgIGdsc0Zib1V0aWwuVGV4dHVyZUxheWVyQXR0YWNobWVu
dC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNGYm9VdGlsLlRleHR1cmVMYXllckF0dGFjaG1l
bnQ7CisKKyAgICAvLyB0aGVzZSBhcmUgYSBjb2xsZWN0aW9uIG9mIGhlbHBlciBmdW5jdGlvbnMg
Zm9yIGNyZWF0aW5nIHZhcmlvdXMgZ2wgdGV4dHVyZXMuCisgICAgZ2xzRmJvVXRpbC5nbHN1cCA9
IGZ1bmN0aW9uKCkgeworCisgICAgICAgIHZhciBnbEluaXQgPSBmdW5jdGlvbihjZmcsIGdsKSB7
CisgICAgICAgICAgICBpZiAoKGNmZy50eXBlICYgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5U
RVhUVVJFXzJEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZ2xJbml0RmxhdChjZmcsIGdsVGFy
Z2V0KGNmZywgZ2wpLCBnbCk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNmZy50eXBlICYg
Z2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFX0NVQkVfTUFQKSAhPSAwKSB7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDsg
aSA8PSBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgZ2xJbml0RmxhdChjZmcsIGksIGdsKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNm
Zy50eXBlICYgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFXzNEKSAhPSAwKSB7Cisg
ICAgICAgICAgICAgICAgZ2xJbml0TGF5ZXJlZChjZmcsIDIsIGdsKTsKKworICAgICAgICAgICAg
fSBlbHNlIGlmICgoY2ZnLnR5cGUgJiBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVf
MkRfQVJSQVkpICE9IDApIHsKKyAgICAgICAgICAgICAgICBnbEluaXRMYXllcmVkKGNmZywgMSwg
Z2wpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHZhciBnbEluaXRGbGF0
ID0gZnVuY3Rpb24oY2ZnLCB0YXJnZXQsIGdsKSB7CisgICAgICAgICAgICB2YXIgZm9ybWF0ID0g
Z2xzRmJvVXRpbC50cmFuc2ZlckltYWdlRm9ybWF0KGNmZy5pbnRlcm5hbEZvcm1hdCwgZ2wpOwor
ICAgICAgICAgICAgdmFyIHcgPSBjZmcud2lkdGg7CisgICAgICAgICAgICB2YXIgaCA9IGNmZy5o
ZWlnaHQ7CisgICAgICAgICAgICBmb3IgKHZhciBsZXZlbCA9IDA7IGxldmVsIDwgY2ZnLm51bUxl
dmVsczsgKytsZXZlbCkgeworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQoCisgICAgICAg
ICAgICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGNmZy5pbnRlcm5hbEZvcm1hdC5mb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgIHcsIGgsIDAsIGZvcm1hdC5mb3JtYXQsIGZvcm1hdC5kYXRhVHlw
ZSwgbnVsbAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdyA9IE1hdGgubWF4
KDEsIHcgLyAyKTsKKyAgICAgICAgICAgICAgICBoID0gTWF0aC5tYXgoMSwgaCAvIDIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHZhciBnbEluaXRMYXllcmVkID0gZnVu
Y3Rpb24oY2ZnLCBkZXB0aF9kaXZpZGVyLCBnbCkgeworICAgICAgICAgICAgdmFyIGZvcm1hdCA9
IGdsc0Zib1V0aWwudHJhbnNmZXJJbWFnZUZvcm1hdChjZmcuaW50ZXJuYWxGb3JtYXQsIGdsKTsK
KyAgICAgICAgICAgIHZhciB3ID0gY2ZnLndpZHRoOworICAgICAgICAgICAgdmFyIGggPSBjZmcu
aGVpZ2h0OworICAgICAgICAgICAgdmFyIGRlcHRoID0gY2ZnLm51bUxheWVyczsKKyAgICAgICAg
ICAgIGZvciAodmFyIGxldmVsID0gMDsgbGV2ZWwgPCBjZmcubnVtTGV2ZWxzOyArK2xldmVsKSB7
CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRCgKKyAgICAgICAgICAgICAgICAgICAgZ2xU
YXJnZXQoY2ZnLCBnbCksIGxldmVsLCBjZmcuaW50ZXJuYWxGb3JtYXQuZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICB3LCBoLCBkZXB0aCwgMCwgZm9ybWF0LmZvcm1hdCwgZm9ybWF0LmRhdGFU
eXBlLCBudWxsCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB3ID0gTWF0aC5t
YXgoMSwgdyAvIDIpOworICAgICAgICAgICAgICAgIGggPSBNYXRoLm1heCgxLCBoIC8gMik7Cisg
ICAgICAgICAgICAgICAgZGVwdGggPSBNYXRoLm1heCgxLCBkZXB0aCAvIGRlcHRoX2RpdmlkZXIp
OworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHZhciBnbENyZWF0ZSA9IGZ1
bmN0aW9uKGNmZywgZ2wpIHsKKyAgICAgICAgICAgIGlmICghKGdsID0gZ2wgfHwgd2luZG93Lmds
KSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdsIG9iamVjdCcpOworCisgICAgICAgICAgICBp
ZiAoY2ZnLnR5cGUgJiBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlJFTkRFUkJVRkZFUikgewor
ICAgICAgICAgICAgICAgIHZhciByZXQgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAg
ICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmV0KTsKKwor
ICAgICAgICAgICAgICAgIGlmIChjZmcubnVtU2FtcGxlcyA9PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBn
bC5SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICBjZmcuaW50ZXJuYWxGb3Jt
YXQuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLndpZHRoLCBjZmcuaGVpZ2h0
CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgZ2wuUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2ZnLm51bVNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBjZmcuaW50ZXJuYWxG
b3JtYXQuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLndpZHRoLCBjZmcuaGVp
Z2h0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKworICAg
ICAgICAgICAgfSBlbHNlIGlmIChjZmcudHlwZSAmIGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMu
VEVYVFVSRSkgeworICAgICAgICAgICAgICAgIHZhciByZXQgPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2xUYXJnZXQoY2ZnLCBnbCksIHJldCk7
CisgICAgICAgICAgICAgICAgZ2xJbml0KGNmZywgZ2wpOworICAgICAgICAgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsVGFyZ2V0KGNmZywgZ2wpLCBudWxsKTsKKworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcG9zc2libGUgaW1hZ2UgdHlw
ZScpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsK
KworICAgICAgICB2YXIgZ2xUYXJnZXQgPSBmdW5jdGlvbihjZmcsIGdsKSB7CisgICAgICAgICAg
ICBpZiAoIShnbCA9IGdsIHx8IHdpbmRvdy5nbCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBn
bCBvYmplY3QnKTsKKyAgICAgICAgICAgIHZhciBtYXNrID0gKAorICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuUkVOREVSQlVGRkVSIHwKKyAgICAgICAgICAgICAgICBn
bHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfMkQgfAorICAgICAgICAgICAgICAgIGds
c0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuVEVYVFVSRV9DVUJFX01BUCB8CisgICAgICAgICAgICAg
ICAgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFXzNEIHwKKyAgICAgICAgICAgICAg
ICBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfMkRfQVJSQVkKKyAgICAgICAgICAg
ICk7CisgICAgICAgICAgICBzd2l0Y2ggKGNmZy50eXBlICYgbWFzaykgeworICAgICAgICAgICAg
ICAgIGNhc2UgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5SRU5ERVJCVUZGRVI6IHJldHVybiBn
bC5SRU5ERVJCVUZGRVI7CisgICAgICAgICAgICAgICAgY2FzZSBnbHNGYm9VdGlsLkNvbmZpZy5z
X3R5cGVzLlRFWFRVUkVfMkQ6IHJldHVybiBnbC5URVhUVVJFXzJEOworICAgICAgICAgICAgICAg
IGNhc2UgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFX0NVQkVfTUFQOiByZXR1cm4g
Z2wuVEVYVFVSRV9DVUJFX01BUDsKKyAgICAgICAgICAgICAgICBjYXNlIGdsc0Zib1V0aWwuQ29u
ZmlnLnNfdHlwZXMuVEVYVFVSRV8zRDogcmV0dXJuIGdsLlRFWFRVUkVfM0Q7CisgICAgICAgICAg
ICAgICAgY2FzZSBnbHNGYm9VdGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfMkRfQVJSQVk6IHJl
dHVybiBnbC5URVhUVVJFXzJEX0FSUkFZOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxl
IGltYWdlIHR5cGUuJyk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGdsRGVsZXRlID0gZnVu
Y3Rpb24oY2ZnLCBpbWcsIGdsKSB7CisgICAgICAgICAgICBpZiAoY2ZnLnR5cGUgJiBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLlJFTkRFUkJVRkZFUikKKyAgICAgICAgICAgICAgICBnbC5kZWxl
dGVSZW5kZXJidWZmZXIoaW1nKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNmZy50eXBlICYgZ2xz
RmJvVXRpbC5Db25maWcuc190eXBlcy5URVhUVVJFKQorICAgICAgICAgICAgICAgIGdsLmRlbGV0
ZVRleHR1cmUoaW1nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0ltcG9zc2libGUgaW1hZ2UgdHlwZScpOworICAgICAgICB9OworCisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICBjcmVhdGU6IGdsQ3JlYXRlLAorICAgICAgICAgICAgcmVt
b3ZlOiBnbERlbGV0ZQorICAgICAgICB9OworCisgICAgfSgpOworCisgICAgLyoqICAqZ2VuZXJh
dGVkIGJ5IHNjcmlwdCoKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbWcKKyAgICAqIEByZXR1cm4g
e251bWJlcn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuaW1hZ2VOdW1TYW1wbGVzID0gZnVuY3Rp
b24oaW1nKSB7CisgICAgICAgIHJldHVybiAoaW1nLm51bVNhbXBsZXMgIT0gdW5kZWZpbmVkKSA/
IGltZy5udW1TYW1wbGVzIDogMDsKKyAgICB9OworCisgICAgLyoqICAqZ2VuZXJhdGVkIGJ5IHNj
cmlwdCoKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5BdHRhY2htZW50fSBhdHQKKyAgICAqIEBw
YXJhbSB7bnVtYmVyfSBhdHRQb2ludAorICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPX0gZ2wKKyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRp
bC5hdHRhY2hBdHRhY2htZW50ID0gZnVuY3Rpb24oYXR0LCBhdHRQb2ludCwgZ2wpIHsKKyAgICAg
ICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQg
Z2wgb2JqZWN0Jyk7CisKKyAgICAgICAgdmFyIG1hc2sgPSAoCisgICAgICAgICAgICBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLkFUVF9SRU5ERVJCVUZGRVIgfAorICAgICAgICAgICAgZ2xzRmJv
VXRpbC5Db25maWcuc190eXBlcy5BVFRfVEVYVFVSRV9GTEFUIHwKKyAgICAgICAgICAgIGdsc0Zi
b1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkVfTEFZRVIKKyAgICAgICAgKTsKKworICAg
ICAgICBzd2l0Y2ggKGF0dC50eXBlICYgbWFzaykgeworICAgICAgICAgICAgY2FzZSBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLkFUVF9SRU5ERVJCVUZGRVI6CisgICAgICAgICAgICAgICAgZ2wu
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCisgICAgICAgICAgICAgICAgICAgIGF0dC50YXJnZXQs
IGF0dFBvaW50LCBhdHQucmVuZGVyYnVmZmVyVGFyZ2V0LCAvKiogQHR5cGUge1dlYkdMUmVuZGVy
YnVmZmVyfSAqLyhhdHQuaW1hZ2VOYW1lKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMu
QVRUX1RFWFRVUkVfRkxBVDoKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RCgKKyAgICAgICAgICAgICAgICAgICAgYXR0LnRhcmdldCwgYXR0UG9pbnQsIGF0dC50ZXhUYXJn
ZXQsIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJlfSAqLyhhdHQuaW1hZ2VOYW1lKSwgYXR0LmxldmVs
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5BVFRfVEVYVFVSRV9MQVlFUjoKKyAgICAg
ICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigKKyAgICAgICAgICAgICAgICAg
ICAgYXR0LnRhcmdldCwgYXR0UG9pbnQsIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJlfSAqLyhhdHQu
aW1hZ2VOYW1lKSwgYXR0LmxldmVsLCBhdHQubGF5ZXIKKyAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ0ltcG9zc2libGUgYXR0YWNobWVudCB0eXBlJyk7CisgICAgICAg
IH0KKworICAgIH07CisKKyAgICAvKiogICpnZW5lcmF0ZWQgYnkgc2NyaXB0KgorICAgICogQHBh
cmFtIHtnbHNGYm9VdGlsLkF0dGFjaG1lbnR9IGF0dAorICAgICogQHBhcmFtIHtXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAqIEB0aHJv
d3Mge0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5hdHRhY2htZW50VHlwZSA9IGZ1bmN0
aW9uKGF0dCwgZ2wpIHsKKyAgICAgICAgaWYgKCEoZ2wgPSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJv
dyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2wgb2JqZWN0Jyk7CisKKyAgICAgICAgaWYgKGF0dC50eXBl
ICYgZ2xzRmJvVXRpbC5Db25maWcuc190eXBlcy5BVFRfUkVOREVSQlVGRkVSKSB7CisgICAgICAg
ICAgICByZXR1cm4gZ2wuUkVOREVSQlVGRkVSOworICAgICAgICB9CisgICAgICAgIGlmIChhdHQu
dHlwZSAmIGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkUpIHsKKyAgICAgICAg
ICAgIHJldHVybiBnbC5URVhUVVJFOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBFcnJv
cignSW1wb3NzaWJsZSBhdHRhY2htZW50IHR5cGUuJyk7CisKKyAgICB9OworCisgICAgLyoqCisg
ICAgKiBAcGFyYW0ge2dsc0Zib1V0aWwuQXR0YWNobWVudH0gYXR0CisgICAgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgICAgKiBAdGhyb3dzIHtFcnJvcn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwudGV4
dHVyZUxheWVyID0gZnVuY3Rpb24oYXR0KSB7CisgICAgICAgIGlmIChhdHQudHlwZSAmIGdsc0Zi
b1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkVfRkxBVCkgcmV0dXJuIDA7CisgICAgICAg
IGlmIChhdHQudHlwZSAmIGdsc0Zib1V0aWwuQ29uZmlnLnNfdHlwZXMuQVRUX1RFWFRVUkVfTEFZ
RVIpIHJldHVybiBhdHQubGF5ZXI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignSW1wb3NzaWJs
ZSBhdHRhY2htZW50IHR5cGUuJyk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtn
bHNGYm9VdGlsLkNoZWNrZXJ9IGNjdHgKKyAgICAqIEBwYXJhbSB7Z2xzRmJvVXRpbC5BdHRhY2ht
ZW50fSBhdHQKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRQb2ludAorICAgICogQHBhcmFtIHtn
bHNGYm9VdGlsLkltYWdlfSBpbWFnZQorICAgICogQHBhcmFtIHtnbHNGYm9VdGlsLkZvcm1hdERC
fSBkYgorICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAq
IEB0aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5jaGVja0F0dGFjaG1lbnRD
b21wbGV0ZW5lc3MgPSBmdW5jdGlvbihjY3R4LCBhdHQsIGF0dFBvaW50LCBpbWFnZSwgZGIsIGds
KSB7CisgICAgICAgIGlmICghKGdsID0gZ2wgfHwgd2luZG93LmdsKSkgdGhyb3cgbmV3IEVycm9y
KCdJbnZhbGlkIGdsIG9iamVjdCcpOworCisgICAgICAgIC8vIEdMRVMyIDQuNC41IC8gR0xFUzMg
NC40LjQsICJnbHNGYm9VdGlsLkZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY29tcGxldGVuZXNzIgor
ICAgICAgICBpZiAoCisgICAgICAgICAgICAoYXR0LnR5cGUgJiBnbHNGYm9VdGlsLkNvbmZpZy5z
X3R5cGVzLkFUVF9URVhUVVJFKSAmJgorICAgICAgICAgICAgKGltYWdlLnR5cGUgJiBnbHNGYm9V
dGlsLkNvbmZpZy5zX3R5cGVzLlRFWFRVUkVfTEFZRVJFRCkKKyAgICAgICAgKSB7CisgICAgICAg
ICAgICAvLyBHTEVTMzogIklmIHRoZSB2YWx1ZSBvZiBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFIGlzCisgICAgICAgICAgICAvLyBURVhUVVJFIGFuZCB0aGUgdmFsdWUgb2YgRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSBuYW1lcyBhCisgICAgICAgICAgICAvLyB0
aHJlZS1kaW1lbnNpb25hbCB0ZXh0dXJlLCB0aGVuIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAg
Ly8gRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSIG11c3QgYmUgc21hbGxlciB0
aGFuIHRoZSBkZXB0aAorICAgICAgICAgICAgLy8gb2YgdGhlIHRleHR1cmUuCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gR0xFUzM6ICJJZiB0aGUgdmFsdWUgb2YgRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSBpcworICAgICAgICAgICAgLy8gVEVYVFVSRSBhbmQgdGhl
IHZhbHVlIG9mIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgbmFtZXMgYQorICAg
ICAgICAgICAgLy8gdHdvLWRpbWVuc2lvbmFsIGFycmF5IHRleHR1cmUsIHRoZW4gdGhlIHZhbHVl
IG9mCisgICAgICAgICAgICAvLyBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIg
bXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhlCisgICAgICAgICAgICAvLyBudW1iZXIgb2YgbGF5ZXJz
IGluIHRoZSB0ZXh0dXJlLgorICAgICAgICAgICAgY2N0eC5hZGRGQk9TdGF0dXMoCisgICAgICAg
ICAgICAgICAgZ2xzRmJvVXRpbC50ZXh0dXJlTGF5ZXIoYXR0KSA8IGltYWdlLm51bUxheWVycywK
KyAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyAiVGhlIHdpZHRoIGFuZCBoZWln
aHQgb2YgaW1hZ2UgYXJlIG5vbi16ZXJvLiIKKyAgICAgICAgY2N0eC5hZGRGQk9TdGF0dXMoCisg
ICAgICAgICAgICBpbWFnZS53aWR0aCA+IDAgJiYgaW1hZ2UuaGVpZ2h0ID4gMCwKKyAgICAgICAg
ICAgIGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVAorICAgICAgICApOworCisg
ICAgICAgIC8vIENoZWNrIGZvciByZW5kZXJhYmlsaXR5CisgICAgICAgIHZhciBmbGFncyA9IGRi
LmdldEZvcm1hdEluZm8oaW1hZ2UuaW50ZXJuYWxGb3JtYXQsIGdsc0Zib1V0aWwuRm9ybWF0Rmxh
Z3MuQU5ZX0ZPUk1BVCk7CisKKyAgICAgICAgLy8gSWYgdGhlIGZvcm1hdCBkb2VzIG5vdCBoYXZl
IHRoZSBwcm9wZXIgcmVuZGVyYWJpbGl0eSBmbGFnLCB0aGUKKyAgICAgICAgLy8gY29tcGxldGVu
ZXNzIGNoZWNrIF9tdXN0XyBmYWlsLgorICAgICAgICBjY3R4LmFkZEZCT1N0YXR1cygKKyAgICAg
ICAgICAgIChmbGFncyAmIGdsc0Zib1V0aWwuZm9ybWF0RmxhZyhhdHRQb2ludCkpICE9IDAsCisg
ICAgICAgICAgICBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQKKyAgICAgICAg
KTsKKworICAgICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIG9ubHkgb3B0aW9uYWxseSByZW5kZXJh
YmxlLCB0aGUgY29tcGxldGVuZXNzIGNoZWNrIF9jYW5fIGZhaWwuCisgICAgICAgIGNjdHguYWRk
UG90ZW50aWFsRkJPU3RhdHVzKAorICAgICAgICAgICAgKGZsYWdzICYgZ2xzRmJvVXRpbC5Gb3Jt
YXRGbGFncy5SRVFVSVJFRF9SRU5ERVJBQkxFKSAhPSAwLAorICAgICAgICAgICAgZ2wuRlJBTUVC
VUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UCisgICAgICAgICk7CisKKyAgICB9OworCisgICAg
Ly8gcmVwbGFjZXMgR0xTX1VOU0laRURfRk9STUFUS0VZCisKKyAgICAvKioKKyAgICAqIEFsbCBw
YXJhbXMgYW5kIHJldHVybiB0eXBlcyBmb3IgdGhpcyBmdW5jdGlvbiBhcmUgMzIgYml0CisgICAg
KiBAcGFyYW0ge251bWJlcn0gZm9ybWF0CisgICAgKiBAcGFyYW0ge251bWJlcn0gdHlwZQorICAg
ICogQHJldHVybiB7bnVtYmVyfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5mb3JtYXRrZXkgPSBm
dW5jdGlvbihmb3JtYXQsIHR5cGUpIHsKKyAgICAgICAgLy8gVGhlIGZvcm1hdGtleSB2YWx1ZSBz
aG91bGQgYmUgMzItYml0IHVuc2lnbmVkIGludC4KKyAgICAgICAgcmV0dXJuICgodHlwZSA8PCAx
NikgPj4+IDAgfCBmb3JtYXQpICYgMHhGRkZGRkZGRjsKKyAgICB9OworCisgICAgLyoqCisgICAg
KiBAZW51bQorICAgICovCisgICAgZ2xzRmJvVXRpbC5Gb3JtYXRGbGFncyA9IHsKKyAgICAgICAg
QU5ZX0ZPUk1BVDogMHgwMCwKKyAgICAgICAgQ09MT1JfUkVOREVSQUJMRTogMHgwMSwKKyAgICAg
ICAgREVQVEhfUkVOREVSQUJMRTogMHgwMiwKKyAgICAgICAgU1RFTkNJTF9SRU5ERVJBQkxFOiAw
eDA0LAorICAgICAgICBSRU5ERVJCVUZGRVJfVkFMSUQ6IDB4MDgsCisgICAgICAgIFRFWFRVUkVf
VkFMSUQ6IDB4MTAsCisgICAgICAgIFJFUVVJUkVEX1JFTkRFUkFCTEU6IDB4MjAgLy88IFdpdGhv
dXQgdGhpcywgcmVuZGVyYWJpbGl0eSBpcyBhbGxvd2VkLCBub3QgcmVxdWlyZWQuCisgICAgfTsK
KworICAgIC8qKgorICAgICogQSBmcmFtZWJ1ZmZlciBjb25maWd1cmF0aW9uCisgICAgKiBAY29u
c3RydWN0b3IKKyAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT19IGdsCisg
ICAgKi8KKyAgICBnbHNGYm9VdGlsLkZyYW1lYnVmZmVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAg
ICAgdGhpcy5tX2dsID0gZ2wgfHwgd2luZG93LmdsOworICAgICAgICB0aGlzLmZiaWQgPSAwOwor
CisgICAgICAgIHZhciBmYmlkQ29tcGFyZSA9IGZ1bmN0aW9uKG9iajEsIG9iajIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBvYmoxLl9mYmlkIDwgb2JqMi5fZmJpZDsKKyAgICAgICAgfTsKKworICAg
ICAgICB0aGlzLmF0dGFjaG1lbnRzID0gLyoqIEB0eXBlIHtnbHNGYm9VdGlsLk1hcDxudW1iZXIs
Z2xzRmJvVXRpbC5BdHRhY2htZW50Pn0gKi8oCisgICAgICAgICAgICBuZXcgZ2xzRmJvVXRpbC5N
YXAoZ2xzRmJvVXRpbC5NYXAuY29tcGFyZU51bWJlcikKKyAgICAgICAgKTsKKyAgICAgICAgdGhp
cy50ZXh0dXJlcyA9IC8qKiBAdHlwZSB7Z2xzRmJvVXRpbC5NYXA8T2JqZWN0LGdsc0Zib1V0aWwu
VGV4dHVyZT59ICovKAorICAgICAgICAgICAgbmV3IGdsc0Zib1V0aWwuTWFwKGZiaWRDb21wYXJl
KQorICAgICAgICApOworICAgICAgICB0aGlzLnJib3MgPSAvKiogQHR5cGUge2dsc0Zib1V0aWwu
TWFwPE9iamVjdCxnbHNGYm9VdGlsLlJlbmRlcmJ1ZmZlcj59ICovKAorICAgICAgICAgICAgbmV3
IGdsc0Zib1V0aWwuTWFwKGZiaWRDb21wYXJlKQorICAgICAgICApOworICAgIH07CisKKyAgICAv
KioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRQb2ludAorICAgICogQHBhcmFtIHtnbHNGYm9V
dGlsLkF0dGFjaG1lbnR9IGF0dAorICAgICovCisgICAgZ2xzRmJvVXRpbC5GcmFtZWJ1ZmZlci5w
cm90b3R5cGUuYXR0YWNoID0gZnVuY3Rpb24oYXR0UG9pbnQsIGF0dCkgeworICAgICAgICBpZiAo
IWF0dCkgeworICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cy5yZW1vdmUoYXR0UG9pbnQpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cy5zZXQoYXR0UG9p
bnQsIGF0dCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgKiBAcGFyYW0ge1dl
YkdMVGV4dHVyZX0gdGV4TmFtZQorICAgICogQHBhcmFtIHtnbHNGYm9VdGlsLlRleHR1cmV9IHRl
eENmZworICAgICovCisgICAgZ2xzRmJvVXRpbC5GcmFtZWJ1ZmZlci5wcm90b3R5cGUuc2V0VGV4
dHVyZSA9IGZ1bmN0aW9uKHRleE5hbWUsIHRleENmZykgeworICAgICAgICB0ZXhOYW1lLl9mYmlk
ID0gdGhpcy5mYmlkKys7CisgICAgICAgIHRoaXMudGV4dHVyZXMuc2V0KHRleE5hbWUsIHRleENm
Zyk7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmJ1ZmZlcn0g
cmJOYW1lCisgICAgKiBAcGFyYW0ge2dsc0Zib1V0aWwuUmVuZGVyYnVmZmVyfSByYkNmZworICAg
ICovCisgICAgZ2xzRmJvVXRpbC5GcmFtZWJ1ZmZlci5wcm90b3R5cGUuc2V0UmJvID0gZnVuY3Rp
b24ocmJOYW1lLCByYkNmZykgeworICAgICAgICByYk5hbWUuX2ZiaWQgPSB0aGlzLmZiaWQrKzsK
KyAgICAgICAgdGhpcy5yYm9zLnNldChyYk5hbWUsIHJiQ2ZnKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgKiBAcGFyYW0ge251bWJlcn0gdHlwZQorICAgICogQHBhcmFtIHtXZWJHTE9iamVjdH0g
aW1nTmFtZQorICAgICogQHJldHVybiB7Z2xzRmJvVXRpbC5JbWFnZX0KKyAgICAqIEB0aHJvd3Mg
e0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5GcmFtZWJ1ZmZlci5wcm90b3R5cGUuZ2V0
SW1hZ2UgPSBmdW5jdGlvbih0eXBlLCBpbWdOYW1lKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICAgICAgY2FzZSB0aGlzLm1fZ2wuVEVYVFVSRTogcmV0dXJuIHRoaXMudGV4dHVy
ZXMubG9va3VwRGVmYXVsdCgvKiogQHR5cGUge1dlYkdMVGV4dHVyZX0gKi8oaW1nTmFtZSksIG51
bGwpOworICAgICAgICAgICAgY2FzZSB0aGlzLm1fZ2wuUkVOREVSQlVGRkVSOiByZXR1cm4gdGhp
cy5yYm9zLmxvb2t1cERlZmF1bHQoLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovKGltZ05hbWUp
LCBudWxsKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisgICAgICAg
IHRocm93IG5ldyBFcnJvcignQmFkIGltYWdlIHR5cGUuJyk7CisgICAgfTsKKworICAgIC8qKgor
ICAgICogQGNvbnN0cnVjdG9yCisgICAgKiBAZXh0ZW5kcyB7Z2xzRmJvVXRpbC5GcmFtZWJ1ZmZl
cn0KKyAgICAqIEBwYXJhbSB7V2ViR0xGcmFtZWJ1ZmZlcn0gZmJvCisgICAgKiBAcGFyYW0ge251
bWJlcn0gdGFyZ2V0CisgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U9fSBn
bAorICAgICovCisgICAgZ2xzRmJvVXRpbC5GYm9CdWlsZGVyID0gZnVuY3Rpb24oZmJvLCB0YXJn
ZXQsIGdsKSB7CisgICAgICAgIGdsc0Zib1V0aWwuRnJhbWVidWZmZXIuY2FsbCh0aGlzLCBnbCk7
CisKKyAgICAgICAgdGhpcy5tX2dsID0gZ2wgfHwgd2luZG93LmdsOworICAgICAgICB0aGlzLm1f
dGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICB0aGlzLm1fY29uZmlncyA9IFtdOworICAgICAgICB0
aGlzLm1fZXJyb3IgPSB0aGlzLm1fZ2wuTk9fRVJST1I7CisKKyAgICAgICAgdGhpcy5tX2dsLmJp
bmRGcmFtZWJ1ZmZlcih0aGlzLm1fdGFyZ2V0LCBmYm8pOworCisgICAgfTsKKworICAgIGdsc0Zi
b1V0aWwuRmJvQnVpbGRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc0Zib1V0aWwuRnJh
bWVidWZmZXIucHJvdG90eXBlKTsKKyAgICBnbHNGYm9VdGlsLkZib0J1aWxkZXIucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gZ2xzRmJvVXRpbC5GYm9CdWlsZGVyOworCisgICAgZ2xzRmJvVXRpbC5G
Ym9CdWlsZGVyLnByb3RvdHlwZS5kZWluaXQgPSBmdW5jdGlvbigpIHsKKworICAgICAgICB2YXIg
cGFpcjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRleHR1cmVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICBwYWlyID0gdGhpcy50ZXh0dXJlcy5nZXRJbmRleChpKTsKKyAg
ICAgICAgICAgIGdsc0Zib1V0aWwuZ2xzdXAucmVtb3ZlKHBhaXIuc2Vjb25kLCBwYWlyLmZpcnN0
LCB0aGlzLm1fZ2wpOworICAgICAgICB9CisgICAgICAgIHRoaXMudGV4dHVyZXMuY2xlYXIoKTsK
KworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucmJvcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgcGFpciA9IHRoaXMucmJvcy5nZXRJbmRleChpKTsKKyAgICAgICAgICAgIGds
c0Zib1V0aWwuZ2xzdXAucmVtb3ZlKHBhaXIuc2Vjb25kLCBwYWlyLmZpcnN0LCB0aGlzLm1fZ2wp
OworICAgICAgICB9CisgICAgICAgIHRoaXMucmJvcy5jbGVhcigpOworCisgICAgICAgIHRoaXMu
bV9nbC5iaW5kRnJhbWVidWZmZXIodGhpcy5tX3RhcmdldCwgbnVsbCk7CisvKgorICAgICAgICBm
b3IgKHZhciBpID0gMCA7IGkgPCB0aGlzLm1fY29uZmlncy5sZW5ndGggOyArK2kpIHsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLm1fY29uZmlnc1tpXTsKKyAgICAgICAgfQorLy8qLworICAgIH07
CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRQb2ludAorICAgICogQHBhcmFt
IHtnbHNGYm9VdGlsLkF0dGFjaG1lbnR9IGF0dAorICAgICovCisgICAgZ2xzRmJvVXRpbC5GYm9C
dWlsZGVyLnByb3RvdHlwZS5nbEF0dGFjaCA9IGZ1bmN0aW9uKGF0dFBvaW50LCBhdHQpIHsKKyAg
ICAgICAgaWYgKCFhdHQpIHsKKyAgICAgICAgICAgIHRoaXMubV9nbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih0aGlzLm1fdGFyZ2V0LCBhdHRQb2ludCwgdGhpcy5tX2dsLlJFTkRFUkJVRkZFUiwg
bnVsbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnbHNGYm9VdGlsLmF0dGFjaEF0
dGFjaG1lbnQoYXR0LCBhdHRQb2ludCwgdGhpcy5tX2dsKTsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLmNoZWNrRXJyb3IoKTsKKyAgICAgICAgdGhpcy5hdHRhY2goYXR0UG9pbnQsIGF0dCk7Cisg
ICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtnbHNGYm9VdGlsLlRleHR1cmV9IHRleENm
ZworICAgICogQHJldHVybiB7V2ViR0xUZXh0dXJlfQorICAgICovCisgICAgZ2xzRmJvVXRpbC5G
Ym9CdWlsZGVyLnByb3RvdHlwZS5nbENyZWF0ZVRleHR1cmUgPSBmdW5jdGlvbih0ZXhDZmcpIHsK
KyAgICAgICAgdmFyIHRleE5hbWUgPSBnbHNGYm9VdGlsLmdsc3VwLmNyZWF0ZSh0ZXhDZmcsIHRo
aXMubV9nbCk7CisgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpOworICAgICAgICB0aGlzLnNldFRl
eHR1cmUodGV4TmFtZSwgdGV4Q2ZnKTsKKyAgICAgICAgcmV0dXJuIHRleE5hbWU7CisgICAgfTsK
KworICAgIC8qKiAgKmdlbmVyYXRlZCBieSBzY3JpcHQqCisgICAgKiBAcGFyYW0ge2dsc0Zib1V0
aWwuUmVuZGVyYnVmZmVyfSByYkNmZworICAgICogQHJldHVybiB7V2ViR0xSZW5kZXJidWZmZXJ9
CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLkZib0J1aWxkZXIucHJvdG90eXBlLmdsQ3JlYXRlUmJv
ID0gZnVuY3Rpb24ocmJDZmcpIHsKKyAgICAgICAgdmFyIHJiTmFtZSA9IGdsc0Zib1V0aWwuZ2xz
dXAuY3JlYXRlKHJiQ2ZnLCB0aGlzLm1fZ2wpOworICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTsK
KyAgICAgICAgdGhpcy5zZXRSYm8ocmJOYW1lLCByYkNmZyk7CisgICAgICAgIHJldHVybiByYk5h
bWU7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtmdW5jdGlvbihuZXc6Z2xzRmJv
VXRpbC5Db25maWcpfSBEZWZpbml0aW9uCisgICAgKiBAcmV0dXJuIHtnbHNGYm9VdGlsLkNvbmZp
Z30KKyAgICAqLworICAgIGdsc0Zib1V0aWwuRmJvQnVpbGRlci5wcm90b3R5cGUubWFrZUNvbmZp
ZyA9IGZ1bmN0aW9uKERlZmluaXRpb24pIHsKKyAgICAgICAgdmFyIGNmZyA9IG5ldyBEZWZpbml0
aW9uKCk7CisgICAgICAgIHRoaXMubV9jb25maWdzLnB1c2goY2ZnKTsKKyAgICAgICAgcmV0dXJu
IGNmZzsKKyAgICB9OworCisgICAgLyoqCisgICAgKi8KKyAgICBnbHNGYm9VdGlsLkZib0J1aWxk
ZXIucHJvdG90eXBlLmNoZWNrRXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGVycm9y
ID0gdGhpcy5tX2dsLmdldEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciAhPSB0aGlzLm1fZ2wu
Tk9fRVJST1IgJiYgdGhpcy5tX2Vycm9yID09IHRoaXMubV9nbC5OT19FUlJPUikgeworICAgICAg
ICAgICAgdGhpcy5tX2Vycm9yID0gZXJyb3I7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
ICAqZ2VuZXJhdGVkIGJ5IHNjcmlwdCoKKyAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAqLwor
ICAgIGdsc0Zib1V0aWwuRmJvQnVpbGRlci5wcm90b3R5cGUuZ2V0RXJyb3IgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9lcnJvcjsKKyAgICB9OworCisgICAgZ2xzRmJvVXRp
bC5pc0ZyYW1lYnVmZmVyU3RhdHVzID0gZnVuY3Rpb24oZmJvU3RhdHVzKSB7CisgICAgICAgIHJl
dHVybiBnbHVTdHJVdGlsLmdldEZyYW1lYnVmZmVyU3RhdHVzTmFtZShmYm9TdGF0dXMpICE9ICcn
OworICAgIH0KKworICAgIGdsc0Zib1V0aWwuaXNFcnJvckNvZGUgPSBmdW5jdGlvbihlcnJvckNv
ZGUpIHsKKyAgICAgICAgcmV0dXJuIGdsdVN0clV0aWwuZ2V0RXJyb3JOYW1lKGVycm9yQ29kZSkg
IT0gJyc7CisgICAgfQorCisgICAgLyoqCisgICAgKiBAdHlwZWRlZiB7ZnVuY2lvbigpOiBnbHNG
Ym9VdGlsLlZhbGlkU3RhdHVzQ29kZXN9CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLlZhbGlkU3Rh
dHVzQ29kZXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5tX2Vycm9yQ29kZXMgPSBbXTsK
KyAgICAgICAgdGhpcy5tX2Vycm9yU3RhdHVzQ29kZXMgPSBbXTsKKyAgICAgICAgdGhpcy5tX2Fs
bG93Q29tcGxldGUgPSBmYWxzZTsKKyAgICB9OworCisgICAgZ2xzRmJvVXRpbC5WYWxpZFN0YXR1
c0NvZGVzLnByb3RvdHlwZS5pc0ZCT1N0YXR1c1ZhbGlkID0gZnVuY3Rpb24oZmJvU3RhdHVzKSB7
CisgICAgICAgIGlmIChmYm9TdGF0dXMgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5tX2FsbG93Q29tcGxldGU7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZm9yKHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fZXJyb3JTdGF0dXNDb2Rlcy5s
ZW5ndGg7ICsrbmR4KSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMubV9lcnJvclN0YXR1c0Nv
ZGVzW25keF0gPT0gZmJvU3RhdHVzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICBnbHNGYm9VdGlsLlZhbGlkU3RhdHVzQ29kZXMucHJvdG90eXBlLmlzRkJPU3Rh
dHVzUmVxdWlyZWQgPSBmdW5jdGlvbihmYm9TdGF0dXMpIHsKKyAgICAgICAgaWYgKGZib1N0YXR1
cyA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm1f
YWxsb3dDb21wbGV0ZSAmJiB0aGlzLm1fZXJyb3JTdGF0dXNDb2Rlcy5sZW5ndGggPT0gMDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgLy8gZmJvU3RhdHVzIGlzIHRoZSBvbmx5IGFsbG93ZWQg
ZXJyb3Igc3RhdHVzIGFuZCBzdWNjZWVkaW5nIGlzIGZvcmJpZGRlbgorICAgICAgICAgICAgcmV0
dXJuICF0aGlzLm1fYWxsb3dDb21wbGV0ZSAmJiB0aGlzLm1fZXJyb3JTdGF0dXNDb2Rlcy5sZW5n
dGggPT0gMSAmJiB0aGlzLm1fZXJyb3JTdGF0dXNDb2Rlc1swXSA9PSBmYm9TdGF0dXM7CisgICAg
fTsKKworICAgIGdsc0Zib1V0aWwuVmFsaWRTdGF0dXNDb2Rlcy5wcm90b3R5cGUuaXNFcnJvckNv
ZGVWYWxpZCA9IGZ1bmN0aW9uKGVycm9yQ29kZSkgeworICAgICAgICBpZiAoZXJyb3JDb2RlID09
IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMubV9lcnJvckNvZGVzLmxlbmd0
aCA9PSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIHJ1bGUgdmlvbGF0aW9uIGV4
aXN0cz8KKyAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMubV9lcnJvckNv
ZGVzLmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5tX2Vycm9yQ29k
ZXNbbmR4XSA9PSBlcnJvckNvZGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fTsKKworICAgIGdsc0Zib1V0aWwuVmFsaWRTdGF0dXNDb2Rlcy5wcm90b3R5cGUuaXNFcnJvckNv
ZGVSZXF1aXJlZCA9IGZ1bmN0aW9uKGVycm9yQ29kZSkgeworICAgICAgICBpZiAodGhpcy5tX2Vy
cm9yQ29kZXMubGVuZ3RoID09IDAgJiYgZXJyb3JDb2RlID09IGdsLk5PX0VSUk9SKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8vIG9ubHkgdGhp
cyBlcnJvciBjb2RlIGxpc3RlZAorICAgICAgICAgICAgcmV0dXJuIHRoaXMubV9lcnJvckNvZGVz
Lmxlbmd0aCA9PSAxICYmIG1lcnJvckNvZGVzWzBdID09IGVycm9yQ29kZTsKKyAgICB9OworCisg
ICAgZ2xzRmJvVXRpbC5WYWxpZFN0YXR1c0NvZGVzLnByb3RvdHlwZS5hZGRFcnJvckNvZGUgPSBm
dW5jdGlvbihlcnJvcikgeworICAgICAgICBERV9BU1NFUlQoZ2xzRmJvVXRpbC5pc0Vycm9yQ29k
ZShlcnJvcikpOworICAgICAgICBERV9BU1NFUlQoZXJyb3IgIT0gZ2wuTk9fRVJST1IpCisgICAg
ICAgIHRoaXMubV9lcnJvckNvZGVzLnB1c2goZXJyb3IpOworICAgIH07CisKKyAgICBnbHNGYm9V
dGlsLlZhbGlkU3RhdHVzQ29kZXMucHJvdG90eXBlLmFkZEZCT0Vycm9yU3RhdHVzID0gZnVuY3Rp
b24oc3RhdHVzKSB7CisgICAgICAgIERFX0FTU0VSVChnbHNGYm9VdGlsLmlzRnJhbWVidWZmZXJT
dGF0dXMoc3RhdHVzKSk7CisgICAgICAgIERFX0FTU0VSVChzdGF0dXMgIT0gZ2wuRlJBTUVCVUZG
RVJfQ09NUExFVEUpCisgICAgICAgIHRoaXMubV9lcnJvclN0YXR1c0NvZGVzLnB1c2goc3RhdHVz
KTsKKyAgICB9OworCisgICAgZ2xzRmJvVXRpbC5WYWxpZFN0YXR1c0NvZGVzLnByb3RvdHlwZS5z
ZXRBbGxvd0NvbXBsZXRlID0gZnVuY3Rpb24oYikgeworICAgICAgICB0aGlzLm1fYWxsb3dDb21w
bGV0ZSA9IGI7CisgICAgfTsKKworICAgIC8qKgorICAgICogQHR5cGVkZWYge2Z1bmN0aW9uKCk6
IGdsc0Zib1V0aWwuQ2hlY2tlcn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuQ2hlY2tlckZhY3Rv
cnk7CisKKyAgICAvKioKKyAgICAqIEBjb25zdHJ1Y3RvcgorICAgICogQHBhcmFtIHtXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPX0gZ2wKKyAgICAqIEB0aHJvd3Mge0Vycm9yfQorICAgICovCisg
ICAgZ2xzRmJvVXRpbC5DaGVja2VyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICAgICAgaWYgKCEoZ2wg
PSBnbCB8fCB3aW5kb3cuZ2wpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2wgb2JqZWN0Jyk7
CisKKyAgICAgICAgdGhpcy5tX3N0YXR1c0NvZGVzID0gbmV3IGdsc0Zib1V0aWwuVmFsaWRTdGF0
dXNDb2RlcygpOworICAgICAgICB0aGlzLm1fc3RhdHVzQ29kZXMuc2V0QWxsb3dDb21wbGV0ZSh0
cnVlKTsKKworICAgICAgICBpZiAodHlwZW9mKHRoaXMuY2hlY2spICE9ICdmdW5jdGlvbicpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnN0cnVjdG9yIGNhbGxlZCBvbiB2aXJ0dWFs
IGNsYXNzOiBnbHNGYm9VdGlsLkNoZWNrZXInKTsKKyAgICB9OworCisgICAgLyoqCisgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IGNvbmRpdGlvbgorICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yCisg
ICAgKi8KKyAgICBnbHNGYm9VdGlsLkNoZWNrZXIucHJvdG90eXBlLmFkZEdMRXJyb3IgPSBmdW5j
dGlvbihjb25kaXRpb24sIGVycm9yKSB7CisgICAgICAgIGlmICghY29uZGl0aW9uKSB7CisgICAg
ICAgICAgICB0aGlzLm1fc3RhdHVzQ29kZXMuYWRkRXJyb3JDb2RlKGVycm9yKTsKKyAgICAgICAg
ICAgIHRoaXMubV9zdGF0dXNDb2Rlcy5zZXRBbGxvd0NvbXBsZXRlKGZhbHNlKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICAvKioKKyAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY29uZGl0aW9uCisg
ICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3IKKyAgICAqLworICAgIGdsc0Zib1V0aWwuQ2hlY2tl
ci5wcm90b3R5cGUuYWRkUG90ZW50aWFsR0xFcnJvciA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZXJy
b3IpIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgICAgIHRoaXMubV9zdGF0
dXNDb2Rlcy5hZGRFcnJvckNvZGUoZXJyb3IpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8q
KgorICAgICogQHBhcmFtIHtib29sZWFufSBjb25kaXRpb24KKyAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzdGF0dXMKKyAgICAqLworICAgIGdsc0Zib1V0aWwuQ2hlY2tlci5wcm90b3R5cGUuYWRkRkJP
U3RhdHVzID0gZnVuY3Rpb24oY29uZGl0aW9uLCBzdGF0dXMpIHsKKyAgICAgICAgaWYgKCFjb25k
aXRpb24pIHsKKyAgICAgICAgICAgIHRoaXMubV9zdGF0dXNDb2Rlcy5hZGRGQk9FcnJvclN0YXR1
cyhzdGF0dXMpOworICAgICAgICAgICAgdGhpcy5tX3N0YXR1c0NvZGVzLnNldEFsbG93Q29tcGxl
dGUoZmFsc2UpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHti
b29sZWFufSBjb25kaXRpb24KKyAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXMKKyAgICAqLwor
ICAgIGdsc0Zib1V0aWwuQ2hlY2tlci5wcm90b3R5cGUuYWRkUG90ZW50aWFsRkJPU3RhdHVzID0g
ZnVuY3Rpb24oY29uZGl0aW9uLCBzdGF0dXMpIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pIHsK
KyAgICAgICAgICAgIHRoaXMubV9zdGF0dXNDb2Rlcy5hZGRGQk9FcnJvclN0YXR1cyhzdGF0dXMp
OworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICogQHJldHVybiB7QXJyYXk8bnVt
YmVyPn0KKyAgICAqLworICAgIGdsc0Zib1V0aWwuQ2hlY2tlci5wcm90b3R5cGUuZ2V0U3RhdHVz
Q29kZXMgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fc3RhdHVzQ29kZXM7
CisgICAgfTsKKworICAgIC8qKgorICAgICogQHBhcmFtIHtnbHNGYm9VdGlsLkltYWdlRm9ybWF0
fSBpbWdGb3JtYXQKKyAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT19IGds
CisgICAgKiBAcmV0dXJuIHtnbHVUZXh0dXJlVXRpbC5UcmFuc2ZlckZvcm1hdH0KKyAgICAqIEB0
aHJvd3Mge0Vycm9yfQorICAgICovCisgICAgZ2xzRmJvVXRpbC50cmFuc2ZlckltYWdlRm9ybWF0
ID0gZnVuY3Rpb24oaW1nRm9ybWF0LCBnbCkgeworICAgICAgICBpZiAoIShnbCA9IGdsIHx8IHdp
bmRvdy5nbCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBnbCBvYmplY3QnKTsKKyAgICAgICAg
aWYgKGltZ0Zvcm1hdC51bnNpemVkVHlwZSA9PSBnbC5OT05FKQorICAgICAgICAgICAgcmV0dXJu
IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KGdsdVRleHR1cmVVdGlsLm1hcEdMSW50
ZXJuYWxGb3JtYXQoaW1nRm9ybWF0LmZvcm1hdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gbmV3IGdsdVRleHR1cmVVdGlsLlRyYW5zZmVyRm9ybWF0KGltZ0Zvcm1hdC5mb3Jt
YXQsIGltZ0Zvcm1hdC51bnNpemVkVHlwZSk7CisgICAgfTsKKworICAgIC8vIEZvcm1hdERCLCBD
aGVja2VyRmFjdG9yeQorCisgICAgLyoqCisgICAgKiBAY29uc3RydWN0b3IKKyAgICAqIEBwYXJh
bSB7Z2xzRmJvVXRpbC5Gb3JtYXREQn0gZm9ybWF0cworICAgICogQHBhcmFtIHtnbHNGYm9VdGls
LkNoZWNrZXJGYWN0b3J5fSBmYWN0b3J5CisgICAgKi8KKyAgICBnbHNGYm9VdGlsLkZib1Zlcmlm
aWVyID0gZnVuY3Rpb24oZm9ybWF0cywgZmFjdG9yeSkgeworICAgICAgICB0aGlzLm1fZm9ybWF0
cyA9IGZvcm1hdHM7CisgICAgICAgIHRoaXMubV9mYWN0b3J5ID0gZmFjdG9yeTsKKyAgICB9Owor
ICAgIC8vIGNvbmZpZzo6RnJhbWVidWZmZXIKKyAgICBnbHNGYm9VdGlsLkZib1ZlcmlmaWVyLnBy
b3RvdHlwZS52YWxpZFN0YXR1c0NvZGVzID0gZnVuY3Rpb24oY2ZnLCBnbCkgeworICAgICAgICBp
ZiAoIShnbCA9IGdsIHx8IHdpbmRvdy5nbCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBnbCBv
YmplY3QnKTsKKworICAgICAgICAvKiogQHR5cGUge2dsc0Zib1V0aWwuQ2hlY2tlcn0gKi8KKyAg
ICAgICAgdmFyIGNjdHggPSB0aGlzLm1fZmFjdG9yeSgpOworCisgICAgICAgIGZvciAodmFyIGlk
ID0gMDsgaWQgPCBjZmcudGV4dHVyZXMubGVuZ3RoOyArK2lkKSB7CisgICAgICAgICAgICB2YXIg
ZmxhZ3MgPSB0aGlzLm1fZm9ybWF0cy5nZXRGb3JtYXRJbmZvKGNmZy50ZXh0dXJlcy5nZXRJbmRl
eChpZCkuc2Vjb25kLmludGVybmFsRm9ybWF0LCBnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLkFOWV9G
T1JNQVQpOworICAgICAgICAgICAgdmFyIHRleHR1cmVJc1ZhbGlkID0gKGZsYWdzICYgZ2xzRmJv
VXRpbC5Gb3JtYXRGbGFncy5URVhUVVJFX1ZBTElEKSAhPSAwOworICAgICAgICAgICAgY2N0eC5h
ZGRHTEVycm9yKHRleHR1cmVJc1ZhbGlkLCBnbC5JTlZBTElEX0VOVU0pOworICAgICAgICAgICAg
Y2N0eC5hZGRHTEVycm9yKHRleHR1cmVJc1ZhbGlkLCBnbC5JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICBjY3R4LmFkZEdMRXJyb3IodGV4dHVyZUlzVmFsaWQsIGdsLklOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8IGNmZy5yYm9z
Lmxlbmd0aDsgKytpZCkgeworICAgICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5tX2Zvcm1hdHMu
Z2V0Rm9ybWF0SW5mbyhjZmcucmJvcy5nZXRJbmRleChpZCkuc2Vjb25kLmludGVybmFsRm9ybWF0
LCBnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLkFOWV9GT1JNQVQpOworICAgICAgICAgICAgdmFyIHJi
b0lzVmFsaWQgPSAoZmxhZ3MgJiBnbHNGYm9VdGlsLkZvcm1hdEZsYWdzLlJFTkRFUkJVRkZFUl9W
QUxJRCkgIT0gMDsKKyAgICAgICAgICAgIGNjdHguYWRkR0xFcnJvcihyYm9Jc1ZhbGlkLCBnbC5J
TlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAg
ICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNmZy5hdHRhY2htZW50cy5sZW5ndGg7ICsr
aW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBhdHRQb2ludCA9IGNmZy5hdHRhY2htZW50cy5nZXRJ
bmRleChpbmRleCkuZmlyc3Q7CisgICAgICAgICAgICB2YXIgYXR0ID0gY2ZnLmF0dGFjaG1lbnRz
LmdldEluZGV4KGluZGV4KS5zZWNvbmQ7CisgICAgICAgICAgICAvKiogQHR5cGUge2dsc0Zib1V0
aWwuSW1hZ2V9Ki8KKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGNmZy5nZXRJbWFnZShnbHNGYm9V
dGlsLmF0dGFjaG1lbnRUeXBlKGF0dCwgZ2wpLCBhdHQuaW1hZ2VOYW1lKTsKKyAgICAgICAgICAg
IGdsc0Zib1V0aWwuY2hlY2tBdHRhY2htZW50Q29tcGxldGVuZXNzKGNjdHgsIGF0dCwgYXR0UG9p
bnQsIGltYWdlLCB0aGlzLm1fZm9ybWF0cywgZ2wpOworICAgICAgICAgICAgY2N0eC5jaGVjayhh
dHRQb2ludCwgYXR0LCBpbWFnZSk7CisgICAgICAgICAgICArK2NvdW50OworICAgICAgICB9CisK
KyAgICAgICAgLy8gIlRoZXJlIGlzIGF0IGxlYXN0IG9uZSBpbWFnZSBhdHRhY2hlZCB0byB0aGUg
ZnJhbWVidWZmZXIuIgorICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IFhYWF9mcmFtZWJ1ZmZlcl9u
b19hdHRhY2htZW50cworICAgICAgICBjY3R4LmFkZEZCT1N0YXR1cyhjb3VudCA+IDAsIGdsLkZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UKTsKKworICAgICAgICByZXR1
cm4gY2N0eC5nZXRTdGF0dXNDb2RlcygpOworCisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMv
c2hhcmVkL2dsc0xpZmV0aW1lVGVzdHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc0xpZmV0aW1lVGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDI3YTNhNGZjZTJiZTk2YWY5NDA3N2I3MDEwMjE3OGFkNjIyNGFhNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzTGlmZXRpbWVUZXN0cy5qcwpAQCAtMCwwICsxLDEx
MTggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3Jh
bSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworJ3VzZSBzdHJpY3QnOworZ29vZy5wcm92aWRlKCdt
b2R1bGVzLnNoYXJlZC5nbHNMaWZldGltZVRlc3RzJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29y
ay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21t
b24udGN1U3RyaW5nVGVtcGxhdGUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50
Y3VTdXJmYWNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2Un
KTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsKK2dv
b2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJl
cXVpcmUoJ21vZHVsZXMuc2hhcmVkLmdsc1RleHR1cmVUZXN0VXRpbCcpOworCitnb29nLnNjb3Bl
KGZ1bmN0aW9uKCkgewordmFyIGdsc0xpZmV0aW1lVGVzdHMgPSBtb2R1bGVzLnNoYXJlZC5nbHNM
aWZldGltZVRlc3RzOwordmFyIHRjdVN0cmluZ1RlbXBsYXRlID0gZnJhbWV3b3JrLmNvbW1vbi50
Y3VTdHJpbmdUZW1wbGF0ZTsKK3ZhciB0Y3VTdXJmYWNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VT
dXJmYWNlOwordmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207
Cit2YXIgZ2xzVGV4dHVyZVRlc3RVdGlsID0gbW9kdWxlcy5zaGFyZWQuZ2xzVGV4dHVyZVRlc3RV
dGlsOwordmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclBy
b2dyYW07Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwor
dmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOwor
CisvKiogQGNvbnN0ICovIHZhciBWSUVXUE9SVF9TSVpFID0gMTI4OworLyoqIEBjb25zdCAqLyB2
YXIgRlJBTUVCVUZGRVJfU0laRSA9IDEyODsKKwordmFyIHNldFBhcmVudENsYXNzID0gZnVuY3Rp
b24oY2hpbGQsIHBhcmVudCkgeworICAgIGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
cGFyZW50LnByb3RvdHlwZSk7CisgICAgY2hpbGQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hp
bGQ7Cit9OworCisvKiogQGNvbnN0ICovIHZhciBzX3ZlcnRleFNoYWRlclNyYyA9CisgICAgJyN2
ZXJzaW9uIDEwMFxuJyArCisgICAgJ2F0dHJpYnV0ZSB2ZWMyIHBvcztcbicgKworICAgICd2b2lk
IG1haW4oKVxuJyArCisgICAgJ3tcbicgKworICAgICcgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcy54
eSwgMC4wLCAxLjApO1xuJyArCisgICAgJ31cbic7CisKKy8qKiBAY29uc3QgKi8gdmFyIHNfZnJh
Z21lbnRTaGFkZXJTcmMgPQorICAgJyN2ZXJzaW9uIDEwMFxuJyArCisgICAgJ3ZvaWQgbWFpbigp
XG4nICsKKyAgICAne1xuJyArCisgICAgJyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4nICsK
KyAgICAnfVxuJzsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHVTaGFk
ZXJQcm9ncmFtLlNoYWRlcn0KKyAqIEBwYXJhbSB7Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBl
fSB0eXBlCisgKiBAcGFyYW0ge3N0cmluZ30gc3JjCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuQ2hl
Y2tlZFNoYWRlciA9IGZ1bmN0aW9uKHR5cGUsIHNyYykgeworICAgIGdsdVNoYWRlclByb2dyYW0u
U2hhZGVyLmNhbGwodGhpcywgZ2wsIHR5cGUpOworICAgIHRoaXMuc2V0U291cmNlcyhzcmMpOwor
ICAgIHRoaXMuY29tcGlsZSgpOworICAgIGFzc2VydE1zZ09wdGlvbnModGhpcy5nZXRDb21waWxl
U3RhdHVzKCkgPT09IHRydWUsICdGYWlsZWQgdG8gY29tcGlsZSBzaGFkZXInLCBmYWxzZSwgdHJ1
ZSk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLkNoZWNrZWRTaGFkZXIs
IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyKTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtnbHVTaGFkZXJQcm9ncmFtLlByb2dyYW19CisgKiBAcGFyYW0ge1dlYkdMU2hhZGVy
fSB2dHhTaGFkZXIKKyAqIEBwYXJhbSB7V2ViR0xTaGFkZXJ9IGZyYWdTaGFkZXIKKyAqLworZ2xz
TGlmZXRpbWVUZXN0cy5DaGVja2VkUHJvZ3JhbSA9IGZ1bmN0aW9uKHZ0eFNoYWRlciwgZnJhZ1No
YWRlcikgeworICAgIGdsdVNoYWRlclByb2dyYW0uUHJvZ3JhbS5jYWxsKHRoaXMsIGdsKTsKKyAg
ICB0aGlzLmF0dGFjaFNoYWRlcih2dHhTaGFkZXIpOworICAgIHRoaXMuYXR0YWNoU2hhZGVyKGZy
YWdTaGFkZXIpOworICAgIHRoaXMubGluaygpOworICAgIGFzc2VydE1zZ09wdGlvbnModGhpcy5p
bmZvLmxpbmtPayA9PT0gdHJ1ZSwgJ0ZhaWxlZCB0byBsaW5rIHByb2dyYW0nLCBmYWxzZSwgdHJ1
ZSk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLkNoZWNrZWRQcm9ncmFt
LCBnbHVTaGFkZXJQcm9ncmFtLlByb2dyYW0pOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitnbHNMaWZldGltZVRlc3RzLkJpbmRlciA9IGZ1bmN0aW9uKCkgeworfTsKKworLyoqCisgKiBA
cGFyYW0ge1dlYkdMT2JqZWN0fSBvYmoKKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5CaW5kZXIucHJv
dG90eXBlLmJpbmQgPSBmdW5jdGlvbihvYmopIHsgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1
bmN0aW9uJyk7IH07CisKKy8qKgorICogQHJldHVybiB7V2ViR0xPYmplY3R9CisgKi8KK2dsc0xp
ZmV0aW1lVGVzdHMuQmluZGVyLnByb3RvdHlwZS5nZXRCaW5kaW5nID0gZnVuY3Rpb24oKSB7IHRo
cm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbicpOyB9OworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuQmluZGVyfQorICogQHBhcmFtIHs/
ZnVuY3Rpb24obnVtYmVyLCA/KX0gYmluZEZ1bmMKKyAqIEBwYXJhbSB7bnVtYmVyfSBiaW5kVGFy
Z2V0CisgKiBAcGFyYW0ge251bWJlcn0gYmluZGluZ1BhcmFtCisgKi8KK2dsc0xpZmV0aW1lVGVz
dHMuU2ltcGxlQmluZGVyID0gZnVuY3Rpb24oYmluZEZ1bmMsIGJpbmRUYXJnZXQsIGJpbmRpbmdQ
YXJhbSkgeworICAgIGdsc0xpZmV0aW1lVGVzdHMuQmluZGVyLmNhbGwodGhpcyk7CisgICAgdGhp
cy5tX2JpbmRGdW5jID0gYmluZEZ1bmM7CisgICAgdGhpcy5tX2JpbmRUYXJnZXQgPSBiaW5kVGFy
Z2V0OworICAgIHRoaXMubV9iaW5kaW5nUGFyYW0gPSBiaW5kaW5nUGFyYW07Cit9OworCitzZXRQ
YXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLlNpbXBsZUJpbmRlciwgZ2xzTGlmZXRpbWVUZXN0
cy5CaW5kZXIpOworCitnbHNMaWZldGltZVRlc3RzLlNpbXBsZUJpbmRlci5wcm90b3R5cGUuYmlu
ZCA9IGZ1bmN0aW9uKG9iaikgeworICAgIHRoaXMubV9iaW5kRnVuYy5jYWxsKGdsLCB0aGlzLm1f
YmluZFRhcmdldCwgb2JqKTsKK307CisKK2dsc0xpZmV0aW1lVGVzdHMuU2ltcGxlQmluZGVyLnBy
b3RvdHlwZS5nZXRCaW5kaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIC8qKiBAdHlwZSB7
V2ViR0xPYmplY3R9ICovIChnbC5nZXRQYXJhbWV0ZXIodGhpcy5tX2JpbmRpbmdQYXJhbSkpOwor
fTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5UeXBlID0g
ZnVuY3Rpb24oKSB7Cit9OworCisvKioKKyAqIENyZWF0ZSBhIHR5cGUKKyAqIEByZXR1cm4ge1dl
YkdMT2JqZWN0fQorICovCitnbHNMaWZldGltZVRlc3RzLlR5cGUucHJvdG90eXBlLmdlbiA9IGZ1
bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24nKTsgfTsKKworLyoq
CisgKiBEZXN0cm95IGEgdHlwZQorICogQHBhcmFtIHtXZWJHTE9iamVjdH0gb2JqCisgKi8KK2ds
c0xpZmV0aW1lVGVzdHMuVHlwZS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uKG9iaikgeyB0
aHJvdyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24nKTsgfTsKKworLyoqCisgKiBJcyBvYmpl
Y3QgdmFsaWQKKyAqIEBwYXJhbSB7V2ViR0xPYmplY3R9IG9iagorICovCitnbHNMaWZldGltZVRl
c3RzLlR5cGUucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG9iaikgeyB0aHJvdyBuZXcgRXJy
b3IoJ1ZpcnR1YWwgZnVuY3Rpb24nKTsgfTsKKworLyoqCisgKiBJcyBvYmplY3QgZmxhZ2dlZCBm
b3IgZGVsZXRpb24KKyAqIEBwYXJhbSB7V2ViR0xPYmplY3R9IG9iagorICovCitnbHNMaWZldGlt
ZVRlc3RzLlR5cGUucHJvdG90eXBlLmlzRGVsZXRlRmxhZ2dlZCA9IGZ1bmN0aW9uKG9iaikgeyBy
ZXR1cm4gZmFsc2U7IH07CisKKy8qKgorICogQHJldHVybiB7Z2xzTGlmZXRpbWVUZXN0cy5CaW5k
ZXJ9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuVHlwZS5wcm90b3R5cGUuYmluZGVyID0gZnVuY3Rp
b24oKSB7IHJldHVybiBudWxsOyB9OworCisvKioKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLwor
Z2xzTGlmZXRpbWVUZXN0cy5UeXBlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7IHRo
cm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbicpOyB9OworCisvKioKKyAqIElzIHRoZSBv
YmplY3QgdW5ib3VuZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXMgZGVsZXRlZD8KKyAqIEByZXR1
cm4ge2Jvb2xlYW59CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuVHlwZS5wcm90b3R5cGUubmFtZUxp
bmdlcnMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9OworCisvKioKKyAqIERvZXMgJ2Ny
ZWF0ZScgY3JlYXRlcyB0aGUgb2JqZWN0IGZ1bGx5PworICogSWYgbm90LCB0aGUgb2JqZWN0IGlz
IGNyZWF0ZWQgYXQgYm91bmQgdGltZQorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZ2xzTGlm
ZXRpbWVUZXN0cy5UeXBlLnByb3RvdHlwZS5nZW5DcmVhdGVzID0gZnVuY3Rpb24oKSB7IHJldHVy
biBmYWxzZTsgfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZl
dGltZVRlc3RzLlR5cGV9CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtmdW5j
dGlvbigpOiBXZWJHTE9iamVjdH0gZ2VuRnVuYworICogQHBhcmFtIHtmdW5jdGlvbig/KX0gZGVs
ZXRlRnVuYworICogQHBhcmFtIHtmdW5jdGlvbig/KTogYm9vbGVhbn0gZXhpc3RzRnVuYworICog
QHBhcmFtIHtnbHNMaWZldGltZVRlc3RzLkJpbmRlcn0gYmluZGVyCisgKiBAcGFyYW0ge2Jvb2xl
YW49fSBnZW5DcmVhdGVzCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuU2ltcGxlVHlwZSA9IGZ1bmN0
aW9uKG5hbWUsIGdlbkZ1bmMsIGRlbGV0ZUZ1bmMsIGV4aXN0c0Z1bmMsIGJpbmRlciwgZ2VuQ3Jl
YXRlcykgeworICAgIGdsc0xpZmV0aW1lVGVzdHMuVHlwZS5jYWxsKHRoaXMpOworICAgIHRoaXMu
bV9nZXROYW1lID0gbmFtZTsKKyAgICB0aGlzLm1fZ2VuRnVuYyA9IGdlbkZ1bmM7CisgICAgdGhp
cy5tX2RlbGV0ZUZ1bmMgPSBkZWxldGVGdW5jOworICAgIHRoaXMubV9leGlzdHNGdW5jID0gZXhp
c3RzRnVuYzsKKyAgICB0aGlzLm1fYmluZGVyID0gYmluZGVyOworICAgIHRoaXMubV9nZW5DcmVh
dGVzID0gZ2VuQ3JlYXRlcyB8fCBmYWxzZTsKK307CisKK3NldFBhcmVudENsYXNzKGdsc0xpZmV0
aW1lVGVzdHMuU2ltcGxlVHlwZSwgZ2xzTGlmZXRpbWVUZXN0cy5UeXBlKTsKKworZ2xzTGlmZXRp
bWVUZXN0cy5TaW1wbGVUeXBlLnByb3RvdHlwZS5nZW4gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMubV9nZW5GdW5jLmNhbGwoZ2wpOyB9OworCitnbHNMaWZldGltZVRlc3RzLlNpbXBsZVR5cGUu
cHJvdG90eXBlLnJlbGVhc2UgPSBmdW5jdGlvbihvYmopIHsgcmV0dXJuIHRoaXMubV9kZWxldGVG
dW5jLmNhbGwoZ2wsIG9iaik7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMuU2ltcGxlVHlwZS5wcm90
b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24ob2JqKSB7IHJldHVybiB0aGlzLm1fZXhpc3RzRnVuYy5j
YWxsKGdsLCBvYmopOyB9OworCitnbHNMaWZldGltZVRlc3RzLlNpbXBsZVR5cGUucHJvdG90eXBl
LmJpbmRlciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX2JpbmRlcjsgfTsKKworZ2xzTGlm
ZXRpbWVUZXN0cy5TaW1wbGVUeXBlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7IHJl
dHVybiB0aGlzLm1fZ2V0TmFtZTsgfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5TaW1wbGVUeXBlLnBy
b3RvdHlwZS5nZW5DcmVhdGVzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZ2VuQ3JlYXRl
czsgfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZldGltZVRl
c3RzLlR5cGV9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuUHJvZ3JhbVR5cGUgPSBmdW5jdGlvbigp
IHsKKyAgICBnbHNMaWZldGltZVRlc3RzLlR5cGUuY2FsbCh0aGlzKTsKK307CisKK3NldFBhcmVu
dENsYXNzKGdsc0xpZmV0aW1lVGVzdHMuUHJvZ3JhbVR5cGUsIGdsc0xpZmV0aW1lVGVzdHMuVHlw
ZSk7CisKK2dsc0xpZmV0aW1lVGVzdHMuUHJvZ3JhbVR5cGUucHJvdG90eXBlLmdlbiA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gZ2wuY3JlYXRlUHJvZ3JhbSgpOyB9OworCitnbHNMaWZldGltZVRlc3Rz
LlByb2dyYW1UeXBlLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24ob2JqKSB7IHJldHVybiBn
bC5kZWxldGVQcm9ncmFtKC8qKiBAdHlwZSB7V2ViR0xQcm9ncmFtfSAqLyAob2JqKSk7IH07CisK
K2dsc0xpZmV0aW1lVGVzdHMuUHJvZ3JhbVR5cGUucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9u
KG9iaikgeyByZXR1cm4gZ2wuaXNQcm9ncmFtKC8qKiBAdHlwZSB7V2ViR0xQcm9ncmFtfSAqLyAo
b2JqKSk7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMuUHJvZ3JhbVR5cGUucHJvdG90eXBlLmdldE5h
bWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdwcm9ncmFtJzsgfTsKKworZ2xzTGlmZXRpbWVUZXN0
cy5Qcm9ncmFtVHlwZS5wcm90b3R5cGUuZ2VuQ3JlYXRlcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
dHJ1ZTsgfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5Qcm9ncmFtVHlwZS5wcm90b3R5cGUubmFtZUxp
bmdlcnMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMu
UHJvZ3JhbVR5cGUucHJvdG90eXBlLmlzRGVsZXRlRmxhZ2dlZCA9IGZ1bmN0aW9uKG9iaikgeyBy
ZXR1cm4gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcigvKiogQHR5cGUge1dlYkdMUHJvZ3JhbX0gKi8g
KG9iaiksIGdsLkRFTEVURV9TVEFUVVMpOyB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuVHlwZX0KKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5T
aGFkZXJUeXBlID0gZnVuY3Rpb24oKSB7CisgICAgZ2xzTGlmZXRpbWVUZXN0cy5UeXBlLmNhbGwo
dGhpcyk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLlNoYWRlclR5cGUs
IGdsc0xpZmV0aW1lVGVzdHMuVHlwZSk7CisKK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVyVHlwZS5w
cm90b3R5cGUuZ2VuID0gZnVuY3Rpb24oKSB7IHJldHVybiBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJB
R01FTlRfU0hBREVSKTsgfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5TaGFkZXJUeXBlLnByb3RvdHlw
ZS5yZWxlYXNlID0gZnVuY3Rpb24ob2JqKSB7IHJldHVybiBnbC5kZWxldGVTaGFkZXIoLyoqIEB0
eXBlIHtXZWJHTFNoYWRlcn0gKi8gKG9iaikpOyB9OworCitnbHNMaWZldGltZVRlc3RzLlNoYWRl
clR5cGUucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG9iaikgeyByZXR1cm4gZ2wuaXNTaGFk
ZXIoLyoqIEB0eXBlIHtXZWJHTFNoYWRlcn0gKi8gKG9iaikpOyB9OworCitnbHNMaWZldGltZVRl
c3RzLlNoYWRlclR5cGUucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdz
aGFkZXInOyB9OworCitnbHNMaWZldGltZVRlc3RzLlNoYWRlclR5cGUucHJvdG90eXBlLmdlbkNy
ZWF0ZXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMu
U2hhZGVyVHlwZS5wcm90b3R5cGUubmFtZUxpbmdlcnMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRy
dWU7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVyVHlwZS5wcm90b3R5cGUuaXNEZWxldGVG
bGFnZ2VkID0gZnVuY3Rpb24ob2JqKSB7IHJldHVybiBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoLyoq
IEB0eXBlIHtXZWJHTFNoYWRlcn0gKi8gKG9iaiksIGdsLkRFTEVURV9TVEFUVVMpOyB9OworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtnbHNMaWZldGltZVRlc3RzLlR5cGV9IGVs
ZW1lbnRUeXBlCisgKiBAcGFyYW0ge2dsc0xpZmV0aW1lVGVzdHMuVHlwZX0gY29udGFpbmVyVHlw
ZQorICovCitnbHNMaWZldGltZVRlc3RzLkF0dGFjaGVyID0gZnVuY3Rpb24oZWxlbWVudFR5cGUs
IGNvbnRhaW5lclR5cGUpIHsKKyAgICB0aGlzLm1fZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZTsK
KyAgICB0aGlzLm1fY29udGFpbmVyVHlwZSA9IGNvbnRhaW5lclR5cGU7Cit9OworCisvKioKKyAq
IEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgKiBAcGFyYW0ge1dlYkdMT2JqZWN0fSBvYmoKKyAqLwor
Z2xzTGlmZXRpbWVUZXN0cy5BdHRhY2hlci5wcm90b3R5cGUuaW5pdEF0dGFjaG1lbnQgPSBmdW5j
dGlvbihzZWVkLCBvYmopIHsgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uJyk7IH07
CisKKy8qKgorICogQHBhcmFtIHtXZWJHTE9iamVjdH0gZWxlbWVudAorICogQHBhcmFtIHtXZWJH
TE9iamVjdH0gdGFyZ2V0CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuQXR0YWNoZXIucHJvdG90eXBl
LmF0dGFjaCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1Zp
cnR1YWwgZnVuY3Rpb24nKTsgfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMT2JqZWN0fSBlbGVt
ZW50CisgKiBAcGFyYW0ge1dlYkdMT2JqZWN0fSB0YXJnZXQKKyAqLworZ2xzTGlmZXRpbWVUZXN0
cy5BdHRhY2hlci5wcm90b3R5cGUuZGV0YWNoID0gZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7
IHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbicpOyB9OworZ2xzTGlmZXRpbWVUZXN0
cy5BdHRhY2hlci5wcm90b3R5cGUuY2FuQXR0YWNoRGVsZXRlZCA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdHJ1ZTsgfTsKKworLyoqCisgKiBAcmV0dXJuIHtnbHNMaWZldGltZVRlc3RzLlR5cGV9Cisg
Ki8KK2dsc0xpZmV0aW1lVGVzdHMuQXR0YWNoZXIucHJvdG90eXBlLmdldEVsZW1lbnRUeXBlID0g
ZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZWxlbWVudFR5cGU7IH07CisKKy8qKgorICogQHJl
dHVybiB7Z2xzTGlmZXRpbWVUZXN0cy5UeXBlfQorICovCitnbHNMaWZldGltZVRlc3RzLkF0dGFj
aGVyLnByb3RvdHlwZS5nZXRDb250YWluZXJUeXBlID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlz
Lm1fY29udGFpbmVyVHlwZTsgfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZ2xzTGlm
ZXRpbWVUZXN0cy5JbnB1dEF0dGFjaGVyID0gZnVuY3Rpb24oYXR0YWNoZXIpIHsKKyAgICB0aGlz
Lm1fYXR0YWNoZXIgPSBhdHRhY2hlcjsKK307CisKK2dsc0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRh
Y2hlci5wcm90b3R5cGUuZ2V0QXR0YWNoZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9h
dHRhY2hlcjsgfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMT2JqZWN0fSBjb250YWluZXIKKyAq
IEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5J
bnB1dEF0dGFjaGVyLnByb3RvdHlwZS5kcmF3Q29udGFpbmVyID0gZnVuY3Rpb24oY29udGFpbmVy
LCBkc3QpIHsgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uJyk7IH07CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXIgPSBm
dW5jdGlvbihhdHRhY2hlcikgeworICAgIHRoaXMubV9hdHRhY2hlciA9IGF0dGFjaGVyOworfTsK
KworZ2xzTGlmZXRpbWVUZXN0cy5PdXRwdXRBdHRhY2hlci5wcm90b3R5cGUuZ2V0QXR0YWNoZXIg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9hdHRhY2hlcjsgfTsKKworLyoqCisgKiBAcGFy
YW0ge251bWJlcn0gc2VlZAorICogQHBhcmFtIHtXZWJHTE9iamVjdH0gY29udGFpbmVyCisgKi8K
K2dsc0xpZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXIucHJvdG90eXBlLnNldHVwQ29udGFpbmVy
ID0gZnVuY3Rpb24oc2VlZCwgY29udGFpbmVyKSB7IHRocm93IG5ldyBFcnJvcignVmlydHVhbCBm
dW5jdGlvbicpOyB9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xPYmplY3R9IGF0dGFjaG1lbnQK
KyAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAqLworZ2xzTGlmZXRpbWVUZXN0
cy5PdXRwdXRBdHRhY2hlci5wcm90b3R5cGUuZHJhd0F0dGFjaG1lbnQgPSBmdW5jdGlvbihhdHRh
Y2htZW50LCBkc3QpIHsgdGhyb3cgbmV3IEVycm9yKCdWaXJ0dWFsIGZ1bmN0aW9uJyk7IH07CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuVHlwZXMgPSBmdW5j
dGlvbigpIHsKKyAgICAvKiogQHR5cGUge0FycmF5PGdsc0xpZmV0aW1lVGVzdHMuVHlwZT59ICov
IHRoaXMubV90eXBlcyA9IFtdOworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzTGlmZXRpbWVUZXN0
cy5BdHRhY2hlcj59ICovIHRoaXMubV9hdHRhY2hlcnMgPSBbXTsKKyAgICAvKiogQHR5cGUge0Fy
cmF5PGdsc0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRhY2hlcj59ICovIHRoaXMubV9pbkF0dGFjaGVy
cyA9IFtdOworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzTGlmZXRpbWVUZXN0cy5PdXRwdXRBdHRh
Y2hlcj59ICovIHRoaXMubV9vdXRBdHRhY2hlcnMgPSBbXTsKK307CisKKy8qKgorICogQHJldHVy
biB7Z2xzTGlmZXRpbWVUZXN0cy5Qcm9ncmFtVHlwZX0KKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5U
eXBlcy5wcm90b3R5cGUuZ2V0UHJvZ3JhbVR5cGUgPSBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVy
cm9yKCdWaXJ0dWFsIGZ1bmN0aW9uJyk7IH07CisKK2dsc0xpZmV0aW1lVGVzdHMuVHlwZXMucHJv
dG90eXBlLmdldFR5cGVzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fdHlwZXM7IH07CisK
K2dsc0xpZmV0aW1lVGVzdHMuVHlwZXMucHJvdG90eXBlLmdldEF0dGFjaGVycyA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gdGhpcy5tX2F0dGFjaGVyczsgfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5UeXBl
cy5wcm90b3R5cGUuZ2V0SW5wdXRBdHRhY2hlcnMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu
bV9pbkF0dGFjaGVyczsgfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5UeXBlcy5wcm90b3R5cGUuZ2V0
T3V0cHV0QXR0YWNoZXJzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fb3V0QXR0YWNoZXJz
OyB9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgKiBAcGFyYW0ge1dlYkdMRnJh
bWVidWZmZXJ9IGZibworICovCitnbHNMaWZldGltZVRlc3RzLnNldHVwRmJvID0gZnVuY3Rpb24o
c2VlZCwgZmJvKSB7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8p
OworCisgICAgaWYgKHNlZWQgPT0gMCkgeworICAgICAgICBnbC5jbGVhckNvbG9yKDAuMCwgMC4w
LCAwLjAsIDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpOwor
ICAgICAgICB2YXIgd2lkdGggPSBybmQuZ2V0SW50KDAsIEZSQU1FQlVGRkVSX1NJWkUpOworICAg
ICAgICB2YXIgaGVpZ2h0ID0gcm5kLmdldEludCgwLCBGUkFNRUJVRkZFUl9TSVpFKTsKKyAgICAg
ICAgdmFyIHggPSBybmQuZ2V0SW50KDAsIEZSQU1FQlVGRkVSX1NJWkUgLSB3aWR0aCk7CisgICAg
ICAgIHZhciB5ID0gcm5kLmdldEludCgwLCBGUkFNRUJVRkZFUl9TSVpFIC0gaGVpZ2h0KTsKKyAg
ICAgICAgdmFyIHIxID0gcm5kLmdldEZsb2F0KCk7CisgICAgICAgIHZhciBnMSA9IHJuZC5nZXRG
bG9hdCgpOworICAgICAgICB2YXIgYjEgPSBybmQuZ2V0RmxvYXQoKTsKKyAgICAgICAgdmFyIGEx
ID0gcm5kLmdldEZsb2F0KCk7CisgICAgICAgIHZhciByMiA9IHJuZC5nZXRGbG9hdCgpOworICAg
ICAgICB2YXIgZzIgPSBybmQuZ2V0RmxvYXQoKTsKKyAgICAgICAgdmFyIGIyID0gcm5kLmdldEZs
b2F0KCk7CisgICAgICAgIHZhciBhMiA9IHJuZC5nZXRGbG9hdCgpOworCisgICAgICAgIGdsLmNs
ZWFyQ29sb3IocjEsIGcxLCBiMSwgYTEpOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICAgICAgZ2wuc2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAg
ICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgICAgIGdsLmNsZWFyQ29sb3IocjIs
IGcyLCBiMiwgYTIpOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICAgICAgZ2wuZGlzYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgIH0KKworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7
e3g6IG51bWJlciwgeTpudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfX0gcmVj
dAorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IGRzdAorICovCitnbHNMaWZldGltZVRl
c3RzLnJlYWRSZWN0YW5nbGUgPSBmdW5jdGlvbihyZWN0LCBkc3QpIHsKKyAgICBkc3QucmVhZFZp
ZXdwb3J0KGdsLCByZWN0KTsKK307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTEZyYW1lYnVmZmVy
fSBmYm8KKyAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSBkc3QKKyAqLworZ2xzTGlmZXRp
bWVUZXN0cy5kcmF3RmJvID0gZnVuY3Rpb24oZmJvLCBkc3QpIHsKKyAgICBnbC5iaW5kRnJhbWVi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZHN0LnJlYWRWaWV3cG9ydChnbCwgWzAs
IDAsIEZSQU1FQlVGRkVSX1NJWkUsIEZSQU1FQlVGRkVSX1NJWkVdKTsKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtnbHNMaWZldGltZVRlc3RzLkF0dGFjaGVyfQorICovCitnbHNMaWZl
dGltZVRlc3RzLkZib0F0dGFjaGVyID0gZnVuY3Rpb24oZWxlbWVudFR5cGUsIGNvbnRhaW5lclR5
cGUpIHsKKyAgICBnbHNMaWZldGltZVRlc3RzLkF0dGFjaGVyLmNhbGwodGhpcywgZWxlbWVudFR5
cGUsIGNvbnRhaW5lclR5cGUpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZ2xzTGlmZXRpbWVUZXN0
cy5GYm9BdHRhY2hlciwgZ2xzTGlmZXRpbWVUZXN0cy5BdHRhY2hlcik7CisKK2dsc0xpZmV0aW1l
VGVzdHMuRmJvQXR0YWNoZXIucHJvdG90eXBlLmluaXRTdG9yYWdlID0gZnVuY3Rpb24oKSB7IHRo
cm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbicpOyB9OworCitnbHNMaWZldGltZVRlc3Rz
LkZib0F0dGFjaGVyLnByb3RvdHlwZS5pbml0QXR0YWNobWVudCA9IGZ1bmN0aW9uKHNlZWQsIGVs
ZW1lbnQpIHsKKyAgICB2YXIgYmluZGVyID0gdGhpcy5nZXRFbGVtZW50VHlwZSgpLmJpbmRlcigp
OworICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworCisgICAgYmluZGVyLmJp
bmQoZWxlbWVudCk7CisgICAgdGhpcy5pbml0U3RvcmFnZSgpOworICAgIGJpbmRlci5iaW5kKG51
bGwpOworCisgICAgdGhpcy5hdHRhY2goZWxlbWVudCwgZmJvKTsKKyAgICBnbHNMaWZldGltZVRl
c3RzLnNldHVwRmJvKHNlZWQsIGZibyk7CisgICAgdGhpcy5kZXRhY2goZWxlbWVudCwgZmJvKTsK
KworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7CisKKyAgICBidWZmZXJlZExvZ1RvQ29u
c29sZSgnRHJldyB0byAnICsgdGhpcy5nZXRFbGVtZW50VHlwZSgpLmdldE5hbWUoKSArICcgJyAr
IGVsZW1lbnQgKyAnIHdpdGggc2VlZCAnICsgc2VlZCArICcuJyk7Cit9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRhY2hlcn0K
KyAqLworZ2xzTGlmZXRpbWVUZXN0cy5GYm9JbnB1dEF0dGFjaGVyID0gZnVuY3Rpb24oYXR0YWNo
ZXIpIHsKKyAgICBnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNoZXIuY2FsbCh0aGlzLCBhdHRh
Y2hlcik7Cit9OworCitzZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLkZib0lucHV0QXR0
YWNoZXIsIGdsc0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRhY2hlcik7CisKK2dsc0xpZmV0aW1lVGVz
dHMuRmJvSW5wdXRBdHRhY2hlci5wcm90b3R5cGUuZHJhd0NvbnRhaW5lciA9IGZ1bmN0aW9uKG9i
aiwgZHN0KSB7CisgICAgdmFyIGZibyA9IC8qKiBAdHlwZSB7V2ViR0xGcmFtZWJ1ZmZlcn0gKi8g
KG9iaik7CisgICAgZ2xzTGlmZXRpbWVUZXN0cy5kcmF3RmJvKGZibywgZHN0KTsKKyAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgnUmVhZCBwaXhlbHMgZnJvbSBmcmFtZWJ1ZmZlciAnICsgZmJvICsg
JyB0byBvdXRwdXQgaW1hZ2UuJyk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge2dsc0xpZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXJ9CisgKi8KK2dsc0xpZmV0aW1l
VGVzdHMuRmJvT3V0cHV0QXR0YWNoZXIgPSBmdW5jdGlvbihhdHRhY2hlcikgeworICAgIGdsc0xp
ZmV0aW1lVGVzdHMuT3V0cHV0QXR0YWNoZXIuY2FsbCh0aGlzLCBhdHRhY2hlcik7Cit9OworCitz
ZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLkZib091dHB1dEF0dGFjaGVyLCBnbHNMaWZl
dGltZVRlc3RzLk91dHB1dEF0dGFjaGVyKTsKKworZ2xzTGlmZXRpbWVUZXN0cy5GYm9PdXRwdXRB
dHRhY2hlci5wcm90b3R5cGUuc2V0dXBDb250YWluZXIgPSBmdW5jdGlvbihzZWVkLCBmYm8pIHsK
KyAgICBnbHNMaWZldGltZVRlc3RzLnNldHVwRmJvKHNlZWQsIC8qKiBAdHlwZSB7V2ViR0xGcmFt
ZWJ1ZmZlcn0gKi8gKGZibykpOworICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0RyZXcgdG8gZnJh
bWVidWZmZXIgJyArIGZibyArICcgd2l0aCBzZWVkICcgKyBzZWVkICsgJy4nKTsKK307CisKK2ds
c0xpZmV0aW1lVGVzdHMuRmJvT3V0cHV0QXR0YWNoZXIucHJvdG90eXBlLmRyYXdBdHRhY2htZW50
ID0gZnVuY3Rpb24oZWxlbWVudCwgZHN0KSB7CisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCk7CisgICAgdGhpcy5tX2F0dGFjaGVyLmF0dGFjaChlbGVtZW50LCBmYm8pOworICAg
IGdsc0xpZmV0aW1lVGVzdHMuZHJhd0ZibyhmYm8sIGRzdCk7CisgICAgdGhpcy5tX2F0dGFjaGVy
LmRldGFjaChlbGVtZW50LCBmYm8pOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7Cisg
ICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1JlYWQgcGl4ZWxzIGZyb20gJyArIHRoaXMubV9hdHRh
Y2hlci5nZXRFbGVtZW50VHlwZSgpLmdldE5hbWUoKSArICcgJyArIGVsZW1lbnQgKyAnIHRvIG91
dHB1dCBpbWFnZS4nKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
Z2xzTGlmZXRpbWVUZXN0cy5GYm9BdHRhY2hlcn0KKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5UZXh0
dXJlRmJvQXR0YWNoZXIgPSBmdW5jdGlvbihlbGVtZW50VHlwZSwgY29udGFpbmVyVHlwZSkgewor
ICAgIGdsc0xpZmV0aW1lVGVzdHMuRmJvQXR0YWNoZXIuY2FsbCh0aGlzLCBlbGVtZW50VHlwZSwg
Y29udGFpbmVyVHlwZSk7Cit9OworCitzZXRQYXJlbnRDbGFzcyhnbHNMaWZldGltZVRlc3RzLlRl
eHR1cmVGYm9BdHRhY2hlciwgZ2xzTGlmZXRpbWVUZXN0cy5GYm9BdHRhY2hlcik7CisKK2dsc0xp
ZmV0aW1lVGVzdHMuVGV4dHVyZUZib0F0dGFjaGVyLnByb3RvdHlwZS5pbml0U3RvcmFnZSA9IGZ1
bmN0aW9uKCkgeworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwg
RlJBTUVCVUZGRVJfU0laRSwgRlJBTUVCVUZGRVJfU0laRSwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgIGdsLlJHQkEsIGdsLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQsIG51bGwpOworCit9OworCitn
bHNMaWZldGltZVRlc3RzLlRleHR1cmVGYm9BdHRhY2hlci5wcm90b3R5cGUuYXR0YWNoID0gZnVu
Y3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7CisgICAgdmFyIHRleHR1cmUgPSAvKiogQHR5cGUge1dl
YkdMVGV4dHVyZX0gKi8gKGVsZW1lbnQpOworICAgIHZhciBmYm8gPSAvKiogQHR5cGUge1dlYkdM
RnJhbWVidWZmZXJ9ICovICh0YXJnZXQpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG51bGwpOworfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5UZXh0dXJlRmJvQXR0YWNo
ZXIucHJvdG90eXBlLmRldGFjaCA9IGZ1bmN0aW9uKHRleHR1cmUsIHRhcmdldCkgeworICAgIHZh
ciBmYm8gPSAvKiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJ9ICovICh0YXJnZXQpOworICAgIHRo
aXMuYXR0YWNoKG51bGwsIGZibyk7Cit9OworCitnbHNMaWZldGltZVRlc3RzLmdldEZib0F0dGFj
aG1lbnQgPSBmdW5jdGlvbihmYm8sIHJlcXVpcmVkVHlwZSkgeworICAgIGdsLmJpbmRGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICB2YXIgdHlwZSA9IGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpOworICAgIHZhciBuYW1lID0gZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSk7CisgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKworICAgIHZhciByZXQgPSB0eXBlID09
IHJlcXVpcmVkVHlwZSA/IG5hbWUgOiBudWxsOworICAgIHJldHVybiByZXQ7Cit9OworCitnbHNM
aWZldGltZVRlc3RzLlRleHR1cmVGYm9BdHRhY2hlci5wcm90b3R5cGUuZ2V0QXR0YWNobWVudCA9
IGZ1bmN0aW9uKGZibykgeworICAgIHJldHVybiBnbHNMaWZldGltZVRlc3RzLmdldEZib0F0dGFj
aG1lbnQoZmJvLCBnbC5URVhUVVJFKTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7Z2xzTGlmZXRpbWVUZXN0cy5GYm9BdHRhY2hlcn0KKyAqLworZ2xzTGlmZXRpbWVU
ZXN0cy5SYm9GYm9BdHRhY2hlciA9IGZ1bmN0aW9uKGVsZW1lbnRUeXBlLCBjb250YWluZXJUeXBl
KSB7CisgICAgZ2xzTGlmZXRpbWVUZXN0cy5GYm9BdHRhY2hlci5jYWxsKHRoaXMsIGVsZW1lbnRU
eXBlLCBjb250YWluZXJUeXBlKTsKK307CisKK3NldFBhcmVudENsYXNzKGdsc0xpZmV0aW1lVGVz
dHMuUmJvRmJvQXR0YWNoZXIsIGdsc0xpZmV0aW1lVGVzdHMuRmJvQXR0YWNoZXIpOworCitnbHNM
aWZldGltZVRlc3RzLlJib0Zib0F0dGFjaGVyLnByb3RvdHlwZS5pbml0U3RvcmFnZSA9IGZ1bmN0
aW9uKCkgeworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
R0JBNCwgRlJBTUVCVUZGRVJfU0laRSwgRlJBTUVCVUZGRVJfU0laRSk7CisKK307CisKK2dsc0xp
ZmV0aW1lVGVzdHMuUmJvRmJvQXR0YWNoZXIucHJvdG90eXBlLmF0dGFjaCA9IGZ1bmN0aW9uKGVs
ZW1lbnQsIHRhcmdldCkgeworICAgIHZhciByYm8gPSAvKiogQHR5cGUge1dlYkdMUmVuZGVyYnVm
ZmVyfSAqLyAoZWxlbWVudCk7CisgICAgdmFyIGZibyA9IC8qKiBAdHlwZSB7V2ViR0xGcmFtZWJ1
ZmZlcn0gKi8gKHRhcmdldCk7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCByYm8pOworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cit9OworCitnbHNMaWZldGltZVRlc3Rz
LlJib0Zib0F0dGFjaGVyLnByb3RvdHlwZS5kZXRhY2ggPSBmdW5jdGlvbihyYm8sIHRhcmdldCkg
eworICAgIHZhciBmYm8gPSAvKiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJ9ICovICh0YXJnZXQp
OworICAgIHRoaXMuYXR0YWNoKG51bGwsIGZibyk7Cit9OworCitnbHNMaWZldGltZVRlc3RzLlJi
b0Zib0F0dGFjaGVyLnByb3RvdHlwZS5nZXRBdHRhY2htZW50ID0gZnVuY3Rpb24oZmJvKSB7Cisg
ICAgcmV0dXJuIGdsc0xpZmV0aW1lVGVzdHMuZ2V0RmJvQXR0YWNobWVudChmYm8sIGdsLlJFTkRF
UkJVRkZFUik7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsc0xp
ZmV0aW1lVGVzdHMuQXR0YWNoZXJ9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVyUHJvZ3Jh
bUF0dGFjaGVyID0gZnVuY3Rpb24oZWxlbWVudFR5cGUsIGNvbnRhaW5lclR5cGUpIHsKKyAgICBn
bHNMaWZldGltZVRlc3RzLkF0dGFjaGVyLmNhbGwodGhpcywgZWxlbWVudFR5cGUsIGNvbnRhaW5l
clR5cGUpOworfTsKKworc2V0UGFyZW50Q2xhc3MoZ2xzTGlmZXRpbWVUZXN0cy5TaGFkZXJQcm9n
cmFtQXR0YWNoZXIsIGdsc0xpZmV0aW1lVGVzdHMuQXR0YWNoZXIpOworCitnbHNMaWZldGltZVRl
c3RzLlNoYWRlclByb2dyYW1BdHRhY2hlci5wcm90b3R5cGUuaW5pdEF0dGFjaG1lbnQgPSBmdW5j
dGlvbihzZWVkLCBvYmopIHsKKyAgICB2YXIgc2hhZGVyID0gLyoqIEB0eXBlIHtXZWJHTFNoYWRl
cn0gKi8gKG9iaik7CisgICAgdmFyIHNfZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSA9CisgICAgJyN2
ZXJzaW9uIDEwMFxuJyArCisgICAgJ3ZvaWQgbWFpbigpXG4nICsKKyAgICAne1xuJyArCisgICAg
JyBnbF9GcmFnQ29sb3IgPSB2ZWM0KCR7UkVEfSwgJHtHUkVFTn0sICR7QkxVRX0sIDEuMCk7XG4n
ICsKKyAgICAnfSc7CisKKyAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShzZWVkKTsK
KyAgICB2YXIgcGFyYW1zID0gW107CisgICAgcGFyYW1zWydSRUQnXSA9IHJuZC5nZXRGbG9hdCgp
LnRvU3RyaW5nKDEwKTsKKyAgICBwYXJhbXNbJ0dSRUVOJ10gPSBybmQuZ2V0RmxvYXQoKS50b1N0
cmluZygxMCk7CisgICAgcGFyYW1zWydCTFVFJ10gPSBybmQuZ2V0RmxvYXQoKS50b1N0cmluZygx
MCk7CisKKyAgICB2YXIgc291cmNlID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShzX2Zy
YWdtZW50U2hhZGVyVGVtcGxhdGUsIHBhcmFtcyk7CisgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRl
ciwgc291cmNlKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgdmFyIGNvbXBp
bGVTdGF0dXMgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRV
Uyk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhjb21waWxlU3RhdHVzID09PSB0cnVlLCAnRmFpbGVk
IHRvIGNvbXBpbGUgc2hhZGVyOiAnICsgc291cmNlLCBmYWxzZSwgdHJ1ZSk7Cit9OworCitnbHNM
aWZldGltZVRlc3RzLlNoYWRlclByb2dyYW1BdHRhY2hlci5wcm90b3R5cGUuYXR0YWNoID0gZnVu
Y3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7CisgICAgdmFyIHNoYWRlciA9IC8qKiBAdHlwZSB7V2Vi
R0xTaGFkZXJ9ICovIChlbGVtZW50KTsKKyAgICB2YXIgcHJvZ3JhbSA9IC8qKiBAdHlwZSB7V2Vi
R0xQcm9ncmFtfSAqLyAodGFyZ2V0KTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKK307CisKK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVyUHJvZ3JhbUF0dGFjaGVyLnByb3Rv
dHlwZS5kZXRhY2ggPSBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQpIHsKKyAgICB2YXIgc2hhZGVy
ID0gLyoqIEB0eXBlIHtXZWJHTFNoYWRlcn0gKi8gKGVsZW1lbnQpOworICAgIHZhciBwcm9ncmFt
ID0gLyoqIEB0eXBlIHtXZWJHTFByb2dyYW19ICovICh0YXJnZXQpOworICAgIGdsLmRldGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOworfTsKKworZ2xzTGlmZXRpbWVUZXN0cy5TaGFkZXJQcm9n
cmFtQXR0YWNoZXIucHJvdG90eXBlLmdldEF0dGFjaG1lbnQgPSBmdW5jdGlvbihwcm9ncmFtKSB7
CisgICAgdmFyIHNoYWRlcnMgPSBnbC5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBz
aGFkZXIgPSBzaGFkZXJzW2ldOworICAgICAgICB2YXIgdHlwZSA9IGdsLmdldFNoYWRlclBhcmFt
ZXRlcihzaGFkZXIsIGdsLlNIQURFUl9UWVBFKTsKKyAgICAgICAgaWYgKHR5cGUgPT09IGdsLkZS
QUdNRU5UX1NIQURFUikKKyAgICAgICAgICAgIHJldHVybiBzaGFkZXI7CisgICAgfQorICAgIHJl
dHVybiBudWxsOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNM
aWZldGltZVRlc3RzLklucHV0QXR0YWNoZXJ9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVy
UHJvZ3JhbUlucHV0QXR0YWNoZXIgPSBmdW5jdGlvbihhdHRhY2hlcikgeworICAgIGdsc0xpZmV0
aW1lVGVzdHMuSW5wdXRBdHRhY2hlci5jYWxsKHRoaXMsIGF0dGFjaGVyKTsKK307CisKK3NldFBh
cmVudENsYXNzKGdsc0xpZmV0aW1lVGVzdHMuU2hhZGVyUHJvZ3JhbUlucHV0QXR0YWNoZXIsIGds
c0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRhY2hlcik7CisKK2dsc0xpZmV0aW1lVGVzdHMuU2hhZGVy
UHJvZ3JhbUlucHV0QXR0YWNoZXIucHJvdG90eXBlLmRyYXdDb250YWluZXIgPSBmdW5jdGlvbihj
b250YWluZXIsIGRzdCkgeworICAgIHZhciBwcm9ncmFtID0gLyoqIEB0eXBlIHtXZWJHTFByb2dy
YW19ICovIChjb250YWluZXIpOworICAgIHZhciBzX3ZlcnRpY2VzID0gWy0xLjAsIDAuMCwgMS4w
LCAxLjAsIDAuMCwgLTEuMF07CisgICAgZ2xzTGlmZXRpbWVUZXN0cy5TaGFkZXJQcm9ncmFtSW5w
dXRBdHRhY2hlci5zZWVkID0gZ2xzTGlmZXRpbWVUZXN0cy5TaGFkZXJQcm9ncmFtSW5wdXRBdHRh
Y2hlci5zZWVkIHx8IDA7CisgICAgdmFyIHZ0eFNoYWRlciA9IG5ldyBnbHNMaWZldGltZVRlc3Rz
LkNoZWNrZWRTaGFkZXIoZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWCwgc192ZXJ0
ZXhTaGFkZXJTcmMpOworICAgIHZhciB2aWV3cG9ydCA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwu
UmFuZG9tVmlld3BvcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpLCBWSUVXUE9S
VF9TSVpFLCBWSUVXUE9SVF9TSVpFLCBnbHNMaWZldGltZVRlc3RzLlNoYWRlclByb2dyYW1JbnB1
dEF0dGFjaGVyLnNlZWQpOworCisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZ0eFNoYWRl
ci5nZXRTaGFkZXIoKSk7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB2YXIg
bGlua1N0YXR1cyA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFU
VVMpOworICAgIGFzc2VydE1zZ09wdGlvbnMobGlua1N0YXR1cyA9PT0gdHJ1ZSwgJ1Byb2dyYW0g
bGluayBmYWlsZWQnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgn
QXR0YWNoZWQgYSB0ZW1wb3JhcnkgdmVydGV4IHNoYWRlciBhbmQgbGlua2VkIHByb2dyYW0gJyAr
IHByb2dyYW0pOworCisgICAgZ2wudmlld3BvcnQodmlld3BvcnQueCwgdmlld3BvcnQueSwgdmll
d3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7CisKKyAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnUG9zaXRpb25lZCB2aWV3cG9ydCByYW5kb21seScpOworCisgICAgZ2wudXNlUHJvZ3JhbShw
cm9ncmFtKTsKKworICAgIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCAncG9zJyk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhwb3NMb2MgPj0gMCwgJ0NvdWxkIG5vdCBm
aW5kIHBvcyBhdHRyaWJ1dGUnLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB2YXIgYnVmID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoc192ZXJ0
aWNlcyksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIocG9zTG9jLCAyLCBnbC5GTE9BVCwg
ZmFsc2UsIDAsIDApOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsK
KworICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMoZ2wu
VFJJQU5HTEVTLCAwLCAzKTsKKworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NM
b2MpOworICAgIGdsLmRlbGV0ZUJ1ZmZlcihidWYpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xl
KCdEcmV3IGEgZml4ZWQgdHJpYW5nbGUnKTsKKworICAgIGdsLnVzZVByb2dyYW0obnVsbCk7CisK
KyAgICBnbHNMaWZldGltZVRlc3RzLnJlYWRSZWN0YW5nbGUodmlld3BvcnQsIGRzdCk7CisgICAg
YnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0NvcGllZCB2aWV3cG9ydCB0byBvdXRwdXQgaW1hZ2UnKTsK
KworICAgIGdsLmRldGFjaFNoYWRlcihwcm9ncmFtLCB2dHhTaGFkZXIuZ2V0U2hhZGVyKCkpOwor
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZW1vdmVkIHRlbXBvcmFyeSB2ZXJ0ZXggc2hhZGVy
Jyk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge2dsc0xpZmV0aW1l
VGVzdHMuVHlwZXN9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuRVMyVHlwZXMgPSBmdW5jdGlvbigp
IHsKKyAgICBnbHNMaWZldGltZVRlc3RzLlR5cGVzLmNhbGwodGhpcyk7CisgICAgdGhpcy5tX2J1
ZmZlckJpbmQgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5TaW1wbGVCaW5kZXIoZ2wuYmluZEJ1ZmZl
ciwgZ2wuQVJSQVlfQlVGRkVSLCBnbC5BUlJBWV9CVUZGRVJfQklORElORyk7CisgICAgdGhpcy5t
X2J1ZmZlclR5cGUgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5TaW1wbGVUeXBlKCdidWZmZXInLCBn
bC5jcmVhdGVCdWZmZXIsIGdsLmRlbGV0ZUJ1ZmZlciwgZ2wuaXNCdWZmZXIsIHRoaXMubV9idWZm
ZXJCaW5kKTsKKyAgICB0aGlzLm1fdGV4dHVyZUJpbmQgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5T
aW1wbGVCaW5kZXIoZ2wuYmluZFRleHR1cmUsIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQklO
RElOR18yRCk7CisgICAgdGhpcy5tX3RleHR1cmVUeXBlID0gbmV3IGdsc0xpZmV0aW1lVGVzdHMu
U2ltcGxlVHlwZSgndGV4dHVyZScsIGdsLmNyZWF0ZVRleHR1cmUsIGdsLmRlbGV0ZVRleHR1cmUs
IGdsLmlzVGV4dHVyZSwgdGhpcy5tX3RleHR1cmVCaW5kKTsKKyAgICB0aGlzLm1fcmJvQmluZCA9
IG5ldyBnbHNMaWZldGltZVRlc3RzLlNpbXBsZUJpbmRlcihnbC5iaW5kUmVuZGVyYnVmZmVyLCBn
bC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9CSU5ESU5HKTsKKyAgICB0aGlzLm1fcmJv
VHlwZSA9IG5ldyBnbHNMaWZldGltZVRlc3RzLlNpbXBsZVR5cGUoJ3JlbmRlcmJ1ZmZlcicsIGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlciwgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyLCBnbC5pc1JlbmRlcmJ1
ZmZlciwgdGhpcy5tX3Jib0JpbmQpOworICAgIHRoaXMubV9mYm9CaW5kID0gbmV3IGdsc0xpZmV0
aW1lVGVzdHMuU2ltcGxlQmluZGVyKGdsLmJpbmRGcmFtZWJ1ZmZlciwgZ2wuRlJBTUVCVUZGRVIs
IGdsLkZSQU1FQlVGRkVSX0JJTkRJTkcpOworICAgIHRoaXMubV9mYm9UeXBlID0gbmV3IGdsc0xp
ZmV0aW1lVGVzdHMuU2ltcGxlVHlwZSgnZnJhbWVidWZmZXInLCBnbC5jcmVhdGVGcmFtZWJ1ZmZl
ciwgZ2wuZGVsZXRlRnJhbWVidWZmZXIsIGdsLmlzRnJhbWVidWZmZXIsIHRoaXMubV9mYm9CaW5k
KTsKKyAgICB0aGlzLm1fc2hhZGVyVHlwZSA9IG5ldyBnbHNMaWZldGltZVRlc3RzLlNoYWRlclR5
cGUoKTsKKyAgICB0aGlzLm1fcHJvZ3JhbVR5cGUgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5Qcm9n
cmFtVHlwZSgpOworICAgIHRoaXMubV90ZXhGYm9BdHQgPSBuZXcgZ2xzTGlmZXRpbWVUZXN0cy5U
ZXh0dXJlRmJvQXR0YWNoZXIodGhpcy5tX3RleHR1cmVUeXBlLCB0aGlzLm1fZmJvVHlwZSk7Cisg
ICAgdGhpcy5tX3RleEZib0luQXR0ID0gbmV3IGdsc0xpZmV0aW1lVGVzdHMuRmJvSW5wdXRBdHRh
Y2hlcih0aGlzLm1fdGV4RmJvQXR0KTsKKyAgICB0aGlzLm1fdGV4RmJvT3V0QXR0ID0gbmV3IGds
c0xpZmV0aW1lVGVzdHMuRmJvT3V0cHV0QXR0YWNoZXIodGhpcy5tX3RleEZib0F0dCk7CisgICAg
dGhpcy5tX3Jib0Zib0F0dCA9IG5ldyBnbHNMaWZldGltZVRlc3RzLlJib0Zib0F0dGFjaGVyKHRo
aXMubV9yYm9UeXBlLCB0aGlzLm1fZmJvVHlwZSk7CisgICAgdGhpcy5tX3Jib0Zib0luQXR0ID0g
bmV3IGdsc0xpZmV0aW1lVGVzdHMuRmJvSW5wdXRBdHRhY2hlcih0aGlzLm1fcmJvRmJvQXR0KTsK
KyAgICB0aGlzLm1fcmJvRmJvT3V0QXR0ID0gbmV3IGdsc0xpZmV0aW1lVGVzdHMuRmJvT3V0cHV0
QXR0YWNoZXIodGhpcy5tX3Jib0Zib0F0dCk7CisgICAgdGhpcy5tX3NoYWRlckF0dCA9IG5ldyBn
bHNMaWZldGltZVRlc3RzLlNoYWRlclByb2dyYW1BdHRhY2hlcih0aGlzLm1fc2hhZGVyVHlwZSwg
dGhpcy5tX3Byb2dyYW1UeXBlKTsKKyAgICB0aGlzLm1fc2hhZGVySW5BdHQgPSBuZXcgZ2xzTGlm
ZXRpbWVUZXN0cy5TaGFkZXJQcm9ncmFtSW5wdXRBdHRhY2hlcih0aGlzLm1fc2hhZGVyQXR0KTsK
KworICAgIHRoaXMubV90eXBlcy5wdXNoKHRoaXMubV9idWZmZXJUeXBlLCB0aGlzLm1fdGV4dHVy
ZVR5cGUsIHRoaXMubV9yYm9UeXBlLCB0aGlzLm1fZmJvVHlwZSwgdGhpcy5tX3NoYWRlclR5cGUs
IHRoaXMubV9wcm9ncmFtVHlwZSk7CisgICAgdGhpcy5tX2F0dGFjaGVycy5wdXNoKHRoaXMubV90
ZXhGYm9BdHQsIHRoaXMubV9yYm9GYm9BdHQsIHRoaXMubV9zaGFkZXJBdHQpOworICAgIHRoaXMu
bV9pbkF0dGFjaGVycy5wdXNoKHRoaXMubV90ZXhGYm9JbkF0dCwgdGhpcy5tX3Jib0Zib0luQXR0
LCB0aGlzLm1fc2hhZGVySW5BdHQpOworICAgIHRoaXMubV9vdXRBdHRhY2hlcnMucHVzaCh0aGlz
Lm1fdGV4RmJvT3V0QXR0LCB0aGlzLm1fcmJvRmJvT3V0QXR0KTsKK307CisKK3NldFBhcmVudENs
YXNzKGdsc0xpZmV0aW1lVGVzdHMuRVMyVHlwZXMsIGdsc0xpZmV0aW1lVGVzdHMuVHlwZXMpOwor
CitnbHNMaWZldGltZVRlc3RzLkVTMlR5cGVzLnByb3RvdHlwZS5nZXRQcm9ncmFtVHlwZSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX3Byb2dyYW1UeXBlOyB9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtn
bHNMaWZldGltZVRlc3RzLlR5cGV9IHR5cGUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gdGVzdAor
ICovCitnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRp
b24sIHR5cGUsIHRlc3QpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5jYWxsKHRoaXMsIG5h
bWUsIGRlc2NyaXB0aW9uKTsKKyAgICB0aGlzLm1fdHlwZSA9IHR5cGU7CisgICAgdGhpcy5tX3Rl
c3QgPSB0ZXN0OworfTsKKworc2V0UGFyZW50Q2xhc3MoZ2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVz
dCwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0LnBy
b3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5tX3Rlc3QoKTsKKyAgICBy
ZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworfTsKKworLyoqCisgKiBAdGhp
cyB7Z2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdH0KKyAqLworZ2xzTGlmZXRpbWVUZXN0cy5MaWZl
VGVzdC50ZXN0R2VuID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIG9iaiA9IHRoaXMubV90eXBlLmdl
bigpOworICAgIGlmICh0aGlzLm1fdHlwZS5nZW5DcmVhdGVzKCkpCisgICAgICAgIGFzc2VydE1z
Z09wdGlvbnModGhpcy5tX3R5cGUuZXhpc3RzKG9iaiksICJjcmVhdGUqIHNob3VsZCBoYXZlIGNy
ZWF0ZWQgYW4gb2JqZWN0LCBidXQgZGlkbid0IiwgZmFsc2UsIHRydWUpOworICAgIGVsc2UKKyAg
ICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghdGhpcy5tX3R5cGUuZXhpc3RzKG9iaiksICdjcmVhdGUq
IHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGFuIG9iamVjdCwgYnV0IGRpZCcsIGZhbHNlLCB0cnVl
KTsKKyAgICB0aGlzLm1fdHlwZS5yZWxlYXNlKG9iaik7CisgICAgdGVzdFBhc3NlZCgpOworfTsK
KworLyoqCisgKiBAdGhpcyB7Z2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdH0KKyAqLworZ2xzTGlm
ZXRpbWVUZXN0cy5MaWZlVGVzdC50ZXN0RGVsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIG9i
aiA9IHRoaXMubV90eXBlLmdlbigpOworICAgIHRoaXMubV90eXBlLnJlbGVhc2Uob2JqKTsKKyAg
ICBhc3NlcnRNc2dPcHRpb25zKCF0aGlzLm1fdHlwZS5leGlzdHMob2JqKSwgJ09iamVjdCBzdGls
bCBleGlzdHMgYWZ0ZXIgZGVsZXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisgICAgdGVzdFBhc3NlZCgp
OworfTsKKworLyoqCisgKiBAdGhpcyB7Z2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdH0KKyAqLwor
Z2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdC50ZXN0QmluZCA9IGZ1bmN0aW9uKCkgeworICAgIHZh
ciBvYmogPSB0aGlzLm1fdHlwZS5nZW4oKTsKKyAgICB0aGlzLm1fdHlwZS5iaW5kZXIoKS5iaW5k
KG9iaik7CisgICAgdmFyIGVyciA9IGdsLmdldEVycm9yKCk7CisgICAgYXNzZXJ0TXNnT3B0aW9u
cyhlcnIgPT0gZ2wuTk9ORSwgJ0JpbmQgZmFpbGVkJywgZmFsc2UsIHRydWUpOworICAgIGFzc2Vy
dE1zZ09wdGlvbnModGhpcy5tX3R5cGUuZXhpc3RzKG9iaiksICdPYmplY3QgZG9lcyBub3QgZXhp
c3QgYWZ0ZXIgYmluZGluZycsIGZhbHNlLCB0cnVlKTsKKyAgICB0aGlzLm1fdHlwZS5iaW5kZXIo
KS5iaW5kKG51bGwpOworICAgIHRoaXMubV90eXBlLnJlbGVhc2Uob2JqKTsKKyAgICB0ZXN0UGFz
c2VkKCk7Cit9OworCisvKioKKyAqIEB0aGlzIHtnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0fQor
ICovCitnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0LnRlc3REZWxldGVCb3VuZCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBvYmogPSB0aGlzLm1fdHlwZS5nZW4oKTsKKyAgICB0aGlzLm1fdHlwZS5i
aW5kZXIoKS5iaW5kKG9iaik7CisgICAgdGhpcy5tX3R5cGUucmVsZWFzZShvYmopOworICAgIGlm
ICh0aGlzLm1fdHlwZS5uYW1lTGluZ2VycygpKSB7CisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMo
Z2wuZ2V0RXJyb3IoKSA9PSBnbC5OT05FLCAnRGVsZXRpbmcgYm91bmQgb2JqZWN0IGZhaWxlZCcs
IGZhbHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fdHlwZS5iaW5k
ZXIoKS5nZXRCaW5kaW5nKCkgPT09IG9iaiwgJ0RlbGV0aW5nIGJvdW5kIG9iamVjdCBkaWQgbm90
IHJldGFpbiBiaW5kaW5nJywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KHRoaXMubV90eXBlLmV4aXN0cyhvYmopLCAnRGVsZXRpbmcgYm91bmQgb2JqZWN0IG1hZGUgaXRz
IG5hbWUgaW52YWxpZCcsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0
aGlzLm1fdHlwZS5pc0RlbGV0ZUZsYWdnZWQob2JqKSwgJ0RlbGV0aW5nIGJvdW5kIG9iamVjdCBk
aWQgbm90IGZsYWcgdGhlIG9iamVjdCBmb3IgZGVsZXRpb24nLCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIHRoaXMubV90eXBlLmJpbmRlcigpLmJpbmQobnVsbCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09IGdsLk5PTkUsICdEZWxldGluZyBi
b3VuZCBvYmplY3QgZmFpbGVkJywgZmFsc2UsIHRydWUpOworICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKHRoaXMubV90eXBlLmJpbmRlcigpLmdldEJpbmRpbmcoKSA9PT0gbnVsbCwgJ0RlbGV0aW5n
IGJvdW5kIG9iamVjdCBkaWQgbm90IHJlbW92ZSBiaW5kaW5nJywgZmFsc2UsIHRydWUpOworICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKCF0aGlzLm1fdHlwZS5leGlzdHMob2JqKSwgJ0RlbGV0aW5n
IGJvdW5kIG9iamVjdCBkaWQgbm90IG1ha2UgaXRzIG5hbWUgaW52YWxpZCcsIGZhbHNlLCB0cnVl
KTsKKyAgICB9CisgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fdHlwZS5iaW5kZXIoKS5nZXRC
aW5kaW5nKCkgPT09IG51bGwsICJVbmJpbmRpbmcgZGlkbid0IHJlbW92ZSBiaW5kaW5nIiwgZmFs
c2UsIHRydWUpOworICAgIGFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV90eXBlLmV4aXN0cyhvYmop
LCAnTmFtZSBpcyBzdGlsbCB2YWxpZCBhZnRlciBkZWxldGluZyBhbmQgdW5iaW5kaW5nJywgZmFs
c2UsIHRydWUpOworICAgIHRlc3RQYXNzZWQoKTsKK307CisKKy8qKgorICogQHRoaXMge2dsc0xp
ZmV0aW1lVGVzdHMuTGlmZVRlc3R9CisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuTGlmZVRlc3QudGVz
dERlbGV0ZVVzZWQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdnR4U2hhZGVyID0gbmV3IGdsc0xp
ZmV0aW1lVGVzdHMuQ2hlY2tlZFNoYWRlcihnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVS
VEVYLCBzX3ZlcnRleFNoYWRlclNyYyk7CisgICAgdmFyIGZyYWdTaGFkZXIgPSBuZXcgZ2xzTGlm
ZXRpbWVUZXN0cy5DaGVja2VkU2hhZGVyKGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFH
TUVOVCwgc19mcmFnbWVudFNoYWRlclNyYyk7CisgICAgdmFyIHByb2dyYW0gPSBuZXcgZ2xzTGlm
ZXRpbWVUZXN0cy5DaGVja2VkUHJvZ3JhbSh2dHhTaGFkZXIuZ2V0U2hhZGVyKCksIGZyYWdTaGFk
ZXIuZ2V0U2hhZGVyKCkpOworICAgIHZhciBwcm9ncmFtSWQgPSBwcm9ncmFtLmdldFByb2dyYW0o
KTsKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnQ3JlYXRlZCBhbmQgbGlua2VkIHByb2dyYW0g
JyArIHByb2dyYW1JZCk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtSWQpOworCisgICAgZ2wu
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtSWQpOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdEZWxl
dGVkIHByb2dyYW0gJyArIHByb2dyYW1JZCk7CisgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5pc1By
b2dyYW0ocHJvZ3JhbUlkKSwgJ0RlbGV0ZWQgY3VycmVudCBwcm9ncmFtJywgZmFsc2UsIHRydWUp
OworICAgIHZhciBkZWxldGVGbGFnZ2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFt
SWQsIGdsLkRFTEVURV9TVEFUVVMpOworICAgIGFzc2VydE1zZ09wdGlvbnMoZGVsZXRlRmxhZ2dl
ZCA9PSB0cnVlLCAnUHJvZ3JhbSBvYmplY3Qgd2FzIG5vdCBmbGFnZ2VkIGFzIGRlbGV0ZWQnLCBm
YWxzZSwgdHJ1ZSk7CisgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICBhc3NlcnRNc2dPcHRp
b25zKCFnbC5pc1Byb2dyYW0ocHJvZ3JhbUlkKSwgJ0RlbGV0ZWQgcHJvZ3JhbSBuYW1lIHN0aWxs
IHZhbGlkIGFmdGVyIGJlaW5nIG1hZGUgbm9uLWN1cnJlbnQnLCBmYWxzZSwgdHJ1ZSk7CisgICAg
dGVzdFBhc3NlZCgpOworfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHt0
Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0g
e3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Z2xzTGlmZXRpbWVUZXN0cy5BdHRhY2hl
cn0gYXR0YWNoZXIKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gdGVzdAorICovCitnbHNMaWZldGlt
ZVRlc3RzLkF0dGFjaG1lbnRUZXN0ID0gZnVuY3Rpb24obmFtZSwgZGVzY3JpcHRpb24sIGF0dGFj
aGVyLCB0ZXN0KSB7CisgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBuYW1lLCBk
ZXNjcmlwdGlvbik7CisgICAgdGhpcy5tX2F0dGFjaGVyID0gYXR0YWNoZXI7CisgICAgdGhpcy5t
X3Rlc3QgPSB0ZXN0OworfTsKKworc2V0UGFyZW50Q2xhc3MoZ2xzTGlmZXRpbWVUZXN0cy5BdHRh
Y2htZW50VGVzdCwgdGN1VGVzdENhc2UuRGVxcFRlc3QpOworCitnbHNMaWZldGltZVRlc3RzLkF0
dGFjaG1lbnRUZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5t
X3Rlc3QoKTsKKyAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworfTsK
KworLyoqCisgKiBAdGhpcyB7Z2xzTGlmZXRpbWVUZXN0cy5BdHRhY2htZW50VGVzdH0KKyAqLwor
Z2xzTGlmZXRpbWVUZXN0cy5BdHRhY2htZW50VGVzdC50ZXN0RGVsZXRlZE5hbWVzID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGdldEF0dGFjaG1lbnQgPSBmdW5jdGlvbihhdHRhY2hlciwgY29udGFp
bmVyKSB7CisgICAgICAgIHZhciBxdWVyaWVkQXR0YWNobWVudCA9IGF0dGFjaGVyLmdldEF0dGFj
aG1lbnQoY29udGFpbmVyKTsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jlc3VsdCBv
ZiBxdWVyeSBmb3IgJyArIGF0dGFjaGVyLmdldEVsZW1lbnRUeXBlKCkuZ2V0TmFtZSgpICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgJyBhdHRhY2hlZCB0byAnICsgYXR0YWNoZXIuZ2V0Q29udGFp
bmVyVHlwZSgpLmdldE5hbWUoKSArICcgJyArCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRh
aW5lciArICc6ICcgKyBxdWVyaWVkQXR0YWNobWVudCk7CisgICAgICAgIHJldHVybiBxdWVyaWVk
QXR0YWNobWVudDsKKyAgICB9OworCisgICAgdmFyIGVsZW1UeXBlID0gdGhpcy5tX2F0dGFjaGVy
LmdldEVsZW1lbnRUeXBlKCk7CisgICAgdmFyIGNvbnRhaW5lclR5cGUgPSB0aGlzLm1fYXR0YWNo
ZXIuZ2V0Q29udGFpbmVyVHlwZSgpOworICAgIHZhciBjb250YWluZXIgPSBjb250YWluZXJUeXBl
LmdlbigpOworCisgICAgdmFyIGVsZW1lbnQgPSBlbGVtVHlwZS5nZW4oKTsKKyAgICB0aGlzLm1f
YXR0YWNoZXIuaW5pdEF0dGFjaG1lbnQoMCwgZWxlbWVudCk7CisgICAgdGhpcy5tX2F0dGFjaGVy
LmF0dGFjaChlbGVtZW50LCBjb250YWluZXIpOworICAgIGFzc2VydE1zZ09wdGlvbnMoZ2V0QXR0
YWNobWVudCh0aGlzLm1fYXR0YWNoZXIsIGNvbnRhaW5lcikgPT0gZWxlbWVudCwKKyAgICAgICAg
ICAgICAgICAgJ0F0dGFjaG1lbnQgbm90IHJldHVybmVkIGJ5IHF1ZXJ5IGV2ZW4gYmVmb3JlIGRl
bGV0aW9uLicsIGZhbHNlLCB0cnVlKTsKKworICAgIGVsZW1UeXBlLnJlbGVhc2UoZWxlbWVudCk7
CisgICAgLy8gIlN1Y2ggYSBjb250YWluZXIgb3Igb3RoZXIgY29udGV4dCBtYXkgY29udGludWUg
dXNpbmcgdGhlIG9iamVjdCwgYW5kCisgICAgLy8gbWF5IHN0aWxsIGNvbnRhaW4gc3RhdGUgaWRl
bnRpZnlpbmcgaXRzIG5hbWUgYXMgYmVpbmcgY3VycmVudGx5IGJvdW5kIgorICAgIC8vCisgICAg
Ly8gV2UgaGVyZSBpbnRlcnByZXQgIm1heSIgdG8gbWVhbiB0aGF0IHdoZW5ldmVyIHRoZSBjb250
YWluZXIgaGFzIGEKKyAgICAvLyBkZWxldGVkIG9iamVjdCBhdHRhY2hlZCB0byBpdCwgYSBxdWVy
eSB3aWxsIHJldHVybiB0aGF0IG9iamVjdCdzIGZvcm1lcgorICAgIC8vIG5hbWUuCisgICAgYXNz
ZXJ0TXNnT3B0aW9ucyhnZXRBdHRhY2htZW50KHRoaXMubV9hdHRhY2hlciwgY29udGFpbmVyKSA9
PSBlbGVtZW50LAorICAgICAgICAgICAgICAgICAnQXR0YWNobWVudCBuYW1lIG5vdCByZXR1cm5l
ZCBieSBxdWVyeSBhZnRlciBhdHRhY2htZW50IHdhcyBkZWxldGVkLicsIGZhbHNlLCB0cnVlKTsK
KworICAgIGlmIChlbGVtVHlwZS5uYW1lTGluZ2VycygpKQorICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKGVsZW1UeXBlLmV4aXN0cyhlbGVtZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICdBdHRh
Y2hlZCBvYmplY3QgbmFtZSBubyBsb25nZXIgdmFsaWQgYWZ0ZXIgZGVsZXRpb24uJywgZmFsc2Us
IHRydWUpOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghZWxlbVR5cGUuZXhp
c3RzKGVsZW1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgJ0F0dGFjaGVkIG9iamVjdCBuYW1l
IHN0aWxsIHZhbGlkIGFmdGVyIGRlbGV0aW9uLicsIGZhbHNlLCB0cnVlKTsKKworICAgIHRoaXMu
bV9hdHRhY2hlci5kZXRhY2goZWxlbWVudCwgY29udGFpbmVyKTsKKyAgICBhc3NlcnRNc2dPcHRp
b25zKGdldEF0dGFjaG1lbnQodGhpcy5tX2F0dGFjaGVyLCBjb250YWluZXIpID09IG51bGwsCisg
ICAgICAgICAgICAgICAgICdBdHRhY2htZW50IG5hbWUgcmV0dXJuZWQgYnkgcXVlcnkgZXZlbiBh
ZnRlciBkZXRhY2htZW50LicsIGZhbHNlLCB0cnVlKTsKKyAgICBhc3NlcnRNc2dPcHRpb25zKCFl
bGVtVHlwZS5leGlzdHMoZWxlbWVudCksCisgICAgICAgICAgICAgICAgICdEZWxldGVkIGF0dGFj
aGVkIG9iamVjdCBuYW1lIHN0aWxsIHVzYWJsZSBhZnRlciBkZXRhY2htZW50LicsIGZhbHNlLCB0
cnVlKTsKKyAgICB0ZXN0UGFzc2VkKCk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICogQHBhcmFtIHtnbHNMaWZldGltZVRl
c3RzLklucHV0QXR0YWNoZXJ9IGF0dGFjaGVyCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuSW5wdXRB
dHRhY2htZW50VGVzdCA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBhdHRhY2hlcikgewor
ICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOwor
ICAgIHRoaXMubV9pbnB1dEF0dGFjaGVyID0gYXR0YWNoZXI7Cit9OworCitzZXRQYXJlbnRDbGFz
cyhnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNobWVudFRlc3QsIHRjdVRlc3RDYXNlLkRlcXBU
ZXN0KTsKKworZ2xzTGlmZXRpbWVUZXN0cy5JbnB1dEF0dGFjaG1lbnRUZXN0LnByb3RvdHlwZS5p
dGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGF0dGFjaGVyID0gdGhpcy5tX2lucHV0QXR0
YWNoZXIuZ2V0QXR0YWNoZXIoKTsKKyAgICB2YXIgY29udGFpbmVyVHlwZSA9IGF0dGFjaGVyLmdl
dENvbnRhaW5lclR5cGUoKTsKKyAgICB2YXIgZWxlbWVudFR5cGUgPSBhdHRhY2hlci5nZXRFbGVt
ZW50VHlwZSgpOworICAgIHZhciBjb250YWluZXIgPSBjb250YWluZXJUeXBlLmdlbigpOworCisg
ICAgZ2xzTGlmZXRpbWVUZXN0cy5JbnB1dEF0dGFjaG1lbnRUZXN0LnNlZWQgPSBnbHNMaWZldGlt
ZVRlc3RzLklucHV0QXR0YWNobWVudFRlc3Quc2VlZCB8fCAwOworICAgICsrZ2xzTGlmZXRpbWVU
ZXN0cy5JbnB1dEF0dGFjaG1lbnRUZXN0LnNlZWQ7CisgICAgdmFyIHJuZCA9IG5ldyBkZVJhbmRv
bS5SYW5kb20oZ2xzTGlmZXRpbWVUZXN0cy5JbnB1dEF0dGFjaG1lbnRUZXN0LnNlZWQpOworICAg
IHZhciByZWZTZWVkID0gcm5kLmdldEludCgpOworICAgIHZhciBuZXdTZWVkID0gcm5kLmdldElu
dCgpOworCisgICAgdmFyIHJlZlN1cmZhY2UgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKFZJRVdQ
T1JUX1NJWkUsIFZJRVdQT1JUX1NJWkUpOyAvLyBTdXJmYWNlIGZyb20gZHJhd2luZyB3aXRoIHJl
ZlNlZWQtc2VlZGVkIGF0dGFjaG1lbnQKKyAgICB2YXIgZGVsU3VyZmFjZSA9IG5ldyB0Y3VTdXJm
YWNlLlN1cmZhY2UoVklFV1BPUlRfU0laRSwgVklFV1BPUlRfU0laRSk7IC8vIFN1cmZhY2UgZnJv
bSBkcmF3aW5nIHdpdGggZGVsZXRlZCByZWZTZWVkIGF0dGFjaG1lbnQKKyAgICB2YXIgbmV3U3Vy
ZmFjZSA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoVklFV1BPUlRfU0laRSwgVklFV1BPUlRfU0la
RSk7IC8vIFN1cmZhY2UgZnJvbSBkcmF3aW5nIHdpdGggbmV3U2VlZC1zZWVkZWQgYXR0YWNobWVu
dAorCisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Rlc3RpbmcgaWYgd3JpdGluZyB0byBhIG5l
d2x5IGNyZWF0ZWQgb2JqZWN0IG1vZGlmaWVzIGEgZGVsZXRlZCBhdHRhY2htZW50Jyk7CisKKyAg
ICBidWZmZXJlZExvZ1RvQ29uc29sZSgnV3JpdGluZyB0byBhbiBvcmlnaW5hbCBhdHRhY2htZW50
Jyk7CisgICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50VHlwZS5nZW4oKTsKKworICAgIGF0dGFjaGVy
LmluaXRBdHRhY2htZW50KHJlZlNlZWQsIGVsZW1lbnQpOworICAgIGF0dGFjaGVyLmF0dGFjaChl
bGVtZW50LCBjb250YWluZXIpOworICAgIHRoaXMubV9pbnB1dEF0dGFjaGVyLmRyYXdDb250YWlu
ZXIoY29udGFpbmVyLCByZWZTdXJmYWNlKTsKKyAgICAvLyBlbGVtZW50IGdldHMgZGVsZXRlZCBo
ZXJlCisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ0RlbGV0aW5nIGF0dGFjaG1lbnQnKTsKKyAg
ICBlbGVtZW50VHlwZS5yZWxlYXNlKGVsZW1lbnQpOworCisgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoJ1dyaXRpbmcgdG8gYSBuZXcgYXR0YWNobWVudCBhZnRlciBkZWxldGluZyB0aGUgb3JpZ2lu
YWwnKTsKKyAgICB2YXIgbmV3RWxlbWVudCA9IGVsZW1lbnRUeXBlLmdlbigpOworCisgICAgYXR0
YWNoZXIuaW5pdEF0dGFjaG1lbnQobmV3U2VlZCwgbmV3RWxlbWVudCk7CisKKyAgICB0aGlzLm1f
aW5wdXRBdHRhY2hlci5kcmF3Q29udGFpbmVyKGNvbnRhaW5lciwgZGVsU3VyZmFjZSk7CisgICAg
YXR0YWNoZXIuZGV0YWNoKGVsZW1lbnQsIGNvbnRhaW5lcik7CisKKyAgICBhdHRhY2hlci5hdHRh
Y2gobmV3RWxlbWVudCwgY29udGFpbmVyKTsKKyAgICB0aGlzLm1faW5wdXRBdHRhY2hlci5kcmF3
Q29udGFpbmVyKGNvbnRhaW5lciwgbmV3U3VyZmFjZSk7CisgICAgYXR0YWNoZXIuZGV0YWNoKG5l
d0VsZW1lbnQsIGNvbnRhaW5lcik7CisgICAgdmFyIHN1cmZhY2VzTWF0Y2ggPSB0Y3VJbWFnZUNv
bXBhcmUucGl4ZWxUaHJlc2hvbGRDb21wYXJlKAorICAgICAgICAnUmVhZGluZyBmcm9tIGRlbGV0
ZWQnLAorICAgICAgICAnQ29tcGFyaXNvbiByZXN1bHQgZnJvbSByZWFkaW5nIGZyb20gYSBjb250
YWluZXIgd2l0aCBhIGRlbGV0ZWQgYXR0YWNobWVudCAnICsKKyAgICAgICAgJ2JlZm9yZSBhbmQg
YWZ0ZXIgd3JpdGluZyB0byBhIGZyZXNoIG9iamVjdC4nLAorICAgICAgICByZWZTdXJmYWNlLCBk
ZWxTdXJmYWNlLCBbMCwgMCwgMCwgMF0pOworCisgICAgLyogVE9ETzogQWRkIGxvZ2dpbmcgaW1h
Z2VzICovCisgICAgLy8gaWYgKCFzdXJmYWNlc01hdGNoKQorICAgIC8vICAgICBsb2coKSA8PCBU
ZXN0TG9nOjpJbWFnZSgiTmV3IGF0dGFjaG1lbnQiLAorICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ29udGFpbmVyIHN0YXRlIGFmdGVyIGF0dGFjaGVkIHRvIHRoZSBmcmVzaCBv
YmplY3QiLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdXJmYWNlKTsK
KworICAgIGFzc2VydE1zZ09wdGlvbnMoc3VyZmFjZXNNYXRjaCwKKyAgICAgICAgJ1dyaXRpbmcg
dG8gYSBmcmVzaCBvYmplY3QgbW9kaWZpZWQgdGhlIGNvbnRhaW5lciB3aXRoIGEgZGVsZXRlZCBh
dHRhY2htZW50LicsIGZhbHNlLCB0cnVlKTsKKworICAgIHRlc3RQYXNzZWQoKTsKKyAgICByZXR1
cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworfTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Z2xz
TGlmZXRpbWVUZXN0cy5PdXRwdXRBdHRhY2hlcn0gYXR0YWNoZXIKKyAqLworZ2xzTGlmZXRpbWVU
ZXN0cy5PdXRwdXRBdHRhY2htZW50VGVzdCA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBh
dHRhY2hlcikgeworICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVz
Y3JpcHRpb24pOworICAgIHRoaXMubV9vdXRwdXRBdHRhY2hlciA9IGF0dGFjaGVyOworfTsKKwor
c2V0UGFyZW50Q2xhc3MoZ2xzTGlmZXRpbWVUZXN0cy5PdXRwdXRBdHRhY2htZW50VGVzdCwgdGN1
VGVzdENhc2UuRGVxcFRlc3QpOworCitnbHNMaWZldGltZVRlc3RzLk91dHB1dEF0dGFjaG1lbnRU
ZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGF0dGFjaGVyID0g
dGhpcy5tX291dHB1dEF0dGFjaGVyLmdldEF0dGFjaGVyKCk7CisgICAgdmFyIGNvbnRhaW5lclR5
cGUgPSBhdHRhY2hlci5nZXRDb250YWluZXJUeXBlKCk7CisgICAgdmFyIGVsZW1lbnRUeXBlID0g
YXR0YWNoZXIuZ2V0RWxlbWVudFR5cGUoKTsKKyAgICB2YXIgY29udGFpbmVyID0gY29udGFpbmVy
VHlwZS5nZW4oKTsKKyAgICBnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNobWVudFRlc3Quc2Vl
ZCA9IGdsc0xpZmV0aW1lVGVzdHMuSW5wdXRBdHRhY2htZW50VGVzdC5zZWVkIHx8IDA7CisgICAg
KytnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNobWVudFRlc3Quc2VlZDsKKyAgICB2YXIgcm5k
ID0gbmV3IGRlUmFuZG9tLlJhbmRvbShnbHNMaWZldGltZVRlc3RzLklucHV0QXR0YWNobWVudFRl
c3Quc2VlZCk7CisgICAgdmFyIHJlZlNlZWQgPSBybmQuZ2V0SW50KCk7CisgICAgdmFyIG5ld1Nl
ZWQgPSBybmQuZ2V0SW50KCk7CisKKyAgICB2YXIgcmVmU3VyZmFjZSA9IG5ldyB0Y3VTdXJmYWNl
LlN1cmZhY2UoVklFV1BPUlRfU0laRSwgVklFV1BPUlRfU0laRSk7IC8vIFN1cmZhY2UgZnJvbSBk
cmF3aW5nIHdpdGggcmVmU2VlZC1zZWVkZWQgYXR0YWNobWVudAorICAgIHZhciBkZWxTdXJmYWNl
ID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShWSUVXUE9SVF9TSVpFLCBWSUVXUE9SVF9TSVpFKTsg
Ly8gU3VyZmFjZSBmcm9tIGRyYXdpbmcgd2l0aCBkZWxldGVkIHJlZlNlZWQgYXR0YWNobWVudAor
ICAgIHZhciBuZXdTdXJmYWNlID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShWSUVXUE9SVF9TSVpF
LCBWSUVXUE9SVF9TSVpFKTsgLy8gU3VyZmFjZSBmcm9tIGRyYXdpbmcgd2l0aCBuZXdTZWVkLXNl
ZWRlZCBhdHRhY2htZW50CisKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnVGVzdGluZyBpZiB3
cml0aW5nIHRvIGEgY29udGFpbmVyIHdpdGggYSBkZWxldGVkIGF0dGFjaG1lbnQgJyArCisgICAg
ICAgICAgJ21vZGlmaWVzIGEgbmV3bHkgY3JlYXRlZCBvYmplY3QnKTsKKworICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCdXcml0aW5nIHRvIGEgY29udGFpbmVyIHdpdGggYW4gZXhpc3RpbmcgYXR0
YWNobWVudCcpOworICAgIHZhciBlbGVtZW50ID0gZWxlbWVudFR5cGUuZ2VuKCk7CisKKyAgICBh
dHRhY2hlci5pbml0QXR0YWNobWVudCgwLCBlbGVtZW50KTsKKyAgICBhdHRhY2hlci5hdHRhY2go
ZWxlbWVudCwgY29udGFpbmVyKTsKKworICAgIC8vIEZvciByZWZlcmVuY2UgcHVycG9zZXMsIG1h
a2Ugbm90ZSBvZiB3aGF0IHJlZlNlZWQgbG9va3MgbGlrZS4KKyAgICB0aGlzLm1fb3V0cHV0QXR0
YWNoZXIuc2V0dXBDb250YWluZXIocmVmU2VlZCwgY29udGFpbmVyKTsKKyAgICAvLyBTaW5jZSBp
biBXZWJHTCwgYnVmZmVyIGJvdW5kIHRvIFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIgY2FuIG5v
dCBiZSBib3VuZCB0byBvdGhlciB0YXJnZXRzLgorICAgIC8vIFVuZm9ydHVuYXRlbHksIGVsZW1l
bnQgd2lsbCBiZSBib3VuZCBhZ2FpbiBpbiBkcmF3QXR0YWNobWVudCgpIGZvciBkcmF3aW5nLgor
ICAgIC8vIERldGFjaCBlbGVtZW50IGZyb20gY29udGFpbmVyIGJlZm9yZSBkcmF3aW5nLCB0aGVu
IHJlYXR0YWNoIGl0IGFmdGVyIGRyYXdpbmcuCisgICAgYXR0YWNoZXIuZGV0YWNoKGVsZW1lbnQs
IGNvbnRhaW5lcik7CisgICAgdGhpcy5tX291dHB1dEF0dGFjaGVyLmRyYXdBdHRhY2htZW50KGVs
ZW1lbnQsIHJlZlN1cmZhY2UpOworICAgIGF0dGFjaGVyLmF0dGFjaChlbGVtZW50LCBjb250YWlu
ZXIpOworICAgIGVsZW1lbnRUeXBlLnJlbGVhc2UoZWxlbWVudCk7CisKKyAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnV3JpdGluZyB0byBhIGNvbnRhaW5lciBhZnRlciBkZWxldGlvbiBvZiBhdHRh
Y2htZW50Jyk7CisgICAgdmFyIG5ld0VsZW1lbnQgPSBlbGVtZW50VHlwZS5nZW4oKTsKKyAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgnQ3JlYXRpbmcgYSBuZXcgb2JqZWN0ICcpOworCisgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoJ1JlY29yZGluZyBzdGF0ZSBvZiBuZXcgb2JqZWN0IGJlZm9yZSB3
cml0aW5nIHRvIGNvbnRhaW5lcicpOworICAgIGF0dGFjaGVyLmluaXRBdHRhY2htZW50KG5ld1Nl
ZWQsIG5ld0VsZW1lbnQpOworICAgIHRoaXMubV9vdXRwdXRBdHRhY2hlci5kcmF3QXR0YWNobWVu
dChuZXdFbGVtZW50LCBuZXdTdXJmYWNlKTsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdX
cml0aW5nIHRvIGNvbnRhaW5lcicpOworCisgICAgLy8gTm93IHJlLXdyaXRlIHJlZlNlZWQgdG8g
dGhlIGNvbnRhaW5lci4KKyAgICB0aGlzLm1fb3V0cHV0QXR0YWNoZXIuc2V0dXBDb250YWluZXIo
cmVmU2VlZCwgY29udGFpbmVyKTsKKyAgICAvLyBEb2VzIGl0IGFmZmVjdCB0aGUgbmV3bHkgY3Jl
YXRlZCBhdHRhY2htZW50IG9iamVjdD8KKyAgICB0aGlzLm1fb3V0cHV0QXR0YWNoZXIuZHJhd0F0
dGFjaG1lbnQobmV3RWxlbWVudCwgZGVsU3VyZmFjZSk7CisgICAgYXR0YWNoZXIuZGV0YWNoKGVs
ZW1lbnQsIGNvbnRhaW5lcik7CisKKyAgICB2YXIgc3VyZmFjZXNNYXRjaCA9IHRjdUltYWdlQ29t
cGFyZS5waXhlbFRocmVzaG9sZENvbXBhcmUoCisgICAgICAgICdXcml0aW5nIHRvIGRlbGV0ZWQn
LAorICAgICAgICAnQ29tcGFyaXNvbiByZXN1bHQgZnJvbSByZWFkaW5nIGZyb20gYSBmcmVzaCBv
YmplY3QgYmVmb3JlIGFuZCBhZnRlciAnICsKKyAgICAgICAgJ3dyaXRpbmcgdG8gYSBjb250YWlu
ZXIgd2l0aCBhIGRlbGV0ZWQgYXR0YWNobWVudCcsCisgICAgICAgIG5ld1N1cmZhY2UsIGRlbFN1
cmZhY2UsIFswLCAwLCAwLCAwXSk7CisKKyAgICAvKiBUT0RPOiBBZGQgbG9nZ2luZyBpbWFnZXMg
Ki8KKyAgICAvLyBpZiAoIXN1cmZhY2VzTWF0Y2gpCisgICAgLy8gICAgIGxvZygpIDw8IFRlc3RM
b2c6OkltYWdlKAorICAgIC8vICAgICAgICAgIk9yaWdpbmFsIGF0dGFjaG1lbnQiLAorICAgIC8v
ICAgICAgICAgIlJlc3VsdCBvZiBjb250YWluZXIgbW9kaWZpY2F0aW9uIG9uIG9yaWdpbmFsIGF0
dGFjaG1lbnQgYmVmb3JlIGRlbGV0aW9uLiIsCisgICAgLy8gICAgICAgICByZWZTdXJmYWNlKTsK
KworICAgIGFzc2VydE1zZ09wdGlvbnMoc3VyZmFjZXNNYXRjaCwKKyAgICAgICAgICAgICAgICAg
J1dyaXRpbmcgdG8gY29udGFpbmVyIHdpdGggZGVsZXRlZCBhdHRhY2htZW50IG1vZGlmaWVkIGEg
bmV3IG9iamVjdC4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICB0ZXN0UGFzc2VkKCk7CisgICAgcmV0
dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKK307CisKK2dsc0xpZmV0aW1lVGVz
dHMuY3JlYXRlTGlmZVRlc3RHcm91cCA9IGZ1bmN0aW9uKHNwZWMsIHR5cGVzKSB7CisgICAgdmFy
IGdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdChzcGVjLm5hbWUsIHNwZWMubmFtZSk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB0
eXBlID0gdHlwZXNbaV07CisgICAgICAgIHZhciBuYW1lID0gdHlwZS5nZXROYW1lKCk7CisgICAg
ICAgIGlmICghc3BlYy5uZWVkQmluZCB8fCB0eXBlLmJpbmRlcigpICE9IG51bGwpCisgICAgICAg
ICAgICBncm91cC5hZGRDaGlsZChuZXcgZ2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdChuYW1lLCBu
YW1lLCB0eXBlLCBzcGVjLmZ1bmMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ3JvdXA7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7dGN1VGVzdENhc2UuRGVxcFRlc3R9IGdyb3VwCisgKiBAcGFyYW0g
e2dsc0xpZmV0aW1lVGVzdHMuVHlwZXN9IHR5cGVzCisgKi8KK2dsc0xpZmV0aW1lVGVzdHMuYWRk
VGVzdENhc2VzID0gZnVuY3Rpb24oZ3JvdXAsIHR5cGVzKSB7CisgICAgdmFyIGF0dGFjaGVyTmFt
ZSA9IGZ1bmN0aW9uKGF0dGFjaGVyKSB7CisgICAgICAgIHJldHVybiBhdHRhY2hlci5nZXRFbGVt
ZW50VHlwZSgpLmdldE5hbWUoKSArICdfJyArIGF0dGFjaGVyLmdldENvbnRhaW5lclR5cGUoKS5n
ZXROYW1lKCk7CisgICAgfTsKKworICAgIHZhciBzX2xpZmVUZXN0cyA9IFsKKyAgICAgICAgLyog
Q3JlYXRlICovIHsgbmFtZTogJ2dlbicsIGZ1bmM6IGdsc0xpZmV0aW1lVGVzdHMuTGlmZVRlc3Qu
dGVzdEdlbiwgbmVlZEJpbmQ6IGZhbHNlIH0sCisgICAgICAgIC8qIERlbGV0ZSAqLyB7IG5hbWU6
ICdkZWxldGUnLCBmdW5jOiBnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0LnRlc3REZWxldGUsIG5l
ZWRCaW5kOiBmYWxzZSB9LAorICAgICAgICAvKiBCaW5kICovIHsgbmFtZTogJ2JpbmQnLCBmdW5j
OiBnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0LnRlc3RCaW5kLCBuZWVkQmluZDogdHJ1ZSB9LAor
ICAgICAgICAvKiBEZWxldGUgYm91bmQgKi8geyBuYW1lOiAnZGVsZXRlX2JvdW5kJywgZnVuYzog
Z2xzTGlmZXRpbWVUZXN0cy5MaWZlVGVzdC50ZXN0RGVsZXRlQm91bmQsIG5lZWRCaW5kOiB0cnVl
IH0KKyAgICBdOworCisgICAgc19saWZlVGVzdHMuZm9yRWFjaChmdW5jdGlvbihzcGVjKSB7Cisg
ICAgICAgIGdyb3VwLmFkZENoaWxkKGdsc0xpZmV0aW1lVGVzdHMuY3JlYXRlTGlmZVRlc3RHcm91
cChzcGVjLCB0eXBlcy5nZXRUeXBlcygpKSk7CisgICAgfSk7CisKKyAgICB2YXIgZGVsVXNlZEdy
b3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnZGVsZXRlX3VzZWQnLCAnRGVsZXRlIGN1cnJlbnQg
cHJvZ3JhbScpOworICAgIGdyb3VwLmFkZENoaWxkKGRlbFVzZWRHcm91cCk7CisKKyAgICBkZWxV
c2VkR3JvdXAuYWRkQ2hpbGQobmV3IGdsc0xpZmV0aW1lVGVzdHMuTGlmZVRlc3QoJ3Byb2dyYW0n
LCAncHJvZ3JhbScsIHR5cGVzLmdldFByb2dyYW1UeXBlKCksCisgICAgICAgICAgICAgICAgICAg
ICBnbHNMaWZldGltZVRlc3RzLkxpZmVUZXN0LnRlc3REZWxldGVVc2VkKSk7CisKKyAgICB2YXIg
YXR0R3JvdXAgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdhdHRhY2gnLCAnQXR0YWNobWVudCB0ZXN0
cycpOworICAgIGdyb3VwLmFkZENoaWxkKGF0dEdyb3VwKTsKKworICAgIHZhciBuYW1lR3JvdXAg
PSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KCdkZWxldGVkX25hbWUnLCAnTmFtZSBvZiBkZWxldGVkIGF0
dGFjaG1lbnQnKTsKKyAgICBhdHRHcm91cC5hZGRDaGlsZChuYW1lR3JvdXApOworCisgICAgdmFy
IGF0dHMgPSB0eXBlcy5nZXRBdHRhY2hlcnMoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0
dHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGF0dCA9IGF0dHNbaV07CisgICAgICAgIHZh
ciBuYW1lID0gYXR0YWNoZXJOYW1lKGF0dCk7CisgICAgICAgIG5hbWVHcm91cC5hZGRDaGlsZChu
ZXcgZ2xzTGlmZXRpbWVUZXN0cy5BdHRhY2htZW50VGVzdChuYW1lLCBuYW1lLCBhdHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc0xpZmV0aW1lVGVz
dHMuQXR0YWNobWVudFRlc3QudGVzdERlbGV0ZWROYW1lcykpOworICAgIH0KKworICAgIHZhciBp
bnB1dEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnZGVsZXRlZF9pbnB1dCcsICdJbnB1dCBm
cm9tIGRlbGV0ZWQgYXR0YWNobWVudCcpOworICAgIGF0dEdyb3VwLmFkZENoaWxkKGlucHV0R3Jv
dXApOworCisgICAgdmFyIGluQXR0cyA9IHR5cGVzLmdldElucHV0QXR0YWNoZXJzKCk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBpbkF0dHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGF0
dCA9IGluQXR0c1tpXTsKKyAgICAgICAgdmFyIG5hbWUgPSBhdHRhY2hlck5hbWUoYXR0LmdldEF0
dGFjaGVyKCkpOworICAgICAgICBpbnB1dEdyb3VwLmFkZENoaWxkKG5ldyBnbHNMaWZldGltZVRl
c3RzLklucHV0QXR0YWNobWVudFRlc3QobmFtZSwgbmFtZSwgYXR0KSk7CisgICAgfQorCisgICAg
dmFyIG91dHB1dEdyb3VwID0gdGN1VGVzdENhc2UubmV3VGVzdCgnZGVsZXRlZF9vdXRwdXQnLCAn
T3V0cHV0IHRvIGRlbGV0ZWQgYXR0YWNobWVudCcpOworICAgIGF0dEdyb3VwLmFkZENoaWxkKG91
dHB1dEdyb3VwKTsKKworICAgIHZhciBvdXRBdHRzID0gdHlwZXMuZ2V0T3V0cHV0QXR0YWNoZXJz
KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRBdHRzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHZhciBhdHQgPSBvdXRBdHRzW2ldOworICAgICAgICB2YXIgbmFtZSA9IGF0dGFjaGVyTmFt
ZShhdHQuZ2V0QXR0YWNoZXIoKSk7CisgICAgICAgIG91dHB1dEdyb3VwLmFkZENoaWxkKG5ldyBn
bHNMaWZldGltZVRlc3RzLk91dHB1dEF0dGFjaG1lbnRUZXN0KG5hbWUsIG5hbWUsIGF0dCkpOwor
ICAgIH0KKworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1JhbmRvbVVuaWZvcm1C
bG9ja0Nhc2UuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjBiOGRjZDQ3MjFlMTBhZjI4MmMyZTBkMWQzNzM2ODdmMGJkMDllNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvbW9kdWxlcy9zaGFyZWQvZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5qcwpAQCAtMCwwICsx
LDI4MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9n
cmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlk
ZSgnbW9kdWxlcy5zaGFyZWQuZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVs
aWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnbW9kdWxlcy5zaGFyZWQuZ2xzVW5pZm9ybUJs
b2NrQ2FzZScpOworCitnb29nLnNjb3BlKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIGdsc1JhbmRv
bVVuaWZvcm1CbG9ja0Nhc2UgPSBtb2R1bGVzLnNoYXJlZC5nbHNSYW5kb21Vbmlmb3JtQmxvY2tD
YXNlOworICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJV
dGlsOworICAgIHZhciBnbHNVbmlmb3JtQmxvY2tDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xzVW5p
Zm9ybUJsb2NrQ2FzZTsKKyAgICB2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1h
dGg7CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207
CisKKyAgICBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzID0geworICAgICAg
ICBGRUFUVVJFX1ZFQ1RPUlM6ICgxIDw8IDApLAorICAgICAgICBGRUFUVVJFX01BVFJJQ0VTOiAo
MSA8PCAxKSwKKyAgICAgICAgRkVBVFVSRV9BUlJBWVM6ICgxIDw8IDIpLAorICAgICAgICBGRUFU
VVJFX1NUUlVDVFM6ICgxIDw8IDMpLAorICAgICAgICBGRUFUVVJFX05FU1RFRF9TVFJVQ1RTOiAo
MSA8PCA0KSwKKyAgICAgICAgRkVBVFVSRV9JTlNUQU5DRV9BUlJBWVM6ICgxIDw8IDUpLAorICAg
ICAgICBGRUFUVVJFX1ZFUlRFWF9CTE9DS1M6ICgxIDw8IDYpLAorICAgICAgICBGRUFUVVJFX0ZS
QUdNRU5UX0JMT0NLUzogKDEgPDwgNyksCisgICAgICAgIEZFQVRVUkVfU0hBUkVEX0JMT0NLUzog
KDEgPDwgOCksCisgICAgICAgIEZFQVRVUkVfVU5VU0VEX1VOSUZPUk1TOiAoMSA8PCA5KSwKKyAg
ICAgICAgRkVBVFVSRV9VTlVTRURfTUVNQkVSUzogKDEgPDwgMTApLAorICAgICAgICBGRUFUVVJF
X1BBQ0tFRF9MQVlPVVQ6ICgxIDw8IDExKSwKKyAgICAgICAgRkVBVFVSRV9TSEFSRURfTEFZT1VU
OiAoMSA8PCAxMiksCisgICAgICAgIEZFQVRVUkVfU1REMTQwX0xBWU9VVDogKDEgPDwgMTMpLAor
ICAgICAgICBGRUFUVVJFX01BVFJJWF9MQVlPVVQ6ICgxIDw8IDE0KSwgLy8hPCBNYXRyaXggbGF5
b3V0IGZsYWdzLgorICAgICAgICBGRUFUVVJFX0FSUkFZU19PRl9BUlJBWVM6ICgxIDw8IDE1KQor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLlJhbmRv
bVVuaWZvcm1CbG9ja0Nhc2UgY2xhc3MKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSB7Z2xzVW5pZm9y
bUJsb2NrQ2FzZS5CdWZmZXJNb2RlfSBidWZmZXJNb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGZlYXR1cmVzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNlZWQKKyAgICAgKiBAY29uc3RydWN0
b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2tDYXNl
fQorICAgICAqLworICAgIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuUmFuZG9tVW5pZm9ybUJs
b2NrQ2FzZSA9IGZ1bmN0aW9uKG5hbWUsIGRlc2NyaXB0aW9uLCBidWZmZXJNb2RlLCBmZWF0dXJl
cywgc2VlZCkgeworICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2Uu
Y2FsbCh0aGlzLCBuYW1lLCBkZXNjcmlwdGlvbiwgYnVmZmVyTW9kZSk7CisgICAgICAgIHRoaXMu
bV9mZWF0dXJlcyA9IGZlYXR1cmVzOworICAgICAgICB0aGlzLm1fbWF4VmVydGV4QmxvY2tzID0g
KChmZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMuRkVBVFVS
RV9WRVJURVhfQkxPQ0tTKSA/IDQgOiAwKTsKKyAgICAgICAgdGhpcy5tX21heEZyYWdtZW50Qmxv
Y2tzID0gKChmZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMu
RkVBVFVSRV9GUkFHTUVOVF9CTE9DS1MpID8gNCA6IDApOworICAgICAgICB0aGlzLm1fbWF4U2hh
cmVkQmxvY2tzID0gKChmZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVy
ZUJpdHMuRkVBVFVSRV9TSEFSRURfQkxPQ0tTKSA/IDQgOiAwKTsKKyAgICAgICAgdGhpcy5tX21h
eEluc3RhbmNlcyA9ICgoZmVhdHVyZXMgJiBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1
cmVCaXRzLkZFQVRVUkVfSU5TVEFOQ0VfQVJSQVlTKSA/IDMgOiAwKTsKKyAgICAgICAgdGhpcy5t
X21heEFycmF5TGVuZ3RoID0gKChmZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2Uu
RmVhdHVyZUJpdHMuRkVBVFVSRV9BUlJBWVMpID8gOCA6IDApOworICAgICAgICB0aGlzLm1fbWF4
U3RydWN0RGVwdGggPSAoKGZlYXR1cmVzICYgZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5GZWF0
dXJlQml0cy5GRUFUVVJFX1NUUlVDVFMpID8gMiA6IDApOworICAgICAgICB0aGlzLm1fbWF4Qmxv
Y2tNZW1iZXJzID0gNTsKKyAgICAgICAgdGhpcy5tX21heFN0cnVjdE1lbWJlcnMgPSA0OworICAg
ICAgICB0aGlzLm1fc2VlZCA9IHNlZWQ7CisgICAgICAgIHRoaXMubV9ibG9ja05keCA9IDE7Cisg
ICAgICAgIHRoaXMubV91bmlmb3JtTmR4ID0gMTsKKyAgICAgICAgdGhpcy5tX3N0cnVjdE5keCA9
IDE7CisgICAgfTsKKworICAgIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuUmFuZG9tVW5pZm9y
bUJsb2NrQ2FzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUpOworICAgIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nh
c2UuUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnbHNSYW5k
b21Vbmlmb3JtQmxvY2tDYXNlLlJhbmRvbVVuaWZvcm1CbG9ja0Nhc2U7CisKKyAgICAvKioKKyAg
ICAgKiBnZW5lcmF0ZVR5cGUKKyAgICAgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHR5cGVEZXB0aAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
YXJyYXlPaworICAgICAqIEByZXR1cm4ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0KKyAg
ICAgKi8KKyAgICBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLlJhbmRvbVVuaWZvcm1CbG9ja0Nh
c2UucHJvdG90eXBlLmdlbmVyYXRlVHlwZSA9IGZ1bmN0aW9uKHJuZCwgdHlwZURlcHRoLCBhcnJh
eU9rKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RydWN0V2VpZ2h0ID0g
MC4xOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFycmF5V2VpZ2h0ID0gMC4x
OworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZsYWdzOworCisgICAgICAgIGlm
ICh0eXBlRGVwdGggPCB0aGlzLm1fbWF4U3RydWN0RGVwdGggJiYgcm5kLmdldEZsb2F0KCkgPCBz
dHJ1Y3RXZWlnaHQpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdW51
c2VkVnR4V2VpZ2h0ID0gMC4xNTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgdW51c2VkRnJhZ1dlaWdodCA9IDAuMTU7CisgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciB1bnVzZWRPayA9ICh0aGlzLm1fZmVhdHVyZXMgJiBnbHNSYW5kb21Vbmlmb3Jt
QmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfVU5VU0VEX01FTUJFUlMpICE9IDA7CisgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZT59ICov
IHZhciBtZW1iZXJUeXBlcyA9IFtdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBudW1NZW1iZXJzID0gcm5kLmdldEludCgxLCB0aGlzLm1fbWF4U3RydWN0TWVtYmVycyk7
CisKKyAgICAgICAgICAgIC8vIEdlbmVyYXRlIG1lbWJlcnMgZmlyc3Qgc28gbmVzdGVkIHN0cnVj
dCBkZWNsYXJhdGlvbnMgYXJlIGluIGNvcnJlY3Qgb3JkZXIuCisgICAgICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCBudW1NZW1iZXJzOyBuZHgrKykKKyAgICAgICAgICAgICAgICBtZW1i
ZXJUeXBlcy5wdXNoKHRoaXMuZ2VuZXJhdGVUeXBlKHJuZCwgdHlwZURlcHRoICsgMSwgdHJ1ZSkp
OworCisgICAgICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlw
ZX0gKi8gdmFyIHN0cnVjdFR5cGUgPSB0aGlzLm1faW50ZXJmYWNlLmFsbG9jU3RydWN0KCdzJyAr
IHRoaXMuZ2VuTmFtZSgnQScuY2hhckNvZGVBdCgwKSwgJ1onLmNoYXJDb2RlQXQoMCksIHRoaXMu
bV9zdHJ1Y3ROZHgpKTsKKyAgICAgICAgICAgIHRoaXMubV9zdHJ1Y3ROZHggKz0gMTsKKworICAg
ICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fYmxvY2tOZHggPD0gJ1onLmNoYXJDb2Rl
QXQoMCkgLSAnQScuY2hhckNvZGVBdCgwKSwgJ2dlbmVyYXRlVHlwZScsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IG51bU1lbWJlcnM7IG5keCsrKSB7
CisgICAgICAgICAgICAgICAgZmxhZ3MgPSAwOworCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0g
KHVudXNlZE9rICYmIHJuZC5nZXRGbG9hdCgpIDwgdW51c2VkVnR4V2VpZ2h0KSA/IGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlVOVVNFRF9WRVJURVggOiAwOworICAgICAgICAgICAg
ICAgIGZsYWdzIHw9ICh1bnVzZWRPayAmJiBybmQuZ2V0RmxvYXQoKSA8IHVudXNlZEZyYWdXZWln
aHQpID8gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0ZSQUdNRU5UIDog
MDsKKworICAgICAgICAgICAgICAgIHN0cnVjdFR5cGUuYWRkTWVtYmVyKCdtJyArICgnQScuY2hh
ckNvZGVBdCgwKSArIG5keCksIG1lbWJlclR5cGVzW25keF0sIGZsYWdzKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIGdsc1VuaWZvcm1CbG9ja0Nhc2UubmV3VmFyVHlwZVN0
cnVjdChzdHJ1Y3RUeXBlKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fbWF4QXJyYXlMZW5n
dGggPiAwICYmIGFycmF5T2sgJiYgcm5kLmdldEZsb2F0KCkgPCBhcnJheVdlaWdodCkgeworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYXJyYXlzT2ZBcnJheXNPayA9ICh0
aGlzLm1fZmVhdHVyZXMgJiBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZF
QVRVUkVfQVJSQVlTX09GX0FSUkFZUykgIT0gMDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgYXJyYXlMZW5ndGggPSBybmQuZ2V0SW50KDEsIHRoaXMubV9tYXhBcnJheUxl
bmd0aCk7CisgICAgICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlw
ZX0gKi8gdmFyIGVsZW1lbnRUeXBlID0gdGhpcy5nZW5lcmF0ZVR5cGUocm5kLCB0eXBlRGVwdGgs
IGFycmF5c09mQXJyYXlzT2spOworICAgICAgICAgICAgcmV0dXJuIGdsc1VuaWZvcm1CbG9ja0Nh
c2UubmV3VmFyVHlwZUFycmF5KGVsZW1lbnRUeXBlLCBhcnJheUxlbmd0aCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0YVR5
cGU+fSAqLyB2YXIgdHlwZUNhbmRpZGF0ZXMgPSBbXTsKKworICAgICAgICAgICAgdHlwZUNhbmRp
ZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKTsKKyAgICAgICAgICAgIHR5
cGVDYW5kaWRhdGVzLnB1c2goZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQpOworICAgICAgICAg
ICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlQpOworICAg
ICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0wp
OworCisgICAgICAgICAgICBpZiAodGhpcy5tX2ZlYXR1cmVzICYgZ2xzUmFuZG9tVW5pZm9ybUJs
b2NrQ2FzZS5GZWF0dXJlQml0cy5GRUFUVVJFX1ZFQ1RPUlMpIHsKKyAgICAgICAgICAgICAgICB0
eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMik7Cisg
ICAgICAgICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzMpOworICAgICAgICAgICAgICAgIHR5cGVDYW5kaWRhdGVzLnB1c2goZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0KTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlk
YXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzIpOworICAgICAgICAgICAg
ICAgIHR5cGVDYW5kaWRhdGVzLnB1c2goZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMyk7
CisgICAgICAgICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLklOVF9WRUM0KTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMyKTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlk
YXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzKTsKKyAgICAgICAgICAg
ICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUM0
KTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuQk9PTF9WRUMyKTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNoKGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzKTsKKyAgICAgICAgICAgICAgICB0eXBlQ2Fu
ZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHRoaXMubV9mZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZv
cm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMuRkVBVFVSRV9NQVRSSUNFUykgeworICAgICAgICAgICAg
ICAgIHR5cGVDYW5kaWRhdGVzLnB1c2goZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQy
KTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuRkxPQVRfTUFUMlgzKTsKKyAgICAgICAgICAgICAgICB0eXBlQ2FuZGlkYXRlcy5wdXNo
KGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gyKTsKKyAgICAgICAgICAgICAgICB0
eXBlQ2FuZGlkYXRlcy5wdXNoKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMyk7Cisg
ICAgICAgICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX01BVDNYNCk7CisgICAgICAgICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMik7CisgICAgICAgICAgICAgICAgdHlwZUNh
bmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMyk7CisgICAg
ICAgICAgICAgICAgdHlwZUNhbmRpZGF0ZXMucHVzaChnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciB0eXBlID0gKHJuZC5jaG9vc2UodHlwZUNhbmRpZGF0
ZXMpWzBdKTsKKyAgICAgICAgICAgIGZsYWdzID0gMDsKKworICAgICAgICAgICAgaWYgKCFnbHVT
aGFkZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKHR5cGUpKSB7CisgICAgICAgICAgICAgICAg
Ly8gUHJlY2lzaW9uLgorICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHByZWNpc2lvbkNhbmRpZGF0ZXMgPSBbZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuUFJFQ0lTSU9OX0xPVywgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJF
Q0lTSU9OX01FRElVTSwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9O
X0hJR0hdOworICAgICAgICAgICAgICAgIGZsYWdzIHw9IHJuZC5jaG9vc2UocHJlY2lzaW9uQ2Fu
ZGlkYXRlcylbMF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBnbHNVbmlm
b3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyh0eXBlLCBmbGFncyk7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgLyoqCisgICAgICogZ2VuTmFtZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBm
aXJzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXN0CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IG5keAorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNSYW5kb21Vbmlm
b3JtQmxvY2tDYXNlLlJhbmRvbVVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmdlbk5hbWUgPSBm
dW5jdGlvbihmaXJzdCwgbGFzdCwgbmR4KSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgc3RyID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYWxwaGFi
ZXRMZW4gPSBsYXN0IC0gZmlyc3QgKyAxOworCisgICAgICAgIHdoaWxlIChuZHggPiBhbHBoYWJl
dExlbikgeworICAgICAgICAgICAgc3RyID0gU3RyaW5nLmZyb21DaGFyQ29kZShmaXJzdCArICgo
bmR4IC0gMSkgJSBhbHBoYWJldExlbikpICsgc3RyOworICAgICAgICAgICAgbmR4ID0gTWF0aC5m
bG9vcigobmR4IC0gMSkgLyBhbHBoYWJldExlbik7CisgICAgICAgIH0KKworICAgICAgICBzdHIg
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKGZpcnN0ICsgKG5keCAlIChhbHBoYWJldExlbiArIDEpKSAt
IDEpICsgc3RyOworCisgICAgICAgIHJldHVybiBzdHI7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIGdlbmVyYXRlVW5pZm9ybQorICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQK
KyAgICAgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrfSBibG9jawor
ICAgICAqLworICAgIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuUmFuZG9tVW5pZm9ybUJsb2Nr
Q2FzZS5wcm90b3R5cGUuZ2VuZXJhdGVVbmlmb3JtID0gZnVuY3Rpb24ocm5kLCBibG9jaykgewor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHVudXNlZFZ0eFdlaWdodCA9IDAuMTU7
CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdW51c2VkRnJhZ1dlaWdodCA9IDAu
MTU7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHVudXNlZE9rID0gKHRoaXMu
bV9mZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMuRkVBVFVS
RV9VTlVTRURfVU5JRk9STVMpICE9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgZmxhZ3MgPSAwOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG5hbWUgPSB0
aGlzLmdlbk5hbWUoJ2EnLmNoYXJDb2RlQXQoMCksICd6Jy5jaGFyQ29kZUF0KDApLCB0aGlzLm1f
dW5pZm9ybU5keCk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJU
eXBlfSAqLyB2YXIgdHlwZSA9IHRoaXMuZ2VuZXJhdGVUeXBlKHJuZCwgMCwgdHJ1ZSk7IC8vVE9E
TzogaW1wbGVtZW50IHRoaXMuCisKKyAgICAgICAgZmxhZ3MgfD0gKHVudXNlZE9rICYmIHJuZC5n
ZXRGbG9hdCgpIDwgdW51c2VkVnR4V2VpZ2h0KSA/IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUZsYWdzLlVOVVNFRF9WRVJURVggOiAwOworICAgICAgICBmbGFncyB8PSAodW51c2VkT2sgJiYg
cm5kLmdldEZsb2F0KCkgPCB1bnVzZWRGcmFnV2VpZ2h0KSA/IGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUZsYWdzLlVOVVNFRF9GUkFHTUVOVCA6IDA7CisKKyAgICAgICAgYmxvY2suYWRkVW5p
Zm9ybShuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtKG5hbWUsIHR5cGUsIGZsYWdzKSk7
CisKKyAgICAgICAgdGhpcy5tX3VuaWZvcm1OZHggKz0gMTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogZ2VuZXJhdGVCbG9jaworICAgICAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGF5b3V0RmxhZ3MKKyAgICAgKi8KKyAgICBnbHNSYW5k
b21Vbmlmb3JtQmxvY2tDYXNlLlJhbmRvbVVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmdlbmVy
YXRlQmxvY2sgPSBmdW5jdGlvbihybmQsIGxheW91dEZsYWdzKSB7CisgICAgICAgIGFzc2VydE1z
Z09wdGlvbnModGhpcy5tX2Jsb2NrTmR4IDw9ICd6Jy5jaGFyQ29kZUF0KDApIC0gJ2EnLmNoYXJD
b2RlQXQoMCksICdnZW5lcmF0ZUJsb2NrJywgZmFsc2UsIHRydWUpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgaW5zdGFuY2VBcnJheVdlaWdodCA9IDAuMzsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJsb2Nr
ID0gdGhpcy5tX2ludGVyZmFjZS5hbGxvY0Jsb2NrKCdCbG9jaycgKyBTdHJpbmcuZnJvbUNoYXJD
b2RlKCdBJy5jaGFyQ29kZUF0KDApICsgdGhpcy5tX2Jsb2NrTmR4KSk7CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtSW5zdGFuY2VzID0gKHRoaXMubV9tYXhJbnN0YW5jZXMg
PiAwICYmIHJuZC5nZXRGbG9hdCgpIDwgaW5zdGFuY2VBcnJheVdlaWdodCkgPyBybmQuZ2V0SW50
KDAsIHRoaXMubV9tYXhJbnN0YW5jZXMpIDogMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBudW1Vbmlmb3JtcyA9IHJuZC5nZXRJbnQoMSwgdGhpcy5tX21heEJsb2NrTWVtYmVy
cyk7CisKKyAgICAgICAgaWYgKG51bUluc3RhbmNlcyA+IDApCisgICAgICAgICAgICBibG9jay5z
ZXRBcnJheVNpemUobnVtSW5zdGFuY2VzKTsKKworICAgICAgICBpZiAobnVtSW5zdGFuY2VzID4g
MCB8fCBybmQuZ2V0Qm9vbCgpKQorICAgICAgICAgICAgYmxvY2suc2V0SW5zdGFuY2VOYW1lKCdi
bG9jaycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDApICsgdGhpcy5tX2Js
b2NrTmR4KSk7CisKKyAgICAgICAgLy8gTGF5b3V0IGZsYWcgY2FuZGlkYXRlcy4KKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgbGF5b3V0RmxhZ0NhbmRpZGF0ZXMgPSBb
XTsKKyAgICAgICAgbGF5b3V0RmxhZ0NhbmRpZGF0ZXMucHVzaCgwKTsKKyAgICAgICAgaWYgKHRo
aXMubV9mZWF0dXJlcyAmIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuRmVhdHVyZUJpdHMuRkVB
VFVSRV9QQUNLRURfTEFZT1VUKQorICAgICAgICAgICAgbGF5b3V0RmxhZ0NhbmRpZGF0ZXMucHVz
aChnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfU0hBUkVEKTsKKyAgICAg
ICAgaWYgKCh0aGlzLm1fZmVhdHVyZXMgJiBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1
cmVCaXRzLkZFQVRVUkVfU0hBUkVEX0xBWU9VVCkgJiYgKChsYXlvdXRGbGFncyAmIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfQk9USCkgIT0gZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9CT1RIKSkKKyAgICAgICAgICAgIGxheW91dEZsYWdD
YW5kaWRhdGVzLnB1c2goZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1BB
Q0tFRCk7IC8vIFxub3RlIHBhY2tlZCBsYXlvdXQgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHNpbmds
ZSBzaGFkZXIgc3RhZ2UuCisgICAgICAgIGlmICh0aGlzLm1fZmVhdHVyZXMgJiBnbHNSYW5kb21V
bmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRzLkZFQVRVUkVfU1REMTQwX0xBWU9VVCkKKyAgICAg
ICAgICAgIGxheW91dEZsYWdDYW5kaWRhdGVzLnB1c2goZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtRmxhZ3MuTEFZT1VUX1NURDE0MCk7CisKKyAgICAgICAgbGF5b3V0RmxhZ3MgfD0gcm5kLmNo
b29zZShsYXlvdXRGbGFnQ2FuZGlkYXRlcylbMF07IC8vSW4gSmF2YXNjcmlwdCwgdGhpcyBmdW5j
dGlvbiByZXR1cm5zIGFuIGFycmF5LCBzbyB0YWtpbmcgZWxlbWVudCAwLgorCisgICAgICAgIGlm
ICh0aGlzLm1fZmVhdHVyZXMgJiBnbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLkZlYXR1cmVCaXRz
LkZFQVRVUkVfTUFUUklYX0xBWU9VVCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxu
dW1iZXI+fSovIHZhciBtYXRyaXhDYW5kaWRhdGVzID0gWzAsIGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUZsYWdzLkxBWU9VVF9ST1dfTUFKT1IsIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUZsYWdzLkxBWU9VVF9DT0xVTU5fTUFKT1JdOworICAgICAgICAgICAgbGF5b3V0RmxhZ3MgfD0g
cm5kLmNob29zZShtYXRyaXhDYW5kaWRhdGVzKVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGJs
b2NrLnNldEZsYWdzKGxheW91dEZsYWdzKTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCBudW1Vbmlmb3JtczsgbmR4KyspCisgICAgICAgICAgICB0aGlzLmdlbmVyYXRlVW5pZm9y
bShybmQsIGJsb2NrKTsKKworICAgICAgICB0aGlzLm1fYmxvY2tOZHggKz0gMTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIGdsc1JhbmRvbVVuaWZvcm1CbG9ja0Nh
c2UuUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZQorICAgICAqLworICAgIGdsc1JhbmRvbVVuaWZvcm1C
bG9ja0Nhc2UuUmFuZG9tVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5l
dyBkZVJhbmRvbS5SYW5kb20odGhpcy5tX3NlZWQpOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbnVtU2hhcmVkID0gdGhpcy5tX21heFNoYXJlZEJsb2NrcyA+IDAgPyBybmQu
Z2V0SW50KDEsIHRoaXMubV9tYXhTaGFyZWRCbG9ja3MpIDogMDsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBudW1WdHhCbG9ja3MgPSB0aGlzLm1fbWF4VmVydGV4QmxvY2tzIC0g
bnVtU2hhcmVkID4gMCA/IHJuZC5nZXRJbnQoMSwgdGhpcy5tX21heFZlcnRleEJsb2NrcyAtIG51
bVNoYXJlZCkgOiAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUZyYWdC
bG9ja3MgPSB0aGlzLm1fbWF4RnJhZ21lbnRCbG9ja3MgLSBudW1TaGFyZWQgPiAwID8gcm5kLmdl
dEludCgxLCB0aGlzLm1fbWF4RnJhZ21lbnRCbG9ja3MgLSBudW1TaGFyZWQpIDogMDsKKworICAg
ICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1TaGFyZWQ7IG5keCsrKQorICAgICAgICAg
ICAgdGhpcy5nZW5lcmF0ZUJsb2NrKHJuZCwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxh
Z3MuREVDTEFSRV9WRVJURVggfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNM
QVJFX0ZSQUdNRU5UKTsKKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBudW1WdHhC
bG9ja3M7IG5keCsrKQorICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUJsb2NrKHJuZCwgZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9WRVJURVgpOworCisgICAgICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IG51bUZyYWdCbG9ja3M7IG5keCsrKQorICAgICAgICAgICAg
dGhpcy5nZW5lcmF0ZUJsb2NrKHJuZCwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
REVDTEFSRV9GUkFHTUVOVCk7CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2ds
c1NhbXBsZXJPYmplY3RUZXN0LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNTYW1wbGVyT2JqZWN0VGVzdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZDQwMzBiZDkxMWM5ZjQ0MDYyMWY5ODkyYWYyYjUxNTg0ZWM0ZDllCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNTYW1wbGVyT2JqZWN0VGVzdC5qcwpAQCAtMCwwICsx
LDExNDggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJv
Z3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3Zp
ZGUoJ21vZHVsZXMuc2hhcmVkLmdsc1NhbXBsZXJPYmplY3RUZXN0Jyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1l
d29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVy
ZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmVVdGlsJyk7Citn
b29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7Citnb29nLnJl
cXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3Jr
Lm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVu
Z2wuZ2x1VGV4dHVyZVV0aWwnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwordmFyIGds
c1NhbXBsZXJPYmplY3RUZXN0ID0gbW9kdWxlcy5zaGFyZWQuZ2xzU2FtcGxlck9iamVjdFRlc3Q7
Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlOwordmFyIGRl
UmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cit2YXIgZ2x1U2hhZGVy
UHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKK3ZhciB0Y3VUZXh0
dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIHRjdVN1cmZhY2UgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7Cit2YXIgdGN1VGV4dHVyZVV0aWwgPSBmcmFtZXdvcmsu
Y29tbW9uLnRjdVRleHR1cmVVdGlsOwordmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5j
b21tb24udGN1SW1hZ2VDb21wYXJlOwordmFyIGdsdURyYXdVdGlsID0gZnJhbWV3b3JrLm9wZW5n
bC5nbHVEcmF3VXRpbDsKK3ZhciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1
VGV4dHVyZVV0aWw7Cit2YXIgZGVTdHJpbmcgPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0
cmluZzsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbihleHByZXNzaW9uKSB7CisgICAg
ICAgIGlmICghZXhwcmVzc2lvbikgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnQgZmFpbGVkJyk7Cisg
ICAgfTsKKworICAgIC8vIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVzdAor
CisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5W
SUVXUE9SVF9XSURUSCA9IDEyODsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGds
c1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX0hFSUdIVCA9IDEyODsKKworICAgIC8qKiBAY29u
c3QgQHR5cGUge251bWJlcn0gKi8gZ2xzU2FtcGxlck9iamVjdFRlc3QuVEVYVFVSRTJEX1dJRFRI
ID0gMzI7CisgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyBnbHNTYW1wbGVyT2JqZWN0
VGVzdC5URVhUVVJFMkRfSEVJR0hUID0gMzI7CisKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1i
ZXJ9ICovIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRFWFRVUkUzRF9XSURUSCA9IDMyOworICAgIC8q
KiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gZ2xzU2FtcGxlck9iamVjdFRlc3QuVEVYVFVSRTNE
X0hFSUdIVCA9IDMyOworICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gZ2xzU2FtcGxl
ck9iamVjdFRlc3QuVEVYVFVSRTNEX0RFUFRIID0gMzI7CisKKyAgICAvKiogQGNvbnN0IEB0eXBl
IHtudW1iZXJ9ICovIGdsc1NhbXBsZXJPYmplY3RUZXN0LkNVQkVNQVBfU0laRSA9IDMyOworCisg
ICAgLyoqIEBjb25zdCBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gZ2xzU2FtcGxlck9iamVjdFRl
c3Quc19wb3NpdGlvbnMgPSBbCisgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgICAxLjAsIC0x
LjAsCisgICAgICAgICAxLjAsIDEuMCwKKyAgICAgICAgIDEuMCwgMS4wLAorICAgICAgICAtMS4w
LCAxLjAsCisgICAgICAgIC0xLjAsIC0xLjAKKyAgICBdOworCisgICAgLyoqIEBjb25zdCBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gZ2xzU2FtcGxlck9iamVjdFRlc3Quc19wb3NpdGlvbnMzRCA9
IFsKKyAgICAgICAgLTEuMCwgLTEuMCwgLTEuMCwKKyAgICAgICAgIDEuMCwgLTEuMCwgMS4wLAor
ICAgICAgICAgMS4wLCAxLjAsIC0xLjAsCisgICAgICAgICAxLjAsIDEuMCwgLTEuMCwKKyAgICAg
ICAgLTEuMCwgMS4wLCAxLjAsCisgICAgICAgIC0xLjAsIC0xLjAsIC0xLjAKKyAgICBdOworCisg
ICAgLyoqIEBjb25zdCBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gZ2xzU2FtcGxlck9iamVjdFRl
c3Quc19wb3NpdGlvbnNDdWJlID0gWworICAgICAgICAtMS4wLCAtMS4wLCAtMS4wLCAtMC41LAor
ICAgICAgICAgMS4wLCAtMS4wLCAxLjAsIC0wLjUsCisgICAgICAgICAxLjAsIDEuMCwgMS4wLCAw
LjUsCisgICAgICAgICAxLjAsIDEuMCwgMS4wLCAwLjUsCisgICAgICAgIC0xLjAsIDEuMCwgLTEu
MCwgMC41LAorICAgICAgICAtMS4wLCAtMS4wLCAtMS4wLCAtMC41CisgICAgXTsKKworICAgIC8q
KgorICAgICAqIEBzdHJ1Y3QKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlID0gZnVuY3Rpb24obWluRmlsdGVyLCBtYWdG
aWx0ZXIsIHdyYXBULCB3cmFwUywgd3JhcFIsIG1pbkxvZCwgbWF4TG9kKSB7CisgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubWFnRmlsdGVyID0gbWFnRmlsdGVyOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy53cmFwVCA9IHdyYXBUOworICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdGhpcy53cmFwUyA9IHdyYXBTOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdGhpcy53cmFwUiA9IHdyYXBSOworICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5taW5Mb2QgPSBtaW5Mb2Q7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLm1heExvZCA9IG1heExvZDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHN0cnVj
dAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2MKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICogQHBhcmFtIHtnbHNTYW1w
bGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlfSBzdGF0ZTEKKyAgICAgKiBAcGFyYW0ge2dsc1Nh
bXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9IHN0YXRlMgorICAgICAqIEBwYXJhbSB7Z2xz
U2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZT19IHN0YXRlMworICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqLworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjID0gZnVuY3Rp
b24obmFtZSwgZGVzYywgdGFyZ2V0LCBzdGF0ZTEsIHN0YXRlMiwgc3RhdGUzKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5kZXNjID0gZGVzYzsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICAvKiogQHR5cGUge2dsc1NhbXBs
ZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9ICovIHRoaXMudGV4dHVyZVN0YXRlID0gc3RhdGUx
OworICAgICAgICAvKiogQHR5cGUge2dsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9
ICovIHRoaXMudGV4dHVyZVN0YXRlMiA9IHN0YXRlMyAhPT0gdW5kZWZpbmVkID8gc3RhdGUyIDog
bnVsbDsgLy8gbWVyZ2luZyBUU1QgYW5kIE1UU1Qgc3RydWN0cworICAgICAgICAvKiogQHR5cGUg
e2dsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9ICovIHRoaXMuc2FtcGxlclN0YXRl
ID0gc3RhdGUzICE9PSB1bmRlZmluZWQgPyBzdGF0ZTMgOiBzdGF0ZTI7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5E
ZXFwVGVzdH0KKyAgICAgKiBAY29uc3QgQHBhcmFtIHtnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXN0
U3BlY30gc3BlYworICAgICAqLworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRleHR1cmVTYW1w
bGVyVGVzdCA9IGZ1bmN0aW9uKHNwZWMpIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3Qu
Y2FsbCh0aGlzLCBzcGVjLm5hbWUsIHNwZWMuZGVzYyk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2x1
U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fdGFyZ2V0ID0gc3BlYy50YXJnZXQ7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZX0g
Ki8gdGhpcy5tX3RleHR1cmVTdGF0ZSA9IHNwZWMudGV4dHVyZVN0YXRlOworICAgICAgICAvKiog
QHR5cGUge2dsc1NhbXBsZXJPYmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9ICovIHRoaXMubV9zYW1w
bGVyU3RhdGUgPSBzcGVjLnNhbXBsZXJTdGF0ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtkZVJhbmRv
bS5SYW5kb219ICovIHRoaXMubV9yYW5kb20gPSBuZXcgZGVSYW5kb20uUmFuZG9tKGRlU3RyaW5n
LmRlU3RyaW5nSGFzaChzcGVjLm5hbWUpKTsKKyAgICB9OworCisgICAgZ2xzU2FtcGxlck9iamVj
dFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGN1VGVz
dENhc2UuRGVxcFRlc3QucHJvdG90eXBlKTsKKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0
dXJlU2FtcGxlclRlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzU2FtcGxlck9iamVjdFRl
c3QuVGV4dHVyZVNhbXBsZXJUZXN0OworCisgICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAg
KiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gdGV4dHVyZVJlZgorICAgICAqIEBwYXJhbSB7
dGN1U3VyZmFjZS5TdXJmYWNlfSBzYW1wbGVyUmVmCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0geQorICAgICAqLworICAgIGdsc1NhbXBsZXJPYmplY3RU
ZXN0LlRleHR1cmVTYW1wbGVyVGVzdC5wcm90b3R5cGUucmVuZGVyUmVmZXJlbmNlcyA9IGZ1bmN0
aW9uKHRleHR1cmVSZWYsIHNhbXBsZXJSZWYsIHgsIHkpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlID0gZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVy
ZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1cmUodGhpcy5tX3RhcmdldCk7CisKKyAgICAgICAgZ2wu
dmlld3BvcnQoeCwgeSwgZ2xzU2FtcGxlck9iamVjdFRlc3QuVklFV1BPUlRfV0lEVEgsIGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX0hFSUdIVCk7CisKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUodGhpcy5tX3RhcmdldCwgdGV4dHVyZSk7CisKKyAgICAgICAgZ2xzU2FtcGxlck9iamVjdFRl
c3QuVGV4dHVyZVNhbXBsZXJUZXN0LnNldFRleHR1cmVTdGF0ZSh0aGlzLm1fdGFyZ2V0LCB0aGlz
Lm1fdGV4dHVyZVN0YXRlKTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICAgICAgdmFyIHRl
eFJlZiA9IHRleHR1cmVSZWYuZ2V0QWNjZXNzKCk7CisgICAgICAgIHZhciB0ZXhSZWZUcmFuc2Zl
ckZvcm1hdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KHRleFJlZi5nZXRGb3Jt
YXQoKSk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgdGV4UmVmLm1fd2lkdGgsIHRleFJl
Zi5tX2hlaWdodCwgdGV4UmVmVHJhbnNmZXJGb3JtYXQuZm9ybWF0LCB0ZXhSZWZUcmFuc2ZlckZv
cm1hdC5kYXRhVHlwZSwgdGV4dHVyZVJlZi5tX3BpeGVscyk7CisKKyAgICAgICAgZ2xzU2FtcGxl
ck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LnNldFRleHR1cmVTdGF0ZSh0aGlzLm1fdGFy
Z2V0LCB0aGlzLm1fc2FtcGxlclN0YXRlKTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICAg
ICAgdmFyIHNhbXBSZWYgPSBzYW1wbGVyUmVmLmdldEFjY2VzcygpOworICAgICAgICB2YXIgc2Ft
cFJlZlRyYW5zZmVyRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQoc2Ft
cFJlZi5nZXRGb3JtYXQoKSk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgc2FtcFJlZi5t
X3dpZHRoLCBzYW1wUmVmLm1faGVpZ2h0LCBzYW1wUmVmVHJhbnNmZXJGb3JtYXQuZm9ybWF0LCBz
YW1wUmVmVHJhbnNmZXJGb3JtYXQuZGF0YVR5cGUsIHNhbXBsZXJSZWYubV9waXhlbHMpOworCisg
ICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwcml2YXRlCisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHRleHR1cmVS
ZXN1bHQKKyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gc2FtcGxlclJlc3VsdAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAg
Ki8KKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3QucHJvdG90eXBl
LnJlbmRlclJlc3VsdHMgPSBmdW5jdGlvbih0ZXh0dXJlUmVzdWx0LCBzYW1wbGVyUmVzdWx0LCB4
LCB5KSB7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZSA9
IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVzdC5jcmVhdGVUZXh0dXJlKHRo
aXMubV90YXJnZXQpOworCisgICAgICAgIGdsLnZpZXdwb3J0KHgsIHksIGdsc1NhbXBsZXJPYmpl
Y3RUZXN0LlZJRVdQT1JUX1dJRFRILCBnbHNTYW1wbGVyT2JqZWN0VGVzdC5WSUVXUE9SVF9IRUlH
SFQpOworCisgICAgICAgIHZhciBzYW1wbGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworICAgICAg
ICBERV9BU1NFUlQoc2FtcGxlciAhPSAtMSk7CisKKyAgICAgICAgZ2wuYmluZFNhbXBsZXIoMCwg
c2FtcGxlcik7CisKKyAgICAgICAgLy8gRmlyc3Qgc2V0IHNhbXBsZXIgc3RhdGUKKyAgICAgICAg
Z2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LnNldFNhbXBsZXJTdGF0ZSh0
aGlzLm1fc2FtcGxlclN0YXRlLCBzYW1wbGVyKTsKKworICAgICAgICAvLyBTZXQgdGV4dHVyZSBz
dGF0ZQorICAgICAgICBnbC5iaW5kVGV4dHVyZSh0aGlzLm1fdGFyZ2V0LCB0ZXh0dXJlKTsKKwor
ICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3Quc2V0VGV4dHVy
ZVN0YXRlKHRoaXMubV90YXJnZXQsIHRoaXMubV90ZXh0dXJlU3RhdGUpOworICAgICAgICAvLyBS
ZW5kZXIgdXNpbmcgc2FtcGxlcgorICAgICAgICB0aGlzLnJlbmRlcigpOworICAgICAgICB2YXIg
c2FtcFJlcyA9IHNhbXBsZXJSZXN1bHQuZ2V0QWNjZXNzKCk7CisgICAgICAgIHZhciBzYW1wUmVz
VHJhbnNmZXJGb3JtYXQgPSBnbHVUZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChzYW1wUmVz
LmdldEZvcm1hdCgpKTsKKyAgICAgICAgZ2wucmVhZFBpeGVscyh4LCB5LCBzYW1wUmVzLm1fd2lk
dGgsIHNhbXBSZXMubV9oZWlnaHQsIHNhbXBSZXNUcmFuc2ZlckZvcm1hdC5mb3JtYXQsIHNhbXBS
ZXNUcmFuc2ZlckZvcm1hdC5kYXRhVHlwZSwgc2FtcGxlclJlc3VsdC5tX3BpeGVscyk7CisKKyAg
ICAgICAgLy8gUmVuZGVyIHdpdGhvdXQgc2FtcGxlcgorICAgICAgICBnbC5iaW5kU2FtcGxlcigw
LCBudWxsKTsKKyAgICAgICAgZ2wuZGVsZXRlU2FtcGxlcihzYW1wbGVyKTsKKworICAgICAgICB0
aGlzLnJlbmRlcigpOworICAgICAgICB2YXIgdGV4UmVzID0gdGV4dHVyZVJlc3VsdC5nZXRBY2Nl
c3MoKTsKKyAgICAgICAgdmFyIHRleFJlc1RyYW5zZmVyRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwu
Z2V0VHJhbnNmZXJGb3JtYXQodGV4UmVzLmdldEZvcm1hdCgpKTsKKyAgICAgICAgZ2wucmVhZFBp
eGVscyh4LCB5LCB0ZXhSZXMubV93aWR0aCwgdGV4UmVzLm1faGVpZ2h0LCB0ZXhSZXNUcmFuc2Zl
ckZvcm1hdC5mb3JtYXQsIHRleFJlc1RyYW5zZmVyRm9ybWF0LmRhdGFUeXBlLCB0ZXh0dXJlUmVz
dWx0Lm1fcGl4ZWxzKTsKKworICAgICAgICBnbC5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAg
ICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcHJpdmF0ZQorICAgICAqLworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRleHR1cmVTYW1w
bGVyVGVzdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBzYW1wbGVyTG9jOworICAgICAgICAvKiog
QHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgc2NhbGVMb2M7CisKKyAgICAgICAg
Z2wudXNlUHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCkpOworCisgICAgICAgIHNh
bXBsZXJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3Jh
bSgpLCAndV9zYW1wbGVyJyk7CisgICAgICAgIERFX0FTU0VSVChzYW1wbGVyTG9jICE9IG51bGwp
OworCisgICAgICAgIHNjYWxlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9n
cmFtLmdldFByb2dyYW0oKSwgJ3VfcG9zU2NhbGUnKTsKKyAgICAgICAgREVfQVNTRVJUKHNjYWxl
TG9jICE9IG51bGwpOworCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMC41LCAwLjUsIDAuNSwgMS4w
KTsKKworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBn
bC51bmlmb3JtMWkoc2FtcGxlckxvYywgMCk7CisKKyAgICAgICAgZ2wudW5pZm9ybTFmKHNjYWxl
TG9jLCAxLjApOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1RHJhd1V0aWwuVmVydGV4
QXJyYXlCaW5kaW5nPn0gKi8gdmFyIHZlcnRleEFycmF5czsKKyAgICAgICAgc3dpdGNoICh0aGlz
Lm1fdGFyZ2V0KSB7CisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfMkQ6IHsKKyAgICAgICAg
ICAgICAgICB2ZXJ0ZXhBcnJheXMgPSBbCisgICAgICAgICAgICAgICAgICAgIGdsdURyYXdVdGls
LnZhYkZyb21CaW5kaW5nUG9pbnRBbmRBcnJheVBvaW50ZXIoCisgICAgICAgICAgICAgICAgICAg
ICAgICBnbHVEcmF3VXRpbC5iaW5kaW5nUG9pbnRGcm9tTmFtZSgnYV9wb3NpdGlvbicpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IGdsdURyYXdVdGlsLlZlcnRleEFycmF5UG9pbnRlcigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5WZXJ0ZXhDb21wb25lbnRU
eXBlLlZUWF9DT01QX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdURyYXdV
dGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24uVlRYX0NPTVBfQ09OVkVSVF9OT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LnNfcG9zaXRpb25zKSkKKyAgICAgICAgICAgICAg
ICBdOworCisgICAgICAgICAgICAgICAgZ2x1RHJhd1V0aWwuZHJhdyhnbCwgdGhpcy5tX3Byb2dy
YW0uZ2V0UHJvZ3JhbSgpLCB2ZXJ0ZXhBcnJheXMsIG5ldyBnbHVEcmF3VXRpbC5QcmltaXRpdmVM
aXN0KGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTLCA2KSk7CisKKyAgICAgICAg
ICAgICAgICBnbC51bmlmb3JtMWYoc2NhbGVMb2MsIDAuMjUpOworCisgICAgICAgICAgICAgICAg
Z2x1RHJhd1V0aWwuZHJhdyhnbCwgdGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCB2ZXJ0ZXhB
cnJheXMsIG5ldyBnbHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0KGdsdURyYXdVdGlsLnByaW1pdGl2
ZVR5cGUuVFJJQU5HTEVTLCA2KSk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzNEOiB7CisgICAgICAgICAgICAg
ICAgdmVydGV4QXJyYXlzID0gWworICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC52YWJG
cm9tQmluZGluZ1BvaW50QW5kQXJyYXlQb2ludGVyKAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2x1RHJhd1V0aWwuYmluZGluZ1BvaW50RnJvbU5hbWUoJ2FfcG9zaXRpb24nKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheVBvaW50ZXIoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50VHlwZS5W
VFhfQ09NUF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5W
ZXJ0ZXhDb21wb25lbnRDb252ZXJzaW9uLlZUWF9DT01QX0NPTlZFUlRfTk9ORSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5zX3Bvc2l0aW9uczNEKSkKKyAgICAgICAgICAgICAgICBd
OworCisgICAgICAgICAgICAgICAgZ2x1RHJhd1V0aWwuZHJhdyhnbCwgdGhpcy5tX3Byb2dyYW0u
Z2V0UHJvZ3JhbSgpLCB2ZXJ0ZXhBcnJheXMsIG5ldyBnbHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0
KGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTLCA2KSk7CisKKyAgICAgICAgICAg
ICAgICBnbC51bmlmb3JtMWYoc2NhbGVMb2MsIDAuMjUpOworCisgICAgICAgICAgICAgICAgZ2x1
RHJhd1V0aWwuZHJhdyhnbCwgdGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpLCB2ZXJ0ZXhBcnJh
eXMsIG5ldyBnbHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0KGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5
cGUuVFJJQU5HTEVTLCA2KSk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFX0NVQkVfTUFQOiB7CisgICAgICAgICAg
ICAgICAgdmVydGV4QXJyYXlzID0gWworICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC52
YWJGcm9tQmluZGluZ1BvaW50QW5kQXJyYXlQb2ludGVyKAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ2x1RHJhd1V0aWwuYmluZGluZ1BvaW50RnJvbU5hbWUoJ2FfcG9zaXRpb24nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ldyBnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheVBvaW50ZXIoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50VHlw
ZS5WVFhfQ09NUF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRp
bC5WZXJ0ZXhDb21wb25lbnRDb252ZXJzaW9uLlZUWF9DT01QX0NPTlZFUlRfTk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5zX3Bvc2l0aW9uc0N1YmUpKQorICAgICAgICAgICAg
ICAgIF07CisKKyAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlzLm1fcHJv
Z3JhbS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2
ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIDYpKTsKKworICAgICAg
ICAgICAgICAgIGdsLnVuaWZvcm0xZihzY2FsZUxvYywgMC4yNSk7CisKKyAgICAgICAgICAgICAg
ICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksIHZlcnRl
eEFycmF5cywgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0
aXZlVHlwZS5UUklBTkdMRVMsIDYpKTsKKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERFX0FTU0VS
VChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByaXZhdGUK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICogQHBhcmFtIHtnbHNTYW1wbGVy
T2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlfSBzdGF0ZQorICAgICAqLworICAgIGdsc1NhbXBsZXJP
YmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVzdC5zZXRUZXh0dXJlU3RhdGUgPSBmdW5jdGlvbih0
YXJnZXQsIHN0YXRlKSB7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIHN0YXRlLm1pbkZpbHRlcik7CisgICAgICAgIGdsLnRleFBhcmFtZXRl
cmkodGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIHN0YXRlLm1hZ0ZpbHRlcik7CisgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUywgc3RhdGUud3Jh
cFMpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1Qs
IHN0YXRlLndyYXBUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRV
UkVfV1JBUF9SLCBzdGF0ZS53cmFwUik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmYodGFyZ2V0
LCBnbC5URVhUVVJFX01BWF9MT0QsIHN0YXRlLm1heExvZCk7CisgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmYodGFyZ2V0LCBnbC5URVhUVVJFX01JTl9MT0QsIHN0YXRlLm1pbkxvZCk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwcml2YXRlCisgICAgICogQHBhcmFtIHtnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5TYW1wbGluZ1N0YXRlfSBzdGF0ZQorICAgICAqIEBwYXJhbSB7V2ViR0xTYW1wbGVy
fSBzYW1wbGVyCisgICAgICovCisgICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBs
ZXJUZXN0LnNldFNhbXBsZXJTdGF0ZSA9IGZ1bmN0aW9uKHN0YXRlLCBzYW1wbGVyKSB7CisgICAg
ICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
c3RhdGUubWluRmlsdGVyKTsKKyAgICAgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSLCBzdGF0ZS5tYWdGaWx0ZXIpOworICAgICAgICBnbC5zYW1w
bGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX1dSQVBfUywgc3RhdGUud3JhcFMpOwor
ICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX1dSQVBfVCwg
c3RhdGUud3JhcFQpOworICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5U
RVhUVVJFX1dSQVBfUiwgc3RhdGUud3JhcFIpOworICAgICAgICBnbC5zYW1wbGVyUGFyYW1ldGVy
ZihzYW1wbGVyLCBnbC5URVhUVVJFX01BWF9MT0QsIHN0YXRlLm1heExvZCk7CisgICAgICAgIGds
LnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIGdsLlRFWFRVUkVfTUlOX0xPRCwgc3RhdGUubWlu
TG9kKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcmV0dXJu
IHtXZWJHTFRleHR1cmV9CisgICAgICovCisgICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVy
ZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1cmUyRCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiog
QHR5cGUge1dlYkdMVGV4dHVyZX0gKi8gdmFyIHRleHR1cmUgPSBudWxsOworICAgICAgICAvKiog
QHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZTJEfSAqLyB2YXIgcmVmVGV4dHVyZSA9IG5ldyB0Y3VU
ZXh0dXJlLlRleHR1cmUyRCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRj
dVRleHR1cmUuQ2hhbm5lbE9yZGVyLlJHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlRFWFRVUkUyRF9XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNTYW1wbGVyT2JqZWN0
VGVzdC5URVhUVVJFMkRfSEVJR0hUKTsKKworICAgICAgICByZWZUZXh0dXJlLmFsbG9jTGV2ZWwo
MCk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJl
ZlRleHR1cmUuZ2V0TGV2ZWwoMCksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEu
MCwgMS4wXSk7CisKKyAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKworICAg
ICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKworICAgICAgICBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHJlZlRleHR1cmUuZ2V0V2lk
dGgoKSwgcmVmVGV4dHVyZS5nZXRIZWlnaHQoKSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllU
RSwgcmVmVGV4dHVyZS5nZXRMZXZlbCgwKS5nZXREYXRhUHRyKCkpOworCisgICAgICAgIGdsLmdl
bmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworCisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgICAgIHJldHVybiB0ZXh0dXJlOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBAcHJpdmF0ZQorICAgICAqIEByZXR1cm4ge1dlYkdMVGV4dHVyZX0K
KyAgICAgKi8KKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3QuY3Jl
YXRlVGV4dHVyZTNEID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xUZXh0
dXJlfSAqLyB2YXIgdGV4dHVyZSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVy
ZS5UZXh0dXJlM0R9ICovIHZhciByZWZUZXh0dXJlID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZTNE
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUuQ2hhbm5l
bE9yZGVyLlJHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN1VGV4
dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzU2FtcGxlck9iamVjdFRl
c3QuVEVYVFVSRTNEX1dJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5URVhUVVJF
M0RfSEVJR0hULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5URVhUVVJFM0RfREVQVEgp
OworCisgICAgICAgIHJlZlRleHR1cmUuYWxsb2NMZXZlbCgwKTsKKyAgICAgICAgdGN1VGV4dHVy
ZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMocmVmVGV4dHVyZS5nZXRMZXZlbCgwKSwg
WzAuMCwgMC4wLCAwLjAsIDAuMF0sIFsxLjAsIDEuMCwgMS4wLCAxLjBdKTsKKworICAgICAgICB0
ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworCisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfM0QsIHRleHR1cmUpOworCisgICAgICAgIGdsLnRleEltYWdlM0QoZ2wuVEVYVFVS
RV8zRCwgMCwgZ2wuUkdCQSwgcmVmVGV4dHVyZS5nZXRXaWR0aCgpLCByZWZUZXh0dXJlLmdldEhl
aWdodCgpLCByZWZUZXh0dXJlLmdldERlcHRoKCksIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIHJlZlRleHR1cmUuZ2V0TGV2ZWwoMCkuZ2V0RGF0YVB0cigpKTsKKworICAgICAgICBnbC5n
ZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzNEKTsKKworICAgICAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzNELCBudWxsKTsKKworICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcmV0dXJuIHtXZWJHTFRleHR1cmV9
CisgICAgICovCisgICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LmNy
ZWF0ZVRleHR1cmVDdWJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xU
ZXh0dXJlfSAqLyB2YXIgdGV4dHVyZSA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4
dHVyZS5UZXh0dXJlQ3ViZX0gKi8gdmFyIHJlZlRleHR1cmUgPSBuZXcgdGN1VGV4dHVyZS5UZXh0
dXJlQ3ViZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVy
ZS5DaGFubmVsT3JkZXIuUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTk9STV9JTlQ4KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1NhbXBs
ZXJPYmplY3RUZXN0LkNVQkVNQVBfU0laRSk7CisKKyAgICAgICAgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKworICAgICAgICByZWZUZXh0dXJlLmFsbG9jTGV2ZWwodGN1VGV4dHVyZS5D
dWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9YLCAwKTsKKyAgICAgICAgcmVmVGV4dHVyZS5hbGxv
Y0xldmVsKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWSwgMCk7CisgICAg
ICAgIHJlZlRleHR1cmUuYWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BP
U0lUSVZFX1osIDApOworICAgICAgICByZWZUZXh0dXJlLmFsbG9jTGV2ZWwodGN1VGV4dHVyZS5D
dWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9YLCAwKTsKKyAgICAgICAgcmVmVGV4dHVyZS5hbGxv
Y0xldmVsKHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWSwgMCk7CisgICAg
ICAgIHJlZlRleHR1cmUuYWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05F
R0FUSVZFX1osIDApOworCisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50
R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2Uu
Q1VCRUZBQ0VfUE9TSVRJVkVfWCksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEu
MCwgMS4wXSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGll
bnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZB
Q0VfUE9TSVRJVkVfWSksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4w
XSk7CisgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJl
ZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9T
SVRJVkVfWiksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7Cisg
ICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1
cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVf
WCksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisgICAgICAg
IHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0
TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWSksIFsw
LjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisgICAgICAgIHRjdVRl
eHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxG
YWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWiksIFswLjAsIDAu
MCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDEuMCwgMS4wXSk7CisKKyAgICAgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZSk7CisgICAgICAgIC8vIFRPRE86IGNo
ZWNrIGludGVybmFsRm9ybWF0IC8gZm9ybWF0IHBhcmFtZXRlcnMgaW4gdGV4SW1hZ2UyRCAod2Vy
ZSBSR0JBOCBhbmQgUkdCQSByZXNwZWN0aXZlbHkpCisgICAgICAgIGZvciAodmFyIGZhY2UgaW4g
dGN1VGV4dHVyZS5DdWJlRmFjZSkgeworICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgdGFyZ2V0ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0R0xDdWJlRmFjZSh0Y3VUZXh0
dXJlLkN1YmVGYWNlW2ZhY2VdKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCAw
LCBnbC5SR0JBLCByZWZUZXh0dXJlLmdldFNpemUoKSwgcmVmVGV4dHVyZS5nZXRTaXplKCksIDAs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRj
dVRleHR1cmUuQ3ViZUZhY2VbZmFjZV0pLmdldERhdGFQdHIoKSk7CisgICAgICAgIH0KKworICAg
ICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgbnVsbCk7CisKKyAgICAgICAgcmV0dXJu
IHRleHR1cmU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwcml2YXRlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHRhcmdldAorICAgICAqIEByZXR1cm4ge1dlYkdMVGV4dHVyZX0KKyAgICAg
Ki8KKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3QuY3JlYXRlVGV4
dHVyZSA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4dHVy
ZX0gKi8gdmFyIHRleHR1cmU7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgICAgICAg
ICBjYXNlIGdsLlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IGdsc1NhbXBs
ZXJPYmplY3RUZXN0LlRleHR1cmVTYW1wbGVyVGVzdC5jcmVhdGVUZXh0dXJlMkQoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzNEOgorICAg
ICAgICAgICAgICAgIHRleHR1cmUgPSBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxl
clRlc3QuY3JlYXRlVGV4dHVyZTNEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgZ2wuVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJl
ID0gZ2xzU2FtcGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1cmVD
dWJlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB0YXJnZXQ6ICcgKyBX
ZWJHTFRlc3RVdGlscy5nbEVudW1Ub1N0cmluZyhnbCwgdGFyZ2V0KSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByaXZh
dGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICogQHJldHVybiB7c3RyaW5n
fQorICAgICAqLworICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3Qu
c2VsZWN0VmVydGV4U2hhZGVyID0gZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgICAgICBzd2l0Y2gg
KHRhcmdldCkgeworICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAgICAgICAg
ICAgICAgcmV0dXJuICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAgICAgICAnaW4g
aGlnaHAgdmVjMiBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAgICAgICd1bmlmb3JtIGhp
Z2hwIGZsb2F0IHVfcG9zU2NhbGU7XG4nICsKKyAgICAgICAgICAgICAgICAgJ291dCBtZWRpdW1w
IHZlYzIgdl90ZXhDb29yZDtcbicgKworICAgICAgICAgICAgICAgICAndm9pZCBtYWluICh2b2lk
KVxuJyArCisgICAgICAgICAgICAgICAgICcge1xuJyArCisgICAgICAgICAgICAgICAgICdcdHZf
dGV4Q29vcmQgPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAgICAgICdcdGdsX1Bvc2l0
aW9uID0gdmVjNCh1X3Bvc1NjYWxlICogYV9wb3NpdGlvbiwgMC4wLCAxLjApO1xuJyArCisgICAg
ICAgICAgICAgICAgICd9JzsKKworICAgICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8zRDoKKyAg
ICAgICAgICAgICAgICAgcmV0dXJuICcjdmVyc2lvbiAzMDAgZXNcbicgKworICAgICAgICAgICAg
ICAgICAnaW4gaGlnaHAgdmVjMyBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAgICAgICd1
bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcG9zU2NhbGU7XG4nICsKKyAgICAgICAgICAgICAgICAgJ291
dCBtZWRpdW1wIHZlYzMgdl90ZXhDb29yZDtcbicgKworICAgICAgICAgICAgICAgICAndm9pZCBt
YWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgICcge1xuJyArCisgICAgICAgICAgICAg
ICAgICdcdHZfdGV4Q29vcmQgPSBhX3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICAgICAgICdc
dGdsX1Bvc2l0aW9uID0gdmVjNCh1X3Bvc1NjYWxlICogYV9wb3NpdGlvbi54eSwgMC4wLCAxLjAp
O1xuJyArCisgICAgICAgICAgICAgICAgICd9JzsKKworICAgICAgICAgICAgIGNhc2UgZ2wuVEVY
VFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICAgcmV0dXJuICcjdmVyc2lvbiAzMDAgZXNc
bicgKworICAgICAgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJyArCisg
ICAgICAgICAgICAgICAgICd1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcG9zU2NhbGU7XG4nICsKKyAg
ICAgICAgICAgICAgICAgJ291dCBtZWRpdW1wIHZlYzIgdl90ZXhDb29yZDtcbicgKworICAgICAg
ICAgICAgICAgICAndm9pZCBtYWluICh2b2lkKVxuJyArCisgICAgICAgICAgICAgICAgICcge1xu
JyArCisgICAgICAgICAgICAgICAgICdcdHZfdGV4Q29vcmQgPSBhX3Bvc2l0aW9uLnp3O1xuJyAr
CisgICAgICAgICAgICAgICAgICdcdGdsX1Bvc2l0aW9uID0gdmVjNCh1X3Bvc1NjYWxlICogYV9w
b3NpdGlvbi54eSwgMC4wLCAxLjApO1xuJyArCisgICAgICAgICAgICAgICAgICd9JzsKKworICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgIH0KKyAgICAgfTsKKworICAgICAv
KioKKyAgICAgICogQHByaXZhdGUKKyAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICAqLworICAgICBnbHNTYW1wbGVyT2JqZWN0VGVz
dC5UZXh0dXJlU2FtcGxlclRlc3Quc2VsZWN0RnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlvbih0YXJn
ZXQpIHsKKyAgICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgICAgICAgICAgY2FzZSBnbC5U
RVhUVVJFXzJEOgorICAgICAgICAgICAgICAgICByZXR1cm4gJyN2ZXJzaW9uIDMwMCBlc1xubGF5
b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuJyArCisgICAgICAg
ICAgICAgICAgICd1bmlmb3JtIGxvd3Agc2FtcGxlcjJEIHVfc2FtcGxlcjtcbicgKworICAgICAg
ICAgICAgICAgICAnaW4gbWVkaXVtcCB2ZWMyIHZfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAgICAg
ICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICAnIHtcbicgKwor
ICAgICAgICAgICAgICAgICAnXHRvX2NvbG9yID0gdGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29v
cmQpO1xuJyArCisgICAgICAgICAgICAgICAgICd9JzsKKworICAgICAgICAgICAgIGNhc2UgZ2wu
VEVYVFVSRV8zRDoKKyAgICAgICAgICAgICAgICAgcmV0dXJuICcjdmVyc2lvbiAzMDAgZXNcbmxh
eW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbicgKworICAgICAg
ICAgICAgICAgICAndW5pZm9ybSBsb3dwIHNhbXBsZXIzRCB1X3NhbXBsZXI7XG4nICsKKyAgICAg
ICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMyB2X3RleENvb3JkO1xuJyArCisgICAgICAgICAg
ICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAgJyB7XG4nICsK
KyAgICAgICAgICAgICAgICAgJ1x0b19jb2xvciA9IHRleHR1cmUodV9zYW1wbGVyLCB2X3RleENv
b3JkKTtcbicgKworICAgICAgICAgICAgICAgICAnfSc7CisKKyAgICAgICAgICAgICBjYXNlIGds
LlRFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgIHJldHVybiAnI3ZlcnNpb24gMzAw
IGVzXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4nICsK
KyAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gbG93cCBzYW1wbGVyQ3ViZSB1X3NhbXBsZXI7XG4n
ICsKKyAgICAgICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMiB2X3RleENvb3JkO1xuJyArCisg
ICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgICAgICAgICAg
JyB7XG4nICsKKyAgICAgICAgICAgICAgICAgJ1x0b19jb2xvciA9IHRleHR1cmUodV9zYW1wbGVy
LCB2ZWMzKGNvcygzLjE0ICogdl90ZXhDb29yZC55KSAqIHNpbigzLjE0ICogdl90ZXhDb29yZC54
KSwgc2luKDMuMTQgKiB2X3RleENvb3JkLnkpLCBjb3MoMy4xNCAqIHZfdGV4Q29vcmQueSkgKiBj
b3MoMy4xNCAqIHZfdGV4Q29vcmQueCkpKTtcbicgKworICAgICAgICAgICAgICAgICAnfSc7CisK
KyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2Up
OworICAgICAgICAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAgICB9CisgICAgIH07CisKKyAg
ICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxlclRlc3QucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7c3RyaW5nfSAqLyB2YXIg
dmVydGV4U2hhZGVyVGVtcGxhdGUgPSBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2FtcGxl
clRlc3Quc2VsZWN0VmVydGV4U2hhZGVyKHRoaXMubV90YXJnZXQpOworICAgICAgICAvKiogQGNv
bnN0IEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnbWVudFNoYWRlclRlbXBsYXRlID0gZ2xzU2Ft
cGxlck9iamVjdFRlc3QuVGV4dHVyZVNhbXBsZXJUZXN0LnNlbGVjdEZyYWdtZW50U2hhZGVyKHRo
aXMubV90YXJnZXQpOworCisgICAgICAgIERFX0FTU0VSVCghdGhpcy5tX3Byb2dyYW0pOworICAg
ICAgICB0aGlzLm1fcHJvZ3JhbSA9IG5ldyBnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW0o
Z2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlclRl
bXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFnbWVudFNoYWRlclRlbXBsYXRlKSk7CisKKyAgICAgICAgaWYgKCF0aGlz
Lm1fcHJvZ3JhbS5pc09rKCkpIHsKKyAgICAgICAgICAgIC8vIHRjdTo6VGVzdExvZyYgbG9nID0g
bV90ZXN0Q3R4LmdldExvZygpOworICAgICAgICAgICAgLy8gbG9nIDw8ICptX3Byb2dyYW07Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjb21waWxlIHNoYWRlcnMnKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5UZXh0dXJlU2Ft
cGxlclRlc3QucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy90Y3U6
OlRlc3RMb2cmIGxvZyA9IG1fdGVzdEN0eC5nZXRMb2coKTsKKworICAgICAgICAvKiogQHR5cGUg
e3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHRleHR1cmVSZWYgPSBuZXcgdGN1U3VyZmFjZS5T
dXJmYWNlKGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX1dJRFRILCBnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5WSUVXUE9SVF9IRUlHSFQpOworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2Uu
U3VyZmFjZX0gKi8gdmFyIHNhbXBsZXJSZWYgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX1dJRFRILCBnbHNTYW1wbGVyT2JqZWN0VGVzdC5WSUVX
UE9SVF9IRUlHSFQpOworCisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAq
LyB2YXIgdGV4dHVyZVJlc3VsdCA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoZ2xzU2FtcGxlck9i
amVjdFRlc3QuVklFV1BPUlRfV0lEVEgsIGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX0hF
SUdIVCk7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgc2Ft
cGxlclJlc3VsdCA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UoZ2xzU2FtcGxlck9iamVjdFRlc3Qu
VklFV1BPUlRfV0lEVEgsIGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX0hFSUdIVCk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4ID0gdGhpcy5tX3JhbmRvbS5nZXRJ
bnQoMCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIC0gZ2xzU2FtcGxlck9iamVjdFRlc3QuVklFV1BP
UlRfV0lEVEgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkgPSB0aGlzLm1f
cmFuZG9tLmdldEludCgwLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0IC0gZ2xzU2FtcGxlck9iamVj
dFRlc3QuVklFV1BPUlRfSEVJR0hUKTsKKworICAgICAgICB0aGlzLnJlbmRlclJlZmVyZW5jZXMo
dGV4dHVyZVJlZiwgc2FtcGxlclJlZiwgeCwgeSk7CisgICAgICAgIHRoaXMucmVuZGVyUmVzdWx0
cyh0ZXh0dXJlUmVzdWx0LCBzYW1wbGVyUmVzdWx0LCB4LCB5KTsKKworICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBpc09rID0gdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xk
Q29tcGFyZSgnU2FtcGxlciByZW5kZXIgcmVzdWx0JywgJ1Jlc3VsdCBmcm9tIHJlbmRlcmluZyB3
aXRoIHNhbXBsZXInLCBzYW1wbGVyUmVmLCBzYW1wbGVyUmVzdWx0LCBbMCwgMCwgMCwgMF0pOwor
CisgICAgICAgIGlmICghdGN1SW1hZ2VDb21wYXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSgnVGV4
dHVyZSByZW5kZXIgcmVzdWx0JywgJ1Jlc3VsdCBmcm9tIHJlbmRlcmluZyB3aXRoIHRleHR1cmUg
c3RhdGUnLCB0ZXh0dXJlUmVmLCB0ZXh0dXJlUmVzdWx0LCBbMCwgMCwgMCwgMF0pKQorICAgICAg
ICAgICAgaXNPayA9IGZhbHNlOworCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoaXNPaywgJycs
IHRydWUsIGZhbHNlKTsKKworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3Vs
dC5TVE9QOworICAgIH07CisKKyAgICAvLyBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1
cmVTYW1wbGVyVGVzdAorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4
dGVuZHMge3RjdVRlc3RDYXNlLkRlcXBUZXN0fQorICAgICAqIEBjb25zdCBAcGFyYW0ge2dsc1Nh
bXBsZXJPYmplY3RUZXN0LlRlc3RTcGVjfSBzcGVjCisgICAgICovCisgICAgZ2xzU2FtcGxlck9i
amVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QgPSBmdW5jdGlvbihzcGVjKSB7CisgICAg
ICAgIHRjdVRlc3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgc3BlYy5uYW1lLCBzcGVjLmRlc2Mp
OworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8g
dGhpcy5tX3Byb2dyYW0gPSBudWxsOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhp
cy5tX3RhcmdldCA9IHNwZWMudGFyZ2V0OworICAgICAgICAvKiogQHR5cGUge2dsc1NhbXBsZXJP
YmplY3RUZXN0LlNhbXBsaW5nU3RhdGV9ICovIHRoaXMubV90ZXh0dXJlU3RhdGUxID0gc3BlYy50
ZXh0dXJlU3RhdGU7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2FtcGxlck9iamVjdFRlc3QuU2Ft
cGxpbmdTdGF0ZX0gKi8gdGhpcy5tX3RleHR1cmVTdGF0ZTIgPSBzcGVjLnRleHR1cmVTdGF0ZTI7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZX0g
Ki8gdGhpcy5tX3NhbXBsZXJTdGF0ZSA9IHNwZWMuc2FtcGxlclN0YXRlOworICAgICAgICAvKiog
QHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdGhpcy5tX3JhbmRvbSA9IG5ldyBkZVJhbmRvbS5S
YW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHNwZWMubmFtZSkpOworICAgIH07CisKKyAgICBn
bHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CisgICAgZ2xzU2Ft
cGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3Q7CisKKyAg
ICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5wcm90b3R5cGUu
aW5pdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZl
cnRleFNoYWRlclRlbXBsYXRlID0gZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2Ft
cGxlclRlc3Quc2VsZWN0VmVydGV4U2hhZGVyKHRoaXMubV90YXJnZXQpOworICAgICAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdtZW50U2hhZGVyVGVtcGxhdGUgPSBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5zZWxlY3RGcmFnbWVudFNoYWRlcih0
aGlzLm1fdGFyZ2V0KTsKKworICAgICAgICBERV9BU1NFUlQoIXRoaXMubV9wcm9ncmFtKTsKKyAg
ICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
KGdsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtlVnR4RnJhZ1NvdXJjZXMoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
dGV4U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSkpOworICAg
ICAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkgeworICAgICAgICAgICAgLy8gdGN1OjpU
ZXN0TG9nJiBsb2cgPSBtX3Rlc3RDdHguZ2V0TG9nKCk7CisgICAgICAgICAgICAvLworICAgICAg
ICAgICAgLy8gbG9nIDw8ICptX3Byb2dyYW07CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0ZhaWxlZCB0byBjb21waWxlIHNoYWRlcnMnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBn
bHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5wcm90b3R5cGUuZGVp
bml0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAp
OworICAgIH0KKworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJU
ZXN0LnByb3RvdHlwZS5pdGVyYXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vdGN1OjpUZXN0
TG9nJiBsb2cgPSBtX3Rlc3RDdHguZ2V0TG9nKCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VT
dXJmYWNlLlN1cmZhY2V9ICovIHZhciB0ZXh0dXJlUmVmID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFj
ZShnbHNTYW1wbGVyT2JqZWN0VGVzdC5WSUVXUE9SVF9XSURUSCwgZ2xzU2FtcGxlck9iamVjdFRl
c3QuVklFV1BPUlRfSEVJR0hUKTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNlLlN1cmZh
Y2V9ICovIHZhciBzYW1wbGVyUmVmID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShnbHNTYW1wbGVy
T2JqZWN0VGVzdC5WSUVXUE9SVF9XSURUSCwgZ2xzU2FtcGxlck9iamVjdFRlc3QuVklFV1BPUlRf
SEVJR0hUKTsKKworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFy
IHRleHR1cmVSZXN1bHQgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKGdsc1NhbXBsZXJPYmplY3RU
ZXN0LlZJRVdQT1JUX1dJRFRILCBnbHNTYW1wbGVyT2JqZWN0VGVzdC5WSUVXUE9SVF9IRUlHSFQp
OworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHNhbXBsZXJS
ZXN1bHQgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQ
T1JUX1dJRFRILCBnbHNTYW1wbGVyT2JqZWN0VGVzdC5WSUVXUE9SVF9IRUlHSFQpOworCisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeCA9IHRoaXMubV9yYW5kb20uZ2V0SW50KDAs
IGdsLmRyYXdpbmdCdWZmZXJXaWR0aCAtIGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX1dJ
RFRIKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB5ID0gdGhpcy5tX3JhbmRv
bS5nZXRJbnQoMCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCAtIGdsc1NhbXBsZXJPYmplY3RUZXN0
LlZJRVdQT1JUX0hFSUdIVCk7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZWZlcmVuY2VzKHRleHR1
cmVSZWYsIHNhbXBsZXJSZWYsIHgsIHkpOworICAgICAgICB0aGlzLnJlbmRlclJlc3VsdHModGV4
dHVyZVJlc3VsdCwgc2FtcGxlclJlc3VsdCwgeCwgeSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgaXNPayA9IHRjdUltYWdlQ29tcGFyZS5waXhlbFRocmVzaG9sZENvbXBh
cmUoJ1NhbXBsZXIgcmVuZGVyIHJlc3VsdCcsICdSZXN1bHQgZnJvbSByZW5kZXJpbmcgd2l0aCBz
YW1wbGVyJywgc2FtcGxlclJlZiwgc2FtcGxlclJlc3VsdCwgWzAsIDAsIDAsIDBdKTsKKworICAg
ICAgICBpZiAoIXRjdUltYWdlQ29tcGFyZS5waXhlbFRocmVzaG9sZENvbXBhcmUoJ1RleHR1cmUg
cmVuZGVyIHJlc3VsdCcsICdSZXN1bHQgZnJvbSByZW5kZXJpbmcgd2l0aCB0ZXh0dXJlIHN0YXRl
JywgdGV4dHVyZVJlZiwgdGV4dHVyZVJlc3VsdCwgWzAsIDAsIDAsIDBdKSkKKyAgICAgICAgICAg
IGlzT2sgPSBmYWxzZTsKKworICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGlzT2ssICcnLCB0cnVl
LCBmYWxzZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RP
UDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcGFyYW0ge3Rj
dVN1cmZhY2UuU3VyZmFjZX0gdGV4dHVyZVJlZgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5T
dXJmYWNlfSBzYW1wbGVyUmVmCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0geQorICAgICAqLworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4
dHVyZVNhbXBsZXJUZXN0LnByb3RvdHlwZS5yZW5kZXJSZWZlcmVuY2VzID0gZnVuY3Rpb24odGV4
dHVyZVJlZiwgc2FtcGxlclJlZiwgeCwgeSkgeworICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4
dHVyZX0gKi8gdmFyIHRleHR1cmUxID0gZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJl
U2FtcGxlclRlc3QuY3JlYXRlVGV4dHVyZSh0aGlzLm1fdGFyZ2V0LCAwKTsKKyAgICAgICAgLyoq
IEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlMiA9IGdsc1NhbXBsZXJPYmplY3RU
ZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1cmUodGhpcy5tX3RhcmdldCwg
MSk7CisKKyAgICAgICAgZ2wudmlld3BvcnQoeCwgeSwgZ2xzU2FtcGxlck9iamVjdFRlc3QuVklF
V1BPUlRfV0lEVEgsIGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX0hFSUdIVCk7CisKKyAg
ICAgICAgLy8gR2VuZXJhdGUgdGV4dHVyZSByZW5kZXJpbmcgcmVmZXJlbmNlCisgICAgICAgIGds
LmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOworICAgICAgICBnbC5iaW5kVGV4dHVyZSh0aGlz
Lm1fdGFyZ2V0LCB0ZXh0dXJlMSk7CisgICAgICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRp
VGV4dHVyZVNhbXBsZXJUZXN0LnNldFRleHR1cmVTdGF0ZSh0aGlzLm1fdGFyZ2V0LCB0aGlzLm1f
dGV4dHVyZVN0YXRlMSk7CisKKyAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSk7
CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRoaXMubV90YXJnZXQsIHRleHR1cmUyKTsKKyAgICAg
ICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3Quc2V0VGV4dHVy
ZVN0YXRlKHRoaXMubV90YXJnZXQsIHRoaXMubV90ZXh0dXJlU3RhdGUyKTsKKworICAgICAgICB0
aGlzLnJlbmRlcigpOworICAgICAgICB2YXIgdGV4UmVmID0gdGV4dHVyZVJlZi5nZXRBY2Nlc3Mo
KTsKKyAgICAgICAgdmFyIHRleFJlZlRyYW5zZmVyRm9ybWF0ID0gZ2x1VGV4dHVyZVV0aWwuZ2V0
VHJhbnNmZXJGb3JtYXQodGV4UmVmLmdldEZvcm1hdCgpKTsKKyAgICAgICAgZ2wucmVhZFBpeGVs
cyh4LCB5LCB0ZXhSZWYubV93aWR0aCwgdGV4UmVmLm1faGVpZ2h0LCB0ZXhSZWZUcmFuc2ZlckZv
cm1hdC5mb3JtYXQsIHRleFJlZlRyYW5zZmVyRm9ybWF0LmRhdGFUeXBlLCB0ZXh0dXJlUmVmLm1f
cGl4ZWxzKTsKKworICAgICAgICAvLyBHZW5lcmF0ZSBzYW1wbGVyIHJlbmRlcmluZyByZWZlcmVu
Y2UKKyAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7CisgICAgICAgIGdsLmJp
bmRUZXh0dXJlKHRoaXMubV90YXJnZXQsIHRleHR1cmUxKTsKKyAgICAgICAgZ2xzU2FtcGxlck9i
amVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3Quc2V0VGV4dHVyZVN0YXRlKHRoaXMubV90
YXJnZXQsIHRoaXMubV9zYW1wbGVyU3RhdGUpOworCisgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUo
Z2wuVEVYVFVSRTEpOworICAgICAgICBnbC5iaW5kVGV4dHVyZSh0aGlzLm1fdGFyZ2V0LCB0ZXh0
dXJlMik7CisgICAgICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJU
ZXN0LnNldFRleHR1cmVTdGF0ZSh0aGlzLm1fdGFyZ2V0LCB0aGlzLm1fc2FtcGxlclN0YXRlKTsK
KworICAgICAgICB0aGlzLnJlbmRlcigpOworICAgICAgICB2YXIgc2FtcFJlZiA9IHNhbXBsZXJS
ZWYuZ2V0QWNjZXNzKCk7CisgICAgICAgIHZhciBzYW1wUmVmVHJhbnNmZXJGb3JtYXQgPSBnbHVU
ZXh0dXJlVXRpbC5nZXRUcmFuc2ZlckZvcm1hdChzYW1wUmVmLmdldEZvcm1hdCgpKTsKKyAgICAg
ICAgZ2wucmVhZFBpeGVscyh4LCB5LCBzYW1wUmVmLm1fd2lkdGgsIHNhbXBSZWYubV9oZWlnaHQs
IHNhbXBSZWZUcmFuc2ZlckZvcm1hdC5mb3JtYXQsIHNhbXBSZWZUcmFuc2ZlckZvcm1hdC5kYXRh
VHlwZSwgc2FtcGxlclJlZi5tX3BpeGVscyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
cml2YXRlCisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHRleHR1cmVSZXN1bHQK
KyAgICAgKiBAcGFyYW0ge3RjdVN1cmZhY2UuU3VyZmFjZX0gc2FtcGxlclJlc3VsdAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkKKyAgICAgKi8KKyAg
ICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5wcm90b3R5cGUu
cmVuZGVyUmVzdWx0cyA9IGZ1bmN0aW9uKHRleHR1cmVSZXN1bHQsIHNhbXBsZXJSZXN1bHQsIHgs
IHkpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlMSA9
IGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1
cmUodGhpcy5tX3RhcmdldCwgMCk7CisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xUZXh0dXJlfSAq
LyB2YXIgdGV4dHVyZTIgPSBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVy
VGVzdC5jcmVhdGVUZXh0dXJlKHRoaXMubV90YXJnZXQsIDEpOworCisgICAgICAgIGdsLnZpZXdw
b3J0KHgsIHksIGdsc1NhbXBsZXJPYmplY3RUZXN0LlZJRVdQT1JUX1dJRFRILCBnbHNTYW1wbGVy
T2JqZWN0VGVzdC5WSUVXUE9SVF9IRUlHSFQpOworCisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xT
YW1wbGVyfSAqLyB2YXIgc2FtcGxlciA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgREVf
QVNTRVJUKHNhbXBsZXIgIT0gLTEpOworCisgICAgICAgIGdsLmJpbmRTYW1wbGVyKDAsIHNhbXBs
ZXIpOworICAgICAgICBnbC5iaW5kU2FtcGxlcigxLCBzYW1wbGVyKTsKKworICAgICAgICAvLyBG
aXJzdCBzZXQgc2FtcGxlciBzdGF0ZQorICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0
aVRleHR1cmVTYW1wbGVyVGVzdC5zZXRTYW1wbGVyU3RhdGUodGhpcy5tX3NhbXBsZXJTdGF0ZSwg
c2FtcGxlcik7CisKKyAgICAgICAgLy8gU2V0IHRleHR1cmUgc3RhdGUKKyAgICAgICAgZ2wuYmlu
ZFRleHR1cmUodGhpcy5tX3RhcmdldCwgdGV4dHVyZTEpOworICAgICAgICBnbHNTYW1wbGVyT2Jq
ZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5zZXRUZXh0dXJlU3RhdGUodGhpcy5tX3Rh
cmdldCwgdGhpcy5tX3RleHR1cmVTdGF0ZTEpOworCisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRo
aXMubV90YXJnZXQsIHRleHR1cmUyKTsKKyAgICAgICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVs
dGlUZXh0dXJlU2FtcGxlclRlc3Quc2V0VGV4dHVyZVN0YXRlKHRoaXMuIG1fdGFyZ2V0LCB0aGlz
Lm1fdGV4dHVyZVN0YXRlMik7CisKKyAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJF
MCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRoaXMubV90YXJnZXQsIHRleHR1cmUxKTsKKwor
ICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUxKTsKKyAgICAgICAgZ2wuYmluZFRl
eHR1cmUodGhpcy5tX3RhcmdldCwgdGV4dHVyZTIpOworCisgICAgICAgIC8vIFJlbmRlciB1c2lu
ZyBzYW1wbGVyCisgICAgICAgIHRoaXMucmVuZGVyKCk7CisgICAgICAgIHZhciBzYW1wUmVzID0g
c2FtcGxlclJlc3VsdC5nZXRBY2Nlc3MoKTsKKyAgICAgICAgdmFyIHNhbXBSZXNUcmFuc2ZlckZv
cm1hdCA9IGdsdVRleHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KHNhbXBSZXMuZ2V0Rm9ybWF0
KCkpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKHgsIHksIHNhbXBSZXMubV93aWR0aCwgc2FtcFJl
cy5tX2hlaWdodCwgc2FtcFJlc1RyYW5zZmVyRm9ybWF0LmZvcm1hdCwgc2FtcFJlc1RyYW5zZmVy
Rm9ybWF0LmRhdGFUeXBlLCBzYW1wbGVyUmVzdWx0Lm1fcGl4ZWxzKTsKKworICAgICAgICBnbC5i
aW5kU2FtcGxlcigwLCBudWxsKTsKKyAgICAgICAgZ2wuYmluZFNhbXBsZXIoMSwgbnVsbCk7CisK
KyAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICAgICAgdmFyIHRleFJlcyA9IHRleHR1cmVSZXN1
bHQuZ2V0QWNjZXNzKCk7CisgICAgICAgIHZhciB0ZXhSZXNUcmFuc2ZlckZvcm1hdCA9IGdsdVRl
eHR1cmVVdGlsLmdldFRyYW5zZmVyRm9ybWF0KHRleFJlcy5nZXRGb3JtYXQoKSk7CisgICAgICAg
IGdsLnJlYWRQaXhlbHMoeCwgeSwgdGV4UmVzLm1fd2lkdGgsIHRleFJlcy5tX2hlaWdodCwgdGV4
UmVzVHJhbnNmZXJGb3JtYXQuZm9ybWF0LCB0ZXhSZXNUcmFuc2ZlckZvcm1hdC5kYXRhVHlwZSwg
dGV4dHVyZVJlc3VsdC5tX3BpeGVscyk7CisKKyAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5U
RVhUVVJFMCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRoaXMubV90YXJnZXQsIG51bGwpOwor
CisgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTEpOworICAgICAgICBnbC5iaW5k
VGV4dHVyZSh0aGlzLm1fdGFyZ2V0LCBudWxsKTsKKworICAgICAgICBnbC5kZWxldGVTYW1wbGVy
KHNhbXBsZXIpOworICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUxKTsKKyAgICAgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlMik7CisgICAgfTsKKworICAgIGdsc1NhbXBsZXJPYmpl
Y3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJUZXN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlv
bigpIHsKKworICAgICAgICBnbC51c2VQcm9ncmFtKHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0o
KSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHNh
bXBsZXJMb2MxID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMubV9wcm9ncmFtLmdldFByb2dy
YW0oKSwgJ3Vfc2FtcGxlcjEnKTsKKyAgICAgICAgREVfQVNTRVJUKHNhbXBsZXJMb2MxICE9IC0x
KTsKKworICAgICAgICAvKiogQHR5cGUge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSAqLyB2YXIgc2Ft
cGxlckxvYzIgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5tX3Byb2dyYW0uZ2V0UHJvZ3Jh
bSgpLCAndV9zYW1wbGVyMicpOworICAgICAgICBERV9BU1NFUlQoc2FtcGxlckxvYzIgIT0gLTEp
OworCisgICAgICAgIC8qKiBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBzY2Fs
ZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCks
ICd1X3Bvc1NjYWxlJyk7CisgICAgICAgIERFX0FTU0VSVChzY2FsZUxvYyAhPSAtMSk7CisKKyAg
ICAgICAgZ2wuY2xlYXJDb2xvcigwLjUsIDAuNSwgMC41LCAxLjApOworCisgICAgICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIGdsLnVuaWZvcm0xaShzYW1wbGVy
TG9jMSwgMCk7CisKKyAgICAgICAgZ2wudW5pZm9ybTFpKHNhbXBsZXJMb2MyLCAxKTsKKworICAg
ICAgICBnbC51bmlmb3JtMWYoc2NhbGVMb2MsIDEuMCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxnbHVEcmF3VXRpbC5WZXJ0ZXhBcnJheUJpbmRpbmc+fSAqLyB2YXIgdmVydGV4QXJyYXlz
OworICAgICAgICBzd2l0Y2ggKHRoaXMubV90YXJnZXQpIHsKKyAgICAgICAgICAgIGNhc2UgZ2wu
VEVYVFVSRV8yRDogeworICAgICAgICAgICAgICAgIHZlcnRleEFycmF5cyA9IFsKKyAgICAgICAg
ICAgICAgICAgICAgZ2x1RHJhd1V0aWwudmFiRnJvbUJpbmRpbmdQb2ludEFuZEFycmF5UG9pbnRl
cigKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsdURyYXdVdGlsLmJpbmRpbmdQb2ludEZyb21O
YW1lKCdhX3Bvc2l0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZ2x1RHJhd1V0
aWwuVmVydGV4QXJyYXlQb2ludGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdURy
YXdVdGlsLlZlcnRleENvbXBvbmVudFR5cGUuVlRYX0NPTVBfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2x1RHJhd1V0aWwuVmVydGV4Q29tcG9uZW50Q29udmVyc2lvbi5WVFhf
Q09NUF9DT05WRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzU2FtcGxlck9iamVjdFRlc3Quc19wb3Np
dGlvbnMpKQorICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgICAgICBnbHVEcmF3VXRp
bC5kcmF3KGdsLCB0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgbmV3
IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklB
TkdMRVMsIDYpKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xZihzY2FsZUxvYywgMC4y
NSk7CisKKyAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlzLm1fcHJvZ3Jh
bS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxp
c3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIDYpKTsKKworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIGdsLlRFWFRV
UkVfM0Q6IHsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheXMgPSBbCisgICAgICAgICAgICAg
ICAgICAgIGdsdURyYXdVdGlsLnZhYkZyb21CaW5kaW5nUG9pbnRBbmRBcnJheVBvaW50ZXIoCisg
ICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5iaW5kaW5nUG9pbnRGcm9tTmFtZSgn
YV9wb3NpdGlvbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdsdURyYXdVdGlsLlZl
cnRleEFycmF5UG9pbnRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRp
bC5WZXJ0ZXhDb21wb25lbnRUeXBlLlZUWF9DT01QX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24uVlRYX0NPTVBf
Q09OVkVSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LnNfcG9zaXRpb25z
M0QpKQorICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5k
cmF3KGdsLCB0aGlzLm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgbmV3IGds
dURyYXdVdGlsLlByaW1pdGl2ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdM
RVMsIDYpKTsKKworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xZihzY2FsZUxvYywgMC4yNSk7
CisKKyAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlzLm1fcHJvZ3JhbS5n
ZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2ZUxpc3Qo
Z2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIDYpKTsKKworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVf
Q1VCRV9NQVA6IHsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheXMgPSBbCisgICAgICAgICAg
ICAgICAgICAgIGdsdURyYXdVdGlsLnZhYkZyb21CaW5kaW5nUG9pbnRBbmRBcnJheVBvaW50ZXIo
CisgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3VXRpbC5iaW5kaW5nUG9pbnRGcm9tTmFt
ZSgnYV9wb3NpdGlvbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdsdURyYXdVdGls
LlZlcnRleEFycmF5UG9pbnRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHVEcmF3
VXRpbC5WZXJ0ZXhDb21wb25lbnRUeXBlLlZUWF9DT01QX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsdURyYXdVdGlsLlZlcnRleENvbXBvbmVudENvbnZlcnNpb24uVlRYX0NP
TVBfQ09OVkVSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LnNfcG9zaXRp
b25zQ3ViZSkpCisgICAgICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgICAgIGdsdURyYXdV
dGlsLmRyYXcoZ2wsIHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKSwgdmVydGV4QXJyYXlzLCBu
ZXcgZ2x1RHJhd1V0aWwuUHJpbWl0aXZlTGlzdChnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRS
SUFOR0xFUywgNikpOworCisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFmKHNjYWxlTG9jLCAw
LjI1KTsKKworICAgICAgICAgICAgICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHRoaXMubV9wcm9n
cmFtLmdldFByb2dyYW0oKSwgdmVydGV4QXJyYXlzLCBuZXcgZ2x1RHJhd1V0aWwuUHJpbWl0aXZl
TGlzdChnbHVEcmF3VXRpbC5wcmltaXRpdmVUeXBlLlRSSUFOR0xFUywgNikpOworCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEBwcml2YXRlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAor
ICAgICAqIEBwYXJhbSB7Z2xzU2FtcGxlck9iamVjdFRlc3QuU2FtcGxpbmdTdGF0ZX0gc3RhdGUK
KyAgICAgKi8KKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVz
dC5zZXRUZXh0dXJlU3RhdGUgPSBmdW5jdGlvbih0YXJnZXQsIHN0YXRlKSB7CisgICAgICAgIGds
LnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIHN0YXRlLm1pbkZp
bHRlcik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJFX01BR19G
SUxURVIsIHN0YXRlLm1hZ0ZpbHRlcik7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0
LCBnbC5URVhUVVJFX1dSQVBfUywgc3RhdGUud3JhcFMpOworICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIHN0YXRlLndyYXBUKTsKKyAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaSh0YXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9SLCBzdGF0ZS53cmFwUik7Cisg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmYodGFyZ2V0LCBnbC5URVhUVVJFX01BWF9MT0QsIHN0YXRl
Lm1heExvZCk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmYodGFyZ2V0LCBnbC5URVhUVVJFX01J
Tl9MT0QsIHN0YXRlLm1pbkxvZCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwcml2YXRl
CisgICAgICogQHBhcmFtIHtnbHNTYW1wbGVyT2JqZWN0VGVzdC5TYW1wbGluZ1N0YXRlfSBzdGF0
ZQorICAgICAqIEBwYXJhbSB7V2ViR0xTYW1wbGVyfSBzYW1wbGVyCisgICAgICovCisgICAgZ2xz
U2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3Quc2V0U2FtcGxlclN0YXRl
ID0gZnVuY3Rpb24oc3RhdGUsIHNhbXBsZXIpIHsKKyAgICAgICAgZ2wuc2FtcGxlclBhcmFtZXRl
cmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBzdGF0ZS5taW5GaWx0ZXIpOworICAg
ICAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX01BR19GSUxURVIs
IHN0YXRlLm1hZ0ZpbHRlcik7CisgICAgICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IGdsLlRFWFRVUkVfV1JBUF9TLCBzdGF0ZS53cmFwUyk7CisgICAgICAgIGdsLnNhbXBsZXJQYXJh
bWV0ZXJpKHNhbXBsZXIsIGdsLlRFWFRVUkVfV1JBUF9ULCBzdGF0ZS53cmFwVCk7CisgICAgICAg
IGdsLnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIGdsLlRFWFRVUkVfV1JBUF9SLCBzdGF0ZS53
cmFwUik7CisgICAgICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIGdsLlRFWFRVUkVf
TUFYX0xPRCwgc3RhdGUubWF4TG9kKTsKKyAgICAgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmYoc2Ft
cGxlciwgZ2wuVEVYVFVSRV9NSU5fTE9ELCBzdGF0ZS5taW5Mb2QpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcHJpdmF0ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZAorICAgICAqIEBy
ZXR1cm4ge1dlYkdMVGV4dHVyZSB9CisgICAgICovCisgICAgZ2xzU2FtcGxlck9iamVjdFRlc3Qu
TXVsdGlUZXh0dXJlU2FtcGxlclRlc3QuY3JlYXRlVGV4dHVyZTJEID0gZnVuY3Rpb24oaWQpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlID0gbnVsbDsK
KyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUyRH0gKi8gdmFyIHJlZlRleHR1
cmUgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlMkQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXh0dXJlLlRl
eHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lOVDgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5URVhUVVJFMkRfV0lEVEgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsc1NhbXBsZXJPYmplY3RUZXN0LlRFWFRVUkUyRF9IRUlHSFQpOworCisgICAgICAgIHJlZlRl
eHR1cmUuYWxsb2NMZXZlbCgwKTsKKworICAgICAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVy
ZSgpOworCisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAg
ICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cyhyZWZU
ZXh0dXJlLmdldExldmVsKDApLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzEuMCwgMS4wLCAwLjUs
IDAuNV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDE6Cisg
ICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRHcmFkaWVudHMo
cmVmVGV4dHVyZS5nZXRMZXZlbCgwKSwgWzAuMCwgMC4wLCAwLjAsIDAuMF0sIFswLjUsIDAuNSwg
MS4wLCAxLjBdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICB9CisKKyAgICAg
ICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCByZWZUZXh0dXJlLmdldFdpZHRo
KCksIHJlZlRleHR1cmUuZ2V0SGVpZ2h0KCksIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IHJlZlRleHR1cmUuZ2V0TGV2ZWwoMCkuZ2V0RGF0YVB0cigpKTsKKworICAgICAgICBnbC5nZW5l
cmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCBudWxsKTsKKworICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQKKyAgICAg
KiBAcmV0dXJuIHtXZWJHTFRleHR1cmV9CisgICAgICovCisgICAgZ2xzU2FtcGxlck9iamVjdFRl
c3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QuY3JlYXRlVGV4dHVyZTNEID0gZnVuY3Rpb24oaWQp
IHsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJHTFRleHR1cmV9ICovIHZhciB0ZXh0dXJlID0gbnVs
bDsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUzRH0gKi8gdmFyIHJlZlRl
eHR1cmUgPSBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlM0QoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyB0Y3VUZXh0dXJl
LlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOT1JNX0lO
VDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5URVhUVVJFM0RfV0lEVEgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0LlRFWFRVUkUzRF9IRUlHSFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1Nh
bXBsZXJPYmplY3RUZXN0LlRFWFRVUkUzRF9ERVBUSCk7CisKKyAgICAgICAgcmVmVGV4dHVyZS5h
bGxvY0xldmVsKDApOworCisgICAgICAgIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisK
KyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg
ICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1cmUu
Z2V0TGV2ZWwoMCksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMS4wLCAxLjAsIDAuNSwgMC41XSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVudEdyYWRpZW50cyhyZWZUZXh0
dXJlLmdldExldmVsKDApLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzAuNSwgMC41LCAxLjAsIDEu
MF0pOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCB0ZXh0dXJlKTsKKyAgICAgICAgLy8gVE9ETzogY2hl
Y2sgaW50ZXJuYWxGb3JtYXQgYW5kIGZvcm1hdCBpbiB0ZXhJbWFnZTNECisgICAgICAgIGdsLnRl
eEltYWdlM0QoZ2wuVEVYVFVSRV8zRCwgMCwgZ2wuUkdCQSwgcmVmVGV4dHVyZS5nZXRXaWR0aCgp
LCByZWZUZXh0dXJlLmdldEhlaWdodCgpLCByZWZUZXh0dXJlLmdldERlcHRoKCksIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIHJlZlRleHR1cmUuZ2V0TGV2ZWwoMCkuZ2V0RGF0YVB0cigp
KTsKKworICAgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzNEKTsKKworICAgICAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzNELCBudWxsKTsKKworICAgICAgICByZXR1cm4g
dGV4dHVyZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gaWQKKyAgICAgKiBAcmV0dXJuIHtXZWJHTFRleHR1cmV9CisgICAgICovCisg
ICAgZ2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QuY3JlYXRlVGV4
dHVyZUN1YmUgPSBmdW5jdGlvbihpZCkgeworICAgICAgICAvKiogQHR5cGUge1dlYkdMVGV4dHVy
ZX0gKi8gdmFyIHRleHR1cmUgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUu
VGV4dHVyZUN1YmV9ICovIHZhciByZWZUZXh0dXJlID0gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUN1
YmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgdGN1VGV4dHVyZS5UZXh0dXJlRm9ybWF0KHRjdVRleHR1cmUu
Q2hhbm5lbE9yZGVyLlJHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5PUk1fSU5UOCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNT
YW1wbGVyT2JqZWN0VGVzdC5DVUJFTUFQX1NJWkUpOworCisgICAgICAgIHRleHR1cmUgPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgcmVmVGV4dHVyZS5hbGxvY0xldmVsKHRjdVRleHR1
cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWCwgMCk7CisgICAgICAgIHJlZlRleHR1cmUu
YWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1ksIDApOwor
ICAgICAgICByZWZUZXh0dXJlLmFsbG9jTGV2ZWwodGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFD
RV9QT1NJVElWRV9aLCAwKTsKKyAgICAgICAgcmVmVGV4dHVyZS5hbGxvY0xldmVsKHRjdVRleHR1
cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWCwgMCk7CisgICAgICAgIHJlZlRleHR1cmUu
YWxsb2NMZXZlbCh0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1ksIDApOwor
ICAgICAgICByZWZUZXh0dXJlLmFsbG9jTGV2ZWwodGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFD
RV9ORUdBVElWRV9aLCAwKTsKKworICAgICAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgICAgICBj
YXNlIDA6CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21wb25lbnRH
cmFkaWVudHMocmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UoMCwgdGN1VGV4dHVyZS5DdWJlRmFjZS5D
VUJFRkFDRV9QT1NJVElWRV9YKSwgWzAuMCwgMC4wLCAwLjAsIDAuMF0sIFswLjUsIDAuNSwgMC41
LCAwLjVdKTsKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVu
dEdyYWRpZW50cyhyZWZUZXh0dXJlLmdldExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1YmVGYWNl
LkNVQkVGQUNFX1BPU0lUSVZFX1kpLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzAuNSwgMC41LCAw
LjUsIDAuNV0pOworICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9u
ZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZh
Y2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWiksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMC41LCAwLjUs
IDAuNSwgMC41XSk7CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21w
b25lbnRHcmFkaWVudHMocmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UoMCwgdGN1VGV4dHVyZS5DdWJl
RmFjZS5DVUJFRkFDRV9ORUdBVElWRV9YKSwgWzAuMCwgMC4wLCAwLjAsIDAuMF0sIFswLjUsIDAu
NSwgMC41LCAwLjVdKTsKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENv
bXBvbmVudEdyYWRpZW50cyhyZWZUZXh0dXJlLmdldExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1
YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1kpLCBbMC4wLCAwLjAsIDAuMCwgMC4wXSwgWzAuNSwg
MC41LCAwLjUsIDAuNV0pOworICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRo
Q29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUu
Q3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWiksIFswLjAsIDAuMCwgMC4wLCAwLjBdLCBbMC41
LCAwLjUsIDAuNSwgMC41XSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENvbXBvbmVu
dEdyYWRpZW50cyhyZWZUZXh0dXJlLmdldExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1YmVGYWNl
LkNVQkVGQUNFX1BPU0lUSVZFX1gpLCBbMC41LCAwLjUsIDAuNSwgMC41XSwgWzEuMCwgMS4wLCAx
LjAsIDEuMF0pOworICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRoQ29tcG9u
ZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUuQ3ViZUZh
Y2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWSksIFswLjUsIDAuNSwgMC41LCAwLjVdLCBbMS4wLCAxLjAs
IDEuMCwgMS4wXSk7CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdpdGhDb21w
b25lbnRHcmFkaWVudHMocmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UoMCwgdGN1VGV4dHVyZS5DdWJl
RmFjZS5DVUJFRkFDRV9QT1NJVElWRV9aKSwgWzAuNSwgMC41LCAwLjUsIDAuNV0sIFsxLjAsIDEu
MCwgMS4wLCAxLjBdKTsKKyAgICAgICAgICAgICAgICB0Y3VUZXh0dXJlVXRpbC5maWxsV2l0aENv
bXBvbmVudEdyYWRpZW50cyhyZWZUZXh0dXJlLmdldExldmVsRmFjZSgwLCB0Y3VUZXh0dXJlLkN1
YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1gpLCBbMC41LCAwLjUsIDAuNSwgMC41XSwgWzEuMCwg
MS4wLCAxLjAsIDEuMF0pOworICAgICAgICAgICAgICAgIHRjdVRleHR1cmVVdGlsLmZpbGxXaXRo
Q29tcG9uZW50R3JhZGllbnRzKHJlZlRleHR1cmUuZ2V0TGV2ZWxGYWNlKDAsIHRjdVRleHR1cmUu
Q3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWSksIFswLjUsIDAuNSwgMC41LCAwLjVdLCBbMS4w
LCAxLjAsIDEuMCwgMS4wXSk7CisgICAgICAgICAgICAgICAgdGN1VGV4dHVyZVV0aWwuZmlsbFdp
dGhDb21wb25lbnRHcmFkaWVudHMocmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UoMCwgdGN1VGV4dHVy
ZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9aKSwgWzAuNSwgMC41LCAwLjUsIDAuNV0sIFsx
LjAsIDEuMCwgMS4wLCAxLjBdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICB9
CisKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZSk7
CisKKyAgICAgICAgZm9yICh2YXIgZmFjZSBpbiB0Y3VUZXh0dXJlLkN1YmVGYWNlKSB7CisgICAg
ICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIHZhciB0YXJnZXQgPSBnbHVUZXh0
dXJlVXRpbC5nZXRHTEN1YmVGYWNlKHRjdVRleHR1cmUuQ3ViZUZhY2VbZmFjZV0pOworICAgICAg
ICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXQsIDAsIGdsLlJHQkEsIHJlZlRleHR1cmUuZ2V0U2l6
ZSgpLCByZWZUZXh0dXJlLmdldFNpemUoKSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
cmVmVGV4dHVyZS5nZXRMZXZlbEZhY2UoMCwgdGN1VGV4dHVyZS5DdWJlRmFjZVtmYWNlXSkuZ2V0
RGF0YVB0cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRF
WFRVUkVfQ1VCRV9NQVApOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFX0NVQkVf
TUFQLCBudWxsKTsKKworICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHByaXZhdGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGlkCisgICAgICogQHJldHVybiB7V2ViR0xUZXh0dXJlfQorICAgICAq
LworICAgIGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4dHVyZVNhbXBsZXJUZXN0LmNyZWF0
ZVRleHR1cmUgPSBmdW5jdGlvbih0YXJnZXQsIGlkKSB7CisgICAgICAgIC8qKiBAdHlwZSB7V2Vi
R0xUZXh0dXJlfSAqLyB2YXIgdGV4dHVyZTsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAg
ICAgICAgICAgIGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0g
Z2xzU2FtcGxlck9iamVjdFRlc3QuTXVsdGlUZXh0dXJlU2FtcGxlclRlc3QuY3JlYXRlVGV4dHVy
ZTJEKGlkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbC5U
RVhUVVJFXzNEOgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBnbHNTYW1wbGVyT2JqZWN0VGVz
dC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5jcmVhdGVUZXh0dXJlM0QoaWQpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVA6Cisg
ICAgICAgICAgICAgICAgdGV4dHVyZSA9IGdsc1NhbXBsZXJPYmplY3RUZXN0Lk11bHRpVGV4dHVy
ZVNhbXBsZXJUZXN0LmNyZWF0ZVRleHR1cmVDdWJlKGlkKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFs
c2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRleHR1cmU7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBwcml2YXRlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNTYW1wbGVyT2JqZWN0VGVzdC5N
dWx0aVRleHR1cmVTYW1wbGVyVGVzdC5zZWxlY3RWZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbih0YXJn
ZXQpIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGds
LlRFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnI3ZlcnNpb24gMzAwIGVz
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ2luIGhpZ2hwIHZlYzIgYV9wb3NpdGlvbjtcbicg
KworICAgICAgICAgICAgICAgICAgICAndW5pZm9ybSBoaWdocCBmbG9hdCB1X3Bvc1NjYWxlO1xu
JyArCisgICAgICAgICAgICAgICAgICAgICdvdXQgbWVkaXVtcCB2ZWMyIHZfdGV4Q29vcmQ7XG4n
ICsKKyAgICAgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAg
ICAgICAgICAgICAnIHtcbicgKworICAgICAgICAgICAgICAgICAgICAnXHR2X3RleENvb3JkID0g
YV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICAgICAnXHRnbF9Qb3NpdGlvbiA9IHZl
YzQodV9wb3NTY2FsZSAqIGFfcG9zaXRpb24sIDAuMCwgMS4wKTtcbicgKworICAgICAgICAgICAg
ICAgICAgICAnfSc7CisKKyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfM0Q6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgJ2luIGhpZ2hwIHZlYzMgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAg
ICAgICAndW5pZm9ybSBoaWdocCBmbG9hdCB1X3Bvc1NjYWxlO1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICdvdXQgbWVkaXVtcCB2ZWMzIHZfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICAgICAnIHtcbicg
KworICAgICAgICAgICAgICAgICAgICAnXHR2X3RleENvb3JkID0gYV9wb3NpdGlvbjtcbicgKwor
ICAgICAgICAgICAgICAgICAgICAnXHRnbF9Qb3NpdGlvbiA9IHZlYzQodV9wb3NTY2FsZSAqIGFf
cG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbicgKworICAgICAgICAgICAgICAgICAgICAnfSc7CisK
KyAgICAgICAgICAgICAgICBjYXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAnI3ZlcnNpb24gMzAwIGVzXG4nICsKKyAgICAgICAgICAgICAgICAgICAg
J2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAgICAgICAgICAgICAndW5p
Zm9ybSBoaWdocCBmbG9hdCB1X3Bvc1NjYWxlO1xuJyArCisgICAgICAgICAgICAgICAgICAgICdv
dXQgbWVkaXVtcCB2ZWMyIHZfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3Zv
aWQgbWFpbiAodm9pZClcbicgKworICAgICAgICAgICAgICAgICAgICAnIHtcbicgKworICAgICAg
ICAgICAgICAgICAgICAnXHR2X3RleENvb3JkID0gYV9wb3NpdGlvbi56dztcbicgKworICAgICAg
ICAgICAgICAgICAgICAnXHRnbF9Qb3NpdGlvbiA9IHZlYzQodV9wb3NTY2FsZSAqIGFfcG9zaXRp
b24ueHksIDAuMCwgMS4wKTtcbicgKworICAgICAgICAgICAgICAgICAgICAnfSc7CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAgICAgICB9CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEBwcml2YXRlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdl
dAorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNTYW1wbGVyT2JqZWN0
VGVzdC5NdWx0aVRleHR1cmVTYW1wbGVyVGVzdC5zZWxlY3RGcmFnbWVudFNoYWRlciA9IGZ1bmN0
aW9uKHRhcmdldCkgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgICAgICAgICAgICAg
IGNhc2UgZ2wuVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcjdmVyc2lv
biAzMDAgZXNcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtc
bicgKworICAgICAgICAgICAgICAgICAgICAndW5pZm9ybSBsb3dwIHNhbXBsZXIyRCB1X3NhbXBs
ZXIxO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd1bmlmb3JtIGxvd3Agc2FtcGxlcjJEIHVf
c2FtcGxlcjI7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ2luIG1lZGl1bXAgdmVjMiB2X3Rl
eENvb3JkO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsK
KyAgICAgICAgICAgICAgICAgICAgJyB7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ1x0b19j
b2xvciA9IHZlYzQoMC43NSwgMC43NSwgMC43NSwgMS4wKSAqICh0ZXh0dXJlKHVfc2FtcGxlcjEs
IHZfdGV4Q29vcmQpICsgdGV4dHVyZSh1X3NhbXBsZXIyLCB2X3RleENvb3JkKSk7XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJ30nOworCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgY2FzZSBnbC5URVhUVVJFXzNEOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gJyN2ZXJzaW9uIDMwMCBlc1xubGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAg
dmVjNCBvX2NvbG9yO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd1bmlmb3JtIGxvd3Agc2Ft
cGxlcjNEIHVfc2FtcGxlcjE7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gbG93
cCBzYW1wbGVyM0QgdV9zYW1wbGVyMjtcbicgKworICAgICAgICAgICAgICAgICAgICAnaW4gbWVk
aXVtcCB2ZWMzIHZfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3ZvaWQgbWFp
biAodm9pZClcbicgKworICAgICAgICAgICAgICAgICAgICAnIHtcbicgKworICAgICAgICAgICAg
ICAgICAgICAnXHRvX2NvbG9yID0gdmVjNCgwLjc1LCAwLjc1LCAwLjc1LCAxLjApICogKHRleHR1
cmUodV9zYW1wbGVyMSwgdl90ZXhDb29yZCkgKyB0ZXh0dXJlKHVfc2FtcGxlcjIsIHZfdGV4Q29v
cmQpKTtcbicgKworICAgICAgICAgICAgICAgICAgICAnfSc7CisKKyAgICAgICAgICAgICAgICBj
YXNlIGdsLlRFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnI3Zl
cnNpb24gMzAwIGVzXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29s
b3I7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gbG93cCBzYW1wbGVyQ3ViZSB1
X3NhbXBsZXIxO1xuJyArCisgICAgICAgICAgICAgICAgICAgICd1bmlmb3JtIGxvd3Agc2FtcGxl
ckN1YmUgdV9zYW1wbGVyMjtcbicgKworICAgICAgICAgICAgICAgICAgICAnaW4gbWVkaXVtcCB2
ZWMyIHZfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ3ZvaWQgbWFpbiAodm9p
ZClcbicgKworICAgICAgICAgICAgICAgICAgICAnIHtcbicgKworICAgICAgICAgICAgICAgICAg
ICAnXHRvX2NvbG9yID0gdmVjNCgwLjUsIDAuNSwgMC41LCAxLjApICogKHRleHR1cmUodV9zYW1w
bGVyMSwgdmVjMyhjb3MoMy4xNCAqIHZfdGV4Q29vcmQueSkgKiBzaW4oMy4xNCAqIHZfdGV4Q29v
cmQueCksIHNpbigzLjE0ICogdl90ZXhDb29yZC55KSwgY29zKDMuMTQgKiB2X3RleENvb3JkLnkp
ICogY29zKDMuMTQgKiB2X3RleENvb3JkLngpKSknICsKKyAgICAgICAgICAgICAgICAgICAgJysg
dGV4dHVyZSh1X3NhbXBsZXIyLCB2ZWMzKGNvcygzLjE0ICogdl90ZXhDb29yZC55KSAqIHNpbigz
LjE0ICogdl90ZXhDb29yZC54KSwgc2luKDMuMTQgKiB2X3RleENvb3JkLnkpLCBjb3MoMy4xNCAq
IHZfdGV4Q29vcmQueSkgKiBjb3MoMy4xNCAqIHZfdGV4Q29vcmQueCkpKSk7XG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJ30nOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICcnOworICAgICAgICAgICAgfQorICAgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9n
bHNTaGFkZXJFeGVjVXRpbC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzU2hhZGVyRXhlY1V0aWwuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWVhMjllN2U0YzQwZjBhOWZhNzIzYWEyZWQzM2Y5M2UzNTQzMTE4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Rl
cXAvbW9kdWxlcy9zaGFyZWQvZ2xzU2hhZGVyRXhlY1V0aWwuanMKQEAgLTAsMCArMSw3MzEgQEAK
Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVu
R0wgKEVTKSBNb2R1bGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICog
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAqCisgKi8vKiEKKyAqIFxmaWxlCisgKiBcYnJpZWYgU2hhZGVyIGV4ZWN1dGlv
biB1dGlsaXRpZXMuCisgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJv
dmlkZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVyRXhlY1V0aWwnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNv
bW1vbi50Y3VNYXRyaXhVdGlsJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cucmVxdWly
ZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFt
ZXdvcmsub3BlbmdsLmdsdVZhclR5cGUnKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKwor
ICAgIHZhciBnbHNTaGFkZXJFeGVjVXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckV4ZWNV
dGlsOworICAgIHZhciBnbHVWYXJUeXBlID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVWYXJUeXBlOwor
ICAgIHZhciBnbHVTaGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwor
ICAgIHZhciBnbHVTaGFkZXJQcm9ncmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9n
cmFtOworICAgIHZhciBnbHVEcmF3VXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWw7
CisgICAgdmFyIGdsdVRleHR1cmVVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRp
bDsKKyAgICB2YXIgdGN1VGV4dHVyZSA9IGZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZTsKKyAg
ICB2YXIgdGN1TWF0cml4ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VNYXRyaXg7CisgICAgdmFyIHRj
dU1hdHJpeFV0aWwgPSBmcmFtZXdvcmsuY29tbW9uLnRjdU1hdHJpeFV0aWw7CisKKyAgICB2YXIg
REVfQVNTRVJUID0gZnVuY3Rpb24oeCkgeworICAgICAgICBpZiAoIXgpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0Fzc2VydCBmYWlsZWQnKTsKKyAgICB9OworCisgICAgdmFyIHNldFBh
cmVudENsYXNzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeworICAgICAgICBjaGlsZC5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpOworICAgICAgICBjaGlsZC5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBjaGlsZDsKKyAgICB9OworCisgICAgLyoqCisgICAgICog
QGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lCisgICAgICogQHBhcmFt
IHtnbHVWYXJUeXBlLlZhclR5cGU9fSB2YXJUeXBlCisgICAgICovCisgICAgZ2xzU2hhZGVyRXhl
Y1V0aWwuU3ltYm9sID0gZnVuY3Rpb24obmFtZSwgdmFyVHlwZSkgeworICAgICAgICBuYW1lID0g
bmFtZSA9PT0gdW5kZWZpbmVkID8gJzx1bm5hbWVkPicgOiBuYW1lOworICAgICAgICAvKiogQHR5
cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVW
YXJUeXBlLlZhclR5cGV9ICovIHRoaXMudmFyVHlwZSA9IHZhclR5cGUgfHwgbnVsbDsKKyAgICB9
OworCisgICAgLy8hIENvbXBsZXRlIHNoYWRlciBzcGVjaWZpY2F0aW9uLgorICAgIC8qKgorICAg
ICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAgIGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNw
ZWMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkdMU0xW
ZXJzaW9ufSAqLyB0aGlzLnZlcnNpb24gPSBnbHVTaGFkZXJVdGlsLkdMU0xWZXJzaW9uLlYzMDBf
RVM7IC8vITwgU2hhZGVyIHZlcnNpb24uCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzU2hh
ZGVyRXhlY1V0aWwuU3ltYm9sPn0gKi8gdGhpcy5pbnB1dHMgPSBbXTsKKyAgICAgICAgLyoqIEB0
eXBlIHtBcnJheTxnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2w+fSAqLyB0aGlzLm91dHB1dHMgPSBb
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMuZ2xvYmFsRGVjbGFyYXRpb25z
ID0gJyc7IC8vITwgVGhlc2UgYXJlIHBsYWNlZCBpbnRvIGdsb2JhbCBzY29wZS4gQ2FuIGNvbnRh
aW4gdW5pZm9ybSBkZWNsYXJhdGlvbnMgZm9yIGV4YW1wbGUuCisgICAgICAgIC8qKiBAdHlwZSB7
Kn0gKi8gdGhpcy5zb3VyY2U7IC8vITwgU291cmNlIHNuaXBwZXQgdG8gYmUgZXhlY3V0ZWQuCisg
ICAgfTsKKworICAgIC8qKgorICAgICAqIEJhc2UgY2xhc3MgZm9yIHNoYWRlciBleGVjdXRvci4K
KyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlckV4ZWNVdGlsLlNo
YWRlclNwZWN9IHNoYWRlclNwZWMKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5TaGFk
ZXJFeGVjdXRvciA9IGZ1bmN0aW9uKHNoYWRlclNwZWMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2w+fSAqLyB0aGlzLm1faW5wdXRzID0gc2hhZGVy
U3BlYy5pbnB1dHM7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzU2hhZGVyRXhlY1V0aWwu
U3ltYm9sPn0gKi8gdGhpcy5tX291dHB1dHMgPSBzaGFkZXJTcGVjLm91dHB1dHM7CisgICAgfTsK
KworICAgIGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4ZWN1dG9yLnByb3RvdHlwZS51c2VQcm9n
cmFtID0gZnVuY3Rpb24oKSB7CisgICAgICAgIERFX0FTU0VSVCh0aGlzLmlzT2spOworICAgICAg
ICBnbC51c2VQcm9ncmFtKHRoaXMuZ2V0UHJvZ3JhbSgpKTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5T
aGFkZXJFeGVjdXRvci5wcm90b3R5cGUuaXNPayA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ1ZpcnR1YWwgZnVuY3Rpb24uIFBsZWFzZSBvdmVycmlkZS4nKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViR0xQcm9ncmFtfQorICAgICAqLworICAg
IGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4ZWN1dG9yLnByb3RvdHlwZS5nZXRQcm9ncmFtID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlydHVhbCBmdW5jdGlvbi4g
UGxlYXNlIG92ZXJyaWRlLicpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbnVtVmFsdWVzCisgICAgICogQHBhcmFtIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gaW5w
dXRzCisgICAgICogQHJldHVybiB7QXJyYXk8Z29vZy5UeXBlZEFycmF5Pn0gb3V0cHV0cworICAg
ICAqLworICAgIGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4ZWN1dG9yLnByb3RvdHlwZS5leGVj
dXRlID0gZnVuY3Rpb24obnVtVmFsdWVzLCBpbnB1dHMpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdWaXJ0dWFsIGZ1bmN0aW9uLiBQbGVhc2Ugb3ZlcnJpZGUuJyk7CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEJhc2UgY2xhc3MgZm9yIHNoYWRlciBleGVjdXRvci4KKyAgICAgKiBAcGFy
YW0ge2dsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZX0gc2hhZGVyVHlwZQorICAgICAqIEBwYXJh
bSB7Z2xzU2hhZGVyRXhlY1V0aWwuU2hhZGVyU3BlY30gc2hhZGVyU3BlYworICAgICAqIEByZXR1
cm4ge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4ZWN1dG9yfQorICAgICAqLworICAgIGdsc1No
YWRlckV4ZWNVdGlsLmNyZWF0ZUV4ZWN1dG9yID0gZnVuY3Rpb24oc2hhZGVyVHlwZSwgc2hhZGVy
U3BlYykgeworICAgICAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLlZFUlRFWDogcmV0dXJuIG5ldyBnbHNTaGFkZXJF
eGVjVXRpbC5WZXJ0ZXhTaGFkZXJFeGVjdXRvcihzaGFkZXJTcGVjKTsKKyAgICAgICAgICAgIGNh
c2UgZ2x1U2hhZGVyUHJvZ3JhbS5zaGFkZXJUeXBlLkZSQUdNRU5UOiByZXR1cm4gbmV3IGdsc1No
YWRlckV4ZWNVdGlsLkZyYWdtZW50U2hhZGVyRXhlY3V0b3Ioc2hhZGVyU3BlYyk7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0
ZWQgc2hhZGVyIHR5cGU6ICcgKyBzaGFkZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWN9IHNoYWRl
clNwZWMKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhl
Y1V0aWwuZ2VuZXJhdGVWZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbihzaGFkZXJTcGVjKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHVzZXNJbm91dCA9IHRydWU7CisgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgaW5fID0gdXNlc0lub3V0ID8gJ2luJyA6ICdhdHRy
aWJ1dGUnOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG91dCA9IHVzZXNJbm91
dCA/ICdvdXQnIDogJ3ZhcnlpbmcnOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFy
IHNyYyA9ICcnOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZlY1NpemU7Cisg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIGludEJhc2VU
eXBlOworCisgICAgICAgIHNyYyArPSAnI3ZlcnNpb24gMzAwIGVzXG4nOworCisgICAgICAgIGlm
IChzaGFkZXJTcGVjLmdsb2JhbERlY2xhcmF0aW9ucy5sZW5ndGggPiAwKQorICAgICAgICAgICAg
c3JjICs9IChzaGFkZXJTcGVjLmdsb2JhbERlY2xhcmF0aW9ucyArICdcbicpOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc2hhZGVyU3BlYy5pbnB1dHMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBzcmMgKz0gKGluXyArICcgJyArIGdsdVZhclR5cGUuZGVjbGFyZVZhcmlhYmxlKHNo
YWRlclNwZWMuaW5wdXRzW2ldLnZhclR5cGUsIHNoYWRlclNwZWMuaW5wdXRzW2ldLm5hbWUpICsg
JztcbicpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hhZGVyU3BlYy5vdXRwdXRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gc2hhZGVyU3BlYy5vdXRw
dXRzW2ldOworICAgICAgICAgICAgREVfQVNTRVJUKG91dHB1dC52YXJUeXBlLmlzQmFzaWNUeXBl
KCkpOworCisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlQm9vbE9yQlZl
YyhvdXRwdXQudmFyVHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKKyAgICAgICAgICAgICAgICB2ZWNT
aXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUob3V0cHV0LnZhclR5cGUu
Z2V0QmFzaWNUeXBlKCkpOworICAgICAgICAgICAgICAgIGludEJhc2VUeXBlID0gdmVjU2l6ZSA+
IDEgPyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuSU5ULCB2ZWNTaXplKSA6IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1VmFyVHlwZS5WYXJUeXBlfSAqLyB2YXIgaW50VHlwZSA9IG5l
dyBnbHVWYXJUeXBlLlZhclR5cGUoKS5WYXJUeXBlQmFzaWMoaW50QmFzZVR5cGUsIGdsdVNoYWRl
clV0aWwucHJlY2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7CisKKyAgICAgICAgICAgICAgICBzcmMg
Kz0gKCdmbGF0ICcgKyBvdXQgKyAnICcgKyBnbHVWYXJUeXBlLmRlY2xhcmVWYXJpYWJsZShpbnRU
eXBlLCAnb18nICsgb3V0cHV0Lm5hbWUpICsgJztcbicpOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgc3JjICs9ICgnZmxhdCAnICsgb3V0ICsgJyAnICsgZ2x1VmFyVHlwZS5k
ZWNsYXJlVmFyaWFibGUob3V0cHV0LnZhclR5cGUsIG91dHB1dC5uYW1lKSArICc7XG4nKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHNyYyArPSAnXG4nICsKKyAgICAgICAgICAgICd2b2lkIG1haW4g
KHZvaWQpXG4nICsKKyAgICAgICAgICAgICd7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9zaXRp
b24gPSB2ZWM0KDAuMCk7XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9pbnRTaXplID0gMS4wO1xu
XG4nOworCisgICAgICAgIC8vIERlY2xhcmUgbmVjZXNzYXJ5IG91dHB1dCB2YXJpYWJsZXMgKGJv
b2xzKS4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkZXJTcGVjLm91dHB1dHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVCb29s
T3JCVmVjKHNoYWRlclNwZWMub3V0cHV0c1tpXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpKSkKKyAg
ICAgICAgICAgICAgICBzcmMgKz0gKCdcdCcgKyBnbHVWYXJUeXBlLmRlY2xhcmVWYXJpYWJsZShz
aGFkZXJTcGVjLm91dHB1dHNbaV0udmFyVHlwZSwgc2hhZGVyU3BlYy5vdXRwdXRzW2ldLm5hbWUp
ICsgJztcbicpOworICAgICAgICB9CisKKyAgICAgICAgLy9PcGVyYXRpb24gLSBpbmRlbnRlZCB0
byBjb3JyZWN0IGxldmVsLgorICAgICAgICAvLyBUT0RPOiBBZGQgaW5kZW50aW5nCisgICAgICAg
IHNyYyArPSBzaGFkZXJTcGVjLnNvdXJjZTsKKworICAgICAgICAvLyBBc3NpZ25tZW50cyB0byBv
dXRwdXRzLgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNoYWRlclNwZWMub3V0cHV0cy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJv
b2xPckJWZWMob3V0cHV0LnZhclR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CisgICAgICAgICAgICAg
ICAgdmVjU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKG91dHB1dC52
YXJUeXBlLmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBpbnRCYXNlVHlwZSA9IHZl
Y1NpemUgPiAxID8gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVZlY3RvcihnbHVTaGFkZXJVdGls
LkRhdGFUeXBlLklOVCwgdmVjU2l6ZSkgOiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVDsKKwor
ICAgICAgICAgICAgICAgIHNyYyArPSAoJ1x0b18nICsgb3V0cHV0Lm5hbWUgKyAnID0gJyArIGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGludEJhc2VUeXBlKSArICcoJyArIG91dHB1dC5u
YW1lICsgJyk7XG4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNyYyAr
PSAnfVxuJzsKKworICAgICAgICByZXR1cm4gc3JjOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhlY1V0aWwuZ2VuZXJh
dGVFbXB0eUZyYWdtZW50U291cmNlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgc3JjOworCisgICAgICAgIHNyYyA9ICcjdmVyc2lvbiAzMDAgZXNcbic7
CisgICAgICAgIHNyYyArPSAnb3V0IGxvd3AgdmVjNCBjb2xvcjtcbic7CisgICAgICAgIHNyYyAr
PSAndm9pZCBtYWluICh2b2lkKVxue1xuJzsKKyAgICAgICAgc3JjICs9ICcgY29sb3IgPSB2ZWM0
KDAuMCk7XG4nOworICAgICAgICBzcmMgKz0gJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHNyYzsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFkZXJFeGVjVXRpbC5TaGFk
ZXJTcGVjfSBzaGFkZXJTcGVjCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0UHJlZml4Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dFByZWZpeAorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5nZW5lcmF0ZVBhc3N0aHJvdWdoVmVy
dGV4U2hhZGVyID0gZnVuY3Rpb24oc2hhZGVyU3BlYywgaW5wdXRQcmVmaXgsIG91dHB1dFByZWZp
eCkgeworICAgICAgICAvLyBmbGF0IHF1YWxpZmllciBpcyBub3QgcHJlc2VudCBpbiBlYXJsaWVy
IHZlcnNpb25zPworICAgICAgICAvLyBERV9BU1NFUlQoZ2x1OjpnbHNsVmVyc2lvblVzZXNJbk91
dFF1YWxpZmllcnMoc2hhZGVyU3BlYy52ZXJzaW9uKSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciBzcmM7CisKKyAgICAgICAgc3JjID0gJyN2ZXJzaW9uIDMwMCBlc1xuJyAr
CisgICAgICAgICAgICAnaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuJzsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNoYWRlclNwZWMuaW5wdXRzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICBzcmMgKz0gKCdpbiAnICsgZ2x1VmFyVHlwZS5kZWNsYXJlVmFyaWFibGUoc2hhZGVy
U3BlYy5pbnB1dHNbaV0udmFyVHlwZSwgaW5wdXRQcmVmaXggKyBzaGFkZXJTcGVjLmlucHV0c1tp
XS5uYW1lKSArICc7XG4nICsKKyAgICAgICAgICAgICAgICAnZmxhdCBvdXQgJyArIGdsdVZhclR5
cGUuZGVjbGFyZVZhcmlhYmxlKHNoYWRlclNwZWMuaW5wdXRzW2ldLnZhclR5cGUsIG91dHB1dFBy
ZWZpeCArIHNoYWRlclNwZWMuaW5wdXRzW2ldLm5hbWUpICsgJztcbicpOworICAgICAgICB9CisK
KyAgICAgICAgc3JjICs9ICdcbnZvaWQgbWFpbiAodm9pZClcbntcbicgKworICAgICAgICAgICAg
JyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4nICsKKyAgICAgICAgICAgICcgZ2xfUG9pbnRT
aXplID0gMS4wO1xuJzsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNoYWRlclNwZWMu
aW5wdXRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgc3JjICs9ICgnXHQnICsgb3V0cHV0UHJl
Zml4ICsgc2hhZGVyU3BlYy5pbnB1dHNbaV0ubmFtZSArICcgPSAnICsgaW5wdXRQcmVmaXggKyBz
aGFkZXJTcGVjLmlucHV0c1tpXS5uYW1lICsgJztcbicpOworCisgICAgICAgIHNyYyArPSAnfVxu
JzsKKworICAgICAgICByZXR1cm4gc3JjOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlclNwZWN9IHNoYWRlclNwZWMKKyAgICAgKiBAcGFy
YW0ge2Jvb2xlYW59IHVzZUludE91dHB1dHMKKyAgICAgKiBAcGFyYW0geyp9IG91dExvY2F0aW9u
TWFwCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc1NoYWRlckV4ZWNV
dGlsLmdlbmVyYXRlRnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlvbihzaGFkZXJTcGVjLCB1c2VJbnRP
dXRwdXRzLCBvdXRMb2NhdGlvbk1hcCkgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHZlY1NpemU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtVmVjczsK
KyAgICAgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgaW50QmFz
aWNUeXBlOworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovIHZh
ciB1aW50QmFzaWNUeXBlOworICAgICAgICAvKiogQHR5cGUge2dsdVZhclR5cGUuVmFyVHlwZX0g
Ki8gdmFyIHVpbnRUeXBlOworICAgICAgICAvKiogQHR5cGUge2dsdVZhclR5cGUuVmFyVHlwZX0g
Ki8gdmFyIGludFR5cGU7CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzcmM7
CisgICAgICAgIHNyYyA9ICcjdmVyc2lvbiAzMDAgZXNcbic7CisKKyAgICAgICAgaWYgKCFzaGFk
ZXJTcGVjLmdsb2JhbERlY2xhcmF0aW9ucy5sZW5ndGggPiAwKQorICAgICAgICAgICAgc3JjICs9
IChzaGFkZXJTcGVjLmdsb2JhbERlY2xhcmF0aW9ucyArICdcbicpOworCisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2hhZGVyU3BlYy5pbnB1dHMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBzcmMgKz0gKCdmbGF0IGluICcgKyBnbHVWYXJUeXBlLmRlY2xhcmVWYXJpYWJsZShzaGFkZXJT
cGVjLmlucHV0c1tpXS52YXJUeXBlLCBzaGFkZXJTcGVjLmlucHV0c1tpXS5uYW1lKSArICc7XG4n
KTsKKworICAgICAgICBmb3IgKHZhciBvdXROZHggPSAwOyBvdXROZHggPCBzaGFkZXJTcGVjLm91
dHB1dHMubGVuZ3RoOyArK291dE5keCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNTaGFk
ZXJFeGVjVXRpbC5TeW1ib2x9ICovIHZhciBvdXRwdXQgPSBzaGFkZXJTcGVjLm91dHB1dHNbb3V0
TmR4XTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9jYXRpb24gPSBv
dXRMb2NhdGlvbk1hcFtvdXRwdXQubmFtZV07CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIG91dFZhck5hbWUgPSAnb18nICsgb3V0cHV0Lm5hbWU7CisgICAgICAgICAgICAv
KiogQHR5cGUge2dsdVZhclR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbn0gKi8gdmFyIGRlY2wgPSBu
ZXcgZ2x1VmFyVHlwZS5WYXJpYWJsZURlY2xhcmF0aW9uKG91dHB1dC52YXJUeXBlLCBvdXRWYXJO
YW1lLCBnbHVWYXJUeXBlLlN0b3JhZ2UuU1RPUkFHRV9PVVQsIHVuZGVmaW5lZCwgbmV3IGdsdVZh
clR5cGUuTGF5b3V0KGxvY2F0aW9uKSk7CisKKyAgICAgICAgICAgIERFX0FTU0VSVChvdXRwdXQu
dmFyVHlwZS5pc0Jhc2ljVHlwZSgpKTsKKworICAgICAgICAgICAgaWYgKHVzZUludE91dHB1dHMg
JiYgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZlYyhvdXRwdXQudmFyVHlwZS5nZXRC
YXNpY1R5cGUoKSkpIHsKKyAgICAgICAgICAgICAgICB2ZWNTaXplID0gZ2x1U2hhZGVyVXRpbC5n
ZXREYXRhVHlwZVNjYWxhclNpemUob3V0cHV0LnZhclR5cGUuZ2V0QmFzaWNUeXBlKCkpOworICAg
ICAgICAgICAgICAgIHVpbnRCYXNpY1R5cGUgPSB2ZWNTaXplID4gMSA/IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVWZWN0b3IoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5ULCB2ZWNTaXplKSA6
IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVDsKKyAgICAgICAgICAgICAgICB1aW50VHlwZSA9
IGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKHVpbnRCYXNpY1R5cGUsIGdsdVNoYWRlclV0aWwucHJl
Y2lzaW9uLlBSRUNJU0lPTl9ISUdIUCk7CisKKyAgICAgICAgICAgICAgICBkZWNsLnZhclR5cGUg
PSB1aW50VHlwZTsKKyAgICAgICAgICAgICAgICBzcmMgKz0gKGRlY2wgKyAnO1xuJyk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWMob3V0
cHV0LnZhclR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CisgICAgICAgICAgICAgICAgdmVjU2l6ZSA9
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKG91dHB1dC52YXJUeXBlLmdldEJh
c2ljVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBpbnRCYXNpY1R5cGUgPSB2ZWNTaXplID4gMSA/
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVWZWN0b3IoZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5J
TlQsIHZlY1NpemUpIDogZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ7CisgICAgICAgICAgICAg
ICAgaW50VHlwZSA9IGdsdVZhclR5cGUubmV3VHlwZUJhc2ljKGludEJhc2ljVHlwZSwgZ2x1U2hh
ZGVyVXRpbC5wcmVjaXNpb24uUFJFQ0lTSU9OX0hJR0hQKTsKKworICAgICAgICAgICAgICAgIGRl
Y2wudmFyVHlwZSA9IGludFR5cGU7CisgICAgICAgICAgICAgICAgc3JjICs9IChkZWNsICsgJztc
bicpOworICAgICAgICAgICAgfSBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRy
aXgob3V0cHV0LnZhclR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CisgICAgICAgICAgICAgICAgdmVj
U2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKG91dHB1dC52YXJU
eXBlLmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBudW1WZWNzID0gZ2x1U2hhZGVy
VXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnMob3V0cHV0LnZhclR5cGUuZ2V0QmFzaWNU
eXBlKCkpOworICAgICAgICAgICAgICAgIHVpbnRCYXNpY1R5cGUgPSBnbHVTaGFkZXJVdGlsLmdl
dERhdGFUeXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVCwgdmVjU2l6ZSk7Cisg
ICAgICAgICAgICAgICAgdWludFR5cGUgPSBnbHVWYXJUeXBlLm5ld1R5cGVCYXNpYyh1aW50QmFz
aWNUeXBlLCBnbHVTaGFkZXJVdGlsLnByZWNpc2lvbi5QUkVDSVNJT05fSElHSFApOworCisgICAg
ICAgICAgICAgICAgZGVjbC52YXJUeXBlID0gdWludFR5cGU7CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgdmVjTmR4ID0gMDsgdmVjTmR4IDwgbnVtVmVjczsgKyt2ZWNOZHgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGVjbC5uYW1lID0gb3V0VmFyTmFtZSArICdfJyArICh2ZWNOZHgpOworICAg
ICAgICAgICAgICAgICAgICBkZWNsLmxheW91dC5sb2NhdGlvbiA9IGxvY2F0aW9uICsgdmVjTmR4
OworICAgICAgICAgICAgICAgICAgICBzcmMgKz0gKGRlY2wgKyAnO1xuJyk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIC8vc3JjICs9ICcnOy8vZ2x1OjpWYXJpYWJsZURl
Y2xhcmF0aW9uKG91dHB1dC52YXJUeXBlLCBvdXRwdXQubmFtZSwgZ2x1OjpTVE9SQUdFX09VVCwg
Z2x1OjpJTlRFUlBPTEFUSU9OX0xBU1QsIGxvY2F0aW9uKSA8PCAiO1xuIjsKKyAgICAgICAgICAg
ICAgICBzcmMgKz0gbmV3IGdsdVZhclR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbihvdXRwdXQudmFy
VHlwZSwgb3V0cHV0Lm5hbWUsIGdsdVZhclR5cGUuU3RvcmFnZS5TVE9SQUdFX09VVCwgdW5kZWZp
bmVkLCBuZXcgZ2x1VmFyVHlwZS5MYXlvdXQobG9jYXRpb24pKSArICc7XG4nOworICAgICAgICB9
CisKKyAgICAgICAgc3JjICs9ICdcbnZvaWQgbWFpbiAodm9pZClcbntcbic7CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkZXJTcGVjLm91dHB1dHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmICgodXNlSW50T3V0cHV0cyAmJiBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVG
bG9hdE9yVmVjKHNoYWRlclNwZWMub3V0cHV0c1tpXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpKSkg
fHwKKyAgICAgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKHNo
YWRlclNwZWMub3V0cHV0c1tpXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpKSB8fAorICAgICAgICAg
ICAgICAgIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeChzaGFkZXJTcGVjLm91dHB1dHNb
aV0udmFyVHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgICAgICAgICAgc3JjICs9ICgnXHQn
ICsgZ2x1VmFyVHlwZS5kZWNsYXJlVmFyaWFibGUoc2hhZGVyU3BlYy5vdXRwdXRzW2ldLnZhclR5
cGUsIHNoYWRlclNwZWMub3V0cHV0c1tpXS5uYW1lKSArICc7XG4nKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE9wZXJhdGlvbiAtIGluZGVudGVkIHRvIGNvcnJlY3QgbGV2ZWwuCisgICAgICAg
IC8vIFRPRE86IEFkZCBpbmRlbnRpbmcKKyAgICAgICAgc3JjICs9IHNoYWRlclNwZWMuc291cmNl
OworICAgICAgICAvLyB7CisgICAgICAgIC8vICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gb3BTcmMg
KHNoYWRlclNwZWMuc291cmNlKTsKKyAgICAgICAgLy8gICAgIC8qKiBAdHlwZXtudW1iZXJ9ICov
IHZhciBsaW5lOworICAgICAgICAvLworICAgICAgICAvLyAgICAgd2hpbGUgKHN0ZDo6Z2V0bGlu
ZShvcFNyYywgbGluZSkpCisgICAgICAgIC8vICAgICAgICAgc3JjICs9ICgnXHQnIDw8IGxpbmUg
PDwgJ1xuJyk7CisgICAgICAgIC8vIH0KKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNo
YWRlclNwZWMub3V0cHV0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHVzZUludE91
dHB1dHMgJiYgZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRPclZlYyhzaGFkZXJTcGVjLm91
dHB1dHNbaV0udmFyVHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgICAgICAgICAgc3JjICs9
ICgnIG9fJyArIHNoYWRlclNwZWMub3V0cHV0c1tpXS5uYW1lICsgJyA9IGZsb2F0Qml0c1RvVWlu
dCgnICsgc2hhZGVyU3BlYy5vdXRwdXRzW2ldLm5hbWUgKyAnKTtcbicpOworICAgICAgICAgICAg
ZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHNoYWRlclNwZWMub3V0cHV0
c1tpXS52YXJUeXBlLmdldEJhc2ljVHlwZSgpKSkgeworICAgICAgICAgICAgICAgIG51bVZlY3Mg
PSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyhzaGFkZXJTcGVjLm91
dHB1dHNbaV0udmFyVHlwZS5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciB2ZWNOZHggPSAwOyB2ZWNOZHggPCBudW1WZWNzOyArK3ZlY05keCkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHVzZUludE91dHB1dHMpCisgICAgICAgICAgICAgICAgICAgICAgICBzcmMg
Kz0gKCdcdG9fJyArIHNoYWRlclNwZWMub3V0cHV0c1tpXS5uYW1lICsgJ18nICsgdmVjTmR4ICsg
JyA9IGZsb2F0Qml0c1RvVWludCgnICsgc2hhZGVyU3BlYy5vdXRwdXRzW2ldLm5hbWUgKyAnWycg
KyB2ZWNOZHggKyAnXSk7XG4nKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3JjICs9ICgnXHRvXycgKyBzaGFkZXJTcGVjLm91dHB1dHNbaV0ubmFt
ZSArICdfJyArIHZlY05keCArICcgPSAnICsgc2hhZGVyU3BlYy5vdXRwdXRzW2ldLm5hbWUgKyAn
WycgKyB2ZWNOZHggKyAnXTtcbicpOworICAgICAgICAgICAgfSBlbHNlIGlmIChnbHVTaGFkZXJV
dGlsLmlzRGF0YVR5cGVCb29sT3JCVmVjKHNoYWRlclNwZWMub3V0cHV0c1tpXS52YXJUeXBlLmdl
dEJhc2ljVHlwZSgpKSkgeworICAgICAgICAgICAgICAgIHZlY1NpemUgPSBnbHVTaGFkZXJVdGls
LmdldERhdGFUeXBlU2NhbGFyU2l6ZShzaGFkZXJTcGVjLm91dHB1dHNbaV0udmFyVHlwZS5nZXRC
YXNpY1R5cGUoKSk7CisgICAgICAgICAgICAgICAgaW50QmFzaWNUeXBlID0gdmVjU2l6ZSA+IDEg
PyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlVmVjdG9yKGdsdVNoYWRlclV0aWwuRGF0YVR5cGUu
SU5ULCB2ZWNTaXplKSA6IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOworCisgICAgICAgICAg
ICAgICAgc3JjICs9ICgnXHRvXycgKyBzaGFkZXJTcGVjLm91dHB1dHNbaV0ubmFtZSArICcgPSAn
ICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUoaW50QmFzaWNUeXBlKSArICcoJyArIHNo
YWRlclNwZWMub3V0cHV0c1tpXS5uYW1lICsgJyk7XG4nKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHNyYyArPSAnfVxuJzsKKworICAgICAgICByZXR1cm4gc3JjOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc1NoYWRlckV4ZWNVdGlsLlN5
bWJvbD59IG91dHB1dHMKKyAgICAgKiBAcmV0dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3N9CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhlY1V0aWwuZ2V0VEZW
YXJ5aW5ncyA9IGZ1bmN0aW9uKG91dHB1dHMpIHsKKyAgICAgICAgdmFyIG5hbWVzID0gW107Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0cHV0cy5sZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgaWYgKGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZUJvb2xPckJWZWMob3V0cHV0c1tpXS52
YXJUeXBlLmdldEJhc2ljVHlwZSgpKSkgeworICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goJ29f
JyArIG91dHB1dHNbaV0ubmFtZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIG5hbWVzLnB1c2gob3V0cHV0c1tpXS5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbmV3IGdsdVNoYWRlclByb2dyYW0uVHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhuYW1lcyk7CisgICAgfTsKKworICAgIC8vIFZlcnRleFByb2Nlc3NvckV4ZWN1dG9y
IChiYXNlIGNsYXNzIGZvciB2ZXJ0ZXggYW5kIGdlb21ldHJ5IGV4ZWN1dG9ycykKKworICAgIC8q
KgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqIEBleHRlbmRzIHtnbHNTaGFkZXJFeGVjVXRp
bC5TaGFkZXJFeGVjdXRvcn0KKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRl
clNwZWN9IHNoYWRlclNwZWMKKyAgICAgKiBAcGFyYW0ge2dsdVNoYWRlclByb2dyYW0uUHJvZ3Jh
bVNvdXJjZXN9IHNvdXJjZXMKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5WZXJ0ZXhQ
cm9jZXNzb3JFeGVjdXRvciA9IGZ1bmN0aW9uKHNoYWRlclNwZWMsIHNvdXJjZXMpIHsKKyAgICAg
ICAgc291cmNlcy5hZGQoZ2xzU2hhZGVyRXhlY1V0aWwuZ2V0VEZWYXJ5aW5ncyhzaGFkZXJTcGVj
Lm91dHB1dHMpKTsKKyAgICAgICAgc291cmNlcy5hZGQobmV3IGdsdVNoYWRlclByb2dyYW0uVHJh
bnNmb3JtRmVlZGJhY2tNb2RlKGdsLklOVEVSTEVBVkVEX0FUVFJJQlMpKTsKKyAgICAgICAgZ2xz
U2hhZGVyRXhlY1V0aWwuU2hhZGVyRXhlY3V0b3IuY2FsbCh0aGlzLCBzaGFkZXJTcGVjKTsKKyAg
ICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFt
KGdsLCBzb3VyY2VzKTsKKyAgICB9OworCisgICAgc2V0UGFyZW50Q2xhc3MoZ2xzU2hhZGVyRXhl
Y1V0aWwuVmVydGV4UHJvY2Vzc29yRXhlY3V0b3IsIGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4
ZWN1dG9yKTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisg
ICAgZ2xzU2hhZGVyRXhlY1V0aWwuVmVydGV4UHJvY2Vzc29yRXhlY3V0b3IucHJvdG90eXBlLmlz
T2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9wcm9ncmFtLmlzT2soKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViR0xQcm9ncmFtfQorICAgICAq
LworICAgIGdsc1NoYWRlckV4ZWNVdGlsLlZlcnRleFByb2Nlc3NvckV4ZWN1dG9yLnByb3RvdHlw
ZS5nZXRQcm9ncmFtID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fcHJvZ3Jh
bS5nZXRQcm9ncmFtKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8
Kj59IGFycgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJF
eGVjVXRpbC5jb21wdXRlVG90YWxTY2FsYXJTaXplID0gZnVuY3Rpb24oYXJyKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2l6ZSA9IDA7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgc2l6ZSArPSBhcnJbaV0udmFy
VHlwZS5nZXRTY2FsYXJTaXplKCk7CisgICAgICAgIHJldHVybiBzaXplOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHB0cgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBjb2xOZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBDb2x1bW4gc2l6ZQor
ICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhl
Y1V0aWwuZ2V0Q29sdW1uID0gZnVuY3Rpb24ocHRyLCBjb2xOZHgsIHNpemUpIHsKKyAgICAgICAg
dmFyIGJlZ2luID0gY29sTmR4ICogc2l6ZTsKKyAgICAgICAgdmFyIGVuZCA9IChjb2xOZHggKyAx
KSAqIHNpemU7CisgICAgICAgIHJldHVybiBwdHIuc2xpY2UoYmVnaW4sIGVuZCk7CisgICAgfTsK
KworICAgIGdsc1NoYWRlckV4ZWNVdGlsLlZlcnRleFByb2Nlc3NvckV4ZWN1dG9yLnByb3RvdHlw
ZS5leGVjdXRlID0gZnVuY3Rpb24obnVtVmFsdWVzLCBpbnB1dHMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtnbHNTaGFkZXJFeGVjVXRpbC5TeW1ib2x9ICovIHZhciBzeW1ib2w7CisgICAgICAgIHZh
ciBvdXRwdXRzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHVzZVRG
T2JqZWN0ID0gdHJ1ZTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVEcmF3VXRpbC5WZXJ0
ZXhBcnJheUJpbmRpbmc+fSAqLyB2YXIgdmVydGV4QXJyYXlzID0gW107CisgICAgICAgIHZhciB0
cmFuc2Zvcm1GZWVkYmFjayA9IGdsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAg
IHZhciBvdXRwdXRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG91dHB1dEJ1ZmZlclN0cmlkZSA9IGdsc1NoYWRlckV4ZWNVdGls
LmNvbXB1dGVUb3RhbFNjYWxhclNpemUodGhpcy5tX291dHB1dHMpICogNDsKKworICAgICAgICAv
LyBTZXR1cCBpbnB1dHMuCisgICAgICAgIGZvciAodmFyIGlucHV0TmR4ID0gMDsgaW5wdXROZHgg
PCB0aGlzLm1faW5wdXRzLmxlbmd0aDsgaW5wdXROZHgrKykgeworICAgICAgICAgICAgc3ltYm9s
ID0gdGhpcy5tX2lucHV0c1tpbnB1dE5keF07CisgICAgICAgICAgICAvKmNvbnN0IHZvaWQqICov
dmFyIHB0ciA9IGlucHV0c1tpbnB1dE5keF07CisgICAgICAgICAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBiYXNpY1R5cGUgPSBzeW1ib2wudmFyVHlwZS5nZXRC
YXNpY1R5cGUoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVjU2l6
ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKGJhc2ljVHlwZSk7CisKKyAg
ICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVGbG9hdE9yVmVjKGJhc2ljVHlw
ZSkpCisgICAgICAgICAgICAgICAgdmVydGV4QXJyYXlzLnB1c2goZ2x1RHJhd1V0aWwubmV3Rmxv
YXRWZXJ0ZXhBcnJheUJpbmRpbmcoc3ltYm9sLm5hbWUsIHZlY1NpemUsIG51bVZhbHVlcywgMCwg
cHRyKSk7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVJbnRP
cklWZWMoYmFzaWNUeXBlKSkKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheXMucHVzaChnbHVE
cmF3VXRpbC5uZXdJbnQzMlZlcnRleEFycmF5QmluZGluZyhzeW1ib2wubmFtZSwgdmVjU2l6ZSwg
bnVtVmFsdWVzLCAwLCBwdHIpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdsdVNoYWRlclV0aWwu
aXNEYXRhVHlwZVVpbnRPclVWZWMoYmFzaWNUeXBlKSkKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhB
cnJheXMucHVzaChnbHVEcmF3VXRpbC5uZXdVaW50MzJWZXJ0ZXhBcnJheUJpbmRpbmcoc3ltYm9s
Lm5hbWUsIHZlY1NpemUsIG51bVZhbHVlcywgMCwgcHRyKSk7CisgICAgICAgICAgICBlbHNlIGlm
IChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoYmFzaWNUeXBlKSkgeworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtUm93cyA9IGdsdVNoYWRlclV0aWwu
Z2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKGJhc2ljVHlwZSk7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Db2xzID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU1hdHJpeE51bUNvbHVtbnMoYmFzaWNUeXBlKTsKKyAgICAgICAgICAgICAgICAvLyBBIG1hdHJp
eCBjb25zaXN0cyBvZiBzZXZlcmFsIChjb2x1bW4tbWFqb3IpIHZlY3RvcnMuIEEgYnVmZmVyIGlz
IGNyZWF0ZWQgZm9yCisgICAgICAgICAgICAgICAgLy8gZXZlcnkgdmVjdG9yIGluIGdsdURyYXdV
dGlsLmRyYXcoKSBiZWxvdy4gRGF0YSBpbiBldmVyeSBidWZmZXIgd2lsbCBiZSB0aWdodGx5Cisg
ICAgICAgICAgICAgICAgLy8gcGFja2VkLiBTbyB0aGUgc3RyaWRlIHNob3VsZCBiZSAwLiBUaGlz
IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb2RlIGluIG5hdGl2ZQorICAgICAgICAgICAgICAgIC8v
IGRlcXAsIHdoaWNoIHVzZSBvbmx5IG9uZSBidWZmZXIgZm9yIGEgbWF0cml4LCB0aGUgZGF0YSBp
cyBpbnRlcmxlYXZlZC4KKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHN0cmlkZSA9IDA7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjb2xOZHggPSAwOyBjb2xO
ZHggPCBudW1Db2xzOyArK2NvbE5keCkKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJyYXlz
LnB1c2goZ2x1RHJhd1V0aWwubmV3RmxvYXRDb2x1bW5WZXJ0ZXhBcnJheUJpbmRpbmcoc3ltYm9s
Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xOZHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICBudW1Sb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVtVmFsdWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xz
U2hhZGVyRXhlY1V0aWwuZ2V0Q29sdW1uKHB0ciwgY29sTmR4LCBudW1Sb3dzICogbnVtVmFsdWVz
KSkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNl
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldHVwIFRGIG91dHB1dHMuCisgICAgICAgIGlm
ICh1c2VURk9iamVjdCkKKyAgICAgICAgICAgIGdsLmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhnbC5U
UkFOU0ZPUk1fRkVFREJBQ0ssIHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAgICAgZ2wuYmluZEJ1
ZmZlcihnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBvdXRwdXRCdWZmZXIpOworICAgICAg
ICBnbC5idWZmZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG91dHB1dEJ1ZmZl
clN0cmlkZSAqIG51bVZhbHVlcywgZ2wuU1RSRUFNX1JFQUQpOworICAgICAgICBnbC5iaW5kQnVm
ZmVyQmFzZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBvdXRwdXRCdWZmZXIpOwor
CisgICAgICAgIC8vIERyYXcgd2l0aCByYXN0ZXJpemF0aW9uIGRpc2FibGVkLgorICAgICAgICBn
bC5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKGdsLlBPSU5UUyk7CisgICAgICAgIGdsLmVuYWJsZShn
bC5SQVNURVJJWkVSX0RJU0NBUkQpOworICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlz
Lm1fcHJvZ3JhbS5nZXRQcm9ncmFtKCksIHZlcnRleEFycmF5cywKKyAgICAgICAgICAgIG5ldyBn
bHVEcmF3VXRpbC5QcmltaXRpdmVMaXN0KGdsdURyYXdVdGlsLnByaW1pdGl2ZVR5cGUuUE9JTlRT
LCBudW1WYWx1ZXMpKTsKKyAgICAgICAgZ2wuZGlzYWJsZShnbC5SQVNURVJJWkVSX0RJU0NBUkQp
OworICAgICAgICBnbC5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgIC8vIFJlYWQg
YmFjayBkYXRhLgorICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5QnVmZmVyKG91dHB1dEJ1
ZmZlclN0cmlkZSAqIG51bVZhbHVlcyk7CisgICAgICAgIGdsLmdldEJ1ZmZlclN1YkRhdGEoZ2wu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KSk7Cisg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgY3VyT2Zmc2V0ID0gMDsgLy8gT2Zmc2V0
IGluIGJ1ZmZlciBpbiBieXRlcy4KKworICAgICAgICBmb3IgKHZhciBvdXRwdXROZHggPSAwOyBv
dXRwdXROZHggPCB0aGlzLm1fb3V0cHV0cy5sZW5ndGg7IG91dHB1dE5keCsrKSB7CisgICAgICAg
ICAgICBzeW1ib2wgPSB0aGlzLm1fb3V0cHV0c1tvdXRwdXROZHhdOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gc3ltYm9sLnZhclR5cGUuZ2V0U2Nh
bGFyU2l6ZSgpOworICAgICAgICAgICAgdmFyIHJlYWRQdHIgPSBuZXcgVWludDhBcnJheShyZXN1
bHQsIGN1ck9mZnNldCk7CisKKyAgICAgICAgICAgIGlmIChzY2FsYXJTaXplICogNCA9PT0gb3V0
cHV0QnVmZmVyU3RyaWRlKQorICAgICAgICAgICAgICAgIG91dHB1dHNbb3V0cHV0TmR4XSA9IHJl
YWRQdHI7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgZHN0UHRyID0g
bmV3IFVpbnQ4QXJyYXkoc2NhbGFyU2l6ZSAqIG51bVZhbHVlcyAqIDQpOworCisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbnVtVmFsdWVzOyBuZHgrKykKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzY2FsYXJTaXplICogNDsgaisrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkc3RQdHJbc2NhbGFyU2l6ZSAqIDQgKiBuZHggKyBqXSA9
IHJlYWRQdHJbbmR4ICogb3V0cHV0QnVmZmVyU3RyaWRlICsgal07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXRzW291dHB1dE5keF0gPSBkc3RQdHI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjdXJPZmZzZXQgKz0gc2NhbGFyU2l6ZSAqIDQ7CisgICAg
ICAgICAgfQorCisgICAgICAgIGlmICh1c2VURk9iamVjdCkKKyAgICAgICAgICAgIGdsLmJpbmRU
cmFuc2Zvcm1GZWVkYmFjayhnbC5UUkFOU0ZPUk1fRkVFREJBQ0ssIG51bGwpOworICAgICAgICBn
bC5iaW5kQnVmZmVyKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG51bGwpOworCisgICAg
ICAgIHJldHVybiBvdXRwdXRzOworICAgIH07CisKKyAgICAvLyBWZXJ0ZXhTaGFkZXJFeGVjdXRv
cgorCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1No
YWRlckV4ZWNVdGlsLlZlcnRleFByb2Nlc3NvckV4ZWN1dG9yfQorICAgICAqIEBwYXJhbSB7Z2xz
U2hhZGVyRXhlY1V0aWwuU2hhZGVyU3BlY30gc2hhZGVyU3BlYworICAgICAqLworICAgIGdsc1No
YWRlckV4ZWNVdGlsLlZlcnRleFNoYWRlckV4ZWN1dG9yID0gZnVuY3Rpb24oc2hhZGVyU3BlYykg
eworICAgICAgICB2YXIgc291cmNlcyA9IGdsdVNoYWRlclByb2dyYW0ubWFrZVZ0eEZyYWdTb3Vy
Y2VzKGdsc1NoYWRlckV4ZWNVdGlsLmdlbmVyYXRlVmVydGV4U2hhZGVyKHNoYWRlclNwZWMpLAor
ICAgICAgICAgICAgZ2xzU2hhZGVyRXhlY1V0aWwuZ2VuZXJhdGVFbXB0eUZyYWdtZW50U291cmNl
KCkpOworICAgICAgICBnbHNTaGFkZXJFeGVjVXRpbC5WZXJ0ZXhQcm9jZXNzb3JFeGVjdXRvci5j
YWxsKHRoaXMsIHNoYWRlclNwZWMsIHNvdXJjZXMpOworICAgIH07CisKKyAgICBzZXRQYXJlbnRD
bGFzcyhnbHNTaGFkZXJFeGVjVXRpbC5WZXJ0ZXhTaGFkZXJFeGVjdXRvciwgZ2xzU2hhZGVyRXhl
Y1V0aWwuVmVydGV4UHJvY2Vzc29yRXhlY3V0b3IpOworCisgICAgLyoqCisgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICogQGV4dGVuZHMge2dsc1NoYWRlckV4ZWNVdGlsLlNoYWRlckV4ZWN1dG9y
fQorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyRXhlY1V0aWwuU2hhZGVyU3BlY30gc2hhZGVyU3Bl
YworICAgICAqLworICAgIGdsc1NoYWRlckV4ZWNVdGlsLkZyYWdtZW50U2hhZGVyRXhlY3V0b3Ig
PSBmdW5jdGlvbihzaGFkZXJTcGVjKSB7CisgICAgICAgIGdsc1NoYWRlckV4ZWNVdGlsLlNoYWRl
ckV4ZWN1dG9yLmNhbGwodGhpcywgc2hhZGVyU3BlYyk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8Z2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sPn0gKi8gdGhpcy5tX291dExvY2F0aW9uU3ltYm9s
cyA9IFtdOworICAgICAgICB0aGlzLm1fb3V0TG9jYXRpb25NYXAgPSBnbHNTaGFkZXJFeGVjVXRp
bC5nZW5lcmF0ZUxvY2F0aW9uTWFwKHRoaXMubV9vdXRwdXRzLCB0aGlzLm1fb3V0TG9jYXRpb25T
eW1ib2xzKTsKKyAgICAgICAgdmFyIHNvdXJjZXMgPSBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhG
cmFnU291cmNlcyhnbHNTaGFkZXJFeGVjVXRpbC5nZW5lcmF0ZVBhc3N0aHJvdWdoVmVydGV4U2hh
ZGVyKHNoYWRlclNwZWMsICdhXycsICcnKSwKKyAgICAgICAgICAgIGdsc1NoYWRlckV4ZWNVdGls
LmdlbmVyYXRlRnJhZ21lbnRTaGFkZXIoc2hhZGVyU3BlYywgdHJ1ZSwgdGhpcy5tX291dExvY2F0
aW9uTWFwKSk7CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0u
U2hhZGVyUHJvZ3JhbShnbCwgc291cmNlcyk7CisgICAgfTsKKworICAgIHNldFBhcmVudENsYXNz
KGdsc1NoYWRlckV4ZWNVdGlsLkZyYWdtZW50U2hhZGVyRXhlY3V0b3IsIGdsc1NoYWRlckV4ZWNV
dGlsLlNoYWRlckV4ZWN1dG9yKTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhlY1V0aWwuRnJhZ21lbnRTaGFkZXJFeGVjdXRvci5w
cm90b3R5cGUuaXNPayA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX3Byb2dy
YW0uaXNPaygpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJHTFByb2dy
YW19CisgICAgICovCisgICAgZ2xzU2hhZGVyRXhlY1V0aWwuRnJhZ21lbnRTaGFkZXJFeGVjdXRv
ci5wcm90b3R5cGUuZ2V0UHJvZ3JhbSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5tX3Byb2dyYW0uZ2V0UHJvZ3JhbSgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2dsdVZhclR5cGUuVmFyVHlwZX0gb3V0cHV0VHlwZQorICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gdXNlSW50T3V0cHV0cworICAgICAqIEByZXR1cm4ge3RjdVRleHR1cmUuVGV4dHVyZUZvcm1h
dH0KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5nZXRSZW5kZXJidWZmZXJGb3JtYXRG
b3JPdXRwdXQgPSBmdW5jdGlvbihvdXRwdXRUeXBlLCB1c2VJbnRPdXRwdXRzKSB7CisgICAgICAg
IHZhciBjaGFubmVsT3JkZXJNYXAgPSBbCisgICAgICAgICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxP
cmRlci5SLAorICAgICAgICAgICAgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkcsCisgICAgICAg
ICAgICB0Y3VUZXh0dXJlLkNoYW5uZWxPcmRlci5SR0JBLCAvLyBObyBSR0IgdmFyaWFudHMgYXZh
aWxhYmxlLgorICAgICAgICAgICAgdGN1VGV4dHVyZS5DaGFubmVsT3JkZXIuUkdCQQorICAgICAg
ICBdOworCisgICAgICAgIHZhciBiYXNpY1R5cGUgPSBvdXRwdXRUeXBlLmdldEJhc2ljVHlwZSgp
OworICAgICAgICB2YXIgbnVtQ29tcHMgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTnVtQ29t
cG9uZW50cyhiYXNpY1R5cGUpOworICAgICAgICB2YXIgY2hhbm5lbFR5cGU7CisKKyAgICAgICAg
c3dpdGNoIChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZShiYXNpY1R5cGUpKSB7
CisgICAgICAgICAgICBjYXNlICd1aW50JzogY2hhbm5lbFR5cGUgPSB0Y3VUZXh0dXJlLkNoYW5u
ZWxUeXBlLlVOU0lHTkVEX0lOVDMyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2ludCc6IGNo
YW5uZWxUeXBlID0gdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURfSU5UMzI7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAnYm9vbCc6IGNoYW5uZWxUeXBlID0gdGN1VGV4dHVyZS5DaGFubmVs
VHlwZS5TSUdORURfSU5UMzI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZmxvYXQnOiBjaGFu
bmVsVHlwZSA9IHVzZUludE91dHB1dHMgPyB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlVOU0lHTkVE
X0lOVDMyIDogdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5GTE9BVDsgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvdXRw
dXQgdHlwZSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclR5cGUoYmFzaWNUeXBl
KSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IHRjdVRleHR1cmUuVGV4dHVyZUZv
cm1hdChjaGFubmVsT3JkZXJNYXBbbnVtQ29tcHMgLSAxXSwgY2hhbm5lbFR5cGUpOworICAgIH07
CisKKyAgICBnbHNTaGFkZXJFeGVjVXRpbC5GcmFnbWVudFNoYWRlckV4ZWN1dG9yLnByb3RvdHlw
ZS5leGVjdXRlID0gZnVuY3Rpb24obnVtVmFsdWVzLCBpbnB1dHMpIHsKKyAgICAgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgdXNlSW50T3V0cHV0cyA9IHRydWU7CisgICAgICAgIC8qKiBA
dHlwZSB7Z2xzU2hhZGVyRXhlY1V0aWwuU3ltYm9sfSAqLyB2YXIgc3ltYm9sOworICAgICAgICB2
YXIgb3V0cHV0cyA9IFtdOworICAgICAgICB2YXIgbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9SRU5ERVJCVUZGRVJfU0la
RSkpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZyYW1lYnVmZmVyVyA9IE1h
dGgubWluKG1heFJlbmRlcmJ1ZmZlclNpemUsIG51bVZhbHVlcyk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgZnJhbWVidWZmZXJIID0gTWF0aC5jZWlsKG51bVZhbHVlcyAvIGZy
YW1lYnVmZmVyVyk7CisKKyAgICAgICAgdmFyIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgdmFyIHJlbmRlcmJ1ZmZlcnMgPSBbXTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLm1fb3V0TG9jYXRpb25TeW1ib2xzLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgcmVuZGVyYnVmZmVycy5wdXNoKGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKKworICAg
ICAgICB2YXIgdmVydGV4QXJyYXlzID0gW107CisgICAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTsK
KworICAgICAgICBpZiAoZnJhbWVidWZmZXJIID4gbWF4UmVuZGVyYnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgY291bnQgaXMgdG9vIGhpZ2ggZm9yIG1heGlt
dW0gc3VwcG9ydGVkIHJlbmRlcmJ1ZmZlciBzaXplJyk7CisKKyAgICAgICAgLy8gQ29tcHV0ZSBw
b3NpdGlvbnMgLSAxcHggcG9pbnRzIGFyZSB1c2VkIHRvIGRyaXZlIGZyYWdtZW50IHNoYWRpbmcu
CisgICAgICAgIGZvciAodmFyIHZhbE5keCA9IDA7IHZhbE5keCA8IG51bVZhbHVlczsgdmFsTmR4
KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaXggPSB2YWxOZHgg
JSBmcmFtZWJ1ZmZlclc7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGl5
ID0gTWF0aC5mbG9vcih2YWxOZHggLyBmcmFtZWJ1ZmZlclcpOworICAgICAgICAgICAgdmFyIGZ4
ID0gLTEgKyAyICogKGl4ICsgMC41KSAvIGZyYW1lYnVmZmVyVzsKKyAgICAgICAgICAgIHZhciBm
eSA9IC0xICsgMiAqIChpeSArIDAuNSkgLyBmcmFtZWJ1ZmZlckg7CisKKyAgICAgICAgICAgIHBv
c2l0aW9uc1syICogdmFsTmR4XSA9IGZ4OworICAgICAgICAgICAgcG9zaXRpb25zWzIgKiB2YWxO
ZHggKyAxXSA9IGZ5OworICAgICAgICB9CisKKyAgICAgICAgLy8gVmVydGV4IGlucHV0cy4KKyAg
ICAgICAgdmVydGV4QXJyYXlzLnB1c2goZ2x1RHJhd1V0aWwubmV3RmxvYXRWZXJ0ZXhBcnJheUJp
bmRpbmcoJ2FfcG9zaXRpb24nLCAyLCBudW1WYWx1ZXMsIDAsIHBvc2l0aW9ucykpOworCisgICAg
ICAgIGZvciAodmFyIGlucHV0TmR4ID0gMDsgaW5wdXROZHggPCB0aGlzLm1faW5wdXRzLmxlbmd0
aDsgaW5wdXROZHgrKykgeworICAgICAgICAgICAgc3ltYm9sID0gdGhpcy5tX2lucHV0c1tpbnB1
dE5keF07CisgICAgICAgICAgICB2YXIgYXR0cmliTmFtZSA9ICdhXycgKyBzeW1ib2wubmFtZTsK
KyAgICAgICAgICAgIHZhciBwdHIgPSBpbnB1dHNbaW5wdXROZHhdOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgYmFzaWNUeXBlID0gc3ltYm9s
LnZhclR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHZlY1NpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZShiYXNp
Y1R5cGUpOworCisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlRmxvYXRP
clZlYyhiYXNpY1R5cGUpKQorICAgICAgICAgICAgICAgIHZlcnRleEFycmF5cy5wdXNoKGdsdURy
YXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5kaW5nKGF0dHJpYk5hbWUsIHZlY1NpemUsIG51
bVZhbHVlcywgMCwgcHRyKSk7CisgICAgICAgICAgICBlbHNlIGlmIChnbHVTaGFkZXJVdGlsLmlz
RGF0YVR5cGVJbnRPcklWZWMoYmFzaWNUeXBlKSkKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJh
eXMucHVzaChnbHVEcmF3VXRpbC5uZXdJbnQzMlZlcnRleEFycmF5QmluZGluZyhhdHRyaWJOYW1l
LCB2ZWNTaXplLCBudW1WYWx1ZXMsIDAsIHB0cikpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2x1
U2hhZGVyVXRpbC5pc0RhdGFUeXBlVWludE9yVVZlYyhiYXNpY1R5cGUpKQorICAgICAgICAgICAg
ICAgIHZlcnRleEFycmF5cy5wdXNoKGdsdURyYXdVdGlsLm5ld1VpbnQzMlZlcnRleEFycmF5Qmlu
ZGluZyhhdHRyaWJOYW1lLCB2ZWNTaXplLCBudW1WYWx1ZXMsIDAsIHB0cikpOworICAgICAgICAg
ICAgZWxzZSBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KGJhc2ljVHlwZSkpIHsK
KyAgICAgICAgICAgICAgICB2YXIgbnVtUm93cyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVN
YXRyaXhOdW1Sb3dzKGJhc2ljVHlwZSk7CisgICAgICAgICAgICAgICAgdmFyIG51bUNvbHMgPSBn
bHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyhiYXNpY1R5cGUpOworICAg
ICAgICAgICAgICAgIC8vIEEgbWF0cml4IGNvbnNpc3RzIG9mIHNldmVyYWwgKGNvbHVtbi1tYWpv
cikgdmVjdG9ycy4gQSBidWZmZXIgaXMgY3JlYXRlZCBmb3IKKyAgICAgICAgICAgICAgICAvLyBl
dmVyeSB2ZWN0b3IgaW4gZ2x1RHJhd1V0aWwuZHJhdygpIGJlbG93LiBEYXRhIGluIGV2ZXJ5IGJ1
ZmZlciB3aWxsIGJlIHRpZ2h0bHkKKyAgICAgICAgICAgICAgICAvLyBwYWNrZWQuIFNvIHRoZSBz
dHJpZGUgc2hvdWxkIGJlIDAuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvZGUgaW4gbmF0
aXZlCisgICAgICAgICAgICAgICAgLy8gZGVxcCwgd2hpY2ggdXNlIG9ubHkgb25lIGJ1ZmZlciBm
b3IgYSBtYXRyaXgsIHRoZSBkYXRhIGlzIGludGVybGVhdmVkLgorICAgICAgICAgICAgICAgIHZh
ciBzdHJpZGUgPSAwOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgY29sTmR4ID0gMDsgY29s
TmR4IDwgbnVtQ29sczsgKytjb2xOZHgpCisgICAgICAgICAgICAgICAgICAgIHZlcnRleEFycmF5
cy5wdXNoKGdsdURyYXdVdGlsLm5ld0Zsb2F0Q29sdW1uVmVydGV4QXJyYXlCaW5kaW5nKGF0dHJp
Yk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbE5keCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgbnVtUm93cywKKyAgICAgICAgICAgICAgICAgICAgICAgbnVtVmFsdWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgIGdsc1NoYWRl
ckV4ZWNVdGlsLmdldENvbHVtbihwdHIsIGNvbE5keCwgbnVtUm93cyAqIG51bVZhbHVlcykpKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBDb25zdHJ1Y3QgZnJhbWVidWZmZXIuCisgICAgICAgIGds
LmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworCisgICAgICAg
IGZvciAodmFyIG91dE5keCA9IDA7IG91dE5keCA8IHRoaXMubV9vdXRMb2NhdGlvblN5bWJvbHMu
bGVuZ3RoOyArK291dE5keCkgeworICAgICAgICAgICAgc3ltYm9sID0gdGhpcy5tX291dExvY2F0
aW9uU3ltYm9sc1tvdXROZHhdOworICAgICAgICAgICAgdmFyIHJlbmRlcmJ1ZmZlciA9IHJlbmRl
cmJ1ZmZlcnNbb3V0TmR4XTsKKyAgICAgICAgICAgIHZhciBmb3JtYXQgPSBnbHVUZXh0dXJlVXRp
bC5nZXRJbnRlcm5hbEZvcm1hdChnbHNTaGFkZXJFeGVjVXRpbC5nZXRSZW5kZXJidWZmZXJGb3Jt
YXRGb3JPdXRwdXQoc3ltYm9sLnZhclR5cGUsIHVzZUludE91dHB1dHMpKTsKKworICAgICAgICAg
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7Cisg
ICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZm9ybWF0
LCBmcmFtZWJ1ZmZlclcsIGZyYW1lYnVmZmVySCk7CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyBvdXRO
ZHgsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgICAgIGFzc2Vy
dE1zZ09wdGlvbnMoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0g
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUsICdGcmFtZWJ1ZmZlciBpcyBpbmNvbXBsZXRlJywgZmFs
c2UsIHRydWUpOworCisgICAgICAgIHZhciBkcmF3QnVmZmVycyA9IFtdOworICAgICAgICBmb3Ig
KHZhciBuZHggPSAwOyBuZHggPCB0aGlzLm1fb3V0TG9jYXRpb25TeW1ib2xzLmxlbmd0aDsgbmR4
KyspCisgICAgICAgICAgICBkcmF3QnVmZmVyc1tuZHhdID0gZ2wuQ09MT1JfQVRUQUNITUVOVDAg
KyBuZHg7CisgICAgICAgIGdsLmRyYXdCdWZmZXJzKGRyYXdCdWZmZXJzKTsKKworICAgICAgICAv
LyBSZW5kZXIKKyAgICAgICAgZ2wudmlld3BvcnQoMCwgMCwgZnJhbWVidWZmZXJXLCBmcmFtZWJ1
ZmZlckgpOworICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCB0aGlzLm1fcHJvZ3JhbS5nZXRQ
cm9ncmFtKCksIHZlcnRleEFycmF5cywKKyAgICAgICAgbmV3IGdsdURyYXdVdGlsLlByaW1pdGl2
ZUxpc3QoZ2x1RHJhd1V0aWwucHJpbWl0aXZlVHlwZS5QT0lOVFMsIG51bVZhbHVlcykpOworCisg
ICAgICAgIC8vIFJlYWQgYmFjayBwaXhlbHMuCisKKyAgICAgICAgLy8gXHRvZG8gWzIwMTMtMDgt
MDcgcHlyeV0gU29tZSBmYXN0LXBhdGhzIGNvdWxkIGJlIGFkZGVkIGhlcmUuCisKKyAgICAgICAg
Zm9yICh2YXIgb3V0TmR4ID0gMDsgb3V0TmR4IDwgdGhpcy5tX291dHB1dHMubGVuZ3RoOyArK291
dE5keCkgeworICAgICAgICAgICAgc3ltYm9sID0gdGhpcy5tX291dHB1dHNbb3V0TmR4XTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb3V0U2l6ZSA9IHN5bWJvbC52YXJU
eXBlLmdldFNjYWxhclNpemUoKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgb3V0VmVjU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOdW1Db21wb25lbnRzKHN5
bWJvbC52YXJUeXBlLmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgb3V0TnVtTG9jcyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOdW1Mb2Nh
dGlvbnMoc3ltYm9sLnZhclR5cGUuZ2V0QmFzaWNUeXBlKCkpOworICAgICAgICAgICAgdmFyIGZv
cm1hdCA9IGdsc1NoYWRlckV4ZWNVdGlsLmdldFJlbmRlcmJ1ZmZlckZvcm1hdEZvck91dHB1dChz
eW1ib2wudmFyVHlwZSwgdXNlSW50T3V0cHV0cyk7CisgICAgICAgICAgICB2YXIgcmVhZEZvcm1h
dCA9IG5ldyB0Y3VUZXh0dXJlLlRleHR1cmVGb3JtYXQodGN1VGV4dHVyZS5DaGFubmVsT3JkZXIu
UkdCQSwgZm9ybWF0LnR5cGUpOworICAgICAgICAgICAgdmFyIHRyYW5zZmVyRm9ybWF0ID0gZ2x1
VGV4dHVyZVV0aWwuZ2V0VHJhbnNmZXJGb3JtYXQocmVhZEZvcm1hdCk7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIG91dExvY2F0aW9uID0gdGhpcy5tX291dExvY2F0aW9u
TWFwW3N5bWJvbC5uYW1lXTsKKyAgICAgICAgICAgIHZhciB0bXBCdWYgPSBuZXcgdGN1VGV4dHVy
ZS5UZXh0dXJlTGV2ZWwocmVhZEZvcm1hdCwgZnJhbWVidWZmZXJXLCBmcmFtZWJ1ZmZlckgpOwor
CisgICAgICAgICAgICBmb3IgKHZhciBsb2NOZHggPSAwOyBsb2NOZHggPCBvdXROdW1Mb2NzOyAr
K2xvY05keCkgeworICAgICAgICAgICAgICAgIGdsLnJlYWRCdWZmZXIoZ2wuQ09MT1JfQVRUQUNI
TUVOVDAgKyBvdXRMb2NhdGlvbiArIGxvY05keCk7CisgICAgICAgICAgICAgICAgZ2wucmVhZFBp
eGVscygwLCAwLCBmcmFtZWJ1ZmZlclcsIGZyYW1lYnVmZmVySCwgdHJhbnNmZXJGb3JtYXQuZm9y
bWF0LCB0cmFuc2ZlckZvcm1hdC5kYXRhVHlwZSwgdG1wQnVmLmdldEFjY2VzcygpLmdldERhdGFQ
dHIoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAob3V0U2l6ZSA9PSA0ICYmIG91dE51bUxvY3Mg
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXRzW291dE5keF0gPSBuZXcgVWludDhB
cnJheSh0bXBCdWYuZ2V0QWNjZXNzKCkuZ2V0QnVmZmVyKCkpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NOZHggPT0gMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dHNbb3V0TmR4XSA9IG5ldyBVaW50MzJBcnJheShudW1WYWx1ZXMg
KiBvdXRWZWNTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNyY1B0ciA9IG5ldyBVaW50
MzJBcnJheSh0bXBCdWYuZ2V0QWNjZXNzKCkuZ2V0QnVmZmVyKCkpOworICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciB2YWxOZHggPSAwOyB2YWxOZHggPCBudW1WYWx1ZXM7IHZhbE5keCsrKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjT2Zmc2V0ID0gdmFsTmR4ICogNDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBkc3RPZmZzZXQgPSBvdXRTaXplICogdmFsTmR4ICsg
b3V0VmVjU2l6ZSAqIGxvY05keDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgb3V0VmVjU2l6ZTsgaisrKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
c1tvdXROZHhdW2RzdE9mZnNldCArIGpdID0gc3JjUHRyW3NyY09mZnNldCArIGpdOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gXHRvZG8gWzIwMTMtMDgtMDcgcHlyeV0gQ2xlYXIgZHJhdyBidWZm
ZXJzICYgdmlld3BvcnQ/CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgbnVsbCk7CisgICAgICAgIHJldHVybiBvdXRwdXRzOworICAgIH07CisKKyAgICBnbHNTaGFk
ZXJFeGVjVXRpbC5nZW5lcmF0ZUxvY2F0aW9uTWFwID0gZnVuY3Rpb24oc3ltYm9scywgbG9jYXRp
b25TeW1ib2xzKSB7CisgICAgICAgIHZhciByZXQgPSBbXTsKKyAgICAgICAgbG9jYXRpb25TeW1i
b2xzLmxlbmd0aCA9IDA7CisgICAgICAgIHZhciBsb2NhdGlvbiA9IDA7CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIg
c3ltYm9sID0gc3ltYm9sc1tpXTsKKyAgICAgICAgICAgIHZhciBudW1Mb2NhdGlvbnMgPSBnbHVT
aGFkZXJVdGlsLmdldERhdGFUeXBlTnVtTG9jYXRpb25zKHN5bWJvbC52YXJUeXBlLmdldEJhc2lj
VHlwZSgpKTsKKyAgICAgICAgICAgIHJldFtzeW1ib2wubmFtZV0gPSBsb2NhdGlvbjsKKyAgICAg
ICAgICAgIGxvY2F0aW9uICs9IG51bUxvY2F0aW9uczsKKworICAgICAgICAgICAgZm9yICh2YXIg
bmR4ID0gMDsgbmR4IDwgbnVtTG9jYXRpb25zOyArK25keCkKKyAgICAgICAgICAgICAgICBsb2Nh
dGlvblN5bWJvbHMucHVzaChzeW1ib2wpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJl
dDsKKyAgICB9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzU2hhZGVyTGlicmFyeS5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9k
dWxlcy9zaGFyZWQvZ2xzU2hhZGVyTGlicmFyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Y4NmUwNTVjOTM0
MDIyMjAwYTRmNGQ3YWY5N2FhOTI2ZTlmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9n
bHNTaGFkZXJMaWJyYXJ5LmpzCkBAIC0wLDAgKzEsMTExNCBAQAorLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGlsaXRpZXMKKyAq
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq
IENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnbW9kdWxlcy5zaGFyZWQuZ2xzU2hhZGVy
TGlicmFyeScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyVXRpbCcpOworZ29vZy5y
ZXF1aXJlKCdtb2R1bGVzLnNoYXJlZC5nbHNTaGFkZXJMaWJyYXJ5Q2FzZScpOworCitnb29nLnNj
b3BlKGZ1bmN0aW9uKCkgeworCit2YXIgZ2xzU2hhZGVyTGlicmFyeSA9IG1vZHVsZXMuc2hhcmVk
Lmdsc1NoYWRlckxpYnJhcnk7Cit2YXIgdGN1VGVzdENhc2UgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlOwordmFyIGdsc1NoYWRlckxpYnJhcnlDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xz
U2hhZGVyTGlicmFyeUNhc2U7Cit2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wu
Z2x1U2hhZGVyVXRpbDsKKworICAgIGdsc1NoYWRlckxpYnJhcnkuZ2VuZXJhdGVUZXN0Q2FzZXMg
PSBmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5cGUge2dsc1NoYWRlckxpYnJhcnkuUGFyc2VyfSAq
LyB2YXIgcGFyc2VyID0gbmV3IGdsc1NoYWRlckxpYnJhcnkuUGFyc2VyKCk7CisgICAgICAgIHRy
eSB7CisgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLyB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2Fz
ZS5ydW5uZXI7CisgICAgICAgICAgICB2YXIgdHJlZSA9IHBhcnNlci5wYXJzZShzdGF0ZS50ZXN0
RmlsZSk7CisgICAgICAgICAgICB2YXIgcm9vdFRlc3QgPSB0Y3VUZXN0Q2FzZS5uZXdUZXN0KHN0
YXRlLnRlc3ROYW1lLCAnVG9wIGxldmVsJyk7CisgICAgICAgICAgICByb290VGVzdC5zZXRDaGls
ZHJlbih0cmVlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFJvb3Qocm9vdFRlc3QpOworICAgICAg
ICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25z
b2xlKGVycik7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdGYWlsZWQgdG8gcGFyc2Ugc2hhZGVy
IHRlc3QgY2FzZSBmaWxlJyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGdsc1NoYWRlckxpYnJhcnkucHJv
Y2Vzc1Rlc3RGaWxlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChnbHNTaGFkZXJMaWJyYXJ5
LmdlbmVyYXRlVGVzdENhc2VzKCkpIHsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci5y
dW5DYWxsYmFjayhnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5ydW5UZXN0Q2FzZXMpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVyLnRlcm1pbmF0ZSgpOworICAg
ICAgICB9CisgICAgfTsKKworICAgIGdsc1NoYWRlckxpYnJhcnkuaXNXaGl0ZXNwYWNlID0gZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIC9eWyBcdFxyXG5dKyQvLnRlc3QodmFsdWUp
OworICAgIH07CisgICAgZ2xzU2hhZGVyTGlicmFyeS5pc0VPTCA9IGZ1bmN0aW9uKHZhbHVlKSB7
CisgICAgICAgIHJldHVybiAvXltcclxuXSskLy50ZXN0KHZhbHVlKTsKKyAgICB9OworICAgIGds
c1NoYWRlckxpYnJhcnkuaXNBbHBoYSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVy
biAvXlthLXpBLVpdJC8udGVzdCh2YWx1ZSk7CisgICAgfTsKKyAgICBnbHNTaGFkZXJMaWJyYXJ5
LmlzTnVtZXJpYyA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiAvXlswLTldJC8u
dGVzdCh2YWx1ZSk7CisgICAgfTsKKyAgICBnbHNTaGFkZXJMaWJyYXJ5LmlzQ2FzZU5hbWVDaGFy
ID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIC9eW2EtekEtWjAtOV9cLVwuXSQv
LnRlc3QodmFsdWUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGhvd2V2ZXIg
bWFueSBpbmRlbnRzIHRoZXJlIGFyZSBvbiB0aGUgZmlyc3QgbGluZSBmcm9tIGFsbCBsaW5lcy4K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyCisgICAgICogQHJldHVybiB7c3RyaW5nfSBvdXRw
dXQKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJMaWJyYXJ5LnJlbW92ZUV4dHJhSW5kZW50YXRpb24g
PSBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgcmV0dXJuIGdsc1NoYWRlckxpYnJhcnkucmVtb3Zl
RXh0cmFJbmRlbnRhdGlvbkFycmF5KAorICAgICAgICAgICAgc3RyLnNwbGl0KC9cclxufFxyfFxu
LykKKyAgICAgICAgKS5qb2luKCdcbicpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1
cm5zIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aG91dCBpbmRlbnRhdGlvbi4KKyAgICAgKiBAcGFy
YW0ge0FycmF5PHN0cmluZz59IGFycgorICAgICAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IG91
dHB1dAorICAgICAqLworICAgIGdsc1NoYWRlckxpYnJhcnkucmVtb3ZlRXh0cmFJbmRlbnRhdGlv
bkFycmF5ID0gZnVuY3Rpb24oYXJyKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAq
LyB2YXIgb3V0cHV0ID0gW107CisKKyAgICAgICAgaWYgKGFyci5sZW5ndGgpIHsKKworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUluZGVudENoYXJzID0gMDsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyWzBdLmxlbmd0aCAmJiBnbHNTaGFkZXJMaWJyYXJ5
LmlzV2hpdGVzcGFjZShhcnJbMF0uY2hhckF0KGkpKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
bnVtSW5kZW50Q2hhcnMgKz0gYXJyWzBdLmNoYXJBdChpKSA9PT0gJ1x0JyA/IDQgOiAxOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZW1vdmVkID0g
MDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgajsKKyAgICAgICAgICAg
ICAgICAvLyBTb21lIHRlc3RzIGFyZSBpbmRlbnRlZCBpbmNvbnNpc3RlbnRseSwgc28gd2UgaGF2
ZSB0byBjaGVjayBmb3Igbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBoZXJlLgorICAgICAgICAg
ICAgICAgIGZvciAoaiA9IDA7IHJlbW92ZWQgPCBudW1JbmRlbnRDaGFycyAmJiBqIDwgYXJyW2ld
Lmxlbmd0aCAmJiBnbHNTaGFkZXJMaWJyYXJ5LmlzV2hpdGVzcGFjZShhcnJbaV0uY2hhckF0KGop
KTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgKz0gKGFycltpXS5jaGFyQXQo
aikgPT09ICdcdCcgPyA0IDogMSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgb3V0cHV0LnB1c2goYXJyW2ldLnN1YnN0cihqLCBhcnJbaV0ubGVuZ3RoIC0gaikpOworICAg
ICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH07
CisKKyAgICBnbHNTaGFkZXJMaWJyYXJ5LmRlX2Fzc2VydCA9IGZ1bmN0aW9uKGNvbmRpdGlvbikg
eworICAgICAgICBpZiAoIWNvbmRpdGlvbikgeworICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3Ry
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGVuZHN0ciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlcgor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHRyaW1Gcm9udCB0cmltIGxlYWRpbmcgd2hpdGVzcGFj
ZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30gc3RyCisgICAgICogQHByaXZhdGUKKyAgICAgKi8K
KyAgICBnbHNTaGFkZXJMaWJyYXJ5LnBhcnNlU3RyaW5nTGl0ZXJhbEhlbHBlciA9IGZ1bmN0aW9u
KHN0ciwgZW5kc3RyLCB0cmltRnJvbnQpIHsKKyAgICAgICAgdHJpbUZyb250ID0gdHJpbUZyb250
IHx8IGZhbHNlOworCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpbmRleF9lbmQgPSAw
OworICAgICAgICAvLyBpc29sYXRlIHRoZSBzdHJpbmcKKyAgICAgICAgZG8geworICAgICAgICAg
ICAgaW5kZXhfZW5kID0gc3RyLmluZGV4T2YoZW5kc3RyLCBpbmRleF9lbmQgKyAxKTsKKyAgICAg
ICAgfSB3aGlsZSAoaW5kZXhfZW5kID49IDAgJiYgc3RyLmNoYXJBdChpbmRleF9lbmQgLSAxKSA9
PT0gJ1xcJyk7CisKKyAgICAgICAgaWYgKGluZGV4X2VuZCA8PSAwKSB7CisgICAgICAgICAgICBp
bmRleF9lbmQgPSBzdHIubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgLy8gc3RyaXAgcXVv
dGVzLCByZXBsYWNlIFxuIGFuZCBcdCB3aXRoIG5sIGFuZCB0YWJzIHJlc3BlY3RpdmVseQorICAg
ICAgICBzdHIgPSBzdHIuc3Vic3RyKGVuZHN0ci5sZW5ndGgsIGluZGV4X2VuZCAtIGVuZHN0ci5s
ZW5ndGgpOworICAgICAgICBpZiAodHJpbUZyb250KQorICAgICAgICAgICAgc3RyID0gc3RyLnJl
cGxhY2UoL15ccypcbi8sICcnKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICcnOworICAgICAgICB2
YXIgaSA9IDA7CisgICAgICAgIHdoaWxlIChzdHJbaV0gIT0gdW5kZWZpbmVkKSB7CisgICAgICAg
ICAgICBpZiAoc3RyW2ldICA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJb
aSArIDFdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOgorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ24nOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcbic7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gJ1x0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ICs9IHN0cltpICsgMV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gc3RyW2ldOworICAgICAgICAgICAgICAg
IGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc1NoYWRlckxpYnJhcnkuUGFyc2VyIGNsYXNz
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzU2hhZGVyTGlicmFyeS5QYXJz
ZXIgPSBmdW5jdGlvbigpIHsKKworICAgIC8qIGRhdGEgbWVtYmVycyAqLworCisgICAgICAgIC8q
KgorICAgICAgICAgKiBUaGUgVG9rZW4gY29uc3RhbnRzCisgICAgICAgICAqIEBlbnVtIHtudW1i
ZXJ9CisgICAgICAgICAqLworICAgICAgICB2YXIgVG9rZW4gPSB7CisgICAgICAgICAgICBUT0tF
Tl9JTlZBTElEOiAwLAorICAgICAgICAgICAgVE9LRU5fRU9GOiAxLAorICAgICAgICAgICAgVE9L
RU5fU1RSSU5HOiAyLAorICAgICAgICAgICAgVE9LRU5fU0hBREVSX1NPVVJDRTogMywKKworICAg
ICAgICAgICAgVE9LRU5fSU5UX0xJVEVSQUw6IDQsCisgICAgICAgICAgICBUT0tFTl9GTE9BVF9M
SVRFUkFMOiA1LAorCisgICAgICAgICAgICAvLyBpZGVudGlmaWVycworICAgICAgICAgICAgVE9L
RU5fSURFTlRJRklFUjogNiwKKyAgICAgICAgICAgIFRPS0VOX1RSVUU6IDcsCisgICAgICAgICAg
ICBUT0tFTl9GQUxTRTogOCwKKyAgICAgICAgICAgIFRPS0VOX0RFU0M6IDksCisgICAgICAgICAg
ICBUT0tFTl9FWFBFQ1Q6IDEwLAorICAgICAgICAgICAgVE9LRU5fR1JPVVA6IDExLAorICAgICAg
ICAgICAgVE9LRU5fQ0FTRTogMTIsCisgICAgICAgICAgICBUT0tFTl9FTkQ6IDEzLAorICAgICAg
ICAgICAgVE9LRU5fVkFMVUVTOiAxNCwKKyAgICAgICAgICAgIFRPS0VOX0JPVEg6IDE1LAorICAg
ICAgICAgICAgVE9LRU5fVkVSVEVYOiAyNiwKKyAgICAgICAgICAgIFRPS0VOX0ZSQUdNRU5UOiAx
NywKKyAgICAgICAgICAgIFRPS0VOX1VOSUZPUk06IDE4LAorICAgICAgICAgICAgVE9LRU5fSU5Q
VVQ6IDE5LAorICAgICAgICAgICAgVE9LRU5fT1VUUFVUOiAyMCwKKyAgICAgICAgICAgIFRPS0VO
X0ZMT0FUOiAyMSwKKyAgICAgICAgICAgIFRPS0VOX0ZMT0FUX1ZFQzI6IDIyLAorICAgICAgICAg
ICAgVE9LRU5fRkxPQVRfVkVDMzogMjMsCisgICAgICAgICAgICBUT0tFTl9GTE9BVF9WRUM0OiAy
NCwKKyAgICAgICAgICAgIFRPS0VOX0ZMT0FUX01BVDI6IDI1LAorICAgICAgICAgICAgVE9LRU5f
RkxPQVRfTUFUMlgzOiAyNiwKKyAgICAgICAgICAgIFRPS0VOX0ZMT0FUX01BVDJYNDogMjcsCisg
ICAgICAgICAgICBUT0tFTl9GTE9BVF9NQVQzWDI6IDI4LAorICAgICAgICAgICAgVE9LRU5fRkxP
QVRfTUFUMzogMjksCisgICAgICAgICAgICBUT0tFTl9GTE9BVF9NQVQzWDQ6IDMwLAorICAgICAg
ICAgICAgVE9LRU5fRkxPQVRfTUFUNFgyOiAzMSwKKyAgICAgICAgICAgIFRPS0VOX0ZMT0FUX01B
VDRYMzogMzIsCisgICAgICAgICAgICBUT0tFTl9GTE9BVF9NQVQ0OiAzMywKKyAgICAgICAgICAg
IFRPS0VOX0lOVDogMzQsCisgICAgICAgICAgICBUT0tFTl9JTlRfVkVDMjogMzUsCisgICAgICAg
ICAgICBUT0tFTl9JTlRfVkVDMzogMzYsCisgICAgICAgICAgICBUT0tFTl9JTlRfVkVDNDogMzcs
CisgICAgICAgICAgICBUT0tFTl9VSU5UOiAzOCwKKyAgICAgICAgICAgIFRPS0VOX1VJTlRfVkVD
MjogMzksCisgICAgICAgICAgICBUT0tFTl9VSU5UX1ZFQzM6IDQwLAorICAgICAgICAgICAgVE9L
RU5fVUlOVF9WRUM0OiA0MSwKKyAgICAgICAgICAgIFRPS0VOX0JPT0w6IDQyLAorICAgICAgICAg
ICAgVE9LRU5fQk9PTF9WRUMyOiA0MywKKyAgICAgICAgICAgIFRPS0VOX0JPT0xfVkVDMzogNDQs
CisgICAgICAgICAgICBUT0tFTl9CT09MX1ZFQzQ6IDQ1LAorICAgICAgICAgICAgVE9LRU5fVkVS
U0lPTjogNDYsCisKKyAgICAgICAgICAgIC8vIHN5bWJvbHMKKyAgICAgICAgICAgIFRPS0VOX0FT
U0lHTjogNDcsCisgICAgICAgICAgICBUT0tFTl9QTFVTOiA0OCwKKyAgICAgICAgICAgIFRPS0VO
X01JTlVTOiA0OSwKKyAgICAgICAgICAgIFRPS0VOX0NPTU1BOiA1MCwKKyAgICAgICAgICAgIFRP
S0VOX1ZFUlRJQ0FMX0JBUjogNTEsCisgICAgICAgICAgICBUT0tFTl9TRU1JX0NPTE9OOiA1MiwK
KyAgICAgICAgICAgIFRPS0VOX0xFRlRfUEFSRU46IDUzLAorICAgICAgICAgICAgVE9LRU5fUklH
SFRfUEFSRU46IDU0LAorICAgICAgICAgICAgVE9LRU5fTEVGVF9CUkFDS0VUOiA1NSwKKyAgICAg
ICAgICAgIFRPS0VOX1JJR0hUX0JSQUNLRVQ6IDU2LAorICAgICAgICAgICAgVE9LRU5fTEVGVF9C
UkFDRTogNTcsCisgICAgICAgICAgICBUT0tFTl9SSUdIVF9CUkFDRTogNTgsCisKKyAgICAgICAg
ICAgIFRPS0VOX0xBU1Q6IDU5CisgICAgICAgIH07CisKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBtX2lucHV0ID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbV9jdXJQdHIgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1fY3Vy
VG9rZW47Ly8gPSBUb2tlbi5UT0tFTl9JTlZBTElEOworICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIG1fY3VyVG9rZW5TdHIgPSAnJzsKKworICAgICAgICAvKiBmdW5jdGlvbiBtZW1i
ZXJzICovCisgICAgICAgIHRoaXMucGFyc2UgPSBmdW5jdGlvbihpbnB1dCkgeworCisgICAgICAg
ICAgICAvLyBpbml0aWFsaXNlIHBhcnNlcgorICAgICAgICAgICAgbV9pbnB1dCA9IGlucHV0Owor
ICAgICAgICAgICAgbV9jdXJQdHIgPSAwOworICAgICAgICAgICAgbV9jdXJUb2tlbiA9IFRva2Vu
LlRPS0VOX0lOVkFMSUQ7CisgICAgICAgICAgICBtX2N1clRva2VuU3RyID0gJyc7CisgICAgICAg
ICAgICBhZHZhbmNlVG9rZW4oKTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VU
ZXN0Q2FzZS5EZXFwVGVzdD59ICovIHZhciBub2RlTGlzdCA9IFtdOworCisgICAgICAgICAgICBm
b3IgKDs7KSB7CisKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9L
RU5fQ0FTRSkgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVNoYWRlckNhc2Uobm9kZUxpc3Qp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5f
R1JPVVApIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VTaGFkZXJHcm91cChub2RlTGlzdCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2N1clRva2VuID09PSBUb2tlbi5UT0tFTl9F
T0YpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyAgICB0aHJvdyBFcnJvcigiaW52YWxpZCB0b2tlbiBlbmNv
dW50ZXJlZCBhdCBtYWluIGxldmVsOiAnIiArIG1fY3VyVG9rZW5TdHIgKyAiJyIpOworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJpbnZhbGlkIHRva2VuIGVuY291bnRlcmVkIGF0IG1h
aW4gbGV2ZWw6ICciICsgbV9jdXJUb2tlblN0ciArICInIik7CisgICAgICAgICAgICAgICAgICAg
IHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5hdGUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5vZGVMaXN0OworCisgICAgICAgIH07
CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIGVuc3VyZXMgdGhhdCB0aGUgdG9rZW4gZXhpc3Rz
CisgICAgICAgICAqIG90aGVyd2lzZSBpdCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHRva2Vu
J3MgbmFtZSBkZXBlbmRpbmcgb24gZW51bSBudW1iZXIgdmFsdWUKKyAgICAgICAgICogQHBhcmFt
IHtudW1iZXJ9IGlkCisgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gbmFtZQorICAgICAgICAg
Ki8KKyAgICAgICAgdmFyIHJlc29sdmVUb2tlbk5hbWUgPSBmdW5jdGlvbihpZCkgeworICAgICAg
ICAgICAgZm9yICh2YXIgbmFtZSBpbiBUb2tlbikgeworICAgICAgICAgICAgICAgIGlmIChUb2tl
bltuYW1lXSA9PT0gaWQpIHJldHVybiBuYW1lOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuICdUT0tFTl9VTktOT1dOJzsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAg
ICAgICogVGhyb3dzIGFuIGVycm9yIHdoaWNoIGNvbnRhaW5zIHRoZSBwYXNzZWQgc3RyaW5nCisg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvclN0ciB0aGF0IGNvbnRhaW5zIGFuIGVycm9y
IHRvIG5vdGlmeQorICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IGVycm9yCisgICAgICAgICAq
LworICAgICAgICB2YXIgcGFyc2VFcnJvciA9IGZ1bmN0aW9uKGVycm9yU3RyKSB7CisgICAgICAg
ICAgICAvLyBhYm9ydAorICAgICAgICAgICAgdGhyb3cgJ2dsc1NoYWRlckxpYnJhcnkuUGFyc2Vy
IGVycm9yOiAnICsgZXJyb3JTdHIgKyAnIG5lYXIgJyArIG1faW5wdXQuc3Vic3RyKG1fY3VyUHRy
LCBtX2N1clB0ciArIDgwKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICog
Q29udmVydHMgc3RyaW5nIGludG8gZmxvYXQKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0
cgorICAgICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICAgICAqLworICAgICAgICB2YXIg
cGFyc2VGbG9hdExpdGVyYWwgPSBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZUZsb2F0KHN0cik7CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENv
bnZlcnRzIHN0cmluZyBpbnRvIGludGVnZXIKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0
cgorICAgICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICAgICAqLworICAgICAgICB2YXIg
cGFyc2VJbnRMaXRlcmFsID0gZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICByZXR1cm4gcGFy
c2VJbnQoc3RyLCAxMCk7CisgICAgICAgIH07CisgICAgICAgIHZhciBwYXJzZVN0cmluZ0xpdGVy
YWwgPSBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgLyoqCisgICAgICAgICogQHR5cGUge3N0cmlu
Z30KKyAgICAgICAgKiBmaW5kIGRlbGltaXRvcgorICAgICAgICAqLyB2YXIgZW5kY2hhciA9IHN0
ci5zdWJzdHIoMCwgMSk7CisgICAgICAgICAgICByZXR1cm4gZ2xzU2hhZGVyTGlicmFyeS5wYXJz
ZVN0cmluZ0xpdGVyYWxIZWxwZXIoc3RyLCBlbmRjaGFyKTsKKyAgICAgICAgfTsKKyAgICAgICAg
dmFyIHBhcnNlU2hhZGVyU291cmNlID0gZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICAvLyBz
aW1pbGFyIHRvIHBhcnNlIGxpdGVyYWwsIGRlbGltaXRvcnMgYXJlIHR3byBkb3VibGUgcXVvdGVz
ICgiIikKKyAgICAgICAgICAgIHJldHVybiBnbHNTaGFkZXJMaWJyYXJ5LnJlbW92ZUV4dHJhSW5k
ZW50YXRpb24oCisgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGlicmFyeS5wYXJzZVN0cmluZ0xp
dGVyYWxIZWxwZXIoc3RyLCAnIiInLCB0cnVlKQorICAgICAgICAgICAgKTsKKyAgICAgICAgfTsK
KworICAgICAgICB2YXIgYWR2YW5jZVRva2VuV29ya2VyID0gZnVuY3Rpb24oKSB7CisKKyAgICAg
ICAgICAgIC8vIFNraXAgb2xkIHRva2VuCisgICAgICAgICAgICBtX2N1clB0ciArPSBtX2N1clRv
a2VuU3RyLmxlbmd0aDsKKworICAgICAgICAgICAgLy8gUmVzZXQgdG9rZW4gKGZvciBzYWZldHkp
LgorICAgICAgICAgICAgbV9jdXJUb2tlbiA9IFRva2VuLlRPS0VOX0lOVkFMSUQ7CisgICAgICAg
ICAgICBtX2N1clRva2VuU3RyID0gJyc7CisKKyAgICAgICAgICAgIC8vIEVhdCB3aGl0ZXNwYWNl
ICYgY29tbWVudHMgd2hpbGUgdGhleSBsYXN0LgorICAgICAgICAgICAgZm9yICg7OykgeworCisg
ICAgICAgICAgICAgICAgd2hpbGUgKGdsc1NoYWRlckxpYnJhcnkuaXNXaGl0ZXNwYWNlKG1faW5w
dXQuY2hhckF0KG1fY3VyUHRyKSkpICsrbV9jdXJQdHI7CisKKyAgICAgICAgICAgICAgICAvLyBj
aGVjayBmb3IgRU9MIGNvbW1lbnQKKyAgICAgICAgICAgICAgICBpZiAobV9pbnB1dC5jaGFyQXQo
bV9jdXJQdHIpID09PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgbV9pbnB1dCBp
cyB0byBiZSBhbiBhcnJheSBvZiBsaW5lcyB0aGVuIHRoaXMgcHJvYmFibHkgd29udCB3b3JrIHZl
cnkgd2VsbAorICAgICAgICAgICAgICAgICAgICB3aGlsZSAoCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2N1clB0ciA8IG1faW5wdXQubGVuZ3RoICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAhZ2xzU2hhZGVyTGlicmFyeS5pc0VPTChtX2lucHV0LmNoYXJBdChtX2N1clB0cikpCisgICAg
ICAgICAgICAgICAgICAgICkgKyttX2N1clB0cjsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKG1fY3VyUHRyID49IG1faW5wdXQubGVuZ3RoKSB7CisK
KyAgICAgICAgICAgICAgICBtX2N1clRva2VuID0gVG9rZW4uVE9LRU5fRU9GOworICAgICAgICAg
ICAgICAgIG1fY3VyVG9rZW5TdHIgPSAnPEVPRj4nOworCisgICAgICAgICAgICB9IGVsc2UgaWYg
KGdsc1NoYWRlckxpYnJhcnkuaXNBbHBoYShtX2lucHV0LmNoYXJBdChtX2N1clB0cikpKSB7CisK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZW5kID0gbV9jdXJQdHIgKyAx
OworICAgICAgICAgICAgICAgIHdoaWxlIChnbHNTaGFkZXJMaWJyYXJ5LmlzQ2FzZU5hbWVDaGFy
KG1faW5wdXQuY2hhckF0KGVuZCkpKSArK2VuZDsKKworICAgICAgICAgICAgICAgIG1fY3VyVG9r
ZW5TdHIgPSBtX2lucHV0LnN1YnN0cihtX2N1clB0ciwgZW5kIC0gbV9jdXJQdHIpOworCisgICAg
ICAgICAgICAgICAgbV9jdXJUb2tlbiA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY29uc2lkZXIgcmVpbXBsZW1lbnRpbmcgd2l0aCBhIGJpbmFyeSBzZWFyY2gKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChtX2N1clRva2VuU3RyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICd0cnVlJzogcmV0dXJuIFRva2VuLlRPS0VOX1RSVUU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlICdmYWxzZSc6IHJldHVybiBUb2tlbi5UT0tFTl9GQUxTRTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rlc2MnOiByZXR1cm4gVG9rZW4uVE9LRU5fREVT
QzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V4cGVjdCc6IHJldHVybiBUb2tlbi5U
T0tFTl9FWFBFQ1Q7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncm91cCc6IHJldHVy
biBUb2tlbi5UT0tFTl9HUk9VUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nhc2Un
OiByZXR1cm4gVG9rZW4uVE9LRU5fQ0FTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
J2VuZCc6IHJldHVybiBUb2tlbi5UT0tFTl9FTkQ7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICd2YWx1ZXMnOiByZXR1cm4gVG9rZW4uVE9LRU5fVkFMVUVTOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnYm90aCc6IHJldHVybiBUb2tlbi5UT0tFTl9CT1RIOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAndmVydGV4JzogcmV0dXJuIFRva2VuLlRPS0VOX1ZFUlRFWDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZyYWdtZW50JzogcmV0dXJuIFRva2VuLlRP
S0VOX0ZSQUdNRU5UOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndW5pZm9ybSc6IHJl
dHVybiBUb2tlbi5UT0tFTl9VTklGT1JNOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn
aW5wdXQnOiByZXR1cm4gVG9rZW4uVE9LRU5fSU5QVVQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICdvdXRwdXQnOiByZXR1cm4gVG9rZW4uVE9LRU5fT1VUUFVUOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAnZmxvYXQnOiByZXR1cm4gVG9rZW4uVE9LRU5fRkxPQVQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZWMyJzogcmV0dXJuIFRva2VuLlRPS0VOX0ZMT0FU
X1ZFQzI7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZWMzJzogcmV0dXJuIFRva2Vu
LlRPS0VOX0ZMT0FUX1ZFQzM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZWM0Jzog
cmV0dXJuIFRva2VuLlRPS0VOX0ZMT0FUX1ZFQzQ7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICdtYXQyJzogcmV0dXJuIFRva2VuLlRPS0VOX0ZMT0FUX01BVDI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICdtYXQyeDMnOiByZXR1cm4gVG9rZW4uVE9LRU5fRkxPQVRfTUFUMlgz
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWF0Mng0JzogcmV0dXJuIFRva2VuLlRP
S0VOX0ZMT0FUX01BVDJYNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hdDN4Mic6
IHJldHVybiBUb2tlbi5UT0tFTl9GTE9BVF9NQVQzWDI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICdtYXQzJzogcmV0dXJuIFRva2VuLlRPS0VOX0ZMT0FUX01BVDM7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlICdtYXQzeDQnOiByZXR1cm4gVG9rZW4uVE9LRU5fRkxPQVRfTUFU
M1g0OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWF0NHgyJzogcmV0dXJuIFRva2Vu
LlRPS0VOX0ZMT0FUX01BVDRYMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hdDR4
Myc6IHJldHVybiBUb2tlbi5UT0tFTl9GTE9BVF9NQVQ0WDM7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICdtYXQ0JzogcmV0dXJuIFRva2VuLlRPS0VOX0ZMT0FUX01BVDQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICdpbnQnOiByZXR1cm4gVG9rZW4uVE9LRU5fSU5UOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXZlYzInOiByZXR1cm4gVG9rZW4uVE9LRU5fSU5U
X1ZFQzI7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpdmVjMyc6IHJldHVybiBUb2tl
bi5UT0tFTl9JTlRfVkVDMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2l2ZWM0Jzog
cmV0dXJuIFRva2VuLlRPS0VOX0lOVF9WRUM0OworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAndWludCc6IHJldHVybiBUb2tlbi5UT0tFTl9VSU5UOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAndXZlYzInOiByZXR1cm4gVG9rZW4uVE9LRU5fVUlOVF9WRUMyOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAndXZlYzMnOiByZXR1cm4gVG9rZW4uVE9LRU5fVUlOVF9WRUMz
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndXZlYzQnOiByZXR1cm4gVG9rZW4uVE9L
RU5fVUlOVF9WRUM0OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9vbCc6IHJldHVy
biBUb2tlbi5UT0tFTl9CT09MOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYnZlYzIn
OiByZXR1cm4gVG9rZW4uVE9LRU5fQk9PTF9WRUMyOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAnYnZlYzMnOiByZXR1cm4gVG9rZW4uVE9LRU5fQk9PTF9WRUMzOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAnYnZlYzQnOiByZXR1cm4gVG9rZW4uVE9LRU5fQk9PTF9WRUM0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVyc2lvbic6IHJldHVybiBUb2tlbi5UT0tF
Tl9WRVJTSU9OOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIFRva2Vu
LlRPS0VOX0lERU5USUZJRVI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9KCkpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKGdsc1NoYWRlckxpYnJhcnkuaXNOdW1l
cmljKG1faW5wdXQuY2hhckF0KG1fY3VyUHRyKSkpIHsKKworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBwID0gbV9jdXJQdHI7CisgICAgICAgICAgICAgICAgd2hpbGUgKGds
c1NoYWRlckxpYnJhcnkuaXNOdW1lcmljKG1faW5wdXQuY2hhckF0KHApKSkgKytwOworCisgICAg
ICAgICAgICAgICAgaWYgKG1faW5wdXQuY2hhckF0KHApID09PSAnLicpIHsgLy8gZmxvYXQKKwor
ICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChnbHNT
aGFkZXJMaWJyYXJ5LmlzTnVtZXJpYyhtX2lucHV0LmNoYXJBdChwKSkpICsrcDsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9pbnB1dC5jaGFyQXQocCkgPT09ICdlJyB8fCBtX2lucHV0LmNo
YXJBdChwKSA9PT0gJ0UnKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX2lucHV0LmNoYXJBdChwKSA9PT0gJysnIHx8IG1faW5w
dXQuY2hhckF0KHApID09PSAnLScpICsrcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgZ2xz
U2hhZGVyTGlicmFyeS5kZV9hc3NlcnQocCA8IG1faW5wdXQubGVuZ3RoICYmIGdsc1NoYWRlckxp
YnJhcnkuaXNOdW1lcmljKG1faW5wdXQuY2hhckF0KHApKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoZ2xzU2hhZGVyTGlicmFyeS5pc051bWVyaWMobV9pbnB1dC5jaGFyQXQocCkp
KSArK3A7CisKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIG1f
Y3VyVG9rZW4gPSBUb2tlbi5UT0tFTl9GTE9BVF9MSVRFUkFMOworICAgICAgICAgICAgICAgICAg
ICBtX2N1clRva2VuU3RyID0gbV9pbnB1dC5zdWJzdHIobV9jdXJQdHIsIHAgLSBtX2N1clB0cik7
CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
VG9rZW4gPSBUb2tlbi5UT0tFTl9JTlRfTElURVJBTDsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJUb2tlblN0ciA9IG1faW5wdXQuc3Vic3RyKG1fY3VyUHRyLCBwIC0gbV9jdXJQdHIpOworCisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9IGVsc2UgaWYgKG1faW5wdXQuY2hhckF0
KG1fY3VyUHRyKSA9PT0gJyInICYmIG1faW5wdXQuY2hhckF0KG1fY3VyUHRyICsgMSkgPT09ICci
JykgeyAvLyBzaGFkZXIgc291cmNlCisKKyAgICAgICAgICAgICAgICB2YXIgcCA9IG1fY3VyUHRy
ICsgMjsKKworICAgICAgICAgICAgICAgIHdoaWxlIChtX2lucHV0LmNoYXJBdChwKSAhPSAnIicg
fHwgbV9pbnB1dC5jaGFyQXQocCArIDEpICE9ICciJykgeworICAgICAgICAgICAgICAgICAgICBn
bHNTaGFkZXJMaWJyYXJ5LmRlX2Fzc2VydChwIDwgbV9pbnB1dC5sZW5ndGgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9pbnB1dC5jaGFyQXQocCkgPT09ICdcXCcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdsc1NoYWRlckxpYnJhcnkuZGVfYXNzZXJ0KHAgKyAxIDwgbV9pbnB1dC5s
ZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgcCArPSAyOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHAgKz0gMjsKKwor
ICAgICAgICAgICAgICAgIG1fY3VyVG9rZW4gPSBUb2tlbi5UT0tFTl9TSEFERVJfU09VUkNFOwor
ICAgICAgICAgICAgICAgIG1fY3VyVG9rZW5TdHIgPSBtX2lucHV0LnN1YnN0cihtX2N1clB0ciwg
cCAtIG1fY3VyUHRyKTsKKworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lucHV0LmNoYXJBdCht
X2N1clB0cikgPT09ICciJyB8fCBtX2lucHV0LmNoYXJBdChtX2N1clB0cikgPT09ICInIikgewor
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkZWxpbWl0b3IgPSBt
X2lucHV0LmNoYXJBdChtX2N1clB0cik7CisgICAgICAgICAgICAgICAgdmFyIHAgPSBtX2N1clB0
ciArIDE7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAobV9pbnB1dC5jaGFyQXQocCkgIT0gZGVs
aW1pdG9yKSB7CisKKyAgICAgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGlicmFyeS5kZV9hc3Nl
cnQocCA8IG1faW5wdXQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1faW5wdXQu
Y2hhckF0KHApID09PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnbHNTaGFkZXJM
aWJyYXJ5LmRlX2Fzc2VydChwICsgMSA8IG1faW5wdXQubGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHAgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICsrcDsKKworICAgICAgICAgICAgICAgIG1fY3VyVG9r
ZW4gPSBUb2tlbi5UT0tFTl9TVFJJTkc7CisgICAgICAgICAgICAgICAgbV9jdXJUb2tlblN0ciA9
IG1faW5wdXQuc3Vic3RyKG1fY3VyUHRyLCBwIC0gbV9jdXJQdHIpOworCisgICAgICAgICAgICB9
IGVsc2UgeworCisgICAgICAgICAgICAgICAgbV9jdXJUb2tlblN0ciA9IG1faW5wdXQuY2hhckF0
KG1fY3VyUHRyKTsKKyAgICAgICAgICAgICAgICBtX2N1clRva2VuID0gKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBjb25zaWRlciByZWltcGxlbWVudGluZyB3aXRoIGEgYmlu
YXJ5IHNlYXJjaAorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fY3VyVG9rZW5TdHIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJz0nOiByZXR1cm4gVG9rZW4uVE9LRU5fQVNT
SUdOOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKyc6IHJldHVybiBUb2tlbi5UT0tF
Tl9QTFVTOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiBUb2tlbi5U
T0tFTl9NSU5VUzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJywnOiByZXR1cm4gVG9r
ZW4uVE9LRU5fQ09NTUE7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd8JzogcmV0dXJu
IFRva2VuLlRPS0VOX1ZFUlRJQ0FMX0JBUjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
JzsnOiByZXR1cm4gVG9rZW4uVE9LRU5fU0VNSV9DT0xPTjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgJygnOiByZXR1cm4gVG9rZW4uVE9LRU5fTEVGVF9QQVJFTjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJyknOiByZXR1cm4gVG9rZW4uVE9LRU5fUklHSFRfUEFSRU47Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzogcmV0dXJuIFRva2VuLlRPS0VOX0xFRlRf
QlJBQ0tFVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ10nOiByZXR1cm4gVG9rZW4u
VE9LRU5fUklHSFRfQlJBQ0tFVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3snOiBy
ZXR1cm4gVG9rZW4uVE9LRU5fTEVGVF9CUkFDRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgJ30nOiByZXR1cm4gVG9rZW4uVE9LRU5fUklHSFRfQlJBQ0U7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBUb2tlbi5UT0tFTl9JTlZBTElEOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpKTsKKworICAgICAgICAgICAgfQorCisg
ICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEByZXR1cm4ge09iamVjdC48bnVt
YmVyLCBzdHJpbmcsIHN0cmluZz59CisgICAgICAgICAqLworICAgICAgICB2YXIgYWR2YW5jZVRv
a2VuVGVzdGVyID0gZnVuY3Rpb24oaW5wdXQsIGN1cnJlbnRfaW5kZXgpIHsKKyAgICAgICAgICAg
IG1faW5wdXQgPSBpbnB1dDsKKyAgICAgICAgICAgIG1fY3VyUHRyID0gY3VycmVudF9pbmRleDsK
KyAgICAgICAgICAgIG1fY3VyVG9rZW5TdHIgPSAnJzsKKyAgICAgICAgICAgIGFkdmFuY2VUb2tl
bldvcmtlcigpOworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyBpZFR5cGU6IG1fY3VyVG9rZW4sCisgICAgICAgICAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gbmFtZTogcmVzb2x2ZVRva2VuTmFtZShtX2N1clRva2VuKSwKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YWx1ZTogbV9jdXJUb2tlblN0cgorICAgICAgICAgICAg
fTsKKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICAqIEBwYXJhbSB7VG9rZW49
fSB0b2tlbkFzc3VtZWQKKyAgICAgICAgICAqLworICAgICAgICB2YXIgYWR2YW5jZVRva2VuID0g
ZnVuY3Rpb24odG9rZW5Bc3N1bWVkKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mKHRva2VuQXNz
dW1lZCkgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgYXNzdW1lVG9rZW4odG9r
ZW5Bc3N1bWVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbldvcmtl
cigpOworICAgICAgICB9OworICAgICAgICB2YXIgYXNzdW1lVG9rZW4gPSBmdW5jdGlvbih0b2tl
bikgeworCisgICAgICAgICAgICBpZiAobV9jdXJUb2tlbiAhPSB0b2tlbikgeworICAgICAgICAg
ICAgICAgIC8vIHBhcnNlIGVycm9yCisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIG1zZyA9ICJ1bmV4cGVjdGVkIHRva2VuICciICsgbV9jdXJUb2tlblN0ciArICInLCBleHBl
Y3RpbmcgJyIgKyBnZXRUb2tlbk5hbWUodG9rZW4pICsgIiciOworICAgICAgICAgICAgICAgIHRo
cm93IEVycm9yKCdQYXJzZSBFcnJvci4gJyArIG1zZyArICcgbmVhciAnICsgbV9jdXJQdHIgKyAn
IC4uLicpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICB2YXIgbWFwRGF0YVR5
cGVUb2tlbiA9IGZ1bmN0aW9uKHRva2VuKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7
CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVDogcmV0dXJuIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVQ7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9G
TE9BVF9WRUMyOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUMyOworICAg
ICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkxPQVRfVkVDMzogcmV0dXJuIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRP
S0VOX0ZMT0FUX1ZFQzQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ7
CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVF9NQVQyOiByZXR1cm4gZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyOworICAgICAgICAgICAgICAgIGNhc2UgVG9r
ZW4uVE9LRU5fRkxPQVRfTUFUMlgzOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQyWDM7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVF9NQVQyWDQ6
IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDJYNDsKKyAgICAgICAgICAg
ICAgICBjYXNlIFRva2VuLlRPS0VOX0ZMT0FUX01BVDNYMjogcmV0dXJuIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfTUFUM1gyOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5f
RkxPQVRfTUFUMzogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMzsKKyAg
ICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0ZMT0FUX01BVDNYNDogcmV0dXJuIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0OworICAgICAgICAgICAgICAgIGNhc2UgVG9r
ZW4uVE9LRU5fRkxPQVRfTUFUNFgyOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9B
VF9NQVQ0WDI7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVF9NQVQ0WDM6
IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDRYMzsKKyAgICAgICAgICAg
ICAgICBjYXNlIFRva2VuLlRPS0VOX0ZMT0FUX01BVDQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlLkZMT0FUX01BVDQ7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9JTlQ6
IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVDsKKyAgICAgICAgICAgICAgICBjYXNl
IFRva2VuLlRPS0VOX0lOVF9WRUMyOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRf
VkVDMjsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0lOVF9WRUMzOiByZXR1cm4g
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMzsKKyAgICAgICAgICAgICAgICBjYXNlIFRv
a2VuLlRPS0VOX0lOVF9WRUM0OiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVD
NDsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX1VJTlQ6IHJldHVybiBnbHVTaGFk
ZXJVdGlsLkRhdGFUeXBlLlVJTlQ7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9V
SU5UX1ZFQzI6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMjsKKyAgICAg
ICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX1VJTlRfVkVDMzogcmV0dXJuIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuVUlOVF9WRUMzOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5f
VUlOVF9WRUM0OiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQ7CisgICAg
ICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9CT09MOiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5CT09MOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fQk9PTF9WRUMy
OiByZXR1cm4gZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzI7CisgICAgICAgICAgICAg
ICAgY2FzZSBUb2tlbi5UT0tFTl9CT09MX1ZFQzM6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLkJPT0xfVkVDMzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0JPT0xfVkVD
NDogcmV0dXJuIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUM0OworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IHJldHVybiBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMg
dGhlIGNvcnJlc3BvbmRpbmcgdG9rZW4ncyBuYW1lIGRlcGVuZGluZyBvbiBlbnVtIG51bWJlciB2
YWx1ZQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdG9rZW4KKyAgICAgICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICAgICAgKi8KKyAgICAgICAgdmFyIGdldFRva2VuTmFtZSA9IGZ1bmN0
aW9uKHRva2VuKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBUb2tlbi5UT0tFTl9JTlZBTElEOiByZXR1cm4gJzxpbnZhbGlkPic7CisgICAgICAg
ICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9FT0Y6IHJldHVybiAnPGVvZj4nOworICAgICAgICAg
ICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fU1RSSU5HOiByZXR1cm4gJzxzdHJpbmc+JzsKKyAgICAg
ICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX1NIQURFUl9TT1VSQ0U6IHJldHVybiAnc291cmNl
JzsKKworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fSU5UX0xJVEVSQUw6IHJldHVy
biAnPGludD4nOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkxPQVRfTElURVJB
TDogcmV0dXJuICc8ZmxvYXQ+JzsKKworICAgICAgICAgICAgICAgIC8vIGlkZW50aWZpZXJzCisg
ICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9JREVOVElGSUVSOiByZXR1cm4gJzxpZGVu
dGlmaWVyPic7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9UUlVFOiByZXR1cm4g
J3RydWUnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkFMU0U6IHJldHVybiAn
ZmFsc2UnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fREVTQzogcmV0dXJuICdk
ZXNjJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0VYUEVDVDogcmV0dXJuICdl
eHBlY3QnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fR1JPVVA6IHJldHVybiAn
Z3JvdXAnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fQ0FTRTogcmV0dXJuICdj
YXNlJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0VORDogcmV0dXJuICdlbmQn
OworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fVkFMVUVTOiByZXR1cm4gJ3ZhbHVl
cyc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9CT1RIOiByZXR1cm4gJ2JvdGgn
OworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fVkVSVEVYOiByZXR1cm4gJ3ZlcnRl
eCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GUkFHTUVOVDogcmV0dXJuICdm
cmFnbWVudCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9VTklGT1JNOiByZXR1
cm4gJ3VuaWZvcm0nOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fSU5QVVQ6IHJl
dHVybiAnaW5wdXQnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fT1VUUFVUOiBy
ZXR1cm4gJ291dHB1dCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVDog
cmV0dXJuICdmbG9hdCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9BVF9W
RUMyOiByZXR1cm4gJ3ZlYzInOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkxP
QVRfVkVDMzogcmV0dXJuICd2ZWMzJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VO
X0ZMT0FUX1ZFQzQ6IHJldHVybiAndmVjNCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5U
T0tFTl9GTE9BVF9NQVQyOiByZXR1cm4gJ21hdDInOworICAgICAgICAgICAgICAgIGNhc2UgVG9r
ZW4uVE9LRU5fRkxPQVRfTUFUMlgzOiByZXR1cm4gJ21hdDJ4Myc7CisgICAgICAgICAgICAgICAg
Y2FzZSBUb2tlbi5UT0tFTl9GTE9BVF9NQVQyWDQ6IHJldHVybiAnbWF0Mng0JzsKKyAgICAgICAg
ICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0ZMT0FUX01BVDNYMjogcmV0dXJuICdtYXQzeDInOwor
ICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkxPQVRfTUFUMzogcmV0dXJuICdtYXQz
JzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0ZMT0FUX01BVDNYNDogcmV0dXJu
ICdtYXQzeDQnOworICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRkxPQVRfTUFUNFgy
OiByZXR1cm4gJ21hdDR4Mic7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9GTE9B
VF9NQVQ0WDM6IHJldHVybiAnbWF0NHgzJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRP
S0VOX0ZMT0FUX01BVDQ6IHJldHVybiAnbWF0NCc7CisgICAgICAgICAgICAgICAgY2FzZSBUb2tl
bi5UT0tFTl9JTlQ6IHJldHVybiAnaW50JzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2VuLlRP
S0VOX0lOVF9WRUMyOiByZXR1cm4gJ2l2ZWMyJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRva2Vu
LlRPS0VOX0lOVF9WRUMzOiByZXR1cm4gJ2l2ZWMzJzsKKyAgICAgICAgICAgICAgICBjYXNlIFRv
a2VuLlRPS0VOX0lOVF9WRUM0OiByZXR1cm4gJ2l2ZWM0JzsKKyAgICAgICAgICAgICAgICBjYXNl
IFRva2VuLlRPS0VOX1VJTlQ6IHJldHVybiAndWludCc7CisgICAgICAgICAgICAgICAgY2FzZSBU
b2tlbi5UT0tFTl9VSU5UX1ZFQzI6IHJldHVybiAndXZlYzInOworICAgICAgICAgICAgICAgIGNh
c2UgVG9rZW4uVE9LRU5fVUlOVF9WRUMzOiByZXR1cm4gJ3V2ZWMzJzsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRva2VuLlRPS0VOX1VJTlRfVkVDNDogcmV0dXJuICd1dmVjNCc7CisgICAgICAgICAg
ICAgICAgY2FzZSBUb2tlbi5UT0tFTl9CT09MOiByZXR1cm4gJ2Jvb2wnOworICAgICAgICAgICAg
ICAgIGNhc2UgVG9rZW4uVE9LRU5fQk9PTF9WRUMyOiByZXR1cm4gJ2J2ZWMyJzsKKyAgICAgICAg
ICAgICAgICBjYXNlIFRva2VuLlRPS0VOX0JPT0xfVkVDMzogcmV0dXJuICdidmVjMyc7CisgICAg
ICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9CT09MX1ZFQzQ6IHJldHVybiAnYnZlYzQnOwor
CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9BU1NJR046IHJldHVybiAnPSc7Cisg
ICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9QTFVTOiByZXR1cm4gJysnOworICAgICAg
ICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fTUlOVVM6IHJldHVybiAnLSc7CisgICAgICAgICAg
ICAgICAgY2FzZSBUb2tlbi5UT0tFTl9DT01NQTogcmV0dXJuICcsJzsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRva2VuLlRPS0VOX1ZFUlRJQ0FMX0JBUjogcmV0dXJuICd8JzsKKyAgICAgICAgICAg
ICAgICBjYXNlIFRva2VuLlRPS0VOX1NFTUlfQ09MT046IHJldHVybiAnOyc7CisgICAgICAgICAg
ICAgICAgY2FzZSBUb2tlbi5UT0tFTl9MRUZUX1BBUkVOOiByZXR1cm4gJygnOworICAgICAgICAg
ICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fUklHSFRfUEFSRU46IHJldHVybiAnKSc7CisgICAgICAg
ICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9MRUZUX0JSQUNLRVQ6IHJldHVybiAnWyc7CisgICAg
ICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9SSUdIVF9CUkFDS0VUOiByZXR1cm4gJ10nOwor
ICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fTEVGVF9CUkFDRTogcmV0dXJuICcgeyc7
CisgICAgICAgICAgICAgICAgY2FzZSBUb2tlbi5UT0tFTl9SSUdIVF9CUkFDRTogcmV0dXJuICd9
JzsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAnPHVua25vd24+JzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHs/
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gZXhwZWN0ZWREYXRhVHlwZQorICAgICAgICAgKiBAcGFy
YW0ge09iamVjdH0gcmVzdWx0CisgICAgICAgICAqLworICAgICAgICB2YXIgcGFyc2VWYWx1ZUVs
ZW1lbnQgPSBmdW5jdGlvbihleHBlY3RlZERhdGFUeXBlLCByZXN1bHQpIHsKKyAgICAgICAgICAg
IC8qKiBAdHlwZSB7P3N0cmluZ30gKi8gdmFyIHNjYWxhclR5cGUgPSBudWxsOworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gMDsKKyAgICAgICAgICAg
IGlmIChleHBlY3RlZERhdGFUeXBlKSB7CisgICAgICAgICAgICAgICAgc2NhbGFyVHlwZSA9IGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBlKGV4cGVjdGVkRGF0YVR5cGUpOworICAg
ICAgICAgICAgICAgIHNjYWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFy
U2l6ZShleHBlY3RlZERhdGFUeXBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZWxlbXMgPSBbXTsKKworICAgICAgICAgICAg
aWYgKHNjYWxhclNpemUgPiAxKSB7CisgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGlicmFyeS5k
ZV9hc3NlcnQobWFwRGF0YVR5cGVUb2tlbihtX2N1clRva2VuKSA9PT0gZXhwZWN0ZWREYXRhVHlw
ZSk7CisgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7IC8vIGRhdGEgdHlwZShmbG9hdCwg
dmVjMiwgZXRjLikKKyAgICAgICAgICAgICAgICBhZHZhbmNlVG9rZW4oVG9rZW4uVE9LRU5fTEVG
VF9QQVJFTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2NhbGFyU2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNjYWxhclR5cGUgPT09
ICdmbG9hdCcpIHsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
c2lnbk11bHQgPSAxLjA7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1clRva2VuID09PSBU
b2tlbi5UT0tFTl9NSU5VUykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2lnbk11bHQgPSAt
MS4wOworICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBhc3N1bWVUb2tlbihUb2tlbi5UT0tF
Tl9GTE9BVF9MSVRFUkFMKTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbXMucHVzaChzaWduTXVs
dCAqIHBhcnNlRmxvYXRMaXRlcmFsKG1fY3VyVG9rZW5TdHIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWR2YW5jZVRva2VuKFRva2VuLlRPS0VOX0ZMT0FUX0xJVEVSQUwpOworCisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChzY2FsYXJUeXBlID09PSAnaW50JyB8fCBzY2FsYXJUeXBlID09PSAn
dWludCcpIHsKKworICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbk11bHQgPSAxOworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fTUlOVVMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZ25NdWx0ID0gLTE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZHZhbmNlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGFzc3VtZVRva2VuKFRva2VuLlRPS0VOX0lOVF9MSVRFUkFMKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbXMucHVzaChzaWduTXVsdCAqIHBhcnNlSW50TGl0ZXJhbChtX2N1clRv
a2VuU3RyKSk7CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VUb2tlbihUb2tlbi5UT0tFTl9J
TlRfTElURVJBTCk7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAg
ICAgICAgIGdsc1NoYWRlckxpYnJhcnkuZGVfYXNzZXJ0KHNjYWxhclR5cGUgPT09ICdib29sJyk7
CisgICAgICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9L
RU5fVFJVRSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1clRva2VuICE9IFRva2VuLlRP
S0VOX1RSVUUgJiYgbV9jdXJUb2tlbiAhPSBUb2tlbi5UT0tFTl9GQUxTRSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4sIGV4cGVjdGluZyBi
b29sOiAnICsgbV9jdXJUb2tlblN0cik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7IC8vIHRydWUvZmFsc2UKKworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChpICE9IChzY2FsYXJTaXplIC0gMSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuKFRva2VuLlRPS0VOX0NPTU1BKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzY2FsYXJTaXpl
ID4gMSkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VUb2tlbihUb2tlbi5UT0tFTl9SSUdIVF9Q
QVJFTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZWxlbXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0LmVsZW1lbnRzLnB1c2go
ZWxlbXNbaV0pOworCisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJh
bSB7T2JqZWN0LjxBcnJheSwgbnVtYmVyPn0gdmFsdWVCbG9jaworICAgICAgICAgKi8KKyAgICAg
ICAgdmFyIHBhcnNlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZUJsb2NrKSB7CisKKyAgICAgICAgLyoq
CisgICAgICAgICogQHR5cGUge09iamVjdH0KKyAgICAgICAgKi8KKyAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSB7CisgICAgICAgICAgICAvKiogQHR5cGUgez9nbHVTaGFkZXJVdGlsLkRhdGFUeXBl
fSAqLyBkYXRhVHlwZTogbnVsbCwKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7P2dsc1NoYWRlckxp
YnJhcnlDYXNlLnNoYWRlckNhc2V9ICovIHN0b3JhZ2VUeXBlOiBudWxsLAorICAgICAgICAgICAg
LyoqIEB0eXBlIHs/c3RyaW5nfSAqLyB2YWx1ZU5hbWU6IG51bGwsCisgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5fSAqLyBlbGVtZW50czogW10KKyAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgIC8vIHBhcnNlIHN0b3JhZ2UKKyAgICAgICAgICAgIHN3aXRjaCAobV9jdXJUb2tlbikgewor
ICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fVU5JRk9STToKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuc3RvcmFnZVR5cGUgPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zaGFkZXJDYXNlLlNUT1JB
R0VfVU5JRk9STTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIFRv
a2VuLlRPS0VOX0lOUFVUOgorICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yYWdlVHlwZSA9IGds
c1NoYWRlckxpYnJhcnlDYXNlLnNoYWRlckNhc2UuU1RPUkFHRV9JTlBVVDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX09VVFBVVDoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuc3RvcmFnZVR5cGUgPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zaGFk
ZXJDYXNlLlNUT1JBR0VfT1VUUFVUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgdG9r
ZW4gZW5jb3VudGVyZWQgd2hlbiBwYXJzaW5nIHZhbHVlIGNsYXNzaWZpZXInKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbigp
OworCisgICAgICAgICAgICAvLyBwYXJzZSBkYXRhIHR5cGUKKyAgICAgICAgICAgIHJlc3VsdC5k
YXRhVHlwZSA9IG1hcERhdGFUeXBlVG9rZW4obV9jdXJUb2tlbik7CisgICAgICAgICAgICBpZiAo
cmVzdWx0LmRhdGFUeXBlID09PSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVkFMSUQpIHsKKyAg
ICAgICAgICAgICAgICB0aHJvdyBFcnJvcigndW5leHBlY3RlZCB0b2tlbiB3aGVuIHBhcnNpbmcg
dmFsdWUgZGF0YSB0eXBlOiAnICsgbV9jdXJUb2tlblN0cik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhZHZhbmNlVG9rZW4oKTsKKworICAgICAgICAgICAgLy8gcGFyc2UgdmFsdWUgbmFt
ZQorICAgICAgICAgICAgaWYgKG1fY3VyVG9rZW4gPT09IFRva2VuLlRPS0VOX0lERU5USUZJRVIp
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQudmFsdWVOYW1lID0gbV9jdXJUb2tlblN0cjsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fU1RSSU5HKSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlTmFtZSA9IHBhcnNlU3RyaW5nTGl0ZXJhbCht
X2N1clRva2VuU3RyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhy
b3cgRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4gd2hlbiBwYXJzaW5nIHZhbHVlIG5hbWU6ICcgKyBt
X2N1clRva2VuU3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbigp
OworCisgICAgICAgICAgICAvLyBwYXJzZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgICAgICAg
ICAgYWR2YW5jZVRva2VuKFRva2VuLlRPS0VOX0FTU0lHTik7CisKKyAgICAgICAgICAgIC8vIHBh
cnNlIGFjdHVhbCB2YWx1ZQorICAgICAgICAgICAgaWYgKG1fY3VyVG9rZW4gPT09IFRva2VuLlRP
S0VOX0xFRlRfQlJBQ0tFVCkgeyAvLyB2YWx1ZSBsaXN0CisgICAgICAgICAgICAgICAgYWR2YW5j
ZVRva2VuKFRva2VuLlRPS0VOX0xFRlRfQlJBQ0tFVCk7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFycmF5TGVuZ3RoID0gMDsKKworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgICAgICAgICAgcGFyc2VWYWx1ZUVsZW1lbnQocmVzdWx0LmRhdGFUeXBlLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXJyYXlMZW5ndGggKz0gMTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fUklHSFRfQlJBQ0tFVCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fVkVSVElDQUxfQkFSKSB7IC8vIHBp
cGU/CisgICAgICAgICAgICAgICAgICAgICAgICBhZHZhbmNlVG9rZW4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4gaW4gdmFs
dWUgZWxlbWVudCBhcnJheTogJyArIG1fY3VyVG9rZW5TdHIpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuKFRv
a2VuLlRPS0VOX1JJR0hUX0JSQUNLRVQpOworCisgICAgICAgICAgICB9IGVsc2UgeyAvLyBhcnJh
eXMsIHNpbmdsZSBlbGVtZW50cworICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVFbGVtZW50KHJl
c3VsdC5kYXRhVHlwZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXJyYXlMZW5n
dGggPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZHZhbmNlVG9rZW4oVG9rZW4u
VE9LRU5fU0VNSV9DT0xPTik7CisKKyAgICAgICAgICAgIHZhbHVlQmxvY2sudmFsdWVzLnB1c2go
cmVzdWx0KTsKKworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0g
e09iamVjdC48QXJyYXksIG51bWJlcj59IHZhbHVlQmxvY2sKKyAgICAgICAgICovCisgICAgICAg
IHZhciBwYXJzZVZhbHVlQmxvY2sgPSBmdW5jdGlvbih2YWx1ZUJsb2NrKSB7CisKKyAgICAgICAg
ICAgIGFkdmFuY2VUb2tlbihUb2tlbi5UT0tFTl9WQUxVRVMpOworICAgICAgICAgICAgYWR2YW5j
ZVRva2VuKFRva2VuLlRPS0VOX0xFRlRfQlJBQ0UpOworCisgICAgICAgICAgICBmb3IgKDs7KSB7
CisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAgICBtX2N1clRva2VuID09
PSBUb2tlbi5UT0tFTl9VTklGT1JNIHx8CisgICAgICAgICAgICAgICAgICAgIG1fY3VyVG9rZW4g
PT09IFRva2VuLlRPS0VOX0lOUFVUIHx8CisgICAgICAgICAgICAgICAgICAgIG1fY3VyVG9rZW4g
PT09IFRva2VuLlRPS0VOX09VVFBVVAorICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAg
ICAgICAgICBwYXJzZVZhbHVlKHZhbHVlQmxvY2spOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fUklHSFRfQlJBQ0UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQoIHRva2VuIHdoZW4gcGFyc2luZyBhIHZhbHVl
IGJsb2NrOiAnICsgbV9jdXJUb2tlblN0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBhZHZhbmNlVG9rZW4oVG9rZW4uVE9LRU5fUklHSFRfQlJBQ0Up
OworCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGFycmF5TGVuZ3RoID0g
MTsKKyAgICAgICAgICAgIC8vIGNvbXB1dGUgY29tYmluZWQgYXJyYXkgbGVuZ3RoIG9mIHZhbHVl
IGJsb2NrLgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZUJsb2NrLnZhbHVl
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZUJsb2NrLnZhbHVlc1tp
XS5hcnJheUxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGlicmFy
eS5kZV9hc3NlcnQoYXJyYXlMZW5ndGggPT09IDEgfHwgYXJyYXlMZW5ndGggPT09IHZhbHVlQmxv
Y2sudmFsdWVzW2ldLmFycmF5TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlMZW5n
dGggPSB2YWx1ZUJsb2NrLnZhbHVlc1tpXS5hcnJheUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhbHVlQmxvY2suYXJyYXlMZW5ndGggPSBh
cnJheUxlbmd0aDsKKworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFy
YW0ge0FycmF5PHRjdVRlc3RDYXNlLkRlcXBUZXN0Pn0gc2hhZGVyTm9kZUxpc3QKKyAgICAgICAg
ICovCisgICAgICAgIHZhciBwYXJzZVNoYWRlckNhc2UgPSBmdW5jdGlvbihzaGFkZXJOb2RlTGlz
dCkgeworCisgICAgICAgICAgICAvLyBwYXJzZSBjYXNlCisgICAgICAgICAgICBhZHZhbmNlVG9r
ZW4oVG9rZW4uVE9LRU5fQ0FTRSk7CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICog
QHR5cGUge3N0cmluZ30KKyAgICAgICAgICAgICAqIHBhcnNlIGNhc2UgbmFtZQorICAgICAgICAg
ICAgICovCisgICAgICAgICAgICB2YXIgY2FzZU5hbWUgPSBtX2N1clRva2VuU3RyOworICAgICAg
ICAgICAgYWR2YW5jZVRva2VuKCk7IC8vIFxub3RlIFtweXJ5XSBBbGwgdG9rZW4gdHlwZXMgYXJl
IGFsbG93ZWQgaGVyZS4KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBAdHlwZSB7
QXJyYXk8T2JqZWN0Pn0KKyAgICAgICAgICAgICAqIHNldHVwIGNhc2UKKyAgICAgICAgICAgICAq
LworICAgICAgICAgICAgdmFyIHZhbHVlQmxvY2tMaXN0ID0gW107CisKKyAgICAgICAgICAgIC8q
KiBUT0RPOiBTaG91bGQgdGhlIGRlZmF1bHQgdmVyc2lvbiBiZSBkZWZpbmVkIGVsc2V3aGVyZT8g
Ki8KKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdmVyc2lvbiA9ICcxMDAn
OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBleHBlY3RSZXN1bHQgPSBn
bHNTaGFkZXJMaWJyYXJ5Q2FzZS5leHBlY3RSZXN1bHQuRVhQRUNUX1BBU1M7CisgICAgICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGRlc2NyaXB0aW9uOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBib3RoU291cmNlID0gJyc7CisgICAgICAgICAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdmFyIHZlcnRleFNvdXJjZSA9ICcnOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnbWVudFNvdXJjZSA9ICcnOworCisgICAgICAgICAg
ICBmb3IgKDs7KSB7CisKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4u
VE9LRU5fRU5EKSB7CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fY3VyVG9rZW4gPT09IFRva2VuLlRPS0VOX0RFU0MpIHsKKworICAg
ICAgICAgICAgICAgICAgICBhZHZhbmNlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgYXNz
dW1lVG9rZW4oVG9rZW4uVE9LRU5fU1RSSU5HKTsKKworICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdGlvbiA9IHBhcnNlU3RyaW5nTGl0ZXJhbChtX2N1clRva2VuU3RyKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWR2YW5jZVRva2VuKCk7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1f
Y3VyVG9rZW4gPT09IFRva2VuLlRPS0VOX0VYUEVDVCkgeworCisgICAgICAgICAgICAgICAgICAg
IGFkdmFuY2VUb2tlbigpOworICAgICAgICAgICAgICAgICAgICBhc3N1bWVUb2tlbihUb2tlbi5U
T0tFTl9JREVOVElGSUVSKTsKKworICAgICAgICAgICAgICAgICAgICBleHBlY3RSZXN1bHQgPSAo
ZnVuY3Rpb24odG9rZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodG9rZW4p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwYXNzJzogcmV0dXJuIGdsc1No
YWRlckxpYnJhcnlDYXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfUEFTUzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlICdjb21waWxlX2ZhaWwnOiByZXR1cm4gZ2xzU2hhZGVyTGlicmFy
eUNhc2UuZXhwZWN0UmVzdWx0LkVYUEVDVF9DT01QSUxFX0ZBSUw7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAnbGlua19mYWlsJzogcmV0dXJuIGdsc1NoYWRlckxpYnJhcnlDYXNl
LmV4cGVjdFJlc3VsdC5FWFBFQ1RfTElOS19GQUlMOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgJ2NvbXBpbGVfb3JfbGlua19mYWlsJzogcmV0dXJuIGdsc1NoYWRlckxpYnJhcnlD
YXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfQ09NUElMRV9MSU5LX0ZBSUw7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnYnVpbGRfc3VjY2Vzc2Z1bCc6IHJldHVybiBnbHNTaGFkZXJM
aWJyYXJ5Q2FzZS5leHBlY3RSZXN1bHQuRVhQRUNUX0JVSUxEX1NVQ0NFU1NGVUw7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgZXhwZWN0ZWQgcmVzdWx0IHZhbHVlOiAnICsgbV9j
dXJUb2tlblN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0obV9jdXJUb2tlblN0cikpOworCisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VUb2tl
bigpOworCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2N1clRva2VuID09PSBUb2tlbi5U
T0tFTl9WQUxVRVMpIHsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxBcnJh
eSwgbnVtYmVyPn0gKi8gdmFyIGJsb2NrID0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuZ2VuVmFsdWVC
bG9jaygpOworICAgICAgICAgICAgICAgICAgICBwYXJzZVZhbHVlQmxvY2soYmxvY2spOworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZUJsb2NrTGlzdC5wdXNoKGJsb2NrKTsKKworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoCisgICAgICAgICAgICAgICAgICAgIG1fY3VyVG9rZW4gPT09IFRv
a2VuLlRPS0VOX0JPVEggfHwKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJUb2tlbiA9PT0gVG9r
ZW4uVE9LRU5fVkVSVEVYIHx8CisgICAgICAgICAgICAgICAgICAgIG1fY3VyVG9rZW4gPT09IFRv
a2VuLlRPS0VOX0ZSQUdNRU5UCisgICAgICAgICAgICAgICAgKSB7CisKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRva2VuID0gbV9jdXJUb2tlbjsKKyAgICAgICAg
ICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIGFzc3VtZVRv
a2VuKFRva2VuLlRPS0VOX1NIQURFUl9TT1VSQ0UpOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB2YXIgc291cmNlID0gcGFyc2VTaGFkZXJTb3VyY2UobV9jdXJUb2tlblN0
cik7CisKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAodG9rZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
ZW4uVE9LRU5fQk9USDogYm90aFNvdXJjZSA9IHNvdXJjZTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva2VuLlRPS0VOX1ZFUlRFWDogdmVydGV4U291cmNlID0gc291cmNl
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rZW4uVE9LRU5fRlJBR01F
TlQ6IGZyYWdtZW50U291cmNlID0gc291cmNlOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IGdsc1NoYWRlckxpYnJhcnkuZGVfYXNzZXJ0KGZhbHNlKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJU
b2tlbiA9PT0gVG9rZW4uVE9LRU5fVkVSU0lPTikgeworCisgICAgICAgICAgICAgICAgICAgIGFk
dmFuY2VUb2tlbigpOworCisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdmVyc2lvbk51bSA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgcG9zdGZpeCA9ICcnOworCisgICAgICAgICAgICAgICAgICAgIGFzc3VtZVRv
a2VuKFRva2VuLlRPS0VOX0lOVF9MSVRFUkFMKTsKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bk51bSA9IHBhcnNlSW50TGl0ZXJhbChtX2N1clRva2VuU3RyKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWR2YW5jZVRva2VuKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VyVG9rZW4g
PT09IFRva2VuLlRPS0VOX0lERU5USUZJRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBv
c3RmaXggPSBtX2N1clRva2VuU3RyOworICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVRv
a2VuKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBU
T0RPOiBuZWVkIHRvIGZpeCB0aGVzZSBjb25zdGFudHMsIHdlIGRvbnQgaGF2ZSBnbHUKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcnNpb25OdW0gPT09IDEwMCAmJiBwb3N0Zml4ID09PSAnZXMn
KSB2ZXJzaW9uID0gJzEwMCc7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZlcnNpb25O
dW0gPT09IDMwMCAmJiBwb3N0Zml4ID09PSAnZXMnKSB2ZXJzaW9uID0gJzMwMCBlcyc7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZlcnNpb25OdW0gPT09IDMxMCAmJiBwb3N0Zml4ID09
PSAnZXMnKSB2ZXJzaW9uID0gJzMxMCBlcyc7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHZlcnNpb25OdW0gPT09IDEzMCkgdmVyc2lvbiA9ICcxMzAnOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICh2ZXJzaW9uTnVtID09PSAxNDApIHZlcnNpb24gPSAnMTQwJzsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAodmVyc2lvbk51bSA9PT0gMTUwKSB2ZXJzaW9uID0gJzE1MCc7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZlcnNpb25OdW0gPT09IDMzMCkgdmVyc2lv
biA9ICczMzAnOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2ZXJzaW9uTnVtID09PSA0
MDApIHZlcnNpb24gPSAnNDAwJzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmVyc2lv
bk51bSA9PT0gNDEwKSB2ZXJzaW9uID0gJzQxMCc7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHZlcnNpb25OdW0gPT09IDQyMCkgdmVyc2lvbiA9ICc0MjAnOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmICh2ZXJzaW9uTnVtID09PSA0MzApIHZlcnNpb24gPSAnNDMwJzsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodmVyc2lvbk51bSA9PT0gNDQwKSB2ZXJzaW9uID0gJzQ0
MCc7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZlcnNpb25OdW0gPT09IDQ1MCkgdmVy
c2lvbiA9ICc0NTAnOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIEdMU0wgdmVyc2lvbicpOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBFcnJvcigndW5leHBlY3RlZCB0b2tlbiB3aGlsZSBwYXJzaW5nIHNoYWRlciBj
YXNlOiAnICsgbV9jdXJUb2tlblN0cik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbihUb2tlbi5UT0tFTl9FTkQpOyAvLyBjYXNl
IGVuZAorCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIG5vIFNoYWRlckNhc2UgeWV0
PworICAgICAgICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSB2ZXJ0CisgICAgICAgICAgICAgKiBA
cGFyYW0gez9zdHJpbmd9IGZyYWcKKyAgICAgICAgICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyTGli
cmFyeUNhc2UuY2FzZVR5cGV9IHR5cGUKKyAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0K
KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgdmFyIGdldFNoYWRlclNwZWMgPSBmdW5jdGlv
bih2ZXJ0LCBmcmFnLCB0eXBlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge2dsc1NoYWRlckxpYnJhcnlDYXNlLmV4cGVjdFJlc3VsdH0gKi8g
ZXhwZWN0UmVzdWx0OiBleHBlY3RSZXN1bHQsCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHNTaGFkZXJMaWJyYXJ5Q2FzZS5jYXNlVHlwZX0gKi8gY2FzZVR5cGU6IHR5cGUsCisgICAgICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxPYmplY3Q+fSAqLyB2YWx1ZUJsb2NrTGlzdDogdmFs
dWVCbG9ja0xpc3QsCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRhcmdl
dFZlcnNpb246IHZlcnNpb24sCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHs/c3RyaW5nfSAq
LyB2ZXJ0ZXhTb3VyY2U6IHZlcnQsCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHs/c3RyaW5n
fSAqLyBmcmFnbWVudFNvdXJjZTogZnJhZworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9OworICAgICAgICAgICAgZ2V0U2hhZGVyU3BlYy5iaW5kKHRoaXMpOworCisgICAgICAgICAg
ICBpZiAoYm90aFNvdXJjZS5sZW5ndGgpIHsKKworICAgICAgICAgICAgICAgIGdsc1NoYWRlckxp
YnJhcnkuZGVfYXNzZXJ0KCF2ZXJ0ZXhTb3VyY2UpOworICAgICAgICAgICAgICAgIGdsc1NoYWRl
ckxpYnJhcnkuZGVfYXNzZXJ0KCFmcmFnbWVudFNvdXJjZSk7CisKKyAgICAgICAgICAgICAgICBz
aGFkZXJOb2RlTGlzdC5wdXNoKHRjdVRlc3RDYXNlLm5ld1Rlc3QoY2FzZU5hbWUgKyAnX3ZlcnRl
eCcsIGRlc2NyaXB0aW9uLCBnZXRTaGFkZXJTcGVjKGJvdGhTb3VyY2UsIG51bGwsCisgICAgICAg
ICAgICAgICAgICAgIGdsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlLkNBU0VUWVBFX1ZFUlRF
WF9PTkxZKSkpOworICAgICAgICAgICAgICAgIHNoYWRlck5vZGVMaXN0LnB1c2godGN1VGVzdENh
c2UubmV3VGVzdChjYXNlTmFtZSArICdfZnJhZ21lbnQnLCBkZXNjcmlwdGlvbiwgZ2V0U2hhZGVy
U3BlYyhudWxsLCBib3RoU291cmNlLAorICAgICAgICAgICAgICAgICAgICBnbHNTaGFkZXJMaWJy
YXJ5Q2FzZS5jYXNlVHlwZS5DQVNFVFlQRV9GUkFHTUVOVF9PTkxZKSkpOworCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGdsc1NoYWRlckxpYnJhcnkuZGVfYXNzZXJ0KHZl
cnRleFNvdXJjZSk7CisgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGlicmFyeS5kZV9hc3NlcnQo
ZnJhZ21lbnRTb3VyY2UpOworCisgICAgICAgICAgICAgICAgc2hhZGVyTm9kZUxpc3QucHVzaCh0
Y3VUZXN0Q2FzZS5uZXdUZXN0KGNhc2VOYW1lLCBkZXNjcmlwdGlvbiwgZ2V0U2hhZGVyU3BlYyh2
ZXJ0ZXhTb3VyY2UsIGZyYWdtZW50U291cmNlLAorICAgICAgICAgICAgICAgICAgICBnbHNTaGFk
ZXJMaWJyYXJ5Q2FzZS5jYXNlVHlwZS5DQVNFVFlQRV9DT01QTEVURSkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7QXJy
YXk8dGN1VGVzdENhc2UuRGVxcFRlc3Q+fSBzaGFkZXJOb2RlTGlzdAorICAgICAgICAgKi8KKyAg
ICAgICAgdmFyIHBhcnNlU2hhZGVyR3JvdXAgPSBmdW5jdGlvbihzaGFkZXJOb2RlTGlzdCkgewor
CisgICAgICAgICAgICAvLyBwYXJzZSAnY2FzZScKKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbihU
b2tlbi5UT0tFTl9HUk9VUCk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfQorICAg
ICAgICAgICAgICogcGFyc2UgY2FzZSBuYW1lCisgICAgICAgICAgICAgKi8gdmFyIG5hbWUgPSBt
X2N1clRva2VuU3RyOworICAgICAgICAgICAgYWR2YW5jZVRva2VuKCk7IC8vIFxub3RlIFtweXJ5
XSBXZSBkb24ndCB3YW50IHRvIGNoZWNrIHRva2VuIHR5cGUgaGVyZSAoZm9yIGluc3RhbmNlIHRv
IGFsbG93ICJ1bmlmb3JtIikgZ3JvdXAuCisKKyAgICAgICAgICAgIC8vIFBhcnNlIGRlc2NyaXB0
aW9uLgorICAgICAgICAgICAgYXNzdW1lVG9rZW4oVG9rZW4uVE9LRU5fU1RSSU5HKTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZGVzY3JpcHRpb24gPSBwYXJzZVN0cmlu
Z0xpdGVyYWwobV9jdXJUb2tlblN0cik7CisgICAgICAgICAgICBhZHZhbmNlVG9rZW4oVG9rZW4u
VE9LRU5fU1RSSU5HKTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VUZXN0Q2Fz
ZS5EZXFwVGVzdD59ICovIHZhciBjaGlsZHJlbiA9IFtdOworCisgICAgICAgICAgICBmb3IgKDs7
KSB7CisKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fRU5E
KSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9jdXJUb2tlbiA9PT0gVG9rZW4uVE9LRU5fR1JPVVApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcGFyc2VTaGFkZXJHcm91cChjaGlsZHJlbik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChtX2N1clRva2VuID09PSBUb2tlbi5UT0tFTl9DQVNFKSB7CisgICAgICAgICAgICAgICAgICAg
IHBhcnNlU2hhZGVyQ2FzZShjaGlsZHJlbik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgndW5leHBlY3RlZCB0b2tlbiB3aGlsZSBwYXJz
aW5nIHNoYWRlciBncm91cDogJyArIG1fY3VyVG9rZW5TdHIpOworICAgICAgICAgICAgICAgICAg
ICB0Y3VUZXN0Q2FzZS5ydW5uZXIudGVybWluYXRlKCk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkdmFuY2VUb2tlbihUb2tlbi5UT0tFTl9FTkQp
OyAvLyBncm91cCBlbmQKKworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0gKi8gdmFyIGdyb3VwTm9kZSA9IHRjdVRlc3RDYXNlLm5ld1Rlc3QobmFtZSwgZGVzY3Jp
cHRpb24sIG51bGwpOworICAgICAgICAgICAgZ3JvdXBOb2RlLnNldENoaWxkcmVuKGNoaWxkcmVu
KTsKKworICAgICAgICAgICAgc2hhZGVyTm9kZUxpc3QucHVzaChncm91cE5vZGUpOworCisgICAg
ICAgIH07CisKKyAgICAgICAgLy8gdW5jb21tZW50IHRvIGV4cG9zZSBwcml2YXRlIGZ1bmN0aW9u
cworICAgICAgICAoZnVuY3Rpb24ob2JqKSB7CisgICAgICAgICAgICBvYmoucHJpdiA9IHsKKyAg
ICAgICAgICAgICAgICBtX2N1clB0cjogbV9jdXJQdHIsCisKKyAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yOiBwYXJzZUVycm9yLAorICAgICAgICAgICAgICAgIHBhcnNlRmxvYXRMaXRlcmFsOiBw
YXJzZUZsb2F0TGl0ZXJhbCwKKyAgICAgICAgICAgICAgICBwYXJzZUludExpdGVyYWw6IHBhcnNl
SW50TGl0ZXJhbCwKKyAgICAgICAgICAgICAgICBwYXJzZVN0cmluZ0xpdGVyYWw6IHBhcnNlU3Ry
aW5nTGl0ZXJhbCwKKyAgICAgICAgICAgICAgICBwYXJzZVNoYWRlclNvdXJjZTogcGFyc2VTaGFk
ZXJTb3VyY2UsCisgICAgICAgICAgICAgICAgYWR2YW5jZVRva2VuVGVzdGVyOiBhZHZhbmNlVG9r
ZW5UZXN0ZXIsCisgICAgICAgICAgICAgICAgYXNzdW1lVG9rZW46IGFzc3VtZVRva2VuLAorICAg
ICAgICAgICAgICAgIG1hcERhdGFUeXBlVG9rZW46IG1hcERhdGFUeXBlVG9rZW4sCisgICAgICAg
ICAgICAgICAgZ2V0VG9rZW5OYW1lOiBnZXRUb2tlbk5hbWUsCisKKyAgICAgICAgICAgICAgICBU
b2tlbjogVG9rZW4sCisKKyAgICAgICAgICAgICAgICBwYXJzZVZhbHVlRWxlbWVudDogcGFyc2VW
YWx1ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgcGFyc2VWYWx1ZTogcGFyc2VWYWx1ZSwKKyAg
ICAgICAgICAgICAgICBwYXJzZVZhbHVlQmxvY2s6IHBhcnNlVmFsdWVCbG9jaywKKyAgICAgICAg
ICAgICAgICBwYXJzZVNoYWRlckNhc2U6IHBhcnNlU2hhZGVyQ2FzZSwKKyAgICAgICAgICAgICAg
ICBwYXJzZVNoYWRlckdyb3VwOiBwYXJzZVNoYWRlckdyb3VwLAorCisgICAgICAgICAgICAgICAg
bm9uZTogZmFsc2UKKyAgICAgICAgICAgIH07CisgICAgICAgIH0odGhpcykpOworICAgICAgICAv
LyovCisgICAgfTsKKworLyoqCisgKiBQYXJzZSB0aGUgdGVzdCBmaWxlIGFuZCBleGVjdXRlIHRo
ZSB0ZXN0IGNhc2VzCisgKiBAcGFyYW0ge3N0cmluZ30gdGVzdE5hbWUgTmFtZSBvZiB0aGUgdGVz
dCBmaWxlICh3aXRob3V0IGV4dGVuc2lvbikKKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWx0ZXIgT3B0
aW9uYWwgZmlsdGVyLiBDb21tb24gc3Vic3RyaW5nIG9mIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMg
dGhhdCBzaG91bGQgYmUgZ2xzU2hhZGVyTGlicmFyeS5ydW4uCisgKi8KK2dsc1NoYWRlckxpYnJh
cnkucnVuID0gZnVuY3Rpb24odGVzdE5hbWUsIGZpbHRlcikgeworICAgIFdlYkdMVGVzdFV0aWxz
LmxvYWRUZXh0RmlsZUFzeW5jKHRlc3ROYW1lICsgJy50ZXN0JywgZnVuY3Rpb24oc3VjY2Vzcywg
Y29udGVudCkgeworICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgdGN1VGVzdENh
c2UucnVubmVyLnRlc3RGaWxlID0gY29udGVudDsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1
bm5lci50ZXN0TmFtZSA9IHRlc3ROYW1lOworICAgICAgICAgICAgdGN1VGVzdENhc2UucnVubmVy
LnJ1bkNhbGxiYWNrKGdsc1NoYWRlckxpYnJhcnkucHJvY2Vzc1Rlc3RGaWxlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0ZhaWxlZCB0byBsb2FkIHRlc3QgZmls
ZTogJyArIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci50ZXJtaW5h
dGUoKTsKKyAgICAgICAgfQorICAgIH0pOworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVk
L2dsc1NoYWRlckxpYnJhcnlDYXNlLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNTaGFkZXJMaWJyYXJ5Q2FzZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTk2NjZkZTU2MjkwYWY5YmFhZGRlMzI1YzdiNTkwNjE0ZDlmY2Q0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNTaGFkZXJMaWJyYXJ5Q2FzZS5qcwpAQCAtMCww
ICsxLDExMzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkg
UHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9p
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAq
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnBy
b3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnlDYXNlJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Blbmds
LmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVT
aGFkZXJVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBnbHNTaGFkZXJM
aWJyYXJ5Q2FzZSA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlckxpYnJhcnlDYXNlOwordmFyIHRj
dVRlc3RDYXNlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXN0Q2FzZTsKK3ZhciBnbHVTaGFkZXJQ
cm9ncmFtID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFtOwordmFyIGdsdVNoYWRl
clV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7Cit2YXIgZ2x1RHJhd1V0aWwg
PSBmcmFtZXdvcmsub3BlbmdsLmdsdURyYXdVdGlsOworCisgICAgLyoqIEBjb25zdCBAdHlwZSB7
bnVtYmVyfSAqLyBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5WSUVXUE9SVF9XSURUSCA9IDEyODsKKyAg
ICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIGdsc1NoYWRlckxpYnJhcnlDYXNlLlZJRVdQ
T1JUX0hFSUdIVCA9IDEyODsKKworLyoqCisgKiBTaGFkZXIgY29tcGlsYXRpb24gZXhwZWN0ZWQg
cmVzdWx0IGVudW0KKyAqIEBlbnVtIHtudW1iZXJ9CisgKi8KK2dsc1NoYWRlckxpYnJhcnlDYXNl
LmV4cGVjdFJlc3VsdCA9IHsKKyAgICBFWFBFQ1RfUEFTUzogMCwKKyAgICBFWFBFQ1RfQ09NUElM
RV9GQUlMOiAxLAorICAgIEVYUEVDVF9MSU5LX0ZBSUw6IDIsCisgICAgRVhQRUNUX0NPTVBJTEVf
TElOS19GQUlMOiAzLAorICAgIEVYUEVDVF9WQUxJREFUSU9OX0ZBSUw6IDQsCisgICAgRVhQRUNU
X0JVSUxEX1NVQ0NFU1NGVUw6IDUKK307CisKKy8qKgorICogVGVzdCBjYXNlIHR5cGUKKyAqIEBl
bnVtIHtudW1iZXJ9CisgKi8KK2dsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlID0geworICAg
IENBU0VUWVBFX0NPTVBMRVRFOiAwLCAvLyE8IEhhcyBhbGwgc2hhZGVycyBzcGVjaWZpZWQgc2Vw
YXJhdGVseS4KKyAgICBDQVNFVFlQRV9WRVJURVhfT05MWTogMSwgLy8hPCAiQm90aCIgY2FzZSwg
dmVydGV4IHNoYWRlciBzdWIgY2FzZS4KKyAgICBDQVNFVFlQRV9GUkFHTUVOVF9PTkxZOiAyIC8v
ITwgIkJvdGgiIGNhc2UsIGZyYWdtZW50IHNoYWRlciBzdWIgY2FzZS4KK307CisKKy8qKgorICog
Z2xzU2hhZGVyTGlicmFyeUNhc2UuQmVmb3JlRHJhd1ZhbGlkYXRvciB0YXJnZXQgdHlwZSBlbnVt
CisgKiBAZW51bSB7bnVtYmVyfQorICovCitnbHNTaGFkZXJMaWJyYXJ5Q2FzZS50YXJnZXRUeXBl
ID0geworICAgIFBST0dSQU06IDAsCisgICAgUElQRUxJTkU6IDEKK307CisKKy8qKgorICogU2hh
ZGVyIGNhc2UgdHlwZSBlbnVtCisgKiBAZW51bSB7bnVtYmVyfQorICovCitnbHNTaGFkZXJMaWJy
YXJ5Q2FzZS5zaGFkZXJDYXNlID0geworICAgIFNUT1JBR0VfSU5QVVQ6IDAsCisgICAgU1RPUkFH
RV9PVVRQVVQ6IDEsCisgICAgU1RPUkFHRV9VTklGT1JNOiAyCit9OworCisvKioKKyAqIENoZWNr
cyBpZiBzaGFkZXIgdXNlcyBpbi9vdXQgcXVhbGlmaWVycyBkZXBlbmRpbmcgb24gdGhlIHZlcnNp
b24KKyAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uCisgKiBAcmV0dXJuIHtib29sZWFufSB2ZXJz
aW9uCisgKi8KK2dsc1NoYWRlckxpYnJhcnlDYXNlLnVzZXNTaGFkZXJJbm91dFF1YWxpZmllcnMg
PSBmdW5jdGlvbih2ZXJzaW9uKSB7CisgICAgc3dpdGNoICh2ZXJzaW9uKSB7CisgICAgICAgIGNh
c2UgJzEwMCc6CisgICAgICAgIGNhc2UgJzEzMCc6CisgICAgICAgIGNhc2UgJzE0MCc6CisgICAg
ICAgIGNhc2UgJzE1MCc6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKKy8qKgorICogQ2hl
Y2tzIGlmIHZlcnNpb24gc3VwcG9ydHMgZnJhZ21lbnQgaGlnaHAgcHJlY2lzaW9uCisgKiBAcGFy
YW0ge3N0cmluZ30gdmVyc2lvbgorICogQHJldHVybiB7Ym9vbGVhbn0gdmVyc2lvbiAsVHJ1ZSB3
aGVuIGlzIGRpZmZlcmVudCBmcm9tIHZlcnNpb24gMTAwCisgKi8KK2dsc1NoYWRlckxpYnJhcnlD
YXNlLnN1cHBvcnRzRnJhZ21lbnRIaWdocCA9IGZ1bmN0aW9uKHZlcnNpb24pIHsKKyAgICByZXR1
cm4gdmVyc2lvbiAhPT0gJzEwMCc7Cit9OworCisvKioKKyAqIFRoaXMgZnVuY3Rpb25zIGJ1aWxk
cyBhIG1hdGNoaW5nIHZlcnRleCBzaGFkZXIgZm9yIGEgJ2JvdGgnIGNhc2UsIHdoZW4KKyAqIHRo
ZSBmcmFnbWVudCBzaGFkZXIgaXMgYmVpbmcgdGVzdGVkLgorICogV2UgbmVlZCB0byBidWlsZCBh
dHRyaWJ1dGVzIGFuZCB2YXJ5aW5ncyBmb3IgZWFjaCAnaW5wdXQnLgorICogQHBhcmFtIHsge3Zh
bHVlczpBcnJheX19IHZhbHVlQmxvY2sKKyAqIEByZXR1cm4ge3N0cmluZ30gcmVzCisgKi8KK2ds
c1NoYWRlckxpYnJhcnlDYXNlLmdlblZlcnRleFNoYWRlciA9IGZ1bmN0aW9uKHZhbHVlQmxvY2sp
IHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHJlcyA9ICcnOworICAgIC8qKiBAdHlw
ZSB7T2JqZWN0fSAqLyB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgdXNlc0lub3V0ID0gZ2xzU2hhZGVyTGlicmFyeUNhc2UudXNl
c1NoYWRlcklub3V0UXVhbGlmaWVycyhzdGF0ZS5jdXJyZW50VGVzdC5zcGVjLnRhcmdldFZlcnNp
b24pOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4SW4gPSB1c2VzSW5vdXQgPyAn
aW4nIDogJ2F0dHJpYnV0ZSc7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciB2dHhPdXQg
PSB1c2VzSW5vdXQgPyAnb3V0JyA6ICd2YXJ5aW5nJzsKKworICAgIHJlcyArPSAnI3ZlcnNpb24g
JyArIHN0YXRlLmN1cnJlbnRUZXN0LnNwZWMudGFyZ2V0VmVyc2lvbiArICdcbic7CisgICAgcmVz
ICs9ICdwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4nOworICAgIHJlcyArPSAncHJlY2lzaW9uIGhp
Z2hwIGludDtcbic7CisgICAgcmVzICs9ICdcbic7CisgICAgcmVzICs9IHZ0eEluICsgJyBoaWdo
cCB2ZWM0IGRFUVBfUG9zaXRpb247XG4nOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dmFsdWVCbG9jay52YWx1ZXMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICB2YXIgdmFsID0gdmFs
dWVCbG9jay52YWx1ZXNbbmR4XTsKKyAgICAgICAgaWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xz
U2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9SQUdFX0lOUFVUKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZsb2F0VHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0
RGF0YVR5cGVGbG9hdFNjYWxhcnModmFsLmRhdGFUeXBlKTsKKyAgICAgICAgICAgIHJlcyArPSB2
dHhJbiArICcgJyArIGZsb2F0VHlwZSArICcgYV8nICsgdmFsLnZhbHVlTmFtZSArICc7XG4nOwor
CisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclR5cGUodmFs
LmRhdGFUeXBlKSA9PT0gJ2Zsb2F0JykKKyAgICAgICAgICAgICAgICByZXMgKz0gdnR4T3V0ICsg
JyAnICsgZmxvYXRUeXBlICsgJyAnICsgdmFsLnZhbHVlTmFtZSArICc7XG4nOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcyArPSB2dHhPdXQgKyAnICcgKyBmbG9hdFR5cGUg
KyAnIHZfJyArIHZhbC52YWx1ZU5hbWUgKyAnO1xuJzsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXMgKz0gJ1xuJzsKKworICAgIC8vIE1haW4gZnVuY3Rpb24uCisgICAgLy8gLSBnbF9Qb3NpdGlv
biA9IGRFUVBfUG9zaXRpb247CisgICAgLy8gLSBmb3IgZWFjaCBpbnB1dDogd3JpdGUgYXR0cmli
dXRlIGRpcmVjdGx5IHRvIHZhcnlpbmcKKyAgICByZXMgKz0gJ3ZvaWQgbWFpbigpXG4nOworICAg
IHJlcyArPSAnIHtcbic7CisgICAgcmVzICs9ICdcdGdsX1Bvc2l0aW9uID0gZEVRUF9Qb3NpdGlv
bjtcbic7CisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdmFsdWVCbG9jay52YWx1ZXMubGVu
Z3RoOyBuZHgrKykgeworICAgICAgICB2YXIgdmFsID0gdmFsdWVCbG9jay52YWx1ZXNbbmR4XTsK
KyAgICAgICAgaWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hh
ZGVyQ2FzZS5TVE9SQUdFX0lOUFVUKSB7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2
YXIgbmFtZSA9IHZhbC52YWx1ZU5hbWU7CisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5n
ZXREYXRhVHlwZVNjYWxhclR5cGUodmFsLmRhdGFUeXBlKSA9PT0gJ2Zsb2F0JykKKyAgICAgICAg
ICAgICAgICByZXMgKz0gJ1x0JyArIG5hbWUgKyAnID0gYV8nICsgbmFtZSArICc7XG4nOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcyArPSAnXHR2XycgKyBuYW1lICsgJyA9
IGFfJyArIG5hbWUgKyAnO1xuJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlcyArPSAnfVxu
JzsKKyAgICByZXR1cm4gcmVzOworfTsKKworLyoqCisgKiBAcGFyYW0geyB7dmFsdWVzOkFycmF5
fX0gdmFsdWVCbG9jaworICogQHBhcmFtIHtib29sZWFufSB1c2VGbG9hdFR5cGVzCisgKiBAcmV0
dXJuIHtzdHJpbmd9IHN0cmVhbQorICovCitnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5nZW5Db21wYXJl
RnVuY3Rpb25zID0gZnVuY3Rpb24odmFsdWVCbG9jaywgdXNlRmxvYXRUeXBlcykgeworICAgIHZh
ciBjbXBUeXBlRm91bmQgPSB7fTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHN0cmVh
bSA9ICcnOworCisgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgdmFsdWVCbG9jay52YWx1ZXMu
bGVuZ3RoOyBuZHgrKykgeworICAgIC8qKiBAdHlwZSB7QXJyYXl9ICovIHZhciB2YWwgPSB2YWx1
ZUJsb2NrLnZhbHVlc1tuZHhdOworICAgICAgICBpZiAodmFsLnN0b3JhZ2VUeXBlID09PSBnbHNT
aGFkZXJMaWJyYXJ5Q2FzZS5zaGFkZXJDYXNlLlNUT1JBR0VfT1VUUFVUKQorICAgICAgICAgICAg
Y21wVHlwZUZvdW5kW2dsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhbC5kYXRhVHlwZSld
ID0gdHJ1ZTsKKworICAgIH0KKyAgICBpZiAodXNlRmxvYXRUeXBlcykgeworICAgICAgICBpZiAo
Y21wVHlwZUZvdW5kWydib29sJ10pIHN0cmVhbSArPSAnYm9vbCBpc09rIChmbG9hdCBhLCBib29s
IGIpIHsgcmV0dXJuICgoYSA+IDAuNSkgPT0gYik7IH1cbic7CisgICAgICAgIGlmIChjbXBUeXBl
Rm91bmRbJ2J2ZWMyJ10pIHN0cmVhbSArPSAnYm9vbCBpc09rICh2ZWMyIGEsIGJ2ZWMyIGIpIHsg
cmV0dXJuIChncmVhdGVyVGhhbihhLCB2ZWMyKDAuNSkpID09IGIpOyB9XG4nOworICAgICAgICBp
ZiAoY21wVHlwZUZvdW5kWydidmVjMyddKSBzdHJlYW0gKz0gJ2Jvb2wgaXNPayAodmVjMyBhLCBi
dmVjMyBiKSB7IHJldHVybiAoZ3JlYXRlclRoYW4oYSwgdmVjMygwLjUpKSA9PSBiKTsgfVxuJzsK
KyAgICAgICAgaWYgKGNtcFR5cGVGb3VuZFsnYnZlYzQnXSkgc3RyZWFtICs9ICdib29sIGlzT2sg
KHZlYzQgYSwgYnZlYzQgYikgeyByZXR1cm4gKGdyZWF0ZXJUaGFuKGEsIHZlYzQoMC41KSkgPT0g
Yik7IH1cbic7CisgICAgICAgIGlmIChjbXBUeXBlRm91bmRbJ2ludCddKSBzdHJlYW0gKz0gJ2Jv
b2wgaXNPayAoZmxvYXQgYSwgaW50IGIpIHsgZmxvYXQgYXRlbXAgPSBhKzAuNTsgcmV0dXJuIChm
bG9hdChiKSA8PSBhdGVtcCAmJiBhdGVtcCA8PSBmbG9hdChiKzEpKTsgfVxuJzsKKyAgICAgICAg
aWYgKGNtcFR5cGVGb3VuZFsnaXZlYzInXSkgc3RyZWFtICs9ICdib29sIGlzT2sgKHZlYzIgYSwg
aXZlYzIgYikgeyByZXR1cm4gKGl2ZWMyKGZsb29yKGEgKyAwLjUpKSA9PSBiKTsgfVxuJzsKKyAg
ICAgICAgaWYgKGNtcFR5cGVGb3VuZFsnaXZlYzMnXSkgc3RyZWFtICs9ICdib29sIGlzT2sgKHZl
YzMgYSwgaXZlYzMgYikgeyByZXR1cm4gKGl2ZWMzKGZsb29yKGEgKyAwLjUpKSA9PSBiKTsgfVxu
JzsKKyAgICAgICAgaWYgKGNtcFR5cGVGb3VuZFsnaXZlYzQnXSkgc3RyZWFtICs9ICdib29sIGlz
T2sgKHZlYzQgYSwgaXZlYzQgYikgeyByZXR1cm4gKGl2ZWM0KGZsb29yKGEgKyAwLjUpKSA9PSBi
KTsgfVxuJzsKKyAgICAgICAgaWYgKGNtcFR5cGVGb3VuZFsndWludCddKSBzdHJlYW0gKz0gJ2Jv
b2wgaXNPayAoZmxvYXQgYSwgdWludCBiKSB7IGZsb2F0IGF0ZW1wID0gYSswLjU7IHJldHVybiAo
ZmxvYXQoYikgPD0gYXRlbXAgJiYgYXRlbXAgPD0gZmxvYXQoYisxdSkpOyB9XG4nOworICAgICAg
ICBpZiAoY21wVHlwZUZvdW5kWyd1dmVjMiddKSBzdHJlYW0gKz0gJ2Jvb2wgaXNPayAodmVjMiBh
LCB1dmVjMiBiKSB7IHJldHVybiAodXZlYzIoZmxvb3IoYSArIDAuNSkpID09IGIpOyB9XG4nOwor
ICAgICAgICBpZiAoY21wVHlwZUZvdW5kWyd1dmVjMyddKSBzdHJlYW0gKz0gJ2Jvb2wgaXNPayAo
dmVjMyBhLCB1dmVjMyBiKSB7IHJldHVybiAodXZlYzMoZmxvb3IoYSArIDAuNSkpID09IGIpOyB9
XG4nOworICAgICAgICBpZiAoY21wVHlwZUZvdW5kWyd1dmVjNCddKSBzdHJlYW0gKz0gJ2Jvb2wg
aXNPayAodmVjNCBhLCB1dmVjNCBiKSB7IHJldHVybiAodXZlYzQoZmxvb3IoYSArIDAuNSkpID09
IGIpOyB9XG4nOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjbXBUeXBlRm91bmRbJ2Jvb2wn
XSkgc3RyZWFtICs9ICdib29sIGlzT2sgKGJvb2wgYSwgYm9vbCBiKSB7IHJldHVybiAoYSA9PSBi
KTsgfVxuJzsKKyAgICAgICAgaWYgKGNtcFR5cGVGb3VuZFsnYnZlYzInXSkgc3RyZWFtICs9ICdi
b29sIGlzT2sgKGJ2ZWMyIGEsIGJ2ZWMyIGIpIHsgcmV0dXJuIChhID09IGIpOyB9XG4nOworICAg
ICAgICBpZiAoY21wVHlwZUZvdW5kWydidmVjMyddKSBzdHJlYW0gKz0gJ2Jvb2wgaXNPayAoYnZl
YzMgYSwgYnZlYzMgYikgeyByZXR1cm4gKGEgPT0gYik7IH1cbic7CisgICAgICAgIGlmIChjbXBU
eXBlRm91bmRbJ2J2ZWM0J10pIHN0cmVhbSArPSAnYm9vbCBpc09rIChidmVjNCBhLCBidmVjNCBi
KSB7IHJldHVybiAoYSA9PSBiKTsgfVxuJzsKKyAgICAgICAgaWYgKGNtcFR5cGVGb3VuZFsnaW50
J10pIHN0cmVhbSArPSAnYm9vbCBpc09rIChpbnQgYSwgaW50IGIpIHsgcmV0dXJuIChhID09IGIp
OyB9XG4nOworICAgICAgICBpZiAoY21wVHlwZUZvdW5kWydpdmVjMiddKSBzdHJlYW0gKz0gJ2Jv
b2wgaXNPayAoaXZlYzIgYSwgaXZlYzIgYikgeyByZXR1cm4gKGEgPT0gYik7IH1cbic7CisgICAg
ICAgIGlmIChjbXBUeXBlRm91bmRbJ2l2ZWMzJ10pIHN0cmVhbSArPSAnYm9vbCBpc09rIChpdmVj
MyBhLCBpdmVjMyBiKSB7IHJldHVybiAoYSA9PSBiKTsgfVxuJzsKKyAgICAgICAgaWYgKGNtcFR5
cGVGb3VuZFsnaXZlYzQnXSkgc3RyZWFtICs9ICdib29sIGlzT2sgKGl2ZWM0IGEsIGl2ZWM0IGIp
IHsgcmV0dXJuIChhID09IGIpOyB9XG4nOworICAgICAgICBpZiAoY21wVHlwZUZvdW5kWyd1aW50
J10pIHN0cmVhbSArPSAnYm9vbCBpc09rICh1aW50IGEsIHVpbnQgYikgeyByZXR1cm4gKGEgPT0g
Yik7IH1cbic7CisgICAgICAgIGlmIChjbXBUeXBlRm91bmRbJ3V2ZWMyJ10pIHN0cmVhbSArPSAn
Ym9vbCBpc09rICh1dmVjMiBhLCB1dmVjMiBiKSB7IHJldHVybiAoYSA9PSBiKTsgfVxuJzsKKyAg
ICAgICAgaWYgKGNtcFR5cGVGb3VuZFsndXZlYzMnXSkgc3RyZWFtICs9ICdib29sIGlzT2sgKHV2
ZWMzIGEsIHV2ZWMzIGIpIHsgcmV0dXJuIChhID09IGIpOyB9XG4nOworICAgICAgICBpZiAoY21w
VHlwZUZvdW5kWyd1dmVjNCddKSBzdHJlYW0gKz0gJ2Jvb2wgaXNPayAodXZlYzQgYSwgdXZlYzQg
YikgeyByZXR1cm4gKGEgPT0gYik7IH1cbic7CisgICAgfQorCisgICAgaWYgKGNtcFR5cGVGb3Vu
ZFsnZmxvYXQnXSkKKyAgICAgICAgc3RyZWFtICs9ICdib29sIGlzT2sgKGZsb2F0IGEsIGZsb2F0
IGIsIGZsb2F0IGVwcykgeyByZXR1cm4gKGFicyhhLWIpIDw9IChlcHMqYWJzKGIpICsgZXBzKSk7
IH1cbic7CisgICAgaWYgKGNtcFR5cGVGb3VuZFsndmVjMiddKQorICAgICAgICBzdHJlYW0gKz0g
J2Jvb2wgaXNPayAodmVjMiBhLCB2ZWMyIGIsIGZsb2F0IGVwcykgeyByZXR1cm4gYWxsKGxlc3NU
aGFuRXF1YWwoYWJzKGEtYiksIChlcHMqYWJzKGIpICsgZXBzKSkpOyB9XG4nOworICAgIGlmIChj
bXBUeXBlRm91bmRbJ3ZlYzMnXSkKKyAgICAgICAgc3RyZWFtICs9ICdib29sIGlzT2sgKHZlYzMg
YSwgdmVjMyBiLCBmbG9hdCBlcHMpIHsgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGFicyhhLWIp
LCAoZXBzKmFicyhiKSArIGVwcykpKTsgfVxuJzsKKyAgICBpZiAoY21wVHlwZUZvdW5kWyd2ZWM0
J10pCisgICAgICAgIHN0cmVhbSArPSAnYm9vbCBpc09rICh2ZWM0IGEsIHZlYzQgYiwgZmxvYXQg
ZXBzKSB7IHJldHVybiBhbGwobGVzc1RoYW5FcXVhbChhYnMoYS1iKSwgKGVwcyphYnMoYikgKyBl
cHMpKSk7IH1cbic7CisKKyAgICBpZiAoY21wVHlwZUZvdW5kWydtYXQyJ10pCisgICAgICAgIHN0
cmVhbSArPSAnYm9vbCBpc09rIChtYXQyIGEsIG1hdDIgYiwgZmxvYXQgZXBzKSB7IHZlYzIgZGlm
ZiA9IG1heChhYnMoYVswXS1iWzBdKSwgYWJzKGFbMV0tYlsxXSkpOyByZXR1cm4gYWxsKGxlc3NU
aGFuRXF1YWwoZGlmZiwgdmVjMihlcHMpKSk7IH1cbic7CisgICAgaWYgKGNtcFR5cGVGb3VuZFsn
bWF0MngzJ10pCisgICAgICAgIHN0cmVhbSArPSAnYm9vbCBpc09rIChtYXQyeDMgYSwgbWF0Mngz
IGIsIGZsb2F0IGVwcykgeyB2ZWMzIGRpZmYgPSBtYXgoYWJzKGFbMF0tYlswXSksIGFicyhhWzFd
LWJbMV0pKTsgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGRpZmYsIHZlYzMoZXBzKSkpOyB9XG4n
OworICAgIGlmIChjbXBUeXBlRm91bmRbJ21hdDJ4NCddKQorICAgICAgICBzdHJlYW0gKz0gJ2Jv
b2wgaXNPayAobWF0Mng0IGEsIG1hdDJ4NCBiLCBmbG9hdCBlcHMpIHsgdmVjNCBkaWZmID0gbWF4
KGFicyhhWzBdLWJbMF0pLCBhYnMoYVsxXS1iWzFdKSk7IHJldHVybiBhbGwobGVzc1RoYW5FcXVh
bChkaWZmLCB2ZWM0KGVwcykpKTsgfVxuJzsKKyAgICBpZiAoY21wVHlwZUZvdW5kWydtYXQzeDIn
XSkKKyAgICAgICAgc3RyZWFtICs9ICdib29sIGlzT2sgKG1hdDN4MiBhLCBtYXQzeDIgYiwgZmxv
YXQgZXBzKSB7IHZlYzIgZGlmZiA9IG1heChtYXgoYWJzKGFbMF0tYlswXSksIGFicyhhWzFdLWJb
MV0pKSwgYWJzKGFbMl0tYlsyXSkpOyByZXR1cm4gYWxsKGxlc3NUaGFuRXF1YWwoZGlmZiwgdmVj
MihlcHMpKSk7IH1cbic7CisgICAgaWYgKGNtcFR5cGVGb3VuZFsnbWF0MyddKQorICAgICAgICBz
dHJlYW0gKz0gJ2Jvb2wgaXNPayAobWF0MyBhLCBtYXQzIGIsIGZsb2F0IGVwcykgeyB2ZWMzIGRp
ZmYgPSBtYXgobWF4KGFicyhhWzBdLWJbMF0pLCBhYnMoYVsxXS1iWzFdKSksIGFicyhhWzJdLWJb
Ml0pKTsgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGRpZmYsIHZlYzMoZXBzKSkpOyB9XG4nOwor
ICAgIGlmIChjbXBUeXBlRm91bmRbJ21hdDN4NCddKQorICAgICAgICBzdHJlYW0gKz0gJ2Jvb2wg
aXNPayAobWF0M3g0IGEsIG1hdDN4NCBiLCBmbG9hdCBlcHMpIHsgdmVjNCBkaWZmID0gbWF4KG1h
eChhYnMoYVswXS1iWzBdKSwgYWJzKGFbMV0tYlsxXSkpLCBhYnMoYVsyXS1iWzJdKSk7IHJldHVy
biBhbGwobGVzc1RoYW5FcXVhbChkaWZmLCB2ZWM0KGVwcykpKTsgfVxuJzsKKyAgICBpZiAoY21w
VHlwZUZvdW5kWydtYXQ0eDInXSkKKyAgICAgICAgc3RyZWFtICs9ICdib29sIGlzT2sgKG1hdDR4
MiBhLCBtYXQ0eDIgYiwgZmxvYXQgZXBzKSB7IHZlYzIgZGlmZiA9IG1heChtYXgoYWJzKGFbMF0t
YlswXSksIGFicyhhWzFdLWJbMV0pKSwgbWF4KGFicyhhWzJdLWJbMl0pLCBhYnMoYVszXS1iWzNd
KSkpOyByZXR1cm4gYWxsKGxlc3NUaGFuRXF1YWwoZGlmZiwgdmVjMihlcHMpKSk7IH1cbic7Cisg
ICAgaWYgKGNtcFR5cGVGb3VuZFsnbWF0NHgzJ10pCisgICAgICAgIHN0cmVhbSArPSAnYm9vbCBp
c09rIChtYXQ0eDMgYSwgbWF0NHgzIGIsIGZsb2F0IGVwcykgeyB2ZWMzIGRpZmYgPSBtYXgobWF4
KGFicyhhWzBdLWJbMF0pLCBhYnMoYVsxXS1iWzFdKSksIG1heChhYnMoYVsyXS1iWzJdKSwgYWJz
KGFbM10tYlszXSkpKTsgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGRpZmYsIHZlYzMoZXBzKSkp
OyB9XG4nOworICAgIGlmIChjbXBUeXBlRm91bmRbJ21hdDQnXSkKKyAgICAgICAgc3RyZWFtICs9
ICdib29sIGlzT2sgKG1hdDQgYSwgbWF0NCBiLCBmbG9hdCBlcHMpIHsgdmVjNCBkaWZmID0gbWF4
KG1heChhYnMoYVswXS1iWzBdKSwgYWJzKGFbMV0tYlsxXSkpLCBtYXgoYWJzKGFbMl0tYlsyXSks
IGFicyhhWzNdLWJbM10pKSk7IHJldHVybiBhbGwobGVzc1RoYW5FcXVhbChkaWZmLCB2ZWM0KGVw
cykpKTsgfVxuJzsKKworICAgIHJldHVybiBzdHJlYW07Cit9OworCisvKioKKyAqIEBwYXJhbSB7
c3RyaW5nfSBkc3RWZWM0VmFyCisgKiBAcGFyYW0geyB7dmFsdWVzOkFycmF5fX0gdmFsdWVCbG9j
aworICogQHBhcmFtIHtzdHJpbmd9IG5vbkZsb2F0TmFtZVByZWZpeAorICogQHBhcmFtIHs/c3Ry
aW5nPX0gY2hlY2tWYXJOYW1lCisgKiBAcmV0dXJuIHtzdHJpbmd9IG91dHB1dAorICovCitnbHNT
aGFkZXJMaWJyYXJ5Q2FzZS5nZW5Db21wYXJlT3AgPSBmdW5jdGlvbihkc3RWZWM0VmFyLCB2YWx1
ZUJsb2NrLCBub25GbG9hdE5hbWVQcmVmaXgsIGNoZWNrVmFyTmFtZSkgeworCisgICAgLyoqIEB0
eXBlIHtib29sZWFufSAqLyB2YXIgaXNGaXJzdE91dHB1dCA9IHRydWU7CisgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHZhciBvdXRwdXQgPSAnJzsKKworICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHZhbHVlQmxvY2sudmFsdWVzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAvKiogQHR5cGUge0Fy
cmF5fSAqLyB2YXIgdmFsID0gdmFsdWVCbG9jay52YWx1ZXNbbmR4XTsKKyAgICAvKiogQHR5cGUg
e3N0cmluZ30gKi8gdmFyIHZhbHVlTmFtZSA9IHZhbC52YWx1ZU5hbWU7CisKKyAgICAgICAgaWYg
KHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9S
QUdFX09VVFBVVCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgb25seSBpbnRlcmVz
dGVkIGluIG9uZSB2YXJpYWJsZSAodGhlbiBza2lwIGlmIG5vdCB0aGUgcmlnaHQgb25lKS4KKyAg
ICAgICAgICAgIGlmIChjaGVja1Zhck5hbWUgJiYgKHZhbHVlTmFtZSAhPT0gY2hlY2tWYXJOYW1l
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gUHJlZml4Lgor
ICAgICAgICAgICAgaWYgKGlzRmlyc3RPdXRwdXQpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQg
Kz0gJ2Jvb2wgUkVTID0gJzsKKyAgICAgICAgICAgICAgICBpc0ZpcnN0T3V0cHV0ID0gZmFsc2U7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1JFUyA9IFJF
UyAmJiAnOworCisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhY3R1YWwgY29tcGFyaXNvbi4KKyAg
ICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZSh2YWwuZGF0
YVR5cGUpID09PSAnZmxvYXQnKQorICAgICAgICAgICAgICAgIG91dHB1dCArPSAnaXNPaygnICsg
dmFsdWVOYW1lICsgJywgcmVmXycgKyB2YWx1ZU5hbWUgKyAnLCAwLjA1KTtcbic7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICdpc09rKCcgKyBub25GbG9hdE5h
bWVQcmVmaXggKyB2YWx1ZU5hbWUgKyAnLCByZWZfJyArIHZhbHVlTmFtZSArICcpO1xuJzsKKyAg
ICAgICAgfQorICAgICAgICAvLyBcbm90ZSBVbmlmb3JtcyBhcmUgYWxyZWFkeSBkZWNsYXJlZCBp
biBzaGFkZXIuCisgICAgfQorCisgICAgaWYgKGlzRmlyc3RPdXRwdXQpCisgICAgICAgIG91dHB1
dCArPSBkc3RWZWM0VmFyICsgJyA9IHZlYzQoMS4wKTtcbic7IC8vIFx0b2RvIFtwZXRyaV0gU2hv
dWxkIHdlIGdpdmUgd2FybmluZyBpZiBub3QgZXhwZWN0LWZhaWx1cmUgY2FzZT8KKyAgICBlbHNl
CisgICAgICAgIG91dHB1dCArPSBkc3RWZWM0VmFyICsgJyA9IHZlYzQoUkVTLCBSRVMsIFJFUywg
MS4wKTtcbic7CisKKyAgICByZXR1cm4gb3V0cHV0OworfTsKKworLyoqCisgKiBAcGFyYW0geyB7
dmFsdWVzOkFycmF5fX0gdmFsdWVCbG9jaworICogQHJldHVybiB7c3RyaW5nfSBzaGFkZXIKKyAq
LworZ2xzU2hhZGVyTGlicmFyeUNhc2UuZ2VuRnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlvbih2YWx1
ZUJsb2NrKSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzaGFkZXIgPSAnJzsKKyAg
ICAvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOwor
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHVzZXNJbm91dCA9IGdsc1NoYWRlckxpYnJh
cnlDYXNlLnVzZXNTaGFkZXJJbm91dFF1YWxpZmllcnMoc3RhdGUuY3VycmVudFRlc3Quc3BlYy50
YXJnZXRWZXJzaW9uKTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZ0eEluID0gdXNl
c0lub3V0ID8gJ2luJyA6ICdhdHRyaWJ1dGUnOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2
YXIgdnR4T3V0ID0gdXNlc0lub3V0ID8gJ291dCcgOiAndmFyeWluZyc7CisgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgY3VzdG9tQ29sb3JPdXQgPSB1c2VzSW5vdXQ7CisgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnSW4gPSB1c2VzSW5vdXQgPyAnaW4nIDogJ3Zhcnlpbmcn
OworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcHJlYyA9IGdsc1NoYWRlckxpYnJhcnlD
YXNlLnN1cHBvcnRzRnJhZ21lbnRIaWdocChzdGF0ZS5jdXJyZW50VGVzdC5zcGVjLnRhcmdldFZl
cnNpb24pID8gJ2hpZ2hwJyA6ICdtZWRpdW1wJzsKKworICAgIHNoYWRlciArPSAnI3ZlcnNpb24g
JyArIHN0YXRlLmN1cnJlbnRUZXN0LnNwZWMudGFyZ2V0VmVyc2lvbiArICdcbic7CisKKyAgICBz
aGFkZXIgKz0gJ3ByZWNpc2lvbiAnICsgcHJlYyArICcgZmxvYXQ7XG4nOworICAgIHNoYWRlciAr
PSAncHJlY2lzaW9uICcgKyBwcmVjICsgJyBpbnQ7XG4nOworICAgIHNoYWRlciArPSAnXG4nOwor
CisgICAgaWYgKGN1c3RvbUNvbG9yT3V0KSB7CisgICAgICAgIHNoYWRlciArPSAnbGF5b3V0KGxv
Y2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xvcjtcbic7CisgICAgICAg
IHNoYWRlciArPSAnXG4nOworICAgIH0KKworICAgIHNoYWRlciArPSBnbHNTaGFkZXJMaWJyYXJ5
Q2FzZS5nZW5Db21wYXJlRnVuY3Rpb25zKHZhbHVlQmxvY2ssIHRydWUpOworICAgIHNoYWRlciAr
PSAnXG4nOworCisgICAgLy8gRGVjbGFyYXRpb25zICh2YXJ5aW5nLCByZWZlcmVuY2UgZm9yIGVh
Y2ggb3V0cHV0KS4KKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB2YWx1ZUJsb2NrLnZhbHVl
cy5sZW5ndGg7IG5keCsrKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheX0gKi8gdmFyIHZhbCA9IHZh
bHVlQmxvY2sudmFsdWVzW25keF07CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmbG9h
dFR5cGUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRTY2FsYXJzKHZhbC5kYXRhVHlw
ZSk7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciByZWZUeXBlID0gZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU5hbWUodmFsLmRhdGFUeXBlKTsKKworICAgICAgICBpZiAodmFsLnN0b3Jh
Z2VUeXBlID09IGdsc1NoYWRlckxpYnJhcnlDYXNlLnNoYWRlckNhc2UuU1RPUkFHRV9PVVRQVVQp
IHsKKyAgICAgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyVHlwZSh2
YWwuZGF0YVR5cGUpID09PSAnZmxvYXQnKQorICAgICAgICAgICAgICAgIHNoYWRlciArPSBmcmFn
SW4gKyAnICcgKyBmbG9hdFR5cGUgKyAnICcgKyB2YWwudmFsdWVOYW1lICsgJztcbic7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2hhZGVyICs9IGZyYWdJbiArICcgJyArIGZs
b2F0VHlwZSArICcgdl8nICsgdmFsLnZhbHVlTmFtZSArICc7XG4nOworCisgICAgICAgICAgICBz
aGFkZXIgKz0gJ3VuaWZvcm0gJyArIHJlZlR5cGUgKyAnIHJlZl8nICsgdmFsLnZhbHVlTmFtZSAr
ICc7XG4nOworICAgICAgICB9CisgICAgfQorCisgICAgc2hhZGVyICs9ICdcbic7CisgICAgc2hh
ZGVyICs9ICd2b2lkIG1haW4oKVxuJzsKKyAgICBzaGFkZXIgKz0gJyB7XG4nOworCisgICAgc2hh
ZGVyICs9ICdcdCc7CisgICAgc2hhZGVyICs9IGdsc1NoYWRlckxpYnJhcnlDYXNlLmdlbkNvbXBh
cmVPcChjdXN0b21Db2xvck91dCA/ICdkRVFQX0ZyYWdDb2xvcicgOiAnZ2xfRnJhZ0NvbG9yJywg
dmFsdWVCbG9jaywgJ3ZfJywgbnVsbCk7CisKKyAgICBzaGFkZXIgKz0gJ31cbic7CisgICAgcmV0
dXJuIHNoYWRlcjsKK307CisKK2dsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VSZXF1aXJlbWVudCA9
IChmdW5jdGlvbigpIHsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwordmFyIENhc2VSZXF1
aXJlbWVudCA9IGZ1bmN0aW9uKCkgeworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBzaGFkZXJU
eXBlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCisgICAgdGhpcy5pc0FmZmVjdGVkID0gZnVu
Y3Rpb24oc2hhZGVyVHlwZSkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2hh
ZGVyVHlwZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAodGhpcy5zaGFkZXJUeXBlc1tp
XSA9PT0gc2hhZGVyVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICB0aGlzLmNoZWNrUmVxdWlyZW1lbnRzID0gZnVu
Y3Rpb24oZ2wpIHsKKyAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gcmVxdWlyZW1lbnRUeXBlLkVY
VEVOU0lPTikgeworICAgICAgICAgICAgdmFyIGV4dG5zID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucygpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRucy5sZW5ndGg7IGkr
KykKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMucmVxdWlyZW1lbnRz
Lmxlbmd0aDsgaisrKQorICAgICAgICAgICAgICAgICAgICBpZiAoZXh0bnNbaV0gPT09IHRoaXMu
cmVxdWlyZW1lbnRzW2pdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cHBvcnRl
ZEV4dGVuc2lvbiA9IHRoaXMucmVxdWlyZW1lbnRzW2pdOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0
aGlzLnJlcXVpcmVtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgRXJy
b3IoJ1Rlc3QgcmVxdWlyZXMgZXh0ZW5zaW9uIG9mICcgKyB0aGlzLnJlcXVpcmVtZW50c1swXSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Rlc3QgcmVx
dWlyZXMgYW55IGV4dGVuc2lvbiBvZiAnICsgdGhpcy5yZXF1aXJlbWVudHMpOworICAgICAgICB9
IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gcmVxdWlyZW1lbnRUeXBlLklNUExFTUVOVEFUSU9OX0xJ
TUlUKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBnbC5nZXRQYXJhbWV0ZXIodGhpcy5lbnVt
TmFtZSk7CisgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09IGds
Lk5PX0VSUk9SLCAnRmFpbGVkIHRvIHJlYWQgcGFyYW1ldGVyICcgKyB0aGlzLmVudW1OYW1lLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGlmICghKHZhbHVlID4gdGhpcy5yZWZlcmVuY2VW
YWx1ZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Rlc3QgcmVxdWlyZXMgJyArIHRo
aXMuZW51bU5hbWUgKyAnICgnICsgdmFsdWUgKyAnKSA+ICcgKyB0aGlzLnJlZmVyZW5jZVZhbHVl
KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0aGlzLmdldFN1cHBvcnRlZEV4dGVuc2lvbiA9
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb247Cisg
ICAgfTsKKworfTsKKwordmFyIGNyZWF0ZUFueUV4dGVuc2lvblJlcXVpcmVtZW50ID0gZnVuY3Rp
b24ocmVxdWlyZW1lbnRzLCBzaGFkZXJUeXBlcykgeworICAgIHZhciBjciA9IG5ldyBDYXNlUmVx
dWlyZW1lbnQoKTsKKyAgICBjci50eXBlID0gcmVxdWlyZW1lbnRUeXBlLkVYVEVOU0lPTjsKKyAg
ICBjci5yZXF1aXJlbWVudHMgPSByZXF1aXJlbWVudHM7CisgICAgY3Iuc2hhZGVyVHlwZXMgPSBz
aGFkZXJUeXBlczsKKyAgICByZXR1cm4gY3I7Cit9OworCit2YXIgY3JlYXRlTGltaXRSZXF1aXJl
bWVudCA9IGZ1bmN0aW9uKGVudW1OYW1lLCByZWYpIHsKKyAgICB2YXIgY3IgPSBuZXcgQ2FzZVJl
cXVpcmVtZW50KCk7CisgICAgY3IudHlwZSA9IHJlcXVpcmVtZW50VHlwZS5JTVBMRU1FTlRBVElP
Tl9MSU1JVDsKKyAgICBjci5lbnVtTmFtZSA9IGVudW1OYW1lOworICAgIGNyLnJlZmVyZW5jZVZh
bHVlID0gcmVmOworfTsKKworLyoqCisgKiBAZW51bSB7bnVtYmVyfQorICovCit2YXIgcmVxdWly
ZW1lbnRUeXBlID0geworICAgIEVYVEVOU0lPTjogMCwKKyAgICBJTVBMRU1FTlRBVElPTl9MSU1J
VDogMQorfTsKKworcmV0dXJuIHsKKyAgICBjcmVhdGVBbnlFeHRlbnNpb25SZXF1aXJlbWVudDog
Y3JlYXRlQW55RXh0ZW5zaW9uUmVxdWlyZW1lbnQsCisgICAgY3JlYXRlTGltaXRSZXF1aXJlbWVu
dDogY3JlYXRlTGltaXRSZXF1aXJlbWVudCwKKyAgICByZXF1aXJlbWVudFR5cGU6IHJlcXVpcmVt
ZW50VHlwZQorfTsKKworfSgpKTsKKworLyoqIFNwZWNpYWxpemUgYSBzaGFkZXIgb25seSBmb3Ig
dGhlIHZlcnRleCB0ZXN0IGNhc2UuCisgKiBAcGFyYW0ge3N0cmluZ30gYmFzZUNvZGUKKyAqIEBw
YXJhbSB7bnVtYmVyfSBzaGFkZXJUeXBlCisgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IHJlcXVp
cmVtZW50cworICogQHJldHVybiB7c3RyaW5nfSByZXN1bHRCdWYKKyAqLworZ2xzU2hhZGVyTGli
cmFyeUNhc2UuaW5qZWN0RXh0ZW5zaW9uUmVxdWlyZW1lbnRzID0gZnVuY3Rpb24oYmFzZUNvZGUs
IHNoYWRlclR5cGUsIHJlcXVpcmVtZW50cykgeworLyoqCisgKiBAcGFyYW0ge0FycmF5PE9iamVj
dD59IHJlcXVpcmVtZW50cworICogQHBhcmFtIHtudW1iZXJ9IHNoYWRlclR5cGUKKyAqIEByZXR1
cm4ge3N0cmluZ30gYnVmCisgKi8KKyAgICB2YXIgZ2VuZXJhdGVFeHRlbnNpb25TdGF0ZW1lbnRz
ID0gZnVuY3Rpb24ocmVxdWlyZW1lbnRzLCBzaGFkZXJUeXBlKSB7CisgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB2YXIgYnVmID0gJyc7CisKKyAgICAgICAgaWYgKHJlcXVpcmVtZW50cykK
KyAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHJlcXVpcmVtZW50cy5sZW5ndGg7
IG5keCsrKQorICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlbWVudHNbbmR4XS50eXBlID09PSBn
bHNTaGFkZXJMaWJyYXJ5Q2FzZS5jYXNlUmVxdWlyZW1lbnQucmVxdWlyZW1lbnRUeXBlLkVYVEVO
U0lPTiAmJgorICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHNbbmR4XS5pc0FmZmVjdGVk
KHNoYWRlclR5cGUpKQorICAgICAgICAgICAgICAgICAgICBidWYgKz0gJyNleHRlbnNpb24gJyAr
IHJlcXVpcmVtZW50c1tuZHhdLmdldFN1cHBvcnRlZEV4dGVuc2lvbigpICsgJyA6IHJlcXVpcmVc
bic7CisKKyAgICAgICAgcmV0dXJuIGJ1ZjsKKyAgICB9OworCisgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciBleHRlbnNpb25zID0gZ2VuZXJhdGVFeHRlbnNpb25TdGF0ZW1lbnRzKHJlcXVp
cmVtZW50cywgc2hhZGVyVHlwZSk7CisKKyAgICBpZiAoZXh0ZW5zaW9ucy5sZW5ndGggPT09IDAp
CisgICAgICAgIHJldHVybiBiYXNlQ29kZTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5n
Pn0gKi8gdmFyIHNwbGl0TGluZXMgPSBiYXNlQ29kZS5zcGxpdCgnXG4nKTsKKyAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBmaXJzdE5vblByZXByb2Nlc3NvckxpbmUgPSB0cnVlOworICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcmVzdWx0QnVmID0gJyc7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNwbGl0TGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgLyoqIEBjb25z
dCBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzUHJlcHJvY2Vzc29yRGlyZWN0aXZlID0gKHNwbGl0
TGluZXNbaV0ubWF0Y2goL15ccyojLykgIT09IG51bGwpOworCisgICAgICAgIGlmICghaXNQcmVw
cm9jZXNzb3JEaXJlY3RpdmUgJiYgZmlyc3ROb25QcmVwcm9jZXNzb3JMaW5lKSB7CisgICAgICAg
ICAgICBmaXJzdE5vblByZXByb2Nlc3NvckxpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJlc3Vs
dEJ1ZiArPSBleHRlbnNpb25zOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0QnVmICs9IHNw
bGl0TGluZXNbaV0gKyAnXG4nOworICAgIH0KKworICAgIHJldHVybiByZXN1bHRCdWY7Cit9Owor
CisvKiogU3BlY2lhbGl6ZSBhIHNoYWRlciBmb3IgdGhlIHZlcnRleCBzaGFkZXIgdGVzdCBjYXNl
LgorICogQHBhcmFtIHtzdHJpbmd9IHNyYworICogQHBhcmFtIHsge3ZhbHVlczpBcnJheX19IHZh
bHVlQmxvY2sKKyAqIEByZXR1cm4ge3N0cmluZ30gd2l0aEV4dAorICovCitnbHNTaGFkZXJMaWJy
YXJ5Q2FzZS5zcGVjaWFsaXplVmVydGV4U2hhZGVyID0gZnVuY3Rpb24oc3JjLCB2YWx1ZUJsb2Nr
KSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkZWNsID0gJyc7CisgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciBzZXR1cCA9ICcnOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyB2YXIgb3V0cHV0ID0gJyc7CisgICAgLyoqIEB0eXBlIHtPYmplY3R9ICovIHZhciBzdGF0ZSA9
IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciB1c2Vz
SW5vdXQgPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS51c2VzU2hhZGVySW5vdXRRdWFsaWZpZXJzKHN0
YXRlLmN1cnJlbnRUZXN0LnNwZWMudGFyZ2V0VmVyc2lvbik7CisgICAgLyoqIEB0eXBlIHtzdHJp
bmd9ICovIHZhciB2dHhJbiA9IHVzZXNJbm91dCA/ICdpbicgOiAnYXR0cmlidXRlJzsKKyAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZ0eE91dCA9IHVzZXNJbm91dCA/ICdvdXQnIDogJ3Zh
cnlpbmcnOworCisgICAgLy8gT3V0cHV0ICh3cml0ZSBvdXQgcG9zaXRpb24pLgorICAgIG91dHB1
dCArPSAnZ2xfUG9zaXRpb24gPSBkRVFQX1Bvc2l0aW9uO1xuJzsKKworICAgIC8vIERlY2xhcmF0
aW9ucyAocG9zaXRpb24gKyBhdHRyaWJ1dGUgZm9yIGVhY2ggaW5wdXQsIHZhcnlpbmcgZm9yIGVh
Y2ggb3V0cHV0KS4KKyAgICBkZWNsICs9IHZ0eEluICsgJyBoaWdocCB2ZWM0IGRFUVBfUG9zaXRp
b247XG4nOworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHZhbHVlQmxvY2sudmFsdWVzLmxl
bmd0aDsgbmR4KyspIHsKKyAgICAvKiogQHR5cGUge0FycmF5fSAqLyB2YXIgdmFsID0gdmFsdWVC
bG9jay52YWx1ZXNbbmR4XTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZhbHVlTmFt
ZSA9IHZhbC52YWx1ZU5hbWU7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmbG9hdFR5
cGUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRTY2FsYXJzKHZhbC5kYXRhVHlwZSk7
CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkYXRhVHlwZU5hbWUgPSBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlTmFtZSh2YWwuZGF0YVR5cGUpOworCisgICAgICAgIGlmICh2YWwuc3Rv
cmFnZVR5cGUgPT09IGdsc1NoYWRlckxpYnJhcnlDYXNlLnNoYWRlckNhc2UuU1RPUkFHRV9JTlBV
VCkgeworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBl
KHZhbC5kYXRhVHlwZSkgPT09ICdmbG9hdCcpIHsKKyAgICAgICAgICAgICAgICBkZWNsICs9IHZ0
eEluICsgJyAnICsgZmxvYXRUeXBlICsgJyAnICsgdmFsdWVOYW1lICsgJztcbic7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRlY2wgKz0gdnR4SW4gKyAnICcgKyBmbG9h
dFR5cGUgKyAnIGFfJyArIHZhbHVlTmFtZSArICc7XG4nOworICAgICAgICAgICAgICAgIHNldHVw
ICs9IGRhdGFUeXBlTmFtZSArICcgJyArIHZhbHVlTmFtZSArICcgPSAnICsgZGF0YVR5cGVOYW1l
ICsgJyhhXycgKyB2YWx1ZU5hbWUgKyAnKTtcbic7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSBpZiAodmFsLnN0b3JhZ2VUeXBlID09PSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zaGFkZXJD
YXNlLlNUT1JBR0VfT1VUUFVUKSB7CisgICAgICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZVNjYWxhclR5cGUodmFsLmRhdGFUeXBlKSA9PT0gJ2Zsb2F0JykKKyAgICAgICAgICAg
ICAgICBkZWNsICs9IHZ0eE91dCArICcgJyArIGZsb2F0VHlwZSArICcgJyArIHZhbHVlTmFtZSAr
ICc7XG4nOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVjbCArPSB2dHhP
dXQgKyAnICcgKyBmbG9hdFR5cGUgKyAnIHZfJyArIHZhbHVlTmFtZSArICc7XG4nOworICAgICAg
ICAgICAgICAgIGRlY2wgKz0gZGF0YVR5cGVOYW1lICsgJyAnICsgdmFsdWVOYW1lICsgJztcbic7
CisKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ3ZfJyArIHZhbHVlTmFtZSArICcgPSAnICsg
ZmxvYXRUeXBlICsgJygnICsgdmFsdWVOYW1lICsgJyk7XG4nOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisgICAgdmFyIGJhc2VT
cmMgPSBzcmMKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wkXHtERUNMQVJBVElPTlNc
fS9nLCBkZWNsKQorICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCRce0RFQ0xBUkFUSU9O
UzpzaW5nbGUtbGluZVx9L2csIGRlY2wucmVwbGFjZSgvXG4vZywgJyAnKSkKKyAgICAgICAgICAg
ICAgICAgICAgLnJlcGxhY2UoL1wkXHtTRVRVUFx9L2csIHNldHVwKQorICAgICAgICAgICAgICAg
ICAgICAucmVwbGFjZSgvXCRce09VVFBVVFx9L2csIG91dHB1dCkKKyAgICAgICAgICAgICAgICAg
ICAgLnJlcGxhY2UoL1wkXHtQT1NJVElPTl9GUkFHX0NPTE9SXH0vZywgJ2dsX1Bvc2l0aW9uJyk7
CisKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAgICB2YXIgd2l0aEV4dCA9IGdsc1NoYWRl
ckxpYnJhcnlDYXNlLmluamVjdEV4dGVuc2lvblJlcXVpcmVtZW50cyhiYXNlU3JjLCBnbHVTaGFk
ZXJQcm9ncmFtLnNoYWRlclR5cGUuVkVSVEVYLCBzdGF0ZS5jdXJyZW50VGVzdC5zcGVjLnJlcXVp
cmVtZW50cyk7CisKKyAgICByZXR1cm4gd2l0aEV4dDsKK307CisKKy8qKiBTcGVjaWFsaXplIGEg
c2hhZGVyIG9ubHkgZm9yIHRoZSB2ZXJ0ZXggdGVzdCBjYXNlLgorICogQHBhcmFtIHtzdHJpbmd9
IHNyYworICogQHBhcmFtIHsge3ZhbHVlczpBcnJheX19IHZhbHVlQmxvY2sKKyAqIEByZXR1cm4g
e3N0cmluZ30gd2l0aEV4dAorICovCitnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zcGVjaWFsaXplVmVy
dGV4T25seSA9IGZ1bmN0aW9uKHNyYywgdmFsdWVCbG9jaykgeworICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyB2YXIgZGVjbCA9ICcnOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc2V0
dXAgPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG91dHB1dCA9ICcnOworICAg
IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7Cisg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdXNlc0lub3V0ID0gZ2xzU2hhZGVyTGlicmFy
eUNhc2UudXNlc1NoYWRlcklub3V0UXVhbGlmaWVycyhzdGF0ZS5jdXJyZW50VGVzdC5zcGVjLnRh
cmdldFZlcnNpb24pOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgdnR4SW4gPSB1c2Vz
SW5vdXQgPyAnaW4nIDogJ2F0dHJpYnV0ZSc7CisKKyAgICAvLyBPdXRwdXQgKHdyaXRlIG91dCBw
b3NpdGlvbikuCisgICAgb3V0cHV0ICs9ICdnbF9Qb3NpdGlvbiA9IGRFUVBfUG9zaXRpb247XG4n
OworCisgICAgLy8gRGVjbGFyYXRpb25zIChwb3NpdGlvbiArIGF0dHJpYnV0ZSBmb3IgZWFjaCBp
bnB1dCwgdmFyeWluZyBmb3IgZWFjaCBvdXRwdXQpLgorICAgIGRlY2wgKz0gdnR4SW4gKyAnIGhp
Z2hwIHZlYzQgZEVRUF9Qb3NpdGlvbjtcbic7CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCB2YWx1ZUJsb2NrLnZhbHVlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgLyoqIEB0eXBlIHtBcnJh
eX0gKi8gdmFyIHZhbCA9IHZhbHVlQmxvY2sudmFsdWVzW25keF07CisgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciB2YWx1ZU5hbWUgPSB2YWwudmFsdWVOYW1lOworICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgdHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhbC5k
YXRhVHlwZSk7CisKKyAgICAgICAgaWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGli
cmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9SQUdFX0lOUFVUKSB7CisgICAgICAgICAgICBpZiAoZ2x1
U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclR5cGUodmFsLmRhdGFUeXBlKSA9PT0gJ2Zsb2F0
JykgeworICAgICAgICAgICAgICAgIGRlY2wgKz0gdnR4SW4gKyAnICcgKyB0eXBlICsgJyAnICsg
dmFsdWVOYW1lICsgJztcbic7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZmxvYXRUeXBlID0gZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZUZsb2F0U2NhbGFycyh2YWwuZGF0YVR5cGUpOworCisgICAgICAgICAgICAgICAgZGVj
bCArPSB2dHhJbiArICcgJyArIGZsb2F0VHlwZSArICcgYV8nICsgdmFsdWVOYW1lICsgJztcbic7
CisgICAgICAgICAgICAgICAgc2V0dXAgKz0gdHlwZSArICcgJyArIHZhbHVlTmFtZSArICcgPSAn
ICsgdHlwZSArICcoYV8nICsgdmFsdWVOYW1lICsgJyk7XG4nOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uu
c2hhZGVyQ2FzZS5TVE9SQUdFX1VOSUZPUk0gJiYKKyAgICAgICAgICAgICAgICAgICAgIXZhbC52
YWx1ZU5hbWUubWF0Y2goJ1xcLicpKQorICAgICAgICAgICAgZGVjbCArPSAndW5pZm9ybSAnICsg
dHlwZSArICcgJyArIHZhbHVlTmFtZSArICc7XG4nOworICAgIH0KKworICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLworICAgIHZhciBiYXNlU3JjID0gc3JjCisgICAgICAgICAgICAgICAgICAgIC5y
ZXBsYWNlKC9cJFx7VkVSVEVYX0RFQ0xBUkFUSU9OU1x9L2csIGRlY2wpCisgICAgICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKC9cJFx7VkVSVEVYX0RFQ0xBUkFUSU9OUzpzaW5nbGUtbGluZVx9L2cs
IGRlY2wucmVwbGFjZSgvXG4vZywgJyAnKSkKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uo
L1wkXHtWRVJURVhfU0VUVVBcfS9nLCBzZXR1cCkKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxh
Y2UoL1wkXHtWRVJURVhfT1VUUFVUXH0vZywgb3V0cHV0KTsKKworICAgIC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLworICAgIHZhciB3aXRoRXh0ID0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuaW5qZWN0RXh0
ZW5zaW9uUmVxdWlyZW1lbnRzKGJhc2VTcmMsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5W
RVJURVgsIHN0YXRlLmN1cnJlbnRUZXN0LnNwZWMucmVxdWlyZW1lbnRzKTsKKworICAgIHJldHVy
biB3aXRoRXh0OworfTsKKworLyoqIFNwZWNpYWxpemUgYSBzaGFkZXIgZm9yIHRoZSBmcmFnbWVu
dCBzaGFkZXIgdGVzdCBjYXNlLgorICogQHBhcmFtIHtzdHJpbmd9IHNyYworICogQHBhcmFtIHsg
e3ZhbHVlczpBcnJheX19IHZhbHVlQmxvY2sKKyAqIEByZXR1cm4ge3N0cmluZ30gd2l0aEV4dAor
ICovCitnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zcGVjaWFsaXplRnJhZ21lbnRTaGFkZXIgPSBmdW5j
dGlvbihzcmMsIHZhbHVlQmxvY2spIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGRl
Y2wgPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNldHVwID0gJyc7CisgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBvdXRwdXQgPSAnJzsKKworICAgIC8qKiBAdHlwZSB7
T2JqZWN0fSAqLyB2YXIgc3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisKKyAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciB1c2VzSW5vdXQgPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS51c2Vz
U2hhZGVySW5vdXRRdWFsaWZpZXJzKHN0YXRlLmN1cnJlbnRUZXN0LnNwZWMudGFyZ2V0VmVyc2lv
bik7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgY3VzdG9tQ29sb3JPdXQgPSB1c2Vz
SW5vdXQ7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnSW4gPSB1c2VzSW5vdXQg
PyAnaW4nIDogJ3ZhcnlpbmcnOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgZnJhZ0Nv
bG9yID0gY3VzdG9tQ29sb3JPdXQgPyAnZEVRUF9GcmFnQ29sb3InIDogJ2dsX0ZyYWdDb2xvcic7
CisKKyAgICBkZWNsICs9IGdsc1NoYWRlckxpYnJhcnlDYXNlLmdlbkNvbXBhcmVGdW5jdGlvbnMo
dmFsdWVCbG9jaywgZmFsc2UpOworICAgIG91dHB1dCArPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5n
ZW5Db21wYXJlT3AoZnJhZ0NvbG9yLCB2YWx1ZUJsb2NrLCAnJywgbnVsbCk7CisKKyAgICBpZiAo
Y3VzdG9tQ29sb3JPdXQpCisgICAgICAgIGRlY2wgKz0gJ2xheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4nOworCisgICAgZm9yICh2YXIgbmR4ID0g
MDsgbmR4IDwgdmFsdWVCbG9jay52YWx1ZXMubGVuZ3RoOyBuZHgrKykgeworICAgIC8qKiBAdHlw
ZSB7QXJyYXl9ICovIHZhciB2YWwgPSB2YWx1ZUJsb2NrLnZhbHVlc1tuZHhdOworICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyB2YXIgdmFsdWVOYW1lID0gdmFsLnZhbHVlTmFtZTsKKyAgICAvKiog
QHR5cGUge3N0cmluZ30gKi8gdmFyIGZsb2F0VHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVGbG9hdFNjYWxhcnModmFsLmRhdGFUeXBlKTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIHJlZlR5cGUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZSh2YWwuZGF0YVR5cGUp
OworCisgICAgICAgIGlmICh2YWwuc3RvcmFnZVR5cGUgPT09IGdsc1NoYWRlckxpYnJhcnlDYXNl
LnNoYWRlckNhc2UuU1RPUkFHRV9JTlBVVCkgeworICAgICAgICAgICAgaWYgKGdsdVNoYWRlclV0
aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBlKHZhbC5kYXRhVHlwZSkgPT09ICdmbG9hdCcpCisgICAg
ICAgICAgICAgICAgZGVjbCArPSBmcmFnSW4gKyAnICcgKyBmbG9hdFR5cGUgKyAnICcgKyB2YWx1
ZU5hbWUgKyAnO1xuJzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlY2wg
Kz0gZnJhZ0luICsgJyAnICsgZmxvYXRUeXBlICsgJyB2XycgKyB2YWx1ZU5hbWUgKyAnO1xuJzsK
KyAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlSW50
T3JJVmVjKHZhbC5kYXRhVHlwZSkgPyAnICogMS4wMDI1JyA6ICcnOyAvLyBcdG9kbyBbcGV0cmld
IGJpdCBvZiBhIGhhY2sgdG8gYXZvaWQgZXJyb3JzIGluIGNob3AoKSBkdWUgdG8gdmFyeWluZyBp
bnRlcnBvbGF0aW9uCisgICAgICAgICAgICAgICAgc2V0dXAgKz0gcmVmVHlwZSArICcgJyArIHZh
bHVlTmFtZSArICcgPSAnICsgcmVmVHlwZSArICcodl8nICsgdmFsdWVOYW1lICsgb2Zmc2V0ICsg
Jyk7XG4nOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHZhbC5zdG9yYWdlVHlw
ZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9SQUdFX09VVFBVVCkgewor
ICAgICAgICAgICAgZGVjbCArPSAndW5pZm9ybSAnICsgcmVmVHlwZSArICcgcmVmXycgKyB2YWx1
ZU5hbWUgKyAnO1xuJzsKKyAgICAgICAgICAgIGRlY2wgKz0gcmVmVHlwZSArICcgJyArIHZhbHVl
TmFtZSArICc7XG4nOworICAgICAgICB9CisgICAgfQorCisgICAgLyogXHRvZG8gWzIwMTAtMDQt
MDEgcGV0cmldIENoZWNrIGFsbCBvdXRwdXRzLiAqLworCisgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovCisgICAgdmFyIGJhc2VTcmMgPSBzcmMKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uo
L1wkXHtERUNMQVJBVElPTlNcfS9nLCBkZWNsKQorICAgICAgICAgICAgICAgICAgICAucmVwbGFj
ZSgvXCRce0RFQ0xBUkFUSU9OUzpzaW5nbGUtbGluZVx9L2csIGRlY2wucmVwbGFjZSgvXG4vZywg
JyAnKSkKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wkXHtTRVRVUFx9L2csIHNldHVw
KQorICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCRce09VVFBVVFx9L2csIG91dHB1dCkK
KyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wkXHtQT1NJVElPTl9GUkFHX0NPTE9SXH0v
ZywgZnJhZ0NvbG9yKTsKKworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLworICAgIHZhciB3aXRo
RXh0ID0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuaW5qZWN0RXh0ZW5zaW9uUmVxdWlyZW1lbnRzKGJh
c2VTcmMsIGdsdVNoYWRlclByb2dyYW0uc2hhZGVyVHlwZS5GUkFHTUVOVCwgc3RhdGUuY3VycmVu
dFRlc3Quc3BlYy5yZXF1aXJlbWVudHMpOworCisgICAgcmV0dXJuIHdpdGhFeHQ7Cit9OworCisv
KiogU3BlY2lhbGl6ZSBhIHNoYWRlciBvbmx5IGZvciB0aGUgZnJhZ21lbnQgdGVzdCBjYXNlLgor
ICogQHBhcmFtIHtzdHJpbmd9IHNyYworICogQHBhcmFtIHsge3ZhbHVlczpBcnJheX19IHZhbHVl
QmxvY2sKKyAqIEByZXR1cm4ge3N0cmluZ30gd2l0aEV4dAorICovCitnbHNTaGFkZXJMaWJyYXJ5
Q2FzZS5zcGVjaWFsaXplRnJhZ21lbnRPbmx5ID0gZnVuY3Rpb24oc3JjLCB2YWx1ZUJsb2NrKSB7
CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBkZWNsID0gJyc7CisgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHZhciBvdXRwdXQgPSAnJzsKKyAgICAvKiogQHR5cGUge09iamVjdH0gKi8g
dmFyIHN0YXRlID0gdGN1VGVzdENhc2UucnVubmVyOworICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0g
Ki8gdmFyIHVzZXNJbm91dCA9IGdsc1NoYWRlckxpYnJhcnlDYXNlLnVzZXNTaGFkZXJJbm91dFF1
YWxpZmllcnMoc3RhdGUuY3VycmVudFRlc3Quc3BlYy50YXJnZXRWZXJzaW9uKTsKKyAgICAvKiog
QHR5cGUge2Jvb2xlYW59ICovIHZhciBjdXN0b21Db2xvck91dCA9IHVzZXNJbm91dDsKKyAgICAv
KiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdJbiA9IHVzZXNJbm91dCA/ICdpbicgOiAndmFy
eWluZyc7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmcmFnQ29sb3IgPSBjdXN0b21D
b2xvck91dCA/ICdkRVFQX0ZyYWdDb2xvcicgOiAnZ2xfRnJhZ0NvbG9yJzsKKworICAgIGRlY2wg
Kz0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuZ2VuQ29tcGFyZUZ1bmN0aW9ucyh2YWx1ZUJsb2NrLCBm
YWxzZSk7CisgICAgb3V0cHV0ICs9IGdsc1NoYWRlckxpYnJhcnlDYXNlLmdlbkNvbXBhcmVPcChm
cmFnQ29sb3IsIHZhbHVlQmxvY2ssICcnLCBudWxsKTsKKworICAgIGlmIChjdXN0b21Db2xvck91
dCkKKyAgICAgICAgZGVjbCArPSAnbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVj
NCBkRVFQX0ZyYWdDb2xvcjtcbic7CisKKyAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB2YWx1
ZUJsb2NrLnZhbHVlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheX0gKi8g
dmFyIHZhbCA9IHZhbHVlQmxvY2sudmFsdWVzW25keF07CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHZhciB2YWx1ZU5hbWUgPSB2YWwudmFsdWVOYW1lOworICAgIC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyB2YXIgZmxvYXRUeXBlID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZUZsb2F0U2NhbGFy
cyh2YWwuZGF0YVR5cGUpOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgcmVmVHlwZSA9
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKHZhbC5kYXRhVHlwZSk7CisKKyAgICAgICAg
aWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5T
VE9SQUdFX09VVFBVVCkgeworICAgICAgICAgICAgZGVjbCArPSAndW5pZm9ybSAnICsgcmVmVHlw
ZSArICcgcmVmXycgKyB2YWx1ZU5hbWUgKyAnO1xuJzsKKyAgICAgICAgICAgIGRlY2wgKz0gcmVm
VHlwZSArICcgJyArIHZhbHVlTmFtZSArICc7XG4nOworICAgICAgICB9IGVsc2UgaWYgKHZhbC5z
dG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9SQUdFX1VO
SUZPUk0gJiYKKyAgICAgICAgICAgICAgICAgICAhdmFsdWVOYW1lLm1hdGNoKCdcXC4nKSkKKyAg
ICAgICAgICAgIGRlY2wgKz0gJ3VuaWZvcm0gJyArIHJlZlR5cGUgKyAnICcgKyB2YWx1ZU5hbWUg
KyAnO1xuJzsKKyAgICB9CisKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAgICB2YXIgYmFz
ZVNyYyA9IHNyYworICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wkXHtGUkFHTUVOVF9E
RUNMQVJBVElPTlNcfS9nLCBkZWNsKQorICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wk
XHtGUkFHTUVOVF9ERUNMQVJBVElPTlM6c2luZ2xlLWxpbmVcfS9nLCBkZWNsLnJlcGxhY2UoL1xu
L2csICcgJykpCisgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCRce0ZSQUdNRU5UX09V
VFBVVFx9L2csIG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cJFx7RlJB
R19DT0xPUlx9L2csIGZyYWdDb2xvcik7CisKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAg
ICB2YXIgd2l0aEV4dCA9IGdsc1NoYWRlckxpYnJhcnlDYXNlLmluamVjdEV4dGVuc2lvblJlcXVp
cmVtZW50cyhiYXNlU3JjLCBnbHVTaGFkZXJQcm9ncmFtLnNoYWRlclR5cGUuRlJBR01FTlQsIHN0
YXRlLmN1cnJlbnRUZXN0LnNwZWMucmVxdWlyZW1lbnRzKTsKKworICAgIHJldHVybiB3aXRoRXh0
OworfTsKKworLyoqCisgKiBJcyB0ZXNzZWxsYXRpb24gcHJlc2VudAorICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0ZXNzZWxsYXRpb24gaXMgcHJlc2VudAorICovCitnbHNTaGFkZXJMaWJy
YXJ5Q2FzZS5pc1Rlc3NlbGxhdGlvblByZXNlbnQgPSBmdW5jdGlvbigpIHsKKyAgICAvKiBUT0RP
OiBHTEVTIDMuMTogaW1wbGVtZW50ICovCisgICAgcmV0dXJuIGZhbHNlOworfTsKKworZ2xzU2hh
ZGVyTGlicmFyeUNhc2Uuc2V0VW5pZm9ybVZhbHVlID0gZnVuY3Rpb24oZ2wsIHBpcGVsaW5lUHJv
Z3JhbXMsIG5hbWUsIHZhbCwgYXJyYXlOZHgpIHsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHZhciBmb3VuZEFueU1hdGNoID0gZmFsc2U7CisKKyAgICBmb3IgKHZhciBwcm9ncmFtTmR4ID0g
MDsgcHJvZ3JhbU5keCA8IHBpcGVsaW5lUHJvZ3JhbXMubGVuZ3RoOyArK3Byb2dyYW1OZHgpIHsK
KyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7V2ViR0xVbmlmb3JtTG9jYXRpb259ICovIHZhciBs
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocGlwZWxpbmVQcm9ncmFtc1twcm9ncmFtTmR4XSwg
bmFtZSk7CisgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8gdmFyIHNjYWxhclNp
emUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh2YWwuZGF0YVR5cGUpOwor
ICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICovIHZhciBlbGVtTmR4ID0gKHZhbC5h
cnJheUxlbmd0aCA9PT0gMSkgPyAoMCkgOiAoYXJyYXlOZHggKiBzY2FsYXJTaXplKTsKKworICAg
ICAgICBpZiAoIWxvYykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvdW5kQW55
TWF0Y2ggPSB0cnVlOworCisgICAgICAgIGdsLnVzZVByb2dyYW0ocGlwZWxpbmVQcm9ncmFtc1tw
cm9ncmFtTmR4XSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheX0gKi8gdmFyIGVsZW1lbnQg
PSB2YWwuZWxlbWVudHMuc2xpY2UoZWxlbU5keCwgZWxlbU5keCArIHNjYWxhclNpemUpOworICAg
ICAgICBzd2l0Y2ggKHZhbC5kYXRhVHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJV
dGlsLkRhdGFUeXBlLkZMT0FUOiBnbC51bmlmb3JtMWZ2KGxvYywgbmV3IEZsb2F0MzJBcnJheShl
bGVtZW50KSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzI6IGdsLnVuaWZvcm0yZnYobG9jLCBuZXcgRmxvYXQzMkFycmF5KGVsZW1lbnQp
KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
VkVDMzogZ2wudW5pZm9ybTNmdihsb2MsIG5ldyBGbG9hdDMyQXJyYXkoZWxlbWVudCkpOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0OiBn
bC51bmlmb3JtNGZ2KGxvYywgbmV3IEZsb2F0MzJBcnJheShlbGVtZW50KSk7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6IGdsLnVuaWZv
cm1NYXRyaXgyZnYobG9jLCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShlbGVtZW50KSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDM6IGds
LnVuaWZvcm1NYXRyaXgzZnYobG9jLCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShlbGVtZW50KSk7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01B
VDQ6IGdsLnVuaWZvcm1NYXRyaXg0ZnYobG9jLCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShlbGVt
ZW50KSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklO
VDogZ2wudW5pZm9ybTFpdihsb2MsIG5ldyBJbnQzMkFycmF5KGVsZW1lbnQpKTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzI6IGdsLnVuaWZv
cm0yaXYobG9jLCBuZXcgSW50MzJBcnJheShlbGVtZW50KSk7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzOiBnbC51bmlmb3JtM2l2KGxvYywg
bmV3IEludDMyQXJyYXkoZWxlbWVudCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDNDogZ2wudW5pZm9ybTRpdihsb2MsIG5ldyBJbnQzMkFy
cmF5KGVsZW1lbnQpKTsgYnJlYWs7CisKKyAgICAgICAgICAgIC8qKiBUT0RPOiBXaGF0IHR5cGUg
c2hvdWxkIGJlIHVzZWQgZm9yIGJvb2wgdW5pZm9ybXM/ICovCisgICAgICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTDogZ2wudW5pZm9ybTFpdihsb2MsIG5ldyBJbnQzMkFy
cmF5KGVsZW1lbnQpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuQk9PTF9WRUMyOiBnbC51bmlmb3JtMml2KGxvYywgbmV3IEludDMyQXJyYXkoZWxlbWVu
dCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09M
X1ZFQzM6IGdsLnVuaWZvcm0zaXYobG9jLCBuZXcgSW50MzJBcnJheShlbGVtZW50KSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDNDogZ2wu
dW5pZm9ybTRpdihsb2MsIG5ldyBJbnQzMkFycmF5KGVsZW1lbnQpKTsgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UOiBnbC51bmlmb3JtMXVpdihs
b2MsIG5ldyBVaW50MzJBcnJheShlbGVtZW50KSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMjogZ2wudW5pZm9ybTJ1aXYobG9jLCBuZXcg
VWludDMyQXJyYXkoZWxlbWVudCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzM6IGdsLnVuaWZvcm0zdWl2KGxvYywgbmV3IFVpbnQzMkFy
cmF5KGVsZW1lbnQpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuVUlOVF9WRUM0OiBnbC51bmlmb3JtNHVpdihsb2MsIG5ldyBVaW50MzJBcnJheShlbGVt
ZW50KSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZM
T0FUX01BVDJYMzogZ2wudW5pZm9ybU1hdHJpeDJ4M2Z2KGxvYywgZmFsc2UsIG5ldyBGbG9hdDMy
QXJyYXkoZWxlbWVudCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQyWDQ6IGdsLnVuaWZvcm1NYXRyaXgyeDRmdihsb2MsIGZhbHNlLCBu
ZXcgRmxvYXQzMkFycmF5KGVsZW1lbnQpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNo
YWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1gyOiBnbC51bmlmb3JtTWF0cml4M3gyZnYobG9j
LCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShlbGVtZW50KSk7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYNDogZ2wudW5pZm9ybU1hdHJp
eDN4NGZ2KGxvYywgZmFsc2UsIG5ldyBGbG9hdDMyQXJyYXkoZWxlbWVudCkpOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDI6IGdsLnVu
aWZvcm1NYXRyaXg0eDJmdihsb2MsIGZhbHNlLCBuZXcgRmxvYXQzMkFycmF5KGVsZW1lbnQpKTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFU
NFgzOiBnbC51bmlmb3JtTWF0cml4NHgzZnYobG9jLCBmYWxzZSwgbmV3IEZsb2F0MzJBcnJheShl
bGVtZW50KSk7IGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ1Vua25vd24gZGF0YSB0eXBlICcgKyB2YWwuZGF0YVR5cGUpOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKCFmb3VuZEFueU1hdGNoKQorICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnV0FSTklORyAvLyBVbmlmb3JtIFwiJyArIG5hbWUgKyAnXCIgbG9jYXRpb24g
aXMgbm90IHZhbGlkLCBsb2NhdGlvbiA9IC0xLiBDYW5ub3Qgc2V0IHZhbHVlIHRvIHRoZSB1bmlm
b3JtLicpOworfTsKKworLyoqCisgKiBFdmFsdWF0ZXMgcGl4ZWxzLCBpZiB0aGV5IGFyZSB3aGl0
ZSwgYmxhY2sgb3IgdGhlcmUgaXMgYW55IHVuZXhwZWN0ZWQgcmVzdWx0CisgKiBAcGFyYW0ge2ds
dURyYXdVdGlsLlN1cmZhY2V9IHN1cmZhY2UKKyAqIEBwYXJhbSB7bnVtYmVyfSBtaW5YCisgKiBA
cGFyYW0ge251bWJlcn0gbWF4WAorICogQHBhcmFtIHtudW1iZXJ9IG1pblkKKyAqIEBwYXJhbSB7
bnVtYmVyfSBtYXhZCisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRlc3NlbGxhdGlvbiBp
cyBwcmVzZW50CisgKi8KK2dsc1NoYWRlckxpYnJhcnlDYXNlLmNoZWNrUGl4ZWxzID0gZnVuY3Rp
b24oc3VyZmFjZSwgbWluWCwgbWF4WCwgbWluWSwgbWF4WSkgeworICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdmFyIGFsbFdoaXRlID0gdHJ1ZTsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHZhciBhbGxCbGFjayA9IHRydWU7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgYW55
VW5leHBlY3RlZCA9IGZhbHNlOworCisgICAgYXNzZXJ0TXNnT3B0aW9ucygobWF4WCA+IG1pblgp
ICYmIChtYXhZID4gbWluWSksICdnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5jaGVja1BpeGVscyBzYW5p
dHkgY2hlY2snLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBmb3IgKHZhciB5ID0gbWluWTsgeSA8PSBt
YXhZOyB5KyspIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IG1pblg7IHggPD0gbWF4WDsgeCsrKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBpeGVsID0gc3VyZmFjZS5n
ZXRQaXhlbFVpbnRSR0I4KHgsIHkpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAq
LyB2YXIgaXNXaGl0ZSA9IChwaXhlbCA9PSAweEZGRkZGRik7CisgICAgICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBpc0JsYWNrID0gKHBpeGVsID09IDB4MDAwMDAwKTsKKworICAg
ICAgICAgICAgYWxsV2hpdGUgPSBhbGxXaGl0ZSAmJiBpc1doaXRlOworICAgICAgICAgICAgYWxs
QmxhY2sgPSBhbGxCbGFjayAmJiBpc0JsYWNrOworICAgICAgICAgICAgYW55VW5leHBlY3RlZCA9
IGFueVVuZXhwZWN0ZWQgfHwgKCFpc1doaXRlICYmICFpc0JsYWNrKTsKKworICAgICAgICAgICAg
Ly8gRWFybHkgdGVybWluYXRlIGFzIHNvb24gYXMgd2Uga25vdyB0aGUgY2hlY2sgaGFzbid0IHBh
c3NlZAorICAgICAgICAgICAgaWYgKCFhbGxXaGl0ZSAmJiAhYWxsQmxhY2spCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWFsbFdoaXRlKSB7Cisg
ICAgICAgIGlmIChhbnlVbmV4cGVjdGVkKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgnV0FSTklO
RzogZXhwZWN0aW5nIGFsbCByZW5kZXJlZCBwaXhlbHMgdG8gYmUgd2hpdGUgb3IgYmxhY2ssIGJ1
dCBnb3Qgb3RoZXIgY29sb3JzIGFzIHdlbGwhJyk7CisgICAgICAgIGVsc2UgaWYgKCFhbGxCbGFj
aykKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1dBUk5JTkc6IGdvdCBpbmNvbnNpc3RlbnQgcmVz
dWx0cyBvdmVyIHRoZSBpbWFnZSwgd2hlbiBhbGwgcGl4ZWxzIHNob3VsZCBiZSB0aGUgc2FtZSBj
b2xvciEnKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfTsKKworLyoqCisgKiBJbml0aWFsaXplIGEgdGVzdCBjYXNlCisgKi8KK2dsc1NoYWRlckxp
YnJhcnlDYXNlLmluaXQgPSBmdW5jdGlvbigpIHsKKy8qKiBAdHlwZSB7T2JqZWN0fSAqLyB2YXIg
c3RhdGUgPSB0Y3VUZXN0Q2FzZS5ydW5uZXI7CisvKiogQHR5cGUge09iamVjdH0gKi8gdmFyIHRl
c3QgPSBzdGF0ZS5jdXJyZW50VGVzdDsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdQcm9j
ZXNzaW5nICcgKyB0ZXN0LmZ1bGxOYW1lKCkpOworCisgICAgaWYgKCF0ZXN0LnNwZWMudmFsdWVC
bG9ja0xpc3QubGVuZ3RoKQorICAgICAgICB0ZXN0LnNwZWMudmFsdWVCbG9ja0xpc3QucHVzaChn
bHNTaGFkZXJMaWJyYXJ5Q2FzZS5nZW5WYWx1ZUJsb2NrKCkpOworICAgIC8qKiBAdHlwZSB7IHt2
YWx1ZXM6QXJyYXl9fSAqLyB2YXIgdmFsdWVCbG9jayA9IHRlc3Quc3BlYy52YWx1ZUJsb2NrTGlz
dFswXTsKKworICAgIGlmICh0ZXN0LnNwZWMucmVxdWlyZW1lbnRzKQorICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCB0ZXN0LnNwZWMucmVxdWlyZW1lbnRzLmxlbmd0aDsgKytuZHgpCisg
ICAgICAgICAgICB0ZXN0LnNwZWMucmVxdWlyZW1lbnRzW25keF0uY2hlY2tSZXF1aXJlbWVudHMo
KTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJJbmZvPn0g
Ki8gdmFyIHNvdXJjZXMgPSBbXTsKKworICAgIGlmICh0ZXN0LnNwZWMuY2FzZVR5cGUgPT09IGds
c1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlLkNBU0VUWVBFX0NPTVBMRVRFKSB7CisgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciB2ZXJ0ZXggPSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zcGVj
aWFsaXplVmVydGV4T25seSh0ZXN0LnNwZWMudmVydGV4U291cmNlLCB2YWx1ZUJsb2NrKTsKKyAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGZyYWdtZW50ID0gZ2xzU2hhZGVyTGlicmFyeUNh
c2Uuc3BlY2lhbGl6ZUZyYWdtZW50T25seSh0ZXN0LnNwZWMuZnJhZ21lbnRTb3VyY2UsIHZhbHVl
QmxvY2spOworICAgICAgICBzb3VyY2VzLnB1c2goZ2x1U2hhZGVyUHJvZ3JhbS5nZW5WZXJ0ZXhT
b3VyY2UodmVydGV4KSk7CisgICAgICAgIHNvdXJjZXMucHVzaChnbHVTaGFkZXJQcm9ncmFtLmdl
bkZyYWdtZW50U291cmNlKGZyYWdtZW50KSk7CisgICAgfSBlbHNlIGlmICh0ZXN0LnNwZWMuY2Fz
ZVR5cGUgPT09IGdsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlLkNBU0VUWVBFX1ZFUlRFWF9P
TkxZKSB7CisgICAgICAgIHNvdXJjZXMucHVzaChnbHVTaGFkZXJQcm9ncmFtLmdlblZlcnRleFNv
dXJjZShnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zcGVjaWFsaXplVmVydGV4U2hhZGVyKHRlc3Quc3Bl
Yy52ZXJ0ZXhTb3VyY2UsIHZhbHVlQmxvY2spKSk7CisgICAgICAgIHNvdXJjZXMucHVzaChnbHVT
aGFkZXJQcm9ncmFtLmdlbkZyYWdtZW50U291cmNlKGdsc1NoYWRlckxpYnJhcnlDYXNlLmdlbkZy
YWdtZW50U2hhZGVyKHZhbHVlQmxvY2spKSk7CisgICAgfSBlbHNlIGlmICh0ZXN0LnNwZWMuY2Fz
ZVR5cGUgPT09IGdsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlLkNBU0VUWVBFX0ZSQUdNRU5U
X09OTFkpIHsKKyAgICAgICAgc291cmNlcy5wdXNoKGdsdVNoYWRlclByb2dyYW0uZ2VuVmVydGV4
U291cmNlKGdsc1NoYWRlckxpYnJhcnlDYXNlLmdlblZlcnRleFNoYWRlcih2YWx1ZUJsb2NrKSkp
OworICAgICAgICBzb3VyY2VzLnB1c2goZ2x1U2hhZGVyUHJvZ3JhbS5nZW5GcmFnbWVudFNvdXJj
ZShnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5zcGVjaWFsaXplRnJhZ21lbnRTaGFkZXIodGVzdC5zcGVj
LmZyYWdtZW50U291cmNlLCB2YWx1ZUJsb2NrKSkpOworICAgIH0KKworICAgIHRlc3QucHJvZ3Jh
bXMgPSBbXTsKKyAgICB0ZXN0LnByb2dyYW1zLnB1c2goeworICAgICAgICAgICAgcHJvZ3JhbVNv
dXJjZXM6IHsKKyAgICAgICAgICAgICAgICBzb3VyY2VzOiBzb3VyY2VzCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICApOworCit9OworCisvKioKKyAqIEV4ZWN1dGUgYSB0ZXN0IGNhc2UK
KyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGVzdCBjYXNlIHBhc3NlZAorICovCitnbHNT
aGFkZXJMaWJyYXJ5Q2FzZS5leGVjdXRlID0gZnVuY3Rpb24oKSB7CisgICAgLyoqIEBjb25zdCBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgcXVhZFNpemUgPSAxLjA7CisgICAgLyoqIEBjb25zdCBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICB2YXIgc19wb3NpdGlvbnMgPSBbCisgICAgICAgIC1x
dWFkU2l6ZSwgLXF1YWRTaXplLCAwLjAsIDEuMCwKKyAgICAgICAgLXF1YWRTaXplLCArcXVhZFNp
emUsIDAuMCwgMS4wLAorICAgICAgICArcXVhZFNpemUsIC1xdWFkU2l6ZSwgMC4wLCAxLjAsCisg
ICAgICAgICtxdWFkU2l6ZSwgK3F1YWRTaXplLCAwLjAsIDEuMAorICAgIF07CisKKyAgICAvKiog
QGNvbnN0IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgIHZhciBzX2luZGljZXMgPSBbCisg
ICAgICAgIDAsIDEsIDIsCisgICAgICAgIDEsIDMsIDIKKyAgICBdOworCisgICAgdmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworICAgIC8qKiBAdHlwZSB7V2ViR0wyUmVuZGVyaW5nQ29udGV4dH0g
Ki8gdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgnY2FudmFzJyk7CisgICAgLyoqIEB0eXBl
IHtPYmplY3R9ICovIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICAvKiogQHR5
cGUge09iamVjdH0gKi8gdmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50VGVzdDsKKyAgICAvKiogQHR5
cGUge09iamVjdH0gKi8gdmFyIHNwZWMgPSB0ZXN0LnNwZWM7CisKKyAgICAvLyBDb21wdXRlIHZp
ZXdwb3J0LgorICAgIC8qIFRPRE86IG9yaWdpbmFsIGNvZGUgdXNlZCByYW5kb20gbnVtYmVyIGdl
bmVyYXRvciB0byBjb21wdXRlIHZpZXdwb3J0LCB3ZSB1c2Ugd2hvbGUgY2FudmFzICovCisgICAg
LyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd2lkdGggPSBNYXRoLm1pbihjYW52YXMu
d2lkdGgsIGdsc1NoYWRlckxpYnJhcnlDYXNlLlZJRVdQT1JUX1dJRFRIKTsKKyAgICAvKiogQGNv
bnN0IEB0eXBlIHtudW1iZXJ9ICovIHZhciBoZWlnaHQgPSBNYXRoLm1pbihjYW52YXMuaGVpZ2h0
LCBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5WSUVXUE9SVF9IRUlHSFQpOworICAgIC8qKiBAY29uc3Qg
QHR5cGUge251bWJlcn0gKi8gdmFyIHZpZXdwb3J0WCA9IDA7CisgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgdmlld3BvcnRZID0gMDsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBudW1WZXJ0aWNlc1BlckRyYXcgPSA0OworICAgIC8qKiBAY29uc3QgQHR5
cGUge2Jvb2xlYW59ICovIHZhciB0ZXNzZWxsYXRpb25QcmVzZW50ID0gZ2xzU2hhZGVyTGlicmFy
eUNhc2UuaXNUZXNzZWxsYXRpb25QcmVzZW50KCk7CisKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59
ICovIHZhciBhbGxDb21waWxlc09rID0gdHJ1ZTsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHZhciBhbGxMaW5rc09rID0gdHJ1ZTsKKyAgICAvKiogQHR5cGUgez9zdHJpbmd9ICovIHZhciBm
YWlsUmVhc29uID0gbnVsbDsKKworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVydGV4
UHJvZ3JhbUlEID0gLTE7CisgICAgLyoqIEB0eXBlIHtBcnJheTxXZWJHTFByb2dyYW0+fSAqLyB2
YXIgcGlwZWxpbmVQcm9ncmFtSURzID0gW107CisgICAgLyoqIEB0eXBlIHtBcnJheTxnbHVTaGFk
ZXJQcm9ncmFtLlNoYWRlclByb2dyYW0+fSAqLyB2YXIgcHJvZ3JhbXMgPSBbXTsKKyAgICB2YXIg
cHJvZ3JhbVBpcGVsaW5lOworCisgICAgLy8gU2V0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRl
c3Qgc28gdGVzdEZhaWxlZE9wdGlvbnMvdGVzdFBhc3NlZE9wdGlvbnMgY2FuIHVzZSBpdC4KKyAg
ICBzZXRDdXJyZW50VGVzdE5hbWUodGVzdC5mdWxsTmFtZSgpKTsKKyAgICBkZWJ1ZygnU3RhcnQg
dGVzdGNhc2U6ICcgKyB0ZXN0LmZ1bGxOYW1lKCkpOworICAgIGFzc2VydE1zZ09wdGlvbnMoZ2wu
Z2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdTdGFydCB0ZXN0Y2FzZTogJyArIHRlc3QuZnVs
bE5hbWUoKSwgZmFsc2UsIHRydWUpOworCisgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJQcm9ncmFt
LlNoYWRlclByb2dyYW19ICovIHZhciBwcm9ncmFtID0gbmV3IGdsdVNoYWRlclByb2dyYW0uU2hh
ZGVyUHJvZ3JhbShnbCwgdGVzdC5wcm9ncmFtc1swXS5wcm9ncmFtU291cmNlcyk7CisKKyAgICB2
ZXJ0ZXhQcm9ncmFtSUQgPSBwcm9ncmFtLmdldFByb2dyYW0oKTsKKyAgICBwaXBlbGluZVByb2dy
YW1JRHMucHVzaChwcm9ncmFtLmdldFByb2dyYW0oKSk7CisgICAgcHJvZ3JhbXMucHVzaChwcm9n
cmFtKTsKKworICAgIC8vIENoZWNrIHRoYXQgY29tcGlsZS9saW5rIHJlc3VsdHMgYXJlIHdoYXQg
d2UgZXhwZWN0LgorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9ncmFtLnNoYWRlcnMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFwcm9ncmFtLnNoYWRlcnNbaV0uaW5mby5jb21waWxl
T2spCisgICAgICAgICAgICBhbGxDb21waWxlc09rID0gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KCFwcm9ncmFtLmdldFByb2dyYW1JbmZvKCkubGlua09rKQorICAgICAgICBhbGxMaW5rc09rID0g
ZmFsc2U7CisKKyAgICBzd2l0Y2ggKHNwZWMuZXhwZWN0UmVzdWx0KSB7CisgICAgICAgIGNhc2Ug
Z2xzU2hhZGVyTGlicmFyeUNhc2UuZXhwZWN0UmVzdWx0LkVYUEVDVF9QQVNTOgorICAgICAgICBj
YXNlIGdsc1NoYWRlckxpYnJhcnlDYXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfVkFMSURBVElPTl9G
QUlMOgorICAgICAgICBjYXNlIGdsc1NoYWRlckxpYnJhcnlDYXNlLmV4cGVjdFJlc3VsdC5FWFBF
Q1RfQlVJTERfU1VDQ0VTU0ZVTDoKKyAgICAgICAgICAgIGlmICghYWxsQ29tcGlsZXNPaykKKyAg
ICAgICAgICAgICAgICBmYWlsUmVhc29uID0gJ2V4cGVjdGVkIHNoYWRlcnMgdG8gY29tcGlsZSBh
bmQgbGluayBwcm9wZXJseSwgYnV0IGZhaWxlZCB0byBjb21waWxlLic7CisgICAgICAgICAgICBl
bHNlIGlmICghYWxsTGlua3NPaykKKyAgICAgICAgICAgICAgICBmYWlsUmVhc29uID0gJ2V4cGVj
dGVkIHNoYWRlcnMgdG8gY29tcGlsZSBhbmQgbGluayBwcm9wZXJseSwgYnV0IGZhaWxlZCB0byBs
aW5rLic7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGdsc1NoYWRlckxpYnJh
cnlDYXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfQ09NUElMRV9GQUlMOgorICAgICAgICAgICAgaWYg
KGFsbENvbXBpbGVzT2sgJiYgIWFsbExpbmtzT2spCisgICAgICAgICAgICAgICAgZmFpbFJlYXNv
biA9ICdleHBlY3RlZCBjb21waWxhdGlvbiB0byBmYWlsLCBidXQgc2hhZGVycyBjb21waWxlZCBh
bmQgbGluayBmYWlsZWQuJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGFsbENvbXBpbGVzT2spCisg
ICAgICAgICAgICAgICAgZmFpbFJlYXNvbiA9ICdleHBlY3RlZCBjb21waWxhdGlvbiB0byBmYWls
LCBidXQgc2hhZGVycyBjb21waWxlZCBjb3JyZWN0bHkuJzsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgZ2xzU2hhZGVyTGlicmFyeUNhc2UuZXhwZWN0UmVzdWx0LkVYUEVDVF9M
SU5LX0ZBSUw6CisgICAgICAgICAgICBpZiAoIWFsbENvbXBpbGVzT2spCisgICAgICAgICAgICAg
ICAgZmFpbFJlYXNvbiA9ICdleHBlY3RlZCBsaW5raW5nIHRvIGZhaWwsIGJ1dCB1bmFibGUgdG8g
Y29tcGlsZS4nOworICAgICAgICAgICAgZWxzZSBpZiAoYWxsTGlua3NPaykKKyAgICAgICAgICAg
ICAgICBmYWlsUmVhc29uID0gJ2V4cGVjdGVkIGxpbmtpbmcgdG8gZmFpbCwgYnV0IHBhc3NlZC4n
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbHNTaGFkZXJMaWJyYXJ5Q2Fz
ZS5leHBlY3RSZXN1bHQuRVhQRUNUX0NPTVBJTEVfTElOS19GQUlMOgorICAgICAgICAgICAgaWYg
KGFsbENvbXBpbGVzT2sgJiYgYWxsTGlua3NPaykKKyAgICAgICAgICAgICAgICBmYWlsUmVhc29u
ID0gJ2V4cGVjdGVkIGNvbXBpbGUgb3IgbGluayB0byBmYWlsLCBidXQgcGFzc2VkLic7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGVzdEZhaWxl
ZE9wdGlvbnMoJ1Vua25vd24gZXhwZWN0ZWQgcmVzdWx0JywgdHJ1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGZhaWxSZWFzb24gIT0gbnVsbCkgeworICAg
ICAgICAvLyBcdG9kbyBbMjAxMC0wNi0wNyBwZXRyaV0gVGhlc2Ugc2hvdWxkIGJlIGhhbmRsZWQg
aW4gdGhlIHRlc3QgY2FzZT8KKworICAgICAgICAvLyBJZiBpbXBsZW1lbnRhdGlvbiBwYXJzZXMg
c2hhZGVyIGF0IGxpbmsgdGltZSwgcmVwb3J0IGl0IGFzIHF1YWxpdHkgd2FybmluZy4KKyAgICAg
ICAgaWYgKHNwZWMuZXhwZWN0UmVzdWx0ID09PSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5leHBlY3RS
ZXN1bHQuRVhQRUNUX0NPTVBJTEVfRkFJTCAmJiBhbGxDb21waWxlc09rICYmICFhbGxMaW5rc09r
KQorICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1F1YWxpdHkgd2FybmluZzogaW1w
bGVtZW50YXRpb24gcGFyc2VzIHNoYWRlciBhdCBsaW5rIHRpbWU6ICcgKyBmYWlsUmVhc29uKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnRVJST1I6
ICcgKyBmYWlsUmVhc29uKTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKGZhaWxSZWFz
b24sIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyBSZXR1cm4gaWYgY29tcGlsZS9saW5rIGV4cGVjdGVkIHRvIGZhaWwuCisgICAgaWYgKHNw
ZWMuZXhwZWN0UmVzdWx0ID09PSBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5leHBlY3RSZXN1bHQuRVhQ
RUNUX0NPTVBJTEVfRkFJTCB8fAorICAgICAgICBzcGVjLmV4cGVjdFJlc3VsdCA9PT0gZ2xzU2hh
ZGVyTGlicmFyeUNhc2UuZXhwZWN0UmVzdWx0LkVYUEVDVF9DT01QSUxFX0xJTktfRkFJTCB8fAor
ICAgICAgICBzcGVjLmV4cGVjdFJlc3VsdCA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuZXhwZWN0
UmVzdWx0LkVYUEVDVF9MSU5LX0ZBSUwgfHwKKyAgICAgICAgc3BlYy5leHBlY3RSZXN1bHQgPT09
IGdsc1NoYWRlckxpYnJhcnlDYXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfQlVJTERfU1VDQ0VTU0ZV
TCkgeworICAgICAgICBpZiAoc3BlYy5leHBlY3RSZXN1bHQgPT09IGdsc1NoYWRlckxpYnJhcnlD
YXNlLmV4cGVjdFJlc3VsdC5FWFBFQ1RfQlVJTERfU1VDQ0VTU0ZVTCkgeworICAgICAgICAgICAg
dGVzdFBhc3NlZE9wdGlvbnMoJ0NvbXBpbGUvbGluayBpcyBleHBlY3RlZCB0byBzdWNjZWVkJywg
dHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkT3B0aW9ucygn
Q29tcGlsZS9saW5rIGlzIGV4cGVjdGVkIHRvIGZhaWwnLCB0cnVlKTsKKyAgICAgICAgfQorICAg
ICAgICBzZXRDdXJyZW50VGVzdE5hbWUoJycpOworICAgICAgICByZXR1cm4gKGZhaWxSZWFzb24g
PT09IG51bGwpOworICAgIH0KKworICAgIC8vIFNldHVwIHZpZXdwb3J0LgorICAgIGdsLnZpZXdw
b3J0KHZpZXdwb3J0WCwgdmlld3BvcnRZLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8vIFN0YXJ0
IHVzaW5nIHByb2dyYW0KKyAgICBnbC51c2VQcm9ncmFtKHZlcnRleFByb2dyYW1JRCk7CisgICAg
YXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ2dsVXNlUHJv
Z3JhbSgpJywgZmFsc2UsIHRydWUpOworCisgICAgLy8gRmV0Y2ggbG9jYXRpb24gZm9yIHBvc2l0
aW9ucyBwb3NpdGlvbnMuCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwb3NpdGlvbkxv
YyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHZlcnRleFByb2dyYW1JRCwgJ2RFUVBfUG9zaXRpb24n
KTsKKyAgICBpZiAocG9zaXRpb25Mb2MgPT09IC0xKSB7CisgICAgICAgIHRlc3RGYWlsZWRPcHRp
b25zKCJubyBsb2NhdGlvbiBmb3VuZCBmb3IgYXR0cmlidXRlICdkRVFQX1Bvc2l0aW9uJyIsIHRy
dWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSXRlcmF0ZSBhbGwg
dmFsdWUgYmxvY2tzLgorICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBzcGVj
LnZhbHVlQmxvY2tMaXN0Lmxlbmd0aDsgYmxvY2tOZHgrKykgeworICAgIC8qKiBAdHlwZSB7IHt2
YWx1ZXM6QXJyYXl9fSAqLyB2YXIgYmxvY2sgPSBzcGVjLnZhbHVlQmxvY2tMaXN0W2Jsb2NrTmR4
XTsKKworICAgICAgICAvLyBhbHdheXMgcmVuZGVyIGF0IGxlYXN0IG9uZSBwYXNzIGV2ZW4gaWYg
dGhlcmUgaXMgbm8gaW5wdXQvb3V0cHV0IGRhdGEKKyAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgbnVtUmVuZGVyUGFzc2VzID0gTWF0aC5tYXgoYmxvY2suYXJyYXlMZW5n
dGgsIDEpOworCisgICAgICAgIC8vIEl0ZXJhdGUgYWxsIGFycmF5IHN1Yi1jYXNlcy4KKyAgICAg
ICAgZm9yICh2YXIgYXJyYXlOZHggPSAwOyBhcnJheU5keCA8IG51bVJlbmRlclBhc3NlczsgYXJy
YXlOZHgrKykgeworICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
bnVtVmFsdWVzID0gYmxvY2sudmFsdWVzLmxlbmd0aDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nPn0gKi8gdmFyIHZlcnRleEFycmF5
cyA9IFtdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBhdHRyaWJWYWx1
ZU5keCA9IDA7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHBvc3REcmF3
RXJyb3I7CisKKyAgICAgICAgICAgIHZlcnRleEFycmF5cy5wdXNoKG5ldyBnbHVEcmF3VXRpbC5W
ZXJ0ZXhBcnJheUJpbmRpbmcoZ2wuRkxPQVQsIHBvc2l0aW9uTG9jLCA0LCBudW1WZXJ0aWNlc1Bl
ckRyYXcsIHNfcG9zaXRpb25zKSk7CisKKyAgICAgICAgICAgIC8vIENvbGxlY3QgVkEgcG9pbnRl
ciBmb3IgaW5wdXRzCisgICAgICAgICAgICBmb3IgKHZhciB2YWxOZHggPSAwOyB2YWxOZHggPCBu
dW1WYWx1ZXM7IHZhbE5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGJsb2NrLnZh
bHVlc1t2YWxOZHhdOworICAgICAgICAgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge3N0cmluZ30g
Ki8gdmFyIHZhbHVlTmFtZSA9IHZhbC52YWx1ZU5hbWU7CisgICAgICAgICAgICAgICAgLyoqIEBj
b25zdCBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIGRhdGFUeXBlID0gdmFs
LmRhdGFUeXBlOworICAgICAgICAgICAgICAgIC8qKiBAY29uc3QgQHR5cGUge251bWJlcn0gKi8g
dmFyIHNjYWxhclNpemUgPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFyU2l6ZSh2YWwu
ZGF0YVR5cGUpOworCisgICAgICAgICAgICAgICAgaWYgKHZhbC5zdG9yYWdlVHlwZSA9PT0gZ2xz
U2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVyQ2FzZS5TVE9SQUdFX0lOUFVUKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFJlcGxpY2F0ZSB2YWx1ZXMgZm91ciB0aW1lcy4KKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5fSAqLyB2YXIgc2NhbGFycyA9IFtdOworCisgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIHJlcE5keCA9IDA7IHJlcE5keCA8IG51bVZlcnRpY2VzUGVyRHJhdzsg
cmVwTmR4KyspCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCBzY2FsYXJTaXplOyBuZHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYXJz
W3JlcE5keCAqIHNjYWxhclNpemUgKyBuZHhdID0gdmFsLmVsZW1lbnRzW2FycmF5TmR4ICogc2Nh
bGFyU2l6ZSArIG5keF07CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlIG5hbWUg
cHJlZml4LgorICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGF0
dHJpYlByZWZpeCA9ICcnOworICAgICAgICAgICAgICAgICAgICAvLyBcdG9kbyBbMjAxMC0wNS0y
NyBwZXRyaV0gU2hvdWxkIGxhdHRlciBjb25kaXRpb24gb25seSBhcHBseSBmb3IgdmVydGV4IGNh
c2VzIChvciBhY3R1YWxseSBub24tZnJhZ21lbnQgY2FzZXMpPworICAgICAgICAgICAgICAgICAg
ICBpZiAoKHNwZWMuY2FzZVR5cGUgPT09IGdsc1NoYWRlckxpYnJhcnlDYXNlLmNhc2VUeXBlLkNB
U0VUWVBFX0ZSQUdNRU5UX09OTFkpIHx8IChnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlU2NhbGFy
VHlwZShkYXRhVHlwZSkgIT09ICdmbG9hdCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgYXR0
cmliUHJlZml4ID0gJ2FfJzsKKworICAgICAgICAgICAgICAgICAgICAvLyBJbnB1dCBhbHdheXMg
Z2l2ZW4gYXMgYXR0cmlidXRlLgorICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdmFyIGF0dHJpYk5hbWUgPSBhdHRyaWJQcmVmaXggKyB2YWx1ZU5hbWU7CisgICAgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYXR0cmliTG9jID0gZ2wuZ2V0
QXR0cmliTG9jYXRpb24odmVydGV4UHJvZ3JhbUlELCBhdHRyaWJOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGF0dHJpYkxvYyA9PT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJXYXJuaW5nOiBubyBsb2NhdGlvbiBmb3VuZCBmb3IgYXR0
cmlidXRlICciICsgYXR0cmliTmFtZSArICInIik7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlm
IChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoZGF0YVR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgbnVtQ29scyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRy
aXhOdW1Db2x1bW5zKGRhdGFUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1S
b3dzID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bVJvd3MoZGF0YVR5cGUpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKHNjYWxhclNpemUgPT09
IG51bUNvbHMgKiBudW1Sb3dzLCAnTWF0cml4IHNpemUgc2FuaXR5IGNoZWNrJywgZmFsc2UsIHRy
dWUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNv
bHM7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheXMucHVzaChu
ZXcgZ2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nKGdsLkZMT0FULCBhdHRyaWJMb2MgKyBp
LCBudW1Sb3dzLCBudW1WZXJ0aWNlc1BlckRyYXcsIHNjYWxhcnMsIHNjYWxhclNpemUgKiA0LCBp
ICogbnVtUm93cyAqIDQpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGV4QXJyYXlzLnB1c2gobmV3IGdsdURyYXdVdGlsLlZlcnRl
eEFycmF5QmluZGluZyhnbC5GTE9BVCwgYXR0cmliTG9jLCBzY2FsYXJTaXplLCBudW1WZXJ0aWNl
c1BlckRyYXcsIHNjYWxhcnMpKTsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAnc2V0IHZlcnRleCBhdHRyaWIgYXJy
YXknLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25zKGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9S
LCAnYmVmb3JlIHNldCB1bmlmb3JtcycsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgLy8g
c2V0IHVuaWZvcm0gdmFsdWVzIGZvciBvdXRwdXRzIChyZWZzKS4KKyAgICAgICAgICAgIGZvciAo
dmFyIHZhbE5keCA9IDA7IHZhbE5keCA8IG51bVZhbHVlczsgdmFsTmR4KyspIHsKKyAgICAgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXl9ICovIHZhciB2YWwxID0gYmxvY2sudmFsdWVzW3ZhbE5keF07
CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZhbHVlTmFtZTEgPSB2YWwx
LnZhbHVlTmFtZTsKKworICAgICAgICAgICAgICAgIGlmICh2YWwxLnN0b3JhZ2VUeXBlID09PSBn
bHNTaGFkZXJMaWJyYXJ5Q2FzZS5zaGFkZXJDYXNlLlNUT1JBR0VfT1VUUFVUKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFNldCByZWZlcmVuY2UgdmFsdWUuCisgICAgICAgICAgICAgICAgICAg
IGdsc1NoYWRlckxpYnJhcnlDYXNlLnNldFVuaWZvcm1WYWx1ZShnbCwgcGlwZWxpbmVQcm9ncmFt
SURzLCAncmVmXycgKyB2YWx1ZU5hbWUxLCB2YWwxLCBhcnJheU5keCk7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZ2wuZ2V0RXJyb3IoKSA9PT0gZ2wuTk9fRVJST1IsICdz
ZXQgcmVmZXJlbmNlIHVuaWZvcm1zJywgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAodmFsMS5zdG9yYWdlVHlwZSA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2Uuc2hhZGVy
Q2FzZS5TVE9SQUdFX1VOSUZPUk0pIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xzU2hhZGVyTGli
cmFyeUNhc2Uuc2V0VW5pZm9ybVZhbHVlKGdsLCBwaXBlbGluZVByb2dyYW1JRHMsIHZhbHVlTmFt
ZTEsIHZhbDEsIGFycmF5TmR4KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9u
cyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ3NldCB1bmlmb3JtcycsIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IENsZWFyLgorICAgICAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjEyNSwgMC4yNSwgMC41LCAxKTsK
KyAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICAgICAg
YXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJ2NsZWFyIGJ1
ZmZlcicsIGZhbHNlLCB0cnVlKTsKKworICAgICAgICAgICAgLy8gVXNlIHByb2dyYW0gb3IgcGlw
ZWxpbmUKKyAgICAgICAgICAgIGlmIChzcGVjLnNlcGFyYXRlUHJvZ3JhbXMpCisgICAgICAgICAg
ICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBnbC51c2VQcm9ncmFtKHZlcnRleFByb2dyYW1JRCk7CisKKyAgICAgICAgICAgIC8vIERy
YXcuCisgICAgICAgICAgICAvLyBpZiAodGVzc2VsbGF0aW9uUHJlc2VudCkgeworICAgICAgICAg
ICAgLy8gICAgIGdsLnBhdGNoUGFyYW1ldGVyaShnbC5QQVRDSF9WRVJUSUNFUywgMyk7CisgICAg
ICAgICAgICAvLyAgICAgYXNzZXJ0TXNnT3B0aW9ucyhnbC5nZXRFcnJvcigpID09PSBnbC5OT19F
UlJPUiwgJ3NldCBwYXRjaFBhcmFtZXRlcmkoUEFUQ0hfVkVSVElDRVMsIDMpJywgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgLy8gfQorCisgICAgICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGds
LCB2ZXJ0ZXhQcm9ncmFtSUQsIHZlcnRleEFycmF5cywgZ2x1RHJhd1V0aWwudHJpYW5nbGVzKHNf
aW5kaWNlcykpOworCisgICAgICAgICAgICBwb3N0RHJhd0Vycm9yID0gZ2wuZ2V0RXJyb3IoKTsK
KworICAgICAgICAgICAgaWYgKHNwZWMuZXhwZWN0UmVzdWx0ID09PSBnbHNTaGFkZXJMaWJyYXJ5
Q2FzZS5leHBlY3RSZXN1bHQuRVhQRUNUX1BBU1MpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge2dsdURyYXdVdGlsLlN1cmZhY2V9ICovIHZhciBzdXJmYWNlID0gbmV3IGdsdURyYXdVdGls
LlN1cmZhY2UoKTsKKyAgICAgICAgICAgICAgICAvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9ICov
IHZhciB3ID0gc19wb3NpdGlvbnNbM107CisgICAgICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWluWSA9IE1hdGguY2VpbCgoKC1xdWFkU2l6ZSAvIHcpICogMC41
ICsgMC41KSAqIGhlaWdodCArIDEuMCk7CisgICAgICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWF4WSA9IE1hdGguZmxvb3IoKCgrcXVhZFNpemUgLyB3KSAqIDAu
NSArIDAuNSkgKiBoZWlnaHQgLSAwLjUpOworICAgICAgICAgICAgICAgIC8qKiBAY29uc3QgQHR5
cGUge251bWJlcn0gKi8gdmFyIG1pblggPSBNYXRoLmNlaWwoKCgtcXVhZFNpemUgLyB3KSAqIDAu
NSArIDAuNSkgKiB3aWR0aCArIDEuMCk7CisgICAgICAgICAgICAgICAgLyoqIEBjb25zdCBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbWF4WCA9IE1hdGguZmxvb3IoKCgrcXVhZFNpemUgLyB3KSAqIDAu
NSArIDAuNSkgKiB3aWR0aCAtIDAuNSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRp
b25zKHBvc3REcmF3RXJyb3IgPT09IGdsLk5PX0VSUk9SLCAnZHJhdycsIGZhbHNlLCB0cnVlKTsK
KworICAgICAgICAgICAgICAgIHN1cmZhY2UucmVhZFN1cmZhY2UoZ2wsIHZpZXdwb3J0WCwgdmll
d3BvcnRZLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRNc2dPcHRpb25z
KGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAncmVhZCBwaXhlbHMnLCBmYWxzZSwgdHJ1
ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWdsc1NoYWRlckxpYnJhcnlDYXNlLmNoZWNrUGl4
ZWxzKHN1cmZhY2UsIG1pblgsIG1heFgsIG1pblksIG1heFkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWRPcHRpb25zKCgKKyAgICAgICAgICAgICAgICAgICAgICAgICdJTkNPUlJF
Q1QgUkVTVUxUIGZvciAodmFsdWUgYmxvY2sgJyArIChibG9ja05keCArIDEpICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICcgb2YgJyArIHNwZWMudmFsdWVCbG9ja0xpc3QubGVuZ3RoICsgJywg
c3ViLWNhc2UgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlOZHggKyAxKSArICcg
b2YgJyArIGJsb2NrLmFycmF5TGVuZ3RoICsgJyk6JworICAgICAgICAgICAgICAgICAgICApLCB0
cnVlKTsKKworICAgICAgICAgICAgICAgICAgICAvKiBUT0RPOiBQb3J0ICovCisgICAgICAgICAg
ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgIGxvZyA8PCBUZXN0TG9nOjpNZXNzYWdl
IDw8ICJGYWlsaW5nIHNoYWRlciBpbnB1dC9vdXRwdXQgdmFsdWVzOiIgPDwgVGVzdExvZzo6RW5k
TWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgICAgZHVtcFZhbHVlcyhibG9jaywgYXJyYXlOZHgp
OworCisgICAgICAgICAgICAgICAgICAgIC8vIER1bXAgaW1hZ2Ugb24gZmFpbHVyZS4KKyAgICAg
ICAgICAgICAgICAgICAgbG9nIDw8IFRlc3RMb2c6OkltYWdlKCJSZXN1bHQiLCAiUmVuZGVyZWQg
cmVzdWx0IGltYWdlIiwgc3VyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShudWxsKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlm
IChzcGVjLmV4cGVjdFJlc3VsdCA9PT0gZ2xzU2hhZGVyTGlicmFyeUNhc2UuZXhwZWN0UmVzdWx0
LkVYUEVDVF9WQUxJREFUSU9OX0ZBSUwpIHsKKyAgICAgICAgICAgICAgICAvKiogVE9ETzogR0xF
UyAzLjE6IEltcGxlbWVudCAqLworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdV
bnN1cHBvcnRlZCB0ZXN0IGNhc2UnLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICBnbC51c2VQcm9ncmFtKG51bGwpOworCisgICAgYXNzZXJ0TXNnT3B0aW9ucyhn
bC5nZXRFcnJvcigpID09PSBnbC5OT19FUlJPUiwgJycsIHRydWUsIHRydWUpOworICAgIHNldEN1
cnJlbnRUZXN0TmFtZSgnJyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK307CisKK2dsc1NoYWRlckxp
YnJhcnlDYXNlLnJ1blRlc3RDYXNlcyA9IGZ1bmN0aW9uKCkgeworLyoqIEB0eXBlIHtPYmplY3R9
ICovIHZhciBzdGF0ZSA9IHRjdVRlc3RDYXNlLnJ1bm5lcjsKKyAgICBpZiAoc3RhdGUubmV4dCgp
KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5pbml0
KCk7CisgICAgICAgICAgICBnbHNTaGFkZXJMaWJyYXJ5Q2FzZS5leGVjdXRlKCk7CisgICAgICAg
IH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZShlcnIpOwor
ICAgICAgICB9CisgICAgICAgIHRjdVRlc3RDYXNlLnJ1bm5lci5ydW5DYWxsYmFjayhnbHNTaGFk
ZXJMaWJyYXJ5Q2FzZS5ydW5UZXN0Q2FzZXMpOworICAgIH0gZWxzZQorICAgIHRjdVRlc3RDYXNl
LnJ1bm5lci50ZXJtaW5hdGUoKTsKKworfTsKKworZ2xzU2hhZGVyTGlicmFyeUNhc2UuZ2VuVmFs
dWVCbG9jayA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7CisgICAgLyoqIEB0eXBlIHtBcnJh
eX0gKi8gdmFsdWVzOiBbXSwKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gYXJyYXlMZW5ndGg6
IDAKKyAgICB9OworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1NoYWRlclJlbmRl
ckNhc2UuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9k
ZXFwL21vZHVsZXMvc2hhcmVkL2dsc1NoYWRlclJlbmRlckNhc2UuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFm
NTlkZTFmNmIyZDE4Zjg1MDMwMTU5N2QzZTJkNjg3NjAzNmVkOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxl
cy9zaGFyZWQvZ2xzU2hhZGVyUmVuZGVyQ2FzZS5qcwpAQCAtMCwwICsxLDEyMDAgQEAKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMg
VXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9q
ZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ21vZHVsZXMuc2hh
cmVkLmdsc1NoYWRlclJlbmRlckNhc2UnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1v
bi50Y3VJbWFnZUNvbXBhcmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VN
YXRyaXgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29n
LnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdm
cmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5j
b21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFz
ZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVTdHJp
bmcnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb20nKTsK
K2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmUnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5nbHVUZXh0dXJlVXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3Bl
bmdsLmdsdVNoYWRlclByb2dyYW0nKTsKKworZ29vZy5zY29wZShmdW5jdGlvbigpIHsKKyAgICB2
YXIgZ2xzU2hhZGVyUmVuZGVyQ2FzZSA9IG1vZHVsZXMuc2hhcmVkLmdsc1NoYWRlclJlbmRlckNh
c2U7CisKKyAgICB2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVNYXRoOwor
ICAgIHZhciBkZVN0cmluZyA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlU3RyaW5nOworICAg
IHZhciBkZVJhbmRvbSA9IGZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tOworICAgIHZh
ciBnbHVUZXh0dXJlVXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1VGV4dHVyZVV0aWw7CisgICAg
dmFyIGdsdVRleHR1cmUgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVRleHR1cmU7CisgICAgdmFyIGds
dURyYXdVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbDsKKyAgICB2YXIgdGN1SW1h
Z2VDb21wYXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VJbWFnZUNvbXBhcmU7CisgICAgdmFyIHRj
dVRleHR1cmUgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVRleHR1cmU7CisgICAgdmFyIHRjdU1hdHJp
eCA9IGZyYW1ld29yay5jb21tb24udGN1TWF0cml4OworICAgIHZhciB0Y3VSR0JBID0gZnJhbWV3
b3JrLmNvbW1vbi50Y3VSR0JBOworICAgIHZhciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21t
b24udGN1VGVzdENhc2U7CisgICAgdmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRj
dVN1cmZhY2U7CisgICAgdmFyIGdsdVNoYWRlclByb2dyYW0gPSBmcmFtZXdvcmsub3BlbmdsLmds
dVNoYWRlclByb2dyYW07CisKKyAgICAvKiogQHR5cGVkZWYge2Z1bmN0aW9uKGdsc1NoYWRlclJl
bmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHQpfSAqLyBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRl
ckV2YWxGdW5jOworCisgICAgLyoqIEBjb25zdCB7bnVtYmVyfSAqLyBnbHNTaGFkZXJSZW5kZXJD
YXNlLkdSSURfU0laRSA9IDY0OworICAgIC8qKiBAY29uc3Qge251bWJlcn0gKi8gZ2xzU2hhZGVy
UmVuZGVyQ2FzZS5NQVhfUkVOREVSX1dJRFRIID0gMTI4OworICAgIC8qKiBAY29uc3Qge251bWJl
cn0gKi8gZ2xzU2hhZGVyUmVuZGVyQ2FzZS5NQVhfUkVOREVSX0hFSUdIVCA9IDExMjsKKyAgICAv
KiogQGNvbnN0IHtBcnJheTxudW1iZXI+fSAqLyBnbHNTaGFkZXJSZW5kZXJDYXNlLkRFRkFVTFRf
Q0xFQVJfQ09MT1IgPSBbMC4xMjUsIDAuMjUsIDAuNSwgMS4wXTsKKyAgICAvKiogQGNvbnN0IHtu
dW1iZXJ9ICovIGdsc1NoYWRlclJlbmRlckNhc2UuTUFYX1VTRVJfQVRUUklCUyA9IDQ7CisgICAg
LyoqIEBjb25zdCB7bnVtYmVyfSAqLyBnbHNTaGFkZXJSZW5kZXJDYXNlLk1BWF9URVhUVVJFUyA9
IDQ7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSBhCisgICAgICog
QHJldHVybiB7dGN1UkdCQS5SR0JBfQorICAgICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2Uu
dG9SR0JBID0gZnVuY3Rpb24oYSkgeworICAgICAgICByZXR1cm4gdGN1UkdCQS5uZXdSR0JBQ29t
cG9uZW50cygKKyAgICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRoLnJvdW5kKGFbMF0gKiAyNTUu
MCksIDAsIDI1NSksCisgICAgICAgICAgICBkZU1hdGguY2xhbXAoTWF0aC5yb3VuZChhWzFdICog
MjU1LjApLCAwLCAyNTUpLAorICAgICAgICAgICAgZGVNYXRoLmNsYW1wKE1hdGgucm91bmQoYVsy
XSAqIDI1NS4wKSwgMCwgMjU1KSwKKyAgICAgICAgICAgIGRlTWF0aC5jbGFtcChNYXRoLnJvdW5k
KGFbM10gKiAyNTUuMCksIDAsIDI1NSkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBIZWxw
ZXIgZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0gIHs/KGdsdVRleHR1cmUuVGV4dHVyZTJEfGdsdVRl
eHR1cmUuVGV4dHVyZUN1YmV8Z2x1VGV4dHVyZS5UZXh0dXJlMkRBcnJheXxnbHVUZXh0dXJlLlRl
eHR1cmUzRCl9IHRleAorICAgICAqIEByZXR1cm4ge2dsdVRleHR1cmUuVHlwZX0KKyAgICAgKi8K
KyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLmdldFRleHR1cmVUeXBlID0gZnVuY3Rpb24odGV4KSB7
CisgICAgICAgIGlmICh0ZXggPT09IG51bGwgfHwgdGV4LmdldFR5cGUoKSA8PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIGdsdVRleHR1cmUuVHlwZS5UWVBFX05PTkU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiB0ZXguZ2V0VHlwZSgpOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGluZGVudAorICAgICAqLwor
ICAgIGdsc1NoYWRlclJlbmRlckNhc2UuTGluZVN0cmVhbSA9IGZ1bmN0aW9uKGluZGVudCkgewor
ICAgICAgICBpbmRlbnQgPSBpbmRlbnQgPT09IHVuZGVmaW5lZCA/IDAgOiBpbmRlbnQ7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1faW5kZW50ID0gaW5kZW50OworICAgICAg
ICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX3N0cmVhbTsKKyAgICAgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovIHRoaXMubV9zdHJpbmc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLkxpbmVTdHJl
YW0ucHJvdG90eXBlLnN0ciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgdGhpcy5tX3N0cmluZyA9
IHRoaXMubV9zdHJlYW07CisgICAgICAgICByZXR1cm4gdGhpcy5tX3N0cmluZzsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtICB7KGdsdVRleHR1
cmUuVGV4dHVyZTJEfGdsdVRleHR1cmUuVGV4dHVyZUN1YmV8Z2x1VGV4dHVyZS5UZXh0dXJlMkRB
cnJheXxnbHVUZXh0dXJlLlRleHR1cmUzRCk9fSB0ZXgKKyAgICAgKiBAcGFyYW0gIHt0Y3VUZXh0
dXJlLlNhbXBsZXI9fSBzYW1wbGVyCisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5U
ZXh0dXJlQmluZGluZyA9IGZ1bmN0aW9uKHRleCwgc2FtcGxlcikgeworICAgICAgICB0ZXggPSB0
ZXggPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0ZXg7CisgICAgICAgIHNhbXBsZXIgPSBzYW1wbGVy
ID09PSB1bmRlZmluZWQgPyBudWxsIDogc2FtcGxlcjsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHVU
ZXh0dXJlLlR5cGV9ICovIHRoaXMubV90eXBlID0gZ2xzU2hhZGVyUmVuZGVyQ2FzZS5nZXRUZXh0
dXJlVHlwZSh0ZXgpOworICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuU2FtcGxlcn0gKi8g
dGhpcy5tX3NhbXBsZXIgPSBzYW1wbGVyOworICAgICAgICAvKiogQHR5cGUgeyhnbHVUZXh0dXJl
LlRleHR1cmUyRHxnbHVUZXh0dXJlLlRleHR1cmVDdWJlfGdsdVRleHR1cmUuVGV4dHVyZTJEQXJy
YXl8Z2x1VGV4dHVyZS5UZXh0dXJlM0QpfSAqLworICAgICAgICB0aGlzLm1fYmluZGluZyA9IHRl
eDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VUZXh0dXJlLlNhbXBsZXJ9
IHNhbXBsZXIKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlRleHR1cmVCaW5kaW5n
LnByb3RvdHlwZS5zZXRTYW1wbGVyID0gZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICB0aGlz
Lm1fc2FtcGxlciA9IHNhbXBsZXI7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
KGdsdVRleHR1cmUuVGV4dHVyZTJEfGdsdVRleHR1cmUuVGV4dHVyZUN1YmV8Z2x1VGV4dHVyZS5U
ZXh0dXJlMkRBcnJheXxnbHVUZXh0dXJlLlRleHR1cmUzRCl9IHRleAorICAgICAqLworICAgIGds
c1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmcucHJvdG90eXBlLnNldFRleHR1cmUgPSBm
dW5jdGlvbih0ZXgpIHsKKyAgICAgICAgdGhpcy5tX3R5cGUgPSBnbHNTaGFkZXJSZW5kZXJDYXNl
LmdldFRleHR1cmVUeXBlKHRleCk7CisgICAgICAgIHRoaXMubV9iaW5kaW5nID0gdGV4OworICAg
IH07CisKKyAgICAvKiogQHJldHVybiB7Z2x1VGV4dHVyZS5UeXBlfSAqLworICAgIGdsc1NoYWRl
clJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmcucHJvdG90eXBlLmdldFR5cGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV90eXBlOworICAgIH07CisKKyAgICAvKiogQHJldHVy
biB7dGN1VGV4dHVyZS5TYW1wbGVyfSAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuVGV4dHVy
ZUJpbmRpbmcucHJvdG90eXBlLmdldFNhbXBsZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubV9zYW1wbGVyOworICAgIH07CisKKyAgICAvKiogQHJldHVybiB7KGdsdVRleHR1
cmUuVGV4dHVyZTJEfGdsdVRleHR1cmUuVGV4dHVyZUN1YmV8Z2x1VGV4dHVyZS5UZXh0dXJlMkRB
cnJheXxnbHVUZXh0dXJlLlRleHR1cmUzRCl9ICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5U
ZXh0dXJlQmluZGluZy5wcm90b3R5cGUuZ2V0QmluZGluZyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tX2JpbmRpbmc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25z
dHJ1Y3RvcgorICAgICAqIEBwYXJhbSAge251bWJlcn0gZ3JpZFNpemUKKyAgICAgKiBAcGFyYW0g
IHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtICB7bnVtYmVyfSBoZWlnaHQKKyAgICAgKiBA
cGFyYW0gIHtBcnJheTxudW1iZXI+fSBjb25zdENvb3JkcworICAgICAqIEBwYXJhbSAge0FycmF5
PHRjdU1hdHJpeC5NYXRyaXg+fSB1c2VyQXR0cmliVHJhbnNmb3JtcworICAgICAqIEBwYXJhbSAg
e0FycmF5PGdsc1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmc+fSB0ZXh0dXJlcworICAg
ICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWQgPSBmdW5jdGlvbihncmlkU2l6
ZSwgd2lkdGgsIGhlaWdodCwgY29uc3RDb29yZHMsIHVzZXJBdHRyaWJUcmFuc2Zvcm1zLCB0ZXh0
dXJlcykgeworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2dyaWRTaXplID0g
Z3JpZFNpemU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fbnVtVmVydGlj
ZXMgPSAoZ3JpZFNpemUgKyAxKSAqIChncmlkU2l6ZSArIDEpOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdGhpcy5tX251bVRyaWFuZ2xlcyA9IChncmlkU2l6ZSAqIGdyaWRTaXplICoy
KTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLm1fY29uc3RDb29y
ZHMgPSBjb25zdENvb3JkczsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTx0Y3VNYXRyaXguTWF0
cml4Pn0gKi8gdGhpcy5tX3VzZXJBdHRyaWJUcmFuc2Zvcm1zID0gdXNlckF0dHJpYlRyYW5zZm9y
bXM7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzU2hhZGVyUmVuZGVyQ2FzZS5UZXh0dXJl
QmluZGluZz59ICovIHRoaXMubV90ZXh0dXJlcyA9IHRleHR1cmVzOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLyB0aGlzLm1fc2NyZWVuUG9zID0gW107CisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59ICovIHRoaXMubV9wb3NpdGlvbnMg
PSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdGhpcy5t
X2Nvb3JkcyA9IFtdOyAgICAgICAgICAgIC8vITwgTmVhci11bml0IGNvb3JkaW5hdGVzLCByb3Vn
aGx5IFstMi4wIC4uIDIuMF0uCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVy
Pj59ICovIHRoaXMubV91bml0Q29vcmRzID0gW107ICAgICAgICAvLyE8IFBvc2l0aXZlLW9ubHkg
Y29vcmRpbmF0ZXMgWzAuMCAuLiAxLjVdLgorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHRoaXMubV9hdHRyaWJPbmUgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxB
cnJheTxudW1iZXI+Pn0gKi8gdGhpcy5tX3VzZXJBdHRyaWJzID0gW107CisgICAgICAgIGZvciAo
dmFyIGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IHRoaXMuZ2V0TnVtVXNlckF0dHJpYnMoKTsg
YXR0cmliTmR4KyspCisgICAgICAgICAgICB0aGlzLm1fdXNlckF0dHJpYnNbYXR0cmliTmR4XSA9
IFtdOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMubV9pbmRpY2Vz
ID0gW107CisKKyAgICAgICAgLyoqIEB0eXBlIEFycmF5PG51bWJlcj59ICovIHZhciB2aWV3cG9y
dFNjYWxlID0gW3dpZHRoLCBoZWlnaHQsIDAsIDBdOworICAgICAgICBmb3IgKHZhciB5ID0gMDsg
eSA8IGdyaWRTaXplICsgMTsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGdyaWRT
aXplICsgMTsgeCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN4
ID0geCAvIGdyaWRTaXplOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBz
eSA9IHkgLyBncmlkU2l6ZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
ZnggPSAyLjAgKiBzeCAtIDEuMDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgZnkgPSAyLjAgKiBzeSAtIDEuMDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdnR4TmR4ID0gKCh5ICogKGdyaWRTaXplICsgMSkpICsgeCk7CisKKyAgICAgICAgICAg
IHRoaXMubV9wb3NpdGlvbnNbdnR4TmR4XSA9IFtmeCwgZnksIDAuMCwgMS4wXTsKKyAgICAgICAg
ICAgIHRoaXMubV9hdHRyaWJPbmVbdnR4TmR4XSA9IDEuMDsKKyAgICAgICAgICAgIHRoaXMubV9z
Y3JlZW5Qb3NbdnR4TmR4XSA9IGRlTWF0aC5tdWx0aXBseShbc3gsIHN5LCAwLjAsIDEuMF0sIHZp
ZXdwb3J0U2NhbGUpOworICAgICAgICAgICAgdGhpcy5tX2Nvb3Jkc1t2dHhOZHhdID0gdGhpcy5n
ZXRDb29yZHMoc3gsIHN5KTsKKyAgICAgICAgICAgIHRoaXMubV91bml0Q29vcmRzW3Z0eE5keF0g
PSB0aGlzLmdldFVuaXRDb29yZHMoc3gsIHN5KTsKKworICAgICAgICAgICAgZm9yICh2YXIgYXR0
cmliTmR4ID0gMDsgYXR0cmliTmR4IDwgdGhpcy5nZXROdW1Vc2VyQXR0cmlicygpOyBhdHRyaWJO
ZHgrKykKKyAgICAgICAgICAgICAgICB0aGlzLm1fdXNlckF0dHJpYnNbYXR0cmliTmR4XVt2dHhO
ZHhdID0gdGhpcy5nZXRVc2VyQXR0cmliKGF0dHJpYk5keCwgc3gsIHN5KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIENvbXB1dGUgaW5kaWNlcy4KKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkg
PCBncmlkU2l6ZTsgeSsrKQorICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGdyaWRTaXplOyB4
KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RyaWRlID0gZ3Jp
ZFNpemUgKyAxOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2MDAgPSAo
eSAqIHN0cmlkZSkgKyB4OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2
MDEgPSAoeSAqIHN0cmlkZSkgKyB4ICsgMTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgdjEwID0gKCh5ICsgMSkgKiBzdHJpZGUpICsgeDsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdjExID0gKCh5ICsgMSkgKiBzdHJpZGUpICsgeCArIDE7CisK
KyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmFzZU5keCA9ICgoeSAqIGdy
aWRTaXplKSArIHgpICogNjsKKyAgICAgICAgICAgIHRoaXMubV9pbmRpY2VzW2Jhc2VOZHggKyAw
XSA9IHYxMDsKKyAgICAgICAgICAgIHRoaXMubV9pbmRpY2VzW2Jhc2VOZHggKyAxXSA9IHYwMDsK
KyAgICAgICAgICAgIHRoaXMubV9pbmRpY2VzW2Jhc2VOZHggKyAyXSA9IHYwMTsKKworICAgICAg
ICAgICAgdGhpcy5tX2luZGljZXNbYmFzZU5keCArIDNdID0gdjEwOworICAgICAgICAgICAgdGhp
cy5tX2luZGljZXNbYmFzZU5keCArIDRdID0gdjAxOworICAgICAgICAgICAgdGhpcy5tX2luZGlj
ZXNbYmFzZU5keCArIDVdID0gdjExOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKiBAcmV0
dXJuIHtudW1iZXJ9ICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZC5wcm90b3R5
cGUuZ2V0R3JpZFNpemUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9ncmlk
U2l6ZTsKKyAgICB9OworCisgICAgLyoqIEByZXR1cm4ge251bWJlcn0gKi8KKyAgICBnbHNTaGFk
ZXJSZW5kZXJDYXNlLlF1YWRHcmlkLnByb3RvdHlwZS5nZXROdW1WZXJ0aWNlcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX251bVZlcnRpY2VzOworICAgIH07CisKKyAgICAv
KiogQHJldHVybiB7bnVtYmVyfSAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWQu
cHJvdG90eXBlLmdldE51bVRyaWFuZ2xlcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tX251bVRyaWFuZ2xlczsKKyAgICB9OworCisgICAgLyoqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59ICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZC5wcm90b3R5cGUuZ2V0
Q29uc3RDb29yZHMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9jb25zdENv
b3JkczsKKyAgICB9OworCisgICAgLyoqIEByZXR1cm4ge0FycmF5PHRjdU1hdHJpeC5NYXRyaXg+
fSAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWQucHJvdG90eXBlLmdldFVzZXJB
dHRyaWJUcmFuc2Zvcm1zID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fdXNl
ckF0dHJpYlRyYW5zZm9ybXM7CisgICAgfTsKKworICAgIC8qKiBAcmV0dXJuIHtBcnJheTxnbHNT
aGFkZXJSZW5kZXJDYXNlLlRleHR1cmVCaW5kaW5nPn0gKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLlF1YWRHcmlkLnByb3RvdHlwZS5nZXRUZXh0dXJlcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tX3RleHR1cmVzOworICAgIH07CisKKyAgICAvKiogQHJldHVybiB7QXJy
YXk8QXJyYXk8bnVtYmVyPj59ICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZC5w
cm90b3R5cGUuZ2V0UG9zaXRpb25zID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm1fcG9zaXRpb25zOworICAgIH07CisKKyAgICAvKiogQHJldHVybiB7QXJyYXk8bnVtYmVyPn0g
Ki8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlF1YWRHcmlkLnByb3RvdHlwZS5nZXRBdHRyaWJP
bmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV9hdHRyaWJPbmU7CisgICAg
fTsKKworICAgIC8qKiBAcmV0dXJuIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8KKyAgICBnbHNT
aGFkZXJSZW5kZXJDYXNlLlF1YWRHcmlkLnByb3RvdHlwZS5nZXRDb29yZHNBcnJheSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tX2Nvb3JkczsKKyAgICB9OworCisgICAgLyoq
IEByZXR1cm4ge0FycmF5PEFycmF5PG51bWJlcj4+fSAqLworICAgIGdsc1NoYWRlclJlbmRlckNh
c2UuUXVhZEdyaWQucHJvdG90eXBlLmdldFVuaXRDb29yZHNBcnJheSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5tX3VuaXRDb29yZHM7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRyaWJOZHgKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1i
ZXI+fQorICAgICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWQucHJvdG90eXBl
LmdldFVzZXJBdHRyaWJCeUluZGV4ID0gZnVuY3Rpb24oYXR0cmliTmR4KSB7CisgICAgICAgIHJl
dHVybiB0aGlzLm1fdXNlckF0dHJpYnNbYXR0cmliTmR4XTsKKyAgICB9OworCisgICAgLyoqIEBy
ZXR1cm4ge0FycmF5PG51bWJlcj59ICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3Jp
ZC5wcm90b3R5cGUuZ2V0SW5kaWNlcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5tX2luZGljZXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBz
eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzeQorICAgICAqIEByZXR1cm4ge0FycmF5PG51bWJl
cj59CisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZC5wcm90b3R5cGUu
Z2V0Q29vcmRzID0gZnVuY3Rpb24oc3gsIHN5KSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgZnggPSAyLjAgKiBzeCAtIDEuMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBmeSA9IDIuMCAqIHN5IC0gMS4wOworICAgICAgICByZXR1cm4gW2Z4LCBmeSwgLWZ4
ICsgMC4zMyAqIGZ5LCAtMC4yNzUgKiBmeCAtIGZ5XTsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHN4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN5CisgICAgICog
QHJldHVybiB7QXJyYXk8bnVtYmVyPn0KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNl
LlF1YWRHcmlkLnByb3RvdHlwZS5nZXRVbml0Q29vcmRzID0gZnVuY3Rpb24oc3gsIHN5KSB7Cisg
ICAgICAgIHJldHVybiBbc3gsIHN5LCAwLjMzICogc3ggKyAwLjUgKiBzeSwgMC41ICogc3ggKyAw
LjI1ICogc3ldOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Cisg
ICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZC5wcm90b3R5cGUuZ2V0TnVt
VXNlckF0dHJpYnMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV91c2VyQXR0
cmliVHJhbnNmb3Jtcy5sZW5ndGg7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBhdHRyaWJOZHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3gKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gc3kKKyAgICAgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICAgICAqLwor
ICAgIGdsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWQucHJvdG90eXBlLmdldFVzZXJBdHRyaWIg
PSBmdW5jdGlvbihhdHRyaWJOZHgsIHN4LCBzeSkgeworICAgICAgICAvLyBob21vZ2VuZW91cyBu
b3JtYWxpemVkIHNjcmVlbi1zcGFjZSBjb29yZGluYXRlcworICAgICAgICByZXR1cm4gdGN1TWF0
cml4Lm11bHRpcGx5TWF0VmVjKHRoaXMubV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhd
LCBbc3gsIHN5LCAwLjAsIDEuMF0pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAY29uc3Ry
dWN0b3IKKyAgICAgKiBAc3RydWN0CisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5T
aGFkZXJTYW1wbGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVy
ZS5TYW1wbGVyfSAqLyB0aGlzLnNhbXBsZXI7CisgICAgICAgIC8qKiBAdHlwZSB7dGN1VGV4dHVy
ZS5UZXh0dXJlMkR9ICovIHRoaXMudGV4MkQgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge3Rj
dVRleHR1cmUuVGV4dHVyZUN1YmV9ICovIHRoaXMudGV4Q3ViZSA9IG51bGw7CisgICAgICAgIC8q
KiBAdHlwZSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheX0gKi8gdGhpcy50ZXgyREFycmF5ID0g
bnVsbDsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJlLlRleHR1cmUzRH0gKi8gdGhpcy50
ZXgzRCA9IG51bGw7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBjb25zdHJ1Y3RvcgorICAg
ICAqIEBwYXJhbSAge2dsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWR9IHF1YWRHcmlkXworICAg
ICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHQgPSBmdW5jdGlv
bihxdWFkR3JpZF8pIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
LmNvb3JkcyA9IFswLCAwLCAwLCAwXQorICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIHRoaXMudW5pdENvb3JkcyA9IFswLCAwLCAwLCAwXQorICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHRoaXMuY29uc3RDb29yZHMgPSBxdWFkR3JpZF8uZ2V0Q29uc3RDb29y
ZHMoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdGhpcy5p
bl8gPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNTaGFkZXJSZW5kZXJDYXNlLlNo
YWRlclNhbXBsZXI+fSAqLyB0aGlzLnRleHR1cmVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7
QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy5jb2xvciA9IFswLCAwLCAwLCAwLjBdOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMuaXNEaXNjYXJkZWQgPSBmYWxzZTsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlF1YWRHcmlkfSAqLyB0aGlzLnF1YWRHcmlk
ID0gcXVhZEdyaWRfOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzU2hhZGVyUmVuZGVy
Q2FzZS5UZXh0dXJlQmluZGluZz59ICovIHZhciBiaW5kaW5ncyA9IHRoaXMucXVhZEdyaWQuZ2V0
VGV4dHVyZXMoKTsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhiaW5kaW5ncy5sZW5ndGggPD0g
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5NQVhfVEVYVFVSRVMsICdUb28gbWFueSBiaW5kaW5ncy4nLCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gRmlsbCBpbiB0ZXh0dXJlIGFycmF5LgorICAgICAg
ICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBiaW5kaW5ncy5sZW5ndGg7IG5keCsrKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2dsc1NoYWRlclJlbmRlckNhc2UuVGV4dHVyZUJpbmRpbmd9ICov
IHZhciBiaW5kaW5nID0gYmluZGluZ3NbbmR4XTsKKworICAgICAgICAgICAgdGhpcy50ZXh0dXJl
c1tuZHhdID0gbmV3IGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyU2FtcGxlcigpOworCisgICAg
ICAgICAgICBpZiAoYmluZGluZy5nZXRUeXBlKCkgPT0gZ2x1VGV4dHVyZS5UeXBlLlRZUEVfTk9O
RSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdGhpcy50ZXh0dXJl
c1tuZHhdLnNhbXBsZXIgPSBiaW5kaW5nLmdldFNhbXBsZXIoKTsKKworICAgICAgICAgICAgc3dp
dGNoIChiaW5kaW5nLmdldFR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgZ2x1VGV4dHVy
ZS5UeXBlLlRZUEVfMkQ6CisgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dHVyZXNbbmR4XS50
ZXgyRCA9IGJpbmRpbmcuZ2V0QmluZGluZygpLmdldFJlZlRleHR1cmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVUZXh0dXJlLlR5cGUuVFlQ
RV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlc1tuZHhdLnRleEN1
YmUgPSBiaW5kaW5nLmdldEJpbmRpbmcoKS5nZXRSZWZUZXh0dXJlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZ2x1VGV4dHVyZS5UeXBlLlRZUEVf
MkRfQVJSQVk6CisgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dHVyZXNbbmR4XS50ZXgyREFy
cmF5ID0gYmluZGluZy5nZXRCaW5kaW5nKCkuZ2V0UmVmVGV4dHVyZSgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGdsdVRleHR1cmUuVHlwZS5UWVBF
XzNEOgorICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmVzW25keF0udGV4M0QgPSBiaW5k
aW5nLmdldEJpbmRpbmcoKS5nZXRSZWZUZXh0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmluZGluZyB0eXBlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3gK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3kKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlckV2YWxDb250ZXh0LnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKHN4LCBzeSkg
eworICAgICAgICAvLyBDbGVhciBvbGQgdmFsdWVzCisgICAgICAgIHRoaXMuY29sb3IgPSBbMC4w
LCAwLjAsIDAuMCwgMS4wXTsKKyAgICAgICAgdGhpcy5pc0Rpc2NhcmRlZCA9IGZhbHNlOworCisg
ICAgICAgIC8vIENvbXB1dGUgY29vcmRzCisgICAgICAgIHRoaXMuY29vcmRzID0gdGhpcy5xdWFk
R3JpZC5nZXRDb29yZHMoc3gsIHN5KTsKKyAgICAgICAgdGhpcy51bml0Q29vcmRzID0gdGhpcy5x
dWFkR3JpZC5nZXRVbml0Q29vcmRzKHN4LCBzeSk7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB1c2Vy
IGF0dHJpYnV0ZXMuCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQXR0cmli
cyA9IHRoaXMucXVhZEdyaWQuZ2V0TnVtVXNlckF0dHJpYnMoKTsKKyAgICAgICAgYXNzZXJ0TXNn
T3B0aW9ucyhudW1BdHRyaWJzIDw9IGdsc1NoYWRlclJlbmRlckNhc2UuTUFYX1VTRVJfQVRUUklC
UywgJ251bUF0dHJpYnMgb3V0IG9mIHJhbmdlJywgZmFsc2UsIHRydWUpOworICAgICAgICBmb3Ig
KHZhciBhdHRyaWJOZHggPSAwOyBhdHRyaWJOZHggPCBudW1BdHRyaWJzOyBhdHRyaWJOZHgrKykK
KyAgICAgICAgICAgIHRoaXMuaW5fW2F0dHJpYk5keF0gPSB0aGlzLnF1YWRHcmlkLmdldFVzZXJB
dHRyaWIoYXR0cmliTmR4LCBzeCwgc3kpOworICAgIH07CisKKyAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlckV2YWxDb250ZXh0LnByb3RvdHlwZS5kaXNjYXJkID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHRoaXMuaXNEaXNjYXJkZWQgPSB0cnVlOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gdW5pdE5keAorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
Y29vcmRzCisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsQ29udGV4
dC5wcm90b3R5cGUudGV4dHVyZTJEID0gZnVuY3Rpb24odW5pdE5keCwgY29vcmRzKSB7CisgICAg
ICAgIGlmICh0aGlzLnRleHR1cmVzLmxlbmd0aCA+IDAgJiYgdGhpcy50ZXh0dXJlc1t1bml0TmR4
XS50ZXgyRCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHR1cmVzW3VuaXROZHhdLnRleDJE
LmdldFZpZXcoKS5zYW1wbGUodGhpcy50ZXh0dXJlc1t1bml0TmR4XS5zYW1wbGVyLCBjb29yZHMs
IDAuMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBbMC4wLCAwLjAsIDAuMCwg
MS4wXTsKKyAgICB9OworCisgICAgLyoqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFk
ZXJFdmFsQ29udGV4dH0gYyAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuZXZhbENvb3Jkc1Bh
c3N0aHJvdWdoWCA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgYy5jb2xvclswXSA9IGMuY29vcmRz
WzBdOworICAgIH07CisKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRl
ckV2YWxDb250ZXh0fSBjICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5ldmFsQ29vcmRzUGFz
c3Rocm91Z2hYWSA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgdmFyIHN3aXp6bGUwMSA9IGRlTWF0
aC5zd2l6emxlKGMuY29vcmRzLCBbMCwgMV0pOworICAgICAgICBjLmNvbG9yWzBdID0gc3dpenps
ZTAxWzBdOworICAgICAgICBjLmNvbG9yWzFdID0gc3dpenpsZTAxWzFdOworICAgIH07CisKKyAg
ICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjICov
CisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5ldmFsQ29vcmRzUGFzc3Rocm91Z2hYWVogPSBmdW5j
dGlvbihjKSB7CisgICAgICAgIHZhciBzd2l6emxlMDEyID0gZGVNYXRoLnN3aXp6bGUoYy5jb29y
ZHMsIFswLCAxLCAyXSk7CisgICAgICAgIGMuY29sb3JbMF0gPSBzd2l6emxlMDEyWzBdOworICAg
ICAgICBjLmNvbG9yWzFdID0gc3dpenpsZTAxMlsxXTsKKyAgICAgICAgYy5jb2xvclsyXSA9IHN3
aXp6bGUwMTJbMl07CisgICAgfTsKKworICAgIC8qKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyRXZhbENvbnRleHR9IGMgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLmV2YWxD
b29yZHNQYXNzdGhyb3VnaCA9IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgYy5jb2xvciA9IGMuY29v
cmRzOworICAgIH07CisKKyAgICAvKiogQHBhcmFtIHtnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRl
ckV2YWxDb250ZXh0fSBjICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5ldmFsQ29vcmRzU3dp
enpsZVdaWVggPSBmdW5jdGlvbihjKSB7CisgICAgICAgIGMuY29sb3IgPSBkZU1hdGguc3dpenps
ZShjLmNvb3JkcywgWzMsIDIsIDEsIDBdKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQGNv
bnN0cnVjdG9yCisgICAgICogQHBhcmFtICB7P2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZh
bEZ1bmM9fSBldmFsRnVuYworICAgICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVy
RXZhbHVhdG9yID0gZnVuY3Rpb24oZXZhbEZ1bmMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHs/Z2xz
U2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsRnVuY30gKi8gdGhpcy5tX2V2YWxGdW5jID0gZXZh
bEZ1bmMgfHwgbnVsbDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWxDb250ZXh0fSBjdHgKKyAgICAgKi8KKyAgICBnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlckV2YWx1YXRvci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlv
bihjdHgpIHsKKyAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fZXZhbEZ1bmMgIT09IG51
bGwsICdObyBldmFsdWF0aW9uIGZ1bmN0aW9uIHNwZWNpZmllZC4nLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXMubV9ldmFsRnVuYyhjdHgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
Y29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7dGN1VGVzdENhc2UuRGVxcFRlc3R9CisgICAg
ICogQHBhcmFtICB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtICB7c3RyaW5nfSBkZXNjcmlw
dGlvbgorICAgICAqIEBwYXJhbSAge2Jvb2xlYW59IGlzVmVydGV4Q2FzZQorICAgICAqIEBwYXJh
bSAge2dsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbEZ1bmM9fSBldmFsRnVuYworICAgICAq
LworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZSA9IGZ1bmN0aW9uKG5h
bWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWxGdW5jKSB7CisgICAgICAgIHRjdVRl
c3RDYXNlLkRlcXBUZXN0LmNhbGwodGhpcywgbmFtZSwgZGVzY3JpcHRpb24pOworICAgICAgICAv
LyBldmFsRnVuYyA9IGV2YWxGdW5jIHx8IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVh
bn0gKi8gdGhpcy5tX2lzVmVydGV4Q2FzZSA9IGlzVmVydGV4Q2FzZTsKKyAgICAgICAgLyoqIEB0
eXBlIHs/Z2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJFdmFsRnVuY30gKi8gdGhpcy5tX2RlZmF1
bHRFdmFsdWF0b3IgPSBldmFsRnVuYyB8fCBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsc1No
YWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9yfSAqLyB0aGlzLm1fZXZhbHVhdG9yID0gbmV3
IGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyRXZhbHVhdG9yKHRoaXMubV9kZWZhdWx0RXZhbHVh
dG9yKTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubV92ZXJ0U2hhZGVyU291
cmNlID0gJyc7CisgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fZnJhZ1NoYWRl
clNvdXJjZSA9ICcnOworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHRoaXMu
bV9jbGVhckNvbG9yID0gZ2xzU2hhZGVyUmVuZGVyQ2FzZS5ERUZBVUxUX0NMRUFSX0NPTE9SOwor
ICAgICAgICAvKiogQHR5cGUge0FycmF5PHRjdU1hdHJpeC5NYXRyaXg+fSAqLyB0aGlzLm1fdXNl
ckF0dHJpYlRyYW5zZm9ybXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxnbHNTaGFk
ZXJSZW5kZXJDYXNlLlRleHR1cmVCaW5kaW5nPn0gKi8gdGhpcy5tX3RleHR1cmVzID0gW107Cisg
ICAgICAgIC8qKiBAdHlwZSB7P2dsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0gKi8gdGhp
cy5tX3Byb2dyYW0gPSBudWxsOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0gIHtzdHJpbmd9IGRlc2NyaXB0aW9uCisgICAgICog
QHBhcmFtICB7Ym9vbGVhbn0gaXNWZXJ0ZXhDYXNlCisgICAgICogQHBhcmFtICB7Z2xzU2hhZGVy
UmVuZGVyQ2FzZS5TaGFkZXJFdmFsdWF0b3J9IGV2YWx1YXRvcgorICAgICAqIEByZXR1cm4ge2ds
c1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZX0KKyAgICAgKi8KKyAgICBnbHNTaGFk
ZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UubmV3V2l0aEV2YWx1YXRvciA9IGZ1bmN0aW9u
KG5hbWUsIGRlc2NyaXB0aW9uLCBpc1ZlcnRleENhc2UsIGV2YWx1YXRvcikgeworICAgICAgICB2
YXIgcmVuZGVyQ2FzZSA9IG5ldyBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2Uo
bmFtZSwgZGVzY3JpcHRpb24sIGlzVmVydGV4Q2FzZSk7CisgICAgICAgIHJlbmRlckNhc2UubV9l
dmFsdWF0b3IgPSBldmFsdWF0b3I7CisgICAgICAgIHJldHVybiByZW5kZXJDYXNlOworICAgIH07
CisKKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFwVGVzdC5wcm90b3R5cGUpOworICAgIGdsc1No
YWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBn
bHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2U7CisKKyAgICBnbHNTaGFkZXJSZW5k
ZXJDYXNlLlNoYWRlclJlbmRlckNhc2UucHJvdG90eXBlLmRlaW5pdCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB0aGlzLm1fcHJvZ3JhbSA9IG51bGw7CisgICAgfTsKKworICAgIGdsc1NoYWRlclJl
bmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB0aGlzLnBvc3Rpbml0KCk7CisgICAgfTsKKworICAgIGdsc1NoYWRlclJlbmRlckNh
c2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUucG9zdGluaXQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaWYgKHRoaXMubV92ZXJ0U2hhZGVyU291cmNlLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm1f
ZnJhZ1NoYWRlclNvdXJjZS5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgIGFzc2VydE1zZ09w
dGlvbnModGhpcy5tX3ZlcnRTaGFkZXJTb3VyY2UubGVuZ3RoID09PSAwICYmIHRoaXMubV9mcmFn
U2hhZGVyU291cmNlLmxlbmd0aCA9PT0gMCwgJ05vIHNoYWRlciBzb3VyY2UuJywgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgdGhpcy5zZXR1cFNoYWRlckRhdGEoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGFzc2VydE1zZ09wdGlvbnMoIXRoaXMubV9wcm9ncmFtLCAnUHJvZ3JhbSBkZWZpbmVk
LicsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5tX3Byb2dyYW0gPSBuZXcgZ2x1U2hhZGVy
UHJvZ3JhbS5TaGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291
cmNlcyh0aGlzLm1fdmVydFNoYWRlclNvdXJjZSwgdGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2UpKTsK
KworICAgICAgICB0cnkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUodGhpcy5t
X3Byb2dyYW0ucHJvZ3JhbS5pbmZvLmluZm9Mb2cpOyAvLyBBbHdheXMgbG9nIHNoYWRlciBwcm9n
cmFtLgorCisgICAgICAgICAgICBpZiAoIXRoaXMubV9wcm9ncmFtLmlzT2soKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNoYWRlciBjb21waWxlIGVycm9yLiIpOworICAgICAg
ICB9CisgICAgICAgIGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIC8vIENsZWFuIHVw
LgorICAgICAgICAgICAgdGhpcy5kZWluaXQoKTsKKyAgICAgICAgICAgIHRocm93IGV4Y2VwdGlv
bjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHt0Y3VUZXN0
Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAgICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hh
ZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUucG9zdGl0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgYXNzZXJ0TXNnT3B0aW9ucyh0aGlzLm1fcHJvZ3JhbSAhPT0gbnVsbCwgJ1Byb2dyYW0gbm90
IHNwZWNpZmllZC4nLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIC8qKiBAdHlwZSB7P1dlYkdMUHJv
Z3JhbX0gKi8gdmFyIHByb2dyYW1JRCA9IHRoaXMubV9wcm9ncmFtLmdldFByb2dyYW0oKTsKKyAg
ICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtSUQpOworCisgICAgICAgIC8vIENyZWF0ZSBxdWFk
IGdyaWQuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZpZXdwb3J0
U2l6ZSA9IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyB2YXIgd2lkdGggPSB2aWV3cG9ydFNpemVbMF07CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgaGVpZ2h0ID0gdmlld3BvcnRTaXplWzFdOworCisgICAgICAgIC8vIFx0b2Rv
IFtwZXRyaV0gQmV0dGVyIGhhbmRsaW5nIG9mIGNvbnN0Q29vcmRzIChyZW5kZXIgaW4gbXVsdGlw
bGUgY2h1bmtzLCB2YXJ5IGNvb3JkcykuCisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2hhZGVyUmVu
ZGVyQ2FzZS5RdWFkR3JpZH0gKi8KKyAgICAgICAgdmFyIHF1YWRHcmlkID0gbmV3IGdsc1NoYWRl
clJlbmRlckNhc2UuUXVhZEdyaWQoCisgICAgICAgICAgICB0aGlzLm1faXNWZXJ0ZXhDYXNlID8g
Z2xzU2hhZGVyUmVuZGVyQ2FzZS5HUklEX1NJWkUgOiA0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAg
ICAgICAgWzAuMTI1LCAwLjI1LCAwLjUsIDEuMF0sIHRoaXMubV91c2VyQXR0cmliVHJhbnNmb3Jt
cywgdGhpcy5tX3RleHR1cmVzKTsKKworICAgICAgICAvLyBSZW5kZXIgcmVzdWx0LgorICAgICAg
ICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlc0ltYWdlID0gbmV3IHRj
dVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5yZW5kZXIocmVz
SW1hZ2UsIHByb2dyYW1JRCwgcXVhZEdyaWQpOworCisgICAgICAgIC8vIENvbXB1dGUgcmVmZXJl
bmNlLgorICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHJlZklt
YWdlID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgaWYg
KHRoaXMubV9pc1ZlcnRleENhc2UpCisgICAgICAgICAgICB0aGlzLmNvbXB1dGVWZXJ0ZXhSZWZl
cmVuY2UocmVmSW1hZ2UsIHF1YWRHcmlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5jb21wdXRlRnJhZ21lbnRSZWZlcmVuY2UocmVmSW1hZ2UsIHF1YWRHcmlkKTsKKworICAgICAg
ICAvLyBDb21wYXJlLgorICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciB0ZXN0T2sg
PSB0aGlzLmNvbXBhcmVJbWFnZXMocmVzSW1hZ2UsIHJlZkltYWdlLCAwLjA1KTsKKworICAgICAg
ICAvLyBEZS1pbml0aWFsaXplLgorICAgICAgICBnbC51c2VQcm9ncmFtKG51bGwpOworCisgICAg
ICAgIGlmICghdGVzdE9rKQorICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoIkZhaWwiLCBm
YWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCJQYXNz
IiwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHRjdVRlc3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RP
UDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1VGVzdENhc2UuSXRlcmF0
ZVJlc3VsdH0KKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNh
c2UucHJvdG90eXBlLml0ZXJhdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cG9zdGl0ZXJhdGUoKTsKKyAgICB9OworCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJS
ZW5kZXJDYXNlLnByb3RvdHlwZS5zZXR1cFNoYWRlckRhdGEgPSBmdW5jdGlvbigpIHt9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHs/V2ViR0xQcm9ncmFtfSBwcm9ncmFtSWQKKyAgICAgKi8K
KyAgICBnbHNTaGFkZXJSZW5kZXJDYXNlLlNoYWRlclJlbmRlckNhc2UucHJvdG90eXBlLnNldHVw
ID0gZnVuY3Rpb24ocHJvZ3JhbUlkKSB7fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1dl
YkdMUHJvZ3JhbX0gcHJvZ3JhbUlkCisgICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb25z
dENvb3JkcworICAgICAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2Fz
ZS5wcm90b3R5cGUuc2V0dXBVbmlmb3JtcyA9IGZ1bmN0aW9uKHByb2dyYW1JZCwgY29uc3RDb29y
ZHMpIHt9OworCisgICAgLyoqCisgICAgKiBAcmV0dXJuICB7QXJyYXk8bnVtYmVyPn0KKyAgICAq
LworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5cGUuZ2V0
Vmlld3BvcnRTaXplID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBbTWF0aC5taW4oZ2wu
Y2FudmFzLndpZHRoLCBnbHNTaGFkZXJSZW5kZXJDYXNlLk1BWF9SRU5ERVJfV0lEVEgpLAorICAg
ICAgICAgICAgICAgIE1hdGgubWluKGdsLmNhbnZhcy5oZWlnaHQsIGdsc1NoYWRlclJlbmRlckNh
c2UuTUFYX1JFTkRFUl9IRUlHSFQpXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHs/V2ViR0xQcm9ncmFtfSBwcm9ncmFtSWQKKyAgICAgKi8KKyAgICBnbHNTaGFkZXJSZW5kZXJD
YXNlLlNoYWRlclJlbmRlckNhc2UucHJvdG90eXBlLnNldHVwRGVmYXVsdElucHV0cyA9IGZ1bmN0
aW9uKHByb2dyYW1JZCkgeworICAgICAgICAvLyBTRVRVUCBVTklGT1JNUy4KKyAgICAgICAgZ2xz
U2hhZGVyUmVuZGVyQ2FzZS5zZXR1cERlZmF1bHRVbmlmb3Jtcyhwcm9ncmFtSWQpOworCisgICAg
ICAgIC8vIFNFVFVQIFRFWFRVUkVTLgorICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0
aGlzLm1fdGV4dHVyZXMubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHNTaGFkZXJSZW5kZXJDYXNlLlRleHR1cmVCaW5kaW5nfSAqLyB2YXIgdGV4ID0gdGhpcy5tX3Rl
eHR1cmVzW25keF07CisgICAgICAgICAgICAvKiogQHR5cGUge3RjdVRleHR1cmUuU2FtcGxlcn0g
Ki8gdmFyIHNhbXBsZXIgPSB0ZXguZ2V0U2FtcGxlcigpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB0ZXhUYXJnZXQgPSBnbC5OT05FOworICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB0ZXhPYmogPSAwOworCisgICAgICAgICAgICBpZiAodGV4Lmdl
dFR5cGUoKSA9PT0gZ2x1VGV4dHVyZS5UeXBlLlRZUEVfTk9ORSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgc3dpdGNoICh0ZXguZ2V0VHlwZSgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBnbHVUZXh0dXJlLlR5cGUuVFlQRV8yRDoKKyAgICAgICAgICAgICAgICAg
ICAgdGV4VGFyZ2V0ID0gZ2wuVEVYVFVSRV8yRDsKKyAgICAgICAgICAgICAgICAgICAgdGV4T2Jq
ID0gdGV4LmdldEJpbmRpbmcoKS5nZXRHTFRleHR1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVUZXh0dXJlLlR5cGUuVFlQRV9DVUJFX01B
UDoKKyAgICAgICAgICAgICAgICAgICAgdGV4VGFyZ2V0ID0gZ2wuVEVYVFVSRV9DVUJFX01BUDsK
KyAgICAgICAgICAgICAgICAgICAgdGV4T2JqID0gdGV4LmdldEJpbmRpbmcoKS5nZXRHTFRleHR1
cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBn
bHVUZXh0dXJlLlR5cGUuVFlQRV8yRF9BUlJBWToKKyAgICAgICAgICAgICAgICAgICAgdGV4VGFy
Z2V0ID0gZ2wuVEVYVFVSRV8yRF9BUlJBWTsKKyAgICAgICAgICAgICAgICAgICAgdGV4T2JqID0g
dGV4LmdldEJpbmRpbmcoKS5nZXRHTFRleHR1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBnbHVUZXh0dXJlLlR5cGUuVFlQRV8zRDoKKyAgICAg
ICAgICAgICAgICAgICAgdGV4VGFyZ2V0ID0gZ2wuVEVYVFVSRV8zRDsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4T2JqID0gdGV4LmdldEJpbmRpbmcoKS5nZXRHTFRleHR1cmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUeXBlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCsgbmR4KTsK
KyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKHRleFRhcmdldCwgdGV4T2JqKTsKKyAgICAgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkodGV4VGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUywgZ2x1VGV4
dHVyZVV0aWwuZ2V0R0xXcmFwTW9kZShzYW1wbGVyLndyYXBTKSk7CisgICAgICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKHRleFRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsdVRleHR1cmVVdGls
LmdldEdMV3JhcE1vZGUoc2FtcGxlci53cmFwVCkpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1l
dGVyaSh0ZXhUYXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2x1VGV4dHVyZVV0aWwuZ2V0
R0xGaWx0ZXJNb2RlKHNhbXBsZXIubWluRmlsdGVyKSk7CisgICAgICAgICAgICBnbC50ZXhQYXJh
bWV0ZXJpKHRleFRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbHVUZXh0dXJlVXRpbC5n
ZXRHTEZpbHRlck1vZGUoc2FtcGxlci5tYWdGaWx0ZXIpKTsKKworICAgICAgICAgICAgaWYgKHRl
eFRhcmdldCA9PT0gZ2wuVEVYVFVSRV8zRCkKKyAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKHRleFRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1IsIGdsdVRleHR1cmVVdGlsLmdldEdMV3Jh
cE1vZGUoc2FtcGxlci53cmFwUikpOworCisgICAgICAgICAgICBpZiAoc2FtcGxlci5jb21wYXJl
ICE9IHRjdVRleHR1cmUuQ29tcGFyZU1vZGUuQ09NUEFSRU1PREVfTk9ORSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKHRleFRhcmdldCwgZ2wuVEVYVFVS
RV9DT01QQVJFX01PREUsIGdsLkNPTVBBUkVfUkVGX1RPX1RFWFRVUkUpOworICAgICAgICAgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkodGV4VGFyZ2V0LCBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywg
Z2x1VGV4dHVyZVV0aWwuZ2V0R0xDb21wYXJlRnVuYyhzYW1wbGVyLmNvbXBhcmUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3Rj
dVN1cmZhY2UuU3VyZmFjZX0gcmVzdWx0CisgICAgICogQHBhcmFtIHs/V2ViR0xQcm9ncmFtfSBw
cm9ncmFtSWQKKyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWR9IHF1
YWRHcmlkCisgICAgICoqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2Fz
ZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24ocmVzdWx0LCBwcm9ncmFtSWQsIHF1YWRHcmlk
KSB7CisgICAgICAgIC8vIEJ1ZmZlciBpbmZvLgorICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHdpZHRoID0gcmVzdWx0LmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgaGVpZ2h0ID0gcmVzdWx0LmdldEhlaWdodCgpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgeE9mZnNldE1heCA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aCAt
IHdpZHRoOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHlPZmZzZXRNYXggPSBn
bC5kcmF3aW5nQnVmZmVySGVpZ2h0IC0gaGVpZ2h0OworCisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgaGFzaCA9IGRlU3RyaW5nLmRlU3RyaW5nSGFzaCh0aGlzLm1fdmVydFNoYWRl
clNvdXJjZSkgKyBkZVN0cmluZy5kZVN0cmluZ0hhc2godGhpcy5tX2ZyYWdTaGFkZXJTb3VyY2Up
OworICAgICAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8gdmFyIHJuZCA9IG5ldyBk
ZVJhbmRvbS5SYW5kb20oaGFzaCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciB4T2Zmc2V0ID0gcm5kLmdldEludCgwLCB4T2Zmc2V0TWF4KTsKKyAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB5T2Zmc2V0ID0gcm5kLmdldEludCgwLCB5T2Zmc2V0TWF4KTsKKwor
ICAgICAgICBnbC52aWV3cG9ydCh4T2Zmc2V0LCB5T2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsKKwor
ICAgICAgICAvLyBTZXR1cCBwcm9ncmFtLgorICAgICAgICB0aGlzLnNldHVwVW5pZm9ybXMocHJv
Z3JhbUlkLCBxdWFkR3JpZC5nZXRDb25zdENvb3JkcygpKTsKKyAgICAgICAgdGhpcy5zZXR1cERl
ZmF1bHRJbnB1dHMocHJvZ3JhbUlkKTsKKworICAgICAgICAvLyBDbGVhci4KKyAgICAgICAgZ2wu
Y2xlYXJDb2xvcih0aGlzLm1fY2xlYXJDb2xvclswXSwgdGhpcy5tX2NsZWFyQ29sb3JbMV0sIHRo
aXMubV9jbGVhckNvbG9yWzJdLCB0aGlzLm1fY2xlYXJDb2xvclszXSk7CisgICAgICAgIGdsLmNs
ZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIC8vIERyYXcuCisgICAgICAgIC8q
KiBAdHlwZSB7QXJyYXk8Z2x1RHJhd1V0aWwuVmVydGV4QXJyYXlCaW5kaW5nPn0gKi8gdmFyIHZl
cnRleEFycmF5cyA9IFtdOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUVs
ZW1lbnRzID0gcXVhZEdyaWQuZ2V0TnVtVHJpYW5nbGVzKCkqMzsKKworICAgICAgICBnbHNTaGFk
ZXJSZW5kZXJDYXNlLmdldERlZmF1bHRWZXJ0ZXhBcnJheXMocXVhZEdyaWQsIHByb2dyYW1JZCwg
dmVydGV4QXJyYXlzKTsKKworICAgICAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCBwcm9ncmFtSWQs
IHZlcnRleEFycmF5cywgZ2x1RHJhd1V0aWwudHJpYW5nbGVzKHF1YWRHcmlkLmdldEluZGljZXMo
KSkpOworCisgICAgICAgIC8vIFJlYWQgYmFjayByZXN1bHRzLgorICAgICAgICByZXN1bHQucmVh
ZFZpZXdwb3J0KGdsLCBbeE9mZnNldCwgeU9mZnNldCwgd2lkdGgsIGhlaWdodF0pOworCisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJmYWNlfSByZXN1bHQK
KyAgICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWR9IHF1YWRHcmlkCisg
ICAgICoqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuU2hhZGVyUmVuZGVyQ2FzZS5wcm90b3R5
cGUuY29tcHV0ZVZlcnRleFJlZmVyZW5jZSA9IGZ1bmN0aW9uKHJlc3VsdCwgcXVhZEdyaWQpIHsK
KyAgICAgICAgLy8gQnVmZmVyIGluZm8uCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgd2lkdGggPSByZXN1bHQuZ2V0V2lkdGgoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHZhciBoZWlnaHQgPSByZXN1bHQuZ2V0SGVpZ2h0KCk7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZ3JpZFNpemUgPSBxdWFkR3JpZC5nZXRHcmlkU2l6ZSgpOworICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN0cmlkZSA9IGdyaWRTaXplICsgMTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaGFzQWxwaGEgPSBnbC5nZXRDb250ZXh0QXR0
cmlidXRlcygpLmFscGhhOworICAgICAgICAvKiogQHR5cGUge2dsc1NoYWRlclJlbmRlckNhc2Uu
U2hhZGVyRXZhbENvbnRleHR9ICovCisgICAgICAgIHZhciBldmFsQ3R4ID0gbmV3IGdsc1NoYWRl
clJlbmRlckNhc2UuU2hhZGVyRXZhbENvbnRleHQocXVhZEdyaWQpOworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvciA9IFtdOworICAgICAgICAvLyBFdmFsdWF0
ZSBjb2xvciBmb3IgZWFjaCB2ZXJ0ZXguCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8
bnVtYmVyPj59ICovIHZhciBjb2xvcnMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkg
PCBncmlkU2l6ZSArIDE7IHkrKykKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBncmlkU2l6
ZSArIDE7IHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzeCA9
IHggLyBncmlkU2l6ZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3kg
PSB5IC8gZ3JpZFNpemU7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZ0
eE5keCA9ICgoeSAqIChncmlkU2l6ZSsgMSApKSArIHgpOworCisgICAgICAgICAgICBldmFsQ3R4
LnJlc2V0KHN4LCBzeSk7CisgICAgICAgICAgICB0aGlzLm1fZXZhbHVhdG9yLmV2YWx1YXRlKGV2
YWxDdHgpOworICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyghZXZhbEN0eC5pc0Rpc2NhcmRl
ZCwgJ0Rpc2NhcmQgaXMgbm90IGF2YWlsYWJsZSBpbiB2ZXJ0ZXggc2hhZGVyLicsIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgICAgIGNvbG9yID0gZXZhbEN0eC5jb2xvcjsKKworICAgICAgICAgICAg
aWYgKCFoYXNBbHBoYSkKKyAgICAgICAgICAgICAgICBjb2xvclszXSA9IDEuMDsKKworICAgICAg
ICAgICAgY29sb3JzW3Z0eE5keF0gPSBjb2xvcjsKKyAgICAgICAgfQorICAgICAgICAvLyBSZW5k
ZXIgcXVhZHMuCisgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgZ3JpZFNpemU7IHkrKykKKyAg
ICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBncmlkU2l6ZTsgeCsrKSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgwID0geCAvIGdyaWRTaXplOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB4MSA9ICh4ICsgMSkgLyBncmlkU2l6ZTsKKyAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeTAgPSB5IC8gZ3JpZFNpemU7CisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHkxID0gKHkgKyAxKSAvIGdyaWRTaXpl
OworCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN4MCA9IHgwICogd2lk
dGg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN4MSA9IHgxICogd2lk
dGg7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHN5MCA9IHkwICogaGVp
Z2h0OworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzeTEgPSB5MSAqIGhl
aWdodDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgb29zeCA9IDEuMCAv
IChzeDEgLSBzeDApOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBvb3N5
ID0gMS4wIC8gKHN5MSAtIHN5MCk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgaXgwID0gTWF0aC5jZWlsKHN4MCAtIDAuNSk7CisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGl4MSA9IE1hdGguY2VpbChzeDEgLSAwLjUpOworICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBpeTAgPSBNYXRoLmNlaWwoc3kwIC0gMC41KTsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgaXkxID0gTWF0aC5jZWlsKHN5MSAt
IDAuNSk7CisKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdjAwID0gKHkg
KiBzdHJpZGUpICsgeDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdjAx
ID0gKHkgKiBzdHJpZGUpICsgeCArIDE7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHYxMCA9ICgoeSArIDEpICogc3RyaWRlKSArIHg7CisgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHYxMSA9ICgoeSArIDEpICogc3RyaWRlKSArIHggKyAxOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYzAwID0gY29sb3JzW3Yw
MF07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjMDEgPSBj
b2xvcnNbdjAxXTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IGMxMCA9IGNvbG9yc1t2MTBdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB2YXIgYzExID0gY29sb3JzW3YxMV07CisKKyAgICAgICAgICAgIGZvciAodmFyIGl5ID0g
aXkwOyBpeSA8IGl5MTsgaXkrKykKKyAgICAgICAgICAgIGZvciAodmFyIGl4ID0gaXgwOyBpeCA8
IGl4MTsgaXgrKykgeworICAgICAgICAgICAgICAgIGFzc2VydE1zZ09wdGlvbnMoZGVNYXRoLmRl
SW5Cb3VuZHMzMihpeCwgMCwgd2lkdGgpLCAnT3V0IG9mIGJvdW5kcy4nLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucyhkZU1hdGguZGVJbkJvdW5kczMyKGl5
LCAwLCBoZWlnaHQpLCAnT3V0IG9mIGJvdW5kcy4nLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNmeCA9IGl4ICsgMC41OworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2Z5ID0gaXkgKyAwLjU7CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBmeDEgPSBkZU1hdGguY2xhbXAo
KHNmeCAtIHN4MCkgKiBvb3N4LCAwLjAsIDEuMCk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBmeTEgPSBkZU1hdGguY2xhbXAoKHNmeSAtIHN5MCkgKiBvb3N5LCAw
LjAsIDEuMCk7CisKKyAgICAgICAgICAgICAgICAvLyBUcmlhbmdsZSBxdWFkIGludGVycG9sYXRp
b24uCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgdHJpID0gZngx
ICsgZnkxIDw9IDEuMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFy
IHR4ID0gdHJpID8gZngxIDogKDEuMCAtIGZ4MSk7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB0eSA9IHRyaSA/IGZ5MSA6ICgxLjAgLSBmeTEpOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHQwID0gdHJpID8gYzAwIDog
YzExOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHQx
ID0gdHJpID8gYzAxIDogYzEwOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIHQyID0gdHJpID8gYzEwIDogYzAxOworICAgICAgICAgICAgICAgIGNvbG9y
ID0gZGVNYXRoLmFkZCh0MCwgZGVNYXRoLmFkZChkZU1hdGguc2NhbGUoZGVNYXRoLnN1YnRyYWN0
KHQxLCB0MCksIHR4KSwgZGVNYXRoLnNjYWxlKGRlTWF0aC5zdWJ0cmFjdCh0MiwgdDApLCB0eSkp
KTsKKworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRQaXhlbChpeCwgaXksIGdsc1NoYWRlclJl
bmRlckNhc2UudG9SR0JBKGNvbG9yKS50b0lWZWMoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9
IHJlc3VsdAorICAgICAqIEBwYXJhbSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5RdWFkR3JpZH0gcXVh
ZEdyaWQKKyAgICAgKiovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5TaGFkZXJSZW5kZXJDYXNl
LnByb3RvdHlwZS5jb21wdXRlRnJhZ21lbnRSZWZlcmVuY2UgPSBmdW5jdGlvbihyZXN1bHQsIHF1
YWRHcmlkKSB7CisgICAgICAgIC8vIEJ1ZmZlciBpbmZvLgorICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIHdpZHRoID0gcmVzdWx0LmdldFdpZHRoKCk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgaGVpZ2h0ID0gcmVzdWx0LmdldEhlaWdodCgpOworICAgICAgICAv
KiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBoYXNBbHBoYSAgICA9IGdsLmdldENvbnRleHRBdHRy
aWJ1dGVzKCkuYWxwaGE7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzU2hhZGVyUmVuZGVyQ2FzZS5T
aGFkZXJFdmFsQ29udGV4dH0gKi8gdmFyIGV2YWxDdHggPSBuZXcgZ2xzU2hhZGVyUmVuZGVyQ2Fz
ZS5TaGFkZXJFdmFsQ29udGV4dChxdWFkR3JpZCk7CisKKyAgICAgICAgLy8gUmVuZGVyLgorICAg
ICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgc3ggPSAoeCArIDAuNSkgLyB3aWR0aDsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgc3kgPSAoeSArIDAuNSkgLyBoZWlnaHQ7CisKKyAgICAgICAgICAgIGV2YWxD
dHgucmVzZXQoc3gsIHN5KTsKKyAgICAgICAgICAgIHRoaXMubV9ldmFsdWF0b3IuZXZhbHVhdGUo
ZXZhbEN0eCk7CisgICAgICAgICAgICAvLyBTZWxlY3QgZWl0aGVyIGNsZWFyIGNvbG9yIG9yIGNv
bXB1dGVkIGNvbG9yIGJhc2VkIG9uIGRpc2NhcmRlZCBiaXQuCisgICAgICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xvciA9IGV2YWxDdHguaXNEaXNjYXJkZWQgPyB0
aGlzLm1fY2xlYXJDb2xvciA6IGV2YWxDdHguY29sb3I7CisKKyAgICAgICAgICAgIGlmICghaGFz
QWxwaGEpCisgICAgICAgICAgICAgICAgY29sb3JbM10gPSAxLjA7CisKKyAgICAgICAgICAgIHJl
c3VsdC5zZXRQaXhlbCh4LCB5LCBnbHNTaGFkZXJSZW5kZXJDYXNlLnRvUkdCQShjb2xvcikudG9J
VmVjKCkpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7dGN1
U3VyZmFjZS5TdXJmYWNlfSByZXNJbWFnZQorICAgICAqIEBwYXJhbSB7dGN1U3VyZmFjZS5TdXJm
YWNlfSByZWZJbWFnZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvclRocmVzaG9sZAorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5T
aGFkZXJSZW5kZXJDYXNlLnByb3RvdHlwZS5jb21wYXJlSW1hZ2VzID0gZnVuY3Rpb24ocmVzSW1h
Z2UsIHJlZkltYWdlLCBlcnJvclRocmVzaG9sZCkgeworICAgICAgICByZXR1cm4gdGN1SW1hZ2VD
b21wYXJlLmZ1enp5Q29tcGFyZSgiQ29tcGFyaXNvblJlc3VsdCIsICJJbWFnZSBjb21wYXJpc29u
IHJlc3VsdCIsIHJlZkltYWdlLmdldEFjY2VzcygpLCByZXNJbWFnZS5nZXRBY2Nlc3MoKSwgZXJy
b3JUaHJlc2hvbGQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
bnVtYmVyCisgICAgICogQHJldHVybiB7c3RyaW5nfSAqLworICAgIGdsc1NoYWRlclJlbmRlckNh
c2UuZ2V0SW50VW5pZm9ybU5hbWUgPSBmdW5jdGlvbihudW1iZXIpIHsKKyAgICAgICAgc3dpdGNo
IChudW1iZXIpIHsKKyAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuICJ1aV96ZXJvIjsKKyAgICAg
ICAgICAgIGNhc2UgMTogcmV0dXJuICJ1aV9vbmUiOworICAgICAgICAgICAgY2FzZSAyOiByZXR1
cm4gInVpX3R3byI7CisgICAgICAgICAgICBjYXNlIDM6IHJldHVybiAidWlfdGhyZWUiOworICAg
ICAgICAgICAgY2FzZSA0OiByZXR1cm4gInVpX2ZvdXIiOworICAgICAgICAgICAgY2FzZSA1OiBy
ZXR1cm4gInVpX2ZpdmUiOworICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gInVpX3NpeCI7Cisg
ICAgICAgICAgICBjYXNlIDc6IHJldHVybiAidWlfc2V2ZW4iOworICAgICAgICAgICAgY2FzZSA4
OiByZXR1cm4gInVpX2VpZ2h0IjsKKyAgICAgICAgICAgIGNhc2UgMTAxOiByZXR1cm4gInVpX29u
ZUh1bmRyZWRPbmUiOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlVuaWZvcm0gbm90IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyCisgICAgICogQHJldHVy
biB7c3RyaW5nfSAqLworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0RmxvYXRVbmlmb3JtTmFt
ZSA9IGZ1bmN0aW9uKG51bWJlcikgeworICAgICAgICBzd2l0Y2ggKG51bWJlcikgeworICAgICAg
ICAgICAgY2FzZSAwOiByZXR1cm4gInVmX3plcm8iOworICAgICAgICAgICAgY2FzZSAxOiByZXR1
cm4gInVmX29uZSI7CisgICAgICAgICAgICBjYXNlIDI6IHJldHVybiAidWZfdHdvIjsKKyAgICAg
ICAgICAgIGNhc2UgMzogcmV0dXJuICJ1Zl90aHJlZSI7CisgICAgICAgICAgICBjYXNlIDQ6IHJl
dHVybiAidWZfZm91ciI7CisgICAgICAgICAgICBjYXNlIDU6IHJldHVybiAidWZfZml2ZSI7Cisg
ICAgICAgICAgICBjYXNlIDY6IHJldHVybiAidWZfc2l4IjsKKyAgICAgICAgICAgIGNhc2UgNzog
cmV0dXJuICJ1Zl9zZXZlbiI7CisgICAgICAgICAgICBjYXNlIDg6IHJldHVybiAidWZfZWlnaHQi
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IlVuaWZvcm0gbm90IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyCisgICAgICogQHJldHVybiB7c3RyaW5nfSAq
LworICAgIGdsc1NoYWRlclJlbmRlckNhc2UuZ2V0RmxvYXRGcmFjdGlvblVuaWZvcm1OYW1lID0g
ZnVuY3Rpb24obnVtYmVyKSB7CisgICAgICAgIHN3aXRjaCAobnVtYmVyKSB7CisgICAgICAgICAg
ICBjYXNlIDE6IHJldHVybiAidWZfb25lIjsKKyAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICJ1
Zl9oYWxmIjsKKyAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICJ1Zl90aGlyZCI7CisgICAgICAg
ICAgICBjYXNlIDQ6IHJldHVybiAidWZfZm91cnRoIjsKKyAgICAgICAgICAgIGNhc2UgNTogcmV0
dXJuICJ1Zl9maWZ0aCI7CisgICAgICAgICAgICBjYXNlIDY6IHJldHVybiAidWZfc2l4dGgiOwor
ICAgICAgICAgICAgY2FzZSA3OiByZXR1cm4gInVmX3NldmVudGgiOworICAgICAgICAgICAgY2Fz
ZSA4OiByZXR1cm4gInVmX2VpZ2h0aCI7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5pZm9ybSBub3Qgc3VwcG9ydGVkLiIpOworICAgICAg
ICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1dlYkdMUHJvZ3JhbX0gcHJv
Z3JhbUlECisgICAgICovCisgICAgZ2xzU2hhZGVyUmVuZGVyQ2FzZS5zZXR1cERlZmF1bHRVbmlm
b3JtcyA9IGZ1bmN0aW9uKHByb2dyYW1JRCkgeworICAgICAgICAvKiogQHR5cGUgez9XZWJHTFVu
aWZvcm1Mb2NhdGlvbn0gKi8gdmFyIHVuaUxvYzsKKyAgICAgICAgLy8gQm9vbC4KKyAgICAgICAg
LyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAc3RydWN0CisgICAgICAg
ICAqLworICAgICAgICB2YXIgQm9vbFVuaWZvcm0gPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgewor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAg
ICAgfTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PEJvb2xVbmlmb3JtPn0gKi8gdmFyIHNf
Ym9vbFVuaWZvcm1zID0gWworICAgICAgICAgICAgbmV3IEJvb2xVbmlmb3JtKCJ1Yl90cnVlIiwg
dHJ1ZSksCisgICAgICAgICAgICBuZXcgQm9vbFVuaWZvcm0oInViX2ZhbHNlIiwgZmFsc2UpCisg
ICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX2Jvb2xVbmlmb3Jtcy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW1JRCwgc19ib29sVW5pZm9ybXNbaV0ubmFtZSk7CisgICAgICAgICAgICBpZiAodW5p
TG9jICE9IG51bGwpCisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFpKHVuaUxvYywgc19ib29s
VW5pZm9ybXNbaV0udmFsdWUgPyAxIDogMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCVmVj
NC4KKyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAc3Ry
dWN0CisgICAgICAgICAqLworICAgICAgICB2YXIgQlZlYzRVbmlmb3JtID0gZnVuY3Rpb24obmFt
ZSwgdmFsdWUpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxib29sZWFuPn0gKi8gdGhpcy52
YWx1ZSA9IHZhbHVlOworICAgICAgICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8QlZl
YzRVbmlmb3JtPn0gKi8gdmFyIHNfYnZlYzRVbmlmb3JtcyA9IFsKKyAgICAgICAgICAgIG5ldyBC
VmVjNFVuaWZvcm0oInViNF90cnVlIiwgW3RydWUsIHRydWUsIHRydWUsIHRydWVdKSwKKyAgICAg
ICAgICAgIG5ldyBCVmVjNFVuaWZvcm0oInViNF9mYWxzZSIsIFtmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZV0pCisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX2J2
ZWM0VW5pZm9ybXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QlZlYzRV
bmlmb3JtfSAqLyB2YXIgdW5pID0gc19idmVjNFVuaWZvcm1zW2ldOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYXJyID0gW107CisgICAgICAgICAgICBhcnJb
MF0gPSB1bmkudmFsdWVbMF0gPyAxIDogMDsKKyAgICAgICAgICAgIGFyclsxXSA9IHVuaS52YWx1
ZVsxXSA/IDEgOiAwOworICAgICAgICAgICAgYXJyWzJdID0gdW5pLnZhbHVlWzJdID8gMSA6IDA7
CisgICAgICAgICAgICBhcnJbM10gPSB1bmkudmFsdWVbM10gPyAxIDogMDsKKyAgICAgICAgICAg
IHVuaUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsIHVuaS5uYW1lKTsKKyAg
ICAgICAgICAgIGlmICh1bmlMb2MgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBnbC51bmlmb3Jt
NGl2KHVuaUxvYywgbmV3IEludDMyQXJyYXkoYXJyKSk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJbnQuCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICog
QHN0cnVjdAorICAgICAgICAgKi8KKyAgICAgICAgdmFyIEludFVuaWZvcm0gPSBmdW5jdGlvbihu
YW1lLCB2YWx1ZSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFt
ZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy52YWx1ZSA9
IHZhbHVlOworICAgICAgICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8SW50VW5pZm9y
bT59ICovIHZhciBzX2ludFVuaWZvcm1zID0gWworICAgICAgICAgICAgbmV3IEludFVuaWZvcm0o
InVpX21pbnVzT25lIiwgLTEpLAorICAgICAgICAgICAgbmV3IEludFVuaWZvcm0oInVpX3plcm8i
LCAwKSwKKyAgICAgICAgICAgIG5ldyBJbnRVbmlmb3JtKCJ1aV9vbmUiLCAxKSwKKyAgICAgICAg
ICAgIG5ldyBJbnRVbmlmb3JtKCJ1aV90d28iLCAyKSwKKyAgICAgICAgICAgIG5ldyBJbnRVbmlm
b3JtKCJ1aV90aHJlZSIsIDMpLAorICAgICAgICAgICAgbmV3IEludFVuaWZvcm0oInVpX2ZvdXIi
LCA0KSwKKyAgICAgICAgICAgIG5ldyBJbnRVbmlmb3JtKCJ1aV9maXZlIiwgNSksCisgICAgICAg
ICAgICBuZXcgSW50VW5pZm9ybSgidWlfc2l4IiwgNiksCisgICAgICAgICAgICBuZXcgSW50VW5p
Zm9ybSgidWlfc2V2ZW4iLCA3KSwKKyAgICAgICAgICAgIG5ldyBJbnRVbmlmb3JtKCJ1aV9laWdo
dCIsIDgpLAorICAgICAgICAgICAgbmV3IEludFVuaWZvcm0oInVpX29uZUh1bmRyZWRPbmUiLCAx
MDEpCisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX2ludFVuaWZv
cm1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB1bmlMb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbUlELCBzX2ludFVuaWZvcm1zW2ldLm5hbWUpOworICAgICAgICAgICAgaWYg
KHVuaUxvYyAhPSBudWxsKQorICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xaSh1bmlMb2MsIHNf
aW50VW5pZm9ybXNbaV0udmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSVZlYzIuCisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQHN0cnVjdAor
ICAgICAgICAgKi8KKyAgICAgICAgdmFyIElWZWMyVW5pZm9ybSA9IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFt
ZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy52YWx1ZSA9
IHZhbHVlOworICAgICAgICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8SVZlYzJVbmlm
b3JtPn0gKi8gdmFyIHNfaXZlYzJVbmlmb3JtcyA9IFsKKyAgICAgICAgICAgIG5ldyBJVmVjMlVu
aWZvcm0oInVpMl9taW51c09uZSIsIFstMSwgLTFdKSwKKyAgICAgICAgICAgIG5ldyBJVmVjMlVu
aWZvcm0oInVpMl96ZXJvIiwgWzAsIDBdKSwKKyAgICAgICAgICAgIG5ldyBJVmVjMlVuaWZvcm0o
InVpMl9vbmUiLCBbMSwgMV0pLAorICAgICAgICAgICAgbmV3IElWZWMyVW5pZm9ybSgidWkyX3R3
byIsIFsyLCAyXSksCisgICAgICAgICAgICBuZXcgSVZlYzJVbmlmb3JtKCJ1aTJfZm91ciIsIFs0
LCA0XSksCisgICAgICAgICAgICBuZXcgSVZlYzJVbmlmb3JtKCJ1aTJfZml2ZSIsIFs1LCA1XSkK
KyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNfaXZlYzJVbmlmb3Jt
cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW1JRCwgc19pdmVjMlVuaWZvcm1zW2ldLm5hbWUpOworICAgICAgICAgICAgaWYg
KHVuaUxvYyAhPSBudWxsKQorICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0yaXYodW5pTG9jLCBu
ZXcgSW50MzJBcnJheShzX2l2ZWMyVW5pZm9ybXNbaV0udmFsdWUpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIElWZWMzLgorICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICovCisgICAgICAgIHZhciBJVmVjM1VuaWZvcm0g
PSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICAvKiogQHR5
cGUge0FycmF5PElWZWMzVW5pZm9ybT59ICovIHZhciBzX2l2ZWMzVW5pZm9ybXMgPSBbCisgICAg
ICAgICAgICBuZXcgSVZlYzNVbmlmb3JtKCJ1aTNfbWludXNPbmUiLCBbLTEsIC0xLCAtMV0pLAor
ICAgICAgICAgICAgbmV3IElWZWMzVW5pZm9ybSgidWkzX3plcm8iLCBbMCwgMCwgMF0pLAorICAg
ICAgICAgICAgbmV3IElWZWMzVW5pZm9ybSgidWkzX29uZSIsIFsxLCAxLCAxXSksCisgICAgICAg
ICAgICBuZXcgSVZlYzNVbmlmb3JtKCJ1aTNfdHdvIiwgWzIsIDIsIDJdKSwKKyAgICAgICAgICAg
IG5ldyBJVmVjM1VuaWZvcm0oInVpM19mb3VyIiwgWzQsIDQsIDRdKSwKKyAgICAgICAgICAgIG5l
dyBJVmVjM1VuaWZvcm0oInVpM19maXZlIiwgWzUsIDUsIDVdKQorICAgICAgICBdOworCisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc19pdmVjM1VuaWZvcm1zLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICB1bmlMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCBzX2l2
ZWMzVW5pZm9ybXNbaV0ubmFtZSk7CisgICAgICAgICAgICBpZiAodW5pTG9jICE9IG51bGwpCisg
ICAgICAgICAgICAgICAgZ2wudW5pZm9ybTNpdih1bmlMb2MsIG5ldyBJbnQzMkFycmF5KHNfaXZl
YzNVbmlmb3Jtc1tpXS52YWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSVZlYzQuCisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQHN0cnVjdAor
ICAgICAgICAgKi8KKyAgICAgICAgdmFyIElWZWM0VW5pZm9ybSA9IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFt
ZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy52YWx1ZSA9
IHZhbHVlOworICAgICAgICB9OworICAgICAgICAvKiogQHR5cGUge0FycmF5PElWZWM0VW5pZm9y
bT59ICovIHZhciBzX2l2ZWM0VW5pZm9ybXMgPSBbCisgICAgICAgICAgICBuZXcgSVZlYzRVbmlm
b3JtKCJ1aTRfbWludXNPbmUiLCBbLTEsIC0xLCAtMSwgLTFdKSwKKyAgICAgICAgICAgIG5ldyBJ
VmVjNFVuaWZvcm0oInVpNF96ZXJvIiwgWzAsIDAsIDAsIDBdKSwKKyAgICAgICAgICAgIG5ldyBJ
VmVjNFVuaWZvcm0oInVpNF9vbmUiLCBbMSwgMSwgMSwgMV0pLAorICAgICAgICAgICAgbmV3IElW
ZWM0VW5pZm9ybSgidWk0X3R3byIsIFsyLCAyLCAyLCAyXSksCisgICAgICAgICAgICBuZXcgSVZl
YzRVbmlmb3JtKCJ1aTRfZm91ciIsIFs0LCA0LCA0LCA0XSksCisgICAgICAgICAgICBuZXcgSVZl
YzRVbmlmb3JtKCJ1aTRfZml2ZSIsIFs1LCA1LCA1LCA1XSkKKyAgICAgICAgXTsKKworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNfaXZlYzRVbmlmb3Jtcy5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgdW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgc19pdmVj
NFVuaWZvcm1zW2ldLm5hbWUpOworICAgICAgICAgICAgaWYgKHVuaUxvYyAhPSBudWxsKQorICAg
ICAgICAgICAgICAgIGdsLnVuaWZvcm00aXYodW5pTG9jLCBuZXcgSW50MzJBcnJheShzX2l2ZWM0
VW5pZm9ybXNbaV0udmFsdWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZsb2F0LgorICAg
ICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBzdHJ1Y3QKKyAg
ICAgICAgICovCisgICAgICAgIHZhciBGbG9hdFVuaWZvcm0gPSBmdW5jdGlvbihuYW1lLCB2YWx1
ZSkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubmFtZSA9IG5hbWU7
CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy52YWx1ZSA9IHZhbHVlOwor
ICAgICAgICB9OworICAgICAgICAvKiogQHR5cGUge0FycmF5PEZsb2F0VW5pZm9ybT59ICovIHZh
ciBzX2Zsb2F0VW5pZm9ybXMgPSBbCisgICAgICAgICAgICBuZXcgRmxvYXRVbmlmb3JtKCJ1Zl96
ZXJvIiwgMC4wKSwKKyAgICAgICAgICAgIG5ldyBGbG9hdFVuaWZvcm0oInVmX29uZSIsIDEuMCks
CisgICAgICAgICAgICBuZXcgRmxvYXRVbmlmb3JtKCJ1Zl90d28iLCAyLjApLAorICAgICAgICAg
ICAgbmV3IEZsb2F0VW5pZm9ybSgidWZfdGhyZWUiLCAzLjApLAorICAgICAgICAgICAgbmV3IEZs
b2F0VW5pZm9ybSgidWZfZm91ciIsIDQuMCksCisgICAgICAgICAgICBuZXcgRmxvYXRVbmlmb3Jt
KCJ1Zl9maXZlIiwgNS4wKSwKKyAgICAgICAgICAgIG5ldyBGbG9hdFVuaWZvcm0oInVmX3NpeCIs
IDYuMCksCisgICAgICAgICAgICBuZXcgRmxvYXRVbmlmb3JtKCJ1Zl9zZXZlbiIsIDcuMCksCisg
ICAgICAgICAgICBuZXcgRmxvYXRVbmlmb3JtKCJ1Zl9laWdodCIsIDguMCksCisgICAgICAgICAg
ICBuZXcgRmxvYXRVbmlmb3JtKCJ1Zl9oYWxmIiwgMS4wIC8gMi4wKSwKKyAgICAgICAgICAgIG5l
dyBGbG9hdFVuaWZvcm0oInVmX3RoaXJkIiwgMS4wIC8gMy4wKSwKKyAgICAgICAgICAgIG5ldyBG
bG9hdFVuaWZvcm0oInVmX2ZvdXJ0aCIsIDEuMCAvIDQuMCksCisgICAgICAgICAgICBuZXcgRmxv
YXRVbmlmb3JtKCJ1Zl9maWZ0aCIsIDEuMCAvIDUuMCksCisgICAgICAgICAgICBuZXcgRmxvYXRV
bmlmb3JtKCJ1Zl9zaXh0aCIsIDEuMCAvIDYuMCksCisgICAgICAgICAgICBuZXcgRmxvYXRVbmlm
b3JtKCJ1Zl9zZXZlbnRoIiwgMS4wIC8gNy4wKSwKKyAgICAgICAgICAgIG5ldyBGbG9hdFVuaWZv
cm0oInVmX2VpZ2h0aCIsIDEuMCAvIDguMCkKKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNfZmxvYXRVbmlmb3Jtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
dW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgc19mbG9hdFVuaWZvcm1z
W2ldLm5hbWUpOworICAgICAgICAgICAgaWYgKHVuaUxvYyAhPSBudWxsKQorICAgICAgICAgICAg
ICAgIGdsLnVuaWZvcm0xZih1bmlMb2MsIHNfZmxvYXRVbmlmb3Jtc1tpXS52YWx1ZSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBWZWMyLgorICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0
cnVjdG9yCisgICAgICAgICAqIEBzdHJ1Y3QKKyAgICAgICAgICovCisgICAgICAgIHZhciBWZWMy
VW5pZm9ybSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUg
e3N0cmluZ30gKi8gdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJy
YXk8bnVtYmVyPn0gKi8gdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICB9OworICAgICAgICAv
KiogQHR5cGUge0FycmF5PFZlYzJVbmlmb3JtPn0gKi8gdmFyIHNfdmVjMlVuaWZvcm1zID0gWwor
ICAgICAgICAgICAgbmV3IFZlYzJVbmlmb3JtKCJ1djJfbWludXNPbmUiLCBbLTEuMCwgLTEuMF0p
LAorICAgICAgICAgICAgbmV3IFZlYzJVbmlmb3JtKCJ1djJfemVybyIsIFswLjAsIDAuMF0pLAor
ICAgICAgICAgICAgbmV3IFZlYzJVbmlmb3JtKCJ1djJfaGFsZiIsIFswLjUsIDAuNV0pLAorICAg
ICAgICAgICAgbmV3IFZlYzJVbmlmb3JtKCJ1djJfb25lIiwgWzEuMCwgMS4wXSksCisgICAgICAg
ICAgICBuZXcgVmVjMlVuaWZvcm0oInV2Ml90d28iLCBbMi4wLCAyLjBdKQorICAgICAgICBdOwor
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc192ZWMyVW5pZm9ybXMubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIHVuaUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQs
IHNfdmVjMlVuaWZvcm1zW2ldLm5hbWUpOworICAgICAgICAgICAgaWYgKHVuaUxvYyAhPSBudWxs
KQorICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0yZnYodW5pTG9jLCBuZXcgRmxvYXQzMkFycmF5
KHNfdmVjMlVuaWZvcm1zW2ldLnZhbHVlKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBWZWMz
LgorICAgICAgICAvKioKKyAgICAgICAgICogQGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBzdHJ1
Y3QKKyAgICAgICAgICovCisgICAgICAgIHZhciBWZWMzVW5pZm9ybSA9IGZ1bmN0aW9uKG5hbWUs
IHZhbHVlKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5uYW1lID0g
bmFtZTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdGhpcy52YWx1
ZSA9IHZhbHVlOworICAgICAgICB9OworICAgICAgICAvKiogQHR5cGUge0FycmF5PFZlYzNVbmlm
b3JtPn0gKi8gdmFyIHNfdmVjM1VuaWZvcm1zID0gWworICAgICAgICAgICAgbmV3IFZlYzNVbmlm
b3JtKCJ1djNfbWludXNPbmUiLCBbLTEuMCwgLTEuMCwgLTEuMF0pLAorICAgICAgICAgICAgbmV3
IFZlYzNVbmlmb3JtKCJ1djNfemVybyIsIFswLjAsIDAuMCwgMC4wXSksCisgICAgICAgICAgICBu
ZXcgVmVjM1VuaWZvcm0oInV2M19oYWxmIiwgWzAuNSwgMC41LCAwLjVdKSwKKyAgICAgICAgICAg
IG5ldyBWZWMzVW5pZm9ybSgidXYzX29uZSIsIFsxLjAsIDEuMCwgMS4wXSksCisgICAgICAgICAg
ICBuZXcgVmVjM1VuaWZvcm0oInV2M190d28iLCBbMi4wLCAyLjAsIDIuMF0pCisgICAgICAgIF07
CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX3ZlYzNVbmlmb3Jtcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgdW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1J
RCwgc192ZWMzVW5pZm9ybXNbaV0ubmFtZSk7CisgICAgICAgICAgICBpZiAodW5pTG9jICE9IG51
bGwpCisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTNmdih1bmlMb2MsIG5ldyBGbG9hdDMyQXJy
YXkoc192ZWMzVW5pZm9ybXNbaV0udmFsdWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZl
YzQuCisgICAgICAgIC8qKgorICAgICAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgICAgICogQHN0
cnVjdAorICAgICAgICAgKi8KKyAgICAgICAgdmFyIFZlYzRVbmlmb3JtID0gZnVuY3Rpb24obmFt
ZSwgdmFsdWUpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlzLnZh
bHVlID0gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8VmVjNFVu
aWZvcm0+fSAqLyB2YXIgc192ZWM0VW5pZm9ybXMgPSBbCisgICAgICAgICAgICBuZXcgVmVjNFVu
aWZvcm0oInV2NF9taW51c09uZSIsIFstMS4wLCAtMS4wLCAtMS4wLCAtMS4wXSksCisgICAgICAg
ICAgICBuZXcgVmVjNFVuaWZvcm0oInV2NF96ZXJvIiwgWzAuMCwgMC4wLCAwLjAsIDAuMF0pLAor
ICAgICAgICAgICAgbmV3IFZlYzRVbmlmb3JtKCJ1djRfaGFsZiIsIFswLjUsIDAuNSwgMC41LCAw
LjVdKSwKKyAgICAgICAgICAgIG5ldyBWZWM0VW5pZm9ybSgidXY0X29uZSIsIFsxLjAsIDEuMCwg
MS4wLCAxLjBdKSwKKyAgICAgICAgICAgIG5ldyBWZWM0VW5pZm9ybSgidXY0X3R3byIsIFsyLjAs
IDIuMCwgMi4wLCAyLjBdKSwKKyAgICAgICAgICAgIG5ldyBWZWM0VW5pZm9ybSgidXY0X2JsYWNr
IiwgWzAuMCwgMC4wLCAwLjAsIDEuMF0pLAorICAgICAgICAgICAgbmV3IFZlYzRVbmlmb3JtKCJ1
djRfZ3JheSIsIFswLjUsIDAuNSwgMC41LCAxLjBdKSwKKyAgICAgICAgICAgIG5ldyBWZWM0VW5p
Zm9ybSgidXY0X3doaXRlIiwgWzEuMCwgMS4wLCAxLjAsIDEuMF0pCisgICAgICAgIF07CisKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzX3ZlYzRVbmlmb3Jtcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgdW5pTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgc192
ZWM0VW5pZm9ybXNbaV0ubmFtZSk7CisgICAgICAgICAgICBpZiAodW5pTG9jICE9IG51bGwpCisg
ICAgICAgICAgICAgICAgZ2wudW5pZm9ybTRmdih1bmlMb2MsIG5ldyBGbG9hdDMyQXJyYXkoc192
ZWM0VW5pZm9ybXNbaV0udmFsdWUpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2dsc1NoYWRlclJlbmRlckNhc2UuUXVhZEdyaWR9IHF1YWRHcmlkCisgICAg
ICogQHBhcmFtIHs/V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgICAgICogQHBhcmFtIHtBcnJheTxn
bHVEcmF3VXRpbC5WZXJ0ZXhBcnJheUJpbmRpbmc+fSB2ZXJ0ZXhBcnJheXMKKyAgICAgKi8KKyAg
ICBnbHNTaGFkZXJSZW5kZXJDYXNlLmdldERlZmF1bHRWZXJ0ZXhBcnJheXMgPSBmdW5jdGlvbihx
dWFkR3JpZCwgcHJvZ3JhbSwgdmVydGV4QXJyYXlzKSB7CisgICAgICAgIC8qKiBAdHlwZSB7bnVt
YmVyfSAqLyB2YXIgbnVtRWxlbWVudHMgPSBxdWFkR3JpZC5nZXROdW1WZXJ0aWNlcygpOworICAg
ICAgICB2YXIgcG9zQXJyYXkgPSBbXS5jb25jYXQuYXBwbHkoW10sIHF1YWRHcmlkLmdldFBvc2l0
aW9ucygpKTsKKyAgICAgICAgdmFyIGNvb3Jkc0FycmF5ID0gW10uY29uY2F0LmFwcGx5KFtdLCBx
dWFkR3JpZC5nZXRDb29yZHNBcnJheSgpKTsKKyAgICAgICAgdmFyIHVuaXRDb29yZHNBcnJheSA9
IFtdLmNvbmNhdC5hcHBseShbXSwgcXVhZEdyaWQuZ2V0VW5pdENvb3Jkc0FycmF5KCkpOworCisg
ICAgICAgIHZlcnRleEFycmF5cy5wdXNoKGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlC
aW5kaW5nKCJhX3Bvc2l0aW9uIiwgNCwgbnVtRWxlbWVudHMsIDAsIHBvc0FycmF5KSk7CisgICAg
ICAgIHZlcnRleEFycmF5cy5wdXNoKGdsdURyYXdVdGlsLm5ld0Zsb2F0VmVydGV4QXJyYXlCaW5k
aW5nKCJhX2Nvb3JkcyIsIDQsIG51bUVsZW1lbnRzLCAwLCBjb29yZHNBcnJheSkpOworICAgICAg
ICB2ZXJ0ZXhBcnJheXMucHVzaChnbHVEcmF3VXRpbC5uZXdGbG9hdFZlcnRleEFycmF5QmluZGlu
ZygiYV91bml0Q29vcmRzIiwgNCwgbnVtRWxlbWVudHMsIDAsIHVuaXRDb29yZHNBcnJheSkpOwor
ICAgICAgICB2ZXJ0ZXhBcnJheXMucHVzaChnbHVEcmF3VXRpbC5uZXdGbG9hdFZlcnRleEFycmF5
QmluZGluZygiYV9vbmUiLCAxLCBudW1FbGVtZW50cywgMCwgcXVhZEdyaWQuZ2V0QXR0cmliT25l
KCkpKTsKKworICAgICAgICAvLyBhX2luTi4KKyAgICAgICAgZm9yICh2YXIgdXNlck5keCA9IDA7
IHVzZXJOZHggPCBxdWFkR3JpZC5nZXROdW1Vc2VyQXR0cmlicygpOyB1c2VyTmR4KyspIHsKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgbmFtZSA9ICJhX2luIiArIHVzZXJO
ZHg7CisgICAgICAgICAgICB2YXIgdXNlckF0dHJpYkFycmF5ID0gW10uY29uY2F0LmFwcGx5KFtd
LCBxdWFkR3JpZC5nZXRVc2VyQXR0cmliQnlJbmRleCh1c2VyTmR4KSk7CisgICAgICAgICAgICB2
ZXJ0ZXhBcnJheXMucHVzaChnbHVEcmF3VXRpbC5uZXdGbG9hdFZlcnRleEFycmF5QmluZGluZyhu
YW1lLCA0LCBudW1FbGVtZW50cywgMCwgdXNlckF0dHJpYkFycmF5KSk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBNYXRyaXggYXR0cmlidXRlcyAtIHRoZXNlIGFyZSBzZXQgYnkgbG9jYXRpb24K
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAgICAgKiBAc3RydWN0
CisgICAgICAgICAqLworICAgICAgICB2YXIgTWF0cml4ID0gZnVuY3Rpb24obmFtZSwgY29scywg
cm93cykgeworICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIHRoaXMu
bnVtQ29scyA9IGNvbHM7CisgICAgICAgICAgICB0aGlzLm51bVJvd3MgPSByb3dzOworICAgICAg
ICB9OworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8TWF0cml4Pn0gKi8gdmFyIG1hdHJpY2Vz
ID0gWworICAgICAgICAgICAgIG5ldyBNYXRyaXgoJ2FfbWF0MicsIDIsIDIpLAorICAgICAgICAg
ICAgIG5ldyBNYXRyaXgoJ2FfbWF0MngzJywgMiwgMyksCisgICAgICAgICAgICAgbmV3IE1hdHJp
eCgnYV9tYXQyeDQnLCAyLCA0KSwKKyAgICAgICAgICAgICBuZXcgTWF0cml4KCdhX21hdDN4Mics
IDMsIDIpLAorICAgICAgICAgICAgIG5ldyBNYXRyaXgoJ2FfbWF0MycsIDMsIDMpLAorICAgICAg
ICAgICAgIG5ldyBNYXRyaXgoJ2FfbWF0M3g0JywgMywgNCksCisgICAgICAgICAgICAgbmV3IE1h
dHJpeCgnYV9tYXQ0eDInLCA0LCAyKSwKKyAgICAgICAgICAgICBuZXcgTWF0cml4KCdhX21hdDR4
MycsIDQsIDMpLAorICAgICAgICAgICAgIG5ldyBNYXRyaXgoJ2FfbWF0NCcsIDQsIDQpCisgICAg
ICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgbWF0TmR4ID0gMDsgbWF0TmR4IDwgbWF0cmljZXMu
bGVuZ3RoOyBtYXROZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBsb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBtYXRyaWNlc1ttYXROZHhdLm5h
bWUpOworCisgICAgICAgICAgICBpZiAobG9jIDwgMCkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsgLy8gTm90IHVzZWQgaW4gc2hhZGVyLgorCisgICAgICAgICAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdmFyIG51bVJvd3MgPSBtYXRyaWNlc1ttYXROZHhdLm51bVJvd3M7CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUNvbHMgPSBtYXRyaWNlc1ttYXROZHhdLm51
bUNvbHM7CisKKyAgICAgICAgICAgIGZvciAodmFyIGNvbE5keCA9IDA7IGNvbE5keCA8IG51bUNv
bHM7IGNvbE5keCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBbXS5jb25jYXQuYXBw
bHkoW10sIHF1YWRHcmlkLmdldFVzZXJBdHRyaWJCeUluZGV4KGNvbE5keCkpOworICAgICAgICAg
ICAgICAgIHZlcnRleEFycmF5cy5wdXNoKGdsdURyYXdVdGlsLm5ld0Zsb2F0Q29sdW1uVmVydGV4
QXJyYXlCaW5kaW5nKG1hdHJpY2VzW21hdE5keF0ubmFtZSwgY29sTmR4LCBudW1Sb3dzLCBudW1F
bGVtZW50cywgNCAqIDQsIGRhdGEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07
Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzU3RhdGVRdWVyeS5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xz
U3RhdGVRdWVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjJkODdmYjQ3OTk2N2NmY2I3NjZhZTgxMTgwZjRk
MGRkZWZkYjU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3NoYXJlZC9nbHNTdGF0ZVF1ZXJ5LmpzCkBA
IC0wLDAgKzEsMzY3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFs
aXR5IFByb2dyYW0gT3BlbkdMIEVTIFV0aWxpdGllcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICog
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworZ29v
Zy5wcm92aWRlKCdtb2R1bGVzLnNoYXJlZC5nbHNTdGF0ZVF1ZXJ5Jyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7Cit2YXIgZ2xzU3RhdGVRdWVyeSA9IG1vZHVsZXMuc2hhcmVkLmdsc1N0YXRl
UXVlcnk7CisKKy8qKgorICogQ29tcGFyZSB0d28gb2JqZWN0cy4gT2JqZWN0cyBtdXN0IGhhdmUg
dGhlIHNhbWUgdHlwZSBhbmQgY29udGVudHMuCisgKiBJZiBjb21wYXJpbmcgbnVtYmVycywgYWxs
b3cgc29tZSBlcHNpbG9uIGRpZmZlcmVuY2VzCisgKiBAcGFyYW0geyp9IGEKKyAqIEBwYXJhbSB7
Kn0gYgorICogcmV0dXJuIHtib29sZWFufQorICovCitnbHNTdGF0ZVF1ZXJ5LmNvbXBhcmUgPSBm
dW5jdGlvbihhLCBiKSB7CisgICAgLyoqIEBjb25zdCAqLyB2YXIgZXBzID0gMC4wMTsKKyAgICBp
ZiAoYSA9PT0gYikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAodHlwZW9mIGEgPT09
ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykKKyAgICAgICAgcmV0dXJuIE1hdGgu
YWJzKGEgLSBiKSA8IGVwczsKKworICAgIC8vY29tcGFyZSBhcnJheS1saWtlIHBhcmFtZXRlcnMK
KyAgICBpZiAodHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcpIHsK
KyAgICAgICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCdsZW5ndGgnIGluIGEgJiYgJ2xlbmd0aCcg
aW4gYikgeworICAgICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFbaV0gPT09ICdudW1i
ZXInICYmIHR5cGVvZiBiW2ldID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoTWF0aC5hYnMoYVtpXSAtIGJbaV0pID49IGVwcykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFbaV0gIT09IGJbaV0p
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfTsKKworLyoqCisgKiBWZXJpZnkgdGhhdCBXZWJHTCBzdGF0ZSAncGFyYW0nIGhhcyB0aGUg
ZXhwZWN0ZWQgdmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSBy
ZWZlcmVuY2UKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5
ID0gZnVuY3Rpb24ocGFyYW0sIHJlZmVyZW5jZSkgeworICAgIHZhciB2YWx1ZSA9IGdsLmdldFBh
cmFtZXRlcihwYXJhbSk7CisgICAgdmFyIHJlc3VsdCA9IGdsc1N0YXRlUXVlcnkuY29tcGFyZSh2
YWx1ZSwgcmVmZXJlbmNlKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4cGVjdGVkOiAnICsgcmVmZXJlbmNl
KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKKy8qKgorICogVmVyaWZ5IHRoYXQg
V2ViR0wgY3VycmVudCB2ZXJ0ZXggYXR0cmliIGhhcyB0aGUgZXhwZWN0ZWQgdmFsdWUKKyAqIEBw
YXJhbSB7bnVtYmVyfSBpbmRleAorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAqIEByZXR1cm4g
e2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5Q3VycmVudFZlcnRleEF0dHJpYiA9
IGZ1bmN0aW9uKGluZGV4LCByZWZlcmVuY2UpIHsKKyAgICB2YXIgdmFsdWUgPSBnbC5nZXRWZXJ0
ZXhBdHRyaWIoaW5kZXgsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQik7CisgICAgdmFyIHJlc3Vs
dCA9IGdsc1N0YXRlUXVlcnkuY29tcGFyZSh2YWx1ZSwgcmVmZXJlbmNlKTsKKyAgICBpZiAoIXJl
c3VsdCkgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUg
KyAnIEV4cGVjdGVkOiAnICsgcmVmZXJlbmNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K307CisKKy8qKgorICogVmVyaWZ5IHRoYXQgV2ViR0wgdmVydGV4IGF0dHJpYiBhdHRyaWJ1dGUg
J3BhcmFtJyBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlCisgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgK
KyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5VmVydGV4QXR0cmliID0g
ZnVuY3Rpb24oaW5kZXgsIHBhcmFtLCByZWZlcmVuY2UpIHsKKyAgICB2YXIgdmFsdWUgPSAocGFy
YW0gPT0gZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKSA/CisgICAgICAgIGdsLmdldFZl
cnRleEF0dHJpYk9mZnNldChpbmRleCwgcGFyYW0pIDoKKyAgICAgICAgZ2wuZ2V0VmVydGV4QXR0
cmliKGluZGV4LCBwYXJhbSk7CisgICAgdmFyIHJlc3VsdCA9IGdsc1N0YXRlUXVlcnkuY29tcGFy
ZSh2YWx1ZSwgcmVmZXJlbmNlKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBidWZmZXJl
ZExvZ1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4cGVjdGVkOiAnICsgcmVmZXJl
bmNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKKy8qKgorICogVmVyaWZ5IHRo
YXQgV2ViR0wgdW5pZm9ybSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlCisgKiBAcGFyYW0ge1dlYkdM
UHJvZ3JhbX0gcHJvZ3JhbQorICogQHBhcmFtIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gbG9jYXRp
b24KKyAqIEBwYXJhbSB7Kn0gcmVmZXJlbmNlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitn
bHNTdGF0ZVF1ZXJ5LnZlcmlmeVVuaWZvcm0gPSBmdW5jdGlvbihwcm9ncmFtLCBsb2NhdGlvbiwg
cmVmZXJlbmNlKSB7CisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0VW5pZm9ybShwcm9ncmFtLCBsb2Nh
dGlvbik7CisgICAgdmFyIHJlc3VsdCA9IGdsc1N0YXRlUXVlcnkuY29tcGFyZSh2YWx1ZSwgcmVm
ZXJlbmNlKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29s
ZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4cGVjdGVkOiAnICsgcmVmZXJlbmNlKTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKKy8qKgorICogVmVyaWZ5IHRoYXQgV2ViR0wgc2hh
ZGVyIHN0YXRlICdwYXJhbScgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZQorICogQHBhcmFtIHtXZWJH
TFNoYWRlcn0gc2hhZGVyCisgKiBAcGFyYW0ge251bWJlcn0gcGFyYW0KKyAqIEBwYXJhbSB7Kn0g
cmVmZXJlbmNlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitnbHNTdGF0ZVF1ZXJ5LnZlcmlm
eVNoYWRlciA9IGZ1bmN0aW9uKHNoYWRlciwgcGFyYW0sIHJlZmVyZW5jZSkgeworICAgIHZhciB2
YWx1ZSA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBhcmFtKTsKKyAgICB2YXIgcmVz
dWx0ID0gZ2xzU3RhdGVRdWVyeS5jb21wYXJlKHZhbHVlLCByZWZlcmVuY2UpOworICAgIGlmICgh
cmVzdWx0KSB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZXN1bHQ6ICcgKyB2YWx1
ZSArICcgRXhwZWN0ZWQ6ICcgKyByZWZlcmVuY2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfTsKKworLyoqCisgKiBWZXJpZnkgdGhhdCBXZWJHTCBwcm9ncmFtIHN0YXRlICdwYXJhbScg
aGFzIHRoZSBleHBlY3RlZCB2YWx1ZQorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0K
KyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5UHJvZ3JhbSA9IGZ1bmN0
aW9uKHByb2dyYW0sIHBhcmFtLCByZWZlcmVuY2UpIHsKKyAgICB2YXIgdmFsdWUgPSBnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBhcmFtKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2xzU3Rh
dGVRdWVyeS5jb21wYXJlKHZhbHVlLCByZWZlcmVuY2UpOworICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZXN1bHQ6ICcgKyB2YWx1ZSArICcgRXhwZWN0
ZWQ6ICcgKyByZWZlcmVuY2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoq
CisgKiBWZXJpZnkgdGhhdCBXZWJHTCBzYW1wbGVyIHN0YXRlICdwYXJhbScgaGFzIHRoZSBleHBl
Y3RlZCB2YWx1ZQorICogQHBhcmFtIHtXZWJHTFNhbXBsZXJ9IHNhbXBsZXIKKyAqIEBwYXJhbSB7
bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAqIEByZXR1cm4ge2Jvb2xl
YW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5U2FtcGxlciA9IGZ1bmN0aW9uKHNhbXBsZXIs
IHBhcmFtLCByZWZlcmVuY2UpIHsKKyAgICB2YXIgdmFsdWUgPSBnbC5nZXRTYW1wbGVyUGFyYW1l
dGVyKHNhbXBsZXIsIHBhcmFtKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2xzU3RhdGVRdWVyeS5jb21w
YXJlKHZhbHVlLCByZWZlcmVuY2UpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKCdSZXN1bHQ6ICcgKyB2YWx1ZSArICcgRXhwZWN0ZWQ6ICcgKyByZWZl
cmVuY2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqCisgKiBWZXJpZnkg
dGhhdCBXZWJHTCB0ZXh0dXJlIHN0YXRlICdwYXJhbScgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZQor
ICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IHBhcmFtCisgKiBA
cGFyYW0geyp9IHJlZmVyZW5jZQorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZ2xzU3RhdGVR
dWVyeS52ZXJpZnlUZXh0dXJlID0gZnVuY3Rpb24odGFyZ2V0LCBwYXJhbSwgcmVmZXJlbmNlKSB7
CisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0VGV4UGFyYW1ldGVyKHRhcmdldCwgcGFyYW0pOworICAg
IHZhciByZXN1bHQgPSBnbHNTdGF0ZVF1ZXJ5LmNvbXBhcmUodmFsdWUsIHJlZmVyZW5jZSk7Cisg
ICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jlc3VsdDog
JyArIHZhbHVlICsgJyBFeHBlY3RlZDogJyArIHJlZmVyZW5jZSk7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9OworCisvKioKKyAqIFZlcmlmeSB0aGF0IFdlYkdMIHN0YXRlICdwYXJhbScg
aGFzIG9uZSBvZiB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgKiBAcGFyYW0ge251bWJlcn0gcGFyYW0K
KyAqIEBwYXJhbSB7QXJyYXk8Kj59IHJlZmVyZW5jZQorICogcmV0dXJuIHtib29sZWFufQorICov
CitnbHNTdGF0ZVF1ZXJ5LnZlcmlmeUFueU9mID0gZnVuY3Rpb24ocGFyYW0sIHJlZmVyZW5jZSkg
eworICAgIHZhciB2YWx1ZSA9IGdsLmdldFBhcmFtZXRlcihwYXJhbSk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCByZWZlcmVuY2UubGVuZ3RoOyBpKyspCisgICAgICAgIGlmIChnbHNTdGF0ZVF1
ZXJ5LmNvbXBhcmUodmFsdWUsIHJlZmVyZW5jZVtpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4cGVj
dGVkIG9uZSBvZjogJyArIHJlZmVyZW5jZSk7CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworLyoq
CisgKiBWZXJpZnkgdGhhdCBXZWJHTCBzdGF0ZSAncGFyYW0nIGhhcyB0aGUgZXhwZWN0ZWQgdmFs
dWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHtudW1iZXJ8QXJyYXk8bnVt
YmVyPn0gcmVmZXJlbmNlCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitnbHNTdGF0ZVF1ZXJ5
LnZlcmlmeUdyZWF0ZXJPckVxdWFsID0gZnVuY3Rpb24ocGFyYW0sIHJlZmVyZW5jZSkgeworICAg
IHZhciB2YWx1ZSA9IGdsLmdldFBhcmFtZXRlcihwYXJhbSk7CisgICAgaWYgKHJlZmVyZW5jZSBp
bnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgIHZhciB2ID0gLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyAodmFsdWUpOworICAgICAgICBpZiAodi5sZW5ndGggIT0gcmVmZXJlbmNlLmxlbmd0
aCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jlc3VsdDogJyArIHZhbHVl
ICsgJyBFeHBlY3RlZCA+PSA6ICcgKyByZWZlcmVuY2UpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVmZXJlbmNlLmxl
bmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHZbaV0gPCByZWZlcmVuY2VbaV0pIHsKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4
cGVjdGVkID49IDogJyArIHJlZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdmFyIG4g
PSAvKiogQHR5cGUge251bWJlcn0gKi8gKHZhbHVlKTsKKyAgICBpZiAobiA8IHJlZmVyZW5jZSkg
eworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4
cGVjdGVkID49IDogJyArIHJlZmVyZW5jZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9OworCisvKioKKyAqIFZlcmlmeSB0aGF0IFdlYkdMIHN0YXRl
ICdwYXJhbScgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZQorICogQHBhcmFtIHtudW1iZXJ9IHBhcmFt
CisgKiBAcGFyYW0ge251bWJlcnxBcnJheTxudW1iZXI+fSByZWZlcmVuY2UKKyAqIEByZXR1cm4g
e2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5TGVzc09yRXF1YWwgPSBmdW5jdGlv
bihwYXJhbSwgcmVmZXJlbmNlKSB7CisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0UGFyYW1ldGVyKHBh
cmFtKTsKKyAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgdmFy
IHYgPSAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovICh2YWx1ZSk7CisgICAgICAgIGlmICh2
Lmxlbmd0aCAhPSByZWZlcmVuY2UubGVuZ3RoKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnUmVzdWx0OiAnICsgdmFsdWUgKyAnIEV4cGVjdGVkIDw9IDogJyArIHJlZmVyZW5j
ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPiByZWZlcmVuY2UubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAodltp
XSA8IHJlZmVyZW5jZVtpXSkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jl
c3VsdDogJyArIHZhbHVlICsgJyBFeHBlY3RlZCA8PSA6ICcgKyByZWZlcmVuY2UpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgdmFyIG4gPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHZhbHVlKTsKKyAgICBp
ZiAobiA+IHJlZmVyZW5jZSkgeworICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgnUmVzdWx0
OiAnICsgdmFsdWUgKyAnIEV4cGVjdGVkIDw9IDogJyArIHJlZmVyZW5jZSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9OworCisvKioKKyAqIFZlcmlm
eSB0aGF0IFdlYkdMIHN0YXRlICdwYXJhbScgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSAodmFsdWUg
JiBtYXNrID09IHJlZmVyZW5jZSkKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFt
IHtudW1iZXJ9IHJlZmVyZW5jZQorICogQHBhcmFtIHtudW1iZXJ9IG1hc2sKKyAqIEByZXR1cm4g
e2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5TWFza2VkID0gZnVuY3Rpb24ocGFy
YW0sIHJlZmVyZW5jZSwgbWFzaykgeworICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVy
fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKHBhcmFtKSk7CisgICAgaWYgKCh2YWx1ZSAmIG1hc2spICE9
PSByZWZlcmVuY2UpIHsKKyAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoJ1Jlc3VsdDogJyAr
IHZhbHVlICsgJyBFeHBlY3RlZDogJyArIHJlZmVyZW5jZSArICdNYXNrOiAweCcgKyBtYXNrLnRv
U3RyaW5nKDE2KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9OworCisvKioKKyAqIFZlcmlmeSB0aGF0IFdlYkdMIGZibyBhdHRhY2htZW50ICdwYXJh
bScgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZQorICogQHBhcmFtIHtudW1iZXJ9IGZibworICogQHBh
cmFtIHtudW1iZXJ9IGF0dGFjaG1lbnQKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBh
cmFtIHsqfSByZWZlcmVuY2UKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVl
cnkudmVyaWZ5QXR0YWNobWVudCA9IGZ1bmN0aW9uKGZibywgYXR0YWNobWVudCwgcGFyYW0sIHJl
ZmVyZW5jZSkgeworICAgIHZhciB2YWx1ZSA9IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihmYm8sIGF0dGFjaG1lbnQsIHBhcmFtKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2xzU3Rh
dGVRdWVyeS5jb21wYXJlKHZhbHVlLCByZWZlcmVuY2UpOworICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdSZXN1bHQ6ICcgKyB2YWx1ZSArICcgRXhwZWN0
ZWQ6ICcgKyByZWZlcmVuY2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoq
CisgKiBWZXJpZnkgdGhhdCBXZWJHTCBmYm8gY29sb3IgYXR0YWNobWVudCAncGFyYW0nIGhhcyB0
aGUgZXhwZWN0ZWQgdmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBmYm8KKyAqIEBwYXJhbSB7bnVt
YmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAqIEByZXR1cm4ge2Jvb2xlYW59
CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5Q29sb3JBdHRhY2htZW50ID0gZnVuY3Rpb24oZmJv
LCBwYXJhbSwgcmVmZXJlbmNlKSB7CisgICAgcmV0dXJuIGdsc1N0YXRlUXVlcnkudmVyaWZ5QXR0
YWNobWVudChmYm8sIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBwYXJhbSwgcmVmZXJlbmNlKTsKK307
CisKKy8qKgorICogVmVyaWZ5IHRoYXQgV2ViR0wgcmJvIGF0dHJpYnV0ZSAncGFyYW0nIGhhcyB0
aGUgZXhwZWN0ZWQgdmFsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsq
fSByZWZlcmVuY2UKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVy
aWZ5UmVuZGVyYnVmZmVyID0gZnVuY3Rpb24ocGFyYW0sIHJlZmVyZW5jZSkgeworICAgIHZhciB2
YWx1ZSA9IGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIHBhcmFt
KTsKKyAgICB2YXIgcmVzdWx0ID0gZ2xzU3RhdGVRdWVyeS5jb21wYXJlKHZhbHVlLCByZWZlcmVu
Y2UpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdS
ZXN1bHQ6ICcgKyB2YWx1ZSArICcgRXhwZWN0ZWQ6ICcgKyByZWZlcmVuY2UpOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqCisgKiBWZXJpZnkgdGhhdCBXZWJHTCBhY3RpdmUg
dW5pZm9ybSBibG9jaydzIGF0dHJpYnV0ZSAncGFyYW0nIGhhcyB0aGUgZXhwZWN0ZWQgdmFsdWUK
KyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgKiBAcGFyYW0ge251bWJlcn0gaW5k
ZXgKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICogQHBhcmFtIHsqfSByZWZlcmVuY2UKKyAq
IEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1N0YXRlUXVlcnkudmVyaWZ5QWN0aXZlVW5pZm9y
bUJsb2NrID0gZnVuY3Rpb24ocHJvZ3JhbSwgaW5kZXgsIHBhcmFtLCByZWZlcmVuY2UpIHsKKyAg
ICB2YXIgdmFsdWUgPSBnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIocHJvZ3JhbSwg
aW5kZXgsIHBhcmFtKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2xzU3RhdGVRdWVyeS5jb21wYXJlKHZh
bHVlLCByZWZlcmVuY2UpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCdSZXN1bHQ6ICcgKyB2YWx1ZSArICcgRXhwZWN0ZWQ6ICcgKyByZWZlcmVuY2Up
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqCisgKiBAcGFyYW0gIHtudW1i
ZXJ9IHBhcmFtCisgKiBAcGFyYW0gIHtBcnJheTxudW1iZXI+fSByZWZlcmVuY2UKKyAqIEBwYXJh
bSAge0FycmF5PGJvb2xlYW4+fSBlbmFibGVSZWYKKyAqIEByZXR1cm4gIHtib29sZWFufQorICov
CisKK2dsc1N0YXRlUXVlcnkudmVyaWZ5TWFzayA9IGZ1bmN0aW9uKHBhcmFtLCByZWZlcmVuY2Us
IGVuYWJsZVJlZikgeworICAgIHZhciBpbnRWZWN0b3I0ID0gLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKHBhcmFtKSk7CisKKyAgICBpZiAoKGVuYWJsZVJlZlsw
XSAmJiAoaW50VmVjdG9yNFswXSAhPSByZWZlcmVuY2VbMF0pKSB8fAorICAgICAgICAoZW5hYmxl
UmVmWzFdICYmIChpbnRWZWN0b3I0WzFdICE9IHJlZmVyZW5jZVsxXSkpIHx8CisgICAgICAgIChl
bmFibGVSZWZbMl0gJiYgKGludFZlY3RvcjRbMl0gIT0gcmVmZXJlbmNlWzJdKSkgfHwKKyAgICAg
ICAgKGVuYWJsZVJlZlszXSAmJiAoaW50VmVjdG9yNFszXSAhPSByZWZlcmVuY2VbM10pKSkKKyAg
ICB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCIvLyBFUlJPUjogZXhwZWN0ZWQgIiAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmFibGVSZWZbMF0gPyAiIiA6ICIoIikg
KyByZWZlcmVuY2VbMF0gKyAoZW5hYmxlUmVmWzBdID8gIiIgOiAiKSIpICsgIiwgIiArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChlbmFibGVSZWZbMV0gPyAiIiA6ICIoIikgKyByZWZl
cmVuY2VbMV0gKyAoZW5hYmxlUmVmWzFdID8gIiIgOiAiKSIpICsgIiwgIiArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChlbmFibGVSZWZbMl0gPyAiIiA6ICIoIikgKyByZWZlcmVuY2Vb
Ml0gKyAoZW5hYmxlUmVmWzJdID8gIiIgOiAiKSIpICsgIiwgIiArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChlbmFibGVSZWZbM10gPyAiIiA6ICIoIikgKyByZWZlcmVuY2VbM10gKyAo
ZW5hYmxlUmVmWzNdID8gIiIgOiAiKSIpKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1Rl
eHR1cmVUZXN0VXRpbC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzVGV4dHVyZVRlc3RVdGlsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYzNWQ5NDIyNjE1ZTA0YzgyZTI4ZmU1NGIwZGMxYWM5ODczOWM5ZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFw
L21vZHVsZXMvc2hhcmVkL2dsc1RleHR1cmVUZXN0VXRpbC5qcwpAQCAtMCwwICsxLDI2NDIgQEAK
Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVu
R0wgRVMgVXRpbGl0aWVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
KiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICoKKyAqLworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ21vZHVs
ZXMuc2hhcmVkLmdsc1RleHR1cmVUZXN0VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
Y29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9u
LnRjdVBpeGVsRm9ybWF0Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1UkdC
QScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVN0cmluZ1RlbXBsYXRlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1U3VyZmFjZScpOworZ29vZy5yZXF1
aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRleExvb2t1cFZlcmlmaWVyJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4Q29tcGFyZVZlcmlmaWVyJyk7Citnb29nLnJlcXVp
cmUoJ2ZyYW1ld29yay5jb21tb24udGN1VGV4dHVyZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZU1hdGgnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRl
clV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJQcm9ncmFt
Jyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlUmFuZG9tJyk7CisK
K2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7Cit2YXIgdGN1VGV4TG9va3VwVmVyaWZpZXIgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdVRleExvb2t1cFZlcmlmaWVyOwordmFyIHRjdVRleENvbXBhcmVWZXJp
ZmllciA9IGZyYW1ld29yay5jb21tb24udGN1VGV4Q29tcGFyZVZlcmlmaWVyOwordmFyIGdsc1Rl
eHR1cmVUZXN0VXRpbCA9IG1vZHVsZXMuc2hhcmVkLmdsc1RleHR1cmVUZXN0VXRpbDsKK3ZhciBn
bHVEcmF3VXRpbCA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1RHJhd1V0aWw7Cit2YXIgZ2x1U2hhZGVy
UHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKK3ZhciB0Y3VUZXh0
dXJlID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VUZXh0dXJlOwordmFyIHRjdVN1cmZhY2UgPSBmcmFt
ZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7Cit2YXIgZ2x1U2hhZGVyVXRpbCA9IGZyYW1ld29yay5v
cGVuZ2wuZ2x1U2hhZGVyVXRpbDsKK3ZhciB0Y3VTdHJpbmdUZW1wbGF0ZSA9IGZyYW1ld29yay5j
b21tb24udGN1U3RyaW5nVGVtcGxhdGU7Cit2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVNYXRoOwordmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1
SW1hZ2VDb21wYXJlOwordmFyIHRjdVBpeGVsRm9ybWF0ID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VQ
aXhlbEZvcm1hdDsKK3ZhciB0Y3VSR0JBID0gZnJhbWV3b3JrLmNvbW1vbi50Y3VSR0JBOwordmFy
IGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207CisKK3ZhciBERV9B
U1NFUlQgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKCF4KQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0Fzc2VydCBmYWlsZWQnKTsKK307CisKK3ZhciBNSU5fU1VCUElYRUxfQklUUyA9IDQ7CisK
Ky8qKgorICogQGVudW0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLnRleHR1cmVUeXBlID0gewor
ICAgIFRFWFRVUkVUWVBFXzJEOiAwLAorICAgIFRFWFRVUkVUWVBFX0NVQkU6IDEsCisgICAgVEVY
VFVSRVRZUEVfMkRfQVJSQVk6IDIsCisgICAgVEVYVFVSRVRZUEVfM0Q6IDMsCisgICAgVEVYVFVS
RVRZUEVfQ1VCRV9BUlJBWTogNCwKKyAgICBURVhUVVJFVFlQRV8xRDogNSwKKyAgICBURVhUVVJF
VFlQRV8xRF9BUlJBWTogNiwKKyAgICBURVhUVVJFVFlQRV9CVUZGRVI6IDcKK307CisKKy8qKgor
ICogQGVudW0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlID0geworICAgIFNB
TVBMRVJUWVBFX0ZMT0FUOiAwLAorICAgIFNBTVBMRVJUWVBFX0lOVDogMSwKKyAgICBTQU1QTEVS
VFlQRV9VSU5UOiAyLAorICAgIFNBTVBMRVJUWVBFX1NIQURPVzogMywKKworICAgIFNBTVBMRVJU
WVBFX0ZFVENIX0ZMT0FUOiA0LAorICAgIFNBTVBMRVJUWVBFX0ZFVENIX0lOVDogNSwKKyAgICBT
QU1QTEVSVFlQRV9GRVRDSF9VSU5UOiA2Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5UZXh0dXJlRm9ybWF0fSBmb3JtYXQKKyAqIEByZXR1cm4ge2dsc1RleHR1cmVUZXN0VXRpbC5z
YW1wbGVyVHlwZX0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmdldFNhbXBsZXJUeXBlID0gZnVu
Y3Rpb24oZm9ybWF0KSB7CisgICAgaWYgKGZvcm1hdCA9PSBudWxsKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ01pc3NpbmcgZm9ybWF0IGluZm9ybWF0aW9uJyk7CisKKyAgICBzd2l0Y2ggKGZv
cm1hdC50eXBlKSB7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5TSUdORURf
SU5UODoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQxNjoK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBlLlNJR05FRF9JTlQzMjoKKyAgICAg
ICAgICAgIHJldHVybiBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVf
SU5UOworCisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlQ4
OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5TSUdORURfSU5UMzI6Cisg
ICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DaGFubmVsVHlwZS5VTlNJR05FRF9JTlRfMTAxMDEwMl9S
RVY6CisgICAgICAgICAgICByZXR1cm4gZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNB
TVBMRVJUWVBFX1VJTlQ7CisKKyAgICAgICAgLy8gVGV4dHVyZSBmb3JtYXRzIHVzZWQgaW4gZGVw
dGgvc3RlbmNpbCB0ZXh0dXJlcy4KKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkNoYW5uZWxUeXBl
LlVOU0lHTkVEX0lOVDE2OgorICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ2hhbm5lbFR5cGUuVU5T
SUdORURfSU5UXzI0Xzg6CisgICAgICAgICAgICByZXR1cm4gKGZvcm1hdC5vcmRlciA9PSB0Y3VU
ZXh0dXJlLkNoYW5uZWxPcmRlci5EIHx8IGZvcm1hdC5vcmRlciA9PSB0Y3VUZXh0dXJlLkNoYW5u
ZWxPcmRlci5EUykgPyBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVf
RkxPQVQgOiBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfVUlOVDsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsc1RleHR1cmVUZXN0VXRp
bC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GTE9BVDsKKyAgICB9Cit9OworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY2FudmFzCisgKiBAcGFyYW0ge251
bWJlcn0gcHJlZmVycmVkV2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBwcmVmZXJyZWRIZWlnaHQK
KyAqIEBwYXJhbSB7bnVtYmVyPX0gc2VlZAorICovCitnbHNUZXh0dXJlVGVzdFV0aWwuUmFuZG9t
Vmlld3BvcnQgPSBmdW5jdGlvbihjYW52YXMsIHByZWZlcnJlZFdpZHRoLCBwcmVmZXJyZWRIZWln
aHQsIHNlZWQpIHsKKyAgICB0aGlzLndpZHRoID0gTWF0aC5taW4oY2FudmFzLndpZHRoLCBwcmVm
ZXJyZWRXaWR0aCk7CisgICAgdGhpcy5oZWlnaHQgPSBNYXRoLm1pbihjYW52YXMuaGVpZ2h0LCBw
cmVmZXJyZWRIZWlnaHQpOworCisgICAgaWYgKHR5cGVvZiBzZWVkID09PSAndW5kZWZpbmVkJykK
KyAgICAgICAgc2VlZCA9IHByZWZlcnJlZFdpZHRoICsgcHJlZmVycmVkSGVpZ2h0OworCisgICAg
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oc2VlZCk7CisgICAgdGhpcy54ID0gcm5kLmdl
dEludCgwLCBjYW52YXMud2lkdGggLSB0aGlzLndpZHRoKTsKKyAgICB0aGlzLnkgPSBybmQuZ2V0
SW50KDAsIGNhbnZhcy5oZWlnaHQgLSB0aGlzLmhlaWdodCk7Cit9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGV9IHRleFR5
cGUKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLlJlbmRlclBhcmFtcyA9IGZ1bmN0aW9uKHRleFR5
cGUpIHsKKyAgICB0aGlzLmZsYWdzID0geworICAgICAgICBwcm9qZWN0ZWQ6IGZhbHNlLAorICAg
ICAgICB1c2VfYmlhczogZmFsc2UsCisgICAgICAgIGxvZ19wcm9ncmFtczogZmFsc2UsCisgICAg
ICAgIGxvZ191bmlmb3JtczogZmFsc2UKKyAgICB9OworICAgIHRoaXMudGV4VHlwZSA9IHRleFR5
cGU7CisgICAgdGhpcy53ID0gWzEsIDEsIDEsIDFdOworICAgIHRoaXMuYmlhcyA9IDA7CisgICAg
dGhpcy5yZWYgPSAwOworICAgIHRoaXMuY29sb3JTY2FsZSA9IFsxLCAxLCAxLCAxXTsKKyAgICB0
aGlzLmNvbG9yQmlhcyA9IFswLCAwLCAwLCAwXTsKKyAgICB0aGlzLnNhbXBsZXJUeXBlID0gZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX0ZMT0FUOworfTsKKworLyoq
CisgKiBAZW51bQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwubG9kTW9kZSA9IHsKKyAgICBFWEFD
VDogMCwgLy8hPCBJZGVhbCBsb2QgY29tcHV0YXRpb24uCisgICAgTUlOX0JPVU5EOiAxLCAvLyE8
IFVzZSBlc3RpbWF0aW9uIHJhbmdlIG1pbmltdW0gYm91bmQuCisgICAgTUFYX0JPVU5EOiAyIC8v
ITwgVXNlIGVzdGltYXRpb24gcmFuZ2UgbWF4aW11bSBib3VuZC4KKworfTsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVuZGVyUGFyYW1z
fQorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5cGV9IHRleFR5cGUKKyAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5TYW1wbGVyPX0gc2FtcGxlcgorICogQHBhcmFtIHtnbHNUZXh0
dXJlVGVzdFV0aWwubG9kTW9kZT19IGxvZE1vZGVfCisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5S
ZWZlcmVuY2VQYXJhbXMgPSBmdW5jdGlvbih0ZXhUeXBlLCBzYW1wbGVyLCBsb2RNb2RlXykgewor
ICAgIGdsc1RleHR1cmVUZXN0VXRpbC5SZW5kZXJQYXJhbXMuY2FsbCh0aGlzLCB0ZXhUeXBlKTsK
KyAgICBpZiAoc2FtcGxlcikKKyAgICAgICAgdGhpcy5zYW1wbGVyID0gc2FtcGxlcjsKKyAgICBp
ZiAobG9kTW9kZV8pCisgICAgICAgIHRoaXMubG9kTW9kZSA9IGxvZE1vZGVfOworICAgIGVsc2UK
KyAgICAgICAgdGhpcy5sb2RNb2RlID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGUuRVhBQ1Q7
CisgICAgdGhpcy5taW5Mb2QgPSAtMTAwMDsKKyAgICB0aGlzLm1heExvZCA9IDEwMDA7CisgICAg
dGhpcy5iYXNlTGV2ZWwgPSAwOworICAgIHRoaXMubWF4TGV2ZWwgPSAxMDAwOworfTsKKworZ2xz
VGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KGdsc1RleHR1cmVUZXN0VXRpbC5SZW5kZXJQYXJhbXMucHJvdG90eXBlKTsKKworLyoqIENvcHkg
Y29uc3RydWN0b3IgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXMucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gZ2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtczsKKwor
LyoqCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJvdHRvbUxlZnQKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gdG9wUmlnaHQKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59CisgKi8KK2ds
c1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkMkQgPSBmdW5jdGlvbihib3R0b21M
ZWZ0LCB0b3BSaWdodCkgeworICAgIHZhciBkc3QgPSBbXTsKKyAgICBkc3QubGVuZ3RoID0gNCAq
IDI7CisKKyAgICBkc3RbMF0gPSBib3R0b21MZWZ0WzBdOyBkc3RbMV0gPSBib3R0b21MZWZ0WzFd
OworICAgIGRzdFsyXSA9IGJvdHRvbUxlZnRbMF07IGRzdFszXSA9IHRvcFJpZ2h0WzFdOworICAg
IGRzdFs0XSA9IHRvcFJpZ2h0WzBdOyBkc3RbNV0gPSBib3R0b21MZWZ0WzFdOworICAgIGRzdFs2
XSA9IHRvcFJpZ2h0WzBdOyBkc3RbN10gPSB0b3BSaWdodFsxXTsKKworICAgIHJldHVybiBkc3Q7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHJl
dHVybiB7QXJyYXk8bnVtYmVyPn0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVRdWFk
VGV4Q29vcmRDdWJlID0gZnVuY3Rpb24oZmFjZSkgeworICAgIHZhciB0ZXhDb29yZE5lZ1ggPSBb
CisgICAgICAgIC0xLCAxLCAtMSwKKyAgICAgICAgLTEsIC0xLCAtMSwKKyAgICAgICAgLTEsIDEs
IDEsCisgICAgICAgIC0xLCAtMSwgMQorICAgIF07CisgICAgdmFyIHRleENvb3JkUG9zWCA9IFsK
KyAgICAgICAgKzEsIDEsIDEsCisgICAgICAgICsxLCAtMSwgMSwKKyAgICAgICAgKzEsIDEsIC0x
LAorICAgICAgICArMSwgLTEsIC0xCisgICAgXTsKKyAgICB2YXIgdGV4Q29vcmROZWdZID0gWwor
ICAgICAgICAtMSwgLTEsIDEsCisgICAgICAgIC0xLCAtMSwgLTEsCisgICAgICAgICAxLCAtMSwg
MSwKKyAgICAgICAgIDEsIC0xLCAtMQorICAgIF07CisgICAgdmFyIHRleENvb3JkUG9zWSA9IFsK
KyAgICAgICAgLTEsICsxLCAtMSwKKyAgICAgICAgLTEsICsxLCAxLAorICAgICAgICAgMSwgKzEs
IC0xLAorICAgICAgICAgMSwgKzEsIDEKKyAgICBdOworICAgIHZhciB0ZXhDb29yZE5lZ1ogPSBb
CisgICAgICAgICAxLCAxLCAtMSwKKyAgICAgICAgIDEsIC0xLCAtMSwKKyAgICAgICAgLTEsIDEs
IC0xLAorICAgICAgICAtMSwgLTEsIC0xCisgICAgXTsKKyAgICB2YXIgdGV4Q29vcmRQb3NaID0g
WworICAgICAgICAtMSwgMSwgKzEsCisgICAgICAgIC0xLCAtMSwgKzEsCisgICAgICAgICAxLCAx
LCArMSwKKyAgICAgICAgIDEsIC0xLCArMQorICAgIF07CisKKyAgICBzd2l0Y2ggKGZhY2UpIHsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1g6IHJl
dHVybiB0ZXhDb29yZE5lZ1g7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJF
RkFDRV9QT1NJVElWRV9YOiByZXR1cm4gdGV4Q29vcmRQb3NYOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWTogcmV0dXJuIHRleENvb3JkTmVnWTsK
KyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1k6IHJl
dHVybiB0ZXhDb29yZFBvc1k7CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJF
RkFDRV9ORUdBVElWRV9aOiByZXR1cm4gdGV4Q29vcmROZWdaOworICAgICAgICBjYXNlIHRjdVRl
eHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWjogcmV0dXJuIHRleENvb3JkUG9zWjsK
KyAgICB9CisgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgZmFjZSAnICsgZmFjZSk7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5DdWJlRmFjZX0gZmFjZQorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSBib3R0b21MZWZ0CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59
IHRvcFJpZ2h0CisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fQorICovCitnbHNUZXh0dXJlVGVz
dFV0aWwuY29tcHV0ZVF1YWRUZXhDb29yZEN1YmVGYWNlID0gZnVuY3Rpb24oZmFjZSwgYm90dG9t
TGVmdCwgdG9wUmlnaHQpIHsKKyAgICB2YXIgZHN0ID0gW107CisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBzUm93ID0gMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRSb3cg
PSAwOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbVJvdyA9IDA7CisgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBzU2lnbiA9IDEuMDsKKyAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIHRTaWduID0gMS4wOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbVNpZ24g
PSAxLjA7CisKKyAgICBzd2l0Y2ggKGZhY2UpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1
YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1g6IG1Sb3cgPSAwOyBzUm93ID0gMjsgdFJvdyA9IDE7
IG1TaWduID0gLTEuMDsgdFNpZ24gPSAtMS4wOyBicmVhazsKKyAgICAgICAgY2FzZSB0Y3VUZXh0
dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1g6IG1Sb3cgPSAwOyBzUm93ID0gMjsgdFJv
dyA9IDE7IHNTaWduID0gLTEuMDsgdFNpZ24gPSAtMS4wOyBicmVhazsKKyAgICAgICAgY2FzZSB0
Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05FR0FUSVZFX1k6IG1Sb3cgPSAxOyBzUm93ID0g
MDsgdFJvdyA9IDI7IG1TaWduID0gLTEuMDsgdFNpZ24gPSAtMS4wOyBicmVhazsKKyAgICAgICAg
Y2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX1BPU0lUSVZFX1k6IG1Sb3cgPSAxOyBz
Um93ID0gMDsgdFJvdyA9IDI7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZh
Y2UuQ1VCRUZBQ0VfTkVHQVRJVkVfWjogbVJvdyA9IDI7IHNSb3cgPSAwOyB0Um93ID0gMTsgbVNp
Z24gPSAtMS4wOyBzU2lnbiA9IC0xLjA7IHRTaWduID0gLTEuMDsgYnJlYWs7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJVElWRV9aOiBtUm93ID0gMjsgc1Jv
dyA9IDA7IHRSb3cgPSAxOyB0U2lnbiA9IC0xLjA7IGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGN1YmUgZmFjZSBzcGVjaWZpZWQu
Jyk7CisgICAgfQorCisgICAgZHN0WzAgKyBtUm93XSA9IG1TaWduOworICAgIGRzdFszICsgbVJv
d10gPSBtU2lnbjsKKyAgICBkc3RbNiArIG1Sb3ddID0gbVNpZ247CisgICAgZHN0WzkgKyBtUm93
XSA9IG1TaWduOworCisgICAgZHN0WzAgKyBzUm93XSA9IHNTaWduICogYm90dG9tTGVmdFswXTsK
KyAgICBkc3RbMyArIHNSb3ddID0gc1NpZ24gKiBib3R0b21MZWZ0WzBdOworICAgIGRzdFs2ICsg
c1Jvd10gPSBzU2lnbiAqIHRvcFJpZ2h0WzBdOworICAgIGRzdFs5ICsgc1Jvd10gPSBzU2lnbiAq
IHRvcFJpZ2h0WzBdOworCisgICAgZHN0WzAgKyB0Um93XSA9IHRTaWduICogYm90dG9tTGVmdFsx
XTsKKyAgICBkc3RbMyArIHRSb3ddID0gdFNpZ24gKiB0b3BSaWdodFsxXTsKKyAgICBkc3RbNiAr
IHRSb3ddID0gdFNpZ24gKiBib3R0b21MZWZ0WzFdOworICAgIGRzdFs5ICsgdFJvd10gPSB0U2ln
biAqIHRvcFJpZ2h0WzFdOworCisgICAgcmV0dXJuIGRzdDsKK307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IGxheWVyTmR4CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJvdHRvbUxlZnQK
KyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdG9wUmlnaHQKKyAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkMkRBcnJh
eSA9IGZ1bmN0aW9uKGxheWVyTmR4LCBib3R0b21MZWZ0LCB0b3BSaWdodCkgeworICAgIHZhciBk
c3QgPSBbXTsKKyAgICBkc3QubGVuZ3RoID0gNCAqIDM7CisKKyAgICBkc3RbMF0gPSBib3R0b21M
ZWZ0WzBdOyBkc3RbMV0gPSBib3R0b21MZWZ0WzFdOyBkc3RbMl0gPSBsYXllck5keDsKKyAgICBk
c3RbM10gPSBib3R0b21MZWZ0WzBdOyBkc3RbNF0gPSB0b3BSaWdodFsxXTsgZHN0WzVdID0gbGF5
ZXJOZHg7CisgICAgZHN0WzZdID0gdG9wUmlnaHRbMF07IGRzdFs3XSA9IGJvdHRvbUxlZnRbMV07
IGRzdFs4XSA9IGxheWVyTmR4OworICAgIGRzdFs5XSA9IHRvcFJpZ2h0WzBdOyBkc3RbMTBdID0g
dG9wUmlnaHRbMV07IGRzdFsxMV0gPSBsYXllck5keDsKKworICAgIHJldHVybiBkc3Q7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gYQorICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSBiCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGMKKyAqIEByZXR1cm4ge0FycmF5PG51
bWJlcj59IGEgKyAoYiAtIGEpICogYworICovCitnbHNUZXh0dXJlVGVzdFV0aWwuc2VsZWN0Q29v
cmRzID0gZnVuY3Rpb24oYSwgYiwgYykgeworICAgIHZhciB4MSA9IGRlTWF0aC5zdWJ0cmFjdChi
LCBhKTsKKyAgICB2YXIgeDIgPSBkZU1hdGgubXVsdGlwbHkoeDEsIGMpOworICAgIHZhciB4MyA9
IGRlTWF0aC5hZGQoYSwgeDIpOworICAgIHJldHVybiB4MzsKK307CisKKy8qKgorICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSBwMAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwMQorICogQHBh
cmFtIHtBcnJheTxudW1iZXI+fSBkaXJTd3oKKyAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59Cisg
Ki8KK2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUXVhZFRleENvb3JkM0QgPSBmdW5jdGlvbihw
MCwgcDEsIGRpclN3eikgeworICAgIHZhciBkc3QgPSBbXTsKKyAgICBkc3QubGVuZ3RoID0gNCAq
IDM7CisKKyAgICB2YXIgZjAgPSBkZU1hdGguc3dpenpsZSgoWzAsIDAsIDBdKSwgW2RpclN3elsw
XSwgZGlyU3d6WzFdLCBkaXJTd3pbMl1dKTsKKyAgICB2YXIgZjEgPSBkZU1hdGguc3dpenpsZSgo
WzAsIDEsIDBdKSwgW2RpclN3elswXSwgZGlyU3d6WzFdLCBkaXJTd3pbMl1dKTsKKyAgICB2YXIg
ZjIgPSBkZU1hdGguc3dpenpsZSgoWzEsIDAsIDBdKSwgW2RpclN3elswXSwgZGlyU3d6WzFdLCBk
aXJTd3pbMl1dKTsKKyAgICB2YXIgZjMgPSBkZU1hdGguc3dpenpsZSgoWzEsIDEsIDBdKSwgW2Rp
clN3elswXSwgZGlyU3d6WzFdLCBkaXJTd3pbMl1dKTsKKworICAgIHZhciB2MCA9IGdsc1RleHR1
cmVUZXN0VXRpbC5zZWxlY3RDb29yZHMocDAsIHAxLCBmMCk7CisgICAgdmFyIHYxID0gZ2xzVGV4
dHVyZVRlc3RVdGlsLnNlbGVjdENvb3JkcyhwMCwgcDEsIGYxKTsKKyAgICB2YXIgdjIgPSBnbHNU
ZXh0dXJlVGVzdFV0aWwuc2VsZWN0Q29vcmRzKHAwLCBwMSwgZjIpOworICAgIHZhciB2MyA9IGds
c1RleHR1cmVUZXN0VXRpbC5zZWxlY3RDb29yZHMocDAsIHAxLCBmMyk7CisKKyAgICBkc3RbMF0g
PSB2MFswXTsgZHN0WzFdID0gdjBbMV07IGRzdFsyXSA9IHYwWzJdOworICAgIGRzdFszXSA9IHYx
WzBdOyBkc3RbNF0gPSB2MVsxXTsgZHN0WzVdID0gdjFbMl07CisgICAgZHN0WzZdID0gdjJbMF07
IGRzdFs3XSA9IHYyWzFdOyBkc3RbOF0gPSB2MlsyXTsKKyAgICBkc3RbOV0gPSB2M1swXTsgZHN0
WzEwXSA9IHYzWzFdOyBkc3RbMTFdID0gdjNbMl07CisKKyAgICByZXR1cm4gZHN0OworfTsKKwor
LyoqCisgKiBAZW51bQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUgPSB7Cisg
ICAgUFJPR1JBTV8yRF9GTE9BVDogMCwKKyAgICBQUk9HUkFNXzJEX0lOVDogMSwKKyAgICBQUk9H
UkFNXzJEX1VJTlQ6IDIsCisgICAgUFJPR1JBTV8yRF9TSEFET1c6IDMsCisKKyAgICBQUk9HUkFN
XzJEX0ZMT0FUX0JJQVM6IDQsCisgICAgUFJPR1JBTV8yRF9JTlRfQklBUzogNSwKKyAgICBQUk9H
UkFNXzJEX1VJTlRfQklBUzogNiwKKyAgICBQUk9HUkFNXzJEX1NIQURPV19CSUFTOiA3LAorCisg
ICAgUFJPR1JBTV8xRF9GTE9BVDogOCwKKyAgICBQUk9HUkFNXzFEX0lOVDogOSwKKyAgICBQUk9H
UkFNXzFEX1VJTlQ6IDEwLAorICAgIFBST0dSQU1fMURfU0hBRE9XOiAxMSwKKworICAgIFBST0dS
QU1fMURfRkxPQVRfQklBUzogMTIsCisgICAgUFJPR1JBTV8xRF9JTlRfQklBUzogMTMsCisgICAg
UFJPR1JBTV8xRF9VSU5UX0JJQVM6IDE0LAorICAgIFBST0dSQU1fMURfU0hBRE9XX0JJQVM6IDE1
LAorCisgICAgUFJPR1JBTV9DVUJFX0ZMT0FUOiAxNiwKKyAgICBQUk9HUkFNX0NVQkVfSU5UOiAx
NywKKyAgICBQUk9HUkFNX0NVQkVfVUlOVDogMTgsCisgICAgUFJPR1JBTV9DVUJFX1NIQURPVzog
MTksCisKKyAgICBQUk9HUkFNX0NVQkVfRkxPQVRfQklBUzogMjAsCisgICAgUFJPR1JBTV9DVUJF
X0lOVF9CSUFTOiAyMSwKKyAgICBQUk9HUkFNX0NVQkVfVUlOVF9CSUFTOiAyMiwKKyAgICBQUk9H
UkFNX0NVQkVfU0hBRE9XX0JJQVM6IDIzLAorCisgICAgUFJPR1JBTV8xRF9BUlJBWV9GTE9BVDog
MjQsCisgICAgUFJPR1JBTV8xRF9BUlJBWV9JTlQ6IDI1LAorICAgIFBST0dSQU1fMURfQVJSQVlf
VUlOVDogMjYsCisgICAgUFJPR1JBTV8xRF9BUlJBWV9TSEFET1c6IDI3LAorCisgICAgUFJPR1JB
TV8yRF9BUlJBWV9GTE9BVDogMjgsCisgICAgUFJPR1JBTV8yRF9BUlJBWV9JTlQ6IDI5LAorICAg
IFBST0dSQU1fMkRfQVJSQVlfVUlOVDogMzAsCisgICAgUFJPR1JBTV8yRF9BUlJBWV9TSEFET1c6
IDMxLAorCisgICAgUFJPR1JBTV8zRF9GTE9BVDogMzIsCisgICAgUFJPR1JBTV8zRF9JTlQ6IDMz
LAorICAgIFBST0dSQU1fM0RfVUlOVDogMzQsCisKKyAgICBQUk9HUkFNXzNEX0ZMT0FUX0JJQVM6
IDM1LAorICAgIFBST0dSQU1fM0RfSU5UX0JJQVM6IDM2LAorICAgIFBST0dSQU1fM0RfVUlOVF9C
SUFTOiAzNywKKworICAgIFBST0dSQU1fQ1VCRV9BUlJBWV9GTE9BVDogMzgsCisgICAgUFJPR1JB
TV9DVUJFX0FSUkFZX0lOVDogMzksCisgICAgUFJPR1JBTV9DVUJFX0FSUkFZX1VJTlQ6IDQwLAor
ICAgIFBST0dSQU1fQ1VCRV9BUlJBWV9TSEFET1c6IDQxLAorCisgICAgUFJPR1JBTV9CVUZGRVJf
RkxPQVQ6IDQyLAorICAgIFBST0dSQU1fQlVGRkVSX0lOVDogNDMsCisgICAgUFJPR1JBTV9CVUZG
RVJfVUlOVDogNDQKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmlu
Z30gdmVyc2lvbiBHTCB2ZXJzaW9uCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwucHJlY2lzaW9u
fSBwcmVjaXNpb24KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLlByb2dyYW1MaWJyYXJ5ID0gZnVu
Y3Rpb24odmVyc2lvbiwgcHJlY2lzaW9uKSB7CisgICAgdGhpcy5tX2dsc2xWZXJzaW9uID0gdmVy
c2lvbjsKKyAgICB0aGlzLm1fdGV4Q29vcmRQcmVjaXNpb24gPSBwcmVjaXNpb247Cit9OworCisv
KioKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlfSBwcm9ncmFtCisg
KiBAcmV0dXJuIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19CisgKi8KK2dsc1RleHR1
cmVUZXN0VXRpbC5Qcm9ncmFtTGlicmFyeS5wcm90b3R5cGUuZ2V0UHJvZ3JhbSA9IGZ1bmN0aW9u
KHByb2dyYW0pIHsKKyAgICAvKiBUT0RPOiBJbXBsZW1lbnQgKi8KKyAgICAvLyBpZiAobV9wcm9n
cmFtcy5maW5kKHByb2dyYW0pICE9IG1fcHJvZ3JhbXMuZW5kKCkpCisgICAgLy8gICAgIHJldHVy
biBtX3Byb2dyYW1zW3Byb2dyYW1dOyAvLyBSZXR1cm4gZnJvbSBjYWNoZS4KKworICAgIHZhciB2
ZXJ0U2hhZGVyVGVtcGxhdGUgPQorICAgICAgICAnJHtWVFhfSEVBREVSfScgKworICAgICAgICAn
JHtWVFhfSU59IGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbicgKworICAgICAgICAnJHtWVFhfSU59
ICR7UFJFQ0lTSU9OfSAke1RFWENPT1JEX1RZUEV9IGFfdGV4Q29vcmQ7XG4nICsKKyAgICAgICAg
JyR7VlRYX09VVH0gJHtQUkVDSVNJT059ICR7VEVYQ09PUkRfVFlQRX0gdl90ZXhDb29yZDtcbicg
KworICAgICAgICAnXG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbiAodm9pZClcbicgKworICAgICAg
ICAnIHtcbicgKworICAgICAgICAnIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbicgKworICAg
ICAgICAnIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkO1xuJyArCisgICAgICAgICd9XG4nOworICAg
IHZhciBmcmFnU2hhZGVyVGVtcGxhdGUgPQorICAgICAgICAnJHtGUkFHX0hFQURFUn0nICsKKyAg
ICAgICAgJyR7RlJBR19JTn0gJHtQUkVDSVNJT059ICR7VEVYQ09PUkRfVFlQRX0gdl90ZXhDb29y
ZDtcbicgKworICAgICAgICAndW5pZm9ybSAke1BSRUNJU0lPTn0gZmxvYXQgdV9iaWFzO1xuJyAr
CisgICAgICAgICd1bmlmb3JtICR7UFJFQ0lTSU9OfSBmbG9hdCB1X3JlZjtcbicgKworICAgICAg
ICAndW5pZm9ybSAke1BSRUNJU0lPTn0gdmVjNCB1X2NvbG9yU2NhbGU7XG4nICsKKyAgICAgICAg
J3VuaWZvcm0gJHtQUkVDSVNJT059IHZlYzQgdV9jb2xvckJpYXM7XG4nICsKKyAgICAgICAgJ3Vu
aWZvcm0gJHtQUkVDSVNJT059ICR7U0FNUExFUl9UWVBFfSB1X3NhbXBsZXI7XG4nICsKKyAgICAg
ICAgJ1xuJyArCisgICAgICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAgICAgJyB7XG4n
ICsKKyAgICAgICAgJyAke0ZSQUdfQ09MT1J9ID0gJHtMT09LVVB9ICogdV9jb2xvclNjYWxlICsg
dV9jb2xvckJpYXM7XG4nICsKKyAgICAgICAgJ31cbic7CisKKyAgICB2YXIgcGFyYW1zID0gW107
CisKKyAgICB2YXIgaXNDdWJlID0gZGVNYXRoLmRlSW5SYW5nZTMyKHByb2dyYW0sIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVQsIGdsc1RleHR1cmVUZXN0
VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfU0hBRE9XX0JJQVMpOworICAgIHZhciBpc0Fy
cmF5ID0gZGVNYXRoLmRlSW5SYW5nZTMyKHByb2dyYW0sIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9n
cmFtVHlwZS5QUk9HUkFNXzJEX0FSUkFZX0ZMT0FULCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3Jh
bVR5cGUuUFJPR1JBTV8yRF9BUlJBWV9TSEFET1cpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVNYXRoLmRlSW5SYW5nZTMyKHByb2dyYW0sIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9n
cmFtVHlwZS5QUk9HUkFNXzFEX0FSUkFZX0ZMT0FULCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3Jh
bVR5cGUuUFJPR1JBTV8xRF9BUlJBWV9TSEFET1cpOworCisgICAgdmFyIGlzMUQgPSBkZU1hdGgu
ZGVJblJhbmdlMzIocHJvZ3JhbSwgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dS
QU1fMURfRkxPQVQsIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX1VJ
TlRfQklBUykgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguZGVJblJhbmdl
MzIocHJvZ3JhbSwgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMURfQVJS
QVlfRkxPQVQsIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX0FSUkFZ
X1NIQURPVykgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZU1hdGguZGVJblJhbmdl
MzIocHJvZ3JhbSwgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQlVGRkVS
X0ZMT0FULCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9CVUZGRVJfVUlO
VCk7CisKKyAgICB2YXIgaXMyRCA9IGRlTWF0aC5kZUluUmFuZ2UzMihwcm9ncmFtLCBnbHNUZXh0
dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8yRF9GTE9BVCwgZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfVUlOVF9CSUFTKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlTWF0aC5kZUluUmFuZ2UzMihwcm9ncmFtLCBnbHNUZXh0dXJlVGVzdFV0
aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8yRF9BUlJBWV9GTE9BVCwgZ2xzVGV4dHVyZVRlc3RVdGls
LnByb2dyYW1UeXBlLlBST0dSQU1fMkRfQVJSQVlfU0hBRE9XKTsKKworICAgIHZhciBpczNEID0g
ZGVNYXRoLmRlSW5SYW5nZTMyKHByb2dyYW0sIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlw
ZS5QUk9HUkFNXzNEX0ZMT0FULCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JB
TV8zRF9VSU5UX0JJQVMpOworICAgIHZhciBpc0N1YmVBcnJheSA9IGRlTWF0aC5kZUluUmFuZ2Uz
Mihwcm9ncmFtLCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX0FS
UkFZX0ZMT0FULCBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX0FS
UkFZX1NIQURPVyk7CisgICAgdmFyIGlzQnVmZmVyID0gZGVNYXRoLmRlSW5SYW5nZTMyKHByb2dy
YW0sIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0JVRkZFUl9GTE9BVCwg
Z2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQlVGRkVSX1VJTlQpOworCisg
ICAgaWYgKHRoaXMubV9nbHNsVmVyc2lvbiA9PT0gJzEwMCBlcycpIHsKKyAgICAgICAgcGFyYW1z
WydGUkFHX0hFQURFUiddID0gJyc7CisgICAgICAgIHBhcmFtc1snVlRYX0hFQURFUiddID0gJyc7
CisgICAgICAgIHBhcmFtc1snVlRYX0lOJ10gPSAnYXR0cmlidXRlJzsKKyAgICAgICAgcGFyYW1z
WydWVFhfT1VUJ10gPSAndmFyeWluZyc7CisgICAgICAgIHBhcmFtc1snRlJBR19JTiddID0gJ3Zh
cnlpbmcnOworICAgICAgICBwYXJhbXNbJ0ZSQUdfQ09MT1InXSA9ICdnbF9GcmFnQ29sb3InOwor
ICAgIH0gZWxzZSBpZiAodGhpcy5tX2dsc2xWZXJzaW9uID09PSAnMzAwIGVzJyB8fCB0aGlzLm1f
Z2xzbFZlcnNpb24gPT09ICczMTAgZXMnIHx8IHRoaXMubV9nbHNsVmVyc2lvbiA9PT0gJzMzMCBl
cycpIHsKKyAgICAgICAgdmFyIGV4dCA9IG51bGw7CisKKyAgICAgICAgLy8gaWYgKGlzQ3ViZUFy
cmF5ICYmIGdsdTo6Z2xzbFZlcnNpb25Jc0VTKG1fZ2xzbFZlcnNpb24pKQorICAgICAgICAvLyAg
ICAgZXh0ID0gImdsLkVYVF90ZXh0dXJlX2N1YmVfbWFwX2FycmF5IjsKKyAgICAgICAgLy8gZWxz
ZSBpZiAoaXNCdWZmZXIgJiYgZ2x1OjpnbHNsVmVyc2lvbklzRVMobV9nbHNsVmVyc2lvbikpCisg
ICAgICAgIC8vICAgICBleHQgPSAiZ2wuRVhUX3RleHR1cmVfYnVmZmVyIjsKKworICAgICAgICB2
YXIgZXh0ZW5zaW9uID0gJyc7CisgICAgICAgIGlmIChleHQpCisgICAgICAgICAgICBleHRlbnNp
b24gPSAnXG4jZXh0ZW5zaW9uICcgKyBleHQgKyAnIDogcmVxdWlyZSc7CisKKyAgICAgICAgcGFy
YW1zWydGUkFHX0hFQURFUiddID0gJyN2ZXJzaW9uICcgKyB0aGlzLm1fZ2xzbFZlcnNpb24gKyBl
eHRlbnNpb24gKyAnXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBf
RnJhZ0NvbG9yO1xuJzsKKyAgICAgICAgcGFyYW1zWydWVFhfSEVBREVSJ10gPSAnI3ZlcnNpb24g
JyArIHRoaXMubV9nbHNsVmVyc2lvbiArICdcbic7CisgICAgICAgIHBhcmFtc1snVlRYX0lOJ10g
PSAnaW4nOworICAgICAgICBwYXJhbXNbJ1ZUWF9PVVQnXSA9ICdvdXQnOworICAgICAgICBwYXJh
bXNbJ0ZSQUdfSU4nXSA9ICdpbic7CisgICAgICAgIHBhcmFtc1snRlJBR19DT0xPUiddID0gJ2RF
UVBfRnJhZ0NvbG9yJzsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1
cHBvcnRlZCB2ZXJzaW9uOiAnICsgdGhpcy5tX2dsc2xWZXJzaW9uKTsKKworICAgIHBhcmFtc1sn
UFJFQ0lTSU9OJ10gPSBnbHVTaGFkZXJVdGlsLmdldFByZWNpc2lvbk5hbWUodGhpcy5tX3RleENv
b3JkUHJlY2lzaW9uKTsKKworICAgIGlmIChpc0N1YmVBcnJheSkKKyAgICAgICAgcGFyYW1zWydU
RVhDT09SRF9UWVBFJ10gPSAndmVjNCc7CisgICAgZWxzZSBpZiAoaXNDdWJlIHx8IChpczJEICYm
IGlzQXJyYXkpIHx8IGlzM0QpCisgICAgICAgIHBhcmFtc1snVEVYQ09PUkRfVFlQRSddID0gJ3Zl
YzMnOworICAgIGVsc2UgaWYgKChpczFEICYmIGlzQXJyYXkpIHx8IGlzMkQpCisgICAgICAgIHBh
cmFtc1snVEVYQ09PUkRfVFlQRSddID0gJ3ZlYzInOworICAgIGVsc2UgaWYgKGlzMUQpCisgICAg
ICAgIHBhcmFtc1snVEVYQ09PUkRfVFlQRSddID0gJ2Zsb2F0JzsKKyAgICBlbHNlCisgICAgICAg
IERFX0FTU0VSVChmYWxzZSk7CisKKyAgICB2YXIgc2FtcGxlciA9IG51bGw7CisgICAgdmFyIGxv
b2t1cCA9IG51bGw7CisKKyAgICBpZiAodGhpcy5tX2dsc2xWZXJzaW9uID09PSAnMzAwIGVzJyB8
fCB0aGlzLm1fZ2xzbFZlcnNpb24gPT09ICczMTAgZXMnIHx8IHRoaXMubV9nbHNsVmVyc2lvbiA9
PT0gJzMzMCBlcycpIHsKKyAgICAgICAgc3dpdGNoIChwcm9ncmFtKSB7CisgICAgICAgICAgICBj
YXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzJEX0ZMT0FUOiBzYW1w
bGVyID0gJ3NhbXBsZXIyRCc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29y
ZCknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1U
eXBlLlBST0dSQU1fMkRfSU5UOiBzYW1wbGVyID0gJ2lzYW1wbGVyMkQnOyBsb29rdXAgPSAndmVj
NCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCkpJzsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzJEX1VJTlQ6IHNhbXBs
ZXIgPSAndXNhbXBsZXIyRCc7IGxvb2t1cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2X3Rl
eENvb3JkKSknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnBy
b2dyYW1UeXBlLlBST0dSQU1fMkRfU0hBRE9XOiBzYW1wbGVyID0gJ3NhbXBsZXIyRFNoYWRvdyc7
IGxvb2t1cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2ZWMzKHZfdGV4Q29vcmQsIHVfcmVm
KSksIDAuMCwgMC4wLCAxLjApJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVU
ZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzJEX0ZMT0FUX0JJQVM6IHNhbXBsZXIgPSAnc2Ft
cGxlcjJEJzsgbG9va3VwID0gJ3RleHR1cmUodV9zYW1wbGVyLCB2X3RleENvb3JkLCB1X2JpYXMp
JzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlw
ZS5QUk9HUkFNXzJEX0lOVF9CSUFTOiBzYW1wbGVyID0gJ2lzYW1wbGVyMkQnOyBsb29rdXAgPSAn
dmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCwgdV9iaWFzKSknOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRf
VUlOVF9CSUFTOiBzYW1wbGVyID0gJ3VzYW1wbGVyMkQnOyBsb29rdXAgPSAndmVjNCh0ZXh0dXJl
KHVfc2FtcGxlciwgdl90ZXhDb29yZCwgdV9iaWFzKSknOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfU0hBRE9XX0JJQVM6
IHNhbXBsZXIgPSAnc2FtcGxlcjJEU2hhZG93JzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3Nh
bXBsZXIsIHZlYzModl90ZXhDb29yZCwgdV9yZWYpLCB1X2JpYXMpLCAwLjAsIDAuMCwgMS4wKSc7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV8xRF9GTE9BVDogc2FtcGxlciA9ICdzYW1wbGVyMUQnOyBsb29rdXAgPSAndGV4dHVy
ZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1Rl
eHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX0lOVDogc2FtcGxlciA9ICdpc2Ft
cGxlcjFEJzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpKSc7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV8xRF9VSU5UOiBzYW1wbGVyID0gJ3VzYW1wbGVyMUQnOyBsb29rdXAgPSAndmVjNCh0
ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCkpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX1NIQURPVzogc2FtcGxl
ciA9ICdzYW1wbGVyMURTaGFkb3cnOyBsb29rdXAgPSAndmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwg
dmVjMyh2X3RleENvb3JkLCB1X3JlZikpLCAwLjAsIDAuMCwgMS4wKSc7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8xRF9GTE9B
VF9CSUFTOiBzYW1wbGVyID0gJ3NhbXBsZXIxRCc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxl
ciwgdl90ZXhDb29yZCwgdV9iaWFzKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0
dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8xRF9JTlRfQklBUzogc2FtcGxlciA9ICdp
c2FtcGxlcjFEJzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQs
IHVfYmlhcykpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5w
cm9ncmFtVHlwZS5QUk9HUkFNXzFEX1VJTlRfQklBUzogc2FtcGxlciA9ICd1c2FtcGxlcjFEJzsg
bG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQsIHVfYmlhcykpJzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5Q
Uk9HUkFNXzFEX1NIQURPV19CSUFTOiBzYW1wbGVyID0gJ3NhbXBsZXIxRFNoYWRvdyc7IGxvb2t1
cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2ZWMzKHZfdGV4Q29vcmQsIHVfcmVmKSwgdV9i
aWFzKSwgMC4wLCAwLjAsIDEuMCknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVy
ZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQ1VCRV9GTE9BVDogc2FtcGxlciA9ICdzYW1w
bGVyQ3ViZSc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCknOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dS
QU1fQ1VCRV9JTlQ6IHNhbXBsZXIgPSAnaXNhbXBsZXJDdWJlJzsgbG9va3VwID0gJ3ZlYzQodGV4
dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX1VJTlQ6IHNhbXBsZXIg
PSAndXNhbXBsZXJDdWJlJzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4
Q29vcmQpKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJv
Z3JhbVR5cGUuUFJPR1JBTV9DVUJFX1NIQURPVzogc2FtcGxlciA9ICdzYW1wbGVyQ3ViZVNoYWRv
dyc7IGxvb2t1cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2ZWM0KHZfdGV4Q29vcmQsIHVf
cmVmKSksIDAuMCwgMC4wLCAxLjApJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVRfQklBUzogc2FtcGxlciA9
ICdzYW1wbGVyQ3ViZSc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCwg
dV9iaWFzKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJv
Z3JhbVR5cGUuUFJPR1JBTV9DVUJFX0lOVF9CSUFTOiBzYW1wbGVyID0gJ2lzYW1wbGVyQ3ViZSc7
IGxvb2t1cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2X3RleENvb3JkLCB1X2JpYXMpKSc7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV9DVUJFX1VJTlRfQklBUzogc2FtcGxlciA9ICd1c2FtcGxlckN1YmUnOyBsb29rdXAg
PSAndmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCwgdV9iaWFzKSknOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1f
Q1VCRV9TSEFET1dfQklBUzogc2FtcGxlciA9ICdzYW1wbGVyQ3ViZVNoYWRvdyc7IGxvb2t1cCA9
ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2ZWM0KHZfdGV4Q29vcmQsIHVfcmVmKSwgdV9iaWFz
KSwgMC4wLCAwLjAsIDEuMCknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRl
c3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfQVJSQVlfRkxPQVQ6IHNhbXBsZXIgPSAnc2Ft
cGxlcjJEQXJyYXknOyBsb29rdXAgPSAndGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpJzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5Q
Uk9HUkFNXzJEX0FSUkFZX0lOVDogc2FtcGxlciA9ICdpc2FtcGxlcjJEQXJyYXknOyBsb29rdXAg
PSAndmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCkpJzsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzJEX0FSUkFZ
X1VJTlQ6IHNhbXBsZXIgPSAndXNhbXBsZXIyREFycmF5JzsgbG9va3VwID0gJ3ZlYzQodGV4dHVy
ZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNU
ZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8yRF9BUlJBWV9TSEFET1c6IHNhbXBs
ZXIgPSAnc2FtcGxlcjJEQXJyYXlTaGFkb3cnOyBsb29rdXAgPSAndmVjNCh0ZXh0dXJlKHVfc2Ft
cGxlciwgdmVjNCh2X3RleENvb3JkLCB1X3JlZikpLCAwLjAsIDAuMCwgMS4wKSc7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8z
RF9GTE9BVDogc2FtcGxlciA9ICdzYW1wbGVyM0QnOyBsb29rdXAgPSAndGV4dHVyZSh1X3NhbXBs
ZXIsIHZfdGV4Q29vcmQpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0
VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzNEX0lOVDogc2FtcGxlciA9ICdpc2FtcGxlcjNEJzsg
bG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpKSc7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8z
RF9VSU5UOiBzYW1wbGVyID0gJyB1c2FtcGxlcjNEJzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1
X3NhbXBsZXIsIHZfdGV4Q29vcmQpKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0
dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8zRF9GTE9BVF9CSUFTOiBzYW1wbGVyID0g
J3NhbXBsZXIzRCc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCwgdV9i
aWFzKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3Jh
bVR5cGUuUFJPR1JBTV8zRF9JTlRfQklBUzogc2FtcGxlciA9ICdpc2FtcGxlcjNEJzsgbG9va3Vw
ID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQsIHVfYmlhcykpJzsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFN
XzNEX1VJTlRfQklBUzogc2FtcGxlciA9ICcgdXNhbXBsZXIzRCc7IGxvb2t1cCA9ICd2ZWM0KHRl
eHR1cmUodV9zYW1wbGVyLCB2X3RleENvb3JkLCB1X2JpYXMpKSc7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX0FSUkFZ
X0ZMT0FUOiBzYW1wbGVyID0gJ3NhbXBsZXJDdWJlQXJyYXknOyBsb29rdXAgPSAndGV4dHVyZSh1
X3NhbXBsZXIsIHZfdGV4Q29vcmQpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfQVJSQVlfSU5UOiBzYW1wbGVyID0g
J2lzYW1wbGVyQ3ViZUFycmF5JzsgbG9va3VwID0gJ3ZlYzQodGV4dHVyZSh1X3NhbXBsZXIsIHZf
dGV4Q29vcmQpKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwu
cHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX0FSUkFZX1VJTlQ6IHNhbXBsZXIgPSAndXNhbXBsZXJD
dWJlQXJyYXknOyBsb29rdXAgPSAndmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCkp
JzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlw
ZS5QUk9HUkFNX0NVQkVfQVJSQVlfU0hBRE9XOiBzYW1wbGVyID0gJ3NhbXBsZXJDdWJlQXJyYXlT
aGFkb3cnOyBsb29rdXAgPSAndmVjNCh0ZXh0dXJlKHVfc2FtcGxlciwgdmVjNCh2X3RleENvb3Jk
LCB1X3JlZikpLCAwLjAsIDAuMCwgMS4wKSc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNU
ZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8xRF9BUlJBWV9GTE9BVDogc2FtcGxl
ciA9ICdzYW1wbGVyMURBcnJheSc7IGxvb2t1cCA9ICd0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhD
b29yZCknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dy
YW1UeXBlLlBST0dSQU1fMURfQVJSQVlfSU5UOiBzYW1wbGVyID0gJ2lzYW1wbGVyMURBcnJheSc7
IGxvb2t1cCA9ICd2ZWM0KHRleHR1cmUodV9zYW1wbGVyLCB2X3RleENvb3JkKSknOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1f
MURfQVJSQVlfVUlOVDogc2FtcGxlciA9ICd1c2FtcGxlcjFEQXJyYXknOyBsb29rdXAgPSAndmVj
NCh0ZXh0dXJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCkpJzsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX0FSUkFZX1NIQURP
Vzogc2FtcGxlciA9ICdzYW1wbGVyMURBcnJheVNoYWRvdyc7IGxvb2t1cCA9ICd2ZWM0KHRleHR1
cmUodV9zYW1wbGVyLCB2ZWM0KHZfdGV4Q29vcmQsIHVfcmVmKSksIDAuMCwgMC4wLCAxLjApJzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5Q
Uk9HUkFNX0JVRkZFUl9GTE9BVDogc2FtcGxlciA9ICdzYW1wbGVyQnVmZmVyJzsgbG9va3VwID0g
J3RleGVsRmV0Y2godV9zYW1wbGVyLCBpbnQodl90ZXhDb29yZCkpJzsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0JVRkZFUl9J
TlQ6IHNhbXBsZXIgPSAnaXNhbXBsZXJCdWZmZXInOyBsb29rdXAgPSAndmVjNCh0ZXhlbEZldGNo
KHVfc2FtcGxlciwgaW50KHZfdGV4Q29vcmQpKSknOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Z2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQlVGRkVSX1VJTlQ6IHNhbXBs
ZXIgPSAndXNhbXBsZXJCdWZmZXInOyBsb29rdXAgPSAndmVjNCh0ZXhlbEZldGNoKHVfc2FtcGxl
ciwgaW50KHZfdGV4Q29vcmQpKSknOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
dGhpcy5tX2dsc2xWZXJzaW9uID09PSAnMTAwIGVzJykgeworICAgICAgICBzYW1wbGVyID0gaXND
dWJlID8gJ3NhbXBsZXJDdWJlJyA6ICdzYW1wbGVyMkQnOworCisgICAgICAgIHN3aXRjaCAocHJv
Z3JhbSkgeworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV8yRF9GTE9BVDogbG9va3VwID0gJ3RleHR1cmUyRCh1X3NhbXBsZXIsIHZfdGV4Q29v
cmQpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFt
VHlwZS5QUk9HUkFNXzJEX0ZMT0FUX0JJQVM6IGxvb2t1cCA9ICd0ZXh0dXJlMkQodV9zYW1wbGVy
LCB2X3RleENvb3JkLCB1X2JpYXMpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVQ6IGxvb2t1cCA9ICd0ZXh0
dXJlQ3ViZSh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpJzsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVRfQklBUzog
bG9va3VwID0gJ3RleHR1cmVDdWJlKHVfc2FtcGxlciwgdl90ZXhDb29yZCwgdV9iaWFzKSc7IGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFs
c2UpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIERFX0FTU0VSVCghJ1Vuc3VwcG9y
dGVkIHZlcnNpb24nKTsKKworICAgIHBhcmFtc1snU0FNUExFUl9UWVBFJ10gPSBzYW1wbGVyOwor
ICAgIHBhcmFtc1snTE9PS1VQJ10gPSBsb29rdXA7CisKKyAgICB2YXIgdmVydFNyYyA9IHRjdVN0
cmluZ1RlbXBsYXRlLnNwZWNpYWxpemUodmVydFNoYWRlclRlbXBsYXRlLCBwYXJhbXMpOworICAg
IHZhciBmcmFnU3JjID0gdGN1U3RyaW5nVGVtcGxhdGUuc3BlY2lhbGl6ZShmcmFnU2hhZGVyVGVt
cGxhdGUsIHBhcmFtcyk7CisgICAgdmFyIHByb2dPYmogPSBuZXcgZ2x1U2hhZGVyUHJvZ3JhbS5T
aGFkZXJQcm9ncmFtKGdsLCBnbHVTaGFkZXJQcm9ncmFtLm1ha2VWdHhGcmFnU291cmNlcyh2ZXJ0
U3JjLCBmcmFnU3JjKSk7CisgICAgLy8gaWYgKCFwcm9nT2JqLmlzT2soKSkgeworICAgIC8vICAg
ICAvLyBsb2cgPDwgKnByb2dPYmo7CisgICAgLy8gICAgIHRlc3RGYWlsZWRPcHRpb25zKCJGYWls
ZWQgdG8gY3JlYXRlIHNoYWRlciIsIHRydWUpOworICAgIC8vIH0KKworICAgIC8vIHRyeQorICAg
IC8vIHsKKyAgICAvLyAgICAgbV9wcm9ncmFtc1twcm9ncmFtXSA9IHByb2dPYmo7CisgICAgLy8g
fQorICAgIC8vIGNhdGNoICguLi4pCisgICAgLy8geworICAgIC8vICAgICBkZWxldGUgcHJvZ09i
ajsKKyAgICAvLyAgICAgdGhyb3c7CisgICAgLy8gfQorCisgICAgcmV0dXJuIHByb2dPYmo7Cit9
OworCisvLyBwdWJsaWM6CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5Qcm9ncmFtTGlicmFyeSAoY29uc3QgZ2x1OjpSZW5k
ZXJDb250ZXh0JiBjb250ZXh0LCB0Y3U6OlRlc3RDb250ZXh0JiB0ZXN0Q3R4LCBnbHU6OkdMU0xW
ZXJzaW9uIGdsc2xWZXJzaW9uLCBnbHU6OlByZWNpc2lvbiB0ZXhDb29yZFByZWNpc2lvbik7Cisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5nbHNUZXh0dXJl
VGVzdFV0aWwuUHJvZ3JhbUxpYnJhcnkgKHZvaWQpOworCisvLyAgICAgZ2x1OjpTaGFkZXJQcm9n
cmFtKiAgICAgICAgICAgICAgICAgICAgICAgIGdldFByb2dyYW0gKFByb2dyYW0gcHJvZ3JhbSk7
CisvLyAgICAgdm9pZCBjbGVhciAodm9pZCk7CisKKy8vIHByaXZhdGU6CisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5Qcm9n
cmFtTGlicmFyeSAoY29uc3QgZ2xzVGV4dHVyZVRlc3RVdGlsLlByb2dyYW1MaWJyYXJ5JiBvdGhl
cik7CisvLyAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLlByb2dyYW1MaWJyYXJ5JiBvcGVyYXRvcj0g
KGNvbnN0IGdsc1RleHR1cmVUZXN0VXRpbC5Qcm9ncmFtTGlicmFyeSYgb3RoZXIpOworCisvLyAg
ICAgY29uc3QgZ2x1OjpSZW5kZXJDb250ZXh0JiBtX2NvbnRleHQ7CisvLyAgICAgdGN1OjpUZXN0
Q29udGV4dCYgbV90ZXN0Q3R4OworLy8gICAgIGdsdTo6R0xTTFZlcnNpb24gbV9nbHNsVmVyc2lv
bjsKKy8vICAgICBnbHU6OlByZWNpc2lvbiBtX3RleENvb3JkUHJlY2lzaW9uOworLy8gICAgIHN0
ZDo6bWFwPFByb2dyYW0sIGdsdTo6U2hhZGVyUHJvZ3JhbSo+IG1fcHJvZ3JhbXM7CisvLyB9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gR0wgdmVy
c2lvbgorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLnByZWNpc2lvbn0gcHJlY2lzaW9uCisgKi8K
K2dsc1RleHR1cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIgPSBmdW5jdGlvbih2ZXJzaW9uLCBw
cmVjaXNpb24pIHsKKyAgICB0aGlzLm1fcHJvZ3JhbUxpYnJhcnkgPSBuZXcgZ2xzVGV4dHVyZVRl
c3RVdGlsLlByb2dyYW1MaWJyYXJ5KHZlcnNpb24sIHByZWNpc2lvbik7Cit9OworCisvKioKKyAq
IEBwYXJhbSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9IGZvcm1hdAorICogQHJldHVybiB7
QXJyYXk8Ym9vbGVhbj59CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5nZXRDb21wYXJlTWFzayA9
IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIHJldHVybiBbCisgICAgICAgIGZvcm1hdC5yZWRCaXRz
ID4gMCwKKyAgICAgICAgZm9ybWF0LmdyZWVuQml0cyA+IDAsCisgICAgICAgIGZvcm1hdC5ibHVl
Qml0cyA+IDAsCisgICAgICAgIGZvcm1hdC5hbHBoYUJpdHMgPiAwCisgICAgXTsKK307CisKKy8q
KgorICogQHBhcmFtIHt0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdH0gZm9ybWF0CisgKiBAcmV0
dXJuIHtBcnJheTxudW1iZXI+fQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwuZ2V0Qml0c1ZlYyA9
IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIHJldHVybiBbCisgICAgICAgIGZvcm1hdC5yZWRCaXRz
LAorICAgICAgICBmb3JtYXQuZ3JlZW5CaXRzLAorICAgICAgICBmb3JtYXQuYmx1ZUJpdHMsCisg
ICAgICAgIGZvcm1hdC5hbHBoYUJpdHMKKyAgICBdOworfTsKKworLyoqCisgKiBAcGFyYW0ge251
bWJlcn0gdGV4VW5pdAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAorICogQHBh
cmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVuZGVyUGFyYW1zfSBwYXJhbXMKKyAqLworZ2xzVGV4
dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlci5wcm90b3R5cGUucmVuZGVyUXVhZCA9IGZ1bmN0
aW9uKHRleFVuaXQsIHRleENvb3JkLCBwYXJhbXMpIHsKKyAgICB2YXIgd0Nvb3JkID0gcGFyYW1z
LmZsYWdzLnByb2plY3RlZCA/IHBhcmFtcy53IDogWzEsIDEsIDEsIDFdOworICAgIHZhciB1c2VC
aWFzID0gcGFyYW1zLmZsYWdzLnVzZV9iaWFzOworICAgIHZhciBsb2dVbmlmb3JtcyA9IHBhcmFt
cy5mbGFncy5sb2dfdW5pZm9ybXM7CisKKyAgICAvLyBSZW5kZXIgcXVhZCB3aXRoIHRleHR1cmUu
CisgICAgdmFyIHBvc2l0aW9uID0gWworICAgICAgICAtMSAqIHdDb29yZFswXSwgLTEgKiB3Q29v
cmRbMF0sIDAsIHdDb29yZFswXSwKKyAgICAgICAgLTEgKiB3Q29vcmRbMV0sICsxICogd0Nvb3Jk
WzFdLCAwLCB3Q29vcmRbMV0sCisgICAgICAgICsxICogd0Nvb3JkWzJdLCAtMSAqIHdDb29yZFsy
XSwgMCwgd0Nvb3JkWzJdLAorICAgICAgICArMSAqIHdDb29yZFszXSwgKzEgKiB3Q29vcmRbM10s
IDAsIHdDb29yZFszXQorICAgIF07CisgICAgLyoqIEBjb25zdCAqLyB2YXIgaW5kaWNlcyA9IFsw
LCAxLCAyLCAyLCAxLCAzXTsKKworICAgIC8qKiBAdHlwZSB7P2dsc1RleHR1cmVUZXN0VXRpbC5w
cm9ncmFtVHlwZX0gKi8gdmFyIHByb2dTcGVjID0gbnVsbDsKKyAgICB2YXIgbnVtQ29tcHMgPSAw
OworICAgIGlmIChwYXJhbXMudGV4VHlwZSA9PSBnbHNUZXh0dXJlVGVzdFV0aWwudGV4dHVyZVR5
cGUuVEVYVFVSRVRZUEVfMkQpIHsKKyAgICAgICAgbnVtQ29tcHMgPSAyOworCisgICAgICAgIHN3
aXRjaCAocGFyYW1zLnNhbXBsZXJUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVU
ZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GTE9BVDogcHJvZ1NwZWMgPSB1c2VCaWFz
ID8gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfRkxPQVRfQklBUyA6
IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzJEX0ZMT0FUOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJU
WVBFX0lOVDogcHJvZ1NwZWMgPSB1c2VCaWFzID8gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1U
eXBlLlBST0dSQU1fMkRfSU5UX0JJQVMgOiBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV8yRF9JTlQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0
aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfVUlOVDogcHJvZ1NwZWMgPSB1c2VCaWFzID8gZ2xz
VGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfVUlOVF9CSUFTIDogZ2xzVGV4
dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfVUlOVDsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9TSEFE
T1c6IHByb2dTcGVjID0gdXNlQmlhcyA/IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5Q
Uk9HUkFNXzJEX1NIQURPV19CSUFTIDogZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBS
T0dSQU1fMkRfU0hBRE9XOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBF
cnJvcignVW5yZWNvZ25pemVkIHNhbXBsZXIgdHlwZTonICsgcGFyYW1zLnNhbXBsZXJUeXBlKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocGFyYW1zLnRleFR5cGUgPT0gZ2xzVGV4dHVyZVRl
c3RVdGlsLnRleHR1cmVUeXBlLlRFWFRVUkVUWVBFXzFEKSB7CisgICAgICAgIG51bUNvbXBzID0g
MTsKKworICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zYW1wbGVyVHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfRkxPQVQ6IHBy
b2dTcGVjID0gdXNlQmlhcyA/IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFN
XzFEX0ZMT0FUX0JJQVMgOiBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8x
RF9GTE9BVDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1w
bGVyVHlwZS5TQU1QTEVSVFlQRV9JTlQ6IHByb2dTcGVjID0gdXNlQmlhcyA/IGdsc1RleHR1cmVU
ZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX0lOVF9CSUFTIDogZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMURfSU5UOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Z2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX1VJTlQ6IHByb2dTcGVj
ID0gdXNlQmlhcyA/IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX1VJ
TlRfQklBUyA6IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX1VJTlQ7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUu
U0FNUExFUlRZUEVfU0hBRE9XOiBwcm9nU3BlYyA9IHVzZUJpYXMgPyBnbHNUZXh0dXJlVGVzdFV0
aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8xRF9TSEFET1dfQklBUyA6IGdsc1RleHR1cmVUZXN0VXRp
bC5wcm9ncmFtVHlwZS5QUk9HUkFNXzFEX1NIQURPVzsgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBzYW1wbGVyIHR5cGU6JyArIHBhcmFt
cy5zYW1wbGVyVHlwZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHBhcmFtcy50ZXhUeXBl
ID09IGdsc1RleHR1cmVUZXN0VXRpbC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV9DVUJFKSB7Cisg
ICAgICAgIG51bUNvbXBzID0gMzsKKworICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zYW1wbGVyVHlw
ZSkgeworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FN
UExFUlRZUEVfRkxPQVQ6IHByb2dTcGVjID0gdXNlQmlhcyA/IGdsc1RleHR1cmVUZXN0VXRpbC5w
cm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVRfQklBUyA6IGdsc1RleHR1cmVUZXN0VXRpbC5w
cm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfRkxPQVQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfSU5UOiBwcm9nU3BlYyA9
IHVzZUJpYXMgPyBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX0lO
VF9CSUFTIDogZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQ1VCRV9JTlQ7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUu
U0FNUExFUlRZUEVfVUlOVDogcHJvZ1NwZWMgPSB1c2VCaWFzID8gZ2xzVGV4dHVyZVRlc3RVdGls
LnByb2dyYW1UeXBlLlBST0dSQU1fQ1VCRV9VSU5UX0JJQVMgOiBnbHNUZXh0dXJlVGVzdFV0aWwu
cHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJFX1VJTlQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfU0hBRE9XOiBwcm9nU3Bl
YyA9IHVzZUJpYXMgPyBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV9DVUJF
X1NIQURPV19CSUFTIDogZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQ1VC
RV9TSEFET1c7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdV
bnJlY29nbml6ZWQgc2FtcGxlciB0eXBlOicgKyBwYXJhbXMuc2FtcGxlclR5cGUpOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChwYXJhbXMudGV4VHlwZSA9PSBnbHNUZXh0dXJlVGVzdFV0aWwu
dGV4dHVyZVR5cGUuVEVYVFVSRVRZUEVfM0QpIHsKKyAgICAgICAgbnVtQ29tcHMgPSAzOworCisg
ICAgICAgIHN3aXRjaCAocGFyYW1zLnNhbXBsZXJUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGds
c1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GTE9BVDogcHJvZ1NwZWMg
PSB1c2VCaWFzID8gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fM0RfRkxP
QVRfQklBUyA6IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNXzNEX0ZMT0FU
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBl
LlNBTVBMRVJUWVBFX0lOVDogcHJvZ1NwZWMgPSB1c2VCaWFzID8gZ2xzVGV4dHVyZVRlc3RVdGls
LnByb2dyYW1UeXBlLlBST0dSQU1fM0RfSU5UX0JJQVMgOiBnbHNUZXh0dXJlVGVzdFV0aWwucHJv
Z3JhbVR5cGUuUFJPR1JBTV8zRF9JTlQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0
dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUuU0FNUExFUlRZUEVfVUlOVDogcHJvZ1NwZWMgPSB1c2VC
aWFzID8gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fM0RfVUlOVF9CSUFT
IDogZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fM0RfVUlOVDsgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBzYW1w
bGVyIHR5cGU6JyArIHBhcmFtcy5zYW1wbGVyVHlwZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHBhcmFtcy50ZXhUeXBlID09IGdsc1RleHR1cmVUZXN0VXRpbC50ZXh0dXJlVHlwZS5URVhU
VVJFVFlQRV8yRF9BUlJBWSkgeworICAgICAgICBERV9BU1NFUlQoIXVzZUJpYXMpOyAvLyBcdG9k
byBbMjAxMi0wMi0xNyBweXJ5XSBTdXBwb3J0IGJpYXMuCisKKyAgICAgICAgbnVtQ29tcHMgPSAz
OworCisgICAgICAgIHN3aXRjaCAocGFyYW1zLnNhbXBsZXJUeXBlKSB7CisgICAgICAgICAgICBj
YXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GTE9BVDogcHJv
Z1NwZWMgPSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8yRF9BUlJBWV9G
TE9BVDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVy
VHlwZS5TQU1QTEVSVFlQRV9JTlQ6IHByb2dTcGVjID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dy
YW1UeXBlLlBST0dSQU1fMkRfQVJSQVlfSU5UOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX1VJTlQ6IHByb2dTcGVjID0g
Z2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMkRfQVJSQVlfVUlOVDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1Q
TEVSVFlQRV9TSEFET1c6IHByb2dTcGVjID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBl
LlBST0dSQU1fMkRfQVJSQVlfU0hBRE9XOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRo
cm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHNhbXBsZXIgdHlwZTonICsgcGFyYW1zLnNhbXBs
ZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocGFyYW1zLnRleFR5cGUgPT0gZ2xz
VGV4dHVyZVRlc3RVdGlsLnRleHR1cmVUeXBlLlRFWFRVUkVUWVBFX0NVQkVfQVJSQVkpIHsKKyAg
ICAgICAgREVfQVNTRVJUKCF1c2VCaWFzKTsKKworICAgICAgICBudW1Db21wcyA9IDQ7CisKKyAg
ICAgICAgc3dpdGNoIChwYXJhbXMuc2FtcGxlclR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX0ZMT0FUOiBwcm9nU3BlYyA9
IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0NVQkVfQVJSQVlfRkxPQVQ7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlclR5cGUu
U0FNUExFUlRZUEVfSU5UOiBwcm9nU3BlYyA9IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlw
ZS5QUk9HUkFNX0NVQkVfQVJSQVlfSU5UOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4
dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX1VJTlQ6IHByb2dTcGVjID0gZ2xz
VGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fQ1VCRV9BUlJBWV9VSU5UOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBM
RVJUWVBFX1NIQURPVzogcHJvZ1NwZWMgPSBnbHNUZXh0dXJlVGVzdFV0aWwucHJvZ3JhbVR5cGUu
UFJPR1JBTV9DVUJFX0FSUkFZX1NIQURPVzsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiB0
aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBzYW1wbGVyIHR5cGU6JyArIHBhcmFtcy5zYW1w
bGVyVHlwZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHBhcmFtcy50ZXhUeXBlID09IGds
c1RleHR1cmVUZXN0VXRpbC50ZXh0dXJlVHlwZS5URVhUVVJFVFlQRV8xRF9BUlJBWSkgeworICAg
ICAgICBERV9BU1NFUlQoIXVzZUJpYXMpOyAvLyBcdG9kbyBbMjAxMi0wMi0xNyBweXJ5XSBTdXBw
b3J0IGJpYXMuCisKKyAgICAgICAgbnVtQ29tcHMgPSAyOworCisgICAgICAgIHN3aXRjaCAocGFy
YW1zLnNhbXBsZXJUeXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5z
YW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GTE9BVDogcHJvZ1NwZWMgPSBnbHNUZXh0dXJlVGVzdFV0
aWwucHJvZ3JhbVR5cGUuUFJPR1JBTV8xRF9BUlJBWV9GTE9BVDsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9JTlQ6IHBy
b2dTcGVjID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMURfQVJSQVlf
SU5UOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJU
eXBlLlNBTVBMRVJUWVBFX1VJTlQ6IHByb2dTcGVjID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dy
YW1UeXBlLlBST0dSQU1fMURfQVJSQVlfVUlOVDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
c1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9TSEFET1c6IHByb2dTcGVj
ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dyYW1UeXBlLlBST0dSQU1fMURfQVJSQVlfU0hBRE9X
OyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25p
emVkIHNhbXBsZXIgdHlwZTonICsgcGFyYW1zLnNhbXBsZXJUeXBlKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAocGFyYW1zLnRleFR5cGUgPT0gZ2xzVGV4dHVyZVRlc3RVdGlsLnRleHR1cmVU
eXBlLlRFWFRVUkVUWVBFX0JVRkZFUikgeworICAgICAgICBudW1Db21wcyA9IDE7CisKKyAgICAg
ICAgc3dpdGNoIChwYXJhbXMuc2FtcGxlclR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzVGV4
dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX0ZFVENIX0ZMT0FUOiBwcm9nU3Bl
YyA9IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0JVRkZFUl9GTE9BVDsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5T
QU1QTEVSVFlQRV9GRVRDSF9JTlQ6IHByb2dTcGVjID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2dy
YW1UeXBlLlBST0dSQU1fQlVGRkVSX0lOVDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1Rl
eHR1cmVUZXN0VXRpbC5zYW1wbGVyVHlwZS5TQU1QTEVSVFlQRV9GRVRDSF9VSU5UOiBwcm9nU3Bl
YyA9IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9ncmFtVHlwZS5QUk9HUkFNX0JVRkZFUl9VSU5UOyBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVk
IHNhbXBsZXIgdHlwZTonICsgcGFyYW1zLnNhbXBsZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZQorICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHRleHR1cmUgdHlwZTon
ICsgcGFyYW1zLnRleFR5cGUpOworCisgICAgaWYgKHByb2dTcGVjID09PSBudWxsKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHByb2dyYW0gc3BlY2lmaWNhdGlvbicp
OworCisgICAgdmFyIHByb2dyYW0gPSB0aGlzLm1fcHJvZ3JhbUxpYnJhcnkuZ2V0UHJvZ3JhbShw
cm9nU3BlYyk7CisKKyAgICAvLyBcdG9kbyBbMjAxMi0wOS0yNiBweXJ5XSBNb3ZlIHRvIGdsc1Rl
eHR1cmVUZXN0VXRpbC5Qcm9ncmFtTGlicmFyeSBhbmQgbG9nIHVuaXF1ZSBwcm9ncmFtcyBvbmx5
KD8pCisgICAgLyogVE9ETzogUG9ydCBsb2dnaW5nCisgICAgaWYgKHBhcmFtcy5mbGFncy5sb2df
cHJvZ3JhbXMpCisgICAgICAgIGxvZyA8PCAqcHJvZ3JhbTsKKyAgICAqLworCisgICAgLy8gUHJv
Z3JhbSBhbmQgdW5pZm9ybXMuCisgICAgdmFyIHByb2cgPSBwcm9ncmFtLmdldFByb2dyYW0oKTsK
KyAgICBnbC51c2VQcm9ncmFtKHByb2cpOworCisgICAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9nLCAndV9zYW1wbGVyJyk7CisgICAgZ2wudW5pZm9ybTFpKGxvYywgdGV4VW5p
dCk7CisgICAgLy8gaWYgKGxvZ1VuaWZvcm1zKQorICAgIC8vICAgICBsb2cgPDwgVGVzdExvZzo6
TWVzc2FnZSA8PCAidV9zYW1wbGVyID0gIiA8PCB0ZXhVbml0IDw8IFRlc3RMb2c6OkVuZE1lc3Nh
Z2U7CisKKyAgICBpZiAodXNlQmlhcykgeworICAgICAgICBnbC51bmlmb3JtMWYoZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2csICd1X2JpYXMnKSwgcGFyYW1zLmJpYXMpOworICAgICAgICAvLyBp
ZiAobG9nVW5pZm9ybXMpCisgICAgICAgIC8vICAgICBsb2cgPDwgVGVzdExvZzo6TWVzc2FnZSA8
PCAidV9iaWFzID0gIiA8PCBwYXJhbXMuYmlhcyA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworICAg
IH0KKworICAgIGlmIChwYXJhbXMuc2FtcGxlclR5cGUgPT0gZ2xzVGV4dHVyZVRlc3RVdGlsLnNh
bXBsZXJUeXBlLlNBTVBMRVJUWVBFX1NIQURPVykgeworICAgICAgICBnbC51bmlmb3JtMWYoZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2csICd1X3JlZicpLCBwYXJhbXMucmVmKTsKKyAgICAgICAg
Ly8gaWYgKGxvZ1VuaWZvcm1zKQorICAgICAgICAvLyAgICAgbG9nIDw8IFRlc3RMb2c6Ok1lc3Nh
Z2UgPDwgInVfcmVmID0gIiA8PCBwYXJhbXMucmVmIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7Cisg
ICAgfQorCisgICAgZ2wudW5pZm9ybTRmdihnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZywgJ3Vf
Y29sb3JTY2FsZScpLCBwYXJhbXMuY29sb3JTY2FsZSk7CisgICAgZ2wudW5pZm9ybTRmdihnbC5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZywgJ3VfY29sb3JCaWFzJyksIHBhcmFtcy5jb2xvckJpYXMp
OworCisgICAgLy8gaWYgKGxvZ1VuaWZvcm1zKQorICAgIC8vIHsKKyAgICAvLyAgICAgbG9nIDw8
IFRlc3RMb2c6Ok1lc3NhZ2UgPDwgInVfY29sb3JTY2FsZSA9ICIgPDwgcGFyYW1zLmNvbG9yU2Nh
bGUgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKKyAgICAvLyAgICAgbG9nIDw8IFRlc3RMb2c6Ok1l
c3NhZ2UgPDwgInVfY29sb3JCaWFzID0gIiA8PCBwYXJhbXMuY29sb3JCaWFzIDw8IFRlc3RMb2c6
OkVuZE1lc3NhZ2U7CisgICAgLy8gfQorICAgIHZhciB2ZXJ0ZXhBcnJheXMgPSBbXTsKKworICAg
IHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9nLCAnYV9wb3NpdGlvbicpOwor
ICAgIGlmIChwb3NMb2MgPT09IC0xKSB7CisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCJubyBs
b2NhdGlvbiBmb3VuZCBmb3IgYXR0cmlidXRlICdhX3Bvc2l0aW9uJyIsIHRydWUpOworICAgIH0K
KyAgICB2YXIgdGV4TG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZywgJ2FfdGV4Q29vcmQn
KTsKKyAgICBpZiAodGV4TG9jID09PSAtMSkgeworICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygi
bm8gbG9jYXRpb24gZm91bmQgZm9yIGF0dHJpYnV0ZSAnYV90ZXhDb29yZCciLCB0cnVlKTsKKyAg
ICB9CisKKyAgICB2ZXJ0ZXhBcnJheXMucHVzaChuZXcgZ2x1RHJhd1V0aWwuVmVydGV4QXJyYXlC
aW5kaW5nKGdsLkZMT0FULCBwb3NMb2MsIDQsIDQsIHBvc2l0aW9uKSk7CisgICAgdmVydGV4QXJy
YXlzLnB1c2gobmV3IGdsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZyhnbC5GTE9BVCwgdGV4
TG9jLCBudW1Db21wcywgNCwgdGV4Q29vcmQpKTsKKyAgICBnbHVEcmF3VXRpbC5kcmF3KGdsLCBw
cm9nLCB2ZXJ0ZXhBcnJheXMsIGdsdURyYXdVdGlsLnRyaWFuZ2xlcyhpbmRpY2VzKSk7Cit9Owor
CisvLyBwdWJsaWM6CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1
cmVUZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXIgKGNvbnN0IGdsdTo6UmVuZGVyQ29udGV4dCYgY29u
dGV4dCwgdGN1OjpUZXN0Q29udGV4dCYgdGVzdEN0eCwgZ2x1OjpHTFNMVmVyc2lvbiBnbHNsVmVy
c2lvbiwgZ2x1OjpQcmVjaXNpb24gdGV4Q29vcmRQcmVjaXNpb24pOworLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB+Z2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlciAo
dm9pZCk7CisKKy8vICAgICB2b2lkIGNsZWFyICh2b2lkKTsgLy8hPCBGcmVlcyBhbGxvY2F0ZWQg
cmVzb3VyY2VzLiBEZXN0cnVjdG9yIHdpbGwgY2FsbCBjbGVhcigpIGFzIHdlbGwuCisKKy8vICAg
ICB2b2lkIHJlbmRlclF1YWQgKGludCB0ZXhVbml0LCBjb25zdCBmbG9hdCogdGV4Q29vcmQsIFRl
eHR1cmVUeXBlIHRleFR5cGUpOworLy8gICAgIHZvaWQgcmVuZGVyUXVhZCAoaW50IHRleFVuaXQs
IGNvbnN0IGZsb2F0KiB0ZXhDb29yZCwgY29uc3QgZ2xzVGV4dHVyZVRlc3RVdGlsLlJlbmRlclBh
cmFtcyYgcGFyYW1zKTsKKworLy8gcHJpdmF0ZToKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlciAoY29uc3QgZ2xzVGV4
dHVyZVRlc3RVdGlsLlRleHR1cmVSZW5kZXJlciYgb3RoZXIpOworLy8gICAgIGdsc1RleHR1cmVU
ZXN0VXRpbC5UZXh0dXJlUmVuZGVyZXImIG9wZXJhdG9yPSAoY29uc3QgZ2xzVGV4dHVyZVRlc3RV
dGlsLlRleHR1cmVSZW5kZXJlciYgb3RoZXIpOworCisvLyAgICAgY29uc3QgZ2x1OjpSZW5kZXJD
b250ZXh0JiBtX3JlbmRlckN0eDsKKy8vICAgICB0Y3U6OlRlc3RDb250ZXh0JiBtX3Rlc3RDdHg7
CisvLyAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLlByb2dyYW1MaWJyYXJ5IG1fcHJvZ3JhbUxpYnJh
cnk7CisvLyB9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHt0Y3VTdXJmYWNl
LlN1cmZhY2V9IHN1cmZhY2UKKyAqIEBwYXJhbSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXQ9
fSBjb2xvckZtdAorICogQHBhcmFtIHtudW1iZXI9fSB4CisgKiBAcGFyYW0ge251bWJlcj19IHkK
KyAqIEBwYXJhbSB7bnVtYmVyPX0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyPX0gaGVpZ2h0Cisg
Ki8KK2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzID0gZnVuY3Rpb24oc3VyZmFjZSwg
Y29sb3JGbXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHsKKyAgICB0aGlzLm1fc3VyZmFjZSA9IHN1
cmZhY2U7CisgICAgdGhpcy5jb2xvck1hc2sgPSB1bmRlZmluZWQ7IC8qVE9ETyovCisgICAgdGhp
cy5tX3ggPSB4IHx8IDA7CisgICAgdGhpcy5tX3kgPSB5IHx8IDA7CisgICAgdGhpcy5tX3dpZHRo
ID0gd2lkdGggfHwgc3VyZmFjZS5nZXRXaWR0aCgpOworICAgIHRoaXMubV9oZWlnaHQgPSBoZWln
aHQgfHwgc3VyZmFjZS5nZXRIZWlnaHQoKTsKK307CisKKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICov
CitnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2Vzcy5wcm90b3R5cGUuZ2V0V2lkdGggPSBm
dW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV93aWR0aDsgfTsKKy8qKiBAcmV0dXJuIHtudW1iZXJ9
ICovCitnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2Vzcy5wcm90b3R5cGUuZ2V0SGVpZ2h0
ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1faGVpZ2h0OyB9OworCisvKioKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gY29sb3IKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0g
e251bWJlcn0geQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2Vzcy5wcm90b3R5
cGUuc2V0UGl4ZWwgPSBmdW5jdGlvbihjb2xvciwgeCwgeSkgeworICAgIC8qIFRPRE86IEFwcGx5
IGNvbG9yIG1hc2sgKi8KKyAgICB2YXIgYyA9IGNvbG9yOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYy5sZW5ndGg7IGkrKykKKyAgICAgICAgY1tpXSA9IGRlTWF0aC5jbGFtcChNYXRoLnJvdW5k
KGNvbG9yW2ldICogMjU1KSwgMCwgMjU1KTsKKyAgICB0aGlzLm1fc3VyZmFjZS5zZXRQaXhlbCh4
LCB5LCBjKTsKK307CisKKy8qKgorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwubG9kTW9k
ZX0gbW9kZQorICogQHBhcmFtIHtudW1iZXJ9IGR1ZHgKKyAqIEBwYXJhbSB7bnVtYmVyfSBkdmR4
CisgKiBAcGFyYW0ge251bWJlcn0gZHdkeAorICogQHBhcmFtIHtudW1iZXJ9IGR1ZHkKKyAqIEBw
YXJhbSB7bnVtYmVyfSBkdmR5CisgKiBAcGFyYW0ge251bWJlcn0gZHdkeQorICogQHJldHVybiB7
bnVtYmVyfQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMz
RCA9IGZ1bmN0aW9uKG1vZGUsIGR1ZHgsIGR2ZHgsIGR3ZHgsIGR1ZHksIGR2ZHksIGR3ZHkpIHsK
KyAgICB2YXIgcCA9IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgZ2xzVGV4
dHVyZVRlc3RVdGlsLmxvZE1vZGUuRVhBQ1Q6CisgICAgICAgICAgICBwID0gTWF0aC5tYXgoTWF0
aC5zcXJ0KGR1ZHggKiBkdWR4ICsgZHZkeCAqIGR2ZHggKyBkd2R4ICogZHdkeCksIE1hdGguc3Fy
dChkdWR5ICogZHVkeSArIGR2ZHkgKiBkdmR5ICsgZHdkeSAqIGR3ZHkpKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGUuTUlOX0JP
VU5EOgorICAgICAgICBjYXNlIGdsc1RleHR1cmVUZXN0VXRpbC5sb2RNb2RlLk1BWF9CT1VORDog
eworICAgICAgICAgICAgdmFyIG11ID0gTWF0aC5tYXgoTWF0aC5hYnMoZHVkeCksIE1hdGguYWJz
KGR1ZHkpKTsKKyAgICAgICAgICAgIHZhciBtdiA9IE1hdGgubWF4KE1hdGguYWJzKGR2ZHgpLCBN
YXRoLmFicyhkdmR5KSk7CisgICAgICAgICAgICB2YXIgbXcgPSBNYXRoLm1heChNYXRoLmFicyhk
d2R4KSwgTWF0aC5hYnMoZHdkeSkpOworCisgICAgICAgICAgICBwID0gKG1vZGUgPT0gZ2xzVGV4
dHVyZVRlc3RVdGlsLmxvZE1vZGUuTUlOX0JPVU5EKSA/IE1hdGgubWF4KG11LCBtdiwgbXcpIDog
bXUgKyBtdiArIG13OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBO
YXRpdmUgZEVRUCB1c2VzIDMyLWJpdCBudW1iZXJzLiBTbyBoZXJlIDY0LWJpdCBmbG9hdGluZyBu
dW1iZXJzIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCBpbnRvIDMyLWJpdCBvbmVzIHRvIGVuc3VyZSB0
aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdC4KKyAgICByZXR1cm4gZGVNYXRoLnRvRmxvYXQz
MihNYXRoLmxvZyhwKSkgKiBkZU1hdGguSU5WX0xPR18yX0ZMT0FUMzI7Cit9OworCisvKioKKyAq
IEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGV9IG1vZGUKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gZHN0U2l6ZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzcmNTaXplCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHNxCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRx
CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj49fSBycQorICogQHJldHVybiB7bnVtYmVyfQorICov
CitnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZU5vblByb2plY3RlZFRyaUxvZCA9IGZ1bmN0aW9u
KG1vZGUsIGRzdFNpemUsIHNyY1NpemUsIHNxLCB0cSwgcnEpIHsKKyAgICB2YXIgZHV4ID0gKHNx
WzJdIC0gc3FbMF0pICogc3JjU2l6ZVswXTsKKyAgICB2YXIgZHV5ID0gKHNxWzFdIC0gc3FbMF0p
ICogc3JjU2l6ZVswXTsKKyAgICB2YXIgZHZ4ID0gKHRxWzJdIC0gdHFbMF0pICogc3JjU2l6ZVsx
XTsKKyAgICB2YXIgZHZ5ID0gKHRxWzFdIC0gdHFbMF0pICogc3JjU2l6ZVsxXTsKKyAgICB2YXIg
ZHd4ID0gMDsKKyAgICB2YXIgZHd5ID0gMDsKKyAgICBpZiAocnEpIHsKKyAgICAgICAgZHd4ID0g
KHJxWzJdIC0gcnFbMF0pICogc3JjU2l6ZVsyXTsKKyAgICAgICAgZHd5ID0gKHJxWzFdIC0gcnFb
MF0pICogc3JjU2l6ZVsyXTsKKyAgICB9CisgICAgdmFyIGR4ID0gZHN0U2l6ZVswXTsKKyAgICB2
YXIgZHkgPSBkc3RTaXplWzFdOworCisgICAgcmV0dXJuIGdsc1RleHR1cmVUZXN0VXRpbC5jb21w
dXRlTG9kRnJvbURlcml2YXRlczNEKG1vZGUsIGR1eCAvIGR4LCBkdnggLyBkeCwgZHd4IC8gZHgs
IGR1eSAvIGR5LCBkdnkgLyBkeSwgZHd5IC8gZHkpOworfTsKKworLyoqCisgKiBAcGFyYW0ge0Fy
cmF5PG51bWJlcj59IHYKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0g
eQorICogQHJldHVybiB7bnVtYmVyfQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwudHJpYW5nbGVJ
bnRlcnBvbGF0ZSA9IGZ1bmN0aW9uKHYsIHgsIHkpIHsKKyAgICByZXR1cm4gdlswXSArICh2WzJd
IC0gdlswXSkgKiB4ICsgKHZbMV0gLSB2WzBdKSAqIHk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7
QXJyYXk8bnVtYmVyPn0gcworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB3CisgKiBAcGFyYW0g
e251bWJlcn0gd3gKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9
IG55CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJp
dmF0ZVggPSBmdW5jdGlvbihzLCB3LCB3eCwgd2lkdGgsIG55KSB7CisgICAgdmFyIGQgPSB3WzFd
ICogd1syXSAqICh3aWR0aCAqIChueSAtIDEpICsgd3gpIC0gd1swXSAqICh3WzJdICogd2lkdGgg
KiBueSArIHdbMV0gKiB3eCk7CisgICAgcmV0dXJuICh3WzBdICogd1sxXSAqIHdbMl0gKiB3aWR0
aCAqICh3WzFdICogKHNbMF0gLSBzWzJdKSAqIChueSAtIDEpICsgbnkgKiAod1syXSAqIChzWzFd
IC0gc1swXSkgKyB3WzBdICogKHNbMl0gLSBzWzFdKSkpKSAvIChkICogZCk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB3
CisgKiBAcGFyYW0ge251bWJlcn0gd3kKKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAqIEBw
YXJhbSB7bnVtYmVyfSBueAorICogQHJldHVybiB7bnVtYmVyfQorICovCitnbHNUZXh0dXJlVGVz
dFV0aWwudHJpRGVyaXZhdGVZID0gZnVuY3Rpb24ocywgdywgd3ksIGhlaWdodCwgbngpIHsKKyAg
ICB2YXIgZCA9IHdbMV0gKiB3WzJdICogKGhlaWdodCAqIChueCAtIDEpICsgd3kpIC0gd1swXSAq
ICh3WzFdICogaGVpZ2h0ICogbnggKyB3WzJdICogd3kpOworICAgIHJldHVybiAod1swXSAqIHdb
MV0gKiB3WzJdICogaGVpZ2h0ICogKHdbMl0gKiAoc1swXSAtIHNbMV0pICogKG54IC0gMSkgKyBu
eCAqICh3WzBdICogKHNbMV0gLSBzWzJdKSArIHdbMV0gKiAoc1syXSAtIHNbMF0pKSkpIC8gKGQg
KiBkKTsKK307CisKKy8qKgorICogQHBhcmFtIHsodGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3fHRj
dVRleHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fHRjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3KX0g
c3JjCisgKiBAcGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXN9IHBhcmFt
cworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZCBUZXh0dXJlIGNvb3JkaW5hdGVz
CisgKiBAcGFyYW0ge251bWJlcn0gbG9kCisgKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fSBzYW1w
bGUKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmV4ZWNTYW1wbGUgPSBmdW5jdGlvbihzcmMsIHBh
cmFtcywgdGV4Q29vcmQsIGxvZCkgeworICAgIGlmIChwYXJhbXMuc2FtcGxlclR5cGUgPT0gZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZXJUeXBlLlNBTVBMRVJUWVBFX1NIQURPVykKKyAgICAgICAg
cmV0dXJuIFtzcmMuc2FtcGxlQ29tcGFyZShwYXJhbXMuc2FtcGxlciwgcGFyYW1zLnJlZiwgdGV4
Q29vcmQsIGxvZCksIDAsIDAsIDFdOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHNyYy5zYW1w
bGUocGFyYW1zLnNhbXBsZXIsIHRleENvb3JkLCBsb2QpOworfTsKKworLyoqCisgKiBAcGFyYW0g
e0FycmF5PG51bWJlcj59IHBpeGVsCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHNjYWxlCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGJpYXMKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmFw
cGx5U2NhbGVBbmRCaWFzID0gZnVuY3Rpb24ocGl4ZWwsIHNjYWxlLCBiaWFzKSB7CisgICAgcGl4
ZWxbMF0gPSBwaXhlbFswXSAqIHNjYWxlWzBdICsgYmlhc1swXTsKKyAgICBwaXhlbFsxXSA9IHBp
eGVsWzFdICogc2NhbGVbMV0gKyBiaWFzWzFdOworICAgIHBpeGVsWzJdID0gcGl4ZWxbMl0gKiBz
Y2FsZVsyXSArIGJpYXNbMl07CisgICAgcGl4ZWxbM10gPSBwaXhlbFszXSAqIHNjYWxlWzNdICsg
Ymlhc1szXTsKK307CisKKy8qKgorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwaXhlbAorICog
QHBhcmFtIHtBcnJheTxudW1iZXI+fSBzY2FsZQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBi
aWFzCisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5kZWFwcGx5U2NhbGVBbmRCaWFzID0gZnVuY3Rp
b24ocGl4ZWwsIHNjYWxlLCBiaWFzKSB7CisgICAgcGl4ZWxbMF0gPSAocGl4ZWxbMF0gLSBiaWFz
WzBdKSAvIHNjYWxlWzBdOworICAgIHBpeGVsWzFdID0gKHBpeGVsWzFdIC0gYmlhc1sxXSkgLyBz
Y2FsZVsxXTsKKyAgICBwaXhlbFsyXSA9IChwaXhlbFsyXSAtIGJpYXNbMl0pIC8gc2NhbGVbMl07
CisgICAgcGl4ZWxbM10gPSAocGl4ZWxbM10gLSBiaWFzWzNdKSAvIHNjYWxlWzNdOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzfSBkc3QKKyAq
IEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlMkRWaWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gc3EKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdHEKKyAqIEBwYXJhbSB7Z2xz
VGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gcGFyYW1zCisgKi8KK2dsc1RleHR1cmVU
ZXN0VXRpbC5zYW1wbGVUZXh0dXJlUHJvamVjdGVkMkQgPSBmdW5jdGlvbihkc3QsIHNyYywgc3Es
IHRxLCBwYXJhbXMpIHsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGxvZEJpYXMgPSBw
YXJhbXMuZmxhZ3MudXNlX2JpYXMgPyBwYXJhbXMuYmlhcyA6IDAuMDsKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGRzdFcgPSBkc3QuZ2V0V2lkdGgoKTsKKyAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGRzdEggPSBkc3QuZ2V0SGVpZ2h0KCk7CisKKyAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovIHZhciB1cSA9IGRlTWF0aC5zY2FsZShzcSwgc3JjLmdldFdpZHRoKCkp
OworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHZxID0gZGVNYXRoLnNjYWxl
KHRxLCBzcmMuZ2V0SGVpZ2h0KCkpOworCisgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1i
ZXI+Pn0gKi8gdmFyIHRyaVMgPSBbZGVNYXRoLnN3aXp6bGUoc3EsIFswLCAxLCAyXSksIGRlTWF0
aC5zd2l6emxlKHNxLCBbMywgMiwgMV0pXTsKKyAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51
bWJlcj4+fSAqLyB2YXIgdHJpVCA9IFtkZU1hdGguc3dpenpsZSh0cSwgWzAsIDEsIDJdKSwgZGVN
YXRoLnN3aXp6bGUodHEsIFszLCAyLCAxXSldOworICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8
bnVtYmVyPj59ICovIHZhciB0cmlVID0gW2RlTWF0aC5zd2l6emxlKHVxLCBbMCwgMSwgMl0pLCBk
ZU1hdGguc3dpenpsZSh1cSwgWzMsIDIsIDFdKV07CisgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJh
eTxudW1iZXI+Pn0gKi8gdmFyIHRyaVYgPSBbZGVNYXRoLnN3aXp6bGUodnEsIFswLCAxLCAyXSks
IGRlTWF0aC5zd2l6emxlKHZxLCBbMywgMiwgMV0pXTsKKyAgICAvKiogQHR5cGUge0FycmF5PEFy
cmF5PG51bWJlcj4+fSAqLyB2YXIgdHJpVyA9IFtkZU1hdGguc3dpenpsZShwYXJhbXMudywgWzAs
IDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUocGFyYW1zLncsIFszLCAyLCAxXSldOworCisgICAgZm9y
ICh2YXIgcHkgPSAwOyBweSA8IGRzdC5nZXRIZWlnaHQoKTsgcHkrKykgeworICAgICAgICBmb3Ig
KHZhciBweCA9IDA7IHB4IDwgZHN0LmdldFdpZHRoKCk7IHB4KyspIHsKKyAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd3ggPSBweCArIDAuNTsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgd3kgPSBweSArIDAuNTsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnggPSB3eCAvIGRzdFc7CisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIG55ID0gd3kgLyBkc3RIOworCisgICAgICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHRyaU5keCA9IG54ICsgbnkgPj0gMS4wID8gMSA6IDA7CisgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaVd4ID0gdHJpTmR4ID8gZHN0VyAtIHd4
IDogd3g7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaVd5ID0gdHJp
TmR4ID8gZHN0SCAtIHd5IDogd3k7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHRyaU54ID0gdHJpTmR4ID8gMS4wIC0gbnggOiBueDsKKyAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgdHJpTnkgPSB0cmlOZHggPyAxLjAgLSBueSA6IG55OworCisgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHMgPSBnbHNUZXh0dXJlVGVzdFV0aWwu
cHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHRyaU54
LCB0cmlOeSk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHQgPSBnbHNU
ZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpVFt0cmlOZHhdLCB0cmlX
W3RyaU5keF0sIHRyaU54LCB0cmlOeSk7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGxvZCA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlUHJvamVjdGVkVHJpTG9kMkQo
cGFyYW1zLmxvZE1vZGUsIHRyaVVbdHJpTmR4XSwgdHJpVlt0cmlOZHhdLCB0cmlXW3RyaU5keF0s
IHRyaVd4LCB0cmlXeSwgZHN0LmdldFdpZHRoKCksIGRzdC5nZXRIZWlnaHQoKSkgKyBsb2RCaWFz
OworCisgICAgICAgICAgICB2YXIgcGl4ZWwgPSBnbHNUZXh0dXJlVGVzdFV0aWwuZXhlY1NhbXBs
ZShzcmMsIHBhcmFtcywgW3MsIHRdLCBsb2QpOworICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RV
dGlsLmFwcGx5U2NhbGVBbmRCaWFzKHBpeGVsLCBwYXJhbXMuY29sb3JTY2FsZSwgcGFyYW1zLmNv
bG9yQmlhcyk7CisgICAgICAgICAgICBkc3Quc2V0UGl4ZWwocGl4ZWwsIHB4LCBweSk7CisgICAg
ICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLmxv
ZE1vZGV9IG1vZGUKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdQorICogQHBhcmFtIHtBcnJh
eTxudW1iZXI+fSB2CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHByb2plY3Rpb24KKyAqIEBw
YXJhbSB7bnVtYmVyfSB3eAorICogQHBhcmFtIHtudW1iZXJ9IHd5CisgKiBAcGFyYW0ge251bWJl
cn0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAqIEByZXR1cm4ge251bWJlcn0K
KyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVQcm9qZWN0ZWRUcmlMb2QyRCA9IGZ1bmN0
aW9uKG1vZGUsIHUsIHYsIHByb2plY3Rpb24sIHd4LCB3eSwgd2lkdGgsIGhlaWdodCkgeworICAg
IC8vIEV4YWN0IGRlcml2YXRpdmVzLgorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHVk
eCA9IGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodSwgcHJvamVjdGlvbiwgd3gsIHdp
ZHRoLCB3eSAvIGhlaWdodCk7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkdmR4ID0g
Z2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh2LCBwcm9qZWN0aW9uLCB3eCwgd2lkdGgs
IHd5IC8gaGVpZ2h0KTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGR1ZHkgPSBnbHNU
ZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHUsIHByb2plY3Rpb24sIHd5LCBoZWlnaHQsIHd4
IC8gd2lkdGgpOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHZkeSA9IGdsc1RleHR1
cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkodiwgcHJvamVjdGlvbiwgd3ksIGhlaWdodCwgd3ggLyB3
aWR0aCk7CisKKyAgICByZXR1cm4gZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVMb2RGcm9tRGVy
aXZhdGVzMkQobW9kZSwgZHVkeCwgZHZkeCwgZHVkeSwgZHZkeSk7Cit9OworCisvKioKKyAqIEBw
YXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3N9IGRzdAorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBz
cQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0cQorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVz
dFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBwYXJhbXMKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLnNh
bXBsZVRleHR1cmVOb25Qcm9qZWN0ZWQyRCA9IGZ1bmN0aW9uKGRzdCwgc3JjLCBzcSwgdHEsIHBh
cmFtcykgeworICAgIHZhciBsb2RCaWFzID0gcGFyYW1zLmZsYWdzLnVzZV9iaWFzID8gcGFyYW1z
LmJpYXMgOiAwOworCisgICAgdmFyIGRzdFNpemUgPSBbZHN0LmdldFdpZHRoKCksIGRzdC5nZXRI
ZWlnaHQoKV07CisgICAgdmFyIHNyY1NpemUgPSBbc3JjLmdldFdpZHRoKCksIHNyYy5nZXRIZWln
aHQoKV07CisKKyAgICAvLyBDb29yZGluYXRlcyBhbmQgbG9kIHBlciB0cmlhbmdsZS4KKyAgICB2
YXIgdHJpUyA9IFtkZU1hdGguc3dpenpsZShzcSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUo
c3EsIFszLCAyLCAxXSldOworICAgIHZhciB0cmlUID0gW2RlTWF0aC5zd2l6emxlKHRxLCBbMCwg
MSwgMl0pLCBkZU1hdGguc3dpenpsZSh0cSwgWzMsIDIsIDFdKV07CisgICAgdmFyIHRyaUxvZCA9
IFtkZU1hdGguY2xhbXAoKGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlTm9uUHJvamVjdGVkVHJp
TG9kKHBhcmFtcy5sb2RNb2RlLCBkc3RTaXplLCBzcmNTaXplLCB0cmlTWzBdLCB0cmlUWzBdKSAr
IGxvZEJpYXMpLCBwYXJhbXMubWluTG9kLCBwYXJhbXMubWF4TG9kKSwKKyAgICAgICAgICAgICAg
ICAgICAgZGVNYXRoLmNsYW1wKChnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZU5vblByb2plY3Rl
ZFRyaUxvZChwYXJhbXMubG9kTW9kZSwgZHN0U2l6ZSwgc3JjU2l6ZSwgdHJpU1sxXSwgdHJpVFsx
XSkgKyBsb2RCaWFzKSwgcGFyYW1zLm1pbkxvZCwgcGFyYW1zLm1heExvZCldOworCisKKyAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IGRzdC5nZXRIZWlnaHQoKTsgeSsrKSB7CisgICAgICAgIGZvciAo
dmFyIHggPSAwOyB4IDwgZHN0LmdldFdpZHRoKCk7IHgrKykgeworICAgICAgICAgICAgdmFyIHlm
ID0gKHkgKyAwLjUpIC8gZHN0LmdldEhlaWdodCgpOworICAgICAgICAgICAgdmFyIHhmID0gKHgg
KyAwLjUpIC8gZHN0LmdldFdpZHRoKCk7CisKKyAgICAgICAgICAgIHZhciB0cmlOZHggPSB4ZiAr
IHlmID49IDEgPyAxIDogMDsgLy8gVG9wIGxlZnQgZmlsbCBydWxlLgorICAgICAgICAgICAgdmFy
IHRyaVggPSB0cmlOZHggPyAxIC0geGYgOiB4ZjsKKyAgICAgICAgICAgIHZhciB0cmlZID0gdHJp
TmR4ID8gMSAtIHlmIDogeWY7CisKKyAgICAgICAgICAgIHZhciBzID0gZ2xzVGV4dHVyZVRlc3RV
dGlsLnRyaWFuZ2xlSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0cmlYLCB0cmlZKTsKKyAgICAg
ICAgICAgIHZhciB0ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaWFuZ2xlSW50ZXJwb2xhdGUodHJp
VFt0cmlOZHhdLCB0cmlYLCB0cmlZKTsKKyAgICAgICAgICAgIHZhciBsb2QgPSB0cmlMb2RbdHJp
TmR4XTsKKworICAgICAgICAgICAgdmFyIHBpeGVsID0gZ2xzVGV4dHVyZVRlc3RVdGlsLmV4ZWNT
YW1wbGUoc3JjLCBwYXJhbXMsIFtzLCB0XSwgbG9kKTsKKyAgICAgICAgICAgIGdsc1RleHR1cmVU
ZXN0VXRpbC5hcHBseVNjYWxlQW5kQmlhcyhwaXhlbCwgcGFyYW1zLmNvbG9yU2NhbGUsIHBhcmFt
cy5jb2xvckJpYXMpOworICAgICAgICAgICAgZHN0LnNldFBpeGVsKHBpeGVsLCB4LCB5KTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwu
U3VyZmFjZUFjY2Vzc30gZHN0CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZTJEQXJyYXlW
aWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gc3EKKyAqIEBwYXJhbSB7QXJyYXk8
bnVtYmVyPn0gdHEKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcnEKKyAqIEBwYXJhbSB7Z2xz
VGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gcGFyYW1zCisgKi8KK2dsc1RleHR1cmVU
ZXN0VXRpbC5zYW1wbGVUZXh0dXJlTm9uUHJvamVjdGVkMkRBcnJheSA9IGZ1bmN0aW9uKGRzdCwg
c3JjLCBzcSwgdHEsIHJxLCBwYXJhbXMpIHsKKyAgICB2YXIgbG9kQmlhcyA9IChwYXJhbXMuZmxh
Z3MudXNlX2JpYXMpID8gcGFyYW1zLmJpYXMgOiAwOworCisgICAgdmFyIGRzdFNpemUgPSBbZHN0
LmdldFdpZHRoKCksIGRzdC5nZXRIZWlnaHQoKV07CisgICAgdmFyIHNyY1NpemUgPSBbc3JjLmdl
dFdpZHRoKCksIHNyYy5nZXRIZWlnaHQoKV07CisKKyAgICAvLyBDb29yZGluYXRlcyBhbmQgbG9k
IHBlciB0cmlhbmdsZS4KKyAgICB2YXIgdHJpUyA9IFtkZU1hdGguc3dpenpsZShzcSwgWzAsIDEs
IDJdKSwgZGVNYXRoLnN3aXp6bGUoc3EsIFszLCAyLCAxXSldOworICAgIHZhciB0cmlUID0gW2Rl
TWF0aC5zd2l6emxlKHRxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZSh0cSwgWzMsIDIsIDFd
KV07CisgICAgdmFyIHRyaVIgPSBbZGVNYXRoLnN3aXp6bGUocnEsIFswLCAxLCAyXSksIGRlTWF0
aC5zd2l6emxlKHJxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJpTG9kID0gW2dsc1RleHR1cmVU
ZXN0VXRpbC5jb21wdXRlTm9uUHJvamVjdGVkVHJpTG9kKHBhcmFtcy5sb2RNb2RlLCBkc3RTaXpl
LCBzcmNTaXplLCB0cmlTWzBdLCB0cmlUWzBdKSArIGxvZEJpYXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlTm9uUHJvamVjdGVkVHJp
TG9kKHBhcmFtcy5sb2RNb2RlLCBkc3RTaXplLCBzcmNTaXplLCB0cmlTWzFdLCB0cmlUWzFdKSAr
IGxvZEJpYXNdOworCisgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBkc3QuZ2V0SGVpZ2h0KCk7IHkr
KykgeworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGRzdC5nZXRXaWR0aCgpOyB4KyspIHsK
KyAgICAgICAgICAgIHZhciB5ZiA9ICh5ICsgMC41KSAvIGRzdC5nZXRIZWlnaHQoKTsKKyAgICAg
ICAgICAgIHZhciB4ZiA9ICh4ICsgMC41KSAvIGRzdC5nZXRXaWR0aCgpOworCisgICAgICAgICAg
ICB2YXIgdHJpTmR4ID0geGYgKyB5ZiA+PSAxID8gMSA6IDA7IC8vIFRvcCBsZWZ0IGZpbGwgcnVs
ZS4KKyAgICAgICAgICAgIHZhciB0cmlYID0gdHJpTmR4ID8gMSAtIHhmIDogeGY7CisgICAgICAg
ICAgICB2YXIgdHJpWSA9IHRyaU5keCA/IDEgLSB5ZiA6IHlmOworCisgICAgICAgICAgICB2YXIg
cyA9IGdsc1RleHR1cmVUZXN0VXRpbC50cmlhbmdsZUludGVycG9sYXRlKHRyaVNbdHJpTmR4XSwg
dHJpWCwgdHJpWSk7CisgICAgICAgICAgICB2YXIgdCA9IGdsc1RleHR1cmVUZXN0VXRpbC50cmlh
bmdsZUludGVycG9sYXRlKHRyaVRbdHJpTmR4XSwgdHJpWCwgdHJpWSk7CisgICAgICAgICAgICB2
YXIgciA9IGdsc1RleHR1cmVUZXN0VXRpbC50cmlhbmdsZUludGVycG9sYXRlKHRyaVJbdHJpTmR4
XSwgdHJpWCwgdHJpWSk7CisgICAgICAgICAgICB2YXIgbG9kID0gdHJpTG9kW3RyaU5keF07CisK
KyAgICAgICAgICAgIHZhciBwaXhlbCA9IGdsc1RleHR1cmVUZXN0VXRpbC5leGVjU2FtcGxlKHNy
YywgcGFyYW1zLCBbcywgdCwgcl0sIGxvZCk7CisgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0
aWwuYXBwbHlTY2FsZUFuZEJpYXMocGl4ZWwsIHBhcmFtcy5jb2xvclNjYWxlLCBwYXJhbXMuY29s
b3JCaWFzKTsKKyAgICAgICAgICAgIGRzdC5zZXRQaXhlbChwaXhlbCwgeCwgeSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlN1cmZh
Y2VBY2Nlc3N9IGRzdAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXd9IHNyYwor
ICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAorICogQHBhcmFtIHtnbHNUZXh0dXJl
VGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBwYXJhbXMKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGls
LnNhbXBsZVRleHR1cmUyRCA9IGZ1bmN0aW9uKGRzdCwgc3JjLCB0ZXhDb29yZCwgcGFyYW1zKSB7
CisgICAgdmFyIHZpZXcgPSBzcmMuZ2V0U3ViVmlldyhwYXJhbXMuYmFzZUxldmVsLCBwYXJhbXMu
bWF4TGV2ZWwpOworICAgIHZhciBzcSA9IFt0ZXhDb29yZFswICsgMF0sIHRleENvb3JkWzIgKyAw
XSwgdGV4Q29vcmRbNCArIDBdLCB0ZXhDb29yZFs2ICsgMF1dOworICAgIHZhciB0cSA9IFt0ZXhD
b29yZFswICsgMV0sIHRleENvb3JkWzIgKyAxXSwgdGV4Q29vcmRbNCArIDFdLCB0ZXhDb29yZFs2
ICsgMV1dOworCisgICAgaWYgKHBhcmFtcy5mbGFncy5wcm9qZWN0ZWQpCisgICAgICAgIGdsc1Rl
eHR1cmVUZXN0VXRpbC5zYW1wbGVUZXh0dXJlUHJvamVjdGVkMkQoZHN0LCB2aWV3LCBzcSwgdHEs
IHBhcmFtcyk7CisgICAgZWxzZQorICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4
dHVyZU5vblByb2plY3RlZDJEKGRzdCwgdmlldywgc3EsIHRxLCBwYXJhbXMpOworfTsKKworLyoq
CisgKiBAcGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5sb2RNb2RlfSBtb2RlCisgKiBAcGFyYW0g
e251bWJlcn0gZHVkeAorICogQHBhcmFtIHtudW1iZXJ9IGR2ZHgKKyAqIEBwYXJhbSB7bnVtYmVy
fSBkdWR5CisgKiBAcGFyYW0ge251bWJlcn0gZHZkeQorICogQHJldHVybiB7bnVtYmVyfQorICov
CitnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMyRCA9IGZ1bmN0aW9u
KG1vZGUsIGR1ZHgsIGR2ZHgsIGR1ZHksIGR2ZHkpIHsKKyAgICB2YXIgcCA9IDA7CisgICAgc3dp
dGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGUuRVhB
Q1Q6CisgICAgICAgICAgICBwID0gTWF0aC5tYXgoTWF0aC5zcXJ0KGR1ZHggKiBkdWR4ICsgZHZk
eCAqIGR2ZHgpLCBNYXRoLnNxcnQoZHVkeSAqIGR1ZHkgKyBkdmR5ICogZHZkeSkpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbHNUZXh0dXJlVGVzdFV0aWwubG9kTW9kZS5N
SU5fQk9VTkQ6CisgICAgICAgIGNhc2UgZ2xzVGV4dHVyZVRlc3RVdGlsLmxvZE1vZGUuTUFYX0JP
VU5EOiB7CisgICAgICAgICAgICB2YXIgbXUgPSBNYXRoLm1heChNYXRoLmFicyhkdWR4KSwgTWF0
aC5hYnMoZHVkeSkpOworICAgICAgICAgICAgdmFyIG12ID0gTWF0aC5tYXgoTWF0aC5hYnMoZHZk
eCksIE1hdGguYWJzKGR2ZHkpKTsKKworICAgICAgICAgICAgcCA9IChtb2RlID09IGdsc1RleHR1
cmVUZXN0VXRpbC5sb2RNb2RlLk1JTl9CT1VORCkgPyBNYXRoLm1heChtdSwgbXYpIDogbXUgKyBt
djsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIG1vZGU6JyArIG1vZGUpOwor
ICAgIH0KKworICAgIC8vIE5hdGl2ZSBkRVFQIHVzZXMgMzItYml0IG51bWJlcnMuIFNvIGhlcmUg
NjQtYml0IGZsb2F0aW5nIG51bWJlcnMgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIGludG8gMzItYml0
IG9uZXMgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcmVzdWx0LgorICAgIHJldHVy
biBkZU1hdGgudG9GbG9hdDMyKE1hdGgubG9nKHApKSAqIGRlTWF0aC5JTlZfTE9HXzJfRkxPQVQz
MjsKK307CisKKy8qKgorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwubG9kTW9kZX0gbG9k
TW9kZVBhcm0KKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gY29vcmQKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gY29vcmREeAorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBjb29yZER5Cisg
KiBAcGFyYW0ge251bWJlcn0gZmFjZVNpemUKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZ2xz
VGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVDdWJlTG9kRnJvbURlcml2YXRlcyA9IGZ1bmN0aW9uKGxv
ZE1vZGVQYXJtLCBjb29yZCwgY29vcmREeCwgY29vcmREeSwgZmFjZVNpemUpIHsKKyAgICB2YXIg
ZmFjZSA9IHRjdVRleHR1cmUuc2VsZWN0Q3ViZUZhY2UoY29vcmQpOworICAgIHZhciBtYU5keCA9
IDA7CisgICAgdmFyIHNOZHggPSAwOworICAgIHZhciB0TmR4ID0gMDsKKworICAgIC8vIFxub3Rl
IERlcml2YXRlIHNpZ25zIGRvbid0IG1hdHRlciB3aGVuIGNvbXB1dGluZyBsb2QKKyAgICBzd2l0
Y2ggKGZhY2UpIHsKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNVQkVGQUNFX05F
R0FUSVZFX1g6CisgICAgICAgIGNhc2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9QT1NJ
VElWRV9YOiBtYU5keCA9IDA7IHNOZHggPSAyOyB0TmR4ID0gMTsgYnJlYWs7CisgICAgICAgIGNh
c2UgdGN1VGV4dHVyZS5DdWJlRmFjZS5DVUJFRkFDRV9ORUdBVElWRV9ZOgorICAgICAgICBjYXNl
IHRjdVRleHR1cmUuQ3ViZUZhY2UuQ1VCRUZBQ0VfUE9TSVRJVkVfWTogbWFOZHggPSAxOyBzTmR4
ID0gMDsgdE5keCA9IDI7IGJyZWFrOworICAgICAgICBjYXNlIHRjdVRleHR1cmUuQ3ViZUZhY2Uu
Q1VCRUZBQ0VfTkVHQVRJVkVfWjoKKyAgICAgICAgY2FzZSB0Y3VUZXh0dXJlLkN1YmVGYWNlLkNV
QkVGQUNFX1BPU0lUSVZFX1o6IG1hTmR4ID0gMjsgc05keCA9IDA7IHROZHggPSAxOyBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25p
emVkIGZhY2UgJyArIGZhY2UpOworICAgIH0geworICAgICAgICB2YXIgc2MgPSBjb29yZFtzTmR4
XTsKKyAgICAgICAgdmFyIHRjID0gY29vcmRbdE5keF07CisgICAgICAgIHZhciBtYSA9IE1hdGgu
YWJzKGNvb3JkW21hTmR4XSk7CisgICAgICAgIHZhciBzY2R4ID0gY29vcmREeFtzTmR4XTsKKyAg
ICAgICAgdmFyIHRjZHggPSBjb29yZER4W3ROZHhdOworICAgICAgICB2YXIgbWFkeCA9IE1hdGgu
YWJzKGNvb3JkRHhbbWFOZHhdKTsKKyAgICAgICAgdmFyIHNjZHkgPSBjb29yZER5W3NOZHhdOwor
ICAgICAgICB2YXIgdGNkeSA9IGNvb3JkRHlbdE5keF07CisgICAgICAgIHZhciBtYWR5ID0gTWF0
aC5hYnMoY29vcmREeVttYU5keF0pOworICAgICAgICB2YXIgZHVkeCA9IGZhY2VTaXplICogMC41
ICogKHNjZHggKiBtYSAtIHNjICogbWFkeCkgLyAobWEgKiBtYSk7CisgICAgICAgIHZhciBkdmR4
ID0gZmFjZVNpemUgKiAwLjUgKiAodGNkeCAqIG1hIC0gdGMgKiBtYWR4KSAvIChtYSAqIG1hKTsK
KyAgICAgICAgdmFyIGR1ZHkgPSBmYWNlU2l6ZSAqIDAuNSAqIChzY2R5ICogbWEgLSBzYyAqIG1h
ZHkpIC8gKG1hICogbWEpOworICAgICAgICB2YXIgZHZkeSA9IGZhY2VTaXplICogMC41ICogKHRj
ZHkgKiBtYSAtIHRjICogbWFkeSkgLyAobWEgKiBtYSk7CisgICAgICAgIHJldHVybiBnbHNUZXh0
dXJlVGVzdFV0aWwuY29tcHV0ZUxvZEZyb21EZXJpdmF0ZXMyRChsb2RNb2RlUGFybSwgZHVkeCwg
ZHZkeCwgZHVkeSwgZHZkeSk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge2dsc1RleHR1
cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzfSBkc3QKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0
dXJlQ3ViZVZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzcQorICogQHBhcmFt
IHtBcnJheTxudW1iZXI+fSB0cQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBycQorICogQHBh
cmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBwYXJhbXMKKyAqLworZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1cmVDdWJlX3N0ciA9IGZ1bmN0aW9uKGRzdCwgc3Jj
LCBzcSwgdHEsIHJxLCBwYXJhbXMpIHsKKyAgICB2YXIgZHN0U2l6ZSA9IFtkc3QuZ2V0V2lkdGgo
KSwgZHN0LmdldEhlaWdodCgpXTsKKyAgICB2YXIgZHN0VyA9IGRzdFNpemVbMF07CisgICAgdmFy
IGRzdEggPSBkc3RTaXplWzFdOworICAgIHZhciBzcmNTaXplID0gc3JjLmdldFNpemUoKTsKKwor
ICAgIC8vIENvb3JkaW5hdGVzIHBlciB0cmlhbmdsZS4KKyAgICB2YXIgdHJpUyA9IFtkZU1hdGgu
c3dpenpsZShzcSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUoc3EsIFszLCAyLCAxXSldOwor
ICAgIHZhciB0cmlUID0gW2RlTWF0aC5zd2l6emxlKHRxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dp
enpsZSh0cSwgWzMsIDIsIDFdKV07CisgICAgdmFyIHRyaVIgPSBbZGVNYXRoLnN3aXp6bGUocnEs
IFswLCAxLCAyXSksIGRlTWF0aC5zd2l6emxlKHJxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJp
VyA9IFtkZU1hdGguc3dpenpsZShwYXJhbXMudywgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUo
cGFyYW1zLncsIFszLCAyLCAxXSldOworCisgICAgdmFyIGxvZEJpYXMgPSAocGFyYW1zLmZsYWdz
LnVzZV9iaWFzID8gcGFyYW1zLmJpYXMgOiAwKTsKKworICAgIGZvciAodmFyIHB5ID0gMDsgcHkg
PCBkc3QuZ2V0SGVpZ2h0KCk7IHB5KyspIHsKKyAgICAgICAgZm9yICh2YXIgcHggPSAwOyBweCA8
IGRzdC5nZXRXaWR0aCgpOyBweCsrKSB7CisgICAgICAgICAgICB2YXIgd3ggPSBweCArIDAuNTsK
KyAgICAgICAgICAgIHZhciB3eSA9IHB5ICsgMC41OworICAgICAgICAgICAgdmFyIG54ID0gd3gg
LyBkc3RXOworICAgICAgICAgICAgdmFyIG55ID0gd3kgLyBkc3RIOworICAgICAgICAgICAgdmFy
IHRyaU5keCA9IG54ICsgbnkgPj0gMSA/IDEgOiAwOworICAgICAgICAgICAgdmFyIHRyaU54ID0g
dHJpTmR4ID8gMSAtIG54IDogbng7CisgICAgICAgICAgICB2YXIgdHJpTnkgPSB0cmlOZHggPyAx
IC0gbnkgOiBueTsKKworICAgICAgICAgICAgdmFyIGNvb3JkID0gW2dsc1RleHR1cmVUZXN0VXRp
bC50cmlhbmdsZUludGVycG9sYXRlKHRyaVNbdHJpTmR4XSwgdHJpTngsIHRyaU55KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRy
aWFuZ2xlSW50ZXJwb2xhdGUodHJpVFt0cmlOZHhdLCB0cmlOeCwgdHJpTnkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpYW5n
bGVJbnRlcnBvbGF0ZSh0cmlSW3RyaU5keF0sIHRyaU54LCB0cmlOeSldOworICAgICAgICAgICAg
dmFyIGNvb3JkRHggPSBbZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlTW3RyaU5k
eF0sIHRyaVdbdHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlU
W3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRl
WCh0cmlSW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55KV07CisgICAgICAg
ICAgICB2YXIgY29vcmREeSA9IFtnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVNb
dHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eSwgZHN0SCwgdHJpTngpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZ
KHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eSwgZHN0SCwgdHJpTngpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVy
aXZhdGVZKHRyaVJbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eSwgZHN0SCwgdHJpTngpXTsKKwor
ICAgICAgICAgICAgdmFyIGxvZCA9IGRlTWF0aC5jbGFtcCgoZ2xzVGV4dHVyZVRlc3RVdGlsLmNv
bXB1dGVDdWJlTG9kRnJvbURlcml2YXRlcyhwYXJhbXMubG9kTW9kZSwgY29vcmQsIGNvb3JkRHgs
IGNvb3JkRHksIHNyY1NpemUpICsgbG9kQmlhcyksIHBhcmFtcy5taW5Mb2QsIHBhcmFtcy5tYXhM
b2QpOworCisgICAgICAgICAgICB2YXIgcGl4ZWwgPSBnbHNUZXh0dXJlVGVzdFV0aWwuZXhlY1Nh
bXBsZShzcmMsIHBhcmFtcywgY29vcmQsIGxvZCk7CisgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwuYXBwbHlTY2FsZUFuZEJpYXMocGl4ZWwsIHBhcmFtcy5jb2xvclNjYWxlLCBwYXJhbXMu
Y29sb3JCaWFzKTsKKyAgICAgICAgICAgIGRzdC5zZXRQaXhlbChwaXhlbCwgcHgsIHB5KTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwu
U3VyZmFjZUFjY2Vzc30gZHN0CisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3
fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJhbSB7Z2xz
VGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gcGFyYW1zCisgKi8KK2dsc1RleHR1cmVU
ZXN0VXRpbC5zYW1wbGVUZXh0dXJlQ3ViZSA9IGZ1bmN0aW9uKGRzdCwgc3JjLCB0ZXhDb29yZCwg
cGFyYW1zKSB7CisgICAgLypjb25zdCB0Y3U6OlRleHR1cmVDdWJlVmlldyovIHZhciB2aWV3ID0g
c3JjLmdldFN1YlZpZXcocGFyYW1zLmJhc2VMZXZlbCwgcGFyYW1zLm1heExldmVsKTsKKyAgICB2
YXIgc3EgPSBbdGV4Q29vcmRbMCArIDBdLCB0ZXhDb29yZFszICsgMF0sIHRleENvb3JkWzYgKyAw
XSwgdGV4Q29vcmRbOSArIDBdXTsKKyAgICB2YXIgdHEgPSBbdGV4Q29vcmRbMCArIDFdLCB0ZXhD
b29yZFszICsgMV0sIHRleENvb3JkWzYgKyAxXSwgdGV4Q29vcmRbOSArIDFdXTsKKyAgICB2YXIg
cnEgPSBbdGV4Q29vcmRbMCArIDJdLCB0ZXhDb29yZFszICsgMl0sIHRleENvb3JkWzYgKyAyXSwg
dGV4Q29vcmRbOSArIDJdXTsKKworICAgIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVUZXh0dXJl
Q3ViZV9zdHIoZHN0LCB2aWV3LCBzcSwgdHEsIHJxLCBwYXJhbXMpOworfTsKKworLyoqCisgKiBA
cGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzfSBkc3QKKyAqIEBwYXJhbSB7
dGN1VGV4dHVyZS5UZXh0dXJlMkRBcnJheVZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1i
ZXI+fSB0ZXhDb29yZAorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFy
YW1zfSBwYXJhbXMKKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1cmUyREFycmF5
ID0gZnVuY3Rpb24oZHN0LCBzcmMsIHRleENvb3JkLCBwYXJhbXMpIHsKKyAgICB2YXIgc3EgPSBb
dGV4Q29vcmRbMCArIDBdLCB0ZXhDb29yZFszICsgMF0sIHRleENvb3JkWzYgKyAwXSwgdGV4Q29v
cmRbOSArIDBdXTsKKyAgICB2YXIgdHEgPSBbdGV4Q29vcmRbMCArIDFdLCB0ZXhDb29yZFszICsg
MV0sIHRleENvb3JkWzYgKyAxXSwgdGV4Q29vcmRbOSArIDFdXTsKKyAgICB2YXIgcnEgPSBbdGV4
Q29vcmRbMCArIDJdLCB0ZXhDb29yZFszICsgMl0sIHRleENvb3JkWzYgKyAyXSwgdGV4Q29vcmRb
OSArIDJdXTsKKworICAgIERFX0FTU0VSVCghKHBhcmFtcy5mbGFncy5wcm9qZWN0ZWQpKTsgLy8g
XHRvZG8gWzIwMTItMDItMTcgcHlyeV0gU3VwcG9ydCBwcm9qZWN0ZWQgbG9va3Vwcy4KKyAgICBn
bHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZU5vblByb2plY3RlZDJEQXJyYXkoZHN0LCBz
cmMsIHNxLCB0cSwgcnEsIHBhcmFtcyk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7Z2xzVGV4dHVy
ZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3N9IGRzdAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1
cmUzRFZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBzcQorICogQHBhcmFtIHtB
cnJheTxudW1iZXI+fSB0cQorICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBycQorICogQHBhcmFt
IHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBwYXJhbXMKKyAqLworZ2xzVGV4
dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1cmVOb25Qcm9qZWN0ZWQzRCA9IGZ1bmN0aW9uKGRzdCwg
c3JjLCBzcSwgdHEsIHJxLCBwYXJhbXMpIHsKKyAgICB2YXIgbG9kQmlhcyA9IHBhcmFtcy5mbGFn
cy51c2VfYmlhcyA/IHBhcmFtcy5iaWFzIDogMDsKKworICAgIHZhciBkc3RTaXplID0gW2RzdC5n
ZXRXaWR0aCgpLCBkc3QuZ2V0SGVpZ2h0KCldOworICAgIHZhciBzcmNTaXplID0gW3NyYy5nZXRX
aWR0aCgpLCBzcmMuZ2V0SGVpZ2h0KCksIHNyYy5nZXREZXB0aCgpXTsKKworICAgIC8vIENvb3Jk
aW5hdGVzIGFuZCBsb2QgcGVyIHRyaWFuZ2xlLgorICAgIHZhciB0cmlTID0gW2RlTWF0aC5zd2l6
emxlKHNxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZShzcSwgWzMsIDIsIDFdKV07CisgICAg
dmFyIHRyaVQgPSBbZGVNYXRoLnN3aXp6bGUodHEsIFswLCAxLCAyXSksIGRlTWF0aC5zd2l6emxl
KHRxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJpUiA9IFtkZU1hdGguc3dpenpsZShycSwgWzAs
IDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUocnEsIFszLCAyLCAxXSldOworICAgIHZhciB0cmlMb2Qg
PSBbZGVNYXRoLmNsYW1wKChnbHNUZXh0dXJlVGVzdFV0aWwuY29tcHV0ZU5vblByb2plY3RlZFRy
aUxvZChwYXJhbXMubG9kTW9kZSwgZHN0U2l6ZSwgc3JjU2l6ZSwgdHJpU1swXSwgdHJpVFswXSwg
dHJpUlswXSkgKyBsb2RCaWFzKSwgcGFyYW1zLm1pbkxvZCwgcGFyYW1zLm1heExvZCksCisgICAg
ICAgICAgICAgICAgICBkZU1hdGguY2xhbXAoKGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlTm9u
UHJvamVjdGVkVHJpTG9kKHBhcmFtcy5sb2RNb2RlLCBkc3RTaXplLCBzcmNTaXplLCB0cmlTWzFd
LCB0cmlUWzFdLCB0cmlSWzFdKSArIGxvZEJpYXMpLCBwYXJhbXMubWluTG9kLCBwYXJhbXMubWF4
TG9kKV07CisKKyAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGRzdC5nZXRIZWlnaHQoKTsgeSsrKSB7
CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZHN0LmdldFdpZHRoKCk7IHgrKykgeworICAg
ICAgICAgICAgdmFyIHlmID0gKHkgKyAwLjUpIC8gZHN0LmdldEhlaWdodCgpOworICAgICAgICAg
ICAgdmFyIHhmID0gKHggKyAwLjUpIC8gZHN0LmdldFdpZHRoKCk7CisKKyAgICAgICAgICAgIHZh
ciB0cmlOZHggPSB4ZiArIHlmID49IDEgPyAxIDogMDsgLy8gVG9wIGxlZnQgZmlsbCBydWxlLgor
ICAgICAgICAgICAgdmFyIHRyaVggPSB0cmlOZHggPyAxIC0geGYgOiB4ZjsKKyAgICAgICAgICAg
IHZhciB0cmlZID0gdHJpTmR4ID8gMSAtIHlmIDogeWY7CisKKyAgICAgICAgICAgIHZhciBzID0g
Z2xzVGV4dHVyZVRlc3RVdGlsLnRyaWFuZ2xlSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0cmlY
LCB0cmlZKTsKKyAgICAgICAgICAgIHZhciB0ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaWFuZ2xl
SW50ZXJwb2xhdGUodHJpVFt0cmlOZHhdLCB0cmlYLCB0cmlZKTsKKyAgICAgICAgICAgIHZhciBy
ID0gZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaWFuZ2xlSW50ZXJwb2xhdGUodHJpUlt0cmlOZHhdLCB0
cmlYLCB0cmlZKTsKKyAgICAgICAgICAgIHZhciBsb2QgPSB0cmlMb2RbdHJpTmR4XTsKKworICAg
ICAgICAgICAgdmFyIHBpeGVsID0gc3JjLnNhbXBsZShwYXJhbXMuc2FtcGxlciwgW3MsIHQsIHJd
LCBsb2QpOworICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmFwcGx5U2NhbGVBbmRCaWFz
KHBpeGVsLCBwYXJhbXMuY29sb3JTY2FsZSwgcGFyYW1zLmNvbG9yQmlhcyk7CisgICAgICAgICAg
ICBkc3Quc2V0UGl4ZWwocGl4ZWwsIHgsIHkpOworICAgICAgICB9CisgICAgfQorfTsKKworLyoq
CisgKiBAcGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzfSBkc3QKKyAqIEBw
YXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlM0RWaWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVt
YmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBh
cmFtc30gcGFyYW1zCisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVUZXh0dXJlM0QgPSBm
dW5jdGlvbihkc3QsIHNyYywgdGV4Q29vcmQsIHBhcmFtcykgeworICAgIC8qY29uc3QgdGN1OjpU
ZXh0dXJlQ3ViZVZpZXcqLyB2YXIgdmlldyA9IHNyYy5nZXRTdWJWaWV3KHBhcmFtcy5iYXNlTGV2
ZWwsIHBhcmFtcy5tYXhMZXZlbCk7CisgICAgdmFyIHNxID0gW3RleENvb3JkWzAgKyAwXSwgdGV4
Q29vcmRbMyArIDBdLCB0ZXhDb29yZFs2ICsgMF0sIHRleENvb3JkWzkgKyAwXV07CisgICAgdmFy
IHRxID0gW3RleENvb3JkWzAgKyAxXSwgdGV4Q29vcmRbMyArIDFdLCB0ZXhDb29yZFs2ICsgMV0s
IHRleENvb3JkWzkgKyAxXV07CisgICAgdmFyIHJxID0gW3RleENvb3JkWzAgKyAyXSwgdGV4Q29v
cmRbMyArIDJdLCB0ZXhDb29yZFs2ICsgMl0sIHRleENvb3JkWzkgKyAyXV07CisKKyAgICBnbHNU
ZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZU5vblByb2plY3RlZDNEKGRzdCwgdmlldywgc3Es
IHRxLCBycSwgcGFyYW1zKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZh
Y2V9IHJlZmVyZW5jZQorICogQHBhcmFtIHt0Y3VTdXJmYWNlLlN1cmZhY2V9IHJlbmRlcmVkCisg
KiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRocmVzaG9sZAorICogQHBhcmFtIHtBcnJheTwgQXJy
YXk8bnVtYmVyPiA+fSBza2lwUGl4ZWxzCisgKgorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLwor
Z2xzVGV4dHVyZVRlc3RVdGlsLmNvbXBhcmVJbWFnZXMgPSBmdW5jdGlvbihyZWZlcmVuY2UsIHJl
bmRlcmVkLCB0aHJlc2hvbGQsIHNraXBQaXhlbHMpIHsKKyAgICByZXR1cm4gdGN1SW1hZ2VDb21w
YXJlLnBpeGVsVGhyZXNob2xkQ29tcGFyZSgnUmVzdWx0JywgJ0ltYWdlIGNvbXBhcmlzb24gcmVz
dWx0JywgcmVmZXJlbmNlLCByZW5kZXJlZCwgdGhyZXNob2xkLCB1bmRlZmluZWQgLyp0Y3U6OkNP
TVBBUkVfTE9HX1JFU1VMVCovLCBza2lwUGl4ZWxzKTsKK307CisKKy8qKgorICogQHBhcmFtIHt0
Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlc3VsdAorICogQHBhcmFtIHt0Y3VU
ZXh0dXJlLlRleHR1cmUyRFZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhD
b29yZAorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBzYW1w
bGVQYXJhbXMKKyAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9u
fSBsb29rdXBQcmVjCisgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvZFByZWNpc2lv
bn0gbG9kUHJlYworICogQHBhcmFtIHt0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdH0gcGl4ZWxG
b3JtYXQKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC52ZXJp
ZnlUZXh0dXJlMkRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIHNyYywgdGV4Q29vcmQsIHNhbXBs
ZVBhcmFtcywgbG9va3VwUHJlYywgbG9kUHJlYywgcGl4ZWxGb3JtYXQpIHsKKyAgICBERV9BU1NF
UlQoZGVNYXRoLmVxdWFsKGdsc1RleHR1cmVUZXN0VXRpbC5nZXRDb21wYXJlTWFzayhwaXhlbEZv
cm1hdCksIGxvb2t1cFByZWMuY29sb3JNYXNrKSk7CisgICAgLyoqIEB0eXBlIHt0Y3VTdXJmYWNl
LlN1cmZhY2V9ICovIHZhciByZWZlcmVuY2UgPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNlKHJlc3Vs
dC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0SGVpZ2h0KCkpOworICAgIC8qKiBAdHlwZSB7dGN1U3Vy
ZmFjZS5TdXJmYWNlfSAqLyB2YXIgZXJyb3JNYXNrID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShy
ZXN1bHQuZ2V0V2lkdGgoKSwgcmVzdWx0LmdldEhlaWdodCgpKTsKKyAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIG51bUZhaWxlZFBpeGVsczsKKworICAgIC8qKiBAdHlwZSB7Z2xzVGV4dHVy
ZVRlc3RVdGlsLlN1cmZhY2VBY2Nlc3N9ICovIHZhciBzdXJmYWNlID0gbmV3IGdsc1RleHR1cmVU
ZXN0VXRpbC5TdXJmYWNlQWNjZXNzKHJlZmVyZW5jZSwgcGl4ZWxGb3JtYXQpOworCisgICAgZ2xz
VGV4dHVyZVRlc3RVdGlsLnNhbXBsZVRleHR1cmUyRChzdXJmYWNlLCBzcmMsIHRleENvb3JkLCBz
YW1wbGVQYXJhbXMpOworICAgIG51bUZhaWxlZFBpeGVscyA9IGdsc1RleHR1cmVUZXN0VXRpbC5j
b21wdXRlVGV4dHVyZUxvb2t1cERpZmYyRChyZXN1bHQsIHJlZmVyZW5jZS5nZXRBY2Nlc3MoKSwg
ZXJyb3JNYXNrLmdldEFjY2VzcygpLCBzcmMsIHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIGxvb2t1
cFByZWMsIGxvZFByZWMvKiwgdGVzdEN0eC5nZXRXYXRjaERvZygpKi8pOworCisgICAgaWYgKG51
bUZhaWxlZFBpeGVscyA+IDApCisgICAgICAgIHRjdUltYWdlQ29tcGFyZS5kaXNwbGF5SW1hZ2Vz
KHJlc3VsdCwgcmVmZXJlbmNlLmdldEFjY2VzcygpLCBlcnJvck1hc2suZ2V0QWNjZXNzKCkpOwor
CisgICAgcmV0dXJuIG51bUZhaWxlZFBpeGVscyA9PSAwOworfTsKKworLyoqCisgKiBAcGFyYW0g
e3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVzdWx0CisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVmZXJlbmNlCisgKiBAcGFyYW0ge3Rj
dVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9yTWFzaworICogQHBhcmFtIHt0Y3VUZXh0
dXJlLlRleHR1cmUyRFZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29y
ZAorICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBzYW1wbGVQ
YXJhbXMKKyAqIEBwYXJhbSB7dGN1VGV4Q29tcGFyZVZlcmlmaWVyLlRleENvbXBhcmVQcmVjaXNp
b259IGNvbXBhcmVQcmVjCisgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvZFByZWNp
c2lvbn0gbG9kUHJlYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBub25TaGFkb3dUaHJlc2hv
bGQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVU
ZXh0dXJlQ29tcGFyZURpZmYyRCA9IGZ1bmN0aW9uKHJlc3VsdCwgcmVmZXJlbmNlLCBlcnJvck1h
c2ssIHNyYywgdGV4Q29vcmQsIHNhbXBsZVBhcmFtcywgY29tcGFyZVByZWMsIGxvZFByZWMsIG5v
blNoYWRvd1RocmVzaG9sZCkgeworICAgIERFX0FTU0VSVChyZXN1bHQuZ2V0V2lkdGgoKSA9PSBy
ZWZlcmVuY2UuZ2V0V2lkdGgoKSAmJiByZXN1bHQuZ2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNlLmdl
dEhlaWdodCgpKTsKKyAgICBERV9BU1NFUlQocmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JNYXNr
LmdldFdpZHRoKCkgJiYgcmVzdWx0LmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRIZWlnaHQo
KSk7CisKKyAgICB2YXIgc3EgPSBbdGV4Q29vcmRbMCArIDBdLCB0ZXhDb29yZFsyICsgMF0sIHRl
eENvb3JkWzQgKyAwXSwgdGV4Q29vcmRbNiArIDBdXTsKKyAgICB2YXIgdHEgPSBbdGV4Q29vcmRb
MCArIDFdLCB0ZXhDb29yZFsyICsgMV0sIHRleENvb3JkWzQgKyAxXSwgdGV4Q29vcmRbNiArIDFd
XTsKKworICAgIHZhciBkc3RTaXplID0gW3Jlc3VsdC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0SGVp
Z2h0KCldOworICAgIHZhciBkc3RXID0gZHN0U2l6ZVswXTsKKyAgICB2YXIgZHN0SCA9IGRzdFNp
emVbMV07CisgICAgdmFyIHNyY1NpemUgPSBbc3JjLmdldFdpZHRoKCksIHNyYy5nZXRIZWlnaHQo
KV07CisKKyAgICAvLyBDb29yZGluYXRlcyBhbmQgbG9kIHBlciB0cmlhbmdsZS4KKyAgICB2YXIg
dHJpUyA9IFtkZU1hdGguc3dpenpsZShzcSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUoc3Es
IFszLCAyLCAxXSldOworICAgIHZhciB0cmlUID0gW2RlTWF0aC5zd2l6emxlKHRxLCBbMCwgMSwg
Ml0pLCBkZU1hdGguc3dpenpsZSh0cSwgWzMsIDIsIDFdKV07CisgICAgdmFyIHRyaVcgPSBbZGVN
YXRoLnN3aXp6bGUoc2FtcGxlUGFyYW1zLncsIFswLCAxLCAyXSksIGRlTWF0aC5zd2l6emxlKHNh
bXBsZVBhcmFtcy53LCBbMywgMiwgMV0pXTsKKworICAgIHZhciBsb2RCaWFzID0gc2FtcGxlUGFy
YW1zLmZsYWdzLnVzZV9iaWFzID8gW3NhbXBsZVBhcmFtcy5iaWFzLCBzYW1wbGVQYXJhbXMuYmlh
c10gOiBbMCwgMF07CisgICAgdmFyIG51bUZhaWxlZCA9IDA7CisKKyAgICB2YXIgbG9kT2Zmc2V0
cyA9IFsKKyAgICAgICAgWy0xLCAwXSwKKyAgICAgICAgWzEsIDBdLAorICAgICAgICBbMCwgLTFd
LAorICAgICAgICBbMCwgMV0KKyAgICBdOworCisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICAgIGVycm9yTWFzay5jbGVhcihn
cmVlbik7CisKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciByZWQgPSBbXTsK
KyAgICBmb3IgKHZhciBweSA9IDA7IHB5IDwgcmVzdWx0LmdldEhlaWdodCgpOyBweSsrKSB7Cisg
ICAgICAgIGZvciAodmFyIHB4ID0gMDsgcHggPCByZXN1bHQuZ2V0V2lkdGgoKTsgcHgrKykgewor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgdmFy
IHJlc1BpeCA9IHJlc3VsdC5nZXRQaXhlbChweCwgcHkpOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgdmFyIHJlZlBpeCA9IHJlZmVyZW5jZS5n
ZXRQaXhlbChweCwgcHkpOworCisgICAgICAgICAgICBpZiAoIWRlTWF0aC5ib29sQWxsKGRlTWF0
aC5sZXNzVGhhbkVxdWFsKGRlTWF0aC5hYnNEaWZmKGRlTWF0aC5zd2l6emxlKHJlZlBpeCwgWzEs
IDIsIDNdKSwgZGVNYXRoLnN3aXp6bGUocmVzUGl4LCBbMSwgMiwgM10pKSwgbm9uU2hhZG93VGhy
ZXNob2xkKSkpIHsKKyAgICAgICAgICAgICAgICByZWQgPSBbMjU1LCAwLCAwLCAyNTVdOworICAg
ICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhlbChyZWQsIHB4LCBweSk7CisgICAgICAgICAg
ICAgICAgbnVtRmFpbGVkICs9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXNQaXhbMF0gIT0gcmVmUGl4WzBdKSB7CisgICAg
ICAgICAgICAgICAgdmFyIHd4ID0gcHggKyAwLjU7CisgICAgICAgICAgICAgICAgdmFyIHd5ID0g
cHkgKyAwLjU7CisgICAgICAgICAgICAgICAgdmFyIG54ID0gd3ggLyBkc3RXOworICAgICAgICAg
ICAgICAgIHZhciBueSA9IHd5IC8gZHN0SDsKKworICAgICAgICAgICAgICAgIHZhciB0cmlOZHgg
PSBueCArIG55ID49IDEuMCA/IDEgOiAwOworICAgICAgICAgICAgICAgIHZhciB0cmlXeCA9IHRy
aU5keCA/IGRzdFcgLSB3eCA6IHd4OworICAgICAgICAgICAgICAgIHZhciB0cmlXeSA9IHRyaU5k
eCA/IGRzdEggLSB3eSA6IHd5OworICAgICAgICAgICAgICAgIHZhciB0cmlOeCA9IHRyaU5keCA/
IDEuMCAtIG54IDogbng7CisgICAgICAgICAgICAgICAgdmFyIHRyaU55ID0gdHJpTmR4ID8gMS4w
IC0gbnkgOiBueTsKKworICAgICAgICAgICAgICAgIHZhciBjb29yZCA9IFtnbHNUZXh0dXJlVGVz
dFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0s
IHRyaU54LCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVU
ZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4
XSwgdHJpTngsIHRyaU55KV07CisgICAgICAgICAgICAgICAgdmFyIGNvb3JkRHggPSBkZU1hdGgu
bXVsdGlwbHkoW2dsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpU1t0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIHd4LCBkc3RXLCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0
cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd4LCBkc3RXLCB0cmlOeSldLCBzcmNTaXplKTsKKyAgICAg
ICAgICAgICAgICB2YXIgY29vcmREeSA9IGRlTWF0aC5tdWx0aXBseShbZ2xzVGV4dHVyZVRlc3RV
dGlsLnRyaURlcml2YXRlWSh0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRy
aU54KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4
dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3ks
IGRzdEgsIHRyaU54KV0sIHNyY1NpemUpOworCisgICAgICAgICAgICAgICAgdmFyIGxvZEJvdW5k
cyA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZhdGVzVVYo
Y29vcmREeFswXSwgY29vcmREeFsxXSwgY29vcmREeVswXSwgY29vcmREeVsxXSwgbG9kUHJlYyk7
CisKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGxvZCBib3VuZHMgYWNyb3NzIGxvZE9mZnNl
dHMgcmFuZ2UuCisgICAgICAgICAgICAgICAgZm9yICh2YXIgbG9kT2Zmc05keCA9IDA7IGxvZE9m
ZnNOZHggPCBsb2RPZmZzZXRzLmxlbmd0aDsgbG9kT2Zmc05keCsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhciB3eG8gPSB0cmlXeCArIGxvZE9mZnNldHNbbG9kT2Zmc05keF1bMF07CisgICAg
ICAgICAgICAgICAgICAgIHZhciB3eW8gPSB0cmlXeSArIGxvZE9mZnNldHNbbG9kT2Zmc05keF1b
MV07CisgICAgICAgICAgICAgICAgICAgIHZhciBueG8gPSB3eG8gLyBkc3RXOworICAgICAgICAg
ICAgICAgICAgICB2YXIgbnlvID0gd3lvIC8gZHN0SDsKKworICAgICAgICAgICAgICAgICAgICB2
YXIgY29vcmRPID0gW2dsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0
cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgbnhvLCBueW8pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0
ZSh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgbnhvLCBueW8pXTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvb3JkRHhvID0gZGVNYXRoLm11bHRpcGx5KFtnbHNUZXh0dXJlVGVzdFV0aWwu
dHJpRGVyaXZhdGVYKHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eG8sIGRzdFcsIG55byks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4
dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3hv
LCBkc3RXLCBueW8pXSwgc3JjU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb29yZER5
byA9IGRlTWF0aC5tdWx0aXBseShbZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlT
W3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlE
ZXJpdmF0ZVkodHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd5bywgZHN0SCwgbnhvKV0sIHNy
Y1NpemUpOworICAgICAgICAgICAgICAgICAgICB2YXIgbG9kTyA9IHRjdVRleExvb2t1cFZlcmlm
aWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZhdGVzVVYoY29vcmREeG9bMF0sIGNvb3JkRHhv
WzFdLCBjb29yZER5b1swXSwgY29vcmREeW9bMV0sIGxvZFByZWMpOworCisgICAgICAgICAgICAg
ICAgICAgIGxvZEJvdW5kc1swXSA9IE1hdGgubWluKGxvZEJvdW5kc1swXSwgbG9kT1swXSk7Cisg
ICAgICAgICAgICAgICAgICAgIGxvZEJvdW5kc1sxXSA9IE1hdGgubWF4KGxvZEJvdW5kc1sxXSwg
bG9kT1sxXSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIGNsYW1w
ZWRMb2QgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5jbGFtcExvZEJvdW5kcyhkZU1hdGguYWRkKGxv
ZEJvdW5kcywgbG9kQmlhcyksIFtzYW1wbGVQYXJhbXMubWluTG9kLCBzYW1wbGVQYXJhbXMubWF4
TG9kXSwgbG9kUHJlYyk7CisgICAgICAgICAgICAgICAgdmFyIGlzT2sgPSB0Y3VUZXhDb21wYXJl
VmVyaWZpZXIuaXNUZXhDb21wYXJlUmVzdWx0VmFsaWQyRChzcmMsIHNhbXBsZVBhcmFtcy5zYW1w
bGVyLCBjb21wYXJlUHJlYywgY29vcmQsIGNsYW1wZWRMb2QsIHNhbXBsZVBhcmFtcy5yZWYsIHJl
c1BpeFswXSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzT2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmVkID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JN
YXNrLnNldFBpeGVsKHJlZCwgcHgsIHB5KTsKKyAgICAgICAgICAgICAgICAgICAgbnVtRmFpbGVk
ICs9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIG51bUZhaWxlZDsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0
dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nlc3N9IHJlc3VsdAorICogQHBhcmFtIHt0Y3VUZXh0dXJl
LlRleHR1cmUzRFZpZXd9IHNyYworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0ZXhDb29yZAor
ICogQHBhcmFtIHtnbHNUZXh0dXJlVGVzdFV0aWwuUmVmZXJlbmNlUGFyYW1zfSBzYW1wbGVQYXJh
bXMKKyAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9va3VwUHJlY2lzaW9ufSBsb29r
dXBQcmVjCisgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvZFByZWNpc2lvbn0gbG9k
UHJlYworICogQHBhcmFtIHt0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdH0gcGl4ZWxGb3JtYXQK
KyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC52ZXJpZnlUZXh0
dXJlM0RSZXN1bHQgPSBmdW5jdGlvbigKKyAgICByZXN1bHQsIHNyYywgdGV4Q29vcmQsIHNhbXBs
ZVBhcmFtcywgbG9va3VwUHJlYywgbG9kUHJlYywgcGl4ZWxGb3JtYXQKKykgeworICAgIC8qKiBA
dHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIgcmVmZXJlbmNlID0gbmV3IHRjdVN1cmZh
Y2UuU3VyZmFjZShyZXN1bHQuZ2V0V2lkdGgoKSwgcmVzdWx0LmdldEhlaWdodCgpKTsKKyAgICAv
KiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIGVycm9yTWFzayA9IG5ldyB0Y3VT
dXJmYWNlLlN1cmZhY2UocmVzdWx0LmdldFdpZHRoKCksIHJlc3VsdC5nZXRIZWlnaHQoKSk7Cisg
ICAgdmFyIG51bUZhaWxlZFBpeGVscyA9IDA7CisKKyAgICBhc3NlcnRNc2dPcHRpb25zKAorICAg
ICAgICBkZU1hdGguZXF1YWwoZ2xzVGV4dHVyZVRlc3RVdGlsLmdldENvbXBhcmVNYXNrKHBpeGVs
Rm9ybWF0KSwgbG9va3VwUHJlYy5jb2xvck1hc2spLAorICAgICAgICAnQ29tcGFyZSBjb2xvciBt
YXNrcyBkbyBub3QgbWF0Y2gnLCBmYWxzZSwgdHJ1ZQorICAgICk7CisKKyAgICAvKiogQHR5cGUg
e2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNlQWNjZXNzfSAqLyB2YXIgc3VyZmFjZSA9IG5ldyBn
bHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVuY2UsIHBpeGVsRm9ybWF0KTsK
KyAgICBnbHNUZXh0dXJlVGVzdFV0aWwuc2FtcGxlVGV4dHVyZTNEKHN1cmZhY2UsIHNyYywgdGV4
Q29vcmQsIHNhbXBsZVBhcmFtcyk7CisgICAgbnVtRmFpbGVkUGl4ZWxzID0gZ2xzVGV4dHVyZVRl
c3RVdGlsLmNvbXB1dGVUZXh0dXJlTG9va3VwRGlmZjNEKHJlc3VsdCwgcmVmZXJlbmNlLmdldEFj
Y2VzcygpLCBlcnJvck1hc2suZ2V0QWNjZXNzKCksIHNyYywgdGV4Q29vcmQsIHNhbXBsZVBhcmFt
cywgbG9va3VwUHJlYywgbG9kUHJlYyk7CisKKyAgICBpZiAobnVtRmFpbGVkUGl4ZWxzID4gMCkK
KyAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmRpc3BsYXlJbWFnZXMocmVzdWx0LCByZWZlcmVuY2Uu
Z2V0QWNjZXNzKCksIGVycm9yTWFzay5nZXRBY2Nlc3MoKSk7CisKKyAgICByZXR1cm4gbnVtRmFp
bGVkUGl4ZWxzID09IDA7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBp
eGVsQnVmZmVyQWNjZXNzfSByZXN1bHQKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVs
QnVmZmVyQWNjZXNzfSByZWZlcmVuY2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZl
ckFjY2Vzc30gZXJyb3JNYXNrCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZTNEVmlld30g
YmFzZVZpZXcKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJhbSB7
Z2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gc2FtcGxlUGFyYW1zCisgKiBAcGFy
YW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0gbG9va3VwUHJlYworICog
QHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259IGxvZFByZWMKKyAqIEBy
ZXR1cm4ge251bWJlcn0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVUZXh0dXJlTG9v
a3VwRGlmZjNEID0gZnVuY3Rpb24oCisgICAgcmVzdWx0LCByZWZlcmVuY2UsIGVycm9yTWFzaywg
YmFzZVZpZXcsIHRleENvb3JkLAorICAgIHNhbXBsZVBhcmFtcywgbG9va3VwUHJlYywgbG9kUHJl
YworKSB7CisgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgcmVzdWx0LmdldFdpZHRoKCkg
PT0gcmVmZXJlbmNlLmdldFdpZHRoKCkgJiYKKyAgICAgICAgcmVzdWx0LmdldEhlaWdodCgpID09
IHJlZmVyZW5jZS5nZXRIZWlnaHQoKSwKKyAgICAgICAgJ1Jlc3VsdCBhbmQgcmVmZXJlbmNlIGlt
YWdlcyBhcmUgbm90IHRoZSBzYW1lIHNpemUnLCBmYWxzZSwgdHJ1ZQorICAgICk7CisgICAgYXNz
ZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgcmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JNYXNrLmdl
dFdpZHRoKCkgJiYKKyAgICAgICAgcmVzdWx0LmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRI
ZWlnaHQoKSwKKyAgICAgICAgJ1Jlc3VsdCBhbmQgZXJyb3IgbWFzayBpbWFnZXMgYXJlIG5vdCB0
aGUgc2FtZSBzaXplJywgZmFsc2UsIHRydWUKKyAgICApOworCisgICAgLyoqIEB0eXBlIHt0Y3VU
ZXh0dXJlLlRleHR1cmUzRFZpZXd9ICovCisgICAgdmFyIHNyYyA9IGJhc2VWaWV3LmdldFN1YlZp
ZXcoCisgICAgICAgIHNhbXBsZVBhcmFtcy5iYXNlTGV2ZWwsIHNhbXBsZVBhcmFtcy5tYXhMZXZl
bAorICAgICk7CisKKyAgICB2YXIgc3EgPQorICAgICAgICBbdGV4Q29vcmRbMCArIDBdLCB0ZXhD
b29yZFszICsgMF0sIHRleENvb3JkWzYgKyAwXSwgdGV4Q29vcmRbOSArIDBdXTsKKyAgICB2YXIg
dHEgPQorICAgICAgICBbdGV4Q29vcmRbMCArIDFdLCB0ZXhDb29yZFszICsgMV0sIHRleENvb3Jk
WzYgKyAxXSwgdGV4Q29vcmRbOSArIDFdXTsKKyAgICB2YXIgcnEgPQorICAgICAgICBbdGV4Q29v
cmRbMCArIDJdLCB0ZXhDb29yZFszICsgMl0sIHRleENvb3JkWzYgKyAyXSwgdGV4Q29vcmRbOSAr
IDJdXTsKKworICAgIHZhciBkc3RTaXplID0gW3Jlc3VsdC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0
SGVpZ2h0KCldOworICAgIHZhciBkc3RXID0gZHN0U2l6ZVswXTsKKyAgICB2YXIgZHN0SCA9IGRz
dFNpemVbMV07CisgICAgdmFyIHNyY1NpemUgPSBbc3JjLmdldFdpZHRoKCksIHNyYy5nZXRIZWln
aHQoKSwgc3JjLmdldERlcHRoKCldOworCisgICAgLy8gQ29vcmRpbmF0ZXMgYW5kIGxvZCBwZXIg
dHJpYW5nbGUuCisgICAgdmFyIHRyaVMgPSBbZGVNYXRoLnN3aXp6bGUoc3EsIFswLCAxLCAyXSks
IGRlTWF0aC5zd2l6emxlKHNxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJpVCA9IFtkZU1hdGgu
c3dpenpsZSh0cSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUodHEsIFszLCAyLCAxXSldOwor
ICAgIHZhciB0cmlSID0gW2RlTWF0aC5zd2l6emxlKHJxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dp
enpsZShycSwgWzMsIDIsIDFdKV07CisgICAgdmFyIHRyaVcgPSBbCisgICAgICAgIGRlTWF0aC5z
d2l6emxlKHNhbXBsZVBhcmFtcy53LCBbMCwgMSwgMl0pLAorICAgICAgICBkZU1hdGguc3dpenps
ZShzYW1wbGVQYXJhbXMudywgWzMsIDIsIDFdKQorICAgIF07CisKKyAgICB2YXIgbG9kQmlhcyA9
IHNhbXBsZVBhcmFtcy5mbGFncy51c2VCaWFzID8gc2FtcGxlUGFyYW1zLmJpYXMgOiAwLjA7CisK
KyAgICB2YXIgcG9zRXBzID0gMS4wIC8gKCgxIDw8IE1JTl9TVUJQSVhFTF9CSVRTKSArIDEpOwor
CisgICAgdmFyIG51bUZhaWxlZCA9IDA7CisKKyAgICB2YXIgbG9kT2Zmc2V0cyA9IFsKKyAgICAg
ICAgWy0xLCAwXSwKKyAgICAgICAgWysxLCAwXSwKKyAgICAgICAgWzAsIC0xXSwKKyAgICAgICAg
WzAsICsxXQorICAgIF07CisKKyAgICB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICAg
IGVycm9yTWFzay5jbGVhcihuZXcgdGN1UkdCQS5SR0JBKGdyZWVuKS50b1ZlYygpKTsKKworICAg
IGZvciAodmFyIHB5ID0gMDsgcHkgPCByZXN1bHQuZ2V0SGVpZ2h0KCk7IHB5KyspIHsKKyAgICAg
ICAgLy8gVWdseSBoYWNrLCB2YWxpZGF0aW9uIGNhbiB0YWtlIHdheSB0b28gbG9uZyBhdCB0aGUg
bW9tZW50LgorICAgICAgICAvKlRPRE86IGlmICh3YXRjaERvZykKKyAgICAgICAgICAgIHFwV2F0
Y2hEb2dfdG91Y2god2F0Y2hEb2cpOyovCisKKyAgICAgICAgZm9yICh2YXIgcHggPSAwOyBweCA8
IHJlc3VsdC5nZXRXaWR0aCgpOyBweCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIgcmVzUGl4ID0gcmVzdWx0LmdldFBpeGVsKHB4
LCBweSk7CisgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuZGVhcHBseVNjYWxlQW5kQmlh
cyhyZXNQaXgsIHNhbXBsZVBhcmFtcy5jb2xvclNjYWxlLCBzYW1wbGVQYXJhbXMuY29sb3JCaWFz
KTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgICAg
IHZhciByZWZQaXggPSByZWZlcmVuY2UuZ2V0UGl4ZWwocHgsIHB5KTsKKyAgICAgICAgICAgIGds
c1RleHR1cmVUZXN0VXRpbC5kZWFwcGx5U2NhbGVBbmRCaWFzKHJlZlBpeCwgc2FtcGxlUGFyYW1z
LmNvbG9yU2NhbGUsIHNhbXBsZVBhcmFtcy5jb2xvckJpYXMpOworCisgICAgICAgICAgICAvLyBU
cnkgY29tcGFyaXNvbiB0byBpZGVhbCByZWZlcmVuY2UgZmlyc3QsCisgICAgICAgICAgICAvLyBh
bmQgaWYgdGhhdCBmYWlscyB1c2Ugc2xvd2VyIHZlcmlmaWNhdG9yLgorICAgICAgICAgICAgaWYg
KCFkZU1hdGguYm9vbEFsbChkZU1hdGgubGVzc1RoYW5FcXVhbCgKKyAgICAgICAgICAgICAgICBk
ZU1hdGguYWJzRGlmZihyZXNQaXgsIHJlZlBpeCksCisgICAgICAgICAgICAgICAgbG9va3VwUHJl
Yy5jb2xvclRocmVzaG9sZCkpCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge251bWJlcn0gKi8gdmFyIHd4ID0gcHggKyAwLjU7CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciB3eSA9IHB5ICsgMC41OworICAgICAgICAgICAgICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnggPSB3eCAvIGRzdFc7CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBueSA9IHd5IC8gZHN0SDsKKworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHRyaTAgPSBueCArIG55IC0gcG9zRXBzIDw9
IDEuMDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciB0cmkxID0g
bnggKyBueSArIHBvc0VwcyA+PSAxLjA7CisKKyAgICAgICAgICAgICAgICB2YXIgaXNPayA9IGZh
bHNlOworCisgICAgICAgICAgICAgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgICAgICAg
ICAgICAgdHJpMCB8fCB0cmkxLAorICAgICAgICAgICAgICAgICAgICAnUGl4ZWwgc2hvdWxkIGJl
bG9uZyBhdCBsZWFzdCB0byBvbmUgdHJpYW5nbGUnLAorICAgICAgICAgICAgICAgICAgICBmYWxz
ZSwgdHJ1ZQorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAvLyBQaXhlbCBj
YW4gYmVsb25nIHRvIGVpdGhlciBvZiB0aGUgdHJpYW5nbGVzCisgICAgICAgICAgICAgICAgLy8g
aWYgaXQgbGllcyBjbG9zZSBlbm91Z2ggdG8gdGhlIGVkZ2UuCisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgdHJpTmR4ID0gKHRyaTAgPyAwIDogMSk7CisgICAgICAgICAgICAgICAgICAgIHRyaU5k
eCA8PSAodHJpMSA/IDEgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgdHJpTmR4KyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHRyaVd4ID0gdHJpTmR4ID8gZHN0VyAtIHd4IDogd3g7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciB0cmlXeSA9IHRyaU5keCA/IGRzdEggLSB3eSA6IHd5Owor
ICAgICAgICAgICAgICAgICAgICB2YXIgdHJpTnggPSB0cmlOZHggPyAxLjAgLSBueCA6IG54Owor
ICAgICAgICAgICAgICAgICAgICB2YXIgdHJpTnkgPSB0cmlOZHggPyAxLjAgLSBueSA6IG55Owor
CisgICAgICAgICAgICAgICAgICAgIHZhciBjb29yZCA9IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgdHJpTngsIHRy
aU55CisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2xzVGV4dHVyZVRlc3RVdGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB0cmlOeCwgdHJpTnkK
KyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNU
ZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJpUlt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHRyaU54LCB0cmlOeQorICAg
ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
ICAgICAgICAgICB2YXIgY29vcmREeCA9IGRlTWF0aC5tdWx0aXBseShbCisgICAgICAgICAgICAg
ICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eCwgZHN0VywgdHJp
TnkKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBn
bHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eCwgZHN0VywgdHJpTnkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwudHJpRGVyaXZhdGVYKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaVJbdHJp
TmR4XSwgdHJpV1t0cmlOZHhdLCB3eCwgZHN0VywgdHJpTnkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgXSwgc3JjU2l6ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBjb29yZER5ID0gZGVNYXRoLm11bHRpcGx5KFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd5LCBkc3RILCB0cmlOeAorICAg
ICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1
cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJp
VFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd5LCBkc3RILCB0cmlOeAorICAgICAgICAgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50
cmlEZXJpdmF0ZVkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpUlt0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIHd5LCBkc3RILCB0cmlOeAorICAgICAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICAgICBdLCBzcmNTaXplKTsKKworICAgICAgICAgICAgICAgICAgICB2
YXIgbG9kQm91bmRzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRleExvb2t1cFZlcmlm
aWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZhdGVzKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvb3JkRHhbMF0sIGNvb3JkRHhbMV0sIGNvb3JkRHhbMl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29vcmREeVswXSwgY29vcmREeVsxXSwgY29vcmREeVsyXSwgbG9kUHJl
YworICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBD
b21wdXRlIGxvZCBib3VuZHMgYWNyb3NzIGxvZE9mZnNldHMgcmFuZ2UuCisgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIGxvZE9mZnNOZHggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9kT2Zmc05keCA8IGxvZE9mZnNldHMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9kT2Zmc05keCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd3hvID0gdHJpV3gg
KyBsb2RPZmZzZXRzW2xvZE9mZnNOZHhdWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHd5byA9IHRyaVd5ICsgbG9kT2Zmc2V0c1tsb2RPZmZzTmR4XVsxXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBueG8gPSB3eG8gLyBkc3RXOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG55byA9IHd5byAvIGRzdEg7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb29y
ZE8gPSBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnBy
b2plY3RlZFRyaUludGVycG9sYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgbnhvLCBueW8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRp
bC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIG54bywgbnlvCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyaVJbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCBueG8sIG55bworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgY29vcmREeG8gPSBkZU1hdGgubXVsdGlwbHkoWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3
eG8sIGRzdFcsIG55bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd4
bywgZHN0VywgbnlvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlSW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3hv
LCBkc3RXLCBueW8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgICAgICBdLCBzcmNTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb29y
ZER5byA9IGRlTWF0aC5tdWx0aXBseShbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xz
VGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd5bywgZHN0SCwgbnhvCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNU
ZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1Rl
eHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyaVJbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eW8sIGRzdEgsIG54bworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sIHNyY1NpemUp
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvZE8gPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZh
dGVzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZER4b1swXSwgY29vcmRE
eG9bMV0sIGNvb3JkRHhvWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29y
ZER5b1swXSwgY29vcmREeW9bMV0sIGNvb3JkRHlvWzJdLCBsb2RQcmVjCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbG9kQm91bmRzWzBd
ID0gTWF0aC5taW4obG9kQm91bmRzWzBdLCBsb2RPWzBdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZEJvdW5kc1sxXSA9IE1hdGgubWF4KGxvZEJvdW5kc1sxXSwgbG9kT1sxXSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2YXIgY2xhbXBlZExvZCA9
IHRjdVRleExvb2t1cFZlcmlmaWVyLmNsYW1wTG9kQm91bmRzKAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGVNYXRoLmFkZFNjYWxhcihsb2RCb3VuZHMsIGxvZEJpYXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgW3NhbXBsZVBhcmFtcy5taW5Mb2QsIHNhbXBsZVBhcmFtcy5tYXhMb2RdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbG9kUHJlYworICAgICAgICAgICAgICAgICAgICApOwor
CisgICAgICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjdVRl
eExvb2t1cFZlcmlmaWVyLmlzTG9va3VwUmVzdWx0VmFsaWQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3JjLCBzYW1wbGVQYXJhbXMuc2FtcGxlciwgbG9va3VwUHJlYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb29yZCwgY2xhbXBlZExvZCwgcmVzUGl4CisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaXNPayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmICghaXNPaykgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmVkID0gWzI1NSwgMCwgMCwg
MjU1XTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVsKG5ldyB0Y3VSR0JB
LlJHQkEocmVkKS50b1ZlYygpLCBweCwgcHkpOworICAgICAgICAgICAgICAgICAgICBudW1GYWls
ZWQgKz0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gbnVtRmFpbGVkOworfTsKKworLyoqCisgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVzdWx0CisgKiBAcGFyYW0ge3RjdVRleHR1
cmUuVGV4dHVyZUN1YmVWaWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29v
cmQKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gc2FtcGxl
UGFyYW1zCisgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNpc2lvbn0g
bG9va3VwUHJlYworICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259
IGxvZFByZWMKKyAqIEBwYXJhbSB7dGN1UGl4ZWxGb3JtYXQuUGl4ZWxGb3JtYXR9IHBpeGVsRm9y
bWF0CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwudmVyaWZ5
VGV4dHVyZUN1YmVSZXN1bHQgPSBmdW5jdGlvbigKKyAgICByZXN1bHQsIHNyYywgdGV4Q29vcmQs
IHNhbXBsZVBhcmFtcywgbG9va3VwUHJlYywgbG9kUHJlYywgcGl4ZWxGb3JtYXQKKykgeworICAg
IC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLworICAgIHZhciByZWZlcmVuY2UgPSBu
ZXcgdGN1U3VyZmFjZS5TdXJmYWNlKAorICAgICAgICByZXN1bHQuZ2V0V2lkdGgoKSwgcmVzdWx0
LmdldEhlaWdodCgpCisgICAgKTsKKyAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0g
Ki8KKyAgICB2YXIgZXJyb3JNYXNrID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZSgKKyAgICAgICAg
cmVzdWx0LmdldFdpZHRoKCksIHJlc3VsdC5nZXRIZWlnaHQoKQorICAgICk7CisgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciBudW1GYWlsZWRQaXhlbHMgPSAwOworCisgICAgYXNzZXJ0TXNn
T3B0aW9ucygKKyAgICAgICAgZGVNYXRoLmVxdWFsKGdsc1RleHR1cmVUZXN0VXRpbC5nZXRDb21w
YXJlTWFzayhwaXhlbEZvcm1hdCksIGxvb2t1cFByZWMuY29sb3JNYXNrKSwKKyAgICAgICAgJ0Nv
bXBhcmUgY29sb3IgbWFza3MgZG8gbm90IG1hdGNoJywgZmFsc2UsIHRydWUKKyAgICApOworCisg
ICAgLyoqIEB0eXBlIHtnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2Vzc30gKi8KKyAgICB2
YXIgc3VyZmFjZSA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFjY2VzcyhyZWZlcmVu
Y2UsIHBpeGVsRm9ybWF0KTsKKworICAgIGdsc1RleHR1cmVUZXN0VXRpbC5zYW1wbGVUZXh0dXJl
Q3ViZSgKKyAgICAgICAgc3VyZmFjZSwgc3JjLCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zCisgICAg
KTsKKworICAgIG51bUZhaWxlZFBpeGVscyA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4
dHVyZUxvb2t1cERpZmZDdWJlKAorICAgICAgICByZXN1bHQsIHJlZmVyZW5jZS5nZXRBY2Nlc3Mo
KSwgZXJyb3JNYXNrLmdldEFjY2VzcygpLAorICAgICAgICBzcmMsIHRleENvb3JkLCBzYW1wbGVQ
YXJhbXMsIGxvb2t1cFByZWMsIGxvZFByZWMKKyAgICAgICAgLyosIHRlc3RDdHguZ2V0V2F0Y2hE
b2coKSovCisgICAgKTsKKworICAgIGlmIChudW1GYWlsZWRQaXhlbHMgPiAwKQorICAgICAgICB0
Y3VJbWFnZUNvbXBhcmUuZGlzcGxheUltYWdlcyhyZXN1bHQsIHJlZmVyZW5jZS5nZXRBY2Nlc3Mo
KSwgZXJyb3JNYXNrLmdldEFjY2VzcygpKTsKKworICAgIHJldHVybiBudW1GYWlsZWRQaXhlbHMg
PT0gMDsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJB
Y2Nlc3N9IHJlc3VsdAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJBY2Nl
c3N9IHJlZmVyZW5jZQorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlBpeGVsQnVmZmVyQWNjZXNzfSBl
cnJvck1hc2sKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5UZXh0dXJlQ3ViZVZpZXd9IGJhc2VWaWV3
CisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge2dsc1RleHR1
cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXN9IHNhbXBsZVBhcmFtcworICogQHBhcmFtIHt0Y3VU
ZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IGxvb2t1cFByZWMKKyAqIEBwYXJhbSB7
dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9ufSBsb2RQcmVjCisgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVyZUxvb2t1cERpZmZD
dWJlID0gZnVuY3Rpb24oCisgICAgcmVzdWx0LCByZWZlcmVuY2UsIGVycm9yTWFzaywgYmFzZVZp
ZXcsIHRleENvb3JkLAorICAgIHNhbXBsZVBhcmFtcywgbG9va3VwUHJlYywgbG9kUHJlYworKSB7
CisgICAgYXNzZXJ0TXNnT3B0aW9ucygKKyAgICAgICAgcmVzdWx0LmdldFdpZHRoKCkgPT0gcmVm
ZXJlbmNlLmdldFdpZHRoKCkgJiYKKyAgICAgICAgcmVzdWx0LmdldEhlaWdodCgpID09IHJlZmVy
ZW5jZS5nZXRIZWlnaHQoKSwKKyAgICAgICAgJ1Jlc3VsdCBhbmQgcmVmZXJlbmNlIGltYWdlcyBh
cmUgbm90IHRoZSBzYW1lIHNpemUnLCBmYWxzZSwgdHJ1ZQorICAgICk7CisgICAgYXNzZXJ0TXNn
T3B0aW9ucygKKyAgICAgICAgcmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JNYXNrLmdldFdpZHRo
KCkgJiYKKyAgICAgICAgcmVzdWx0LmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRIZWlnaHQo
KSwKKyAgICAgICAgJ1Jlc3VsdCBhbmQgZXJyb3IgbWFzayBpbWFnZXMgYXJlIG5vdCB0aGUgc2Ft
ZSBzaXplJywgZmFsc2UsIHRydWUKKyAgICApOworCisgICAgLyoqIEB0eXBlIHt0Y3VUZXh0dXJl
LlRleHR1cmVDdWJlVmlld30gKi8KKyAgICB2YXIgc3JjID0gYmFzZVZpZXcuZ2V0U3ViVmlldygK
KyAgICAgICAgc2FtcGxlUGFyYW1zLmJhc2VMZXZlbCwgc2FtcGxlUGFyYW1zLm1heExldmVsCisg
ICAgKTsKKworICAgIHZhciBzcSA9CisgICAgICAgIFt0ZXhDb29yZFswICsgMF0sIHRleENvb3Jk
WzMgKyAwXSwgdGV4Q29vcmRbNiArIDBdLCB0ZXhDb29yZFs5ICsgMF1dOworICAgIHZhciB0cSA9
CisgICAgICAgIFt0ZXhDb29yZFswICsgMV0sIHRleENvb3JkWzMgKyAxXSwgdGV4Q29vcmRbNiAr
IDFdLCB0ZXhDb29yZFs5ICsgMV1dOworICAgIHZhciBycSA9CisgICAgICAgIFt0ZXhDb29yZFsw
ICsgMl0sIHRleENvb3JkWzMgKyAyXSwgdGV4Q29vcmRbNiArIDJdLCB0ZXhDb29yZFs5ICsgMl1d
OworCisgICAgdmFyIGRzdFNpemUgPSBbcmVzdWx0LmdldFdpZHRoKCksIHJlc3VsdC5nZXRIZWln
aHQoKV07CisgICAgdmFyIGRzdFcgPSBkc3RTaXplWzBdOworICAgIHZhciBkc3RIID0gZHN0U2l6
ZVsxXTsKKyAgICB2YXIgc3JjU2l6ZSA9IFtzcmMuZ2V0U2l6ZSgpLCBzcmMuZ2V0U2l6ZSgpXTsK
KworICAgIC8vIENvb3JkaW5hdGVzIGFuZCBsb2QgcGVyIHRyaWFuZ2xlLgorICAgIHZhciB0cmlT
ID0gW2RlTWF0aC5zd2l6emxlKHNxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZShzcSwgWzMs
IDIsIDFdKV07CisgICAgdmFyIHRyaVQgPSBbZGVNYXRoLnN3aXp6bGUodHEsIFswLCAxLCAyXSks
IGRlTWF0aC5zd2l6emxlKHRxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJpUiA9IFtkZU1hdGgu
c3dpenpsZShycSwgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUocnEsIFszLCAyLCAxXSldOwor
ICAgIHZhciB0cmlXID0gWworICAgICAgICBkZU1hdGguc3dpenpsZShzYW1wbGVQYXJhbXMudywg
WzAsIDEsIDJdKSwKKyAgICAgICAgZGVNYXRoLnN3aXp6bGUoc2FtcGxlUGFyYW1zLncsIFszLCAy
LCAxXSkKKyAgICBdOworCisgICAgdmFyIGxvZEJpYXMgPSBzYW1wbGVQYXJhbXMuZmxhZ3MudXNl
QmlhcyA/IHNhbXBsZVBhcmFtcy5iaWFzIDogMC4wOworCisgICAgdmFyIHBvc0VwcyA9IDEuMCAv
ICgoMSA8PCBNSU5fU1VCUElYRUxfQklUUykgKyAxKTsKKworICAgIHZhciBudW1GYWlsZWQgPSAw
OworCisgICAgdmFyIGxvZE9mZnNldHMgPSBbCisgICAgICAgIFstMSwgMF0sCisgICAgICAgIFsr
MSwgMF0sCisgICAgICAgIFswLCAtMV0sCisgICAgICAgIFswLCArMV0sCisKKyAgICAgICAgLy8g
XG5vdGUgTm90IHN0cmljdGx5IGFsbG93ZWQgYnkgc3BlYywKKyAgICAgICAgLy8gYnV0IGltcGxl
bWVudGF0aW9ucyBkbyB0aGlzIGluIHByYWN0aWNlLgorICAgICAgICBbLTEsIC0xXSwKKyAgICAg
ICAgWy0xLCAxXSwKKyAgICAgICAgWzEsIC0xXSwKKyAgICAgICAgWzEsIDFdCisgICAgXTsKKwor
ICAgIHZhciBncmVlbiA9IFswLCAyNTUsIDAsIDI1NV07CisgICAgZXJyb3JNYXNrLmNsZWFyKG5l
dyB0Y3VSR0JBLlJHQkEoZ3JlZW4pLnRvVmVjKCkpOworCisgICAgZm9yICh2YXIgcHkgPSAwOyBw
eSA8IHJlc3VsdC5nZXRIZWlnaHQoKTsgcHkrKykgeworICAgICAgICAvLyBVZ2x5IGhhY2ssIHZh
bGlkYXRpb24gY2FuIHRha2Ugd2F5IHRvbyBsb25nIGF0IHRoZSBtb21lbnQuCisgICAgICAgIC8q
VE9ETzogaWYgKHdhdGNoRG9nKQorICAgICAgICAgICAgcXBXYXRjaERvZ190b3VjaCh3YXRjaERv
Zyk7Ki8KKworICAgICAgICBmb3IgKHZhciBweCA9IDA7IHB4IDwgcmVzdWx0LmdldFdpZHRoKCk7
IHB4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAg
ICAgICAgIHZhciByZXNQaXggPSByZXN1bHQuZ2V0UGl4ZWwocHgsIHB5KTsKKyAgICAgICAgICAg
IGdsc1RleHR1cmVUZXN0VXRpbC5kZWFwcGx5U2NhbGVBbmRCaWFzKHJlc1BpeCwgc2FtcGxlUGFy
YW1zLmNvbG9yU2NhbGUsIHNhbXBsZVBhcmFtcy5jb2xvckJpYXMpOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgdmFyIHJlZlBpeCA9IHJlZmVy
ZW5jZS5nZXRQaXhlbChweCwgcHkpOworICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmRl
YXBwbHlTY2FsZUFuZEJpYXMocmVmUGl4LCBzYW1wbGVQYXJhbXMuY29sb3JTY2FsZSwgc2FtcGxl
UGFyYW1zLmNvbG9yQmlhcyk7CisKKyAgICAgICAgICAgIC8vIFRyeSBjb21wYXJpc29uIHRvIGlk
ZWFsIHJlZmVyZW5jZSBmaXJzdCwKKyAgICAgICAgICAgIC8vIGFuZCBpZiB0aGF0IGZhaWxzIHVz
ZSBzbG93ZXIgdmVyaWZpY2F0b3IuCisgICAgICAgICAgICBpZiAoIWRlTWF0aC5ib29sQWxsKGRl
TWF0aC5sZXNzVGhhbkVxdWFsKAorICAgICAgICAgICAgICAgIGRlTWF0aC5hYnNEaWZmKHJlc1Bp
eCwgcmVmUGl4KSwKKyAgICAgICAgICAgICAgICBsb29rdXBQcmVjLmNvbG9yVGhyZXNob2xkKSkK
KyAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgd3ggPSBweCArIDAuNTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIHd5ID0gcHkgKyAwLjU7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IHZhciBueCA9IHd4IC8gZHN0VzsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG55ID0gd3kgLyBkc3RIOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtib29s
ZWFufSAqLyB2YXIgdHJpMCA9IG54ICsgbnkgLSBwb3NFcHMgPD0gMS4wOworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIHRyaTEgPSBueCArIG55ICsgcG9zRXBzID49
IDEuMDsKKworICAgICAgICAgICAgICAgIHZhciBpc09rID0gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICBhc3NlcnRNc2dPcHRpb25zKAorICAgICAgICAgICAgICAgICAgICB0cmkwIHx8IHRyaTEs
CisgICAgICAgICAgICAgICAgICAgICdQaXhlbCBzaG91bGQgYmVsb25nIGF0IGxlYXN0IHRvIG9u
ZSB0cmlhbmdsZScsCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cnVlCisgICAgICAgICAg
ICAgICAgKTsKKworICAgICAgICAgICAgICAgIC8vIFBpeGVsIGNhbiBiZWxvbmcgdG8gZWl0aGVy
IG9mIHRoZSB0cmlhbmdsZXMKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCBsaWVzIGNsb3NlIGVu
b3VnaCB0byB0aGUgZWRnZS4KKyAgICAgICAgICAgICAgICBmb3IgKHZhciB0cmlOZHggPSAodHJp
MCA/IDAgOiAxKTsKKyAgICAgICAgICAgICAgICAgICAgdHJpTmR4IDw9ICh0cmkxID8gMSA6IDAp
OworICAgICAgICAgICAgICAgICAgICB0cmlOZHgrKykgeworICAgICAgICAgICAgICAgICAgICB2
YXIgdHJpV3ggPSB0cmlOZHggPyBkc3RXIC0gd3ggOiB3eDsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHRyaVd5ID0gdHJpTmR4ID8gZHN0SCAtIHd5IDogd3k7CisgICAgICAgICAgICAgICAgICAg
IHZhciB0cmlOeCA9IHRyaU5keCA/IDEuMCAtIG54IDogbng7CisgICAgICAgICAgICAgICAgICAg
IHZhciB0cmlOeSA9IHRyaU5keCA/IDEuMCAtIG55IDogbnk7CisKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGNvb3JkID0gWworICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB0cmlOeCwgdHJpTnkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwu
cHJvamVjdGVkVHJpSW50ZXJwb2xhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJp
VFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHRyaU54LCB0cmlOeQorICAgICAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9q
ZWN0ZWRUcmlJbnRlcnBvbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlSW3Ry
aU5keF0sIHRyaVdbdHJpTmR4XSwgdHJpTngsIHRyaU55CisgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIHZhciBjb29y
ZER4ID0gWworICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURl
cml2YXRlWCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlTW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55CisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3gs
IGRzdFcsIHRyaU55CisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmlSW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55
CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgICAgIHZhciBjb29yZER5ID0gWworICAgICAgICAgICAgICAgICAgICAgICAg
Z2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54CisgICAgICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRl
c3RVdGlsLnRyaURlcml2YXRlWSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlUW3Ry
aU5keF0sIHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54CisgICAgICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURl
cml2YXRlWSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlSW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxvZEJvdW5kcyA9
CisgICAgICAgICAgICAgICAgICAgICAgICB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlQ3Vi
ZUxvZEJvdW5kc0Zyb21EZXJpdmF0ZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29v
cmQsIGNvb3JkRHgsIGNvb3JkRHksIHNyYy5nZXRTaXplKCksIGxvZFByZWMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBsb2QgYm91
bmRzIGFjcm9zcyBsb2RPZmZzZXRzIHJhbmdlLgorICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBsb2RPZmZzTmR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZE9mZnNOZHggPCBs
b2RPZmZzZXRzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZE9mZnNOZHgrKykg
eworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHd4byA9IHRyaVd4ICsgbG9kT2Zmc2V0c1ts
b2RPZmZzTmR4XVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3eW8gPSB0cmlXeSAr
IGxvZE9mZnNldHNbbG9kT2Zmc05keF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bnhvID0gd3hvIC8gZHN0VzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBueW8gPSB3eW8g
LyBkc3RIOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29vcmRPID0gWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRl
cnBvbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpU1t0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIG54bywgbnlvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJp
SW50ZXJwb2xhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaVRbdHJpTmR4
XSwgdHJpV1t0cmlOZHhdLCBueG8sIG55bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2plY3Rl
ZFRyaUludGVycG9sYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlSW3Ry
aU5keF0sIHRyaVdbdHJpTmR4XSwgbnhvLCBueW8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGNvb3JkRHhvID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVU
ZXN0VXRpbC50cmlEZXJpdmF0ZVgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
aVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eG8sIGRzdFcsIG55bworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRl
c3RVdGlsLnRyaURlcml2YXRlWCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJp
VFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd4bywgZHN0VywgbnlvCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwudHJpRGVyaXZhdGVYKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlS
W3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3hvLCBkc3RXLCBueW8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGNvb3JkRHlvID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
c1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eW8sIGRzdEgsIG54bworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xz
VGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd5bywgZHN0SCwgbnhvCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNU
ZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmlSW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGxvZE8gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRjdVRleExvb2t1cFZlcmlmaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVDdWJlTG9kQm91bmRzRnJvbURlcml2YXRlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29vcmRPLCBjb29yZER4bywgY29vcmREeW8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyYy5nZXRTaXplKCksIGxvZFByZWMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOworCisgICAgICAgICAgICAgICAgICAgICAgICBsb2RCb3VuZHNbMF0gPSBNYXRoLm1p
bihsb2RCb3VuZHNbMF0sIGxvZE9bMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgbG9kQm91
bmRzWzFdID0gTWF0aC5tYXgobG9kQm91bmRzWzFdLCBsb2RPWzFdKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHZhciBjbGFtcGVkTG9kID0gdGN1VGV4TG9v
a3VwVmVyaWZpZXIuY2xhbXBMb2RCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBkZU1h
dGguYWRkU2NhbGFyKGxvZEJvdW5kcywgbG9kQmlhcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICBbc2FtcGxlUGFyYW1zLm1pbkxvZCwgc2FtcGxlUGFyYW1zLm1heExvZF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2RQcmVjCisgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRjdVRleExvb2t1cFZlcmlmaWVyLgorICAgICAgICAgICAgICAgICAg
ICAgICAgaXNMb29rdXBSZXN1bHRWYWxpZF9UZXh0dXJlQ3ViZVZpZXcoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3JjLCBzYW1wbGVQYXJhbXMuc2FtcGxlciwgbG9va3VwUHJlYywgY29v
cmQsIGNsYW1wZWRMb2QsIHJlc1BpeAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT2sgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzT2spIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHJlZCA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgICAgICAgICAgICAg
ICAgIGVycm9yTWFzay5zZXRQaXhlbChuZXcgdGN1UkdCQS5SR0JBKHJlZCkudG9WZWMoKSwgcHgs
IHB5KTsKKyAgICAgICAgICAgICAgICAgICAgbnVtRmFpbGVkICs9IDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bUZh
aWxlZDsKK307CisKKy8qKgorICogQHBhcmFtIHt0Y3VUZXh0dXJlLkNvbnN0UGl4ZWxCdWZmZXJB
Y2Nlc3N9IHJlc3VsdAorICogQHBhcmFtIHt0Y3VUZXh0dXJlLlRleHR1cmUyREFycmF5Vmlld30g
c3JjCisgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRleENvb3JkCisgKiBAcGFyYW0ge2dsc1Rl
eHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJhbXN9IHNhbXBsZVBhcmFtcworICogQHBhcmFtIHt0
Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQcmVjaXNpb259IGxvb2t1cFByZWMKKyAqIEBwYXJh
bSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9kUHJlY2lzaW9ufSBsb2RQcmVjCisgKiBAcGFyYW0g
e3RjdVBpeGVsRm9ybWF0LlBpeGVsRm9ybWF0fSBwaXhlbEZvcm1hdAorICogQHJldHVybiB7Ym9v
bGVhbn0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLnZlcmlmeVRleHR1cmUyREFycmF5UmVzdWx0
ID0gZnVuY3Rpb24ocmVzdWx0LCBzcmMsIHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIGxvb2t1cFBy
ZWMsIGxvZFByZWMsIHBpeGVsRm9ybWF0KSB7CisgICAgREVfQVNTRVJUKGRlTWF0aC5lcXVhbChn
bHNUZXh0dXJlVGVzdFV0aWwuZ2V0Q29tcGFyZU1hc2socGl4ZWxGb3JtYXQpLCBsb29rdXBQcmVj
LmNvbG9yTWFzaykpOworICAgIC8qKiBAdHlwZSB7dGN1U3VyZmFjZS5TdXJmYWNlfSAqLyB2YXIg
cmVmZXJlbmNlID0gbmV3IHRjdVN1cmZhY2UuU3VyZmFjZShyZXN1bHQuZ2V0V2lkdGgoKSwgcmVz
dWx0LmdldEhlaWdodCgpKTsKKyAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8g
dmFyIGVycm9yTWFzayA9IG5ldyB0Y3VTdXJmYWNlLlN1cmZhY2UocmVzdWx0LmdldFdpZHRoKCks
IHJlc3VsdC5nZXRIZWlnaHQoKSk7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1G
YWlsZWRQaXhlbHM7CisKKyAgICAvKiogQHR5cGUge2dsc1RleHR1cmVUZXN0VXRpbC5TdXJmYWNl
QWNjZXNzfSAqLyB2YXIgc3VyZmFjZSA9IG5ldyBnbHNUZXh0dXJlVGVzdFV0aWwuU3VyZmFjZUFj
Y2VzcyhyZWZlcmVuY2UsIHBpeGVsRm9ybWF0KTsKKworICAgIGdsc1RleHR1cmVUZXN0VXRpbC5z
YW1wbGVUZXh0dXJlMkRBcnJheShzdXJmYWNlLCBzcmMsIHRleENvb3JkLCBzYW1wbGVQYXJhbXMp
OworICAgIG51bUZhaWxlZFBpeGVscyA9IGdsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVy
ZUxvb2t1cERpZmYyREFycmF5KHJlc3VsdCwgcmVmZXJlbmNlLmdldEFjY2VzcygpLCBlcnJvck1h
c2suZ2V0QWNjZXNzKCksIHNyYywgdGV4Q29vcmQsIHNhbXBsZVBhcmFtcywgbG9va3VwUHJlYywg
bG9kUHJlYy8qLCB0ZXN0Q3R4LmdldFdhdGNoRG9nKCkqLyk7CisKKyAgICBpZiAobnVtRmFpbGVk
UGl4ZWxzID4gMCkKKyAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmRpc3BsYXlJbWFnZXMocmVzdWx0
LCByZWZlcmVuY2UuZ2V0QWNjZXNzKCksIGVycm9yTWFzay5nZXRBY2Nlc3MoKSk7CisKKyAgICBy
ZXR1cm4gbnVtRmFpbGVkUGl4ZWxzID09IDA7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4
dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZWZlcmVuY2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVy
ZS5QaXhlbEJ1ZmZlckFjY2Vzc30gZXJyb3JNYXNrCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4
dHVyZTJEQXJyYXlWaWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQK
KyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30gc2FtcGxlUGFy
YW1zCisgKiBAcGFyYW0ge3RjdVRleENvbXBhcmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9u
fSBjb21wYXJlUHJlYworICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNp
b259IGxvZFByZWMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gbm9uU2hhZG93VGhyZXNob2xk
CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4
dHVyZUNvbXBhcmVEaWZmMkRBcnJheSA9IGZ1bmN0aW9uKHJlc3VsdCwgcmVmZXJlbmNlLCBlcnJv
ck1hc2ssIHNyYywgdGV4Q29vcmQsIHNhbXBsZVBhcmFtcywgY29tcGFyZVByZWMsIGxvZFByZWMs
IG5vblNoYWRvd1RocmVzaG9sZCkgeworICAgIERFX0FTU0VSVChyZXN1bHQuZ2V0V2lkdGgoKSA9
PSByZWZlcmVuY2UuZ2V0V2lkdGgoKSAmJiByZXN1bHQuZ2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNl
LmdldEhlaWdodCgpKTsKKyAgICBERV9BU1NFUlQocmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JN
YXNrLmdldFdpZHRoKCkgJiYgcmVzdWx0LmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRIZWln
aHQoKSk7CisKKyAgICB2YXIgc3EgPSBbdGV4Q29vcmRbMCArIDBdLCB0ZXhDb29yZFszICsgMF0s
IHRleENvb3JkWzYgKyAwXSwgdGV4Q29vcmRbOSArIDBdXTsKKyAgICB2YXIgdHEgPSBbdGV4Q29v
cmRbMCArIDFdLCB0ZXhDb29yZFszICsgMV0sIHRleENvb3JkWzYgKyAxXSwgdGV4Q29vcmRbOSAr
IDFdXTsKKyAgICB2YXIgcnEgPSBbdGV4Q29vcmRbMCArIDJdLCB0ZXhDb29yZFszICsgMl0sIHRl
eENvb3JkWzYgKyAyXSwgdGV4Q29vcmRbOSArIDJdXTsKKworICAgIHZhciBkc3RTaXplID0gW3Jl
c3VsdC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0SGVpZ2h0KCldOworICAgIHZhciBkc3RXID0gZHN0
U2l6ZVswXTsKKyAgICB2YXIgZHN0SCA9IGRzdFNpemVbMV07CisgICAgdmFyIHNyY1NpemUgPSBb
c3JjLmdldFdpZHRoKCksIHNyYy5nZXRIZWlnaHQoKV07CisKKyAgICAvLyBDb29yZGluYXRlcyBh
bmQgbG9kIHBlciB0cmlhbmdsZS4KKyAgICB2YXIgdHJpUyA9IFtkZU1hdGguc3dpenpsZShzcSwg
WzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUoc3EsIFszLCAyLCAxXSldOworICAgIHZhciB0cmlU
ID0gW2RlTWF0aC5zd2l6emxlKHRxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZSh0cSwgWzMs
IDIsIDFdKV07CisgICAgdmFyIHRyaVIgPSBbZGVNYXRoLnN3aXp6bGUocnEsIFswLCAxLCAyXSks
IGRlTWF0aC5zd2l6emxlKHJxLCBbMywgMiwgMV0pXTsKKyAgICB2YXIgdHJpVyA9IFtkZU1hdGgu
c3dpenpsZShzYW1wbGVQYXJhbXMudywgWzAsIDEsIDJdKSwgZGVNYXRoLnN3aXp6bGUoc2FtcGxl
UGFyYW1zLncsIFszLCAyLCAxXSldOworCisgICAgdmFyIGxvZEJpYXMgPSBzYW1wbGVQYXJhbXMu
ZmxhZ3MudXNlX2JpYXMgPyBbc2FtcGxlUGFyYW1zLmJpYXMsIHNhbXBsZVBhcmFtcy5iaWFzXSA6
IFswLCAwXTsKKyAgICB2YXIgbnVtRmFpbGVkID0gMDsKKworICAgIHZhciBsb2RPZmZzZXRzID0g
WworICAgICAgICBbLTEsIDBdLAorICAgICAgICBbMSwgMF0sCisgICAgICAgIFswLCAtMV0sCisg
ICAgICAgIFswLCAxXQorICAgIF07CisKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHZhciBncmVlbiA9IFswLCAyNTUsIDAsIDI1NV07CisgICAgZXJyb3JNYXNrLmNsZWFyKGdyZWVu
KTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHJlZCA9IFtdOworICAg
IGZvciAodmFyIHB5ID0gMDsgcHkgPCByZXN1bHQuZ2V0SGVpZ2h0KCk7IHB5KyspIHsKKyAgICAg
ICAgZm9yICh2YXIgcHggPSAwOyBweCA8IHJlc3VsdC5nZXRXaWR0aCgpOyBweCsrKSB7CisgICAg
ICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIgcmVz
UGl4ID0gcmVzdWx0LmdldFBpeGVsKHB4LCBweSk7CisgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIgcmVmUGl4ID0gcmVmZXJlbmNlLmdldFBp
eGVsKHB4LCBweSk7CisKKyAgICAgICAgICAgIGlmICghZGVNYXRoLmJvb2xBbGwoZGVNYXRoLmxl
c3NUaGFuRXF1YWwoZGVNYXRoLmFic0RpZmYoZGVNYXRoLnN3aXp6bGUocmVmUGl4LCBbMSwgMiwg
M10pLCBkZU1hdGguc3dpenpsZShyZXNQaXgsIFsxLCAyLCAzXSkpLCBub25TaGFkb3dUaHJlc2hv
bGQpKSkgeworICAgICAgICAgICAgICAgIHJlZCA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgICAg
ICAgICAgICAgZXJyb3JNYXNrLnNldFBpeGVsKHJlZCwgcHgsIHB5KTsKKyAgICAgICAgICAgICAg
ICBudW1GYWlsZWQgKz0gMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKHJlc1BpeFswXSAhPSByZWZQaXhbMF0pIHsKKyAgICAgICAg
ICAgICAgICB2YXIgd3ggPSBweCArIDAuNTsKKyAgICAgICAgICAgICAgICB2YXIgd3kgPSBweSAr
IDAuNTsKKyAgICAgICAgICAgICAgICB2YXIgbnggPSB3eCAvIGRzdFc7CisgICAgICAgICAgICAg
ICAgdmFyIG55ID0gd3kgLyBkc3RIOworCisgICAgICAgICAgICAgICAgdmFyIHRyaU5keCA9IG54
ICsgbnkgPj0gMS4wID8gMSA6IDA7CisgICAgICAgICAgICAgICAgdmFyIHRyaVd4ID0gdHJpTmR4
ID8gZHN0VyAtIHd4IDogd3g7CisgICAgICAgICAgICAgICAgdmFyIHRyaVd5ID0gdHJpTmR4ID8g
ZHN0SCAtIHd5IDogd3k7CisgICAgICAgICAgICAgICAgdmFyIHRyaU54ID0gdHJpTmR4ID8gMS4w
IC0gbnggOiBueDsKKyAgICAgICAgICAgICAgICB2YXIgdHJpTnkgPSB0cmlOZHggPyAxLjAgLSBu
eSA6IG55OworCisgICAgICAgICAgICAgICAgdmFyIGNvb3JkID0gW2dsc1RleHR1cmVUZXN0VXRp
bC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgdHJp
TngsIHRyaU55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB0
cmlOeCwgdHJpTnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpUlt0cmlOZHhdLCB0cmlXW3RyaU5keF0s
IHRyaU54LCB0cmlOeSldOworICAgICAgICAgICAgICAgIHZhciBjb29yZER4ID0gZGVNYXRoLm11
bHRpcGx5KFtnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKHRyaVNbdHJpTmR4XSwgdHJp
V1t0cmlOZHhdLCB3eCwgZHN0VywgdHJpTnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0cmlOZHhdLCB0cmlXW3Ry
aU5keF0sIHd4LCBkc3RXLCB0cmlOeSldLCBzcmNTaXplKTsKKyAgICAgICAgICAgICAgICB2YXIg
Y29vcmREeSA9IGRlTWF0aC5tdWx0aXBseShbZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRl
WSh0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRy
aVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eSwgZHN0SCwgdHJpTngpXSwgc3JjU2l6ZSk7CisK
KyAgICAgICAgICAgICAgICB2YXIgbG9kQm91bmRzID0gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29t
cHV0ZUxvZEJvdW5kc0Zyb21EZXJpdmF0ZXNVVihjb29yZER4WzBdLCBjb29yZER4WzFdLCBjb29y
ZER5WzBdLCBjb29yZER5WzFdLCBsb2RQcmVjKTsKKworICAgICAgICAgICAgICAgIC8vIENvbXB1
dGUgbG9kIGJvdW5kcyBhY3Jvc3MgbG9kT2Zmc2V0cyByYW5nZS4KKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBsb2RPZmZzTmR4ID0gMDsgbG9kT2Zmc05keCA8IGxvZE9mZnNldHMubGVuZ3RoOyBs
b2RPZmZzTmR4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHd4byA9IHRyaVd4ICsgbG9k
T2Zmc2V0c1tsb2RPZmZzTmR4XVswXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHd5byA9IHRy
aVd5ICsgbG9kT2Zmc2V0c1tsb2RPZmZzTmR4XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IG54byA9IHd4byAvIGRzdFc7CisgICAgICAgICAgICAgICAgICAgIHZhciBueW8gPSB3eW8gLyBk
c3RIOworCisgICAgICAgICAgICAgICAgICAgIHZhciBjb29yZE8gPSBbZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCBu
eG8sIG55byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRl
c3RVdGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhd
LCBueG8sIG55byldOworICAgICAgICAgICAgICAgICAgICB2YXIgY29vcmREeG8gPSBkZU1hdGgu
bXVsdGlwbHkoW2dsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpU1t0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIHd4bywgZHN0VywgbnlvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKHRy
aVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eG8sIGRzdFcsIG55byldLCBzcmNTaXplKTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGNvb3JkRHlvID0gZGVNYXRoLm11bHRpcGx5KFtnbHNUZXh0
dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eW8s
IGRzdEgsIG54byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlUW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3lvLCBkc3RILCBueG8pXSwgc3JjU2l6ZSk7CisgICAgICAgICAgICAgICAgICAg
IHZhciBsb2RPID0gdGN1VGV4TG9va3VwVmVyaWZpZXIuY29tcHV0ZUxvZEJvdW5kc0Zyb21EZXJp
dmF0ZXNVVihjb29yZER4b1swXSwgY29vcmREeG9bMV0sIGNvb3JkRHlvWzBdLCBjb29yZER5b1sx
XSwgbG9kUHJlYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbG9kQm91bmRzWzBdID0gTWF0aC5t
aW4obG9kQm91bmRzWzBdLCBsb2RPWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgbG9kQm91bmRz
WzFdID0gTWF0aC5tYXgobG9kQm91bmRzWzFdLCBsb2RPWzFdKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB2YXIgY2xhbXBlZExvZCA9IHRjdVRleExvb2t1cFZlcmlmaWVy
LmNsYW1wTG9kQm91bmRzKGRlTWF0aC5hZGQobG9kQm91bmRzLCBsb2RCaWFzKSwgW3NhbXBsZVBh
cmFtcy5taW5Mb2QsIHNhbXBsZVBhcmFtcy5tYXhMb2RdLCBsb2RQcmVjKTsKKyAgICAgICAgICAg
ICAgICB2YXIgaXNPayA9IHRjdVRleENvbXBhcmVWZXJpZmllci5pc1RleENvbXBhcmVSZXN1bHRW
YWxpZDJEQXJyYXkoc3JjLCBzYW1wbGVQYXJhbXMuc2FtcGxlciwgY29tcGFyZVByZWMsIGNvb3Jk
LCBjbGFtcGVkTG9kLCBzYW1wbGVQYXJhbXMucmVmLCByZXNQaXhbMF0pOworCisgICAgICAgICAg
ICAgICAgaWYgKCFpc09rKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZCA9IFsyNTUsIDAsIDAs
IDI1NV07CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhlbChyZWQsIHB4LCBw
eSk7CisgICAgICAgICAgICAgICAgICAgIG51bUZhaWxlZCArPSAxOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBudW1GYWls
ZWQ7Cit9OworCisvKioKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNj
ZXNzfSByZXN1bHQKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNz
fSByZWZlcmVuY2UKKyAqIEBwYXJhbSB7dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gZXJy
b3JNYXNrCisgKiBAcGFyYW0ge3RjdVRleHR1cmUuVGV4dHVyZUN1YmVWaWV3fSBzcmMKKyAqIEBw
YXJhbSB7QXJyYXk8bnVtYmVyPn0gdGV4Q29vcmQKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RV
dGlsLlJlZmVyZW5jZVBhcmFtc30gc2FtcGxlUGFyYW1zCisgKiBAcGFyYW0ge3RjdVRleENvbXBh
cmVWZXJpZmllci5UZXhDb21wYXJlUHJlY2lzaW9ufSBjb21wYXJlUHJlYworICogQHBhcmFtIHt0
Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVjaXNpb259IGxvZFByZWMKKyAqIEBwYXJhbSB7QXJy
YXk8bnVtYmVyPn0gbm9uU2hhZG93VGhyZXNob2xkCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8K
K2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVyZUNvbXBhcmVEaWZmQ3ViZSA9IGZ1bmN0
aW9uKHJlc3VsdCwgcmVmZXJlbmNlLCBlcnJvck1hc2ssIHNyYywgdGV4Q29vcmQsIHNhbXBsZVBh
cmFtcywgY29tcGFyZVByZWMsIGxvZFByZWMsIG5vblNoYWRvd1RocmVzaG9sZCkgeworICAgIERF
X0FTU0VSVChyZXN1bHQuZ2V0V2lkdGgoKSA9PSByZWZlcmVuY2UuZ2V0V2lkdGgoKSAmJiByZXN1
bHQuZ2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNlLmdldEhlaWdodCgpKTsKKyAgICBERV9BU1NFUlQo
cmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JNYXNrLmdldFdpZHRoKCkgJiYgcmVzdWx0LmdldEhl
aWdodCgpID09IGVycm9yTWFzay5nZXRIZWlnaHQoKSk7CisKKyAgICB2YXIgc3EgPSBbdGV4Q29v
cmRbMCArIDBdLCB0ZXhDb29yZFszICsgMF0sIHRleENvb3JkWzYgKyAwXSwgdGV4Q29vcmRbOSAr
IDBdXTsKKyAgICB2YXIgdHEgPSBbdGV4Q29vcmRbMCArIDFdLCB0ZXhDb29yZFszICsgMV0sIHRl
eENvb3JkWzYgKyAxXSwgdGV4Q29vcmRbOSArIDFdXTsKKyAgICB2YXIgcnEgPSBbdGV4Q29vcmRb
MCArIDJdLCB0ZXhDb29yZFszICsgMl0sIHRleENvb3JkWzYgKyAyXSwgdGV4Q29vcmRbOSArIDJd
XTsKKworICAgIHZhciBkc3RTaXplID0gW3Jlc3VsdC5nZXRXaWR0aCgpLCByZXN1bHQuZ2V0SGVp
Z2h0KCldOworICAgIHZhciBkc3RXID0gZHN0U2l6ZVswXTsKKyAgICB2YXIgZHN0SCA9IGRzdFNp
emVbMV07CisgICAgdmFyIHNyY1NpemUgPSBzcmMuZ2V0U2l6ZSgpOworCisgICAgLy8gQ29vcmRp
bmF0ZXMgcGVyIHRyaWFuZ2xlLgorICAgIHZhciB0cmlTID0gW2RlTWF0aC5zd2l6emxlKHNxLCBb
MCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZShzcSwgWzMsIDIsIDFdKV07CisgICAgdmFyIHRyaVQg
PSBbZGVNYXRoLnN3aXp6bGUodHEsIFswLCAxLCAyXSksIGRlTWF0aC5zd2l6emxlKHRxLCBbMywg
MiwgMV0pXTsKKyAgICB2YXIgdHJpUiA9IFtkZU1hdGguc3dpenpsZShycSwgWzAsIDEsIDJdKSwg
ZGVNYXRoLnN3aXp6bGUocnEsIFszLCAyLCAxXSldOworICAgIHZhciB0cmlXID0gW2RlTWF0aC5z
d2l6emxlKHNhbXBsZVBhcmFtcy53LCBbMCwgMSwgMl0pLCBkZU1hdGguc3dpenpsZShzYW1wbGVQ
YXJhbXMudywgWzMsIDIsIDFdKV07CisKKyAgICB2YXIgbG9kQmlhcyA9IHNhbXBsZVBhcmFtcy5m
bGFncy51c2VfYmlhcyA/IFtzYW1wbGVQYXJhbXMuYmlhcywgc2FtcGxlUGFyYW1zLmJpYXNdIDog
WzAsIDBdOworICAgIHZhciBudW1GYWlsZWQgPSAwOworCisgICAgdmFyIGxvZE9mZnNldHMgPSBb
CisgICAgICAgIFstMSwgMF0sCisgICAgICAgIFsxLCAwXSwKKyAgICAgICAgWzAsIC0xXSwKKyAg
ICAgICAgWzAsIDFdCisgICAgXTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGdyZWVuID0gWzAsIDI1NSwgMCwgMjU1XTsKKyAgICBlcnJvck1hc2suY2xlYXIobmV3IHRj
dVJHQkEuUkdCQShncmVlbikudG9WZWMoKSk7CisKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJl
cj59ICovIHZhciByZWQgPSBbXTsKKyAgICBmb3IgKHZhciBweSA9IDA7IHB5IDwgcmVzdWx0Lmdl
dEhlaWdodCgpOyBweSsrKSB7CisgICAgICAgIGZvciAodmFyIHB4ID0gMDsgcHggPCByZXN1bHQu
Z2V0V2lkdGgoKTsgcHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLworICAgICAgICAgICAgdmFyIHJlc1BpeCA9IHJlc3VsdC5nZXRQaXhlbChweCwgcHkpOwor
ICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgdmFy
IHJlZlBpeCA9IHJlZmVyZW5jZS5nZXRQaXhlbChweCwgcHkpOworCisgICAgICAgICAgICBpZiAo
IWRlTWF0aC5ib29sQWxsKGRlTWF0aC5sZXNzVGhhbkVxdWFsKGRlTWF0aC5hYnNEaWZmKGRlTWF0
aC5zd2l6emxlKHJlc1BpeCwgWzEsIDIsIDNdKSwgZGVNYXRoLnN3aXp6bGUocmVmUGl4LCBbMSwg
MiwgM10pKSwgbm9uU2hhZG93VGhyZXNob2xkKSkpIHsKKyAgICAgICAgICAgICAgICByZWQgPSBb
MjU1LCAwLCAwLCAyNTVdOworICAgICAgICAgICAgICAgIGVycm9yTWFzay5zZXRQaXhlbChyZWQs
IHB4LCBweSk7CisgICAgICAgICAgICAgICAgbnVtRmFpbGVkICs9IDE7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXNQaXhbMF0g
IT0gcmVmUGl4WzBdKSB7CisgICAgICAgICAgICAgICAgdmFyIHd4ID0gcHggKyAwLjU7CisgICAg
ICAgICAgICAgICAgdmFyIHd5ID0gcHkgKyAwLjU7CisgICAgICAgICAgICAgICAgdmFyIG54ID0g
d3ggLyBkc3RXOworICAgICAgICAgICAgICAgIHZhciBueSA9IHd5IC8gZHN0SDsKKworICAgICAg
ICAgICAgICAgIHZhciB0cmlOZHggPSBueCArIG55ID49IDEuMCA/IDEgOiAwOworICAgICAgICAg
ICAgICAgIHZhciB0cmlXeCA9IHRyaU5keCA/IGRzdFcgLSB3eCA6IHd4OworICAgICAgICAgICAg
ICAgIHZhciB0cmlXeSA9IHRyaU5keCA/IGRzdEggLSB3eSA6IHd5OworICAgICAgICAgICAgICAg
IHZhciB0cmlOeCA9IHRyaU5keCA/IDEuMCAtIG54IDogbng7CisgICAgICAgICAgICAgICAgdmFy
IHRyaU55ID0gdHJpTmR4ID8gMS4wIC0gbnkgOiBueTsKKworICAgICAgICAgICAgICAgIHZhciBj
b29yZCA9IFtnbHNUZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpU1t0
cmlOZHhdLCB0cmlXW3RyaU5keF0sIHRyaU54LCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlU
W3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgdHJpTngsIHRyaU55KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKHRy
aVJbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB0cmlOeCwgdHJpTnkpXTsKKyAgICAgICAgICAgICAg
ICB2YXIgY29vcmREeCA9IFtnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKHRyaVNbdHJp
TmR4XSwgdHJpV1t0cmlOZHhdLCB3eCwgZHN0VywgdHJpTnkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0cmlOZHhd
LCB0cmlXW3RyaU5keF0sIHd4LCBkc3RXLCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlSW3RyaU5keF0sIHRy
aVdbdHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55KV07CisgICAgICAgICAgICAgICAgdmFyIGNvb3Jk
RHkgPSBbZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlTW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlO
ZHhdLCB3eSwgZHN0SCwgdHJpTngpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
c1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVkodHJpUlt0cmlOZHhdLCB0cmlXW3RyaU5keF0s
IHd5LCBkc3RILCB0cmlOeCldOworCisgICAgICAgICAgICAgICAgdmFyIGxvZEJvdW5kcyA9IHRj
dVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVDdWJlTG9kQm91bmRzRnJvbURlcml2YXRlcyhjb29y
ZCwgY29vcmREeCwgY29vcmREeSwgc3JjU2l6ZSwgbG9kUHJlYyk7CisKKyAgICAgICAgICAgICAg
ICAvLyBDb21wdXRlIGxvZCBib3VuZHMgYWNyb3NzIGxvZE9mZnNldHMgcmFuZ2UuCisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgbG9kT2Zmc05keCA9IDA7IGxvZE9mZnNOZHggPCBsb2RPZmZzZXRz
Lmxlbmd0aDsgbG9kT2Zmc05keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB3eG8gPSB0
cmlXeCArIGxvZE9mZnNldHNbbG9kT2Zmc05keF1bMF07CisgICAgICAgICAgICAgICAgICAgIHZh
ciB3eW8gPSB0cmlXeSArIGxvZE9mZnNldHNbbG9kT2Zmc05keF1bMV07CisgICAgICAgICAgICAg
ICAgICAgIHZhciBueG8gPSB3eG8gLyBkc3RXOworICAgICAgICAgICAgICAgICAgICB2YXIgbnlv
ID0gd3lvIC8gZHN0SDsKKworICAgICAgICAgICAgICAgICAgICB2YXIgY29vcmRPID0gW2dsc1Rl
eHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlTW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgbnhvLCBueW8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
c1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlUW3RyaU5keF0sIHRy
aVdbdHJpTmR4XSwgbnhvLCBueW8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlSW3RyaU5keF0s
IHRyaVdbdHJpTmR4XSwgbnhvLCBueW8pXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvb3Jk
RHhvID0gW2dsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpU1t0cmlOZHhdLCB0cmlX
W3RyaU5keF0sIHd4bywgZHN0VywgbnlvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0cmlOZHhdLCB0cmlX
W3RyaU5keF0sIHd4bywgZHN0VywgbnlvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpUlt0cmlOZHhdLCB0cmlX
W3RyaU5keF0sIHd4bywgZHN0VywgbnlvKV07CisgICAgICAgICAgICAgICAgICAgIHZhciBjb29y
ZER5byA9IFtnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVNbdHJpTmR4XSwgdHJp
V1t0cmlOZHhdLCB3eW8sIGRzdEgsIG54byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVRbdHJpTmR4XSwgdHJp
V1t0cmlOZHhdLCB3eW8sIGRzdEgsIG54byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVJbdHJpTmR4XSwgdHJp
V1t0cmlOZHhdLCB3eW8sIGRzdEgsIG54byldOworICAgICAgICAgICAgICAgICAgICB2YXIgbG9k
TyA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmNvbXB1dGVDdWJlTG9kQm91bmRzRnJvbURlcml2YXRl
cyhjb29yZE8sIGNvb3JkRHhvLCBjb29yZER5bywgc3JjU2l6ZSwgbG9kUHJlYyk7CisKKyAgICAg
ICAgICAgICAgICAgICAgbG9kQm91bmRzWzBdID0gTWF0aC5taW4obG9kQm91bmRzWzBdLCBsb2RP
WzBdKTsKKyAgICAgICAgICAgICAgICAgICAgbG9kQm91bmRzWzFdID0gTWF0aC5tYXgobG9kQm91
bmRzWzFdLCBsb2RPWzFdKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2
YXIgY2xhbXBlZExvZCA9IHRjdVRleExvb2t1cFZlcmlmaWVyLmNsYW1wTG9kQm91bmRzKGRlTWF0
aC5hZGQobG9kQm91bmRzLCBsb2RCaWFzKSwgW3NhbXBsZVBhcmFtcy5taW5Mb2QsIHNhbXBsZVBh
cmFtcy5tYXhMb2RdLCBsb2RQcmVjKTsKKyAgICAgICAgICAgICAgICB2YXIgaXNPayA9IHRjdVRl
eENvbXBhcmVWZXJpZmllci5pc1RleENvbXBhcmVSZXN1bHRWYWxpZEN1YmUoc3JjLCBzYW1wbGVQ
YXJhbXMuc2FtcGxlciwgY29tcGFyZVByZWMsIGNvb3JkLCBjbGFtcGVkTG9kLCBzYW1wbGVQYXJh
bXMucmVmLCByZXNQaXhbMF0pOworCisgICAgICAgICAgICAgICAgaWYgKCFpc09rKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJlZCA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgICAgICAgICAgICAg
ICAgIGVycm9yTWFzay5zZXRQaXhlbChyZWQsIHB4LCBweSk7CisgICAgICAgICAgICAgICAgICAg
IG51bUZhaWxlZCArPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBudW1GYWlsZWQ7Cit9OworCisvKioKKyAqIEBwYXJh
bSB7QXJyYXk8bnVtYmVyPn0gcworICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB3CisgKiBAcGFy
YW0ge251bWJlcn0gbngKKyAqIEBwYXJhbSB7bnVtYmVyfSBueQorICogQHJldHVybiB7bnVtYmVy
fQorICovCitnbHNUZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUgPSBmdW5j
dGlvbihzLCB3LCBueCwgbnkpIHsKKyAgICByZXR1cm4gKHNbMF0gKiAoMS4wIC0gbnggLSBueSkg
LyB3WzBdICsgc1sxXSAqIG55IC8gd1sxXSArIHNbMl0gKiBueCAvIHdbMl0pIC8gKCgxLjAgLSBu
eCAtIG55KSAvIHdbMF0gKyBueSAvIHdbMV0gKyBueCAvIHdbMl0pOworfTsKKworLyoqCisgKiBA
cGFyYW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVzdWx0CisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuQ29uc3RQaXhlbEJ1ZmZlckFjY2Vzc30gcmVmZXJlbmNlCisgKiBAcGFy
YW0ge3RjdVRleHR1cmUuUGl4ZWxCdWZmZXJBY2Nlc3N9IGVycm9yTWFzaworICogQHBhcmFtIHt0
Y3VUZXh0dXJlLlRleHR1cmUyRFZpZXd9IGJhc2VWaWV3CisgKiBAcGFyYW0ge0FycmF5PG51bWJl
cj59IHRleENvb3JkCisgKiBAcGFyYW0ge2dsc1RleHR1cmVUZXN0VXRpbC5SZWZlcmVuY2VQYXJh
bXN9IHNhbXBsZVBhcmFtcworICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb29rdXBQ
cmVjaXNpb259IGxvb2t1cFByZWMKKyAqIEBwYXJhbSB7dGN1VGV4TG9va3VwVmVyaWZpZXIuTG9k
UHJlY2lzaW9ufSBsb2RQcmVjCisgKiBAcGFyYW0geyo9fSB3YXRjaERvZyAtIFRPRE86ID8/Cisg
KiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1RleHR1cmVUZXN0VXRpbC5jb21wdXRlVGV4dHVy
ZUxvb2t1cERpZmYyRCA9IGZ1bmN0aW9uKHJlc3VsdCwgcmVmZXJlbmNlLCBlcnJvck1hc2ssIGJh
c2VWaWV3LCB0ZXhDb29yZCwgc2FtcGxlUGFyYW1zLCBsb29rdXBQcmVjLCBsb2RQcmVjLCB3YXRj
aERvZykgeworICAgIERFX0FTU0VSVChyZXN1bHQuZ2V0V2lkdGgoKSA9PSByZWZlcmVuY2UuZ2V0
V2lkdGgoKSAmJiByZXN1bHQuZ2V0SGVpZ2h0KCkgPT0gcmVmZXJlbmNlLmdldEhlaWdodCgpKTsK
KyAgICBERV9BU1NFUlQocmVzdWx0LmdldFdpZHRoKCkgPT0gZXJyb3JNYXNrLmdldFdpZHRoKCkg
JiYgcmVzdWx0LmdldEhlaWdodCgpID09IGVycm9yTWFzay5nZXRIZWlnaHQoKSk7CisKKyAgICAv
KiogQHR5cGUge3RjdVRleHR1cmUuVGV4dHVyZTJEVmlld30gKi8gdmFyIHNyYyA9IGJhc2VWaWV3
LmdldFN1YlZpZXcoc2FtcGxlUGFyYW1zLmJhc2VMZXZlbCwgc2FtcGxlUGFyYW1zLm1heExldmVs
KTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNxID0gW3RleENvb3Jk
WzAgKyAwXSwgdGV4Q29vcmRbMiArIDBdLCB0ZXhDb29yZFs0ICsgMF0sIHRleENvb3JkWzYgKyAw
XV07CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdHEgPSBbdGV4Q29vcmRb
MCArIDFdLCB0ZXhDb29yZFsyICsgMV0sIHRleENvb3JkWzQgKyAxXSwgdGV4Q29vcmRbNiArIDFd
XTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGRzdFNpemUgPSBbcmVz
dWx0LmdldFdpZHRoKCksIHJlc3VsdC5nZXRIZWlnaHQoKV07CisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBkc3RXID0gZHN0U2l6ZVswXTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGRzdEggPSBkc3RTaXplWzFdOworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIHNyY1NpemUgPSBbc3JjLmdldFdpZHRoKCksIHNyYy5nZXRIZWlnaHQoKV07CisKKyAgICAv
LyBDb29yZGluYXRlcyBhbmQgbG9kIHBlciB0cmlhbmdsZS4KKyAgICAvKiogQHR5cGUge0FycmF5
PEFycmF5PG51bWJlcj4+fSAqLyB2YXIgdHJpUyA9IFtkZU1hdGguc3dpenpsZShzcSwgWzAsIDEs
IDJdKSwgZGVNYXRoLnN3aXp6bGUoc3EsIFszLCAyLCAxXSldOworICAgIC8qKiBAdHlwZSB7QXJy
YXk8QXJyYXk8bnVtYmVyPj59ICovIHZhciB0cmlUID0gW2RlTWF0aC5zd2l6emxlKHRxLCBbMCwg
MSwgMl0pLCBkZU1hdGguc3dpenpsZSh0cSwgWzMsIDIsIDFdKV07CisgICAgLyoqIEB0eXBlIHtB
cnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIHRyaVcgPSBbZGVNYXRoLnN3aXp6bGUoc2FtcGxl
UGFyYW1zLncsIFswLCAxLCAyXSksIGRlTWF0aC5zd2l6emxlKHNhbXBsZVBhcmFtcy53LCBbMywg
MiwgMV0pXTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGxvZEJpYXMg
PSBzYW1wbGVQYXJhbXMuZmxhZ3MudXNlX2JpYXMgPyBbc2FtcGxlUGFyYW1zLmJpYXMsIHNhbXBs
ZVBhcmFtcy5iaWFzXSA6IFswLjAsIDAuMF07CisKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG51bUZhaWxlZCA9IDA7CisKKyAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJlcj4+
fSAqLyB2YXIgbG9kT2Zmc2V0cyA9IFsKKyAgICAgICAgWy0xLCAwXSwKKyAgICAgICAgWzEsIDBd
LAorICAgICAgICBbMCwgLTFdLAorICAgICAgICBbMCwgMV0KKyAgICBdOworCisgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOworICAg
IGVycm9yTWFzay5jbGVhcihuZXcgdGN1UkdCQS5SR0JBKGdyZWVuKS50b1ZlYygpKTsKKworICAg
IGZvciAodmFyIHB5ID0gMDsgcHkgPCByZXN1bHQuZ2V0SGVpZ2h0KCk7IHB5KyspIHsKKyAgICAg
ICAgLy8gVWdseSBoYWNrLCB2YWxpZGF0aW9uIGNhbiB0YWtlIHdheSB0b28gbG9uZyBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIC8vIFRPRE86YXJlIHdlIGltcGxlbWVudGluZyBxcFdhdGNoRG9n
PyBza2lwcGluZyBpbiB0aGUgbWVhbnRpbWUKKyAgICAgICAgLy8gaWYgKHdhdGNoRG9nKQorICAg
ICAgICAvLyAgICAgcXBXYXRjaERvZ190b3VjaCh3YXRjaERvZyk7CisKKyAgICAgICAgZm9yICh2
YXIgcHggPSAwOyBweCA8IHJlc3VsdC5nZXRXaWR0aCgpOyBweCsrKSB7CisgICAgICAgICAgICAv
KiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAgICB2YXIgcmVzUGl4ID0gcmVz
dWx0LmdldFBpeGVsKHB4LCBweSk7CisgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwuZGVh
cHBseVNjYWxlQW5kQmlhcyhyZXNQaXgsIHNhbXBsZVBhcmFtcy5jb2xvclNjYWxlLCBzYW1wbGVQ
YXJhbXMuY29sb3JCaWFzKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8KKyAgICAgICAgICAgIHZhciByZWZQaXggPSByZWZlcmVuY2UuZ2V0UGl4ZWwocHgsIHB5KTsK
KyAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5kZWFwcGx5U2NhbGVBbmRCaWFzKHJlZlBp
eCwgc2FtcGxlUGFyYW1zLmNvbG9yU2NhbGUsIHNhbXBsZVBhcmFtcy5jb2xvckJpYXMpOworCisg
ICAgICAgICAgICAvLyBUcnkgY29tcGFyaXNvbiB0byBpZGVhbCByZWZlcmVuY2UgZmlyc3QsIGFu
ZCBpZiB0aGF0IGZhaWxzIHVzZSBzbG93ZXIgdmVyaWZpY2F0b3IuCisgICAgICAgICAgICBpZiAo
IWRlTWF0aC5ib29sQWxsKGRlTWF0aC5sZXNzVGhhbkVxdWFsKGRlTWF0aC5hYnNEaWZmKHJlc1Bp
eCwgcmVmUGl4KSwgbG9va3VwUHJlYy5jb2xvclRocmVzaG9sZCkpKSB7CisgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB3eCA9IHB4ICsgMC41OworICAgICAgICAgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgd3kgPSBweSArIDAuNTsKKyAgICAgICAgICAg
ICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG54ID0gd3ggLyBkc3RXOworICAgICAgICAg
ICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnkgPSB3eSAvIGRzdEg7CisKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU5keCA9IG54ICsgbnkgPj0g
MS4wID8gMSA6IDA7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0
cmlXeCA9IHRyaU5keCA/IGRzdFcgLSB3eCA6IHd4OworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgdHJpV3kgPSB0cmlOZHggPyBkc3RIIC0gd3kgOiB3eTsKKyAgICAg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU54ID0gdHJpTmR4ID8gMS4w
IC0gbnggOiBueDsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRy
aU55ID0gdHJpTmR4ID8gMS4wIC0gbnkgOiBueTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNvb3JkID0gWworICAgICAgICAgICAgICAgICAgICBn
bHNUZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIHRyaU54LCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlUW3RyaU5keF0sIHRyaVdbdHJp
TmR4XSwgdHJpTngsIHRyaU55KQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmREeCA9IGRlTWF0aC5tdWx0aXBs
eShbCisgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgo
dHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd4LCBkc3RXLCB0cmlOeSksCisgICAgICAgICAg
ICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0cmlOZHhdLCB0
cmlXW3RyaU5keF0sIHd4LCBkc3RXLCB0cmlOeSldLCBzcmNTaXplKTsKKyAgICAgICAgICAgICAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb29yZER5ID0gZGVNYXRoLm11bHRp
cGx5KFsKKyAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRl
WSh0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54KSwKKyAgICAgICAg
ICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlUW3RyaU5keF0s
IHRyaVdbdHJpTmR4XSwgd3ksIGRzdEgsIHRyaU54KV0sIHNyY1NpemUpOworCisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLworICAgICAgICAgICAgICAgIHZhciBs
b2RCb3VuZHMgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlTG9kQm91bmRzRnJvbURlcml2
YXRlc1VWKGNvb3JkRHhbMF0sIGNvb3JkRHhbMV0sIGNvb3JkRHlbMF0sIGNvb3JkRHlbMV0sIGxv
ZFByZWMpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBsb2QgYm91bmRzIGFjcm9zcyBs
b2RPZmZzZXRzIHJhbmdlLgorICAgICAgICAgICAgICAgIGZvciAodmFyIGxvZE9mZnNOZHggPSAw
OyBsb2RPZmZzTmR4IDwgbG9kT2Zmc2V0cy5sZW5ndGg7IGxvZE9mZnNOZHgrKykgeworICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHd4byA9IHRyaVd4ICsgbG9k
T2Zmc2V0c1tsb2RPZmZzTmR4XVswXTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB3eW8gPSB0cmlXeSArIGxvZE9mZnNldHNbbG9kT2Zmc05keF1bMV07Cisg
ICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnhvID0gd3hvIC8g
ZHN0VzsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBueW8g
PSB3eW8gLyBkc3RIOworCisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNvb3JkTyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1
cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlTW3RyaU5keF0sIHRyaVdbdHJp
TmR4XSwgbnhvLCBueW8pLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RV
dGlsLnByb2plY3RlZFRyaUludGVycG9sYXRlKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCBu
eG8sIG55byldOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIHZhciBjb29yZER4byA9IGRlTWF0aC5tdWx0aXBseShbCisgICAgICAgICAgICAgICAgICAg
ICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKHRyaVNbdHJpTmR4XSwgdHJpV1t0
cmlOZHhdLCB3eG8sIGRzdFcsIG55byksCisgICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0
dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVYKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eG8s
IGRzdFcsIG55byldLCBzcmNTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmREeW8gPSBkZU1hdGgubXVsdGlwbHkoWworICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlTW3Ry
aU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0cmlUW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3lvLCBkc3RILCBueG8pXSwgc3JjU2l6ZSk7CisgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8KKyAgICAgICAgICAgICAgICAgICAgdmFyIGxv
ZE8gPSB0Y3VUZXhMb29rdXBWZXJpZmllci5jb21wdXRlTG9kQm91bmRzRnJvbURlcml2YXRlc1VW
KGNvb3JkRHhvWzBdLCBjb29yZER4b1sxXSwgY29vcmREeW9bMF0sIGNvb3JkRHlvWzFdLCBsb2RQ
cmVjKTsKKworICAgICAgICAgICAgICAgICAgICBsb2RCb3VuZHNbMF0gPSBNYXRoLm1pbihsb2RC
b3VuZHNbMF0sIGxvZE9bMF0pOworICAgICAgICAgICAgICAgICAgICBsb2RCb3VuZHNbMV0gPSBN
YXRoLm1heChsb2RCb3VuZHNbMV0sIGxvZE9bMV0pOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIGNsYW1wZWRMb2Qg
PSB0Y3VUZXhMb29rdXBWZXJpZmllci5jbGFtcExvZEJvdW5kcygKKyAgICAgICAgICAgICAgICAg
ICAgZGVNYXRoLmFkZChsb2RCb3VuZHMsIGxvZEJpYXMpLCBbc2FtcGxlUGFyYW1zLm1pbkxvZCwg
c2FtcGxlUGFyYW1zLm1heExvZF0sIGxvZFByZWMpOworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8KKyAgICAgICAgICAgICAgICB2YXIgaXNPayA9IHRjdVRleExvb2t1cFZl
cmlmaWVyLmlzTG9va3VwUmVzdWx0VmFsaWRfVGV4dHVyZTJEVmlldyhzcmMsIHNhbXBsZVBhcmFt
cy5zYW1wbGVyLCBsb29rdXBQcmVjLCBjb29yZCwgY2xhbXBlZExvZCwgcmVzUGl4KTsKKworICAg
ICAgICAgICAgICAgIGlmICghaXNPaykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUg
e3RjdVJHQkEuUkdCQX0gKi8gdmFyIHJlZCA9IHRjdVJHQkEubmV3UkdCQUNvbXBvbmVudHMoMjU1
LCAwLCAwLCAyNTUpOworICAgICAgICAgICAgICAgICAgICBlcnJvck1hc2suc2V0UGl4ZWwocmVk
LnRvVmVjKCksIHB4LCBweSk7CisgICAgICAgICAgICAgICAgICAgIG51bUZhaWxlZCArPSAxOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBudW1GYWlsZWQ7Cit9OworCisvLyBWZXJpZmllcyB0ZXh0dXJlIGxvb2t1cCByZXN1
bHRzIGFuZCByZXR1cm5zIG51bWJlciBvZiBmYWlsZWQgcGl4ZWxzLgorCisvKioKKyAqIEBwYXJh
bSB7dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZXN1bHQKKyAqIEBwYXJhbSB7
dGN1VGV4dHVyZS5Db25zdFBpeGVsQnVmZmVyQWNjZXNzfSByZWZlcmVuY2UKKyAqIEBwYXJhbSB7
dGN1VGV4dHVyZS5QaXhlbEJ1ZmZlckFjY2Vzc30gZXJyb3JNYXNrCisgKiBAcGFyYW0ge3RjdVRl
eHR1cmUuVGV4dHVyZTJEQXJyYXlWaWV3fSBzcmMKKyAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
dGV4Q29vcmQKKyAqIEBwYXJhbSB7Z2xzVGV4dHVyZVRlc3RVdGlsLlJlZmVyZW5jZVBhcmFtc30g
c2FtcGxlUGFyYW1zCisgKiBAcGFyYW0ge3RjdVRleExvb2t1cFZlcmlmaWVyLkxvb2t1cFByZWNp
c2lvbn0gbG9va3VwUHJlYworICogQHBhcmFtIHt0Y3VUZXhMb29rdXBWZXJpZmllci5Mb2RQcmVj
aXNpb259IGxvZFByZWMKKyAqIEBwYXJhbSB7Kj19IHdhdGNoRG9nIC0gVE9ETzogPz8KKyAqIEBy
ZXR1cm4ge251bWJlcn0KKyAqLworZ2xzVGV4dHVyZVRlc3RVdGlsLmNvbXB1dGVUZXh0dXJlTG9v
a3VwRGlmZjJEQXJyYXkgPSBmdW5jdGlvbihyZXN1bHQsIHJlZmVyZW5jZSwgZXJyb3JNYXNrLCBz
cmMsIHRleENvb3JkLCBzYW1wbGVQYXJhbXMsIGxvb2t1cFByZWMsIGxvZFByZWMsIHdhdGNoRG9n
KSB7CisgICAgREVfQVNTRVJUKHJlc3VsdC5nZXRXaWR0aCgpID09IHJlZmVyZW5jZS5nZXRXaWR0
aCgpICYmIHJlc3VsdC5nZXRIZWlnaHQoKSA9PSByZWZlcmVuY2UuZ2V0SGVpZ2h0KCkpOworICAg
IERFX0FTU0VSVChyZXN1bHQuZ2V0V2lkdGgoKSA9PSBlcnJvck1hc2suZ2V0V2lkdGgoKSAmJiBy
ZXN1bHQuZ2V0SGVpZ2h0KCkgPT0gZXJyb3JNYXNrLmdldEhlaWdodCgpKTsKKworICAgIC8qKiBA
dHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIHNxID0gW3RleENvb3JkWzAgKyAwXSwgdGV4Q29v
cmRbMyArIDBdLCB0ZXhDb29yZFs2ICsgMF0sIHRleENvb3JkWzkgKyAwXV07CisgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdHEgPSBbdGV4Q29vcmRbMCArIDFdLCB0ZXhDb29y
ZFszICsgMV0sIHRleENvb3JkWzYgKyAxXSwgdGV4Q29vcmRbOSArIDFdXTsKKyAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBycSA9IFt0ZXhDb29yZFswICsgMl0sIHRleENvb3Jk
WzMgKyAyXSwgdGV4Q29vcmRbNiArIDJdLCB0ZXhDb29yZFs5ICsgMl1dOworCisgICAgLyoqIEB0
eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgZHN0U2l6ZSA9IFtyZXN1bHQuZ2V0V2lkdGgoKSwg
cmVzdWx0LmdldEhlaWdodCgpXTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGRzdFcg
PSBkc3RTaXplWzBdOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgZHN0SCA9IGRzdFNp
emVbMV07CisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc3JjU2l6ZSA9IFtz
cmMuZ2V0V2lkdGgoKSwgc3JjLmdldEhlaWdodCgpXTsKKworICAgIC8vIENvb3JkaW5hdGVzIGFu
ZCBsb2QgcGVyIHRyaWFuZ2xlLgorICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59
ICovIHZhciB0cmlTID0gW2RlTWF0aC5zd2l6emxlKHNxLCBbMCwgMSwgMl0pLCBkZU1hdGguc3dp
enpsZShzcSwgWzMsIDIsIDFdKV07CisgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+
Pn0gKi8gdmFyIHRyaVQgPSBbZGVNYXRoLnN3aXp6bGUodHEsIFswLCAxLCAyXSksIGRlTWF0aC5z
d2l6emxlKHRxLCBbMywgMiwgMV0pXTsKKyAgICAvKiogQHR5cGUge0FycmF5PEFycmF5PG51bWJl
cj4+fSAqLyB2YXIgdHJpUiA9IFtkZU1hdGguc3dpenpsZShycSwgWzAsIDEsIDJdKSwgZGVNYXRo
LnN3aXp6bGUocnEsIFszLCAyLCAxXSldOworICAgIC8qKiBAdHlwZSB7QXJyYXk8QXJyYXk8bnVt
YmVyPj59ICovIHZhciB0cmlXID0gW2RlTWF0aC5zd2l6emxlKHNhbXBsZVBhcmFtcy53LCBbMCwg
MSwgMl0pLCBkZU1hdGguc3dpenpsZShzYW1wbGVQYXJhbXMudywgWzMsIDIsIDFdKV07CisKKyAg
ICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBsb2RCaWFzID0gc2FtcGxlUGFyYW1z
LmZsYWdzLnVzZV9iaWFzID8gW3NhbXBsZVBhcmFtcy5iaWFzLCBzYW1wbGVQYXJhbXMuYmlhc10g
OiBbMC4wLCAwLjBdOworCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1GYWlsZWQg
PSAwOworCisgICAgLyoqIEB0eXBlIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gKi8gdmFyIGxvZE9m
ZnNldHMgPSBbCisgICAgICAgIFstMSwgMF0sCisgICAgICAgIFsxLCAwXSwKKyAgICAgICAgWzAs
IC0xXSwKKyAgICAgICAgWzAsIDFdCisgICAgXTsKKworICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGdyZWVuID0gWzAsIDI1NSwgMCwgMjU1XTsKKyAgICBlcnJvck1hc2suY2xl
YXIobmV3IHRjdVJHQkEuUkdCQShncmVlbikudG9WZWMoKSk7CisKKyAgICBmb3IgKHZhciBweSA9
IDA7IHB5IDwgcmVzdWx0LmdldEhlaWdodCgpOyBweSsrKSB7CisgICAgICAgIC8vIFVnbHkgaGFj
aywgdmFsaWRhdGlvbiBjYW4gdGFrZSB3YXkgdG9vIGxvbmcgYXQgdGhlIG1vbWVudC4KKworICAg
ICAgICAvLyBUT0RPOmFyZSB3ZSBpbXBsZW1lbnRpbmcgcXBXYXRjaERvZz8gc2tpcHBpbmcgaW4g
dGhlIG1lYW50aW1lCisgICAgICAgIC8vIGlmICh3YXRjaERvZykKKyAgICAgICAgLy8gICAgIHFw
V2F0Y2hEb2dfdG91Y2god2F0Y2hEb2cpOworCisgICAgICAgIGZvciAodmFyIHB4ID0gMDsgcHgg
PCByZXN1bHQuZ2V0V2lkdGgoKTsgcHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJh
eTxudW1iZXI+fSAqLworICAgICAgICAgICAgdmFyIHJlc1BpeCA9IHJlc3VsdC5nZXRQaXhlbChw
eCwgcHkpOworICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLmRlYXBwbHlTY2FsZUFuZEJp
YXMocmVzUGl4LCBzYW1wbGVQYXJhbXMuY29sb3JTY2FsZSwgc2FtcGxlUGFyYW1zLmNvbG9yQmlh
cyk7CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovCisgICAgICAgICAg
ICB2YXIgcmVmUGl4ID0gcmVmZXJlbmNlLmdldFBpeGVsKHB4LCBweSk7CisgICAgICAgICAgICBn
bHNUZXh0dXJlVGVzdFV0aWwuZGVhcHBseVNjYWxlQW5kQmlhcyhyZWZQaXgsIHNhbXBsZVBhcmFt
cy5jb2xvclNjYWxlLCBzYW1wbGVQYXJhbXMuY29sb3JCaWFzKTsKKworCisgICAgICAgICAgICAv
LyBUcnkgY29tcGFyaXNvbiB0byBpZGVhbCByZWZlcmVuY2UgZmlyc3QsIGFuZCBpZiB0aGF0IGZh
aWxzIHVzZSBzbG93ZXIgdmVyaWZpY2F0b3IuCisgICAgICAgICAgICBpZiAoIWRlTWF0aC5ib29s
QWxsKGRlTWF0aC5sZXNzVGhhbkVxdWFsKGRlTWF0aC5hYnNEaWZmKHJlc1BpeCwgcmVmUGl4KSwg
bG9va3VwUHJlYy5jb2xvclRocmVzaG9sZCkpKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciB3eCA9IHB4ICsgMC41OworICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgd3kgPSBweSArIDAuNTsKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIG54ID0gd3ggLyBkc3RXOworICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbnkgPSB3eSAvIGRzdEg7CisKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU5keCA9IG54ICsgbnkgPj0gMS4wID8gMSA6IDA7
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0cmlXeCA9IHRyaU5k
eCA/IGRzdFcgLSB3eCA6IHd4OworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgdHJpV3kgPSB0cmlOZHggPyBkc3RIIC0gd3kgOiB3eTsKKyAgICAgICAgICAgICAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU54ID0gdHJpTmR4ID8gMS4wIC0gbnggOiBueDsK
KyAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHRyaU55ID0gdHJpTmR4
ID8gMS4wIC0gbnkgOiBueTsKKworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVt
YmVyPn0gKi8gdmFyIGNvb3JkID0gWworICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVz
dFV0aWwucHJvamVjdGVkVHJpSW50ZXJwb2xhdGUodHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5keF0s
IHRyaU54LCB0cmlOeSksCisgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5w
cm9qZWN0ZWRUcmlJbnRlcnBvbGF0ZSh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgdHJpTngs
IHRyaU55KSwKKyAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2plY3Rl
ZFRyaUludGVycG9sYXRlKHRyaVJbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB0cmlOeCwgdHJpTnkp
CisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciBjb29yZER4ID0gZGVNYXRoLm11bHRpcGx5KFsKKyAgICAgICAgICAgICAg
ICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlTW3RyaU5keF0sIHRyaVdb
dHJpTmR4XSwgd3gsIGRzdFcsIHRyaU55KSwKKyAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVy
ZVRlc3RVdGlsLnRyaURlcml2YXRlWCh0cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3gsIGRz
dFcsIHRyaU55KV0sIHNyY1NpemUpOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
bnVtYmVyPn0gKi8gdmFyIGNvb3JkRHkgPSBkZU1hdGgubXVsdGlwbHkoWworICAgICAgICAgICAg
ICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVNbdHJpTmR4XSwgdHJp
V1t0cmlOZHhdLCB3eSwgZHN0SCwgdHJpTngpLAorICAgICAgICAgICAgICAgICAgICBnbHNUZXh0
dXJlVGVzdFV0aWwudHJpRGVyaXZhdGVZKHRyaVRbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCB3eSwg
ZHN0SCwgdHJpTngpXSwgc3JjU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge0Fy
cmF5PG51bWJlcj59ICovCisgICAgICAgICAgICAgICAgdmFyIGxvZEJvdW5kcyA9IHRjdVRleExv
b2t1cFZlcmlmaWVyLmNvbXB1dGVMb2RCb3VuZHNGcm9tRGVyaXZhdGVzVVYoY29vcmREeFswXSwg
Y29vcmREeFsxXSwgY29vcmREeVswXSwgY29vcmREeVsxXSwgbG9kUHJlYyk7CisKKyAgICAgICAg
ICAgICAgICAvLyBDb21wdXRlIGxvZCBib3VuZHMgYWNyb3NzIGxvZE9mZnNldHMgcmFuZ2UuCisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgbG9kT2Zmc05keCA9IDA7IGxvZE9mZnNOZHggPCBsb2RP
ZmZzZXRzLmxlbmd0aDsgbG9kT2Zmc05keCsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgd3hvID0gdHJpV3ggKyBsb2RPZmZzZXRzW2xvZE9mZnNOZHhd
WzBdOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHd5byA9
IHRyaVd5ICsgbG9kT2Zmc2V0c1tsb2RPZmZzTmR4XVsxXTsKKyAgICAgICAgICAgICAgICAgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBueG8gPSB3eG8gLyBkc3RXOworICAgICAgICAgICAg
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG55byA9IHd5byAvIGRzdEg7CisKKyAg
ICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmRP
ID0gWworICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnByb2plY3Rl
ZFRyaUludGVycG9sYXRlKHRyaVNbdHJpTmR4XSwgdHJpV1t0cmlOZHhdLCBueG8sIG55byksCisg
ICAgICAgICAgICAgICAgICAgICAgICBnbHNUZXh0dXJlVGVzdFV0aWwucHJvamVjdGVkVHJpSW50
ZXJwb2xhdGUodHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIG54bywgbnlvKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdsc1RleHR1cmVUZXN0VXRpbC5wcm9qZWN0ZWRUcmlJbnRlcnBvbGF0
ZSh0cmlSW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgbnhvLCBueW8pCisgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8g
dmFyIGNvb3JkRHhvID0gZGVNYXRoLm11bHRpcGx5KFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsc1RleHR1cmVUZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpU1t0cmlOZHhdLCB0cmlXW3RyaU5k
eF0sIHd4bywgZHN0VywgbnlvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsc1RleHR1cmVU
ZXN0VXRpbC50cmlEZXJpdmF0ZVgodHJpVFt0cmlOZHhdLCB0cmlXW3RyaU5keF0sIHd4bywgZHN0
VywgbnlvKV0sIHNyY1NpemUKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgY29vcmREeW8gPSBkZU1hdGgu
bXVsdGlwbHkoWworICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRy
aURlcml2YXRlWSh0cmlTW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVGV4dHVyZVRlc3RVdGlsLnRyaURlcml2YXRlWSh0
cmlUW3RyaU5keF0sIHRyaVdbdHJpTmR4XSwgd3lvLCBkc3RILCBueG8pXSwgc3JjU2l6ZQorICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5
PG51bWJlcj59ICovCisgICAgICAgICAgICAgICAgICAgIHZhciBsb2RPID0gdGN1VGV4TG9va3Vw
VmVyaWZpZXIuY29tcHV0ZUxvZEJvdW5kc0Zyb21EZXJpdmF0ZXNVVihjb29yZER4b1swXSwgY29v
cmREeG9bMV0sIGNvb3JkRHlvWzBdLCBjb29yZER5b1sxXSwgbG9kUHJlYyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbG9kQm91bmRzWzBdID0gTWF0aC5taW4obG9kQm91bmRzWzBdLCBsb2RPWzBd
KTsKKyAgICAgICAgICAgICAgICAgICAgbG9kQm91bmRzWzFdID0gTWF0aC5tYXgobG9kQm91bmRz
WzFdLCBsb2RPWzFdKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjbGFtcGVkTG9kID0gdGN1VGV4TG9va3VwVmVy
aWZpZXIuY2xhbXBMb2RCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgIGRlTWF0aC5hZGQobG9k
Qm91bmRzLCBsb2RCaWFzKSwgW3NhbXBsZVBhcmFtcy5taW5Mb2QsIHNhbXBsZVBhcmFtcy5tYXhM
b2RdLCBsb2RQcmVjKTsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovCisg
ICAgICAgICAgICAgICAgdmFyIGlzT2sgPSB0Y3VUZXhMb29rdXBWZXJpZmllci5pc0xvb2t1cFJl
c3VsdFZhbGlkX1RleHR1cmUyREFycmF5VmlldyhzcmMsIHNhbXBsZVBhcmFtcy5zYW1wbGVyLCBs
b29rdXBQcmVjLCBjb29yZCwgY2xhbXBlZExvZCwgcmVzUGl4KTsKKworICAgICAgICAgICAgICAg
IGlmICghaXNPaykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3RjdVJHQkEuUkdC
QX0gKi8gdmFyIHJlZCA9IHRjdVJHQkEubmV3UkdCQUNvbXBvbmVudHMoMjU1LCAwLCAwLCAyNTUp
OworICAgICAgICAgICAgICAgICAgICBlcnJvck1hc2suc2V0UGl4ZWwocmVkLnRvVmVjKCksIHB4
LCBweSk7CisgICAgICAgICAgICAgICAgICAgIG51bUZhaWxlZCArPSAxOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBudW1G
YWlsZWQ7Cit9OworCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAv
bW9kdWxlcy9zaGFyZWQvZ2xzVW5pZm9ybUJsb2NrQ2FzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWM0NTM2
NmFjNWRlZWRhYjk3MzliMDE5NjIyYmQzNTVmY2Y2NDI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9tb2R1bGVzL3No
YXJlZC9nbHNVbmlmb3JtQmxvY2tDYXNlLmpzCkBAIC0wLDAgKzEsMjQ1MSBAQAorLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIE9wZW5HTCBFUyBVdGls
aXRpZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKK2dvb2cucHJvdmlkZSgnbW9kdWxlcy5zaGFyZWQu
Z2xzVW5pZm9ybUJsb2NrQ2FzZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRj
dVRlc3RDYXNlJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0
aCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOwor
Z29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZycpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVV0aWwnKTsKK2dvb2cucmVxdWlyZSgn
ZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsu
b3BlbmdsLmdsdVNoYWRlclByb2dyYW0nKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLm9wZW5n
bC5nbHVTaGFkZXJVdGlsJyk7CisKK2dvb2cuc2NvcGUoZnVuY3Rpb24oKSB7CisKK3ZhciBnbHNV
bmlmb3JtQmxvY2tDYXNlID0gbW9kdWxlcy5zaGFyZWQuZ2xzVW5pZm9ybUJsb2NrQ2FzZTsKK3Zh
ciB0Y3VUZXN0Q2FzZSA9IGZyYW1ld29yay5jb21tb24udGN1VGVzdENhc2U7Cit2YXIgZ2x1U2hh
ZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuZ2x1U2hhZGVyUHJvZ3JhbTsKK3ZhciBnbHVT
aGFkZXJVdGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVTaGFkZXJVdGlsOwordmFyIGdsdURyYXdV
dGlsID0gZnJhbWV3b3JrLm9wZW5nbC5nbHVEcmF3VXRpbDsKK3ZhciBkZVV0aWwgPSBmcmFtZXdv
cmsuZGVsaWJzLmRlYmFzZS5kZVV0aWw7Cit2YXIgZGVNYXRoID0gZnJhbWV3b3JrLmRlbGlicy5k
ZWJhc2UuZGVNYXRoOwordmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVS
YW5kb207Cit2YXIgZGVTdHJpbmcgPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVN0cmluZzsK
KwordmFyIERFX0FTU0VSVCA9IGZ1bmN0aW9uKHgpIHsKKyAgICBpZiAoIXgpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignQXNzZXJ0IGZhaWxlZCcpOworfTsKKwordmFyIGxpdHRsZUVuZGlhbiA9
IChmdW5jdGlvbigpIHsKKyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDIpOworICAg
IG5ldyBEYXRhVmlldyhidWZmZXIpLnNldEludDE2KDAsIDI1NiwgdHJ1ZSAvKiBsaXR0bGVFbmRp
YW4gKi8pOworICAgIC8vIEludDE2QXJyYXkgdXNlcyB0aGUgcGxhdGZvcm0ncyBlbmRpYW5uZXNz
LgorICAgIHJldHVybiBuZXcgSW50MTZBcnJheShidWZmZXIpWzBdID09PSAyNTY7Cit9KSgpOwor
CisvKioKKyAqIENsYXNzIHRvIGltcGxlbWVudCBzb21lIHBvaW50ZXJzIGZ1bmN0aW9uYWxpdHku
CisgKiBAY29uc3RydWN0b3IKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9ja1BvaW50ZXJz
ID0gZnVuY3Rpb24oKSB7CisgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdGhpcy5kYXRh
OyAvLyE8IERhdGEgKHZlY3RvcjxkZVVpbnQ4PikuCisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1i
ZXI+fSAqLyB0aGlzLm9mZnNldHMgPSBbXTsgLy8hPCBSZWZlcmVuY2UgYmxvY2sgcG9pbnRlcnMg
KG1hcDxpbnQsIHZvaWQqPikuCisgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB0aGlz
LnNpemVzID0gW107Cit9OworCisvKioKKyAqIHB1c2ggLSBBZGRzIGFuIG9mZnNldC9zaXplIHBh
aXIgdG8gdGhlIGNvbGxlY3Rpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgT2Zmc2V0IG9m
IHRoZSBlbGVtZW50IHRvIHJlZmVyLgorICogQHBhcmFtIHtudW1iZXJ9IHNpemUgU2l6ZSBvZiB0
aGUgcmVmZXJyZWQgZWxlbWVudC4KKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9ja1BvaW50
ZXJzLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24ob2Zmc2V0LCBzaXplKSB7CisgICAgdGhpcy5v
ZmZzZXRzLnB1c2gob2Zmc2V0KTsKKyAgICB0aGlzLnNpemVzLnB1c2goc2l6ZSk7Cit9OworCisv
KioKKyAqIGZpbmQgLSBGaW5kcyBhbmQgbWFwcyB0aGUgZGF0YSBhdCB0aGUgZ2l2ZW4gb2Zmc2V0
LCBhbmQgcmV0dXJucyBhIFVpbnQ4QXJyYXkKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBvZiB0
aGUgZWxlbWVudCB0byBmaW5kLgorICogQHJldHVybiB7VWludDhBcnJheX0KKyAqLworZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5CbG9ja1BvaW50ZXJzLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24oaW5k
ZXgpIHsKKyAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLCB0aGlzLm9mZnNldHNb
aW5kZXhdLCB0aGlzLnNpemVzW2luZGV4XSk7Cit9OworCisvKioKKyAqIHJlc2l6ZSAtIFJlcGxh
Y2VzIHJlc2l6ZSBvZiBhIHZlY3RvciBpbiBDKysuIFNldHMgdGhlIHNpemUgb2YgdGhlIGRhdGEg
YnVmZmVyLgorICogTk9URTogSW4gdGhpcyBjYXNlIGhvd2V2ZXIsIGlmIHlvdSByZXNpemUsIHRo
ZSBkYXRhIGlzIGxvc3QuCisgKiBAcGFyYW0ge251bWJlcn0gbmV3c2l6ZSBUaGUgbmV3IHNpemUg
b2YgdGhlIGRhdGEgYnVmZmVyLgorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2NrUG9pbnRl
cnMucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKG5ld3NpemUpIHsKKyAgICB0aGlzLmRhdGEg
PSBuZXcgQXJyYXlCdWZmZXIobmV3c2l6ZSk7Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9j
a0Nhc2UuaXNTdXBwb3J0ZWRHTFNMVmVyc2lvbgorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkdM
U0xWZXJzaW9ufSB2ZXJzaW9uCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitnbHNVbmlmb3Jt
QmxvY2tDYXNlLmlzU3VwcG9ydGVkR0xTTFZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uKSB7Cisg
ICAgcmV0dXJuIHZlcnNpb24gPj0gZ2x1U2hhZGVyVXRpbC5HTFNMVmVyc2lvbi5WMzAwX0VTOwor
fTsKKworLyoqCisgKiBAZW51bSB7bnVtYmVyfQorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlVu
aWZvcm1GbGFncyA9IHsKKyAgICBQUkVDSVNJT05fTE9XOiAoMSA8PCAwKSwKKyAgICBQUkVDSVNJ
T05fTUVESVVNOiAoMSA8PCAxKSwKKyAgICBQUkVDSVNJT05fSElHSDogKDEgPDwgMiksCisKKyAg
ICBMQVlPVVRfU0hBUkVEOiAoMSA8PCAzKSwKKyAgICBMQVlPVVRfUEFDS0VEOiAoMSA8PCA0KSwK
KyAgICBMQVlPVVRfU1REMTQwOiAoMSA8PCA1KSwKKyAgICBMQVlPVVRfUk9XX01BSk9SOiAoMSA8
PCA2KSwKKyAgICBMQVlPVVRfQ09MVU1OX01BSk9SOiAoMSA8PCA3KSwgLy8hPCBcbm90ZSBMYWNr
IG9mIGJvdGggZmxhZ3MgbWVhbnMgY29sdW1uLW1ham9yIG1hdHJpeC4KKworICAgIERFQ0xBUkVf
VkVSVEVYOiAoMSA8PCA4KSwKKyAgICBERUNMQVJFX0ZSQUdNRU5UOiAoMSA8PCA5KSwKKworICAg
IFVOVVNFRF9WRVJURVg6ICgxIDw8IDEwKSwgLy8hPCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZv
cm0gb3Igc3RydWN0IG1lbWJlciBpcyBub3QgcmVhZCBpbiB2ZXJ0ZXggc2hhZGVyLgorICAgIFVO
VVNFRF9GUkFHTUVOVDogKDEgPDwgMTEpIC8vITwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
IG9yIHN0cnVjdCBtZW1iZXIgaXMgbm90IHJlYWQgaW4gZnJhZ21lbnQgc2hhZGVyLgorfTsKKwor
LyoqIEBjb25zdCAqLyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05f
TUFTSyA9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9MT1cgfCBn
bHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUVESVVNIHwgZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX0hJR0g7CisvKiogQGNvbnN0ICov
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9NQVNLID0gZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1NIQVJFRCB8IGdsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9QQUNLRUQgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZv
cm1GbGFncy5MQVlPVVRfU1REMTQwIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
TEFZT1VUX1JPV19NQUpPUiB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9V
VF9DT0xVTU5fTUFKT1I7CisvKiogQGNvbnN0ICovIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUZsYWdzLkRFQ0xBUkVfQk9USCA9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRF
Q0xBUkVfVkVSVEVYIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9G
UkFHTUVOVDsKKy8qKiBAY29uc3QgKi8gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
VU5VU0VEX0JPVEggPSBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5VTlVTRURfVkVS
VEVYIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0ZSQUdNRU5UOwor
CisvKioKKyogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlIHR5cGVzIGVudW0KKyogQGVudW0g
e251bWJlcn0KKyovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlR5cGUgPSB7CisgICAgVFlQRV9CQVNJ
QzogMCwKKyAgICBUWVBFX0FSUkFZOiAxLAorICAgIFRZUEVfU1RSVUNUOiAyCit9OworCitnbHNV
bmlmb3JtQmxvY2tDYXNlLlR5cGUuVFlQRV9MQVNUID0gT2JqZWN0LmtleXMoZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5UeXBlKS5sZW5ndGg7CisKKy8qKgorKiBnbHNVbmlmb3JtQmxvY2tDYXNlLlR5cGVB
cnJheSBzdHJ1Y3QgKG5vdGhpbmcgdG8gZG8gd2l0aCBKUydzIFR5cGVkQXJyYXlzKQorKiBAcGFy
YW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gZWxlbWVudFR5cGUKKyogQHBhcmFtIHtu
dW1iZXJ9IGFycmF5U2l6ZQorKiBAY29uc3RydWN0b3IKKyovCitnbHNVbmlmb3JtQmxvY2tDYXNl
LlR5cGVBcnJheSA9IGZ1bmN0aW9uKGVsZW1lbnRUeXBlLCBhcnJheVNpemUpIHsKKyAgICAvKiog
QHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gKi8gdGhpcy5lbGVtZW50VHlwZSA9
IGVsZW1lbnRUeXBlOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLnNpemUgPSBhcnJh
eVNpemU7Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZSBjbGFzcwor
ICogQGNvbnN0cnVjdG9yCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZSA9IGZ1bmN0
aW9uKCkgeworICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5UeXBlfSAqLyB0aGlz
Lm1fdHlwZTsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2ZsYWdzID0gMDsKKwor
ICAgIC8qCisgICAgICogbV9kYXRhIHVzZWQgdG8gYmUgYSAnRGF0YScgdW5pb24gaW4gQysrLiBV
c2luZyBhIHZhciBpcyBlbm91Z2ggaGVyZS4KKyAgICAgKiBpdCB3aWxsIGNvbnRhaW4gYW55IG5l
Y2Vzc2FyeSB2YWx1ZS4KKyAgICAgKi8KKworICAgIC8qKiBAdHlwZSB7KGdsdVNoYWRlclV0aWwu
RGF0YVR5cGV8Z2xzVW5pZm9ybUJsb2NrQ2FzZS5UeXBlQXJyYXl8Z2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5TdHJ1Y3RUeXBlKX0gKi8KKyAgICB0aGlzLm1fZGF0YTsKK307CisKKy8qKgorKiBDcmVhdGVz
IGEgYmFzaWMgdHlwZSBnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUuIFVzZSB0aGlzIGFmdGVy
IHRoZSBjb25zdHJ1Y3RvciBjYWxsLgorKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9
IGJhc2ljVHlwZQorKiBAcGFyYW0ge251bWJlcn0gZmxhZ3MKKyogQHJldHVybiB7Z2xzVW5pZm9y
bUJsb2NrQ2FzZS5WYXJUeXBlfSBUaGUgY3VycmVudGx5IG1vZGlmaWVkIG9iamVjdAorKi8KK2ds
c1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZS5wcm90b3R5cGUuVmFyVHlwZUJhc2ljID0gZnVuY3Rp
b24oYmFzaWNUeXBlLCBmbGFncykgeworICAgIHRoaXMubV90eXBlID0gZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5UeXBlLlRZUEVfQkFTSUM7CisgICAgdGhpcy5tX2ZsYWdzID0gZmxhZ3M7CisgICAgdGhp
cy5tX2RhdGEgPSBiYXNpY1R5cGU7CisKKyAgICByZXR1cm4gdGhpczsKK307CisKKy8qKgorKiBD
cmVhdGVzIGFuIGFycmF5IHR5cGUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLiBVc2UgdGhp
cyBhZnRlciB0aGUgY29uc3RydWN0b3IgY2FsbC4KKyogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tD
YXNlLlZhclR5cGV9IGVsZW1lbnRUeXBlCisqIEBwYXJhbSB7bnVtYmVyfSBhcnJheVNpemUKKyog
QHJldHVybiB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSBUaGUgY3VycmVudGx5IG1vZGlm
aWVkIG9iamVjdAorKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZS5wcm90b3R5cGUuVmFy
VHlwZUFycmF5ID0gZnVuY3Rpb24oZWxlbWVudFR5cGUsIGFycmF5U2l6ZSkgeworICAgIHRoaXMu
bV90eXBlID0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5UeXBlLlRZUEVfQVJSQVk7CisgICAgdGhpcy5t
X2ZsYWdzID0gMDsKKyAgICB0aGlzLm1fZGF0YSA9IG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlR5
cGVBcnJheShlbGVtZW50VHlwZSwgYXJyYXlTaXplKTsKKworICAgIHJldHVybiB0aGlzOworfTsK
KworLyoqCisqIENyZWF0ZXMgYSBzdHJ1Y3QgdHlwZSBnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5
cGUuIFVzZSB0aGlzIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciBjYWxsLgorKiBAcGFyYW0ge2dsc1Vu
aWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZX0gc3RydWN0UHRyCisqIEByZXR1cm4ge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuVmFyVHlwZX0gVGhlIGN1cnJlbnRseSBtb2RpZmllZCBvYmplY3QKKyovCitn
bHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUucHJvdG90eXBlLlZhclR5cGVTdHJ1Y3QgPSBmdW5j
dGlvbihzdHJ1Y3RQdHIpIHsKKyAgICB0aGlzLm1fdHlwZSA9IGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
VHlwZS5UWVBFX1NUUlVDVDsKKyAgICB0aGlzLm1fZmxhZ3MgPSAwOworICAgIHRoaXMubV9kYXRh
ID0gc3RydWN0UHRyOworCisgICAgcmV0dXJuIHRoaXM7Cit9OworCisvKiogaXNCYXNpY1R5cGUK
KyogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJU
eXBlIHJlcHJlc2VudHMgYSBiYXNpYyB0eXBlLgorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlZh
clR5cGUucHJvdG90eXBlLmlzQmFzaWNUeXBlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRo
aXMubV90eXBlID09IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVHlwZS5UWVBFX0JBU0lDOworfTsKKwor
LyoqIGlzQXJyYXlUeXBlCisqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVmFyVHlwZSByZXByZXNlbnRzIGFuIGFycmF5LgorKiovCitnbHNVbmlmb3Jt
QmxvY2tDYXNlLlZhclR5cGUucHJvdG90eXBlLmlzQXJyYXlUeXBlID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHRoaXMubV90eXBlID09IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVHlwZS5UWVBFX0FS
UkFZOworfTsKKworLyoqIGlzU3RydWN0VHlwZQorKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlm
IHRoZSBnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUgcmVwcmVzZW50cyBhIHN0cnVjdC4KKyoq
LworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLnByb3RvdHlwZS5pc1N0cnVjdFR5cGUgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tX3R5cGUgPT0gZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5UeXBlLlRZUEVfU1RSVUNUOworfTsKKworLyoqIGdldEZsYWdzCisqIEByZXR1cm4ge251bWJl
cn0gcmV0dXJucyB0aGUgZmxhZ3Mgb2YgdGhlIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZS4K
KyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLnByb3RvdHlwZS5nZXRGbGFncyA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fZmxhZ3M7Cit9OworCisvKiogZ2V0QmFzaWNU
eXBlCisqIEByZXR1cm4ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHJldHVybnMgdGhlIGJhc2lj
IGRhdGEgdHlwZSBvZiB0aGUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLgorKiovCitnbHNV
bmlmb3JtQmxvY2tDYXNlLlZhclR5cGUucHJvdG90eXBlLmdldEJhc2ljVHlwZSA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiAvKiogQHR5cGUge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICovICh0
aGlzLm1fZGF0YSk7Cit9OworCisvKiogZ2V0RWxlbWVudFR5cGUKKyogQHJldHVybiB7Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSByZXR1cm5zIHRoZSBnbHNVbmlmb3JtQmxvY2tDYXNlLlZh
clR5cGUgb2YgdGhlIGVsZW1lbnQgaW4gY2FzZSBvZiBhbiBBcnJheS4KKyoqLworZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5WYXJUeXBlLnByb3RvdHlwZS5nZXRFbGVtZW50VHlwZSA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiB0aGlzLm1fZGF0YS5lbGVtZW50VHlwZTsKK307CisKKy8qKiBnZXRBcnJh
eVNpemUKKyogKG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIGEgamF2YXNjcmlwdCBhcnJheSkKKyog
QHJldHVybiB7bnVtYmVyfSByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhcnJheSBpbiBjYXNlIGl0
IGlzIGFuIGFycmF5LgorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUucHJvdG90eXBl
LmdldEFycmF5U2l6ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fZGF0YS5zaXpl
OworfTsKKworLyoqIGdldFN0cnVjdAorKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0
cnVjdFR5cGV9IHJldHVybnMgdGhlIHN0cnVjdHVyZSB3aGVuIGl0IGlzIGEgZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5TdHJ1Y3RUeXBlLgorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUucHJv
dG90eXBlLmdldFN0cnVjdCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAvKiogQHR5cGUge2ds
c1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZX0gKi8gKHRoaXMubV9kYXRhKTsKK307CisKKy8q
KgorICogQ3JlYXRlcyBhIGJhc2ljIHR5cGUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLgor
ICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSBiYXNpY1R5cGUKKyAqIEBwYXJhbSB7
bnVtYmVyfSBmbGFncworICogQHJldHVybiB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfQor
ICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLm5ld1ZhclR5cGVCYXNpYyA9IGZ1bmN0aW9uKGJhc2lj
VHlwZSwgZmxhZ3MpIHsKKyAgICByZXR1cm4gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlw
ZSgpLlZhclR5cGVCYXNpYyhiYXNpY1R5cGUsIGZsYWdzKTsKK307CisKKy8qKgorKiBDcmVhdGVz
IGFuIGFycmF5IHR5cGUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlLgorKiBAcGFyYW0ge2ds
c1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gZWxlbWVudFR5cGUKKyogQHBhcmFtIHtudW1iZXJ9
IGFycmF5U2l6ZQorKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGV9CisqLwor
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdWYXJUeXBlQXJyYXkgPSBmdW5jdGlvbihlbGVtZW50VHlw
ZSwgYXJyYXlTaXplKSB7CisgICAgcmV0dXJuIG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5
cGUoKS5WYXJUeXBlQXJyYXkoZWxlbWVudFR5cGUsIGFycmF5U2l6ZSk7Cit9OworCisvKioKKyog
Q3JlYXRlcyBhIHN0cnVjdCB0eXBlIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZS4KKyogQHBh
cmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9IHN0cnVjdFB0cgorKiBAcmV0dXJu
IHtnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGV9CisqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5u
ZXdWYXJUeXBlU3RydWN0ID0gZnVuY3Rpb24oc3RydWN0UHRyKSB7CisgICAgcmV0dXJuIG5ldyBn
bHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGUoKS5WYXJUeXBlU3RydWN0KHN0cnVjdFB0cik7Cit9
OworCisvKiogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RNZW1iZXIKKyAqIGluIHRoZSBKU0Rv
YyBhbm5vdGF0aW9ucyBvciBpZiBhIG51bWJlciB3b3VsZCBkby4KKyAqIEBjb25zdHJ1Y3Rvcgor
KiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdE1lbWJlciA9IGZ1bmN0aW9uKCkgeworICAg
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1fbmFtZTsKKyAgICAvKiogQHR5cGUge2dsc1Vu
aWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gKi8gdGhpcy5tX3R5cGU7CisgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHRoaXMubV9mbGFncyA9IDA7Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSBnbHNV
bmlmb3JtQmxvY2tDYXNlLlN0cnVjdE1lbWJlci4gVXNlIHRoaXMgYWZ0ZXIgdGhlIGNvbnN0cnVj
dG9yIGNhbGwuCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFtIHtnbHNVbmlmb3Jt
QmxvY2tDYXNlLlZhclR5cGV9IHR5cGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBmbGFncworICogQHJl
dHVybiB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RNZW1iZXJ9IFRoZSBjdXJyZW50bHkgbW9k
aWZpZWQgb2JqZWN0CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVtYmVyLnByb3Rv
dHlwZS5Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIGZsYWdzKSB7CisgICAgdGhp
cy5tX3R5cGUgPSB0eXBlOworICAgIHRoaXMubV9uYW1lID0gbmFtZTsKKyAgICB0aGlzLm1fZmxh
Z3MgPSBmbGFnczsKKworICAgIHJldHVybiB0aGlzOworfTsKKworLyoqIGdldE5hbWUKKyogQHJl
dHVybiB7c3RyaW5nfSB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyCisqKi8KK2dsc1VuaWZvcm1CbG9j
a0Nhc2UuU3RydWN0TWVtYmVyLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1fbmFtZTsgfTsKKworLyoqIGdldFR5cGUKKyogQHJldHVybiB7Z2xzVW5pZm9ybUJs
b2NrQ2FzZS5WYXJUeXBlfSB0aGUgdHlwZSBvZiB0aGUgbWVtYmVyCisqKi8KK2dsc1VuaWZvcm1C
bG9ja0Nhc2UuU3RydWN0TWVtYmVyLnByb3RvdHlwZS5nZXRUeXBlID0gZnVuY3Rpb24oKSB7IHJl
dHVybiB0aGlzLm1fdHlwZTsgfTsKKworLyoqIGdldEZsYWdzCisqIEByZXR1cm4ge251bWJlcn0g
dGhlIGZsYWdzIGluIHRoZSBtZW1iZXIKKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RN
ZW1iZXIucHJvdG90eXBlLmdldEZsYWdzID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fZmxh
Z3M7IH07CisKKy8qKgorICogQ3JlYXRlcyBhIGdsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVt
YmVyIHdpdGggbmFtZSwgdHlwZSBhbmQgZmxhZ3MuCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGV9IHR5cGUKKyAqIEByZXR1cm4g
e2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVtYmVyfQorICovCisgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5uZXdTdHJ1Y3RNZW1iZXIgPSBmdW5jdGlvbihuYW1lLCB0eXBlLCBmbGFncykgeworICAg
ICByZXR1cm4gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVtYmVyKCkuQ29uc3RydWN0
b3IobmFtZSwgdHlwZSwgZmxhZ3MpOworIH07CisKKy8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5TdHJ1Y3RUeXBlCisgKiBAY29uc3RydWN0b3IKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5T
dHJ1Y3RUeXBlID0gZnVuY3Rpb24oKSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9Ki8gdGhpcy5t
X3R5cGVOYW1lOworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1
Y3RNZW1iZXI+fSAqLyB0aGlzLm1fbWVtYmVycyA9IFtdOworfTsKKworLyoqCisgKiBnbHNVbmlm
b3JtQmxvY2tDYXNlLlN0cnVjdFR5cGUgLSBDb25zdHJ1Y3RvciB3aXRoIHR5cGUgbmFtZQorICog
QHBhcmFtIHtzdHJpbmd9IHR5cGVOYW1lCisgKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNl
LlN0cnVjdFR5cGV9IFRoZSBjdXJyZW50bHkgbW9kaWZpZWQgb2JqZWN0LgorICovCitnbHNVbmlm
b3JtQmxvY2tDYXNlLlN0cnVjdFR5cGUucHJvdG90eXBlLkNvbnN0cnVjdG9yID0gZnVuY3Rpb24o
dHlwZU5hbWUpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30qLyB0aGlzLm1fdHlwZU5hbWUgPSB0
eXBlTmFtZTsKKyAgICByZXR1cm4gdGhpczsKK307CisKKy8qKiBnZXRUeXBlTmFtZQorKiBAcmV0
dXJuIHtzdHJpbmd9CisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZS5wcm90b3R5
cGUuZ2V0VHlwZU5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tX3R5cGVOYW1l
OworfTsKKworLyoKKyAqIEluc3RlYWQgb2YgaXRlcmF0b3JzLCB3ZSdsbCBhZGQKKyAqIGEgZ2V0
dGVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgKGdldE1lbWJlciksCisgKiBhbmQgY3VycmVudCBt
ZW1iZXJzIGFtb3VudCAoZ2V0U2l6ZSkuCisgKi8KKworLyoqIGdldE1lbWJlcgorKiBAcGFyYW0g
e251bWJlcn0gbWVtYmVyTmR4IFRoZSBpbmRleCBvZiB0aGUgbWVtYmVyIHRvIHJldHJpZXZlLgor
KiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdE1lbWJlcn0KKyoqLworZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlLnByb3RvdHlwZS5nZXRNZW1iZXIgPSBmdW5jdGlvbiht
ZW1iZXJOZHgpIHsKKyAgICBpZiAobWVtYmVyTmR4ID49IDAgJiYgbWVtYmVyTmR4IDwgdGhpcy5t
X21lbWJlcnMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpcy5tX21lbWJlcnNbbWVtYmVyTmR4
XTsKKyAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1lbWJlciBp
bmRleCBmb3IgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlJ3MgbWVtYmVycyIpOworICAg
IH0KK307CisKKy8qKiBnZXRTaXplCisqIEByZXR1cm4ge251bWJlcn0gVGhlIHNpemUgb2YgdGhl
IG1fbWVtYmVycyBhcnJheS4KKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlLnBy
b3RvdHlwZS5nZXRTaXplID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubV9tZW1iZXJz
Lmxlbmd0aDsKK307CisKKy8qKiBhZGRNZW1iZXIKKyogQHBhcmFtIHtzdHJpbmd9IG1lbWJlcl9u
YW1lCisqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSBtZW1iZXJfdHlwZQor
KiBAcGFyYW0ge251bWJlcj19IG1lbWJlcl9mbGFncworKiovCitnbHNVbmlmb3JtQmxvY2tDYXNl
LlN0cnVjdFR5cGUucHJvdG90eXBlLmFkZE1lbWJlciA9IGZ1bmN0aW9uKG1lbWJlcl9uYW1lLCBt
ZW1iZXJfdHlwZSwgbWVtYmVyX2ZsYWdzKSB7CisgICAgdmFyIG1lbWJlciA9IGdsc1VuaWZvcm1C
bG9ja0Nhc2UubmV3U3RydWN0TWVtYmVyKG1lbWJlcl9uYW1lLCBtZW1iZXJfdHlwZSwgbWVtYmVy
X2ZsYWdzKTsKKworICAgIHRoaXMubV9tZW1iZXJzLnB1c2gobWVtYmVyKTsKK307CisKKy8qKgor
ICogQ3JlYXRlcyBhIGdsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZS4KKyAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lCisgKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9
CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UubmV3U3RydWN0VHlwZSA9IGZ1bmN0aW9uKG5hbWUp
IHsKKyAgICByZXR1cm4gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZSgpLkNvbnN0
cnVjdG9yKG5hbWUpOworfTsKKworLyoqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJU
eXBlfSB0eXBlCisgKiBAcGFyYW0ge251bWJlcj19IGZsYWdzCisgKiBAY29uc3RydWN0b3IKKyoq
LworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtID0gZnVuY3Rpb24obmFtZSwgdHlwZSwgZmxh
Z3MpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5tX25hbWUgPSBuYW1lOworICAg
IC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSAqLyB0aGlzLm1fdHlwZSA9
IHR5cGU7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9mbGFncyA9ICh0eXBlb2Yg
ZmxhZ3MgPT09ICd1bmRlZmluZWQnKSA/IDAgOiBmbGFnczsKK307CisKKy8qKiBnZXROYW1lCisg
KiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybS5wcm90
b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fbmFtZTsKK307
CisKKy8qKiBnZXRUeXBlCisgKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlZhclR5cGV9
CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fdHlwZTsKK307CisKKy8qKiBnZXRGbGFncwor
KiBAcmV0dXJuIHtudW1iZXJ9CisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybS5wcm90
b3R5cGUuZ2V0RmxhZ3MgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tX2ZsYWdzOwor
fTsKKworLyoqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrCisgKiBAcGFyYW0ge3N0
cmluZ30gYmxvY2tOYW1lCisgKiBAY29uc3RydWN0b3IKKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5Vbmlmb3JtQmxvY2sgPSBmdW5jdGlvbihibG9ja05hbWUpIHsKKyAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdGhpcy5tX2Jsb2NrTmFtZSA9IGJsb2NrTmFtZTsKKyAgICAvKiogQHR5cGUge3N0
cmluZ30gKi8gdGhpcy5tX2luc3RhbmNlTmFtZTsKKyAgICAvKiogQHR5cGUge0FycmF5PGdsc1Vu
aWZvcm1CbG9ja0Nhc2UuVW5pZm9ybT59ICovIHRoaXMubV91bmlmb3JtcyA9IFtdOworICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1fYXJyYXlTaXplID0gMDsgLy8hPCBBcnJheSBzaXpl
IG9yIDAgaWYgbm90IGludGVyZmFjZSBibG9jayBhcnJheS4KKyAgICAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5tX2ZsYWdzID0gMDsKK307CisKKy8qKiBnZXRCbG9ja05hbWUKKyogQHJldHVy
biB7c3RyaW5nfQorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9jay5wcm90b3R5
cGUuZ2V0QmxvY2tOYW1lID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubV9ibG9ja05h
bWU7Cit9OworCisvKiogZ2V0SW5zdGFuY2VOYW1lCisqIEByZXR1cm4ge3N0cmluZ30KKyoqLwor
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2sucHJvdG90eXBlLmdldEluc3RhbmNlTmFt
ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1faW5zdGFuY2VOYW1lOworfTsKKwor
LyoqIGlzQXJyYXkKKyogQHJldHVybiB7Ym9vbGVhbn0KKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5Vbmlmb3JtQmxvY2sucHJvdG90eXBlLmlzQXJyYXkgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gdGhpcy5tX2FycmF5U2l6ZSA+IDA7Cit9OworCisvKiogZ2V0QXJyYXlTaXplCisqIEByZXR1
cm4ge251bWJlcn0KKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2sucHJvdG90
eXBlLmdldEFycmF5U2l6ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1fYXJyYXlT
aXplOworfTsKKworLyoqIGdldEZsYWdzCisqIEByZXR1cm4ge251bWJlcn0KKyoqLworZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2sucHJvdG90eXBlLmdldEZsYWdzID0gZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIHRoaXMubV9mbGFnczsKK307CisKKy8qKiBzZXRJbnN0YW5jZU5hbWUK
KyogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
QmxvY2sucHJvdG90eXBlLnNldEluc3RhbmNlTmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICB0
aGlzLm1faW5zdGFuY2VOYW1lID0gbmFtZTsKK307CisKKy8qKiBzZXRGbGFncworKiBAcGFyYW0g
e251bWJlcn0gZmxhZ3MKKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2sucHJv
dG90eXBlLnNldEZsYWdzID0gZnVuY3Rpb24oZmxhZ3MpIHsKKyAgICB0aGlzLm1fZmxhZ3MgPSBm
bGFnczsKK307CisKKy8qKiBzZXRBcnJheVNpemUKKyogQHBhcmFtIHtudW1iZXJ9IGFycmF5U2l6
ZQorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9jay5wcm90b3R5cGUuc2V0QXJy
YXlTaXplID0gZnVuY3Rpb24oYXJyYXlTaXplKSB7CisgICAgdGhpcy5tX2FycmF5U2l6ZSA9IGFy
cmF5U2l6ZTsKK307CisKKy8qKiBhZGRVbmlmb3JtCisqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtfSB1bmlmb3JtCisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJs
b2NrLnByb3RvdHlwZS5hZGRVbmlmb3JtID0gZnVuY3Rpb24odW5pZm9ybSkgeworICAgIHRoaXMu
bV91bmlmb3Jtcy5wdXNoKHVuaWZvcm0pOworfTsKKworLyoKKyAqIFVzaW5nIHVuaWZvcm0gZ2V0
dGVyIChnZXRVbmlmb3JtKSwKKyAqIGFuZCB1bmlmb3JtIGFycmF5IHNpemUgZ2V0dGVyIChjb3Vu
dFVuaWZvcm1zKQorICogaW5zdGVhZCBvZiBpdGVyYXRvcnMuCisqLworCisvKioKKyAqIGdldFVu
aWZvcm0KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICogQHJldHVybiB7Z2xzVW5pZm9ybUJs
b2NrQ2FzZS5Vbmlmb3JtfQorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9jay5w
cm90b3R5cGUuZ2V0VW5pZm9ybSA9IGZ1bmN0aW9uKGluZGV4KSB7CisgICAgaWYgKGluZGV4ID49
IDAgJiYgaW5kZXggPCB0aGlzLm1fdW5pZm9ybXMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhp
cy5tX3VuaWZvcm1zW2luZGV4XTsKKyAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJJbnZhbGlkIHVuaWZvcm0gaW5kZXggZm9yIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJs
b2NrJ3MgdW5pZm9ybXMiKTsKKyAgICB9Cit9OworCisvKioKKyAqIGNvdW50VW5pZm9ybXMKKyAq
IEByZXR1cm4ge251bWJlcn0KKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2su
cHJvdG90eXBlLmNvdW50VW5pZm9ybXMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5t
X3VuaWZvcm1zLmxlbmd0aDsKK307CisKKy8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFk
ZXJJbnRlcmZhY2UKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlNo
YWRlckludGVyZmFjZSA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlPn0gKi8gdGhpcy5tX3N0cnVjdHMgPSBbXTsKKyAgICAv
KiogQHR5cGUge0FycmF5PGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrPn0gKi8gdGhp
cy5tX3VuaWZvcm1CbG9ja3MgPSBbXTsKK307CisKKy8qKiBhbGxvY1N0cnVjdAorKiBAcGFyYW0g
e3N0cmluZ30gbmFtZQorKiBAcmV0dXJuIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9
CisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuU2hhZGVySW50ZXJmYWNlLnByb3RvdHlwZS5hbGxv
Y1N0cnVjdCA9IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAvL21fc3RydWN0cy5yZXNlcnZlKG1fc3Ry
dWN0cy5sZW5ndGggKyAxKTsKKyAgICB0aGlzLm1fc3RydWN0cy5wdXNoKGdsc1VuaWZvcm1CbG9j
a0Nhc2UubmV3U3RydWN0VHlwZShuYW1lKSk7CisgICAgcmV0dXJuIHRoaXMubV9zdHJ1Y3RzW3Ro
aXMubV9zdHJ1Y3RzLmxlbmd0aCAtIDFdOworfTsKKworLyoqIGZpbmRTdHJ1Y3QKKyogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyogQHJldHVybiB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBl
fQorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlNoYWRlckludGVyZmFjZS5wcm90b3R5cGUuZmlu
ZFN0cnVjdCA9IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB0
aGlzLm1fc3RydWN0cy5sZW5ndGg7IHBvcysrKSB7CisgICAgICAgIGlmICh0aGlzLm1fc3RydWN0
c1twb3NdLmdldFR5cGVOYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm1f
c3RydWN0c1twb3NdOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK307CisKKy8qKiBnZXROYW1l
ZFN0cnVjdHMKKyogQHBhcmFtIHtBcnJheTxnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGU+
fSBzdHJ1Y3RzCisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuU2hhZGVySW50ZXJmYWNlLnByb3Rv
dHlwZS5nZXROYW1lZFN0cnVjdHMgPSBmdW5jdGlvbihzdHJ1Y3RzKSB7CisgICAgZm9yICh2YXIg
cG9zID0gMDsgcG9zIDwgdGhpcy5tX3N0cnVjdHMubGVuZ3RoOyBwb3MrKykgeworICAgICAgICBp
ZiAodGhpcy5tX3N0cnVjdHNbcG9zXS5nZXRUeXBlTmFtZSgpICE9IHVuZGVmaW5lZCkKKyAgICAg
ICAgICAgIHN0cnVjdHMucHVzaCh0aGlzLm1fc3RydWN0c1twb3NdKTsKKyAgICB9Cit9OworCisv
KiogYWxsb2NCbG9jaworKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorKiBAcmV0dXJuIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30KKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFk
ZXJJbnRlcmZhY2UucHJvdG90eXBlLmFsbG9jQmxvY2sgPSBmdW5jdGlvbihuYW1lKSB7CisgICAg
dGhpcy5tX3VuaWZvcm1CbG9ja3MucHVzaChuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
QmxvY2sobmFtZSkpOworICAgIHJldHVybiB0aGlzLm1fdW5pZm9ybUJsb2Nrc1t0aGlzLm1fdW5p
Zm9ybUJsb2Nrcy5sZW5ndGggLSAxXTsKK307CisKKy8qKiBnZXROdW1Vbmlmb3JtQmxvY2tzCisq
IEByZXR1cm4ge251bWJlcn0KKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFkZXJJbnRlcmZh
Y2UucHJvdG90eXBlLmdldE51bVVuaWZvcm1CbG9ja3MgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gdGhpcy5tX3VuaWZvcm1CbG9ja3MubGVuZ3RoOworfTsKKworLyoqIGdldFVuaWZvcm1CbG9j
aworKiBAcGFyYW0ge251bWJlcn0gbmR4CisqIEByZXR1cm4ge2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUJsb2NrfQorKiovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlNoYWRlckludGVyZmFjZS5w
cm90b3R5cGUuZ2V0VW5pZm9ybUJsb2NrID0gZnVuY3Rpb24obmR4KSB7CisgICAgcmV0dXJuIHRo
aXMubV91bmlmb3JtQmxvY2tzW25keF07Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2NrTGF5b3V0RW50cnkgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4geworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBzaXplOiAwLAorICAgIC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyBuYW1lOiAnJywKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59
ICovIGFjdGl2ZVVuaWZvcm1JbmRpY2VzOiBbXQorICAgIH07Cit9OworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeSA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIG5hbWU6
ICcnLAorICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdHlwZTogZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlZBTElELAorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBz
aXplOiAwLAorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBibG9ja05keDogLTEsCisgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIG9mZnNldDogLTEsCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICov
IGFycmF5U3RyaWRlOiAtMSwKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gbWF0cml4U3RyaWRl
OiAtMSwKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIGlzUm93TWFqb3I6IGZhbHNlCisgICAg
fTsKK307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUxheW91dCA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5CbG9ja0xheW91dEVudHJ5Pn0qLyB0aGlzLmJsb2NrcyA9IFtdOworICAg
IC8qKiBAdHlwZSB7QXJyYXk8Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnk+
fSovIHRoaXMudW5pZm9ybXMgPSBbXTsKK307CisKKy8qKiBnZXRVbmlmb3JtSW5kZXgsIHJldHVy
bnMgYSB1bmlmb3JtIGluZGV4IG51bWJlciBpbiB0aGUgbGF5b3V0LAorICogZ2l2ZW4gdGhlIHVu
aWZvcm0ncyBuYW1lLgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEByZXR1cm4ge251bWJl
cn0gdW5pZm9ybSdzIGluZGV4CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91
dC5wcm90b3R5cGUuZ2V0VW5pZm9ybUluZGV4ID0gZnVuY3Rpb24obmFtZSkgeworICAgIGZvciAo
dmFyIG5keCA9IDA7IG5keCA8IHRoaXMudW5pZm9ybXMubGVuZ3RoOyBuZHgrKykgeworICAgICAg
ICBpZiAodGhpcy51bmlmb3Jtc1tuZHhdLm5hbWUgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVy
biBuZHg7CisgICAgfQorICAgIHJldHVybiAtMTsKK307CisKKy8qKiBnZXRCbG9ja0luZGV4LCBy
ZXR1cm5zIGEgYmxvY2sgaW5kZXggbnVtYmVyIGluIHRoZSBsYXlvdXQsCisgKiBnaXZlbiB0aGUg
YmxvY2sncyBuYW1lLgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgdGhlIG5hbWUgb2YgdGhlIGJs
b2NrCisgKiBAcmV0dXJuIHtudW1iZXJ9IGJsb2NrJ3MgaW5kZXgKKyAqLworZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5Vbmlmb3JtTGF5b3V0LnByb3RvdHlwZS5nZXRCbG9ja0luZGV4ID0gZnVuY3Rpb24o
bmFtZSkgeworICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMuYmxvY2tzLmxlbmd0aDsg
bmR4KyspIHsKKyAgICAgICAgaWYgKHRoaXMuYmxvY2tzW25keF0ubmFtZSA9PSBuYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIG5keDsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfTsKKworLyoqCisg
KiBAZW51bSB7bnVtYmVyfQorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGUgPSB7
CisgICAgQlVGRkVSTU9ERV9TSU5HTEU6IDAsIC8vITwgU2luZ2xlIGJ1ZmZlciBzaGFyZWQgYmV0
d2VlbiB1bmlmb3JtIGJsb2Nrcy4KKyAgICBCVUZGRVJNT0RFX1BFUl9CTE9DSzogMSAvLyE8IFBl
ci1ibG9jayBidWZmZXJzCit9OworCitnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGUuQlVG
RkVSTU9ERV9MQVNUID0gT2JqZWN0LmtleXMoZ2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2Rl
KS5sZW5ndGg7CisKKy8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5QcmVjaXNpb25GbGFnc0Zt
dAorICogQHBhcmFtIHtudW1iZXJ9IGZsYWdzCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2ds
c1VuaWZvcm1CbG9ja0Nhc2UuUHJlY2lzaW9uRmxhZ3NGbXQgPSBmdW5jdGlvbihmbGFncykgewor
ICAgIC8vIFByZWNpc2lvbi4KKyAgICBERV9BU1NFUlQoZGVNYXRoLmRlUG9wMzIoZmxhZ3MgJiAo
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX0xPVyB8IGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9NRURJVU0gfCBnbHNVbmlmb3JtQmxv
Y2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fSElHSCkpIDw9IDEpOworICAgIHZhciBzdHIg
PSAnJzsKKyAgICBzdHIgKz0gKGZsYWdzICYgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxh
Z3MuUFJFQ0lTSU9OX0xPVyA/ICdsb3dwJyA6CisgICAgICAgICAgICBmbGFncyAmIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlBSRUNJU0lPTl9NRURJVU0gPyAnbWVkaXVtcCcgOgor
ICAgICAgICAgICAgZmxhZ3MgJiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVD
SVNJT05fSElHSCA/ICdoaWdocCcgOiAnJyk7CisKKyAgICByZXR1cm4gc3RyOworfTsKKworLyoq
CisgKiBnbHNVbmlmb3JtQmxvY2tDYXNlLkxheW91dEZsYWdzRm10CisgKiBAcGFyYW0ge251bWJl
cn0gZmxhZ3NfCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
TGF5b3V0RmxhZ3NGbXQgPSBmdW5jdGlvbihmbGFnc18pIHsKKyAgICB2YXIgc3RyID0gJyc7Cisg
ICAgdmFyIGJpdERlc2MgPQorICAgIFt7IGJpdDogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
RmxhZ3MuTEFZT1VUX1NIQVJFRCwgdG9rZW46ICdzaGFyZWQnIH0sIHsgYml0OiBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfUEFDS0VELCB0b2tlbjogJ3BhY2tlZCcgfSwg
eyBiaXQ6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9TVEQxNDAsIHRv
a2VuOiAnc3RkMTQwJyB9LCB7IGJpdDogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
TEFZT1VUX1JPV19NQUpPUiwgdG9rZW46ICdyb3dfbWFqb3InIH0sIHsgYml0OiBnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfQ09MVU1OX01BSk9SLCB0b2tlbjogJ2NvbHVt
bl9tYWpvcicgfQorICAgIF07CisKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHJlbUJp
dHMgPSBmbGFnc187CisgICAgZm9yICh2YXIgZGVzY05keCA9IDA7IGRlc2NOZHggPCBiaXREZXNj
Lmxlbmd0aDsgZGVzY05keCsrKSB7CisgICAgICAgIGlmIChyZW1CaXRzICYgYml0RGVzY1tkZXNj
TmR4XS5iaXQpIHsKKyAgICAgICAgICAgIGlmIChyZW1CaXRzICE9IGZsYWdzXykKKyAgICAgICAg
ICAgICAgICBzdHIgKz0gJywgJzsKKyAgICAgICAgICAgIHN0ciArPSBiaXREZXNjW2Rlc2NOZHhd
LnRva2VuOworICAgICAgICAgICAgcmVtQml0cyAmPSAofmJpdERlc2NbZGVzY05keF0uYml0KSAm
IDB4RkZGRkZGRkY7IC8vMHhGRkZGRkZGRiB0cnVuY2F0ZSB0byAzMiBiaXQgdmFsdWUKKyAgICAg
ICAgfQorICAgIH0KKyAgICBERV9BU1NFUlQocmVtQml0cyA9PSAwKTsKKworICAgIHJldHVybiBz
dHI7Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitnbHNVbmlmb3JtQmxvY2tDYXNl
LlVuaWZvcm1CdWZmZXJNYW5hZ2VyID0gZnVuY3Rpb24ocmVuZGVyQ3R4KSB7CisgICAgdGhpcy5t
X3JlbmRlckN0eCA9IHJlbmRlckN0eDsKKyAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICov
IHRoaXMubV9idWZmZXJzID0gW107Cit9OworCisvKioKKyAqIGFsbG9jQnVmZmVyCisgKiBAcmV0
dXJuIHtXZWJHTEJ1ZmZlcn0KKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQnVmZmVy
TWFuYWdlci5wcm90b3R5cGUuYWxsb2NCdWZmZXIgPSBmdW5jdGlvbigpIHsKKyAgICAvKiogQHR5
cGUge1dlYkdMQnVmZmVyfSAqLyB2YXIgYnVmID0gdGhpcy5tX3JlbmRlckN0eC5jcmVhdGVCdWZm
ZXIoKTsKKworICAgIHRoaXMubV9idWZmZXJzLnB1c2goYnVmKTsKKworICAgIHJldHVybiBidWY7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzY3JpcHRpb24KKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CdWZmZXJNb2RlfSBi
dWZmZXJNb2RlCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFw
VGVzdH0KKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2tDYXNlID0gZnVuY3Rp
b24obmFtZSwgZGVzY3JpcHRpb24sIGJ1ZmZlck1vZGUpIHsKKyAgICB0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5jYWxsKHRoaXMsIG5hbWUsIGRlc2NyaXB0aW9uKTsKKyAgICAvKiogQHR5cGUge3N0cmlu
Z30gKi8gdGhpcy5tX25hbWUgPSBuYW1lOworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlz
Lm1fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1C
bG9ja0Nhc2UuQnVmZmVyTW9kZX0gKi8gdGhpcy5tX2J1ZmZlck1vZGUgPSBidWZmZXJNb2RlOwor
ICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFkZXJJbnRlcmZhY2V9ICovIHRo
aXMubV9pbnRlcmZhY2UgPSBuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFkZXJJbnRlcmZhY2Uo
KTsKK307CisKK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHRjdVRlc3RDYXNlLkRlcXBUZXN0LnByb3RvdHlwZSk7CitnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2tDYXNlOworCisvKioKKyAqIGdsc1VuaWZvcm1C
bG9ja0Nhc2UuZ2V0RGF0YVR5cGVCeXRlU2l6ZQorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRh
dGFUeXBlfSB0eXBlCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nh
c2UuZ2V0RGF0YVR5cGVCeXRlU2l6ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICByZXR1cm4gZ2x1
U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodHlwZSkgKiBkZU1hdGguSU5UMzJfU0la
RTsKK307CisKKy8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZXREYXRhVHlwZUJ5dGVBbGln
bm1lbnQKKyAqIEBwYXJhbSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gdHlwZQorICogQHJldHVy
biB7bnVtYmVyfQorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmdldERhdGFUeXBlQnl0ZUFsaWdu
bWVudCA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0
aWwuRGF0YVR5cGUuSU5UOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VDoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0w6IHJldHVybiAxICog
ZGVNYXRoLklOVDMyX1NJWkU7CisKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBl
LkZMT0FUX1ZFQzI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVD
MjoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMjoKKyAgICAg
ICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkJPT0xfVkVDMjogcmV0dXJuIDIgKiBkZU1h
dGguSU5UMzJfU0laRTsKKworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxP
QVRfVkVDMzoKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUMzOgor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVF9WRUMzOgorICAgICAgICBj
YXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuQk9PTF9WRUMzOiAvLyBGYWxsLXRocm91Z2ggdG8g
dmVjNAorCisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9WRUM0Ogor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UX1ZFQzQ6CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5VSU5UX1ZFQzQ6CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQ6IHJldHVybiA0ICogZGVNYXRoLklOVDMyX1NJWkU7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nh
c2UuZ2V0RGF0YVR5cGVBcnJheVN0cmlkZQorICogQHBhcmFtIHtnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlfSB0eXBlCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
Z2V0RGF0YVR5cGVBcnJheVN0cmlkZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICBERV9BU1NFUlQo
IWdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeCh0eXBlKSk7CisKKyAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGJhc2VTdHJpZGUgPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdldERhdGFU
eXBlQnl0ZVNpemUodHlwZSk7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2ZWM0QWxp
Z25tZW50ID0gZGVNYXRoLklOVDMyX1NJWkUgKiA0OworCisgICAgREVfQVNTRVJUKGJhc2VTdHJp
ZGUgPD0gdmVjNEFsaWdubWVudCk7CisgICAgcmV0dXJuIE1hdGgubWF4KGJhc2VTdHJpZGUsIHZl
YzRBbGlnbm1lbnQpOyAvLyBSZWFsbHk/IFNlZSBydWxlIDQuCit9OworCisvKioKKyAqIGdsc1Vu
aWZvcm1CbG9ja0Nhc2UuZGVSb3VuZFVwMzIgUm91bmRzIHVwICdhJyBpbiBjYXNlIHRoZQorICog
cmVsYXRpb25zaGlwIHdpdGggJ2InIGhhcyBhIGRlY2ltYWwgcGFydC4KKyAqIEBwYXJhbSB7bnVt
YmVyfSBhCisgKiBAcGFyYW0ge251bWJlcn0gYgorICogQHJldHVybiB7bnVtYmVyfQorICovCitn
bHNVbmlmb3JtQmxvY2tDYXNlLmRlUm91bmRVcDMyID0gZnVuY3Rpb24oYSwgYikgeworICAgIHZh
ciBkID0gTWF0aC50cnVuYyhhIC8gYik7CisgICAgcmV0dXJuIGQgKiBiID09IGEgPyBhIDogKGQg
KyAxKSAqIGI7Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0ZVN0ZDE0
MEJhc2VBbGlnbm1lbnQKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSB0
eXBlCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0
ZVN0ZDE0MEJhc2VBbGlnbm1lbnQgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciB2ZWM0QWxpZ25tZW50ID0gZGVNYXRoLklOVDMyX1NJWkUgKiA0OworCisg
ICAgaWYgKHR5cGUuaXNCYXNpY1R5cGUoKSkgeworICAgICAgICAvKiogQHR5cGUge2dsdVNoYWRl
clV0aWwuRGF0YVR5cGV9ICovIHZhciBiYXNpY1R5cGUgPSB0eXBlLmdldEJhc2ljVHlwZSgpOwor
CisgICAgICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoYmFzaWNUeXBlKSkg
eworICAgICAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNSb3dNYWpvciA9ICEh
KHR5cGUuZ2V0RmxhZ3MoKSAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9V
VF9ST1dfTUFKT1IpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2ZWNT
aXplID0gaXNSb3dNYWpvciA/IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1
bW5zKGJhc2ljVHlwZSkgOgorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1h
dHJpeE51bVJvd3MoYmFzaWNUeXBlKTsKKworICAgICAgICAgICAgcmV0dXJuIGdsc1VuaWZvcm1C
bG9ja0Nhc2UuZ2V0RGF0YVR5cGVBcnJheVN0cmlkZShnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBl
RmxvYXRWZWModmVjU2l6ZSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBn
bHNVbmlmb3JtQmxvY2tDYXNlLmdldERhdGFUeXBlQnl0ZUFsaWdubWVudChiYXNpY1R5cGUpOwor
ICAgIH0gZWxzZSBpZiAodHlwZS5pc0FycmF5VHlwZSgpKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgZWxlbUFsaWdubWVudCA9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0
ZVN0ZDE0MEJhc2VBbGlnbm1lbnQodHlwZS5nZXRFbGVtZW50VHlwZSgpKTsKKworICAgICAgICAv
LyBSb3VuZCB1cCB0byBhbGlnbm1lbnQgb2YgdmVjNAorICAgICAgICByZXR1cm4gZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5kZVJvdW5kVXAzMihlbGVtQWxpZ25tZW50LCB2ZWM0QWxpZ25tZW50KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBERV9BU1NFUlQodHlwZS5pc1N0cnVjdFR5cGUoKSk7CisKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBtYXhCYXNlQWxpZ25tZW50ID0gMDsKKwor
ICAgICAgICBmb3IgKHZhciBtZW1iZXJOZHggPSAwOyBtZW1iZXJOZHggPCB0eXBlLmdldFN0cnVj
dCgpLmdldFNpemUoKTsgbWVtYmVyTmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xz
VW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RNZW1iZXJ9ICovIHZhciBtZW1iZXJJdGVyID0gdHlwZS5n
ZXRTdHJ1Y3QoKS5nZXRNZW1iZXIobWVtYmVyTmR4KTsKKyAgICAgICAgICAgIG1heEJhc2VBbGln
bm1lbnQgPSBNYXRoLm1heChtYXhCYXNlQWxpZ25tZW50LCBnbHNVbmlmb3JtQmxvY2tDYXNlLmNv
bXB1dGVTdGQxNDBCYXNlQWxpZ25tZW50KG1lbWJlckl0ZXIuZ2V0VHlwZSgpKSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5kZVJvdW5kVXAzMihtYXhC
YXNlQWxpZ25tZW50LCB2ZWM0QWxpZ25tZW50KTsKKyAgICB9Cit9OworCisvKioKKyAqIG1lcmdl
TGF5b3V0ZmxhZ3MKKyAqIEBwYXJhbSB7bnVtYmVyfSBwcmV2RmxhZ3MKKyAqIEBwYXJhbSB7bnVt
YmVyfSBuZXdGbGFncworICogQHJldHVybiB7bnVtYmVyfQorICovCitnbHNVbmlmb3JtQmxvY2tD
YXNlLm1lcmdlTGF5b3V0RmxhZ3MgPSBmdW5jdGlvbihwcmV2RmxhZ3MsIG5ld0ZsYWdzKSB7Cisg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBwYWNraW5nTWFzayA9IGdsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9QQUNLRUQgfCBnbHNVbmlmb3JtQmxvY2tDYXNlLlVu
aWZvcm1GbGFncy5MQVlPVVRfU0hBUkVEIHwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxh
Z3MuTEFZT1VUX1NURDE0MDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG1hdHJpeE1h
c2sgPSBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5MQVlPVVRfUk9XX01BSk9SIHwg
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX0NPTFVNTl9NQUpPUjsKKwor
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbWVyZ2VkRmxhZ3MgPSAwOworCisgICAgbWVy
Z2VkRmxhZ3MgfD0gKChuZXdGbGFncyAmIHBhY2tpbmdNYXNrKSA/IG5ld0ZsYWdzIDogcHJldkZs
YWdzKSAmIHBhY2tpbmdNYXNrOworICAgIG1lcmdlZEZsYWdzIHw9ICgobmV3RmxhZ3MgJiBtYXRy
aXhNYXNrKSA/IG5ld0ZsYWdzIDogcHJldkZsYWdzKSAmIG1hdHJpeE1hc2s7CisKKyAgICByZXR1
cm4gbWVyZ2VkRmxhZ3M7Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0
ZVN0ZDE0MExheW91dF9CCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxh
eW91dH0gbGF5b3V0CisgKiBAcGFyYW0ge251bWJlcn0gY3VyT2Zmc2V0CisgKiBAcGFyYW0ge251
bWJlcn0gY3VyQmxvY2tOZHgKKyAqIEBwYXJhbSB7c3RyaW5nfSBjdXJQcmVmaXgKKyAqIEBwYXJh
bSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfSB0eXBlCisgKiBAcGFyYW0ge251bWJlcn0g
bGF5b3V0RmxhZ3MKKyAqIEByZXR1cm4ge251bWJlcn0gLy9UaGlzIGlzIHdoYXQgd291bGQgcmV0
dXJuIGluIHRoZSBjdXJPZmZzZXQgb3V0cHV0IHBhcmFtZXRlciBpbiB0aGUgb3JpZ2luYWwgQysr
IHByb2plY3QuCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0ZVN0ZDE0MExheW91dF9C
ID0gZnVuY3Rpb24obGF5b3V0LCBjdXJPZmZzZXQsIGN1ckJsb2NrTmR4LCBjdXJQcmVmaXgsIHR5
cGUsIGxheW91dEZsYWdzKSB7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBiYXNlQWxp
Z25tZW50ID0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5jb21wdXRlU3RkMTQwQmFzZUFsaWdubWVudCh0
eXBlKTsKKyAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dEVu
dHJ5fSAqLyB2YXIgZW50cnk7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzdHJpZGU7
CisgICAgLyoqIEB0eXBlIHtnbHVTaGFkZXJVdGlsLkRhdGFUeXBlfSAqLyB2YXIgZWxlbUJhc2lj
VHlwZTsKKyAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1Jvd01ham9yOworICAgIC8q
KiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgdmVjU2l6ZTsKKyAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG51bVZlY3M7CisKKyAgICBjdXJPZmZzZXQgPSBkZU1hdGguZGVBbGlnbjMyKGN1ck9m
ZnNldCwgYmFzZUFsaWdubWVudCk7CisKKyAgICBpZiAodHlwZS5pc0Jhc2ljVHlwZSgpKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0gKi8gdmFyIGJhc2ljVHlw
ZSA9IHR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAgIGVudHJ5ID0gbmV3IGdsc1VuaWZvcm1C
bG9ja0Nhc2UuVW5pZm9ybUxheW91dEVudHJ5KCk7CisKKyAgICAgICAgZW50cnkubmFtZSA9IGN1
clByZWZpeDsKKyAgICAgICAgZW50cnkudHlwZSA9IGJhc2ljVHlwZTsKKyAgICAgICAgZW50cnku
c2l6ZSA9IDE7CisgICAgICAgIGVudHJ5LmFycmF5U3RyaWRlID0gMDsKKyAgICAgICAgZW50cnku
bWF0cml4U3RyaWRlID0gMDsKKyAgICAgICAgZW50cnkuYmxvY2tOZHggPSBjdXJCbG9ja05keDsK
KworICAgICAgICBpZiAoZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KGJhc2ljVHlwZSkp
IHsKKyAgICAgICAgICAgIC8vIEFycmF5IG9mIHZlY3RvcnMgYXMgc3BlY2lmaWVkIGluIHJ1bGVz
IDUgJiA3LgorICAgICAgICAgICAgaXNSb3dNYWpvciA9ICEhKGxheW91dEZsYWdzICYgZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX1JPV19NQUpPUik7CisgICAgICAgICAg
ICB2ZWNTaXplID0gaXNSb3dNYWpvciA/IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhO
dW1Db2x1bW5zKGJhc2ljVHlwZSkgOgorICAgICAgICAgICAgZ2x1U2hhZGVyVXRpbC5nZXREYXRh
VHlwZU1hdHJpeE51bVJvd3MoYmFzaWNUeXBlKTsKKyAgICAgICAgICAgIG51bVZlY3MgPSBpc1Jv
d01ham9yID8gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bVJvd3MoYmFzaWNUeXBl
KSA6CisgICAgICAgICAgICBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1u
cyhiYXNpY1R5cGUpOworICAgICAgICAgICAgc3RyaWRlID0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5n
ZXREYXRhVHlwZUFycmF5U3RyaWRlKGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZlYyh2
ZWNTaXplKSk7CisKKyAgICAgICAgICAgIGVudHJ5Lm9mZnNldCA9IGN1ck9mZnNldDsKKyAgICAg
ICAgICAgIGVudHJ5Lm1hdHJpeFN0cmlkZSA9IHN0cmlkZTsKKyAgICAgICAgICAgIGVudHJ5Lmlz
Um93TWFqb3IgPSBpc1Jvd01ham9yOworCisgICAgICAgICAgICBjdXJPZmZzZXQgKz0gbnVtVmVj
cyAqIHN0cmlkZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNjYWxhciBvciB2
ZWN0b3IuCisgICAgICAgICAgICBlbnRyeS5vZmZzZXQgPSBjdXJPZmZzZXQ7CisKKyAgICAgICAg
ICAgIGN1ck9mZnNldCArPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdldERhdGFUeXBlQnl0ZVNpemUo
YmFzaWNUeXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIGxheW91dC51bmlmb3Jtcy5wdXNoKGVu
dHJ5KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUuaXNBcnJheVR5cGUoKSkgeworICAgICAgICAvKiog
QHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gKi8gdmFyIGVsZW1UeXBlID0gdHlw
ZS5nZXRFbGVtZW50VHlwZSgpOworCisgICAgICAgIGlmIChlbGVtVHlwZS5pc0Jhc2ljVHlwZSgp
ICYmICFnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoZWxlbVR5cGUuZ2V0QmFzaWNUeXBl
KCkpKSB7CisgICAgICAgICAgICAvLyBBcnJheSBvZiBzY2FsYXJzIG9yIHZlY3RvcnMuCisgICAg
ICAgICAgICBlbGVtQmFzaWNUeXBlID0gZWxlbVR5cGUuZ2V0QmFzaWNUeXBlKCk7CisgICAgICAg
ICAgICBlbnRyeSA9IG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeSgp
OworICAgICAgICAgICAgc3RyaWRlID0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZXREYXRhVHlwZUFy
cmF5U3RyaWRlKGVsZW1CYXNpY1R5cGUpOworCisgICAgICAgICAgICBlbnRyeS5uYW1lID0gY3Vy
UHJlZml4ICsgJ1swXSc7IC8vIEFycmF5IHVuaWZvcm1zIGFyZSBhbHdheXMgcG9zdGZpeGVkIHdp
dGggWzBdCisgICAgICAgICAgICBlbnRyeS50eXBlID0gZWxlbUJhc2ljVHlwZTsKKyAgICAgICAg
ICAgIGVudHJ5LmJsb2NrTmR4ID0gY3VyQmxvY2tOZHg7CisgICAgICAgICAgICBlbnRyeS5vZmZz
ZXQgPSBjdXJPZmZzZXQ7CisgICAgICAgICAgICBlbnRyeS5zaXplID0gdHlwZS5nZXRBcnJheVNp
emUoKTsKKyAgICAgICAgICAgIGVudHJ5LmFycmF5U3RyaWRlID0gc3RyaWRlOworICAgICAgICAg
ICAgZW50cnkubWF0cml4U3RyaWRlID0gMDsKKworICAgICAgICAgICAgY3VyT2Zmc2V0ICs9IHN0
cmlkZSAqIHR5cGUuZ2V0QXJyYXlTaXplKCk7CisKKyAgICAgICAgICAgIGxheW91dC51bmlmb3Jt
cy5wdXNoKGVudHJ5KTsKKyAgICAgICAgfSBlbHNlIGlmIChlbGVtVHlwZS5pc0Jhc2ljVHlwZSgp
ICYmIGdsdVNoYWRlclV0aWwuaXNEYXRhVHlwZU1hdHJpeChlbGVtVHlwZS5nZXRCYXNpY1R5cGUo
KSkpIHsKKyAgICAgICAgICAgIC8vIEFycmF5IG9mIG1hdHJpY2VzLgorICAgICAgICAgICAgZWxl
bUJhc2ljVHlwZSA9IGVsZW1UeXBlLmdldEJhc2ljVHlwZSgpOworICAgICAgICAgICAgaXNSb3dN
YWpvciA9ICEhKGxheW91dEZsYWdzICYgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3Mu
TEFZT1VUX1JPV19NQUpPUik7CisgICAgICAgICAgICB2ZWNTaXplID0gaXNSb3dNYWpvciA/IGds
dVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5zKGVsZW1CYXNpY1R5cGUpIDoK
KyAgICAgICAgICAgIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKGVsZW1C
YXNpY1R5cGUpOworICAgICAgICAgICAgbnVtVmVjcyA9IGlzUm93TWFqb3IgPyBnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlTWF0cml4TnVtUm93cyhlbGVtQmFzaWNUeXBlKSA6CisgICAgICAgICAg
ICBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyhlbGVtQmFzaWNUeXBl
KTsKKyAgICAgICAgICAgIHN0cmlkZSA9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2V0RGF0YVR5cGVB
cnJheVN0cmlkZShnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlRmxvYXRWZWModmVjU2l6ZSkpOwor
ICAgICAgICAgICAgZW50cnkgPSBuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0
RW50cnkoKTsKKworICAgICAgICAgICAgZW50cnkubmFtZSA9IGN1clByZWZpeCArICdbMF0nOyAv
LyBBcnJheSB1bmlmb3JtcyBhcmUgYWx3YXlzIHBvc3RmaXhlZCB3aXRoIFswXQorICAgICAgICAg
ICAgZW50cnkudHlwZSA9IGVsZW1CYXNpY1R5cGU7CisgICAgICAgICAgICBlbnRyeS5ibG9ja05k
eCA9IGN1ckJsb2NrTmR4OworICAgICAgICAgICAgZW50cnkub2Zmc2V0ID0gY3VyT2Zmc2V0Owor
ICAgICAgICAgICAgZW50cnkuc2l6ZSA9IHR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAgICAg
ICBlbnRyeS5hcnJheVN0cmlkZSA9IHN0cmlkZSAqIG51bVZlY3M7CisgICAgICAgICAgICBlbnRy
eS5tYXRyaXhTdHJpZGUgPSBzdHJpZGU7CisgICAgICAgICAgICBlbnRyeS5pc1Jvd01ham9yID0g
aXNSb3dNYWpvcjsKKworICAgICAgICAgICAgY3VyT2Zmc2V0ICs9IG51bVZlY3MgKiB0eXBlLmdl
dEFycmF5U2l6ZSgpICogc3RyaWRlOworCisgICAgICAgICAgICBsYXlvdXQudW5pZm9ybXMucHVz
aChlbnRyeSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBERV9BU1NFUlQoZWxlbVR5
cGUuaXNTdHJ1Y3RUeXBlKCkgfHwgZWxlbVR5cGUuaXNBcnJheVR5cGUoKSk7CisKKyAgICAgICAg
ICAgIGZvciAodmFyIGVsZW1OZHggPSAwOyBlbGVtTmR4IDwgdHlwZS5nZXRBcnJheVNpemUoKTsg
ZWxlbU5keCsrKQorICAgICAgICAgICAgICAgIGN1ck9mZnNldCA9IGdsc1VuaWZvcm1CbG9ja0Nh
c2UuY29tcHV0ZVN0ZDE0MExheW91dF9CKGxheW91dCwgY3VyT2Zmc2V0LCBjdXJCbG9ja05keCwg
Y3VyUHJlZml4ICsgJ1snICsgZWxlbU5keCArICddJywgdHlwZS5nZXRFbGVtZW50VHlwZSgpLCBs
YXlvdXRGbGFncyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBERV9BU1NFUlQo
dHlwZS5pc1N0cnVjdFR5cGUoKSk7CisKKyAgICAgICAgZm9yICh2YXIgbWVtYmVyTmR4ID0gMDsg
bWVtYmVyTmR4IDwgdHlwZS5nZXRTdHJ1Y3QoKS5nZXRTaXplKCk7IG1lbWJlck5keCsrKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVtYmVyfSAq
LyB2YXIgbWVtYmVySXRlciA9IHR5cGUuZ2V0U3RydWN0KCkuZ2V0TWVtYmVyKG1lbWJlck5keCk7
CisgICAgICAgICAgICBjdXJPZmZzZXQgPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbXB1dGVTdGQx
NDBMYXlvdXRfQihsYXlvdXQsIGN1ck9mZnNldCwgY3VyQmxvY2tOZHgsIGN1clByZWZpeCArICcu
JyArIG1lbWJlckl0ZXIuZ2V0TmFtZSgpLCBtZW1iZXJJdGVyLmdldFR5cGUoKSwgbGF5b3V0Rmxh
Z3MpOworICAgICAgICB9CisKKyAgICAgICAgY3VyT2Zmc2V0ID0gZGVNYXRoLmRlQWxpZ24zMihj
dXJPZmZzZXQsIGJhc2VBbGlnbm1lbnQpOworICAgIH0KKworICAgIHJldHVybiBjdXJPZmZzZXQ7
Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0ZVN0ZDE0MExheW91dAor
ICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXR9IGxheW91dAorICog
QHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlNoYWRlckludGVyZmFjZX0gc2ludGVyZmFjZQor
ICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbXB1dGVTdGQxNDBMYXlvdXQgPSBmdW5jdGlvbihs
YXlvdXQsIHNpbnRlcmZhY2UpIHsKKyAgICAvLyBcdG9kbyBbMjAxMi0wMS0yMyBweXJ5XSBVbmlm
b3JtcyBpbiBkZWZhdWx0IGJsb2NrLgorCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBu
dW1Vbmlmb3JtQmxvY2tzID0gc2ludGVyZmFjZS5nZXROdW1Vbmlmb3JtQmxvY2tzKCk7CisKKyAg
ICBmb3IgKHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgbnVtVW5pZm9ybUJsb2NrczsgYmxv
Y2tOZHgrKykgeworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9y
bUJsb2NrfSAqLyB2YXIgYmxvY2sgPSBzaW50ZXJmYWNlLmdldFVuaWZvcm1CbG9jayhibG9ja05k
eCk7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGhhc0luc3RhbmNlTmFtZSA9
IGJsb2NrLmdldEluc3RhbmNlTmFtZSgpICE9PSB1bmRlZmluZWQ7CisgICAgICAgIC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyB2YXIgYmxvY2tQcmVmaXggPSBoYXNJbnN0YW5jZU5hbWUgPyAoYmxvY2su
Z2V0QmxvY2tOYW1lKCkgKyAnLicpIDogJyc7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgY3VyT2Zmc2V0ID0gMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBh
Y3RpdmVCbG9ja05keCA9IGxheW91dC5ibG9ja3MubGVuZ3RoOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIGZpcnN0VW5pZm9ybU5keCA9IGxheW91dC51bmlmb3Jtcy5sZW5ndGg7
CisKKyAgICAgICAgZm9yICh2YXIgdWJOZHggPSAwOyB1Yk5keCA8IGJsb2NrLmNvdW50VW5pZm9y
bXMoKTsgdWJOZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tD
YXNlLlVuaWZvcm19ICovIHZhciB1bmlmb3JtID0gYmxvY2suZ2V0VW5pZm9ybSh1Yk5keCk7Cisg
ICAgICAgICAgICBjdXJPZmZzZXQgPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbXB1dGVTdGQxNDBM
YXlvdXRfQihsYXlvdXQsIGN1ck9mZnNldCwgYWN0aXZlQmxvY2tOZHgsIGJsb2NrUHJlZml4ICsg
dW5pZm9ybS5nZXROYW1lKCksIHVuaWZvcm0uZ2V0VHlwZSgpLCBnbHNVbmlmb3JtQmxvY2tDYXNl
Lm1lcmdlTGF5b3V0RmxhZ3MoYmxvY2suZ2V0RmxhZ3MoKSwgdW5pZm9ybS5nZXRGbGFncygpKSk7
CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHVuaWZvcm1J
bmRpY2VzRW5kID0gbGF5b3V0LnVuaWZvcm1zLmxlbmd0aDsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIHZhciBibG9ja1NpemUgPSBjdXJPZmZzZXQ7CisgICAgICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgbnVtSW5zdGFuY2VzID0gYmxvY2suaXNBcnJheSgpID8gYmxvY2suZ2V0
QXJyYXlTaXplKCkgOiAxOworCisgICAgICAgIC8vIENyZWF0ZSBibG9jayBsYXlvdXQgZW50cmll
cyBmb3IgZWFjaCBpbnN0YW5jZS4KKyAgICAgICAgZm9yICh2YXIgaW5zdGFuY2VOZHggPSAwOyBp
bnN0YW5jZU5keCA8IG51bUluc3RhbmNlczsgaW5zdGFuY2VOZHgrKykgeworICAgICAgICAgICAg
Ly8gQWxsb2NhdGUgZW50cnkgZm9yIGluc3RhbmNlLgorICAgICAgICAgICAgbGF5b3V0LmJsb2Nr
cy5wdXNoKG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2NrTGF5b3V0RW50cnkoKSk7CisgICAg
ICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tMYXlvdXRFbnRyeX0g
Ki8gdmFyIGJsb2NrRW50cnkgPSBsYXlvdXQuYmxvY2tzW2xheW91dC5ibG9ja3MubGVuZ3RoIC0g
MV07CisKKyAgICAgICAgICAgIGJsb2NrRW50cnkubmFtZSA9IGJsb2NrLmdldEJsb2NrTmFtZSgp
OworICAgICAgICAgICAgYmxvY2tFbnRyeS5zaXplID0gYmxvY2tTaXplOworCisgICAgICAgICAg
ICAvLyBDb21wdXRlIGFjdGl2ZSB1bmlmb3JtIHNldCBmb3IgYmxvY2suCisgICAgICAgICAgICBm
b3IgKHZhciB1bmlmb3JtTmR4ID0gZmlyc3RVbmlmb3JtTmR4OyB1bmlmb3JtTmR4IDwgdW5pZm9y
bUluZGljZXNFbmQ7IHVuaWZvcm1OZHgrKykKKyAgICAgICAgICAgICAgICBibG9ja0VudHJ5LmFj
dGl2ZVVuaWZvcm1JbmRpY2VzLnB1c2godW5pZm9ybU5keCk7CisKKyAgICAgICAgICAgIGlmIChi
bG9jay5pc0FycmF5KCkpCisgICAgICAgICAgICAgICAgYmxvY2tFbnRyeS5uYW1lICs9ICdbJyAr
IGluc3RhbmNlTmR4ICsgJ10nOworICAgICAgICB9CisgICAgfQorfTsKKworLyoqCisgKiBnbHNV
bmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlVmFsdWUgLSBWYWx1ZSBnZW5lcmF0b3IKKyAqIEBwYXJh
bSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnl9IGVudHJ5CisgKiBAcGFy
YW0ge1VpbnQ4QXJyYXl9IGJhc2VQdHIKKyAqIEBwYXJhbSB7ZGVSYW5kb20uUmFuZG9tfSBybmQK
KyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZVZhbHVlID0gZnVuY3Rpb24oZW50cnks
IGJhc2VQdHIsIHJuZCkgeworICAgIC8qKiBAdHlwZSB7Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZX0q
LyB2YXIgc2NhbGFyVHlwZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJUeXBlQXNE
YXRhVHlwZShlbnRyeS50eXBlKTsgLy9Vc2luZyBhIG1vcmUgYXBwcm9wcmlhdGUgZnVuY3Rpb24g
aW4gdGhpcyBjYXNlLgorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2FsYXJTaXplKGVudHJ5LnR5cGUpOworICAgIC8q
KiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzTWF0cml4ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFU
eXBlTWF0cml4KGVudHJ5LnR5cGUpOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVt
VmVjcyA9IGlzTWF0cml4ID8gKGVudHJ5LmlzUm93TWFqb3IgPyBnbHVTaGFkZXJVdGlsLmdldERh
dGFUeXBlTWF0cml4TnVtUm93cyhlbnRyeS50eXBlKSA6IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVNYXRyaXhOdW1Db2x1bW5zKGVudHJ5LnR5cGUpKSA6IDE7CisgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciB2ZWNTaXplID0gc2NhbGFyU2l6ZSAvIG51bVZlY3M7CisgICAgLyoqIEB0eXBl
IHtib29sZWFufSAqLyB2YXIgaXNBcnJheSA9IGVudHJ5LnNpemUgPiAxOworICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgY29tcFNpemUgPSBkZU1hdGguSU5UMzJfU0laRTsKKworICAgIERF
X0FTU0VSVChzY2FsYXJTaXplICUgbnVtVmVjcyA9PSAwKTsKKworICAgIGZvciAodmFyIGVsZW1O
ZHggPSAwOyBlbGVtTmR4IDwgZW50cnkuc2l6ZTsgZWxlbU5keCsrKSB7CisgICAgICAgIC8qKiBA
dHlwZSB7VWludDhBcnJheX0gKi8gdmFyIGVsZW1QdHIgPSBiYXNlUHRyLnN1YmFycmF5KGVudHJ5
Lm9mZnNldCArIChpc0FycmF5ID8gZWxlbU5keCAqIGVudHJ5LmFycmF5U3RyaWRlIDogMCkpOwor
CisgICAgICAgIGZvciAodmFyIHZlY05keCA9IDA7IHZlY05keCA8IG51bVZlY3M7IHZlY05keCsr
KSB7CisgICAgICAgICAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHZhciB2ZWNQdHIgPSBl
bGVtUHRyLnN1YmFycmF5KGlzTWF0cml4ID8gdmVjTmR4ICogZW50cnkubWF0cml4U3RyaWRlIDog
MCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGNvbXBOZHggPSAwOyBjb21wTmR4IDwgdmVjU2l6
ZTsgY29tcE5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAq
LyB2YXIgY29tcFB0ciA9IHZlY1B0ci5zdWJhcnJheShjb21wU2l6ZSAqIGNvbXBOZHgpOworICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgX3JhbmRvbTsKKworICAgICAg
ICAgICAgICAgIC8vQ29weSB0aGUgcmFuZG9tIGRhdGEgYnl0ZSBwZXIgYnl0ZQorICAgICAgICAg
ICAgICAgIHZhciBfc2l6ZSA9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2V0RGF0YVR5cGVCeXRlU2l6
ZShzY2FsYXJUeXBlKTsKKworICAgICAgICAgICAgICAgIHZhciBuYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKF9zaXplKTsKKyAgICAgICAgICAgICAgICB2YXIgbnZpZXcgPSBuZXcgRGF0YVZpZXco
bmJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNjYWxhclR5cGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUOgorICAgICAg
ICAgICAgICAgICAgICAgICAgX3JhbmRvbSA9IHJuZC5nZXRJbnQoLTksIDkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbnZpZXcuc2V0RmxvYXQzMigwLCBfcmFuZG9tLCBsaXR0bGVFbmRpYW4p
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBf
cmFuZG9tID0gcm5kLmdldEludCgtOSwgOSk7CisgICAgICAgICAgICAgICAgICAgICAgICBudmll
dy5zZXRJbnQzMigwLCBfcmFuZG9tLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRh
VHlwZS5VSU5UOgorICAgICAgICAgICAgICAgICAgICAgICAgX3JhbmRvbSA9IHJuZC5nZXRJbnQo
MCwgOSk7CisgICAgICAgICAgICAgICAgICAgICAgICBudmlldy5zZXRVaW50MzIoMCwgX3JhbmRv
bSwgbGl0dGxlRW5kaWFuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAvLyBcbm90ZSBSYW5kb20gYml0IHBhdHRlcm4gaXMgdXNlZCBmb3IgdHJ1
ZSB2YWx1ZXMuIFNwZWMgc3RhdGVzIHRoYXQgYWxsIG5vbi16ZXJvIHZhbHVlcyBhcmUKKyAgICAg
ICAgICAgICAgICAgICAgLy8gICAgICAgaW50ZXJwcmV0ZWQgYXMgdHJ1ZSBidXQgc29tZSBpbXBs
ZW1lbnRhdGlvbnMgZmFpbCB0aGlzLgorICAgICAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUuQk9PTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9yYW5kb20gPSBy
bmQuZ2V0Qm9vbCgpID8gMSA6IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBudmlldy5zZXRV
aW50MzIoMCwgX3JhbmRvbSwgbGl0dGxlRW5kaWFuKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgREVfQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9zaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29tcFB0cltpXSA9IG52aWV3LmdldFVpbnQ4KGkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5nZW5lcmF0ZVZhbHVlcworICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVu
aWZvcm1MYXlvdXR9IGxheW91dAorICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2Nr
UG9pbnRlcnN9IGJsb2NrUG9pbnRlcnMKKyAqIEBwYXJhbSB7bnVtYmVyfSBzZWVkCisgKi8KK2ds
c1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVWYWx1ZXMgPSBmdW5jdGlvbihsYXlvdXQsIGJsb2Nr
UG9pbnRlcnMsIHNlZWQpIHsKKyAgICAvKiogQHR5cGXCoCB7ZGVSYW5kb20uUmFuZG9tfSAqLyB2
YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShzZWVkKTsKKyAgICAvKiogQHR5cGXCoCB7bnVt
YmVyfSAqLyB2YXIgbnVtQmxvY2tzID0gbGF5b3V0LmJsb2Nrcy5sZW5ndGg7CisKKyAgICBmb3Ig
KHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgbnVtQmxvY2tzOyBibG9ja05keCsrKSB7Cisg
ICAgICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdmFyIGJhc2VQdHIgPSBibG9ja1BvaW50
ZXJzLmZpbmQoYmxvY2tOZHgpOworICAgICAgICAvKiogQHR5cGXCoCB7bnVtYmVyfSAqLyB2YXIg
bnVtRW50cmllcyA9IGxheW91dC5ibG9ja3NbYmxvY2tOZHhdLmFjdGl2ZVVuaWZvcm1JbmRpY2Vz
Lmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBlbnRyeU5keCA9IDA7IGVudHJ5TmR4IDwgbnVt
RW50cmllczsgZW50cnlOZHgrKykgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeX0gKi8gdmFyIGVudHJ5ID0gbGF5b3V0LnVuaWZv
cm1zW2xheW91dC5ibG9ja3NbYmxvY2tOZHhdLmFjdGl2ZVVuaWZvcm1JbmRpY2VzW2VudHJ5TmR4
XV07CisgICAgICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlVmFsdWUoZW50cnks
IGJhc2VQdHIsIHJuZCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisvLyBTaGFkZXIgZ2VuZXJh
dG9yLgorCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2V0Q29tcGFyZUZ1bmNGb3JUeXBl
CisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5cGV9IHR5cGUKKyAqIEByZXR1cm4ge3N0
cmluZ30KKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZXRDb21wYXJlRnVuY0ZvclR5cGUgPSBm
dW5jdGlvbih0eXBlKSB7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hh
ZGVyVXRpbC5EYXRhVHlwZS5GTE9BVDogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfZmxv
YXQgKGhpZ2hwIGZsb2F0IGEsIGhpZ2hwIGZsb2F0IGIpIHsgcmV0dXJuIGFicyhhIC0gYikgPCAw
LjA1ID8gMS4wIDogMC4wOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfVkVDMjogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdmVjMiAoaGlnaHAg
dmVjMiBhLCBoaWdocCB2ZWMyIGIpIHsgcmV0dXJuIGNvbXBhcmVfZmxvYXQoYS54LCBiLngpKmNv
bXBhcmVfZmxvYXQoYS55LCBiLnkpOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVRfVkVDMzogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdmVjMyAo
aGlnaHAgdmVjMyBhLCBoaWdocCB2ZWMzIGIpIHsgcmV0dXJuIGNvbXBhcmVfZmxvYXQoYS54LCBi
LngpKmNvbXBhcmVfZmxvYXQoYS55LCBiLnkpKmNvbXBhcmVfZmxvYXQoYS56LCBiLnopOyB9XG4n
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDNDogcmV0dXJu
ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdmVjNCAoaGlnaHAgdmVjNCBhLCBoaWdocCB2ZWM0IGIp
IHsgcmV0dXJuIGNvbXBhcmVfZmxvYXQoYS54LCBiLngpKmNvbXBhcmVfZmxvYXQoYS55LCBiLnkp
KmNvbXBhcmVfZmxvYXQoYS56LCBiLnopKmNvbXBhcmVfZmxvYXQoYS53LCBiLncpOyB9XG4nOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUMjogcmV0dXJuICdt
ZWRpdW1wIGZsb2F0IGNvbXBhcmVfbWF0MiAoaGlnaHAgbWF0MiBhLCBoaWdocCBtYXQyIGIpIHsg
cmV0dXJuIGNvbXBhcmVfdmVjMihhWzBdLCBiWzBdKSpjb21wYXJlX3ZlYzIoYVsxXSwgYlsxXSk7
IH1cbic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6
IHJldHVybiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX21hdDJ4MyAoaGlnaHAgbWF0MngzIGEsIGhp
Z2hwIG1hdDJ4MyBiKSB7IHJldHVybiBjb21wYXJlX3ZlYzMoYVswXSwgYlswXSkqY29tcGFyZV92
ZWMzKGFbMV0sIGJbMV0pOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUMlg0OiByZXR1cm4gJ21lZGl1bXAgZmxvYXQgY29tcGFyZV9tYXQyeDQgKGhp
Z2hwIG1hdDJ4NCBhLCBoaWdocCBtYXQyeDQgYikgeyByZXR1cm4gY29tcGFyZV92ZWM0KGFbMF0s
IGJbMF0pKmNvbXBhcmVfdmVjNChhWzFdLCBiWzFdKTsgfVxuJzsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDNYMjogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNv
bXBhcmVfbWF0M3gyIChoaWdocCBtYXQzeDIgYSwgaGlnaHAgbWF0M3gyIGIpIHsgcmV0dXJuIGNv
bXBhcmVfdmVjMihhWzBdLCBiWzBdKSpjb21wYXJlX3ZlYzIoYVsxXSwgYlsxXSkqY29tcGFyZV92
ZWMyKGFbMl0sIGJbMl0pOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5
cGUuRkxPQVRfTUFUMzogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfbWF0MyAoaGlnaHAg
bWF0MyBhLCBoaWdocCBtYXQzIGIpIHsgcmV0dXJuIGNvbXBhcmVfdmVjMyhhWzBdLCBiWzBdKSpj
b21wYXJlX3ZlYzMoYVsxXSwgYlsxXSkqY29tcGFyZV92ZWMzKGFbMl0sIGJbMl0pOyB9XG4nOwor
ICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUM1g0OiByZXR1cm4g
J21lZGl1bXAgZmxvYXQgY29tcGFyZV9tYXQzeDQgKGhpZ2hwIG1hdDN4NCBhLCBoaWdocCBtYXQz
eDQgYikgeyByZXR1cm4gY29tcGFyZV92ZWM0KGFbMF0sIGJbMF0pKmNvbXBhcmVfdmVjNChhWzFd
LCBiWzFdKSpjb21wYXJlX3ZlYzQoYVsyXSwgYlsyXSk7IH1cbic7CisgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDI6IHJldHVybiAnbWVkaXVtcCBmbG9hdCBj
b21wYXJlX21hdDR4MiAoaGlnaHAgbWF0NHgyIGEsIGhpZ2hwIG1hdDR4MiBiKSB7IHJldHVybiBj
b21wYXJlX3ZlYzIoYVswXSwgYlswXSkqY29tcGFyZV92ZWMyKGFbMV0sIGJbMV0pKmNvbXBhcmVf
dmVjMihhWzJdLCBiWzJdKSpjb21wYXJlX3ZlYzIoYVszXSwgYlszXSk7IH1cbic7CisgICAgICAg
IGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0WDM6IHJldHVybiAnbWVkaXVt
cCBmbG9hdCBjb21wYXJlX21hdDR4MyAoaGlnaHAgbWF0NHgzIGEsIGhpZ2hwIG1hdDR4MyBiKSB7
IHJldHVybiBjb21wYXJlX3ZlYzMoYVswXSwgYlswXSkqY29tcGFyZV92ZWMzKGFbMV0sIGJbMV0p
KmNvbXBhcmVfdmVjMyhhWzJdLCBiWzJdKSpjb21wYXJlX3ZlYzMoYVszXSwgYlszXSk7IH1cbic7
CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQ0OiByZXR1cm4g
J21lZGl1bXAgZmxvYXQgY29tcGFyZV9tYXQ0IChoaWdocCBtYXQ0IGEsIGhpZ2hwIG1hdDQgYikg
eyByZXR1cm4gY29tcGFyZV92ZWM0KGFbMF0sIGJbMF0pKmNvbXBhcmVfdmVjNChhWzFdLCBiWzFd
KSpjb21wYXJlX3ZlYzQoYVsyXSwgYlsyXSkqY29tcGFyZV92ZWM0KGFbM10sIGJbM10pOyB9XG4n
OworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOiByZXR1cm4gJ21lZGl1
bXAgZmxvYXQgY29tcGFyZV9pbnQgKGhpZ2hwIGludCBhLCBoaWdocCBpbnQgYikgeyByZXR1cm4g
YSA9PSBiID8gMS4wIDogMC4wOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0
YVR5cGUuSU5UX1ZFQzI6IHJldHVybiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX2l2ZWMyIChoaWdo
cCBpdmVjMiBhLCBoaWdocCBpdmVjMiBiKSB7IHJldHVybiBhID09IGIgPyAxLjAgOiAwLjA7IH1c
bic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5JTlRfVkVDMzogcmV0dXJu
ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfaXZlYzMgKGhpZ2hwIGl2ZWMzIGEsIGhpZ2hwIGl2ZWMz
IGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfVxuJzsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLklOVF9WRUM0OiByZXR1cm4gJ21lZGl1bXAgZmxvYXQgY29tcGFy
ZV9pdmVjNCAoaGlnaHAgaXZlYzQgYSwgaGlnaHAgaXZlYzQgYikgeyByZXR1cm4gYSA9PSBiID8g
MS4wIDogMC4wOyB9XG4nOworICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlO
VDogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdWludCAoaGlnaHAgdWludCBhLCBoaWdo
cCB1aW50IGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfVxuJzsKKyAgICAgICAgY2Fz
ZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDMjogcmV0dXJuICdtZWRpdW1wIGZsb2F0
IGNvbXBhcmVfdXZlYzIgKGhpZ2hwIHV2ZWMyIGEsIGhpZ2hwIHV2ZWMyIGIpIHsgcmV0dXJuIGEg
PT0gYiA/IDEuMCA6IDAuMDsgfVxuJzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFU
eXBlLlVJTlRfVkVDMzogcmV0dXJuICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdXZlYzMgKGhpZ2hw
IHV2ZWMzIGEsIGhpZ2hwIHV2ZWMzIGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfVxu
JzsKKyAgICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLlVJTlRfVkVDNDogcmV0dXJu
ICdtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdXZlYzQgKGhpZ2hwIHV2ZWM0IGEsIGhpZ2hwIHV2ZWM0
IGIpIHsgcmV0dXJuIGEgPT0gYiA/IDEuMCA6IDAuMDsgfVxuJzsKKyAgICAgICAgY2FzZSBnbHVT
aGFkZXJVdGlsLkRhdGFUeXBlLkJPT0w6IHJldHVybiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX2Jv
b2wgKGJvb2wgYSwgYm9vbCBiKSB7IHJldHVybiBhID09IGIgPyAxLjAgOiAwLjA7IH1cbic7Cisg
ICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzI6IHJldHVybiAnbWVk
aXVtcCBmbG9hdCBjb21wYXJlX2J2ZWMyIChidmVjMiBhLCBidmVjMiBiKSB7IHJldHVybiBhID09
IGIgPyAxLjAgOiAwLjA7IH1cbic7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5CT09MX1ZFQzM6IHJldHVybiAnbWVkaXVtcCBmbG9hdCBjb21wYXJlX2J2ZWMzIChidmVjMyBh
LCBidmVjMyBiKSB7IHJldHVybiBhID09IGIgPyAxLjAgOiAwLjA7IH1cbic7CisgICAgICAgIGNh
c2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MX1ZFQzQ6IHJldHVybiAnbWVkaXVtcCBmbG9h
dCBjb21wYXJlX2J2ZWM0IChidmVjNCBhLCBidmVjNCBiKSB7IHJldHVybiBhID09IGIgPyAxLjAg
OiAwLjA7IH1cbic7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ1R5cGUgIicgKyB0eXBlICsgJyIgbm90IHN1cHBvcnRlZC4nKTsKKworICAgIH0KK307CisK
Ky8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZXRDb21wYXJlRGVwZW5kZW5jaWVzCisgKiBA
cGFyYW0ge0FycmF5PGdsdVNoYWRlclV0aWwuRGF0YVR5cGU+fSBjb21wYXJlRnVuY3MgU2hvdWxk
IGNvbnRhaW4gdW5pcXVlIGVsZW1lbnRzCisgKiBAcGFyYW0ge2dsdVNoYWRlclV0aWwuRGF0YVR5
cGV9IGJhc2ljVHlwZQorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmdldENvbXBhcmVEZXBlbmRl
bmNpZXMgPSBmdW5jdGlvbihjb21wYXJlRnVuY3MsIGJhc2ljVHlwZSkgeworICAgIHN3aXRjaCAo
YmFzaWNUeXBlKSB7CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9W
RUMyOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfVkVDMzoKKyAg
ICAgICAgY2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX1ZFQzQ6CisgICAgICAgICAg
ICBkZVV0aWwuZGVQdXNoVW5pcXVlVG9BcnJheShjb21wYXJlRnVuY3MsIGdsdVNoYWRlclV0aWwu
RGF0YVR5cGUuRkxPQVQpOworICAgICAgICAgICAgZGVVdGlsLmRlUHVzaFVuaXF1ZVRvQXJyYXko
Y29tcGFyZUZ1bmNzLCBiYXNpY1R5cGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUX01BVDI6CisgICAgICAgIGNhc2UgZ2x1
U2hhZGVyVXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDM6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVy
VXRpbC5EYXRhVHlwZS5GTE9BVF9NQVQyWDQ6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVF9NQVQzWDI6CisgICAgICAgIGNhc2UgZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZS5GTE9BVF9NQVQzOgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRf
TUFUM1g0OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgy
OgorICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNFgzOgorICAg
ICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVRfTUFUNDoKKyAgICAgICAgICAg
IGRlVXRpbC5kZVB1c2hVbmlxdWVUb0FycmF5KGNvbXBhcmVGdW5jcywgZ2x1U2hhZGVyVXRpbC5E
YXRhVHlwZS5GTE9BVCk7CisgICAgICAgICAgICBkZVV0aWwuZGVQdXNoVW5pcXVlVG9BcnJheShj
b21wYXJlRnVuY3MsIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVGbG9hdFZlYyhnbHVTaGFkZXJV
dGlsLmdldERhdGFUeXBlTWF0cml4TnVtUm93cyhiYXNpY1R5cGUpKSk7CisgICAgICAgICAgICBk
ZVV0aWwuZGVQdXNoVW5pcXVlVG9BcnJheShjb21wYXJlRnVuY3MsIGJhc2ljVHlwZSk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZGVVdGlsLmRl
UHVzaFVuaXF1ZVRvQXJyYXkoY29tcGFyZUZ1bmNzLCBiYXNpY1R5cGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorfTsKKworLyoqCisgKiBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbGxlY3RV
bmlxdWVCYXNpY1R5cGVzX0IKKyAqIEBwYXJhbSB7QXJyYXk8Z2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZT59IGJhc2ljVHlwZXMgU2hvdWxkIGNvbnRhaW4gdW5pcXVlIGVsZW1lbnRzCisgKiBAcGFyYW0g
e2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gdHlwZQorICovCitnbHNVbmlmb3JtQmxvY2tD
YXNlLmNvbGxlY3RVbmlxdWVCYXNpY1R5cGVzX0IgPSBmdW5jdGlvbihiYXNpY1R5cGVzLCB0eXBl
KSB7CisgICAgaWYgKHR5cGUuaXNTdHJ1Y3RUeXBlKCkpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtn
bHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5cGV9ICovIHZhciBzdHlwZSA9IHR5cGUuZ2V0U3Ry
dWN0KCk7CisgICAgICAgIGZvciAodmFyIG1lbWJlck5keCA9IDA7IG1lbWJlck5keCA8IHN0eXBl
LmdldFNpemUoKTsgbWVtYmVyTmR4KyspCisgICAgICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNl
LmNvbGxlY3RVbmlxdWVCYXNpY1R5cGVzX0IoYmFzaWNUeXBlcywgc3R5cGUuZ2V0TWVtYmVyKG1l
bWJlck5keCkuZ2V0VHlwZSgpKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUuaXNBcnJheVR5cGUoKSkK
KyAgICAgICAgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5jb2xsZWN0VW5pcXVlQmFzaWNUeXBlc19CKGJh
c2ljVHlwZXMsIHR5cGUuZ2V0RWxlbWVudFR5cGUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIERF
X0FTU0VSVCh0eXBlLmlzQmFzaWNUeXBlKCkpOworICAgICAgICBkZVV0aWwuZGVQdXNoVW5pcXVl
VG9BcnJheShiYXNpY1R5cGVzLCB0eXBlLmdldEJhc2ljVHlwZSgpKTsKKyAgICB9Cit9OworCisv
KioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29sbGVjdFVuaXF1ZUJhc2ljVHlwZXNfQQorICog
QHBhcmFtIHtBcnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gYmFzaWNUeXBlcyBTaG91bGQg
Y29udGFpbiB1bmlxdWUgZWxlbWVudHMKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5V
bmlmb3JtQmxvY2t9IHVuaWZvcm1CbG9jaworICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbGxl
Y3RVbmlxdWVCYXNpY1R5cGVzX0EgPSBmdW5jdGlvbihiYXNpY1R5cGVzLCB1bmlmb3JtQmxvY2sp
IHsKKyAgICBmb3IgKHZhciB1bmlmb3JtTmR4ID0gMDsgdW5pZm9ybU5keCA8IHVuaWZvcm1CbG9j
ay5jb3VudFVuaWZvcm1zKCk7IHVuaWZvcm1OZHgrKykKKyAgICAgICAgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5jb2xsZWN0VW5pcXVlQmFzaWNUeXBlc19CKGJhc2ljVHlwZXMsIHVuaWZvcm1CbG9jay5n
ZXRVbmlmb3JtKHVuaWZvcm1OZHgpLmdldFR5cGUoKSk7Cit9OworCisvKioKKyAqIGdsc1VuaWZv
cm1CbG9ja0Nhc2UuY29sbGVjdFVuaXF1ZUJhc2ljVHlwZXMKKyAqIEBwYXJhbSB7QXJyYXk8Z2x1
U2hhZGVyVXRpbC5EYXRhVHlwZT59IGJhc2ljVHlwZXMgU2hvdWxkIGNvbnRhaW4gdW5pcXVlIGVs
ZW1lbnRzCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU2hhZGVySW50ZXJmYWNlfSBz
aW50ZXJmYWNlCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuY29sbGVjdFVuaXF1ZUJhc2ljVHlw
ZXMgPSBmdW5jdGlvbihiYXNpY1R5cGVzLCBzaW50ZXJmYWNlKSB7CisgICAgZm9yICh2YXIgbmR4
ID0gMDsgbmR4IDwgc2ludGVyZmFjZS5nZXROdW1Vbmlmb3JtQmxvY2tzKCk7ICsrbmR4KQorICAg
ICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvbGxlY3RVbmlxdWVCYXNpY1R5cGVzX0EoYmFzaWNU
eXBlcywgc2ludGVyZmFjZS5nZXRVbmlmb3JtQmxvY2sobmR4KSk7Cit9OworCisvKioKKyAqIGds
c1VuaWZvcm1CbG9ja0Nhc2UuY29sbGVjdFVuaXF1ZUJhc2ljVHlwZXMKKyAqIEByZXR1cm4ge3N0
cmluZ30gV2FzIG9yaWdpbmFsbHkgYW4gb3V0cHV0IHBhcmFtZXRlci4gQXMgaXQgaXMgYSBiYXNp
YyB0eXBlLCB3ZSBoYXZlIHRvIHJldHVybiBpdCBpbnN0ZWFkLgorICogQHBhcmFtIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLlNoYWRlckludGVyZmFjZX0gc2ludGVyZmFjZQorICovCitnbHNVbmlmb3Jt
QmxvY2tDYXNlLmdlbmVyYXRlQ29tcGFyZUZ1bmNzID0gZnVuY3Rpb24oc2ludGVyZmFjZSkgewor
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc3RyID0gJyc7CisgICAgLyoqIEB0eXBlIHtB
cnJheTxnbHVTaGFkZXJVdGlsLkRhdGFUeXBlPn0gKi8gdmFyIHR5cGVzID0gW107IC8vV2lsbCBj
b250YWluIHVuaXF1ZSBlbGVtZW50cy4KKyAgICAvKiogQHR5cGUge0FycmF5PGdsdVNoYWRlclV0
aWwuRGF0YVR5cGU+fSAqLyB2YXIgY29tcGFyZUZ1bmNzID0gW107IC8vV2lsbCBjb250YWluIHVu
aXF1ZSBlbGVtZW50cy4KKworICAgIC8vIENvbGxlY3QgdW5pcXVlIGJhc2ljIHR5cGVzCisgICAg
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5jb2xsZWN0VW5pcXVlQmFzaWNUeXBlcyh0eXBlcywgc2ludGVy
ZmFjZSk7CisKKyAgICAvLyBTZXQgb2YgY29tcGFyZSBmdW5jdGlvbnMgcmVxdWlyZWQKKyAgICBm
b3IgKHZhciB0eXBlTmR4ID0gMDsgdHlwZU5keCA8IHR5cGVzLmxlbmd0aDsgdHlwZU5keCsrKQor
ICAgICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLmdldENvbXBhcmVEZXBlbmRlbmNpZXMoY29tcGFy
ZUZ1bmNzLCB0eXBlc1t0eXBlTmR4XSk7CisKKyAgICBmb3IgKHZhciB0eXBlIGluIGdsdVNoYWRl
clV0aWwuRGF0YVR5cGUpIHsKKyAgICAgICAgaWYgKGNvbXBhcmVGdW5jcy5pbmRleE9mKGdsdVNo
YWRlclV0aWwuRGF0YVR5cGVbdHlwZV0pID4gLTEpCisgICAgICAgICAgICBzdHIgKz0gZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5nZXRDb21wYXJlRnVuY0ZvclR5cGUoZ2x1U2hhZGVyVXRpbC5EYXRhVHlw
ZVt0eXBlXSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0cjsKK307CisKKy8qKgorICogZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5JbmRlbnQgLSBQcmludHMgbGV2ZWxfIG51bWJlciBvZiB0YWIgY2hhcnMK
KyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbF8KKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5JbmRlbnQgPSBmdW5jdGlvbihsZXZlbF8pIHsKKyAgICB2YXIgc3Ry
ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbF87IGkrKykKKyAgICAgICAgc3Ry
ICs9ICdcdCc7CisKKyAgICByZXR1cm4gc3RyOworfTsKKworLyoqCisgKiBnbHNVbmlmb3JtQmxv
Y2tDYXNlLmdlbmVyYXRlRGVjbGFyYXRpb25fQworICogQHJldHVybiB7c3RyaW5nfSBzcmMKKyAq
IEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlfSBzdHJ1Y3RUeXBlCisgKiBA
cGFyYW0ge251bWJlcn0gaW5kZW50TGV2ZWwKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5l
cmF0ZURlY2xhcmF0aW9uX0MgPSBmdW5jdGlvbihzdHJ1Y3RUeXBlLCBpbmRlbnRMZXZlbCkgewor
ICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgc3JjID0gJyc7CisKKyAgICBERV9BU1NFUlQo
c3RydWN0VHlwZS5nZXRUeXBlTmFtZSgpICE9PSB1bmRlZmluZWQpOworICAgIHNyYyArPSBnbHNV
bmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlRnVsbERlY2xhcmF0aW9uKHN0cnVjdFR5cGUsIGluZGVu
dExldmVsKTsKKyAgICBzcmMgKz0gJztcbic7CisKKyAgICByZXR1cm4gc3JjOworfTsKKworLyoq
CisgKiBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlRnVsbERlY2xhcmF0aW9uCisgKiBAcmV0
dXJuIHtzdHJpbmd9IHNyYworICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdFR5
cGV9IHN0cnVjdFR5cGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRlbnRMZXZlbAorICovCitnbHNV
bmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlRnVsbERlY2xhcmF0aW9uID0gZnVuY3Rpb24oc3RydWN0
VHlwZSwgaW5kZW50TGV2ZWwpIHsKKyAgICB2YXIgc3JjID0gJ3N0cnVjdCc7CisgICAgaWYgKHN0
cnVjdFR5cGUuZ2V0VHlwZU5hbWUoKSkKKyAgICAgICAgc3JjICs9ICcgJyArIHN0cnVjdFR5cGUu
Z2V0VHlwZU5hbWUoKTsKKyAgICBzcmMgKz0gJ1xuJyArIGdsc1VuaWZvcm1CbG9ja0Nhc2UuSW5k
ZW50KGluZGVudExldmVsKSArICcge1xuJzsKKworICAgIGZvciAodmFyIG1lbWJlck5keCA9IDA7
IG1lbWJlck5keCA8IHN0cnVjdFR5cGUuZ2V0U2l6ZSgpOyBtZW1iZXJOZHgrKykgeworICAgICAg
ICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5JbmRlbnQoaW5kZW50TGV2ZWwgKyAxKTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlN0cnVjdE1lbWJlcn0gKi8gdmFy
IG1lbWJlckl0ZXIgPSBzdHJ1Y3RUeXBlLmdldE1lbWJlcihtZW1iZXJOZHgpOworICAgICAgICBz
cmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZURlY2xhcmF0aW9uX0IobWVtYmVySXRl
ci5nZXRUeXBlKCksIG1lbWJlckl0ZXIuZ2V0TmFtZSgpLCBpbmRlbnRMZXZlbCArIDEsIG1lbWJl
ckl0ZXIuZ2V0RmxhZ3MoKSAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlVOVVNF
RF9CT1RIKTsKKyAgICB9CisKKyAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5JbmRlbnQo
aW5kZW50TGV2ZWwpICsgJ30nOworCisgICAgcmV0dXJuIHNyYzsKK307CisKKy8qKgorICogZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUxvY2FsRGVjbGFyYXRpb24KKyAqIEByZXR1cm4ge3N0
cmluZ30gc3JjCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZX0gc3Ry
dWN0VHlwZQorICogQHBhcmFtIHtudW1iZXJ9IGluZGVudExldmVsCisgKi8KK2dsc1VuaWZvcm1C
bG9ja0Nhc2UuZ2VuZXJhdGVMb2NhbERlY2xhcmF0aW9uID0gZnVuY3Rpb24oc3RydWN0VHlwZSwg
aW5kZW50TGV2ZWwpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHNyYyA9ICcnOwor
CisgICAgaWYgKHN0cnVjdFR5cGUuZ2V0VHlwZU5hbWUoKSA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUZ1bGxEZWNsYXJhdGlvbihzdHJ1
Y3RUeXBlLCBpbmRlbnRMZXZlbCk7CisgICAgZWxzZQorICAgICAgICBzcmMgKz0gc3RydWN0VHlw
ZS5nZXRUeXBlTmFtZSgpOworCisgICAgcmV0dXJuIHNyYzsKK307CisKKy8qKgorICogZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZURlY2xhcmF0aW9uX0IKKyAqIEByZXR1cm4ge3N0cmluZ30g
c3JjCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVmFyVHlwZX0gdHlwZQorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRlbnRMZXZlbAorICogQHBh
cmFtIHtudW1iZXJ9IHVudXNlZEhpbnRzCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJh
dGVEZWNsYXJhdGlvbl9CID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgaW5kZW50TGV2ZWwsIHVudXNl
ZEhpbnRzKSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzcmMgPSAnJzsKKyAgICAv
KiogQHR5cGUge251bWJlcn0gKi8gdmFyIGZsYWdzID0gdHlwZS5nZXRGbGFncygpOworCisgICAg
aWYgKChmbGFncyAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9NQVNL
KSAhPSAwKQorICAgICAgICBzcmMgKz0gJ2xheW91dCgnICsgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5M
YXlvdXRGbGFnc0ZtdChmbGFncyAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxB
WU9VVF9NQVNLKSArICcpICc7CisKKyAgICBpZiAoKGZsYWdzICYgZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01BU0spICE9IDApCisgICAgICAgIHNyYyArPSBnbHNV
bmlmb3JtQmxvY2tDYXNlLlByZWNpc2lvbkZsYWdzRm10KGZsYWdzICYgZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtRmxhZ3MuUFJFQ0lTSU9OX01BU0spICsgJyAnOworCisgICAgaWYgKHR5cGUu
aXNCYXNpY1R5cGUoKSkKKyAgICAgICAgc3JjICs9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVO
YW1lKHR5cGUuZ2V0QmFzaWNUeXBlKCkpICsgJyAnICsgbmFtZTsKKyAgICBlbHNlIGlmICh0eXBl
LmlzQXJyYXlUeXBlKCkpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2
YXIgYXJyYXlTaXplcyA9IFtdOworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nh
c2UuVmFyVHlwZX0gKi8gdmFyIGN1clR5cGUgPSB0eXBlOworICAgICAgICB3aGlsZSAoY3VyVHlw
ZS5pc0FycmF5VHlwZSgpKSB7CisgICAgICAgICAgICBhcnJheVNpemVzLnB1c2goY3VyVHlwZS5n
ZXRBcnJheVNpemUoKSk7CisgICAgICAgICAgICBjdXJUeXBlID0gY3VyVHlwZS5nZXRFbGVtZW50
VHlwZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN1clR5cGUuaXNCYXNpY1R5cGUoKSkg
eworICAgICAgICAgICAgaWYgKChjdXJUeXBlLmdldEZsYWdzKCkgJiBnbHNVbmlmb3JtQmxvY2tD
YXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUFTSykgIT0gMCkKKyAgICAgICAgICAgICAgICBz
cmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5QcmVjaXNpb25GbGFnc0ZtdChjdXJUeXBlLmdldEZs
YWdzKCkgJiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5QUkVDSVNJT05fTUFTSykg
KyAnICc7CisgICAgICAgICAgICBzcmMgKz0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUo
Y3VyVHlwZS5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBE
RV9BU1NFUlQoY3VyVHlwZS5pc1N0cnVjdFR5cGUoKSk7CisgICAgICAgICAgICBzcmMgKz0gZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUxvY2FsRGVjbGFyYXRpb24oY3VyVHlwZS5nZXRTdHJ1
Y3QoKSwgaW5kZW50TGV2ZWwgKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHNyYyArPSAnICcg
KyBuYW1lOworCisgICAgICAgIGZvciAodmFyIHNpemVOZHggPSAwOyBzaXplTmR4IDwgYXJyYXlT
aXplcy5sZW5ndGg7IHNpemVOZHgrKykKKyAgICAgICAgICAgIHNyYyArPSAnWycgKyBhcnJheVNp
emVzW3NpemVOZHhdICsgJ10nOworICAgIH0gZWxzZSB7CisgICAgICAgIHNyYyArPSBnbHNVbmlm
b3JtQmxvY2tDYXNlLmdlbmVyYXRlTG9jYWxEZWNsYXJhdGlvbih0eXBlLmdldFN0cnVjdCgpLCBp
bmRlbnRMZXZlbCArIDEpOworICAgICAgICBzcmMgKz0gJyAnICsgbmFtZTsKKyAgICB9CisKKyAg
ICBzcmMgKz0gJzsnOworCisgICAgLy8gUHJpbnQgb3V0IHVudXNlZCBoaW50cy4KKyAgICBpZiAo
dW51c2VkSGludHMgIT0gMCkKKyAgICAgICAgc3JjICs9ICcgLy8gdW51c2VkIGluICcgKyAodW51
c2VkSGludHMgPT0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuVU5VU0VEX0JPVEgg
PyAnYm90aCBzaGFkZXJzJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnVzZWRIaW50cyA9PSBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5VTlVTRURfVkVS
VEVYID8gJ3ZlcnRleCBzaGFkZXInIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZEhpbnRzID09IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlVOVVNF
RF9GUkFHTUVOVCA/ICdmcmFnbWVudCBzaGFkZXInIDogJz8/PycpOworCisgICAgc3JjICs9ICdc
bic7CisKKyAgICByZXR1cm4gc3JjOworfTsKKworLyoqCisgKiBnbHNVbmlmb3JtQmxvY2tDYXNl
LmdlbmVyYXRlRGVjbGFyYXRpb25fQQorICogQHJldHVybiB7c3RyaW5nfSBzcmMKKyAqIEBwYXJh
bSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtfSB1bmlmb3JtCisgKiBAcGFyYW0ge251bWJl
cn0gaW5kZW50TGV2ZWwKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZURlY2xhcmF0
aW9uX0EgPSBmdW5jdGlvbih1bmlmb3JtLCBpbmRlbnRMZXZlbCkgeworICAgIC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyB2YXIgc3JjID0gJyc7CisKKyAgICBpZiAoKHVuaWZvcm0uZ2V0RmxhZ3MoKSAm
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9NQVNLKSAhPSAwKQorICAg
ICAgICBzcmMgKz0gJ2xheW91dCgnICsgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5MYXlvdXRGbGFnc0Zt
dCh1bmlmb3JtLmdldEZsYWdzKCkgJiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5M
QVlPVVRfTUFTSykgKyAnKSAnOworCisgICAgc3JjICs9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2Vu
ZXJhdGVEZWNsYXJhdGlvbl9CKHVuaWZvcm0uZ2V0VHlwZSgpLCB1bmlmb3JtLmdldE5hbWUoKSwg
aW5kZW50TGV2ZWwsIHVuaWZvcm0uZ2V0RmxhZ3MoKSAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUZsYWdzLlVOVVNFRF9CT1RIKTsKKworICAgIHJldHVybiBzcmM7Cit9OworCisvKioKKyAq
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVEZWNsYXJhdGlvbgorICogQHJldHVybiB7c3Ry
aW5nfSBzcmMKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2t9IGJs
b2NrCisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVEZWNsYXJhdGlvbiA9IGZ1bmN0
aW9uKGJsb2NrKSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzcmMgPSAnJzsKKwor
ICAgIGlmICgoYmxvY2suZ2V0RmxhZ3MoKSAmIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZs
YWdzLkxBWU9VVF9NQVNLKSAhPSAwKQorICAgICAgICBzcmMgKz0gJ2xheW91dCgnICsgZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5MYXlvdXRGbGFnc0ZtdChibG9jay5nZXRGbGFncygpICYgZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuTEFZT1VUX01BU0spICsgJykgJzsKKworICAgIHNyYyAr
PSAndW5pZm9ybSAnICsgYmxvY2suZ2V0QmxvY2tOYW1lKCk7CisgICAgc3JjICs9ICdcbiB7XG4n
OworCisgICAgZm9yICh2YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZvcm1OZHggPCBibG9jay5jb3Vu
dFVuaWZvcm1zKCk7IHVuaWZvcm1OZHgrKykgeworICAgICAgICBzcmMgKz0gZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5JbmRlbnQoMSk7CisgICAgICAgIHNyYyArPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdl
bmVyYXRlRGVjbGFyYXRpb25fQShibG9jay5nZXRVbmlmb3JtKHVuaWZvcm1OZHgpLCAxIC8qIGlu
ZGVudCBsZXZlbCAqLyk7CisgICAgfQorCisgICAgc3JjICs9ICd9JzsKKworICAgIGlmIChibG9j
ay5nZXRJbnN0YW5jZU5hbWUoKSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHNyYyArPSAnICcg
KyBibG9jay5nZXRJbnN0YW5jZU5hbWUoKTsKKyAgICAgICAgaWYgKGJsb2NrLmlzQXJyYXkoKSkK
KyAgICAgICAgICAgIHNyYyArPSAnWycgKyBibG9jay5nZXRBcnJheVNpemUoKSArICddJzsKKyAg
ICB9IGVsc2UKKyAgICAgICAgREVfQVNTRVJUKCFibG9jay5pc0FycmF5KCkpOworCisgICAgc3Jj
ICs9ICc7XG4nOworCisgICAgcmV0dXJuIHNyYzsKK307CisKKy8qKgorICogZ2xzVW5pZm9ybUJs
b2NrQ2FzZS5uZXdBcnJheUJ1ZmZlckZyb21WaWV3IC0gQ3JlYXRlcyBhIG5ldyBidWZmZXIgY29w
eWluZyBkYXRhIGZyb20gYSBnaXZlbiB2aWV3CisgKiBAcGFyYW0ge2dvb2cuTnVtYmVyQXJyYXl9
IHZpZXcKKyAqIEByZXR1cm4ge0FycmF5QnVmZmVyfSBUaGUgbmV3bHkgY3JlYXRlZCBidWZmZXIK
KyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5uZXdBcnJheUJ1ZmZlckZyb21WaWV3ID0gZnVuY3Rp
b24odmlldykgeworICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodmlldy5sZW5ndGgg
KiB2aWV3LkJZVEVTX1BFUl9FTEVNRU5UKTsKKyAgICB2YXIgY29weXZpZXc7CisgICAgc3dpdGNo
ICh2aWV3LkJZVEVTX1BFUl9FTEVNRU5UKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
IGNvcHl2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgIGNvcHl2aWV3ID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7IGJyZWFr
OworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBjb3B5dmlldyA9IG5ldyBVaW50MzJBcnJh
eShidWZmZXIpOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydE1z
Z09wdGlvbnMoZmFsc2UsICdVbmV4cGVjdGVkIHZhbHVlIGZvciBCWVRFU19QRVJfRUxFTUVOVCBp
biB2aWV3JywgZmFsc2UsIHRydWUpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZp
ZXcubGVuZ3RoOyBpKyspCisgICAgICAgIGNvcHl2aWV3W2ldID0gdmlld1tpXTsKKworICAgIHJl
dHVybiBidWZmZXI7Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVW
YWx1ZVNyYworICogQHJldHVybiB7c3RyaW5nfSBVc2VkIHRvIGJlIGFuIG91dHB1dCBwYXJhbWV0
ZXIgaW4gQysrIHByb2plY3QKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
TGF5b3V0RW50cnl9IGVudHJ5CisgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJhc2VQdHIKKyAqIEBw
YXJhbSB7bnVtYmVyfSBlbGVtZW50TmR4CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJh
dGVWYWx1ZVNyYyA9IGZ1bmN0aW9uKGVudHJ5LCBiYXNlUHRyLCBlbGVtZW50TmR4KSB7CisgICAg
LyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBzcmMgPSAnJzsKKyAgICAvKiogQHR5cGUge2dsdVNo
YWRlclV0aWwuRGF0YVR5cGV9ICovIHZhciBzY2FsYXJUeXBlID0gZ2x1U2hhZGVyVXRpbC5nZXRE
YXRhVHlwZVNjYWxhclR5cGVBc0RhdGFUeXBlKGVudHJ5LnR5cGUpOworICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgc2NhbGFyU2l6ZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVTY2Fs
YXJTaXplKGVudHJ5LnR5cGUpOworICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzQXJy
YXkgPSBlbnRyeS5zaXplID4gMTsKKyAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHZhciBl
bGVtUHRyID0gYmFzZVB0ci5zdWJhcnJheShlbnRyeS5vZmZzZXQgKyAoaXNBcnJheSA/IGVsZW1l
bnROZHggKiBlbnRyeS5hcnJheVN0cmlkZSA6IDApKTsKKyAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIGNvbXBTaXplID0gZGVNYXRoLklOVDMyX1NJWkU7CisgICAgLyoqIEB0eXBlIHtVaW50
OEFycmF5fSAqLyB2YXIgY29tcFB0cjsKKyAgICBpZiAoc2NhbGFyU2l6ZSA+IDEpCisgICAgICAg
IHNyYyArPSBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShlbnRyeS50eXBlKSArICcoJzsK
KworICAgIGlmIChnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoZW50cnkudHlwZSkpIHsK
KyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1Sb3dzID0gZ2x1U2hhZGVyVXRp
bC5nZXREYXRhVHlwZU1hdHJpeE51bVJvd3MoZW50cnkudHlwZSk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtQ29scyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRy
aXhOdW1Db2x1bW5zKGVudHJ5LnR5cGUpOworCisgICAgICAgIERFX0FTU0VSVChzY2FsYXJUeXBl
ID09IGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQpOworCisgICAgICAgIC8vIENvbnN0cnVj
dGVkIGluIGNvbHVtbi13aXNlIG9yZGVyLgorICAgICAgICBmb3IgKHZhciBjb2xOZHggPSAwOyBj
b2xOZHggPCBudW1Db2xzOyBjb2xOZHgrKykgeworICAgICAgICAgICAgZm9yICh2YXIgcm93TmR4
ID0gMDsgcm93TmR4IDwgbnVtUm93czsgcm93TmR4KyspIHsKKyAgICAgICAgICAgICAgICBjb21w
UHRyID0gZWxlbVB0ci5zdWJhcnJheShlbnRyeS5pc1Jvd01ham9yID8gcm93TmR4ICogZW50cnku
bWF0cml4U3RyaWRlICsgY29sTmR4ICogY29tcFNpemUgOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbE5keCAq
IGVudHJ5Lm1hdHJpeFN0cmlkZSArIHJvd05keCAqIGNvbXBTaXplKTsKKworICAgICAgICAgICAg
ICAgIGlmIChjb2xOZHggPiAwIHx8IHJvd05keCA+IDApCisgICAgICAgICAgICAgICAgICAgIHNy
YyArPSAnLCAnOworCisgICAgICAgICAgICAgICAgdmFyIG5ld2J1ZmZlciA9IG5ldyBVaW50OEFy
cmF5KGNvbXBQdHIuc3ViYXJyYXkoMCwgNCkpLmJ1ZmZlcjsKKyAgICAgICAgICAgICAgICB2YXIg
bmV3dmlldyA9IG5ldyBEYXRhVmlldyhuZXdidWZmZXIpOworICAgICAgICAgICAgICAgIHNyYyAr
PSBwYXJzZUZsb2F0KG5ld3ZpZXcuZ2V0RmxvYXQzMigwLCBsaXR0bGVFbmRpYW4pKS50b0ZpeGVk
KDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
ICh2YXIgc2NhbGFyTmR4ID0gMDsgc2NhbGFyTmR4IDwgc2NhbGFyU2l6ZTsgc2NhbGFyTmR4Kysp
IHsKKyAgICAgICAgICAgIGNvbXBQdHIgPSBlbGVtUHRyLnN1YmFycmF5KHNjYWxhck5keCAqIGNv
bXBTaXplKTsKKworICAgICAgICAgICAgaWYgKHNjYWxhck5keCA+IDApCisgICAgICAgICAgICAg
ICAgc3JjICs9ICcsICc7CisKKyAgICAgICAgICAgIHZhciBuZXdidWZmZXIgPSBnbHNVbmlmb3Jt
QmxvY2tDYXNlLm5ld0FycmF5QnVmZmVyRnJvbVZpZXcoY29tcFB0ci5zdWJhcnJheSgwLCA0KSk7
CisgICAgICAgICAgICB2YXIgbmV3dmlldyA9IG5ldyBEYXRhVmlldyhuZXdidWZmZXIpOworCisg
ICAgICAgICAgICBzd2l0Y2ggKHNjYWxhclR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQ6IHNyYyArPSBwYXJzZUZsb2F0KG5ld3ZpZXcuZ2V0
RmxvYXQzMigwLCBsaXR0bGVFbmRpYW4pICogMTAwIC8gMTAwKS50b0ZpeGVkKDEpOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuSU5UOiBzcmMgKz0g
bmV3dmlldy5nZXRJbnQzMigwLCBsaXR0bGVFbmRpYW4pOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIGdsdVNoYWRlclV0aWwuRGF0YVR5cGUuVUlOVDogc3JjICs9IG5ld3ZpZXcuZ2V0VWlu
dDMyKDAsIGxpdHRsZUVuZGlhbikgKyAndSc7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Z2x1U2hhZGVyVXRpbC5EYXRhVHlwZS5CT09MOiBzcmMgKz0gKG5ld3ZpZXcuZ2V0VWludDMyKDAs
IGxpdHRsZUVuZGlhbikgIT0gMCA/ICd0cnVlJyA6ICdmYWxzZScpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNjYWxhclNpemUgPiAx
KQorICAgICAgICBzcmMgKz0gJyknOworCisgICAgcmV0dXJuIHNyYzsKK307CisKKy8qKgorICog
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUNvbXBhcmVTcmNfQQorICogQHJldHVybiB7c3Ry
aW5nfSBVc2VkIHRvIGJlIGFuIG91dHB1dCBwYXJhbWV0ZXIgaW4gQysrIHByb2plY3QKKyAqIEBw
YXJhbSB7c3RyaW5nfSByZXN1bHRWYXIKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5W
YXJUeXBlfSB0eXBlCisgKiBAcGFyYW0ge3N0cmluZ30gc3JjTmFtZQorICogQHBhcmFtIHtzdHJp
bmd9IGFwaU5hbWUKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0
fSBsYXlvdXQKKyAqIEBwYXJhbSB7VWludDhBcnJheX0gYmFzZVB0cgorICogQHBhcmFtIHtudW1i
ZXJ9IHVudXNlZE1hc2sKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUNvbXBhcmVT
cmNfQSA9IGZ1bmN0aW9uKHJlc3VsdFZhciwgdHlwZSwgc3JjTmFtZSwgYXBpTmFtZSwgbGF5b3V0
LCBiYXNlUHRyLCB1bnVzZWRNYXNrKSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBz
cmMgPSAnJzsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIG9wOworICAgIC8qKiBAdHlw
ZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5WYXJUeXBlfGdsdVNoYWRlclV0aWwuRGF0YVR5cGV9ICov
IHZhciBlbGVtZW50VHlwZTsKKworICAgIGlmICh0eXBlLmlzQmFzaWNUeXBlKCkgfHwgKHR5cGUu
aXNBcnJheVR5cGUoKSAmJiB0eXBlLmdldEVsZW1lbnRUeXBlKCkuaXNCYXNpY1R5cGUoKSkpIHsK
KyAgICAgICAgLy8gQmFzaWMgdHlwZSBvciBhcnJheSBvZiBiYXNpYyB0eXBlcy4KKyAgICAgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNBcnJheSA9IHR5cGUuaXNBcnJheVR5cGUoKTsK
KyAgICAgICAgZWxlbWVudFR5cGUgPSBpc0FycmF5ID8gdHlwZS5nZXRFbGVtZW50VHlwZSgpLmdl
dEJhc2ljVHlwZSgpIDogdHlwZS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtz
dHJpbmd9ICovIHZhciB0eXBlTmFtZSA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGVs
ZW1lbnRUeXBlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBmdWxsQXBpTmFt
ZSA9IGFwaU5hbWUgKyAoaXNBcnJheSA/ICdbMF0nIDogJycpOyAvLyBBcnJheXMgYXJlIGFsd2F5
cyBwb3N0Zml4ZWQgd2l0aCBbMF0KKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB1
bmlmb3JtTmR4ID0gbGF5b3V0LmdldFVuaWZvcm1JbmRleChmdWxsQXBpTmFtZSk7CisgICAgICAg
IC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnl9ICovIHZh
ciBlbnRyeSA9IGxheW91dC51bmlmb3Jtc1t1bmlmb3JtTmR4XTsKKworICAgICAgICBpZiAoaXNB
cnJheSkgeworICAgICAgICAgICAgZm9yICh2YXIgZWxlbU5keCA9IDA7IGVsZW1OZHggPCB0eXBl
LmdldEFycmF5U2l6ZSgpOyBlbGVtTmR4KyspIHsKKyAgICAgICAgICAgICAgICBzcmMgKz0gJ1x0
cmVzdWx0ICo9IGNvbXBhcmVfJyArIHR5cGVOYW1lICsgJygnICsgc3JjTmFtZSArICdbJyArIGVs
ZW1OZHggKyAnXSwgJzsKKyAgICAgICAgICAgICAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5nZW5lcmF0ZVZhbHVlU3JjKGVudHJ5LCBiYXNlUHRyLCBlbGVtTmR4KTsKKyAgICAgICAgICAg
ICAgICBzcmMgKz0gJyk7XG4nOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgc3JjICs9ICdcdHJlc3VsdCAqPSBjb21wYXJlXycgKyB0eXBlTmFtZSArICcoJyAr
IHNyY05hbWUgKyAnLCAnOworICAgICAgICAgICAgc3JjICs9IGdsc1VuaWZvcm1CbG9ja0Nhc2Uu
Z2VuZXJhdGVWYWx1ZVNyYyhlbnRyeSwgYmFzZVB0ciwgMCk7CisgICAgICAgICAgICBzcmMgKz0g
Jyk7XG4nOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlLmlzQXJyYXlUeXBlKCkpIHsK
KyAgICAgICAgZWxlbWVudFR5cGUgPSB0eXBlLmdldEVsZW1lbnRUeXBlKCk7CisKKyAgICAgICAg
Zm9yICh2YXIgZWxlbWVudE5keCA9IDA7IGVsZW1lbnROZHggPCB0eXBlLmdldEFycmF5U2l6ZSgp
OyBlbGVtZW50TmR4KyspIHsKKyAgICAgICAgICAgIG9wID0gJ1snICsgZWxlbWVudE5keCArICdd
JzsKKyAgICAgICAgICAgIHNyYyArPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlQ29tcGFy
ZVNyY19BKHJlc3VsdFZhciwgZWxlbWVudFR5cGUsIHNyY05hbWUgKyBvcCwgYXBpTmFtZSArIG9w
LCBsYXlvdXQsIGJhc2VQdHIsIHVudXNlZE1hc2spOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgREVfQVNTRVJUKHR5cGUuaXNTdHJ1Y3RUeXBlKCkpOworCisgICAgICAgIC8qKiBA
dHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlfSAqLyB2YXIgc3R5cGUgPSB0eXBl
LmdldFN0cnVjdCgpOworICAgICAgICBmb3IgKHZhciBtZW1iZXJOZHggPSAwOyBtZW1iZXJOZHgg
PCBzdHlwZS5nZXRTaXplKCk7IG1lbWJlck5keCsrKSB7CisgICAgICAgICAgICAvKiogQHR5cGUg
e2dsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0TWVtYmVyfSAqLyB2YXIgbWVtYmVySXRlciA9IHN0
eXBlLmdldE1lbWJlcihtZW1iZXJOZHgpOworICAgICAgICAgICAgaWYgKG1lbWJlckl0ZXIuZ2V0
RmxhZ3MoKSAmIHVudXNlZE1hc2spCisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAg
bWVtYmVyLgorCisgICAgICAgICAgICBvcCA9ICcuJyArIG1lbWJlckl0ZXIuZ2V0TmFtZSgpOwor
ICAgICAgICAgICAgc3JjICs9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVDb21wYXJlU3Jj
X0EocmVzdWx0VmFyLCBtZW1iZXJJdGVyLmdldFR5cGUoKSwgc3JjTmFtZSArIG9wLCBhcGlOYW1l
ICsgb3AsIGxheW91dCwgYmFzZVB0ciwgdW51c2VkTWFzayk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gc3JjOworfTsKKworLyoqCisgKiBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVy
YXRlQ29tcGFyZVNyYworICogQHJldHVybiB7c3RyaW5nfSBVc2VkIHRvIGJlIGFuIG91dHB1dCBw
YXJhbWV0ZXIgaW4gQysrIHByb2plY3QKKyAqIEBwYXJhbSB7c3RyaW5nfSByZXN1bHRWYXIKKyAq
IEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TaGFkZXJJbnRlcmZhY2V9IHNpbnRlcmZhY2UK
KyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0fSBsYXlvdXQKKyAq
IEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9ja1BvaW50ZXJzfSBibG9ja1BvaW50ZXJz
CisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVydGV4CisgKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
Z2VuZXJhdGVDb21wYXJlU3JjID0gZnVuY3Rpb24ocmVzdWx0VmFyLCBzaW50ZXJmYWNlLCBsYXlv
dXQsIGJsb2NrUG9pbnRlcnMsIGlzVmVydGV4KSB7CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHZhciBzcmMgPSAnJzsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHVudXNlZE1hc2sg
PSBpc1ZlcnRleCA/IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLlVOVVNFRF9WRVJU
RVggOiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5VTlVTRURfRlJBR01FTlQ7CisK
KyAgICBmb3IgKHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgc2ludGVyZmFjZS5nZXROdW1V
bmlmb3JtQmxvY2tzKCk7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJsb2NrID0gc2ludGVyZmFjZS5nZXRV
bmlmb3JtQmxvY2soYmxvY2tOZHgpOworCisgICAgICAgIGlmICgoYmxvY2suZ2V0RmxhZ3MoKSAm
IChpc1ZlcnRleCA/IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfVkVS
VEVYIDogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9GUkFHTUVOVCkp
ID09IDApCisgICAgICAgICAgICBjb250aW51ZTsgLy8gU2tpcC4KKworICAgICAgICAvKiogQHR5
cGUge2Jvb2xlYW59ICovIHZhciBoYXNJbnN0YW5jZU5hbWUgPSBibG9jay5nZXRJbnN0YW5jZU5h
bWUoKSAhPT0gdW5kZWZpbmVkOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
c0FycmF5ID0gYmxvY2suaXNBcnJheSgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIG51bUluc3RhbmNlcyA9IGlzQXJyYXkgPyBibG9jay5nZXRBcnJheVNpemUoKSA6IDE7Cisg
ICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIgYXBpUHJlZml4ID0gaGFzSW5zdGFuY2VO
YW1lID8gYmxvY2suZ2V0QmxvY2tOYW1lKCkgKyAnLicgOiAnJzsKKworICAgICAgICBERV9BU1NF
UlQoIWlzQXJyYXkgfHwgaGFzSW5zdGFuY2VOYW1lKTsKKworICAgICAgICBmb3IgKHZhciBpbnN0
YW5jZU5keCA9IDA7IGluc3RhbmNlTmR4IDwgbnVtSW5zdGFuY2VzOyBpbnN0YW5jZU5keCsrKSB7
CisgICAgICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGluc3RhbmNlUG9zdGZpeCA9
IGlzQXJyYXkgPyAnWycgKyBpbnN0YW5jZU5keCArICddJyA6ICcnOworICAgICAgICAgICAgLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHZhciBibG9ja0luc3RhbmNlTmFtZSA9IGJsb2NrLmdldEJsb2Nr
TmFtZSgpICsgaW5zdGFuY2VQb3N0Zml4OworICAgICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9
ICovIHZhciBzcmNQcmVmaXggPSBoYXNJbnN0YW5jZU5hbWUgPyBibG9jay5nZXRJbnN0YW5jZU5h
bWUoKSArIGluc3RhbmNlUG9zdGZpeCArICcuJyA6ICcnOworICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBhY3RpdmVCbG9ja05keCA9IGxheW91dC5nZXRCbG9ja0luZGV4KGJs
b2NrSW5zdGFuY2VOYW1lKTsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8g
dmFyIGJhc2VQdHIgPSBibG9ja1BvaW50ZXJzLmZpbmQoYWN0aXZlQmxvY2tOZHgpOworCisgICAg
ICAgICAgICBmb3IgKHZhciB1bmlmb3JtTmR4ID0gMDsgdW5pZm9ybU5keCA8IGJsb2NrLmNvdW50
VW5pZm9ybXMoKTsgdW5pZm9ybU5keCsrKSB7CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm19ICovIHZhciB1bmlmb3JtID0gYmxvY2suZ2V0VW5p
Zm9ybSh1bmlmb3JtTmR4KTsKKworICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLmdldEZsYWdz
KCkgJiB1bnVzZWRNYXNrKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3Qg
cmVhZCBmcm9tIHRoYXQgdW5pZm9ybS4KKworICAgICAgICAgICAgICAgIHNyYyArPSBnbHNVbmlm
b3JtQmxvY2tDYXNlLmdlbmVyYXRlQ29tcGFyZVNyY19BKHJlc3VsdFZhciwgdW5pZm9ybS5nZXRU
eXBlKCksIHNyY1ByZWZpeCArIHVuaWZvcm0uZ2V0TmFtZSgpLCBhcGlQcmVmaXggKyB1bmlmb3Jt
LmdldE5hbWUoKSwgbGF5b3V0LCBiYXNlUHRyLCB1bnVzZWRNYXNrKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzcmM7Cit9OworCisvKioKKyAqIGdsc1Vu
aWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVWZXJ0ZXhTaGFkZXIKKyAqIEByZXR1cm4ge3N0cmluZ30g
c3JjCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuU2hhZGVySW50ZXJmYWNlfSBzaW50
ZXJmYWNlCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dH0gbGF5
b3V0CisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tQb2ludGVyc30gYmxvY2tQ
b2ludGVycworICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlVmVydGV4U2hhZGVyID0g
ZnVuY3Rpb24oc2ludGVyZmFjZSwgbGF5b3V0LCBibG9ja1BvaW50ZXJzKSB7CisgICAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovIHZhciBzcmMgPSAnJzsKKworICAgIERFX0FTU0VSVChnbHNVbmlmb3Jt
QmxvY2tDYXNlLmlzU3VwcG9ydGVkR0xTTFZlcnNpb24oZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVy
c2lvbihnbCkpKTsKKworICAgIHNyYyArPSBnbHVTaGFkZXJVdGlsLmdldEdMU0xWZXJzaW9uRGVj
bGFyYXRpb24oZ2x1U2hhZGVyVXRpbC5nZXRHTFNMVmVyc2lvbihnbCkpICsgJ1xuJzsKKyAgICBz
cmMgKz0gJ2luIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbic7CisgICAgc3JjICs9ICdvdXQgbWVk
aXVtcCBmbG9hdCB2X3Z0eFJlc3VsdDtcbic7CisgICAgc3JjICs9ICdcbic7CisKKyAgICAvKiog
QHR5cGUge0FycmF5PGdsc1VuaWZvcm1CbG9ja0Nhc2UuU3RydWN0VHlwZT59ICovIHZhciBuYW1l
ZFN0cnVjdHMgPSBbXTsKKyAgICBzaW50ZXJmYWNlLmdldE5hbWVkU3RydWN0cyhuYW1lZFN0cnVj
dHMpOworICAgIGZvciAodmFyIHN0cnVjdE5keCA9IDA7IHN0cnVjdE5keCA8IG5hbWVkU3RydWN0
cy5sZW5ndGg7IHN0cnVjdE5keCsrKQorICAgICAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2Fz
ZS5nZW5lcmF0ZURlY2xhcmF0aW9uX0MobmFtZWRTdHJ1Y3RzW3N0cnVjdE5keF0sIDApOworCisg
ICAgZm9yICh2YXIgYmxvY2tOZHggPSAwOyBibG9ja05keCA8IHNpbnRlcmZhY2UuZ2V0TnVtVW5p
Zm9ybUJsb2NrcygpOyBibG9ja05keCsrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2t9ICovIHZhciBibG9jayA9IHNpbnRlcmZhY2UuZ2V0VW5p
Zm9ybUJsb2NrKGJsb2NrTmR4KTsKKyAgICAgICAgaWYgKGJsb2NrLmdldEZsYWdzKCkgJiBnbHNV
bmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX1ZFUlRFWCkKKyAgICAgICAgICAg
IHNyYyArPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlRGVjbGFyYXRpb24oYmxvY2spOwor
ICAgIH0KKworICAgIC8vIENvbXBhcmlzb24gdXRpbGl0aWVzLgorICAgIHNyYyArPSAnXG4nOwor
ICAgIHNyYyArPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlQ29tcGFyZUZ1bmNzKHNpbnRl
cmZhY2UpOworCisgICAgc3JjICs9ICdcbicgKworICAgICAgICAgICAndm9pZCBtYWluICh2b2lk
KVxuJyArCisgICAgICAgICAgICcge1xuJyArCisgICAgICAgICAgICcgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uO1xuJyArCisgICAgICAgICAgICcgbWVkaXVtcCBmbG9hdCByZXN1bHQgPSAxLjA7
XG4nOworCisgICAgLy8gVmFsdWUgY29tcGFyZS4KKyAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5nZW5lcmF0ZUNvbXBhcmVTcmMoJ3Jlc3VsdCcsIHNpbnRlcmZhY2UsIGxheW91dCwgYmxv
Y2tQb2ludGVycywgdHJ1ZSk7CisKKyAgICBzcmMgKz0gJyB2X3Z0eFJlc3VsdCA9IHJlc3VsdDtc
bicgKworICAgICAgICAgICAnfVxuJzsKKworICAgIHJldHVybiBzcmM7Cit9OworCisvKioKKyAq
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVGcmFnbWVudFNoYWRlcgorICogQHJldHVybiB7
c3RyaW5nfSBVc2VkIHRvIGJlIGFuIG91dHB1dCBwYXJhbWV0ZXIKKyAqIEBwYXJhbSB7Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5TaGFkZXJJbnRlcmZhY2V9IHNpbnRlcmZhY2UKKyAqIEBwYXJhbSB7Z2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0fSBsYXlvdXQKKyAqIEBwYXJhbSB7Z2xzVW5p
Zm9ybUJsb2NrQ2FzZS5CbG9ja1BvaW50ZXJzfSBibG9ja1BvaW50ZXJzCisgKi8KK2dsc1VuaWZv
cm1CbG9ja0Nhc2UuZ2VuZXJhdGVGcmFnbWVudFNoYWRlciA9IGZ1bmN0aW9uKHNpbnRlcmZhY2Us
IGxheW91dCwgYmxvY2tQb2ludGVycykgeworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB2YXIg
c3JjID0gJyc7CisgICAgREVfQVNTRVJUKGdsc1VuaWZvcm1CbG9ja0Nhc2UuaXNTdXBwb3J0ZWRH
TFNMVmVyc2lvbihnbHVTaGFkZXJVdGlsLmdldEdMU0xWZXJzaW9uKGdsKSkpOworCisgICAgc3Jj
ICs9IGdsdVNoYWRlclV0aWwuZ2V0R0xTTFZlcnNpb25EZWNsYXJhdGlvbihnbHVTaGFkZXJVdGls
LmdldEdMU0xWZXJzaW9uKGdsKSkgKyAnXG4nOworICAgIHNyYyArPSAnaW4gbWVkaXVtcCBmbG9h
dCB2X3Z0eFJlc3VsdDtcbic7CisgICAgc3JjICs9ICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQg
bWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yO1xuJzsKKyAgICBzcmMgKz0gJ1xuJzsKKworICAg
IC8qKiBAdHlwZSB7QXJyYXk8Z2xzVW5pZm9ybUJsb2NrQ2FzZS5TdHJ1Y3RUeXBlPn0gKi8gdmFy
IG5hbWVkU3RydWN0cyA9IFtdOworICAgIHNpbnRlcmZhY2UuZ2V0TmFtZWRTdHJ1Y3RzKG5hbWVk
U3RydWN0cyk7CisgICAgZm9yICh2YXIgc3RydWN0TmR4ID0gMDsgc3RydWN0TmR4IDwgbmFtZWRT
dHJ1Y3RzLmxlbmd0aDsgc3RydWN0TmR4KyspCisgICAgICAgIHNyYyArPSBnbHNVbmlmb3JtQmxv
Y2tDYXNlLmdlbmVyYXRlRGVjbGFyYXRpb25fQyhuYW1lZFN0cnVjdHNbc3RydWN0TmR4XSwgMCk7
CisKKyAgICBmb3IgKHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgc2ludGVyZmFjZS5nZXRO
dW1Vbmlmb3JtQmxvY2tzKCk7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNV
bmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJsb2NrID0gc2ludGVyZmFjZS5n
ZXRVbmlmb3JtQmxvY2soYmxvY2tOZHgpOworICAgICAgICBpZiAoYmxvY2suZ2V0RmxhZ3MoKSAm
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVfRlJBR01FTlQpCisgICAg
ICAgICAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZURlY2xhcmF0aW9uKGJs
b2NrKTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJpc29uIHV0aWxpdGllcy4KKyAgICBzcmMgKz0g
J1xuJzsKKyAgICBzcmMgKz0gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZW5lcmF0ZUNvbXBhcmVGdW5j
cyhzaW50ZXJmYWNlKTsKKworICAgIHNyYyArPSAnXG4nICsKKyAgICAgICAgICAgJ3ZvaWQgbWFp
biAodm9pZClcbicgKworICAgICAgICAgICAnIHtcbicgKworICAgICAgICAgICAnIG1lZGl1bXAg
ZmxvYXQgcmVzdWx0ID0gMS4wO1xuJzsKKworICAgIC8vIFZhbHVlIGNvbXBhcmUuCisgICAgc3Jj
ICs9IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVDb21wYXJlU3JjKCdyZXN1bHQnLCBzaW50
ZXJmYWNlLCBsYXlvdXQsIGJsb2NrUG9pbnRlcnMsIGZhbHNlKTsKKworICAgIHNyYyArPSAnIGRF
UVBfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIHZfdnR4UmVzdWx0LCByZXN1bHQsIDEuMCk7XG4nICsK
KyAgICAgICAgICAgJ31cbic7CisKKyAgICByZXR1cm4gc3JjOworfTsKKworLyoqCisgKiBUT0RP
OiB0ZXN0IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2V0R0xVbmlmb3JtTGF5b3V0IEdldHMgdGhlIHVu
aWZvcm0gYmxvY2tzIGFuZCB1bmlmb3JtcyBpbiB0aGUgcHJvZ3JhbS4KKyAqIEBwYXJhbSB7V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dH0gZ2wKKyAqIEBwYXJhbSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5V
bmlmb3JtTGF5b3V0fSBsYXlvdXQgVG8gc3RvcmUgdGhlIGxheW91dCBkZXNjcmliZWQgaW4gcHJv
Z3JhbS4KKyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtIGlkCisgKi8KK2dsc1VuaWZv
cm1CbG9ja0Nhc2UuZ2V0R0xVbmlmb3JtTGF5b3V0ID0gZnVuY3Rpb24oZ2wsIGxheW91dCwgcHJv
Z3JhbSkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQWN0aXZlVW5pZm9ybXMg
PSAwOworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQWN0aXZlQmxvY2tzID0gMDsK
KworICAgIG51bUFjdGl2ZVVuaWZvcm1zID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUykpOyAvLyBBQ1RJVkVf
VU5JRk9STSogcmV0dXJucyBHTEludAorICAgIG51bUFjdGl2ZUJsb2NrcyA9IC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyAoZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5BQ1RJVkVfVU5J
Rk9STV9CTE9DS1MpKTsKKworICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9j
a0xheW91dEVudHJ5fSAqLyB2YXIgZW50cnlCbG9jazsKKyAgICAvKiogQHR5cGUge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dEVudHJ5fSAqLyB2YXIgZW50cnlVbmlmb3JtOworICAg
IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc2l6ZTsKKyAgICAvKiogQHR5cGUge251bWJlcn0g
Ki8gdmFyIG5hbWVMZW47CisgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBuYW1lQnVmOwor
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQmxvY2tVbmlmb3JtczsKKworICAgIC8v
IEJsb2NrIGVudHJpZXMuCisgICAgLy9ObyBuZWVkIHRvIGFsbG9jYXRlIHRoZXNlIGJlZm9yZWhh
bmQ6IGxheW91dC5ibG9ja3MucmVzaXplKG51bUFjdGl2ZUJsb2Nrcyk7CisgICAgZm9yICh2YXIg
YmxvY2tOZHggPSAwOyBibG9ja05keCA8IG51bUFjdGl2ZUJsb2NrczsgYmxvY2tOZHgrKykgewor
ICAgICAgICBlbnRyeUJsb2NrID0gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tMYXlvdXRF
bnRyeSgpOworCisgICAgICAgIHNpemUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldEFj
dGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9ncmFtLCBibG9ja05keCwgZ2wuVU5JRk9STV9C
TE9DS19EQVRBX1NJWkUpKTsKKyAgICAgICAgLy8gbmFtZUxlbiBub3QgdXNlZCBzbyB0aGlzIGxp
bmUgaXMgcmVtb3ZlZC4KKyAgICAgICAgLy8gbmFtZUxlbiA9IGdsLmdldEFjdGl2ZVVuaWZvcm1C
bG9ja1BhcmFtZXRlcihwcm9ncmFtLCBibG9ja05keCwgZ2wuVU5JRk9STV9CTE9DS19OQU1FX0xF
TkdUSCk7IC8vIFRPRE86IFVOSUZPUk1fQkxPQ0tfTkFNRV9MRU5HVEggaXMgcmVtb3ZlZCBpbiBX
ZWJHTDIKKyAgICAgICAgbnVtQmxvY2tVbmlmb3JtcyA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAo
Z2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKHByb2dyYW0sIGJsb2NrTmR4LCBnbC5V
TklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUykpOworCisgICAgICAgIG5hbWVCdWYgPSBnbC5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIGJsb2NrTmR4KTsKKworICAgICAgICBl
bnRyeUJsb2NrLm5hbWUgPSBuYW1lQnVmOworICAgICAgICBlbnRyeUJsb2NrLnNpemUgPSBzaXpl
OworICAgICAgICAvL2VudHJ5LmFjdGl2ZVVuaWZvcm1JbmRpY2VzLnJlc2l6ZShudW1CbG9ja1Vu
aWZvcm1zKTsKKworICAgICAgICBpZiAobnVtQmxvY2tVbmlmb3JtcyA+IDApCisgICAgICAgICAg
ICBlbnRyeUJsb2NrLmFjdGl2ZVVuaWZvcm1JbmRpY2VzID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyKHByb2dyYW0sIGJsb2NrTmR4LCBnbC5VTklGT1JNX0JMT0NLX0FDVElWRV9V
TklGT1JNX0lORElDRVMpOworCisgICAgICAgIGxheW91dC5ibG9ja3MucHVzaChlbnRyeUJsb2Nr
KTsgLy9QdXNoaW5nIHRoZSBibG9jayBpbnRvIHRoZSBhcnJheSBoZXJlLgorICAgIH0KKworICAg
IGlmIChudW1BY3RpdmVVbmlmb3JtcyA+IDApIHsKKyAgICAgICAgLy8gZ2xzVW5pZm9ybUJsb2Nr
Q2FzZS5Vbmlmb3JtIGVudHJpZXMuCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0g
Ki8gdmFyIHVuaWZvcm1JbmRpY2VzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bnVtQWN0aXZlVW5pZm9ybXM7IGkrKykKKyAgICAgICAgICAgIHVuaWZvcm1JbmRpY2VzLnB1c2go
aSk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdHlwZXMgPSBb
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgc2l6ZXMgPSBbXTsK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgbmFtZUxlbmd0aHMgPSBb
XTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYmxvY2tJbmRpY2Vz
ID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIG9mZnNldHMg
PSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgYXJyYXlTdHJp
ZGVzID0gW107CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFyIG1hdHJp
eFN0cmlkZXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIg
cm93TWFqb3JGbGFncyA9IFtdOworCisgICAgICAgIC8vIEV4ZWN1dGUgcXVlcmllcy4KKyAgICAg
ICAgdHlwZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywg
Z2wuVU5JRk9STV9UWVBFKTsKKyAgICAgICAgc2l6ZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9TSVpFKTsKKyAgICAgICAgLy8gUmVt
b3ZlIHRoaXM6IG5hbWVMZW5ndGhzID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5p
Zm9ybUluZGljZXMsIGdsLlVOSUZPUk1fTkFNRV9MRU5HVEgpOworICAgICAgICBibG9ja0luZGlj
ZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5J
Rk9STV9CTE9DS19JTkRFWCk7CisgICAgICAgIG9mZnNldHMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jt
cyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9PRkZTRVQpOworICAgICAgICBh
cnJheVN0cmlkZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cywgZ2wuVU5JRk9STV9BUlJBWV9TVFJJREUpOworICAgICAgICBtYXRyaXhTdHJpZGVzID0gZ2wu
Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIGdsLlVOSUZPUk1fTUFU
UklYX1NUUklERSk7CisgICAgICAgIHJvd01ham9yRmxhZ3MgPSBnbC5nZXRBY3RpdmVVbmlmb3Jt
cyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9JU19ST1dfTUFKT1IpOworCisg
ICAgICAgIC8vIFRyYW5zbGF0ZSB0byBMYXlvdXRFbnRyaWVzCisgICAgICAgIC8vIE5vIHJlc2l6
ZSBuZWVkZWQuIFdpbGwgcHVzaCB0aGVtOiBsYXlvdXQudW5pZm9ybXMucmVzaXplKG51bUFjdGl2
ZVVuaWZvcm1zKTsKKyAgICAgICAgZm9yICh2YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZvcm1OZHgg
PCBudW1BY3RpdmVVbmlmb3JtczsgdW5pZm9ybU5keCsrKSB7CisgICAgICAgICAgICBlbnRyeVVu
aWZvcm0gPSBuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnkoKTsKKwor
ICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXM6IG5hbWVMZW4gPSAwOworICAgICAgICAgICAgc2l6
ZSA9IDA7CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHR5cGUgPSBnbC5O
T05FOworCisgICAgICAgICAgICB2YXIgdW5pZm9ybSA9IGdsLmdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgdW5pZm9ybU5keCk7CisKKyAgICAgICAgICAgIG5hbWVCdWYgPSB1bmlmb3JtLm5hbWU7
CisgICAgICAgICAgICAvLyBSZW1vdmUgdGhpczogbmFtZUxlbiA9IG5hbWVCdWYubGVuZ3RoOwor
ICAgICAgICAgICAgc2l6ZSA9IHVuaWZvcm0uc2l6ZTsKKyAgICAgICAgICAgIHR5cGUgPSB1bmlm
b3JtLnR5cGU7CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSB0aGlzOiBuYW1lTGVuICE9IG5hbWVM
ZW5ndGhzW3VuaWZvcm1OZHhdIHx8CisgICAgICAgICAgICBpZiAoc2l6ZSAhPSBzaXplc1t1bmlm
b3JtTmR4XSB8fAorICAgICAgICAgICAgICAgIHR5cGUgIT0gdHlwZXNbdW5pZm9ybU5keF0pCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoIlZhbHVlcyByZXR1cm5lZCBieSBnbC5n
ZXRBY3RpdmVVbmlmb3JtKCkgZG9uJ3QgbWF0Y2ggd2l0aCB2YWx1ZXMgcXVlcmllZCB3aXRoIGds
LmdldEFjdGl2ZVVuaWZvcm1zKCkuIiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGVudHJ5VW5pZm9y
bS5uYW1lID0gbmFtZUJ1ZjsKKyAgICAgICAgICAgIGVudHJ5VW5pZm9ybS50eXBlID0gZ2x1U2hh
ZGVyVXRpbC5nZXREYXRhVHlwZUZyb21HTFR5cGUodHlwZXNbdW5pZm9ybU5keF0pOworICAgICAg
ICAgICAgZW50cnlVbmlmb3JtLnNpemUgPSBzaXplc1t1bmlmb3JtTmR4XTsKKyAgICAgICAgICAg
IGVudHJ5VW5pZm9ybS5ibG9ja05keCA9IGJsb2NrSW5kaWNlc1t1bmlmb3JtTmR4XTsKKyAgICAg
ICAgICAgIGVudHJ5VW5pZm9ybS5vZmZzZXQgPSBvZmZzZXRzW3VuaWZvcm1OZHhdOworICAgICAg
ICAgICAgZW50cnlVbmlmb3JtLmFycmF5U3RyaWRlID0gYXJyYXlTdHJpZGVzW3VuaWZvcm1OZHhd
OworICAgICAgICAgICAgZW50cnlVbmlmb3JtLm1hdHJpeFN0cmlkZSA9IG1hdHJpeFN0cmlkZXNb
dW5pZm9ybU5keF07CisgICAgICAgICAgICBlbnRyeVVuaWZvcm0uaXNSb3dNYWpvciA9IHJvd01h
am9yRmxhZ3NbdW5pZm9ybU5keF0gIT0gZmFsc2U7CisKKyAgICAgICAgICAgIGxheW91dC51bmlm
b3Jtcy5wdXNoKGVudHJ5VW5pZm9ybSk7IC8vUHVzaGluZyB0aGlzIHVuaWZvcm0gaW4gdGhlIGVu
ZC4KKyAgICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5j
b3B5VW5pZm9ybURhdGFfQSAtIENvcGllcyBhIHNvdXJjZSB1bmlmb3JtIGJ1ZmZlciBzZWdtZW50
IHRvIGEgZGVzdGluYXRpb24gdW5pZm9ybSBidWZmZXIgc2VnbWVudC4KKyAqIEBwYXJhbSB7Z2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnl9IGRzdEVudHJ5CisgKiBAcGFyYW0g
e1VpbnQ4QXJyYXl9IGRzdEJsb2NrUHRyCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
VW5pZm9ybUxheW91dEVudHJ5fSBzcmNFbnRyeQorICogQHBhcmFtIHtVaW50OEFycmF5fSBzcmNC
bG9ja1B0cgorICovCitnbHNVbmlmb3JtQmxvY2tDYXNlLmNvcHlVbmlmb3JtRGF0YV9BID0gZnVu
Y3Rpb24oZHN0RW50cnksIGRzdEJsb2NrUHRyLCBzcmNFbnRyeSwgc3JjQmxvY2tQdHIpIHsKKyAg
ICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHZhciBkc3RCYXNlUHRyID0gZHN0QmxvY2tQdHIu
c3ViYXJyYXkoZHN0RW50cnkub2Zmc2V0KTsKKyAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICov
IHZhciBzcmNCYXNlUHRyID0gc3JjQmxvY2tQdHIuc3ViYXJyYXkoc3JjRW50cnkub2Zmc2V0KTsK
KworICAgIERFX0FTU0VSVChkc3RFbnRyeS5zaXplIDw9IHNyY0VudHJ5LnNpemUpOworICAgIERF
X0FTU0VSVChkc3RFbnRyeS50eXBlID09IHNyY0VudHJ5LnR5cGUpOworCisgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBzY2FsYXJTaXplID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNj
YWxhclNpemUoZHN0RW50cnkudHlwZSk7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIg
aXNNYXRyaXggPSBnbHVTaGFkZXJVdGlsLmlzRGF0YVR5cGVNYXRyaXgoZHN0RW50cnkudHlwZSk7
CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBjb21wU2l6ZSA9IGRlTWF0aC5JTlQzMl9T
SVpFOworCisgICAgZm9yICh2YXIgZWxlbWVudE5keCA9IDA7IGVsZW1lbnROZHggPCBkc3RFbnRy
eS5zaXplOyBlbGVtZW50TmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAq
LyB2YXIgZHN0RWxlbVB0ciA9IGRzdEJhc2VQdHIuc3ViYXJyYXkoZWxlbWVudE5keCAqIGRzdEVu
dHJ5LmFycmF5U3RyaWRlKTsKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIg
c3JjRWxlbVB0ciA9IHNyY0Jhc2VQdHIuc3ViYXJyYXkoZWxlbWVudE5keCAqIHNyY0VudHJ5LmFy
cmF5U3RyaWRlKTsKKworICAgICAgICBpZiAoaXNNYXRyaXgpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtUm93cyA9IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVN
YXRyaXhOdW1Sb3dzKGRzdEVudHJ5LnR5cGUpOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBudW1Db2xzID0gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bUNv
bHVtbnMoZHN0RW50cnkudHlwZSk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGNvbE5keCA9IDA7
IGNvbE5keCA8IG51bUNvbHM7IGNvbE5keCsrKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
cm93TmR4ID0gMDsgcm93TmR4IDwgbnVtUm93czsgcm93TmR4KyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHNyY29mZnNldCA9IGRzdEVudHJ5LmlzUm93TWFqb3IgPyByb3dOZHggKiBkc3RF
bnRyeS5tYXRyaXhTdHJpZGUgKyBjb2xOZHggKiBjb21wU2l6ZSA6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xOZHggKiBkc3RFbnRyeS5tYXRyaXhTdHJpZGUgKyByb3dO
ZHggKiBjb21wU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5
fSAqLyB2YXIgZHN0Q29tcFB0ciA9IGRzdEVsZW1QdHIuc3ViYXJyYXkoc3Jjb2Zmc2V0LCBzcmNv
ZmZzZXQgKyBjb21wU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBkc3RvZmZzZXQgPSBz
cmNFbnRyeS5pc1Jvd01ham9yID8gcm93TmR4ICogc3JjRW50cnkubWF0cml4U3RyaWRlICsgY29s
TmR4ICogY29tcFNpemUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s
TmR4ICogc3JjRW50cnkubWF0cml4U3RyaWRlICsgcm93TmR4ICogY29tcFNpemU7CisgICAgICAg
ICAgICAgICAgICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdmFyIHNyY0NvbXBQdHIgPSBz
cmNFbGVtUHRyLnN1YmFycmF5KGRzdG9mZnNldCwgZHN0b2Zmc2V0ICsgY29tcFNpemUpOworCisg
ICAgICAgICAgICAgICAgICAgIC8vQ29weSBieXRlIHBlciBieXRlCisgICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRzdENvbXBQdHJbaV0gPSBzcmNDb21wUHRyW2ldOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAvL0NvcHkgYnl0ZSBw
ZXIgYnl0ZQorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2FsYXJTaXplICogY29t
cFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBkc3RFbGVtUHRyW2ldID0gc3JjRWxlbVB0cltp
XTsKKyAgICB9Cit9OworCisvKioKKyAqIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29weVVuaWZvcm1E
YXRhIC0gQ29waWVzIGEgc291cmNlIHVuaWZvcm0gYnVmZmVyIHRvIGEgZGVzdGluYXRpb24gdW5p
Zm9ybSBidWZmZXIuCisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91
dH0gZHN0TGF5b3V0CisgKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tQb2ludGVy
c30gZHN0QmxvY2tQb2ludGVycworICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZv
cm1MYXlvdXR9IHNyY0xheW91dAorICogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2Nr
UG9pbnRlcnN9IHNyY0Jsb2NrUG9pbnRlcnMKKyAqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5jb3B5
VW5pZm9ybURhdGEgPSBmdW5jdGlvbihkc3RMYXlvdXQsIGRzdEJsb2NrUG9pbnRlcnMsIHNyY0xh
eW91dCwgc3JjQmxvY2tQb2ludGVycykgeworICAgIC8vIFxub3RlIFNyYyBsYXlvdXQgaXMgdXNl
ZCBhcyByZWZlcmVuY2UgaW4gY2FzZSBvZiBhY3RpdmVVbmlmb3JtcyBoYXBwZW5zIHRvIGJlIGlu
Y29ycmVjdCBpbiBkc3RMYXlvdXQgYmxvY2tzLgorICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2
YXIgbnVtQmxvY2tzID0gc3JjTGF5b3V0LmJsb2Nrcy5sZW5ndGg7CisKKyAgICBmb3IgKHZhciBz
cmNCbG9ja05keCA9IDA7IHNyY0Jsb2NrTmR4IDwgbnVtQmxvY2tzOyBzcmNCbG9ja05keCsrKSB7
CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9ja0xheW91dEVudHJ5
fSAqLyB2YXIgc3JjQmxvY2sgPSBzcmNMYXlvdXQuYmxvY2tzW3NyY0Jsb2NrTmR4XTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgc3JjQmxvY2tQdHIgPSBzcmNCbG9ja1Bv
aW50ZXJzLmZpbmQoc3JjQmxvY2tOZHgpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dmFyIGRzdEJsb2NrTmR4ID0gZHN0TGF5b3V0LmdldEJsb2NrSW5kZXgoc3JjQmxvY2submFtZSk7
CisgICAgICAgIC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdmFyIGRzdEJsb2NrUHRyID0gZHN0
QmxvY2tOZHggPj0gMCA/IGRzdEJsb2NrUG9pbnRlcnMuZmluZChkc3RCbG9ja05keCkgOiBudWxs
OworCisgICAgICAgIGlmIChkc3RCbG9ja05keCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBmb3IgKHZhciBzcmNVbmlmb3JtTmR4ID0gMDsgc3JjVW5pZm9ybU5keCA8IHNy
Y0Jsb2NrLmFjdGl2ZVVuaWZvcm1JbmRpY2VzLmxlbmd0aDsgc3JjVW5pZm9ybU5keCsrKSB7Cisg
ICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHNyY1VuaWZvcm1OZHhJdGVyID0g
c3JjQmxvY2suYWN0aXZlVW5pZm9ybUluZGljZXNbc3JjVW5pZm9ybU5keF07CisgICAgICAgICAg
ICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dEVudHJ5fSAqLyB2
YXIgc3JjRW50cnkgPSBzcmNMYXlvdXQudW5pZm9ybXNbc3JjVW5pZm9ybU5keEl0ZXJdOworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBkc3RVbmlmb3JtTmR4ID0gZHN0TGF5
b3V0LmdldFVuaWZvcm1JbmRleChzcmNFbnRyeS5uYW1lKTsKKworICAgICAgICAgICAgaWYgKGRz
dFVuaWZvcm1OZHggPCAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvcHlVbmlmb3JtRGF0YV9BKGRzdExheW91dC51bmlmb3Jt
c1tkc3RVbmlmb3JtTmR4XSwgZHN0QmxvY2tQdHIsIHNyY0VudHJ5LCBzcmNCbG9ja1B0cik7Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCisgLyoqCisgICogVE9ETzogVGVzdCB3aXRoIGFuIGFjdHVh
bCBXZWJHTCAyLjAgY29udGV4dAorICAqIGl0ZXJhdGUgLSBUaGUgYWN0dWFsIGV4ZWN1dGlvbiBv
ZiB0aGUgdGVzdC4KKyAgKiBAcmV0dXJuIHt0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0fQorICAq
LworIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUuaXRlcmF0
ZSA9IGZ1bmN0aW9uKCkgeworICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtTGF5b3V0fSAqLyB2YXIgcmVmTGF5b3V0ID0gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5p
Zm9ybUxheW91dCgpOyAvLyE8IHN0ZDE0MCBsYXlvdXQuCisgICAgLyoqIEB0eXBlIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLkJsb2NrUG9pbnRlcnN9ICovIHZhciBibG9ja1BvaW50ZXJzID0gbmV3IGds
c1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tQb2ludGVycygpOworCisgICAgLy8gQ29tcHV0ZSByZWZl
cmVuY2UgbGF5b3V0LgorICAgIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29tcHV0ZVN0ZDE0MExheW91
dChyZWZMYXlvdXQsIHRoaXMubV9pbnRlcmZhY2UpOworCisgICAgLy8gQXNzaWduIHN0b3JhZ2Ug
Zm9yIHJlZmVyZW5jZSB2YWx1ZXMuCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB0b3Rh
bFNpemUgPSAwOworICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCByZWZMYXlv
dXQuYmxvY2tzLmxlbmd0aDsgYmxvY2tOZHgrKykgeworICAgICAgICAvKiogQHR5cGUge2dsc1Vu
aWZvcm1CbG9ja0Nhc2UuQmxvY2tMYXlvdXRFbnRyeX0gKi8gdmFyIGJsb2NrSXRlciA9IHJlZkxh
eW91dC5ibG9ja3NbYmxvY2tOZHhdOworICAgICAgICB0b3RhbFNpemUgKz0gYmxvY2tJdGVyLnNp
emU7CisgICAgfQorICAgIGJsb2NrUG9pbnRlcnMucmVzaXplKHRvdGFsU2l6ZSk7CisKKyAgICAv
LyBQb2ludGVycyBmb3IgZWFjaCBibG9jay4KKyAgICB2YXIgY3VyT2Zmc2V0ID0gMDsKKyAgICBm
b3IgKHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgcmVmTGF5b3V0LmJsb2Nrcy5sZW5ndGg7
IGJsb2NrTmR4KyspIHsKKyAgICAgICAgdmFyIHNpemUgPSByZWZMYXlvdXQuYmxvY2tzW2Jsb2Nr
TmR4XS5zaXplOworICAgICAgICBibG9ja1BvaW50ZXJzLnB1c2goY3VyT2Zmc2V0LCBzaXplKTsK
KyAgICAgICAgY3VyT2Zmc2V0ICs9IHNpemU7CisgICAgfQorCisgICAgLy8gR2VuZXJhdGUgdmFs
dWVzLgorICAgIGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVWYWx1ZXMocmVmTGF5b3V0LCBi
bG9ja1BvaW50ZXJzLCAxIC8qIHNlZWQgKi8pOworCisgICAgLy8gR2VuZXJhdGUgc2hhZGVycyBh
bmQgYnVpbGQgcHJvZ3JhbS4KKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIHZ0eFNyYyA9
IGdsc1VuaWZvcm1CbG9ja0Nhc2UuZ2VuZXJhdGVWZXJ0ZXhTaGFkZXIodGhpcy5tX2ludGVyZmFj
ZSwgcmVmTGF5b3V0LCBibG9ja1BvaW50ZXJzKTsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGZyYWdTcmMgPSBnbHNVbmlmb3JtQmxvY2tDYXNlLmdlbmVyYXRlRnJhZ21lbnRTaGFkZXIo
dGhpcy5tX2ludGVyZmFjZSwgcmVmTGF5b3V0LCBibG9ja1BvaW50ZXJzKTsKKworICAgIC8qKiBA
dHlwZSB7Z2x1U2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtfSovIHZhciBwcm9ncmFtID0gbmV3
IGdsdVNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbShnbCwgZ2x1U2hhZGVyUHJvZ3JhbS5tYWtl
VnR4RnJhZ1NvdXJjZXModnR4U3JjLCBmcmFnU3JjKSk7CisgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUocHJvZ3JhbS5nZXRQcm9ncmFtSW5mbygpLmluZm9Mb2cpOworCisgICAgaWYgKCFwcm9ncmFt
LmlzT2soKSkgeworICAgICAgICAvLyBDb21waWxlIGZhaWxlZC4KKyAgICAgICAgdGVzdEZhaWxl
ZE9wdGlvbnMoJ0NvbXBpbGUgZmFpbGVkJywgZmFsc2UpOworICAgICAgICByZXR1cm4gdGN1VGVz
dENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOworICAgIH0KKworICAgIC8vIFF1ZXJ5IGxheW91dCBm
cm9tIEdMLgorICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0
fSAqLyB2YXIgZ2xMYXlvdXQgPSBuZXcgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0
KCk7CisgICAgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5nZXRHTFVuaWZvcm1MYXlvdXQoZ2wsIGdsTGF5
b3V0LCBwcm9ncmFtLmdldFByb2dyYW0oKSk7CisKKyAgICAvLyBQcmludCBsYXlvdXQgdG8gbG9n
LgorICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBY3RpdmUgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5V
bmlmb3JtIEJsb2NrcycpOworICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBn
bExheW91dC5ibG9ja3MubGVuZ3RoOyBibG9ja05keCsrKQorICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZShibG9ja05keCArICc6ICcgKyBnbExheW91dC5ibG9ja3NbYmxvY2tOZHhdKTsKKwor
ICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdBY3RpdmUgVW5pZm9ybXMnKTsKKyAgICAgZm9yICh2
YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZvcm1OZHggPCBnbExheW91dC51bmlmb3Jtcy5sZW5ndGg7
IHVuaWZvcm1OZHgrKykKKyAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKHVuaWZvcm1OZHgg
KyAnOiAnICsgZ2xMYXlvdXQudW5pZm9ybXNbdW5pZm9ybU5keF0pOworCisgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBjYW4gZXZlbiB0cnkgcmVuZGVyaW5nIHdpdGggZ2l2ZW4gbGF5b3V0LgorICAgIGlm
ICghdGhpcy5jaGVja0xheW91dEluZGljZXMoZ2xMYXlvdXQpIHx8ICF0aGlzLmNoZWNrTGF5b3V0
Qm91bmRzKGdsTGF5b3V0KSB8fCAhdGhpcy5jb21wYXJlVHlwZXMocmVmTGF5b3V0LCBnbExheW91
dCkpIHsKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ludmFsaWQgbGF5b3V0JywgZmFsc2Up
OworICAgICAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5TVE9QOyAvLyBJdCBp
cyBub3Qgc2FmZSB0byB1c2UgdGhlIGdpdmVuIGxheW91dC4KKyAgICB9CisKKyAgICAvLyBWZXJp
ZnkgYWxsIHN0ZDE0MCBibG9ja3MuCisgICAgaWYgKCF0aGlzLmNvbXBhcmVTdGQxNDBCbG9ja3Mo
cmVmTGF5b3V0LCBnbExheW91dCkpCisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbnZhbGlk
IHN0ZDE0MCBsYXlvdXQnLCBmYWxzZSk7CisKKyAgICAvLyBWZXJpZnkgYWxsIHNoYXJlZCBibG9j
a3MgLSBhbGwgdW5pZm9ybXMgc2hvdWxkIGJlIGFjdGl2ZSwgYW5kIGNlcnRhaW4gcHJvcGVydGll
cyBtYXRjaC4KKyAgICBpZiAoIXRoaXMuY29tcGFyZVNoYXJlZEJsb2NrcyhyZWZMYXlvdXQsIGds
TGF5b3V0KSkKKyAgICAgICAgdGVzdEZhaWxlZE9wdGlvbnMoJ0ludmFsaWQgc2hhcmVkIGxheW91
dCcsIGZhbHNlKTsKKworICAgIC8vIENoZWNrIGNvbnNpc3RlbmN5IHdpdGggaW5kZXggcXVlcmll
cworICAgIGlmICghdGhpcy5jaGVja0luZGV4UXVlcmllcyhwcm9ncmFtLmdldFByb2dyYW0oKSwg
Z2xMYXlvdXQpKQorICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnSW5jb25zaW50ZW50IGJsb2Nr
IGluZGV4IHF1ZXJ5IHJlc3VsdHMnLCBmYWxzZSk7CisKKyAgICAvLyBVc2UgcHJvZ3JhbS4KKyAg
ICBnbC51c2VQcm9ncmFtKHByb2dyYW0uZ2V0UHJvZ3JhbSgpKTsKKworICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLyB2YXIgYmluZGluZzsKKyAgICAvKiogQHR5cGUge1dlYkdMQnVmZmVyfSAqLyB2
YXIgYnVmZmVyOworCisgICAgLy8gQXNzaWduIGJpbmRpbmcgcG9pbnRzIHRvIGFsbCBhY3RpdmUg
dW5pZm9ybSBibG9ja3MuCisgICAgZm9yICh2YXIgYmxvY2tOZHggPSAwOyBibG9ja05keCA8IGds
TGF5b3V0LmJsb2Nrcy5sZW5ndGg7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgYmluZGluZyA9IGJs
b2NrTmR4OyAvLyBcdG9kbyBbMjAxMi0wMS0yNSBweXJ5XSBSYW5kb21pemUgb3JkZXI/CisgICAg
ICAgIGdsLnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbS5nZXRQcm9ncmFtKCksIGJsb2NrTmR4
LCBiaW5kaW5nKTsKKyAgICB9CisKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUJs
b2NrczsKKyAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tQb2ludGVyc30g
Ki8gdmFyIGdsQmxvY2tQb2ludGVyczsKKworICAgIC8vIEFsbG9jYXRlIGJ1ZmZlcnMsIHdyaXRl
IGRhdGEgYW5kIGJpbmQgdG8gdGFyZ2V0cy4KKyAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUJ1ZmZlck1hbmFnZXJ9ICovIHZhciBidWZmZXJNYW5hZ2VyID0gbmV3IGds
c1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJ1ZmZlck1hbmFnZXIoZ2wpOworICAgIGlmICh0aGlz
Lm1fYnVmZmVyTW9kZSA9PSBnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1vZGUuQlVGRkVSTU9E
RV9QRVJfQkxPQ0spIHsKKyAgICAgICAgbnVtQmxvY2tzID0gZ2xMYXlvdXQuYmxvY2tzLmxlbmd0
aDsKKyAgICAgICAgZ2xCbG9ja1BvaW50ZXJzID0gbmV3IGdsc1VuaWZvcm1CbG9ja0Nhc2UuQmxv
Y2tQb2ludGVycygpOworCisgICAgICAgIHZhciB0b3RhbHNpemUgPSAwOworICAgICAgICBmb3Ig
KHZhciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgbnVtQmxvY2tzOyBibG9ja05keCsrKQorICAg
ICAgICAgICAgdG90YWxzaXplICs9IGdsTGF5b3V0LmJsb2Nrc1tibG9ja05keF0uc2l6ZTsKKwor
ICAgICAgICBnbEJsb2NrUG9pbnRlcnMucmVzaXplKHRvdGFsc2l6ZSk7CisKKyAgICAgICAgdmFy
IG9mZnNldCA9IDA7CisgICAgICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBu
dW1CbG9ja3M7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgICAgIGdsQmxvY2tQb2ludGVycy5wdXNo
KG9mZnNldCwgZ2xMYXlvdXQuYmxvY2tzW2Jsb2NrTmR4XS5zaXplKTsKKyAgICAgICAgICAgIG9m
ZnNldCArPSBnbExheW91dC5ibG9ja3NbYmxvY2tOZHhdLnNpemU7CisgICAgICAgIH0KKworICAg
ICAgICBnbHNVbmlmb3JtQmxvY2tDYXNlLmNvcHlVbmlmb3JtRGF0YShnbExheW91dCwgZ2xCbG9j
a1BvaW50ZXJzLCByZWZMYXlvdXQsIGJsb2NrUG9pbnRlcnMpOworCisgICAgICAgIGZvciAodmFy
IGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBudW1CbG9ja3M7IGJsb2NrTmR4KyspIHsKKyAgICAg
ICAgICAgIGJ1ZmZlciA9IGJ1ZmZlck1hbmFnZXIuYWxsb2NCdWZmZXIoKTsKKyAgICAgICAgICAg
IGJpbmRpbmcgPSBibG9ja05keDsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuVU5JRk9S
TV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLlVOSUZPUk1f
QlVGRkVSLCBnbEJsb2NrUG9pbnRlcnMuZmluZChibG9ja05keCkgLyooZ2x3OjpHTHNpemVpcHRy
KWdsRGF0YVtibG9ja05keF0uc2l6ZSgpLCAmZ2xEYXRhW2Jsb2NrTmR4XVswXSovLCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgICAgICAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JVRkZF
UiwgYmluZGluZywgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIERF
X0FTU0VSVCh0aGlzLm1fYnVmZmVyTW9kZSA9PSBnbHNVbmlmb3JtQmxvY2tDYXNlLkJ1ZmZlck1v
ZGUuQlVGRkVSTU9ERV9TSU5HTEUpOworCisgICAgICAgIHRvdGFsU2l6ZSA9IDA7CisgICAgICAg
IGN1ck9mZnNldCA9IDA7CisgICAgICAgIG51bUJsb2NrcyA9IGdsTGF5b3V0LmJsb2Nrcy5sZW5n
dGg7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYmluZGluZ0FsaWdubWVudCA9
IDA7CisgICAgICAgIGdsQmxvY2tQb2ludGVycyA9IG5ldyBnbHNVbmlmb3JtQmxvY2tDYXNlLkJs
b2NrUG9pbnRlcnMoKTsKKworICAgICAgICBiaW5kaW5nQWxpZ25tZW50ID0gLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIChnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdO
TUVOVCkpOworCisgICAgICAgIC8vIENvbXB1dGUgdG90YWwgc2l6ZSBhbmQgb2Zmc2V0cy4KKyAg
ICAgICAgY3VyT2Zmc2V0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgYmxvY2tOZHggPSAwOyBibG9j
a05keCA8IG51bUJsb2NrczsgYmxvY2tOZHgrKykgeworICAgICAgICAgICAgaWYgKGJpbmRpbmdB
bGlnbm1lbnQgPiAwKQorICAgICAgICAgICAgICAgIGN1ck9mZnNldCA9IGdsc1VuaWZvcm1CbG9j
a0Nhc2UuZGVSb3VuZFVwMzIoY3VyT2Zmc2V0LCBiaW5kaW5nQWxpZ25tZW50KTsKKyAgICAgICAg
ICAgIGdsQmxvY2tQb2ludGVycy5wdXNoKGN1ck9mZnNldCwgZ2xMYXlvdXQuYmxvY2tzW2Jsb2Nr
TmR4XS5zaXplKTsKKyAgICAgICAgICAgIGN1ck9mZnNldCArPSBnbExheW91dC5ibG9ja3NbYmxv
Y2tOZHhdLnNpemU7CisgICAgICAgIH0KKyAgICAgICAgdG90YWxTaXplID0gY3VyT2Zmc2V0Owor
ICAgICAgICBnbEJsb2NrUG9pbnRlcnMucmVzaXplKHRvdGFsU2l6ZSk7CisKKyAgICAgICAgLy8g
Q29weSB0byBnbCBmb3JtYXQuCisgICAgICAgIGdsc1VuaWZvcm1CbG9ja0Nhc2UuY29weVVuaWZv
cm1EYXRhKGdsTGF5b3V0LCBnbEJsb2NrUG9pbnRlcnMsIHJlZkxheW91dCwgYmxvY2tQb2ludGVy
cyk7CisKKyAgICAgICAgLy8gQWxsb2NhdGUgYnVmZmVyIGFuZCB1cGxvYWQgZGF0YS4KKyAgICAg
ICAgYnVmZmVyID0gYnVmZmVyTWFuYWdlci5hbGxvY0J1ZmZlcigpOworICAgICAgICBnbC5iaW5k
QnVmZmVyKGdsLlVOSUZPUk1fQlVGRkVSLCBidWZmZXIpOworICAgICAgICBpZiAoZ2xCbG9ja1Bv
aW50ZXJzLmRhdGEuYnl0ZUxlbmd0aCA+IDAgLyohZ2xEYXRhLmVtcHR5KCkqLykKKyAgICAgICAg
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuVU5JRk9STV9CVUZGRVIsIGdsQmxvY2tQb2ludGVycy5maW5k
KGJsb2NrTmR4KSAvKihnbHc6OkdMc2l6ZWlwdHIpZ2xEYXRhLnNpemUoKSwgJmdsRGF0YVswXSov
LCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgLy8gQmluZCByYW5nZXMgdG8gYmluZGluZyBw
b2ludHMuCisgICAgICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBudW1CbG9j
a3M7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgICAgIGJpbmRpbmcgPSBibG9ja05keDsKKyAgICAg
ICAgICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5VTklGT1JNX0JVRkZFUiwgYmluZGluZywgYnVm
ZmVyLCBnbEJsb2NrUG9pbnRlcnMub2Zmc2V0c1tibG9ja05keF0sIGdsTGF5b3V0LmJsb2Nrc1ti
bG9ja05keF0uc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiogQHR5cGUge2Jvb2xl
YW59ICovIHZhciByZW5kZXJPayA9IHRoaXMucmVuZGVyKHByb2dyYW0pOworICAgIGlmICghcmVu
ZGVyT2spCisgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdJbWFnZSBjb21wYXJlIGZhaWxlZCcs
IGZhbHNlKTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydE1zZ09wdGlvbnMocmVuZGVyT2ssICcn
LCB0cnVlLCBmYWxzZSk7CisKKyAgICByZXR1cm4gdGN1VGVzdENhc2UuSXRlcmF0ZVJlc3VsdC5T
VE9QOworfTsKKworLyoqCisqIGNvbXBhcmVTdGQxNDBCbG9ja3MKKyogQHBhcmFtIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXR9IHJlZkxheW91dAorKiBAcGFyYW0ge2dsc1VuaWZv
cm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dH0gY21wTGF5b3V0CisqKi8KK2dsc1VuaWZvcm1CbG9j
a0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUuY29tcGFyZVN0ZDE0MEJsb2NrcyA9IGZ1
bmN0aW9uKHJlZkxheW91dCwgY21wTGF5b3V0KSB7CisgICAgLyoqQHR5cGUge2Jvb2xlYW59ICov
IHZhciBpc09rID0gdHJ1ZTsKKyAgICAvKipAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbnVtQmxvY2tz
ID0gdGhpcy5tX2ludGVyZmFjZS5nZXROdW1Vbmlmb3JtQmxvY2tzKCk7CisKKyAgICBmb3IgKHZh
ciBibG9ja05keCA9IDA7IGJsb2NrTmR4IDwgbnVtQmxvY2tzOyBibG9ja05keCsrKSB7CisgICAg
ICAgIC8qKkB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJs
b2NrID0gdGhpcy5tX2ludGVyZmFjZS5nZXRVbmlmb3JtQmxvY2soYmxvY2tOZHgpOworICAgICAg
ICAvKipAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzQXJyYXkgPSBibG9jay5pc0FycmF5KCk7Cisg
ICAgICAgIC8qKkB0eXBlIHtzdHJpbmd9ICovIHZhciBpbnN0YW5jZU5hbWUgPSBibG9jay5nZXRC
bG9ja05hbWUoKSArIChpc0FycmF5ID8gJ1swXScgOiAnJyk7CisgICAgICAgIC8qKkB0eXBlIHtu
dW1iZXJ9ICovIHZhciByZWZCbG9ja05keCA9IHJlZkxheW91dC5nZXRCbG9ja0luZGV4KGluc3Rh
bmNlTmFtZSk7CisgICAgICAgIC8qKkB0eXBlIHtudW1iZXJ9ICovIHZhciBjbXBCbG9ja05keCA9
IGNtcExheW91dC5nZXRCbG9ja0luZGV4KGluc3RhbmNlTmFtZSk7CisgICAgICAgIC8qKkB0eXBl
IHtib29sZWFufSAqLyB2YXIgaXNVc2VkID0gKGJsb2NrLmdldEZsYWdzKCkgJiAoZ2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtRmxhZ3MuREVDTEFSRV9WRVJURVggfCBnbHNVbmlmb3JtQmxvY2tD
YXNlLlVuaWZvcm1GbGFncy5ERUNMQVJFX0ZSQUdNRU5UKSkgIT0gMDsKKworICAgICAgICBpZiAo
KGJsb2NrLmdldEZsYWdzKCkgJiBnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5MQVlP
VVRfU1REMTQwKSA9PSAwKQorICAgICAgICAgICAgY29udGludWU7IC8vIE5vdCBzdGQxNDAgbGF5
b3V0LgorCisgICAgICAgIERFX0FTU0VSVChyZWZCbG9ja05keCA+PSAwKTsKKworICAgICAgICBp
ZiAoY21wQmxvY2tOZHggPCAwKSB7CisgICAgICAgICAgICAvLyBOb3QgZm91bmQsIHNob3VsZCBp
dD8KKyAgICAgICAgICAgIGlmIChpc1VzZWQpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExv
Z1RvQ29uc29sZSgiRXJyb3I6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSBibG9jayAnIiAr
IGluc3RhbmNlTmFtZSArICInIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIGlzT2sgPSBm
YWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgYmxv
Y2suCisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
QmxvY2tMYXlvdXRFbnRyeX0gKi8gdmFyIHJlZkJsb2NrTGF5b3V0ID0gcmVmTGF5b3V0LmJsb2Nr
c1tyZWZCbG9ja05keF07CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5C
bG9ja0xheW91dEVudHJ5fSAqLyB2YXIgY21wQmxvY2tMYXlvdXQgPSBjbXBMYXlvdXQuYmxvY2tz
W2NtcEJsb2NrTmR4XTsKKworICAgICAgICAvLyBcdG9kbyBbMjAxMi0wMS0yNCBweXJ5XSBWZXJp
ZnkgdGhhdCBhY3RpdmVVbmlmb3JtSW5kaWNlcyBpcyBjb3JyZWN0LgorICAgICAgICAvLyBcdG9k
byBbMjAxMi0wMS0yNCBweXJ5XSBWZXJpZnkgYWxsIGluc3RhbmNlcy4KKyAgICAgICAgaWYgKHJl
ZkJsb2NrTGF5b3V0LmFjdGl2ZVVuaWZvcm1JbmRpY2VzLmxlbmd0aCAhPSBjbXBCbG9ja0xheW91
dC5hY3RpdmVVbmlmb3JtSW5kaWNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkTG9n
VG9Db25zb2xlKCJFcnJvcjogTnVtYmVyIG9mIGFjdGl2ZSB1bmlmb3JtcyBkaWZmZXIgaW4gYmxv
Y2sgJyIgKyBpbnN0YW5jZU5hbWUgKworICAgICAgICAgICAgICAgICInIChleHBlY3RlZCAiICsg
cmVmQmxvY2tMYXlvdXQuYWN0aXZlVW5pZm9ybUluZGljZXMubGVuZ3RoICsKKyAgICAgICAgICAg
ICAgICAnLCBnb3QgJyArIGNtcEJsb2NrTGF5b3V0LmFjdGl2ZVVuaWZvcm1JbmRpY2VzLmxlbmd0
aCArCisgICAgICAgICAgICAgICAgJyknKTsKKyAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHJlZkJsb2NrTGF5b3V0
LmFjdGl2ZVVuaWZvcm1JbmRpY2VzLmxlbmd0aDsgbmR4KyspIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbmR4SXRlciA9IHJlZkJsb2NrTGF5b3V0LmFjdGl2ZVVuaWZv
cm1JbmRpY2VzW25keF07CisgICAgICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nh
c2UuVW5pZm9ybUxheW91dEVudHJ5fSAqLyB2YXIgcmVmRW50cnkgPSByZWZMYXlvdXQudW5pZm9y
bXNbbmR4SXRlcl07CisgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIGNtcEVu
dHJ5TmR4ID0gY21wTGF5b3V0LmdldFVuaWZvcm1JbmRleChyZWZFbnRyeS5uYW1lKTsKKworICAg
ICAgICAgICAgaWYgKGNtcEVudHJ5TmR4IDwgMCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKCJFcnJvcjogZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtICciICsgcmVm
RW50cnkubmFtZSArICInIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIGlzT2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeX0gKi8g
dmFyIGNtcEVudHJ5ID0gY21wTGF5b3V0LnVuaWZvcm1zW2NtcEVudHJ5TmR4XTsKKworICAgICAg
ICAgICAgaWYgKHJlZkVudHJ5LnR5cGUgIT0gY21wRW50cnkudHlwZSB8fAorICAgICAgICAgICAg
ICAgIHJlZkVudHJ5LnNpemUgIT0gY21wRW50cnkuc2l6ZSB8fAorICAgICAgICAgICAgICAgIHJl
ZkVudHJ5Lm9mZnNldCAhPSBjbXBFbnRyeS5vZmZzZXQgfHwKKyAgICAgICAgICAgICAgICByZWZF
bnRyeS5hcnJheVN0cmlkZSAhPSBjbXBFbnRyeS5hcnJheVN0cmlkZSB8fAorICAgICAgICAgICAg
ICAgIHJlZkVudHJ5Lm1hdHJpeFN0cmlkZSAhPSBjbXBFbnRyeS5tYXRyaXhTdHJpZGUgfHwKKyAg
ICAgICAgICAgICAgICByZWZFbnRyeS5pc1Jvd01ham9yICE9IGNtcEVudHJ5LmlzUm93TWFqb3Ip
IHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IExheW91dCBt
aXNtYXRjaCBpbiAnIiArIHJlZkVudHJ5Lm5hbWUgKyAiJzpcbiIgKworICAgICAgICAgICAgICAg
ICcgZXhwZWN0ZWQ6IHR5cGUgPSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUocmVm
RW50cnkudHlwZSkgKyAnLCBzaXplID0gJyArIHJlZkVudHJ5LnNpemUgKyAnLCByb3cgbWFqb3Ig
PSAnICsgKHJlZkVudHJ5LmlzUm93TWFqb3IgPyAndHJ1ZScgOiAnZmFsc2UnKSArICdcbicgKwor
ICAgICAgICAgICAgICAgICcgZ290OiB0eXBlID0gJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5
cGVOYW1lKGNtcEVudHJ5LnR5cGUpICsgJywgc2l6ZSA9ICcgKyBjbXBFbnRyeS5zaXplICsgJywg
cm93IG1ham9yID0gJyArIChjbXBFbnRyeS5pc1Jvd01ham9yID8gJ3RydWUnIDogJ2ZhbHNlJykp
OworICAgICAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBpc09rOworfTsKKworLyoqCisqIGNvbXBhcmVTaGFyZWRC
bG9ja3MKKyogQHBhcmFtIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXR9IHJlZkxh
eW91dAorKiBAcGFyYW0ge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dH0gY21wTGF5
b3V0CisqKi8KK2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUJsb2NrQ2FzZS5wcm90b3R5cGUu
Y29tcGFyZVNoYXJlZEJsb2NrcyA9IGZ1bmN0aW9uKHJlZkxheW91dCwgY21wTGF5b3V0KSB7Cisg
ICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IHRydWU7CisgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBudW1CbG9ja3MgPSB0aGlzLm1faW50ZXJmYWNlLmdldE51bVVuaWZv
cm1CbG9ja3MoKTsKKworICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBudW1C
bG9ja3M7IGJsb2NrTmR4KyspIHsKKyAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tD
YXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJsb2NrID0gdGhpcy5tX2ludGVyZmFjZS5nZXRVbmlm
b3JtQmxvY2soYmxvY2tOZHgpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBp
c0FycmF5ID0gYmxvY2suaXNBcnJheSgpOworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8g
dmFyIGluc3RhbmNlTmFtZSA9IGJsb2NrLmdldEJsb2NrTmFtZSgpICsgKGlzQXJyYXkgPyAnWzBd
JyA6ICcnKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZCbG9ja05keCA9
IHJlZkxheW91dC5nZXRCbG9ja0luZGV4KGluc3RhbmNlTmFtZSk7CisgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgY21wQmxvY2tOZHggPSBjbXBMYXlvdXQuZ2V0QmxvY2tJbmRleChp
bnN0YW5jZU5hbWUpOworICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc1VzZWQg
PSAoYmxvY2suZ2V0RmxhZ3MoKSAmIChnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1GbGFncy5E
RUNMQVJFX1ZFUlRFWCB8IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkRFQ0xBUkVf
RlJBR01FTlQpKSAhPSAwOworCisgICAgICAgIGlmICgoYmxvY2suZ2V0RmxhZ3MoKSAmIGdsc1Vu
aWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUZsYWdzLkxBWU9VVF9TSEFSRUQpID09IDApCisgICAgICAg
ICAgICBjb250aW51ZTsgLy8gTm90IHNoYXJlZCBsYXlvdXQuCisKKyAgICAgICAgREVfQVNTRVJU
KHJlZkJsb2NrTmR4ID49IDApOworCisgICAgICAgIGlmIChjbXBCbG9ja05keCA8IDApIHsKKyAg
ICAgICAgICAgIC8vIE5vdCBmb3VuZCwgc2hvdWxkIGl0PworICAgICAgICAgICAgaWYgKGlzVXNl
ZCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJFcnJvcjogZ2xzVW5p
Zm9ybUJsb2NrQ2FzZS5Vbmlmb3JtIGJsb2NrICciICsgaW5zdGFuY2VOYW1lICsgIicgbm90IGZv
dW5kIik7CisgICAgICAgICAgICAgICAgaXNPayA9IGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjb250aW51ZTsgLy8gU2tpcCBibG9jay4KKyAgICAgICAgfQorCisgICAgICAg
IC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5CbG9ja0xheW91dEVudHJ5fSAqLyB2YXIg
cmVmQmxvY2tMYXlvdXQgPSByZWZMYXlvdXQuYmxvY2tzW3JlZkJsb2NrTmR4XTsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLkJsb2NrTGF5b3V0RW50cnl9ICovIHZhciBj
bXBCbG9ja0xheW91dCA9IGNtcExheW91dC5ibG9ja3NbY21wQmxvY2tOZHhdOworCisgICAgICAg
IGlmIChyZWZCbG9ja0xheW91dC5hY3RpdmVVbmlmb3JtSW5kaWNlcy5sZW5ndGggIT0gY21wQmxv
Y2tMYXlvdXQuYWN0aXZlVW5pZm9ybUluZGljZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IE51bWJlciBvZiBhY3RpdmUgdW5pZm9ybXMgZGlmZmVy
IGluIGJsb2NrICciICsgaW5zdGFuY2VOYW1lICsKKyAgICAgICAgICAgICAgICAiJyAoZXhwZWN0
ZWQgIiArIHJlZkJsb2NrTGF5b3V0LmFjdGl2ZVVuaWZvcm1JbmRpY2VzLmxlbmd0aCArCisgICAg
ICAgICAgICAgICAgJywgZ290ICcgKyBjbXBCbG9ja0xheW91dC5hY3RpdmVVbmlmb3JtSW5kaWNl
cy5sZW5ndGggKworICAgICAgICAgICAgICAgICcpJyk7CisgICAgICAgICAgICBpc09rID0gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCByZWZCbG9j
a0xheW91dC5hY3RpdmVVbmlmb3JtSW5kaWNlcy5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAg
ICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG5keEl0ZXIgPSByZWZCbG9ja0xheW91dC5hY3Rp
dmVVbmlmb3JtSW5kaWNlc1tuZHhdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeX0gKi8gdmFyIHJlZkVudHJ5ID0gcmVmTGF5b3V0
LnVuaWZvcm1zW25keEl0ZXJdOworICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciBjbXBFbnRyeU5keCA9IGNtcExheW91dC5nZXRVbmlmb3JtSW5kZXgocmVmRW50cnkubmFtZSk7
CisKKyAgICAgICAgICAgIGlmIChjbXBFbnRyeU5keCA8IDApIHsKKyAgICAgICAgICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSAn
IiArIHJlZkVudHJ5Lm5hbWUgKyAiJyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICBpc09r
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50
cnl9ICovIHZhciBjbXBFbnRyeSA9IGNtcExheW91dC51bmlmb3Jtc1tjbXBFbnRyeU5keF07CisK
KyAgICAgICAgICAgIGlmIChyZWZFbnRyeS50eXBlICE9IGNtcEVudHJ5LnR5cGUgfHwKKyAgICAg
ICAgICAgICAgICByZWZFbnRyeS5zaXplICE9IGNtcEVudHJ5LnNpemUgfHwKKyAgICAgICAgICAg
ICAgICByZWZFbnRyeS5pc1Jvd01ham9yICE9IGNtcEVudHJ5LmlzUm93TWFqb3IpIHsKKyAgICAg
ICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IExheW91dCBtaXNtYXRjaCBp
biAnIiArIHJlZkVudHJ5Lm5hbWUgKyAiJzpcbiIgKworICAgICAgICAgICAgICAgICcgZXhwZWN0
ZWQ6IHR5cGUgPSAnICsgZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU5hbWUocmVmRW50cnkudHlw
ZSkgKyAnLCBzaXplID0gJyArIHJlZkVudHJ5LnNpemUgKyAnLCByb3cgbWFqb3IgPSAnICsgKHJl
ZkVudHJ5LmlzUm93TWFqb3IgPyAndHJ1ZScgOiAnZmFsc2UnKSArICdcbicgKworICAgICAgICAg
ICAgICAgICcgZ290OiB0eXBlID0gJyArIGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVOYW1lKGNt
cEVudHJ5LnR5cGUpICsgJywgc2l6ZSA9ICcgKyBjbXBFbnRyeS5zaXplICsgJywgcm93IG1ham9y
ID0gJyArIChjbXBFbnRyeS5pc1Jvd01ham9yID8gJ3RydWUnIDogJ2ZhbHNlJykpOworICAgICAg
ICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBpc09rOworfTsKKworLyoqIGNvbXBhcmVUeXBlcworKiBAcGFyYW0ge2ds
c1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dH0gcmVmTGF5b3V0CisqIEBwYXJhbSB7Z2xz
VW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0fSBjbXBMYXlvdXQKKyogQHJldHVybiB7Ym9v
bGVhbn0gdHJ1ZSBpZiB1bmlmb3JtIHR5cGVzIGFyZSB0aGUgc2FtZQorKiovCitnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmNvbXBhcmVUeXBlcyA9IGZ1bmN0
aW9uKHJlZkxheW91dCwgY21wTGF5b3V0KSB7CisgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB2
YXIgaXNPayA9IHRydWU7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBudW1CbG9ja3Mg
PSB0aGlzLm1faW50ZXJmYWNlLmdldE51bVVuaWZvcm1CbG9ja3MoKTsKKworICAgIGZvciAodmFy
IGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBudW1CbG9ja3M7IGJsb2NrTmR4KyspIHsKKyAgICAg
ICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja30gKi8gdmFyIGJs
b2NrID0gdGhpcy5tX2ludGVyZmFjZS5nZXRVbmlmb3JtQmxvY2soYmxvY2tOZHgpOworICAgICAg
ICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpc0FycmF5ID0gYmxvY2suaXNBcnJheSgpOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUluc3RhbmNlcyA9IGlzQXJyYXkg
PyBibG9jay5nZXRBcnJheVNpemUoKSA6IDE7CisKKyAgICAgICAgZm9yICh2YXIgaW5zdGFuY2VO
ZHggPSAwOyBpbnN0YW5jZU5keCA8IG51bUluc3RhbmNlczsgaW5zdGFuY2VOZHgrKykgeworICAg
ICAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovIHZhciBpbnN0YW5jZU5hbWU7CisKKyAgICAg
ICAgICAgIGluc3RhbmNlTmFtZSArPSBibG9jay5nZXRCbG9ja05hbWUoKTsKKyAgICAgICAgICAg
IGlmIChpc0FycmF5KQorICAgICAgICAgICAgICAgIGluc3RhbmNlTmFtZSA9IGluc3RhbmNlTmFt
ZSArICdbJyArIGluc3RhbmNlTmR4ICsgJ10nOworCisgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdmFyIGNtcEJsb2NrTmR4ID0gY21wTGF5b3V0LmdldEJsb2NrSW5kZXgoaW5zdGFu
Y2VOYW1lKTsKKworICAgICAgICAgICAgaWYgKGNtcEJsb2NrTmR4IDwgMCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tD
YXNlLkJsb2NrTGF5b3V0RW50cnl9ICovIHZhciBjbXBCbG9ja0xheW91dCA9IGNtcExheW91dC5i
bG9ja3NbY21wQmxvY2tOZHhdOworCisgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHgg
PCBjbXBCbG9ja0xheW91dC5hY3RpdmVVbmlmb3JtSW5kaWNlcy5sZW5ndGg7IG5keCsrKSB7Cisg
ICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBuZHhJdGVyID0gY21wQmxv
Y2tMYXlvdXQuYWN0aXZlVW5pZm9ybUluZGljZXNbbmR4XTsKKyAgICAgICAgICAgICAgICAvKiog
QHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybUxheW91dEVudHJ5fSAqLyB2YXIgY21w
RW50cnkgPSBjbXBMYXlvdXQudW5pZm9ybXNbbmR4SXRlcl07CisgICAgICAgICAgICAgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovIHZhciByZWZFbnRyeU5keCA9IHJlZkxheW91dC5nZXRVbmlmb3Jt
SW5kZXgoY21wRW50cnkubmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVmRW50cnlOZHgg
PCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJFcnJvcjog
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtICciICsgY21wRW50cnkubmFtZSArICInIG5vdCBm
b3VuZCBpbiByZWZlcmVuY2UgbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgICAgIGlzT2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1M
YXlvdXRFbnRyeX0gKi8gdmFyIHJlZkVudHJ5ID0gcmVmTGF5b3V0LnVuaWZvcm1zW3JlZkVudHJ5
TmR4XTsKKworICAgICAgICAgICAgICAgIC8vIFx0b2RvIFsyMDEyLTExLTI2IHB5cnldIFNob3Vs
ZCB3ZSBjaGVjayBvdGhlciBwcm9wZXJ0aWVzIGFzIHdlbGw/CisgICAgICAgICAgICAgICAgaWYg
KHJlZkVudHJ5LnR5cGUgIT0gY21wRW50cnkudHlwZSkgeworICAgICAgICAgICAgICAgICAgICBi
dWZmZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSB0
eXBlIG1pc21hdGNoIGluICciICsgcmVmRW50cnkubmFtZSArICInOjwvYnI+IiArCisgICAgICAg
ICAgICAgICAgICAgICAgICAiJyBleHBlY3RlZDogJyIgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFU
eXBlTmFtZShyZWZFbnRyeS50eXBlKSArICInPC9icj4iICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICInIGdvdDogJyIgKyBnbHVTaGFkZXJVdGlsLmdldERhdGFUeXBlTmFtZShjbXBFbnRyeS50
eXBlKSArICInIik7CisgICAgICAgICAgICAgICAgICAgIGlzT2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
aXNPazsKK307CisKKy8qKiBjaGVja0xheW91dEluZGljZXMKKyogQHBhcmFtIHtnbHNVbmlmb3Jt
QmxvY2tDYXNlLlVuaWZvcm1MYXlvdXR9IGxheW91dCBMYXlvdXQgd2hvc2UgaW5kaWNlcyBhcmUg
dG8gYmUgY2hlY2tlZAorKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFsbCBpcyBvaworKiov
CitnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmNoZWNrTGF5
b3V0SW5kaWNlcyA9IGZ1bmN0aW9uKGxheW91dCkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbnVtVW5pZm9ybXMgPSBsYXlvdXQudW5pZm9ybXMubGVuZ3RoOworICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgbnVtQmxvY2tzID0gbGF5b3V0LmJsb2Nrcy5sZW5ndGg7CisgICAg
LyoqIEB0eXBlIHtib29sZWFufSAqLyB2YXIgaXNPayA9IHRydWU7CisKKyAgICAvLyBDaGVjayB1
bmlmb3JtIGJsb2NrIGluZGljZXMuCisgICAgZm9yICh2YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZv
cm1OZHggPCBudW1Vbmlmb3JtczsgdW5pZm9ybU5keCsrKSB7CisgICAgICAgIC8qKiBAdHlwZSB7
Z2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0RW50cnl9ICovIHZhciB1bmlmb3JtID0g
bGF5b3V0LnVuaWZvcm1zW3VuaWZvcm1OZHhdOworCisgICAgICAgIGlmICh1bmlmb3JtLmJsb2Nr
TmR4IDwgMCB8fCAhZGVNYXRoLmRlSW5Cb3VuZHMzMih1bmlmb3JtLmJsb2NrTmR4LCAwLCBudW1C
bG9ja3MpKSB7CisgICAgICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IEludmFs
aWQgYmxvY2sgaW5kZXggaW4gdW5pZm9ybSAnIiArIHVuaWZvcm0ubmFtZSArICInIik7CisgICAg
ICAgICAgICBpc09rID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayBh
Y3RpdmUgdW5pZm9ybXMuCisgICAgZm9yICh2YXIgYmxvY2tOZHggPSAwOyBibG9ja05keCA8IG51
bUJsb2NrczsgYmxvY2tOZHgrKykgeworICAgICAgICAvKiogQHR5cGUge2dsc1VuaWZvcm1CbG9j
a0Nhc2UuQmxvY2tMYXlvdXRFbnRyeX0gKi8gdmFyIGJsb2NrID0gbGF5b3V0LmJsb2Nrc1tibG9j
a05keF07CisKKyAgICAgICAgZm9yICh2YXIgdW5pZm9ybU5keCA9IDA7IHVuaWZvcm1OZHggPCBi
bG9jay5hY3RpdmVVbmlmb3JtSW5kaWNlcy5sZW5ndGg7IHVuaWZvcm1OZHgrKykgeworICAgICAg
ICAgICAgLyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeX0g
Ki8gdmFyIGFjdGl2ZVVuaWZvcm1OZHggPSBibG9jay5hY3RpdmVVbmlmb3JtSW5kaWNlc1t1bmlm
b3JtTmR4XTsKKyAgICAgICAgICAgIGlmICghZGVNYXRoLmRlSW5Cb3VuZHMzMihhY3RpdmVVbmlm
b3JtTmR4LCAwLCBudW1Vbmlmb3JtcykpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJlZExvZ1Rv
Q29uc29sZSgnRXJyb3I6IEludmFsaWQgYWN0aXZlIHVuaWZvcm0gaW5kZXggJyArIGFjdGl2ZVVu
aWZvcm1OZHggKyAiIGluIGJsb2NrICciICsgYmxvY2submFtZSk7CisgICAgICAgICAgICAgICAg
aXNPayA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBpc09rOworfTsKKworLyoqIGNoZWNrTGF5b3V0Qm91bmRzCisqIEBwYXJhbSB7Z2xzVW5pZm9y
bUJsb2NrQ2FzZS5Vbmlmb3JtTGF5b3V0fSBsYXlvdXQgVGhlIHVuaWZvcm0gbGF5b3V0IHRvIGNo
ZWNrCisqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYWxsIGlzIHdpdGhpbiBib3VuZHMKKyoq
LworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3JtQmxvY2tDYXNlLnByb3RvdHlwZS5jaGVja0xh
eW91dEJvdW5kcyA9IGZ1bmN0aW9uKGxheW91dCkgeworICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB2YXIgbnVtVW5pZm9ybXMgPSBsYXlvdXQudW5pZm9ybXMubGVuZ3RoOworICAgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0qLyB2YXIgaXNPayA9IHRydWU7CisKKyAgICBmb3IgKHZhciB1bmlmb3JtTmR4
ID0gMDsgdW5pZm9ybU5keCA8IG51bVVuaWZvcm1zOyB1bmlmb3JtTmR4KyspIHsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHNVbmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXRFbnRyeX0qLyB2YXIg
dW5pZm9ybSA9IGxheW91dC51bmlmb3Jtc1t1bmlmb3JtTmR4XTsKKworICAgICAgICBpZiAodW5p
Zm9ybS5ibG9ja05keCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiog
QHR5cGUge2dsc1VuaWZvcm1CbG9ja0Nhc2UuQmxvY2tMYXlvdXRFbnRyeX0qLyB2YXIgYmxvY2sg
PSBsYXlvdXQuYmxvY2tzW3VuaWZvcm0uYmxvY2tOZHhdOworICAgICAgICAvKiogQHR5cGUge2Jv
b2xlYW59Ki8gdmFyIGlzTWF0cml4ID0gZ2x1U2hhZGVyVXRpbC5pc0RhdGFUeXBlTWF0cml4KHVu
aWZvcm0udHlwZSk7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciBudW1WZWNzID0g
aXNNYXRyaXggPyAodW5pZm9ybS5pc1Jvd01ham9yID8gZ2x1U2hhZGVyVXRpbC5nZXREYXRhVHlw
ZU1hdHJpeE51bVJvd3ModW5pZm9ybS50eXBlKSA6IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVN
YXRyaXhOdW1Db2x1bW5zKHVuaWZvcm0udHlwZSkpIDogMTsKKyAgICAgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9Ki8gdmFyIG51bUNvbXBzID0gaXNNYXRyaXggPyAodW5pZm9ybS5pc1Jvd01ham9yID8g
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnModW5pZm9ybS50eXBlKSA6
IGdsdVNoYWRlclV0aWwuZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKHVuaWZvcm0udHlwZSkpIDog
Z2x1U2hhZGVyVXRpbC5nZXREYXRhVHlwZVNjYWxhclNpemUodW5pZm9ybS50eXBlKTsKKyAgICAg
ICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIG51bUVsZW1lbnRzID0gdW5pZm9ybS5zaXplOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgY29tcFNpemUgPSBkZU1hdGguSU5UMzJf
U0laRTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHZlY1NpemUgPSBudW1Db21w
cyAqIGNvbXBTaXplOworCisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciBtaW5PZmZz
ZXQgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0qLyB2YXIgbWF4T2Zmc2V0ID0gMDsK
KworICAgICAgICAvLyBGb3IgbmVnYXRpdmUgc3RyaWRlcy4KKyAgICAgICAgbWluT2Zmc2V0ID0g
TWF0aC5taW4obWluT2Zmc2V0LCAobnVtVmVjcyAtIDEpICogdW5pZm9ybS5tYXRyaXhTdHJpZGUp
OworICAgICAgICBtaW5PZmZzZXQgPSBNYXRoLm1pbihtaW5PZmZzZXQsIChudW1FbGVtZW50cyAt
IDEpICogdW5pZm9ybS5hcnJheVN0cmlkZSk7CisgICAgICAgIG1pbk9mZnNldCA9IE1hdGgubWlu
KG1pbk9mZnNldCwgKG51bUVsZW1lbnRzIC0gMSkgKiB1bmlmb3JtLmFycmF5U3RyaWRlICsgKG51
bVZlY3MgLSAxKSAqIHVuaWZvcm0ubWF0cml4U3RyaWRlKTsKKworICAgICAgICBtYXhPZmZzZXQg
PSBNYXRoLm1heChtYXhPZmZzZXQsIHZlY1NpemUpOworICAgICAgICBtYXhPZmZzZXQgPSBNYXRo
Lm1heChtYXhPZmZzZXQsIChudW1WZWNzIC0gMSkgKiB1bmlmb3JtLm1hdHJpeFN0cmlkZSArIHZl
Y1NpemUpOworICAgICAgICBtYXhPZmZzZXQgPSBNYXRoLm1heChtYXhPZmZzZXQsIChudW1FbGVt
ZW50cyAtIDEpICogdW5pZm9ybS5hcnJheVN0cmlkZSArIHZlY1NpemUpOworICAgICAgICBtYXhP
ZmZzZXQgPSBNYXRoLm1heChtYXhPZmZzZXQsIChudW1FbGVtZW50cyAtIDEpICogdW5pZm9ybS5h
cnJheVN0cmlkZSArIChudW1WZWNzIC0gMSkgKiB1bmlmb3JtLm1hdHJpeFN0cmlkZSArIHZlY1Np
emUpOworCisgICAgICAgIGlmICh1bmlmb3JtLm9mZnNldCArIG1pbk9mZnNldCA8IDAgfHwgdW5p
Zm9ybS5vZmZzZXQgKyBtYXhPZmZzZXQgPiBibG9jay5zaXplKSB7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZSgiRXJyb3I6IGdsc1VuaWZvcm1CbG9ja0Nhc2UuVW5pZm9ybSAnIiAr
IHVuaWZvcm0ubmFtZSArICInIG91dCBvZiBibG9jayBib3VuZHMiKTsKKyAgICAgICAgICAgIGlz
T2sgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpc09rOworfTsKKwor
LyoqIGNoZWNrSW5kZXhRdWVyaWVzCisqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtIFRo
ZSBzaGFkZXIgcHJvZ3JhbSB0byBiZSBjaGVja2VkIGFnYWluc3QKKyogQHBhcmFtIHtnbHNVbmlm
b3JtQmxvY2tDYXNlLlVuaWZvcm1MYXlvdXR9IGxheW91dCBUaGUgbGF5b3V0IHRvIGNoZWNrCisq
IEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgZXZlcnl0aGluZyBtYXRjaGVzLgorKiovCitnbHNV
bmlmb3JtQmxvY2tDYXNlLlVuaWZvcm1CbG9ja0Nhc2UucHJvdG90eXBlLmNoZWNrSW5kZXhRdWVy
aWVzID0gZnVuY3Rpb24ocHJvZ3JhbSwgbGF5b3V0KSB7CisgICAgLyoqIEB0eXBlIHtib29sZWFu
fSovIHZhciBhbGxPayA9IHRydWU7CisKKyAgICAvLyBcbm90ZSBTcGVjIG1hbmRhdGVzIHRoYXQg
dW5pZm9ybSBibG9ja3MgYXJlIGFzc2lnbmVkIGNvbnNlY3V0aXZlIGxvY2F0aW9ucyBmcm9tIDAK
KyAgICAvLyAgICAgICB0byBBQ1RJVkVfVU5JRk9STV9CTE9DS1MuIEJsb2NrTGF5b3V0RW50cmll
cyBhcmUgc3RvcmVkIGluIHRoYXQgb3JkZXIgaW4gZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlmb3Jt
TGF5b3V0LgorICAgIGZvciAodmFyIGJsb2NrTmR4ID0gMDsgYmxvY2tOZHggPCBsYXlvdXQuYmxv
Y2tzLmxlbmd0aDsgYmxvY2tOZHgrKykgeworICAgICAgICAvKiogQGNvbnN0ICovIHZhciBibG9j
ayA9IGxheW91dC5ibG9ja3NbYmxvY2tOZHhdOworICAgICAgICAvKiogQGNvbnN0ICovIHZhciBx
dWVyaWVkTmR4ID0gZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgYmxvY2submFtZSk7
CisKKyAgICAgICAgaWYgKHF1ZXJpZWROZHggIT0gYmxvY2tOZHgpIHsKKyAgICAgICAgICAgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKCdFUlJPUjogZ2xHZXRVbmlmb3JtQmxvY2tJbmRleCgnICsgYmxv
Y2submFtZSArICcpIHJldHVybmVkICcgKyBxdWVyaWVkTmR4ICsgJywgZXhwZWN0ZWQgJyArIGJs
b2NrTmR4ICsgJyEnKTsKKyAgICAgICAgICAgIGFsbE9rID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gYWxsT2s7Cit9OworCisvKiogQGNvbnN0IEB0eXBlIHtudW1iZXJ9
ICovIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVklFV1BPUlRfV0lEVEggPSAxMjg7CisvKiogQGNvbnN0
IEB0eXBlIHtudW1iZXJ9ICovIGdsc1VuaWZvcm1CbG9ja0Nhc2UuVklFV1BPUlRfSEVJR0hUID0g
MTI4OworCisvKiogUmVuZGVycyBhIHdoaXRlIHNxdWFyZSwgYW5kIHRoZW4gdGVzdHMgYWxsIHBp
eGVscyBhcmUKKyogZWZmZWN0aXZlbHkgd2hpdGUgaW4gdGhlIGNvbG9yIGJ1ZmZlci4KKyogQHBh
cmFtIHtnbHVTaGFkZXJQcm9ncmFtLlNoYWRlclByb2dyYW19IHByb2dyYW0gVGhlIHNoYWRlciBw
cm9ncmFtIHRvIHVzZS4KKyogQHJldHVybiB7Ym9vbGVhbn0gZmFsc2UgaWYgdGhlcmUgd2FzIGF0
IGxlYXN0IG9uZSBpbmNvcnJlY3QgcGl4ZWwKKyoqLworZ2xzVW5pZm9ybUJsb2NrQ2FzZS5Vbmlm
b3JtQmxvY2tDYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihwcm9ncmFtKSB7CisgICAg
Ly8gQ29tcHV0ZSB2aWV3cG9ydC4KKyAgICAvKiogQHR5cGUge2RlUmFuZG9tLlJhbmRvbX0gKi8g
dmFyIHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oZGVTdHJpbmcuZGVTdHJpbmdIYXNoKHRoaXMu
bmFtZSkpOworICAgIC8qKiBAY29uc3QgKi8gdmFyIHZpZXdwb3J0VyA9IE1hdGgubWluKGdsLmNh
bnZhcy53aWR0aCwgZ2xzVW5pZm9ybUJsb2NrQ2FzZS5WSUVXUE9SVF9XSURUSCk7CisgICAgLyoq
IEBjb25zdCAqLyB2YXIgdmlld3BvcnRIID0gTWF0aC5taW4oZ2wuY2FudmFzLmhlaWdodCwgZ2xz
VW5pZm9ybUJsb2NrQ2FzZS5WSUVXUE9SVF9IRUlHSFQpOworICAgIC8qKiBAY29uc3QgKi8gdmFy
IHZpZXdwb3J0WCA9IHJuZC5nZXRJbnQoMCwgZ2wuY2FudmFzLndpZHRoKTsKKyAgICAvKiogQGNv
bnN0ICovIHZhciB2aWV3cG9ydFkgPSBybmQuZ2V0SW50KDAsIGdsLmNhbnZhcy5oZWlnaHQpOwor
CisgICAgZ2wuY2xlYXJDb2xvcigwLjEyNSwgMC4yNSwgMC41LCAxLjApOworICAgIGdsLmNsZWFy
KGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUIHwgZ2wuU1RFTkNJTF9C
VUZGRVJfQklUKTsKKworICAgIC8vRHJhdworICAgIHZhciBwb3NpdGlvbiA9IFsKKyAgICAgICAg
LTEuMCwgLTEuMCwgMC4wLCAxLjAsCisgICAgICAgIC0xLjAsIDEuMCwgMC4wLCAxLjAsCisgICAg
ICAgIDEuMCwgLTEuMCwgMC4wLCAxLjAsCisgICAgICAgIDEuMCwgMS4wLCAwLjAsIDEuMAorICAg
ICAgICBdOworICAgIHZhciBpbmRpY2VzID0gWzAsIDEsIDIsIDIsIDEsIDNdOworCisgICAgZ2wu
dmlld3BvcnQodmlld3BvcnRYLCB2aWV3cG9ydFksIHZpZXdwb3J0Vywgdmlld3BvcnRIKTsKKwor
ICAgIC8vIEFjY2VzcworICAgIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLmdldFByb2dyYW0oKSwgJ2FfcG9zaXRpb24nKTsKKyAgICB2YXIgcG9zQXJyYXkgPSBbbmV3
IGdsdURyYXdVdGlsLlZlcnRleEFycmF5QmluZGluZyhnbC5GTE9BVCwgcG9zTG9jLCA0LCA0LCBw
b3NpdGlvbildOworICAgIGdsdURyYXdVdGlsLmRyYXcoZ2wsIHByb2dyYW0uZ2V0UHJvZ3JhbSgp
LCBwb3NBcnJheSwgZ2x1RHJhd1V0aWwudHJpYW5nbGVzKGluZGljZXMpKTsKKworICAgIC8vIFZl
cmlmeSB0aGF0IGFsbCBwaXhlbHMgYXJlIHdoaXRlLgorICAgIHZhciBwaXhlbHMgPSBuZXcgZ2x1
RHJhd1V0aWwuU3VyZmFjZSgpOworICAgIHZhciBudW1GYWlsZWRQaXhlbHMgPSAwOworCisgICAg
dmFyIHJlYWRQaXhlbHNYID0gKHZpZXdwb3J0WCArIHZpZXdwb3J0VykgPiBnbC5jYW52YXMud2lk
dGgKKyAgICAgICAgPyAoZ2wuY2FudmFzLndpZHRoIC0gdmlld3BvcnRYKSA6IHZpZXdwb3J0VzsK
KyAgICB2YXIgcmVhZFBpeGVsc1kgPSAodmlld3BvcnRZICsgdmlld3BvcnRIKSA+IGdsLmNhbnZh
cy5oZWlnaHQKKyAgICAgICAgPyAoZ2wuY2FudmFzLmhlaWdodCAtIHZpZXdwb3J0WSkgOiB2aWV3
cG9ydEg7CisKKyAgICB2YXIgYnVmZmVyID0gcGl4ZWxzLnJlYWRTdXJmYWNlKGdsLCB2aWV3cG9y
dFgsIHZpZXdwb3J0WSwgcmVhZFBpeGVsc1gsIHJlYWRQaXhlbHNZKTsKKworICAgIHZhciB3aGl0
ZVBpeGVsID0gbmV3IGdsdURyYXdVdGlsLlBpeGVsKFsyNTUuMCwgMjU1LjAsIDI1NS4wLCAyNTUu
MF0pOworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcmVhZFBpeGVsc1k7IHkrKykgeworICAgICAg
ICBmb3IgKHZhciB4ID0gMDsgeCA8IHJlYWRQaXhlbHNYOyB4KyspIHsKKyAgICAgICAgICAgIGlm
ICghcGl4ZWxzLmdldFBpeGVsKHgsIHkpLmVxdWFscyh3aGl0ZVBpeGVsKSkKKyAgICAgICAgICAg
ICAgICBudW1GYWlsZWRQaXhlbHMgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChu
dW1GYWlsZWRQaXhlbHMgPiAwKSB7CisgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdJbWFn
ZSBjb21wYXJpc29uIGZhaWxlZCwgZ290ICcgKyBudW1GYWlsZWRQaXhlbHMgKyAnIG5vbi13aGl0
ZSBwaXhlbHMuJyk7CisgICAgfQorCisgICAgcmV0dXJuIG51bUZhaWxlZFBpeGVscyA9PSAwOwor
fTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL21vZHVsZXMvc2hhcmVkL2dsc1ZlcnRleEFycmF5VGVzdHMuanMgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL21vZHVsZXMv
c2hhcmVkL2dsc1ZlcnRleEFycmF5VGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlkYzc5ZjM1ZTg4MjJm
MGJiZmU0NDFjMWJlMThmZTNjYTNlZmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvbW9kdWxlcy9zaGFyZWQvZ2xz
VmVydGV4QXJyYXlUZXN0cy5qcwpAQCAtMCwwICsxLDI1MzQgQEAKKy8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBPcGVuR0wgRVMgVXRpbGl0aWVzCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAq
LworCisndXNlIHN0cmljdCc7Citnb29nLnByb3ZpZGUoJ21vZHVsZXMuc2hhcmVkLmdsc1ZlcnRl
eEFycmF5VGVzdHMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLmNvbW1vbi50Y3VGbG9hdCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUltYWdlQ29tcGFyZScpOworZ29v
Zy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdUxvZ0ltYWdlJyk7Citnb29nLnJlcXVpcmUo
J2ZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLmNvbW1vbi50Y3VSR0JBJyk7Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5jb21tb24udGN1
U3VyZmFjZScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsuY29tbW9uLnRjdVRlc3RDYXNlJyk7
Citnb29nLnJlcXVpcmUoJ2ZyYW1ld29yay5kZWxpYnMuZGViYXNlLmRlTWF0aCcpOworZ29vZy5y
ZXF1aXJlKCdmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZVJhbmRvbScpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWwnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3
b3JrLm9wZW5nbC5zaW1wbGVyZWZlcmVuY2Uuc2dsckdMQ29udGV4dCcpOworZ29vZy5yZXF1aXJl
KCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyUmVmZXJlbmNlQ29udGV4dCcp
OworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xyU2hh
ZGVyUHJvZ3JhbScpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVmZXJlbmNlcmVuZGVyZXIu
cnJGcmFnbWVudE9wZXJhdGlvbnMnKTsKK2dvb2cucmVxdWlyZSgnZnJhbWV3b3JrLnJlZmVyZW5j
ZXJlbmRlcmVyLnJyR2VuZXJpY1ZlY3RvcicpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdvcmsucmVm
ZXJlbmNlcmVuZGVyZXIucnJTaGFkaW5nQ29udGV4dCcpOworZ29vZy5yZXF1aXJlKCdmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJWZXJ0ZXhBdHRyaWInKTsKK2dvb2cucmVxdWlyZSgnZnJh
bWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVydGV4UGFja2V0Jyk7CisKK2dvb2cuc2NvcGUo
ZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgZ2xzVmVydGV4QXJyYXlUZXN0cyA9IG1vZHVsZXMuc2hh
cmVkLmdsc1ZlcnRleEFycmF5VGVzdHM7CisgICAgdmFyIHRjdVRlc3RDYXNlID0gZnJhbWV3b3Jr
LmNvbW1vbi50Y3VUZXN0Q2FzZTsKKyAgICB2YXIgdGN1UkdCQSA9IGZyYW1ld29yay5jb21tb24u
dGN1UkdCQTsKKyAgICB2YXIgdGN1RmxvYXQgPSBmcmFtZXdvcmsuY29tbW9uLnRjdUZsb2F0Owor
ICAgIHZhciB0Y3VQaXhlbEZvcm1hdCA9IGZyYW1ld29yay5jb21tb24udGN1UGl4ZWxGb3JtYXQ7
CisgICAgdmFyIHRjdVN1cmZhY2UgPSBmcmFtZXdvcmsuY29tbW9uLnRjdVN1cmZhY2U7CisgICAg
dmFyIHRjdUltYWdlQ29tcGFyZSA9IGZyYW1ld29yay5jb21tb24udGN1SW1hZ2VDb21wYXJlOwor
ICAgIHZhciB0Y3VMb2dJbWFnZSA9IGZyYW1ld29yay5jb21tb24udGN1TG9nSW1hZ2U7CisgICAg
dmFyIGdsdVNoYWRlclV0aWwgPSBmcmFtZXdvcmsub3BlbmdsLmdsdVNoYWRlclV0aWw7CisgICAg
dmFyIHNnbHJHTENvbnRleHQgPSBmcmFtZXdvcmsub3BlbmdsLnNpbXBsZXJlZmVyZW5jZS5zZ2xy
R0xDb250ZXh0OworICAgIHZhciBzZ2xyUmVmZXJlbmNlQ29udGV4dCA9IGZyYW1ld29yay5vcGVu
Z2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJSZWZlcmVuY2VDb250ZXh0OworICAgIHZhciBzZ2xyU2hh
ZGVyUHJvZ3JhbSA9IGZyYW1ld29yay5vcGVuZ2wuc2ltcGxlcmVmZXJlbmNlLnNnbHJTaGFkZXJQ
cm9ncmFtOworICAgIHZhciBkZU1hdGggPSBmcmFtZXdvcmsuZGVsaWJzLmRlYmFzZS5kZU1hdGg7
CisgICAgdmFyIGRlUmFuZG9tID0gZnJhbWV3b3JrLmRlbGlicy5kZWJhc2UuZGVSYW5kb207Cisg
ICAgdmFyIHJyRnJhZ21lbnRPcGVyYXRpb25zID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVy
LnJyRnJhZ21lbnRPcGVyYXRpb25zOworICAgIHZhciByckdlbmVyaWNWZWN0b3IgPSBmcmFtZXdv
cmsucmVmZXJlbmNlcmVuZGVyZXIucnJHZW5lcmljVmVjdG9yOworICAgIHZhciByclNoYWRpbmdD
b250ZXh0ID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyU2hhZGluZ0NvbnRleHQ7Cisg
ICAgdmFyIHJyVmVydGV4QXR0cmliID0gZnJhbWV3b3JrLnJlZmVyZW5jZXJlbmRlcmVyLnJyVmVy
dGV4QXR0cmliOworICAgIHZhciByclZlcnRleFBhY2tldCA9IGZyYW1ld29yay5yZWZlcmVuY2Vy
ZW5kZXJlci5yclZlcnRleFBhY2tldDsKKworICAgIHZhciBERV9BU1NFUlQgPSBmdW5jdGlvbih4
KSB7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0
IGZhaWxlZCcpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAaW50ZXJmYWNlCisgICAgICov
CisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5ID0gZnVuY3Rpb24oKSB7fTsKKworICAg
IC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5UYXJnZXQgZW51bQorICAg
ICAqIEBlbnVtCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdl
dCA9IHsKKyAgICAgICAgRUxFTUVOVF9BUlJBWTogMCwKKyAgICAgICAgQVJSQVk6IDEKKyAgICB9
OworCisgICAgLyoqCisgICAgICogZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZSBlbnVtCisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlID0geworICAgICAgICBGTE9BVDogMCwKKyAgICAgICAgLypGSVhFRDog
MSwKKyAgICAgICAgRE9VQkxFOiAyLCovCisKKyAgICAgICAgQllURTogMSwKKyAgICAgICAgU0hP
UlQ6IDIsCisKKyAgICAgICAgVU5TSUdORURfQllURTogMywKKyAgICAgICAgVU5TSUdORURfU0hP
UlQ6IDQsCisKKyAgICAgICAgSU5UOiA1LAorICAgICAgICBVTlNJR05FRF9JTlQ6IDYsCisgICAg
ICAgIEhBTEY6IDcsCisgICAgICAgIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwOiA4LAorICAgICAg
ICBJTlRfMl8xMF8xMF8xMDogOQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZSBlbnVtCisgICAgICogQGVudW0KKyAgICAgKi8K
KyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZSA9IHsKKyAgICAgICAg
RkxPQVQ6IDAsCisgICAgICAgIFZFQzI6IDEsCisgICAgICAgIFZFQzM6IDIsCisgICAgICAgIFZF
QzQ6IDMsCisKKyAgICAgICAgSU5UOiA0LAorICAgICAgICBVSU5UOiA1LAorCisgICAgICAgIElW
RUMyOiA2LAorICAgICAgICBJVkVDMzogNywKKyAgICAgICAgSVZFQzQ6IDgsCisKKyAgICAgICAg
VVZFQzI6IDksCisgICAgICAgIFVWRUMzOiAxMCwKKyAgICAgICAgVVZFQzQ6IDExCisgICAgfTsK
KworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZSBlbnVt
CisgICAgICogQGVudW0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
VXNhZ2UgPSB7CisgICAgICAgIERZTkFNSUNfRFJBVzogMCwKKyAgICAgICAgU1RBVElDX0RSQVc6
IDEsCisgICAgICAgIFNUUkVBTV9EUkFXOiAyLAorCisgICAgICAgIFNUUkVBTV9SRUFEOiAzLAor
ICAgICAgICBTVFJFQU1fQ09QWTogNCwKKworICAgICAgICBTVEFUSUNfUkVBRDogNSwKKyAgICAg
ICAgU1RBVElDX0NPUFk6IDYsCisKKyAgICAgICAgRFlOQU1JQ19SRUFEOiA3LAorICAgICAgICBE
WU5BTUlDX0NPUFk6IDgKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LlN0b3JhZ2UgZW51bQorICAgICAqIEBlbnVtCisgICAgICovCisgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UgPSB7CisgICAgICAgIFVTRVI6IDAsCisg
ICAgICAgIEJVRkZFUjogMQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZlIGVudW0KKyAgICAgKiBAZW51bQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUgPSB7CisgICAgICAgIFBPSU5U
UzogMCwKKyAgICAgICAgVFJJQU5HTEVTOiAxLAorICAgICAgICBUUklBTkdMRV9GQU46IDIsCisg
ICAgICAgIFRSSUFOR0xFX1NUUklQOiAzCisgICAgfTsKKworICAgIC8vZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5IHN0YXRpYyBmdW5jdGlvbnMKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdldH0gdGFyZ2V0CisgICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS50YXJn
ZXRUb1N0cmluZyA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgICBERV9BU1NFUlQodGFyZ2V0
IDwgT2JqZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdldCkubGVuZ3Ro
KTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovIHZhciB0YXJnZXRzID0K
KyAgICAgICAgWworICAgICAgICAgICAgJ2VsZW1lbnRfYXJyYXknLCAvLyBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuVGFyZ2V0LkVMRU1FTlRfQVJSQVkKKyAgICAgICAgICAgICdhcnJheScg
Ly8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdldC5BUlJBWQorICAgICAgICBdOwor
ICAgICAgICBERV9BU1NFUlQodGFyZ2V0cy5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdldCkubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdGFy
Z2V0c1t0YXJnZXRdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtzdHJp
bmd9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LmlucHV0VHlwZVRv
U3RyaW5nID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICBERV9BU1NFUlQodHlwZSA8IE9iamVj
dC5rZXlzKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUpLmxlbmd0aCk7CisK
KyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdHlwZXMgPQorICAgICAg
ICBbCisgICAgICAgICAgICAnZmxvYXQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
SW5wdXRUeXBlLkZMT0FUCisKKyAgICAgICAgICAgICdieXRlJywgLy8gZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LklucHV0VHlwZS5CWVRFCisgICAgICAgICAgICAnc2hvcnQnLCAvLyBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JUCisKKyAgICAgICAgICAgICd1
bnNpZ25lZF9ieXRlJywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5V
TlNJR05FRF9CWVRFCisgICAgICAgICAgICAndW5zaWduZWRfc2hvcnQnLCAvLyBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JUCisKKyAgICAgICAgICAg
ICdpbnQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVAorICAg
ICAgICAgICAgJ3Vuc2lnbmVkX2ludCcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5J
bnB1dFR5cGUuVU5TSUdORURfSU5UCisgICAgICAgICAgICAnaGFsZicsIC8vIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSEFMRgorICAgICAgICAgICAgJ3Vuc2lnbmVkX2lu
dDJfMTBfMTBfMTAnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwCisgICAgICAgICAgICAnaW50Ml8xMF8xMF8xMCcgLy8gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMAorICAgICAg
ICBdOworICAgICAgICBERV9BU1NFUlQodHlwZXMubGVuZ3RoID09IE9iamVjdC5rZXlzKGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUpLmxlbmd0aCk7CisKKyAgICAgICAgcmV0
dXJuIHR5cGVzW3R5cGVdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5vdXRwdXRU
eXBlVG9TdHJpbmcgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIERFX0FTU0VSVCh0eXBlIDwg
T2JqZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUpLmxlbmd0
aCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdHlwZXMgPQor
ICAgICAgICBbCisgICAgICAgICAgICAnZmxvYXQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZS5GTE9BVAorICAgICAgICAgICAgJ3ZlYzInLCAvLyBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMyCisgICAgICAgICAgICAndmVjMycsIC8v
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzMKKyAgICAgICAgICAg
ICd2ZWM0JywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDNAor
CisgICAgICAgICAgICAnaW50JywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1
dFR5cGUuSU5UCisgICAgICAgICAgICAndWludCcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5PdXRwdXRUeXBlLlVJTlQKKworICAgICAgICAgICAgJ2l2ZWMyJywgLy8gZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzIKKyAgICAgICAgICAgICdpdmVjMycs
IC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUMzCisgICAgICAg
ICAgICAnaXZlYzQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5J
VkVDNAorCisgICAgICAgICAgICAndXZlYzInLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuT3V0cHV0VHlwZS5VVkVDMgorICAgICAgICAgICAgJ3V2ZWMzJywgLy8gZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzMKKyAgICAgICAgICAgICd1dmVjNCcgLy8g
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQKKyAgICAgICAgXTsK
KyAgICAgICAgREVfQVNTRVJUKHR5cGVzLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZSkubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4g
dHlwZXNbdHlwZV07CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlfSB1c2FnZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkudXNhZ2VUeXBlVG9TdHJp
bmcgPSBmdW5jdGlvbih1c2FnZSkgeworICAgICAgICBERV9BU1NFUlQodXNhZ2UgPCBPYmplY3Qu
a2V5cyhnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVXNhZ2UpLmxlbmd0aCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdXNhZ2VzID0KKyAgICAgICAgWwor
ICAgICAgICAgICAgJ2R5bmFtaWNfZHJhdycsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5Vc2FnZS5EWU5BTUlDX0RSQVcKKyAgICAgICAgICAgICdzdGF0aWNfZHJhdycsIC8vIGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZS5TVEFUSUNfRFJBVworICAgICAgICAgICAgJ3N0
cmVhbV9kcmF3JywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLlNUUkVBTV9E
UkFXCisKKyAgICAgICAgICAgICdzdHJlYW1fcmVhZCcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5Vc2FnZS5TVFJFQU1fUkVBRAorICAgICAgICAgICAgJ3N0cmVhbV9jb3B5JywgLy8g
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLlNUUkVBTV9DT1BZCisKKyAgICAgICAg
ICAgICdzdGF0aWNfcmVhZCcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZS5T
VEFUSUNfUkVBRAorICAgICAgICAgICAgJ3N0YXRpY19jb3B5JywgLy8gZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LlVzYWdlLlNUQVRJQ19DT1BZCisKKyAgICAgICAgICAgICdkeW5hbWljX3Jl
YWQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVXNhZ2UuRFlOQU1JQ19SRUFECisg
ICAgICAgICAgICAnZHluYW1pY19jb3B5JyAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
VXNhZ2UuRFlOQU1JQ19DT1BZCisgICAgICAgIF07CisgICAgICAgIERFX0FTU0VSVCh1c2FnZXMu
bGVuZ3RoID09IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZSku
bGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdXNhZ2VzW3VzYWdlXTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZX0g
c3RvcmFnZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuc3RvcmFnZVRvU3RyaW5nID0gZnVuY3Rpb24oc3RvcmFnZSkgewor
ICAgICAgICBERV9BU1NFUlQoc3RvcmFnZSA8IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5TdG9yYWdlKS5sZW5ndGgpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8
c3RyaW5nPn0gKi8gdmFyIHN0b3JhZ2VzID0KKyAgICAgICAgWworICAgICAgICAgICAgJ3VzZXJf
cHRyJywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UuVVNFUgorICAgICAg
ICAgICAgJ2J1ZmZlcicgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UuQlVG
RkVSCisgICAgICAgIF07CisgICAgICAgIERFX0FTU0VSVChzdG9yYWdlcy5sZW5ndGggPT0gT2Jq
ZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UpLmxlbmd0aCk7CisK
KyAgICAgICAgcmV0dXJuIHN0b3JhZ2VzW3N0b3JhZ2VdOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmV9IHByaW1p
dGl2ZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkucHJpbWl0aXZlVG9TdHJpbmcgPSBmdW5jdGlvbihwcmltaXRpdmUpIHsK
KyAgICAgICAgREVfQVNTRVJUKHByaW1pdGl2ZSA8IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5QcmltaXRpdmUpLmxlbmd0aCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtB
cnJheTxzdHJpbmc+fSAqLyB2YXIgcHJpbWl0aXZlcyA9CisgICAgICAgIFsKKyAgICAgICAgICAg
ICdwb2ludHMnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZlLlBPSU5U
UworICAgICAgICAgICAgJ3RyaWFuZ2xlcycsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5QcmltaXRpdmUuVFJJQU5HTEVTCisgICAgICAgICAgICAndHJpYW5nbGVfZmFuJywgLy8gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5UUklBTkdMRV9GQU4KKyAgICAgICAg
ICAgICd0cmlhbmdsZV9zdHJpcCcgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1p
dGl2ZS5UUklBTkdMRV9TVFJJUAorICAgICAgICBdOworICAgICAgICBERV9BU1NFUlQocHJpbWl0
aXZlcy5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlBy
aW1pdGl2ZSkubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gcHJpbWl0aXZlc1twcmltaXRpdmVd
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LmlucHV0VHlwZVNpemUgPSBmdW5jdGlv
bih0eXBlKSB7CisgICAgICAgIERFX0FTU0VSVCh0eXBlIDwgT2JqZWN0LmtleXMoZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZSkubGVuZ3RoKTsKKworICAgICAgICAvKiogQHR5
cGUge0FycmF5PG51bWJlcj59ICovIHZhciBzaXplID0gWworICAgICAgICAgICAgNCwgLy8gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GTE9BVAorCisgICAgICAgICAgICAx
LCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkJZVEUKKyAgICAgICAg
ICAgIDIsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuU0hPUlQKKwor
ICAgICAgICAgICAgMSwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5V
TlNJR05FRF9CWVRFCisgICAgICAgICAgICAyLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuSW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JUCisKKyAgICAgICAgICAgIDQsIC8vIGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSU5UCisgICAgICAgICAgICA0LCAvLyBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVAorICAgICAgICAg
ICAgMiwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5IQUxGCisgICAg
ICAgICAgICA0IC8gNCwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5V
TlNJR05FRF9JTlRfMl8xMF8xMF8xMAorICAgICAgICAgICAgNCAvIDQgLy8gZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5JTlRfMl8xMF8xMF8xMAorICAgICAgICBdOworICAg
ICAgICBERV9BU1NFUlQoc2l6ZS5sZW5ndGggPT0gT2JqZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5LklucHV0VHlwZSkubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gc2l6ZVt0
eXBlXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmlucHV0VHlwZUlzRmxvYXRUeXBlID0gZnVu
Y3Rpb24odHlwZSkgeworICAgICAgICBpZiAodHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlLkZMT0FUKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IC8qaWYgKHR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GSVhF
RCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAodHlwZSA9PSBnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkRPVUJMRSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOyovCisgICAgICAgIGlmICh0eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5JbnB1dFR5cGUuSEFMRikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMub3V0cHV0VHlwZUlzRmxvYXRUeXBl
ID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICBpZiAodHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5GTE9BVCB8fAorICAgICAgICAgICAgdHlwZSA9PSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMyIHx8CisgICAgICAgICAgICB0
eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzMgfHwKKyAg
ICAgICAgICAgIHR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUu
VkVDNCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9OworCisgICAgLy9nbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkgbWVtYmVyIGZ1bmN0
aW9ucyAoYWxsIHZpcnR1YWwsIHNpbmNlIHRoaXMgaXMgYW4gaW50ZXJmYWNlKQorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFyZ2V0fSB0YXJn
ZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWludDhBcnJh
eX0gZGF0YQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdl
fSB1c2FnZQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5wcm90b3R5
cGUuZGF0YSA9IGZ1bmN0aW9uKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpIHt9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFyZ2V0fSB0
YXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHNpemUKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGEKKyAgICAgKi8KKyAgICBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkucHJvdG90eXBlLnN1YmRhdGEgPSBmdW5jdGlvbih0
YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSkge307CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gYXR0cmliTmR4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzaXplCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3Rz
LmRlQXJyYXkuSW5wdXRUeXBlfSBpblR5cGUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlfSBvdXRUeXBlCisgICAgICogQHBhcmFtIHtib29sZWFu
fSBub3JtYWxpemVkCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGF0
dHJpYk5keCwgb2Zmc2V0LCBzaXplLCBpblR5cGUsIG91dFR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlk
ZSkge307CisKKyAgICAvKioKKyAgICAgKiB1bkJpbmQKKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkucHJvdG90eXBlLnVuQmluZCA9IGZ1bmN0aW9uKCkge307CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5wcm90b3R5cGUuaXNCb3VuZCA9IGZ1bmN0aW9uKCkge307CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LnByb3RvdHlwZS5nZXRDb21wb25lbnRDb3VudCA9IGZ1bmN0aW9uKCkg
e307CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuVGFyZ2V0fQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5wcm90
b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9CisgICAgICovCisgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LnByb3RvdHlwZS5nZXRJbnB1dFR5cGUgPSBmdW5j
dGlvbigpIHt9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5Lk91dHB1dFR5cGV9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LnByb3RvdHlwZS5nZXRPdXRwdXRUeXBlID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5TdG9yYWdlfQor
ICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5wcm90b3R5cGUuZ2V0U3Rv
cmFnZVR5cGUgPSBmdW5jdGlvbigpIHt9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkucHJvdG90eXBl
LmdldE5vcm1hbGl6ZWQgPSBmdW5jdGlvbigpIHt9OworCisgICAgLyoqCisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5wcm90
b3R5cGUuZ2V0U3RyaWRlID0gZnVuY3Rpb24oKSB7fTsKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkucHJv
dG90eXBlLmdldEF0dHJpYk5keCA9IGZ1bmN0aW9uKCkge307CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gYXR0cmliTmR4CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LnByb3RvdHlwZS5zZXRBdHRyaWJOZHggPSBmdW5jdGlvbihhdHRyaWJOZHgpIHt9
OworCisgICAgLy9nbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheSBjbGFzcywgaW1wbGVt
ZW50cyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkgaW50ZXJmYWNlCisKKyAgICAvKioKKyAg
ICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAaW1wbGVtZW50cyB7Z2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5fQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0
b3JhZ2V9IHN0b3JhZ2UKKyAgICAgKiBAcGFyYW0ge3NnbHJHTENvbnRleHQuR0xDb250ZXh0IHwg
c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0gY29udGV4dAorICAgICAqLwor
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5ID0gZnVuY3Rpb24oc3RvcmFnZSwg
Y29udGV4dCkgeworICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5TdG9yYWdlfSAqLyB0aGlzLm1fc3RvcmFnZSA9IHN0b3JhZ2U7CisgICAgICAgIC8qKiBAdHlw
ZSB7c2dsckdMQ29udGV4dC5HTENvbnRleHQgfCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVu
Y2VDb250ZXh0fSAqLyB0aGlzLm1fY3R4ID0gY29udGV4dDsKKyAgICAgICAgLyoqIEB0eXBlIHtX
ZWJHTEJ1ZmZlcnxzZ2xyUmVmZXJlbmNlQ29udGV4dC5EYXRhQnVmZmVyfG51bGx9ICovIHRoaXMu
bV9nbEJ1ZmZlciA9IG51bGw7CisKKyAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlz
Lm1fYm91bmQgPSBmYWxzZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9h
dHRyaWJOZHggPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX3NpemUg
PSAwOworICAgICAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHRoaXMubV9kYXRhID0gbnVs
bDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9jb21wb25lbnRDb3VudCA9
IDE7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdl
dH0gKi8gdGhpcy5tX3RhcmdldCA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5UYXJnZXQu
QVJSQVk7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZX0gKi8gdGhpcy5tX2lucHV0VHlwZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5JbnB1dFR5cGUuRkxPQVQ7CisgICAgICAgIC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5Lk91dHB1dFR5cGV9ICovIHRoaXMubV9vdXRwdXRUeXBlID0gZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuRkxPQVQ7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdGhpcy5tX25vcm1hbGl6ZSA9IGZhbHNlOworICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5tX3N0cmlkZSA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLm1fb2Zmc2V0ID0gMDsKKworICAgICAgICBpZiAodGhpcy5tX3N0b3JhZ2UgPT0gZ2xz
VmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlN0b3JhZ2UuQlVGRkVSKSB7CisgICAgICAgICAgICB0
aGlzLm1fZ2xCdWZmZXIgPSB0aGlzLm1fY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5IG1lbWJlciBm
dW5jdGlvbnMKKworICAgIC8qKgorICAgICAqIHVuQmluZAorICAgICAqLworICAgIGdsc1ZlcnRl
eEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByb3RvdHlwZS51bkJpbmQgPSBmdW5jdGlvbigpIHsg
dGhpcy5tX2JvdW5kID0gZmFsc2U7IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByb3Rv
dHlwZS5pc0JvdW5kID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLm1fYm91bmQ7IH07CisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5Db250ZXh0QXJyYXkucHJvdG90eXBlLmdldENvbXBvbmVudENvdW50ID0gZnVuY3Rp
b24oKSB7IHJldHVybiB0aGlzLm1fY29tcG9uZW50Q291bnQ7IH07CisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFyZ2V0fQorICAgICAqLwor
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByb3RvdHlwZS5nZXRUYXJnZXQg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV90YXJnZXQ7IH07CisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlfQorICAgICAq
LworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByb3RvdHlwZS5nZXRJbnB1
dFR5cGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9pbnB1dFR5cGU7IH07CisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlw
ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS5wcm90b3R5
cGUuZ2V0T3V0cHV0VHlwZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX291dHB1dFR5cGU7
IH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuU3RvcmFnZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJh
eS5wcm90b3R5cGUuZ2V0U3RvcmFnZVR5cGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9z
dG9yYWdlOyB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS5wcm90b3R5cGUuZ2V0Tm9ybWFs
aXplZCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX25vcm1hbGl6ZTsgfTsKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkNvbnRleHRBcnJheS5wcm90b3R5cGUuZ2V0U3RyaWRlID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLm1fc3RyaWRlOyB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByb3RvdHlwZS5n
ZXRBdHRyaWJOZHggPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubV9hdHRyaWJOZHg7IH07CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYXR0cmliTmR4CisgICAgICovCisgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXkucHJvdG90eXBlLnNldEF0dHJpYk5keCA9
IGZ1bmN0aW9uKGF0dHJpYk5keCkgeyB0aGlzLm1fYXR0cmliTmR4ID0gYXR0cmliTmR4OyB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFy
Z2V0fSB0YXJnZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7
VWludDhBcnJheX0gcHRyCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuVXNhZ2V9IHVzYWdlCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0
QXJyYXkucHJvdG90eXBlLmRhdGEgPSBmdW5jdGlvbih0YXJnZXQsIHNpemUsIHB0ciwgdXNhZ2Up
IHsKKyAgICAgICAgdGhpcy5tX3NpemUgPSBzaXplOworICAgICAgICB0aGlzLm1fdGFyZ2V0ID0g
dGFyZ2V0OworCisgICAgICAgIGlmICh0aGlzLm1fc3RvcmFnZSA9PSBnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuU3RvcmFnZS5CVUZGRVIpIHsKKyAgICAgICAgICAgIHRoaXMubV9jdHguYmlu
ZEJ1ZmZlcihnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS50YXJnZXRUb0dMKHRhcmdl
dCksIHRoaXMubV9nbEJ1ZmZlcik7CisKKyAgICAgICAgICAgIC8vTm8gbmVlZCBmb3Igc2l6ZSBw
YXJhbSBoZXJlLCBhcyBvcHBvc2VkIHRvIEdMIEVTLgorICAgICAgICAgICAgdGhpcy5tX2N0eC5i
dWZmZXJEYXRhKGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnRhcmdldFRvR0wodGFy
Z2V0KSwgcHRyLCBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS51c2FnZVRvR0wodXNh
Z2UpKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fc3RvcmFnZSA9PSBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuU3RvcmFnZS5VU0VSKSB7CisgICAgICAgICAgICB0aGlzLm1fZGF0YSA9
IG5ldyBVaW50OEFycmF5KHNpemUpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
aXplOyBpKyspCisgICAgICAgICAgICAgICAgdGhpcy5tX2RhdGFbaV0gPSBwdHJbaV07CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbHNWZXJ0ZXhBcnJheVRl
c3RzLkNvbnRleHRBcnJheS5wcm90b3R5cGUuZGF0YSAtIEludmFsaWQgc3RvcmFnZSB0eXBlIHNw
ZWNpZmllZCcpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5UYXJnZXR9IHRhcmdldAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBv
ZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICAgICAqIEBwYXJhbSB7VWludDhB
cnJheX0gcHRyCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXku
cHJvdG90eXBlLnN1YmRhdGEgPSBmdW5jdGlvbih0YXJnZXQsIG9mZnNldCwgc2l6ZSwgcHRyKSB7
CisgICAgICAgIHRoaXMubV90YXJnZXQgPSB0YXJnZXQ7CisKKyAgICAgICAgaWYgKHRoaXMubV9z
dG9yYWdlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5TdG9yYWdlLkJVRkZFUikgewor
ICAgICAgICAgICAgdGhpcy5tX2N0eC5iaW5kQnVmZmVyKGdsc1ZlcnRleEFycmF5VGVzdHMuQ29u
dGV4dEFycmF5LnRhcmdldFRvR0wodGFyZ2V0KSwgdGhpcy5tX2dsQnVmZmVyKTsKKworICAgICAg
ICAgICAgdGhpcy5tX2N0eC5idWZmZXJTdWJEYXRhKGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4
dEFycmF5LnRhcmdldFRvR0wodGFyZ2V0KSwgb2Zmc2V0LCBwdHIpOworICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMubV9zdG9yYWdlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5TdG9yYWdl
LlVTRVIpCisgICAgICAgICAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBpIDwgc2l6ZTsgaSsrKQor
ICAgICAgICAgICAgICAgIHRoaXMubV9kYXRhW2ldID0gcHRyW2ldOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFy
cmF5LnByb3RvdHlwZS5zdWJkYXRhIC0gSW52YWxpZCBzdG9yYWdlIHR5cGUgc3BlY2lmaWVkJyk7
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdHRyaWJOZHgKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUK
KyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IGlu
VHlwZQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5
cGV9IG91dFR5cGUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vcm1hbGl6ZWQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gc3RyaWRlCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5D
b250ZXh0QXJyYXkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhdHRyaWJOZHgsIG9mZnNldCwg
c2l6ZSwgaW5UeXBlLCBvdXRUeXBlLCBub3JtYWxpemVkLCBzdHJpZGUpIHsKKyAgICAgICAgdGhp
cy5tX2F0dHJpYk5keCA9IGF0dHJpYk5keDsKKyAgICAgICAgdGhpcy5tX2JvdW5kID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5tX2NvbXBvbmVudENvdW50ID0gc2l6ZTsKKyAgICAgICAgdGhpcy5tX2lu
cHV0VHlwZSA9IGluVHlwZTsKKyAgICAgICAgdGhpcy5tX291dHB1dFR5cGUgPSBvdXRUeXBlOwor
ICAgICAgICB0aGlzLm1fbm9ybWFsaXplID0gbm9ybWFsaXplZDsKKyAgICAgICAgdGhpcy5tX3N0
cmlkZSA9IHN0cmlkZTsKKyAgICAgICAgdGhpcy5tX29mZnNldCA9IG9mZnNldDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFy
Z2V0fSB0YXJnZXQKKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJh
eS5wcm90b3R5cGUuYmluZEluZGV4QXJyYXkgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAg
aWYgKHRoaXMubV9zdG9yYWdlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5TdG9yYWdl
LlVTRVIpIHsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1fc3RvcmFnZSA9PSBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZS5CVUZGRVIpIHsKKyAgICAgICAgICAgIHRoaXMubV9j
dHguYmluZEJ1ZmZlcihnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS50YXJnZXRUb0dM
KHRhcmdldCksIHRoaXMubV9nbEJ1ZmZlcik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvYworICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuQ29udGV4dEFycmF5LnByb3RvdHlwZS5nbEJpbmQgPSBmdW5jdGlvbihsb2MpIHsKKyAg
ICAgICAgaWYgKHRoaXMubV9zdG9yYWdlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5T
dG9yYWdlLkJVRkZFUikgeworICAgICAgICAgICAgdGhpcy5tX2N0eC5iaW5kQnVmZmVyKGdsc1Zl
cnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnRhcmdldFRvR0wodGhpcy5tX3RhcmdldCksIHRo
aXMubV9nbEJ1ZmZlcik7CisKKyAgICAgICAgICAgIGlmICghZ2xzVmVydGV4QXJyYXlUZXN0cy5p
bnB1dFR5cGVJc0Zsb2F0VHlwZSh0aGlzLm1faW5wdXRUeXBlKSkgeworICAgICAgICAgICAgICAg
IC8vIElucHV0IGlzIG5vdCBmbG9hdCB0eXBlCisKKyAgICAgICAgICAgICAgICBpZiAoZ2xzVmVy
dGV4QXJyYXlUZXN0cy5vdXRwdXRUeXBlSXNGbG9hdFR5cGUodGhpcy5tX291dHB1dFR5cGUpKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0eXBlIGlzIGZsb2F0IHR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5tX2N0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGxvYywgdGhpcy5t
X2NvbXBvbmVudENvdW50LCBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS5pbnB1dFR5
cGVUb0dMKHRoaXMubV9pbnB1dFR5cGUpLCB0aGlzLm1fbm9ybWFsaXplLCB0aGlzLm1fc3RyaWRl
LCB0aGlzLm1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAvLyBPdXRwdXQgdHlwZSBpcyBpbnQgdHlwZQorICAgICAgICAgICAgICAgICAgICB0
aGlzLm1fY3R4LnZlcnRleEF0dHJpYklQb2ludGVyKGxvYywgdGhpcy5tX2NvbXBvbmVudENvdW50
LCBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS5pbnB1dFR5cGVUb0dMKHRoaXMubV9p
bnB1dFR5cGUpLCB0aGlzLm1fc3RyaWRlLCB0aGlzLm1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIElucHV0IHR5cGUg
aXMgZmxvYXQgdHlwZQorICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0eXBlIG11c3QgYmUgZmxv
YXQgdHlwZQorICAgICAgICAgICAgICAgIERFX0FTU0VSVCh0aGlzLm1fb3V0cHV0VHlwZSA9PSBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5GTE9BVCB8fCB0aGlzLm1fb3V0
cHV0VHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMyIHx8
IHRoaXMubV9vdXRwdXRUeXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRU
eXBlLlZFQzMgfHwgdGhpcy5tX291dHB1dFR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5Lk91dHB1dFR5cGUuVkVDNCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLm1fY3R4LnZlcnRl
eEF0dHJpYlBvaW50ZXIobG9jLCB0aGlzLm1fY29tcG9uZW50Q291bnQsIGdsc1ZlcnRleEFycmF5
VGVzdHMuQ29udGV4dEFycmF5LmlucHV0VHlwZVRvR0wodGhpcy5tX2lucHV0VHlwZSksIHRoaXMu
bV9ub3JtYWxpemUsIHRoaXMubV9zdHJpZGUsIHRoaXMubV9vZmZzZXQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0aGlzLm1fY3R4LmJpbmRCdWZmZXIoZ2xzVmVydGV4QXJyYXlUZXN0
cy5Db250ZXh0QXJyYXkudGFyZ2V0VG9HTCh0aGlzLm1fdGFyZ2V0KSwgbnVsbCk7CisgICAgICAg
IH0gZWxzZSBpZiAodGhpcy5tX3N0b3JhZ2UgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LlN0b3JhZ2UuVVNFUikgeworICAgICAgICAgICAgdGhpcy5tX2N0eC5iaW5kQnVmZmVyKGdsc1Zl
cnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnRhcmdldFRvR0wodGhpcy5tX3RhcmdldCksIG51
bGwpOworCisgICAgICAgICAgICBpZiAoIWdsc1ZlcnRleEFycmF5VGVzdHMuaW5wdXRUeXBlSXNG
bG9hdFR5cGUodGhpcy5tX2lucHV0VHlwZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBJbnB1dCBp
cyBub3QgZmxvYXQgdHlwZQorCisgICAgICAgICAgICAgICAgaWYgKGdsc1ZlcnRleEFycmF5VGVz
dHMub3V0cHV0VHlwZUlzRmxvYXRUeXBlKHRoaXMubV9vdXRwdXRUeXBlKSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBPdXRwdXQgdHlwZSBpcyBmbG9hdCB0eXBlCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMubV9jdHgudmVydGV4QXR0cmliUG9pbnRlcihsb2MsIHRoaXMubV9jb21wb25lbnRD
b3VudCwgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXkuaW5wdXRUeXBlVG9HTCh0aGlz
Lm1faW5wdXRUeXBlKSwgdGhpcy5tX25vcm1hbGl6ZSwgdGhpcy5tX3N0cmlkZSwgdGhpcy5tX2Rh
dGEuc3ViYXJyYXkodGhpcy5tX29mZnNldCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0eXBlIGlzIGludCB0eXBlCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMubV9jdHgudmVydGV4QXR0cmliSVBvaW50ZXIobG9jLCB0aGlzLm1fY29t
cG9uZW50Q291bnQsIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LmlucHV0VHlwZVRv
R0wodGhpcy5tX2lucHV0VHlwZSksIHRoaXMubV9zdHJpZGUsIHRoaXMubV9kYXRhLnN1YmFycmF5
KHRoaXMubV9vZmZzZXQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIElucHV0IHR5cGUgaXMgZmxvYXQgdHlwZQorCisgICAgICAg
ICAgICAgICAgLy8gT3V0cHV0IHR5cGUgbXVzdCBiZSBmbG9hdCB0eXBlCisgICAgICAgICAgICAg
ICAgREVfQVNTRVJUKHRoaXMubV9vdXRwdXRUeXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5PdXRwdXRUeXBlLkZMT0FUIHx8IHRoaXMubV9vdXRwdXRUeXBlID09IGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzIgfHwgdGhpcy5tX291dHB1dFR5cGUgPT0g
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDMyB8fCB0aGlzLm1fb3V0
cHV0VHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUM0KTsK
KworICAgICAgICAgICAgICAgIHRoaXMubV9jdHgudmVydGV4QXR0cmliUG9pbnRlcihsb2MsIHRo
aXMubV9jb21wb25lbnRDb3VudCwgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXkuaW5w
dXRUeXBlVG9HTCh0aGlzLm1faW5wdXRUeXBlKSwgdGhpcy5tX25vcm1hbGl6ZSwgdGhpcy5tX3N0
cmlkZSwgdGhpcy5tX2RhdGEuc3ViYXJyYXkodGhpcy5tX29mZnNldCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2xzVmVydGV4
QXJyYXlUZXN0cy5Db250ZXh0QXJyYXkucHJvdG90eXBlLmdsQmluZCAtIEludmFsaWQgc3RvcmFn
ZSB0eXBlIHNwZWNpZmllZCcpOworICAgIH07CisKKyAgICAvL2dsc1ZlcnRleEFycmF5VGVzdHMu
Q29udGV4dEFycmF5IHN0YXRpYyBmdW5jdGlvbnMKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlRhcmdldH0gdGFyZ2V0CisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5
LnRhcmdldFRvR0wgPSBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgREVfQVNTRVJUKHRhcmdl
dCA8IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5UYXJnZXQpLmxlbmd0
aCk7CisKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqLyB2YXIgdGFyZ2V0cyA9
CisgICAgICAgIFsKKyAgICAgICAgICAgIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAvLyBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFyZ2V0LkVMRU1FTlRfQVJSQVkKKyAgICAgICAgICAg
IGdsLkFSUkFZX0JVRkZFUiAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVGFyZ2V0LkFS
UkFZCisgICAgICAgIF07CisKKyAgICAgICAgcmV0dXJuIHRhcmdldHNbdGFyZ2V0XTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
VXNhZ2V9IHVzYWdlCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc1Zl
cnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnVzYWdlVG9HTCA9IGZ1bmN0aW9uKHVzYWdlKSB7
CisgICAgICAgIERFX0FTU0VSVCh1c2FnZSA8IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5Vc2FnZSkubGVuZ3RoKTsKKworICAgICAgICAvKiogQHR5cGUge0FycmF5PG51
bWJlcj59ICovIHZhciB1c2FnZXMgPQorICAgICAgICBbCisgICAgICAgICAgICBnbC5EWU5BTUlD
X0RSQVcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZS5EWU5BTUlDX0RSQVcK
KyAgICAgICAgICAgIGdsLlNUQVRJQ19EUkFXLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuVXNhZ2UuU1RBVElDX0RSQVcKKyAgICAgICAgICAgIGdsLlNUUkVBTV9EUkFXLCAvLyBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuVXNhZ2UuU1RSRUFNX0RSQVcKKworICAgICAgICAgICAg
Z2wuU1RSRUFNX1JFQUQsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZS5TVFJF
QU1fUkVBRAorICAgICAgICAgICAgZ2wuU1RSRUFNX0NPUFksIC8vIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5Vc2FnZS5TVFJFQU1fQ09QWQorCisgICAgICAgICAgICBnbC5TVEFUSUNfUkVB
RCwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLlNUQVRJQ19SRUFECisgICAg
ICAgICAgICBnbC5TVEFUSUNfQ09QWSwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVz
YWdlLlNUQVRJQ19DT1BZCisKKyAgICAgICAgICAgIGdsLkRZTkFNSUNfUkVBRCwgLy8gZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlLkRZTkFNSUNfUkVBRAorICAgICAgICAgICAgZ2wu
RFlOQU1JQ19DT1BZIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Vc2FnZS5EWU5BTUlD
X0NPUFkKKyAgICAgICAgXTsKKyAgICAgICAgREVfQVNTRVJUKHVzYWdlcy5sZW5ndGggPT0gT2Jq
ZWN0LmtleXMoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlVzYWdlKS5sZW5ndGgpOworCisg
ICAgICAgIHJldHVybiB1c2FnZXNbdXNhZ2VdOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250
ZXh0QXJyYXkuaW5wdXRUeXBlVG9HTCA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgREVfQVNT
RVJUKHR5cGUgPCBPYmplY3Qua2V5cyhnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRU
eXBlKS5sZW5ndGgpOworCisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi8gdmFy
IHR5cGVzID0KKyAgICAgICAgWworICAgICAgICAgICAgZ2wuRkxPQVQsIC8vIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQKKworICAgICAgICAgICAgZ2wuQllURSwg
Ly8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5CWVRFCisgICAgICAgICAg
ICBnbC5TSE9SVCwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5TSE9S
VAorICAgICAgICAgICAgZ2wuVU5TSUdORURfQllURSwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9CWVRFCisgICAgICAgICAgICBnbC5VTlNJR05FRF9T
SE9SVCwgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9T
SE9SVAorCisgICAgICAgICAgICBnbC5JTlQsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5JbnB1dFR5cGUuSU5UCisgICAgICAgICAgICBnbC5VTlNJR05FRF9JTlQsIC8vIGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UCisgICAgICAgICAgICBn
bC5IQUxGX0ZMT0FULCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkhB
TEYKKyAgICAgICAgICAgIGdsLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgLy8gZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMAor
ICAgICAgICAgICAgZ2wuSU5UXzJfMTBfMTBfMTBfUkVWIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTAKKyAgICAgICAgXTsKKyAgICAgICAgREVf
QVNTRVJUKHR5cGVzLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlKS5sZW5ndGgpOworCisgICAgICAgIHJldHVybiB0eXBlc1t0eXBlXTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
KyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheS5vdXRwdXRUeXBlVG9HTFR5cGUg
PSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIERFX0FTU0VSVCh0eXBlIDwgT2JqZWN0LmtleXMo
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUpLmxlbmd0aCk7CisKKyAgICAg
ICAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqLyB2YXIgdHlwZXMgPQorICAgICAgICBbCisg
ICAgICAgICAgICAnZmxvYXQnLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0
VHlwZS5GTE9BVAorICAgICAgICAgICAgJ3ZlYzInLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZS5WRUMyCisgICAgICAgICAgICAndmVjMycsIC8vIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzMKKyAgICAgICAgICAgICd2ZWM0JywgLy8g
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDNAorCisgICAgICAgICAg
ICAnaW50JywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSU5UCisg
ICAgICAgICAgICAndWludCcsIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRU
eXBlLlVJTlQKKworICAgICAgICAgICAgJ2l2ZWMyJywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5Lk91dHB1dFR5cGUuSVZFQzIKKyAgICAgICAgICAgICdpdmVjMycsIC8vIGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUMzCisgICAgICAgICAgICAnaXZlYzQn
LCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5JVkVDNAorCisgICAg
ICAgICAgICAndXZlYzInLCAvLyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlw
ZS5VVkVDMgorICAgICAgICAgICAgJ3V2ZWMzJywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5Lk91dHB1dFR5cGUuVVZFQzMKKyAgICAgICAgICAgICd1dmVjNCcgLy8gZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQKKyAgICAgICAgXTsKKyAgICAgICAgREVf
QVNTRVJUKHR5cGVzLmxlbmd0aCA9PSBPYmplY3Qua2V5cyhnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZSkubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdHlwZXNbdHlwZV07
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LlByaW1pdGl2ZX0gcHJpbWl0aXZlCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5LnByaW1pdGl2ZVRvR0wg
PSBmdW5jdGlvbihwcmltaXRpdmUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+
fSAqLyB2YXIgcHJpbWl0aXZlcyA9CisgICAgICAgIFsKKyAgICAgICAgICAgIGdsLlBPSU5UUywg
Ly8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5QT0lOVFMKKyAgICAgICAg
ICAgIGdsLlRSSUFOR0xFUywgLy8gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2
ZS5UUklBTkdMRVMKKyAgICAgICAgICAgIGdsLlRSSUFOR0xFX0ZBTiwgLy8gZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5UUklBTkdMRV9GQU4KKyAgICAgICAgICAgIGdsLlRS
SUFOR0xFX1NUUklQIC8vIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJ
QU5HTEVfU1RSSVAKKyAgICAgICAgXTsKKyAgICAgICAgREVfQVNTRVJUKHByaW1pdGl2ZXMubGVu
Z3RoID09IE9iamVjdC5rZXlzKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUp
Lmxlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZXNbcHJpbWl0aXZlXTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtzZ2xyR0xD
b250ZXh0LkdMQ29udGV4dCB8IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9
IGRyYXdDb250ZXh0CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJy
YXlQYWNrID0gZnVuY3Rpb24oZHJhd0NvbnRleHQpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlfSAqLyB0aGlzLm1fcmVuZGVyQ3R4ID0gZ2w7CisgICAgICAg
IC8vVE9ETzogUmVmZXJlbmNlIHJhc3Rlcml6ZXIgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8q
KiBAdHlwZSB7c2dsckdMQ29udGV4dC5HTENvbnRleHQgfCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5S
ZWZlcmVuY2VDb250ZXh0fSAqLyB0aGlzLm1fY3R4ID0gZHJhd0NvbnRleHQ7CisKKyAgICAgICAg
LyoqIEB0eXBlIHtBcnJheTxnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheT59ICovIHRo
aXMubV9hcnJheXMgPSBbXTsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5T
aGFkZXJQcm9ncmFtfSAqLyB0aGlzLm1fcHJvZ3JhbTsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VT
dXJmYWNlLlN1cmZhY2V9ICovIHRoaXMubV9zY3JlZW4gPSBuZXcgdGN1U3VyZmFjZS5TdXJmYWNl
KAorICAgICAgICAgICAgTWF0aC5taW4oNTEyLCBjYW52YXMud2lkdGgpLAorICAgICAgICAgICAg
TWF0aC5taW4oNTEyLCBjYW52YXMuaGVpZ2h0KQorICAgICAgICApOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlU
ZXN0cy5Db250ZXh0QXJyYXlQYWNrLnByb3RvdHlwZS5nZXRBcnJheUNvdW50ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fYXJyYXlzLmxlbmd0aDsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZX0g
c3RvcmFnZQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5UGFj
ay5wcm90b3R5cGUubmV3QXJyYXkgPSBmdW5jdGlvbihzdG9yYWdlKSB7CisgICAgICAgIHRoaXMu
bV9hcnJheXMucHVzaChuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXkoc3RvcmFn
ZSwgdGhpcy5tX2N0eCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaQorICAgICAqIEByZXR1cm4ge2dsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5fQor
ICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5UGFjay5wcm90b3R5
cGUuZ2V0QXJyYXkgPSBmdW5jdGlvbihpKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1fYXJyYXlz
W2ldOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiB1cGRhdGVQcm9ncmFtCisgICAgICovCisg
ICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXlQYWNrLnByb3RvdHlwZS51cGRhdGVQ
cm9ncmFtID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMubV9wcm9ncmFtID0gbmV3IGdsc1Zl
cnRleEFycmF5VGVzdHMuQ29udGV4dFNoYWRlclByb2dyYW0odGhpcy5tX3JlbmRlckN0eCwgdGhp
cy5tX2FycmF5cyk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZX0gcHJpbWl0aXZlCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGZpcnN0VmVydGV4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnRleENvdW50Cisg
ICAgICogQHBhcmFtIHtib29sZWFufSB1c2VWYW8KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29v
cmRTY2FsZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2xvclNjYWxlCisgICAgICovCisgICAg
Z2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXlQYWNrLnByb3RvdHlwZS5yZW5kZXIgPSBm
dW5jdGlvbihwcmltaXRpdmUsIGZpcnN0VmVydGV4LCB2ZXJ0ZXhDb3VudCwgdXNlVmFvLCBjb29y
ZFNjYWxlLCBjb2xvclNjYWxlKSB7CisgICAgICAgIHZhciBwcm9ncmFtOworICAgICAgICAvKiog
QHR5cGUgeyhXZWJHTFZlcnRleEFycmF5T2JqZWN0fHNnbHJSZWZlcmVuY2VDb250ZXh0LlZlcnRl
eEFycmF5fG51bGwpfSAqLyB2YXIgdmFvSUQgPSBudWxsOworCisgICAgICAgIHRoaXMudXBkYXRl
UHJvZ3JhbSgpOworCisgICAgICAgIHRoaXMubV9jdHgudmlld3BvcnQoMCwgMCwgdGhpcy5tX3Nj
cmVlbi5nZXRXaWR0aCgpLCB0aGlzLm1fc2NyZWVuLmdldEhlaWdodCgpKTsKKyAgICAgICAgdGhp
cy5tX2N0eC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIHRoaXMubV9j
dHguY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgcHJvZ3JhbSA9IHRoaXMu
bV9jdHguY3JlYXRlUHJvZ3JhbSh0aGlzLm1fcHJvZ3JhbSk7CisKKyAgICAgICAgdGhpcy5tX2N0
eC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIHRoaXMubV9jdHgudW5pZm9ybTFmKHRo
aXMubV9jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X2Nvb3JkU2NhbGUnKSwgY29v
cmRTY2FsZSk7CisgICAgICAgIHRoaXMubV9jdHgudW5pZm9ybTFmKHRoaXMubV9jdHguZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X2NvbG9yU2NhbGUnKSwgY29sb3JTY2FsZSk7CisKKyAg
ICAgICAgaWYgKHVzZVZhbykgeworICAgICAgICAgICAgdmFvSUQgPSB0aGlzLm1fY3R4LmNyZWF0
ZVZlcnRleEFycmF5KCk7CisgICAgICAgICAgICB0aGlzLm1fY3R4LmJpbmRWZXJ0ZXhBcnJheSh2
YW9JRCk7CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gdmFyIGF0
dHJpYk5hbWU7CisgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgbG9jOworICAgICAg
ICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgdGhpcy5tX2FycmF5cy5sZW5ndGg7
IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgIGlmICh0aGlzLm1fYXJyYXlzW2FycmF5TmR4XS5p
c0JvdW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhdHRyaWJOYW1lID0gJ2FfJyArIHRoaXMubV9h
cnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5keCgpOworICAgICAgICAgICAgICAgIGxvYyA9IHRo
aXMubV9jdHguZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmliTmFtZSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5tX2N0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2MpOworCisgICAg
ICAgICAgICAgICAgdGhpcy5tX2FycmF5c1thcnJheU5keF0uZ2xCaW5kKGxvYyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBERV9BU1NFUlQoKGZpcnN0VmVydGV4ICUgNikg
PT0gMCk7CisgICAgICAgIC8vdGhpcy5tX2N0eC5kcmF3QXJyYXlzKGdsc1ZlcnRleEFycmF5VGVz
dHMuQ29udGV4dEFycmF5LnByaW1pdGl2ZVRvR0wocHJpbWl0aXZlKSwgZmlyc3RWZXJ0ZXgsIHZl
cnRleENvdW50IC0gZmlyc3RWZXJ0ZXgpOworICAgICAgICB0aGlzLm1fY3R4LmRyYXdRdWFkcyhn
bC5UUklBTkdMRVMsIGZpcnN0VmVydGV4LCB2ZXJ0ZXhDb3VudCAtIGZpcnN0VmVydGV4KTsKKwor
ICAgICAgICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgdGhpcy5tX2FycmF5cy5s
ZW5ndGg7IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgIGlmICh0aGlzLm1fYXJyYXlzW2FycmF5
TmR4XS5pc0JvdW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhdHRyaWJOYW1lID0gJ2FfJyArIHRo
aXMubV9hcnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5keCgpOworICAgICAgICAgICAgICAgIGxv
YyA9IHRoaXMubV9jdHguZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmliTmFtZSk7CisK
KyAgICAgICAgICAgICAgICB0aGlzLm1fY3R4LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2Mp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHVzZVZhbykKKyAgICAg
ICAgICAgIHZhb0lEID0gdGhpcy5tX2N0eC5kZWxldGVWZXJ0ZXhBcnJheSh2YW9JRCk7CisKKyAg
ICAgICAgdGhpcy5tX2N0eC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgICAgICB0aGlzLm1f
Y3R4LnVzZVByb2dyYW0obnVsbCk7CisgICAgICAgIHRoaXMubV9jdHgucmVhZFBpeGVscygwLCAw
LCB0aGlzLm1fc2NyZWVuLmdldFdpZHRoKCksIHRoaXMubV9zY3JlZW4uZ2V0SGVpZ2h0KCksIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHRoaXMubV9zY3JlZW4uZ2V0QWNjZXNzKCkuZ2V0RGF0
YVB0cigpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHJldHVybiB7dGN1U3VyZmFjZS5T
dXJmYWNlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5UGFj
ay5wcm90b3R5cGUuZ2V0U3VyZmFjZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5tX3NjcmVl
bjsgfTsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dFNoYWRl
clByb2dyYW0gY2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7c2ds
clNoYWRlclByb2dyYW0uU2hhZGVyUHJvZ3JhbX0KKyAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UgfCBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0fSBj
dHgKKyAgICAgKiBAcGFyYW0ge0FycmF5PGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dEFycmF5
Pn0gYXJyYXlzCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0U2hhZGVy
UHJvZ3JhbSA9IGZ1bmN0aW9uKGN0eCwgYXJyYXlzKSB7CisgICAgICAgIHNnbHJTaGFkZXJQcm9n
cmFtLlNoYWRlclByb2dyYW0uY2FsbCh0aGlzLCB0aGlzLmNyZWF0ZVByb2dyYW1EZWNsYXJhdGlv
bihjdHgsIGFycmF5cykpOworICAgICAgICB0aGlzLm1fY29tcG9uZW50Q291bnQgPSBuZXcgQXJy
YXkoYXJyYXlzLmxlbmd0aCk7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8cnJHZW5lcmljVmVj
dG9yLkdlbmVyaWNWZWNUeXBlPn0gKi8gdGhpcy5tX2F0dHJUeXBlID0gbmV3IEFycmF5KGFycmF5
cy5sZW5ndGgpOworCisgICAgICAgIGZvciAodmFyIGFycmF5TmR4ID0gMDsgYXJyYXlOZHggPCBh
cnJheXMubGVuZ3RoOyBhcnJheU5keCsrKSB7CisgICAgICAgICAgICB0aGlzLm1fY29tcG9uZW50
Q291bnRbYXJyYXlOZHhdID0gdGhpcy5nZXRDb21wb25lbnRDb3VudChhcnJheXNbYXJyYXlOZHhd
LmdldE91dHB1dFR5cGUoKSk7CisgICAgICAgICAgICB0aGlzLm1fYXR0clR5cGVbYXJyYXlOZHhd
ID0gdGhpcy5tYXBPdXRwdXRUeXBlKGFycmF5c1thcnJheU5keF0uZ2V0T3V0cHV0VHlwZSgpKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRTaGFk
ZXJQcm9ncmFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc2dsclNoYWRlclByb2dyYW0uU2hh
ZGVyUHJvZ3JhbS5wcm90b3R5cGUpOworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dFNo
YWRlclByb2dyYW0ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5D
b250ZXh0U2hhZGVyUHJvZ3JhbTsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVz
dHMuY2FsY1NoYWRlckNvbG9yQ29vcmQgZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0ge0FycmF5PG51
bWJlcj59IGNvb3JkICgyIGVsZW1lbnRzKQorICAgICAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0g
Y29sb3IgKDMgZWxlbWVudHMpCisgICAgICogQHBhcmFtIHtnb29nLk51bWJlckFycmF5fSBhdHRy
aWJWYWx1ZSAoNCBlbGVtZW50cykKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQ29vcmRpbmF0
ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1Db21wb25lbnRzCisgICAgICovCisgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5jYWxjU2hhZGVyQ29sb3JDb29yZCA9IGZ1bmN0aW9uKGNvb3JkLCBj
b2xvciwgYXR0cmliVmFsdWUsIGlzQ29vcmRpbmF0ZSwgbnVtQ29tcG9uZW50cykgeworICAgICAg
ICBpZiAoaXNDb29yZGluYXRlKQorICAgICAgICAgICAgc3dpdGNoIChudW1Db21wb25lbnRzKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBjb29yZFswXSA9
IGF0dHJpYlZhbHVlWzBdOworICAgICAgICAgICAgICAgICAgICBjb29yZFsxXSA9IGF0dHJpYlZh
bHVlWzBdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICAgICAgICAgIGNvb3JkWzBdID0gYXR0cmliVmFsdWVbMF07CisgICAg
ICAgICAgICAgICAgICAgIGNvb3JkWzFdID0gYXR0cmliVmFsdWVbMV07CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAg
ICAgY29vcmRbMF0gPSBhdHRyaWJWYWx1ZVswXSArIGF0dHJpYlZhbHVlWzJdOworICAgICAgICAg
ICAgICAgICAgICBjb29yZFsxXSA9IGF0dHJpYlZhbHVlWzFdOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGNv
b3JkWzBdID0gYXR0cmliVmFsdWVbMF0gKyBhdHRyaWJWYWx1ZVsyXTsKKyAgICAgICAgICAgICAg
ICAgICAgY29vcmRbMV0gPSBhdHRyaWJWYWx1ZVsxXSArIGF0dHJpYlZhbHVlWzNdOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1ZlcnRleEFycmF5VGVzdHMuY2FsY1NoYWRl
ckNvbG9yQ29vcmQgLSBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzJyk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChudW1Db21wb25lbnRzKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBjb2xvclswXSA9IGNvbG9yWzBd
ICogYXR0cmliVmFsdWVbMF07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgY29sb3JbMF0gPSBjb2xvclswXSAq
IGF0dHJpYlZhbHVlWzBdOworICAgICAgICAgICAgICAgICAgICBjb2xvclsxXSA9IGNvbG9yWzFd
ICogYXR0cmliVmFsdWVbMV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgY29sb3JbMF0gPSBjb2xvclswXSAq
IGF0dHJpYlZhbHVlWzBdOworICAgICAgICAgICAgICAgICAgICBjb2xvclsxXSA9IGNvbG9yWzFd
ICogYXR0cmliVmFsdWVbMV07CisgICAgICAgICAgICAgICAgICAgIGNvbG9yWzJdID0gY29sb3Jb
Ml0gKiBhdHRyaWJWYWx1ZVsyXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBjb2xvclswXSA9IGNvbG9yWzBd
ICogYXR0cmliVmFsdWVbMF0gKiBhdHRyaWJWYWx1ZVszXTsKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3JbMV0gPSBjb2xvclsxXSAqIGF0dHJpYlZhbHVlWzFdICogYXR0cmliVmFsdWVbM107Cisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yWzJdID0gY29sb3JbMl0gKiBhdHRyaWJWYWx1ZVsyXSAq
IGF0dHJpYlZhbHVlWzNdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1Zl
cnRleEFycmF5VGVzdHMuY2FsY1NoYWRlckNvbG9yQ29vcmQgLSBJbnZhbGlkIG51bWJlciBvZiBj
b21wb25lbnRzJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoq
CisgICAgICogZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0U2hhZGVyUHJvZ3JhbS5zaGFkZVZl
cnRpY2VzCisgICAgICogQHBhcmFtIHtBcnJheTxyclZlcnRleEF0dHJpYi5WZXJ0ZXhBdHRyaWI+
fSBpbnB1dHMKKyAgICAgKiBAcGFyYW0ge0FycmF5PHJyVmVydGV4UGFja2V0LlZlcnRleFBhY2tl
dD59IHBhY2tldHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtUGFja2V0cworICAgICAqLwor
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuQ29udGV4dFNoYWRlclByb2dyYW0ucHJvdG90eXBlLnNo
YWRlVmVydGljZXMgPSBmdW5jdGlvbihpbnB1dHMsIHBhY2tldHMsIG51bVBhY2tldHMpIHsKKyAg
ICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB1X2Nvb3JkU2NhbGUgPSB0aGlzLmdldFVu
aWZvcm1CeU5hbWUoJ3VfY29vcmRTY2FsZScpLnZhbHVlWzBdOworICAgICAgICAvKiogQHR5cGUg
e251bWJlcn0gKi8gdmFyIHVfY29sb3JTY2FsZSA9IHRoaXMuZ2V0VW5pZm9ybUJ5TmFtZSgndV9j
b2xvclNjYWxlJykudmFsdWVbMF07CisKKyAgICAgICAgZm9yICh2YXIgcGFja2V0TmR4ID0gMDsg
cGFja2V0TmR4IDwgbnVtUGFja2V0czsgKytwYWNrZXROZHgpIHsKKyAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdmFyeWluZ0xvY0NvbG9yID0gMDsKKworICAgICAgICAgICAg
LyoqIEB0eXBlIHtyclZlcnRleFBhY2tldC5WZXJ0ZXhQYWNrZXR9ICovIHZhciBwYWNrZXQgPSBw
YWNrZXRzW3BhY2tldE5keF07CisKKyAgICAgICAgICAgIC8vIENhbGMgb3V0cHV0IGNvbG9yCisg
ICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb29yZCA9IFsxLjAs
IDEuMF07CisgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovIHZhciBjb2xv
ciA9IFsxLjAsIDEuMCwgMS4wXTsKKworICAgICAgICAgICAgZm9yICh2YXIgYXR0cmliTmR4ID0g
MDsgYXR0cmliTmR4IDwgdGhpcy5tX2F0dHJUeXBlLmxlbmd0aDsgYXR0cmliTmR4KyspIHsKKyAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIG51bUNvbXBvbmVudHMgPSB0
aGlzLm1fY29tcG9uZW50Q291bnRbYXR0cmliTmR4XTsKKworICAgICAgICAgICAgICAgIGdsc1Zl
cnRleEFycmF5VGVzdHMuY2FsY1NoYWRlckNvbG9yQ29vcmQoY29vcmQsIGNvbG9yLCByclZlcnRl
eEF0dHJpYi5yZWFkVmVydGV4QXR0cmliKGlucHV0c1thdHRyaWJOZHhdLCBwYWNrZXQuaW5zdGFu
Y2VOZHgsIHBhY2tldC52ZXJ0ZXhOZHgsIHRoaXMubV9hdHRyVHlwZVthdHRyaWJOZHhdKSwgYXR0
cmliTmR4ID09IDAsIG51bUNvbXBvbmVudHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUcmFuc2Zvcm0gcG9zaXRpb24KKyAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IFt1
X2Nvb3JkU2NhbGUgKiBjb29yZFswXSwgdV9jb29yZFNjYWxlICogY29vcmRbMV0sIDEuMCwgMS4w
XTsKKworICAgICAgICAgICAgLy8gUGFzcyBjb2xvciB0byBGUworICAgICAgICAgICAgcGFja2V0
Lm91dHB1dHNbdmFyeWluZ0xvY0NvbG9yXSA9IFt1X2NvbG9yU2NhbGUgKiBjb2xvclswXSwgdV9j
b2xvclNjYWxlICogY29sb3JbMV0sIHVfY29sb3JTY2FsZSAqIGNvbG9yWzJdLCAxLjBdOworICAg
ICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXk8cnJGcmFnbWVu
dE9wZXJhdGlvbnMuRnJhZ21lbnQ+fSBwYWNrZXRzCisgICAgICogQHBhcmFtIHtyclNoYWRpbmdD
b250ZXh0LkZyYWdtZW50U2hhZGluZ0NvbnRleHR9IGNvbnRleHQKKyAgICAgKi8KKyAgICBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRTaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5zaGFkZUZyYWdt
ZW50cyA9IGZ1bmN0aW9uKHBhY2tldHMsIGNvbnRleHQpIHsKKyAgICAgICAgdmFyIHZhcnlpbmdM
b2NDb2xvciA9IDA7CisKKyAgICAgICAgLy8gTm9ybWFsIHNoYWRpbmcKKyAgICAgICAgZm9yICh2
YXIgcGFja2V0TmR4ID0gMDsgcGFja2V0TmR4IDwgcGFja2V0cy5sZW5ndGg7ICsrcGFja2V0TmR4
KQorICAgICAgICAgICAgcGFja2V0c1twYWNrZXROZHhdLnZhbHVlID0gcnJTaGFkaW5nQ29udGV4
dC5yZWFkVHJpYW5nbGVWYXJ5aW5nKHBhY2tldHNbcGFja2V0TmR4XSwgY29udGV4dCwgdmFyeWlu
Z0xvY0NvbG9yKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheTxnbHNW
ZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheT59IGFycmF5cworICAgICAqIEByZXR1cm4gc3Ry
aW5nCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0U2hhZGVyUHJvZ3Jh
bS5wcm90b3R5cGUuZ2VuVmVydGV4U291cmNlID0gZnVuY3Rpb24oYXJyYXlzKSB7CisgICAgICAg
IHZhciB2ZXJ0ZXhTaGFkZXJTcmMgPSAnJzsKKyAgICAgICAgdmFyIHBhcmFtcyA9IFtdOworCisg
ICAgICAgIHBhcmFtc1snVlRYX0lOJ10gPSAnaW4nOworICAgICAgICBwYXJhbXNbJ1ZUWF9PVVQn
XSA9ICdvdXQnOworICAgICAgICBwYXJhbXNbJ0ZSQUdfSU4nXSA9ICdpbic7CisgICAgICAgIHBh
cmFtc1snRlJBR19DT0xPUiddID0gJ2RFUVBfRnJhZ0NvbG9yJzsKKyAgICAgICAgcGFyYW1zWydW
VFhfSERSJ10gPSAnI3ZlcnNpb24gMzAwIGVzXG4nOworICAgICAgICBwYXJhbXNbJ0ZSQUdfSERS
J10gPSAnI3ZlcnNpb24gMzAwIGVzXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2
ZWM0IGRFUVBfRnJhZ0NvbG9yO1xuJzsKKworICAgICAgICB2ZXJ0ZXhTaGFkZXJTcmMgKz0gcGFy
YW1zWydWVFhfSERSJ107CisKKyAgICAgICAgZm9yICh2YXIgYXJyYXlOZHggPSAwOyBhcnJheU5k
eCA8IGFycmF5cy5sZW5ndGg7IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRl
clNyYyArPSBwYXJhbXNbJ1ZUWF9JTiddICsgJyBoaWdocCAnICsgZ2xzVmVydGV4QXJyYXlUZXN0
cy5Db250ZXh0QXJyYXkub3V0cHV0VHlwZVRvR0xUeXBlKGFycmF5c1thcnJheU5keF0uZ2V0T3V0
cHV0VHlwZSgpKSArICcgYV8nICsgYXJyYXlzW2FycmF5TmR4XS5nZXRBdHRyaWJOZHgoKSArICc7
XG4nOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4U2hhZGVyU3JjICs9CisgICAgICAgICd1
bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY29vcmRTY2FsZTtcbicgKworICAgICAgICAndW5pZm9ybSBo
aWdocCBmbG9hdCB1X2NvbG9yU2NhbGU7XG4nICsKKyAgICAgICAgcGFyYW1zWydWVFhfT1VUJ10g
KyAnIG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuJyArCisgICAgICAgICd2b2lkIG1haW4odm9pZClc
bicgKworICAgICAgICAnIHtcbicgKworICAgICAgICAnXHRnbF9Qb2ludFNpemUgPSAxLjA7XG4n
ICsKKyAgICAgICAgJ1x0aGlnaHAgdmVjMiBjb29yZCA9IHZlYzIoMS4wLCAxLjApO1xuJyArCisg
ICAgICAgICdcdGhpZ2hwIHZlYzMgY29sb3IgPSB2ZWMzKDEuMCwgMS4wLCAxLjApO1xuJzsKKwor
ICAgICAgICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFycmF5TmR4IDwgYXJyYXlzLmxlbmd0aDsg
YXJyYXlOZHgrKykgeworICAgICAgICAgICAgaWYgKGFycmF5c1thcnJheU5keF0uZ2V0QXR0cmli
TmR4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlzW2FycmF5TmR4XS5n
ZXRPdXRwdXRUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAoZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuRkxPQVQpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgdmVydGV4U2hhZGVyU3JjICs9CisgICAgICAgICAgICAgICAgICAgICAgICAnXHRjb29yZCA9
IHZlYzIoYV8wKTtcbic7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgICAgICBjYXNlIChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlw
ZS5WRUMyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlclNyYyArPQorICAg
ICAgICAgICAgICAgICAgICAgICAgJ1x0Y29vcmQgPSBhXzAueHk7XG4nOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAoZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDMyk6CisgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJ0ZXhTaGFkZXJTcmMgKz0KKyAgICAgICAgICAgICAgICAgICAgICAgICdcdGNvb3Jk
ID0gYV8wLnh5O1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAnXHRjb29yZC54ID0gY29v
cmQueCArIGFfMC56O1xuJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRU
eXBlLlZFQzQpOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyU3JjICs9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAnXHRjb29yZCA9IGFfMC54eTtcbicgKworICAgICAgICAg
ICAgICAgICAgICAgICAgJ1x0Y29vcmQgKz0gYV8wLnp3O1xuJzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUMyKToKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzIpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyU3JjICs9CisgICAgICAgICAgICAgICAgICAg
ICAgICAnXHRjb29yZCA9IHZlYzIoYV8wLnh5KTtcbic7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIChnbHNWZXJ0ZXhBcnJheVRlc3Rz
LmRlQXJyYXkuT3V0cHV0VHlwZS5JVkVDMyk6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgKGds
c1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlVWRUMzKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnRleFNoYWRlclNyYyArPQorICAgICAgICAgICAgICAgICAgICAgICAg
J1x0Y29vcmQgPSB2ZWMyKGFfMC54eSk7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICdc
dGNvb3JkLnggPSBjb29yZC54ICsgZmxvYXQoYV8wLnopO1xuJzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUM0KToKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyU3JjICs9CisgICAgICAgICAgICAgICAgICAg
ICAgICAnXHRjb29yZCA9IHZlYzIoYV8wLnh5KTtcbicgKworICAgICAgICAgICAgICAgICAgICAg
ICAgJ1x0Y29vcmQgKz0gdmVjMihhXzAuencpO1xuJzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3V0cHV0IHR5cGUnKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChhcnJheXNb
YXJyYXlOZHhdLmdldE91dHB1dFR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgKGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLkZMT0FUKToKKyAgICAgICAgICAgICAg
ICAgICAgdmVydGV4U2hhZGVyU3JjICs9CisgICAgICAgICAgICAgICAgICAgICdcdGNvbG9yID0g
Y29sb3IgKiBhXycgKyBhcnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5keCgpICsgJztcbic7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAoZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDMik6CisgICAgICAgICAgICAgICAg
ICAgIHZlcnRleFNoYWRlclNyYyArPQorICAgICAgICAgICAgICAgICAgICAnXHRjb2xvci5yZyA9
IGNvbG9yLnJnICogYV8nICsgYXJyYXlzW2FycmF5TmR4XS5nZXRBdHRyaWJOZHgoKSArICcueHk7
XG4nOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
KGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzMpOgorICAgICAgICAg
ICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJTcmMgKz0KKyAgICAgICAgICAgICAgICAgICAgJ1x0Y29s
b3IgPSBjb2xvci5yZ2IgKiBhXycgKyBhcnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5keCgpICsg
Jy54eXo7XG4nOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzQpOgorICAg
ICAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJTcmMgKz0KKyAgICAgICAgICAgICAgICAgICAg
J1x0Y29sb3IgPSBjb2xvci5yZ2IgKiBhXycgKyBhcnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5k
eCgpICsgJy54eXogKiBhXycgKyBhcnJheXNbYXJyYXlOZHhdLmdldEF0dHJpYk5keCgpICsgJy53
O1xuJzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3V0cHV0
IHR5cGUnKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB2ZXJ0ZXhTaGFkZXJTcmMgKz0KKyAgICAgICAgJ1x0dl9jb2xvciA9
IHZlYzQodV9jb2xvclNjYWxlICogY29sb3IsIDEuMCk7XG4nICsKKyAgICAgICAgJ1x0Z2xfUG9z
aXRpb24gPSB2ZWM0KHVfY29vcmRTY2FsZSAqIGNvb3JkLCAxLjAsIDEuMCk7XG4nICsKKyAgICAg
ICAgJ31cbic7CisKKyAgICAgICAgcmV0dXJuIHZlcnRleFNoYWRlclNyYzsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdsc1ZlcnRleEFy
cmF5VGVzdHMuQ29udGV4dFNoYWRlclByb2dyYW0ucHJvdG90eXBlLmdlbkZyYWdtZW50U291cmNl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBwYXJhbXMgPSBbXTsKKworICAgICAgICBwYXJh
bXNbJ1ZUWF9JTiddID0gJ2luJzsKKyAgICAgICAgcGFyYW1zWydWVFhfT1VUJ10gPSAnb3V0JzsK
KyAgICAgICAgcGFyYW1zWydGUkFHX0lOJ10gPSAnaW4nOworICAgICAgICBwYXJhbXNbJ0ZSQUdf
Q09MT1InXSA9ICdkRVFQX0ZyYWdDb2xvcic7CisgICAgICAgIHBhcmFtc1snVlRYX0hEUiddID0g
JyN2ZXJzaW9uIDMwMCBlc1xuJzsKKyAgICAgICAgcGFyYW1zWydGUkFHX0hEUiddID0gJyN2ZXJz
aW9uIDMwMCBlc1xubGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0Zy
YWdDb2xvcjtcbic7CisKKyAgICAgICAgLyogVE9ETzogQ2hlY2sgaWYgZ2xzbCBzdXBwb3J0ZWQg
dmVyc2lvbiBjaGVjayBmdW5jdGlvbiBpcyBuZWVkZWQuKi8KKworICAgICAgICB2YXIgZnJhZ21l
bnRTaGFkZXJTcmMgPSBwYXJhbXNbJ0ZSQUdfSERSJ10gKworICAgICAgICBwYXJhbXNbJ0ZSQUdf
SU4nXSArICcgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4nICsKKyAgICAgICAgJ3ZvaWQgbWFpbih2
b2lkKVxuJyArCisgICAgICAgICcge1xuJyArCisgICAgICAgICdcdCcgKyBwYXJhbXNbJ0ZSQUdf
Q09MT1InXSArICcgPSB2X2NvbG9yO1xuJyArCisgICAgICAgICd9XG4nOworCisgICAgICAgIHJl
dHVybiBmcmFnbWVudFNoYWRlclNyYzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZX0gdHlwZQorICAgICAqIEBy
ZXR1cm4ge3JyR2VuZXJpY1ZlY3Rvci5HZW5lcmljVmVjVHlwZX0KKyAgICAgKi8KKyAgICBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRTaGFkZXJQcm9ncmFtLnByb3RvdHlwZS5tYXBPdXRwdXRU
eXBlID0gZnVuY3Rpb24odHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLkZMT0FUKToK
KyAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBl
LlZFQzIpOgorICAgICAgICAgICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91
dHB1dFR5cGUuVkVDMyk6CisgICAgICAgICAgICBjYXNlIChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuT3V0cHV0VHlwZS5WRUM0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcnJHZW5lcmlj
VmVjdG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUOworCisgICAgICAgICAgICBjYXNlIChnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5JTlQpOgorICAgICAgICAgICAgY2FzZSAo
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzIpOgorICAgICAgICAg
ICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzMpOgor
ICAgICAgICAgICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUu
SVZFQzQpOgorICAgICAgICAgICAgICAgIHJldHVybiByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1Zl
Y1R5cGUuSU5UMzI7CisKKyAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5PdXRwdXRUeXBlLlVJTlQpOgorICAgICAgICAgICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlU
ZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzIpOgorICAgICAgICAgICAgY2FzZSAoZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzMpOgorICAgICAgICAgICAgY2Fz
ZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQpOgorICAgICAg
ICAgICAgICAgIHJldHVybiByckdlbmVyaWNWZWN0b3IuR2VuZXJpY1ZlY1R5cGUuVUlOVDMyOwor
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
SW52YWxpZCBvdXRwdXQgdHlwZScpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGV9IHR5cGUK
KyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0
cy5Db250ZXh0U2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUuZ2V0Q29tcG9uZW50Q291bnQgPSBmdW5j
dGlvbih0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSAo
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuRkxPQVQpOgorICAgICAgICAg
ICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSU5UKToKKyAg
ICAgICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlVJ
TlQpOgorICAgICAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgICAgICBjYXNlIChnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5WRUMyKToKKyAgICAgICAgICAgIGNh
c2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLklWRUMyKToKKyAgICAg
ICAgICAgIGNhc2UgKGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlVWRUMy
KToKKyAgICAgICAgICAgICAgICByZXR1cm4gMjsKKworICAgICAgICAgICAgY2FzZSAoZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDMyk6CisgICAgICAgICAgICBjYXNl
IChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5JVkVDMyk6CisgICAgICAg
ICAgICBjYXNlIChnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5VVkVDMyk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisKKyAgICAgICAgICAgIGNhc2UgKGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRUeXBlLlZFQzQpOgorICAgICAgICAgICAgY2FzZSAo
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzQpOgorICAgICAgICAg
ICAgY2FzZSAoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVVZFQzQpOgor
ICAgICAgICAgICAgICAgIHJldHVybiA0OworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvdXRwdXQgdHlwZScpOworICAgICAg
ICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSB8IHNnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHR9IGN0eAorICAg
ICAqIEBwYXJhbSB7QXJyYXk8Z2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0QXJyYXk+fSBhcnJh
eXMKKyAgICAgKiBAcmV0dXJuIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9ncmFtRGVjbGFy
YXRpb259CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5Db250ZXh0U2hhZGVyUHJv
Z3JhbS5wcm90b3R5cGUuY3JlYXRlUHJvZ3JhbURlY2xhcmF0aW9uID0gZnVuY3Rpb24oY3R4LCBh
cnJheXMpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtzZ2xyU2hhZGVyUHJvZ3JhbS5TaGFkZXJQcm9n
cmFtRGVjbGFyYXRpb259ICovIHZhciBkZWNsID0gbmV3IHNnbHJTaGFkZXJQcm9ncmFtLlNoYWRl
clByb2dyYW1EZWNsYXJhdGlvbigpOworCisgICAgICAgIGZvciAodmFyIGFycmF5TmR4ID0gMDsg
YXJyYXlOZHggPCBhcnJheXMubGVuZ3RoOyBhcnJheU5keCsrKQorICAgICAgICAgICAgZGVjbC5w
dXNoVmVydGV4QXR0cmlidXRlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhBdHRyaWJ1dGUo
J2FfJyArIGFycmF5TmR4LCB0aGlzLm1hcE91dHB1dFR5cGUoYXJyYXlzW2FycmF5TmR4XS5nZXRP
dXRwdXRUeXBlKCkpKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4VG9GcmFnbWVudFZhcnlp
bmcobmV3IHNnbHJTaGFkZXJQcm9ncmFtLlZlcnRleFRvRnJhZ21lbnRWYXJ5aW5nKHJyR2VuZXJp
Y1ZlY3Rvci5HZW5lcmljVmVjVHlwZS5GTE9BVCkpOworICAgICAgICBkZWNsLnB1c2hGcmFnbWVu
dE91dHB1dChuZXcgc2dsclNoYWRlclByb2dyYW0uRnJhZ21lbnRPdXRwdXQocnJHZW5lcmljVmVj
dG9yLkdlbmVyaWNWZWNUeXBlLkZMT0FUKSk7CisKKyAgICAgICAgZGVjbC5wdXNoVmVydGV4U291
cmNlKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5WZXJ0ZXhTb3VyY2UodGhpcy5nZW5WZXJ0ZXhTb3Vy
Y2UoLypjdHgsKi8gYXJyYXlzKSkpOyAvL1RPRE86IENoZWNrIGlmIHdlIG5lZWQgdG8gcmV2aWV3
IHRoZSBzdXBwb3J0IG9mIGEgZ2l2ZW4gR0xTTCB2ZXJzaW9uICh3ZSdkIG5lZWQgdGhlIGN0eCkK
KyAgICAgICAgZGVjbC5wdXNoRnJhZ21lbnRTb3VyY2UobmV3IHNnbHJTaGFkZXJQcm9ncmFtLkZy
YWdtZW50U291cmNlKHRoaXMuZ2VuRnJhZ21lbnRTb3VyY2UoLypjdHgqLykpKTsKKworICAgICAg
ICBkZWNsLnB1c2hVbmlmb3JtKG5ldyBzZ2xyU2hhZGVyUHJvZ3JhbS5Vbmlmb3JtKCd1X2Nvb3Jk
U2NhbGUnLCBnbHVTaGFkZXJVdGlsLkRhdGFUeXBlLkZMT0FUKSk7CisgICAgICAgIGRlY2wucHVz
aFVuaWZvcm0obmV3IHNnbHJTaGFkZXJQcm9ncmFtLlVuaWZvcm0oJ3VfY29sb3JTY2FsZScsIGds
dVNoYWRlclV0aWwuRGF0YVR5cGUuRkxPQVQpKTsKKworICAgICAgICByZXR1cm4gZGVjbDsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlIGNsYXNz
CisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5H
TFZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8qKiBAdHlwZSB7Z29vZy5OdW1iZXJBcnJh
eX0gKi8gdGhpcy5tX3ZhbHVlID0gWzBdOworICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9ICovIHRoaXMubV90eXBlOworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7Z2xz
VmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSB2YWwKKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmNvcHlHTFZhbHVlVG9BcnJheSA9IGZ1bmN0aW9uKGRzdCwgdmFsKSB7CisgICAgICAg
IC8qKiBAdHlwZSB7VWludDhBcnJheX0gKi8gdmFyIHZhbDggPSBuZXcgVWludDhBcnJheSh2YWwu
bV92YWx1ZS5idWZmZXIpOyAvLyBUT0RPOiBGaXggZW5jYXBzdWxhdGlvbiBpc3N1ZQorICAgICAg
ICBkc3Quc2V0KHZhbDgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1VpbnQ4
QXJyYXl9IGRzdAorICAgICAqIEBwYXJhbSB7Z29vZy5OdW1iZXJBcnJheX0gc3JjCisgICAgICov
CisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5jb3B5QXJyYXkgPSBmdW5jdGlvbihkc3QsIHNyYykg
eworICAgICAgICAvKiogQHR5cGUge1VpbnQ4QXJyYXl9ICovIHZhciBzcmM4ID0gbmV3IFVpbnQ4
QXJyYXkoc3JjLmJ1ZmZlcikuc3ViYXJyYXkoc3JjLmJ5dGVPZmZzZXQsIHNyYy5ieXRlT2Zmc2V0
ICsgc3JjLmJ5dGVMZW5ndGgpOyAvLyBUT0RPOiBGaXggZW5jYXBzdWxhdGlvbiBpc3N1ZQorICAg
ICAgICBkc3Quc2V0KHNyYzgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiB0eXBlVG9UeXBl
ZEFycmF5IGZ1bmN0aW9uLiBEZXRlcm1pbmVzIHdoaWNoIHR5cGUgb2YgYXJyYXkgd2lsbCBzdG9y
ZSB0aGUgdmFsdWUsIGFuZCBzdG9yZXMgaXQuCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVl
CisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlfSB0
eXBlCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLnR5cGVUb1R5cGVk
QXJyYXkgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkgeworICAgICAgICB2YXIgYXJyYXk7CisKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLypj
YXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRklYRUQ6CisgICAgICAg
ICAgICAgICAgYXJyYXkgPSBuZXcgSW50MzJBcnJheSgxKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZS5ET1VCTEU6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDEpOyAv
LyA2NC1iaXQ/CisgICAgICAgICAgICAgICAgYnJlYWs7Ki8KKworICAgICAgICAgICAgY2FzZSBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkJZVEU6CisgICAgICAgICAgICAg
ICAgYXJyYXkgPSBuZXcgSW50OEFycmF5KDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JU
OgorICAgICAgICAgICAgICAgIGFycmF5ID0gbmV3IEludDE2QXJyYXkoMSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LklucHV0VHlwZS5VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIGFycmF5ID0gbmV3
IFVpbnQ4QXJyYXkoMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfU0hPUlQ6Cisg
ICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LklucHV0VHlwZS5JTlQ6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgSW50MzJBcnJheSgx
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAg
YXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSEFMRjoK
KyAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyBVaW50MTZBcnJheSgxKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5mbG9hdFRvSGFsZih2YWx1
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTA6CisgICAg
ICAgICAgICAgICAgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1
dFR5cGUuSU5UXzJfMTBfMTBfMTA6CisgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgSW50MzJB
cnJheSgxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFs
dWUudHlwZVRvVHlwZWRBcnJheSAtIEludmFsaWQgSW5wdXRUeXBlJyk7CisgICAgICAgIH0KKwor
ICAgICAgICBhcnJheVswXSA9IHZhbHVlOworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLkdMVmFsdWUuY3JlYXRlID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpIHsKKyAgICAgICAg
dmFyIHYgPSBuZXcgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlKCk7CisgICAgICAgIHYubV92
YWx1ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS50eXBlVG9UeXBlZEFycmF5KHZhbHVl
LCB0eXBlKTsKKyAgICAgICAgdi5tX3R5cGUgPSB0eXBlOworICAgICAgICByZXR1cm4gdjsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmhhbGZU
b0Zsb2F0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5oYWxmVG9GbG9h
dCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB0Y3VGbG9hdC5oYWxmRmxvYXRU
b051bWJlck5vRGVub3JtKHZhbHVlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IGYKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5HTFZhbHVlLmZsb2F0VG9IYWxmID0gZnVuY3Rpb24oZikgeworICAgICAg
ICAvLyBObyBkZW5vcm0gc3VwcG9ydC4KKyAgICAgICAgcmV0dXJuIHRjdUZsb2F0Lm51bWJlclRv
SGFsZkZsb2F0Tm9EZW5vcm0oZik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRl
eEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRNYXhWYWx1ZQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge2dsc1Zl
cnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3Rz
LkdMVmFsdWUuZ2V0TWF4VmFsdWUgPSBmdW5jdGlvbih0eXBlKSB7CisgICAgICAgIHZhciB2YWx1
ZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GTE9BVDoKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IDEyNzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qY2FzZSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZJWEVEOgorICAgICAgICAgICAgICAg
IHZhbHVlID0gMzI3NjA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRE9VQkxFOgorICAgICAgICAg
ICAgICAgIHZhbHVlID0gMTI3OworICAgICAgICAgICAgICAgIGJyZWFrOyovCisgICAgICAgICAg
ICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuQllURToKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IDEyNzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5TSE9SVDoKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IDMyNzYwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAyNTU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1
dFR5cGUuVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgdmFsdWUgPSA2NTUzMDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LklucHV0VHlwZS5JTlQ6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAyMTQ3NDgz
NjQ3OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IDQyOTQ5NjcyOTU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSEFMRjoKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IDI1NjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6IC8vT3JpZ2luYWwgY29kZSByZXR1cm5zIGdhcmJhZ2UtZmlsbGVkIEdMVmFs
dWVzCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFs
dWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdM
VmFsdWUuY3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogZ2xz
VmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldE1pblZhbHVlCisgICAgICogQHBhcmFtIHtnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7
Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuR0xWYWx1ZS5nZXRNaW5WYWx1ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgdmFy
IHZhbHVlOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZMT0FUOgorICAgICAgICAgICAgICAg
IHZhbHVlID0gLTEyNzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qY2Fz
ZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZJWEVEOgorICAgICAgICAg
ICAgICAgIHZhbHVlID0gLTMyNzYwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkRPVUJMRToKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IC0xMjc7CisgICAgICAgICAgICAgICAgYnJlYWs7Ki8KKyAg
ICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5CWVRF
OgorICAgICAgICAgICAgICAgIHZhbHVlID0gLTEyNzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5T
SE9SVDoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IC0zMjc2MDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0
VHlwZS5VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LklucHV0VHlwZS5VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSU5UOgorICAgICAgICAgICAgICAgIHZhbHVlID0gLTIx
NDc0ODM2NDc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5IQUxGOgorICAgICAgICAg
ICAgICAgIHZhbHVlID0gLTI1NjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgZGVmYXVsdDogLy9PcmlnaW5hbCBjb2RlIHJldHVybnMgZ2FyYmFnZS1maWxsZWQgR0xWYWx1
ZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xW
YWx1ZS5jcmVhdGUodmFsdWUsIHR5cGUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0UmFuZG9tCisgICAgICogQHBhcmFtIHtkZVJhbmRv
bS5SYW5kb219IHJuZAorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVl
fSBtaW4KKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0gbWF4Cisg
ICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20gPSBmdW5jdGlvbihybmQsIG1p
biwgbWF4KSB7CisgICAgICAgIERFX0FTU0VSVChtaW4uZ2V0VHlwZSgpID09IG1heC5nZXRUeXBl
KCkpOworCisgICAgICAgIHZhciBtaW52ID0gbWluLmludGVycHJldCgpOworICAgICAgICB2YXIg
bWF4diA9IG1heC5pbnRlcnByZXQoKTsKKyAgICAgICAgdmFyIHR5cGUgPSBtaW4uZ2V0VHlwZSgp
OworICAgICAgICB2YXIgdmFsdWU7CisKKyAgICAgICAgaWYgKG1heHYgPCBtaW52KQorICAgICAg
ICAgICAgcmV0dXJuIG1pbjsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GTE9BVDoKKyAgICAg
ICAgICAgIC8vY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkRPVUJM
RToKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZS5IQUxGOiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xW
YWx1ZS5jcmVhdGUobWludiArIHJuZC5nZXRGbG9hdCgpICogKG1heHYgLSBtaW52KSwgdHlwZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8q
Y2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZJWEVEOiB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1pbnYgPT0gbWF4diA/IG1pbiA6IGdsc1ZlcnRleEFycmF5VGVz
dHMuR0xWYWx1ZS5jcmVhdGUobWludiArIHJuZC5nZXRJbnQoKSAlIChtYXh2IC0gbWludiksIHR5
cGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSovCisKKyAgICAgICAg
ICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5TSE9SVDoKKyAg
ICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LklucHV0VHlwZS5CWVRFOgorICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuSU5UOgorICAgICAgICAgICAgY2FzZSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVDogeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKG1pbnYg
KyBybmQuZ2V0SW50KCkgJSAobWF4diAtIG1pbnYpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRSYW5k
b20gLSBJbnZhbGlkIGlucHV0IHR5cGUnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvLyBNaW5pbXVtIGRpZmZlcmVuY2UgcmVxdWlyZWQgYmV0d2Vl
biBjb29yZGluYXRlcworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlfSB0eXBlCisgICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJy
YXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZS5taW5WYWx1ZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxP
QVQ6CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5
cGUuQllURToKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZS5IQUxGOgorICAgICAgICAgICAgLy9jYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5JbnB1dFR5cGUuRE9VQkxFOgorICAgICAgICAgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhB
cnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKDQsIHR5cGUpOworICAgICAgICAgICAgY2FzZSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JUOgorICAgICAgICAgICAgY2Fz
ZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX1NIT1JUOgor
ICAgICAgICAgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRl
KDQgKiAyNTYsIHR5cGUpOworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUoNCAqIDIsIHR5cGUpOworICAgICAgICAg
ICAgLypjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRklYRUQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUo
NCAqIDUxMiwgdHlwZSk7Ki8KKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5JTlQ6CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVz
dHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIHJldHVy
biBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKDQgKiAxNjc3NzIxNiwgdHlwZSk7
CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUubWluVmFsdWUgLSBJbnZhbGlkIGlucHV0IHR5
cGUnKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1Zl
cnRleEFycmF5VGVzdHMuR0xWYWx1ZX0gdmFsCisgICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJy
YXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZS5hYnMgPSBmdW5jdGlvbih2YWwpIHsKKyAgICAgICAgdmFyIHR5cGUgPSB2YWwuZ2V0VHlwZSgp
OworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIC8vY2FzZSBnbHNWZXJ0ZXhB
cnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLkZJWEVEOgorICAgICAgICAgICAgY2FzZSBnbHNW
ZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlNIT1JUOgorICAgICAgICAgICAgICAg
IHJldHVybiBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKDB4N0ZGRiAmIHZhbC5n
ZXRWYWx1ZSgpLCB0eXBlKTsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5CWVRFOgorICAgICAgICAgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhB
cnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKDB4N0YgJiB2YWwuZ2V0VmFsdWUoKSwgdHlwZSk7Cisg
ICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5T
SUdORURfQllURToKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LklucHV0VHlwZS5VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJy
YXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbDsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5
LklucHV0VHlwZS5GTE9BVDoKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LklucHV0VHlwZS5IQUxGOgorICAgICAgICAgICAgLy9jYXNlIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRE9VQkxFOgorICAgICAgICAgICAgICAgIHJldHVybiBn
bHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKE1hdGguYWJzKHZhbC5pbnRlcnByZXQo
KSksIHR5cGUpOworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
SW5wdXRUeXBlLklOVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2xzVmVydGV4QXJyYXlUZXN0
cy5HTFZhbHVlLmNyZWF0ZSgweDdGRkZGRkZGICYgdmFsLmdldFZhbHVlKCksIHR5cGUpOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1Zl
cnRleEFycmF5VGVzdHMuR0xWYWx1ZS5hYnMgLSBJbnZhbGlkIGlucHV0IHR5cGUnKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRl
c3RzLmRlQXJyYXkuSW5wdXRUeXBlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMu
R0xWYWx1ZS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tX3R5cGU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVz
dHMuR0xWYWx1ZS50b0Zsb2F0CisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnByZXQoKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLmdldFZhbHVlCisgICAgICogQHJl
dHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5w
cm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubV92
YWx1ZVswXTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogaW50ZXJwcmV0IGZ1bmN0aW9uLiBS
ZXR1cm5zIHRoZSBtX3ZhbHVlIGFzIGEgcXVhbnRpdHkgc28gYXJpdGhtZXRpYyBvcGVyYXRpb25z
IGNhbiBiZSBwZXJmb3JtZWQgb24gaXQKKyAgICAgKiBPbmx5IHNvbWUgdHlwZXMgcmVxdWlyZSB0
aGlzLgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLkdMVmFsdWUucHJvdG90eXBlLmludGVycHJldCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5tX3R5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZS5IQUxGKQorICAgICAgICAgICAgcmV0dXJuIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5o
YWxmVG9GbG9hdCh0aGlzLm1fdmFsdWVbMF0pOworICAgICAgICAvKmVsc2UgaWYgKHRoaXMubV90
eXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRklYRUQpIHsKKyAg
ICAgICAgICAgIHZhciBtYXhWYWx1ZSA9IDY1NTM2OworICAgICAgICAgICAgcmV0dXJuIE1hdGgu
Zmxvb3IoKDIgKiB0aGlzLm1fdmFsdWVbMF0gKyAxKSAvIChtYXhWYWx1ZSAtIDEpKTsKKyAgICAg
ICAgfSovCisKKyAgICAgICAgcmV0dXJuIHRoaXMubV92YWx1ZVswXTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG90aGVyCisg
ICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24ob3Ro
ZXIpIHsKKyAgICAgICAgcmV0dXJuIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUo
dGhpcy5pbnRlcnByZXQoKSArIG90aGVyLmludGVycHJldCgpLCB0aGlzLm1fdHlwZSk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVl
fSBvdGhlcgorICAgICAqIEByZXR1cm4ge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAg
ICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUucHJvdG90eXBlLm11bCA9IGZ1
bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFs
dWUuY3JlYXRlKHRoaXMuaW50ZXJwcmV0KCkgKiBvdGhlci5pbnRlcnByZXQoKSwgdGhpcy5tX3R5
cGUpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVz
dHMuR0xWYWx1ZX0gb3RoZXIKKyAgICAgKiBAcmV0dXJuIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdM
VmFsdWV9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLnByb3RvdHlw
ZS5kaXYgPSBmdW5jdGlvbihvdGhlcikgeworICAgICAgICByZXR1cm4gZ2xzVmVydGV4QXJyYXlU
ZXN0cy5HTFZhbHVlLmNyZWF0ZSh0aGlzLmludGVycHJldCgpIC8gb3RoZXIuaW50ZXJwcmV0KCks
IHRoaXMubV90eXBlKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0
ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG90aGVyCisgICAgICogQHJldHVybiB7Z2xzVmVydGV4QXJy
YXlUZXN0cy5HTFZhbHVlfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZS5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIGdsc1Zl
cnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUodGhpcy5pbnRlcnByZXQoKSAtIG90aGVyLmlu
dGVycHJldCgpLCB0aGlzLm1fdHlwZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2ds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkdMVmFsdWUucHJvdG90eXBlLmFkZFRvU2VsZiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAg
ICAgIHRoaXMubV92YWx1ZVswXSA9IHRoaXMuaW50ZXJwcmV0KCkgKyBvdGhlci5pbnRlcnByZXQo
KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2ds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkdMVmFsdWUucHJvdG90eXBlLnN1YlRvU2VsZiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAg
ICAgIHRoaXMubV92YWx1ZVswXSA9IHRoaXMuaW50ZXJwcmV0KCkgLSBvdGhlci5pbnRlcnByZXQo
KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2ds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkdMVmFsdWUucHJvdG90eXBlLm11bFRvU2VsZiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAg
ICAgIHRoaXMubV92YWx1ZVswXSA9IHRoaXMuaW50ZXJwcmV0KCkgKiBvdGhlci5pbnRlcnByZXQo
KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2ds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkdMVmFsdWUucHJvdG90eXBlLmRpdlRvU2VsZiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAg
ICAgIHRoaXMubV92YWx1ZVswXSA9IHRoaXMuaW50ZXJwcmV0KCkgLyBvdGhlci5pbnRlcnByZXQo
KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLnByb3RvdHlw
ZS5lcXVhbHMgPSBmdW5jdGlvbihvdGhlcikgeworICAgICAgICByZXR1cm4gdGhpcy5tX3ZhbHVl
WzBdID09IG90aGVyLmdldFZhbHVlKCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLnByb3RvdHlw
ZS5sZXNzVGhhbiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiB0aGlzLmludGVy
cHJldCgpIDwgb3RoZXIuaW50ZXJwcmV0KCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlLnByb3Rv
dHlwZS5ncmVhdGVyVGhhbiA9IGZ1bmN0aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmludGVycHJldCgpID4gb3RoZXIuaW50ZXJwcmV0KCk7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBvdGhlcgorICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVl
LnByb3RvdHlwZS5sZXNzT3JFcXVhbFRoYW4gPSBmdW5jdGlvbihvdGhlcikgeworICAgICAgICBy
ZXR1cm4gdGhpcy5pbnRlcnByZXQoKSA8PSBvdGhlci5pbnRlcnByZXQoKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG90aGVy
CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRl
c3RzLkdMVmFsdWUucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFsVGhhbiA9IGZ1bmN0aW9uKG90aGVy
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmludGVycHJldCgpID49IG90aGVyLmludGVycHJldCgp
OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFy
cmF5R2VuZXJhdG9yIGNsYXNzLiBDb250YWlucyBzdGF0aWMgbWV0aG9kcyBvbmx5CisgICAgICov
CisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5SYW5kb21BcnJheUdlbmVyYXRvciA9IGZ1bmN0aW9u
KCkge307CisKKyAgICAvKioKKyAgICAgKiBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFycmF5
R2VuZXJhdG9yLnNldERhdGEKKyAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGEKKyAgICAg
KiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IHR5cGUKKyAg
ICAgKiBAcGFyYW0ge2RlUmFuZG9tLlJhbmRvbX0gcm5kCisgICAgICogQHBhcmFtIHtnbHNWZXJ0
ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG1pbgorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlU
ZXN0cy5HTFZhbHVlfSBtYXgKKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRv
bUFycmF5R2VuZXJhdG9yLnNldERhdGEgPSBmdW5jdGlvbihkYXRhLCB0eXBlLCBybmQsIG1pbiwg
bWF4KSB7CisgICAgICAgIC8vIFBhcmFtZXRlciB0eXBlIGlzIG5vdCBuZWNlc3NhcnksIGJ1dCB3
ZSdsbCB1c2UgaXQgdG8gYXNzZXJ0IHRoZSBjcmVhdGVkIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xW
YWx1ZSBpcyBvZiB0aGUgY29ycmVjdCB0eXBlLgorICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRl
eEFycmF5VGVzdHMuR0xWYWx1ZX0gKi8gdmFyIHZhbHVlID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5H
TFZhbHVlLmdldFJhbmRvbShybmQsIG1pbiwgbWF4KTsKKyAgICAgICAgREVfQVNTRVJUKHZhbHVl
LmdldFR5cGUoKSA9PSB0eXBlKTsKKworICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlH
TFZhbHVlVG9BcnJheShkYXRhLCB2YWx1ZSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdl
bmVyYXRlQXJyYXkKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBwYXJhbSB7
Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBtaW4KKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRl
eEFycmF5VGVzdHMuR0xWYWx1ZX0gbWF4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbXBvbmVudENvdW50CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHN0cmlkZQorICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZX0gdHlwZQorICAgICAqIEByZXR1cm4ge0FycmF5QnVmZmVyfQorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuZ2VuZXJhdGVBcnJheSA9
IGZ1bmN0aW9uKHNlZWQsIG1pbiwgbWF4LCBjb3VudCwgY29tcG9uZW50Q291bnQsIHN0cmlkZSwg
dHlwZSkgeworICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyfSAqLyB2YXIgZGF0YTsKKyAg
ICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgZGF0YTg7CisKKyAgICAgICAgdmFy
IHJuZCA9IG5ldyBkZVJhbmRvbS5SYW5kb20oc2VlZCk7CisKKyAgICAgICAgaWYgKHN0cmlkZSA9
PSAwKQorICAgICAgICAgICAgc3RyaWRlID0gY29tcG9uZW50Q291bnQgKiBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0eXBlKTsKKworICAgICAgICBkYXRhID0gbmV3
IEFycmF5QnVmZmVyKHN0cmlkZSAqIGNvdW50KTsKKyAgICAgICAgZGF0YTggPSBuZXcgVWludDhB
cnJheShkYXRhKTsKKworICAgICAgICBmb3IgKHZhciB2ZXJ0ZXhOZHggPSAwOyB2ZXJ0ZXhOZHgg
PCBjb3VudDsgdmVydGV4TmR4KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvbXBvbmVudE5k
eCA9IDA7IGNvbXBvbmVudE5keCA8IGNvbXBvbmVudENvdW50OyBjb21wb25lbnROZHgrKykgewor
ICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3Iu
c2V0RGF0YShkYXRhOC5zdWJhcnJheSh2ZXJ0ZXhOZHggKiBzdHJpZGUgKyBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlU2l6ZSh0eXBlKSAqIGNvbXBvbmVudE5keCksIHR5cGUs
IHJuZCwgbWluLCBtYXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGRhdGE7CisgICAgfTsKKworICAgIC8qIHsKKyAgICAgICAgc3RhdGljIGNoYXIqICAgIGdl
bmVyYXRlUXVhZHMgKGludCBzZWVkLCBpbnQgY291bnQsIGludCBjb21wb25lbnRDb3VudCwgaW50
IG9mZnNldCwgaW50IHN0cmlkZSwgQXJyYXk6OlByaW1pdGl2ZSBwcmltaXRpdmUsIEFycmF5OjpJ
bnB1dFR5cGUgdHlwZSwgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlIG1pbiwgZ2xzVmVydGV4
QXJyYXlUZXN0cy5HTFZhbHVlIG1heCk7CisgICAgICAgIHN0YXRpYyBjaGFyKiAgICBnZW5lcmF0
ZVBlclF1YWQgKGludCBzZWVkLCBpbnQgY291bnQsIGludCBjb21wb25lbnRDb3VudCwgaW50IHN0
cmlkZSwgQXJyYXk6OlByaW1pdGl2ZSBwcmltaXRpdmUsIEFycmF5OjpJbnB1dFR5cGUgdHlwZSwg
Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlIG1pbiwgZ2xzVmVydGV4QXJyYXlUZXN0cy5HTFZh
bHVlIG1heCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgICAgICBzdGF0aWMgY2hhciogICAgY3JlYXRlUXVhZHMgKGludCBzZWVkLCBpbnQgY291bnQs
IGludCBjb21wb25lbnRDb3VudCwgaW50IG9mZnNldCwgaW50IHN0cmlkZSwgQXJyYXk6OlByaW1p
dGl2ZSBwcmltaXRpdmUsIFQgbWluLCBUIG1heCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0YXRpYyBjaGFyKiAgICBjcmVhdGVQZXJRdWFkcyAoaW50IHNlZWQsIGlu
dCBjb3VudCwgaW50IGNvbXBvbmVudENvdW50LCBpbnQgc3RyaWRlLCBBcnJheTo6UHJpbWl0aXZl
IHByaW1pdGl2ZSwgVCBtaW4sIFQgbWF4KTsKKyAgICAgICAgc3RhdGljIGNoYXIqICAgIGNyZWF0
ZVF1YWRzUGFja2VkIChpbnQgc2VlZCwgaW50IGNvdW50LCBpbnQgY29tcG9uZW50Q291bnQsIGlu
dCBvZmZzZXQsIGludCBzdHJpZGUsIEFycmF5OjpQcmltaXRpdmUgcHJpbWl0aXZlKTsKKyAgICB9
OyovCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBjb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb21wb25lbnRDb3VudAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3Ry
aWRlCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZl
fSBwcmltaXRpdmUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5J
bnB1dFR5cGV9IHR5cGUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZX0gbWluCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG1heAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSBDb29yZGluYXRlIHNjYWxpbmcgZmFjdG9yCisg
ICAgICogQHJldHVybiB7QXJyYXlCdWZmZXJ9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlU
ZXN0cy5SYW5kb21BcnJheUdlbmVyYXRvci5nZW5lcmF0ZVF1YWRzID0gZnVuY3Rpb24oc2VlZCwg
Y291bnQsIGNvbXBvbmVudENvdW50LCBvZmZzZXQsIHN0cmlkZSwgcHJpbWl0aXZlLCB0eXBlLCBt
aW4sIG1heCwgc2NhbGUpIHsKKyAgICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFy
IGRhdGE7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuRkxPQVQ6CisgICAgICAgICAgICAvKmNh
c2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5GSVhFRDoKKyAgICAgICAg
ICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5ET1VCTEU6Ki8K
KyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5C
WVRFOgorICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRU
eXBlLlNIT1JUOgorICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
SW5wdXRUeXBlLlVOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBjYXNl
IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UOgorICAg
ICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVDoK
KyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5I
QUxGOgorICAgICAgICAgICAgICAgIGRhdGEgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFy
cmF5R2VuZXJhdG9yLmNyZWF0ZVF1YWRzKHNlZWQsIGNvdW50LCBjb21wb25lbnRDb3VudCwgb2Zm
c2V0LCBzdHJpZGUsIHByaW1pdGl2ZSwgbWluLCBtYXgsIHNjYWxlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
SW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwOgorICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJh
eVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwOgorICAgICAg
ICAgICAgICAgIGRhdGEgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9y
LmNyZWF0ZVF1YWRzUGFja2VkKHNlZWQsIGNvdW50LCBjb21wb25lbnRDb3VudCwgb2Zmc2V0LCBz
dHJpZGUsIHByaW1pdGl2ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbHNWZXJ0ZXhBcnJh
eVRlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmdlbmVyYXRlUXVhZHMgLSBJbnZhbGlkIGlucHV0
IHR5cGUnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBkYXRhOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2Vl
ZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b21wb25lbnRDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gc3RyaWRlCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuUHJpbWl0aXZlfSBwcmltaXRpdmUKKyAgICAgKiBAcmV0dXJuIHtBcnJheUJ1ZmZlcn0K
KyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmNy
ZWF0ZVF1YWRzUGFja2VkID0gZnVuY3Rpb24oc2VlZCwgY291bnQsIGNvbXBvbmVudENvdW50LCBv
ZmZzZXQsIHN0cmlkZSwgcHJpbWl0aXZlKSB7CisgICAgICAgIERFX0FTU0VSVChjb21wb25lbnRD
b3VudCA9PSA0KTsKKworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHF1YWRTdHJp
ZGUgPSAwOworCisgICAgICAgIGlmIChzdHJpZGUgPT0gMCkKKyAgICAgICAgICAgIHN0cmlkZSA9
IGRlTWF0aC5JTlQzMl9TSVpFOworCisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlKSB7CisgICAg
ICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJQU5H
TEVTOgorICAgICAgICAgICAgICAgIHF1YWRTdHJpZGUgPSBzdHJpZGUgKiA2OworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignZ2xzVmVydGV4QXJyYXlUZXN0cy5SYW5kb21BcnJheUdlbmVyYXRvci5j
cmVhdGVRdWFkc1BhY2tlZCAtIEludmFsaWQgcHJpbWl0aXZlJyk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyfSAqLyB2
YXIgX2RhdGEgPSBuZXcgQXJyYXlCdWZmZXIob2Zmc2V0ICsgcXVhZFN0cmlkZSAqIChjb3VudCAt
IDEpICsgc3RyaWRlICogNSArIGNvbXBvbmVudENvdW50ICogZ2xzVmVydGV4QXJyYXlUZXN0cy5k
ZUFycmF5LmlucHV0VHlwZVNpemUoZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlw
ZS5JTlRfMl8xMF8xMF8xMCkpOyAvLyBsYXN0IGVsZW1lbnQgbXVzdCBiZSBmdWxseSBpbiB0aGUg
YXJyYXkKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgcmVzdWx0RGF0YSA9
IG5ldyBVaW50OEFycmF5KF9kYXRhKS5zdWJhcnJheShvZmZzZXQpOworCisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgbWF4ID0gMTAyNDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIHZhciBtaW4gPSAxMDsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBt
YXgyID0gNDsKKworICAgICAgICB2YXIgcm5kID0gbmV3IGRlUmFuZG9tLlJhbmRvbShzZWVkKTsK
KworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZSkgeworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0
ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0aXZlLlRSSUFOR0xFUzogeworICAgICAgICAgICAg
ICAgIGZvciAodmFyIHF1YWROZHggPSAwOyBxdWFkTmR4IDwgY291bnQ7IHF1YWROZHgrKykgewor
ICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHgxID0gbWluICsg
cm5kLmdldEludCgpICUgKG1heCAtIG1pbik7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyB2YXIgeDIgPSBtaW4gKyBybmQuZ2V0SW50KCkgJSAobWF4IC0geDEpOwor
CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgeTEgPSBtaW4g
KyBybmQuZ2V0SW50KCkgJSAobWF4IC0gbWluKTsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHZhciB5MiA9IG1pbiArIHJuZC5nZXRJbnQoKSAlIChtYXggLSB5MSk7
CisKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB6ID0gbWlu
ICsgcm5kLmdldEludCgpICUgKG1heCAtIG1pbik7CisgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdyA9IHJuZC5nZXRJbnQoKSAlIG1heDI7CisKKyAgICAgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciB2YWwxID0gKHcgPDwgMzApIHwg
KHogPDwgMjApIHwgKHkxIDw8IDEwKSB8IHgxOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIHZhbDIgPSAodyA8PCAzMCkgfCAoeiA8PCAyMCkgfCAoeTEgPDwg
MTApIHwgeDI7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIg
dmFsMyA9ICh3IDw8IDMwKSB8ICh6IDw8IDIwKSB8ICh5MiA8PCAxMCkgfCB4MTsKKworICAgICAg
ICAgICAgICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdmFyIHZhbDQgPSAodyA8PCAzMCkg
fCAoeiA8PCAyMCkgfCAoeTIgPDwgMTApIHwgeDE7CisgICAgICAgICAgICAgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB2YXIgdmFsNSA9ICh3IDw8IDMwKSB8ICh6IDw8IDIwKSB8ICh5MSA8
PCAxMCkgfCB4MjsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZh
ciB2YWw2ID0gKHcgPDwgMzApIHwgKHogPDwgMjApIHwgKHkyIDw8IDEwKSB8IHgyOworCisgICAg
ICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUFycmF5KHJlc3VsdERhdGEu
c3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiAwKSwgbmV3IFVpbnQzMkFy
cmF5KFt2YWwxXSkpOworICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNv
cHlBcnJheShyZXN1bHREYXRhLnN1YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRlICsgc3RyaWRl
ICogMSksIG5ldyBVaW50MzJBcnJheShbdmFsMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5jb3B5QXJyYXkocmVzdWx0RGF0YS5zdWJhcnJheShxdWFkTmR4ICog
cXVhZFN0cmlkZSArIHN0cmlkZSAqIDIpLCBuZXcgVWludDMyQXJyYXkoW3ZhbDNdKSk7CisgICAg
ICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUFycmF5KHJlc3VsdERhdGEu
c3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiAzKSwgbmV3IFVpbnQzMkFy
cmF5KFt2YWw0XSkpOworICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNv
cHlBcnJheShyZXN1bHREYXRhLnN1YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRlICsgc3RyaWRl
ICogNCksIG5ldyBVaW50MzJBcnJheShbdmFsNV0pKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xz
VmVydGV4QXJyYXlUZXN0cy5jb3B5QXJyYXkocmVzdWx0RGF0YS5zdWJhcnJheShxdWFkTmR4ICog
cXVhZFN0cmlkZSArIHN0cmlkZSAqIDUpLCBuZXcgVWludDMyQXJyYXkoW3ZhbDZdKSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdn
bHNWZXJ0ZXhBcnJheVRlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmNyZWF0ZVF1YWRzUGFja2Vk
IC0gSW52YWxpZCBwcmltaXRpdmUnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBfZGF0YTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHNlZWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gY29tcG9uZW50Q291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zm
c2V0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICAgICAqIEBwYXJhbSB7Z2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZX0gcHJpbWl0aXZlCisgICAgICogQHBhcmFt
IHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG1pbgorICAgICAqIEBwYXJhbSB7Z2xzVmVy
dGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBtYXgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2NhbGUg
Q29vcmRpbmF0ZSBzY2FsaW5nIGZhY3RvcgorICAgICAqIEByZXR1cm4ge0FycmF5QnVmZmVyfQor
ICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuY3Jl
YXRlUXVhZHMgPSBmdW5jdGlvbihzZWVkLCBjb3VudCwgY29tcG9uZW50Q291bnQsIG9mZnNldCwg
c3RyaWRlLCBwcmltaXRpdmUsIG1pbiwgbWF4LCBzY2FsZSkgeworICAgICAgICB2YXIgY29tcG9u
ZW50U3RyaWRlID0gbWluLm1fdmFsdWUuYnl0ZUxlbmd0aDsgLy9UT0RPOiBGaXggZW5jYXBzdWxh
dGlvbiBpc3N1ZQorICAgICAgICB2YXIgcXVhZFN0cmlkZSA9IDA7CisgICAgICAgIHZhciB0eXBl
ID0gbWluLmdldFR5cGUoKTsgLy9JbnN0ZWFkIG9mIHVzaW5nIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0
ZXIuCisKKyAgICAgICAgaWYgKHN0cmlkZSA9PSAwKQorICAgICAgICAgICAgc3RyaWRlID0gY29t
cG9uZW50Q291bnQgKiBjb21wb25lbnRTdHJpZGU7CisgICAgICAgIERFX0FTU0VSVChzdHJpZGUg
Pj0gY29tcG9uZW50Q291bnQgKiBjb21wb25lbnRTdHJpZGUpOworCisgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5QcmltaXRpdmUuVFJJQU5HTEVTOgorICAgICAgICAgICAgICAgIHF1YWRTdHJpZGUgPSBzdHJp
ZGUgKiA2OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2xzVmVydGV4QXJyYXlUZXN0cy5SYW5k
b21BcnJheUdlbmVyYXRvci5jcmVhdGVRdWFkcyAtIEludmFsaWQgcHJpbWl0aXZlJyk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiogQHR5cGUge0FycmF5
QnVmZmVyfSAqLyB2YXIgX2RhdGEgPSBuZXcgQXJyYXlCdWZmZXIob2Zmc2V0ICsgcXVhZFN0cmlk
ZSAqIGNvdW50KTsKKyAgICAgICAgLyoqIEB0eXBlIHtVaW50OEFycmF5fSAqLyB2YXIgcmVzdWx0
RGF0YSA9IG5ldyBVaW50OEFycmF5KF9kYXRhKS5zdWJhcnJheShvZmZzZXQpOworCisgICAgICAg
IHZhciBybmQgPSBuZXcgZGVSYW5kb20uUmFuZG9tKHNlZWQpOworCisgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJh
eS5QcmltaXRpdmUuVFJJQU5HTEVTOiB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcXVhZE5k
eCA9IDA7IHF1YWROZHggPCBjb3VudDsgKytxdWFkTmR4KSB7CisgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSAqLyB2YXIgeDEgPSBudWxs
OworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xW
YWx1ZX0gKi8gdmFyIHgyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHtn
bHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9ICovIHZhciB5MSA9IG51bGw7CisgICAgICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSAqLyB2YXIg
eTIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5
VGVzdHMuR0xWYWx1ZX0gKi8gdmFyIHogPSBudWxsOworICAgICAgICAgICAgICAgICAgICAvKiog
QHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0gKi8gdmFyIHcgPSBudWxsOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIGF0dGVtcHQgdG8gZmluZCBhIGdvb2QgKGkuZSBub3QgZXh0
cmVtZWx5IHNtYWxsKSBxdWFkCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGF0dGVtcHRO
ZHggPSAwOyBhdHRlbXB0TmR4IDwgNDsgKythdHRlbXB0TmR4KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB4MSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20ocm5kLCBt
aW4sIG1heCk7CisgICAgICAgICAgICAgICAgICAgICAgICB4MiA9IGdsc1ZlcnRleEFycmF5VGVz
dHMuR0xWYWx1ZS5nZXRSYW5kb20ocm5kLCBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUubWlu
VmFsdWUodHlwZSksIGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5hYnMobWF4LnN1Yih4MSkp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgeTEgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdM
VmFsdWUuZ2V0UmFuZG9tKHJuZCwgbWluLCBtYXgpOworICAgICAgICAgICAgICAgICAgICAgICAg
eTIgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0UmFuZG9tKHJuZCwgZ2xzVmVydGV4
QXJyYXlUZXN0cy5HTFZhbHVlLm1pblZhbHVlKHR5cGUpLCBnbHNWZXJ0ZXhBcnJheVRlc3RzLkdM
VmFsdWUuYWJzKG1heC5zdWIoeTEpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHogPSAo
Y29tcG9uZW50Q291bnQgPiAyKSA/IChnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0UmFu
ZG9tKHJuZCwgbWluLCBtYXgpKSA6IChnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRl
KDAsIHR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAoY29tcG9uZW50Q291bnQg
PiAzKSA/IChnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuZ2V0UmFuZG9tKHJuZCwgbWluLCBt
YXgpKSA6IChnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWUuY3JlYXRlKDEsIHR5cGUpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gYWRkaXRpb25hbCBjb21wb25lbnRzLCBhbGwg
aXMgZ29vZAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudENvdW50IDw9IDIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSByZXN1bHQgcXVhZCBpcyB0b28gdGhpbj8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgoTWF0aC5hYnMoeDIuaW50ZXJwcmV0KCkgKyB6LmludGVycHJldCgpKSA8IGds
c1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5taW5WYWx1ZSh0eXBlKS5pbnRlcnByZXQoKSkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWF0aC5hYnMoeTIuaW50ZXJwcmV0KCkgKyB3
LmludGVycHJldCgpKSA8IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5taW5WYWx1ZSh0eXBl
KS5pbnRlcnByZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBvaworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB4
MiA9IHgxLmFkZCh4Mik7CisgICAgICAgICAgICAgICAgICAgIHkyID0geTEuYWRkKHkyKTsKKwor
ICAgICAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgICAgICogVHJhbnNmb3Jt
IEdMIHZlcnRleCBjb29yZGluYXRlcyBzbyB0aGF0IGFmdGVyIHZlcnRleCBzaGFkaW5nIHRoZSB2
ZXJ0aWNlcyB3aWxsIGJlIHJvdW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAqIFdlIHdhbnQg
dG8gYXZvaWQgcXVhZHMgdGhhdCBjb3ZlciBhIHBpeGVsIHBhcnRpYWxseQorICAgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgdmFyIHJvdW5kID0gZnVuY3Rpb24ocG9z
LCBzY2FsZSwgb2Zmc2V0LCByYW5nZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGVy
Zm9ybSB0aGUgc2FtZSB0cmFuc2Zvcm1hdGlvbiBhcyB0aGUgdmVydGV4IHNoYWRlcgorICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IChwb3MuaW50ZXJwcmV0KCkgKyBvZmZzZXQpICog
c2NhbGU7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFsZiA9IHJhbmdlIC8gMjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbCAqIGhhbGYgKyBoYWxmOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gUm91bmQgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9
IE1hdGgucm91bmQodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCByZXZlcnNl
IHRoZSB2ZXJ0ZXggc2hhZGluZyB0cmFuc2Zvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsID0gKHZhbCAtIGhhbGYpIC8gaGFsZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
bCA9IHZhbCAvIHNjYWxlIC0gb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5jcmVhdGUodmFsLCBwb3MubV90eXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgdmlld3BvcnQg
PSBnbC5nZXRQYXJhbWV0ZXIoZ2wuVklFV1BPUlQpOworICAgICAgICAgICAgICAgICAgICB2YXIg
dm9mZnNldCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRDb3VudCA+IDIp
CisgICAgICAgICAgICAgICAgICAgICAgICB2b2Zmc2V0ID0gei5pbnRlcnByZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgeDEgPSByb3VuZCh4MSwgc2NhbGUsIHZvZmZzZXQsIHZpZXdwb3J0WzJd
KTsKKyAgICAgICAgICAgICAgICAgICAgeDIgPSByb3VuZCh4Miwgc2NhbGUsIHZvZmZzZXQsIHZp
ZXdwb3J0WzJdKTsKKyAgICAgICAgICAgICAgICAgICAgdm9mZnNldCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb21wb25lbnRDb3VudCA+IDMpCisgICAgICAgICAgICAgICAgICAgICAg
ICB2b2Zmc2V0ID0gdy5pbnRlcnByZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgeTEgPSByb3Vu
ZCh5MSwgc2NhbGUsIHZvZmZzZXQsIHZpZXdwb3J0WzNdKTsKKyAgICAgICAgICAgICAgICAgICAg
eTIgPSByb3VuZCh5Miwgc2NhbGUsIHZvZmZzZXQsIHZpZXdwb3J0WzNdKTsKKworICAgICAgICAg
ICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZhbHVlVG9BcnJheShyZXN1bHRE
YXRhLnN1YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRlKSwgeDEpOworICAgICAgICAgICAgICAg
ICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZhbHVlVG9BcnJheShyZXN1bHREYXRhLnN1
YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRlICsgY29tcG9uZW50U3RyaWRlKSwgeTEpOworCisg
ICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0FycmF5
KHJlc3VsdERhdGEuc3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUpLCB4Mik7
CisgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0Fy
cmF5KHJlc3VsdERhdGEuc3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKyBj
b21wb25lbnRTdHJpZGUpLCB5MSk7CisKKyAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJy
YXlUZXN0cy5jb3B5R0xWYWx1ZVRvQXJyYXkocmVzdWx0RGF0YS5zdWJhcnJheShxdWFkTmR4ICog
cXVhZFN0cmlkZSArIHN0cmlkZSAqIDIpLCB4MSk7CisgICAgICAgICAgICAgICAgICAgIGdsc1Zl
cnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0FycmF5KHJlc3VsdERhdGEuc3ViYXJyYXkocXVh
ZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiAyICsgY29tcG9uZW50U3RyaWRlKSwgeTIpOwor
CisgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0Fy
cmF5KHJlc3VsdERhdGEuc3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiAz
KSwgeDEpOworICAgICAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZh
bHVlVG9BcnJheShyZXN1bHREYXRhLnN1YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRlICsgc3Ry
aWRlICogMyArIGNvbXBvbmVudFN0cmlkZSksIHkyKTsKKworICAgICAgICAgICAgICAgICAgICBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZhbHVlVG9BcnJheShyZXN1bHREYXRhLnN1YmFycmF5
KHF1YWROZHggKiBxdWFkU3RyaWRlICsgc3RyaWRlICogNCksIHgyKTsKKyAgICAgICAgICAgICAg
ICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5jb3B5R0xWYWx1ZVRvQXJyYXkocmVzdWx0RGF0YS5z
dWJhcnJheShxdWFkTmR4ICogcXVhZFN0cmlkZSArIHN0cmlkZSAqIDQgKyBjb21wb25lbnRTdHJp
ZGUpLCB5MSk7CisKKyAgICAgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5jb3B5
R0xWYWx1ZVRvQXJyYXkocmVzdWx0RGF0YS5zdWJhcnJheShxdWFkTmR4ICogcXVhZFN0cmlkZSAr
IHN0cmlkZSAqIDUpLCB4Mik7CisgICAgICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuY29weUdMVmFsdWVUb0FycmF5KHJlc3VsdERhdGEuc3ViYXJyYXkocXVhZE5keCAqIHF1YWRT
dHJpZGUgKyBzdHJpZGUgKiA1ICsgY29tcG9uZW50U3RyaWRlKSwgeTIpOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb21wb25lbnRDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0FycmF5KHJlc3VsdERhdGEuc3Vi
YXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiBpICsgY29tcG9uZW50U3RyaWRl
ICogMiksIHopOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNvbXBvbmVudENvdW50ID4gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5jb3B5R0xWYWx1ZVRvQXJyYXkocmVzdWx0RGF0YS5zdWJhcnJheShxdWFk
TmR4ICogcXVhZFN0cmlkZSArIHN0cmlkZSAqIGkgKyBjb21wb25lbnRTdHJpZGUgKiAzKSwgdyk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJy
YXlHZW5lcmF0b3IuY3JlYXRlUXVhZHMgLSBJbnZhbGlkIHByaW1pdGl2ZScpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9kYXRhOworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VlZAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBjb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb21wb25lbnRDb3VudAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBzdHJpZGUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5QcmltaXRpdmV9IHByaW1pdGl2ZQorICAgICAqIEBwYXJhbSB7Z2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZX0gdHlwZQorICAgICAqIEBwYXJhbSB7Z2xz
VmVydGV4QXJyYXlUZXN0cy5HTFZhbHVlfSBtaW4KKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFy
cmF5VGVzdHMuR0xWYWx1ZX0gbWF4CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5S
YW5kb21BcnJheUdlbmVyYXRvci5nZW5lcmF0ZVBlclF1YWQgPSBmdW5jdGlvbihzZWVkLCBjb3Vu
dCwgY29tcG9uZW50Q291bnQsIHN0cmlkZSwgcHJpbWl0aXZlLCB0eXBlLCBtaW4sIG1heCkgewor
ICAgICAgICAvKiogQHR5cGUge0FycmF5QnVmZmVyfSAqLyB2YXIgZGF0YSA9IG51bGw7CisKKyAg
ICAgICAgZGF0YSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuY3Jl
YXRlUGVyUXVhZHMoc2VlZCwgY291bnQsIGNvbXBvbmVudENvdW50LCBzdHJpZGUsIHByaW1pdGl2
ZSwgbWluLCBtYXgpOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9OworCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHNlZWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29tcG9uZW50Q291bnQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gc3RyaWRlCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
UHJpbWl0aXZlfSBwcmltaXRpdmUKKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMu
R0xWYWx1ZX0gbWluCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9
IG1heAorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0
b3IuY3JlYXRlUGVyUXVhZHMgPSBmdW5jdGlvbihzZWVkLCBjb3VudCwgY29tcG9uZW50Q291bnQs
IHN0cmlkZSwgcHJpbWl0aXZlLCBtaW4sIG1heCkgeworICAgICAgICB2YXIgcm5kID0gbmV3IGRl
UmFuZG9tLlJhbmRvbShzZWVkKTsKKworICAgICAgICB2YXIgY29tcG9uZW50U3RyaWRlID0gbWlu
Lm1fdmFsdWUuYnl0ZUxlbmd0aDsgLy9UT0RPOiBGaXggZW5jYXBzdWxhdGlvbiBpc3N1ZS4KKwor
ICAgICAgICBpZiAoc3RyaWRlID09IDApCisgICAgICAgICAgICBzdHJpZGUgPSBjb21wb25lbnRT
dHJpZGUgKiBjb21wb25lbnRDb3VudDsKKworICAgICAgICB2YXIgcXVhZFN0cmlkZSA9IDA7CisK
KyAgICAgICAgc3dpdGNoIChwcmltaXRpdmUpIHsKKyAgICAgICAgICAgIGNhc2UgZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LlByaW1pdGl2ZS5UUklBTkdMRVM6CisgICAgICAgICAgICAgICAg
cXVhZFN0cmlkZSA9IHN0cmlkZSAqIDY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnbHNWZXJ0
ZXhBcnJheVRlc3RzLlJhbmRvbUFycmF5R2VuZXJhdG9yLmNyZWF0ZVBlclF1YWRzIC0gSW52YWxp
ZCBwcmltaXRpdmUnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIC8qKiBAdHlwZSB7QXJyYXlCdWZmZXJ9ICovIHZhciBkYXRhID0gbmV3IEFycmF5QnVmZmVy
KGNvdW50ICogcXVhZFN0cmlkZSk7CisKKyAgICAgICAgZm9yICh2YXIgcXVhZE5keCA9IDA7IHF1
YWROZHggPCBjb3VudDsgcXVhZE5keCsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBjb21wb25l
bnROZHggPSAwOyBjb21wb25lbnROZHggPCBjb21wb25lbnRDb3VudDsgY29tcG9uZW50TmR4Kysp
IHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1
ZX0gKi8gdmFyIHZhbCA9IGdsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZS5nZXRSYW5kb20ocm5k
LCBtaW4sIG1heCk7CisKKyAgICAgICAgICAgICAgICB2YXIgZGF0YTggPSBuZXcgVWludDhBcnJh
eShkYXRhKTsKKyAgICAgICAgICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZhbHVl
VG9BcnJheShkYXRhOC5zdWJhcnJheShxdWFkTmR4ICogcXVhZFN0cmlkZSArIHN0cmlkZSAqIDAg
KyBjb21wb25lbnRTdHJpZGUgKiBjb21wb25lbnROZHgpLCB2YWwpOworICAgICAgICAgICAgICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuY29weUdMVmFsdWVUb0FycmF5KGRhdGE4LnN1YmFycmF5KHF1
YWROZHggKiBxdWFkU3RyaWRlICsgc3RyaWRlICogMSArIGNvbXBvbmVudFN0cmlkZSAqIGNvbXBv
bmVudE5keCksIHZhbCk7CisgICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5jb3B5
R0xWYWx1ZVRvQXJyYXkoZGF0YTguc3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJp
ZGUgKiAyICsgY29tcG9uZW50U3RyaWRlICogY29tcG9uZW50TmR4KSwgdmFsKTsKKyAgICAgICAg
ICAgICAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLmNvcHlHTFZhbHVlVG9BcnJheShkYXRhOC5zdWJh
cnJheShxdWFkTmR4ICogcXVhZFN0cmlkZSArIHN0cmlkZSAqIDMgKyBjb21wb25lbnRTdHJpZGUg
KiBjb21wb25lbnROZHgpLCB2YWwpOworICAgICAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5VGVz
dHMuY29weUdMVmFsdWVUb0FycmF5KGRhdGE4LnN1YmFycmF5KHF1YWROZHggKiBxdWFkU3RyaWRl
ICsgc3RyaWRlICogNCArIGNvbXBvbmVudFN0cmlkZSAqIGNvbXBvbmVudE5keCksIHZhbCk7Cisg
ICAgICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5jb3B5R0xWYWx1ZVRvQXJyYXkoZGF0
YTguc3ViYXJyYXkocXVhZE5keCAqIHF1YWRTdHJpZGUgKyBzdHJpZGUgKiA1ICsgY29tcG9uZW50
U3RyaWRlICogY29tcG9uZW50TmR4KSwgdmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBkYXRhOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBjbGFzcyBn
bHNWZXJ0ZXhBcnJheVRlc3RzLlZlcnRleEFycmF5VGVzdAorICAgICAqIEBjb25zdHJ1Y3Rvcgor
ICAgICAqIEBleHRlbmRzIHt0Y3VUZXN0Q2FzZS5EZXFwVGVzdH0KKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbgorICAgICAqLwor
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuVmVydGV4QXJyYXlUZXN0ID0gZnVuY3Rpb24obmFtZSwg
ZGVzY3JpcHRpb24pIHsKKyAgICAgICAgdGN1VGVzdENhc2UuRGVxcFRlc3QuY2FsbCh0aGlzLCBu
YW1lLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAgdmFyIHIgPSAvKiogQHR5cGUge251bWJlcn0g
Ki8gKGdsLmdldFBhcmFtZXRlcihnbC5SRURfQklUUykpOworICAgICAgICB2YXIgZyA9IC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyAoZ2wuZ2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpKTsKKyAgICAg
ICAgdmFyIGIgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBhcmFtZXRlcihnbC5CTFVF
X0JJVFMpKTsKKyAgICAgICAgdmFyIGEgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFBh
cmFtZXRlcihnbC5BTFBIQV9CSVRTKSk7CisgICAgICAgIHRoaXMubV9waXhlbGZvcm1hdCA9IG5l
dyB0Y3VQaXhlbEZvcm1hdC5QaXhlbEZvcm1hdChyLCBnLCBiLCBhKTsKKworICAgICAgICAvKiog
QHR5cGUge3NnbHJSZWZlcmVuY2VDb250ZXh0LlJlZmVyZW5jZUNvbnRleHRCdWZmZXJzfSAqLyB0
aGlzLm1fcmVmQnVmZmVycyA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7c2dsclJlZmVyZW5j
ZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dH0gKi8gdGhpcy5tX3JlZkNvbnRleHQgPSBudWxsOwor
ICAgICAgICAvKiogQHR5cGUge3NnbHJHTENvbnRleHQuR0xDb250ZXh0fSAqLyB0aGlzLm1fZ2xl
c0NvbnRleHQgPSBudWxsOworICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMu
Q29udGV4dEFycmF5UGFja30gKi8gdGhpcy5tX2dsQXJyYXlQYWNrID0gbnVsbDsKKyAgICAgICAg
LyoqIEB0eXBlIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJheVBhY2t9ICovIHRoaXMu
bV9yckFycmF5UGFjayA9IG51bGw7CisgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdGhp
cy5tX2lzT2sgPSBmYWxzZTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubV9t
YXhEaWZmUmVkID0gTWF0aC5jZWlsKDI1Ni4wICogKDIuMCAvICgxIDw8IHRoaXMubV9waXhlbGZv
cm1hdC5yZWRCaXRzKSkpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX21h
eERpZmZHcmVlbiA9IE1hdGguY2VpbCgyNTYuMCAqICgyLjAgLyAoMSA8PCB0aGlzLm1fcGl4ZWxm
b3JtYXQuZ3JlZW5CaXRzKSkpOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5t
X21heERpZmZCbHVlID0gTWF0aC5jZWlsKDI1Ni4wICogKDIuMCAvICgxIDw8IHRoaXMubV9waXhl
bGZvcm1hdC5ibHVlQml0cykpKTsKKyAgICB9OworCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5W
ZXJ0ZXhBcnJheVRlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0Y3VUZXN0Q2FzZS5EZXFw
VGVzdC5wcm90b3R5cGUpOworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuVmVydGV4QXJyYXlUZXN0
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGdsc1ZlcnRleEFycmF5VGVzdHMuVmVydGV4QXJyYXlU
ZXN0OworCisgICAgLyoqCisgICAgICogaW5pdAorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuVmVydGV4QXJyYXlUZXN0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIC8qKiBAdHlwZSB7bnVtYmVyfSovIHZhciByZW5kZXJUYXJnZXRXaWR0aCA9IE1hdGgubWlu
KDUxMiwgY2FudmFzLndpZHRoKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9Ki8gdmFyIHJl
bmRlclRhcmdldEhlaWdodCA9IE1hdGgubWluKDUxMiwgY2FudmFzLmhlaWdodCk7CisgICAgICAg
IC8qKiBAdHlwZSB7c2dsclJlZmVyZW5jZUNvbnRleHQuUmVmZXJlbmNlQ29udGV4dExpbWl0c30g
Ki8gdmFyIGxpbWl0cyA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0
TGltaXRzKGdsKTsKKworICAgICAgICB0aGlzLm1fZ2xlc0NvbnRleHQgPSBuZXcgc2dsckdMQ29u
dGV4dC5HTENvbnRleHQoZ2wpOworICAgICAgICB0aGlzLm1fcmVmQnVmZmVycyA9IG5ldyBzZ2xy
UmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VDb250ZXh0QnVmZmVycyh0aGlzLm1fcGl4ZWxmb3Jt
YXQsIDAsIDAsIHJlbmRlclRhcmdldFdpZHRoLCByZW5kZXJUYXJnZXRIZWlnaHQpOworICAgICAg
ICB0aGlzLm1fcmVmQ29udGV4dCA9IG5ldyBzZ2xyUmVmZXJlbmNlQ29udGV4dC5SZWZlcmVuY2VD
b250ZXh0KGxpbWl0cywgdGhpcy5tX3JlZkJ1ZmZlcnMuZ2V0Q29sb3JidWZmZXIoKSwgdGhpcy5t
X3JlZkJ1ZmZlcnMuZ2V0RGVwdGhidWZmZXIoKSwgdGhpcy5tX3JlZkJ1ZmZlcnMuZ2V0U3RlbmNp
bGJ1ZmZlcigpKTsKKworICAgICAgICB0aGlzLm1fZ2xBcnJheVBhY2sgPSBuZXcgZ2xzVmVydGV4
QXJyYXlUZXN0cy5Db250ZXh0QXJyYXlQYWNrKHRoaXMubV9nbGVzQ29udGV4dCk7CisgICAgICAg
IHRoaXMubV9yckFycmF5UGFjayA9IG5ldyBnbHNWZXJ0ZXhBcnJheVRlc3RzLkNvbnRleHRBcnJh
eVBhY2sodGhpcy5tX3JlZkNvbnRleHQpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBjb21w
YXJlCisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3QucHJv
dG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgLyoqIEB0eXBlIHt0Y3VTdXJm
YWNlLlN1cmZhY2V9ICovIHZhciByZWYgPSB0aGlzLm1fcnJBcnJheVBhY2suZ2V0U3VyZmFjZSgp
OworICAgICAgICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIHNjcmVlbiA9
IHRoaXMubV9nbEFycmF5UGFjay5nZXRTdXJmYWNlKCk7CisKKyAgICAgICAgaWYgKC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLyAodGhpcy5tX2dsZXNDb250ZXh0LmdldFBhcmFtZXRlcihnbC5TQU1QTEVT
KSkgPiAxKSB7CisgICAgICAgICAgICAvLyBcdG9kbyBbbWlrYV0gSW1wcm92ZSBjb21wYXJlIHdo
ZW4gdXNpbmcgbXVsdGlzYW1wbGluZworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUo
J1dhcm5pbmc6IENvbXBhcmlzb24gb2YgcmVzdWx0IGZyb20gbXVsdGlzYW1wbGUgcmVuZGVyIHRh
cmdldHMgYXJlIG5vdCBhcyBzdHJpY3QgYXMgd2l0aG91dCBtdWx0aXNhbXBsaW5nLiBNaWdodCBw
cm9kdWNlIGZhbHNlIHBvc2l0aXZlcyEnKTsKKyAgICAgICAgICAgIHRoaXMubV9pc09rID0gdGN1
SW1hZ2VDb21wYXJlLmZ1enp5Q29tcGFyZSgnQ29tcGFyZSBSZXN1bHRzJywgJ0NvbXBhcmUgUmVz
dWx0cycsIHJlZi5nZXRBY2Nlc3MoKSwgc2NyZWVuLmdldEFjY2VzcygpLCAxLjUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciB0
aHJlc2hvbGQgPSB0Y3VSR0JBLm5ld1JHQkFDb21wb25lbnRzKHRoaXMubV9tYXhEaWZmUmVkLCB0
aGlzLm1fbWF4RGlmZkdyZWVuLCB0aGlzLm1fbWF4RGlmZkJsdWUsIDI1NSk7CisgICAgICAgICAg
ICAvKiogQHR5cGUge3RjdVN1cmZhY2UuU3VyZmFjZX0gKi8gdmFyIGVycm9yID0gbmV3IHRjdVN1
cmZhY2UuU3VyZmFjZShyZWYuZ2V0V2lkdGgoKSwgcmVmLmdldEhlaWdodCgpKTsKKworICAgICAg
ICAgICAgdGhpcy5tX2lzT2sgPSB0cnVlOworCisgICAgICAgICAgICBmb3IgKHZhciB5ID0gMTsg
eSA8IHJlZi5nZXRIZWlnaHQoKSAtIDE7IHkrKykgeworICAgICAgICAgICAgICAgIGZvciAodmFy
IHggPSAxOyB4IDwgcmVmLmdldFdpZHRoKCkgLSAxOyB4KyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgLyoqIEB0eXBlIHt0Y3VSR0JBLlJHQkF9ICovIHZhciByZWZQaXhlbCA9IHRjdVJHQkEubmV3
UkdCQUZyb21BcnJheShyZWYuZ2V0UGl4ZWwoeCwgeSkpOworICAgICAgICAgICAgICAgICAgICAv
KiogQHR5cGUge3RjdVJHQkEuUkdCQX0gKi8gdmFyIHNjcmVlblBpeGVsID0gdGN1UkdCQS5uZXdS
R0JBRnJvbUFycmF5KHNjcmVlbi5nZXRQaXhlbCh4LCB5KSk7CisgICAgICAgICAgICAgICAgICAg
IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlzT2tQaXhlbCA9IGZhbHNlOworCisgICAgICAg
ICAgICAgICAgICAgIC8vIERvbid0IGRvIGNvbXBhcmlzb25zIGZvciB0aGlzIHBpeGVsIGlmIGl0
IGJlbG9uZ3MgdG8gYSBvbmUtcGl4ZWwtdGhpbiBwYXJ0IChpLmUuIGl0IGRvZXNuJ3QgaGF2ZSBz
aW1pbGFyLWNvbG9yIG5laWdoYm9ycyBpbiBib3RoIHggYW5kIHkgZGlyZWN0aW9ucykgaW4gYm90
aCByZXN1bHQgYW5kIHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBmaXhl
cyBzb21lIGZhbHNlIG5lZ2F0aXZlcy4KKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHti
b29sZWFufSAqLyB2YXIgcmVmVGhpbiA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICF0Y3VS
R0JBLmNvbXBhcmVUaHJlc2hvbGQocmVmUGl4ZWwsIHRjdVJHQkEubmV3UkdCQUZyb21BcnJheShy
ZWYuZ2V0UGl4ZWwoeCAtIDEsIHkpKSwgdGhyZXNob2xkKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgIXRjdVJHQkEuY29tcGFyZVRocmVzaG9sZChyZWZQaXhlbCwgdGN1UkdCQS5uZXdSR0JB
RnJvbUFycmF5KHJlZi5nZXRQaXhlbCh4ICsgMSwgeSkpLCB0aHJlc2hvbGQpCisgICAgICAgICAg
ICAgICAgICAgICkgfHwgKAorICAgICAgICAgICAgICAgICAgICAgICAgIXRjdVJHQkEuY29tcGFy
ZVRocmVzaG9sZChyZWZQaXhlbCwgdGN1UkdCQS5uZXdSR0JBRnJvbUFycmF5KHJlZi5nZXRQaXhl
bCh4LCB5IC0gMSkpLCB0aHJlc2hvbGQpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhdGN1
UkdCQS5jb21wYXJlVGhyZXNob2xkKHJlZlBpeGVsLCB0Y3VSR0JBLm5ld1JHQkFGcm9tQXJyYXko
cmVmLmdldFBpeGVsKHgsIHkgKyAxKSksIHRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICAgICAg
KTsKKworICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBzY3Jl
ZW5UaGluID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgIXRjdVJHQkEuY29tcGFyZVRocmVz
aG9sZChzY3JlZW5QaXhlbCwgdGN1UkdCQS5uZXdSR0JBRnJvbUFycmF5KHNjcmVlbi5nZXRQaXhl
bCh4IC0gMSwgeSkpLCB0aHJlc2hvbGQpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhdGN1
UkdCQS5jb21wYXJlVGhyZXNob2xkKHNjcmVlblBpeGVsLCB0Y3VSR0JBLm5ld1JHQkFGcm9tQXJy
YXkoc2NyZWVuLmdldFBpeGVsKHggKyAxLCB5KSksIHRocmVzaG9sZCkKKyAgICAgICAgICAgICAg
ICAgICAgKSB8fCAoCisgICAgICAgICAgICAgICAgICAgICAgICAhdGN1UkdCQS5jb21wYXJlVGhy
ZXNob2xkKHNjcmVlblBpeGVsLCB0Y3VSR0JBLm5ld1JHQkFGcm9tQXJyYXkoc2NyZWVuLmdldFBp
eGVsKHgsIHkgLSAxKSksIHRocmVzaG9sZCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICF0
Y3VSR0JBLmNvbXBhcmVUaHJlc2hvbGQoc2NyZWVuUGl4ZWwsIHRjdVJHQkEubmV3UkdCQUZyb21B
cnJheShzY3JlZW4uZ2V0UGl4ZWwoeCwgeSArIDEpKSwgdGhyZXNob2xkKQorICAgICAgICAgICAg
ICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZWZUaGluICYmIHNjcmVlblRo
aW4pCisgICAgICAgICAgICAgICAgICAgICAgICBpc09rUGl4ZWwgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vTk9URTogVGhpcyB3
aWxsIGlnbm9yZSBsaW5lcyBsZXNzIHRoYW4gdGhyZWUgcGl4ZWxzIHdpZGUsIHNvCisgICAgICAg
ICAgICAgICAgICAgICAgICAvL2V2ZW4gaWYgdGhlcmUncyBhIGRpZmZlcmVuY2UsIHRoZSB0ZXN0
IHdpbGwgcGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGR5ID0gLTE7IGR5
IDwgMiAmJiAhaXNPa1BpeGVsOyBkeSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgZHggPSAtMTsgZHggPCAyICYmICFpc09rUGl4ZWw7IGR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgcmVmZXJlbmNlIHBpeGVsIGFnYWluc3Qg
c2NyZWVuIHBpeGVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7
dGN1UkdCQS5SR0JBfSAqLyB2YXIgc2NyZWVuQ21wUGl4ZWwgPSB0Y3VSR0JBLm5ld1JHQkFGcm9t
QXJyYXkoc2NyZWVuLmdldFBpeGVsKHggKyBkeCwgeSArIGR5KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAoOC1iaXQpICovIHZhciByID0gTWF0
aC5hYnMocmVmUGl4ZWwuZ2V0UmVkKCkgLSBzY3JlZW5DbXBQaXhlbC5nZXRSZWQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAoOC1iaXQpICov
IHZhciBnID0gTWF0aC5hYnMocmVmUGl4ZWwuZ2V0R3JlZW4oKSAtIHNjcmVlbkNtcFBpeGVsLmdl
dEdyZWVuKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge251
bWJlcn0gKDgtYml0KSAqLyB2YXIgYiA9IE1hdGguYWJzKHJlZlBpeGVsLmdldEJsdWUoKSAtIHNj
cmVlbkNtcFBpeGVsLmdldEJsdWUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHIgPD0gdGhpcy5tX21heERpZmZSZWQgJiYgZyA8PSB0aGlzLm1fbWF4RGlmZkdyZWVu
ICYmIGIgPD0gdGhpcy5tX21heERpZmZCbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNPa1BpeGVsID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDaGVjayBzY3JlZW4gcGl4ZWxzIGFnYWluc3QgcmVmZXJlbmNlIHBpeGVsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7dGN1UkdCQS5SR0JBfSAqLyB2
YXIgcmVmQ21wUGl4ZWwgPSB0Y3VSR0JBLm5ld1JHQkFGcm9tQXJyYXkocmVmLmdldFBpeGVsKHgg
KyBkeCwgeSArIGR5KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBNYXRo
LmFicyhyZWZDbXBQaXhlbC5nZXRSZWQoKSAtIHNjcmVlblBpeGVsLmdldFJlZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IE1hdGguYWJzKHJlZkNtcFBpeGVsLmdldEdy
ZWVuKCkgLSBzY3JlZW5QaXhlbC5nZXRHcmVlbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYiA9IE1hdGguYWJzKHJlZkNtcFBpeGVsLmdldEJsdWUoKSAtIHNjcmVlblBpeGVs
LmdldEJsdWUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
IDw9IHRoaXMubV9tYXhEaWZmUmVkICYmIGcgPD0gdGhpcy5tX21heERpZmZHcmVlbiAmJiBiIDw9
IHRoaXMubV9tYXhEaWZmQmx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc09rUGl4ZWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGlmIChpc09rUGl4ZWwpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ci5zZXRQaXhlbCh4LCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0Y3VSR0JBLm5l
d1JHQkFGcm9tQXJyYXkoc2NyZWVuLmdldFBpeGVsKHgsIHkpKS5nZXRSZWQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodGN1UkdCQS5uZXdSR0JBRnJvbUFycmF5KHNjcmVlbi5nZXRQ
aXhlbCh4LCB5KSkuZ2V0R3JlZW4oKSArIDI1NSkgLyAyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRjdVJHQkEubmV3UkdCQUZyb21BcnJheShzY3JlZW4uZ2V0UGl4ZWwoeCwgeSkpLmdl
dEJsdWUoKSwgMjU1XQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5zZXRQaXhlbCh4LCB5
LCBbMjU1LCAwLCAwLCAyNTVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubV9pc09r
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdGhpcy5tX2lzT2spIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygnSW1hZ2UgY29tcGFyaXNvbiBmYWlsZWQsIHRocmVzaG9sZCA9ICgnICsgdGhp
cy5tX21heERpZmZSZWQgKyAnLCAnICsgdGhpcy5tX21heERpZmZHcmVlbiArICcsICcgKyB0aGlz
Lm1fbWF4RGlmZkJsdWUgKyAnKScpOworICAgICAgICAgICAgICAgIC8vbG9nIDw8IFRlc3RMb2c6
OkltYWdlU2V0KCJDb21wYXJlIHJlc3VsdCIsICJSZXN1bHQgb2YgcmVuZGVyaW5nIik7CisgICAg
ICAgICAgICAgICAgdGN1SW1hZ2VDb21wYXJlLmRpc3BsYXlJbWFnZXMoc2NyZWVuLmdldEFjY2Vz
cygpLCByZWYuZ2V0QWNjZXNzKCksIGVycm9yLmdldEFjY2VzcygpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy9sb2cgPDwgVGVzdExvZzo6SW1hZ2VTZXQoIkNvbXBh
cmUgcmVzdWx0IiwgIlJlc3VsdCBvZiByZW5kZXJpbmciKQorICAgICAgICAgICAgICAgIHRjdUxv
Z0ltYWdlLmxvZ0ltYWdlKCdSZXN1bHQnLCAnJywgc2NyZWVuLmdldEFjY2VzcygpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICAvL1RPRE86IElzIHRoaXMgYWN0dWFs
bHkgdXNlZD8gLT4gZ2xzVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3QmIG9wZXJhdG9y
PSAoY29uc3QgZ2xzVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3QmIG90aGVyKTsKKwor
ICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3Qg
Y2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKiBAZXh0ZW5kcyB7Z2xzVmVydGV4QXJy
YXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3R9CisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRl
c3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWN9IHNwZWMKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjCisgICAgICovCisgICAgZ2xzVmVy
dGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdCA9IGZ1bmN0aW9uKHNwZWMsIG5hbWUs
IGRlc2MpIHsKKyAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5WZXJ0ZXhBcnJheVRlc3QuY2Fs
bCh0aGlzLCBuYW1lLCBkZXNjKTsKKworICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5
VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlY30gKi8gdGhpcy5tX3NwZWMgPSBzcGVjOwor
ICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5tX2l0ZXJhdGlvbiA9IDA7CisgICAg
fTsKKworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShnbHNWZXJ0ZXhBcnJheVRlc3RzLlZlcnRleEFycmF5VGVzdC5w
cm90b3R5cGUpOworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3Qu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFy
cmF5VGVzdDsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0
ZXhBcnJheVRlc3QuU3BlYyBjbGFzcworICAgICAqIEBjb25zdHJ1Y3RvcgorICAgICAqLworICAg
IGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAvKiogQHR5cGUge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5Qcmlt
aXRpdmV9ICovIHRoaXMucHJpbWl0aXZlOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8g
dGhpcy5kcmF3Q291bnQgPSAwOworICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5m
aXJzdCA9IDA7CisgICAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Z2xzVmVydGV4QXJyYXlUZXN0cy5N
dWx0aVZlcnRleEFycmF5VGVzdC5TcGVjLkFycmF5U3BlYz59ICovIHRoaXMuYXJyYXlzID0gW107
CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0
ZXhBcnJheVRlc3QuU3BlYy5BcnJheVNwZWMgY2xhc3MKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGV9IGlucHV0
VHlwZV8KKyAgICAgKiBAcGFyYW0ge2dsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5PdXRwdXRU
eXBlfSBvdXRwdXRUeXBlXworICAgICAqIEBwYXJhbSB7Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LlN0b3JhZ2V9IHN0b3JhZ2VfCisgICAgICogQHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3Rz
LmRlQXJyYXkuVXNhZ2V9IHVzYWdlXworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb21wb25lbnRD
b3VudF8KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XworICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzdHJpZGVfCisgICAgICogQHBhcmFtIHtib29sZWFufSBub3JtYWxpemVfCisgICAgICog
QHBhcmFtIHtnbHNWZXJ0ZXhBcnJheVRlc3RzLkdMVmFsdWV9IG1pbl8KKyAgICAgKiBAcGFyYW0g
e2dsc1ZlcnRleEFycmF5VGVzdHMuR0xWYWx1ZX0gbWF4XworICAgICAqLworICAgIGdsc1ZlcnRl
eEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJheVRlc3QuU3BlYy5BcnJheVNwZWMgPSBmdW5jdGlv
bihpbnB1dFR5cGVfLCBvdXRwdXRUeXBlXywgc3RvcmFnZV8sIHVzYWdlXywgY29tcG9uZW50Q291
bnRfLCBvZmZzZXRfLCBzdHJpZGVfLCBub3JtYWxpemVfLCBtaW5fLCBtYXhfKSB7CisgICAgICAg
IHRoaXMuaW5wdXRUeXBlID0gaW5wdXRUeXBlXzsKKyAgICAgICAgdGhpcy5vdXRwdXRUeXBlID0g
b3V0cHV0VHlwZV87CisgICAgICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2VfOworICAgICAgICB0
aGlzLnVzYWdlID0gdXNhZ2VfOworICAgICAgICB0aGlzLmNvbXBvbmVudENvdW50ID0gY29tcG9u
ZW50Q291bnRfOworICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldF87CisgICAgICAgIC8qKiBA
dHlwZSB7bnVtYmVyfSAqLyB0aGlzLnN0cmlkZSA9IHN0cmlkZV87CisgICAgICAgIHRoaXMubm9y
bWFsaXplID0gbm9ybWFsaXplXzsKKyAgICAgICAgdGhpcy5taW4gPSBtaW5fOworICAgICAgICB0
aGlzLm1heCA9IG1heF87CisgICAgfTsKKworICAgIC8qKgorICAgICAqIGdldE5hbWUKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0
aVZlcnRleEFycmF5VGVzdC5TcGVjLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBuYW1lID0gJyc7CisKKyAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dGhpcy5hcnJheXMubGVuZ3RoOyArK25keCkgeworICAgICAgICAgICAgLyoqIEB0eXBlIHtnbHNW
ZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVjfSAqLyB2
YXIgYXJyYXkgPSB0aGlzLmFycmF5c1tuZHhdOworCisgICAgICAgICAgICBpZiAodGhpcy5hcnJh
eXMubGVuZ3RoID4gMSkKKyAgICAgICAgICAgICAgICBuYW1lICs9ICdhcnJheScgKyBuZHggKyAn
Xyc7CisKKyAgICAgICAgICAgIG5hbWUgKz0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LnN0
b3JhZ2VUb1N0cmluZyhhcnJheS5zdG9yYWdlKSArICdfJyArCisgICAgICAgICAgICBhcnJheS5v
ZmZzZXQgKyAnXycgKworICAgICAgICAgICAgYXJyYXkuc3RyaWRlICsgJ18nICsKKyAgICAgICAg
ICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5pbnB1dFR5cGVUb1N0cmluZyhhcnJheS5p
bnB1dFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXJyYXkuaW5wdXRUeXBlICE9IGdsc1ZlcnRl
eEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTAgJiYg
YXJyYXkuaW5wdXRUeXBlICE9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUu
SU5UXzJfMTBfMTBfMTApCisgICAgICAgICAgICAgICAgbmFtZSArPSBhcnJheS5jb21wb25lbnRD
b3VudDsKKyAgICAgICAgICAgIG5hbWUgKz0gJ18nICsKKyAgICAgICAgICAgIChhcnJheS5ub3Jt
YWxpemUgPyAnbm9ybWFsaXplZF8nIDogJycpICsKKyAgICAgICAgICAgIGdsc1ZlcnRleEFycmF5
VGVzdHMuZGVBcnJheS5vdXRwdXRUeXBlVG9TdHJpbmcoYXJyYXkub3V0cHV0VHlwZSkgKyAnXycg
KworICAgICAgICAgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5LnVzYWdlVHlwZVRvU3Ry
aW5nKGFycmF5LnVzYWdlKSArICdfJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmZp
cnN0KQorICAgICAgICAgICAgbmFtZSArPSAnZmlyc3QnICsgdGhpcy5maXJzdCArICdfJzsKKwor
ICAgICAgICBzd2l0Y2ggKHRoaXMucHJpbWl0aXZlKSB7CisgICAgICAgICAgICBjYXNlIGdsc1Zl
cnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuVFJJQU5HTEVTOgorICAgICAgICAgICAg
ICAgIG5hbWUgKz0gJ3F1YWRzXyc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5QcmltaXRpdmUuUE9JTlRTOgorICAg
ICAgICAgICAgICAgIG5hbWUgKz0gJ3BvaW50c18nOworICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
Z2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVjLmdldE5hbWUgLSBJ
bnZhbGlkIHByaW1pdGl2ZSB0eXBlJyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBuYW1lICs9IHRoaXMuZHJhd0NvdW50OworCisgICAgICAgIHJldHVybiBu
YW1lOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBnZXROYW1lCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMuTXVsdGlWZXJ0ZXhBcnJh
eVRlc3QuU3BlYy5wcm90b3R5cGUuZ2V0RGVzYyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
ZGVzYyA9ICcnOworCisgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHRoaXMuYXJyYXlz
Lmxlbmd0aDsgKytuZHgpIHsKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7Z2xzVmVydGV4QXJyYXlU
ZXN0cy5NdWx0aVZlcnRleEFycmF5VGVzdC5TcGVjLkFycmF5U3BlY30gKi8gdmFyIGFycmF5ID0g
dGhpcy5hcnJheXNbbmR4XTsKKworICAgICAgICAgICAgZGVzYyArPSAnQXJyYXkgJyArIG5keCAr
ICc6ICcgKworICAgICAgICAgICAgJ1N0b3JhZ2UgaW4gJyArIGdsc1ZlcnRleEFycmF5VGVzdHMu
ZGVBcnJheS5zdG9yYWdlVG9TdHJpbmcoYXJyYXkuc3RvcmFnZSkgKyAnLCAnICsKKyAgICAgICAg
ICAgICdzdHJpZGUgJyArIGFycmF5LnN0cmlkZSArICcsICcgKworICAgICAgICAgICAgJ2lucHV0
IGRhdGF0eXBlICcgKyBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuaW5wdXRUeXBlVG9TdHJp
bmcoYXJyYXkuaW5wdXRUeXBlKSArICcsICcgKworICAgICAgICAgICAgJ2lucHV0IGNvbXBvbmVu
dCBjb3VudCAnICsgYXJyYXkuY29tcG9uZW50Q291bnQgKyAnLCAnICsKKyAgICAgICAgICAgIChh
cnJheS5ub3JtYWxpemUgPyAnbm9ybWFsaXplZCwgJyA6ICcnKSArCisgICAgICAgICAgICAndXNl
ZCBhcyAnICsgZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lm91dHB1dFR5cGVUb1N0cmluZyhh
cnJheS5vdXRwdXRUeXBlKSArICcsICc7CisgICAgICAgIH0KKworICAgICAgICBkZXNjICs9ICdk
cmF3QXJyYXlzKCksICcgKworICAgICAgICAnZmlyc3QgJyArIHRoaXMuZmlyc3QgKyAnLCAnICsK
KyAgICAgICAgdGhpcy5kcmF3Q291bnQ7CisKKyAgICAgICAgc3dpdGNoICh0aGlzLnByaW1pdGl2
ZSkgeworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJpbWl0
aXZlLlRSSUFOR0xFUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICdxdWFkcyAnOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRl
QXJyYXkuUHJpbWl0aXZlLlBPSU5UUzoKKyAgICAgICAgICAgICAgICBkZXNjICs9ICdwb2ludHMn
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0aVZlcnRl
eEFycmF5VGVzdC5TcGVjLmdldERlc2MgLSBJbnZhbGlkIHByaW1pdGl2ZSB0eXBlJyk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVzYzsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogaXRlcmF0ZQorICAgICAqIEByZXR1cm4ge3RjdVRlc3RD
YXNlLkl0ZXJhdGVSZXN1bHR9CisgICAgICovCisgICAgZ2xzVmVydGV4QXJyYXlUZXN0cy5NdWx0
aVZlcnRleEFycmF5VGVzdC5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5tX2l0ZXJhdGlvbiA9PSAwKSB7CisgICAgICAgICAgICB2YXIgcHJpbWl0aXZl
U2l6ZSA9ICh0aGlzLm1fc3BlYy5wcmltaXRpdmUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFy
cmF5LlByaW1pdGl2ZS5UUklBTkdMRVMpID8gKDYpIDogKDEpOyAvLyBpbiBub24taW5kZXhlZCBk
cmF3IFRyaWFuZ2xlcyBtZWFucyByZWN0YW5nbGVzCisgICAgICAgICAgICB2YXIgY29vcmRTY2Fs
ZSA9IDEuMDsKKyAgICAgICAgICAgIHZhciBjb2xvclNjYWxlID0gMS4wOworICAgICAgICAgICAg
dmFyIHVzZVZhbyA9IHRydWU7IC8vIFdlYkdMLCBXZWJHTCAyLjAgLSBnbC5nZXRUeXBlKCkuZ2V0
UHJvZmlsZSgpID09IGdsdTo6UFJPRklMRV9DT1JFOworCisgICAgICAgICAgICAvLyBMb2cgaW5m
bworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUodGhpcy5tX3NwZWMuZ2V0RGVzYygp
KTsKKworICAgICAgICAgICAgLy8gQ29sb3IgYW5kIENvb3JkIHNjYWxlCisKKyAgICAgICAgICAg
IC8vIEZpcnN0IGFycmF5IGlzIGFsd2F5cyBwb3NpdGlvbgorICAgICAgICAgICAgLyoqIEB0eXBl
IHtnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LlNwZWMuQXJyYXlTcGVj
fSAqLyB2YXIgYXJyYXlTcGVjID0gdGhpcy5tX3NwZWMuYXJyYXlzWzBdOworICAgICAgICAgICAg
aWYgKGFycmF5U3BlYy5pbnB1dFR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lklu
cHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCkgeworICAgICAgICAgICAgICAgIGlmIChh
cnJheVNwZWMubm9ybWFsaXplKQorICAgICAgICAgICAgICAgICAgICBjb29yZFNjYWxlID0gMTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvb3JkU2NhbGUgPSAx
IC8gMTAyNDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlTcGVjLmlucHV0VHlwZSA9PSBn
bHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGFycmF5U3BlYy5ub3JtYWxpemUpCisgICAgICAgICAgICAgICAg
ICAgIGNvb3JkU2NhbGUgPSAxLjA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb29yZFNjYWxlID0gMS4wIC8gNTEyLjA7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBjb29yZFNjYWxlID0gYXJyYXlTcGVjLm5vcm1hbGl6ZSAmJiAhZ2xzVmVy
dGV4QXJyYXlUZXN0cy5pbnB1dFR5cGVJc0Zsb2F0VHlwZShhcnJheVNwZWMuaW5wdXRUeXBlKSA/
IDEuMCA6IDAuOSAvIGFycmF5U3BlYy5tYXgudG9GbG9hdCgpOworCisgICAgICAgICAgICBpZiAo
YXJyYXlTcGVjLm91dHB1dFR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1
dFR5cGUuVkVDMyB8fCBhcnJheVNwZWMub3V0cHV0VHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3Rz
LmRlQXJyYXkuT3V0cHV0VHlwZS5WRUM0IHx8CisgICAgICAgICAgICAgICAgYXJyYXlTcGVjLm91
dHB1dFR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuSVZFQzMg
fHwgYXJyYXlTcGVjLm91dHB1dFR5cGUgPT0gZ2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91
dHB1dFR5cGUuSVZFQzQgfHwKKyAgICAgICAgICAgICAgICBhcnJheVNwZWMub3V0cHV0VHlwZSA9
PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5VVkVDMyB8fCBhcnJheVNw
ZWMub3V0cHV0VHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuT3V0cHV0VHlwZS5V
VkVDNCkKKyAgICAgICAgICAgICAgICBjb29yZFNjYWxlID0gY29vcmRTY2FsZSAqIDAuNTsKKwor
ICAgICAgICAgICAgLy8gQW5kIG90aGVyIGFycmF5cyBhcmUgY29sb3ItbGlrZQorICAgICAgICAg
ICAgZm9yICh2YXIgYXJyYXlOZHggPSAxOyBhcnJheU5keCA8IHRoaXMubV9zcGVjLmFycmF5cy5s
ZW5ndGg7IGFycmF5TmR4KyspIHsKKyAgICAgICAgICAgICAgICBhcnJheVNwZWMgPSB0aGlzLm1f
c3BlYy5hcnJheXNbYXJyYXlOZHhdOworCisgICAgICAgICAgICAgICAgY29sb3JTY2FsZSAqPSAo
YXJyYXlTcGVjLm5vcm1hbGl6ZSAmJiAhZ2xzVmVydGV4QXJyYXlUZXN0cy5pbnB1dFR5cGVJc0Zs
b2F0VHlwZShhcnJheVNwZWMuaW5wdXRUeXBlKSA/IDEuMCA6IDEuMCAvIGFycmF5U3BlYy5tYXgu
dG9GbG9hdCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlTcGVjLm91dHB1dFR5cGUgPT0g
Z2xzVmVydGV4QXJyYXlUZXN0cy5kZUFycmF5Lk91dHB1dFR5cGUuVkVDNCkKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3JTY2FsZSAqPSAoYXJyYXlTcGVjLm5vcm1hbGl6ZSAmJiAhZ2xzVmVydGV4
QXJyYXlUZXN0cy5pbnB1dFR5cGVJc0Zsb2F0VHlwZShhcnJheVNwZWMuaW5wdXRUeXBlKSA/IDEu
MCA6IDEuMCAvIGFycmF5U3BlYy5tYXgudG9GbG9hdCgpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gRGF0YQorCisgICAgICAgICAgICBmb3IgKHZhciBhcnJheU5keCA9IDA7IGFy
cmF5TmR4IDwgdGhpcy5tX3NwZWMuYXJyYXlzLmxlbmd0aDsgYXJyYXlOZHgrKykgeworICAgICAg
ICAgICAgICAgIGFycmF5U3BlYyA9IHRoaXMubV9zcGVjLmFycmF5c1thcnJheU5keF07CisgICAg
ICAgICAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHZhciBzZWVkID0gYXJyYXlTcGVjLmlu
cHV0VHlwZSArIDEwICogYXJyYXlTcGVjLm91dHB1dFR5cGUgKyAxMDAgKiBhcnJheVNwZWMuc3Rv
cmFnZSArIDEwMDAgKiB0aGlzLm1fc3BlYy5wcmltaXRpdmUgKyAxMDAwMCAqIGFycmF5U3BlYy51
c2FnZSArIHRoaXMubV9zcGVjLmRyYXdDb3VudCArIDEyICogYXJyYXlTcGVjLmNvbXBvbmVudENv
dW50ICsgYXJyYXlTcGVjLnN0cmlkZSArIGFycmF5U3BlYy5ub3JtYWxpemU7CisgICAgICAgICAg
ICAgICAgLyoqIEB0eXBlIHtBcnJheUJ1ZmZlcn0gKi8gdmFyIGRhdGEgPSBudWxsOworICAgICAg
ICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgc3RyaWRlID0gYXJyYXlTcGVjLnN0
cmlkZSA9PSAwID8gYXJyYXlTcGVjLmNvbXBvbmVudENvdW50ICogZ2xzVmVydGV4QXJyYXlUZXN0
cy5kZUFycmF5LmlucHV0VHlwZVNpemUoYXJyYXlTcGVjLmlucHV0VHlwZSkgOiBhcnJheVNwZWMu
c3RyaWRlOworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB2YXIgYnVmZmVy
U2l6ZSA9IGFycmF5U3BlYy5vZmZzZXQgKyBzdHJpZGUgKiAodGhpcy5tX3NwZWMuZHJhd0NvdW50
ICogcHJpbWl0aXZlU2l6ZSAtIDEpICsgYXJyYXlTcGVjLmNvbXBvbmVudENvdW50ICogZ2xzVmVy
dGV4QXJyYXlUZXN0cy5kZUFycmF5LmlucHV0VHlwZVNpemUoYXJyYXlTcGVjLmlucHV0VHlwZSk7
CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubV9zcGVjLnByaW1pdGl2ZSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyAgICAgICAgICBjYXNlIGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5QcmltaXRpdmUuUE9JTlRTOgorICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAg
ICAgZGF0YSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuZ2VuZXJh
dGVBcnJheShzZWVkLCBhcnJheVNwZWMubWluLCBhcnJheVNwZWMubWF4LCBhcnJheVNwZWMuY291
bnQsIGFycmF5U3BlYy5jb21wb25lbnRDb3VudCwgYXJyYXlTcGVjLnN0cmlkZSwgYXJyYXlTcGVj
LmlucHV0VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuUHJp
bWl0aXZlLlRSSUFOR0xFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU5keCA9
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGdsc1ZlcnRleEFycmF5
VGVzdHMuUmFuZG9tQXJyYXlHZW5lcmF0b3IuZ2VuZXJhdGVRdWFkcyhzZWVkLCB0aGlzLm1fc3Bl
Yy5kcmF3Q291bnQsIGFycmF5U3BlYy5jb21wb25lbnRDb3VudCwgYXJyYXlTcGVjLm9mZnNldCwg
YXJyYXlTcGVjLnN0cmlkZSwgdGhpcy5tX3NwZWMucHJpbWl0aXZlLCBhcnJheVNwZWMuaW5wdXRU
eXBlLCBhcnJheVNwZWMubWluLCBhcnJheVNwZWMubWF4LCBjb29yZFNjYWxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVf
QVNTRVJUKGFycmF5U3BlYy5vZmZzZXQgPT0gMCk7IC8vIFxub3RlIFtqYXJra29dIGl0IGp1c3Qg
aGFzbid0IGJlZW4gaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
ID0gZ2xzVmVydGV4QXJyYXlUZXN0cy5SYW5kb21BcnJheUdlbmVyYXRvci5nZW5lcmF0ZVBlclF1
YWQoc2VlZCwgdGhpcy5tX3NwZWMuZHJhd0NvdW50LCBhcnJheVNwZWMuY29tcG9uZW50Q291bnQs
IGFycmF5U3BlYy5zdHJpZGUsIHRoaXMubV9zcGVjLnByaW1pdGl2ZSwgYXJyYXlTcGVjLmlucHV0
VHlwZSwgYXJyYXlTcGVjLm1pbiwgYXJyYXlTcGVjLm1heCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdn
bHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlUZXN0LnByb3RvdHlwZS5pdGVyYXRl
IC0gSW52YWxpZCBwcmltaXRpdmUgdHlwZScpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5tX2dsQXJyYXlQ
YWNrLm5ld0FycmF5KGFycmF5U3BlYy5zdG9yYWdlKTsKKyAgICAgICAgICAgICAgICB0aGlzLm1f
cnJBcnJheVBhY2submV3QXJyYXkoYXJyYXlTcGVjLnN0b3JhZ2UpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5tX2dsQXJyYXlQYWNrLmdldEFycmF5KGFycmF5TmR4KS5kYXRhKGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5UYXJnZXQuQVJSQVksIGJ1ZmZlclNpemUsIG5ldyBVaW50OEFycmF5
KGRhdGEpLCBhcnJheVNwZWMudXNhZ2UpOworICAgICAgICAgICAgICAgIHRoaXMubV9yckFycmF5
UGFjay5nZXRBcnJheShhcnJheU5keCkuZGF0YShnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXku
VGFyZ2V0LkFSUkFZLCBidWZmZXJTaXplLCBuZXcgVWludDhBcnJheShkYXRhKSwgYXJyYXlTcGVj
LnVzYWdlKTsKKworICAgICAgICAgICAgICAgIHRoaXMubV9nbEFycmF5UGFjay5nZXRBcnJheShh
cnJheU5keCkuYmluZChhcnJheU5keCwgYXJyYXlTcGVjLm9mZnNldCwgYXJyYXlTcGVjLmNvbXBv
bmVudENvdW50LCBhcnJheVNwZWMuaW5wdXRUeXBlLCBhcnJheVNwZWMub3V0cHV0VHlwZSwgYXJy
YXlTcGVjLm5vcm1hbGl6ZSwgYXJyYXlTcGVjLnN0cmlkZSk7CisgICAgICAgICAgICAgICAgdGhp
cy5tX3JyQXJyYXlQYWNrLmdldEFycmF5KGFycmF5TmR4KS5iaW5kKGFycmF5TmR4LCBhcnJheVNw
ZWMub2Zmc2V0LCBhcnJheVNwZWMuY29tcG9uZW50Q291bnQsIGFycmF5U3BlYy5pbnB1dFR5cGUs
IGFycmF5U3BlYy5vdXRwdXRUeXBlLCBhcnJheVNwZWMubm9ybWFsaXplLCBhcnJheVNwZWMuc3Ry
aWRlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICB0aGlzLm1fZ2xBcnJheVBhY2sucmVuZGVyKHRoaXMubV9zcGVjLnByaW1pdGl2ZSwgdGhpcy5t
X3NwZWMuZmlyc3QsIHRoaXMubV9zcGVjLmRyYXdDb3VudCAqIHByaW1pdGl2ZVNpemUsIHVzZVZh
bywgY29vcmRTY2FsZSwgY29sb3JTY2FsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5tX3JyQXJy
YXlQYWNrLnJlbmRlcih0aGlzLm1fc3BlYy5wcmltaXRpdmUsIHRoaXMubV9zcGVjLmZpcnN0LCB0
aGlzLm1fc3BlYy5kcmF3Q291bnQgKiBwcmltaXRpdmVTaXplLCB1c2VWYW8sIGNvb3JkU2NhbGUs
IGNvbG9yU2NhbGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKGVycikgewor
ICAgICAgICAgICAgICAgIC8vIEdMIEVycm9ycyBhcmUgb2sgaWYgdGhlIG1vZGUgaXMgbm90IHBy
b3Blcmx5IGFsaWduZWQKKworICAgICAgICAgICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCdH
b3QgZXJyb3I6ICcgKyBlcnIubWVzc2FnZSk7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5p
c1VuYWxpZ25lZEJ1ZmZlck9mZnNldFRlc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZE9wdGlvbnMoJ0ZhaWxlZCB0byBkcmF3IHdpdGggdW5hbGlnbmVkIGJ1ZmZlcnMnLCBmYWxz
ZSk7IC8vIFRPRE86IFFQX1RFU1RfUkVTVUxUX0NPTVBBVElCSUxJVFlfV0FSTklORworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNVbmFsaWduZWRCdWZmZXJTdHJpZGVUZXN0KCkpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRpb25zKCdGYWlsZWQgdG8gZHJhdyB3aXRo
IHVuYWxpZ25lZCBzdHJpZGUnLCBmYWxzZSk7IC8vIFFQX1RFU1RfUkVTVUxUX0NPTVBBVElCSUxJ
VFlfV0FSTklORworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGVyci5tZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0Y3VU
ZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRoaXMubV9pdGVyYXRpb24rKzsKKyAgICAgICAgICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVy
YXRlUmVzdWx0LkNPTlRJTlVFOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMubV9pdGVyYXRpb24g
PT0gMSkgeworICAgICAgICAgICAgdGhpcy5jb21wYXJlKCk7CisKKyAgICAgICAgICAgIGlmICh0
aGlzLm1faXNPaykgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWRPcHRpb25zKCcnLCB0cnVl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNVbmFs
aWduZWRCdWZmZXJPZmZzZXRUZXN0KCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRP
cHRpb25zKCdGYWlsZWQgdG8gZHJhdyB3aXRoIHVuYWxpZ25lZCBidWZmZXJzJywgZmFsc2UpOyAv
LyBRUF9URVNUX1JFU1VMVF9DT01QQVRJQklMSVRZX1dBUk5JTkcKKyAgICAgICAgICAgICAgICBl
bHNlIGlmICh0aGlzLmlzVW5hbGlnbmVkQnVmZmVyU3RyaWRlVGVzdCgpKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkT3B0aW9ucygnRmFpbGVkIHRvIGRyYXcgd2l0aCB1bmFsaWduZWQg
c3RyaWRlJywgZmFsc2UpOyAvLyBRUF9URVNUX1JFU1VMVF9DT01QQVRJQklMSVRZX1dBUk5JTkcK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWRPcHRp
b25zKCdJbWFnZSBjb21wYXJpc29uIGZhaWxlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGhpcy5tX2l0ZXJhdGlvbisrOworICAgICAgICAgICAgcmV0dXJuIHRjdVRl
c3RDYXNlLkl0ZXJhdGVSZXN1bHQuU1RPUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWRPcHRpb25zKCdnbHNWZXJ0ZXhBcnJheVRlc3RzLk11bHRpVmVydGV4QXJyYXlU
ZXN0Lml0ZXJhdGUgLSBJbnZhbGlkIGl0ZXJhdGlvbiBzdGFnZScsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybiB0Y3VUZXN0Q2FzZS5JdGVyYXRlUmVzdWx0LlNUT1A7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgLyoqCisgICAgICogaXNVbmFsaWduZWRCdWZmZXJPZmZzZXRUZXN0CisgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnbHNWZXJ0ZXhBcnJheVRlc3RzLk11
bHRpVmVydGV4QXJyYXlUZXN0LnByb3RvdHlwZS5pc1VuYWxpZ25lZEJ1ZmZlck9mZnNldFRlc3Qg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQnVmZmVyIG9mZnNldHMgc2hvdWxkIGJlIGRhdGEg
dHlwZSBzaXplIGFsaWduZWQKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1fc3Bl
Yy5hcnJheXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLm1fc3BlYy5hcnJh
eXNbaV0uc3RvcmFnZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJyYXkuU3RvcmFnZS5CVUZG
RVIpIHsKKyAgICAgICAgICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIHZhciBpbnB1dFR5
cGVQYWNrZWQgPSB0aGlzLm1fc3BlYy5hcnJheXNbaV0uaW5wdXRUeXBlID09IGdsc1ZlcnRleEFy
cmF5VGVzdHMuZGVBcnJheS5JbnB1dFR5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTAgfHwgdGhp
cy5tX3NwZWMuYXJyYXlzW2ldLmlucHV0VHlwZSA9PSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuSW5wdXRUeXBlLklOVF8yXzEwXzEwXzEwOworCisgICAgICAgICAgICAgICAgLyoqIEB0eXBl
IHtudW1iZXJ9ICovIHZhciBkYXRhVHlwZVNpemUgPSBnbHNWZXJ0ZXhBcnJheVRlc3RzLmRlQXJy
YXkuaW5wdXRUeXBlU2l6ZSh0aGlzLm1fc3BlYy5hcnJheXNbaV0uaW5wdXRUeXBlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5wdXRUeXBlUGFja2VkKQorICAgICAgICAgICAgICAgICAgICBkYXRh
VHlwZVNpemUgPSA0OworCisgICAgICAgICAgICAgICAgaWYgKHRoaXMubV9zcGVjLmFycmF5c1tp
XS5vZmZzZXQgJSBkYXRhVHlwZVNpemUgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBpc1VuYWxpZ25lZEJ1ZmZlclN0cmlkZVRlc3QKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGdsc1ZlcnRleEFycmF5VGVzdHMu
TXVsdGlWZXJ0ZXhBcnJheVRlc3QucHJvdG90eXBlLmlzVW5hbGlnbmVkQnVmZmVyU3RyaWRlVGVz
dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBCdWZmZXIgc3RyaWRlcyBzaG91bGQgYmUgZGF0
YSB0eXBlIHNpemUgYWxpZ25lZAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubV9z
cGVjLmFycmF5cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMubV9zcGVjLmFy
cmF5c1tpXS5zdG9yYWdlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVBcnJheS5TdG9yYWdlLkJV
RkZFUikgeworICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gdmFyIGlucHV0
VHlwZVBhY2tlZCA9IHRoaXMubV9zcGVjLmFycmF5c1tpXS5pbnB1dFR5cGUgPT0gZ2xzVmVydGV4
QXJyYXlUZXN0cy5kZUFycmF5LklucHV0VHlwZS5VTlNJR05FRF9JTlRfMl8xMF8xMF8xMCB8fCB0
aGlzLm1fc3BlYy5hcnJheXNbaV0uaW5wdXRUeXBlID09IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5JbnB1dFR5cGUuSU5UXzJfMTBfMTBfMTA7CisKKyAgICAgICAgICAgICAgICAvKiogQHR5
cGUge251bWJlcn0gKi8gdmFyIGRhdGFUeXBlU2l6ZSA9IGdsc1ZlcnRleEFycmF5VGVzdHMuZGVB
cnJheS5pbnB1dFR5cGVTaXplKHRoaXMubV9zcGVjLmFycmF5c1tpXS5pbnB1dFR5cGUpOworICAg
ICAgICAgICAgICAgIGlmIChpbnB1dFR5cGVQYWNrZWQpCisgICAgICAgICAgICAgICAgICAgIGRh
dGFUeXBlU2l6ZSA9IDQ7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5tX3NwZWMuYXJyYXlz
W2ldLnN0cmlkZSAlIGRhdGFUeXBlU2l6ZSAhPSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfTsKKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9kZXFwL3dlYmdsMi5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2RlcXAvd2ViZ2wyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNTI3ZmNi
ZTc0ZmVlODUzMTJkZjFhMGUxNGJlOGRlOWFmNGQxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL3dlYmdsMi5qcwpA
QCAtMCwwICsxLDU1MjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCBUaGUgQ2xvc3VyZSBDb21w
aWxlciBBdXRob3JzCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgKi8KKworLy8gV2ViR0wgMi4wIHBvcnRpb25zOgorCisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8qKgorICogQGZpbGVvdmVydmlldyBE
ZWZpbml0aW9ucyBmb3IgV2ViR0wgZnVuY3Rpb25zIGFzIGRlc2NyaWJlZCBhdAorICogaHR0cDov
L3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zcGVjcy9sYXRlc3QvMS4wIGFuZAorICog
aHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zcGVjcy9sYXRlc3QvMi4wCisg
KgorICogVGhpcyBmaWxlIGlzIGN1cnJlbnQgdXAgdG8gdGhlIFdlYkdMIDIuMCBzcGVjLCBpbmNs
dWRpbmcgZXh0ZW5zaW9ucy4KKyAqCisgKiBUaGlzIHJlbGllcyBvbiBodG1sNS5qcyBiZWluZyBp
bmNsdWRlZCBmb3IgQ2FudmFzIGFuZCBUeXBlZCBBcnJheSBzdXBwb3J0LgorICoKKyAqIFRoaXMg
aW5jbHVkZXMgc29tZSBleHRlbnNpb25zIGRlZmluZWQgYXQKKyAqIGh0dHA6Ly93d3cua2hyb25v
cy5vcmcvcmVnaXN0cnkvd2ViZ2wvZXh0ZW5zaW9ucy8KKyAqCisgKiBUaGlzIGZpbGUgd2lsbCBi
ZSBtZXJnZWQgYmFjayBpbnRvIHRoZSBDbG9zdXJlIHdvcmtzcGFjZSBhcyBzb29uIGFzCisgKiB0
aGUgV2ViR0wgMi4wIGNoYW5nZXMgaGF2ZSBiZWVuIGZ1bGx5IHRlc3RlZC4KKyAqCisgKiBAZXh0
ZXJucworICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICogQHByaXZh
dGUKKyAqLworZnVuY3Rpb24gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSgpIHt9CisKKy8qKiBA
dHlwZWRlZiB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5HTGVudW07CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9C
VUZGRVJfQklUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuU1RFTkNJTF9CVUZGRVJfQklUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuQ09MT1JfQlVGRkVSX0JJVDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlBPSU5UUzsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkxJTkVTOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTElORV9MT09QOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTElORV9TVFJJUDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRSSUFO
R0xFUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LlRSSUFOR0xFX1NUUklQOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuVFJJQU5HTEVfRkFOOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuWkVSTzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLk9ORTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLlNSQ19DT0xPUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk9ORV9NSU5VU19TUkNfQ09MT1I7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5TUkNfQUxQSEE7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5PTkVfTUlO
VVNfU1JDX0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuRFNUX0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuT05FX01JTlVTX0RTVF9BTFBIQTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkRTVF9DT0xPUjsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk9ORV9NSU5VU19EU1RfQ09MT1I7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5TUkNf
QUxQSEFfU0FUVVJBVEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5GVU5DX0FERDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLkJMRU5EX0VRVUFUSU9OOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQkxFTkRfRVFVQVRJT05fUkdCOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQkxFTkRfRVFVQVRJT05f
QUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5GVU5DX1NVQlRSQUNUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuRlVOQ19SRVZFUlNFX1NVQlRSQUNUOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQkxFTkRfRFNUX1JHQjsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkJMRU5EX1NSQ19SR0I7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5CTEVORF9E
U1RfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5CTEVORF9TUkNfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5DT05TVEFOVF9DT0xPUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUjsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkNPTlNUQU5U
X0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQkxFTkRfQ09MT1I7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5BUlJBWV9CVUZGRVI7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5FTEVNRU5UX0FSUkFZX0JV
RkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LkFSUkFZX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNUUkVBTV9EUkFXOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU1RBVElD
X0RSQVc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5EWU5BTUlDX0RSQVc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5CVUZGRVJfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLkJVRkZFUl9VU0FHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkNVUlJFTlRfVkVSVEVYX0FUVFJJQjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkZST05UOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQkFDSzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkZST05UX0FO
RF9CQUNLOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuQ1VMTF9GQUNFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuQkxFTkQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5ESVRIRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5TVEVOQ0lMX1RFU1Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9URVNUOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU0NJU1NPUl9URVNUOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuUE9MWUdPTl9PRkZTRVRfRklM
TDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNB
TVBMRV9BTFBIQV9UT19DT1ZFUkFHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLlNBTVBMRV9DT1ZFUkFHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk5PX0VSUk9SOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuSU5WQUxJRF9FTlVNOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuSU5WQUxJRF9WQUxV
RTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLklO
VkFMSURfT1BFUkFUSU9OOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuT1VUX09GX01FTU9SWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLkNXOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuQ0NXOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuTElORV9XSURUSDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkFMSUFTRURf
TElORV9XSURUSF9SQU5HRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLkNVTExfRkFDRV9NT0RFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRlJPTlRfRkFDRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkRFUFRIX1JBTkdFOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEhfV1JJVEVNQVNLOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEhf
Q0xFQVJfVkFMVUU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5ERVBUSF9GVU5DOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuU1RFTkNJTF9DTEVBUl9WQUxVRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfRlVOQzsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfRkFJTDsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxf
UEFTU19ERVBUSF9GQUlMOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5TVEVOQ0lMX1JFRjsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfVkFMVUVfTUFT
SzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNU
RU5DSUxfV1JJVEVNQVNLOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuU1RFTkNJTF9CQUNLX0ZVTkM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5TVEVOQ0lMX0JBQ0tfRkFJTDsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfQkFDS19QQVNT
X0RFUFRIX0ZBSUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU1RFTkNJTF9CQUNLX1JFRjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfQkFD
S19WQUxVRV9NQVNLOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlZJRVdQT1JUOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU0NJU1NPUl9CT1g7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9DTEVBUl9WQUxV
RTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkNP
TE9SX1dSSVRFTUFTSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLlVOUEFDS19BTElHTk1FTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5QQUNLX0FMSUdOTUVOVDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9URVhUVVJFX1NJWkU7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfVklFV1BP
UlRfRElNUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLlNVQlBJWEVMX0JJVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5SRURfQklUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLkdSRUVOX0JJVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5CTFVFX0JJVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5BTFBIQV9CSVRTOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEhfQklUUzsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfQklU
UzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlBP
TFlHT05fT0ZGU0VUX1VOSVRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuUE9MWUdPTl9PRkZTRVRfRkFDVE9SOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9CSU5ESU5HXzJEOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU0FNUExFX0JV
RkZFUlM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5TQU1QTEVTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuU0FNUExFX0NPVkVSQUdFX1ZBTFVFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU0FNUExFX0NPVkVSQUdFX0lOVkVSVDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkNPTVBSRVNTRURfVEVY
VFVSRV9GT1JNQVRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuRE9OVF9DQVJFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuRkFTVEVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLk5JQ0VTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLkdFTkVSQVRFX01JUE1BUF9ISU5UOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQllURTsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX0JZVEU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5TSE9SVDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lH
TkVEX1NIT1JUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuSU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuVU5TSUdORURfSU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuRkxPQVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9DT01QT05FTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5BTFBIQTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQjsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkE7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5MVU1JTkFOQ0U7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5MVU1JTkFOQ0VfQUxQSEE7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5VTlNJR05F
RF9TSE9SVF80XzRfNF80OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuVU5TSUdORURfU0hPUlRfNV81XzVfMTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX1NIT1JUXzVfNl81OworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRlJBR01FTlRf
U0hBREVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuVkVSVEVYX1NIQURFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLk1BWF9WRVJURVhfQVRUUklCUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX1ZB
UllJTkdfVkVDVE9SUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLk1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX1ZFUlRFWF9URVhUVVJF
X0lNQUdFX1VOSVRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuU0hB
REVSX1RZUEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5ERUxFVEVfU1RBVFVTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuTElOS19TVEFUVVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5WQUxJREFURV9TVEFUVVM7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5BVFRBQ0hFRF9TSEFERVJTOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuQUNUSVZFX1VO
SUZPUk1TOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuQUNUSVZFX0FUVFJJQlVURVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT047CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5DVVJSRU5UX1BST0dSQU07CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ORVZFUjsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkxFU1M7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5FUVVB
TDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkxF
UVVBTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LkdSRUFURVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5OT1RFUVVBTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLkdFUVVBTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLkFMV0FZUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLktFRVA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5SRVBMQUNFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuSU5DUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLkRFQ1I7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5JTlZFUlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5JTkNSX1dSQVA7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ERUNSX1dSQVA7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5WRU5ET1I7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5SRU5ERVJFUjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlZFUlNJT047CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ORUFSRVNU
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTElO
RUFSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLkxJTkVBUl9NSVBNQVBfTkVBUkVTVDsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk5FQVJFU1RfTUlQTUFQX0xJTkVB
UjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkxJ
TkVBUl9NSVBNQVBfTElORUFSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuVEVYVFVSRV9NQUdfRklMVEVSOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9NSU5fRklMVEVSOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9XUkFQ
X1M7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5U
RVhUVVJFX1dSQVBfVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLlRFWFRVUkVfMkQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5URVhUVVJFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9DVUJFX01BUDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfQklORElOR19DVUJFX01B
UDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWTsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhUVVJF
MDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRF
WFRVUkUxOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuVEVYVFVSRTI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5URVhUVVJFMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLlRFWFRVUkU0OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRTU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhUVVJFNjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkU3OworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRTg7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhUVVJFOTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxMDsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUx
MTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRF
WFRVUkUxMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLlRFWFRVUkUxMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLlRFWFRVUkUxNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxNjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxNzsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxODsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUxOTsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyMDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRV
UkUyMTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LlRFWFRVUkUyMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLlRFWFRVUkUyMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLlRFWFRVUkUyNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyNjsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyNzsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyODsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUyOTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkUz
MDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlRF
WFRVUkUzMTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLkFDVElWRV9URVhUVVJFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuUkVQRUFUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuQ0xBTVBfVE9fRURHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk1JUlJPUkVEX1JFUEVBVDsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkZMT0FUX1ZFQzI7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5GTE9BVF9WRUMz
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRkxP
QVRfVkVDNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLklOVF9WRUMyOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuSU5UX1ZFQzM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5JTlRfVkVDNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLkJPT0w7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5CT09MX1ZFQzI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5CT09MX1ZFQzM7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5CT09MX1ZFQzQ7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5GTE9BVF9NQVQyOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRkxPQVRfTUFUMzsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkZMT0FU
X01BVDQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5TQU1QTEVSXzJEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuU0FNUExFUl9DVUJFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuVkVSVEVYX0FUVFJJQl9B
UlJBWV9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5WRVJURVhfQVRUUklCX0FSUkFZX1RZUEU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5WRVJURVhf
QVRUUklCX0FSUkFZX05PUk1BTElaRUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVI7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5WRVJURVhfQVRUUklC
X0FSUkFZX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuSU1QTEVNRU5UQVRJ
T05fQ09MT1JfUkVBRF9GT1JNQVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5DT01QSUxFX1NUQVRVUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkxPV19GTE9BVDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk1FRElVTV9GTE9BVDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkhJR0hfRkxPQVQ7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5MT1dfSU5U
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuTUVE
SVVNX0lOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLkhJR0hfSU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuRlJBTUVCVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5SRU5ERVJCVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5SR0JBNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQjVfQTE7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5SR0I1NjU7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9DT01QT05FTlQxNjsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxf
SU5ERVg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5TVEVOQ0lMX0lOREVYODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLkRFUFRIX1NURU5DSUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5SRU5ERVJCVUZGRVJfV0lEVEg7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5SRU5ERVJCVUZGRVJfSEVJR0hU
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuUkVO
REVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLlJFTkRFUkJVRkZFUl9SRURfU0laRTsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlJFTkRFUkJVRkZFUl9HUkVF
Tl9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuUkVOREVSQlVGRkVSX0JMVUVfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuUkVOREVSQlVGRkVSX0RF
UFRIX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfTEVWRUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkNPTE9SX0FU
VEFDSE1FTlQwOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuREVQVEhfQVRUQUNITUVOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLlNURU5DSUxfQVRUQUNITUVOVDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkRFUFRIX1NURU5DSUxfQVRUQUNITUVO
VDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLk5P
TkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5G
UkFNRUJVRkZFUl9DT01QTEVURTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLkZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJ
T05TOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5GUkFNRUJVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuUkVOREVSQlVGRkVSX0JJTkRJTkc7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhf
UkVOREVSQlVGRkVSX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTjsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLlVOUEFDS19GTElQX1lfV0VC
R0w7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5V
TlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0w7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5DT05URVhUX0xPU1RfV0VCR0w7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5VTlBBQ0tfQ09MT1JTUEFD
RV9DT05WRVJTSU9OX1dFQkdMOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuQlJPV1NFUl9ERUZBVUxUX1dFQkdMOworCisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuREVQVEhfQlVGRkVS
X0JJVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5TVEVOQ0lMX0JVRkZFUl9CSVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09MT1JfQlVGRkVSX0JJVDsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5QT0lOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuTElORVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTElORV9MT09QOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkxJTkVfU1RSSVA7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVFJJQU5HTEVTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlRSSUFOR0xFX1NUUklQOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRSSUFOR0xFX0ZBTjsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5aRVJPOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLk9ORTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5TUkNfQ09MT1I7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuT05FX01JTlVTX1NSQ19DT0xP
UjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5TUkNfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuT05FX01JTlVTX1NSQ19BTFBIQTsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EU1RfQUxQ
SEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuT05FX01JTlVTX0RTVF9BTFBIQTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EU1RfQ09MT1I7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuT05FX01J
TlVTX0RTVF9DT0xPUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5TUkNfQUxQSEFfU0FUVVJBVEU7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlVOQ19BREQ7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuQkxFTkRfRVFVQVRJT047CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQkxFTkRfRVFVQVRJT05fUkdCOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkJMRU5EX0VR
VUFUSU9OX0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLkZVTkNfU1VCVFJBQ1Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlVOQ19SRVZFUlNFX1NVQlRS
QUNUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkJMRU5EX0RTVF9SR0I7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQkxFTkRfU1JDX1JHQjsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5CTEVORF9E
U1RfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuQkxFTkRfU1JDX0FMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTlNUQU5UX0NPTE9SOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
Lk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DT05TVEFOVF9BTFBIQTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQkxFTkRfQ09MT1I7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQVJSQVlfQlVGRkVS
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLkVMRU1FTlRfQVJSQVlfQlVGRkVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkFSUkFZX0JVRkZFUl9CSU5ESU5HOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RSRUFNX0RSQVc7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
U1RBVElDX0RSQVc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuRFlOQU1JQ19EUkFXOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkJVRkZFUl9TSVpFOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkJV
RkZFUl9VU0FHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5DVVJSRU5UX1ZFUlRFWF9BVFRSSUI7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlJPTlQ7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
QkFDSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5GUk9OVF9BTkRfQkFDSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DVUxMX0ZBQ0U7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQkxFTkQ7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuRElUSEVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlNURU5DSUxfVEVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ERVBUSF9URVNUOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNDSVNT
T1JfVEVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5QT0xZR09OX09GRlNFVF9GSUxMOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNBTVBMRV9BTFBIQV9UT19D
T1ZFUkFHRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5TQU1QTEVfQ09WRVJBR0U7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTk9fRVJST1I7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuSU5WQUxJ
RF9FTlVNOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLklOVkFMSURfVkFMVUU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuSU5WQUxJRF9PUEVSQVRJT047CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
T1VUX09GX01FTU9SWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5DVzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DQ1c7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTElORV9XSURUSDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5B
TElBU0VEX1BPSU5UX1NJWkVfUkFOR0U7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLkNVTExfRkFDRV9NT0RFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZST05UX0ZBQ0U7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuREVQVEhfUkFOR0U7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuREVQVEhfV1JJVEVNQVNLOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFUFRIX0NMRUFSX1ZBTFVFOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFUFRIX0ZV
TkM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuU1RFTkNJTF9DTEVBUl9WQUxVRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TVEVOQ0lMX0ZVTkM7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RF
TkNJTF9GQUlMOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlNURU5DSUxfUEFTU19ERVBUSF9GQUlMOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNURU5DSUxfUEFT
U19ERVBUSF9QQVNTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlNURU5DSUxfUkVGOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNURU5DSUxfVkFMVUVfTUFTSzsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5TVEVOQ0lMX1dSSVRFTUFTSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TVEVOQ0lMX0JBQ0tfRlVOQzsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TVEVO
Q0lMX0JBQ0tfRkFJTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNU
RU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RFTkNJTF9CQUNLX1JFRjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5T
VEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlZJRVdQT1JUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlNDSVNTT1JfQk9YOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTE9SX0NMRUFSX1ZBTFVFOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LkNPTE9SX1dSSVRFTUFTSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlBBQ0tfQUxJR05NRU5UOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlBBQ0tfQUxJR05N
RU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLk1BWF9URVhUVVJFX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYX1ZJRVdQT1JUX0RJTVM7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
U1VCUElYRUxfQklUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5SRURfQklUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5HUkVFTl9CSVRTOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkJMVUVf
QklUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5BTFBIQV9CSVRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFUFRIX0JJVFM7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RFTkNJTF9CSVRT
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLlBPTFlHT05fT0ZGU0VUX1VOSVRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5URVhUVVJFX0JJTkRJTkdfMkQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU0FNUExFX0JVRkZFUlM7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU0FNUExF
UzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5TQU1QTEVfQ09WRVJBR0VfVkFMVUU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU0FNUExFX0NPVkVSQUdFX0lOVkVS
VDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ET05UX0NBUkU7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
RkFTVEVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5OSUNFU1Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuR0VORVJBVEVfTUlQTUFQX0hJTlQ7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQllU
RTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5VTlNJR05FRF9CWVRFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNIT1JUOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX1NIT1JUOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLklOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5VTlNJR05FRF9JTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRkxPQVQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuREVQVEhfQ09NUE9O
RU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkFMUEhBOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlJHQjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0JBOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkxVTUlOQU5DRTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5MVU1JTkFOQ0VfQUxQSEE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5TSUdORURfU0hPUlRfNF80XzRfNDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlNJ
R05FRF9TSE9SVF81XzVfNV8xOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX1NIT1JUXzVfNl81OworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQUdN
RU5UX1NIQURFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5WRVJURVhfU0hBREVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9WRVJURVhfQVRUUklCUzsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfVkFSWUlOR19WRUNUT1JT
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLk1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5N
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNIQURFUl9UWVBFOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFTEVU
RV9TVEFUVVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuTElOS19TVEFUVVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVkFMSURBVEVfU1RBVFVTOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkFU
VEFDSEVEX1NIQURFUlM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuQUNUSVZFX1VOSUZPUk1TOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkFDVElWRV9BVFRSSUJV
VEVTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTjsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DVVJSRU5UX1BST0dSQU07
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuTkVWRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuTEVTUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5FUVVBTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5MRVFVQUw7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuR1JF
QVRFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5OT1RFUVVBTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5HRVFVQUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQUxXQVlTOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLktFRVA7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuUkVQTEFDRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5JTkNSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFQ1I7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuSU5WRVJUOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLklO
Q1JfV1JBUDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5ERUNSX1dSQVA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVkVORE9SOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJFTkRFUkVSOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlZFUlNJT047CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuTkVBUkVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5MSU5FQVI7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTkVBUkVTVF9NSVBNQVBf
TkVBUkVTVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5MSU5FQVJfTUlQTUFQX05FQVJFU1Q7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTkVBUkVTVF9NSVBNQVBf
TElORUFSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLkxJTkVBUl9NSVBNQVBfTElORUFSOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfTUFHX0ZJTFRF
UjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5URVhUVVJFX01JTl9GSUxURVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9XUkFQX1M7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVY
VFVSRV9XUkFQX1Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV8yRDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVf
Q1VCRV9NQVA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVY
VFVSRTA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuVEVYVFVSRTE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTI7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTM7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
VEVYVFVSRTQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuVEVYVFVSRTU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTY7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTc7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVEVYVFVSRTg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTEwOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkUx
MTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5URVhUVVJFMTI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTEzOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkUxNDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5U
RVhUVVJFMTU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuVEVYVFVSRTE2OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkUxNzsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFMTg7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuVEVYVFVSRTE5OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkUyMDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFMjE7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVY
VFVSRTIyOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLlRFWFRVUkUyMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFMjQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTI1Owor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLlRFWFRVUkUyNjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFMjc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTI4OworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRV
UkUyOTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5URVhUVVJFMzA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRTMxOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkFDVElWRV9URVhUVVJF
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLlJFUEVBVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5DTEFNUF9UT19FREdFOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1JUlJPUkVEX1JFUEVBVDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5GTE9BVF9WRUMyOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLkZMT0FUX1ZFQzM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRkxPQVRfVkVDNDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5J
TlRfVkVDMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5JTlRfVkVDMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5JTlRfVkVDNDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5CT09MOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkJP
T0xfVkVDMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5CT09MX1ZFQzM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQk9PTF9WRUM0OworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZMT0FUX01BVDI7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuRkxPQVRfTUFUMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5GTE9BVF9NQVQ0OworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNBTVBMRVJfMkQ7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
U0FNUExFUl9DVUJFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5WRVJU
RVhfQVRUUklCX0FSUkFZX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9S
TUFMSVpFRDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVI7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVkVSVEVYX0FU
VFJJQl9BUlJBWV9CVUZGRVJfQklORElORzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFE
X1RZUEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09NUElM
RV9TVEFUVVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuTE9XX0ZMT0FUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1FRElVTV9GTE9BVDsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ISUdIX0ZM
T0FUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkxPV19JTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUVESVVNX0lOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ISUdIX0lOVDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5G
UkFNRUJVRkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5SRU5ERVJCVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdCQTQ7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdCNV9BMTsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5SR0I1NjU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuREVQVEhfQ09NUE9ORU5UMTY7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RFTkNJTF9JTkRFWDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5TVEVOQ0lMX0lOREVYODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ERVBUSF9TVEVOQ0lMOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJFTkRFUkJVRkZF
Ul9XSURUSDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5SRU5ERVJCVUZGRVJfSEVJR0hUOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJFTkRFUkJVRkZFUl9JTlRF
Uk5BTF9GT1JNQVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuUkVOREVSQlVGRkVSX1JFRF9TSVpFOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJFTkRFUkJVRkZF
Ul9HUkVFTl9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlJFTkRFUkJVRkZFUl9CTFVFX1NJWkU7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkVOREVSQlVG
RkVSX0FMUEhBX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkVOREVS
QlVGRkVSX1NURU5DSUxfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9U
WVBFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTE9SX0FUVEFDSE1FTlQwOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRF
UFRIX0FUVEFDSE1FTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuU1RFTkNJTF9BVFRBQ0hNRU5UOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5OT05FOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQU1FQlVGRkVSX0NPTVBMRVRFOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJ
TUVOU0lPTlM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlJBTUVCVUZGRVJf
QklORElORzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5SRU5ERVJCVUZGRVJfQklORElORzsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfUkVOREVSQlVGRkVS
X1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT047CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5QQUNLX0ZM
SVBfWV9XRUJHTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0w7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09O
VEVYVF9MT1NUX1dFQkdMOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0w7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuQlJPV1NFUl9ERUZBVUxUX1dFQkdMOworCisKKy8qKgorICogQHR5cGUgeyFIVE1MQ2Fu
dmFzRWxlbWVudH0KKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuY2Fu
dmFzOworCisvKioKKyAqIEB0eXBlIHtudW1iZXJ9CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLmRyYXdpbmdCdWZmZXJXaWR0aDsKKworLyoqCisgKiBAdHlwZSB7bnVt
YmVyfQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5kcmF3aW5nQnVm
ZmVySGVpZ2h0OworCisvKioKKyAqIEByZXR1cm4geyFXZWJHTENvbnRleHRBdHRyaWJ1dGVzfQor
ICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHt9OworCisvKioKKyAqIEByZXR1
cm4ge2Jvb2xlYW59CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5pc0NvbnRleHRMb3N0ID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisg
KiBAcmV0dXJuIHshQXJyYXkuPHN0cmluZz59CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zID0g
ZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBOb3RlIHRoYXQgdGhpcyBoYXMgc2lkZSBlZmZlY3Rz
IGJ5IGVuYWJsaW5nIHRoZSBleHRlbnNpb24gZXZlbiBpZiB0aGUKKyAqIHJlc3VsdCBpcyBub3Qg
dXNlZC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcmV0dXJuIHtPYmplY3R9CisgKi8K
K1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldEV4dGVuc2lvbiA9IGZ1bmN0
aW9uKG5hbWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0ZXh0dXJlCisgKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmFjdGl2ZVRleHR1cmUgPSBmdW5jdGlv
bih0ZXh0dXJlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQor
ICogQHBhcmFtIHtXZWJHTFNoYWRlcn0gc2hhZGVyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLmF0dGFjaFNoYWRlciA9IGZ1bmN0aW9uKHByb2dyYW0sIHNoYWRlcikg
e307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0KKyAqIEBwYXJhbSB7
bnVtYmVyfSBpbmRleAorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYmluZEF0dHJpYkxvY2F0aW9uID0gZnVuY3Rpb24oCisg
ICAgcHJvZ3JhbSwgaW5kZXgsIG5hbWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0
YXJnZXQKKyAqIEBwYXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5iaW5kQnVmZmVyID0gZnVuY3Rpb24odGFyZ2V0LCBidWZm
ZXIpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7V2Vi
R0xGcmFtZWJ1ZmZlcn0gYnVmZmVyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLmJpbmRGcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uKHRhcmdldCwgYnVmZmVyKSB7fTsKKwor
LyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge1dlYkdMUmVuZGVyYnVm
ZmVyfSBidWZmZXIKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYmlu
ZFJlbmRlcmJ1ZmZlciA9IGZ1bmN0aW9uKHRhcmdldCwgYnVmZmVyKSB7fTsKKworLyoqCisgKiBA
cGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge1dlYkdMVGV4dHVyZX0gdGV4dHVyZQor
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5iaW5kVGV4dHVyZSA9IGZ1
bmN0aW9uKHRhcmdldCwgdGV4dHVyZSkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHJl
ZAorICogQHBhcmFtIHtudW1iZXJ9IGdyZWVuCisgKiBAcGFyYW0ge251bWJlcn0gYmx1ZQorICog
QHBhcmFtIHtudW1iZXJ9IGFscGhhCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLmJsZW5kQ29sb3IgPSBmdW5jdGlvbigKKyAgICByZWQsIGJsdWUsIGdyZWVuLCBhbHBo
YSkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYmxlbmRFcXVhdGlvbiA9IGZ1bmN0aW9uKG1vZGUpIHt9
OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlUkdCCisgKiBAcGFyYW0ge251bWJlcn0g
bW9kZUFscGhhCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmJsZW5k
RXF1YXRpb25TZXBhcmF0ZSA9IGZ1bmN0aW9uKAorICAgIG1vZGVSR0IsIG1vZGVBbHBoYSkge307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHNmYWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyfSBk
ZmFjdG9yCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmJsZW5kRnVu
YyA9IGZ1bmN0aW9uKHNmYWN0b3IsIGRmYWN0b3IpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSBzcmNSR0IKKyAqIEBwYXJhbSB7bnVtYmVyfSBkc3RSR0IKKyAqIEBwYXJhbSB7bnVtYmVy
fSBzcmNBbHBoYQorICogQHBhcmFtIHtudW1iZXJ9IGRzdEFscGhhCisgKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmJsZW5kRnVuY1NlcGFyYXRlID0gZnVuY3Rpb24oCisg
ICAgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkge307CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtBcnJheUJ1ZmZlclZpZXd8QXJyYXlCdWZm
ZXJ8bnVtYmVyfSBkYXRhCisgKiBAcGFyYW0ge251bWJlcn0gdXNhZ2UKKyAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYnVmZmVyRGF0YSA9IGZ1bmN0aW9uKHRhcmdldCwg
ZGF0YSwgdXNhZ2UpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBw
YXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3fEFycmF5QnVm
ZmVyfSBkYXRhCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmJ1ZmZl
clN1YkRhdGEgPSBmdW5jdGlvbigKKyAgICB0YXJnZXQsIG9mZnNldCwgZGF0YSkge307CisKKy8q
KgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHJldHVybiB7bnVtYmVyfQorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
ID0gZnVuY3Rpb24odGFyZ2V0KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbWFzawor
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9u
KG1hc2spIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSByZWQKKyAqIEBwYXJhbSB7bnVt
YmVyfSBncmVlbgorICogQHBhcmFtIHtudW1iZXJ9IGJsdWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBh
bHBoYQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jbGVhckNvbG9y
ID0gZnVuY3Rpb24oCisgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpIHt9OworCisvKioKKyAq
IEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5jbGVhckRlcHRoID0gZnVuY3Rpb24oZGVwdGgpIHt9OworCisvKioKKyAqIEBwYXJh
bSB7bnVtYmVyfSBzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNs
ZWFyU3RlbmNpbCA9IGZ1bmN0aW9uKHMpIHt9OworCisvKioKKyAqIEBwYXJhbSB7Ym9vbGVhbn0g
cmVkCisgKiBAcGFyYW0ge2Jvb2xlYW59IGdyZWVuCisgKiBAcGFyYW0ge2Jvb2xlYW59IGJsdWUK
KyAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxwaGEKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuY29sb3JNYXNrID0gZnVuY3Rpb24oCisgICAgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xTaGFkZXJ9IHNoYWRlcgorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jb21waWxlU2hhZGVyID0gZnVuY3Rp
b24oc2hhZGVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFy
YW0ge251bWJlcn0gbGV2ZWwKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcm5hbGZvcm1hdAorICog
QHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKiBAcGFy
YW0ge251bWJlcn0gYm9yZGVyCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlld30gZGF0YQorICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jb21wcmVzc2VkVGV4SW1hZ2Uy
RCA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGRhdGEpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJn
ZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICogQHBhcmFtIHtudW1iZXJ9IHhvZmZzZXQK
KyAqIEBwYXJhbSB7bnVtYmVyfSB5b2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAq
IEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAqIEBw
YXJhbSB7QXJyYXlCdWZmZXJWaWV3fSBkYXRhCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEID0gZnVuY3Rpb24oCisgICAgdGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRh
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJl
cn0gbGV2ZWwKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB4
CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFy
YW0ge251bWJlcn0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcn0gYm9yZGVyCisgKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNvcHlUZXhJbWFnZTJEID0gZnVuY3Rpb24o
CisgICAgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVy
fSBsZXZlbAorICogQHBhcmFtIHtudW1iZXJ9IHhvZmZzZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB5
b2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jb3B5VGV4U3ViSW1hZ2UyRCA9IGZ1bmN0
aW9uKAorICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpIHt9OworCisvKioKKyAqIEByZXR1cm4geyFXZWJHTEJ1ZmZlcn0KKyAqIEBub3NpZGVl
ZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNyZWF0ZUJ1
ZmZlciA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHJldHVybiB7IVdlYkdMRnJhbWVidWZm
ZXJ9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5jcmVhdGVGcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHJl
dHVybiB7IVdlYkdMUHJvZ3JhbX0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNyZWF0ZVByb2dyYW0gPSBmdW5jdGlvbigpIHt9Owor
CisvKioKKyAqIEByZXR1cm4geyFXZWJHTFJlbmRlcmJ1ZmZlcn0KKyAqIEBub3NpZGVlZmZlY3Rz
CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmJ1
ZmZlciA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUKKyAq
IEByZXR1cm4geyFXZWJHTFNoYWRlcn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNyZWF0ZVNoYWRlciA9IGZ1bmN0aW9uKHR5cGUp
IHt9OworCisvKioKKyAqIEByZXR1cm4geyFXZWJHTFRleHR1cmV9CisgKiBAbm9zaWRlZWZmZWN0
cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jcmVhdGVUZXh0dXJl
ID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbW9kZQorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jdWxsRmFjZSA9IGZ1bmN0aW9uKG1v
ZGUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5kZWxldGVCdWZmZXIgPSBmdW5jdGlvbihi
dWZmZXIpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xGcmFtZWJ1ZmZlcn0gYnVmZmVyCisg
Ki8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmRlbGV0ZUZyYW1lYnVmZmVy
ID0gZnVuY3Rpb24oYnVmZmVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0g
cHJvZ3JhbQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5kZWxldGVQ
cm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFJl
bmRlcmJ1ZmZlcn0gYnVmZmVyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLmRlbGV0ZVJlbmRlcmJ1ZmZlciA9IGZ1bmN0aW9uKGJ1ZmZlcikge307CisKKy8qKgorICog
QHBhcmFtIHtXZWJHTFNoYWRlcn0gc2hhZGVyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmRlbGV0ZVNoYWRlciA9IGZ1bmN0aW9uKHNoYWRlcikge307CisKKy8qKgor
ICogQHBhcmFtIHtXZWJHTFRleHR1cmV9IHRleHR1cmUKKyAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuZGVsZXRlVGV4dHVyZSA9IGZ1bmN0aW9uKHRleHR1cmUpIHt9Owor
CisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBmdW5jCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLmRlcHRoRnVuYyA9IGZ1bmN0aW9uKGZ1bmMpIHt9OworCisvKioKKyAq
IEBwYXJhbSB7Ym9vbGVhbn0gZmxhZworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5kZXB0aE1hc2sgPSBmdW5jdGlvbihmbGFnKSB7fTsKKworLyoqCisgKiBAcGFyYW0g
e251bWJlcn0gbmVhclZhbAorICogQHBhcmFtIHtudW1iZXJ9IGZhclZhbAorICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5kZXB0aFJhbmdlID0gZnVuY3Rpb24obmVhclZh
bCwgZmFyVmFsKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQor
ICogQHBhcmFtIHtXZWJHTFNoYWRlcn0gc2hhZGVyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLmRldGFjaFNoYWRlciA9IGZ1bmN0aW9uKHByb2dyYW0sIHNoYWRlcikg
e307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGZsYWdzCisgKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbihmbGFncykge307CisKKy8q
KgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IGZ1bmN0aW9uKAorICAgIGlu
ZGV4KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbW9kZQorICogQHBhcmFtIHtudW1i
ZXJ9IGZpcnN0CisgKiBAcGFyYW0ge251bWJlcn0gY291bnQKKyAqLworV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuZHJhd0FycmF5cyA9IGZ1bmN0aW9uKG1vZGUsIGZpcnN0LCBj
b3VudCkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAqIEBwYXJhbSB7bnVt
YmVyfSBjb3VudAorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBv
ZmZzZXQKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZHJhd0VsZW1l
bnRzID0gZnVuY3Rpb24oCisgICAgbW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCkge307CisKKy8q
KgorICogQHBhcmFtIHtudW1iZXJ9IGNhcAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbihjYXApIHt9OworCisvKioKKyAqIEBwYXJhbSB7
bnVtYmVyfSBpbmRleAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IGZ1bmN0aW9uKAorICAgIGluZGV4KSB7fTsKKworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZmluaXNoID0gZnVuY3Rpb24oKSB7fTsK
KworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbigp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVy
fSBhdHRhY2htZW50CisgKiBAcGFyYW0ge251bWJlcn0gcmVuZGVyYnVmZmVydGFyZ2V0CisgKiBA
cGFyYW0ge1dlYkdMUmVuZGVyYnVmZmVyfSByZW5kZXJidWZmZXIKKyAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBmdW5jdGlv
bigKKyAgICB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVm
ZmVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251
bWJlcn0gYXR0YWNobWVudAorICogQHBhcmFtIHtudW1iZXJ9IHRleHRhcmdldAorICogQHBhcmFt
IHtXZWJHTFRleHR1cmV9IHRleHR1cmUKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCA9
IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBs
ZXZlbCkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZnJvbnRGYWNlID0gZnVuY3Rpb24obW9kZSkge307
CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5nZW5lcmF0ZU1pcG1hcCA9IGZ1bmN0aW9uKHRhcmdldCkge307
CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0KKyAqIEBwYXJhbSB7bnVt
YmVyfSBpbmRleAorICogQHJldHVybiB7V2ViR0xBY3RpdmVJbmZvfQorICogQG5vc2lkZWVmZmVj
dHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0QWN0aXZlQXR0
cmliID0gZnVuY3Rpb24ocHJvZ3JhbSwgaW5kZXgpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2Vi
R0xQcm9ncmFtfSBwcm9ncmFtCisgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKKyAqIEByZXR1cm4g
e1dlYkdMQWN0aXZlSW5mb30KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLmdldEFjdGl2ZVVuaWZvcm0gPSBmdW5jdGlvbihwcm9ncmFt
LCBpbmRleCkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0KKyAq
IEByZXR1cm4geyFBcnJheS48V2ViR0xTaGFkZXI+fQorICogQG5vc2lkZWVmZmVjdHMKKyAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0QXR0YWNoZWRTaGFkZXJzID0g
ZnVuY3Rpb24ocHJvZ3JhbSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHBy
b2dyYW0KKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKiBA
bm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5n
ZXRBdHRyaWJMb2NhdGlvbiA9IGZ1bmN0aW9uKHByb2dyYW0sIG5hbWUpIHt9OworCisvKioKKyAq
IEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBwbmFtZQorICogQHJl
dHVybiB7Kn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmdldEJ1ZmZlclBhcmFtZXRlciA9IGZ1bmN0aW9uKHRhcmdldCwgcG5hbWUp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBwbmFtZQorICogQHJldHVybiB7Kn0KKyAq
IEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LmdldFBhcmFtZXRlciA9IGZ1bmN0aW9uKHBuYW1lKSB7fTsKKworLyoqCisgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5nZXRFcnJvciA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHBhcmFtIHtu
dW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IGF0dGFjaG1lbnQKKyAqIEBwYXJhbSB7
bnVtYmVyfSBwbmFtZQorICogQHJldHVybiB7Kn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlciA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpIHt9
OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgKiBAcGFyYW0ge251
bWJlcn0gcG5hbWUKKyAqIEByZXR1cm4geyp9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRQcm9ncmFtUGFyYW1ldGVyID0gZnVu
Y3Rpb24oCisgICAgcHJvZ3JhbSwgcG5hbWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xQ
cm9ncmFtfSBwcm9ncmFtCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKiBAbm9zaWRlZWZmZWN0cwor
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRQcm9ncmFtSW5mb0xv
ZyA9IGZ1bmN0aW9uKHByb2dyYW0pIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJn
ZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBwbmFtZQorICogQHJldHVybiB7Kn0KKyAqIEBub3NpZGVl
ZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlciA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgcG5hbWUpIHt9OworCisv
KioKKyAqIEBwYXJhbSB7V2ViR0xTaGFkZXJ9IHNoYWRlcgorICogQHBhcmFtIHtudW1iZXJ9IHBu
YW1lCisgKiBAcmV0dXJuIHsqfQorICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0U2hhZGVyUGFyYW1ldGVyID0gZnVuY3Rpb24oc2hh
ZGVyLCBwbmFtZSkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHNoYWRlcnR5cGUKKyAq
IEBwYXJhbSB7bnVtYmVyfSBwcmVjaXNpb250eXBlCisgKiBAcmV0dXJuIHtXZWJHTFNoYWRlclBy
ZWNpc2lvbkZvcm1hdH0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA9IGZ1bmN0aW9uKHNo
YWRlcnR5cGUsCisgICAgcHJlY2lzaW9udHlwZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJH
TFNoYWRlcn0gc2hhZGVyCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKiBAbm9zaWRlZWZmZWN0cwor
ICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRTaGFkZXJJbmZvTG9n
ID0gZnVuY3Rpb24oc2hhZGVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU2hhZGVyfSBz
aGFkZXIKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldFNoYWRlclNvdXJjZSA9IGZ1bmN0aW9u
KHNoYWRlcikge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFt
IHtudW1iZXJ9IHBuYW1lCisgKiBAcmV0dXJuIHsqfQorICogQG5vc2lkZWVmZmVjdHMKKyAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0VGV4UGFyYW1ldGVyID0gZnVu
Y3Rpb24odGFyZ2V0LCBwbmFtZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19
IHByb2dyYW0KKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBA
cmV0dXJuIHsqfQorICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuZ2V0VW5pZm9ybSA9IGZ1bmN0aW9uKHByb2dyYW0sIGxvY2F0aW9uKSB7
fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqIEByZXR1cm4ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufQorICogQG5vc2lk
ZWVmZmVjdHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0VW5p
Zm9ybUxvY2F0aW9uID0gZnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSkge307CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IGluZGV4CisgKiBAcGFyYW0ge251bWJlcn0gcG5hbWUKKyAqIEByZXR1cm4g
eyp9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5nZXRWZXJ0ZXhBdHRyaWIgPSBmdW5jdGlvbihpbmRleCwgcG5hbWUpIHt9OworCisv
KioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICogQHBhcmFtIHtudW1iZXJ9IHBuYW1lCisg
KiBAcmV0dXJuIHtudW1iZXJ9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgPSBmdW5jdGlvbigK
KyAgICBpbmRleCwgcG5hbWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQK
KyAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLmhpbnQgPSBmdW5jdGlvbih0YXJnZXQsIG1vZGUpIHt9OworCisvKioKKyAqIEBw
YXJhbSB7V2ViR0xPYmplY3R9IGJ1ZmZlcgorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqIEBub3Np
ZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmlzQnVm
ZmVyID0gZnVuY3Rpb24oYnVmZmVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gY2Fw
CisgKiBAcmV0dXJuIHtib29sZWFufQorICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuaXNFbmFibGVkID0gZnVuY3Rpb24oY2FwKSB7fTsK
KworLyoqCisgKiBAcGFyYW0ge1dlYkdMT2JqZWN0fSBmcmFtZWJ1ZmZlcgorICogQHJldHVybiB7
Ym9vbGVhbn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmlzRnJhbWVidWZmZXIgPSBmdW5jdGlvbihmcmFtZWJ1ZmZlcikge307CisK
Ky8qKgorICogQHBhcmFtIHtXZWJHTE9iamVjdH0gcHJvZ3JhbQorICogQHJldHVybiB7Ym9vbGVh
bn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLmlzUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHt9OworCisvKioKKyAqIEBwYXJh
bSB7V2ViR0xPYmplY3R9IHJlbmRlcmJ1ZmZlcgorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqIEBu
b3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmlz
UmVuZGVyYnVmZmVyID0gZnVuY3Rpb24ocmVuZGVyYnVmZmVyKSB7fTsKKworLyoqCisgKiBAcGFy
YW0ge1dlYkdMT2JqZWN0fSBzaGFkZXIKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKiBAbm9zaWRl
ZWZmZWN0cworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5pc1NoYWRl
ciA9IGZ1bmN0aW9uKHNoYWRlcikge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTE9iamVjdH0g
dGV4dHVyZQorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmlzVGV4dHVyZSA9IGZ1bmN0aW9uKHRl
eHR1cmUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5saW5lV2lkdGggPSBmdW5jdGlvbih3aWR0aCkg
e307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0KKyAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUubGlua1Byb2dyYW0gPSBmdW5jdGlvbihwcm9n
cmFtKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gcG5hbWUKKyAqIEBwYXJhbSB7bnVt
YmVyfSBwYXJhbQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5waXhl
bFN0b3JlaSA9IGZ1bmN0aW9uKHBuYW1lLCBwYXJhbSkge307CisKKy8qKgorICogQHBhcmFtIHtu
dW1iZXJ9IGZhY3RvcgorICogQHBhcmFtIHtudW1iZXJ9IHVuaXRzCisgKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnBvbHlnb25PZmZzZXQgPSBmdW5jdGlvbihmYWN0b3Is
IHVuaXRzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1i
ZXJ9IHkKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdo
dAorICogQHBhcmFtIHtudW1iZXJ9IGZvcm1hdAorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUKKyAq
IEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3fSBwaXhlbHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUucmVhZFBpeGVscyA9IGZ1bmN0aW9uKAorICAgIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251
bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxmb3JtYXQKKyAqIEBwYXJh
bSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5yZW5kZXJidWZmZXJTdG9yYWdlID0gZnVuY3Rp
b24oCisgICAgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkge307CisKKy8q
KgorICogQHBhcmFtIHtudW1iZXJ9IGNvdmVyYWdlCisgKiBAcGFyYW0ge2Jvb2xlYW59IGludmVy
dAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5zYW1wbGVDb3ZlcmFn
ZSA9IGZ1bmN0aW9uKGNvdmVyYWdlLCBpbnZlcnQpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisg
KiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLnNjaXNzb3IgPSBmdW5jdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7fTsKKwor
LyoqCisgKiBAcGFyYW0ge1dlYkdMU2hhZGVyfSBzaGFkZXIKKyAqIEBwYXJhbSB7c3RyaW5nfSBz
b3VyY2UKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuc2hhZGVyU291
cmNlID0gZnVuY3Rpb24oc2hhZGVyLCBzb3VyY2UpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSBmdW5jCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisgKiBAcGFyYW0ge251bWJlcn0gbWFz
aworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5zdGVuY2lsRnVuYyA9
IGZ1bmN0aW9uKGZ1bmMsIHJlZiwgbWFzaykge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9
IGZhY2UKKyAqIEBwYXJhbSB7bnVtYmVyfSBmdW5jCisgKiBAcGFyYW0ge251bWJlcn0gcmVmCisg
KiBAcGFyYW0ge251bWJlcn0gbWFzaworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5zdGVuY2lsRnVuY1NlcGFyYXRlID0gZnVuY3Rpb24oCisgICAgZmFjZSwgZnVuYywg
cmVmLCBtYXNrKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gbWFzaworICovCitXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5zdGVuY2lsTWFzayA9IGZ1bmN0aW9uKG1h
c2spIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBmYWNlCisgKiBAcGFyYW0ge251bWJl
cn0gbWFzaworICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5zdGVuY2ls
TWFza1NlcGFyYXRlID0gZnVuY3Rpb24oZmFjZSwgbWFzaykge307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IGZhaWwKKyAqIEBwYXJhbSB7bnVtYmVyfSB6ZmFpbAorICogQHBhcmFtIHtudW1i
ZXJ9IHpwYXNzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnN0ZW5j
aWxPcCA9IGZ1bmN0aW9uKGZhaWwsIHpmYWlsLCB6cGFzcykge307CisKKy8qKgorICogQHBhcmFt
IHtudW1iZXJ9IGZhY2UKKyAqIEBwYXJhbSB7bnVtYmVyfSBmYWlsCisgKiBAcGFyYW0ge251bWJl
cn0gemZhaWwKKyAqIEBwYXJhbSB7bnVtYmVyfSB6cGFzcworICovCitXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5zdGVuY2lsT3BTZXBhcmF0ZSA9IGZ1bmN0aW9uKAorICAgIGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcykge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRh
cmdldAorICogQHBhcmFtIHtudW1iZXJ9IGxldmVsCisgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJu
YWxmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQgb3Igd2lkdGgKKyAqIEBwYXJhbSB7
bnVtYmVyfSB0eXBlIG9yIGhlaWdodAorICogQHBhcmFtIHtJbWFnZURhdGF8SFRNTEltYWdlRWxl
bWVudHxIVE1MQ2FudmFzRWxlbWVudHxIVE1MVmlkZW9FbGVtZW50fAorICogICAgIG51bWJlcn0g
aW1nIG9yIGJvcmRlcgorICogQHBhcmFtIHtudW1iZXI9fSBvcHRfZm9ybWF0CisgKiBAcGFyYW0g
e251bWJlcj19IG9wdF90eXBlCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlldz19IG9wdF9waXhl
bHMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudGV4SW1hZ2UyRCA9
IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5
cGUsIGltZywgb3B0X2Zvcm1hdCwgb3B0X3R5cGUsCisgICAgb3B0X3BpeGVscykge307CisKKy8q
KgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IHBuYW1lCisg
KiBAcGFyYW0ge251bWJlcn0gcGFyYW0KKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUudGV4UGFyYW1ldGVyZiA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgcG5hbWUsIHBh
cmFtKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251
bWJlcn0gcG5hbWUKKyAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbQorICovCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS50ZXhQYXJhbWV0ZXJpID0gZnVuY3Rpb24oCisgICAgdGFy
Z2V0LCBwbmFtZSwgcGFyYW0pIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQK
KyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICogQHBhcmFtIHtudW1iZXJ9IHhvZmZzZXQKKyAq
IEBwYXJhbSB7bnVtYmVyfSB5b2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0gZm9ybWF0IG9yIHdp
ZHRoCisgKiBAcGFyYW0ge251bWJlcn0gdHlwZSBvciBoZWlnaHQKKyAqIEBwYXJhbSB7SW1hZ2VE
YXRhfEhUTUxJbWFnZUVsZW1lbnR8SFRNTENhbnZhc0VsZW1lbnR8SFRNTFZpZGVvRWxlbWVudHwK
KyAqICAgICBudW1iZXJ9IGRhdGEgb3IgZm9ybWF0CisgKiBAcGFyYW0ge251bWJlcj19IG9wdF90
eXBlCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlldz19IG9wdF9waXhlbHMKKyAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudGV4U3ViSW1hZ2UyRCA9IGZ1bmN0aW9uKAor
ICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwgZGF0YSwg
b3B0X3R5cGUsCisgICAgb3B0X3BpeGVscykge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFVu
aWZvcm1Mb2NhdGlvbn0gbG9jYXRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlmb3JtMWYgPSBmdW5jdGlvbihs
b2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRp
b259IGxvY2F0aW9uCisgKiBAcGFyYW0ge0Zsb2F0MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFs
dWUKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybTFmdiA9
IGZ1bmN0aW9uKGxvY2F0aW9uLCB2YWx1ZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFVu
aWZvcm1Mb2NhdGlvbn0gbG9jYXRpb24KKyAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZQorICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlmb3JtMWkgPSBmdW5jdGlvbihs
b2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRp
b259IGxvY2F0aW9uCisgKiBAcGFyYW0ge0ludDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVl
CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0xaXYgPSBm
dW5jdGlvbihsb2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlm
b3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUxCisgKiBAcGFy
YW0ge251bWJlcn0gdmFsdWUyCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLnVuaWZvcm0yZiA9IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9uLCB2YWx1ZTEsIHZhbHVlMikg
e307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gbG9jYXRpb24KKyAq
IEBwYXJhbSB7RmxvYXQzMkFycmF5fEFycmF5LjxudW1iZXI+fSB2YWx1ZQorICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlmb3JtMmZ2ID0gZnVuY3Rpb24obG9jYXRp
b24sIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBs
b2NhdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlMQorICogQHBhcmFtIHtudW1iZXJ9IHZh
bHVlMgorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlmb3JtMmkg
PSBmdW5jdGlvbigKKyAgICBsb2NhdGlvbiwgdmFsdWUxLCB2YWx1ZTIpIHt9OworCisvKioKKyAq
IEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge0ludDMy
QXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLnVuaWZvcm0yaXYgPSBmdW5jdGlvbihsb2NhdGlvbiwgdmFsdWUpIHt9Owor
CisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFy
YW0ge251bWJlcn0gdmFsdWUxCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUyCisgKiBAcGFyYW0g
e251bWJlcn0gdmFsdWUzCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LnVuaWZvcm0zZiA9IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9uLCB2YWx1ZTEsIHZhbHVlMiwgdmFs
dWUzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlv
bgorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlCisgKi8KK1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0zZnYgPSBmdW5jdGlvbihs
b2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRp
b259IGxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUxCisgKiBAcGFyYW0ge251bWJl
cn0gdmFsdWUyCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUzCisgKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0zaSA9IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9u
LCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5p
Zm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtJbnQzMkFycmF5fEFycmF5LjxudW1i
ZXI+fSB2YWx1ZQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlm
b3JtM2l2ID0gZnVuY3Rpb24obG9jYXRpb24sIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0g
e1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IHZhbHVl
MQorICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlMgorICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlMwor
ICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlNAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS51bmlmb3JtNGYgPSBmdW5jdGlvbigKKyAgICBsb2NhdGlvbiwgdmFsdWUxLCB2
YWx1ZTIsIHZhbHVlMywgdmFsdWU0KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9y
bUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJl
cj59IHZhbHVlCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZv
cm00ZnYgPSBmdW5jdGlvbihsb2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7
V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUx
CisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUyCisgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUzCisg
KiBAcGFyYW0ge251bWJlcn0gdmFsdWU0CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLnVuaWZvcm00aSA9IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9uLCB2YWx1ZTEsIHZh
bHVlMiwgdmFsdWUzLCB2YWx1ZTQpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3Jt
TG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge0ludDMyQXJyYXl8QXJyYXkuPG51bWJlcj59
IHZhbHVlCisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm00
aXYgPSBmdW5jdGlvbihsb2NhdGlvbiwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2Vi
R0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59IHRyYW5zcG9z
ZQorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IGRhdGEKKyAqLworV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybU1hdHJpeDJmdiA9IGZ1bmN0
aW9uKAorICAgIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEpIHt9OworCisvKioKKyAqIEBwYXJh
bSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59IHRy
YW5zcG9zZQorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IGRhdGEKKyAq
LworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybU1hdHJpeDNmdiA9
IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEpIHt9OworCisvKioKKyAq
IEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge2Jvb2xl
YW59IHRyYW5zcG9zZQorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IGRh
dGEKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybU1hdHJp
eDRmdiA9IGZ1bmN0aW9uKAorICAgIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEpIHt9OworCisv
KioKKyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgKi8KK1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLnVzZVByb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFtKSB7fTsK
KworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICovCitXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS52YWxpZGF0ZVByb2dyYW0gPSBmdW5jdGlvbihwcm9n
cmFtKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gaW5keAorICogQHBhcmFtIHtudW1i
ZXJ9IHgKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVydGV4QXR0
cmliMWYgPSBmdW5jdGlvbihpbmR4LCB4KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0g
aW5keAorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlcworICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS52ZXJ0ZXhBdHRyaWIxZnYgPSBm
dW5jdGlvbihpbmR4LCB2YWx1ZXMpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmR4
CisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVydGV4QXR0cmliMmYgPSBmdW5jdGlvbigK
KyAgICBpbmR4LCB4LCB5KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gaW5keAorICog
QHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlcworICovCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS52ZXJ0ZXhBdHRyaWIyZnYgPSBmdW5jdGlvbigK
KyAgICBpbmR4LCB2YWx1ZXMpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmR4Cisg
KiBAcGFyYW0ge251bWJlcn0geAorICogQHBhcmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7bnVt
YmVyfSB6CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnZlcnRleEF0
dHJpYjNmID0gZnVuY3Rpb24oCisgICAgaW5keCwgeCwgeSwgeikge307CisKKy8qKgorICogQHBh
cmFtIHtudW1iZXJ9IGluZHgKKyAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fEFycmF5LjxudW1iZXI+
fSB2YWx1ZXMKKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVydGV4
QXR0cmliM2Z2ID0gZnVuY3Rpb24oaW5keCwgdmFsdWVzKSB7fTsKKworLyoqCisgKiBAcGFyYW0g
e251bWJlcn0gaW5keAorICogQHBhcmFtIHtudW1iZXJ9IHgKKyAqIEBwYXJhbSB7bnVtYmVyfSB5
CisgKiBAcGFyYW0ge251bWJlcn0gegorICogQHBhcmFtIHtudW1iZXJ9IHcKKyAqLworV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVydGV4QXR0cmliNGYgPSBmdW5jdGlvbigK
KyAgICBpbmR4LCB4LCB5LCB6LCB3KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gaW5k
eAorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlcworICovCitX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS52ZXJ0ZXhBdHRyaWI0ZnYgPSBmdW5j
dGlvbihpbmR4LCB2YWx1ZXMpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmR4Cisg
KiBAcGFyYW0ge251bWJlcn0gc2l6ZQorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUKKyAqIEBwYXJh
bSB7Ym9vbGVhbn0gbm9ybWFsaXplZAorICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICogQHBh
cmFtIHtudW1iZXJ9IG9mZnNldAorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS52ZXJ0ZXhBdHRyaWJQb2ludGVyID0gZnVuY3Rpb24oCisgICAgaW5keCwgc2l6ZSwgdHlw
ZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBvZmZzZXQpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVt
YmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisg
KiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKi8KK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLnZpZXdwb3J0ID0gZnVuY3Rpb24oeCwgeSwgd2lkdGgsIGhlaWdodCkge307CisK
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKi8KK2Z1bmN0aW9uIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMoKSB7fQorCisvKioKKyAqIEB0eXBlIHtib29sZWFufQorICovCitX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLnByb3RvdHlwZS5hbHBoYTsKKworLyoqCisgKiBAdHlwZSB7
Ym9vbGVhbn0KKyAqLworV2ViR0xDb250ZXh0QXR0cmlidXRlcy5wcm90b3R5cGUuZGVwdGg7CisK
Ky8qKgorICogQHR5cGUge2Jvb2xlYW59CisgKi8KK1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMucHJv
dG90eXBlLnN0ZW5jaWw7CisKKy8qKgorICogQHR5cGUge2Jvb2xlYW59CisgKi8KK1dlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMucHJvdG90eXBlLmFudGlhbGlhczsKKworLyoqCisgKiBAdHlwZSB7Ym9v
bGVhbn0KKyAqLworV2ViR0xDb250ZXh0QXR0cmlidXRlcy5wcm90b3R5cGUucHJlbXVsdGlwbGll
ZEFscGhhOworCisvKioKKyAqIEB0eXBlIHtib29sZWFufQorICovCitXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLnByb3RvdHlwZS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisKKworLyoqCisgKiBAcGFy
YW0ge3N0cmluZ30gZXZlbnRUeXBlCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKiBA
ZXh0ZW5kcyB7RXZlbnR9CisgKi8KK2Z1bmN0aW9uIFdlYkdMQ29udGV4dEV2ZW50KGV2ZW50VHlw
ZSkge30KKworLyoqCisgKiBAdHlwZSB7c3RyaW5nfQorICovCitXZWJHTENvbnRleHRFdmVudC5w
cm90b3R5cGUuc3RhdHVzTWVzc2FnZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5v
YWxpYXMKKyAqLworZnVuY3Rpb24gV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQoKSB7fQorCisv
KioKKyAqIEB0eXBlIHtudW1iZXJ9CisgKi8KK1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LnBy
b3RvdHlwZS5yYW5nZU1pbjsKKworLyoqCisgKiBAdHlwZSB7bnVtYmVyfQorICovCitXZWJHTFNo
YWRlclByZWNpc2lvbkZvcm1hdC5wcm90b3R5cGUucmFuZ2VNYXg7CisKKy8qKgorICogQHR5cGUg
e251bWJlcn0KKyAqLworV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQucHJvdG90eXBlLnByZWNp
c2lvbjsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqLworZnVuY3Rp
b24gV2ViR0xPYmplY3QoKSB7fQorCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlh
cworICogQGV4dGVuZHMge1dlYkdMT2JqZWN0fQorICovCitmdW5jdGlvbiBXZWJHTEJ1ZmZlcigp
IHt9CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKiBAZXh0ZW5kcyB7
V2ViR0xPYmplY3R9CisgKi8KK2Z1bmN0aW9uIFdlYkdMRnJhbWVidWZmZXIoKSB7fQorCisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICogQGV4dGVuZHMge1dlYkdMT2JqZWN0
fQorICovCitmdW5jdGlvbiBXZWJHTFByb2dyYW0oKSB7fQorCisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAbm9hbGlhcworICogQGV4dGVuZHMge1dlYkdMT2JqZWN0fQorICovCitmdW5jdGlv
biBXZWJHTFJlbmRlcmJ1ZmZlcigpIHt9CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBu
b2FsaWFzCisgKiBAZXh0ZW5kcyB7V2ViR0xPYmplY3R9CisgKi8KK2Z1bmN0aW9uIFdlYkdMU2hh
ZGVyKCkge30KKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqIEBleHRl
bmRzIHtXZWJHTE9iamVjdH0KKyAqLworZnVuY3Rpb24gV2ViR0xUZXh0dXJlKCkge30KKworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqLworZnVuY3Rpb24gV2ViR0xBY3Rp
dmVJbmZvKCkge30KKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTEFjdGl2ZUluZm8ucHJv
dG90eXBlLnNpemU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0xBY3RpdmVJbmZvLnBy
b3RvdHlwZS50eXBlOworCisvKiogQHR5cGUge3N0cmluZ30gKi8KK1dlYkdMQWN0aXZlSW5mby5w
cm90b3R5cGUubmFtZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAq
LworZnVuY3Rpb24gV2ViR0xVbmlmb3JtTG9jYXRpb24oKSB7fQorCisKKy8qKgorICogQHNlZSBo
dHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvT0VTX3RleHR1
cmVfZmxvYXQvCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKi8KK2Z1bmN0aW9uIE9F
U190ZXh0dXJlX2Zsb2F0KCkge30KKworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS93ZWJnbC9leHRlbnNpb25zL09FU190ZXh0dXJlX2hhbGZfZmxvYXQvCisg
KiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKi8KK2Z1bmN0aW9uIE9FU190ZXh0dXJlX2hh
bGZfZmxvYXQoKSB7fQorCisvKiogQHR5cGUge251bWJlcn0gKi8KK09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQucHJvdG90eXBlLkhBTEZfRkxPQVRfT0VTOworCisKKy8qKgorICogQHNlZSBodHRwOi8v
d3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvV0VCR0xfbG9zZV9jb250
ZXh0LworICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICovCitmdW5jdGlvbiBXRUJHTF9s
b3NlX2NvbnRleHQoKSB7fQorCitXRUJHTF9sb3NlX2NvbnRleHQucHJvdG90eXBlLmxvc2VDb250
ZXh0ID0gZnVuY3Rpb24oKSB7fTsKKworV0VCR0xfbG9zZV9jb250ZXh0LnByb3RvdHlwZS5yZXN0
b3JlQ29udGV4dCA9IGZ1bmN0aW9uKCkge307CisKKworLyoqCisgKiBAc2VlIGh0dHA6Ly93d3cu
a2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvZXh0ZW5zaW9ucy9PRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMvCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKi8KK2Z1bmN0aW9uIE9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcygpIHt9CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzLnByb3RvdHlwZS5GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9I
SU5UX09FUzsKKworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3Ry
eS93ZWJnbC9leHRlbnNpb25zL09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LworICogQGNvbnN0cnVj
dG9yCisgKiBAbm9hbGlhcworICogQGV4dGVuZHMge1dlYkdMT2JqZWN0fQorICovCitmdW5jdGlv
biBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkge30KKworCisvKioKKyAqIEBzZWUgaHR0cDov
L3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9leHRlbnNpb25zL09FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0LworICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICovCitmdW5jdGlvbiBP
RVNfdmVydGV4X2FycmF5X29iamVjdCgpIHt9CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QucHJvdG90eXBlLlZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUzsK
KworLyoqCisgKiBAcmV0dXJuIHtXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTfQorICogQG5vc2lk
ZWVmZmVjdHMKKyAqLworT0VTX3ZlcnRleF9hcnJheV9vYmplY3QucHJvdG90eXBlLmNyZWF0ZVZl
cnRleEFycmF5T0VTID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVN9IGFycmF5T2JqZWN0CisgKi8KK09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0LnByb3RvdHlwZS5kZWxldGVWZXJ0ZXhBcnJheU9FUyA9CisgICAgZnVuY3Rpb24oYXJyYXlP
YmplY3QpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FU30g
YXJyYXlPYmplY3QKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKiBAbm9zaWRlZWZmZWN0cworICov
CitPRVNfdmVydGV4X2FycmF5X29iamVjdC5wcm90b3R5cGUuaXNWZXJ0ZXhBcnJheU9FUyA9IGZ1
bmN0aW9uKGFycmF5T2JqZWN0KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVN9IGFycmF5T2JqZWN0CisgKi8KK09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LnBy
b3RvdHlwZS5iaW5kVmVydGV4QXJyYXlPRVMgPSBmdW5jdGlvbihhcnJheU9iamVjdCkge307CisK
KworLyoqCisgKiBAc2VlIGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvZXh0
ZW5zaW9ucy9XRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvLworICogQGNvbnN0cnVjdG9yCisgKiBA
bm9hbGlhcworICovCitmdW5jdGlvbiBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvKCkge30KKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvLnByb3RvdHlw
ZS5VTk1BU0tFRF9WRU5ET1JfV0VCR0w7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV0VCR0xf
ZGVidWdfcmVuZGVyZXJfaW5mby5wcm90b3R5cGUuVU5NQVNLRURfUkVOREVSRVJfV0VCR0w7CisK
KworLyoqCisgKiBAc2VlIGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvZXh0
ZW5zaW9ucy9XRUJHTF9kZWJ1Z19zaGFkZXJzLworICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlh
cworICovCitmdW5jdGlvbiBXRUJHTF9kZWJ1Z19zaGFkZXJzKCkge30KKworLyoqCisgKiBAcGFy
YW0ge1dlYkdMU2hhZGVyfSBzaGFkZXIKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqIEBub3NpZGVl
ZmZlY3RzCisgKi8KK1dFQkdMX2RlYnVnX3NoYWRlcnMucHJvdG90eXBlLmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2UgPSBmdW5jdGlvbihzaGFkZXIpIHt9OworCisKKy8qKgorICogQHNlZSBodHRw
Oi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX3MzdGMvCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFzCisgKi8KK2Z1
bmN0aW9uIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjKCkge30KKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Yy5wcm90b3R5cGUuQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfczN0Yy5wcm90b3R5cGUuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3MzdGMucHJvdG90eXBlLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjLnByb3RvdHlwZS5D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDsKKworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3
dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9leHRlbnNpb25zL09FU19kZXB0aF90ZXh0dXJl
LworICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICovCitmdW5jdGlvbiBPRVNfZGVwdGhf
dGV4dHVyZSgpIHt9CisKKworLyoqCisgKiBAc2VlIGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVn
aXN0cnkvd2ViZ2wvZXh0ZW5zaW9ucy9PRVNfZWxlbWVudF9pbmRleF91aW50LworICogQGNvbnN0
cnVjdG9yCisgKiBAbm9hbGlhcworICovCitmdW5jdGlvbiBPRVNfZWxlbWVudF9pbmRleF91aW50
KCkge30KKworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93
ZWJnbC9leHRlbnNpb25zL0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYy8KKyAqIEBjb25z
dHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqLworZnVuY3Rpb24gRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljKCkge30KKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMucHJvdG90eXBlLlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYy5wcm90
b3R5cGUuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOworCisKKworLyoqCisgKiBAc2Vl
IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvZXh0ZW5zaW9ucy9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzLworICogQGNvbnN0cnVjdG9yCisgKiBAbm9hbGlhcworICovCitmdW5j
dGlvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzKCkge30KKworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK0FOR0xFX2luc3RhbmNlZF9hcnJheXMucHJvdG90eXBlLlZFUlRFWF9BVFRSSUJfQVJSQVlf
RElWSVNPUl9BTkdMRTsKKworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlIFByaW1pdGl2
ZSB0eXBlLgorICogQHBhcmFtIHtudW1iZXJ9IGZpcnN0IEZpcnN0IHZlcnRleC4KKyAqIEBwYXJh
bSB7bnVtYmVyfSBjb3VudCBOdW1iZXIgb2YgdmVydGljZXMgcGVyIGluc3RhbmNlLgorICogQHBh
cmFtIHtudW1iZXJ9IHByaW1jb3VudCBOdW1iZXIgb2YgaW5zdGFuY2VzLgorICovCitBTkdMRV9p
bnN0YW5jZWRfYXJyYXlzLnByb3RvdHlwZS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSBmdW5j
dGlvbigKKyAgICBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkge307CisKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gbW9kZSBQcmltaXRpdmUgdHlwZS4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBjb3VudCBOdW1iZXIgb2YgdmVydGV4IGluZGljZXMgcGVyIGluc3RhbmNlLgorICogQHBhcmFt
IHtudW1iZXJ9IHR5cGUgVHlwZSBvZiBhIHZlcnRleCBpbmRleC4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBvZmZzZXQgT2Zmc2V0IHRvIHRoZSBmaXJzdCB2ZXJ0ZXggaW5kZXguCisgKiBAcGFyYW0ge251
bWJlcn0gcHJpbWNvdW50IE51bWJlciBvZiBpbnN0YW5jZXMuCisgKi8KK0FOR0xFX2luc3RhbmNl
ZF9hcnJheXMucHJvdG90eXBlLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gZnVuY3Rpb24o
CisgICAgbW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KSB7fTsKKworCisvKioK
KyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBBdHRyaWJ1dGUgaW5kZXguCisgKiBAcGFyYW0ge251
bWJlcn0gZGl2aXNvciBJbnN0YW5jZSBkaXZpc29yLgorICovCitBTkdMRV9pbnN0YW5jZWRfYXJy
YXlzLnByb3RvdHlwZS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSBmdW5jdGlvbigKKyAgICBp
bmRleCwgZGl2aXNvcikge307CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBub2FsaWFz
CisgKiBAZXh0ZW5kcyB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0KKyAqLworZnVuY3Rpb24g
V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkge30KKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QHByaXZhdGUKKyAqIEBub2FsaWFzCisgKiBAZXh0ZW5kcyB7V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZX0KKyAqLworZnVuY3Rpb24gV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UoKSB7fQorCisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkVBRF9C
VUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UuVU5QQUNLX1JPV19MRU5HVEg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UuVU5QQUNLX1NLSVBfUk9XUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTlBBQ0tfU0tJUF9QSVhFTFM7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUEFDS19ST1df
TEVOR1RIOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLlBBQ0tfU0tJUF9ST1dTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLlBBQ0tfU0tJUF9QSVhFTFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuQ09MT1I7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEg7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU1RFTkNJTDsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SRUQ7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCODsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SR0JBODsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SR0IxMF9BMjsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhU
VVJFX0JJTkRJTkdfM0Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuVU5QQUNLX1NLSVBfSU1BR0VTOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOUEFDS19JTUFHRV9IRUlHSFQ7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV8zRDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhU
VVJFX1dSQVBfUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5NQVhfM0RfVEVYVFVSRV9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfRUxF
TUVOVFNfVkVSVElDRVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuTUFYX0VMRU1FTlRTX0lORElDRVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9NSU5fTE9EOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfTUFYX0xP
RDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5U
RVhUVVJFX0JBU0VfTEVWRUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UuVEVYVFVSRV9NQVhfTEVWRUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUlOOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWDsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9DT01QT05FTlQyNDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfVEVYVFVS
RV9MT0RfQklBUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5URVhUVVJFX0NPTVBBUkVfTU9ERTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5URVhUVVJFX0NPTVBBUkVfRlVOQzsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DVVJSRU5UX1FVRVJZ
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlFV
RVJZX1JFU1VMVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNUUkVBTV9SRUFEOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNUUkVBTV9DT1BZOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNUQVRJQ19SRUFE
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNU
QVRJQ19DT1BZOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLkRZTkFNSUNfUkVBRDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5EWU5BTUlDX0NPUFk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX0RSQVdfQlVGRkVSUzsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjA7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRFJBV19C
VUZGRVIxOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLkRSQVdfQlVGRkVSMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRFJBV19CVUZGRVI0OworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkRSQVdfQlVGRkVSNTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjY7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRFJB
V19CVUZGRVI3OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLkRSQVdfQlVGRkVSODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRFJBV19CVUZGRVIxMDsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjExOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkRSQVdfQlVG
RkVSMTI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UuRFJBV19CVUZGRVIxMzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5EUkFXX0JVRkZFUjE0OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkRSQVdfQlVGRkVSMTU7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
Q09NUE9ORU5UUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5TQU1QTEVSXzNEOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNBTVBMRVJfMkRfU0hB
RE9XOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUElYRUxfUEFDS19CVUZGRVI7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUElYRUxfVU5QQUNL
X0JVRkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5GTE9B
VF9NQVQyeDM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UuRkxPQVRfTUFUMng0OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLkZMT0FUX01BVDN4MjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5GTE9BVF9NQVQzeDQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRkxPQVRfTUFUNHgyOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkZMT0FUX01BVDR4
MzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5T
UkdCOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LlNSR0I4OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLlNSR0I4X0FMUEhBODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5DT01QQVJFX1JFRl9UT19URVhUVVJFOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkEzMkY7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCMzJGOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkExNkY7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCMTZGOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlZFUlRF
WF9BVFRSSUJfQVJSQVlfSU5URUdFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlM7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUlOX1BST0dSQU1fVEVY
RUxfT0ZGU0VUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLk1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfVkFSWUlOR19DT01QT05FTlRTOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlRFWFRVUkVf
MkRfQVJSQVk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UuVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlIxMUZfRzExRl9CMTBGOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX0lOVF8xMEZf
MTFGXzExRl9SRVY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuUkdCOV9FNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9NT0RFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUzsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5UUkFOU0ZPUk1f
RkVFREJBQ0tfVkFSWUlOR1M7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UuVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SQVNURVJJ
WkVSX0RJU0NBUkQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9U
UkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5JTlRFUkxFQVZFRF9BVFRSSUJTOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlNFUEFSQVRF
X0FUVFJJQlM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJ
TkRJTkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UuUkdCQTMyVUk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuUkdCMzJVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5SR0JBMTZVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5SR0IxNlVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkE4VUk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCOFVJOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkEzMkk7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCMzJJOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkExNkk7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCMTZJOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQkE4
STsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5S
R0I4STsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFz
ZS5SRURfSU5URUdFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5SR0JfSU5URUdFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5SR0JBX0lOVEVHRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU0FNUExFUl8yRF9BUlJBWTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5TQU1QTEVSXzJEX0FS
UkFZX1NIQURPVzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5TQU1QTEVSX0NVQkVfU0hBRE9XOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX0lOVF9WRUMyOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkVEX0lOVF9WRUMz
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVO
U0lHTkVEX0lOVF9WRUM0OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLklOVF9TQU1QTEVSXzJEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLklOVF9TQU1QTEVSXzNEOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLklOVF9TQU1QTEVSX0NVQkU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuSU5UX1NB
TVBMRVJfMkRfQVJSQVk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5T
SUdORURfSU5UX1NBTVBMRVJfQ1VCRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWTsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5ERVBUSF9DT01Q
T05FTlQzMkY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UuREVQVEgzMkZfU1RFTkNJTDg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UuRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05F
TlRfVFlQRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
R1JFRU5fU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRTsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0FMUEhBX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfU1RFTkNJTF9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLkZSQU1FQlVGRkVSX0RFRkFVTFQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LkRFUFRIX1NURU5DSUw7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuVU5TSUdORURfSU5UXzI0Xzg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuREVQVEgyNF9TVEVOQ0lMODsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTlNJR05FRF9OT1JNQUxJ
WkVEOworCisvLyBTYW1lIGFzIEZSQU1FQlVGRkVSX0JJTkRJTkcKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5H
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJF
QURfRlJBTUVCVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuRFJBV19GUkFNRUJVRkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkc7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkVOREVSQlVG
RkVSX1NBTVBMRVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9DT0xPUl9BVFRB
Q0hNRU5UUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5DT0xPUl9BVFRBQ0hNRU5UMTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UMjsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UMzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9B
VFRBQ0hNRU5UNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UNjsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UNzsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xP
Ul9BVFRBQ0hNRU5UODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UOTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UMTA7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuQ09MT1JfQVRUQUNITUVO
VDExOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LkNPTE9SX0FUVEFDSE1FTlQxMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5DT0xPUl9BVFRBQ0hNRU5UMTM7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuQ09MT1JfQVRUQUNITUVOVDE0OworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkNPTE9SX0FU
VEFDSE1FTlQxNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9TQU1QTEVTOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkhBTEZfRkxP
QVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Ukc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
UkdfSU5URUdFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5SODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5SRzg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuUjE2RjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5SMzJGOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLlJHMTZGOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLlJHMzJGOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLlI4STsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5SOFVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRCYXNlLlIxNkk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUjE2VUk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUjMySTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SMzJVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SRzhJOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHOFVJOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHMTZJOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHMTZVSTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SRzMySTsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5SRzMyVUk7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVkVSVEVY
X0FSUkFZX0JJTkRJTkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuUjhfU05PUk07CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UuUkc4X1NOT1JNOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQjhfU05PUk07CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuUkdCQThfU05PUk07CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU0lHTkVEX05PUk1BTEla
RUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Q09QWV9SRUFEX0JVRkZFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5DT1BZX1dSSVRFX0JVRkZFUjsKKworLy8gU2FtZSBhcyBDT1BZX1JFQURf
QlVGRkVSCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LkNPUFlfUkVBRF9CVUZGRVJfQklORElORzsKKworLy8gU2FtZSBhcyBDT1BZX1dSSVRFX0JVRkZF
UgorLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5DT1BZ
X1dSSVRFX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLlVOSUZPUk1fQlVGRkVSOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9S
TV9CVUZGRVJfU1RBUlQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuVU5JRk9STV9CVUZGRVJfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9G
UkFHTUVOVF9VTklGT1JNX0JMT0NLUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1M7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX1VOSUZPUk1f
QlVGRkVSX0JJTkRJTkdTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLk1BWF9VTklGT1JNX0JMT0NLX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklG
T1JNX0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTklGT1JN
X0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRCYXNlLkFDVElWRV9VTklGT1JNX0JMT0NLUzsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTklGT1JNX1RZUEU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9S
TV9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLlVOSUZPUk1fQkxPQ0tfSU5ERVg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9STV9PRkZTRVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9STV9BUlJBWV9TVFJJREU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9S
TV9NQVRSSVhfU1RSSURFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLlVOSUZPUk1fSVNfUk9XX01BSk9SOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOSUZPUk1fQkxPQ0tfQklORElORzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTklGT1JN
X0JMT0NLX0RBVEFfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5VTklGT1JNX0JMT0NLX0FD
VElWRV9VTklGT1JNX0lORElDRVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UuVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFE
RVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUjsKKworLyoqIEB0eXBl
IHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5JTlZBTElEX0lOREVYOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9W
RVJURVhfT1VUUFVUX0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFM7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuTUFYX1NFUlZF
Ul9XQUlUX1RJTUVPVVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuT0JKRUNUX1RZUEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UuU1lOQ19DT05ESVRJT047CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU1lOQ19TVEFUVVM7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU1lOQ19GTEFHUzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5TWU5DX0ZF
TkNFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlVOU0lHTkFMRUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuU0lHTkFMRUQ7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuQUxSRUFEWV9TSUdOQUxFRDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5USU1F
T1VUX0VYUElSRUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UuQ09ORElUSU9OX1NBVElTRklFRDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5XQUlUX0ZBSUxFRDsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJ
VDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5W
RVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1I7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuQU5ZX1NBTVBMRVNfUEFTU0VEOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLkFOWV9TQU1QTEVTX1BBU1NF
RF9DT05TRVJWQVRJVkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UuU0FNUExFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlJHQjEwX0EyVUk7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuSU5UXzJfMTBfMTBfMTBfUkVWOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlRSQU5TRk9S
TV9GRUVEQkFDSzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UuVFJB
TlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UuVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLk1BWF9FTEVNRU5UX0lO
REVYOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
Lk5VTV9TQU1QTEVfQ09VTlRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5USU1FT1VUX0lHTk9SRUQ7CisK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuUkVBRF9CVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOUEFDS19ST1dfTEVOR1RIOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlBBQ0tf
U0tJUF9ST1dTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5VTlBBQ0tfU0tJUF9QSVhFTFM7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlBBQ0tfUk9XX0xFTkdU
SDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuUEFDS19TS0lQX1JPV1M7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlBBQ0tfU0tJUF9QSVhFTFM7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNP
TE9SOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5ERVBUSDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RFTkNJTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkVEOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0I4Owor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5SR0JBODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuUkdCMTBfQTI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfQklORElOR18zRDsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVU5QQUNLX1NLSVBfSU1BR0VTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlBBQ0tfSU1BR0VfSEVJR0hUOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5U
RVhUVVJFXzNEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5URVhUVVJFX1dSQVBfUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYXzNEX1RFWFRVUkVfU0la
RTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfRUxFTUVOVFNf
VkVSVElDRVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLk1BWF9FTEVNRU5UU19JTkRJQ0VTOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5URVhUVVJFX01JTl9M
T0Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLlRFWFRVUkVfTUFYX0xPRDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9CQVNFX0xFVkVMOworCisv
KiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5URVhUVVJFX01BWF9MRVZFTDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUlOOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVg7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRFUFRIX0NP
TVBPTkVOVDI0OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5NQVhfVEVYVFVSRV9MT0RfQklBUzsKKworLyoqIEB0eXBlIHtudW1i
ZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9DT01Q
QVJFX01PREU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfQ09NUEFSRV9GVU5DOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DVVJSRU5UX1FVRVJZ
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5RVUVSWV9SRVNVTFQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlFVRVJZX1JFU1VMVF9BVkFJTEFCTEU7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlNUUkVBTV9SRUFEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5TVFJFQU1fQ09QWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1RBVElDX1JFQUQ7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlNUQVRJQ19DT1BZOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5EWU5BTUlDX1JFQUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRZTkFNSUNfQ09QWTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuTUFYX0RSQVdfQlVGRkVSUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRFJBV19CVUZGRVIwOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JVRkZF
UjE7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkRSQVdfQlVGRkVSMjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRFJBV19CVUZGRVIzOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JV
RkZFUjQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLkRSQVdfQlVGRkVSNTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRFJBV19CVUZGRVI2OworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFX
X0JVRkZFUjc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLkRSQVdfQlVGRkVSODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRFJBV19CVUZGRVI5OworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5E
UkFXX0JVRkZFUjEwOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JVRkZFUjExOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JVRkZFUjEyOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5EUkFXX0JVRkZFUjEzOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JVRkZFUjE0OworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0JVRkZF
UjE1OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfVkVS
VEVYX1VOSUZPUk1fQ09NUE9ORU5UUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU0FNUExFUl8zRDsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU0FNUExFUl8y
RF9TSEFET1c7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQ7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlBJ
WEVMX1BBQ0tfQlVGRkVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5QSVhFTF9VTlBBQ0tfQlVGRkVSOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5QSVhFTF9Q
QUNLX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLkZMT0FUX01BVDJ4MzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRkxPQVRfTUFUMng0OworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GTE9BVF9NQVQzeDI7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLkZMT0FUX01BVDN4NDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRkxPQVRfTUFUNHgyOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GTE9BVF9NQVQ0
eDM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLlNSR0I7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlNSR0I4OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TUkdCOF9BTFBIQTg7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNP
TVBBUkVfUkVGX1RPX1RFWFRVUkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHQkEzMkY7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHQjMyRjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
UkdCQTE2RjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuUkdCMTZGOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLk1BWF9BUlJBWV9URVhUVVJFX0xBWUVSUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUlOX1BST0dSQU1fVEVYRUxf
T0ZGU0VUOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQ7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9WQVJZSU5H
X0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfMkRfQVJSQVk7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRFWFRVUkVfQklORElO
R18yRF9BUlJBWTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuUjExRl9HMTFGX0IxMEY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX0lOVF8xMEZf
MTFGXzExRl9SRVY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlJHQjlfRTU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX0lOVF81XzlfOV85X1JF
VjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfVFJBTlNG
T1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRSQU5TRk9STV9GRUVEQkFD
S19WQVJZSU5HUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5UUkFOU0ZPUk1fRkVFREJBQ0tf
UFJJTUlUSVZFU19XUklUVEVOOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SQVNURVJJWkVSX0RJU0NBUkQ7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9U
UkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYX1RSQU5T
Rk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5JTlRFUkxFQVZFRF9BVFRSSUJT
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5TRVBBUkFURV9BVFRSSUJTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHQkEzMlVJ
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5SR0IzMlVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0JBMTZVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdCMTZVSTsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdC
QThVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuUkdCOFVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0JBMzJJOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0IzMkk7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJH
QkExNkk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLlJHQjE2STsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdCQThJOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0I4STsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkVE
X0lOVEVHRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlJHQl9JTlRFR0VSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SR0JBX0lOVEVHRVI7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNB
TVBMRVJfMkRfQVJSQVk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TQU1Q
TEVSX0NVQkVfU0hBRE9XOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlNJR05FRF9JTlRfVkVDMjsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5TSUdORURf
SU5UX1ZFQzM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX0lOVF9WRUM0OworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5JTlRfU0FNUExFUl8yRDsK
KworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuSU5UX1NBTVBMRVJfM0Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLklOVF9TQU1QTEVSX0NVQkU7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLklOVF9T
QU1QTEVSXzJEX0FSUkFZOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlNJR05FRF9JTlRfU0FNUExFUl8yRDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5T
SUdORURfSU5UX1NBTVBMRVJfM0Q7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLlVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5ERVBUSF9DT01QT05FTlQz
MkY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLkRFUFRIMzJGX1NURU5DSUw4OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GTE9BVF8zMl9VTlNJR05FRF9JTlRf
MjRfOF9SRVY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfUkVEX1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JF
RU5fU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9ERVBUSF9TSVpFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0la
RTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuRlJBTUVCVUZGRVJfREVGQVVMVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5ERVBUSF9TVEVOQ0lMOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTlNJR05FRF9JTlRfMjRfODsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
REVQVEgyNF9TVEVOQ0lMODsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5TSUdORURfTk9STUFMSVpFRDsKKworLy8gU2FtZSBh
cyBGUkFNRUJVRkZFUl9CSU5ESU5HCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkc7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlJFQURfRlJBTUVCVUZGRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkRSQVdfRlJBTUVCVUZGRVI7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJFQURfRlJB
TUVCVUZGRVJfQklORElORzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkVOREVSQlVGRkVSX1NBTVBMRVM7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYX0NPTE9SX0FUVEFDSE1F
TlRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5DT0xPUl9BVFRBQ0hNRU5UMTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09MT1JfQVRUQUNITUVOVDI7CisK
Ky8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90
eXBlLkNPTE9SX0FUVEFDSE1FTlQzOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DT0xPUl9BVFRBQ0hNRU5UNDsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09M
T1JfQVRUQUNITUVOVDU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLkNPTE9SX0FUVEFDSE1FTlQ2OworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DT0xPUl9BVFRB
Q0hNRU5UNzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuQ09MT1JfQVRUQUNITUVOVDg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTE9SX0FUVEFDSE1FTlQ5
OworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS5DT0xPUl9BVFRBQ0hNRU5UMTA7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTE9SX0FUVEFDSE1FTlQxMTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuQ09MT1JfQVRUQUNITUVOVDEyOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DT0xPUl9BVFRBQ0hNRU5UMTM7CisKKy8qKiBA
dHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNP
TE9SX0FUVEFDSE1FTlQxNDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuQ09MT1JfQVRUQUNITUVOVDE1OworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfU0FNUExFUzsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuSEFM
Rl9GTE9BVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuUkc7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHX0lOVEVHRVI7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlI4OworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SRzg7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLlIxNkY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlIzMkY7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHMTZGOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SRzMyRjsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
UjhJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5SOFVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5SMTZJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SMTZVSTsKKworLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUjMySTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuUjMyVUk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlJHOEk7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHOFVJOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5SRzE2STsKKworLyoqIEB0
eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkcx
NlVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5SRzMySTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkczMlVJOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5WRVJURVhfQVJSQVlfQklORElO
RzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuUjhfU05PUk07CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlJHOF9TTk9STTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuUkdCOF9TTk9STTsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuUkdCQThfU05PUk07CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLlNJR05FRF9OT1JNQUxJWkVEOworCisvKiogQHR5cGUge251
bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5DT1BZX1JFQURf
QlVGRkVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5DT1BZX1dSSVRFX0JVRkZFUjsKKworLy8gU2FtZSBhcyBDT1BZX1JFQURf
QlVGRkVSCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc7CisKKy8vIFNhbWUgYXMgQ09QWV9X
UklURV9CVUZGRVIKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLkNPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkc7CisKKy8qKiBAdHlwZSB7
bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOSUZPUk1f
QlVGRkVSOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRC
YXNlLnByb3RvdHlwZS5VTklGT1JNX0JVRkZFUl9CSU5ESU5HOworCisvKiogQHR5cGUge251bWJl
cn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTklGT1JNX0JVRkZF
Ul9TVEFSVDsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuVU5JRk9STV9CVUZGRVJfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYX1ZFUlRFWF9VTklG
T1JNX0JMT0NLUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTOworCisvKiogQHR5
cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhf
Q09NQklORURfVU5JRk9STV9CTE9DS1M7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5H
UzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5w
cm90b3R5cGUuTUFYX1VOSUZPUk1fQkxPQ0tfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuTUFYX0NPTUJJTkVEX1ZFUlRF
WF9VTklGT1JNX0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JN
X0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQ7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LkFDVElWRV9VTklGT1JNX0JMT0NLUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5JRk9STV9UWVBFOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5VTklGT1JN
X1NJWkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLlVOSUZPUk1fQkxPQ0tfSU5ERVg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOSUZPUk1fT0ZGU0VUOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5VTklGT1JNX0FSUkFZX1NUUklERTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5JRk9STV9NQVRSSVhfU1RSSURFOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5VTklGT1JNX0lTX1JPV19NQUpPUjsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5JRk9STV9CTE9DS19CSU5ESU5HOwor
CisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5VTklGT1JNX0JMT0NLX0RBVEFfU0laRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVU5JRk9STV9CTE9DS19BQ1RJVkVf
VU5JRk9STVM7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI7CisKKy8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlVOSUZP
Uk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLklOVkFMSURfSU5E
RVg7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLk1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFM7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9GUkFHTUVO
VF9JTlBVVF9DT01QT05FTlRTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5NQVhfU0VSVkVSX1dBSVRfVElNRU9VVDsKKworLyoq
IEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUu
T0JKRUNUX1RZUEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLlNZTkNfQ09ORElUSU9OOworCisvKiogQHR5cGUge251bWJlcn0g
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TWU5DX1NUQVRVUzsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuU1lOQ19GTEFHUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuU1lOQ19GRU5DRTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuU1lOQ19HUFVfQ09NTUFORFNf
Q09NUExFVEU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLlVOU0lHTkFMRUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNJR05BTEVEOworCisvKiogQHR5cGUg
e251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5BTFJFQURZ
X1NJR05BTEVEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5USU1FT1VUX0VYUElSRUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLkNPTkRJVElPTl9TQVRJU0ZJ
RUQ7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLldBSVRfRkFJTEVEOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVDsKKwor
LyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUuVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOworCisvKiogQHR5cGUge251bWJlcn0gKi8K
K1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5BTllfU0FNUExFU19QQVNTRUQ7
CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU7CisKKy8qKiBAdHlwZSB7bnVt
YmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlNBTVBMRVJfQklO
RElORzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuUkdCMTBfQTJVSTsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuSU5UXzJfMTBfMTBfMTBfUkVWOworCisvKiog
QHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5U
UkFOU0ZPUk1fRkVFREJBQ0s7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQ7CisKKy8q
KiBAdHlwZSB7bnVtYmVyfSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU7CisKKy8qKiBAdHlwZSB7bnVtYmVyfSAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLlRSQU5TRk9STV9GRUVEQkFDS19CSU5E
SU5HOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ7CisKKy8qKiBAdHlwZSB7bnVtYmVy
fSAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLk1BWF9FTEVNRU5UX0lO
REVYOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5OVU1fU0FNUExFX0NPVU5UUzsKKworLyoqIEB0eXBlIHtudW1iZXJ9ICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuVEVYVFVSRV9JTU1VVEFCTEVfTEVW
RUxTOworCisvKiogQHR5cGUge251bWJlcn0gKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNl
LnByb3RvdHlwZS5USU1FT1VUX0lHTk9SRUQ7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
bm9hbGlhcworICogQGV4dGVuZHMge1dlYkdMT2JqZWN0fQorICovCitmdW5jdGlvbiBXZWJHTFF1
ZXJ5KCkge30KKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqIEBleHRl
bmRzIHtXZWJHTE9iamVjdH0KKyAqLworZnVuY3Rpb24gV2ViR0xTYW1wbGVyKCkge30KKworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqIEBleHRlbmRzIHtXZWJHTE9iamVj
dH0KKyAqLworZnVuY3Rpb24gV2ViR0xTeW5jKCkge30KKworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQG5vYWxpYXMKKyAqIEBleHRlbmRzIHtXZWJHTE9iamVjdH0KKyAqLworZnVuY3Rpb24g
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpIHt9CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBub2FsaWFzCisgKiBAZXh0ZW5kcyB7V2ViR0xPYmplY3R9CisgKi8KK2Z1bmN0aW9uIFdlYkdM
VmVydGV4QXJyYXlPYmplY3QoKSB7fQorCisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdl
dAorICogQHBhcmFtIHtXZWJHTFF1ZXJ5fSBxdWVyeQorICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuYmVnaW5RdWVyeSA9IGZ1bmN0aW9uKHRhcmdldCwgcXVlcnkpIHt9
OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBwcmltaXRpdmVNb2RlCisgKi8KK1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5iZWdpblRyYW5zZm9ybUZlZWRiYWNrID0gZnVu
Y3Rpb24ocHJpbWl0aXZlTW9kZSkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdl
dAorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgKiBAcGFyYW0ge1dlYkdMQnVmZmVyfSBidWZm
ZXIKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmJpbmRCdWZmZXJC
YXNlID0gZnVuY3Rpb24odGFyZ2V0LCBpbmRleCwgYnVmZmVyKSB7fTsKKworLyoqCisgKiBAcGFy
YW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKKyAqIEBwYXJhbSB7
V2ViR0xCdWZmZXJ9IGJ1ZmZlcgorICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICogQHBhcmFt
IHtudW1iZXJ9IHNpemUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LmJpbmRCdWZmZXJSYW5nZSA9IGZ1bmN0aW9uKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0
LCBzaXplKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdW5pdAorICogQHBhcmFtIHtX
ZWJHTFNhbXBsZXJ9IHNhbXBsZXIKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLmJpbmRTYW1wbGVyID0gZnVuY3Rpb24odW5pdCwgc2FtcGxlcikge307CisKKy8qKgor
ICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrfSBpZAorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYmluZFRy
YW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24odGFyZ2V0LCBpZCkge307CisKKy8qKgorICogQHBh
cmFtIHtXZWJHTFZlcnRleEFycmF5T2JqZWN0fSBhcnJheQorICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuYmluZFZlcnRleEFycmF5ID0gZnVuY3Rpb24oYXJyYXkpIHt9
OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBzcmNYMAorICogQHBhcmFtIHtudW1iZXJ9IHNy
Y1kwCisgKiBAcGFyYW0ge251bWJlcn0gc3JjWDEKKyAqIEBwYXJhbSB7bnVtYmVyfSBzcmNZMQor
ICogQHBhcmFtIHtudW1iZXJ9IGRzdFgwCisgKiBAcGFyYW0ge251bWJlcn0gZHN0WTAKKyAqIEBw
YXJhbSB7bnVtYmVyfSBkc3RYMQorICogQHBhcmFtIHtudW1iZXJ9IGRzdFkxCisgKiBAcGFyYW0g
e251bWJlcn0gbWFzaworICogQHBhcmFtIHtudW1iZXJ9IGZpbHRlcgorICovCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuYmxpdEZyYW1lYnVmZmVyID0gZnVuY3Rpb24oCisg
ICAgc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwKKyAgICBkc3RYMSwg
ZHN0WTEsIG1hc2ssIGZpbHRlcikge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGJ1ZmZl
cgorICogQHBhcmFtIHtudW1iZXJ9IGRyYXdidWZmZXIKKyAqIEBwYXJhbSB7SW50MzJBcnJheXxB
cnJheS48bnVtYmVyPn0gdmFsdWUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJv
dG90eXBlLmNsZWFyQnVmZmVyaXYgPSBmdW5jdGlvbihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVl
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVyCisgKiBAcGFyYW0ge251bWJl
cn0gZHJhd2J1ZmZlcgorICogQHBhcmFtIHtVaW50MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFs
dWUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNsZWFyQnVmZmVy
dWl2ID0gZnVuY3Rpb24oYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSkge307CisKKy8qKgorICog
QHBhcmFtIHtudW1iZXJ9IGJ1ZmZlcgorICogQHBhcmFtIHtudW1iZXJ9IGRyYXdidWZmZXIKKyAq
IEBwYXJhbSB7RmxvYXQzMkFycmF5fEFycmF5LjxudW1iZXI+fSB2YWx1ZQorICovCitXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuY2xlYXJCdWZmZXJmdiA9IGZ1bmN0aW9uKGJ1
ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBi
dWZmZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBkcmF3YnVmZmVyCisgKiBAcGFyYW0ge251bWJlcn0g
ZGVwdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBzdGVuY2lsCisgKi8KK1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS5jbGVhckJ1ZmZlcmZpID0gZnVuY3Rpb24oYnVmZmVyLCBkcmF3
YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFN5bmN9
IHN5bmMKKyAqIEBwYXJhbSB7bnVtYmVyfSBmbGFncworICogQHBhcmFtIHtudW1iZXJ9IHRpbWVv
dXQKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2Uu
cHJvdG90eXBlLmNsaWVudFdhaXRTeW5jID0gZnVuY3Rpb24oc3luYywgZmxhZ3MsIHRpbWVvdXQp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVy
fSBsZXZlbAorICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsZm9ybWF0CisgKiBAcGFyYW0ge251
bWJlcn0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQKKyAqIEBwYXJhbSB7bnVtYmVy
fSBkZXB0aAorICogQHBhcmFtIHtudW1iZXJ9IGJvcmRlcgorICogQHBhcmFtIHtBcnJheUJ1ZmZl
clZpZXd9IGRhdGEKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmNv
bXByZXNzZWRUZXhJbWFnZTNEID0gZnVuY3Rpb24oCisgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGRhdGEpIHt9OworCisvKioK
KyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICog
QHBhcmFtIHtudW1iZXJ9IHhvZmZzZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB5b2Zmc2V0CisgKiBA
cGFyYW0ge251bWJlcn0gem9mZnNldAorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFy
YW0ge251bWJlcn0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAqIEBwYXJhbSB7
bnVtYmVyfSBmb3JtYXQKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3fSBkYXRhCisgKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RCA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGRhdGEpIHt9OworCisvKioKKyAqIEBw
YXJhbSB7bnVtYmVyfSByZWFkVGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gd3JpdGVUYXJnZXQK
KyAqIEBwYXJhbSB7bnVtYmVyfSByZWFkT2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0gd3JpdGVP
ZmZzZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRCYXNlLnByb3RvdHlwZS5jb3B5QnVmZmVyU3ViRGF0YSA9IGZ1bmN0aW9uKAorICAgIHJlYWRU
YXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwgc2l6ZSkge307CisK
Ky8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IGxldmVs
CisgKiBAcGFyYW0ge251bWJlcn0geG9mZnNldAorICogQHBhcmFtIHtudW1iZXJ9IHlvZmZzZXQK
KyAqIEBwYXJhbSB7bnVtYmVyfSB6b2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0geAorICogQHBh
cmFtIHtudW1iZXJ9IHkKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1i
ZXJ9IGhlaWdodAorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuY29w
eVRleFN1YkltYWdlM0QgPSBmdW5jdGlvbigKKyAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7fTsKKworLyoqCisgKiBAcmV0
dXJuIHshV2ViR0xRdWVyeX0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS5jcmVhdGVRdWVyeSA9IGZ1bmN0aW9uKCkge307CisKKy8q
KgorICogQHJldHVybiB7IVdlYkdMU2FtcGxlcn0KKyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5jcmVhdGVTYW1wbGVyID0gZnVuY3Rp
b24oKSB7fTsKKworLyoqCisgKiBAcmV0dXJuIHshV2ViR0xUcmFuc2Zvcm1GZWVkYmFja30KKyAq
IEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHJl
dHVybiB7IVdlYkdMVmVydGV4QXJyYXlPYmplY3R9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuY3JlYXRlVmVydGV4QXJyYXkgPSBm
dW5jdGlvbigpIHt9OworCisKKy8qKgorICogQHBhcmFtIHtXZWJHTFF1ZXJ5fSBxdWVyeQorICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZGVsZXRlUXVlcnkgPSBmdW5j
dGlvbihxdWVyeSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFNhbXBsZXJ9IHNhbXBsZXIK
KyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmRlbGV0ZVNhbXBsZXIg
PSBmdW5jdGlvbihzYW1wbGVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU3luY30gc3lu
YworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZGVsZXRlU3luYyA9
IGZ1bmN0aW9uKHN5bmMpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xUcmFuc2Zvcm1GZWVk
YmFja30gZmVlZGJhY2sKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24oZmVlZGJhY2spIHt9OworCisvKioK
KyAqIEBwYXJhbSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gdmVydGV4QXJyYXkKKyAqLworV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmRlbGV0ZVZlcnRleEFycmF5ID0gZnVu
Y3Rpb24odmVydGV4QXJyYXkpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlCisg
KiBAcGFyYW0ge251bWJlcn0gZmlyc3QKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudAorICogQHBh
cmFtIHtudW1iZXJ9IGluc3RhbmNlQ291bnQKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmRyYXdBcnJheXNJbnN0YW5jZWQgPSBmdW5jdGlvbihtb2RlLCBmaXJzdCwg
Y291bnQsIGluc3RhbmNlQ291bnQpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBtb2Rl
CisgKiBAcGFyYW0ge251bWJlcn0gY291bnQKKyAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlCisgKiBA
cGFyYW0ge251bWJlcn0gb2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0gaW5zdGFuY2VDb3VudAor
ICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZHJhd0VsZW1lbnRzSW5z
dGFuY2VkID0gZnVuY3Rpb24obW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgaW5zdGFuY2VDb3Vu
dCkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG1vZGUKKyAqIEBwYXJhbSB7bnVtYmVy
fSBzdGFydAorICogQHBhcmFtIHtudW1iZXJ9IGVuZAorICogQHBhcmFtIHtudW1iZXJ9IGNvdW50
CisgKiBAcGFyYW0ge251bWJlcn0gdHlwZQorICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICov
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZHJhd1JhbmdlRWxlbWVudHMg
PSBmdW5jdGlvbihtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgb2Zmc2V0KSB7fTsKKwor
LyoqCisgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSBidWZmZXJzCisgKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5kcmF3QnVmZmVycyA9IGZ1bmN0aW9uKGJ1ZmZlcnMp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqLworV2ViR0wyUmVuZGVy
aW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmVuZFF1ZXJ5ID0gZnVuY3Rpb24odGFyZ2V0KSB7fTsK
KworLyoqCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5lbmRUcmFu
c2Zvcm1GZWVkYmFjayA9IGZ1bmN0aW9uKCkge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9
IGNvbmRpdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IGZsYWdzCisgKiBAcmV0dXJuIHtXZWJHTFN5
bmN9CisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5mZW5jZVN5bmMg
PSBmdW5jdGlvbihjb25kaXRpb24sIGZsYWdzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJl
cn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gYXR0YWNobWVudAorICogQHBhcmFtIHtXZWJH
TFRleHR1cmV9IHRleHR1cmUKKyAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbAorICogQHBhcmFtIHtu
dW1iZXJ9IGxheWVyCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5m
cmFtZWJ1ZmZlclRleHR1cmVMYXllciA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJv
Z3JhbX0gcHJvZ3JhbQorICogQHBhcmFtIHtudW1iZXJ9IHVuaWZvcm1CbG9ja0luZGV4CisgKiBA
cmV0dXJuIHtzdHJpbmd9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdD
b250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSA9IGZ1bmN0aW9u
KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdM
UHJvZ3JhbX0gcHJvZ3JhbQorICogQHBhcmFtIHtudW1iZXJ9IHVuaWZvcm1CbG9ja0luZGV4Cisg
KiBAcGFyYW0ge251bWJlcn0gcG5hbWUKKyAqIEByZXR1cm4geyp9CisgKiBAbm9zaWRlZWZmZWN0
cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrUGFyYW1ldGVyID0gZnVuY3Rpb24oCisgICAgcHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHBuYW1lKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3Jh
bQorICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gdW5pZm9ybUluZGljZXMKKyAqIEBwYXJhbSB7
bnVtYmVyfSBwbmFtZQorICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgKiBAbm9zaWRlZWZm
ZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0QWN0aXZl
VW5pZm9ybXMgPSBmdW5jdGlvbigKKyAgICBwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
IHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQKKyAqIEBwYXJhbSB7bnVtYmVy
fSBvZmZzZXQKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IHJldHVybmVkRGF0YQorICogQG5vc2lk
ZWVmZmVjdHMKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldEJ1
ZmZlclN1YkRhdGEgPSBmdW5jdGlvbigKKyAgICB0YXJnZXQsIG9mZnNldCwgcmV0dXJuZWREYXRh
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqIEBub3NpZGVlZmZlY3RzCisg
Ki8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRGcmFnRGF0YUxvY2F0
aW9uID0gZnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSkge307CisKKy8qKgorICogQHBhcmFtIHtudW1i
ZXJ9IHRhcmdldAorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgKiBAcmV0dXJuIHsqfQorICog
QG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LmdldEluZGV4ZWRQYXJhbWV0ZXIgPSBmdW5jdGlvbih0YXJnZXQsIGluZGV4KSB7fTsKKworLyoq
CisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJuYWxm
b3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBwbmFtZQorICogQHJldHVybiB7Kn0KKyAqIEBub3Np
ZGVlZmZlY3RzCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5nZXRJ
bnRlcm5hbGZvcm1hdFBhcmFtZXRlciA9IGZ1bmN0aW9uKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHBuYW1lKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0g
e251bWJlcn0gcG5hbWUKKyAqIEByZXR1cm4ge1dlYkdMUXVlcnl9CisgKiBAbm9zaWRlZWZmZWN0
cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0UXVlcnkgPSBm
dW5jdGlvbih0YXJnZXQsIHBuYW1lKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUXVlcnl9
IHF1ZXJ5CisgKiBAcGFyYW0ge251bWJlcn0gcG5hbWUKKyAqIEByZXR1cm4geyp9CisgKiBAbm9z
aWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUuZ2V0
UXVlcnlQYXJhbWV0ZXIgPSBmdW5jdGlvbihxdWVyeSwgcG5hbWUpIHt9OworCisvKioKKyAqIEBw
YXJhbSB7V2ViR0xTYW1wbGVyfSBzYW1wbGVyCisgKiBAcGFyYW0ge251bWJlcn0gcG5hbWUKKyAq
IEByZXR1cm4geyp9CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUuZ2V0U2FtcGxlclBhcmFtZXRlciA9IGZ1bmN0aW9uKHNhbXBsZXIs
IHBuYW1lKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU3luY30gc3luYworICogQHBhcmFt
IHtudW1iZXJ9IHBuYW1lCisgKiBAcmV0dXJuIHsqfQorICogQG5vc2lkZWVmZmVjdHMKKyAqLwor
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmdldFN5bmNQYXJhbWV0ZXIgPSBm
dW5jdGlvbihzeW5jLCBwbmFtZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19
IHByb2dyYW0KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICogQHJldHVybiB7V2ViR0xBY3Rp
dmVJbmZvfQorICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyA9IGZ1bmN0aW9uKHByb2dy
YW0sIGluZGV4KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQor
ICogQHBhcmFtIHtzdHJpbmd9IHVuaWZvcm1CbG9ja05hbWUKKyAqIEByZXR1cm4ge251bWJlcn0K
KyAqIEBub3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3Rv
dHlwZS5nZXRVbmlmb3JtQmxvY2tJbmRleCA9IGZ1bmN0aW9uKHByb2dyYW0sIHVuaWZvcm1CbG9j
a05hbWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xQcm9ncmFtfSBwcm9ncmFtCisgKiBA
cGFyYW0ge0FycmF5LjxzdHJpbmc+fSB1bmlmb3JtTmFtZXMKKyAqIEByZXR1cm4ge0FycmF5Ljxu
dW1iZXI+fQorICogQG5vc2lkZWVmZmVjdHMKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLmdldFVuaWZvcm1JbmRpY2VzID0gZnVuY3Rpb24ocHJvZ3JhbSwgdW5pZm9y
bU5hbWVzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0g
e0FycmF5LjxudW1iZXI+fSBhdHRhY2htZW50cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0
QmFzZS5wcm90b3R5cGUuaW52YWxpZGF0ZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24odGFyZ2V0LCBh
dHRhY2htZW50cykge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldAorICogQHBh
cmFtIHtBcnJheS48bnVtYmVyPn0gYXR0YWNobWVudHMKKyAqIEBwYXJhbSB7bnVtYmVyfSB4Cisg
KiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBAcGFyYW0g
e251bWJlcn0gaGVpZ2h0CisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIgPSBmdW5jdGlvbigKKyAgICB0YXJnZXQsIGF0dGFj
aG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdM
UXVlcnl9IHF1ZXJ5CisgKiBAcmV0dXJuIHtib29sZWFufQorICogQG5vc2lkZWVmZmVjdHMKKyAq
LworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLmlzUXVlcnkgPSBmdW5jdGlv
bihxdWVyeSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFNhbXBsZXJ9IHNhbXBsZXIKKyAq
IEByZXR1cm4ge2Jvb2xlYW59CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUuaXNTYW1wbGVyID0gZnVuY3Rpb24oc2FtcGxlcikge307
CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFN5bmN9IHN5bmMKKyAqIEByZXR1cm4ge2Jvb2xlYW59
CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90
b3R5cGUuaXNTeW5jID0gZnVuY3Rpb24oc3luYykge307CisKKy8qKgorICogQHBhcmFtIHtXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrfSBmZWVkYmFjaworICogQHJldHVybiB7Ym9vbGVhbn0KKyAqIEBu
b3NpZGVlZmZlY3RzCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5p
c1RyYW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24oZmVlZGJhY2spIHt9OworCisvKioKKyAqIEBw
YXJhbSB7V2ViR0xWZXJ0ZXhBcnJheU9iamVjdH0gdmVydGV4QXJyYXkKKyAqIEByZXR1cm4ge2Jv
b2xlYW59CisgKiBAbm9zaWRlZWZmZWN0cworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUuaXNWZXJ0ZXhBcnJheSA9IGZ1bmN0aW9uKHZlcnRleEFycmF5KSB7fTsKKwor
LyoqCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5wYXVzZVRyYW5z
Zm9ybUZlZWRiYWNrID0gZnVuY3Rpb24oKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0g
c3JjCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS5yZWFkQnVmZmVy
ID0gZnVuY3Rpb24oc3JjKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0Cisg
KiBAcGFyYW0ge251bWJlcn0gc2FtcGxlcworICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsZm9y
bWF0CisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQK
KyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpIHt9OworCisvKioKKyAqLworV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEJhc2UucHJvdG90eXBlLnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrID0gZnVuY3Rpb24o
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU2FtcGxlcn0gc2FtcGxlcgorICogQHBhcmFt
IHtudW1iZXJ9IHBuYW1lCisgKiBAcGFyYW0ge251bWJlcn0gcGFyYW0KKyAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnNhbXBsZXJQYXJhbWV0ZXJpID0gZnVuY3Rpb24o
c2FtcGxlciwgcG5hbWUsIHBhcmFtKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMU2FtcGxl
cn0gc2FtcGxlcgorICogQHBhcmFtIHtudW1iZXJ9IHBuYW1lCisgKiBAcGFyYW0ge251bWJlcn0g
cGFyYW0KKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnNhbXBsZXJQ
YXJhbWV0ZXJmID0gZnVuY3Rpb24oc2FtcGxlciwgcG5hbWUsIHBhcmFtKSB7fTsKKworLyoqCisg
KiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxzCisgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJuYWxmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAor
ICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodAorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFz
ZS5wcm90b3R5cGUudGV4U3RvcmFnZTJEID0gZnVuY3Rpb24odGFyZ2V0LCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0g
dGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxzCisgKiBAcGFyYW0ge251bWJlcn0gaW50
ZXJuYWxmb3JtYXQKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1iZXJ9
IGhlaWdodAorICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoCisgKi8KK1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHRCYXNlLnByb3RvdHlwZS50ZXhTdG9yYWdlM0QgPSBmdW5jdGlvbih0YXJnZXQsIGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSB7fTsKKworLyoqCisgKiBA
cGFyYW0ge251bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAqIEBwYXJh
bSB7bnVtYmVyfSBpbnRlcm5hbGZvcm1hdAorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgKiBA
cGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgKKyAqIEBwYXJh
bSB7bnVtYmVyfSBib3JkZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQKKyAqIEBwYXJhbSB7
bnVtYmVyfSB0eXBlCisgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlld30gcGl4ZWxzCisgKi8KK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS50ZXhJbWFnZTNEID0gZnVuY3Rpb24o
CisgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251
bWJlcn0gdGFyZ2V0CisgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwKKyAqIEBwYXJhbSB7bnVtYmVy
fSB4b2Zmc2V0CisgKiBAcGFyYW0ge251bWJlcn0geW9mZnNldAorICogQHBhcmFtIHtudW1iZXJ9
IHpvZmZzZXQKKyAqIEBwYXJhbSB7bnVtYmVyfSBmb3JtYXQgb3Igd2lkdGgKKyAqIEBwYXJhbSB7
bnVtYmVyfSB0eXBlIG9yIGhlaWdodAorICogQHBhcmFtIHtJbWFnZURhdGF8SFRNTEltYWdlRWxl
bWVudHxIVE1MQ2FudmFzRWxlbWVudHxIVE1MVmlkZW9FbGVtZW50fAorICogICAgIG51bWJlcn0g
c291cmNlIG9yIGRlcHRoCisgKiBAcGFyYW0ge251bWJlcj19IG9wdF9mb3JtYXQKKyAqIEBwYXJh
bSB7bnVtYmVyPX0gb3B0X3R5cGUKKyAqIEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3PX0gb3B0X3Bp
eGVscworICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudGV4U3ViSW1h
Z2UzRCA9IGZ1bmN0aW9uKAorICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIGZvcm1hdCwgdHlwZSwgc291cmNlLCBvcHRfZm9ybWF0LCBvcHRfdHlwZSwgb3B0X3Bp
eGVscykge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFByb2dyYW19IHByb2dyYW0KKyAqIEBw
YXJhbSB7QXJyYXkuPHN0cmluZz59IHZhcnlpbmdzCisgKiBAcGFyYW0ge251bWJlcn0gYnVmZmVy
TW9kZQorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyA9IGZ1bmN0aW9uKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2Rl
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgor
ICogQHBhcmFtIHtudW1iZXJ9IHYwCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS51bmlmb3JtMXVpID0gZnVuY3Rpb24obG9jYXRpb24sIHYwKSB7fTsKKworLyoqCisg
KiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtudW1i
ZXJ9IHYwCisgKiBAcGFyYW0ge251bWJlcn0gdjEKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEJhc2UucHJvdG90eXBlLnVuaWZvcm0ydWkgPSBmdW5jdGlvbihsb2NhdGlvbiwgdjAsIHYxKSB7
fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICog
QHBhcmFtIHtudW1iZXJ9IHYwCisgKiBAcGFyYW0ge251bWJlcn0gdjEKKyAqIEBwYXJhbSB7bnVt
YmVyfSB2MgorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9y
bTN1aSA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSB7fTsKKworLyoqCisgKiBAcGFy
YW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtudW1iZXJ9IHYw
CisgKiBAcGFyYW0ge251bWJlcn0gdjEKKyAqIEBwYXJhbSB7bnVtYmVyfSB2MgorICogQHBhcmFt
IHtudW1iZXJ9IHYzCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS51
bmlmb3JtNHVpID0gZnVuY3Rpb24obG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSB7fTsKKworLyoq
CisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtV
aW50MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFsdWUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0xdWl2ID0gZnVuY3Rpb24obG9jYXRpb24sIHZhbHVl
KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgor
ICogQHBhcmFtIHtVaW50MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFsdWUKKyAqLworV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0ydWl2ID0gZnVuY3Rpb24obG9j
YXRpb24sIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9u
fSBsb2NhdGlvbgorICogQHBhcmFtIHtVaW50MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFsdWUK
KyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm0zdWl2ID0g
ZnVuY3Rpb24obG9jYXRpb24sIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5p
Zm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICogQHBhcmFtIHtVaW50MzJBcnJheXxBcnJheS48bnVt
YmVyPn0gdmFsdWUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVu
aWZvcm00dWl2ID0gZnVuY3Rpb24obG9jYXRpb24sIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFy
YW0ge1dlYkdMUHJvZ3JhbX0gcHJvZ3JhbQorICogQHBhcmFtIHtudW1iZXJ9IHVuaWZvcm1CbG9j
a0luZGV4CisgKiBAcGFyYW0ge251bWJlcn0gdW5pZm9ybUJsb2NrQmluZGluZworICovCitXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybUJsb2NrQmluZGluZyA9IGZ1
bmN0aW9uKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSB7
fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9ufSBsb2NhdGlvbgorICog
QHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UKKyAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fEFycmF5
LjxudW1iZXI+fSB2YWx1ZQorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5
cGUudW5pZm9ybU1hdHJpeDJ4M2Z2ID0gZnVuY3Rpb24obG9jYXRpb24sIHRyYW5zcG9zZSwgdmFs
dWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9jYXRpb259IGxvY2F0aW9u
CisgKiBAcGFyYW0ge2Jvb2xlYW59IHRyYW5zcG9zZQorICogQHBhcmFtIHtGbG9hdDMyQXJyYXl8
QXJyYXkuPG51bWJlcj59IHZhbHVlCisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnBy
b3RvdHlwZS51bmlmb3JtTWF0cml4M3gyZnYgPSBmdW5jdGlvbihsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2YWx1ZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFVuaWZvcm1Mb2NhdGlvbn0gbG9j
YXRpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlCisgKiBAcGFyYW0ge0Zsb2F0MzJB
cnJheXxBcnJheS48bnVtYmVyPn0gdmFsdWUKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLnVuaWZvcm1NYXRyaXgyeDRmdiA9IGZ1bmN0aW9uKGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMVW5pZm9ybUxvY2F0aW9u
fSBsb2NhdGlvbgorICogQHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UKKyAqIEBwYXJhbSB7Rmxv
YXQzMkFycmF5fEFycmF5LjxudW1iZXI+fSB2YWx1ZQorICovCitXZWJHTDJSZW5kZXJpbmdDb250
ZXh0QmFzZS5wcm90b3R5cGUudW5pZm9ybU1hdHJpeDR4MmZ2ID0gZnVuY3Rpb24obG9jYXRpb24s
IHRyYW5zcG9zZSwgdmFsdWUpIHt9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xVbmlmb3JtTG9j
YXRpb259IGxvY2F0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59IHRyYW5zcG9zZQorICogQHBhcmFt
IHtGbG9hdDMyQXJyYXl8QXJyYXkuPG51bWJlcj59IHZhbHVlCisgKi8KK1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRCYXNlLnByb3RvdHlwZS51bmlmb3JtTWF0cml4M3g0ZnYgPSBmdW5jdGlvbihsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2YWx1ZSkge307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFVuaWZv
cm1Mb2NhdGlvbn0gbG9jYXRpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlCisgKiBA
cGFyYW0ge0Zsb2F0MzJBcnJheXxBcnJheS48bnVtYmVyPn0gdmFsdWUKKyAqLworV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBlLnVuaWZvcm1NYXRyaXg0eDNmdiA9IGZ1bmN0aW9u
KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHZhbHVlKSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJl
cn0gaW5kZXgKKyAqIEBwYXJhbSB7bnVtYmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICog
QHBhcmFtIHtudW1iZXJ9IHoKKyAqIEBwYXJhbSB7bnVtYmVyfSB3CisgKi8KK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRCYXNlLnByb3RvdHlwZS52ZXJ0ZXhBdHRyaWJJNGkgPSBmdW5jdGlvbihpbmRl
eCwgeCwgeSwgeiwgdykge307CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgKiBA
cGFyYW0geyhBcnJheS48bnVtYmVyPnxJbnQzMkFycmF5KX0gdgorICovCitXZWJHTDJSZW5kZXJp
bmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVydGV4QXR0cmliSTRpdiA9IGZ1bmN0aW9uKGluZGV4
LCB2KSB7fTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKKyAqIEBwYXJhbSB7bnVt
YmVyfSB4CisgKiBAcGFyYW0ge251bWJlcn0geQorICogQHBhcmFtIHtudW1iZXJ9IHoKKyAqIEBw
YXJhbSB7bnVtYmVyfSB3CisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS52ZXJ0ZXhBdHRyaWJJNHVpID0gZnVuY3Rpb24oaW5kZXgsIHgsIHksIHosIHcpIHt9OworCisv
KioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICogQHBhcmFtIHsoQXJyYXkuPG51bWJlcj58
VWludDMyQXJyYXkpfSB2CisgKi8KK1dlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlLnByb3RvdHlw
ZS52ZXJ0ZXhBdHRyaWJJNHVpdiA9IGZ1bmN0aW9uKGluZGV4LCB2KSB7fTsKKworLyoqCisgKiBA
cGFyYW0ge251bWJlcn0gaW5kZXgKKyAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCisgKiBAcGFyYW0g
e251bWJlcn0gdHlwZQorICogQHBhcmFtIHtudW1iZXJ9IHN0cmlkZQorICogQHBhcmFtIHtudW1i
ZXJ9IG9mZnNldAorICovCitXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZS5wcm90b3R5cGUudmVy
dGV4QXR0cmliSVBvaW50ZXIgPSBmdW5jdGlvbihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBv
ZmZzZXQpIHt9OworCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAorICogQHBhcmFtIHtu
dW1iZXJ9IGRpdmlzb3IKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJhc2UucHJvdG90eXBl
LnZlcnRleEF0dHJpYkRpdmlzb3IgPSBmdW5jdGlvbihpbmRleCwgZGl2aXNvcikge307CisKKy8q
KgorICogQHBhcmFtIHtXZWJHTFN5bmN9IHN5bmMKKyAqIEBwYXJhbSB7bnVtYmVyfSBmbGFncwor
ICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQKKyAqLworV2ViR0wyUmVuZGVyaW5nQ29udGV4dEJh
c2UucHJvdG90eXBlLndhaXRTeW5jID0gZnVuY3Rpb24oc3luYywgZmxhZ3MsIHRpbWVvdXQpIHt9
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQG5vYWxpYXMKKyAqIEBleHRlbmRzIHtXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZX0KKyAqLworZnVuY3Rpb24gV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dCgpIHt9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkNDgzM2MyY2VlMTk2NDE5ZjFlMWE5NjQzMWMyNjE5ZmYzOGFhZjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9qcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcwpAQCAtMCwwICsxLDI2MzkgQEAKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gRGVmaW5lcyBhIGJ1bmNoIG9m
IERlc2t0b3BHTCBjb25zdGFudHMgc28gd2UgY2FuIG1ha2Ugc3VyZSBXZWJHTAorLy8gaW1wbGVt
ZW50YXRpb25zIGRpc2FsbG93IHRoZW0uCisKKy8vIFNvbWUgb2YgdGhlc2UgYXJlIGFsc28gR0xF
UzIvR0xFUzMgY29uc3RhbnRzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbQorLy8gV2ViR0wu
CisKK3ZhciBkZXNrdG9wR0wgPSB7CisgICdNSU4nOiAweDgwMDcsCisgICdNQVgnOiAweDgwMDgs
CisgICdRVUFEUyc6IDB4MDAwNywKKyAgJ1FVQURfU1RSSVAnOiAweDAwMDgsCisgICdQT0xZR09O
JzogMHgwMDA5LAorICAnMSc6IDB4MDAwMSwKKyAgJzInOiAweDAwMDIsCisgICczJzogMHgwMDAz
LAorICAnNCc6IDB4MDAwNCwKKyAgJ1NUQVRJQ19SRUFEJzogMHg4OEU1LAorICAnQ0xJUF9QTEFO
RTAnOiAweDMwMDAsCisgICdQRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQnOiAweDBDNTAsCisg
ICdBQ0NVTV9CVUZGRVJfQklUJzogMHgwMjAwLAorICAnUkdCNCc6IDB4ODA0RiwKKyAgJ1JHQjUn
OiAweDgwNTAsCisgICdSR0I4JzogMHg4MDUxLAorICAnUkdCMTAnOiAweDgwNTIsCisgICdSR0Ix
Mic6IDB4ODA1MywKKyAgJ1JHQjE2JzogMHg4MDU0LAorICAnUkdCQTInOiAweDgwNTUsCisgICdS
R0JBNCc6IDB4ODA1NiwKKyAgJ1JHQjVfQTEnOiAweDgwNTcsCisgICdSR0JBOCc6IDB4ODA1OCwK
KyAgJ1JHQjEwX0EyJzogMHg4MDU5LAorICAnUkdCQTEyJzogMHg4MDVBLAorICAnUkdCQTE2Jzog
MHg4MDVCLAorICAnU01PT1RIX1BPSU5UX1NJWkVfUkFOR0UnOiAweDBCMTIsCisgICdTTU9PVEhf
UE9JTlRfU0laRV9HUkFOVUxBUklUWSc6IDB4MEIxMywKKyAgJ1NNT09USF9MSU5FX1dJRFRIX1JB
TkdFJzogMHgwQjIyLAorICAnU01PT1RIX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFknOiAweDBCMjMs
CisgICdVTlNJR05FRF9CWVRFXzNfM18yJzogMHg4MDMyLAorICAnVU5TSUdORURfU0hPUlRfNF80
XzRfNCc6IDB4ODAzMywKKyAgJ1VOU0lHTkVEX1NIT1JUXzVfNV81XzEnOiAweDgwMzQsCisgICdV
TlNJR05FRF9JTlRfOF84XzhfOCc6IDB4ODAzNSwKKyAgJ1VOU0lHTkVEX0lOVF8xMF8xMF8xMF8y
JzogMHg4MDM2LAorICAnUkVTQ0FMRV9OT1JNQUwnOiAweDgwM0EsCisgICdURVhUVVJFX0JJTkRJ
TkdfM0QnOiAweDgwNkEsCisgICdQQUNLX1NLSVBfSU1BR0VTJzogMHg4MDZCLAorICAnUEFDS19J
TUFHRV9IRUlHSFQnOiAweDgwNkMsCisgICdVTlBBQ0tfU0tJUF9JTUFHRVMnOiAweDgwNkQsCisg
ICdVTlBBQ0tfSU1BR0VfSEVJR0hUJzogMHg4MDZFLAorICAnVEVYVFVSRV8zRCc6IDB4ODA2RiwK
KyAgJ1BST1hZX1RFWFRVUkVfM0QnOiAweDgwNzAsCisgICdURVhUVVJFX0RFUFRIJzogMHg4MDcx
LAorICAnVEVYVFVSRV9XUkFQX1InOiAweDgwNzIsCisgICdNQVhfM0RfVEVYVFVSRV9TSVpFJzog
MHg4MDczLAorICAnQkdSJzogMHg4MEUwLAorICAnQkdSQSc6IDB4ODBFMSwKKyAgJ01BWF9FTEVN
RU5UU19WRVJUSUNFUyc6IDB4ODBFOCwKKyAgJ01BWF9FTEVNRU5UU19JTkRJQ0VTJzogMHg4MEU5
LAorICAnQ0xBTVBfVE9fRURHRSc6IDB4ODEyRiwKKyAgJ1RFWFRVUkVfTUlOX0xPRCc6IDB4ODEz
QSwKKyAgJ1RFWFRVUkVfTUFYX0xPRCc6IDB4ODEzQiwKKyAgJ1RFWFRVUkVfQkFTRV9MRVZFTCc6
IDB4ODEzQywKKyAgJ1RFWFRVUkVfTUFYX0xFVkVMJzogMHg4MTNELAorICAnTElHSFRfTU9ERUxf
Q09MT1JfQ09OVFJPTCc6IDB4ODFGOCwKKyAgJ1NJTkdMRV9DT0xPUic6IDB4ODFGOSwKKyAgJ1NF
UEFSQVRFX1NQRUNVTEFSX0NPTE9SJzogMHg4MUZBLAorICAnVU5TSUdORURfQllURV8yXzNfM19S
RVYnOiAweDgzNjIsCisgICdVTlNJR05FRF9TSE9SVF81XzZfNSc6IDB4ODM2MywKKyAgJ1VOU0lH
TkVEX1NIT1JUXzVfNl81X1JFVic6IDB4ODM2NCwKKyAgJ1VOU0lHTkVEX1NIT1JUXzRfNF80XzRf
UkVWJzogMHg4MzY1LAorICAnVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVYnOiAweDgzNjYsCisg
ICdVTlNJR05FRF9JTlRfOF84XzhfOF9SRVYnOiAweDgzNjcsCisgICdVTlNJR05FRF9JTlRfMl8x
MF8xMF8xMF9SRVYnOiAweDgzNjgsCisgICdBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UnOiAweDg0
NkQsCisgICdBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UnOiAweDg0NkUsCisgICdNVUxUSVNBTVBM
RSc6IDB4ODA5RCwKKyAgJ1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSc6IDB4ODA5RSwKKyAgJ1NB
TVBMRV9BTFBIQV9UT19PTkUnOiAweDgwOUYsCisgICdTQU1QTEVfQ09WRVJBR0UnOiAweDgwQTAs
CisgICdTQU1QTEVfQlVGRkVSUyc6IDB4ODBBOCwKKyAgJ1NBTVBMRVMnOiAweDgwQTksCisgICdT
QU1QTEVfQ09WRVJBR0VfVkFMVUUnOiAweDgwQUEsCisgICdTQU1QTEVfQ09WRVJBR0VfSU5WRVJU
JzogMHg4MEFCLAorICAnQ0xBTVBfVE9fQk9SREVSJzogMHg4MTJELAorICAnVEVYVFVSRTAnOiAw
eDg0QzAsCisgICdURVhUVVJFMSc6IDB4ODRDMSwKKyAgJ1RFWFRVUkUyJzogMHg4NEMyLAorICAn
VEVYVFVSRTMnOiAweDg0QzMsCisgICdURVhUVVJFNCc6IDB4ODRDNCwKKyAgJ1RFWFRVUkU1Jzog
MHg4NEM1LAorICAnVEVYVFVSRTYnOiAweDg0QzYsCisgICdURVhUVVJFNyc6IDB4ODRDNywKKyAg
J1RFWFRVUkU4JzogMHg4NEM4LAorICAnVEVYVFVSRTknOiAweDg0QzksCisgICdURVhUVVJFMTAn
OiAweDg0Q0EsCisgICdURVhUVVJFMTEnOiAweDg0Q0IsCisgICdURVhUVVJFMTInOiAweDg0Q0Ms
CisgICdURVhUVVJFMTMnOiAweDg0Q0QsCisgICdURVhUVVJFMTQnOiAweDg0Q0UsCisgICdURVhU
VVJFMTUnOiAweDg0Q0YsCisgICdURVhUVVJFMTYnOiAweDg0RDAsCisgICdURVhUVVJFMTcnOiAw
eDg0RDEsCisgICdURVhUVVJFMTgnOiAweDg0RDIsCisgICdURVhUVVJFMTknOiAweDg0RDMsCisg
ICdURVhUVVJFMjAnOiAweDg0RDQsCisgICdURVhUVVJFMjEnOiAweDg0RDUsCisgICdURVhUVVJF
MjInOiAweDg0RDYsCisgICdURVhUVVJFMjMnOiAweDg0RDcsCisgICdURVhUVVJFMjQnOiAweDg0
RDgsCisgICdURVhUVVJFMjUnOiAweDg0RDksCisgICdURVhUVVJFMjYnOiAweDg0REEsCisgICdU
RVhUVVJFMjcnOiAweDg0REIsCisgICdURVhUVVJFMjgnOiAweDg0REMsCisgICdURVhUVVJFMjkn
OiAweDg0REQsCisgICdURVhUVVJFMzAnOiAweDg0REUsCisgICdURVhUVVJFMzEnOiAweDg0REYs
CisgICdBQ1RJVkVfVEVYVFVSRSc6IDB4ODRFMCwKKyAgJ0NMSUVOVF9BQ1RJVkVfVEVYVFVSRSc6
IDB4ODRFMSwKKyAgJ01BWF9URVhUVVJFX1VOSVRTJzogMHg4NEUyLAorICAnVFJBTlNQT1NFX01P
REVMVklFV19NQVRSSVgnOiAweDg0RTMsCisgICdUUkFOU1BPU0VfUFJPSkVDVElPTl9NQVRSSVgn
OiAweDg0RTQsCisgICdUUkFOU1BPU0VfVEVYVFVSRV9NQVRSSVgnOiAweDg0RTUsCisgICdUUkFO
U1BPU0VfQ09MT1JfTUFUUklYJzogMHg4NEU2LAorICAnU1VCVFJBQ1QnOiAweDg0RTcsCisgICdD
T01QUkVTU0VEX0FMUEhBJzogMHg4NEU5LAorICAnQ09NUFJFU1NFRF9MVU1JTkFOQ0UnOiAweDg0
RUEsCisgICdDT01QUkVTU0VEX0xVTUlOQU5DRV9BTFBIQSc6IDB4ODRFQiwKKyAgJ0NPTVBSRVNT
RURfSU5URU5TSVRZJzogMHg4NEVDLAorICAnQ09NUFJFU1NFRF9SR0InOiAweDg0RUQsCisgICdD
T01QUkVTU0VEX1JHQkEnOiAweDg0RUUsCisgICdURVhUVVJFX0NPTVBSRVNTSU9OX0hJTlQnOiAw
eDg0RUYsCisgICdOT1JNQUxfTUFQJzogMHg4NTExLAorICAnUkVGTEVDVElPTl9NQVAnOiAweDg1
MTIsCisgICdURVhUVVJFX0NVQkVfTUFQJzogMHg4NTEzLAorICAnVEVYVFVSRV9CSU5ESU5HX0NV
QkVfTUFQJzogMHg4NTE0LAorICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJzogMHg4NTE1
LAorICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YJzogMHg4NTE2LAorICAnVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9ZJzogMHg4NTE3LAorICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZJzogMHg4NTE4LAorICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aJzogMHg4NTE5LAor
ICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aJzogMHg4NTFBLAorICAnUFJPWFlfVEVYVFVS
RV9DVUJFX01BUCc6IDB4ODUxQiwKKyAgJ01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUnOiAweDg1
MUMsCisgICdDT01CSU5FJzogMHg4NTcwLAorICAnQ09NQklORV9SR0InOiAweDg1NzEsCisgICdD
T01CSU5FX0FMUEhBJzogMHg4NTcyLAorICAnUkdCX1NDQUxFJzogMHg4NTczLAorICAnQUREX1NJ
R05FRCc6IDB4ODU3NCwKKyAgJ0lOVEVSUE9MQVRFJzogMHg4NTc1LAorICAnQ09OU1RBTlQnOiAw
eDg1NzYsCisgICdQUklNQVJZX0NPTE9SJzogMHg4NTc3LAorICAnUFJFVklPVVMnOiAweDg1Nzgs
CisgICdTT1VSQ0UwX1JHQic6IDB4ODU4MCwKKyAgJ1NPVVJDRTFfUkdCJzogMHg4NTgxLAorICAn
U09VUkNFMl9SR0InOiAweDg1ODIsCisgICdTT1VSQ0UwX0FMUEhBJzogMHg4NTg4LAorICAnU09V
UkNFMV9BTFBIQSc6IDB4ODU4OSwKKyAgJ1NPVVJDRTJfQUxQSEEnOiAweDg1OEEsCisgICdPUEVS
QU5EMF9SR0InOiAweDg1OTAsCisgICdPUEVSQU5EMV9SR0InOiAweDg1OTEsCisgICdPUEVSQU5E
Ml9SR0InOiAweDg1OTIsCisgICdPUEVSQU5EMF9BTFBIQSc6IDB4ODU5OCwKKyAgJ09QRVJBTkQx
X0FMUEhBJzogMHg4NTk5LAorICAnT1BFUkFORDJfQUxQSEEnOiAweDg1OUEsCisgICdURVhUVVJF
X0NPTVBSRVNTRURfSU1BR0VfU0laRSc6IDB4ODZBMCwKKyAgJ1RFWFRVUkVfQ09NUFJFU1NFRCc6
IDB4ODZBMSwKKyAgJ05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyc6IDB4ODZBMiwKKyAg
J0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTJzogMHg4NkEzLAorICAnRE9UM19SR0InOiAweDg2
QUUsCisgICdET1QzX1JHQkEnOiAweDg2QUYsCisgICdNVUxUSVNBTVBMRV9CSVQnOiAweDIwMDAw
MDAwLAorICAnQkxFTkRfRFNUX1JHQic6IDB4ODBDOCwKKyAgJ0JMRU5EX1NSQ19SR0InOiAweDgw
QzksCisgICdCTEVORF9EU1RfQUxQSEEnOiAweDgwQ0EsCisgICdCTEVORF9TUkNfQUxQSEEnOiAw
eDgwQ0IsCisgICdQT0lOVF9TSVpFX01JTic6IDB4ODEyNiwKKyAgJ1BPSU5UX1NJWkVfTUFYJzog
MHg4MTI3LAorICAnUE9JTlRfRkFERV9USFJFU0hPTERfU0laRSc6IDB4ODEyOCwKKyAgJ1BPSU5U
X0RJU1RBTkNFX0FUVEVOVUFUSU9OJzogMHg4MTI5LAorICAnR0VORVJBVEVfTUlQTUFQJzogMHg4
MTkxLAorICAnR0VORVJBVEVfTUlQTUFQX0hJTlQnOiAweDgxOTIsCisgICdERVBUSF9DT01QT05F
TlQxNic6IDB4ODFBNSwKKyAgJ0RFUFRIX0NPTVBPTkVOVDI0JzogMHg4MUE2LAorICAnREVQVEhf
Q09NUE9ORU5UMzInOiAweDgxQTcsCisgICdNSVJST1JFRF9SRVBFQVQnOiAweDgzNzAsCisgICdG
T0dfQ09PUkRJTkFURV9TT1VSQ0UnOiAweDg0NTAsCisgICdGT0dfQ09PUkRJTkFURSc6IDB4ODQ1
MSwKKyAgJ0ZSQUdNRU5UX0RFUFRIJzogMHg4NDUyLAorICAnQ1VSUkVOVF9GT0dfQ09PUkRJTkFU
RSc6IDB4ODQ1MywKKyAgJ0ZPR19DT09SRElOQVRFX0FSUkFZX1RZUEUnOiAweDg0NTQsCisgICdG
T0dfQ09PUkRJTkFURV9BUlJBWV9TVFJJREUnOiAweDg0NTUsCisgICdGT0dfQ09PUkRJTkFURV9B
UlJBWV9QT0lOVEVSJzogMHg4NDU2LAorICAnRk9HX0NPT1JESU5BVEVfQVJSQVknOiAweDg0NTcs
CisgICdDT0xPUl9TVU0nOiAweDg0NTgsCisgICdDVVJSRU5UX1NFQ09OREFSWV9DT0xPUic6IDB4
ODQ1OSwKKyAgJ1NFQ09OREFSWV9DT0xPUl9BUlJBWV9TSVpFJzogMHg4NDVBLAorICAnU0VDT05E
QVJZX0NPTE9SX0FSUkFZX1RZUEUnOiAweDg0NUIsCisgICdTRUNPTkRBUllfQ09MT1JfQVJSQVlf
U1RSSURFJzogMHg4NDVDLAorICAnU0VDT05EQVJZX0NPTE9SX0FSUkFZX1BPSU5URVInOiAweDg0
NUQsCisgICdTRUNPTkRBUllfQ09MT1JfQVJSQVknOiAweDg0NUUsCisgICdNQVhfVEVYVFVSRV9M
T0RfQklBUyc6IDB4ODRGRCwKKyAgJ1RFWFRVUkVfRklMVEVSX0NPTlRST0wnOiAweDg1MDAsCisg
ICdURVhUVVJFX0xPRF9CSUFTJzogMHg4NTAxLAorICAnSU5DUl9XUkFQJzogMHg4NTA3LAorICAn
REVDUl9XUkFQJzogMHg4NTA4LAorICAnVEVYVFVSRV9ERVBUSF9TSVpFJzogMHg4ODRBLAorICAn
REVQVEhfVEVYVFVSRV9NT0RFJzogMHg4ODRCLAorICAnVEVYVFVSRV9DT01QQVJFX01PREUnOiAw
eDg4NEMsCisgICdURVhUVVJFX0NPTVBBUkVfRlVOQyc6IDB4ODg0RCwKKyAgJ0NPTVBBUkVfUl9U
T19URVhUVVJFJzogMHg4ODRFLAorICAnQlVGRkVSX1NJWkUnOiAweDg3NjQsCisgICdCVUZGRVJf
VVNBR0UnOiAweDg3NjUsCisgICdRVUVSWV9DT1VOVEVSX0JJVFMnOiAweDg4NjQsCisgICdDVVJS
RU5UX1FVRVJZJzogMHg4ODY1LAorICAnUVVFUllfUkVTVUxUJzogMHg4ODY2LAorICAnUVVFUllf
UkVTVUxUX0FWQUlMQUJMRSc6IDB4ODg2NywKKyAgJ0FSUkFZX0JVRkZFUic6IDB4ODg5MiwKKyAg
J0VMRU1FTlRfQVJSQVlfQlVGRkVSJzogMHg4ODkzLAorICAnQVJSQVlfQlVGRkVSX0JJTkRJTkcn
OiAweDg4OTQsCisgICdFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODk1LAorICAn
VkVSVEVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HJzogMHg4ODk2LAorICAnTk9STUFMX0FSUkFZX0JV
RkZFUl9CSU5ESU5HJzogMHg4ODk3LAorICAnQ09MT1JfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAw
eDg4OTgsCisgICdJTkRFWF9BUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5OSwKKyAgJ1RFWFRV
UkVfQ09PUkRfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUEsCisgICdFREdFX0ZMQUdfQVJS
QVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUIsCisgICdTRUNPTkRBUllfQ09MT1JfQVJSQVlfQlVG
RkVSX0JJTkRJTkcnOiAweDg4OUMsCisgICdGT0dfQ09PUkRJTkFURV9BUlJBWV9CVUZGRVJfQklO
RElORyc6IDB4ODg5RCwKKyAgJ1dFSUdIVF9BUlJBWV9CVUZGRVJfQklORElORyc6IDB4ODg5RSwK
KyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcnOiAweDg4OUYsCisgICdSRUFE
X09OTFknOiAweDg4QjgsCisgICdXUklURV9PTkxZJzogMHg4OEI5LAorICAnUkVBRF9XUklURSc6
IDB4ODhCQSwKKyAgJ0JVRkZFUl9BQ0NFU1MnOiAweDg4QkIsCisgICdCVUZGRVJfTUFQUEVEJzog
MHg4OEJDLAorICAnQlVGRkVSX01BUF9QT0lOVEVSJzogMHg4OEJELAorICAnU1RSRUFNX0RSQVcn
OiAweDg4RTAsCisgICdTVFJFQU1fUkVBRCc6IDB4ODhFMSwKKyAgJ1NUUkVBTV9DT1BZJzogMHg4
OEUyLAorICAnU1RBVElDX0RSQVcnOiAweDg4RTQsCisgICdTVEFUSUNfUkVBRCc6IDB4ODhFNSwK
KyAgJ1NUQVRJQ19DT1BZJzogMHg4OEU2LAorICAnRFlOQU1JQ19EUkFXJzogMHg4OEU4LAorICAn
RFlOQU1JQ19SRUFEJzogMHg4OEU5LAorICAnRFlOQU1JQ19DT1BZJzogMHg4OEVBLAorICAnU0FN
UExFU19QQVNTRUQnOiAweDg5MTQsCisgICdWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQnOiAw
eDg2MjIsCisgICdWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUnOiAweDg2MjMsCisgICdWRVJURVhf
QVRUUklCX0FSUkFZX1NUUklERSc6IDB4ODYyNCwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQ
RSc6IDB4ODYyNSwKKyAgJ0NVUlJFTlRfVkVSVEVYX0FUVFJJQic6IDB4ODYyNiwKKyAgJ1ZFUlRF
WF9QUk9HUkFNX1BPSU5UX1NJWkUnOiAweDg2NDIsCisgICdWRVJURVhfUFJPR1JBTV9UV09fU0lE
RSc6IDB4ODY0MywKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUic6IDB4ODY0NSwKKyAg
J1NURU5DSUxfQkFDS19GVU5DJzogMHg4ODAwLAorICAnU1RFTkNJTF9CQUNLX0ZBSUwnOiAweDg4
MDEsCisgICdTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMJzogMHg4ODAyLAorICAnU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfUEFTUyc6IDB4ODgwMywKKyAgJ01BWF9EUkFXX0JVRkZFUlMnOiAw
eDg4MjQsCisgICdEUkFXX0JVRkZFUjAnOiAweDg4MjUsCisgICdEUkFXX0JVRkZFUjEnOiAweDg4
MjYsCisgICdEUkFXX0JVRkZFUjInOiAweDg4MjcsCisgICdEUkFXX0JVRkZFUjMnOiAweDg4Mjgs
CisgICdEUkFXX0JVRkZFUjQnOiAweDg4MjksCisgICdEUkFXX0JVRkZFUjUnOiAweDg4MkEsCisg
ICdEUkFXX0JVRkZFUjYnOiAweDg4MkIsCisgICdEUkFXX0JVRkZFUjcnOiAweDg4MkMsCisgICdE
UkFXX0JVRkZFUjgnOiAweDg4MkQsCisgICdEUkFXX0JVRkZFUjknOiAweDg4MkUsCisgICdEUkFX
X0JVRkZFUjEwJzogMHg4ODJGLAorICAnRFJBV19CVUZGRVIxMSc6IDB4ODgzMCwKKyAgJ0RSQVdf
QlVGRkVSMTInOiAweDg4MzEsCisgICdEUkFXX0JVRkZFUjEzJzogMHg4ODMyLAorICAnRFJBV19C
VUZGRVIxNCc6IDB4ODgzMywKKyAgJ0RSQVdfQlVGRkVSMTUnOiAweDg4MzQsCisgICdCTEVORF9F
UVVBVElPTl9BTFBIQSc6IDB4ODgzRCwKKyAgJ1BPSU5UX1NQUklURSc6IDB4ODg2MSwKKyAgJ0NP
T1JEX1JFUExBQ0UnOiAweDg4NjIsCisgICdNQVhfVkVSVEVYX0FUVFJJQlMnOiAweDg4NjksCisg
ICdWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQnOiAweDg4NkEsCisgICdNQVhfVEVYVFVS
RV9DT09SRFMnOiAweDg4NzEsCisgICdNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyc6IDB4ODg3MiwK
KyAgJ0ZSQUdNRU5UX1NIQURFUic6IDB4OEIzMCwKKyAgJ1ZFUlRFWF9TSEFERVInOiAweDhCMzEs
CisgICdNQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTJzogMHg4QjQ5LAorICAnTUFYX1ZF
UlRFWF9VTklGT1JNX0NPTVBPTkVOVFMnOiAweDhCNEEsCisgICdNQVhfVkFSWUlOR19GTE9BVFMn
OiAweDhCNEIsCisgICdNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMnOiAweDhCNEMsCisg
ICdNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyc6IDB4OEI0RCwKKyAgJ1NIQURFUl9U
WVBFJzogMHg4QjRGLAorICAnRkxPQVRfVkVDMic6IDB4OEI1MCwKKyAgJ0ZMT0FUX1ZFQzMnOiAw
eDhCNTEsCisgICdGTE9BVF9WRUM0JzogMHg4QjUyLAorICAnSU5UX1ZFQzInOiAweDhCNTMsCisg
ICdJTlRfVkVDMyc6IDB4OEI1NCwKKyAgJ0lOVF9WRUM0JzogMHg4QjU1LAorICAnQk9PTCc6IDB4
OEI1NiwKKyAgJ0JPT0xfVkVDMic6IDB4OEI1NywKKyAgJ0JPT0xfVkVDMyc6IDB4OEI1OCwKKyAg
J0JPT0xfVkVDNCc6IDB4OEI1OSwKKyAgJ0ZMT0FUX01BVDInOiAweDhCNUEsCisgICdGTE9BVF9N
QVQzJzogMHg4QjVCLAorICAnRkxPQVRfTUFUNCc6IDB4OEI1QywKKyAgJ1NBTVBMRVJfMUQnOiAw
eDhCNUQsCisgICdTQU1QTEVSXzJEJzogMHg4QjVFLAorICAnU0FNUExFUl8zRCc6IDB4OEI1RiwK
KyAgJ1NBTVBMRVJfQ1VCRSc6IDB4OEI2MCwKKyAgJ1NBTVBMRVJfMURfU0hBRE9XJzogMHg4QjYx
LAorICAnU0FNUExFUl8yRF9TSEFET1cnOiAweDhCNjIsCisgICdERUxFVEVfU1RBVFVTJzogMHg4
QjgwLAorICAnQ09NUElMRV9TVEFUVVMnOiAweDhCODEsCisgICdMSU5LX1NUQVRVUyc6IDB4OEI4
MiwKKyAgJ1ZBTElEQVRFX1NUQVRVUyc6IDB4OEI4MywKKyAgJ0lORk9fTE9HX0xFTkdUSCc6IDB4
OEI4NCwKKyAgJ0FUVEFDSEVEX1NIQURFUlMnOiAweDhCODUsCisgICdBQ1RJVkVfVU5JRk9STVMn
OiAweDhCODYsCisgICdBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIJzogMHg4Qjg3LAorICAnU0hB
REVSX1NPVVJDRV9MRU5HVEgnOiAweDhCODgsCisgICdBQ1RJVkVfQVRUUklCVVRFUyc6IDB4OEI4
OSwKKyAgJ0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCc6IDB4OEI4QSwKKyAgJ0ZSQUdNRU5U
X1NIQURFUl9ERVJJVkFUSVZFX0hJTlQnOiAweDhCOEIsCisgICdTSEFESU5HX0xBTkdVQUdFX1ZF
UlNJT04nOiAweDhCOEMsCisgICdDVVJSRU5UX1BST0dSQU0nOiAweDhCOEQsCisgICdQT0lOVF9T
UFJJVEVfQ09PUkRfT1JJR0lOJzogMHg4Q0EwLAorICAnTE9XRVJfTEVGVCc6IDB4OENBMSwKKyAg
J1VQUEVSX0xFRlQnOiAweDhDQTIsCisgICdTVEVOQ0lMX0JBQ0tfUkVGJzogMHg4Q0EzLAorICAn
U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0snOiAweDhDQTQsCisgICdTVEVOQ0lMX0JBQ0tfV1JJVEVN
QVNLJzogMHg4Q0E1LAorICAnQ1VSUkVOVF9SQVNURVJfU0VDT05EQVJZX0NPTE9SJzogMHg4NDVG
LAorICAnUElYRUxfUEFDS19CVUZGRVInOiAweDg4RUIsCisgICdQSVhFTF9VTlBBQ0tfQlVGRkVS
JzogMHg4OEVDLAorICAnUElYRUxfUEFDS19CVUZGRVJfQklORElORyc6IDB4ODhFRCwKKyAgJ1BJ
WEVMX1VOUEFDS19CVUZGRVJfQklORElORyc6IDB4ODhFRiwKKyAgJ0ZMT0FUX01BVDJ4Myc6IDB4
OEI2NSwKKyAgJ0ZMT0FUX01BVDJ4NCc6IDB4OEI2NiwKKyAgJ0ZMT0FUX01BVDN4Mic6IDB4OEI2
NywKKyAgJ0ZMT0FUX01BVDN4NCc6IDB4OEI2OCwKKyAgJ0ZMT0FUX01BVDR4Mic6IDB4OEI2OSwK
KyAgJ0ZMT0FUX01BVDR4Myc6IDB4OEI2QSwKKyAgJ1NSR0InOiAweDhDNDAsCisgICdTUkdCOCc6
IDB4OEM0MSwKKyAgJ1NSR0JfQUxQSEEnOiAweDhDNDIsCisgICdTUkdCOF9BTFBIQTgnOiAweDhD
NDMsCisgICdTTFVNSU5BTkNFX0FMUEhBJzogMHg4QzQ0LAorICAnU0xVTUlOQU5DRThfQUxQSEE4
JzogMHg4QzQ1LAorICAnU0xVTUlOQU5DRSc6IDB4OEM0NiwKKyAgJ1NMVU1JTkFOQ0U4JzogMHg4
QzQ3LAorICAnQ09NUFJFU1NFRF9TUkdCJzogMHg4QzQ4LAorICAnQ09NUFJFU1NFRF9TUkdCX0FM
UEhBJzogMHg4QzQ5LAorICAnQ09NUFJFU1NFRF9TTFVNSU5BTkNFJzogMHg4QzRBLAorICAnQ09N
UFJFU1NFRF9TTFVNSU5BTkNFX0FMUEhBJzogMHg4QzRCLAorICAnQ09OVEVYVF9GTEFHX0ZPUldB
UkRfQ09NUEFUSUJMRV9CSVQnOiAweDAwMDEsCisgICdNQUpPUl9WRVJTSU9OJzogMHg4MjFCLAor
ICAnTUlOT1JfVkVSU0lPTic6IDB4ODIxQywKKyAgJ05VTV9FWFRFTlNJT05TJzogMHg4MjFELAor
ICAnQ09OVEVYVF9GTEFHUyc6IDB4ODIxRSwKKyAgJ0RFUFRIX0JVRkZFUic6IDB4ODIyMywKKyAg
J1NURU5DSUxfQlVGRkVSJzogMHg4MjI0LAorICAnQ09NUFJFU1NFRF9SRUQnOiAweDgyMjUsCisg
ICdDT01QUkVTU0VEX1JHJzogMHg4MjI2LAorICAnUkdCQTMyRic6IDB4ODgxNCwKKyAgJ1JHQjMy
Ric6IDB4ODgxNSwKKyAgJ1JHQkExNkYnOiAweDg4MUEsCisgICdSR0IxNkYnOiAweDg4MUIsCisg
ICdWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVInOiAweDg4RkQsCisgICdNQVhfQVJSQVlfVEVY
VFVSRV9MQVlFUlMnOiAweDg4RkYsCisgICdNSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQnOiAweDg5
MDQsCisgICdNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQnOiAweDg5MDUsCisgICdDTEFNUF9WRVJU
RVhfQ09MT1InOiAweDg5MUEsCisgICdDTEFNUF9GUkFHTUVOVF9DT0xPUic6IDB4ODkxQiwKKyAg
J0NMQU1QX1JFQURfQ09MT1InOiAweDg5MUMsCisgICdGSVhFRF9PTkxZJzogMHg4OTFELAorICAn
VEVYVFVSRV9SRURfVFlQRSc6IDB4OEMxMCwKKyAgJ1RFWFRVUkVfR1JFRU5fVFlQRSc6IDB4OEMx
MSwKKyAgJ1RFWFRVUkVfQkxVRV9UWVBFJzogMHg4QzEyLAorICAnVEVYVFVSRV9BTFBIQV9UWVBF
JzogMHg4QzEzLAorICAnVEVYVFVSRV9MVU1JTkFOQ0VfVFlQRSc6IDB4OEMxNCwKKyAgJ1RFWFRV
UkVfSU5URU5TSVRZX1RZUEUnOiAweDhDMTUsCisgICdURVhUVVJFX0RFUFRIX1RZUEUnOiAweDhD
MTYsCisgICdVTlNJR05FRF9OT1JNQUxJWkVEJzogMHg4QzE3LAorICAnVEVYVFVSRV8xRF9BUlJB
WSc6IDB4OEMxOCwKKyAgJ1BST1hZX1RFWFRVUkVfMURfQVJSQVknOiAweDhDMTksCisgICdURVhU
VVJFXzJEX0FSUkFZJzogMHg4QzFBLAorICAnUFJPWFlfVEVYVFVSRV8yRF9BUlJBWSc6IDB4OEMx
QiwKKyAgJ1RFWFRVUkVfQklORElOR18xRF9BUlJBWSc6IDB4OEMxQywKKyAgJ1RFWFRVUkVfQklO
RElOR18yRF9BUlJBWSc6IDB4OEMxRCwKKyAgJ1IxMUZfRzExRl9CMTBGJzogMHg4QzNBLAorICAn
VU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVic6IDB4OEMzQiwKKyAgJ1JHQjlfRTUnOiAweDhD
M0QsCisgICdVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYnOiAweDhDM0UsCisgICdURVhUVVJFX1NI
QVJFRF9TSVpFJzogMHg4QzNGLAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xF
TkdUSCc6IDB4OEM3NiwKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERSc6IDB4OEM3
RiwKKyAgJ01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyc6IDB4OEM4
MCwKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyc6IDB4OEM4MywKKyAgJ1RSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfU1RBUlQnOiAweDhDODQsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX1NJWkUnOiAweDhDODUsCisgICdQUklNSVRJVkVTX0dFTkVSQVRFRCc6IDB4OEM4NywK
KyAgJ1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4nOiAweDhDODgsCisgICdS
QVNURVJJWkVSX0RJU0NBUkQnOiAweDhDODksCisgICdNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lO
VEVSTEVBVkVEX0NPTVBPTkVOVFMnOiAweDhDOEEsCisgICdNQVhfVFJBTlNGT1JNX0ZFRURCQUNL
X1NFUEFSQVRFX0FUVFJJQlMnOiAweDhDOEIsCisgICdJTlRFUkxFQVZFRF9BVFRSSUJTJzogMHg4
QzhDLAorICAnU0VQQVJBVEVfQVRUUklCUyc6IDB4OEM4RCwKKyAgJ1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVInOiAweDhDOEUsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcn
OiAweDhDOEYsCisgICdSR0JBMzJVSSc6IDB4OEQ3MCwKKyAgJ1JHQjMyVUknOiAweDhENzEsCisg
ICdSR0JBMTZVSSc6IDB4OEQ3NiwKKyAgJ1JHQjE2VUknOiAweDhENzcsCisgICdSR0JBOFVJJzog
MHg4RDdDLAorICAnUkdCOFVJJzogMHg4RDdELAorICAnUkdCQTMySSc6IDB4OEQ4MiwKKyAgJ1JH
QjMySSc6IDB4OEQ4MywKKyAgJ1JHQkExNkknOiAweDhEODgsCisgICdSR0IxNkknOiAweDhEODks
CisgICdSR0JBOEknOiAweDhEOEUsCisgICdSR0I4SSc6IDB4OEQ4RiwKKyAgJ1JFRF9JTlRFR0VS
JzogMHg4RDk0LAorICAnR1JFRU5fSU5URUdFUic6IDB4OEQ5NSwKKyAgJ0JMVUVfSU5URUdFUic6
IDB4OEQ5NiwKKyAgJ0FMUEhBX0lOVEVHRVInOiAweDhEOTcsCisgICdSR0JfSU5URUdFUic6IDB4
OEQ5OCwKKyAgJ1JHQkFfSU5URUdFUic6IDB4OEQ5OSwKKyAgJ0JHUl9JTlRFR0VSJzogMHg4RDlB
LAorICAnQkdSQV9JTlRFR0VSJzogMHg4RDlCLAorICAnU0FNUExFUl8xRF9BUlJBWSc6IDB4OERD
MCwKKyAgJ1NBTVBMRVJfMkRfQVJSQVknOiAweDhEQzEsCisgICdTQU1QTEVSXzFEX0FSUkFZX1NI
QURPVyc6IDB4OERDMywKKyAgJ1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XJzogMHg4REM0LAorICAn
U0FNUExFUl9DVUJFX1NIQURPVyc6IDB4OERDNSwKKyAgJ1VOU0lHTkVEX0lOVF9WRUMyJzogMHg4
REM2LAorICAnVU5TSUdORURfSU5UX1ZFQzMnOiAweDhEQzcsCisgICdVTlNJR05FRF9JTlRfVkVD
NCc6IDB4OERDOCwKKyAgJ0lOVF9TQU1QTEVSXzFEJzogMHg4REM5LAorICAnSU5UX1NBTVBMRVJf
MkQnOiAweDhEQ0EsCisgICdJTlRfU0FNUExFUl8zRCc6IDB4OERDQiwKKyAgJ0lOVF9TQU1QTEVS
X0NVQkUnOiAweDhEQ0MsCisgICdJTlRfU0FNUExFUl8xRF9BUlJBWSc6IDB4OERDRSwKKyAgJ0lO
VF9TQU1QTEVSXzJEX0FSUkFZJzogMHg4RENGLAorICAnVU5TSUdORURfSU5UX1NBTVBMRVJfMUQn
OiAweDhERDEsCisgICdVTlNJR05FRF9JTlRfU0FNUExFUl8yRCc6IDB4OEREMiwKKyAgJ1VOU0lH
TkVEX0lOVF9TQU1QTEVSXzNEJzogMHg4REQzLAorICAnVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VC
RSc6IDB4OERENCwKKyAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSXzFEX0FSUkFZJzogMHg4REQ2LAor
ICAnVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVknOiAweDhERDcsCisgICdRVUVSWV9XQUlU
JzogMHg4RTEzLAorICAnUVVFUllfTk9fV0FJVCc6IDB4OEUxNCwKKyAgJ1FVRVJZX0JZX1JFR0lP
Tl9XQUlUJzogMHg4RTE1LAorICAnUVVFUllfQllfUkVHSU9OX05PX1dBSVQnOiAweDhFMTYsCisg
ICdNVUxUSVNBTVBMRV8zREZYJzogMHg4NkIyLAorICAnU0FNUExFX0JVRkZFUlNfM0RGWCc6IDB4
ODZCMywKKyAgJ1NBTVBMRVNfM0RGWCc6IDB4ODZCNCwKKyAgJ01VTFRJU0FNUExFX0JJVF8zREZY
JzogMHgyMDAwMDAwMCwKKyAgJ0NPTVBSRVNTRURfUkdCX0ZYVDFfM0RGWCc6IDB4ODZCMCwKKyAg
J0NPTVBSRVNTRURfUkdCQV9GWFQxXzNERlgnOiAweDg2QjEsCisgICdVTlBBQ0tfQ0xJRU5UX1NU
T1JBR0VfQVBQTEUnOiAweDg1QjIsCisgICdFTEVNRU5UX0FSUkFZX0FQUExFJzogMHg4NzY4LAor
ICAnRUxFTUVOVF9BUlJBWV9UWVBFX0FQUExFJzogMHg4NzY5LAorICAnRUxFTUVOVF9BUlJBWV9Q
T0lOVEVSX0FQUExFJzogMHg4NzZBLAorICAnSEFMRl9BUFBMRSc6IDB4MTQwQiwKKyAgJ1JHQkFf
RkxPQVQzMl9BUFBMRSc6IDB4ODgxNCwKKyAgJ1JHQl9GTE9BVDMyX0FQUExFJzogMHg4ODE1LAor
ICAnQUxQSEFfRkxPQVQzMl9BUFBMRSc6IDB4ODgxNiwKKyAgJ0lOVEVOU0lUWV9GTE9BVDMyX0FQ
UExFJzogMHg4ODE3LAorICAnTFVNSU5BTkNFX0ZMT0FUMzJfQVBQTEUnOiAweDg4MTgsCisgICdM
VU1JTkFOQ0VfQUxQSEFfRkxPQVQzMl9BUFBMRSc6IDB4ODgxOSwKKyAgJ1JHQkFfRkxPQVQxNl9B
UFBMRSc6IDB4ODgxQSwKKyAgJ1JHQl9GTE9BVDE2X0FQUExFJzogMHg4ODFCLAorICAnQUxQSEFf
RkxPQVQxNl9BUFBMRSc6IDB4ODgxQywKKyAgJ0lOVEVOU0lUWV9GTE9BVDE2X0FQUExFJzogMHg4
ODFELAorICAnTFVNSU5BTkNFX0ZMT0FUMTZfQVBQTEUnOiAweDg4MUUsCisgICdMVU1JTkFOQ0Vf
QUxQSEFfRkxPQVQxNl9BUFBMRSc6IDB4ODgxRiwKKyAgJ0NPTE9SX0ZMT0FUX0FQUExFJzogMHg4
QTBGLAorICAnQlVGRkVSX1NFUklBTElaRURfTU9ESUZZX0FQUExFJzogMHg4QTEyLAorICAnQlVG
RkVSX0ZMVVNISU5HX1VOTUFQX0FQUExFJzogMHg4QTEzLAorICAnTUlOX1BCVUZGRVJfVklFV1BP
UlRfRElNU19BUFBMRSc6IDB4OEExMCwKKyAgJ0xJR0hUX01PREVMX1NQRUNVTEFSX1ZFQ1RPUl9B
UFBMRSc6IDB4ODVCMCwKKyAgJ1RFWFRVUkVfUkFOR0VfTEVOR1RIX0FQUExFJzogMHg4NUI3LAor
ICAnVEVYVFVSRV9SQU5HRV9QT0lOVEVSX0FQUExFJzogMHg4NUI4LAorICAnVEVYVFVSRV9TVE9S
QUdFX0hJTlRfQVBQTEUnOiAweDg1QkMsCisgICdTVE9SQUdFX1BSSVZBVEVfQVBQTEUnOiAweDg1
QkQsCisgICdTVE9SQUdFX0NBQ0hFRF9BUFBMRSc6IDB4ODVCRSwKKyAgJ1NUT1JBR0VfU0hBUkVE
X0FQUExFJzogMHg4NUJGLAorICAnVFJBTlNGT1JNX0hJTlRfQVBQTEUnOiAweDg1QjEsCisgICdW
RVJURVhfQVJSQVlfQklORElOR19BUFBMRSc6IDB4ODVCNSwKKyAgJ1ZFUlRFWF9BUlJBWV9SQU5H
RV9BUFBMRSc6IDB4ODUxRCwKKyAgJ1ZFUlRFWF9BUlJBWV9SQU5HRV9MRU5HVEhfQVBQTEUnOiAw
eDg1MUUsCisgICdWRVJURVhfQVJSQVlfU1RPUkFHRV9ISU5UX0FQUExFJzogMHg4NTFGLAorICAn
TUFYX1ZFUlRFWF9BUlJBWV9SQU5HRV9FTEVNRU5UX0FQUExFJzogMHg4NTIwLAorICAnVkVSVEVY
X0FSUkFZX1JBTkdFX1BPSU5URVJfQVBQTEUnOiAweDg1MjEsCisgICdTVE9SQUdFX0NBQ0hFRF9B
UFBMRSc6IDB4ODVCRSwKKyAgJ1NUT1JBR0VfU0hBUkVEX0FQUExFJzogMHg4NUJGLAorICAnWUNC
Q1JfNDIyX0FQUExFJzogMHg4NUI5LAorICAnVU5TSUdORURfU0hPUlRfOF84X0FQUExFJzogMHg4
NUJBLAorICAnVU5TSUdORURfU0hPUlRfOF84X1JFVl9BUFBMRSc6IDB4ODVCQiwKKyAgJ1JHQkFf
RkxPQVRfTU9ERV9BUkInOiAweDg4MjAsCisgICdDTEFNUF9WRVJURVhfQ09MT1JfQVJCJzogMHg4
OTFBLAorICAnQ0xBTVBfRlJBR01FTlRfQ09MT1JfQVJCJzogMHg4OTFCLAorICAnQ0xBTVBfUkVB
RF9DT0xPUl9BUkInOiAweDg5MUMsCisgICdGSVhFRF9PTkxZX0FSQic6IDB4ODkxRCwKKyAgJ0RF
UFRIX0NPTVBPTkVOVDMyRic6IDB4OENBQywKKyAgJ0RFUFRIMzJGX1NURU5DSUw4JzogMHg4Q0FE
LAorICAnRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWJzogMHg4REFELAorICAnREVQVEhf
Q09NUE9ORU5UMTZfQVJCJzogMHg4MUE1LAorICAnREVQVEhfQ09NUE9ORU5UMjRfQVJCJzogMHg4
MUE2LAorICAnREVQVEhfQ09NUE9ORU5UMzJfQVJCJzogMHg4MUE3LAorICAnVEVYVFVSRV9ERVBU
SF9TSVpFX0FSQic6IDB4ODg0QSwKKyAgJ0RFUFRIX1RFWFRVUkVfTU9ERV9BUkInOiAweDg4NEIs
CisgICdNQVhfRFJBV19CVUZGRVJTX0FSQic6IDB4ODgyNCwKKyAgJ0RSQVdfQlVGRkVSMF9BUkIn
OiAweDg4MjUsCisgICdEUkFXX0JVRkZFUjFfQVJCJzogMHg4ODI2LAorICAnRFJBV19CVUZGRVIy
X0FSQic6IDB4ODgyNywKKyAgJ0RSQVdfQlVGRkVSM19BUkInOiAweDg4MjgsCisgICdEUkFXX0JV
RkZFUjRfQVJCJzogMHg4ODI5LAorICAnRFJBV19CVUZGRVI1X0FSQic6IDB4ODgyQSwKKyAgJ0RS
QVdfQlVGRkVSNl9BUkInOiAweDg4MkIsCisgICdEUkFXX0JVRkZFUjdfQVJCJzogMHg4ODJDLAor
ICAnRFJBV19CVUZGRVI4X0FSQic6IDB4ODgyRCwKKyAgJ0RSQVdfQlVGRkVSOV9BUkInOiAweDg4
MkUsCisgICdEUkFXX0JVRkZFUjEwX0FSQic6IDB4ODgyRiwKKyAgJ0RSQVdfQlVGRkVSMTFfQVJC
JzogMHg4ODMwLAorICAnRFJBV19CVUZGRVIxMl9BUkInOiAweDg4MzEsCisgICdEUkFXX0JVRkZF
UjEzX0FSQic6IDB4ODgzMiwKKyAgJ0RSQVdfQlVGRkVSMTRfQVJCJzogMHg4ODMzLAorICAnRFJB
V19CVUZGRVIxNV9BUkInOiAweDg4MzQsCisgICdGUkFHTUVOVF9QUk9HUkFNX0FSQic6IDB4ODgw
NCwKKyAgJ1BST0dSQU1fQUxVX0lOU1RSVUNUSU9OU19BUkInOiAweDg4MDUsCisgICdQUk9HUkFN
X1RFWF9JTlNUUlVDVElPTlNfQVJCJzogMHg4ODA2LAorICAnUFJPR1JBTV9URVhfSU5ESVJFQ1RJ
T05TX0FSQic6IDB4ODgwNywKKyAgJ1BST0dSQU1fTkFUSVZFX0FMVV9JTlNUUlVDVElPTlNfQVJC
JzogMHg4ODA4LAorICAnUFJPR1JBTV9OQVRJVkVfVEVYX0lOU1RSVUNUSU9OU19BUkInOiAweDg4
MDksCisgICdQUk9HUkFNX05BVElWRV9URVhfSU5ESVJFQ1RJT05TX0FSQic6IDB4ODgwQSwKKyAg
J01BWF9QUk9HUkFNX0FMVV9JTlNUUlVDVElPTlNfQVJCJzogMHg4ODBCLAorICAnTUFYX1BST0dS
QU1fVEVYX0lOU1RSVUNUSU9OU19BUkInOiAweDg4MEMsCisgICdNQVhfUFJPR1JBTV9URVhfSU5E
SVJFQ1RJT05TX0FSQic6IDB4ODgwRCwKKyAgJ01BWF9QUk9HUkFNX05BVElWRV9BTFVfSU5TVFJV
Q1RJT05TX0FSQic6IDB4ODgwRSwKKyAgJ01BWF9QUk9HUkFNX05BVElWRV9URVhfSU5TVFJVQ1RJ
T05TX0FSQic6IDB4ODgwRiwKKyAgJ01BWF9QUk9HUkFNX05BVElWRV9URVhfSU5ESVJFQ1RJT05T
X0FSQic6IDB4ODgxMCwKKyAgJ01BWF9URVhUVVJFX0NPT1JEU19BUkInOiAweDg4NzEsCisgICdN
QVhfVEVYVFVSRV9JTUFHRV9VTklUU19BUkInOiAweDg4NzIsCisgICdGUkFHTUVOVF9TSEFERVJf
QVJCJzogMHg4QjMwLAorICAnTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UU19BUkInOiAw
eDhCNDksCisgICdGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX0FSQic6IDB4OEI4QiwK
KyAgJ0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OJzogMHgwNTA2LAorICAnRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyc6IDB4ODIxMCwKKyAgJ0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUnOiAweDgyMTEsCisgICdGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1JFRF9TSVpFJzogMHg4MjEyLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9T
SVpFJzogMHg4MjEzLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUnOiAweDgy
MTQsCisgICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkUnOiAweDgyMTUsCisgICdG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkUnOiAweDgyMTYsCisgICdGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRSc6IDB4ODIxNywKKyAgJ0ZSQU1FQlVGRkVSX0RFRkFV
TFQnOiAweDgyMTgsCisgICdGUkFNRUJVRkZFUl9VTkRFRklORUQnOiAweDgyMTksCisgICdERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQnOiAweDgyMUEsCisgICdJTkRFWCc6IDB4ODIyMiwKKyAgJ01B
WF9SRU5ERVJCVUZGRVJfU0laRSc6IDB4ODRFOCwKKyAgJ0RFUFRIX1NURU5DSUwnOiAweDg0Rjks
CisgICdVTlNJR05FRF9JTlRfMjRfOCc6IDB4ODRGQSwKKyAgJ0RFUFRIMjRfU1RFTkNJTDgnOiAw
eDg4RjAsCisgICdURVhUVVJFX1NURU5DSUxfU0laRSc6IDB4ODhGMSwKKyAgJ1VOU0lHTkVEX05P
Uk1BTElaRUQnOiAweDhDMTcsCisgICdTUkdCJzogMHg4QzQwLAorICAnRFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HJzogMHg4Q0E2LAorICAnRlJBTUVCVUZGRVJfQklORElORyc6IDB4OENBNiwKKyAg
J1JFTkRFUkJVRkZFUl9CSU5ESU5HJzogMHg4Q0E3LAorICAnUkVBRF9GUkFNRUJVRkZFUic6IDB4
OENBOCwKKyAgJ0RSQVdfRlJBTUVCVUZGRVInOiAweDhDQTksCisgICdSRUFEX0ZSQU1FQlVGRkVS
X0JJTkRJTkcnOiAweDhDQUEsCisgICdSRU5ERVJCVUZGRVJfU0FNUExFUyc6IDB4OENBQiwKKyAg
J0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUnOiAweDhDRDAsCisgICdGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJzogMHg4Q0QxLAorICAnRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0xFVkVMJzogMHg4Q0QyLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UnOiAweDhDRDMsCisgICdGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1RFWFRVUkVfTEFZRVInOiAweDhDRDQsCisgICdGUkFNRUJVRkZFUl9DT01QTEVURSc6IDB4
OENENSwKKyAgJ0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCc6IDB4OENENiwKKyAg
J0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UJzogMHg4Q0Q3LAorICAn
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9EUkFXX0JVRkZFUic6IDB4OENEQiwKKyAgJ0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfUkVBRF9CVUZGRVInOiAweDhDREMsCisgICdGUkFNRUJVRkZFUl9VTlNV
UFBPUlRFRCc6IDB4OENERCwKKyAgJ01BWF9DT0xPUl9BVFRBQ0hNRU5UUyc6IDB4OENERiwKKyAg
J0NPTE9SX0FUVEFDSE1FTlQwJzogMHg4Q0UwLAorICAnQ09MT1JfQVRUQUNITUVOVDEnOiAweDhD
RTEsCisgICdDT0xPUl9BVFRBQ0hNRU5UMic6IDB4OENFMiwKKyAgJ0NPTE9SX0FUVEFDSE1FTlQz
JzogMHg4Q0UzLAorICAnQ09MT1JfQVRUQUNITUVOVDQnOiAweDhDRTQsCisgICdDT0xPUl9BVFRB
Q0hNRU5UNSc6IDB4OENFNSwKKyAgJ0NPTE9SX0FUVEFDSE1FTlQ2JzogMHg4Q0U2LAorICAnQ09M
T1JfQVRUQUNITUVOVDcnOiAweDhDRTcsCisgICdDT0xPUl9BVFRBQ0hNRU5UOCc6IDB4OENFOCwK
KyAgJ0NPTE9SX0FUVEFDSE1FTlQ5JzogMHg4Q0U5LAorICAnQ09MT1JfQVRUQUNITUVOVDEwJzog
MHg4Q0VBLAorICAnQ09MT1JfQVRUQUNITUVOVDExJzogMHg4Q0VCLAorICAnQ09MT1JfQVRUQUNI
TUVOVDEyJzogMHg4Q0VDLAorICAnQ09MT1JfQVRUQUNITUVOVDEzJzogMHg4Q0VELAorICAnQ09M
T1JfQVRUQUNITUVOVDE0JzogMHg4Q0VFLAorICAnQ09MT1JfQVRUQUNITUVOVDE1JzogMHg4Q0VG
LAorICAnREVQVEhfQVRUQUNITUVOVCc6IDB4OEQwMCwKKyAgJ1NURU5DSUxfQVRUQUNITUVOVCc6
IDB4OEQyMCwKKyAgJ0ZSQU1FQlVGRkVSJzogMHg4RDQwLAorICAnUkVOREVSQlVGRkVSJzogMHg4
RDQxLAorICAnUkVOREVSQlVGRkVSX1dJRFRIJzogMHg4RDQyLAorICAnUkVOREVSQlVGRkVSX0hF
SUdIVCc6IDB4OEQ0MywKKyAgJ1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQnOiAweDhENDQs
CisgICdTVEVOQ0lMX0lOREVYMSc6IDB4OEQ0NiwKKyAgJ1NURU5DSUxfSU5ERVg0JzogMHg4RDQ3
LAorICAnU1RFTkNJTF9JTkRFWDgnOiAweDhENDgsCisgICdTVEVOQ0lMX0lOREVYMTYnOiAweDhE
NDksCisgICdSRU5ERVJCVUZGRVJfUkVEX1NJWkUnOiAweDhENTAsCisgICdSRU5ERVJCVUZGRVJf
R1JFRU5fU0laRSc6IDB4OEQ1MSwKKyAgJ1JFTkRFUkJVRkZFUl9CTFVFX1NJWkUnOiAweDhENTIs
CisgICdSRU5ERVJCVUZGRVJfQUxQSEFfU0laRSc6IDB4OEQ1MywKKyAgJ1JFTkRFUkJVRkZFUl9E
RVBUSF9TSVpFJzogMHg4RDU0LAorICAnUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSc6IDB4OEQ1
NSwKKyAgJ0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUnOiAweDhENTYsCisgICdN
QVhfU0FNUExFUyc6IDB4OEQ1NywKKyAgJ0ZSQU1FQlVGRkVSX1NSR0InOiAweDhEQjksCisgICdM
SU5FU19BREpBQ0VOQ1lfQVJCJzogMHhBLAorICAnTElORV9TVFJJUF9BREpBQ0VOQ1lfQVJCJzog
MHhCLAorICAnVFJJQU5HTEVTX0FESkFDRU5DWV9BUkInOiAweEMsCisgICdUUklBTkdMRV9TVFJJ
UF9BREpBQ0VOQ1lfQVJCJzogMHhELAorICAnUFJPR1JBTV9QT0lOVF9TSVpFX0FSQic6IDB4ODY0
MiwKKyAgJ01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTX0FSQic6IDB4OEMyOSwKKyAg
J0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUic6IDB4OENENCwKKyAgJ0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfTEFZRVJFRF9BUkInOiAweDhEQTcsCisgICdGUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0xBWUVSX1RBUkdFVFNfQVJCJzogMHg4REE4LAorICAnRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9MQVlFUl9DT1VOVF9BUkInOiAweDhEQTksCisgICdHRU9NRVRSWV9TSEFERVJfQVJC
JzogMHg4REQ5LAorICAnR0VPTUVUUllfVkVSVElDRVNfT1VUX0FSQic6IDB4OEREQSwKKyAgJ0dF
T01FVFJZX0lOUFVUX1RZUEVfQVJCJzogMHg4RERCLAorICAnR0VPTUVUUllfT1VUUFVUX1RZUEVf
QVJCJzogMHg4RERDLAorICAnTUFYX0dFT01FVFJZX1ZBUllJTkdfQ09NUE9ORU5UU19BUkInOiAw
eDhEREQsCisgICdNQVhfVkVSVEVYX1ZBUllJTkdfQ09NUE9ORU5UU19BUkInOiAweDhEREUsCisg
ICdNQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTX0FSQic6IDB4OERERiwKKyAgJ01BWF9H
RU9NRVRSWV9PVVRQVVRfVkVSVElDRVNfQVJCJzogMHg4REUwLAorICAnTUFYX0dFT01FVFJZX1RP
VEFMX09VVFBVVF9DT01QT05FTlRTX0FSQic6IDB4OERFMSwKKyAgJ0hBTEZfRkxPQVRfQVJCJzog
MHgxNDBCLAorICAnSEFMRl9GTE9BVCc6IDB4MTQwQiwKKyAgJ0NPTlNUQU5UX0NPTE9SJzogMHg4
MDAxLAorICAnT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SJzogMHg4MDAyLAorICAnQ09OU1RBTlRf
QUxQSEEnOiAweDgwMDMsCisgICdPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEnOiAweDgwMDQsCisg
ICdCTEVORF9DT0xPUic6IDB4ODAwNSwKKyAgJ0ZVTkNfQUREJzogMHg4MDA2LAorICAnTUlOJzog
MHg4MDA3LAorICAnTUFYJzogMHg4MDA4LAorICAnQkxFTkRfRVFVQVRJT04nOiAweDgwMDksCisg
ICdGVU5DX1NVQlRSQUNUJzogMHg4MDBBLAorICAnRlVOQ19SRVZFUlNFX1NVQlRSQUNUJzogMHg4
MDBCLAorICAnQ09OVk9MVVRJT05fMUQnOiAweDgwMTAsCisgICdDT05WT0xVVElPTl8yRCc6IDB4
ODAxMSwKKyAgJ1NFUEFSQUJMRV8yRCc6IDB4ODAxMiwKKyAgJ0NPTlZPTFVUSU9OX0JPUkRFUl9N
T0RFJzogMHg4MDEzLAorICAnQ09OVk9MVVRJT05fRklMVEVSX1NDQUxFJzogMHg4MDE0LAorICAn
Q09OVk9MVVRJT05fRklMVEVSX0JJQVMnOiAweDgwMTUsCisgICdSRURVQ0UnOiAweDgwMTYsCisg
ICdDT05WT0xVVElPTl9GT1JNQVQnOiAweDgwMTcsCisgICdDT05WT0xVVElPTl9XSURUSCc6IDB4
ODAxOCwKKyAgJ0NPTlZPTFVUSU9OX0hFSUdIVCc6IDB4ODAxOSwKKyAgJ01BWF9DT05WT0xVVElP
Tl9XSURUSCc6IDB4ODAxQSwKKyAgJ01BWF9DT05WT0xVVElPTl9IRUlHSFQnOiAweDgwMUIsCisg
ICdQT1NUX0NPTlZPTFVUSU9OX1JFRF9TQ0FMRSc6IDB4ODAxQywKKyAgJ1BPU1RfQ09OVk9MVVRJ
T05fR1JFRU5fU0NBTEUnOiAweDgwMUQsCisgICdQT1NUX0NPTlZPTFVUSU9OX0JMVUVfU0NBTEUn
OiAweDgwMUUsCisgICdQT1NUX0NPTlZPTFVUSU9OX0FMUEhBX1NDQUxFJzogMHg4MDFGLAorICAn
UE9TVF9DT05WT0xVVElPTl9SRURfQklBUyc6IDB4ODAyMCwKKyAgJ1BPU1RfQ09OVk9MVVRJT05f
R1JFRU5fQklBUyc6IDB4ODAyMSwKKyAgJ1BPU1RfQ09OVk9MVVRJT05fQkxVRV9CSUFTJzogMHg4
MDIyLAorICAnUE9TVF9DT05WT0xVVElPTl9BTFBIQV9CSUFTJzogMHg4MDIzLAorICAnSElTVE9H
UkFNJzogMHg4MDI0LAorICAnUFJPWFlfSElTVE9HUkFNJzogMHg4MDI1LAorICAnSElTVE9HUkFN
X1dJRFRIJzogMHg4MDI2LAorICAnSElTVE9HUkFNX0ZPUk1BVCc6IDB4ODAyNywKKyAgJ0hJU1RP
R1JBTV9SRURfU0laRSc6IDB4ODAyOCwKKyAgJ0hJU1RPR1JBTV9HUkVFTl9TSVpFJzogMHg4MDI5
LAorICAnSElTVE9HUkFNX0JMVUVfU0laRSc6IDB4ODAyQSwKKyAgJ0hJU1RPR1JBTV9BTFBIQV9T
SVpFJzogMHg4MDJCLAorICAnSElTVE9HUkFNX0xVTUlOQU5DRV9TSVpFJzogMHg4MDJDLAorICAn
SElTVE9HUkFNX1NJTksnOiAweDgwMkQsCisgICdNSU5NQVgnOiAweDgwMkUsCisgICdNSU5NQVhf
Rk9STUFUJzogMHg4MDJGLAorICAnTUlOTUFYX1NJTksnOiAweDgwMzAsCisgICdUQUJMRV9UT09f
TEFSR0UnOiAweDgwMzEsCisgICdDT0xPUl9NQVRSSVgnOiAweDgwQjEsCisgICdDT0xPUl9NQVRS
SVhfU1RBQ0tfREVQVEgnOiAweDgwQjIsCisgICdNQVhfQ09MT1JfTUFUUklYX1NUQUNLX0RFUFRI
JzogMHg4MEIzLAorICAnUE9TVF9DT0xPUl9NQVRSSVhfUkVEX1NDQUxFJzogMHg4MEI0LAorICAn
UE9TVF9DT0xPUl9NQVRSSVhfR1JFRU5fU0NBTEUnOiAweDgwQjUsCisgICdQT1NUX0NPTE9SX01B
VFJJWF9CTFVFX1NDQUxFJzogMHg4MEI2LAorICAnUE9TVF9DT0xPUl9NQVRSSVhfQUxQSEFfU0NB
TEUnOiAweDgwQjcsCisgICdQT1NUX0NPTE9SX01BVFJJWF9SRURfQklBUyc6IDB4ODBCOCwKKyAg
J1BPU1RfQ09MT1JfTUFUUklYX0dSRUVOX0JJQVMnOiAweDgwQjksCisgICdQT1NUX0NPTE9SX01B
VFJJWF9CTFVFX0JJQVMnOiAweDgwQkEsCisgICdQT1NUX0NPTE9SX01BVFJJWF9BTFBIQV9CSUFT
JzogMHg4MEJCLAorICAnQ09MT1JfVEFCTEUnOiAweDgwRDAsCisgICdQT1NUX0NPTlZPTFVUSU9O
X0NPTE9SX1RBQkxFJzogMHg4MEQxLAorICAnUE9TVF9DT0xPUl9NQVRSSVhfQ09MT1JfVEFCTEUn
OiAweDgwRDIsCisgICdQUk9YWV9DT0xPUl9UQUJMRSc6IDB4ODBEMywKKyAgJ1BST1hZX1BPU1Rf
Q09OVk9MVVRJT05fQ09MT1JfVEFCTEUnOiAweDgwRDQsCisgICdQUk9YWV9QT1NUX0NPTE9SX01B
VFJJWF9DT0xPUl9UQUJMRSc6IDB4ODBENSwKKyAgJ0NPTE9SX1RBQkxFX1NDQUxFJzogMHg4MEQ2
LAorICAnQ09MT1JfVEFCTEVfQklBUyc6IDB4ODBENywKKyAgJ0NPTE9SX1RBQkxFX0ZPUk1BVCc6
IDB4ODBEOCwKKyAgJ0NPTE9SX1RBQkxFX1dJRFRIJzogMHg4MEQ5LAorICAnQ09MT1JfVEFCTEVf
UkVEX1NJWkUnOiAweDgwREEsCisgICdDT0xPUl9UQUJMRV9HUkVFTl9TSVpFJzogMHg4MERCLAor
ICAnQ09MT1JfVEFCTEVfQkxVRV9TSVpFJzogMHg4MERDLAorICAnQ09MT1JfVEFCTEVfQUxQSEFf
U0laRSc6IDB4ODBERCwKKyAgJ0NPTE9SX1RBQkxFX0xVTUlOQU5DRV9TSVpFJzogMHg4MERFLAor
ICAnQ09MT1JfVEFCTEVfSU5URU5TSVRZX1NJWkUnOiAweDgwREYsCisgICdJR05PUkVfQk9SREVS
JzogMHg4MTUwLAorICAnQ09OU1RBTlRfQk9SREVSJzogMHg4MTUxLAorICAnV1JBUF9CT1JERVIn
OiAweDgxNTIsCisgICdSRVBMSUNBVEVfQk9SREVSJzogMHg4MTUzLAorICAnQ09OVk9MVVRJT05f
Qk9SREVSX0NPTE9SJzogMHg4MTU0LAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FS
Qic6IDB4ODhGRSwKKyAgJ01BUF9SRUFEX0JJVCc6IDB4MDAwMSwKKyAgJ01BUF9XUklURV9CSVQn
OiAweDAwMDIsCisgICdNQVBfSU5WQUxJREFURV9SQU5HRV9CSVQnOiAweDAwMDQsCisgICdNQVBf
SU5WQUxJREFURV9CVUZGRVJfQklUJzogMHgwMDA4LAorICAnTUFQX0ZMVVNIX0VYUExJQ0lUX0JJ
VCc6IDB4MDAxMCwKKyAgJ01BUF9VTlNZTkNIUk9OSVpFRF9CSVQnOiAweDAwMjAsCisgICdNQVRS
SVhfUEFMRVRURV9BUkInOiAweDg4NDAsCisgICdNQVhfTUFUUklYX1BBTEVUVEVfU1RBQ0tfREVQ
VEhfQVJCJzogMHg4ODQxLAorICAnTUFYX1BBTEVUVEVfTUFUUklDRVNfQVJCJzogMHg4ODQyLAor
ICAnQ1VSUkVOVF9QQUxFVFRFX01BVFJJWF9BUkInOiAweDg4NDMsCisgICdNQVRSSVhfSU5ERVhf
QVJSQVlfQVJCJzogMHg4ODQ0LAorICAnQ1VSUkVOVF9NQVRSSVhfSU5ERVhfQVJCJzogMHg4ODQ1
LAorICAnTUFUUklYX0lOREVYX0FSUkFZX1NJWkVfQVJCJzogMHg4ODQ2LAorICAnTUFUUklYX0lO
REVYX0FSUkFZX1RZUEVfQVJCJzogMHg4ODQ3LAorICAnTUFUUklYX0lOREVYX0FSUkFZX1NUUklE
RV9BUkInOiAweDg4NDgsCisgICdNQVRSSVhfSU5ERVhfQVJSQVlfUE9JTlRFUl9BUkInOiAweDg4
NDksCisgICdNVUxUSVNBTVBMRV9BUkInOiAweDgwOUQsCisgICdTQU1QTEVfQUxQSEFfVE9fQ09W
RVJBR0VfQVJCJzogMHg4MDlFLAorICAnU0FNUExFX0FMUEhBX1RPX09ORV9BUkInOiAweDgwOUYs
CisgICdTQU1QTEVfQ09WRVJBR0VfQVJCJzogMHg4MEEwLAorICAnU0FNUExFX0JVRkZFUlNfQVJC
JzogMHg4MEE4LAorICAnU0FNUExFU19BUkInOiAweDgwQTksCisgICdTQU1QTEVfQ09WRVJBR0Vf
VkFMVUVfQVJCJzogMHg4MEFBLAorICAnU0FNUExFX0NPVkVSQUdFX0lOVkVSVF9BUkInOiAweDgw
QUIsCisgICdNVUxUSVNBTVBMRV9CSVRfQVJCJzogMHgyMDAwMDAwMCwKKyAgJ1RFWFRVUkUwX0FS
Qic6IDB4ODRDMCwKKyAgJ1RFWFRVUkUxX0FSQic6IDB4ODRDMSwKKyAgJ1RFWFRVUkUyX0FSQic6
IDB4ODRDMiwKKyAgJ1RFWFRVUkUzX0FSQic6IDB4ODRDMywKKyAgJ1RFWFRVUkU0X0FSQic6IDB4
ODRDNCwKKyAgJ1RFWFRVUkU1X0FSQic6IDB4ODRDNSwKKyAgJ1RFWFRVUkU2X0FSQic6IDB4ODRD
NiwKKyAgJ1RFWFRVUkU3X0FSQic6IDB4ODRDNywKKyAgJ1RFWFRVUkU4X0FSQic6IDB4ODRDOCwK
KyAgJ1RFWFRVUkU5X0FSQic6IDB4ODRDOSwKKyAgJ1RFWFRVUkUxMF9BUkInOiAweDg0Q0EsCisg
ICdURVhUVVJFMTFfQVJCJzogMHg4NENCLAorICAnVEVYVFVSRTEyX0FSQic6IDB4ODRDQywKKyAg
J1RFWFRVUkUxM19BUkInOiAweDg0Q0QsCisgICdURVhUVVJFMTRfQVJCJzogMHg4NENFLAorICAn
VEVYVFVSRTE1X0FSQic6IDB4ODRDRiwKKyAgJ1RFWFRVUkUxNl9BUkInOiAweDg0RDAsCisgICdU
RVhUVVJFMTdfQVJCJzogMHg4NEQxLAorICAnVEVYVFVSRTE4X0FSQic6IDB4ODREMiwKKyAgJ1RF
WFRVUkUxOV9BUkInOiAweDg0RDMsCisgICdURVhUVVJFMjBfQVJCJzogMHg4NEQ0LAorICAnVEVY
VFVSRTIxX0FSQic6IDB4ODRENSwKKyAgJ1RFWFRVUkUyMl9BUkInOiAweDg0RDYsCisgICdURVhU
VVJFMjNfQVJCJzogMHg4NEQ3LAorICAnVEVYVFVSRTI0X0FSQic6IDB4ODREOCwKKyAgJ1RFWFRV
UkUyNV9BUkInOiAweDg0RDksCisgICdURVhUVVJFMjZfQVJCJzogMHg4NERBLAorICAnVEVYVFVS
RTI3X0FSQic6IDB4ODREQiwKKyAgJ1RFWFRVUkUyOF9BUkInOiAweDg0REMsCisgICdURVhUVVJF
MjlfQVJCJzogMHg4NERELAorICAnVEVYVFVSRTMwX0FSQic6IDB4ODRERSwKKyAgJ1RFWFRVUkUz
MV9BUkInOiAweDg0REYsCisgICdBQ1RJVkVfVEVYVFVSRV9BUkInOiAweDg0RTAsCisgICdDTElF
TlRfQUNUSVZFX1RFWFRVUkVfQVJCJzogMHg4NEUxLAorICAnTUFYX1RFWFRVUkVfVU5JVFNfQVJC
JzogMHg4NEUyLAorICAnUVVFUllfQ09VTlRFUl9CSVRTX0FSQic6IDB4ODg2NCwKKyAgJ0NVUlJF
TlRfUVVFUllfQVJCJzogMHg4ODY1LAorICAnUVVFUllfUkVTVUxUX0FSQic6IDB4ODg2NiwKKyAg
J1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQVJCJzogMHg4ODY3LAorICAnU0FNUExFU19QQVNTRURf
QVJCJzogMHg4OTE0LAorICAnUElYRUxfUEFDS19CVUZGRVJfQVJCJzogMHg4OEVCLAorICAnUElY
RUxfVU5QQUNLX0JVRkZFUl9BUkInOiAweDg4RUMsCisgICdQSVhFTF9QQUNLX0JVRkZFUl9CSU5E
SU5HX0FSQic6IDB4ODhFRCwKKyAgJ1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElOR19BUkInOiAw
eDg4RUYsCisgICdQT0lOVF9TSVpFX01JTl9BUkInOiAweDgxMjYsCisgICdQT0lOVF9TSVpFX01B
WF9BUkInOiAweDgxMjcsCisgICdQT0lOVF9GQURFX1RIUkVTSE9MRF9TSVpFX0FSQic6IDB4ODEy
OCwKKyAgJ1BPSU5UX0RJU1RBTkNFX0FUVEVOVUFUSU9OX0FSQic6IDB4ODEyOSwKKyAgJ1BPSU5U
X1NQUklURV9BUkInOiAweDg4NjEsCisgICdDT09SRF9SRVBMQUNFX0FSQic6IDB4ODg2MiwKKyAg
J1BST0dSQU1fT0JKRUNUX0FSQic6IDB4OEI0MCwKKyAgJ1NIQURFUl9PQkpFQ1RfQVJCJzogMHg4
QjQ4LAorICAnT0JKRUNUX1RZUEVfQVJCJzogMHg4QjRFLAorICAnT0JKRUNUX1NVQlRZUEVfQVJC
JzogMHg4QjRGLAorICAnRkxPQVRfVkVDMl9BUkInOiAweDhCNTAsCisgICdGTE9BVF9WRUMzX0FS
Qic6IDB4OEI1MSwKKyAgJ0ZMT0FUX1ZFQzRfQVJCJzogMHg4QjUyLAorICAnSU5UX1ZFQzJfQVJC
JzogMHg4QjUzLAorICAnSU5UX1ZFQzNfQVJCJzogMHg4QjU0LAorICAnSU5UX1ZFQzRfQVJCJzog
MHg4QjU1LAorICAnQk9PTF9BUkInOiAweDhCNTYsCisgICdCT09MX1ZFQzJfQVJCJzogMHg4QjU3
LAorICAnQk9PTF9WRUMzX0FSQic6IDB4OEI1OCwKKyAgJ0JPT0xfVkVDNF9BUkInOiAweDhCNTks
CisgICdGTE9BVF9NQVQyX0FSQic6IDB4OEI1QSwKKyAgJ0ZMT0FUX01BVDNfQVJCJzogMHg4QjVC
LAorICAnRkxPQVRfTUFUNF9BUkInOiAweDhCNUMsCisgICdTQU1QTEVSXzFEX0FSQic6IDB4OEI1
RCwKKyAgJ1NBTVBMRVJfMkRfQVJCJzogMHg4QjVFLAorICAnU0FNUExFUl8zRF9BUkInOiAweDhC
NUYsCisgICdTQU1QTEVSX0NVQkVfQVJCJzogMHg4QjYwLAorICAnU0FNUExFUl8xRF9TSEFET1df
QVJCJzogMHg4QjYxLAorICAnU0FNUExFUl8yRF9TSEFET1dfQVJCJzogMHg4QjYyLAorICAnU0FN
UExFUl8yRF9SRUNUX0FSQic6IDB4OEI2MywKKyAgJ1NBTVBMRVJfMkRfUkVDVF9TSEFET1dfQVJC
JzogMHg4QjY0LAorICAnT0JKRUNUX0RFTEVURV9TVEFUVVNfQVJCJzogMHg4QjgwLAorICAnT0JK
RUNUX0NPTVBJTEVfU1RBVFVTX0FSQic6IDB4OEI4MSwKKyAgJ09CSkVDVF9MSU5LX1NUQVRVU19B
UkInOiAweDhCODIsCisgICdPQkpFQ1RfVkFMSURBVEVfU1RBVFVTX0FSQic6IDB4OEI4MywKKyAg
J09CSkVDVF9JTkZPX0xPR19MRU5HVEhfQVJCJzogMHg4Qjg0LAorICAnT0JKRUNUX0FUVEFDSEVE
X09CSkVDVFNfQVJCJzogMHg4Qjg1LAorICAnT0JKRUNUX0FDVElWRV9VTklGT1JNU19BUkInOiAw
eDhCODYsCisgICdPQkpFQ1RfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSF9BUkInOiAweDhCODcs
CisgICdBQ1RJVkVfVU5JRk9STV9CTE9DS19NQVhfTkFNRV9MRU5HVEgnOiAweDhBMzUsCisgICdV
TklGT1JNX05BTUVfTEVOR1RIJzogMHg4QTM5LAorICAnVU5JRk9STV9CTE9DS19OQU1FX0xFTkdU
SCc6IDB4OEE0MSwKKyAgJ09CSkVDVF9TSEFERVJfU09VUkNFX0xFTkdUSF9BUkInOiAweDhCODgs
CisgICdTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fQVJCJzogMHg4QjhDLAorICAnVEVYVFVSRV9D
T01QQVJFX01PREVfQVJCJzogMHg4ODRDLAorICAnVEVYVFVSRV9DT01QQVJFX0ZVTkNfQVJCJzog
MHg4ODRELAorICAnQ09NUEFSRV9SX1RPX1RFWFRVUkVfQVJCJzogMHg4ODRFLAorICAnVEVYVFVS
RV9DT01QQVJFX0ZBSUxfVkFMVUVfQVJCJzogMHg4MEJGLAorICAnQ0xBTVBfVE9fQk9SREVSX0FS
Qic6IDB4ODEyRCwKKyAgJ1RFWFRVUkVfQlVGRkVSX0FSQic6IDB4OEMyQSwKKyAgJ01BWF9URVhU
VVJFX0JVRkZFUl9TSVpFX0FSQic6IDB4OEMyQiwKKyAgJ1RFWFRVUkVfQklORElOR19CVUZGRVJf
QVJCJzogMHg4QzJDLAorICAnVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HX0FSQic6
IDB4OEMyRCwKKyAgJ1RFWFRVUkVfQlVGRkVSX0ZPUk1BVF9BUkInOiAweDhDMkUsCisgICdDT01Q
UkVTU0VEX0FMUEhBX0FSQic6IDB4ODRFOSwKKyAgJ0NPTVBSRVNTRURfTFVNSU5BTkNFX0FSQic6
IDB4ODRFQSwKKyAgJ0NPTVBSRVNTRURfTFVNSU5BTkNFX0FMUEhBX0FSQic6IDB4ODRFQiwKKyAg
J0NPTVBSRVNTRURfSU5URU5TSVRZX0FSQic6IDB4ODRFQywKKyAgJ0NPTVBSRVNTRURfUkdCX0FS
Qic6IDB4ODRFRCwKKyAgJ0NPTVBSRVNTRURfUkdCQV9BUkInOiAweDg0RUUsCisgICdURVhUVVJF
X0NPTVBSRVNTSU9OX0hJTlRfQVJCJzogMHg4NEVGLAorICAnVEVYVFVSRV9DT01QUkVTU0VEX0lN
QUdFX1NJWkVfQVJCJzogMHg4NkEwLAorICAnVEVYVFVSRV9DT01QUkVTU0VEX0FSQic6IDB4ODZB
MSwKKyAgJ05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU19BUkInOiAweDg2QTIsCisgICdD
T01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU19BUkInOiAweDg2QTMsCisgICdDT01QUkVTU0VEX1JF
RF9SR1RDMSc6IDB4OERCQiwKKyAgJ0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMSc6IDB4OERC
QywKKyAgJ0NPTVBSRVNTRURfUkdfUkdUQzInOiAweDhEQkQsCisgICdDT01QUkVTU0VEX1NJR05F
RF9SR19SR1RDMic6IDB4OERCRSwKKyAgJ05PUk1BTF9NQVBfQVJCJzogMHg4NTExLAorICAnUkVG
TEVDVElPTl9NQVBfQVJCJzogMHg4NTEyLAorICAnVEVYVFVSRV9DVUJFX01BUF9BUkInOiAweDg1
MTMsCisgICdURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJCJzogMHg4NTE0LAorICAnVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YX0FSQic6IDB4ODUxNSwKKyAgJ1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWF9BUkInOiAweDg1MTYsCisgICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lf
QVJCJzogMHg4NTE3LAorICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZX0FSQic6IDB4ODUx
OCwKKyAgJ1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9BUkInOiAweDg1MTksCisgICdURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfQVJCJzogMHg4NTFBLAorICAnUFJPWFlfVEVYVFVSRV9D
VUJFX01BUF9BUkInOiAweDg1MUIsCisgICdNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFX0FSQic6
IDB4ODUxQywKKyAgJ1NVQlRSQUNUX0FSQic6IDB4ODRFNywKKyAgJ0NPTUJJTkVfQVJCJzogMHg4
NTcwLAorICAnQ09NQklORV9SR0JfQVJCJzogMHg4NTcxLAorICAnQ09NQklORV9BTFBIQV9BUkIn
OiAweDg1NzIsCisgICdSR0JfU0NBTEVfQVJCJzogMHg4NTczLAorICAnQUREX1NJR05FRF9BUkIn
OiAweDg1NzQsCisgICdJTlRFUlBPTEFURV9BUkInOiAweDg1NzUsCisgICdDT05TVEFOVF9BUkIn
OiAweDg1NzYsCisgICdQUklNQVJZX0NPTE9SX0FSQic6IDB4ODU3NywKKyAgJ1BSRVZJT1VTX0FS
Qic6IDB4ODU3OCwKKyAgJ1NPVVJDRTBfUkdCX0FSQic6IDB4ODU4MCwKKyAgJ1NPVVJDRTFfUkdC
X0FSQic6IDB4ODU4MSwKKyAgJ1NPVVJDRTJfUkdCX0FSQic6IDB4ODU4MiwKKyAgJ1NPVVJDRTBf
QUxQSEFfQVJCJzogMHg4NTg4LAorICAnU09VUkNFMV9BTFBIQV9BUkInOiAweDg1ODksCisgICdT
T1VSQ0UyX0FMUEhBX0FSQic6IDB4ODU4QSwKKyAgJ09QRVJBTkQwX1JHQl9BUkInOiAweDg1OTAs
CisgICdPUEVSQU5EMV9SR0JfQVJCJzogMHg4NTkxLAorICAnT1BFUkFORDJfUkdCX0FSQic6IDB4
ODU5MiwKKyAgJ09QRVJBTkQwX0FMUEhBX0FSQic6IDB4ODU5OCwKKyAgJ09QRVJBTkQxX0FMUEhB
X0FSQic6IDB4ODU5OSwKKyAgJ09QRVJBTkQyX0FMUEhBX0FSQic6IDB4ODU5QSwKKyAgJ0RPVDNf
UkdCX0FSQic6IDB4ODZBRSwKKyAgJ0RPVDNfUkdCQV9BUkInOiAweDg2QUYsCisgICdSR0JBMzJG
X0FSQic6IDB4ODgxNCwKKyAgJ1JHQjMyRl9BUkInOiAweDg4MTUsCisgICdBTFBIQTMyRl9BUkIn
OiAweDg4MTYsCisgICdJTlRFTlNJVFkzMkZfQVJCJzogMHg4ODE3LAorICAnTFVNSU5BTkNFMzJG
X0FSQic6IDB4ODgxOCwKKyAgJ0xVTUlOQU5DRV9BTFBIQTMyRl9BUkInOiAweDg4MTksCisgICdS
R0JBMTZGX0FSQic6IDB4ODgxQSwKKyAgJ1JHQjE2Rl9BUkInOiAweDg4MUIsCisgICdBTFBIQTE2
Rl9BUkInOiAweDg4MUMsCisgICdJTlRFTlNJVFkxNkZfQVJCJzogMHg4ODFELAorICAnTFVNSU5B
TkNFMTZGX0FSQic6IDB4ODgxRSwKKyAgJ0xVTUlOQU5DRV9BTFBIQTE2Rl9BUkInOiAweDg4MUYs
CisgICdURVhUVVJFX1JFRF9UWVBFX0FSQic6IDB4OEMxMCwKKyAgJ1RFWFRVUkVfR1JFRU5fVFlQ
RV9BUkInOiAweDhDMTEsCisgICdURVhUVVJFX0JMVUVfVFlQRV9BUkInOiAweDhDMTIsCisgICdU
RVhUVVJFX0FMUEhBX1RZUEVfQVJCJzogMHg4QzEzLAorICAnVEVYVFVSRV9MVU1JTkFOQ0VfVFlQ
RV9BUkInOiAweDhDMTQsCisgICdURVhUVVJFX0lOVEVOU0lUWV9UWVBFX0FSQic6IDB4OEMxNSwK
KyAgJ1RFWFRVUkVfREVQVEhfVFlQRV9BUkInOiAweDhDMTYsCisgICdVTlNJR05FRF9OT1JNQUxJ
WkVEX0FSQic6IDB4OEMxNywKKyAgJ01JUlJPUkVEX1JFUEVBVF9BUkInOiAweDgzNzAsCisgICdU
RVhUVVJFX1JFQ1RBTkdMRV9BUkInOiAweDg0RjUsCisgICdURVhUVVJFX0JJTkRJTkdfUkVDVEFO
R0xFX0FSQic6IDB4ODRGNiwKKyAgJ1BST1hZX1RFWFRVUkVfUkVDVEFOR0xFX0FSQic6IDB4ODRG
NywKKyAgJ01BWF9SRUNUQU5HTEVfVEVYVFVSRV9TSVpFX0FSQic6IDB4ODRGOCwKKyAgJ1NBTVBM
RVJfMkRfUkVDVF9BUkInOiAweDhCNjMsCisgICdTQU1QTEVSXzJEX1JFQ1RfU0hBRE9XX0FSQic6
IDB4OEI2NCwKKyAgJ1JFRCc6IDB4MTkwMywKKyAgJ1JHJzogMHg4MjI3LAorICAnUkdfSU5URUdF
Uic6IDB4ODIyOCwKKyAgJ1I4JzogMHg4MjI5LAorICAnUjE2JzogMHg4MjJBLAorICAnUkc4Jzog
MHg4MjJCLAorICAnUkcxNic6IDB4ODIyQywKKyAgJ1IxNkYnOiAweDgyMkQsCisgICdSMzJGJzog
MHg4MjJFLAorICAnUkcxNkYnOiAweDgyMkYsCisgICdSRzMyRic6IDB4ODIzMCwKKyAgJ1I4SSc6
IDB4ODIzMSwKKyAgJ1I4VUknOiAweDgyMzIsCisgICdSMTZJJzogMHg4MjMzLAorICAnUjE2VUkn
OiAweDgyMzQsCisgICdSMzJJJzogMHg4MjM1LAorICAnUjMyVUknOiAweDgyMzYsCisgICdSRzhJ
JzogMHg4MjM3LAorICAnUkc4VUknOiAweDgyMzgsCisgICdSRzE2SSc6IDB4ODIzOSwKKyAgJ1JH
MTZVSSc6IDB4ODIzQSwKKyAgJ1JHMzJJJzogMHg4MjNCLAorICAnUkczMlVJJzogMHg4MjNDLAor
ICAnVFJBTlNQT1NFX01PREVMVklFV19NQVRSSVhfQVJCJzogMHg4NEUzLAorICAnVFJBTlNQT1NF
X1BST0pFQ1RJT05fTUFUUklYX0FSQic6IDB4ODRFNCwKKyAgJ1RSQU5TUE9TRV9URVhUVVJFX01B
VFJJWF9BUkInOiAweDg0RTUsCisgICdUUkFOU1BPU0VfQ09MT1JfTUFUUklYX0FSQic6IDB4ODRF
NiwKKyAgJ1ZFUlRFWF9BUlJBWV9CSU5ESU5HJzogMHg4NUI1LAorICAnTU9ERUxWSUVXMF9BUkIn
OiAweDE3MDAsCisgICdNT0RFTFZJRVcxX0FSQic6IDB4ODUwQSwKKyAgJ01BWF9WRVJURVhfVU5J
VFNfQVJCJzogMHg4NkE0LAorICAnQUNUSVZFX1ZFUlRFWF9VTklUU19BUkInOiAweDg2QTUsCisg
ICdXRUlHSFRfU1VNX1VOSVRZX0FSQic6IDB4ODZBNiwKKyAgJ1ZFUlRFWF9CTEVORF9BUkInOiAw
eDg2QTcsCisgICdDVVJSRU5UX1dFSUdIVF9BUkInOiAweDg2QTgsCisgICdXRUlHSFRfQVJSQVlf
VFlQRV9BUkInOiAweDg2QTksCisgICdXRUlHSFRfQVJSQVlfU1RSSURFX0FSQic6IDB4ODZBQSwK
KyAgJ1dFSUdIVF9BUlJBWV9TSVpFX0FSQic6IDB4ODZBQiwKKyAgJ1dFSUdIVF9BUlJBWV9QT0lO
VEVSX0FSQic6IDB4ODZBQywKKyAgJ1dFSUdIVF9BUlJBWV9BUkInOiAweDg2QUQsCisgICdNT0RF
TFZJRVcyX0FSQic6IDB4ODcyMiwKKyAgJ01PREVMVklFVzNfQVJCJzogMHg4NzIzLAorICAnTU9E
RUxWSUVXNF9BUkInOiAweDg3MjQsCisgICdNT0RFTFZJRVc1X0FSQic6IDB4ODcyNSwKKyAgJ01P
REVMVklFVzZfQVJCJzogMHg4NzI2LAorICAnTU9ERUxWSUVXN19BUkInOiAweDg3MjcsCisgICdN
T0RFTFZJRVc4X0FSQic6IDB4ODcyOCwKKyAgJ01PREVMVklFVzlfQVJCJzogMHg4NzI5LAorICAn
TU9ERUxWSUVXMTBfQVJCJzogMHg4NzJBLAorICAnTU9ERUxWSUVXMTFfQVJCJzogMHg4NzJCLAor
ICAnTU9ERUxWSUVXMTJfQVJCJzogMHg4NzJDLAorICAnTU9ERUxWSUVXMTNfQVJCJzogMHg4NzJE
LAorICAnTU9ERUxWSUVXMTRfQVJCJzogMHg4NzJFLAorICAnTU9ERUxWSUVXMTVfQVJCJzogMHg4
NzJGLAorICAnTU9ERUxWSUVXMTZfQVJCJzogMHg4NzMwLAorICAnTU9ERUxWSUVXMTdfQVJCJzog
MHg4NzMxLAorICAnTU9ERUxWSUVXMThfQVJCJzogMHg4NzMyLAorICAnTU9ERUxWSUVXMTlfQVJC
JzogMHg4NzMzLAorICAnTU9ERUxWSUVXMjBfQVJCJzogMHg4NzM0LAorICAnTU9ERUxWSUVXMjFf
QVJCJzogMHg4NzM1LAorICAnTU9ERUxWSUVXMjJfQVJCJzogMHg4NzM2LAorICAnTU9ERUxWSUVX
MjNfQVJCJzogMHg4NzM3LAorICAnTU9ERUxWSUVXMjRfQVJCJzogMHg4NzM4LAorICAnTU9ERUxW
SUVXMjVfQVJCJzogMHg4NzM5LAorICAnTU9ERUxWSUVXMjZfQVJCJzogMHg4NzNBLAorICAnTU9E
RUxWSUVXMjdfQVJCJzogMHg4NzNCLAorICAnTU9ERUxWSUVXMjhfQVJCJzogMHg4NzNDLAorICAn
TU9ERUxWSUVXMjlfQVJCJzogMHg4NzNELAorICAnTU9ERUxWSUVXMzBfQVJCJzogMHg4NzNFLAor
ICAnTU9ERUxWSUVXMzFfQVJCJzogMHg4NzNGLAorICAnQlVGRkVSX1NJWkVfQVJCJzogMHg4NzY0
LAorICAnQlVGRkVSX1VTQUdFX0FSQic6IDB4ODc2NSwKKyAgJ0FSUkFZX0JVRkZFUl9BUkInOiAw
eDg4OTIsCisgICdFTEVNRU5UX0FSUkFZX0JVRkZFUl9BUkInOiAweDg4OTMsCisgICdBUlJBWV9C
VUZGRVJfQklORElOR19BUkInOiAweDg4OTQsCisgICdFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5E
SU5HX0FSQic6IDB4ODg5NSwKKyAgJ1ZFUlRFWF9BUlJBWV9CVUZGRVJfQklORElOR19BUkInOiAw
eDg4OTYsCisgICdOT1JNQUxfQVJSQVlfQlVGRkVSX0JJTkRJTkdfQVJCJzogMHg4ODk3LAorICAn
Q09MT1JfQVJSQVlfQlVGRkVSX0JJTkRJTkdfQVJCJzogMHg4ODk4LAorICAnSU5ERVhfQVJSQVlf
QlVGRkVSX0JJTkRJTkdfQVJCJzogMHg4ODk5LAorICAnVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZG
RVJfQklORElOR19BUkInOiAweDg4OUEsCisgICdFREdFX0ZMQUdfQVJSQVlfQlVGRkVSX0JJTkRJ
TkdfQVJCJzogMHg4ODlCLAorICAnU0VDT05EQVJZX0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5H
X0FSQic6IDB4ODg5QywKKyAgJ0ZPR19DT09SRElOQVRFX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FS
Qic6IDB4ODg5RCwKKyAgJ1dFSUdIVF9BUlJBWV9CVUZGRVJfQklORElOR19BUkInOiAweDg4OUUs
CisgICdWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQic6IDB4ODg5RiwKKyAg
J1JFQURfT05MWV9BUkInOiAweDg4QjgsCisgICdXUklURV9PTkxZX0FSQic6IDB4ODhCOSwKKyAg
J1JFQURfV1JJVEVfQVJCJzogMHg4OEJBLAorICAnQlVGRkVSX0FDQ0VTU19BUkInOiAweDg4QkIs
CisgICdCVUZGRVJfTUFQUEVEX0FSQic6IDB4ODhCQywKKyAgJ0JVRkZFUl9NQVBfUE9JTlRFUl9B
UkInOiAweDg4QkQsCisgICdTVFJFQU1fRFJBV19BUkInOiAweDg4RTAsCisgICdTVFJFQU1fUkVB
RF9BUkInOiAweDg4RTEsCisgICdTVFJFQU1fQ09QWV9BUkInOiAweDg4RTIsCisgICdTVEFUSUNf
RFJBV19BUkInOiAweDg4RTQsCisgICdTVEFUSUNfUkVBRF9BUkInOiAweDg4RTUsCisgICdTVEFU
SUNfQ09QWV9BUkInOiAweDg4RTYsCisgICdEWU5BTUlDX0RSQVdfQVJCJzogMHg4OEU4LAorICAn
RFlOQU1JQ19SRUFEX0FSQic6IDB4ODhFOSwKKyAgJ0RZTkFNSUNfQ09QWV9BUkInOiAweDg4RUEs
CisgICdDT0xPUl9TVU1fQVJCJzogMHg4NDU4LAorICAnVkVSVEVYX1BST0dSQU1fQVJCJzogMHg4
NjIwLAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEX0FSQic6IDB4ODYyMiwKKyAgJ1ZF
UlRFWF9BVFRSSUJfQVJSQVlfU0laRV9BUkInOiAweDg2MjMsCisgICdWRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERV9BUkInOiAweDg2MjQsCisgICdWRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfQVJC
JzogMHg4NjI1LAorICAnQ1VSUkVOVF9WRVJURVhfQVRUUklCX0FSQic6IDB4ODYyNiwKKyAgJ1BS
T0dSQU1fTEVOR1RIX0FSQic6IDB4ODYyNywKKyAgJ1BST0dSQU1fU1RSSU5HX0FSQic6IDB4ODYy
OCwKKyAgJ01BWF9QUk9HUkFNX01BVFJJWF9TVEFDS19ERVBUSF9BUkInOiAweDg2MkUsCisgICdN
QVhfUFJPR1JBTV9NQVRSSUNFU19BUkInOiAweDg2MkYsCisgICdDVVJSRU5UX01BVFJJWF9TVEFD
S19ERVBUSF9BUkInOiAweDg2NDAsCisgICdDVVJSRU5UX01BVFJJWF9BUkInOiAweDg2NDEsCisg
ICdWRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFX0FSQic6IDB4ODY0MiwKKyAgJ1ZFUlRFWF9QUk9H
UkFNX1RXT19TSURFX0FSQic6IDB4ODY0MywKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRF
Ul9BUkInOiAweDg2NDUsCisgICdQUk9HUkFNX0VSUk9SX1BPU0lUSU9OX0FSQic6IDB4ODY0QiwK
KyAgJ1BST0dSQU1fQklORElOR19BUkInOiAweDg2NzcsCisgICdNQVhfVkVSVEVYX0FUVFJJQlNf
QVJCJzogMHg4ODY5LAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEX0FSQic6IDB4
ODg2QSwKKyAgJ1BST0dSQU1fRVJST1JfU1RSSU5HX0FSQic6IDB4ODg3NCwKKyAgJ1BST0dSQU1f
Rk9STUFUX0FTQ0lJX0FSQic6IDB4ODg3NSwKKyAgJ1BST0dSQU1fRk9STUFUX0FSQic6IDB4ODg3
NiwKKyAgJ1BST0dSQU1fSU5TVFJVQ1RJT05TX0FSQic6IDB4ODhBMCwKKyAgJ01BWF9QUk9HUkFN
X0lOU1RSVUNUSU9OU19BUkInOiAweDg4QTEsCisgICdQUk9HUkFNX05BVElWRV9JTlNUUlVDVElP
TlNfQVJCJzogMHg4OEEyLAorICAnTUFYX1BST0dSQU1fTkFUSVZFX0lOU1RSVUNUSU9OU19BUkIn
OiAweDg4QTMsCisgICdQUk9HUkFNX1RFTVBPUkFSSUVTX0FSQic6IDB4ODhBNCwKKyAgJ01BWF9Q
Uk9HUkFNX1RFTVBPUkFSSUVTX0FSQic6IDB4ODhBNSwKKyAgJ1BST0dSQU1fTkFUSVZFX1RFTVBP
UkFSSUVTX0FSQic6IDB4ODhBNiwKKyAgJ01BWF9QUk9HUkFNX05BVElWRV9URU1QT1JBUklFU19B
UkInOiAweDg4QTcsCisgICdQUk9HUkFNX1BBUkFNRVRFUlNfQVJCJzogMHg4OEE4LAorICAnTUFY
X1BST0dSQU1fUEFSQU1FVEVSU19BUkInOiAweDg4QTksCisgICdQUk9HUkFNX05BVElWRV9QQVJB
TUVURVJTX0FSQic6IDB4ODhBQSwKKyAgJ01BWF9QUk9HUkFNX05BVElWRV9QQVJBTUVURVJTX0FS
Qic6IDB4ODhBQiwKKyAgJ1BST0dSQU1fQVRUUklCU19BUkInOiAweDg4QUMsCisgICdNQVhfUFJP
R1JBTV9BVFRSSUJTX0FSQic6IDB4ODhBRCwKKyAgJ1BST0dSQU1fTkFUSVZFX0FUVFJJQlNfQVJC
JzogMHg4OEFFLAorICAnTUFYX1BST0dSQU1fTkFUSVZFX0FUVFJJQlNfQVJCJzogMHg4OEFGLAor
ICAnUFJPR1JBTV9BRERSRVNTX1JFR0lTVEVSU19BUkInOiAweDg4QjAsCisgICdNQVhfUFJPR1JB
TV9BRERSRVNTX1JFR0lTVEVSU19BUkInOiAweDg4QjEsCisgICdQUk9HUkFNX05BVElWRV9BRERS
RVNTX1JFR0lTVEVSU19BUkInOiAweDg4QjIsCisgICdNQVhfUFJPR1JBTV9OQVRJVkVfQUREUkVT
U19SRUdJU1RFUlNfQVJCJzogMHg4OEIzLAorICAnTUFYX1BST0dSQU1fTE9DQUxfUEFSQU1FVEVS
U19BUkInOiAweDg4QjQsCisgICdNQVhfUFJPR1JBTV9FTlZfUEFSQU1FVEVSU19BUkInOiAweDg4
QjUsCisgICdQUk9HUkFNX1VOREVSX05BVElWRV9MSU1JVFNfQVJCJzogMHg4OEI2LAorICAnVFJB
TlNQT1NFX0NVUlJFTlRfTUFUUklYX0FSQic6IDB4ODhCNywKKyAgJ01BVFJJWDBfQVJCJzogMHg4
OEMwLAorICAnTUFUUklYMV9BUkInOiAweDg4QzEsCisgICdNQVRSSVgyX0FSQic6IDB4ODhDMiwK
KyAgJ01BVFJJWDNfQVJCJzogMHg4OEMzLAorICAnTUFUUklYNF9BUkInOiAweDg4QzQsCisgICdN
QVRSSVg1X0FSQic6IDB4ODhDNSwKKyAgJ01BVFJJWDZfQVJCJzogMHg4OEM2LAorICAnTUFUUklY
N19BUkInOiAweDg4QzcsCisgICdNQVRSSVg4X0FSQic6IDB4ODhDOCwKKyAgJ01BVFJJWDlfQVJC
JzogMHg4OEM5LAorICAnTUFUUklYMTBfQVJCJzogMHg4OENBLAorICAnTUFUUklYMTFfQVJCJzog
MHg4OENCLAorICAnTUFUUklYMTJfQVJCJzogMHg4OENDLAorICAnTUFUUklYMTNfQVJCJzogMHg4
OENELAorICAnTUFUUklYMTRfQVJCJzogMHg4OENFLAorICAnTUFUUklYMTVfQVJCJzogMHg4OENG
LAorICAnTUFUUklYMTZfQVJCJzogMHg4OEQwLAorICAnTUFUUklYMTdfQVJCJzogMHg4OEQxLAor
ICAnTUFUUklYMThfQVJCJzogMHg4OEQyLAorICAnTUFUUklYMTlfQVJCJzogMHg4OEQzLAorICAn
TUFUUklYMjBfQVJCJzogMHg4OEQ0LAorICAnTUFUUklYMjFfQVJCJzogMHg4OEQ1LAorICAnTUFU
UklYMjJfQVJCJzogMHg4OEQ2LAorICAnTUFUUklYMjNfQVJCJzogMHg4OEQ3LAorICAnTUFUUklY
MjRfQVJCJzogMHg4OEQ4LAorICAnTUFUUklYMjVfQVJCJzogMHg4OEQ5LAorICAnTUFUUklYMjZf
QVJCJzogMHg4OERBLAorICAnTUFUUklYMjdfQVJCJzogMHg4OERCLAorICAnTUFUUklYMjhfQVJC
JzogMHg4OERDLAorICAnTUFUUklYMjlfQVJCJzogMHg4OERELAorICAnTUFUUklYMzBfQVJCJzog
MHg4OERFLAorICAnTUFUUklYMzFfQVJCJzogMHg4OERGLAorICAnVkVSVEVYX1NIQURFUl9BUkIn
OiAweDhCMzEsCisgICdNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU19BUkInOiAweDhCNEEs
CisgICdNQVhfVkFSWUlOR19GTE9BVFNfQVJCJzogMHg4QjRCLAorICAnTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTX0FSQic6IDB4OEI0QywKKyAgJ01BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTX0FSQic6IDB4OEI0RCwKKyAgJ09CSkVDVF9BQ1RJVkVfQVRUUklCVVRFU19BUkIn
OiAweDhCODksCisgICdPQkpFQ1RfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIX0FSQic6IDB4
OEI4QSwKKyAgJ1RFWFRVUkVfUE9JTlRfTU9ERV9BVElYJzogMHg2MEIwLAorICAnVEVYVFVSRV9Q
T0lOVF9PTkVfQ09PUkRfQVRJWCc6IDB4NjBCMSwKKyAgJ1RFWFRVUkVfUE9JTlRfU1BSSVRFX0FU
SVgnOiAweDYwQjIsCisgICdQT0lOVF9TUFJJVEVfQ1VMTF9NT0RFX0FUSVgnOiAweDYwQjMsCisg
ICdQT0lOVF9TUFJJVEVfQ1VMTF9DRU5URVJfQVRJWCc6IDB4NjBCNCwKKyAgJ1BPSU5UX1NQUklU
RV9DVUxMX0NMSVBfQVRJWCc6IDB4NjBCNSwKKyAgJ01PRFVMQVRFX0FERF9BVElYJzogMHg4NzQ0
LAorICAnTU9EVUxBVEVfU0lHTkVEX0FERF9BVElYJzogMHg4NzQ1LAorICAnTU9EVUxBVEVfU1VC
VFJBQ1RfQVRJWCc6IDB4ODc0NiwKKyAgJ1NFQ09OREFSWV9DT0xPUl9BVElYJzogMHg4NzQ3LAor
ICAnVEVYVFVSRV9PVVRQVVRfUkdCX0FUSVgnOiAweDg3NDgsCisgICdURVhUVVJFX09VVFBVVF9B
TFBIQV9BVElYJzogMHg4NzQ5LAorICAnT1VUUFVUX1BPSU5UX1NJWkVfQVRJWCc6IDB4NjEwRSwK
KyAgJ01BWF9EUkFXX0JVRkZFUlNfQVRJJzogMHg4ODI0LAorICAnRFJBV19CVUZGRVIwX0FUSSc6
IDB4ODgyNSwKKyAgJ0RSQVdfQlVGRkVSMV9BVEknOiAweDg4MjYsCisgICdEUkFXX0JVRkZFUjJf
QVRJJzogMHg4ODI3LAorICAnRFJBV19CVUZGRVIzX0FUSSc6IDB4ODgyOCwKKyAgJ0RSQVdfQlVG
RkVSNF9BVEknOiAweDg4MjksCisgICdEUkFXX0JVRkZFUjVfQVRJJzogMHg4ODJBLAorICAnRFJB
V19CVUZGRVI2X0FUSSc6IDB4ODgyQiwKKyAgJ0RSQVdfQlVGRkVSN19BVEknOiAweDg4MkMsCisg
ICdEUkFXX0JVRkZFUjhfQVRJJzogMHg4ODJELAorICAnRFJBV19CVUZGRVI5X0FUSSc6IDB4ODgy
RSwKKyAgJ0RSQVdfQlVGRkVSMTBfQVRJJzogMHg4ODJGLAorICAnRFJBV19CVUZGRVIxMV9BVEkn
OiAweDg4MzAsCisgICdEUkFXX0JVRkZFUjEyX0FUSSc6IDB4ODgzMSwKKyAgJ0RSQVdfQlVGRkVS
MTNfQVRJJzogMHg4ODMyLAorICAnRFJBV19CVUZGRVIxNF9BVEknOiAweDg4MzMsCisgICdEUkFX
X0JVRkZFUjE1X0FUSSc6IDB4ODgzNCwKKyAgJ0VMRU1FTlRfQVJSQVlfQVRJJzogMHg4NzY4LAor
ICAnRUxFTUVOVF9BUlJBWV9UWVBFX0FUSSc6IDB4ODc2OSwKKyAgJ0VMRU1FTlRfQVJSQVlfUE9J
TlRFUl9BVEknOiAweDg3NkEsCisgICdCVU1QX1JPVF9NQVRSSVhfQVRJJzogMHg4Nzc1LAorICAn
QlVNUF9ST1RfTUFUUklYX1NJWkVfQVRJJzogMHg4Nzc2LAorICAnQlVNUF9OVU1fVEVYX1VOSVRT
X0FUSSc6IDB4ODc3NywKKyAgJ0JVTVBfVEVYX1VOSVRTX0FUSSc6IDB4ODc3OCwKKyAgJ0RVRFZf
QVRJJzogMHg4Nzc5LAorICAnRFU4RFY4X0FUSSc6IDB4ODc3QSwKKyAgJ0JVTVBfRU5WTUFQX0FU
SSc6IDB4ODc3QiwKKyAgJ0JVTVBfVEFSR0VUX0FUSSc6IDB4ODc3QywKKyAgJ1JFRF9CSVRfQVRJ
JzogMHgwMDAwMDAwMSwKKyAgJzJYX0JJVF9BVEknOiAweDAwMDAwMDAxLAorICAnNFhfQklUX0FU
SSc6IDB4MDAwMDAwMDIsCisgICdHUkVFTl9CSVRfQVRJJzogMHgwMDAwMDAwMiwKKyAgJ0NPTVBf
QklUX0FUSSc6IDB4MDAwMDAwMDIsCisgICdCTFVFX0JJVF9BVEknOiAweDAwMDAwMDA0LAorICAn
OFhfQklUX0FUSSc6IDB4MDAwMDAwMDQsCisgICdORUdBVEVfQklUX0FUSSc6IDB4MDAwMDAwMDQs
CisgICdCSUFTX0JJVF9BVEknOiAweDAwMDAwMDA4LAorICAnSEFMRl9CSVRfQVRJJzogMHgwMDAw
MDAwOCwKKyAgJ1FVQVJURVJfQklUX0FUSSc6IDB4MDAwMDAwMTAsCisgICdFSUdIVEhfQklUX0FU
SSc6IDB4MDAwMDAwMjAsCisgICdTQVRVUkFURV9CSVRfQVRJJzogMHgwMDAwMDA0MCwKKyAgJ0ZS
QUdNRU5UX1NIQURFUl9BVEknOiAweDg5MjAsCisgICdSRUdfMF9BVEknOiAweDg5MjEsCisgICdS
RUdfMV9BVEknOiAweDg5MjIsCisgICdSRUdfMl9BVEknOiAweDg5MjMsCisgICdSRUdfM19BVEkn
OiAweDg5MjQsCisgICdSRUdfNF9BVEknOiAweDg5MjUsCisgICdSRUdfNV9BVEknOiAweDg5MjYs
CisgICdDT05fMF9BVEknOiAweDg5NDEsCisgICdDT05fMV9BVEknOiAweDg5NDIsCisgICdDT05f
Ml9BVEknOiAweDg5NDMsCisgICdDT05fM19BVEknOiAweDg5NDQsCisgICdDT05fNF9BVEknOiAw
eDg5NDUsCisgICdDT05fNV9BVEknOiAweDg5NDYsCisgICdDT05fNl9BVEknOiAweDg5NDcsCisg
ICdDT05fN19BVEknOiAweDg5NDgsCisgICdNT1ZfQVRJJzogMHg4OTYxLAorICAnQUREX0FUSSc6
IDB4ODk2MywKKyAgJ01VTF9BVEknOiAweDg5NjQsCisgICdTVUJfQVRJJzogMHg4OTY1LAorICAn
RE9UM19BVEknOiAweDg5NjYsCisgICdET1Q0X0FUSSc6IDB4ODk2NywKKyAgJ01BRF9BVEknOiAw
eDg5NjgsCisgICdMRVJQX0FUSSc6IDB4ODk2OSwKKyAgJ0NORF9BVEknOiAweDg5NkEsCisgICdD
TkQwX0FUSSc6IDB4ODk2QiwKKyAgJ0RPVDJfQUREX0FUSSc6IDB4ODk2QywKKyAgJ1NFQ09OREFS
WV9JTlRFUlBPTEFUT1JfQVRJJzogMHg4OTZELAorICAnTlVNX0ZSQUdNRU5UX1JFR0lTVEVSU19B
VEknOiAweDg5NkUsCisgICdOVU1fRlJBR01FTlRfQ09OU1RBTlRTX0FUSSc6IDB4ODk2RiwKKyAg
J05VTV9QQVNTRVNfQVRJJzogMHg4OTcwLAorICAnTlVNX0lOU1RSVUNUSU9OU19QRVJfUEFTU19B
VEknOiAweDg5NzEsCisgICdOVU1fSU5TVFJVQ1RJT05TX1RPVEFMX0FUSSc6IDB4ODk3MiwKKyAg
J05VTV9JTlBVVF9JTlRFUlBPTEFUT1JfQ09NUE9ORU5UU19BVEknOiAweDg5NzMsCisgICdOVU1f
TE9PUEJBQ0tfQ09NUE9ORU5UU19BVEknOiAweDg5NzQsCisgICdDT0xPUl9BTFBIQV9QQUlSSU5H
X0FUSSc6IDB4ODk3NSwKKyAgJ1NXSVpaTEVfU1RSX0FUSSc6IDB4ODk3NiwKKyAgJ1NXSVpaTEVf
U1RRX0FUSSc6IDB4ODk3NywKKyAgJ1NXSVpaTEVfU1RSX0RSX0FUSSc6IDB4ODk3OCwKKyAgJ1NX
SVpaTEVfU1RRX0RRX0FUSSc6IDB4ODk3OSwKKyAgJ1NXSVpaTEVfU1RSUV9BVEknOiAweDg5N0Es
CisgICdTV0laWkxFX1NUUlFfRFFfQVRJJzogMHg4OTdCLAorICAnUE5fVFJJQU5HTEVTX0FUSSc6
IDB4ODdGMCwKKyAgJ01BWF9QTl9UUklBTkdMRVNfVEVTU0VMQVRJT05fTEVWRUxfQVRJJzogMHg4
N0YxLAorICAnUE5fVFJJQU5HTEVTX1BPSU5UX01PREVfQVRJJzogMHg4N0YyLAorICAnUE5fVFJJ
QU5HTEVTX05PUk1BTF9NT0RFX0FUSSc6IDB4ODdGMywKKyAgJ1BOX1RSSUFOR0xFU19URVNTRUxB
VElPTl9MRVZFTF9BVEknOiAweDg3RjQsCisgICdQTl9UUklBTkdMRVNfUE9JTlRfTU9ERV9MSU5F
QVJfQVRJJzogMHg4N0Y1LAorICAnUE5fVFJJQU5HTEVTX1BPSU5UX01PREVfQ1VCSUNfQVRJJzog
MHg4N0Y2LAorICAnUE5fVFJJQU5HTEVTX05PUk1BTF9NT0RFX0xJTkVBUl9BVEknOiAweDg3Rjcs
CisgICdQTl9UUklBTkdMRVNfTk9STUFMX01PREVfUVVBRFJBVElDX0FUSSc6IDB4ODdGOCwKKyAg
J1NURU5DSUxfQkFDS19GVU5DX0FUSSc6IDB4ODgwMCwKKyAgJ1NURU5DSUxfQkFDS19GQUlMX0FU
SSc6IDB4ODgwMSwKKyAgJ1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfQVRJJzogMHg4ODAy
LAorICAnU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU19BVEknOiAweDg4MDMsCisgICdURVhU
X0ZSQUdNRU5UX1NIQURFUl9BVEknOiAweDgyMDAsCisgICdDT01QUkVTU0VEX0xVTUlOQU5DRV9B
TFBIQV8zRENfQVRJJzogMHg4ODM3LAorICAnTU9EVUxBVEVfQUREX0FUSSc6IDB4ODc0NCwKKyAg
J01PRFVMQVRFX1NJR05FRF9BRERfQVRJJzogMHg4NzQ1LAorICAnTU9EVUxBVEVfU1VCVFJBQ1Rf
QVRJJzogMHg4NzQ2LAorICAnUkdCQV9GTE9BVDMyX0FUSSc6IDB4ODgxNCwKKyAgJ1JHQl9GTE9B
VDMyX0FUSSc6IDB4ODgxNSwKKyAgJ0FMUEhBX0ZMT0FUMzJfQVRJJzogMHg4ODE2LAorICAnSU5U
RU5TSVRZX0ZMT0FUMzJfQVRJJzogMHg4ODE3LAorICAnTFVNSU5BTkNFX0ZMT0FUMzJfQVRJJzog
MHg4ODE4LAorICAnTFVNSU5BTkNFX0FMUEhBX0ZMT0FUMzJfQVRJJzogMHg4ODE5LAorICAnUkdC
QV9GTE9BVDE2X0FUSSc6IDB4ODgxQSwKKyAgJ1JHQl9GTE9BVDE2X0FUSSc6IDB4ODgxQiwKKyAg
J0FMUEhBX0ZMT0FUMTZfQVRJJzogMHg4ODFDLAorICAnSU5URU5TSVRZX0ZMT0FUMTZfQVRJJzog
MHg4ODFELAorICAnTFVNSU5BTkNFX0ZMT0FUMTZfQVRJJzogMHg4ODFFLAorICAnTFVNSU5BTkNF
X0FMUEhBX0ZMT0FUMTZfQVRJJzogMHg4ODFGLAorICAnTUlSUk9SX0NMQU1QX0FUSSc6IDB4ODc0
MiwKKyAgJ01JUlJPUl9DTEFNUF9UT19FREdFX0FUSSc6IDB4ODc0MywKKyAgJ1NUQVRJQ19BVEkn
OiAweDg3NjAsCisgICdEWU5BTUlDX0FUSSc6IDB4ODc2MSwKKyAgJ1BSRVNFUlZFX0FUSSc6IDB4
ODc2MiwKKyAgJ0RJU0NBUkRfQVRJJzogMHg4NzYzLAorICAnT0JKRUNUX0JVRkZFUl9TSVpFX0FU
SSc6IDB4ODc2NCwKKyAgJ09CSkVDVF9CVUZGRVJfVVNBR0VfQVRJJzogMHg4NzY1LAorICAnQVJS
QVlfT0JKRUNUX0JVRkZFUl9BVEknOiAweDg3NjYsCisgICdBUlJBWV9PQkpFQ1RfT0ZGU0VUX0FU
SSc6IDB4ODc2NywKKyAgJ01BWF9WRVJURVhfU1RSRUFNU19BVEknOiAweDg3NkIsCisgICdWRVJU
RVhfU09VUkNFX0FUSSc6IDB4ODc2QywKKyAgJ1ZFUlRFWF9TVFJFQU0wX0FUSSc6IDB4ODc2RCwK
KyAgJ1ZFUlRFWF9TVFJFQU0xX0FUSSc6IDB4ODc2RSwKKyAgJ1ZFUlRFWF9TVFJFQU0yX0FUSSc6
IDB4ODc2RiwKKyAgJ1ZFUlRFWF9TVFJFQU0zX0FUSSc6IDB4ODc3MCwKKyAgJ1ZFUlRFWF9TVFJF
QU00X0FUSSc6IDB4ODc3MSwKKyAgJ1ZFUlRFWF9TVFJFQU01X0FUSSc6IDB4ODc3MiwKKyAgJ1ZF
UlRFWF9TVFJFQU02X0FUSSc6IDB4ODc3MywKKyAgJ1ZFUlRFWF9TVFJFQU03X0FUSSc6IDB4ODc3
NCwKKyAgJzQyMl9FWFQnOiAweDgwQ0MsCisgICc0MjJfUkVWX0VYVCc6IDB4ODBDRCwKKyAgJzQy
Ml9BVkVSQUdFX0VYVCc6IDB4ODBDRSwKKyAgJzQyMl9SRVZfQVZFUkFHRV9FWFQnOiAweDgwQ0Ys
CisgICdDR19WRVJURVhfU0hBREVSX0VYVCc6IDB4ODkwRSwKKyAgJ0NHX0ZSQUdNRU5UX1NIQURF
Ul9FWFQnOiAweDg5MEYsCisgICdBQkdSX0VYVCc6IDB4ODAwMCwKKyAgJ0JHUl9FWFQnOiAweDgw
RTAsCisgICdCR1JBX0VYVCc6IDB4ODBFMSwKKyAgJ01BWF9WRVJURVhfQklOREFCTEVfVU5JRk9S
TVNfRVhUJzogMHg4REUyLAorICAnTUFYX0ZSQUdNRU5UX0JJTkRBQkxFX1VOSUZPUk1TX0VYVCc6
IDB4OERFMywKKyAgJ01BWF9HRU9NRVRSWV9CSU5EQUJMRV9VTklGT1JNU19FWFQnOiAweDhERTQs
CisgICdNQVhfQklOREFCTEVfVU5JRk9STV9TSVpFX0VYVCc6IDB4OERFRCwKKyAgJ1VOSUZPUk1f
QlVGRkVSX0VYVCc6IDB4OERFRSwKKyAgJ1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdfRVhUJzogMHg4
REVGLAorICAnQ09OU1RBTlRfQ09MT1JfRVhUJzogMHg4MDAxLAorICAnT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SX0VYVCc6IDB4ODAwMiwKKyAgJ0NPTlNUQU5UX0FMUEhBX0VYVCc6IDB4ODAwMywK
KyAgJ09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV9FWFQnOiAweDgwMDQsCisgICdCTEVORF9DT0xP
Ul9FWFQnOiAweDgwMDUsCisgICdCTEVORF9FUVVBVElPTl9SR0JfRVhUJzogMHg4MDA5LAorICAn
QkxFTkRfRVFVQVRJT05fQUxQSEFfRVhUJzogMHg4ODNELAorICAnQkxFTkRfRFNUX1JHQl9FWFQn
OiAweDgwQzgsCisgICdCTEVORF9TUkNfUkdCX0VYVCc6IDB4ODBDOSwKKyAgJ0JMRU5EX0RTVF9B
TFBIQV9FWFQnOiAweDgwQ0EsCisgICdCTEVORF9TUkNfQUxQSEFfRVhUJzogMHg4MENCLAorICAn
RlVOQ19BRERfRVhUJzogMHg4MDA2LAorICAnTUlOX0VYVCc6IDB4ODAwNywKKyAgJ01BWF9FWFQn
OiAweDgwMDgsCisgICdCTEVORF9FUVVBVElPTl9FWFQnOiAweDgwMDksCisgICdGVU5DX1NVQlRS
QUNUX0VYVCc6IDB4ODAwQSwKKyAgJ0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF9FWFQnOiAweDgwMEIs
CisgICdDTElQX1ZPTFVNRV9DTElQUElOR19ISU5UX0VYVCc6IDB4ODBGMCwKKyAgJ0NNWUtfRVhU
JzogMHg4MDBDLAorICAnQ01ZS0FfRVhUJzogMHg4MDBELAorICAnUEFDS19DTVlLX0hJTlRfRVhU
JzogMHg4MDBFLAorICAnVU5QQUNLX0NNWUtfSElOVF9FWFQnOiAweDgwMEYsCisgICdBUlJBWV9F
TEVNRU5UX0xPQ0tfRklSU1RfRVhUJzogMHg4MUE4LAorICAnQVJSQVlfRUxFTUVOVF9MT0NLX0NP
VU5UX0VYVCc6IDB4ODFBOSwKKyAgJ0NPTlZPTFVUSU9OXzFEX0VYVCc6IDB4ODAxMCwKKyAgJ0NP
TlZPTFVUSU9OXzJEX0VYVCc6IDB4ODAxMSwKKyAgJ1NFUEFSQUJMRV8yRF9FWFQnOiAweDgwMTIs
CisgICdDT05WT0xVVElPTl9CT1JERVJfTU9ERV9FWFQnOiAweDgwMTMsCisgICdDT05WT0xVVElP
Tl9GSUxURVJfU0NBTEVfRVhUJzogMHg4MDE0LAorICAnQ09OVk9MVVRJT05fRklMVEVSX0JJQVNf
RVhUJzogMHg4MDE1LAorICAnUkVEVUNFX0VYVCc6IDB4ODAxNiwKKyAgJ0NPTlZPTFVUSU9OX0ZP
Uk1BVF9FWFQnOiAweDgwMTcsCisgICdDT05WT0xVVElPTl9XSURUSF9FWFQnOiAweDgwMTgsCisg
ICdDT05WT0xVVElPTl9IRUlHSFRfRVhUJzogMHg4MDE5LAorICAnTUFYX0NPTlZPTFVUSU9OX1dJ
RFRIX0VYVCc6IDB4ODAxQSwKKyAgJ01BWF9DT05WT0xVVElPTl9IRUlHSFRfRVhUJzogMHg4MDFC
LAorICAnUE9TVF9DT05WT0xVVElPTl9SRURfU0NBTEVfRVhUJzogMHg4MDFDLAorICAnUE9TVF9D
T05WT0xVVElPTl9HUkVFTl9TQ0FMRV9FWFQnOiAweDgwMUQsCisgICdQT1NUX0NPTlZPTFVUSU9O
X0JMVUVfU0NBTEVfRVhUJzogMHg4MDFFLAorICAnUE9TVF9DT05WT0xVVElPTl9BTFBIQV9TQ0FM
RV9FWFQnOiAweDgwMUYsCisgICdQT1NUX0NPTlZPTFVUSU9OX1JFRF9CSUFTX0VYVCc6IDB4ODAy
MCwKKyAgJ1BPU1RfQ09OVk9MVVRJT05fR1JFRU5fQklBU19FWFQnOiAweDgwMjEsCisgICdQT1NU
X0NPTlZPTFVUSU9OX0JMVUVfQklBU19FWFQnOiAweDgwMjIsCisgICdQT1NUX0NPTlZPTFVUSU9O
X0FMUEhBX0JJQVNfRVhUJzogMHg4MDIzLAorICAnVEFOR0VOVF9BUlJBWV9FWFQnOiAweDg0Mzks
CisgICdCSU5PUk1BTF9BUlJBWV9FWFQnOiAweDg0M0EsCisgICdDVVJSRU5UX1RBTkdFTlRfRVhU
JzogMHg4NDNCLAorICAnQ1VSUkVOVF9CSU5PUk1BTF9FWFQnOiAweDg0M0MsCisgICdUQU5HRU5U
X0FSUkFZX1RZUEVfRVhUJzogMHg4NDNFLAorICAnVEFOR0VOVF9BUlJBWV9TVFJJREVfRVhUJzog
MHg4NDNGLAorICAnQklOT1JNQUxfQVJSQVlfVFlQRV9FWFQnOiAweDg0NDAsCisgICdCSU5PUk1B
TF9BUlJBWV9TVFJJREVfRVhUJzogMHg4NDQxLAorICAnVEFOR0VOVF9BUlJBWV9QT0lOVEVSX0VY
VCc6IDB4ODQ0MiwKKyAgJ0JJTk9STUFMX0FSUkFZX1BPSU5URVJfRVhUJzogMHg4NDQzLAorICAn
TUFQMV9UQU5HRU5UX0VYVCc6IDB4ODQ0NCwKKyAgJ01BUDJfVEFOR0VOVF9FWFQnOiAweDg0NDUs
CisgICdNQVAxX0JJTk9STUFMX0VYVCc6IDB4ODQ0NiwKKyAgJ01BUDJfQklOT1JNQUxfRVhUJzog
MHg4NDQ3LAorICAnREVQVEhfQk9VTkRTX1RFU1RfRVhUJzogMHg4ODkwLAorICAnREVQVEhfQk9V
TkRTX0VYVCc6IDB4ODg5MSwKKyAgJ1BST0dSQU1fTUFUUklYX0VYVCc6IDB4OEUyRCwKKyAgJ1RS
QU5TUE9TRV9QUk9HUkFNX01BVFJJWF9FWFQnOiAweDhFMkUsCisgICdQUk9HUkFNX01BVFJJWF9T
VEFDS19ERVBUSF9FWFQnOiAweDhFMkYsCisgICdNQVhfRUxFTUVOVFNfVkVSVElDRVMnOiAweDgw
RTgsCisgICdNQVhfRUxFTUVOVFNfSU5ESUNFUyc6IDB4ODBFOSwKKyAgJ0ZPR19DT09SRElOQVRF
X1NPVVJDRV9FWFQnOiAweDg0NTAsCisgICdGT0dfQ09PUkRJTkFURV9FWFQnOiAweDg0NTEsCisg
ICdGUkFHTUVOVF9ERVBUSF9FWFQnOiAweDg0NTIsCisgICdDVVJSRU5UX0ZPR19DT09SRElOQVRF
X0VYVCc6IDB4ODQ1MywKKyAgJ0ZPR19DT09SRElOQVRFX0FSUkFZX1RZUEVfRVhUJzogMHg4NDU0
LAorICAnRk9HX0NPT1JESU5BVEVfQVJSQVlfU1RSSURFX0VYVCc6IDB4ODQ1NSwKKyAgJ0ZPR19D
T09SRElOQVRFX0FSUkFZX1BPSU5URVJfRVhUJzogMHg4NDU2LAorICAnRk9HX0NPT1JESU5BVEVf
QVJSQVlfRVhUJzogMHg4NDU3LAorICAnRlJBR01FTlRfTElHSFRJTkdfRVhUJzogMHg4NDAwLAor
ICAnRlJBR01FTlRfQ09MT1JfTUFURVJJQUxfRVhUJzogMHg4NDAxLAorICAnRlJBR01FTlRfQ09M
T1JfTUFURVJJQUxfRkFDRV9FWFQnOiAweDg0MDIsCisgICdGUkFHTUVOVF9DT0xPUl9NQVRFUklB
TF9QQVJBTUVURVJfRVhUJzogMHg4NDAzLAorICAnTUFYX0ZSQUdNRU5UX0xJR0hUU19FWFQnOiAw
eDg0MDQsCisgICdNQVhfQUNUSVZFX0xJR0hUU19FWFQnOiAweDg0MDUsCisgICdDVVJSRU5UX1JB
U1RFUl9OT1JNQUxfRVhUJzogMHg4NDA2LAorICAnTElHSFRfRU5WX01PREVfRVhUJzogMHg4NDA3
LAorICAnRlJBR01FTlRfTElHSFRfTU9ERUxfTE9DQUxfVklFV0VSX0VYVCc6IDB4ODQwOCwKKyAg
J0ZSQUdNRU5UX0xJR0hUX01PREVMX1RXT19TSURFX0VYVCc6IDB4ODQwOSwKKyAgJ0ZSQUdNRU5U
X0xJR0hUX01PREVMX0FNQklFTlRfRVhUJzogMHg4NDBBLAorICAnRlJBR01FTlRfTElHSFRfTU9E
RUxfTk9STUFMX0lOVEVSUE9MQVRJT05fRVhUJzogMHg4NDBCLAorICAnRlJBR01FTlRfTElHSFQw
X0VYVCc6IDB4ODQwQywKKyAgJ0ZSQUdNRU5UX0xJR0hUN19FWFQnOiAweDg0MTMsCisgICdEUkFX
X0ZSQU1FQlVGRkVSX0JJTkRJTkdfRVhUJzogMHg4Q0E2LAorICAnUkVBRF9GUkFNRUJVRkZFUl9F
WFQnOiAweDhDQTgsCisgICdEUkFXX0ZSQU1FQlVGRkVSX0VYVCc6IDB4OENBOSwKKyAgJ1JFQURf
RlJBTUVCVUZGRVJfQklORElOR19FWFQnOiAweDhDQUEsCisgICdSRU5ERVJCVUZGRVJfU0FNUExF
U19FWFQnOiAweDhDQUIsCisgICdGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0VY
VCc6IDB4OEQ1NiwKKyAgJ01BWF9TQU1QTEVTX0VYVCc6IDB4OEQ1NywKKyAgJ0lOVkFMSURfRlJB
TUVCVUZGRVJfT1BFUkFUSU9OX0VYVCc6IDB4MDUwNiwKKyAgJ01BWF9SRU5ERVJCVUZGRVJfU0la
RV9FWFQnOiAweDg0RTgsCisgICdGUkFNRUJVRkZFUl9CSU5ESU5HX0VYVCc6IDB4OENBNiwKKyAg
J1JFTkRFUkJVRkZFUl9CSU5ESU5HX0VYVCc6IDB4OENBNywKKyAgJ0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX1RZUEVfRVhUJzogMHg4Q0QwLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfTkFNRV9FWFQnOiAweDhDRDEsCisgICdGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfTEVWRUxfRVhUJzogMHg4Q0QyLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0NVQkVfTUFQX0ZBQ0VfRVhUJzogMHg4Q0QzLAorICAnRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9URVhUVVJFXzNEX1pPRkZTRVRfRVhUJzogMHg4Q0Q0LAorICAnRlJBTUVCVUZGRVJfQ09NUExF
VEVfRVhUJzogMHg4Q0Q1LAorICAnRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UX0VY
VCc6IDB4OENENiwKKyAgJ0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5U
X0VYVCc6IDB4OENENywKKyAgJ0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU19FWFQn
OiAweDhDRDksCisgICdGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0ZPUk1BVFNfRVhUJzogMHg4Q0RB
LAorICAnRlJBTUVCVUZGRVJfSU5DT01QTEVURV9EUkFXX0JVRkZFUl9FWFQnOiAweDhDREIsCisg
ICdGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX1JFQURfQlVGRkVSX0VYVCc6IDB4OENEQywKKyAgJ0ZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEX0VYVCc6IDB4OENERCwKKyAgJ01BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQnOiAweDhDREYsCisgICdDT0xPUl9BVFRBQ0hNRU5UMF9FWFQnOiAweDhDRTAsCisg
ICdDT0xPUl9BVFRBQ0hNRU5UMV9FWFQnOiAweDhDRTEsCisgICdDT0xPUl9BVFRBQ0hNRU5UMl9F
WFQnOiAweDhDRTIsCisgICdDT0xPUl9BVFRBQ0hNRU5UM19FWFQnOiAweDhDRTMsCisgICdDT0xP
Ul9BVFRBQ0hNRU5UNF9FWFQnOiAweDhDRTQsCisgICdDT0xPUl9BVFRBQ0hNRU5UNV9FWFQnOiAw
eDhDRTUsCisgICdDT0xPUl9BVFRBQ0hNRU5UNl9FWFQnOiAweDhDRTYsCisgICdDT0xPUl9BVFRB
Q0hNRU5UN19FWFQnOiAweDhDRTcsCisgICdDT0xPUl9BVFRBQ0hNRU5UOF9FWFQnOiAweDhDRTgs
CisgICdDT0xPUl9BVFRBQ0hNRU5UOV9FWFQnOiAweDhDRTksCisgICdDT0xPUl9BVFRBQ0hNRU5U
MTBfRVhUJzogMHg4Q0VBLAorICAnQ09MT1JfQVRUQUNITUVOVDExX0VYVCc6IDB4OENFQiwKKyAg
J0NPTE9SX0FUVEFDSE1FTlQxMl9FWFQnOiAweDhDRUMsCisgICdDT0xPUl9BVFRBQ0hNRU5UMTNf
RVhUJzogMHg4Q0VELAorICAnQ09MT1JfQVRUQUNITUVOVDE0X0VYVCc6IDB4OENFRSwKKyAgJ0NP
TE9SX0FUVEFDSE1FTlQxNV9FWFQnOiAweDhDRUYsCisgICdERVBUSF9BVFRBQ0hNRU5UX0VYVCc6
IDB4OEQwMCwKKyAgJ1NURU5DSUxfQVRUQUNITUVOVF9FWFQnOiAweDhEMjAsCisgICdGUkFNRUJV
RkZFUl9FWFQnOiAweDhENDAsCisgICdSRU5ERVJCVUZGRVJfRVhUJzogMHg4RDQxLAorICAnUkVO
REVSQlVGRkVSX1dJRFRIX0VYVCc6IDB4OEQ0MiwKKyAgJ1JFTkRFUkJVRkZFUl9IRUlHSFRfRVhU
JzogMHg4RDQzLAorICAnUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF9FWFQnOiAweDhENDQs
CisgICdTVEVOQ0lMX0lOREVYMV9FWFQnOiAweDhENDYsCisgICdTVEVOQ0lMX0lOREVYNF9FWFQn
OiAweDhENDcsCisgICdTVEVOQ0lMX0lOREVYOF9FWFQnOiAweDhENDgsCisgICdTVEVOQ0lMX0lO
REVYMTZfRVhUJzogMHg4RDQ5LAorICAnUkVOREVSQlVGRkVSX1JFRF9TSVpFX0VYVCc6IDB4OEQ1
MCwKKyAgJ1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFX0VYVCc6IDB4OEQ1MSwKKyAgJ1JFTkRFUkJV
RkZFUl9CTFVFX1NJWkVfRVhUJzogMHg4RDUyLAorICAnUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVf
RVhUJzogMHg4RDUzLAorICAnUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfRVhUJzogMHg4RDU0LAor
ICAnUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV9FWFQnOiAweDhENTUsCisgICdGUkFNRUJVRkZF
Ul9TUkdCX0VYVCc6IDB4OERCOSwKKyAgJ0ZSQU1FQlVGRkVSX1NSR0JfQ0FQQUJMRV9FWFQnOiAw
eDhEQkEsCisgICdMSU5FU19BREpBQ0VOQ1lfRVhUJzogMHhBLAorICAnTElORV9TVFJJUF9BREpB
Q0VOQ1lfRVhUJzogMHhCLAorICAnVFJJQU5HTEVTX0FESkFDRU5DWV9FWFQnOiAweEMsCisgICdU
UklBTkdMRV9TVFJJUF9BREpBQ0VOQ1lfRVhUJzogMHhELAorICAnUFJPR1JBTV9QT0lOVF9TSVpF
X0VYVCc6IDB4ODY0MiwKKyAgJ01BWF9WQVJZSU5HX0NPTVBPTkVOVFNfRVhUJzogMHg4QjRCLAor
ICAnTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFNfRVhUJzogMHg4QzI5LAorICAnRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSX0VYVCc6IDB4OENENCwKKyAgJ0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfTEFZRVJFRF9FWFQnOiAweDhEQTcsCisgICdGUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0xBWUVSX1RBUkdFVFNfRVhUJzogMHg4REE4LAorICAnRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9MQVlFUl9DT1VOVF9FWFQnOiAweDhEQTksCisgICdHRU9NRVRSWV9TSEFERVJfRVhU
JzogMHg4REQ5LAorICAnR0VPTUVUUllfVkVSVElDRVNfT1VUX0VYVCc6IDB4OEREQSwKKyAgJ0dF
T01FVFJZX0lOUFVUX1RZUEVfRVhUJzogMHg4RERCLAorICAnR0VPTUVUUllfT1VUUFVUX1RZUEVf
RVhUJzogMHg4RERDLAorICAnTUFYX0dFT01FVFJZX1ZBUllJTkdfQ09NUE9ORU5UU19FWFQnOiAw
eDhEREQsCisgICdNQVhfVkVSVEVYX1ZBUllJTkdfQ09NUE9ORU5UU19FWFQnOiAweDhEREUsCisg
ICdNQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTX0VYVCc6IDB4OERERiwKKyAgJ01BWF9H
RU9NRVRSWV9PVVRQVVRfVkVSVElDRVNfRVhUJzogMHg4REUwLAorICAnTUFYX0dFT01FVFJZX1RP
VEFMX09VVFBVVF9DT01QT05FTlRTX0VYVCc6IDB4OERFMSwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJS
QVlfSU5URUdFUl9FWFQnOiAweDg4RkQsCisgICdTQU1QTEVSXzFEX0FSUkFZX0VYVCc6IDB4OERD
MCwKKyAgJ1NBTVBMRVJfMkRfQVJSQVlfRVhUJzogMHg4REMxLAorICAnU0FNUExFUl9CVUZGRVJf
RVhUJzogMHg4REMyLAorICAnU0FNUExFUl8xRF9BUlJBWV9TSEFET1dfRVhUJzogMHg4REMzLAor
ICAnU0FNUExFUl8yRF9BUlJBWV9TSEFET1dfRVhUJzogMHg4REM0LAorICAnU0FNUExFUl9DVUJF
X1NIQURPV19FWFQnOiAweDhEQzUsCisgICdVTlNJR05FRF9JTlRfVkVDMl9FWFQnOiAweDhEQzYs
CisgICdVTlNJR05FRF9JTlRfVkVDM19FWFQnOiAweDhEQzcsCisgICdVTlNJR05FRF9JTlRfVkVD
NF9FWFQnOiAweDhEQzgsCisgICdJTlRfU0FNUExFUl8xRF9FWFQnOiAweDhEQzksCisgICdJTlRf
U0FNUExFUl8yRF9FWFQnOiAweDhEQ0EsCisgICdJTlRfU0FNUExFUl8zRF9FWFQnOiAweDhEQ0Is
CisgICdJTlRfU0FNUExFUl9DVUJFX0VYVCc6IDB4OERDQywKKyAgJ0lOVF9TQU1QTEVSXzJEX1JF
Q1RfRVhUJzogMHg4RENELAorICAnSU5UX1NBTVBMRVJfMURfQVJSQVlfRVhUJzogMHg4RENFLAor
ICAnSU5UX1NBTVBMRVJfMkRfQVJSQVlfRVhUJzogMHg4RENGLAorICAnSU5UX1NBTVBMRVJfQlVG
RkVSX0VYVCc6IDB4OEREMCwKKyAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSXzFEX0VYVCc6IDB4OERE
MSwKKyAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0VYVCc6IDB4OEREMiwKKyAgJ1VOU0lHTkVE
X0lOVF9TQU1QTEVSXzNEX0VYVCc6IDB4OEREMywKKyAgJ1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NV
QkVfRVhUJzogMHg4REQ0LAorICAnVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfUkVDVF9FWFQnOiAw
eDhERDUsCisgICdVTlNJR05FRF9JTlRfU0FNUExFUl8xRF9BUlJBWV9FWFQnOiAweDhERDYsCisg
ICdVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWV9FWFQnOiAweDhERDcsCisgICdVTlNJR05F
RF9JTlRfU0FNUExFUl9CVUZGRVJfRVhUJzogMHg4REQ4LAorICAnSElTVE9HUkFNX0VYVCc6IDB4
ODAyNCwKKyAgJ1BST1hZX0hJU1RPR1JBTV9FWFQnOiAweDgwMjUsCisgICdISVNUT0dSQU1fV0lE
VEhfRVhUJzogMHg4MDI2LAorICAnSElTVE9HUkFNX0ZPUk1BVF9FWFQnOiAweDgwMjcsCisgICdI
SVNUT0dSQU1fUkVEX1NJWkVfRVhUJzogMHg4MDI4LAorICAnSElTVE9HUkFNX0dSRUVOX1NJWkVf
RVhUJzogMHg4MDI5LAorICAnSElTVE9HUkFNX0JMVUVfU0laRV9FWFQnOiAweDgwMkEsCisgICdI
SVNUT0dSQU1fQUxQSEFfU0laRV9FWFQnOiAweDgwMkIsCisgICdISVNUT0dSQU1fTFVNSU5BTkNF
X1NJWkVfRVhUJzogMHg4MDJDLAorICAnSElTVE9HUkFNX1NJTktfRVhUJzogMHg4MDJELAorICAn
TUlOTUFYX0VYVCc6IDB4ODAyRSwKKyAgJ01JTk1BWF9GT1JNQVRfRVhUJzogMHg4MDJGLAorICAn
TUlOTUFYX1NJTktfRVhUJzogMHg4MDMwLAorICAnRlJBR01FTlRfTUFURVJJQUxfRVhUJzogMHg4
MzQ5LAorICAnRlJBR01FTlRfTk9STUFMX0VYVCc6IDB4ODM0QSwKKyAgJ0ZSQUdNRU5UX0NPTE9S
X0VYVCc6IDB4ODM0QywKKyAgJ0FUVEVOVUFUSU9OX0VYVCc6IDB4ODM0RCwKKyAgJ1NIQURPV19B
VFRFTlVBVElPTl9FWFQnOiAweDgzNEUsCisgICdURVhUVVJFX0FQUExJQ0FUSU9OX01PREVfRVhU
JzogMHg4MzRGLAorICAnVEVYVFVSRV9MSUdIVF9FWFQnOiAweDgzNTAsCisgICdURVhUVVJFX01B
VEVSSUFMX0ZBQ0VfRVhUJzogMHg4MzUxLAorICAnVEVYVFVSRV9NQVRFUklBTF9QQVJBTUVURVJf
RVhUJzogMHg4MzUyLAorICAnRlJBR01FTlRfREVQVEhfRVhUJzogMHg4NDUyLAorICAnTVVMVElT
QU1QTEVfRVhUJzogMHg4MDlELAorICAnU0FNUExFX0FMUEhBX1RPX01BU0tfRVhUJzogMHg4MDlF
LAorICAnU0FNUExFX0FMUEhBX1RPX09ORV9FWFQnOiAweDgwOUYsCisgICdTQU1QTEVfTUFTS19F
WFQnOiAweDgwQTAsCisgICcxUEFTU19FWFQnOiAweDgwQTEsCisgICcyUEFTU18wX0VYVCc6IDB4
ODBBMiwKKyAgJzJQQVNTXzFfRVhUJzogMHg4MEEzLAorICAnNFBBU1NfMF9FWFQnOiAweDgwQTQs
CisgICc0UEFTU18xX0VYVCc6IDB4ODBBNSwKKyAgJzRQQVNTXzJfRVhUJzogMHg4MEE2LAorICAn
NFBBU1NfM19FWFQnOiAweDgwQTcsCisgICdTQU1QTEVfQlVGRkVSU19FWFQnOiAweDgwQTgsCisg
ICdTQU1QTEVTX0VYVCc6IDB4ODBBOSwKKyAgJ1NBTVBMRV9NQVNLX1ZBTFVFX0VYVCc6IDB4ODBB
QSwKKyAgJ1NBTVBMRV9NQVNLX0lOVkVSVF9FWFQnOiAweDgwQUIsCisgICdTQU1QTEVfUEFUVEVS
Tl9FWFQnOiAweDgwQUMsCisgICdNVUxUSVNBTVBMRV9CSVRfRVhUJzogMHgyMDAwMDAwMCwKKyAg
J0RFUFRIX1NURU5DSUxfRVhUJzogMHg4NEY5LAorICAnVU5TSUdORURfSU5UXzI0XzhfRVhUJzog
MHg4NEZBLAorICAnREVQVEgyNF9TVEVOQ0lMOF9FWFQnOiAweDg4RjAsCisgICdURVhUVVJFX1NU
RU5DSUxfU0laRV9FWFQnOiAweDg4RjEsCisgICdSMTFGX0cxMUZfQjEwRl9FWFQnOiAweDhDM0Es
CisgICdVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWX0VYVCc6IDB4OEMzQiwKKyAgJ1JHQkFf
U0lHTkVEX0NPTVBPTkVOVFNfRVhUJzogMHg4QzNDLAorICAnVU5TSUdORURfQllURV8zXzNfMl9F
WFQnOiAweDgwMzIsCisgICdVTlNJR05FRF9TSE9SVF80XzRfNF80X0VYVCc6IDB4ODAzMywKKyAg
J1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfRVhUJzogMHg4MDM0LAorICAnVU5TSUdORURfSU5UXzhf
OF84XzhfRVhUJzogMHg4MDM1LAorICAnVU5TSUdORURfSU5UXzEwXzEwXzEwXzJfRVhUJzogMHg4
MDM2LAorICAnVEVYVFVSRV8xRCc6IDB4MERFMCwKKyAgJ1RFWFRVUkVfMkQnOiAweDBERTEsCisg
ICdQUk9YWV9URVhUVVJFXzFEJzogMHg4MDYzLAorICAnUFJPWFlfVEVYVFVSRV8yRCc6IDB4ODA2
NCwKKyAgJ1RFWFRVUkVfM0RfRVhUJzogMHg4MDZGLAorICAnUFJPWFlfVEVYVFVSRV8zRF9FWFQn
OiAweDgwNzAsCisgICdDT0xPUl9UQUJMRV9GT1JNQVRfRVhUJzogMHg4MEQ4LAorICAnQ09MT1Jf
VEFCTEVfV0lEVEhfRVhUJzogMHg4MEQ5LAorICAnQ09MT1JfVEFCTEVfUkVEX1NJWkVfRVhUJzog
MHg4MERBLAorICAnQ09MT1JfVEFCTEVfR1JFRU5fU0laRV9FWFQnOiAweDgwREIsCisgICdDT0xP
Ul9UQUJMRV9CTFVFX1NJWkVfRVhUJzogMHg4MERDLAorICAnQ09MT1JfVEFCTEVfQUxQSEFfU0la
RV9FWFQnOiAweDgwREQsCisgICdDT0xPUl9UQUJMRV9MVU1JTkFOQ0VfU0laRV9FWFQnOiAweDgw
REUsCisgICdDT0xPUl9UQUJMRV9JTlRFTlNJVFlfU0laRV9FWFQnOiAweDgwREYsCisgICdDT0xP
Ul9JTkRFWDFfRVhUJzogMHg4MEUyLAorICAnQ09MT1JfSU5ERVgyX0VYVCc6IDB4ODBFMywKKyAg
J0NPTE9SX0lOREVYNF9FWFQnOiAweDgwRTQsCisgICdDT0xPUl9JTkRFWDhfRVhUJzogMHg4MEU1
LAorICAnQ09MT1JfSU5ERVgxMl9FWFQnOiAweDgwRTYsCisgICdDT0xPUl9JTkRFWDE2X0VYVCc6
IDB4ODBFNywKKyAgJ1RFWFRVUkVfSU5ERVhfU0laRV9FWFQnOiAweDgwRUQsCisgICdURVhUVVJF
X0NVQkVfTUFQX0FSQic6IDB4ODUxMywKKyAgJ1BST1hZX1RFWFRVUkVfQ1VCRV9NQVBfQVJCJzog
MHg4NTFCLAorICAnUElYRUxfUEFDS19CVUZGRVJfRVhUJzogMHg4OEVCLAorICAnUElYRUxfVU5Q
QUNLX0JVRkZFUl9FWFQnOiAweDg4RUMsCisgICdQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HX0VY
VCc6IDB4ODhFRCwKKyAgJ1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElOR19FWFQnOiAweDg4RUYs
CisgICdQSVhFTF9UUkFOU0ZPUk1fMkRfRVhUJzogMHg4MzMwLAorICAnUElYRUxfTUFHX0ZJTFRF
Ul9FWFQnOiAweDgzMzEsCisgICdQSVhFTF9NSU5fRklMVEVSX0VYVCc6IDB4ODMzMiwKKyAgJ1BJ
WEVMX0NVQklDX1dFSUdIVF9FWFQnOiAweDgzMzMsCisgICdDVUJJQ19FWFQnOiAweDgzMzQsCisg
ICdBVkVSQUdFX0VYVCc6IDB4ODMzNSwKKyAgJ1BJWEVMX1RSQU5TRk9STV8yRF9TVEFDS19ERVBU
SF9FWFQnOiAweDgzMzYsCisgICdNQVhfUElYRUxfVFJBTlNGT1JNXzJEX1NUQUNLX0RFUFRIX0VY
VCc6IDB4ODMzNywKKyAgJ1BJWEVMX1RSQU5TRk9STV8yRF9NQVRSSVhfRVhUJzogMHg4MzM4LAor
ICAnUE9JTlRfU0laRV9NSU5fRVhUJzogMHg4MTI2LAorICAnUE9JTlRfU0laRV9NQVhfRVhUJzog
MHg4MTI3LAorICAnUE9JTlRfRkFERV9USFJFU0hPTERfU0laRV9FWFQnOiAweDgxMjgsCisgICdE
SVNUQU5DRV9BVFRFTlVBVElPTl9FWFQnOiAweDgxMjksCisgICdQT0xZR09OX09GRlNFVF9FWFQn
OiAweDgwMzcsCisgICdQT0xZR09OX09GRlNFVF9GQUNUT1JfRVhUJzogMHg4MDM4LAorICAnUE9M
WUdPTl9PRkZTRVRfQklBU19FWFQnOiAweDgwMzksCisgICdSRVNDQUxFX05PUk1BTF9FWFQnOiAw
eDgwM0EsCisgICdDT0xPUl9TVU1fRVhUJzogMHg4NDU4LAorICAnQ1VSUkVOVF9TRUNPTkRBUllf
Q09MT1JfRVhUJzogMHg4NDU5LAorICAnU0VDT05EQVJZX0NPTE9SX0FSUkFZX1NJWkVfRVhUJzog
MHg4NDVBLAorICAnU0VDT05EQVJZX0NPTE9SX0FSUkFZX1RZUEVfRVhUJzogMHg4NDVCLAorICAn
U0VDT05EQVJZX0NPTE9SX0FSUkFZX1NUUklERV9FWFQnOiAweDg0NUMsCisgICdTRUNPTkRBUllf
Q09MT1JfQVJSQVlfUE9JTlRFUl9FWFQnOiAweDg0NUQsCisgICdTRUNPTkRBUllfQ09MT1JfQVJS
QVlfRVhUJzogMHg4NDVFLAorICAnTElHSFRfTU9ERUxfQ09MT1JfQ09OVFJPTF9FWFQnOiAweDgx
RjgsCisgICdTSU5HTEVfQ09MT1JfRVhUJzogMHg4MUY5LAorICAnU0VQQVJBVEVfU1BFQ1VMQVJf
Q09MT1JfRVhUJzogMHg4MUZBLAorICAnU0hBUkVEX1RFWFRVUkVfUEFMRVRURV9FWFQnOiAweDgx
RkIsCisgICdTVEVOQ0lMX1RBR19CSVRTX0VYVCc6IDB4ODhGMiwKKyAgJ1NURU5DSUxfQ0xFQVJf
VEFHX1ZBTFVFX0VYVCc6IDB4ODhGMywKKyAgJ1NURU5DSUxfVEVTVF9UV09fU0lERV9FWFQnOiAw
eDg5MTAsCisgICdBQ1RJVkVfU1RFTkNJTF9GQUNFX0VYVCc6IDB4ODkxMSwKKyAgJ0lOQ1JfV1JB
UF9FWFQnOiAweDg1MDcsCisgICdERUNSX1dSQVBfRVhUJzogMHg4NTA4LAorICAnQUxQSEE0X0VY
VCc6IDB4ODAzQiwKKyAgJ0FMUEhBOF9FWFQnOiAweDgwM0MsCisgICdBTFBIQTEyX0VYVCc6IDB4
ODAzRCwKKyAgJ0FMUEhBMTZfRVhUJzogMHg4MDNFLAorICAnTFVNSU5BTkNFNF9FWFQnOiAweDgw
M0YsCisgICdMVU1JTkFOQ0U4X0VYVCc6IDB4ODA0MCwKKyAgJ0xVTUlOQU5DRTEyX0VYVCc6IDB4
ODA0MSwKKyAgJ0xVTUlOQU5DRTE2X0VYVCc6IDB4ODA0MiwKKyAgJ0xVTUlOQU5DRTRfQUxQSEE0
X0VYVCc6IDB4ODA0MywKKyAgJ0xVTUlOQU5DRTZfQUxQSEEyX0VYVCc6IDB4ODA0NCwKKyAgJ0xV
TUlOQU5DRThfQUxQSEE4X0VYVCc6IDB4ODA0NSwKKyAgJ0xVTUlOQU5DRTEyX0FMUEhBNF9FWFQn
OiAweDgwNDYsCisgICdMVU1JTkFOQ0UxMl9BTFBIQTEyX0VYVCc6IDB4ODA0NywKKyAgJ0xVTUlO
QU5DRTE2X0FMUEhBMTZfRVhUJzogMHg4MDQ4LAorICAnSU5URU5TSVRZX0VYVCc6IDB4ODA0OSwK
KyAgJ0lOVEVOU0lUWTRfRVhUJzogMHg4MDRBLAorICAnSU5URU5TSVRZOF9FWFQnOiAweDgwNEIs
CisgICdJTlRFTlNJVFkxMl9FWFQnOiAweDgwNEMsCisgICdJTlRFTlNJVFkxNl9FWFQnOiAweDgw
NEQsCisgICdSR0IyX0VYVCc6IDB4ODA0RSwKKyAgJ1JHQjRfRVhUJzogMHg4MDRGLAorICAnUkdC
NV9FWFQnOiAweDgwNTAsCisgICdSR0I4X0VYVCc6IDB4ODA1MSwKKyAgJ1JHQjEwX0VYVCc6IDB4
ODA1MiwKKyAgJ1JHQjEyX0VYVCc6IDB4ODA1MywKKyAgJ1JHQjE2X0VYVCc6IDB4ODA1NCwKKyAg
J1JHQkEyX0VYVCc6IDB4ODA1NSwKKyAgJ1JHQkE0X0VYVCc6IDB4ODA1NiwKKyAgJ1JHQjVfQTFf
RVhUJzogMHg4MDU3LAorICAnUkdCQThfRVhUJzogMHg4MDU4LAorICAnUkdCMTBfQTJfRVhUJzog
MHg4MDU5LAorICAnUkdCQTEyX0VYVCc6IDB4ODA1QSwKKyAgJ1JHQkExNl9FWFQnOiAweDgwNUIs
CisgICdURVhUVVJFX1JFRF9TSVpFX0VYVCc6IDB4ODA1QywKKyAgJ1RFWFRVUkVfR1JFRU5fU0la
RV9FWFQnOiAweDgwNUQsCisgICdURVhUVVJFX0JMVUVfU0laRV9FWFQnOiAweDgwNUUsCisgICdU
RVhUVVJFX0FMUEhBX1NJWkVfRVhUJzogMHg4MDVGLAorICAnVEVYVFVSRV9MVU1JTkFOQ0VfU0la
RV9FWFQnOiAweDgwNjAsCisgICdURVhUVVJFX0lOVEVOU0lUWV9TSVpFX0VYVCc6IDB4ODA2MSwK
KyAgJ1JFUExBQ0VfRVhUJzogMHg4MDYyLAorICAnUFJPWFlfVEVYVFVSRV8xRF9FWFQnOiAweDgw
NjMsCisgICdQUk9YWV9URVhUVVJFXzJEX0VYVCc6IDB4ODA2NCwKKyAgJ1BBQ0tfU0tJUF9JTUFH
RVNfRVhUJzogMHg4MDZCLAorICAnUEFDS19JTUFHRV9IRUlHSFRfRVhUJzogMHg4MDZDLAorICAn
VU5QQUNLX1NLSVBfSU1BR0VTX0VYVCc6IDB4ODA2RCwKKyAgJ1VOUEFDS19JTUFHRV9IRUlHSFRf
RVhUJzogMHg4MDZFLAorICAnVEVYVFVSRV8zRF9FWFQnOiAweDgwNkYsCisgICdQUk9YWV9URVhU
VVJFXzNEX0VYVCc6IDB4ODA3MCwKKyAgJ1RFWFRVUkVfREVQVEhfRVhUJzogMHg4MDcxLAorICAn
VEVYVFVSRV9XUkFQX1JfRVhUJzogMHg4MDcyLAorICAnTUFYXzNEX1RFWFRVUkVfU0laRV9FWFQn
OiAweDgwNzMsCisgICdDT01QQVJFX1JFRl9ERVBUSF9UT19URVhUVVJFX0VYVCc6IDB4ODg0RSwK
KyAgJ01BWF9BUlJBWV9URVhUVVJFX0xBWUVSU19FWFQnOiAweDg4RkYsCisgICdURVhUVVJFXzFE
X0FSUkFZX0VYVCc6IDB4OEMxOCwKKyAgJ1BST1hZX1RFWFRVUkVfMURfQVJSQVlfRVhUJzogMHg4
QzE5LAorICAnVEVYVFVSRV8yRF9BUlJBWV9FWFQnOiAweDhDMUEsCisgICdQUk9YWV9URVhUVVJF
XzJEX0FSUkFZX0VYVCc6IDB4OEMxQiwKKyAgJ1RFWFRVUkVfQklORElOR18xRF9BUlJBWV9FWFQn
OiAweDhDMUMsCisgICdURVhUVVJFX0JJTkRJTkdfMkRfQVJSQVlfRVhUJzogMHg4QzFELAorICAn
VEVYVFVSRV9CVUZGRVJfRVhUJzogMHg4QzJBLAorICAnTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkVf
RVhUJzogMHg4QzJCLAorICAnVEVYVFVSRV9CSU5ESU5HX0JVRkZFUl9FWFQnOiAweDhDMkMsCisg
ICdURVhUVVJFX0JVRkZFUl9EQVRBX1NUT1JFX0JJTkRJTkdfRVhUJzogMHg4QzJELAorICAnVEVY
VFVSRV9CVUZGRVJfRk9STUFUX0VYVCc6IDB4OEMyRSwKKyAgJ0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQnOiAweDgzRjAsCisgICdDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCc6IDB4
ODNGMSwKKyAgJ0NPTVBSRVNTRURfTFVNSU5BTkNFX0xBVEMxX0VYVCc6IDB4OEM3MCwKKyAgJ0NP
TVBSRVNTRURfU0lHTkVEX0xVTUlOQU5DRV9MQVRDMV9FWFQnOiAweDhDNzEsCisgICdDT01QUkVT
U0VEX0xVTUlOQU5DRV9BTFBIQV9MQVRDMl9FWFQnOiAweDhDNzIsCisgICdDT01QUkVTU0VEX1NJ
R05FRF9MVU1JTkFOQ0VfQUxQSEFfTEFUQzJfRVhUJzogMHg4QzczLAorICAnQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUJzogMHg4REJCLAorICAnQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VCc6IDB4OERCQywKKyAgJ0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCc6IDB4OERCRCwK
KyAgJ0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQnOiAweDhEQkUsCisgICdD
T01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUJzogMHg4M0YwLAorICAnQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQnOiAweDgzRjEsCisgICdDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VY
VCc6IDB4ODNGMiwKKyAgJ0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUJzogMHg4M0YzLAor
ICAnTk9STUFMX01BUF9FWFQnOiAweDg1MTEsCisgICdSRUZMRUNUSU9OX01BUF9FWFQnOiAweDg1
MTIsCisgICdURVhUVVJFX0NVQkVfTUFQX0VYVCc6IDB4ODUxMywKKyAgJ1RFWFRVUkVfQklORElO
R19DVUJFX01BUF9FWFQnOiAweDg1MTQsCisgICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hf
RVhUJzogMHg4NTE1LAorICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YX0VYVCc6IDB4ODUx
NiwKKyAgJ1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV9FWFQnOiAweDg1MTcsCisgICdURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfRVhUJzogMHg4NTE4LAorICAnVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9aX0VYVCc6IDB4ODUxOSwKKyAgJ1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
Wl9FWFQnOiAweDg1MUEsCisgICdQUk9YWV9URVhUVVJFX0NVQkVfTUFQX0VYVCc6IDB4ODUxQiwK
KyAgJ01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfRVhUJzogMHg4NTFDLAorICAnQ0xBTVBfVE9f
RURHRV9FWFQnOiAweDgxMkYsCisgICdDT01CSU5FX0VYVCc6IDB4ODU3MCwKKyAgJ0NPTUJJTkVf
UkdCX0VYVCc6IDB4ODU3MSwKKyAgJ0NPTUJJTkVfQUxQSEFfRVhUJzogMHg4NTcyLAorICAnUkdC
X1NDQUxFX0VYVCc6IDB4ODU3MywKKyAgJ0FERF9TSUdORURfRVhUJzogMHg4NTc0LAorICAnSU5U
RVJQT0xBVEVfRVhUJzogMHg4NTc1LAorICAnQ09OU1RBTlRfRVhUJzogMHg4NTc2LAorICAnUFJJ
TUFSWV9DT0xPUl9FWFQnOiAweDg1NzcsCisgICdQUkVWSU9VU19FWFQnOiAweDg1NzgsCisgICdT
T1VSQ0UwX1JHQl9FWFQnOiAweDg1ODAsCisgICdTT1VSQ0UxX1JHQl9FWFQnOiAweDg1ODEsCisg
ICdTT1VSQ0UyX1JHQl9FWFQnOiAweDg1ODIsCisgICdTT1VSQ0UwX0FMUEhBX0VYVCc6IDB4ODU4
OCwKKyAgJ1NPVVJDRTFfQUxQSEFfRVhUJzogMHg4NTg5LAorICAnU09VUkNFMl9BTFBIQV9FWFQn
OiAweDg1OEEsCisgICdPUEVSQU5EMF9SR0JfRVhUJzogMHg4NTkwLAorICAnT1BFUkFORDFfUkdC
X0VYVCc6IDB4ODU5MSwKKyAgJ09QRVJBTkQyX1JHQl9FWFQnOiAweDg1OTIsCisgICdPUEVSQU5E
MF9BTFBIQV9FWFQnOiAweDg1OTgsCisgICdPUEVSQU5EMV9BTFBIQV9FWFQnOiAweDg1OTksCisg
ICdPUEVSQU5EMl9BTFBIQV9FWFQnOiAweDg1OUEsCisgICdET1QzX1JHQl9FWFQnOiAweDg3NDAs
CisgICdET1QzX1JHQkFfRVhUJzogMHg4NzQxLAorICAnVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9F
WFQnOiAweDg0RkUsCisgICdNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQnOiAweDg0RkYs
CisgICdSR0JBMzJVSV9FWFQnOiAweDhENzAsCisgICdSR0IzMlVJX0VYVCc6IDB4OEQ3MSwKKyAg
J0FMUEhBMzJVSV9FWFQnOiAweDhENzIsCisgICdJTlRFTlNJVFkzMlVJX0VYVCc6IDB4OEQ3MywK
KyAgJ0xVTUlOQU5DRTMyVUlfRVhUJzogMHg4RDc0LAorICAnTFVNSU5BTkNFX0FMUEhBMzJVSV9F
WFQnOiAweDhENzUsCisgICdSR0JBMTZVSV9FWFQnOiAweDhENzYsCisgICdSR0IxNlVJX0VYVCc6
IDB4OEQ3NywKKyAgJ0FMUEhBMTZVSV9FWFQnOiAweDhENzgsCisgICdJTlRFTlNJVFkxNlVJX0VY
VCc6IDB4OEQ3OSwKKyAgJ0xVTUlOQU5DRTE2VUlfRVhUJzogMHg4RDdBLAorICAnTFVNSU5BTkNF
X0FMUEhBMTZVSV9FWFQnOiAweDhEN0IsCisgICdSR0JBOFVJX0VYVCc6IDB4OEQ3QywKKyAgJ1JH
QjhVSV9FWFQnOiAweDhEN0QsCisgICdBTFBIQThVSV9FWFQnOiAweDhEN0UsCisgICdJTlRFTlNJ
VFk4VUlfRVhUJzogMHg4RDdGLAorICAnTFVNSU5BTkNFOFVJX0VYVCc6IDB4OEQ4MCwKKyAgJ0xV
TUlOQU5DRV9BTFBIQThVSV9FWFQnOiAweDhEODEsCisgICdSR0JBMzJJX0VYVCc6IDB4OEQ4MiwK
KyAgJ1JHQjMySV9FWFQnOiAweDhEODMsCisgICdBTFBIQTMySV9FWFQnOiAweDhEODQsCisgICdJ
TlRFTlNJVFkzMklfRVhUJzogMHg4RDg1LAorICAnTFVNSU5BTkNFMzJJX0VYVCc6IDB4OEQ4NiwK
KyAgJ0xVTUlOQU5DRV9BTFBIQTMySV9FWFQnOiAweDhEODcsCisgICdSR0JBMTZJX0VYVCc6IDB4
OEQ4OCwKKyAgJ1JHQjE2SV9FWFQnOiAweDhEODksCisgICdBTFBIQTE2SV9FWFQnOiAweDhEOEEs
CisgICdJTlRFTlNJVFkxNklfRVhUJzogMHg4RDhCLAorICAnTFVNSU5BTkNFMTZJX0VYVCc6IDB4
OEQ4QywKKyAgJ0xVTUlOQU5DRV9BTFBIQTE2SV9FWFQnOiAweDhEOEQsCisgICdSR0JBOElfRVhU
JzogMHg4RDhFLAorICAnUkdCOElfRVhUJzogMHg4RDhGLAorICAnQUxQSEE4SV9FWFQnOiAweDhE
OTAsCisgICdJTlRFTlNJVFk4SV9FWFQnOiAweDhEOTEsCisgICdMVU1JTkFOQ0U4SV9FWFQnOiAw
eDhEOTIsCisgICdMVU1JTkFOQ0VfQUxQSEE4SV9FWFQnOiAweDhEOTMsCisgICdSRURfSU5URUdF
Ul9FWFQnOiAweDhEOTQsCisgICdHUkVFTl9JTlRFR0VSX0VYVCc6IDB4OEQ5NSwKKyAgJ0JMVUVf
SU5URUdFUl9FWFQnOiAweDhEOTYsCisgICdBTFBIQV9JTlRFR0VSX0VYVCc6IDB4OEQ5NywKKyAg
J1JHQl9JTlRFR0VSX0VYVCc6IDB4OEQ5OCwKKyAgJ1JHQkFfSU5URUdFUl9FWFQnOiAweDhEOTks
CisgICdCR1JfSU5URUdFUl9FWFQnOiAweDhEOUEsCisgICdCR1JBX0lOVEVHRVJfRVhUJzogMHg4
RDlCLAorICAnTFVNSU5BTkNFX0lOVEVHRVJfRVhUJzogMHg4RDlDLAorICAnTFVNSU5BTkNFX0FM
UEhBX0lOVEVHRVJfRVhUJzogMHg4RDlELAorICAnUkdCQV9JTlRFR0VSX01PREVfRVhUJzogMHg4
RDlFLAorICAnTUFYX1RFWFRVUkVfTE9EX0JJQVNfRVhUJzogMHg4NEZELAorICAnVEVYVFVSRV9G
SUxURVJfQ09OVFJPTF9FWFQnOiAweDg1MDAsCisgICdURVhUVVJFX0xPRF9CSUFTX0VYVCc6IDB4
ODUwMSwKKyAgJ01JUlJPUl9DTEFNUF9FWFQnOiAweDg3NDIsCisgICdNSVJST1JfQ0xBTVBfVE9f
RURHRV9FWFQnOiAweDg3NDMsCisgICdNSVJST1JfQ0xBTVBfVE9fQk9SREVSX0VYVCc6IDB4ODkx
MiwKKyAgJ1RFWFRVUkVfUFJJT1JJVFlfRVhUJzogMHg4MDY2LAorICAnVEVYVFVSRV9SRVNJREVO
VF9FWFQnOiAweDgwNjcsCisgICdURVhUVVJFXzFEX0JJTkRJTkdfRVhUJzogMHg4MDY4LAorICAn
VEVYVFVSRV8yRF9CSU5ESU5HX0VYVCc6IDB4ODA2OSwKKyAgJ1RFWFRVUkVfM0RfQklORElOR19F
WFQnOiAweDgwNkEsCisgICdQRVJUVVJCX0VYVCc6IDB4ODVBRSwKKyAgJ1RFWFRVUkVfTk9STUFM
X0VYVCc6IDB4ODVBRiwKKyAgJ1RFWFRVUkVfUkVDVEFOR0xFX0VYVCc6IDB4ODRGNSwKKyAgJ1RF
WFRVUkVfQklORElOR19SRUNUQU5HTEVfRVhUJzogMHg4NEY2LAorICAnUFJPWFlfVEVYVFVSRV9S
RUNUQU5HTEVfRVhUJzogMHg4NEY3LAorICAnTUFYX1JFQ1RBTkdMRV9URVhUVVJFX1NJWkVfRVhU
JzogMHg4NEY4LAorICAnU1JHQl9FWFQnOiAweDhDNDAsCisgICdTUkdCOF9FWFQnOiAweDhDNDEs
CisgICdTUkdCX0FMUEhBX0VYVCc6IDB4OEM0MiwKKyAgJ1NSR0I4X0FMUEhBOF9FWFQnOiAweDhD
NDMsCisgICdTTFVNSU5BTkNFX0FMUEhBX0VYVCc6IDB4OEM0NCwKKyAgJ1NMVU1JTkFOQ0U4X0FM
UEhBOF9FWFQnOiAweDhDNDUsCisgICdTTFVNSU5BTkNFX0VYVCc6IDB4OEM0NiwKKyAgJ1NMVU1J
TkFOQ0U4X0VYVCc6IDB4OEM0NywKKyAgJ0NPTVBSRVNTRURfU1JHQl9FWFQnOiAweDhDNDgsCisg
ICdDT01QUkVTU0VEX1NSR0JfQUxQSEFfRVhUJzogMHg4QzQ5LAorICAnQ09NUFJFU1NFRF9TTFVN
SU5BTkNFX0VYVCc6IDB4OEM0QSwKKyAgJ0NPTVBSRVNTRURfU0xVTUlOQU5DRV9BTFBIQV9FWFQn
OiAweDhDNEIsCisgICdDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCc6IDB4OEM0QywKKyAg
J0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUJzogMHg4QzRELAorICAnQ09NUFJF
U1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQnOiAweDhDNEUsCisgICdDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCc6IDB4OEM0RiwKKyAgJ1JHQjlfRTVfRVhUJzogMHg4QzNE
LAorICAnVU5TSUdORURfSU5UXzVfOV85XzlfUkVWX0VYVCc6IDB4OEMzRSwKKyAgJ1RFWFRVUkVf
U0hBUkVEX1NJWkVfRVhUJzogMHg4QzNGLAorICAnVEVYVFVSRV9TV0laWkxFX1JfRVhUJzogMHg4
RTQyLAorICAnVEVYVFVSRV9TV0laWkxFX0dfRVhUJzogMHg4RTQzLAorICAnVEVYVFVSRV9TV0la
WkxFX0JfRVhUJzogMHg4RTQ0LAorICAnVEVYVFVSRV9TV0laWkxFX0FfRVhUJzogMHg4RTQ1LAor
ICAnVEVYVFVSRV9TV0laWkxFX1JHQkFfRVhUJzogMHg4RTQ2LAorICAnVElNRV9FTEFQU0VEX0VY
VCc6IDB4ODhCRiwKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEhfRVhU
JzogMHg4Qzc2LAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFX0VYVCc6IDB4OEM3
RiwKKyAgJ01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UU19FWFQnOiAw
eDhDODAsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1NfRVhUJzogMHg4QzgzLAorICAn
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVF9FWFQnOiAweDhDODQsCisgICdUUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSX1NJWkVfRVhUJzogMHg4Qzg1LAorICAnUFJJTUlUSVZFU19HRU5F
UkFURURfRVhUJzogMHg4Qzg3LAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJ
VFRFTl9FWFQnOiAweDhDODgsCisgICdSQVNURVJJWkVSX0RJU0NBUkRfRVhUJzogMHg4Qzg5LAor
ICAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTX0VYVCc6IDB4
OEM4QSwKKyAgJ01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCU19FWFQnOiAw
eDhDOEIsCisgICdJTlRFUkxFQVZFRF9BVFRSSUJTX0VYVCc6IDB4OEM4QywKKyAgJ1NFUEFSQVRF
X0FUVFJJQlNfRVhUJzogMHg4QzhELAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9FWFQn
OiAweDhDOEUsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkdfRVhUJzogMHg4
QzhGLAorICAnRE9VQkxFX0VYVCc6IDB4MTQwQSwKKyAgJ1ZFUlRFWF9BUlJBWV9FWFQnOiAweDgw
NzQsCisgICdOT1JNQUxfQVJSQVlfRVhUJzogMHg4MDc1LAorICAnQ09MT1JfQVJSQVlfRVhUJzog
MHg4MDc2LAorICAnSU5ERVhfQVJSQVlfRVhUJzogMHg4MDc3LAorICAnVEVYVFVSRV9DT09SRF9B
UlJBWV9FWFQnOiAweDgwNzgsCisgICdFREdFX0ZMQUdfQVJSQVlfRVhUJzogMHg4MDc5LAorICAn
VkVSVEVYX0FSUkFZX1NJWkVfRVhUJzogMHg4MDdBLAorICAnVkVSVEVYX0FSUkFZX1RZUEVfRVhU
JzogMHg4MDdCLAorICAnVkVSVEVYX0FSUkFZX1NUUklERV9FWFQnOiAweDgwN0MsCisgICdWRVJU
RVhfQVJSQVlfQ09VTlRfRVhUJzogMHg4MDdELAorICAnTk9STUFMX0FSUkFZX1RZUEVfRVhUJzog
MHg4MDdFLAorICAnTk9STUFMX0FSUkFZX1NUUklERV9FWFQnOiAweDgwN0YsCisgICdOT1JNQUxf
QVJSQVlfQ09VTlRfRVhUJzogMHg4MDgwLAorICAnQ09MT1JfQVJSQVlfU0laRV9FWFQnOiAweDgw
ODEsCisgICdDT0xPUl9BUlJBWV9UWVBFX0VYVCc6IDB4ODA4MiwKKyAgJ0NPTE9SX0FSUkFZX1NU
UklERV9FWFQnOiAweDgwODMsCisgICdDT0xPUl9BUlJBWV9DT1VOVF9FWFQnOiAweDgwODQsCisg
ICdJTkRFWF9BUlJBWV9UWVBFX0VYVCc6IDB4ODA4NSwKKyAgJ0lOREVYX0FSUkFZX1NUUklERV9F
WFQnOiAweDgwODYsCisgICdJTkRFWF9BUlJBWV9DT1VOVF9FWFQnOiAweDgwODcsCisgICdURVhU
VVJFX0NPT1JEX0FSUkFZX1NJWkVfRVhUJzogMHg4MDg4LAorICAnVEVYVFVSRV9DT09SRF9BUlJB
WV9UWVBFX0VYVCc6IDB4ODA4OSwKKyAgJ1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFX0VYVCc6
IDB4ODA4QSwKKyAgJ1RFWFRVUkVfQ09PUkRfQVJSQVlfQ09VTlRfRVhUJzogMHg4MDhCLAorICAn
RURHRV9GTEFHX0FSUkFZX1NUUklERV9FWFQnOiAweDgwOEMsCisgICdFREdFX0ZMQUdfQVJSQVlf
Q09VTlRfRVhUJzogMHg4MDhELAorICAnVkVSVEVYX0FSUkFZX1BPSU5URVJfRVhUJzogMHg4MDhF
LAorICAnTk9STUFMX0FSUkFZX1BPSU5URVJfRVhUJzogMHg4MDhGLAorICAnQ09MT1JfQVJSQVlf
UE9JTlRFUl9FWFQnOiAweDgwOTAsCisgICdJTkRFWF9BUlJBWV9QT0lOVEVSX0VYVCc6IDB4ODA5
MSwKKyAgJ1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUl9FWFQnOiAweDgwOTIsCisgICdFREdF
X0ZMQUdfQVJSQVlfUE9JTlRFUl9FWFQnOiAweDgwOTMsCisgICdCR1JBJzogMHg4MEUxLAorICAn
VkVSVEVYX1NIQURFUl9FWFQnOiAweDg3ODAsCisgICdWRVJURVhfU0hBREVSX0JJTkRJTkdfRVhU
JzogMHg4NzgxLAorICAnT1BfSU5ERVhfRVhUJzogMHg4NzgyLAorICAnT1BfTkVHQVRFX0VYVCc6
IDB4ODc4MywKKyAgJ09QX0RPVDNfRVhUJzogMHg4Nzg0LAorICAnT1BfRE9UNF9FWFQnOiAweDg3
ODUsCisgICdPUF9NVUxfRVhUJzogMHg4Nzg2LAorICAnT1BfQUREX0VYVCc6IDB4ODc4NywKKyAg
J09QX01BRERfRVhUJzogMHg4Nzg4LAorICAnT1BfRlJBQ19FWFQnOiAweDg3ODksCisgICdPUF9N
QVhfRVhUJzogMHg4NzhBLAorICAnT1BfTUlOX0VYVCc6IDB4ODc4QiwKKyAgJ09QX1NFVF9HRV9F
WFQnOiAweDg3OEMsCisgICdPUF9TRVRfTFRfRVhUJzogMHg4NzhELAorICAnT1BfQ0xBTVBfRVhU
JzogMHg4NzhFLAorICAnT1BfRkxPT1JfRVhUJzogMHg4NzhGLAorICAnT1BfUk9VTkRfRVhUJzog
MHg4NzkwLAorICAnT1BfRVhQX0JBU0VfMl9FWFQnOiAweDg3OTEsCisgICdPUF9MT0dfQkFTRV8y
X0VYVCc6IDB4ODc5MiwKKyAgJ09QX1BPV0VSX0VYVCc6IDB4ODc5MywKKyAgJ09QX1JFQ0lQX0VY
VCc6IDB4ODc5NCwKKyAgJ09QX1JFQ0lQX1NRUlRfRVhUJzogMHg4Nzk1LAorICAnT1BfU1VCX0VY
VCc6IDB4ODc5NiwKKyAgJ09QX0NST1NTX1BST0RVQ1RfRVhUJzogMHg4Nzk3LAorICAnT1BfTVVM
VElQTFlfTUFUUklYX0VYVCc6IDB4ODc5OCwKKyAgJ09QX01PVl9FWFQnOiAweDg3OTksCisgICdP
VVRQVVRfVkVSVEVYX0VYVCc6IDB4ODc5QSwKKyAgJ09VVFBVVF9DT0xPUjBfRVhUJzogMHg4NzlC
LAorICAnT1VUUFVUX0NPTE9SMV9FWFQnOiAweDg3OUMsCisgICdPVVRQVVRfVEVYVFVSRV9DT09S
RDBfRVhUJzogMHg4NzlELAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQxX0VYVCc6IDB4ODc5RSwK
KyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMl9FWFQnOiAweDg3OUYsCisgICdPVVRQVVRfVEVYVFVS
RV9DT09SRDNfRVhUJzogMHg4N0EwLAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQ0X0VYVCc6IDB4
ODdBMSwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JENV9FWFQnOiAweDg3QTIsCisgICdPVVRQVVRf
VEVYVFVSRV9DT09SRDZfRVhUJzogMHg4N0EzLAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQ3X0VY
VCc6IDB4ODdBNCwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEOF9FWFQnOiAweDg3QTUsCisgICdP
VVRQVVRfVEVYVFVSRV9DT09SRDlfRVhUJzogMHg4N0E2LAorICAnT1VUUFVUX1RFWFRVUkVfQ09P
UkQxMF9FWFQnOiAweDg3QTcsCisgICdPVVRQVVRfVEVYVFVSRV9DT09SRDExX0VYVCc6IDB4ODdB
OCwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMTJfRVhUJzogMHg4N0E5LAorICAnT1VUUFVUX1RF
WFRVUkVfQ09PUkQxM19FWFQnOiAweDg3QUEsCisgICdPVVRQVVRfVEVYVFVSRV9DT09SRDE0X0VY
VCc6IDB4ODdBQiwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMTVfRVhUJzogMHg4N0FDLAorICAn
T1VUUFVUX1RFWFRVUkVfQ09PUkQxNl9FWFQnOiAweDg3QUQsCisgICdPVVRQVVRfVEVYVFVSRV9D
T09SRDE3X0VYVCc6IDB4ODdBRSwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMThfRVhUJzogMHg4
N0FGLAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQxOV9FWFQnOiAweDg3QjAsCisgICdPVVRQVVRf
VEVYVFVSRV9DT09SRDIwX0VYVCc6IDB4ODdCMSwKKyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMjFf
RVhUJzogMHg4N0IyLAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQyMl9FWFQnOiAweDg3QjMsCisg
ICdPVVRQVVRfVEVYVFVSRV9DT09SRDIzX0VYVCc6IDB4ODdCNCwKKyAgJ09VVFBVVF9URVhUVVJF
X0NPT1JEMjRfRVhUJzogMHg4N0I1LAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQyNV9FWFQnOiAw
eDg3QjYsCisgICdPVVRQVVRfVEVYVFVSRV9DT09SRDI2X0VYVCc6IDB4ODdCNywKKyAgJ09VVFBV
VF9URVhUVVJFX0NPT1JEMjdfRVhUJzogMHg4N0I4LAorICAnT1VUUFVUX1RFWFRVUkVfQ09PUkQy
OF9FWFQnOiAweDg3QjksCisgICdPVVRQVVRfVEVYVFVSRV9DT09SRDI5X0VYVCc6IDB4ODdCQSwK
KyAgJ09VVFBVVF9URVhUVVJFX0NPT1JEMzBfRVhUJzogMHg4N0JCLAorICAnT1VUUFVUX1RFWFRV
UkVfQ09PUkQzMV9FWFQnOiAweDg3QkMsCisgICdPVVRQVVRfRk9HX0VYVCc6IDB4ODdCRCwKKyAg
J1NDQUxBUl9FWFQnOiAweDg3QkUsCisgICdWRUNUT1JfRVhUJzogMHg4N0JGLAorICAnTUFUUklY
X0VYVCc6IDB4ODdDMCwKKyAgJ1ZBUklBTlRfRVhUJzogMHg4N0MxLAorICAnSU5WQVJJQU5UX0VY
VCc6IDB4ODdDMiwKKyAgJ0xPQ0FMX0NPTlNUQU5UX0VYVCc6IDB4ODdDMywKKyAgJ0xPQ0FMX0VY
VCc6IDB4ODdDNCwKKyAgJ01BWF9WRVJURVhfU0hBREVSX0lOU1RSVUNUSU9OU19FWFQnOiAweDg3
QzUsCisgICdNQVhfVkVSVEVYX1NIQURFUl9WQVJJQU5UU19FWFQnOiAweDg3QzYsCisgICdNQVhf
VkVSVEVYX1NIQURFUl9JTlZBUklBTlRTX0VYVCc6IDB4ODdDNywKKyAgJ01BWF9WRVJURVhfU0hB
REVSX0xPQ0FMX0NPTlNUQU5UU19FWFQnOiAweDg3QzgsCisgICdNQVhfVkVSVEVYX1NIQURFUl9M
T0NBTFNfRVhUJzogMHg4N0M5LAorICAnTUFYX09QVElNSVpFRF9WRVJURVhfU0hBREVSX0lOU1RS
VUNUSU9OU19FWFQnOiAweDg3Q0EsCisgICdNQVhfT1BUSU1JWkVEX1ZFUlRFWF9TSEFERVJfVkFS
SUFOVFNfRVhUJzogMHg4N0NCLAorICAnTUFYX09QVElNSVpFRF9WRVJURVhfU0hBREVSX0lOVkFS
SUFOVFNfRVhUJzogMHg4N0NDLAorICAnTUFYX09QVElNSVpFRF9WRVJURVhfU0hBREVSX0xPQ0FM
X0NPTlNUQU5UU19FWFQnOiAweDg3Q0QsCisgICdNQVhfT1BUSU1JWkVEX1ZFUlRFWF9TSEFERVJf
TE9DQUxTX0VYVCc6IDB4ODdDRSwKKyAgJ1ZFUlRFWF9TSEFERVJfSU5TVFJVQ1RJT05TX0VYVCc6
IDB4ODdDRiwKKyAgJ1ZFUlRFWF9TSEFERVJfVkFSSUFOVFNfRVhUJzogMHg4N0QwLAorICAnVkVS
VEVYX1NIQURFUl9JTlZBUklBTlRTX0VYVCc6IDB4ODdEMSwKKyAgJ1ZFUlRFWF9TSEFERVJfTE9D
QUxfQ09OU1RBTlRTX0VYVCc6IDB4ODdEMiwKKyAgJ1ZFUlRFWF9TSEFERVJfTE9DQUxTX0VYVCc6
IDB4ODdEMywKKyAgJ1ZFUlRFWF9TSEFERVJfT1BUSU1JWkVEX0VYVCc6IDB4ODdENCwKKyAgJ1hf
RVhUJzogMHg4N0Q1LAorICAnWV9FWFQnOiAweDg3RDYsCisgICdaX0VYVCc6IDB4ODdENywKKyAg
J1dfRVhUJzogMHg4N0Q4LAorICAnTkVHQVRJVkVfWF9FWFQnOiAweDg3RDksCisgICdORUdBVElW
RV9ZX0VYVCc6IDB4ODdEQSwKKyAgJ05FR0FUSVZFX1pfRVhUJzogMHg4N0RCLAorICAnTkVHQVRJ
VkVfV19FWFQnOiAweDg3REMsCisgICdaRVJPX0VYVCc6IDB4ODdERCwKKyAgJ09ORV9FWFQnOiAw
eDg3REUsCisgICdORUdBVElWRV9PTkVfRVhUJzogMHg4N0RGLAorICAnTk9STUFMSVpFRF9SQU5H
RV9FWFQnOiAweDg3RTAsCisgICdGVUxMX1JBTkdFX0VYVCc6IDB4ODdFMSwKKyAgJ0NVUlJFTlRf
VkVSVEVYX0VYVCc6IDB4ODdFMiwKKyAgJ01WUF9NQVRSSVhfRVhUJzogMHg4N0UzLAorICAnVkFS
SUFOVF9WQUxVRV9FWFQnOiAweDg3RTQsCisgICdWQVJJQU5UX0RBVEFUWVBFX0VYVCc6IDB4ODdF
NSwKKyAgJ1ZBUklBTlRfQVJSQVlfU1RSSURFX0VYVCc6IDB4ODdFNiwKKyAgJ1ZBUklBTlRfQVJS
QVlfVFlQRV9FWFQnOiAweDg3RTcsCisgICdWQVJJQU5UX0FSUkFZX0VYVCc6IDB4ODdFOCwKKyAg
J1ZBUklBTlRfQVJSQVlfUE9JTlRFUl9FWFQnOiAweDg3RTksCisgICdJTlZBUklBTlRfVkFMVUVf
RVhUJzogMHg4N0VBLAorICAnSU5WQVJJQU5UX0RBVEFUWVBFX0VYVCc6IDB4ODdFQiwKKyAgJ0xP
Q0FMX0NPTlNUQU5UX1ZBTFVFX0VYVCc6IDB4ODdFQywKKyAgJ0xPQ0FMX0NPTlNUQU5UX0RBVEFU
WVBFX0VYVCc6IDB4ODdFRCwKKyAgJ01PREVMVklFVzBfU1RBQ0tfREVQVEhfRVhUJzogMHgwQkEz
LAorICAnTU9ERUxWSUVXMF9NQVRSSVhfRVhUJzogMHgwQkE2LAorICAnTU9ERUxWSUVXMF9FWFQn
OiAweDE3MDAsCisgICdNT0RFTFZJRVcxX1NUQUNLX0RFUFRIX0VYVCc6IDB4ODUwMiwKKyAgJ01P
REVMVklFVzFfTUFUUklYX0VYVCc6IDB4ODUwNiwKKyAgJ1ZFUlRFWF9XRUlHSFRJTkdfRVhUJzog
MHg4NTA5LAorICAnTU9ERUxWSUVXMV9FWFQnOiAweDg1MEEsCisgICdDVVJSRU5UX1ZFUlRFWF9X
RUlHSFRfRVhUJzogMHg4NTBCLAorICAnVkVSVEVYX1dFSUdIVF9BUlJBWV9FWFQnOiAweDg1MEMs
CisgICdWRVJURVhfV0VJR0hUX0FSUkFZX1NJWkVfRVhUJzogMHg4NTBELAorICAnVkVSVEVYX1dF
SUdIVF9BUlJBWV9UWVBFX0VYVCc6IDB4ODUwRSwKKyAgJ1ZFUlRFWF9XRUlHSFRfQVJSQVlfU1RS
SURFX0VYVCc6IDB4ODUwRiwKKyAgJ1ZFUlRFWF9XRUlHSFRfQVJSQVlfUE9JTlRFUl9FWFQnOiAw
eDg1MTAsCisgICdPQ0NMVVNJT05fVEVTVF9IUCc6IDB4ODE2NSwKKyAgJ09DQ0xVU0lPTl9URVNU
X1JFU1VMVF9IUCc6IDB4ODE2NiwKKyAgJ01JUlJPUkVEX1JFUEVBVF9JQk0nOiAweDgzNzAsCisg
ICdSRURfTUlOX0NMQU1QX0lOR1InOiAweDg1NjAsCisgICdHUkVFTl9NSU5fQ0xBTVBfSU5HUic6
IDB4ODU2MSwKKyAgJ0JMVUVfTUlOX0NMQU1QX0lOR1InOiAweDg1NjIsCisgICdBTFBIQV9NSU5f
Q0xBTVBfSU5HUic6IDB4ODU2MywKKyAgJ1JFRF9NQVhfQ0xBTVBfSU5HUic6IDB4ODU2NCwKKyAg
J0dSRUVOX01BWF9DTEFNUF9JTkdSJzogMHg4NTY1LAorICAnQkxVRV9NQVhfQ0xBTVBfSU5HUic6
IDB4ODU2NiwKKyAgJ0FMUEhBX01BWF9DTEFNUF9JTkdSJzogMHg4NTY3LAorICAnSU5URVJMQUNF
X1JFQURfSU5HUic6IDB4ODU2OCwKKyAgJ1BBUkFMTEVMX0FSUkFZU19JTlRFTCc6IDB4ODNGNCwK
KyAgJ1ZFUlRFWF9BUlJBWV9QQVJBTExFTF9QT0lOVEVSU19JTlRFTCc6IDB4ODNGNSwKKyAgJ05P
Uk1BTF9BUlJBWV9QQVJBTExFTF9QT0lOVEVSU19JTlRFTCc6IDB4ODNGNiwKKyAgJ0NPTE9SX0FS
UkFZX1BBUkFMTEVMX1BPSU5URVJTX0lOVEVMJzogMHg4M0Y3LAorICAnVEVYVFVSRV9DT09SRF9B
UlJBWV9QQVJBTExFTF9QT0lOVEVSU19JTlRFTCc6IDB4ODNGOCwKKyAgJ0tUWF9GUk9OVF9SRUdJ
T04nOiAweDAsCisgICdLVFhfQkFDS19SRUdJT04nOiAweDEsCisgICdLVFhfWl9SRUdJT04nOiAw
eDIsCisgICdLVFhfU1RFTkNJTF9SRUdJT04nOiAweDMsCisgICdURVhUVVJFXzFEX1NUQUNLX01F
U0FYJzogMHg4NzU5LAorICAnVEVYVFVSRV8yRF9TVEFDS19NRVNBWCc6IDB4ODc1QSwKKyAgJ1BS
T1hZX1RFWFRVUkVfMURfU1RBQ0tfTUVTQVgnOiAweDg3NUIsCisgICdQUk9YWV9URVhUVVJFXzJE
X1NUQUNLX01FU0FYJzogMHg4NzVDLAorICAnVEVYVFVSRV8xRF9TVEFDS19CSU5ESU5HX01FU0FY
JzogMHg4NzVELAorICAnVEVYVFVSRV8yRF9TVEFDS19CSU5ESU5HX01FU0FYJzogMHg4NzVFLAor
ICAnUEFDS19JTlZFUlRfTUVTQSc6IDB4ODc1OCwKKyAgJ1VOU0lHTkVEX1NIT1JUXzhfOF9NRVNB
JzogMHg4NUJBLAorICAnVU5TSUdORURfU0hPUlRfOF84X1JFVl9NRVNBJzogMHg4NUJCLAorICAn
WUNCQ1JfTUVTQSc6IDB4ODc1NywKKyAgJ1FVRVJZX1dBSVRfTlYnOiAweDhFMTMsCisgICdRVUVS
WV9OT19XQUlUX05WJzogMHg4RTE0LAorICAnUVVFUllfQllfUkVHSU9OX1dBSVRfTlYnOiAweDhF
MTUsCisgICdRVUVSWV9CWV9SRUdJT05fTk9fV0FJVF9OVic6IDB4OEUxNiwKKyAgJ0RFUFRIX1NU
RU5DSUxfVE9fUkdCQV9OVic6IDB4ODg2RSwKKyAgJ0RFUFRIX1NURU5DSUxfVE9fQkdSQV9OVic6
IDB4ODg2RiwKKyAgJ0RFUFRIX0NPTVBPTkVOVDMyRl9OVic6IDB4OERBQiwKKyAgJ0RFUFRIMzJG
X1NURU5DSUw4X05WJzogMHg4REFDLAorICAnRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVW
X05WJzogMHg4REFELAorICAnREVQVEhfQlVGRkVSX0ZMT0FUX01PREVfTlYnOiAweDhEQUYsCisg
ICdERVBUSF9DTEFNUF9OVic6IDB4ODY0RiwKKyAgJ1NBTVBMRV9DT1VOVF9CSVRTX05WJzogMHg4
ODY0LAorICAnQ1VSUkVOVF9TQU1QTEVfQ09VTlRfUVVFUllfTlYnOiAweDg4NjUsCisgICdRVUVS
WV9SRVNVTFRfTlYnOiAweDg4NjYsCisgICdRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX05WJzogMHg4
ODY3LAorICAnU0FNUExFX0NPVU5UX05WJzogMHg4OTE0LAorICAnRVZBTF8yRF9OVic6IDB4ODZD
MCwKKyAgJ0VWQUxfVFJJQU5HVUxBUl8yRF9OVic6IDB4ODZDMSwKKyAgJ01BUF9URVNTRUxMQVRJ
T05fTlYnOiAweDg2QzIsCisgICdNQVBfQVRUUklCX1VfT1JERVJfTlYnOiAweDg2QzMsCisgICdN
QVBfQVRUUklCX1ZfT1JERVJfTlYnOiAweDg2QzQsCisgICdFVkFMX0ZSQUNUSU9OQUxfVEVTU0VM
TEFUSU9OX05WJzogMHg4NkM1LAorICAnRVZBTF9WRVJURVhfQVRUUklCMF9OVic6IDB4ODZDNiwK
KyAgJ0VWQUxfVkVSVEVYX0FUVFJJQjFfTlYnOiAweDg2QzcsCisgICdFVkFMX1ZFUlRFWF9BVFRS
SUIyX05WJzogMHg4NkM4LAorICAnRVZBTF9WRVJURVhfQVRUUklCM19OVic6IDB4ODZDOSwKKyAg
J0VWQUxfVkVSVEVYX0FUVFJJQjRfTlYnOiAweDg2Q0EsCisgICdFVkFMX1ZFUlRFWF9BVFRSSUI1
X05WJzogMHg4NkNCLAorICAnRVZBTF9WRVJURVhfQVRUUklCNl9OVic6IDB4ODZDQywKKyAgJ0VW
QUxfVkVSVEVYX0FUVFJJQjdfTlYnOiAweDg2Q0QsCisgICdFVkFMX1ZFUlRFWF9BVFRSSUI4X05W
JzogMHg4NkNFLAorICAnRVZBTF9WRVJURVhfQVRUUklCOV9OVic6IDB4ODZDRiwKKyAgJ0VWQUxf
VkVSVEVYX0FUVFJJQjEwX05WJzogMHg4NkQwLAorICAnRVZBTF9WRVJURVhfQVRUUklCMTFfTlYn
OiAweDg2RDEsCisgICdFVkFMX1ZFUlRFWF9BVFRSSUIxMl9OVic6IDB4ODZEMiwKKyAgJ0VWQUxf
VkVSVEVYX0FUVFJJQjEzX05WJzogMHg4NkQzLAorICAnRVZBTF9WRVJURVhfQVRUUklCMTRfTlYn
OiAweDg2RDQsCisgICdFVkFMX1ZFUlRFWF9BVFRSSUIxNV9OVic6IDB4ODZENSwKKyAgJ01BWF9N
QVBfVEVTU0VMTEFUSU9OX05WJzogMHg4NkQ2LAorICAnTUFYX1JBVElPTkFMX0VWQUxfT1JERVJf
TlYnOiAweDg2RDcsCisgICdTQU1QTEVfUE9TSVRJT05fTlYnOiAweDhFNTAsCisgICdTQU1QTEVf
TUFTS19OVic6IDB4OEU1MSwKKyAgJ1NBTVBMRV9NQVNLX1ZBTFVFX05WJzogMHg4RTUyLAorICAn
VEVYVFVSRV9CSU5ESU5HX1JFTkRFUkJVRkZFUl9OVic6IDB4OEU1MywKKyAgJ1RFWFRVUkVfUkVO
REVSQlVGRkVSX0RBVEFfU1RPUkVfQklORElOR19OVic6IDB4OEU1NCwKKyAgJ1RFWFRVUkVfUkVO
REVSQlVGRkVSX05WJzogMHg4RTU1LAorICAnU0FNUExFUl9SRU5ERVJCVUZGRVJfTlYnOiAweDhF
NTYsCisgICdJTlRfU0FNUExFUl9SRU5ERVJCVUZGRVJfTlYnOiAweDhFNTcsCisgICdVTlNJR05F
RF9JTlRfU0FNUExFUl9SRU5ERVJCVUZGRVJfTlYnOiAweDhFNTgsCisgICdNQVhfU0FNUExFX01B
U0tfV09SRFNfTlYnOiAweDhFNTksCisgICdBTExfQ09NUExFVEVEX05WJzogMHg4NEYyLAorICAn
RkVOQ0VfU1RBVFVTX05WJzogMHg4NEYzLAorICAnRkVOQ0VfQ09ORElUSU9OX05WJzogMHg4NEY0
LAorICAnRkxPQVRfUl9OVic6IDB4ODg4MCwKKyAgJ0ZMT0FUX1JHX05WJzogMHg4ODgxLAorICAn
RkxPQVRfUkdCX05WJzogMHg4ODgyLAorICAnRkxPQVRfUkdCQV9OVic6IDB4ODg4MywKKyAgJ0ZM
T0FUX1IxNl9OVic6IDB4ODg4NCwKKyAgJ0ZMT0FUX1IzMl9OVic6IDB4ODg4NSwKKyAgJ0ZMT0FU
X1JHMTZfTlYnOiAweDg4ODYsCisgICdGTE9BVF9SRzMyX05WJzogMHg4ODg3LAorICAnRkxPQVRf
UkdCMTZfTlYnOiAweDg4ODgsCisgICdGTE9BVF9SR0IzMl9OVic6IDB4ODg4OSwKKyAgJ0ZMT0FU
X1JHQkExNl9OVic6IDB4ODg4QSwKKyAgJ0ZMT0FUX1JHQkEzMl9OVic6IDB4ODg4QiwKKyAgJ1RF
WFRVUkVfRkxPQVRfQ09NUE9ORU5UU19OVic6IDB4ODg4QywKKyAgJ0ZMT0FUX0NMRUFSX0NPTE9S
X1ZBTFVFX05WJzogMHg4ODhELAorICAnRkxPQVRfUkdCQV9NT0RFX05WJzogMHg4ODhFLAorICAn
Rk9HX0RJU1RBTkNFX01PREVfTlYnOiAweDg1NUEsCisgICdFWUVfUkFESUFMX05WJzogMHg4NTVC
LAorICAnRVlFX1BMQU5FX0FCU09MVVRFX05WJzogMHg4NTVDLAorICAnTUFYX0ZSQUdNRU5UX1BS
T0dSQU1fTE9DQUxfUEFSQU1FVEVSU19OVic6IDB4ODg2OCwKKyAgJ0ZSQUdNRU5UX1BST0dSQU1f
TlYnOiAweDg4NzAsCisgICdNQVhfVEVYVFVSRV9DT09SRFNfTlYnOiAweDg4NzEsCisgICdNQVhf
VEVYVFVSRV9JTUFHRV9VTklUU19OVic6IDB4ODg3MiwKKyAgJ0ZSQUdNRU5UX1BST0dSQU1fQklO
RElOR19OVic6IDB4ODg3MywKKyAgJ1BST0dSQU1fRVJST1JfU1RSSU5HX05WJzogMHg4ODc0LAor
ICAnTUFYX1BST0dSQU1fRVhFQ19JTlNUUlVDVElPTlNfTlYnOiAweDg4RjQsCisgICdNQVhfUFJP
R1JBTV9DQUxMX0RFUFRIX05WJzogMHg4OEY1LAorICAnTUFYX1BST0dSQU1fSUZfREVQVEhfTlYn
OiAweDg4RjYsCisgICdNQVhfUFJPR1JBTV9MT09QX0RFUFRIX05WJzogMHg4OEY3LAorICAnTUFY
X1BST0dSQU1fTE9PUF9DT1VOVF9OVic6IDB4ODhGOCwKKyAgJ1JFTkRFUkJVRkZFUl9DT1ZFUkFH
RV9TQU1QTEVTX05WJzogMHg4Q0FCLAorICAnUkVOREVSQlVGRkVSX0NPTE9SX1NBTVBMRVNfTlYn
OiAweDhFMTAsCisgICdNQVhfTVVMVElTQU1QTEVfQ09WRVJBR0VfTU9ERVNfTlYnOiAweDhFMTEs
CisgICdNVUxUSVNBTVBMRV9DT1ZFUkFHRV9NT0RFU19OVic6IDB4OEUxMiwKKyAgJ0dFT01FVFJZ
X1BST0dSQU1fTlYnOiAweDhDMjYsCisgICdNQVhfUFJPR1JBTV9PVVRQVVRfVkVSVElDRVNfTlYn
OiAweDhDMjcsCisgICdNQVhfUFJPR1JBTV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UU19OVic6IDB4
OEMyOCwKKyAgJ01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVF9OVic6IDB4ODkwNCwKKyAgJ01BWF9Q
Uk9HUkFNX1RFWEVMX09GRlNFVF9OVic6IDB4ODkwNSwKKyAgJ1BST0dSQU1fQVRUUklCX0NPTVBP
TkVOVFNfTlYnOiAweDg5MDYsCisgICdQUk9HUkFNX1JFU1VMVF9DT01QT05FTlRTX05WJzogMHg4
OTA3LAorICAnTUFYX1BST0dSQU1fQVRUUklCX0NPTVBPTkVOVFNfTlYnOiAweDg5MDgsCisgICdN
QVhfUFJPR1JBTV9SRVNVTFRfQ09NUE9ORU5UU19OVic6IDB4ODkwOSwKKyAgJ01BWF9QUk9HUkFN
X0dFTkVSSUNfQVRUUklCU19OVic6IDB4OERBNSwKKyAgJ01BWF9QUk9HUkFNX0dFTkVSSUNfUkVT
VUxUU19OVic6IDB4OERBNiwKKyAgJ0hBTEZfRkxPQVRfTlYnOiAweDE0MEIsCisgICdNQVhfU0hJ
TklORVNTX05WJzogMHg4NTA0LAorICAnTUFYX1NQT1RfRVhQT05FTlRfTlYnOiAweDg1MDUsCisg
ICdNVUxUSVNBTVBMRV9GSUxURVJfSElOVF9OVic6IDB4ODUzNCwKKyAgJ1BJWEVMX0NPVU5URVJf
QklUU19OVic6IDB4ODg2NCwKKyAgJ0NVUlJFTlRfT0NDTFVTSU9OX1FVRVJZX0lEX05WJzogMHg4
ODY1LAorICAnUElYRUxfQ09VTlRfTlYnOiAweDg4NjYsCisgICdQSVhFTF9DT1VOVF9BVkFJTEFC
TEVfTlYnOiAweDg4NjcsCisgICdERVBUSF9TVEVOQ0lMX05WJzogMHg4NEY5LAorICAnVU5TSUdO
RURfSU5UXzI0XzhfTlYnOiAweDg0RkEsCisgICdNQVhfUFJPR1JBTV9QQVJBTUVURVJfQlVGRkVS
X0JJTkRJTkdTX05WJzogMHg4REEwLAorICAnTUFYX1BST0dSQU1fUEFSQU1FVEVSX0JVRkZFUl9T
SVpFX05WJzogMHg4REExLAorICAnVkVSVEVYX1BST0dSQU1fUEFSQU1FVEVSX0JVRkZFUl9OVic6
IDB4OERBMiwKKyAgJ0dFT01FVFJZX1BST0dSQU1fUEFSQU1FVEVSX0JVRkZFUl9OVic6IDB4OERB
MywKKyAgJ0ZSQUdNRU5UX1BST0dSQU1fUEFSQU1FVEVSX0JVRkZFUl9OVic6IDB4OERBNCwKKyAg
J1dSSVRFX1BJWEVMX0RBVEFfUkFOR0VfTlYnOiAweDg4NzgsCisgICdSRUFEX1BJWEVMX0RBVEFf
UkFOR0VfTlYnOiAweDg4NzksCisgICdXUklURV9QSVhFTF9EQVRBX1JBTkdFX0xFTkdUSF9OVic6
IDB4ODg3QSwKKyAgJ1JFQURfUElYRUxfREFUQV9SQU5HRV9MRU5HVEhfTlYnOiAweDg4N0IsCisg
ICdXUklURV9QSVhFTF9EQVRBX1JBTkdFX1BPSU5URVJfTlYnOiAweDg4N0MsCisgICdSRUFEX1BJ
WEVMX0RBVEFfUkFOR0VfUE9JTlRFUl9OVic6IDB4ODg3RCwKKyAgJ1BPSU5UX1NQUklURV9OVic6
IDB4ODg2MSwKKyAgJ0NPT1JEX1JFUExBQ0VfTlYnOiAweDg4NjIsCisgICdQT0lOVF9TUFJJVEVf
Ul9NT0RFX05WJzogMHg4ODYzLAorICAnRlJBTUVfTlYnOiAweDhFMjYsCisgICdGSUVMRFNfTlYn
OiAweDhFMjcsCisgICdDVVJSRU5UX1RJTUVfTlYnOiAweDhFMjgsCisgICdOVU1fRklMTF9TVFJF
QU1TX05WJzogMHg4RTI5LAorICAnUFJFU0VOVF9USU1FX05WJzogMHg4RTJBLAorICAnUFJFU0VO
VF9EVVJBVElPTl9OVic6IDB4OEUyQiwKKyAgJ1BSSU1JVElWRV9SRVNUQVJUX05WJzogMHg4NTU4
LAorICAnUFJJTUlUSVZFX1JFU1RBUlRfSU5ERVhfTlYnOiAweDg1NTksCisgICdSRUdJU1RFUl9D
T01CSU5FUlNfTlYnOiAweDg1MjIsCisgICdWQVJJQUJMRV9BX05WJzogMHg4NTIzLAorICAnVkFS
SUFCTEVfQl9OVic6IDB4ODUyNCwKKyAgJ1ZBUklBQkxFX0NfTlYnOiAweDg1MjUsCisgICdWQVJJ
QUJMRV9EX05WJzogMHg4NTI2LAorICAnVkFSSUFCTEVfRV9OVic6IDB4ODUyNywKKyAgJ1ZBUklB
QkxFX0ZfTlYnOiAweDg1MjgsCisgICdWQVJJQUJMRV9HX05WJzogMHg4NTI5LAorICAnQ09OU1RB
TlRfQ09MT1IwX05WJzogMHg4NTJBLAorICAnQ09OU1RBTlRfQ09MT1IxX05WJzogMHg4NTJCLAor
ICAnUFJJTUFSWV9DT0xPUl9OVic6IDB4ODUyQywKKyAgJ1NFQ09OREFSWV9DT0xPUl9OVic6IDB4
ODUyRCwKKyAgJ1NQQVJFMF9OVic6IDB4ODUyRSwKKyAgJ1NQQVJFMV9OVic6IDB4ODUyRiwKKyAg
J0RJU0NBUkRfTlYnOiAweDg1MzAsCisgICdFX1RJTUVTX0ZfTlYnOiAweDg1MzEsCisgICdTUEFS
RTBfUExVU19TRUNPTkRBUllfQ09MT1JfTlYnOiAweDg1MzIsCisgICdVTlNJR05FRF9JREVOVElU
WV9OVic6IDB4ODUzNiwKKyAgJ1VOU0lHTkVEX0lOVkVSVF9OVic6IDB4ODUzNywKKyAgJ0VYUEFO
RF9OT1JNQUxfTlYnOiAweDg1MzgsCisgICdFWFBBTkRfTkVHQVRFX05WJzogMHg4NTM5LAorICAn
SEFMRl9CSUFTX05PUk1BTF9OVic6IDB4ODUzQSwKKyAgJ0hBTEZfQklBU19ORUdBVEVfTlYnOiAw
eDg1M0IsCisgICdTSUdORURfSURFTlRJVFlfTlYnOiAweDg1M0MsCisgICdTSUdORURfTkVHQVRF
X05WJzogMHg4NTNELAorICAnU0NBTEVfQllfVFdPX05WJzogMHg4NTNFLAorICAnU0NBTEVfQllf
Rk9VUl9OVic6IDB4ODUzRiwKKyAgJ1NDQUxFX0JZX09ORV9IQUxGX05WJzogMHg4NTQwLAorICAn
QklBU19CWV9ORUdBVElWRV9PTkVfSEFMRl9OVic6IDB4ODU0MSwKKyAgJ0NPTUJJTkVSX0lOUFVU
X05WJzogMHg4NTQyLAorICAnQ09NQklORVJfTUFQUElOR19OVic6IDB4ODU0MywKKyAgJ0NPTUJJ
TkVSX0NPTVBPTkVOVF9VU0FHRV9OVic6IDB4ODU0NCwKKyAgJ0NPTUJJTkVSX0FCX0RPVF9QUk9E
VUNUX05WJzogMHg4NTQ1LAorICAnQ09NQklORVJfQ0RfRE9UX1BST0RVQ1RfTlYnOiAweDg1NDYs
CisgICdDT01CSU5FUl9NVVhfU1VNX05WJzogMHg4NTQ3LAorICAnQ09NQklORVJfU0NBTEVfTlYn
OiAweDg1NDgsCisgICdDT01CSU5FUl9CSUFTX05WJzogMHg4NTQ5LAorICAnQ09NQklORVJfQUJf
T1VUUFVUX05WJzogMHg4NTRBLAorICAnQ09NQklORVJfQ0RfT1VUUFVUX05WJzogMHg4NTRCLAor
ICAnQ09NQklORVJfU1VNX09VVFBVVF9OVic6IDB4ODU0QywKKyAgJ01BWF9HRU5FUkFMX0NPTUJJ
TkVSU19OVic6IDB4ODU0RCwKKyAgJ05VTV9HRU5FUkFMX0NPTUJJTkVSU19OVic6IDB4ODU0RSwK
KyAgJ0NPTE9SX1NVTV9DTEFNUF9OVic6IDB4ODU0RiwKKyAgJ0NPTUJJTkVSMF9OVic6IDB4ODU1
MCwKKyAgJ0NPTUJJTkVSMV9OVic6IDB4ODU1MSwKKyAgJ0NPTUJJTkVSMl9OVic6IDB4ODU1MiwK
KyAgJ0NPTUJJTkVSM19OVic6IDB4ODU1MywKKyAgJ0NPTUJJTkVSNF9OVic6IDB4ODU1NCwKKyAg
J0NPTUJJTkVSNV9OVic6IDB4ODU1NSwKKyAgJ0NPTUJJTkVSNl9OVic6IDB4ODU1NiwKKyAgJ0NP
TUJJTkVSN19OVic6IDB4ODU1NywKKyAgJ1BFUl9TVEFHRV9DT05TVEFOVFNfTlYnOiAweDg1MzUs
CisgICdFTUJPU1NfTElHSFRfTlYnOiAweDg1NUQsCisgICdFTUJPU1NfQ09OU1RBTlRfTlYnOiAw
eDg1NUUsCisgICdFTUJPU1NfTUFQX05WJzogMHg4NTVGLAorICAnTk9STUFMX01BUF9OVic6IDB4
ODUxMSwKKyAgJ1JFRkxFQ1RJT05fTUFQX05WJzogMHg4NTEyLAorICAnQ09NQklORTRfTlYnOiAw
eDg1MDMsCisgICdTT1VSQ0UzX1JHQl9OVic6IDB4ODU4MywKKyAgJ1NPVVJDRTNfQUxQSEFfTlYn
OiAweDg1OEIsCisgICdPUEVSQU5EM19SR0JfTlYnOiAweDg1OTMsCisgICdPUEVSQU5EM19BTFBI
QV9OVic6IDB4ODU5QiwKKyAgJ1RFWFRVUkVfVU5TSUdORURfUkVNQVBfTU9ERV9OVic6IDB4ODg4
RiwKKyAgJ1RFWFRVUkVfUkVDVEFOR0xFX05WJzogMHg4NEY1LAorICAnVEVYVFVSRV9CSU5ESU5H
X1JFQ1RBTkdMRV9OVic6IDB4ODRGNiwKKyAgJ1BST1hZX1RFWFRVUkVfUkVDVEFOR0xFX05WJzog
MHg4NEY3LAorICAnTUFYX1JFQ1RBTkdMRV9URVhUVVJFX1NJWkVfTlYnOiAweDg0RjgsCisgICdP
RkZTRVRfVEVYVFVSRV9SRUNUQU5HTEVfTlYnOiAweDg2NEMsCisgICdPRkZTRVRfVEVYVFVSRV9S
RUNUQU5HTEVfU0NBTEVfTlYnOiAweDg2NEQsCisgICdET1RfUFJPRFVDVF9URVhUVVJFX1JFQ1RB
TkdMRV9OVic6IDB4ODY0RSwKKyAgJ1JHQkFfVU5TSUdORURfRE9UX1BST0RVQ1RfTUFQUElOR19O
Vic6IDB4ODZEOSwKKyAgJ1VOU0lHTkVEX0lOVF9TOF9TOF84XzhfTlYnOiAweDg2REEsCisgICdV
TlNJR05FRF9JTlRfOF84X1M4X1M4X1JFVl9OVic6IDB4ODZEQiwKKyAgJ0RTRFRfTUFHX0lOVEVO
U0lUWV9OVic6IDB4ODZEQywKKyAgJ1NIQURFUl9DT05TSVNURU5UX05WJzogMHg4NkRELAorICAn
VEVYVFVSRV9TSEFERVJfTlYnOiAweDg2REUsCisgICdTSEFERVJfT1BFUkFUSU9OX05WJzogMHg4
NkRGLAorICAnQ1VMTF9NT0RFU19OVic6IDB4ODZFMCwKKyAgJ09GRlNFVF9URVhUVVJFXzJEX01B
VFJJWF9OVic6IDB4ODZFMSwKKyAgJ09GRlNFVF9URVhUVVJFX01BVFJJWF9OVic6IDB4ODZFMSwK
KyAgJ09GRlNFVF9URVhUVVJFXzJEX1NDQUxFX05WJzogMHg4NkUyLAorICAnT0ZGU0VUX1RFWFRV
UkVfU0NBTEVfTlYnOiAweDg2RTIsCisgICdPRkZTRVRfVEVYVFVSRV9CSUFTX05WJzogMHg4NkUz
LAorICAnT0ZGU0VUX1RFWFRVUkVfMkRfQklBU19OVic6IDB4ODZFMywKKyAgJ1BSRVZJT1VTX1RF
WFRVUkVfSU5QVVRfTlYnOiAweDg2RTQsCisgICdDT05TVF9FWUVfTlYnOiAweDg2RTUsCisgICdQ
QVNTX1RIUk9VR0hfTlYnOiAweDg2RTYsCisgICdDVUxMX0ZSQUdNRU5UX05WJzogMHg4NkU3LAor
ICAnT0ZGU0VUX1RFWFRVUkVfMkRfTlYnOiAweDg2RTgsCisgICdERVBFTkRFTlRfQVJfVEVYVFVS
RV8yRF9OVic6IDB4ODZFOSwKKyAgJ0RFUEVOREVOVF9HQl9URVhUVVJFXzJEX05WJzogMHg4NkVB
LAorICAnRE9UX1BST0RVQ1RfTlYnOiAweDg2RUMsCisgICdET1RfUFJPRFVDVF9ERVBUSF9SRVBM
QUNFX05WJzogMHg4NkVELAorICAnRE9UX1BST0RVQ1RfVEVYVFVSRV8yRF9OVic6IDB4ODZFRSwK
KyAgJ0RPVF9QUk9EVUNUX1RFWFRVUkVfQ1VCRV9NQVBfTlYnOiAweDg2RjAsCisgICdET1RfUFJP
RFVDVF9ESUZGVVNFX0NVQkVfTUFQX05WJzogMHg4NkYxLAorICAnRE9UX1BST0RVQ1RfUkVGTEVD
VF9DVUJFX01BUF9OVic6IDB4ODZGMiwKKyAgJ0RPVF9QUk9EVUNUX0NPTlNUX0VZRV9SRUZMRUNU
X0NVQkVfTUFQX05WJzogMHg4NkYzLAorICAnSElMT19OVic6IDB4ODZGNCwKKyAgJ0RTRFRfTlYn
OiAweDg2RjUsCisgICdEU0RUX01BR19OVic6IDB4ODZGNiwKKyAgJ0RTRFRfTUFHX1ZJQl9OVic6
IDB4ODZGNywKKyAgJ0hJTE8xNl9OVic6IDB4ODZGOCwKKyAgJ1NJR05FRF9ISUxPX05WJzogMHg4
NkY5LAorICAnU0lHTkVEX0hJTE8xNl9OVic6IDB4ODZGQSwKKyAgJ1NJR05FRF9SR0JBX05WJzog
MHg4NkZCLAorICAnU0lHTkVEX1JHQkE4X05WJzogMHg4NkZDLAorICAnU0lHTkVEX1JHQl9OVic6
IDB4ODZGRSwKKyAgJ1NJR05FRF9SR0I4X05WJzogMHg4NkZGLAorICAnU0lHTkVEX0xVTUlOQU5D
RV9OVic6IDB4ODcwMSwKKyAgJ1NJR05FRF9MVU1JTkFOQ0U4X05WJzogMHg4NzAyLAorICAnU0lH
TkVEX0xVTUlOQU5DRV9BTFBIQV9OVic6IDB4ODcwMywKKyAgJ1NJR05FRF9MVU1JTkFOQ0U4X0FM
UEhBOF9OVic6IDB4ODcwNCwKKyAgJ1NJR05FRF9BTFBIQV9OVic6IDB4ODcwNSwKKyAgJ1NJR05F
RF9BTFBIQThfTlYnOiAweDg3MDYsCisgICdTSUdORURfSU5URU5TSVRZX05WJzogMHg4NzA3LAor
ICAnU0lHTkVEX0lOVEVOU0lUWThfTlYnOiAweDg3MDgsCisgICdEU0RUOF9OVic6IDB4ODcwOSwK
KyAgJ0RTRFQ4X01BRzhfTlYnOiAweDg3MEEsCisgICdEU0RUOF9NQUc4X0lOVEVOU0lUWThfTlYn
OiAweDg3MEIsCisgICdTSUdORURfUkdCX1VOU0lHTkVEX0FMUEhBX05WJzogMHg4NzBDLAorICAn
U0lHTkVEX1JHQjhfVU5TSUdORURfQUxQSEE4X05WJzogMHg4NzBELAorICAnSElfU0NBTEVfTlYn
OiAweDg3MEUsCisgICdMT19TQ0FMRV9OVic6IDB4ODcwRiwKKyAgJ0RTX1NDQUxFX05WJzogMHg4
NzEwLAorICAnRFRfU0NBTEVfTlYnOiAweDg3MTEsCisgICdNQUdOSVRVREVfU0NBTEVfTlYnOiAw
eDg3MTIsCisgICdWSUJSQU5DRV9TQ0FMRV9OVic6IDB4ODcxMywKKyAgJ0hJX0JJQVNfTlYnOiAw
eDg3MTQsCisgICdMT19CSUFTX05WJzogMHg4NzE1LAorICAnRFNfQklBU19OVic6IDB4ODcxNiwK
KyAgJ0RUX0JJQVNfTlYnOiAweDg3MTcsCisgICdNQUdOSVRVREVfQklBU19OVic6IDB4ODcxOCwK
KyAgJ1ZJQlJBTkNFX0JJQVNfTlYnOiAweDg3MTksCisgICdURVhUVVJFX0JPUkRFUl9WQUxVRVNf
TlYnOiAweDg3MUEsCisgICdURVhUVVJFX0hJX1NJWkVfTlYnOiAweDg3MUIsCisgICdURVhUVVJF
X0xPX1NJWkVfTlYnOiAweDg3MUMsCisgICdURVhUVVJFX0RTX1NJWkVfTlYnOiAweDg3MUQsCisg
ICdURVhUVVJFX0RUX1NJWkVfTlYnOiAweDg3MUUsCisgICdURVhUVVJFX01BR19TSVpFX05WJzog
MHg4NzFGLAorICAnVU5TSUdORURfSU5UX1M4X1M4XzhfOF9OVic6IDB4ODZEQSwKKyAgJ1VOU0lH
TkVEX0lOVF84XzhfUzhfUzhfUkVWX05WJzogMHg4NkRCLAorICAnRFNEVF9NQUdfSU5URU5TSVRZ
X05WJzogMHg4NkRDLAorICAnRE9UX1BST0RVQ1RfVEVYVFVSRV8zRF9OVic6IDB4ODZFRiwKKyAg
J0hJTE9fTlYnOiAweDg2RjQsCisgICdEU0RUX05WJzogMHg4NkY1LAorICAnRFNEVF9NQUdfTlYn
OiAweDg2RjYsCisgICdEU0RUX01BR19WSUJfTlYnOiAweDg2RjcsCisgICdISUxPMTZfTlYnOiAw
eDg2RjgsCisgICdTSUdORURfSElMT19OVic6IDB4ODZGOSwKKyAgJ1NJR05FRF9ISUxPMTZfTlYn
OiAweDg2RkEsCisgICdTSUdORURfUkdCQV9OVic6IDB4ODZGQiwKKyAgJ1NJR05FRF9SR0JBOF9O
Vic6IDB4ODZGQywKKyAgJ1NJR05FRF9SR0JfTlYnOiAweDg2RkUsCisgICdTSUdORURfUkdCOF9O
Vic6IDB4ODZGRiwKKyAgJ1NJR05FRF9MVU1JTkFOQ0VfTlYnOiAweDg3MDEsCisgICdTSUdORURf
TFVNSU5BTkNFOF9OVic6IDB4ODcwMiwKKyAgJ1NJR05FRF9MVU1JTkFOQ0VfQUxQSEFfTlYnOiAw
eDg3MDMsCisgICdTSUdORURfTFVNSU5BTkNFOF9BTFBIQThfTlYnOiAweDg3MDQsCisgICdTSUdO
RURfQUxQSEFfTlYnOiAweDg3MDUsCisgICdTSUdORURfQUxQSEE4X05WJzogMHg4NzA2LAorICAn
U0lHTkVEX0lOVEVOU0lUWV9OVic6IDB4ODcwNywKKyAgJ1NJR05FRF9JTlRFTlNJVFk4X05WJzog
MHg4NzA4LAorICAnRFNEVDhfTlYnOiAweDg3MDksCisgICdEU0RUOF9NQUc4X05WJzogMHg4NzBB
LAorICAnRFNEVDhfTUFHOF9JTlRFTlNJVFk4X05WJzogMHg4NzBCLAorICAnU0lHTkVEX1JHQl9V
TlNJR05FRF9BTFBIQV9OVic6IDB4ODcwQywKKyAgJ1NJR05FRF9SR0I4X1VOU0lHTkVEX0FMUEhB
OF9OVic6IDB4ODcwRCwKKyAgJ09GRlNFVF9QUk9KRUNUSVZFX1RFWFRVUkVfMkRfTlYnOiAweDg4
NTAsCisgICdPRkZTRVRfUFJPSkVDVElWRV9URVhUVVJFXzJEX1NDQUxFX05WJzogMHg4ODUxLAor
ICAnT0ZGU0VUX1BST0pFQ1RJVkVfVEVYVFVSRV9SRUNUQU5HTEVfTlYnOiAweDg4NTIsCisgICdP
RkZTRVRfUFJPSkVDVElWRV9URVhUVVJFX1JFQ1RBTkdMRV9TQ0FMRV9OVic6IDB4ODg1MywKKyAg
J09GRlNFVF9ISUxPX1RFWFRVUkVfMkRfTlYnOiAweDg4NTQsCisgICdPRkZTRVRfSElMT19URVhU
VVJFX1JFQ1RBTkdMRV9OVic6IDB4ODg1NSwKKyAgJ09GRlNFVF9ISUxPX1BST0pFQ1RJVkVfVEVY
VFVSRV8yRF9OVic6IDB4ODg1NiwKKyAgJ09GRlNFVF9ISUxPX1BST0pFQ1RJVkVfVEVYVFVSRV9S
RUNUQU5HTEVfTlYnOiAweDg4NTcsCisgICdERVBFTkRFTlRfSElMT19URVhUVVJFXzJEX05WJzog
MHg4ODU4LAorICAnREVQRU5ERU5UX1JHQl9URVhUVVJFXzNEX05WJzogMHg4ODU5LAorICAnREVQ
RU5ERU5UX1JHQl9URVhUVVJFX0NVQkVfTUFQX05WJzogMHg4ODVBLAorICAnRE9UX1BST0RVQ1Rf
UEFTU19USFJPVUdIX05WJzogMHg4ODVCLAorICAnRE9UX1BST0RVQ1RfVEVYVFVSRV8xRF9OVic6
IDB4ODg1QywKKyAgJ0RPVF9QUk9EVUNUX0FGRklORV9ERVBUSF9SRVBMQUNFX05WJzogMHg4ODVE
LAorICAnSElMTzhfTlYnOiAweDg4NUUsCisgICdTSUdORURfSElMTzhfTlYnOiAweDg4NUYsCisg
ICdGT1JDRV9CTFVFX1RPX09ORV9OVic6IDB4ODg2MCwKKyAgJ0JBQ0tfUFJJTUFSWV9DT0xPUl9O
Vic6IDB4OEM3NywKKyAgJ0JBQ0tfU0VDT05EQVJZX0NPTE9SX05WJzogMHg4Qzc4LAorICAnVEVY
VFVSRV9DT09SRF9OVic6IDB4OEM3OSwKKyAgJ0NMSVBfRElTVEFOQ0VfTlYnOiAweDhDN0EsCisg
ICdWRVJURVhfSURfTlYnOiAweDhDN0IsCisgICdQUklNSVRJVkVfSURfTlYnOiAweDhDN0MsCisg
ICdHRU5FUklDX0FUVFJJQl9OVic6IDB4OEM3RCwKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19BVFRS
SUJTX05WJzogMHg4QzdFLAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFX05WJzog
MHg4QzdGLAorICAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTX05W
JzogMHg4QzgwLAorICAnQUNUSVZFX1ZBUllJTkdTX05WJzogMHg4QzgxLAorICAnQUNUSVZFX1ZB
UllJTkdfTUFYX0xFTkdUSF9OVic6IDB4OEM4MiwKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19WQVJZ
SU5HU19OVic6IDB4OEM4MywKKyAgJ1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlRfTlYn
OiAweDhDODQsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkVfTlYnOiAweDhDODUs
CisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfUkVDT1JEX05WJzogMHg4Qzg2LAorICAnUFJJTUlUSVZF
U19HRU5FUkFURURfTlYnOiAweDhDODcsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZF
U19XUklUVEVOX05WJzogMHg4Qzg4LAorICAnUkFTVEVSSVpFUl9ESVNDQVJEX05WJzogMHg4Qzg5
LAorICAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTX05WJzog
MHg4QzhBLAorICAnTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTX05WJzog
MHg4QzhCLAorICAnSU5URVJMRUFWRURfQVRUUklCU19OVic6IDB4OEM4QywKKyAgJ1NFUEFSQVRF
X0FUVFJJQlNfTlYnOiAweDhDOEQsCisgICdUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX05WJzog
MHg4QzhFLAorICAnVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HX05WJzogMHg4QzhG
LAorICAnVkVSVEVYX0FSUkFZX1JBTkdFX05WJzogMHg4NTFELAorICAnVkVSVEVYX0FSUkFZX1JB
TkdFX0xFTkdUSF9OVic6IDB4ODUxRSwKKyAgJ1ZFUlRFWF9BUlJBWV9SQU5HRV9WQUxJRF9OVic6
IDB4ODUxRiwKKyAgJ01BWF9WRVJURVhfQVJSQVlfUkFOR0VfRUxFTUVOVF9OVic6IDB4ODUyMCwK
KyAgJ1ZFUlRFWF9BUlJBWV9SQU5HRV9QT0lOVEVSX05WJzogMHg4NTIxLAorICAnVkVSVEVYX0FS
UkFZX1JBTkdFX1dJVEhPVVRfRkxVU0hfTlYnOiAweDg1MzMsCisgICdWRVJURVhfUFJPR1JBTV9O
Vic6IDB4ODYyMCwKKyAgJ1ZFUlRFWF9TVEFURV9QUk9HUkFNX05WJzogMHg4NjIxLAorICAnQVRU
UklCX0FSUkFZX1NJWkVfTlYnOiAweDg2MjMsCisgICdBVFRSSUJfQVJSQVlfU1RSSURFX05WJzog
MHg4NjI0LAorICAnQVRUUklCX0FSUkFZX1RZUEVfTlYnOiAweDg2MjUsCisgICdDVVJSRU5UX0FU
VFJJQl9OVic6IDB4ODYyNiwKKyAgJ1BST0dSQU1fTEVOR1RIX05WJzogMHg4NjI3LAorICAnUFJP
R1JBTV9TVFJJTkdfTlYnOiAweDg2MjgsCisgICdNT0RFTFZJRVdfUFJPSkVDVElPTl9OVic6IDB4
ODYyOSwKKyAgJ0lERU5USVRZX05WJzogMHg4NjJBLAorICAnSU5WRVJTRV9OVic6IDB4ODYyQiwK
KyAgJ1RSQU5TUE9TRV9OVic6IDB4ODYyQywKKyAgJ0lOVkVSU0VfVFJBTlNQT1NFX05WJzogMHg4
NjJELAorICAnTUFYX1RSQUNLX01BVFJJWF9TVEFDS19ERVBUSF9OVic6IDB4ODYyRSwKKyAgJ01B
WF9UUkFDS19NQVRSSUNFU19OVic6IDB4ODYyRiwKKyAgJ01BVFJJWDBfTlYnOiAweDg2MzAsCisg
ICdNQVRSSVgxX05WJzogMHg4NjMxLAorICAnTUFUUklYMl9OVic6IDB4ODYzMiwKKyAgJ01BVFJJ
WDNfTlYnOiAweDg2MzMsCisgICdNQVRSSVg0X05WJzogMHg4NjM0LAorICAnTUFUUklYNV9OVic6
IDB4ODYzNSwKKyAgJ01BVFJJWDZfTlYnOiAweDg2MzYsCisgICdNQVRSSVg3X05WJzogMHg4NjM3
LAorICAnQ1VSUkVOVF9NQVRSSVhfU1RBQ0tfREVQVEhfTlYnOiAweDg2NDAsCisgICdDVVJSRU5U
X01BVFJJWF9OVic6IDB4ODY0MSwKKyAgJ1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkVfTlYnOiAw
eDg2NDIsCisgICdWRVJURVhfUFJPR1JBTV9UV09fU0lERV9OVic6IDB4ODY0MywKKyAgJ1BST0dS
QU1fUEFSQU1FVEVSX05WJzogMHg4NjQ0LAorICAnQVRUUklCX0FSUkFZX1BPSU5URVJfTlYnOiAw
eDg2NDUsCisgICdQUk9HUkFNX1RBUkdFVF9OVic6IDB4ODY0NiwKKyAgJ1BST0dSQU1fUkVTSURF
TlRfTlYnOiAweDg2NDcsCisgICdUUkFDS19NQVRSSVhfTlYnOiAweDg2NDgsCisgICdUUkFDS19N
QVRSSVhfVFJBTlNGT1JNX05WJzogMHg4NjQ5LAorICAnVkVSVEVYX1BST0dSQU1fQklORElOR19O
Vic6IDB4ODY0QSwKKyAgJ1BST0dSQU1fRVJST1JfUE9TSVRJT05fTlYnOiAweDg2NEIsCisgICdW
RVJURVhfQVRUUklCX0FSUkFZMF9OVic6IDB4ODY1MCwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVkx
X05WJzogMHg4NjUxLAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWTJfTlYnOiAweDg2NTIsCisgICdW
RVJURVhfQVRUUklCX0FSUkFZM19OVic6IDB4ODY1MywKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVk0
X05WJzogMHg4NjU0LAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWTVfTlYnOiAweDg2NTUsCisgICdW
RVJURVhfQVRUUklCX0FSUkFZNl9OVic6IDB4ODY1NiwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVk3
X05WJzogMHg4NjU3LAorICAnVkVSVEVYX0FUVFJJQl9BUlJBWThfTlYnOiAweDg2NTgsCisgICdW
RVJURVhfQVRUUklCX0FSUkFZOV9OVic6IDB4ODY1OSwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVkx
MF9OVic6IDB4ODY1QSwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVkxMV9OVic6IDB4ODY1QiwKKyAg
J1ZFUlRFWF9BVFRSSUJfQVJSQVkxMl9OVic6IDB4ODY1QywKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJS
QVkxM19OVic6IDB4ODY1RCwKKyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVkxNF9OVic6IDB4ODY1RSwK
KyAgJ1ZFUlRFWF9BVFRSSUJfQVJSQVkxNV9OVic6IDB4ODY1RiwKKyAgJ01BUDFfVkVSVEVYX0FU
VFJJQjBfNF9OVic6IDB4ODY2MCwKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjFfNF9OVic6IDB4ODY2
MSwKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjJfNF9OVic6IDB4ODY2MiwKKyAgJ01BUDFfVkVSVEVY
X0FUVFJJQjNfNF9OVic6IDB4ODY2MywKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjRfNF9OVic6IDB4
ODY2NCwKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjVfNF9OVic6IDB4ODY2NSwKKyAgJ01BUDFfVkVS
VEVYX0FUVFJJQjZfNF9OVic6IDB4ODY2NiwKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjdfNF9OVic6
IDB4ODY2NywKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjhfNF9OVic6IDB4ODY2OCwKKyAgJ01BUDFf
VkVSVEVYX0FUVFJJQjlfNF9OVic6IDB4ODY2OSwKKyAgJ01BUDFfVkVSVEVYX0FUVFJJQjEwXzRf
TlYnOiAweDg2NkEsCisgICdNQVAxX1ZFUlRFWF9BVFRSSUIxMV80X05WJzogMHg4NjZCLAorICAn
TUFQMV9WRVJURVhfQVRUUklCMTJfNF9OVic6IDB4ODY2QywKKyAgJ01BUDFfVkVSVEVYX0FUVFJJ
QjEzXzRfTlYnOiAweDg2NkQsCisgICdNQVAxX1ZFUlRFWF9BVFRSSUIxNF80X05WJzogMHg4NjZF
LAorICAnTUFQMV9WRVJURVhfQVRUUklCMTVfNF9OVic6IDB4ODY2RiwKKyAgJ01BUDJfVkVSVEVY
X0FUVFJJQjBfNF9OVic6IDB4ODY3MCwKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjFfNF9OVic6IDB4
ODY3MSwKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjJfNF9OVic6IDB4ODY3MiwKKyAgJ01BUDJfVkVS
VEVYX0FUVFJJQjNfNF9OVic6IDB4ODY3MywKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjRfNF9OVic6
IDB4ODY3NCwKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjVfNF9OVic6IDB4ODY3NSwKKyAgJ01BUDJf
VkVSVEVYX0FUVFJJQjZfNF9OVic6IDB4ODY3NiwKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjdfNF9O
Vic6IDB4ODY3NywKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjhfNF9OVic6IDB4ODY3OCwKKyAgJ01B
UDJfVkVSVEVYX0FUVFJJQjlfNF9OVic6IDB4ODY3OSwKKyAgJ01BUDJfVkVSVEVYX0FUVFJJQjEw
XzRfTlYnOiAweDg2N0EsCisgICdNQVAyX1ZFUlRFWF9BVFRSSUIxMV80X05WJzogMHg4NjdCLAor
ICAnTUFQMl9WRVJURVhfQVRUUklCMTJfNF9OVic6IDB4ODY3QywKKyAgJ01BUDJfVkVSVEVYX0FU
VFJJQjEzXzRfTlYnOiAweDg2N0QsCisgICdNQVAyX1ZFUlRFWF9BVFRSSUIxNF80X05WJzogMHg4
NjdFLAorICAnTUFQMl9WRVJURVhfQVRUUklCMTVfNF9OVic6IDB4ODY3RiwKKyAgJ01BWF9QUk9H
UkFNX0VYRUNfSU5TVFJVQ1RJT05TX05WJzogMHg4OEY0LAorICAnTUFYX1BST0dSQU1fQ0FMTF9E
RVBUSF9OVic6IDB4ODhGNSwKKyAgJ01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU19BUkIn
OiAweDhCNEMsCisgICdCWVRFJzogMHgxNDAwLAorICAnUEFMRVRURTRfUkdCOF9PRVMnOiAweDhC
OTAsCisgICdQQUxFVFRFNF9SR0JBOF9PRVMnOiAweDhCOTEsCisgICdQQUxFVFRFNF9SNV9HNl9C
NV9PRVMnOiAweDhCOTIsCisgICdQQUxFVFRFNF9SR0JBNF9PRVMnOiAweDhCOTMsCisgICdQQUxF
VFRFNF9SR0I1X0ExX09FUyc6IDB4OEI5NCwKKyAgJ1BBTEVUVEU4X1JHQjhfT0VTJzogMHg4Qjk1
LAorICAnUEFMRVRURThfUkdCQThfT0VTJzogMHg4Qjk2LAorICAnUEFMRVRURThfUjVfRzZfQjVf
T0VTJzogMHg4Qjk3LAorICAnUEFMRVRURThfUkdCQTRfT0VTJzogMHg4Qjk4LAorICAnUEFMRVRU
RThfUkdCNV9BMV9PRVMnOiAweDhCOTksCisgICdJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZ
UEVfT0VTJzogMHg4QjlBLAorICAnSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVRfT0VT
JzogMHg4QjlCLAorICAnSU5URVJMQUNFX09NTCc6IDB4ODk4MCwKKyAgJ0lOVEVSTEFDRV9SRUFE
X09NTCc6IDB4ODk4MSwKKyAgJ1BBQ0tfUkVTQU1QTEVfT01MJzogMHg4OTg0LAorICAnVU5QQUNL
X1JFU0FNUExFX09NTCc6IDB4ODk4NSwKKyAgJ1JFU0FNUExFX1JFUExJQ0FURV9PTUwnOiAweDg5
ODYsCisgICdSRVNBTVBMRV9aRVJPX0ZJTExfT01MJzogMHg4OTg3LAorICAnUkVTQU1QTEVfQVZF
UkFHRV9PTUwnOiAweDg5ODgsCisgICdSRVNBTVBMRV9ERUNJTUFURV9PTUwnOiAweDg5ODksCisg
ICdGT1JNQVRfU1VCU0FNUExFXzI0XzI0X09NTCc6IDB4ODk4MiwKKyAgJ0ZPUk1BVF9TVUJTQU1Q
TEVfMjQ0XzI0NF9PTUwnOiAweDg5ODMsCisgICdWRVJURVgyM19CSVRfUEdJJzogMHgwMDAwMDAw
NCwKKyAgJ1ZFUlRFWDRfQklUX1BHSSc6IDB4MDAwMDAwMDgsCisgICdDT0xPUjNfQklUX1BHSSc6
IDB4MDAwMTAwMDAsCisgICdDT0xPUjRfQklUX1BHSSc6IDB4MDAwMjAwMDAsCisgICdFREdFRkxB
R19CSVRfUEdJJzogMHgwMDA0MDAwMCwKKyAgJ0lOREVYX0JJVF9QR0knOiAweDAwMDgwMDAwLAor
ICAnTUFUX0FNQklFTlRfQklUX1BHSSc6IDB4MDAxMDAwMDAsCisgICdNQVRfQU1CSUVOVF9BTkRf
RElGRlVTRV9CSVRfUEdJJzogMHgwMDIwMDAwMCwKKyAgJ01BVF9ESUZGVVNFX0JJVF9QR0knOiAw
eDAwNDAwMDAwLAorICAnTUFUX0VNSVNTSU9OX0JJVF9QR0knOiAweDAwODAwMDAwLAorICAnTUFU
X0NPTE9SX0lOREVYRVNfQklUX1BHSSc6IDB4MDEwMDAwMDAsCisgICdNQVRfU0hJTklORVNTX0JJ
VF9QR0knOiAweDAyMDAwMDAwLAorICAnTUFUX1NQRUNVTEFSX0JJVF9QR0knOiAweDA0MDAwMDAw
LAorICAnTk9STUFMX0JJVF9QR0knOiAweDA4MDAwMDAwLAorICAnVEVYQ09PUkQxX0JJVF9QR0kn
OiAweDEwMDAwMDAwLAorICAnVEVYQ09PUkQyX0JJVF9QR0knOiAweDIwMDAwMDAwLAorICAnVEVY
Q09PUkQzX0JJVF9QR0knOiAweDQwMDAwMDAwLAorICAnVEVYQ09PUkQ0X0JJVF9QR0knOiAweDgw
MDAwMDAwLAorICAnU0NSRUVOX0NPT1JESU5BVEVTX1JFTkQnOiAweDg0OTAsCisgICdJTlZFUlRF
RF9TQ1JFRU5fV19SRU5EJzogMHg4NDkxLAorICAnUkdCX1MzVEMnOiAweDgzQTAsCisgICdSR0I0
X1MzVEMnOiAweDgzQTEsCisgICdSR0JBX1MzVEMnOiAweDgzQTIsCisgICdSR0JBNF9TM1RDJzog
MHg4M0EzLAorICAnUkdCQV9EWFQ1X1MzVEMnOiAweDgzQTQsCisgICdSR0JBNF9EWFQ1X1MzVEMn
OiAweDgzQTUsCisgICdFWFRFTkRFRF9SQU5HRV9TR0lTJzogMHg4NUE1LAorICAnTUlOX1JFRF9T
R0lTJzogMHg4NUE2LAorICAnTUFYX1JFRF9TR0lTJzogMHg4NUE3LAorICAnTUlOX0dSRUVOX1NH
SVMnOiAweDg1QTgsCisgICdNQVhfR1JFRU5fU0dJUyc6IDB4ODVBOSwKKyAgJ01JTl9CTFVFX1NH
SVMnOiAweDg1QUEsCisgICdNQVhfQkxVRV9TR0lTJzogMHg4NUFCLAorICAnTUlOX0FMUEhBX1NH
SVMnOiAweDg1QUMsCisgICdNQVhfQUxQSEFfU0dJUyc6IDB4ODVBRCwKKyAgJ0dFTkVSQVRFX01J
UE1BUF9TR0lTJzogMHg4MTkxLAorICAnR0VORVJBVEVfTUlQTUFQX0hJTlRfU0dJUyc6IDB4ODE5
MiwKKyAgJ01VTFRJU0FNUExFX1NHSVMnOiAweDgwOUQsCisgICdTQU1QTEVfQUxQSEFfVE9fTUFT
S19TR0lTJzogMHg4MDlFLAorICAnU0FNUExFX0FMUEhBX1RPX09ORV9TR0lTJzogMHg4MDlGLAor
ICAnU0FNUExFX01BU0tfU0dJUyc6IDB4ODBBMCwKKyAgJzFQQVNTX1NHSVMnOiAweDgwQTEsCisg
ICcyUEFTU18wX1NHSVMnOiAweDgwQTIsCisgICcyUEFTU18xX1NHSVMnOiAweDgwQTMsCisgICc0
UEFTU18wX1NHSVMnOiAweDgwQTQsCisgICc0UEFTU18xX1NHSVMnOiAweDgwQTUsCisgICc0UEFT
U18yX1NHSVMnOiAweDgwQTYsCisgICc0UEFTU18zX1NHSVMnOiAweDgwQTcsCisgICdTQU1QTEVf
QlVGRkVSU19TR0lTJzogMHg4MEE4LAorICAnU0FNUExFU19TR0lTJzogMHg4MEE5LAorICAnU0FN
UExFX01BU0tfVkFMVUVfU0dJUyc6IDB4ODBBQSwKKyAgJ1NBTVBMRV9NQVNLX0lOVkVSVF9TR0lT
JzogMHg4MEFCLAorICAnU0FNUExFX1BBVFRFUk5fU0dJUyc6IDB4ODBBQywKKyAgJ01VTFRJU0FN
UExFX0JJVF9FWFQnOiAweDIwMDAwMDAwLAorICAnRVlFX0RJU1RBTkNFX1RPX1BPSU5UX1NHSVMn
OiAweDgxRjAsCisgICdPQkpFQ1RfRElTVEFOQ0VfVE9fUE9JTlRfU0dJUyc6IDB4ODFGMSwKKyAg
J0VZRV9ESVNUQU5DRV9UT19MSU5FX1NHSVMnOiAweDgxRjIsCisgICdPQkpFQ1RfRElTVEFOQ0Vf
VE9fTElORV9TR0lTJzogMHg4MUYzLAorICAnRVlFX1BPSU5UX1NHSVMnOiAweDgxRjQsCisgICdP
QkpFQ1RfUE9JTlRfU0dJUyc6IDB4ODFGNSwKKyAgJ0VZRV9MSU5FX1NHSVMnOiAweDgxRjYsCisg
ICdPQkpFQ1RfTElORV9TR0lTJzogMHg4MUY3LAorICAnQ0xBTVBfVE9fQk9SREVSX1NHSVMnOiAw
eDgxMkQsCisgICdDTEFNUF9UT19FREdFX1NHSVMnOiAweDgxMkYsCisgICdURVhUVVJFX01JTl9M
T0RfU0dJUyc6IDB4ODEzQSwKKyAgJ1RFWFRVUkVfTUFYX0xPRF9TR0lTJzogMHg4MTNCLAorICAn
VEVYVFVSRV9CQVNFX0xFVkVMX1NHSVMnOiAweDgxM0MsCisgICdURVhUVVJFX01BWF9MRVZFTF9T
R0lTJzogMHg4MTNELAorICAnQVNZTkNfTUFSS0VSX1NHSVgnOiAweDgzMjksCisgICdBU1lOQ19I
SVNUT0dSQU1fU0dJWCc6IDB4ODMyQywKKyAgJ01BWF9BU1lOQ19ISVNUT0dSQU1fU0dJWCc6IDB4
ODMyRCwKKyAgJ0FTWU5DX1RFWF9JTUFHRV9TR0lYJzogMHg4MzVDLAorICAnQVNZTkNfRFJBV19Q
SVhFTFNfU0dJWCc6IDB4ODM1RCwKKyAgJ0FTWU5DX1JFQURfUElYRUxTX1NHSVgnOiAweDgzNUUs
CisgICdNQVhfQVNZTkNfVEVYX0lNQUdFX1NHSVgnOiAweDgzNUYsCisgICdNQVhfQVNZTkNfRFJB
V19QSVhFTFNfU0dJWCc6IDB4ODM2MCwKKyAgJ01BWF9BU1lOQ19SRUFEX1BJWEVMU19TR0lYJzog
MHg4MzYxLAorICAnQUxQSEFfTUlOX1NHSVgnOiAweDgzMjAsCisgICdBTFBIQV9NQVhfU0dJWCc6
IDB4ODMyMSwKKyAgJ0NPTlZPTFVUSU9OX0hJTlRfU0dJWCc6IDB4ODMxNiwKKyAgJ0RFUFRIX0NP
TVBPTkVOVDE2X1NHSVgnOiAweDgxQTUsCisgICdERVBUSF9DT01QT05FTlQyNF9TR0lYJzogMHg4
MUE2LAorICAnREVQVEhfQ09NUE9ORU5UMzJfU0dJWCc6IDB4ODFBNywKKyAgJ0ZPR19PRkZTRVRf
U0dJWCc6IDB4ODE5OCwKKyAgJ0ZPR19PRkZTRVRfVkFMVUVfU0dJWCc6IDB4ODE5OSwKKyAgJ0lO
VEVSTEFDRV9TR0lYJzogMHg4MDk0LAorICAnUEFDS19SRVNBTVBMRV9TR0lYJzogMHg4NDJFLAor
ICAnVU5QQUNLX1JFU0FNUExFX1NHSVgnOiAweDg0MkYsCisgICdSRVNBTVBMRV9ERUNJTUFURV9T
R0lYJzogMHg4NDMwLAorICAnUkVTQU1QTEVfUkVQTElDQVRFX1NHSVgnOiAweDg0MzMsCisgICdS
RVNBTVBMRV9aRVJPX0ZJTExfU0dJWCc6IDB4ODQzNCwKKyAgJ1RFWFRVUkVfQ09NUEFSRV9TR0lY
JzogMHg4MTlBLAorICAnVEVYVFVSRV9DT01QQVJFX09QRVJBVE9SX1NHSVgnOiAweDgxOUIsCisg
ICdURVhUVVJFX0xFUVVBTF9SX1NHSVgnOiAweDgxOUMsCisgICdURVhUVVJFX0dFUVVBTF9SX1NH
SVgnOiAweDgxOUQsCisgICdTSEFET1dfQU1CSUVOVF9TR0lYJzogMHg4MEJGLAorICAnVEVYVFVS
RV9NQVhfQ0xBTVBfU19TR0lYJzogMHg4MzY5LAorICAnVEVYVFVSRV9NQVhfQ0xBTVBfVF9TR0lY
JzogMHg4MzZBLAorICAnVEVYVFVSRV9NQVhfQ0xBTVBfUl9TR0lYJzogMHg4MzZCLAorICAnVEVY
VFVSRV9NVUxUSV9CVUZGRVJfSElOVF9TR0lYJzogMHg4MTJFLAorICAnUkdCX1NJR05FRF9TR0lY
JzogMHg4NUUwLAorICAnUkdCQV9TSUdORURfU0dJWCc6IDB4ODVFMSwKKyAgJ0FMUEhBX1NJR05F
RF9TR0lYJzogMHg4NUUyLAorICAnTFVNSU5BTkNFX1NJR05FRF9TR0lYJzogMHg4NUUzLAorICAn
SU5URU5TSVRZX1NJR05FRF9TR0lYJzogMHg4NUU0LAorICAnTFVNSU5BTkNFX0FMUEhBX1NJR05F
RF9TR0lYJzogMHg4NUU1LAorICAnUkdCMTZfU0lHTkVEX1NHSVgnOiAweDg1RTYsCisgICdSR0JB
MTZfU0lHTkVEX1NHSVgnOiAweDg1RTcsCisgICdBTFBIQTE2X1NJR05FRF9TR0lYJzogMHg4NUU4
LAorICAnTFVNSU5BTkNFMTZfU0lHTkVEX1NHSVgnOiAweDg1RTksCisgICdJTlRFTlNJVFkxNl9T
SUdORURfU0dJWCc6IDB4ODVFQSwKKyAgJ0xVTUlOQU5DRTE2X0FMUEhBMTZfU0lHTkVEX1NHSVgn
OiAweDg1RUIsCisgICdSR0JfRVhURU5ERURfUkFOR0VfU0dJWCc6IDB4ODVFQywKKyAgJ1JHQkFf
RVhURU5ERURfUkFOR0VfU0dJWCc6IDB4ODVFRCwKKyAgJ0FMUEhBX0VYVEVOREVEX1JBTkdFX1NH
SVgnOiAweDg1RUUsCisgICdMVU1JTkFOQ0VfRVhURU5ERURfUkFOR0VfU0dJWCc6IDB4ODVFRiwK
KyAgJ0lOVEVOU0lUWV9FWFRFTkRFRF9SQU5HRV9TR0lYJzogMHg4NUYwLAorICAnTFVNSU5BTkNF
X0FMUEhBX0VYVEVOREVEX1JBTkdFX1NHSVgnOiAweDg1RjEsCisgICdSR0IxNl9FWFRFTkRFRF9S
QU5HRV9TR0lYJzogMHg4NUYyLAorICAnUkdCQTE2X0VYVEVOREVEX1JBTkdFX1NHSVgnOiAweDg1
RjMsCisgICdBTFBIQTE2X0VYVEVOREVEX1JBTkdFX1NHSVgnOiAweDg1RjQsCisgICdMVU1JTkFO
Q0UxNl9FWFRFTkRFRF9SQU5HRV9TR0lYJzogMHg4NUY1LAorICAnSU5URU5TSVRZMTZfRVhURU5E
RURfUkFOR0VfU0dJWCc6IDB4ODVGNiwKKyAgJ0xVTUlOQU5DRTE2X0FMUEhBMTZfRVhURU5ERURf
UkFOR0VfU0dJWCc6IDB4ODVGNywKKyAgJ01JTl9MVU1JTkFOQ0VfU0dJUyc6IDB4ODVGOCwKKyAg
J01BWF9MVU1JTkFOQ0VfU0dJUyc6IDB4ODVGOSwKKyAgJ01JTl9JTlRFTlNJVFlfU0dJUyc6IDB4
ODVGQSwKKyAgJ01BWF9JTlRFTlNJVFlfU0dJUyc6IDB4ODVGQiwKKyAgJ1BPU1RfVEVYVFVSRV9G
SUxURVJfQklBU19TR0lYJzogMHg4MTc5LAorICAnUE9TVF9URVhUVVJFX0ZJTFRFUl9TQ0FMRV9T
R0lYJzogMHg4MTdBLAorICAnUE9TVF9URVhUVVJFX0ZJTFRFUl9CSUFTX1JBTkdFX1NHSVgnOiAw
eDgxN0IsCisgICdQT1NUX1RFWFRVUkVfRklMVEVSX1NDQUxFX1JBTkdFX1NHSVgnOiAweDgxN0Ms
CisgICdWRVJURVhfUFJFQ0xJUF9TR0lYJzogMHg4M0VFLAorICAnVkVSVEVYX1BSRUNMSVBfSElO
VF9TR0lYJzogMHg4M0VGLAorICAnVkVSVEVYX1BSRUNMSVBfU0dJWCc6IDB4ODNFRSwKKyAgJ1ZF
UlRFWF9QUkVDTElQX0hJTlRfU0dJWCc6IDB4ODNFRiwKKyAgJ0NPTE9SX01BVFJJWF9TR0knOiAw
eDgwQjEsCisgICdDT0xPUl9NQVRSSVhfU1RBQ0tfREVQVEhfU0dJJzogMHg4MEIyLAorICAnTUFY
X0NPTE9SX01BVFJJWF9TVEFDS19ERVBUSF9TR0knOiAweDgwQjMsCisgICdQT1NUX0NPTE9SX01B
VFJJWF9SRURfU0NBTEVfU0dJJzogMHg4MEI0LAorICAnUE9TVF9DT0xPUl9NQVRSSVhfR1JFRU5f
U0NBTEVfU0dJJzogMHg4MEI1LAorICAnUE9TVF9DT0xPUl9NQVRSSVhfQkxVRV9TQ0FMRV9TR0kn
OiAweDgwQjYsCisgICdQT1NUX0NPTE9SX01BVFJJWF9BTFBIQV9TQ0FMRV9TR0knOiAweDgwQjcs
CisgICdQT1NUX0NPTE9SX01BVFJJWF9SRURfQklBU19TR0knOiAweDgwQjgsCisgICdQT1NUX0NP
TE9SX01BVFJJWF9HUkVFTl9CSUFTX1NHSSc6IDB4ODBCOSwKKyAgJ1BPU1RfQ09MT1JfTUFUUklY
X0JMVUVfQklBU19TR0knOiAweDgwQkEsCisgICdQT1NUX0NPTE9SX01BVFJJWF9BTFBIQV9CSUFT
X1NHSSc6IDB4ODBCQiwKKyAgJ0NPTE9SX1RBQkxFX1NHSSc6IDB4ODBEMCwKKyAgJ1BPU1RfQ09O
Vk9MVVRJT05fQ09MT1JfVEFCTEVfU0dJJzogMHg4MEQxLAorICAnUE9TVF9DT0xPUl9NQVRSSVhf
Q09MT1JfVEFCTEVfU0dJJzogMHg4MEQyLAorICAnUFJPWFlfQ09MT1JfVEFCTEVfU0dJJzogMHg4
MEQzLAorICAnUFJPWFlfUE9TVF9DT05WT0xVVElPTl9DT0xPUl9UQUJMRV9TR0knOiAweDgwRDQs
CisgICdQUk9YWV9QT1NUX0NPTE9SX01BVFJJWF9DT0xPUl9UQUJMRV9TR0knOiAweDgwRDUsCisg
ICdDT0xPUl9UQUJMRV9TQ0FMRV9TR0knOiAweDgwRDYsCisgICdDT0xPUl9UQUJMRV9CSUFTX1NH
SSc6IDB4ODBENywKKyAgJ0NPTE9SX1RBQkxFX0ZPUk1BVF9TR0knOiAweDgwRDgsCisgICdDT0xP
Ul9UQUJMRV9XSURUSF9TR0knOiAweDgwRDksCisgICdDT0xPUl9UQUJMRV9SRURfU0laRV9TR0kn
OiAweDgwREEsCisgICdDT0xPUl9UQUJMRV9HUkVFTl9TSVpFX1NHSSc6IDB4ODBEQiwKKyAgJ0NP
TE9SX1RBQkxFX0JMVUVfU0laRV9TR0knOiAweDgwREMsCisgICdDT0xPUl9UQUJMRV9BTFBIQV9T
SVpFX1NHSSc6IDB4ODBERCwKKyAgJ0NPTE9SX1RBQkxFX0xVTUlOQU5DRV9TSVpFX1NHSSc6IDB4
ODBERSwKKyAgJ0NPTE9SX1RBQkxFX0lOVEVOU0lUWV9TSVpFX1NHSSc6IDB4ODBERiwKKyAgJ1RF
WFRVUkVfQ09MT1JfVEFCTEVfU0dJJzogMHg4MEJDLAorICAnUFJPWFlfVEVYVFVSRV9DT0xPUl9U
QUJMRV9TR0knOiAweDgwQkQsCisgICdVTlBBQ0tfQ09OU1RBTlRfREFUQV9TVU5YJzogMHg4MUQ1
LAorICAnVEVYVFVSRV9DT05TVEFOVF9EQVRBX1NVTlgnOiAweDgxRDYsCisgICdXUkFQX0JPUkRF
Ul9TVU4nOiAweDgxRDQsCisgICdHTE9CQUxfQUxQSEFfU1VOJzogMHg4MUQ5LAorICAnR0xPQkFM
X0FMUEhBX0ZBQ1RPUl9TVU4nOiAweDgxREEsCisgICdRVUFEX01FU0hfU1VOJzogMHg4NjE0LAor
ICAnVFJJQU5HTEVfTUVTSF9TVU4nOiAweDg2MTUsCisgICdTTElDRV9BQ0NVTV9TVU4nOiAweDg1
Q0MsCisgICdSRVNUQVJUX1NVTic6IDB4MDEsCisgICdSRVBMQUNFX01JRERMRV9TVU4nOiAweDAy
LAorICAnUkVQTEFDRV9PTERFU1RfU1VOJzogMHgwMywKKyAgJ1RSSUFOR0xFX0xJU1RfU1VOJzog
MHg4MUQ3LAorICAnUkVQTEFDRU1FTlRfQ09ERV9TVU4nOiAweDgxRDgsCisgICdSRVBMQUNFTUVO
VF9DT0RFX0FSUkFZX1NVTic6IDB4ODVDMCwKKyAgJ1JFUExBQ0VNRU5UX0NPREVfQVJSQVlfVFlQ
RV9TVU4nOiAweDg1QzEsCisgICdSRVBMQUNFTUVOVF9DT0RFX0FSUkFZX1NUUklERV9TVU4nOiAw
eDg1QzIsCisgICdSRVBMQUNFTUVOVF9DT0RFX0FSUkFZX1BPSU5URVJfU1VOJzogMHg4NUMzLAor
ICAnUjFVSV9WM0ZfU1VOJzogMHg4NUM0LAorICAnUjFVSV9DNFVCX1YzRl9TVU4nOiAweDg1QzUs
CisgICdSMVVJX0MzRl9WM0ZfU1VOJzogMHg4NUM2LAorICAnUjFVSV9OM0ZfVjNGX1NVTic6IDB4
ODVDNywKKyAgJ1IxVUlfQzRGX04zRl9WM0ZfU1VOJzogMHg4NUM4LAorICAnUjFVSV9UMkZfVjNG
X1NVTic6IDB4ODVDOSwKKyAgJ1IxVUlfVDJGX04zRl9WM0ZfU1VOJzogMHg4NUNBLAorICAnUjFV
SV9UMkZfQzRGX04zRl9WM0ZfU1VOJzogMHg4NUNCLAorICAnUEhPTkdfV0lOJzogMHg4MEVBLAor
ICAnUEhPTkdfSElOVF9XSU4nOiAweDgwRUIsCisgICdQUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJM
RV9ISU5UJzogMHg4MjU3LAorICAnUFJPR1JBTV9CSU5BUllfTEVOR1RIJzogMHg4NzQxLAorICAn
UFJPR1JBTV9CSU5BUllfRk9STUFUUyc6IDB4ODdGRSwKKyAgJ05VTV9QUk9HUkFNX0JJTkFSWV9G
T1JNQVRTJzogMHg4N0ZGLAorICAnUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgnOiAweDhE
NjksCisgICdGT0dfU1BFQ1VMQVJfVEVYVFVSRV9XSU4nOiAweDgwRUMKK307CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ2ZWFhZDUw
ZjRiMWNhNzg3Y2Q1Y2JhYmY1MGYwOGM3YmI4ZmNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2dsc2wtY29uZm9ybWFu
Y2UtdGVzdC5qcwpAQCAtMCwwICsxLDQxOSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworR0xTTENvbmZvcm1hbmNlVGVzdGVyID0gKGZ1bmN0aW9uKCl7CisKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBkZWZhdWx0VmVydGV4U2hhZGVyID0gWworICAi
YXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOyIsCisgICJ2b2lkIG1haW4oKSIsCisgICJ7IiwKKyAg
IiAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsiLAorICAifSIKK10uam9pbignXG4nKTsKKwor
dmFyIGRlZmF1bHRGcmFnbWVudFNoYWRlciA9IFsKKyAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OyIsCisgICJ2b2lkIG1haW4oKSIsCisgICJ7IiwKKyAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCwwLjAsMC4wLDEuMCk7IiwKKyAgIn0iCitdLmpvaW4oJ1xuJyk7CisKK3ZhciBkZWZhdWx0
RVNTTDNWZXJ0ZXhTaGFkZXIgPSBbCisgICIjdmVyc2lvbiAzMDAgZXMiLAorICAiaW4gdmVjNCB2
UG9zaXRpb247IiwKKyAgInZvaWQgbWFpbigpIiwKKyAgInsiLAorICAiICAgIGdsX1Bvc2l0aW9u
ID0gdlBvc2l0aW9uOyIsCisgICJ9IgorXS5qb2luKCdcbicpOworCit2YXIgZGVmYXVsdEVTU0wz
RnJhZ21lbnRTaGFkZXIgPSBbCisgICIjdmVyc2lvbiAzMDAgZXMiLAorICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7IiwKKyAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjsiLAorICAidm9pZCBtYWlu
KCkiLAorICAieyIsCisgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjAp
OyIsCisgICJ9IgorXS5qb2luKCdcbicpOworCitmdW5jdGlvbiBsb2cobXNnKSB7CisgIGJ1ZmZl
cmVkTG9nVG9Db25zb2xlKG1zZyk7Cit9CisKK3ZhciB2U2hhZGVyREIgPSB7fTsKK3ZhciBmU2hh
ZGVyREIgPSB7fTsKKworLyoqCisgKiBUaGUgaW5mbyBwYXJhbWV0ZXIgc2hvdWxkIGNvbnRhaW4g
dGhlIGZvbGxvd2luZyBrZXlzLiBOb3RlIHRoYXQgeW91IG1heSBsZWF2ZQorICogdGhlIHBhcmFt
ZXRlcnMgZm9yIG9uZSBzaGFkZXIgb3V0LCBpbiB3aGljaCBjYXNlIHRoZSBkZWZhdWx0IHNoYWRl
ciB3aWxsIGJlCisgKiB1c2VkLgorICogdlNoYWRlclNvdXJjZTogdGhlIHNvdXJjZSBjb2RlIGZv
ciB2ZXJ0ZXggc2hhZGVyCisgKiB2U2hhZGVySWQ6IGlkIG9mIGFuIGVsZW1lbnQgY29udGFpbmlu
ZyB2ZXJ0ZXggc2hhZGVyIHNvdXJjZSBjb2RlLiBVc2VkIGlmCisgKiAgIHZTaGFkZXJTb3VyY2Ug
aXMgbm90IHNwZWNpZmllZC4KKyAqIHZTaGFkZXJTdWNjZXNzOiB0cnVlIGlmIHZlcnRleCBzaGFk
ZXIgY29tcGlsYXRpb24gc2hvdWxkCisgKiAgIHN1Y2NlZWQuCisgKiBmU2hhZGVyU291cmNlOiB0
aGUgc291cmNlIGNvZGUgZm9yIGZyYWdtZW50IHNoYWRlcgorICogZlNoYWRlcklkOiBpZCBvZiBh
biBlbGVtZW50IGNvbnRhaW5pbmcgZnJhZ21lbnQgc2hhZGVyIHNvdXJjZSBjb2RlLiBVc2VkIGlm
CisgKiAgIGZTaGFkZXJTb3VyY2UgaXMgbm90IHNwZWNpZmllZC4KKyAqIGZTaGFkZXJTdWNjZXNz
OiB0cnVlIGlmIGZyYWdtZW50IHNoYWRlciBjb21waWxhdGlvbiBzaG91bGQKKyAqICAgc3VjY2Vl
ZC4KKyAqIGxpbmtTdWNjZXNzOiB0cnVlIGlmIGxpbmsgc2hvdWxkIHN1Y2NlZWQKKyAqIHBhc3NN
c2c6IG1zZyB0byBkZXNjcmliZSBzdWNjZXNzIGNvbmRpdGlvbi4KKyAqIHJlbmRlcjogaWYgdHJ1
ZSByZW5kZXIgdG8gdW5pdCBxdWFkLiBHcmVlbiA9IHN1Y2Nlc3MKKyAqIHVuaWZvcm1zOiBhbiBh
cnJheSBvZiBvYmplY3RzIHNwZWNpZnlpbmcgdW5pZm9ybXMgdG8gc2V0IHByaW9yIHRvIHJlbmRl
cmluZy4KKyAqICAgRWFjaCBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBrZXlzOgor
ICogICAgIG5hbWU6IHVuaWZvcm0gdmFyaWFibGUgbmFtZSBpbiB0aGUgc2hhZGVyIHNvdXJjZS4g
VW5pZm9ybSBsb2NhdGlvbiB3aWxsCisgKiAgICAgICBiZSBxdWVyaWVkIGJhc2VkIG9uIGl0cyBu
YW1lLgorICogICAgIGZ1bmN0aW9uTmFtZTogbmFtZSBvZiB0aGUgZnVuY3Rpb24gdXNlZCB0byBz
ZXQgdGhlIHVuaWZvcm0uIEZvciBleGFtcGxlOgorICogICAgICAgJ3VuaWZvcm0xaScKKyAqICAg
ICB2YWx1ZTogdmFsdWUgb2YgdGhlIHVuaWZvcm0gdG8gc2V0LgorICovCitmdW5jdGlvbiBydW5P
bmVUZXN0KGdsLCBpbmZvKSB7CisgIHZhciBwYXNzTXNnID0gaW5mby5wYXNzTXNnCisgIGRlYnVn
KCIiKTsKKyAgZGVidWcoInRlc3Q6ICIgKyBwYXNzTXNnKTsKKworICB2YXIgY29uc29sZURpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisKKyAgdmFyIHZJc0RlZmF1bHQg
PSBmYWxzZTsKKyAgdmFyIGZJc0RlZmF1bHQgPSBmYWxzZTsKKworICBpZiAoaW5mby52U2hhZGVy
U291cmNlID09PSB1bmRlZmluZWQpIHsKKyAgICBpZiAoaW5mby52U2hhZGVySWQpIHsKKyAgICAg
IGluZm8udlNoYWRlclNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGluZm8udlNoYWRl
cklkKS50ZXh0OworICAgIH0gZWxzZSB7CisgICAgICB2SXNEZWZhdWx0ID0gdHJ1ZTsKKyAgICB9
CisgIH0KKyAgaWYgKGluZm8uZlNoYWRlclNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaWYg
KGluZm8uZlNoYWRlcklkKSB7CisgICAgICBpbmZvLmZTaGFkZXJTb3VyY2UgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpbmZvLmZTaGFkZXJJZCkudGV4dDsKKyAgICB9IGVsc2UgeworICAgICAg
ZklzRGVmYXVsdCA9IHRydWU7CisgICAgfQorICB9CisKKyAgdmFyIHZMYWJlbCA9ICh2SXNEZWZh
dWx0ID8gImRlZmF1bHQiIDogInRlc3QiKSArICIgdmVydGV4IHNoYWRlciI7CisgIHZhciBmTGFi
ZWwgPSAoZklzRGVmYXVsdCA/ICJkZWZhdWx0IiA6ICJ0ZXN0IikgKyAiIGZyYWdtZW50IHNoYWRl
ciI7CisgIGlmICh2SXNEZWZhdWx0KSB7CisgICAgaW5mby52U2hhZGVyU291cmNlID0gZGVmYXVs
dFZlcnRleFNoYWRlcjsKKyAgICBpbmZvLnZTaGFkZXJTdWNjZXNzID0gdHJ1ZTsKKyAgfQorICBp
ZiAoZklzRGVmYXVsdCkgeworICAgIGluZm8uZlNoYWRlclNvdXJjZSA9IGRlZmF1bHRGcmFnbWVu
dFNoYWRlcjsKKyAgICBpbmZvLmZTaGFkZXJTdWNjZXNzID0gdHJ1ZTsKKyAgfQorCisgIGlmICh2
SXNEZWZhdWx0ICE9IGZJc0RlZmF1bHQpIHsKKyAgICAvLyBUaGUgbGFuZ3VhZ2UgdmVyc2lvbiBv
ZiB0aGUgZGVmYXVsdCBzaGFkZXIgaXMgY2hvc2VuCisgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBs
YW5ndWFnZSB2ZXJzaW9uIG9mIHRoZSBvdGhlciBzaGFkZXIuCisgICAgLy8gV2UgcmVseSBvbiAi
I3ZlcnNpb24gMzAwIGVzIiBiZWluZyBpbiB0aGlzIHVzdWFsIGZvcm1hdC4KKyAgICAvLyBJdCBt
dXN0IGJlIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzaGFkZXIgYWNjb3JkaW5nIHRvIHRoZSBz
cGVjLgorICAgIGlmIChmSXNEZWZhdWx0KSB7CisgICAgICAvLyBJZiB3ZSdyZSB1c2luZyB0aGUg
ZGVmYXVsdCBmcmFnbWVudCBzaGFkZXIsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQKKyAgICAg
IC8vIGl0J3MgbGFuZ3VhZ2UgdmVyc2lvbiBtYXRjaGVzIHdpdGggdGhlIHZlcnRleCBzaGFkZXIu
CisgICAgICBpZiAoaW5mby52U2hhZGVyU291cmNlLnNwbGl0KCdcbicpWzBdID09ICcjdmVyc2lv
biAzMDAgZXMnKSB7CisgICAgICAgIGluZm8uZlNoYWRlclNvdXJjZSA9IGRlZmF1bHRFU1NMM0Zy
YWdtZW50U2hhZGVyOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBJZiB3ZSdyZSB1
c2luZyB0aGUgZGVmYXVsdCB2ZXJ0ZXggc2hhZGVyLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0
CisgICAgICAvLyBpdCdzIGxhbmd1YWdlIHZlcnNpb24gbWF0Y2hlcyB3aXRoIHRoZSBmcmFnbWVu
dCBzaGFkZXIuCisgICAgICBpZiAoaW5mby5mU2hhZGVyU291cmNlLnNwbGl0KCdcbicpWzBdID09
ICcjdmVyc2lvbiAzMDAgZXMnKSB7CisgICAgICAgIGluZm8udlNoYWRlclNvdXJjZSA9IGRlZmF1
bHRFU1NMM1ZlcnRleFNoYWRlcjsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB2YXIgdlNvdXJj
ZSA9IGluZm8udlNoYWRlclByZXAgPyBpbmZvLnZTaGFkZXJQcmVwKGluZm8udlNoYWRlclNvdXJj
ZSkgOgorICAgIGluZm8udlNoYWRlclNvdXJjZTsKKworICBpZiAoIXF1aWV0TW9kZSgpKSB7Cisg
ICAgd3R1LmFkZFNoYWRlclNvdXJjZShjb25zb2xlRGl2LCB2TGFiZWwsIHZTb3VyY2UpOworICB9
CisKKyAgLy8gUmV1c2UgaWRlbnRpY2FsIHNoYWRlcnMgc28gd2UgdGVzdCBzaGFyZWQgc2hhZGVy
LgorICB2YXIgdlNoYWRlciA9IHZTaGFkZXJEQlt2U291cmNlXTsKKyAgaWYgKCF2U2hhZGVyKSB7
CisgICAgLy8gbG9hZFNoYWRlciwgd2l0aCBvcHRfc2tpcENvbXBpbGVTdGF0dXM6IHRydWUuCisg
ICAgdlNoYWRlciA9IHd0dS5sb2FkU2hhZGVyKGdsLCB2U291cmNlLCBnbC5WRVJURVhfU0hBREVS
LCBudWxsLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKTsKKyAgICBsZXQgY29tcGlsZWRWU2hhZGVy
ID0gdlNoYWRlcjsKKyAgICBpZiAodlNoYWRlciAmJiAhZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHZT
aGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKSkgeworICAgICAgY29tcGlsZWRWU2hhZGVyID0gbnVs
bDsKKyAgICB9CisgICAgaWYgKGluZm8udlNoYWRlclRlc3QpIHsKKyAgICAgIGlmICghaW5mby52
U2hhZGVyVGVzdChjb21waWxlZFZTaGFkZXIpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlt2ZXJ0
ZXggc2hhZGVyIHRlc3RdICIgKyBwYXNzTXNnKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQor
ICAgIH0KKyAgICAvLyBBcyBwZXIgR0xTTCAxLjAuMTcgMTAuMjcgd2UgY2FuIG9ubHkgY2hlY2sg
Zm9yIHN1Y2Nlc3Mgb24KKyAgICAvLyBjb21waWxlU2hhZGVyLCBub3QgZmFpbHVyZS4KKyAgICBp
ZiAoIWluZm8uaWdub3JlUmVzdWx0cyAmJiBpbmZvLnZTaGFkZXJTdWNjZXNzICYmICFjb21waWxl
ZFZTaGFkZXIpIHsKKyAgICAgIHRlc3RGYWlsZWQoIlt1bmV4cGVjdGVkIHZlcnRleCBzaGFkZXIg
Y29tcGlsZSBzdGF0dXNdIChleHBlY3RlZDogIiArCisgICAgICAgICAgICAgICAgIGluZm8udlNo
YWRlclN1Y2Nlc3MgKyAiKSAiICsgcGFzc01zZyk7CisgICAgICBpZiAoIXF1aWV0TW9kZSgpICYm
IHZTaGFkZXIpIHsKKyAgICAgICAgY29uc3QgaW5mbyA9IGdsLmdldFNoYWRlckluZm9Mb2codlNo
YWRlcik7CisgICAgICAgIHd0dS5hZGRTaGFkZXJTb3VyY2UoY29uc29sZURpdiwgdkxhYmVsICsg
IiBpbmZvIGxvZyIsIGluZm8pOworICAgICAgfQorICAgIH0KKyAgICAvLyBTYXZlIHRoZSBzaGFk
ZXJzIHNvIHdlIHRlc3Qgc2hhcmVkIHNoYWRlci4KKyAgICBpZiAoY29tcGlsZWRWU2hhZGVyKSB7
CisgICAgICB2U2hhZGVyREJbdlNvdXJjZV0gPSBjb21waWxlZFZTaGFkZXI7CisgICAgfSBlbHNl
IHsKKyAgICAgIHZTaGFkZXIgPSBudWxsOworICAgIH0KKyAgfQorCisgIHZhciBkZWJ1Z1NoYWRl
cnMgPSBnbC5nZXRFeHRlbnNpb24oJ1dFQkdMX2RlYnVnX3NoYWRlcnMnKTsKKyAgaWYgKGRlYnVn
U2hhZGVycyAmJiB2U2hhZGVyICYmICFxdWlldE1vZGUoKSkgeworICAgIHd0dS5hZGRTaGFkZXJT
b3VyY2UoY29uc29sZURpdiwgdkxhYmVsICsgIiB0cmFuc2xhdGVkIGZvciBkcml2ZXIiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdTaGFkZXJzLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2UodlNoYWRlcikpOworICB9CisKKyAgdmFyIGZTb3VyY2UgPSBpbmZvLmZTaGFkZXJQcmVwID8g
aW5mby5mU2hhZGVyUHJlcChpbmZvLmZTaGFkZXJTb3VyY2UpIDoKKyAgICBpbmZvLmZTaGFkZXJT
b3VyY2U7CisKKyAgaWYgKCFxdWlldE1vZGUoKSkgeworICAgIHd0dS5hZGRTaGFkZXJTb3VyY2Uo
Y29uc29sZURpdiwgZkxhYmVsLCBmU291cmNlKTsKKyAgfQorCisgIC8vIFJldXNlIGlkZW50aWNh
bCBzaGFkZXJzIHNvIHdlIHRlc3Qgc2hhcmVkIHNoYWRlci4KKyAgdmFyIGZTaGFkZXIgPSBmU2hh
ZGVyREJbZlNvdXJjZV07CisgIGlmICghZlNoYWRlcikgeworICAgIC8vIGxvYWRTaGFkZXIsIHdp
dGggb3B0X3NraXBDb21waWxlU3RhdHVzOiB0cnVlLgorICAgIGZTaGFkZXIgPSB3dHUubG9hZFNo
YWRlcihnbCwgZlNvdXJjZSwgZ2wuRlJBR01FTlRfU0hBREVSLCBudWxsLCBudWxsLCBudWxsLCBu
dWxsLCB0cnVlKTsKKyAgICBsZXQgY29tcGlsZWRGU2hhZGVyID0gZlNoYWRlcjsKKyAgICBpZiAo
ZlNoYWRlciAmJiAhZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKGZTaGFkZXIsIGdsLkNPTVBJTEVfU1RB
VFVTKSkgeworICAgICAgY29tcGlsZWRGU2hhZGVyID0gbnVsbDsKKyAgICB9CisgICAgaWYgKGlu
Zm8uZlNoYWRlclRlc3QpIHsKKyAgICAgIGlmICghaW5mby5mU2hhZGVyVGVzdChjb21waWxlZEZT
aGFkZXIpKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIltmcmFnbWVudCBzaGFkZXIgdGVzdF0gIiAr
IHBhc3NNc2cpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICAgIC8vZGVidWco
ZlNoYWRlciA9PSBudWxsID8gImZhaWwiIDogInN1Y2NlZWQiKTsKKyAgICAvLyBBcyBwZXIgR0xT
TCAxLjAuMTcgMTAuMjcgd2UgY2FuIG9ubHkgY2hlY2sgZm9yIHN1Y2Nlc3Mgb24KKyAgICAvLyBj
b21waWxlU2hhZGVyLCBub3QgZmFpbHVyZS4KKyAgICBpZiAoIWluZm8uaWdub3JlUmVzdWx0cyAm
JiBpbmZvLmZTaGFkZXJTdWNjZXNzICYmICFjb21waWxlZEZTaGFkZXIpIHsKKyAgICAgIHRlc3RG
YWlsZWQoIlt1bmV4cGVjdGVkIGZyYWdtZW50IHNoYWRlciBjb21waWxlIHN0YXR1c10gKGV4cGVj
dGVkOiAiICsKKyAgICAgICAgICAgICAgICBpbmZvLmZTaGFkZXJTdWNjZXNzICsgIikgIiArIHBh
c3NNc2cpOworICAgICAgaWYgKCFxdWlldE1vZGUoKSAmJiBmU2hhZGVyKSB7CisgICAgICAgIGNv
bnN0IGluZm8gPSBnbC5nZXRTaGFkZXJJbmZvTG9nKGZTaGFkZXIpOworICAgICAgICB3dHUuYWRk
U2hhZGVyU291cmNlKGNvbnNvbGVEaXYsIGZMYWJlbCArICIgaW5mbyBsb2ciLCBpbmZvKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTYWZlIHRoZSBzaGFkZXJzIHNv
IHdlIHRlc3Qgc2hhcmVkIHNoYWRlci4KKyAgICBpZiAoY29tcGlsZWRGU2hhZGVyKSB7CisgICAg
ICBmU2hhZGVyREJbZlNvdXJjZV0gPSBjb21waWxlZEZTaGFkZXI7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGZTaGFkZXIgPSBudWxsOworICAgIH0KKyAgfQorCisgIGlmIChkZWJ1Z1NoYWRlcnMgJiYg
ZlNoYWRlciAmJiAhcXVpZXRNb2RlKCkpIHsKKyAgICB3dHUuYWRkU2hhZGVyU291cmNlKGNvbnNv
bGVEaXYsIGZMYWJlbCArICIgdHJhbnNsYXRlZCBmb3IgZHJpdmVyIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYnVnU2hhZGVycy5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKGZTaGFkZXIp
KTsKKyAgfQorCisgIGlmICh2U2hhZGVyICYmIGZTaGFkZXIpIHsKKyAgICB2YXIgcHJvZ3JhbSA9
IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdlNoYWRl
cik7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZTaGFkZXIpOworCisgICAgaWYgKHZT
b3VyY2UuaW5kZXhPZigidlBvc2l0aW9uIikgPj0gMCkgeworICAgICAgZ2wuYmluZEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW0sIDAsICJ2UG9zaXRpb24iKTsKKyAgICB9CisgICAgaWYgKHZTb3VyY2Uu
aW5kZXhPZigidGV4Q29vcmQwIikgPj0gMCkgeworICAgICAgZ2wuYmluZEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sIDEsICJ0ZXhDb29yZDAiKTsKKyAgICB9CisgICAgZ2wubGlua1Byb2dyYW0ocHJv
Z3JhbSk7CisgICAgdmFyIGxpbmtlZCA9IChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKSAhPSAwKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgdmFyIGVy
cm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7CisgICAgICBsb2coIioqKiBFcnJv
ciBsaW5raW5nIHByb2dyYW0gJyIrcHJvZ3JhbSsiJzoiK2Vycm9yKTsKKyAgICB9CisgICAgaWYg
KCFpbmZvLmlnbm9yZVJlc3VsdHMgJiYgbGlua2VkICE9IGluZm8ubGlua1N1Y2Nlc3MpIHsKKyAg
ICAgIHRlc3RGYWlsZWQoIlt1bmV4cGVjdGVkIGxpbmsgc3RhdHVzXSAoZXhwZWN0ZWQ6ICIgKwor
ICAgICAgICAgICAgICAgIGluZm8ubGlua1N1Y2Nlc3MgKyAiKSAiICsgcGFzc01zZyk7CisgICAg
ICByZXR1cm47CisgICAgfQorICB9IGVsc2UgeworICAgIGlmICghaW5mby5pZ25vcmVSZXN1bHRz
ICYmIGluZm8ubGlua1N1Y2Nlc3MpIHsKKyAgICAgIHRlc3RGYWlsZWQoIltsaW5rIGZhaWxlZF0g
IiArIHBhc3NNc2cpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorCisgIGlmIChwYXJzZUlu
dCh3dHUuZ2V0VXJsT3B0aW9ucygpLmR1bXBTaGFkZXJzKSkgeworICAgIHZhciB2SW5mbyA9IHsK
KyAgICAgIHNoYWRlcjogdlNoYWRlciwKKyAgICAgIHNoYWRlclN1Y2Nlc3M6IGluZm8udlNoYWRl
clN1Y2Nlc3MsCisgICAgICBsYWJlbDogdkxhYmVsLAorICAgICAgc291cmNlOiB2U291cmNlCisg
ICAgfTsKKyAgICB2YXIgZkluZm8gPSB7CisgICAgICBzaGFkZXI6IGZTaGFkZXIsCisgICAgICBz
aGFkZXJTdWNjZXNzOiBpbmZvLmZTaGFkZXJTdWNjZXNzLAorICAgICAgbGFiZWw6IGZMYWJlbCwK
KyAgICAgIHNvdXJjZTogZlNvdXJjZQorICAgIH07CisgICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhn
bCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBwYXNzTXNnLCB2SW5mbywgZkluZm8pOworICB9
CisKKyAgaWYgKCFpbmZvLnJlbmRlcikgeworICAgIHRlc3RQYXNzZWQocGFzc01zZyk7CisgICAg
cmV0dXJuOworICB9CisKKyAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICBpZiAoaW5mby51
bmlmb3JtcyAhPT0gdW5kZWZpbmVkKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmZvLnVu
aWZvcm1zLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgdW5pZm9ybUxvY2F0aW9uID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIGluZm8udW5pZm9ybXNbaV0ubmFtZSk7CisgICAgICBp
ZiAodW5pZm9ybUxvY2F0aW9uICE9PSBudWxsKSB7CisgICAgICAgIGdsW2luZm8udW5pZm9ybXNb
aV0uZnVuY3Rpb25OYW1lXSh1bmlmb3JtTG9jYXRpb24sIGluZm8udW5pZm9ybXNbaV0udmFsdWUp
OworICAgICAgICBkZWJ1ZyhpbmZvLnVuaWZvcm1zW2ldLm5hbWUgKyAnIHNldCB0byAnICsgaW5m
by51bmlmb3Jtc1tpXS52YWx1ZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygndW5p
Zm9ybSAnICsgaW5mby51bmlmb3Jtc1tpXS5uYW1lICsgJyBoYWQgbnVsbCBsb2NhdGlvbiBhbmQg
d2FzIG5vdCBzZXQnKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBpZiAoaW5mby51bmlmb3Jt
QmxvY2tzICE9PSB1bmRlZmluZWQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZm8udW5p
Zm9ybUJsb2Nrcy5sZW5ndGg7ICsraSkgeworICAgICAgdmFyIHVuaWZvcm1CbG9ja0luZGV4ID0g
Z2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgaW5mby51bmlmb3JtQmxvY2tzW2ldLm5h
bWUpOworICAgICAgaWYgKHVuaWZvcm1CbG9ja0luZGV4ICE9PSBudWxsKSB7CisgICAgICAgIGds
LnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIGkpOworICAg
ICAgICBkZWJ1ZyhpbmZvLnVuaWZvcm1CbG9ja3NbaV0ubmFtZSArICcgKGluZGV4ICcgKyB1bmlm
b3JtQmxvY2tJbmRleCArICcpIGJvdW5kIHRvIHNsb3QgJyArIGkpOworCisgICAgICAgIHZhciB1
Ym9WYWx1ZUJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVy
QmFzZShnbC5VTklGT1JNX0JVRkZFUiwgaSwgdWJvVmFsdWVCdWZmZXIpOworICAgICAgICBnbC5i
dWZmZXJEYXRhKGdsLlVOSUZPUk1fQlVGRkVSLCBpbmZvLnVuaWZvcm1CbG9ja3NbaV0udmFsdWUs
IGluZm8udW5pZm9ybUJsb2Nrc1tpXS51c2FnZSB8fCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBkZWJ1ZygndW5pZm9ybSBibG9jaycgKyBpbmZvLnVuaWZvcm1CbG9j
a3NbaV0ubmFtZSArICcgaGFkIG51bGwgYmxvY2sgaW5kZXggYW5kIHdhcyBub3Qgc2V0Jyk7Cisg
ICAgICB9CisgICAgfQorICB9CisKKyAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworICB3dHUuY2xl
YXJBbmREcmF3VW5pdFF1YWQoZ2wpOworCisgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgZGl2LmNsYXNzTmFtZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgd3R1Lmluc2Vy
dEltYWdlKGRpdiwgInJlc3VsdCIsIHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGdsLmNhbnZhcykp
OworICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgIGNv
bnNvbGVEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKKworICB2YXIgdG9sZXJhbmNlID0gMDsKKyAgaWYg
KGluZm8ucmVuZGVyVG9sZXJhbmNlICE9PSB1bmRlZmluZWQpIHsKKyAgICB0b2xlcmFuY2UgPSBp
bmZvLnJlbmRlclRvbGVyYW5jZTsKKyAgfQorICBpZiAoaW5mby5yZW5kZXJDb2xvciAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBpbmZvLnJlbmRlckNvbG9yLCAic2hv
dWxkIGJlIGV4cGVjdGVkIGNvbG9yICIgKyBpbmZvLnJlbmRlckNvbG9yLCB0b2xlcmFuY2UpOwor
ICB9IGVsc2UgeworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgInNo
b3VsZCBiZSBncmVlbiIsIHRvbGVyYW5jZSk7CisgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdHMo
c2hhZGVySW5mb3MsIG9wdF9jb250ZXh0VmVyc2lvbikgeworICB2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
KyAgY2FudmFzLndpZHRoID0gMzI7CisgIGNhbnZhcy5oZWlnaHQgPSAzMjsKKyAgdmFyIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHVuZGVmaW5lZCwgb3B0X2NvbnRleHRWZXJzaW9u
KTsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzaGFkZXJJbmZvcy5sZW5ndGg7IGkrKykgeworICAgIHJ1bk9uZVRlc3QoZ2wsIHNo
YWRlckluZm9zW2ldKTsKKyAgfQorCisgIGZpbmlzaFRlc3QoKTsKK307CisKK2Z1bmN0aW9uIGdl
dFNvdXJjZShlbGVtKSB7CisgIHZhciBzdHIgPSBlbGVtLnRleHQ7CisgIHJldHVybiBzdHIucmVw
bGFjZSgvXlxzKi8sICcnKS5yZXBsYWNlKC9ccyokLywgJycpOworfQorCitmdW5jdGlvbiBnZXRQ
YXNzTWVzc2FnZShzb3VyY2UpIHsKKyAgdmFyIGxpbmVzID0gc291cmNlLnNwbGl0KCdcbicpOwor
ICByZXR1cm4gbGluZXNbMF0uc3Vic3RyaW5nKDMpOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNz
KG1zZykgeworICBpZiAobXNnLmluZGV4T2YoImZhaWwiKSA+PSAwKSB7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisgIGlmIChtc2cuaW5kZXhPZigic3VjY2VlZCIpID49IDApIHsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorICB0ZXN0RmFpbGVkKCJiYWQgdGVzdCBkZXNjcmlwdGlvbi4gTXVzdCBo
YXZlICdmYWlsJyBvciAnc3VjY2VlZCciKTsKK30KKworZnVuY3Rpb24gc2V0dXBUZXN0KCkgewor
ICB2YXIgaW5mbyA9IHt9OworCisgIHZhciB2U2hhZGVyRWxlbSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd2ZXJ0ZXhTaGFkZXInKTsKKyAgaWYgKHZTaGFkZXJFbGVtKSB7CisgICAgaW5mby52
U2hhZGVyU291cmNlID0gZ2V0U291cmNlKHZTaGFkZXJFbGVtKTsKKyAgICBpbmZvLnBhc3NNc2cg
PSBnZXRQYXNzTWVzc2FnZShpbmZvLnZTaGFkZXJTb3VyY2UpOworICAgIGluZm8udlNoYWRlclN1
Y2Nlc3MgPSBnZXRTdWNjZXNzKGluZm8ucGFzc01zZyk7CisgIH0KKworICB2YXIgZlNoYWRlckVs
ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhZ21lbnRTaGFkZXInKTsKKyAgaWYgKGZT
aGFkZXJFbGVtKSB7CisgICAgaW5mby5mU2hhZGVyU291cmNlID0gZ2V0U291cmNlKGZTaGFkZXJF
bGVtKTsKKyAgICBpbmZvLnBhc3NNc2cgPSBnZXRQYXNzTWVzc2FnZShpbmZvLmZTaGFkZXJTb3Vy
Y2UpOworICAgIGluZm8uZlNoYWRlclN1Y2Nlc3MgPSBnZXRTdWNjZXNzKGluZm8ucGFzc01zZyk7
CisgIH0KKworICAvLyBsaW5rU3VjY2VzcyBzaG91bGQgYmUgdHJ1ZSBpZiBzaGFkZXIgc3VjY2Vz
cyB2YWx1ZSBpcyB1bmRlZmluZWQgb3IgdHJ1ZSBmb3IgYm90aCBzaGFkZXJzLgorICBpbmZvLmxp
bmtTdWNjZXNzID0gaW5mby52U2hhZGVyU3VjY2VzcyAhPT0gZmFsc2UgJiYgaW5mby5mU2hhZGVy
U3VjY2VzcyAhPT0gZmFsc2U7CisKKyAgaWYgKGluZm8ucGFzc01zZyA9PT0gdW5kZWZpbmVkKSB7
CisgICAgdGVzdEZhaWxlZCgibm8gdGVzdCBzaGFkZXIgZm91bmQuIik7CisgICAgZmluaXNoVGVz
dCgpOworICAgIHJldHVybjsKKyAgfQorCisgIHJldHVybiBpbmZvOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkgeworICB2YXIgaW5mbyA9IHNldHVwVGVzdCgpOworICBkZXNjcmlwdGlvbihpbmZv
LnBhc3NNc2cpOworICBydW5UZXN0cyhbaW5mb10pOworfQorCitmdW5jdGlvbiBydW5SZW5kZXJU
ZXN0cyh0ZXN0cywgb3B0X2NvbnRleHRWZXJzaW9uKSB7CisgIGZvciAodmFyIGlpID0gMDsgaWkg
PCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgICB0ZXN0c1tpaV0ucmVuZGVyID0gdHJ1ZQorICB9
CisgIHJ1blRlc3RzKHRlc3RzLCBvcHRfY29udGV4dFZlcnNpb24pOworfQorCitmdW5jdGlvbiBy
dW5SZW5kZXJUZXN0KCkgeworICB2YXIgaW5mbyA9IHNldHVwVGVzdCgpOworICBkZXNjcmlwdGlv
bihpbmZvLnBhc3NNc2cpOworICBydW5SZW5kZXJUZXN0cyhbaW5mb10pOworfQorCityZXR1cm4g
eworICBydW5UZXN0OiBydW5UZXN0LAorICBydW5UZXN0czogcnVuVGVzdHMsCisgIHJ1blJlbmRl
clRlc3Q6IHJ1blJlbmRlclRlc3QsCisgIHJ1blJlbmRlclRlc3RzOiBydW5SZW5kZXJUZXN0cwor
fTsKK30oKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy9nbHNsLWNvbnN0cnVjdG9yLXRlc3RzLWdlbmVyYXRvci5qcyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2dsc2wtY29uc3RydWN0
b3ItdGVzdHMtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YzE2MDI5ODBiMDc4NTc5NGJhY2Vk
MDgwZWYxNTU4Y2YxNDVjZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9nbHNsLWNvbnN0cnVjdG9yLXRlc3RzLWdlbmVy
YXRvci5qcwpAQCAtMCwwICsxLDkxOSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hy
b25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0
IGZpbGUuCisqLworCisKK3ZhciBHTFNMQ29uc3RydWN0b3JUZXN0c0dlbmVyYXRvciA9IChmdW5j
dGlvbigpIHsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisvLyBTaGFkZXIgY29kZSB0
ZW1wbGF0ZXMKK3ZhciBjb25zdHJ1Y3RvclZlcnRleFRlbXBsYXRlID0gWworICAiYXR0cmlidXRl
IHZlYzQgdlBvc2l0aW9uOyIsCisKKyAgInByZWNpc2lvbiBtZWRpdW1wIGludDsiLAorICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7IiwKKworICAvLyBDb2xvcnMgdXNlZCB0byBzaWduYWwgY29y
cmVjdG5lc3Mgb2YgY29tcG9uZW50IHZhbHVlcyBjb21wYXJpc29uCisgICJjb25zdCB2ZWM0IGdy
ZWVuID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOyIsCisgICJjb25zdCB2ZWM0IHJlZCAgID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOyIsCisKKyAgLy8gRXJyb3IgYm91bmQgdXNlZCBpbiBj
b21wYXJpc29uIG9mIGZsb2F0aW5nIHBvaW50IHZhbHVlcworICAiJChlcnJvckJvdW5kKSIsCisK
KyAgInZhcnlpbmcgdmVjNCB2Q29sb3I7IiwKKworICAidm9pZCBtYWluKCkgeyIsCisgICIgICQo
YXJnc0xpc3QpIiwKKworICAiICAkKHR5cGUpIHYgPSAkKHR5cGUpKCQoYXJnc0NvbnN0cikpOyIs
CisKKyAgIiAgaWYgKCQoY2hlY2tDb21wVmFscykpIiwKKyAgIiAgICB2Q29sb3IgPSBncmVlbjsi
LAorICAiICBlbHNlIiwKKyAgIiAgICB2Q29sb3IgPSByZWQ7IiwKKworICAiICBnbF9Qb3NpdGlv
biA9IHZQb3NpdGlvbjsiLAorICAifSIKK10uam9pbigiXG4iKTsKKworCit2YXIgcGFzc1Rocm91
Z2hDb2xvckZyYWdtZW50U2hhZGVyID0gWworICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IiwK
KworICAidmFyeWluZyB2ZWM0IHZDb2xvcjsiLAorCisgICJ2b2lkIG1haW4oKSB7IiwKKyAgIiAg
ICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7IiwKKyAgIn0iCitdLmpvaW4oJ1xuJyk7CisKKwordmFy
IGNvbnN0cnVjdG9yRnJhZ21lbnRUZW1wbGF0ZSA9IFsKKyAgInByZWNpc2lvbiBtZWRpdW1wIGlu
dDsiLAorICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IiwKKworICAvLyBDb2xvcnMgdXNlZCB0
byBzaWduYWwgY29ycmVjdG5lc3Mgb2YgY29tcG9uZW50IHZhbHVlcyBjb21wYXJpc29uCisgICJj
b25zdCB2ZWM0IGdyZWVuID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOyAiLAorICAiY29uc3Qg
dmVjNCByZWQgICA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsgIiwKKworICAvLyBFcnJvciBi
b3VuZCB1c2VkIGluIGNvbXBhcmlzb24gb2YgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCisgICIkKGVy
cm9yQm91bmQpIiwKKworICAidm9pZCBtYWluKCkgeyIsCisgICIgICQoYXJnc0xpc3QpIiwKKwor
ICAiICAkKHR5cGUpIHYgPSAkKHR5cGUpKCQoYXJnc0NvbnN0cikpOyIsCisKKyAgIiAgaWYgKCQo
Y2hlY2tDb21wVmFscykpIiwKKyAgIiAgICBnbF9GcmFnQ29sb3IgPSBncmVlbjsiLAorICAiICBl
bHNlIiwKKyAgIiAgICBnbF9GcmFnQ29sb3IgPSByZWQ7IiwKKyAgIn0iCitdLmpvaW4oIlxuIik7
CisKKworLy8gQ29kaW5nIG9mIHRoZSBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMKKy8vIHMgIDog
c2NhbGFyCisvLyB2MiA6IHZlYzIKKy8vIHYzIDogdmVjMworLy8gdjQgOiB2ZWM0CisvLyBtMiA6
IG1hdDIKKy8vIG0zIDogbWF0MworLy8gbTQgOiBtYXQ0CisKKy8vIFJldHVybnMgdGhlIGRpbWVu
c2lvbnMgb2YgdGhlIHR5cGUKKy8vIENvdW50IG9mIGNvbHVtbnMsIGNvdW50IG9mIHJvd3MKK2Z1
bmN0aW9uIGdldFR5cGVDb2RlRGltZW5zaW9ucyh0eXBlQ29kZSkgeworICBzd2l0Y2ggKHR5cGVD
b2RlKSB7CisgICAgY2FzZSAicyI6ICByZXR1cm4gWzEsIDFdOworICAgIGNhc2UgInYyIjogcmV0
dXJuIFsxLCAyXTsKKyAgICBjYXNlICJ2MyI6IHJldHVybiBbMSwgM107CisgICAgY2FzZSAidjQi
OiByZXR1cm4gWzEsIDRdOworICAgIGNhc2UgIm0yIjogcmV0dXJuIFsyLCAyXTsKKyAgICBjYXNl
ICJtMyI6IHJldHVybiBbMywgM107CisgICAgY2FzZSAibTQiOiByZXR1cm4gWzQsIDRdOworCisg
ICAgZGVmYXVsdDoKKyAgICAgIHd0dS5lcnJvcigiR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0
b3IuZ2V0VHlwZUNvZGVEaW1lbnNpb25zKCksIHVua25vd24gdHlwZSBjb2RlIik7CisgICAgICBk
ZWJ1Z2dlcjsKKyAgfQorfTsKKworCisvLyBSZXR1cm5zIHRoZSBjb21wb25lbnQgY291bnQgZm9y
IHRoZSB0eXBlIGNvZGUKK2Z1bmN0aW9uIGdldFR5cGVDb2RlQ29tcG9uZW50Q291bnQodHlwZUNv
ZGUpIHsKKyAgdmFyIGRpbSA9IGdldFR5cGVDb2RlRGltZW5zaW9ucyh0eXBlQ29kZSk7CisKKyAg
cmV0dXJuIGRpbVswXSAqIGRpbVsxXTsKK30KKworCisvLyBSZXR1cm5zIGdsc2wgbmFtZSBvZiB0
eXBlIGNvZGUKK2Z1bmN0aW9uIGdldEdMU0xCYXNlVHlwZU5hbWUodHlwZUNvZGUpIHsKKyAgc3dp
dGNoKHR5cGVDb2RlKSB7CisgICAgY2FzZSAicyI6ICByZXR1cm4gIiI7CisgICAgY2FzZSAidjIi
OiByZXR1cm4gInZlYzIiOworICAgIGNhc2UgInYzIjogcmV0dXJuICJ2ZWMzIjsKKyAgICBjYXNl
ICJ2NCI6IHJldHVybiAidmVjNCI7CisgICAgY2FzZSAibTIiOiByZXR1cm4gIm1hdDIiOworICAg
IGNhc2UgIm0zIjogcmV0dXJuICJtYXQzIjsKKyAgICBjYXNlICJtNCI6IHJldHVybiAibWF0NCI7
CisKKyAgICBkZWZhdWx0OgorICAgICAgd3R1LmVycm9yKCJHTFNMQ29uc3RydWN0b3JUZXN0c0dl
bmVyYXRvci5nZXRHTFNMQmFzZVR5cGVOYW1lKCksIHVua25vd24gdHlwZSBjb2RlIik7CisgICAg
ICBkZWJ1Z2dlcjsKKyAgfQorfQorCisKKy8vIFJldHVybnMgdGhlIHNjYWxhciBnbHNsIHR5cGUg
bmFtZSByZWxhdGVkIHRvIHRoZSBzdHJ1Y3R1cmVkIHR5cGUKK2Z1bmN0aW9uIGdldEdMU0xTY2Fs
YXJUeXBlKHRhcmdldFR5cGUpIHsKKyAgc3dpdGNoKHRhcmdldFR5cGVbMF0pIHsKKyAgICBjYXNl
ICdpJzogcmV0dXJuICJpbnQiOworICAgIGNhc2UgJ2InOiByZXR1cm4gImJvb2wiOworCisgICAg
Y2FzZSAndic6CisgICAgY2FzZSAnbSc6CisgICAgICByZXR1cm4gImZsb2F0IjsKKworICAgIGRl
ZmF1bHQ6CisgICAgICB3dHUuZXJyb3IoIkdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdl
dEdMU0xTY2FsYXJUeXBlKCksIHVua25vd24gdGFyZ2V0IHR5cGUiKTsKKyAgICAgIGRlYnVnZ2Vy
OworICB9Cit9CisKKworLy8gUmV0dXJucyB0aGUgc2NhbGFyIHByZWZpeCBmb3IgdGhlIGFzc29j
aWF0ZWQgc2NhbGFyIHR5cGUKK2Z1bmN0aW9uIGdldEdMU0xTY2FsYXJQcmVmaXgodGFyZ2V0VHlw
ZSkgeworICBzd2l0Y2godGFyZ2V0VHlwZVswXSkgeworICAgIGNhc2UgJ2knOgorICAgIGNhc2Ug
J2InOgorICAgICAgcmV0dXJuIHRhcmdldFR5cGVbMF07CisKKyAgICBjYXNlICd2JzoKKyAgICBj
YXNlICdtJzoKKyAgICAgIHJldHVybiAnJzsKKworICAgIGRlZmF1bHQ6CisgICAgICB3dHUuZXJy
b3IoIkdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdldEdMU0xTY2FsYXJQcmVmaXgoKSwg
dW5rbm93biB0YXJnZXQgdHlwZSIpOworICAgICAgZGVidWdnZXI7CisgIH0KK30KKworCisvLyBS
ZXR1cm5zIHRoZSB0eXBlIGZvciBhIHNwZWNpZmllZCB0YXJnZXQgdHlwZSBhbmQgYXJndW1lbnQg
dHlwZSBjb2RlCitmdW5jdGlvbiBnZXRHTFNMQXJndW1lbnRUeXBlKHR5cGVDb2RlLCB0YXJnZXRU
eXBlKSB7CisgIHZhciBiYXNlVHlwZSA9IGdldEdMU0xCYXNlVHlwZU5hbWUodHlwZUNvZGUpOwor
ICBpZiAoYmFzZVR5cGUgIT09ICIiKSB7CisgICAgaWYgKHR5cGVDb2RlWzBdID09PSAidiIpIHsK
KyAgICAgIC8vIFZlY3RvcnMgY29tZSBpbiBkaWZmZXJlbnQgZmxhdm91cnMKKyAgICAgIHJldHVy
biBnZXRHTFNMU2NhbGFyUHJlZml4KHRhcmdldFR5cGUpICsgYmFzZVR5cGU7CisgICAgfQorICAg
IGVsc2UKKyAgICAgIHJldHVybiBiYXNlVHlwZTsKKyAgfQorICBlbHNlCisgICAgcmV0dXJuIGdl
dEdMU0xTY2FsYXJUeXBlKHRhcmdldFR5cGUpOworfQorCisKKy8vIFJldHVybnMgdGhlIGdsc2wg
dHlwZSBvZiB0aGUgYXJndW1lbnQgY29tcG9uZW50cworZnVuY3Rpb24gZ2V0R0xTTEFyZ3VtZW50
Q29tcG9uZW50VHlwZShhcmdUeXBlQ29kZSwgdGFyZ2V0VHlwZSkgeworICB2YXIgc2NhbGFyVHlw
ZTsKKworICBpZiAoYXJnVHlwZUNvZGVbMF0gPT09ICJtIikgeworICAgIC8vIE1hdHJpY2VzIGFy
ZSBhbHdheXMgZmxvYXRzCisgICAgc2NhbGFyVHlwZSA9ICJmbG9hdCI7CisgIH0KKyAgZWxzZQor
ICAgIHNjYWxhclR5cGUgPSBnZXRHTFNMU2NhbGFyVHlwZSh0YXJnZXRUeXBlKTsKKworICByZXR1
cm4gc2NhbGFyVHlwZTsKK30KKworCitmdW5jdGlvbiBnZXRHTFNMQ29sdW1uU2l6ZSh0YXJnZXRU
eXBlKSB7CisgIGNvbFNpemUgPSBwYXJzZUludCh0YXJnZXRUeXBlLnNsaWNlKC0xKSk7CisKKyAg
aWYgKCFpc05hTihjb2xTaXplKSkKKyAgICByZXR1cm4gY29sU2l6ZTsKKworICB3dHUuZXJyb3Io
IkdMU0xDb25zdHJ1Y3RvclRlc3RzR2VuZXJhdG9yLmdldEdMU0xDb2x1bW5TaXplKCksIGludmFs
aWQgdGFyZ2V0IHR5cGUiKTsKKyAgICBkZWJ1Z2dlcjsKK30KKworCisvLyBSZXR1cm5zIGNvcnJl
Y3Qgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHNjYWxhciB2YWx1ZQorZnVuY3Rpb24gZ2V0U2Nh
bGFyVHlwZVZhbFN0cih2YWwsIHNjYWxhclR5cGUpIHsKKyAgaWYgKHZhbCA9PSBudWxsKQorICAg
IGRlYnVnZ2VyOworCisgIHN3aXRjaCAoc2NhbGFyVHlwZSkgeworICAgIGNhc2UgImZsb2F0Ijog
cmV0dXJuIHZhbC50b0ZpeGVkKDEpOworICAgIGNhc2UgImludCI6ICAgcmV0dXJuIHZhbDsKKyAg
ICBjYXNlICJib29sIjogIHJldHVybiAodmFsID09PSAwKSA/ICJmYWxzZSIgOiAidHJ1ZSI7CisK
KyAgICBkZWZhdWx0OgorICAgICAgd3R1LmVycm9yKCJHTFNMQ29uc3RydWN0b3JUZXN0c0dlbmVy
YXRvci5nZXRTY2FsYXJUeXBlVmFsU3RyKCksIHVua25vd24gc2NhbGFyIHR5cGUiKTsKKyAgICAg
IGRlYnVnZ2VyOworICB9Cit9CisKKworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnbHNsIHR5cGUg
bmFtZSBpcyBhIG1hdHJpeAorZnVuY3Rpb24gaXNHTFNMVHlwZU1hdHJpeCh0eXBlKSB7CisgIHJl
dHVybiAodHlwZS5pbmRleE9mKCJtYXQiKSAhPT0gLTEpOworfQorCisKKy8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZ2xzbCB0eXBlIG5hbWUgaXMgYSB2ZWN0b3IKK2Z1bmN0aW9uIGlzR0xTTFR5cGVW
ZWN0b3IodHlwZSkgeworICByZXR1cm4gKHR5cGUuaW5kZXhPZigidmVjIikgIT09IC0xKTsKK30K
KworCisvLyBSZXR1cm5zIHRoZSBjb3VudCBvZiBjb21wb25lbnRzCitmdW5jdGlvbiBnZXRHTFNM
VHlwZUNvbXBvbmVudENvdW50KHR5cGUpIHsKKyAgdmFyIGNvbFNpemUgPSBnZXRHTFNMQ29sdW1u
U2l6ZSh0eXBlKTsKKworICBpZiAoaXNHTFNMVHlwZU1hdHJpeCh0eXBlKSkKKyAgICByZXR1cm4g
Y29sU2l6ZSAqIGNvbFNpemU7CisgIGVsc2UKKyAgICByZXR1cm4gY29sU2l6ZTsKK30KKworCisv
LyBSZXR1cm5zIHRoZSBjb25zdHJ1Y3RvciBleHByZXNzaW9uIHdpdGggdGhlIGNvbXBvbmVudHMg
c2V0IHRvIGEgc2VxdWVuY2Ugb2Ygc2NhbGFyIHZhbHVlcworLy8gTGlrZSB2ZWMzKDEuMCwgMi4w
LCAzLjApCitmdW5jdGlvbiBnZXRDb21wb25lbnRTZXF1ZW5jZUNvbnN0cnVjdG9yRXhwcmVzc2lv
bih0eXBlQ29kZSwgZmlyc3RDb21wVmFsdWUsIHRhcmdldFR5cGUpIHsKKyAgdmFyIHNjYWxhclR5
cGUgPSBnZXRHTFNMQXJndW1lbnRDb21wb25lbnRUeXBlKHR5cGVDb2RlLCB0YXJnZXRUeXBlKTsK
KworICBpZiAodHlwZUNvZGUgPT09ICJzIikgeworICAgIC8vIFNjYWxhcgorICAgIHJldHVybiBn
ZXRTY2FsYXJUeXBlVmFsU3RyKGZpcnN0Q29tcFZhbHVlLCBzY2FsYXJUeXBlKSArICI7IjsKKyAg
fQorICBlbHNlIHsKKyAgICAvLyBTdHJ1Y3R1cmVkIHR5cGVhcmdUeXBlQ29kZVswXSA9PT0gIm0i
CisgICAgY29tcENvdW50ID0gZ2V0VHlwZUNvZGVDb21wb25lbnRDb3VudCh0eXBlQ29kZSk7Cisg
ICAgdmFyIGNvbnN0ckV4cFBhcnRzID0gbmV3IEFycmF5KGNvbXBDb3VudCk7CisgICAgZm9yICh2
YXIgYWEgPSAwOyBhYSA8IGNvbXBDb3VudDsgKythYSkKKyAgICAgICAgY29uc3RyRXhwUGFydHNb
YWFdID0gZ2V0U2NhbGFyVHlwZVZhbFN0cihmaXJzdENvbXBWYWx1ZSArIGFhLCBzY2FsYXJUeXBl
KTsKKworICAgIHJldHVybiBnZXRHTFNMQXJndW1lbnRUeXBlKHR5cGVDb2RlLCB0YXJnZXRUeXBl
KSArICIoIiArIGNvbnN0ckV4cFBhcnRzLmpvaW4oIiwgIikgKyAiKTsiOworICB9Cit9CisKKwor
Ly8gUmV0dXJucyB0aGUgZXhwcmVzc2lvbiB0byBzZWxlY3QgYSBjb21wb25lbnQgb2YgdGhlIHN0
cnVjdHVyZWQgdHlwZQorZnVuY3Rpb24gZ2V0Q29tcG9uZW50U2VsZWN0b3JFeHBTdHIodGFyZ2V0
VHlwZSwgY29tcEl4KSB7CisgIGlmIChpc0dMU0xUeXBlTWF0cml4KHRhcmdldFR5cGUpKSB7Cisg
ICAgdmFyIGNvbFJvd0l4ID0gZ2V0Q29sUm93SW5kZXhGcm9tTGluZWFySW5kZXgoY29tcEl4LCBn
ZXRHTFNMQ29sdW1uU2l6ZSh0YXJnZXRUeXBlKSk7CisgICAgcmV0dXJuICJ2WyIgKyBjb2xSb3dJ
eC5jb2xJeCArICJdWyIgKyBjb2xSb3dJeC5yb3dJeCArICJdIjsKKyAgfQorICBlbHNlCisgICAg
cmV0dXJuICJ2WyIgKyBjb21wSXggKyAiXSI7Cit9CisKKworLy8gUmV0dXJucyBleHByZXNzaW9u
IHdoaWNoIHZhbGlkYXRlcyB0aGUgY29tcG9uZW50cyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yIGV4
cHJlc3Npb24KK2Z1bmN0aW9uIGdldENvbXBvbmVudFZhbGlkYXRpb25FeHByZXNzaW9uKHJlZkNv
bXBWYWxzLCB0YXJnZXRUeXBlKSB7CisgIC8vIEVhcmx5IG91dCBmb3IgaW52YWxpZCBhcmd1bWVu
dHMKKyAgaWYgKHJlZkNvbXBWYWxzLmxlbmd0aCA9PT0gMCkKKyAgICByZXR1cm4gImZhbHNlIjsK
KworICB2YXIgc2NhbGFyVHlwZSA9IGdldEdMU0xTY2FsYXJUeXBlKHRhcmdldFR5cGUpOworICB2
YXIgY2hlY2tDb21wb25lbnRWYWx1ZVBhcnRzID0gbmV3IEFycmF5KHJlZkNvbXBWYWxzLmxlbmd0
aCk7CisgIGZvciAodmFyIGNjID0gMDsgY2MgPCByZWZDb21wVmFscy5sZW5ndGg7ICsrY2MpIHsK
KyAgICB2YXIgdmFsX3N0ciA9IGdldFNjYWxhclR5cGVWYWxTdHIocmVmQ29tcFZhbHNbY2NdLCBz
Y2FsYXJUeXBlKTsKKyAgICB2YXIgY29tcF9zZWxfZXhwID0gZ2V0Q29tcG9uZW50U2VsZWN0b3JF
eHBTdHIodGFyZ2V0VHlwZSwgY2MpOworICAgIGlmIChzY2FsYXJUeXBlID09PSAiZmxvYXQiKSB7
CisgICAgICAvLyBDb21wYXJpc29uIG9mIGZsb2F0aW5nIHBvaW50IHZhbHVlcyB3aXRoIGVycm9y
IGJvdW5kCisgICAgICBjaGVja0NvbXBvbmVudFZhbHVlUGFydHNbY2NdID0gImFicygiICsgY29t
cF9zZWxfZXhwICsgIiAtICIgKyB2YWxfc3RyICsgIikgPD0gZXJyb3JCb3VuZCI7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgLy8gU2ltcGxlIGNvbXBhcmlzb24gdG8gZXhwZWN0ZWQgdmFsdWUK
KyAgICAgIGNoZWNrQ29tcG9uZW50VmFsdWVQYXJ0c1tjY10gPSBjb21wX3NlbF9leHAgKyAiID09
ICIgKyB2YWxfc3RyOworICAgIH0KKyAgfQorCisgIHJldHVybiBjaGVja0NvbXBvbmVudFZhbHVl
UGFydHMuam9pbigiICYmICIpOworfQorCisKKy8vIFJldHVybnMgc3Vic3RpdHV0aW9uIHBhcnRz
IHRvIHR1cm4gdGhlIHNoYWRlciB0ZW1wbGF0ZSBpbnRvIHRlc3RhYmxlIHNoYWRlciBjb2RlCitm
dW5jdGlvbiBnZXRUZXN0U2hhZGVyUGFydHModGFyZ2V0VHlwZSwgYXJnRXhwLCBmaXJzdENvbXBW
YWx1ZSkgeworICAvLyBnbHNsIGNvZGUgb2YgZGVjbGFyYXRpb25zIG9mIGFyZ3VtZW50cworICB2
YXIgYXJnc0xpc3RQYXJ0cyA9IG5ldyBBcnJheShhcmdFeHAubGVuZ3RoKTsKKworICAvLyBnbHNs
IGNvZGUgb2YgY29uc3RydWN0b3IgZXhwcmVzc2lvbgorICB2YXIgYXJnc0NvbnN0clBhcnRzID0g
bmV3IEFycmF5KGFyZ0V4cC5sZW5ndGgpOworCisgIC8vIGdsc2wgdHlwZSBleHByZXNzaW9uCisg
IHZhciB0eXBlRXhwUGFydHMgPSBuZXcgQXJyYXkoYXJnRXhwLmxlbmd0aCk7CisgIGZvciAodmFy
IGFhID0gMDsgYWEgPCBhcmdFeHAubGVuZ3RoOyArK2FhKSB7CisgICAgdmFyIHR5cGVDb2RlICAg
ICA9IGFyZ0V4cFthYV07CisgICAgdmFyIGFyZ0NvbXBDb3VudCA9IGdldFR5cGVDb2RlQ29tcG9u
ZW50Q291bnQodHlwZUNvZGUpOworICAgIHZhciBhcmdOYW1lICAgICAgPSAiYSIgKyBhYTsKKyAg
ICB2YXIgYXJnVHlwZSAgICAgID0gZ2V0R0xTTEFyZ3VtZW50VHlwZSh0eXBlQ29kZSwgdGFyZ2V0
VHlwZSk7CisgICAgdmFyIGFyZ0NvbnN0ckV4cCA9IGFyZ1R5cGUgKyAiICIgKyBhcmdOYW1lICsg
IiA9ICIgKyBnZXRDb21wb25lbnRTZXF1ZW5jZUNvbnN0cnVjdG9yRXhwcmVzc2lvbih0eXBlQ29k
ZSwgZmlyc3RDb21wVmFsdWUsIHRhcmdldFR5cGUpOworCisgICAgLy8gQWRkIGNvbnN0cnVjdGlv
biBvZiBvbmUgYXJndW1lbnQKKyAgICAvLyBJbmRlbnQgaWYgbm90IGZpcnN0IGFyZ3VtZW50Cisg
ICAgYXJnc0xpc3RQYXJ0c1thYV0gPSAoKGFhID4gMCkgPyAiICAiIDogIiIpICsgYXJnQ29uc3Ry
RXhwOworCisgICAgLy8gQWRkIGFyZ3VtZW50IG5hbWUgdG8gdGFyZ2V0IHR5cGUgYXJndW1lbnQg
bGlzdAorICAgIGFyZ3NDb25zdHJQYXJ0c1thYV0gPSBhcmdOYW1lOworCisgICAgLy8gQWRkIHR5
cGUgbmFtZSB0byB0eXBlIGV4cHJlc3Npb24KKyAgICB0eXBlRXhwUGFydHNbYWFdID0gYXJnVHlw
ZTsKKworICAgIC8vIEluY3JlbWVudCBhcmd1bWVudCBjb21wb25lbnQgdmFsdWUgc28gYWxsIGFy
Z3VtZW50IGNvbXBvbmVudCBhcmd1bWVudHMgaGF2ZSBhIHVuaXF1ZSB2YWx1ZQorICAgIGZpcnN0
Q29tcFZhbHVlICs9IGFyZ0NvbXBDb3VudDsKKyAgfQorCisgIHJldHVybiB7CisgICAgYXJnc0xp
c3Q6ICAgYXJnc0xpc3RQYXJ0cy5qb2luKCJcbiIpICsgIlxuIiwKKyAgICBhcmdzQ29uc3RyOiBh
cmdzQ29uc3RyUGFydHMuam9pbigiLCAiKSwKKyAgICB0eXBlRXhwOiAgICB0YXJnZXRUeXBlICsg
IigiICsgdHlwZUV4cFBhcnRzLmpvaW4oIiwgIikgKyAiKSIKKyAgfTsKK30KKworCisvLyBVdGls
aXR5IGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHRoZSBhcnJheSBvZiByZWZlcmVuY2UgdmFsdWVz
CisKKy8vIFJldHVybnMgYXJyYXkgZmlsbGVkIHdpdGggaWRlbnRpY2FsIHZhbHVlcworZnVuY3Rp
b24gZ2V0QXJyYXlXaXRoSWRlbnRpY2FsVmFsdWVzKHNpemUsIHZhbCkgeworICB2YXIgbWF0QXJy
YXkgPSBuZXcgQXJyYXkoc2l6ZSk7CisgIGZvciAodmFyIGFhID0gMDsgYWEgPCBzaXplOyArK2Fh
KQorICAgIG1hdEFycmF5W2FhXSA9IHZhbDsKKworICByZXR1cm4gbWF0QXJyYXk7Cit9CisKKwor
Ly8gUmV0dXJucyBhcnJheSBmaWxsZWQgd2l0aCBpbmNyZWFzaW5nIHZhbHVlcyBmcm9tIGEgc3Bl
Y2lmaWVkIHN0YXJ0IHZhbHVlCitmdW5jdGlvbiBnZXRBcnJheVdpdGhJbmNyZWFzaW5nVmFsdWVz
KHNpemUsIHN0YXJ0KSB7CisgIHZhciBtYXRBcnJheSA9IG5ldyBBcnJheShzaXplKTsKKyAgZm9y
ICh2YXIgYWEgPSAwOyBhYSA8IHNpemU7ICsrYWEpCisgICAgbWF0QXJyYXlbYWFdID0gc3RhcnQg
KyBhYTsKKworICByZXR1cm4gbWF0QXJyYXk7Cit9CisKKworLy8gVXRpbGl0eSBmdW5jdGlvbnMg
dG8gbWFuaXB1bGF0ZSB0aGUgYXJyYXkgb2YgcmVmZXJlbmNlIHZhbHVlcyBpZiB0aGUgdGFyZ2V0
IHR5cGUgaXMgYSBtYXRyaXgKKworLy8gUmV0dXJucyBhbiBhcnJheSB3aGljaCBpcyB0aGUgY29s
dW1uIG9yZGVyIGxheW91dCBvZiBhIHNxdWFyZSBtYXRyaXggd2hlcmUgdGhlIGRpYWdvbmFsIGlz
IHNldCB0byBhIHNwZWNpZmllZCB2YWx1ZQorZnVuY3Rpb24gbWF0Q29tcEFycmF5U2V0RGlhZ29u
YWwobWF0QXJyYXksIGRpYWdWYWwpIHsKKyAgLy8gVGhlIGVudHJpZXMgZm9yIHRoZSBkaWFnb25h
bCBzdGFydCBhdCBhcnJheSBpbmRleCAwIGFuZCBpbmNyZWFzZQorICAvLyBieSBjb2x1bW4gc2l6
ZSArIDEKKyAgdmFyIGNvbFNpemUgPSBNYXRoLnJvdW5kKE1hdGguc3FydChtYXRBcnJheS5sZW5n
dGgpKTsKKyAgdmFyIGRJeCA9IDA7CisgIGRvIHsKKyAgICBtYXRBcnJheVtkSXhdID0gZGlhZ1Zh
bDsKKyAgICBkSXggKz0gKGNvbFNpemUgKyAxKTsKKyAgfQorICB3aGlsZSAoZEl4IDwgY29sU2l6
ZSAqIGNvbFNpemUpOworCisgIHJldHVybiBtYXRBcnJheTsKK30KKworCisvLyBSZXR1cm5zIGFu
IGFycmF5IHdoaWNoIGNvbnRhaW5zIHRoZSB2YWx1ZXMgb2YgYW4gaWRlbnRpdHkgbWF0cml4IHJl
YWQgb3V0IGluIGNvbHVtbiBvcmRlcgorZnVuY3Rpb24gbWF0Q29tcEFycmF5Q3JlYXRlRGlhZ29u
YWxNYXRyaXgoY29sU2l6ZSwgZGlhZ1ZhbCkgeworICB2YXIgc2l6ZSA9IGNvbFNpemUgKiBjb2xT
aXplOworICB2YXIgbWF0QXJyYXkgPSBuZXcgQXJyYXkoc2l6ZSk7CisgIGZvciAodmFyIGFhID0g
MDsgYWEgPCBzaXplOyArK2FhKQorICAgIG1hdEFycmF5W2FhXSA9IDA7CisKKyAgcmV0dXJuIG1h
dENvbXBBcnJheVNldERpYWdvbmFsKG1hdEFycmF5LCBkaWFnVmFsKTsKK30KKworCisvLyBSZXR1
cm5zIHRoZSBjb2x1bW4gYW5kIHJvdyBpbmRleCBmcm9tIHRoZSBsaW5lYXIgaW5kZXggaWYgdGhl
IGNvbXBvbmVudHMgb2YgdGhlIG1hdHJpeCBhcmUgc3RvcmVkIGluIGNvbHVtbiBvcmRlciBpbiBh
biBhcnJheQorLy8gaW4gYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkgaW4gY29sdW1uIG9yZGVyCitm
dW5jdGlvbiBnZXRDb2xSb3dJbmRleEZyb21MaW5lYXJJbmRleChsaW5JeCwgY29sU2l6ZSkgewor
ICByZXR1cm4geworICAgIGNvbEl4OiBNYXRoLmZsb29yKGxpbkl4IC8gY29sU2l6ZSksCisgICAg
cm93SXg6IGxpbkl4ICUgY29sU2l6ZQorICB9OworfQorCisKKy8vIFJldHVybnMgdGhlIGxpbmVh
ciBpbmRleCBmb3IgbWF0cml4IGNvbHVtbiBhbmQgcm93IGluZGV4IGZvciBhIHNwZWNpZmllZCBt
YXRyaXggc2l6ZQorZnVuY3Rpb24gZ2V0TGluZWFySW5kZXhGcm9tQ29sUm93SW5kZXgocm93Q29s
SXgsIGNvbFNpemUpIHsKKyAgcmV0dXJuIHJvd0NvbEl4LmNvbEl4ICogY29sU2l6ZSArIHJvd0Nv
bEl4LnJvd0l4OworfQorCisKKy8vIFJldHVybnMgYSBtYXRyaXggc2V0IGZyb20gYW5vdGhlciBt
YXRyaXgKK2Z1bmN0aW9uIG1hdENvbXBBcnJheVNldE1hdHJpeEZyb21NYXRyaXgoZHN0Q29sU2l6
ZSwgc3JjTWF0QXJyYXkpIHsKKyAgLy8gT3ZlcndyaXRlIGNvbXBvbmVudHMgZnJvbSBkZXN0aW5h
dGlvbiB3aXRoIHRoZSBzb3VyY2UgY29tcG9uZW50IHZhbHVlcyBhdCB0aGUgc2FtZSBjb2wsIHJv
dyBjb29yZGluYXRlcworICB2YXIgZHN0TWF0QXJyYXkgPSBtYXRDb21wQXJyYXlDcmVhdGVEaWFn
b25hbE1hdHJpeChkc3RDb2xTaXplLCAxKTsKKworICB2YXIgc3JjQ29sU2l6ZSA9IE1hdGgucm91
bmQoTWF0aC5zcXJ0KHNyY01hdEFycmF5Lmxlbmd0aCkpOworCisgIGZvciAodmFyIGNfaXggPSAw
OyBjX2l4IDwgc3JjTWF0QXJyYXkubGVuZ3RoOyArK2NfaXgpIHsKKyAgICB2YXIgc3JjTWF0SXgg
PSBnZXRDb2xSb3dJbmRleEZyb21MaW5lYXJJbmRleChjX2l4LCBzcmNDb2xTaXplKTsKKyAgICBp
ZiAoc3JjTWF0SXguY29sSXggPCBkc3RDb2xTaXplICYmIHNyY01hdEl4LnJvd0l4IDwgZHN0Q29s
U2l6ZSkgeworICAgICAgLy8gU291cmNlIG1hdHJpeCBjb29yZGluYXRlcyBhcmUgdmFsaWQgZGVz
dGluYXRpb24gbWF0cml4IGNvb3JkaW5hdGVzCisgICAgICBkc3RNYXRBcnJheVtnZXRMaW5lYXJJ
bmRleEZyb21Db2xSb3dJbmRleChzcmNNYXRJeCwgZHN0Q29sU2l6ZSldID0gc3JjTWF0QXJyYXlb
Y19peF07CisgICAgfQorICB9CisKKyAgcmV0dXJuIGRzdE1hdEFycmF5OworfQorCisKKy8vIFJl
dHVybnMgdGhlIGdsc2wgY29kZSB0byB2ZXJpZnkgaWYgdGhlIGNvbXBvbmVudHMgYXJlIHNldCBj
b3JyZWN0bHkKKy8vIGFuZCB0aGUgbWVzc2FnZSB0byBkaXNwbGF5IGZvciB0aGUgdGVzdAorZnVu
Y3Rpb24gZ2V0Q29uc3RydWN0b3JFeHByZXNzaW9uSW5mbyh0YXJnZXRUeXBlLCBhcmdFeHAsIGZp
cnN0Q29tcFZhbHVlKSB7CisgIHZhciBhcmdDb21wQ291bnRzU3VtID0gMDsKKyAgdmFyIGFyZ0Nv
bXBDb3VudHMgPSBuZXcgQXJyYXkoYXJnRXhwLmxlbmd0aCk7CisgIGZvciAodmFyIGFhID0gMDsg
YWEgPCBhcmdFeHAubGVuZ3RoOyArK2FhKSB7CisgICAgYXJnQ29tcENvdW50c1thYV0gPSBnZXRU
eXBlQ29kZUNvbXBvbmVudENvdW50KGFyZ0V4cFthYV0pOworICAgIGFyZ0NvbXBDb3VudHNTdW0g
Kz0gYXJnQ29tcENvdW50c1thYV07CisgIH0KKworICB2YXIgdGFyZ2V0Q29tcENvdW50ID0gZ2V0
R0xTTFR5cGVDb21wb25lbnRDb3VudCh0YXJnZXRUeXBlKTsKKworICB2YXIgcmVmQ29tcFZhbHM7
CisgIHZhciB0ZXN0TXNnOworICB2YXIgdmFsaWQ7CisKKyAgaWYgKGFyZ0NvbXBDb3VudHNTdW0g
PT09IDApIHsKKyAgICAvLyBBIGNvbnN0cnVjdG9yIG5lZWRzIGF0IGxlYXN0IG9uZSBhcmd1bWVu
dAorICAgIHJlZkNvbXBWYWxzID0gW107CisgICAgdGVzdE1zZyAgICAgPSAiaW52YWxpZCAobm8g
YXJndW1lbnRzKSI7CisgICAgdmFsaWQgICAgICAgPSBmYWxzZTsKKyAgfQorICBlbHNlIHsKKyAg
ICBpZiAoaXNHTFNMVHlwZVZlY3Rvcih0YXJnZXRUeXBlKSkgeworICAgICAgaWYgKGFyZ0NvbXBD
b3VudHNTdW0gPT09IDEpIHsKKyAgICAgICAgLy8gT25lIHNjYWxhciBhcmd1bWVudAorICAgICAg
ICAvLyBWZWN0b3IgY29uc3RydWN0b3Igd2l0aCBvbmUgc2NhbGFyIGFyZ3VtZW50IHNldCBhbGwg
Y29tcG9uZW50cyB0byB0aGUgc2FtZSB2YWx1ZQorICAgICAgICByZWZDb21wVmFscyA9IGdldEFy
cmF5V2l0aElkZW50aWNhbFZhbHVlcyh0YXJnZXRDb21wQ291bnQsIGZpcnN0Q29tcFZhbHVlKTsK
KyAgICAgICAgdGVzdE1zZyAgICAgPSAidmFsaWQgKGFsbCBjb21wb25lbnRzIHNldCB0byB0aGUg
c2FtZSB2YWx1ZSkiOworICAgICAgICB2YWxpZCAgICAgICA9IHRydWU7CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgLy8gTm90IG9uZSBzY2FsYXIgYXJndW1lbnQKKyAgICAgICAgaWYg
KGFyZ0NvbXBDb3VudHNTdW0gPCB0YXJnZXRDb21wQ291bnQpIHsKKyAgICAgICAgICAvLyBOb3Qg
YWxsIGNvbXBvbmVudHMgc2V0CisgICAgICAgICAgcmVmQ29tcFZhbHMgPSBbXTsKKyAgICAgICAg
ICB0ZXN0TXNnICAgICA9ICJpbnZhbGlkIChub3QgZW5vdWdoIGFyZ3VtZW50cykiOworICAgICAg
ICAgIHZhbGlkICAgICAgID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgLy8gYXJnQ29tcENvdW50c1N1bSA+PSB0YXJnZXRDb21wQ291bnQKKyAgICAgICAgICAv
LyBBbGwgY29tcG9uZW50cyBzZXQKKyAgICAgICAgICB2YXIgbGFzdEFyZ0ZpcnN0Q29tcEl4ID0g
YXJnQ29tcENvdW50c1N1bSAtIGFyZ0NvbXBDb3VudHNbYXJnQ29tcENvdW50cy5sZW5ndGggLSAx
XTsKKworICAgICAgICAgIGlmIChsYXN0QXJnRmlyc3RDb21wSXggPCB0YXJnZXRDb21wQ291bnQp
IHsKKyAgICAgICAgICAgIC8vIEZpcnN0IGNvbXBvbmVudCBvZiBsYXN0IGFyZ3VtZW50IGlzIHVz
ZWQKKyAgICAgICAgICAgIHJlZkNvbXBWYWxzID0gZ2V0QXJyYXlXaXRoSW5jcmVhc2luZ1ZhbHVl
cyh0YXJnZXRDb21wQ291bnQsIGZpcnN0Q29tcFZhbHVlKTsKKyAgICAgICAgICAgIHRlc3RNc2cg
ICAgID0gInZhbGlkIjsKKyAgICAgICAgICAgIHZhbGlkICAgICAgID0gdHJ1ZTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGaXJzdCBjb21wb25lbnQgb2Yg
bGFzdCBhcmd1bWVudCBpcyBub3QgdXNlZAorICAgICAgICAgICAgcmVmQ29tcFZhbHMgPSBbXTsK
KyAgICAgICAgICAgIHRlc3RNc2cgICAgID0gImludmFsaWQgKHVudXNlZCBhcmd1bWVudCkiOwor
ICAgICAgICAgICAgdmFsaWQgICAgICAgPSBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLyBNYXRyaXggdGFyZ2V0IHR5cGUK
KyAgICAgIGlmIChhcmdDb21wQ291bnRzU3VtID09PSAxKSB7CisgICAgICAgIC8vIE9uZSBzY2Fs
YXIgYXJndW1lbnQKKyAgICAgICAgLy8gTWF0cml4IGNvbnN0cnVjdG9ycyB3aXRoIG9uZSBzY2Fs
YXIgc2V0IGFsbCBjb21wb25lbnRzIG9uIHRoZSBkaWFnb25hbCB0byB0aGUgc2FtZSB2YWx1ZQor
ICAgICAgICAvLyBBbGwgb3RoZXIgY29tcG9uZW50cyBhcmUgc2V0IHRvIHplcm8KKyAgICAgICAg
cmVmQ29tcFZhbHMgPSBtYXRDb21wQXJyYXlDcmVhdGVEaWFnb25hbE1hdHJpeChNYXRoLnJvdW5k
KE1hdGguc3FydCh0YXJnZXRDb21wQ291bnQpKSwgZmlyc3RDb21wVmFsdWUpOworICAgICAgICB0
ZXN0TXNnICAgICA9ICJ2YWxpZCAoZGlhZ29uYWwgY29tcG9uZW50cyBzZXQgdG8gdGhlIHNhbWUg
dmFsdWUsIG9mZi1kaWFnb25hbCBjb21wb25lbnRzIHNldCB0byB6ZXJvKSI7CisgICAgICAgIHZh
bGlkICAgICAgID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvLyBOb3Qg
b25lIHNjYWxhciBhcmd1bWVudAorICAgICAgICBpZiAoYXJnRXhwLmxlbmd0aCA9PT0gMSAmJiBh
cmdFeHBbMF1bMF0gPT09ICJtIikgeworICAgICAgICAgIC8vIE9uZSBzaW5nbGUgbWF0cml4IGFy
Z3VtZW50CisgICAgICAgICAgdmFyIGRzdENvbFNpemUgPSBnZXRHTFNMQ29sdW1uU2l6ZSh0YXJn
ZXRUeXBlKTsKKyAgICAgICAgICByZWZDb21wVmFscyA9IG1hdENvbXBBcnJheVNldE1hdHJpeEZy
b21NYXRyaXgoZHN0Q29sU2l6ZSwgZ2V0QXJyYXlXaXRoSW5jcmVhc2luZ1ZhbHVlcyhnZXRUeXBl
Q29kZUNvbXBvbmVudENvdW50KGFyZ0V4cFswXSksIGZpcnN0Q29tcFZhbHVlKSk7CisgICAgICAg
ICAgdGVzdE1zZyAgICAgPSAidmFsaWQsIGNvbXBvbmVudHMgYXQgY29ycmVzcG9uZGluZyBjb2ws
IHJvdyBpbmRpY2VzIGFyZSBzZXQgZnJvbSBhcmd1bWVudCwgb3RoZXIgY29tcG9uZW50cyBhcmUg
c2V0IGZyb20gaWRlbnRpdHkgbWF0cml4IjsKKyAgICAgICAgICB2YWxpZCAgICAgICA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgLy8gTW9yZSB0aGFuIG9uZSBh
cmd1bWVudCBvciBvbmUgYXJndW1lbnQgbm90IG9mIHR5cGUgbWF0cml4CisgICAgICAgICAgLy8g
Q2FuIGJlIHRyZWF0ZWQgaW4gdGhlIHNhbWUgbWFubmVyCisgICAgICAgICAgLy8gQXJndW1lbnRz
IGNhbiBub3QgYmUgb2YgdHlwZSBtYXRyaXgKKyAgICAgICAgICB2YXIgbWF0Rm91bmQgPSBmYWxz
ZTsKKyAgICAgICAgICBmb3IgKHZhciBhYSA9IDA7IGFhIDwgYXJnRXhwLmxlbmd0aDsgKythYSkK
KyAgICAgICAgICAgIGlmIChhcmdFeHBbYWFdWzBdID09PSAibSIpCisgICAgICAgICAgICAgIG1h
dEZvdW5kID0gdHJ1ZTsKKworICAgICAgICAgIGlmIChtYXRGb3VuZCkgeworICAgICAgICAgICAg
cmVmQ29tcFZhbHMgPSBbXTsKKyAgICAgICAgICAgIHRlc3RNc2cgICAgID0gImludmFsaWQsIGFy
Z3VtZW50IGxpc3QgZ3JlYXRlciB0aGFuIG9uZSBjb250YWlucyBtYXRyaXggdHlwZSI7CisgICAg
ICAgICAgICB2YWxpZCAgICAgICA9IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChhcmdDb21wQ291bnRzU3VtIDwgdGFyZ2V0Q29tcENvdW50KSB7
CisgICAgICAgICAgICAgIHJlZkNvbXBWYWxzID0gW107CisgICAgICAgICAgICAgIHRlc3RNc2cg
ICAgID0gImludmFsaWQgKG5vdCBlbm91Z2ggYXJndW1lbnRzKSI7CisgICAgICAgICAgICAgIHZh
bGlkICAgICAgID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgLy8gYXJnQ29tcENvdW50c1N1bSA+PSB0YXJnZXRDb21wQ291bnQKKyAgICAg
ICAgICAgICAgLy8gQWxsIGNvbXBvbmVudHMgc2V0CisgICAgICAgICAgICAgIHZhciBsYXN0QXJn
Rmlyc3RDb21wSXggPSBhcmdDb21wQ291bnRzU3VtIC0gYXJnQ29tcENvdW50c1thcmdDb21wQ291
bnRzLmxlbmd0aCAtIDFdOworCisgICAgICAgICAgICAgIGlmIChsYXN0QXJnRmlyc3RDb21wSXgg
PCB0YXJnZXRDb21wQ291bnQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBjb21wb25lbnQg
b2YgbGFzdCBhcmd1bWVudCBpcyB1c2VkCisgICAgICAgICAgICAgICAgcmVmQ29tcFZhbHMgPSBn
ZXRBcnJheVdpdGhJbmNyZWFzaW5nVmFsdWVzKHRhcmdldENvbXBDb3VudCwgZmlyc3RDb21wVmFs
dWUpOworICAgICAgICAgICAgICAgIHRlc3RNc2cgICAgID0gInZhbGlkIjsKKyAgICAgICAgICAg
ICAgICB2YWxpZCAgICAgICA9IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgY29tcG9uZW50IG9mIGxhc3QgYXJndW1l
bnQgaXMgbm90IHVzZWQKKyAgICAgICAgICAgICAgICByZWZDb21wVmFscyA9IFtdOworICAgICAg
ICAgICAgICAgIHRlc3RNc2cgICAgID0gImludmFsaWQgKHVudXNlZCBhcmd1bWVudCkiOworICAg
ICAgICAgICAgICAgIHZhbGlkICAgICAgID0gZmFsc2U7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKwor
ICAvLyBDaGVjayBpZiBubyBjYXNlIGlzIG1pc3NlZAorICBpZiAodGVzdE1zZyA9PSBudWxsIHx8
IHZhbGlkID09IG51bGwpIHsKKyAgICB3dHUuZXJyb3IoIkdMU0xDb25zdHJ1Y3RvclRlc3RzR2Vu
ZXJhdG9yLmdldENvbnN0cnVjdG9yRXhwcmVzc2lvbkluZm8oKSwgaW5mbyBub3Qgc2V0Iik7Cisg
ICAgZGVidWdnZXI7CisgIH0KKworICByZXR1cm4geworICAgIHJlZkNvbXBWYWxzOiByZWZDb21w
VmFscywKKyAgICB0ZXN0TXNnOiAgICAgdGVzdE1zZywKKyAgICB2YWxpZDogICAgICAgdmFsaWQK
KyAgfTsKK30KKworCisvLyBSZXR1cm5zIGEgdmVydGV4IHNoYWRlciB0ZXN0Y2FzZSBhbmQgYSBm
cmFnbWVudCBzaGFkZXIgdGVzdGNhc2UKK2Z1bmN0aW9uIGdldFZlcnRleEFuZEZyYWdtZW50U2hh
ZGVyVGVzdENhc2UodGFyZ2V0VHlwZSwgYXJnRXhwKSB7CisgIHZhciBmaXJzdENvbXBWYWx1ZSA9
IDA7CisgIGlmIChpc0dMU0xUeXBlTWF0cml4KHRhcmdldFR5cGUpKSB7CisgICAgLy8gVXNlIHZh
bHVlIGRpZmZlcmVudCBmcm9tIDAgYW5kIDEKKyAgICAvLyAwIGFuZCAxIGFyZSB2YWx1ZXMgdXNl
ZCBieSBtYXRyaXggY29uc3RydWN0ZWQgZnJvbSBhIG1hdHJpeCBvciBhIHNpbmdsZSBzY2FsYXIK
KyAgICBmaXJzdENvbXBWYWx1ZSA9IDI7CisgIH0KKworICB2YXIgYXJnQ29kZSA9IGdldFRlc3RT
aGFkZXJQYXJ0cyAgICAgICAgICAodGFyZ2V0VHlwZSwgYXJnRXhwLCBmaXJzdENvbXBWYWx1ZSk7
CisgIHZhciBleHBJbmZvID0gZ2V0Q29uc3RydWN0b3JFeHByZXNzaW9uSW5mbyh0YXJnZXRUeXBl
LCBhcmdFeHAsIGZpcnN0Q29tcFZhbHVlKTsKKworICB2YXIgc3Vic3RpdHV0aW9ucyA9IHsKKyAg
ICB0eXBlOiAgICAgICAgICB0YXJnZXRUeXBlLAorICAgIGVycm9yQm91bmQ6ICAgIChnZXRHTFNM
U2NhbGFyVHlwZSh0YXJnZXRUeXBlKSA9PT0gImZsb2F0IikgPyAiY29uc3QgZmxvYXQgZXJyb3JC
b3VuZCA9IDEuMEUtNTsiIDogIiIsCisgICAgYXJnc0xpc3Q6ICAgICAgYXJnQ29kZS5hcmdzTGlz
dCwKKyAgICBhcmdzQ29uc3RyOiAgICBhcmdDb2RlLmFyZ3NDb25zdHIsCisgICAgY2hlY2tDb21w
VmFsczogZ2V0Q29tcG9uZW50VmFsaWRhdGlvbkV4cHJlc3Npb24oZXhwSW5mby5yZWZDb21wVmFs
cywgdGFyZ2V0VHlwZSkKKyAgfTsKKworICByZXR1cm4gWyB7CisgICAgICAvLyBUZXN0IGNvbnN0
cnVjdG9yIGFyZ3VtZW50IGxpc3QgaW4gdmVydGV4IHNoYWRlcgorICAgICAgdlNoYWRlclNvdXJj
ZTogIHd0dS5yZXBsYWNlUGFyYW1zKGNvbnN0cnVjdG9yVmVydGV4VGVtcGxhdGUsIHN1YnN0aXR1
dGlvbnMpLAorICAgICAgdlNoYWRlclN1Y2Nlc3M6IGV4cEluZm8udmFsaWQsCisgICAgICBmU2hh
ZGVyU291cmNlOiAgcGFzc1Rocm91Z2hDb2xvckZyYWdtZW50U2hhZGVyLAorICAgICAgZlNoYWRl
clN1Y2Nlc3M6IHRydWUsCisgICAgICBsaW5rU3VjY2VzczogICAgZXhwSW5mby52YWxpZCwKKyAg
ICAgIHBhc3NNc2c6ICAgICAgICAiVmVydGV4IHNoYWRlciA6ICIgKyBhcmdDb2RlLnR5cGVFeHAg
KyAiLCAiICsgZXhwSW5mby50ZXN0TXNnLAorICAgICAgcmVuZGVyOiAgICAgICAgIGV4cEluZm8u
dmFsaWQKKyAgICB9LCB7CisgICAgICAvLyBUZXN0IGNvbnN0cnVjdG9yIGFyZ3VtZW50IGxpc3Qg
aW4gZnJhZ21lbnQgc2hhZGVyCisgICAgICBmU2hhZGVyU291cmNlOiAgd3R1LnJlcGxhY2VQYXJh
bXMoY29uc3RydWN0b3JGcmFnbWVudFRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKSwKKyAgICAgIGZT
aGFkZXJTdWNjZXNzOiBleHBJbmZvLnZhbGlkLAorICAgICAgbGlua1N1Y2Nlc3M6ICAgIGV4cElu
Zm8udmFsaWQsCisgICAgICBwYXNzTXNnOiAgICAgICAgIkZyYWdtZW50IHNoYWRlciA6ICIgKyBh
cmdDb2RlLnR5cGVFeHAgKyAiLCAiICsgZXhwSW5mby50ZXN0TXNnLAorICAgICAgcmVuZGVyOiAg
ICAgICAgIGV4cEluZm8udmFsaWQKKyAgICB9CisgIF07Cit9CisKKworLy8gSW5jcmVtZW50aW5n
IHRoZSBhcmd1bWVudCBleHByZXNzaW9ucworLy8gVXRpbGl0eSBvYmplY3Qgd2hpY2ggZGVmaW5l
cyB0aGUgb3JkZXIgb2YgaW5jcmVtZW50aW5nIHRoZSBhcmd1bWVudCB0eXBlcwordmFyIHR5cGVD
b2RlSW5jcmVtZW50ZXIgPSB7CisgIHM6ICAgICB7IHR5cGVDb2RlOiAidjIiLCBvcmRlcjogMCB9
LAorICB2MjogICAgeyB0eXBlQ29kZTogInYzIiwgb3JkZXI6IDEgfSwKKyAgdjM6ICAgIHsgdHlw
ZUNvZGU6ICJ2NCIsIG9yZGVyOiAyIH0sCisgIHY0OiAgICB7IHR5cGVDb2RlOiAibTIiLCBvcmRl
cjogMyB9LAorICBtMjogICAgeyB0eXBlQ29kZTogIm0zIiwgb3JkZXI6IDQgfSwKKyAgbTM6ICAg
IHsgdHlwZUNvZGU6ICJtNCIsIG9yZGVyOiA1IH0sCisgIG00OiAgICB7IHR5cGVDb2RlOiAicyIs
ICBvcmRlcjogNiB9LAorICBmaXJzdDogInMiCit9CisKKworLy8gUmV0dXJucyB0aGUgbmV4dCBh
cmd1bWVudCBzZXF1ZW5jZQorZnVuY3Rpb24gZ2V0TmV4dEFyZ3VtZW50U2VxdWVuY2UoaW5TZXEp
IHsKKyAgdmFyIG5leHRTZXE7CisgIGlmIChpblNlcS5sZW5ndGggPT09IDApIHsKKyAgICAvLyBD
dXJyZW50IGFyZ3VtZW50IHNlcXVlbmNlIGlzIGVtcHR5LCBhZGQgZmlyc3QgYXJndW1lbnQKKyAg
ICBuZXh0U2VxID0gW3R5cGVDb2RlSW5jcmVtZW50ZXIuZmlyc3RdOworICB9CisgIGVsc2Ugewor
ICAgIG5leHRTZXEgPSBuZXcgQXJyYXkoaW5TZXEubGVuZ3RoKTsKKyAgICB2YXIgb3ZlcmZsb3cg
PSB0cnVlOworICAgIGZvciAodmFyIGFhID0gMDsgYWEgPCBpblNlcS5sZW5ndGg7ICsrYWEpIHsK
KyAgICAgIHZhciBjdXJyQXJnID0gaW5TZXFbYWFdOworICAgICAgaWYgKG92ZXJmbG93KSB7Cisg
ICAgICAgIC8vIEluY3JlbWVudCB0aGUgY3VycmVudCBhcmd1bWVudCB0eXBlCisgICAgICAgIHZh
ciBuZXh0QXJnID0gdHlwZUNvZGVJbmNyZW1lbnRlcltjdXJyQXJnXS50eXBlQ29kZTsKKyAgICAg
ICAgbmV4dFNlcVthYV0gPSBuZXh0QXJnOworICAgICAgICBvdmVyZmxvdyA9IChuZXh0QXJnID09
PSB0eXBlQ29kZUluY3JlbWVudGVyLmZpcnN0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICAvLyBDb3B5IHJlbWFpbmRlciBvZiBzZXF1ZW5jZQorICAgICAgICBuZXh0U2VxW2FhXSA9
IGN1cnJBcmc7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICBu
ZXh0U2VxLnB1c2godHlwZUNvZGVJbmNyZW1lbnRlci5maXJzdCk7CisgICAgfQorICB9CisKKyAg
cmV0dXJuIG5leHRTZXE7Cit9CisKKworLy8gUmV0dXJucyB0cnVlIGlmIHR3byBhcmd1bWVudCBl
eHByZXNzaW9ucyBhcmUgZXF1YWwKK2Z1bmN0aW9uIGFyZUFyZ0V4cEVxdWFsKGV4cEEsIGV4cEIp
IHsKKyAgaWYgKGV4cEEubGVuZ3RoICE9PSBleHBCLmxlbmd0aCkKKyAgICByZXR1cm4gZmFsc2U7
CisKKyAgZm9yICh2YXIgYWEgPSAwOyBhYSA8IGV4cEEubGVuZ3RoOyArK2FhKQorICAgIGlmIChl
eHBBW2FhXSAhPT0gZXhwQlthYV0pCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHRy
dWU7Cit9CisKKworLy8gUmV0dXJucyB0cnVlIGlmIGZpcnN0IGFyZ3VtZW50IGV4cHJlc3Npb24g
aXMgc21hbGxlcgorLy8gKGNvbWVzIGJlZm9yZSB0aGUgc2Vjb25kIG9uZSBpbiBpdGVyYXRpbmcg
b3JkZXIpCisvLyBjb21wYXJlZCB0byB0aGUgc2Vjb25kIGFyZ3VtZW50IGV4cHJlc3Npb24KK2Z1
bmN0aW9uIGlzQXJnRXhwU21hbGxlck9yRXF1YWwoYXJnRXhwQSwgYXJnRXhwQikgeworICB2YXIg
YUxlbiA9IGFyZ0V4cEEubGVuZ3RoOworICB2YXIgYkxlbiA9IGFyZ0V4cEIubGVuZ3RoOworICBp
ZiAoYUxlbiAhPT0gYkxlbikKKyAgICByZXR1cm4gKGFMZW4gPCBiTGVuKTsKKworICAvLyBBcmd1
bWVudCB0eXBlIGV4cHJlc3Npb24gbGVuZ3RocyBhcmUgZXF1YWwKKyAgZm9yICh2YXIgYWEgPSBh
TGVuIC0gMTsgYWEgPj0gMDsgLS1hYSkgeworICAgIHZhciBhcmdBID0gYXJnRXhwQVthYV07Cisg
ICAgdmFyIGFyZ0IgPSBhcmdFeHBCW2FhXTsKKworICAgIGlmIChhcmdBICE9PSBhcmdCKSB7Cisg
ICAgICB2YXIgYU9yZGVyID0gdHlwZUNvZGVJbmNyZW1lbnRlclthcmdBXS5vcmRlcjsKKyAgICAg
IHZhciBiT3JkZXIgPSB0eXBlQ29kZUluY3JlbWVudGVyW2FyZ0JdLm9yZGVyOworICAgICAgaWYg
KGFPcmRlciAhPT0gYk9yZGVyKQorICAgICAgICByZXR1cm4gKGFPcmRlciA8IGJPcmRlcik7Cisg
ICAgfQorICB9CisKKyAgLy8gQXJndW1lbnQgdHlwZSBleHByZXNzaW9ucyBhcmUgZXF1YWwKKyAg
cmV0dXJuIHRydWU7Cit9CisKKworLy8gUmV0dXJucyB0aGUgbmV4dCBhcmd1bWVudCBleHByZXNz
aW9uIGZyb20gc2VxdWVuY2Ugc2V0CisvLyBSZXR1cm5zIG51bGwgaWYgZW5kIGlzIHJlYWNoZWQK
K2Z1bmN0aW9uIGdldE5leHRBcmd1bWVudEV4cHJlc3Npb24odGVzdEV4cCwgdGVzdFNldCkgewor
ICB2YXIgdGVzdEludGVydmFsID0gdGVzdFNldFt0ZXN0RXhwLml4XTsKKworICBpZiAoYXJlQXJn
RXhwRXF1YWwodGVzdEV4cC5hcmdFeHAsIHRlc3RJbnRlcnZhbFsxXSkpIHsKKyAgICAvLyBFbmQg
b2YgY3VycmVudCBpbnRlcnZhbCByZWFjaGVkCisgICAgaWYgKHRlc3RFeHAuaXggPT09IHRlc3RT
ZXQubGVuZ3RoIC0gMSkgeworICAgICAgLy8gRW5kIG9mIHNldCByZWFjaGVkCisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLyBSZXR1cm4gZmlyc3QgYXJndW1l
bnQgZXhwcmVzc2lvbiBvZiBuZXh0IGludGVydmFsCisgICAgICB2YXIgbmV4dEl4ID0gdGVzdEV4
cC5peCArIDE7CisgICAgICByZXR1cm4geyBpeDogbmV4dEl4LCBhcmdFeHA6IHRlc3RTZXRbbmV4
dEl4XVswXSB9OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICAvLyBSZXR1cm4gbmV4dCBleHBy
ZXNzaW9uIGluIGN1cnJlbnQgaW50ZXJ2YWwKKyAgICByZXR1cm4geyBpeDogdGVzdEV4cC5peCwg
YXJnRXhwOiBnZXROZXh0QXJndW1lbnRTZXF1ZW5jZSh0ZXN0RXhwLmFyZ0V4cCkgfTsKKyAgfQor
fQorCisKKy8vIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHBhcnRzIGluIHRoZSBzdHJpbmcgc2Vw
YXJhdGVkIGJ5IGNvbW1hcyBhbmQgd2l0aCB0aGUgd2hpdGUgc3BhY2UgdHJpbW1lZAorZnVuY3Rp
b24gY29udmVydENzdlRvQXJyYXkoc3RyKSB7CisgIC8vIENoZWNrcyB0eXBlIGNvZGVzIGluIGlu
cHV0CisgIGZ1bmN0aW9uIGNoZWNrSW5wdXQoZWwsIGl4LCBhcnIpIHsKKyAgICB2YXIgdHlwZUNv
ZGUgPSBlbC50cmltKCk7CisgICAgaWYgKCEodHlwZUNvZGUgaW4gdHlwZUNvZGVJbmNyZW1lbnRl
cikgJiYgdHlwZUNvZGUgIT09ICJmaXJzdCIpIHsKKyAgICAgIHd0dS5lcnJvcigiR0xTTENvbnN0
cnVjdG9yVGVzdHNHZW5lcmF0b3IuY29udmVydENzdlRvQXJyYXkoKSwgdW5rbm93biB0eXBlIGNv
ZGUiICsgdHlwZUNvZGUpOworICAgICAgZGVidWdnZXI7CisgICAgfQorCisgICAgYXJyW2l4XSA9
IHR5cGVDb2RlOworICB9CisKKyAgdmFyIHNwQXJyID0gc3RyLnNwbGl0KCIsIik7CisKKyAgLy8g
Q29udmVydCBlbXB0eSBzdHJpbmcgdG8gZW1wdHkgYXJyYXkKKyAgaWYgKHNwQXJyLmxlbmd0aCA9
PT0gMSAmJiBzcEFyclswXS50cmltKCkgPT09ICIiKQorICAgIHNwQXJyID0gW107CisKKyAgc3BB
cnIuZm9yRWFjaChjaGVja0lucHV0KTsKKworICByZXR1cm4gc3BBcnI7Cit9CisKKworLy8gUHJv
Y2Vzc2VzIHRoZSBzZXQgb2Ygc3BlY2lmaWVkIHRlc3Qgc2VxdWVuY2VzCitmdW5jdGlvbiBwcm9j
ZXNzSW5wdXRzKHRlc3RTZXF1ZW5jZXMpIHsKKyAgdmFyIHRlc3RTZXQgPSBuZXcgQXJyYXkodGVz
dFNlcXVlbmNlcy5sZW5ndGgpOworICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGVzdFNlcXVlbmNl
cy5sZW5ndGg7ICsrdHQpIHsKKyAgICB2YXIgaW50ZXJ2YWwgPSB0ZXN0U2VxdWVuY2VzW3R0XTsK
KyAgICB2YXIgYm91bmRzID0gaW50ZXJ2YWwuc3BsaXQoIi0iKTsKKyAgICB2YXIgYmVnaW4gPSBj
b252ZXJ0Q3N2VG9BcnJheShib3VuZHNbMF0pOworICAgIHZhciBlbmQgICA9IGNvbnZlcnRDc3ZU
b0FycmF5KGJvdW5kc1tib3VuZHMubGVuZ3RoIC0gMV0pOworCisgICAgLy8gQ2hlY2sgaWYgaW50
ZXJ2YWwgaXMgdmFsaWQKKyAgICBpZiAoIWlzQXJnRXhwU21hbGxlck9yRXF1YWwoYmVnaW4sIGVu
ZCkpIHsKKyAgICAgIHd0dS5lcnJvcigiR0xTTENvbnN0cnVjdG9yVGVzdHNHZW5lcmF0b3IucHJv
Y2Vzc0lucHV0cygpLCBpbnRlcnZhbCBub3QgdmFsaWQiKTsKKyAgICAgIGRlYnVnZ2VyOworICAg
IH0KKworICAgIHRlc3RTZXRbdHRdID0gWyBiZWdpbiwgZW5kIF07CisgIH0KKworICByZXR1cm4g
dGVzdFNldDsKK30KKworCisvKioKKyAqIFJldHVybnMgbGlzdCBvZiB0ZXN0IGNhc2VzIGZvciB2
ZWN0b3IgdHlwZXMKKyAqIEFsbCBjb21iaW5hdGlvbnMgb2YgYXJndW1lbnRzIHVwIHRvIG9uZSB1
bnVzZWQgYXJndW1lbnQgb2Ygb25lIGNvbXBvbmVudCBhcmUgdGVzdGVkCisgKiBAcGFyYW0ge3Rh
cmdldFR5cGV9IE5hbWUgb2YgdGFyZ2V0IHR5cGUgdG8gdGVzdCB0aGUgY29uc3RydWN0b3IgZXhw
cmVzc2lvbnMgb24KKyAqIEBwYXJhbSB7dGVzdFNldH0gICAgU2V0IG9mIGludGVydmFscyBvZiBh
cmd1bWVudCBzZXF1ZW5jZXMgdG8gdGVzdAorICovCitmdW5jdGlvbiBnZXRDb25zdHJ1Y3RvclRl
c3RzKHRhcmdldFR5cGUsIHRlc3RTZXF1ZW5jZXMpIHsKKyAgLy8gTGlzdCBvZiB0ZXN0cyB0byBy
ZXR1cm4KKyAgdmFyIHRlc3RJbmZvcyA9IFtdOworCisgIC8vIExpc3Qgb2YgYXJndW1lbnQgdHlw
ZXMKKyAgdmFyIHRlc3RTZXQgPSBwcm9jZXNzSW5wdXRzKHRlc3RTZXF1ZW5jZXMpOworICB2YXIg
dGVzdEV4cCA9IHsgaXg6IDAsIGFyZ0V4cDogdGVzdFNldFswXVswXSB9OworCisgIGRvIHsKKyAg
ICAvLyBBZGQgb25lIHZlcnRleCBzaGFkZXIgdGVzdCBjYXNlIGFuZCBvbmUgZnJhZ21lbnQgc2hh
ZGVyIHRlc3QgY2FzZQorICAgIHRlc3RJbmZvcyA9IHRlc3RJbmZvcy5jb25jYXQoZ2V0VmVydGV4
QW5kRnJhZ21lbnRTaGFkZXJUZXN0Q2FzZSh0YXJnZXRUeXBlLCB0ZXN0RXhwLmFyZ0V4cCkpOwor
CisgICAgLy8gR2VuZXJhdGUgbmV4dCBhcmd1bWVudCBleHByZXNzaW9uCisgICAgdGVzdEV4cCA9
IGdldE5leHRBcmd1bWVudEV4cHJlc3Npb24odGVzdEV4cCwgdGVzdFNldCk7CisgIH0KKyAgd2hp
bGUgKHRlc3RFeHAgIT0gbnVsbCk7CisKKyAgcmV0dXJuIHRlc3RJbmZvczsKK30KKworCisvLyBS
ZXR1cm5zIGRlZmF1bHQgdGVzdCBhcmd1bWVudCBleHByZXNzaW9uIHNldAorLy8gRm9yIGRldGFp
bHMgb24gaW5wdXQgZm9ybWF0IDogc2VlIGJvdHRvbSBvZiBmaWxlCitmdW5jdGlvbiBnZXREZWZh
dWx0VGVzdFNldCh0YXJnZXRUeXBlKSB7CisgIHN3aXRjaCh0YXJnZXRUeXBlKSB7CisgICAgY2Fz
ZSAidmVjMiI6CisgICAgY2FzZSAiaXZlYzIiOgorICAgIGNhc2UgImJ2ZWMyIjoKKyAgICAgIHJl
dHVybiBbCisgICAgICAgIC8vIE5vIGFyZ3VtZW50cyBhbmQgYWxsIHNpbmdsZSBhcmd1bWVudCBl
eHByZXNzaW9ucworICAgICAgICAiIC0gbTQiLAorCisgICAgICAgIC8vIEFsbCB0d28gYXJndW1l
bnQgZXhwcmVzc2lvbnMgd2l0aCBhIHNjYWxhciBhcyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAg
InMsIHMgLSBtNCwgcyIsCisKKyAgICAgICAgLy8gQWxsIHR3byBhcmd1bWVudHMgZXhwcmVzc2lv
bnMgd2l0aCBhIHNjYWxhciBhcyBmaXJzdCBhcmd1bWVudAorICAgICAgICAicywgdjIiLCAicywg
djMiLCAicywgdjQiLCAicywgbTIiLCAicywgbTMiLCAicywgbTQiLAorCisgICAgICAgIC8vIFRo
cmVlIGFyZ3VtZW50IGV4cHJlc3Npb24KKyAgICAgICAgInMsIHMsIHMiCisgICAgICBdOworCisg
ICAgY2FzZSAidmVjMyI6CisgICAgY2FzZSAiaXZlYzMiOgorICAgIGNhc2UgImJ2ZWMzIjoKKyAg
ICAgIHJldHVybiBbCisgICAgICAgIC8vIE5vIGFyZ3VtZW50cyBhbmQgYWxsIHNpbmdsZSBhcmd1
bWVudCBleHByZXNzaW9ucworICAgICAgICAiIC0gbTQiLAorCisgICAgICAgIC8vIEFsbCB0d28g
YXJndW1lbnQgZXhwcmVzc2lvbnMgd2l0aCBhIHNjYWxhciBhcyBzZWNvbmQgYXJndW1lbnQKKyAg
ICAgICAgInMsIHMgLSBtNCwgcyIsCisKKyAgICAgICAgLy8gQWxsIHR3byBhcmd1bWVudCBleHBy
ZXNzaW9ucyB3aXRoIGEgc2NhbGFyIGFzIGZpcnN0IGFyZ3VtZW50CisgICAgICAgICJzLCB2MiIs
ICJzLCB2MyIsICJzLCB2NCIsICJzLCBtMiIsICJzLCBtMyIsICJzLCBtNCIsCisKKyAgICAgICAg
Ly8gQWxsIHRocmVlIGFyZ3VtZW50IGV4cHJlc3Npb25zIHdpdGggdHdvIHNjYWxhcnMgYXMgc2Vj
b25kIGFuZCB0aGlyZCBhcmd1bWVudAorICAgICAgICAicywgcywgcyAtIG00LCBzLCBzIiwKKwor
ICAgICAgICAvLyBBbGwgdGhyZWUgYXJndW1lbnQgZXhwcmVzc2lvbnMgd2l0aCB0d28gc2NhbGFy
cyBhcyBmaXJzdCBhbmQgc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICJzLCBzLCB2MiIsICJzLCBz
LCB2MyIsICJzLCBzLCB2NCIsICJzLCBzLCBtMiIsICJzLCBzLCBtMyIsICJzLCBzLCBtNCIsCisK
KyAgICAgICAgLy8gRm91ciBhcmd1bWVudCBleHByZXNzaW9uCisgICAgICAgICJzLCBzLCBzLCBz
IgorICAgICAgXTsKKworICAgIGNhc2UgInZlYzQiOgorICAgIGNhc2UgIml2ZWM0IjoKKyAgICBj
YXNlICJidmVjNCI6CisgICAgY2FzZSAibWF0MiI6CisgICAgICByZXR1cm4gWworICAgICAgICAv
LyBObyBhcmd1bWVudHMgYW5kIGFsbCBzaW5nbGUgYXJndW1lbnQgZXhwcmVzc2lvbnMKKyAgICAg
ICAgIiAtIG00IiwKKworICAgICAgICAvLyBBbGwgdHdvIGFyZ3VtZW50IGV4cHJlc3Npb25zIHdp
dGggYSBzY2FsYXIgYXMgc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICJzLCBzIC0gbTQsIHMiLAor
CisgICAgICAgIC8vIEFsbCB0d28gYXJndW1lbnQgZXhwcmVzc2lvbnMgd2l0aCBhIHNjYWxhciBh
cyBmaXJzdCBhcmd1bWVudAorICAgICAgICAicywgdjIiLCAicywgdjMiLCAicywgdjQiLCAicywg
bTIiLCAicywgbTMiLCAicywgbTQiLAorCisgICAgICAgIC8vIEFsbCB0aHJlZSBhcmd1bWVudCBl
eHByZXNzaW9ucyB3aXRoIHR3byBzY2FsYXJzIGFzIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnQK
KyAgICAgICAgInMsIHMsIHMgLSBtNCwgcywgcyIsCisKKyAgICAgICAgLy8gQWxsIHRocmVlIGFy
Z3VtZW50IGV4cHJlc3Npb25zIHdpdGggdHdvIHNjYWxhcnMgYXMgZmlyc3QgYW5kIHNlY29uZCBh
cmd1bWVudAorICAgICAgICAicywgcywgdjIiLCAicywgcywgdjMiLCAicywgcywgdjQiLCAicywg
cywgbTIiLCAicywgcywgbTMiLCAicywgcywgbTQiLAorCisgICAgICAgIC8vIEFsbCBmb3VyIGFy
Z3VtZW50IGV4cHJlc3Npb25zIHdpdGggdGhyZWUgc2NhbGFycyBhcyBzZWNvbmQsIHRoaXJkIGFu
ZCBmb3VydGggYXJndW1lbnQKKyAgICAgICAgInMsIHMsIHMsIHMgLSBtNCwgcywgcywgcyIsCisK
KyAgICAgICAgLy8gQWxsIGZvdXIgYXJndW1lbnQgZXhwcmVzc2lvbnMgd2l0aCB0aHJlZSBzY2Fs
YXJzIGFzIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50CisgICAgICAgICJzLCBzLCBz
LCB2MiIsICJzLCBzLCBzLCB2MyIsICJzLCBzLCBzLCB2NCIsICJzLCBzLCBzLCBtMiIsICJzLCBz
LCBzLCBtMyIsICJzLCBzLCBzLCBtNCIsCisKKyAgICAgICAgLy8gRml2ZSBhcmd1bWVudCBleHBy
ZXNzaW9uCisgICAgICAgICJzLCBzLCBzLCBzLCBzIgorICAgICAgXTsKKworICAgIGNhc2UgIm1h
dDMiOgorICAgIGNhc2UgIm1hdDQiOgorICAgICAgcmV0dXJuIFsKKyAgICAgICAgLy8gTm8gYXJn
dW1lbnRzIGFuZCBhbGwgc2luZ2xlIGFyZ3VtZW50IGV4cHJlc3Npb25zCisgICAgICAgICIgLSBt
NCIsCisKKyAgICAgICAgLy8gQWxsIHR3byBhcmd1bWVudCBleHByZXNzaW9ucyB3aXRoIGEgc2Nh
bGFyIGFzIHNlY29uZCBhcmd1bWVudAorICAgICAgICAicywgcyAtIG00LCBzIiwKKworICAgICAg
ICAvLyBBbGwgdHdvIGFyZ3VtZW50IGV4cHJlc3Npb25zIHdpdGggYSBzY2FsYXIgYXMgZmlyc3Qg
YXJndW1lbnQKKyAgICAgICAgInMsIHYyIiwgInMsIHYzIiwgInMsIHY0IiwgInMsIG0yIiwgInMs
IG0zIiwgInMsIG00IiwKKworICAgICAgICAvLyBTZXZlcmFsIGFyZ3VtZW50IHNlcXVlbmNlcwor
ICAgICAgICAidjQsIHMsIHY0IiwgInY0LCBzLCB2MywgdjIiLCAidjQsIHY0LCB2MywgdjIiLCAi
djQsIHY0LCB2NCwgdjQiLCAidjIsIHYyLCB2MiwgdjIsIHYyIiwgInYyLCB2MiwgdjIsIHYyLCB2
MiwgdjIsIHYyLCB2MiIsCisgICAgICAgICJ2MywgdjMsIHYzIiwgInYzLCB2MywgdjMsIHMiLCAi
djMsIHYzLCB2MywgdjMsIHYzLCBzIiwgInYzLCB2MywgdjMsIHYzLCB2MywgcywgcyIsCisgICAg
ICBdOworICB9Cit9CisKKworLy8gUmV0dXJuIHB1YmxpY3MKK3JldHVybiB7CisgIGdldENvbnN0
cnVjdG9yVGVzdHM6IGdldENvbnN0cnVjdG9yVGVzdHMsCisgIGdldERlZmF1bHRUZXN0U2V0OiAg
IGdldERlZmF1bHRUZXN0U2V0Cit9OworCit9KCkpOworCisKKy8vIElucHV0IGlzIGFuIGFycmF5
IG9mIGludGVydmFscyBvZiBhcmd1bWVudCB0eXBlcworLy8gVGhlIGdlbmVyYXRlZCB0ZXN0IGFy
Z3VtZW50IHNlcXVlbmNlcyBhcmUgZnJvbSAoaW5jbHVkaW5nKSB0aGUgbG93ZXIgaW50ZXJ2YWwg
Ym91bmRhcnkKKy8vIHVudGlsIChpbmNsdWRpbmcpIHRoZSB1cHBlciBib3VuZGFyeQorLy8gQ29k
aW5nIGFuZCBvcmRlciBvZiB0aGUgZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzIDoKKy8vIHMgIDog
c2NhbGFyCisvLyB2MiA6IHZlYzIKKy8vIHYzIDogdmVjMworLy8gdjQgOiB2ZWM0CisvLyBtMiA6
IG1hdDIKKy8vIG0zIDogbWF0MworLy8gbTQgOiBtYXQ0CisKKy8vIE9uZSBpbnRlcnZhbCBpcyBw
dXQgaW4gb25lIHN0cmluZworLy8gTG93IGFuZCBoaWdoIGJvdW5kIGFyZSBzZXBhcmF0ZWQgYnkg
YSBkYXNoLgorLy8gSWYgdGhlcmUgaXMgbm8gZGFzaCBpdCBpcyByZWdhcmRlZCBhcyBhbiBpbnRl
cnZhbCBvZiBvbmUgZXhwcmVzc2lvbgorLy8gVGhlIGluZGl2aWR1YWwgYXJndW1lbnQgY29kZXMg
YXJlIHNlcGFyYXRlZCBieSBjb21tYXMKKy8vIFRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcmUg
aW5jcmVtZW50ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0CisvLyBUaGUgbGVmdCBtb3N0IGFyZ3VtZW50
IGlzIHRoZSBvbmUgd2hpY2ggaXMgaW5jcmVtZW50ZWQgZmlyc3QKKy8vIE9uY2UgdGhlIGxlZnQg
bW9zdCBhcmd1bWVudHMgd3JhcHMgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBpbmNyZWFzZWQKKy8v
IEV4YW1wbGVzIDoKKy8vICJzIC0gbTQiICAgICAgICA6IEFsbCBzaW5nbGUgYXJndW1lbnRzIGZy
b20gc2NhbGFyIHVwIHRvIChpbmNsdWRpbmcpIG1hdDQKKy8vICJtMiwgcyAtIG00LCBzIiA6IEFs
bCB0d28gYXJndW1lbnQgZXhwcmVzc2lvbnMgd2l0aCBhIG1hdHJpeCBhcmd1bWVudCBhcyBmaXJz
dCBhcmd1bWVudCBhbmQgYSBzY2FsYXIgYXMgc2Vjb25kIGFyZ3VtZW50CisvLyAiIC0gbTQsIG00
IiAgICAgOiBUaGUgZW1wdHkgYXJndW1lbnQsIGFsbCBvbmUgYXJndW1lbnRzIGFuZCBhbGwgdHdv
IGFyZ3VtZW50IGV4cHJlc3Npb25zCisvLyAibTIsIHMsIHYzLCBtNCIgOiBPbmUgNCBhcmd1bWVu
dCBleHByZXNzaW9uIDogbWF0Miwgc2NhbGFyLCB2ZWMzLCBtYXQ0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9nbHNsLWdlbmVyYXRv
ci5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2ds
c2wtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYjY1YmNiNGI4NzAxNWNiMTE0YjlmYjI2OTMy
MGM3ZWE1ODVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9nbHNsLWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDEyMzQg
QEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KK0dMU0xHZW5lcmF0
b3IgPSAoZnVuY3Rpb24oKSB7CisKK3ZhciB2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSA9IFsKKyAgImF0
dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsiLAorICAiIiwKKyAgInZhcnlpbmcgdmVjNCB2Q29sb3I7
IiwKKyAgIiIsCisgICIkKGV4dHJhKSIsCisgICIkKGVtdSkiLAorICAiIiwKKyAgInZvaWQgbWFp
bigpIiwKKyAgInsiLAorICAiICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247IiwKKyAgIiAgIHZl
YzIgdGV4Y29vcmQgPSB2ZWMyKGFQb3NpdGlvbi54eSAqIDAuNSArIHZlYzIoMC41LCAwLjUpKTsi
LAorICAiICAgdmVjNCBjb2xvciA9IHZlYzQoIiwKKyAgIiAgICAgICB0ZXhjb29yZCwiLAorICAi
ICAgICAgIHRleGNvb3JkLnggKiB0ZXhjb29yZC55LCIsCisgICIgICAgICAgKDEuMCAtIHRleGNv
b3JkLngpICogdGV4Y29vcmQueSAqIDAuNSArIDAuNSk7IiwKKyAgIiAgICQodGVzdCkiLAorICAi
fSIKK10uam9pbigiXG4iKTsKKwordmFyIGZyYWdtZW50U2hhZGVyVGVtcGxhdGUgPSBbCisgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsiLAorICAiIiwKKyAgInZhcnlpbmcgdmVjNCB2Q29sb3I7
IiwKKyAgIiIsCisgICIkKGV4dHJhKSIsCisgICIkKGVtdSkiLAorICAiIiwKKyAgInZvaWQgbWFp
bigpIiwKKyAgInsiLAorICAiICAgJCh0ZXN0KSIsCisgICJ9IgorXS5qb2luKCJcbiIpOworCit2
YXIgYmFzZVZlcnRleFNoYWRlciA9IFsKKyAgImF0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsiLAor
ICAiIiwKKyAgInZhcnlpbmcgdmVjNCB2Q29sb3I7IiwKKyAgIiIsCisgICJ2b2lkIG1haW4oKSIs
CisgICJ7IiwKKyAgIiAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOyIsCisgICIgICB2ZWMyIHRl
eGNvb3JkID0gdmVjMihhUG9zaXRpb24ueHkgKiAwLjUgKyB2ZWMyKDAuNSwgMC41KSk7IiwKKyAg
IiAgIHZDb2xvciA9IHZlYzQoIiwKKyAgIiAgICAgICB0ZXhjb29yZCwiLAorICAiICAgICAgIHRl
eGNvb3JkLnggKiB0ZXhjb29yZC55LCIsCisgICIgICAgICAgKDEuMCAtIHRleGNvb3JkLngpICog
dGV4Y29vcmQueSAqIDAuNSArIDAuNSk7IiwKKyAgIn0iCitdLmpvaW4oIlxuIik7CisKK3ZhciBi
YXNlVmVydGV4U2hhZGVyV2l0aENvbG9yID0gWworICAiYXR0cmlidXRlIHZlYzQgYVBvc2l0aW9u
OyIsCisgICJhdHRyaWJ1dGUgdmVjNCBhQ29sb3I7IiwKKyAgIiIsCisgICJ2YXJ5aW5nIHZlYzQg
dkNvbG9yOyIsCisgICIiLAorICAidm9pZCBtYWluKCkiLAorICAieyIsCisgICIgICBnbF9Qb3Np
dGlvbiA9IGFQb3NpdGlvbjsiLAorICAiICAgdkNvbG9yID0gYUNvbG9yOyIsCisgICJ9IgorXS5q
b2luKCJcbiIpOworCit2YXIgYmFzZUZyYWdtZW50U2hhZGVyID0gWworICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7IiwKKyAgInZhcnlpbmcgdmVjNCB2Q29sb3I7IiwKKyAgIiIsCisgICJ2b2lk
IG1haW4oKSIsCisgICJ7IiwKKyAgIiAgIGdsX0ZyYWdDb2xvciA9IHZDb2xvcjsiLAorICAifSIK
K10uam9pbigiXG4iKTsKKwordmFyIHR5cGVzID0gWworICB7IHR5cGU6ICJmbG9hdCIsCisgICAg
Y29kZTogWworICAgICAgImZsb2F0ICQoZnVuYylfZW11KCQoYXJncykpIHsiLAorICAgICAgIiAg
cmV0dXJuICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4i
KQorICB9LAorICB7IHR5cGU6ICJ2ZWMyIiwKKyAgICBjb2RlOiBbCisgICAgICAidmVjMiAkKGZ1
bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAgICIgIHJldHVybiB2ZWMyKCIsCisgICAgICAiICAg
ICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NYKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jh
c2UoJChiYXNlQXJnc1kpKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4iKQorICB9LAorICB7IHR5
cGU6ICJ2ZWMzIiwKKyAgICBjb2RlOiBbCisgICAgICAidmVjMyAkKGZ1bmMpX2VtdSgkKGFyZ3Mp
KSB7IiwKKyAgICAgICIgIHJldHVybiB2ZWMzKCIsCisgICAgICAiICAgICAgJChmdW5jKV9iYXNl
KCQoYmFzZUFyZ3NYKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJnc1kp
KSwiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWikpKTsiLAorICAgICAg
In0iXS5qb2luKCJcbiIpCisgIH0sCisgIHsgdHlwZTogInZlYzQiLAorICAgIGNvZGU6IFsKKyAg
ICAgICJ2ZWM0ICQoZnVuYylfZW11KCQoYXJncykpIHsiLAorICAgICAgIiAgcmV0dXJuIHZlYzQo
IiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJnc1gpKSwiLAorICAgICAgIiAg
ICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWSkpLCIsCisgICAgICAiICAgICAgJChmdW5jKV9i
YXNlKCQoYmFzZUFyZ3NaKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJn
c1cpKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4iKQorICB9CitdOworCit2YXIgYnZlY1R5cGVz
ID0gWworICB7IHR5cGU6ICJidmVjMiIsCisgICAgY29kZTogWworICAgICAgImJ2ZWMyICQoZnVu
YylfZW11KCQoYXJncykpIHsiLAorICAgICAgIiAgcmV0dXJuIGJ2ZWMyKCIsCisgICAgICAiICAg
ICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NYKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jh
c2UoJChiYXNlQXJnc1kpKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4iKQorICB9LAorICB7IHR5
cGU6ICJidmVjMyIsCisgICAgY29kZTogWworICAgICAgImJ2ZWMzICQoZnVuYylfZW11KCQoYXJn
cykpIHsiLAorICAgICAgIiAgcmV0dXJuIGJ2ZWMzKCIsCisgICAgICAiICAgICAgJChmdW5jKV9i
YXNlKCQoYmFzZUFyZ3NYKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJn
c1kpKSwiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWikpKTsiLAorICAg
ICAgIn0iXS5qb2luKCJcbiIpCisgIH0sCisgIHsgdHlwZTogImJ2ZWM0IiwKKyAgICBjb2RlOiBb
CisgICAgICAidmVjNCAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAgICIgIHJldHVybiBi
dmVjNCgiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWCkpLCIsCisgICAg
ICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NZKSksIiwKKyAgICAgICIgICAgICAkKGZ1
bmMpX2Jhc2UoJChiYXNlQXJnc1opKSwiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJh
c2VBcmdzVykpKTsiLAorICAgICAgIn0iXS5qb2luKCJcbiIpCisgIH0KK107CisKK3ZhciByZXBs
YWNlUkUgPSAvXCRcKChcdyspXCkvZzsKKwordmFyIHJlcGxhY2VQYXJhbXMgPSBmdW5jdGlvbihz
dHIpIHsKKyAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CisgIHJldHVybiBzdHIucmVwbGFjZShyZXBs
YWNlUkUsIGZ1bmN0aW9uKHN0ciwgcDEsIG9mZnNldCwgcykgeworICAgIGZvciAodmFyIGlpID0g
MTsgaWkgPCBhcmdzLmxlbmd0aDsgKytpaSkgeworICAgICAgaWYgKGFyZ3NbaWldW3AxXSAhPT0g
dW5kZWZpbmVkKSB7CisgICAgICAgIHJldHVybiBhcmdzW2lpXVtwMV07CisgICAgICB9CisgICAg
fQorICAgIHRocm93ICJ1bmtub3duIHN0cmluZyBwYXJhbSAnIiArIHAxICsgIiciOworICB9KTsK
K307CisKK3ZhciBnZW5lcmF0ZVJlZmVyZW5jZVNoYWRlciA9IGZ1bmN0aW9uKAorICAgIHNoYWRl
ckluZm8sIHRlbXBsYXRlLCBwYXJhbXMsIHR5cGVJbmZvLCB0ZXN0KSB7CisgIHZhciBpbnB1dCA9
IHNoYWRlckluZm8uaW5wdXQ7CisgIHZhciBvdXRwdXQgPSBzaGFkZXJJbmZvLm91dHB1dDsKKyAg
dmFyIGZlYXR1cmUgPSBwYXJhbXMuZmVhdHVyZTsKKyAgdmFyIHRlc3RGdW5jID0gcGFyYW1zLnRl
c3RGdW5jOworICB2YXIgZW11RnVuYyA9IHBhcmFtcy5lbXVGdW5jIHx8ICIiOworICB2YXIgZXh0
cmEgPSBwYXJhbXMuZXh0cmEgfHwgJyc7CisgIHZhciBhcmdzID0gcGFyYW1zLmFyZ3MgfHwgIiQo
dHlwZSkgdmFsdWUiOworICB2YXIgdHlwZSA9IHR5cGVJbmZvLnR5cGU7CisgIHZhciB0eXBlQ29k
ZSA9IHR5cGVJbmZvLmNvZGU7CisKKyAgdmFyIGJhc2VBcmdzID0gcGFyYW1zLmJhc2VBcmdzIHx8
ICJ2YWx1ZSQoZmllbGQpIjsKKyAgdmFyIGJhc2VBcmdzWCA9IHJlcGxhY2VQYXJhbXMoYmFzZUFy
Z3MsIHtmaWVsZDogIi54In0pOworICB2YXIgYmFzZUFyZ3NZID0gcmVwbGFjZVBhcmFtcyhiYXNl
QXJncywge2ZpZWxkOiAiLnkifSk7CisgIHZhciBiYXNlQXJnc1ogPSByZXBsYWNlUGFyYW1zKGJh
c2VBcmdzLCB7ZmllbGQ6ICIueiJ9KTsKKyAgdmFyIGJhc2VBcmdzVyA9IHJlcGxhY2VQYXJhbXMo
YmFzZUFyZ3MsIHtmaWVsZDogIi53In0pOworICB2YXIgYmFzZUFyZ3MgPSByZXBsYWNlUGFyYW1z
KGJhc2VBcmdzLCB7ZmllbGQ6ICIifSk7CisKKyAgdGVzdCA9IHJlcGxhY2VQYXJhbXModGVzdCwg
eworICAgIGlucHV0OiBpbnB1dCwKKyAgICBvdXRwdXQ6IG91dHB1dCwKKyAgICBmdW5jOiBmZWF0
dXJlICsgIl9lbXUiCisgIH0pOworICBlbXVGdW5jID0gcmVwbGFjZVBhcmFtcyhlbXVGdW5jLCB7
CisgICAgZnVuYzogZmVhdHVyZQorICB9KTsKKyAgYXJncyA9IHJlcGxhY2VQYXJhbXMoYXJncywg
eworICAgIHR5cGU6IHR5cGUKKyAgfSk7CisgIHR5cGVDb2RlID0gcmVwbGFjZVBhcmFtcyh0eXBl
Q29kZSwgeworICAgIGZ1bmM6IGZlYXR1cmUsCisgICAgdHlwZTogdHlwZSwKKyAgICBhcmdzOiBh
cmdzLAorICAgIGJhc2VBcmdzOiBiYXNlQXJncywKKyAgICBiYXNlQXJnc1g6IGJhc2VBcmdzWCwK
KyAgICBiYXNlQXJnc1k6IGJhc2VBcmdzWSwKKyAgICBiYXNlQXJnc1o6IGJhc2VBcmdzWiwKKyAg
ICBiYXNlQXJnc1c6IGJhc2VBcmdzVworICB9KTsKKyAgdmFyIHNoYWRlciA9IHJlcGxhY2VQYXJh
bXModGVtcGxhdGUsIHsKKyAgICBleHRyYTogZXh0cmEsCisgICAgZW11OiBlbXVGdW5jICsgIlxu
XG4iICsgdHlwZUNvZGUsCisgICAgdGVzdDogdGVzdAorICB9KTsKKyAgcmV0dXJuIHNoYWRlcjsK
K307CisKK3ZhciBnZW5lcmF0ZVRlc3RTaGFkZXIgPSBmdW5jdGlvbigKKyAgICBzaGFkZXJJbmZv
LCB0ZW1wbGF0ZSwgcGFyYW1zLCB0ZXN0KSB7CisgIHZhciBpbnB1dCA9IHNoYWRlckluZm8uaW5w
dXQ7CisgIHZhciBvdXRwdXQgPSBzaGFkZXJJbmZvLm91dHB1dDsKKyAgdmFyIGZlYXR1cmUgPSBw
YXJhbXMuZmVhdHVyZTsKKyAgdmFyIHRlc3RGdW5jID0gcGFyYW1zLnRlc3RGdW5jOworICB2YXIg
ZXh0cmEgPSBwYXJhbXMuZXh0cmEgfHwgJyc7CisKKyAgdGVzdCA9IHJlcGxhY2VQYXJhbXModGVz
dCwgeworICAgIGlucHV0OiBpbnB1dCwKKyAgICBvdXRwdXQ6IG91dHB1dCwKKyAgICBmdW5jOiBm
ZWF0dXJlCisgIH0pOworICB2YXIgc2hhZGVyID0gcmVwbGFjZVBhcmFtcyh0ZW1wbGF0ZSwgewor
ICAgIGV4dHJhOiBleHRyYSwKKyAgICBlbXU6ICcnLAorICAgIHRlc3Q6IHRlc3QKKyAgfSk7Cisg
IHJldHVybiBzaGFkZXI7Cit9OworCitmdW5jdGlvbiBfcmVwb3J0UmVzdWx0cyhyZWZEYXRhLCBy
ZWZJbWcsIHRlc3REYXRhLCB0ZXN0SW1nLCB0b2xlcmFuY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aCwgaGVpZ2h0LCBjdHgsIGltZ0RhdGEsIHd0dSwgY2FudmFzMmQsIGNvbnNvbGVE
aXYpIHsKKyAgdmFyIHNhbWUgPSB0cnVlOworICB2YXIgZmlyc3RGYWlsdXJlID0gbnVsbDsKKyAg
Zm9yICh2YXIgeXkgPSAwOyB5eSA8IGhlaWdodDsgKyt5eSkgeworICAgIGZvciAodmFyIHh4ID0g
MDsgeHggPCB3aWR0aDsgKyt4eCkgeworICAgICAgdmFyIG9mZnNldCA9ICh5eSAqIHdpZHRoICsg
eHgpICogNDsKKyAgICAgIHZhciBpbWdPZmZzZXQgPSAoKGhlaWdodCAtIHl5IC0gMSkgKiB3aWR0
aCArIHh4KSAqIDQ7CisgICAgICBpbWdEYXRhLmRhdGFbaW1nT2Zmc2V0ICsgMF0gPSAwOworICAg
ICAgaW1nRGF0YS5kYXRhW2ltZ09mZnNldCArIDFdID0gMDsKKyAgICAgIGltZ0RhdGEuZGF0YVtp
bWdPZmZzZXQgKyAyXSA9IDA7CisgICAgICBpbWdEYXRhLmRhdGFbaW1nT2Zmc2V0ICsgM10gPSAy
NTU7CisgICAgICBpZiAoTWF0aC5hYnMocmVmRGF0YVtvZmZzZXQgKyAwXSAtIHRlc3REYXRhW29m
ZnNldCArIDBdKSA+IHRvbGVyYW5jZSB8fAorICAgICAgICAgIE1hdGguYWJzKHJlZkRhdGFbb2Zm
c2V0ICsgMV0gLSB0ZXN0RGF0YVtvZmZzZXQgKyAxXSkgPiB0b2xlcmFuY2UgfHwKKyAgICAgICAg
ICBNYXRoLmFicyhyZWZEYXRhW29mZnNldCArIDJdIC0gdGVzdERhdGFbb2Zmc2V0ICsgMl0pID4g
dG9sZXJhbmNlIHx8CisgICAgICAgICAgTWF0aC5hYnMocmVmRGF0YVtvZmZzZXQgKyAzXSAtIHRl
c3REYXRhW29mZnNldCArIDNdKSA+IHRvbGVyYW5jZSkgeworICAgICAgICB2YXIgZGV0YWlsID0g
J2F0ICgnICsgeHggKyAnLCcgKyB5eSArICcpOiByZWY9KCcgKworICAgICAgICAgICAgcmVmRGF0
YVtvZmZzZXQgKyAwXSArICcsJyArCisgICAgICAgICAgICByZWZEYXRhW29mZnNldCArIDFdICsg
JywnICsKKyAgICAgICAgICAgIHJlZkRhdGFbb2Zmc2V0ICsgMl0gKyAnLCcgKworICAgICAgICAg
ICAgcmVmRGF0YVtvZmZzZXQgKyAzXSArICcpICB0ZXN0PSgnICsKKyAgICAgICAgICAgIHRlc3RE
YXRhW29mZnNldCArIDBdICsgJywnICsKKyAgICAgICAgICAgIHRlc3REYXRhW29mZnNldCArIDFd
ICsgJywnICsKKyAgICAgICAgICAgIHRlc3REYXRhW29mZnNldCArIDJdICsgJywnICsKKyAgICAg
ICAgICAgIHRlc3REYXRhW29mZnNldCArIDNdICsgJykgdG9sZXJhbmNlPScgKyB0b2xlcmFuY2U7
CisgICAgICAgIGNvbnNvbGVEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZGV0YWlsKSk7CisgICAgICAgIGNvbnNvbGVEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYnInKSk7CisgICAgICAgIGlmICghZmlyc3RGYWlsdXJlKSB7CisgICAgICAgICAg
Zmlyc3RGYWlsdXJlID0gIjogIiArIGRldGFpbDsKKyAgICAgICAgfQorICAgICAgICBpbWdEYXRh
LmRhdGFbaW1nT2Zmc2V0XSA9IDI1NTsKKyAgICAgICAgc2FtZSA9IGZhbHNlOworICAgICAgfQor
ICAgIH0KKyAgfQorCisgIHZhciBkaWZmSW1nID0gbnVsbDsKKyAgaWYgKCFzYW1lKSB7CisgICAg
Y3R4LnB1dEltYWdlRGF0YShpbWdEYXRhLCAwLCAwKTsKKyAgICBkaWZmSW1nID0gd3R1Lm1ha2VJ
bWFnZUZyb21DYW52YXMoY2FudmFzMmQpOworICB9CisKKyAgdmFyIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICBkaXYuY2xhc3NOYW1lID0gInRlc3RpbWFnZXMiOworICB3
dHUuaW5zZXJ0SW1hZ2UoZGl2LCAicmVmIiwgcmVmSW1nKTsKKyAgd3R1Lmluc2VydEltYWdlKGRp
diwgInRlc3QiLCB0ZXN0SW1nKTsKKyAgaWYgKGRpZmZJbWcpIHsKKyAgICB3dHUuaW5zZXJ0SW1h
Z2UoZGl2LCAiZGlmZiIsIGRpZmZJbWcpOworICB9CisgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdicicpKTsKKworICBjb25zb2xlRGl2LmFwcGVuZENoaWxkKGRpdik7
CisKKyAgaWYgKCFzYW1lKSB7CisgICAgdGVzdEZhaWxlZCgiaW1hZ2VzIGFyZSBkaWZmZXJlbnQi
ICsgKGZpcnN0RmFpbHVyZSA/IGZpcnN0RmFpbHVyZSA6ICIiKSk7CisgIH0gZWxzZSB7CisgICAg
dGVzdFBhc3NlZCgiaW1hZ2VzIGFyZSB0aGUgc2FtZSIpOworICB9CisKKyAgY29uc29sZURpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdocicpKTsKK30KKwordmFyIHJ1bkZl
YXR1cmVUZXN0ID0gZnVuY3Rpb24ocGFyYW1zKSB7CisgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKKyAgdmFyIGdyaWRSZXMgPSBwYXJhbXMuZ3JpZFJlczsKKyAgdmFyIHZlcnRleFRvbGVyYW5j
ZSA9IHBhcmFtcy50b2xlcmFuY2UgfHwgMDsKKyAgdmFyIGZyYWdtZW50VG9sZXJhbmNlID0gcGFy
YW1zLnRvbGVyYW5jZSB8fCAxOworICBpZiAoJ2ZyYWdtZW50VG9sZXJhbmNlJyBpbiBwYXJhbXMp
CisgICAgZnJhZ21lbnRUb2xlcmFuY2UgPSBwYXJhbXMuZnJhZ21lbnRUb2xlcmFuY2U7CisKKyAg
ZGVzY3JpcHRpb24oIlRlc3RpbmcgR0xTTCBmZWF0dXJlOiAiICsgcGFyYW1zLmZlYXR1cmUpOwor
CisgIHZhciB3aWR0aCA9IDMyOworICB2YXIgaGVpZ2h0ID0gMzI7CisKKyAgdmFyIGNvbnNvbGVE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgIGNhbnZhcy53aWR0aCA9IHdpZHRo
OworICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250
ZXh0KGNhbnZhcywgeyBwcmVtdWx0aXBsaWVkQWxwaGE6IGZhbHNlIH0pOworICBpZiAoIWdsKSB7
CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIGZpbmlzaFRl
c3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdjYW52YXMnKTsKKyAgY2FudmFzMmQud2lkdGggPSB3aWR0aDsKKyAgY2FudmFz
MmQuaGVpZ2h0ID0gaGVpZ2h0OworICB2YXIgY3R4ID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgdmFyIGltZ0RhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQp
OworCisgIHZhciBzaGFkZXJJbmZvcyA9IFsKKyAgICB7IHR5cGU6ICJ2ZXJ0ZXgiLAorICAgICAg
aW5wdXQ6ICJjb2xvciIsCisgICAgICBvdXRwdXQ6ICJ2Q29sb3IiLAorICAgICAgdmVydGV4U2hh
ZGVyVGVtcGxhdGU6IHZlcnRleFNoYWRlclRlbXBsYXRlLAorICAgICAgZnJhZ21lbnRTaGFkZXJU
ZW1wbGF0ZTogYmFzZUZyYWdtZW50U2hhZGVyLAorICAgICAgdG9sZXJhbmNlOiB2ZXJ0ZXhUb2xl
cmFuY2UKKyAgICB9LAorICAgIHsgdHlwZTogImZyYWdtZW50IiwKKyAgICAgIGlucHV0OiAidkNv
bG9yIiwKKyAgICAgIG91dHB1dDogImdsX0ZyYWdDb2xvciIsCisgICAgICB2ZXJ0ZXhTaGFkZXJU
ZW1wbGF0ZTogYmFzZVZlcnRleFNoYWRlciwKKyAgICAgIGZyYWdtZW50U2hhZGVyVGVtcGxhdGU6
IGZyYWdtZW50U2hhZGVyVGVtcGxhdGUsCisgICAgICB0b2xlcmFuY2U6IGZyYWdtZW50VG9sZXJh
bmNlCisgICAgfQorICBdOworICBmb3IgKHZhciBzcyA9IDA7IHNzIDwgc2hhZGVySW5mb3MubGVu
Z3RoOyArK3NzKSB7CisgICAgdmFyIHNoYWRlckluZm8gPSBzaGFkZXJJbmZvc1tzc107CisgICAg
dmFyIHRlc3RzID0gcGFyYW1zLnRlc3RzOworICAgIHZhciB0ZXN0VHlwZXMgPSBwYXJhbXMuZW11
RnVuY3MgfHwgKHBhcmFtcy5idmVjVGVzdCA/IGJ2ZWNUeXBlcyA6IHR5cGVzKTsKKyAgICAvLyBU
ZXN0IHZlcnRleCBzaGFkZXJzCisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0
aDsgKytpaSkgeworICAgICAgdmFyIHR5cGUgPSB0ZXN0VHlwZXNbaWldOworICAgICAgaWYgKHBh
cmFtcy5zaW1wbGVFbXUpIHsKKyAgICAgICAgdHlwZSA9IHsKKyAgICAgICAgICB0eXBlOiB0eXBl
LnR5cGUsCisgICAgICAgICAgY29kZTogcGFyYW1zLnNpbXBsZUVtdQorICAgICAgICB9OworICAg
ICAgfQorICAgICAgZGVidWcoIiIpOworICAgICAgdmFyIHN0ciA9IHJlcGxhY2VQYXJhbXMocGFy
YW1zLnRlc3RGdW5jLCB7CisgICAgICAgIGZ1bmM6IHBhcmFtcy5mZWF0dXJlLAorICAgICAgICB0
eXBlOiB0eXBlLnR5cGUsCisgICAgICAgIGFyZzA6IHR5cGUudHlwZQorICAgICAgfSk7CisgICAg
ICB2YXIgcGFzc01zZyA9ICJUZXN0aW5nOiAiICsgc3RyICsgIiBpbiAiICsgc2hhZGVySW5mby50
eXBlICsgIiBzaGFkZXIiOworICAgICAgZGVidWcocGFzc01zZyk7CisKKyAgICAgIHZhciByZWZl
cmVuY2VWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBnZW5lcmF0ZVJlZmVyZW5jZVNoYWRlcigKKyAgICAg
ICAgICBzaGFkZXJJbmZvLAorICAgICAgICAgIHNoYWRlckluZm8udmVydGV4U2hhZGVyVGVtcGxh
dGUsCisgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgIHR5cGUsCisgICAgICAgICAgdGVzdHNb
aWldKTsKKyAgICAgIHZhciByZWZlcmVuY2VGcmFnbWVudFNoYWRlclNvdXJjZSA9IGdlbmVyYXRl
UmVmZXJlbmNlU2hhZGVyKAorICAgICAgICAgIHNoYWRlckluZm8sCisgICAgICAgICAgc2hhZGVy
SW5mby5mcmFnbWVudFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywKKyAgICAgICAg
ICB0eXBlLAorICAgICAgICAgIHRlc3RzW2lpXSk7CisgICAgICB2YXIgdGVzdFZlcnRleFNoYWRl
clNvdXJjZSA9IGdlbmVyYXRlVGVzdFNoYWRlcigKKyAgICAgICAgICBzaGFkZXJJbmZvLAorICAg
ICAgICAgIHNoYWRlckluZm8udmVydGV4U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAgcGFyYW1z
LAorICAgICAgICAgIHRlc3RzW2lpXSk7CisgICAgICB2YXIgdGVzdEZyYWdtZW50U2hhZGVyU291
cmNlID0gZ2VuZXJhdGVUZXN0U2hhZGVyKAorICAgICAgICAgIHNoYWRlckluZm8sCisgICAgICAg
ICAgc2hhZGVySW5mby5mcmFnbWVudFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywK
KyAgICAgICAgICB0ZXN0c1tpaV0pOworCisKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHZhciBy
ZWZlcmVuY2VWZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgcmVmZXJlbmNlVmVydGV4
U2hhZGVyU291cmNlLCBnbC5WRVJURVhfU0hBREVSLCB0ZXN0RmFpbGVkLCB0cnVlLCAncmVmZXJl
bmNlJyk7CisgICAgICB2YXIgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRl
cihnbCwgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXJTb3VyY2UsIGdsLkZSQUdNRU5UX1NIQURFUiwg
dGVzdEZhaWxlZCwgdHJ1ZSwgJ3JlZmVyZW5jZScpOworICAgICAgdmFyIHRlc3RWZXJ0ZXhTaGFk
ZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdGVzdFZlcnRleFNoYWRlclNvdXJjZSwgZ2wuVkVSVEVY
X1NIQURFUiwgdGVzdEZhaWxlZCwgdHJ1ZSwgJ3Rlc3QnKTsKKyAgICAgIHZhciB0ZXN0RnJhZ21l
bnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlLCBn
bC5GUkFHTUVOVF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUsICd0ZXN0Jyk7CisgICAgICBkZWJ1
ZygiIik7CisKKyAgICAgIGlmIChwYXJzZUludCh3dHUuZ2V0VXJsT3B0aW9ucygpLmR1bXBTaGFk
ZXJzKSkgeworICAgICAgICB2YXIgdlJlZkluZm8gPSB7CisgICAgICAgICAgc2hhZGVyOiByZWZl
cmVuY2VWZXJ0ZXhTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAg
ICAgICBsYWJlbDogInJlZmVyZW5jZSB2ZXJ0ZXggc2hhZGVyIiwKKyAgICAgICAgICBzb3VyY2U6
IHJlZmVyZW5jZVZlcnRleFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB2YXIgZlJl
ZkluZm8gPSB7CisgICAgICAgICAgc2hhZGVyOiByZWZlcmVuY2VGcmFnbWVudFNoYWRlciwKKyAg
ICAgICAgICBzaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAicmVmZXJlbmNl
IGZyYWdtZW50IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiByZWZlcmVuY2VGcmFnbWVudFNo
YWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB3dHUuZHVtcFNoYWRlcnNJbmZvKGdsLCB3
aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsIHBhc3NNc2csIHZSZWZJbmZvLCBmUmVmSW5mbyk7CisK
KyAgICAgICAgdmFyIHZUZXN0SW5mbyA9IHsKKyAgICAgICAgICBzaGFkZXI6IHRlc3RWZXJ0ZXhT
aGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDog
InRlc3QgdmVydGV4IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiB0ZXN0VmVydGV4U2hhZGVy
U291cmNlCisgICAgICAgIH07CisgICAgICAgIHZhciBmVGVzdEluZm8gPSB7CisgICAgICAgICAg
c2hhZGVyOiB0ZXN0RnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1
ZSwKKyAgICAgICAgICBsYWJlbDogInRlc3QgZnJhZ21lbnQgc2hhZGVyIiwKKyAgICAgICAgICBz
b3VyY2U6IHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB3dHUu
ZHVtcFNoYWRlcnNJbmZvKGdsLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsIHBhc3NNc2csIHZU
ZXN0SW5mbywgZlRlc3RJbmZvKTsKKyAgICAgIH0KKworICAgICAgdmFyIHJlZkRhdGEgPSBkcmF3
KAorICAgICAgICAgIHJlZmVyZW5jZVZlcnRleFNoYWRlciwgcmVmZXJlbmNlRnJhZ21lbnRTaGFk
ZXIpOworICAgICAgdmFyIHJlZkltZyA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGNhbnZhcyk7
CisgICAgICBpZiAoc3MgPT0gMCkgeworICAgICAgICB2YXIgdGVzdERhdGEgPSBkcmF3KAorICAg
ICAgICAgICAgdGVzdFZlcnRleFNoYWRlciwgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHRlc3REYXRhID0gZHJhdygKKyAgICAgICAgICAgIHJl
ZmVyZW5jZVZlcnRleFNoYWRlciwgdGVzdEZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0KKyAgICAg
IHZhciB0ZXN0SW1nID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMoY2FudmFzKTsKKworICAgICAg
X3JlcG9ydFJlc3VsdHMocmVmRGF0YSwgcmVmSW1nLCB0ZXN0RGF0YSwgdGVzdEltZywgc2hhZGVy
SW5mby50b2xlcmFuY2UsCisgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBjdHgs
IGltZ0RhdGEsIHd0dSwgY2FudmFzMmQsIGNvbnNvbGVEaXYpOworICAgIH0KKyAgfQorCisgIGZp
bmlzaFRlc3QoKTsKKworICBmdW5jdGlvbiBkcmF3KHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFk
ZXIpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5jcmVhdGVQcm9ncmFtKGdsLCB2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyLCB0ZXN0RmFpbGVkKTsKKworICAgIHZhciBwb3NMb2MgPSBnbC5n
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYVBvc2l0aW9uIik7CisgICAgd3R1LnNldHVwSW5k
ZXhlZFF1YWQoZ2wsIGdyaWRSZXMsIHBvc0xvYyk7CisKKyAgICBnbC51c2VQcm9ncmFtKHByb2dy
YW0pOworICAgIHd0dS5jbGVhckFuZERyYXdJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgWzAsIDAs
IDI1NSwgMjU1XSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJu
byBlcnJvcnMgZnJvbSBkcmF3Iik7CisKKyAgICB2YXIgaW1nID0gbmV3IFVpbnQ4QXJyYXkod2lk
dGggKiBoZWlnaHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAgcmV0dXJuIGltZzsKKyAgfQor
Cit9OworCit2YXIgcnVuQmFzaWNUZXN0ID0gZnVuY3Rpb24ocGFyYW1zKSB7CisgIHZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKKyAgdmFyIGdyaWRSZXMgPSBwYXJhbXMuZ3JpZFJlczsKKyAgdmFy
IHZlcnRleFRvbGVyYW5jZSA9IHBhcmFtcy50b2xlcmFuY2UgfHwgMDsKKyAgdmFyIGZyYWdtZW50
VG9sZXJhbmNlID0gdmVydGV4VG9sZXJhbmNlOworICBpZiAoJ2ZyYWdtZW50VG9sZXJhbmNlJyBp
biBwYXJhbXMpCisgICAgZnJhZ21lbnRUb2xlcmFuY2UgPSBwYXJhbXMuZnJhZ21lbnRUb2xlcmFu
Y2UgfHwgMDsKKworICBkZXNjcmlwdGlvbigiVGVzdGluZyA6ICIgKyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGl0bGUiKVswXS5pbm5lclRleHQpOworCisgIHZhciB3aWR0aCA9IDMy
OworICB2YXIgaGVpZ2h0ID0gMzI7CisKKyAgdmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJyk7CisgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICBjYW52YXMuaGVpZ2h0
ID0gaGVpZ2h0OworICB2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgIGlm
ICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAg
ZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBjYW52YXMyZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52YXMyZC53aWR0aCA9IHdpZHRoOwor
ICBjYW52YXMyZC5oZWlnaHQgPSBoZWlnaHQ7CisgIHZhciBjdHggPSBjYW52YXMyZC5nZXRDb250
ZXh0KCIyZCIpOworICB2YXIgaW1nRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgs
IGhlaWdodCk7CisKKyAgdmFyIHNoYWRlckluZm9zID0gWworICAgIHsgdHlwZTogInZlcnRleCIs
CisgICAgICBpbnB1dDogImNvbG9yIiwKKyAgICAgIG91dHB1dDogInZDb2xvciIsCisgICAgICB2
ZXJ0ZXhTaGFkZXJUZW1wbGF0ZTogdmVydGV4U2hhZGVyVGVtcGxhdGUsCisgICAgICBmcmFnbWVu
dFNoYWRlclRlbXBsYXRlOiBiYXNlRnJhZ21lbnRTaGFkZXIsCisgICAgICB0b2xlcmFuY2U6IHZl
cnRleFRvbGVyYW5jZQorICAgIH0sCisgICAgeyB0eXBlOiAiZnJhZ21lbnQiLAorICAgICAgaW5w
dXQ6ICJ2Q29sb3IiLAorICAgICAgb3V0cHV0OiAiZ2xfRnJhZ0NvbG9yIiwKKyAgICAgIHZlcnRl
eFNoYWRlclRlbXBsYXRlOiBiYXNlVmVydGV4U2hhZGVyLAorICAgICAgZnJhZ21lbnRTaGFkZXJU
ZW1wbGF0ZTogZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSwKKyAgICAgIHRvbGVyYW5jZTogZnJhZ21l
bnRUb2xlcmFuY2UKKyAgICB9CisgIF07CisgIGZvciAodmFyIHNzID0gMDsgc3MgPCBzaGFkZXJJ
bmZvcy5sZW5ndGg7ICsrc3MpIHsKKyAgICB2YXIgc2hhZGVySW5mbyA9IHNoYWRlckluZm9zW3Nz
XTsKKyAgICB2YXIgdGVzdHMgPSBwYXJhbXMudGVzdHM7CisvLyAgICB2YXIgdGVzdFR5cGVzID0g
cGFyYW1zLmVtdUZ1bmNzIHx8IChwYXJhbXMuYnZlY1Rlc3QgPyBidmVjVHlwZXMgOiB0eXBlcyk7
CisgICAgLy8gVGVzdCB2ZXJ0ZXggc2hhZGVycworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0
ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIHZhciB0ZXN0ID0gdGVzdHNbaWldOworICAgICAg
ZGVidWcoIiIpOworICAgICAgdmFyIHBhc3NNc2cgPSAiVGVzdGluZzogIiArIHRlc3QubmFtZSAr
ICIgaW4gIiArIHNoYWRlckluZm8udHlwZSArICIgc2hhZGVyIjsKKyAgICAgIGRlYnVnKHBhc3NN
c2cpOworCisgICAgICBmdW5jdGlvbiBnZW5TaGFkZXIoc2hhZGVySW5mbywgdGVtcGxhdGUsIHNo
YWRlciwgc3VicykgeworICAgICAgICBzaGFkZXIgPSByZXBsYWNlUGFyYW1zKHNoYWRlciwgc3Vi
cywgeworICAgICAgICAgICAgaW5wdXQ6IHNoYWRlckluZm8uaW5wdXQsCisgICAgICAgICAgICBv
dXRwdXQ6IHNoYWRlckluZm8ub3V0cHV0CisgICAgICAgICAgfSk7CisgICAgICAgIHNoYWRlciA9
IHJlcGxhY2VQYXJhbXModGVtcGxhdGUsIHN1YnMsIHsKKyAgICAgICAgICAgIHRlc3Q6IHNoYWRl
ciwKKyAgICAgICAgICAgIGVtdTogIiIsCisgICAgICAgICAgICBleHRyYTogIiIKKyAgICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIHNoYWRlcjsKKyAgICAgIH0KKworICAgICAgdmFyIHJlZmVy
ZW5jZVZlcnRleFNoYWRlclNvdXJjZSA9IGdlblNoYWRlcigKKyAgICAgICAgICBzaGFkZXJJbmZv
LAorICAgICAgICAgIHNoYWRlckluZm8udmVydGV4U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAg
dGVzdC5yZWZlcmVuY2Uuc2hhZGVyLAorICAgICAgICAgIHRlc3QucmVmZXJlbmNlLnN1YnMpOwor
ICAgICAgdmFyIHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyU291cmNlID0gZ2VuU2hhZGVyKAorICAg
ICAgICAgIHNoYWRlckluZm8sCisgICAgICAgICAgc2hhZGVySW5mby5mcmFnbWVudFNoYWRlclRl
bXBsYXRlLAorICAgICAgICAgIHRlc3QucmVmZXJlbmNlLnNoYWRlciwKKyAgICAgICAgICB0ZXN0
LnJlZmVyZW5jZS5zdWJzKTsKKyAgICAgIHZhciB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0gZ2Vu
U2hhZGVyKAorICAgICAgICAgIHNoYWRlckluZm8sCisgICAgICAgICAgc2hhZGVySW5mby52ZXJ0
ZXhTaGFkZXJUZW1wbGF0ZSwKKyAgICAgICAgICB0ZXN0LnRlc3Quc2hhZGVyLAorICAgICAgICAg
IHRlc3QudGVzdC5zdWJzKTsKKyAgICAgIHZhciB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBn
ZW5TaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAgICAgICBzaGFkZXJJbmZvLmZy
YWdtZW50U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAgdGVzdC50ZXN0LnNoYWRlciwKKyAgICAg
ICAgICB0ZXN0LnRlc3Quc3Vicyk7CisKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHZhciByZWZl
cmVuY2VWZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgcmVmZXJlbmNlVmVydGV4U2hh
ZGVyU291cmNlLCBnbC5WRVJURVhfU0hBREVSLCB0ZXN0RmFpbGVkLCB0cnVlLCAncmVmZXJlbmNl
Jyk7CisgICAgICB2YXIgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihn
bCwgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXJTb3VyY2UsIGdsLkZSQUdNRU5UX1NIQURFUiwgdGVz
dEZhaWxlZCwgdHJ1ZSwgJ3JlZmVyZW5jZScpOworICAgICAgdmFyIHRlc3RWZXJ0ZXhTaGFkZXIg
PSB3dHUubG9hZFNoYWRlcihnbCwgdGVzdFZlcnRleFNoYWRlclNvdXJjZSwgZ2wuVkVSVEVYX1NI
QURFUiwgdGVzdEZhaWxlZCwgdHJ1ZSwgJ3Rlc3QnKTsKKyAgICAgIHZhciB0ZXN0RnJhZ21lbnRT
aGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlLCBnbC5G
UkFHTUVOVF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUsICd0ZXN0Jyk7CisgICAgICBkZWJ1Zygi
Iik7CisKKyAgICAgIGlmIChwYXJzZUludCh3dHUuZ2V0VXJsT3B0aW9ucygpLmR1bXBTaGFkZXJz
KSkgeworICAgICAgICB2YXIgdlJlZkluZm8gPSB7CisgICAgICAgICAgc2hhZGVyOiByZWZlcmVu
Y2VWZXJ0ZXhTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAg
ICBsYWJlbDogInJlZmVyZW5jZSB2ZXJ0ZXggc2hhZGVyIiwKKyAgICAgICAgICBzb3VyY2U6IHJl
ZmVyZW5jZVZlcnRleFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB2YXIgZlJlZklu
Zm8gPSB7CisgICAgICAgICAgc2hhZGVyOiByZWZlcmVuY2VGcmFnbWVudFNoYWRlciwKKyAgICAg
ICAgICBzaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAicmVmZXJlbmNlIGZy
YWdtZW50IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiByZWZlcmVuY2VGcmFnbWVudFNoYWRl
clNvdXJjZQorICAgICAgICB9OworICAgICAgICB3dHUuZHVtcFNoYWRlcnNJbmZvKGdsLCB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWUsIHBhc3NNc2csIHZSZWZJbmZvLCBmUmVmSW5mbyk7CisKKyAg
ICAgICAgdmFyIHZUZXN0SW5mbyA9IHsKKyAgICAgICAgICBzaGFkZXI6IHRlc3RWZXJ0ZXhTaGFk
ZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDogInRl
c3QgdmVydGV4IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiB0ZXN0VmVydGV4U2hhZGVyU291
cmNlCisgICAgICAgIH07CisgICAgICAgIHZhciBmVGVzdEluZm8gPSB7CisgICAgICAgICAgc2hh
ZGVyOiB0ZXN0RnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICAgICAgICBsYWJlbDogInRlc3QgZnJhZ21lbnQgc2hhZGVyIiwKKyAgICAgICAgICBzb3Vy
Y2U6IHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB3dHUuZHVt
cFNoYWRlcnNJbmZvKGdsLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsIHBhc3NNc2csIHZUZXN0
SW5mbywgZlRlc3RJbmZvKTsKKyAgICAgIH0KKworICAgICAgdmFyIHJlZkRhdGEgPSBkcmF3KHJl
ZmVyZW5jZVZlcnRleFNoYWRlciwgcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIpOworICAgICAgdmFy
IHJlZkltZyA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGNhbnZhcyk7CisgICAgICBpZiAoc3Mg
PT0gMCkgeworICAgICAgICB2YXIgdGVzdERhdGEgPSBkcmF3KHRlc3RWZXJ0ZXhTaGFkZXIsIHJl
ZmVyZW5jZUZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciB0ZXN0
RGF0YSA9IGRyYXcocmVmZXJlbmNlVmVydGV4U2hhZGVyLCB0ZXN0RnJhZ21lbnRTaGFkZXIpOwor
ICAgICAgfQorICAgICAgdmFyIHRlc3RJbWcgPSB3dHUubWFrZUltYWdlRnJvbUNhbnZhcyhjYW52
YXMpOworCisgICAgICBfcmVwb3J0UmVzdWx0cyhyZWZEYXRhLCByZWZJbWcsIHRlc3REYXRhLCB0
ZXN0SW1nLCBzaGFkZXJJbmZvLnRvbGVyYW5jZSwKKyAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQsIGN0eCwgaW1nRGF0YSwgd3R1LCBjYW52YXMyZCwgY29uc29sZURpdik7CisgICAg
fQorICB9CisKKyAgZmluaXNoVGVzdCgpOworCisgIGZ1bmN0aW9uIGRyYXcodmVydGV4U2hhZGVy
LCBmcmFnbWVudFNoYWRlcikgeworICAgIHZhciBwcm9ncmFtID0gd3R1LmNyZWF0ZVByb2dyYW0o
Z2wsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIHRlc3RGYWlsZWQpOworCisgICAgdmFy
IHBvc0xvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhUG9zaXRpb24iKTsKKyAg
ICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgcG9zTG9jKTsKKworICAgIGdsLnVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgd3R1LmNsZWFyQW5kRHJhd0luZGV4ZWRRdWFkKGdsLCBn
cmlkUmVzLCBbMCwgMCwgMjU1LCAyNTVdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIm5vIGVycm9ycyBmcm9tIGRyYXciKTsKKworICAgIHZhciBpbWcgPSBuZXcg
VWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwg
d2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1nKTsKKyAgICByZXR1
cm4gaW1nOworICB9CisKK307CisKK3ZhciBydW5SZWZlcmVuY2VJbWFnZVRlc3QgPSBmdW5jdGlv
bihwYXJhbXMpIHsKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgZ3JpZFJlcyA9
IHBhcmFtcy5ncmlkUmVzOworICB2YXIgdmVydGV4VG9sZXJhbmNlID0gcGFyYW1zLnRvbGVyYW5j
ZSB8fCAwOworICB2YXIgZnJhZ21lbnRUb2xlcmFuY2UgPSB2ZXJ0ZXhUb2xlcmFuY2U7CisgIGlm
ICgnZnJhZ21lbnRUb2xlcmFuY2UnIGluIHBhcmFtcykKKyAgICBmcmFnbWVudFRvbGVyYW5jZSA9
IHBhcmFtcy5mcmFnbWVudFRvbGVyYW5jZSB8fCAwOworCisgIGRlc2NyaXB0aW9uKCJUZXN0aW5n
IEdMU0wgZmVhdHVyZTogIiArIHBhcmFtcy5mZWF0dXJlKTsKKworICB2YXIgd2lkdGggPSAzMjsK
KyAgdmFyIGhlaWdodCA9IDMyOworCisgIHZhciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2NhbnZhcycpOworICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgY2FudmFzLmhlaWdodCA9
IGhlaWdodDsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgYW50aWFs
aWFzOiBmYWxzZSwgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSB9KTsKKyAgaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBmaW5pc2hUZXN0
KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnY2FudmFzJyk7CisgIGNhbnZhczJkLndpZHRoID0gd2lkdGg7CisgIGNhbnZhczJk
LmhlaWdodCA9IGhlaWdodDsKKyAgdmFyIGN0eCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7
CisgIHZhciBpbWdEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsK
KworICAvLyBTdGF0ZSBmb3IgcmVmZXJlbmNlIGltYWdlcyBmb3IgdmVydGV4IHNoYWRlciB0ZXN0
cy4KKyAgLy8gVGhlc2UgYXJlIGRyYXduIHdpdGggdGhlIHNhbWUgdGVzc2VsbGF0ZWQgZ3JpZCBh
cyB0aGUgdGVzdCB2ZXJ0ZXgKKyAgLy8gc2hhZGVyIHNvIHRoYXQgdGhlIGludGVycG9sYXRpb24g
aXMgaWRlbnRpY2FsLiBUaGUgZ3JpZCBpcyByZXVzZWQKKyAgLy8gZnJvbSB0ZXN0IHRvIHRlc3Q7
IHRoZSBjb2xvcnMgYXJlIGNoYW5nZWQuCisKKyAgdmFyIGluZGV4ZWRRdWFkRm9yUmVmZXJlbmNl
VmVydGV4U2hhZGVyID0KKyAgICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgMCk7
CisgIHZhciByZWZlcmVuY2VWZXJ0ZXhTaGFkZXJQcm9ncmFtID0KKyAgICB3dHUuc2V0dXBQcm9n
cmFtKGdsLCBbIGJhc2VWZXJ0ZXhTaGFkZXJXaXRoQ29sb3IsIGJhc2VGcmFnbWVudFNoYWRlciBd
LAorICAgICAgICAgICAgICAgICAgICAgWyJhUG9zaXRpb24iLCAiYUNvbG9yIl0pOworICB2YXIg
cmVmZXJlbmNlVmVydGV4U2hhZGVyQ29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKwor
ICB2YXIgc2hhZGVySW5mb3MgPSBbCisgICAgeyB0eXBlOiAidmVydGV4IiwKKyAgICAgIGlucHV0
OiAiY29sb3IiLAorICAgICAgb3V0cHV0OiAidkNvbG9yIiwKKyAgICAgIHZlcnRleFNoYWRlclRl
bXBsYXRlOiB2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSwKKyAgICAgIGZyYWdtZW50U2hhZGVyVGVtcGxh
dGU6IGJhc2VGcmFnbWVudFNoYWRlciwKKyAgICAgIHRvbGVyYW5jZTogdmVydGV4VG9sZXJhbmNl
CisgICAgfSwKKyAgICB7IHR5cGU6ICJmcmFnbWVudCIsCisgICAgICBpbnB1dDogInZDb2xvciIs
CisgICAgICBvdXRwdXQ6ICJnbF9GcmFnQ29sb3IiLAorICAgICAgdmVydGV4U2hhZGVyVGVtcGxh
dGU6IGJhc2VWZXJ0ZXhTaGFkZXIsCisgICAgICBmcmFnbWVudFNoYWRlclRlbXBsYXRlOiBmcmFn
bWVudFNoYWRlclRlbXBsYXRlLAorICAgICAgdG9sZXJhbmNlOiBmcmFnbWVudFRvbGVyYW5jZQor
ICAgIH0KKyAgXTsKKyAgZm9yICh2YXIgc3MgPSAwOyBzcyA8IHNoYWRlckluZm9zLmxlbmd0aDsg
KytzcykgeworICAgIHZhciBzaGFkZXJJbmZvID0gc2hhZGVySW5mb3Nbc3NdOworICAgIHZhciB0
ZXN0cyA9IHBhcmFtcy50ZXN0czsKKyAgICB2YXIgdGVzdFR5cGVzID0gcGFyYW1zLmVtdUZ1bmNz
IHx8IChwYXJhbXMuYnZlY1Rlc3QgPyBidmVjVHlwZXMgOiB0eXBlcyk7CisgICAgLy8gVGVzdCB2
ZXJ0ZXggc2hhZGVycworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsr
aWkpIHsKKyAgICAgIHZhciB0eXBlID0gdGVzdFR5cGVzW2lpXTsKKyAgICAgIHZhciBpc1ZlcnRl
eCA9IChzcyA9PSAwKTsKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHZhciBzdHIgPSByZXBsYWNl
UGFyYW1zKHBhcmFtcy50ZXN0RnVuYywgeworICAgICAgICBmdW5jOiBwYXJhbXMuZmVhdHVyZSwK
KyAgICAgICAgdHlwZTogdHlwZS50eXBlLAorICAgICAgICBhcmcwOiB0eXBlLnR5cGUKKyAgICAg
IH0pOworICAgICAgdmFyIHBhc3NNc2cgPSAiVGVzdGluZzogIiArIHN0ciArICIgaW4gIiArIHNo
YWRlckluZm8udHlwZSArICIgc2hhZGVyIjsKKyAgICAgIGRlYnVnKHBhc3NNc2cpOworCisgICAg
ICB2YXIgcmVmZXJlbmNlVmVydGV4U2hhZGVyU291cmNlID0gZ2VuZXJhdGVSZWZlcmVuY2VTaGFk
ZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAgICAgICBzaGFkZXJJbmZvLnZlcnRleFNo
YWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICB0eXBlLAorICAgICAg
ICAgIHRlc3RzW2lpXS5zb3VyY2UpOworICAgICAgdmFyIHJlZmVyZW5jZUZyYWdtZW50U2hhZGVy
U291cmNlID0gZ2VuZXJhdGVSZWZlcmVuY2VTaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywK
KyAgICAgICAgICBzaGFkZXJJbmZvLmZyYWdtZW50U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAg
cGFyYW1zLAorICAgICAgICAgIHR5cGUsCisgICAgICAgICAgdGVzdHNbaWldLnNvdXJjZSk7Cisg
ICAgICB2YXIgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IGdlbmVyYXRlVGVzdFNoYWRlcigKKyAg
ICAgICAgICBzaGFkZXJJbmZvLAorICAgICAgICAgIHNoYWRlckluZm8udmVydGV4U2hhZGVyVGVt
cGxhdGUsCisgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgIHRlc3RzW2lpXS5zb3VyY2UpOwor
ICAgICAgdmFyIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IGdlbmVyYXRlVGVzdFNoYWRlcigK
KyAgICAgICAgICBzaGFkZXJJbmZvLAorICAgICAgICAgIHNoYWRlckluZm8uZnJhZ21lbnRTaGFk
ZXJUZW1wbGF0ZSwKKyAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgdGVzdHNbaWldLnNvdXJj
ZSk7CisgICAgICB2YXIgcmVmZXJlbmNlVGV4dHVyZU9yQXJyYXkgPSBnZW5lcmF0ZVJlZmVyZW5j
ZUltYWdlKAorICAgICAgICAgIGdsLAorICAgICAgICAgIHRlc3RzW2lpXS5nZW5lcmF0b3IsCisg
ICAgICAgICAgaXNWZXJ0ZXggPyBncmlkUmVzIDogd2lkdGgsCisgICAgICAgICAgaXNWZXJ0ZXgg
PyBncmlkUmVzIDogaGVpZ2h0LAorICAgICAgICAgIGlzVmVydGV4KTsKKworICAgICAgZGVidWco
IiIpOworICAgICAgdmFyIHRlc3RWZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdGVz
dFZlcnRleFNoYWRlclNvdXJjZSwgZ2wuVkVSVEVYX1NIQURFUiwgdGVzdEZhaWxlZCwgdHJ1ZSk7
CisgICAgICB2YXIgdGVzdEZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRlc3RG
cmFnbWVudFNoYWRlclNvdXJjZSwgZ2wuRlJBR01FTlRfU0hBREVSLCB0ZXN0RmFpbGVkLCB0cnVl
KTsKKyAgICAgIGRlYnVnKCIiKTsKKworCisgICAgICBpZiAocGFyc2VJbnQod3R1LmdldFVybE9w
dGlvbnMoKS5kdW1wU2hhZGVycykpIHsKKyAgICAgICAgdmFyIHZSZWZJbmZvID0geworICAgICAg
ICAgIHNoYWRlcjogcmVmZXJlbmNlVmVydGV4U2hhZGVyLAorICAgICAgICAgIHNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJyZWZlcmVuY2UgdmVydGV4IHNoYWRlciIsCisg
ICAgICAgICAgc291cmNlOiByZWZlcmVuY2VWZXJ0ZXhTaGFkZXJTb3VyY2UKKyAgICAgICAgfTsK
KyAgICAgICAgdmFyIGZSZWZJbmZvID0geworICAgICAgICAgIHNoYWRlcjogcmVmZXJlbmNlRnJh
Z21lbnRTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAgICAgICBs
YWJlbDogInJlZmVyZW5jZSBmcmFnbWVudCBzaGFkZXIiLAorICAgICAgICAgIHNvdXJjZTogcmVm
ZXJlbmNlRnJhZ21lbnRTaGFkZXJTb3VyY2UKKyAgICAgICAgfTsKKyAgICAgICAgd3R1LmR1bXBT
aGFkZXJzSW5mbyhnbCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBwYXNzTXNnLCB2UmVmSW5m
bywgZlJlZkluZm8pOworCisgICAgICAgIHZhciB2VGVzdEluZm8gPSB7CisgICAgICAgICAgc2hh
ZGVyOiB0ZXN0VmVydGV4U2hhZGVyLAorICAgICAgICAgIHNoYWRlclN1Y2Nlc3M6IHRydWUsCisg
ICAgICAgICAgbGFiZWw6ICJ0ZXN0IHZlcnRleCBzaGFkZXIiLAorICAgICAgICAgIHNvdXJjZTog
dGVzdFZlcnRleFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB2YXIgZlRlc3RJbmZv
ID0geworICAgICAgICAgIHNoYWRlcjogdGVzdEZyYWdtZW50U2hhZGVyLAorICAgICAgICAgIHNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJ0ZXN0IGZyYWdtZW50IHNoYWRl
ciIsCisgICAgICAgICAgc291cmNlOiB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UKKyAgICAgICAg
fTsKKyAgICAgICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhnbCwgd2luZG93LmxvY2F0aW9uLnBhdGhu
YW1lLCBwYXNzTXNnLCB2VGVzdEluZm8sIGZUZXN0SW5mbyk7CisgICAgICB9CisKKyAgICAgIHZh
ciByZWZEYXRhOworICAgICAgaWYgKGlzVmVydGV4KSB7CisgICAgICAgIHJlZkRhdGEgPSBkcmF3
VmVydGV4UmVmZXJlbmNlSW1hZ2UocmVmZXJlbmNlVGV4dHVyZU9yQXJyYXkpOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcmVmRGF0YSA9IGRyYXdGcmFnbWVudFJlZmVyZW5jZUltYWdlKHJlZmVy
ZW5jZVRleHR1cmVPckFycmF5KTsKKyAgICAgIH0KKyAgICAgIHZhciByZWZJbWcgPSB3dHUubWFr
ZUltYWdlRnJvbUNhbnZhcyhjYW52YXMpOworICAgICAgdmFyIHRlc3REYXRhOworICAgICAgaWYg
KGlzVmVydGV4KSB7CisgICAgICAgIHZhciByZWZlcmVuY2VGcmFnbWVudFNoYWRlciA9IHd0dS5s
b2FkU2hhZGVyKGdsLCByZWZlcmVuY2VGcmFnbWVudFNoYWRlclNvdXJjZSwgZ2wuRlJBR01FTlRf
U0hBREVSLCB0ZXN0RmFpbGVkKTsKKyAgICAgICAgdGVzdERhdGEgPSBkcmF3KAorICAgICAgICAg
IHRlc3RWZXJ0ZXhTaGFkZXIsIHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHZhciByZWZlcmVuY2VWZXJ0ZXhTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihn
bCwgcmVmZXJlbmNlVmVydGV4U2hhZGVyU291cmNlLCBnbC5WRVJURVhfU0hBREVSLCB0ZXN0RmFp
bGVkKTsKKyAgICAgICAgdGVzdERhdGEgPSBkcmF3KAorICAgICAgICAgIHJlZmVyZW5jZVZlcnRl
eFNoYWRlciwgdGVzdEZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0KKyAgICAgIHZhciB0ZXN0SW1n
ID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMoY2FudmFzKTsKKyAgICAgIHZhciB0ZXN0VG9sZXJh
bmNlID0gc2hhZGVySW5mby50b2xlcmFuY2U7CisgICAgICAvLyBQcm92aWRlIHBlci10ZXN0IHRv
bGVyYW5jZSBzbyB0aGF0IHdlIGNhbiBpbmNyZWFzZSBpdCBvbmx5IGZvciB0aG9zZSBkZXNpcmVk
LgorICAgICAgaWYgKCd0b2xlcmFuY2UnIGluIHRlc3RzW2lpXSkKKyAgICAgICAgdGVzdFRvbGVy
YW5jZSA9IHRlc3RzW2lpXS50b2xlcmFuY2UgfHwgMDsKKyAgICAgIF9yZXBvcnRSZXN1bHRzKHJl
ZkRhdGEsIHJlZkltZywgdGVzdERhdGEsIHRlc3RJbWcsIHRlc3RUb2xlcmFuY2UsCisgICAgICAg
ICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBjdHgsIGltZ0RhdGEsIHd0dSwgY2FudmFzMmQs
IGNvbnNvbGVEaXYpOworICAgIH0KKyAgfQorCisgIGZpbmlzaFRlc3QoKTsKKworICBmdW5jdGlv
biBkcmF3KHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpIHsKKyAgICB2YXIgcHJvZ3JhbSA9
IHd0dS5jcmVhdGVQcm9ncmFtKGdsLCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCB0ZXN0
RmFpbGVkKTsKKworICAgIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCAiYVBvc2l0aW9uIik7CisgICAgd3R1LnNldHVwSW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMsIHBv
c0xvYyk7CisKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIHd0dS5jbGVhckFuZERy
YXdJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgWzAsIDAsIDI1NSwgMjU1XSk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJubyBlcnJvcnMgZnJvbSBkcmF3Iik7CisK
KyAgICB2YXIgaW1nID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICBn
bC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGltZyk7CisgICAgcmV0dXJuIGltZzsKKyAgfQorCisgIGZ1bmN0aW9uIGRyYXdWZXJ0ZXhS
ZWZlcmVuY2VJbWFnZShjb2xvcnMpIHsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgaW5kZXhlZFF1YWRGb3JSZWZlcmVuY2VWZXJ0ZXhTaGFkZXJbMF0pOworICAgIGdsLmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywg
Z2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgcmVmZXJlbmNlVmVydGV4U2hhZGVyQ29sb3JCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGds
LlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGluZGV4ZWRRdWFkRm9yUmVmZXJlbmNlVmVydGV4U2hhZGVyWzFdKTsK
KyAgICBnbC51c2VQcm9ncmFtKHJlZmVyZW5jZVZlcnRleFNoYWRlclByb2dyYW0pOworICAgIHd0
dS5jbGVhckFuZERyYXdJbmRleGVkUXVhZChnbCwgZ3JpZFJlcyk7CisgICAgZ2wuZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIm5vIGVycm9ycyBmcm9t
IGRyYXciKTsKKworICAgIHZhciBpbWcgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAq
IDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgaW1nKTsKKyAgICByZXR1cm4gaW1nOworICB9CisKKyAgZnVuY3Rpb24g
ZHJhd0ZyYWdtZW50UmVmZXJlbmNlSW1hZ2UodGV4dHVyZSkgeworICAgIHZhciBwcm9ncmFtID0g
d3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKworICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVY
VFVSRTApOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAg
IHZhciB0ZXhMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworICAg
IGdsLnVuaWZvcm0xaSh0ZXhMb2MsIDApOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJubyBlcnJvcnMg
ZnJvbSBkcmF3Iik7CisKKyAgICB2YXIgaW1nID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWln
aHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAgcmV0dXJuIGltZzsKKyAgfQorCisgIC8qKgor
ICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGVpdGhlciBhIFVpbnQ4QXJyYXkgKGZvciB2ZXJ0ZXgg
c2hhZGVycykgb3IKKyAgICogV2ViR0xUZXh0dXJlIChmb3IgZnJhZ21lbnQgc2hhZGVycykgY29u
dGFpbmluZyB0aGUgcmVmZXJlbmNlCisgICAqIGltYWdlIGZvciB0aGUgZnVuY3Rpb24gYmVpbmcg
dGVzdGVkLiBFeGFjdGx5IGhvdyB0aGUgZnVuY3Rpb24gaXMKKyAgICogZXZhbHVhdGVkLCBhbmQg
dGhlIHNpemUgb2YgdGhlIHJldHVybmVkIHRleHR1cmUgb3IgYXJyYXksIGRlcGVuZHMgb24KKyAg
ICogd2hldGhlciB3ZSBhcmUgdGVzdGluZyBhIHZlcnRleCBvciBmcmFnbWVudCBzaGFkZXIuIElm
IGEgZnJhZ21lbnQKKyAgICogc2hhZGVyLCB0aGUgZnVuY3Rpb24gaXMgZXZhbHVhdGVkIGF0IHRo
ZSBwaXhlbCBjZW50ZXJzLiBJZiBhCisgICAqIHZlcnRleCBzaGFkZXIsIHRoZSBmdW5jdGlvbiBp
cyBldmFsdWF0ZWQgYXQgdGhlIHRyaWFuZ2xlJ3MKKyAgICogdmVydGljZXMuCisgICAqCisgICAq
IEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCB0byB1c2UgdG8gZ2VuZXJhdGUgdGV4dHVyZSBvYmplY3RzLgorICAgKiBAcGFyYW0geyFm
dW5jdGlvbihudW1iZXIsbnVtYmVyLG51bWJlcixudW1iZXIpOiAhQXJyYXkuPG51bWJlcj59IGdl
bmVyYXRvciBUaGUgcmVmZXJlbmNlIGltYWdlIGdlbmVyYXRvciBmdW5jdGlvbi4KKyAgICogQHBh
cmFtIHtudW1iZXJ9IHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgdGV4dHVyZSB0byBnZW5lcmF0ZSBp
ZiB0ZXN0aW5nIGEgZnJhZ21lbnQgc2hhZGVyOyB0aGUgZ3JpZCByZXNvbHV0aW9uIGlmIHRlc3Rp
bmcgYSB2ZXJ0ZXggc2hhZGVyLgorICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IFRoZSBoZWln
aHQgb2YgdGhlIHRleHR1cmUgdG8gZ2VuZXJhdGUgaWYgdGVzdGluZyBhIGZyYWdtZW50IHNoYWRl
cjsgdGhlIGdyaWQgcmVzb2x1dGlvbiBpZiB0ZXN0aW5nIGEgdmVydGV4IHNoYWRlci4KKyAgICog
QHBhcmFtIHtib29sZWFufSBpc1ZlcnRleCBUcnVlIGlmIGdlbmVyYXRpbmcgYSByZWZlcmVuY2Ug
aW1hZ2UgZm9yIGEgdmVydGV4IHNoYWRlcjsgZmFsc2UgaWYgZm9yIGEgZnJhZ21lbnQgc2hhZGVy
LgorICAgKiBAcmV0dXJuIHshV2ViR0xUZXh0dXJlfCFVaW50OEFycmF5fSBUaGUgdGV4dHVyZSBv
YmplY3Qgb3IgYXJyYXkgdGhhdCB3YXMgZ2VuZXJhdGVkLgorICAgKi8KKyAgZnVuY3Rpb24gZ2Vu
ZXJhdGVSZWZlcmVuY2VJbWFnZSgKKyAgICBnbCwKKyAgICBnZW5lcmF0b3IsCisgICAgd2lkdGgs
CisgICAgaGVpZ2h0LAorICAgIGlzVmVydGV4KSB7CisKKyAgICAvLyBOb3RlOiB0aGUgbWF0aCBp
biB0aGlzIGZ1bmN0aW9uIG11c3QgbWF0Y2ggdGhhdCBpbiB0aGUgdmVydGV4IGFuZAorICAgIC8v
IGZyYWdtZW50IHNoYWRlciB0ZW1wbGF0ZXMgYWJvdmUuCisgICAgZnVuY3Rpb24gY29tcHV0ZVRl
eENvb3JkKHgpIHsKKyAgICAgIHJldHVybiB4ICogMC41ICsgMC41OworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNvbXB1dGVWZXJ0ZXhDb2xvcih0ZXhDb29yZFgsIHRleENvb3JkWSkgeworICAgICAg
cmV0dXJuIFsgdGV4Q29vcmRYLAorICAgICAgICAgICAgICAgdGV4Q29vcmRZLAorICAgICAgICAg
ICAgICAgdGV4Q29vcmRYICogdGV4Q29vcmRZLAorICAgICAgICAgICAgICAgKDEuMCAtIHRleENv
b3JkWCkgKiB0ZXhDb29yZFkgKiAwLjUgKyAwLjUgXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAg
KiBDb21wdXRlcyBmcmFnbWVudCBjb2xvciBhY2NvcmRpbmcgdG8gdGhlIGFsZ29yaXRobSB1c2Vk
IGZvciBpbnRlcnBvbGF0aW9uCisgICAgICogaW4gT3BlbkdMIChHTEVTIDIuMCBzcGVjIDMuNS4x
LCBPcGVuR0wgNC4zIHNwZWMgMTQuNi4xKS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBjb21wdXRl
SW50ZXJwb2xhdGVkQ29sb3IodGV4Q29vcmRYLCB0ZXhDb29yZFkpIHsKKyAgICAgIC8vIENhbGN1
bGF0ZSBncmlkIGxpbmUgaW5kZXhlcyBiZWxvdyBhbmQgdG8gdGhlIGxlZnQgZnJvbSB0ZXhDb29y
ZC4KKyAgICAgIHZhciBncmlkQm90dG9tID0gTWF0aC5mbG9vcih0ZXhDb29yZFkgKiBncmlkUmVz
KTsKKyAgICAgIGlmIChncmlkQm90dG9tID09IGdyaWRSZXMpIHsKKyAgICAgICAgLS1ncmlkQm90
dG9tOworICAgICAgfQorICAgICAgdmFyIGdyaWRMZWZ0ID0gTWF0aC5mbG9vcih0ZXhDb29yZFgg
KiBncmlkUmVzKTsKKyAgICAgIGlmIChncmlkTGVmdCA9PSBncmlkUmVzKSB7CisgICAgICAgIC0t
Z3JpZExlZnQ7CisgICAgICB9CisKKyAgICAgIC8vIENhbGN1bGF0ZSBjb29yZGluYXRlcyByZWxh
dGl2ZSB0byB0aGUgZ3JpZCBjZWxsLgorICAgICAgdmFyIGNlbGxYID0gdGV4Q29vcmRYICogZ3Jp
ZFJlcyAtIGdyaWRMZWZ0OworICAgICAgdmFyIGNlbGxZID0gdGV4Q29vcmRZICogZ3JpZFJlcyAt
IGdyaWRCb3R0b207CisKKyAgICAgIC8vIEJhcnljZW50cmljIGNvb3JkaW5hdGVzIGluc2lkZSBl
aXRoZXIgdHJpYW5nbGUgQUNEIG9yIEFCQworICAgICAgLy8gYXJlIHVzZWQgYXMgd2VpZ2h0cyBm
b3IgdGhlIHZlcnRleCBjb2xvcnMgaW4gdGhlIGNvcm5lcnM6CisgICAgICAvLyBBLS1CCisgICAg
ICAvLyB8XCB8CisgICAgICAvLyB8IFx8CisgICAgICAvLyBELS1DCisKKyAgICAgIHZhciBhQ29s
b3IgPSBjb21wdXRlVmVydGV4Q29sb3IoZ3JpZExlZnQgLyBncmlkUmVzLCAoZ3JpZEJvdHRvbSAr
IDEpIC8gZ3JpZFJlcyk7CisgICAgICB2YXIgYkNvbG9yID0gY29tcHV0ZVZlcnRleENvbG9yKChn
cmlkTGVmdCArIDEpIC8gZ3JpZFJlcywgKGdyaWRCb3R0b20gKyAxKSAvIGdyaWRSZXMpOworICAg
ICAgdmFyIGNDb2xvciA9IGNvbXB1dGVWZXJ0ZXhDb2xvcigoZ3JpZExlZnQgKyAxKSAvIGdyaWRS
ZXMsIGdyaWRCb3R0b20gLyBncmlkUmVzKTsKKyAgICAgIHZhciBkQ29sb3IgPSBjb21wdXRlVmVy
dGV4Q29sb3IoZ3JpZExlZnQgLyBncmlkUmVzLCBncmlkQm90dG9tIC8gZ3JpZFJlcyk7CisKKyAg
ICAgIC8vIENhbGN1bGF0ZSB3ZWlnaHRzLgorICAgICAgdmFyIGEsIGIsIGMsIGQ7CisKKyAgICAg
IGlmIChjZWxsWCArIGNlbGxZIDwgMSkgeworICAgICAgICAvLyBJbiBib3R0b20gdHJpYW5nbGUg
QUNELgorICAgICAgICBhID0gY2VsbFk7IC8vIGFyZWEgb2YgdHJpYW5nbGUgQy1ELShjZWxsWCwg
Y2VsbFkpIHJlbGF0aXZlIHRvIEFDRAorICAgICAgICBjID0gY2VsbFg7IC8vIGFyZWEgb2YgdHJp
YW5nbGUgRC1BLShjZWxsWCwgY2VsbFkpIHJlbGF0aXZlIHRvIEFDRAorICAgICAgICBkID0gMSAt
IGEgLSBjOworICAgICAgICBiID0gMDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEluIHRv
cCB0cmlhbmdsZSBBQkMuCisgICAgICAgIGEgPSAxIC0gY2VsbFg7IC8vIGFyZWEgb2YgdGhlIHRy
aWFuZ2xlIEItQy0oY2VsbFgsIGNlbGxZKSByZWxhdGl2ZSB0byBBQkMKKyAgICAgICAgYyA9IDEg
LSBjZWxsWTsgLy8gYXJlYSBvZiB0aGUgdHJpYW5nbGUgQS1CLShjZWxsWCwgY2VsbFkpIHJlbGF0
aXZlIHRvIEFCQworICAgICAgICBiID0gMSAtIGEgLSBjOworICAgICAgICBkID0gMDsKKyAgICAg
IH0KKworICAgICAgdmFyIGludGVycG9sYXRlZCA9IFtdOworICAgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IGFDb2xvci5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgaW50ZXJwb2xhdGVkLnB1c2go
YSAqIGFDb2xvcltpaV0gKyBiICogYkNvbG9yW2lpXSArIGMgKiBjQ29sb3JbaWldICsgZCAqIGRD
b2xvcltpaV0pOworICAgICAgfQorICAgICAgcmV0dXJuIGludGVycG9sYXRlZDsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluVmFsLCBtYXhWYWwpIHsKKyAgICAgIHJldHVy
biBNYXRoLm1heChtaW5WYWwsIE1hdGgubWluKHZhbHVlLCBtYXhWYWwpKTsKKyAgICB9CisKKyAg
ICAvLyBFdmFsdWF0ZXMgdGhlIGZ1bmN0aW9uIGF0IGNsaXAgY29vcmRpbmF0ZXMgKHB4LHB5KSwg
c3RvcmluZyB0aGUKKyAgICAvLyByZXN1bHQgaW4gdGhlIGFycmF5ICJwaXhlbCIuIEVhY2ggY2hh
bm5lbCdzIHJlc3VsdCBpcyBjbGFtcGVkCisgICAgLy8gYmV0d2VlbiAwIGFuZCAyNTUuCisgICAg
ZnVuY3Rpb24gZXZhbHVhdGVBdENsaXBDb29yZHMocHgsIHB5LCBwaXhlbCwgY29sb3JGdW5jKSB7
CisgICAgICB2YXIgdGN4ID0gY29tcHV0ZVRleENvb3JkKHB4KTsKKyAgICAgIHZhciB0Y3kgPSBj
b21wdXRlVGV4Q29vcmQocHkpOworCisgICAgICB2YXIgY29sb3IgPSBjb2xvckZ1bmModGN4LCB0
Y3kpOworCisgICAgICB2YXIgb3V0cHV0ID0gZ2VuZXJhdG9yKGNvbG9yWzBdLCBjb2xvclsxXSwg
Y29sb3JbMl0sIGNvbG9yWzNdKTsKKworICAgICAgLy8gTXVsdGlwbHkgYnkgMjU2IHRvIGdldCBl
dmVuIGRpc3RyaWJ1dGlvbiBmb3IgYWxsIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEuCisgICAgICAv
LyBVc2Ugcm91bmRpbmcgcmF0aGVyIHRoYW4gdHJ1bmNhdGlvbiB0byBtb3JlIGNsb3NlbHkgbWF0
Y2ggdGhlIEdQVSdzIGJlaGF2aW9yLgorICAgICAgcGl4ZWxbMF0gPSBjbGFtcChNYXRoLnJvdW5k
KDI1NiAqIG91dHB1dFswXSksIDAsIDI1NSk7CisgICAgICBwaXhlbFsxXSA9IGNsYW1wKE1hdGgu
cm91bmQoMjU2ICogb3V0cHV0WzFdKSwgMCwgMjU1KTsKKyAgICAgIHBpeGVsWzJdID0gY2xhbXAo
TWF0aC5yb3VuZCgyNTYgKiBvdXRwdXRbMl0pLCAwLCAyNTUpOworICAgICAgcGl4ZWxbM10gPSBj
bGFtcChNYXRoLnJvdW5kKDI1NiAqIG91dHB1dFszXSksIDAsIDI1NSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZ2VuZXJhdGVGcmFnbWVudFJlZmVyZW5jZSgpIHsKKyAgICAgIHZhciBkYXRhID0g
bmV3IFVpbnQ4QXJyYXkoNCAqIHdpZHRoICogaGVpZ2h0KTsKKworICAgICAgdmFyIGhvcml6VGV4
ZWwgPSAxLjAgLyB3aWR0aDsKKyAgICAgIHZhciB2ZXJ0VGV4ZWwgPSAxLjAgLyBoZWlnaHQ7Cisg
ICAgICB2YXIgaGFsZkhvcml6VGV4ZWwgPSAwLjUgKiBob3JpelRleGVsOworICAgICAgdmFyIGhh
bGZWZXJ0VGV4ZWwgPSAwLjUgKiB2ZXJ0VGV4ZWw7CisKKyAgICAgIHZhciBwaXhlbCA9IG5ldyBB
cnJheSg0KTsKKworICAgICAgZm9yICh2YXIgeWkgPSAwOyB5aSA8IGhlaWdodDsgKyt5aSkgewor
ICAgICAgICBmb3IgKHZhciB4aSA9IDA7IHhpIDwgd2lkdGg7ICsreGkpIHsKKyAgICAgICAgICAv
LyBUaGUgZnVuY3Rpb24gbXVzdCBiZSBldmFsdWF0ZWQgYXQgcGl4ZWwgY2VudGVycy4KKworICAg
ICAgICAgIC8vIENvbXB1dGUgZGVzaXJlZCBwb3NpdGlvbiBpbiBjbGlwIHNwYWNlCisgICAgICAg
ICAgdmFyIHB4ID0gLTEuMCArIDIuMCAqIChoYWxmSG9yaXpUZXhlbCArIHhpICogaG9yaXpUZXhl
bCk7CisgICAgICAgICAgdmFyIHB5ID0gLTEuMCArIDIuMCAqIChoYWxmVmVydFRleGVsICsgeWkg
KiB2ZXJ0VGV4ZWwpOworCisgICAgICAgICAgZXZhbHVhdGVBdENsaXBDb29yZHMocHgsIHB5LCBw
aXhlbCwgY29tcHV0ZUludGVycG9sYXRlZENvbG9yKTsKKyAgICAgICAgICB2YXIgaW5kZXggPSA0
ICogKHdpZHRoICogeWkgKyB4aSk7CisgICAgICAgICAgZGF0YVtpbmRleCArIDBdID0gcGl4ZWxb
MF07CisgICAgICAgICAgZGF0YVtpbmRleCArIDFdID0gcGl4ZWxbMV07CisgICAgICAgICAgZGF0
YVtpbmRleCArIDJdID0gcGl4ZWxbMl07CisgICAgICAgICAgZGF0YVtpbmRleCArIDNdID0gcGl4
ZWxbM107CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJl
KTsKKyAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsK
KyAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1Qs
IGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICAgIHJldHVybiB0ZXh0dXJlOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGdlbmVyYXRlVmVydGV4UmVmZXJlbmNlKCkgeworICAgICAgLy8gV2Ug
Z2VuZXJhdGUgYSBVaW50OEFycmF5IHdoaWNoIGNvbnRhaW5zIHRoZSBldmFsdWF0aW9uIG9mIHRo
ZQorICAgICAgLy8gZnVuY3Rpb24gYXQgdGhlIHZlcnRpY2VzIG9mIHRoZSB0cmlhbmdsZSBtZXNo
LiBJdCBpcyBleHBlY3RlZAorICAgICAgLy8gdGhhdCB0aGUgd2lkdGggYW5kIHRoZSBoZWlnaHQg
YXJlIGlkZW50aWNhbCwgYW5kIGVxdWl2YWxlbnQKKyAgICAgIC8vIHRvIHRoZSBncmlkIHJlc29s
dXRpb24uCisgICAgICBpZiAod2lkdGggIT0gaGVpZ2h0KSB7CisgICAgICAgIHRocm93ICJ3aWR0
aCBhbmQgaGVpZ2h0IG11c3QgYmUgZXF1YWwiOworICAgICAgfQorCisgICAgICB2YXIgdGV4U2l6
ZSA9IDEgKyB3aWR0aDsKKyAgICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoNCAqIHRleFNp
emUgKiB0ZXhTaXplKTsKKworICAgICAgdmFyIHN0ZXAgPSAyLjAgLyB3aWR0aDsKKworICAgICAg
dmFyIHBpeGVsID0gbmV3IEFycmF5KDQpOworCisgICAgICBmb3IgKHZhciB5aSA9IDA7IHlpIDwg
dGV4U2l6ZTsgKyt5aSkgeworICAgICAgICBmb3IgKHZhciB4aSA9IDA7IHhpIDwgdGV4U2l6ZTsg
Kyt4aSkgeworICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBpcyBldmFsdWF0ZWQgYXQgdGhlIHRy
aWFuZ2xlcycgdmVydGljZXMuCisKKyAgICAgICAgICAvLyBDb21wdXRlIGRlc2lyZWQgcG9zaXRp
b24gaW4gY2xpcCBzcGFjZQorICAgICAgICAgIHZhciBweCA9IC0xLjAgKyAoeGkgKiBzdGVwKTsK
KyAgICAgICAgICB2YXIgcHkgPSAtMS4wICsgKHlpICogc3RlcCk7CisKKyAgICAgICAgICBldmFs
dWF0ZUF0Q2xpcENvb3JkcyhweCwgcHksIHBpeGVsLCBjb21wdXRlVmVydGV4Q29sb3IpOworICAg
ICAgICAgIHZhciBpbmRleCA9IDQgKiAodGV4U2l6ZSAqIHlpICsgeGkpOworICAgICAgICAgIGRh
dGFbaW5kZXggKyAwXSA9IHBpeGVsWzBdOworICAgICAgICAgIGRhdGFbaW5kZXggKyAxXSA9IHBp
eGVsWzFdOworICAgICAgICAgIGRhdGFbaW5kZXggKyAyXSA9IHBpeGVsWzJdOworICAgICAgICAg
IGRhdGFbaW5kZXggKyAzXSA9IHBpeGVsWzNdOworICAgICAgICB9CisgICAgICB9CisKKyAgICAg
IHJldHVybiBkYXRhOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEJvZHkg
b2YgZ2VuZXJhdGVSZWZlcmVuY2VJbWFnZQorICAgIC8vCisKKyAgICBpZiAoaXNWZXJ0ZXgpIHsK
KyAgICAgIHJldHVybiBnZW5lcmF0ZVZlcnRleFJlZmVyZW5jZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICByZXR1cm4gZ2VuZXJhdGVGcmFnbWVudFJlZmVyZW5jZSgpOworICAgIH0KKyAgfQorfTsK
KworcmV0dXJuIHsKKyAgLyoqCisgICAqIHJ1bnMgYSBidW5jaCBvZiBHTFNMIHRlc3RzIHVzaW5n
IHRoZSBwYXNzZWQgaW4gcGFyYW1ldGVycworICAgKiBUaGUgcGFyYW1ldGVycyBhcmU6CisgICAq
CisgICAqIGZlYXR1cmU6CisgICAqICAgIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyB0
ZXN0ZWQgKGVnLCBzaW4sIGRvdCwKKyAgICogICAgbm9ybWFsaXplKQorICAgKgorICAgKiB0ZXN0
RnVuYzoKKyAgICogICAgVGhlIHByb3RvdHlwZSBvZiBmdW5jdGlvbiB0byBiZSB0ZXN0ZWQgbm90
IGluY2x1ZGluZyB0aGUKKyAgICogICAgcmV0dXJuIHR5cGUuCisgICAqCisgICAqIGVtdUZ1bmM6
CisgICAqICAgIEEgYmFzZSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGVt
dWxhdGlvbgorICAgKiAgICBmdW5jdGlvbnMuIEV4YW1wbGUgZm9yICdjZWlsJworICAgKgorICAg
KiAgICAgIGZsb2F0ICQoZnVuYylfYmFzZShmbG9hdCB2YWx1ZSkgeworICAgKiAgICAgICAgZmxv
YXQgbSA9IG1vZCh2YWx1ZSwgMS4wKTsKKyAgICogICAgICAgIHJldHVybiBtICE9IDAuMCA/ICh2
YWx1ZSArIDEuMCAtIG0pIDogdmFsdWU7CisgICAqICAgICAgfQorICAgKgorICAgKiBhcmdzOgor
ICAgKiAgICBUaGUgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbgorICAgKgorICAgKiBiYXNlQXJn
czogKG9wdGlvbmFsKQorICAgKiAgICBUaGUgYXJndW1lbnRzIHdoZW4gYSBiYXNlIGZ1bmN0aW9u
IGlzIHVzZWQgdG8gY3JlYXRlIGFuCisgICAqICAgIGVtdWxhdGlvbiBmdW5jdGlvbi4gRm9yIGV4
YW1wbGUgJ2Zsb2F0IHNpZ25fYmFzZShmbG9hdCB2KScKKyAgICogICAgaXMgdXNlZCB0byBpbXBs
ZW1lbmVudCB2ZWMyIHNpZ25fZW11KHZlYzIgdikuCisgICAqCisgICAqIHNpbXBsZUVtdToKKyAg
ICogICAgaWYgc3VwcGxpZWQsIHRoZSBjb2RlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUg
YWxsCisgICAqICAgIGZ1bmN0aW9ucyBmb3IgYWxsIHR5cGVzLgorICAgKgorICAgKiAgICBFeGFt
cGxlIGZvciAnbm9ybWFsaXplJzoKKyAgICoKKyAgICogICAgICAgICQodHlwZSkgJChmdW5jKV9l
bXUoJChhcmdzKSkgeworICAgKiAgICAgICAgICAgcmV0dXJuIHZhbHVlIC8gbGVuZ3RoKHZhbHVl
KTsKKyAgICogICAgICAgIH0KKyAgICoKKyAgICogZ3JpZFJlczogKG9wdGlvbmFsKQorICAgKiAg
ICBUaGUgcmVzb2x1dGlvbiBvZiB0aGUgbWVzaCB0byBnZW5lcmF0ZS4gVGhlIGRlZmF1bHQgaXMg
YQorICAgKiAgICAxeDEgZ3JpZCBidXQgbWFueSB2ZXJ0ZXggc2hhZGVycyBuZWVkIGEgaGlnaGVy
IHJlc29sdXRpb24KKyAgICogICAgb3RoZXJ3aXNlIHRoZSBvbmx5IHZhbHVlcyBwYXNzZWQgaW4g
YXJlIHRoZSA0IGNvcm5lcnMKKyAgICogICAgd2hpY2ggb2Z0ZW4gaGF2ZSB0aGUgc2FtZSB2YWx1
ZS4KKyAgICoKKyAgICogdGVzdHM6CisgICAqICAgIFRoZSBjb2RlIGZvciBlYWNoIHRlc3QuIEl0
IGlzIGFzc3VtZWQgdGhlIHRlc3RzIGFyZSBmb3IKKyAgICogICAgZmxvYXQsIHZlYzIsIHZlYzMs
IHZlYzQgaW4gdGhhdCBvcmRlci4KKyAgICoKKyAgICogdG9sZXJhbmNlOiAob3B0aW9uYWwpCisg
ICAqICAgIEFsbG93IHNvbWUgdG9sZXJhbmNlIGluIHRoZSBjb21wYXJpc29ucy4gVGhlIHRvbGVy
YW5jZSBpcyBhcHBsaWVkIHRvCisgICAqICAgIGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFk
ZXJzLiBUaGUgZGVmYXVsdCB0b2xlcmFuY2UgaXMgMCwgbWVhbmluZworICAgKiAgICB0aGUgdmFs
dWVzIGhhdmUgdG8gYmUgaWRlbnRpY2FsLgorICAgKgorICAgKiBmcmFnbWVudFRvbGVyYW5jZTog
KG9wdGlvbmFsKQorICAgKiAgICBTcGVjaWZ5IGEgdG9sZXJhbmNlIHdoaWNoIG9ubHkgYXBwbGll
cyB0byBmcmFnbWVudCBzaGFkZXJzLiBUaGUKKyAgICogICAgZnJhZ21lbnQtb25seSB0b2xlcmFu
Y2Ugd2lsbCBvdmVycmlkZSB0aGUgc2hhcmVkIHRvbGVyYW5jZSBmb3IKKyAgICogICAgZnJhZ21l
bnQgc2hhZGVycyBpZiBib3RoIGFyZSBzcGVjaWZpZWQuIEZyYWdtZW50IHNoYWRlcnMgdXN1YWxs
eQorICAgKiAgICB1c2UgbWVkaXVtcCBmbG9hdCBwcmVjaXNpb24gc28gdGhleSBzb21ldGltZXMg
cmVxdWlyZSBoaWdoZXIgdG9sZXJhbmNlCisgICAqICAgIHRoYW4gdmVydGV4IHNoYWRlcnMgd2hp
Y2ggdXNlIGhpZ2hwIGJ5IGRlZmF1bHQuCisgICAqLworICBydW5GZWF0dXJlVGVzdDogcnVuRmVh
dHVyZVRlc3QsCisKKyAgLyoKKyAgICogUnVucyBhIGJ1bmNoIG9mIEdMU0wgdGVzdHMgdXNpbmcg
dGhlIHBhc3NlZCBpbiBwYXJhbWV0ZXJzCisgICAqCisgICAqIFRoZSBwYXJhbWV0ZXJzIGFyZToK
KyAgICoKKyAgICogdGVzdHM6CisgICAqICAgIEFycmF5IG9mIHRlc3RzLiBGb3IgZWFjaCB0ZXN0
IHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQKKyAgICoKKyAgICogICAgbmFt
ZToKKyAgICogICAgICAgc29tZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGVzdAorICAgKiAgICByZWZl
cmVuY2U6CisgICAqICAgICAgIHBhcmFtZXRlcnMgZm9yIHRoZSByZWZlcmVuY2Ugc2hhZGVyIChz
ZWUgYmVsb3cpCisgICAqICAgIHRlc3Q6CisgICAqICAgICAgIHBhcmFtZXRlcnMgZm9yIHRoZSB0
ZXN0IHNoYWRlciAoc2VlIGJlbG93KQorICAgKgorICAgKiAgICBUaGUgcGFyYW1ldGVyIGZvciB0
aGUgcmVmZXJlbmNlIGFuZCB0ZXN0IHNoYWRlcnMgYXJlCisgICAqCisgICAqICAgIHNoYWRlcjog
dGhlIEdMU0wgZm9yIHRoZSBzaGFkZXIKKyAgICogICAgc3ViczogYW55IHN1YnN0aXR1dGlvbnMg
eW91IHdpc2ggdG8gZGVmaW5lIGZvciB0aGUgc2hhZGVyLgorICAgKgorICAgKiAgICBFYWNoIHNo
YWRlciBpcyBjcmVhdGVkIGZyb20gYSBiYXNpYyB0ZW1wbGF0ZSB0aGF0CisgICAqICAgIGRlZmlu
ZXMgYW4gaW5wdXQgYW5kIGFuIG91dHB1dC4gWW91IGNhbiBzZWUgdGhlCisgICAqICAgIHRlbXBs
YXRlcyBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4gVGhlIGlucHV0IGFuZCBvdXRwdXQKKyAgICog
ICAgY2hhbmdlIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgZ2VuZXJhdGluZwor
ICAgKiAgICBhIHZlcnRleCBvciBmcmFnbWVudCBzaGFkZXIuCisgICAqCisgICAqICAgIEFsbCB0
aGlzIGNvZGUgZnVuY3Rpb24gZG9lcyBpcyBhIGJ1bmNoIG9mIHN0cmluZyBzdWJzdGl0dXRpb25z
LgorICAgKiAgICBBIHN1YnN0aXR1dGlvbiBpcyBkZWZpbmVkIGJ5ICQobmFtZSkuIElmIG5hbWUg
aXMgZm91bmQgaW4KKyAgICogICAgdGhlICdzdWJzJyBwYXJhbWV0ZXIgaXQgaXMgcmVwbGFjZWQu
IDQgc3BlY2lhbCBuYW1lcyBleGlzdC4KKyAgICoKKyAgICogICAgJ2lucHV0JyB0aGUgaW5wdXQg
dG8geW91ciBHTFNMLiBBbHdheXMgYSB2ZWM0LiBBbGwgY2hhbmdlCisgICAqICAgIGZyb20gMCB0
byAxIG92ZXIgdGhlIHF1YWQgdG8gYmUgZHJhd24uCisgICAqCisgICAqICAgICdvdXRwdXQnIHRo
ZSBvdXRwdXQgY29sb3IuIEFsc28gYSB2ZWM0CisgICAqCisgICAqICAgICdlbXUnIGEgcGxhY2Ug
dG8gaW5zZXJ0IGV4dHJhIHN0dWZmCisgICAqICAgICdleHRyYScgYSBwbGFjZSB0byBpbnNlcnQg
ZXh0cmEgc3R1ZmYuCisgICAqCisgICAqICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIHRlbXBsYXRl
cyBsaWtlIHRoaXMKKyAgICoKKyAgICogICAgICAgJChleHRyYSkKKyAgICogICAgICAgJChlbXUp
CisgICAqCisgICAqICAgICAgIHZvaWQgbWFpbigpIHsKKyAgICogICAgICAgICAgLy8gZG8gbWF0
aCB0byBjYWxjdWxhdGUgaW5wdXQKKyAgICogICAgICAgICAgLi4uCisgICAqCisgICAqICAgICAg
ICAgICQoc2hhZGVyKQorICAgKiAgICAgICB9CisgICAqCisgICAqICAgIFlvdXIgc2hhZGVyIGZp
cnN0IGhhcyBhbnkgc3VicyB5b3UgcHJvdmlkZWQgYXBwbGllZCBhcyB3ZWxsCisgICAqICAgIGFz
ICdpbnB1dCcgYW5kICdvdXRwdXQnCisgICAqCisgICAqICAgIEl0IGlzIHRoZW4gaW5zZXJ0ZWQg
aW50byB0aGUgdGVtcGxhdGUgd2hpY2ggaXMgYWxzbyBwcm92aWRlZAorICAgKiAgICB3aXRoIHlv
dXIgc3Vicy4KKyAgICoKKyAgICogZ3JpZFJlczogKG9wdGlvbmFsKQorICAgKiAgICBUaGUgcmVz
b2x1dGlvbiBvZiB0aGUgbWVzaCB0byBnZW5lcmF0ZS4gVGhlIGRlZmF1bHQgaXMgYQorICAgKiAg
ICAxeDEgZ3JpZCBidXQgbWFueSB2ZXJ0ZXggc2hhZGVycyBuZWVkIGEgaGlnaGVyIHJlc29sdXRp
b24KKyAgICogICAgb3RoZXJ3aXNlIHRoZSBvbmx5IHZhbHVlcyBwYXNzZWQgaW4gYXJlIHRoZSA0
IGNvcm5lcnMKKyAgICogICAgd2hpY2ggb2Z0ZW4gaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KKyAgICoK
KyAgICogdG9sZXJhbmNlOiAob3B0aW9uYWwpCisgICAqICAgIEFsbG93IHNvbWUgdG9sZXJhbmNl
IGluIHRoZSBjb21wYXJpc29ucy4gVGhlIHRvbGVyYW5jZSBpcyBhcHBsaWVkIHRvCisgICAqICAg
IGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLiBUaGUgZGVmYXVsdCB0b2xlcmFuY2Ug
aXMgMCwgbWVhbmluZworICAgKiAgICB0aGUgdmFsdWVzIGhhdmUgdG8gYmUgaWRlbnRpY2FsLgor
ICAgKgorICAgKiBmcmFnbWVudFRvbGVyYW5jZTogKG9wdGlvbmFsKQorICAgKiAgICBTcGVjaWZ5
IGEgdG9sZXJhbmNlIHdoaWNoIG9ubHkgYXBwbGllcyB0byBmcmFnbWVudCBzaGFkZXJzLiBUaGUK
KyAgICogICAgZnJhZ21lbnQtb25seSB0b2xlcmFuY2Ugd2lsbCBvdmVycmlkZSB0aGUgc2hhcmVk
IHRvbGVyYW5jZSBmb3IKKyAgICogICAgZnJhZ21lbnQgc2hhZGVycyBpZiBib3RoIGFyZSBzcGVj
aWZpZWQuIEZyYWdtZW50IHNoYWRlcnMgdXN1YWxseQorICAgKiAgICB1c2UgbWVkaXVtcCBmbG9h
dCBwcmVjaXNpb24gc28gdGhleSBzb21ldGltZXMgcmVxdWlyZSBoaWdoZXIgdG9sZXJhbmNlCisg
ICAqICAgIHRoYW4gdmVydGV4IHNoYWRlcnMgd2hpY2ggdXNlIGhpZ2hwLgorICAgKi8KKyAgcnVu
QmFzaWNUZXN0OiBydW5CYXNpY1Rlc3QsCisKKyAgLyoqCisgICAqIFJ1bnMgYSBidW5jaCBvZiBH
TFNMIHRlc3RzIHVzaW5nIHRoZSBwYXNzZWQgaW4gcGFyYW1ldGVycy4gVGhlCisgICAqIGV4cGVj
dGVkIHJlc3VsdHMgYXJlIGNvbXB1dGVkIGFzIGEgcmVmZXJlbmNlIGltYWdlIGluIEphdmFTY3Jp
cHQKKyAgICogaW5zdGVhZCBvZiBvbiB0aGUgR1BVLiBUaGUgcGFyYW1ldGVycyBhcmU6CisgICAq
CisgICAqIGZlYXR1cmU6CisgICAqICAgIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyB0
ZXN0ZWQgKGVnLCBzaW4sIGRvdCwKKyAgICogICAgbm9ybWFsaXplKQorICAgKgorICAgKiB0ZXN0
RnVuYzoKKyAgICogICAgVGhlIHByb3RvdHlwZSBvZiBmdW5jdGlvbiB0byBiZSB0ZXN0ZWQgbm90
IGluY2x1ZGluZyB0aGUKKyAgICogICAgcmV0dXJuIHR5cGUuCisgICAqCisgICAqIGFyZ3M6Cisg
ICAqICAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uCisgICAqCisgICAqIGdyaWRSZXM6
IChvcHRpb25hbCkKKyAgICogICAgVGhlIHJlc29sdXRpb24gb2YgdGhlIG1lc2ggdG8gZ2VuZXJh
dGUuIFRoZSBkZWZhdWx0IGlzIGEKKyAgICogICAgMXgxIGdyaWQgYnV0IG1hbnkgdmVydGV4IHNo
YWRlcnMgbmVlZCBhIGhpZ2hlciByZXNvbHV0aW9uCisgICAqICAgIG90aGVyd2lzZSB0aGUgb25s
eSB2YWx1ZXMgcGFzc2VkIGluIGFyZSB0aGUgNCBjb3JuZXJzCisgICAqICAgIHdoaWNoIG9mdGVu
IGhhdmUgdGhlIHNhbWUgdmFsdWUuCisgICAqCisgICAqIHRlc3RzOgorICAgKiAgICBBcnJheSBv
ZiB0ZXN0cy4gSXQgaXMgYXNzdW1lZCB0aGUgdGVzdHMgYXJlIGZvciBmbG9hdCwgdmVjMiwKKyAg
ICogICAgdmVjMywgdmVjNCBpbiB0aGF0IG9yZGVyLiBGb3IgZWFjaCB0ZXN0IHRoZSBmb2xsb3dp
bmcKKyAgICogICAgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQ6CisgICAqCisgICAqICAgICAgIHNv
dXJjZTogdGhlIEdMU0wgc291cmNlIGNvZGUgZm9yIHRoZSB0ZXN0cworICAgKgorICAgKiAgICAg
ICBnZW5lcmF0b3I6IGEgSmF2YVNjcmlwdCBmdW5jdGlvbiB0YWtpbmcgZm91ciBwYXJhbWV0ZXJz
CisgICAqICAgICAgIHdoaWNoIGV2YWx1YXRlcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgR0xT
TCBzb3VyY2UsCisgICAqICAgICAgIHJldHVybmluZyBpdHMgcmVzdWx0IGFzIGEgbmV3bHkgYWxs
b2NhdGVkIGFycmF5LgorICAgKgorICAgKiAgICAgICB0b2xlcmFuY2U6IChvcHRpb25hbCkgYSBw
ZXItdGVzdCB0b2xlcmFuY2UuCisgICAqCisgICAqIGV4dHJhOiAob3B0aW9uYWwpCisgICAqICAg
IEV4dHJhIEdMU0wgY29kZSBpbnNlcnRlZCBhdCB0aGUgdG9wIG9mIGVhY2ggdGVzdCdzIHNoYWRl
ci4KKyAgICoKKyAgICogdG9sZXJhbmNlOiAob3B0aW9uYWwpCisgICAqICAgIEFsbG93IHNvbWUg
dG9sZXJhbmNlIGluIHRoZSBjb21wYXJpc29ucy4gVGhlIHRvbGVyYW5jZSBpcyBhcHBsaWVkIHRv
CisgICAqICAgIGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLiBUaGUgZGVmYXVsdCB0
b2xlcmFuY2UgaXMgMCwgbWVhbmluZworICAgKiAgICB0aGUgdmFsdWVzIGhhdmUgdG8gYmUgaWRl
bnRpY2FsLgorICAgKgorICAgKiBmcmFnbWVudFRvbGVyYW5jZTogKG9wdGlvbmFsKQorICAgKiAg
ICBTcGVjaWZ5IGEgdG9sZXJhbmNlIHdoaWNoIG9ubHkgYXBwbGllcyB0byBmcmFnbWVudCBzaGFk
ZXJzLiBUaGUKKyAgICogICAgZnJhZ21lbnQtb25seSB0b2xlcmFuY2Ugd2lsbCBvdmVycmlkZSB0
aGUgc2hhcmVkIHRvbGVyYW5jZSBmb3IKKyAgICogICAgZnJhZ21lbnQgc2hhZGVycyBpZiBib3Ro
IGFyZSBzcGVjaWZpZWQuIEZyYWdtZW50IHNoYWRlcnMgdXN1YWxseQorICAgKiAgICB1c2UgbWVk
aXVtcCBmbG9hdCBwcmVjaXNpb24gc28gdGhleSBzb21ldGltZXMgcmVxdWlyZSBoaWdoZXIgdG9s
ZXJhbmNlCisgICAqICAgIHRoYW4gdmVydGV4IHNoYWRlcnMgd2hpY2ggdXNlIGhpZ2hwLgorICAg
Ki8KKyAgcnVuUmVmZXJlbmNlSW1hZ2VUZXN0OiBydW5SZWZlcmVuY2VJbWFnZVRlc3QsCisKKyAg
bm9uZTogZmFsc2UKK307CisKK30oKSk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUuanMKaW5k
ZXggYWFlZjdjMDQxMzE2Zjk4OTMwZmM1MTg4NDQ5YmE3NTg4YzQxYTQ1Mi4uYTBkYTM0ODllN2Uz
ZGU3NzhjMTJjOWJhMmI5ZjE1MTk3MjY4OGQwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUuanMKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUu
anMKQEAgLTczNiw5ICs3MzYsNyBAQCBmdW5jdGlvbiB3ZWJnbEhhcm5lc3NDb2xsZWN0R2FyYmFn
ZSgpIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFdlYktpdCdzIE1pbmlCcm93
c2VyIHdpdGggdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0OgotICAgIC8v
ICAgZXhwb3J0IEpTQ191c2VEb2xsYXJWTT0xCi0gICAgLy8gICBleHBvcnQgX19YUENfSlNDX3Vz
ZURvbGxhclZNPTEKKyAgICAvLyBXZWJLaXQncyBNaW5pQnJvd3Nlci4KICAgICBpZiAod2luZG93
LiR2bSkgewogICAgICAgICB3aW5kb3cuJHZtLmdjKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Bu
Z2xpYi5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pz
L3BuZ2xpYi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmE5Yjk5ZTA4NWNhOTgwMzJiNTY1YmViNzhkNWU2Y2E4
ZjZlYzEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvcG5nbGliLmpzCkBAIC0wLDAgKzEsMjA3IEBACisvKioKKyogQSBo
YW5keSBjbGFzcyB0byBjYWxjdWxhdGUgY29sb3IgdmFsdWVzLgorKgorKiBAdmVyc2lvbiAxLjAK
KyogQGF1dGhvciBSb2JlcnQgRWlzZWxlIDxyb2JlcnRAeGFyZy5vcmc+CisqIEBjb3B5cmlnaHQg
Q29weXJpZ2h0IChjKSAyMDEwLCBSb2JlcnQgRWlzZWxlCisqIEBsaW5rIGh0dHA6Ly93d3cueGFy
Zy5vcmcvMjAxMC8wMy9nZW5lcmF0ZS1jbGllbnQtc2lkZS1wbmctZmlsZXMtdXNpbmctamF2YXNj
cmlwdC8KKyogQGxpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt
bGljZW5zZS5waHAgQlNEIExpY2Vuc2UKKyoKKyovCisKKyhmdW5jdGlvbigpIHsKKworICAgIC8v
IGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoYXQgY3R4CisgICAgZnVuY3Rpb24gd3JpdGUoYnVmZmVy
LCBvZmZzKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFyZ3VtZW50c1tpXS5sZW5n
dGg7IGorKykgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzKytdID0gYXJndW1lbnRzW2ld
LmNoYXJBdChqKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIGJ5dGUyKHcpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKHcgPj4g
OCkgJiAyNTUsIHcgJiAyNTUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJ5dGU0KHcpIHsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKHcgPj4gMjQpICYgMjU1LCAodyA+PiAx
NikgJiAyNTUsICh3ID4+IDgpICYgMjU1LCB3ICYgMjU1KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBieXRlMmxzYih3KSB7CisgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHcgJiAy
NTUsICh3ID4+IDgpICYgMjU1KTsKKyAgICB9CisKKyAgICB3aW5kb3cuUE5HbGliID0gZnVuY3Rp
b24od2lkdGgsaGVpZ2h0LGRlcHRoKSB7CisKKyAgICAgICAgdGhpcy53aWR0aCAgID0gd2lkdGg7
CisgICAgICAgIHRoaXMuaGVpZ2h0ICA9IGhlaWdodDsKKyAgICAgICAgdGhpcy5kZXB0aCAgID0g
ZGVwdGg7CisKKyAgICAgICAgLy8gcGl4ZWwgZGF0YSBhbmQgcm93IGZpbHRlciBpZGVudGlmaWVy
IHNpemUKKyAgICAgICAgdGhpcy5waXhfc2l6ZSA9IGhlaWdodCAqICh3aWR0aCArIDEpOworCisg
ICAgICAgIC8vIGRlZmxhdGUgaGVhZGVyLCBwaXhfc2l6ZSwgYmxvY2sgaGVhZGVycywgYWRsZXIz
MiBjaGVja3N1bQorICAgICAgICB0aGlzLmRhdGFfc2l6ZSA9IDIgKyB0aGlzLnBpeF9zaXplICsg
NSAqIE1hdGguZmxvb3IoKDB4ZmZmZSArIHRoaXMucGl4X3NpemUpIC8gMHhmZmZmKSArIDQ7CisK
KyAgICAgICAgLy8gb2Zmc2V0cyBhbmQgc2l6ZXMgb2YgUG5nIGNodW5rcworICAgICAgICB0aGlz
LmloZHJfb2ZmcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUhE
UiBvZmZzZXQgYW5kIHNpemUKKyAgICAgICAgdGhpcy5paGRyX3NpemUgPSA0ICsgNCArIDEzICsg
NDsKKyAgICAgICAgdGhpcy5wbHRlX29mZnMgPSB0aGlzLmloZHJfb2ZmcyArIHRoaXMuaWhkcl9z
aXplOyAgICAvLyBQTFRFIG9mZnNldCBhbmQgc2l6ZQorICAgICAgICB0aGlzLnBsdGVfc2l6ZSA9
IDQgKyA0ICsgMyAqIGRlcHRoICsgNDsKKyAgICAgICAgdGhpcy50cm5zX29mZnMgPSB0aGlzLnBs
dGVfb2ZmcyArIHRoaXMucGx0ZV9zaXplOyAgICAvLyB0Uk5TIG9mZnNldCBhbmQgc2l6ZQorICAg
ICAgICB0aGlzLnRybnNfc2l6ZSA9IDQgKyA0ICsgZGVwdGggKyA0OworICAgICAgICB0aGlzLmlk
YXRfb2ZmcyA9IHRoaXMudHJuc19vZmZzICsgdGhpcy50cm5zX3NpemU7ICAgIC8vIElEQVQgb2Zm
c2V0IGFuZCBzaXplCisgICAgICAgIHRoaXMuaWRhdF9zaXplID0gNCArIDQgKyB0aGlzLmRhdGFf
c2l6ZSArIDQ7CisgICAgICAgIHRoaXMuaWVuZF9vZmZzID0gdGhpcy5pZGF0X29mZnMgKyB0aGlz
LmlkYXRfc2l6ZTsgICAgLy8gSUVORCBvZmZzZXQgYW5kIHNpemUKKyAgICAgICAgdGhpcy5pZW5k
X3NpemUgPSA0ICsgNCArIDQ7CisgICAgICAgIHRoaXMuYnVmZmVyX3NpemUgID0gdGhpcy5pZW5k
X29mZnMgKyB0aGlzLmllbmRfc2l6ZTsgICAgLy8gdG90YWwgUE5HIHNpemUKKworICAgICAgICB0
aGlzLmJ1ZmZlciAgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgdGhpcy5wYWxldHRlID0gbmV3IE9i
amVjdCgpOworICAgICAgICB0aGlzLnBpbmRleCAgPSAwOworCisgICAgICAgIHZhciBfY3JjMzIg
PSBuZXcgQXJyYXkoKTsKKworICAgICAgICAvLyBpbml0aWFsaXplIGJ1ZmZlciB3aXRoIHplcm8g
Ynl0ZXMKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJ1ZmZlcl9zaXplOyBpKysp
IHsKKyAgICAgICAgICAgIHRoaXMuYnVmZmVyW2ldID0gIlx4MDAiOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gaW5pdGlhbGl6ZSBub24temVybyBlbGVtZW50cworICAgICAgICB3cml0ZSh0aGlz
LmJ1ZmZlciwgdGhpcy5paGRyX29mZnMsIGJ5dGU0KHRoaXMuaWhkcl9zaXplIC0gMTIpLCAnSUhE
UicsIGJ5dGU0KHdpZHRoKSwgYnl0ZTQoaGVpZ2h0KSwgIlx4MDhceDAzIik7CisgICAgICAgIHdy
aXRlKHRoaXMuYnVmZmVyLCB0aGlzLnBsdGVfb2ZmcywgYnl0ZTQodGhpcy5wbHRlX3NpemUgLSAx
MiksICdQTFRFJyk7CisgICAgICAgIHdyaXRlKHRoaXMuYnVmZmVyLCB0aGlzLnRybnNfb2Zmcywg
Ynl0ZTQodGhpcy50cm5zX3NpemUgLSAxMiksICd0Uk5TJyk7CisgICAgICAgIHdyaXRlKHRoaXMu
YnVmZmVyLCB0aGlzLmlkYXRfb2ZmcywgYnl0ZTQodGhpcy5pZGF0X3NpemUgLSAxMiksICdJREFU
Jyk7CisgICAgICAgIHdyaXRlKHRoaXMuYnVmZmVyLCB0aGlzLmllbmRfb2ZmcywgYnl0ZTQodGhp
cy5pZW5kX3NpemUgLSAxMiksICdJRU5EJyk7CisKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSBkZWZs
YXRlIGhlYWRlcgorICAgICAgICB2YXIgaGVhZGVyID0gKCg4ICsgKDcgPDwgNCkpIDw8IDgpIHwg
KDMgPDwgNik7CisgICAgICAgIGhlYWRlcis9IDMxIC0gKGhlYWRlciAlIDMxKTsKKworICAgICAg
ICB3cml0ZSh0aGlzLmJ1ZmZlciwgdGhpcy5pZGF0X29mZnMgKyA4LCBieXRlMihoZWFkZXIpKTsK
KworICAgICAgICAvLyBpbml0aWFsaXplIGRlZmxhdGUgYmxvY2sgaGVhZGVycworICAgICAgICBm
b3IgKHZhciBpID0gMDsgKGkgPDwgMTYpIC0gMSA8IHRoaXMucGl4X3NpemU7IGkrKykgeworICAg
ICAgICAgICAgdmFyIHNpemUsIGJpdHM7CisgICAgICAgICAgICBpZiAoaSArIDB4ZmZmZiA8IHRo
aXMucGl4X3NpemUpIHsKKyAgICAgICAgICAgICAgICBzaXplID0gMHhmZmZmOworICAgICAgICAg
ICAgICAgIGJpdHMgPSAiXHgwMCI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHNpemUgPSB0aGlzLnBpeF9zaXplIC0gKGkgPDwgMTYpIC0gaTsKKyAgICAgICAgICAgICAg
ICBiaXRzID0gIlx4MDEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd3JpdGUodGhpcy5i
dWZmZXIsIHRoaXMuaWRhdF9vZmZzICsgOCArIDIgKyAoaSA8PCAxNikgKyAoaSA8PCAyKSwgYml0
cywgYnl0ZTJsc2Ioc2l6ZSksIGJ5dGUybHNiKH5zaXplKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvKiBDcmVhdGUgY3JjMzIgbG9va3VwIHRhYmxlICovCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMjU2OyBpKyspIHsKKyAgICAgICAgICAgIHZhciBjID0gaTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgJiAxKSB7
CisgICAgICAgICAgICAgICAgICAgIGMgPSAtMzA2Njc0OTEyIF4gKChjID4+IDEpICYgMHg3ZmZm
ZmZmZik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9
IChjID4+IDEpICYgMHg3ZmZmZmZmZjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBfY3JjMzJbaV0gPSBjOworICAgICAgICB9CisKKyAgICAgICAgLy8gY29t
cHV0ZSB0aGUgaW5kZXggaW50byBhIHBuZyBmb3IgYSBnaXZlbiBwaXhlbAorICAgICAgICB0aGlz
LmluZGV4ID0gZnVuY3Rpb24oeCx5KSB7CisgICAgICAgICAgICB2YXIgaSA9IHkgKiAodGhpcy53
aWR0aCArIDEpICsgeCArIDE7CisgICAgICAgICAgICB2YXIgaiA9IHRoaXMuaWRhdF9vZmZzICsg
OCArIDIgKyA1ICogTWF0aC5mbG9vcigoaSAvIDB4ZmZmZikgKyAxKSArIGk7CisgICAgICAgICAg
ICByZXR1cm4gajsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNvbnZlcnQgYSBjb2xvciBhbmQg
YnVpbGQgdXAgdGhlIHBhbGV0dGUKKyAgICAgICAgdGhpcy5jb2xvciA9IGZ1bmN0aW9uKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKSB7CisKKyAgICAgICAgICAgIGFscGhhID0gYWxwaGEgPj0gMCA/
IGFscGhhIDogMjU1OworICAgICAgICAgICAgdmFyIGNvbG9yID0gKCgoKChhbHBoYSA8PCA4KSB8
IHJlZCkgPDwgOCkgfCBncmVlbikgPDwgOCkgfCBibHVlOworCisgICAgICAgICAgICBpZiAodHlw
ZW9mIHRoaXMucGFsZXR0ZVtjb2xvcl0gPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodGhpcy5waW5kZXggPT0gdGhpcy5kZXB0aCkgcmV0dXJuICJceDAwIjsKKworICAgICAg
ICAgICAgICAgIHZhciBuZHggPSB0aGlzLnBsdGVfb2ZmcyArIDggKyAzICogdGhpcy5waW5kZXg7
CisKKyAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltuZHggKyAwXSA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUocmVkKTsKKyAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltuZHggKyAxXSA9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoZ3JlZW4pOworICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyW25keCAr
IDJdID0gU3RyaW5nLmZyb21DaGFyQ29kZShibHVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLmJ1
ZmZlclt0aGlzLnRybnNfb2Zmcys4K3RoaXMucGluZGV4XSA9IFN0cmluZy5mcm9tQ2hhckNvZGUo
YWxwaGEpOworCisgICAgICAgICAgICAgICAgdGhpcy5wYWxldHRlW2NvbG9yXSA9IFN0cmluZy5m
cm9tQ2hhckNvZGUodGhpcy5waW5kZXgrKyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5wYWxldHRlW2NvbG9yXTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG91dHB1
dCBhIFBORyBzdHJpbmcsIEJhc2U2NCBlbmNvZGVkCisgICAgICAgIHRoaXMuZ2V0QmFzZTY0ID0g
ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIHZhciBzID0gdGhpcy5nZXREdW1wKCk7CisKKyAg
ICAgICAgICAgIHZhciBjaCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7CisgICAgICAgICAgICB2YXIgYzEsIGMyLCBj
MywgZTEsIGUyLCBlMywgZTQ7CisgICAgICAgICAgICB2YXIgbCA9IHMubGVuZ3RoOworICAgICAg
ICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgdmFyIHIgPSAiIjsKKworICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpOworICAgICAgICAgICAg
ICAgIGUxID0gYzEgPj4gMjsKKyAgICAgICAgICAgICAgICBjMiA9IHMuY2hhckNvZGVBdChpKzEp
OworICAgICAgICAgICAgICAgIGUyID0gKChjMSAmIDMpIDw8IDQpIHwgKGMyID4+IDQpOworICAg
ICAgICAgICAgICAgIGMzID0gcy5jaGFyQ29kZUF0KGkrMik7CisgICAgICAgICAgICAgICAgaWYg
KGwgPCBpKzIpIHsgZTMgPSA2NDsgfSBlbHNlIHsgZTMgPSAoKGMyICYgMHhmKSA8PCAyKSB8IChj
MyA+PiA2KTsgfQorICAgICAgICAgICAgICAgIGlmIChsIDwgaSszKSB7IGU0ID0gNjQ7IH0gZWxz
ZSB7IGU0ID0gYzMgJiAweDNmOyB9CisgICAgICAgICAgICAgICAgcis9IGNoLmNoYXJBdChlMSkg
KyBjaC5jaGFyQXQoZTIpICsgY2guY2hhckF0KGUzKSArIGNoLmNoYXJBdChlNCk7CisgICAgICAg
ICAgICB9IHdoaWxlICgoaSs9IDMpIDwgbCk7CisgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIG91dHB1dCBhIFBORyBzdHJpbmcKKyAgICAgICAgdGhpcy5nZXRE
dW1wID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIGNvbXB1dGUgYWRsZXIzMiBvZiBv
dXRwdXQgcGl4ZWxzICsgcm93IGZpbHRlciBieXRlcworICAgICAgICAgICAgdmFyIEJBU0UgPSA2
NTUyMTsgLyogbGFyZ2VzdCBwcmltZSBzbWFsbGVyIHRoYW4gNjU1MzYgKi8KKyAgICAgICAgICAg
IHZhciBOTUFYID0gNTU1MjsgIC8qIE5NQVggaXMgdGhlIGxhcmdlc3QgbiBzdWNoIHRoYXQgMjU1
bihuKzEpLzIgKyAobisxKShCQVNFLTEpIDw9IDJeMzItMSAqLworICAgICAgICAgICAgdmFyIHMx
ID0gMTsKKyAgICAgICAgICAgIHZhciBzMiA9IDA7CisgICAgICAgICAgICB2YXIgbiA9IE5NQVg7
CisKKyAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgdGhpcy5oZWlnaHQ7IHkrKykgewor
ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAtMTsgeCA8IHRoaXMud2lkdGg7IHgrKykgewor
ICAgICAgICAgICAgICAgICAgICBzMSs9IHRoaXMuYnVmZmVyW3RoaXMuaW5kZXgoeCwgeSldLmNo
YXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAgICAgIHMyKz0gczE7CisgICAgICAgICAgICAg
ICAgICAgIGlmICgobi09IDEpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMxJT0g
QkFTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMyJT0gQkFTRTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG4gPSBOTUFYOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgczElPSBCQVNFOworICAgICAgICAgICAg
czIlPSBCQVNFOworICAgICAgICAgICAgd3JpdGUodGhpcy5idWZmZXIsIHRoaXMuaWRhdF9vZmZz
ICsgdGhpcy5pZGF0X3NpemUgLSA4LCBieXRlNCgoczIgPDwgMTYpIHwgczEpKTsKKworICAgICAg
ICAgICAgLy8gY29tcHV0ZSBjcmMzMiBvZiB0aGUgUE5HIGNodW5rcworICAgICAgICAgICAgZnVu
Y3Rpb24gY3JjMzIocG5nLCBvZmZzLCBzaXplKSB7CisgICAgICAgICAgICAgICAgdmFyIGNyYyA9
IC0xOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSA0OyBpIDwgc2l6ZS00OyBpICs9IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgY3JjID0gX2NyYzMyWyhjcmMgXiBwbmdbb2ZmcytpXS5j
aGFyQ29kZUF0KDApKSAmIDB4ZmZdIF4gKChjcmMgPj4gOCkgJiAweDAwZmZmZmZmKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd3JpdGUocG5nLCBvZmZzK3NpemUtNCwgYnl0
ZTQoY3JjIF4gLTEpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3JjMzIodGhpcy5i
dWZmZXIsIHRoaXMuaWhkcl9vZmZzLCB0aGlzLmloZHJfc2l6ZSk7CisgICAgICAgICAgICBjcmMz
Mih0aGlzLmJ1ZmZlciwgdGhpcy5wbHRlX29mZnMsIHRoaXMucGx0ZV9zaXplKTsKKyAgICAgICAg
ICAgIGNyYzMyKHRoaXMuYnVmZmVyLCB0aGlzLnRybnNfb2ZmcywgdGhpcy50cm5zX3NpemUpOwor
ICAgICAgICAgICAgY3JjMzIodGhpcy5idWZmZXIsIHRoaXMuaWRhdF9vZmZzLCB0aGlzLmlkYXRf
c2l6ZSk7CisgICAgICAgICAgICBjcmMzMih0aGlzLmJ1ZmZlciwgdGhpcy5pZW5kX29mZnMsIHRo
aXMuaWVuZF9zaXplKTsKKworICAgICAgICAgICAgLy8gY29udmVydCBQTkcgdG8gc3RyaW5nCisg
ICAgICAgICAgICByZXR1cm4gIlwyMTFQTkdcclxuXDAzMlxuIit0aGlzLmJ1ZmZlci5qb2luKCcn
KTsKKyAgICAgICAgfQorICAgIH0KKworfSkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3QtZXZhbC5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3QtZXZhbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMTNlOWM2MDA4N2NjNzE0N2ZiM2YwOWQ5Y2ZmZmQ1YzhmY2IzZTQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
anMvdGVzdC1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKy8qKgorICogQ2FsbHMgZXZhbC4KKyAqCisgKiBUaGlzIGlzIGhl
cmUgc28gb3RoZXIgbW9kdWxlcyBjYW4gdXNlICJ1c2Ugc3RyaWN0IjoKKyAqLworVGVzdEV2YWwg
PSBmdW5jdGlvbihzdHIpIHsKKyAgcmV0dXJuIGV2YWwoc3RyKTsKK307CisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMv
Y2FudmFzLXRlc3RzLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvanMvdGVzdHMvY2FudmFzLXRlc3RzLXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0
NzcxMTI2MTgzNTZjNWM5ODBhOGY1YmIzMzk1N2I5OWZmMjZjNTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9j
YW52YXMtdGVzdHMtdXRpbHMuanMKQEAgLTAsMCArMSw4MjQgQEAKKy8qCitDb3B5cmlnaHQgKGMp
IDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRo
ZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gU29tZSB2YXJpYWJsZXMgdGhhdCB3aWxsIGJl
IHVzZWQgaW4gdGhpcyBmaWxlCit2YXIgY2FudmFzOwordmFyIGdsOwordmFyIE9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0OwordmFyIHVuaWZvcm1Mb2NhdGlvbjsKK3ZhciBleHRlbnNpb247Cit2YXIg
YnVmZmVyOwordmFyIGZyYW1lYnVmZmVyOwordmFyIHByb2dyYW07Cit2YXIgcmVuZGVyYnVmZmVy
OwordmFyIHNoYWRlcjsKK3ZhciB0ZXh0dXJlOwordmFyIGFycmF5QnVmZmVyOwordmFyIGFycmF5
QnVmZmVyVmlldzsKK3ZhciB2ZXJ0ZXhBcnJheU9iamVjdDsKK3ZhciBpbWFnZURhdGE7Cit2YXIg
ZmxvYXQzMmFycmF5OwordmFyIGludDMyYXJyYXk7CisKK3ZhciBPRVNfdGV4dHVyZV9mbG9hdDsK
K3ZhciBuZXdfV0VCR0xfbG9zZV9jb250ZXh0OwordmFyIGFsbG93UmVzdG9yZTsKK3ZhciBjb250
ZXh0TG9zdEV2ZW50RmlyZWQ7Cit2YXIgY29udGV4dFJlc3RvcmVkRXZlbnRGaXJlZDsKK3ZhciBu
ZXdFeHRlbnNpb247CisKK2Z1bmN0aW9uIGNvbXBhcmVHTEVycm9yKGdsRXJyb3IsIGV2YWxTdHIp
IHsKKyAgICB2YXIgZXhjZXB0aW9uOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoZXZhbFN0cik7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgIH0KKyAgICBp
ZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSA9PSBnbEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRleHRD
cmVhdGlvbihjb250ZXh0VHlwZSkgeworICAgIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMo
MTAsIDEwKTsKKyAgICBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRUeXBlKTsKKworICAg
IGlmIChjb250ZXh0VHlwZSA9PSAnd2ViZ2wnKSB7CisgICAgICAgIGlmIChnbCBpbnN0YW5jZW9m
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmIChjb250ZXh0VHlwZSA9PSAnd2ViZ2wyJykg
eworICAgICAgICBpZiAoZ2wgaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2ZlcnJl
ZE9mZnNjcmVlbkNhbnZhc0NyZWF0aW9uKHBsYWNlaG9sZGVyLCB3aWR0aCwgaGVpZ2h0KSB7Cisg
IHBsYWNlaG9sZGVyLndpZHRoID0gd2lkdGg7CisgIHBsYWNlaG9sZGVyLmhlaWdodCA9IGhlaWdo
dDsKKyAgcmV0dXJuIHBsYWNlaG9sZGVyLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydFdpZHRoQW5kSGVpZ2h0KGVudGl0eSwgZW50aXR5TmFtZSwgd2lk
dGgsIGhlaWdodCkgeworIGlmIChlbnRpdHkud2lkdGggPT0gd2lkdGggJiYgZW50aXR5LmhlaWdo
dCA9PSBoZWlnaHQpIHsKKyAgIHRlc3RQYXNzZWQoIlRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mICIg
KyBlbnRpdHlOYW1lICsgIiBhcmUgY29ycmVjdC4iKTsKKyAgIHJldHVybjsKKyB9CisgdmFyIGVy
ck1zZyA9ICIiOworIGlmIChlbnRpdHkud2lkdGggIT0gd2lkdGgpIHsKKyAgIGVyck1zZyArPSAi
VGhlIHdpZHRoIG9mICIgKyBlbnRpdHlOYW1lICsgIiBpcyAiICsgZW50aXR5LndpZHRoICsgIiB3
aGlsZSBleHBlY3RlZCB2YWx1ZSBpcyAiICsgd2lkdGggKyAiLiAiOworIH0KKyBpZiAoZW50aXR5
LmhlaWdodCAhPSBoZWlnaHQpIHsKKyAgIGVyck1zZyArPSAiVGhlIGhlaWdodCBvZiAiICsgZW50
aXR5TmFtZSArICIgaXMgIiArIGVudGl0eS5oZWlnaHQgKyAiIHdoaWxlIGV4cGVjdGVkIHZhbHVl
IGlzICIgKyBoZWlnaHQgKyAiLiAiOworIH0KKyB0ZXN0RmFpbGVkKGVyck1zZyk7Cit9CisKK3Zh
ciB3ZWJnbDFNZXRob2RzID0gWworICAiZ2V0Q29udGV4dEF0dHJpYnV0ZXMiLAorICAiYWN0aXZl
VGV4dHVyZSIsCisgICJhdHRhY2hTaGFkZXIiLAorICAiYmluZEF0dHJpYkxvY2F0aW9uIiwKKyAg
ImJpbmRCdWZmZXIiLAorICAiYmluZEZyYW1lYnVmZmVyIiwKKyAgImJpbmRSZW5kZXJidWZmZXIi
LAorICAiYmluZFRleHR1cmUiLAorICAiYmxlbmRDb2xvciIsCisgICJibGVuZEVxdWF0aW9uIiwK
KyAgImJsZW5kRXF1YXRpb25TZXBhcmF0ZSIsCisgICJibGVuZEZ1bmMiLAorICAiYmxlbmRGdW5j
U2VwYXJhdGUiLAorICAiYnVmZmVyRGF0YSIsCisgICJidWZmZXJTdWJEYXRhIiwKKyAgImNoZWNr
RnJhbWVidWZmZXJTdGF0dXMiLAorICAiY2xlYXIiLAorICAiY2xlYXJDb2xvciIsCisgICJjbGVh
ckRlcHRoIiwKKyAgImNsZWFyU3RlbmNpbCIsCisgICJjb2xvck1hc2siLAorICAiY29tcGlsZVNo
YWRlciIsCisgICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsCisgICJjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRCIsCisgICJjb3B5VGV4SW1hZ2UyRCIsCisgICJjb3B5VGV4U3ViSW1hZ2UyRCIsCisgICJj
cmVhdGVCdWZmZXIiLAorICAiY3JlYXRlRnJhbWVidWZmZXIiLAorICAiY3JlYXRlUHJvZ3JhbSIs
CisgICJjcmVhdGVSZW5kZXJidWZmZXIiLAorICAiY3JlYXRlU2hhZGVyIiwKKyAgImNyZWF0ZVRl
eHR1cmUiLAorICAiY3VsbEZhY2UiLAorICAiZGVsZXRlQnVmZmVyIiwKKyAgImRlbGV0ZUZyYW1l
YnVmZmVyIiwKKyAgImRlbGV0ZVByb2dyYW0iLAorICAiZGVsZXRlUmVuZGVyYnVmZmVyIiwKKyAg
ImRlbGV0ZVNoYWRlciIsCisgICJkZWxldGVUZXh0dXJlIiwKKyAgImRlcHRoRnVuYyIsCisgICJk
ZXB0aE1hc2siLAorICAiZGVwdGhSYW5nZSIsCisgICJkZXRhY2hTaGFkZXIiLAorICAiZGlzYWJs
ZSIsCisgICJkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiLAorICAiZHJhd0FycmF5cyIsCisgICJk
cmF3RWxlbWVudHMiLAorICAiZW5hYmxlIiwKKyAgImVuYWJsZVZlcnRleEF0dHJpYkFycmF5IiwK
KyAgImZpbmlzaCIsCisgICJmbHVzaCIsCisgICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsCisg
ICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsCisgICJmcm9udEZhY2UiLAorICAiZ2VuZXJhdGVNaXBt
YXAiLAorICAiZ2V0QWN0aXZlQXR0cmliIiwKKyAgImdldEFjdGl2ZVVuaWZvcm0iLAorICAiZ2V0
QXR0YWNoZWRTaGFkZXJzIiwKKyAgImdldEF0dHJpYkxvY2F0aW9uIiwKKyAgImdldFBhcmFtZXRl
ciIsCisgICJnZXRCdWZmZXJQYXJhbWV0ZXIiLAorICAiZ2V0RXJyb3IiLAorICAiZ2V0RXh0ZW5z
aW9uIiwKKyAgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsCisgICJnZXRQcm9n
cmFtUGFyYW1ldGVyIiwKKyAgImdldFByb2dyYW1JbmZvTG9nIiwKKyAgImdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlciIsCisgICJnZXRTaGFkZXJQYXJhbWV0ZXIiLAorICAiZ2V0U2hhZGVySW5mb0xv
ZyIsCisgICJnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQiLAorICAiZ2V0U2hhZGVyU291cmNlIiwK
KyAgImdldFN1cHBvcnRlZEV4dGVuc2lvbnMiLAorICAiZ2V0VGV4UGFyYW1ldGVyIiwKKyAgImdl
dFVuaWZvcm0iLAorICAiZ2V0VW5pZm9ybUxvY2F0aW9uIiwKKyAgImdldFZlcnRleEF0dHJpYiIs
CisgICJnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQiLAorICAiaGludCIsCisgICJpc0J1ZmZlciIsCisg
ICJpc0NvbnRleHRMb3N0IiwKKyAgImlzRW5hYmxlZCIsCisgICJpc0ZyYW1lYnVmZmVyIiwKKyAg
ImlzUHJvZ3JhbSIsCisgICJpc1JlbmRlcmJ1ZmZlciIsCisgICJpc1NoYWRlciIsCisgICJpc1Rl
eHR1cmUiLAorICAibGluZVdpZHRoIiwKKyAgImxpbmtQcm9ncmFtIiwKKyAgInBpeGVsU3RvcmVp
IiwKKyAgInBvbHlnb25PZmZzZXQiLAorICAicmVhZFBpeGVscyIsCisgICJyZW5kZXJidWZmZXJT
dG9yYWdlIiwKKyAgInNhbXBsZUNvdmVyYWdlIiwKKyAgInNjaXNzb3IiLAorICAic2hhZGVyU291
cmNlIiwKKyAgInN0ZW5jaWxGdW5jIiwKKyAgInN0ZW5jaWxGdW5jU2VwYXJhdGUiLAorICAic3Rl
bmNpbE1hc2siLAorICAic3RlbmNpbE1hc2tTZXBhcmF0ZSIsCisgICJzdGVuY2lsT3AiLAorICAi
c3RlbmNpbE9wU2VwYXJhdGUiLAorICAidGV4SW1hZ2UyRCIsCisgICJ0ZXhQYXJhbWV0ZXJmIiwK
KyAgInRleFBhcmFtZXRlcmkiLAorICAidGV4U3ViSW1hZ2UyRCIsCisgICJ1bmlmb3JtMWYiLAor
ICAidW5pZm9ybTFmdiIsCisgICJ1bmlmb3JtMWkiLAorICAidW5pZm9ybTFpdiIsCisgICJ1bmlm
b3JtMmYiLAorICAidW5pZm9ybTJmdiIsCisgICJ1bmlmb3JtMmkiLAorICAidW5pZm9ybTJpdiIs
CisgICJ1bmlmb3JtM2YiLAorICAidW5pZm9ybTNmdiIsCisgICJ1bmlmb3JtM2kiLAorICAidW5p
Zm9ybTNpdiIsCisgICJ1bmlmb3JtNGYiLAorICAidW5pZm9ybTRmdiIsCisgICJ1bmlmb3JtNGki
LAorICAidW5pZm9ybTRpdiIsCisgICJ1bmlmb3JtTWF0cml4MmZ2IiwKKyAgInVuaWZvcm1NYXRy
aXgzZnYiLAorICAidW5pZm9ybU1hdHJpeDRmdiIsCisgICJ1c2VQcm9ncmFtIiwKKyAgInZhbGlk
YXRlUHJvZ3JhbSIsCisgICJ2ZXJ0ZXhBdHRyaWIxZiIsCisgICJ2ZXJ0ZXhBdHRyaWIxZnYiLAor
ICAidmVydGV4QXR0cmliMmYiLAorICAidmVydGV4QXR0cmliMmZ2IiwKKyAgInZlcnRleEF0dHJp
YjNmIiwKKyAgInZlcnRleEF0dHJpYjNmdiIsCisgICJ2ZXJ0ZXhBdHRyaWI0ZiIsCisgICJ2ZXJ0
ZXhBdHRyaWI0ZnYiLAorICAidmVydGV4QXR0cmliUG9pbnRlciIsCisgICJ2aWV3cG9ydCIsCitd
OworCit2YXIgd2ViZ2wyTWV0aG9kcyA9IFsKKyAgImdldEJ1ZmZlclN1YkRhdGEiLAorICAiY29w
eUJ1ZmZlclN1YkRhdGEiLAorICAiYmxpdEZyYW1lYnVmZmVyIiwKKyAgImZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyIiwKKyAgImdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyIiwKKyAgImludmFsaWRh
dGVGcmFtZWJ1ZmZlciIsCisgICJpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiLAorICAicmVhZEJ1
ZmZlciIsCisgICJyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUiLAorICAidGV4SW1hZ2Uz
RCIsCisgICJ0ZXhTdG9yYWdlMkQiLAorICAidGV4U3RvcmFnZTNEIiwKKyAgInRleFN1YkltYWdl
M0QiLAorICAiY29weVRleFN1YkltYWdlM0QiLAorICAiY29tcHJlc3NlZFRleEltYWdlM0QiLAor
ICAiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLAorICAiZ2V0RnJhZ0RhdGFMb2NhdGlvbiIsCisg
ICJ1bmlmb3JtMXVpIiwKKyAgInVuaWZvcm0ydWkiLAorICAidW5pZm9ybTN1aSIsCisgICJ1bmlm
b3JtNHVpIiwKKyAgInVuaWZvcm0xdWl2IiwKKyAgInVuaWZvcm0ydWl2IiwKKyAgInVuaWZvcm0z
dWl2IiwKKyAgInVuaWZvcm00dWl2IiwKKyAgInVuaWZvcm1NYXRyaXgyeDNmdiIsCisgICJ1bmlm
b3JtTWF0cml4M3gyZnYiLAorICAidW5pZm9ybU1hdHJpeDJ4NGZ2IiwKKyAgInVuaWZvcm1NYXRy
aXg0eDJmdiIsCisgICJ1bmlmb3JtTWF0cml4M3g0ZnYiLAorICAidW5pZm9ybU1hdHJpeDR4M2Z2
IiwKKyAgInZlcnRleEF0dHJpYkk0aSIsCisgICJ2ZXJ0ZXhBdHRyaWJJNGl2IiwKKyAgInZlcnRl
eEF0dHJpYkk0dWkiLAorICAidmVydGV4QXR0cmliSTR1aXYiLAorICAidmVydGV4QXR0cmliSVBv
aW50ZXIiLAorICAidmVydGV4QXR0cmliRGl2aXNvciIsCisgICJkcmF3QXJyYXlzSW5zdGFuY2Vk
IiwKKyAgImRyYXdFbGVtZW50c0luc3RhbmNlZCIsCisgICJkcmF3UmFuZ2VFbGVtZW50cyIsCisg
ICJkcmF3QnVmZmVycyIsCisgICJjbGVhckJ1ZmZlcml2IiwKKyAgImNsZWFyQnVmZmVydWl2IiwK
KyAgImNsZWFyQnVmZmVyZnYiLAorICAiY2xlYXJCdWZmZXJmaSIsCisgICJjcmVhdGVRdWVyeSIs
CisgICJkZWxldGVRdWVyeSIsCisgICJpc1F1ZXJ5IiwKKyAgImJlZ2luUXVlcnkiLAorICAiZW5k
UXVlcnkiLAorICAiZ2V0UXVlcnkiLAorICAiZ2V0UXVlcnlQYXJhbWV0ZXIiLAorICAiY3JlYXRl
U2FtcGxlciIsCisgICJkZWxldGVTYW1wbGVyIiwKKyAgImlzU2FtcGxlciIsCisgICJiaW5kU2Ft
cGxlciIsCisgICJzYW1wbGVyUGFyYW1ldGVyaSIsCisgICJzYW1wbGVyUGFyYW1ldGVyZiIsCisg
ICJnZXRTYW1wbGVyUGFyYW1ldGVyIiwKKyAgImZlbmNlU3luYyIsCisgICJpc1N5bmMiLAorICAi
ZGVsZXRlU3luYyIsCisgICJjbGllbnRXYWl0U3luYyIsCisgICJ3YWl0U3luYyIsCisgICJnZXRT
eW5jUGFyYW1ldGVyIiwKKyAgImNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrIiwKKyAgImRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrIiwKKyAgImlzVHJhbnNmb3JtRmVlZGJhY2siLAorICAiYmluZFRyYW5z
Zm9ybUZlZWRiYWNrIiwKKyAgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLAorICAiZW5kVHJhbnNm
b3JtRmVlZGJhY2siLAorICAidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsCisgICJnZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmciLAorICAicGF1c2VUcmFuc2Zvcm1GZWVkYmFjayIsCisgICJy
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayIsCisgICJiaW5kQnVmZmVyQmFzZSIsCisgICJiaW5kQnVm
ZmVyUmFuZ2UiLAorICAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsCisgICJnZXRVbmlmb3JtSW5kaWNl
cyIsCisgICJnZXRBY3RpdmVVbmlmb3JtcyIsCisgICJnZXRVbmlmb3JtQmxvY2tJbmRleCIsCisg
ICJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIiLAorICAiZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrTmFtZSIsCisgICJ1bmlmb3JtQmxvY2tCaW5kaW5nIiwKKyAgImNyZWF0ZVZlcnRleEFycmF5
IiwKKyAgImRlbGV0ZVZlcnRleEFycmF5IiwKKyAgImlzVmVydGV4QXJyYXkiLAorICAiYmluZFZl
cnRleEFycmF5IiwKK107CisKK2Z1bmN0aW9uIGFzc2VydEZ1bmN0aW9uKHYsIGYpIHsKKyAgICB0
cnkgeworICAgICAgICBpZiAodHlwZW9mIHZbZl0gIT0gImZ1bmN0aW9uIikgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEFQSXMoY29udGV4dFR5cGUpIHsKKyAgICBjYW52YXMg
PSBuZXcgT2Zmc2NyZWVuQ2FudmFzKDEwLCAxMCk7CisgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4
dChjb250ZXh0VHlwZSk7CisgICAgdmFyIHBhc3NlZCA9IHRydWU7CisgICAgdmFyIG1ldGhvZHM7
CisgICAgaWYgKGNvbnRleHRUeXBlID09ICd3ZWJnbCcpCisgICAgICAgIG1ldGhvZHMgPSB3ZWJn
bDFNZXRob2RzOworICAgIGVsc2UKKyAgICAgICAgbWV0aG9kcyA9IHdlYmdsMU1ldGhvZHMuY29u
Y2F0KHdlYmdsMk1ldGhvZHMpOworICAgIGZvciAodmFyIGk9MDsgaTxtZXRob2RzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgciA9IGFzc2VydEZ1bmN0aW9uKGdsLCBtZXRob2RzW2ldKTsKKyAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiByOworICAgIH0KKworICAgIHZhciBleHRlbmRlZCA9IGZh
bHNlOworICAgIGZvciAodmFyIGkgaW4gZ2wpIHsKKyAgICAgIGlmICh0eXBlb2YgZ2xbaV0gPT0g
ImZ1bmN0aW9uIiAmJiBtZXRob2RzLmluZGV4T2YoaSkgPT0gLTEpIHsKKyAgICAgICAgaWYgKCFl
eHRlbmRlZCkgeworICAgICAgICAgIGV4dGVuZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKworICAgIGlmICghcGFzc2VkIHx8IGV4dGVuZGVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciBzaW1wbGVUZXh0dXJlVmVydGV4U2hh
ZGVyID0gWworICAnYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOycsCisgICdhdHRyaWJ1dGUgdmVj
MiB0ZXhDb29yZDA7JywKKyAgJ3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsnLAorICAndm9pZCBtYWlu
KCkgeycsCisgICcgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247JywKKyAgJyAgICB0ZXhDb29y
ZCA9IHRleENvb3JkMDsnLAorICAnfSddLmpvaW4oJ1xuJyk7CisKK3ZhciBzaW1wbGVUZXh0dXJl
RnJhZ21lbnRTaGFkZXIgPSBbCisgICdwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsnLAorICAndW5p
Zm9ybSBzYW1wbGVyMkQgdGV4OycsCisgICd2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7JywKKyAgJ3Zv
aWQgbWFpbigpIHsnLAorICAnICAgIGdsX0ZyYWdEYXRhWzBdID0gdGV4dHVyZTJEKHRleCwgdGV4
Q29vcmQpOycsCisgICd9J10uam9pbignXG4nKTsKKworZnVuY3Rpb24gZ2V0U2hhZGVyKGdsLCBz
aGFkZXJTdHIsIHR5cGUpCit7CisgIHZhciBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIodHlwZSk7
CisgIGdsLnNoYWRlclNvdXJjZShzaGFkZXIsIHNoYWRlclN0cik7CisgIGdsLmNvbXBpbGVTaGFk
ZXIoc2hhZGVyKTsKKworICBpZiAoIWdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNP
TVBJTEVfU1RBVFVTKSkKKyAgICByZXR1cm4gbnVsbDsKKyAgcmV0dXJuIHNoYWRlcjsKK30KKwor
ZnVuY3Rpb24gc2V0dXBQcm9ncmFtKGdsLCBzaGFkZXJzLCBvcHRfYXR0cmlicywgb3B0X2xvY2F0
aW9ucykKK3sKKyAgdmFyIHZlcnRleFNoYWRlciA9IGdldFNoYWRlcihnbCwgc2ltcGxlVGV4dHVy
ZVZlcnRleFNoYWRlciwgZ2wuVkVSVEVYX1NIQURFUik7CisgIHZhciBmcmFnbWVudFNoYWRlciA9
IGdldFNoYWRlcihnbCwgc2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9T
SEFERVIpOworICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgZ2wuYXR0YWNo
U2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFt
LCBmcmFnbWVudFNoYWRlcik7CisKKyAgaWYgKG9wdF9hdHRyaWJzKSB7CisgICAgZm9yICh2YXIg
aWkgPSAwOyBpaSA8IG9wdF9hdHRyaWJzLmxlbmd0aDsgKytpaSkgeworICAgICAgZ2wuYmluZEF0
dHJpYkxvY2F0aW9uKAorICAgICAgICAgIHByb2dyYW0sCisgICAgICAgICAgb3B0X2xvY2F0aW9u
cyA/IG9wdF9sb2NhdGlvbnNbaWldIDogaWksCisgICAgICAgICAgb3B0X2F0dHJpYnNbaWldKTsK
KyAgICB9CisgIH0KKyAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgLy8gQ2hlY2sgdGhl
IGxpbmsgc3RhdHVzCisgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dy
YW0sIGdsLkxJTktfU1RBVFVTKTsKKyAgaWYgKCFsaW5rZWQpIHsKKyAgICAgIC8vIHNvbWV0aGlu
ZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKKyAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOwor
ICByZXR1cm4gcHJvZ3JhbTsKK30KKworZnVuY3Rpb24gc2V0dXBTaW1wbGVUZXh0dXJlUHJvZ3Jh
bShnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uKQoreworICBv
cHRfcG9zaXRpb25Mb2NhdGlvbiA9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIHx8IDA7CisgIG9wdF90
ZXhjb29yZExvY2F0aW9uID0gb3B0X3RleGNvb3JkTG9jYXRpb24gfHwgMTsKKyAgcmV0dXJuIHNl
dHVwUHJvZ3JhbShnbCwKKyAgICAgICAgICAgICAgICAgICAgICBbc2ltcGxlVGV4dHVyZVZlcnRl
eFNoYWRlciwgc2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyXSwKKyAgICAgICAgICAgICAgICAg
ICAgICBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwKKyAgICAgICAgICAgICAgICAgICAgICBb
b3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uXSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RMb3N0Q29udGV4dFdpdGhvdXRSZXN0b3JlKCkKK3sKKyAgICAvLyBGdW5jdGlvbnMg
d2l0aCBzcGVjaWFsIHJldHVybiB2YWx1ZXMuCisgICAgaWYgKCFnbC5pc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLkNP
TlRFWFRfTE9TVF9XRUJHTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChnbC5nZXRF
cnJvcigpICE9IGdsLk5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
Z2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZG
RVJfVU5TVVBQT1JURUQgfHwKKyAgICAgICAgZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwg
J3VfbW9kZWxWaWV3UHJvak1hdHJpeCcpICE9IC0xIHx8CisgICAgICAgIGdsLmdldFZlcnRleEF0
dHJpYk9mZnNldCgwLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIpICE9IDApCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRlc3QgdGhlIGV4dGVuc2lvbiBpdHNlbGYuCisg
ICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5JTlZBTElEX09QRVJBVElPTiwgImV4dGVuc2lvbi5s
b3NlQ29udGV4dCgpIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlRGF0YSA9
IG5ldyBJbWFnZURhdGEoMSwgMSk7CisgICAgZmxvYXQzMmFycmF5ID0gbmV3IEZsb2F0MzJBcnJh
eSgxKTsKKyAgICBpbnQzMmFycmF5ID0gbmV3IEludDMyQXJyYXkoMSk7CisKKyAgICAvLyBGdW5j
dGlvbnMgcmV0dXJuaW5nIHZvaWQgc2hvdWxkIHJldHVybiBpbW1lZGlhdGVseS4KKyAgICAvLyBU
aGlzIGlzIHVudGVzdGFibGUsIGJ1dCB3ZSBjYW4gYXQgbGVhc3QgYmUgc3VyZSB0aGV5IGNhdXNl
IG5vIGVycm9ycworICAgIC8vIGFuZCB0aGUgY29kZXBhdGhzIGFyZSBleGVyY2lzZWQuCisgICAg
aWYgKCFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVY
VFVSRTApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuYXR0
YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcikiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3Io
Z2wuTk9fRVJST1IsICJnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKSIpIHx8
CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVy
cm9yKGdsLk5PX0VSUk9SLCAiZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJl
bmRlcmJ1ZmZlcikiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKSIpIHx8CisgICAgICAgICFjb21w
YXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJsZW5kQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4w
KSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJsZW5kRXF1
YXRpb24oZ2wuRlVOQ19BREQpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VS
Uk9SLCAiZ2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGdsLkZVTkNfQURELCBnbC5GVU5DX0FERCki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5ibGVuZEZ1bmMo
Z2wuT05FLCBnbC5PTkUpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9S
LCAiZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuT05FLCBnbC5PTkUsIGdsLk9ORSwgZ2wuT05FKSIp
IHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCAwLCBnbC5TVEFUSUNfRFJBVykiKSB8fAorICAgICAgICAhY29tcGFy
ZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJy
YXlCdWZmZXJWaWV3LCBnbC5TVEFUSUNfRFJBVykiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJy
b3IoZ2wuTk9fRVJST1IsICJnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJyYXlCdWZm
ZXIsIGdsLlNUQVRJQ19EUkFXKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19F
UlJPUiwgImdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRlJFLCAwLCBhcnJheUJ1ZmZlclZp
ZXcpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuYnVmZmVy
U3ViRGF0YShnbC5BUlJBWV9CVUZGUkUsIDAsIGFycmF5QnVmZmVyKSIpIHx8CisgICAgICAgICFj
b21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
IikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuY2xlYXJDb2xv
cigxLCAxLCAxLCAxKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwg
ImdsLmNsZWFyRGVwdGgoMSkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJS
T1IsICJnbC5jbGVhclN0ZW5jaWwoMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wu
Tk9fRVJST1IsICJnbC5jb2xvck1hc2soMSwgMSwgMSwgMSkiKSB8fAorICAgICAgICAhY29tcGFy
ZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5jb21waWxlU2hhZGVyKHNoYWRlcikiKSB8fAorICAg
ICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5jb3B5VGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5SR0JBLCAwLCAwLCAwLCAwLCAwKSIpIHx8CisgICAgICAgICFjb21w
YXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIDAsIDAsIDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGds
Lk5PX0VSUk9SLCAiZ2wuY3VsbEZhY2UoZ2wuRlJPTlQpIikgfHwKKyAgICAgICAgIWNvbXBhcmVH
TEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcikiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5kZWxldGVGcmFtZWJ1ZmZlcihmcmFt
ZWJ1ZmZlcikiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5k
ZWxldGVQcm9ncmFtKHByb2dyYW0pIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5P
X0VSUk9SLCAiZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcikiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5kZWxldGVTaGFkZXIoc2hhZGVyKSIp
IHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmRlbGV0ZVRleHR1
cmUodGV4dHVyZSkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJn
bC5kZXB0aEZ1bmMoZ2wuTkVWRVIpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5P
X0VSUk9SLCAiZ2wuZGVwdGhNYXNrKDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGds
Lk5PX0VSUk9SLCAiZ2wuZGVwdGhSYW5nZSgwLCAxKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xF
cnJvcihnbC5OT19FUlJPUiwgImdsLmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpIikgfHwK
KyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuZGlzYWJsZShnbC5CTEVO
RCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5kaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9f
RVJST1IsICJnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMCkiKSB8fAorICAgICAgICAhY29t
cGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5kcmF3RWxlbWVudHMoZ2wuUE9JTlRTLCAwLCBn
bC5VTlNJR05FRF9TSE9SVCwgMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9f
RVJST1IsICJnbC5lbmFibGUoZ2wuQkxFTkQpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCkiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5maW5pc2goKSIpIHx8CisgICAgICAg
ICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmZsdXNoKCkiKSB8fAorICAgICAgICAh
Y29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmZmVyKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImds
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJy
b3IoZ2wuTk9fRVJST1IsICJnbC5mcm9udEZhY2UoZ2wuQ1cpIikgfHwKKyAgICAgICAgIWNvbXBh
cmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5oaW50KGdsLkdF
TkVSQVRFX01JUE1BUF9ISU5ULCBnbC5GQVNURVNUKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xF
cnJvcihnbC5OT19FUlJPUiwgImdsLmxpbmVXaWR0aCgwKSIpIHx8CisgICAgICAgICFjb21wYXJl
R0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmxpbmtQcm9ncmFtKHByb2dyYW0pIikgfHwKKyAgICAg
ICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X0ZMSVBfWV9XRUJHTCwgMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJS
T1IsICJnbC5wb2x5Z29uT2Zmc2V0KDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wucmVhZFBpeGVscygwLCAwLCAwLCAwLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBhcnJheUJ1ZmZlclZpZXcpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGds
LlJHQkE0LCAwLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwg
ImdsLnNhbXBsZUNvdmVyYWdlKDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGds
Lk5PX0VSUk9SLCAiZ2wuc2Npc3NvcigwLCAwLCAwLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJl
R0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnNoYWRlclNvdXJjZShzaGFkZXIsICcnKSIpIHx8Cisg
ICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnN0ZW5jaWxGdW5jKGdsLk5F
VkVSLCAwLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImds
LnN0ZW5jaWxGdW5jU2VwYXJhdGUoZ2wuRlJPTlQsIGdsLk5FVkVSLCAwLCAwKSIpIHx8CisgICAg
ICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnN0ZW5jaWxNYXNrKDApIikgfHwK
KyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wuc3RlbmNpbE1hc2tTZXBh
cmF0ZShnbC5GUk9OVCwgMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJS
T1IsICJnbC5zdGVuY2lsT3AoZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuS0VFUCkiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC5zdGVuY2lsT3BTZXBhcmF0ZShnbC5G
Uk9OVCwgZ2wuS0VFUCwgZ2wuS0VFUCwgZ2wuS0VFUCkiKSB8fAorICAgICAgICAhY29tcGFyZUdM
RXJyb3IoZ2wuTk9fRVJST1IsICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5QnVmZmVyVmlldyki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGlt
YWdlRGF0YSkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC50
ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVT
VCkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC50ZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGFycmF5QnVmZmVyVmlldykiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wu
Tk9fRVJST1IsICJnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlRGF0YSkiKSB8fAorICAgICAgICAhY29tcGFyZUdM
RXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtMWYodW5pZm9ybUxvY2F0aW9uLCAwKSIpIHx8
CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm0xZnYodW5p
Zm9ybUxvY2F0aW9uLCBmbG9hdDMyYXJyYXkpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybTFmdih1bmlmb3JtTG9jYXRpb24sIFswXSkiKSB8fAor
ICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtMWkodW5pZm9y
bUxvY2F0aW9uLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwg
ImdsLnVuaWZvcm0xaXYodW5pZm9ybUxvY2F0aW9uLCBpbnQzMmFycmF5KSIpIHx8CisgICAgICAg
ICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm0xaXYodW5pZm9ybUxvY2F0
aW9uLCBbMF0pIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wu
dW5pZm9ybTJmKHVuaWZvcm1Mb2NhdGlvbiwgMCwgMCkiKSB8fAorICAgICAgICAhY29tcGFyZUdM
RXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtMmZ2KHVuaWZvcm1Mb2NhdGlvbiwgZmxvYXQz
MmFycmF5KSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVu
aWZvcm0yZnYodW5pZm9ybUxvY2F0aW9uLCBbMCwgMF0pIikgfHwKKyAgICAgICAgIWNvbXBhcmVH
TEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybTJpKHVuaWZvcm1Mb2NhdGlvbiwgMCwgMCki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtMml2
KHVuaWZvcm1Mb2NhdGlvbiwgaW50MzJhcnJheSkiKSB8fAorICAgICAgICAhY29tcGFyZUdMRXJy
b3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtMml2KHVuaWZvcm1Mb2NhdGlvbiwgWzAsIDBdKSIp
IHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm0zZih1
bmlmb3JtTG9jYXRpb24sIDAsIDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGds
Lk5PX0VSUk9SLCAiZ2wudW5pZm9ybTNmdih1bmlmb3JtTG9jYXRpb24sIGZsb2F0MzJhcnJheSki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtM2Z2
KHVuaWZvcm1Mb2NhdGlvbiwgWzAsIDAsIDBdKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJv
cihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm0zaSh1bmlmb3JtTG9jYXRpb24sIDAsIDAsIDApIikg
fHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybTNpdih1
bmlmb3JtTG9jYXRpb24sIGludDMyYXJyYXkpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybTNpdih1bmlmb3JtTG9jYXRpb24sIFswLCAwLCAwXSki
KSB8fAorICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtNGYo
dW5pZm9ybUxvY2F0aW9uLCAwLCAwLCAwLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJv
cihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm00ZnYodW5pZm9ybUxvY2F0aW9uLCBmbG9hdDMyYXJy
YXkpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9y
bTRmdih1bmlmb3JtTG9jYXRpb24sIFswLCAwLCAwLCAwXSkiKSB8fAorICAgICAgICAhY29tcGFy
ZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC51bmlmb3JtNGkodW5pZm9ybUxvY2F0aW9uLCAwLCAw
LCAwLCAwKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVu
aWZvcm00aXYodW5pZm9ybUxvY2F0aW9uLCBpbnQzMmFycmF5KSIpIHx8CisgICAgICAgICFjb21w
YXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnVuaWZvcm00aXYodW5pZm9ybUxvY2F0aW9uLCBb
MCwgMCwgMCwgMF0pIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAi
Z2wudW5pZm9ybU1hdHJpeDJmdih1bmlmb3JtTG9jYXRpb24sIGZhbHNlLCBmbG9hdDMyYXJyYXkp
IikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybU1h
dHJpeDJmdih1bmlmb3JtTG9jYXRpb24sIGZhbHNlLCBbMCwgMCwgMCwgMF0pIikgfHwKKyAgICAg
ICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybU1hdHJpeDNmdih1bmlm
b3JtTG9jYXRpb24sIGZhbHNlLCBmbG9hdDMyYXJyYXkpIikgfHwKKyAgICAgICAgIWNvbXBhcmVH
TEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybU1hdHJpeDNmdih1bmlmb3JtTG9jYXRpb24s
IGZhbHNlLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pIikgfHwKKyAgICAgICAgIWNvbXBh
cmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudW5pZm9ybU1hdHJpeDRmdih1bmlmb3JtTG9jYXRp
b24sIGZhbHNlLCBmbG9hdDMyYXJyYXkpIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGds
Lk5PX0VSUk9SLCAiZ2wudW5pZm9ybU1hdHJpeDRmdih1bmlmb3JtTG9jYXRpb24sIGZhbHNlLCBb
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pIikgfHwKKyAg
ICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudXNlUHJvZ3JhbShwcm9ncmFt
KSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnZhbGlkYXRl
UHJvZ3JhbShwcm9ncmFtKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJP
UiwgImdsLnZlcnRleEF0dHJpYjFmKDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wudmVydGV4QXR0cmliMWZ2KDAsIGZsb2F0MzJhcnJheSkiKSB8fAor
ICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC52ZXJ0ZXhBdHRyaWIxZnYo
MCwgWzBdKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnZl
cnRleEF0dHJpYjJmKDAsIDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5P
X0VSUk9SLCAiZ2wudmVydGV4QXR0cmliMmZ2KDAsIGZsb2F0MzJhcnJheSkiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC52ZXJ0ZXhBdHRyaWIyZnYoMCwgWzAs
IDBdKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnZlcnRl
eEF0dHJpYjNmKDAsIDAsIDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9yKGdsLk5P
X0VSUk9SLCAiZ2wudmVydGV4QXR0cmliM2Z2KDAsIGZsb2F0MzJhcnJheSkiKSB8fAorICAgICAg
ICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC52ZXJ0ZXhBdHRyaWIzZnYoMCwgWzAs
IDAsIDBdKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnZl
cnRleEF0dHJpYjRmKDAsIDAsIDAsIDAsIDApIikgfHwKKyAgICAgICAgIWNvbXBhcmVHTEVycm9y
KGdsLk5PX0VSUk9SLCAiZ2wudmVydGV4QXR0cmliNGZ2KDAsIGZsb2F0MzJhcnJheSkiKSB8fAor
ICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJnbC52ZXJ0ZXhBdHRyaWI0ZnYo
MCwgWzAsIDAsIDAsIDBdKSIpIHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJP
UiwgImdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMCwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKSIp
IHx8CisgICAgICAgICFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLnZpZXdwb3J0KDAs
IDAsIDAsIDApIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZ1bmN0aW9ucyBy
ZXR1cm4gbnVsbGFibGUgdmFsdWVzIHNob3VsZCBhbGwgcmV0dXJuIG51bGwuCisgICAgaWYgKGds
LmNyZWF0ZUJ1ZmZlcigpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KSAhPSBudWxsIHx8CisgICAgICAgIGdsLmNyZWF0ZVByb2dyYW0oKSAhPSBudWxsIHx8CisgICAg
ICAgIGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuY3JlYXRl
U2hhZGVyKGdsLkdMX1ZFUlRFWF9TSEFERVIpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuY3JlYXRl
VGV4dHVyZSgpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0s
IDApICE9IG51bGwgfHwKKyAgICAgICAgZ2wuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSAh
PSBudWxsIHx8CisgICAgICAgIGdsLmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtKSAhPSBudWxs
IHx8CisgICAgICAgIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJV
RkZFUl9TSVpFKSAhPSBudWxsIHx8CisgICAgICAgIGdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkg
IT0gbnVsbCB8fAorICAgICAgICBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FKSAhPSBudWxsIHx8CisgICAgICAgIGdsLmdldFBhcmFtZXRlcihn
bC5DVVJSRU5UX1BST0dSQU0pICE9IG51bGwgfHwKKyAgICAgICAgZ2wuZ2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSkgIT0gbnVsbCB8fAorICAgICAgICBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIGdsLkxJTktfU1RBVFVTKSAhPSBudWxsIHx8CisgICAgICAgIGdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9XSURUSCkgIT0g
bnVsbCB8fAorICAgICAgICBnbC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikgIT0gbnVsbCB8fAor
ICAgICAgICBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5TSEFERVJfVFlQRSkgIT0g
bnVsbCB8fAorICAgICAgICBnbC5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKSAhPSBudWxsIHx8Cisg
ICAgICAgIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
UykgIT0gbnVsbCB8fAorICAgICAgICBnbC5nZXRVbmlmb3JtKHByb2dyYW0sIHVuaWZvcm1Mb2Nh
dGlvbikgIT0gbnVsbCB8fAorICAgICAgICBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
J3ZQb3NpdGlvbicpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuZ2V0VmVydGV4QXR0cmliKDAsIGds
LlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpICE9IG51bGwgfHwKKyAgICAgICAg
Z2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpICE9IG51bGwgfHwKKyAgICAgICAgZ2wuZ2V0RXh0
ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKSAhPSBudWxsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyAiSXMiIHF1ZXJpZXMgc2hvdWxkIGFsbCByZXR1cm4gZmFsc2UuCisgICAg
aWYgKGdsLmlzQnVmZmVyKGJ1ZmZlcikgfHwgZ2wuaXNFbmFibGVkKGdsLkJMRU5EKSB8fCBnbC5p
c0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSB8fAorICAgICAgICBnbC5pc1Byb2dyYW0ocHJvZ3Jh
bSkgfHwgZ2wuaXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKSB8fCBnbC5pc1NoYWRlcihzaGFk
ZXIpIHx8CisgICAgICAgIGdsLmlzVGV4dHVyZSh0ZXh0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIHRlc3QgZXh0ZW5zaW9ucworICAgIGlmIChPRVNfdmVydGV4
X2FycmF5X29iamVjdCkgeworICAgICAgICBpZiAoIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9S
LCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuYmluZFZlcnRleEFycmF5T0VTKHZlcnRleEFycmF5
T2JqZWN0KSIpIHx8CisgICAgICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJP
RVNfdmVydGV4X2FycmF5X29iamVjdC5pc1ZlcnRleEFycmF5T0VTKHZlcnRleEFycmF5T2JqZWN0
KSIpIHx8CisgICAgICAgICAgICAhY29tcGFyZUdMRXJyb3IoZ2wuTk9fRVJST1IsICJPRVNfdmVy
dGV4X2FycmF5X29iamVjdC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2ZXJ0ZXhBcnJheU9iamVjdCki
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCkgIT0gbnVsbCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0VmFs
aWRDb250ZXh0KCkKK3sKKyAgICBpZiAoZ2wuaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBh
cnJheUJ1ZmZlclZpZXcgPSBuZXcgSW50OEFycmF5KGFycmF5QnVmZmVyKTsKKworICAgIC8vIEdl
bmVyYXRlIHJlc291cmNlcyBmb3IgdGVzdGluZy4KKyAgICBidWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBm
cmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7CisgICAgcHJvZ3JhbSA9IHNldHVwU2lt
cGxlVGV4dHVyZVByb2dyYW0oZ2wpOworICAgIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOworICAgIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVS
KTsKKyAgICB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5P
X0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUZXN0IGlzIHF1ZXJpZXMg
dGhhdCB3aWxsIGxhdGVyIGJlIGZhbHNlCisgICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5OT19F
UlJPUiwgImdsLmVuYWJsZShnbC5CTEVORCkiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZ2wuaXNCdWZmZXIoYnVmZmVyKSB8fCAhZ2wuaXNFbmFibGVkKGdsLkJMRU5EKSB8fCAh
Z2wuaXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikgfHwKKyAgICAgICAgIWdsLmlzUHJvZ3JhbShw
cm9ncmFtKSB8fCAhZ2wuaXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKSB8fCAhZ2wuaXNTaGFk
ZXIoc2hhZGVyKSB8fAorICAgICAgICAhZ2wuaXNUZXh0dXJlKHRleHR1cmUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoT0VTX3ZlcnRleF9hcnJheV9vYmplY3QpIHsKKyAgICAg
ICAgdmVydGV4QXJyYXlPYmplY3QgPSBPRVNfdmVydGV4X2FycmF5X29iamVjdC5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFPRVNfdmVydGV4X2FycmF5
X29iamVjdC5pc1ZlcnRleEFycmF5T0VTKHZlcnRleEFycmF5T2JqZWN0KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHNl
dHVwVGVzdCgpCit7CisgICAgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcygxMCwgMTApOwor
ICAgIGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7CisgICAgV0VCR0xfbG9zZV9jb250
ZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKKyAgICBpZiAoIVdF
QkdMX2xvc2VfY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVHJ5IHRv
IGdldCBhIGZldyBleHRlbnNpb25zCisgICAgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgPSBnbC5n
ZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgT0VTX3RleHR1cmVf
ZmxvYXQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0Iik7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdE9yaWdpbmFsQ29udGV4dCgpCit7CisgICAgaWYg
KGdsLmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChnbC5n
ZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRlc3RMb3N0Q29udGV4dChlKQoreworICAgIGlmIChj
b250ZXh0TG9zdEV2ZW50RmlyZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb250ZXh0
TG9zdEV2ZW50RmlyZWQgPSB0cnVlOworICAgIGlmICghZ2wuaXNDb250ZXh0TG9zdCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYWxsb3dSZXN0b3JlKQorICAgICAgZS5w
cmV2ZW50RGVmYXVsdCgpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0TG9z
aW5nQW5kUmVzdG9yaW5nQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICBpZiAoIXNldHVwVGVzdCgpKQorICAgICAg
ICAgICAgcmVqZWN0KCJUZXN0IGZhaWxlZCIpOworCisgICAgICAgIGNhbnZhcy5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IiwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgaWYg
KCF0ZXN0TG9zdENvbnRleHQoZSkpCisgICAgICAgICAgICAgIHJlamVjdCgiVGVzdCBmYWlsZWQi
KTsKKyAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhlIGNvbnRleHQgYWZ0ZXIgdGhpcyBldmVudCBo
YXMgZXhpdGVkLgorICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiV0VCR0xfbG9zZV9jb250
ZXh0LnJlc3RvcmVDb250ZXh0KCkiKSkKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJUZXN0
IGZhaWxlZCIpOworICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IHNob3VsZCBzdGlsbCBi
ZSBsb3N0LiBJdCB3aWxsIG5vdCBnZXQgcmVzdG9yZWQgdW50aWwgdGhlCisgICAgICAgICAgICAg
ICAgLy8gd2ViZ2xyZXN0b3JlY29udGV4dCBldmVudCBpcyBmaXJlZC4KKyAgICAgICAgICAgICAg
ICBpZiAoIWdsLmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJU
ZXN0IGZhaWxlZCIpOworICAgICAgICAgICAgICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5P
X0VSUk9SKQorICAgICAgICAgICAgICAgICAgICByZWplY3QoIlRlc3QgZmFpbGVkIik7CisgICAg
ICAgICAgICAgICAgLy8gZ2wgbWV0aG9kcyBzaG91bGQgc3RpbGwgYmUgbm8tb3BzCisgICAgICAg
ICAgICAgICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJsZW5kRnVuYyhn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQKSIpKQorICAgICAgICAgICAgICAgICAg
ICByZWplY3QoIlRlc3QgZmFpbGVkIik7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdG9yZWRDb250ZXh0KCkpCisg
ICAgICAgICAgICAgICAgcmVqZWN0KCJUZXN0IGZhaWxlZCIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJlc29sdmUoIlRlc3QgcGFzc2VkIik7CisgICAgICAgIH0pOworICAg
ICAgICBhbGxvd1Jlc3RvcmUgPSB0cnVlOworICAgICAgICBjb250ZXh0TG9zdEV2ZW50RmlyZWQg
PSBmYWxzZTsKKyAgICAgICAgY29udGV4dFJlc3RvcmVkRXZlbnRGaXJlZCA9IGZhbHNlOworCisg
ICAgICAgIGlmICghdGVzdE9yaWdpbmFsQ29udGV4dCgpKQorICAgICAgICAgICAgcmVqZWN0KCJU
ZXN0IGZhaWxlZCIpOworICAgICAgICBXRUJHTF9sb3NlX2NvbnRleHQubG9zZUNvbnRleHQoKTsK
KyAgICAgICAgLy8gVGhlIGNvbnRleHQgc2hvdWxkIGJlIGxvc3QgaW1tZWRpYXRlbHkuCisgICAg
ICAgIGlmICghZ2wuaXNDb250ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmVqZWN0KCJUZXN0IGZh
aWxlZCIpOworICAgICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5DT05URVhUX0xPU1RfV0VC
R0wpCisgICAgICAgICAgICByZWplY3QoIlRlc3QgZmFpbGVkIik7CisgICAgICAgIGlmIChnbC5n
ZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgcmVqZWN0KCJUZXN0IGZhaWxl
ZCIpOworICAgICAgICAvLyBnbCBtZXRob2RzIHNob3VsZCBiZSBuby1vcHMKKyAgICAgICAgaWYg
KCFjb21wYXJlR0xFcnJvcihnbC5OT19FUlJPUiwgImdsLmJsZW5kRnVuYyhnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX0NVQkVfTUFQKSIpKQorICAgICAgICAgICAgcmVqZWN0KCJUZXN0IGZhaWxl
ZCIpOworICAgICAgICAvLyBidXQgdGhlIGV2ZW50IHNob3VsZCBub3QgaGF2ZSBiZWVuIGZpcmVk
LgorICAgICAgICBpZiAoY29udGV4dExvc3RFdmVudEZpcmVkKQorICAgICAgICAgICAgcmVqZWN0
KCJUZXN0IGZhaWxlZCIpOworICAgIH0pOworfQorCitmdW5jdGlvbiByZUdldEV4dGVuc2lvbkFu
ZFRlc3RGb3JQcm9wZXJ0eShnbCwgbmFtZSwgZXhwZWN0UHJvcGVydHkpIHsKKyAgICB2YXIgbmV3
RXh0ZW5zaW9uID0gZ2wuZ2V0RXh0ZW5zaW9uKG5hbWUpOworICAgIC8vIE5PVEU6IHdoaWxlIGdl
dHRpbmcgYSBleHRlbnNpb24gYWZ0ZXIgY29udGV4dCBsb3N0L3Jlc3RvcmVkIGlzIGFsbG93ZWQg
dG8gZmFpbAorICAgIC8vIGZvciB0aGUgcHVycG9zZSB0aGUgY29uZm9ybWFuY2UgdGVzdHMgaXQg
aXMgbm90LgorICAgIC8vCisgICAgLy8gSHlwb3RoZXRpY2FsbHkgdGhlIHVzZXIgY2FuIHN3aXRj
aCBHUFVzIGxpdmUuIEZvciBleGFtcGxlIG9uIFdpbmRvd3MsIGluc3RhbGwgMiBHUFVzLAorICAg
IC8vIHRoZW4gaW4gdGhlIGNvbnRyb2wgcGFuZW4gZW5hYmxlIDEsIGRpc2FibGUgdGhlIG90aGVy
cyBhbmQgdmlzYSB2ZXJzYS4gU2luY2UgdGhlIEdQVXMKKyAgICAvLyBoYXZlIGRpZmZlcmVudCBj
YXBhYmlsaXRpZXMgb25lIG9yIHRoZSBvdGhlciBtYXkgbm90IHN1cHBvcnQgYSBwYXJ0aWNsYXIg
ZXh0ZW5zaW9uLgorICAgIC8vCisgICAgLy8gQnV0LCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGNv
bmZvcm1hbmNlIHRlc3RzIHRoZSBjb250ZXh0IGlzIGV4cGVjdGVkIHRvIHJlc3RvcmUKKyAgICAv
LyBvbiB0aGUgc2FtZSBHUFUgYW5kIHRoZXJlZm9yZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHN1Y2Nl
ZWRlZCBwcmV2aW91c2x5IHNob3VsZAorICAgIC8vIHN1Y2NlZWQgb24gcmVzdG9yZS4KKyAgICBp
ZiAobmV3RXh0ZW5zaW9uID09IG51bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
ZXhwZWN0UHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCEobmV3RXh0ZW5zaW9uLndlYmdsVGVzdFBy
b3BlcnR5ID09PSB0cnVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoIShuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHVuZGVm
aW5lZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBuZXdF
eHRlbnNpb247Cit9CisKKworZnVuY3Rpb24gdGVzdE9FU1RleHR1cmVGbG9hdCgpIHsKKyAgaWYg
KE9FU190ZXh0dXJlX2Zsb2F0KSB7CisgICAgLy8gRXh0ZW5zaW9uIG11c3Qgc3RpbGwgYmUgbG9z
dC4KKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgaWYgKCFjb21wYXJlR0xFcnJvcihnbC5JTlZBTElE
X0VOVU0sICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAs
IGdsLlJHQkEsIGdsLkZMT0FULCBudWxsKSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gVHJ5IHJlLWVuYWJsaW5nIGV4dGVuc2lvbgorICAgIE9FU190ZXh0dXJlX2Zsb2F0ID0gcmVH
ZXRFeHRlbnNpb25BbmRUZXN0Rm9yUHJvcGVydHkoZ2wsICJPRVNfdGV4dHVyZV9mbG9hdCIsIGZh
bHNlKTsKKyAgICBpZiAoIWNvbXBhcmVHTEVycm9yKGdsLk5PX0VSUk9SLCAiZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwg
bnVsbCkiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RPRVNWZXJ0ZXhBcnJheU9iamVjdCgpIHsKKyAgaWYgKE9FU192ZXJ0
ZXhfYXJyYXlfb2JqZWN0KSB7CisgICAgLy8gRXh0ZW5zaW9uIG11c3Qgc3RpbGwgYmUgbG9zdC4K
KyAgICBpZiAoT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSAh
PSBudWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVHJ5IHJlLWVuYWJsaW5nIGV4
dGVuc2lvbgorCisgICAgdmFyIG9sZF9PRVNfdmVydGV4X2FycmF5X29iamVjdCA9IE9FU192ZXJ0
ZXhfYXJyYXlfb2JqZWN0OworICAgIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0ID0gcmVHZXRFeHRl
bnNpb25BbmRUZXN0Rm9yUHJvcGVydHkoZ2wsICJPRVNfdmVydGV4X2FycmF5X29iamVjdCIsIGZh
bHNlKTsKKyAgICBpZiAoT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlP
RVMoKSA9PSBudWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG9sZF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpICE9IG51bGwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0
RXh0ZW5zaW9ucygpIHsKKyAgaWYgKCF0ZXN0T0VTVGV4dHVyZUZsb2F0KCkgfHwgIXRlc3RPRVNW
ZXJ0ZXhBcnJheU9iamVjdCgpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Z1bmN0aW9uIHRlc3RSZXN0b3JlZENvbnRleHQoKQoreworICAgIGlmIChjb250ZXh0UmVz
dG9yZWRFdmVudEZpcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29udGV4dFJlc3Rv
cmVkRXZlbnRGaXJlZCA9IHRydWU7CisgICAgaWYgKGdsLmlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXRlc3RFeHRlbnNpb25zKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvY2xpcHBp
bmctd2lkZS1wb2ludHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy9jbGlwcGluZy13aWRlLXBvaW50cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yjhm
YzAwNTk5ZThhYzljMjIxMWU2OTMxNzljNjM0MjNkZTUxYTE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvY2xp
cHBpbmctd2lkZS1wb2ludHMuanMKQEAgLTAsMCArMSw5MiBAQAorLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCisndXNlIHN0cmljdCc7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IGVuc3VyZXMgY2xpcHBpbmcgd29ya3Mgd2l0aCB3aWRlIHBvaW50cyB3aG9zZSBjZW50
ZXJzIGFyZSBvdXQgb2YgdGhlIHZpZXdwb3J0Iik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoInRlc3RiZWQiLCB1bmRlZmluZWQsIGNv
bnRleHRWZXJzaW9uKTsKKwordmFyIHBvaW50U2l6ZTsKKworZnVuY3Rpb24gc2V0dXBQcm9ncmFt
KCkgeworICAgIHZhciB2cyA9ICJhdHRyaWJ1dGUgdmVjNCBwb3M7IiArCisgICAgICAgICJ1bmlm
b3JtIGZsb2F0IHBvaW50U2l6ZTsgIiArCisgICAgICAgICJ2b2lkIG1haW4oKSB7IiArCisgICAg
ICAgICIgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTsiICsKKyAgICAgICAgIiAgZ2xfUG9zaXRp
b24gPSBwb3M7IiArCisgICAgICAgICJ9IjsKKyAgICB2YXIgZnMgPSAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7IiArCisgICAgICAgICJ2b2lkIG1haW4oKSB7IiArCisgICAgICAgICIgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsiICsKKyAgICAgICAgIn0iOworICAg
IHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgW3ZzLCBmc10sIFsncG9zJ10pOwor
ICAgIGlmIChwcm9ncmFtKSB7CisgICAgICAgIHZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgJ3BvaW50U2l6ZScpOworICAgICAgICBnbC51bmlmb3JtMWYobG9jLCBwb2lu
dFNpemUpOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBl
cnJvcnMgYWZ0ZXIgc2V0dGluZyB1cCBwcm9ncmFtIik7CisgICAgfQorICAgIHJldHVybiBwcm9n
cmFtOworfQorCitmdW5jdGlvbiBydW5PbmVUZXN0Q2FzZSh2ZXJ0ZXgpIHsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInRlc3RpbmcgcG9pbnQgYXQgKCIgKyB2ZXJ0ZXhbMF0gKyAiLCAiICsg
dmVydGV4WzFdICsgIiwgIiArIHZlcnRleFsyXSArICIpIik7CisgICAgdmFyIGRhdGEgPSBuZXcg
RmxvYXQzMkFycmF5KHZlcnRleCk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZG
RVIsIDAsIGRhdGEpOworCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
Z2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIDEpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIDEsIDEsIFswLCAyNTUsIDBdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgYWZ0ZXIgcnVubmluZyBvbmUgdGVz
dCBjYXNlIik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICghZ2wpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdmFyIHJhbmdlID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMSUFTRURf
UE9JTlRfU0laRV9SQU5HRSk7CisgICAgaWYgKHJhbmdlWzFdIDwgMi4wKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIkFMSUFTREVEX1BPSU5UX1NJWkVfUkFOR0UgbGVzcyB0aGFuIDIiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBwb2ludFNpemUgPSAyLjA7CisKKyAgICB2YXIgZGF0YSA9
IG5ldyBGbG9hdDMyQXJyYXkoNCk7CisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBkYXRhLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2
YXIgcHJvZ3JhbSA9IHNldHVwUHJvZ3JhbSgpOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJmYWlsIHRvIHNldCB1cCBwcm9ncmFtIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKyAgICBnbC5kaXNhYmxlKGdsLkRJ
VEhFUik7CisgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsKKworICAgIGdsLmNsZWFyQ29s
b3IoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIHZhciB2ZXJ0aWNlcyA9IFsKKyAgICAgICAg
WyAwLjk5LCAwLjUsIDAuMCwgMS4wIF0sCisgICAgICAgIFsgMS4wMSwgMC41LCAwLjAsIDEuMCBd
LAorICAgICAgICBbIDAuNSwgMC45OSwgMC4wLCAxLjAgXSwKKyAgICAgICAgWyAwLjUsIDEuMDEs
IDAuMCwgMS4wIF0sCisgICAgXTsKKyAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCB2ZXJ0aWNl
cy5sZW5ndGg7ICsraWR4KSB7CisgICAgICAgIHJ1bk9uZVRlc3RDYXNlKHZlcnRpY2VzW2lkeF0p
OworICAgIH0KK30KKworcnVuVGVzdHMoKTsKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvY29tcG91bmQtYXNzaWdubWVudC10eXBlLWNvbWJpbmF0
aW9uLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMv
dGVzdHMvY29tcG91bmQtYXNzaWdubWVudC10eXBlLWNvbWJpbmF0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQxYTQ5YmNlZDRjNmE5N2Q2NjgxMjM4N2FkOWE5YzQwNDhmOGY0ZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0
cy9jb21wb3VuZC1hc3NpZ25tZW50LXR5cGUtY29tYmluYXRpb24uanMKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworJ3VzZSBzdHJp
Y3QnOworCisvLyBFU1NMIDEuMDAgc3BlYyBzZWN0aW9uIDUuOCAoYWxzbyBFU1NMIDMuMDAgc3Bl
YyBzZWN0aW9uIDUuOCk6CisvLyAiVGhlIGwtdmFsdWUgYW5kIHRoZSBleHByZXNzaW9uIG11c3Qg
c2F0aXNmeSB0aGUgc2VtYW50aWMgcmVxdWlyZW1lbnRzIG9mIGJvdGggb3AgYW5kIGVxdWFscyAo
PSkiCisvLyBJbiB0aGUgc2VtYW50aWMgcmVxdWlyZW1lbnRzIG9mIGFzc2lnbm1lbnQgKD0pOgor
Ly8gIlRoZSBsdmFsdWUtZXhwcmVzc2lvbiBhbmQgcnZhbHVlLWV4cHJlc3Npb24gbXVzdCBoYXZl
IHRoZSBzYW1lIHR5cGUiCisKK3ZhciBydW5UZXN0ID0gZnVuY3Rpb24oY29udGV4dFZlcnNpb24p
IHsKKyAgdmFyIHZlcnRleFRlbXBsYXRlRVNTTDEgPSBbCisgICAgJ3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OycsCisKKyAgICAndW5pZm9ybSAkKHJ0eXBlKSB1cjsnLAorICAgICd1bmlmb3JtICQo
bHR5cGUpIHVsOycsCisKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyAgICAkKGx0eXBlKSBh
ID0gdWw7JywKKyAgICAnICAgIGEgJChvcCkgdXI7JywKKyAgICAnICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChmbG9hdChhJChsdHlwZVRvU2NhbGFyKSkpOycsCisgICAgJ30nCisgIF0uam9pbignXG4n
KTsKKworICB2YXIgdmVydGV4VGVtcGxhdGVFU1NMMyA9IFsKKyAgICAnI3ZlcnNpb24gMzAwIGVz
JywKKyAgICB2ZXJ0ZXhUZW1wbGF0ZUVTU0wxCisgIF0uam9pbignXG4nKTsKKworICB2YXIgZnJh
Z21lbnRUZW1wbGF0ZUVTU0wxID0gWworICAgICdwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsnLAor
CisgICAgJ3VuaWZvcm0gJChydHlwZSkgdXI7JywKKyAgICAndW5pZm9ybSAkKGx0eXBlKSB1bDsn
LAorCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAgJChsdHlwZSkgYSA9IHVsOycsCisg
ICAgJyAgICBhICQob3ApIHVyOycsCisgICAgJyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZsb2F0
KGEkKGx0eXBlVG9TY2FsYXIpKSk7JywKKyAgICAnfScKKyAgXS5qb2luKCdcbicpOworCisgIHZh
ciBmcmFnbWVudFRlbXBsYXRlRVNTTDMgPSBbCisgICAgJyN2ZXJzaW9uIDMwMCBlcycsCisgICAg
J291dCBtZWRpdW1wIHZlYzQgbXlfRnJhZ0NvbG9yOycsCisgICAgZnJhZ21lbnRUZW1wbGF0ZUVT
U0wxCisgIF0uam9pbignXG4nKS5yZXBsYWNlKCdnbF9GcmFnQ29sb3InLCAnbXlfRnJhZ0NvbG9y
Jyk7CisKKyAgdmFyIGlzTm9uU3F1YXJlTWF0cml4ID0gZnVuY3Rpb24odHlwZVN0cikgeworICAg
IHJldHVybiB0eXBlU3RyLnN1YnN0cmluZygwLCAzKSA9PSAnbWF0JyAmJgorICAgICAgICAgICB0
eXBlU3RyLmxlbmd0aCA+IDUgJiYKKyAgICAgICAgICAgdHlwZVN0clszXSAhPSB0eXBlU3RyWzVd
OworICB9CisKKyAgdmFyIHZzVGVtcGxhdGUgPSBjb250ZXh0VmVyc2lvbiA8IDIgPyB2ZXJ0ZXhU
ZW1wbGF0ZUVTU0wxIDogdmVydGV4VGVtcGxhdGVFU1NMMzsKKyAgdmFyIGZzVGVtcGxhdGUgPSBj
b250ZXh0VmVyc2lvbiA8IDIgPyBmcmFnbWVudFRlbXBsYXRlRVNTTDEgOiBmcmFnbWVudFRlbXBs
YXRlRVNTTDM7CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisgIHZhciB0ZXN0cyA9
IFtdOworCisgIHZhciBiYXNlVHlwZXMgPSBbJ2Zsb2F0JywgJ2ludCddOworICB2YXIgdmVjVHlw
ZXMgPSBbWyd2ZWMyJywgJ3ZlYzMnLCAndmVjNCcsICdtYXQyJywgJ21hdDMnLCAnbWF0NCddLCBb
J2l2ZWMyJywgJ2l2ZWMzJywgJ2l2ZWM0J11dOworICBpZiAoY29udGV4dFZlcnNpb24gPj0gMikg
eworICAgIHZlY1R5cGVzWzBdID0gWyd2ZWMyJywgJ3ZlYzMnLCAndmVjNCcsICdtYXQyeDInLCAn
bWF0M3gzJywgJ21hdDR4NCcsICdtYXQyeDMnLCAnbWF0Mng0JywgJ21hdDN4MicsICdtYXQzeDQn
LCAnbWF0NHgyJywgJ21hdDR4MyddOworICB9CisgIHZhciBvcHMgPSBbJys9JywgJy09JywgJyo9
JywgJy89J107CisKKyAgdmFyIGZzLCB2czsKKyAgZm9yICh2YXIgayA9IDA7IGsgPCBvcHMubGVu
Z3RoOyArK2spIHsKKyAgICB2YXIgb3AgPSBvcHNba107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBiYXNlVHlwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBiYXNlVHlwZSA9IGJhc2VUeXBl
c1tpXTsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmVjVHlwZXNbaV0ubGVuZ3RoOyArK2op
IHsKKyAgICAgICAgdmFyIHZlY1R5cGUgPSB2ZWNUeXBlc1tpXVtqXTsKKyAgICAgICAgdmFyIHZl
Y1R5cGVUb1NjYWxhciA9IHZlY1R5cGUuc3Vic3RyaW5nKDAsIDMpID09ICdtYXQnID8gJ1swXS54
JyA6ICcueCc7CisKKyAgICAgICAgdmFyIHB1c2hUZXN0ID0gZnVuY3Rpb24obHR5cGUsIHJ0eXBl
LCBsdHlwZVRvU2NhbGFyLCBleHBlY3RTdWNjZXNzKSB7CisgICAgICAgICAgICB2cyA9IHd0dS5y
ZXBsYWNlUGFyYW1zKHZzVGVtcGxhdGUsIHtsdHlwZTogbHR5cGUsIHJ0eXBlOiBydHlwZSwgbHR5
cGVUb1NjYWxhcjogbHR5cGVUb1NjYWxhciwgb3A6IG9wfSk7CisgICAgICAgICAgICBmcyA9IHd0
dS5yZXBsYWNlUGFyYW1zKGZzVGVtcGxhdGUsIHtsdHlwZTogbHR5cGUsIHJ0eXBlOiBydHlwZSwg
bHR5cGVUb1NjYWxhcjogbHR5cGVUb1NjYWxhciwgb3A6IG9wfSk7CisgICAgICAgICAgICB0ZXN0
cy5wdXNoKHsKKyAgICAgICAgICAgICAgICB2U2hhZGVyU291cmNlOiB2cywKKyAgICAgICAgICAg
ICAgICB2U2hhZGVyU3VjY2VzczogZXhwZWN0U3VjY2VzcywKKyAgICAgICAgICAgICAgICBsaW5r
U3VjY2VzczogZXhwZWN0U3VjY2VzcywKKyAgICAgICAgICAgICAgICBwYXNzTXNnOiBsdHlwZSAr
ICIgIiArIG9wICsgIiAiICsgcnR5cGUgKyAiIGluIGEgdmVydGV4IHNoYWRlciBzaG91bGQgIiAr
IChleHBlY3RTdWNjZXNzID8gInN1Y2NlZWQuIiA6ICJmYWlsLiIpCisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgICAgIGZTaGFkZXJTb3VyY2U6
IGZzLAorICAgICAgICAgICAgICAgIGZTaGFkZXJTdWNjZXNzOiBleHBlY3RTdWNjZXNzLAorICAg
ICAgICAgICAgICAgIGxpbmtTdWNjZXNzOiBleHBlY3RTdWNjZXNzLAorICAgICAgICAgICAgICAg
IHBhc3NNc2c6IGx0eXBlICsgIiAiICsgb3AgKyAiICIgKyBydHlwZSArICIgaW4gYSBmcmFnbWVu
dCBzaGFkZXIgc2hvdWxkICIgKyAoZXhwZWN0U3VjY2VzcyA/ICJzdWNjZWVkLiIgOiAiZmFpbC4i
KQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAvLyAic2NhbGFyIG9wPSB2
ZWN0b3IiIGlzIG5vdCBva2F5LCBzaW5jZSB0aGUgcmVzdWx0IG9mIG9wIGlzIGEgdmVjdG9yLAor
ICAgICAgICAvLyB3aGljaCBjYW4ndCBiZSBhc3NpZ25lZCB0byBhIHNjYWxhci4KKyAgICAgICAg
cHVzaFRlc3QoYmFzZVR5cGUsIHZlY1R5cGUsICcnLCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGog
PiAwKSB7CisgICAgICAgICAgICB2YXIgdmVjVHlwZTIgPSB2ZWNUeXBlc1tpXVtqIC0gMV07Cisg
ICAgICAgICAgICAvLyAidmVjdG9yMSBvcD0gdmVjdG9yMiIgaXMgbm90IG9rYXkgd2hlbiB2ZWN0
b3IxIGFuZCB2ZWN0b3IyIGhhdmUKKyAgICAgICAgICAgIC8vIG5vbi1tYXRjaGluZyBkaW1lbnNp
b25zLgorICAgICAgICAgICAgcHVzaFRlc3QodmVjVHlwZSwgdmVjVHlwZTIsIHZlY1R5cGVUb1Nj
YWxhciwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgLy8gInZlY3RvciBvcD0gc2NhbGFy
IiBpcyBva2F5LgorICAgICAgICBwdXNoVGVzdCh2ZWNUeXBlLCBiYXNlVHlwZSwgdmVjVHlwZVRv
U2NhbGFyLCB0cnVlKTsKKworICAgICAgICAvLyB2ZWNYICo9IG1hdFggaXMgb2theSAoZWZmZWN0
aXZlbHksIHRoaXMgdHJlYXRzIHZlY3RvciBhcyBhIHJvdyB2ZWN0b3IpLgorICAgICAgICBpZiAo
dmVjVHlwZS5zdWJzdHJpbmcoMCwgMykgPT0gJ3ZlYycgJiYgb3AgPT0gJyo9JykgeworICAgICAg
ICAgICAgcHVzaFRlc3QodmVjVHlwZSwgJ21hdCcgKyB2ZWNUeXBlWzNdLCB2ZWNUeXBlVG9TY2Fs
YXIsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wICE9ICcqPScgfHwgIWlzTm9u
U3F1YXJlTWF0cml4KHZlY1R5cGUpKSB7CisgICAgICAgICAgICAvLyAidmVjdG9yMSBvcD0gdmVj
dG9yMiIgaXMgb2theSB3aGVuIHZlY3RvcjEgYW5kIHZlY3RvcjIgaGF2ZSB0aGUgc2FtZQorICAg
ICAgICAgICAgLy8gdHlwZSAoZG9lcyBhIGNvbXBvbmVudC13aXNlIG9wZXJhdGlvbiBvciBtYXRy
aXggbXVsdGlwbGljYXRpb24pLgorICAgICAgICAgICAgcHVzaFRlc3QodmVjVHlwZSwgdmVjVHlw
ZSwgdmVjVHlwZVRvU2NhbGFyLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIG5vbi1zcXVhcmUgbWF0cmljZXMgY2FuIG9ubHkgYmUgY29tcG91bmQgbXVsdGlwbGllZCB3
aXRoIGEgc3F1YXJlIG1hdHJpeC4KKyAgICAgICAgICAgIHB1c2hUZXN0KHZlY1R5cGUsIHZlY1R5
cGUsIHZlY1R5cGVUb1NjYWxhciwgZmFsc2UpOworICAgICAgICAgICAgcHVzaFRlc3QodmVjVHlw
ZSwgJ21hdCcgKyB2ZWNUeXBlWzNdLCB2ZWNUeXBlVG9TY2FsYXIsIHRydWUpOworICAgICAgICB9
CisgICAgICB9CisgICAgfQorICB9CisKKyAgR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blRlc3Rz
KHRlc3RzLCBjb250ZXh0VmVyc2lvbik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvanMvdGVzdHMvY29tcHJlc3NlZC10ZXgtaW1hZ2UuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleC1pbWFn
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ODg2MTgxZjRjMTNlNzlmMWZlNjg1ODhmYmU1YTQ1NDYyNTVlZjg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvanMvdGVzdHMvY29tcHJlc3NlZC10ZXgtaW1hZ2UuanMKQEAgLTAsMCArMSwxMzgg
QEAKKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBp
bXBsZW1lbnRhdGlvbnMgY29ycmVjdGx5IGltcGxlbWVudCBxdWVyeWluZyBmb3IgY29tcHJlc3Nl
ZCB0ZXh0dXJlcyB3aGVuIGV4dGVuc2lvbnMgYXJlIGRpc2FibGVkLiIpOworCitkZWJ1ZygiIik7
CisKK2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KG51bGwsIHVuZGVmaW5lZCwgY29udGV4dFZlcnNpb24pOworCitjb25zdCBDT01QUkVT
U0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICA9IDB4OEMwMDsKK2NvbnN0IENPTVBSRVNTRURf
UkdCQV9QVlJUQ180QlBQVjFfSU1HICAgID0gMHg4QzAyOworCitsZXQgZm9ybWF0cyA9IG51bGw7
CitsZXQgZXh0OworCitpZiAoIWdsKSB7CisgIHRlc3RGYWlsZWQoImNvbnRleHQgZG9lcyBub3Qg
ZXhpc3QiKTsKK30gZWxzZSB7CisgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAg
dmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURf
RU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxMCwg
MTAsIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcsIG5ldyBVaW50OEFycmF5KDgpKTsi
KTsKKworICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICJn
bC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBDT01QUkVTU0VEX1JHQl9Q
VlJUQ180QlBQVjFfSU1HLCA4LCA4LCAwLCBuZXcgVWludDhBcnJheSg4KSkiKTsKKyAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiZ2wuY29tcHJlc3NlZFRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcsIDgsIDgsIDAsIG5ldyBVaW50OEFycmF5KDgpKSIpOworCisgIHd0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAiZm9ybWF0cyA9IGdsLmdldFBhcmFtZXRlcihnbC5D
T01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUykiKTsKKyAgc2hvdWxkQmVOb25OdWxsKCJmb3JtYXRz
Iik7CisgIHNob3VsZEJlKCJmb3JtYXRzLmxlbmd0aCIsICIwIik7CisKKyAgd3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICJnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEsIDQsIDQsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBV
aW50OEFycmF5KDQqNCo0KSk7Iik7CisgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
LklOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2wuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwgQ09NUFJFU1NFRF9S
R0JfUFZSVENfNEJQUFYxX0lNRywgbmV3IFVpbnQ4QXJyYXkoOCkpOyIpOworCisgIC8vIENoZWNr
IHRvby1tYW55IGFuZCB0b28tZmV3IGFyZ3MuCisKKyAgd3R1LnNob3VsZFRocm93KGdsLCBmYWxz
ZSwgInRvbyBtYW55IGFyZ3MiLCBmdW5jdGlvbigpIHsKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HLCA0
LCA0LCAwLCBuZXcgVWludDhBcnJheSg4KSwgbnVsbCk7CisgIH0pOworICB3dHUuc2hvdWxkVGhy
b3coZ2wsIFR5cGVFcnJvciwgInRvbyBmZXcgYXJncyIsIGZ1bmN0aW9uKCkgeworICAgIGdsLmNv
bXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIENPTVBSRVNTRURfUkdCX1BWUlRD
XzRCUFBWMV9JTUcsIDQsIDQsIDApOworICB9KTsKKworICB3dHUuc2hvdWxkVGhyb3coZ2wsIGZh
bHNlLCAidG9vIG1hbnkgYXJncyIsIGZ1bmN0aW9uKCkgeworICAgIGdsLmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDQsIDQsIENPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUcsIG5ldyBVaW50OEFycmF5KDgpLCBudWxsKTsKKyAgfSk7CisgIHd0dS5z
aG91bGRUaHJvdyhnbCwgVHlwZUVycm9yLCAidG9vIGZldyBhcmdzIiwgZnVuY3Rpb24oKSB7Cisg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwg
NCwgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgIH0pOworCisgIC8vIC0KKwor
ICBsZXQgcGJvOworICAvLyBXZWJHTCAyLjAgc3BlY2lmaWMKKyAgaWYgKGdsLlBJWEVMX1VOUEFD
S19CVUZGRVIpIHsKKyAgICBwYm8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgfQorCisgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKyAgZnVuY3Rpb24gdmFsaWRhdGVFeHQo
ZXh0TmFtZSwgZW51bU5hbWUsIGJsb2NrU2l6ZSwgYmxvY2tCeXRlU2l6ZSwgZXhwZWN0ZWRTdWJJ
bWFnZUVycm9yKSB7CisgICAgZGVidWcoJ1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7
CisgICAgZGVidWcoJ1xuJyArIGV4dE5hbWUpOworICAgIGV4dCA9IGdsLmdldEV4dGVuc2lvbihl
eHROYW1lKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgdGVzdFBhc3NlZChgT3B0aW9uYWwgZXh0
ICR7ZXh0TmFtZX0gTUFZIGJlIHVuc3VwcG9ydGVkLmApOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICB0ZXN0UGFzc2VkKGBPcHRpb25hbCBleHQgJHtleHROYW1lfSBpcyBzdXBwb3J0ZWQuYCk7
CisKKyAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYmxvY2tCeXRlU2l6ZSk7CisKKyAg
ICBjb25zdCB2aWV3cyA9IFsKKyAgICAgIGRhdGEsCisgICAgICBuZXcgVWludDhDbGFtcGVkQXJy
YXkoZGF0YS5idWZmZXIpLAorICAgICAgbmV3IEludDhBcnJheShkYXRhLmJ1ZmZlciksCisgICAg
ICBuZXcgVWludDE2QXJyYXkoZGF0YS5idWZmZXIpLAorICAgICAgbmV3IEludDE2QXJyYXkoZGF0
YS5idWZmZXIpLAorICAgICAgbmV3IFVpbnQzMkFycmF5KGRhdGEuYnVmZmVyKSwKKyAgICAgIG5l
dyBJbnQzMkFycmF5KGRhdGEuYnVmZmVyKSwKKyAgICAgIG5ldyBGbG9hdDMyQXJyYXkoZGF0YS5i
dWZmZXIpLAorICAgICAgbmV3IERhdGFWaWV3KGRhdGEuYnVmZmVyKSwKKyAgICBdOworICAgIGlm
ICh3aW5kb3cuU2hhcmVkQXJyYXlCdWZmZXIpIHsKKyAgICAgIGNvbnN0IHNoYXJlZEJ1ZmZlciA9
IG5ldyBTaGFyZWRBcnJheUJ1ZmZlcihibG9ja0J5dGVTaXplKTsKKyAgICAgIHZpZXdzLnB1c2go
CisgICAgICAgIG5ldyBVaW50OEFycmF5KHNoYXJlZEJ1ZmZlciksCisgICAgICAgIG5ldyBVaW50
OENsYW1wZWRBcnJheShzaGFyZWRCdWZmZXIpLAorICAgICAgICBuZXcgRGF0YVZpZXcoc2hhcmVk
QnVmZmVyKQorICAgICAgKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IHZpZXcgb2Ygdmlld3Mp
IHsKKyAgICAgIHdpbmRvdy5nX3ZpZXcgPSB2aWV3OworICAgICAgZGVidWcoYFxuZnJvbSAke3Zp
ZXcuY29uc3RydWN0b3IubmFtZX0gb2YgJHt2aWV3LmJ1ZmZlci5jb25zdHJ1Y3Rvci5uYW1lfWAp
OworICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsCisgICAg
ICAgICAgYGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGV4dC4ke2Vu
dW1OYW1lfSwgJHtibG9ja1NpemV9LCR7YmxvY2tTaXplfSwgMCwgZ192aWV3KWApOworCisgICAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBleHBlY3RlZFN1YkltYWdlRXJyb3IsCisg
ICAgICAgICAgYGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAs
MCwgJHtibG9ja1NpemV9LCR7YmxvY2tTaXplfSwgZXh0LiR7ZW51bU5hbWV9LCBnX3ZpZXcpYCk7
CisgICAgfQorCisgICAgaWYgKHBibykgeworICAgICAgZGVidWcoJ1xuZnJvbSBQQk8nKTsKKyAg
ICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgcGJvKTsKKyAgICAgIHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgICAgIGBnbC5i
dWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsICR7YmxvY2tCeXRlU2l6ZX0qMiwgZ2wu
U1RBVElDX0RSQVcpYCk7CisKKyAgICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLAorICAgICAgICAgIGBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBleHQuJHtlbnVtTmFtZX0sICR7YmxvY2tTaXplfSwke2Jsb2NrU2l6ZX0sIDAsICR7
YmxvY2tCeXRlU2l6ZX0sIDApYCk7CisgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGds
LCBnbC5OT19FUlJPUiwKKyAgICAgICAgICBgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZXh0LiR7ZW51bU5hbWV9LCAke2Jsb2NrU2l6ZX0sJHtibG9ja1NpemV9LCAw
LCAke2Jsb2NrQnl0ZVNpemV9LCAxKWApOworICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsCisgICAgICAgICAgYGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGV4dC4ke2VudW1OYW1lfSwgJHtibG9ja1NpemV9LCR7YmxvY2tTaXpl
fSwgMCwgJHtibG9ja0J5dGVTaXplfSwgJHtibG9ja0J5dGVTaXplfSlgKTsKKyAgICAgIHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAg
IGBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuJHtlbnVtTmFt
ZX0sICR7YmxvY2tTaXplfSwke2Jsb2NrU2l6ZX0sIDAsICR7YmxvY2tCeXRlU2l6ZX0sICR7Ymxv
Y2tCeXRlU2l6ZSsxfSlgKTsKKworICAgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwg
ZXhwZWN0ZWRTdWJJbWFnZUVycm9yLAorICAgICAgICAgIGBnbC5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCAwLDAsICR7YmxvY2tTaXplfSwke2Jsb2NrU2l6ZX0sIGV4
dC4ke2VudW1OYW1lfSwgJHtibG9ja0J5dGVTaXplfSwgMClgKTsKKyAgICAgIHd0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGV4cGVjdGVkU3ViSW1hZ2VFcnJvciwKKyAgICAgICAgICBgZ2wu
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwwLCAke2Jsb2NrU2l6
ZX0sJHtibG9ja1NpemV9LCBleHQuJHtlbnVtTmFtZX0sICR7YmxvY2tCeXRlU2l6ZX0sIDEpYCk7
CisgICAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBleHBlY3RlZFN1YkltYWdlRXJy
b3IsCisgICAgICAgICAgYGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsMCwgJHtibG9ja1NpemV9LCR7YmxvY2tTaXplfSwgZXh0LiR7ZW51bU5hbWV9LCAke2Js
b2NrQnl0ZVNpemV9LCAke2Jsb2NrQnl0ZVNpemV9KWApOworICAgICAgd3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgYGdsLmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsMCwgJHtibG9ja1NpemV9LCR7
YmxvY2tTaXplfSwgZXh0LiR7ZW51bU5hbWV9LCAke2Jsb2NrQnl0ZVNpemV9LCAke2Jsb2NrQnl0
ZVNpemUrMX0pYCk7CisKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZF
UiwgbnVsbCk7CisgICAgfQorICB9CisKKyAgdmFsaWRhdGVFeHQoJ1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjJywgJ0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUJywgNCwgMTYsIGds
Lk5PX0VSUk9SKTsKKyAgdmFsaWRhdGVFeHQoJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMx
JywgJ0NPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0wnLCA0LCA4LCBnbC5JTlZBTElEX09QRVJBVElP
Tik7CisgIHZhbGlkYXRlRXh0KCdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjJywgJ0NPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMnLCA0LCAxNiwgZ2wuTk9fRVJST1IpOworICB2YWxpZGF0ZUV4
dCgnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMnLCAnQ09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUicsIDQsIDE2LCBnbC5OT19FUlJPUik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvanMvdGVzdHMvZXh0LWNvbG9yLWJ1ZmZlci1oYWxmLWZsb2F0LmpzIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZXh0LWNv
bG9yLWJ1ZmZlci1oYWxmLWZsb2F0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZGU4YjY3ZWZmZDE3YTU3YTlh
YTg4MThlYmQ2YTFmZmQ3MzY2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9leHQtY29sb3ItYnVmZmVyLWhh
bGYtZmxvYXQuanMKQEAgLTAsMCArMSw0NzMgQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24g
YWxsb2NhdGVUZXh0dXJlKCkKK3sKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUo
KTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVB
UkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01B
R19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0Up
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4dHVyZSBwYXJh
bWV0ZXIgc2V0dXAgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tSZW5kZXJpbmdSZXN1bHRzKCkKK3sKKyAgICB3dHUuY2hlY2tDYW52YXMo
Z2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30KKworZnVuY3Rpb24g
YXJyYXlUb1N0cmluZyhhcnIsIHNpemUpIHsKKyAgICB2YXIgbXlTaXplOworICAgIGlmICghc2l6
ZSkKKyAgICAgICAgbXlTaXplID0gYXJyLmxlbmd0aDsKKyAgICBlbHNlCisgICAgICAgIG15U2l6
ZSA9IHNpemU7CisgICAgdmFyIG91dCA9ICJbIjsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
bXlTaXplOyArK2lpKSB7CisgICAgaWYgKGlpID4gMCkgeworICAgICAgICBvdXQgKz0gIiwgIjsK
KyAgICB9CisgICAgb3V0ICs9IGFycltpaV07CisgICAgfQorICAgIHJldHVybiBvdXQgKyAiXSI7
Cit9CisKK2Z1bmN0aW9uIHJ1blJlYWRiYWNrVGVzdCh0ZXN0UHJvZ3JhbSwgc3VidHJhY3RvcikK
K3sKKyAgICAvLyBWZXJpZnkgZmxvYXRpbmcgcG9pbnQgcmVhZGJhY2sKKyAgICBkZWJ1ZygiQ2hl
Y2tpbmcgcmVhZGJhY2sgb2YgZmxvYXRpbmctcG9pbnQgdmFsdWVzIik7CisgICAgdmFyIGJ1ZiA9
IG5ldyBGbG9hdDMyQXJyYXkoNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5S
R0JBLCBnbC5GTE9BVCwgYnVmKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInJlYWRQaXhlbHMgZnJvbSBmbG9hdGluZy1wb2ludCBmcmFtZWJ1ZmZlciBzaG91bGQg
c3VjY2VlZCIpOworICAgIHZhciBvayA9IHRydWU7CisgICAgdmFyIHRvbGVyYW5jZSA9IDguMDsg
Ly8gVE9ETzogZmFjdG9yIHRoaXMgb3V0IGZyb20gYm90aCB0aGlzIHRlc3QgYW5kIHRoZSBzdWJ0
cmFjdG9yIHNoYWRlciBhYm92ZS4KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYnVmLmxlbmd0
aDsgKytpaSkgeworICAgICAgICBpZiAoTWF0aC5hYnMoYnVmW2lpXSAtIHN1YnRyYWN0b3JbaWld
KSA+IHRvbGVyYW5jZSkgeworICAgICAgICBvayA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAob2spIHsKKyAgICAgICAgdGVzdFBhc3NlZCgicmVhZFBp
eGVscyBvZiBmbG9hdC10eXBlIGRhdGEgZnJvbSBmbG9hdGluZy1wb2ludCBmcmFtZWJ1ZmZlciBz
dWNjZWVkZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkUGl4ZWxz
IG9mIGZsb2F0LXR5cGUgZGF0YSBmcm9tIGZsb2F0aW5nLXBvaW50IGZyYW1lYnVmZmVyIGZhaWxl
ZDogZXhwZWN0ZWQgIgorICAgICAgICAgICAgICAgICAgICsgYXJyYXlUb1N0cmluZyhzdWJ0cmFj
dG9yLCA0KSArICIsIGdvdCAiICsgYXJyYXlUb1N0cmluZyhidWYpKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QoZW5hYmxlZCwgaW50ZXJuYWxG
b3JtYXRTdHJpbmcsIGZvcm1hdCwgdHlwZSwgdGVzdFByb2dyYW0sIG51bWJlck9mQ2hhbm5lbHMs
IHN1YnRyYWN0b3IsIHRleFN1YkltYWdlQ292ZXIpCit7CisgICAgbGV0IGludGVybmFsRm9ybWF0
ID0gZXZhbChpbnRlcm5hbEZvcm1hdFN0cmluZyk7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJ0ZXN0aW5nIGZsb2F0aW5nLXBvaW50ICIgKyBpbnRlcm5hbEZvcm1hdFN0cmluZyArICIgdGV4
dHVyZSByZW5kZXIgdGFyZ2V0IiArICh0ZXhTdWJJbWFnZUNvdmVyID4gMCA/ICIgYWZ0ZXIgY2Fs
bGluZyB0ZXhTdWJJbWFnZSIgOiAiIikpOworCisgICAgdmFyIHRleHR1cmUgPSBhbGxvY2F0ZVRl
eHR1cmUoKTsKKyAgICB2YXIgd2lkdGggPSAyOworICAgIHZhciBoZWlnaHQgPSAyOworICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWln
aHQsIDAsIGZvcm1hdCwgdHlwZSwgbnVsbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJmbG9hdGluZy1wb2ludCB0ZXh0dXJlIGFsbG9jYXRpb24gc2hvdWxkIHN1
Y2NlZWQiKTsKKworICAgIC8vIFRyeSB0byB1c2UgdGhpcyB0ZXh0dXJlIGFzIGEgcmVuZGVyIHRh
cmdldC4KKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsK
KworICAgIHZhciBjb21wbGV0ZVN0YXR1cyA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpOworICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICBpZiAoY29tcGxldGVT
dGF0dXMgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUgJiYgIWVuYWJsZWQpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJmbG9hdGluZy1wb2ludCAiICsgaW50ZXJuYWxGb3JtYXRTdHJpbmcgKyAi
IHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQiKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZmxvYXRpbmctcG9pbnQgIiArIGludGVybmFsRm9ybWF0
U3RyaW5nICsgIiByZW5kZXIgdGFyZ2V0IHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY29tcGxldGVTdGF0dXMgIT0gZ2wuRlJBTUVC
VUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgaWYgKHZlcnNpb24gPT0gMSAmJiBmb3JtYXQgPT0g
Z2wuUkdCKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiZmxvYXRpbmctcG9pbnQgIiArIGludGVy
bmFsRm9ybWF0U3RyaW5nICsgIiByZW5kZXIgdGFyZ2V0IG5vdCBzdXBwb3J0ZWQ7IHRoaXMgaXMg
YWxsb3dlZC4iKQorICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmbG9hdGlu
Zy1wb2ludCAiICsgaW50ZXJuYWxGb3JtYXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQgbm90IHN1
cHBvcnRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHRleFN1YkltYWdl
Q292ZXIgPiAwKSB7CisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJlcGxhY2luZyB0aGUgd2hvbGUg
dGV4dHVyZSBvciBhIHBhcnQgb2YgaXQgd2l0aCB0ZXhTdWJJbWFnZTJEIGRvZXNuJ3QgYWZmZWN0
IHJlbmRlcmFiaWxpdHkKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
dHVyZSk7CisgICAgICAgIHZhciBkYXRhID0gbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdo
dCAqIG51bWJlck9mQ2hhbm5lbHMgKiB0ZXhTdWJJbWFnZUNvdmVyKTsKKyAgICAgICAgZ2wudGV4
U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICogdGV4U3Vi
SW1hZ2VDb3ZlciwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0ZXhTdWJJbWFnZTJEIHNob3VsZCBzdWNjZWVkIGlmIEVY
VF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBpcyBlbmFibGVkIik7CisgICAgICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgICAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlbmRlciB0YXJnZXQgc3VwcG9ydCBjaGFuZ2VkIGFm
dGVyIGNhbGxpbmcgdGV4U3ViSW1hZ2UyRCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgdmFyIHJlbmRlclByb2dyYW0gPQorICAgICAgICB3dHUuc2V0dXBQ
cm9ncmFtKGdsLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt3dHUuc2ltcGxlVmVydGV4U2hh
ZGVyLCBgdm9pZCBtYWluKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMTAwMC4wLCAxMDAwLjAsIDEwMDAu
MCwgMTAwMC4wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9YF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyd2UG9zaXRpb24nXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbMF0pOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZW5kZXJp
bmcgdG8gZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8g
Tm93IHNhbXBsZSBmcm9tIHRoZSBmbG9hdGluZy1wb2ludCB0ZXh0dXJlIGFuZCB2ZXJpZnkgd2Ug
Z290IHRoZSBjb3JyZWN0IHZhbHVlcy4KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIG51bGwpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUp
OworICAgIGdsLnVzZVByb2dyYW0odGVzdFByb2dyYW0pOworICAgIGdsLnVuaWZvcm0xaShnbC5n
ZXRVbmlmb3JtTG9jYXRpb24odGVzdFByb2dyYW0sICJ0ZXgiKSwgMCk7CisgICAgZ2wudW5pZm9y
bTRmdihnbC5nZXRVbmlmb3JtTG9jYXRpb24odGVzdFByb2dyYW0sICJzdWJ0cmFjdG9yIiksIHN1
YnRyYWN0b3IpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJyZW5kZXJpbmcgZnJvbSBmbG9hdGluZy1w
b2ludCB0ZXh0dXJlIHNob3VsZCBzdWNjZWVkIik7CisgICAgY2hlY2tSZW5kZXJpbmdSZXN1bHRz
KCk7CisKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
cnVuUmVhZGJhY2tUZXN0KHRlc3RQcm9ncmFtLCBzdWJ0cmFjdG9yKTsKK30KKworZnVuY3Rpb24g
cnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGVuYWJsZWQsIGludGVybmFsRm9y
bWF0U3RyaW5nLCB0ZXN0UHJvZ3JhbSwgbnVtYmVyT2ZDaGFubmVscywgc3VidHJhY3RvcikKK3sK
KyAgICB2YXIgaW50ZXJuYWxGb3JtYXQgPSBldmFsKGludGVybmFsRm9ybWF0U3RyaW5nKTsKKyAg
ICB2YXIgc2FtcGxlcyA9IFswXTsKKyAgICBpZiAoZW5hYmxlZCAmJiB2ZXJzaW9uID4gMSkgewor
ICAgICAgICBzYW1wbGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZ2wuZ2V0SW50ZXJu
YWxmb3JtYXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgZ2wuU0FN
UExFUykpOworICAgICAgICBzYW1wbGVzLnB1c2goMCk7CisgICAgfQorICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IHNhbXBsZXMubGVuZ3RoOyArK25keCkgeworICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGZsb2F0aW5nLXBvaW50ICIgKyBpbnRlcm5hbEZvcm1h
dFN0cmluZyArICIgcmVuZGVyYnVmZmVyIHJlbmRlciB0YXJnZXQgd2l0aCBudW1iZXIgb2Ygc2Ft
cGxlcyAiICsgc2FtcGxlc1tuZHhdKTsKKworICAgICAgICB2YXIgY29sb3JidWZmZXIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgdmFyIHdpZHRoID0gMjsKKyAgICAgICAgdmFy
IGhlaWdodCA9IDI7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVS
LCBjb2xvcmJ1ZmZlcik7CisgICAgICAgIGlmIChzYW1wbGVzW25keF0gPT0gMCkKKyAgICAgICAg
ICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIHNhbXBsZXNbbmR4XSwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAoIWVuYWJsZWQpIHsKKyAg
ICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImZsb2F0
aW5nLXBvaW50IHJlbmRlcmJ1ZmZlciBhbGxvY2F0aW9uIHNob3VsZCBmYWlsIGlmIEVYVF9jb2xv
cl9idWZmZXJfaGFsZl9mbG9hdCBpcyBub3QgZW5hYmxlZCBvciB0aGlzIGlzIGEgMzIgYml0IGZv
cm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJmbG9hdGluZy1wb2ludCBy
ZW5kZXJidWZmZXIgYWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCBpZiBFWFRfY29sb3JfYnVmZmVy
X2hhbGZfZmxvYXQgaXMgZW5hYmxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVHJ5IHRv
IHVzZSB0aGlzIHJlbmRlcmJ1ZmZlciBhcyBhIHJlbmRlciB0YXJnZXQuCisgICAgICAgIHZhciBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBj
b2xvcmJ1ZmZlcik7CisKKyAgICAgICAgdmFyIGNvbXBsZXRlU3RhdHVzID0gZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgIGlmIChjb21wbGV0ZVN0YXR1
cyAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZmxvYXRpbmctcG9pbnQgIiArIGludGVybmFsRm9ybWF0U3RyaW5nICsgIiByZW5kZXIgdGFyZ2V0
IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB2YXIgcmVzb2x2ZUNvbG9yUmJvID0gbnVsbDsKKyAgICAgICAgdmFyIHJlc29sdmVGYm8gPSBu
dWxsOworICAgICAgICBpZiAoc2FtcGxlc1tuZHhdID4gMCkgeworICAgICAgICAgICAgcmVzb2x2
ZUNvbG9yUmJvID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICBnbC5iaW5k
UmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVzb2x2ZUNvbG9yUmJvKTsKKyAgICAgICAg
ICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICByZXNvbHZlRmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgcmVzb2x2ZUZibyk7CisgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlJFTkRFUkJVRkZFUiwgcmVz
b2x2ZUNvbG9yUmJvKTsKKyAgICAgICAgICAgIGNvbXBsZXRlU3RhdHVzID0gZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBpZiAoY29tcGxldGVT
dGF0dXMgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJGYWlsZWQgdG8gY3JlYXRlIHJlc29sdmUgZnJhbWVidWZmZXIiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5jbGVhckNvbG9y
KDEwMDAuMCwgMTAwMC4wLCAxMDAwLjAsIDEwMDAuMCk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIGlmIChzYW1wbGVzW25keF0gPiAwKSB7CisgICAg
ICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRFJBV19GUkFNRUJVRkZFUiwgcmVzb2x2ZUZi
byk7CisgICAgICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgd2lkdGgsIGhlaWdodCwg
MCwgMCwgd2lkdGgsIGhlaWdodCwgZ2wuQ09MT1JfQlVGRkVSX0JJVCwgZ2wuTkVBUkVTVCk7Cisg
ICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuUkVBRF9GUkFNRUJVRkZFUiwgcmVzb2x2
ZUZibyk7CisgICAgICAgIH0KKyAgICAgICAgcnVuUmVhZGJhY2tUZXN0KHRlc3RQcm9ncmFtLCBz
dWJ0cmFjdG9yKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blJHQjE2Rk5lZ2F0aXZlVGVzdCgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIFJHQjE2RiBpc24ndCBjb2xv
ciByZW5kZXJhYmxlIik7CisKKyAgICB2YXIgdGV4dHVyZSA9IGFsbG9jYXRlVGV4dHVyZSgpOwor
ICAgIHZhciB3aWR0aCA9IDI7CisgICAgdmFyIGhlaWdodCA9IDI7CisgICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IxNkYsIHdpZHRoLCBoZWlnaHQsIDAsIGdsLlJHQiwg
Z2wuRkxPQVQsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAiUkdCMTZGIHRleHR1cmUgYWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8g
VHJ5IHRvIHVzZSB0aGlzIHRleHR1cmUgYXMgYSByZW5kZXIgdGFyZ2V0LgorICAgIHZhciBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgdmFyIGNvbXBsZXRl
U3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAg
aWYgKGNvbXBsZXRlU3RhdHVzID09IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICB0
ZXN0RmFpbGVkKCJSR0IxNkYgcmVuZGVyIHRhcmdldCBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCB3
aXRoIG9yIHdpdGhvdXQgZW5hYmxpbmcgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iik7Cisg
ICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJSR0IxNkYgcmVuZGVyIHRhcmdldCBzaG91bGQg
bm90IGJlIHN1cHBvcnRlZCB3aXRoIG9yIHdpdGhvdXQgZW5hYmxpbmcgRVhUX2NvbG9yX2J1ZmZl
cl9oYWxmX2Zsb2F0Iik7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKworICAgIHZh
ciBjb2xvcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIGdsLmJpbmRSZW5k
ZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7CisgICAgZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQjE2Riwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiUkdCMTZGIHJlbmRl
cmJ1ZmZlciBhbGxvY2F0aW9uIHNob3VsZCBmYWlsIHdpdGggb3Igd2l0aG91dCBlbmFibGluZyBF
WFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgbnVsbCk7CisgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKGNvbG9yYnVm
ZmVyKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7Cisg
ICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKK30KKworZnVuY3Rpb24gcnVuVW5pcXVlT2Jq
ZWN0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQgZ2V0
RXh0ZW5zaW9uKCkgcmV0dXJucyB0aGUgc2FtZSBvYmplY3QgZWFjaCB0aW1lIik7CisgICAgZ2wu
Z2V0RXh0ZW5zaW9uKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKS5teVByb3BlcnR5ID0g
MjsKKyAgICB3ZWJnbEhhcm5lc3NDb2xsZWN0R2FyYmFnZSgpOworICAgIHNob3VsZEJlKCdnbC5n
ZXRFeHRlbnNpb24oIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpLm15UHJvcGVydHknLCAn
MicpOworfQorCitmdW5jdGlvbiBydW5JbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIHRoZSBpbnRlcm5hbCBmb3JtYXQgcXVlcnki
KTsKKworICAgIHZhciBtYXhTYW1wbGVzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9TQU1QTEVT
KTsKKyAgICB2YXIgZm9ybWF0cyA9IG5ldyBBcnJheShnbC5SR0JBMTZGLCBnbC5SMTZGLCBnbC5S
RzE2Rik7CisgICAgdmFyIGZpcnN0TXVsdGlPbmx5Rm9ybWF0ID0gNDsKKyAgICBmb3IgKHZhciBm
bXQgPSAwOyBmbXQgPCBmb3JtYXRzLmxlbmd0aDsgKytmbXQpIHsKKyAgICAgICAgdmFyIHNhbXBs
ZXMgPSBnbC5nZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGZvcm1h
dHNbZm10XSwgZ2wuU0FNUExFUyk7CisgICAgICAgIGlmIChmbXQgPj0gZmlyc3RNdWx0aU9ubHlG
b3JtYXQgJiYgKHNhbXBsZXMubGVuZ3RoID09IDAgfHwgc2FtcGxlc1swXSA8IG1heFNhbXBsZXMp
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ0aGUgbWF4aW11bSB2YWx1ZSBpbiBTQU1QTEVT
IHNob3VsZCBiZSBhdCBsZWFzdCAiICsgbWF4U2FtcGxlcyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB2YXIgcHJldlNhbXBsZUNvdW50ID0gMDsKKyAgICAgICAg
dmFyIHNhbXBsZUNvdW50OworICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBzYW1wbGVz
Lmxlbmd0aDsgKytuZHgsIHByZXZTYW1wbGVDb3VudCA9IHNhbXBsZUNvdW50KSB7CisgICAgICAg
ICAgICBzYW1wbGVDb3VudCA9IHNhbXBsZXNbbmR4XTsKKyAgICAgICAgICAgIC8vIHNhbXBsZSBj
b3VudCBtdXN0IGJlID4gMAorICAgICAgICAgICAgaWYgKHNhbXBsZUNvdW50IDw9IDApIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBzYW1wbGUgY291bnQgdG8gYmUgYXQg
bGVhc3Qgb25lOyBnb3QgIiArIHNhbXBsZUNvdW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNhbXBsZXMgbXVzdCBiZSBvcmRlcmVk
IGRlc2NlbmRpbmcKKyAgICAgICAgICAgIGlmIChuZHggPiAwICYmIHNhbXBsZUNvdW50ID49IHBy
ZXZTYW1wbGVDb3VudCkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVkIHNh
bXBsZSBjb3VudCB0byBiZSBvcmRlcmVkIGluIGRlc2NlbmRpbmcgb3JkZXI7IGdvdCAiICsgcHJl
dlNhbXBsZUNvdW50ICsgIiBhdCBpbmRleCAiICsgKG5keCAtIDEpICsgIiwgYW5kICIgKyBzYW1w
bGVDb3VudCArICIgYXQgaW5kZXggIiArIG5keCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHRlc3RQYXNzZWQoIkludGVybmFs
IGZvcm1hdCBxdWVyeSBzdWNjZWVkZWQiKTsKK30KKworZnVuY3Rpb24gcnVuQ29weVRleEltYWdl
VGVzdChlbmFibGVkKQoreworICAgIHZhciB3aWR0aCA9IDE2OworICAgIHZhciBoZWlnaHQgPSAx
NjsKKyAgICB2YXIgbGV2ZWwgPSAwOworICAgIHZhciBjYXNlcyA9IFsKKyAgICAgICAgeyBpbnRl
cm5hbGZvcm1hdDogIlJHQkExNkYiLCBmb3JtYXQ6ICJSR0JBIiwgZGVzdEZvcm1hdDogIlIxNkYi
LCB2YWxpZDogdHJ1ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgfSwKKyAgICAgICAgeyBpbnRlcm5hbGZv
cm1hdDogIlJHQkExNkYiLCBmb3JtYXQ6ICJSR0JBIiwgZGVzdEZvcm1hdDogIlJHMTZGIiwgdmFs
aWQ6IHRydWUsIHJlbmRlcmFibGU6IHRydWUsIH0sCisgICAgICAgIHsgaW50ZXJuYWxmb3JtYXQ6
ICJSR0JBMTZGIiwgZm9ybWF0OiAiUkdCQSIsIGRlc3RGb3JtYXQ6ICJSR0IxNkYiLCB2YWxpZDog
dHJ1ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgfSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlJH
QkExNkYiLCBmb3JtYXQ6ICJSR0JBIiwgZGVzdEZvcm1hdDogIlJHQkExNkYiLCB2YWxpZDogdHJ1
ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgfSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlJHQjE2
RiIsIGZvcm1hdDogIlJHQiIsIGRlc3RGb3JtYXQ6ICJSMTZGIiwgdmFsaWQ6IHRydWUsIHJlbmRl
cmFibGU6IGZhbHNlLCB9LAorICAgICAgICB7IGludGVybmFsZm9ybWF0OiAiUkdCMTZGIiwgZm9y
bWF0OiAiUkdCIiwgZGVzdEZvcm1hdDogIlJHMTZGIiwgdmFsaWQ6IHRydWUsIHJlbmRlcmFibGU6
IGZhbHNlLCB9LAorICAgICAgICB7IGludGVybmFsZm9ybWF0OiAiUkdCMTZGIiwgZm9ybWF0OiAi
UkdCIiwgZGVzdEZvcm1hdDogIlJHQjE2RiIsIHZhbGlkOiB0cnVlLCByZW5kZXJhYmxlOiBmYWxz
ZSwgfSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlJHQjE2RiIsIGZvcm1hdDogIlJHQiIs
IGRlc3RGb3JtYXQ6ICJSR0JBMTZGIiwgdmFsaWQ6IGZhbHNlLCByZW5kZXJhYmxlOiBmYWxzZSwg
fSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlJHMTZGIiwgZm9ybWF0OiAiUkciLCBkZXN0
Rm9ybWF0OiAiUjE2RiIsIHZhbGlkOiB0cnVlLCByZW5kZXJhYmxlOiB0cnVlLCB9LAorICAgICAg
ICB7IGludGVybmFsZm9ybWF0OiAiUkcxNkYiLCBmb3JtYXQ6ICJSRyIsIGRlc3RGb3JtYXQ6ICJS
RzE2RiIsIHZhbGlkOiB0cnVlLCByZW5kZXJhYmxlOiB0cnVlLCB9LAorICAgICAgICB7IGludGVy
bmFsZm9ybWF0OiAiUkcxNkYiLCBmb3JtYXQ6ICJSRyIsIGRlc3RGb3JtYXQ6ICJSR0IxNkYiLCB2
YWxpZDogZmFsc2UsIHJlbmRlcmFibGU6IHRydWUsIH0sCisgICAgICAgIHsgaW50ZXJuYWxmb3Jt
YXQ6ICJSRzE2RiIsIGZvcm1hdDogIlJHIiwgZGVzdEZvcm1hdDogIlJHQkExNkYiLCB2YWxpZDog
ZmFsc2UsIHJlbmRlcmFibGU6IHRydWUsIH0sCisgICAgICAgIHsgaW50ZXJuYWxmb3JtYXQ6ICJS
MTZGIiwgZm9ybWF0OiAiUkVEIiwgZGVzdEZvcm1hdDogIlIxNkYiLCB2YWxpZDogdHJ1ZSwgcmVu
ZGVyYWJsZTogdHJ1ZSwgfSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlIxNkYiLCBmb3Jt
YXQ6ICJSRUQiLCBkZXN0Rm9ybWF0OiAiUkcxNkYiLCB2YWxpZDogZmFsc2UsIHJlbmRlcmFibGU6
IHRydWUsIH0sCisgICAgICAgIHsgaW50ZXJuYWxmb3JtYXQ6ICJSMTZGIiwgZm9ybWF0OiAiUkVE
IiwgZGVzdEZvcm1hdDogIlJHQjE2RiIsIHZhbGlkOiBmYWxzZSwgcmVuZGVyYWJsZTogdHJ1ZSwg
fSwKKyAgICAgICAgeyBpbnRlcm5hbGZvcm1hdDogIlIxNkYiLCBmb3JtYXQ6ICJSRUQiLCBkZXN0
Rm9ybWF0OiAiUkdCQTE2RiIsIHZhbGlkOiBmYWxzZSwgcmVuZGVyYWJsZTogdHJ1ZSwgfSwKKyAg
ICBdOworICAgIGlmICh2ZXJzaW9uID09IDEpIHsKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAg
ICAgICB7IHZhbGlkOiAgdHJ1ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgZm9ybWF0OiAiUkdCQSIsICBk
ZXN0Rm9ybWF0OiAiTFVNSU5BTkNFIiwgfSwKKyAgICAgICAgICAgIHsgdmFsaWQ6ICB0cnVlLCBy
ZW5kZXJhYmxlOiB0cnVlLCBmb3JtYXQ6ICJSR0JBIiwgIGRlc3RGb3JtYXQ6ICJBTFBIQSIsIH0s
CisgICAgICAgICAgICB7IHZhbGlkOiAgdHJ1ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgZm9ybWF0OiAi
UkdCQSIsICBkZXN0Rm9ybWF0OiAiTFVNSU5BTkNFX0FMUEhBIiwgfSwKKyAgICAgICAgICAgIHsg
dmFsaWQ6ICB0cnVlLCByZW5kZXJhYmxlOiB0cnVlLCBmb3JtYXQ6ICJSR0JBIiwgIGRlc3RGb3Jt
YXQ6ICJSR0IiLCB9LAorICAgICAgICAgICAgeyB2YWxpZDogIHRydWUsIHJlbmRlcmFibGU6IHRy
dWUsIGZvcm1hdDogIlJHQkEiLCAgZGVzdEZvcm1hdDogIlJHQkEiLCB9LAorICAgICAgICAgICAg
eyB2YWxpZDogIHRydWUsIHJlbmRlcmFibGU6IHRydWUsIGZvcm1hdDogIlJHQiIsICAgZGVzdEZv
cm1hdDogIkxVTUlOQU5DRSIsIH0sCisgICAgICAgICAgICB7IHZhbGlkOiBmYWxzZSwgcmVuZGVy
YWJsZTogdHJ1ZSwgZm9ybWF0OiAiUkdCIiwgICBkZXN0Rm9ybWF0OiAiQUxQSEEiLCB9LAorICAg
ICAgICAgICAgeyB2YWxpZDogZmFsc2UsIHJlbmRlcmFibGU6IHRydWUsIGZvcm1hdDogIlJHQiIs
ICAgZGVzdEZvcm1hdDogIkxVTUlOQU5DRV9BTFBIQSIsIH0sCisgICAgICAgICAgICB7IHZhbGlk
OiAgdHJ1ZSwgcmVuZGVyYWJsZTogdHJ1ZSwgZm9ybWF0OiAiUkdCIiwgICBkZXN0Rm9ybWF0OiAi
UkdCIiwgfSwKKyAgICAgICAgICAgIHsgdmFsaWQ6IGZhbHNlLCByZW5kZXJhYmxlOiB0cnVlLCBm
b3JtYXQ6ICJSR0IiLCAgIGRlc3RGb3JtYXQ6ICJSR0JBIiwgfSwKKyAgICAgICAgICAgIHsgdmFs
aWQ6ICB0cnVlLCByZW5kZXJhYmxlOiBmYWxzZSwgZm9ybWF0OiAiQUxQSEEiLCBkZXN0Rm9ybWF0
OiAiQUxQSEEiLCB9LAorICAgICAgICAgICAgeyB2YWxpZDogIHRydWUsIHJlbmRlcmFibGU6IGZh
bHNlLCBmb3JtYXQ6ICJMVU1JTkFOQ0UiLCBkZXN0Rm9ybWF0OiAiTFVNSU5BTkNFIiwgfSwKKyAg
ICAgICAgICAgIHsgdmFsaWQ6ICB0cnVlLCByZW5kZXJhYmxlOiBmYWxzZSwgZm9ybWF0OiAiTFVN
SU5BTkNFX0FMUEhBIiwgZGVzdEZvcm1hdDogIkxVTUlOQU5DRV9BTFBIQSIsIH0sCisgICAgICAg
IF07CisgICAgfQorICAgIGNhc2VzLmZvckVhY2goZnVuY3Rpb24odGVzdGNhc2UpIHsKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZyhgVGVzdGluZyBDb3B5VGV4SW1hZ2UyRCBmb3Ig
Zm9ybWF0OiAke3Rlc3RjYXNlLmZvcm1hdH0sIGludGVybmFsZm9ybWF0OiAke3Rlc3RjYXNlLmlu
dGVybmFsZm9ybWF0fSwgZGVzdGZvcm1hdDogJHt0ZXN0Y2FzZS5kZXN0Rm9ybWF0fWApOworCisg
ICAgICAgIHZhciBmb3JtYXQgPSBnbFt0ZXN0Y2FzZS5mb3JtYXRdOworICAgICAgICB2YXIgaW50
ZXJuYWxmb3JtYXQgPSB2ZXJzaW9uID4gMSA/IGdsW3Rlc3RjYXNlLmludGVybmFsZm9ybWF0XSA6
IGZvcm1hdDsKKyAgICAgICAgdmFyIHR5cGUgPSB2ZXJzaW9uID4gMSA/IGdsLkhBTEZfRkxPQVQg
OiAweDhENjEgLyogSEFMRl9GTE9BVF9PRVMgKi87CisgICAgICAgIHZhciBkZXN0Rm9ybWF0ID0g
Z2xbdGVzdGNhc2UuZGVzdEZvcm1hdF07CisgICAgICAgIHZhciB0ZXhTcmMgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleFNyYyk7
CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICB2YXIgZGF0
YSA9IG5ldyBVaW50MTZBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgICAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmJvKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXhTcmMsIGxldmVsKTsKKyAgICAg
ICAgdmFyIHRleERlc3QgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleERlc3QpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlNldHVwIGZyYW1lYnVmZmVyIHdpdGggdGV4dHVyZSBzaG91bGQg
c3VjY2VlZC4iKTsKKyAgICAgICAgaWYgKGVuYWJsZWQgJiYgdGVzdGNhc2UucmVuZGVyYWJsZSkg
eworICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gMSAmJiBmb3JtYXQgPT0gZ2wuUkdCICYmIGds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpID09IGdsLkZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfQVRUQUNITUVOVCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlJH
QiBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IG5vdCBzdXBwb3J0ZWQuIFRoaXMgaXMgYWxsb3dlZC4i
KQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ2wuY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfQ09N
UExFVEUiKTsKKyAgICAgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCBsZXZlbCwgZGVzdEZvcm1hdCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgMCk7CisgICAgICAgICAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgdGVzdGNhc2UudmFsaWQgPyBnbC5OT19FUlJP
UiA6IFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgIkNvcHlUZXhJbWFn
ZTJEIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIik7CisgICAgICAgICAgICBnbC5jb3B5VGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCBsZXZlbCwgZGVzdEZvcm1hdCwgMCwgMCwgd2lkdGgsIGhl
aWdodCwgMCk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBbZ2wuSU5WQUxJ
RF9FTlVNLCBnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl0sICJDb3B5VGV4SW1hZ2Uy
RCBzaG91bGQgZmFpbC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUo
dGV4RGVzdCk7CisgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4U3JjKTsKKyAgICAgICAgZ2wu
ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKKyAgICB9KTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRVhUX2NvbG9yX2J1ZmZlcl9o
YWxmX2Zsb2F0IGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7
CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZh
cywgbnVsbCwgdmVyc2lvbik7CisKK2lmICh2ZXJzaW9uIDwgMikgeworICAgIC8vIFRoZXNlIGFy
ZSBleHBvc2VkIG9uIHRoZSBleHRlbnNpb24sIGJ1dCB3ZSBuZWVkIHRoZW0gYmVmb3JlIHRoZSBl
eHRlbnNpb24gaGFzIGJlZW4gcmVxdWVzdGVkIHNvIHdlIGNhbgorICAgIC8vIG1ha2Ugc3VyZSB0
aGV5IGRvbid0IHdvcmsuCisgICAgZ2wuUjE2RiA9IDB4ODIyRDsKKyAgICBnbC5SRzE2RiA9IDB4
ODIyRjsKKyAgICBnbC5SR0IxNkYgPSAweDg4MUI7CisgICAgZ2wuUkdCQTE2RiA9IDB4ODgxQTsK
K30KKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4
aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOwor
CisgIHZhciB0ZXh0dXJlZFNoYWRlcnMgPSBbCisgICAgICB3dHUuc2ltcGxlVGV4dHVyZVZlcnRl
eFNoYWRlciwKKyAgICAgICAgICAgYHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAg
ICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHN1YnRy
YWN0b3I7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CisgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZlYzQgY29sb3IgPSB0
ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7CisgICAgICAgICAgICAgICAgaWYgKGFicyhjb2xvci5y
IC0gc3VidHJhY3Rvci5yKSArCisgICAgICAgICAgICAgICAgICAgIGFicyhjb2xvci5nIC0gc3Vi
dHJhY3Rvci5nKSArCisgICAgICAgICAgICAgICAgICAgIGFicyhjb2xvci5iIC0gc3VidHJhY3Rv
ci5iKSArCisgICAgICAgICAgICAgICAgICAgIGFicyhjb2xvci5hIC0gc3VidHJhY3Rvci5hKSA8
IDE2LjApIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEu
MCwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9YCwKKyAgXTsKKyAgdmFyIHRlc3RQcm9ncmFtID0KKyAgICAg
IHd0dS5zZXR1cFByb2dyYW0oZ2wsCisgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVkU2hh
ZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQwJ10s
CisgICAgICAgICAgICAgICAgICAgICAgIFswLCAxXSk7CisgIHZhciBxdWFkUGFyYW1ldGVycyA9
IHd0dS5zZXR1cFVuaXRRdWFkKGdsLCAwLCAxKTsKKworICBpZiAodmVyc2lvbiA+IDEpIHsKKyAg
ICAvLyBFbnN1cmUgdGhlc2UgZm9ybWF0cyBjYW4ndCBiZSB1c2VkIGZvciByZW5kZXJpbmcgaWYg
dGhlIGV4dGVuc2lvbiBpcyBkaXNhYmxlZAorICAgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdl
dFRlc3QoZmFsc2UsICJnbC5SMTZGIiwgZ2wuUkVELCBnbC5GTE9BVCk7CisgICAgcnVuRmxvYXRU
ZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgImdsLlJHMTZGIiwgZ2wuUkcsIGdsLkZMT0FU
KTsKKyAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCAiZ2wuUkdCQTE2
RiIsIGdsLlJHQkEsIGdsLkZMT0FUKTsKKyAgfQorCisgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVu
ZGVyVGFyZ2V0VGVzdChmYWxzZSwgImdsLlIxNkYiKTsKKyAgcnVuRmxvYXRSZW5kZXJidWZmZXJS
ZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCAiZ2wuUkcxNkYiKTsKKyAgcnVuRmxvYXRSZW5kZXJidWZm
ZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCAiZ2wuUkdCQTE2RiIpOworICBydW5GbG9hdFJlbmRl
cmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsICJnbC5SMzJGIik7CisgIHJ1bkZsb2F0UmVu
ZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgImdsLlJHMzJGIik7CisgIHJ1bkZsb2F0
UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgImdsLlJHQkEzMkYiKTsKKyAgcnVu
RmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCAiZ2wuUjExRl9HMTFGX0Ix
MEYiKTsKKworICBpZiAodmVyc2lvbiA+IDEpIHsKKyAgICAgIHJ1bkNvcHlUZXhJbWFnZVRlc3Qo
ZmFsc2UpOworICAgICAgLy8gRW5zdXJlIFJHQjE2RiBjYW4ndCBiZSB1c2VkIGZvciByZW5kZXJp
bmcuCisgICAgICBydW5SR0IxNkZOZWdhdGl2ZVRlc3QoKTsKKyAgfQorCisgIGxldCBvZXNUZXh0
dXJlSGFsZkZsb2F0ID0gbnVsbDsKKyAgaWYgKHZlcnNpb24gPT0gMSkgeworICAgIC8vIG9lc1Rl
eHR1cmVIYWxmRmxvYXQgaW1wbGljaXRseSBlbmFibGVzIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9m
bG9hdCBpZiBzdXBwb3J0ZWQKKyAgICBvZXNUZXh0dXJlSGFsZkZsb2F0ID0gZ2wuZ2V0RXh0ZW5z
aW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7CisgICAgaWYgKG9lc1RleHR1cmVIYWxmRmxv
YXQgJiYgZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpLmluY2x1ZGVzKCJFWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQiKSkgeworICAgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRU
ZXN0KHRydWUsICJnbC5SR0JBIiwgZ2wuUkdCQSwgb2VzVGV4dHVyZUhhbGZGbG9hdC5IQUxGX0ZM
T0FUX09FUywgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAwXSwgMCk7Cisg
ICAgICAgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QodHJ1ZSwgImdsLlJHQiIsIGds
LlJHQiwgb2VzVGV4dHVyZUhhbGZGbG9hdC5IQUxGX0ZMT0FUX09FUywgdGVzdFByb2dyYW0sIDMs
IFsxMDAwLCAxMDAwLCAxMDAwLCAxXSwgMCk7CisgICAgfQorICB9CisKKyAgdmFyIGV4dCA9IG51
bGw7CisgIGlmICghKGV4dCA9IGdsLmdldEV4dGVuc2lvbigiRVhUX2NvbG9yX2J1ZmZlcl9oYWxm
X2Zsb2F0IikpKSB7CisgICAgICB0ZXN0UGFzc2VkKCJObyBFWFRfY29sb3JfYnVmZmVyX2hhbGZf
ZmxvYXQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAgICB0ZXN0
UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQg
ZXh0ZW5zaW9uIik7CisKKyAgICAgIHNob3VsZEJlKCJleHQuUkdCMTZGX0VYVCIsICJnbC5SR0Ix
NkYiKTsKKyAgICAgIHNob3VsZEJlKCJleHQuUkdCQTE2Rl9FWFQiLCAiZ2wuUkdCQTE2RiIpOwor
ICAgICAgc2hvdWxkQmUoImV4dC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBF
X0VYVCIsICIweDgyMTEiKTsKKyAgICAgIHNob3VsZEJlKCJleHQuVU5TSUdORURfTk9STUFMSVpF
RF9FWFQiLCAiMHg4QzE3Iik7CisKKyAgICAgIGlmICh2ZXJzaW9uID4gMSkgeworICAgICAgICAg
IHJ1bkludGVybmFsRm9ybWF0UXVlcnlUZXN0KCk7CisgICAgICAgICAgcnVuRmxvYXRUZXh0dXJl
UmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCAiZ2wuUjE2RiIsIGdsLlJFRCwgZ2wuRkxPQVQsIHRlc3RQ
cm9ncmFtLCAxLCBbMTAwMCwgMSwgMSwgMV0sIDApOworICAgICAgICAgIHJ1bkZsb2F0VGV4dHVy
ZVJlbmRlclRhcmdldFRlc3QodHJ1ZSwgImdsLlJHMTZGIiwgZ2wuUkcsIGdsLkZMT0FULCB0ZXN0
UHJvZ3JhbSwgMiwgWzEwMDAsIDEwMDAsIDEsIDFdLCAwKTsKKyAgICAgICAgICBydW5GbG9hdFRl
eHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRydWUsICJnbC5SR0JBMTZGIiwgZ2wuUkdCQSwgZ2wuRkxP
QVQsIHRlc3RQcm9ncmFtLCA0LCBbMTAwMCwgMTAwMCwgMTAwMCwgMTAwMF0sIDApOworICAgICAg
ICAgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCAiZ2wuUjE2RiIs
IHRlc3RQcm9ncmFtLCAxLCBbMTAwMCwgMSwgMSwgMV0pOworICAgICAgICAgIHJ1bkZsb2F0UmVu
ZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCAiZ2wuUkcxNkYiLCB0ZXN0UHJvZ3JhbSwg
MiwgWzEwMDAsIDEwMDAsIDEsIDFdKTsKKyAgICAgICAgICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJl
bmRlclRhcmdldFRlc3QodHJ1ZSwgImdsLlJHQkExNkYiLCB0ZXN0UHJvZ3JhbSwgNCwgWzEwMDAs
IDEwMDAsIDEwMDAsIDEwMDBdKTsKKyAgICAgIH0KKyAgICAgIGlmICh2ZXJzaW9uID09IDEpIHsK
KyAgICAgICAgICBzaG91bGRCZU5vbk51bGwob2VzVGV4dHVyZUhhbGZGbG9hdCk7IC8vIFJlcXVp
cmVkIGJ5IHNwZWMKKyAgICAgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KHRy
dWUsICJnbC5SR0JBIiwgZ2wuUkdCQSwgb2VzVGV4dHVyZUhhbGZGbG9hdC5IQUxGX0ZMT0FUX09F
UywgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAwXSwgMCk7CisgICAgICAg
ICAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCAiZ2wuUkdCIiwgZ2wuUkdC
LCBvZXNUZXh0dXJlSGFsZkZsb2F0LkhBTEZfRkxPQVRfT0VTLCB0ZXN0UHJvZ3JhbSwgMywgWzEw
MDAsIDEwMDAsIDEwMDAsIDFdLCAwKTsKKyAgICAgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJU
YXJnZXRUZXN0KGZhbHNlLCAiZ2wuTFVNSU5BTkNFX0FMUEhBIiwgZ2wuTFVNSU5BTkNFX0FMUEhB
LCBvZXNUZXh0dXJlSGFsZkZsb2F0LkhBTEZfRkxPQVRfT0VTLCB0ZXN0UHJvZ3JhbSwgMiwgWzEw
MDAsIDEwMDAsIDEwMDAsIDEwMDBdLCAwKTsKKyAgICAgICAgICBydW5GbG9hdFRleHR1cmVSZW5k
ZXJUYXJnZXRUZXN0KGZhbHNlLCAiZ2wuTFVNSU5BTkNFIiwgZ2wuTFVNSU5BTkNFLCBvZXNUZXh0
dXJlSGFsZkZsb2F0LkhBTEZfRkxPQVRfT0VTLCB0ZXN0UHJvZ3JhbSwgMSwgWzEwMDAsIDEsIDEs
IDFdLCAwKTsKKyAgICAgIH0KKworICAgICAgaWYgKHZlcnNpb24gPiAxKQorICAgICAgICAgIHJ1
blJHQjE2Rk5lZ2F0aXZlVGVzdCgpOyAvLyBFbnN1cmUgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IGRvZXMgbm90IGVuYWJsZSBSR0IxNkYgYXMgY29sb3IgcmVuZGVyYWJsZS4KKworICAgICAg
cnVuQ29weVRleEltYWdlVGVzdCh0cnVlKTsKKworICAgICAgcnVuVW5pcXVlT2JqZWN0VGVzdCgp
OworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
anMvdGVzdHMvZXh0LXRleHR1cmUtZmlsdGVyLWFuaXNvdHJvcGljLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZXh0LXRleHR1cmUtZmls
dGVyLWFuaXNvdHJvcGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3OTNlNGMzNjRhZDRlYjMzMDNiN2Y0Y2Ey
MmUxMjNkMmFmNDY0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290
cm9waWMuanMKQEAgLTAsMCArMSwxNjYgQEAKKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEVYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVi
dWcoIiIpOworCitsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitsZXQgY2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChjYW52YXMsIHVuZGVmaW5lZCwgY29udGV4dFZlcnNpb24pOworbGV0IGV4dCA9IG51bGw7CisK
K2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisK
KyAgICAvLyBSdW4gdGVzdHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQKKyAgICBydW5IaW50VGVz
dERpc2FibGVkKCk7CisgICAgaWYgKGNvbnRleHRWZXJzaW9uID49IDIpIHsKKyAgICAgICAgcnVu
U2FtcGxlclRlc3REaXNhYmxlZCgpOworICAgIH0KKworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNp
b24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQg
PSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiKTsKKworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVn
YWwiKTsKKworICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KGZhbHNlKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0
cnVlKTsKKyAgICAgICAgcnVuSGludFRlc3RFbmFibGVkKCk7CisgICAgICAgIGlmIChjb250ZXh0
VmVyc2lvbiA+PSAyKSB7CisgICAgICAgICAgICBydW5TYW1wbGVyVGVzdEVuYWJsZWQoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChleHRlbnNpb25F
bmFibGVkKSB7CisgICAgaWYgKHd0dS5nZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVm
aXhlcyhnbCwgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpICE9PSB1bmRlZmluZWQp
IHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFu
ZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgbGlzdGVkIGFzIHN1
cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3QgbGlzdGVkIGFzIHN1cHBvcnRl
ZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBsaXN0
ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwi
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSGludFRlc3REaXNhYmxlZCgp
IHsKKyAgICBkZWJ1ZygiVGVzdGluZyBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgd2l0
aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKworICAgIGNvbnN0IE1BWF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCA9IDB4ODRGRjsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoTUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X0VOVU0sICJNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2hvdWxkIG5vdCBiZSBxdWVy
eWFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAg
IGNvbnN0IFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZFOworICAgIGxldCB0ZXh0
dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleHR1cmUpOworCisgICAgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIFRF
WFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX0VOVU0sICJURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBzaG91bGQgbm90IGJl
IHF1ZXJ5YWJsZSBpZiBleHRlbnNpb24gaXMgZGlzYWJsZWQiKTsKKworICAgIGdsLnRleFBhcmFt
ZXRlcmYoZ2wuVEVYVFVSRV8yRCwgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsIDEpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIlRFWFRVUkVfTUFYX0FO
SVNPVFJPUFlfRVhUIHNob3VsZCBub3QgYmUgc2V0dGFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2Fi
bGVkIik7CisKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIFRFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhULCAxKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX0VOVU0sICJURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBzaG91bGQgbm90IGJlIHNldHRh
YmxlIGlmIGV4dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKK30KKworZnVuY3Rpb24gcnVuSGludFRlc3RFbmFibGVkKCkgeworICAgIGRlYnVn
KCJUZXN0aW5nIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCB3aXRoIGV4dGVuc2lvbiBl
bmFibGVkIik7CisKKyAgICBzaG91bGRCZSgiZXh0Lk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVCIsICIweDg0RkYiKTsKKworICAgIGxldCBtYXhfYW5pc290cm9weSA9IGdsLmdldFBhcmFt
ZXRlcihleHQuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCBxdWVyeSBzaG91bGQgc3VjY2VlZCBpZiBleHRlbnNpb24gaXMgZW5hYmxlZCIpOworCisgICAg
aWYgKG1heF9hbmlzb3Ryb3B5ID49IDIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTWluaW11bSB2
YWx1ZSBvZiBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgaXMgMi4wIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWluaW11bSB2YWx1ZSBvZiBNQVhfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQgaXMgMi4wLCByZXR1cm5lZCB2YWx1ZXMgd2FzOiAiICsgbWF4X2Fu
aXNvdHJvcHkpOworICAgIH0KKworICAgIC8vIFRPRE8gbWFrZSBhIHRleHR1cmUgYW5kIHZlcmlm
eSBpbml0aWFsIHZhbHVlID09IDEgYW5kIHNldHRpbmcgdG8gbGVzcyB0aGFuIDEgaXMgaW52YWxp
ZCB2YWx1ZQorCisgICAgZGVidWcoIlRlc3RpbmcgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQg
d2l0aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKyAgICBzaG91bGRCZSgiZXh0LlRFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUIiwgIjB4ODRGRSIpOworCisgICAgbGV0IHRleHR1cmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7
CisKKyAgICBsZXQgcXVlcmllZF92YWx1ZSA9IGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJF
XzJELCBleHQuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgcXVlcnkg
c2hvdWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZWQiKTsKKworICAgIGlmIChxdWVy
aWVkX3ZhbHVlID09IDEpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiSW5pdGlhbCB2YWx1ZSBvZiBU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBpcyAxLjAiKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJJbml0aWFsIHZhbHVlIG9mIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhU
IHNob3VsZCBiZSAxLjAsIHJldHVybmVkIHZhbHVlIHdhczogIiArIHF1ZXJpZWRfdmFsdWUpOwor
ICAgIH0KKworICAgIGdsLnRleFBhcmFtZXRlcmYoZ2wuVEVYVFVSRV8yRCwgZXh0LlRFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhULCAwKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX1ZBTFVFLCAidGV4UGFyYW1ldGVyZiBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBz
ZXQgdG8gPCAxIHNob3VsZCBiZSBhbiBpbnZhbGlkIHZhbHVlIik7CisKKyAgICBnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGV4dC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCwgMCk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgInRleFBhcmFt
ZXRlcmkgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2V0IHRvIDwgMSBzaG91bGQgYmUgYW4g
aW52YWxpZCB2YWx1ZSIpOworCisgICAgZ2wudGV4UGFyYW1ldGVyZihnbC5URVhUVVJFXzJELCBl
eHQuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsIG1heF9hbmlzb3Ryb3B5KTsKKyAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleFBhcmFtZXRlcmYgVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQgc2V0IHRvID49IDIgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZXh0LlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlf
RVhULCBtYXhfYW5pc290cm9weSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0ZXhQYXJhbWV0ZXJpIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHNldCB0byA+
PSAyIHNob3VsZCBzdWNjZWVkIik7CisKKyAgICBxdWVyaWVkX3ZhbHVlID0gZ2wuZ2V0VGV4UGFy
YW1ldGVyKGdsLlRFWFRVUkVfMkQsIGV4dC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCk7Cisg
ICAgaWYgKHF1ZXJpZWRfdmFsdWUgPT0gbWF4X2FuaXNvdHJvcHkpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiU2V0IHZhbHVlIG9mIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIG1hdGNoZXMgZXhw
ZWNhdGlvbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldCB2YWx1ZSBv
ZiBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBzaG91bGQgYmU6ICIgKyBtYXhfYW5pc290cm9w
eSArICIgLCByZXR1cm5lZCB2YWx1ZSB3YXM6ICIgKyBxdWVyaWVkX3ZhbHVlKTsKKyAgICB9CisK
KyAgICBnbC50ZXhQYXJhbWV0ZXJmKGdsLlRFWFRVUkVfMkQsIGV4dC5URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCwgMS41KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInRleFBhcmFtZXRlcmYgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2V0IHRvIDEuNSBz
aG91bGQgc3VjY2VlZCIpOworCisgICAgcXVlcmllZF92YWx1ZSA9IGdsLmdldFRleFBhcmFtZXRl
cihnbC5URVhUVVJFXzJELCBleHQuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAgIGlm
IChxdWVyaWVkX3ZhbHVlID09IDEuNSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJTZXQgdmFsdWUg
b2YgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgbWF0Y2hlcyBleHBlY2F0aW9uIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2V0IHZhbHVlIG9mIFRFWFRVUkVfTUFYX0FO
SVNPVFJPUFlfRVhUIHNob3VsZCBiZTogIiArIDEuNSArICIgLCByZXR1cm5lZCB2YWx1ZSB3YXM6
ICIgKyBxdWVyaWVkX3ZhbHVlKTsKKyAgICB9CisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1
cmUpOworfQorCitmdW5jdGlvbiBydW5TYW1wbGVyVGVzdERpc2FibGVkKCkgeworICAgIGxldCBz
YW1wbGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworICAgIGNvbnN0IFRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUID0gMHg4NEZFOworICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIFRF
WFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULCAxLjApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfRU5VTSwgInNldHRpbmcgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQg
b24gc2FtcGxlciB3aXRob3V0IGV4dGVuc2lvbiBlbmFibGVkIHNob3VsZCBmYWlsIik7CisgICAg
Z2wuZGVsZXRlU2FtcGxlcihzYW1wbGVyKTsKK30KKworZnVuY3Rpb24gcnVuU2FtcGxlclRlc3RF
bmFibGVkKCkgeworICAgIGxldCBzYW1wbGVyID0gZ2wuY3JlYXRlU2FtcGxlcigpOworICAgIGds
LnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIGV4dC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCwgMS41KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNldHRp
bmcgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgb24gc2FtcGxlciBzaG91bGQgc3VjY2VlZCIp
OworICAgIGxldCBxdWVyaWVkX3ZhbHVlID0gZ2wuZ2V0U2FtcGxlclBhcmFtZXRlcihzYW1wbGVy
LCBleHQuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAicXVlcnlpbmcgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQg
b24gc2FtcGxlciBzaG91bGQgc3VjY2VlZCIpOworICAgIGlmIChxdWVyaWVkX3ZhbHVlID09IDEu
NSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJTZXQgdmFsdWUgb2YgVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQgb24gc2FtcGxlciBtYXRjaGVzIGV4cGVjYXRpb24iKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKCJTZXQgdmFsdWUgb2YgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9F
WFQgb24gc2FtcGxlciBzaG91bGQgYmU6ICIgKyAxLjUgKyAiICwgcmV0dXJuZWQgdmFsdWUgd2Fz
OiAiICsgcXVlcmllZF92YWx1ZSk7CisgICAgfQorICAgIGdsLmRlbGV0ZVNhbXBsZXIoc2FtcGxl
cik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMv
dGVzdHMvZ2wtYmluZGF0dHJpYmxvY2F0aW9uLWFsaWFzaW5nLmpzIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZ2wtYmluZGF0dHJpYmxvY2F0
aW9uLWFsaWFzaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjODUzZmM0ZmFlZTRkMjUzOGNjMjBkMTgxYThj
MzkzMTRkNmNmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9nbC1iaW5kYXR0cmlibG9jYXRpb24tYWxpYXNp
bmcuanMKQEAgLTAsMCArMSw0NCBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisidXNlIHN0cmljdCI7CisKK3ZhciBydW5CaW5kQXR0cmliTG9jYXRpb25BbGlh
c2luZ1Rlc3QgPSBmdW5jdGlvbih3dHUsIGdsLCBnbEZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFk
ZXJUZW1wbGF0ZSkgeworICAgIHZhciB0eXBlSW5mbyA9IFsKKyAgICAgICAgeyB0eXBlOiAnZmxv
YXQnLCAgICBhc1ZlYzQ6ICd2ZWM0KDAuMCwgJCh2YXIpLCAwLjAsIDEuMCknIH0sCisgICAgICAg
IHsgdHlwZTogJ3ZlYzInLCAgICAgYXNWZWM0OiAndmVjNCgkKHZhciksIDAuMCwgMS4wKScgfSwK
KyAgICAgICAgeyB0eXBlOiAndmVjMycsICAgICBhc1ZlYzQ6ICd2ZWM0KCQodmFyKSwgMS4wKScg
fSwKKyAgICAgICAgeyB0eXBlOiAndmVjNCcsICAgICBhc1ZlYzQ6ICckKHZhciknIH0sCisgICAg
XTsKKyAgICB2YXIgbWF4QXR0cmlidXRlcyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfVkVSVEVY
X0FUVFJJQlMpOworICAgIC8vIFRlc3QgYWxsIHR5cGUgY29tYmluYXRpb25zIG9mIGFfMSBhbmQg
YV8yLgorICAgIHR5cGVJbmZvLmZvckVhY2goZnVuY3Rpb24odHlwZUluZm8xKSB7CisgICAgICAg
IHR5cGVJbmZvLmZvckVhY2goZnVuY3Rpb24odHlwZUluZm8yKSB7CisgICAgICAgICAgICBkZWJ1
ZygnYXR0cmlidXRlXzE6ICcgKyB0eXBlSW5mbzEudHlwZSArICcgYXR0cmlidXRlXzI6ICcgKyB0
eXBlSW5mbzIudHlwZSk7CisgICAgICAgICAgICB2YXIgcmVwbGFjZVBhcmFtcyA9IHsKKyAgICAg
ICAgICAgICAgICB0eXBlXzE6IHR5cGVJbmZvMS50eXBlLAorICAgICAgICAgICAgICAgIHR5cGVf
MjogdHlwZUluZm8yLnR5cGUsCisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb25fMTogd3R1LnJl
cGxhY2VQYXJhbXModHlwZUluZm8xLmFzVmVjNCwge3ZhcjogJ2FfMSd9KSwKKyAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbl8yOiB3dHUucmVwbGFjZVBhcmFtcyh0eXBlSW5mbzIuYXNWZWM0LCB7
dmFyOiAnYV8yJ30pCisgICAgICAgICAgICB9OworICAgICAgICAgICAgdmFyIHN0clZlcnRleFNo
YWRlciA9IHd0dS5yZXBsYWNlUGFyYW1zKHZlcnRleFNoYWRlclRlbXBsYXRlLCByZXBsYWNlUGFy
YW1zKTsKKyAgICAgICAgICAgIHZhciBnbFZlcnRleFNoYWRlciA9IHd0dS5sb2FkU2hhZGVyKGds
LCBzdHJWZXJ0ZXhTaGFkZXIsIGdsLlZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAgYXNzZXJ0
TXNnKGdsVmVydGV4U2hhZGVyICE9IG51bGwsICJWZXJ0ZXggc2hhZGVyIGNvbXBpbGVkIHN1Y2Nl
c3NmdWxseS4iKTsKKyAgICAgICAgICAgIC8vIEJpbmQgYm90aCBhXzEgYW5kIGFfMiB0byB0aGUg
c2FtZSBwb3NpdGlvbiBhbmQgdmVyaWZ5IHRoZSBsaW5rIGZhaWxzLgorICAgICAgICAgICAgLy8g
RG8gc28gZm9yIGFsbCB2YWxpZCBwb3NpdGlvbnMgYXZhaWxhYmxlLgorICAgICAgICAgICAgZm9y
ICh2YXIgbCA9IDA7IGwgPCBtYXhBdHRyaWJ1dGVzOyBsKyspIHsKKyAgICAgICAgICAgICAgICB2
YXIgZ2xQcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICAgICAgICAgIGdsLmJp
bmRBdHRyaWJMb2NhdGlvbihnbFByb2dyYW0sIGwsICdhXzEnKTsKKyAgICAgICAgICAgICAgICBn
bC5iaW5kQXR0cmliTG9jYXRpb24oZ2xQcm9ncmFtLCBsLCAnYV8yJyk7CisgICAgICAgICAgICAg
ICAgZ2wuYXR0YWNoU2hhZGVyKGdsUHJvZ3JhbSwgZ2xWZXJ0ZXhTaGFkZXIpOworICAgICAgICAg
ICAgICAgIGdsLmF0dGFjaFNoYWRlcihnbFByb2dyYW0sIGdsRnJhZ21lbnRTaGFkZXIpOworICAg
ICAgICAgICAgICAgIGdsLmxpbmtQcm9ncmFtKGdsUHJvZ3JhbSk7CisgICAgICAgICAgICAgICAg
dmFyIGxpbmtTdGF0dXMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGdsUHJvZ3JhbSwgZ2wuTElO
S19TVEFUVVMpOworICAgICAgICAgICAgICAgIGFzc2VydE1zZyghbGlua1N0YXR1cywgIkxpbmsg
c2hvdWxkIGZhaWwgd2hlbiBib3RoIGF0dHJpYnV0ZXMgYXJlIGFsaWFzZWQgdG8gbG9jYXRpb24g
IiArIGwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKK307ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZ2wtZW51bS10ZXN0cy5qcyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2dsLWVudW0tdGVz
dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzJkNDUxZjdhMmNjZjkxMTMxZTI0ODE2NTM0ODIxZGRiNDJmOWM1
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2pzL3Rlc3RzL2dsLWVudW0tdGVzdHMuanMKQEAgLTAsMCArMSwxMjMgQEAKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gVGhpcyB0ZXN0IHJl
bGllcyBvbiB0aGUgc3Vycm91bmRpbmcgd2ViIHBhZ2UgZGVmaW5pbmcgYSB2YXJpYWJsZQorLy8g
ImNvbnRleHRWZXJzaW9uIiB3aGljaCBpbmRpY2F0ZXMgd2hhdCB2ZXJzaW9uIG9mIFdlYkdMIGl0
J3MgcnVubmluZworLy8gb24gLS0gMSBmb3IgV2ViR0wgMS4wLCAyIGZvciBXZWJHTCAyLjAsIGV0
Yy4KKworInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHZhcmlv
dXMgV2ViR0wgZnVuY3Rpb25zIGZhaWwgd2hlbiBwYXNzZWQgaW52YWxpZCBPcGVuR0wgRVMgZW51
bXMuIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52
YXMiLCB1bmRlZmluZWQsIGNvbnRleHRWZXJzaW9uKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxl
ZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29u
dGV4dCBleGlzdHMiKTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBnbCBlbnVt
cy4iKTsKKworICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDIpOworICB2YXIgYnVmID0g
bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7CisgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgIHZhciBwcm9ncmFtID0gd3R1LmNyZWF0ZVByb2dyYW0oZ2wsIHd0dS5sb2FkU3RhbmRhcmRW
ZXJ0ZXhTaGFkZXIoZ2wpLCB3dHUubG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIoZ2wpKTsKKyAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGdsLmNyZWF0ZUJ1ZmZlcigpKTsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgIHZhciB0ZXN0cyA9IFsKKyAg
ICAiZ2wuZGlzYWJsZShkZXNrdG9wR0xbJ0NMSVBfUExBTkUwJ10pIiwKKyAgICAiZ2wuZGlzYWJs
ZShkZXNrdG9wR0xbJ1BPSU5UX1NQUklURSddKSIsCisgICAgImdsLmdldEJ1ZmZlclBhcmFtZXRl
cihnbC5BUlJBWV9CVUZGRVIsIGRlc2t0b3BHTFsnUElYRUxfUEFDS19CVUZGRVInXSkiLAorICAg
ICJnbC5oaW50KGRlc2t0b3BHTFsnUEVSU1BFQ1RJVkVfQ09SUkVDVElPTl9ISU5UJ10sIGdsLkZB
U1RFU1QpIiwKKyAgICAiZ2wuaXNFbmFibGVkKGRlc2t0b3BHTFsnQ0xJUF9QTEFORTAnXSkiLAor
ICAgICJnbC5pc0VuYWJsZWQoZGVza3RvcEdMWydQT0lOVF9TUFJJVEUnXSkiLAorICAgICJnbC5w
aXhlbFN0b3JlaShkZXNrdG9wR0xbJ1BBQ0tfU1dBUF9CWVRFUyddLCAxKSIsCisgICAgImdsLmdl
dFBhcmFtZXRlcihkZXNrdG9wR0xbJ05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyddKSIs
CisgICAgImdsLmdldFBhcmFtZXRlcihkZXNrdG9wR0xbJ0VYVEVOU0lPTlMnXSkiLAorICAgICJn
bC5nZXRQYXJhbWV0ZXIoZGVza3RvcEdMWydTSEFERVJfQ09NUElMRVInXSkiLAorICAgICJnbC5n
ZXRQYXJhbWV0ZXIoZGVza3RvcEdMWydTSEFERVJfQklOQVJZX0ZPUk1BVFMnXSkiLAorICAgICJn
bC5nZXRQYXJhbWV0ZXIoZGVza3RvcEdMWydOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTJ10pIiwK
KyAgXTsKKworICBpZiAoY29udGV4dFZlcnNpb24gPCAyKSB7CisgICAgdGVzdHMgPSB0ZXN0cy5j
b25jYXQoWworICAgICAgImdsLmJsZW5kRXF1YXRpb24oZGVza3RvcEdMWydNSU4nXSkiLAorICAg
ICAgImdsLmJsZW5kRXF1YXRpb24oZGVza3RvcEdMWydNQVgnXSkiLAorICAgICAgImdsLmJsZW5k
RXF1YXRpb25TZXBhcmF0ZShkZXNrdG9wR0xbJ01JTiddLCBnbC5GVU5DX0FERCkiLAorICAgICAg
ImdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShkZXNrdG9wR0xbJ01BWCddLCBnbC5GVU5DX0FERCki
LAorICAgICAgImdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShnbC5GVU5DX0FERCwgZGVza3RvcEdM
WydNSU4nXSkiLAorICAgICAgImdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShnbC5GVU5DX0FERCwg
ZGVza3RvcEdMWydNQVgnXSkiLAorICAgICAgImdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCAxNiwgZGVza3RvcEdMWydTVFJFQU1fUkVBRCddKSIsCisgICAgICAiZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIDE2LCBkZXNrdG9wR0xbJ1NUUkVBTV9DT1BZJ10pIiwKKyAgICAgICJn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIGRlc2t0b3BHTFsnU1RBVElDX1JFQUQn
XSkiLAorICAgICAgImdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxNiwgZGVza3RvcEdM
WydTVEFUSUNfQ09QWSddKSIsCisgICAgICAiZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IDE2LCBkZXNrdG9wR0xbJ0RZTkFNSUNfUkVBRCddKSIsCisgICAgICAiZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIDE2LCBkZXNrdG9wR0xbJ0RZTkFNSUNfQ09QWSddKSIsCisgICAgICAi
Z2wuYmluZFRleHR1cmUoZGVza3RvcEdMWydURVhUVVJFXzJEX0FSUkFZJ10sIHRleCkiLAorICAg
ICAgImdsLmJpbmRUZXh0dXJlKGRlc2t0b3BHTFsnVEVYVFVSRV8zRCddLCB0ZXgpIiwKKyAgICBd
KTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0cyA9IHRlc3RzLmNvbmNhdChbCisgICAgICAiZ2wuYmlu
ZFRleHR1cmUoZGVza3RvcEdMWydURVhUVVJFX1JFQ1RBTkdMRV9FWFQnXSwgdGV4KSIsCisgICAg
ICAiZ2wuZW5hYmxlKGRlc2t0b3BHTFsnUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgnXSki
LAorICAgICAgImdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIFswXSwgZGVza3RvcEdMWydV
TklGT1JNX05BTUVfTEVOR1RIJ10pIiwKKyAgICAgICJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIGRlc2t0b3BHTFsnQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIJ10p
IiwKKyAgICAgICJnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGRlc2t0b3BHTFsnVFJB
TlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSCddKSIsCisgICAgICAiZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihwcm9ncmFtLCBkZXNrdG9wR0xbJ1BST0dSQU1fQklOQVJZX1JFVFJJRVZB
QkxFX0hJTlQnXSkiLAorICAgICAgImdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZGVz
a3RvcEdMWydQUk9HUkFNX0JJTkFSWV9MRU5HVEgnXSkiLAorICAgICAgImdsLmdldFBhcmFtZXRl
cihwcm9ncmFtLCBkZXNrdG9wR0xbJ05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTJ10pIiwKKyAg
ICBdKTsKKyAgfQorCisgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkp
IHsKKyAgICBUZXN0RXZhbCh0ZXN0c1tpaV0pOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfRU5VTSwgdGVzdHNbaWldICsgIiBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5V
TS4iKTsKKyAgfQorCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICB0ZXN0cyA9IFsKKyAgICAi
Z2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGRlc2t0b3BHTFsnR0VORVJBVEVfTUlQ
TUFQJ10pIiwKKyAgICAiZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBkZXNrdG9wR0xb
J0dFTkVSQVRFX01JUE1BUCddLCAxKSIsCisgICAgImdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGRlc2t0b3BHTFsnQ0xBTVBfVE9fQk9SREVSJ10pIiwK
KyAgXTsKKworICBpZiAoY29udGV4dFZlcnNpb24gPCAyKSB7CisgICAgdGVzdHMgPSB0ZXN0cy5j
b25jYXQoWworICAgICAgImdsLnRleFBhcmFtZXRlcmkoZGVza3RvcEdMWydURVhUVVJFXzJEX0FS
UkFZJ10sIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCkiLAorICAgICAgImdsLnRl
eFBhcmFtZXRlcmkoZGVza3RvcEdMWydURVhUVVJFXzNEJ10sIGdsLlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZ2wuTkVBUkVTVCkiLAorICAgIF0pOworICB9IGVsc2UgeworICAgIHRlc3RzID0gdGVzdHMu
Y29uY2F0KFsKKyAgICAgICJnbC50ZXhQYXJhbWV0ZXJpKGRlc2t0b3BHTFsnVEVYVFVSRV8yRCdd
LCBkZXNrdG9wR0xbJ1RFWFRVUkVfU1dJWlpMRV9SX0VYVCddLCBnbC5SRUQpIiwKKyAgICAgICJn
bC50ZXhQYXJhbWV0ZXJpKGRlc2t0b3BHTFsnVEVYVFVSRV8yRCddLCBkZXNrdG9wR0xbJ1RFWFRV
UkVfU1dJWlpMRV9HX0VYVCddLCBnbC5SRUQpIiwKKyAgICAgICJnbC50ZXhQYXJhbWV0ZXJpKGRl
c2t0b3BHTFsnVEVYVFVSRV8yRCddLCBkZXNrdG9wR0xbJ1RFWFRVUkVfU1dJWlpMRV9CX0VYVCdd
LCBnbC5SRUQpIiwKKyAgICAgICJnbC50ZXhQYXJhbWV0ZXJpKGRlc2t0b3BHTFsnVEVYVFVSRV8y
RCddLCBkZXNrdG9wR0xbJ1RFWFRVUkVfU1dJWlpMRV9BX0VYVCddLCBnbC5SRUQpIiwKKyAgICAg
ICJnbC50ZXhQYXJhbWV0ZXJpKGRlc2t0b3BHTFsnVEVYVFVSRV8yRCddLCBnbC5URVhUVVJFX1dS
QVBfUiwgZGVza3RvcEdMWydDTEFNUF9UT19CT1JERVInXSkiLAorICAgIF0pOworICB9CisKKyAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0aDsgKytpaSkgeworICAgIFRlc3RFdmFs
KHRlc3RzW2lpXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVN
LCB0ZXN0c1tpaV0gKyAiIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVNLiIpOworICB9CisgIGlm
IChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgdmFyIHVuaWZvcm1CbG9ja1Byb2dyYW0gPSB3
dHUubG9hZFVuaWZvcm1CbG9ja1Byb2dyYW0oZ2wpOworICAgIGdsLmxpbmtQcm9ncmFtKHVuaWZv
cm1CbG9ja1Byb2dyYW0pOworICAgIHNob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVu
aWZvcm1CbG9ja1Byb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ2dsLmdldEVycm9yKCknLCAnZ2wuTk9fRVJST1InKTsKKyAgICBnbC5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tQYXJhbWV0ZXIodW5pZm9ybUJsb2NrUHJvZ3JhbSwgMCwgZGVza3RvcEdMWydVTklG
T1JNX0JMT0NLX05BTUVfTEVOR1RIJ10pOworICAgIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywg
J2dsLklOVkFMSURfRU5VTScpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZ2wtZ2V0LXRleC1wYXJhbWV0ZXIuanMgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9nbC1nZXQt
dGV4LXBhcmFtZXRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODQ0YmJmNTQ0MDkxODE4MWQ1MTkwNzRkZGI4
YjQ5YTI4YTI0OThkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZ2wtZ2V0LXRleC1wYXJhbWV0ZXIuanMKQEAg
LTAsMCArMSwxODMgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworLy8gVGhpcyB0ZXN0IHJlbGllcyBvbiB0aGUgc3Vycm91bmRpbmcgd2ViIHBhZ2UgZGVmaW5p
bmcgYSB2YXJpYWJsZQorLy8gImNvbnRleHRWZXJzaW9uIiB3aGljaCBpbmRpY2F0ZXMgd2hhdCB2
ZXJzaW9uIG9mIFdlYkdMIGl0J3MgcnVubmluZworLy8gb24gLS0gMSBmb3IgV2ViR0wgMS4wLCAy
IGZvciBXZWJHTCAyLjAsIGV0Yy4KKworInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oKTsKK3Zh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiLCB1bmRlZmluZWQsIGNvbnRleHRWZXJzaW9uKTsKKworLy8gTk9URTogV2UgZXhwbGlj
aXRseSBkbyB0aGlzIGluIGEgZnVua3kgb3JkZXIKKy8vIHRvIGhvcGVmdWxseSBmaW5kIHN1YnRs
ZSBidWdzLgorCit2YXIgdGFyZ2V0cyA9IFsKKyAgJ1RFWFRVUkVfMkQnLAorICAnVEVYVFVSRV8y
RCcsCisgICdURVhUVVJFX0NVQkVfTUFQJywKKyAgJ1RFWFRVUkVfQ1VCRV9NQVAnCitdOworCitp
ZiAoY29udGV4dFZlcnNpb24gPiAxKSB7CisgIHRhcmdldHMgPSB0YXJnZXRzLmNvbmNhdChbCisg
ICAgJ1RFWFRVUkVfMkRfQVJSQVknLAorICAgICdURVhUVVJFXzJEX0FSUkFZJywKKyAgICAnVEVY
VFVSRV8zRCcsCisgICAgJ1RFWFRVUkVfM0QnCisgIF0pOworfQorCisvLyBDcmVhdGUgdGV4dHVy
ZXMgb24gZGlmZmVyZW50IGFjdGl2ZSB0ZXh0dXJlcy4KK2ZvciAodmFyIGlpID0gMDsgaWkgPCB0
YXJnZXRzLmxlbmd0aDsgKytpaSkgeworICB2YXIgdGFyZ2V0ID0gdGFyZ2V0c1tpaV07CisgIHZh
ciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVS
RTAgKyBpaSk7CisgIGdsLmJpbmRUZXh0dXJlKGdsW3RhcmdldF0sIHRleCk7Cit9CisKK3d0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOwor
Cit2YXIgc3RhdGVzID0gWworICB7IHN0YXRlOiAnVEVYVFVSRV9XUkFQX1MnLCAgICAgICAgICAg
IGRlZmF1bHQ6ICdSRVBFQVQnLCAgICAgICAgICAgICAgICAgdmFsdWUxOiAnQ0xBTVBfVE9fRURH
RScsICAgICAgICAgICB2YWx1ZTI6ICdSRVBFQVQnICAgICAgICAgIH0sCisgIHsgc3RhdGU6ICdU
RVhUVVJFX1dSQVBfVCcsICAgICAgICAgICAgZGVmYXVsdDogJ1JFUEVBVCcsICAgICAgICAgICAg
ICAgICB2YWx1ZTE6ICdNSVJST1JFRF9SRVBFQVQnLCAgICAgICAgIHZhbHVlMjogJ1JFUEVBVCcg
ICAgICAgICAgfSwKKyAgeyBzdGF0ZTogJ1RFWFRVUkVfTUFHX0ZJTFRFUicsICAgICAgICBkZWZh
dWx0OiAnTElORUFSJywgICAgICAgICAgICAgICAgIHZhbHVlMTogJ05FQVJFU1QnLCAgICAgICAg
ICAgICAgICAgdmFsdWUyOiAnTElORUFSJyAgICAgICAgICB9LAorICB7IHN0YXRlOiAnVEVYVFVS
RV9NSU5fRklMVEVSJywgICAgICAgIGRlZmF1bHQ6ICdORUFSRVNUX01JUE1BUF9MSU5FQVInLCAg
dmFsdWUxOiAnTElORUFSX01JUE1BUF9MSU5FQVInLCAgICB2YWx1ZTI6ICdORUFSRVNUJyAgICAg
ICAgIH0KK107CisKK2lmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgc3RhdGVzID0gc3RhdGVz
LmNvbmNhdChbCisgICAgeyBzdGF0ZTogJ1RFWFRVUkVfV1JBUF9SJywgICAgICAgICAgICBkZWZh
dWx0OiAnUkVQRUFUJywgICAgICAgICAgICAgICAgIHZhbHVlMTogJ0NMQU1QX1RPX0VER0UnLCAg
ICAgICAgICAgdmFsdWUyOiAnTUlSUk9SRURfUkVQRUFUJyB9LAorICAgIHsgc3RhdGU6ICdURVhU
VVJFX0NPTVBBUkVfRlVOQycsICAgICAgZGVmYXVsdDogJ0xFUVVBTCcsICAgICAgICAgICAgICAg
ICB2YWx1ZTE6ICdHUkVBVEVSJywgICAgICAgICAgICAgICAgIHZhbHVlMjogJ0xFU1MnICAgICAg
ICAgICAgfSwKKyAgICB7IHN0YXRlOiAnVEVYVFVSRV9DT01QQVJFX01PREUnLCAgICAgIGRlZmF1
bHQ6ICdOT05FJywgICAgICAgICAgICAgICAgICAgdmFsdWUxOiAnQ09NUEFSRV9SRUZfVE9fVEVY
VFVSRScsICB2YWx1ZTI6ICdOT05FJyAgICAgICAgICAgIH0sCisgICAgeyBzdGF0ZTogJ1RFWFRV
UkVfQkFTRV9MRVZFTCcsICAgICAgICBkZWZhdWx0OiAwLCAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlMTogMTAwLCAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUyOiA5OSAgICAgICAgICAg
ICAgICB9LAorICAgIHsgc3RhdGU6ICdURVhUVVJFX01BWF9MRVZFTCcsICAgICAgICAgZGVmYXVs
dDogMTAwMCwgICAgICAgICAgICAgICAgICAgICB2YWx1ZTE6IDgwMCwgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlMjogMzAwICAgICAgICAgICAgICAgfSwKKyAgICB7IHN0YXRlOiAnVEVYVFVS
RV9NSU5fTE9EJywgICAgICAgICAgIGRlZmF1bHQ6IC0xMDAwLjAsICAgICAgICAgICAgICAgICAg
dmFsdWUxOiAtNTAwLjAsICAgICAgICAgICAgICAgICAgICB2YWx1ZTI6IC05OTkuMCAgICAgICAg
ICAgIH0sCisgICAgeyBzdGF0ZTogJ1RFWFRVUkVfTUFYX0xPRCcsICAgICAgICAgICBkZWZhdWx0
OiAxMDAwLjAsICAgICAgICAgICAgICAgICAgIHZhbHVlMTogNTAwLjAsICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUyOiA5OTkuMCAgICAgICAgICAgICB9LAorICAgIC8vIE5vdGU6IEZvciBURVhU
VVJFX0lNTVVUQUJMRV9MRVZFTFMgYW5kIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCwKKyAgICAv
LyB0aGVzZSB0d28gcG5hbWUgYXJlIHVzZWQgYnkgZ2V0VGV4UGFyYW1ldGVyIEFQSSBvbmx5LCBu
b3QgYXZhaWxhYmxlIGluIHRleFBhcmFtZXRlcltmaV0gaW4gc3BlY2lmaWNhdGlvbnMuCisgICAg
Ly8gVGh1cywgdGhlc2UgdHdvIHN0YXRlcyBzdG9yZSBkZWZhdWx0IHZhbHVlIG9ubHkuCisgICAg
eyBzdGF0ZTogJ1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUycsICBkZWZhdWx0OiAwLCAgICAgfSwK
KyAgICB7IHN0YXRlOiAnVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUJywgIGRlZmF1bHQ6IGZhbHNl
LCB9CisgIF0pOworfQorCitmdW5jdGlvbiBnZXRTdGF0ZUluZm9WYWx1ZShzdGF0ZUluZm8sIGl0
ZW0sIG1ldGhvZCkgeworICBzd2l0Y2ggKHN0YXRlSW5mby5zdGF0ZSkgeworICBjYXNlICdURVhU
VVJFX1dSQVBfUic6CisgIGNhc2UgJ1RFWFRVUkVfV1JBUF9TJzoKKyAgY2FzZSAnVEVYVFVSRV9X
UkFQX1QnOgorICBjYXNlICdURVhUVVJFX01BR19GSUxURVInOgorICBjYXNlICdURVhUVVJFX01J
Tl9GSUxURVInOgorICBjYXNlICdURVhUVVJFX0NPTVBBUkVfRlVOQyc6CisgIGNhc2UgJ1RFWFRV
UkVfQ09NUEFSRV9NT0RFJzoKKyAgICAgIGlmIChtZXRob2QgPT09ICdHZXQnKSB7CisgICAgICAg
IHJldHVybiAnZ2xbIicgKyBzdGF0ZUluZm9baXRlbV0gKyAnIl0nOworICAgICAgfSBlbHNlIGlm
IChtZXRob2QgPT09ICdTZXQnKSB7CisgICAgICAgIHJldHVybiBnbFtzdGF0ZUluZm9baXRlbV1d
OworICAgICAgfQorICAgICAgYnJlYWs7CisgIGNhc2UgJ1RFWFRVUkVfQkFTRV9MRVZFTCc6Cisg
IGNhc2UgJ1RFWFRVUkVfTUFYX0xFVkVMJzoKKyAgY2FzZSAnVEVYVFVSRV9NSU5fTE9EJzoKKyAg
Y2FzZSAnVEVYVFVSRV9NQVhfTE9EJzoKKyAgICAgIGlmIChtZXRob2QgPT09ICdHZXQnKSB7Cisg
ICAgICAgIHJldHVybiAnJyArIHN0YXRlSW5mb1tpdGVtXTsKKyAgICAgIH0gZWxzZSBpZiAobWV0
aG9kID09PSAnU2V0JykgeworICAgICAgICByZXR1cm4gc3RhdGVJbmZvW2l0ZW1dOworICAgICAg
fQorICAgICAgYnJlYWs7CisgIGNhc2UgJ1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUyc6CisgIGNh
c2UgJ1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCc6CisgICAgICAvLyBSZXR1cm4gZGVmYXVsdCB2
YWx1ZSBvbmx5LgorICAgICAgcmV0dXJuICcnICsgc3RhdGVJbmZvLmRlZmF1bHQ7CisgIGRlZmF1
bHQ6CisgICAgICB3dHUuZXJyb3IoIk5vdCByZWFjaGVkISIpOworICAgICAgcmV0dXJuIG51bGw7
CisgICAgICBicmVhazsKKyAgfQorfQorCitmdW5jdGlvbiBhcHBseVN0YXRlcyhmbikgeworICBm
b3IgKHZhciBzcyA9IDA7IHNzIDwgc3RhdGVzLmxlbmd0aDsgKytzcykgeworICAgIHZhciBzdGF0
ZUluZm8gPSBzdGF0ZXNbc3NdOworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0YXJnZXRzLmxl
bmd0aDsgKytpaSkgeworICAgICAgdmFyIHRhcmdldCA9IHRhcmdldHNbaWldOworICAgICAgZ2wu
YWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCArIGlpKTsKKyAgICAgIGZuKHRhcmdldCwgc3RhdGVJ
bmZvKTsKKyAgICB9CisgIH0KK30KKworLy8gdGVzdCB0aGUgZGVmYXVsdCBzdGF0ZS4KK2FwcGx5
U3RhdGVzKGZ1bmN0aW9uKHRhcmdldCwgc3RhdGVJbmZvKSB7CisgIHZhciBhID0gJ2dsLmdldFRl
eFBhcmFtZXRlcihnbFsiJyArIHRhcmdldCArICciXSwgZ2xbIicgKyBzdGF0ZUluZm8uc3RhdGUg
KyAnIl0pJzsKKyAgdmFyIGIgPSBnZXRTdGF0ZUluZm9WYWx1ZShzdGF0ZUluZm8sICdkZWZhdWx0
JywgJ0dldCcpOworICBzaG91bGRCZShhLCBiKTsKK30pOworCisvLyB0ZXN0IG5ldyBzdGF0ZQor
YXBwbHlTdGF0ZXMoZnVuY3Rpb24odGFyZ2V0LCBzdGF0ZUluZm8pIHsKKyAgc3dpdGNoIChzdGF0
ZUluZm8uc3RhdGUpIHsKKyAgY2FzZSAnVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUJzoKKyAgY2Fz
ZSAnVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTJzoKKyAgICAgIC8vIFNraXAgdGhlc2UgdHdvIHBu
YW1lIGZvciB0ZXhQYXJhbWV0ZXJmW2ZpXS4KKyAgICAgIGJyZWFrOworICBjYXNlICdURVhUVVJF
X01JTl9MT0QnOgorICBjYXNlICdURVhUVVJFX01BWF9MT0QnOgorICAgICAgZ2wudGV4UGFyYW1l
dGVyZihnbFt0YXJnZXRdLCBnbFtzdGF0ZUluZm8uc3RhdGVdLCBnZXRTdGF0ZUluZm9WYWx1ZShz
dGF0ZUluZm8sICd2YWx1ZTEnLCAnU2V0JykpOworICAgICAgYnJlYWs7CisgIGRlZmF1bHQ6Cisg
ICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsW3RhcmdldF0sIGdsW3N0YXRlSW5mby5zdGF0ZV0sIGdl
dFN0YXRlSW5mb1ZhbHVlKHN0YXRlSW5mbywgJ3ZhbHVlMScsICdTZXQnKSk7CisgICAgICBicmVh
azsKKyAgfQorfSk7CisKK2FwcGx5U3RhdGVzKGZ1bmN0aW9uKHRhcmdldCwgc3RhdGVJbmZvKSB7
CisgIHZhciBhID0gJ2dsLmdldFRleFBhcmFtZXRlcihnbFsiJyArIHRhcmdldCArICciXSwgZ2xb
IicgKyBzdGF0ZUluZm8uc3RhdGUgKyAnIl0pJzsKKyAgdmFyIGIgPSBnZXRTdGF0ZUluZm9WYWx1
ZShzdGF0ZUluZm8sICd2YWx1ZTEnLCAnR2V0Jyk7CisgIHNob3VsZEJlKGEsIGIpOworfSk7CisK
Ky8vIHRlc3QgZGlmZmVyZW50IHN0YXRlcyBvbiBlYWNoIHRhcmdldC4KK2Z1bmN0aW9uIGdldEl0
ZW0oY291bnQpIHsKKyAgcmV0dXJuIChjb3VudCAlIDIpID8gJ3ZhbHVlMicgOiAndmFsdWUxJzsK
K30KKworYXBwbHlTdGF0ZXMoZnVuY3Rpb24oKSB7CisgIHZhciBjb3VudCA9IDA7CisgIHJldHVy
biBmdW5jdGlvbih0YXJnZXQsIHN0YXRlSW5mbykgeworICAgIHN3aXRjaCAoc3RhdGVJbmZvLnN0
YXRlKSB7CisgICAgY2FzZSAnVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUJzoKKyAgICBjYXNlICdU
RVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMnOgorICAgICAgICAvLyBTa2lwIHRoZXNlIHR3byBwbmFt
ZSBmb3IgdGV4UGFyYW1ldGVyZltmaV0uCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1RFWFRV
UkVfTUlOX0xPRCc6CisgICAgY2FzZSAnVEVYVFVSRV9NQVhfTE9EJzoKKyAgICAgICAgZ2wudGV4
UGFyYW1ldGVyZihnbFt0YXJnZXRdLCBnbFtzdGF0ZUluZm8uc3RhdGVdLCBnZXRTdGF0ZUluZm9W
YWx1ZShzdGF0ZUluZm8sIGdldEl0ZW0oY291bnQpLCAnU2V0JykpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsW3RhcmdldF0sIGdsW3N0
YXRlSW5mby5zdGF0ZV0sIGdldFN0YXRlSW5mb1ZhbHVlKHN0YXRlSW5mbywgZ2V0SXRlbShjb3Vu
dCksICdTZXQnKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICArK2NvdW50OworICB9Cit9
KCkpOworCithcHBseVN0YXRlcyhmdW5jdGlvbigpIHsKKyAgdmFyIGNvdW50ID0gMDsKKyAgcmV0
dXJuIGZ1bmN0aW9uKHRhcmdldCwgc3RhdGVJbmZvKSB7CisgICAgdmFyIGEgPSAnZ2wuZ2V0VGV4
UGFyYW1ldGVyKGdsWyInICsgdGFyZ2V0ICsgJyJdLCBnbFsiJyArIHN0YXRlSW5mby5zdGF0ZSAr
ICciXSknOworICAgIHZhciBiID0gZ2V0U3RhdGVJbmZvVmFsdWUoc3RhdGVJbmZvLCBnZXRJdGVt
KGNvdW50KSwgJ0dldCcpOworICAgIHNob3VsZEJlKGEsIGIpOworICAgICsrY291bnQ7CisgIH07
Cit9KCkpOworCit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBi
ZSBubyBlcnJvcnMiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yOGRjMzA1NDk3NmNlYWE1MzVmZWZlNzQyODFkNzdiZDRjYTcyODUxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwpAQCAtMCwwICsxLDEwNzUgQEAKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworLy8gVGhpcyB0ZXN0IHJlbGllcyBvbiB0
aGUgc3Vycm91bmRpbmcgd2ViIHBhZ2UgZGVmaW5pbmcgYSB2YXJpYWJsZQorLy8gImNvbnRleHRW
ZXJzaW9uIiB3aGljaCBpbmRpY2F0ZXMgd2hhdCB2ZXJzaW9uIG9mIFdlYkdMIGl0J3MgcnVubmlu
ZworLy8gb24gLS0gMSBmb3IgV2ViR0wgMS4wLCAyIGZvciBXZWJHTCAyLjAsIGV0Yy4KKworInVz
ZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRpb24oIlRlc3Qg
b2YgZ2V0IGNhbGxzIGFnYWluc3QgR0wgb2JqZWN0cyBsaWtlIGdldEJ1ZmZlclBhcmFtZXRlciwg
ZXRjLiIpOworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCBjb250ZXh0VmVyc2lvbik7CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkQXJndW1lbnQoZnVu
Y05hbWUsIGFyZ3VtZW50TmFtZSwgdmFsaWRBcmd1bWVudEFycmF5LCBmdW5jKSB7CisgIHZhciB2
YWxpZEFyZ3VtZW50cyA9IHt9OworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdmFsaWRBcmd1bWVu
dEFycmF5Lmxlbmd0aDsgKytpaSkgeworICAgIHZhbGlkQXJndW1lbnRzW3ZhbGlkQXJndW1lbnRB
cnJheVtpaV1dID0gdHJ1ZTsKKyAgfQorICB2YXIgc3VjY2VzcyA9IHRydWU7CisgIGZvciAodmFy
IGlpID0gMDsgaWkgPCAweDEwMDAwOyArK2lpKSB7CisgICAgaWYgKCF2YWxpZEFyZ3VtZW50c1tp
aV0pIHsKKyAgICAgIHZhciByZXN1bHQgPSBmdW5jKGlpKTsKKyAgICAgIGlmIChyZXN1bHQgIT09
IG51bGwpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICB0ZXN0RmFpbGVkKGZ1
bmNOYW1lICsgIiByZXR1cm5lZCAiICsgcmVzdWx0ICsgIiBpbnN0ZWFkIG9mIG51bGwgZm9yIGlu
dmFsaWQgIiArIGFyZ3VtZW50TmFtZSArICIgZW51bTogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgaWkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICB2YXIgZXJyID0gZ2wuZ2V0
RXJyb3IoKTsKKyAgICAgIGlmIChlcnIgIT0gZ2wuSU5WQUxJRF9FTlVNKSB7CisgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgdGVzdEZhaWxlZChmdW5jTmFtZSArICIgZGlkIG5vdCBn
ZW5lcmF0ZSBJTlZBTElEX0VOVU0gZm9yIGludmFsaWQgIiArIGFyZ3VtZW50TmFtZSArICIgZW51
bTogIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgaWkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICB9CisgICAgfQorICB9CisgIGlmIChzdWNjZXNzKSB7CisgICAgdGVzdFBhc3NlZChmdW5jTmFt
ZSArICIgY29ycmVjdGx5IGhhbmRsZWQgaW52YWxpZCAiICsgYXJndW1lbnROYW1lICsgIiBlbnVt
cyIpOworICB9Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJ0ZXN0IGdldEJ1ZmZlclBhcmFtZXRl
ciIpOworLy8gVGVzdCBnZXRCdWZmZXJQYXJhbWV0ZXIKK3ZhciBidWZmZXJUeXBlcyA9IFtnbC5B
UlJBWV9CVUZGRVIsIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSXTsKK2lmIChjb250ZXh0VmVyc2lv
biA+IDEpIHsKKyAgYnVmZmVyVHlwZXMgPSBidWZmZXJUeXBlcy5jb25jYXQoW2dsLkNPUFlfUkVB
RF9CVUZGRVIsIGdsLkNPUFlfV1JJVEVfQlVGRkVSLCBnbC5QSVhFTF9QQUNLX0JVRkZFUiwgZ2wu
UElYRUxfVU5QQUNLX0JVRkZFUiwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgZ2wuVU5J
Rk9STV9CVUZGRVJdKTsKK30KK2ZvciAodmFyIGJiID0gMDsgYmIgPCBidWZmZXJUeXBlcy5sZW5n
dGg7ICsrYmIpIHsKKyAgdmFyIGJ1ZmZlclR5cGUgPSBidWZmZXJUeXBlc1tiYl07CisgIHZhciBi
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihidWZmZXJUeXBlLCBi
dWZmZXIpOworICBnbC5idWZmZXJEYXRhKGJ1ZmZlclR5cGUsIDE2LCBnbC5EWU5BTUlDX0RSQVcp
OworICB2YXIgZXhwcmVzc2lvbjEgPSAiZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKCIgKyBidWZmZXJU
eXBlICsgIiwgZ2wuQlVGRkVSX1NJWkUpIjsKKyAgdmFyIGV4cHJlc3Npb24yID0gImdsLmdldEJ1
ZmZlclBhcmFtZXRlcigiICsgYnVmZmVyVHlwZSArICIsIGdsLkJVRkZFUl9VU0FHRSkiOworICBz
aG91bGRCZShleHByZXNzaW9uMSwgJzE2Jyk7CisgIHNob3VsZEJlKGV4cHJlc3Npb24yLCAnZ2wu
RFlOQU1JQ19EUkFXJyk7CisgIHRlc3RJbnZhbGlkQXJndW1lbnQoImdldEJ1ZmZlclBhcmFtZXRl
ciIsICJwYXJhbWV0ZXIiLCBbZ2wuQlVGRkVSX1NJWkUsIGdsLkJVRkZFUl9VU0FHRV0sIGZ1bmN0
aW9uKGJ1ZmZlclR5cGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24ocGFyYW1ldGVyKSB7CisgICAg
ICByZXR1cm4gZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGJ1ZmZlclR5cGUsIHBhcmFtZXRlcik7Cisg
ICAgfTsKKyAgfShidWZmZXJUeXBlKSk7CisgIGdsLmJpbmRCdWZmZXIoYnVmZmVyVHlwZSwgbnVs
bCk7Cit9Cit0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICJnZXRCdWZmZXJQYXJhbWV0ZXIiLAor
ICAgICJ0YXJnZXQiLAorICAgIGJ1ZmZlclR5cGVzLAorICAgIGZ1bmN0aW9uKHRhcmdldCkgewor
ICAgICAgcmV0dXJuIGdsLmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIGdsLkJVRkZFUl9TSVpF
KTsKKyAgICB9CispOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCit2
YXIgdGVzdENhc2VzID0gWworICB7IGNvbnRleHRTdGVuY2lsOiB0cnVlfSwKKyAgeyBjb250ZXh0
U3RlbmNpbDogZmFsc2V9CitdOworCitmb3IgKHZhciBydW4gPSAwOyBydW4gPCB0ZXN0Q2FzZXMu
bGVuZ3RoOyArK3J1bikgeworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJUZXN0IGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlciB3aXRoIHN0ZW5jaWwgIiArIHRlc3RDYXNlc1tydW5dLmNv
bnRleHRTdGVuY2lsKTsKKworICBpZiAodGVzdENhc2VzW3J1bl0uY29udGV4dFN0ZW5jaWwpIHsK
KyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQobnVsbCwge3N0ZW5jaWw6IHRydWV9LCBjb250
ZXh0VmVyc2lvbik7CisgIH0gZWxzZSB7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KG51
bGwsIHtzdGVuY2lsOiBmYWxzZX0sIGNvbnRleHRWZXJzaW9uKTsKKyAgfQorCisgIHZhciB0ZXh0
dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICB2YXIgYW5vdGhlclRleHR1cmUgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOwor
ICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWwor
ICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAyNTUsCisgICAgICAgICAgICAgICAgICAgIDI1
NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1
LAorICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAyNTVdKSk7CisgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wu
TElORUFSKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgIHZhciBm
cmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRl
eHR1cmUsIDApOworICB2YXIgY29sb3JBdHRhY2htZW50c051bSA9IDE7CisgIGlmIChjb250ZXh0
VmVyc2lvbiA+IDEpIHsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBhbm90aGVy
VGV4dHVyZSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAy
LCAyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgbmV3
IFVpbnQ4QXJyYXkoWworICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDI1NSwKKyAgICAg
ICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAg
ICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDI1
NV0pKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBjb2xvckF0dGFjaG1lbnRzTnVtID0gZ2wuZ2V0UGFy
YW1ldGVyKGdsLk1BWF9DT0xPUl9BVFRBQ0hNRU5UUyk7CisgICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgY29sb3JBdHRhY2ht
ZW50c051bSAtIDEsIGdsLlRFWFRVUkVfMkQsIGFub3RoZXJUZXh0dXJlLCAwKTsKKyAgfQorICB2
YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKKyAgaWYgKGNvbnRleHRWZXJzaW9uID09IDEpCisgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyLCAyKTsKKyAg
ZWxzZQorICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SDI0X1NURU5DSUw4LCAyLCAyKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQ
VEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICBpZiAoY29u
dGV4dFZlcnNpb24gPiAxKQorICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVm
ZmVyKTsKKyAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisgIC8vIFRoZSBmb3IgbG9vcCB0ZXN0
cyB0d28gY29sb3IgYXR0YWNobWVudHMgZm9yIFdlYkdMIDI6IHRoZSBmaXJzdCBvbmUgKGdsLkNP
TE9SX0FUVEFDSE1FTlQwKQorICAvLyBhbmQgdGhlIGxhc3Qgb25lIChnbC5DT0xPUl9BVFRBQ0hN
RU5UMCArIGdsLk1BWF9DT0xPUl9BVFRBQ0hNRU5UUyAtIDEpLgorICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgY29sb3JBdHRhY2htZW50c051bTsgaWkgKz0gKGNvbG9yQXR0YWNobWVudHNOdW0gPiAx
ID8gY29sb3JBdHRhY2htZW50c051bSAtIDEgOiAxKSkgeworICAgIHNob3VsZEJlKCdnbC5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwICsgJyArIGlpICsgJywgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRSknLCAnZ2wuVEVYVFVSRScpOworICAgIGlmIChpaSA9PSAwKQorICAgICAgc2hvdWxkQmUo
J2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAnLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9OQU1FKScsICd0ZXh0dXJlJyk7CisgICAgZWxzZQorICAgICAgc2hvdWxkQmUoJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAnLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FKScsICdhbm90aGVyVGV4dHVyZScpOworICAgIHNob3VsZEJlKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwICsgJyArIGlpICsgJywgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xF
VkVMKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAn
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSknLCAnMCcp
OworICAgIGlmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgICAgIHNob3VsZEJlTm9uWmVybygn
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCArICcgKyBpaSArICcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
UkVEX1NJWkUpJyk7CisgICAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAn
ICsgaWkgKyAnLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkUpJyk7CisgICAg
ICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAnLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSknKTsKKyAgICAgIHNob3VsZEJlTm9uWmVybygn
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCArICcgKyBpaSArICcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
QUxQSEFfU0laRSknKTsKKyAgICAgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCAr
ICcgKyBpaSArICcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpJyk7
CisgICAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAnLCBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKScpOworICAgICAgc2hvdWxk
QmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAgKyAnICsgaWkgKyAnLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1RFWFRVUkVfTEFZRVIpJywgJzAnKTsKKyAgICB9CisgIH0KKyAgc2hvdWxkQmUoJ2dsLmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhf
QVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wu
UkVOREVSQlVGRkVSJyk7CisgIHNob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpJywgJ3JlbmRlcmJ1ZmZlcicpOworICBpZiAoY29u
dGV4dFZlcnNpb24gPiAxKSB7CisgICAgc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKScsICdnbC5SRU5ERVJCVUZGRVInKTsK
KyAgICBzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUpJywgJ3JlbmRlcmJ1ZmZlcicpOworICAgIHNob3VsZEJlKCdnbC5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkn
LCAnZ2wuUkVOREVSQlVGRkVSJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScsICdyZW5kZXJidWZm
ZXInKTsKKyAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKScpOworICAgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lM
X0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFKScpOwor
ICAgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTVBPTkVOVF9UWVBFKScpOworICAgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRB
Q0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKScpOworICAg
IHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfQ09NUE9ORU5UX1RZUEUpJyk7CisgICAgc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRU
QUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyknKTsKKyAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVO
VF9UWVBFKScpOworICAgIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQs
IGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpJyk7CisgIH0KKyAgdmFy
IHZhbGlkUGFyYW1ldGVyc0ZvckZCQXR0YWNobWVudCA9CisgICAgICBbIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsCisgICAgICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUsCisgICAgICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVS
RV9MRVZFTCwKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVf
TUFQX0ZBQ0UKKyAgICAgIF07CisgIGlmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgICB2YWxp
ZFBhcmFtZXRlcnNGb3JGQkF0dGFjaG1lbnQgPSB2YWxpZFBhcmFtZXRlcnNGb3JGQkF0dGFjaG1l
bnQuY29uY2F0KFsKKyAgICAgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRSwK
KyAgICAgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpFLAorICAgICAgICBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSwKKyAgICAgICAgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFLAorICAgICAgICBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0RFUFRIX1NJWkUsCisgICAgICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJ
TF9TSVpFLAorICAgICAgICBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBF
LAorICAgICAgICBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HLAorICAg
ICAgICBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIKKyAgICBdKTsKKyAg
fQorICB0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICAgImdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlciIsCisgICAgICAicGFyYW1ldGVyIiwKKyAgICAgIHZhbGlkUGFyYW1ldGVyc0Zv
ckZCQXR0YWNobWVudCwKKyAgICAgIGZ1bmN0aW9uKHBhcmFtZXRlcikgeworICAgICAgICByZXR1
cm4gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5ULCBwYXJhbWV0ZXIpOworICAgICAgfQorICApOworICB2YXIgdmFs
aWRUYXJnZXRzRm9yRkJBdHRhY2htZW50ID0gW2dsLkZSQU1FQlVGRkVSXTsKKyAgaWYgKGNvbnRl
eHRWZXJzaW9uID4gMSkgeworICAgIHZhbGlkVGFyZ2V0c0ZvckZCQXR0YWNobWVudCA9IHZhbGlk
VGFyZ2V0c0ZvckZCQXR0YWNobWVudC5jb25jYXQoW2dsLlJFQURfRlJBTUVCVUZGRVIsIGdsLkRS
QVdfRlJBTUVCVUZGRVJdKTsKKyAgfQorICB0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICAgImdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsCisgICAgICAidGFyZ2V0IiwKKyAgICAg
IHZhbGlkVGFyZ2V0c0ZvckZCQXR0YWNobWVudCwKKyAgICAgIGZ1bmN0aW9uKHRhcmdldCkgewor
ICAgICAgICByZXR1cm4gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdl
dCwgZ2wuQ09MT1JfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRSk7CisgICAgICB9CisgICk7CisgIHZhciB2YWxpZEF0dGFjaG1lbnRzRm9yRkJBdHRhY2ht
ZW50ID0gbmV3IEFycmF5KAorICAgICAgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICBnbC5E
RVBUSF9BVFRBQ0hNRU5ULAorICAgICAgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULAorICAgICAgZ2wu
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCisgICk7CisgIGlmIChjb250ZXh0VmVyc2lvbiA+IDEp
IHsKKyAgICBmb3IgKHZhciBpaSA9IDE7IGlpIDwgZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9DT0xP
Ul9BVFRBQ0hNRU5UUyk7ICsraWkpIHsKKyAgICAgIHZhbGlkQXR0YWNobWVudHNGb3JGQkF0dGFj
aG1lbnRbdmFsaWRBdHRhY2htZW50c0ZvckZCQXR0YWNobWVudC5sZW5ndGhdID0gZ2wuQ09MT1Jf
QVRUQUNITUVOVDAgKyBpaTsKKyAgICB9CisgIH0KKyAgdGVzdEludmFsaWRBcmd1bWVudCgKKyAg
ICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLAorICAgICAgImF0dGFjaG1l
bnQiLAorICAgICAgdmFsaWRBdHRhY2htZW50c0ZvckZCQXR0YWNobWVudCwKKyAgICAgIGZ1bmN0
aW9uKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgcmV0dXJuIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgICB9CisgICk7CisgIGlmIChjb250ZXh0VmVy
c2lvbiA+IDEpIHsKKyAgICAvLyB0ZXN0IGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICBnbC5iaW5k
RnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIHNob3VsZEJlKCdnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURScpOworICAgIHNob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX1RZUEUpJywgJ2dsLkZSQU1FQlVGRkVSX0RFRkFVTFQnKTsKKyAgICBzaG91bGRCZSgnZ2wu
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBU
SCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuRlJBTUVCVUZG
RVJfREVGQVVMVCcpOworICAgIGlmICh0ZXN0Q2FzZXNbcnVuXS5jb250ZXh0U3RlbmNpbCkKKyAg
ICAgIHNob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLlNURU5DSUwsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZ
UEUpJywgJ2dsLkZSQU1FQlVGRkVSX0RFRkFVTFQnKTsKKyAgICBlbHNlCisgICAgICBzaG91bGRC
ZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5TVEVOQ0lMLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKScsICdnbC5O
T05FJyk7CisgICAgc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfUkVEX1NJWkUpJyk7CisgICAgc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkJBQ0ssIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfR1JFRU5fU0laRSknKTsKKyAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUpJyk7CisgICAgc2hvdWxkQmVOb25aZXJv
KCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSknKTsKKyAgICBzaG91
bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuREVQVEgsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRSkn
KTsKKyAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T01QT05FTlRfVFlQRSknKTsKKyAgICBzaG91bGRCZU5vblplcm8oJ2dsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgZ2wuRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyknKTsKKyAgICBzaG91bGRCZU5vblplcm8oJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQ
VEgsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpJyk7CisgICAgc2hv
dWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkRFUFRILCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09E
SU5HKScpOworICAgIGlmICh0ZXN0Q2FzZXNbcnVuXS5jb250ZXh0U3RlbmNpbCkgeworICAgICAg
c2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLlNURU5DSUwsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJ
TF9TSVpFKScpOworICAgICAgc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUwsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpJyk7CisgICAgICBzaG91bGRCZU5vblplcm8oJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RF
TkNJTCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyknKTsKKyAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICB9IGVsc2UgeworICAg
ICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNU
RU5DSUwsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFKScpOworICAgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC5n
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5D
SUwsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpJyk7CisgICAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJ
TCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyknKTsKKyAgICB9Cisg
ICAgdGVzdEludmFsaWRBcmd1bWVudCgKKyAgICAgICAgImdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlciIsCisgICAgICAgICJwYXJhbWV0ZXIiLAorICAgICAgICB2YWxpZFBhcmFtZXRl
cnNGb3JGQkF0dGFjaG1lbnQsCisgICAgICAgIGZ1bmN0aW9uKHBhcmFtZXRlcikgeworICAgICAg
ICAgIHJldHVybiBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkJBQ0ssIHBhcmFtZXRlcik7CisgICAgICAgIH0KKyAgICApOworICAgIHRlc3RJ
bnZhbGlkQXJndW1lbnQoCisgICAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIiLAorICAgICAgICAidGFyZ2V0IiwKKyAgICAgICAgdmFsaWRUYXJnZXRzRm9yRkJBdHRhY2ht
ZW50LAorICAgICAgICBmdW5jdGlvbih0YXJnZXQpIHsKKyAgICAgICAgICByZXR1cm4gZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdldCwgZ2wuQkFDSywgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7CisgICAgICAgIH0KKyAgICApOworICAgIHRl
c3RJbnZhbGlkQXJndW1lbnQoCisgICAgICAgICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIiLAorICAgICAgICAiYXR0YWNobWVudCIsCisgICAgICAgIFsgZ2wuQkFDSywKKyAgICAg
ICAgICBnbC5ERVBUSCwKKyAgICAgICAgICBnbC5TVEVOQ0lMCisgICAgICAgIF0sCisgICAgICAg
IGZ1bmN0aW9uKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgICByZXR1cm4gZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKTsKKyAgICAgICAgfQorICAgICk7CisgIH0K
K30KK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOwor
ZGVidWcoInRlc3QgZ2V0QXR0YWNoZWRTaGFkZXJzIik7Cit2YXIgc3RhbmRhcmRWZXJ0ID0gd3R1
LmxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihnbCk7Cit2YXIgc3RhbmRhcmRGcmFnID0gd3R1Lmxv
YWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGdsKTsKK3ZhciBzdGFuZGFyZFByb2dyYW0gPSBnbC5j
cmVhdGVQcm9ncmFtKCk7CitnbC5hdHRhY2hTaGFkZXIoc3RhbmRhcmRQcm9ncmFtLCBzdGFuZGFy
ZFZlcnQpOworZ2wuYXR0YWNoU2hhZGVyKHN0YW5kYXJkUHJvZ3JhbSwgc3RhbmRhcmRGcmFnKTsK
K2dsLmxpbmtQcm9ncmFtKHN0YW5kYXJkUHJvZ3JhbSk7Cit2YXIgc2hhZGVycyA9IGdsLmdldEF0
dGFjaGVkU2hhZGVycyhzdGFuZGFyZFByb2dyYW0pOworc2hvdWxkQmUoJ3NoYWRlcnMubGVuZ3Ro
JywgJzInKTsKK3Nob3VsZEJlVHJ1ZSgnc2hhZGVyc1swXSA9PSBzdGFuZGFyZFZlcnQgJiYgc2hh
ZGVyc1sxXSA9PSBzdGFuZGFyZEZyYWcgfHwgc2hhZGVyc1sxXSA9PSBzdGFuZGFyZFZlcnQgJiYg
c2hhZGVyc1swXSA9PSBzdGFuZGFyZEZyYWcnKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKK3Nob3VsZFRocm93KCdnbC5nZXRBdHRhY2hlZFNoYWRlcnMobnVsbCknKTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK3Nob3VsZFRocm93KCdnbC5n
ZXRBdHRhY2hlZFNoYWRlcnMoc3RhbmRhcmRWZXJ0KScpOword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBnZXRQcm9ncmFtUGFy
YW1ldGVyIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dy
YW0sIGdsLkRFTEVURV9TVEFUVVMpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Citz
aG91bGRCZSgndHlwZW9mIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBn
bC5WQUxJREFURV9TVEFUVVMpJywgJyJib29sZWFuIicpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BVFRBQ0hFRF9TSEFERVJTKScsICcyJyk7
CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFD
VElWRV9BVFRSSUJVVEVTKScsICcyJyk7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUyknLCAnMScpOworaWYgKGNvbnRl
eHRWZXJzaW9uID4gMSkgeworICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGds
LmJpbmRCdWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVyKTsKKyAgZ2wu
YnVmZmVyRGF0YShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxMDI0LCBnbC5EWU5BTUlD
X0RSQVcpOworICB2YXIgdW5pZm9ybUJsb2NrUHJvZ3JhbSA9IHd0dS5sb2FkVW5pZm9ybUJsb2Nr
UHJvZ3JhbShnbCk7CisgIHZhciB0cmFuc2Zvcm1GZWVkYmFja1ZhcnMgPSBbIm5vcm1hbCIsICJl
Y1Bvc2l0aW9uIl07CisgIGdsLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModW5pZm9ybUJsb2Nr
UHJvZ3JhbSwgdHJhbnNmb3JtRmVlZGJhY2tWYXJzLCBnbC5JTlRFUkxFQVZFRF9BVFRSSUJTKTsK
KyAgZ2wubGlua1Byb2dyYW0odW5pZm9ybUJsb2NrUHJvZ3JhbSk7CisgIHNob3VsZEJlKCdnbC5n
ZXRQcm9ncmFtUGFyYW1ldGVyKHVuaWZvcm1CbG9ja1Byb2dyYW0sIGdsLkxJTktfU1RBVFVTKScs
ICd0cnVlJyk7CisgIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7Cisg
IHNob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuaWZvcm1CbG9ja1Byb2dyYW0sIGds
LkFDVElWRV9VTklGT1JNX0JMT0NLUyknLCAnMScpOworICBzaG91bGRCZSgnZ2wuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcih1bmlmb3JtQmxvY2tQcm9ncmFtLCBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfVkFS
WUlOR1MpJywgJzInKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIodW5pZm9y
bUJsb2NrUHJvZ3JhbSwgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFKScsICdnbC5J
TlRFUkxFQVZFRF9BVFRSSUJTJyk7Cit9Cit2YXIgcHJvZ3JhbSA9IHN0YW5kYXJkUHJvZ3JhbTsK
K3ZhciB2YWxpZEFycmF5Rm9yUHJvZ3JhbVBhcmFtZXRlciA9IFsKKyAgICBnbC5ERUxFVEVfU1RB
VFVTLAorICAgIGdsLkxJTktfU1RBVFVTLAorICAgIGdsLlZBTElEQVRFX1NUQVRVUywKKyAgICBn
bC5BVFRBQ0hFRF9TSEFERVJTLAorICAgIGdsLkFDVElWRV9BVFRSSUJVVEVTLAorICAgIGdsLkFD
VElWRV9VTklGT1JNUworXTsKK2lmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgdmFsaWRBcnJh
eUZvclByb2dyYW1QYXJhbWV0ZXIgPSB2YWxpZEFycmF5Rm9yUHJvZ3JhbVBhcmFtZXRlci5jb25j
YXQoWworICAgICAgZ2wuQUNUSVZFX1VOSUZPUk1fQkxPQ0tTLAorICAgICAgZ2wuVFJBTlNGT1JN
X0ZFRURCQUNLX1ZBUllJTkdTLAorICAgICAgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9N
T0RFCisgIF0pOworICBwcm9ncmFtID0gdW5pZm9ybUJsb2NrUHJvZ3JhbTsKK30KK3Rlc3RJbnZh
bGlkQXJndW1lbnQoCisgICAgImdldFByb2dyYW1QYXJhbWV0ZXIiLAorICAgICJwYXJhbWV0ZXIi
LAorICAgIHZhbGlkQXJyYXlGb3JQcm9ncmFtUGFyYW1ldGVyLAorICAgIGZ1bmN0aW9uKHBhcmFt
ZXRlcikgeworICAgICAgcmV0dXJuIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcGFy
YW1ldGVyKTsKKyAgICB9CispOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Ip
OworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIiKTsK
K3Nob3VsZEJlKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBn
bC5SRU5ERVJCVUZGRVJfV0lEVEgpJywgJzInKTsKK3Nob3VsZEJlKCdnbC5nZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSEVJR0hUKScsICcy
Jyk7CisvLyBOb3RlOiB3ZSBjYW4ndCB0ZXN0IHRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIGludGVy
bmFsIGZvcm1hdCBzaW5jZQorLy8gdGhlIGltcGxlbWVudGF0aW9uIGlzIGFsbG93ZWQgdG8gY2hh
bmdlIGl0Lgorc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKScpOworc2hvdWxk
QmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBn
bC5SRU5ERVJCVUZGRVJfREVQVEhfU0laRSknKTsKK3ZhciBjb2xvcmJ1ZmZlciA9IGdsLmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpOword3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwor
Z2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdl
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDIsIDIpOworc2hvdWxkQmVOb25aZXJvKCdnbC5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJf
UkVEX1NJWkUpJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKScpOworc2hvdWxk
QmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBn
bC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQUxQSEFf
U0laRSknKTsKK2lmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgNCwgZ2wuUkdCQTQsIDIsIDIpOworICBz
aG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wu
UkVOREVSQlVGRkVSX1NBTVBMRVMpJywgJzQnKTsKK30KK3ZhciB2YWxpZEFycmF5Rm9yUmVuZGVy
YnVmZmVyID0gbmV3IEFycmF5KAorICAgIGdsLlJFTkRFUkJVRkZFUl9XSURUSCwKKyAgICBnbC5S
RU5ERVJCVUZGRVJfSEVJR0hULAorICAgIGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQs
CisgICAgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFLAorICAgIGdsLlJFTkRFUkJVRkZFUl9HUkVF
Tl9TSVpFLAorICAgIGdsLlJFTkRFUkJVRkZFUl9CTFVFX1NJWkUsCisgICAgZ2wuUkVOREVSQlVG
RkVSX0FMUEhBX1NJWkUsCisgICAgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUsCisgICAgZ2wu
UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRQorKTsKK2lmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsK
KyAgdmFsaWRBcnJheUZvclJlbmRlcmJ1ZmZlclt2YWxpZEFycmF5Rm9yUmVuZGVyYnVmZmVyLmxl
bmd0aF0gPSBnbC5SRU5ERVJCVUZGRVJfU0FNUExFUzsKK30KK3Rlc3RJbnZhbGlkQXJndW1lbnQo
CisgICAgImdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciIsCisgICAgInBhcmFtZXRlciIsCisgICAg
dmFsaWRBcnJheUZvclJlbmRlcmJ1ZmZlciwKKyAgICBmdW5jdGlvbihwYXJhbWV0ZXIpIHsKKyAg
ICAgIHJldHVybiBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBw
YXJhbWV0ZXIpOworICAgIH0pOwordGVzdEludmFsaWRBcmd1bWVudCgKKyAgICAiZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyIiwKKyAgICAidGFyZ2V0IiwKKyAgICBbIGdsLlJFTkRFUkJVRkZFUiBd
LAorICAgIGZ1bmN0aW9uKHRhcmdldCkgeworICAgICAgcmV0dXJuIGdsLmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcih0YXJnZXQsIGdsLlJFTkRFUkJVRkZFUl9XSURUSCk7CisgICAgfQorKTsKK3d0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOworZGVidWco
IlRlc3QgZ2V0U2hhZGVyUGFyYW1ldGVyIik7CitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1l
dGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1RZUEUpJywgJ2dsLlZFUlRFWF9TSEFERVInKTsK
K3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVf
U1RBVFVTKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLkNPTVBJTEVfU1RBVFVTKScsICd0cnVlJyk7Cit0ZXN0SW52YWxpZEFyZ3Vt
ZW50KAorICAgICJnZXRTaGFkZXJQYXJhbWV0ZXIiLAorICAgICJwYXJhbWV0ZXIiLAorICAgIFsg
Z2wuREVMRVRFX1NUQVRVUywKKyAgICAgIGdsLkNPTVBJTEVfU1RBVFVTLAorICAgICAgZ2wuU0hB
REVSX1RZUEUKKyAgICBdLAorICAgIGZ1bmN0aW9uKHBhcmFtZXRlcikgeworICAgICAgcmV0dXJu
IGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIHBhcmFtZXRlcik7CisgICAgfQor
KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3QgZ2V0VGV4UGFyYW1ldGVyIik7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eHR1cmUpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19G
SUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50ZXhQYXJh
bWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdF
KTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSKScsICdnbC5ORUFSRVNUJyk7CitzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1l
dGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiknLCAnZ2wuTkVBUkVTVCcp
Oworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X1dSQVBfUyknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFt
ZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCknLCAnZ2wuQ0xBTVBfVE9fRURH
RScpOworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfQkFTRV9MRVZFTCwgMCk7CisgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DT01QQVJFX0ZVTkMsIGdsLkxFUVVBTCk7CisgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DT01QQVJFX01PREUsIGds
LkNPTVBBUkVfUkVGX1RPX1RFWFRVUkUpOworICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUFYX0xFVkVMLCAxMCk7CisgIGdsLnRleFBhcmFtZXRlcmYoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NQVhfTE9ELCAxMCk7CisgIGdsLnRleFBhcmFtZXRlcmYoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fTE9ELCAwKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIHNo
b3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9CQVNF
X0xFVkVMKScsICcwJyk7CisgIHNob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9DT01QQVJFX0ZVTkMpJywgJ2dsLkxFUVVBTCcpOworICBzaG91bGRC
ZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ09NUEFSRV9N
T0RFKScsICdnbC5DT01QQVJFX1JFRl9UT19URVhUVVJFJyk7CisgIHNob3VsZEJlKCdnbC5nZXRU
ZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQVhfTEVWRUwpJywgJzEwJyk7
CisgIHNob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQVhfTE9EKScsICcxMCcpOworICBzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0xPRCknLCAnMCcpOworICBzaG91bGRCZSgnZ2wuZ2V0
VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9SKScsICdnbC5DTEFN
UF9UT19FREdFJyk7CisgIHNob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUKScsICdmYWxzZScpOworICBzaG91bGRCZSgn
Z2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfSU1NVVRBQkxFX0xF
VkVMUyknLCAnMCcpOworfQordmFyIHZhbGlkUGFyYW1ldGVyc0ZvclRleHR1cmUgPSBbCisgICAg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSLAorICAgIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwKKyAgICBn
bC5URVhUVVJFX1dSQVBfUywKKyAgICBnbC5URVhUVVJFX1dSQVBfVCwKK107CitpZiAoY29udGV4
dFZlcnNpb24gPiAxKSB7CisgIHZhbGlkUGFyYW1ldGVyc0ZvclRleHR1cmUgPSB2YWxpZFBhcmFt
ZXRlcnNGb3JUZXh0dXJlLmNvbmNhdChbCisgICAgICBnbC5URVhUVVJFX0JBU0VfTEVWRUwsCisg
ICAgICBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywKKyAgICAgIGdsLlRFWFRVUkVfQ09NUEFSRV9N
T0RFLAorICAgICAgZ2wuVEVYVFVSRV9NQVhfTEVWRUwsCisgICAgICBnbC5URVhUVVJFX01BWF9M
T0QsCisgICAgICBnbC5URVhUVVJFX01JTl9MT0QsCisgICAgICBnbC5URVhUVVJFX1dSQVBfUiwK
KyAgICAgIGdsLlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCwKKyAgICAgIGdsLlRFWFRVUkVfSU1N
VVRBQkxFX0xFVkVMUywKKyAgXSk7Cit9Cit0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICJnZXRU
ZXhQYXJhbWV0ZXIiLAorICAgICJwYXJhbWV0ZXIiLAorICAgIHZhbGlkUGFyYW1ldGVyc0ZvclRl
eHR1cmUsCisgICAgZnVuY3Rpb24ocGFyYW1ldGVyKSB7CisgICAgICByZXR1cm4gZ2wuZ2V0VGV4
UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIHBhcmFtZXRlcik7CisgICAgfQorKTsKK3ZhciB2YWxp
ZFRhcmdldHNGb3JUZXh0dXJlID0gWyBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQ
XTsKK2lmIChjb250ZXh0VmVyc2lvbiA+IDEpIHsKKyAgdmFsaWRUYXJnZXRzRm9yVGV4dHVyZSA9
IHZhbGlkVGFyZ2V0c0ZvclRleHR1cmUuY29uY2F0KFsgZ2wuVEVYVFVSRV8zRCwgZ2wuVEVYVFVS
RV8yRF9BUlJBWV0pOworfQordGVzdEludmFsaWRBcmd1bWVudCgKKyAgICAiZ2V0VGV4UGFyYW1l
dGVyIiwKKyAgICAidGFyZ2V0IiwKKyAgICB2YWxpZFRhcmdldHNGb3JUZXh0dXJlLAorICAgIGZ1
bmN0aW9uKHRhcmdldCkgeworICAgICAgcmV0dXJuIGdsLmdldFRleFBhcmFtZXRlcih0YXJnZXQs
IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUik7CisgICAgfQorKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgZ2V0VW5pZm9ybSB3
aXRoIGFsbCB2YXJpYW50cyBvZiBkYXRhIHR5cGVzIik7CitkZWJ1ZygiQm9vbGVhbiB1bmlmb3Jt
IHZhcmlhYmxlcyIpOwordmFyIGJvb2xQcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtRnJvbUZpbGUo
Z2wsICIuLi8uLi9yZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydCIsICIuLi8uLi9yZXNv
dXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoYm9vbFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgYnZh
bExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwiKTsKK3ZhciBi
dmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwyIik7Cit2
YXIgYnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFsMyIp
OwordmFyIGJ2YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZh
bDQiKTsKK2dsLnVzZVByb2dyYW0oYm9vbFByb2dyYW0pOworZ2wudW5pZm9ybTFpKGJ2YWxMb2Ms
IDEpOworZ2wudW5pZm9ybTJpKGJ2YWwyTG9jLCAxLCAwKTsKK2dsLnVuaWZvcm0zaShidmFsM0xv
YywgMSwgMCwgMSk7CitnbC51bmlmb3JtNGkoYnZhbDRMb2MsIDEsIDAsIDEsIDApOword3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
Ym9vbFByb2dyYW0sIGJ2YWxMb2MpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3Jt
KGJvb2xQcm9ncmFtLCBidmFsMkxvYyknLCAnW3RydWUsIGZhbHNlXScpOworc2hvdWxkQmUoJ2ds
LmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9jKScsICdbdHJ1ZSwgZmFsc2UsIHRydWVd
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2MpJywgJ1t0
cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUik7CisKK2RlYnVnKCJJbnRlZ2VyIHVuaWZvcm0gdmFyaWFibGVzIik7Cit2YXIgaW50
UHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21GaWxlKGdsLCAiLi4vLi4vcmVzb3VyY2VzL2lu
dFVuaWZvcm1TaGFkZXIudmVydCIsICIuLi8uLi9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIu
ZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoaW50UHJvZ3JhbSwgZ2wu
TElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciBpdmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKGludFByb2dyYW0sICJpdmFsIik7Cit2YXIgaXZhbDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24oaW50UHJvZ3JhbSwgIml2YWwyIik7Cit2YXIgaXZhbDNMb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWwzIik7Cit2YXIgaXZhbDRMb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWw0Iik7CitnbC51c2VQcm9ncmFtKGludFByb2dy
YW0pOworZ2wudW5pZm9ybTFpKGl2YWxMb2MsIDEpOworZ2wudW5pZm9ybTJpKGl2YWwyTG9jLCAy
LCAzKTsKK2dsLnVuaWZvcm0zaShpdmFsM0xvYywgNCwgNSwgNik7CitnbC51bmlmb3JtNGkoaXZh
bDRMb2MsIDcsIDgsIDksIDEwKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
KTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpJywgJzEnKTsK
K3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwyTG9jKScsICdbMiwgM10n
KTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwzTG9jKScsICdbNCwg
NSwgNl0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWw0TG9jKScs
ICdbNywgOCwgOSwgMTBdJyk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CisKK2RlYnVnKCJGbG9hdCB1bmlmb3JtIHZhcmlhYmxlcyIpOwordmFyIGZsb2F0UHJvZ3JhbSA9
IHd0dS5sb2FkUHJvZ3JhbUZyb21GaWxlKGdsLCAiLi4vLi4vcmVzb3VyY2VzL2Zsb2F0VW5pZm9y
bVNoYWRlci52ZXJ0IiwgIi4uLy4uL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7
CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihmbG9hdFByb2dyYW0sIGdsLkxJTktf
U1RBVFVTKScsICd0cnVlJyk7Cit2YXIgZnZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihm
bG9hdFByb2dyYW0sICJmdmFsIik7Cit2YXIgZnZhbDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24oZmxvYXRQcm9ncmFtLCAiZnZhbDIiKTsKK3ZhciBmdmFsM0xvYyA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsMyIpOwordmFyIGZ2YWw0TG9jID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWw0Iik7CitnbC51c2VQcm9ncmFtKGZsb2F0
UHJvZ3JhbSk7CitnbC51bmlmb3JtMWYoZnZhbExvYywgMTEpOworZ2wudW5pZm9ybTJmKGZ2YWwy
TG9jLCAxMiwgMTMpOworZ2wudW5pZm9ybTNmKGZ2YWwzTG9jLCAxNCwgMTUsIDE2KTsKK2dsLnVu
aWZvcm00ZihmdmFsNExvYywgMTcsIDE4LCAxOSwgMjApOword3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBm
dmFsTG9jKScsICcxMScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBm
dmFsMkxvYyknLCAnWzEyLCAxM10nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGZsb2F0UHJv
Z3JhbSwgZnZhbDNMb2MpJywgJ1sxNCwgMTUsIDE2XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0oZmxvYXRQcm9ncmFtLCBmdmFsNExvYyknLCAnWzE3LCAxOCwgMTksIDIwXScpOword3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCitkZWJ1ZygiU2FtcGxlciB1bmlmb3Jt
IHZhcmlhYmxlcyIpOwordmFyIHNhbXBsZXJQcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtRnJvbUZp
bGUoZ2wsICIuLi8uLi9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIudmVydCIsICIuLi8uLi9y
ZXNvdXJjZXMvc2FtcGxlclVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFBy
b2dyYW1QYXJhbWV0ZXIoc2FtcGxlclByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7
Cit2YXIgczJEVmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHNhbXBsZXJQcm9ncmFtLCAi
czJEIik7Cit2YXIgc0N1YmVWYWxMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oc2FtcGxlclBy
b2dyYW0sICJzQ3ViZSIpOworZ2wudXNlUHJvZ3JhbShzYW1wbGVyUHJvZ3JhbSk7CitnbC51bmlm
b3JtMWkoczJEVmFsTG9jLCAwKTsKK2dsLnVuaWZvcm0xaShzQ3ViZVZhbExvYywgMSk7Cit3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9y
bShzYW1wbGVyUHJvZ3JhbSwgczJEVmFsTG9jKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5p
Zm9ybShzYW1wbGVyUHJvZ3JhbSwgc0N1YmVWYWxMb2MpJywgJzEnKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIk1hdHJpeCB1bmlmb3JtIHZhcmlhYmxl
cyIpOwordmFyIG1hdFByb2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tRmlsZShnbCwgIi4uLy4u
L3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQiLCAiLi4vLi4vcmVzb3VyY2VzL25vb3BV
bmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKG1h
dFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgbXZhbDJMb2MgPSBnbC5n
ZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwgIm12YWwyIik7Cit2YXIgbXZhbDNMb2MgPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwgIm12YWwzIik7Cit2YXIgbXZhbDRMb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwgIm12YWw0Iik7CitnbC51c2VQcm9n
cmFtKG1hdFByb2dyYW0pOworZ2wudW5pZm9ybU1hdHJpeDJmdihtdmFsMkxvYywgZmFsc2UsIFsx
LCAyLCAzLCA0XSk7CitnbC51bmlmb3JtTWF0cml4M2Z2KG12YWwzTG9jLCBmYWxzZSwgWzUsIDYs
IDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXSk7CitnbC51bmlmb3JtTWF0cml4NGZ2KG12YWw0TG9j
LCBmYWxzZSwgWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUs
IDI2LCAyNywgMjgsIDI5XSk7Cit3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsMkxvYyknLCAnWzEsIDIs
IDMsIDRdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsM0xvYykn
LCAnWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXScpOworc2hvdWxkQmUoJ2dsLmdldFVu
aWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRMb2MpJywgJ1sxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAy
MCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0nKTsKK3d0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICBk
ZWJ1ZygiVW5zaWduZWQgSW50ZWdlciB1bmlmb3JtIHZhcmlhYmxlcyIpOworICB2YXIgdWludFBy
b2dyYW0gPSB3dHUubG9hZFByb2dyYW1Gcm9tRmlsZShnbCwgIi4uLy4uL3Jlc291cmNlcy91aW50
VW5pZm9ybVNoYWRlci52ZXJ0IiwgIi4uLy4uL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlckVT
My5mcmFnIik7CisgIHNob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVpbnRQcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOworICB2YXIgdXZhbExvYyA9IGdsLmdldFVuaWZv
cm1Mb2NhdGlvbih1aW50UHJvZ3JhbSwgInV2YWwiKTsKKyAgdmFyIHV2YWwyTG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKHVpbnRQcm9ncmFtLCAidXZhbDIiKTsKKyAgdmFyIHV2YWwzTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnRQcm9ncmFtLCAidXZhbDMiKTsKKyAgdmFyIHV2YWw0
TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnRQcm9ncmFtLCAidXZhbDQiKTsKKyAgZ2wu
dXNlUHJvZ3JhbSh1aW50UHJvZ3JhbSk7CisgIGdsLnVuaWZvcm0xdWkodXZhbExvYywgMSk7Cisg
IGdsLnVuaWZvcm0ydWkodXZhbDJMb2MsIDIsIDMpOworICBnbC51bmlmb3JtM3VpKHV2YWwzTG9j
LCA0LCA1LCA2KTsKKyAgZ2wudW5pZm9ybTR1aSh1dmFsNExvYywgNywgOCwgOSwgMTApOworICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsTG9jKScsICcxJyk7CisgIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsMkxvYyknLCAnWzIsIDNdJyk7CisgIHNob3VsZEJlKCdn
bC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsM0xvYyknLCAnWzQsIDUsIDZdJyk7CisgIHNo
b3VsZEJlKCdnbC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsNExvYyknLCAnWzcsIDgsIDks
IDEwXScpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgZGVi
dWcoIk1hdHJpeCB1bmlmb3JtIHZhcmlhYmxlcyBmb3IgV2ViR0wgMiIpOworICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKKyAgdmFyIG1hdEZvcldlYkdMMlByb2dyYW0g
PSB3dHUubG9hZFByb2dyYW1Gcm9tRmlsZShnbCwgIi4uLy4uL3Jlc291cmNlcy9tYXRGb3JXZWJH
TDJVbmlmb3JtU2hhZGVyLnZlcnQiLCAiLi4vLi4vcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVy
RVMzLmZyYWciKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIobWF0Rm9yV2Vi
R0wyUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKKyAgdmFyIG12YWwyeDNMb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgIm12YWwyeDMiKTsK
KyAgdmFyIG12YWwyeDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0Rm9yV2ViR0wyUHJv
Z3JhbSwgIm12YWwyeDQiKTsKKyAgdmFyIG12YWwzeDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgIm12YWwzeDIiKTsKKyAgdmFyIG12YWwzeDRMb2MgPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgIm12YWwzeDQiKTsKKyAg
dmFyIG12YWw0eDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0Rm9yV2ViR0wyUHJvZ3Jh
bSwgIm12YWw0eDIiKTsKKyAgdmFyIG12YWw0eDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
bWF0Rm9yV2ViR0wyUHJvZ3JhbSwgIm12YWw0eDMiKTsKKyAgZ2wudXNlUHJvZ3JhbShtYXRGb3JX
ZWJHTDJQcm9ncmFtKTsKKyAgZ2wudW5pZm9ybU1hdHJpeDJ4M2Z2KG12YWwyeDNMb2MsIGZhbHNl
LCBbMSwgMiwgMywgNCwgNSwgNl0pOworICBnbC51bmlmb3JtTWF0cml4Mng0ZnYobXZhbDJ4NExv
YywgZmFsc2UsIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdKTsKKyAgZ2wudW5pZm9ybU1h
dHJpeDN4MmZ2KG12YWwzeDJMb2MsIGZhbHNlLCBbMTUsIDE2LCAxNywgMTgsIDE5LCAyMF0pOwor
ICBnbC51bmlmb3JtTWF0cml4M3g0ZnYobXZhbDN4NExvYywgZmFsc2UsIFsyMSwgMjIsIDIzLCAy
NCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXSk7CisgIGdsLnVuaWZvcm1NYXRyaXg0
eDJmdihtdmFsNHgyTG9jLCBmYWxzZSwgWzMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MF0p
OworICBnbC51bmlmb3JtTWF0cml4NHgzZnYobXZhbDR4M0xvYywgZmFsc2UsIFs0MSwgNDIsIDQz
LCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyXSk7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0Rm9y
V2ViR0wyUHJvZ3JhbSwgbXZhbDJ4M0xvYyknLCAnWzEsIDIsIDMsIDQsIDUsIDZdJyk7CisgIHNo
b3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwyeDRMb2MpJywg
J1s3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdJyk7CisgIHNob3VsZEJlKCdnbC5nZXRVbmlm
b3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDJMb2MpJywgJ1sxNSwgMTYsIDE3LCAxOCwg
MTksIDIwXScpOworICBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFt
LCBtdmFsM3g0TG9jKScsICdbMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAs
IDMxLCAzMl0nKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3Jh
bSwgbXZhbDR4MkxvYyknLCAnWzMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MF0nKTsKKyAg
c2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4M0xvYykn
LCAnWzQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTJdJyk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICBkZWJ1ZygiU2FtcGxl
ciB1bmlmb3JtIHZhcmlhYmxlcyBmb3IgV2ViR0wyIik7CisgIHZhciBzYW1wbGVyRm9yV2ViR0wy
UHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21GaWxlKGdsLCAiLi4vLi4vcmVzb3VyY2VzL25v
b3BVbmlmb3JtU2hhZGVyRVMzLnZlcnQiLCAiLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXJGb3JXZWJH
TDJVbmlmb3JtU2hhZGVyLmZyYWciKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0
ZXIoc2FtcGxlckZvcldlYkdMMlByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cisg
IHZhciBzM0RWYWxMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oc2FtcGxlckZvcldlYkdMMlBy
b2dyYW0sICJzM0QiKTsKKyAgdmFyIHMyREFycmF5VmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCAiczJEQXJyYXkiKTsKKyAgZ2wudXNlUHJvZ3Jh
bShzYW1wbGVyRm9yV2ViR0wyUHJvZ3JhbSk7CisgIGdsLnVuaWZvcm0xaShzM0RWYWxMb2MsIDAp
OworICBnbC51bmlmb3JtMWkoczJEQXJyYXlWYWxMb2MsIDEpOworICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUik7CisgIHNob3VsZEJlKCdnbC5nZXRVbmlmb3JtKHNhbXBsZXJG
b3JXZWJHTDJQcm9ncmFtLCBzM0RWYWxMb2MpJywgJzAnKTsKKyAgc2hvdWxkQmUoJ2dsLmdldFVu
aWZvcm0oc2FtcGxlckZvcldlYkdMMlByb2dyYW0sIHMyREFycmF5VmFsTG9jKScsICcxJyk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK30KKworZGVidWcoIiIpOwor
ZGVidWcoInRlc3QgZ2V0VmVydGV4QXR0cmliIik7Cit2YXIgYXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAx
Nl0pOwordmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIGJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJy
YXksIGdsLkRZTkFNSUNfRFJBVyk7CisvLyBWZXJ0ZXggYXR0cmlidXRlIDAgaXMgc3BlY2lhbCBp
biB0aGF0IGl0IGhhcyBubyBjdXJyZW50IHN0YXRlLCBzbworLy8gZmV0Y2hpbmcgR0xfQ1VSUkVO
VF9WRVJURVhfQVRUUklCIGdlbmVyYXRlcyBhbiBlcnJvci4gVXNlIGF0dHJpYnV0ZQorLy8gMSBm
b3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4KK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOwor
Z2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hv
dWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZF
Ul9CSU5ESU5HKScsICdidWZmZXInKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKScsICd0cnVlJyk7CitzaG91bGRCZSgnZ2wu
Z2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSknLCAnNCcpOwor
Ly8gU3RyaWRlIE1VU1QgYmUgdGhlIHZhbHVlIHRoZSB1c2VyIHB1dCBpbi4KK3Nob3VsZEJlKCdn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpJywgJzAn
KTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9UWVBFKScsICdnbC5GTE9BVCcpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQpJywgJ2ZhbHNlJyk7CitpZiAoY29udGV4
dFZlcnNpb24gPiAxKSB7CisgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVS
VEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SKScsICcwJyk7CisgIHNob3VsZEJlKCdnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSKScsICdmYWxzZScpOwor
ICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKDEsIDIpOworICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4
QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiknLCAnMicpOworfQorZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDM2LCAxMik7CitzaG91
bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURF
KScsICczNicpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYk9mZnNldCgxLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX1BPSU5URVIpJywgJzEyJyk7CitnbC5kaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoMSk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRS
SUJfQVJSQVlfRU5BQkxFRCknLCAnZmFsc2UnKTsKK2dsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYs
IDcsIDgpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRF
WF9BVFRSSUIpJywgJ1s1LCA2LCA3LCA4XScpOworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgewor
ICB2YXIgaW50QXJyYXkgPSBuZXcgSW50MzJBcnJheShbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIGludEFycmF5LCBnbC5EWU5BTUlDX0RSQVcpOworICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgxKTsKKyAgLy8gZmVlZCBmaXhlZC1wb2ludCBkYXRhIHRvIGJ1ZmZlcgorICBn
bC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcigxLCA0LCBnbC5JTlQsIGZhbHNlLCAwLCAwKTsKKyAgc2hv
dWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUp
JywgJ2dsLklOVCcpOworICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfSU5URUdFUiknLCAndHJ1ZScpOworfQord3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IpOwordmFyIHZhbGlkQXJyYXlGb3JWZXJ0ZXhBdHRyaWIgPSBuZXcg
QXJyYXkoCisgICAgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORywKKyAgICBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQsCisgICAgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9TSVpFLAorICAgIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFLAorICAgIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfVFlQRSwKKyAgICBnbC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQsCisgICAgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCCispOworaWYgKGNvbnRleHRWZXJzaW9u
ID4gMSkgeworICB2YWxpZEFycmF5Rm9yVmVydGV4QXR0cmliW3ZhbGlkQXJyYXlGb3JWZXJ0ZXhB
dHRyaWIubGVuZ3RoXSA9IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUjsKKyAgdmFsaWRB
cnJheUZvclZlcnRleEF0dHJpYlt2YWxpZEFycmF5Rm9yVmVydGV4QXR0cmliLmxlbmd0aF0gPSBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI7Cit9Cit0ZXN0SW52YWxpZEFyZ3VtZW50KAor
ICAgICJnZXRWZXJ0ZXhBdHRyaWIiLAorICAgICJwYXJhbWV0ZXIiLAorICAgIHZhbGlkQXJyYXlG
b3JWZXJ0ZXhBdHRyaWIsCisgICAgZnVuY3Rpb24ocGFyYW1ldGVyKSB7CisgICAgICByZXR1cm4g
Z2wuZ2V0VmVydGV4QXR0cmliKDEsIHBhcmFtZXRlcik7CisgICAgfQorKTsKK3ZhciBudW1WZXJ0
ZXhBdHRyaWJzID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WRVJURVhfQVRUUklCUyk7Cit3dHUu
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAnZ2wuZ2V0VmVydGV4
QXR0cmliKCcgKyBudW1WZXJ0ZXhBdHRyaWJzICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklC
KScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBjYXNlcyB3aGVyZSBuYW1lID09IDAiKTsK
K2dsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuTk9ORScpOworZ2wu
ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OKTsKK3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpJywgJ2dsLk5PTkUnKTsKK2dsLmRlbGV0ZUJ1
ZmZlcihidWZmZXIpOworc2hvdWxkQmVOdWxsKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVS
VEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknKTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKKworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBnZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlciIpCisKKyAg
ICBzaG91bGRCZU5vbk51bGwoJ2dsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUjMySSwgZ2wuU0FNUExFUyknKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7CisKKyAgICB0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICAgICAi
Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIiLAorICAgICAgICAidGFyZ2V0IiwKKyAgICAgICAg
WyBnbC5SRU5ERVJCVUZGRVIgXSwKKyAgICAgICAgZnVuY3Rpb24odGFyZ2V0KSB7CisgICAgICAg
ICAgICByZXR1cm4gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIodGFyZ2V0LCBnbC5SMzJJ
LCBnbC5TQU1QTEVTKTsKKyAgICB9KTsKKworICAgIHRlc3RJbnZhbGlkQXJndW1lbnQoCisgICAg
ICAgICJnZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlciIsCisgICAgICAgICJwbmFtZSIsCisgICAg
ICAgIFsgZ2wuU0FNUExFUyBdLAorICAgICAgICBmdW5jdGlvbihwbmFtZSkgeworICAgICAgICAg
ICAgcmV0dXJuIGdsLmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwg
Z2wuUkdCQTQsIHBuYW1lKTsKKyAgICB9KTsKKworICAgIHZhciB2YWxpZEFycmF5Rm9ySW50ZXJm
b3JtYXQgPSBuZXcgQXJyYXkoCisgICAgICAgIGdsLlI4LCBnbC5SOF9TTk9STSwgZ2wuUkc4LCBn
bC5SRzhfU05PUk0sCisgICAgICAgIGdsLlJHQjgsIGdsLlJHQjhfU05PUk0sIGdsLlJHQjU2NSwg
Z2wuUkdCQTQsCisgICAgICAgIGdsLlJHQjVfQTEsIGdsLlJHQkE4LCBnbC5SR0JBOF9TTk9STSwg
Z2wuUkdCMTBfQTIsCisgICAgICAgIGdsLlJHQjEwX0EyVUksIGdsLlNSR0I4LCBnbC5TUkdCOF9B
TFBIQTgsIGdsLlIxNkYsCisgICAgICAgIGdsLlJHMTZGLCBnbC5SR0IxNkYsIGdsLlJHQkExNkYs
IGdsLlIzMkYsCisgICAgICAgIGdsLlJHMzJGLCBnbC5SR0IzMkYsIGdsLlJHQkEzMkYsIGdsLlIx
MUZfRzExRl9CMTBGLAorICAgICAgICBnbC5SR0I5X0U1LCBnbC5SOEksIGdsLlI4VUksIGdsLlIx
NkksCisgICAgICAgIGdsLlIxNlVJLCBnbC5SMzJJLCBnbC5SMzJVSSwgZ2wuUkc4SSwKKyAgICAg
ICAgZ2wuUkc4VUksIGdsLlJHMTZJLCBnbC5SRzE2VUksIGdsLlJHMzJJLAorICAgICAgICBnbC5S
RzMyVUksIGdsLlJHQjhJLCBnbC5SR0I4VUksIGdsLlJHQjE2SSwKKyAgICAgICAgZ2wuUkdCMTZV
SSwgZ2wuUkdCMzJJLCBnbC5SR0IzMlVJLCBnbC5SR0JBOEksCisgICAgICAgIGdsLlJHQkE4VUks
IGdsLlJHQkExNkksIGdsLlJHQkExNlVJLCBnbC5SR0JBMzJJLAorICAgICAgICBnbC5SR0JBMzJV
SSwgZ2wuUkdCLCBnbC5SR0JBLCBnbC5ERVBUSF9TVEVOQ0lMLCBnbC5ERVBUSF9DT01QT05FTlQx
NiwKKyAgICAgICAgZ2wuREVQVEhfQ09NUE9ORU5UMjQsIGdsLkRFUFRIX0NPTVBPTkVOVDMyRiwg
Z2wuREVQVEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgZ2wuREVQVEgzMkZfU1RFTkNJTDgsIGdsLlNU
RU5DSUxfSU5ERVg4CisgICAgKTsKKyAgICB0ZXN0SW52YWxpZEFyZ3VtZW50KAorICAgICAgICAi
Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIiLAorICAgICAgICAiaW50ZXJuYWxmb3JtYXQiLAor
ICAgICAgICB2YWxpZEFycmF5Rm9ySW50ZXJmb3JtYXQsCisgICAgICAgIGZ1bmN0aW9uKGludGVy
bmFsZm9ybWF0KSB7CisgICAgICAgICAgICByZXR1cm4gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQYXJh
bWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbGZvcm1hdCwgZ2wuU0FNUExFUyk7CisgICAg
fSk7CisKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBnZXRJbmRleGVkUGFyYW1l
dGVyIik7CisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRC
dWZmZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5idWZm
ZXJEYXRhKGdsLlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDY0LCBnbC5EWU5BTUlDX0RSQVcp
OworICAgIGdsLmJpbmRCdWZmZXJSYW5nZShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAw
LCBidWZmZXIsIDQsIDgpOworICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGds
LlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywgMCknLCAnYnVmZmVyJyk7CisgICAg
c2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TSVpFLCAwKScsICc4Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0
ZXIoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVCwgMCknLCAnNCcpOworICAgIHZh
ciBidWZmZXIxID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5VTklG
T1JNX0JVRkZFUiwgYnVmZmVyMSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZF
UiwgNjQsIGdsLkRZTkFNSUNfRFJBVyk7CisgICAgdmFyIG9mZnNldFVuaWZvcm0gPSBnbC5nZXRQ
YXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlclJhbmdlKGdsLlVOSUZPUk1fQlVGRkVSLCAxLCBidWZmZXIxLCBvZmZzZXRVbmlmb3Jt
LCA4KTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihnbC5VTklGT1JNX0JV
RkZFUl9CSU5ESU5HLCAxKScsICdidWZmZXIxJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4
ZWRQYXJhbWV0ZXIoZ2wuVU5JRk9STV9CVUZGRVJfU0laRSwgMSknLCAnOCcpOworICAgIHNob3Vs
ZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGdsLlVOSUZPUk1fQlVGRkVSX1NUQVJULCAxKScs
ICdvZmZzZXRVbmlmb3JtJyk7CisKKyAgICBnbC5iaW5kQnVmZmVyQmFzZShnbC5VTklGT1JNX0JV
RkZFUiwgMSwgbnVsbCk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZ2wu
VU5JRk9STV9CVUZGRVJfQklORElORywgMSknLCAnbnVsbCcpOworCisgICAgdmFyIHZhbGlkQXJy
YXlGb3JUYXJnZXQgPSBuZXcgQXJyYXkoCisgICAgICAgIGdsLlRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVJfQklORElORywKKyAgICAgICAgZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpF
LAorICAgICAgICBnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJULAorICAgICAgICBn
bC5VTklGT1JNX0JVRkZFUl9CSU5ESU5HLAorICAgICAgICBnbC5VTklGT1JNX0JVRkZFUl9TSVpF
LAorICAgICAgICBnbC5VTklGT1JNX0JVRkZFUl9TVEFSVAorICAgICk7CisgICAgdGVzdEludmFs
aWRBcmd1bWVudCgKKyAgICAgICAgImdldEluZGV4ZWRQYXJhbWV0ZXIiLAorICAgICAgICAidGFy
Z2V0IiwKKyAgICAgICAgdmFsaWRBcnJheUZvclRhcmdldCwKKyAgICAgICAgZnVuY3Rpb24odGFy
Z2V0KSB7CisgICAgICAgICAgICByZXR1cm4gZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcih0YXJnZXQs
IDApOworICAgIH0pOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGdldFNhbXBs
ZXJQYXJhbWV0ZXIiKTsKKyAgICB2YXIgc2FtcGxlciA9IGdsLmNyZWF0ZVNhbXBsZXIoKTsKKyAg
ICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX0NPTVBBUkVfRlVOQywg
Z2wuTEVRVUFMKTsKKyAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJF
X0NPTVBBUkVfTU9ERSwgZ2wuQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSk7CisgICAgZ2wuc2FtcGxl
clBhcmFtZXRlcmkoc2FtcGxlciwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICBnbC5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBnbC5URVhUVVJFX01BWF9MT0QsIDEw
KTsKKyAgICBnbC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX01JTl9GSUxU
RVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIGdsLlRF
WFRVUkVfTUlOX0xPRCwgMCk7CisgICAgZ2wuc2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgZ2wu
VEVYVFVSRV9XUkFQX1IsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBn
bC5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFNhbXBsZXJQYXJhbWV0ZXIoc2FtcGxlciwg
Z2wuVEVYVFVSRV9DT01QQVJFX0ZVTkMpJywgJ2dsLkxFUVVBTCcpOworICAgIHNob3VsZEJlKCdn
bC5nZXRTYW1wbGVyUGFyYW1ldGVyKHNhbXBsZXIsIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RFKScs
ICdnbC5DT01QQVJFX1JFRl9UT19URVhUVVJFJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFNhbXBs
ZXJQYXJhbWV0ZXIoc2FtcGxlciwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKScsICdnbC5ORUFSRVNU
Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFNhbXBsZXJQYXJhbWV0ZXIoc2FtcGxlciwgZ2wuVEVY
VFVSRV9NQVhfTE9EKScsICcxMCcpOworICAgIHNob3VsZEJlKCdnbC5nZXRTYW1wbGVyUGFyYW1l
dGVyKHNhbXBsZXIsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiknLCAnZ2wuTkVBUkVTVCcpOworICAg
IHNob3VsZEJlKCdnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKHNhbXBsZXIsIGdsLlRFWFRVUkVfTUlO
X0xPRCknLCAnMCcpOworICAgIHNob3VsZEJlKCdnbC5nZXRTYW1wbGVyUGFyYW1ldGVyKHNhbXBs
ZXIsIGdsLlRFWFRVUkVfV1JBUF9SKScsICdnbC5DTEFNUF9UT19FREdFJyk7CisgICAgc2hvdWxk
QmUoJ2dsLmdldFNhbXBsZXJQYXJhbWV0ZXIoc2FtcGxlciwgZ2wuVEVYVFVSRV9XUkFQX1MpJywg
J2dsLkNMQU1QX1RPX0VER0UnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0U2FtcGxlclBhcmFtZXRl
cihzYW1wbGVyLCBnbC5URVhUVVJFX1dSQVBfVCknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworICAg
IHZhciB2YWxpZEFycmF5Rm9yU2FtcGxlclBhcmFtZXRlciA9IG5ldyBBcnJheSgKKyAgICAgICAg
Z2wuVEVYVFVSRV9DT01QQVJFX0ZVTkMsCisgICAgICAgIGdsLlRFWFRVUkVfQ09NUEFSRV9NT0RF
LAorICAgICAgICBnbC5URVhUVVJFX01BR19GSUxURVIsCisgICAgICAgIGdsLlRFWFRVUkVfTUFY
X0xPRCwKKyAgICAgICAgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLAorICAgICAgICBnbC5URVhUVVJF
X01JTl9MT0QsCisgICAgICAgIGdsLlRFWFRVUkVfV1JBUF9SLAorICAgICAgICBnbC5URVhUVVJF
X1dSQVBfUywKKyAgICAgICAgZ2wuVEVYVFVSRV9XUkFQX1QKKyAgICApOworICAgIHRlc3RJbnZh
bGlkQXJndW1lbnQoCisgICAgICAgICJnZXRTYW1wbGVyUGFyYW1ldGVyIiwKKyAgICAgICAgInBu
YW1lIiwKKyAgICAgICAgdmFsaWRBcnJheUZvclNhbXBsZXJQYXJhbWV0ZXIsCisgICAgICAgIGZ1
bmN0aW9uKHBuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gZ2wuZ2V0U2FtcGxlclBhcmFtZXRl
cihzYW1wbGVyLCBwbmFtZSk7CisgICAgfSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlRlc3QgZ2V0U3luY1BhcmFtZXRlciIpOworICAgIHZhciBzeW5jID0gZ2wuZmVuY2VTeW5jKGds
LlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0U3lu
Y1BhcmFtZXRlcihzeW5jLCBnbC5PQkpFQ1RfVFlQRSknLCAnZ2wuU1lOQ19GRU5DRScpOworICAg
IHZhciBzeW5jX3N0YXR1cyA9IGdsLmdldFN5bmNQYXJhbWV0ZXIoc3luYywgZ2wuU1lOQ19TVEFU
VVMpOworICAgIHN3aXRjaCAoc3luY19zdGF0dXMpIHsKKyAgICAgIGNhc2UgZ2wuVU5TSUdOQUxF
RDoKKyAgICAgICAgdGVzdFBhc3NlZCgnZ2wuZ2V0U3luY1BhcmFtZXRlcihzeW5jLCBnbC5TWU5D
X0NPTkRJVElPTikgaXMgZ2wuVU5TSUdOQUxFRCcpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgZ2wuU0lHTkFMRUQ6CisgICAgICAgIHRlc3RQYXNzZWQoJ2dsLmdldFN5bmNQYXJhbWV0ZXIo
c3luYywgZ2wuU1lOQ19DT05ESVRJT04pIGlzIGdsLlNJR05BTEVEJyk7CisgICAgICAgIGJyZWFr
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgdGVzdEZhaWxlZCgnZ2wuZ2V0U3luY1BhcmFtZXRl
cihzeW5jLCBnbC5TWU5DX0NPTkRJVElPTikgd2FzICcgKyBzeW5jX3N0YXR1cyArCisgICAgICAg
ICAgICAgICAgICAgJywgZXhwZWN0ZWQgZ2wuVU5TSUdOQUxFRCBvciBnbC5TSUdOQUxFRCcpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgc2hvdWxkQmUoJ2dsLmdldFN5bmNQYXJhbWV0ZXIo
c3luYywgZ2wuU1lOQ19DT05ESVRJT04pJywgJ2dsLlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRF
Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFN5bmNQYXJhbWV0ZXIoc3luYywgZ2wuU1lOQ19GTEFH
UyknLCAnMCcpOworICAgIHZhciB2YWxpZEFycmF5Rm9yU3luY1BhcmFtZXRlciA9IG5ldyBBcnJh
eSgKKyAgICAgICAgZ2wuT0JKRUNUX1RZUEUsCisgICAgICAgIGdsLlNZTkNfU1RBVFVTLAorICAg
ICAgICBnbC5TWU5DX0NPTkRJVElPTiwKKyAgICAgICAgZ2wuU1lOQ19GTEFHUworICAgICk7Cisg
ICAgdGVzdEludmFsaWRBcmd1bWVudCgKKyAgICAgICAgImdldFN5bmNQYXJhbWV0ZXIiLAorICAg
ICAgICAicG5hbWUiLAorICAgICAgICB2YWxpZEFycmF5Rm9yU3luY1BhcmFtZXRlciwKKyAgICAg
ICAgZnVuY3Rpb24ocG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBnbC5nZXRTeW5jUGFyYW1l
dGVyKHN5bmMsIHBuYW1lKTsKKyAgICB9KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VGVzdCBnZXRRdWVyeVBhcmFtZXRlciIpOworICAgIHZhciBxdWVyeSA9IGdsLmNyZWF0ZVF1ZXJ5
KCk7CisgICAgZ2wuYmVnaW5RdWVyeShnbC5UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19X
UklUVEVOLCBxdWVyeSk7CisgICAgZ2wuZW5kUXVlcnkoZ2wuVFJBTlNGT1JNX0ZFRURCQUNLX1BS
SU1JVElWRVNfV1JJVFRFTik7CisgICAgc2hvdWxkQmUoJ2dsLmdldFF1ZXJ5UGFyYW1ldGVyKHF1
ZXJ5LCBnbC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFKScsICdmYWxzZScpOworICAgIC8vIFF1ZXJp
ZXMnIHJlc3VsdHMgYXJlIHRlc3RlZCBlbHNld2hlcmUgaW4gdGhlIGNvbmZvcm1hbmNlIHN1aXRl
LiBJdCdzIGNvbXBsaWNhdGVkCisgICAgLy8gdG8gd2FpdCBmb3IgdGhpcyBxdWVyeSdzIHJlc3Vs
dCB0byBiZWNvbWUgYXZhaWxhYmxlIGFuZCB2ZXJpZnkgaXQuCisgICAgdmFyIHZhbGlkQXJyYXlG
b3JQbmFtZSA9IG5ldyBBcnJheSgKKyAgICAgICAgZ2wuUVVFUllfUkVTVUxULAorICAgICAgICBn
bC5RVUVSWV9SRVNVTFRfQVZBSUxBQkxFCisgICAgKTsKKyAgICB0ZXN0SW52YWxpZEFyZ3VtZW50
KAorICAgICAgICAiZ2V0UXVlcnlQYXJhbWV0ZXIiLAorICAgICAgICAicG5hbWUiLAorICAgICAg
ICB2YWxpZEFycmF5Rm9yUG5hbWUsCisgICAgICAgIGZ1bmN0aW9uKHBuYW1lKSB7CisgICAgICAg
ICAgICByZXR1cm4gZ2wuZ2V0UXVlcnlQYXJhbWV0ZXIocXVlcnksIHBuYW1lKTsKKyAgICAgICAg
fQorICAgICk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgZ2V0RnJhZ0RhdGFM
b2NhdGlvbiIpOworICAgIHZhciBiYXNlVmVydFNoYWRlciA9ICcnICsKKyAgICAnI3ZlcnNpb24g
MzAwIGVzXG4nICsKKyAgICAndW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcbicgKworICAg
ICd1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcbicgKworICAgICdpbiB2ZWM0IHZlcnRl
eDtcbicgKworICAgICdvdXQgdmVjNCBwb3NpdGlvbjtcbicgKworICAgICd2b2lkIG1haW4gKHZv
aWQpXG4nICsKKyAgICAne1xuJyArCisgICAgJyAgICAgICBwb3NpdGlvbiA9IG1vZGVsVmlld01h
dHJpeCAqIHZlcnRleDtcbicgKworICAgICcgICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9u
TWF0cml4ICogcG9zaXRpb247XG4nICsKKyAgICAnfVxuJzsKKyAgICB2YXIgYmFzZUZyYWdTaGFk
ZXIgPSAnJyArCisgICAgJyN2ZXJzaW9uIDMwMCBlc1xuJyArCisgICAgJ2luIGxvd3AgdmVjNCBw
b3NpdGlvbjtcbicgKworICAgICdsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0
IGZyYWdDb2xvcjtcbicgKworICAgICd2b2lkIG1haW4gKHZvaWQpXG4nICsKKyAgICAne1xuJyAr
CisgICAgJyAgICAgICBmcmFnQ29sb3IgPSBwb3NpdGlvbjtcbicgKworICAgICd9XG4nOworICAg
IHZhciB2ZXJ0U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAg
IGdsLnNoYWRlclNvdXJjZSh2ZXJ0U2hhZGVyLCBiYXNlVmVydFNoYWRlcik7CisgICAgZ2wuY29t
cGlsZVNoYWRlcih2ZXJ0U2hhZGVyKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1l
dGVyKHZlcnRTaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKScsICd0cnVlJyk7CisgICAgdmFyIGZy
YWdTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgICBnbC5z
aGFkZXJTb3VyY2UoZnJhZ1NoYWRlciwgYmFzZUZyYWdTaGFkZXIpOworICAgIGdsLmNvbXBpbGVT
aGFkZXIoZnJhZ1NoYWRlcik7CisgICAgc2hvdWxkQmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihm
cmFnU2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUyknLCAndHJ1ZScpOworICAgIHZhciBwcm9ncmFt
ID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0
U2hhZGVyKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ1NoYWRlcik7CisgICAg
Z2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJh
bWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywndHJ1ZScpOworICAgIHNob3VsZEJlKCdn
bC5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sICJ2ZXJ0ZXhDb2xvciIpJywgJy0xJyk7Cisg
ICAgc2hvdWxkQmUoJ2dsLmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgIm1vZGVsVmlld01h
dHJpeCIpJywgJy0xJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEZyYWdEYXRhTG9jYXRpb24ocHJv
Z3JhbSwgInByb2plY3Rpb25NYXRyaXgiKScsICctMScpOworICAgIHNob3VsZEJlKCdnbC5nZXRG
cmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpJywgJy0xJyk7CisgICAgc2hvdWxk
QmUoJ2dsLmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgImZyYWdDb2xvciIpJywgJzAnKTsK
KworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBnZXRBY3RpdmVVbmlmb3JtcyIpOwor
ICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRVbmlmb3JtQmxvY2tQcm9ncmFtKGdsKTsKKyAgICBn
bC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdn
bC5nZXRFcnJvcigpJywgJ2dsLk5PX0VSUk9SJyk7CisKKyAgICB2YXIgbnVtQWN0aXZlVW5pZm9y
bXMgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUyk7
CisgICAgdmFyIGJsb2NrSW5kZXggPSBnbC5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCAi
VHJhbnNmb3JtIik7CisgICAgdmFyIHVuaWZvcm1JbmRpY2VzID0gW107CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1BY3RpdmVVbmlmb3JtczsgaSsrKQorICAgICAgdW5pZm9ybUluZGljZXMu
cHVzaChpKTsKKyAgICB2YXIgdHlwZXMgPSBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9UWVBFKTsKKyAgICB2YXIgc2l6ZXMgPSBnbC5nZXRB
Y3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9TSVpFKTsK
KyAgICB2YXIgYmxvY2tJbmRpY2VzID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5p
Zm9ybUluZGljZXMsIGdsLlVOSUZPUk1fQkxPQ0tfSU5ERVgpOworICAgIHZhciBvZmZzZXRzID0g
Z2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIGdsLlVOSUZPUk1f
T0ZGU0VUKTsKKyAgICB2YXIgYXJyYXlTdHJpZGVzID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybXMocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMsIGdsLlVOSUZPUk1fQVJSQVlfU1RSSURFKTsKKyAgICB2YXIg
bWF0cml4U3RyaWRlcyA9IGdsLmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRp
Y2VzLCBnbC5VTklGT1JNX01BVFJJWF9TVFJJREUpOworICAgIHZhciByb3dNYWpvcnMgPSBnbC5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgZ2wuVU5JRk9STV9JU19S
T1dfTUFKT1IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQWN0aXZlVW5pZm9ybXM7IGkr
KykgeworICAgICAgaWYgKHR5cGVzW2ldICE9IGdsLkZMT0FUX01BVDQgJiYgdHlwZXNbaV0gIT0g
Z2wuRkxPQVRfTUFUMykKKyAgICAgICAgdGVzdEZhaWxlZCgiZXhwZWN0ZWQgdmFsdWU6IEdMX0ZM
T0FUX01BVDQgb3IgR0xfRkxPQVRfTUFUMyIgKyAiIGFjdHVhbCB2YWx1ZSBmb3IgVU5JRk9STV9U
WVBFIGZvciB1bmlmb3JtIGluZGV4WyIgKyBpICsgIl06IiArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgdHlwZXNbaV0pKTsKKyAgICAgIGlmIChzaXplc1tpXSAhPSAxKQorICAgICAgICB0ZXN0RmFp
bGVkKCJleHBlY3RlZCB2YWx1ZTogMSIgKyAiIGFjdHVhbCB2YWx1ZSBmb3IgVU5JRk9STV9TSVpF
IGZvciB1bmlmb3JtIGluZGV4WyIgKyBpICsgIl06IiArIHNpemVzW2ldKTsKKyAgICAgIGlmIChi
bG9ja0luZGljZXNbaV0gIT0gYmxvY2tJbmRleCkKKyAgICAgICAgdGVzdEZhaWxlZCgiZXhwZWN0
ZWQgdmFsdWU6IDAiICsgIiBhY3R1YWwgdmFsdWUgZm9yIFVOSUZPUk1fQkxPQ0tfSU5ERVggZm9y
IHVuaWZvcm0gaW5kZXhbIiArIGkgKyAiXToiICsgYmxvY2tJbmRpY2VzW2ldKTsKKyAgICAgIGlm
IChvZmZzZXRzW2ldIDwgMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiZXhwZWN0ZWQgdmFsdWUgPj0g
MCIgKyAiIGFjdHVhbCB2YWx1ZSBmb3IgVU5JRk9STV9PRkZTRVQgZm9yIHVuaWZvcm0gaW5kZXhb
IiArIGkgKyAiXToiICsgb2Zmc2V0c1tpXSk7CisgICAgICBpZiAoYXJyYXlTdHJpZGVzW2ldICE9
IDApCisgICAgICAgIHRlc3RGYWlsZWQoImV4cGVjdGVkIHZhbHVlOiAwIiArICIgYWN0dWFsIHZh
bHVlIGZvciBVTklGT1JNX0FSUkFZX1NUUklERSBmb3IgdW5pZm9ybSBpbmRleFsiICsgaSArICJd
OiIgKyBhcnJheVN0cmlkZXNbaV0pOworICAgICAgaWYgKG1hdHJpeFN0cmlkZXNbaV0gPCAwKQor
ICAgICAgICB0ZXN0RmFpbGVkKCJleHBlY3RlZCB2YWx1ZSA+PSAwIiArICIgYWN0dWFsIHZhbHVl
IGZvciBVTklGT1JNX01BVFJJWF9TVFJJREUgZm9yIHVuaWZvcm0gaW5kZXhbIiArIGkgKyAiXToi
ICsgbWF0cml4U3RyaWRlc1tpXSk7CisgICAgICBzaG91bGRCZSgndHlwZW9mIHJvd01ham9yc1tp
XScsICciYm9vbGVhbiInKTsKKyAgICAgIGlmIChyb3dNYWpvcnNbaV0gIT0gZmFsc2UpCisgICAg
ICAgIHRlc3RGYWlsZWQoImV4cGVjdGVkIHZhbHVlOiAwIiArICIgYWN0dWFsIHZhbHVlIGZvciBV
TklGT1JNX0lTX1JPV19NQUpPUiBmb3IgdW5pZm9ybSBpbmRleFsiICsgaSArICJdOiIgKyByb3dN
YWpvcnNbaV0pOworICAgIH0KKworICAgIHZhciB2YWxpZEFycmF5Rm9yUG5hbWUgPSBuZXcgQXJy
YXkoCisgICAgICAgIGdsLlVOSUZPUk1fVFlQRSwKKyAgICAgICAgZ2wuVU5JRk9STV9TSVpFLAor
ICAgICAgICBnbC5VTklGT1JNX0JMT0NLX0lOREVYLAorICAgICAgICBnbC5VTklGT1JNX09GRlNF
VCwKKyAgICAgICAgZ2wuVU5JRk9STV9BUlJBWV9TVFJJREUsCisgICAgICAgIGdsLlVOSUZPUk1f
TUFUUklYX1NUUklERSwKKyAgICAgICAgZ2wuVU5JRk9STV9JU19ST1dfTUFKT1IKKyAgICApOwor
ICAgIHRlc3RJbnZhbGlkQXJndW1lbnQoCisgICAgICAgICJnZXRBY3RpdmVVbmlmb3JtcyIsCisg
ICAgICAgICJwbmFtZSIsCisgICAgICAgIHZhbGlkQXJyYXlGb3JQbmFtZSwKKyAgICAgICAgZnVu
Y3Rpb24ocG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBnbC5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAgICB9CisgICAgKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCBnZXRVbmlmb3JtQmxvY2tJbmRleCIpOworICAg
IHZhciBwcm9ncmFtID0gd3R1LmxvYWRVbmlmb3JtQmxvY2tQcm9ncmFtKGdsKTsKKyAgICBnbC5s
aW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBzaG91bGRCZVRydWUoJ2dsLmdldFByb2dyYW1QYXJh
bWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFVu
aWZvcm1CbG9ja0luZGV4KHByb2dyYW0sICJUcmFuc2Zvcm0iKScsICcwJyk7CisgICAgc2hvdWxk
QmUoJ2dsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sICJ1X21vZGVsVmlld01hdHJpeCIp
JywgJ2dsLklOVkFMSURfSU5ERVgnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybUJsb2Nr
SW5kZXgocHJvZ3JhbSwgIm5vcm1hbCIpJywgJ2dsLklOVkFMSURfSU5ERVgnKTsKKyAgICBzaG91
bGRCZSgnZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgInVfbm9ybWFsIiknLCAnZ2wu
SU5WQUxJRF9JTkRFWCcpOworICAgIHZhciBub1VuaWZvcm1Qcm9ncmFtID0gd3R1LmxvYWRTdGFu
ZGFyZFByb2dyYW0oZ2wpOworICAgIGdsLmxpbmtQcm9ncmFtKG5vVW5pZm9ybVByb2dyYW0pOwor
ICAgIHNob3VsZEJlVHJ1ZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihub1VuaWZvcm1Qcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUyknKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybUJsb2NrSW5k
ZXgobm9Vbmlmb3JtUHJvZ3JhbSwgInVfbW9kZWxWaWV3UHJvak1hdHJpeCIpJywgJ2dsLklOVkFM
SURfSU5ERVgnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybUJsb2NrSW5kZXgobm9Vbmlm
b3JtUHJvZ3JhbSwgInVfbm9ybWFsIiknLCAnZ2wuSU5WQUxJRF9JTkRFWCcpOworCisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUiKTsKKyAg
ICB2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkVW5pZm9ybUJsb2NrUHJvZ3JhbShnbCk7CisgICAgZ2wu
bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgc2hvdWxkQmVUcnVlKCdnbC5nZXRQcm9ncmFtUGFy
YW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCAwKScsICdUcmFuc2Zv
cm0nKTsKKyAgICBzaG91bGRCZU51bGwoJ2dsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJv
Z3JhbSwgLTEpJyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSk7CisgICAgc2hvdWxkQmVOdWxsKCdnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dy
YW0sIDEpJyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7
CisgICAgc2hvdWxkQmVOdWxsKCdnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0s
IGdsLklOVkFMSURfSU5ERVgpJyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSk7CisgICAgdmFyIG5vTGlua1Byb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7
CisgICAgc2hvdWxkQmVGYWxzZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihub0xpbmtQcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUyknKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUobm9MaW5r
UHJvZ3JhbSwgMCknKTsKKyAgICB2YXIgbm9Vbmlmb3JtUHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRh
cmRQcm9ncmFtKGdsKTsKKyAgICBnbC5saW5rUHJvZ3JhbShub1VuaWZvcm1Qcm9ncmFtKTsKKyAg
ICBzaG91bGRCZVRydWUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIobm9Vbmlmb3JtUHJvZ3JhbSwg
Z2wuTElOS19TVEFUVVMpJyk7CisgICAgc2hvdWxkQmVOdWxsKCdnbC5nZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKG5vVW5pZm9ybVByb2dyYW0sIC0xKScpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworICAgIHNob3VsZEJlTnVsbCgnZ2wuZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShub1VuaWZvcm1Qcm9ncmFtLCAwKScpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworICAgIHNob3VsZEJlTnVsbCgnZ2wuZ2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShub1VuaWZvcm1Qcm9ncmFtLCBnbC5JTlZBTElEX0lOREVY
KScpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFt
ZXRlciIpOworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRVbmlmb3JtQmxvY2tQcm9ncmFtKGds
KTsKKyAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBzaG91bGRCZVRydWUoJ2dsLmdl
dFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJyk7CisgICAgc2hvdWxk
QmUoJ2dsLmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9ncmFtLCAwLCBnbC5VTklG
T1JNX0JMT0NLX0JJTkRJTkcpJywgJzAnKTsKKyAgICBnbC51bmlmb3JtQmxvY2tCaW5kaW5nKHBy
b2dyYW0sIDAsIDEpOworICAgIHNob3VsZEJlKCdnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIocHJvZ3JhbSwgMCwgZ2wuVU5JRk9STV9CTE9DS19CSU5ESU5HKScsICcxJyk7CisgICAg
Ly8gVGhlIGFjdHVhbCBibG9jayBkYXRhIHNpemUgY2FuIGJlIGJpZ2dlciB0aGFuIDE2NCwgZGVw
ZW5kaW5nIG9uIHRoZSB1bmlmb3JtIGJsb2NrIGxheW91dC4KKyAgICBzaG91bGRCZVRydWUoJ2ds
LmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihwcm9ncmFtLCAwLCBnbC5VTklGT1JNX0JM
T0NLX0RBVEFfU0laRSkgPj0gMTY0Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcihwcm9ncmFtLCAwLCBnbC5VTklGT1JNX0JMT0NLX0FDVElWRV9VTklG
T1JNUyknLCAnMycpOworICAgIHNob3VsZEJlVHJ1ZSgnZ2wuZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
UGFyYW1ldGVyKHByb2dyYW0sIDAsIGdsLlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJU
RVhfU0hBREVSKScpOworICAgIHNob3VsZEJlRmFsc2UoJ2dsLmdldEFjdGl2ZVVuaWZvcm1CbG9j
a1BhcmFtZXRlcihwcm9ncmFtLCAwLCBnbC5VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJB
R01FTlRfU0hBREVSKScpOworICAgIHZhciBpbmRpY2VzID0gZ2wuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyKHByb2dyYW0sIDAsIGdsLlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1f
SU5ESUNFUyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgIGlmIChp
bmRpY2VzW2ldIDwgMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiZXhwZWN0ZWQgdmFsdWUgPj0gMCIg
KyAiIGFjdHVhbCB2YWx1ZSBmb3IgVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VT
IGZvciB1bmlmb3JtIGluZGV4WyIgKyBpICsgIl06IiArIGluZGljZXNbaV0pOworICAgIH0KKyAg
ICB2YXIgdmFsaWRBcnJheUZvclBuYW1lID0gbmV3IEFycmF5KAorICAgICAgICBnbC5VTklGT1JN
X0JMT0NLX0JJTkRJTkcsCisgICAgICAgIGdsLlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFLAorICAg
ICAgICBnbC5VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUywKKyAgICAgICAgZ2wuVU5JRk9S
TV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTLAorICAgICAgICBnbC5VTklGT1JNX0JMT0NL
X1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUiwKKyAgICAgICAgZ2wuVU5JRk9STV9CTE9DS19S
RUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUgorICAgICk7CisgICAgdGVzdEludmFsaWRBcmd1
bWVudCgKKyAgICAgICAgImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsCisgICAgICAg
ICJwbmFtZSIsCisgICAgICAgIHZhbGlkQXJyYXlGb3JQbmFtZSwKKyAgICAgICAgZnVuY3Rpb24o
cG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBnbC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIocHJvZ3JhbSwgMCwgcG5hbWUpOworICAgICAgICB9CisgICAgKTsKK30KKword3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2pzL3Rlc3RzL2dsLXZlcnRleC1hdHRyaWIuanMgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9nbC12ZXJ0ZXgtYXR0cmliLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3Y2FkNDA4NjhhOTJmNmY4NDJhYTVjODQzZGVhMTYxNzYyYjgyZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy90ZXN0cy9nbC12ZXJ0ZXgtYXR0cmliLmpzCkBAIC0wLDAgKzEsMjYzIEBACisvKgor
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Citmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8vIFRoaXMgdGVzdCByZWxp
ZXMgb24gdGhlIHN1cnJvdW5kaW5nIHdlYiBwYWdlIGRlZmluaW5nIGEgdmFyaWFibGUKKy8vICJj
b250ZXh0VmVyc2lvbiIgd2hpY2ggaW5kaWNhdGVzIHdoYXQgdmVyc2lvbiBvZiBXZWJHTCBpdCdz
IHJ1bm5pbmcKKy8vIG9uIC0tIDEgZm9yIFdlYkdMIDEuMCwgMiBmb3IgV2ViR0wgMi4wLCBldGMu
CisKKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBp
bXBsZW1lbnRhdGlvbnMgdmVydGV4QXR0cmliIGNhbiBiZSBzZXQgYW5kIHJlYWQuIik7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4dCIpOworCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiLCB1bmRlZmlu
ZWQsIGNvbnRleHRWZXJzaW9uKTsKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMi
KTsKKworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJDaGVja2luZyBnbC52ZXJ0ZXhBdHRyaWIuIik7
CisKKyAgdmFyIG51bVZlcnRleEF0dHJpYnMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRF
WF9BVFRSSUJTKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG51bVZlcnRleEF0dHJpYnM7ICsr
aWkpIHsKKyAgICBnbC52ZXJ0ZXhBdHRyaWIxZnYoaWksIFsxXSk7CisgICAgc2hvdWxkQmVUeXBl
KCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklC
KScsICdGbG9hdDMyQXJyYXknKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcg
KyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMF0nLCAnMScpOworICAgIHNob3Vs
ZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRU
UklCKVsxXScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkg
KyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzJdJywgJzAnKTsKKyAgICBzaG91bGRCZSgn
Z2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilb
M10nLCAnMScpOworCisgICAgZ2wudmVydGV4QXR0cmliMWZ2KGlpLCBuZXcgRmxvYXQzMkFycmF5
KFstMV0pKTsKKyAgICBzaG91bGRCZVR5cGUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAn
LCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ0Zsb2F0MzJBcnJheScpOworICAgIHNob3Vs
ZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRU
UklCKVswXScsICctMScpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlp
ICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsxXScsICcwJyk7CisgICAgc2hvdWxkQmUo
J2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIp
WzJdJywgJzAnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcs
IGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbM10nLCAnMScpOworCisgICAgZ2wudmVydGV4QXR0
cmliMmZ2KGlpLCBbMSwgMl0pOworICAgIHNob3VsZEJlVHlwZSgnZ2wuZ2V0VmVydGV4QXR0cmli
KCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQiknLCAnRmxvYXQzMkFycmF5Jyk7
CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5U
X1ZFUlRFWF9BVFRSSUIpWzBdJywgJzEnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0
cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMV0nLCAnMicpOworICAg
IHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJU
RVhfQVRUUklCKVsyXScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYign
ICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzNdJywgJzEnKTsKKworICAgIGds
LnZlcnRleEF0dHJpYjJmdihpaSwgbmV3IEZsb2F0MzJBcnJheShbMSwgLTJdKSk7CisgICAgc2hv
dWxkQmVUeXBlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJU
RVhfQVRUUklCKScsICdGbG9hdDMyQXJyYXknKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4
QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMF0nLCAnMScpOwor
ICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9W
RVJURVhfQVRUUklCKVsxXScsICctMicpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRy
aWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsyXScsICcwJyk7CisgICAg
c2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRF
WF9BVFRSSUIpWzNdJywgJzEnKTsKKworICAgIGdsLnZlcnRleEF0dHJpYjNmdihpaSwgWzEsIDIs
IDNdKTsKKyAgICBzaG91bGRCZVR5cGUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBn
bC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ0Zsb2F0MzJBcnJheScpOworICAgIHNob3VsZEJl
KCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklC
KVswXScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAn
LCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzFdJywgJzInKTsKKyAgICBzaG91bGRCZSgnZ2wu
Z2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMl0n
LCAnMycpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wu
Q1VSUkVOVF9WRVJURVhfQVRUUklCKVszXScsICcxJyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWIz
ZnYoaWksIG5ldyBGbG9hdDMyQXJyYXkoWzEsIC0yLCAzXSkpOworICAgIHNob3VsZEJlVHlwZSgn
Z2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQikn
LCAnRmxvYXQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsg
aWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzBdJywgJzEnKTsKKyAgICBzaG91bGRC
ZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJ
QilbMV0nLCAnLTInKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSAr
ICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMl0nLCAnMycpOworICAgIHNob3VsZEJlKCdn
bC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsz
XScsICcxJyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0ZnYoaWksIFsxLCAyLCAzLCA0XSk7Cisg
ICAgc2hvdWxkQmVUeXBlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVO
VF9WRVJURVhfQVRUUklCKScsICdGbG9hdDMyQXJyYXknKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0
VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMF0nLCAn
MScpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VS
UkVOVF9WRVJURVhfQVRUUklCKVsxXScsICcyJyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRl
eEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzJdJywgJzMnKTsK
KyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRf
VkVSVEVYX0FUVFJJQilbM10nLCAnNCcpOworCisgICAgZ2wudmVydGV4QXR0cmliNGZ2KGlpLCBu
ZXcgRmxvYXQzMkFycmF5KFsxLCAyLCAtMywgNF0pKTsKKyAgICBzaG91bGRCZVR5cGUoJ2dsLmdl
dFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ0Zs
b2F0MzJBcnJheScpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsg
JywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVswXScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzFd
JywgJzInKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGds
LkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMl0nLCAnLTMnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0
VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbM10nLCAn
NCcpOworCisgICAgZ2wudmVydGV4QXR0cmliMWYoaWksIDUpOworICAgIHNob3VsZEJlVHlwZSgn
Z2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQikn
LCAnRmxvYXQzMkFycmF5Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsg
aWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzBdJywgJzUnKTsKKyAgICBzaG91bGRC
ZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJ
QilbMV0nLCAnMCcpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsg
JywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsyXScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzNd
JywgJzEnKTsKKworICAgIGdsLnZlcnRleEF0dHJpYjJmKGlpLCA2LCA3KTsKKyAgICBzaG91bGRC
ZVR5cGUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9B
VFRSSUIpJywgJ0Zsb2F0MzJBcnJheScpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRy
aWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVswXScsICc2Jyk7CisgICAg
c2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRF
WF9BVFRSSUIpWzFdJywgJzcnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcg
KyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMl0nLCAnMCcpOworICAgIHNob3Vs
ZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRU
UklCKVszXScsICcxJyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWIzZihpaSwgNywgOCwgOSk7Cisg
ICAgc2hvdWxkQmVUeXBlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVO
VF9WRVJURVhfQVRUUklCKScsICdGbG9hdDMyQXJyYXknKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0
VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMF0nLCAn
NycpOworICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VS
UkVOVF9WRVJURVhfQVRUUklCKVsxXScsICc4Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRl
eEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzJdJywgJzknKTsK
KyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRf
VkVSVEVYX0FUVFJJQilbM10nLCAnMScpOworCisgICAgZ2wudmVydGV4QXR0cmliNGYoaWksIDYs
IDcsIDgsIDkpOworICAgIHNob3VsZEJlVHlwZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSAr
ICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQiknLCAnRmxvYXQzMkFycmF5Jyk7CisgICAgc2hv
dWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9B
VFRSSUIpWzBdJywgJzYnKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBp
aSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMV0nLCAnNycpOworICAgIHNob3VsZEJl
KCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklC
KVsyXScsICc4Jyk7CisgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAn
LCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzNdJywgJzknKTsKKworICAgIGlmIChjb250ZXh0
VmVyc2lvbiA+IDEpIHsKKyAgICAgIGdsLnZlcnRleEF0dHJpYkk0aShpaSwgLTEsIDAsIDEsIDIp
OworICAgICAgc2hvdWxkQmVUeXBlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wu
Q1VSUkVOVF9WRVJURVhfQVRUUklCKScsICdJbnQzMkFycmF5Jyk7CisgICAgICBzaG91bGRCZSgn
Z2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilb
MF0nLCAnLTEnKTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsg
JywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsxXScsICcwJyk7CisgICAgICBzaG91bGRCZSgn
Z2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilb
Ml0nLCAnMScpOworICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAn
LCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzNdJywgJzInKTsKKworICAgICAgZ2wudmVydGV4
QXR0cmliSTR1aShpaSwgMCwgMSwgMiwgMyk7CisgICAgICBzaG91bGRCZVR5cGUoJ2dsLmdldFZl
cnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1VpbnQz
MkFycmF5Jyk7CisgICAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcs
IGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMF0nLCAnMCcpOworICAgICAgc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzFd
JywgJzEnKTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywg
Z2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsyXScsICcyJyk7CisgICAgICBzaG91bGRCZSgnZ2wu
Z2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbM10n
LCAnMycpOworCisgICAgICBnbC52ZXJ0ZXhBdHRyaWJJNGl2KGlpLCBbLTEsIDAsIDEsIDJdKTsK
KyAgICAgIHNob3VsZEJlVHlwZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNV
UlJFTlRfVkVSVEVYX0FUVFJJQiknLCAnSW50MzJBcnJheScpOworICAgICAgc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzBd
JywgJy0xJyk7CisgICAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcs
IGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMV0nLCAnMCcpOworICAgICAgc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzJd
JywgJzEnKTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywg
Z2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVszXScsICcyJyk7CisKKyAgICAgIGdsLnZlcnRleEF0
dHJpYkk0aXYoaWksIG5ldyBJbnQzMkFycmF5KFsxLCAwLCAtMSwgMl0pKTsKKyAgICAgIHNob3Vs
ZEJlVHlwZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVY
X0FUVFJJQiknLCAnSW50MzJBcnJheScpOworICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0
dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzBdJywgJzEnKTsKKyAg
ICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9W
RVJURVhfQVRUUklCKVsxXScsICcwJyk7CisgICAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0
cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMl0nLCAnLTEnKTsKKyAg
ICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9W
RVJURVhfQVRUUklCKVszXScsICcyJyk7CisKKyAgICAgIGdsLnZlcnRleEF0dHJpYkk0dWl2KGlp
LCBbMCwgMSwgMiwgM10pOworICAgICAgc2hvdWxkQmVUeXBlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIo
JyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKScsICdVaW50MzJBcnJheScpOwor
ICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5U
X1ZFUlRFWF9BVFRSSUIpWzBdJywgJzAnKTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhB
dHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVsxXScsICcxJyk7Cisg
ICAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcsIGdsLkNVUlJFTlRf
VkVSVEVYX0FUVFJJQilbMl0nLCAnMicpOworICAgICAgc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0
dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpWzNdJywgJzMnKTsKKwor
ICAgICAgZ2wudmVydGV4QXR0cmliSTR1aXYoaWksIG5ldyBVaW50MzJBcnJheShbMCwgMiwgMSwg
M10pKTsKKyAgICAgIHNob3VsZEJlVHlwZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBpaSArICcs
IGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQiknLCAnVWludDMyQXJyYXknKTsKKyAgICAgIHNob3Vs
ZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlpICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRU
UklCKVswXScsICcwJyk7CisgICAgICBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKCcgKyBp
aSArICcsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQilbMV0nLCAnMicpOworICAgICAgc2hvdWxk
QmUoJ2dsLmdldFZlcnRleEF0dHJpYignICsgaWkgKyAnLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRS
SUIpWzJdJywgJzEnKTsKKyAgICAgIHNob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoJyArIGlp
ICsgJywgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKVszXScsICczJyk7CisgICAgfQorICB9Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworICBkZWJ1ZygiIik7Cisg
IGRlYnVnKCJDaGVja2luZyBvdXQtb2YtcmFuZ2UgdmVydGV4QXR0cmliIGluZGV4Iik7CisgIGds
LmdldFZlcnRleEF0dHJpYihudW1WZXJ0ZXhBdHRyaWJzLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRS
SUIpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsKKworICBn
bC52ZXJ0ZXhBdHRyaWIxZnYobnVtVmVydGV4QXR0cmlicywgWzFdKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgZ2wudmVydGV4QXR0cmliMWZ2KG51
bVZlcnRleEF0dHJpYnMsIG5ldyBGbG9hdDMyQXJyYXkoWy0xXSkpOworICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsKKworICBnbC52ZXJ0ZXhBdHRyaWIyZnYobnVt
VmVydGV4QXR0cmlicywgWzEsIDJdKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgZ2wudmVydGV4QXR0cmliMmZ2KG51bVZlcnRleEF0dHJpYnMsIG5l
dyBGbG9hdDMyQXJyYXkoWzEsIC0yXSkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX1ZBTFVFKTsKKworICBnbC52ZXJ0ZXhBdHRyaWIzZnYobnVtVmVydGV4QXR0cmlicywg
WzEsIDIsIDNdKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7
CisKKyAgZ2wudmVydGV4QXR0cmliM2Z2KG51bVZlcnRleEF0dHJpYnMsIG5ldyBGbG9hdDMyQXJy
YXkoWzEsIC0yLCAzXSkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZB
TFVFKTsKKworICBnbC52ZXJ0ZXhBdHRyaWI0ZnYobnVtVmVydGV4QXR0cmlicywgWzEsIDIsIDMs
IDRdKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAg
Z2wudmVydGV4QXR0cmliNGZ2KG51bVZlcnRleEF0dHJpYnMsIG5ldyBGbG9hdDMyQXJyYXkoWzEs
IDIsIC0zLCA0XSkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
KTsKKworICBnbC52ZXJ0ZXhBdHRyaWIxZihudW1WZXJ0ZXhBdHRyaWJzLCA1KTsKKyAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgZ2wudmVydGV4QXR0cmli
MmYobnVtVmVydGV4QXR0cmlicywgNiwgNyk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUpOworCisgIGdsLnZlcnRleEF0dHJpYjNmKG51bVZlcnRleEF0dHJpYnMs
IDcsIDgsIDkpOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsK
KworICBnbC52ZXJ0ZXhBdHRyaWI0ZihudW1WZXJ0ZXhBdHRyaWJzLCA2LCA3LCA4LCA5KTsKKyAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgaWYgKGNvbnRl
eHRWZXJzaW9uID4gMSkgeworICAgIGdsLnZlcnRleEF0dHJpYkk0aShudW1WZXJ0ZXhBdHRyaWJz
LCAtMSwgMCwgMSwgMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9W
QUxVRSk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJNHVpKG51bVZlcnRleEF0dHJpYnMsIDAsIDEs
IDIsIDMpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOwor
CisgICAgZ2wudmVydGV4QXR0cmliSTRpdihudW1WZXJ0ZXhBdHRyaWJzLCBbLTEsIDAsIDEsIDJd
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsKKworICAg
IGdsLnZlcnRleEF0dHJpYkk0aXYobnVtVmVydGV4QXR0cmlicywgbmV3IEludDMyQXJyYXkoWzEs
IDAsIC0xLCAyXSkpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFM
VUUpOworCisgICAgZ2wudmVydGV4QXR0cmliSTR1aXYobnVtVmVydGV4QXR0cmlicywgWzAsIDEs
IDIsIDNdKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFKTsK
KworICAgIGdsLnZlcnRleEF0dHJpYkk0dWl2KG51bVZlcnRleEF0dHJpYnMsIG5ldyBVaW50MzJB
cnJheShbMCwgMiwgMSwgM10pKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX1ZBTFVFKTsKKyAgfQorCisgIGRlYnVnKCIiKTsKKyAgZGVidWcoIkNoZWNraW5nIGludmFs
aWQgYXJyYXkgbGVuZ3RocyIpOworICBudW1WZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmli
cyAtIDE7CisgIGdsLnZlcnRleEF0dHJpYjFmdihudW1WZXJ0ZXhBdHRyaWJzLCBbXSk7CisgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCisgIGdsLnZlcnRleEF0
dHJpYjFmdihudW1WZXJ0ZXhBdHRyaWJzLCBuZXcgRmxvYXQzMkFycmF5KFtdKSk7CisgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCisgIGdsLnZlcnRleEF0dHJp
YjJmdihudW1WZXJ0ZXhBdHRyaWJzLCBbMV0pOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX1ZBTFVFKTsKKworICBnbC52ZXJ0ZXhBdHRyaWIyZnYobnVtVmVydGV4QXR0cmli
cywgbmV3IEZsb2F0MzJBcnJheShbMV0pKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSk7CisKKyAgZ2wudmVydGV4QXR0cmliM2Z2KG51bVZlcnRleEF0dHJpYnMs
IFsxLCAyXSk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOwor
CisgIGdsLnZlcnRleEF0dHJpYjNmdihudW1WZXJ0ZXhBdHRyaWJzLCBuZXcgRmxvYXQzMkFycmF5
KFsxLCAtMl0pKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7
CisKKyAgZ2wudmVydGV4QXR0cmliNGZ2KG51bVZlcnRleEF0dHJpYnMsIFsxLCAyLCAzXSk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUpOworCisgIGdsLnZlcnRl
eEF0dHJpYjRmdihudW1WZXJ0ZXhBdHRyaWJzLCBuZXcgRmxvYXQzMkFycmF5KFsxLCAyLCAtM10p
KTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisKKyAgaWYg
KGNvbnRleHRWZXJzaW9uID4gMSkgeworICAgIGdsLnZlcnRleEF0dHJpYkk0aXYobnVtVmVydGV4
QXR0cmlicywgWy0xLCAwLCAxXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJNGl2KG51bVZlcnRleEF0dHJpYnMs
IG5ldyBJbnQzMkFycmF5KFsxLCAwLCAtMV0pKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsLnZlcnRleEF0dHJpYkk0dWl2KG51bVZlcnRl
eEF0dHJpYnMsIFswLCAxLCAyXSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJJNHVpdihudW1WZXJ0ZXhBdHRyaWJz
LCBuZXcgVWludDMyQXJyYXkoWzAsIDIsIDFdKSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSk7CisgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9pbnN0YW5jZW9mLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9pbnN0YW5jZW9m
LXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRjYWQzYjFmNjhkNTE5NDU2MmQ5NDU5NWJmMTdjOGU5YWIy
ZWI0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2luc3RhbmNlb2YtdGVzdC5qcwpAQCAtMCwwICsxLDEwNSBA
QAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisvLyBUaGlzIHRl
c3QgcmVsaWVzIG9uIHRoZSBzdXJyb3VuZGluZyB3ZWIgcGFnZSBkZWZpbmluZyBhIHZhcmlhYmxl
CisvLyAiY29udGV4dFZlcnNpb24iIHdoaWNoIGluZGljYXRlcyB3aGF0IHZlcnNpb24gb2YgV2Vi
R0wgaXQncyBydW5uaW5nCisvLyBvbiAtLSAxIGZvciBXZWJHTCAxLjAsIDIgZm9yIFdlYkdMIDIu
MCwgZXRjLgorCisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNj
cmlwdGlvbihkb2N1bWVudC50aXRsZSk7CitkZWJ1ZygiVGVzdHMgdGhhdCBpbnN0YW5jZW9mIHdv
cmtzIG9uIFdlYkdMIG9iamVjdHMuIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIGNoZWNrR0xF
cnJvcihtZXNzYWdlKSB7CisgIHZhciBlcnJvciA9IGdsLmdldEVycm9yKCk7CisgIGlmIChlcnJv
ciAhPSBnbC5OT19FUlJPUikgeworICAgIHd0dS5lcnJvcigiRXJyb3I6ICIgKyBtZXNzYWdlICsg
IiBjYXVzZWQgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZXJyb3IpKTsKKyAgfQorfQorCit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiLCB1bmRlZmluZWQsIGNvbnRleHRW
ZXJzaW9uKTsKK2lmIChjb250ZXh0VmVyc2lvbiA9PT0gMSkgeworICBzaG91bGRCZVRydWUoJ2ds
IGluc3RhbmNlb2YgV2ViR0xSZW5kZXJpbmdDb250ZXh0Jyk7Cit9IGVsc2UgaWYgKGNvbnRleHRW
ZXJzaW9uID09PSAyKSB7CisgIHNob3VsZEJlVHJ1ZSgnZ2wgaW5zdGFuY2VvZiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Jyk7Cit9CisKK3Nob3VsZEJlVHJ1ZSgnZ2wuY3JlYXRlQnVmZmVyKCkgaW5z
dGFuY2VvZiBXZWJHTEJ1ZmZlcicpOworY2hlY2tHTEVycm9yKCJjcmVhdGVCdWZmZXIiKQorCitz
aG91bGRCZVRydWUoJ2dsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaW5zdGFuY2VvZiBXZWJHTEZyYW1l
YnVmZmVyJyk7CitjaGVja0dMRXJyb3IoImNyZWF0ZUZyYW1lYnVmZmVyIikKKworc2hvdWxkQmVU
cnVlKCdnbC5jcmVhdGVQcm9ncmFtKCkgaW5zdGFuY2VvZiBXZWJHTFByb2dyYW0nKTsKK2NoZWNr
R0xFcnJvcigiY3JlYXRlUHJvZ3JhbSIpCisKK3Nob3VsZEJlVHJ1ZSgnZ2wuY3JlYXRlUmVuZGVy
YnVmZmVyKCkgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmJ1ZmZlcicpOworY2hlY2tHTEVycm9yKCJj
cmVhdGVSZW5kZXJidWZmZXIiKQorCitzaG91bGRCZVRydWUoJ2dsLmNyZWF0ZVNoYWRlcihnbC5W
RVJURVhfU0hBREVSKSBpbnN0YW5jZW9mIFdlYkdMU2hhZGVyJyk7CitjaGVja0dMRXJyb3IoImNy
ZWF0ZVNoYWRlciIpCisKK3Nob3VsZEJlVHJ1ZSgnZ2wuY3JlYXRlVGV4dHVyZSgpIGluc3RhbmNl
b2YgV2ViR0xUZXh0dXJlJyk7CitjaGVja0dMRXJyb3IoImNyZWF0ZVRleHR1cmUiKQorCitpZiAo
Y29udGV4dFZlcnNpb24gPiAxKSB7CisgIHNob3VsZEJlVHJ1ZSgnZ2wuY3JlYXRlUXVlcnkoKSBp
bnN0YW5jZW9mIFdlYkdMUXVlcnknKTsKKyAgY2hlY2tHTEVycm9yKCJjcmVhdGVRdWVyeSIpCisK
KyAgc2hvdWxkQmVUcnVlKCdnbC5jcmVhdGVTYW1wbGVyKCkgaW5zdGFuY2VvZiBXZWJHTFNhbXBs
ZXInKTsKKyAgY2hlY2tHTEVycm9yKCJjcmVhdGVTYW1wbGVyIikKKworICBzaG91bGRCZVRydWUo
J2dsLmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgaW5zdGFuY2VvZiBXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrJyk7CisgIGNoZWNrR0xFcnJvcigiY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2siKQorCisg
IHNob3VsZEJlVHJ1ZSgnZ2wuY3JlYXRlVmVydGV4QXJyYXkoKSBpbnN0YW5jZW9mIFdlYkdMVmVy
dGV4QXJyYXlPYmplY3QnKTsKKyAgY2hlY2tHTEVycm9yKCJjcmVhdGVWZXJ0ZXhBcnJheSIpCit9
CisKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFk
ZXInXSwgWyd2UG9zaXRpb24nXSwgWzBdKTsKKworc2hvdWxkQmVUcnVlKCdnbC5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIikgaW5zdGFuY2VvZiBXZWJHTFVuaWZvcm1Mb2NhdGlv
bicpOworY2hlY2tHTEVycm9yKCJnZXRVbmlmb3JtTG9jYXRpb24iKQorCitzaG91bGRCZVRydWUo
J2dsLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSBpbnN0YW5jZW9mIFdlYkdMQWN0aXZlSW5m
bycpOworY2hlY2tHTEVycm9yKCJnZXRBY3RpdmVBdHRyaWIiKQorCitzaG91bGRCZVRydWUoJ2ds
LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkgaW5zdGFuY2VvZiBXZWJHTEFjdGl2ZUluZm8n
KTsKK2NoZWNrR0xFcnJvcigiZ2V0QWN0aXZlVW5pZm9ybSIpCisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0cyB0aGF0IHRob3NlIFdlYkdMIG9iamVjdHMgY2FuIG5vdCBiZSBjb25zdHJ1Y3RlZCB0
aHJvdWdoIG5ldyBvcGVyYXRvciIpOworZGVidWcoIiIpOworCitmdW5jdGlvbiBzaG91bGRUaHJv
d1dpdGhOZXcob2JqZWN0VHlwZSwgb2JqZWN0TmFtZSkgeworICB0cnkgeworICAgIG5ldyBvYmpl
Y3RUeXBlOworICAgIHRlc3RGYWlsZWQoJ25ldyAnICsgb2JqZWN0TmFtZSArICcgZGlkIG5vdCB0
aHJvdycpOworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdFBhc3NlZCgnbmV3ICcgKyBvYmplY3RO
YW1lICsgJyB0aHJldyBhbiBlcnJvcicpOworICB9Cit9CisKK3Nob3VsZFRocm93V2l0aE5ldyh3
aW5kb3cuV2ViR0xSZW5kZXJpbmdDb250ZXh0LCAnV2ViR0xSZW5kZXJpbmdDb250ZXh0Jyk7Citz
aG91bGRUaHJvd1dpdGhOZXcod2luZG93LldlYkdMQWN0aXZlSW5mbywgJ1dlYkdMQWN0aXZlSW5m
bycpOworc2hvdWxkVGhyb3dXaXRoTmV3KHdpbmRvdy5XZWJHTEJ1ZmZlciwgJ1dlYkdMQnVmZmVy
Jyk7CitzaG91bGRUaHJvd1dpdGhOZXcod2luZG93LldlYkdMRnJhbWVidWZmZXIsICdXZWJHTEZy
YW1lYnVmZmVyJyk7CitzaG91bGRUaHJvd1dpdGhOZXcod2luZG93LldlYkdMUHJvZ3JhbSwgJ1dl
YkdMUHJvZ3JhbScpOworc2hvdWxkVGhyb3dXaXRoTmV3KHdpbmRvdy5XZWJHTFJlbmRlcmJ1ZmZl
ciwgJ1dlYkdMUmVuZGVyYnVmZmVyJyk7CitzaG91bGRUaHJvd1dpdGhOZXcod2luZG93LldlYkdM
U2hhZGVyLCAnV2ViR0xTaGFkZXInKTsKK3Nob3VsZFRocm93V2l0aE5ldyh3aW5kb3cuV2ViR0xU
ZXh0dXJlLCAnV2ViR0xUZXh0dXJlJyk7CitzaG91bGRUaHJvd1dpdGhOZXcod2luZG93LldlYkdM
VW5pZm9ybUxvY2F0aW9uLCAnV2ViR0xVbmlmb3JtTG9jYXRpb24nKTsKK3Nob3VsZFRocm93V2l0
aE5ldyh3aW5kb3cuV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQsICdXZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdCcpOworaWYgKGNvbnRleHRWZXJzaW9uID4gMSkgeworICBzaG91bGRUaHJvd1dp
dGhOZXcod2luZG93LldlYkdMUXVlcnksICdXZWJHTFF1ZXJ5Jyk7CisgIHNob3VsZFRocm93V2l0
aE5ldyh3aW5kb3cuV2ViR0xTYW1wbGVyLCAnV2ViR0xTYW1wbGVyJyk7CisgIHNob3VsZFRocm93
V2l0aE5ldyh3aW5kb3cuV2ViR0xTeW5jLCAnV2ViR0xTeW5jJyk7CisgIHNob3VsZFRocm93V2l0
aE5ldyh3aW5kb3cuV2ViR0xUcmFuc2Zvcm1GZWVkYmFjaywgJ1dlYkdMVHJhbnNmb3JtRmVlZGJh
Y2snKTsKKyAgc2hvdWxkVGhyb3dXaXRoTmV3KHdpbmRvdy5XZWJHTFZlcnRleEFycmF5T2JqZWN0
LCAnV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCcpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2pzL3Rlc3RzL2l0ZXJhYmxlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9pdGVyYWJsZS10ZXN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ1ZTUwOWY1MGEzMTE3ZGZkNTg5MmM5YjdmMmY3NDI5YTUxODY4YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9q
cy90ZXN0cy9pdGVyYWJsZS10ZXN0LmpzCkBAIC0wLDAgKzEsMTgzIEBACisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCitJdGVyYWJsZVRlc3QgPSAoZnVuY3Rpb24oKSB7
CisKKyAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisgIGZ1bmN0aW9uIHJ1bih0ZXN0LCBp
dGVyYXRpb25zKSB7CisgICAgdmFyIHRhcmdldCA9IGl0ZXJhdGlvbnMgfHwgMTA7CisgICAgdmFy
IGNvdW50ID0gMDsKKworICAgIGZ1bmN0aW9uIGRvTmV4dFRlc3QoKSB7CisgICAgICArK2NvdW50
OworICAgICAgZGVidWcoIlRlc3QgIiArIGNvdW50ICsgIiBvZiAiICsgdGFyZ2V0KTsKKyAgICAg
IHZhciBzdWNjZXNzID0gdGVzdCgpOworICAgICAgaWYgKGNvdW50IDwgdGFyZ2V0ICYmIHN1Y2Nl
c3MgIT09IGZhbHNlKSB7CisgICAgICAgIHd0dS5kaXNwYXRjaFByb21pc2UoZG9OZXh0VGVzdCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICB9CisgICAgfQor
CisgICAgZG9OZXh0VGVzdCgpOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIGNhbnZhcyBhbmQgYSB0
ZXh0dXJlIHRoZW4gZXhpdHMuIFRoZXJlIGFyZQorICAvLyBubyByZWZlcmVuY2VzIHRvIGVpdGhl
ciBzbyBib3RoIHNob3VsZCBiZSBnYXJiYWdlIGNvbGxlY3RlZC4KKyAgZnVuY3Rpb24gY3JlYXRl
Q29udGV4dENyZWF0aW9uQW5kRGVzdHJ1Y3Rpb25UZXN0KCkgeworICAgIHZhciB0ZXh0dXJlU2l6
ZSA9IG51bGw7CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAvLyBUaGlzIGlzIHNhZmUg
Zm9yIGFueSBkZXZpY2UuIFNlZSBkcmF3aW5nQnVmZmVyV2lkdGggaW4gc3BlYy4KKyAgICAgIGNh
bnZhcy53aWR0aCA9IDIwNDg7CisgICAgICBjYW52YXMuaGVpZ2h0ID0gMjA0ODsKKyAgICAgIHZh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKKyAgICAgIGlmICh0ZXh0dXJlU2l6
ZSA9PT0gbnVsbCkgeworICAgICAgICB2YXIgbWF4VGV4dHVyZVNpemUgPSBnbC5nZXRQYXJhbWV0
ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSk7CisgICAgICAgIHRleHR1cmVTaXplID0gTWF0aC5taW4o
MTAyNCwgbWF4VGV4dHVyZVNpemUpOworICAgICAgfQorICAgICAgdmFyIHRleCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Cisg
ICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHRleHR1cmVTaXpl
LCB0ZXh0dXJlU2l6ZSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwKKyAgICAgICAgICAg
ICAgICAgICAgbnVsbCk7CisgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVy
cm9ycyIpOworCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworICB9CisKKyAgLy8gQ3JlYXRl
cyBtYW55IHNtYWxsIGNhbnZhc2VzIGFuZCBhdHRhY2hlcyB0aGVtIHRvIHRoZSBET00uCisgIC8v
IFRoaXMgdGVzdHMgYW4gZWRnZSBjYXNlIGRpc2NvdmVyZWQgaW4gQ2hyb21lIHdoZXJlIHRoZSBj
cmVhdGlvbiBvZiBtdWx0aXBsZQorICAvLyBXZWJHTCBjb250ZXh0cyB3b3VsZCBldmVudHVhbGx5
IGxlYWQgdG8gY29udGV4dCBjcmVhdGlvbiBmYWlsdXJlLgorICAvLyAoY3JidWcuY29tLzMxOTI2
NSkgVGhlIHRlc3QgZG9lcyBub3QgcmVxdWlyZSB0aGF0IG9sZCBjb250ZXh0cyByZW1haW4KKyAg
Ly8gdmFsaWQsIG9ubHkgdGhhdCBuZXcgb25lcyBjYW4gYmUgY3JlYXRlZC4KKyAgZnVuY3Rpb24g
Y3JlYXRlQ29udGV4dENyZWF0aW9uVGVzdCgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAg
ICBjYW52YXMud2lkdGggPSAxOworICAgICAgY2FudmFzLmhlaWdodCA9IDE7CisKKyAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKworICAgICAgdmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgICAgaWYgKCFnbCkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICB9CisKKyAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwor
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8g
ZXJyb3JzIik7CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIH07CisgIH0KKworICAvLyBEcmF3
cyByZWN0YW5nbGUgb24gYSBwYXNzZWQgY2FudmFzIHdpdGggcHJlc2VydmVEcmF3aW5nQnVmZmVy
CisgIC8vIGFuZCBhbnRpYWxpYXNpbmcgT04sIHRlc3RzIHJlY3QgY29sb3Igb24gZXZlcnkgaXRl
cmF0aW9uLgorICBmdW5jdGlvbiBjcmVhdGVNdWx0aXNhbXBsZUNvcnJ1cHRpb25UZXN0KGdsKSB7
CisgICAgdmFyIGxhc3RDb250ZXh0ID0gbnVsbDsKKyAgICAvLyBBbGxvY2F0ZSBhIHJlYWQgYmFj
ayBidWZmZXIgaW4gYWR2YW5jZSBhbmQgcmV1c2UgaXQgZm9yIGFsbCBpdGVyYXRpb25zCisgICAg
Ly8gdG8gYXZvaWQgbWVtb3J5IGlzc3VlcyBiZWNhdXNlIG9mIGxhdGUgZ2FyYmFnZSBjb2xsZWN0
aW9uLgorICAgIHZhciByZWFkQmFja0J1ZiA9IG5ldyBVaW50OEFycmF5KGdsLmNhbnZhcy53aWR0
aCAqIGdsLmNhbnZhcy5oZWlnaHQgKiA0KTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRT
dGFuZGFyZFByb2dyYW0oZ2wpOworICAgIHZhciB1bmlmb3JtcyA9IHd0dS5nZXRVbmlmb3JtTWFw
KGdsLCBwcm9ncmFtKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgZ2wuY2xl
YXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZF
Ul9CSVQpOworCisgICAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwyLjUsMCwgMS41
LDEuNSwwLCAyLjUsMS41LDAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7CisgICAgZ2wudmVydGV4QXR0cmliM2YoMSwgMC4wLCAwLjAsIDEu
MCk7CisKKyAgICB2YXIgaWRlbnRpdHlNYXQgPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgIDEs
IDAsIDAsIDAsCisgICAgICAwLCAxLCAwLCAwLAorICAgICAgMCwgMCwgMSwgMCwKKyAgICAgIDAs
IDAsIDAsIDEKKyAgICBdKTsKKworICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYodW5pZm9ybXMudV9t
b2RlbFZpZXdQcm9qTWF0cml4LmxvY2F0aW9uLCBmYWxzZSwgaWRlbnRpdHlNYXQpOworCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgIHZhciBnbDIgPSB3dHUuY3JlYXRlM0RDb250ZXh0KG51
bGwsIHthbnRpYWxpYXM6IHRydWV9KTsKKworICAgICAgZ2wyLmNhbnZhcy53aWR0aCA9IGdsMi5j
YW52YXMuaGVpZ2h0ID0gMTAyNDsKKyAgICAgIGdsMi5jYW52YXMuc3R5bGUud2lkdGggPSBnbDIu
Y2FudmFzLnN0eWxlLmhlaWdodCA9ICIxcHgiOworICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChnbDIuY2FudmFzKTsKKworICAgICAgZ2wyLmNsZWFyQ29sb3IoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICAgIGdsMi5jbGVhcihnbDIuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgIGlm
KGxhc3RDb250ZXh0KSB7CisgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDMpOworICAgICAgICAgIHZhciBtc2cgPSAiQ2FudmFzIHNob3VsZCBiZSByZWQiOworICAgICAg
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3RDb2xvcihnbCwKKyAgICAgICAgICAgICAgMCwgMCwgZ2wu
Y2FudmFzLndpZHRoLCBnbC5jYW52YXMuaGVpZ2h0LAorICAgICAgICAgICAgICBbMjU1LCAwLCAw
LCAyNTVdLCBudWxsLAorICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQobXNnKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgZGVidWcs
IHJlYWRCYWNrQnVmKTsKKyAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxhc3RD
b250ZXh0LmNhbnZhcyk7CisgICAgICB9CisKKyAgICAgIGxhc3RDb250ZXh0ID0gZ2wyOworICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8vIEZpcnN0IHBhc3MgZG9lcyBpbml0aWFs
aXphdGlvbgorICAgIHRlc3QoKTsKKworICAgIHJldHVybiB0ZXN0OworICB9CisKKyAgLy8gRHJh
d3MgcmVwZWF0ZWRseSB0byBhIGxhcmdlIGNhbnZhcyB3aXRoIHByZXNlcnZlRHJhd2luZ0J1ZmZl
ciBlbmFibGVkIHRvCisgIC8vIHRyeSBhbmQgcHJvdm9rZSBhIGNvbnRleHQgbG9zcy4KKyAgZnVu
Y3Rpb24gY3JlYXRlUHJlc2VydmVEcmF3aW5nQnVmZmVyTGVha1Rlc3QoZ2wpIHsKKyAgICB2YXIg
Y29udGV4dEFjdGl2ZSA9IHRydWU7CisgICAgZ2wuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndl
YmdsY29udGV4dGxvc3QiLCAoKSA9PiB7CisgICAgICB0ZXN0RmFpbGVkKCJDb250ZXh0IHdhcyBs
b3N0Iik7CisgICAgICBjb250ZXh0QWN0aXZlID0gZmFsc2U7CisgICAgfSk7CisKKyAgICBmdW5j
dGlvbiB0ZXN0KCkgeworICAgICAgdmFyIHggPSBNYXRoLnJhbmRvbSgpICogZ2wuZHJhd2luZ0J1
ZmZlcldpZHRoOworICAgICAgdmFyIHkgPSBNYXRoLnJhbmRvbSgpICogZ2wuZHJhd2luZ0J1ZmZl
ckhlaWdodDsKKyAgICAgIHZhciB3aWR0aCA9IE1hdGgucmFuZG9tKCkgKiAoZ2wuZHJhd2luZ0J1
ZmZlcldpZHRoIC0geCk7CisgICAgICB2YXIgaGVpZ2h0ID0gTWF0aC5yYW5kb20oKSAqIChnbC5k
cmF3aW5nQnVmZmVySGVpZ2h0IC0geSk7CisKKyAgICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RF
U1QpOworICAgICAgZ2wuc2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgIGdsLmNs
ZWFyQ29sb3IoTWF0aC5yYW5kb20oKSwgTWF0aC5yYW5kb20oKSwgTWF0aC5yYW5kb20oKSwgMS4w
KTsKKyAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIik7CisKKyAg
ICAgIHJldHVybiBjb250ZXh0QWN0aXZlOworICAgIH07CisKKyAgICByZXR1cm4gdGVzdDsKKyAg
fQorCisgIHJldHVybiB7CisgICAgcnVuOiBydW4sCisKKyAgICBjcmVhdGVDb250ZXh0Q3JlYXRp
b25BbmREZXN0cnVjdGlvblRlc3Q6IGNyZWF0ZUNvbnRleHRDcmVhdGlvbkFuZERlc3RydWN0aW9u
VGVzdCwKKyAgICBjcmVhdGVDb250ZXh0Q3JlYXRpb25UZXN0OiBjcmVhdGVDb250ZXh0Q3JlYXRp
b25UZXN0LAorICAgIGNyZWF0ZU11bHRpc2FtcGxlQ29ycnVwdGlvblRlc3Q6IGNyZWF0ZU11bHRp
c2FtcGxlQ29ycnVwdGlvblRlc3QsCisgICAgY3JlYXRlUHJlc2VydmVEcmF3aW5nQnVmZmVyTGVh
a1Rlc3Q6IGNyZWF0ZVByZXNlcnZlRHJhd2luZ0J1ZmZlckxlYWtUZXN0CisgIH07CisKK30pKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9qcy90ZXN0cy9saW5lLXJlbmRlcmluZy1xdWFsaXR5LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvbGluZS1yZW5kZXJpbmctcXVhbGl0
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZmE3YzAyMTY3NDY2NTVjZTEzNjJhNzM0MzNkNDhkMmIzNmIxYWQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvanMvdGVzdHMvbGluZS1yZW5kZXJpbmctcXVhbGl0eS5qcwpAQCAtMCwwICsxLDE2
MyBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisndXNlIHN0
cmljdCc7CitkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCBsaW5lcywgYm90aCBhbGlhc2VkIGFu
ZCBhbnRpYWxpYXNlZCwgaGF2ZSBhY2NlcHRhYmxlIHF1YWxpdHkuIik7CisKK2xldCB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK2xldCBnbDsKKworbGV0IGFhX2ZibzsKKworZnVuY3Rpb24gc2V0dXBX
ZWJHTDFUZXN0KGNhbnZhc0lkLCB1c2VBbnRpYWxpYXNpbmcpIHsKKyAgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KGNhbnZhc0lkLCB7IGFudGlhbGlhczogdXNlQW50aWFsaWFzaW5nIH0sIGNvbnRl
eHRWZXJzaW9uKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91
bGQgYmUgbm8gZXJyb3JzIGR1cmluZyBXZWJHTCAxLjAgc2V0dXAiKTsKK30KKworZnVuY3Rpb24g
c2V0dXBXZWJHTDJUZXN0KGNhbnZhc0lkLCB1c2VBbnRpYWxpYXNpbmcpIHsKKyAgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KGNhbnZhc0lkLCB7IGFudGlhbGlhczogZmFsc2UgfSwgY29udGV4dFZl
cnNpb24pOworICAvLyBJbiBXZWJHTCAyLjAsIHdlIGFsd2F5cyBhbGxvY2F0ZSB0aGUgYmFjayBi
dWZmZXIgd2l0aG91dAorICAvLyBhbnRpYWxpYXNpbmcuIFRoZSBvbmx5IHF1ZXN0aW9uIGlzIHdo
ZXRoZXIgd2UgYWxsb2NhdGUgYQorICAvLyBmcmFtZWJ1ZmZlciB3aXRoIGEgbXVsdGlzYW1wbGVk
IHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50LgorICBhYV9mYm8gPSBudWxsOworICBpZiAodXNlQW50
aWFsaWFzaW5nKSB7CisgICAgYWFfZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGFhX2Zibyk7CisgICAgbGV0IHJiID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIHJiKTsKKyAgICBsZXQgc3VwcG9ydGVkID0gZ2wuZ2V0SW50ZXJuYWxmb3JtYXRQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBOCwgZ2wuU0FNUExFUyk7CisgICAgLy8g
UHJlZmVyIDQsIHRoZW4gOCwgdGhlbiBtYXguCisgICAgbGV0IHByZWZlcnJlZCA9IFs0LCA4XTsK
KyAgICBsZXQgYWxsb2NhdGVkID0gZmFsc2U7CisgICAgZm9yIChsZXQgdmFsdWUgb2YgcHJlZmVy
cmVkKSB7CisgICAgICBpZiAoc3VwcG9ydGVkLmluZGV4T2YodmFsdWUpID49IDApIHsKKyAgICAg
ICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGdsLlJFTkRFUkJVRkZFUiwgdmFs
dWUsIGdsLlJHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2wuZHJhd2luZ0J1ZmZlcldpZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0KTsKKyAgICAgICAg
YWxsb2NhdGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGlm
ICghYWxsb2NhdGVkKSB7CisgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
Z2wuUkVOREVSQlVGRkVSLCBzdXBwb3J0ZWRbc3VwcG9ydGVkLmxlbmd0aCAtIDFdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlJHQkE4LCBnbC5kcmF3aW5nQnVm
ZmVyV2lkdGgsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOworICAgIH0KKyAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgcmIpOworICB9CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBkdXJpbmcgV2ViR0wgMi4wIHNldHVwIik7Cit9
CisKK2Z1bmN0aW9uIHNldHVwTGluZXMoKSB7CisgIGxldCBwcm9nID0gd3R1LnNldHVwU2ltcGxl
Q29sb3JQcm9ncmFtKGdsLCAwKTsKKyAgbGV0IGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9nLCAndV9jb2xvcicpOworICBpZiAobG9jID09IG51bGwpIHsKKyAgICB0ZXN0RmFpbGVkKCdG
YWlsZWQgdG8gZmV0Y2ggY29sb3IgdW5pZm9ybScpOworICB9CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiQWZ0ZXIgc2V0dXAgb2YgbGluZSBwcm9ncmFtIik7CisgIGds
LnVuaWZvcm00Zihsb2MsIDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgIGxldCBidWZmZXIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKKyAgbGV0IHNjYWxlID0gMC41OworICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoWworICAgIC1zY2FsZSwgLXNjYWxlLCAwLjAsIDEuMCwKKyAgICAtc2Nh
bGUsIHNjYWxlLCAwLjAsIDEuMCwKKyAgICBzY2FsZSwgc2NhbGUsIDAuMCwgMS4wLAorICAgIHNj
YWxlLCAtc2NhbGUsIDAuMCwgMS4wLAorICAgIC1zY2FsZSwgLXNjYWxlLCAwLjAsIDEuMCwKKyAg
XSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJBZnRlciBzZXR1cCBvZiBidWZmZXIiKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigw
LCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSgwKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJBZnRlciBzZXR1
cCBvZiBhdHRyaWJ1dGUgYXJyYXkiKTsKK30KKworZnVuY3Rpb24gcmVuZGVyTGluZXMoY29udGV4
dFZlcnNpb24sIHVzZUFudGlhbGlhc2luZykgeworICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAw
LjUsIDEuMCk7CisgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICBnbC5kcmF3QXJy
YXlzKGdsLkxJTkVfU1RSSVAsIDAsIDUpOworICBpZiAoY29udGV4dFZlcnNpb24gPT0gMiAmJiB1
c2VBbnRpYWxpYXNpbmcpIHsKKyAgICAvLyBCbGl0IGFhX2ZibyBpbnRvIHRoZSByZWFsIGJhY2sg
YnVmZmVyLgorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5SRUFEX0ZSQU1FQlVGRkVSLCBhYV9m
Ym8pOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5EUkFXX0ZSQU1FQlVGRkVSLCBudWxsKTsK
KyAgICBsZXQgdyA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aDsKKyAgICBsZXQgaCA9IGdsLmRyYXdp
bmdCdWZmZXJIZWlnaHQ7CisgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHcsIGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIHcsIGgsCisgICAgICAgICAgICAgICAgICAgICAgIGds
LkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgIH0KK30KKworZnVuY3Rpb24gcGl4ZWxBYm92ZVRocmVz
aG9sZChhcnIsIHBpeGVsSW5kZXgsIHRocmVzaG9sZCkgeworICByZXR1cm4gKGFycls0ICogcGl4
ZWxJbmRleCArIDBdID49IHRocmVzaG9sZCAmJgorICAgICAgICAgIGFycls0ICogcGl4ZWxJbmRl
eCArIDFdID49IHRocmVzaG9sZCAmJgorICAgICAgICAgIGFycls0ICogcGl4ZWxJbmRleCArIDJd
ID49IHRocmVzaG9sZCAmJgorICAgICAgICAgIGFycls0ICogcGl4ZWxJbmRleCArIDNdID49IHRo
cmVzaG9sZCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTGluZShhcnIsIHRocmVzaG9sZCwgZGlyZWN0
aW9uKSB7CisgIC8vIENvdW50IG51bWJlciBvZiBjcm9zc2luZ3MgZnJvbSBiZWxvdyB0aHJlc2hv
bGQgdG8gYWJvdmUgKG9yIGVxdWFsCisgIC8vIHRvKSB0aHJlc2hvbGQuIE11c3QgYmUgZXF1YWwg
dG8gMi4KKworICBsZXQgbnVtUGl4ZWxzID0gYXJyLmxlbmd0aCAvIDQ7CisgIGxldCBudW1VcENy
b3NzaW5ncyA9IDA7CisgIGxldCBudW1Eb3duQ3Jvc3NpbmdzID0gMDsKKyAgZm9yIChsZXQgaW5k
ZXggPSAwOyBpbmRleCA8IG51bVBpeGVscyAtIDE7ICsraW5kZXgpIHsKKyAgICBsZXQgY3VyUGl4
ZWwgPSBwaXhlbEFib3ZlVGhyZXNob2xkKGFyciwgaW5kZXgsIHRocmVzaG9sZCk7CisgICAgbGV0
IG5leHRQaXhlbCA9IHBpeGVsQWJvdmVUaHJlc2hvbGQoYXJyLCBpbmRleCArIDEsIHRocmVzaG9s
ZCk7CisgICAgaWYgKCFjdXJQaXhlbCAmJiBuZXh0UGl4ZWwpIHsKKyAgICAgICsrbnVtVXBDcm9z
c2luZ3M7CisgICAgfSBlbHNlIGlmIChjdXJQaXhlbCAmJiAhbmV4dFBpeGVsKSB7CisgICAgICAr
K251bURvd25Dcm9zc2luZ3M7CisgICAgfQorICB9CisgIGlmIChudW1VcENyb3NzaW5ncyAhPSBu
dW1Eb3duQ3Jvc3NpbmdzKSB7CisgICAgdGVzdEZhaWxlZCgnRm91bmQgZGlmZmVyaW5nIG51bWJl
cnMgb2YgdXAtPmRvd24gYW5kIGRvd24tPnVwIHRyYW5zaXRpb25zJyk7CisgIH0KKyAgaWYgKG51
bVVwQ3Jvc3NpbmdzID09IDIpIHsKKyAgICB0ZXN0UGFzc2VkKCdGb3VuZCAyIGxpbmVzLCBsb29r
aW5nIGluIHRoZSAnICsgZGlyZWN0aW9uICsgJyBkaXJlY3Rpb24nKTsKKyAgfSBlbHNlIHsKKyAg
ICB0ZXN0RmFpbGVkKCdGb3VuZCAnICsgbnVtVXBDcm9zc2luZ3MgKyAnIGxpbmVzLCBsb29raW5n
IGluIHRoZSAnICsKKyAgICAgICAgICAgICAgIGRpcmVjdGlvbiArICcgZGlyZWN0aW9uLCBleHBl
Y3RlZCAyJyk7CisgIH0KK30KKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkgeworICAvLyBDaGVj
ayB0aGUgbWlkZGxlIGhvcml6b250YWwgYW5kIG1pZGRsZSB2ZXJ0aWNhbCBsaW5lIG9mIHRoZSBj
YW52YXMuCisgIGxldCB3ID0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoOworICBsZXQgaCA9IGdsLmRy
YXdpbmdCdWZmZXJIZWlnaHQ7CisgIGxldCB0ID0gMTAwOworICBsZXQgYXJyID0gbmV3IFVpbnQ4
QXJyYXkoNCAqIHcpOworICBnbC5yZWFkUGl4ZWxzKDAsIE1hdGguZmxvb3IoaCAvIDIpLAorICAg
ICAgICAgICAgICAgIHcsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycik7CisgIGNo
ZWNrTGluZShhcnIsIHQsICdob3Jpem9udGFsJyk7CisgIGFyciA9IG5ldyBVaW50OEFycmF5KDQg
KiBoKTsKKyAgZ2wucmVhZFBpeGVscyhNYXRoLmZsb29yKHcgLyAyKSwgMCwKKyAgICAgICAgICAg
ICAgICAxLCBoLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBhcnIpOworICBjaGVja0xpbmUo
YXJyLCB0LCAndmVydGljYWwnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdChjb250ZXh0VmVyc2lv
biwgY2FudmFzSWQsIHVzZUFudGlhbGlhc2luZykgeworICBzd2l0Y2ggKGNvbnRleHRWZXJzaW9u
KSB7CisgICAgY2FzZSAxOiB7CisgICAgICBzZXR1cFdlYkdMMVRlc3QoY2FudmFzSWQsIHVzZUFu
dGlhbGlhc2luZyk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSAyOiB7CisgICAgICBz
ZXR1cFdlYkdMMlRlc3QoY2FudmFzSWQsIHVzZUFudGlhbGlhc2luZyk7CisgICAgfQorICB9Cisg
IHNldHVwTGluZXMoKTsKKyAgcmVuZGVyTGluZXMoY29udGV4dFZlcnNpb24sIHVzZUFudGlhbGlh
c2luZyk7CisgIGNoZWNrUmVzdWx0cygpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAg
cnVuVGVzdChjb250ZXh0VmVyc2lvbiwgJ3Rlc3RiZWQnLCBmYWxzZSk7CisgIHJ1blRlc3QoY29u
dGV4dFZlcnNpb24sICd0ZXN0YmVkMicsIHRydWUpOworfQorCitydW5UZXN0cygpOworbGV0IHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9uby1vdmVyLW9wdGltaXphdGlvbnMt
b24tdW5pZm9ybS1hcnJheS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2pzL3Rlc3RzL25vLW92ZXItb3B0aW1pemF0aW9ucy1vbi11bmlmb3JtLWFycmF5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEyMDJiNzg2OGNkZGVjZTYzNGNkNjFkYTY5NjM1OTM2MDViZmQ0OGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy9uby1vdmVyLW9wdGltaXphdGlvbnMtb24tdW5pZm9ybS1hcnJheS5q
cwpAQCAtMCwwICsxLDI0NyBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworTm9PdmVyT3B0aW1pemVPblVuaWZvcm1BcnJheVRlc3RlciA9IChmdW5jdGlvbigpewor
Cit2YXIgdnNoYWRlciA9IFsKKyAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsiLAorICAg
ICJ2b2lkIG1haW4oKSIsCisgICAgInsiLAorICAgICIgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0
aW9uOyIsCisgICAgIn0iCitdLmpvaW4oJ1xuJyk7CisKK3ZhciBmc2hhZGVyX21heCA9IFsKKyAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IiwKKyAgICAidW5pZm9ybSB2ZWM0IGNvbG9yYVsk
KG1heFVuaWZvcm1WZWN0b3JzKV07IiwKKyAgICAidm9pZCBtYWluKCkiLAorICAgICJ7IiwKKyAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3JhWyQodXNlZFVuaWZvcm1WZWN0b3IpXSk7
IiwKKyAgICAifSIKK10uam9pbignXG4nKTsKKwordmFyIGZzaGFkZXJfbWF4X2FiX2FiID0gWwor
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsiLAorICAgICJ1bmlmb3JtIHZlYzQgJChkZWNs
MSk7IiwKKyAgICAidW5pZm9ybSB2ZWM0ICQoZGVjbDIpOyIsCisgICAgInZvaWQgbWFpbigpIiwK
KyAgICAieyIsCisgICAgImdsX0ZyYWdDb2xvciA9IHZlYzQoJCh1c2FnZTEpICsgJCh1c2FnZTIp
KTsiLAorICAgICJ9IgorXS5qb2luKCdcbicpOworCisvLyBNYXhJbnQzMiBpcyAyXjMyLTEuIFdl
IG5lZWQgKzEgb2YgdGhhdCB0byB0ZXN0IG92ZXJmbG93IGNvbmRpdGlvbnMKK3ZhciBNYXhJbnQz
MlBsdXNPbmUgPSA0Mjk0OTY3Mjk2OworCitmdW5jdGlvbiBzZXR1cFRlc3RzKGdsKSB7CisgICAg
dmFyIHRlc3RzID0gW107CisgICAgdmFyIG1heFVuaWZvcm1WZWN0b3JzID0gZ2wuZ2V0UGFyYW1l
dGVyKGdsLk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMpOworCisgICAgLy8gVGhpcyB0ZXN0
IGlzIHRvIHRlc3QgZHJpdmVycyB0aGUgaGF2ZSBidWdzIHJlbGF0ZWQgdG8gb3B0aW1pemluZwor
ICAgIC8vIGFuIGFycmF5IG9mIHVuaWZvcm1zIHdoZW4gb25seSAxIG9mIHRob3NlIHVuaWZvcm1z
IGlzIHVzZWQuCisgICAgdGVzdHMucHVzaCh7CisgICAgICAgIGRlc2M6ICJ1c2luZyBsYXN0IGVs
ZW1lbnQiLAorICAgICAgICBtYXhVbmlmb3JtVmVjdG9yczogbWF4VW5pZm9ybVZlY3RvcnMsCisg
ICAgICAgIHVzZWRVbmlmb3JtVmVjdG9yOiBtYXhVbmlmb3JtVmVjdG9ycyAtIDEsCisgICAgICAg
IHNoYWRlcjogImZzaGFkZXItbWF4IiwKKyAgICAgICAgY29sb3I6IFswLCAxLCAwLCAxXSwKKyAg
ICAgICAgYXJyYXlOYW1lOiAiY29sb3JhIiwKKyAgICAgICAgZXh0cmFOYW1lOiAiY29sb3JiIiwK
KyAgICB9KTsKKyAgICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgZGVzYzogInVzaW5nIGZpcnN0IGVs
ZW1lbnQiLAorICAgICAgICBtYXhVbmlmb3JtVmVjdG9yczogbWF4VW5pZm9ybVZlY3RvcnMsCisg
ICAgICAgIHVzZWRVbmlmb3JtVmVjdG9yOiAwLAorICAgICAgICBzaGFkZXI6ICJmc2hhZGVyLW1h
eCIsCisgICAgICAgIGNvbG9yOiBbMCwgMSwgMCwgMV0sCisgICAgICAgIGFycmF5TmFtZTogImNv
bG9yYSIsCisgICAgICAgIGV4dHJhTmFtZTogImNvbG9yYiIsCisgICAgfSk7CisKKyAgICAvLyBH
ZW5lcmF0ZSB0ZXN0IHNoYWRlcnMuIFdlJ3JlIHRyeWluZyB0byBmb3JjZSB0aGUgZHJpdmVyIHRv
CisgICAgLy8gb3ZlcmZsb3cgZnJvbSAxIGFycmF5IGludG8gdGhlIG5leHQgaWYgaXQgb3B0aW1p
emVzLiBTbyBmb3IgZXhhbXBsZSBpZiBpdCB3YXMgQworICAgIC8vCisgICAgLy8gICBpbnQgYmln
WzRdOworICAgIC8vICAgaW50IGxpdHRsZVsxXTsKKyAgICAvLyAgIGJpZ1s1XSA9IDEyNDsKKyAg
ICAvLworICAgIC8vIFdvdWxkIGVuZCB1cCBzZXR0aW5nIGxpdHRsZVswXSBpbnN0ZWFkIG9mIGJp
Zy4gU29tZSBkcml2ZXJzIG9wdGltaXplCisgICAgLy8gd2hlcmUgaWYgeW91IG9ubHkgdXNlIHNh
eSAnYmlnWzNdJyBpdCB3aWxsIGFjdHVhbGx5IG9ubHkgYWxsb2NhdGUganVzdCAxIGVsZW1lbnQK
KyAgICAvLyBmb3IgYmlnLgorICAgIC8vCisgICAgLy8gQnV0LCBzb21lIGRyaXZlcnMgaGF2ZSBh
IGJ1ZyB3aGVyZSB0aGUgZmFjdCB0aGF0IHRoZXkgb3B0aW1pemVkIGJpZyB0byAxIGVsZW1lbnQK
KyAgICAvLyBkb2VzIG5vdCBnZXQgcGFzc2VkIGRvd24gdG8gZ2xVbmlmb3JtIHNvIHdoZW4gc2V0
dGluZyB0aGUgdW5pZm9ybSAnYmlnWzNdJyB0aGV5CisgICAgLy8gb3ZlcndyaXRlIG1lbW9yeS4K
KyAgICAvLworICAgIC8vIElmIHRoZSBkcml2ZXIgY3Jhc2hlcywgeWVhLiBXZSBmb3VuZCBhIGJ1
Zy4gV2UgY2FuIGJsb2NrIHRoZSBkcml2ZXIuCisgICAgLy8gT3RoZXJ3aXNlIHdlIHRyeSB2YXJp
b3VzIGNvbWJpbmF0aW9ucyBzbyB0aGF0IHNldHRpbmcgJ2xpdHRsZVswXScgZmlyc3QKKyAgICAv
LyBhbmQgdGhlbiBzZXR0aW5nIGFsbCBlbGVtZW50cyBvZiAnYmlnJyB3ZSBob3BlIGl0IHdpbGwg
b3ZlcndyaXRlICdsaXR0bGVbMF0nCisgICAgLy8gd2hpY2ggd2lsbCBzaG93IHRoZSBidWcgYW5k
IGFnYWluIHdlIGNhbiBibG9jayB0aGUgZHJpdmVyLgorICAgIC8vCisgICAgLy8gV2UgZG9uJ3Qg
a25vdyBob3cgdGhlIGRyaXZlciB3aWxsIG9yZGVyLCBpbiBtZW1vcnksIHRoZSB2YXJpb3VzIHVu
aWZvcm1zCisgICAgLy8gb3IgZm9yIHRoYXQgbWF0dGVyIHdlIGRvbid0IGV2ZW4ga25vdyBpZiB0
aGV5IHdpbGwgYmUgY29udGlndW91cyBpbiBtZW1vcnkKKyAgICAvLyBidXQgdG8gaG9wZWZ1bGx5
IGV4cG9zZSBhbnkgYnVncyB3ZSB0cnkgdmFyaW91cyBjb21iaW5hdGlvbnMuCisgICAgLy8KKyAg
ICAvLyAgICBJdCBjb3VsZCBiZSB0aGUgY29tcGlsZXIgb3JkZXJzIHVuaWZvcm1zIGFscGhhYmV0
aWNhbGx5LgorICAgIC8vICAgIEl0IGNvdWxkIGJlIGl0IG9yZGVycyB0aGVtIGluIG9yZGVyIG9m
IGRlY2xhcmF0aW9uLgorICAgIC8vICAgIEl0IGNvdWxkIGJlIGl0IG9yZGVycyB0aGVtIGluIG9y
ZGVyIG9mIHVzYWdlLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyB0ZXN0IHVzaW5nIG9ubHkgZmly
c3QgZWxlbWVudCBvZiBiaWcgb3IganVzdCB0aGUgbGFzdCBlbGVtZW50IG9mIGJpZy4KKyAgICAv
LworICAgIGZvciAodmFyIG5hbWVPcmRlciA9IDA7IG5hbWVPcmRlciA8IDI7ICsrbmFtZU9yZGVy
KSB7CisgICAgICAgIHZhciBuYW1lMSA9IG5hbWVPcmRlciA/ICJjb2xvcmEiIDogImNvbG9yYiI7
CisgICAgICAgIHZhciBuYW1lMiA9IG5hbWVPcmRlciA/ICJjb2xvcmIiIDogImNvbG9yYSI7Cisg
ICAgICAgIGZvciAodmFyIGxhc3QgPSAwOyBsYXN0IDwgMjsgKytsYXN0KSB7CisgICAgICAgICAg
ICB2YXIgdXNlZFVuaWZvcm1WZWN0b3IgPSBsYXN0ID8gbWF4VW5pZm9ybVZlY3RvcnMgLSAyIDog
MDsKKyAgICAgICAgICAgIGZvciAodmFyIGRlY2xPcmRlciA9IDA7IGRlY2xPcmRlciA8IDI7ICsr
ZGVjbE9yZGVyKSB7CisgICAgICAgICAgICAgICAgdmFyIGJpZ05hbWUgICAgPSBkZWNsT3JkZXIg
PyBuYW1lMSA6IG5hbWUyOworICAgICAgICAgICAgICAgIHZhciBsaXR0bGVOYW1lID0gZGVjbE9y
ZGVyID8gbmFtZTIgOiBuYW1lMTsKKyAgICAgICAgICAgICAgICB2YXIgZGVjbDEgPSBiaWdOYW1l
ICsgIlsiICsgKG1heFVuaWZvcm1WZWN0b3JzIC0gMSkgKyAiXSI7CisgICAgICAgICAgICAgICAg
dmFyIGRlY2wyID0gbGl0dGxlTmFtZSArICJbMV0iOworICAgICAgICAgICAgICAgIGlmIChkZWNs
T3JkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBkZWNsMTsKKyAgICAgICAgICAg
ICAgICAgICAgZGVjbDEgPSBkZWNsMjsKKyAgICAgICAgICAgICAgICAgICAgZGVjbDIgPSB0Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKHZhciB1c2FnZU9yZGVyID0g
MDsgdXNhZ2VPcmRlciA8IDI7ICsrdXNhZ2VPcmRlcikgeworICAgICAgICAgICAgICAgICAgICB2
YXIgdXNhZ2UxID0gYmlnTmFtZSArICJbIiArIHVzZWRVbmlmb3JtVmVjdG9yICsgIl0iOworICAg
ICAgICAgICAgICAgICAgICB2YXIgdXNhZ2UyID0gbGl0dGxlTmFtZSArICJbMF0iOworICAgICAg
ICAgICAgICAgICAgICBpZiAodXNhZ2VPcmRlcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHQgPSB1c2FnZTE7CisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTEgPSB1c2FnZTI7
CisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTIgPSB0OworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHZhciBmU3JjID0gd3R1LnJlcGxhY2VQYXJhbXMoZnNo
YWRlcl9tYXhfYWJfYWIsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2wxOiBkZWNsMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2wyOiBkZWNsMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVzYWdlMTogdXNhZ2UxLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UyOiB1
c2FnZTIsCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB2YXIg
ZGVzYyA9ICJ0ZXN0aW5nOiAiICsgbmFtZTEgKyAiOiIgKyBuYW1lMiArICIgdXNpbmcgIiArIChs
YXN0ID8gImxhc3QiIDogImZpcnN0IikgKworICAgICAgICAgICAgICAgICAgICAgICAgIiBjcmVh
dGluZyB1bmlmb3JtcyAiICsgZGVjbDEgKyAiICIgKyBkZWNsMiArICIgYW5kIGFjY2Vzc2luZyAi
ICsgdXNhZ2UxICsgIiAiICsgdXNhZ2UyOworICAgICAgICAgICAgICAgICAgICB0ZXN0cy5wdXNo
KHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhVbmlmb3JtVmVjdG9yczogbWF4VW5pZm9ybVZlY3RvcnMgLSAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlZFVuaWZvcm1WZWN0b3I6IHVzZWRVbmlmb3JtVmVjdG9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBmU3JjLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29sb3I6IFswLCAwLCAwLCAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5
TmFtZTogYmlnTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhTmFtZTogbGl0dGxl
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0ZXN0czsKK307CisKK2Z1bmN0
aW9uIHRlc3RVbmlmb3JtT3B0aW1pemF0aW9uSXNzdWVzKHRlc3QpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcodGVzdC5kZXNjKTsKKyAgICB2YXIgZnNoYWRlciA9IHRlc3Quc291cmNlOwor
ICAgIGlmICghZnNoYWRlcikgeworICAgICAgICBmc2hhZGVyID0gd3R1LnJlcGxhY2VQYXJhbXMo
ZnNoYWRlcl9tYXgsIHRlc3QpOworICAgIH0KKworICAgIHZhciBjb25zb2xlRWxlbSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgd3R1LmFkZFNoYWRlclNvdXJjZSgK
KyAgICAgICAgY29uc29sZUVsZW0sICJ2ZXJ0ZXggc2hhZGVyIiwgdnNoYWRlcik7CisgICAgd3R1
LmFkZFNoYWRlclNvdXJjZSgKKyAgICAgICAgY29uc29sZUVsZW0sICJmcmFnbWVudCBzaGFkZXIi
LCBmc2hhZGVyKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRQcm9ncmFtKGdsLCB2c2hh
ZGVyLCBmc2hhZGVyKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgdmFyIGNv
bG9yYkxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIHRlc3QuZXh0cmFO
YW1lICsgIlswXSIpOworICAgIGlmIChjb2xvcmJMb2NhdGlvbikgeworICAgICAgICBnbC51bmlm
b3JtNGZ2KGNvbG9yYkxvY2F0aW9uLCBbMCwgMSwgMCwgMF0pOworICAgIH0KKworICAgIC8vIEVu
c3VyZSB0aGF0IHJlcXVlc3RpbmcgYW4gYXJyYXkgdW5pZm9ybSBwYXN0IE1heEludDMyUGx1c09u
ZSByZXR1cm5zIG5vIHVuaWZvcm0KKyAgICB2YXIgbmFtZU1heEludDMyUGx1c09uZSA9IHRlc3Qu
YXJyYXlOYW1lICsgIlsiICsgKHRlc3QudXNlZFVuaWZvcm1WZWN0b3IgKyBNYXhJbnQzMlBsdXNP
bmUpICsgIl0iOworICAgIGFzc2VydE1zZyhnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
bmFtZU1heEludDMyUGx1c09uZSkgPT09IG51bGwsCisgICAgICAgICJSZXF1ZXN0aW5nICIgKyBu
YW1lTWF4SW50MzJQbHVzT25lICsgIiB1bmlmb3JtIHNob3VsZCByZXR1cm4gYSBudWxsIHVuaWZv
cm0gbG9jYXRpb24iKTsKKworICAgIC8vIFNldCBqdXN0IHRoZSB1c2VkIHVuaWZvcm0KKyAgICB2
YXIgbmFtZSA9IHRlc3QuYXJyYXlOYW1lICsgIlsiICsgdGVzdC51c2VkVW5pZm9ybVZlY3RvciAr
ICJdIjsKKyAgICB2YXIgdW5pZm9ybUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sIG5hbWUpOworICAgIGdsLnVuaWZvcm00ZnYodW5pZm9ybUxvY2F0aW9uLCB0ZXN0LmNv
bG9yKTsKKyAgICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgMSk7CisgICAgd3R1LmNsZWFyQW5k
RHJhd0luZGV4ZWRRdWFkKGdsLCAxKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUs
IDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKTsKKworICAgIC8vIFNldCBhbGwgdGhlIHVudXNl
ZCB1bmlmb3JtcworICAgIHZhciBsb2NhdGlvbnMgPSBbXTsKKyAgICB2YXIgYWxsUmVxdWlyZWRV
bmlmb3JtTG9jYXRpb25zUXVlcnlhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlp
IDwgdGVzdC5tYXhVbmlmb3JtVmVjdG9yczsgKytpaSkgeworICAgICAgICB2YXIgbmFtZSA9IHRl
c3QuYXJyYXlOYW1lICsgIlsiICsgaWkgKyAiXSI7CisgICAgICAgIHZhciB1bmlmb3JtTG9jYXRp
b24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGxvY2F0
aW9ucy5wdXNoKHVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIGlmIChpaSA9PSB0ZXN0LnVzZWRV
bmlmb3JtVmVjdG9yKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBMb2NhdGlvbnMgPiB1c2VkVW5mb3JtVmVjdG9yIG1heSBub3QgZXhpc3QuCisgICAgICAg
IC8vIExvY2F0aW9ucyA8PSB1c2VkVW5pZm9ybVZlY3RvciBNVVNUIGV4aXN0LgorICAgICAgICBp
ZiAoaWkgPD0gdGVzdC51c2VkVW5pZm9ybVZlY3RvciAmJiAodW5pZm9ybUxvY2F0aW9uID09PSB1
bmRlZmluZWQgfHwgdW5pZm9ybUxvY2F0aW9uID09PSBudWxsKSkgeworICAgICAgICAgICAgYWxs
UmVxdWlyZWRVbmlmb3JtTG9jYXRpb25zUXVlcnlhYmxlID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgZ2wudW5pZm9ybTRmdih1bmlmb3JtTG9jYXRpb24sIFsxLCAwLCAwLCAxXSk7CisgICAg
fQorICAgIGlmIChhbGxSZXF1aXJlZFVuaWZvcm1Mb2NhdGlvbnNRdWVyeWFibGUpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiYWxsUmVxdWlyZWRVbmlmb3JtTG9jYXRpb25zUXVlcnlhYmxlIGlzIHRy
dWUuIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJhbGxSZXF1aXJl
ZFVuaWZvcm1Mb2NhdGlvbnNRdWVyeWFibGUgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4iKTsK
KyAgICB9CisgICAgdmFyIHBvc2l0aW9uTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3Jh
bSwgImFfcG9zaXRpb24iKTsKKyAgICB3dHUuc2V0dXBJbmRleGVkUXVhZChnbCwgMSwgcG9zaXRp
b25Mb2MpOworICAgIHd0dS5jbGVhckFuZERyYXdJbmRleGVkUXVhZChnbCwgMSk7CisgICAgd3R1
LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7CisK
KyAgICAvLyBDaGVjayB3ZSBjYW4gcmVhZCAmIHdyaXRlIGVhY2ggdW5pZm9ybS4KKyAgICAvLyBO
b3RlOiB1bmlmb3JtcyBwYXN0IHRlc3QudXNlZFVuaWZvcm1WZWN0b3IgbWlnaHQgbm90IGV4aXN0
LgorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Lm1heFVuaWZvcm1WZWN0b3JzOyArK2lp
KSB7CisgICAgICAgIGdsLnVuaWZvcm00ZnYobG9jYXRpb25zW2lpXSwgW2lpICsgNCwgaWkgKyAy
LCBpaSArIDMsIGlpICsgMV0pOworICAgIH0KKworICAgIHZhciBrRXBzaWxvbiA9IDAuMDE7Cisg
ICAgdmFyIGlzU2FtZSA9IGZ1bmN0aW9uKHYxLCB2MikgeworICAgICAgICByZXR1cm4gTWF0aC5h
YnModjEgLSB2MikgPCBrRXBzaWxvbjsKKyAgICB9OworCisgICAgZm9yICh2YXIgaWkgPSAwOyBp
aSA8IHRlc3QubWF4VW5pZm9ybVZlY3RvcnM7ICsraWkpIHsKKyAgICAgICAgdmFyIGxvY2F0aW9u
ID0gbG9jYXRpb25zW2lpXTsKKyAgICAgICAgaWYgKGxvY2F0aW9uKSB7CisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBnbC5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uc1tpaV0pOworICAgICAg
ICAgICAgaWYgKCFpc1NhbWUodmFsdWVbMF0sIGlpICsgNCkgfHwKKyAgICAgICAgICAgICAgICAh
aXNTYW1lKHZhbHVlWzFdLCBpaSArIDIpIHx8CisgICAgICAgICAgICAgICAgIWlzU2FtZSh2YWx1
ZVsyXSwgaWkgKyAzKSB8fAorICAgICAgICAgICAgICAgICFpc1NhbWUodmFsdWVbM10sIGlpICsg
MSkpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJsb2NhdGlvbjogIiArIGlpICsgIiB3
YXMgbm90IGNvcnJlY3QgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuT25lVGVzdChnbCwgdGVz
dCkgeworICAgIHRlc3RVbmlmb3JtT3B0aW1pemF0aW9uSXNzdWVzKHRlc3QpOworfTsKKworZnVu
Y3Rpb24gcnVuVGVzdHMoZ2wsIHRlc3RzKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0IGRyaXZlcnMgZG9uJ3Qgb3ZlciBvcHRpbWl6ZSB1bnVzZWQgYXJyYXkgZWxlbWVudHMiKTsK
KworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgICAg
ICAgcnVuT25lVGVzdChnbCwgdGVzdHNbaWldKTsKKyAgICB9Cit9OworCityZXR1cm4geworICAg
IHNldHVwVGVzdHMgOiBzZXR1cFRlc3RzLAorICAgIHJ1blRlc3RzIDogcnVuVGVzdHMKK307CisK
K30oKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy9vZXMtdGV4dHVyZS1mbG9hdC1hbmQtaGFsZi1mbG9hdC1saW5lYXIu
anMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0
cy9vZXMtdGV4dHVyZS1mbG9hdC1hbmQtaGFsZi1mbG9hdC1saW5lYXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzYyMDIzY2UwMWI0MTgwNDgwZmZmY2M2NzA3OTQyNTRlMTQzZmNmNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L29lcy10ZXh0dXJlLWZsb2F0LWFuZC1oYWxmLWZsb2F0LWxpbmVhci5qcwpAQCAtMCwwICsxLDE1
MSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCitmdW5jdGlv
biB0ZXN0VGV4TGluZWFyKGdsLCBleHRlbnNpb25OYW1lLCBpbnRlcm5hbEZvcm1hdFdlYmdsMiwg
cGl4ZWxUeXBlKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworCisgICAgLy8gQmVm
b3JlIHRoZSBleHRlbnNpb24gaXMgZW5hYmxlZAorICAgIHZhciBleHRlbnNpb25FbmFibGVkID0g
ZmFsc2U7CisgICAgcnVuVGVzdFN1aXRlKGV4dGVuc2lvbkVuYWJsZWQpOworCisgICAgaWYgKCFn
bC5nZXRFeHRlbnNpb24oZXh0ZW5zaW9uTmFtZSkpCisgICAgICAgIHRlc3RQYXNzZWQoIk5vICIg
KyBleHRlbnNpb25OYW1lICsgIiBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgLy8gQWZ0ZXIgdGhlIGV4dGVuc2lvbiBpcyBlbmFibGVkCisgICAgICAgIGV4
dGVuc2lvbkVuYWJsZWQgPSB0cnVlOworICAgICAgICBydW5UZXN0U3VpdGUoZXh0ZW5zaW9uRW5h
YmxlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdFN1aXRlKGV4dGVuc2lvbkVuYWJs
ZWQpCisgICAgeworICAgICAgICB2YXIgbWFnRiA9IFtnbC5ORUFSRVNULCBnbC5MSU5FQVJdOwor
ICAgICAgICB2YXIgbWluRiA9IFtnbC5ORUFSRVNULCBnbC5MSU5FQVIsIGdsLk5FQVJFU1RfTUlQ
TUFQX05FQVJFU1QsIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUiwgZ2wuTElORUFSX01JUE1BUF9O
RUFSRVNULCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUl07CisgICAgICAgIHZhciB0ZXgyREZTaGFk
ZXIgPSBbCisgICAgICAgICAgICAndW5pZm9ybSBzYW1wbGVyMkQgdGV4OycsCisgICAgICAgICAg
ICAndm9pZCBtYWluKCkgeycsCisgICAgICAgICAgICAnICAgIGdsX0ZyYWdEYXRhWzBdID0gdGV4
dHVyZTJEKHRleCwgdmVjMigwLjUsIDAuNSkpICogdmVjNCg0LjAsIDIuMCwgMi4wLCAxKTsnLAor
ICAgICAgICAgICAgJ30nXS5qb2luKCdcbicpOworCisgICAgICAgIHZhciBwb3NpdGlvblZlcnRl
eFNoYWRlciA9IFsKKyAgICAgICAgICAgJ2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsnLAorICAg
ICAgICAgICAndm9pZCBtYWluKCkgeycsCisgICAgICAgICAgICcgICAgZ2xfUG9zaXRpb24gPSB2
UG9zaXRpb247JywKKyAgICAgICAgICAgJ30nXS5qb2luKCdcbicpOworCisgICAgICAgIHZhciB0
ZXhDdWJlRlNoYWRlciA9IFsKKyAgICAgICAgICAgICd1bmlmb3JtIHNhbXBsZXJDdWJlIHRleDsn
LAorICAgICAgICAgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICAgICAgICAgJyAgICBnbF9GcmFn
Q29sb3IgPSB0ZXh0dXJlQ3ViZSh0ZXgsIG5vcm1hbGl6ZSh2ZWMzKDAuNSwgMC41LCAxKSkpICog
dmVjNCg0LjAsIDIuMCwgMi4wLCAxKTsnLAorICAgICAgICAgICAgJ30nXS5qb2luKCdcbicpOwor
CisgICAgICAgIHZhciB2cyA9IHd0dS5sb2FkU2hhZGVyKGdsLCBwb3NpdGlvblZlcnRleFNoYWRl
ciwgZ2wuVkVSVEVYX1NIQURFUik7CisgICAgICAgIHZhciBmc18yZCA9IHd0dS5sb2FkU2hhZGVy
KGdsLCB0ZXgyREZTaGFkZXIsIGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgICAgIHZhciBmc19j
dWJlID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRleEN1YmVGU2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFE
RVIpOworCisgICAgICAgIC8vIFRFWFRVUkVfMkQKKyAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsLCBbdnMsIGZzXzJkXSk7CisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgICAgICAgZm9yICh2YXIg
a2sgPSAwOyBrayA8IDI7ICsra2spIHsKKyAgICAgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkg
PCA2OyArK2lpKSB7CisgICAgICAgICAgICAgICAgdmFyIGxpbmVhciA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmIChtYWdGW2trXSA9PSBnbC5MSU5FQVIgfHwgKG1pbkZbaWldICE9IGdsLk5F
QVJFU1QgJiYgbWluRltpaV0gIT0gZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkpCisgICAgICAg
ICAgICAgICAgICAgIGxpbmVhciA9IHRydWU7CisgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0g
KCFleHRlbnNpb25FbmFibGVkICYmIGxpbmVhcikgPyBbMCwgMCwgMCwgMjU1XSA6IFsyNTUsIDI1
NSwgMjU1LCAyNTVdOworICAgICAgICAgICAgICAgIHJ1bkVhY2hUZXN0KGdsLlRFWFRVUkVfMkQs
IG1hZ0Zba2tdLCBtaW5GW2lpXSwgbGluZWFyLCBleHRlbnNpb25FbmFibGVkLCBjb2xvcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBURVhUVVJFX0NVQkVfTUFQCisg
ICAgICAgIHZhciBwcm9ncmFtQ3ViZSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFt2cywgZnNfY3Vi
ZV0pOworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW1DdWJlKTsKKyAgICAgICAgd3R1LnNl
dHVwVW5pdFF1YWQoZ2wpOworICAgICAgICBmb3IgKHZhciBrayA9IDA7IGtrIDwgMjsgKytraykg
eworICAgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDY7ICsraWkpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbGluZWFyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1hZ0Zba2td
ID09IGdsLkxJTkVBUiB8fCAobWluRltpaV0gIT0gZ2wuTkVBUkVTVCAmJiBtaW5GW2lpXSAhPSBn
bC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZWFyID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSAoIWV4dGVuc2lvbkVuYWJsZWQgJiYg
bGluZWFyKSA/IFswLCAwLCAwLCAyNTVdIDogWzI1NSwgMjU1LCAyNTUsIDI1NV07CisgICAgICAg
ICAgICAgICAgcnVuRWFjaFRlc3QoZ2wuVEVYVFVSRV9DVUJFX01BUCwgbWFnRltra10sIG1pbkZb
aWldLCBsaW5lYXIsIGV4dGVuc2lvbkVuYWJsZWQsIGNvbG9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bkVhY2hUZXN0KHRleHR1cmVUYXJnZXQs
IG1hZ0ZpbHRlciwgbWluRmlsdGVyLCBsaW5lYXIsIGV4dGVuc2lvbkVuYWJsZWQsIGV4cGVjdGVk
KQorICAgIHsKKyAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2wuUkdCQTsKKyAgICAgICAgbGV0IGlu
dGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICBpZiAod3R1LmlzV2ViR0wyKGdsKSkgewor
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgPSBnbFtpbnRlcm5hbEZvcm1hdFdlYmdsMl07Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIG51bWJlck9mQ2hhbm5lbHMgPSA0OworICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIHRhcmdldDogIiArIHd0dS5nbEVudW1Ub1N0
cmluZyhnbCx0ZXh0dXJlVGFyZ2V0KSArCisgICAgICAgICAgICAiLCB0ZXN0aW5nIGZvcm1hdDog
IiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgZm9ybWF0KSArCisgICAgICAgICAgICAiLCBtYWdG
aWx0ZXIgaXM6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIG1hZ0ZpbHRlcikgKworICAgICAg
ICAgICAgIiwgbWluRmlsdGVyIGlzOiAiICsgd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBtaW5GaWx0
ZXIpICsKKyAgICAgICAgICAgICIsICIgKyBleHRlbnNpb25OYW1lICsgIiBpcyAiICsgIChleHRl
bnNpb25FbmFibGVkID8gImVuYWJsZWQiOiAibm90IGVuYWJsZWQiKQorICAgICAgICAgICAgKTsK
KworICAgICAgICAvLyBHZW5lcmF0ZSBkYXRhLgorICAgICAgICB2YXIgd2lkdGggPSA0OworICAg
ICAgICB2YXIgaGVpZ2h0ID0gNDsKKyAgICAgICAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgIGNhbnZhczJkLndpZHRoID0gd2lkdGg7Cisg
ICAgICAgIGNhbnZhczJkLmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgdmFyIGN0eDJkID0gY2Fu
dmFzMmQuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICAgICAgdmFyIGNvbG9yID0gWzY0LCAxMjgsIDEy
OCwgMjU1XTsKKyAgICAgICAgY3R4MmQuZmlsbFN0eWxlID0gInJnYmEoIiArIGNvbG9yWzBdICsg
IiwiICsgY29sb3JbMV0gKyAiLCIgKyBjb2xvclsyXSArICIsIiArIGNvbG9yWzNdICsgIikiOwor
ICAgICAgICBjdHgyZC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICB2
YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUo
dGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkodGV4dHVy
ZVRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBtYWdGaWx0ZXIpOworICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgbWluRmls
dGVyKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBnbC5URVhUVVJF
X1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkodGV4
dHVyZVRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworCisgICAg
ICAgIGlmICh0ZXh0dXJlVGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQpIHsKKyAgICAgICAgICAgIGds
LnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgZ2xb
cGl4ZWxUeXBlXSwgY2FudmFzMmQpOworICAgICAgICAgICAgaWYgKG1pbkZpbHRlciAhPSBnbC5O
RUFSRVNUICYmIG1pbkZpbHRlciAhPSBnbC5MSU5FQVIpIHsKKyAgICAgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMgZHVy
aW5nIHRleHR1cmUgc2V0dXAiKTsKKyAgICAgICAgICAgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChn
bC5URVhUVVJFXzJEKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5O
T19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiZ2VuZXJhdGVNaXBtYXAgZmFp
bGVkIGZvciBmbG9hdGluZy1wb2ludCBURVhUVVJFXzJEIC0tIHRoaXMgaXMgbGVnYWwgLS0gc2tp
cHBpbmcgdGhlIHJlc3Qgb2YgdGhpcyB0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
dGV4dHVyZVRhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICB2YXIg
dGFyZ2V0cyA9IFsKKyAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1gsCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAg
ICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAg
ICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAgICAgICAgICAgICAgZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0
dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KQorICAgICAgICAgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKHRhcmdldHNbdHRdLCAwLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCBnbFtwaXhlbFR5cGVd
LCBjYW52YXMyZCk7CisgICAgICAgICAgICAgICAgaWYgKG1pbkZpbHRlciAhPSBnbC5ORUFSRVNU
ICYmIG1pbkZpbHRlciAhPSBnbC5MSU5FQVIpIHsKKyAgICAgICAgICAgICAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIGR1cmlu
ZyB0ZXh0dXJlIHNldHVwIik7CisgICAgICAgICAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFw
KGdsLlRFWFRVUkVfQ1VCRV9NQVApOworICAgICAgICAgICAgICAgICAgICBpZiAoZ2wuZ2V0RXJy
b3IoKSAhPSBnbC5OT19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoImdl
bmVyYXRlTWlwbWFwIGZhaWxlZCBmb3IgZmxvYXRpbmctcG9pbnQgVEVYVFVSRV9DVUJFX01BUCAt
LSB0aGlzIGlzIGxlZ2FsIC0tIHNraXBwaW5nIHRoZSByZXN0IG9mIHRoaXMgdGVzdCIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgICAgIGlmICghbGluZWFyKSB7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgcGl4ZWxUeXBlICsgIiB0ZXh0dXJlIHdpdGggbm9uLUxp
bmVhciBmaWx0ZXIgc2hvdWxkIHN1Y2NlZWQgd2l0aCBOT19FUlJPUiBubyBtYXR0ZXIgd2hldGhl
ciAiICsgZXh0ZW5zaW9uTmFtZSArICIgaXMgZW5hYmxlZCBvciBub3QiKTsKKyAgICAgICAgfSBl
bHNlIGlmICghZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsIHBpeGVsVHlwZSArICIgdGV4dHVyZSB3aXRoIExpbmVhciBm
aWx0ZXIgc2hvdWxkIHByb2R1Y2UgWzAsIDAsIDAsIDEuMF0gd2l0aCBOT19FUlJPUiBpZiAiICsg
ZXh0ZW5zaW9uTmFtZSArICIgaXNuJ3QgZW5hYmxlZCIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsIHBpeGVsVHlwZSAr
ICIgdGV4dHVyZSB3aXRoIExpbmVhciBmaWx0ZXIgc2hvdWxkIHN1Y2NlZWQgd2l0aCBOT19FUlJP
UiBpZiAiICsgZXh0ZW5zaW9uTmFtZSArICIgaXMgZW5hYmxlZCIpOworICAgICAgICB9CisKKyAg
ICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBleHBlY3RlZCwgInNob3VsZCBiZSAiICsgZXhwZWN0
ZWRbMF0gKyAiLCIgKyBleHBlY3RlZFsxXSAgKyAiLCIgKyAgZXhwZWN0ZWRbMl0gKyAiLCIgKyBl
eHBlY3RlZFszXSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvb2Zmc2NyZWVuY2FudmFzLXRyYW5zZmVy
LWltYWdlLWJpdG1hcC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2pzL3Rlc3RzL29mZnNjcmVlbmNhbnZhcy10cmFuc2Zlci1pbWFnZS1iaXRtYXAuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjI1YTdkZDAyNmI3MGEwZDg5YzRkNTc5MWI1MGY1MTljNDcwNzFkYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2pzL3Rlc3RzL29mZnNjcmVlbmNhbnZhcy10cmFuc2Zlci1pbWFnZS1iaXRtYXAuanMKQEAg
LTAsMCArMSw1NyBAQAorZnVuY3Rpb24gdGVzdFRyYW5zZmVyVG9JbWFnZUJpdG1hcCh3ZWJnbENv
bnRleHRWZXJzaW9uLCBiaXRtYXApIHsKKyAgICB2YXIgaW50ZXJuYWxGb3JtYXQgPSAiUkdCQSI7
CisgICAgdmFyIHBpeGVsRm9ybWF0ID0gIlJHQkEiOworICAgIHZhciBwaXhlbFR5cGUgPSAiVU5T
SUdORURfQllURSI7CisKKyAgICB2YXIgd2lkdGggPSAzMjsKKyAgICB2YXIgaGVpZ2h0ID0gMzI7
CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAg
IGNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAg
dmFyIGdsID0gV2ViR0xUZXN0VXRpbHMuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgZ2wu
Y2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICBnbC5jbGVhckRlcHRoKDEpOworICAgIGdsLmRpc2Fi
bGUoZ2wuQkxFTkQpOworCisgICAgVGV4SW1hZ2VVdGlscy5zZXR1cFRleHR1cmVkUXVhZChnbCwg
aW50ZXJuYWxGb3JtYXQpOworCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQpOworICAgIC8vIEVuYWJsZSB3cml0ZXMgdG8gdGhlIFJHQkEgY2hh
bm5lbHMKKyAgICBnbC5jb2xvck1hc2soMSwgMSwgMSwgMCk7CisgICAgdmFyIHRleHR1cmUgPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0dXJlIHVu
aXQgMAorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIC8v
IFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1Qp
OworCisgICAgdmFyIHRhcmdldHMgPSBbZ2wuVEVYVFVSRV8yRF07CisgICAgLy8gVXBsb2FkIHRo
ZSBpbWFnZSBpbnRvIHRoZSB0ZXh0dXJlCisgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdl
dHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAs
IGdsW2ludGVybmFsRm9ybWF0XSwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBiaXRt
YXApOworICAgIH0KKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsr
dHQpIHsKKyAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgIGdsLmNsZWFyQ29s
b3IoMCwgMCwgMCwgMSk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMs
IDAsIDYpOworCisgICAgICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdo
dCAqIDQpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgICAgICAgIF9jaGVja0NhbnZhcyhidWYsIHdp
ZHRoLCBoZWlnaHQsIHdlYmdsQ29udGV4dFZlcnNpb24pOworICAgIH0KK30KKworZnVuY3Rpb24g
X2NoZWNrQ2FudmFzKGJ1Ziwgd2lkdGgsIGhlaWdodCwgd2ViZ2xDb250ZXh0VmVyc2lvbikKK3sK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKyspIHsKKyAgICAgICAg
aWYgKGJ1ZltpICogNF0gIT0gMjU1IHx8IGJ1ZltpICogNCArIDFdICE9IDI1NSB8fAorICAgICAg
ICAgICAgYnVmW2kgKiA0ICsgMl0gIT0gMCB8fCBidWZbaSAqIDQgKyAzXSAhPSAyNTUpIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIk9mZnNjcmVlbkNhbnZhcy4iICsgd2ViZ2xDb250ZXh0VmVy
c2lvbiArCisgICAgICAgICAgICAgICAgIjogVGhpcyBwaXhlbCBzaG91bGQgYmUgWzI1NSwgMjU1
LCAwLCAyNTVdLCBidXQgaXQgaXM6IFsiICsgYnVmW2kgKiA0XSArICIsICIgKworICAgICAgICAg
ICAgICAgIGJ1ZltpICogNCArIDFdICsgIiwgIiArIGJ1ZltpICogNCArIDJdICsgIiwgIiArIGJ1
ZltpICogNCArIDNdICsgIl0uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisgICAgdGVzdFBhc3NlZCgiVHJhbnNmZXJUb0ltYWdlQml0bWFwIHRlc3Qgb24gT2Zmc2Ny
ZWVuQ2FudmFzLiIgKyB3ZWJnbENvbnRleHRWZXJzaW9uICsgIiBwYXNzZWQiKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rl
c3RzL291dC1vZi1ib3VuZHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL291dC1vZi1ib3VuZHMtdGVzdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NWUzNDk2ZGZiZDBkZmU4MzlkMmIzY2UxNTE3MjY3ZTI1MTJiOGI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvb3V0LW9mLWJvdW5kcy10ZXN0LmpzCkBAIC0wLDAgKzEsMzIxIEBACisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIE91dE9m
Qm91bmRzVGVzdCA9IChmdW5jdGlvbigpIHsKKwordmFyIHJ1bkNvbW1vbkludmFsaWRWYWx1ZVRl
c3RzID0gZnVuY3Rpb24oY2FsbFRlbXBsYXRlLCBnbCwgd3R1LCBleHQpIHsKKyAgICB3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCB3dHUucmVwbGFjZVBhcmFt
cyhjYWxsVGVtcGxhdGUsIHtjb3VudDogLTEsIHR5cGU6ICdnbC5VTlNJR05FRF9CWVRFJywgb2Zm
c2V0OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
VkFMVUUsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAwLCB0eXBlOiAn
Z2wuVU5TSUdORURfQllURScsIG9mZnNldDogLTF9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBs
YXRlLCB7Y291bnQ6IC0xLCB0eXBlOiAnZ2wuVU5TSUdORURfQllURScsIG9mZnNldDogMX0pKTsK
KyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCB3dHUu
cmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMSwgdHlwZTogJ2dsLlVOU0lHTkVE
X0JZVEUnLCBvZmZzZXQ6IC0xfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLklOVkFMSURfVkFMVUUsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50
OiAnMHhmZmZmZmZmZicsIHR5cGU6ICdnbC5VTlNJR05FRF9CWVRFJywgb2Zmc2V0OiAwfSkpOwor
fTsKKwordmFyIHNldHVwUHJvZ3JhbUFuZEJpbmRWZXJ0ZXhBcnJheSA9IGZ1bmN0aW9uKGdsLCB3
dHUpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQcm9ncmFtKGdsKTsKKwor
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhP
YmplY3QpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgcmV0dXJu
IHByb2dyYW07Cit9OworCit2YXIgc2V0dXBQcm9ncmFtMiA9IGZ1bmN0aW9uKGdsLCB3dHUpIHsK
KyAgICB2YXIgdnNoYWRlciA9IFsKKyAgICAgICAgJ2F0dHJpYnV0ZSB2ZWMzIGFPbmU7JywKKyAg
ICAgICAgJ2F0dHJpYnV0ZSB2ZWMyIGFUd287JywKKyAgICAgICAgJ3ZvaWQgbWFpbigpIHsnLAor
ICAgICAgICAnICBnbF9Qb3NpdGlvbiA9IHZlYzQoYU9uZSwgMS4wKSArIHZlYzQoYVR3bywgMC4w
LCAxLjApOycsCisgICAgICAgICd9JworICAgIF0uam9pbignXG4nKTsKKworICAgIHZhciBmc2hh
ZGVyID0gWworICAgICAgICAndm9pZCBtYWluKCkgeycsCisgICAgICAgICcgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsnLAorICAgICAgICAnfScKKyAgICBdLmpvaW4o
J1xuJyk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFt2c2hhZGVy
LCBmc2hhZGVyXSwgWyAiYU9uZSIsICJhVHdvIiBdKTsKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZmFpbGVkIHRvIGNyZWF0ZSB0ZXN0IHByb2dyYW0iKTsKKyAgICB9
CisgICAgcmV0dXJuIHByb2dyYW07Cit9OworCit2YXIgcnVuRHJhd0FycmF5c1Rlc3QgPSBmdW5j
dGlvbihjYWxsVGVtcGxhdGUsIGdsLCB3dHUsIGV4dCkgeworICAgIHZhciBwcm9ncmFtID0gc2V0
dXBQcm9ncmFtQW5kQmluZFZlcnRleEFycmF5KGdsLCB3dHUpOworCisgICAgZGVidWcoIlRlc3Qg
ZW1wdHkgYnVmZmVyIikKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZs
b2F0MzJBcnJheShbICBdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGdsLCBbZ2wuTk9fRVJST1IsIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgd3R1LnJl
cGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogMX0pKTsKKyAgICB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBbZ2wuTk9fRVJST1IsIGdsLklOVkFMSURfT1BF
UkFUSU9OXSwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3Vu
dDogMTAwMDB9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJS
T1IsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMSwgY291bnQ6IDB9
KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0dS5y
ZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMCwgY291bnQ6IDB9KSk7CisgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFy
YW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMTAwLCBjb3VudDogMH0pKTsKKyAgICBydW5Db21t
b25JbnZhbGlkVmFsdWVUZXN0cyhjYWxsVGVtcGxhdGUsIGdsLCB3dHUsIGV4dCk7CisKKyAgICBk
ZWJ1ZygiIikKKyAgICBkZWJ1ZygiVGVzdCBidWZmZXIgd2l0aCAzIGZsb2F0IHZlY3RvcnMiKQor
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCww
LjUsMCwgLTAuNSwtMC41LDAsIDAuNSwtMC41LDAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAg
d3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFy
YW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMCwgY291bnQ6IDN9KSk7CisgICAgd3R1LnNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLk5PX0VSUk9SLCBnbC5JTlZBTElEX09QRVJBVElPTl0s
IHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMywgY291bnQ6IDJ9KSk7
CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLk5PX0VSUk9SLCBnbC5JTlZB
TElEX09QRVJBVElPTl0sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDog
MCwgY291bnQ6IDEwMDAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IDAsIGNv
dW50OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9S
LCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IDEwMCwgY291bnQ6IDB9
KSk7CisgICAgcnVuQ29tbW9uSW52YWxpZFZhbHVlVGVzdHMoY2FsbFRlbXBsYXRlLCBnbCwgd3R1
LCBleHQpOworCisgICAgZGVidWcoIiIpCisgICAgZGVidWcoIlRlc3QgYnVmZmVyIHdpdGggaW50
ZXJsZWF2ZWQgKDMrMikgZmxvYXQgdmVjdG9ycyIpCisKKyAgICBzZXR1cFByb2dyYW0yKGdsLCB3
dHUpOworCisgICAgdmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8pOworICAgIC8vIGVub3VnaCBmb3IgOSB2ZXJ0aWNlcywg
c28gMyB0cmlhbmdsZXMKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZs
b2F0MzJBcnJheSg5KjUpLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBiaW5kIGZpcnN0IDMg
ZWxlbWVudHMsIHdpdGggYSBzdHJpZGUgb2YgNSBmbG9hdCBlbGVtZW50cworICAgIGdsLnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCA1KjQsIDApOworICAgIC8vIGJp
bmQgMiBlbGVtZW50cywgc3RhcnRpbmcgYWZ0ZXIgdGhlIGZpcnN0IDM7IHNhbWUgc3RyaWRlIG9m
IDUgZmxvYXQgZWxlbWVudHMKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDIsIGdsLkZM
T0FULCBmYWxzZSwgNSo0LCAzKjQpOworCisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKyAgICB3dHUuc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRl
bXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogOX0pKTsKKworICAgIC8vIG5lZ2F0aXZlIHZhbHVl
cyBtdXN0IGdlbmVyYXRlIElOVkFMSURfVkFMVUU7IHRoZXkgY2FuIG5ldmVyIGJlIHZhbGlkCisg
ICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgd3R1LnJl
cGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogLTUwMH0pKTsKKyAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCB3dHUucmVw
bGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IC0yMDAsIGNvdW50OiAxfSkpOworICAg
IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsIHd0dS5yZXBs
YWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogLTIwMCwgY291bnQ6IC01MDB9KSk7CisK
KyAgICAvLyAweGZmZmZmZmZmIG5lZWRzIHRvIGNvbnZlcnQgdG8gYSAnbG9uZycgSURMIGFyZ3Vt
ZW50IGFzIC0xLCBhcyBwZXIKKyAgICAvLyBXZWJJREwgNC4xLjcuICBKUyBUb0ludDMyKDB4ZmZm
ZmZmZmYpID09IC0xLiBUaHVzIElOVkFMSURfVkFMVUUuCisgICAgd3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBs
YXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogJzB4ZmZmZmZmZmYnfSkpOworICAgIHd0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsIHd0dS5yZXBsYWNlUGFyYW1zKGNh
bGxUZW1wbGF0ZSwge29mZnNldDogJzB4ZmZmZmZmZmYnLCBjb3VudDogJzB4ZmZmZmZmZmYnfSkp
OworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfVkFMVUUsIHd0
dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogJzB4ZmZmZmZmZmYnLCBjb3Vu
dDogMX0pKTsKKworICAgIC8vIHZhbHVlcyB0aGF0IGNvdWxkIG90aGVyd2lzZSBiZSB2YWxpZCBi
dXQgYXJlbid0IGR1ZSB0byBiaW5kaW5ncyBnZW5lcmF0ZQorICAgIC8vIElOVkFMSURfT1BFUkFU
SU9OCisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLk5PX0VSUk9SLCBnbC5J
TlZBTElEX09QRVJBVElPTl0sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNl
dDogMCwgY291bnQ6IDEwMDAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IFtnbC5OT19FUlJPUiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCB3dHUucmVwbGFjZVBhcmFtcyhj
YWxsVGVtcGxhdGUsIHtvZmZzZXQ6ICcweDdmZmZmZmZmJywgY291bnQ6IDF9KSk7Cit9OworCit2
YXIgcnVuRHJhd0VsZW1lbnRzVGVzdCA9IGZ1bmN0aW9uKGNhbGxUZW1wbGF0ZSwgZ2wsIHd0dSwg
ZXh0KSB7CisgICAgdmFyIHByb2dyYW0gPSBzZXR1cFByb2dyYW1BbmRCaW5kVmVydGV4QXJyYXko
Z2wsIHd0dSk7CisgICAgdmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENvbnRl
eHRWZXJzaW9uKCk7CisKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZs
b2F0MzJBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAwLjUsLTAuNSwwIF0pLCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgbnVsbCBpbmRl
eCBidWZmZXInKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBu
dWxsKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7Y291bnQ6IDAsIHR5cGU6ICdn
bC5VTlNJR05FRF9CWVRFJywgb2Zmc2V0OiAwfSkpOworCisgICAgZGVidWcoJycpOworICAgIGRl
YnVnKCdUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlcicpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIGdsLmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBs
YXRlLCB7Y291bnQ6IDAsIHR5cGU6ICdnbC5VTlNJR05FRF9CWVRFJywgb2Zmc2V0OiAwfSkpOwor
ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5OT19FUlJPUiwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT05dLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMywg
dHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZzZXQ6IDB9KSk7CisgICAgd3R1LnNob3VsZEdl
bmVyYXRlR0xFcnJvcihnbCwgW2dsLk5PX0VSUk9SLCBnbC5JTlZBTElEX09QRVJBVElPTl0sIHd0
dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAxMDAwMCwgdHlwZTogJ2dsLlVO
U0lHTkVEX0JZVEUnLCBvZmZzZXQ6IDB9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgW2dsLk5PX0VSUk9SLCBnbC5JTlZBTElEX09QRVJBVElPTl0sIHd0dS5yZXBsYWNlUGFy
YW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAxLCB0eXBlOiAnZ2wuVU5TSUdORURfQllURScsIG9m
ZnNldDogMH0pKTsKKyAgICBydW5Db21tb25JbnZhbGlkVmFsdWVUZXN0cyhjYWxsVGVtcGxhdGUs
IGdsLCB3dHUsIGV4dCk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgYnVmZmVy
IHdpdGggMyBieXRlIGluZGV4ZXMnKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBuZXcgVWludDhBcnJheShbIDAsIDEsIDIgXSksIGdsLlNUQVRJQ19EUkFXKTsK
KyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgd3R1LnJlcGxh
Y2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7Y291bnQ6IDMsIHR5cGU6ICdnbC5VTlNJR05FRF9CWVRF
Jywgb2Zmc2V0OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5O
T19FUlJPUiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVt
cGxhdGUsIHtjb3VudDogMywgdHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZzZXQ6IDJ9KSk7
CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLk5PX0VSUk9SLCBnbC5JTlZB
TElEX09QRVJBVElPTl0sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAx
MDAwMCwgdHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZzZXQ6IDB9KSk7CisgICAgcnVuQ29t
bW9uSW52YWxpZFZhbHVlVGVzdHMoY2FsbFRlbXBsYXRlLCBnbCwgd3R1LCBleHQpOworICAgIHd0
dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFt
cyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMCwgdHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZz
ZXQ6IDR9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9P
UEVSQVRJT04sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAxMDAwMCwg
dHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZzZXQ6IDEwMDAwfSkpOworCisgICAgd3R1LnNo
b3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICdnbC5idWZmZXJEYXRhKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCAobmV3IFVpbnQ4QXJyYXkoWyAzLCAwLCAxLCAyIF0pKS5zdWJh
cnJheSgxKSwgZ2wuU1RBVElDX0RSQVcpJyk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50
OiAzLCB0eXBlOiAnZ2wuVU5TSUdORURfQllURScsIG9mZnNldDogMH0pKTsKKyAgICB3dHUuc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ2dsLmJ1ZmZlclN1YkRhdGEoZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIDAsIG5ldyBVaW50OEFycmF5KFsgMywgMCwgMV0pKScpOwor
ICAgIHZhciBpbmRleFZhbGlkYXRpb25FcnJvciA9IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIFtnbC5JTlZBTElEX09QRVJBVElPTiwgZ2wuTk9fRVJST1JdLCB3dHUucmVwbGFjZVBhcmFt
cyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMywgdHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUnLCBvZmZz
ZXQ6IDB9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1Is
ICdnbC5idWZmZXJTdWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCAwLCAobmV3IFVpbnQ4
QXJyYXkoWyAzLCAwLCAxLCAyIF0pKS5zdWJhcnJheSgxKSknKTsKKyAgICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBs
YXRlLCB7Y291bnQ6IDMsIHR5cGU6ICdnbC5VTlNJR05FRF9CWVRFJywgb2Zmc2V0OiAwfSkpOwor
ICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCB3dHUucmVwbGFj
ZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMCwgdHlwZTogJ2dsLlVOU0lHTkVEX0JZVEUn
LCBvZmZzZXQ6IDB9KSk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgYnVmZmVy
IHdpdGggaW50ZXJsZWF2ZWQgKDMrMikgZmxvYXQgdmVjdG9ycycpOworCisgICAgc2V0dXBQcm9n
cmFtMihnbCwgd3R1KTsKKworICAgIHZhciB2Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvKTsKKyAgICAvLyBlbm91Z2ggZm9yIDkg
dmVydGljZXMsIHNvIDMgdHJpYW5nbGVzCisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIG5ldyBGbG9hdDMyQXJyYXkoOSo1KSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgLy8gYmlu
ZCBmaXJzdCAzIGVsZW1lbnRzLCB3aXRoIGEgc3RyaWRlIG9mIDUgZmxvYXQgZWxlbWVudHMKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgNSo0LCAwKTsK
KyAgICAvLyBiaW5kIDIgZWxlbWVudHMsIHN0YXJ0aW5nIGFmdGVyIHRoZSBmaXJzdCAzOyBzYW1l
IHN0cmlkZSBvZiA1IGZsb2F0IGVsZW1lbnRzCisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigx
LCAyLCBnbC5GTE9BVCwgZmFsc2UsIDUqNCwgMyo0KTsKKworICAgIGdsLmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworCisgICAg
dmFyIGVibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGVibyk7CisgICAgLy8gRm9yIFdlYkdMIDIsIFBSSU1JVElWRV9SRVNU
QVJUX0ZJWEVEX0lOREVYIGlzIGFsd2F5cyBlbmFibGVkLgorICAgIC8vIDB4ZmZmZiB3aWxsIGJl
IGhhbmRsZWQgYXMgYSBwcmltaXRpdmUgcmVzdGFydC4KKyAgICBpZiAoY29udGV4dFZlcnNpb24g
PD0gMSkgeworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBu
ZXcgVWludDE2QXJyYXkoCisgICAgICAgICAgICBbIDAsIDEsIDIsCisgICAgICAgICAgICAgIDEs
IDIsIDAsCisgICAgICAgICAgICAgIDIsIDAsIDEsCisgICAgICAgICAgICAgIDIwMSwgMjAyLCAy
MDMsCisgICAgICAgICAgICAgIDB4N2ZmZiwgMHg3ZmZmLCAweDdmZmYsCisgICAgICAgICAgICAg
IDB4ZmZmZiwgMHhmZmZmLCAweGZmZmYgXSksCisgICAgICAgICAgICBnbC5TVEFUSUNfRFJBVyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgbmV3IFVpbnQxNkFycmF5KAorICAgICAgICAgICAgWyAwLCAxLCAyLAorICAgICAgICAg
ICAgICAxLCAyLCAwLAorICAgICAgICAgICAgICAyLCAwLCAxLAorICAgICAgICAgICAgICAyMDEs
IDIwMiwgMjAzLAorICAgICAgICAgICAgICAweDdmZmYsIDB4N2ZmZiwgMHg3ZmZmLAorICAgICAg
ICAgICAgICAweGZmZmYgLSAxLCAweGZmZmYgLSAxLCAweGZmZmYgLSAxIF0pLAorICAgICAgICAg
ICAgZ2wuU1RBVElDX0RSQVcpOworICAgIH0KKworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3Vu
dDogOSwgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0OiAwfSkpOworCisKKyAgICAv
LyBpbnZhbGlkIG9wZXJhdGlvbiB3aXRoIGluZGljZXMgdGhhdCB3b3VsZCBiZSB2YWxpZCB3aXRo
IGNvcnJlY3QgYmluZGluZ3MKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7Y291bnQ6
IDksIHR5cGU6ICdnbC5VTlNJR05FRF9TSE9SVCcsIG9mZnNldDogMTAwMH0pKTsKKyAgICB3dHUu
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBpbmRleFZhbGlkYXRpb25FcnJvciwgd3R1LnJlcGxh
Y2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7Y291bnQ6IDEyLCB0eXBlOiAnZ2wuVU5TSUdORURfU0hP
UlQnLCBvZmZzZXQ6IDB9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgaW5k
ZXhWYWxpZGF0aW9uRXJyb3IsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50
OiAxNSwgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0OiAwfSkpOworICAgIHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGluZGV4VmFsaWRhdGlvbkVycm9yLCB3dHUucmVwbGFj
ZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMTgsIHR5cGU6ICdnbC5VTlNJR05FRF9TSE9S
VCcsIG9mZnNldDogMH0pKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBpbmRl
eFZhbGlkYXRpb25FcnJvciwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7Y291bnQ6
IDMsIHR5cGU6ICdnbC5VTlNJR05FRF9TSE9SVCcsIG9mZnNldDogMioxNX0pKTsKKworICAgIC8v
IDB4ZmZmZmZmZmYgbmVlZHMgdG8gY29udmVydCB0byBhICdsb25nJyBJREwgYXJndW1lbnQgYXMg
LTEsIGFzIHBlcgorICAgIC8vIFdlYklETCA0LjEuNy4gIEpTIFRvSW50MzIoMHhmZmZmZmZmZikg
PT0gLTEuIFRodXMgSU5WQUxJRF9WQUxVRS4KKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtj
b3VudDogJzB4ZmZmZmZmZmYnLCB0eXBlOiAnZ2wuVU5TSUdORURfU0hPUlQnLCBvZmZzZXQ6IDB9
KSk7CisgICAgLy8gb2Zmc2V0IGlzIGRlZmluZWQgYXMgR0xpbnRwdHIsIHdoaWNoIGlzIGxvbmcg
bG9uZyBpbiBJREwgKDY0LWJpdCkuCisgICAgLy8gMl4zMiAtIDEgc2hvdWxkIG5vdCBvdmVyZmxv
dywgYW5kIG9ubHkgcmVzdWx0IGluIElOVkFMSURfT1BFUkFUSU9OLgorICAgIHd0dS5zaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCB3dHUucmVwbGFjZVBhcmFt
cyhjYWxsVGVtcGxhdGUsIHtjb3VudDogMSwgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zm
c2V0OiAnMHhmZmZmZmZmZid9KSk7CisKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7
Y291bnQ6ICcweDdmZmZmZmZmJywgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0OiAw
fSkpOworCisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0
dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiAwLCB0eXBlOiAnZ2wuVU5TSUdO
RURfU0hPUlQnLCBvZmZzZXQ6IDB9KSk7CisKKyAgICAvLyBpbnZhbGlkIG9wZXJhdGlvbiB3aXRo
IG9mZnNldCB0aGF0J3Mgbm90IGEgbXVsdGlwbGUgb2YgdGhlIHR5cGUgc2l6ZQorICAgIHd0dS5z
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhj
YWxsVGVtcGxhdGUsIHtjb3VudDogNiwgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0
OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtjb3VudDogNiwgdHlwZTog
J2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0OiAxfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0
ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUs
IHtjb3VudDogNiwgdHlwZTogJ2dsLlVOU0lHTkVEX1NIT1JUJywgb2Zmc2V0OiAyfSkpOworCisg
ICAgLy8gaW52YWxpZCBvcGVyYXRpb24gaWYgbm8gYnVmZmVyIGlzIGJvdW5kIHRvIEVMRU1FTlRf
QVJSQVlfQlVGRkVSCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bnVsbCk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiA2LCB0eXBlOiAn
Z2wuVU5TSUdORURfU0hPUlQnLCBvZmZzZXQ6IDB9KSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgZWJvKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1Zygn
VGVzdCBidWZmZXIgc2V0dGluZyBhdHRyaWIgMCB0byBhIGJ1ZmZlciB0b28gc21hbGwgYW5kIGRp
c2FibGUgaXQuJyk7CisgICAgdmFyIHNtYWxsVkJPID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHNtYWxsVkJPKTsKKyAgICBnbC5idWZmZXJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgMSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnZlcnRleEF0
dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAweDEwKTsKKyAgICBnbC5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge2NvdW50OiA2
LCB0eXBlOiAnZ2wuVU5TSUdORURfU0hPUlQnLCBvZmZzZXQ6IDJ9KSk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgd3R1LnNob3VsZEdlbmVy
YXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sIHd0dS5yZXBsYWNlUGFyYW1zKGNh
bGxUZW1wbGF0ZSwge2NvdW50OiA2LCB0eXBlOiAnZ2wuVU5TSUdORURfU0hPUlQnLCBvZmZzZXQ6
IDJ9KSk7Cit9OworCit2YXIgcnVuSW5zdGFuY2VkVGVzdCA9IGZ1bmN0aW9uKGNhbGxUZW1wbGF0
ZSwgZ2wsIHd0dSwgZXh0KSB7CisgICAgc2V0dXBQcm9ncmFtMihnbCwgd3R1KTsKKworICAgIC8v
IEluaXRpYWxpemUgbm9uLWluc3RhbmNlZCBhdHRyaWJ1dGUgZGF0YS4KKyAgICAvLyBFbm91Z2gg
Zm9yIDkgdmVydGljZXMsIHNvIDMgdHJpYW5nbGVzLgorICAgIHZhciB2Ym8gPSBnbC5jcmVhdGVC
dWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvKTsKKyAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSg5KjMpLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FU
LCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBTZXR1cCBidWZmZXIgZm9yIGluc3RhbmNlZCBhdHRy
aWJ1dGUgZGF0YS4KKyAgICB2YXIgdmJvMiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8yKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKDEsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKworICAg
IGRlYnVnKCdUZXN0IG91dC1vZi1yYW5nZSBpbnN0YW5jZWQgYXR0cmlidXRlcycpOworICAgIGRl
YnVnKCcnKTsKKworICAgIGRlYnVnKCdUZXN0IHdpdGggYW4gZW1wdHkgYnVmZmVyIGZvciB0aGUg
aW5zdGFuY2VkIGF0dHJpYnV0ZScpOworICAgIGV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
MSwgMSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0
dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge29mZnNldDogMCwgY291bnQ6IDksIHByaW1j
b3VudDogMH0pKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJP
Uiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogMTAw
MDAsIHByaW1jb3VudDogMH0pKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zm
c2V0OiAwLCBjb3VudDogOSwgcHJpbWNvdW50OiAxfSkpOworCisgICAgZGVidWcoJ1Rlc3Qgd2l0
aCBhIGJ1ZmZlciB3aXRoIDEgZmxvYXQgZm9yIHRoZSBpbnN0YW5jZWQgYXR0cmlidXRlJyk7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoMSksIGds
LlNUQVRJQ19EUkFXKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgd3R1LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDog
OSwgcHJpbWNvdW50OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IDAsIGNv
dW50OiAxMDAwMCwgcHJpbWNvdW50OiAwfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxh
dGUsIHtvZmZzZXQ6IDAsIGNvdW50OiA5LCBwcmltY291bnQ6IDF9KSk7CisKKyAgICBkZWJ1Zygn
Jyk7CisgICAgZGVidWcoJ1Rlc3Qgd2l0aCBhIGJ1ZmZlciB3aXRoIDIgZmxvYXRzIGZvciB0aGUg
aW5zdGFuY2VkIGF0dHJpYnV0ZScpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KDIpLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZGVidWcoJ0Rpdmlz
b3IgMScpOworICAgIGV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoMSwgMSk7CisgICAgd3R1
LnNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFyYW1z
KGNhbGxUZW1wbGF0ZSwge29mZnNldDogMCwgY291bnQ6IDksIHByaW1jb3VudDogMX0pKTsKKyAg
ICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgd3R1
LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogOSwgcHJpbWNv
dW50OiAyfSkpOworICAgIGRlYnVnKCdEaXZpc29yIDMnKTsKKyAgICBleHQudmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKDEsIDMpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
Lk5PX0VSUk9SLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IDAsIGNv
dW50OiA5LCBwcmltY291bnQ6IDN9KSk7CisgICAgd3R1LnNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwg
e29mZnNldDogMCwgY291bnQ6IDksIHByaW1jb3VudDogNH0pKTsKKyAgICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgd3R1LnJlcGxhY2VQYXJhbXMo
Y2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogOSwgcHJpbWNvdW50OiAxMDAwMH0pKTsK
KworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCB3aXRoIGEgYnVmZmVyIHdpdGggNCBm
bG9hdHMgZm9yIHRoZSBpbnN0YW5jZWQgYXR0cmlidXRlJyk7CisgICAgZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoNCksIGdsLlNUQVRJQ19EUkFXKTsKKyAg
ICBkZWJ1ZygnRGl2aXNvciAxJyk7CisgICAgZXh0LnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSgx
LCAxKTsKKyAgICB3dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgd3R1
LnJlcGxhY2VQYXJhbXMoY2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogOSwgcHJpbWNv
dW50OiAyfSkpOworICAgIHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCB3dHUucmVwbGFjZVBhcmFtcyhjYWxsVGVtcGxhdGUsIHtvZmZzZXQ6IDAsIGNv
dW50OiA5LCBwcmltY291bnQ6IDN9KSk7CisgICAgZGVidWcoJ0Rpdmlzb3IgMicpOworICAgIGV4
dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoMSwgMik7CisgICAgd3R1LnNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsIHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwg
e29mZnNldDogMCwgY291bnQ6IDksIHByaW1jb3VudDogNH0pKTsKKyAgICB3dHUuc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgd3R1LnJlcGxhY2VQYXJhbXMo
Y2FsbFRlbXBsYXRlLCB7b2Zmc2V0OiAwLCBjb3VudDogOSwgcHJpbWNvdW50OiA1fSkpOworfTsK
KwordmFyIHJ1bkRyYXdBcnJheXNJbnN0YW5jZWRUZXN0ID0gZnVuY3Rpb24oY2FsbFRlbXBsYXRl
LCBnbCwgd3R1LCBleHQpIHsKKyAgICBydW5JbnN0YW5jZWRUZXN0KGNhbGxUZW1wbGF0ZSwgZ2ws
IHd0dSwgZXh0KTsKK307CisKK3ZhciBydW5EcmF3RWxlbWVudHNJbnN0YW5jZWRUZXN0ID0gZnVu
Y3Rpb24oY2FsbFRlbXBsYXRlLCBnbCwgd3R1LCBleHQpIHsKKyAgICB2YXIgZWJvID0gZ2wuY3Jl
YXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
ZWJvKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWlu
dDhBcnJheSgKKyAgICAgICAgWyAwLCAxLCAyLAorICAgICAgICAgIDUsIDQsIDMsCisgICAgICAg
ICAgNiwgNywgOCBdKSwKKyAgICAgICAgZ2wuU1RBVElDX0RSQVcpOworICAgIGNhbGxUZW1wbGF0
ZSA9IHd0dS5yZXBsYWNlUGFyYW1zKGNhbGxUZW1wbGF0ZSwge3R5cGU6ICdnbC5VTlNJR05FRF9C
WVRFJywgb2Zmc2V0OiAnJChvZmZzZXQpJywgY291bnQ6ICckKGNvdW50KScsIHByaW1jb3VudDog
JyQocHJpbWNvdW50KSd9KTsKKyAgICBydW5JbnN0YW5jZWRUZXN0KGNhbGxUZW1wbGF0ZSwgZ2ws
IHd0dSwgZXh0KTsKK307CisKK3JldHVybiB7CisgICAgcnVuRHJhd0FycmF5c1Rlc3Q6IHJ1bkRy
YXdBcnJheXNUZXN0LAorICAgIHJ1bkRyYXdBcnJheXNJbnN0YW5jZWRUZXN0OiBydW5EcmF3QXJy
YXlzSW5zdGFuY2VkVGVzdCwKKyAgICBydW5EcmF3RWxlbWVudHNUZXN0OiBydW5EcmF3RWxlbWVu
dHNUZXN0LAorICAgIHJ1bkRyYXdFbGVtZW50c0luc3RhbmNlZFRlc3Q6IHJ1bkRyYXdFbGVtZW50
c0luc3RhbmNlZFRlc3QKK307CisKK30pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9vdnJfbXVsdGl2aWV3Ml91dGls
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvb3ZyX211bHRpdmlldzJfdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGU0ZGM4OGQ4NDA0MjBkN2Ux
NjAyZTgyNGQzNGI0MWJjMGE4MWJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvb3ZyX211bHRpdmlldzJfdXRp
bC5qcwpAQCAtMCwwICsxLDI2MyBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25v
cyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCisqLworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGNyZWF0ZVRleHR1cmVXaXRoTmVh
cmVzdEZpbHRlcmluZyh0YXJnZXQpCit7CisgICAgbGV0IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBnbC5URVhUVVJF
X1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ0ZXh0dXJlIHBhcmFtZXRlciBzZXR1cCBzaG91bGQgc3VjY2VlZCIpOwor
ICAgIHJldHVybiB0ZXh0dXJlOworfQorCisvLyBXcml0ZSBhIHRyYW5zZm9ybWF0aW9uIG1hdHJp
eCB0byBlbGVtZW50cyBvZiBmbG9hdEFycmF5IHN0YXJ0aW5nIGZyb20gaW5kZXguCisvLyBUaGUg
bWF0cml4IHRyYW5zZm9ybXMgYSB1bml0IHNxdWFyZSAoLTEgdG8gMSkgdG8gYSByZWN0YW5nbGUg
d2l0aCB0aGUgd2lkdGggc2NhbGVYIGFuZCB0aGUgbGVmdCBlZGdlIGF0IG9mZnNldFguCitmdW5j
dGlvbiBzZXR1cFRyYW5zbGF0ZUFuZFNjYWxlWE1hdHJpeChmbG9hdEFycmF5LCBpbmRleCwgc2Nh
bGVYLCBvZmZzZXRYKQoreworICAgIC8vIHggcG9zaXRpb24gaXMgdHJhbnNmb3JtZWQgYWNjb3Jk
aW5nIHRvIHRoaXMgZXF1YXRpb246IHNjYWxlWCAqIHgwICsgdHJhbnNsYXRlWCA9IG9mZnNldFgK
KyAgICAvLyBCeSBzdWJzdGl0dXRpbmcgeDAgd2l0aCAtMSAodW5pdCBzcXVhcmUgeCB2YWx1ZSBm
b3IgdGhlIGxlZnQgZWRnZSksIHdlIGdldCB0aGUgZm9sbG93aW5nOgorICAgIGxldCB0cmFuc2xh
dGVYID0gb2Zmc2V0WCArIHNjYWxlWDsKKworICAgIGZsb2F0QXJyYXlbaW5kZXhdID0gc2NhbGVY
OworICAgIGZsb2F0QXJyYXlbaW5kZXggKyAxXSA9IDAuMDsKKyAgICBmbG9hdEFycmF5W2luZGV4
ICsgMl0gPSAwLjA7CisgICAgZmxvYXRBcnJheVtpbmRleCArIDNdID0gMC4wOworCisgICAgZmxv
YXRBcnJheVtpbmRleCArIDRdID0gMC4wOworICAgIGZsb2F0QXJyYXlbaW5kZXggKyA1XSA9IDEu
MDsKKyAgICBmbG9hdEFycmF5W2luZGV4ICsgNl0gPSAwLjA7CisgICAgZmxvYXRBcnJheVtpbmRl
eCArIDddID0gMC4wOworCisgICAgZmxvYXRBcnJheVtpbmRleCArIDhdID0gMC4wOworICAgIGZs
b2F0QXJyYXlbaW5kZXggKyA5XSA9IDAuMDsKKyAgICBmbG9hdEFycmF5W2luZGV4ICsgMTBdID0g
MS4wOworICAgIGZsb2F0QXJyYXlbaW5kZXggKyAxMV0gPSAwLjA7CisKKyAgICBmbG9hdEFycmF5
W2luZGV4ICsgMTJdID0gdHJhbnNsYXRlWDsKKyAgICBmbG9hdEFycmF5W2luZGV4ICsgMTNdID0g
MC4wOworICAgIGZsb2F0QXJyYXlbaW5kZXggKyAxNF0gPSAwLjA7CisgICAgZmxvYXRBcnJheVtp
bmRleCArIDE1XSA9IDEuMDsKK30KKworLy8gQ2hlY2sgdGhlIGN1cnJlbnRseSBib3VuZCByZWFk
IGZyYW1lYnVmZmVyIHdpdGggZGltZW5zaW9ucyA8d2lkdGg+IHggPGhlaWdodD4uCisvLyBUaGUg
ZnJhbWVidWZmZXIgc2hvdWxkIGJlIGRpdmlkZWQgaW50byA8c3RyaXBzPiBlcXVhbGx5IHdpZGUg
dmVydGljYWwgc3RyaXBzLCB3aXRoIHRoZSBvbmUgaW5kaWNhdGVkIGJ5CisvLyA8Y29sb3JlZFN0
cmlwSW5kZXg+IGNvbG9yZWQgd2l0aCA8ZXhwZWN0ZWRTdHJpcENvbG9yPi4gVGhlIHJlc3Qgb2Yg
dGhlIGZyYW1lYnVmZmVyIHNob3VsZCBiZSBjb2xvcmVkIHRyYW5zcGFyZW50IGJsYWNrLgorLy8g
QSB0d28gcGl4ZWwgd2lkZSByZWdpb24gYXQgZWFjaCBlZGdlIG9mIHRoZSBjb2xvcmVkIHJlZ2lv
biBpcyBsZWZ0IHVuY2hlY2tlZCB0byBhbGxvdyBmb3Igc29tZSB0b2xlcmFuY2UgZm9yIHJhc3Rl
cml6YXRpb24uCitmdW5jdGlvbiBjaGVja1ZlcnRpY2FsU3RyaXAod2lkdGgsIGhlaWdodCwgc3Ry
aXBzLCBjb2xvcmVkU3RyaXBJbmRleCwgZXhwZWN0ZWRTdHJpcENvbG9yLCBmcmFtZWJ1ZmZlckRl
c2NyaXB0aW9uKQoreworICAgIGxldCBjb2xvclJlZ2lvbkxlZnRFZGdlID0gKHdpZHRoIC8gc3Ry
aXBzKSAqIGNvbG9yZWRTdHJpcEluZGV4OworICAgIGxldCBjb2xvclJlZ2lvblJpZ2h0RWRnZSA9
ICh3aWR0aCAvIHN0cmlwcykgKiAoY29sb3JlZFN0cmlwSW5kZXggKyAxKTsKKyAgICBpZiAoY29s
b3JlZFN0cmlwSW5kZXggPiAwKSB7CisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAs
IDAsIGNvbG9yUmVnaW9uTGVmdEVkZ2UgLSAxLCBoZWlnaHQsIFswLCAwLCAwLCAwXSwgJ3RoZSBs
ZWZ0IGVkZ2Ugb2YgJyArIGZyYW1lYnVmZmVyRGVzY3JpcHRpb24gKyAnIHNob3VsZCBiZSB1bnRv
dWNoZWQnKTsKKyAgICB9CisgICAgaWYgKGNvbG9yZWRTdHJpcEluZGV4IDwgc3RyaXBzIC0gMSkg
eworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBjb2xvclJlZ2lvblJpZ2h0RWRnZSAr
IDEsIDAsIHdpZHRoIC0gY29sb3JSZWdpb25SaWdodEVkZ2UgLSAxLCBoZWlnaHQsIFswLCAwLCAw
LCAwXSwgJ3RoZSByaWdodCBlZGdlIG9mICcgKyBmcmFtZWJ1ZmZlckRlc2NyaXB0aW9uICsgJyBz
aG91bGQgYmUgdW50b3VjaGVkJyk7CisgICAgfQorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IGNvbG9yUmVnaW9uTGVmdEVkZ2UgKyAxLCAwLCBjb2xvclJlZ2lvblJpZ2h0RWRnZSAtIGNvbG9y
UmVnaW9uTGVmdEVkZ2UgLSAyLCBoZWlnaHQsIGV4cGVjdGVkU3RyaXBDb2xvciwgJ2EgdGhpbiBz
dHJpcCBpbiAnICsgZnJhbWVidWZmZXJEZXNjcmlwdGlvbiArICcgc2hvdWxkIGJlIGNvbG9yZWQg
JyArIGV4cGVjdGVkU3RyaXBDb2xvcik7Cit9CisKK2Z1bmN0aW9uIGdldE11bHRpdmlld1Bhc3N0
aHJvdWdoVmVydGV4U2hhZGVyKHZpZXdzKSB7CisgICAgbGV0IHNoYWRlckNvZGUgPSBbJyN2ZXJz
aW9uIDMwMCBlcycsCisgICAgJyNleHRlbnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiByZXF1aXJl
JywKKworICAgICdsYXlvdXQobnVtX3ZpZXdzID0gJChudW1fdmlld3MpKSBpbjsnLAorCisgICAg
J2luIHZlYzQgYV9wb3NpdGlvbjsnLAorCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAg
Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOycsCisgICAgJ30nXS5qb2luKCdcbicpOworICAgIHJl
dHVybiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJDb2RlLCB7J251bV92aWV3cyc6IHZpZXdzfSk7
Cit9CisKKy8vIFRoaXMgc2hhZGVyIHNwbGl0cyB0aGUgdmlld3BvcnQgaW50byA8dmlld3M+IGVx
dWFsbHkgc2l6ZWQgdmVydGljYWwgc3RyaXBzLgorLy8gVGhlIGlucHV0IHF1YWQgZGVmaW5lZCBi
eSAiYV9wb3NpdGlvbiIgaXMgdHJhbnNmb3JtZWQgdG8gZmlsbCBhIGRpZmZlcmVudAorLy8gc3Ry
aXAgaW4gZWFjaCB2aWV3LgorZnVuY3Rpb24gZ2V0TXVsdGl2aWV3T2Zmc2V0VmVydGV4U2hhZGVy
KHZpZXdzKSB7CisgICAgbGV0IHNoYWRlckNvZGUgPSBbJyN2ZXJzaW9uIDMwMCBlcycsCisgICAg
JyNleHRlbnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiByZXF1aXJlJywKKworICAgICdsYXlvdXQo
bnVtX3ZpZXdzID0gJChudW1fdmlld3MpKSBpbjsnLAorCisgICAgJ2luIHZlYzQgYV9wb3NpdGlv
bjsnLAorCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAgdmVjNCBwb3MgPSBhX3Bvc2l0
aW9uOycsCisgICAgIiAgICAvLyBUcmFuc2Zvcm0gdGhlIHF1YWQgdG8gYSB0aGluIHZlcnRpY2Fs
IHN0cmlwIHRoYXQncyBvZmZzZXQgYWxvbmcgdGhlIHggYXhpcyBhY2NvcmRpbmcgdG8gdGhlIHZp
ZXcgaWQuIiwKKyAgICAnICAgIHBvcy54ID0gKHBvcy54ICogMC41ICsgMC41ICsgZmxvYXQoZ2xf
Vmlld0lEX09WUikpICogMi4wIC8gJChudW1fdmlld3MpLjAgLSAxLjA7JywKKyAgICAnICAgIGds
X1Bvc2l0aW9uID0gcG9zOycsCisgICAgJ30nXS5qb2luKCdcbicpOworICAgIHJldHVybiB3dHUu
cmVwbGFjZVBhcmFtcyhzaGFkZXJDb2RlLCB7J251bV92aWV3cyc6IHZpZXdzfSk7Cit9CisKKy8v
IFRoaXMgc2hhZGVyIHRyYW5zZm9ybXMgdGhlIGluY29taW5nICJhX3Bvc2l0aW9uIiB3aXRoIHRy
YW5zZm9ybXMgZm9yIGVhY2gKKy8vIHZpZXcgZ2l2ZW4gaW4gdGhlIHVuaWZvcm0gYXJyYXkgInRy
YW5zZm9ybSIuCitmdW5jdGlvbiBnZXRNdWx0aXZpZXdSZWFsaXN0aWNVc2VDYXNlVmVydGV4U2hh
ZGVyKHZpZXdzKSB7CisgICAgbGV0IHNoYWRlckNvZGUgPSBbJyN2ZXJzaW9uIDMwMCBlcycsCisg
ICAgJyNleHRlbnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiByZXF1aXJlJywKKworICAgICdsYXlv
dXQobnVtX3ZpZXdzID0gJChudW1fdmlld3MpKSBpbjsnLAorCisgICAgJ3VuaWZvcm0gbWF0NCB0
cmFuc2Zvcm1bJChudW1fdmlld3MpXTsnLAorICAgICdpbiB2ZWM0IGFfcG9zaXRpb247JywKKwor
ICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAiICAgIC8vIFRyYW5zZm9ybSB0aGUgcXVhZCB3aXRo
IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggY2hvc2VuIGFjY29yZGluZyB0byBnbF9WaWV3SURf
T1ZSLiIsCisgICAgJyAgICB2ZWM0IHBvcyA9IHRyYW5zZm9ybVtnbF9WaWV3SURfT1ZSXSAqIGFf
cG9zaXRpb247JywKKyAgICAnICAgIGdsX1Bvc2l0aW9uID0gcG9zOycsCisgICAgJ30nXS5qb2lu
KCdcbicpOworICAgIHJldHVybiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJDb2RlLCB7J251bV92
aWV3cyc6IHZpZXdzfSk7Cit9CisKK2Z1bmN0aW9uIGdldE11bHRpdmlld0NvbG9yRnJhZ21lbnRT
aGFkZXIoKSB7CisgICAgcmV0dXJuIFsnI3ZlcnNpb24gMzAwIGVzJywKKyAgICAnI2V4dGVuc2lv
biBHTF9PVlJfbXVsdGl2aWV3MiA6IHJlcXVpcmUnLAorICAgICdwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7JywKKworICAgICdvdXQgdmVjNCBteV9GcmFnQ29sb3I7JywKKworICAgICd2b2lkIG1haW4o
KSB7JywKKyAgICAnICAgIHVpbnQgbWFzayA9IGdsX1ZpZXdJRF9PVlIgKyAxdTsnLAorICAgICcg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgoKG1hc2sgJiA0dSkgIT0gMHUpID8gMS4wIDogMC4wLCcs
CisgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICgobWFzayAmIDJ1KSAhPSAwdSkgPyAxLjAg
OiAwLjAsJywKKyAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKChtYXNrICYgMXUpICE9IDB1
KSA/IDEuMCA6IDAuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgICAgICAxLjApOycsCisg
ICAgJ30nXS5qb2luKCdcbicpOworfQorCitmdW5jdGlvbiBnZXRNdWx0aXZpZXdDb2xvckZyYWdt
ZW50U2hhZGVyRm9yRHJhd0J1ZmZlcnMoZHJhd0J1ZmZlcnMpIHsKKyAgICBsZXQgc2hhZGVyQ29k
ZSA9IFsnI3ZlcnNpb24gMzAwIGVzJywKKyAgICAnI2V4dGVuc2lvbiBHTF9PVlJfbXVsdGl2aWV3
MiA6IHJlcXVpcmUnLAorICAgICdwcmVjaXNpb24gaGlnaHAgZmxvYXQ7JywKKworICAgICdvdXQg
dmVjNCBteV9GcmFnQ29sb3JbJChkcmF3QnVmZmVycyldOycsCisKKyAgICAndm9pZCBtYWluKCkg
eycsCisgICAgJyAgICB1aW50IG1hc2s7J107CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRy
YXdCdWZmZXJzOyArK2kpIHsKKyAgICAgICAgc2hhZGVyQ29kZS5wdXNoKHd0dS5yZXBsYWNlUGFy
YW1zKCcgICAgbWFzayA9IGdsX1ZpZXdJRF9PVlIgKyAkKGkpdTsnLCB7J2knOiBpICsgMX0pKTsK
KyAgICAgICAgc2hhZGVyQ29kZS5wdXNoKHd0dS5yZXBsYWNlUGFyYW1zKCcgICAgbXlfRnJhZ0Nv
bG9yWyQoaSldID0gdmVjNCgoKG1hc2sgJiA0dSkgIT0gMHUpID8gMS4wIDogMC4wLCcsIHsnaSc6
IGl9KSk7CisgICAgICAgIHNoYWRlckNvZGUucHVzaCgnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKChtYXNrICYgMnUpICE9IDB1KSA/IDEuMCA6IDAuMCwnKTsKKyAgICAgICAgc2hhZGVyQ29k
ZS5wdXNoKCcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hc2sgJiAxdSkgIT0gMHUpID8g
MS4wIDogMC4wLCcpOworICAgICAgICBzaGFkZXJDb2RlLnB1c2goJyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMCk7Jyk7CisgICAgfQorICAgIHNoYWRlckNvZGUucHVzaCgnfScpOworICAg
IHNoYWRlckNvZGUgPSBzaGFkZXJDb2RlLmpvaW4oJ1xuJyk7CisgICAgcmV0dXJuIHd0dS5yZXBs
YWNlUGFyYW1zKHNoYWRlckNvZGUsIHsnZHJhd0J1ZmZlcnMnIDogZHJhd0J1ZmZlcnN9KTsKK30K
KworZnVuY3Rpb24gZ2V0TXVsdGl2aWV3VmFyeWluZ1ZlcnRleFNoYWRlcih2aWV3cykgeworICAg
IGxldCBzaGFkZXJDb2RlID0gWycjdmVyc2lvbiAzMDAgZXMnLAorICAgICcjZXh0ZW5zaW9uIEdM
X09WUl9tdWx0aXZpZXcyIDogcmVxdWlyZScsCisKKyAgICAnbGF5b3V0KG51bV92aWV3cyA9ICQo
bnVtX3ZpZXdzKSkgaW47JywKKworICAgICdpbiB2ZWM0IGFfcG9zaXRpb247JywKKyAgICAnb3V0
IGZsb2F0IHRlc3RWYXJ5aW5nOycsCisKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyAgICBn
bF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247JywKKyAgICAnICAgIHRlc3RWYXJ5aW5nID0gZmxvYXQo
Z2xfVmlld0lEX09WUik7JywKKyAgICAnfSddLmpvaW4oJ1xuJyk7CisgICAgcmV0dXJuIHd0dS5y
ZXBsYWNlUGFyYW1zKHNoYWRlckNvZGUsIHsnbnVtX3ZpZXdzJzogdmlld3N9KTsKK30KKworZnVu
Y3Rpb24gZ2V0TXVsdGl2aWV3VmFyeWluZ0ZyYWdtZW50U2hhZGVyKCkgeworICAgIHJldHVybiBb
JyN2ZXJzaW9uIDMwMCBlcycsCisgICAgJyNleHRlbnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiBy
ZXF1aXJlJywKKyAgICAncHJlY2lzaW9uIGhpZ2hwIGZsb2F0OycsCisKKyAgICAnaW4gZmxvYXQg
dGVzdFZhcnlpbmc7JywKKyAgICAnb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOycsCisKKyAgICAndm9p
ZCBtYWluKCkgeycsCisgICAgJyAgICBpbnQgbWFzayA9IGludCh0ZXN0VmFyeWluZyArIDAuMSkg
KyAxOycsCisgICAgJyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KCgobWFzayAmIDQpICE9IDApID8g
MS4wIDogMC4wLCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICgobWFzayAmIDIpICE9
IDApID8gMS4wIDogMC4wLCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICgobWFzayAm
IDEpICE9IDApID8gMS4wIDogMC4wLCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIDEu
MCk7JywKKyAgICAnfSddLmpvaW4oJ1xuJyk7Cit9CisKK2Z1bmN0aW9uIGdldE11bHRpdmlld0Zs
YXRWYXJ5aW5nVmVydGV4U2hhZGVyKHZpZXdzKSB7CisgICAgbGV0IHNoYWRlckNvZGUgPSBbJyN2
ZXJzaW9uIDMwMCBlcycsCisgICAgJyNleHRlbnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiByZXF1
aXJlJywKKworICAgICdsYXlvdXQobnVtX3ZpZXdzID0gJChudW1fdmlld3MpKSBpbjsnLAorCisg
ICAgJ2luIHZlYzQgYV9wb3NpdGlvbjsnLAorICAgICdmbGF0IG91dCBpbnQgdGVzdFZhcnlpbmc7
JywKKworICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIGdsX1Bvc2l0aW9uID0gYV9wb3Np
dGlvbjsnLAorICAgICcgICAgdGVzdFZhcnlpbmcgPSBpbnQoZ2xfVmlld0lEX09WUik7JywKKyAg
ICAnfSddLmpvaW4oJ1xuJyk7CisgICAgcmV0dXJuIHd0dS5yZXBsYWNlUGFyYW1zKHNoYWRlckNv
ZGUsIHsnbnVtX3ZpZXdzJzogdmlld3N9KTsKK30KKworZnVuY3Rpb24gZ2V0TXVsdGl2aWV3Rmxh
dFZhcnlpbmdGcmFnbWVudFNoYWRlcigpIHsKKyAgICByZXR1cm4gWycjdmVyc2lvbiAzMDAgZXMn
LAorICAgICcjZXh0ZW5zaW9uIEdMX09WUl9tdWx0aXZpZXcyIDogcmVxdWlyZScsCisgICAgJ3By
ZWNpc2lvbiBoaWdocCBmbG9hdDsnLAorCisgICAgJ2ZsYXQgaW4gaW50IHRlc3RWYXJ5aW5nOycs
CisgICAgJ291dCB2ZWM0IG15X0ZyYWdDb2xvcjsnLAorCisgICAgJ3ZvaWQgbWFpbigpIHsnLAor
ICAgICcgICAgaW50IG1hc2sgPSB0ZXN0VmFyeWluZyArIDE7JywKKyAgICAnICAgIG15X0ZyYWdD
b2xvciA9IHZlYzQoKChtYXNrICYgNCkgIT0gMCkgPyAxLjAgOiAwLjAsJywKKyAgICAnICAgICAg
ICAgICAgICAgICAgICAgICAgKChtYXNrICYgMikgIT0gMCkgPyAxLjAgOiAwLjAsJywKKyAgICAn
ICAgICAgICAgICAgICAgICAgICAgICAgKChtYXNrICYgMSkgIT0gMCkgPyAxLjAgOiAwLjAsJywK
KyAgICAnICAgICAgICAgICAgICAgICAgICAgICAgMS4wKTsnLAorICAgICd9J10uam9pbignXG4n
KTsKK30KKworZnVuY3Rpb24gZ2V0TXVsdGl2aWV3SW5zdGFuY2VkVmVydGV4U2hhZGVyKHZpZXdz
KSB7CisgICAgbGV0IHNoYWRlckNvZGUgPSBbJyN2ZXJzaW9uIDMwMCBlcycsCisgICAgJyNleHRl
bnNpb24gR0xfT1ZSX211bHRpdmlldzIgOiByZXF1aXJlJywKKworICAgICdsYXlvdXQobnVtX3Zp
ZXdzID0gJChudW1fdmlld3MpKSBpbjsnLAorCisgICAgJ2luIHZlYzQgYV9wb3NpdGlvbjsnLAor
ICAgICdvdXQgdmVjNCBjb2xvcjsnLAorCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAg
dmVjNCBwb3MgPSBhX3Bvc2l0aW9uOycsCisgICAgIiAgICAvLyBUcmFuc2Zvcm0gdGhlIHF1YWQg
dG8gYSB0aGluIHZlcnRpY2FsIHN0cmlwIHRoYXQncyBvZmZzZXQgYWxvbmcgdGhlIHggYXhpcyBh
Y2NvcmRpbmcgdG8gdGhlIHZpZXcgaWQgYW5kIGluc3RhbmNlIGlkLiIsCisgICAgJyAgICBwb3Mu
eCA9IChwb3MueCAqIDAuNSArIDAuNSArIGZsb2F0KGdsX1ZpZXdJRF9PVlIpICsgZmxvYXQoZ2xf
SW5zdGFuY2VJRCkpICogMi4wIC8gKCQobnVtX3ZpZXdzKS4wICogMi4wKSAtIDEuMDsnLAorICAg
ICcgICAgaW50IG1hc2sgPSBnbF9JbnN0YW5jZUlEICsgMTsnLAorICAgICcgICAgY29sb3IgPSB2
ZWM0KCgobWFzayAmIDQpICE9IDApID8gMS4wIDogMC4wLCcsCisgICAgJyAgICAgICAgICAgICAg
ICAgKChtYXNrICYgMikgIT0gMCkgPyAxLjAgOiAwLjAsJywKKyAgICAnICAgICAgICAgICAgICAg
ICAoKG1hc2sgJiAxKSAhPSAwKSA/IDEuMCA6IDAuMCwnLAorICAgICcgICAgICAgICAgICAgICAg
IDEuMCk7JywKKyAgICAnICAgIGdsX1Bvc2l0aW9uID0gcG9zOycsCisgICAgJ30nXS5qb2luKCdc
bicpOworICAgIHJldHVybiB3dHUucmVwbGFjZVBhcmFtcyhzaGFkZXJDb2RlLCB7J251bV92aWV3
cyc6IHZpZXdzfSk7Cit9CisKK2Z1bmN0aW9uIGdldEluc3RhbmNlQ29sb3JGcmFnbWVudFNoYWRl
cigpIHsKKyAgICByZXR1cm4gWycjdmVyc2lvbiAzMDAgZXMnLAorICAgICcjZXh0ZW5zaW9uIEdM
X09WUl9tdWx0aXZpZXcyIDogcmVxdWlyZScsCisgICAgJ3ByZWNpc2lvbiBoaWdocCBmbG9hdDsn
LAorCisgICAgJ2luIHZlYzQgY29sb3I7JywKKyAgICAnb3V0IHZlYzQgbXlfRnJhZ0NvbG9yOycs
CisKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyAgICBteV9GcmFnQ29sb3IgPSBjb2xvcjsn
LAorICAgICd9J10uam9pbignXG4nKTsKK30KKworZnVuY3Rpb24gZ2V0RXhwZWN0ZWRDb2xvcih2
aWV3KSB7CisgICAgdmFyIG1hc2sgPSAodmlldyArIDEpOworICAgIHJldHVybiBbKG1hc2sgJiA0
KSA/IDI1NSA6IDAsIChtYXNrICYgMikgPyAyNTUgOiAwLCAobWFzayAmIDEpID8gMjU1IDogMCwg
MjU1XTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFz
LXN1Yi1yZWN0YW5nbGUuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1z
dWItcmVjdGFuZ2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MmY4MzI0NTEzYzQwNTdlMmFlOWM4Yzg2N2Vi
Yjk3Y2U1YzcyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzCkBAIC0wLDAgKzEsMjkyIEBACisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChp
bnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291cmNl
UGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9uKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7Cisg
ICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworICAgIHZhciByZWFsUmVkQ29sb3Ig
PSBbMjU1LCAwLCAwXTsKKyAgICB2YXIgcmVhbEdyZWVuQ29sb3IgPSBbMCwgMjU1LCAwXTsKKyAg
ICB2YXIgcmVhbEJsdWVDb2xvciA9IFswLCAwLCAyNTVdOworICAgIHZhciByZWFsQ3lhbkNvbG9y
ID0gWzAsIDI1NSwgMjU1XTsKKyAgICB2YXIgcmVkQ29sb3IgPSByZWFsUmVkQ29sb3I7CisgICAg
dmFyIGdyZWVuQ29sb3IgPSByZWFsR3JlZW5Db2xvcjsKKyAgICB2YXIgYmx1ZUNvbG9yID0gcmVh
bEJsdWVDb2xvcjsKKyAgICB2YXIgY3lhbkNvbG9yID0gcmVhbEN5YW5Db2xvcjsKKworICAgIGZ1
bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFn
ZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIGEgc3ViLXJlY3RhbmdsZSBv
ZiBhIGNhbnZhcyAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycg
KyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0
IHZlcnNpb24gd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkg
c3RyaW5nIHRvIG92ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZl
cnNpb24oZGVmYXVsdENvbnRleHRWZXJzaW9uKTsKKworICAgICAgICAvLyBUaGUgc3ViLXJlY3Rh
bmdsZSB0ZXN0cyBvbmx5IGFwcGx5IHRvIFdlYkdMIDIuMCBmb3IgdGhlCisgICAgICAgIC8vIHRp
bWUgYmVpbmcsIHRob3VnaCB0aGUgdGVzdHMgZm9yIHRoZSBXZWJHTCAxLjAKKyAgICAgICAgLy8g
Zm9ybWF0L2ludGVybmFsIGZvcm1hdC90eXBlIGNvbWJpbmF0aW9ucyBhcmUgZ2VuZXJhdGVkIGlu
dG8KKyAgICAgICAgLy8gY29uZm9ybWFuY2UvdGV4dHVyZXMvLgorICAgICAgICBpZiAod3R1Lmdl
dERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCkgPCAyKSB7CisgICAgICAgICAgICBkZWJ1ZygnVGVz
dCBvbmx5IGFwcGxpZXMgdG8gV2ViR0wgMi4wJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoImV4YW1wbGUiLCB7IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSB9KTsK
KworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChnbFtw
aXhlbEZvcm1hdF0pIHsKKyAgICAgICAgY2FzZSBnbC5SRUQ6CisgICAgICAgIGNhc2UgZ2wuUkVE
X0lOVEVHRVI6CisgICAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBi
bHVlQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgY3lhbkNvbG9yID0gWzAsIDAsIDBdOwor
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgZ2wuUkc6CisgICAgICAgIGNhc2UgZ2wu
UkdfSU5URUdFUjoKKyAgICAgICAgICBibHVlQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAg
Y3lhbkNvbG9yID0gWzAsIDI1NSwgMF07CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBnbC5MVU1JTkFOQ0U6CisgICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOgorICAgICAg
ICAgIHJlZENvbG9yID0gWzI1NSwgMjU1LCAyNTVdOworICAgICAgICAgIGdyZWVuQ29sb3IgPSBb
MCwgMCwgMF07CisgICAgICAgICAgYmx1ZUNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgIGN5
YW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGds
LkFMUEhBOgorICAgICAgICAgIHJlZENvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgIGdyZWVu
Q29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgYmx1ZUNvbG9yID0gWzAsIDAsIDBdOworICAg
ICAgICAgIGN5YW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xl
YXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKyAgICAgICAgZ2wu
ZGlzYWJsZShnbC5CTEVORCk7CisKKyAgICAgICAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgIHJ1blRlc3QoY2FudmFzMmQsIHNldHVwU291
cmNlQ2FudmFzMkQsICcyRC1yZW5kZXJlZCBjYW52YXMnKTsKKworICAgICAgICB2YXIgY2FudmFz
V2ViR0wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICAgICAgcnVuVGVz
dChjYW52YXNXZWJHTCwgc2V0dXBTb3VyY2VDYW52YXNXZWJHTCwgJ1dlYkdMLXJlbmRlcmVkIGNh
bnZhcycpOworCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
aWxsU3R5bGUyRChjdHgsIGNvbG9yKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcg
KyBjb2xvclswXSArICcsICcgKyBjb2xvclsxXSArICcsICcgKyBjb2xvclsyXSArICcpJzsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzZXR1cFNvdXJjZUNhbnZhczJEKGNhbnZhcykgeworICAgICAg
ICB2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7CisgICAgICAgIHZhciBoZWlnaHQgPSBjYW52YXMu
aGVpZ2h0OworICAgICAgICB2YXIgaGFsZldpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOwor
ICAgICAgICB2YXIgaGFsZkhlaWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0IC8gMik7CisKKyAgICAg
ICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgICAgICAvLyBBbHdheXMg
dXNlIHRoZSBzYW1lIHBhdHRlcm4gZm9yIHRoaXMgdGVzdDogZm91ciBxdWFkcmFudHM6CisgICAg
ICAgIC8vICAgcmVkICAgIGdyZWVuCisgICAgICAgIC8vICAgYmx1ZSAgIGN5YW4KKyAgICAgICAg
Ly8gSGFuZGxlIG9kZC1zaXplZCBjYW52YXNlcworICAgICAgICBmaWxsU3R5bGUyRChjdHgsIHJl
YWxSZWRDb2xvcik7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBoYWxmV2lkdGgsIGhhbGZI
ZWlnaHQpOworICAgICAgICBmaWxsU3R5bGUyRChjdHgsIHJlYWxHcmVlbkNvbG9yKTsKKyAgICAg
ICAgY3R4LmZpbGxSZWN0KGhhbGZXaWR0aCwgMCwgd2lkdGggLSBoYWxmV2lkdGgsIGhhbGZIZWln
aHQpOworICAgICAgICBmaWxsU3R5bGUyRChjdHgsIHJlYWxCbHVlQ29sb3IpOworICAgICAgICBj
dHguZmlsbFJlY3QoMCwgaGFsZkhlaWdodCwgaGFsZldpZHRoLCBoZWlnaHQgLSBoYWxmSGVpZ2h0
KTsKKyAgICAgICAgZmlsbFN0eWxlMkQoY3R4LCByZWFsQ3lhbkNvbG9yKTsKKyAgICAgICAgY3R4
LmZpbGxSZWN0KGhhbGZXaWR0aCwgaGFsZkhlaWdodCwgd2lkdGggLSBoYWxmV2lkdGgsIGhlaWdo
dCAtIGhhbGZIZWlnaHQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNsZWFyQ29sb3JXZWJHTChj
dHgsIGNvbG9yKSB7CisgICAgICAgIGN0eC5jbGVhckNvbG9yKGNvbG9yWzBdIC8gMjU1LjAsIGNv
bG9yWzFdIC8gMjU1LjAsIGNvbG9yWzJdIC8gMjU1LjAsIDEuMCk7CisgICAgICAgIGN0eC5jbGVh
cihjdHguQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0dXBTb3Vy
Y2VDYW52YXNXZWJHTChjYW52YXMpIHsKKyAgICAgICAgdmFyIHdpZHRoID0gY2FudmFzLndpZHRo
OworICAgICAgICB2YXIgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKKyAgICAgICAgdmFyIGhhbGZX
aWR0aCA9IE1hdGguZmxvb3Iod2lkdGggLyAyKTsKKyAgICAgICAgdmFyIGhhbGZIZWlnaHQgPSBN
YXRoLmZsb29yKGhlaWdodCAvIDIpOworCisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnd2ViZ2wnKTsKKyAgICAgICAgLy8gQWx3YXlzIHVzZSB0aGUgc2FtZSBwYXR0ZXJuIGZv
ciB0aGlzIHRlc3Q6IGZvdXIgcXVhZHJhbnRzOgorICAgICAgICAvLyAgIHJlZCAgICBncmVlbgor
ICAgICAgICAvLyAgIGJsdWUgICBjeWFuCisgICAgICAgIC8vIEhhbmRsZSBvZGQtc2l6ZWQgY2Fu
dmFzZXMKKworICAgICAgICBjdHgudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIGN0eC5lbmFibGUoY3R4LlNDSVNTT1JfVEVTVCk7CisgICAgICAgIC8vIE9wZW5HTCBvcmln
aW4gaXMgbG93ZXItbGVmdAorICAgICAgICBjdHguc2Npc3NvcigwLCAwLCBoYWxmV2lkdGgsIGhh
bGZIZWlnaHQpOworICAgICAgICBjbGVhckNvbG9yV2ViR0woY3R4LCByZWFsQmx1ZUNvbG9yKTsK
KyAgICAgICAgY3R4LnNjaXNzb3IoaGFsZldpZHRoLCAwLCB3aWR0aCAtIGhhbGZXaWR0aCwgaGFs
ZkhlaWdodCk7CisgICAgICAgIGNsZWFyQ29sb3JXZWJHTChjdHgsIHJlYWxDeWFuQ29sb3IpOwor
ICAgICAgICBjdHguc2Npc3NvcigwLCBoYWxmSGVpZ2h0LCBoYWxmV2lkdGgsIGhlaWdodCAtIGhh
bGZIZWlnaHQpOworICAgICAgICBjbGVhckNvbG9yV2ViR0woY3R4LCByZWFsUmVkQ29sb3IpOwor
ICAgICAgICBjdHguc2Npc3NvcihoYWxmV2lkdGgsIGhhbGZIZWlnaHQsIHdpZHRoIC0gaGFsZldp
ZHRoLCBoZWlnaHQgLSBoYWxmSGVpZ2h0KTsKKyAgICAgICAgY2xlYXJDb2xvcldlYkdMKGN0eCwg
cmVhbEdyZWVuQ29sb3IpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbihz
b3VyY2VEZXNjcmlwdGlvbiwgdXNlVGV4U3ViSW1hZ2UyRCwgZmxpcFksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbnZhcywgY2FudmFzU2l6ZSwgY2FudmFzU2V0dXBGdW5jdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlLCBleHBlY3Rl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZ1RhcmdldCwgcHJvZ3JhbSkK
KyAgICB7CisgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0cmluZyA9ICcnOworICAgICAgICBp
ZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVT
dHJpbmcgPSAnLCBzb3VyY2VTdWJSZWN0YW5nbGU9JyArIHNvdXJjZVN1YlJlY3RhbmdsZTsKKyAg
ICAgICAgfQorICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcgKyBz
b3VyY2VEZXNjcmlwdGlvbiArICcgd2l0aCAnICsKKyAgICAgICAgICAgICAgKHVzZVRleFN1Yklt
YWdlMkQgPyAndGV4U3ViSW1hZ2UyRCcgOiAndGV4SW1hZ2UyRCcpICsKKyAgICAgICAgICAgICAg
JywgZmxpcFk9JyArIGZsaXBZICsKKyAgICAgICAgICAgICAgJywgYmluZGluZ1RhcmdldD0nICsg
KGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCA/ICdURVhUVVJFXzJEJyA6ICdURVhUVVJF
X0NVQkVfTUFQJykgKworICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVTdHJpbmcpOwor
CisgICAgICAgIHZhciBsb2M7CisgICAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRV
UkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiZmFjZSIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
Y29udGVudHMgb2YgdGhlIHNvdXJjZSBjYW52YXMuCisgICAgICAgIHZhciB3aWR0aCA9IGNhbnZh
c1NpemVbMF07CisgICAgICAgIHZhciBoZWlnaHQgPSBjYW52YXNTaXplWzFdOworICAgICAgICB2
YXIgaGFsZldpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOworICAgICAgICB2YXIgaGFsZkhl
aWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0IC8gMik7CisgICAgICAgIGNhbnZhcy53aWR0aCA9IHdp
ZHRoOworICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBjYW52YXNTZXR1
cEZ1bmN0aW9uKGNhbnZhcyk7CisKKyAgICAgICAgLy8gVXBsb2FkIHRoZSBzb3VyY2UgY2FudmFz
IHRvIHRoZSB0ZXh0dXJlIGFuZCBkcmF3IGl0IHRvIGEgcXVhZC4KKyAgICAgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICAvLyBF
bmFibGUgd3JpdGVzIHRvIHRoZSBSR0JBIGNoYW5uZWxzCisgICAgICAgIGdsLmNvbG9yTWFzaygx
LCAxLCAxLCAwKTsKKyAgICAgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wu
YmluZFRleHR1cmUoYmluZGluZ1RhcmdldCwgdGV4dHVyZSk7CisgICAgICAgIC8vIFNldCB1cCB0
ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJh
bWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7
CisgICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAgZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisgICAg
ICAgIHd0dS5mYWlsSWZHTEVycm9yKGdsLCAnZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0NPTE9S
U1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7Jyk7CisgICAgICAgIHZhciB0YXJnZXRz
ID0gW2dsLlRFWFRVUkVfMkRdOworICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhU
VVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICB0YXJnZXRzID0gW2dsLlRFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9aLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1pdOworICAgICAgICB9CisgICAgICAgIC8vIEluIHRoaXMgdGVzdCwgdGhpcyBpcyBh
bHdheXMgc3BlY2lmaWVkLiBJdCdzIGN1cnJlbnRseSBXZWJHTCAyLjAtc3BlY2lmaWMuCisgICAg
ICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywgc291cmNlU3ViUmVjdGFu
Z2xlWzBdKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgc291
cmNlU3ViUmVjdGFuZ2xlWzFdKTsKKyAgICAgICAgLy8gVXBsb2FkIHRoZSBpbWFnZSBpbnRvIHRo
ZSB0ZXh0dXJlCisgICAgICAgIHZhciB1cGxvYWRXaWR0aCA9IHNvdXJjZVN1YlJlY3RhbmdsZVsy
XTsKKyAgICAgICAgdmFyIHVwbG9hZEhlaWdodCA9IHNvdXJjZVN1YlJlY3RhbmdsZVszXTsKKyAg
ICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAg
ICAgICAgICBpZiAodXNlVGV4U3ViSW1hZ2UyRCkgeworICAgICAgICAgICAgICAgIC8vIEluaXRp
YWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAgICAgICAgICBnbC50ZXhJ
bWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1hdF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGxvYWRXaWR0aCwgdXBsb2FkSGVpZ2h0LCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBudWxs
KTsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkV2lkdGgsIHVwbG9hZEhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwg
Z2xbcGl4ZWxUeXBlXSwgY2FudmFzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4
ZWxUeXBlXSwgY2FudmFzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIDApOworCisgICAgICAgIC8vIFRoZSB0ZXN0cyBh
cmUgY29uc3RydWN0ZWQgdG8gdXBsb2FkIGEgc2luZ2xlIHNvbGlkIGNvbG9yCisgICAgICAgIC8v
IG91dCBvZiB0aGUgY2FudmFzLgorICAgICAgICB2YXIgb3V0cHV0Q2FudmFzV2lkdGggPSBnbC5k
cmF3aW5nQnVmZmVyV2lkdGg7CisgICAgICAgIHZhciBvdXRwdXRDYW52YXNIZWlnaHQgPSBnbC5k
cmF3aW5nQnVmZmVySGVpZ2h0OworCisgICAgICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJn
ZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wu
VEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgICAgIGdsLnVuaWZvcm0xaShsb2MsIHRh
cmdldHNbdHRdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIERyYXcgdGhlIHRyaWFu
Z2xlcworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwg
MjU1XSk7CisKKyAgICAgICAgICAgIHZhciBtc2cgPSAnc2hvdWxkIGJlICcgKyBleHBlY3RlZDsK
KyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIG91dHB1dENhbnZhc1dp
ZHRoLCBvdXRwdXRDYW52YXNIZWlnaHQsIGV4cGVjdGVkLCBtc2cpOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gcnVuVGVzdChjYW52YXMsIGNhbnZhc1NldHVwRnVuY3Rpb24sIHNv
dXJjZURlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIHByb2dyYW0gPSB0aXUuc2V0dXBU
ZXh0dXJlZFF1YWQoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgcnVuVGVzdE9uQmluZGlu
Z1RhcmdldChnbC5URVhUVVJFXzJELCBwcm9ncmFtLCBjYW52YXMsIGNhbnZhc1NldHVwRnVuY3Rp
b24sIHNvdXJjZURlc2NyaXB0aW9uKTsKKyAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1
cmVkUXVhZFdpdGhDdWJlTWFwKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIHJ1blRlc3RP
bkJpbmRpbmdUYXJnZXQoZ2wuVEVYVFVSRV9DVUJFX01BUCwgcHJvZ3JhbSwgY2FudmFzLCBjYW52
YXNTZXR1cEZ1bmN0aW9uLCBzb3VyY2VEZXNjcmlwdGlvbik7CisKKyAgICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcnVuVGVzdE9uQmluZGluZ1RhcmdldChiaW5kaW5nVGFyZ2V0LCBw
cm9ncmFtLCBjYW52YXMsIGNhbnZhc1NldHVwRnVuY3Rpb24sIHNvdXJjZURlc2NyaXB0aW9uKSB7
CisgICAgICAgIHZhciBjYXNlcyA9IFsKKyAgICAgICAgICAgIC8vIFNtYWxsIGNhbnZhcyBjYXNl
cy4gRXhwZWN0ZWQgdGhhdCB0aGVzZSB3b24ndCBiZQorICAgICAgICAgICAgLy8gR1BVLWFjY2Vs
ZXJhdGVkIGluIG1vc3QgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgIHsg
ZXhwZWN0ZWQ6IHJlZENvbG9yLCAgIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzIsIDJdLCBzdWJSZWN0
OiBbMCwgMCwgMSwgMV0gfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGdyZWVuQ29sb3IsIGZs
aXBZOiBmYWxzZSwgc2l6ZTogWzIsIDJdLCBzdWJSZWN0OiBbMSwgMCwgMSwgMV0gfSwKKyAgICAg
ICAgICAgIHsgZXhwZWN0ZWQ6IGJsdWVDb2xvciwgIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzIsIDJd
LCBzdWJSZWN0OiBbMCwgMSwgMSwgMV0gfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGN5YW5D
b2xvciwgIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzIsIDJdLCBzdWJSZWN0OiBbMSwgMSwgMSwgMV0g
fSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IHJlZENvbG9yLCAgIGZsaXBZOiB0cnVlLCAgc2l6
ZTogWzIsIDJdLCBzdWJSZWN0OiBbMCwgMSwgMSwgMV0gfSwKKyAgICAgICAgICAgIHsgZXhwZWN0
ZWQ6IGdyZWVuQ29sb3IsIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzIsIDJdLCBzdWJSZWN0OiBbMSwg
MSwgMSwgMV0gfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGJsdWVDb2xvciwgIGZsaXBZOiB0
cnVlLCAgc2l6ZTogWzIsIDJdLCBzdWJSZWN0OiBbMCwgMCwgMSwgMV0gfSwKKyAgICAgICAgICAg
IHsgZXhwZWN0ZWQ6IGN5YW5Db2xvciwgIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzIsIDJdLCBzdWJS
ZWN0OiBbMSwgMCwgMSwgMV0gfSwKKworICAgICAgICAgICAgLy8gTGFyZ2VyIGNhbnZhcyBjYXNl
cy4gRXhwZWN0ZWQgdGhhdCB0aGVzZSB3aWxsIGJlCisgICAgICAgICAgICAvLyBHUFUtYWNjZWxl
cmF0ZWQgaW4gbW9zdCBicm93c2VycycgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgLy8g
Q2hhbmdlcyB3aWxsIGJlIGdsYWRseSBhY2NlcHRlZCB0byB0cmlnZ2VyIG1vcmUKKyAgICAgICAg
ICAgIC8vIGJyb3dzZXJzJyBoZXVyaXN0aWNzIHRvIGFjY2VsZXJhdGUgdGhlc2UgY2FudmFzZXMu
CisgICAgICAgICAgICB7IGV4cGVjdGVkOiByZWRDb2xvciwgICBmbGlwWTogZmFsc2UsIHNpemU6
IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsgIDAsICAgMCwgMTkyLCAxOTJdIH0sCisgICAgICAgICAg
ICB7IGV4cGVjdGVkOiBncmVlbkNvbG9yLCBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0s
IHN1YlJlY3Q6IFsxOTIsICAgMCwgMTkyLCAxOTJdIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVk
OiBibHVlQ29sb3IsICBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsg
IDAsIDE5MiwgMTkyLCAxOTJdIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBjeWFuQ29sb3Is
ICBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIsIDE5MiwgMTky
LCAxOTJdIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBibHVlQ29sb3IsICBmbGlwWTogdHJ1
ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsgIDAsICAgMCwgMTkyLCAxOTJdIH0sCisg
ICAgICAgICAgICB7IGV4cGVjdGVkOiBjeWFuQ29sb3IsICBmbGlwWTogdHJ1ZSwgIHNpemU6IFsz
ODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIsICAgMCwgMTkyLCAxOTJdIH0sCisgICAgICAgICAgICB7
IGV4cGVjdGVkOiByZWRDb2xvciwgICBmbGlwWTogdHJ1ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1
YlJlY3Q6IFsgIDAsIDE5MiwgMTkyLCAxOTJdIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBn
cmVlbkNvbG9yLCBmbGlwWTogdHJ1ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIs
IDE5MiwgMTkyLCAxOTJdIH0sCisKKyAgICAgICAgXTsKKworICAgICAgICBmb3IgKHZhciBpIGlu
IGNhc2VzKSB7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oc291cmNlRGVzY3JpcHRpb24s
IGZhbHNlLCBjYXNlc1tpXS5mbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52
YXMsIGNhc2VzW2ldLnNpemUsIGNhbnZhc1NldHVwRnVuY3Rpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZXNbaV0uc3ViUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlc1tpXS5leHBlY3RlZCwgYmluZGluZ1RhcmdldCwgcHJvZ3JhbSk7CisgICAgICAgICAg
ICBydW5PbmVJdGVyYXRpb24oc291cmNlRGVzY3JpcHRpb24sIHRydWUsIGNhc2VzW2ldLmZsaXBZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcywgY2FzZXNbaV0uc2l6ZSwgY2Fu
dmFzU2V0dXBGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5z
dWJSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLmV4cGVjdGVkLCBi
aW5kaW5nVGFyZ2V0LCBwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBp
bml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMu
anMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OTZlZWI5ZGUwYmFlZjQzZjE5NGU3OTk0YTI4YzI4OTc5NTRmOTZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMuanMKQEAgLTAsMCArMSw0Njgg
QEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworZnVuY3Rpb24g
Z2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9s
b2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFy
IGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFy
IHdoaXRlQ29sb3IgPSBbMjU1LCAyNTUsIDI1NSwgMjU1XTsKKyAgICB2YXIgcmVkQ29sb3IgPSBb
MjU1LCAwLCAwLCAyNTVdOworICAgIHZhciBncmVlbkNvbG9yID0gWzAsIDI1NSwgMCwgMjU1XTsK
KyAgICB2YXIgc2VtaVRyYW5zcGFyZW50UmVkQ29sb3IgPSBbMTI3LCAwLCAwLCAxMjddOworICAg
IHZhciBzZW1pVHJhbnNwYXJlbnRHcmVlbkNvbG9yID0gWzAsIDEyNywgMCwgMTI3XTsKKyAgICB2
YXIgcmVwZWF0Q291bnQ7CisKKyAgICBmdW5jdGlvbiByZXBsaWNhdGVSZWRDaGFubmVsKGNvbG9y
KQorICAgIHsKKyAgICAgICAgY29sb3JbMV0gPSBjb2xvclswXTsKKyAgICAgICAgY29sb3JbMl0g
PSBjb2xvclswXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB6YXBDb2xvckNoYW5uZWxzKGNvbG9y
KQorICAgIHsKKyAgICAgICAgY29sb3JbMF0gPSAwOworICAgICAgICBjb2xvclsxXSA9IDA7Cisg
ICAgICAgIGNvbG9yWzJdID0gMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRBbHBoYUNoYW5u
ZWxUbzEoY29sb3IpCisgICAgeworICAgICAgICBjb2xvclszXSA9IDI1NTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiByZXBsaWNhdGVBbGxSZWRDaGFubmVscygpCisgICAgeworICAgICAgICByZXBs
aWNhdGVSZWRDaGFubmVsKHJlZENvbG9yKTsKKyAgICAgICAgcmVwbGljYXRlUmVkQ2hhbm5lbChz
ZW1pVHJhbnNwYXJlbnRSZWRDb2xvcik7CisgICAgICAgIHJlcGxpY2F0ZVJlZENoYW5uZWwoZ3Jl
ZW5Db2xvcik7CisgICAgICAgIHJlcGxpY2F0ZVJlZENoYW5uZWwoc2VtaVRyYW5zcGFyZW50R3Jl
ZW5Db2xvcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0QWxsQWxwaGFDaGFubmVsc1RvMSgp
CisgICAgeworICAgICAgICBzZXRBbHBoYUNoYW5uZWxUbzEocmVkQ29sb3IpOworICAgICAgICBz
ZXRBbHBoYUNoYW5uZWxUbzEoc2VtaVRyYW5zcGFyZW50UmVkQ29sb3IpOworICAgICAgICBzZXRB
bHBoYUNoYW5uZWxUbzEoZ3JlZW5Db2xvcik7CisgICAgICAgIHNldEFscGhhQ2hhbm5lbFRvMShz
ZW1pVHJhbnNwYXJlbnRHcmVlbkNvbG9yKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXBlYXRD
b3VudEZvclRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5
cGUpCisgICAgeworICAgICAgICAvLyBUaGVyZSB3ZXJlIGJ1Z3MgaW4gZWFybHkgV2ViR0wgMS4w
IGltcGxlbWVudGF0aW9ucyB3aGVuIHJlcGVhdGVkbHkgdXBsb2FkaW5nIGNhbnZhcworICAgICAg
ICAvLyBlbGVtZW50cyBpbnRvIHRleHR1cmVzLiBJbiByZXNwb25zZSwgdGhpcyB0ZXN0IHdhcyBj
aGFuZ2VkIGludG8gYSByZWdyZXNzaW9uIHRlc3QgYnkKKyAgICAgICAgLy8gcmVwZWF0aW5nIGFs
bCBvZiB0aGUgY2FzZXMgbXVsdGlwbGUgdGltZXMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMg
dGhhdCBhZGRpbmcgYSBuZXcKKyAgICAgICAgLy8gY2FzZSBhYm92ZSBzaWduaWZpY2FudGx5IGlu
Y3JlYXNlcyB0aGUgcnVuIHRpbWUgb2YgdGhlIHRlc3Qgc3VpdGUuIFRoZSBwcm9ibGVtIGlzIG1h
ZGUKKyAgICAgICAgLy8gZXZlbiB3b3JzZSBieSB0aGUgYWRkaXRpb24gb2YgbWFueSBtb3JlIHRl
eHR1cmUgZm9ybWF0cyBpbiBXZWJHTCAyLjAuCisgICAgICAgIC8vCisgICAgICAgIC8vIERvaW5n
IHJlcGVhdGVkIHJ1bnMgd2l0aCBqdXN0IGEgY291cGxlIG9mIFdlYkdMIDEuMCdzIHN1cHBvcnRl
ZCB0ZXh0dXJlIGZvcm1hdHMgYWN0cyBhcyBhCisgICAgICAgIC8vIHN1ZmZpY2llbnQgcmVncmVz
c2lvbiB0ZXN0IGZvciB0aGUgb2xkIGJ1Z3MuIEZvciB0aGlzIHJlYXNvbiB0aGUgdGVzdCBoYXMg
YmVlbiBjaGFuZ2VkIHRvCisgICAgICAgIC8vIG9ubHkgcmVwZWF0IGZvciB0aG9zZSB0ZXh0dXJl
IGZvcm1hdHMuCisgICAgICAgIGlmICgoaW50ZXJuYWxGb3JtYXQgPT0gJ1JHQkEnICYmIHBpeGVs
Rm9ybWF0ID09ICdSR0JBJyAmJiBwaXhlbFR5cGUgPT0gJ1VOU0lHTkVEX0JZVEUnKSB8fAorICAg
ICAgICAgICAgKGludGVybmFsRm9ybWF0ID09ICdSR0InICYmIHBpeGVsRm9ybWF0ID09ICdSR0In
ICYmIHBpeGVsVHlwZSA9PSAnVU5TSUdORURfQllURScpKSB7CisgICAgICAgICAgICByZXR1cm4g
NDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGluaXQoKQorICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTJEIGFu
ZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIGNhbnZhcyBlbGVtZW50cyAoJyArIGlu
dGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScp
OworCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hpbGUgc3Rp
bGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92ZXJyaWRl
IGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVsdENvbnRl
eHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7
CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcGVhdENvdW50
ID0gcmVwZWF0Q291bnRGb3JUZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1h
dCwgcGl4ZWxUeXBlKTsKKworICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAg
ICAgICAgIGNhc2UgZ2wuUkVEOgorICAgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAg
ICAgICAgICAvLyBaYXAgZ3JlZW4gYW5kIGJsdWUgY2hhbm5lbHMuCisgICAgICAgICAgICB3aGl0
ZUNvbG9yWzFdID0gMDsKKyAgICAgICAgICAgIHdoaXRlQ29sb3JbMl0gPSAwOworICAgICAgICAg
ICAgZ3JlZW5Db2xvclsxXSA9IDA7CisgICAgICAgICAgICBzZW1pVHJhbnNwYXJlbnRHcmVlbkNv
bG9yWzFdID0gMDsKKyAgICAgICAgICAgIC8vIEFscGhhIGNoYW5uZWwgaXMgMS4wLgorICAgICAg
ICAgICAgc2V0QWxsQWxwaGFDaGFubmVsc1RvMSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBnbC5SRzoKKyAgICAgICAgICBjYXNlIGdsLlJHX0lOVEVHRVI6CisgICAgICAg
ICAgICAvLyBaYXAgYmx1ZSBjaGFubmVsLgorICAgICAgICAgICAgd2hpdGVDb2xvclsyXSA9IDA7
CisgICAgICAgICAgICAvLyBBbHBoYSBjaGFubmVsIGlzIDEuMC4KKyAgICAgICAgICAgIHNldEFs
bEFscGhhQ2hhbm5lbHNUbzEoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
Z2wuTFVNSU5BTkNFOgorICAgICAgICAgICAgLy8gUmVwbGljYXRlIHJlZCBjaGFubmVscy4KKyAg
ICAgICAgICAgIHJlcGxpY2F0ZUFsbFJlZENoYW5uZWxzKCk7CisgICAgICAgICAgICAvLyBBbHBo
YSBjaGFubmVsIGlzIDEuMC4KKyAgICAgICAgICAgIHNldEFsbEFscGhhQ2hhbm5lbHNUbzEoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgZ2wuQUxQSEE6CisgICAgICAgICAg
ICAvLyBSZWQsIGdyZWVuIGFuZCBibHVlIGNoYW5uZWxzIGFyZSBhbGwgMC4wLgorICAgICAgICAg
ICAgemFwQ29sb3JDaGFubmVscyhyZWRDb2xvcik7CisgICAgICAgICAgICB6YXBDb2xvckNoYW5u
ZWxzKHNlbWlUcmFuc3BhcmVudFJlZENvbG9yKTsKKyAgICAgICAgICAgIHphcENvbG9yQ2hhbm5l
bHMoZ3JlZW5Db2xvcik7CisgICAgICAgICAgICB6YXBDb2xvckNoYW5uZWxzKHNlbWlUcmFuc3Bh
cmVudEdyZWVuQ29sb3IpOworICAgICAgICAgICAgemFwQ29sb3JDaGFubmVscyh3aGl0ZUNvbG9y
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhB
OgorICAgICAgICAgICAgLy8gUmVwbGljYXRlIHJlZCBjaGFubmVscy4KKyAgICAgICAgICAgIHJl
cGxpY2F0ZUFsbFJlZENoYW5uZWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
YXNlIGdsLlJHQjoKKyAgICAgICAgICBjYXNlIGdsLlJHQl9JTlRFR0VSOgorICAgICAgICAgICAg
Ly8gQWxwaGEgY2hhbm5lbCBpcyAxLjAuCisgICAgICAgICAgICBzZXRBbGxBbHBoYUNoYW5uZWxz
VG8xKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGdsW2ludGVybmFsRm9ybWF0
XSkgeworICAgICAgICAgIGNhc2UgZ2wuU1JHQjg6CisgICAgICAgICAgY2FzZSBnbC5TUkdCOF9B
TFBIQTg6CisgICAgICAgICAgICBzZW1pVHJhbnNwYXJlbnRSZWRDb2xvciA9IHd0dS5zUkdCVG9M
aW5lYXIoc2VtaVRyYW5zcGFyZW50UmVkQ29sb3IpOworICAgICAgICAgICAgc2VtaVRyYW5zcGFy
ZW50R3JlZW5Db2xvciA9IHd0dS5zUkdCVG9MaW5lYXIoc2VtaVRyYW5zcGFyZW50R3JlZW5Db2xv
cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIGdsLlJHQkE4VUk6CisgICAg
ICAgICAgICAvLyBGb3IgaW50IGFuZCB1aW50IHRleHR1cmVzLCBUZXhJbWFnZVV0aWxzIG91dHB1
dHMgdGhlIG1heGltdW0gdmFsdWUgKGluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgIC8vIDI1NSkg
Zm9yIHRoZSBhbHBoYSBjaGFubmVsIGFsbCB0aGUgdGltZSBiZWNhdXNlIG9mIGRpZmZlcmVuY2Vz
IGluIGJlaGF2aW9yIHdoZW4KKyAgICAgICAgICAgIC8vIHNhbXBsaW5nIGludGVnZXIgdGV4dHVy
ZXMgd2l0aCBhbmQgd2l0aG91dCBhbHBoYSBjaGFubmVscy4gU2luY2UgY2hhbmdpbmcgdGhpcwor
ICAgICAgICAgICAgLy8gYmVoYXZpb3IgbWF5IGhhdmUgbGFyZ2UgaW1wYWN0IGFjcm9zcyB0aGUg
dGVzdCBzdWl0ZSwgbGVhdmUgaXQgYXMgaXMgZm9yIG5vdy4KKyAgICAgICAgICAgIHNldEFsbEFs
cGhhQ2hhbm5lbHNUbzEoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKwor
ICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG9SZWRH
cmVlbihjdHgpIHsKKyAgICAgIHZhciB3aWR0aCA9IGN0eC5jYW52YXMud2lkdGg7CisgICAgICB2
YXIgaGVpZ2h0ID0gY3R4LmNhbnZhcy5oZWlnaHQ7CisgICAgICB2YXIgaGFsZkhlaWdodCA9IE1h
dGguZmxvb3IoaGVpZ2h0IC8gMik7CisgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgY3R4LmZpbGxTdHlsZSA9ICIjZmYwMDAwIjsKKyAgICAgIGN0eC5maWxs
UmVjdCgwLCAwLCB3aWR0aCwgaGFsZkhlaWdodCk7CisgICAgICBjdHguZmlsbFN0eWxlID0gIiMw
MGZmMDAiOworICAgICAgY3R4LmZpbGxSZWN0KDAsIGhhbGZIZWlnaHQsIHdpZHRoLCBoZWlnaHQg
LSBoYWxmSGVpZ2h0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52YXNUb1NlbWlUcmFu
c3BhcmVudFJlZEdyZWVuKGN0eCkgeworICAgICAgdmFyIHdpZHRoID0gY3R4LmNhbnZhcy53aWR0
aDsKKyAgICAgIHZhciBoZWlnaHQgPSBjdHguY2FudmFzLmhlaWdodDsKKyAgICAgIHZhciBoYWxm
SGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKyAgICAgIGN0eC5jbGVhclJlY3QoMCwg
MCwgd2lkdGgsIGhlaWdodCk7CisgICAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMTI3LCAwLCAw
LCAwLjUpIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGFsZkhlaWdodCk7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMCwgMTI3LCAwLCAwLjUpIjsKKyAgICAgIGN0eC5m
aWxsUmVjdCgwLCBoYWxmSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0IC0gaGFsZkhlaWdodCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZHJhd1RleHRJbkNhbnZhcyhjdHgsIGJpbmRpbmdUYXJnZXQpIHsK
KyAgICAgIHZhciB3aWR0aCA9IGN0eC5jYW52YXMud2lkdGg7CisgICAgICB2YXIgaGVpZ2h0ID0g
Y3R4LmNhbnZhcy5oZWlnaHQ7CisgICAgICBjdHguZmlsbFN0eWxlID0gIiNmZmZmZmYiOworICAg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgY3R4LmZvbnQgPSAn
MjBwdCBBcmlhbCc7CisgICAgICBjdHguZmlsbFN0eWxlID0gJ2JsYWNrJzsKKyAgICAgIGN0eC50
ZXh0QWxpZ24gPSAiY2VudGVyIjsKKyAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAibWlkZGxlIjsK
KyAgICAgIGN0eC5maWxsVGV4dCgiMTIzNDU2Nzg5MCIsIHdpZHRoIC8gMiwgaGVpZ2h0IC8gNCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG8yNTd4MjU3KGN0eCwgYmluZGluZ1Rh
cmdldCkgeworICAgICAgY3R4LmNhbnZhcy53aWR0aCA9IDI1NzsKKyAgICAgIGN0eC5jYW52YXMu
aGVpZ2h0ID0gMjU3OworICAgICAgc2V0Q2FudmFzVG9SZWRHcmVlbihjdHgpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNldENhbnZhc1RvMjU3eDI1N1NlbWlUcmFuc3BhcmVudChjdHgsIGJpbmRp
bmdUYXJnZXQpIHsKKyAgICAgIGN0eC5jYW52YXMud2lkdGggPSAyNTc7CisgICAgICBjdHguY2Fu
dmFzLmhlaWdodCA9IDI1NzsKKyAgICAgIHNldENhbnZhc1RvU2VtaVRyYW5zcGFyZW50UmVkR3Jl
ZW4oY3R4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52YXNUb01pbihjdHgsIGJpbmRp
bmdUYXJnZXQpIHsKKyAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9N
QVApIHsKKyAgICAgICAgLy8gY3ViZSBtYXAgdGV4dHVyZSBtdXN0IGJlIHNxdWFyZS4KKyAgICAg
ICAgY3R4LmNhbnZhcy53aWR0aCA9IDI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguY2Fu
dmFzLndpZHRoID0gMTsKKyAgICAgIH0KKyAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gMjsKKyAg
ICAgIHNldENhbnZhc1RvUmVkR3JlZW4oY3R4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRD
YW52YXNUb01pblNlbWlUcmFuc3BhcmVudChjdHgsIGJpbmRpbmdUYXJnZXQpIHsKKyAgICAgIGlm
IChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgLy8gY3Vi
ZSBtYXAgdGV4dHVyZSBtdXN0IGJlIHNxdWFyZS4KKyAgICAgICAgY3R4LmNhbnZhcy53aWR0aCA9
IDI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguY2FudmFzLndpZHRoID0gMTsKKyAgICAg
IH0KKyAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gMjsKKyAgICAgIHNldENhbnZhc1RvU2VtaVRy
YW5zcGFyZW50UmVkR3JlZW4oY3R4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5PbmVJdGVy
YXRpb24oY2FudmFzLCB1c2VUZXhTdWJJbWFnZTJELCBmbGlwWSwgc2VtaVRyYW5zcGFyZW50LCBw
cm9ncmFtLCBiaW5kaW5nVGFyZ2V0LCBvcHRfdGV4dHVyZSwgb3B0X2ZvbnRUZXN0KQorICAgIHsK
KyAgICAgICAgdmFyIG9ialR5cGUgPSAnY2FudmFzJzsKKyAgICAgICAgaWYgKGNhbnZhcy50cmFu
c2ZlclRvSW1hZ2VCaXRtYXApCisgICAgICAgICAgb2JqVHlwZSA9ICdPZmZzY3JlZW5DYW52YXMn
OworICAgICAgICBkZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRleFN1YkltYWdlMkQgPyAndGV4U3Vi
SW1hZ2UyRCcgOiAndGV4SW1hZ2UyRCcpICsKKyAgICAgICAgICAgICAgJyB3aXRoIGZsaXBZPScg
KyBmbGlwWSArICcgYmluZGluZ1RhcmdldD0nICsgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVS
RV8yRCA/ICdURVhUVVJFXzJEJyA6ICdURVhUVVJFX0NVQkVfTUFQJykgKworICAgICAgICAgICAg
ICAnIGNhbnZhcyBzaXplOiAnICsgY2FudmFzLndpZHRoICsgJ3gnICsgY2FudmFzLmhlaWdodCAr
CisgICAgICAgICAgICAgICcgc291cmNlIG9iamVjdCB0eXBlOiAnICsgb2JqVHlwZSArCisgICAg
ICAgICAgICAgIChvcHRfZm9udFRlc3QgPyAiIHdpdGggZm9udHMiIDogIiB3aXRoIiArIChzZW1p
VHJhbnNwYXJlbnQgPyAiIHNlbWktdHJhbnNwYXJlbnQiIDogIiIpICsgIiByZWQtZ3JlZW4iKSk7
CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJf
QklUKTsKKyAgICAgICAgaWYgKCFvcHRfdGV4dHVyZSkgeworICAgICAgICAgICAgdmFyIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJl
IHRvIHRleHR1cmUgdW5pdCAwCisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFy
Z2V0LCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMK
KyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9N
SU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmlu
ZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFy
Z2V0LCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IG9wdF90ZXh0dXJlOworICAgICAgICB9Cisg
ICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAgZ2wucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisgICAgICAg
IHd0dS5mYWlsSWZHTEVycm9yKGdsLCAnZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0NPTE9SU1BB
Q0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7Jyk7CisgICAgICAgIHZhciB0YXJnZXRzID0g
W2dsLlRFWFRVUkVfMkRdOworICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJF
X0NVQkVfTUFQKSB7CisgICAgICAgICAgICB0YXJnZXRzID0gW2dsLlRFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9YLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1pdOworICAgICAgICB9CisgICAgICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2UgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsr
dHQpIHsKKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmly
c3QKKyAgICAgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTJEKSB7CisgICAgICAgICAgICAgICAg
Z2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBjYW52YXMu
d2lkdGgsIGNhbnZhcy5oZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgICAgIGds
LnRleFN1YkltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIDAsIDAsIGdsW3BpeGVsRm9ybWF0XSwgZ2xb
cGl4ZWxUeXBlXSwgY2FudmFzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBnbFtw
aXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGNhbnZhcyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgd2lkdGggPSBnbC5jYW52YXMud2lkdGg7CisgICAgICAgIHZh
ciBoZWlnaHQgPSBnbC5jYW52YXMuaGVpZ2h0OworICAgICAgICB2YXIgaGFsZldpZHRoID0gTWF0
aC5mbG9vcih3aWR0aCAvIDIpOworICAgICAgICB2YXIgaGFsZkhlaWdodCA9IE1hdGguZmxvb3Io
aGVpZ2h0IC8gMik7CisgICAgICAgIHZhciB0b3AgPSBmbGlwWSA/IDAgOiAoaGVpZ2h0IC0gaGFs
ZkhlaWdodCk7CisgICAgICAgIHZhciBib3R0b20gPSBmbGlwWSA/IChoZWlnaHQgLSBoYWxmSGVp
Z2h0KSA6IDA7CisKKyAgICAgICAgdmFyIGxvYzsKKyAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQg
PT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgbG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJmYWNlIik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZh
ciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgICAgIGlmIChi
aW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgICAgICBn
bC51bmlmb3JtMWkobG9jLCB0YXJnZXRzW3R0XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKKyAgICAgICAgICAgIGlmIChvcHRfZm9udFRl
c3QpIHsKKyAgICAgICAgICAgICAgICAvLyBjaGVjayBoYWxmIGlzIGEgc29saWQgY29sb3IuCisg
ICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdCgKKyAgICAgICAgICAgICAgICAgICAg
ICBnbCwgMCwgdG9wLCB3aWR0aCwgaGFsZkhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICB3
aGl0ZUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgd2hpdGUiKTsKKyAg
ICAgICAgICAgICAgICAvLyBjaGVjayBvdGhlciBoYWxmIGlzIG5vdCBhIHNvbGlkIGNvbG9yLgor
ICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3RDb2xvcigKKyAgICAgICAgICAgICAg
ICAgICAgICBnbCwgMCwgYm90dG9tLCB3aWR0aCwgaGFsZkhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICB3aGl0ZUNvbG9yLCAwLAorICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZm9udCBtaXNzaW5nIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImZvbnQgcmVuZGVyZWQiKTsK
KyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGxvY2FsUmVkICAgPSBz
ZW1pVHJhbnNwYXJlbnQgPyBzZW1pVHJhbnNwYXJlbnRSZWRDb2xvciA6IHJlZENvbG9yOworICAg
ICAgICAgICAgICAgIHZhciBsb2NhbEdyZWVuID0gc2VtaVRyYW5zcGFyZW50ID8gc2VtaVRyYW5z
cGFyZW50R3JlZW5Db2xvciA6IGdyZWVuQ29sb3I7CisKKyAgICAgICAgICAgICAgICAvLyBBbGxv
dyBhIHRvbGVyYW5jZSBmb3IgcHJlbXVsdGlwbGljYXRpb24vdW5tdWx0aXBsaWNhdGlvbiwgZXNw
ZWNpYWxseSBmb3IgdGV4dHVyZQorICAgICAgICAgICAgICAgIC8vIGZvcm1hdHMgd2l0aCBsb3dl
ciBiaXQgZGVwdGhzLgorICAgICAgICAgICAgICAgIHZhciB0b2xlcmFuY2UgPSAwOworICAgICAg
ICAgICAgICAgIGlmIChzZW1pVHJhbnNwYXJlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9s
ZXJhbmNlID0gMzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsVHlwZSA9PSAnVU5TSUdO
RURfU0hPUlRfNV82XzUnIHx8IGludGVybmFsRm9ybWF0ID09ICdSR0I1NjUnKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0b2xlcmFuY2UgPSA2OworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHBpeGVsVHlwZSA9PSAnVU5TSUdORURfU0hPUlRfNF80XzRfNCcgfHwgaW50ZXJuYWxG
b3JtYXQgPT0gJ1JHQkE0JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9sZXJhbmNlID0g
OTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwaXhlbFR5cGUgPT0gJ1VOU0lHTkVE
X1NIT1JUXzVfNV81XzEnIHx8IGludGVybmFsRm9ybWF0ID09ICdSR0I1X0ExJykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU2VtaS10cmFuc3BhcmVudCB2YWx1ZXMgYXJlIGFsbG93ZWQg
dG8gY29udmVydCB0byBlaXRoZXIgMSBvciAwIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzaW5nbGUtYml0IGFscGhhIGZvcm1hdCBwZXIgT3BlbkdMIEVTIDMuMC41IHNlY3Rp
b24gMi4xLjYuMiwgIkNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20g
RmxvYXRpbmctUG9pbnQgdG8gTm9ybWFsaXplZCBGaXhlZC1Qb2ludCIuIElnbm9yZSBhbHBoYSBm
b3IgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3RzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgdG9sZXJhbmNlID0gNjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UmVkID0gbG9jYWxSZWQuc2xpY2UoMCwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
bEdyZWVuID0gbG9jYWxHcmVlbi5zbGljZSgwLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChpbnRlcm5hbEZvcm1hdCA9PSAnUkdCMTBfQTInKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgYWxwaGEgY2hhbm5lbCBpcyB0b28gbG93LXJlc29sdXRpb24gZm9yIGFu
eSBtZWFuaW5nZnVsIGNvbXBhcmlzb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxS
ZWQgPSBsb2NhbFJlZC5zbGljZSgwLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
R3JlZW4gPSBsb2NhbEdyZWVuLnNsaWNlKDAsIDMpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHRvcCBhbmQg
Ym90dG9tIGhhbHZlcyBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZSB0aGUgcmlnaHQgY29sb3IuCisg
ICAgICAgICAgICAgICAgZGVidWcoIkNoZWNraW5nICIgKyAoZmxpcFkgPyAidG9wIiA6ICJib3R0
b20iKSk7CisgICAgICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgYm90dG9t
LCB3aWR0aCwgaGFsZkhlaWdodCwgbG9jYWxSZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic2hvdWxkQmUgIiArIGxvY2FsUmVkLCB0b2xlcmFuY2UpOworICAgICAgICAg
ICAgICAgIGRlYnVnKCJDaGVja2luZyAiICsgKGZsaXBZID8gImJvdHRvbSIgOiAidG9wIikpOwor
ICAgICAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIHRvcCwgd2lkdGgsIGhh
bGZIZWlnaHQsIGxvY2FsR3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic2hvdWxkQmUgIiArIGxvY2FsR3JlZW4sIHRvbGVyYW5jZSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICghdXNlVGV4U3ViSW1hZ2UyRCAmJiBwaXhlbEZvcm1hdCA9PSAiUkdC
QSIpIHsKKyAgICAgICAgICAgICAgICBpZiAocGl4ZWxUeXBlID09ICJGTE9BVCIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBzZXQgYSBwaXhlbCBpbiB0aGUgdGV4dHVyZSB0
byBlbnN1cmUgdGhlIHRleHR1cmUgd2FzCisgICAgICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5
IGNyZWF0ZWQgd2l0aCBmbG9hdHMuIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2NyYnVnLmNv
bS80ODQ5NjgKKyAgICAgICAgICAgICAgICAgICAgdmFyIHBpeGVscyA9IG5ldyBGbG9hdDMyQXJy
YXkoWzEwMDAuMCwgMTAwMC4wLCAxMDAwLjAsIDEwMDAuMF0pOworICAgICAgICAgICAgICAgICAg
ICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAwLCAxLCAxLCBnbFtwaXhlbEZv
cm1hdF0sIGdsW3BpeGVsVHlwZV0sIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiVGV4dHVyZSBzaG91bGQgYmUgYmFja2Vk
IGJ5IGZsb2F0cyIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGl4ZWxUeXBlID09ICJI
QUxGX0ZMT0FUX09FUyIgfHwgcGl4ZWxUeXBlID09ICJIQUxGX0ZMT0FUIikgeworICAgICAgICAg
ICAgICAgICAgICAvLyBBdHRlbXB0IHRvIHNldCBhIHBpeGVsIGluIHRoZSB0ZXh0dXJlIHRvIGVu
c3VyZSB0aGUgdGV4dHVyZSB3YXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgY3Jl
YXRlZCB3aXRoIGhhbGYtZmxvYXRzLiBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9jcmJ1Zy5j
b20vNDg0OTY4CisgICAgICAgICAgICAgICAgICAgIHZhciBoYWxmRmxvYXRUZW5LID0gMHg3MEUy
OyAvLyBIYWxmIGZsb2F0IDEwMDAwCisgICAgICAgICAgICAgICAgICAgIHZhciBwaXhlbHMgPSBu
ZXcgVWludDE2QXJyYXkoW2hhbGZGbG9hdFRlbkssIGhhbGZGbG9hdFRlbkssIGhhbGZGbG9hdFRl
bkssIGhhbGZGbG9hdFRlbktdKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2Uy
RCh0YXJnZXRzW3R0XSwgMCwgMCwgMCwgMSwgMSwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5
cGVdLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlRleHR1cmUgc2hvdWxkIGJlIGJhY2tlZCBieSBoYWxmLWZsb2F0cyIp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChmYWxzZSkgeworICAgICAgICAgIHZhciBtID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMo
Z2wuY2FudmFzKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKG0pOworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjYW52YXMnKTsKKworICAgICAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgICAgICB7IGNhbnZh
czogY2FudmFzLCBzdWI6IGZhbHNlLCBmbGlwWTogdHJ1ZSwgIHNlbWlUcmFuc3BhcmVudDogZmFs
c2UsIGZvbnQ6IGZhbHNlLCBpbml0OiBzZXRDYW52YXNUb01pbiB9LAorICAgICAgICAgICAgeyBj
YW52YXM6IGNhbnZhcywgc3ViOiBmYWxzZSwgZmxpcFk6IGZhbHNlLCBzZW1pVHJhbnNwYXJlbnQ6
IGZhbHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAgeyBjYW52YXM6IGNhbnZhcywgc3Vi
OiB0cnVlLCAgZmxpcFk6IHRydWUsICBzZW1pVHJhbnNwYXJlbnQ6IGZhbHNlLCBmb250OiBmYWxz
ZSB9LAorICAgICAgICAgICAgeyBjYW52YXM6IGNhbnZhcywgc3ViOiB0cnVlLCAgZmxpcFk6IGZh
bHNlLCBzZW1pVHJhbnNwYXJlbnQ6IGZhbHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAg
eyBjYW52YXM6IGNhbnZhcywgc3ViOiBmYWxzZSwgZmxpcFk6IHRydWUsICBzZW1pVHJhbnNwYXJl
bnQ6IHRydWUsICBmb250OiBmYWxzZSwgaW5pdDogc2V0Q2FudmFzVG9NaW5TZW1pVHJhbnNwYXJl
bnQgfSwKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMsIHN1YjogZmFsc2UsIGZsaXBZOiBm
YWxzZSwgc2VtaVRyYW5zcGFyZW50OiB0cnVlLCAgZm9udDogZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgY2FudmFzOiBjYW52YXMsIHN1YjogdHJ1ZSwgIGZsaXBZOiB0cnVlLCAgc2VtaVRyYW5zcGFy
ZW50OiB0cnVlLCAgZm9udDogZmFsc2UgfSwKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMs
IHN1YjogdHJ1ZSwgIGZsaXBZOiBmYWxzZSwgc2VtaVRyYW5zcGFyZW50OiB0cnVlLCAgZm9udDog
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMsIHN1YjogZmFsc2UsIGZsaXBZ
OiB0cnVlLCAgc2VtaVRyYW5zcGFyZW50OiBmYWxzZSwgZm9udDogZmFsc2UsIGluaXQ6IHNldENh
bnZhc1RvMjU3eDI1NyB9LAorICAgICAgICAgICAgeyBjYW52YXM6IGNhbnZhcywgc3ViOiBmYWxz
ZSwgZmxpcFk6IGZhbHNlLCBzZW1pVHJhbnNwYXJlbnQ6IGZhbHNlLCBmb250OiBmYWxzZSB9LAor
ICAgICAgICAgICAgeyBjYW52YXM6IGNhbnZhcywgc3ViOiB0cnVlLCAgZmxpcFk6IHRydWUsICBz
ZW1pVHJhbnNwYXJlbnQ6IGZhbHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAgeyBjYW52
YXM6IGNhbnZhcywgc3ViOiB0cnVlLCAgZmxpcFk6IGZhbHNlLCBzZW1pVHJhbnNwYXJlbnQ6IGZh
bHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAgeyBjYW52YXM6IGNhbnZhcywgc3ViOiBm
YWxzZSwgZmxpcFk6IHRydWUsICBzZW1pVHJhbnNwYXJlbnQ6IHRydWUsICBmb250OiBmYWxzZSwg
aW5pdDogc2V0Q2FudmFzVG8yNTd4MjU3U2VtaVRyYW5zcGFyZW50IH0sCisgICAgICAgICAgICB7
IGNhbnZhczogY2FudmFzLCBzdWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIHNlbWlUcmFuc3BhcmVu
dDogdHJ1ZSwgIGZvbnQ6IGZhbHNlIH0sCisgICAgICAgICAgICB7IGNhbnZhczogY2FudmFzLCBz
dWI6IHRydWUsICBmbGlwWTogdHJ1ZSwgIHNlbWlUcmFuc3BhcmVudDogdHJ1ZSwgIGZvbnQ6IGZh
bHNlIH0sCisgICAgICAgICAgICB7IGNhbnZhczogY2FudmFzLCBzdWI6IHRydWUsICBmbGlwWTog
ZmFsc2UsIHNlbWlUcmFuc3BhcmVudDogdHJ1ZSwgIGZvbnQ6IGZhbHNlIH0sCisgICAgICAgIF07
CisKKyAgICAgICAgLy8gVGhlIGZvbnQgdGVzdHMgZG9uJ3Qgd29yayB3aXRoIEFMUEhBLW9ubHkg
dGV4dHVyZXMgc2luY2UgdGhleSBkcmF3IHRvIHRoZSBjb2xvciBjaGFubmVscy4KKyAgICAgICAg
aWYgKGludGVybmFsRm9ybWF0ICE9ICdBTFBIQScpIHsKKyAgICAgICAgICAgIGNhc2VzID0gY2Fz
ZXMuY29uY2F0KFsKKyAgICAgICAgICAgICAgICB7IGNhbnZhczogY2FudmFzLCBzdWI6IGZhbHNl
LCBmbGlwWTogdHJ1ZSwgIHNlbWlUcmFuc3BhcmVudDogZmFsc2UsIGZvbnQ6IHRydWUsIGluaXQ6
IGRyYXdUZXh0SW5DYW52YXMgfSwKKyAgICAgICAgICAgICAgICB7IGNhbnZhczogY2FudmFzLCBz
dWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIHNlbWlUcmFuc3BhcmVudDogZmFsc2UsIGZvbnQ6IHRy
dWUgfSwKKyAgICAgICAgICAgICAgICB7IGNhbnZhczogY2FudmFzLCBzdWI6IHRydWUsICBmbGlw
WTogdHJ1ZSwgIHNlbWlUcmFuc3BhcmVudDogZmFsc2UsIGZvbnQ6IHRydWUgfSwKKyAgICAgICAg
ICAgICAgICB7IGNhbnZhczogY2FudmFzLCBzdWI6IHRydWUsICBmbGlwWTogZmFsc2UsIHNlbWlU
cmFuc3BhcmVudDogZmFsc2UsIGZvbnQ6IHRydWUgfSwKKyAgICAgICAgICAgIF0pOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAgICAg
IHZhciBvZmZzY3JlZW5DYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKDEsIDEpOworICAgICAg
ICAgICAgY2FzZXMgPSBjYXNlcy5jb25jYXQoWworICAgICAgICAgICAgICAgIHsgY2FudmFzOiBv
ZmZzY3JlZW5DYW52YXMsIHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCAgc2VtaVRyYW5zcGFyZW50
OiBmYWxzZSwgZm9udDogZmFsc2UsIGluaXQ6IHNldENhbnZhc1RvTWluIH0sCisgICAgICAgICAg
ICAgICAgeyBjYW52YXM6IG9mZnNjcmVlbkNhbnZhcywgc3ViOiBmYWxzZSwgZmxpcFk6IGZhbHNl
LCBzZW1pVHJhbnNwYXJlbnQ6IGZhbHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAgICAg
IHsgY2FudmFzOiBvZmZzY3JlZW5DYW52YXMsIHN1YjogdHJ1ZSwgIGZsaXBZOiB0cnVlLCAgc2Vt
aVRyYW5zcGFyZW50OiBmYWxzZSwgZm9udDogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICB7IGNh
bnZhczogb2Zmc2NyZWVuQ2FudmFzLCBzdWI6IHRydWUsICBmbGlwWTogZmFsc2UsIHNlbWlUcmFu
c3BhcmVudDogZmFsc2UsIGZvbnQ6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgeyBjYW52YXM6
IG9mZnNjcmVlbkNhbnZhcywgc3ViOiBmYWxzZSwgZmxpcFk6IHRydWUsICBzZW1pVHJhbnNwYXJl
bnQ6IHRydWUsICBmb250OiBmYWxzZSwgaW5pdDogc2V0Q2FudmFzVG9NaW5TZW1pVHJhbnNwYXJl
bnQgfSwKKyAgICAgICAgICAgICAgICB7IGNhbnZhczogb2Zmc2NyZWVuQ2FudmFzLCBzdWI6IGZh
bHNlLCBmbGlwWTogZmFsc2UsIHNlbWlUcmFuc3BhcmVudDogdHJ1ZSwgIGZvbnQ6IGZhbHNlIH0s
CisgICAgICAgICAgICAgICAgeyBjYW52YXM6IG9mZnNjcmVlbkNhbnZhcywgc3ViOiB0cnVlLCAg
ZmxpcFk6IHRydWUsICBzZW1pVHJhbnNwYXJlbnQ6IHRydWUsICBmb250OiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgIHsgY2FudmFzOiBvZmZzY3JlZW5DYW52YXMsIHN1YjogdHJ1ZSwgIGZsaXBZ
OiBmYWxzZSwgc2VtaVRyYW5zcGFyZW50OiB0cnVlLCAgZm9udDogZmFsc2UgfSwKKyAgICAgICAg
ICAgIF0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGV4SW1hZ2VUZXN0KGJp
bmRpbmdUYXJnZXQpIHsKKyAgICAgICAgICAgIHZhciBwcm9ncmFtOworICAgICAgICAgICAgaWYg
KGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgICAgIHByb2dy
YW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVk
UXVhZFdpdGhDdWJlTWFwKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgICAgICB2YXIgY291bnQgPSByZXBlYXRDb3VudDsKKyAgICAgICAgICAgICAg
ICB2YXIgY2FzZU5keCA9IDA7CisgICAgICAgICAgICAgICAgdmFyIHRleHR1cmUgPSB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBjID0gY2FzZXNbY2FzZU5keF07CisgICAgICAgICAgICAgICAgICAgIHZh
ciBpbWFnZURhdGFCZWZvcmUgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoYy5pbml0
KSB7CisgICAgICAgICAgICAgICAgICAgICAgYy5pbml0KGMuY2FudmFzLmdldENvbnRleHQoJzJk
JyksIGJpbmRpbmdUYXJnZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUgPSBydW5PbmVJdGVyYXRpb24oYy5jYW52YXMsIGMuc3ViLCBjLmZsaXBZ
LCBjLnNlbWlUcmFuc3BhcmVudCwgcHJvZ3JhbSwgYmluZGluZ1RhcmdldCwgdGV4dHVyZSwgYy5m
b250KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSBmaXJzdCAyIGl0ZXJhdGlvbnMg
YWx3YXlzIG1ha2UgYSBuZXcgdGV4dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50
IDwgMikgeworICAgICAgICAgICAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7
CisgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2Nhc2VOZHg7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChjYXNlTmR4ID09IGNhc2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZU5keCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAtLWNvdW50OworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3VudCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgYXJlIHdvcmtpbmcgd2l0aCBDYW52YXNl
cywgaXQncyByZWFsbHkgdW5saWtlbHkgdGhhdAorICAgICAgICAgICAgICAgICAgICAvLyB3YWl0
aW5nIGZvciBjb21wb3NpdGlvbiB3aWxsIGNoYW5nZSBhbnl0aGluZyBoZXJlLCBhbmQgaXQncyBt
dWNoCisgICAgICAgICAgICAgICAgICAgIC8vIHNsb3dlciwgc28ganVzdCBkaXNwYXRjaFByb21p
c2UuIElmIHdlIHdhbnQgdG8gdGVzdCB3aXRoIGNvbXBvc2l0ZXMsCisgICAgICAgICAgICAgICAg
ICAgIC8vIHdlIHNob3VsZCB0ZXN0IGEgbW9yZSBuYXJyb3cgc3Vic2V0IG9mIHRlc3RzLgorICAg
ICAgICAgICAgICAgICAgICB3dHUuZGlzcGF0Y2hQcm9taXNlKHJ1bk5leHRUZXN0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGV4SW1hZ2VUZXN0KGdsLlRFWFRVUkVfMkQp
LnRoZW4oZnVuY3Rpb24odmFsKSB7CisgICAgICAgICAgICBydW5UZXhJbWFnZVRlc3QoZ2wuVEVY
VFVSRV9DVUJFX01BUCkudGhlbihmdW5jdGlvbih2YWwpIHsKKyAgICAgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsK
KyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjQzNGI5ODM0Y2RlN2I0OTU4OWI0OTRhZGFmYmU0MjE5MGRkY2U5YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5q
cwpAQCAtMCwwICsxLDQ5IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQs
IHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291cmNlUGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9u
KSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFn
ZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IGZhbHNlOworCisgICAgYXN5bmMgZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBkZXNj
cmlwdGlvbignVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQgY29kZSBwYXRocyB0
YWtpbmcgSW1hZ2VCaXRtYXAgY3JlYXRlZCBmcm9tIGEgQmxvYiAoJyArIGludGVybmFsRm9ybWF0
ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAg
IGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VCaXRtYXAgfHwgIXdpbmRvdy5JbWFnZUJpdG1hcCkgewor
ICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3aGlsZSBzdGls
bCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8gb3ZlcnJpZGUg
aXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0Q29udGV4
dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsK
KworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xv
cigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKworICAgICAgICBkZWJ1Zygn
KioqIFJ1bm5pbmcgdGVzdHMgYWdhaW5zdCByZWQtZ3JlZW4tc2VtaS10cmFuc3BhcmVudC5wbmcg
KioqJyk7CisgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlc291cmNlUGF0aCAr
ICJyZWQtZ3JlZW4tc2VtaS10cmFuc3BhcmVudC5wbmciKTsKKyAgICAgICAgbGV0IGJsb2IgPSBh
d2FpdCByZXNwb25zZS5ibG9iKCk7CisgICAgICAgIGF3YWl0IHJ1bkltYWdlQml0bWFwVGVzdChi
bG9iLCAwLjUsIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1
LCB3dHUsIGZhbHNlKTsKKyAgICAgICAgZGVidWcoJyoqKiBSdW5uaW5nIHRlc3RzIGFnYWluc3Qg
cmVkLWdyZWVuLTEyOHgxMjgtbGluZWFyLXByb2ZpbGUuanBnICoqKicpOworICAgICAgICByZXNw
b25zZSA9IGF3YWl0IGZldGNoKHJlc291cmNlUGF0aCArICJyZWQtZ3JlZW4tMTI4eDEyOC1saW5l
YXItcHJvZmlsZS5qcGciKTsKKyAgICAgICAgYmxvYiA9IGF3YWl0IHJlc3BvbnNlLmJsb2IoKTsK
KyAgICAgICAgLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIGEgaHVnZSB0b2xlcmFuY2UgYmVjYXVzZSBi
cm93c2VycyAtIGF0IGxlYXN0IGN1cnJlbnRseSAtIHZhcnkKKyAgICAgICAgLy8gd2lkZWx5IGlu
IHRoZSBjb2xvcnNwYWNlIGNvbnZlcnNpb24gcmVzdWx0cyBmb3IgdGhpcyBpbWFnZS4KKyAgICAg
ICAgbGV0IHRvbGVyYW5jZSA9IDEyMDsKKyAgICAgICAgYXdhaXQgcnVuSW1hZ2VCaXRtYXBUZXN0
KGJsb2IsIDEuMCwgaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0
aXUsIHd0dSwgZmFsc2UsIHRvbGVyYW5jZSk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhlZTk2
YzBhMWYzY2E0M2U0ODFlYzU3NmJjOTFiNGIwNjU1NjNmNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4
ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsK
KyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRp
bHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFs
c2U7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdW
ZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBJbWFn
ZUJpdG1hcCBjcmVhdGVkIGZyb20gYW4gSFRNTENhbnZhc0VsZW1lbnQgKCcgKyBpbnRlcm5hbEZv
cm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKworICAg
ICAgICBpZighd2luZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VCaXRtYXAp
IHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hpbGUg
c3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92ZXJy
aWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVsdENv
bnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxl
Iik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFy
Q29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgdmFy
IHRlc3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICAgICAg
dmFyIGN0eCA9IHRlc3RDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgc2V0Q2FudmFz
VG9NaW4oY3R4KTsKKyAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KHRlc3RDYW52YXMsIDAuNSwg
aW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgZmFs
c2UpCisgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHNldENhbnZhc1RvMjU3eDI1
NyhjdHgpOworICAgICAgICAgICAgcmV0dXJuIHJ1bkltYWdlQml0bWFwVGVzdCh0ZXN0Q2FudmFz
LCAwLjUsIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1LCB3
dHUsIGZhbHNlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldENhbnZhc1RvUmVk
R3JlZW4oY3R4KSB7CisgICAgICAgIHZhciB3aWR0aCA9IGN0eC5jYW52YXMud2lkdGg7CisgICAg
ICAgIHZhciBoYWxmV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoIC8gMik7CisgICAgICAgIHZhciBo
ZWlnaHQgPSBjdHguY2FudmFzLmhlaWdodDsKKyAgICAgICAgdmFyIGhhbGZIZWlnaHQgPSBNYXRo
LmZsb29yKGhlaWdodCAvIDIpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjU1LCAw
LCAwLCAxKSI7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBoYWxmV2lkdGgsIGhhbGZIZWln
aHQpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjU1LCAwLCAwLCAwLjUpIjsKKyAg
ICAgICAgY3R4LmZpbGxSZWN0KGhhbGZXaWR0aCwgMCwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsK
KyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDAsIDI1NSwgMCwgMSkiOworICAgICAgICBj
dHguZmlsbFJlY3QoMCwgaGFsZkhlaWdodCwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDAsIDI1NSwgMCwgMC41KSI7CisgICAgICAgIGN0eC5m
aWxsUmVjdChoYWxmV2lkdGgsIGhhbGZIZWlnaHQsIGhhbGZXaWR0aCwgaGFsZkhlaWdodCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG9NaW4oY3R4KSB7CisgICAgICAgIGN0eC5j
YW52YXMud2lkdGggPSAyOworICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDI7CisgICAgICAg
IHNldENhbnZhc1RvUmVkR3JlZW4oY3R4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52
YXNUbzI1N3gyNTcoY3R4KSB7CisgICAgICAgIGN0eC5jYW52YXMud2lkdGggPSAyNTc7CisgICAg
ICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gMjU3OworICAgICAgICBzZXRDYW52YXNUb1JlZEdyZWVu
KGN0eCk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UtYml0
bWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA5ODIxZDhiM2Y3ODUzM2UzZGY1NDUwNTY2ZDQ3YmFiMGI3YTNk
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWJpdG1hcC1mcm9tLWltYWdlLWJpdG1hcC5qcwpAQCAtMCwwICsxLDU2IEBACisvKgorQ29weXJp
Z2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChp
bnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291cmNl
UGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9uKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7Cisg
ICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gaW5pdCgp
CisgICAgeworICAgICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1
YkltYWdlMkQgY29kZSBwYXRocyB0YWtpbmcgSW1hZ2VCaXRtYXAgY3JlYXRlZCBmcm9tIGFuIElt
YWdlQml0bWFwICgnICsgaW50ZXJuYWxGb3JtYXQgKyAnLycgKyBwaXhlbEZvcm1hdCArICcvJyAr
IHBpeGVsVHlwZSArICcpJyk7CisKKyAgICAgICAgaWYoIXdpbmRvdy5jcmVhdGVJbWFnZUJpdG1h
cCB8fCAhd2luZG93LkltYWdlQml0bWFwKSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1
bHQgY29udGV4dCB2ZXJzaW9uIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24g
VVJMIHF1ZXJ5IHN0cmluZyB0byBvdmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQz
RENvbnRleHRWZXJzaW9uKGRlZmF1bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wp
KSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgICAgICBnbC5jbGVh
ckRlcHRoKDEpOworICAgICAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKworICAgICAgICB2YXIg
aW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAwLCAwLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAwLCAwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIsIDIpOworCisgICAgICAgIGNyZWF0ZUltYWdlQml0bWFw
KGltYWdlRGF0YSwge2ltYWdlT3JpZW50YXRpb246ICJub25lIiwgcHJlbXVsdGlwbHlBbHBoYTog
Im5vbmUifSkKKyAgICAgICAgLmNhdGNoKCAoKSA9PiB7CisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJjcmVhdGVJbWFnZUJpdG1hcCB3aXRoIG9wdGlvbnMgbWF5IGJlIHJlamVjdGVkIGlmIGl0IGlz
IG5vdCBzdXBwb3J0ZWQuIFJldHJ5aW5nIHdpdGhvdXQgb3B0aW9ucy4iKTsKKyAgICAgICAgICAg
IHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZURhdGEpOworICAgICAgICB9KS50aGVuKCBi
aXRtYXAgPT4geworICAgICAgICAgICAgcmV0dXJuIHJ1bkltYWdlQml0bWFwVGVzdChiaXRtYXAs
IDAsIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1LCB3dHUs
IGZhbHNlKTsKKyAgICAgICAgfSwgKCkgPT4geworICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Jl
YXRlSW1hZ2VCaXRtYXAoaW1hZ2VEYXRhKSBzaG91bGQgc3VjY2VlZC4iKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRkMjQ3MjFmZTQxZTkwMjk1NWI0MWQzZDU3YTkyYmIwMjVmMGQ2OTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWlt
YWdlLWRhdGEuanMKQEAgLTAsMCArMSw0OSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5lcmF0ZVRlc3QoaW50ZXJuYWxGb3JtYXQsIHBp
eGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3VlLCByZXNvdXJjZVBhdGgsIGRlZmF1bHRDb250
ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICB2YXIgdGl1
ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOworICAgIHZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAg
ZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0
aHMgdGFraW5nIEltYWdlQml0bWFwIGNyZWF0ZWQgZnJvbSBJbWFnZURhdGEgKCcgKyBpbnRlcm5h
bEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKwor
ICAgICAgICBpZighd2luZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VCaXRt
YXApIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hp
bGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92
ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVs
dENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNs
ZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisgICAgICAgIGds
LmRpc2FibGUoZ2wuQkxFTkQpOworCisgICAgICAgIHZhciBpbWFnZURhdGEgPSBuZXcgSW1hZ2VE
YXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWzI1NSwgMCwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNTUsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAyNTUsIDAsIDBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MiwgMik7CisKKyAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KGltYWdlRGF0YSwgMCwgaW50ZXJu
YWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgZmFsc2UpCisg
ICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZTRiMTgxMjllMWFiOTM3YzAyZTk1NWYwNmY5YzU0NGFhMzFkN2M2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFn
ZS5qcwpAQCAtMCwwICsxLDQ2IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmls
ZS4KKyovCisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3Jt
YXQsIHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291cmNlUGF0aCwgZGVmYXVsdENvbnRleHRWZXJz
aW9uKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciB0aXUgPSBUZXhJ
bWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBkZXNjcmlw
dGlvbignVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQgY29kZSBwYXRocyB0YWtp
bmcgSW1hZ2VCaXRtYXAgY3JlYXRlZCBmcm9tIGFuIEhUTUxJbWFnZUVsZW1lbnQgKCcgKyBpbnRl
cm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsK
KworICAgICAgICBpZighd2luZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VC
aXRtYXApIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24g
d2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRv
IG92ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVm
YXVsdENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJl
eGFtcGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGds
LmNsZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAg
ICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoIlNvdXJjZSBpbWFnZSBo
YXMgYmVlbiBsb2FkZWQiKTsKKyAgICAgICAgICAgIHJ1bkltYWdlQml0bWFwVGVzdChpbWFnZSwg
MC41LCBpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1
LCBmYWxzZSkKKyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBpbWFnZS5zcmMg
PSByZXNvdXJjZVBhdGggKyAicmVkLWdyZWVuLXNlbWktdHJhbnNwYXJlbnQucG5nIjsKKyAgICB9
CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tdmlkZW8uanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkOTM2YjUw
OTYwY2Q2Yjc4MmEyNTUxMzU3ZjRlNGU3OTY3NDgyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzCkBAIC0w
LDAgKzEsODMgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5j
LgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwor
ZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxU
eXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAg
ICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7
CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7
CisKKyAgICB2YXIgdmlkZW9zID0gWworICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJl
ZC1ncmVlbi5tcDQiICAgICAgICAgICAsIHR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40
MkUwMUUsIG1wNGEuNDAuMiInLCB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJl
ZC1ncmVlbi53ZWJtdnA4LndlYm0iICAsIHR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwg
dm9yYmlzIicsICAgICAgICAgICB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJl
ZC1ncmVlbi5idDYwMS52cDkud2VibSIsIHR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOSIn
LCAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJl
ZC1ncmVlbi50aGVvcmEub2d2IiAgICAsIHR5cGU6ICd2aWRlby9vZ2c7IGNvZGVjcz0idGhlb3Jh
LCB2b3JiaXMiJywgICAgICAgICB9LAorICAgIF07CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAg
ICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1h
Z2UyRCBjb2RlIHBhdGhzIHRha2luZyBJbWFnZUJpdG1hcCBjcmVhdGVkIGZyb20gYW4gSFRNTFZp
ZGVvRWxlbWVudCAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycg
KyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VCaXRt
YXAgfHwgIXdpbmRvdy5JbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZh
dWx0IGNvbnRleHQgdmVyc2lvbiB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9u
IFVSTCBxdWVyeSBzdHJpbmcgdG8gb3ZlcnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0
M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGds
KSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xl
YXJEZXB0aCgxKTsKKworICAgICAgICB2YXIgdmlkZW9OZHggPSAwOworICAgICAgICB2YXIgdmlk
ZW87CisgICAgICAgIGZ1bmN0aW9uIHJ1bk5leHRWaWRlbygpIHsKKyAgICAgICAgICAgIGlmICh2
aWRlbykgeworICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh2aWRlb05keCA9PSB2aWRlb3MubGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIGluZm8gPSB2aWRlb3NbdmlkZW9OZHgrK107CisgICAgICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygidGVzdGluZzogIiArIGluZm8udHlw
ZSk7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7
CisgICAgICAgICAgICB2aWRlby5tdXRlZCA9IHRydWU7CisgICAgICAgICAgICB2YXIgY2FuUGxh
eSA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXZpZGVvLmNhblBsYXlUeXBlKSB7CisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgidmlkZW8uY2FuUGxheVR5cGUgcmVxdWlyZWQgbWV0aG9kIG1p
c3NpbmciKTsKKyAgICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKCF2aWRlby5jYW5QbGF5
VHlwZShpbmZvLnR5cGUpLnJlcGxhY2UoL25vLywgJycpKSB7CisgICAgICAgICAgICAgICAgZGVi
dWcoaW5mby50eXBlICsgIiB1bnN1cHBvcnRlZCIpOworICAgICAgICAgICAgICAgIHJ1bk5leHRW
aWRlbygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgICAgICAgICAgdmlk
ZW8udHlwZSA9IGluZm8udHlwZTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGluZm8uc3JjOwor
ICAgICAgICAgICAgd3R1LnN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRlbywgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KHZpZGVvLCAxLCBpbnRl
cm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1LCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5pdDsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5q
cyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDg2YjBiNjU5NzQ0ZTMwMTNjOGI4ZmRmNzIwY2VlNGI2OTZiZmIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmpzCkBAIC0wLDAg
KzEsMjQwIEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
K1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKK2Z1
bmN0aW9uIGdlbmVyYXRlVGVzdChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlw
ZSwgcHJvbG9ndWUsIHJlc291cmNlUGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9uKSB7CisgICAg
dmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOwor
ICAgIHZhciBnbCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwor
ICAgIHZhciBpbWFnZURhdGEgPSBudWxsOworICAgIHZhciBibGFja0NvbG9yID0gWzAsIDAsIDBd
OworICAgIHZhciByZWRDb2xvciA9IFsyNTUsIDAsIDBdOworICAgIHZhciBncmVlbkNvbG9yID0g
WzAsIDI1NSwgMF07CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2Ny
aXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRh
a2luZyBJbWFnZURhdGEgKCcgKyBpbnRlcm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsg
Jy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgY29u
dGV4dCB2ZXJzaW9uIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24gVVJMIHF1
ZXJ5IHN0cmluZyB0byBvdmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQzRENvbnRl
eHRWZXJzaW9uKGRlZmF1bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wpKSB7Cisg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAgICAgICAgIGNhc2UgZ2wu
UkVEOgorICAgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAgICAgICAgICBncmVlbkNv
bG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBnbC5M
VU1JTkFOQ0U6CisgICAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAg
ICByZWRDb2xvciA9IFsyNTUsIDI1NSwgMjU1XTsKKyAgICAgICAgICAgIGdyZWVuQ29sb3IgPSBb
MCwgMCwgMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIGdsLkFMUEhBOgor
ICAgICAgICAgICAgcmVkQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgICBncmVlbkNvbG9y
ID0gWzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAs
MCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKyAgICAgICAgZ2wuZGlzYWJsZShnbC5C
TEVORCk7CisKKyAgICAgICAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleGNhbnZhcyIpOworICAgICAgICB2YXIgY29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4
dCgiMmQiKTsKKyAgICAgICAgaW1hZ2VEYXRhID0gY29udGV4dDJkLmNyZWF0ZUltYWdlRGF0YSgy
LCAyKTsKKyAgICAgICAgdmFyIGRhdGEgPSBpbWFnZURhdGEuZGF0YTsKKyAgICAgICAgZGF0YVsw
XSA9IDI1NTsKKyAgICAgICAgZGF0YVsxXSA9IDA7CisgICAgICAgIGRhdGFbMl0gPSAwOworICAg
ICAgICBkYXRhWzNdID0gMjU1OworICAgICAgICBkYXRhWzRdID0gMjU1OworICAgICAgICBkYXRh
WzVdID0gMDsKKyAgICAgICAgZGF0YVs2XSA9IDA7CisgICAgICAgIGRhdGFbN10gPSAwOworICAg
ICAgICBkYXRhWzhdID0gMDsKKyAgICAgICAgZGF0YVs5XSA9IDI1NTsKKyAgICAgICAgZGF0YVsx
MF0gPSAwOworICAgICAgICBkYXRhWzExXSA9IDI1NTsKKyAgICAgICAgZGF0YVsxMl0gPSAwOwor
ICAgICAgICBkYXRhWzEzXSA9IDI1NTsKKyAgICAgICAgZGF0YVsxNF0gPSAwOworICAgICAgICBk
YXRhWzE1XSA9IDA7CisKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1bk9uZUl0ZXJhdGlvbih1c2VUZXhTdWJJbWFnZTJELCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlLCBleHBl
Y3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZ1RhcmdldCwgcHJvZ3Jh
bSkKKyAgICB7CisgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0cmluZyA9ICcnOworICAgICAg
ICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5n
bGVTdHJpbmcgPSAnLCBzb3VyY2VTdWJSZWN0YW5nbGU9JyArIHNvdXJjZVN1YlJlY3RhbmdsZTsK
KyAgICAgICAgfQorICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcg
KyAodXNlVGV4U3ViSW1hZ2UyRCA/ICd0ZXhTdWJJbWFnZTJEJyA6ICd0ZXhJbWFnZTJEJykgKwor
ICAgICAgICAgICAgICAnIHdpdGggZmxpcFk9JyArIGZsaXBZICsgJyBhbmQgcHJlbXVsdGlwbHlB
bHBoYT0nICsgcHJlbXVsdGlwbHlBbHBoYSArCisgICAgICAgICAgICAgICcsIGJpbmRpbmdUYXJn
ZXQ9JyArIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQgPyAnVEVYVFVSRV8yRCcgOiAn
VEVYVFVSRV9DVUJFX01BUCcpICsKKyAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlU3Ry
aW5nKTsKKworICAgICAgICB2YXIgbG9jOworICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBn
bC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICBsb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgImZhY2UiKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgLy8gRW5h
YmxlIHdyaXRlcyB0byB0aGUgUkdCQSBjaGFubmVscworICAgICAgICBnbC5jb2xvck1hc2soMSwg
MSwgMSwgMCk7CisgICAgICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
ICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCisgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAvLyBTZXQgdXAgdGV4
dHVyZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwg
Z2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wudGV4UGFyYW1l
dGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOwor
ICAgICAgICAvLyBTZXQgdXAgcGl4ZWwgc3RvcmUgcGFyYW1ldGVycworICAgICAgICBnbC5waXhl
bFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmbGlwWSk7CisgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgcHJlbXVsdGlwbHlBbHBo
YSk7CisgICAgICAgIHZhciB0YXJnZXRzID0gW2dsLlRFWFRVUkVfMkRdOworICAgICAgICBpZiAo
YmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICB0YXJn
ZXRzID0gW2dsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICAgICAgICAgICAg
ICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgICAgICAgICAgICAgICAg
ICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICAgICAgICAgICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pdOworICAgICAgICB9CisgICAgICAgIC8v
IEhhbmRsZSB0aGUgc291cmNlIHN1Yi1yZWN0YW5nbGUgaWYgc3BlY2lmaWVkIChXZWJHTCAyLjAg
b25seSkKKyAgICAgICAgaWYgKHNvdXJjZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgZ2wu
cGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VTdWJSZWN0YW5nbGVbMF0p
OworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgc291cmNl
U3ViUmVjdGFuZ2xlWzFdKTsKKyAgICAgICAgfQorICAgICAgICAvLyBVcGxvYWQgdGhlIGltYWdl
IGludG8gdGhlIHRleHR1cmUKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMu
bGVuZ3RoOyArK3R0KSB7CisgICAgICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHVzZVRleFN1YkltYWdlMkQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBibGFjayBmaXJzdAorICAgICAgICAgICAg
ICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1hdF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlWzJd
LCBzb3VyY2VTdWJSZWN0YW5nbGVbM10sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBudWxsKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgMCwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVbMl0sIHNvdXJj
ZVN1YlJlY3RhbmdsZVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGltYWdlRGF0YSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0
XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZVN1YlJlY3RhbmdsZVsyXSwgc291cmNlU3ViUmVjdGFuZ2xlWzNdLCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxU
eXBlXSwgaW1hZ2VEYXRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTJEKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAg
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3Jt
YXRdLCBpbWFnZURhdGEud2lkdGgsIGltYWdlRGF0YS5oZWlnaHQsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBudWxs
KTsKKyAgICAgICAgICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwg
MCwgMCwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBpbWFnZURhdGEpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFy
Z2V0c1t0dF0sIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhl
bFR5cGVdLCBpbWFnZURhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzb3VyY2VTdWJSZWN0YW5nbGUpIHsKKyAgICAgICAgICAg
IGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgICAgICAgICBn
bC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciB3aWR0aCA9IGdsLmNhbnZhcy53aWR0aDsKKyAgICAgICAgdmFyIGhhbGZXaWR0aCA9
IE1hdGguZmxvb3Iod2lkdGggLyAyKTsKKyAgICAgICAgdmFyIGhlaWdodCA9IGdsLmNhbnZhcy5o
ZWlnaHQ7CisgICAgICAgIHZhciBoYWxmSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsK
KworICAgICAgICB2YXIgdG9wID0gMDsKKyAgICAgICAgdmFyIGJvdHRvbSA9IGhlaWdodCAtIGhh
bGZIZWlnaHQ7CisgICAgICAgIHZhciBsZWZ0ID0gMDsKKyAgICAgICAgdmFyIHJpZ2h0ID0gd2lk
dGggLSBoYWxmV2lkdGg7CisKKyAgICAgICAgdmFyIHRsLCB0ciwgYmwsIGJyOworICAgICAgICBp
ZiAoZXhwZWN0ZWQubGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgIHRsID0gdHIgPSBibCA9IGJy
ID0gZXhwZWN0ZWRbMF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0bCA9IGV4cGVj
dGVkWzBdOworICAgICAgICAgICAgdHIgPSBleHBlY3RlZFsxXTsKKyAgICAgICAgICAgIGJsID0g
ZXhwZWN0ZWRbMl07CisgICAgICAgICAgICBiciA9IGV4cGVjdGVkWzNdOworICAgICAgICB9CisK
KyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7Cisg
ICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7Cisg
ICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgICAgICB3dHUu
Y2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKworICAgICAgICAgICAg
Ly8gQ2hlY2sgdGhlIHRvcCBwaXhlbCBhbmQgYm90dG9tIHBpeGVsIGFuZCBtYWtlIHN1cmUgdGhl
eSBoYXZlCisgICAgICAgICAgICAvLyB0aGUgcmlnaHQgY29sb3IuCisgICAgICAgICAgICB3dHUu
Y2hlY2tDYW52YXNSZWN0KGdsLCBsZWZ0LCB0b3AsIGhhbGZXaWR0aCwgaGFsZkhlaWdodCwgdGws
ICJzaG91bGRCZSAiICsgdGwpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwg
cmlnaHQsIHRvcCwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0LCB0ciwgInNob3VsZEJlICIgKyB0cik7
CisgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBsZWZ0LCBib3R0b20sIGhhbGZX
aWR0aCwgaGFsZkhlaWdodCwgYmwsICJzaG91bGRCZSAiICsgYmwpOworICAgICAgICAgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgcmlnaHQsIGJvdHRvbSwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0
LCBiciwgInNob3VsZEJlICIgKyBicik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIHZhciBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVy
ZWRRdWFkKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIHJ1blRlc3RPbkJpbmRpbmdUYXJn
ZXQoZ2wuVEVYVFVSRV8yRCwgcHJvZ3JhbSk7CisgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0dXBU
ZXh0dXJlZFF1YWRXaXRoQ3ViZU1hcChnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBydW5U
ZXN0T25CaW5kaW5nVGFyZ2V0KGdsLlRFWFRVUkVfQ1VCRV9NQVAsIHByb2dyYW0pOworCisgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVy
cm9ycyIpOworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVu
VGVzdE9uQmluZGluZ1RhcmdldChiaW5kaW5nVGFyZ2V0LCBwcm9ncmFtKSB7CisgICAgICAgIHZh
ciBrID0gYmxhY2tDb2xvcjsKKyAgICAgICAgdmFyIHIgPSByZWRDb2xvcjsKKyAgICAgICAgdmFy
IGcgPSBncmVlbkNvbG9yOworICAgICAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgICAgICB7IGV4
cGVjdGVkOiBbciwgciwgZywgZ10sIGZsaXBZOiBmYWxzZSwgcHJlbXVsdGlwbHlBbHBoYTogZmFs
c2UsIHN1YjogZmFsc2UgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IFtyLCByLCBnLCBnXSwg
ZmxpcFk6IGZhbHNlLCBwcmVtdWx0aXBseUFscGhhOiBmYWxzZSwgc3ViOiB0cnVlIH0sCisgICAg
ICAgICAgICB7IGV4cGVjdGVkOiBbciwgaywgZywga10sIGZsaXBZOiBmYWxzZSwgcHJlbXVsdGlw
bHlBbHBoYTogdHJ1ZSwgc3ViOiBmYWxzZSB9LAorICAgICAgICAgICAgeyBleHBlY3RlZDogW3Is
IGssIGcsIGtdLCBmbGlwWTogZmFsc2UsIHByZW11bHRpcGx5QWxwaGE6IHRydWUsIHN1YjogdHJ1
ZSB9LAorICAgICAgICAgICAgeyBleHBlY3RlZDogW2csIGcsIHIsIHJdLCBmbGlwWTogdHJ1ZSwg
cHJlbXVsdGlwbHlBbHBoYTogZmFsc2UsIHN1YjogZmFsc2UgfSwKKyAgICAgICAgICAgIHsgZXhw
ZWN0ZWQ6IFtnLCBnLCByLCByXSwgZmxpcFk6IHRydWUsIHByZW11bHRpcGx5QWxwaGE6IGZhbHNl
LCBzdWI6IHRydWUgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IFtnLCBrLCByLCBrXSwgZmxp
cFk6IHRydWUsIHByZW11bHRpcGx5QWxwaGE6IHRydWUsIHN1YjogZmFsc2UgfSwKKyAgICAgICAg
ICAgIHsgZXhwZWN0ZWQ6IFtnLCBrLCByLCBrXSwgZmxpcFk6IHRydWUsIHByZW11bHRpcGx5QWxw
aGE6IHRydWUsIHN1YjogdHJ1ZSB9LAorICAgICAgICBdOworCisgICAgICAgIGlmICh3dHUuZ2V0
RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oKSA+IDEpIHsKKyAgICAgICAgICAgIHZhciBtb3JlY2Fz
ZXMgPSBbXTsKKyAgICAgICAgICAgIC8vIE1ha2UgMiBjb3BpZXMgb2YgdGhlIG9yaWdpbmFsIGNh
c2U6IHRvcCBsZWZ0IGFuZCBib3R0b20gcmlnaHQgMXgxIHJlY3RhbmdsZXMKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2FzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBzdWJYID0gMDsgc3ViWCA8PSAxOyBzdWJYKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHN1YlkgPSBzdWJYID09IDAgPyAxIDogMDsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gc2hhbGxvdy1jb3B5IGNhc2VzW2ldIGludG8gbmV3Y2FzZQorICAgICAgICAgICAgICAgICAg
ICB2YXIgbmV3Y2FzZSA9IE9iamVjdC5hc3NpZ24oe30sIGNhc2VzW2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgbmV3Y2FzZS5leHBlY3RlZCA9IFtjYXNlc1tpXS5leHBlY3RlZFtzdWJZICogMiAr
IHN1YlhdXTsKKyAgICAgICAgICAgICAgICAgICAgbmV3Y2FzZS5zb3VyY2VTdWJSZWN0YW5nbGUg
PSBbc3ViWCwgc3ViWSwgMSwgMV07CisgICAgICAgICAgICAgICAgICAgIG1vcmVjYXNlcy5wdXNo
KG5ld2Nhc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2VzID0gY2FzZXMuY29uY2F0KG1vcmVjYXNlcyk7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKHZhciBpIGluIGNhc2VzKSB7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oY2FzZXNb
aV0uc3ViLCBjYXNlc1tpXS5mbGlwWSwgY2FzZXNbaV0ucHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUsIGNhc2Vz
W2ldLmV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmdUYXJnZXQs
IHByb2dyYW0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzgwMmJhNzc3MWY0MTY3
YWEwMjMxY2I2OGFhMzIyNDMwMjdmMzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcwpAQCAtMCwwICsxLDI1NyBAQAorLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5lcmF0ZVRlc3QoaW50
ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3VlLCByZXNvdXJjZVBh
dGgsIGRlZmF1bHRDb250ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKKyAgICB2YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOworICAg
IHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKyAgICB2YXIgaW1nQ2FudmFzOworICAg
IHZhciByZWRDb2xvciA9IFsyNTUsIDAsIDBdOworICAgIHZhciBncmVlbkNvbG9yID0gWzAsIDI1
NSwgMF07CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9u
KCdWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBp
bWFnZSBlbGVtZW50cyAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAn
LycgKyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250
ZXh0IHZlcnNpb24gd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVl
cnkgc3RyaW5nIHRvIG92ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4
dFZlcnNpb24oZGVmYXVsdENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRl
M0RDb250ZXh0KCJleGFtcGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAoZ2xbcGl4ZWxGb3JtYXRdKSB7CisgICAgICAgIGNhc2UgZ2wuUkVE
OgorICAgICAgICBjYXNlIGdsLlJFRF9JTlRFR0VSOgorICAgICAgICAgIGdyZWVuQ29sb3IgPSBb
MCwgMCwgMF07CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0U6
CisgICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgIHJlZENvbG9yID0g
WzI1NSwgMjU1LCAyNTVdOworICAgICAgICAgIGdyZWVuQ29sb3IgPSBbMCwgMCwgMF07CisgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBnbC5BTFBIQToKKyAgICAgICAgICByZWRDb2xv
ciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgICAgICBnbC5jbGVhckRl
cHRoKDEpOworCisgICAgICAgIHd0dS5sb2FkVGV4dHVyZShnbCwgcmVzb3VyY2VQYXRoICsgInJl
ZC1ncmVlbi5wbmciLCBydW5UZXN0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5PbmVJdGVy
YXRpb24oaW1hZ2UsIHVzZVRleFN1YkltYWdlMkQsIGZsaXBZLCB0b3BDb2xvciwgYm90dG9tQ29s
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZSwgYmlu
ZGluZ1RhcmdldCwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0
cmluZyA9ICcnOworICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAg
ICBzb3VyY2VTdWJSZWN0YW5nbGVTdHJpbmcgPSAnIHNvdXJjZVN1YlJlY3RhbmdsZT0nICsgc291
cmNlU3ViUmVjdGFuZ2xlOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcgKyAo
dXNlVGV4U3ViSW1hZ2UyRCA/ICd0ZXhTdWJJbWFnZTJEJyA6ICd0ZXhJbWFnZTJEJykgKworICAg
ICAgICAgICAgICAnIHdpdGggJyArIGltYWdlLndpZHRoICsgJ3gnICsgaW1hZ2UuaGVpZ2h0ICsg
JyBmbGlwWT0nICsgZmxpcFkgKyAnIGJpbmRpbmdUYXJnZXQ9JyArCisgICAgICAgICAgICAgIChi
aW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQgPyAnVEVYVFVSRV8yRCcgOiAnVEVYVFVSRV9D
VUJFX01BUCcpICsKKyAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlU3RyaW5nKTsKKyAg
ICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQp
OworICAgICAgICAvLyBEaXNhYmxlIGFueSB3cml0ZXMgdG8gdGhlIGFscGhhIGNoYW5uZWwKKyAg
ICAgICAgZ2wuY29sb3JNYXNrKDEsIDEsIDEsIDApOworICAgICAgICB2YXIgdGV4dHVyZSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0dXJl
IHVuaXQgMAorICAgICAgICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0LCB0ZXh0dXJlKTsK
KyAgICAgICAgLy8gU2V0IHVwIHRleHR1cmUgcGFyYW1ldGVycworICAgICAgICBnbC50ZXhQYXJh
bWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7
CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFt
ZXRlcnMKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgZmxp
cFkpOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFf
V0VCR0wsIGZhbHNlKTsKKyAgICAgICAgd3R1LmZhaWxJZkdMRXJyb3IoZ2wsICdnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsnKTsK
KyAgICAgICAgdmFyIHRhcmdldHMgPSBbZ2wuVEVYVFVSRV8yRF07CisgICAgICAgIGlmIChiaW5k
aW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgIHRhcmdldHMg
PSBbZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgICAgICAgICAgICAgICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgICAgICAgICAgICAgICAgICAg
IGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Z2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgICAgICAgICAgICAgICAgICAgICBn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgICAgICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgICAgIH0KKyAgICAgICAgLy8gSGFu
ZGxlIHRoZSBzb3VyY2Ugc3ViLXJlY3RhbmdsZSBpZiBzcGVjaWZpZWQgKFdlYkdMIDIuMCBvbmx5
KQorICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBnbC5waXhl
bFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHNvdXJjZVN1YlJlY3RhbmdsZVswXSk7Cisg
ICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCBzb3VyY2VTdWJS
ZWN0YW5nbGVbMV0pOworICAgICAgICB9CisgICAgICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2UgaW50
byB0aGUgdGV4dHVyZQorICAgICAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5n
dGg7ICsrdHQpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VTdWJSZWN0YW5nbGUpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodXNlVGV4U3ViSW1hZ2UyRCkgeworICAgICAgICAgICAgICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAgICAgICAg
ICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsW2ludGVybmFsRm9ybWF0XSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVbMl0sIHNv
dXJjZVN1YlJlY3RhbmdsZVszXSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgICAg
ICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVsyXSwgc291cmNlU3Vi
UmVjdGFuZ2xlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3Bp
eGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgaW1hZ2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGds
W2ludGVybmFsRm9ybWF0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VTdWJSZWN0YW5nbGVbMl0sIHNvdXJjZVN1YlJlY3RhbmdsZVszXSwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGlt
YWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTJEKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElu
aXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAg
Z2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBpbWFnZS53
aWR0aCwgaW1hZ2UuaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAgICAgICAg
ICAgIGdsLnRleFN1YkltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIDAsIDAsIGdsW3BpeGVsRm9ybWF0
XSwgZ2xbcGl4ZWxUeXBlXSwgaW1hZ2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsW2ludGVybmFs
Rm9ybWF0XSwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBpbWFnZSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNvdXJj
ZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NL
SVBfUElYRUxTLCAwKTsKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQ
X1JPV1MsIDApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGxvYzsKKyAgICAgICAgaWYgKGJp
bmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgbG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmYWNlIik7CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAg
ICAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAg
ICAgICAgICAgICBnbC51bmlmb3JtMWkobG9jLCB0YXJnZXRzW3R0XSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhlIHRyaWFuZ2xlcworICAgICAgICAgICAgd3R1LmNs
ZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgICAgICAvLyBD
aGVjayBhIGZldyBwaXhlbHMgbmVhciB0aGUgdG9wIGFuZCBib3R0b20gYW5kIG1ha2Ugc3VyZSB0
aGV5IGhhdmUKKyAgICAgICAgICAgIC8vIHRoZSByaWdodCBjb2xvci4KKyAgICAgICAgICAgIGRl
YnVnKCJDaGVja2luZyBsb3dlciBsZWZ0IGNvcm5lciIpOworICAgICAgICAgICAgd3R1LmNoZWNr
Q2FudmFzUmVjdChnbCwgNCwgNCwgMiwgMiwgYm90dG9tQ29sb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzaG91bGRCZSAiICsgYm90dG9tQ29sb3IpOworICAgICAgICAgICAg
ZGVidWcoIkNoZWNraW5nIHVwcGVyIGxlZnQgY29ybmVyIik7CisgICAgICAgICAgICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCA0LCBnbC5jYW52YXMuaGVpZ2h0IC0gOCwgMiwgMiwgdG9wQ29sb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRCZSAiICsgdG9wQ29sb3Ip
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdE9uSW1hZ2UoaW1hZ2Up
IHsKKyAgICAgICAgdmFyIGNhc2VzID0gWworICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlw
WTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAor
ICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIHRvcENvbG9yOiBncmVlbkNv
bG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBm
bGlwWTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9
LAorICAgICAgICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVu
Q29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICBdOworCisKKyAgICAgICAg
aWYgKHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpID4gMSkgeworICAgICAgICAgICAg
Y2FzZXMgPSBjYXNlcy5jb25jYXQoWworICAgICAgICAgICAgICAgIHsgc3ViOiBmYWxzZSwgZmxp
cFk6IGZhbHNlLCB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciwKKyAg
ICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZTogWzAsIDAsIDEsIDFdIH0sCisgICAg
ICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogdHJ1ZSwgdG9wQ29sb3I6IGdyZWVuQ29s
b3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yLAorICAgICAgICAgICAgICAgICAgc291cmNlU3Vi
UmVjdGFuZ2xlOiBbMCwgMCwgMSwgMV0gfSwKKyAgICAgICAgICAgICAgICB7IHN1YjogZmFsc2Us
IGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNv
bG9yLAorICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlOiBbMCwgMSwgMSwgMV0g
fSwKKyAgICAgICAgICAgICAgICB7IHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCB0b3BDb2xvcjog
cmVkQ29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciwKKyAgICAgICAgICAgICAgICAgIHNvdXJj
ZVN1YlJlY3RhbmdsZTogWzAsIDEsIDEsIDFdIH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IHRy
dWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogcmVkQ29s
b3IsCisgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGU6IFswLCAwLCAxLCAxXSB9
LAorICAgICAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBmbGlwWTogdHJ1ZSwgdG9wQ29sb3I6IGdy
ZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yLAorICAgICAgICAgICAgICAgICAgc291
cmNlU3ViUmVjdGFuZ2xlOiBbMCwgMCwgMSwgMV0gfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
dHJ1ZSwgZmxpcFk6IGZhbHNlLCB0b3BDb2xvcjogZ3JlZW5Db2xvciwgYm90dG9tQ29sb3I6IGdy
ZWVuQ29sb3IsCisgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGU6IFswLCAxLCAx
LCAxXSB9LAorICAgICAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBmbGlwWTogdHJ1ZSwgdG9wQ29s
b3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IsCisgICAgICAgICAgICAgICAgICBz
b3VyY2VTdWJSZWN0YW5nbGU6IFswLCAxLCAxLCAxXSB9LAorICAgICAgICAgICAgXSk7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZChnbCwg
aW50ZXJuYWxGb3JtYXQpOworICAgICAgICBmb3IgKHZhciBpIGluIGNhc2VzKSB7CisgICAgICAg
ICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIGNhc2VzW2ldLnN1YiwgY2FzZXNbaV0uZmxpcFks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0udG9wQ29sb3IsIGNhc2VzW2ld
LmJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLnNvdXJj
ZVN1YlJlY3RhbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJE
LCBwcm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICAvLyBjdWJlIG1hcCB0ZXh0dXJlIG11c3Qg
YmUgc3F1YXJlLgorICAgICAgICBpZiAoaW1hZ2Uud2lkdGggIT0gaW1hZ2UuaGVpZ2h0KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBTa2lwIHN1Yi1yZWN0YW5nbGUgdGVzdHMgZm9y
IGN1YmUgbWFwIHRleHR1cmVzIGZvciB0aGUgbW9tZW50LgorICAgICAgICBwcm9ncmFtID0gdGl1
LnNldHVwVGV4dHVyZWRRdWFkV2l0aEN1YmVNYXAoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAg
ICAgZm9yICh2YXIgaSBpbiBjYXNlcykgeworICAgICAgICAgICAgaWYgKCFjYXNlc1tpXS5zb3Vy
Y2VTdWJSZWN0YW5nbGUpIHsKKyAgICAgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2Us
IGNhc2VzW2ldLnN1YiwgY2FzZXNbaV0uZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2VzW2ldLnRvcENvbG9yLCBjYXNlc1tpXS5ib3R0b21Db2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQLCBwcm9ncmFtKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoaW1hZ2UpCisgICAgewor
ICAgICAgICBydW5UZXN0T25JbWFnZShpbWFnZSk7CisKKyAgICAgICAgaW1nQ2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGltZ0NhbnZhcy53aWR0aCA9
IDI7CisgICAgICAgIGltZ0NhbnZhcy5oZWlnaHQgPSAyOworICAgICAgICB2YXIgaW1nQ3R4ID0g
aW1nQ2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgIHZhciBpbWdEYXRhID0gaW1nQ3R4
LmNyZWF0ZUltYWdlRGF0YSgyLCAyKTsKKyAgICAgICAgaW1nRGF0YS5kYXRhWzBdID0gcmVkQ29s
b3JbMF07CisgICAgICAgIGltZ0RhdGEuZGF0YVsxXSA9IHJlZENvbG9yWzFdOworICAgICAgICBp
bWdEYXRhLmRhdGFbMl0gPSByZWRDb2xvclsyXTsKKyAgICAgICAgaW1nRGF0YS5kYXRhWzNdID0g
MjU1OworICAgICAgICBpbWdEYXRhLmRhdGFbNF0gPSByZWRDb2xvclswXTsKKyAgICAgICAgaW1n
RGF0YS5kYXRhWzVdID0gcmVkQ29sb3JbMV07CisgICAgICAgIGltZ0RhdGEuZGF0YVs2XSA9IHJl
ZENvbG9yWzJdOworICAgICAgICBpbWdEYXRhLmRhdGFbN10gPSAyNTU7CisgICAgICAgIGltZ0Rh
dGEuZGF0YVs4XSA9IGdyZWVuQ29sb3JbMF07CisgICAgICAgIGltZ0RhdGEuZGF0YVs5XSA9IGdy
ZWVuQ29sb3JbMV07CisgICAgICAgIGltZ0RhdGEuZGF0YVsxMF0gPSBncmVlbkNvbG9yWzJdOwor
ICAgICAgICBpbWdEYXRhLmRhdGFbMTFdID0gMjU1OworICAgICAgICBpbWdEYXRhLmRhdGFbMTJd
ID0gZ3JlZW5Db2xvclswXTsKKyAgICAgICAgaW1nRGF0YS5kYXRhWzEzXSA9IGdyZWVuQ29sb3Jb
MV07CisgICAgICAgIGltZ0RhdGEuZGF0YVsxNF0gPSBncmVlbkNvbG9yWzJdOworICAgICAgICBp
bWdEYXRhLmRhdGFbMTVdID0gMjU1OworICAgICAgICBpbWdDdHgucHV0SW1hZ2VEYXRhKGltZ0Rh
dGEsIDAsIDApOworCisgICAgICAgIC8vIGFwcGFyZW50bHkgSW1hZ2UgaXMgZGlmZmVyZW50IHRo
YW4gPGltZz4uCisgICAgICAgIHZhciBuZXdJbWFnZSA9ICBuZXcgSW1hZ2UoKTsKKyAgICAgICAg
bmV3SW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW5UZXN0MihuZXdJ
bWFnZSk7CisgICAgICAgIH07CisgICAgICAgIG5ld0ltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNyZWF0aW5nIGltYWdlIGZyb20gY2FudmFzIGZh
aWxlZC4gSW1hZ2Ugc3JjOiAiICsgdGhpcy5zcmMpOworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICB9OworICAgICAgICBuZXdJbWFnZS5zcmMgPSBpbWdDYW52YXMudG9EYXRhVVJM
KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdDIoaW1hZ2UpIHsKKyAgICAgICAgcnVu
VGVzdE9uSW1hZ2UoaW1hZ2UpOworCisgICAgICAgIHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGlt
Z0NhbnZhcywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW5UZXN0Myh0aGlzKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdDMoaW1hZ2UpIHsKKyAgICAgICAg
cnVuVGVzdE9uSW1hZ2UoaW1hZ2UpOworCisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLXN2Zy1pbWFnZS5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtc3ZnLWltYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYzZhODI4M2UwY2NmYzllODA5NmRmNWFh
ZDAxNDllNzhiMjEzY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLXN2Zy1pbWFnZS5qcwpAQCAtMCwwICsxLDE0MCBAQAorLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5lcmF0ZVRlc3QoaW50ZXJuYWxG
b3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3VlLCByZXNvdXJjZVBhdGgsIGRl
ZmF1bHRDb250ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAg
ICB2YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOworICAgIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKyAgICB2YXIgaW1nQ2FudmFzOworICAgIHZhciBy
ZWRDb2xvciA9IFsyNTUsIDAsIDBdOworICAgIHZhciBncmVlbkNvbG9yID0gWzAsIDI1NSwgMF07
CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdWZXJp
ZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBTVkcgaW1h
Z2UgZWxlbWVudHMgKCcgKyBpbnRlcm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8n
ICsgcGl4ZWxUeXBlICsgJyknKTsKKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgY29udGV4
dCB2ZXJzaW9uIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24gVVJMIHF1ZXJ5
IHN0cmluZyB0byBvdmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQzRENvbnRleHRW
ZXJzaW9uKGRlZmF1bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1LmNyZWF0ZTNE
Q29udGV4dCgiZXhhbXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wpKSB7CisgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAgICAgICAgIGNhc2UgZ2wuUkVE
OgorICAgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAgICAgICAgICBncmVlbkNvbG9y
ID0gWzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBnbC5MVU1J
TkFOQ0U6CisgICAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBy
ZWRDb2xvciA9IFsyNTUsIDI1NSwgMjU1XTsKKyAgICAgICAgICAgIGdyZWVuQ29sb3IgPSBbMCwg
MCwgMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIGdsLkFMUEhBOgorICAg
ICAgICAgICAgcmVkQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgICBncmVlbkNvbG9yID0g
WzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwx
KTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKworICAgICAgICB3dHUubG9hZFRleHR1cmUo
Z2wsIHJlc291cmNlUGF0aCArICJyZWQtZ3JlZW4uc3ZnIiwgcnVuVGVzdCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uKGltYWdlLCB1c2VUZXhTdWJJbWFnZTJELCBmbGlw
WSwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yLCBiaW5kaW5nVGFyZ2V0LCBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgJyArICh1c2VUZXhTdWJJbWFnZTJEID8gJ3RleFN1Yklt
YWdlMkQnIDogJ3RleEltYWdlMkQnKSArCisgICAgICAgICAgICAgICcgd2l0aCBmbGlwWT0nICsg
ZmxpcFkgKyAnIGJpbmRpbmdUYXJnZXQ9JyArCisgICAgICAgICAgICAgIChiaW5kaW5nVGFyZ2V0
ID09IGdsLlRFWFRVUkVfMkQgPyAnVEVYVFVSRV8yRCcgOiAnVEVYVFVSRV9DVUJFX01BUCcpKTsK
KyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9C
SVQpOworICAgICAgICAvLyBEaXNhYmxlIGFueSB3cml0ZXMgdG8gdGhlIGFscGhhIGNoYW5uZWwK
KyAgICAgICAgZ2wuY29sb3JNYXNrKDEsIDEsIDEsIDApOworICAgICAgICB2YXIgdGV4dHVyZSA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0
dXJlIHVuaXQgMAorICAgICAgICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0LCB0ZXh0dXJl
KTsKKyAgICAgICAgLy8gU2V0IHVwIHRleHR1cmUgcGFyYW1ldGVycworICAgICAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVT
VCk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBh
cmFtZXRlcnMKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwg
ZmxpcFkpOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQ
SEFfV0VCR0wsIGZhbHNlKTsKKyAgICAgICAgd3R1LmZhaWxJZkdMRXJyb3IoZ2wsICdnbC5waXhl
bFN0b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsn
KTsKKyAgICAgICAgdmFyIHRhcmdldHMgPSBbZ2wuVEVYVFVSRV8yRF07CisgICAgICAgIGlmIChi
aW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgIHRhcmdl
dHMgPSBbZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgICAgICAgICAgICAgICAg
ICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgICAgICAgICAgICAgICAg
ICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgICAgICAgICAgICAgICAgICAg
ICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgICAgICAgICAgICAgICAgICAg
IGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgICAgIH0KKyAgICAgICAgLy8g
VXBsb2FkIHRoZSBpbWFnZSBpbnRvIHRoZSB0ZXh0dXJlCisgICAgICAgIGZvciAodmFyIHR0ID0g
MDsgdHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICAgICAgaWYgKHVzZVRleFN1
YkltYWdlMkQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHRv
IGJsYWNrIGZpcnN0CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwg
MCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0LCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVd
LCBudWxsKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAw
LCAwLCAwLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGltYWdlKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwg
MCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGlt
YWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBsb2M7CisgICAg
ICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAg
ICAgIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZmFjZSIpOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0
KSB7CisgICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQ
KSB7CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgICAg
ICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKyAgICAgICAg
ICAgIC8vIENoZWNrIGEgZmV3IHBpeGVscyBuZWFyIHRoZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFr
ZSBzdXJlIHRoZXkgaGF2ZQorICAgICAgICAgICAgLy8gdGhlIHJpZ2h0IGNvbG9yLgorICAgICAg
ICAgICAgZGVidWcoIkNoZWNraW5nIGxvd2VyIGxlZnQgY29ybmVyIik7CisgICAgICAgICAgICB3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCA0LCAyLCAyLCBib3R0b21Db2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyBib3R0b21Db2xvcik7CisgICAg
ICAgICAgICBkZWJ1ZygiQ2hlY2tpbmcgdXBwZXIgbGVmdCBjb3JuZXIiKTsKKyAgICAgICAgICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDQsIGdsLmNhbnZhcy5oZWlnaHQgLSA4LCAyLCAyLCB0
b3BDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyB0
b3BDb2xvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KGltYWdl
KQorICAgIHsKKyAgICAgICAgdmFyIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWQoZ2ws
IGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgcnVuVGVzdE9uQmluZGluZ1RhcmdldChpbWFnZSwg
Z2wuVEVYVFVSRV8yRCwgcHJvZ3JhbSk7CisgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0
dXJlZFF1YWRXaXRoQ3ViZU1hcChnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBydW5UZXN0
T25CaW5kaW5nVGFyZ2V0KGltYWdlLCBnbC5URVhUVVJFX0NVQkVfTUFQLCBwcm9ncmFtKTsKKwor
ICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBu
byBlcnJvcnMiKTsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1blRlc3RPbkJpbmRpbmdUYXJnZXQoaW1hZ2UsIGJpbmRpbmdUYXJnZXQsIHByb2dyYW0pIHsK
KyAgICAgICAgdmFyIGNhc2VzID0gWworICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTog
dHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAorICAg
ICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIHRvcENvbG9yOiBncmVlbkNvbG9y
LCBib3R0b21Db2xvcjogcmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBmbGlw
WTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAor
ICAgICAgICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVuQ29s
b3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICBdOworICAgICAgICBmb3IgKHZh
ciBpIGluIGNhc2VzKSB7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIGNhc2Vz
W2ldLnN1YiwgY2FzZXNbaV0uZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZXNbaV0udG9wQ29sb3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJpbmRpbmdUYXJnZXQsIHByb2dyYW0pOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLXZpZGVvLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MmUxYzczNzdiYzZhM2NmYTU1ZGY1MTNhMGY5MWUwZmRjNTEyOTFlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
anMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5qcwpAQCAtMCww
ICsxLDI5MiBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMu
CitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisv
LyBUaGlzIGJsb2NrIG5lZWRzIHRvIGJlIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIGluIG9y
ZGVyIGZvciB0aGlzCisvLyB0ZXN0IHRvIHJ1biByZWxpYWJseSBpbiBXZWJLaXQncyB0ZXN0IGhh
cm5lc3MgKGF0IGxlYXN0IHRoZQorLy8gQ2hyb21pdW0gcG9ydCkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ0OAoraW5pdFRlc3RpbmdIYXJuZXNzKCk7CisKK3Zh
ciBvbGQgPSBkZWJ1ZzsKK3ZhciBkZWJ1ZyA9IGZ1bmN0aW9uKG1zZykgeworICBidWZmZXJlZExv
Z1RvQ29uc29sZShtc2cpOworICBvbGQobXNnKTsKK307CisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVz
dChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291
cmNlUGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9uKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVz
dFV0aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7
CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworICAgIHZhciByZWRDb2xvciA9
IFsyNTUsIDAsIDBdOworICAgIHZhciBncmVlbkNvbG9yID0gWzAsIDI1NSwgMF07CisKKyAgICAv
LyBUZXN0IGVhY2ggZm9ybWF0IHNlcGFyYXRlbHkgYmVjYXVzZSBtYW55IGJyb3dzZXJzIGltcGxl
bWVudCBlYWNoCisgICAgLy8gZGlmZmVyZW50bHkuIFNvbWUgbWlnaHQgYmUgR1BVIGFjY2VsZXJh
dGVkLCBzb21lIG1pZ2h0IG5vdC4gRXRjLi4uCisgICAgdmFyIHZpZGVvcyA9IFsKKyAgICAgIHsg
c3JjOiByZXNvdXJjZVBhdGggKyAicmVkLWdyZWVuLm1wNCIgICAgICAgICAgICwgdHlwZTogJ3Zp
ZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSwgbXA0YS40MC4yIicsIH0sCisgICAgICB7IHNy
YzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi53ZWJtdnA4LndlYm0iICAsIHR5cGU6ICd2aWRl
by93ZWJtOyBjb2RlY3M9InZwOCwgdm9yYmlzIicsICAgICAgICAgICB9LAorICAgICAgeyBzcmM6
IHJlc291cmNlUGF0aCArICJyZWQtZ3JlZW4uYnQ2MDEudnA5LndlYm0iLCB0eXBlOiAndmlkZW8v
d2VibTsgY29kZWNzPSJ2cDkiJywgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgIHsgc3JjOiBy
ZXNvdXJjZVBhdGggKyAicmVkLWdyZWVuLnRoZW9yYS5vZ3YiICAgICwgdHlwZTogJ3ZpZGVvL29n
ZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInLCAgICAgICAgIH0sCisgICAgXTsKKworICAgIGZ1
bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFn
ZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIHZpZGVvIGVsZW1lbnRzICgn
ICsgaW50ZXJuYWxGb3JtYXQgKyAnLycgKyBwaXhlbEZvcm1hdCArICcvJyArIHBpeGVsVHlwZSAr
ICcpJyk7CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3aGls
ZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8gb3Zl
cnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0
Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1w
bGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNo
IChnbFtwaXhlbEZvcm1hdF0pIHsKKyAgICAgICAgICBjYXNlIGdsLlJFRDoKKyAgICAgICAgICBj
YXNlIGdsLlJFRF9JTlRFR0VSOgorICAgICAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFOgorICAgICAg
ICAgIGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgcmVkQ29sb3IgPSBbMjU1
LCAyNTUsIDI1NV07CisgICAgICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBnbC5BTFBIQToKKyAgICAgICAgICAgIHJlZENv
bG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGds
LmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1bk9uZUl0ZXJhdGlvbih2aWRlb0VsZW1lbnQsIHVzZVRleFN1YkltYWdlMkQsIGZsaXBZ
LCB0b3BDb2xvciwgYm90dG9tQ29sb3IsIHNvdXJjZVN1YlJlY3RhbmdsZSwgcHJvZ3JhbSwgYmlu
ZGluZ1RhcmdldCkKKyAgICB7CisgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0cmluZyA9ICcn
OworICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBzb3VyY2VT
dWJSZWN0YW5nbGVTdHJpbmcgPSAnIHNvdXJjZVN1YlJlY3RhbmdsZT0nICsgc291cmNlU3ViUmVj
dGFuZ2xlOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcgKyAodXNlVGV4U3Vi
SW1hZ2UyRCA/ICd0ZXhTdWJJbWFnZTJEJyA6ICd0ZXhJbWFnZTJEJykgKworICAgICAgICAgICAg
ICAnIHdpdGggZmxpcFk9JyArIGZsaXBZICsgJyBiaW5kaW5nVGFyZ2V0PScgKworICAgICAgICAg
ICAgICAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFXzJEID8gJ1RFWFRVUkVfMkQnIDogJ1RF
WFRVUkVfQ1VCRV9NQVAnKSArCisgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0cmlu
Zyk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZG
RVJfQklUKTsKKyAgICAgICAgLy8gRGlzYWJsZSBhbnkgd3JpdGVzIHRvIHRoZSBhbHBoYSBjaGFu
bmVsCisgICAgICAgIGdsLmNvbG9yTWFzaygxLCAxLCAxLCAwKTsKKyAgICAgICAgdmFyIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgdG8g
dGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoYmluZGluZ1RhcmdldCwgdGV4
dHVyZSk7CisgICAgICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5F
QVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmlu
ZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5D
TEFNUF9UT19FREdFKTsKKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMK
KyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgZmxpcFkpOwor
ICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0ws
IGZhbHNlKTsKKyAgICAgICAgdmFyIHRhcmdldHMgPSBbZ2wuVEVYVFVSRV8yRF07CisgICAgICAg
IGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAg
IHRhcmdldHMgPSBbZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLAorICAgICAgICAgICAg
ICAgICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsCisgICAgICAgICAgICAg
ICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLAorICAgICAgICAgICAgICAg
ICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osCisgICAgICAgICAgICAgICAg
ICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgICAgIH0KKyAgICAg
ICAgLy8gSGFuZGxlIHRoZSBzb3VyY2Ugc3ViLXJlY3RhbmdsZSBpZiBzcGVjaWZpZWQgKFdlYkdM
IDIuMCBvbmx5KQorICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAg
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHNvdXJjZVN1YlJlY3Rhbmds
ZVswXSk7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCBz
b3VyY2VTdWJSZWN0YW5nbGVbMV0pOworICAgICAgICB9CisgICAgICAgIC8vIFVwbG9hZCB0aGUg
dmlkZW9FbGVtZW50IGludG8gdGhlIHRleHR1cmUKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0
dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAgICAgICBpZiAoc291cmNlU3ViUmVj
dGFuZ2xlKSB7CisgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBi
bGFjayBmaXJzdAorICAgICAgICAgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTJEKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFNraXAgc3ViLXJlY3RhbmdsZSB0ZXN0cyBmb3IgY3ViZSBtYXAg
dGV4dHVyZXMgZm9yIHRoZSBtb21lbnQuCisgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5n
VGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGds
LnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsW2ludGVybmFsRm9ybWF0XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVbMl0sIHNvdXJjZVN1
YlJlY3RhbmdsZVszXSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtw
aXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgICAgICAgICBn
bC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVsyXSwgc291cmNlU3ViUmVjdGFu
Z2xlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9y
bWF0XSwgZ2xbcGl4ZWxUeXBlXSwgdmlkZW9FbGVtZW50KTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBn
bFtpbnRlcm5hbEZvcm1hdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlU3ViUmVjdGFuZ2xlWzJdLCBzb3VyY2VTdWJSZWN0YW5nbGVbM10sIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCB2
aWRlb0VsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBibGFjayBmaXJzdAor
ICAgICAgICAgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTJEKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciB3aWR0aCA9IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoOworICAgICAgICAgICAgICAg
ICAgICB2YXIgaGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0OworICAgICAgICAgICAg
ICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjdWJlIG1hcCB0ZXh0dXJlIG11c3QgYmUgc3F1YXJlLgor
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IHdpZHRoOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAs
IGdsW2ludGVybmFsRm9ybWF0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3Bp
eGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGds
LnRleFN1YkltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIDAsIDAsIGdsW3BpeGVsRm9ybWF0XSwgZ2xb
cGl4ZWxUeXBlXSwgdmlkZW9FbGVtZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5h
bEZvcm1hdF0sIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgdmlkZW9FbGVtZW50KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5V
TlBBQ0tfU0tJUF9QSVhFTFMsIDApOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5Q
QUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICBjLndpZHRoID0gMTY7CisgICAgICAg
IGMuaGVpZ2h0ID0gMTY7CisgICAgICAgIGMuc3R5bGUuYm9yZGVyID0gIjFweCBzb2xpZCBibGFj
ayI7CisgICAgICAgIHZhciBjdHggPSBjLmdldENvbnRleHQoIjJkIik7CisgICAgICAgIGN0eC5k
cmF3SW1hZ2UodmlkZW9FbGVtZW50LCAwLCAwLCAxNiwgMTYpOworICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGMpOworCisgICAgICAgIHZhciBsb2M7CisgICAgICAgIGlmIChiaW5k
aW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAgIGxvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZmFjZSIpOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAg
ICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAg
ICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgICAgICB3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKyAgICAgICAgICAgIC8vIENoZWNr
IGEgZmV3IHBpeGVscyBuZWFyIHRoZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFrZSBzdXJlIHRoZXkg
aGF2ZQorICAgICAgICAgICAgLy8gdGhlIHJpZ2h0IGNvbG9yLgorICAgICAgICAgICAgY29uc3Qg
dG9sZXJhbmNlID0gNjsKKyAgICAgICAgICAgIGRlYnVnKCJDaGVja2luZyBsb3dlciBsZWZ0IGNv
cm5lciIpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgNCwgMiwgMiwg
Ym90dG9tQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRCZSAi
ICsgYm90dG9tQ29sb3IsIHRvbGVyYW5jZSk7CisgICAgICAgICAgICBkZWJ1ZygiQ2hlY2tpbmcg
dXBwZXIgbGVmdCBjb3JuZXIiKTsKKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2ws
IDQsIGdsLmNhbnZhcy5oZWlnaHQgLSA4LCAyLCAyLCB0b3BDb2xvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyB0b3BDb2xvciwgdG9sZXJhbmNlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QodmlkZW9FbGVtZW50KQorICAg
IHsKKyAgICAgICAgdmFyIGNhc2VzID0gWworICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlw
WTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAor
ICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIHRvcENvbG9yOiBncmVlbkNv
bG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBm
bGlwWTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9
LAorICAgICAgICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVu
Q29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICBdOworCisgICAgICAgIGlm
ICh3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oKSA+IDEpIHsKKyAgICAgICAgICAgIGNh
c2VzID0gY2FzZXMuY29uY2F0KFsKKyAgICAgICAgICAgICAgICB7IHN1YjogZmFsc2UsIGZsaXBZ
OiBmYWxzZSwgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IsCisgICAg
ICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGU6IFsyMCwgMTYsIDQwLCAzMl0gfSwKKyAg
ICAgICAgICAgICAgICB7IHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCB0b3BDb2xvcjogZ3JlZW5D
b2xvciwgYm90dG9tQ29sb3I6IGdyZWVuQ29sb3IsCisgICAgICAgICAgICAgICAgICBzb3VyY2VT
dWJSZWN0YW5nbGU6IFsyMCwgMTYsIDQwLCAzMl0gfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
ZmFsc2UsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBn
cmVlbkNvbG9yLAorICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlOiBbMjAsIDgw
LCA0MCwgMzJdIH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogdHJ1ZSwg
dG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IsCisgICAgICAgICAgICAg
ICAgICBzb3VyY2VTdWJSZWN0YW5nbGU6IFsyMCwgODAsIDQwLCAzMl0gfSwKKyAgICAgICAgICAg
ICAgICB7IHN1YjogdHJ1ZSwgZmxpcFk6IGZhbHNlLCB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRv
bUNvbG9yOiByZWRDb2xvciwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZTog
WzIwLCAxNiwgNDAsIDMyXSB9LAorICAgICAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBmbGlwWTog
dHJ1ZSwgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yLAorICAg
ICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlOiBbMjAsIDE2LCA0MCwgMzJdIH0sCisg
ICAgICAgICAgICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVu
Q29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yLAorICAgICAgICAgICAgICAgICAgc291cmNl
U3ViUmVjdGFuZ2xlOiBbMjAsIDgwLCA0MCwgMzJdIH0sCisgICAgICAgICAgICAgICAgeyBzdWI6
IHRydWUsIGZsaXBZOiB0cnVlLCB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRvbUNvbG9yOiByZWRD
b2xvciwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZTogWzIwLCA4MCwgNDAs
IDMyXSB9LAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBy
dW5UZXhJbWFnZVRlc3QoYmluZGluZ1RhcmdldCkgeworICAgICAgICAgICAgdmFyIHByb2dyYW07
CisgICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFXzJEKSB7CisgICAg
ICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZChnbCwgaW50ZXJuYWxG
b3JtYXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9ncmFtID0g
dGl1LnNldHVwVGV4dHVyZWRRdWFkV2l0aEN1YmVNYXAoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIHZhciB2aWRlb05keCA9IDA7CisgICAg
ICAgICAgICAgICAgdmFyIHZpZGVvOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bk5leHRW
aWRlbygpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2aWRlby5wYXVzZSgpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHZpZGVvTmR4ID09IHZpZGVvcy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUoIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IHZhciBpbmZvID0gdmlkZW9zW3ZpZGVvTmR4KytdOworICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJ0ZXN0aW5nOiAiICsgaW5mby50eXBl
KTsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2
aWRlbyIpOworICAgICAgICAgICAgICAgICAgICB2aWRlby5tdXRlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjYW5QbGF5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCF2aWRlby5jYW5QbGF5VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
InZpZGVvLmNhblBsYXlUeXBlIHJlcXVpcmVkIG1ldGhvZCBtaXNzaW5nIik7CisgICAgICAgICAg
ICAgICAgICAgICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYoIXZpZGVv
LmNhblBsYXlUeXBlKGluZm8udHlwZSkucmVwbGFjZSgvbm8vLCAnJykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZyhpbmZvLnR5cGUgKyAiIHVuc3VwcG9ydGVkIik7CisgICAgICAgICAg
ICAgICAgICAgICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgICAgICAgICAgICAgICAgICB2aWRlby50eXBl
ID0gaW5mby50eXBlOworICAgICAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBpbmZvLnNyYzsK
KyAgICAgICAgICAgICAgICAgICAgd3R1LnN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRl
bywgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gY2FzZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVf
Q1VCRV9NQVApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDdWJlIG1hcCB0ZXh0
dXJlIG11c3QgYmUgc3F1YXJlIGJ1dCB2aWRlbyBpcyBub3Qgc3F1YXJlLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghY2FzZXNbaV0uc3ViKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHN1Yi1yZWN0YW5nbGUgdGVzdHMgZm9yIGN1
YmUgbWFwIHRleHR1cmVzIGZvciB0aGUgbW9tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYXNlc1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcnVuT25lSXRl
cmF0aW9uKHZpZGVvLCBjYXNlc1tpXS5zdWIsIGNhc2VzW2ldLmZsaXBZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLnRvcENvbG9yLCBjYXNlc1tpXS5i
b3R0b21Db2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
c1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbSwgYmluZGluZ1RhcmdldCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJ1bk5leHRWaWRlbygpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKworICAgICAgICBydW5UZXhJbWFnZVRlc3QoZ2wuVEVYVFVSRV8yRCkudGhlbihmdW5jdGlv
bih2YWwpIHsKKyAgICAgICAgICAgIHJ1blRleEltYWdlVGVzdChnbC5URVhUVVJFX0NVQkVfTUFQ
KS50aGVuKGZ1bmN0aW9uKHZhbCkgeworICAgICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtd2ViZ2wtY2FudmFzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC13ZWJn
bC1jYW52YXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNiODc2ODA1MWVkNjZhZWNmZTIzMDQwZDY2ZTY3NjFk
YTk4ZDgyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
d2ViZ2wtY2FudmFzLmpzCkBAIC0wLDAgKzEsMjk4IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCisKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZ2VuZXJhdGVU
ZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVz
b3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGdsID0gbnVs
bDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFyIHJlZENvbG9y
ID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICB2YXIgZ3JlZW5Db2xvciA9IFswLCAyNTUsIDAsIDI1
NV07CisgICAgdmFyIHJlcGVhdENvdW50OworCisgICAgZnVuY3Rpb24gc2hvdWxkUmVwZWF0VGVz
dEZvclRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUp
CisgICAgeworICAgICAgICAvLyBUaGVyZSB3ZXJlIGJ1Z3MgaW4gZWFybHkgV2ViR0wgMS4wIGlt
cGxlbWVudGF0aW9ucyB3aGVuIHJlcGVhdGVkbHkgdXBsb2FkaW5nIGNhbnZhcworICAgICAgICAv
LyBlbGVtZW50cyBpbnRvIHRleHR1cmVzLiBJbiByZXNwb25zZSwgdGhpcyB0ZXN0IHdhcyBjaGFu
Z2VkIGludG8gYSByZWdyZXNzaW9uIHRlc3QgYnkKKyAgICAgICAgLy8gcmVwZWF0aW5nIGFsbCBv
ZiB0aGUgY2FzZXMgbXVsdGlwbGUgdGltZXMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhh
dCBhZGRpbmcgYSBuZXcKKyAgICAgICAgLy8gY2FzZSBhYm92ZSBzaWduaWZpY2FudGx5IGluY3Jl
YXNlcyB0aGUgcnVuIHRpbWUgb2YgdGhlIHRlc3Qgc3VpdGUuIFRoZSBwcm9ibGVtIGlzIG1hZGUK
KyAgICAgICAgLy8gZXZlbiB3b3JzZSBieSB0aGUgYWRkaXRpb24gb2YgbWFueSBtb3JlIHRleHR1
cmUgZm9ybWF0cyBpbiBXZWJHTCAyLjAuCisgICAgICAgIC8vCisgICAgICAgIC8vIERvaW5nIHJl
cGVhdGVkIHJ1bnMgd2l0aCBqdXN0IGEgY291cGxlIG9mIFdlYkdMIDEuMCdzIHN1cHBvcnRlZCB0
ZXh0dXJlIGZvcm1hdHMgYWN0cyBhcyBhCisgICAgICAgIC8vIHN1ZmZpY2llbnQgcmVncmVzc2lv
biB0ZXN0IGZvciB0aGUgb2xkIGJ1Z3MuIEZvciB0aGlzIHJlYXNvbiB0aGUgdGVzdCBoYXMgYmVl
biBjaGFuZ2VkIHRvCisgICAgICAgIC8vIG9ubHkgcmVwZWF0IGZvciB0aG9zZSB0ZXh0dXJlIGZv
cm1hdHMuCisgICAgICAgIHJldHVybiAoKGludGVybmFsRm9ybWF0ID09ICdSR0JBJyAmJiBwaXhl
bEZvcm1hdCA9PSAnUkdCQScgJiYgcGl4ZWxUeXBlID09ICdVTlNJR05FRF9CWVRFJykgfHwKKyAg
ICAgICAgICAgICAgICAoaW50ZXJuYWxGb3JtYXQgPT0gJ1JHQicgJiYgcGl4ZWxGb3JtYXQgPT0g
J1JHQicgJiYgcGl4ZWxUeXBlID09ICdVTlNJR05FRF9CWVRFJykpOworICAgIH0KKworICAgIGFz
eW5jIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0
ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIHdlYmdsIGNhbnZh
cyBlbGVtZW50cyAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycg
KyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0
IHZlcnNpb24gd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkg
c3RyaW5nIHRvIG92ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZl
cnNpb24oZGVmYXVsdENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RD
b250ZXh0KCJleGFtcGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcGVhdENvdW50ID0gKHNob3Vs
ZFJlcGVhdFRlc3RGb3JUZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwg
cGl4ZWxUeXBlKSA/IDQgOiAxKTsKKworICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkg
eworICAgICAgICAgIGNhc2UgZ2wuUkVEOgorICAgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6
CisgICAgICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBnbC5MVU1JTkFOQ0U6CisgICAgICAgICAgY2FzZSBnbC5MVU1JTkFO
Q0VfQUxQSEE6CisgICAgICAgICAgICByZWRDb2xvciA9IFsyNTUsIDI1NSwgMjU1XTsKKyAgICAg
ICAgICAgIGdyZWVuQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIGdsLkFMUEhBOgorICAgICAgICAgICAgcmVkQ29sb3IgPSBbMCwgMCwgMF07Cisg
ICAgICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKwor
ICAgICAgICBhd2FpdCBydW5UZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFz
VG9SZWRHcmVlbihjdHgsIGhhc0FscGhhKSB7CisgICAgICB2YXIgd2lkdGggPSBjdHguY2FudmFz
LndpZHRoOworICAgICAgdmFyIGhlaWdodCA9IGN0eC5jYW52YXMuaGVpZ2h0OworICAgICAgdmFy
IGhhbGZIZWlnaHQgPSBNYXRoLmZsb29yKGhlaWdodCAvIDIpOworCisgICAgICBjdHgudmlld3Bv
cnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgIGN0eC5lbmFibGUoY3R4LlNDSVNTT1Jf
VEVTVCk7CisgICAgICBjdHguc2Npc3NvcigwLCAwLCB3aWR0aCwgaGFsZkhlaWdodCk7CisgICAg
ICBpZiAoaGFzQWxwaGEpIHsKKyAgICAgICAgY3R4LmNsZWFyQ29sb3IoMS4wLCAwLCAwLCAxLjAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIFdlYkdMIGltcGxlbWVudGF0aW9uIGlz
IHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgYWxsCisgICAgICAgIC8vIGFscGhhIHZhbHVlcyBhcHBl
YXIgYXMgdGhvdWdoIHRoZXkgd2VyZSAxLjAuCisgICAgICAgIGN0eC5jbGVhckNvbG9yKDEuMCwg
MCwgMCwgMC4wKTsKKyAgICAgIH0KKyAgICAgIGN0eC5jbGVhcihjdHguQ09MT1JfQlVGRkVSX0JJ
VCk7CisgICAgICBjdHguc2Npc3NvcigwLCBoYWxmSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0IC0gaGFs
ZkhlaWdodCk7CisgICAgICBpZiAoaGFzQWxwaGEpIHsKKyAgICAgICAgY3R4LmNsZWFyQ29sb3Io
MC4wLCAxLjAsIDAsIDEuMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgV2ViR0wg
aW1wbGVtZW50YXRpb24gaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyBhbGwKKyAgICAgICAgLy8g
YWxwaGEgdmFsdWVzIGFwcGVhciBhcyB0aG91Z2ggdGhleSB3ZXJlIDEuMC4KKyAgICAgICAgY3R4
LmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAsIDAuMCk7CisgICAgICB9CisgICAgICBjdHguY2xlYXIo
Y3R4LkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgY3R4LmRpc2FibGUoY3R4LlNDSVNTT1JfVEVT
VCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG8yNTd4MjU3KGN0eCwgYmluZGlu
Z1RhcmdldCwgaGFzQWxwaGEpIHsKKyAgICAgIGN0eC5jYW52YXMud2lkdGggPSAyNTc7CisgICAg
ICBjdHguY2FudmFzLmhlaWdodCA9IDI1NzsKKyAgICAgIHNldENhbnZhc1RvUmVkR3JlZW4oY3R4
LCBoYXNBbHBoYSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG9NaW4oY3R4LCBi
aW5kaW5nVGFyZ2V0LCBoYXNBbHBoYSkgeworICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wu
VEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAvLyBjdWJlIG1hcCB0ZXh0dXJlIG11c3QgYmUg
c3F1YXJlLgorICAgICAgICBjdHguY2FudmFzLndpZHRoID0gMjsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGN0eC5jYW52YXMud2lkdGggPSAxOworICAgICAgfQorICAgICAgY3R4LmNhbnZhcy5o
ZWlnaHQgPSAyOworICAgICAgc2V0Q2FudmFzVG9SZWRHcmVlbihjdHgsIGhhc0FscGhhKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBydW5PbmVJdGVyYXRpb24oY2FudmFzLCB1c2VUZXhTdWJJbWFn
ZTJELCBhbHBoYSwgZmxpcFksIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQsIG9wdF90ZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgdmFyIG9ialR5cGUgPSAnY2FudmFzJzsKKyAgICAgICAgaWYgKGNhbnZh
cy50cmFuc2ZlclRvSW1hZ2VCaXRtYXApCisgICAgICAgICAgICBvYmpUeXBlID0gJ09mZnNjcmVl
bkNhbnZhcyc7CisgICAgICAgIGVsc2UgaWYgKGNhbnZhcy5wYXJlbnROb2RlKQorICAgICAgICAg
ICAgb2JqVHlwZSA9ICdjYW52YXMgYXR0YWNoZWQgdG8gRE9NJzsKKyAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgJyArICh1c2VUZXhTdWJJbWFnZTJEID8gJ3RleFN1YkltYWdlMkQnIDogJ3RleEltYWdl
MkQnKSArICcgd2l0aCBhbHBoYT0nICsKKyAgICAgICAgICAgICAgYWxwaGEgKyAnIGZsaXBZPScg
KyBmbGlwWSArICcgc291cmNlIG9iamVjdDogJyArIG9ialR5cGUgKworICAgICAgICAgICAgICAn
IGJpbmRpbmdUYXJnZXQ9JyArIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfMkQgPyAnVEVY
VFVSRV8yRCcgOiAnVEVYVFVSRV9DVUJFX01BUCcpICsKKyAgICAgICAgICAgICAgJyBjYW52YXMg
c2l6ZTogJyArIGNhbnZhcy53aWR0aCArICd4JyArIGNhbnZhcy5oZWlnaHQgKyAnIHdpdGggcmVk
LWdyZWVuJyk7CisKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgICAgICBpZiAoIW9wdF90ZXh0dXJlKSB7CisgICAgICAgICAg
ICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIC8vIEJpbmQg
dGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAgICAgLy8gU2V0IHVwIHRleHR1cmUg
cGFyYW1ldGVycworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBn
bC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAgZ2wudGV4UGFy
YW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1Qp
OworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJF
X1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gb3B0X3RleHR1cmU7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJy
b3JzIGJlZm9yZSBwaXhlbFN0b3JlaSBzZXR1cCIpOworICAgICAgICBnbC5waXhlbFN0b3JlaShn
bC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmbGlwWSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBhZnRlciBzZXR0aW5nIFVO
UEFDS19GTElQX1lfV0VCR0wiKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BS
RU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBhZnRlciBzZXR0aW5nIFVO
UEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCIpOworICAgICAgICBnbC5waXhlbFN0b3JlaShn
bC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsKKyAgICAgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3Jz
IGFmdGVyIHNldHRpbmcgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCIpOworICAg
ICAgICB2YXIgdGFyZ2V0cyA9IFtnbC5URVhUVVJFXzJEXTsKKyAgICAgICAgaWYgKGJpbmRpbmdU
YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgdGFyZ2V0cyA9IFtn
bC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsCisgICAgICAgICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgICAgIGdsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXTsKKyAgICAgICAgfQorICAgICAgICAvLyBVcGxvYWQg
dGhlIGltYWdlIGludG8gdGhlIHRleHR1cmUKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8
IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0
ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAgICBpZiAodXNlVGV4U3ViSW1hZ2UyRCkg
eworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsW2ludGVy
bmFsRm9ybWF0XSwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBudWxsKTsK
KyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAwLCAwLCBn
bFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGNhbnZhcyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0c1t0dF0sIDAsIGdsW2lu
dGVybmFsRm9ybWF0XSwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBjYW52YXMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIHdpZHRoID0gZ2wuY2FudmFz
LndpZHRoOworICAgICAgICB2YXIgaGVpZ2h0ID0gZ2wuY2FudmFzLmhlaWdodDsKKyAgICAgICAg
dmFyIGhhbGZXaWR0aCA9IE1hdGguZmxvb3Iod2lkdGggLyAyKTsKKyAgICAgICAgdmFyIGhhbGZI
ZWlnaHQgPSBNYXRoLmZsb29yKGhlaWdodCAvIDIpOworICAgICAgICB2YXIgdG9wID0gZmxpcFkg
PyAoaGVpZ2h0IC0gaGFsZkhlaWdodCkgOiAwOworICAgICAgICB2YXIgYm90dG9tID0gZmxpcFkg
PyAwIDogKGhlaWdodCAtIGhhbGZIZWlnaHQpOworCisgICAgICAgIHZhciBsb2M7CisgICAgICAg
IGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgICAg
IGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZmFjZSIpOworICAgICAgICB9
CisKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7
CisgICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7
CisgICAgICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgICAgICB3
dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFswLCAyNTUsIDAsIDI1NV0pOworCisgICAgICAg
ICAgICAvLyBDaGVjayB0aGUgdG9wIGFuZCBib3R0b20gaGFsdmVzIGFuZCBtYWtlIHN1cmUgdGhl
eSBoYXZlIHRoZSByaWdodCBjb2xvci4KKyAgICAgICAgICAgIGRlYnVnKCJDaGVja2luZyAiICsg
KGZsaXBZID8gInRvcCIgOiAiYm90dG9tIikpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFz
UmVjdChnbCwgMCwgYm90dG9tLCB3aWR0aCwgaGFsZkhlaWdodCwgcmVkQ29sb3IsCisgICAgICAg
ICAgICAgICAgICAgICJzaG91bGRCZSAiICsgcmVkQ29sb3IpOworICAgICAgICAgICAgZGVidWco
IkNoZWNraW5nICIgKyAoZmxpcFkgPyAiYm90dG9tIiA6ICJ0b3AiKSk7CisgICAgICAgICAgICB3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCB0b3AsIHdpZHRoLCBoYWxmSGVpZ2h0LCBncmVlbkNv
bG9yLAorICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIGdyZWVuQ29sb3IpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgdmFyIG1hID0gd3R1Lm1h
a2VJbWFnZUZyb21DYW52YXMoY2FudmFzKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKG1hKTsKKworICAgICAgICAgIHZhciBtID0gd3R1
Lm1ha2VJbWFnZUZyb21DYW52YXMoZ2wuY2FudmFzKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKG0pOworICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaHIiKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9
CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGZvciAobGV0
IGFscGhhIG9mIFsgdHJ1ZSwgZmFsc2UgXSkgeworICAgICAgICAgICAgbGV0IGN0eCA9IHd0dS5j
cmVhdGUzRENvbnRleHQobnVsbCwgeyBhbHBoYTphbHBoYSB9KTsKKyAgICAgICAgICAgIGxldCBj
YW52YXMgPSBjdHguY2FudmFzOworICAgICAgICAgICAgLy8gTm90ZTogV2UgdXNlIHByZXNlcnZl
RHJhd2luZ0J1ZmZlcjp0cnVlIHRvIHByZXZlbnQgY2FudmFzCisgICAgICAgICAgICAvLyB2aXNp
YmlsaXR5IGZyb20gaW50ZXJmZXJpbmcgd2l0aCB0aGUgdGVzdHMuCisgICAgICAgICAgICBsZXQg
dmlzaWJsZUN0eCA9IHd0dS5jcmVhdGUzRENvbnRleHQobnVsbCwgeyBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXI6dHJ1ZSwgYWxwaGE6YWxwaGEgfSk7CisgICAgICAgICAgICBpZiAoIXZpc2libGVDdHgp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0
IHZpc2libGVDYW52YXMgPSB2aXNpYmxlQ3R4LmNhbnZhczsKKyAgICAgICAgICAgIGxldCBkZXNj
cmlwdGlvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHZpc2libGVDYW52YXMsIGRlc2Ny
aXB0aW9uTm9kZSk7CisKKyAgICAgICAgICAgIGxldCBjYXNlcyA9IFsKKyAgICAgICAgICAgICAg
ICB7IHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCAgY3R4OiBjdHgsIGluaXQ6IHNldENhbnZhc1Rv
TWluIH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogZmFsc2UsIGN0eDog
Y3R4IH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IHRydWUsICBmbGlwWTogdHJ1ZSwgIGN0eDog
Y3R4IH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IHRydWUsICBmbGlwWTogZmFsc2UsIGN0eDog
Y3R4IH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogdHJ1ZSwgIGN0eDog
Y3R4LCBpbml0OiBzZXRDYW52YXNUbzI1N3gyNTcgfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
ZmFsc2UsIGZsaXBZOiBmYWxzZSwgY3R4OiBjdHggfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
dHJ1ZSwgIGZsaXBZOiB0cnVlLCAgY3R4OiBjdHggfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
dHJ1ZSwgIGZsaXBZOiBmYWxzZSwgY3R4OiBjdHggfSwKKyAgICAgICAgICAgICAgICB7IHN1Yjog
ZmFsc2UsIGZsaXBZOiB0cnVlLCAgY3R4OiB2aXNpYmxlQ3R4LCBpbml0OiBzZXRDYW52YXNUb01p
biB9LAorICAgICAgICAgICAgICAgIHsgc3ViOiBmYWxzZSwgZmxpcFk6IGZhbHNlLCBjdHg6IHZp
c2libGVDdHggfSwKKyAgICAgICAgICAgICAgICB7IHN1YjogdHJ1ZSwgIGZsaXBZOiB0cnVlLCAg
Y3R4OiB2aXNpYmxlQ3R4IH0sCisgICAgICAgICAgICAgICAgeyBzdWI6IHRydWUsICBmbGlwWTog
ZmFsc2UsIGN0eDogdmlzaWJsZUN0eCB9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAg
aWYgKHdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgb2Zmc2Ny
ZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcygxLCAxKTsKKyAgICAgICAgICAgICAgICBsZXQgb2Zm
c2NyZWVuQ3R4ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChvZmZzY3JlZW4sIHsgYWxwaGE6YWxwaGEg
fSk7CisgICAgICAgICAgICAgICAgY2FzZXMgPSBjYXNlcy5jb25jYXQoWworICAgICAgICAgICAg
ICAgICAgICB7IHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCAgY3R4OiBvZmZzY3JlZW5DdHgsIGlu
aXQ6IHNldENhbnZhc1RvTWluIH0sCisgICAgICAgICAgICAgICAgICAgIHsgc3ViOiBmYWxzZSwg
ZmxpcFk6IGZhbHNlLCBjdHg6IG9mZnNjcmVlbkN0eCB9LAorICAgICAgICAgICAgICAgICAgICB7
IHN1YjogdHJ1ZSwgIGZsaXBZOiB0cnVlLCAgY3R4OiBvZmZzY3JlZW5DdHggfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyBzdWI6IHRydWUsICBmbGlwWTogZmFsc2UsIGN0eDogb2Zmc2NyZWVuQ3R4
IH0sCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFz
eW5jIGZ1bmN0aW9uIHJ1blRleEltYWdlVGVzdChiaW5kaW5nVGFyZ2V0KSB7CisgICAgICAgICAg
ICAgICAgbGV0IHByb2dyYW07CisgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0g
Z2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVw
VGV4dHVyZWRRdWFkKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdp
dGhDdWJlTWFwKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgbGV0IGNvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgICAgICAgICAgICAgbGV0
IGNhc2VOZHggPSAwOworICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBj
ID0gY2FzZXNbY2FzZU5keF07CisgICAgICAgICAgICAgICAgICAgIGlmIChjLmluaXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGMuaW5pdChjLmN0eCwgYmluZGluZ1RhcmdldCwgYWxwaGEp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBy
dW5PbmVJdGVyYXRpb24oYy5jdHguY2FudmFzLCBjLnN1YiwgYWxwaGEsIGMuZmxpcFksIHByb2dy
YW0sIGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAgICAgICAgICAgICAvLyBmb3Ig
dGhlIGZpcnN0IDIgaXRlcmF0aW9ucyBhbHdheXMgbWFrZSBhIG5ldyB0ZXh0dXJlLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoY291bnQgPCAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBn
bC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICArK2Nhc2VOZHg7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYXNlTmR4ID09IGNhc2VzLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZU5keCA9IDA7CisgICAgICAgICAg
ICAgICAgICAgICAgICAtLWNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3Vu
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3R1LmRpc3BhdGNoUHJvbWlzZShmdW5j
dGlvbigpIHt9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGF3YWl0IHJ1blRleEltYWdlVGVzdChnbC5URVhUVVJFXzJEKTsKKyAgICAgICAgICAgIGF3
YWl0IHJ1blRleEltYWdlVGVzdChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5v
IGVycm9ycyIpOworICAgIH0KKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5p
dCgpLnRoZW4oZnVuY3Rpb24odmFsKSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13
aXRoLWNhbnZhcy1zdWItcmVjdGFuZ2xlLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0
aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWY3NjNhMGRlYjE0ODdhNGQy
NzFiN2ZmYmI3ZmU3YjFjN2Y2MDk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1jYW52YXMtc3ViLXJlY3RhbmdsZS5qcwpAQCAtMCwwICsxLDI4NyBAQAor
LyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5l
cmF0ZVRlc3QoaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3Vl
LCByZXNvdXJjZVBhdGgsIGRlZmF1bHRDb250ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKKyAgICB2YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wg
PSBudWxsOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKyAgICB2YXIgcmVh
bFJlZENvbG9yID0gWzI1NSwgMCwgMF07CisgICAgdmFyIHJlYWxHcmVlbkNvbG9yID0gWzAsIDI1
NSwgMF07CisgICAgdmFyIHJlYWxCbHVlQ29sb3IgPSBbMCwgMCwgMjU1XTsKKyAgICB2YXIgcmVh
bEN5YW5Db2xvciA9IFswLCAyNTUsIDI1NV07CisgICAgdmFyIHJlZENvbG9yID0gWzI1NSwgMCwg
MF07CisgICAgdmFyIGdyZWVuQ29sb3IgPSBbMCwgMjU1LCAwXTsKKyAgICB2YXIgYmx1ZUNvbG9y
ID0gWzAsIDAsIDI1NV07CisgICAgdmFyIGN5YW5Db2xvciA9IFswLCAyNTUsIDI1NV07CisKKyAg
ICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4
SW1hZ2UzRCBhbmQgdGV4U3ViSW1hZ2UzRCBjb2RlIHBhdGhzIHRha2luZyBhIHN1Yi1yZWN0YW5n
bGUgb2YgYSBjYW52YXMgKCcgKyBpbnRlcm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsg
Jy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgY29u
dGV4dCB2ZXJzaW9uIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24gVVJMIHF1
ZXJ5IHN0cmluZyB0byBvdmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQzRENvbnRl
eHRWZXJzaW9uKGRlZmF1bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wpKSB7Cisg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAgICAgICBjYXNlIGdsLlJF
RDoKKyAgICAgICAgY2FzZSBnbC5SRURfSU5URUdFUjoKKyAgICAgICAgICBncmVlbkNvbG9yID0g
WzAsIDAsIDBdOworICAgICAgICAgIGJsdWVDb2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBj
eWFuQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBn
bC5SRzoKKyAgICAgICAgY2FzZSBnbC5SR19JTlRFR0VSOgorICAgICAgICAgIGJsdWVDb2xvciA9
IFswLCAwLCAwXTsKKyAgICAgICAgICBjeWFuQ29sb3IgPSBbMCwgMjU1LCAwXTsKKyAgICAgICAg
ICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0
aCgxKTsKKworICAgICAgICB2YXIgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdj
YW52YXMnKTsKKyAgICAgICAgcnVuVGVzdChjYW52YXMyZCwgc2V0dXBTb3VyY2VDYW52YXMyRCwg
JzJELXJlbmRlcmVkIGNhbnZhcycpOworCisgICAgICAgIHZhciBjYW52YXNXZWJHTCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgICAgICBydW5UZXN0KGNhbnZhc1dlYkdM
LCBzZXR1cFNvdXJjZUNhbnZhc1dlYkdMLCAnV2ViR0wtcmVuZGVyZWQgY2FudmFzJyk7CisKKyAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHVwbG9hZENhbnZhc1Rv
VGV4dHVyZShjYW52YXMsIHVzZVRleFN1YkltYWdlM0QsIGZsaXBZLCBiaW5kaW5nVGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgc291cmNlU3ViUmVjdGFu
Z2xlLCB1bnBhY2tJbWFnZUhlaWdodCkKKyAgICB7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgLy8gRGlzYWJsZSBh
bnkgd3JpdGVzIHRvIHRoZSBhbHBoYSBjaGFubmVsCisgICAgICAgIGdsLmNvbG9yTWFzaygxLCAx
LCAxLCAwKTsKKyAgICAgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoYmluZGluZ1RhcmdldCwgdGV4dHVyZSk7CisgICAgICAgIC8vIFNldCB1cCB0ZXh0
dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBn
bC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Cisg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1Ms
IGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJn
ZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAg
IGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAg
Z2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7
CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05f
V0VCR0wsIGdsLk5PTkUpOworICAgICAgICB2YXIgdXBsb2FkV2lkdGggPSBjYW52YXMud2lkdGg7
CisgICAgICAgIHZhciB1cGxvYWRIZWlnaHQgPSBjYW52YXMuaGVpZ2h0OworICAgICAgICBpZiAo
c291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBB
Q0tfU0tJUF9QSVhFTFMsIHNvdXJjZVN1YlJlY3RhbmdsZVswXSk7CisgICAgICAgICAgICBnbC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCBzb3VyY2VTdWJSZWN0YW5nbGVbMV0pOwor
ICAgICAgICAgICAgdXBsb2FkV2lkdGggPSBzb3VyY2VTdWJSZWN0YW5nbGVbMl07CisgICAgICAg
ICAgICB1cGxvYWRIZWlnaHQgPSBzb3VyY2VTdWJSZWN0YW5nbGVbM107CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHVucGFja0ltYWdlSGVpZ2h0KSB7CisgICAgICAgICAgICBnbC5waXhlbFN0b3Jl
aShnbC5VTlBBQ0tfSU1BR0VfSEVJR0hULCB1bnBhY2tJbWFnZUhlaWdodCk7CisgICAgICAgIH0K
KyAgICAgICAgLy8gVXBsb2FkIHRoZSBpbWFnZSBpbnRvIHRoZSB0ZXh0dXJlCisgICAgICAgIGlm
ICh1c2VUZXhTdWJJbWFnZTNEKSB7CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0
dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGJpbmRpbmdUYXJn
ZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwgZGVw
dGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4
ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGJpbmRpbmdUYXJn
ZXQsIDAsIDAsIDAsIDAsIHVwbG9hZFdpZHRoLCB1cGxvYWRIZWlnaHQsIGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGNh
bnZhcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGJpbmRp
bmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdo
dCwgZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwg
Z2xbcGl4ZWxUeXBlXSwgY2FudmFzKTsKKyAgICAgICAgfQorICAgICAgICBnbC5waXhlbFN0b3Jl
aShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5V
TlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0lN
QUdFX0hFSUdIVCwgMCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHRleHR1cmUgdXBsb2FkIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZmlsbFN0eWxlMkQoY3R4LCBjb2xvcikgeworICAgICAgICBjdHguZmls
bFN0eWxlID0gJ3JnYignICsgY29sb3JbMF0gKyAnLCAnICsgY29sb3JbMV0gKyAnLCAnICsgY29s
b3JbMl0gKyAnKSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0dXBTb3VyY2VDYW52YXMyRChj
YW52YXMpIHsKKyAgICAgICAgdmFyIHdpZHRoID0gY2FudmFzLndpZHRoOworICAgICAgICB2YXIg
aGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKKyAgICAgICAgdmFyIGhhbGZXaWR0aCA9IE1hdGguZmxv
b3Iod2lkdGggLyAyKTsKKyAgICAgICAgdmFyIGhhbGZIZWlnaHQgPSBNYXRoLmZsb29yKGhlaWdo
dCAvIDIpOworCisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAg
ICAgICAgLy8gQWx3YXlzIHVzZSB0aGUgc2FtZSBwYXR0ZXJuIGZvciB0aGlzIHRlc3Q6IGZvdXIg
cXVhZHJhbnRzOgorICAgICAgICAvLyAgIHJlZCAgICBncmVlbgorICAgICAgICAvLyAgIGJsdWUg
ICBjeWFuCisgICAgICAgIC8vIEhhbmRsZSBvZGQtc2l6ZWQgY2FudmFzZXMKKyAgICAgICAgZmls
bFN0eWxlMkQoY3R4LCByZWFsUmVkQ29sb3IpOworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwg
aGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgZmlsbFN0eWxlMkQoY3R4LCByZWFsR3Jl
ZW5Db2xvcik7CisgICAgICAgIGN0eC5maWxsUmVjdChoYWxmV2lkdGgsIDAsIHdpZHRoIC0gaGFs
ZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgZmlsbFN0eWxlMkQoY3R4LCByZWFsQmx1ZUNv
bG9yKTsKKyAgICAgICAgY3R4LmZpbGxSZWN0KDAsIGhhbGZIZWlnaHQsIGhhbGZXaWR0aCwgaGVp
Z2h0IC0gaGFsZkhlaWdodCk7CisgICAgICAgIGZpbGxTdHlsZTJEKGN0eCwgcmVhbEN5YW5Db2xv
cik7CisgICAgICAgIGN0eC5maWxsUmVjdChoYWxmV2lkdGgsIGhhbGZIZWlnaHQsIHdpZHRoIC0g
aGFsZldpZHRoLCBoZWlnaHQgLSBoYWxmSGVpZ2h0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
bGVhckNvbG9yV2ViR0woY3R4LCBjb2xvcikgeworICAgICAgICBjdHguY2xlYXJDb2xvcihjb2xv
clswXSAvIDI1NS4wLCBjb2xvclsxXSAvIDI1NS4wLCBjb2xvclsyXSAvIDI1NS4wLCAxLjApOwor
ICAgICAgICBjdHguY2xlYXIoY3R4LkNPTE9SX0JVRkZFUl9CSVQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNldHVwU291cmNlQ2FudmFzV2ViR0woY2FudmFzKSB7CisgICAgICAgIHZhciB3aWR0
aCA9IGNhbnZhcy53aWR0aDsKKyAgICAgICAgdmFyIGhlaWdodCA9IGNhbnZhcy5oZWlnaHQ7Cisg
ICAgICAgIHZhciBoYWxmV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoIC8gMik7CisgICAgICAgIHZh
ciBoYWxmSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKworICAgICAgICB2YXIgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7CisgICAgICAgIC8vIEFsd2F5cyB1c2UgdGhl
IHNhbWUgcGF0dGVybiBmb3IgdGhpcyB0ZXN0OiBmb3VyIHF1YWRyYW50czoKKyAgICAgICAgLy8g
ICByZWQgICAgZ3JlZW4KKyAgICAgICAgLy8gICBibHVlICAgY3lhbgorICAgICAgICAvLyBIYW5k
bGUgb2RkLXNpemVkIGNhbnZhc2VzCisKKyAgICAgICAgY3R4LnZpZXdwb3J0KDAsIDAsIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBjdHguZW5hYmxlKGN0eC5TQ0lTU09SX1RFU1QpOworICAgICAg
ICAvLyBPcGVuR0wgb3JpZ2luIGlzIGxvd2VyLWxlZnQKKyAgICAgICAgY3R4LnNjaXNzb3IoMCwg
MCwgaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgY2xlYXJDb2xvcldlYkdMKGN0eCwg
cmVhbEJsdWVDb2xvcik7CisgICAgICAgIGN0eC5zY2lzc29yKGhhbGZXaWR0aCwgMCwgd2lkdGgg
LSBoYWxmV2lkdGgsIGhhbGZIZWlnaHQpOworICAgICAgICBjbGVhckNvbG9yV2ViR0woY3R4LCBy
ZWFsQ3lhbkNvbG9yKTsKKyAgICAgICAgY3R4LnNjaXNzb3IoMCwgaGFsZkhlaWdodCwgaGFsZldp
ZHRoLCBoZWlnaHQgLSBoYWxmSGVpZ2h0KTsKKyAgICAgICAgY2xlYXJDb2xvcldlYkdMKGN0eCwg
cmVhbFJlZENvbG9yKTsKKyAgICAgICAgY3R4LnNjaXNzb3IoaGFsZldpZHRoLCBoYWxmSGVpZ2h0
LCB3aWR0aCAtIGhhbGZXaWR0aCwgaGVpZ2h0IC0gaGFsZkhlaWdodCk7CisgICAgICAgIGNsZWFy
Q29sb3JXZWJHTChjdHgsIHJlYWxHcmVlbkNvbG9yKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBy
dW5PbmVJdGVyYXRpb24oY2FudmFzLCB1c2VUZXhTdWJJbWFnZTNELCBmbGlwWSwgYmluZGluZ1Rh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIHNvdXJjZVN1YlJlY3Rh
bmdsZSwgdW5wYWNrSW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJU
ZXh0dXJlQ29vcmQsIGV4cGVjdGVkQ29sb3IsIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbnZhc1NpemUsIGNhbnZhc1NldHVwRnVuY3Rpb24sIHNvdXJjZURlc2NyaXB0
aW9uKQorICAgIHsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBkZWJ1ZygnVGVzdGluZyAn
ICsgc291cmNlRGVzY3JpcHRpb24gKyAnIHdpdGggJyArCisgICAgICAgICAgICAgICh1c2VUZXhT
dWJJbWFnZTNEID8gJ3RleFN1YkltYWdlM0QnIDogJ3RleEltYWdlM0QnKSArCisgICAgICAgICAg
ICAgICcsIGZsaXBZPScgKyBmbGlwWSArICcsIGJpbmRpbmdUYXJnZXQ9JyArCisgICAgICAgICAg
ICAgIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfM0QgPyAnVEVYVFVSRV8zRCcgOiAnVEVY
VFVSRV8yRF9BUlJBWScpICsKKyAgICAgICAgICAgICAgJywgc291cmNlU3ViUmVjdGFuZ2xlPScg
KyBzb3VyY2VTdWJSZWN0YW5nbGUgKworICAgICAgICAgICAgICAnLCBkZXB0aD0nICsgZGVwdGgg
KworICAgICAgICAgICAgICAodW5wYWNrSW1hZ2VIZWlnaHQgPyAnLCB1bnBhY2tJbWFnZUhlaWdo
dD0nICsgdW5wYWNrSW1hZ2VIZWlnaHQgOiAnJykgKworICAgICAgICAgICAgICAnLCByVGV4dHVy
ZUNvb3JkPScgKyByVGV4dHVyZUNvb3JkKTsKKworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBj
b250ZW50cyBvZiB0aGUgc291cmNlIGNhbnZhcy4KKyAgICAgICAgdmFyIHdpZHRoID0gY2FudmFz
U2l6ZVswXTsKKyAgICAgICAgdmFyIGhlaWdodCA9IGNhbnZhc1NpemVbMV07CisgICAgICAgIHZh
ciBoYWxmV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoIC8gMik7CisgICAgICAgIHZhciBoYWxmSGVp
Z2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKyAgICAgICAgY2FudmFzLndpZHRoID0gd2lk
dGg7CisgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIGNhbnZhc1NldHVw
RnVuY3Rpb24oY2FudmFzKTsKKworICAgICAgICB1cGxvYWRDYW52YXNUb1RleHR1cmUoY2FudmFz
LCB1c2VUZXhTdWJJbWFnZTNELCBmbGlwWSwgYmluZGluZ1RhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoLCBzb3VyY2VTdWJSZWN0YW5nbGUsIHVucGFja0ltYWdlSGVp
Z2h0KTsKKyAgICAgICAgdmFyIHJDb29yZExvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICd1UkNvb3JkJyk7CisgICAgICAgIGlmICghckNvb3JkTG9jYXRpb24pIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoJ1NoYWRlciBpbmNvcnJlY3RseSBzZXQgdXA7IGNvdWxkblwn
dCBmaW5kIHVSQ29vcmQgdW5pZm9ybScpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGdsLnVuaWZvcm0xZihyQ29vcmRMb2NhdGlvbiwgclRleHR1cmVDb29yZCk7CisK
KyAgICAgICAgLy8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgIHd0dS5jbGVhckFuZERyYXdV
bml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworICAgICAgICAvLyBDaGVjayB0aGUgcmVuZGVy
ZWQgY2FudmFzCisgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGNhbnZhc1Np
emVbMF0sIGNhbnZhc1NpemVbMV0sIGV4cGVjdGVkQ29sb3IsICJzaG91bGRCZSAiICsgZXhwZWN0
ZWRDb2xvcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdChjYW52YXMsIGNhbnZhc1Nl
dHVwRnVuY3Rpb24sIHNvdXJjZURlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGNhc2Vz
ID0gWworICAgICAgICAgICAgLy8gU21hbGwgY2FudmFzIGNhc2VzLiBFeHBlY3RlZCB0aGF0IHRo
ZXNlIHdvbid0IGJlCisgICAgICAgICAgICAvLyBHUFUtYWNjZWxlcmF0ZWQgaW4gbW9zdCBicm93
c2VycycgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICAgICAvLyBObyBVTlBBQ0tfSU1BR0Vf
SEVJR0hUIHNwZWNpZmllZC4KKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IHJlZENvbG9yLCAgIGZs
aXBZOiBmYWxzZSwgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMCwgMCwgMiwgMl0sIGRlcHRoOiAy
LCByVGV4dHVyZUNvb3JkOiAwLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGJsdWVDb2xv
ciwgIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMCwgMCwgMiwgMl0sIGRl
cHRoOiAyLCByVGV4dHVyZUNvb3JkOiAxLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGJs
dWVDb2xvciwgIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMCwgMCwgMiwg
Ml0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAwLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0
ZWQ6IHJlZENvbG9yLCAgIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMCwg
MCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAxLjAgfSwKKyAgICAgICAgICAgIHsg
ZXhwZWN0ZWQ6IGdyZWVuQ29sb3IsIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzQsIDRdLCBzdWJSZWN0
OiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAwLjAgfSwKKyAgICAgICAg
ICAgIHsgZXhwZWN0ZWQ6IGN5YW5Db2xvciwgIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzQsIDRdLCBz
dWJSZWN0OiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAxLjAgfSwKKyAg
ICAgICAgICAgIHsgZXhwZWN0ZWQ6IGN5YW5Db2xvciwgIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzQs
IDRdLCBzdWJSZWN0OiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAwLjAg
fSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGdyZWVuQ29sb3IsIGZsaXBZOiB0cnVlLCAgc2l6
ZTogWzQsIDRdLCBzdWJSZWN0OiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3Jk
OiAxLjAgfSwKKworICAgICAgICAgICAgLy8gVXNlIFVOUEFDS19JTUFHRV9IRUlHSFQgdG8gc2tp
cCBzb21lIHBpeGVscy4KKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IHJlZENvbG9yLCAgIGZsaXBZ
OiBmYWxzZSwgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMCwgMCwgMSwgMV0sIGRlcHRoOiAyLCB1
bnBhY2tJbWFnZUhlaWdodDogMiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAgICAgICB7
IGV4cGVjdGVkOiBibHVlQ29sb3IsICBmbGlwWTogZmFsc2UsIHNpemU6IFs0LCA0XSwgc3ViUmVj
dDogWzAsIDAsIDEsIDFdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJl
Q29vcmQ6IDEuMCB9LAorICAgICAgICAgICAgeyBleHBlY3RlZDogYmx1ZUNvbG9yLCAgZmxpcFk6
IHRydWUsICBzaXplOiBbNCwgNF0sIHN1YlJlY3Q6IFswLCAwLCAxLCAxXSwgZGVwdGg6IDIsIHVu
cGFja0ltYWdlSGVpZ2h0OiAyLCByVGV4dHVyZUNvb3JkOiAwLjAgfSwKKyAgICAgICAgICAgIHsg
ZXhwZWN0ZWQ6IHJlZENvbG9yLCAgIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzQsIDRdLCBzdWJSZWN0
OiBbMCwgMCwgMSwgMV0sIGRlcHRoOiAyLCB1bnBhY2tJbWFnZUhlaWdodDogMiwgclRleHR1cmVD
b29yZDogMS4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBncmVlbkNvbG9yLCBmbGlwWTog
ZmFsc2UsIHNpemU6IFs0LCA0XSwgc3ViUmVjdDogWzIsIDAsIDEsIDFdLCBkZXB0aDogMiwgdW5w
YWNrSW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCB9LAorICAgICAgICAgICAgeyBl
eHBlY3RlZDogY3lhbkNvbG9yLCAgZmxpcFk6IGZhbHNlLCBzaXplOiBbNCwgNF0sIHN1YlJlY3Q6
IFsyLCAwLCAxLCAxXSwgZGVwdGg6IDIsIHVucGFja0ltYWdlSGVpZ2h0OiAyLCByVGV4dHVyZUNv
b3JkOiAxLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGN5YW5Db2xvciwgIGZsaXBZOiB0
cnVlLCAgc2l6ZTogWzQsIDRdLCBzdWJSZWN0OiBbMiwgMCwgMSwgMV0sIGRlcHRoOiAyLCB1bnBh
Y2tJbWFnZUhlaWdodDogMiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAgICAgICB7IGV4
cGVjdGVkOiBncmVlbkNvbG9yLCBmbGlwWTogdHJ1ZSwgIHNpemU6IFs0LCA0XSwgc3ViUmVjdDog
WzIsIDAsIDEsIDFdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJlQ29v
cmQ6IDEuMCB9LAorCisgICAgICAgICAgICAvLyBMYXJnZXIgY2FudmFzIGNhc2VzLiBFeHBlY3Rl
ZCB0aGF0IHRoZXNlIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIEdQVS1hY2NlbGVyYXRlZCBpbiBt
b3N0IGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAvLyBDaGFuZ2VzIHdp
bGwgYmUgZ2xhZGx5IGFjY2VwdGVkIHRvIHRyaWdnZXIgbW9yZQorICAgICAgICAgICAgLy8gYnJv
d3NlcnMnIGhldXJpc3RpY3MgdG8gYWNjZWxlcmF0ZSB0aGVzZSBjYW52YXNlcy4KKworICAgICAg
ICAgICAgLy8gTm8gVU5QQUNLX0lNQUdFX0hFSUdIVCBzcGVjaWZpZWQuCisgICAgICAgICAgICB7
IGV4cGVjdGVkOiByZWRDb2xvciwgICBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0sIHN1
YlJlY3Q6IFswLCAwLCAxOTIsIDE5Ml0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAwLjAgfSwK
KyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGJsdWVDb2xvciwgIGZsaXBZOiBmYWxzZSwgc2l6ZTog
WzM4NCwgMzg0XSwgc3ViUmVjdDogWzAsIDAsIDE5MiwgMTkyXSwgZGVwdGg6IDIsIHJUZXh0dXJl
Q29vcmQ6IDEuMCB9LAorICAgICAgICAgICAgeyBleHBlY3RlZDogYmx1ZUNvbG9yLCAgZmxpcFk6
IHRydWUsICBzaXplOiBbMzg0LCAzODRdLCBzdWJSZWN0OiBbMCwgMCwgMTkyLCAxOTJdLCBkZXB0
aDogMiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiByZWRD
b2xvciwgICBmbGlwWTogdHJ1ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFswLCAwLCAx
OTIsIDE5Ml0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAxLjAgfSwKKyAgICAgICAgICAgIHsg
ZXhwZWN0ZWQ6IGdyZWVuQ29sb3IsIGZsaXBZOiBmYWxzZSwgc2l6ZTogWzM4NCwgMzg0XSwgc3Vi
UmVjdDogWzE5MiwgMCwgMTkyLCAxOTJdLCBkZXB0aDogMiwgclRleHR1cmVDb29yZDogMC4wIH0s
CisgICAgICAgICAgICB7IGV4cGVjdGVkOiBjeWFuQ29sb3IsICBmbGlwWTogZmFsc2UsIHNpemU6
IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIsIDAsIDE5MiwgMTkyXSwgZGVwdGg6IDIsIHJUZXh0
dXJlQ29vcmQ6IDEuMCB9LAorICAgICAgICAgICAgeyBleHBlY3RlZDogY3lhbkNvbG9yLCAgZmxp
cFk6IHRydWUsICBzaXplOiBbMzg0LCAzODRdLCBzdWJSZWN0OiBbMTkyLCAwLCAxOTIsIDE5Ml0s
IGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAwLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6
IGdyZWVuQ29sb3IsIGZsaXBZOiB0cnVlLCAgc2l6ZTogWzM4NCwgMzg0XSwgc3ViUmVjdDogWzE5
MiwgMCwgMTkyLCAxOTJdLCBkZXB0aDogMiwgclRleHR1cmVDb29yZDogMS4wIH0sCisKKyAgICAg
ICAgICAgIC8vIFVzZSBVTlBBQ0tfSU1BR0VfSEVJR0hUIHRvIHNraXAgc29tZSBwaXhlbHMuCisg
ICAgICAgICAgICB7IGV4cGVjdGVkOiByZWRDb2xvciwgICBmbGlwWTogZmFsc2UsIHNpemU6IFsz
ODQsIDM4NF0sIHN1YlJlY3Q6IFswLCAwLCA5NiwgOTZdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VI
ZWlnaHQ6IDE5MiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVk
OiBibHVlQ29sb3IsICBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsw
LCAwLCA5NiwgOTZdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDE5MiwgclRleHR1cmVD
b29yZDogMS4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBibHVlQ29sb3IsICBmbGlwWTog
dHJ1ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFswLCAwLCA5NiwgOTZdLCBkZXB0aDog
MiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDE5MiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAg
ICAgICB7IGV4cGVjdGVkOiByZWRDb2xvciwgICBmbGlwWTogdHJ1ZSwgIHNpemU6IFszODQsIDM4
NF0sIHN1YlJlY3Q6IFswLCAwLCA5NiwgOTZdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6
IDE5MiwgclRleHR1cmVDb29yZDogMS4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBncmVl
bkNvbG9yLCBmbGlwWTogZmFsc2UsIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIsIDAs
IDk2LCA5Nl0sIGRlcHRoOiAyLCB1bnBhY2tJbWFnZUhlaWdodDogMTkyLCByVGV4dHVyZUNvb3Jk
OiAwLjAgfSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWQ6IGN5YW5Db2xvciwgIGZsaXBZOiBmYWxz
ZSwgc2l6ZTogWzM4NCwgMzg0XSwgc3ViUmVjdDogWzE5MiwgMCwgOTYsIDk2XSwgZGVwdGg6IDIs
IHVucGFja0ltYWdlSGVpZ2h0OiAxOTIsIHJUZXh0dXJlQ29vcmQ6IDEuMCB9LAorICAgICAgICAg
ICAgeyBleHBlY3RlZDogY3lhbkNvbG9yLCAgZmxpcFk6IHRydWUsICBzaXplOiBbMzg0LCAzODRd
LCBzdWJSZWN0OiBbMTkyLCAwLCA5NiwgOTZdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6
IDE5MiwgclRleHR1cmVDb29yZDogMC4wIH0sCisgICAgICAgICAgICB7IGV4cGVjdGVkOiBncmVl
bkNvbG9yLCBmbGlwWTogdHJ1ZSwgIHNpemU6IFszODQsIDM4NF0sIHN1YlJlY3Q6IFsxOTIsIDAs
IDk2LCA5Nl0sIGRlcHRoOiAyLCB1bnBhY2tJbWFnZUhlaWdodDogMTkyLCByVGV4dHVyZUNvb3Jk
OiAxLjAgfSwKKyAgICAgICAgXTsKKworICAgICAgICB2YXIgcHJvZ3JhbSA9IHRpdS5zZXR1cFRl
eHR1cmVkUXVhZFdpdGgzRChnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBmb3IgKHZhciBp
IGluIGNhc2VzKSB7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oY2FudmFzLCBmYWxzZSwg
Y2FzZXNbaV0uZmxpcFksIGdsLlRFWFRVUkVfM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZXNbaV0uZGVwdGgsIGNhc2VzW2ldLnN1YlJlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZXNbaV0udW5wYWNrSW1hZ2VIZWlnaHQsIGNhc2VzW2ldLnJUZXh0dXJlQ29v
cmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0uZXhwZWN0ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSwgY2FzZXNbaV0uc2l6ZSwgY2FudmFzU2V0
dXBGdW5jdGlvbiwgc291cmNlRGVzY3JpcHRpb24pOworICAgICAgICAgICAgcnVuT25lSXRlcmF0
aW9uKGNhbnZhcywgdHJ1ZSwgY2FzZXNbaV0uZmxpcFksIGdsLlRFWFRVUkVfM0QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0uZGVwdGgsIGNhc2VzW2ldLnN1YlJlY3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0udW5wYWNrSW1hZ2VIZWlnaHQsIGNh
c2VzW2ldLnJUZXh0dXJlQ29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNb
aV0uZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSwgY2FzZXNb
aV0uc2l6ZSwgY2FudmFzU2V0dXBGdW5jdGlvbiwgc291cmNlRGVzY3JpcHRpb24pOworICAgICAg
ICB9CisKKyAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdpdGgyREFycmF5
KGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIGZvciAodmFyIGkgaW4gY2FzZXMpIHsKKyAg
ICAgICAgICAgIHJ1bk9uZUl0ZXJhdGlvbihjYW52YXMsIGZhbHNlLCBjYXNlc1tpXS5mbGlwWSwg
Z2wuVEVYVFVSRV8yRF9BUlJBWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tp
XS5kZXB0aCwgY2FzZXNbaV0uc3ViUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlc1tpXS51bnBhY2tJbWFnZUhlaWdodCwgY2FzZXNbaV0uclRleHR1cmVDb29yZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5leHBlY3RlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9ncmFtLCBjYXNlc1tpXS5zaXplLCBjYW52YXNTZXR1cEZ1bmN0aW9u
LCBzb3VyY2VEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oY2FudmFz
LCB0cnVlLCBjYXNlc1tpXS5mbGlwWSwgZ2wuVEVYVFVSRV8yRF9BUlJBWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlc1tpXS5kZXB0aCwgY2FzZXNbaV0uc3ViUmVjdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS51bnBhY2tJbWFnZUhlaWdodCwgY2FzZXNb
aV0uclRleHR1cmVDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5l
eHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLCBjYXNlc1tpXS5z
aXplLCBjYW52YXNTZXR1cEZ1bmN0aW9uLCBzb3VyY2VEZXNjcmlwdGlvbik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtY2FudmFzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1j
YW52YXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxY2M0ZTg5NzVmODE5ZjgwYTJkOTUzYmUwNDYxNWYwY2Uz
NGFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtY2Fu
dmFzLmpzCkBAIC0wLDAgKzEsMjI2IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJv
bm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KKyovCisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxG
b3JtYXQsIHBpeGVsVHlwZSwgcHJvbG9ndWUsIHJlc291cmNlUGF0aCwgZGVmYXVsdENvbnRleHRW
ZXJzaW9uKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciB0aXUgPSBU
ZXhJbWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IGZhbHNlOworICAgIHZhciB3aGl0ZUNvbG9yID0gWzI1NSwgMjU1LCAyNTUsIDI1NV07
CisgICAgdmFyIHJlZENvbG9yID0gWzI1NSwgMCwgMF07CisgICAgdmFyIGdyZWVuQ29sb3IgPSBb
MCwgMjU1LCAwXTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAgZGVzY3Jp
cHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTNEIGFuZCB0ZXhTdWJJbWFnZTNEIGNvZGUgcGF0aHMgdGFr
aW5nIGNhbnZhcyBlbGVtZW50cyAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3Jt
YXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVs
dCBjb250ZXh0IHZlcnNpb24gd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBV
UkwgcXVlcnkgc3RyaW5nIHRvIG92ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNE
Q29udGV4dFZlcnNpb24oZGVmYXVsdENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkp
IHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHN3aXRjaCAoZ2xbcGl4ZWxGb3JtYXRdKSB7CisgICAgICAgICAgY2Fz
ZSBnbC5SRUQ6CisgICAgICAgICAgY2FzZSBnbC5SRURfSU5URUdFUjoKKyAgICAgICAgICAgIHdo
aXRlQ29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdOworICAgICAgICAgICAgZ3JlZW5Db2xvciA9IFsw
LCAwLCAwXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgZ2wuUkc6CisgICAg
ICAgICAgY2FzZSBnbC5SR19JTlRFR0VSOgorICAgICAgICAgICAgd2hpdGVDb2xvciA9IFsyNTUs
IDI1NSwgMCwgMjU1XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCww
LDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgcnVuVGVzdCgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHNldENhbnZhc1RvUmVkR3JlZW4oY3R4KSB7CisgICAgICB2
YXIgd2lkdGggPSBjdHguY2FudmFzLndpZHRoOworICAgICAgdmFyIGhlaWdodCA9IGN0eC5jYW52
YXMuaGVpZ2h0OworICAgICAgdmFyIGhhbGZIZWlnaHQgPSBNYXRoLmZsb29yKGhlaWdodCAvIDIp
OworICAgICAgY3R4LmZpbGxTdHlsZSA9ICIjZmYwMDAwIjsKKyAgICAgIGN0eC5maWxsUmVjdCgw
LCAwLCB3aWR0aCwgaGFsZkhlaWdodCk7CisgICAgICBjdHguZmlsbFN0eWxlID0gIiMwMGZmMDAi
OworICAgICAgY3R4LmZpbGxSZWN0KDAsIGhhbGZIZWlnaHQsIHdpZHRoLCBoZWlnaHQgLSBoYWxm
SGVpZ2h0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3VGV4dEluQ2FudmFzKGN0eCwgYmlu
ZGluZ1RhcmdldCkgeworICAgICAgdmFyIHdpZHRoID0gY3R4LmNhbnZhcy53aWR0aDsKKyAgICAg
IHZhciBoZWlnaHQgPSBjdHguY2FudmFzLmhlaWdodDsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAi
I2ZmZmZmZiI7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICBjdHguZm9udCA9ICcyMHB0IEFyaWFsJzsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAnYmxhY2sn
OworICAgICAgY3R4LnRleHRBbGlnbiA9ICJjZW50ZXIiOworICAgICAgY3R4LnRleHRCYXNlbGlu
ZSA9ICJtaWRkbGUiOworICAgICAgY3R4LmZpbGxUZXh0KCIxMjM0NTY3ODkwIiwgd2lkdGggLyAy
LCBoZWlnaHQgLyA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52YXNUbzI1N3gyNTco
Y3R4LCBiaW5kaW5nVGFyZ2V0KSB7CisgICAgICBjdHguY2FudmFzLndpZHRoID0gMjU3OworICAg
ICAgY3R4LmNhbnZhcy5oZWlnaHQgPSAyNTc7CisgICAgICBzZXRDYW52YXNUb1JlZEdyZWVuKGN0
eCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2FudmFzVG9NaW4oY3R4LCBiaW5kaW5nVGFy
Z2V0KSB7CisgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7
CisgICAgICAgIC8vIGN1YmUgbWFwIHRleHR1cmUgbXVzdCBiZSBzcXVhcmUuCisgICAgICAgIGN0
eC5jYW52YXMud2lkdGggPSAyOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmNhbnZhcy53
aWR0aCA9IDE7CisgICAgICB9CisgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDI7CisgICAgICBz
ZXRDYW52YXNUb1JlZEdyZWVuKGN0eCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuT25lSXRl
cmF0aW9uKGNhbnZhcywgZmxpcFksIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQsIG9wdF90ZXh0dXJl
LCBvcHRfZm9udFRlc3QpCisgICAgeworICAgICAgICB2YXIgb2JqVHlwZSA9ICdjYW52YXMnOwor
ICAgICAgICBpZiAoY2FudmFzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCkKKyAgICAgICAgICBvYmpU
eXBlID0gJ09mZnNjcmVlbkNhbnZhcyc7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcgKyAnIHdp
dGggZmxpcFk9JyArIGZsaXBZICsgJyBiaW5kaW5nVGFyZ2V0PScgKyAoYmluZGluZ1RhcmdldCA9
PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RFWFRVUkVfMkRfQVJSQVknKSArCisg
ICAgICAgICAgICAgICcgc291cmNlIG9iamVjdDogJyArIG9ialR5cGUgKyAnIGNhbnZhcyBzaXpl
OiAnICsgY2FudmFzLndpZHRoICsgJ3gnICsgY2FudmFzLmhlaWdodCArIChvcHRfZm9udFRlc3Qg
PyAiIHdpdGggZm9udHMiIDogIiB3aXRoIHJlZC1ncmVlbiIpKTsKKyAgICAgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBpZiAo
IW9wdF90ZXh0dXJlKSB7CisgICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1
cmUoKTsKKyAgICAgICAgICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAK
KyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAg
ICAgICAgICAgLy8gU2V0IHVwIHRleHR1cmUgcGFyYW1ldGVycworICAgICAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJF
U1QpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuQ0xBTVBfVE9fRURHRSk7Cisg
ICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmlu
ZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHRleHR1cmUgPSBvcHRfdGV4dHVyZTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBTZXQgdXAgcGl4ZWwgc3RvcmUgcGFyYW1ldGVycworICAgICAgICBn
bC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmbGlwWSk7CisgICAgICAgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgZmFsc2UpOwor
ICAgICAgICB3dHUuZmFpbElmR0xFcnJvcihnbCwgJ2dsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19D
T0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wsIGdsLk5PTkUpOycpOworICAgICAgICAvLyBJbml0
aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgIGdsLnRleEltYWdlM0Qo
YmluZGluZ1RhcmdldCwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBjYW52YXMud2lkdGgsIGNhbnZh
cy5oZWlnaHQsIDEgLyogZGVwdGggKi8sIDAsCisgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4
ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBudWxsKTsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2Uz
RChiaW5kaW5nVGFyZ2V0LCAwLCAwLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQs
IDEgLyogZGVwdGggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRd
LCBnbFtwaXhlbFR5cGVdLCBjYW52YXMpOworCisgICAgICAgIHZhciB3aWR0aCA9IGdsLmNhbnZh
cy53aWR0aDsKKyAgICAgICAgdmFyIGhlaWdodCA9IGdsLmNhbnZhcy5oZWlnaHQ7CisgICAgICAg
IHZhciBoYWxmSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKyAgICAgICAgdmFyIHRv
cCA9IGZsaXBZID8gMCA6IChoZWlnaHQgLSBoYWxmSGVpZ2h0KTsKKyAgICAgICAgdmFyIGJvdHRv
bSA9IGZsaXBZID8gKGhlaWdodCAtIGhhbGZIZWlnaHQpIDogMDsKKworICAgICAgICAvLyBEcmF3
IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwg
MjU1LCAwLCAyNTVdKTsKKworICAgICAgICBpZiAob3B0X2ZvbnRUZXN0KSB7CisgICAgICAgICAg
ICAvLyBjaGVjayBoYWxmIGlzIGEgc29saWQgY29sb3IuCisgICAgICAgICAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KAorICAgICAgICAgICAgICAgICAgZ2wsIDAsIHRvcCwgd2lkdGgsIGhhbGZIZWln
aHQsCisgICAgICAgICAgICAgICAgICB3aGl0ZUNvbG9yLAorICAgICAgICAgICAgICAgICAgInNo
b3VsZCBiZSB3aGl0ZSIpOworICAgICAgICAgICAgLy8gY2hlY2sgb3RoZXIgaGFsZiBpcyBub3Qg
YSBzb2xpZCBjb2xvci4KKyAgICAgICAgICAgIHd0dS5jaGVja0NhbnZhc1JlY3RDb2xvcigKKyAg
ICAgICAgICAgICAgICAgIGdsLCAwLCBib3R0b20sIHdpZHRoLCBoYWxmSGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgd2hpdGVDb2xvciwgMCwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmb250IG1pc3NpbmciKTsKKyAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZm9udCByZW5kZXJlcmVkIik7CisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgZGVidWcpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gQ2hlY2sgdGhlIHRvcCBhbmQgYm90dG9tIGhhbHZlcyBhbmQgbWFrZSBzdXJl
IHRoZXkgaGF2ZSB0aGUgcmlnaHQgY29sb3IuCisgICAgICAgICAgICBkZWJ1ZygiQ2hlY2tpbmcg
IiArIChmbGlwWSA/ICJ0b3AiIDogImJvdHRvbSIpKTsKKyAgICAgICAgICAgIHd0dS5jaGVja0Nh
bnZhc1JlY3QoZ2wsIDAsIGJvdHRvbSwgd2lkdGgsIGhhbGZIZWlnaHQsIHJlZENvbG9yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIHJlZENvbG9yKTsKKyAg
ICAgICAgICAgIGRlYnVnKCJDaGVja2luZyAiICsgKGZsaXBZID8gImJvdHRvbSIgOiAidG9wIikp
OworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgdG9wLCB3aWR0aCwgaGFs
ZkhlaWdodCwgZ3JlZW5Db2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNo
b3VsZEJlICIgKyBncmVlbkNvbG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXh0
dXJlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoY2FudmFzKQorICAgIHsKKyAgICAg
ICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworCisgICAg
ICAgIHZhciBjYXNlcyA9IFsKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMsIGZsaXBZOiB0
cnVlLCAgZm9udDogZmFsc2UsIGluaXQ6IHNldENhbnZhc1RvTWluIH0sCisgICAgICAgICAgICB7
IGNhbnZhczogY2FudmFzLCBmbGlwWTogZmFsc2UsIGZvbnQ6IGZhbHNlIH0sCisgICAgICAgICAg
ICB7IGNhbnZhczogY2FudmFzLCBmbGlwWTogdHJ1ZSwgIGZvbnQ6IGZhbHNlLCBpbml0OiBzZXRD
YW52YXNUbzI1N3gyNTcgfSwKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMsIGZsaXBZOiBm
YWxzZSwgZm9udDogZmFsc2UgfSwKKyAgICAgICAgICAgIHsgY2FudmFzOiBjYW52YXMsIGZsaXBZ
OiB0cnVlLCAgZm9udDogdHJ1ZSwgaW5pdDogZHJhd1RleHRJbkNhbnZhcyB9LAorICAgICAgICAg
ICAgeyBjYW52YXM6IGNhbnZhcywgZmxpcFk6IGZhbHNlLCBmb250OiB0cnVlIH0sCisgICAgICAg
IF07CisKKyAgICAgICAgaWYgKHdpbmRvdy5PZmZzY3JlZW5DYW52YXMpIHsKKyAgICAgICAgICAg
IHZhciBvZmZzY3JlZW5DYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKDEsIDEpOworICAgICAg
ICAgICAgY2FzZXMgPSBjYXNlcy5jb25jYXQoWworICAgICAgICAgICAgICAgIHsgY2FudmFzOiBv
ZmZzY3JlZW5DYW52YXMsIGZsaXBZOiB0cnVlLCAgZm9udDogZmFsc2UsIGluaXQ6IHNldENhbnZh
c1RvTWluIH0sCisgICAgICAgICAgICAgICAgeyBjYW52YXM6IG9mZnNjcmVlbkNhbnZhcywgZmxp
cFk6IGZhbHNlLCBmb250OiBmYWxzZSB9LAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBydW5UZXhJbWFnZVRlc3QoYmluZGluZ1RhcmdldCkgeworICAgICAg
ICAgICAgdmFyIHByb2dyYW07CisgICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5U
RVhUVVJFXzNEKSB7CisgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVk
UXVhZFdpdGgzRChnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICAgICAgfSBlbHNlIHsgIC8v
IFRFWFRVUkVfMkRfQVJSQVkKKyAgICAgICAgICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVwVGV4
dHVyZWRRdWFkV2l0aDJEQXJyYXkoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDQ7CisgICAgICAgICAgICAgICAgdmFy
IGNhc2VOZHggPSAwOworICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgYyA9IGNhc2VzW2Nhc2VOZHhdOworICAgICAgICAgICAgICAgICAgICBpZiAoYy5p
bml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgYy5pbml0KGMuY2FudmFzLmdldENvbnRleHQo
JzJkJyksIGJpbmRpbmdUYXJnZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUgPSBydW5PbmVJdGVyYXRpb24oYy5jYW52YXMsIGMuZmxpcFksIHBy
b2dyYW0sIGJpbmRpbmdUYXJnZXQsIHRleHR1cmUsIGMuZm9udCk7CisgICAgICAgICAgICAgICAg
ICAgIC8vIGZvciB0aGUgZmlyc3QgMiBpdGVyYXRpb25zIGFsd2F5cyBtYWtlIGEgbmV3IHRleHR1
cmUuCisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOworICAgICAgICAgICAgICAgICAgICAg
IHRleHR1cmUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgKytjYXNlTmR4OworICAgICAgICAgICAgICAgICAgICBpZiAoY2FzZU5keCA9PSBj
YXNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VOZHggPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghY291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCJTVUNDRVNT
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHd0
dS53YWl0Rm9yQ29tcG9zaXRlKHJ1bk5leHRUZXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisK
KyAgICAgICAgcnVuVGV4SW1hZ2VUZXN0KGdsLlRFWFRVUkVfM0QpLnRoZW4oZnVuY3Rpb24odmFs
KSB7CisgICAgICAgICAgICBydW5UZXhJbWFnZVRlc3QoZ2wuVEVYVFVSRV8yRF9BUlJBWSkudGhl
bihmdW5jdGlvbih2YWwpIHsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
cmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRo
LWltYWdlLWJpdG1hcC1mcm9tLWJsb2IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU1YmRjYjE0MzA2MjM1Y2Zi
ZDY1NTM4ZTJmZDdjYzc4YmExNmNmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tYmxvYi5qcwpAQCAtMCwwICsxLDQ4IEBA
CisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKK2Z1bmN0aW9uIGdl
bmVyYXRlVGVzdChpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgcHJvbG9n
dWUsIHJlc291cmNlUGF0aCwgZGVmYXVsdENvbnRleHRWZXJzaW9uKSB7CisgICAgdmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworICAgIHZhciBn
bCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworCisgICAgZnVu
Y3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleEltYWdl
M0QgYW5kIHRleFN1YkltYWdlM0QgY29kZSBwYXRocyB0YWtpbmcgSW1hZ2VCaXRtYXAgY3JlYXRl
ZCBmcm9tIGEgQmxvYiAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAn
LycgKyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VC
aXRtYXAgfHwgIXdpbmRvdy5JbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBk
ZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJz
aW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8gb3ZlcnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZh
dWx0M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3Vl
KGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wu
Y2xlYXJEZXB0aCgxKTsKKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCByZXNvdXJjZVBhdGggKyAicmVkLWdyZWVuLXNlbWkt
dHJhbnNwYXJlbnQucG5nIik7CisgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7Cisg
ICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBibG9iID0g
eGhyLnJlc3BvbnNlOworICAgICAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KGJsb2IsIDAuNSwg
aW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgdHJ1
ZSkKKyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpzIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1jYW52YXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA1
Mjk4YjM3NzE4M2MzNWU3OWQ2OTI3YzFhNjRhYmY0NTNjZmQ4YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20tY2FudmFzLmpz
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3Jv
dXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgor
Ki8KKworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwg
cGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24p
IHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdl
VXRpbHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
ZmFsc2U7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9u
KCdWZXJpZnkgdGV4SW1hZ2UzRCBhbmQgdGV4U3ViSW1hZ2UzRCBjb2RlIHBhdGhzIHRha2luZyBJ
bWFnZUJpdG1hcCBjcmVhdGVkIGZyb20gYW4gSFRNTENhbnZhc0VsZW1lbnQgKCcgKyBpbnRlcm5h
bEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKwor
ICAgICAgICBpZighd2luZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VCaXRt
YXApIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hp
bGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92
ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVs
dENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNs
ZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAg
dmFyIHRlc3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICAg
ICAgdmFyIGN0eCA9IHRlc3RDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgc2V0Q2Fu
dmFzVG9NaW4oY3R4KTsKKyAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KHRlc3RDYW52YXMsIDAu
NSwgaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwg
dHJ1ZSkKKyAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgc2V0Q2FudmFzVG8yNTd4
MjU3KGN0eCk7CisgICAgICAgICAgICByZXR1cm4gcnVuSW1hZ2VCaXRtYXBUZXN0KHRlc3RDYW52
YXMsIDAuNSwgaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUs
IHd0dSwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52YXNUb1Jl
ZEdyZWVuKGN0eCkgeworICAgICAgICB2YXIgd2lkdGggPSBjdHguY2FudmFzLndpZHRoOworICAg
ICAgICB2YXIgaGFsZldpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOworICAgICAgICB2YXIg
aGVpZ2h0ID0gY3R4LmNhbnZhcy5oZWlnaHQ7CisgICAgICAgIHZhciBoYWxmSGVpZ2h0ID0gTWF0
aC5mbG9vcihoZWlnaHQgLyAyKTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI1NSwg
MCwgMCwgMSkiOworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgaGFsZldpZHRoLCBoYWxmSGVp
Z2h0KTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI1NSwgMCwgMCwgMC41KSI7Cisg
ICAgICAgIGN0eC5maWxsUmVjdChoYWxmV2lkdGgsIDAsIGhhbGZXaWR0aCwgaGFsZkhlaWdodCk7
CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgwLCAyNTUsIDAsIDEpIjsKKyAgICAgICAg
Y3R4LmZpbGxSZWN0KDAsIGhhbGZIZWlnaHQsIGhhbGZXaWR0aCwgaGFsZkhlaWdodCk7CisgICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgwLCAyNTUsIDAsIDAuNSkiOworICAgICAgICBjdHgu
ZmlsbFJlY3QoaGFsZldpZHRoLCBoYWxmSGVpZ2h0LCBoYWxmV2lkdGgsIGhhbGZIZWlnaHQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHNldENhbnZhc1RvTWluKGN0eCkgeworICAgICAgICBjdHgu
Y2FudmFzLndpZHRoID0gMjsKKyAgICAgICAgY3R4LmNhbnZhcy5oZWlnaHQgPSAyOworICAgICAg
ICBzZXRDYW52YXNUb1JlZEdyZWVuKGN0eCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Q2Fu
dmFzVG8yNTd4MjU3KGN0eCkgeworICAgICAgICBjdHguY2FudmFzLndpZHRoID0gMjU3OworICAg
ICAgICBjdHguY2FudmFzLmhlaWdodCA9IDI1NzsKKyAgICAgICAgc2V0Q2FudmFzVG9SZWRHcmVl
bihjdHgpOworICAgIH0KKworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLWJp
dG1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NGM5ZmZhMzc4ZWY3MzVmM2QyZGMwY2M2NzMzM2I3MDQwMzVi
OTM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFn
ZS1iaXRtYXAtZnJvbS1pbWFnZS1iaXRtYXAuanMKQEAgLTAsMCArMSw1NiBAQAorLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5lcmF0ZVRlc3Qo
aW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3VlLCByZXNvdXJj
ZVBhdGgsIGRlZmF1bHRDb250ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RV
dGlsczsKKyAgICB2YXIgdGl1ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOwor
ICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIGluaXQo
KQorICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTNEIGFuZCB0ZXhT
dWJJbWFnZTNEIGNvZGUgcGF0aHMgdGFraW5nIEltYWdlQml0bWFwIGNyZWF0ZWQgZnJvbSBhbiBJ
bWFnZUJpdG1hcCAoJyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycg
KyBwaXhlbFR5cGUgKyAnKScpOworCisgICAgICAgIGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VCaXRt
YXAgfHwgIXdpbmRvdy5JbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZh
dWx0IGNvbnRleHQgdmVyc2lvbiB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9u
IFVSTCBxdWVyeSBzdHJpbmcgdG8gb3ZlcnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0
M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGds
KSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xl
YXJEZXB0aCgxKTsKKyAgICAgICAgZ2wuZGlzYWJsZShnbC5CTEVORCk7CisKKyAgICAgICAgdmFy
IGltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMjU1LCAwLCAwLCAyNTUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMCwgMCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDI1NSwgMCwgMF0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLCAyKTsKKworICAgICAgICBjcmVhdGVJbWFnZUJpdG1h
cChpbWFnZURhdGEsIHtpbWFnZU9yaWVudGF0aW9uOiAibm9uZSIsIHByZW11bHRpcGx5QWxwaGE6
ICJub25lIn0pCisgICAgICAgIC5jYXRjaCggKCkgPT4geworICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBvcHRpb25zIG1heSBiZSByZWplY3RlZCBpZiBpdCBp
cyBub3Qgc3VwcG9ydGVkLiBSZXRyeWluZyB3aXRob3V0IG9wdGlvbnMuIik7CisgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2VEYXRhKTsKKyAgICAgICAgfSkudGhlbigg
Yml0bWFwID0+IHsKKyAgICAgICAgICAgIHJldHVybiBydW5JbWFnZUJpdG1hcFRlc3QoYml0bWFw
LCAwLCBpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1
LCB0cnVlKTsKKyAgICAgICAgfSwgKCkgPT4geworICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Jl
YXRlSW1hZ2VCaXRtYXAoaW1hZ2VEYXRhKSBzaG91bGQgc3VjY2VlZC4iKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1iaXRtYXAtZnJvbS1pbWFnZS1kYXRhLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNjYTAzNThlMTczMGJlNTgwYmNmMmM0Y2VhYTY0Y2RlM2IxNzUxZGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90
ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWlt
YWdlLWRhdGEuanMKQEAgLTAsMCArMSw0OSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCitmdW5jdGlvbiBnZW5lcmF0ZVRlc3QoaW50ZXJuYWxGb3JtYXQsIHBp
eGVsRm9ybWF0LCBwaXhlbFR5cGUsIHByb2xvZ3VlLCByZXNvdXJjZVBhdGgsIGRlZmF1bHRDb250
ZXh0VmVyc2lvbikgeworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICB2YXIgdGl1
ID0gVGV4SW1hZ2VVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOworICAgIHZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAg
ZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTNEIGFuZCB0ZXhTdWJJbWFnZTNEIGNvZGUgcGF0
aHMgdGFraW5nIEltYWdlQml0bWFwIGNyZWF0ZWQgZnJvbSBJbWFnZURhdGEgKCcgKyBpbnRlcm5h
bEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKwor
ICAgICAgICBpZighd2luZG93LmNyZWF0ZUltYWdlQml0bWFwIHx8ICF3aW5kb3cuSW1hZ2VCaXRt
YXApIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hp
bGUgc3RpbGwgYWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92
ZXJyaWRlIGl0LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVs
dENvbnRleHRWZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFt
cGxlIik7CisKKyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNs
ZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisgICAgICAgIGds
LmRpc2FibGUoZ2wuQkxFTkQpOworCisgICAgICAgIHZhciBpbWFnZURhdGEgPSBuZXcgSW1hZ2VE
YXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWzI1NSwgMCwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNTUsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAyNTUsIDAsIDBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MiwgMik7CisKKyAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KGltYWdlRGF0YSwgMCwgaW50ZXJu
YWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgdHJ1ZSkKKyAg
ICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UtYml0bWFwLWZyb20taW1hZ2UuanMgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBmMTEyMWJiYjlhNzZmYzFhZjM4ZDcxOWRmZDQ3OWQ2MTk1NWI4NzgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0
cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLWltYWdl
LmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorKi8KKworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1h
dCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNp
b24pIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleElt
YWdlVXRpbHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0
aW9uKCdWZXJpZnkgdGV4SW1hZ2UzRCBhbmQgdGV4U3ViSW1hZ2UzRCBjb2RlIHBhdGhzIHRha2lu
ZyBJbWFnZUJpdG1hcCBjcmVhdGVkIGZyb20gYW4gSFRNTEltYWdlRWxlbWVudCAoJyArIGludGVy
bmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScpOwor
CisgICAgICAgIGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VCaXRtYXAgfHwgIXdpbmRvdy5JbWFnZUJp
dG1hcCkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3
aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8g
b3ZlcnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbihkZWZh
dWx0Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4
YW1wbGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2wu
Y2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKworICAgICAg
ICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBydW5JbWFnZUJpdG1hcFRlc3QoaW1hZ2UsIDAuNSwgaW50ZXJu
YWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgdHJ1ZSkKKyAg
ICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBpbWFnZS5zcmMgPSByZXNvdXJjZVBh
dGggKyAicmVkLWdyZWVuLXNlbWktdHJhbnNwYXJlbnQucG5nIjsKKyAgICB9CisKKyAgICByZXR1
cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTNkLXdpdGgtaW1h
Z2UtYml0bWFwLWZyb20tdmlkZW8uanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLWlt
YWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDc2ZjI5ZGUzYjU5YzFiYWNi
ZDk1NjlhNjk4NjE2ODFjMzJjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0zZC13aXRoLWltYWdlLWJpdG1hcC1mcm9tLXZpZGVvLmpzCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworZnVuY3Rpb24gZ2Vu
ZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1
ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGds
ID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisKKyAgICB2YXIg
dmlkZW9zID0gWworICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi5tcDQi
ICAgICAgICAgICAsIHR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEu
NDAuMiInLCB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi53ZWJt
dnA4LndlYm0iICAsIHR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwgdm9yYmlzIicsICAg
ICAgICAgICB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi5idDYw
MS52cDkud2VibSIsIHR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOSInLCAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi50aGVv
cmEub2d2IiAgICAsIHR5cGU6ICd2aWRlby9vZ2c7IGNvZGVjcz0idGhlb3JhLCB2b3JiaXMiJywg
ICAgICAgICB9LAorICAgIF07CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAg
IGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UzRCBhbmQgdGV4U3ViSW1hZ2UzRCBjb2RlIHBh
dGhzIHRha2luZyBJbWFnZUJpdG1hcCBjcmVhdGVkIGZyb20gYW4gSFRNTFZpZGVvRWxlbWVudCAo
JyArIGludGVybmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUg
KyAnKScpOworCisgICAgICAgIGlmKCF3aW5kb3cuY3JlYXRlSW1hZ2VCaXRtYXAgfHwgIXdpbmRv
dy5JbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNvbnRleHQg
dmVyc2lvbiB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBz
dHJpbmcgdG8gb3ZlcnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0M0RDb250ZXh0VmVy
c2lvbihkZWZhdWx0Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENv
bnRleHQoImV4YW1wbGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTsK
KworICAgICAgICB2YXIgdmlkZW9OZHggPSAwOworICAgICAgICB2YXIgdmlkZW87CisgICAgICAg
IGZ1bmN0aW9uIHJ1bk5leHRWaWRlbygpIHsKKyAgICAgICAgICAgIGlmICh2aWRlbykgeworICAg
ICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh2aWRlb05keCA9PSB2aWRlb3MubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIGluZm8gPSB2aWRlb3NbdmlkZW9OZHgrK107CisgICAgICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgICAgICBkZWJ1ZygidGVzdGluZzogIiArIGluZm8udHlwZSk7CisgICAgICAg
ICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgICAg
ICB2aWRlby5tdXRlZCA9IHRydWU7CisgICAgICAgICAgICB2YXIgY2FuUGxheSA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIXZpZGVvLmNhblBsYXlUeXBlKSB7CisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgidmlkZW8uY2FuUGxheVR5cGUgcmVxdWlyZWQgbWV0aG9kIG1pc3NpbmciKTsKKyAg
ICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKCF2aWRlby5jYW5QbGF5VHlwZShpbmZvLnR5
cGUpLnJlcGxhY2UoL25vLywgJycpKSB7CisgICAgICAgICAgICAgICAgZGVidWcoaW5mby50eXBl
ICsgIiB1bnN1cHBvcnRlZCIpOworICAgICAgICAgICAgICAgIHJ1bk5leHRWaWRlbygpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgICAgICAgICAgdmlkZW8udHlwZSA9IGlu
Zm8udHlwZTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGluZm8uc3JjOworICAgICAgICAgICAg
d3R1LnN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRlbywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0KHZpZGVvLCAxLCBpbnRlcm5hbEZvcm1hdCwg
cGl4ZWxGb3JtYXQsIHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJ1bk5leHRWaWRlbygpOworICAgIH0KKworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS1kYXRhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZGY1MWE5NmFl
NTEzNzEyNTJlOWJhOTRlOTBjMjc0NTJiMTdhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0zZC13aXRoLWltYWdlLWRhdGEuanMKQEAgLTAsMCArMSwyNTkgQEAKKy8q
CitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworZnVuY3Rpb24gZ2VuZXJh
dGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwg
cmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGdsID0g
bnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFyIGltYWdl
RGF0YSA9IG51bGw7CisgICAgdmFyIGJsYWNrQ29sb3IgPSBbMCwgMCwgMF07CisgICAgdmFyIG9y
aWdpbmFsUGl4ZWxzID0gKGZ1bmN0aW9uKCkgeworICAgICAgICAvLyAocmVkfGdyZWVufGJsdWV8
Y3lhbikob3BhcXVlfHRyYW5zcGFyZW50KQorICAgICAgICB2YXIgcm8gPSBbMjU1LCAwLCAwLCAy
NTVdOyB2YXIgcnQgPSBbMjU1LCAwLCAwLCAwXTsKKyAgICAgICAgdmFyIGdvID0gWzAsIDI1NSwg
MCwgMjU1XTsgdmFyIGd0ID0gWzAsIDI1NSwgMCwgMF07CisgICAgICAgIHZhciBibyA9IFswLCAw
LCAyNTUsIDI1NV07IHZhciBidCA9IFswLCAwLCAyNTUsIDBdOworICAgICAgICB2YXIgY28gPSBb
MCwgMjU1LCAyNTUsIDI1NV07IHZhciBjdCA9IFswLCAyNTUsIDI1NSwgMF07CisgICAgICAgIHJl
dHVybiBbcm8sIHJ0LCBnbywgZ3QsCisgICAgICAgICAgICAgICAgcm8sIHJ0LCBnbywgZ3QsCisg
ICAgICAgICAgICAgICAgYm8sIGJ0LCBjbywgY3QsCisgICAgICAgICAgICAgICAgYm8sIGJ0LCBj
bywgY3RdOworICAgIH0pKCk7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAg
IGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UzRCBhbmQgdGV4U3ViSW1hZ2UzRCBjb2RlIHBh
dGhzIHRha2luZyBJbWFnZURhdGEgKCcgKyBpbnRlcm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9y
bWF0ICsgJy8nICsgcGl4ZWxUeXBlICsgJyknKTsKKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1
bHQgY29udGV4dCB2ZXJzaW9uIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24g
VVJMIHF1ZXJ5IHN0cmluZyB0byBvdmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQz
RENvbnRleHRWZXJzaW9uKGRlZmF1bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dCgiZXhhbXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wp
KSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgICAgICBnbC5jbGVh
ckRlcHRoKDEpOworICAgICAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKworICAgICAgICB2YXIg
Y2FudmFzMmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4Y2FudmFzIik7CisgICAgICAg
IHZhciBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBpbWFn
ZURhdGEgPSBjb250ZXh0MmQuY3JlYXRlSW1hZ2VEYXRhKDQsIDQpOworICAgICAgICB2YXIgZGF0
YSA9IGltYWdlRGF0YS5kYXRhOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9yaWdpbmFs
UGl4ZWxzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBkYXRhLnNldChvcmlnaW5hbFBpeGVs
c1tpXSwgNCAqIGkpOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbih1c2VUZXhTdWJJbWFnZTNELCBmbGlwWSwgcHJl
bXVsdGlwbHlBbHBoYSwgYmluZGluZ1RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGgsIHNvdXJjZVN1YlJlY3RhbmdsZSwgclRleENvb3JkLCBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgdmFyIGV4cGVjdGVkID0gc2ltdWxhdGUoZmxpcFksIHByZW11bHRpcGx5QWxwaGEs
IGRlcHRoLCBzb3VyY2VTdWJSZWN0YW5nbGUsIHJUZXhDb29yZCk7CisgICAgICAgIHZhciBzb3Vy
Y2VTdWJSZWN0YW5nbGVTdHJpbmcgPSAnJzsKKyAgICAgICAgaWYgKHNvdXJjZVN1YlJlY3Rhbmds
ZSkgeworICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlU3RyaW5nID0gJywgc291cmNlU3Vi
UmVjdGFuZ2xlPScgKyBzb3VyY2VTdWJSZWN0YW5nbGU7CisgICAgICAgICAgICBzb3VyY2VTdWJS
ZWN0YW5nbGVTdHJpbmcgKz0gJywgclRleENvb3JkPScgKyByVGV4Q29vcmQ7CisgICAgICAgIH0K
KyAgICAgICAgZGVidWcoJycpOworICAgICAgICBkZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRleFN1
YkltYWdlM0QgPyAndGV4U3ViSW1hZ2UzRCcgOiAndGV4SW1hZ2UzRCcpICsKKyAgICAgICAgICAg
ICAgJyB3aXRoIGZsaXBZPScgKyBmbGlwWSArICcsIHByZW11bHRpcGx5QWxwaGE9JyArIHByZW11
bHRpcGx5QWxwaGEgKworICAgICAgICAgICAgICAnLCBiaW5kaW5nVGFyZ2V0PScgKyAoYmluZGlu
Z1RhcmdldCA9PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RFWFRVUkVfMkRfQVJS
QVknKSArCisgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVN0cmluZyk7CisgICAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAg
ICAgICAgLy8gRW5hYmxlIHdyaXRlcyB0byB0aGUgUkdCQSBjaGFubmVscworICAgICAgICBnbC5j
b2xvck1hc2soMSwgMSwgMSwgMCk7CisgICAgICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCisg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAv
LyBTZXQgdXAgdGV4dHVyZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmlu
ZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGds
Lk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRF
WFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7Cisg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1Is
IGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAvLyBTZXQgdXAgcGl4ZWwgc3RvcmUgcGFyYW1l
dGVycworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmbGlw
WSk7CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9X
RUJHTCwgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wsIGdsLk5PTkUpOworICAgICAgICB2YXIgdXBs
b2FkV2lkdGggPSBpbWFnZURhdGEud2lkdGg7CisgICAgICAgIHZhciB1cGxvYWRIZWlnaHQgPSBp
bWFnZURhdGEuaGVpZ2h0OworICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAg
ICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIHNvdXJjZVN1YlJl
Y3RhbmdsZVswXSk7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9S
T1dTLCBzb3VyY2VTdWJSZWN0YW5nbGVbMV0pOworICAgICAgICAgICAgdXBsb2FkV2lkdGggPSBz
b3VyY2VTdWJSZWN0YW5nbGVbMl07CisgICAgICAgICAgICB1cGxvYWRIZWlnaHQgPSBzb3VyY2VT
dWJSZWN0YW5nbGVbM107CisgICAgICAgIH0KKyAgICAgICAgLy8gVXBsb2FkIHRoZSBpbWFnZSBp
bnRvIHRoZSB0ZXh0dXJlCisgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTNEKSB7CisgICAgICAg
ICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAg
ICBnbC50ZXhJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgdXBs
b2FkV2lkdGgsIHVwbG9hZEhlaWdodCwgZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAgICBn
bC50ZXhTdWJJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIDAsIDAsIDAsIHVwbG9hZFdpZHRoLCB1
cGxvYWRIZWlnaHQsIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhl
bEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGltYWdlRGF0YSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9y
bWF0XSwgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwgZGVwdGgsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgaW1hZ2VEYXRhKTsK
KyAgICAgICAgfQorICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMs
IDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8g
ZXJyb3JzIGZyb20gdGV4dHVyZSB1cGxvYWQiKTsKKworICAgICAgICB2YXIgdGwgPSBleHBlY3Rl
ZFswXVswXTsKKyAgICAgICAgdmFyIHRyID0gZXhwZWN0ZWRbMF1bMV07CisgICAgICAgIHZhciBi
bCA9IGV4cGVjdGVkWzFdWzBdOworICAgICAgICB2YXIgYnIgPSBleHBlY3RlZFsxXVsxXTsKKwor
ICAgICAgICB2YXIgckNvb3JkTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgJ3VSQ29vcmQnKTsKKyAgICAgICAgaWYgKCFyQ29vcmRMb2NhdGlvbikgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiU2hhZGVyIGluY29ycmVjdGx5IHNldCB1cDsgY291bGRuJ3QgZmluZCB1
UkNvb3JkIHVuaWZvcm0iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBnbC51bmlmb3JtMWYockNvb3JkTG9jYXRpb24sIHJUZXhDb29yZCk7CisgICAgICAgIC8vIERy
YXcgdGhlIHRyaWFuZ2xlcworICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wsIFsw
LCAwLCAwLCAyNTVdKTsKKworICAgICAgICB2YXIgd2lkdGggPSBnbC5jYW52YXMud2lkdGg7Cisg
ICAgICAgIHZhciBoYWxmV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoIC8gMik7CisgICAgICAgIHZh
ciBoZWlnaHQgPSBnbC5jYW52YXMuaGVpZ2h0OworICAgICAgICB2YXIgaGFsZkhlaWdodCA9IE1h
dGguZmxvb3IoaGVpZ2h0IC8gMik7CisKKyAgICAgICAgdmFyIHRvcCA9IDA7CisgICAgICAgIHZh
ciBib3R0b20gPSBoZWlnaHQgLSBoYWxmSGVpZ2h0OworICAgICAgICB2YXIgbGVmdCA9IDA7Cisg
ICAgICAgIHZhciByaWdodCA9IHdpZHRoIC0gaGFsZldpZHRoOworCisgICAgICAgIGRlYnVnKCJD
aGVja2luZyBwaXhlbCB2YWx1ZXMiKTsKKyAgICAgICAgZGVidWcoIkV4cGVjdGluZzogIiArIGV4
cGVjdGVkKTsKKyAgICAgICAgdmFyIGV4cGVjdGVkSCA9IGV4cGVjdGVkLmxlbmd0aDsKKyAgICAg
ICAgdmFyIGV4cGVjdGVkVyA9IGV4cGVjdGVkWzBdLmxlbmd0aDsKKyAgICAgICAgdmFyIHRleGVs
SCA9IE1hdGguZmxvb3IoZ2wuY2FudmFzLmhlaWdodCAvIGV4cGVjdGVkSCk7CisgICAgICAgIHZh
ciB0ZXhlbFcgPSBNYXRoLmZsb29yKGdsLmNhbnZhcy53aWR0aCAvIGV4cGVjdGVkVyk7CisgICAg
ICAgIC8vIEZvciBlYWNoIGVudHJ5IG9mIHRoZSBleHBlY3RlZFtdW10gYXJyYXksIGNoZWNrIHRo
ZSBhcHByb3ByaWF0ZQorICAgICAgICAvLyBjYW52YXMgcmVjdGFuZ2xlIGZvciBjb3JyZWN0bmVz
cy4KKyAgICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgZXhwZWN0ZWRIOyByb3crKykgewor
ICAgICAgICAgICAgdmFyIHkgPSByb3cgKiB0ZXhlbEg7CisgICAgICAgICAgICBmb3IgKHZhciBj
b2wgPSAwOyBjb2wgPCBleHBlY3RlZFc7IGNvbCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHgg
PSBjb2wgKiB0ZXhlbFc7CisgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGV4cGVjdGVkW3Jvd11b
Y29sXTsKKyAgICAgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCB4LCB5LCB0ZXhl
bFcsIHRleGVsSCwgdmFsLCAic2hvdWxkIGJlICIgKyB2YWwpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICB2
YXIgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdpdGgzRChnbCwgaW50ZXJuYWxGb3Jt
YXQpOworICAgICAgICBydW5UZXN0T25CaW5kaW5nVGFyZ2V0KGdsLlRFWFRVUkVfM0QsIHByb2dy
YW0pOworICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRRdWFkV2l0aDJEQXJyYXko
Z2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgcnVuVGVzdE9uQmluZGluZ1RhcmdldChnbC5U
RVhUVVJFXzJEX0FSUkFZLCBwcm9ncmFtKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9y
cyIpOworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2ltdWxh
dGUoZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGRlcHRoLCBzb3VyY2VTdWJSZWN0YW5nbGUsIHJU
ZXhDb29yZCkgeworICAgICAgICB2YXIgcm8gPSBbMjU1LCAwLCAwXTsgICB2YXIgcnQgPSBwcmVt
dWx0aXBseUFscGhhID8gWzAsIDAsIDBdIDogWzI1NSwgMCwgMF07CisgICAgICAgIHZhciBnbyA9
IFswLCAyNTUsIDBdOyAgIHZhciBndCA9IHByZW11bHRpcGx5QWxwaGEgPyBbMCwgMCwgMF0gOiBb
MCwgMjU1LCAwXTsKKyAgICAgICAgdmFyIGJvID0gWzAsIDAsIDI1NV07ICAgdmFyIGJ0ID0gcHJl
bXVsdGlwbHlBbHBoYSA/IFswLCAwLCAwXSA6IFswLCAwLCAyNTVdOworICAgICAgICB2YXIgY28g
PSBbMCwgMjU1LCAyNTVdOyB2YXIgY3QgPSBwcmVtdWx0aXBseUFscGhhID8gWzAsIDAsIDBdIDog
WzAsIDI1NSwgMjU1XTsKKyAgICAgICAgdmFyIGV4cGVjdGVkID0gW1tybywgcnQsIGdvLCBndF0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbcm8sIHJ0LCBnbywgZ3RdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgW2JvLCBidCwgY28sIGN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFti
bywgYnQsIGNvLCBjdF1dOworICAgICAgICBzd2l0Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAg
ICAgICAgIGNhc2UgZ2wuUkVEOgorICAgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAg
ICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCA0OyByb3crKykgeworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IDQ7IGNvbCsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkW3Jvd11bY29sXVsxXSA9IDA7IC8vIHplcm8gdGhlIGdyZWVuIGNoYW5uZWwK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBmYWxsLXRo
cm91Z2gKKyAgICAgICAgICBjYXNlIGdsLlJHOgorICAgICAgICAgIGNhc2UgZ2wuUkdfSU5URUdF
UjoKKyAgICAgICAgICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IDQ7IHJvdysrKSB7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgNDsgY29sKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRbcm93XVtjb2xdWzJdID0gMDsgLy8gemVybyB0aGUgYmx1ZSBj
aGFubmVsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGZsaXBZKSB7CisgICAgICAgICAgICBleHBlY3RlZC5yZXZlcnNlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoc291cmNlU3ViUmVjdGFuZ2xlKSB7CisgICAgICAgICAg
ICBsZXQgZXhwZWN0ZWQyID0gW107CisgICAgICAgICAgICBmb3IgKHZhciByb3cgPSAwOyByb3cg
PCBzb3VyY2VTdWJSZWN0YW5nbGVbM107IHJvdysrKSB7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWQyW3Jvd10gPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBz
b3VyY2VTdWJSZWN0YW5nbGVbMl07IGNvbCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkMltyb3ddW2NvbF0gPQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRbc291cmNl
U3ViUmVjdGFuZ2xlWzFdICsgcm93ICsgclRleENvb3JkICogc291cmNlU3ViUmVjdGFuZ2xlWzNd
XVtzb3VyY2VTdWJSZWN0YW5nbGVbMF0gKyBjb2xdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQyOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGV4cGVjdGVkOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3RP
bkJpbmRpbmdUYXJnZXQoYmluZGluZ1RhcmdldCwgcHJvZ3JhbSkgeworICAgICAgICB2YXIgcmVj
dHMgPSBbCisgICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAgICBbMCwgMCwgMiwgMl0s
CisgICAgICAgICAgICBbMiwgMCwgMiwgMl0sCisgICAgICAgIF07CisgICAgICAgIHZhciBkYmcg
PSBmYWxzZTsgIC8vIFNldCB0byB0cnVlIGZvciBkZWJ1ZyBvdXRwdXQgaW1hZ2VzCisgICAgICAg
IGlmIChkYmcpIHsKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZGVidWcoIk9yaWdpbmFsIEltYWdlRGF0YSAodHJh
bnNwYXJlbnQgcGl4ZWxzIGFwcGVhciBibGFjayk6Iik7CisgICAgICAgICAgICAgICAgdmFyIGN2
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICAgICAgICAgIGN2
cy53aWR0aCA9IDQ7CisgICAgICAgICAgICAgICAgY3ZzLmhlaWdodCA9IDQ7CisgICAgICAgICAg
ICAgICAgY3ZzLnN0eWxlLndpZHRoID0gIjMycHgiOworICAgICAgICAgICAgICAgIGN2cy5zdHls
ZS5oZWlnaHQgPSAiMzJweCI7CisgICAgICAgICAgICAgICAgY3ZzLnN0eWxlLmltYWdlUmVuZGVy
aW5nID0gInBpeGVsYXRlZCI7CisgICAgICAgICAgICAgICAgY3ZzLnN0eWxlLmJhY2tncm91bmQg
PSAiIzAwMCI7CisgICAgICAgICAgICAgICAgdmFyIGN0eCA9IGN2cy5nZXRDb250ZXh0KCIyZCIp
OworICAgICAgICAgICAgICAgIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTsKKyAg
ICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoY3ZzKTsKKyAgICAgICAg
ICAgIH0pKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgW2ZhbHNlLCB0
cnVlXSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBmbGlwWSBvZiBbZmFsc2UsIHRydWVdKSB7
CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcmVtdWwgb2YgW2ZhbHNlLCB0cnVlXSkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpcmVjdCA9IDA7IGlyZWN0IDwgcmVjdHMubGVu
Z3RoOyBpcmVjdCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IHJlY3Rz
W2lyZWN0XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXB0aCA9IHJlY3QgPyAyIDog
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJUZXhDb29yZCA9IDA7IHJUZXhD
b29yZCA8IGRlcHRoOyByVGV4Q29vcmQrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRPRE86IGFkZCB0ZXN0cyBmb3IgVU5QQUNLX0lNQUdFX0hFSUdIVC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oc3ViLCBmbGlwWSwgcHJlbXVsLCBiaW5k
aW5nVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIHJl
Y3QsIHJUZXhDb29yZCwgcHJvZ3JhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGRiZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQWN0dWFsOiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5z
cmMgPSBnbC5jYW52YXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRDaGls
ZChpbWcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1pbWFnZS5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTNkLXdpdGgtaW1hZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM0YmQ4YWI0NmE4YzI0Mjk3
NWNhNDU4N2U0MWUwYjllNDlhMDcwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTNkLXdpdGgtaW1hZ2UuanMKQEAgLTAsMCArMSwyNjAgQEAKKy8qCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVy
bmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRo
LCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFyIGltZ0NhbnZhczsKKyAgICB2
YXIgcmVkQ29sb3IgPSBbMjU1LCAwLCAwXTsKKyAgICB2YXIgZ3JlZW5Db2xvciA9IFswLCAyNTUs
IDBdOworICAgIHZhciBibHVlQ29sb3IgPSBbMCwgMCwgMjU1XTsKKyAgICB2YXIgY3lhbkNvbG9y
ID0gWzAsIDI1NSwgMjU1XTsKKyAgICB2YXIgaW1hZ2VVUkxzID0gW3Jlc291cmNlUGF0aCArICJy
ZWQtZ3JlZW4ucG5nIiwKKyAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUGF0aCArICJyZWQt
Z3JlZW4tYmx1ZS1jeWFuLTR4NC5wbmciXTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsK
KyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTNEIGFuZCB0ZXhTdWJJbWFnZTNE
IGNvZGUgcGF0aHMgdGFraW5nIGltYWdlIGVsZW1lbnRzICgnICsgaW50ZXJuYWxGb3JtYXQgKyAn
LycgKyBwaXhlbEZvcm1hdCArICcvJyArIHBpeGVsVHlwZSArICcpJyk7CisKKyAgICAgICAgLy8g
U2V0IHRoZSBkZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUg
d2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8gb3ZlcnJpZGUgaXQuCisgICAgICAgIHd0
dS5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0Q29udGV4dFZlcnNpb24pOworICAg
ICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKworICAgICAgICBpZiAo
IXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChnbFtwaXhlbEZvcm1hdF0pIHsK
KyAgICAgICAgY2FzZSBnbC5SRUQ6CisgICAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAg
ICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICBibHVlQ29sb3IgPSBbMCwg
MCwgMF07CisgICAgICAgICAgY3lhbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgZ2wuUkc6CisgICAgICAgIGNhc2UgZ2wuUkdfSU5URUdFUjoKKyAg
ICAgICAgICBibHVlQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgICAgY3lhbkNvbG9yID0gWzAs
IDI1NSwgMF07CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwwLDAsMSk7Cisg
ICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgd3R1LmxvYWRJbWFnZXNBc3luYyhp
bWFnZVVSTHMsIHJ1blRlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHVwbG9hZEltYWdlVG9U
ZXh0dXJlKGltYWdlLCB1c2VUZXhTdWJJbWFnZTNELCBmbGlwWSwgYmluZGluZ1RhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgc291cmNlU3ViUmVjdGFuZ2xl
LCB1bnBhY2tJbWFnZUhlaWdodCkKKyAgICB7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgLy8gRGlzYWJsZSBhbnkg
d3JpdGVzIHRvIHRoZSBhbHBoYSBjaGFubmVsCisgICAgICAgIGdsLmNvbG9yTWFzaygxLCAxLCAx
LCAwKTsKKyAgICAgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
IC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wuYmluZFRl
eHR1cmUoYmluZGluZ1RhcmdldCwgdGV4dHVyZSk7CisgICAgICAgIC8vIFNldCB1cCB0ZXh0dXJl
IHBhcmFtZXRlcnMKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGds
LkNMQU1QX1RPX0VER0UpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFy
YW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfUiwgZ2wuQ0xBTVBfVE9fRURH
RSk7CisgICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAgZ2wu
cGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7Cisg
ICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VC
R0wsIGdsLk5PTkUpOworICAgICAgICB2YXIgdXBsb2FkV2lkdGggPSBpbWFnZS53aWR0aDsKKyAg
ICAgICAgdmFyIHVwbG9hZEhlaWdodCA9IGltYWdlLmhlaWdodDsKKyAgICAgICAgaWYgKHNvdXJj
ZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NL
SVBfUElYRUxTLCBzb3VyY2VTdWJSZWN0YW5nbGVbMF0pOworICAgICAgICAgICAgZ2wucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgc291cmNlU3ViUmVjdGFuZ2xlWzFdKTsKKyAgICAg
ICAgICAgIHVwbG9hZFdpZHRoID0gc291cmNlU3ViUmVjdGFuZ2xlWzJdOworICAgICAgICAgICAg
dXBsb2FkSGVpZ2h0ID0gc291cmNlU3ViUmVjdGFuZ2xlWzNdOworICAgICAgICB9CisgICAgICAg
IGlmICh1bnBhY2tJbWFnZUhlaWdodCkgeworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wu
VU5QQUNLX0lNQUdFX0hFSUdIVCwgdW5wYWNrSW1hZ2VIZWlnaHQpOworICAgICAgICB9CisgICAg
ICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2UgaW50byB0aGUgdGV4dHVyZQorICAgICAgICBpZiAodXNl
VGV4U3ViSW1hZ2UzRCkgeworICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0
byBibGFjayBmaXJzdAorICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChiaW5kaW5nVGFyZ2V0LCAw
LCBnbFtpbnRlcm5hbEZvcm1hdF0sIHVwbG9hZFdpZHRoLCB1cGxvYWRIZWlnaHQsIGRlcHRoLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlw
ZV0sIG51bGwpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UzRChiaW5kaW5nVGFyZ2V0LCAw
LCAwLCAwLCAwLCB1cGxvYWRXaWR0aCwgdXBsb2FkSGVpZ2h0LCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCBpbWFnZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnbC50ZXhJbWFnZTNEKGJpbmRpbmdUYXJn
ZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwgZGVw
dGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4
ZWxUeXBlXSwgaW1hZ2UpOworICAgICAgICB9CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVO
UEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19T
S0lQX1JPV1MsIDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfSU1BR0VfSEVJ
R0hULCAwKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJz
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gdGV4dHVyZSB1cGxvYWQiKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBydW5SZWRHcmVlblRlc3QoaW1hZ2UpIHsKKyAgICAgICAgZnVuY3Rpb24gcnVuT25l
SXRlcmF0aW9uKGltYWdlLCB1c2VUZXhTdWJJbWFnZTNELCBmbGlwWSwgYmluZGluZ1RhcmdldCwg
dG9wQ29sb3IsIGJvdHRvbUNvbG9yLCBwcm9ncmFtKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRleFN1YkltYWdlM0QgPyAndGV4U3ViSW1hZ2UzRCcgOiAn
dGV4SW1hZ2UzRCcpICsKKyAgICAgICAgICAgICAgICAgICcgd2l0aCBmbGlwWT0nICsgZmxpcFkg
KyAnIGJpbmRpbmdUYXJnZXQ9JyArCisgICAgICAgICAgICAgICAgICAoYmluZGluZ1RhcmdldCA9
PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RFWFRVUkVfMkRfQVJSQVknKSk7CisK
KyAgICAgICAgICAgIHVwbG9hZEltYWdlVG9UZXh0dXJlKGltYWdlLCB1c2VUZXhTdWJJbWFnZTNE
LCBmbGlwWSwgYmluZGluZ1RhcmdldCwgMSk7CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhlIHRy
aWFuZ2xlcworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwg
MCwgMjU1XSk7CisgICAgICAgICAgICAvLyBDaGVjayBhIGZldyBwaXhlbHMgbmVhciB0aGUgdG9w
IGFuZCBib3R0b20gYW5kIG1ha2Ugc3VyZSB0aGV5IGhhdmUKKyAgICAgICAgICAgIC8vIHRoZSBy
aWdodCBjb2xvci4KKyAgICAgICAgICAgIGRlYnVnKCJDaGVja2luZyBsb3dlciBsZWZ0IGNvcm5l
ciIpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgNCwgMiwgMiwgYm90
dG9tQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRCZSAiICsg
Ym90dG9tQ29sb3IpOworICAgICAgICAgICAgZGVidWcoIkNoZWNraW5nIHVwcGVyIGxlZnQgY29y
bmVyIik7CisgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCBnbC5jYW52YXMu
aGVpZ2h0IC0gOCwgMiwgMiwgdG9wQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzaG91bGRCZSAiICsgdG9wQ29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNh
c2VzID0gWworICAgICAgICAgICAgeyBzdWI6IGZhbHNlLCBmbGlwWTogdHJ1ZSwgdG9wQ29sb3I6
IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAorICAgICAgICAgICAgeyBzdWI6
IGZhbHNlLCBmbGlwWTogZmFsc2UsIHRvcENvbG9yOiBncmVlbkNvbG9yLCBib3R0b21Db2xvcjog
cmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgc3ViOiB0cnVlLCBmbGlwWTogdHJ1ZSwgdG9wQ29s
b3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAorICAgICAgICAgICAgeyBz
dWI6IHRydWUsIGZsaXBZOiBmYWxzZSwgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9y
OiByZWRDb2xvciB9LAorICAgICAgICBdOworCisgICAgICAgIHZhciBwcm9ncmFtID0gdGl1LnNl
dHVwVGV4dHVyZWRRdWFkV2l0aDNEKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIGZvciAo
dmFyIGkgaW4gY2FzZXMpIHsKKyAgICAgICAgICAgIHJ1bk9uZUl0ZXJhdGlvbihpbWFnZSwgY2Fz
ZXNbaV0uc3ViLCBjYXNlc1tpXS5mbGlwWSwgZ2wuVEVYVFVSRV8zRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlc1tpXS50b3BDb2xvciwgY2FzZXNbaV0uYm90dG9tQ29sb3IsIHBy
b2dyYW0pOworICAgICAgICB9CisgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1
YWRXaXRoMkRBcnJheShnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBmb3IgKHZhciBpIGlu
IGNhc2VzKSB7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIGNhc2VzW2ldLnN1
YiwgY2FzZXNbaV0uZmxpcFksIGdsLlRFWFRVUkVfMkRfQVJSQVksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZXNbaV0udG9wQ29sb3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLCBwcm9n
cmFtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blJlZEdyZWVuQmx1ZUN5
YW5UZXN0KGltYWdlKSB7CisgICAgICAgIGZ1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbihpbWFnZSwg
dXNlVGV4U3ViSW1hZ2UzRCwgZmxpcFksIGJpbmRpbmdUYXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXB0aCwgc291cmNlU3ViUmVjdGFuZ2xlLCB1bnBhY2tJbWFnZUhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJUZXh0dXJlQ29vcmQsIHRv
cENvbG9yLCBib3R0b21Db2xvciwgcHJvZ3JhbSkKKyAgICAgICAgeworICAgICAgICAgICAgc291
cmNlU3ViUmVjdGFuZ2xlU3RyaW5nID0gJyc7CisgICAgICAgICAgICBpZiAoc291cmNlU3ViUmVj
dGFuZ2xlKSB7CisgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlU3RyaW5nID0gJyBz
b3VyY2VTdWJSZWN0YW5nbGU9JyArIHNvdXJjZVN1YlJlY3RhbmdsZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHVucGFja0ltYWdlSGVpZ2h0U3RyaW5nID0gJyc7CisgICAgICAgICAgICBp
ZiAodW5wYWNrSW1hZ2VIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICB1bnBhY2tJbWFnZUhlaWdo
dFN0cmluZyA9ICcgdW5wYWNrSW1hZ2VIZWlnaHQ9JyArIHVucGFja0ltYWdlSGVpZ2h0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGVidWcoJ1Rlc3RpbmcgJyArICh1c2VUZXhTdWJJbWFn
ZTNEID8gJ3RleFN1YkltYWdlM0QnIDogJ3RleEltYWdlM0QnKSArCisgICAgICAgICAgICAgICAg
ICAnIHdpdGggZmxpcFk9JyArIGZsaXBZICsgJyBiaW5kaW5nVGFyZ2V0PScgKworICAgICAgICAg
ICAgICAgICAgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8zRCA/ICdURVhUVVJFXzNEJyA6
ICdURVhUVVJFXzJEX0FSUkFZJykgKworICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVjdGFu
Z2xlU3RyaW5nICsgJyBkZXB0aD0nICsgZGVwdGggKyB1bnBhY2tJbWFnZUhlaWdodFN0cmluZyAr
CisgICAgICAgICAgICAgICAgICAnIHJUZXh0dXJlQ29vcmQ9JyArIHJUZXh0dXJlQ29vcmQpOwor
CisgICAgICAgICAgICB1cGxvYWRJbWFnZVRvVGV4dHVyZShpbWFnZSwgdXNlVGV4U3ViSW1hZ2Uz
RCwgZmxpcFksIGJpbmRpbmdUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aCwgc291cmNlU3ViUmVjdGFuZ2xlLCB1bnBhY2tJbWFnZUhlaWdodCk7CisgICAgICAg
ICAgICB2YXIgckNvb3JkTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
J3VSQ29vcmQnKTsKKyAgICAgICAgICAgIGlmICghckNvb3JkTG9jYXRpb24pIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdTaGFkZXIgaW5jb3JyZWN0bHkgc2V0IHVwOyBjb3VsZG5cJ3Qg
ZmluZCB1UkNvb3JkIHVuaWZvcm0nKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBnbC51bmlmb3JtMWYockNvb3JkTG9jYXRpb24sIHJUZXh0dXJl
Q29vcmQpOworCisgICAgICAgICAgICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgICAg
IHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworICAgICAgICAg
ICAgLy8gQ2hlY2sgYSBmZXcgcGl4ZWxzIG5lYXIgdGhlIHRvcCBhbmQgYm90dG9tIGFuZCBtYWtl
IHN1cmUgdGhleSBoYXZlCisgICAgICAgICAgICAvLyB0aGUgcmlnaHQgY29sb3IuCisgICAgICAg
ICAgICBkZWJ1ZygiQ2hlY2tpbmcgbG93ZXIgbGVmdCBjb3JuZXIiKTsKKyAgICAgICAgICAgIHd0
dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDQsIDQsIDIsIDIsIGJvdHRvbUNvbG9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIGJvdHRvbUNvbG9yKTsKKyAgICAg
ICAgICAgIGRlYnVnKCJDaGVja2luZyB1cHBlciBsZWZ0IGNvcm5lciIpOworICAgICAgICAgICAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgZ2wuY2FudmFzLmhlaWdodCAtIDgsIDIsIDIsIHRv
cENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIHRv
cENvbG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjYXNlcyA9IFsKKyAgICAgICAgICAg
IC8vIE5vIFVOUEFDS19JTUFHRV9IRUlHSFQgc3BlY2lmaWVkLgorICAgICAgICAgICAgeyBmbGlw
WTogZmFsc2UsIHNvdXJjZVN1YlJlY3RhbmdsZTogWzAsIDAsIDIsIDJdLCBkZXB0aDogMiwgclRl
eHR1cmVDb29yZDogMC4wLAorICAgICAgICAgICAgICB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRv
bUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICAgICAgeyBmbGlwWTogZmFsc2UsIHNvdXJjZVN1
YlJlY3RhbmdsZTogWzAsIDAsIDIsIDJdLCBkZXB0aDogMiwgclRleHR1cmVDb29yZDogMS4wLAor
ICAgICAgICAgICAgICB0b3BDb2xvcjogYmx1ZUNvbG9yLCBib3R0b21Db2xvcjogYmx1ZUNvbG9y
IH0sCisgICAgICAgICAgICB7IGZsaXBZOiB0cnVlLCBzb3VyY2VTdWJSZWN0YW5nbGU6IFswLCAw
LCAyLCAyXSwgZGVwdGg6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCwKKyAgICAgICAgICAgICAgdG9w
Q29sb3I6IGJsdWVDb2xvciwgYm90dG9tQ29sb3I6IGJsdWVDb2xvciB9LAorICAgICAgICAgICAg
eyBmbGlwWTogdHJ1ZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMCwgMCwgMiwgMl0sIGRlcHRoOiAy
LCByVGV4dHVyZUNvb3JkOiAxLjAsCisgICAgICAgICAgICAgIHRvcENvbG9yOiByZWRDb2xvciwg
Ym90dG9tQ29sb3I6IHJlZENvbG9yIH0sCisgICAgICAgICAgICB7IGZsaXBZOiBmYWxzZSwgc291
cmNlU3ViUmVjdGFuZ2xlOiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVyZUNvb3JkOiAw
LjAsCisgICAgICAgICAgICAgIHRvcENvbG9yOiBncmVlbkNvbG9yLCBib3R0b21Db2xvcjogZ3Jl
ZW5Db2xvciB9LAorICAgICAgICAgICAgeyBmbGlwWTogZmFsc2UsIHNvdXJjZVN1YlJlY3Rhbmds
ZTogWzIsIDAsIDIsIDJdLCBkZXB0aDogMiwgclRleHR1cmVDb29yZDogMS4wLAorICAgICAgICAg
ICAgICB0b3BDb2xvcjogY3lhbkNvbG9yLCBib3R0b21Db2xvcjogY3lhbkNvbG9yIH0sCisgICAg
ICAgICAgICB7IGZsaXBZOiB0cnVlLCBzb3VyY2VTdWJSZWN0YW5nbGU6IFsyLCAwLCAyLCAyXSwg
ZGVwdGg6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IGN5
YW5Db2xvciwgYm90dG9tQ29sb3I6IGN5YW5Db2xvciB9LAorICAgICAgICAgICAgeyBmbGlwWTog
dHJ1ZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMiwgMCwgMiwgMl0sIGRlcHRoOiAyLCByVGV4dHVy
ZUNvb3JkOiAxLjAsCisgICAgICAgICAgICAgIHRvcENvbG9yOiBncmVlbkNvbG9yLCBib3R0b21D
b2xvcjogZ3JlZW5Db2xvciB9LAorCisgICAgICAgICAgICAvLyBVc2UgVU5QQUNLX0lNQUdFX0hF
SUdIVCB0byBza2lwIHNvbWUgcGl4ZWxzLgorICAgICAgICAgICAgeyBmbGlwWTogZmFsc2UsIHNv
dXJjZVN1YlJlY3RhbmdsZTogWzAsIDAsIDEsIDFdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWln
aHQ6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IHJlZENv
bG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgZmxpcFk6IGZhbHNl
LCBzb3VyY2VTdWJSZWN0YW5nbGU6IFswLCAwLCAxLCAxXSwgZGVwdGg6IDIsIHVucGFja0ltYWdl
SGVpZ2h0OiAyLCByVGV4dHVyZUNvb3JkOiAxLjAsCisgICAgICAgICAgICAgIHRvcENvbG9yOiBi
bHVlQ29sb3IsIGJvdHRvbUNvbG9yOiBibHVlQ29sb3IgfSwKKyAgICAgICAgICAgIHsgZmxpcFk6
IHRydWUsIHNvdXJjZVN1YlJlY3RhbmdsZTogWzAsIDAsIDEsIDFdLCBkZXB0aDogMiwgdW5wYWNr
SW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCwKKyAgICAgICAgICAgICAgdG9wQ29s
b3I6IGJsdWVDb2xvciwgYm90dG9tQ29sb3I6IGJsdWVDb2xvciB9LAorICAgICAgICAgICAgeyBm
bGlwWTogdHJ1ZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMCwgMCwgMSwgMV0sIGRlcHRoOiAyLCB1
bnBhY2tJbWFnZUhlaWdodDogMiwgclRleHR1cmVDb29yZDogMS4wLAorICAgICAgICAgICAgICB0
b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICAgICAg
eyBmbGlwWTogZmFsc2UsIHNvdXJjZVN1YlJlY3RhbmdsZTogWzIsIDAsIDEsIDFdLCBkZXB0aDog
MiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJlQ29vcmQ6IDAuMCwKKyAgICAgICAgICAg
ICAgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yIH0sCisgICAg
ICAgICAgICB7IGZsaXBZOiBmYWxzZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMiwgMCwgMSwgMV0s
IGRlcHRoOiAyLCB1bnBhY2tJbWFnZUhlaWdodDogMiwgclRleHR1cmVDb29yZDogMS4wLAorICAg
ICAgICAgICAgICB0b3BDb2xvcjogY3lhbkNvbG9yLCBib3R0b21Db2xvcjogY3lhbkNvbG9yIH0s
CisgICAgICAgICAgICB7IGZsaXBZOiB0cnVlLCBzb3VyY2VTdWJSZWN0YW5nbGU6IFsyLCAwLCAx
LCAxXSwgZGVwdGg6IDIsIHVucGFja0ltYWdlSGVpZ2h0OiAyLCByVGV4dHVyZUNvb3JkOiAwLjAs
CisgICAgICAgICAgICAgIHRvcENvbG9yOiBjeWFuQ29sb3IsIGJvdHRvbUNvbG9yOiBjeWFuQ29s
b3IgfSwKKyAgICAgICAgICAgIHsgZmxpcFk6IHRydWUsIHNvdXJjZVN1YlJlY3RhbmdsZTogWzIs
IDAsIDEsIDFdLCBkZXB0aDogMiwgdW5wYWNrSW1hZ2VIZWlnaHQ6IDIsIHJUZXh0dXJlQ29vcmQ6
IDEuMCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiBn
cmVlbkNvbG9yIH0sCisgICAgICAgIF07CisKKyAgICAgICAgdmFyIHByb2dyYW0gPSB0aXUuc2V0
dXBUZXh0dXJlZFF1YWRXaXRoM0QoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgZm9yICh2
YXIgaSBpbiBjYXNlcykgeworICAgICAgICAgICAgcnVuT25lSXRlcmF0aW9uKGltYWdlLCBmYWxz
ZSwgY2FzZXNbaV0uZmxpcFksIGdsLlRFWFRVUkVfM0QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZXNbaV0uZGVwdGgsIGNhc2VzW2ldLnNvdXJjZVN1YlJlY3RhbmdsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS51bnBhY2tJbWFnZUhlaWdodCwgY2FzZXNb
aV0uclRleHR1cmVDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS50
b3BDb2xvciwgY2FzZXNbaV0uYm90dG9tQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3JhbSk7CisgICAgICAgICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIHRydWUsIGNh
c2VzW2ldLmZsaXBZLCBnbC5URVhUVVJFXzNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2VzW2ldLmRlcHRoLCBjYXNlc1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZXNbaV0udW5wYWNrSW1hZ2VIZWlnaHQsIGNhc2VzW2ldLnJU
ZXh0dXJlQ29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0udG9wQ29s
b3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0pOworICAgICAgICB9CisKKyAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVk
UXVhZFdpdGgyREFycmF5KGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgIGZvciAodmFyIGkg
aW4gY2FzZXMpIHsKKyAgICAgICAgICAgIHJ1bk9uZUl0ZXJhdGlvbihpbWFnZSwgZmFsc2UsIGNh
c2VzW2ldLmZsaXBZLCBnbC5URVhUVVJFXzJEX0FSUkFZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2VzW2ldLmRlcHRoLCBjYXNlc1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0udW5wYWNrSW1hZ2VIZWlnaHQsIGNhc2Vz
W2ldLnJUZXh0dXJlQ29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0u
dG9wQ29sb3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2dyYW0pOworICAgICAgICAgICAgcnVuT25lSXRlcmF0aW9uKGltYWdlLCB0cnVlLCBj
YXNlc1tpXS5mbGlwWSwgZ2wuVEVYVFVSRV8yRF9BUlJBWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlc1tpXS5kZXB0aCwgY2FzZXNbaV0uc291cmNlU3ViUmVjdGFuZ2xlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLnVucGFja0ltYWdlSGVpZ2h0LCBjYXNl
c1tpXS5yVGV4dHVyZUNvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ld
LnRvcENvbG9yLCBjYXNlc1tpXS5ib3R0b21Db2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
aW1hZ2VNYXApCisgICAgeworICAgICAgICBydW5SZWRHcmVlblRlc3QoaW1hZ2VNYXBbaW1hZ2VV
UkxzWzBdXSk7CisgICAgICAgIHJ1blJlZEdyZWVuQmx1ZUN5YW5UZXN0KGltYWdlTWFwW2ltYWdl
VVJMc1sxXV0pOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
InNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKwor
ICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC1zdmctaW1hZ2UuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXN2Zy1pbWFn
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wOWExMDhkZWU4ODVjMWE1NWQ5Y2I0ZmUyZGUwMjgyZjJjZTM3ZDhk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC1zdmctaW1h
Z2UuanMKQEAgLTAsMCArMSwxMDQgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZv
cm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZl
cnNpb24pIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRl
eEltYWdlVXRpbHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gZmFsc2U7CisgICAgdmFyIGltZ0NhbnZhczsKKyAgICB2YXIgcmVkQ29sb3IgPSBbMjU1
LCAwLCAwXTsKKyAgICB2YXIgZ3JlZW5Db2xvciA9IFswLCAyNTUsIDBdOworCisgICAgZnVuY3Rp
b24gaW5pdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleEltYWdlM0Qg
YW5kIHRleFN1YkltYWdlM0QgY29kZSBwYXRocyB0YWtpbmcgU1ZHIGltYWdlIGVsZW1lbnRzICgn
ICsgaW50ZXJuYWxGb3JtYXQgKyAnLycgKyBwaXhlbEZvcm1hdCArICcvJyArIHBpeGVsVHlwZSAr
ICcpJyk7CisKKyAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGNvbnRleHQgdmVyc2lvbiB3aGls
ZSBzdGlsbCBhbGxvd2luZyB0aGUgd2ViZ2xWZXJzaW9uIFVSTCBxdWVyeSBzdHJpbmcgdG8gb3Zl
cnJpZGUgaXQuCisgICAgICAgIHd0dS5zZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbihkZWZhdWx0
Q29udGV4dFZlcnNpb24pOworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1w
bGUiKTsKKworICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNo
IChnbFtwaXhlbEZvcm1hdF0pIHsKKyAgICAgICAgICBjYXNlIGdsLlJFRDoKKyAgICAgICAgICBj
YXNlIGdsLlJFRF9JTlRFR0VSOgorICAgICAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAg
IGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgd3R1LmxvYWRUZXh0dXJlKGdsLCByZXNvdXJj
ZVBhdGggKyAicmVkLWdyZWVuLnN2ZyIsIHJ1blRlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1bk9uZUl0ZXJhdGlvbihpbWFnZSwgZmxpcFksIHRvcENvbG9yLCBib3R0b21Db2xvciwgYmlu
ZGluZ1RhcmdldCwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nICcgKyAn
IHdpdGggZmxpcFk9JyArIGZsaXBZICsgJyBiaW5kaW5nVGFyZ2V0PScgKworICAgICAgICAgICAg
ICAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RFWFRV
UkVfMkRfQVJSQVknKSk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgLy8gRGlzYWJsZSBhbnkgd3JpdGVzIHRvIHRo
ZSBhbHBoYSBjaGFubmVsCisgICAgICAgIGdsLmNvbG9yTWFzaygxLCAxLCAxLCAwKTsKKyAgICAg
ICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIC8vIEJpbmQgdGhl
IHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoYmluZGlu
Z1RhcmdldCwgdGV4dHVyZSk7CisgICAgICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMK
KyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01JTl9G
SUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJn
ZXQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIC8vIFNldCB1
cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFD
S19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisgICAgICAgIHd0dS5mYWlsSWZHTEVy
cm9yKGdsLCAnZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9X
RUJHTCwgZ2wuTk9ORSk7Jyk7CisgICAgICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2UgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0
CisgICAgICAgIGdsLnRleEltYWdlM0QoYmluZGluZ1RhcmdldCwgMCwgZ2xbaW50ZXJuYWxGb3Jt
YXRdLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0LCAxIC8qIGRlcHRoICovLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7Cisg
ICAgICAgIGdsLnRleFN1YkltYWdlM0QoYmluZGluZ1RhcmdldCwgMCwgMCwgMCwgMCwgaW1hZ2Uu
d2lkdGgsIGltYWdlLmhlaWdodCwgMSAvKiBkZXB0aCAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGltYWdlKTsKKworICAgICAgICAv
LyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
LCBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgIC8vIENoZWNrIGEgZmV3IHBpeGVscyBuZWFyIHRo
ZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZQorICAgICAgICAvLyB0aGUg
cmlnaHQgY29sb3IuCisgICAgICAgIGRlYnVnKCJDaGVja2luZyBsb3dlciBsZWZ0IGNvcm5lciIp
OworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCA0LCAyLCAyLCBib3R0b21Db2xv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIGJvdHRvbUNvbG9y
KTsKKyAgICAgICAgZGVidWcoIkNoZWNraW5nIHVwcGVyIGxlZnQgY29ybmVyIik7CisgICAgICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDQsIGdsLmNhbnZhcy5oZWlnaHQgLSA4LCAyLCAyLCB0
b3BDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIHRvcENv
bG9yKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KGltYWdlKQorICAgIHsKKyAgICAg
ICAgdmFyIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRXaXRoM0QoZ2wsIGludGVybmFs
Rm9ybWF0KTsKKyAgICAgICAgcnVuVGVzdE9uQmluZGluZ1RhcmdldChpbWFnZSwgZ2wuVEVYVFVS
RV8zRCwgcHJvZ3JhbSk7CisgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRX
aXRoMkRBcnJheShnbCwgaW50ZXJuYWxGb3JtYXQpOworICAgICAgICBydW5UZXN0T25CaW5kaW5n
VGFyZ2V0KGltYWdlLCBnbC5URVhUVVJFXzJEX0FSUkFZLCBwcm9ncmFtKTsKKworICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInNob3VsZCBiZSBubyBlcnJvcnMi
KTsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3RP
bkJpbmRpbmdUYXJnZXQoaW1hZ2UsIGJpbmRpbmdUYXJnZXQsIHByb2dyYW0pIHsKKyAgICAgICAg
dmFyIGNhc2VzID0gWworICAgICAgICAgICAgeyBmbGlwWTogdHJ1ZSwgdG9wQ29sb3I6IHJlZENv
bG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAorICAgICAgICAgICAgeyBmbGlwWTogZmFs
c2UsIHRvcENvbG9yOiBncmVlbkNvbG9yLCBib3R0b21Db2xvcjogcmVkQ29sb3IgfSwKKyAgICAg
ICAgXTsKKyAgICAgICAgZm9yICh2YXIgaSBpbiBjYXNlcykgeworICAgICAgICAgICAgcnVuT25l
SXRlcmF0aW9uKGltYWdlLCBjYXNlc1tpXS5mbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlc1tpXS50b3BDb2xvciwgY2FzZXNbaV0uYm90dG9tQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmluZGluZ1RhcmdldCwgcHJvZ3JhbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gaW5pdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTNkLXdpdGgtdmlkZW8uanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVv
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjMmM0MGU4YTViZjIwMDY2ZWIwMzE2NmYxNGZhZTdhOTMzZmViMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXZpZGVvLmpz
CkBAIC0wLDAgKzEsMjQ0IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4K
KyovCisKKy8vIFRoaXMgYmxvY2sgbmVlZHMgdG8gYmUgb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRs
ZXIgaW4gb3JkZXIgZm9yIHRoaXMKKy8vIHRlc3QgdG8gcnVuIHJlbGlhYmx5IGluIFdlYktpdCdz
IHRlc3QgaGFybmVzcyAoYXQgbGVhc3QgdGhlCisvLyBDaHJvbWl1bSBwb3J0KS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDQ4Citpbml0VGVzdGluZ0hhcm5lc3Mo
KTsKKwordmFyIG9sZCA9IGRlYnVnOwordmFyIGRlYnVnID0gZnVuY3Rpb24obXNnKSB7CisgIGJ1
ZmZlcmVkTG9nVG9Db25zb2xlKG1zZyk7CisgIG9sZChtc2cpOworfTsKKworZnVuY3Rpb24gZ2Vu
ZXJhdGVUZXN0KGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1
ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGds
ID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFyIHJl
ZENvbG9yID0gWzI1NSwgMCwgMF07CisgICAgdmFyIGdyZWVuQ29sb3IgPSBbMCwgMjU1LCAwXTsK
KworICAgIC8vIFRlc3QgZWFjaCBmb3JtYXQgc2VwYXJhdGVseSBiZWNhdXNlIG1hbnkgYnJvd3Nl
cnMgaW1wbGVtZW50IGVhY2gKKyAgICAvLyBkaWZmZXJlbnRseS4gU29tZSBtaWdodCBiZSBHUFUg
YWNjZWxlcmF0ZWQsIHNvbWUgbWlnaHQgbm90LiBFdGMuLi4KKyAgICB2YXIgdmlkZW9zID0gWwor
ICAgICAgeyBzcmM6IHJlc291cmNlUGF0aCArICJyZWQtZ3JlZW4ubXA0IiAgICAgICAgICwgdHlw
ZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSwgbXA0YS40MC4yIicsIH0sCisgICAg
ICB7IHNyYzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi5idDYwMS52cDkud2VibSIsIHR5cGU6
ICd2aWRlby93ZWJtOyBjb2RlY3M9InZwOSInLCAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
eyBzcmM6IHJlc291cmNlUGF0aCArICJyZWQtZ3JlZW4ud2VibXZwOC53ZWJtIiwgdHlwZTogJ3Zp
ZGVvL3dlYm07IGNvZGVjcz0idnA4LCB2b3JiaXMiJywgICAgICAgICAgIH0sCisgICAgICB7IHNy
YzogcmVzb3VyY2VQYXRoICsgInJlZC1ncmVlbi50aGVvcmEub2d2IiwgICB0eXBlOiAndmlkZW8v
b2dnOyBjb2RlY3M9InRoZW9yYSwgdm9yYmlzIicsICAgICAgICAgfSwKKyAgICBdOworCisgICAg
ZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleElt
YWdlM0QgYW5kIHRleFN1YkltYWdlM0QgY29kZSBwYXRocyB0YWtpbmcgdmlkZW8gZWxlbWVudHMg
KCcgKyBpbnRlcm5hbEZvcm1hdCArICcvJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBl
ICsgJyknKTsKKworICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgY29udGV4dCB2ZXJzaW9uIHdo
aWxlIHN0aWxsIGFsbG93aW5nIHRoZSB3ZWJnbFZlcnNpb24gVVJMIHF1ZXJ5IHN0cmluZyB0byBv
dmVycmlkZSBpdC4KKyAgICAgICAgd3R1LnNldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKGRlZmF1
bHRDb250ZXh0VmVyc2lvbik7CisgICAgICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgiZXhh
bXBsZSIpOworCisgICAgICAgIGlmICghcHJvbG9ndWUoZ2wpKSB7CisgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzd2l0
Y2ggKGdsW3BpeGVsRm9ybWF0XSkgeworICAgICAgICAgIGNhc2UgZ2wuUkVEOgorICAgICAgICAg
IGNhc2UgZ2wuUkVEX0lOVEVHRVI6CisgICAgICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBd
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICAg
ICAgZ2wuY2xlYXJEZXB0aCgxKTsKKworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uKHZpZGVvRWxlbWVudCwgZmxpcFksIHVzZVRleFN1Yklt
YWdlM0QsIHRvcENvbG9yLCBib3R0b21Db2xvciwgcHJvZ3JhbSwgYmluZGluZ1RhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIHNvdXJjZVN1YlJlY3RhbmdsZSwgdW5w
YWNrSW1hZ2VIZWlnaHQsIHJUZXh0dXJlQ29vcmQpCisgICAgeworICAgICAgICBkZWJ1ZygnVGVz
dGluZyAnICsKKyAgICAgICAgICAgICAgKHVzZVRleFN1YkltYWdlM0QgPyAidGV4U3ViSW1hZ2Uz
RCIgOiAidGV4SW1hZ2UzRCIpICsKKyAgICAgICAgICAgICAgJyB3aXRoIGZsaXBZPScgKyBmbGlw
WSArICcgYmluZGluZ1RhcmdldD0nICsKKyAgICAgICAgICAgICAgKGJpbmRpbmdUYXJnZXQgPT0g
Z2wuVEVYVFVSRV8zRCA/ICdURVhUVVJFXzNEJyA6ICdURVhUVVJFXzJEX0FSUkFZJykgKworICAg
ICAgICAgICAgICAoc291cmNlU3ViUmVjdGFuZ2xlID8gJywgc291cmNlU3ViUmVjdGFuZ2xlPScg
KyBzb3VyY2VTdWJSZWN0YW5nbGUgOiAnJykgKworICAgICAgICAgICAgICAodW5wYWNrSW1hZ2VI
ZWlnaHQgPyAnLCB1bnBhY2tJbWFnZUhlaWdodD0nICsgdW5wYWNrSW1hZ2VIZWlnaHQgOiAnJykg
KworICAgICAgICAgICAgICAnLCBkZXB0aD0nICsgZGVwdGggKworICAgICAgICAgICAgICAnLCBy
VGV4dHVyZUNvb3JkPScgKyByVGV4dHVyZUNvb3JkKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICAvLyBEaXNhYmxl
IGFueSB3cml0ZXMgdG8gdGhlIGFscGhhIGNoYW5uZWwKKyAgICAgICAgZ2wuY29sb3JNYXNrKDEs
IDEsIDEsIDApOworICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0ZXh0dXJlIHVuaXQgMAorICAgICAgICBnbC5i
aW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICAgICAgLy8gU2V0IHVwIHRl
eHR1cmUgcGFyYW1ldGVycworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBf
UiwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1Rh
cmdldCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMKKyAgICAg
ICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgZmxpcFkpOworICAgICAg
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIGZhbHNl
KTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lP
Tl9XRUJHTCwgZ2wuTk9ORSk7CisgICAgICAgIHZhciB1cGxvYWRXaWR0aCA9IHZpZGVvRWxlbWVu
dC53aWR0aDsKKyAgICAgICAgdmFyIHVwbG9hZEhlaWdodCA9IHZpZGVvRWxlbWVudC5oZWlnaHQ7
CisgICAgICAgIGlmIChzb3VyY2VTdWJSZWN0YW5nbGUpIHsKKyAgICAgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywgc291cmNlU3ViUmVjdGFuZ2xlWzBdKTsKKyAg
ICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIHNvdXJjZVN1YlJl
Y3RhbmdsZVsxXSk7CisgICAgICAgICAgICB1cGxvYWRXaWR0aCA9IHNvdXJjZVN1YlJlY3Rhbmds
ZVsyXTsKKyAgICAgICAgICAgIHVwbG9hZEhlaWdodCA9IHNvdXJjZVN1YlJlY3RhbmdsZVszXTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodW5wYWNrSW1hZ2VIZWlnaHQpIHsKKyAgICAgICAgICAg
IGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19JTUFHRV9IRUlHSFQsIHVucGFja0ltYWdlSGVpZ2h0
KTsKKyAgICAgICAgfQorICAgICAgICAvLyBVcGxvYWQgdGhlIHZpZGVvRWxlbWVudCBpbnRvIHRo
ZSB0ZXh0dXJlCisgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZTNEKSB7CisgICAgICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAgICBnbC50
ZXhJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwgZGVwdGgsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwg
bnVsbCk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIDAs
IDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZFdpZHRoLCB1cGxvYWRI
ZWlnaHQsIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1h
dF0sIGdsW3BpeGVsVHlwZV0sIHZpZGVvRWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkV2lkdGgsIHVwbG9hZEhlaWdodCwg
ZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xb
cGl4ZWxUeXBlXSwgdmlkZW9FbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICBnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIDApOworICAgICAgICBnbC5waXhlbFN0b3JlaShn
bC5VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNL
X0lNQUdFX0hFSUdIVCwgMCk7CisKKyAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKKyAgICAgICAgYy53aWR0aCA9IDE2OworICAgICAgICBjLmhlaWdodCA9
IDE2OworICAgICAgICBjLnN0eWxlLmJvcmRlciA9ICIxcHggc29saWQgYmxhY2siOworICAgICAg
ICB2YXIgY3R4ID0gYy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBjdHguZHJhd0ltYWdlKHZp
ZGVvRWxlbWVudCwgMCwgMCwgMTYsIDE2KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChjKTsKKworICAgICAgICB2YXIgckNvb3JkTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgJ3VSQ29vcmQnKTsKKyAgICAgICAgaWYgKCFyQ29vcmRMb2NhdGlvbikg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgnU2hhZGVyIGluY29ycmVjdGx5IHNldCB1cDsgY291
bGRuXCd0IGZpbmQgdVJDb29yZCB1bmlmb3JtJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZ2wudW5pZm9ybTFmKHJDb29yZExvY2F0aW9uLCByVGV4dHVyZUNvb3Jk
KTsKKworICAgICAgICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgd3R1LmNsZWFyQW5k
RHJhd1VuaXRRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgIC8vIENoZWNrIGEgZmV3
IHBpeGVscyBuZWFyIHRoZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZQor
ICAgICAgICAvLyB0aGUgcmlnaHQgY29sb3IuCisgICAgICAgIGNvbnN0IHRvbGVyYW5jZSA9IDY7
CisgICAgICAgIGRlYnVnKCJDaGVja2luZyBsb3dlciBsZWZ0IGNvcm5lciIpOworICAgICAgICB3
dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCA0LCAyLCAyLCBib3R0b21Db2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIGJvdHRvbUNvbG9yLCB0b2xlcmFuY2Up
OworICAgICAgICBkZWJ1ZygiQ2hlY2tpbmcgdXBwZXIgbGVmdCBjb3JuZXIiKTsKKyAgICAgICAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgZ2wuY2FudmFzLmhlaWdodCAtIDgsIDIsIDIsIHRv
cENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRCZSAiICsgdG9wQ29s
b3IsIHRvbGVyYW5jZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCh2aWRlb0VsZW1l
bnQpCisgICAgeworICAgICAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgICAgICAvLyBObyBVTlBB
Q0tfSU1BR0VfSEVJR0hUIHNwZWNpZmllZC4KKyAgICAgICAgICAgIHsgZmxpcFk6IGZhbHNlLCBz
b3VyY2VTdWJSZWN0YW5nbGU6IFszMiwgMTYsIDE2LCAxNl0sIGRlcHRoOiA1LCByVGV4dHVyZUNv
b3JkOiAwLAorICAgICAgICAgICAgICB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRvbUNvbG9yOiBy
ZWRDb2xvciB9LAorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGFuIHJUZXh0dXJlQ29vcmQgb2Yg
NC4wIHNhdGlzZmllcyB0aGUgbmVlZCB0bworICAgICAgICAgICAgLy8gaGF2ZSBpdCBiZSA+PSAx
LjAgZm9yIHRoZSBURVhUVVJFXzNEIGNhc2UsIGFuZCBhbHNvIGl0cworICAgICAgICAgICAgLy8g
dXNlIGFzIGFuIGluZGV4IGluIHRoZSBURVhUVVJFXzJEX0FSUkFZIGNhc2UuCisgICAgICAgICAg
ICB7IGZsaXBZOiBmYWxzZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMzIsIDE2LCAxNiwgMTZdLCBk
ZXB0aDogNSwgclRleHR1cmVDb29yZDogNCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IGdyZWVu
Q29sb3IsIGJvdHRvbUNvbG9yOiBncmVlbkNvbG9yIH0sCisgICAgICAgICAgICB7IGZsaXBZOiBm
YWxzZSwgc291cmNlU3ViUmVjdGFuZ2xlOiBbMjQsIDQ4LCAzMiwgMzJdLCBkZXB0aDogMSwgclRl
eHR1cmVDb29yZDogMCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRv
bUNvbG9yOiByZWRDb2xvciB9LAorICAgICAgICAgICAgeyBmbGlwWTogdHJ1ZSwgc291cmNlU3Vi
UmVjdGFuZ2xlOiBbMjQsIDQ4LCAzMiwgMzJdLCBkZXB0aDogMSwgclRleHR1cmVDb29yZDogMCwK
KyAgICAgICAgICAgICAgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21Db2xvcjogZ3JlZW5Db2xv
ciB9LAorCisgICAgICAgICAgICAvLyBVc2UgVU5QQUNLX0lNQUdFX0hFSUdIVCB0byBza2lwIHNv
bWUgcGl4ZWxzLgorICAgICAgICAgICAgeyBmbGlwWTogZmFsc2UsIHNvdXJjZVN1YlJlY3Rhbmds
ZTogWzMyLCAxNiwgMTYsIDE2XSwgZGVwdGg6IDIsIHVucGFja0ltYWdlSGVpZ2h0OiA2NCwgclRl
eHR1cmVDb29yZDogMCwKKyAgICAgICAgICAgICAgdG9wQ29sb3I6IHJlZENvbG9yLCBib3R0b21D
b2xvcjogcmVkQ29sb3IgfSwKKyAgICAgICAgICAgIHsgZmxpcFk6IGZhbHNlLCBzb3VyY2VTdWJS
ZWN0YW5nbGU6IFszMiwgMTYsIDE2LCAxNl0sIGRlcHRoOiAyLCB1bnBhY2tJbWFnZUhlaWdodDog
NjQsIHJUZXh0dXJlQ29vcmQ6IDEsCisgICAgICAgICAgICAgIHRvcENvbG9yOiBncmVlbkNvbG9y
LCBib3R0b21Db2xvcjogZ3JlZW5Db2xvciB9LAorICAgICAgICBdOworCisgICAgICAgIGZ1bmN0
aW9uIHJ1blRleEltYWdlVGVzdChiaW5kaW5nVGFyZ2V0KSB7CisgICAgICAgICAgICB2YXIgcHJv
Z3JhbTsKKyAgICAgICAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfM0QpIHsK
KyAgICAgICAgICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRRdWFkV2l0aDNEKGds
LCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRXaXRoMkRBcnJheShnbCwgaW50ZXJuYWxG
b3JtYXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHZpZGVvTmR4
ID0gMDsKKyAgICAgICAgICAgICAgICB2YXIgdmlkZW87CisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gcnVuTmV4dFZpZGVvKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW8pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9OZHggPT0gdmlkZW9zLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgiU1VDQ0VTUyIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGluZm8gPSB2aWRlb3NbdmlkZW9OZHgrK107CisgICAgICAgICAgICAg
ICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoInRlc3Rpbmc6ICIg
KyBpbmZvLnR5cGUpOworICAgICAgICAgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLm11dGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNhblBsYXkgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXZpZGVvLmNhblBsYXlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgidmlkZW8uY2FuUGxheVR5cGUgcmVxdWlyZWQgbWV0aG9kIG1pc3NpbmciKTsK
KyAgICAgICAgICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICBpZighdmlkZW8uY2FuUGxheVR5cGUoaW5mby50eXBlKS5yZXBsYWNlKC9uby8sICcnKSkgewor
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGluZm8udHlwZSArICIgdW5zdXBwb3J0ZWQiKTsK
KyAgICAgICAgICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbyk7CisgICAgICAgICAgICAgICAgICAg
IHZpZGVvLnR5cGUgPSBpbmZvLnR5cGU7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9
IGluZm8uc3JjOworICAgICAgICAgICAgICAgICAgICB3dHUuc3RhcnRQbGF5aW5nQW5kV2FpdEZv
clZpZGVvKHZpZGVvLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBp
biBjYXNlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuT25lSXRlcmF0aW9uKHZpZGVv
LCBjYXNlc1tpXS5mbGlwWSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZXNbaV0udG9wQ29sb3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQs
IGNhc2VzW2ldLmRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2VzW2ldLnNvdXJjZVN1YlJlY3RhbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlc1tpXS51bnBhY2tJbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5yVGV4dHVyZUNvb3JkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1bk9uZUl0ZXJhdGlvbih2aWRlbywgY2FzZXNbaV0uZmxpcFks
IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZXNbaV0u
dG9wQ29sb3IsIGNhc2VzW2ldLmJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQsIGNhc2VzW2ldLmRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLnNvdXJjZVN1
YlJlY3RhbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
c1tpXS51bnBhY2tJbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlc1tpXS5yVGV4dHVyZUNvb3JkKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIHJ1blRleEltYWdlVGVzdChnbC5URVhUVVJFXzNEKS50aGVuKGZ1bmN0aW9u
KHZhbCkgeworICAgICAgICAgICAgcnVuVGV4SW1hZ2VUZXN0KGdsLlRFWFRVUkVfMkRfQVJSQVkp
LnRoZW4oZnVuY3Rpb24odmFsKSB7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qt
d2l0aC13ZWJnbC1jYW52YXMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0zZC13aXRoLXdlYmds
LWNhbnZhcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTE0YjBjOGViMDczMWNlMzMyZDcyYTRhZjFhY2RmMjQx
ZTVmYzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtM2Qtd2l0aC13
ZWJnbC1jYW52YXMuanMKQEAgLTAsMCArMSwyMTIgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNF
TlNFLnR4dCBmaWxlLgorKi8KKworZnVuY3Rpb24gZ2VuZXJhdGVUZXN0KGludGVybmFsRm9ybWF0
LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0
Q29udGV4dFZlcnNpb24pIHsKKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFy
IHRpdSA9IFRleEltYWdlVXRpbHM7CisgICAgdmFyIGdsID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gZmFsc2U7CisgICAgdmFyIHJlZENvbG9yID0gWzI1NSwgMCwgMF07Cisg
ICAgdmFyIGdyZWVuQ29sb3IgPSBbMCwgMjU1LCAwXTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQor
ICAgIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSB0ZXhJbWFnZTNEIGFuZCB0ZXhTdWJJ
bWFnZTNEIGNvZGUgcGF0aHMgdGFraW5nIHdlYmdsIGNhbnZhcyBlbGVtZW50cyAoJyArIGludGVy
bmFsRm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScpOwor
CisgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hpbGUgc3RpbGwg
YWxsb3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92ZXJyaWRlIGl0
LgorICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVsdENvbnRleHRW
ZXJzaW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisK
KyAgICAgICAgaWYgKCFwcm9sb2d1ZShnbCkpIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZ2xbcGl4
ZWxGb3JtYXRdKSB7CisgICAgICAgICAgY2FzZSBnbC5SRUQ6CisgICAgICAgICAgY2FzZSBnbC5S
RURfSU5URUdFUjoKKyAgICAgICAgICAgIGdyZWVuQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgICAgICBnbC5jbGVh
ckRlcHRoKDEpOworCisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
ZXRDYW52YXNUb1JlZEdyZWVuKGN0eCkgeworICAgICAgdmFyIHdpZHRoID0gY3R4LmNhbnZhcy53
aWR0aDsKKyAgICAgIHZhciBoZWlnaHQgPSBjdHguY2FudmFzLmhlaWdodDsKKyAgICAgIHZhciBo
YWxmSGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQgLyAyKTsKKworICAgICAgY3R4LnZpZXdwb3J0
KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgICBjdHguZW5hYmxlKGN0eC5TQ0lTU09SX1RF
U1QpOworICAgICAgY3R4LnNjaXNzb3IoMCwgMCwgd2lkdGgsIGhhbGZIZWlnaHQpOworICAgICAg
Y3R4LmNsZWFyQ29sb3IoMS4wLCAwLCAwLCAxLjApOworICAgICAgY3R4LmNsZWFyKGN0eC5DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICAgIGN0eC5zY2lzc29yKDAsIGhhbGZIZWlnaHQsIHdpZHRoLCBo
ZWlnaHQgLSBoYWxmSGVpZ2h0KTsKKyAgICAgIGN0eC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLCAx
LjApOworICAgICAgY3R4LmNsZWFyKGN0eC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgIGN0eC5k
aXNhYmxlKGN0eC5TQ0lTU09SX1RFU1QpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldENhbnZh
c1RvMjU3eDI1NyhjdHgsIGJpbmRpbmdUYXJnZXQpIHsKKyAgICAgIGN0eC5jYW52YXMud2lkdGgg
PSAyNTc7CisgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDI1NzsKKyAgICAgIHNldENhbnZhc1Rv
UmVkR3JlZW4oY3R4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRDYW52YXNUb01pbihjdHgs
IGJpbmRpbmdUYXJnZXQpIHsKKyAgICAgIGN0eC5jYW52YXMud2lkdGggPSAxOworICAgICAgY3R4
LmNhbnZhcy5oZWlnaHQgPSAyOworICAgICAgc2V0Q2FudmFzVG9SZWRHcmVlbihjdHgpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbihjYW52YXMsIGZsaXBZLCBwcm9ncmFt
LCBiaW5kaW5nVGFyZ2V0LCBvcHRfdGV4dHVyZSkKKyAgICB7CisgICAgICAgIHZhciBvYmpUeXBl
ID0gJ2NhbnZhcyc7CisgICAgICAgIGlmIChjYW52YXMudHJhbnNmZXJUb0ltYWdlQml0bWFwKQor
ICAgICAgICAgICAgb2JqVHlwZSA9ICdPZmZzY3JlZW5DYW52YXMnOworICAgICAgICBlbHNlIGlm
IChjYW52YXMucGFyZW50Tm9kZSkKKyAgICAgICAgICAgIG9ialR5cGUgPSAnY2FudmFzIGF0dGFj
aGVkIHRvIERPTSc7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGZsaXBZPScgKyBmbGlwWSArICcg
b2JqZWN0IHR5cGU6ICcgKyBvYmpUeXBlICsKKyAgICAgICAgICAgICAgJyBiaW5kaW5nVGFyZ2V0
PScgKyAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RF
WFRVUkVfMkRfQVJSQVknKSArCisgICAgICAgICAgICAgICcgY2FudmFzIHNpemU6ICcgKyBjYW52
YXMud2lkdGggKyAneCcgKyBjYW52YXMuaGVpZ2h0ICsgJyB3aXRoIHJlZC1ncmVlbicpOworCisg
ICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklU
KTsKKyAgICAgICAgaWYgKCFvcHRfdGV4dHVyZSkgeworICAgICAgICAgICAgdmFyIHRleHR1cmUg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRv
IHRleHR1cmUgdW5pdCAwCisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0
LCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIC8vIFNldCB1cCB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAg
ICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGlu
Z1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9XUkFQX1IsIGdsLkNM
QU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0
LCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gb3B0
X3RleHR1cmU7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0IHVwIHBpeGVsIHN0b3JlIHBhcmFt
ZXRlcnMKKyAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgZmxp
cFkpOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFf
V0VCR0wsIGZhbHNlKTsKKyAgICAgICAgd3R1LmZhaWxJZkdMRXJyb3IoZ2wsICdnbC5waXhlbFN0
b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsnKTsK
KworICAgICAgICAvLyBVcGxvYWQgdGhlIGltYWdlIGludG8gdGhlIHRleHR1cmUKKyAgICAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSB0byBibGFjayBmaXJzdAorICAgICAgICBnbC50ZXhJ
bWFnZTNEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0LCAxIC8qIGRlcHRoICovLCAwLAorICAgICAgICAgICAgICAgICAgICAg
IGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgIGdsLnRleFN1
YkltYWdlM0QoYmluZGluZ1RhcmdldCwgMCwgMCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0LCAxIC8qIGRlcHRoICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVs
Rm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgY2FudmFzKTsKKworICAgICAgICB2YXIgd2lkdGggPSBn
bC5jYW52YXMud2lkdGg7CisgICAgICAgIHZhciBoZWlnaHQgPSBnbC5jYW52YXMuaGVpZ2h0Owor
ICAgICAgICB2YXIgaGFsZkhlaWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0IC8gMik7CisgICAgICAg
IHZhciB0b3AgPSBmbGlwWSA/IChoZWlnaHQgLSBoYWxmSGVpZ2h0KSA6IDA7CisgICAgICAgIHZh
ciBib3R0b20gPSBmbGlwWSA/IDAgOiAoaGVpZ2h0IC0gaGFsZkhlaWdodCk7CisKKyAgICAgICAg
Ly8gRHJhdyB0aGUgdHJpYW5nbGVzCisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHRvcCBhbmQgYm90
dG9tIGhhbHZlcyBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZSB0aGUgcmlnaHQgY29sb3IuCisgICAg
ICAgIGRlYnVnKCJDaGVja2luZyAiICsgKGZsaXBZID8gInRvcCIgOiAiYm90dG9tIikpOworICAg
ICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCBib3R0b20sIHdpZHRoLCBoYWxmSGVpZ2h0
LCByZWRDb2xvciwgInNob3VsZEJlICIgKyByZWRDb2xvcik7CisgICAgICAgIGRlYnVnKCJDaGVj
a2luZyAiICsgKGZsaXBZID8gImJvdHRvbSIgOiAidG9wIikpOworICAgICAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCB0b3AsIHdpZHRoLCBoYWxmSGVpZ2h0LCBncmVlbkNvbG9yLCAic2hv
dWxkQmUgIiArIGdyZWVuQ29sb3IpOworCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAg
IHZhciBtYSA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGNhbnZhcyk7CisgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChtYSk7CisKKyAgICAg
ICAgICB2YXIgbSA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGdsLmNhbnZhcyk7CisgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChtKTsKKyAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRleHR1cmU7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAg
ICB2YXIgY3R4ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOworICAgICAgICB2YXIgY2FudmFzID0g
Y3R4LmNhbnZhczsKKyAgICAgICAgLy8gTm90ZTogV2UgdXNlIHByZXNlcnZlRHJhd2luZ0J1ZmZl
cjp0cnVlIHRvIHByZXZlbnQgY2FudmFzCisgICAgICAgIC8vIHZpc2liaWxpdHkgZnJvbSBpbnRl
cmZlcmluZyB3aXRoIHRoZSB0ZXN0cy4KKyAgICAgICAgdmFyIHZpc2libGVDdHggPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KG51bGwsIHsgcHJlc2VydmVEcmF3aW5nQnVmZmVyOnRydWUgfSk7CisgICAg
ICAgIHZhciB2aXNpYmxlQ2FudmFzID0gdmlzaWJsZUN0eC5jYW52YXM7CisgICAgICAgIHZhciBk
ZXNjcmlwdGlvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKTsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUodmlzaWJsZUNhbnZhcywgZGVzY3Jp
cHRpb25Ob2RlKTsKKworICAgICAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgICAgICB7IGZsaXBZ
OiB0cnVlLCAgY3R4OiBjdHgsIGluaXQ6IHNldENhbnZhc1RvTWluIH0sCisgICAgICAgICAgICB7
IGZsaXBZOiBmYWxzZSwgY3R4OiBjdHggfSwKKyAgICAgICAgICAgIHsgZmxpcFk6IHRydWUsICBj
dHg6IGN0eCwgaW5pdDogc2V0Q2FudmFzVG8yNTd4MjU3IH0sCisgICAgICAgICAgICB7IGZsaXBZ
OiBmYWxzZSwgY3R4OiBjdHggfSwKKyAgICAgICAgICAgIHsgZmxpcFk6IHRydWUsICBjdHg6IHZp
c2libGVDdHgsIGluaXQ6IHNldENhbnZhc1RvTWlufSwKKyAgICAgICAgICAgIHsgZmxpcFk6IGZh
bHNlLCBjdHg6IHZpc2libGVDdHggfSwKKyAgICAgICAgXTsKKworICAgICAgICBpZiAod2luZG93
Lk9mZnNjcmVlbkNhbnZhcykgeworICAgICAgICAgICAgdmFyIG9mZnNjcmVlbiA9IG5ldyBPZmZz
Y3JlZW5DYW52YXMoMSwgMSk7CisgICAgICAgICAgICB2YXIgb2Zmc2NyZWVuQ3R4ID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChvZmZzY3JlZW4pOworICAgICAgICAgICAgY2FzZXMgPSBjYXNlcy5jb25j
YXQoWworICAgICAgICAgICAgICAgIHsgZmxpcFk6IHRydWUsICBjdHg6IG9mZnNjcmVlbkN0eCwg
aW5pdDogc2V0Q2FudmFzVG9NaW4gfSwKKyAgICAgICAgICAgICAgICB7IGZsaXBZOiBmYWxzZSwg
Y3R4OiBvZmZzY3JlZW5DdHggfSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gcnVuVGV4SW1hZ2VUZXN0KGJpbmRpbmdUYXJnZXQpIHsKKyAgICAgICAgICAg
IHZhciBwcm9ncmFtOworICAgICAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVS
RV8zRCkgeworICAgICAgICAgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRX
aXRoM0QoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdpdGgyREFycmF5KGdsLCBp
bnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICB2YXIg
Y291bnQgPSA0OworICAgICAgICAgICAgICAgIHZhciBjYXNlTmR4ID0gMDsKKyAgICAgICAgICAg
ICAgICB2YXIgdGV4dHVyZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBy
dW5OZXh0VGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBjYXNlc1tjYXNlTmR4
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMuaW5pdCkgeworICAgICAgICAgICAgICAgICAg
ICAgIGMuaW5pdChjLmN0eCwgYmluZGluZ1RhcmdldCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IHJ1bk9uZUl0ZXJhdGlvbihjLmN0eC5jYW52
YXMsIGMuZmxpcFksIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAg
ICAgICAgICAgICAvLyBmb3IgdGhlIGZpcnN0IDIgaXRlcmF0aW9ucyBhbHdheXMgbWFrZSBhIG5l
dyB0ZXh0dXJlLgorICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPCAyKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICsrY2FzZU5keDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhc2VO
ZHggPT0gY2FzZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlTmR4ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tY291bnQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgi
U1VDQ0VTUyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB3dHUud2FpdEZvckNvbXBvc2l0ZShydW5OZXh0VGVzdCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJ1blRleEltYWdlVGVzdChnbC5URVhUVVJFXzNEKS50aGVuKGZ1bmN0
aW9uKHZhbCkgeworICAgICAgICAgICAgcnVuVGV4SW1hZ2VUZXN0KGdsLlRFWFRVUkVfMkRfQVJS
QVkpLnRoZW4oZnVuY3Rpb24odmFsKSB7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHJldHVybiBpbml0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
dXRpbHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9q
cy90ZXN0cy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdm
MDU5ODRiZmQ0MmU1ZTcxYmNlYjRkYmVlZTM0OTUxOTYzZmRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtdXRpbHMuanMKQEAgLTAsMCArMSw4MDEgQEAKKy8qCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KK3ZhciBUZXhJbWFnZVV0aWxzID0gKGZ1
bmN0aW9uKCkgeworCisgICJ1c2Ugc3RyaWN0IjsKKworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRp
bHM7CisKKyAgLyoqCisgICAqIEEgdmVydGV4IHNoYWRlciBmb3IgYSBzaW5nbGUgdGV4dHVyZS4K
KyAgICogQHR5cGUge3N0cmluZ30KKyAgICovCisgIHZhciBzaW1wbGVUZXh0dXJlVmVydGV4U2hh
ZGVyRVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdpbiB2ZWM0IHZQb3NpdGlv
bjsnLAorICAgICdpbiB2ZWMyIHRleENvb3JkMDsnLAorICAgICdvdXQgdmVjMiB0ZXhDb29yZDsn
LAorICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9u
OycsCisgICAgJyAgICB0ZXhDb29yZCA9IHRleENvb3JkMDsnLAorICAgICd9J10uam9pbignXG4n
KTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIHVuc2lnbmVk
IGludGVnZXIgdGV4dHVyZS4KKyAgICogQHR5cGUge3N0cmluZ30KKyAgICovCisgIC8vIE5vdGUg
d2UgYWx3YXlzIG91dHB1dCAxLjAgZm9yIGFscGhhIGJlY2F1c2UgaWYgdGhlIHRleHR1cmUgZG9l
cyBub3QgY29udGFpbgorICAvLyBhbHBoYSBjaGFubmVsLCBzYW1wbGluZyByZXR1cm5zIDE7IGZv
ciBSR0JBIHRleHR1cmVzLCBzYW1wbGluZyByZXR1cm5zIFswLDI1NV0uCisgIHZhciBzaW1wbGVV
aW50VGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAor
ICAgICdwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsnLAorICAgICd1bmlmb3JtIG1lZGl1bXAgdXNh
bXBsZXIyRCB0ZXg7JywKKyAgICAnaW4gdmVjMiB0ZXhDb29yZDsnLAorICAgICdvdXQgdmVjNCBm
cmFnRGF0YTsnLAorICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIHV2ZWM0IGRhdGEgPSB0
ZXh0dXJlKHRleCwgdGV4Q29vcmQpOycsCisgICAgJyAgICBmcmFnRGF0YSA9IHZlYzQoZmxvYXQo
ZGF0YVswXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAgICAgICBmbG9hdChkYXRhWzFd
KS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIGZsb2F0KGRhdGFbMl0pLzI1NS4w
LCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgMS4wKTsnLAorICAgICd9J10uam9pbignXG4n
KTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIHNpZ25lZCBp
bnRlZ2VyIHRleHR1cmUuCisgICAqIEB0eXBlIHtzdHJpbmd9CisgICAqLworICAvLyBOb3RlIHdl
IGFsd2F5cyBvdXRwdXQgMS4wIGZvciBhbHBoYSBiZWNhdXNlIGlmIHRoZSB0ZXh0dXJlIGRvZXMg
bm90IGNvbnRhaW4KKyAgLy8gYWxwaGEgY2hhbm5lbCwgc2FtcGxpbmcgcmV0dXJucyAxOyBmb3Ig
UkdCQSB0ZXh0dXJlcywgc2FtcGxpbmcgcmV0dXJucyBbMCwyNTVdLgorICB2YXIgc2ltcGxlSW50
VGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAg
ICdwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsnLAorICAgICd1bmlmb3JtIG1lZGl1bXAgaXNhbXBs
ZXIyRCB0ZXg7JywKKyAgICAnaW4gdmVjMiB0ZXhDb29yZDsnLAorICAgICdvdXQgdmVjNCBmcmFn
RGF0YTsnLAorICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIGl2ZWM0IGRhdGEgPSB0ZXh0
dXJlKHRleCwgdGV4Q29vcmQpOycsCisgICAgJyAgICBmcmFnRGF0YSA9IHZlYzQoZmxvYXQoZGF0
YVswXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAgICAgICBmbG9hdChkYXRhWzFdKS8y
NTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIGZsb2F0KGRhdGFbMl0pLzI1NS4wLCcs
CisgICAgJyAgICAgICAgICAgICAgICAgICAgMS4wKTsnLAorICAgICd9J10uam9pbignXG4nKTsK
KworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIGN1YmUgbWFwIHVu
c2lnbmVkIGludGVnZXIgdGV4dHVyZS4KKyAgICogQHR5cGUge3N0cmluZ30KKyAgICovCisgIC8v
IE5vdGUgd2UgYWx3YXlzIG91dHB1dCAxLjAgZm9yIGFscGhhIGJlY2F1c2UgaWYgdGhlIHRleHR1
cmUgZG9lcyBub3QgY29udGFpbgorICAvLyBhbHBoYSBjaGFubmVsLCBzYW1wbGluZyByZXR1cm5z
IDE7IGZvciBSR0JBIHRleHR1cmVzLCBzYW1wbGluZyByZXR1cm5zIFswLDI1NV0uCisgIHZhciBz
aW1wbGVDdWJlTWFwVWludFRleHR1cmVGcmFnbWVudFNoYWRlckVTMyA9IFsKKyAgICAnI3ZlcnNp
b24gMzAwIGVzJywKKyAgICAncHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7JywKKyAgICAndW5pZm9y
bSBtZWRpdW1wIHVzYW1wbGVyQ3ViZSB0ZXg7JywKKyAgICAndW5pZm9ybSBoaWdocCBpbnQgZmFj
ZTsnLAorICAgICdpbiB2ZWMyIHRleENvb3JkOycsCisgICAgJ291dCB2ZWM0IGZyYWdEYXRhOycs
CisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgIC8vIFRyYW5zZm9ybSBbMCwgMV0gLT4gWy0xLCAx
XQorICAgICcgICAgdmVjMiB0ZXhDMiA9ICh0ZXhDb29yZCAqIDIuKSAtIDEuOycsCisgICAgLy8g
VHJhbnNmb3JtIDJkIHRleCBjb29yZC4gdG8gZWFjaCBmYWNlIG9mIFRFWFRVUkVfQ1VCRV9NQVAg
Y29vcmQuCisgICAgJyAgICB2ZWMzIHRleEN1YmUgPSB2ZWMzKDAuLCAwLiwgMC4pOycsCisgICAg
JyAgICBpZiAoZmFjZSA9PSAzNDA2OSkgeycsICAgICAgICAgLy8gVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YCisgICAgJyAgICAgICAgdGV4Q3ViZSA9IHZlYzMoMS4sIC10ZXhDMi55LCAtdGV4
QzIueCk7JywKKyAgICAnICAgIH0gZWxzZSBpZiAoZmFjZSA9PSAzNDA3MCkgeycsICAvLyBURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1gKKyAgICAnICAgICAgICB0ZXhDdWJlID0gdmVjMygtMS4s
IC10ZXhDMi55LCB0ZXhDMi54KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChmYWNlID09IDM0MDcx
KSB7JywgIC8vIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWQorICAgICcgICAgICAgIHRleEN1
YmUgPSB2ZWMzKHRleEMyLngsIDEuLCB0ZXhDMi55KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChm
YWNlID09IDM0MDcyKSB7JywgIC8vIFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWQorICAgICcg
ICAgICAgIHRleEN1YmUgPSB2ZWMzKHRleEMyLngsIC0xLiwgLXRleEMyLnkpOycsCisgICAgJyAg
ICB9IGVsc2UgaWYgKGZhY2UgPT0gMzQwNzMpIHsnLCAgLy8gVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aCisgICAgJyAgICAgICAgdGV4Q3ViZSA9IHZlYzModGV4QzIueCwgLXRleEMyLnksIDEu
KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChmYWNlID09IDM0MDc0KSB7JywgIC8vIFRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWgorICAgICcgICAgICAgIHRleEN1YmUgPSB2ZWMzKC10ZXhDMi54
LCAtdGV4QzIueSwgLTEuKTsnLAorICAgICcgICAgfScsCisgICAgJyAgICB1dmVjNCBkYXRhID0g
dGV4dHVyZSh0ZXgsIHRleEN1YmUpOycsCisgICAgJyAgICBmcmFnRGF0YSA9IHZlYzQoZmxvYXQo
ZGF0YVswXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAgICAgICBmbG9hdChkYXRhWzFd
KS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIGZsb2F0KGRhdGFbMl0pLzI1NS4w
LCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgMS4wKTsnLAorICAgICd9J10uam9pbignXG4n
KTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIGN1YmUgbWFw
IHNpZ25lZCBpbnRlZ2VyIHRleHR1cmUuCisgICAqIEB0eXBlIHtzdHJpbmd9CisgICAqLworICAv
LyBOb3RlIHdlIGFsd2F5cyBvdXRwdXQgMS4wIGZvciBhbHBoYSBiZWNhdXNlIGlmIHRoZSB0ZXh0
dXJlIGRvZXMgbm90IGNvbnRhaW4KKyAgLy8gYWxwaGEgY2hhbm5lbCwgc2FtcGxpbmcgcmV0dXJu
cyAxOyBmb3IgUkdCQSB0ZXh0dXJlcywgc2FtcGxpbmcgcmV0dXJucyBbMCwyNTVdLgorICB2YXIg
c2ltcGxlQ3ViZU1hcEludFRleHR1cmVGcmFnbWVudFNoYWRlckVTMyA9IFsKKyAgICAnI3ZlcnNp
b24gMzAwIGVzJywKKyAgICAncHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7JywKKyAgICAndW5pZm9y
bSBtZWRpdW1wIGlzYW1wbGVyQ3ViZSB0ZXg7JywKKyAgICAndW5pZm9ybSBoaWdocCBpbnQgZmFj
ZTsnLAorICAgICdpbiB2ZWMyIHRleENvb3JkOycsCisgICAgJ291dCB2ZWM0IGZyYWdEYXRhOycs
CisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgIC8vIFRyYW5zZm9ybSBbMCwgMV0gLT4gWy0xLCAx
XQorICAgICcgICAgdmVjMiB0ZXhDMiA9ICh0ZXhDb29yZCAqIDIuKSAtIDEuOycsCisgICAgLy8g
VHJhbnNmb3JtIDJkIHRleCBjb29yZC4gdG8gZWFjaCBmYWNlIG9mIFRFWFRVUkVfQ1VCRV9NQVAg
Y29vcmQuCisgICAgJyAgICB2ZWMzIHRleEN1YmUgPSB2ZWMzKDAuLCAwLiwgMC4pOycsCisgICAg
JyAgICBpZiAoZmFjZSA9PSAzNDA2OSkgeycsICAgICAgICAgLy8gVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YCisgICAgJyAgICAgICAgdGV4Q3ViZSA9IHZlYzMoMS4sIC10ZXhDMi55LCAtdGV4
QzIueCk7JywKKyAgICAnICAgIH0gZWxzZSBpZiAoZmFjZSA9PSAzNDA3MCkgeycsICAvLyBURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1gKKyAgICAnICAgICAgICB0ZXhDdWJlID0gdmVjMygtMS4s
IC10ZXhDMi55LCB0ZXhDMi54KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChmYWNlID09IDM0MDcx
KSB7JywgIC8vIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWQorICAgICcgICAgICAgIHRleEN1
YmUgPSB2ZWMzKHRleEMyLngsIDEuLCB0ZXhDMi55KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChm
YWNlID09IDM0MDcyKSB7JywgIC8vIFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWQorICAgICcg
ICAgICAgIHRleEN1YmUgPSB2ZWMzKHRleEMyLngsIC0xLiwgLXRleEMyLnkpOycsCisgICAgJyAg
ICB9IGVsc2UgaWYgKGZhY2UgPT0gMzQwNzMpIHsnLCAgLy8gVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aCisgICAgJyAgICAgICAgdGV4Q3ViZSA9IHZlYzModGV4QzIueCwgLXRleEMyLnksIDEu
KTsnLAorICAgICcgICAgfSBlbHNlIGlmIChmYWNlID09IDM0MDc0KSB7JywgIC8vIFRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWgorICAgICcgICAgICAgIHRleEN1YmUgPSB2ZWMzKC10ZXhDMi54
LCAtdGV4QzIueSwgLTEuKTsnLAorICAgICcgICAgfScsCisgICAgJyAgICBpdmVjNCBkYXRhID0g
dGV4dHVyZSh0ZXgsIHRleEN1YmUpOycsCisgICAgJyAgICBmcmFnRGF0YSA9IHZlYzQoZmxvYXQo
ZGF0YVswXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAgICAgICBmbG9hdChkYXRhWzFd
KS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIGZsb2F0KGRhdGFbMl0pLzI1NS4w
LCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAgMS4wKTsnLAorICAgICd9J10uam9pbignXG4n
KTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIDNEIHRleHR1
cmUuCisgICAqIEB0eXBlIHtzdHJpbmd9CisgICAqLworICAvLyBOb3RlIHRoYXQgdGhlIHRleCBj
b29yZGluYXRlIHIgKHRoZSB1bmlmb3JtIHVSQ29vcmQpIGlzIHNldCB0byAwLjAgYnkgZGVmYXVs
dC4KKyAgdmFyIHNpbXBsZTNEVGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzID0gWworICAgICcjdmVy
c2lvbiAzMDAgZXMnLAorICAgICdwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsnLAorICAgICd1bmlm
b3JtIG1lZGl1bXAgc2FtcGxlcjNEIHRleDsnLAorICAgICdpbiB2ZWMyIHRleENvb3JkOycsCisg
ICAgJ3VuaWZvcm0gZmxvYXQgdVJDb29yZDsnLAorICAgICdvdXQgdmVjNCBmcmFnRGF0YTsnLAor
ICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIGZyYWdEYXRhID0gdmVjNCh0ZXh0dXJlKHRl
eCwgdmVjMyh0ZXhDb29yZCwgdVJDb29yZCkpLnJnYiwgMS4wKTsnLAorICAgICd9J10uam9pbign
XG4nKTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIDNEIHVu
c2lnbmVkIGludGVnZXIgdGV4dHVyZS4KKyAgICogQHR5cGUge3N0cmluZ30KKyAgICovCisgIC8v
IE5vdGUgdGhhdCB0aGUgdGV4IGNvb3JkaW5hdGUgciAodGhlIHVuaWZvcm0gdVJDb29yZCkgaXMg
c2V0IHRvIDAuMCBieSBkZWZhdWx0LgorICAvLyBOb3RlIHdlIGFsd2F5cyBvdXRwdXQgMS4wIGZv
ciBhbHBoYSBiZWNhdXNlIGlmIHRoZSB0ZXh0dXJlIGRvZXMgbm90IGNvbnRhaW4KKyAgLy8gYWxw
aGEgY2hhbm5lbCwgc2FtcGxpbmcgcmV0dXJucyAxOyBmb3IgUkdCQSB0ZXh0dXJlcywgc2FtcGxp
bmcgcmV0dXJucyBbMCwyNTVdLgorICB2YXIgc2ltcGxlM0RVaW50VGV4dHVyZUZyYWdtZW50U2hh
ZGVyRVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsnLAorICAgICd1bmlmb3JtIG1lZGl1bXAgdXNhbXBsZXIzRCB0ZXg7JywKKyAgICAn
aW4gdmVjMiB0ZXhDb29yZDsnLAorICAgICd1bmlmb3JtIGZsb2F0IHVSQ29vcmQ7JywKKyAgICAn
b3V0IHZlYzQgZnJhZ0RhdGE7JywKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyAgICB1dmVj
NCBkYXRhID0gdGV4dHVyZSh0ZXgsIHZlYzModGV4Q29vcmQsIHVSQ29vcmQpKTsnLAorICAgICcg
ICAgZnJhZ0RhdGEgPSB2ZWM0KGZsb2F0KGRhdGFbMF0pLzI1NS4wLCcsCisgICAgJyAgICAgICAg
ICAgICAgICAgICAgZmxvYXQoZGF0YVsxXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAg
ICAgICBmbG9hdChkYXRhWzJdKS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIDEu
MCk7JywKKyAgICAnfSddLmpvaW4oJ1xuJyk7CisKKyAgLyoqCisgICAqIEEgZnJhZ21lbnQgc2hh
ZGVyIGZvciBhIHNpbmdsZSAzRCBzaWduZWQgaW50ZWdlciB0ZXh0dXJlLgorICAgKiBAdHlwZSB7
c3RyaW5nfQorICAgKi8KKyAgLy8gTm90ZSB0aGF0IHRoZSB0ZXggY29vcmRpbmF0ZSByICh0aGUg
dW5pZm9ybSB1UkNvb3JkKSBpcyBzZXQgdG8gMC4wIGJ5IGRlZmF1bHQuCisgIC8vIE5vdGUgd2Ug
YWx3YXlzIG91dHB1dCAxLjAgZm9yIGFscGhhIGJlY2F1c2UgaWYgdGhlIHRleHR1cmUgZG9lcyBu
b3QgY29udGFpbgorICAvLyBhbHBoYSBjaGFubmVsLCBzYW1wbGluZyByZXR1cm5zIDE7IGZvciBS
R0JBIHRleHR1cmVzLCBzYW1wbGluZyByZXR1cm5zIFswLDI1NV0uCisgIHZhciBzaW1wbGUzRElu
dFRleHR1cmVGcmFnbWVudFNoYWRlckVTMyA9IFsKKyAgICAnI3ZlcnNpb24gMzAwIGVzJywKKyAg
ICAncHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7JywKKyAgICAndW5pZm9ybSBtZWRpdW1wIGlzYW1w
bGVyM0QgdGV4OycsCisgICAgJ2luIHZlYzIgdGV4Q29vcmQ7JywKKyAgICAndW5pZm9ybSBmbG9h
dCB1UkNvb3JkOycsCisgICAgJ291dCB2ZWM0IGZyYWdEYXRhOycsCisgICAgJ3ZvaWQgbWFpbigp
IHsnLAorICAgICcgICAgaXZlYzQgZGF0YSA9IHRleHR1cmUodGV4LCB2ZWMzKHRleENvb3JkLCB1
UkNvb3JkKSk7JywKKyAgICAnICAgIGZyYWdEYXRhID0gdmVjNChmbG9hdChkYXRhWzBdKS8yNTUu
MCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIGZsb2F0KGRhdGFbMV0pLzI1NS4wLCcsCisg
ICAgJyAgICAgICAgICAgICAgICAgICAgZmxvYXQoZGF0YVsyXSkvMjU1LjAsJywKKyAgICAnICAg
ICAgICAgICAgICAgICAgICAxLjApOycsCisgICAgJ30nXS5qb2luKCdcbicpOworCisgIC8qKgor
ICAgKiBBIGZyYWdtZW50IHNoYWRlciBmb3IgYSBzaW5nbGUgMkRfQVJSQVkgdGV4dHVyZS4KKyAg
ICogQHR5cGUge3N0cmluZ30KKyAgICovCisgIC8vIE5vdGUgdGhhdCB0aGUgZmlyc3QgaW1hZ2Ug
aW4gdGhlIGFycmF5IChzZWxlY3RlZCBieSB0aGUgdW5pZm9ybQorICAvLyB1UkNvb3JkKSBpcyB1
c2VkIGJ5IGRlZmF1bHQuCisgIHZhciBzaW1wbGUyREFycmF5VGV4dHVyZUZyYWdtZW50U2hhZGVy
RVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsnLAorICAgICd1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXkgdGV4OycsCisgICAg
J2luIHZlYzIgdGV4Q29vcmQ7JywKKyAgICAndW5pZm9ybSBmbG9hdCB1UkNvb3JkOycsCisgICAg
J291dCB2ZWM0IGZyYWdEYXRhOycsCisgICAgJ3ZvaWQgbWFpbigpIHsnLAorICAgICcgICAgZnJh
Z0RhdGEgPSB2ZWM0KHRleHR1cmUodGV4LCB2ZWMzKHRleENvb3JkLCB1UkNvb3JkKSkucmdiLCAx
LjApOycsCisgICAgJ30nXS5qb2luKCdcbicpOworCisgIC8qKgorICAgKiBBIGZyYWdtZW50IHNo
YWRlciBmb3IgYSBzaW5nbGUgMkRfQVJSQVkgdW5zaWduZWQgaW50ZWdlciB0ZXh0dXJlLgorICAg
KiBAdHlwZSB7c3RyaW5nfQorICAgKi8KKyAgLy8gTm90ZSB0aGF0IHRoZSBmaXJzdCBpbWFnZSBp
biB0aGUgYXJyYXkgKHNlbGVjdGVkIGJ5IHRoZSB1bmlmb3JtCisgIC8vIHVSQ29vcmQpIGlzIHVz
ZWQgYnkgZGVmYXVsdC4KKyAgLy8gTm90ZSB3ZSBhbHdheXMgb3V0cHV0IDEuMCBmb3IgYWxwaGEg
YmVjYXVzZSBpZiB0aGUgdGV4dHVyZSBkb2VzIG5vdCBjb250YWluCisgIC8vIGFscGhhIGNoYW5u
ZWwsIHNhbXBsaW5nIHJldHVybnMgMTsgZm9yIFJHQkEgdGV4dHVyZXMsIHNhbXBsaW5nIHJldHVy
bnMgWzAsMjU1XS4KKyAgdmFyIHNpbXBsZTJEQXJyYXlVaW50VGV4dHVyZUZyYWdtZW50U2hhZGVy
RVMzID0gWworICAgICcjdmVyc2lvbiAzMDAgZXMnLAorICAgICdwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsnLAorICAgICd1bmlmb3JtIG1lZGl1bXAgdXNhbXBsZXIyREFycmF5IHRleDsnLAorICAg
ICdpbiB2ZWMyIHRleENvb3JkOycsCisgICAgJ3VuaWZvcm0gZmxvYXQgdVJDb29yZDsnLAorICAg
ICdvdXQgdmVjNCBmcmFnRGF0YTsnLAorICAgICd2b2lkIG1haW4oKSB7JywKKyAgICAnICAgIHV2
ZWM0IGRhdGEgPSB0ZXh0dXJlKHRleCwgdmVjMyh0ZXhDb29yZCwgdVJDb29yZCkpOycsCisgICAg
JyAgICBmcmFnRGF0YSA9IHZlYzQoZmxvYXQoZGF0YVswXSkvMjU1LjAsJywKKyAgICAnICAgICAg
ICAgICAgICAgICAgICBmbG9hdChkYXRhWzFdKS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAg
ICAgICAgIGZsb2F0KGRhdGFbMl0pLzI1NS4wLCcsCisgICAgJyAgICAgICAgICAgICAgICAgICAg
MS4wKTsnLAorICAgICd9J10uam9pbignXG4nKTsKKworICAvKioKKyAgICogQSBmcmFnbWVudCBz
aGFkZXIgZm9yIGEgc2luZ2xlIDJEX0FSUkFZIHNpZ25lZCBpbnRlZ2VyIHRleHR1cmUuCisgICAq
IEB0eXBlIHtzdHJpbmd9CisgICAqLworICAvLyBOb3RlIHRoYXQgdGhlIGZpcnN0IGltYWdlIGlu
IHRoZSBhcnJheSAoc2VsZWN0ZWQgYnkgdGhlIHVuaWZvcm0KKyAgLy8gdVJDb29yZCkgaXMgdXNl
ZCBieSBkZWZhdWx0LgorICAvLyBOb3RlIHdlIGFsd2F5cyBvdXRwdXQgMS4wIGZvciBhbHBoYSBi
ZWNhdXNlIGlmIHRoZSB0ZXh0dXJlIGRvZXMgbm90IGNvbnRhaW4KKyAgLy8gYWxwaGEgY2hhbm5l
bCwgc2FtcGxpbmcgcmV0dXJucyAxOyBmb3IgUkdCQSB0ZXh0dXJlcywgc2FtcGxpbmcgcmV0dXJu
cyBbMCwyNTVdLgorICB2YXIgc2ltcGxlMkRBcnJheUludFRleHR1cmVGcmFnbWVudFNoYWRlckVT
MyA9IFsKKyAgICAnI3ZlcnNpb24gMzAwIGVzJywKKyAgICAncHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7JywKKyAgICAndW5pZm9ybSBtZWRpdW1wIGlzYW1wbGVyMkRBcnJheSB0ZXg7JywKKyAgICAn
aW4gdmVjMiB0ZXhDb29yZDsnLAorICAgICd1bmlmb3JtIGZsb2F0IHVSQ29vcmQ7JywKKyAgICAn
b3V0IHZlYzQgZnJhZ0RhdGE7JywKKyAgICAndm9pZCBtYWluKCkgeycsCisgICAgJyAgICBpdmVj
NCBkYXRhID0gdGV4dHVyZSh0ZXgsIHZlYzModGV4Q29vcmQsIHVSQ29vcmQpKTsnLAorICAgICcg
ICAgZnJhZ0RhdGEgPSB2ZWM0KGZsb2F0KGRhdGFbMF0pLzI1NS4wLCcsCisgICAgJyAgICAgICAg
ICAgICAgICAgICAgZmxvYXQoZGF0YVsxXSkvMjU1LjAsJywKKyAgICAnICAgICAgICAgICAgICAg
ICAgICBmbG9hdChkYXRhWzJdKS8yNTUuMCwnLAorICAgICcgICAgICAgICAgICAgICAgICAgIDEu
MCk7JywKKyAgICAnfSddLmpvaW4oJ1xuJyk7CisKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNp
bXBsZSB0ZXh0dXJlIHZlcnRleCBzaGFkZXIuCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5n
Q29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEByZXR1
cm4geyFXZWJHTFNoYWRlcn0KKyAgICovCisgIHZhciBzZXR1cFNpbXBsZVRleHR1cmVWZXJ0ZXhT
aGFkZXIgPSBmdW5jdGlvbihnbCkgeworICAgIHJldHVybiBXZWJHTFRlc3RVdGlscy5sb2FkU2hh
ZGVyKGdsLCBzaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVyRVMzLCBnbC5WRVJURVhfU0hBREVSKTsK
KyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBsZSB1bnNpZ25lZCBpbnRlZ2VyIHRl
eHR1cmUgZnJhZ21lbnQgc2hhZGVyLgorICAgKiBPdXRwdXQgaXMgc2NhbGVkIGJ5IDEvMjU1IHRv
IGJyaW5nIHRoZSByZXN1bHQgaW50byBub3JtYWxpemVkIGZsb2F0IHJhbmdlLgorICAgKiBAcGFy
YW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQg
dG8gdXNlLgorICAgKiBAcmV0dXJuIHshV2ViR0xTaGFkZXJ9CisgICAqLworICB2YXIgc2V0dXBT
aW1wbGVVaW50VGV4dHVyZUZyYWdtZW50U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1
cm4gV2ViR0xUZXN0VXRpbHMubG9hZFNoYWRlcihnbCwgc2ltcGxlVWludFRleHR1cmVGcmFnbWVu
dFNoYWRlckVTMywgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgfTsKKworICAvKioKKyAgICogQ3Jl
YXRlcyBhIHNpbXBsZSBzaWduZWQgaW50ZWdlciB0ZXh0dXJlIGZyYWdtZW50IHNoYWRlci4KKyAg
ICogT3V0cHV0IGlzIHNjYWxlZCBieSAxLzI1NSB0byBicmluZyB0aGUgcmVzdWx0IGludG8gbm9y
bWFsaXplZCBmbG9hdCByYW5nZS4KKyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250ZXh0
fSBnbCBUaGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHJldHVybiB7IVdl
YkdMU2hhZGVyfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxlSW50VGV4dHVyZUZyYWdtZW50U2hh
ZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1cm4gV2ViR0xUZXN0VXRpbHMubG9hZFNoYWRl
cihnbCwgc2ltcGxlSW50VGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzLCBnbC5GUkFHTUVOVF9TSEFE
RVIpOworICB9OworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgc2ltcGxlIGN1YmUgbWFwIHVuc2ln
bmVkIGludGVnZXIgdGV4dHVyZSBmcmFnbWVudCBzaGFkZXIuCisgICAqIEBwYXJhbSB7IVdlYkdM
UmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisg
ICAqIEByZXR1cm4geyFXZWJHTFNoYWRlcn0KKyAgICovCisgIHZhciBzZXR1cFNpbXBsZUN1YmVN
YXBVaW50VGV4dHVyZUZyYWdtZW50U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1cm4g
V2ViR0xUZXN0VXRpbHMubG9hZFNoYWRlcihnbCwgc2ltcGxlQ3ViZU1hcFVpbnRUZXh0dXJlRnJh
Z21lbnRTaGFkZXJFUzMsIGdsLkZSQUdNRU5UX1NIQURFUik7CisgIH07CisKKyAgLyoqCisgICAq
IENyZWF0ZXMgYSBzaW1wbGUgY3ViZSBtYXAgc2lnbmVkIGludGVnZXIgdGV4dHVyZSBmcmFnbWVu
dCBzaGFkZXIuCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEByZXR1cm4geyFXZWJHTFNoYWRlcn0K
KyAgICovCisgIHZhciBzZXR1cFNpbXBsZUN1YmVNYXBJbnRUZXh0dXJlRnJhZ21lbnRTaGFkZXIg
PSBmdW5jdGlvbihnbCkgeworICAgIHJldHVybiBXZWJHTFRlc3RVdGlscy5sb2FkU2hhZGVyKGds
LCBzaW1wbGVDdWJlTWFwSW50VGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzLCBnbC5GUkFHTUVOVF9T
SEFERVIpOworICB9OworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgc2ltcGxlIDNEIHRleHR1cmUg
ZnJhZ21lbnQgc2hhZGVyLgorICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGds
IFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlLgorICAgKiBAcmV0dXJuIHshV2ViR0xT
aGFkZXJ9CisgICAqLworICB2YXIgc2V0dXBTaW1wbGUzRFRleHR1cmVGcmFnbWVudFNoYWRlciA9
IGZ1bmN0aW9uKGdsKSB7CisgICAgcmV0dXJuIFdlYkdMVGVzdFV0aWxzLmxvYWRTaGFkZXIoZ2ws
IHNpbXBsZTNEVGV4dHVyZUZyYWdtZW50U2hhZGVyRVMzLCBnbC5GUkFHTUVOVF9TSEFERVIpOwor
ICB9OworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgc2ltcGxlIDNEIHVuc2lnbmVkIGludGVnZXIg
dGV4dHVyZSBmcmFnbWVudCBzaGFkZXIuCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29u
dGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEByZXR1cm4g
eyFXZWJHTFNoYWRlcn0KKyAgICovCisgIHZhciBzZXR1cFNpbXBsZTNEVWludFRleHR1cmVGcmFn
bWVudFNoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgICAgcmV0dXJuIFdlYkdMVGVzdFV0aWxzLmxv
YWRTaGFkZXIoZ2wsIHNpbXBsZTNEVWludFRleHR1cmVGcmFnbWVudFNoYWRlckVTMywgZ2wuRlJB
R01FTlRfU0hBREVSKTsKKyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBsZSAzRCBz
aWduZWQgaW50ZWdlciB0ZXh0dXJlIGZyYWdtZW50IHNoYWRlci4KKyAgICogQHBhcmFtIHshV2Vi
R0xSZW5kZXJpbmdDb250ZXh0fSBnbCBUaGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4K
KyAgICogQHJldHVybiB7IVdlYkdMU2hhZGVyfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxlM0RJ
bnRUZXh0dXJlRnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlvbihnbCkgeworICAgIHJldHVybiBXZWJH
TFRlc3RVdGlscy5sb2FkU2hhZGVyKGdsLCBzaW1wbGUzREludFRleHR1cmVGcmFnbWVudFNoYWRl
ckVTMywgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBh
IHNpbXBsZSAyRF9BUlJBWSB0ZXh0dXJlIGZyYWdtZW50IHNoYWRlci4KKyAgICogQHBhcmFtIHsh
V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbCBUaGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVz
ZS4KKyAgICogQHJldHVybiB7IVdlYkdMU2hhZGVyfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxl
MkRBcnJheVRleHR1cmVGcmFnbWVudFNoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgICAgcmV0dXJu
IFdlYkdMVGVzdFV0aWxzLmxvYWRTaGFkZXIoZ2wsIHNpbXBsZTJEQXJyYXlUZXh0dXJlRnJhZ21l
bnRTaGFkZXJFUzMsIGdsLkZSQUdNRU5UX1NIQURFUik7CisgIH07CisKKyAgLyoqCisgICAqIENy
ZWF0ZXMgYSBzaW1wbGUgMkRfQVJSQVkgaW50ZWdlciB0ZXh0dXJlIGZyYWdtZW50IHNoYWRlci4K
KyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbCBUaGUgV2ViR0xSZW5kZXJp
bmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHJldHVybiB7IVdlYkdMU2hhZGVyfQorICAgKi8KKyAg
dmFyIHNldHVwU2ltcGxlMkRBcnJheVVpbnRUZXh0dXJlRnJhZ21lbnRTaGFkZXIgPSBmdW5jdGlv
bihnbCkgeworICAgIHJldHVybiBXZWJHTFRlc3RVdGlscy5sb2FkU2hhZGVyKGdsLCBzaW1wbGUy
REFycmF5VWludFRleHR1cmVGcmFnbWVudFNoYWRlckVTMywgZ2wuRlJBR01FTlRfU0hBREVSKTsK
KyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBsZSB1bnNpZ25lZCBpbnRlZ2VyIHRl
eHR1cmUgcHJvZ3JhbS4KKyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbCBU
aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHBhcmFtIHtudW1iZXJ9IG9w
dF9wb3NpdGlvbkxvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHBvc2l0aW9uLgorICAg
KiBAcGFyYW0ge251bWJlcn0gb3B0X3RleGNvb3JkTG9jYXRpb24gVGhlIGF0dHJpYiBsb2NhdGlv
biBmb3IgdGV4dHVyZSBjb29yZHMuCisgICAqIEByZXR1cm4ge1dlYkdMUHJvZ3JhbX0KKyAgICov
CisgIHZhciBzZXR1cFNpbXBsZVVpbnRUZXh0dXJlUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsLCBvcHRf
cG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb24pCisgIHsKKyAgICBvcHRfcG9z
aXRpb25Mb2NhdGlvbiA9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIHx8IDA7CisgICAgb3B0X3RleGNv
b3JkTG9jYXRpb24gPSBvcHRfdGV4Y29vcmRMb2NhdGlvbiB8fCAxOworICAgIHZhciB2cyA9IHNl
dHVwU2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlcihnbCksCisgICAgICAgIGZzID0gc2V0dXBTaW1w
bGVVaW50VGV4dHVyZUZyYWdtZW50U2hhZGVyKGdsKTsKKyAgICBpZiAoIXZzIHx8ICFmcykgewor
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZhciBwcm9ncmFtID0gV2ViR0xUZXN0VXRp
bHMuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsndlBv
c2l0aW9uJywgJ3RleENvb3JkMCddLAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRf
dGV4Y29vcmRMb2NhdGlvbl0pOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgZ2wuZGVsZXRl
U2hhZGVyKGZzKTsKKyAgICAgIGdsLmRlbGV0ZVNoYWRlcih2cyk7CisgICAgfQorICAgIGdsLnVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoqCisg
ICAqIENyZWF0ZXMgYSBzaW1wbGUgc2lnbmVkIGludGVnZXIgdGV4dHVyZSBwcm9ncmFtLgorICAg
KiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQgdG8gdXNlLgorICAgKiBAcGFyYW0ge251bWJlcn0gb3B0X3Bvc2l0aW9uTG9jYXRpb24g
VGhlIGF0dHJpYiBsb2NhdGlvbiBmb3IgcG9zaXRpb24uCisgICAqIEBwYXJhbSB7bnVtYmVyfSBv
cHRfdGV4Y29vcmRMb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciB0ZXh0dXJlIGNvb3Jk
cy4KKyAgICogQHJldHVybiB7V2ViR0xQcm9ncmFtfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxl
SW50VGV4dHVyZVByb2dyYW0gPSBmdW5jdGlvbihnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9w
dF90ZXhjb29yZExvY2F0aW9uKQorICB7CisgICAgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSBvcHRf
cG9zaXRpb25Mb2NhdGlvbiB8fCAwOworICAgIG9wdF90ZXhjb29yZExvY2F0aW9uID0gb3B0X3Rl
eGNvb3JkTG9jYXRpb24gfHwgMTsKKyAgICB2YXIgdnMgPSBzZXR1cFNpbXBsZVRleHR1cmVWZXJ0
ZXhTaGFkZXIoZ2wpLAorICAgICAgICBmcyA9IHNldHVwU2ltcGxlSW50VGV4dHVyZUZyYWdtZW50
U2hhZGVyKGdsKTsKKyAgICBpZiAoIXZzIHx8ICFmcykgeworICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorICAgIHZhciBwcm9ncmFtID0gV2ViR0xUZXN0VXRpbHMuc2V0dXBQcm9ncmFtKAorICAg
ICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCdd
LAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbl0pOwor
ICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZzKTsKKyAgICAgIGds
LmRlbGV0ZVNoYWRlcih2cyk7CisgICAgfQorICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBzaW1wbGUg
Y3ViZSBtYXAgdW5zaWduZWQgaW50ZWdlciB0ZXh0dXJlIHByb2dyYW0uCisgICAqIEBwYXJhbSB7
IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1
c2UuCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfcG9zaXRpb25Mb2NhdGlvbiBUaGUgYXR0cmli
IGxvY2F0aW9uIGZvciBwb3NpdGlvbi4KKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdF90ZXhjb29y
ZExvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHRleHR1cmUgY29vcmRzLgorICAgKiBA
cmV0dXJuIHtXZWJHTFByb2dyYW19CisgICAqLworICB2YXIgc2V0dXBTaW1wbGVDdWJlTWFwVWlu
dFRleHR1cmVQcm9ncmFtID0gZnVuY3Rpb24oZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRf
dGV4Y29vcmRMb2NhdGlvbikgeworICAgIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bvc2l0
aW9uTG9jYXRpb24gfHwgMDsKKyAgICBvcHRfdGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhjb29y
ZExvY2F0aW9uIHx8IDE7CisgICAgdmFyIHZzID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hh
ZGVyKGdsKTsKKyAgICB2YXIgZnMgPSBzZXR1cFNpbXBsZUN1YmVNYXBVaW50VGV4dHVyZUZyYWdt
ZW50U2hhZGVyKGdsKTsKKyAgICBpZiAoIXZzIHx8ICFmcykgeworICAgICAgcmV0dXJuIG51bGw7
CisgICAgfQorICAgIHZhciBwcm9ncmFtID0gV2ViR0xUZXN0VXRpbHMuc2V0dXBQcm9ncmFtKAor
ICAgICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsndlBvc2l0aW9uJywgJ3RleENvb3Jk
MCddLAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbl0p
OworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZzKTsKKyAgICAg
IGdsLmRlbGV0ZVNoYWRlcih2cyk7CisgICAgfQorICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7
CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBzaW1w
bGUgY3ViZSBtYXAgc2lnbmVkIGludGVnZXIgdGV4dHVyZSBwcm9ncmFtLgorICAgKiBAcGFyYW0g
eyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8g
dXNlLgorICAgKiBAcGFyYW0ge251bWJlcn0gb3B0X3Bvc2l0aW9uTG9jYXRpb24gVGhlIGF0dHJp
YiBsb2NhdGlvbiBmb3IgcG9zaXRpb24uCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfdGV4Y29v
cmRMb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciB0ZXh0dXJlIGNvb3Jkcy4KKyAgICog
QHJldHVybiB7V2ViR0xQcm9ncmFtfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxlQ3ViZU1hcElu
dFRleHR1cmVQcm9ncmFtID0gZnVuY3Rpb24oZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRf
dGV4Y29vcmRMb2NhdGlvbikgeworICAgIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bvc2l0
aW9uTG9jYXRpb24gfHwgMDsKKyAgICBvcHRfdGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhjb29y
ZExvY2F0aW9uIHx8IDE7CisgICAgdmFyIHZzID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hh
ZGVyKGdsKTsKKyAgICB2YXIgZnMgPSBzZXR1cFNpbXBsZUN1YmVNYXBJbnRUZXh0dXJlRnJhZ21l
bnRTaGFkZXIoZ2wpOworICAgIGlmICghdnMgfHwgIWZzKSB7CisgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CisgICAgdmFyIHByb2dyYW0gPSBXZWJHTFRlc3RVdGlscy5zZXR1cFByb2dyYW0oCisg
ICAgICBnbCwKKyAgICAgIFt2cywgZnNdLAorICAgICAgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQw
J10sCisgICAgICBbb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uXSk7
CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICBnbC5kZWxldGVTaGFkZXIoZnMpOworICAgICAg
Z2wuZGVsZXRlU2hhZGVyKHZzKTsKKyAgICB9CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICByZXR1cm4gcHJvZ3JhbTsKKyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBs
ZSAzRCB0ZXh0dXJlIHByb2dyYW0uCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4
dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEBwYXJhbSB7bnVt
YmVyfSBvcHRfcG9zaXRpb25Mb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciBwb3NpdGlv
bi4KKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdF90ZXhjb29yZExvY2F0aW9uIFRoZSBhdHRyaWIg
bG9jYXRpb24gZm9yIHRleHR1cmUgY29vcmRzLgorICAgKiBAcmV0dXJuIHtXZWJHTFByb2dyYW19
CisgICAqLworICB2YXIgc2V0dXBTaW1wbGUzRFRleHR1cmVQcm9ncmFtID0gZnVuY3Rpb24oZ2ws
IG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbikKKyAgeworICAgIG9w
dF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bvc2l0aW9uTG9jYXRpb24gfHwgMDsKKyAgICBvcHRf
dGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhjb29yZExvY2F0aW9uIHx8IDE7CisgICAgdmFyIHZz
ID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVyKGdsKSwKKyAgICAgICAgZnMgPSBzZXR1
cFNpbXBsZTNEVGV4dHVyZUZyYWdtZW50U2hhZGVyKGdsKTsKKyAgICBpZiAoIXZzIHx8ICFmcykg
eworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZhciBwcm9ncmFtID0gV2ViR0xUZXN0
VXRpbHMuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsn
dlBvc2l0aW9uJywgJ3RleENvb3JkMCddLAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBv
cHRfdGV4Y29vcmRMb2NhdGlvbl0pOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgZ2wuZGVs
ZXRlU2hhZGVyKGZzKTsKKyAgICAgIGdsLmRlbGV0ZVNoYWRlcih2cyk7CisgICAgfQorICAgIGds
LnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoq
CisgICAqIENyZWF0ZXMgYSBzaW1wbGUgM0QgdW5zaWduZWQgaW50ZWdlciB0ZXh0dXJlIHByb2dy
YW0uCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfcG9zaXRpb25M
b2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciBwb3NpdGlvbi4KKyAgICogQHBhcmFtIHtu
dW1iZXJ9IG9wdF90ZXhjb29yZExvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHRleHR1
cmUgY29vcmRzLgorICAgKiBAcmV0dXJuIHtXZWJHTFByb2dyYW19CisgICAqLworICB2YXIgc2V0
dXBTaW1wbGUzRFVpbnRUZXh0dXJlUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsLCBvcHRfcG9zaXRpb25M
b2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb24pCisgIHsKKyAgICBvcHRfcG9zaXRpb25Mb2Nh
dGlvbiA9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIHx8IDA7CisgICAgb3B0X3RleGNvb3JkTG9jYXRp
b24gPSBvcHRfdGV4Y29vcmRMb2NhdGlvbiB8fCAxOworICAgIHZhciB2cyA9IHNldHVwU2ltcGxl
VGV4dHVyZVZlcnRleFNoYWRlcihnbCksCisgICAgICAgIGZzID0gc2V0dXBTaW1wbGUzRFVpbnRU
ZXh0dXJlRnJhZ21lbnRTaGFkZXIoZ2wpOworICAgIGlmICghdnMgfHwgIWZzKSB7CisgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9CisgICAgdmFyIHByb2dyYW0gPSBXZWJHTFRlc3RVdGlscy5zZXR1
cFByb2dyYW0oCisgICAgICBnbCwKKyAgICAgIFt2cywgZnNdLAorICAgICAgWyd2UG9zaXRpb24n
LCAndGV4Q29vcmQwJ10sCisgICAgICBbb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29y
ZExvY2F0aW9uXSk7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICBnbC5kZWxldGVTaGFkZXIo
ZnMpOworICAgICAgZ2wuZGVsZXRlU2hhZGVyKHZzKTsKKyAgICB9CisgICAgZ2wudXNlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsKKyAgfTsKKworICAvKioKKyAgICogQ3Jl
YXRlcyBhIHNpbXBsZSAzRCBzaWduZWQgaW50ZWdlciB0ZXh0dXJlIHByb2dyYW0uCisgICAqIEBw
YXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCB0byB1c2UuCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfcG9zaXRpb25Mb2NhdGlvbiBUaGUg
YXR0cmliIGxvY2F0aW9uIGZvciBwb3NpdGlvbi4KKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdF90
ZXhjb29yZExvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHRleHR1cmUgY29vcmRzLgor
ICAgKiBAcmV0dXJuIHtXZWJHTFByb2dyYW19CisgICAqLworICB2YXIgc2V0dXBTaW1wbGUzRElu
dFRleHR1cmVQcm9ncmFtID0gZnVuY3Rpb24oZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRf
dGV4Y29vcmRMb2NhdGlvbikKKyAgeworICAgIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bv
c2l0aW9uTG9jYXRpb24gfHwgMDsKKyAgICBvcHRfdGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhj
b29yZExvY2F0aW9uIHx8IDE7CisgICAgdmFyIHZzID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4
U2hhZGVyKGdsKSwKKyAgICAgICAgZnMgPSBzZXR1cFNpbXBsZTNESW50VGV4dHVyZUZyYWdtZW50
U2hhZGVyKGdsKTsKKyAgICBpZiAoIXZzIHx8ICFmcykgeworICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorICAgIHZhciBwcm9ncmFtID0gV2ViR0xUZXN0VXRpbHMuc2V0dXBQcm9ncmFtKAorICAg
ICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsndlBvc2l0aW9uJywgJ3RleENvb3JkMCdd
LAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbl0pOwor
ICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZzKTsKKyAgICAgIGds
LmRlbGV0ZVNoYWRlcih2cyk7CisgICAgfQorICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBzaW1wbGUg
MkRfQVJSQVkgdGV4dHVyZSBwcm9ncmFtLgorICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0Nv
bnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlLgorICAgKiBAcGFyYW0g
e251bWJlcn0gb3B0X3Bvc2l0aW9uTG9jYXRpb24gVGhlIGF0dHJpYiBsb2NhdGlvbiBmb3IgcG9z
aXRpb24uCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfdGV4Y29vcmRMb2NhdGlvbiBUaGUgYXR0
cmliIGxvY2F0aW9uIGZvciB0ZXh0dXJlIGNvb3Jkcy4KKyAgICogQHJldHVybiB7V2ViR0xQcm9n
cmFtfQorICAgKi8KKyAgdmFyIHNldHVwU2ltcGxlMkRBcnJheVRleHR1cmVQcm9ncmFtID0gZnVu
Y3Rpb24oZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbikKKyAg
eworICAgIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bvc2l0aW9uTG9jYXRpb24gfHwgMDsK
KyAgICBvcHRfdGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhjb29yZExvY2F0aW9uIHx8IDE7Cisg
ICAgdmFyIHZzID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVyKGdsKSwKKyAgICAgICAg
ZnMgPSBzZXR1cFNpbXBsZTJEQXJyYXlUZXh0dXJlRnJhZ21lbnRTaGFkZXIoZ2wpOworICAgIGlm
ICghdnMgfHwgIWZzKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgdmFyIHByb2dy
YW0gPSBXZWJHTFRlc3RVdGlscy5zZXR1cFByb2dyYW0oCisgICAgICBnbCwKKyAgICAgIFt2cywg
ZnNdLAorICAgICAgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQwJ10sCisgICAgICBbb3B0X3Bvc2l0
aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uXSk7CisgICAgaWYgKCFwcm9ncmFtKSB7
CisgICAgICBnbC5kZWxldGVTaGFkZXIoZnMpOworICAgICAgZ2wuZGVsZXRlU2hhZGVyKHZzKTsK
KyAgICB9CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsK
KyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBsZSAyRF9BUlJBWSB1bnNpZ25lZCBp
bnRlZ2VyIHRleHR1cmUgcHJvZ3JhbS4KKyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250
ZXh0fSBnbCBUaGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHBhcmFtIHtu
dW1iZXJ9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHBvc2l0
aW9uLgorICAgKiBAcGFyYW0ge251bWJlcn0gb3B0X3RleGNvb3JkTG9jYXRpb24gVGhlIGF0dHJp
YiBsb2NhdGlvbiBmb3IgdGV4dHVyZSBjb29yZHMuCisgICAqIEByZXR1cm4ge1dlYkdMUHJvZ3Jh
bX0KKyAgICovCisgIHZhciBzZXR1cFNpbXBsZTJEQXJyYXlVaW50VGV4dHVyZVByb2dyYW0gPSBm
dW5jdGlvbihnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uKQor
ICB7CisgICAgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSBvcHRfcG9zaXRpb25Mb2NhdGlvbiB8fCAw
OworICAgIG9wdF90ZXhjb29yZExvY2F0aW9uID0gb3B0X3RleGNvb3JkTG9jYXRpb24gfHwgMTsK
KyAgICB2YXIgdnMgPSBzZXR1cFNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIoZ2wpLAorICAgICAg
ICBmcyA9IHNldHVwU2ltcGxlMkRBcnJheVVpbnRUZXh0dXJlRnJhZ21lbnRTaGFkZXIoZ2wpOwor
ICAgIGlmICghdnMgfHwgIWZzKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgdmFy
IHByb2dyYW0gPSBXZWJHTFRlc3RVdGlscy5zZXR1cFByb2dyYW0oCisgICAgICBnbCwKKyAgICAg
IFt2cywgZnNdLAorICAgICAgWyd2UG9zaXRpb24nLCAndGV4Q29vcmQwJ10sCisgICAgICBbb3B0
X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uXSk7CisgICAgaWYgKCFwcm9n
cmFtKSB7CisgICAgICBnbC5kZWxldGVTaGFkZXIoZnMpOworICAgICAgZ2wuZGVsZXRlU2hhZGVy
KHZzKTsKKyAgICB9CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJv
Z3JhbTsKKyAgfTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIHNpbXBsZSAyRF9BUlJBWSBzaWdu
ZWQgaW50ZWdlciB0ZXh0dXJlIHByb2dyYW0uCisgICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5n
Q29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisgICAqIEBwYXJh
bSB7bnVtYmVyfSBvcHRfcG9zaXRpb25Mb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciBw
b3NpdGlvbi4KKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdF90ZXhjb29yZExvY2F0aW9uIFRoZSBh
dHRyaWIgbG9jYXRpb24gZm9yIHRleHR1cmUgY29vcmRzLgorICAgKiBAcmV0dXJuIHtXZWJHTFBy
b2dyYW19CisgICAqLworICB2YXIgc2V0dXBTaW1wbGUyREFycmF5SW50VGV4dHVyZVByb2dyYW0g
PSBmdW5jdGlvbihnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9u
KQorICB7CisgICAgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSBvcHRfcG9zaXRpb25Mb2NhdGlvbiB8
fCAwOworICAgIG9wdF90ZXhjb29yZExvY2F0aW9uID0gb3B0X3RleGNvb3JkTG9jYXRpb24gfHwg
MTsKKyAgICB2YXIgdnMgPSBzZXR1cFNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIoZ2wpLAorICAg
ICAgICBmcyA9IHNldHVwU2ltcGxlMkRBcnJheUludFRleHR1cmVGcmFnbWVudFNoYWRlcihnbCk7
CisgICAgaWYgKCF2cyB8fCAhZnMpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2
YXIgcHJvZ3JhbSA9IFdlYkdMVGVzdFV0aWxzLnNldHVwUHJvZ3JhbSgKKyAgICAgIGdsLAorICAg
ICAgW3ZzLCBmc10sCisgICAgICBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwKKyAgICAgIFtv
cHRfcG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb25dKTsKKyAgICBpZiAoIXBy
b2dyYW0pIHsKKyAgICAgIGdsLmRlbGV0ZVNoYWRlcihmcyk7CisgICAgICBnbC5kZWxldGVTaGFk
ZXIodnMpOworICAgIH0KKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBw
cm9ncmFtOworICB9OworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgcHJvZ3JhbSBhbmQgYnVmZmVy
cyBmb3IgcmVuZGVyaW5nIGEgdW5zaWduZWQgaW50ZWdlciB0ZXh0dXJlZCBxdWFkLgorICAgKiBA
cGFyYW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQgdG8gdXNlLgorICAgKiBAcmV0dXJuIHshV2ViR0xQcm9ncmFtfQorICAgKi8KKyAgdmFyIHNl
dHVwVWludFRleHR1cmVkUXVhZCA9IGZ1bmN0aW9uKGdsKSB7CisgICAgdmFyIHByb2dyYW0gPSBz
ZXR1cFNpbXBsZVVpbnRUZXh0dXJlUHJvZ3JhbShnbCk7CisgICAgd3R1LnNldHVwVW5pdFF1YWQo
Z2wpOworICAgIHJldHVybiBwcm9ncmFtOworICB9OworCisgIC8qKgorICAgKiBDcmVhdGVzIGEg
cHJvZ3JhbSBhbmQgYnVmZmVycyBmb3IgcmVuZGVyaW5nIGEgc2lnbmVkIGludGVnZXIgdGV4dHVy
ZWQgcXVhZC4KKyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbCBUaGUgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHJldHVybiB7IVdlYkdMUHJvZ3JhbX0K
KyAgICovCisgIHZhciBzZXR1cEludFRleHR1cmVkUXVhZCA9IGZ1bmN0aW9uKGdsKSB7CisgICAg
dmFyIHByb2dyYW0gPSBzZXR1cFNpbXBsZUludFRleHR1cmVQcm9ncmFtKGdsKTsKKyAgICB3dHUu
c2V0dXBVbml0UXVhZChnbCk7CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoqCisg
ICAqIENyZWF0ZXMgYSBwcm9ncmFtIGFuZCBidWZmZXJzIGZvciByZW5kZXJpbmcgYSB0ZXh0dXJl
ZCBxdWFkIHdpdGgKKyAgICogYSBjdWJlIG1hcCB1bnNpZ25lZCBpbnRlZ2VyIHRleHR1cmUuCisg
ICAqIEBwYXJhbSB7IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCB0byB1c2UuCisgICAqIEByZXR1cm4geyFXZWJHTFByb2dyYW19CisgICAqLworICB2
YXIgc2V0dXBVaW50VGV4dHVyZWRRdWFkV2l0aEN1YmVNYXAgPSBmdW5jdGlvbihnbCkKKyAgewor
ICAgIHZhciBwcm9ncmFtID0gc2V0dXBTaW1wbGVDdWJlTWFwVWludFRleHR1cmVQcm9ncmFtKGds
KTsKKyAgICB3dHUuc2V0dXBVbml0UXVhZChnbCk7CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07
CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBwcm9ncmFtIGFuZCBidWZmZXJzIGZvciByZW5kZXJp
bmcgYSB0ZXh0dXJlZCBxdWFkIHdpdGgKKyAgICogYSBjdWJlIG1hcCBzaWduZWQgaW50ZWdlciB0
ZXh0dXJlLgorICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJH
TFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlLgorICAgKiBAcmV0dXJuIHshV2ViR0xQcm9ncmFtfQor
ICAgKi8KKyAgdmFyIHNldHVwSW50VGV4dHVyZWRRdWFkV2l0aEN1YmVNYXAgPSBmdW5jdGlvbihn
bCkKKyAgeworICAgIHZhciBwcm9ncmFtID0gc2V0dXBTaW1wbGVDdWJlTWFwSW50VGV4dHVyZVBy
b2dyYW0oZ2wpOworICAgIHd0dS5zZXR1cFVuaXRRdWFkKGdsKTsKKyAgICByZXR1cm4gcHJvZ3Jh
bTsKKyAgfTsKKworICAvKioKKyAgICogRG9lcyB0aGUgR0wgaW50ZXJuYWwgZm9ybWF0IHJlcHJl
c2VudCBhbiB1bnNpZ25lZCBpbnRlZ2VyIGZvcm1hdAorICAgKiB0ZXh0dXJlPworICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgKi8KKyAgdmFyIGlzVWludEZvcm1hdCA9IGZ1bmN0aW9uKGludGVy
bmFsRm9ybWF0KQorICB7CisgICAgcmV0dXJuIChpbnRlcm5hbEZvcm1hdCA9PSAiUjhVSSIgfHwg
aW50ZXJuYWxGb3JtYXQgPT0gIlJHOFVJIiB8fCBpbnRlcm5hbEZvcm1hdCA9PSAiUkdCOFVJIiB8
fCBpbnRlcm5hbEZvcm1hdCA9PSAiUkdCQThVSSIgfHwKKyAgICAgICAgICAgIGludGVybmFsRm9y
bWF0ID09ICJSMTZVSSIgfHwgaW50ZXJuYWxGb3JtYXQgPT0gIlJHMTZVSSIgfHwgaW50ZXJuYWxG
b3JtYXQgPT0gIlJHQjE2VUkiIHx8IGludGVybmFsRm9ybWF0ID09ICJSR0JBMTZVSSIgfHwKKyAg
ICAgICAgICAgIGludGVybmFsRm9ybWF0ID09ICJSMzJVSSIgfHwgaW50ZXJuYWxGb3JtYXQgPT0g
IlJHMzJVSSIgfHwgaW50ZXJuYWxGb3JtYXQgPT0gIlJHQjMyVUkiIHx8IGludGVybmFsRm9ybWF0
ID09ICJSR0JBMzJVSSIpOworICB9OworCisgIC8qKgorICAgKiBEb2VzIHRoZSBHTCBpbnRlcm5h
bCBmb3JtYXQgcmVwcmVzZW50IGFuIHNpZ25lZCBpbnRlZ2VyIGZvcm1hdAorICAgKiB0ZXh0dXJl
PworICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgKi8KKyAgdmFyIGlzSW50Rm9ybWF0ID0gZnVu
Y3Rpb24oaW50ZXJuYWxGb3JtYXQpCisgIHsKKyAgICByZXR1cm4gKGludGVybmFsRm9ybWF0ID09
ICJSOEkiIHx8IGludGVybmFsRm9ybWF0ID09ICJSRzhJIiB8fCBpbnRlcm5hbEZvcm1hdCA9PSAi
UkdCOEkiIHx8IGludGVybmFsRm9ybWF0ID09ICJSR0JBOEkiIHx8CisgICAgICAgICAgICBpbnRl
cm5hbEZvcm1hdCA9PSAiUjE2SSIgfHwgaW50ZXJuYWxGb3JtYXQgPT0gIlJHMTZJIiB8fCBpbnRl
cm5hbEZvcm1hdCA9PSAiUkdCMTZJIiB8fCBpbnRlcm5hbEZvcm1hdCA9PSAiUkdCQTE2SSIgfHwK
KyAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID09ICJSMzJJIiB8fCBpbnRlcm5hbEZvcm1hdCA9
PSAiUkczMkkiIHx8IGludGVybmFsRm9ybWF0ID09ICJSR0IzMkkiIHx8IGludGVybmFsRm9ybWF0
ID09ICJSR0JBMzJJIik7CisgIH07CisKKyAgLyoqCisgICAqIENyZWF0ZWEgYSBwcm9ncmFtIGFu
ZCBidWZmZXJzIGZvciByZW5kZXJpbmcgYSB0ZXh0dXJlZCBxdWFkIGZvcgorICAgKiB0ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZSB0ZXN0cy4gSGFuZGxlIHNlbGVjdGlvbiBvZiBjb3JyZWN0CisgICAq
IHByb2dyYW0gdG8gaGFuZGxlIHRleHR1cmUgZm9ybWF0LgorICAgKiBAcGFyYW0geyFXZWJHTFJl
bmRlcmluZ0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlLgorICAg
KiBAcGFyYW0ge3N0cmluZ30gaW50ZXJuYWxGb3JtYXQgVGhlIGludGVybmFsIGZvcm1hdCBmb3Ig
dGV4dHVyZSB0byBiZSB0ZXN0ZWQuCisgICAqLworICB2YXIgc2V0dXBUZXh0dXJlZFF1YWQgPSBm
dW5jdGlvbihnbCwgaW50ZXJuYWxGb3JtYXQpCisgIHsKKyAgICBpZiAoaXNVaW50Rm9ybWF0KGlu
dGVybmFsRm9ybWF0KSkKKyAgICAgIHJldHVybiBzZXR1cFVpbnRUZXh0dXJlZFF1YWQoZ2wpOwor
ICAgIGlmIChpc0ludEZvcm1hdChpbnRlcm5hbEZvcm1hdCkpCisgICAgICByZXR1cm4gc2V0dXBJ
bnRUZXh0dXJlZFF1YWQoZ2wpOworICAgIHJldHVybiB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wp
OworICB9OworCisgIC8qKgorICAgKiBDcmVhdGVhIGEgcHJvZ3JhbSBhbmQgYnVmZmVycyBmb3Ig
cmVuZGVyaW5nIGEgdGV4dHVyZWQgcXVhZCB3aXRoCisgICAqIGEgY3ViZSBtYXAgZm9yIHRleC1p
bWFnZS1hbmQtc3ViLWltYWdlIHRlc3RzLiBIYW5kbGUgc2VsZWN0aW9uIG9mCisgICAqIGNvcnJl
Y3QgcHJvZ3JhbSB0byBoYW5kbGUgdGV4dHVyZSBmb3JtYXQuCisgICAqIEBwYXJhbSB7IVdlYkdM
UmVuZGVyaW5nQ29udGV4dH0gZ2wgVGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byB1c2UuCisg
ICAqIEBwYXJhbSB7c3RyaW5nfSBpbnRlcm5hbEZvcm1hdCBUaGUgaW50ZXJuYWwgZm9ybWF0IGZv
ciB0ZXh0dXJlIHRvIGJlIHRlc3RlZC4KKyAgICovCisgIGZ1bmN0aW9uIHNldHVwVGV4dHVyZWRR
dWFkV2l0aEN1YmVNYXAoZ2wsIGludGVybmFsRm9ybWF0KQorICB7CisgICAgaWYgKGlzVWludEZv
cm1hdChpbnRlcm5hbEZvcm1hdCkpCisgICAgICByZXR1cm4gc2V0dXBVaW50VGV4dHVyZWRRdWFk
V2l0aEN1YmVNYXAoZ2wpOworICAgIGlmIChpc0ludEZvcm1hdChpbnRlcm5hbEZvcm1hdCkpCisg
ICAgICByZXR1cm4gc2V0dXBJbnRUZXh0dXJlZFF1YWRXaXRoQ3ViZU1hcChnbCk7CisgICAgcmV0
dXJuIHd0dS5zZXR1cFRleHR1cmVkUXVhZFdpdGhDdWJlTWFwKGdsKTsKKyAgfQorCisgIC8qKgor
ICAgKiBDcmVhdGVhIGEgcHJvZ3JhbSBhbmQgYnVmZmVycyBmb3IgcmVuZGVyaW5nIGEgdGV4dHVy
ZWQgcXVhZCB3aXRoIGEgM0QgdGV4dHVyZQorICAgKiBmb3IgdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UgdGVzdHMuIEhhbmRsZSBzZWxlY3Rpb24gb2YgY29ycmVjdAorICAgKiBwcm9ncmFtIHRvIGhh
bmRsZSB0ZXh0dXJlIGZvcm1hdC4KKyAgICogQHBhcmFtIHshV2ViR0xSZW5kZXJpbmdDb250ZXh0
fSBnbCBUaGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHVzZS4KKyAgICogQHBhcmFtIHtzdHJp
bmd9IGludGVybmFsRm9ybWF0IFRoZSBpbnRlcm5hbCBmb3JtYXQgZm9yIHRleHR1cmUgdG8gYmUg
dGVzdGVkLgorICAgKi8KKyAgdmFyIHNldHVwVGV4dHVyZWRRdWFkV2l0aDNEID0gZnVuY3Rpb24o
Z2wsIGludGVybmFsRm9ybWF0KQorICB7CisgICAgdmFyIHByb2dyYW07CisgICAgaWYgKGlzVWlu
dEZvcm1hdChpbnRlcm5hbEZvcm1hdCkpCisgICAgICBwcm9ncmFtID0gc2V0dXBTaW1wbGUzRFVp
bnRUZXh0dXJlUHJvZ3JhbShnbCk7CisgICAgZWxzZSBpZiAoaXNJbnRGb3JtYXQoaW50ZXJuYWxG
b3JtYXQpKQorICAgICAgcHJvZ3JhbSA9IHNldHVwU2ltcGxlM0RJbnRUZXh0dXJlUHJvZ3JhbShn
bCk7CisgICAgZWxzZQorICAgICAgcHJvZ3JhbSA9IHNldHVwU2ltcGxlM0RUZXh0dXJlUHJvZ3Jh
bShnbCk7CisgICAgdmFyIHVSQ29vcmRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgJ3VSQ29vcmQnKTsKKyAgICBnbC51bmlmb3JtMWYodVJDb29yZExvYywgMC4wKTsKKyAgICB3
dHUuc2V0dXBVbml0UXVhZChnbCk7CisgICAgcmV0dXJuIHByb2dyYW07CisgIH07CisKKyAgLyoq
CisgICAqIENyZWF0ZWEgYSBwcm9ncmFtIGFuZCBidWZmZXJzIGZvciByZW5kZXJpbmcgYSB0ZXh0
dXJlZCBxdWFkIHdpdGggYSAyRF9BUlJBWQorICAgKiB0ZXh0dXJlIGZvciB0ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZSB0ZXN0cy4gSGFuZGxlIHNlbGVjdGlvbiBvZiBjb3JyZWN0CisgICAqIHByb2dy
YW0gdG8gaGFuZGxlIHRleHR1cmUgZm9ybWF0LgorICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmlu
Z0NvbnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlLgorICAgKiBAcGFy
YW0ge3N0cmluZ30gaW50ZXJuYWxGb3JtYXQgVGhlIGludGVybmFsIGZvcm1hdCBmb3IgdGV4dHVy
ZSB0byBiZSB0ZXN0ZWQuCisgICAqLworICB2YXIgc2V0dXBUZXh0dXJlZFF1YWRXaXRoMkRBcnJh
eSA9IGZ1bmN0aW9uKGdsLCBpbnRlcm5hbEZvcm1hdCkKKyAgeworICAgIHZhciBwcm9ncmFtOwor
ICAgIGlmIChpc1VpbnRGb3JtYXQoaW50ZXJuYWxGb3JtYXQpKQorICAgICAgcHJvZ3JhbSA9IHNl
dHVwU2ltcGxlMkRBcnJheVVpbnRUZXh0dXJlUHJvZ3JhbShnbCk7CisgICAgZWxzZSBpZiAoaXNJ
bnRGb3JtYXQoaW50ZXJuYWxGb3JtYXQpKQorICAgICAgcHJvZ3JhbSA9IHNldHVwU2ltcGxlMkRB
cnJheUludFRleHR1cmVQcm9ncmFtKGdsKTsKKyAgICBlbHNlCisgICAgICBwcm9ncmFtID0gc2V0
dXBTaW1wbGUyREFycmF5VGV4dHVyZVByb2dyYW0oZ2wpOworICAgIHZhciB1UkNvb3JkTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1UkNvb3JkJyk7CisgICAgZ2wudW5pZm9y
bTFmKHVSQ29vcmRMb2MsIDAuMCk7CisgICAgd3R1LnNldHVwVW5pdFF1YWQoZ2wpOworICAgIHJl
dHVybiBwcm9ncmFtOworICB9OworCisgIHJldHVybiB7CisgICAgc2V0dXBUZXh0dXJlZFF1YWQ6
IHNldHVwVGV4dHVyZWRRdWFkLAorICAgIHNldHVwVGV4dHVyZWRRdWFkV2l0aEN1YmVNYXA6IHNl
dHVwVGV4dHVyZWRRdWFkV2l0aEN1YmVNYXAsCisgICAgc2V0dXBUZXh0dXJlZFF1YWRXaXRoM0Q6
IHNldHVwVGV4dHVyZWRRdWFkV2l0aDNELAorICAgIHNldHVwVGV4dHVyZWRRdWFkV2l0aDJEQXJy
YXk6IHNldHVwVGV4dHVyZWRRdWFkV2l0aDJEQXJyYXkKKyAgfTsKKworfSgpKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2Utd2l0aC1pbWFnZS1iaXRtYXAtdXRpbHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGZhZWRmOWVhYTVmZWEyNzVkOGE0ZjZlNDYyYjY5NzE3YjZkYjliNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLXdpdGgtaW1hZ2UtYml0bWFwLXV0aWxzLmpzCkBAIC0w
LDAgKzEsNDM1IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisK
KworZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uSW1hZ2VCaXRtYXBUZXN0KHVzZVRleFN1YkltYWdl
LCBiaW5kaW5nVGFyZ2V0LCBwcm9ncmFtLCBiaXRtYXAsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhh
LCBvcHRpb25zVmFsLAorICAgIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBl
LCBnbCwgdGl1LCB3dHUsIHRvbGVyYW5jZSkKK3sKKyAgICB2YXIgaGFsZlJlZCA9IFsxMjgsIDAs
IDBdOworICAgIHZhciBoYWxmR3JlZW4gPSBbMCwgMTI4LCAwXTsKKyAgICB2YXIgcmVkQ29sb3Ig
PSBbMjU1LCAwLCAwXTsKKyAgICB2YXIgZ3JlZW5Db2xvciA9IFswLCAyNTUsIDBdOworICAgIHZh
ciBibGFja0NvbG9yID0gWzAsIDAsIDBdOworCisgICAgc3dpdGNoIChnbFtwaXhlbEZvcm1hdF0p
IHsKKyAgICAgIGNhc2UgZ2wuUkVEOgorICAgICAgY2FzZSBnbC5SRURfSU5URUdFUjoKKyAgICAg
ICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgaGFsZkdyZWVuID0gWzAsIDAsIDBd
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgZ2wuTFVNSU5BTkNFOgorICAgICAgY2FzZSBn
bC5MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIHJlZENvbG9yID0gWzI1NSwgMjU1LCAyNTVdOwor
ICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICBoYWxmUmVkID0gWzEyOCwg
MTI4LCAxMjhdOworICAgICAgICBoYWxmR3JlZW4gPSBbMCwgMCwgMF07CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBnbC5BTFBIQToKKyAgICAgICAgcmVkQ29sb3IgPSBbMCwgMCwgMF07Cisg
ICAgICAgIGdyZWVuQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgIGhhbGZSZWQgPSBbMCwgMCwg
MF07CisgICAgICAgIGhhbGZHcmVlbiA9IFswLCAwLCAwXTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGdsW2ludGVy
bmFsRm9ybWF0XSkgeworICAgICAgY2FzZSBnbC5TUkdCODoKKyAgICAgIGNhc2UgZ2wuU1JHQjhf
QUxQSEE4OgorICAgICAgICBoYWxmUmVkID0gd3R1LnNSR0JUb0xpbmVhcihoYWxmUmVkKTsKKyAg
ICAgICAgaGFsZkdyZWVuID0gd3R1LnNSR0JUb0xpbmVhcihoYWxmR3JlZW4pOworICAgICAgICBi
cmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHZhciBz
dHI7CisgICAgaWYgKG9wdGlvbnNWYWwuaXMzRCkgeworICAgICAgICBzdHIgPSAnVGVzdGluZyAn
ICsgKHVzZVRleFN1YkltYWdlID8gJ3RleFN1YkltYWdlM0QnIDogJ3RleEltYWdlM0QnKSArCisg
ICAgICAgICAgICAnIHdpdGggZmxpcFk9JyArIGZsaXBZICsgJywgcHJlbXVsdGlwbHlBbHBoYT0n
ICsgcHJlbXVsdGlwbHlBbHBoYSArCisgICAgICAgICAgICAnLCBiaW5kaW5nVGFyZ2V0PScgKyAo
YmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFXzNEID8gJ1RFWFRVUkVfM0QnIDogJ1RFWFRVUkVf
MkRfQVJSQVknKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHIgPSAnVGVzdGluZyAnICsgKHVz
ZVRleFN1YkltYWdlID8gJ3RleFN1YkltYWdlMkQnIDogJ3RleEltYWdlMkQnKSArCisgICAgICAg
ICAgICAgICcgd2l0aCBmbGlwWT0nICsgZmxpcFkgKyAnLCBwcmVtdWx0aXBseUFscGhhPScgKyBw
cmVtdWx0aXBseUFscGhhICsKKyAgICAgICAgICAgICAgJywgYmluZGluZ1RhcmdldD0nICsgKGJp
bmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRCA/ICdURVhUVVJFXzJEJyA6ICdURVhUVVJFX0NV
QkVfTUFQJyk7CisgICAgfQorICAgIGRlYnVnKHN0cik7CisgICAgYnVmZmVyZWRMb2dUb0NvbnNv
bGUoc3RyKTsKKworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9C
VUZGRVJfQklUKTsKKyAgICAvLyBFbmFibGUgd3JpdGVzIHRvIHRoZSBSR0JBIGNoYW5uZWxzCisg
ICAgZ2wuY29sb3JNYXNrKDEsIDEsIDEsIDApOworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAg
ICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICAvLyBTZXQgdXAg
dGV4dHVyZSBwYXJhbWV0ZXJzCisgICAgZ2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBn
bC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmko
YmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBn
bC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFN
UF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRV
UkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKworICAgIHZhciB0YXJnZXRzID0gW2JpbmRp
bmdUYXJnZXRdOworICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVAp
IHsKKyAgICAgICAgdGFyZ2V0cyA9IFtnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsCisg
ICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAg
ICAgICAgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwKKyAgICAgICAgICAg
ICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksCisgICAgICAgICAgICAgICAg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICAgICAgICAgICAgIGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl07CisgICAgfQorCisgICAgYnVmZmVyZWRMb2dU
b0NvbnNvbGUoIlN0YXJ0IHVwbG9hZGluZyB0aGUgaW1hZ2UgaW50byBhIHRleHR1cmUiKTsKKyAg
ICAvLyBVcGxvYWQgdGhlIGltYWdlIGludG8gdGhlIHRleHR1cmUKKyAgICBmb3IgKHZhciB0dCA9
IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgaWYgKG9wdGlvbnNWYWwu
aXMzRCkgeworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50
ZXJuYWxGb3JtYXRdLCBiaXRtYXAud2lkdGgsIGJpdG1hcC5oZWlnaHQsIDEgLyogZGVwdGggKi8s
IDAsCisgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwg
bnVsbCk7CisgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTNEKHRhcmdldHNbdHRdLCAwLCAwLCAw
LCAwLCBiaXRtYXAud2lkdGgsIGJpdG1hcC5oZWlnaHQsIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgYml0bWFwKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh1c2VUZXhTdWJJbWFnZSkgeworICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAg
ICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1hdF0s
IGJpdG1hcC53aWR0aCwgYml0bWFwLmhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAg
ICAgICAgZ2wudGV4U3ViSW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgMCwgMCwgZ2xbcGl4ZWxGb3Jt
YXRdLCBnbFtwaXhlbFR5cGVdLCBiaXRtYXApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1h
dF0sIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgYml0bWFwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiVXBsb2FkaW5n
IGludG8gdGV4dHVyZSBjb21wbGV0ZWQiKTsKKworICAgIHZhciB3aWR0aCA9IGdsLmNhbnZhcy53
aWR0aDsKKyAgICB2YXIgaGFsZldpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOworICAgIHZh
ciBxdWFydGVyV2lkdGggPSBNYXRoLmZsb29yKGhhbGZXaWR0aCAvIDIpOworICAgIHZhciBoZWln
aHQgPSBnbC5jYW52YXMuaGVpZ2h0OworICAgIHZhciBoYWxmSGVpZ2h0ID0gTWF0aC5mbG9vciho
ZWlnaHQgLyAyKTsKKyAgICB2YXIgcXVhcnRlckhlaWdodCA9IE1hdGguZmxvb3IoaGFsZkhlaWdo
dCAvIDIpOworCisgICAgdmFyIHRvcCA9IGZsaXBZID8gcXVhcnRlckhlaWdodCA6IChoZWlnaHQg
LSBoYWxmSGVpZ2h0ICsgcXVhcnRlckhlaWdodCk7CisgICAgdmFyIGJvdHRvbSA9IGZsaXBZID8g
KGhlaWdodCAtIGhhbGZIZWlnaHQgKyBxdWFydGVySGVpZ2h0KSA6IHF1YXJ0ZXJIZWlnaHQ7Cisg
ICAgdmFyIGxlZnQgPSBxdWFydGVyV2lkdGg7CisgICAgdmFyIHJpZ2h0ID0gaGFsZldpZHRoICsg
cXVhcnRlcldpZHRoIC8gMjsKKworICAgIHZhciB0bCA9IHJlZENvbG9yOworICAgIHZhciB0ciA9
IHByZW11bHRpcGx5QWxwaGEgPyAoKG9wdGlvbnNWYWwuYWxwaGEgPT0gMC41KSA/IGhhbGZSZWQg
OiAob3B0aW9uc1ZhbC5hbHBoYSA9PSAxKSA/IHJlZENvbG9yIDogYmxhY2tDb2xvcikgOiByZWRD
b2xvcjsKKyAgICB2YXIgYmwgPSBncmVlbkNvbG9yOworICAgIHZhciBiciA9IHByZW11bHRpcGx5
QWxwaGEgPyAoKG9wdGlvbnNWYWwuYWxwaGEgPT0gMC41KSA/IGhhbGZHcmVlbiA6IChvcHRpb25z
VmFsLmFscGhhID09IDEpID8gZ3JlZW5Db2xvciA6IGJsYWNrQ29sb3IpIDogZ3JlZW5Db2xvcjsK
KworICAgIHZhciBsb2M7CisgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJF
X01BUCkgeworICAgICAgICBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZh
Y2UiKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7
ICsrdHQpIHsKKyAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01B
UCkgeworICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgdGFyZ2V0c1t0dF0pOworICAgICAg
ICB9CisgICAgICAgIC8vIERyYXcgdGhlIHRyaWFuZ2xlcworICAgICAgICB3dHUuY2xlYXJBbmRE
cmF3VW5pdFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKworICAgICAgICAvLyBDaGVjayB0aGUg
dG9wIHBpeGVsIGFuZCBib3R0b20gcGl4ZWwgYW5kIG1ha2Ugc3VyZSB0aGV5IGhhdmUKKyAgICAg
ICAgLy8gdGhlIHJpZ2h0IGNvbG9yLgorICAgICAgICBsZXQgc2tpcEFscGhhVGVzdHMgPSAocHJl
bXVsdGlwbHlBbHBoYSA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnNWYWwuYWxwaGEgIT0gMS4wKTsK
KyAgICAgICAgbGV0IHNraXBTdHIgPSAiIChTa2lwcGluZyBjaGVja2luZyByaWdodCBwaXhlbCBz
aW5jZSBwcmVtdWx0aXBseUFscGhhIHdhcyB1bmRlZmluZWQgYW5kIGFscGhhICE9IDEuMCkiOwor
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiQ2hlY2tpbmcgIiArIChmbGlwWSA/ICJ0b3Ai
IDogImJvdHRvbSIpKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgbGVmdCwgYm90
dG9tLCAyLCAyLCB0bCwgInNob3VsZEJlICIgKyB0bCArICIgKy8tIiArIHRvbGVyYW5jZSwgdG9s
ZXJhbmNlKTsKKyAgICAgICAgaWYgKHNraXBBbHBoYVRlc3RzKSB7CisgICAgICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZShza2lwU3RyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHJpZ2h0LCBib3R0b20sIDIsIDIsIHRyLCAic2hvdWxk
QmUgIiArIHRyICsgIiArLy0iICsgdG9sZXJhbmNlLCB0b2xlcmFuY2UpOworICAgICAgICB9Cisg
ICAgICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJDaGVja2luZyAiICsgKGZsaXBZID8gImJvdHRv
bSIgOiAidG9wIikpOworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBsZWZ0LCB0b3As
IDIsIDIsIGJsLCAic2hvdWxkQmUgIiArIGJsICsgIiArLy0iICsgdG9sZXJhbmNlLCB0b2xlcmFu
Y2UpOworICAgICAgICBpZiAoc2tpcEFscGhhVGVzdHMpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVk
TG9nVG9Db25zb2xlKHNraXBTdHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgcmlnaHQsIHRvcCwgMiwgMiwgYnIsICJzaG91bGRCZSAiICsg
YnIgKyAiICsvLSIgKyB0b2xlcmFuY2UsIHRvbGVyYW5jZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJy
b3JzIik7Cit9CisKK2Z1bmN0aW9uIHJlc2V0VW5wYWNrUGFyYW1zKGdsKQoreworICAgIGdsLnBp
eGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgZ2wucGl4ZWxTdG9yZWko
Z2wuVU5QQUNLX1NLSVBfUk9XUywgMCk7CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NL
SVBfSU1BR0VTLCAwKTsKKyAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUk9XX0xFTkdUSCwg
MCk7CisgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0lNQUdFX0hFSUdIVCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbkltYWdlQml0bWFwVGVzdFN1YlNvdXJjZSh1c2VUZXhT
dWJJbWFnZSwgYmluZGluZ1RhcmdldCwgcHJvZ3JhbSwgYml0bWFwLCBmbGlwWSwgcHJlbXVsdGlw
bHlBbHBoYSwgb3B0aW9uc1ZhbCwKKyAgICBpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQsIHBp
eGVsVHlwZSwgZ2wsIHRpdSwgd3R1LCB0b2xlcmFuY2UpCit7CisgICAgdmFyIGhhbGZSZWQgPSBb
MTI4LCAwLCAwXTsKKyAgICB2YXIgaGFsZkdyZWVuID0gWzAsIDEyOCwgMF07CisgICAgdmFyIHJl
ZENvbG9yID0gWzI1NSwgMCwgMF07CisgICAgdmFyIGdyZWVuQ29sb3IgPSBbMCwgMjU1LCAwXTsK
KyAgICB2YXIgYmxhY2tDb2xvciA9IFswLCAwLCAwXTsKKworICAgIHN3aXRjaCAoZ2xbcGl4ZWxG
b3JtYXRdKSB7CisgICAgICBjYXNlIGdsLlJFRDoKKyAgICAgIGNhc2UgZ2wuUkVEX0lOVEVHRVI6
CisgICAgICAgIGdyZWVuQ29sb3IgPSBbMCwgMCwgMF07CisgICAgICAgIGhhbGZHcmVlbiA9IFsw
LCAwLCAwXTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGdsLkxVTUlOQU5DRToKKyAgICAg
IGNhc2UgZ2wuTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICByZWRDb2xvciA9IFsyNTUsIDI1NSwg
MjU1XTsKKyAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgaGFsZlJlZCA9
IFsxMjgsIDEyOCwgMTI4XTsKKyAgICAgICAgaGFsZkdyZWVuID0gWzAsIDAsIDBdOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgZ2wuQUxQSEE6CisgICAgICAgIHJlZENvbG9yID0gWzAsIDAs
IDBdOworICAgICAgICBncmVlbkNvbG9yID0gWzAsIDAsIDBdOworICAgICAgICBoYWxmUmVkID0g
WzAsIDAsIDBdOworICAgICAgICBoYWxmR3JlZW4gPSBbMCwgMCwgMF07CisgICAgICAgIGJyZWFr
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChn
bFtpbnRlcm5hbEZvcm1hdF0pIHsKKyAgICAgIGNhc2UgZ2wuU1JHQjg6CisgICAgICBjYXNlIGds
LlNSR0I4X0FMUEhBODoKKyAgICAgICAgaGFsZlJlZCA9IHd0dS5zUkdCVG9MaW5lYXIoaGFsZlJl
ZCk7CisgICAgICAgIGhhbGZHcmVlbiA9IHd0dS5zUkdCVG9MaW5lYXIoaGFsZkdyZWVuKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICB2YXIgc3RyOworICAgIGlmIChvcHRpb25zVmFsLmlzM0QpIHsKKyAgICAgICAgc3RyID0gJ1Rl
c3RpbmcgJyArICh1c2VUZXhTdWJJbWFnZSA/ICd0ZXhTdWJJbWFnZTNEJyA6ICd0ZXhJbWFnZTNE
JykgKyAnW1N1YlNvdXJjZV0nICsKKyAgICAgICAgICAgICcgd2l0aCBmbGlwWT0nICsgZmxpcFkg
KyAnLCBwcmVtdWx0aXBseUFscGhhPScgKyBwcmVtdWx0aXBseUFscGhhICsKKyAgICAgICAgICAg
ICcsIGJpbmRpbmdUYXJnZXQ9VEVYVFVSRV8zRCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3Ry
ID0gJ1Rlc3RpbmcgJyArICh1c2VUZXhTdWJJbWFnZSA/ICd0ZXhTdWJJbWFnZTJEJyA6ICd0ZXhJ
bWFnZTJEJykgKyAnW1N1YlNvdXJjZV0nICsKKyAgICAgICAgICAgICcgd2l0aCBmbGlwWT0nICsg
ZmxpcFkgKyAnLCBwcmVtdWx0aXBseUFscGhhPScgKyBwcmVtdWx0aXBseUFscGhhICsKKyAgICAg
ICAgICAgICcsIGJpbmRpbmdUYXJnZXQ9VEVYVFVSRV8yRCc7CisgICAgfQorICAgIGRlYnVnKHN0
cik7CisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoc3RyKTsKKworICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAvLyBFbmFibGUgd3Jp
dGVzIHRvIHRoZSBSR0JBIGNoYW5uZWxzCisgICAgZ2wuY29sb3JNYXNrKDEsIDEsIDEsIDApOwor
ICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIC8vIEJpbmQgdGhlIHRl
eHR1cmUgdG8gdGV4dHVyZSB1bml0IDAKKyAgICBnbC5iaW5kVGV4dHVyZShiaW5kaW5nVGFyZ2V0
LCB0ZXh0dXJlKTsKKyAgICAvLyBTZXQgdXAgdGV4dHVyZSBwYXJhbWV0ZXJzCisgICAgZ2wudGV4
UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJF
U1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoYmluZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQs
IGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0
ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsK
KworICAgIHZhciBzcmNUTCA9IHJlZENvbG9yOworICAgIHZhciBzcmNUUiA9IHByZW11bHRpcGx5
QWxwaGEgPyAoKG9wdGlvbnNWYWwuYWxwaGEgPT0gMC41KSA/IGhhbGZSZWQgOiAob3B0aW9uc1Zh
bC5hbHBoYSA9PSAxKSA/IHJlZENvbG9yIDogYmxhY2tDb2xvcikgOiByZWRDb2xvcjsKKyAgICB2
YXIgc3JjQkwgPSBncmVlbkNvbG9yOworICAgIHZhciBzcmNCUiA9IHByZW11bHRpcGx5QWxwaGEg
PyAoKG9wdGlvbnNWYWwuYWxwaGEgPT0gMC41KSA/IGhhbGZHcmVlbiA6IChvcHRpb25zVmFsLmFs
cGhhID09IDEpID8gZ3JlZW5Db2xvciA6IGJsYWNrQ29sb3IpIDogZ3JlZW5Db2xvcjsKKworICAg
IHZhciB0bCwgdHIsIGJsLCBicjsKKworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJTdGFydCB1
cGxvYWRpbmcgdGhlIGltYWdlIGludG8gYSB0ZXh0dXJlIik7CisgICAgLy8gVXBsb2FkIHRoZSBp
bWFnZSBpbnRvIHRoZSB0ZXh0dXJlCisgICAgaWYgKG9wdGlvbnNWYWwuaXMzRCkgeworICAgICAg
ICBpZiAodXNlVGV4U3ViSW1hZ2UpIHsKKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRl
eHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAgICAgIGdsLnRleEltYWdlM0QoYmluZGluZ1Rh
cmdldCwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBiaXRtYXAud2lkdGgsIGJpdG1hcC5oZWlnaHQs
IDEgLyogZGVwdGggKi8sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9y
bWF0XSwgZ2xbcGl4ZWxUeXBlXSwgbnVsbCk7CisgICAgICAgICAgICAvLyBPbmx5IHVwbG9hZCB0
aGUgbGVmdCBoYWxmIGltYWdlIHRvIHRoZSByaWdodCBoYWxmIHRleHR1cmUuCisgICAgICAgICAg
ICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIDApOworICAgICAgICAgICAg
Z2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgMCk7CisgICAgICAgICAgICBnbC5w
aXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9JTUFHRVMsIDApOworICAgICAgICAgICAgZ2wudGV4
U3ViSW1hZ2UzRChiaW5kaW5nVGFyZ2V0LCAwLCBiaXRtYXAud2lkdGggLyAyLCAwLCAwLCBiaXRt
YXAud2lkdGggLyAyLCBiaXRtYXAuaGVpZ2h0LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGJpdG1hcCk7CisgICAgICAgICAg
ICB0bCA9IGJsYWNrQ29sb3I7CisgICAgICAgICAgICB0ciA9IHNyY1RMOworICAgICAgICAgICAg
YmwgPSBibGFja0NvbG9yOworICAgICAgICAgICAgYnIgPSBzcmNCTDsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIE9ubHkgdXBsb2FkIHRoZSBib3R0b20gbWlkZGxlIHF1YXJ0ZXIg
aW1hZ2UKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1BJWEVMUywg
MCk7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9ST1dTLCBiaXRt
YXAuaGVpZ2h0IC8gMik7CisgICAgICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJ
UF9JTUFHRVMsIDApOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UzRChiaW5kaW5nVGFyZ2V0LCAw
LCBnbFtpbnRlcm5hbEZvcm1hdF0sIGJpdG1hcC53aWR0aCwgYml0bWFwLmhlaWdodCAvIDIsIDEg
LyogZGVwdGggKi8sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW3BpeGVsRm9ybWF0
XSwgZ2xbcGl4ZWxUeXBlXSwgYml0bWFwKTsKKyAgICAgICAgICAgIGlmICghZmxpcFkpIHsKKyAg
ICAgICAgICAgICAgICB0bCA9IHNyY0JMOworICAgICAgICAgICAgICAgIHRyID0gc3JjQlI7Cisg
ICAgICAgICAgICAgICAgYmwgPSBzcmNCTDsKKyAgICAgICAgICAgICAgICBiciA9IHNyY0JSOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0bCA9IHNyY1RMOworICAgICAg
ICAgICAgICAgIHRyID0gc3JjVFI7CisgICAgICAgICAgICAgICAgYmwgPSBzcmNUTDsKKyAgICAg
ICAgICAgICAgICBiciA9IHNyY1RSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKHVzZVRleFN1YkltYWdlKSB7CisgICAgICAgICAgICAvLyBJbml0
aWFsaXplIHRoZSB0ZXh0dXJlIHRvIGJsYWNrIGZpcnN0CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGJpbmRpbmdUYXJnZXQsIDAsIGdsW2ludGVybmFsRm9ybWF0XSwgYml0bWFwLndpZHRoLCBi
aXRtYXAuaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1h
dF0sIGdsW3BpeGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgLy8gT25seSB1cGxvYWQgdGhl
IGxlZnQgaGFsZiBpbWFnZSB0byB0aGUgcmlnaHQgaGFsZiB0ZXh0dXJlLgorICAgICAgICAgICAg
Z2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxTLCAwKTsKKyAgICAgICAgICAgIGds
LnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIDApOworICAgICAgICAgICAgZ2wudGV4
U3ViSW1hZ2UyRChiaW5kaW5nVGFyZ2V0LCAwLCBiaXRtYXAud2lkdGggLyAyLCAwLCBiaXRtYXAu
d2lkdGggLyAyLCBiaXRtYXAuaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGJpdG1hcCk7CisgICAgICAgICAgICB0bCA9
IGJsYWNrQ29sb3I7CisgICAgICAgICAgICB0ciA9IHNyY1RMOworICAgICAgICAgICAgYmwgPSBi
bGFja0NvbG9yOworICAgICAgICAgICAgYnIgPSBzcmNCTDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIE9ubHkgdXBsb2FkIHRoZSByaWdodCBib3R0b20gaW1hZ2UuCisgICAgICAg
ICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfU0tJUF9QSVhFTFMsIGJpdG1hcC53aWR0aCAv
IDIpOworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgYml0
bWFwLmhlaWdodCAvIDIpOworICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChiaW5kaW5nVGFyZ2V0
LCAwLCBnbFtpbnRlcm5hbEZvcm1hdF0sIGJpdG1hcC53aWR0aCAvIDIsIGJpdG1hcC5oZWlnaHQg
LyAyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3Bp
eGVsVHlwZV0sIGJpdG1hcCk7CisgICAgICAgICAgICByZXNldFVucGFja1BhcmFtcyhnbCk7Cisg
ICAgICAgICAgICBpZiAoIWZsaXBZKSB7CisgICAgICAgICAgICAgICAgdGwgPSBzcmNCUjsKKyAg
ICAgICAgICAgICAgICB0ciA9IHNyY0JSOworICAgICAgICAgICAgICAgIGJsID0gc3JjQlI7Cisg
ICAgICAgICAgICAgICAgYnIgPSBzcmNCUjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdGwgPSBzcmNUUjsKKyAgICAgICAgICAgICAgICB0ciA9IHNyY1RSOworICAgICAg
ICAgICAgICAgIGJsID0gc3JjVFI7CisgICAgICAgICAgICAgICAgYnIgPSBzcmNUUjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiVXBs
b2FkaW5nIGludG8gdGV4dHVyZSBjb21wbGV0ZWQiKTsKKworICAgIHZhciB3aWR0aCA9IGdsLmNh
bnZhcy53aWR0aDsKKyAgICB2YXIgaGFsZldpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOwor
ICAgIHZhciBxdWFydGVyV2lkdGggPSBNYXRoLmZsb29yKGhhbGZXaWR0aCAvIDIpOworICAgIHZh
ciBoZWlnaHQgPSBnbC5jYW52YXMuaGVpZ2h0OworICAgIHZhciBoYWxmSGVpZ2h0ID0gTWF0aC5m
bG9vcihoZWlnaHQgLyAyKTsKKyAgICB2YXIgcXVhcnRlckhlaWdodCA9IE1hdGguZmxvb3IoaGFs
ZkhlaWdodCAvIDIpOworCisgICAgdmFyIHRvcCA9IGZsaXBZID8gcXVhcnRlckhlaWdodCA6ICho
ZWlnaHQgLSBoYWxmSGVpZ2h0ICsgcXVhcnRlckhlaWdodCk7CisgICAgdmFyIGJvdHRvbSA9IGZs
aXBZID8gKGhlaWdodCAtIGhhbGZIZWlnaHQgKyBxdWFydGVySGVpZ2h0KSA6IHF1YXJ0ZXJIZWln
aHQ7CisKKyAgICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5p
dFF1YWQoZ2wsIFswLCAwLCAwLCAyNTVdKTsKKworICAgIC8vIENoZWNrIHRoZSB0b3AgcGl4ZWwg
YW5kIGJvdHRvbSBwaXhlbCBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZQorICAgIC8vIHRoZSByaWdo
dCBjb2xvci4KKyAgICAvLyBGb3IgcmlnaHQgc2lkZSwgY2hlY2sgcGl4ZWxzIGNsb3NlciB0byBs
ZWZ0IHRvIGF2b2lkIGJvcmRlciBpbiB0aGUgdmlkZW8gdGVzdHMuCisgICAgbGV0IHNraXBBbHBo
YVRlc3RzID0gKHByZW11bHRpcGx5QWxwaGEgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zVmFsLmFs
cGhhICE9IDEuMCk7CisgICAgbGV0IHNraXBTdHIgPSAiIChTa2lwcGluZyBjaGVja2luZyByaWdo
dCBwaXhlbCBzaW5jZSBwcmVtdWx0aXBseUFscGhhIHdhcyB1bmRlZmluZWQgYW5kIGFscGhhICE9
IDEuMCkiOworICAgIGJ1ZmZlcmVkTG9nVG9Db25zb2xlKCJDaGVja2luZyAiICsgKGZsaXBZID8g
InRvcCIgOiAiYm90dG9tIikpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIHF1YXJ0ZXJX
aWR0aCwgYm90dG9tLCAyLCAyLCB0bCwgInNob3VsZEJlICIgKyB0bCArICIgKy8tIiArIHRvbGVy
YW5jZSwgdG9sZXJhbmNlKTsKKyAgICBpZiAoc2tpcEFscGhhVGVzdHMpIHsKKyAgICAgICAgYnVm
ZmVyZWRMb2dUb0NvbnNvbGUoc2tpcFN0cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd3R1LmNo
ZWNrQ2FudmFzUmVjdChnbCwgaGFsZldpZHRoICsgcXVhcnRlcldpZHRoIC8gMiwgYm90dG9tLCAy
LCAyLCB0ciwgInNob3VsZEJlICIgKyB0ciArICIgKy8tIiArIHRvbGVyYW5jZSwgdG9sZXJhbmNl
KTsKKyAgICB9CisgICAgYnVmZmVyZWRMb2dUb0NvbnNvbGUoIkNoZWNraW5nICIgKyAoZmxpcFkg
PyAiYm90dG9tIiA6ICJ0b3AiKSk7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgcXVhcnRl
cldpZHRoLCB0b3AsIDIsIDIsIGJsLCAic2hvdWxkQmUgIiArIGJsICsgIiArLy0iICsgdG9sZXJh
bmNlLCB0b2xlcmFuY2UpOworICAgIGlmIChza2lwQWxwaGFUZXN0cykgeworICAgICAgICBidWZm
ZXJlZExvZ1RvQ29uc29sZShza2lwU3RyKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCBoYWxmV2lkdGggKyBxdWFydGVyV2lkdGggLyAyLCB0b3AsIDIsIDIs
IGJyLCAic2hvdWxkQmUgIiArIGJyICsgIiArLy0iICsgdG9sZXJhbmNlLCB0b2xlcmFuY2UpOwor
ICAgIH0KKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2hvdWxk
IGJlIG5vIGVycm9ycyIpOworfQorCitmdW5jdGlvbiBydW5UZXN0T25CaW5kaW5nVGFyZ2V0SW1h
Z2VCaXRtYXAoYmluZGluZ1RhcmdldCwgcHJvZ3JhbSwgY2FzZXMsIG9wdGlvbnNWYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHBp
eGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgdG9sZXJhbmNlKQoreworICAgIGNh
c2VzLmZvckVhY2goeCA9PiB7CisgICAgICAgIHJ1bk9uZUl0ZXJhdGlvbkltYWdlQml0bWFwVGVz
dCh4LnN1YiwgYmluZGluZ1RhcmdldCwgcHJvZ3JhbSwgeC5iaXRtYXAsCisgICAgICAgICAgICB4
LmJpdG1hcC5mbGlwWSwgeC5iaXRtYXAucHJlbXVsdGlwbHksIG9wdGlvbnNWYWwsIGludGVybmFs
Rm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1LCB3dHUsIHRvbGVyYW5jZSk7
CisgICAgfSk7CisKKyAgICBpZiAod3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCkgPD0g
MSB8fAorICAgICAgICAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQIHx8IGJp
bmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV8yRF9BUlJBWSkpCisgICAgeworICAgICAgICAvLyBT
a2lwIHRlc3Rpbmcgc291cmNlIHN1YiByZWdpb24gb24gVEVYVFVSRV9DVUJFX01BUCBhbmQgVEVY
VFVSRV8yRF9BUlJBWSBvbiBXZWJHTDIgdG8gc2F2ZQorICAgICAgICAvLyBydW5uaW5nIHRpbWUu
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlcy5mb3JFYWNoKHggPT4geworICAg
ICAgICBydW5PbmVJdGVyYXRpb25JbWFnZUJpdG1hcFRlc3RTdWJTb3VyY2UoeC5zdWIsIGJpbmRp
bmdUYXJnZXQsIHByb2dyYW0sIHguYml0bWFwLAorICAgICAgICAgICAgeC5iaXRtYXAuZmxpcFks
IHguYml0bWFwLnByZW11bHRpcGx5LCBvcHRpb25zVmFsLCBpbnRlcm5hbEZvcm1hdCwgcGl4ZWxG
b3JtYXQsIHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1LCB0b2xlcmFuY2UpOworICAgIH0pOworfQor
CitmdW5jdGlvbiBydW5JbWFnZUJpdG1hcFRlc3RJbnRlcm5hbChiaXRtYXBzLCBhbHBoYVZhbCwg
aW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgaXMz
RCwgdG9sZXJhbmNlKQoreworICAgIHZhciBjYXNlcyA9IFtdOworICAgIGJpdG1hcHMuZm9yRWFj
aChiaXRtYXAgPT4geworICAgICAgICBjYXNlcy5wdXNoKHtiaXRtYXA6IGJpdG1hcCwgc3ViOiBm
YWxzZX0pOworICAgICAgICBjYXNlcy5wdXNoKHtiaXRtYXA6IGJpdG1hcCwgc3ViOiB0cnVlfSk7
CisgICAgfSk7CisKKyAgICB2YXIgb3B0aW9uc1ZhbCA9IHthbHBoYTogYWxwaGFWYWwsIGlzM0Q6
IGlzM0R9OworICAgIHZhciBwcm9ncmFtOworICAgIGlmIChpczNEKSB7CisgICAgICAgIHByb2dy
YW0gPSB0aXUuc2V0dXBUZXh0dXJlZFF1YWRXaXRoM0QoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAg
ICAgICAgcnVuVGVzdE9uQmluZGluZ1RhcmdldEltYWdlQml0bWFwKGdsLlRFWFRVUkVfM0QsIHBy
b2dyYW0sIGNhc2VzLCBvcHRpb25zVmFsLAorICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHBp
eGVsRm9ybWF0LCBwaXhlbFR5cGUsIGdsLCB0aXUsIHd0dSwgdG9sZXJhbmNlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRRdWFkKGdsLCBpbnRlcm5h
bEZvcm1hdCk7CisgICAgICAgIHJ1blRlc3RPbkJpbmRpbmdUYXJnZXRJbWFnZUJpdG1hcChnbC5U
RVhUVVJFXzJELCBwcm9ncmFtLCBjYXNlcywgb3B0aW9uc1ZhbCwKKyAgICAgICAgICAgIGludGVy
bmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1LCB3dHUsIHRvbGVyYW5j
ZSk7CisgICAgfQorCisgICAgLy8gY3ViZSBtYXAgdGV4dHVyZSBtdXN0IGJlIHNxdWFyZQorICAg
IGlmIChiaXRtYXBzWzBdLndpZHRoID09IGJpdG1hcHNbMF0uaGVpZ2h0KSB7CisgICAgICAgIGlm
IChpczNEKSB7CisgICAgICAgICAgICBwcm9ncmFtID0gdGl1LnNldHVwVGV4dHVyZWRRdWFkV2l0
aDJEQXJyYXkoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIHJ1blRlc3RPbkJpbmRp
bmdUYXJnZXRJbWFnZUJpdG1hcChnbC5URVhUVVJFXzJEX0FSUkFZLCBwcm9ncmFtLCBjYXNlcywg
b3B0aW9uc1ZhbCwKKyAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgcGl4ZWxGb3JtYXQs
IHBpeGVsVHlwZSwgZ2wsIHRpdSwgd3R1LCB0b2xlcmFuY2UpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdpdGhDdWJlTWFwKGds
LCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICBydW5UZXN0T25CaW5kaW5nVGFyZ2V0SW1h
Z2VCaXRtYXAoZ2wuVEVYVFVSRV9DVUJFX01BUCwgcHJvZ3JhbSwgY2FzZXMsIG9wdGlvbnNWYWws
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUs
IGdsLCB0aXUsIHd0dSwgdG9sZXJhbmNlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gcnVuSW1hZ2VCaXRtYXBUZXN0KHNvdXJjZSwgYWxwaGFWYWwsIGludGVybmFsRm9ybWF0LCBw
aXhlbEZvcm1hdCwgcGl4ZWxUeXBlLCBnbCwgdGl1LCB3dHUsIGlzM0QsIG9wdF90b2xlcmFuY2Up
Cit7CisgICAgaWYgKG9wdF90b2xlcmFuY2UgPT09IHVuZGVmaW5lZCkgeworICAgICAgICBvcHRf
dG9sZXJhbmNlID0gMTA7CisgICAgfQorICAgIHZhciBwMSA9IGNyZWF0ZUltYWdlQml0bWFwKHNv
dXJjZSwge2ltYWdlT3JpZW50YXRpb246ICJub25lIiwgcHJlbXVsdGlwbHlBbHBoYTogInByZW11
bHRpcGx5In0pCisgICAgICAgICAgICAgICAgLnRoZW4oY3VyID0+IHsgY3VyLmZsaXBZID0gZmFs
c2U7IGN1ci5wcmVtdWx0aXBseSA9IHRydWU7IHJldHVybiBjdXI7IH0pOworICAgIHZhciBwMiA9
IGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwge2ltYWdlT3JpZW50YXRpb246ICJub25lIiwgcHJl
bXVsdGlwbHlBbHBoYTogIm5vbmUifSkKKyAgICAgICAgICAgICAgICAudGhlbihjdXIgPT4geyBj
dXIuZmxpcFkgPSBmYWxzZTsgY3VyLnByZW11bHRpcGx5ID0gZmFsc2U7IHJldHVybiBjdXI7IH0p
OworICAgIHZhciBwMyA9IGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwge2ltYWdlT3JpZW50YXRp
b246ICJmbGlwWSIsIHByZW11bHRpcGx5QWxwaGE6ICJwcmVtdWx0aXBseSJ9KQorICAgICAgICAg
ICAgICAgIC50aGVuKGN1ciA9PiB7IGN1ci5mbGlwWSA9IHRydWU7IGN1ci5wcmVtdWx0aXBseSA9
IHRydWU7IHJldHVybiBjdXI7IH0pOworICAgIHZhciBwNCA9IGNyZWF0ZUltYWdlQml0bWFwKHNv
dXJjZSwge2ltYWdlT3JpZW50YXRpb246ICJmbGlwWSIsIHByZW11bHRpcGx5QWxwaGE6ICJub25l
In0pCisgICAgICAgICAgICAgICAgLnRoZW4oY3VyID0+IHsgY3VyLmZsaXBZID0gdHJ1ZTsgY3Vy
LnByZW11bHRpcGx5ID0gZmFsc2U7IHJldHVybiBjdXI7IH0pOworICAgIHJldHVybiBQcm9taXNl
LmFsbChbcDEsIHAyLCBwMywgcDRdKQorICAgICAgICAuY2F0Y2goICgpID0+IHsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImNyZWF0ZUltYWdlQml0bWFwIHdpdGggb3B0aW9ucyBtYXkgYmUgcmVq
ZWN0ZWQgaWYgaXQgaXMgbm90IHN1cHBvcnRlZC4gUmV0cnlpbmcgd2l0aG91dCBvcHRpb25zLiIp
OworICAgICAgICAgICAgLy8gVGhlIEltYWdlQml0bWFwJ3MgcHJlbXVsdGlwbHlBbHBoYSBzZXR0
aW5nIHdpbGwgaW1wbGljaXRseSBiZQorICAgICAgICAgICAgLy8gImRlZmF1bHQiLCBhbmQgcGVy
IHNwZWM6CisgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9pbWFnZWJpdG1hcC1hbmQtYW5pbWF0aW9ucy5odG1sI2Nyb3BwZWQtdG8tdGhlLXNvdXJj
ZS1yZWN0YW5nbGUtd2l0aC1mb3JtYXR0aW5nCisgICAgICAgICAgICAvLyB0aGlzIHZhbHVlIGlz
IGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCAoZWl0aGVyIHByZW11bHRpcGxpZWQgb3IKKyAgICAg
ICAgICAgIC8vIG5vdCkuIFNraXAgdGVzdGluZyB0aGUgcXVhZHJhbnRzIHdoaWNoIGhhdmUgYWxw
aGEgIT0gMS4wLgorICAgICAgICAgICAgdmFyIHAgPSBjcmVhdGVJbWFnZUJpdG1hcChzb3VyY2Up
CisgICAgICAgICAgICAgICAgLnRoZW4oY3VyID0+IHsgY3VyLmZsaXBZID0gZmFsc2U7IGN1ci5w
cmVtdWx0aXBseSA9IHVuZGVmaW5lZDsgcmV0dXJuIGN1cjsgfSk7CisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoW3BdKTsKKyAgICAgICAgfSkudGhlbiggYml0bWFwcyA9PiB7CisgICAg
ICAgICAgICBidWZmZXJlZExvZ1RvQ29uc29sZSgiQWxsIGNyZWF0ZUltYWdlQml0bWFwIHByb21p
c2VzIGFyZSByZXNvbHZlZCIpOworICAgICAgICAgICAgcnVuSW1hZ2VCaXRtYXBUZXN0SW50ZXJu
YWwoYml0bWFwcywgYWxwaGFWYWwsIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4ZWxU
eXBlLCBnbCwgdGl1LCB3dHUsIGlzM0QsIG9wdF90b2xlcmFuY2UpOworICAgICAgICB9LCAoZSkg
PT4geworICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGZhaWwgaGVyZSB3aGVuIHJ1bm5pbmcgZnJv
bSBmaWxlOi8vIGluc3RlYWQgb2YgaHR0cHM6Ly8uCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJj
cmVhdGVJbWFnZUJpdG1hcChzb3VyY2UpIGZhaWxlZDogXCIiICsgZS5tZXNzYWdlICsgIlwiIik7
CisgICAgICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWlucHV0LXZhbGlkYXRpb24uanMgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90ZXgtaW5w
dXQtdmFsaWRhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODFmZmY3N2U4NWMwNDk5MWU3Y2JjZjE3NzQ4
YTUyM2FiNWRhMDJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdGV4LWlucHV0LXZhbGlkYXRpb24uanMKQEAg
LTAsMCArMSw1NjMgQEAKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8K
KworLy8gVGhpcyB0ZXN0IHJlbGllcyBvbiB0aGUgc3Vycm91bmRpbmcgd2ViIHBhZ2UgZGVmaW5p
bmcgYSB2YXJpYWJsZQorLy8gImNvbnRleHRWZXJzaW9uIiB3aGljaCBpbmRpY2F0ZXMgd2hhdCB2
ZXJzaW9uIG9mIFdlYkdMIGl0J3MgcnVubmluZworLy8gb24gLS0gMSBmb3IgV2ViR0wgMS4wLCAy
IGZvciBXZWJHTCAyLjAsIGV0Yy4KKworInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlZhbGlk
YXRlIHRleCBmdW5jdGlvbnMgaW5wdXQgcGFyYW1ldGVycyIpOworCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2wgPSBudWxsOwordmFyIHRleCA9IG51bGw7Cit2YXIgZXJyb3IgPSAw
OworCitzaG91bGRCZU5vbk51bGwoImdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQs
IHVuZGVmaW5lZCwgY29udGV4dFZlcnNpb24pIik7CitzaG91bGRCZU5vbk51bGwoInRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKSIpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsK
K3d0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKworZnVuY3Rpb24gZW51bVRv
U3RyaW5nKHZhbHVlKSB7CisgIHJldHVybiB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIHZhbHVlKTsK
K30KKworZnVuY3Rpb24gdGVzdFRleFBhcmFtZXRlcih0ZXN0Q2FzZSkgeworICB2YXIgbXNnID0g
InBhcmFtTmFtZTogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS5wbmFtZSk7CisgIGVycm9yID0g
dGVzdENhc2UuZXhwZWN0ZWRFcnJvcjsKKyAgZ2wudGV4UGFyYW1ldGVyaSh0ZXN0Q2FzZS50YXJn
ZXQsIHRlc3RDYXNlLnBuYW1lLCB0ZXN0Q2FzZS5wYXJhbSk7CisgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGVycm9yLCBtc2cpOworICBnbC50ZXhQYXJhbWV0ZXJmKHRlc3RDYXNlLnRhcmdldCwg
dGVzdENhc2UucG5hbWUsIHRlc3RDYXNlLnBhcmFtKTsKKyAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZXJyb3IsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RHZXRUZXhQYXJhbWV0ZXIodGVzdENh
c2UpIHsKKyAgdmFyIG1zZyA9ICJwYXJhbU5hbWU6ICIgKyBlbnVtVG9TdHJpbmcodGVzdENhc2Uu
cG5hbWUpOworICBlcnJvciA9IHRlc3RDYXNlLmV4cGVjdGVkRXJyb3I7CisgIGdsLmdldFRleFBh
cmFtZXRlcih0ZXN0Q2FzZS50YXJnZXQsIHRlc3RDYXNlLnBuYW1lKTsKKyAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZXJyb3IsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RUZXhJbWFnZTJEKHRl
c3RDYXNlKSB7CisgIHZhciBsZXZlbCA9IDA7CisgIHZhciB3aWR0aCA9IDE2OworICB2YXIgaGVp
Z2h0ID0gMTY7CisgIHZhciBtc2cgPSAiIGludGVybmFsRm9ybWF0OiAiICsgZW51bVRvU3RyaW5n
KHRlc3RDYXNlLmludGVybmFsRm9ybWF0KSArCisgICAgICAgICAgICAiIHRhcmdldDogIiArIGVu
dW1Ub1N0cmluZyh0ZXN0Q2FzZS50YXJnZXQpICsKKyAgICAgICAgICAgICIgZm9ybWF0OiAiICsg
ZW51bVRvU3RyaW5nKHRlc3RDYXNlLmZvcm1hdCkgKworICAgICAgICAgICAgIiB0eXBlOiAiICsg
ZW51bVRvU3RyaW5nKHRlc3RDYXNlLnR5cGUpICsKKyAgICAgICAgICAgICIgYm9yZGVyOiAiICsg
dGVzdENhc2UuYm9yZGVyOworCisgIGdsLnRleEltYWdlMkQodGVzdENhc2UudGFyZ2V0LCBsZXZl
bCwgdGVzdENhc2UuaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRlc3RDYXNlLmJvcmRl
ciwgdGVzdENhc2UuZm9ybWF0LCB0ZXN0Q2FzZS50eXBlLCBudWxsKTsKKyAgZXJyb3IgPSB0ZXN0
Q2FzZS5leHBlY3RlZEVycm9yOworICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBlcnJvciwgbXNn
KTsKK30KKworZnVuY3Rpb24gdGVzdFRleFN1YkltYWdlMkQodGVzdENhc2UpIHsKKyAgdmFyIGxl
dmVsID0gMDsKKyAgdmFyIHhvZmZzZXQgPSAwOworICB2YXIgeW9mZnNldCA9IDA7CisgIHZhciB3
aWR0aCA9IDE2OworICB2YXIgaGVpZ2h0ID0gMTY7CisgIHZhciBtc2cgPSAiIGZvcm1hdDogIiAr
IGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS5mb3JtYXQpICsKKyAgICAgICAgICAgICIgdHlwZTogIiAr
IGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS50eXBlKTsKKyAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJy
YXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKworICBnbC50ZXhTdWJJbWFnZTJEKHRlc3RDYXNlLnRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIHRlc3RDYXNlLmZv
cm1hdCwgdGVzdENhc2UudHlwZSwgYXJyYXkpOworICBlcnJvciA9IHRlc3RDYXNlLmV4cGVjdGVk
RXJyb3I7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGVycm9yLCBtc2cpOworfQorCitmdW5j
dGlvbiB0ZXN0Q29weVRleEltYWdlMkQodGVzdENhc2UpIHsKKyAgdmFyIGxldmVsID0gMDsKKyAg
dmFyIHggPSAwOworICB2YXIgeSA9IDA7CisgIHZhciB3aWR0aCA9IDE2OworICB2YXIgaGVpZ2h0
ID0gMTY7CisgIHZhciBtc2cgPSAiIGNvbG9yQnVmZmVyRm9ybWF0OiAiICsgZW51bVRvU3RyaW5n
KHRlc3RDYXNlLmNvbG9yQnVmZmVyRm9ybWF0KSArCisgICAgICAgICAgICAiIGludGVybmFsRm9y
bWF0OiAiICsgZW51bVRvU3RyaW5nKHRlc3RDYXNlLmludGVybmFsRm9ybWF0KSArCisgICAgICAg
ICAgICAiIHRhcmdldDogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS50YXJnZXQpICsKKyAgICAg
ICAgICAgICIgYm9yZGVyOiAiICsgdGVzdENhc2UuYm9yZGVyOworCisgIGdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCB0ZXN0Q2FzZS5jb2xvckJ1ZmZlckZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAg
c2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisKKyAgZ2wuY29weVRleEltYWdlMkQodGVzdENhc2Uu
dGFyZ2V0LCBsZXZlbCwgdGVzdENhc2UuaW50ZXJuYWxGb3JtYXQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIHRlc3RDYXNlLmJvcmRlcik7CisgIGVycm9yID0gdGVzdENhc2UuZXhwZWN0ZWRFcnJvcjsK
KyAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXJyb3IsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RDb3B5VGV4U3ViSW1hZ2UyRCh0ZXN0Q2FzZSkgeworICB2YXIgbGV2ZWwgPSAwOworICB2YXIg
eCA9IDA7CisgIHZhciB5ID0gMDsKKyAgdmFyIHdpZHRoID0gMTY7CisgIHZhciBoZWlnaHQgPSAx
NjsKKyAgdmFyIHhvZmZzZXQgPSAwOworICB2YXIgeW9mZnNldCA9IDA7CisgIHZhciBib3JkZXIg
PSAwOworICB2YXIgdHlwZSA9IGdsLlVOU0lHTkVEX0JZVEU7CisgIHZhciBtc2cgPSAiIGNvbG9y
QnVmZmVyRm9ybWF0OiAiICsgZW51bVRvU3RyaW5nKHRlc3RDYXNlLmNvbG9yQnVmZmVyRm9ybWF0
KSArCisgICAgICAgICAgICAiIGludGVybmFsRm9ybWF0OiAiICsgZW51bVRvU3RyaW5nKHRlc3RD
YXNlLmludGVybmFsRm9ybWF0KSArCisgICAgICAgICAgICAiIHRhcmdldDogIiArIGVudW1Ub1N0
cmluZyh0ZXN0Q2FzZS50YXJnZXQpOworCisgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVO
REVSQlVGRkVSLCB0ZXN0Q2FzZS5jb2xvckJ1ZmZlckZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cisg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgc2hvdWxkQmUoImdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFIik7CisKKyAgZ2wudGV4SW1hZ2UyRCh0ZXN0Q2FzZS50YXJnZXQsIGxldmVsLCB0ZXN0
Q2FzZS5pbnRlcm5hbEZvcm1hdCwgeG9mZnNldCArIHdpZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0LCBi
b3JkZXIsIHRlc3RDYXNlLmludGVybmFsRm9ybWF0LCB0eXBlLCBudWxsKTsKKyAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCisgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKHRl
c3RDYXNlLnRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpOworICBlcnJvciA9IHRlc3RDYXNlLmV4cGVjdGVkRXJyb3I7CisgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGVycm9yLCBtc2cpOworfQorCitmdW5jdGlvbiB0ZXN0Q29weUZyb21JbnRlcm5h
bEZCTyh0ZXN0Q2FzZSkgeworICB2YXIgdGFyZ2V0ID0gZ2wuVEVYVFVSRV8yRDsKKyAgdmFyIGxl
dmVsID0gMDsKKyAgdmFyIHggPSAwOworICB2YXIgeSA9IDA7CisgIHZhciB3aWR0aCA9IDE2Owor
ICB2YXIgaGVpZ2h0ID0gMTY7CisgIHZhciB4b2Zmc2V0ID0gMDsKKyAgdmFyIHlvZmZzZXQgPSAw
OworICB2YXIgYm9yZGVyID0gMDsKKyAgdmFyIHR5cGUgPSBnbC5VTlNJR05FRF9CWVRFOworICB2
YXIgbXNnID0gIiBjb2xvckJ1ZmZlckZvcm1hdDogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS5j
b250ZXh0QWxwaGEgPyBnbC5SR0JBIDogZ2wuUkdCKSArCisgICAgICAgICAgICAiIGludGVybmFs
Rm9ybWF0OiAiICsgZW51bVRvU3RyaW5nKHRlc3RDYXNlLmludGVybmFsRm9ybWF0KTsKKworICBp
ZiAodGVzdENhc2UuY29udGV4dEFscGhhKSB7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0
KG51bGwsIHsgYWxwaGE6IHRydWUgfSwgY29udGV4dFZlcnNpb24pOworICB9IGVsc2UgeworICAg
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChudWxsLCB7IGFscGhhOiBmYWxzZSB9LCBjb250ZXh0
VmVyc2lvbik7CisgIH0KKyAgc2hvdWxkQmVOb25OdWxsKCJnbCIpOworICBzaG91bGRCZU5vbk51
bGwoInRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKSIpOworICBnbC5iaW5kVGV4dHVyZSh0YXJnZXQs
IHRleCk7CisgIGlmICh0ZXN0Q2FzZS5zdWJJbWFnZSkgeworICAgIGdsLnRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgdGVzdENhc2UuaW50ZXJuYWxGb3JtYXQsIHhvZmZzZXQgKyB3aWR0aCwgeW9m
ZnNldCArIGhlaWdodCwgYm9yZGVyLCB0ZXN0Q2FzZS5pbnRlcm5hbEZvcm1hdCwgdHlwZSwgbnVs
bCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGdsLmNv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworICB9IGVsc2UgeworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKKyAgICBnbC5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB0ZXN0Q2Fz
ZS5pbnRlcm5hbEZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKKyAgfQorICBl
cnJvciA9IHRlc3RDYXNlLmV4cGVjdGVkRXJyb3I7CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGVycm9yLCBtc2cpOworfQorCisvLyBPbmx5IGZvciBXZWJHTDIuMC4KK2Z1bmN0aW9uIHRlc3RU
ZXhJbWFnZTNEKHRlc3RDYXNlKSB7CisgIHZhciBsZXZlbCA9IDA7CisgIHZhciB3aWR0aCA9IDE2
OworICB2YXIgaGVpZ2h0ID0gMTY7CisgIHZhciBkZXB0aCA9IDE2OworICB2YXIgbXNnID0gIiBp
bnRlcm5hbEZvcm1hdDogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS5pbnRlcm5hbEZvcm1hdCkg
KworICAgICAgICAgICAgIiB0YXJnZXQ6ICIgKyBlbnVtVG9TdHJpbmcodGVzdENhc2UudGFyZ2V0
KSArCisgICAgICAgICAgICAiIGZvcm1hdDogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS5mb3Jt
YXQpICsKKyAgICAgICAgICAgICIgdHlwZTogIiArIGVudW1Ub1N0cmluZyh0ZXN0Q2FzZS50eXBl
KSArCisgICAgICAgICAgICAiIGJvcmRlcjogIiArIHRlc3RDYXNlLmJvcmRlcjsKKworICBnbC50
ZXhJbWFnZTNEKHRlc3RDYXNlLnRhcmdldCwgbGV2ZWwsIHRlc3RDYXNlLmludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgdGVzdENhc2UuYm9yZGVyLCB0ZXN0Q2FzZS5mb3JtYXQs
IHRlc3RDYXNlLnR5cGUsIG51bGwpOworICBlcnJvciA9IHRlc3RDYXNlLmV4cGVjdGVkRXJyb3I7
CisgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGVycm9yLCBtc2cpOworfQorCitmdW5jdGlvbiB0
ZXN0VGV4U3ViSW1hZ2UzRCh0ZXN0Q2FzZSkgeworICB2YXIgbGV2ZWwgPSAwOworICB2YXIgeG9m
ZnNldCA9IDA7CisgIHZhciB5b2Zmc2V0ID0gMDsKKyAgdmFyIHpvZmZzZXQgPSAwOworICB2YXIg
d2lkdGggPSAxNjsKKyAgdmFyIGhlaWdodCA9IDE2OworICB2YXIgZGVwdGggPSAxNjsKKyAgdmFy
IG1zZyA9ICIgZm9ybWF0OiAiICsgZW51bVRvU3RyaW5nKHRlc3RDYXNlLmZvcm1hdCkgKworICAg
ICAgICAgICAgIiB0eXBlOiAiICsgZW51bVRvU3RyaW5nKHRlc3RDYXNlLnR5cGUpOworICB2YXIg
YXJyYXkgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIGRlcHRoICogNCk7CisKKyAg
Z2wudGV4U3ViSW1hZ2UzRCh0ZXN0Q2FzZS50YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgdGVzdENhc2UuZm9ybWF0LCB0ZXN0Q2Fz
ZS50eXBlLCBhcnJheSk7CisgIGVycm9yID0gdGVzdENhc2UuZXhwZWN0ZWRFcnJvcjsKKyAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZXJyb3IsIG1zZyk7Cit9CisKKworLy8gU3RhcnQgY2hlY2tp
bmcuCisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVja2luZyBUZXhQYXJhbWV0ZXI6IGEgc2V0IG9m
IGlucHV0cyB0aGF0IGFyZSB2YWxpZCBpbiBHTCBidXQgaW52YWxpZCBpbiBXZWJHTCIpOworCit0
ZXN0Q2FzZXMgPSBbCisgIHsgdGFyZ2V0OiAweDBERTAsIC8vIEdMX1RFWFRVUkVfMUQKKyAgICBw
bmFtZTogZ2wuVEVYVFVSRV9XUkFQX1QsCisgICAgcGFyYW06IGdsLlJFUEVBVCwKKyAgICBleHBl
Y3RlZEVycm9yOiBnbC5JTlZBTElEX0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQs
CisgICAgcG5hbWU6IGdsLlRFWFRVUkVfV1JBUF9ULAorICAgIHBhcmFtOiAweDI5MDAsIC8vIEdM
X0NMQU1QCisgICAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5WQUxJRF9FTlVNIH0sCisgIHsgdGFyZ2V0
OiBnbC5URVhUVVJFXzJELAorICAgIHBuYW1lOiBnbC5URVhUVVJFX1dSQVBfVCwKKyAgICBwYXJh
bTogZ2wuUkVQRUFULAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLk5PX0VSUk9SIH0KK107CisKK2lm
IChjb250ZXh0VmVyc2lvbiA8IDIpIHsKKyAgdGVzdENhc2VzID0gdGVzdENhc2VzLmNvbmNhdChb
CisgICAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgICBwbmFtZTogMHg4MTNBLCAvLyBH
TF9URVhUVVJFX01JTl9MT0QKKyAgICAgIHBhcmFtOiAwLAorICAgICAgZXhwZWN0ZWRFcnJvcjog
Z2wuSU5WQUxJRF9FTlVNIH0KKyAgXSk7Cit9IGVsc2UgeworICB0ZXN0Q2FzZXMgPSB0ZXN0Q2Fz
ZXMuY29uY2F0KFsKKyAgICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICAgIHBuYW1lOiAw
eDhFNDIsIC8vIEdMX1RFWFRVUkVfU1dJWlpMRV9SCisgICAgICBwYXJhbTogMHgxOTAzLCAvLyBH
TF9SRUQKKyAgICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfRU5VTSB9LAorICAgIHsgdGFy
Z2V0OiBnbC5URVhUVVJFXzJELAorICAgICAgcG5hbWU6IDB4ODA3MiwgLy8gR0xfVEVYVFVSRV9X
UkFQX1IKKyAgICAgIHBhcmFtOiAweDI5MDAsIC8vIEdMX0NMQU1QCisgICAgICBleHBlY3RlZEVy
cm9yOiBnbC5JTlZBTElEX0VOVU0gfQorICBdKTsKK30KKworZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHRlc3RDYXNlcy5sZW5ndGg7ICsraWkpIHsKKyAgdGVzdFRleFBhcmFtZXRlcih0ZXN0Q2FzZXNb
aWldKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNoZWNraW5nIEdldFRleFBhcmFtZXRlcjog
YSBzZXQgb2YgaW5wdXRzIHRoYXQgYXJlIHZhbGlkIGluIEdMIGJ1dCBpbnZhbGlkIGluIFdlYkdM
Iik7CisKK3Rlc3RDYXNlcyA9IFsKKyAgeyB0YXJnZXQ6IDB4MERFMCwgLy8gR0xfVEVYVFVSRV8x
RAorICAgIHBuYW1lOiBnbC5URVhUVVJFX1dSQVBfVCwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5J
TlZBTElEX0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgcG5hbWU6IGds
LlRFWFRVUkVfV1JBUF9ULAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLk5PX0VSUk9SIH0KK107CisK
K2lmIChjb250ZXh0VmVyc2lvbiA8IDIpIHsKKyAgdGVzdENhc2VzID0gdGVzdENhc2VzLmNvbmNh
dChbCisgICAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgICBwbmFtZTogMHg4MTNBLCAv
LyBHTF9URVhUVVJFX01JTl9MT0QKKyAgICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfRU5V
TSB9CisgIF0pOworfSBlbHNlIHsKKyAgdGVzdENhc2VzID0gdGVzdENhc2VzLmNvbmNhdChbCisg
ICAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgICBwbmFtZTogMHg4RTQyLCAvLyBHTF9U
RVhUVVJFX1NXSVpaTEVfUgorICAgICAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5WQUxJRF9FTlVNIH0K
KyAgXSk7Cit9CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lp
KSB7CisgIHRlc3RHZXRUZXhQYXJhbWV0ZXIodGVzdENhc2VzW2lpXSk7Cit9CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJDaGVja2luZyBUZXhJbWFnZTJEOiBhIHNldCBvZiBpbnB1dHMgdGhhdCBhcmUg
dmFsaWQgaW4gR0wgYnV0IGludmFsaWQgaW4gV2ViR0wiKTsKKwordmFyIHRlc3RDYXNlcyA9IFsK
KyAgeyB0YXJnZXQ6IDB4ODA2NCwgLy8gR0xfUFJPWFlfVEVYVFVSRV8yRAorICAgIGludGVybmFs
Rm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjogMCwKKyAgICBmb3JtYXQ6IGdsLlJHQkEsCisg
ICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElE
X0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgaW50ZXJuYWxGb3JtYXQ6
IDB4MTkwMywgLy8gR0xfUkVECisgICAgYm9yZGVyOiAwLAorICAgIGZvcm1hdDogMHgxOTAzLCAv
LyBHTF9SRUQKKyAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgIGV4cGVjdGVkRXJyb3I6
IFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfVkFMVUVdIH0sCisgIHsgdGFyZ2V0OiBnbC5U
RVhUVVJFXzJELAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjogMSwK
KyAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBl
eHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX1ZBTFVFIH0sCisgIHsgdGFyZ2V0OiBnbC5URVhUVVJF
XzJELAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjogMCwKKyAgICBm
b3JtYXQ6IGdsLlJHQiwKKyAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgIGV4cGVjdGVk
RXJyb3I6IGdsLklOVkFMSURfT1BFUkFUSU9OIH0sCisgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzJE
LAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjogMCwKKyAgICBmb3Jt
YXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBleHBlY3RlZEVy
cm9yOiBnbC5OT19FUlJPUiB9CitdOworCitpZiAoY29udGV4dFZlcnNpb24gPCAyKSB7CisgIHRl
c3RDYXNlcyA9IHRlc3RDYXNlcy5jb25jYXQoWworICAgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzJE
LAorICAgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEsCisgICAgICBib3JkZXI6IDAsCisgICAg
ICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgICB0eXBlOiBnbC5CWVRFLAorICAgICAgZXhwZWN0ZWRF
cnJvcjogZ2wuSU5WQUxJRF9FTlVNIH0KKyAgXSk7Cit9IGVsc2UgeworICB0ZXN0Q2FzZXMgPSB0
ZXN0Q2FzZXMuY29uY2F0KFsKKyAgICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICAgIGlu
dGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgICAgYm9yZGVyOiAwLAorICAgICAgZm9ybWF0OiBn
bC5SR0JBLAorICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgIGV4cGVjdGVkRXJyb3I6IGdsLklO
VkFMSURfT1BFUkFUSU9OIH0sCisgICAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisgICAgICBp
bnRlcm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICAgIGJvcmRlcjogMCwKKyAgICAgIGZvcm1hdDog
Z2wuUkdCQSwKKyAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICBleHBlY3RlZEVy
cm9yOiBnbC5JTlZBTElEX0VOVU0gfQorICBdKTsKK30KKworZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHRlc3RDYXNlcy5sZW5ndGg7ICsraWkpIHsKKyAgdGVzdFRleEltYWdlMkQodGVzdENhc2VzW2lp
XSk7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVja2luZyBUZXhTdWJJbWFnZTJEOiBhIHNl
dCBvZiBpbnB1dHMgdGhhdCBhcmUgdmFsaWQgaW4gR0wgYnV0IGludmFsaWQgaW4gV2ViR0wiKTsK
KwordGVzdENhc2VzID0gWworICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICBmb3JtYXQ6
IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBleHBlY3RlZEVycm9y
OiBnbC5OT19FUlJPUiB9CitdOworCitpZiAoY29udGV4dFZlcnNpb24gPCAyKSB7CisgIHRlc3RD
YXNlcyA9IHRlc3RDYXNlcy5jb25jYXQoWworICAgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzJELAor
ICAgICAgZm9ybWF0OiAweDE5MDMsIC8vIEdMX1JFRAorICAgICAgdHlwZTogZ2wuVU5TSUdORURf
QllURSwKKyAgICAgIGV4cGVjdGVkRXJyb3I6IFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURf
T1BFUkFUSU9OXSB9LAorICAgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzJELAorICAgICAgZm9ybWF0
OiBnbC5SR0JBLAorICAgICAgdHlwZTogZ2wuQllURSwKKyAgICAgIGV4cGVjdGVkRXJyb3I6IFtn
bC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSB9CisgIF0pOworfSBlbHNlIHsK
KyAgdGVzdENhc2VzID0gdGVzdENhc2VzLmNvbmNhdChbCisgICAgeyB0YXJnZXQ6IGdsLlRFWFRV
UkVfMkQsCisgICAgICBmb3JtYXQ6IGdsLlJFRCwKKyAgICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZ
VEUsCisgICAgICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX09QRVJBVElPTiB9LAorICAgIHsg
dGFyZ2V0OiBnbC5URVhUVVJFXzJELAorICAgICAgZm9ybWF0OiBnbC5SR0JBLAorICAgICAgdHlw
ZTogZ2wuQllURSwKKyAgICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfT1BFUkFUSU9OIH0s
CisgICAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisgICAgICBmb3JtYXQ6IGdsLlJHQkEsCisg
ICAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5W
QUxJRF9FTlVNIH0sCisgIF0pOworfQorCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdENhc2Vz
Lmxlbmd0aDsgKytpaSkgeworICB0ZXN0VGV4U3ViSW1hZ2UyRCh0ZXN0Q2FzZXNbaWldKTsKK30K
KworZGVidWcoIiIpOworZGVidWcoIkNoZWNraW5nIENvcHlUZXhJbWFnZTJEOiBhIHNldCBvZiBp
bnB1dHMgdGhhdCBhcmUgdmFsaWQgaW4gR0wgYnV0IGludmFsaWQgaW4gV2ViR0wiKTsKKwordmFy
IGNvbG9yQnVmZmVyID0gbnVsbDsKK3ZhciBmYm8gPSBudWxsOworCitzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29sb3JCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIs
IGNvbG9yQnVmZmVyKTsKK2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7Cit3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisKK3Rlc3RDYXNlcyA9IFsKKyAg
eyB0YXJnZXQ6IGdsLlRFWFRVUkVfMkQsCisgICAgY29sb3JCdWZmZXJGb3JtYXQ6IGdsLlJHQjU2
NSwKKyAgICBpbnRlcm5hbEZvcm1hdDogMHg4MDU0LCAvLyBHTF9SR0IxNgorICAgIGJvcmRlcjog
MCwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGds
LlRFWFRVUkVfMkQsCisgICAgY29sb3JCdWZmZXJGb3JtYXQ6IGdsLlJHQjU2NSwKKyAgICBpbnRl
cm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICBib3JkZXI6IDEsCisgICAgZXhwZWN0ZWRFcnJvcjog
Z2wuSU5WQUxJRF9WQUxVRSB9LAorICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICBjb2xv
ckJ1ZmZlckZvcm1hdDogZ2wuUkdCNTY1LAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAor
ICAgIGJvcmRlcjogMCwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX09QRVJBVElPTiB9
LAorICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICBjb2xvckJ1ZmZlckZvcm1hdDogZ2wu
UkdCNTY1LAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0IsCisgICAgYm9yZGVyOiAwLAorICAg
IGV4cGVjdGVkRXJyb3I6IGdsLk5PX0VSUk9SIH0KK107CisKK2lmIChjb250ZXh0VmVyc2lvbiA+
IDEpIHsKKyAgdGVzdENhc2VzID0gdGVzdENhc2VzLmNvbmNhdChbCisgICAgeyB0YXJnZXQ6IGds
LlRFWFRVUkVfM0QsCisgICAgICBjb2xvckJ1ZmZlckZvcm1hdDogZ2wuUkdCNV9BMSwKKyAgICAg
IGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgICAgYm9yZGVyOiAwLAorICAgICAgZXhwZWN0
ZWRFcnJvcjogZ2wuSU5WQUxJRF9FTlVNIH0KKyAgXSk7Cit9CisKK2ZvciAodmFyIGlpID0gMDsg
aWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lpKSB7CisgIHRlc3RDb3B5VGV4SW1hZ2UyRCh0ZXN0
Q2FzZXNbaWldKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNoZWNraW5nIENvcHlUZXhTdWJJ
bWFnZTJEOiBhIHNldCBvZiBpbnB1dHMgdGhhdCBhcmUgdmFsaWQgaW4gR0wgYnV0IGludmFsaWQg
aW4gV2ViR0wiKTsKKwordGVzdENhc2VzID0gWworICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwK
KyAgICBjb2xvckJ1ZmZlckZvcm1hdDogZ2wuUkdCNV9BMSwKKyAgICBpbnRlcm5hbEZvcm1hdDog
Z2wuUkdCQSwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5OT19FUlJPUiB9LAorICB7IHRhcmdldDog
Z2wuVEVYVFVSRV8yRCwKKyAgICBjb2xvckJ1ZmZlckZvcm1hdDogZ2wuUkdCNTY1LAorICAgIGlu
dGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfT1BF
UkFUSU9OIH0KK107CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyAr
K2lpKSB7CisgIHRlc3RDb3B5VGV4U3ViSW1hZ2UyRCh0ZXN0Q2FzZXNbaWldKTsKK30KKworZGVi
dWcoIiIpOworZGVidWcoIkNoZWNraW5nIENvcHlUZXh7U3VifUltYWdlMkQ6IGNvcHkgZnJvbSBX
ZWJHTCBpbnRlcm5hbCBmcmFtZWJ1ZmZlciIpOworCit0ZXN0Q2FzZXMgPSBbCisgIHsgY29udGV4
dEFscGhhOiB0cnVlLAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIHN1YkltYWdl
OiBmYWxzZSwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5OT19FUlJPUiB9LAorICB7IGNvbnRleHRB
bHBoYTogZmFsc2UsCisgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEsCisgICAgc3ViSW1hZ2U6
IGZhbHNlLAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfT1BFUkFUSU9OIH0sCisgIHsg
Y29udGV4dEFscGhhOiB0cnVlLAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIHN1
YkltYWdlOiB0cnVlLAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLk5PX0VSUk9SIH0sCisgIHsgY29u
dGV4dEFscGhhOiBmYWxzZSwKKyAgICBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICBzdWJJ
bWFnZTogdHJ1ZSwKKyAgICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX09QRVJBVElPTiB9Citd
OworCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpaSkgeworICB0
ZXN0Q29weUZyb21JbnRlcm5hbEZCTyh0ZXN0Q2FzZXNbaWldKTsKK30KKworaWYgKGNvbnRleHRW
ZXJzaW9uID4gMSkgeworLy8gQ3JlYXRlIG5ldyB0ZXh0dXJlIGZvciB0ZXN0aW5nIGFwaSBvZiBX
ZWJHTCAyLjAuCitzaG91bGRCZU5vbk51bGwoInRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKSIpOwor
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8zRCwgdGV4KTsKK3d0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoZWNraW5nIFRleEltYWdl
M0Q6IGEgc2V0IG9mIGlucHV0cyB0aGF0IGFyZSB2YWxpZCBpbiBHTCBidXQgaW52YWxpZCBpbiBX
ZWJHTCIpOworCit2YXIgdGVzdENhc2VzID0gWworICB7IHRhcmdldDogMHg4MDcwLCAvLyBHTF9Q
Uk9YWV9URVhUVVJFXzNECisgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEsCisgICAgYm9yZGVy
OiAwLAorICAgIGZvcm1hdDogZ2wuUkdCQSwKKyAgICB0eXBlOiBnbC5VTlNJR05FRF9CWVRFLAor
ICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfRU5VTSB9LAorICB7IHRhcmdldDogZ2wuVEVY
VFVSRV8zRCwKKyAgICBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICBib3JkZXI6IDAsCisg
ICAgZm9ybWF0OiBnbC5SR0IsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBleHBl
Y3RlZEVycm9yOiBnbC5JTlZBTElEX09QRVJBVElPTiB9LAorICB7IHRhcmdldDogZ2wuVEVYVFVS
RV8zRCwKKyAgICBpbnRlcm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICBib3JkZXI6IDAsCisgICAg
Zm9ybWF0OiBnbC5SR0JBLAorICAgIHR5cGU6IGdsLkJZVEUsCisgICAgZXhwZWN0ZWRFcnJvcjog
Z2wuSU5WQUxJRF9PUEVSQVRJT059LAorICB7IHRhcmdldDogZ2wuVEVYVFVSRV8zRCwKKyAgICBp
bnRlcm5hbEZvcm1hdDogZ2wuUkdCQSwKKyAgICBib3JkZXI6IDAsCisgICAgZm9ybWF0OiBnbC5S
R0JBLAorICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgZXhwZWN0ZWRFcnJvcjogZ2wu
Tk9fRVJST1IgfQorXTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RDYXNlcy5sZW5ndGg7
ICsraWkpIHsKKyAgdGVzdFRleEltYWdlM0QodGVzdENhc2VzW2lpXSk7Cit9CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJDaGVja2luZyBUZXhJbWFnZTNEOiBiYWQgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dHMsIGZvcm1hdHMsIHR5cGVzIik7CisKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgIHsgdGFyZ2V0OiBn
bC5URVhUVVJFXzJELAorICAgIGludGVybmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjog
MCwKKyAgICBmb3JtYXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAg
ICBleHBlY3RlZEVycm9yOiBnbC5JTlZBTElEX0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRV
UkVfM0QsCisgICAgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHLAorICAgIGJvcmRlcjogMCwKKyAgICBm
b3JtYXQ6IGdsLlJHQkEsCisgICAgdHlwZTogZ2wuVU5TSUdORURfQllURSwKKyAgICBleHBlY3Rl
ZEVycm9yOiBnbC5JTlZBTElEX1ZBTFVFfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisg
ICAgaW50ZXJuYWxGb3JtYXQ6IGdsLlJHQkEsCisgICAgYm9yZGVyOiAwLAorICAgIGZvcm1hdDog
Z2wuUkc4LAorICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgZXhwZWN0ZWRFcnJvcjog
Z2wuSU5WQUxJRF9FTlVNIH0sCisgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzNELAorICAgIGludGVy
bmFsRm9ybWF0OiBnbC5SR0JBLAorICAgIGJvcmRlcjogMCwKKyAgICBmb3JtYXQ6IGdsLlJHQkEs
CisgICAgdHlwZTogZ2wuSU5ULAorICAgIGV4cGVjdGVkRXJyb3I6IGdsLklOVkFMSURfT1BFUkFU
SU9OfSwKK107CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2lp
KSB7CisgIHRlc3RUZXhJbWFnZTNEKHRlc3RDYXNlc1tpaV0pOworfQorCitkZWJ1ZygiIik7Citk
ZWJ1ZygiQ2hlY2tpbmcgVGV4U3ViSW1hZ2UzRDogYSBzZXQgb2YgaW5wdXRzIHRoYXQgYXJlIHZh
bGlkIGluIEdMIGJ1dCBpbnZhbGlkIGluIFdlYkdMIik7CisKK3Rlc3RDYXNlcyA9IFsKKyAgeyB0
YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisgICAgZm9ybWF0OiAweDgwRTAsIC8vIEdMX0JHUgorICAg
IHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgZXhwZWN0ZWRFcnJvcjogZ2wuSU5WQUxJRF9F
TlVNIH0sCisgIHsgdGFyZ2V0OiBnbC5URVhUVVJFXzNELAorICAgIGZvcm1hdDogZ2wuUkdCQSwK
KyAgICB0eXBlOiAweDgwMzIsIC8vIEdMX1VOU0lHTkVEX0JZVEVfM18zXzIKKyAgICBleHBlY3Rl
ZEVycm9yOiBnbC5JTlZBTElEX0VOVU0gfSwKKyAgeyB0YXJnZXQ6IGdsLlRFWFRVUkVfM0QsCisg
ICAgZm9ybWF0OiBnbC5SR0JBLAorICAgIHR5cGU6IGdsLlVOU0lHTkVEX0JZVEUsCisgICAgZXhw
ZWN0ZWRFcnJvcjogZ2wuTk9fRVJST1IgfQorXTsKKworZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRl
c3RDYXNlcy5sZW5ndGg7ICsraWkpIHsKKyAgdGVzdFRleFN1YkltYWdlM0QodGVzdENhc2VzW2lp
XSk7Cit9CisKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90
ZXh0dXJlLWNvcm5lci1jYXNlLXZpZGVvcy5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3RleHR1cmUtY29ybmVyLWNhc2UtdmlkZW9zLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE4MGRhODAyM2RhZGFkOGQ2ZDM1NWQxMGZhMjA5NDNiMTI0MmJkYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy90ZXN0cy90ZXh0dXJlLWNvcm5lci1jYXNlLXZpZGVvcy5qcwpAQCAtMCwwICsxLDI5
OSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisvLyBUaGlz
IGJsb2NrIG5lZWRzIHRvIGJlIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIGluIG9yZGVyIGZv
ciB0aGlzCisvLyB0ZXN0IHRvIHJ1biByZWxpYWJseSBpbiBXZWJLaXQncyB0ZXN0IGhhcm5lc3Mg
KGF0IGxlYXN0IHRoZQorLy8gQ2hyb21pdW0gcG9ydCkuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzQ0OAoraW5pdFRlc3RpbmdIYXJuZXNzKCk7CisKK3ZhciBvbGQg
PSBkZWJ1ZzsKK3ZhciBkZWJ1ZyA9IGZ1bmN0aW9uKG1zZykgeworICBidWZmZXJlZExvZ1RvQ29u
c29sZShtc2cpOworICBvbGQobXNnKTsKK307CisKK2Z1bmN0aW9uIGdlbmVyYXRlVGVzdChkZXNj
LAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBwaXhlbEZvcm1hdCwgcGl4
ZWxUeXBlLCBwcm9sb2d1ZSwgcmVzb3VyY2VQYXRoLCBkZWZhdWx0Q29udGV4dFZlcnNpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgdmlkZW9zKSB7CisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOworICAgIHZhciB0aXUgPSBUZXhJbWFnZVV0aWxzOworICAgIHZhciBnbCA9IG51bGw7Cisg
ICAgdmFyIGMyZCA9IG51bGw7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwor
ICAgIHZhciByZWRDb2xvciA9IFsyNTUsIDAsIDBdOworICAgIHZhciBncmVlbkNvbG9yID0gWzAs
IDI1NSwgMF07CisgICAgdmFyIGN1cnJlbnRUb2xlcmFuY2UgPSAwOworCisgICAgZnVuY3Rpb24g
aW5pdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbihkZXNjICsgJyAoJyArIGludGVybmFs
Rm9ybWF0ICsgJy8nICsgcGl4ZWxGb3JtYXQgKyAnLycgKyBwaXhlbFR5cGUgKyAnKScpOworCisg
ICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHZlcnNpb24gd2hpbGUgc3RpbGwgYWxs
b3dpbmcgdGhlIHdlYmdsVmVyc2lvbiBVUkwgcXVlcnkgc3RyaW5nIHRvIG92ZXJyaWRlIGl0Lgor
ICAgICAgICB3dHUuc2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oZGVmYXVsdENvbnRleHRWZXJz
aW9uKTsKKyAgICAgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJleGFtcGxlIik7CisKKyAg
ICAgICAgLy8gU3Vic3VtZSAyRCBjYW52YXMgdGVzdHMgaW50byB0aGlzIHRlc3QgY2FzZSBzaW5j
ZSB0aGV5IHVzdWFsbHkgZ28gZG93biBzaW1pbGFyIGNvZGUgcGF0aHMgYW5kCisgICAgICAgIC8v
IHRoZXNlIHRlc3RzIGFyZSB1c3VhbGx5IGFscmVhZHkgc2V0IHVwIHRvIHJ1biB3aXRoIGhhcmR3
YXJlIGFjY2VsZXJhdGVkIHZpZGVvIGRlY29kaW5nLgorICAgICAgICBjMmQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYzJkIikuZ2V0Q29udGV4dCgiMmQiKTsKKworICAgICAgICBpZiAoIXBy
b2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChnbFtwaXhlbEZvcm1hdF0pIHsKKyAg
ICAgICAgICBjYXNlIGdsLlJFRDoKKyAgICAgICAgICBjYXNlIGdsLlJFRF9JTlRFR0VSOgorICAg
ICAgICAgICAgZ3JlZW5Db2xvciA9IFswLCAwLCAwXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGdsLmNsZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAg
ICAgICAgcnVuQWxsVGVzdHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5PbmVJdGVyYXRp
b24odmlkZW9FbGVtZW50LCB1c2VUZXhTdWJJbWFnZTJELCBmbGlwWSwgdG9wQ29sb3IsIGJvdHRv
bUNvbG9yLCBzb3VyY2VTdWJSZWN0YW5nbGUsIHByb2dyYW0sIGJpbmRpbmdUYXJnZXQpCisgICAg
eworICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVTdHJpbmcgPSAnJzsKKyAgICAgICAgaWYgKHNv
dXJjZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlU3RyaW5n
ID0gJyBzb3VyY2VTdWJSZWN0YW5nbGU9JyArIHNvdXJjZVN1YlJlY3RhbmdsZTsKKyAgICAgICAg
fQorICAgICAgICBkZWJ1ZygnVGVzdGluZyAnICsgKHVzZVRleFN1YkltYWdlMkQgPyAndGV4U3Vi
SW1hZ2UyRCcgOiAndGV4SW1hZ2UyRCcpICsKKyAgICAgICAgICAgICAgJyB3aXRoIGZsaXBZPScg
KyBmbGlwWSArICcgYmluZGluZ1RhcmdldD0nICsKKyAgICAgICAgICAgICAgKGJpbmRpbmdUYXJn
ZXQgPT0gZ2wuVEVYVFVSRV8yRCA/ICdURVhUVVJFXzJEJyA6ICdURVhUVVJFX0NVQkVfTUFQJykg
KworICAgICAgICAgICAgICBzb3VyY2VTdWJSZWN0YW5nbGVTdHJpbmcpOworICAgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAg
IC8vIERpc2FibGUgYW55IHdyaXRlcyB0byB0aGUgYWxwaGEgY2hhbm5lbAorICAgICAgICBnbC5j
b2xvck1hc2soMSwgMSwgMSwgMCk7CisgICAgICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4
dHVyZSgpOworICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCisg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGJpbmRpbmdUYXJnZXQsIHRleHR1cmUpOworICAgICAgICAv
LyBTZXQgdXAgdGV4dHVyZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoYmlu
ZGluZ1RhcmdldCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX01BR19GSUxURVIsIGds
Lk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGJpbmRpbmdUYXJnZXQsIGdsLlRF
WFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShiaW5kaW5nVGFyZ2V0LCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7Cisg
ICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnBpeGVs
U3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAgZ2wucGl4ZWxT
dG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7CisgICAgICAg
IHZhciB0YXJnZXRzID0gW2dsLlRFWFRVUkVfMkRdOworICAgICAgICBpZiAoYmluZGluZ1Rhcmdl
dCA9PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICB0YXJnZXRzID0gW2dsLlRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksCisgICAgICAgICAgICAgICAgICAgICAgIGdsLlRFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aLAorICAgICAgICAgICAgICAgICAgICAgICBnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1pdOworICAgICAgICB9CisgICAgICAgIC8vIEhhbmRsZSB0aGUg
c291cmNlIHN1Yi1yZWN0YW5nbGUgaWYgc3BlY2lmaWVkIChXZWJHTCAyLjAgb25seSkKKyAgICAg
ICAgaWYgKHNvdXJjZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWko
Z2wuVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VTdWJSZWN0YW5nbGVbMF0pOworICAgICAgICAg
ICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUk9XUywgc291cmNlU3ViUmVjdGFuZ2xl
WzFdKTsKKyAgICAgICAgfQorICAgICAgICAvLyBVcGxvYWQgdGhlIHZpZGVvRWxlbWVudCBpbnRv
IHRoZSB0ZXh0dXJlCisgICAgICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0YXJnZXRzLmxlbmd0
aDsgKyt0dCkgeworICAgICAgICAgICAgaWYgKHNvdXJjZVN1YlJlY3RhbmdsZSkgeworICAgICAg
ICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAg
ICAgICAgICAgICBpZiAodXNlVGV4U3ViSW1hZ2UyRCkgeworICAgICAgICAgICAgICAgICAgICAv
LyBTa2lwIHN1Yi1yZWN0YW5nbGUgdGVzdHMgZm9yIGN1YmUgbWFwIHRleHR1cmVzIGZvciB0aGUg
bW9tZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5URVhU
VVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdl
dHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1hdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlU3ViUmVjdGFuZ2xlWzJdLCBzb3VyY2VTdWJSZWN0YW5nbGVbM10sIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtw
aXhlbFR5cGVdLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRCh0
YXJnZXRzW3R0XSwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VTdWJSZWN0YW5nbGVbMl0sIHNvdXJjZVN1YlJlY3RhbmdsZVszXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlw
ZV0sIHZpZGVvRWxlbWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgZ2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVsy
XSwgc291cmNlU3ViUmVjdGFuZ2xlWzNdLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsW3BpeGVsRm9ybWF0XSwgZ2xbcGl4ZWxUeXBlXSwgdmlkZW9FbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IEluaXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAgICAgICAgICBp
ZiAodXNlVGV4U3ViSW1hZ2UyRCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSB2
aWRlb0VsZW1lbnQudmlkZW9XaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9
IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRp
bmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY3ViZSBtYXAgdGV4dHVyZSBtdXN0IGJlIHNxdWFyZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQgPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCBnbFtpbnRlcm5hbEZvcm1h
dF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0sIGdsW3Bp
eGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHRh
cmdldHNbdHRdLCAwLCAwLCAwLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIHZpZGVv
RWxlbWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Z2wudGV4SW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgZ2xbaW50ZXJuYWxGb3JtYXRdLCBnbFtwaXhl
bEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIHZpZGVvRWxlbWVudCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNvdXJjZVN1YlJlY3Rh
bmdsZSkgeworICAgICAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1NLSVBfUElYRUxT
LCAwKTsKKyAgICAgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19TS0lQX1JPV1MsIDAp
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKKyAgICAgICAgYy53aWR0aCA9IDE2OworICAgICAgICBjLmhlaWdodCA9IDE2Owor
ICAgICAgICBjLnN0eWxlLmJvcmRlciA9ICIxcHggc29saWQgYmxhY2siOworICAgICAgICB2YXIg
Y3R4ID0gYy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICBjdHguZHJhd0ltYWdlKHZpZGVvRWxl
bWVudCwgMCwgMCwgMTYsIDE2KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChj
KTsKKworICAgICAgICB2YXIgbG9jOworICAgICAgICBpZiAoYmluZGluZ1RhcmdldCA9PSBnbC5U
RVhUVVJFX0NVQkVfTUFQKSB7CisgICAgICAgICAgICBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgImZhY2UiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIHR0ID0g
MDsgdHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICAgICAgaWYgKGJpbmRpbmdU
YXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgICAgICAgIGdsLnVuaWZv
cm0xaShsb2MsIHRhcmdldHNbdHRdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIERy
YXcgdGhlIHRyaWFuZ2xlcworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
LCBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgICAgICAvLyBDaGVjayBhIGZldyBwaXhlbHMgbmVh
ciB0aGUgdG9wIGFuZCBib3R0b20gYW5kIG1ha2Ugc3VyZSB0aGV5IGhhdmUKKyAgICAgICAgICAg
IC8vIHRoZSByaWdodCBjb2xvci4KKyAgICAgICAgICAgIHZhciB0b2xlcmFuY2UgPSBjdXJyZW50
VG9sZXJhbmNlOworICAgICAgICAgICAgZGVidWcoIkNoZWNraW5nIGxvd2VyIGxlZnQgY29ybmVy
Iik7CisgICAgICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCA0LCA0LCAyLCAyLCBib3R0
b21Db2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyBi
b3R0b21Db2xvciwgdG9sZXJhbmNlKTsKKyAgICAgICAgICAgIGRlYnVnKCJDaGVja2luZyB1cHBl
ciBsZWZ0IGNvcm5lciIpOworICAgICAgICAgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwg
Z2wuY2FudmFzLmhlaWdodCAtIDgsIDIsIDIsIHRvcENvbG9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIHRvcENvbG9yLCB0b2xlcmFuY2UpOworCisgICAg
ICAgICAgICAvLyBFeHBvc2UgYnVnIGh0dHA6Ly9jcmJ1Zy5jb20vNzMzMTcyLgorICAgICAgICAg
ICAgaWYgKHNvdXJjZVN1YlJlY3RhbmdsZSkgeworICAgICAgICAgICAgICAgIC8vIFNraXAgc3Vi
LXJlY3RhbmdsZSB0ZXN0cyBmb3IgY3ViZSBtYXAgdGV4dHVyZXMgZm9yIHRoZSBtb21lbnQuCisg
ICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdUYXJnZXQgPT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkg
eworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRCh0YXJnZXRzW3R0XSwgMCwgMCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YlJlY3RhbmdsZVsyXSwgc291cmNl
U3ViUmVjdGFuZ2xlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xbcGl4
ZWxGb3JtYXRdLCBnbFtwaXhlbFR5cGVdLCB2aWRlb0VsZW1lbnQpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBnbC50ZXhTdWJJbWFnZTJEKHRhcmdldHNbdHRdLCAwLCAw
LCAwLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIHZpZGVvRWxlbWVudCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1bkNhbnZhczJEVGVzdCh2aWRlb0VsZW1lbnQsIHRvcENvbG9yLCBib3R0b21Db2xvcikK
KyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHdpdGggMkQgY2FudmFzJyk7CisKKyAgICAg
ICAgdmFyIGNhbnZhcyA9IGMyZC5jYW52YXM7CisKKyAgICAgICAgLy8gRHJhdyB0aGUgdmlkZW8g
dG8gdGhlIDJEIGNhbnZhcyBjb250ZXh0LgorICAgICAgICBjMmQuZHJhd0ltYWdlKHZpZGVvRWxl
bWVudCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgICAgICAvLyBD
aGVjayBhIGZldyBwaXhlbHMgbmVhciB0aGUgdG9wIGFuZCBib3R0b20gYW5kIG1ha2Ugc3VyZSB0
aGV5IGhhdmUKKyAgICAgICAgLy8gdGhlIHJpZ2h0IGNvbG9yLgorICAgICAgICAvLyBPcmlnaW4g
aXMgdXBwZXIgbGVmdCBpbiAyRCBjYW52YXMgY29udGV4dC4KKyAgICAgICAgdmFyIHRvbGVyYW5j
ZSA9IGN1cnJlbnRUb2xlcmFuY2U7CisgICAgICAgIGRlYnVnKCJDaGVja2luZyBsb3dlciBsZWZ0
IGNvcm5lciIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGMyZCwgNCwgY2FudmFzLmhl
aWdodCAtIDgsIDIsIDIsIGJvdHRvbUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzaG91bGRCZSAiICsgYm90dG9tQ29sb3IsIHRvbGVyYW5jZSk7CisgICAgICAgIGRlYnVnKCJD
aGVja2luZyB1cHBlciBsZWZ0IGNvcm5lciIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0
KGMyZCwgNCwgNCwgMiwgMiwgdG9wQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InNob3VsZEJlICIgKyB0b3BDb2xvciwgdG9sZXJhbmNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5BbGxUZXN0cygpCisgICAgeworICAgICAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgICAg
ICB7IHN1YjogZmFsc2UsIGZsaXBZOiB0cnVlLCB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRvbUNv
bG9yOiBncmVlbkNvbG9yIH0sCisgICAgICAgICAgICB7IHN1YjogZmFsc2UsIGZsaXBZOiBmYWxz
ZSwgdG9wQ29sb3I6IGdyZWVuQ29sb3IsIGJvdHRvbUNvbG9yOiByZWRDb2xvciB9LAorICAgICAg
ICAgICAgeyBzdWI6IHRydWUsIGZsaXBZOiB0cnVlLCB0b3BDb2xvcjogcmVkQ29sb3IsIGJvdHRv
bUNvbG9yOiBncmVlbkNvbG9yIH0sCisgICAgICAgICAgICB7IHN1YjogdHJ1ZSwgZmxpcFk6IGZh
bHNlLCB0b3BDb2xvcjogZ3JlZW5Db2xvciwgYm90dG9tQ29sb3I6IHJlZENvbG9yIH0sCisgICAg
ICAgIF07CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGV4SW1hZ2VUZXN0KGJpbmRpbmdUYXJnZXQp
IHsKKyAgICAgICAgICAgIHZhciBwcm9ncmFtOworICAgICAgICAgICAgaWYgKGJpbmRpbmdUYXJn
ZXQgPT0gZ2wuVEVYVFVSRV8yRCkgeworICAgICAgICAgICAgICAgIHByb2dyYW0gPSB0aXUuc2V0
dXBUZXh0dXJlZFF1YWQoZ2wsIGludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZFdpdGhDdWJl
TWFwKGdsLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdmlkZW9OZHggPSAwOworICAgICAgICAgICAgICAgIHZhciB2aWRlbzsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBydW5OZXh0VmlkZW8oKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2aWRlbykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb05keCA9
PSB2aWRlb3MubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCJTVUND
RVNTIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IHZpZGVvc1t2aWRlb05keCsr
XTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygidGVzdGluZzogIiArIGluZm8uY29tbWVudCk7CisgICAgICAgICAgICAgICAgICAgIGRl
YnVnKCJ2aWRlbyB0eXBlOiAiICsgaW5mby50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g
RGVmYXVsdCB0byB0b2xlcmFuY2Ugb2YgNS4KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFRv
bGVyYW5jZSA9IGluZm8udG9sZXJhbmNlIHx8IDU7CisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJ0b2xlcmFuY2U6ICIgKyBjdXJyZW50VG9sZXJhbmNlKTsKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgICAgICAgICAgICAg
ICAgICB2aWRlby5tdXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHZhciBjYW5QbGF5
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2aWRlby5jYW5QbGF5VHlwZSkgewor
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInZpZGVvLmNhblBsYXlUeXBlIHJlcXVp
cmVkIG1ldGhvZCBtaXNzaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgcnVuTmV4dFZpZGVv
KCk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgaWYoIXZpZGVvLmNhblBsYXlUeXBlKGluZm8udHlwZSku
cmVwbGFjZSgvbm8vLCAnJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhpbmZvLnR5
cGUgKyAiIHVuc3VwcG9ydGVkOyBza2lwcGluZyB0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAg
ICAgcnVuTmV4dFZpZGVvKCk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQodmlkZW8pOworICAgICAgICAgICAgICAgICAgICB2aWRlby50eXBlID0gaW5mby50
eXBlOworICAgICAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBpbmZvLnNyYzsKKyAgICAgICAg
ICAgICAgICAgICAgd3R1LnN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRlbywgcnVuVGVz
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gY2FzZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nVGFyZ2V0ID09IGdsLlRFWFRVUkVfQ1VCRV9NQVAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDdWJlIG1hcCB0ZXh0dXJlIG11c3Qg
YmUgc3F1YXJlIGJ1dCB2aWRlbyBpcyBub3Qgc3F1YXJlLgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2FzZXNbaV0uc3ViKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTa2lwIHN1Yi1yZWN0YW5nbGUgdGVzdHMgZm9yIGN1YmUgbWFwIHRl
eHR1cmVzIGZvciB0aGUgbW9tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
YXNlc1tpXS5zb3VyY2VTdWJSZWN0YW5nbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcnVuT25lSXRlcmF0aW9uKHZp
ZGVvLCBjYXNlc1tpXS5zdWIsIGNhc2VzW2ldLmZsaXBZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2VzW2ldLnRvcENvbG9yLCBjYXNlc1tpXS5ib3R0b21Db2xv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlc1tpXS5zb3Vy
Y2VTdWJSZWN0YW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZ3JhbSwgYmluZGluZ1RhcmdldCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgcnVuQ2FudmFzMkRUZXN0KHZpZGVvLCByZWRDb2xvciwgZ3JlZW5Db2xvcik7
CisgICAgICAgICAgICAgICAgICAgIHJ1bk5leHRWaWRlbygpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBydW5OZXh0VmlkZW8oKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisKKyAgICAgICAgcnVuVGV4SW1hZ2VUZXN0KGdsLlRFWFRVUkVfMkQpLnRoZW4oZnVuY3Rp
b24odmFsKSB7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90eXBlZC1h
cnJheS10ZXN0LWNhc2VzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvanMvdGVzdHMvdHlwZWQtYXJyYXktdGVzdC1jYXNlcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTFiNzlhNjc3MjQ3ZGIxMmM2NjBiZWZlYmVmOTZiYjc5NDIyMTdkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMv
dHlwZWQtYXJyYXktdGVzdC1jYXNlcy5qcwpAQCAtMCwwICsxLDczIEBACisvKgorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8vIFRoZSAibmFtZSIgYXR0cmlidXRlIGlz
IGEgY29uY2Vzc2lvbiB0byBicm93c2VycyB3aGljaCBkb24ndAorLy8gaW1wbGVtZW50IHRoZSAi
bmFtZSIgcHJvcGVydHkgb24gZnVuY3Rpb24gb2JqZWN0cy4KK3ZhciB0ZXN0Q2FzZXMgPQorICBb
IHtuYW1lOiAiRmxvYXQzMkFycmF5IiwKKyAgICAgdW5zaWduZWQ6IGZhbHNlLAorICAgICBpbnRl
Z3JhbDogZmFsc2UsCisgICAgIGVsZW1lbnRTaXplSW5CeXRlczogNCwKKyAgICAgdGVzdFZhbHVl
czogICAgIFsgLTUwMC41LCA1MDAuNSBdLAorICAgICBleHBlY3RlZFZhbHVlczogWyAtNTAwLjUs
IDUwMC41IF0KKyAgICB9LAorICAgIHtuYW1lOiAiRmxvYXQ2NEFycmF5IiwKKyAgICAgdW5zaWdu
ZWQ6IGZhbHNlLAorICAgICBpbnRlZ3JhbDogZmFsc2UsCisgICAgIGVsZW1lbnRTaXplSW5CeXRl
czogOCwKKyAgICAgdGVzdFZhbHVlczogICAgIFsgLTUwMC41LCA1MDAuNSBdLAorICAgICBleHBl
Y3RlZFZhbHVlczogWyAtNTAwLjUsIDUwMC41IF0KKyAgICB9LAorICAgIHtuYW1lOiAiSW50OEFy
cmF5IiwKKyAgICAgdW5zaWduZWQ6IGZhbHNlLAorICAgICBpbnRlZ3JhbDogdHJ1ZSwKKyAgICAg
ZWxlbWVudFNpemVJbkJ5dGVzOiAxLAorICAgICB0ZXN0VmFsdWVzOiAgICAgWyAtMTI4LCAxMjcs
IC0xMjksICAxMjggXSwKKyAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgLTEyOCwgMTI3LCAgMTI3LCAt
MTI4IF0KKyAgICB9LAorICAgIHtuYW1lOiAiSW50MTZBcnJheSIsCisgICAgIHVuc2lnbmVkOiBm
YWxzZSwKKyAgICAgaW50ZWdyYWw6IHRydWUsCisgICAgIGVsZW1lbnRTaXplSW5CeXRlczogMiwK
KyAgICAgdGVzdFZhbHVlczogICAgIFsgLTMyNzY4LCAzMjc2NywgLTMyNzY5LCAgMzI3NjggXSwK
KyAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgLTMyNzY4LCAzMjc2NywgIDMyNzY3LCAtMzI3NjggXQor
ICAgIH0sCisgICAge25hbWU6ICJJbnQzMkFycmF5IiwKKyAgICAgdW5zaWduZWQ6IGZhbHNlLAor
ICAgICBpbnRlZ3JhbDogdHJ1ZSwKKyAgICAgZWxlbWVudFNpemVJbkJ5dGVzOiA0LAorICAgICB0
ZXN0VmFsdWVzOiAgICAgWyAtMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0NywgLTIxNDc0ODM2NDksICAy
MTQ3NDgzNjQ4IF0sCisgICAgIGV4cGVjdGVkVmFsdWVzOiBbIC0yMTQ3NDgzNjQ4LCAyMTQ3NDgz
NjQ3LCAgMjE0NzQ4MzY0NywgLTIxNDc0ODM2NDggXQorICAgIH0sCisgICAge25hbWU6ICJVaW50
OEFycmF5IiwKKyAgICAgdW5zaWduZWQ6IHRydWUsCisgICAgIGludGVncmFsOiB0cnVlLAorICAg
ICBlbGVtZW50U2l6ZUluQnl0ZXM6IDEsCisgICAgIHRlc3RWYWx1ZXM6ICAgICBbIDAsIDI1NSwg
IC0xLCAyNTYgXSwKKyAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgMCwgMjU1LCAyNTUsICAgMCBdCisg
ICAgfSwKKyAgICB7bmFtZTogIlVpbnQ4Q2xhbXBlZEFycmF5IiwKKyAgICAgdW5zaWduZWQ6IHRy
dWUsCisgICAgIGludGVncmFsOiB0cnVlLAorICAgICBlbGVtZW50U2l6ZUluQnl0ZXM6IDEsCisg
ICAgIHRlc3RWYWx1ZXM6ICAgICBbIDAsIDI1NSwgIC0xLCAyNTYgXSwKKyAgICAgZXhwZWN0ZWRW
YWx1ZXM6IFsgMCwgMjU1LCAgIDAsIDI1NSBdCisgICAgfSwKKyAgICB7bmFtZTogIlVpbnQxNkFy
cmF5IiwKKyAgICAgdW5zaWduZWQ6IHRydWUsCisgICAgIGludGVncmFsOiB0cnVlLAorICAgICBl
bGVtZW50U2l6ZUluQnl0ZXM6IDIsCisgICAgIHRlc3RWYWx1ZXM6ICAgICBbIDAsIDY1NTM1LCAg
ICAtMSwgNjU1MzYgXSwKKyAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgMCwgNjU1MzUsIDY1NTM1LCAg
ICAgMCBdCisgICAgfSwKKyAgICB7bmFtZTogIlVpbnQzMkFycmF5IiwKKyAgICAgdW5zaWduZWQ6
IHRydWUsCisgICAgIGludGVncmFsOiB0cnVlLAorICAgICBlbGVtZW50U2l6ZUluQnl0ZXM6IDQs
CisgICAgIHRlc3RWYWx1ZXM6ICAgICBbIDAsIDQyOTQ5NjcyOTUsICAgICAgICAgLTEsIDQyOTQ5
NjcyOTYgXSwKKyAgICAgZXhwZWN0ZWRWYWx1ZXM6IFsgMCwgNDI5NDk2NzI5NSwgNDI5NDk2NzI5
NSwgICAgICAgICAgMCBdCisgICAgfQorICBdOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvdHlwZWQtYXJyYXktd29ya2Vy
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVz
dHMvdHlwZWQtYXJyYXktd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNjFhMGU4YTIxMzZkZWEyMTNm
MjZlN2VlZWFjMzgyMDEzNjhkZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy90eXBlZC1hcnJheS13b3JrZXIu
anMKQEAgLTAsMCArMSw3MiBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBH
cm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUu
CisqLworCitmdW5jdGlvbiBjb25zdHJ1Y3RUeXBlZEFycmF5KHR5cGUsIGRhdGEpIHsKKyAgaWYg
KHR5cGUgPT0gJ0ludDhBcnJheScpIHsKKyAgICByZXR1cm4gbmV3IEludDhBcnJheShkYXRhKTsK
KyAgfSBlbHNlIGlmICh0eXBlID09ICdVaW50OEFycmF5JykgeworICAgIHJldHVybiBuZXcgVWlu
dDhBcnJheShkYXRhKTsKKyAgfSBlbHNlIGlmICh0eXBlID09ICdVaW50OENsYW1wZWRBcnJheScp
IHsKKyAgICByZXR1cm4gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEpOworICB9IGVsc2UgaWYg
KHR5cGUgPT0gJ0ludDE2QXJyYXknKSB7CisgICAgcmV0dXJuIG5ldyBJbnQxNkFycmF5KGRhdGEp
OworICB9IGVsc2UgaWYgKHR5cGUgPT0gJ1VpbnQxNkFycmF5JykgeworICAgIHJldHVybiBuZXcg
VWludDE2QXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlwZSA9PSAnSW50MzJBcnJheScpIHsK
KyAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlwZSA9PSAn
VWludDMyQXJyYXknKSB7CisgICAgcmV0dXJuIG5ldyBVaW50MzJBcnJheShkYXRhKTsKKyAgfSBl
bHNlIGlmICh0eXBlID09ICdGbG9hdDMyQXJyYXknKSB7CisgICAgcmV0dXJuIG5ldyBGbG9hdDMy
QXJyYXkoZGF0YSk7CisgIH0gZWxzZSBpZiAodHlwZSA9PSAnRmxvYXQ2NEFycmF5JykgeworICAg
IHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KGRhdGEpOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbnN0
cnVjdERhdGFWaWV3KHN1YlR5cGUsIGVsZW1lbnRTaXplSW5CeXRlcywgZGF0YSkgeworICB2YXIg
c2V0dGVyID0gInNldCIgKyBzdWJUeXBlOworICB2YXIgYnl0ZU9mZnNldCA9IDA7CisgIHZhciBi
dWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZWxlbWVudFNpemVJbkJ5dGVzICogZGF0YS5sZW5ndGgp
OworICB2YXIgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKyAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IGRhdGEubGVuZ3RoOyArK2lpKSB7CisgICAgZGF0YVZpZXdbc2V0dGVyXShieXRl
T2Zmc2V0LCBkYXRhW2lpXSk7CisgICAgYnl0ZU9mZnNldCArPSBlbGVtZW50U2l6ZUluQnl0ZXM7
CisgIH0KKyAgcmV0dXJuIGRhdGFWaWV3OworfQorCitvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVu
dCkgeworICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgIGlmIChtZXNzYWdlLmNvbW1hbmQg
PT0gJ2NvcHknIHx8CisgICAgICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAorICAg
ICAgbWVzc2FnZS5jb21tYW5kID09ICdjb3B5QnVmZmVyJyB8fAorICAgICAgbWVzc2FnZS5jb21t
YW5kID09ICd0cmFuc2ZlckJ1ZmZlcicpIHsKKyAgICB2YXIgdmlldzsKKyAgICBpZiAobWVzc2Fn
ZS50eXBlICE9ICdEYXRhVmlldycpIHsKKyAgICAgIHZpZXcgPSBjb25zdHJ1Y3RUeXBlZEFycmF5
KG1lc3NhZ2UudHlwZSwgbWVzc2FnZS5kYXRhKTsKKyAgICB9IGVsc2UgeworICAgICAgdmlldyA9
IGNvbnN0cnVjdERhdGFWaWV3KG1lc3NhZ2Uuc3ViVHlwZSwgbWVzc2FnZS5lbGVtZW50U2l6ZUlu
Qnl0ZXMsIG1lc3NhZ2UuZGF0YSk7CisgICAgfQorICAgIHZhciB2YWx1ZVRvU2VuZDsKKyAgICBp
ZiAobWVzc2FnZS5jb21tYW5kID09ICdjb3B5JyB8fAorICAgICAgICBtZXNzYWdlLmNvbW1hbmQg
PT0gJ3RyYW5zZmVyJykgeworICAgICAgdmFsdWVUb1NlbmQgPSB2aWV3OworICAgIH0gZWxzZSB7
CisgICAgICB2YWx1ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOworICAgIH0KKyAgICB2YXIgdHJhbnNm
ZXJhYmxlc1RvU2VuZCA9IHVuZGVmaW5lZDsKKyAgICBpZiAobWVzc2FnZS5jb21tYW5kID09ICd0
cmFuc2ZlcicgfHwKKyAgICAgICAgbWVzc2FnZS5jb21tYW5kID09ICd0cmFuc2ZlckJ1ZmZlcicp
IHsKKyAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcuYnVmZmVyIF07CisgICAgfQor
ICAgIHBvc3RNZXNzYWdlKHZhbHVlVG9TZW5kLCB0cmFuc2ZlcmFibGVzVG9TZW5kKTsKKyAgfSBl
bHNlIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3BvbmcnKSB7CisgICAgcG9zdE1lc3NhZ2UobWVz
c2FnZS5kYXRhLCBtZXNzYWdlLnRyYW5zZmVyYWJsZXMpOworICB9IGVsc2UgaWYgKG1lc3NhZ2Uu
Y29tbWFuZCA9PSAnaWdub3JlJykgeworICB9IGVsc2UgeworICAgIHBvc3RNZXNzYWdlKCdlcnJv
cjogdW5rbm93biBtZXNzYWdlJyk7CisgIH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy93ZWJnbC1jb21wcmVzc2Vk
LXRleHR1cmUtc2l6ZS1saW1pdC5qcyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZmYWQ1NTIwZjJlNmVhMjJmNDBhZWU5NDFiZTM5YWU2ZmFhNDJhNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtc2l6ZS1saW1pdC5qcwpA
QCAtMCwwICsxLDIyNiBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91
cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBydW5Db21wcmVzc2VkVGV4dHVyZVNpemVMaW1pdFRl
c3QgPSBmdW5jdGlvbihtYXhBcnJheUJ1ZmZlclNpemVCeXRlcywgcG9zaXRpdmVDdWJlTWFwTWF4
U2l6ZSkgeworCisgIGZ1bmN0aW9uIG51bUxldmVsc0Zyb21TaXplKHNpemUpIHsKKyAgICB2YXIg
bGV2ZWxzID0gMDsKKyAgICB3aGlsZSAoKHNpemUgPj4gbGV2ZWxzKSA+IDApIHsKKyAgICAgICsr
bGV2ZWxzOworICAgIH0KKyAgICByZXR1cm4gbGV2ZWxzOworICB9CisKKyAgLy8gTW9yZSBmb3Jt
YXRzIGNhbiBiZSBhZGRlZCBoZXJlIHdoZW4gbW9yZSB0ZXh0dXJlIGNvbXByZXNzaW9uIGV4dGVu
c2lvbnMgYXJlIGVuYWJsZWQgaW4gV2ViR0wuCisgIHZhciB2YWxpZEZvcm1hdHMgPSB7CisgICAg
ICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICA6IDB4ODNGMCwKKyAgICAgIENP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAgICAgIDogMHg4M0YxLAorICAgICAgQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19FWFQgICAgICAgOiAweDgzRjIsCisgICAgICBDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0VYVCAgICAgICA6IDB4ODNGMywKKyAgfTsKKworICAvLyBmb3JtYXQg
c3BlY2lmaWMgcmVzdHJpY3Rpb25zIGZvciBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIGFu
ZCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVAorICAvLyBvbiB0aGUgYnl0ZUxlbmd0aCBv
ZiB0aGUgQXJyYXlCdWZmZXJWaWV3LCBwaXhlbHMKKyAgZnVuY3Rpb24gZnVuYzEgKHdpZHRoLCBo
ZWlnaHQpCisgIHsKKyAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3aWR0aCArIDMpIC8gNCkgKiBN
YXRoLmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICogODsKKyAgfQorCisgIC8vIGZvcm1hdCBzcGVj
aWZpYyByZXN0cmljdGlvbnMgZm9yIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIGFuZCBD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVAorICAvLyBvbiB0aGUgYnl0ZUxlbmd0aCBvZiB0
aGUgQXJyYXlCdWZmZXJWaWV3LCBwaXhlbHMKKyAgZnVuY3Rpb24gZnVuYzIgKHdpZHRoLCBoZWln
aHQpCisgIHsKKyAgICAgIHJldHVybiBNYXRoLmZsb29yKCh3aWR0aCArIDMpIC8gNCkgKiBNYXRo
LmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICogMTY7CisgIH0KKworICB2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKyAg
dmFyIHRlc3RzID0gWworICAgIC8vIE1vcmUgdGVzdHMgY2FuIGJlIGFkZGVkIGhlcmUgd2hlbiBt
b3JlIHRleHR1cmUgY29tcHJlc3Npb24gZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCBpbiBXZWJHTC4K
KyAgICAvLyBMZXZlbCAwIGltYWdlIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBhIG11bHRpcGxl
IG9mIHRoZSBzaXplU3RlcC4KKyAgICB7IGV4dGVuc2lvbjogIldFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9zM3RjIiwgZm9ybWF0OiB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVCwgZGF0YVR5cGU6IFVpbnQ4QXJyYXksIGZ1bmM6IGZ1bmMxLCBzaXplU3RlcDogNH0sCisg
ICAgeyBleHRlbnNpb246ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIGZvcm1hdDog
dmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBkYXRhVHlwZTogVWlu
dDhBcnJheSwgZnVuYzogZnVuYzEsIHNpemVTdGVwOiA0fSwKKyAgICB7IGV4dGVuc2lvbjogIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiwgZm9ybWF0OiB2YWxpZEZvcm1hdHMuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19FWFQsIGRhdGFUeXBlOiBVaW50OEFycmF5LCBmdW5jOiBmdW5j
Miwgc2l6ZVN0ZXA6IDR9LAorICAgIHsgZXh0ZW5zaW9uOiAiV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX3MzdGMiLCBmb3JtYXQ6IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0VYVCwgZGF0YVR5cGU6IFVpbnQ4QXJyYXksIGZ1bmM6IGZ1bmMyLCBzaXplU3RlcDogNH0sCisg
IF07CisKKyAgLy8gTm90ZTogV2UgZXhwcmVzc2x5IG9ubHkgdXNlIDIgdGV4dHVyZXMgYmVjYXVz
ZSBmaXJzdCBhIHRleHR1cmUgd2lsbCBiZSBkZWZpbmVkCisgIC8vIHVzaW5nIGFsbCBtaXAgbGV2
ZWxzIG9mIDEgZm9ybWF0LCB0aGVuIGZvciBhIG1vbWVudCBpdCB3aWxsIGhhdmUgbWl4ZWQgZm9y
bWF0cyB3aGljaAorICAvLyBtYXkgdW5jb3ZlciBidWdzLgorICB2YXIgdGFyZ2V0cyA9IFsKKyAg
ICB7IHRhcmdldDogZ2wuVEVYVFVSRV8yRCwKKyAgICAgIG1heFNpemU6IGdsLmdldFBhcmFtZXRl
cihnbC5NQVhfVEVYVFVSRV9TSVpFKSwKKyAgICAgIHRleDogZ2wuY3JlYXRlVGV4dHVyZSgpLAor
ICAgICAgdGFyZ2V0czogW2dsLlRFWFRVUkVfMkRdCisgICAgfSwKKyAgICB7IHRhcmdldDogZ2wu
VEVYVFVSRV9DVUJFX01BUCwKKyAgICAgIG1heFNpemU6IGdsLmdldFBhcmFtZXRlcihnbC5NQVhf
Q1VCRV9NQVBfVEVYVFVSRV9TSVpFKSwKKyAgICAgIHRleDogZ2wuY3JlYXRlVGV4dHVyZSgpLAor
ICAgICAgdGFyZ2V0czogWworICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
CisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwKKyAgICAgICAgZ2wuVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLAorICAgICAgICBnbC5URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1ksCisgICAgICAgIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwKKyAgICAg
ICAgZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aCisgICAgICBdCisgICAgfQorICBdOwor
CisgIGZ1bmN0aW9uIGdldFNoYXJlZEFycmF5QnVmZmVyU2l6ZSgpIHsKKyAgICB2YXIgc2hhcmVk
QXJyYXlCdWZmZXJTaXplID0gMDsKKyAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGVzdHMubGVu
Z3RoOyArK3R0KSB7CisgICAgICB2YXIgdGVzdCA9IHRlc3RzW3R0XTsKKyAgICAgIGZvciAodmFy
IHRyZyA9IDA7IHRyZyA8IHRhcmdldHMubGVuZ3RoOyArK3RyZykgeworICAgICAgICB2YXIgdCA9
IHRhcmdldHNbdHJnXTsKKyAgICAgICAgdmFyIGJ1ZmZlclNpemVOZWVkZWQ7CisgICAgICAgIGlm
ICh0LnRhcmdldCA9PT0gZ2wuVEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAgIHZhciBwb3Np
dGl2ZVRlc3RTaXplID0gTWF0aC5taW4oMjA0OCwgdC5tYXhTaXplKTsKKyAgICAgICAgICBidWZm
ZXJTaXplTmVlZGVkID0gdGVzdC5mdW5jKHBvc2l0aXZlVGVzdFNpemUsIHBvc2l0aXZlVGVzdFNp
emUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGJ1ZmZlclNpemVOZWVkZWQgPSB0ZXN0
LmZ1bmModC5tYXhTaXplLCB0ZXN0LnNpemVTdGVwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
YnVmZmVyU2l6ZU5lZWRlZCA+IHNoYXJlZEFycmF5QnVmZmVyU2l6ZSkgeworICAgICAgICAgIHNo
YXJlZEFycmF5QnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemVOZWVkZWQ7CisgICAgICAgIH0KKyAgICAg
ICAgYnVmZmVyU2l6ZU5lZWRlZCA9IHRlc3QuZnVuYyh0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVw
LCB0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVwKTsKKyAgICAgICAgLy8gQXJyYXlCdWZmZXJzIGNh
biBiZSBhdCBtb3N0IDRHQiAobWludXMgMSBieXRlKS4KKyAgICAgICAgaWYgKGJ1ZmZlclNpemVO
ZWVkZWQgPiBzaGFyZWRBcnJheUJ1ZmZlclNpemUgJiYgYnVmZmVyU2l6ZU5lZWRlZCA8PSBtYXhB
cnJheUJ1ZmZlclNpemVCeXRlcykgeworICAgICAgICAgIHNoYXJlZEFycmF5QnVmZmVyU2l6ZSA9
IGJ1ZmZlclNpemVOZWVkZWQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHNoYXJlZEFycmF5QnVmZmVyU2l6ZTsKKyAgfQorCisgIC8vIFNoYXJlIGFuIEFycmF5QnVmZmVy
IGFtb25nIHRlc3RzIHRvIGF2b2lkIHRvbyBtYW55IGxhcmdlIGFsbG9jYXRpb25zCisgIHZhciBz
aGFyZWRBcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihnZXRTaGFyZWRBcnJheUJ1ZmZlclNp
emUoKSk7CisKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAg
dmFyIHRyZyA9IDA7CisgIHZhciB0dCA9IDA7CisgIHJ1bk5leHRUZXN0KCk7CisKKyAgZnVuY3Rp
b24gcnVuTmV4dFRlc3QoKSB7CisgICAgdmFyIHQgPSB0YXJnZXRzW3RyZ107CisKKyAgICBpZiAo
dHQgPT0gMCkgeworICAgICAgdmFyIHRleCA9IHQudGV4OworICAgICAgZ2wuYmluZFRleHR1cmUo
dC50YXJnZXQsIHRleCk7CisKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIGRlYnVnKCJtYXggc2l6
ZSBmb3IgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdC50YXJnZXQpICsgIjogIiArIHQubWF4
U2l6ZSk7CisgICAgfQorCisgICAgdmFyIHRlc3QgPSB0ZXN0c1t0dF07CisgICAgdGVzdEZvcm1h
dFR5cGUodCwgdGVzdCk7CisgICAgKyt0dDsKKyAgICBpZiAodHQgPT0gdGVzdHMubGVuZ3RoKSB7
CisgICAgICB0dCA9IDA7CisgICAgICArK3RyZzsKKyAgICAgIGlmICh0cmcgPT0gdGFyZ2V0cy5s
ZW5ndGgpIHsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgICB9
CisgICAgfQorICAgIHd0dS5kaXNwYXRjaFByb21pc2UocnVuTmV4dFRlc3QpOworICB9CisKKyAg
ZnVuY3Rpb24gdGVzdEZvcm1hdFR5cGUodCwgdGVzdCkgeworICAgIHZhciBwb3NpdGl2ZVRlc3RT
aXplID0gdC5tYXhTaXplOworICAgIHZhciBwb3NpdGl2ZVRlc3RPdGhlckRpbWVuc2lvbiA9IHRl
c3Quc2l6ZVN0ZXA7CisgICAgaWYgKHQudGFyZ2V0ID09PSBnbC5URVhUVVJFX0NVQkVfTUFQKSB7
CisgICAgICAvLyBDYW4ndCBhbHdheXMgdGVzdCB0aGUgbWF4aW11bSBzaXplIHNpbmNlIHRoYXQg
Y2FuIGNhdXNlIE9PTToKKyAgICAgIHBvc2l0aXZlVGVzdFNpemUgPSBNYXRoLm1pbihwb3NpdGl2
ZUN1YmVNYXBNYXhTaXplLCB0Lm1heFNpemUpOworICAgICAgLy8gQ3ViZSBtYXAgdGV4dHVyZXMg
bmVlZCB0byBiZSBzcXVhcmU6CisgICAgICBwb3NpdGl2ZVRlc3RPdGhlckRpbWVuc2lvbiA9IHBv
c2l0aXZlVGVzdFNpemU7CisgICAgfQorICAgIHZhciBwb3NpdGl2ZVRlc3RMZXZlbHMgPSBudW1M
ZXZlbHNGcm9tU2l6ZShwb3NpdGl2ZVRlc3RTaXplKTsKKyAgICB2YXIgbnVtTGV2ZWxzID0gbnVt
TGV2ZWxzRnJvbVNpemUodC5tYXhTaXplKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm51
bSBsZXZlbHM6ICIgKyBudW1MZXZlbHMgKyAiLCBsZXZlbHMgdXNlZCBpbiBwb3NpdGl2ZSB0ZXN0
OiAiICsgcG9zaXRpdmVUZXN0TGV2ZWxzKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIC8vIFF1
ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nl
c3MgaXQKKyAgICB2YXIgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGds
LCB0ZXN0LmV4dGVuc2lvbik7CisgICAgaWYgKGV4dCkgeworCisgICAgICB0ZXN0UGFzc2VkKCJT
dWNjZXNzZnVsbHkgZW5hYmxlZCAiICsgdGVzdC5leHRlbnNpb24gKyAiIGV4dGVuc2lvbiIpOwor
CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHQudGFyZ2V0cy5sZW5ndGg7ICsraikgeworICAg
ICAgICB2YXIgdGFyZ2V0ID0gdC50YXJnZXRzW2pdOworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGRlYnVnKHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgdGFyZ2V0KSArICIgIiArIHd0dS5nbEVu
dW1Ub1N0cmluZyhleHQsIHRlc3QuZm9ybWF0KSk7CisKKyAgICAgICAgLy8gcG9zaXRpdmUgdGVz
dAorICAgICAgICB2YXIgc2l6ZSA9IHBvc2l0aXZlVGVzdFNpemU7CisgICAgICAgIHZhciBvdGhl
ckRpbWVuc2lvbiA9IHBvc2l0aXZlVGVzdE90aGVyRGltZW5zaW9uOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBvc2l0aXZlVGVzdExldmVsczsgaSsrKSB7CisgICAgICAgICAgdmFyIHBp
eGVscyA9IG5ldyB0ZXN0LmRhdGFUeXBlKHNoYXJlZEFycmF5QnVmZmVyLCAwLCB0ZXN0LmZ1bmMo
c2l6ZSwgb3RoZXJEaW1lbnNpb24pKTsKKyAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RCh0YXJnZXQsIGksIHRlc3QuZm9ybWF0LCBzaXplLCBvdGhlckRpbWVuc2lvbiwgMCwgcGl4ZWxz
KTsKKyAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9h
ZGluZyBjb21wcmVzc2VkIHRleHR1cmUgc2hvdWxkIGdlbmVyYXRlIE5PX0VSUk9SLiIKKyAgICAg
ICAgICAgICAgKyAibGV2ZWwgaXMgIiArIGkgKyAiLCBzaXplIGlzICIgKyBzaXplICsgIngiICsg
b3RoZXJEaW1lbnNpb24pOworICAgICAgICAgIHNpemUgLz0gMjsKKyAgICAgICAgICBvdGhlckRp
bWVuc2lvbiAvPSAyOworICAgICAgICAgIGlmIChvdGhlckRpbWVuc2lvbiA8IDEpIHsKKyAgICAg
ICAgICAgICAgb3RoZXJEaW1lbnNpb24gPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBudW1MZXZlbHMgPSBudW1MZXZlbHNGcm9tU2l6ZSh0Lm1heFNpemUpOworCisg
ICAgICAgIC8vIG91dCBvZiBib3VuZHMgdGVzdHMKKworICAgICAgICAvLyB3aWR0aCBvciBoZWln
aHQgb3V0IG9mIGJvdW5kcworICAgICAgICBpZiAodC50YXJnZXQgIT0gZ2wuVEVYVFVSRV9DVUJF
X01BUCkgeworICAgICAgICAgICAgLy8gb25seSB3aWR0aCBvdXQgb2YgYm91bmRzCisgICAgICAg
ICAgICB2YXIgd2lkZUFuZFNob3J0RGF0YVNpemUgPSB0ZXN0LmZ1bmModC5tYXhTaXplICsgdGVz
dC5zaXplU3RlcCwgdGVzdC5zaXplU3RlcCk7CisgICAgICAgICAgICB2YXIgcGl4ZWxzTmVnYXRp
dmVUZXN0MSA9IG5ldyB0ZXN0LmRhdGFUeXBlKHNoYXJlZEFycmF5QnVmZmVyLCAwLCB3aWRlQW5k
U2hvcnREYXRhU2l6ZSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJn
ZXQsIDAsIHRlc3QuZm9ybWF0LCB0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVwLCB0ZXN0LnNpemVT
dGVwLCAwLCBwaXhlbHNOZWdhdGl2ZVRlc3QxKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJ3aWR0aCBvdXQgb2YgYm91bmRzOiBzaG91bGQg
Z2VuZXJhdGUgSU5WQUxJRF9WQUxVRS4iCisgICAgICAgICAgICAgICAgKyAiIGxldmVsIGlzIDAs
IHNpemUgaXMgIiArICh0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVwKSArICJ4IiArICh0ZXN0LnNp
emVTdGVwKSk7CisKKyAgICAgICAgICAgIC8vIG9ubHkgaGVpZ2h0IG91dCBvZiBib3VuZHMKKyAg
ICAgICAgICAgIHZhciBuYXJyb3dBbmRUYWxsRGF0YVNpemUgPSB0ZXN0LmZ1bmModGVzdC5zaXpl
U3RlcCwgdC5tYXhTaXplICsgdGVzdC5zaXplU3RlcCk7CisgICAgICAgICAgICB2YXIgcGl4ZWxz
TmVnYXRpdmVUZXN0MSA9IG5ldyB0ZXN0LmRhdGFUeXBlKHNoYXJlZEFycmF5QnVmZmVyLCAwLCBu
YXJyb3dBbmRUYWxsRGF0YVNpemUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQodGFyZ2V0LCAwLCB0ZXN0LmZvcm1hdCwgdGVzdC5zaXplU3RlcCwgdC5tYXhTaXplICsgdGVz
dC5zaXplU3RlcCwgMCwgcGl4ZWxzTmVnYXRpdmVUZXN0MSk7CisgICAgICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiaGVpZ2h0IG91dCBvZiBib3VuZHM6
IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX1ZBTFVFLiIKKyAgICAgICAgICAgICAgICArICIgbGV2
ZWwgaXMgMCwgc2l6ZSBpcyAiICsgKHRlc3Quc2l6ZVN0ZXApICsgIngiICsgKHQubWF4U2l6ZSAr
IHRlc3Quc2l6ZVN0ZXApKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGJvdGggd2lkdGggYW5k
IGhlaWdodCBvdXQgb2YgdGhlIG1heGltdW0gYm91bmRzIHNpbXVsdGFuZW91c2x5CisgICAgICAg
IHZhciBzcXVhcmVEYXRhU2l6ZSA9IHRlc3QuZnVuYyh0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVw
LCB0Lm1heFNpemUgKyB0ZXN0LnNpemVTdGVwKTsKKyAgICAgICAgLy8gdGhpcyBjaGVjayBhc3N1
bWVzIHRoYXQgZWFjaCBlbGVtZW50IGlzIDEgYnl0ZQorICAgICAgICBpZiAoc3F1YXJlRGF0YVNp
emUgPiBzaGFyZWRBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKSB7CisgICAgICAgICAgdGVzdFBhc3Nl
ZCgiVW5hYmxlIHRvIHRlc3Qgc3F1YXJlIHRleHR1cmUgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXpl
IGR1ZSB0byBBcnJheUJ1ZmZlciBzaXplIGxpbWl0YXRpb25zIC0tIHRoaXMgaXMgbGVnYWwiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YXIgcGl4ZWxzTmVnYXRpdmVUZXN0MSA9IG5l
dyB0ZXN0LmRhdGFUeXBlKHNoYXJlZEFycmF5QnVmZmVyLCAwLCBzcXVhcmVEYXRhU2l6ZSk7Cisg
ICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCAwLCB0ZXN0LmZvcm1hdCwg
dC5tYXhTaXplICsgdGVzdC5zaXplU3RlcCwgdC5tYXhTaXplICsgdGVzdC5zaXplU3RlcCwgMCwg
cGl4ZWxzTmVnYXRpdmVUZXN0MSk7CisgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgIndpZHRoIGFuZCBoZWlnaHQgb3V0IG9mIGJvdW5kczogc2hvdWxk
IGdlbmVyYXRlIElOVkFMSURfVkFMVUUuIgorICAgICAgICAgICAgICArICIgbGV2ZWwgaXMgMCwg
c2l6ZSBpcyAiICsgKHQubWF4U2l6ZSArIHRlc3Quc2l6ZVN0ZXApICsgIngiICsgKHQubWF4U2l6
ZSArIHRlc3Quc2l6ZVN0ZXApKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGxldmVsIG91dCBv
ZiBib3VuZHMKKyAgICAgICAgdmFyIHBpeGVsc05lZ2F0aXZlVGVzdDIgPSBuZXcgdGVzdC5kYXRh
VHlwZShzaGFyZWRBcnJheUJ1ZmZlciwgMCwgdGVzdC5mdW5jKDI1NiwgMjU2KSk7CisgICAgICAg
IGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbnVtTGV2ZWxzLCB0ZXN0LmZvcm1hdCwg
MjU2LCAyNTYsIDAsIHBpeGVsc05lZ2F0aXZlVGVzdDIpOworICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibGV2ZWwgb3V0IG9mIGJvdW5kczogc2hvdWxk
IGdlbmVyYXRlIElOVkFMSURfVkFMVUUuIgorICAgICAgICAgICAgKyAiIGxldmVsIGlzICIgKyBu
dW1MZXZlbHMgKyAiLCBzaXplIGlzIDI1NngyNTYiKTsKKyAgICAgICAgLy93aWR0aCBhbmQgaGVp
Z2h0IG91dCBvZiBib3VuZHMgZm9yIHNwZWNpZmllZCBsZXZlbAorICAgICAgICBnbC5jb21wcmVz
c2VkVGV4SW1hZ2UyRCh0YXJnZXQsIG51bUxldmVscyAtIDEsIHRlc3QuZm9ybWF0LCAyNTYsIDI1
NiwgMCwgcGl4ZWxzTmVnYXRpdmVUZXN0Mik7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfVkFMVUUsICJ3aWR0aCBvciBoZWlnaHQgb3V0IG9mIGJvdW5kcyBmb3Ig
c3BlY2lmaWVkIGxldmVsOiBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRS4iCisgICAgICAg
ICAgICArICIgbGV2ZWwgaXMgIiArIChudW1MZXZlbHMgLSAxKSArICIsIHNpemUgaXMgMjU2eDI1
NiIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vICIg
KyB0ZXN0LmV4dGVuc2lvbiArICIgZXh0ZW5zaW9uIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIp
OworICAgIH0KKyAgfQorCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvd2ViZ2wtZHJhdy1idWZmZXJzLXV0aWxzLmpz
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMv
d2ViZ2wtZHJhdy1idWZmZXJzLXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZDBjN2JhNjgwMmU2ZGZk
YmUzNTZlOTE2Yjg3MWJjM2Y3YTA0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy93ZWJnbC1kcmF3LWJ1ZmZl
cnMtdXRpbHMuanMKQEAgLTAsMCArMSw2OSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0Uu
dHh0IGZpbGUuCisqLworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgdXRpbGl0aWVzIHNoYXJlZCBi
ZXR3ZWVuIHRlc3RzIGZvciB0aGUgV0VCR0xfZHJhd19idWZmZXJzIGV4dGVuc2lvbiBhbmQgbXVs
dGlwbGUgZHJhdyBidWZmZXJzIGZ1bmN0aW9uYWxpdHkgaW4gV2ViR0wgMi4wLgorCisndXNlIHN0
cmljdCc7CisKK3ZhciBXZWJHTERyYXdCdWZmZXJzVXRpbHMgPSBmdW5jdGlvbihnbCwgZXh0KSB7
CisKKyAgdmFyIGdldE1heFVzYWJsZUNvbG9yQXR0YWNobWVudHMgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgbWF4RHJhd2luZ0J1ZmZlcnM7CisgICAgdmFyIG1heENvbG9yQXR0YWNobWVudHM7Cisg
ICAgaWYgKGV4dCkgeworICAgICAgLy8gRVhUX2RyYXdfYnVmZmVycworICAgICAgbWF4RHJhd2lu
Z0J1ZmZlcnMgPSBnbC5nZXRQYXJhbWV0ZXIoZXh0Lk1BWF9EUkFXX0JVRkZFUlNfV0VCR0wpOwor
ICAgICAgbWF4Q29sb3JBdHRhY2htZW50cyA9IGdsLmdldFBhcmFtZXRlcihleHQuTUFYX0NPTE9S
X0FUVEFDSE1FTlRTX1dFQkdMKTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gV2ViR0wgMi4wCisg
ICAgICBtYXhEcmF3aW5nQnVmZmVycyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfRFJBV19CVUZG
RVJTKTsKKyAgICAgIG1heENvbG9yQXR0YWNobWVudHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFY
X0NPTE9SX0FUVEFDSE1FTlRTKTsKKyAgICB9CisgICAgdmFyIG1heFVuaWZvcm1WZWN0b3JzID0g
Z2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMpOworICAgIHJl
dHVybiBNYXRoLm1pbihtYXhEcmF3aW5nQnVmZmVycywgbWF4Q29sb3JBdHRhY2htZW50cywgbWF4
VW5pZm9ybVZlY3RvcnMpOworICB9OworCisgIHZhciBtYWtlQ29sb3JBdHRhY2htZW50QXJyYXkg
PSBmdW5jdGlvbihzaXplKSB7CisgICAgdmFyIGFycmF5ID0gW10KKyAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgc2l6ZTsgKytpaSkgeworICAgICAgYXJyYXkucHVzaChnbC5DT0xPUl9BVFRBQ0hN
RU5UMCArIGlpKTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5OworICB9CisKKyAgdmFyIGNoZWNr
UHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKKyAgdmFyIGNoZWNrQXR0YWNo
bWVudHNGb3JDb2xvckZuID0gZnVuY3Rpb24oYXR0YWNobWVudHMsIGNvbG9yRm4pIHsKKyAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLnVzZVByb2dy
YW0oY2hlY2tQcm9ncmFtKTsKKyAgICBhdHRhY2htZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGF0dGFj
aG1lbnQsIGluZGV4KSB7CisgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBhdHRh
Y2htZW50LnRleHR1cmUpOworICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAg
ICAgIHZhciBleHBlY3RlZENvbG9yID0gY29sb3JGbihhdHRhY2htZW50LCBpbmRleCk7CisgICAg
ICB2YXIgdG9sZXJhbmNlID0gMDsKKyAgICAgIGV4cGVjdGVkQ29sb3IuZm9yRWFjaChmdW5jdGlv
bih2KSB7CisgICAgICAgIGlmICh2ICE9IDAgJiYgdiAhPSAyNTUpIHsKKyAgICAgICAgICB0b2xl
cmFuY2UgPSA4OworICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIHd0dS5jaGVja0NhbnZhcyhn
bCwgZXhwZWN0ZWRDb2xvciwgImF0dGFjaG1lbnQgIiArIGluZGV4ICsgIiBzaG91bGQgYmUgIiAr
IGV4cGVjdGVkQ29sb3IudG9TdHJpbmcoKSwgdG9sZXJhbmNlKTsKKyAgICB9KTsKKyAgICBkZWJ1
ZygiIik7CisgIH07CisKKyAgdmFyIGNoZWNrQXR0YWNobWVudHNGb3JDb2xvciA9IGZ1bmN0aW9u
KGF0dGFjaG1lbnRzLCBjb2xvcikgeworICAgIGNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuKGF0
dGFjaG1lbnRzLCBmdW5jdGlvbihhdHRhY2htZW50LCBpbmRleCkgeworICAgICAgcmV0dXJuIGNv
bG9yIHx8IGF0dGFjaG1lbnQuY29sb3I7CisgICAgfSk7CisgIH07CisKKyAgcmV0dXJuIHsKKyAg
ICBnZXRNYXhVc2FibGVDb2xvckF0dGFjaG1lbnRzOiBnZXRNYXhVc2FibGVDb2xvckF0dGFjaG1l
bnRzLAorICAgIG1ha2VDb2xvckF0dGFjaG1lbnRBcnJheTogbWFrZUNvbG9yQXR0YWNobWVudEFy
cmF5LAorICAgIGNoZWNrQXR0YWNobWVudHNGb3JDb2xvckZuOiBjaGVja0F0dGFjaG1lbnRzRm9y
Q29sb3JGbiwKKyAgICBjaGVja0F0dGFjaG1lbnRzRm9yQ29sb3I6IGNoZWNrQXR0YWNobWVudHNG
b3JDb2xvcgorICB9OworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3dlYmdsLXRlc3QtaGFybmVzcy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3dlYmdsLXRlc3QtaGFybmVzcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNDhkOWQyYWQ3NDE2YTJlMTdiYWExMDZjZTFiZjhiYmQ1MmZmYzkyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvanMvd2ViZ2wtdGVzdC1oYXJuZXNzLmpzCkBAIC0wLDAgKzEsNjQyIEBACisvKgorQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitm
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKKy8vIFRoaXMgaXMgYSB0ZXN0IGhh
cm5lc3MgZm9yIHJ1bm5pbmcgamF2YXNjcmlwdCB0ZXN0cyBpbiB0aGUgYnJvd3Nlci4KKy8vIFRo
ZSBvbmx5IGlkZW50aWZpZXIgZXhwb3NlZCBieSB0aGlzIGhhcm5lc3MgaXMgV2ViR0xUZXN0SGFy
bmVzc01vZHVsZS4KKy8vCisvLyBUbyB1c2UgaXQgbWFrZSBhbiBIVE1MIHBhZ2Ugd2l0aCBhbiBp
ZnJhbWUuIFRoZW4gY2FsbCB0aGUgaGFybmVzcyBsaWtlIHRoaXMKKy8vCisvLyAgICBmdW5jdGlv
biByZXBvcnRSZXN1bHRzKHR5cGUsIG1zZywgc3VjY2VzcykgeworLy8gICAgICAuLi4KKy8vICAg
ICAgcmV0dXJuIHRydWU7CisvLyAgICB9CisvLworLy8gICAgdmFyIGZpbGVMaXN0VVJMID0gJzAw
X3Rlc3RfbGlzdC50eHQnOworLy8gICAgdmFyIHRlc3RIYXJuZXNzID0gbmV3IFdlYkdMVGVzdEhh
cm5lc3NNb2R1bGUuVGVzdEhhcm5lc3MoCisvLyAgICAgICAgaWZyYW1lLAorLy8gICAgICAgIGZp
bGVMaXN0VVJMLAorLy8gICAgICAgIHJlcG9ydFJlc3VsdHMsCisvLyAgICAgICAgb3B0aW9ucyk7
CisvLworLy8gVGhlIGhhcm5lc3Mgd2lsbCBsb2FkIHRoZSBmaWxlTGlzdFVSTCBhbmQgcGFyc2Ug
aXQgZm9yIHRoZSBVUkxzLCBvbmUgVVJMCisvLyBwZXIgbGluZSBwcmVjZWRlZCBieSBvcHRpb25z
LCBzZWUgYmVsb3cuIFVSTHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGRvbWFpbgorLy8gYW5kIGF0
IHRoZSAgc2FtZSBmb2xkZXIgbGV2ZWwgb3IgYmVsb3cgdGhlIG1haW4gaHRtbCBmaWxlLiAgSWYg
YW55IFVSTCBlbmRzCisvLyBpbiAudHh0IGl0IHdpbGwgYmUgcGFyc2VkIGFzIHdlbGwgc28geW91
IGNhbiBuZXN0IC50eHQgZmlsZXMuIFVSTHMgaW5zaWRlIGEKKy8vIC50eHQgZmlsZSBzaG91bGQg
YmUgcmVsYXRpdmUgdG8gdGhhdCB0ZXh0IGZpbGUuCisvLworLy8gRHVyaW5nIHN0YXJ0dXAsIGZv
ciBlYWNoIHBhZ2UgZm91bmQgdGhlIHJlcG9ydEZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGgK
Ky8vIFdlYkdMVGVzdEhhcm5lc3NNb2R1bGUuVGVzdEhhcm5lc3MucmVwb3J0VHlwZS5BRERfUEFH
RSBhbmQgbXNnIHdpbGwgYmUKKy8vIHRoZSBVUkwgb2YgdGhlIHRlc3QuCisvLworLy8gRWFjaCB0
ZXN0IGlzIHJlcXVpcmVkIHRvIGNhbGwgdGVzdEhhcm5lc3MucmVwb3J0UmVzdWx0cy4gVGhpcyBp
cyBtb3N0IGVhc2lseQorLy8gYWNjb21wbGlzaGVkIGJ5IHN0b3JpbmcgdGhhdCB2YWx1ZSBvbiB0
aGUgbWFpbiB3aW5kb3cgd2l0aAorLy8KKy8vICAgICB3aW5kb3cud2ViZ2xUZXN0SGFybmVzcyA9
IHRlc3RIYXJuZXNzCisvLworLy8gYW5kIHRoZW4gYWRkaW5nIHRoZXNlIHRvIGZ1bmN0aW9ucyB0
byB5b3VyIHRlc3RzLgorLy8KKy8vICAgICBmdW5jdGlvbiByZXBvcnRUZXN0UmVzdWx0c1RvSGFy
bmVzcyhzdWNjZXNzLCBtc2cpIHsKKy8vICAgICAgIGlmICh3aW5kb3cucGFyZW50LndlYmdsVGVz
dEhhcm5lc3MpIHsKKy8vICAgICAgICAgd2luZG93LnBhcmVudC53ZWJnbFRlc3RIYXJuZXNzLnJl
cG9ydFJlc3VsdHMoc3VjY2VzcywgbXNnKTsKKy8vICAgICAgIH0KKy8vICAgICB9CisvLworLy8g
ICAgIGZ1bmN0aW9uIG5vdGlmeUZpbmlzaGVkVG9IYXJuZXNzKCkgeworLy8gICAgICAgaWYgKHdp
bmRvdy5wYXJlbnQud2ViZ2xUZXN0SGFybmVzcykgeworLy8gICAgICAgICB3aW5kb3cucGFyZW50
LndlYmdsVGVzdEhhcm5lc3Mubm90aWZ5RmluaXNoZWQoKTsKKy8vICAgICAgIH0KKy8vICAgICB9
CisvLworLy8gVGhpcyB3YXkgeW91ciB0ZXN0cyB3aWxsIHN0aWxsIHJ1biB3aXRob3V0IHRoZSBo
YXJuZXNzIGFuZCB5b3UgY2FuIHVzZQorLy8gYW55IHRlc3RpbmcgZnJhbWV3b3JrIHlvdSB3YW50
LgorLy8KKy8vIEVhY2ggdGVzdCBzaG91bGQgY2FsbCByZXBvcnRUZXN0UmVzdWx0c1RvSGFybmVz
cyB3aXRoIHRydWUgZm9yIHN1Y2Nlc3MgaWYgaXQKKy8vIHN1Y2NlZWRlZCBhbmQgZmFsc2UgaWYg
aXQgZmFpbCBmb2xsb3dlZCBhbmQgYW55IG1lc3NhZ2UgaXQgd2FudHMgdG8KKy8vIGFzc29jaWF0
ZSB3aXRoIHRoZSB0ZXN0LiBJZiB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHN1cHBvcnRzIGNoZWNr
aW5nIGZvcgorLy8gdGltZW91dCB5b3UgY2FuIGNhbGwgaXQgd2l0aCBzdWNjZXNzIGVxdWFsIHRv
IHVuZGVmaW5lZCBpbiB0aGF0IGNhc2UuCisvLworLy8gVG8gcnVuIHRoZSB0ZXN0cywgY2FsbCB0
ZXN0SGFybmVzcy5ydW5UZXN0cyhvcHRpb25zKTsKKy8vCisvLyBGb3IgZWFjaCB0ZXN0IHJ1biwg
YmVmb3JlIHRoZSBwYWdlIGlzIGxvYWRlZCB0aGUgcmVwb3J0RnVuY3Rpb24gd2lsbCBiZQorLy8g
Y2FsbGVkIHdpdGggV2ViR0xUZXN0SGFybmVzc01vZHVsZS5UZXN0SGFybmVzcy5yZXBvcnRUeXBl
LlNUQVJUX1BBR0UgYW5kIG1zZworLy8gd2lsbCBiZSB0aGUgVVJMIG9mIHRoZSB0ZXN0LiBZb3Ug
bWF5IHJldHVybiBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgdGVzdCB0byBiZQorLy8gc2tpcHBlZC4K
Ky8vCisvLyBGb3IgZWFjaCB0ZXN0IGNvbXBsZXRlZCB0aGUgcmVwb3J0RnVuY3Rpb24gd2lsbCBi
ZSBjYWxsZWQgd2l0aAorLy8gd2l0aCBXZWJHTFRlc3RIYXJuZXNzTW9kdWxlLlRlc3RIYXJuZXNz
LnJlcG9ydFR5cGUuVEVTVF9SRVNVTFQsCisvLyBzdWNjZXNzID0gdHJ1ZSBvbiBzdWNjZXNzLCBm
YWxzZSBvbiBmYWlsdXJlLCB1bmRlZmluZWQgb24gdGltZW91dAorLy8gYW5kIG1zZyBpcyBhbnkg
bWVzc2FnZSB0aGUgdGVzdCBjaG9vc2UgdG8gcGFzcyBvbi4KKy8vCisvLyBXaGVuIGFsbCB0aGUg
dGVzdHMgb24gdGhlIHBhZ2UgaGF2ZSBmaW5pc2hlZCB5b3VyIHBhZ2UgbXVzdCBjYWxsCisvLyBu
b3RpZnlGaW5pc2hlZFRvSGFybmVzcy4gIElmIG5vdGlmeUZpbmlzaGVkVG9IYXJuZXNzIGlzIG5v
dCBjYWxsZWQKKy8vIHRoZSBoYXJuZXNzIHdpbGwgYXNzdW1lIHRoZSB0ZXN0IHRpbWVkIG91dC4K
Ky8vCisvLyBXaGVuIGFsbCB0aGUgdGVzdHMgb24gYSBwYWdlIGhhdmUgZmluaXNoZWQgT1IgdGhl
IHBhZ2UgYXMgdGltZWQgb3V0IHRoZQorLy8gcmVwb3J0RnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg
d2l0aAorLy8gV2ViR0xUZXN0SGFybmVzc01vZHVsZS5UZXN0SGFybmVzcy5yZXBvcnRUeXBlLkZJ
TklTSF9QQUdFCisvLyB3aGVyZSBzdWNjZXNzID0gdHJ1ZSBpZiB0aGUgcGFnZSBoYXMgY29tcGxl
dGVkIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGFnZSB0aW1lZAorLy8gb3V0LgorLy8KKy8vIEZpbmFs
bHksIHdoZW4gYWxsIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZCB0aGUgcmVwb3J0RnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQKKy8vIHdpdGggV2ViR0xUZXN0SGFybmVzc01vZHVsZS5UZXN0SGFybmVz
cy5yZXBvcnRUeXBlLkZJTklTSEVEX0FMTF9URVNUUy4KKy8vCisvLyBIYXJuZXNzIE9wdGlvbnMK
Ky8vCisvLyBUaGVzZSBhcmUgcGFzc2VkIGluIHRvIHRoZSBUZXN0SGFybmVzcyBhcyBhIEphdmFT
Y3JpcHQgb2JqZWN0CisvLworLy8gdmVyc2lvbjogKHJlcXVpcmVkISkKKy8vCisvLyAgICAgU3Bl
Y2lmaWVzIGEgdmVyc2lvbiB1c2VkIHRvIGZpbHRlciB0ZXN0cy4gVGVzdHMgbWFya2VkIGFzIHJl
cXVpcmluZworLy8gICAgIGEgdmVyc2lvbiBncmVhdGVyIHRoYW4gdGhpcyB2ZXJzaW9uIHdpbGwg
bm90IGJlIGluY2x1ZGVkLgorLy8KKy8vICAgICBleGFtcGxlOiBuZXcgVGVzdEhhcm5lc3MoLi4u
Liwge3ZlcnNpb246ICIzLjEuMiJ9KTsKKy8vCisvLyBtaW5WZXJzaW9uOgorLy8KKy8vICAgICBT
cGVjaWZpZXMgdGhlIG1pbmltdW0gdmVyc2lvbiBhIHRlc3QgbXVzdCByZXF1aXJlIHRvIGJlIGlu
Y2x1ZGVkLgorLy8gICAgIFRoaXMgYmFzaWNhbGx5IGZsaXBzIHRoZSBmaWx0ZXIgc28gdGhhdCBv
bmx5IHRlc3RzIG1hcmtlZCB3aXRoCisvLyAgICAgLS1taW4tdmVyc2lvbiB3aWxsIGJlIGluY2x1
ZGVkIGlmIHRoZXkgYXJlIGF0IHRoaXMgbWluVmVyc2lvbiBvcgorLy8gICAgIGdyZWF0ZXIuCisv
LworLy8gICAgIGV4YW1wbGU6IG5ldyBUZXN0SGFybmVzcyguLi4uLCB7bWluVmVyc2lvbjogIjIu
My4xIn0pOworLy8KKy8vIG1heFZlcnNpb246CisvLworLy8gICAgIFNwZWNpZmllcyB0aGUgbWF4
aW11bSB2ZXJzaW9uIGEgdGVzdCBtdXN0IHJlcXVpcmUgdG8gYmUgaW5jbHVkZWQuCisvLyAgICAg
VGhpcyBiYXNpY2FsbHkgZmxpcHMgdGhlIGZpbHRlciBzbyB0aGF0IG9ubHkgdGVzdHMgbWFya2Vk
IHdpdGgKKy8vICAgICAtLW1heC12ZXJzaW9uIHdpbGwgYmUgaW5jbHVkZWQgaWYgdGhleSBhcmUg
YXQgdGhpcyBtYXhWZXJzaW9uIG9yCisvLyAgICAgbGVzcy4KKy8vCisvLyAgICAgZXhhbXBsZTog
bmV3IFRlc3RIYXJuZXNzKC4uLi4sIHttYXhWZXJzaW9uOiAiMi4zLjEifSk7CisvLworLy8gZmFz
dDoKKy8vCisvLyAgICAgU3BlY2lmaWVzIHRvIHNraXAgYW55IHRlc3RzIG1hcmtlZCBhcyBzbG93
LgorLy8KKy8vICAgICBleGFtcGxlOiBuZXcgVGVzdEhhcm5lc3MoLi4uLCB7ZmFzdDogdHJ1ZX0p
OworLy8KKy8vIFRlc3QgT3B0aW9uczoKKy8vCisvLyBBbnkgdGVzdCBVUkwgb3IgLnR4dCBmaWxl
IGNhbiBiZSBwcmVmaXhlZCBieSB0aGUgZm9sbG93aW5nIG9wdGlvbnMKKy8vCisvLyBtaW4tdmVy
c2lvbjoKKy8vCisvLyAgICAgU2V0cyB0aGUgbWluaW11bSB2ZXJzaW9uIHJlcXVpcmVkIHRvIGlu
Y2x1ZGUgdGhpcyB0ZXN0LiBBIHZlcnNpb24gaXMKKy8vICAgICBwYXNzZWQgaW50byB0aGUgaGFy
bmVzcyBvcHRpb25zLiBBbnkgdGVzdCBtYXJrZWQgYXMgcmVxdWlyaW5nIGEKKy8vICAgICBtaW4t
dmVyc2lvbiBncmVhdGVyIHRoYW4gdGhlIHZlcnNpb24gcGFzc2VkIHRvIHRoZSBoYXJuZXNzIGlz
IHNraXBwZWQuCisvLyAgICAgVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBuZXcgdGVzdHMgdG8gYSBz
dWl0ZSBvZiB0ZXN0cyBmb3IgYSBmdXR1cmUKKy8vICAgICB2ZXJzaW9uIG9mIHRoZSBzdWl0ZSB3
aXRob3V0IGluY2x1ZGluZyB0aGUgdGVzdCBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLgorLy8gICAg
IElmIG5vIC1taW4tdmVyc2lvbiBpcyBzcGVjaWZpZWQgaXQgaXMgaW5oZXJpaXRlZCBmcm9tIHRo
ZSAudHh0IGZpbGUKKy8vICAgICBpbmNsdWRpbmcgaXQuIFRoZSBkZWZhdWx0IGlzIDEuMC4wCisv
LworLy8gICAgIGV4YW1wbGU6ICAtLW1pbi12ZXJzaW9uIDIuMS4zIHNvbWV0ZXN0Lmh0bWwKKy8v
CisvLyBtYXgtdmVyc2lvbjoKKy8vCisvLyAgICAgU2V0cyB0aGUgbWF4aW11bSB2ZXJzaW9uIHJl
cXVpcmVkIHRvIGluY2x1ZGUgdGhpcyB0ZXN0LiBBIHZlcnNpb24gaXMKKy8vICAgICBwYXNzZWQg
aW50byB0aGUgaGFybmVzcyBvcHRpb25zLiBBbnkgdGVzdCBtYXJrZWQgYXMgcmVxdWlyaW5nIGEK
Ky8vICAgICBtYXgtdmVyc2lvbiBsZXNzIHRoYW4gdGhlIHZlcnNpb24gcGFzc2VkIHRvIHRoZSBo
YXJuZXNzIGlzIHNraXBwZWQuCisvLyAgICAgVGhpcyBhbGxvd3MgeW91IHRvIHRlc3QgZnVuY3Rp
b25hbGl0eSB0aGF0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBsYXRlcgorLy8gICAgIHZlcnNpb25z
IG9mIHRoZSBzdWl0ZS4KKy8vICAgICBJZiBubyAtbWF4LXZlcnNpb24gaXMgc3BlY2lmaWVkIGl0
IGlzIGluaGVyaXRlZCBmcm9tIHRoZSAudHh0IGZpbGUKKy8vICAgICBpbmNsdWRpbmcgaXQuCisv
LworLy8gICAgIGV4YW1wbGU6ICAtLW1heC12ZXJzaW9uIDEuOS45IHNvbWV0ZXN0Lmh0bWwKKy8v
CisvLyBzbG93OgorLy8KKy8vICAgICBNYXJrcyBhIHRlc3QgYXMgc2xvdy4gU2xvdyB0ZXN0cyBj
YW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIGZhc3RPbmx5OiB0cnVlCisvLyAgICAgdG8gdGhlIFRl
c3RIYXJuZXNzLiBPZiBjb3Vyc2UgeW91IG5lZWQgdG8gcGFzcyBhbGwgdGVzdHMgYnV0IHNvbWV0
aW1lcworLy8gICAgIHlvdSdkIGxpa2UgdG8gdGVzdCBxdWlja2x5IGFuZCBydW4gb25seSB0aGUg
ZmFzdCBzdWJzZXQgb2YgdGVzdHMuCisvLworLy8gICAgIGV4YW1wbGU6ICAtLXNsb3cgc29tZS10
ZXN0LXRoYXQtdGFrZXMtMi1taW5zLmh0bWwKKy8vCisKK1dlYkdMVGVzdEhhcm5lc3NNb2R1bGUg
PSBmdW5jdGlvbigpIHsKKworLyoqCisgKiBXcmFwcGVkIGxvZ2dpbmcgZnVuY3Rpb24uCisgKi8K
K3ZhciBsb2cgPSBmdW5jdGlvbihtc2cpIHsKKyAgaWYgKHdpbmRvdy5jb25zb2xlICYmIHdpbmRv
dy5jb25zb2xlLmxvZykgeworICAgIHdpbmRvdy5jb25zb2xlLmxvZyhtc2cpOworICB9Cit9Owor
CisvKioKKyAqIExvYWRzIHRleHQgZnJvbSBhbiBleHRlcm5hbCBmaWxlLiBUaGlzIGZ1bmN0aW9u
IGlzIHN5bmNocm9ub3VzLgorICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgdXJsIG9mIHRoZSBl
eHRlcm5hbCBmaWxlLgorICogQHBhcmFtIHshZnVuY3Rpb24oYm9vbCwgc3RyaW5nKTogdm9pZH0g
Y2FsbGJhY2sgdGhhdCBpcyBzZW50IGEgYm9vbCBmb3IKKyAqICAgICBzdWNjZXNzIGFuZCB0aGUg
c3RyaW5nLgorICovCit2YXIgbG9hZFRleHRGaWxlQXN5bmNocm9ub3VzID0gZnVuY3Rpb24odXJs
LCBjYWxsYmFjaykgeworICBsb2cgKCJsb2FkaW5nOiAiICsgdXJsKTsKKyAgdmFyIGVycm9yID0g
J2xvYWRUZXh0RmlsZVN5bmNocm9ub3VzIGZhaWxlZCB0byBsb2FkIHVybCAiJyArIHVybCArICci
JzsKKyAgdmFyIHJlcXVlc3Q7CisgIGlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKKyAgICBy
ZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgaWYgKHJlcXVlc3Qub3ZlcnJpZGVN
aW1lVHlwZSkgeworICAgICAgcmVxdWVzdC5vdmVycmlkZU1pbWVUeXBlKCd0ZXh0L3BsYWluJyk7
CisgICAgfQorICB9IGVsc2UgeworICAgIHRocm93ICdYTUxIdHRwUmVxdWVzdCBpcyBkaXNhYmxl
ZCc7CisgIH0KKyAgdHJ5IHsKKyAgICByZXF1ZXN0Lm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7Cisg
ICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChy
ZXF1ZXN0LnJlYWR5U3RhdGUgPT0gNCkgeworICAgICAgICB2YXIgdGV4dCA9ICcnOworICAgICAg
ICAvLyBIVFRQIHJlcG9ydHMgc3VjY2VzcyB3aXRoIGEgMjAwIHN0YXR1cy4gVGhlIGZpbGUgcHJv
dG9jb2wgcmVwb3J0cworICAgICAgICAvLyBzdWNjZXNzIHdpdGggemVyby4gSFRUUCBkb2VzIG5v
dCB1c2UgemVybyBhcyBhIHN0YXR1cyBjb2RlICh0aGV5CisgICAgICAgIC8vIHN0YXJ0IGF0IDEw
MCkuCisgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL0VuL1VzaW5nX1hN
TEh0dHBSZXF1ZXN0CisgICAgICAgIHZhciBzdWNjZXNzID0gcmVxdWVzdC5zdGF0dXMgPT0gMjAw
IHx8IHJlcXVlc3Quc3RhdHVzID09IDA7CisgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAg
ICAgdGV4dCA9IHJlcXVlc3QucmVzcG9uc2VUZXh0OworICAgICAgICB9CisgICAgICAgIGxvZygi
bG9hZGVkOiAiICsgdXJsKTsKKyAgICAgICAgY2FsbGJhY2soc3VjY2VzcywgdGV4dCk7CisgICAg
ICB9CisgICAgfTsKKyAgICByZXF1ZXN0LnNlbmQobnVsbCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICBsb2coImZhaWxlZCB0byBsb2FkOiAiICsgdXJsKTsKKyAgICBjYWxsYmFjayhmYWxzZSwgJycp
OworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uU3RyaW5nIFdlYkdM
IHZlcnNpb24gc3RyaW5nLgorICogQHJldHVybiB7bnVtYmVyfSBJbnRlZ2VyIGNvbnRhaW5pbmcg
dGhlIFdlYkdMIG1ham9yIHZlcnNpb24uCisgKi8KK3ZhciBnZXRNYWpvclZlcnNpb24gPSBmdW5j
dGlvbih2ZXJzaW9uU3RyaW5nKSB7CisgIGlmICghdmVyc2lvblN0cmluZykgeworICAgIHJldHVy
biAxOworICB9CisgIHJldHVybiBwYXJzZUludCh2ZXJzaW9uU3RyaW5nLnNwbGl0KCIgIilbMF0u
c3BsaXQoIi4iKVswXSwgMTApOworfTsKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEJh
c2UgVVJMIG9mIHRoZSB0ZXN0LgorICogQHBhcmFtIHttYXB9IG9wdGlvbnMgTWFwIG9mIG9wdGlv
bnMgdG8gYXBwZW5kIHRvIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcuCisgKiBAcmV0dXJuIHtzdHJp
bmd9IFVSTCB0aGF0IHdpbGwgcnVuIHRoZSB0ZXN0IHdpdGggdGhlIGdpdmVuIFdlYkdMIHZlcnNp
b24uCisgKi8KK3ZhciBnZXRVUkxXaXRoT3B0aW9ucyA9IGZ1bmN0aW9uKHVybCwgb3B0aW9ucykg
eworICB2YXIgcXVlcnlBcmdzID0gMDsKKworICBmb3IgKGkgaW4gb3B0aW9ucykgeworICAgIHVy
bCArPSBxdWVyeUFyZ3MgPyAiJiIgOiAiPyI7CisgICAgdXJsICs9IGkgKyAiPSIgKyBvcHRpb25z
W2ldOworICAgIHF1ZXJ5QXJncysrOworICB9CisKKyAgcmV0dXJuIHVybDsKK307CisKKy8qKgor
ICogQ29tcGFyZSB2ZXJzaW9uIHN0cmluZ3MuCisgKi8KK3ZhciBncmVhdGVyVGhhbk9yRXF1YWxU
b1ZlcnNpb24gPSBmdW5jdGlvbihoYXZlLCB3YW50KSB7CisgIGhhdmUgPSBoYXZlLnNwbGl0KCIg
IilbMF0uc3BsaXQoIi4iKTsKKyAgd2FudCA9IHdhbnQuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIp
OworCisgIC8vaGF2ZSAxLjIuMyAgIHdhbnQgIDEuMQorICAvL2hhdmUgMS4xLjEgICB3YW50ICAx
LjEKKyAgLy9oYXZlIDEuMC45ICAgd2FudCAgMS4xCisgIC8vaGF2ZSAxLjEgICAgIHdhbnQgIDEu
MS4xCisKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHdhbnQubGVuZ3RoOyArK2lpKSB7CisgICAg
dmFyIHdhbnROdW0gPSBwYXJzZUludCh3YW50W2lpXSk7CisgICAgdmFyIGhhdmVOdW0gPSBoYXZl
W2lpXSA/IHBhcnNlSW50KGhhdmVbaWldKSA6IDAKKyAgICBpZiAoaGF2ZU51bSA+IHdhbnROdW0p
IHsKKyAgICAgIHJldHVybiB0cnVlOyAvLyAyLjAuMCBpcyBncmVhdGVyIHRoYW4gMS4yLjMKKyAg
ICB9CisgICAgaWYgKGhhdmVOdW0gPCB3YW50TnVtKSB7CisgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICB9CisgIHJldHVybiB0cnVlOworfTsKKworLyoqCisgKiBSZWFkcyBhIGZpbGUsIHJl
Y3Vyc2l2ZWx5IGFkZGluZyBmaWxlcyByZWZlcmVuY2VkIGluc2lkZS4KKyAqCisgKiBFYWNoIGxp
bmUgb2YgVVJMIGlzIHBhcnNlZCwgY29tbWVudHMgc3RhcnRpbmcgd2l0aCAnIycgb3IgJzsnCisg
KiBvciAnLy8nIGFyZSBzdHJpcHBlZC4KKyAqCisgKiBhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGgg
LS0gYXJlIGV4dHJhY3RlZAorICoKKyAqIGxpbmVzIHRoYXQgZW5kIGluIC50eHQgYXJlIHJlY3Vy
c2l2ZWx5IHNjYW5uZWQgZm9yIG1vcmUgZmlsZXMKKyAqIG90aGVyIGxpbmVzIGFyZSBhZGRlZCB0
byB0aGUgbGlzdCBvZiBmaWxlcy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSB1cmwg
b2YgdGhlIGZpbGUgdG8gcmVhZC4KKyAqIEBwYXJhbSB7ZnVuY3Rpb24oYm9vbGVhbiwgIUFycmF5
LjxzdHJpbmc+KTp2b2lkfSBjYWxsYmFjaworICogICAgICBDYWxsYmFjayB0aGF0IGlzIGNhbGxl
ZCB3aXRoIHRydWUgZm9yIHN1Y2Nlc3MgYW5kIGFuCisgKiAgICAgIGFycmF5IG9mIGZpbGVuYW1l
cy4KKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMKKyAqCisgKiBP
cHRpb25zOgorICogICAgdmVyc2lvbjoge3N0cmluZ30gVGhlIHZlcnNpb24gb2YgdGhlIGNvbmZv
cm1hbmNlIHRlc3QuCisgKiAgICBUZXN0cyB3aXRoIHRoZSBhcmd1bWVudCAtLW1pbi12ZXJzaW9u
IDx2ZXJzaW9uPiB3aWxsCisgKiAgICBiZSBpZ25vcmVkIHZlcnNpb24gaXMgbGVzcyB0aGVuIDx2
ZXJzaW9uPgorICoKKyAqLwordmFyIGdldEZpbGVMaXN0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFj
aywgb3B0aW9ucykgeworICB2YXIgZmlsZXMgPSBbXTsKKworICB2YXIgY29weU9iamVjdCA9IGZ1
bmN0aW9uKG9iaikgeworICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikp
OworICB9OworCisgIHZhciB0b0NhbWVsQ2FzZSA9IGZ1bmN0aW9uKHN0cikgeworICAgIHJldHVy
biBzdHIucmVwbGFjZSgvLShbYS16XSkvZywgZnVuY3Rpb24gKGcpIHsgcmV0dXJuIGdbMV0udG9V
cHBlckNhc2UoKSB9KTsKKyAgfTsKKworICB2YXIgZ2xvYmFsT3B0aW9ucyA9IGNvcHlPYmplY3Qo
b3B0aW9ucyk7CisgIGdsb2JhbE9wdGlvbnMuZGVmYXVsdFZlcnNpb24gPSAiMS4wIjsKKyAgZ2xv
YmFsT3B0aW9ucy5kZWZhdWx0TWF4VmVyc2lvbiA9IG51bGw7CisKKyAgdmFyIGdldEZpbGVMaXN0
SW1wbCA9IGZ1bmN0aW9uKHByZWZpeCwgbGluZSwgbGluZU51bSwgaGllcmFyY2hpY2FsT3B0aW9u
cywgY2FsbGJhY2spIHsKKyAgICB2YXIgZmlsZXMgPSBbXTsKKworICAgIHZhciBhcmdzID0gbGlu
ZS5zcGxpdCgvXHMrLyk7CisgICAgdmFyIG5vbk9wdGlvbnMgPSBbXTsKKyAgICB2YXIgdXNlVGVz
dCA9IHRydWU7CisgICAgdmFyIHRlc3RPcHRpb25zID0ge307CisgICAgZm9yICh2YXIgamogPSAw
OyBqaiA8IGFyZ3MubGVuZ3RoOyArK2pqKSB7CisgICAgICB2YXIgYXJnID0gYXJnc1tqal07Cisg
ICAgICBpZiAoYXJnWzBdID09ICctJykgeworICAgICAgICBpZiAoYXJnWzFdICE9ICctJykgewor
ICAgICAgICAgIHRocm93ICgiYmFkIG9wdGlvbiBhdCBpbiAiICsgdXJsICsgIjoiICsgbGluZU51
bSArICI6ICIgKyBhcmcpOworICAgICAgICB9CisgICAgICAgIHZhciBvcHRpb24gPSBhcmcuc3Vi
c3RyaW5nKDIpOworICAgICAgICBzd2l0Y2ggKG9wdGlvbikgeworICAgICAgICAgIC8vIG5vIGFy
Z3VtZW50IG9wdGlvbnMuCisgICAgICAgICAgY2FzZSAnc2xvdyc6CisgICAgICAgICAgICB0ZXN0
T3B0aW9uc1t0b0NhbWVsQ2FzZShvcHRpb24pXSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAvLyBvbmUgYXJndW1lbnQgb3B0aW9ucy4KKyAgICAgICAgICBjYXNlICdtaW4t
dmVyc2lvbic6CisgICAgICAgICAgY2FzZSAnbWF4LXZlcnNpb24nOgorICAgICAgICAgICAgKytq
ajsKKyAgICAgICAgICAgIHRlc3RPcHRpb25zW3RvQ2FtZWxDYXNlKG9wdGlvbildID0gYXJnc1tq
al07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgKCJiYWQgdW5rbm93biBvcHRpb24gJyIgKyBvcHRpb24gKyAiJyBhdCBpbiAiICsgdXJs
ICsgIjoiICsgbGluZU51bSArICI6ICIgKyBhcmcpOworICAgICAgICB9CisgICAgICB9IGVsc2Ug
eworICAgICAgICBub25PcHRpb25zLnB1c2goYXJnKTsKKyAgICAgIH0KKyAgICB9CisgICAgdmFy
IHVybCA9IHByZWZpeCArIG5vbk9wdGlvbnMuam9pbigiICIpOworCisgICAgaWYgKHVybC5zdWJz
dHIodXJsLmxlbmd0aCAtIDQpICE9ICcudHh0JykgeworICAgICAgdmFyIG1pblZlcnNpb24gPSB0
ZXN0T3B0aW9ucy5taW5WZXJzaW9uOworICAgICAgaWYgKCFtaW5WZXJzaW9uKSB7CisgICAgICAg
IG1pblZlcnNpb24gPSBoaWVyYXJjaGljYWxPcHRpb25zLmRlZmF1bHRWZXJzaW9uOworICAgICAg
fQorICAgICAgdmFyIG1heFZlcnNpb24gPSB0ZXN0T3B0aW9ucy5tYXhWZXJzaW9uOworICAgICAg
aWYgKCFtYXhWZXJzaW9uKSB7CisgICAgICAgIG1heFZlcnNpb24gPSBoaWVyYXJjaGljYWxPcHRp
b25zLmRlZmF1bHRNYXhWZXJzaW9uOworICAgICAgfQorICAgICAgdmFyIHNsb3cgPSB0ZXN0T3B0
aW9ucy5zbG93OworICAgICAgaWYgKCFzbG93KSB7CisgICAgICAgIHNsb3cgPSBoaWVyYXJjaGlj
YWxPcHRpb25zLmRlZmF1bHRTbG93OworICAgICAgfQorCisgICAgICBpZiAoZ2xvYmFsT3B0aW9u
cy5mYXN0ICYmIHNsb3cpIHsKKyAgICAgICAgdXNlVGVzdCA9IGZhbHNlOworICAgICAgfSBlbHNl
IGlmIChnbG9iYWxPcHRpb25zLm1pblZlcnNpb24pIHsKKyAgICAgICAgdXNlVGVzdCA9IGdyZWF0
ZXJUaGFuT3JFcXVhbFRvVmVyc2lvbihtaW5WZXJzaW9uLCBnbG9iYWxPcHRpb25zLm1pblZlcnNp
b24pOworICAgICAgfSBlbHNlIGlmIChnbG9iYWxPcHRpb25zLm1heFZlcnNpb24gJiYgbWF4VmVy
c2lvbikgeworICAgICAgICB1c2VUZXN0ID0gZ3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKGds
b2JhbE9wdGlvbnMubWF4VmVyc2lvbiwgbWF4VmVyc2lvbik7CisgICAgICB9IGVsc2UgeworICAg
ICAgICB1c2VUZXN0ID0gZ3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKGdsb2JhbE9wdGlvbnMu
dmVyc2lvbiwgbWluVmVyc2lvbik7CisgICAgICAgIGlmIChtYXhWZXJzaW9uKSB7CisgICAgICAg
ICAgdXNlVGVzdCA9IHVzZVRlc3QgJiYgZ3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKG1heFZl
cnNpb24sIGdsb2JhbE9wdGlvbnMudmVyc2lvbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIXVzZVRlc3QpIHsKKyAgICAgIGNhbGxiYWNrKHRydWUsIFtdKTsKKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXJsLnN1YnN0cih1cmwubGVuZ3RoIC0gNCkgPT0g
Jy50eHQnKSB7CisgICAgICAvLyBJZiBhIHZlcnNpb24gd2FzIGV4cGxpY2l0eSBzcGVjaWZpZWQg
cGFzcyBpdCBkb3duLgorICAgICAgaWYgKHRlc3RPcHRpb25zLm1pblZlcnNpb24pIHsKKyAgICAg
ICAgaGllcmFyY2hpY2FsT3B0aW9ucy5kZWZhdWx0VmVyc2lvbiA9IHRlc3RPcHRpb25zLm1pblZl
cnNpb247CisgICAgICB9CisgICAgICBpZiAodGVzdE9wdGlvbnMubWF4VmVyc2lvbikgeworICAg
ICAgICBoaWVyYXJjaGljYWxPcHRpb25zLmRlZmF1bHRNYXhWZXJzaW9uID0gdGVzdE9wdGlvbnMu
bWF4VmVyc2lvbjsKKyAgICAgIH0KKyAgICAgIGlmICh0ZXN0T3B0aW9ucy5zbG93KSB7CisgICAg
ICAgIGhpZXJhcmNoaWNhbE9wdGlvbnMuZGVmYXVsdFNsb3cgPSB0ZXN0T3B0aW9ucy5zbG93Owor
ICAgICAgfQorICAgICAgbG9hZFRleHRGaWxlQXN5bmNocm9ub3VzKHVybCwgZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiBmdW5jdGlvbihzdWNjZXNzLCB0ZXh0KSB7CisgICAgICAgICAgaWYg
KCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgJycpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgbGluZXMgPSB0ZXh0LnNwbGl0
KCdcbicpOworICAgICAgICAgIHZhciBwcmVmaXggPSAnJzsKKyAgICAgICAgICB2YXIgbGFzdFNs
YXNoID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7CisgICAgICAgICAgaWYgKGxhc3RTbGFzaCA+PSAw
KSB7CisgICAgICAgICAgICBwcmVmaXggPSB1cmwuc3Vic3RyKDAsIGxhc3RTbGFzaCArIDEpOwor
ICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgZmFpbCA9IGZhbHNlOworICAgICAgICAgIHZhciBj
b3VudCA9IDE7CisgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgICAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgbGluZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAgICB2YXIgc3RyID0g
bGluZXNbaWldLnJlcGxhY2UoL15cc1xzKi8sICcnKS5yZXBsYWNlKC9cc1xzKiQvLCAnJyk7Cisg
ICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA+IDQgJiYKKyAgICAgICAgICAgICAgICBzdHJbMF0g
IT0gJyMnICYmCisgICAgICAgICAgICAgICAgc3RyWzBdICE9ICI7IiAmJgorICAgICAgICAgICAg
ICAgIHN0ci5zdWJzdHIoMCwgMikgIT0gIi8vIikgeworICAgICAgICAgICAgICArK2NvdW50Owor
ICAgICAgICAgICAgICBnZXRGaWxlTGlzdEltcGwocHJlZml4LCBzdHIsIGlpICsgMSwgY29weU9i
amVjdChoaWVyYXJjaGljYWxPcHRpb25zKSwgZnVuY3Rpb24oaW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oc3VjY2VzcywgbmV3X2ZpbGVzKSB7CisgICAgICAgICAgICAg
ICAgICAvL2xvZygiZ290IGZpbGVzOiAiICsgbmV3X2ZpbGVzLmxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBmaWxlc1tpbmRleF0g
PSBuZXdfZmlsZXM7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBmaW5p
c2goc3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgfShpbmRleCsr
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGZpbmlzaCh0cnVlKTsK
KworICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaChzdWNjZXNzKSB7CisgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgZmFpbCA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAtLWNvdW50OworICAgICAgICAgICAgLy9sb2coImNvdW50OiAiICsgY291bnQp
OworICAgICAgICAgICAgaWYgKCFjb3VudCkgeworICAgICAgICAgICAgICBjYWxsYmFjayghZmFp
bCwgZmlsZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgZmlsZXMucHVzaCh1cmwpOworICAgICAgY2FsbGJh
Y2sodHJ1ZSwgZmlsZXMpOworICAgIH0KKyAgfTsKKworICBnZXRGaWxlTGlzdEltcGwoJycsIHVy
bCwgMSwgZ2xvYmFsT3B0aW9ucywgZnVuY3Rpb24oc3VjY2VzcywgZmlsZXMpIHsKKyAgICAvLyBm
bGF0dGVuCisgICAgdmFyIGZsYXQgPSBbXTsKKyAgICBmbGF0dGVuKGZpbGVzKTsKKyAgICBmdW5j
dGlvbiBmbGF0dGVuKGZpbGVzKSB7CisgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZmlsZXMu
bGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGZpbGVzW2lpXTsKKyAgICAgICAg
aWYgKHR5cGVvZih2YWx1ZSkgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICBmbGF0LnB1c2godmFs
dWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGZsYXR0ZW4odmFsdWUpOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICAgIGNhbGxiYWNrKHN1Y2Nlc3MsIGZsYXQpOworICB9KTsK
K307CisKK3ZhciBGaWx0ZXJVUkwgPSAoZnVuY3Rpb24oKSB7CisgIHZhciBwcmVmaXggPSB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7CisgIHByZWZpeCA9IHByZWZpeC5zdWJzdHJpbmcoMCwgcHJl
Zml4Lmxhc3RJbmRleE9mKCIvIikgKyAxKTsKKyAgcmV0dXJuIGZ1bmN0aW9uKHVybCkgeworICAg
IGlmICh1cmwuc3Vic3RyaW5nKDAsIHByZWZpeC5sZW5ndGgpID09IHByZWZpeCkgeworICAgICAg
dXJsID0gdXJsLnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTsKKyAgICB9CisgICAgcmV0dXJuIHVy
bDsKKyAgfTsKK30oKSk7CisKK3ZhciBUZXN0RmlsZSA9IGZ1bmN0aW9uKHVybCkgeworICB0aGlz
LnVybCA9IHVybDsKK307CisKK3ZhciBUZXN0ID0gZnVuY3Rpb24oZmlsZSkgeworICB0aGlzLmZp
bGUgPSBmaWxlOworfTsKKwordmFyIFRlc3RIYXJuZXNzID0gZnVuY3Rpb24oaWZyYW1lLCBmaWxl
bGlzdFVybCwgcmVwb3J0RnVuYywgb3B0aW9ucykgeworICB0aGlzLndpbmRvdyA9IHdpbmRvdzsK
KyAgdGhpcy5pZnJhbWVzID0gaWZyYW1lLmxlbmd0aCA/IGlmcmFtZSA6IFtpZnJhbWVdOworICB0
aGlzLnJlcG9ydEZ1bmMgPSByZXBvcnRGdW5jOworICB0aGlzLnRpbWVvdXREZWxheSA9IDIwMDAw
OworICB0aGlzLmZpbGVzID0gW107CisgIHRoaXMuYWxsb3dTa2lwID0gb3B0aW9ucy5hbGxvd1Nr
aXA7CisgIHRoaXMud2ViZ2xWZXJzaW9uID0gZ2V0TWFqb3JWZXJzaW9uKG9wdGlvbnMudmVyc2lv
bik7CisgIHRoaXMuZHVtcFNoYWRlcnMgPSBvcHRpb25zLmR1bXBTaGFkZXJzOworICB0aGlzLnF1
aWV0ID0gb3B0aW9ucy5xdWlldDsKKworICB2YXIgdGhhdCA9IHRoaXM7CisgIGdldEZpbGVMaXN0
KGZpbGVsaXN0VXJsLCBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3VjY2Vzcywg
ZmlsZXMpIHsKKyAgICAgIHRoYXQuYWRkRmlsZXNfKHN1Y2Nlc3MsIGZpbGVzKTsKKyAgICB9Owor
ICB9KCksIG9wdGlvbnMpOworCit9OworCitUZXN0SGFybmVzcy5yZXBvcnRUeXBlID0geworICBB
RERfUEFHRTogMSwKKyAgUkVBRFk6IDIsCisgIFNUQVJUX1BBR0U6IDMsCisgIFRFU1RfUkVTVUxU
OiA0LAorICBGSU5JU0hfUEFHRTogNSwKKyAgRklOSVNIRURfQUxMX1RFU1RTOiA2Cit9OworCitU
ZXN0SGFybmVzcy5wcm90b3R5cGUuYWRkRmlsZXNfID0gZnVuY3Rpb24oc3VjY2VzcywgZmlsZXMp
IHsKKyAgaWYgKCFzdWNjZXNzKSB7CisgICAgdGhpcy5yZXBvcnRGdW5jKAorICAgICAgICBUZXN0
SGFybmVzcy5yZXBvcnRUeXBlLkZJTklTSEVEX0FMTF9URVNUUywKKyAgICAgICAgJycsCisgICAg
ICAgICdVbmFibGUgdG8gbG9hZCB0ZXN0cy4gQXJlIHlvdSBydW5uaW5nIGxvY2FsbHk/XG4nICsK
KyAgICAgICAgJ1lvdSBuZWVkIHRvIHJ1biBmcm9tIGEgc2VydmVyIG9yIGNvbmZpZ3VyZSB5b3Vy
XG4nICsKKyAgICAgICAgJ2Jyb3dzZXIgdG8gYWxsb3cgYWNjZXNzIHRvIGxvY2FsIGZpbGVzIChu
b3QgcmVjb21tZW5kZWQpLlxuXG4nICsKKyAgICAgICAgJ05vdGU6IEFuIGVhc3kgd2F5IHRvIHJ1
biBmcm9tIGEgc2VydmVyOlxuXG4nICsKKyAgICAgICAgJ1x0Y2QgcGF0aF90b190ZXN0c1xuJyAr
CisgICAgICAgICdcdHB5dGhvbiAtbSBTaW1wbGVIVFRQU2VydmVyXG5cbicgKworICAgICAgICAn
dGhlbiBwb2ludCB5b3VyIGJyb3dzZXIgdG8gJyArCisgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC93ZWJnbC1jb25mb3JtYW5jZS10ZXN0cy5odG1sIj4nICsKKyAgICAg
ICAgICAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dlYmdsLWNvbmZvcm1hbmNlLXRlc3RzLmh0bWw8
L2E+JywKKyAgICAgICAgZmFsc2UpCisgICAgcmV0dXJuOworICB9CisgIGxvZygidG90YWwgZmls
ZXM6ICIgKyBmaWxlcy5sZW5ndGgpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZmlsZXMubGVu
Z3RoOyArK2lpKSB7CisgICAgbG9nKCIiICsgaWkgKyAiOiAiICsgZmlsZXNbaWldKTsKKyAgICB0
aGlzLmZpbGVzLnB1c2gobmV3IFRlc3RGaWxlKGZpbGVzW2lpXSkpOworICAgIHRoaXMucmVwb3J0
RnVuYyhUZXN0SGFybmVzcy5yZXBvcnRUeXBlLkFERF9QQUdFLCAnJywgZmlsZXNbaWldLCB1bmRl
ZmluZWQpOworICB9CisgIHRoaXMucmVwb3J0RnVuYyhUZXN0SGFybmVzcy5yZXBvcnRUeXBlLlJF
QURZLCAnJywgdW5kZWZpbmVkLCB1bmRlZmluZWQpOworfQorCitUZXN0SGFybmVzcy5wcm90b3R5
cGUucnVuVGVzdHMgPSBmdW5jdGlvbihvcHRfb3B0aW9ucykgeworICB2YXIgb3B0aW9ucyA9IG9w
dF9vcHRpb25zIHx8IHsgfTsKKyAgb3B0aW9ucy5zdGFydCA9IG9wdGlvbnMuc3RhcnQgfHwgMDsK
KyAgb3B0aW9ucy5jb3VudCA9IG9wdGlvbnMuY291bnQgfHwgdGhpcy5maWxlcy5sZW5ndGg7CisK
KyAgdGhpcy5pZGxlSUZyYW1lcyA9IHRoaXMuaWZyYW1lcy5zbGljZSgwKTsKKyAgdGhpcy5ydW5u
aW5nVGVzdHMgPSB7fTsKKyAgdmFyIHRlc3RzVG9SdW4gPSBbXTsKKyAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IG9wdGlvbnMuY291bnQ7ICsraWkpIHsKKyAgICB0ZXN0c1RvUnVuLnB1c2goaWkgKyBv
cHRpb25zLnN0YXJ0KTsKKyAgfQorICB0aGlzLm51bVRlc3RzUmVtYWluaW5nID0gb3B0aW9ucy5j
b3VudDsKKyAgdGhpcy50ZXN0c1RvUnVuID0gdGVzdHNUb1J1bjsKKyAgdGhpcy5zdGFydE5leHRU
ZXN0KCk7Cit9OworCitUZXN0SGFybmVzcy5wcm90b3R5cGUuc2V0VGltZW91dCA9IGZ1bmN0aW9u
KHRlc3QpIHsKKyAgdmFyIHRoYXQgPSB0aGlzOworICB0ZXN0LnRpbWVvdXRJZCA9IHRoaXMud2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB0aGF0LnRpbWVvdXQodGVzdCk7Cisg
ICAgfSwgdGhpcy50aW1lb3V0RGVsYXkpOworfTsKKworVGVzdEhhcm5lc3MucHJvdG90eXBlLmNs
ZWFyVGltZW91dCA9IGZ1bmN0aW9uKHRlc3QpIHsKKyAgdGhpcy53aW5kb3cuY2xlYXJUaW1lb3V0
KHRlc3QudGltZW91dElkKTsKK307CisKK1Rlc3RIYXJuZXNzLnByb3RvdHlwZS5zdGFydE5leHRU
ZXN0ID0gZnVuY3Rpb24oKSB7CisgIGlmICh0aGlzLm51bVRlc3RzUmVtYWluaW5nID09IDApIHsK
KyAgICBsb2coImRvbmUiKTsKKyAgICB0aGlzLnJlcG9ydEZ1bmMoVGVzdEhhcm5lc3MucmVwb3J0
VHlwZS5GSU5JU0hFRF9BTExfVEVTVFMsCisgICAgICAgICAgICAgICAgICAgICcnLCAnJywgdHJ1
ZSk7CisgIH0gZWxzZSB7CisgICAgd2hpbGUgKHRoaXMudGVzdHNUb1J1bi5sZW5ndGggPiAwICYm
IHRoaXMuaWRsZUlGcmFtZXMubGVuZ3RoID4gMCkgeworICAgICAgdmFyIHRlc3RJZCA9IHRoaXMu
dGVzdHNUb1J1bi5zaGlmdCgpOworICAgICAgdmFyIGlmcmFtZSA9IHRoaXMuaWRsZUlGcmFtZXMu
c2hpZnQoKTsKKyAgICAgIHRoaXMuc3RhcnRUZXN0KGlmcmFtZSwgdGhpcy5maWxlc1t0ZXN0SWRd
LCB0aGlzLndlYmdsVmVyc2lvbik7CisgICAgfQorICB9Cit9OworCitUZXN0SGFybmVzcy5wcm90
b3R5cGUuc3RhcnRUZXN0ID0gZnVuY3Rpb24oaWZyYW1lLCB0ZXN0RmlsZSwgd2ViZ2xWZXJzaW9u
KSB7CisgIHZhciB0ZXN0ID0geworICAgIGlmcmFtZTogaWZyYW1lLAorICAgIHRlc3RGaWxlOiB0
ZXN0RmlsZQorICB9OworICB2YXIgdXJsID0gdGVzdEZpbGUudXJsOworICB0aGlzLnJ1bm5pbmdU
ZXN0c1t1cmxdID0gdGVzdDsKKyAgbG9nKCJsb2FkaW5nOiAiICsgdXJsKTsKKyAgaWYgKHRoaXMu
cmVwb3J0RnVuYyhUZXN0SGFybmVzcy5yZXBvcnRUeXBlLlNUQVJUX1BBR0UsIHVybCwgdXJsLCB1
bmRlZmluZWQpKSB7CisgICAgaWZyYW1lLnNyYyA9IGdldFVSTFdpdGhPcHRpb25zKHVybCwgewor
ICAgICAgIndlYmdsVmVyc2lvbiI6IHdlYmdsVmVyc2lvbiwKKyAgICAgICJkdW1wU2hhZGVycyI6
IHRoaXMuZHVtcFNoYWRlcnMsCisgICAgICAicXVpZXQiOiB0aGlzLnF1aWV0CisgICAgfSk7Cisg
ICAgdGhpcy5zZXRUaW1lb3V0KHRlc3QpOworICB9IGVsc2UgeworICAgIHRoaXMucmVwb3J0UmVz
dWx0cyh1cmwsICEhdGhpcy5hbGxvd1NraXAsICJza2lwcGVkIiwgdHJ1ZSk7CisgICAgdGhpcy5u
b3RpZnlGaW5pc2hlZCh1cmwpOworICB9Cit9OworCitUZXN0SGFybmVzcy5wcm90b3R5cGUuZ2V0
VGVzdCA9IGZ1bmN0aW9uKHVybCkgeworICB2YXIgdGVzdCA9IHRoaXMucnVubmluZ1Rlc3RzW0Zp
bHRlclVSTCh1cmwpXTsKKyAgaWYgKCF0ZXN0KSB7CisgICAgdGhyb3coInVua25vd24gdGVzdDoi
ICsgdXJsKTsKKyAgfQorICByZXR1cm4gdGVzdDsKK307CisKK1Rlc3RIYXJuZXNzLnByb3RvdHlw
ZS5yZXBvcnRSZXN1bHRzID0gZnVuY3Rpb24odXJsLCBzdWNjZXNzLCBtc2csIHNraXBwZWQpIHsK
KyAgdXJsID0gRmlsdGVyVVJMKHVybCk7CisgIHZhciB0ZXN0ID0gdGhpcy5nZXRUZXN0KHVybCk7
CisgIHRoaXMuY2xlYXJUaW1lb3V0KHRlc3QpOworICBsb2coKHN1Y2Nlc3MgPyAiUEFTUyIgOiAi
RkFJTCIpICsgIjogIiArIG1zZyk7CisgIHRoaXMucmVwb3J0RnVuYyhUZXN0SGFybmVzcy5yZXBv
cnRUeXBlLlRFU1RfUkVTVUxULCB1cmwsIG1zZywgc3VjY2Vzcywgc2tpcHBlZCk7CisgIC8vIEZv
ciBlYWNoIHJlc3VsdCB3ZSBnZXQsIHJlc2V0IHRoZSB0aW1lb3V0CisgIHRoaXMuc2V0VGltZW91
dCh0ZXN0KTsKK307CisKK1Rlc3RIYXJuZXNzLnByb3RvdHlwZS5kZXF1ZVRlc3QgPSBmdW5jdGlv
bih0ZXN0KSB7CisgIHRoaXMuY2xlYXJUaW1lb3V0KHRlc3QpOworICB0aGlzLmlkbGVJRnJhbWVz
LnB1c2godGVzdC5pZnJhbWUpOworICBkZWxldGUgdGhpcy5ydW5uaW5nVGVzdHNbdGVzdC50ZXN0
RmlsZS51cmxdOworICAtLXRoaXMubnVtVGVzdHNSZW1haW5pbmc7Cit9CisKK1Rlc3RIYXJuZXNz
LnByb3RvdHlwZS5ub3RpZnlGaW5pc2hlZCA9IGZ1bmN0aW9uKHVybCkgeworICB1cmwgPSBGaWx0
ZXJVUkwodXJsKTsKKyAgdmFyIHRlc3QgPSB0aGlzLmdldFRlc3QodXJsKTsKKyAgbG9nKHVybCAr
ICI6IGZpbmlzaGVkIik7CisgIHRoaXMuZGVxdWVUZXN0KHRlc3QpOworICB0aGlzLnJlcG9ydEZ1
bmMoVGVzdEhhcm5lc3MucmVwb3J0VHlwZS5GSU5JU0hfUEFHRSwgdXJsLCB1cmwsIHRydWUpOwor
ICB0aGlzLnN0YXJ0TmV4dFRlc3QoKTsKK307CisKK1Rlc3RIYXJuZXNzLnByb3RvdHlwZS50aW1l
b3V0ID0gZnVuY3Rpb24odGVzdCkgeworICB0aGlzLmRlcXVlVGVzdCh0ZXN0KTsKKyAgdmFyIHVy
bCA9IHRlc3QudGVzdEZpbGUudXJsOworICBsb2codXJsICsgIjogdGltZW91dCIpOworICB0aGlz
LnJlcG9ydEZ1bmMoVGVzdEhhcm5lc3MucmVwb3J0VHlwZS5GSU5JU0hfUEFHRSwgdXJsLCB1cmws
IHVuZGVmaW5lZCk7CisgIHRoaXMuc3RhcnROZXh0VGVzdCgpOworfTsKKworVGVzdEhhcm5lc3Mu
cHJvdG90eXBlLnNldFRpbWVvdXREZWxheSA9IGZ1bmN0aW9uKHgpIHsKKyAgdGhpcy50aW1lb3V0
RGVsYXkgPSB4OworfTsKKworcmV0dXJuIHsKKyAgICAnVGVzdEhhcm5lc3MnOiBUZXN0SGFybmVz
cywKKyAgICAnZ2V0TWFqb3JWZXJzaW9uJzogZ2V0TWFqb3JWZXJzaW9uLAorICAgICdnZXRVUkxX
aXRoT3B0aW9ucyc6IGdldFVSTFdpdGhPcHRpb25zCisgIH07CisKK30oKTsKKworCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3dl
YmdsLXRlc3QtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzCmluZGV4IGNhNjA1ZGZiNjAxYWFkODY3MGYy
Mzk4N2U3NDNiZjI3YmFkZGM2OTguLjAzOTI4MzhmYjg5MzdjN2QxMTdlOGViMmM3YTE4NjI1ZmVj
N2RmY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvd2ViZ2wtdGVzdC11dGlscy5qcwpAQCAtMTI4Myw3
ICsxMjgzLDcgQEAgdmFyIGNoZWNrQ2FudmFzUmVjdENvbG9yID0gZnVuY3Rpb24oZ2wsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGNvbG9yLCBvcHRfZXJyb3JSYW4KICAgICAgICAgICB3YXMgKz0gIiwi
ICsgYnVmW29mZnNldCArIGpdOwogICAgICAgICB9CiAgICAgICAgIGRpZmZlcmVudEZuKCdhdCAo
JyArICh4ICsgKGkgJSB3aWR0aCkpICsgJywgJyArICh5ICsgTWF0aC5mbG9vcihpIC8gd2lkdGgp
KSArCi0gICAgICAgICAgICAgICAgICAgICcpIGV4cGVjdGVkOiAnICsgY29sb3IgKyAnIHdhcyAn
ICsgd2FzKTsKKyAgICAgICAgICAgICAgICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBjb2xvciArICcg
d2FzICcgKyB3YXMsIGJ1Zik7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICB9CkBAIC0x
NzUxLDEzICsxNzUxLDIzIEBAIHZhciBmcmFtZWJ1ZmZlclN0YXR1c1Nob3VsZEJlID0gZnVuY3Rp
b24oZ2wsIHRhcmdldCwgZ2xTdGF0dXNlcywgb3B0X21zZykgewogICAgIHJldHVybiBnbEVudW1U
b1N0cmluZyhnbCwgc3RhdHVzKTsKICAgfSkuam9pbignIG9yICcpOwogICBpZiAobmR4IDwgMCkg
ewotICAgIHZhciBtc2cgPSAiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBleHBlY3RlZCIgKyAoKGds
U3RhdHVzZXMubGVuZ3RoID4gMSkgPyAiIG9uZSBvZjogIiA6ICI6ICIpOwotICAgIHRlc3RGYWls
ZWQobXNnICsgZXhwZWN0ZWQgKyAgIi4gV2FzICIgKyBnbEVudW1Ub1N0cmluZyhnbCwgc3RhdHVz
KSArICIgOiAiICsgb3B0X21zZyk7Ci0gIH0gZWxzZSB7Ci0gICAgdmFyIG1zZyA9ICJjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzIHdhcyAiICsgKChnbFN0YXR1c2VzLmxlbmd0aCA+IDEpID8gIm9uZSBv
ZjogIiA6ICJleHBlY3RlZCB2YWx1ZTogIik7Ci0gICAgdGVzdFBhc3NlZChtc2cgKyBleHBlY3Rl
ZCArICIgOiAiICsgb3B0X21zZyk7CisgICAgbGV0IG1zZyA9ICJjaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzIGV4cGVjdGVkIiArICgoZ2xTdGF0dXNlcy5sZW5ndGggPiAxKSA/ICIgb25lIG9mOiAiIDog
IjogIikgKworICAgICAgZXhwZWN0ZWQgKyAgIi4gV2FzICIgKyBnbEVudW1Ub1N0cmluZyhnbCwg
c3RhdHVzKTsKKyAgICBpZiAob3B0X21zZykgeworICAgICAgbXNnICs9ICI6ICIgKyBvcHRfbXNn
OworICAgIH0KKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cisg
IGxldCBtc2cgPSBgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyB3YXMgJHtnbEVudW1Ub1N0cmluZyhn
bCwgc3RhdHVzKX1gOworICBpZiAoZ2xTdGF0dXNlcy5sZW5ndGggPiAxKSB7CisgICAgbXNnICs9
IGAsIG9uZSBvZjogJHtleHBlY3RlZH1gOworICB9CisgIGlmIChvcHRfbXNnKSB7CisgICAgbXNn
ICs9ICI6ICIgKyBvcHRfbXNnOwogICB9Ci0gIHJldHVybiBzdGF0dXM7CisgIHRlc3RQYXNzZWQo
bXNnKTsKKyAgcmV0dXJuIFtzdGF0dXNdOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy8xLWNoYW5uZWwu
anBnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3Vy
Y2VzLzEtY2hhbm5lbC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIxNmY0MmFiYzNmY2I5NDY0ODlmMTNiZGMw
MzYzMGNlNTA3NzZlNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTY3OTkKemNtZUdAY1UpN35f
Y3ZAMktAYFBOTm57ajNfN2JUV203emk3VjV6OUpBcWc+KGZrX2FzKW1XPndZOEFtej5uSyo3CnpT
Z3xlfil1ejttTktyciN3SkhqdHhEYXJGQUA2dFlkcjFoRWUlc0cpe1BwdWUtbjtrUWJJKDJObzsl
KlYjMHtkUgp6YDwjZSRWRz1AWUhnWlBAU3MtJi1GSnVmVTh2RyZKMEF4ejA1bFc7RClUaWd0aEc9
biYwTEtAPjlXbWYxcXhxMygKeko0azBRN2F8alEwdXs2dWVpZ2A0eSUtX2FwMVM4fm8tfm9xbV4/
P1Nram0jc1F5NV99TDV2fTY0cCU2XzA1fDA0Cno7fk5tLTt9X3grJG5mekEhVDxoMTF7clVzUUVk
fGhMZmVnV1pQM3RtPEJseyZndipSKHRtVl9wUCFeaEZoYiVPQQp6THNeVnlkSyFMNGRmSnY9Nmdl
fndvPig2OE4hJWN3QXVDZGYqPG94JUJjM0JgR0tZQUpGJj1SWEVrI3hxNzhjenMKenRoI2x4dmg4
bCEtTHtYN202YzdPZSFZQTU+RHt9WnRyZEFgQTVgWjNKRlEzZT9tZXR+XnQ4Nl9YPWlQMVpISTV4
CnpjMnBKSGU/eCV5NGNTX3Q/VnVmK0JRbW4zOFFhb2BLUzQtSzt2OV8kVCQ8OXozbUM/aUZgXmxu
bjN8YmViaEdSWgp6NCQhJWZoSyE3TGcqXzM/Z2wyNEhWcXxKPVc/XmI8PHF3Nm4jd0xTJWBJP1RO
IXMrY2U/QEs+M3lSMDclamQ2MUIKejZKNDAtQTBTKERFekh+e0pFcFBiQzA4RVVjZ053Y0pgUF9P
JVp2Q3VSfW99aTdJJlpEYlkkdC1eMyheLWsqQDFeCnpFPDN2NlR0I2ltdTRDdH4qUyg1UW4qYTYy
LTMxcGFBSEUob2NCJnc0YEZER2NVI3pOc1Z+ZFE4ZkxqeGlDdiE4Pwp6SyQzO1F6UChJPGdMI2c8
UDVyKml2Y250e01xZ3w2Y1RUTDRFeSlneD5CRSU9eW1UP2M0NDhpJF88ST5KayEjUDMKemh6bkJp
QDlTQ2tkayRQWFNSaWc5RGBUPXZUZnteYSNyYip1LWE5cjE8O158ekdgfDI8OXk+NUV4ITs5aEgh
dHwrCnpkQ0YkNz8kKFZeeT93YFF4Y3ptTl5YfXJBRTM0Y08kY0UwJC1yQD1Pe2VoUU8lYzRaYjtH
U1JRNytCPT9HdSR1Iwp6R1Y+Y2lKdjtMb09BN2VPJS14bjI/cVhUZ005Wn45NygweHp2eks3TlhG
R1JwLSlIby08eXRwNDtfNUZJK2NZdTcKejFqOzwzSWRGK0JvNWo5Y0g9Kj9ISjd2U3xyOWtUelA9
c2R2JCE1MGA9JS1rfUN2KjRQXyZaUEc/cHRgWXZTaXVRCnpQc0dXZ0d4OXpeR3dqe1NCP1ZPOzl1
OUo0cWhfe2RwKTUqcXVgPGMjLUlXSVY+cHkzfEU4OUt0WGd1P1V8NmIqLQp6Uk9PNFBvIUw8ZV5V
NzFwK3Z7R0AtJGA9WEE0ayg/PzQhVD11MHJ8amw9OThLcUBDSEBybzgoN085RXZxOUl2XiMKemhk
Pkx+RlJ2UUdHMDFObSEqWipwJnBJQD15KUtwY1pmO0l7TGsjXj5VdU0oKGVGVkF7T1EwOWdYSVU8
dm9QQVErCnprM2dzTWZyMj1PS3hnSyUrdWtocWVLJDBaXmBIZUtDRGQyISpVVkcoJT5KUXkqRERY
bnpWZXJDWVg7QkRiejVAegp6JkZYeW09Nyp0JlV3ck9SPCpUVm4+R1F8SkZ5YHcpV3k8QHIyJFVu
OWgxfWVIKyZ8azYzWE1feypLJVVoVEJySkoKek0mNH5aSn4qKGJFbXc4PHIwUSlWPFFUX18rPlRa
YDk9cDZCNDJibzRzRkM/aHBtRGZOcHdqI1Z2OD96cGZ5UjBoCnokY0NAMWh3P0koYk4yZXxERW5J
T2dRKlIqKHszaU97cXUjN2JLfjdZN2teZXZgO2x0fGRNPjhkP3xMVzVDRDg0Zwp6JXUqS24reT5e
WVBgYypmSE8rJEExcSt6JUNBc1JCXnx6eEJ3cTgoPSQ8XmFVM2xiakhKYVl+QyMkP2ZnczA5U3QK
enlJZ2EmWklYSnRzYCoqKjdreF9HUzs8ZUBjOWtWR0NjR0g2RFdxVE8jeHUqYE9efDxqSmZVe3xy
YW5IQ01+OW9iCnpGb2Btb3hVfCs4IXc2KEdnRnh9TWVOUXN1KF5fWUQ8Y0dUaVpMVzwhOEpDO3wp
b3Z6bHUtPysqcilxcFk2QDIwNwp6TWZXclF0dn1fY2hpP0dvU3dATD5YMHpPKWV4MzRkez5ISkEr
e3srYl8mJWMyJEFkcio2TjNxcVU5dFl2PlNMTkEKekBOKytzbVFGdXVgXiN5WSt1MiojVUJFbmJ1
ck5SWVRab3FUO3gpdDsjQCghcUpuNzxeeXVOVWhzY2stTTU+Wn4tCnpAQ1NqMCkrPWpQZm9tX1dh
eTg1QEF1UihQWSZHZldZPykxek0mTHZzWWFXNT5mOFVuUkU+cV4tQ0Q3TVIlSHxyLQp6Y3M5JCQm
MDQpYyl+XztRa1g4RGpXb3pVZ1JUYSFYdm9TdjViLVF6VGNGZ1JqMFItOXc3UVY1Y0tyTU83THNL
PGQKemg3dV84QWM0eUVLNmMobz1MKmBzUF8/Z0E1aCFaVUoxMXAlOWY2KkxTR0MzVWNWN1FaViFe
MClrK1VgRFluNn1WCnp0fWRNUj55cmhaVVoqWjV5dU90K1pRJlpQZEUmR2d2KUhNYlo8dWBYdHJ5
Ynt3MXdTMkhabWAjWCgrU3QhZmVnJAp6bmMzU2FQdWt7RjtzKl89Xk8teVZEfXFUPm9OSVZhQVA8
NEVXKCZ4XzFtcmkhRjRvQ1Uxc0t0U29OPTFmWF98cFcKejtIMW1xeGZ8QjNadHJ6aDloZ1BoUFU7
TXtXOE0zcXhCSU80QHhEV0VLUC01OUlyI3s4Ulg2UyNfUzN1NWxnbmEwCnpQZDtycVc3ZlVOJWZ9
VG13P1U7dDszSlIyQlU/V0c7cXpNTVEjS2FWI3J4UERRX3VXSGNsTSkmIUVZfDxSSzw4Uwp6JE9q
eGRodGtjP28kVGJ9SiMyPUNINTlIe1ElSW9zZXlaMl4+dD9CQG98QFdUdCpjVVlfRn1IaHBpTVZR
c0Bke20KemhpQ0g3b3B+PDVHeE49djd4VXxmN3JDQTg2YyglOHBVSXFOWDZGI3NBRCVqXkRqclV0
d0BFTGNqfE5feiNrcEl6CnpsfFg5JHdEdVZyPUFVIzR4Pj1pYUdNNG5AVGlnd0lSPCZFfTxTJDl5
bT5IKHxOfSVadlQkZTYkODN0Vzt7alR3Twp6azk/U284bTh2a3Nje1ltVFlPWkZ1T1pFdnhVTTU/
aT1wWWZXMHkrRXV6Zig1MlNLNjg/Snkxdk42NF5VajY8IUsKenpzbE1XSiU4JUFiK2h0Z28+K3RS
PklxYntNYiZWN0tOKGI8MHgjIWtnVVljfV9BVGE2eFFhanhsfTtaT3czKH1hCnpjJWstSHdrSmQ+
ZFNVKjtlJWZAPDJCSGo/S3pGYWQlQmR2S19oKkBKS0JxVUc+RCswdjY2KWdlQmEqWFkjUUVYTAp6
OHskdikmdTZoV3A2cnQhbWpGSDZCPyNaK2xkfWZZdHx0JnRSa05VMnIkcUpKVEM8Ym1mQkhwekVD
PjNEMVQ/Yi0KemR+cDNPKDRkfitqNndFJEtieHxvO2pySl8tR3ZMITllVUEyVlA4RDRZRWVeUmFA
T1hTXih9WGdvdG81TWEqO3NDCnoyZXY8NlJRWl9zVypBKl9kdjUoXjA9LSVxdWN+P0R5aHJ9fUlF
ejNoUFl+JCFnRSs3SytyQz0mc3BxdW5LQz1iNAp6aFJuWndgPWUoRT90SSNRS3dYKHZxQ0VSTmY/
RWJzTD9teUJKbFRIQGlAbSE7aWpGNyt7MCN2OUIwKnEyTXZWc34KejJvX2hIZT85ITdzWnkhd3t8
a1hlaEU3ZStTXiR3KHVsfklFKXZxNiMqJF9ZUzB4dW5xTVR4UGNfbVZhKUZid3wmCnpMMXJqKzJh
Smo8UTBAU3pmaU9+aFRqamltczN4QkU/JHQ1Wl80bzJZIURDbyM2Qmx5WSlzd3MlK3ttJko0NEA1
JAp6OCFwSDVQSzNJciRZNmR2RE9IaEBzKD50Pm9USkhkTU5GYnBEazNwaDUoUz94TmZxTSlvV3s+
RWtxcVo7JGh0QVkKemJjYGBac0s5a19GLTRPdm81JklLVjxWPTswKkg+bmtyWilKRGhmazxCdFol
IWdRcThBcD9KZ3FtPj5LTkxxM29tCnpmKVhKZTBfakEhYD1LREBoR31YV249RiRgbFZiUmEpUmFr
eWJHWlB2TFgmfSU2I2tOK2F0c2h2S3FEeis3MFZQbwp6SHNuY1ojKXVSV3R1JDdOc1h+IUxDP1FF
Z2N7ZFV9ajZIb2tyTzhoKTRJQHZ1YiFlLVhmd21eNEQxPWdwOUxudTYKelc+fF9zcUVpNFVDe2Q9
Kkw8ezY+ZUlgc00zRzJ2NjZkam9maTZYaGFXVEhTWlUhUkUoaV5CQzh1dDVqdUcyQ1E8CnpSdVFD
bDJ0fChfNjkoTWkxczk2dUYmSTIpWVRfdkFKKTktNHVgPGJEVX1IcG8jVHo1eiNsfWUja3h0UGY+
PSppTAp6akVLa1IzTFkmTkRNPExfYmtWNDJKLVgkNUszNUA/Zz53YGZFQ0k+bldXaSopJlpCU3xC
Zn1IM2pWQUR1Q15HTGcKejh3PX5YdTl9VkVpWVdNRzhGJG9sT282PDVhJUl3I3NkTTtYVDx+dDhN
NChmakg3PHctcDJrUU8zYU1CbWw/YiN8Cnp0YUslcTFwe353OVh3aG5tfTZNYlR+YDNTPkc1JHRH
ayErI3BrM1kzYldnR21lb1U1R1lhNHxKYjF8YSl0cF5GaQp6RThLSnZ2JWZ5P0t2SGNjXldEZmgr
LVBKaVNwRE01UXJudldPeWFoWCZ8V0FJbzsydVl1eVEzS1JPdVRze1NpViQKem16VkopRWtgNjh0
aU8jJmUoOylITX5DOXJobENpemRYTEtFYn0kQ0VHRjhXZGdsUE1aKEleMUpQZk9oYXJed1lZCnpS
ZUohPThqcG49I1ZnS3xxKTRhZmhJfk58RX1EWmw1SSFXKCZ2Ql5ISXo1VDF5QldaNihqY3FGXyQk
UClpejcqQAp6MiRSTypuazduOEJ8UTBpSiZkZEhnKShkP2d4eWthZCZzfSVKN3xwRiRFWmY1Xik1
dV8mRXo1Pm1vSllPT345UmkKeil+T3YrdkpBa3o7QWMpfFNtNmUzbkcwbW4pUmF5akdwUzR7NWJF
UHdMPTJgcmlHJUAtOS1MSCNiU3opT212SXopCno5c3AybU12NS05VFQ7anZmPWdJcDBSdFpZKllY
PnUlMCRgJExUZVBQe0xUPXpUJWEzN0M+JTQ2TkQ8MnNiaSVVYwp6QH1WOS1VQlF4JWkpQnlIZyZH
U1R4RCNAPklhMWt6KElUTmhyenNtc187RVRnTk4mI0tDdmo1QShBUkF+VSM5MisKekp6Zlh5ak5V
eV81R0VCI1dkX1ElclJhfHR0MW9+bVhyZmV0Yj1eJU5PQFpOOCZOcXhMbUxkcDNlfVAmaGwwb1kp
CnpAYXx5WklxIyNCZVJjP0wyKnlab1hKI1hycnV2IzRuWl88YE95WGUtV0VsbEZ0bUV5fWs5SDV5
SlJrfFhSc0NUMQp6PkJIe1NodXhfVXlIZylfciN8ZFhlYn1BKXVzaWkoY2swOUwpUTg9dnp1bGM4
WE8pOXRAYHo5ens5dUkkSjIrQEcKejs9eDh1QX1ybip1eCZGMyhoQiY9JHk1cXBeIV43N3lpKmhk
SjNAR3hPMTQwKTZ3UnIzdFRhVF8qaV82PkN7allhCnp5KE14bDR0XmkoI2cmU14oPlc+THpGdDF3
WGFxQW9nfkx0ZUQ7U0E8U1NmYCV6VzdEdSRQbl5FOWo2QWVlYl5+cwp6ezVpc0wzdU9HNTFydVly
M3pFNlJkNStBSGoxbFB9PkVhWUlVJV9GZGkkeE43TlA0SXZOandENzgwX3VIQVc7O18KenBeb0dt
VGdFaUBXSlpgJiMlQmIyYEZuREdlMD49fkwwLU5BZms4cE85dD9POT9kUjxTfDNSTWNNbWpKayNC
VWZ3CnpkcFNhREdHMDxoYmE8cTtFeSNzQllLMk5tT1k9KGVfbWF2NC1vQz8hNTYzazh7NSUxfVE9
VERGYU1DPmBhd2k+eQp6YUs0LT82T3d5VzNgYE9CVXM0c0pqPSg3O2Y7ZEdfd282Xjw1UDRpWlVK
NU1OJGl7aEdaQCEyeD0xVVpFKDVvKk4KelVxX1Y5KX13YnhSeEgrSSVNfXN4ZnVzTHFGZ2FkRGN9
TWYqKG9gOWpBMkE8VmJrYTJAUzQ4dFdSTVRaK292UT03Cnp6SCpCMER9az10KkI2cytnSWkxcTM2
dD9UdSQyYEgrZ0xnKWNrSTh1X3BPMEo0TDxDQkBrMVQpI3xOSDFleDUhNwp6djN+dmB7PS04MmUy
NGwzISZlOXREalUzcjJiKk4/QXFVM2x6RXRSaEVhZUg0R1g0PmojfD1yNiVFVFBkdX41dHIKekBW
KTF6QEM5VVpZPDM3c0IzRSFFVHN8djIpRGZpZjUoO0BDS0VyfitRLT1sazREPDV8M2lrQzRfNmhi
Nmk7TV4hCno9SWlTaD8mbE1yc35heG1yZWZwaz5oZkAxITJVT05zcUZ9a3M3bzNffDNwSj9ta0BG
KCY2ZV4md1o0dnc0bWN8Owp6M15zST1nZCEqaW1ucy16SVlKM15JMllWNEt1KForb0tPeUMlK1Br
VTgyJnRNTitle0U5dlE7bjsqSCU8TT1teHYKenBYYUNyMyVrPFRLWE9jd09vT2UrfEw2bDBucH5R
c05hTSkocVhuU2RlfDlxT3p2Rzw4bWtIOzBhR3RgRSFBYHRfCnpGTyEyJVFWSEpBO1BWKHNHTzN1
c05sQWZDQWBUWVZkJWxGSGpoVDlORzg5c1ZmJCNpbmdLfn5SYjZxT3hBNj1fVQp6TWc3KFB8NjdY
RVQ5Ny0zQk42WisqbjJ4LU54WDRicjBubmd6SDNuVmE3dkduU1d7JVUzRiVVe2Y4aGlXZHFRfCEK
emIoPz0jbSloQztaKzA2anRscCN7YyQ7aGpDai0xZT5wbypSZih9Uk96JDA8K0UxWGNyTlcmZ1Ih
WjhzSCpYeGxZCno7QHdmYlEhfUtoNE1yckxfRjxVQU4mV2FiUWEyOE1jeikycDJNdjdDenl9Unso
Nyo9YHs2RXFfI3xvVjxmdGd3dwp6dGlPci0jQGtfOUtZTWNZcSk2NjsyeSEjUWM8dCEkRiVkQGFX
O3NRc2tkMktWSiQ+NXIxY3JHanlnTWQ4ZUwjckEKem04WG9KSmI0MGE3OWFgcnN0cVN+N2k+dHB1
QjJXTG13UkdieGBLY0NIMDQ2V2ZjcVEje0NLZHxoOWBkT0U9V19QCnowR3VgeChzcWYtV0V5WDYq
ZEBuQyF4cyo7clNLfXdOJiZNY2ZUMXZITihUQXZqKTlsKzN+SzhqQ1BTe15peyVXSwp6Z2UjUyRO
T2Y7KHdRYjtQSnEjQiU4MVRQJlZMZWp4SWBxPjQ+dThDYUR3fEtgQFpKdTVCZzI0Q2MxRlJyNGhK
ZFcKejRkUXc5bHg5eTByPWA7TigoVn1iSEh0UGBZam9BUHhBQW8yQUJ+QHkzXikxNDxmZl5ZPWB6
emhYMlo9a24hUHJrCnpZV3xDYnFzMjsjbVRzSkdTMW1fZDlfe1lkZVlAMkZzfGBKUl5+a3BGWk4x
VXZCYihmdzl6OVJrTSVZJkw7YGUmbgp6ZCRwYWotSStkOWA/VTFVdyllQkk9JEdFI3E1cCplKHQh
ZzlVaXhWTUFsRUBSOW9FcHA+MXhLWSFTZnV3OUdeS0kKemE4N1h2YUIyT3gmfkBkSUk1JFZQTSkl
KV9XXyQyR0wlZUxnOG9iWj5aMS1MMEhgNn5mZkY1V1pfJkRoNXUjPj8lCnpocCFEO15vZS1Icj1l
M3VNbGU0YTx2LWVFJSpTRGw7Zng0K0J4OWA4STlIWnVSS1dOVjZVTVMqQ1ZuPGFJJDFkLQp6RHwl
UFZzbn4wQWtFYT88YkNAMklGbHxRcSU8cEhOe2BCNXdXKnBETmM8eTR9UHlBfHUjaGhURmFQR0Zg
WWhyVD0KelE8fFB+YzswalFQe3JLVHkhbFZseSl6VUdQSkthSjdgMTRGdmdTKiNDMH40MXZkclBA
ZENTa1E3YFJmbHMoN2BfCnpubENmfCVvPnJzV25LRyoqJkVNcDh1RVNTPH5MaEUrZzYtMloyUFZx
Y0RjKVR6VFBkfGI3eDt7VWh6LWkyWXgqYAp6e081d2gwWXtEPTNuKH4jQklLbSVteCQ5UHpzOVRY
Nl5lZHVKLTdVVntsJmRTcElyWHEzYiYtS0gyZDFudmh4KzMKej56YjtxKWd4fkhkMFRuTT5GJVco
JCVEU05zKXhjeWM4PzM2TlQxUTRVdXw1ezZ4aUpHWVd0aDF0diVaPXRDd2o7CnohJCV8P0NseUdT
ZlJoU2ckanJwViNNSCNoKVlQbi04VGA2aW4zLTkweDNhWUNaZlItTih+NypiND1WSGk5UyQwRgp6
eDQ/JStYZiNfeTl4LTRMPVRJM21VfllLQTBHWEg/OD0yNyVkQm1WNkdOS3ZkUXZfel8jJjkhfCh+
T0w1T15fKVoKekJOI28hdFR6WGE1IW1APHtiPTVZYGlqNUN6aShvcnZ1dyNybSN+MUM+Plk9Pl40
fGwpVUR4RnYzOV5zbkRiQU1OCnp4QV4kMFprR019RkledUl4JHxnemRFQWZ6TyVJeSFOZGtXQXZK
S1F9ZzE8UlQ1SWs8JG9iKyF0P0xCZW4jLXExeAp6ISYlZFg4N3NjdWNlMUdaYWpTYnNSS25aXkQ+
dnR6eF9xO3Q0Wml4ZnBnfFg2cU1jdk5xVDchPnBZPkFsI3FeRnUKei0/OFZmejJwR3w1P0w/Zk1B
SypWaTlhOEFoJWJ1Nmk5VXpvTHtuemk7WTVUZUokUVI/cW54LXA4c2xFO09vay1QCnpnQkQwS20+
JCZMMEpZPDBedV9jcjhJb1FFTiQ9dVVEfilyQVlldCE/YV8/VnlkdXBVdDx8P1FBa0tQe2NOTyh8
MQp6aGV0eGY+My1nZyF2KmRLUl87JXtkP09EaGg5PjZTKmlrUzlDc3k3N3AzMit9SUt1TGZqT1lg
VCV2I3A7OUJEPDMKejAzTmp4UE1OX1olQUZ9NFgoP2MzNE52KyR1ZUVCezU7a2lAcTAzVFBpVGcj
Tm92b2leP2dySE5xY3Z3PXxOUG5WCnpRWVgja0JLWGREZkt8JCprdjQ2fjBzYCV2IWB3YTFWRytI
aF4wdS1wZkx7TDV6LUZXQHBFWnZfPEV8PHY5UCluSAp6bFImJEZlVzF6T3VLN011ZDFXKyMqdmxA
cUpIZ2xPNlZmVkd6UlROIz9DQ0E1clJ7I19VcHlRSXMyMmNMNEEwcUIKejFvREhAc3F+Z3Ioc3Rq
byhkdUcpT0V0OU5zY0k9NnU7PHwlITE8JElpfkNyNTxzfWZfUm9kPSZPRjJQUiZmTSZ6CnoqKWsp
aUV1dyV4bzlFciNPYHJmRWIpNEM8M1A9YWtYfHx+PT1xPE5xIWwmWSUkSk9RRVgmQ0JDJGx1b0h2
emYmPAp6cCY3NTN6REopS0NzZmBfYDEhaXtgTHE/PVNBTStXUyRSYyM8aFJDV2c0Zj0pVVNOdlY4
M3p1N0oqU2tZU2QqKFcKenQ8S242aSFVamcqNmRMVzs5Sl50MmVMbl5LOVc/akJ9aGEpeC18e25R
X3RNVWRebTcybCR3VzxjMyVtMCRMMUNnCnoqUj9Kfkl0Yi01VGs5eylDZHVWIUNLaW03OF8qS25Q
LVRAY2hrdFIxS3Q0QkB0MmRSaHU7LUFaXzl3MmFDTXYoXwp6PGFWZFArdSVjTmlkcXMkJjUkJEVq
cE55P25acmx1c1lNeihXSG5LPiUhJX03dD95I0RVT1NzWHB2JU1RPmFNOG0KelM9V09aZUVKQ1Ix
fnpUdGhUMGk9eFBaOTIxZH11OTZGeyE/dWpHMiZhQH5AZTxKKnZzbG9gNiFSYH5MXytDUUNfCno9
MWdiWiohNmopUmlGYilVQllibnhsRFBfUmtQYDM/ZCZUTDJzRDA+bGc4Kmw4fjVUYHJHSUk9aGEm
VEJfc3F2QAp6PS07VX1uYDxeRUZ4OTNQVFB8aTY9YWolOWd6PXRxNV9OZ3EhSDNfJnhxPUB1Mn1H
T00/KSN3V1ZsJFlodFRkODkKemklKTFhKXdJck4lfkwpVzx8PTshQDBwT0ktbHdpKXdqOH50eTYy
XlF4UnUlRFN+dkNrbWVPR2Z0KmZxdHRscypKCnpWfDZXfGtlNitGXnEha1E9eW9rYkptSlkpdlMr
V04+O3MyZD5pMHJpQVVuUzxGNFJ1Q0x+bUxScEo/fnJMJU5Megp6X0xtaSEqXyQoLVR2NUdUUW1r
PlRGM1p5T3tsRCs+cjl8MDc5Wjl7cFk2VkA7eyE7ejV1PlBRKkA8TW0hK2Z7PEcKelJIVzJ+STI7
JUw4Yy1tN0pSQVpoKHxRMTl5SUxpdGVPfU1eMithNTUpODdUbSVYbn1fPzZmcWQkRU4pflAxQkZC
CnpRSjdTQ3okZnoxVisjK3lJPV5sKmMqZSRXMnowTmk/UzllVD5CezE4V24qJnRKVmt7X1JreT9Z
WkpfNEY7a2lNfgp6cmZjQDwwUik7a0ojWishUmsldmlMeihaZmRCYndgUUUxUmlSbj9hcmI/KWxJ
QnpGU2t0RSRXP2h3e2tPTjc1WGsKenFIWWV3RngzKzw9UVpBTkNQYlkoTVJgRjtweFAoQU94IWcm
Nk13OW08bFNKO1BSJlI8R0JjUkEpOHBSUzliZiV1Cnp5eFNaK3FJSkNIMEtgOTJTTX5LUllWJGhw
dyZTajl5UFcyRFgoTjMtOTJ2LUlqOD5MUlNOKm1xbm4zJHklMGQ9Xwp6MCthcV93UHs7NTVseCM1
b3hGWm55dio0bElAUCNjXm58fGRPYDFKQFcxSFJhVUlCKn1TWiUjc0BwOEBCQElLN1QKemRIZEpC
SDxwelcqSzdDYzFqSXVQY0J2WGM3WG9VLU1xKFFDI1J5Znl1IWZATHdaJDxfPHpXUStIZDxMIVVz
T2hVCno8MFQ7R2VxYT91cVJJITRJdFd2eXpVTioxcUJTeFJzKHxmXkR2S1BuRiUzVj9KeStoelAq
ekI8WE98WFQqaSU+Vgp6SFNfKkhXXkhycnBWVk5pPHZaPk9RVDQkNmhJWlY7amdoYFl8TCQobndg
YWtIVX1TLWFOeEcwV1Z5PU1qZTdYcnYKelJvJmgxNDI5MW82fGU1OEpUSnA2OCNwMnN5UG1qdTl8
dXlMQ0w7P0ApR2VCPXl6Rm5JPUhxYjNeMmJgUllqOCt6CnooJlEqQWtBSnRTJEx9Yj9GTXBoc2R4
JWxVWFVkb0xWOXh0RmplZzNLO2lgKjJVfntmaXtzeHYwY3R7fEpqUGFVJAp6SHYkPkVzPmA+aUdy
JFdAPmBgMGdHKjZXTj51TWBYPmtxbWU/ZDlISiFIUHg/VCUoIVN8NSh1KVdBJk9xLT9lJGYKejxj
QFhTUUJ0X2YjeSlFc258VjNEJDJ2UXo2WTNAfnJOcChHMX1jbm4kYWkxJG92UF91dXdzQWtJOGZh
TC0yMFhlCnphRjVpP3VMfDRDZDMxQXQmKSRRXjUzLUxRS1NyUTBfTlhtMW4tMCZvTnVYYzMxcDFP
KlphK1NHKHdpJkZNeUl5Swp6QkMkfk9IZEFBJi0waWlvUXV6WStPblpQUDNvdysxcCNAeilkKzRU
STxmSTgoODRrMTZmUTZ8RWpuPXxXX2YqQXEKelRPJFchJnJ5UW9lMmhLamxJQn1ze2xZWWo1M3FD
Mkl0cXQwZ0lQKUV4ZzBnK0RKOUQ5a3J1YHkyfjMoT1pfbGkmCnpTTU8qZigxcXpMPSp7YkpafDJG
ejJRKEwpQnYzIUdeMWl0PGM0VX0/PCZ5RVI+JmFMPlFQSkZISTArK3ROWk9ofgp6cGRxS31GRT5o
Q0wjbXowUU1gWTckJXRuTXB0KnN3LStveSVLc1RvJnlQa2UzVUAtMXBZOSsyV21yPG5rNlRNNHMK
ekdkaHVXQXhaWj02NDBDdmNBfmhwcHQjMVF7KkhKKFFRMXQrN19tQ1FeR1VyX0pGNE1tJkg0bkp3
PylJJFRTZUlxCnpHM156PDNGfkpHR2A8Tn4qQTUya3tUPVpmcU47ZiVvfEk2ZWFaRV9ldDlJPnpe
enQ5flkpajJ+ZG1pUmtKPHNrMAp6ND1eK3hIQXl2dVdIck1YcHQ7b1M3QmZ2dmU1Kll1JTZCej5Z
eSFDc2JVcTF3eWsrcHRAO14zVFI0MmxHP2ktRmEKelhsUll1ckNNNXZZdDNVWU1MY29WRFc9KzZl
UCoqPShgbjErZEIzeXJ4Ki1Da1MzOT9yc05USXwtdXFobSg9N3QyCnpWbCk7Pnt7cTdFdCZNTnFu
MTRDVVpSTT9iQypKaiZxbnBKV2BxWDx+clg8Um0tM3ZsPiVMOClWNXFIUkdfdjBxdAp6dn1OTjU3
MlJIeHlKbld0MW1eUUUteURCK2VyaU5ucnV5XkRHcGhVe3J5U05RQU47eEt3ZFRaKk08S3AmaD94
S0cKelJAP3BrYjxjWEEkIW1Zc0p9O3VfO1c5V2wxO140JT9wOWZlSlZaWmJXbW1lYW4wOT8lTVVF
YDNQX0hLS3NMK1dtCnolQWV8cUBAN2pnTTViOyZPUmtMITdCJWBnMEdYaVRrZkE5JWpONDM5Ryg4
SCZZbkp+cEYmTlVDdF9DO0cheEwtPQp6PzB6ZEBFa3JzPWhsXnt3ekFubVIqKlotbXdPdzZGUjVx
T2VRdWtuNyp6cCR8PXZSYUtGJT42QmA4dXR6RnI9Qk4KRnt4M29vd29kPjYKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy8zeDMucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzLzN4My5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNmMWU3
NDQ3YTNhOWFjYTQwYTgwMzgzYjc1NTAwMTc4OTk0MWU2ZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMjgwNgp6Y21WPFMzSkxYelApPGg7M0t8TGswMDBlMU5KTFRxMDAwOTMwMDA5QjBzc0kyKi05
ZWwwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWVBpYUYjUCo3LVpiWj5LTFoqVSs8THFp
fk5hJkttN1ktSW9kYy1veSlYSC0rXjdDcmFnCnpeZz5JQmZSc3liUVdYZHdRYkxQPjZwPHo+QXFm
eWxoI3tmYjY7Wih2TU1WU34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6PFJQTXRnUUpMdyVLUERhcWlm
Y0BfdlgkMXdid3I5dG47MC0mai1LPTQzPGJVUThqPUpzWGB0UjtEZzcrI15LfkgKekshRk0qWn56
YnB2dCVLMntVWlNZXzxsUypEPFolTHo1b0d1KCtkYXl6KWhSTEZkVD5mNTkmZ2hUbWdXRDBsOypU
CnpJNzxrQzZhWVlhanpYcFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7WkBDMEFNRzc9RjxSeG8lb3Ix
MFJVVCtBciUzagp6a3BMaFFXciMhb1hnZElgJnNLXj4wOVlecDZsUDFySVJNeCMwNUN+Y1c9SF9B
dypiSi01RFQmWjJuK3gpUUhYXnAKejAwZXNnVjh8bVFjbVJaJTAyRF5AUzNMMTZ0YE8lYzAwNE5J
dk9LdllJWW9oNjJyWTMzUzY0MGBEOSVZMkQtPD9pCnowJTRqIUYyWkA0ODhVJTE1OCg2NjAwNXdv
NiVwV3JeWmpfdjR6QUE1SGpjSXFVb0dtdDJMQj5yViZuZWgmI1ExaQp6MDA3fjFlJG9DY0ZTOG5l
SXxoSmx7LVAhQjFaWjlocG1xMClYMGlgSndFJj4kK0U/PiVfPGxTKk1XSytuKzFjZ2YKejxrKDhZ
TFIoP1ZTQUc2eCFlNzh3e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0VyYiFwIXRjcjV3K2EzNH4oWT04
czRHCnp3K3NMTDluJkpqTm4qS0pEaXFeVTVeO2AxbnZDLUByNlAkIWt9MVV7KCpJPVEtekB0QktI
b0l9dXhkVTVkeXlAdQp6VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZfazJtXnA8Z1c9RDJ8TDtIak4x
IUREZk0hWE9hUjJ+Ykw/a1gkJUNrU20KejJtazs/cG4pb3xLXnllSjclYWRCOUtpK0whMytGZ0hp
U1lYI0tKLWxMSkRNbjlDQmJPdGIjJSloUnZgWURxdF92CnpLcGl4fFFEfXlmYTFKaVFSayNqNGEx
WiluMiVmPHh5bnpWPkxDNlJiVklrVXgwYitfK0JhUjNjblQ3WnYhQUp4Vwp6aXpGYiloIWp5R09P
Wjg1RjthP0RBWFB7bUA7ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhsITNCUUo9NkBmTCVGQ28Kejhp
WW9vMygjYkFGYEFEU3BxdFFndj5IOChIbGdSeHQ3czN9azNLYGtGdT4+LTJRJFFNRmZQVyFMYXto
MzM2bz5YCnp1X0NNdHRIdjZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhIVXhKPEFZbVJzTkxXbCpQU3tB
T0FSSHQjNSF3a2kyP0s7dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBoZ2U3fkJpMGcrNkU2XlpoKHA5
VEJvY3szR0FGcl4wIWd1P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9CYV9NNldOV2VxSWd+NlFFNjlj
OW8jZXloR3ZwaU9BQFctYW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8dXY2Nld0Y0tTUmltMHgtS2Uy
ZDVqQnJtTGFteztRbTt7bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZYYDJfaTMtXwp6Ymg7N1VsXiN4
KSZ7eHZTPXx8fDc9bVllMzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05uampPcnt5cml5Nm1NRmdHI2wK
em5DRj1mblF2OENEeisrbzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8IyNScjZLTFJGQTElUSs9KlJS
V25vTHNSYDdVCnp0NXZGPFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwmZmJpM1ZCMk92NnRAcSowKTtV
Km8qU0FQWnZ8dnZAMmFZWW5UMAp6YiU4YStDYjctZ2UwRDBrbkVmNVFpI0A4VHAqY2V7Tjs2bHBR
dUNCJUtMX0tPYXJtNWNQNl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpofnNGPWJxOXMrTzBRU2dTfkBR
TDlKbXkqOTR4cj02eX5NWX4hMWZldH4oTisoPD1NYHdARDEpYitwCnoqO0MhODNhMXVMSnYjTlNF
fjt5Izg9PD5JY2ZXM0A/d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+e2NaWkVeK3lhPwp6MkQxeiMy
SE9uSTcoQiVfYWM/e3dGVVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/SmZxYntqWWJjUVh+dGFSQjsj
JHkKelpOe1N9MXx9Z1VPSEp4Yz93VjNmeHV6K21KNGAhRiRJWjttcVJyTnNISmQjIypEfmp1PWJQ
Nz8tP3Z+fGN2PnZCCnpzSjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4UmEjeE1NeTtLI0NEeXlHeVFk
TVN4bFdUI3REZT9wIT81d1QkK29HdAp6OEw7S3AySFVRLVpNSj0zWEpRdjt4NWNpKj92dVRmZVkk
Oyh7WEdXX2h1SUZSOWE8ZkpiRl58NEkjeFF+biREYz0KektZaGpZbWd6NU5Ta0RtOCpmWm17NlUh
O1lYYE5HPig/QDMpWFNzOE9eTjVSeU9NPVRUbXAoMz04Xit6cHoycilDCnpePkpPe2RlWmZzbzNv
cTM/V28oWT9sJGdlP3VYbzslcnVgVm8+Pzw8KDhJXz47OEVxI0tNUzlnRmwqbmVlb3NTQgp6Zm9I
WW5CUUlrd2t5b3dQdSh6ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dUdkVWJXMwVGQkaFhUKyEqOEJu
aDJLTWUKekJtWlJvZGpIVj9yK181Xlg5SjBXTDRqS1dgfWxmJUEtfDQ0SUBATFR2ZjFySGpHKHpl
Nit3QEp0JUJ2anRzIVgwCno/MnhTP192ZV8tazxNdWpnOzBMeiozYnVHPTMkRyZlaGVwdGhsTiok
S2FPeVNTUV5uV21vPDBNKyhVRVVNRVhSUQp6TUJiWmNGOzYrS0VsTT5pS0JfS2lKbFokOUdgY149
RUBvTkcpbVdXYU5vLTNUSVc4KSRIZzBVYi1+OD9LaHZKPiQKejMqJm5pbUBtaihhQ3hFNSF0e2x3
N081XjBFSU83ek9vJmM2bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNoQUF9YFQ0CnooVExiWFRxKyg7
QDw9TDhkWG5zc3lmdHx3I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZBcWJ8N3NzSnZ6TkhnT1pWdQp6
YVlDdmdPX1Ixfj5TeUw9Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9CNzF6OVokd25DPXBSOVl6NERo
SU0+V21qZ3UKeiY1Nm82bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25OZztnWXRjaEQlcDE5YSFlUXRa
RiYzSmFLdjMzZ1o8OER+NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUpakNWRVk0Zm5MR05nMkEtYFl3
SFZEM2d2fTs+KWhBdlR+QW1xUz5McmBgaTdrdwp6Sns1X0l0YHlyQm1sYzI1REJPN0U4OzVWb3pu
Uj5XdzVoQWF4biQyfihxYCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgKejRjfUlAP2UrRlcrYkBeUkRC
SFYod25NcTJ6ZFgzU1d2OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQqWjZNSD9pK2kmCnpfQjhDKCtn
clQle1hXVVErZkBOb1AxUj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0eGohbT9aKlNzMU57ZGg0en0w
MQp6KVlUbypKeWNTVSkrXzVyNCN5dzl7KztpNEVlJHBlUmdJais7djtaR2RGMUskM0UlZX40TGFJ
KGpDLXUlMmgkJlIKejljTFhjWUNAWHdubnMmYm4pX1F+VGU/cm9LR0R8ZC1nXjg7K2FDe3tHKDFe
KE83bTM3WTEtKzYpMDFjTiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklXNnN9ZDR7el9mNU9tP3ZNZ05R
RUpHP3YyVD1LWWReME0zSTZJWnhibnkpJXZaUiZMRAp6SnBQbEBQc2g4UXlQQkBLVHgrQFJkY0Mh
S1g3fWtFbztTfGpedTJsVTdYUX1PbztmfDt6NExsK19yPkAxLXhsM3wKemF3cS1IJWUmY2tDK0BB
aFByUDZCSzx6PTxMKjBrZktVQENYKnplcWJZUVQ0KF5VPlQjX1hkVDcmO0Y3MWp9Sm95CnprQ342
bGg3RUA2bztXQF5JcFJOWntwdEx0TChnUS1DWX40bXFXO1VTN1p4dm1ffEB5eiZlNTNCcF9sVFBs
ZlB8egp6clR5eF8+bHZAeCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8KUNxdSZvdDxhezgxREYwfnJ2
R3I1WHJ+OHVgbGF2MWgKejFETnl0Vj4yej0wMDAwV1ZAT2c+MDA0Uj0wMDRsNDAwODtfMDA0bUww
MDRDYDAwOFA+MDAyNmUwMDArbmwzJkZ9CnowMDAwWE5rbDxaYy1rei11PmstODIqVil5fEl1LWdq
ZkVLTDFCd0Z4MFJSNjMwRFJSNGB7UGFJTDt3SCkwNypxbwpJTTZOPCRmK2t4dWlVMHJyCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvYmx1ZS0xeDEuanBnIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2JsdWUtMXgxLmpwZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNzBiYmIwMjE5ZGI5MTAzNWQ4ZTM3ZDU2YTY1NDk4YzEwODUxYjZiCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMTkKemNtZXg9PE5wSCYwV1VYQ0h3SCNWTWd8V2NXY2RHJkxC
X2MjSEwpWiRNV0g7aUJ0eWE3KD5Gak5LVGpjMSE4YkFhCnp8N2B8bWtYbmlXJFBrSlEwQlFiemZJ
Kk9oZnN1aWNuTmYqPk5zeTZRa24jVCEyMnI1bjcqR0toUCpfOSZVNmNXJgptNy0kVHRTYE0mY0t7
UWNkcHhrMk1WUCp0YyF6ez5QJihLI097eX1eSHxDPDFaQl8rTjkKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVy
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTIyNmIzYjVjMGZhNzdkYzk2NjM4YWViNGIzM2QxZDE2MjhkODE3
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0CkBAIC0wLDAgKzEsNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqIEFTIElTIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKwordW5pZm9ybSBib29sIGJ2YWw7Cit1bmlmb3JtIGJ2ZWMyIGJ2YWwyOwordW5pZm9ybSBi
dmVjMyBidmFsMzsKK3VuaWZvcm0gYnZlYzQgYnZhbDQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
Ym9vbCBhbGxTZXQgPSBidmFsCisgICAgICAgICAgICAmJiBidmFsMlswXSAmJiBidmFsMlsxXQor
ICAgICAgICAgICAgJiYgYnZhbDNbMF0gJiYgYnZhbDNbMV0gJiYgYnZhbDNbMl0KKyAgICAgICAg
ICAgICYmIGJ2YWw0WzBdICYmIGJ2YWw0WzFdICYmIGJ2YWw0WzJdICYmIGJ2YWw0WzNdOworICAg
IGdsX1Bvc2l0aW9uID0gdmVjNCgoYWxsU2V0ID8gMS4wIDogLTEuMCksIDAuMCwgMC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL2J1Zy0zMjg4OC10ZXh0dXJlLnBuZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9idWctMzI4ODgtdGV4dHVyZS5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTc4Y2ZlNzk5NzliODUyMDJiZWMxOWI4YTQ1NGU2NjkzNjFlZThjYQpH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTAwNTAKemNtWEF2Y1JaV2wrczdrVD9BVXZjcUgzNDRS
JX1JV1V1dGghZCkzfjFRPT01SXMjY0JLZGxwckBDfjhIaTYoZVpHCnpfTjJlKGszMEFJRTNmLXAq
RSFldVQ8XzBHKDl1I1FBIUh4fjAwMU59KVJnbzkwNCZUOXp5YHZAe043YzQrUXk2bAp6Rk89akJ7
MG9qa2cwanBFM3k8NVRwWlFqNl8wKTdxdD9nXzUkT2JFPHJ+QlpAPDBAaFUmciYwY0EhPUxCNkJB
eTwKelFefW5eeCN7JXYjWnhgdVdwLWNsVVUqT2BKQm8pKEU2K3RCMj91PD5XbERFUi01dTllPmxe
TmRUeHtMemhBNUN7CnomYUF6ej5sRUJEWHtxa0tvP3BLP3tNRzBGYURsISNHRkpqY18jc0t4Mk9m
JmpAMFVwWUBsVzgpeDJNSW9VbEBfMwp6X3ROYXFZJVRUOTQ/Tk5Gd2xhTkRheCQ4VWZMNTFmdVp2
R0ZeUVNFUExoc0olPmdybmNzPEhfMHtSVkpwVTBqQDwKejV1RkZzSEtCSXtXVEQ4c2VmSTtZT01R
N09XUHh7cjIjP3JeLUJicnhHK1EqN3tSUEUpYEA5JEx6REE4MnlucnNFCnplMmsyWVJfeF43WWdN
M0hUVSthQDxed3BHVUl3PkpNfXV7UGlvIV8wc2A4WCN4aHl5U0lXKDtLdVF2NGRiaEk4Mgp6S0Jw
eGBeNW5AQVA+ZSF4KSp3MkIzRX19TEQ9Un12bGZBYkx5YHJvIXM8LWdIU2F4Jnw9I3BaJFoxa0ZU
bSs/PjkKejc0d0lZamheZWlQck5WLW50a1V4WGEzJG9lOHB2TWxLTzBmVikxa3trY3h1NihwaytW
WF8jfE8ldjV3djdYQylKCnpAb3Y+PSpwPX5WSCNZI2pBe2V8ZispZSlfV200PiZgS0ZxMm09cHJQ
STt6bEhQKjxIPXozT2EhZTVLRD1WakB8KQp6WVdzI2JPU0llQj9mZ0BkUj8lV3JidX0kdiV4eVJe
an0ob014cHYheCttcUlVUDdzanRmcC1ofiNyUHsoWmAxViUKenFnKHN0WmY1VVRuVTM/YFlVXiZK
eDtAX2xOPHZyI1FqU3hpUXkpTHRIdHk/ZGo8dn1nR09objVZQnU5dTt2aXVFCno0Slc5MkxUcE96
SDw9fUNtQW5DS3ZnbyhPUXB1QCYtJk4xNjkzMTR8SWM+fHBXJjhJcylGfj5iVzc/cTxOd2grRQp6
ZlVJJSpyQjsmWmI5ZXhZPTNJMGchdkNtYzVxWFdNan1uTztXZUdhYHR8OFIoX3d9b3NXZG9fclRC
TGlRfEVaQ1gKejheWGZQbjNWcSRaallWSzx8PSltVHhaa1A7Q14qa3oyOWZzPjhYM2VtQG4jNlhn
WXkkVyRWd3RJZ2V1SHA+JXRLCnptfk5+VXVkZSF6YF8lPG4lVT1JQXA5Sz1ZM2NkejJCTj1IdSFf
emdVS2czenkhWHVtWEppJFpKYn4pZ3RHdmolPgp6bGtVcVgrUnR2VTNzO15NcVZPeDloQSNSSkop
cE1GKFM2LUZHYnUxX1liaDMmKFV7bEU/WTlNZkFyQ3ZfKD5HZXUKekVScX08QG56TjM2fSpJbmh2
K2BId2EoTyZgQGczeE1WRyhVKGgxbmUmdkpeWStLSWQzbz03aXRWNFl2YyYzOU4yCnojYno/I04z
OyQzKyRzRTh4azxBVD0rbElkTXNGJFR1b2hEZHFXWWZAV3U0MjBVVWEjP3J4Z3FxWitCR0l0clFx
UAp6YlVMeChAYyZFdSZ9LWVeKkgpLWNEaHZieUolQWlzO247OC1zfDlyQVZsO1U7X1ViTSM4OHo3
Yit1UXA7PSlUWloKelM7IWBaKXAqVm1ONldYJV9TJXpxVikmTDEqTmZ6WUYqPD97IWFwbFlySGxJ
Pz53aTtYYHhwYnc2N2d0YVA1ODwjCnpFLTZ7bypULTZQfEZffntZd1NfYz9hV3tkNSZCIT4jSFcw
YU1QT34pKjIzRHxjKnlybmVaMSppNDtqKjt2d2RDYAp6ZkNzV1hxVTgkYXJQfEtIRjNYQDB1IUoy
ZV5HJVY7bGI+XnFMY1pIVnY1YXtMeG8mZzMrIXkzcXlJeTdLdkRUS2UKel9NOTJ6RX1kKDZhfFox
I2Bgc1pOTypIUGVzbChjT3FOc3goM0RLYjxiQktxPjM9Skl4e2soNiFxZz1FSUsrdFBjCnpFTWdO
OXZrVHc5bHArbHxTT2BVXkM/VktgMj9lakwtcipPbUBDTDxHQ2srej0pWlRyaVJ4VE1odmw4e2Fg
MWBrYwp6PFJFYGptLUdxT0tzaSYrSDJqaUQ2RU9Pcj5zbXdiP1MmeSEpNmU4TSZzKkAtNFo3YW0p
PmhKYzFAQjJWb1IrWm8Kems3KUQ+X1NRIShYfGlVJEpZflBgKX1KentkQ1ErNndfQV4mekhBIVdZ
K3lfdXU8S3p7cC08TU11UkRWM1U9NERFCnpRPiFLVyVkMWJ0ZldwdWpQbHtweTloTnR9STtWMkgo
c3MwT0t8MHtTVDlYISZJcX4zcTRORCtjI3MxUERgS1ktOAp6OVclS1VoPHZ7e0ApaXMoa2xNb2JN
OzljQ25DOWNJYmQlcGEtb1Z7dVFkQ3JZaUMqPWR7QCEpY2QoLUx4SVJ1NmEKempKeG5oWjh+KmRu
ck0lUClySHlEQkp8czNWLVVKYXElbTdwJGRJPzklQiV4OXZ+TkVMcVclO3oqS0wqNUpBemkpCnpq
KSZMUjteNXdsV3whJmxrQExOUTAlcWM1VSlwMH5LTDhebWcjTzVsPyRrQkF1NnJgU0pDeTRxe2ZB
V2ZeSjdAIQp6M2kqSDNTP3hxflhrOUFfOz9ZUiFTTHdKPjZaOGZOPzRQUXd4Tncoa0YyfDsmN0RM
T1FGNk1weilMQnVeSVdqPCgKekRLbzgpQ1ptfSk/XzJDKTlIUjtNXmhrP3s8RXVQfjslOENzcjQq
dGAlRUxAU2dAZ1BONktQazgmYkswJGtpeD5rCnpxalNMclgpfUpFMkk8QDA0UVEyPDt3QUFZJUIl
ejYkIThicGw/az1GKSQmOEhtRmwkOSF8Kkt4MWArIWFMNl5kMwp6KkBWMmlAd3xqS0MxNjFEPypP
X00wVilnc08tXz5LITsyMURHaTBVYGhifT01U2V7a1c9YTVKY3sjLSZ9Mm5XNFAKelVpSnY2bnEx
XlRGR3s3UlJDUWtqajBFPVg1MG5aOWh1V0F6MXBtTGhrRnRpe0NTb2NmUilQMUAmQDtOT2socnh1
CnpNYFdkK29KO3BXISpxJnRSMHlaZyoyISlORFRSalpPZ20xJUVmfjZ4ZzRvK0xaZ1pMflcmWkdL
eHc8K3E7KmxgNQp6YWNXVmgtUFYrJGMyOSNKdz5AIylENztoRnJSfmphc3tSNiY3RVI4ZFBoa3hn
WkdLQ3dhcUh7NEVeRjclZDZ7dWAKemxfJkQlbU9fcU5qT3JnTDRjbiZtdjxBO2omNit0UWg+NWNh
MndNcis/Tig3ZW1pNjVNIUBsVSZSdGFEMl4zWU0qCno0aVRjcWBXY3tUMSlYOSs3dHI0UEBOTCU1
MEZ9QmctYj0jWCtLMD1GPFZGaGRQNlU7bkJuQUckUmRKM3xlcXBCdgp6WTJFMExBbGA2ckIraUpP
dkFBfVNodWpWOFErPWBvcUhxRlVtYmdQdkhOaHg1ZWdCV0RIM3N8JTJLPEkrQSN6e28KekdNJEg7
NT15KGVxfW5QeVgpM2BHVi1HOWhFTkdrdCplM1k1JSplYSZaeHF8PCNDYjBaMFlMWHJLYE8hT3pv
P0sxCnpGfXlhTkBMcVM7aT0qYHY4QlJ7TiR3e0hIKi1BayZRV3p0KUM8VkspM3xYaF41Sz1sRnBZ
XnNZUDA7TDt4WkkkTQp6U3sxVypEUDgwMnZxVkl0YXByc21MYV5jd1RyNU5DMDxwK25ETjlvKzgp
IWheYVk2QmQoKl8lI1dTTFZvKipeTGkKemxkMXY4bXZEV34zaD9TK2BtQklBK2JnPWRBcmx3MSZn
bXxDNF5YVl4td3kjMlE2X0V2ZlJOZzwkOX08d1d7PlMrCnpMZTJPJkRzbjB9bk82OGVhcW5xMjhK
fV49e0VOQHh1MG9TQjBER283Izg5KExabVpQJjtRKSRmYiMhelhJa05lTwp6YnhEKm1KQ3lRQ0Rw
cmFwUT5pYEk5UX5iTnk+emQ1cDRJXlhzcj4tfDlPfD9AV05PV15PR3JqdG03R3s8bTdHP0oKej8h
WjIodCRtNjNyMXVhJSl8ZE4oZ0RudzlmJXt1M21JZyljYDxGaVZFNlVAa3BaOW17PVQ+X0EwIz8+
dUpSIyt0CnoxKnRRKSQzYHMlYiteYE5jaGF1QSt6dXhgSk85RlJRUlpRKyFDTVdtMmVNRz1QPzQ1
O0twbiFydmU2NTt5dDBALQp6bXdxYUlVcXR+T0tZUnVVZzI2aF5AVHVyK3lOWTYrbE1DUlBJQnhj
SW1OKHlAa1pHY05wWTdeeCZYbFp9dDhiZHAKentMTFVnSlVKUyE7cDdDaHdCQTJvVSVqblh0czEw
RUZmWWYobXAlSTZRMD9AQSpNIURwOFhMPGRLTWRXKXhaeVgoCnpPOyVsZnVzflEhJCY5V2o0N2s4
UCl6cSlwKWRkTXdZcF9IZFAoVDVWQUVFak5ZNmMoTT9rPE0yQk1KUm07fVJfZgp6RG9aI0VeT3NS
WjhARCU8ZzM0KGMwS3tVdzxAJTJ3eihyczdNMmU0VlUwfihfMDshcD4/R08zeHk7cHQyTC03dj4K
ek10I0A5MEdFJlc0WmwrUTc0ZUFETjA2N2srT2sqTWFkak8jQTU/K05ZJnZSPmVoPmhWVH1Hcm4h
NiVOPl8wJFNiCno1WXwtOWJlMVBYRnZkRGFTYiolKXBIaUVTXnA3dm5USUJrTFU9TVAlKGs/UmJp
N0YtRFdPISZTYHBkbkYtVWRQOAp6UHs1Mkh4eSkoWGI/NH4pJjhRI01oKVBCcGpXdllvbFpOTWts
e29fNlY/RkNZSk5nUnlPVCVBfV49elRhVTZXdHoKelYtbUVYJEFoMEheNl5tYkArUXFpZUM2ITth
SzF5TndLaj1aXiRldTs8RHM+Q2p3YExMdVImO25yLTZZeTI4Tz8/Cnp6e3RHdEV1IWQ8UkpDWiVv
eSE/QlVmNkNgbVkjaWVRPCRUcDw0dSp1TXgzISk+PnV4TkVPSjFKRzJLZXJKK2JBaAp6dE1gNWRk
KmAqYXZ9aGs2cFU/UlJBKlImbFMrbXg9KnBaSkxkP0hLYUJrej17ViskNlZzXighezlSKkJBSCZx
aGUKel9jUnRGaiFNQnpLaUVuPmErajluWCp6dENlWlMpSCFDfUkpS24rZ2RJYVF2SmRlXmlPSHJ2
X3MkWVg4RGBRQkMkCnpMTE9tUSsyMlQje090SjtaXm98c01RcFNNb3lKSlQ0d2xQbWApTVNtKT9n
SWQjM0NPPlBnbm04NXdyVjUtTGd3Nwp6STY8aVplKTNZNno5TzIpTHg3UXBlQXMqSTxZY0FvV0lr
QmR2STMod0tqUytxNTN+KlR0NXEjRG58b00xNFZCZngKej43Q3dlVXMmJDVTPm54PzBCdTQ3Jmhj
ZnZoYThXNHt4Kjl7OTN6aDE3STBPfEtVU2RNeDtsNUVLNTU/JWVFdTxJCnp2cD1qd2F9an4lQjB8
P0htTUUoPTMpZUs/YFF9dDIyJmtPZikmZjh7U0s9OVdwNTcxbXJYOT1ONCEzXkA3bD9zLQp6bEE3
d1k0LVVOPjdHczVae3FiK3crbDZTXklxS2Q8KSQ8NWQ4RGE2QHY7KSpiQFVPWHhfe1p7eTc/fUMz
dTdKSkgKejNPQCspNG5ESU0qVk5Sd3s7VyFaZn51V2UyUjZyWDt6Z3BaNSZ0YGI0WW9lfWh7Skdi
YHdATCVTVnU9a2deJk9ICnpaMHMjcyhpaUBoRmx3MFN2NGRmSiVedEJXSCF3KlZ0bVQwSmF4T1ZX
Zm5BUG5UMkNgbiFsWFZVeUA9M3JpZCRMTgp6TmpqcmFjd3s+cTJZWlhgQVhrdCpjdm5OSG99Yz5j
aD5mWXZSbClCJlFjPmFJN3JPVXF2clJNPDQjNm8jMVV+bjcKeldmWml6MX5JNmhPSzQqXzdyN2BC
NjFPMWFGWHMrMTwrKU1kYWtmXilyYUR5eClvMjVOTTczXm1fdVNYaykpdGtaCnpSSTEwd0BXRHlk
cEdBNHRWP2RXMUZvSGBuUUZZUkpie2opPko5bnFPITh+IUJFVUxEaHQxPEx+diYmIUM9PFI3fgp6
K1hRczhIRk40QGI8SjkzYUlhMGtNfSlQakoqXlJMKzx1NzdzTktzUTdIXzFnIUVCb3wqSTUkT1VS
RDkkRFNibD4KeiMlWjBseHtgSH1jdzxpNmNhcjYrfEshMUd4Tm4yMT9OYFFpSGMzWUhuSU1pMTNu
U2ZyO0YoO0poMG1tOHk7XngwCno1JntwalNpbnZCbWFEWE1wUyFvZXxKdjBGbWcxcU5rVVh4Jlds
O0hxWno8YSVjJD10WiZkOT0+PGFZdjxHIUk7ZAp6YmFaIz17YD5pbldna043PSR+K1NZKmczbkkx
cV4mUkd9d250MF4oXnh1Zn4zeWJQOEpqKyhPYXltbjt1TTV+aT4KelJubyVmdTdnJjlIVj4+MjN1
dyl0IW1kM1UkVXBuVHhseTMkU0FyV3FkdyY5eW1DPCRPXmhjN1BhVz0oN1ZgYChtCnp7QT9BeCkl
fFgrUj9OaVZ0QGcpY1RNQjQ7MEglZHVmNXJkJUtQPGl2czxeNT1MMEBlfEdRa2ArVXZnZz04TkVr
Swp6M3ReSFYwPTk8T2VvWCVDU2otfWxKYjxHXk9ecll4TSlqJTtfJU87UlN0T3Y4QzB2entjcFBn
QkQyQVkxMy1qRnkKenNGQ3dKJXxsPmhiO1gpNkd1PGNiPjJvJHB0T1QmOzVUVFdnJExrTD0/YXFw
aUAxUCYzd2RDY3JaTDwwWik4MSF7CnpQYWVvM0JKQiZeUmFAZC0yOUUwX3cyWDMqa2JIbz9YY3VO
QyEmSSZSb1pzRlYyP244RyNJZSFhSFg9R1YteUljaAp6SXAtfnFZO356YjFBP2JMRWthJDZJM29r
eTZjdjc+VWlVaSFWTWx9ZCFHRWlXTjdFQntWKldNTD1rQ2BXOz50aTwKenB4OFRXTkN4LT1qZXhU
R3Akc29rYWI7SUpjY2hiQXROXih7RiM1KUdyU0Z+JD04d2RHZUI4MGl2ZyRkPz5eRzRzCnp2Wlo3
KkFUc2RtSnQ2MTElXmJsMW5tYm48c1BSPzRUJTFZdHpjPD96SiReOCtrdnhKQGAzUy1VdXJPYXRg
K00yQQp6dkBGNCM5cU1Da3VJM1ZkWCpaPVotTnpWdENAPFNUaFdlaVc8Kkg0KXpCY1FPbXMmK3ZN
MTYpQ2B9fT0oJjNPOykKejZIfmNhUTd0Kz1BOUxFP0VqR0xOPFBqPDBfMEBaZnl5VkZvXld2cENx
Z0l2fHBvei16QWxIUzZQYil0KUVnQFdLCnpaN0V3K3EobExOems2N2l5ND8tJCFtZzMxX3ViP2hJ
fFcwe1g2LVAxMHppaGFEQChzPWd2ZntXRjJEMkdGSl9pMgp6bHxQZjFHdXxUXkpGJjQ5bD56LW49
biE4TXMhUTd2eklSWD56UTZJSlRyOXZjPkxyT2R1MVopK094Smo4cmsyd3wKem1VeV95PzZnK19Q
dExAPkRDWmFmVHJIQ1I9ZmsjSz07NW1vVmAtTDBEOTsjKTV4fUErVG9qK2h1USlDYG1sVzZACnpm
YTF0PE4hJTxZR0hNJTtqdmFgTTlgSXoyU0hucjxSfiZiOFFqYVY3WmtTezhfUmJPY18xOG5zP15M
UGR7dCl5VQp6Kzk8UDFRcTZ0KyNKfGN+V203RGMhZl84QElqPXFhdihFfSFpVVZtcGcoeGh9S3Mz
QD02UEYhRiNYeDAhcTRFMG8KenVoRGVVWCZDSThuNWVQeVo0MVpjNz5hYkokSSk/Z1g3Z0MwP0Jr
SGNWX19MYT5jdjZGYF9NbGhON2Vga2BwPjE/CnpRP1p2OSpgbm1EUFoxej80dkdaR218ZGVaWSYl
P3kzcklucG8mZG0tPmw5ZE1iKUVFR0wpc31TVDMla198SHEwNQp6OEZ9V2k2MlYwUDI3PEFgM2hO
aDdRdGN+TlRWSFFAR3ZhQVA/Y2U+bV5ZM2BEWElmdX55SXJDeTIxdUl3JjI/JUIKel81PT9LTldi
ZC1BQHlWWiE/KGRRQ2MrR0dIdWN2bVZTKVR8KjEkamctJnRMUSVlUSpfK1ZfU3xFRnBjfnFKUXY0
CnpQSHNaS3dZcmpnKiZhSGJWSF9hP15vOTdgNGdJK193aUtZVCNjYzhSPlh9TDtuK1BMP0FHPGYx
WGhuM1k1YSp7LQp6K2BVZk5NWHM4dTkjc3JHX0MtOXdHIWlhRkhMOzc3cCZZKSZgbHxPQHllSlM0
NjdIcEBAVnBLUGh6R2Etd0dFNE0Kei17XkUxZSYyV2QkOT5uVTw5T15aKX49YzhsZWpEcnFUY0Ny
cCotRmspblohR3AleDgjNHdTczFaTT4zTHtJRndqCnpOZVFYJUdCMWM3blRObVBqaHI5KHVgdmI5
e3Z7YXdqa1A4PGxPMWM/X2ViQngtLSkjeC1BRyRUV0c/PT1jZig7Swp6UyM1c011Z0RrV1dxc1VP
a1dge0hBZEBIK2N3WD8+enpgKz12VDQqWHFfVWIyTlR2eTFWdUw/anl6WFRebGgjSXMKeiRTTHN8
TW93fk9jQjNVRHloIz1PZUpAekdza3p+fkd9SzdReDNyNztMJlRjNVUkc2x3cyN5RlU/NT1YZi1y
QX15CnpmIU5TPDRhSTdUSzV9MV5kaCNsS1I4Zy1TO3IqKF5gOUo8ZFg2KXZ1SzxUKTZvSUh3bDZQ
ekFBP1hhYG5tY0h3Pwp6I2w4an50KngoVDtNOS1ac2FeTmZgaiomSVZTJHFtVShRP0JeOEgtYnUx
JlpvUEI5JWFNI0tMXmhRaXZlSD1vbDsKems0QnNYZEhsNW9taCR6VSF+cS1ZJkNoeGs7RVRSOHda
anl+VkpDJTd1b2ojfHJzM29ye2dRN0t0PSZrbCNkPHI8CnpOemxvMTthVnB3Xno9b2BrQHYmeGlK
RyF2ZTRJVTxWOWJIWUgjNGkqNCVWO05EOCYxRXZ5TDteKms3U3R2KzgwNgp6cEROJmNWZDVrVCFm
d3tpSFM4TWNOUGxDJmk2V18hNyk9I15uIzFwV0glWWM5TGl7T2UhJXlpTmlPbCk+VFVFO1gKemZ8
aFVnUF57e3FhdjVwe3BQVlBLYCU0ITZlNmxwSW5xOUx1WiVFQnsyMSoxNGRrPzw5aD9DSikxRWc7
Q3ptdVdzCnoxcmprUnEoX3xjMEAjJiE2QlBeJVE2clIwOzFtXmtDajM8Vj9LQmYlOXJmKH4lTClk
RD1MfFRJLWBRJHhZflRnZAp6IS1eNmhjKWI3RHluR01tWXJCQ2lYQFJTSEZ3RG82d34zYitIaSom
MWw1UmI+SWYkUDxHQShAKHJvWCZjTmlCcmwKeiVwWnFydyt6T3p1KHYzYDBMM3puUiNGYjlDO1Ru
VHc9fXQ1RyFpTzghZ21XYUZkPT5HOUBjOStQSzJuKCRITGhLCnpNLUhMSilNbiFeRCZJSzRoI2VA
am5CfT0hSCMxbjNtfSk+T150QFp9PGZ2I3lRODdtJDZZPEpSKVJAeDVPUDxVPgp6WUZ4aUgjbV9S
d3w4JXg+VSNfbT12LXJidnJseUxUN21xPF5VdT1keXUhZj0rSURzM2taRUo3UWIrb0omMGg1ek8K
emFVQTRvST94YXpMVlBXYEVoZC1NJWZHbXA/QlVeezFiWDE/UDxsdmdkWSR9SkVed3YtRHpCeHY3
TTBoaj1fMF5sCnpsdFExVTt+cEhYKCp3M3AzOHNGQjg/OFpNd2wtUTwyU1hwNm18dGMoaU5DPnBK
ckUlYm5Zfn5sM1Rvfjd0MmA8Sgp6NTFgPmkhKiQ1Mj10PFRieUttTUNHb0spR2FYanY/Y0hNeWhe
Rl4kflFDez10ej5neDd4JlY2c3Z8UjU2UDhTVCoKeksjYmFtYThWRl5ePF5HMVA/UV93VTVKbXhr
bE1RZlokN0ptZUgrRWRIJW4+WlAhMCtaYEpDSXM+aU9KbyVDc3ZvCnpEVWgrdldsM2dAWnV5YzxB
fUh1ZihHOTMmPlkoPzhtTXB+b199I0VPIW1aeXtLMER6YV9WYTVHT3lsUCNQR2FTcAp6TEUpRHJF
KX5mNilUMmVNU1VfYVVMJj0pWnF6di1yNWdRfjFQRnhVWkhENHFqdlJrJHdlOEBOcG41dWIoUmUp
e0EKemNEYSRhUikycXtzU3V1NGNleUJKaGhWX04ySWV8Wjd6QDVmU2hUIVpJUVlreUB6JDRVUkBj
fHBVaj9uVEVMeitrCnpUYGhZO3sjM3w1LX55bSg0aDxsekUjZD94VjMwRzEzMXRqOGFeajc7JWto
ISNSMUFRRjlYQ1VWantJcTJ0V1dFcwp6a0taZ0JheGo+Q143VVluRUB4TFY3YFZabTkhPDh4Tk8j
RFpVcFQjc0Q0bmdPUFZZQzZSS2NaVio+ZS14PVheSFoKeilaYW1kaHFzN0Vac3hvN2AwQFc/JklD
ez9tc0E7NForRSY/bitiMER2VThTOUNeMGBOJT5mOUVDaiRITD97MFJCCnp7TUd+RlJtdipRaHh8
JEQ0e1B8ZTRHcSk0OUd9TWJIb15oeXI2V2pYTCtvND9ZOGApeiZhO1ZGNSskSil6RTxxIwp6cUom
P3I0NzEycyFwRzxaWj9fLSlHKFJucmEhPmxHPVlJM3c+UXRAaXVhKTwod1NkMWpScTtSOHZTI3x9
Z3R0ZCQKejVmJEw0YGEwQ2tnWjdKYzUya1l0eWpfKHpLKjlrVGtFc0ZOe3cybmRzU3kmR05PLURU
QnMkOCNUbWdgc0Q+NVlmCno4XmRIO09yeH50YjFJNUx1WVd2c3tgbmJ7WT1IcyhxUysmWlZwQ3NW
WTAlVUBHZyVAVSF9MHdCWDJZUk1EQ1F6Pgp6SC1QNS1tZXY0fkgqdDc5eXRYR1JBWDtKPjE8ZVlC
cn4xaV5RWTtKJmc7PiVVRzU7RzRfVXZTY3ZranpzT01rKEAKej9mKnhfcWI2TFRCPmcyOU1ZaGxM
VDcydkNGKW5ROGx6WjQ+ZVIoZypoIzUjJmNuYlAjeFlWeWA7YVQ9c1k4UT8lCnojPmk7dXlHUGE2
emglUEQ3ZkZPTGNvS2V4NU1sZktOO21yPDtSNjghRERSeiMwWnNXQzhHJWgpdH1sI2JzXjY8Pwp6
WVIwdUlmREdZUVcrOzV0TS1rUEpnYlNCJGU+QzsrTHQtUT55Pnh1ZV9rPnZiLUgzfUZYXj87MVNO
I3glaXleXmwKeiZIcTdDaShJQXIoTWR0Klg2OUEyJCthWFNpPnN7KGp5VGhSR3kyd1FLa3RlQWBp
ODRzUDl7Z1ZpZTIqemdqZz5QCnopWVFQbT1kMGJeK21GSldGai1vOTBYdD9gSmEhJis1dVJBai1F
T21oJHFBQz1TbWdsdy18QDhKcDFeZGp7Xkl7dQp6Z19IZGBHQWVQZFNsdChMez44ZmU+XmVXa0Bk
diR0TmpGYEIwWWZyVHVIYX0zWkk5cFpibENtKjZ4KmBuYE9mNjcKemZXP3A0Y0spR1ZWQiEjejJg
fEJgeVo0VHA9fTRyVEkjVDQ5QFNfV2cwJHREKV8lfkh2THdKX3ZwaDFHbDtBK2F+CnptZGYrT3BP
Z3RvJUdyYTxmbDxZS3p1QGFeI09LMk5KOGFUQj9iKyh3KV5zWVh0KiVkSTZuVy1nV3dWUHQmZCpU
SAp6cGt3VWwwWX0tIWwkNXBGaWh9M2RDK0Y9cjRaJkF1czVJSEB5IztePUlBfHVFJGw2dlNyIT9C
PUd6Y1JeclRAKy0Kek4mPXpZLWVNLUVybjhxZnEwLSlKQEJsU0I9JjlQUDR6cyRPeSpYPkdvdmQ2
RkZ5TmlSK1QpajhLIXhoR3tlSE57CnpQPnNTMCEtYGBBZVM/YUNsez4rOUtod3dTc2UhQUNsRTxC
RzwqNERWKjNYRnghXkojYGEyRChna2V3bWtJYl4kRwp6ejZwTF4jbDc5MF5+c01rd1Y1cEM0fCZv
Zkhpe1FXVn5QI2A5WjVlcXBZZEFOM3QpUzRnPHNCUkwtTUU1KEh5b3MKelgkcmoxVC19MD00fHhW
MGRnKWE+Rn44SEJYK1dlUCgod082ZzU8SCg3RCU5bVZYU09zO29wRTFzPWtrNG03JE5LCnowZ2Fr
YXpJb192VklfVnAjX2R3ajlweUdNT0tBfDBlK1A7TlB8O3VobEklXlg1OGdsRF98KzRILXRWbGRT
Z2JRfAp6XkJOK21oWjIjNHdFSEpsO0hfejNQOzJrQz5GM1Y3aXA7Nl9FVXR2biMjeEkxaTRCdU9N
cEh0MXcoNGpEZnooKFgKejJSOUtqTz1YU0A3KUkyOClUYDF7OEN5TFJWV3FaSUUlRkI0c1IoYFZQ
M0AlalJqZm5BSXVEO0AmaHx+SGl4flk+CnpefiFuPGo+TCtMQEp0az01anJZUjU5bFdWIU1vMz1m
QEorJjtuZHgrYFpfOHk0ej9sKFVzejRkMzJTUj4peW5tWgp6OD8zUDJfQjRgQXhvPDVJTjBgJF5p
MWl1KCFncUZkQkF+Kj0oWiNQJWFudSRyeGo3NnxTaHdSNTBnYiM9ezJnSWUKeiE8PkhwRVc+K0Yx
bUA9V0dhR1VeP0EzKXJwKGt3X3dSLXRuKyMtSSpGNTs0b0I/dW1+TVNPTX5QUnszMygldWZjCnps
IzV8T1lYJTI+WiNFQVg8VSlUVUt5aHxvRGYhcWthZXckT1N4RWVueVQ4PHJ0MjFxT0dGS3VrQTIk
JDQ4KylVYgp6e1ZYXy1nWCYjfCZRTmFsI0dkMT4yQGlFNXY0YjNxb2J6fSpXZz87ekNROGlkdTxX
Kmt1OX4zM1dFLUNpTEsqR0oKeilBSCU4IWtKdSVSSW9afDBnRV8/Z09naXNFbmt6MXpmbig0ViVZ
PHBOZDVTeW5jcDE9Xld3JU9Fc344YkVyXk8tCnpkNCF3UkdHMDBEanQ2flNiaTA+MmxDISpZZEw3
RTh8SnErT3lpKyFyb2w9eD9zbUQ9bFhVZ0BVO1A4dThPVjxUVwp6TDRIQCpVak9tYVdVKipGVG9Y
djc0PHpCTHN6V2wtLSE3RCs7TlMoUFhFcENEJEFjKEVJIUhKMzhuJT0hRlBTX0sKelJLeGthJlpH
eWkkTjd+ZkRXZ1Izc05lPVpmZXBmcjJoY0sreXdxUnVCckZJQT5gV0srSnYwXkY5Zz5BejR6WSZQ
CnowOH4hSkFuayshNkd9dk4oVnFVMmMrR0FHQDk/QF5hUntYMUR5KWpoZFcye0VKe0g2ZihIXzVr
Xk0tLSZ0cjlNbQp6RmYkOHUwbHB5fF89M2FHLUhMJEBlKV9QQzlQVH5wNX11S2E+PmF4RWN0IUJS
Z1BufkgyY0x+QzEzYyhxJV9RcEMKekFjXnhgK0MjcF5sVkZwNXVwKUhsamt6WW1CNlIwQT1xRCt3
YW4tT2JUTlNhSUljS3ZidnI0Y1d4K3lCfDckUmRECnpIYG5BRkE0e3o+ckNUZ1dUcl5sdHdZeila
S0J3P0srQmV9Pmd3VWdubWEjXn0xdlM2b09XZ215Rn5HP0VtPnlBbAp6dCM/TCkjMjFHMVpBRjl4
PkVmakNUfm1vKTQ4PVZyNWZYUXYjQlEyRD9Ec0VTaVlFSUMqKTh5dnVuYndDY0RfRmsKeitBdSMm
JGR8PWVkQippaExBOzcxZ1Y2VEF5UUJTJSloSHNwZGNENnJ7NnYpYVNnP1ByMygxVHY3bDsmR01J
OXxUCnpeUUBkaUclI2EpK3F7YTImPVQyLXlIPnheKUZnOTJaIU5VTWxqe1dvc2BPWjNBLVR8PTIm
K3F7fEZ+RHlNYUJhVgp6UVpAdTRYRVFZTmdSSk4qOFVednNqRDVtSVRuJXRYPk92YiVVNXYxJT14
SmFiS0h2RnZOMTAxNyRKZm5LK3J2MyQKem56Uj5rYShOMj96YE9mKjdobj5KXnh5Oy1BZjFnTilZ
Y08hT2kzQmQ4YHh0c2JrUFl0T0dObF9AKj1VbmkySEdnCnpYYnVleDdtfTFYdj5OYVY0cUx4YiU1
eFlsX0VscGcyVnAlajxxYVFUSDYySF5PPGBISF5BPlBTTChJQVp1NG9rSwp6Xztsa1MoQCt+eCZB
SzZLaU83dCsmNGtRMUx6WkY0KHZgRX1qSzR5YnA+Pk10PCF0dGQ1KzFSMTFOeUIwXm93aygKekJi
fClwaGZqNGJXYzsoWFIoSFBFUnlkUiljdVh6WCs+fGstcGltMjswSFIxeWN7MUt1aVhvfjQ2Vnlz
WG5zZG9qCnpvKHUyR3NPKjl0ZGNlU3BfRmU4NWpSb3JFPlheUWpEUVMyREJYXj99KnV6UlV1RClr
S0tJdTUwbDRgTk1MdSleOwp6PnBtPj0ycUVwLT5yYWtOY2JmcXgjMS0+V091UzFQWWB8Rk8zM31A
aDJzJmZtLTZ4a3pGSWp1TnRNZW5kVWlgK0cKelNjfkc1N0orfVZIK2NWP1p3XldNIUtQIU5kX302
QmJ+dndKRGpNZig+TGY7WihjZ0BZMnBkI0V2NUw3VlZtZ3YmCnpXTjVkP208bWF5UUswXmEpPClT
I14keXwjJiFycik2OyR5c2crNUkmcnE+WDJuNGstfCs+RVI1KzQ8bmlMUWhZaAp6aFhvK012OWYw
NkRIWnlrbS18I3dsSSROVWBJYmJBSHxQVX5kaGphTUJFcV8oSUMhRloqTXBDez5nJVJFZntBNHgK
el93UkJHVGVJSFNnbzJfQ3heJnx1aXhrcyR6R1N8XjJpJEl7JURye0lESFVWQXBTQHROM0N1UCZo
MHcoRGxTa1ZGCnohMzQzPloxN1VNWFlySWlnM2VsWHUqfkdRVENLMnRZfHktR0ByUSMjT2VoQ191
QTJab20+eXheN0RZei1qKFdBXwp6MCFabTg3byowcnt9amIjTylNP3Rhd1oqIUZiSS1EMzUleVhS
MHZhflB5V0BkJiMjKkJFVXpjR24yWVh7dlUzK1oKeiFLdWdXVmVMU1AmX2wqXlQpSjlWTSpIVG48
P2psXyR4d3l0JjZyZiopdWVsPFlod3RRalpGY0FKMkFIMnRIN2d7CnpoZS1lS3B2Nnh3alomelJf
QUx3XnU/WFNfWXtiMisqJDVKK0A/ellYVChPWSFKQy1tcz82R1Q5an51d2U9TXJBPAp6Pn5wO04p
T3JrSyZ3NERGRCtDUn1vM19zdF5McW5pXk4zV0drN2BKTntvelprWGA1Z1ZxT1BtPWRSfH1LVHB+
bGsKenlUaT1TKVlRflNVdz0qcTxNSn53R1I4U2ghJFNQMDNaQ2A2ZUVDdV9QeEJLVVc7dGM8Njlh
ZSs1QzVpeWd0KmNACnowdStCQkVKJHt+cmEjWkdTbXBja0Veb2NwSDdxfmUoKWA1cyZGTSM8PWpC
MmNVTCh6YUBSRkNiPks0NkxOS0pvSQp6Qm1mOHVtR3d4PEVKJDMocXFwa30pYj9SLW1SbS1IQG43
WGZfKjJgUjtWJEFHaGhhSiExOWUtK1k/T15nbTY+YFYKenRiIyVUQ3UyVXNyX354Z2Z3QT0mODVt
VHNETGA+VSQ5Ql9eZmJnND56NldvTntDWHVLNGYpdiQma19Ac1lYY1Y7CnojZ1JBeSY3fnhfcGxD
Tzx1cCFsLXdaPm07Q1pGdlZHekM9TzBTdHo5cnEyeTlpaDA7WkxgKzxLZXR1KFBMbHBCQwp6cElN
UmVeWVFTfDt4Mk4+b2I/KnZJKW0xYXA0ekhkTE5hKFUwT0IzeV99fXY2JSU3ekJrZWBxNUYhXkMm
YWVpSnIKejN6UGoqfDVlYzc/QFpVbGZnYlpDKm1WQ2dxYSY5Rjh6a2coVUxtflN3MUFONVYrPXpx
YDd7UHN8QVY+ekpmWXNPCnpoeEBBKmJ8QGZNQ2dAQF9IYTIjKSErViRJJkZrMHVffkJNSDl7Jj1k
cGBqNz4/PWQkd20oQTE2aTVkYElpMHpCbwp6U0FfeHhJRThQXmFKI01ZOCEqWWxhOU1nciN1Xk19
SU89cXh0MzBOdiNwcV45YXEobWEoTDlANGQ9RjcpYDA/P3YKeip9cSNxdCokRk1eUyFMTUpqJX10
Vkw0e1dSJWIrTmJ2bkZ1c3d5ZkQjQUlaV0c9d29PUlItIUViJlJyc1g/QF5HCnolPjlCVzhCcjdw
V3QpPGNHVzc1SEg8bi1UWiUlO0VnO1A+TSFMKUJOOCQ8QVk9MDZIUUcmR2JWdVdHPWI5bFpzfgp6
RDVlQz9jZlB+OENwcyR4bjNqcXZNV3VHXkd5Y1pGZ0FgTSgwam93Mm5TJmFKUW1VN348SVBzKiEo
PGA/QTR+YDMKeiYqc09DbEokNmFWQ3BecFJSOXxHPGNQS1k+VDltT2R3JGk0blB5ZWIySFBtQnp3
Skk0dmxjT2F6O31uSG45azE1CnorZ1VFaTAjfFZ4d21ZQng7PHx3X0JaZ0lBJGMjcTAtdUs0T1BP
ZyFQd2MrbkhkQiFve2w4I0Ikem9uY3VuJlJoaAp6Rlh5VmM5VlphITFUQUw3NmlHUXVxbSFrX3l+
T0YmZTJMbiV4JFMyfSpZT2dQWG10fUZpIXIyX1ZDRz09ITlpZVkKemBUTWk/azxEO1NWYTU0aTFQ
dmN4aGxIdCVoNWRfI3Q1YW53Q3MwQUhWbEo+NGpLOGZAIX1We21VfSgjYEZ9dGcyCnpQYWMyI1FC
XkRPS3RHd0RTO1dDZCUqQi0zVSZzeUN1QWE9e1M9KSFiZ2hgQlBDNEI1bXp5eyZib0QoO2w2WXNp
Kwp6KTRpdTZ1dV9tQ3E0fUg7KjswaEBLYF5DMWJ4WXxEKihHM3xFZ3FeJiFxVn4jJnxmcnFAfkow
a3RMeUBlPHQhUDEKendJQmtmKD9NUU9xaSpXZmMkamFRT3lKazdnfSlmVFVTcHBUZmptMFRFWT9Z
SEVubG1ON3xWTH5zcjxWbF9kOzFxCktzWlBOdl44V3gofDYxayUKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFscy9leGlmLW9yaWVudGF0
aW9uLXRlc3QtMi1taXJyb3ItaG9yaXpvbnRhbC5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5h
bHMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTItbWlycm9yLWhvcml6b250YWwuanBnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzNGI2NTJjOTZhOGUwNzczZjQyMWNhZjdiNDFmMDBmYmQwNWU1Y2MKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDQ3ODUKemNtYSk7MlEoYm95Mm5TMEU9YVU2TD1DfChNbU5sbkFraHpeaio9
alE3LWRNNTVLQFJ5TEoteyRrc3hZRD88QzQ3CnpnWHA3MjhLTl4wRXR1PVBjaXo0MC1TX1RVPWZD
enxZcD96TGV7MWl4ekZqXnRmams4VzE1b15aUVR8SSp8SjB4MQp6bG9TLV9edH1IUXtNYFkwMjAj
czlDMnMqKEdAWlIxPypwNyQwUlI5NnhmUUBoMlkzcDJOKEVwOFBfUilAdlFkIVIKejBaey03MDBx
dFlsSU5CYE1NcHpSJiVqODFmJER0bi13KkBNMXpJfEtZRE93bjBEJChLcDZgZ30mcXhZTkQoWEtk
Cno4fll7dCVZcSE3VG5zfE9VYD4ocHJLbCs+c0hpRVpzczd0WWNeLTljV1RSIWpNMFomYkVKVipD
cl56WDdhKVVleAp6VjReelRDTDFMaTAwd0JJQmRUVUVQK2tAS3gwVyRgSEsyRmttbWo/QUVPJCUr
JFAkTU1uRDc3NXp9T1JWRTFfaUsKekF4OGMqdEZ6JmZQS1QpWkNgTWNEKFZaVkluWX5KTFBwQyg5
Vm92Kz1YTWd5WT05Y3s0SGAreSVEPD80ZHNuKmBVCnpOJG54aE54RDU0TyYzcU1BS2lqI1h6LVJr
UlJUP1pVSzF7dkA7ODlnQmNrNyR2YHRSP0xwITJnOHokRj9MTGElVgp6NGt2NjdwYFVQNDE1JSVQ
WigwSDlkclpBdmdiKVRxSzd9TVNuc0gyYz9lYj1ROURmS0ZKI3JkPThaQ3VaMXdKd3kKeld8KH50
UClie19SPVVNZUcoMmpZemw+Q0FqSnUkKDVjQDdySjZkYCV1LXdodk9FXk1Md3o3aVZ3Q1RiMCg8
N15iCnombDc7ZUslKyhyWGZuTGZfTVZwezwwbXlQKk5nKXRtZHl8UUV4JntFa1RYZ2pFN2wwVyN+
QWI7KTYzRTExOGJGZwp6ViE0KShQP2t+STFPKyN6Mz11O2UtOTxIX294dUJMMF9mPj5xcHFXITZ9
Z1ZYelF4MnFHSnE1NnUrbF9aVURrfTcKeitwMnF7V2E/PG5UdC1iWUd3ZlkmaUoyWEtXTyYoMXpX
I3gyZj9udkYkO00zWmQofUwxP2wpbUlUNXwkQ2BaaFIpCnpWMCpkZDh7NzQ2X3JxTFYqbyhhOXkp
RmhYPEhmKmRie24yMkUkKHFgaWJpe3h5dkBDMUdoTCkjJVJmPl42a2ZJXwp6RntyM3UheXB9KWFZ
XlQ7KTl4YjJfNHF5O2NkdXt6TGwmJk5GWjNZWk14b0BkfDAoZngoPHpsZG8wJHVKUUp0IWEKelpL
PjxfYFBoTjNtWDJBWWNpMUZ0cSt2Km8zSFVweChvRktiOGMjfnxIQzxQT21wcCtZTSYqLShYNj8m
OTFXRWU/CnpYMiVDKCh8bWxuKlNKdEoqYnQ0MEx6bnE4Nit+I1lpQFFKcFA9NThte0Y4TGlQZjZ6
M2UpbU8zSDdjNGUlN0QmKgp6eTRAWm88WUB2VVRTVU9sSGN2TmkxNVBrZm1sLSNyLT5kRm95Nzl6
OFk0bDw2PEdEdHl4OFh5T2xPV0JhWlgkQGMKei0pUmxTRHhnSzVFP0ZkMiUjeGc9dkZhbDJsZCN4
LTs7QUAhQ08+VWlBNl8tcFc3eylVQzkye2pUbHZ8eFVsIUVXCnpzVGppN2VZN2Irb0Y/fFJ1OzVQ
PXhrcGNkJER5c1I+Qn0kRFQ4OVhgJEx8eGZSNkZnUDsxKVNTb1d6RSFqbkN9NAp6WEpQVlg/U199
TTdUNkErcjUtZURTNTNIWTd4Pmh7YHojVnh6flFldkYweTQtSENBQUFhOVM8WkE7PGU1aSE5c3gK
enE5MjIkV3VqX3xIYlJPJCZiPXNPV2omTm1aWThuS0dlRD5hU2BLdk9QTH56QiMhWk9xTn5NezU+
VWhtWmpNR3poCnpXLWpGaiZVaDAoajxTWHlaUCtvR1NFUU10dytLO214bW9qe1N3QjxRcXwmX3Fe
bjByP2xlUHBlankyfSkwdXozWQp6Sm91bVRfe1YqZ0FySmpFOXt5YFFHN2JIVyorY0dNUFhrRGVZ
SX47K0BmMXo+WE54OX17dGVJQWpBOXZnVXpOSn4KejNrJFRQKWBUTVolfld4SC1hPCFsPl8hQzg4
MmU3aVJ3UEhgejIzPTU8bGFkX2xhVDA7KlVlZ152T1Qhem4lRmh1CnozandUKVRwRDQhJjlVbW0l
V3l0WC1PV0RiZk8oZkpNNjlATkUpT1FNXnZmWFdfZXN9XihiSHItOS1jS19zIVRBbwp6NXZVKShX
T3w4RnNyTigpTDxUQFppQVRUcUFGJUpkUFRHJlZSVTYwMktFTHZ7UERWa1I0NS1LVzBgK2NVcioz
TDMKekJCODVuQGxwd3t5MnNoYWQoYy1rWFc4e29HTjk1JHA9bFR4SWYoZU8jQDZrSj1WNyFiMTA+
N3VzMGR8Y2Y/TVU8CnpPentpVVl5e1YrTl9MZj1qb3NSbWd5enh2anEhJUlPWFdqV2VyKD9TVSZH
UWNrdSElcmhfazZJeUpuNT9RcEdGNgp6ST0zLUE2UEpXV154aUNxQDF2dklDcn5BfXIyI1k4Qnpr
YUJ4XnY+JW8zIWpNWE5RQHl1NUQoUXVOcygkKlJFY3YKek1TO0xNankjN0prWClYaER1KylSZ1Va
cFRGfT5pdjZJYXRWJWhKenRtdjQjMEE7V0lGY3V3NHRmbGdeaF40NVB1CnpUY31ZPS1NPHRNeE5M
WkptcGtLNEVFITw1KEtrZn5Ya2VPZUloZTYkXisqTjhsKiRRd0VYIVEtN3ArbTc0PjNkMwp6KmNl
bk5CKT1EfDNaWndDZDRPKXgtKkdaJWEoTmhQXjFhM2tyTWlgJjZNVWNWV2UmUT4oOXx8ZSNqP2Nu
THt2SXoKektFOU5LcllsRXI3bCl3Tz1AKHYoLVRfOyhHYHo7ZmUtSWc/azlwcXl3N3FxSFRJZDgp
M2o+fCEhZ0dLJFhING9QCnpVZFN5WntjKjdWKk80a1cqKD09e2VpTWpXaWNMd31IX0JIX1RyOVZ9
Ul5zT21sNXtVWWlyTVFETWBnRzlgYE9vZwp6WlN2UTF1QlZ4OWh7NSY/e1dzaWFKdGZvPngmfilR
PDFBLTxya312fXNgSDRzaj43bUEoMSFBY2xhMzJGKTZJfEAKemtAKlh7Pik0Yk85RnlrS0pyYlRx
R0tAOzw4TkFnPWxJV1FmQm5MJnM9bWJ+NTJIYnNkWkxwdWNFeDJLcjAySHp1CnpSfn45NDJHOD88
TEtQeCMjR0h4Vyl5R0ZMYCh1VztKfDRIfDRUREY2MVlrTX5waig8QWB1R1koZEU0JjdLbjFfKwp6
PDVwd1VCWkBLJDlVLXQ7RUVzKSFFJSZVemBpV1Y3UWdsZ3JVczJGelBAUDRDdkBVQXpaZzdhKU58
bUg2UEl+blYKemVCa047bH5XRjskMUduOCt4c25uVVppZWc2KmJeTjI2JnxFNnJ1Z0Y7S1lOfTFN
alViKC0tKypLe1lzRU5SOEE2CnohRlRzWDg9djEpJGBjY1dwT3F5XylnfDBrITNMU0IyYyQtPGVT
NFVtSEteSXxNV3xRQzglRjA4SXpsNTJiRUgqWQp6ajxub2p1YU1EZklKSThTXlFFZUo3fFZQYFo+
NypIZ1pCQW5Md2FiMGopQyp8eT99O0gxfERGaW9XR3p5ViN5WHgKemd4PitqX3RHNGNfWWFSb0Mo
b2EkcjRrJm5rTFRSVTxKMEFlJCFtUEJVbCRGO2E8eDJ0UUImZXkyUFFMd09jQjQ1CnozKWJMO2Yh
RX5AcSg8SXomNUxQaXVoSWVHcWc7MEtDMiswfTUwMD1PaXwtVz8xd1lhYTs8I2Q9VXNJaE1tSilK
JAp6P2B9fU1tYWteOWM4X3FpUH1iNm5hQ1o1IURBbihXaF51JHc8SUFvK3Z4bSpNZnhZcWwoPnIr
bF9DZTNGc2BTWloKelVVRUMoMTdaP2g7d2gwQnpXezxmR0wlaiY1aCYme2dvYWhXSjR2Uz5HNnsr
ZCp9Zl5BX01MVzNxVlp3a01NY2BjCnpfTHN3UHZDVylVczNCJiFVT2hmMGM4ZVVVQTVrcWRzbjBL
UXhgfnUzeX1hR29ZUkEocSFrfVNrU2B3bUBUJHg0Ygp6QUsmfSFSVjJ+UkN2K0xxemNwdVkrNlYo
U2BWOERpRFFybE5scSQ3Ozw3VXZyVlVTQG1aS0N6cUZgdClLNVNiWkgKejI3SV50U1VnSVNKaj40
aWM5JDc5SSQtQzJKPHdKWi1fMjV6XnVoN2oqITRaNDc+Pn0qZjJVQnJUVDtFLXU5VWFTCnohV3B4
dmY4dzBfWT97TmduVT1AKXhufHR5SHY8RlAjMUpHQ2FIaU88PGdmLTxKWDNOaV91ZTJJXmY8UT0t
WGhUKwp6YWZSQTxVdlVue0UqeUg8dWNiWVZ5Oytfc3pzfGw4YzhyaTZUT1d+YkRNKHlJWllpbFI1
bmBtSjN+JWpmYXp6V28Kek0hd0I9S251VG16dGZKX3UobiFCSmtsM1Q9X3dmZFhySWUjJHY+OEc8
OGB5JDVoTyhTJTxobSMySVMzVzkzJCsoCnoyJD51ST1obHx0MDM/XnshQDRLNkJpPCM2UnZzNiVp
NEZZVjt1PmZ2Izh9WiVXaUY1RUB0UkdJcFlfYmUmQihEMAp6aV57PUNeRVorUlpseDstR21sMStX
JGJiTTVRZWNSYnQ2USQ7RXNifU9iMm5AY14kVlV7aFAyfmNGPFV8UEttc1IKel9iWXQjNm9FN2oq
QFUzYzZ1NUR0cE1AOEU/dHQycXItNnJEQztGUWkkc3NDPm8zKXtiV1BsOTV6d09pK2Rle2M8Cno4
Pnw/VHo0QW9xZCtQUGYobTFjciU3fU4xWCMrJDtfMGIlUjtMQ0lBWHVCaDNkS3YyPk0oTj1zeW1o
fWl0a2s7ZQp6ayVhWiNNbHY5MCZNMWdSZUFtYTNXRGQ0cFNXM1FIbCt0UyV5Vz4hSztBenFQKipD
LWRUSUR1bVR4bFopR3N6aFAKej57dnF+PmpFUENWaT01USh0NEM8YUZzI1l4Wk0tb2h7ZmNpKENz
OG9zcGJORWsxNmo+aHVGbCZkRkhrP2Z6Z296CnpINzI8YDQjMDFvKWttJm9aenFMN3hLRkpfd2cj
NFdKJSVNdGF2IVhYbiZhOyluaXtVTV5QJSlqT1FWXy0+U15eMAp6RSsxbllFfjJWODkrQiNQa0Nz
VlNPK3ZFcmQ3NU1NVXJUdi1iS2BTaz0/YmFZYlQtJkpnQHBQSklzTGBXXiVBPUAKenJnND1tO3tx
dDl4JGJAYzJHVnB4b20jX2JKXkFiM19fUFFBaEchYDBvI1g9IUAmQm0/eyNoM00qUHcrd3tNVUhv
Cnp1a3EtQXopP2sldjFfQWdhdH5IRnJFPFVjUTN1QWdtWmdBRzwwaVgqc2RoUnkwUHxWZnMhaHAm
X0FlSUJgSSU9VQp6a0JmRyRVKjEpKmpXSVFqRHslfUU1XndLTyM8dyMjWmxIREI/WlN6JEZYdUkz
Pz1IVz95Z0IjfkklfnMmVHYobH4KenUlfCtjaGAmcUZqTEM9YlE5NHNAaHt8ViY4NWopK28oWG1i
JVVySGFfQDx2bzhTS1dJZjgrSUA/clVRQ2t7ZTMyCno2Sl5sI049JlckQ2pSIWxyN043X0BlJk5l
IWF7UVZhRGAkc3RmKlJpcnAxQ0I2JjJTZERsWEpqdSRVdHx5TmU/aQp6IXRZJGZmWCRKYnhFZzgz
VTBzXipCSH5OMm4lKVUyNnc/TXdecj1yPCk3cnoqR1ZMJiF2PGJWM1dfNz5nWTE0WT8KekkycG9r
P0x5ZS1yMD5ma09gSl4lcmYtSXZ0UiMkMkpvN34yRmMmOEtHQEA/fHo1QSZmcFFUcWRYakQ4bj5K
WlJXCnp3bHFJN1M9K3lGIzc7TVBYfGVqJio4REhWVDNoe0NBU1NaVCNVOzRPZTs4K3JzeUYrfERf
biQte0p2PzBSUFZsZQp6SFMoPHpDJXMrb2JKdX0kWXQzX1pjMkRoeklyNzs1bXpGNVkhQDl4MWFt
NiQ5cyE1bkpLZEJkSlgmaHpPWSgxbXoKenNoM29rWnhJVkk9fSV1fmc0Ti14MVgrfWk7aThJJkZ2
OzA+IWhgfGlqT09AdldJKCpMVXY0M2YrYi0mK19IeDFnCnoxYip8JnpJTWNDPSlEPjk0fmBQdGYm
NXpmYnJhZGhDKEA2Jl42ZURQRTNscmVkP1AzXlE9VmhEJXJWbTUxPTNgPAp6MSZGQUBVVmdJb0B9
NitndnJKJHNWYEV3dGFgdVIwKElRMV9lZXs2dmMhb2l+RE9vXmU5OFV6e0A7VyVHeTxuRXoKejNT
MndXOXI4MmI9NkJGT1MyU1YjJmdjajdzeXs+fiklRCVXUHJiZnQxU3kmaClrVklMQU9DU0xyYW1C
b1RsfWJTCnpFYyY4bnQyKEVmUH11WHxJMT9uNiFsI3srNilBYHt6R2BjYlZVMGQpQ2dJbmk+Sisy
JXpXQn0meXtyfW93c2A/Xwp6VGI4UyZeS2o3Wj8kZ0MmdS1pU1hnMT5paWZRPkElQGwje21WcW4k
IS1QU2ViK0xSUFhASXhvI1A8WnpXQz5tYlkKeld7Pi17dUZrKnw1V3EjYXVLIyNCQmN8N1ozWng8
JC10fiR7PGU7bGUtS2NKX2gxJloxbnwtRGBmJHBhM0h5XlpICnoxQGJyYlIhVDlZI2tfSWtDSjln
diVDPUsxUWM1X2Z5blU4I1BhK05lNmRvKT1sSjtDWmwmdmFLVHQrVHo3SUAxdwp6IUg8fmt6ZkRu
M01oa2JheyZIdFV4QUJGRDxNWXJQN1JBeV51VWpPdTFwX1FmI2tTNkhtSiM7JEp3TGlFUldDNU8K
eiRhfEZGWTw7eSskWmA3bUp7d14kUHRTXip4WEImayttRGVGOzVxYlNjfHdpN1M7ckFrYiN3P0FS
cVhgdjdlK3FgCnoyQDJ2fUxhanQyVEdFMGJjbW4tZSZuVjQ4Zk1rYD81bGV0Kj59P31gQ1IwN3I4
ZS1aez1DN3x4Xk1ZWFV5PzNLNgp6RH1wP050M2RgMzdHbilkREohNlRwVHkqQXNIamJtM0NVMTJl
T095R1BfKil6UjBxV0QqZjxgX3RKJHZ4OXp2cGAKejgpaXZOX0FvVzhFZFJsYGp7LVU2Kit8JSNx
RkgyaVMkc3J8bWklek5wJkhMdng9MFJ4bCp3Xj1CWVlmUXVid193CnpvemhNTzh6PHd9PD1yZUl2
MzFITXFBMDNCaFYjYSUmSzxHNHU3KnorV0xkYWpMTHFqbXIrUG9SelM+M1B7bVB3KAp0Q3xtWmU/
NDleJnlxOEFmd0p8RCU7akgzdlkzeU9VJHlYRmhrK2sla2R+Xl50N3w0TTxAZWlwe3M7JlM0Cgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5h
bHMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTMtcm90YXRlLTE4MC5qcGcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlv
bi1vcmlnaW5hbHMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTMtcm90YXRlLTE4MC5qcGcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjQ1NzBhNzliZWY2OGIyNWZiMGNhYTczNDhmZDVhMzQ2MzIxNWEwZApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNDc5Mgp6Y21hKTsyUT1LPHg1b3p+Tzd0I0RiUCs4fmxyVl9peGdtKSNp
MEVDNlVWPGJAXnlzfU5BekZrOXFsfDcwcXhVdWwKekx4X15aRDNfUXEmd2NCemQqNkVSe3FNVHBi
PFNGNntYVG8yZVNXfDUrdmpaSkphR3ZTNEl1Z1ZCSz0hcmY5WCRtCnpRV0JDJmRmRVIxfDhfdUox
XkB2SiNQMHcpYnc/azJDeEJ4WTAwMUIlYl4jYkUwYTFWYEc1e2xoZ3BxYGxrJVpVPgp6aHpGMVdO
WFJja1VZaChWTl4lTSs+WmB5aldTMDtCN29zTT1MUDFGZHloX0ZaMDhtYGclTjNGVD19QUlMMks8
OUUKekdCSCFKQFV5YjlRd3M+bnMwJj8mMCQjb2FrbzFxNHtzPSZOPjIrenkkVjVUTyVyQzx0cGlh
ZmdDVk5qJWdTWkh3CnpBLWh+QUJQazw1NFVrelQ/I19DSEdWMW1KWHo+PU9FdSRAU2BXRndYN0cr
RVlhQnY8QS0rMWtnX1pYTkxJLSNuPAp6Qi16bDY/clI+K1Nrckl8enFrQ2EwLSt8SSYhUWA3dmgh
bzZjey1gPmsqTislQn4+QT1HUVAmejx4UigmaUlQM0QKemBVJEhxSylWayVwYDZeIXluNERZUH1C
U2B0QW57QE1DT0c+e0lXKHRFXyZXbyFvZG87VU4tekJ3OVEmWlpKPl4mCnpQPmlLZFR8RUM1RDJM
d0gjU0lwUXR4S30zV3YtYlVVKSVkRUs2enFVdSpEQ21SdTsmMmV7Y3N1czFPPWo5cmtuSQp6NExF
Ky1BZmd2PTFeKmY8YV51YV43PztQOSVFekhvJjh9MUsxI04+T2s/XlYya3N7Z0RPLXhEcS1ifTMm
QEI1Y3cKenFaM0ZPP3BTR3xQeF8hd0QyWmg5LXRTKzdyaSNtLXhpfjJMOV5ERUlXRk9vIWR2YnR0
KGM1K0c8U28/eSQ+S0Z8CnpDZzU2OXUjdSU2OyM/PjkkfVQ+bjIoKlUoZ217ViMpIXVkUCtNSTYq
JTlzbEdrMkY8PiUhJiNtMi1qZyZQPDZaRAp6NlBuanlVcGJUdjs8cTRhTCFIV18zY3w7ekJ3Pyt3
eyRkcj1FNVYmZ21nNEAkYDFgcjs0WkdVejIrTyFAP2FKXnkKem52Z19LTV4yTEtfOGJMSFdXVXFJ
VEdEWmQxfTJvOHgmSEcwSVhlJiVIWkE4VihTa1BMQXJHdiVeVWJRM0NlfnpKCnp5UXJfdmNUKzMh
OGJTITlFODUxTkk5Vjd2dDZ6RzghbkdYaSN5QU9oWiVhVVB7R0UxdnolZjIwS0Y8RDQlTlZFdgp6
MitsVjhHdFlYKT5OZHswS0phQD9mWC0xK3NjfTAwbllXeW5VTz1YN1dSWkRLMm1oUmheUX00R2BQ
aktIQGNKZlEKeno3VTxUUTxxeHNTayNMZVc2dlVzcVBGUURvWmE5Q2VIcWt+ZSFYfjZKV1JESG9V
IVd1bjRQUiowbUlJNW9tWHVaCnpUMGhyKkBDJFdlMCh0Zjlkb21rXm9TSzxYKWVZSCl1LWdyZigh
e2x4ZFZYdEhkdzA2dTRafnckdFJsKUIyPyV5Ugp6PFF9TldaTSpQVnEoekVEPGFLZldDRjhHaD1h
aT9SKFQydm88eH1fYTBeUy0tWS1iYyNpWHoqQ2IkalAreFpGSFYKenEqKWRgPHpZSmVaVj0pMGJT
Yz9LKlA/TTdWa3xFOyp5TUE1MHE7S1BlWUdQIUImUmxMVExge2Q3cmc1NERaKWopCnpmVmZoZUph
OWpeO1ZqT3RSSWE0Vk4hNlUme0VCUnctWWpod0tOWjt2SV5nNTE+JXtUQEZKVWZ8QyUmMiN3Xk54
Ygp6UX10YV4rK2lkVDc/KmhXUSNOZ2AmeTQ7Izh1aE1gWExrSSZ2NElGY19oamptVFZISTFpc05w
dzsxO2E/JkQydzEKel9MUmFtMkt3Kk4wTVNmODdANFUrJXpjcHZaK3RXUjkjez1zPCMzcGJGcGB9
YFZqOFV3VFp7dVRoQyZZZmNPeTF7CnpfUH05bm5xcXtCKEdTang/KFhuOW1LTnlOUGBZWShGMCtn
QW8xPk89Vlo9cipiYVQreFI0LWpiNkFjKn5jKCQyMAp6K244SkY0IVJVQ01CZFo3VVUoPnR5Sj1H
djFRSGJsaTkhV3NNV0YlJEt+VH00S2VRUlZ6WFgyK21wc1B9cyhqbEoKejZIMyRZT1ZnKnRCbn1U
PV9RSFlKZ195JFNPVzc9UlhxPW8mbjY9RUx7NUVnZUNzaU5zdj9hMm5hPGwheHo1QTFJCnpFaD9x
KSR5R3Y7JnctMXl3eSFtcSh2SXtRKiRmKUxjMW88d0psMVhoPG9JPVpyTWNAayo8TnZsMGJBcDxs
KWJIQAp6OVVaY2tuKiloO2J7Pzkwcmc/QEVleV40Y1JXYEJqUGQ8KXFuQFdRITc2RSpwIz83fmdD
TXFSUm9feHtMZjtATTIKekNRa2ZeVUhSYCp0Jj0kVSZ2QCNlQGlZY31tKTEqYGx1eksjQ1okYUY8
N2JRVy0pQ2s1YXBxc3gld2loay1GRjthCnpydng9YzlTcHR3UVpadDtoQT9AUFg2NUheRHlial9Q
R1g+d256Wi1Ybj9qQ0d5T2NiVCRzZElaSFcycEtvbHx2cQp6amtDdzVOYWR7KzZuelVYaXhKS1Nu
PktHfnkmSnsmYDV+IzhDeHYrcEdaazZaeip0YFkhLThGN1FPbWJhP1klMzAKejt2eV5QZFY2N1Ey
U2RzKndiaVRKK248PWR0UlJPQHRQYndwalJXdERRQ1RnTGk9V3xUdHI0KVkmdUVySyE9RH1zCnoj
PTg0TFZlT1BCRT93OEI+VmsxQXlxK2hBUyt0UHIhcj5DcnokWD1Odmk5ejUzJkF2a3chfTU0QyVF
fmZDSTs+NQp6U2toPnB6QjdOTDt+KU5VJHRwVUQpcz12QU5sbjt6OTx2XjM/e2cjPzxQekVCalpq
YyYtZHYyNDc3dD0ldmJFTSEKem9Valp2RF5oVDFkaSMxOXNqZWBwdj80fUgxZEpESnMjazI3NX5O
S0J5MH11X2A2encrakI5RGp2NnFDZjhYeWxGCno5KlhzdXJxcmNAPz9GUExtTDkzZjc+ZE1kZUtN
O0Ehbjxob2YqR0BwRml5SntHVS1Ic3A5bVctNiVpMTBNWVRPQQp6dn52ZjQ7PDdeb15iIUhvc2p8
Ums+Zn5JbmE5dF5Hd31ZWFRyRDdwe0ZNUnpuNXhfTDdmNXM1ZUYleD5EXkJZNGkKenElSXxwMjtk
bkBzJUBVYS0pVDZ0dlVFQFMtWXdtaEdTRHxRUlhAejZIKnIzcCUtJCMtZUx3YCUpSVNmdW5kQXwk
CnpVKjhWaG47NXY0LTN6fSQtPm9wRDA5TTBjVV89MWpab2RSX2A+cSE3dH5TYzwqIyoxQUkzbyFJ
Qk1JeTI3aFhgewp6Pld2PzgmSXJ+ZDU1TGthWXEtUDBhVkFBb3pxMUgoT0EqLVJYQXwmbmMxV3tg
RnM0K1JBWDJFKjNke0ZBMlYhZkcKenpEPjRmR09LQ2UrUzE/QG98S184Pk88Xjd1MkgrRVEtflZ4
XnR5JDJrbyR6KmFjVFpNNipwejEwSUpjTntzVldKCno0dmxUQXp0Pnw+YT4/KHZsMTckTmVXb0xw
VExRT3xCbDVGfWZUVyp6cWRtMlcmYXRFczFPXkxVQ0NRbkpoPG5rNQp6LWpYTiRoO3ttfDxhcUht
IUtjZypBMVJaZlJ2SGRiOE8+KGZhVmY4b3o0JDhWVklaNmxiVSVhbD5lI1JLcXBpQmgKejZmcUhW
VklTNXJjRU5mVFlhT2RUZX5wLW1fdDI1d3NsI1V+JDsqUm55VyNwJmc9LS1zMSRoOzBqb0JGbTkw
MTJKCnpIYVlLLTNma3pPSlJ4LTJgPHxfSksrZWA2M0RXTz48T2hKMkVqRnhJRUhYX2N5VnV3S2Q4
VHMreVFxLSE4WFlVbwp6WjhfSj5kaEVDb3FOcTIhQTw0c1cqenk3RmdUc1BHIyM/OHRLI2FqO2Vw
eX1oVzBHWVl4ZjtqWnU9VFN4IVNLcHkKenJhdEV2QDJnMkUxZH17ZHVfIUooPlJWIWhNZEJ7TmRL
ZnA5O1o1NUdgM3AzeVM/ZlV4SHRJeTBBaDspYWpOPl9uCno7cWMwZUZjX2hNSUpZY2M9UjlKcEAq
d1BpWWxOMVZkX280Y1BBT3xzODx4Qm1iamBHV08xfEtCdCFsWUdLSFRqSAp6cFZ3fEx5elhRRCRk
bi0lVnNAfTFZV3xZSC1WVD8kQVUkRn41KjE2fVVlQDArMjg4KTNjWXt6ODVAc3xLSj0zTVoKenIo
KDY+bVlzYDZWU003ck1xdi05aDZ0T3BpfD51V3haPSRZTkxGTlc8Z2JXYFNNa3k5NyRMJTJuUXZI
aF55YHIwCnprRCQ+WmhrWH13VTk7YiZnQlpSd1ZgKjkpd0xJam1QMT9TP0FRJWRJNWRxVXpiemgk
QSZfZ0I8N1FFUUZyQW1ifAp6WVIyQUZwS3t1R20hZW8kejl2Sm4rJXFmcTd9OSN0NUFCa0E5dE5j
amdsOFRAcWB3PT15LVhlJmUzQkNyKWR1VnYKentjZzExJU1BYUNkSFVudnNORU1YIXl7fGBPJHdF
SnYrVFp3MiYhN0VvTnAtSWVLVm5OLUBtZGQkJHFNQFBWMikhCnoyVDFsfV5+NVJJTCQlfWZVZjt7
ZWFQJCgmYF4tamBLbWByQmIjSnZnVlplNTVCKTAqeVI9MUl5PD1oXnRucmgoTgp6ZUBxI3pMJE5R
PnlPblFJJmxPTmI4dHxla295MV5XaG0yVlZ0akNBc2Yta3w4UGwkantCTypZc3R8YHZmaUFfczQK
elRiU25sVHNLclJtRndsOThZQGltVzRXTSNgTXZTPVBOQ0BITXhsdDlRfnEqVzdeM15iUztiJjtW
UztoSHMhNmlpCnpaKy1TKDtabXlIPF9tQlFyZyZyJiReIUpGej98em1idkNMITJpVHN8ZDYpSSta
dTI/RWordigyQmcjRUpQWUxnNQp6VEUkcnwzVHVOKS08Ql5QP19iITJtck11UHstM083R2Y+VDNh
bClsZ2ZLdy1ybEx2PUgwfT16XyhaP1RlWktgLUIKeilyTzwqc09YZ1FhNHBKZW5gR1o0Qm5uTjUq
bzYxMWV2PXwzeSZUbitGTmFeI1JJMS1PP2B9KV5LK2lUazw/bzNJCnpfU30/dyNncHp2QlBmJk1z
JVEzQGR5cVZxXiFIfmlXb2xsaTw+KUk5NnsjUE0hbE1TfmtUJjlNNGszYSE1KjF3ewp6bFNmYyRi
Z0wpe0IwJFhxQU8zU2NQaiElPjh7K008ZF8pJTxpNT5NYk0mN2AyJVk2KjtaRWZEYyZzfjFYMmlP
N3YKek17dyZ0eHZ7a0kpVDVPe1E4KDteSWRNUztOMzF6Vk5yS3FmXi13JSYhP2hAZEFQcWYjb0ZZ
ITJGWW9he1ZUbTFECno3a0QkKDttNiYxZUJsYFM9Sj1vXzJkVmY3enAxazBsanJlKkVmVipUZCU4
ZWgldD9ebW1uSUAkPT9QTys1MDc7TAp6QDt2SHpiME99R1NKNjl9MnZEKEhKX2AhIUVsJVdoYWl8
Qms/SWg0UWpJP0Q+Zm9JbUxoQnIzSHgzRzZDKVpRJXgKeiM/dks1NUdIZ1lTZ2VvRDUzcCFvWVBh
YEluWk0qUzcoOzFTYWJxdEliTkFjJntJKTBOWHc1YX1SbkV6N19mMyo+Cno5SGc3WWw8b0RLPnk2
JF5zQXBEJjN2Q2JxSHkyQ09sVyN+alcoTzViVFB4NVdFUjRqUlU3bWc/b3k3NWZhZUdodgp6MyFC
TWElMXghPl59ajJIemU8TTdmaSFYSXBZaWxSPEMqYDJUUUohUDBVZGBgZSlSbyFNdGR0ZkVHejJB
Xi03UXYKenF3Vnp4K0dmVFByOUx0X2wxamhyekhRXnJpbSkpSXkjSCMhTnlIbm0kWnA9WiowOFlq
STN+N0VGNWk+Um49djglCnpRXzZ6Y2J0NFE2Tig2QVhESjtRTVFhMCM/UHRURXhZPlZLYFQkSjUw
dUFheFlYayFpTjFWKV91bEk2b2dzR2BTOAp6YVFodGtmLXFncUgtb2dPRGZrZSQqbGFLU3RwZlY8
dilJKl9lSUB5bXg0RmFBcyVNP1ZtTHsrfWZqPkY0JlQ8emEKenFNcD1RJWN8UzI3QDBEI1FoMlpD
TU9BSFUzcSlBc0d9Oz5adXYmUH5eJURZUk8/UXt+QVRiZnNlRCFkO2JGUHxRCnowdU8+Z1BhUTBk
PEd4K34tRE12NkNvVT82KX5KMWAzQ0dTXjdfMGtZPyhSfW5NKVd+VSsqPzx8YzUkNFFNTy14WQp6
eVBlWlNuZEM9PiRDe2QlR3F6NnQ4NEYzJTkmUn5GSmhlUTkwZClQczxnZz0haDZYcyhJX3o8Mmwz
QHR6eXhBTmgKekQqWVA3LUtwMHc/c2pIe3IxRGRCKjI/dWE7d0Y2dXhtMzNYZFE2MUFtfChjNUt5
aXZ+S2FLWUFZQ1pFLVRxMTNtCno9KyY8RUFDc15HQik1N1ghVz0xZEcjVlRtZH1XJT9SMlo1XiUy
fiMjI2pFJClAZHtzSDVPTVpEWkRqcm1VeD9oOwp6WCk8S3MhZSY7TUt6Q1JlYSgobyRgRnRvQHgz
OyRiczkrZkgrfjRNPExsQ1o9YWNXbzJ2fHpVNVIraGoxI0JvcDgKenNRc2hwJTI0Kmx3Ky1WeDQr
aHE4Xl5kQFRJP1ghVHokRVVqZ01yRGJhU1UmY01aTD5NI3xBbnR0Q0MlYzQ9SSVVCnpFMmc5MEBA
Sm9pKE9kWFZmIUhMdz44IyNtJWdqMm9tPjhIUjkldUBnLX5KU3hCPERjSiZaKnNAeyVlMyFffm8o
dAp6ZGNOJllCcGllNVhlKXxpOV53dHpPYzVraFBySks0R0M3bilKX1VQV1FsMiowK1Jye2lmdTBS
PmhmTGJteGNRQXIKelJDP3gxRjt7RW1hKWF3KStIJXROY2JjJFEoOHk0X153O29LKjdkc21nXjF8
UXRMSHswVXpTQF87VEQ/PE07JnVWCnoxZWBNcjg9QlcmVFF2OWFRVHA4aF9aQTs/em9Db0BtdTNF
MEVJY30/MkZaUGctKHltcCEmMm5zYXkrN0ZUYWspOQp6Xj5ENGo+R01IOE4pJldxZSVkK1NPMyhF
OFMhIW53Wm54K2l6SXhhOF9sQCVXNDtHUH11PTM1MmQwM18yP2JnMTYKeiVOejNETCMxeHIwRXUj
YVZRT2V4aHJJMGYjXmxnNUJkNWR8WD5eRXZiVlpPcjxJfUdgRShwTFZwS1FjM2hObjVBCno8fXV4
d0B9JSRnVXZ2M0VkXyZ0fHFrX0xKRVJvKXBjM2tWSD59ST1hVTdNSkdvPDU2eSNGc1piYkEyQX54
KSptSQpNaDA2ZV5ReEYmYTNuKyEjTSpzaS0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291
cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFscy9leGlmLW9yaWVudGF0aW9uLXRlc3QtNC1t
aXJyb3ItdmVydGljYWwuanBnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24tb3JpZ2luYWxzL2V4aWYtb3JpZW50
YXRpb24tdGVzdC00LW1pcnJvci12ZXJ0aWNhbC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2YmNmMjk1MTJh
MjRmMTA3MGQxYzczZGZiODc3N2IzYzg3YjI2MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDc5
Mwp6Y21hKTljUWptVSpGUT52TkpOVmdMRzxXaDFUbGt6QWZnMmNWUFhXTWpscEd0PSF4aHhPNEpj
b1pfI15abHBzYksKemJAVW8jZ2VZTiVna1YxM2VjJGlpX2p+YGk+K1pGbXdlfnV7LSt1T1UpO2E2
PD5gazV8Jmo3JnkjWG1SN3psYGNuCnpgKiU3ZTE7clY5dypDYkVYK1dMPnJ+eVh1SG8kTmY/ckxv
ZHp9by0tcGRoeWFPdGlwRDszWEJuMVcrKGhQJT1ARgp6SkFyNmAwLSFpfFJgUUpVWj08Nj1NfCoq
dTx+LUhlIX5jUzQmeit+Q3lGZzcoI1J2ZDJYWHgzOXNIeSZ5TW5PcU0KemVUTEY5RnwqTElAP0J3
THphU3VVbXRSbyF0UUl2VDFyX3ojeUhOZDZnel94eWpMQWc5JXRGaGBDJlBjMlBXQjMkCnpmU1JF
ZGNeYkhRd2l5S3pCQD5fdU9oUGtXWTw7WX53akJMLTk/WEdoeyZzeUREUUFMTSVlK2NzOGdGeCNf
YzMzbwp6RjMrdGZJdTc2Rz5VdjwhNElee01vQ29ZKi18fVhROD5DQyReSEVNOHVDd2QyLVplPFpa
eno7Y3koTzZgbDg4Y1gKel4/RmgmWkBNMXxLWFh2VzNJUGxwV1BtdzxiNj1XWnNoQGRuKCNKS3ct
dHwoNS0rWjchX2xoTGAoNjdec2tYezZuCnokenFTP2pOYFAqTVNOYW1wfCl6djt5MzhIKHc+MVV6
ZnV8entDano/KWtJMSljNllyY3VzTGpHIz5zOHMrVklteQp6bjdRS1RieHdwWF9vbkZ3dG1ZWHFR
eX58MHlfViFoQTReVW9eIVUyQFVzLTRQMWljKVpBS1IoWXNAJntXSDNqczcKekViK34waSs7eSFJ
bGs3cmtTbyYqYTRUd05vRkVeIW0jN2QmZFVvamstY1U/PTBTIWZMPWpTTlg4ZWIhJXo3ZUY0Cnoh
OWN9UyFjO1ArWmp4c1dCNGwwKSt3SV4rNUh5NWRFUnw/VWJrR09YYDJEdSpVQUl5Jk5TdGc7TmRm
c3ExPEtzRAp6OVQkO2BmPncwRXgrXypANTF2UDRlMz14fUBtV1BEPzZyY1daVkxyI0I/PH10PSZC
ZjVQKjxgSGw1b2JQcE5jezEKemlhbWA9Vk5XfmJWOG0mKjNsSjR+SE9RO1dLQE8/O0FRQTtAUldO
OXZVKW4wNXA7X1UlNkJNR2NhYTdNSEw3WH11Cno8KG5ZKURAO3orSVVTYlRtVFlnIT1CWjN+QCo4
VzVCIWZoQUUqdjFFXnA/ZCtxYENiTkJXdmspP09+VXAqX3RVYQp6eEAlTGt7JGBXPWxSNVNNWW0h
Unl1cGs+PmxaP3VlbDZWR2lzbDE/V3szWHIkdj08cCMqKi1HZGpCNl5zQC1ofk0KejV3R1BZY0VT
PyNJSzRQLTlGfE9fJFFVKSV0dmQxdDJaMk9sJX5uRVliMGFrPTdNcV8pPmokSkFJN2puIUttMGc4
CnoyXkFedE55WHRadWIwTEFWQkgkYiR+RHNMcTFVME54bnspaj1+aEgzMktgV1hJUDZtSnl5MEhD
TX1LUSVOZnB1PAp6aHBvbiRLWG89VkVjUDsqTnl0Wih2IUR8O2dQTkxOVSoxTVpZQylZVjN3cmRA
QnByVmc7Z3tseWxtK2UmMlRyKDYKejdkXmdNYD9KWG9KMmN+cVQ9aVQ8YlB+VjN5U1pJNXRRaFNB
aUtBQVotVHA+PFZ6aj9lWG1OYFNKb0BCI1MwNiR8CnolTkB3LSFGRk54cGt9TSRHflVLNFJ7I0Ff
WDJ5dCpYenBrbkhna2NNOGZBRSFmfDJQekomLSZVZSo+bT1hNVFWPQp6Sj84YXJAPWhteillK3BE
NTMwPThlOUl7NVl1LWVAZ3I3QCtVfGM0QWk0R1F9SGskWmRKQnwwMmh0SUBWeD5CamIKenpVTWA+
UWlrYmB0Q2hOVXh6emxBWHdHMyh0LU0kbV9kMDRDVFAzeSF5WnhtZnAxNV9iPmstaE5ndyVATUlf
dlYkCnpXcHQ0NiVVU2YyOVM+Y3UlOTF0REh0cWU4THczKFZ7c15oM2JaJiloaVR0YzxNd31AT2E0
bUY8bHdqazQmPkczKwp6elVfVlFoPk1VUWJHRncpZUReZHBIUHg/PCpIfndVWnlVY15ZRzhfWl4t
M3w3MUgraWdoKyV3XzIjTnNKKVlPMWcKeiNUaUUlVHpPckBfa3xNWmh3alUyM0JuZnotS25aNVVQ
WVpQNWFTeitCSWItKFU2JHFUZnh0VkFyPzRkKEVgbjk9CnokJXs8dHF+Zik8OzN2ZTQ7cSo1Zjta
YCVFZnBoLSVgSGNxeGRqZCsxO353TWRPJEF0Z2dHKUBscW01TGZOS2x1ZAp6T3ZNb1N0Vk9LNjRm
ZiheIWVvITVRVndER1A/U1Apc013VEZeODFPR004eiZNXyF9RzEhSmdZZDhra05gPGNvTHwKenM1
Pnk4V0dPWihgWmY3d0lQSElWRHx4dGd4T2FMZnwzQU9nVW9rcyo8bkxqXi1Afkg+d0Fhc15VZHJx
SXw4fVgpCno8PEFXRHNlaGQhaWFob1lJTzd4UDRlUCRFYX01bD0tdDY+bWlJNGxkUWsob349IUxh
PmNJVkc7eEYmfXZkNipNegp6OHV3MnR4R0tMJjxWfXcmdnE+VmFhPFVvUTNafSh6PDUrYEI+LSU3
M0p+VFEtPmBGRV5HSCYmbzk9bkF8RXY5cygKendANjBuWG5GVSRhVDNuSWFwMih6LXA7e0huJW5P
OGAzMU1HKFZSO1gla3t8UmIrTVVNQzI3cy1lYyQwZSoqPFEjCnpoP20rWDFHPiQ7WnVfbyMlYT5m
fjZATXRTSXFvbXl4SHtMRjtrQTRoKTF6WVRSYTJ+SSpEfFNpM0F0QCttVFZ3WQp6YGxzNkJ1TyRo
c1AwNz0mO1VScFojcGokcEU0JXJpQ1BsVEE7elNkUUJZJl9pUzE3O05HezxAY29mUEVqX3RQbCgK
ek8mMlF7SSsoWDl6flAmRmtZfTMpenh2OC1teE81bVFBSDY/UDYwMlQ7Y2EyKnpGbEc3Y2YzUzBA
YnRhUndeTllrCnowPXNuT1ZaY1U9KTF+WStZeTxaYyQ+VXJ9bSpaO2g3eDRaZE8yRVRtVHRQa2lx
KUtUbmE+N0NrcWFLM25JNnFVTgp6O29PakJ2eyRIaVJGPl81OyhwViZmM1VZQWxadElkK2VSb2k3
ZzQocUhsMVdONTNJcmxuM30/V01WXnxrYG5OSTEKelEmYlk5NEQwVCtnS1p9NXh3c1ZnJHZ9aVpj
O18xcTs7KHZ7Mz1BZkpgUGcrMmM4fmhiblFLZzx7VjJ1PmU8Kl45CnpgWVMxKUpZZk0jKGF0Ym96
bn54VzNwaSRoSyM4IXg1NEZyS2Ffa2ojRGtaQT5uJHBWUmdfdUE/a3NjRjVAdm9qTAp6NHJyNTtH
Y2liLU9faUh2Jj5hV3I7bkg0PUt3fU1XNH5sJGAxV0FXe3NjfnU2cV5Zemg2TVc1YTM/fHRmKUJB
eVQKemAlVmBeVTF6RT5veE84P193M150ZCp1cXVsMlJmand7UFNxJWlQb14jZkhWSWslM0x8cCpQ
eHhTNUJoe0IjPjAqCnpJIylVN0V5VHAtOVk+Zis/P3tFOExgPFo2cVJsNCFITEx0SSs3cUA/SzU7
NGM+VHVnWnteQFowb2xRaWhqZEZDawp6N048NURQLUthVXFoODNNJTVwYDtJUiFgI3FGUzgtN1dP
THw4dExsdl88a0JpX1NaSlJTOTBXK0pEPUtwTzs7YnUKemwtMz9lX29qMiFgWUR1e212Zk09SmZD
TXExfWV3XjR6QGRAMyVSfDtDQmRieXFJNmhYNXV0OXREfHpGJG5fNzBxCnpUVXtve1l9VH44bmFp
PGxeUEI9PVUrJndwTTJvJkN0RkpyYzV0c1ElSCFzaGRBVFJRRUV+TkUkMz5mMiZAIVVFNwp6O252
WVFweHRrdzl3UTctZ154UEtkfntiMjZYeUo3NEEqYG5qYlAhXkBofWomN2NrMTQ2bShuXjkpMlBx
UGd3VVYKelBkNnpgbik4Z2xLMDFETFkhP01odCswdjBAaV5Tc1pIfnR3aUl0dX09ZSpkV0x8c1NZ
Vy0hMC1Ae2B4TXFIN2RRCnpMaU59NFAqeUk0IXh2PHJSY2c1ZDFhfEFnZkxiVFMkckN9WUJGNihi
PU8oWF91ZT9fP3lqVGllSm5rP344YG8oVwp6Pn5ibG0oSnRPJUtqQmgyNSFEVnJUM2orX1RHNFBy
Yzt3MEZBSnlrXmBveFlYPT8hNjVYPFdYcHtLOSgtSzNiNSEKenRuM3pRP2FkSUsrVT0tMmEhfD1D
M3l1IUwzdlR5K2x1PkFwb2dsZ09vamQ9Mm49bHA/TXI7QTYmU3UxJnhhUH5DCnpVNXtjKGIwRXhA
Kip6KjhkZXVHPjFfdml2RmZZQClqVUFiISNnPE1VOV9eNm9yajlib0d0I1BaUmByWn5ZUm1PQwp6
S2xJZFJSfE5faUdwbD9MY2Z8I0I7ZFhzZiMrMUNfSnxaPmQ0SntMeE5GUElKNnQ1LT9aZHVBVnlH
JDxMNUd7bHkKelUxVnZ8Ymh3dFU8ZmI3QXFaNWhNTnY+Yk5ifSkwQyNERDlsTERNSUU3OGNpI1kl
bCF6MXJmdH0zZUtFNXdEU3haCnpFUXczPSVOPFleTHxORnhrYX1qYnhEeXMzRGJXZkJ3bCs+eXZM
cGtrO3h4Xkg9d2F2bEY7eHE/TjQqaTJtKlBHYwp6eDd4dF41QE0jeHdjcVMtPyFPK0kheDZ9VWpg
S1FaMDB0UnctfG1SLSFNPGRBKntRST8zMWhHYyFmPC1+QnxacHsKej1hdU1eeHBfeE1sZFVVSSM4
VWhAKGo7YSUrOFM3I0pOMVJlMjNWWGEyKn5kUWd4YyVGSXp7TGd7cCtmVHMjNSQoCnpSYVdxYWVq
aX4mWTlJS0Q4Vk8rPXk4e1pePkR7QClYVE9DVT5nOFdqRHZCK1p5c3dUcFBHPTFtV0FmcXMrfVhI
cQp6R2shQGNYSEtzVjM0T2MxbzgqMnEpUk8mRFc3UTUzUileViVlIVIofV5mOCM3S1h8NGAkZyFf
T0YpcX15dD4+WXEKemdueDkqam0yXmFJR2NiMXk4Xj1eSjg+JGUkPDZEPy1abEFgWXFGKDwyI1A4
OSoyamQraDxGNzVDbF9SN3QlZnpTCnphbENBQFRGK0Q/SiQwO0tSKHN6bEpaP3F5T24hY1gobDgx
WUcycUw1bVA0ZF42MVlXTkgoTzAyNlUrS3NqM34+Qgp6K0Y1bkYkYnNPem8qIUNhQHcoYmY/S2FP
ODlvP098RHFXTChyUkU1KGBYTzJxRnR0OUZjcyMmcno9YDZjTntTQHwKeiRicWV5diE1Rnw4bjV1
JSthSmo4IVo8ZU8jV2w4WUpWdWZYZThAeWBpJGFhQUxHelo4a2FiU1otJHh2QGtKeHtICnoyZGgz
ank7Sks9MktxaTk9dCotJjRCTkdEaytkR3Y5QDR8ZWZPeiNJVDRLPTNoYHd4eDVxYDxxLVNrQ2RF
JVZLTAp6X313YkBvVVQkXnRiNTBebUZme3dkO1Z1VUwmMkYtcFZBdUw/TV9yNzd7OE5KfEFQSnVn
cz1HeiM4NzhNSERjbVEKeipFPGlyUGY9I3ZNTyhFTXpJaVQ8K0dAPWczNVNQUUhWeUBrWX5IOztU
NTkoUSUkYWYzQ3J6VXtQTkhybmViaVAlCno5M1pkQi1CPVg2WXM3SzYyTCMhWmJKT2tNUWBeK0B2
YDxWM0UmYTVTVThiIXJhSVd6U0Qpam8+aHxEeH1xPylfZQp6UHVFYzUleVFPSTFGIThNZEZVVjkr
ezZFWEdaTTtGOzwyI3dTQ3taLXlLb2pybEw+emhrTiFQODdIPENEclI2Qj4KemFZPTZQeCloNHok
cndvZk5UfiEyekl5R3MmTSYoZzRyaEhiemxLayVeM3xeLTxBKnM/KEM3bCkySWZBeUxSTXwlCnpD
bVE7KkozMHYzSmYpJFYqaWUzYm5KTzBBcmJHcHhRQD5xR2U+U20zTDMjKFgpTFFNLV9gZDhTZ1ZC
bEQ2dSE4Wgp6d1hfZG5JUVpNPUBJb31BOVh8NXAjeHYlMCEqSVJqQENXS3Y9ZT58MEkhP2ZUSFJC
I3F3fG5LI3JDUFlNVSE2TEsKeipvQ3szczNZdDxxZWJraCU4YVhXJFk1Q0poaVhMSUleeFAheEZO
ZiE2bDlgJSM8XmxlWiVWNVdWfVo/d0pXajdSCnpQVHBmX19YTChISD4yfUJpNyZJPjRXQmxiS2dH
RD8ybTc/amE+cXBxa0l6UmBlVmFzbm15RntyKEZXajdPQT9Sawp6NWJSWWhWdXAjRG9fc09PZGs8
IU5Od3haWEIzNVp9SHBfd0xPTE1OVDVnOG9eMGpTRFZySFNIPVRCYkdtQnZqRlIKelRTRipJWXZE
fFg5WkhZMmNiJWNqSkxfJChJU1hHe25xbEptIyRhZEBRWFlFRlkwQSMyLStibVo3akA5bXckUSVi
Cno7RVhFNll5KGJXPnRMV2k/ST5geENDZFghYEFiVT1yTVM3O0F9PzVPT2hBaTcrZWdJLVlKVURV
Yi1qdz5mU3E5JQp6P0dBI3RRP1JFLVREU2NGKGN5cEZRRmlpcCE0N3dlWlBhYz9fazxqZUB6MiZs
cFVjamNsPF9heXpqTTlJPm4hMWQKeihYQUJON2Q7Xloha3sjdyZ5N21RPWM3JFIqRGUjX1cqLWpr
SjR5QDdoJDM5NTloe0B7JWl5cHNWQF52eHVXNzhJCnp1NW5HbzwzPCtNakF8LTdtYX0xLTJkNUFL
WjMtaktsKG18T1VeYmhiM0Y9SlEtKXtTPktTQXkrRylJU1ZzNikpPQp6K3lgVjtjUHMyZ3BUOzV4
UCo+SGEqdmhjemRIIyU3SFY1a3FDZ3F9JG8zJmhpM2dSMGRJMS1NbCkmaWI8QURwdyQKekVMYWI1
eSMrRCNAMCN4M2A2WHk0UiFHPkJ6Y3puQWxYRjhwOStMQVp5aG5DUUU/NURvUW84NzlDeEZvYFlv
WmBrCnomdTZ1YDM2bkN0b3FsZXBLNUp+Qkh4KStOTmUhUmhhXmNNMjcmfSQ8TnZuQjJLVk1iKnJT
N1l6ej52JlF4eWJhZwp6UDtoJDgpQmNNY0d5UG8kd3owX2dUTzZPP2hfaWVvQ1U/RndNKTUwN2xn
TDAlZEVpWC15clRRSUxDVl41ellRRk4KelJ9T0E/KX0hQ3FyN3YmMmFQdlNPPzFiQ2lhJiFfQ29o
ZDJJZk1rIX4/NFQ5U2s8LXw2Ul9USmB4SUZ2UjYtPkZLCnpLNTBDWW5mJl5OQlooeEoka2lqenQk
JllTVXxRPHJjWUo/YSErTjcjSSMxQDJLKlJHNmFNTCZGJCk8N3s0dXY7dQp6ZkdET1g3fkBRMEda
b2tHK3wtYXV6PzFNeSpsfUd2SSR6e2FWZilRYXUtT0JILX5WcT1fKWBMOyR5NUlXUW9PMTAKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFs
cy9leGlmLW9yaWVudGF0aW9uLXRlc3QtNS1taXJyb3ItaG9yaXpvbnRhbC05MC1jY3cuanBnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2V4
aWYtb3JpZW50YXRpb24tb3JpZ2luYWxzL2V4aWYtb3JpZW50YXRpb24tdGVzdC01LW1pcnJvci1o
b3Jpem9udGFsLTkwLWNjdy5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3ZWQ3ZmFmYzE0NmUzMjJiMTg2YjA3
NmI3YzIyYWRiMWI5OTA1ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDg0NAp6Y21hKTgyVClV
TXcrKzNFMFJhSUsycT1ubE0zND9ybHElQUApRFhCM0s/dUY1XnBaZk5TRTxxaUxfaTEtc3NaVWkK
enopKz5DR15JKzwmOzk+Kj98Yipubj5YJitYWGN6KT4tK1hPPitIU2VCWXF9TTFIdTYkemFPT2s5
Ynx2VWU9UjJeCnpBLU87PXVEXmxieSY9djUkTmBzJFRZeVV7aiE9NmlmTVl1VjAzYWNAMUF4P2tG
aENkPzAwPHhmbDheI1BofXs0PAp6ZkNPKytnNS1rblNKMlE+KFVEVjdRPEQ1MjJzSXJBQl5DSykw
RCRUTzFXPUhYbGxeQkUyYEwlKjF3c3ZeVlBkfCoKeiVmYyRvMkk1b1VIfUpmdUx7M1VWTXQ7SGw1
MHc7ZkBrQnVocSs7VHdYMSpkMFFsVmpDR3FCXjZQKSVhPl5kZTNICno9cjEtVDBnP2clTmBRc3VM
X2lifksoUyNYPChLcnt0LSkrWnVOTG49WSZZKFhfUE5IYEMoNyZJQVRCPHE+WWRGMQp6PnYoVlZP
MD5FSF9pNjAkTkdIa0B0cGx4R2NpekZmbnBnUVRCMVdFPkNxUzhmcyNBMlRHN2x+KGIySkprQ3ZZ
X3QKekt4Qz8hPTxQdXVrJEhzMzNecnxMdiRaanhhU2Z7JUYjZF9sTSVTNHVOfkxxdmxMY2EpcmNt
ditaNzcjYz97ZyUwCnplYFY3c2JxMXwzS05qO2A7QXZXZU5UKDFWaS1NZVJabnJtQSRiJm18WnV3
d3o4cm9JeEFiIT1gP35fWTxffTVWKgp6QjREY2QmfVMtdUJDR0VTMyYoU1lobWMxUzc3dVokJVdJ
UnhpSjhVYm5MVTFrLUhzYkZDakBMVFF0flBodSVrMEgKelUhUispPXFyanx5U2Y+cmtSWVVKdi12
cEgwX3htfnRKYXR+Ml5HeG12dyRye0w3cXkpWEFydGAobUVMPFVgNkUwCno+WCE+JDNuclN3ViRF
N1dKS1QmXj8zUHtNJnpaNlZoakpATzJDdGBAKWFpbUBwWX1OZyooeH4kU0pKWHA4ZmwhYQp6V0U1
JDslRyZDdkApeEB0I352bHl7RzNQU05EaEE8PmNgSG1EPztCazJQS2VgU3ZodTN6RmApVjN6M3xV
JVkqcWMKek5tQ15xITkqcSZeNTdrRFAwVldKbnB8OE1oV18xZHhaZUNSK2M2WVg5Qz8xTFgtRnoq
N3U1eyp5WDBedVcra1AzCnp3WGZ2RXFOREVYJSNTdD9tI0ArVSZUTFErYlpjck1ZY3tWeWM9P2gl
ZjJnPXtxb3IqemU9bGFaRDg2SmpiOGpFegp6YyNRQl5JY3FhJS02Rml9bD44aitXbENBfXBgR1V2
ZSQ0ZU5KRD9gcGt6QnIzNTw4ZW5KR3hSI1l0THRtQGRGLSUKekg/RlZsXzgqRnY2OUZIOFF1cHE2
Xk1LbEo7b0hoeyE9a0N0cUtMPH1DZjMtck5wR1ZHUUp8OFlBKVE4QytCaj5PCnpAbE5oQnQhe1g3
R2o2KXV1JG4pMHBeOTIxI0hpcEFkcz9hWWxqQDRWM2ZWS1JnXklTZl93Kzg7amlvdD92WnEwcgp6
KiFaVGRWU0pmaU9HK2JRJmMwQ1J5PWByK0p8Q1AzJldGODE1I2I8Qz8jdDAzcXJBLXkhKU9JfTVq
YkJYSm52Si0KemBHZjRodXRhXjNmMX1Mc1B4bDFFY0NOfXhqRH09UklhKGJ0ckhRUllqRE92OEot
QkJrK2ZjWXglYEREeClvLWlNCnoyTT5ZViVQfX1UJDIoP151RVhMQT9FKH4lYHhVRHk3d1FJTUtl
VSlZWSZlLU4rMn58RF87TkVkR15JfiprYX1nKgp6JGlkaHtnNXVCKkhBfnd2X3ZVVEJpR2M0Tit2
SjR9SG4zZyhJZ01MWntuVXxAQ1FpTlZgSGI0ODF9XyEjXnhCNiUKeiRZK3R2d0wyblIjRjVAbT5i
Pj0yVGZRQWxXTnVvPz90ciFQK2h+YFpeJnJiJER7akNWVmNpJXJ1SD47Qko9dUVHCnpUZFNneXZm
M0B4YTVmNCFrc2F+Sk1ATFJDN0N5V2Z3MUB+MHklRSM5N35DKVFKLSF8PmtNYTtpelgoTVU9JmxU
UAp6OGdUeDQ5Z1VJNkBfbEFLQyMtI3tsNHAlP2p3cyRJRFNOdWhEWVBlUEprNlhqYDIkPlEwJj95
LWpnTGAqbGNqUioKenQ1aGdVWVRjQUhtV1k2fU1qXkx4Sig5VjVAen1IKz5GNDxHX2xLVEwqRmN+
Uk4jZHNgMSpAYHhYa2cpSSFJKT1LCnpWYCExQSQxdWlMRTltRE50TGN7YlNzJU8jUSFBVlBUQkgp
NnNYSUU1cEpnJDFJZjc1fk57NihBPGlSI3kpRiVXXgp6cGtKfns0b2s8Xk8wIytGPl5uQlpZPVU9
cGhBITwtSnZObHtyd2A1IUd6VEgoQSVZWWEhJU8jd1ZCSD9DJHtUK3oKelhMYFUzQSFtLWZYdDlE
VD9uVn1xa0FXN2JGRXNydj9KRiZ8OX50P2RXZWQ7UlVSejV4a0ZVMExRZVYjRntTdGY9CnpfQjk3
bT9VdXdXbCQtUz96b2d+c05IdlYlZThxV2NTaGhSbUwmQzlsKzRIMzwyOGBKNUsjeTtediNxWXkh
az1ObAp6dz1IJVhgdTA3TFhafUwxbSY7KCgyX0pEQ2tyNGEkMX0zMnxqbFZRTSNmZzU1ck55YE9X
N2pTX1Ihcm4+ODJGa2IKeld1I3w1aj5rbUl3KW8wUEI1b1hjRWUkaEZaRWJjJlYmZz08YGo1OHA8
Zl4oSmdCNzlhPyk7QmQ+c2QzbipLU0h5Cno0dHZ9KWg0MFEzVXFgNW5gZm08SnY2b01KSmx7KSNp
V0RqNTJeVVM5S1hsaXQ+SzR8X1pjRmV2XkVLTmVSTjN3OAp6eWs0bVJ1QCU5R0pMfTw4Y2k4V3ct
Z3dEajNXXipMN3s4Z1NtNz9sV0QxYWhZWVhfK2dQUWNpbXYmOFNkaiVwTkwKejlHZE02UlRkZ3I3
RnBjVjhCcClTcnVsR0AzN0ZEeyNVMilGOWhWMT9AXzwlTitjVnIwOExZaiomU3ZKPzM4ZHMyCnpo
UHcpYWo8fUBqTGU4JWJrOCo7NEYocyMrTk9KMjYhcz9fIXhLWXk3amglU1V1cD5Vbm8wbk9rVFdU
QUY9aG5nTAp6JDgyN1dVd1cxYlpgWkxwUXkwV3JCSmNDeDFkdT1wS3NoPztVcGBgTzhlb3l5YjQ5
bllRWElzPShZanw+RmVwP3cKekZuTUkkWGp7UmFqKD1lRDR8dkJUa2xrIWBQPzQ3VkxqaloxNEF4
TSQrcnBWOWs2eSN5Zjd4bHFzbjxFdyojQyVwCnpYSTUhK3hBc09maWVCYlUhcHslZDV0KDYjZDRH
bHlIZFlDd3hvfVYqPV9VUnlhaHQ7V2ZyKl4mPnRiP3hvQzRQaQp6JXlmaTxMZztJWnBRNVZmcDx4
cDkzTkxIPmM1S1chb19SdU9BQytMWGgzUCRSYmBlS147XjE/KC0la1ZrKz8mPzMKejVpZm85ZTQ5
c0I4dCUjSF5FQCs9aXtFcX09QT9SSHRYfXk+UzB3S1MqYj4mR1FSMXkkdjFSNC04UDdWRWIrPTVk
CnpiWm9MPVVIMHJ6P1Q7ckI4JG1uZDIkc0BaV3ArTFhVfUIpMmd1Ul52K2k2WnQmTk09RmFJVSVN
YCF2PH48fTNFYgp6JGdUJDBYfURsY3gjd0tGRWolUiNHOSRZKXszSkE+eyhWdCthUnF0Nyt+QFNa
dExhJVhoXnlmRzExQFlMbSElSigKemBFRHVteTtqPSZsWGFZK29CaTBoI0NrJEtoWSlSWlo7WkNz
eTQjJjROJW5CfHNeS0VNWnFOSUxHU2BKJl5UNExsCnolQUAkV3hZLSZIXntEflNlMkU/RnY3Tklz
dn5pJllnQjNZWDhXWUtKPEtpRmp3M1olb05MNnFISzdSVjVJSSQjIQp6a2tlYX5ZUGpSMiYzZ14w
dzVZSXBfTDV8WkZEe0F8Z1RIOCtYb0dxS0gqMDB9VFotSTRSYE8qKF5DST57eHRpU2QKem5JP0Ji
O19efVc7YTV9bHQpV0gldkI1emZGe0JCM2FyeFFhRyRsIzBsfHxSc041SmEjNG5PK2drPFBNWldL
N018CnotPmAqZTBjKSgxV2YqVjV2OEEzIVo5NyQ1P3skU0BHSXB8TmAqNExISn0+byNWWWxyUTMj
Yj44O1EqSU94ckVRQwp6I1dnTyRPYHRNI2MkR2RWSVFhUHpmP0lFQldAb2VPJFZPO0t1NCU/IWMm
Z0RGX2FKJnplc3dvZ3FgWSZRN2Jqc2AKej5wJHB5eW02KmBDQnkkVC1ePkQoLSM7a2BAQVBgUy1M
TSh8YzI/Qz10TTZTUFJ7Sjx1dnBDP28oJVp2PE5YeSVaCno1OCpHa3ZVM249LXREVk1KTjhQTCM/
RDxgMFd8WV9iaURXbl41dzs0RTJuOXZmWUIramM+MlNZN1p+O1QmUU9OMAp6YUs5QklwdWY0MzQ9
YjhOIW1fUUF2VHc5XmFkMDR2SiZMLXRTWipFWEhIVjZHcVNRSFhUUnV6dldta0xxdCY9bioKenhI
ITB8ejl4bFA/XnZrPmVJcXBnKlclWC1RdnIqP2gyJTAjY18qRl4pPF91fGJlMlgpQVZXYDFgMT10
MjB1aTglCno+PzlRSGkkN1VhYkN3Uz52QT9ndWNkJkEreUV+IWFePjhDIW9FKnV8dipNMUI8bXd+
TiNCU31Tb0olTDV3cHVFcQp6MzhtRGp4ZG5JM2t3XjhuWmBXVChTdzBEOWwqe21SMHlEamN1NWRi
eFEpfE1wS0ZPRSQlLTF+Yy00VUpTMHZuPm8Kej07c19QZzVnfXpwNk1CdDR5JktCPkgwUjk2ZXwx
dkJ8VjR9P2N5YVMpeT15PHVBb2RiVXNmdUdHeGUrfj41cCNpCnpMRzZjS0RIPU5KRkw2XlRSOWM8
Yj9yS1o5MCsrN28lUzl1KiQyNSZwbVFxUkNIKEhvbVpgOyVoNSY7cFJNMF9PaAp6JHtHPDZPP19l
VFZYP2QjPExYc0RCJHQ3ST1IQypra3NBVitqYWxRUW1XPW1iNE1JJXc+JC1OKjFJYGx8NlAod3kK
ei1FP19wNDQtfEk7X15WTE5UXnBDMllUUzFyaGY3PT5icCNFOG1+ZXRkSEdEN1lDeT9HMEBJdjBl
YE13e043RlRsCnpiczklflJufUwzKzFrPT1xRWl4ayYjJXkpbnlgd2JVUUNTVUkhZDI2TkViJCE/
K3U2WWlhRX5QcDxpYHFDSnR5Owp6a0QqUkspfX40b21JVyRORytwdW8qKzxeSXdGc2AyQF9VKipC
cG5oOzlRJjtndXxhKW5HYXYkPF8+VWM4WT5lU20KekVsSypScjhYMH1XNSVxOD9raFBaeDMpZUUy
YDxiR0t3QmJvUW0/cktgYCoyZHdWPTdQPWFpSSVFbWI7UWYyZCV9CnpTSDFZOXBVV2IjXl94PXo8
KUZjclAwenwqMSVuQE8lSl8oYU9eLSFoWEEhUENUeG5aYlhxbU9GIWtzKGliYEBhJAp6dztHdGBp
ZVcjNyVveClSb3t8SUYjSzBzfG12e3xVTihWa2w9N25rRXJ7OCpjV3AoMkM/LUQwfG1wSik5aUUm
T1kKejx4fEM0N2VAMUUzSiU0WDhJZFdna3piQE9hcFpUMnFyWGYxTkFMWkFyVF83N3wwMFQzbVZj
TztRU31JVjVTRzRtCnopPXtfeCM+RnBgQERjJk53cXJoT3NGRzIoYGE2ZjkpQWFyPVdCfjhGdVo2
ZWs/MVFtPlRaRER2P3NkX3VscmstUQp6YGFxMFQ4WD4jO0VPVFFQLTthQXJ3ZH0jU0B7SHwzJDN3
Uk5RfChxdSpZdk9wUTJPaW4jMG5PQTN+aldnMnhxSHMKelItb0F6WWMjdXk5QXtzQz1zNCkyOWtD
LSVENUM+dV8wSmNjYSh7N1hIMUhOMCo3MjJfNjZwfTgqfWJ8O2xLN252Cnp5SkdKVGc0LVFid3lS
Jk0/QmMxRlZYbiEjdGRzPXZ1cVpDd24mY0Uwelk4OXcqSTdMMG4oa0xoSit8Vi1ye1RrNQp6KEZH
PGZmUlRSPkJIS1V2PDFZYihUSHtqS2szV3hHNkQqVU1AKnByWUA+STxQbSM/JGI0OTBeVU95NGI5
cEVVSEkKellicD17QHJYa3JwZWJXZHk1NWJHUUFhI2p1MXl3aGAwVEJ2VUY9bjFjI2wtNippblh7
PkErfk1DWm87Y3lyWGNDCnpLRTxSNjxPUDt6PHVFVnpqflpRO3U/RUZNUS1QUlMrPzFVXnBTQHBT
dGZxJD9fZVNYUUNKfHV2T1AlQWNXbFZ4OQp6cWA/a31He0FvPmstLSk1M2IqY009UlFpVlEhQU8j
WTc2fm5rfEo8TUotMDdmPkRydVRAIVR3ZEhPSW9qT3E8aCkKenckOVAxcVQ3QEZVVHtvWnJ9WG1H
QUw8X0xBckoxVyt1d2ZrXl5CVmYlVyF2aHNTdyEqRytRe3lQUVRpTTw/R2l4CnpZeT5UQzstPS00
SG9ZQT5DVTU7T25mQF55ZjZHK3lzeWdZfHIhcW96JHZ+aClHU3M0TmlAYFlEPT5mOXZwcHBNcAp6
SFlDbFlQSmpEKjJvYlJSc2ZoPyslKzJ9KEpFbmtmc1AhNkRQX21Dcjc2bWgrN2t7JEhzPjU1THZx
QlN0QmBCTTIKekIpdlRCMVpJfHpoamZfPHhJWEV7b2sxPW5XQ0hSRTtTWFBsJEtkdzU3R15WPSZN
KUx+dE4zT3JPZmJXUlB0IXM3Cnp5MFFDUVVSTTUqPnVCQXlQcjl2YXItRzFvTVRtS3txKHc2TD1t
NU0tMWEhWnVJLUQhbnpyJEpSOzQqQnp8TT1hUQp6U3NKZkN8QTliWFlvTGE+ZEJMI1JkTihoLUk4
QW54dm0wMmhXZTYtVlRrND5mQjNiNyt7TnYhfjBRb2dCRkdhSksKem8lMndnKi1DbDhnKURDQlck
UHZxN08rflNBanpBNWtGK1Q5QUk5KnZNbGF5I0gmdzZ4RmN+dzdhdz9hZ0M0MEFGCnpzaFQpVnI9
OEghRiNxVnk5S19BR0sjQ19DdDI3ZjVUPzhJZ0c3Z3NhI3kqKGdUY2A5Z2xPU1kzKU1UPGFSOyp2
Swp6ZHZQR2NNK2l0eDw/WXRZOWNeJXBVT0BpVT9PVndeRmZ8MkRocigyaERgc2dDNDhKR3ZpXkQj
O3J8JiVzJXE9ZWAKemJ7PzA5VigzU3VrSTIhUyNHcCo/Yk08TilZSUg4UHBOWVRIQTh8PjNfKTwt
K3F1OXxBV2dCclRMSCRyWEhsKi01CnpoaGt7ZXtRO2JBcjklfmp4dTMpYzhGezxMJDRjPUFPZFA+
RiZ9SDx9TEBYbUJ7YnNzandpMW9gXllyTUE5KGIlPQp1eW58RTVOamhSeV5wX0loOysmQVdGbnVE
O2FCTUJNZVdRO0RSUVc5PkxpejVXTXQ1UGRnbnQza3teU1AkCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5hbHMvZXhpZi1vcmllbnRhdGlv
bi10ZXN0LTYtOTAtY2N3LmpwZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFscy9leGlmLW9yaWVu
dGF0aW9uLXRlc3QtNi05MC1jY3cuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0Njc5YWVkZDlkOWMyMzBlODg3
ZjU0N2UxNDc3NmJjMDQ3OWI4NzIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ4NDEKemNtYSk8
MlQrc0UqMmhCPWNtKTl8ZzdnLXBSezwlYU5EfkM0Y2FXQ1FIR3UjRTV+THsqTEo8Tz9PR2k0UFJ8
YCN3CnpeeGgwYllDdVhyWUEkISlANE1mM1hXbzB+SiMlKkUrND11PV9uRVcxWFUtQykyKHk0TjBN
WHchO3tQKn1mNyQ7Rwp6Q25oNGdRbUAqLWd1bllpbTxOeW9YYkMlajg7PX1jKmdGOW5LTEcjJEJF
bHlDOVIobTU1S0lEfjB9Izs+NXpgUzcKeklzaXhqNSNWWUdxQVRLbWpxKHJqPiFmNTkqTkZaP3B9
MDxWamh2SmcwM2cyLTBjMGVrQiE3K35BfEBmZFFZaCNzCnpaXytieEdjcmxzO15CUzdyd19TV2lJ
a1gjZyFHRjI2RDA7Kl5+a1Ejaz5CS3xwbDZXYWN8XiYwT1clJUhRWURAVgp6MHd2NDxzSURkP3E5
ZGpRQzw3d3M3Jlp4amNORD1fOV97NChhVkI0alNvalVIR2BsKn4tRGZEVi1kPDMkSD12JSUKej1u
SGFvT1dVS21vPlFNSTZYdEIyRF94M2M9YlE7YnRibTc9d09TUW5qfn56UlpDJCV6ekNZI1NxSUtW
bW1FOVc3CnpxUlI+bTZRNCtNUXk7RVB5UXYxUUx8JVd5d01VRCU+NyErPjtuMGY4Y1dyaTkxdEhh
ZU0+OTdRempaZUhmO2JoVwp6PFN4NW8rZVB9c1Fpa3FQTW57JVQlQ2F8VDhtZk5iOE5BUjUoSG45
ZWI1Mil4SlNoZiZEczAxdzJLYXctTStOMSsKekpiZ2U/Y0U0WClyKTJyIzJDWCg9Mz5qZ0pOaXV1
RD88Kk81X3hyTGwob19vRkltZXhuN3B6UXlfRFlFcT9uNmR0CnpCYn1WNCYoY0ZAI0V6QXg7TjIw
fXc2bDdlR2kmaVp7JT40N3JSeiFJNTJaO1RzKipsYkJNa2p6Z2kxb0k7IWswdgp6RnpNd2dFfSZH
RmRScWNAU3k8QjNncSp7PTZ9fndiM0tlMnt1KSkhT0Z4Ti1gJn04T3F3fnMwe1RVRkB9M0BCU2kK
ekMwMUN7bC1lSmhNQ1pyMWMrM2pSZUV3TncoLU0hRUl9VSlRbUBrSS1PYG1kMT5UO3E8YD04NDJM
cD5jK21Kazh0CnpocylURT5FRDtUMWJ8en55M3hTSVJDbnJacEJHLWI5ZSozaj1MWl9DajZwR1lV
flppWXhPNWFuUHYlSGs3LV5ndwp6c2pVekk5aWNoUTN1dUBTWXM+TnJKLWVncW5naTJoUFFCYXN3
SnMoOTApM01sb1M5Slg5cD1oK3E7RWoxYl8md3sKemNBV0Q/aiEyd1RzcnxzViYjIUlBel5aKjR0
Q3N4KnhhV01pcTkxbVZsVlppWGslJHFqU31JN0MlfHB6XkxvN3haCnp7PnU9eE1ufChtT153ZFU3
bWR0JlBKMStSO2J2ZFlZXzMrfjV5XzV8TyowbH0+aXc3TTd4MXt+NjlTK1plSkp+Sgp6Pi1PPGVp
UHglYTdEJXl8amgxI083OTZVUnk3PD5gN2VUWkJne2xBPWQjPSF2S3QzSV5JfjwrPldua3dDZDhS
dk4Kekt4RE0mIU83JlUkYyhvJDVFbmpzPWd0V0FwbiUyZ19OQSooYDVtaFByQXMxX1V0c2tnUVdH
RiF5JiMkSHsxMmleCnpoaVJGdmk2S15uWXpBJWNVUjF1JiNrJlEoNy1xQmlnQHU+LVlvPUFwQ2k2
YmxHNU0rJGA7dn0kKHV2cGFwZEZebQp6RU1uVDhFPHVtMHdDJjljbW9JRlUrTnI2MklwaVhIOy07
YD9EZH11MiR8UVo9enVTcXc0ME1sNSQhPlQlZTRlfTsKejlFSGctVkZWMSg1eioyUy02RCtxUmd9
YV5LVGNiWGUoQHcjMmA8OUR7PjsxY1RxNk1zRyQjT2hHeyNgU2loPlEhCnp7NSF1VCZ6YnZuNjhz
bW9lQVF9UD1NX2kwWlFvbExBS1ZzOGl6QGM5cVk3PUZpKFd7bHhKYVlBc099dUpkJU5XUgp6ODJq
PVR6UXQzJFo/PFp1cmdMYENDOVdRT0lmLXJlSUVCfClsWkNDNzdBVzAydGJBKUxvalNecnNOb254
cTN5SVUKekluN1RZbVBFRVk5SGg0fEY8YUVVMTFfRzt6LT5LYDNTJlhNZDg1ZyZyS1ZmaTBAMHYy
R3RRPXEwendkMERQJD16CnpKJldISStDPmFYeS1RLTgoPSl9Xy1yai0yTVIhKmhgITMzOUg/JWgl
cytrVzl7U29aXlhMMkVveyM1fDM0JHplZwp6ZXZkUldCS2hacVF6Zit9alF3NDN7T15KamU7MXRt
fDZtbGlgblh5ZD80UjNyPCYxbWtOcUQyZnplKUBMNGc5eXUKekAhIUNJSjBKZk13NWVFYzZOVCRF
ai1GfVRscHcySFYpYW48SGlEVEkjKTVgMW83TSQjSVE4TD04S3dQTW1+ZCRGCno5T05jLUV4b0c+
d2YzUCNkfEc/cTtRMXwwcjRyc01gP1dxWWl9eTsqX0hgaGYjfUF4Y157LWxrWktPfEpXSWlydgp6
Z3c5dSNXeHU8cTRiQClJRHo3dnRSRXNUTDwxSk1HeTZwRFpaKHdINmJlcHlULXhZcmJGPmBxdTBW
YVJXTWIzLU8KemB1REI8a048OCt3Xz5+I3QtV2xGNUJSPkp8RG8qYkswNVclaT5DU35FfUJ0P2Vh
PGokN3RmWVpwP3BLbCpmYFdmCnpCUVMwKClhWDd2JWQwVyZZR25pMSNDaDhicko7YnRkPzgkRkRF
Jkt5aEVEX0lYK0opUnNlUzJlUThXKHo1VCkqJQp6WEdoNzdQNEhXZFEpVCZgdlojLXFqfENrTCFa
e15ZWDY/I0NLUj0yNCtGZk4+YnpXRD1iWkB5bmZRVUA8SXxhWDgKemdiRE1pWl5nWkw7NiE0WEFa
NWJYdVdzWjVtJjx3Qkg7KlJ6NDZsJXZaTkF8e3Q1cCpVP09lV2ZhKUckYUtffkxaCnpaZmZ0ZGpZ
UzxTIUE/Rkc+SzVMJGd9NX1RcVR6fDliaVJEYGwrbnByUnQyJnIpaWo+clk9SmpQVXgqYWpoenN5
Sgp6YTNjYSNSRzwqekpMbCRUXmtOb0c9UiNCRzx7azE4X0U0NmhZcHIhMjNQX1dUbEtBMEkmeWN1
eCNpUjBqZFkqOXEKejBuT1luciY+fiNPRHhNMXVIZXV7OGFaKDc5PER3MSFWPWN5Rkt0RzkpTitK
Qlckb0hAJnpVbjstMTRYZTNaRkwxCnpNSHh5N3hvQHBWQHJSP2kybEY8Y2JqVi1ARDZ0MS0oRzY2
a3pYUE1NVGJGekMmdXBzQDBDZj1IbkxRWiVxN1p3SQp6UTVJZl45fkk1blZ6KFRFU1pqX3RxSUJI
RW9gSykyQjBlT2M9UjB5eXkhJHVSeFlEN3JAdz8+UHlmO1B5dD5rSksKejtePkdOUkFOM3hUV2te
d0pvPEhwPHlfVEVWLXglRWlvVmFJMHJmY1Rwb31gbUhFP0htVDxEZU1CeFcwRUplaW4mCnpVUGc1
QCtnU1M1TF4jYDtacEptQzFMaHo7U2dTPDcyNk5LSHE2SXRXeTRiVS00OVZGS2dZekBjQjstcGY4
XndLVQp6VDBxWmg0QXFfOGZPNUx5R2tyRFRQYFltRTk5bVkqI3lRVnN4V0tjV054dWp7a2gwWUN3
WExsendwVkFxcGYhfUkKej9VeX1we0c4LStTTFMjVmM4MHhPVnRxM0coJVNmU1R8M2Vae0BOPno8
Pj54dCtPJmshWD5+PTNUNjNiVk1NbUglCnpjWTtSPWI0NStLVHExcWNhWm9iO1RDQjBPQksoO3wl
NlhqX1g5REY3YER1OXE7TzA2JmhtWGg1YlRAdzQjWHtMMQp6Mj0lP3xpMS0lJXQ7NFVjX0slcHtr
NkBNKk5NR3BqXzVKPSEmVGQ3b3VMSi1KN04hd29EQFpKfjZlRn0qeW5hPD0KelZHM2V5SUNVQ24t
e1F5RTNpZVhEPzMjOStQMihPMThSfT8zc2d6eUw4bENPNVdLeGY4XiZPdU8wMW1zSXBHX3VvCnpZ
dSE1VWp3SllYc1VRTVlwN1ZsYTVzSlFQKlBHd3stVnRSelk3YGM2SEktciVTa1pkay0zUWBJJSVP
cW1CTV88IQp6Y2gzVjcjRzR6KU1kcXclYTlYP1pQM05rKl9sTVNAY2VtKGtiKGM+KGpDVkY/Z1BF
OWlfVFFsOHl6akE9Y3QxKFIKeipGbzFncWF3YFNne2cpPl5NVWpsS3pJMFZKa0pHV3g+a04oZDtw
NnRuRUUqdCVAUF5XclErZHg1X2x3M14kZig7CnpyaXFPKkVQd2MhTz9jP2plKCQpJEU4T0ZnTDFD
TlJWYGAyPF4me2FNKiRWRHdgZ1hyd1RKLTlEZ2JRSUB2b2peYQp6cSM5b2RlVShucXllKmVhN2xJ
ajdGb0BpcXVRLV9ealE3QVBATk9yQ3khI3F1OUJ1YE5pcUBIaEA0KGg4PjZZRTQKem9iYiZWUndJ
UlJXelIjdUY+NEBJKD9fZG8yNXZzaip3SilfUiUhMTA0ciVlQG9ITV4oPFBpWDN0ZFR2ZHR0QiE3
CnppTTYzcTYkVjB2WG40aTY2amxGezFqJXU5OUh4PT1Ya1YkI0w7TCh1bilTU1ljPmR1PGBIeD5g
IVZGUi10Um08cwp6dkY4eHVDNztmNzFWaiVoaiZlSkN2IXlIRWAlcndHNyMjdmlkJFpUd0RmUGlT
TWs2XnhtVT85ODxhX3lTPzhie0sKemh6IzNWMkkmNHMmMGUwRkFsP2Y8PFJ3Q0hTVnlIfj9gfGZy
V0B7LXExSXNaX2MlN3hVOFMkOWMlPiQjczJVfHNACnpocUZGbTtIQypzSVFIVHRwTmtuSj9geTct
c3UkdklyUUV5P3g8Mn15LWV0dH5yP2JQNjs0Pj9FRyp4KGRzMG54TQp6bD1DS2dAYEBuNiMtZXJi
THRQJWtvY1VyMEcqLWJwO2lgUGtWZWx9cm4wIVdPUVNwT3ZFYiFCJm0yRUUjWWh9anAKelRwYD00
d3xSXy1DOUIjcG4wcSReY3c7U1JxdWdDek90P0hQdEYwaCtaUFhLanlJbDMzIUtpalBlVHpCdUho
YUk0CnpfPF5ScUJTMyNXR3E9XiUrRiVOWFpFT0p2PilDWG96MGtzSF51PH5mWkBSaWFyP05PVE5T
TVB6P3ljcDRLOHk5RAp6e0QmMlYrQmZNfU49LTVvNFVRJmEme0d5JWFtfHRRPWV8LUg4cn5DVlhT
Y3txfDg4JFlkJGNJKXRNNVR2bkpQfjUKejs3MmJDYWxHR3QpKllxcFpZKVQ+Kk1yS0dBUD9yUEls
TFp5Wl5YJDJ1cH57fFZVOGlySkdyMFUoQilnMl5nd2pECnpKSW5hZitoVG1FZVpoeSpXdVNYYy1J
aVlSLU81R1E1N2ZxQTZGZD0wVEZxcHc9VDlBdm4pbiV8NGJ5ZFQxWGRgagp6YmdBJntQV1Vodnlw
QHBsJTQhcl8rUFRRI2RAa0MqQj5kJk9ASFlRZlNybSsmPGM9di1hTWJUeXQ8I1ZHUzJmOGAKeig/
UFdIMUx9UDVXVjxQb3pMKkUzYjtrUnhPcGRiZ0ppQDQ/bE1gI1pxbWpJPFElTyE4QXltflFQbWpL
MiliPnE4CnplOUNWd2FVZDVFelFmbSN5RUsyRGEmYDxje242YD9jTmZaN0t4clJtOCQhdG82cWtT
eFElY2IqQTNLUytzWE9ufgp6YVhmR3ZGUGhxTFQoUmdwNUpKRVcwIXA2RWoyI1d3X3dnTldDbkEt
ZmFJbFBzbElIaDl3MUlLd0V7c18pMG9+Z3UKeipaMFZWSE9YZFd3UThxSUMkWT5MeGwqSUM+ZHhj
fT5IRCo+emswUXQhaDtgQWAzP05NMTArZmk1SW0xMl47Qkp6Cnp1KnQxY29MSnUyNjFVVV4tdlE+
eEpyekwmeX5OYWxFMj9lYiEzSU4wTDZzVk5uRjFWTVEwRmQ5UTJzdVMwamEpOQp6bjgxMm5KckJ2
cm1mUDw2I2xMbG5vV2kkTjRLeG5nXzJPIWgqYmx5bWFnPGRKJVJFcj0mY09SOUhNV0g2JENwZVEK
eiU/Jk44UjZAUVFXI3chfF5wMHNnYG9LJlJ5STUpVmBVVS15ViNieS0qQ1hQYHRmcW50OXtpMkAm
TGB5JU0yTCF0CnpFJi01eTw2SWVxRW8tZyEqVzdIXlp5RnpDJihUUmA0fHBeSGYtbmBFQiRKZjgo
XjwqO1FOYnVoOGt7eX5RRilidgp6cShjO1lvUE16bCFiP3hwNz9sKFpHaU1Ma2dXODIrKyVuZntk
QCZ4SWQrci1HMGVvUHkpVV5wQ250Nio4bHphZ0cKemVYcWVkJn0qaiRyWF4qOD10aXlKT3E9NlU9
Z2xseVVzM2xzP0F9KmtBcG9yUjcwfmNRLTVtbTtIWiUzWGIrSi1jCnpXP1g8JGZeZTVqKHo3VmJT
Y19LSyU3PTNTU3huZyk3VDE7fG9VQDQjPUlBaTw8UyNWZ0s2ekkhTSVyQjBvUWJDMwp6RDY8eHh5
PTU4JjdSeHotT09lMlUmej5icDEwMWQ8eDtqfXRlWCFkek96eTFVcFVIV3ZISmVWfXNZYUA8RHJR
ZUgKentRTU5Ca3RZY0BtNVVWX1BYe056X2hubkpjZkJhRzI9cExiZSh1bVFtRio+YGE0Qndeb2FJ
QiNMb09UQjs0MzxiCnpVQ2pJKFR9YTxDQHNeaWVvMkMhYWs5Zkx4IyZpbUF1Wl82OCt3fGFHYDlW
ZEtiSGp9K3B9SkwrKjNhSThYP3VyKAp6bkFHdEZqVEw1IXcwUTxuYkNyckoqajlOYyRCMWc3dHJM
eTFOVms9Mz9jTSZmITkwWWBMSEhyUSFhK1hQVjNvUUoKeip0Iz1PdnQmNT11RztqRUptMyM/cyRv
TmFFYnwrPUZuZU19YWc2TGhydT5MZ3pQdXk5Xl9kXntzcVokJitRSFdvCnpRRUxMQV9aTE1Fekpy
VVc/ZTBrMSRJUG9WZyVPSzJnYyFIQkNyPSQzb0FBPCsqY3I7SUg9YEhAaXxfNShvTmdNMgp6SW8x
I1diRT97OWNAeHRnb1h2dzYtYWtRZTdJXzs/bHhVUjVVKk5EP2IlaSV7PjhsVDcxNFdvYGBBWDd8
JjlQeTgKenVTYTkqTCU/N2tJT3VUQ1NFfiEoWlBKNWgqXi1JMWxeeyojX3wqN21uODtWNW1weS14
bTdlQmhMKT8ybVppcHs5CnpQTEljNVBqMlg/TS0yQ289Y0NxVTg+eCV9ajYhVEBjWG4wJF96IVFf
PDBIJTdkV1RoKVFFSH4mdVdvZH5hJHVDZQp6UlE8cnJGO01DN21KZERgKVRFVHkoS2NIODZGTH54
UmJ5UE5lfHcrRk1scyNWbXp6RkQpOWtoQERURy05PDNrazAKel9QKTdDcW9eKDRkKG0hUDZpamhl
a2QteWljOGhqc3Rhfn02dl55aE9nMz1LaE4yXn54VCNLK3YyVTZNMyRHO2JjCko+YUclfHt7ZSkp
P2RBWGcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9u
LW9yaWdpbmFscy9leGlmLW9yaWVudGF0aW9uLXRlc3QtNy1taXJyb3ItaG9yaXpvbnRhbC05MC1j
dy5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNv
dXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5hbHMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTct
bWlycm9yLWhvcml6b250YWwtOTAtY3cuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OWYyOWY4MmQ2ZTJlMDhm
MmQzMGFhZmQ3MjQ4MTdjMTE3ZWQ2NGQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ4MzcKemNt
YSk4MXlFYnQrNntKcml4ayV1aVVjVlIjalMteGFkJDBWb1p6SDFSQiNJI3EofWBZOGF6bVc7dWZG
fkpWMjJgCnpDPXlDPkRTN25XSk1YXiNwRjN+dkh+WS0mdik5X15vNHc4XzgjandYMTBuJTx8Sj9C
WkdKXmx1cFdFXkFAVUdHOAp6PVJkJGRvIX1NJGdhOWZXN0M/RjUrMUpxcDtRUj55ME5+KzEwak5t
OyZqOE58ME1yMEhZQ0w+dUpYe1lUOEdyfUMKekMlQVRiUDVJTUVlPHZtKEJsP1otZGhPY3plKnBs
fS0rdXdiZ2o0X2tAaWhuX0F8TkZBVi1wQGUwcFRANUxRUDZUCnpPVUZVYUFqWmhhYilWWjFiblNA
e0FDR3xXbik/UzhBOGBGZl5jeXVYNEY/Rz1vZnprUlFoRyoxMlFHMXlSMGZiZwp6WlhRNT57WHNs
eGR9QEYpVjFDQFJLYFZwcy1VR3NXWU9Xa35UUjE+ME5uNzU5TDE5em1OQ0lkZnZPIU0mdHFCZioK
elYhSGQyU2VLYHsmc200WD8xQjVxc1puZk4jN2oyeHg4V1BfRnoyWTMtQTZwX2E/X35fYnhCUW8+
KDwxay1LIVJVCnp7Tmwrd2t7WkJBR0IpYHkrQG9ifmU5eFI9JX1QVUJkfitffGtnfE4kKDQjbmsw
fFkhSnpISWlmIX55RjNhZSQpMwp6M3puaFpYQy0tIU5pfkE0LWRBODZ7Q2V5OERYSlQhKjchaENF
RUY1Q2BYfU9BQm5rVUpgKiglfjZ1a249UVReSjcKemlie0lXPEBKfEJJazI0fjdgJGRgUnhGRjds
KXFjQEBrV18xPmx+Y0JwPl5QUDg4dVhsWUslQWhVRlVYST9Ub2pECnpTN2dQMFUpS2A0JWFFeUFT
YGdjZGlFJE5+M3BpUDZhKUleKTJyb1FLJFczWUJZXmxZKyYzUWQ9cFpgdiErOGNfKwp6SzB8I0VY
NHRHRmloPEIjNm8/QmNaSlg7V25od2diVW9xQSM7PDBPRSZZZXNYOEc5P3NkZDIjYXNfI2c7KUtV
bG8KejFjVWQ9cVJnV3xUQVlYUikrcClqbkJ2MTRGeU1ZVzRwTzM/WEo2JGRPaH1rRns3QmBKem9m
flRiWEFpbmNQdEohCnpyfSVZdGhKcEA7UGsrYDAqOTVGKGA1SzJnYVVFYGJffnpkQ1IkbkplREpo
RFpySlE2YTFfPUJ7KFhUMGs2MFVURwp6Vjx2diQwREV3WXRKe20zYX1tWWg8WXY0NFRyaX1VZSRK
fVYkKWF+emYtZDEhQ35HNjEyWjYzI1RPMm9rR3htNj0Kek1qcFhFQSRsb1NCbTszaWtRSzl0PnVw
WVVme0V8M3FxQWF5VURxeFVLTHQlViNYQD1yWjY+Mmk+OERidEB1O1pyCno3OylvJkNyfSU1Q3d0
dDdxZzhUeEU/VWNRejw0bHdqViZjZ1deQnBfdWg/amk9OVJiUm5LSGtYNSZUZWI0VyZMLQp6d3FA
KHl3U0gyYj5GKHx6Mj0mXjFtPG9lYV9YTD1vdG57Uk9OcFdoVSpMLWA1VThqJElRd1RpXzJaZCQz
NzJlX3cKemlqNDI0bkQxS2RUfFg2Tyk5LUMmPGJnb3U3Q1NzU3lnQjxJalhLQXBXamMrb08wQVAw
JTc/SWZ3RGtKNiojYitZCnpENFZoJXlSezx1OXJrTm5SfW9sXnJ+ViEtZWNkU1g1PEA8UWNOcSko
KD0kYzY7SFZtMTR7e3x9P09AVEZAK0c4Mgp6MkplKnZOckp2K096dEReJlN1RU5OeSpaVV8pUWEk
YURudDhXYmR4JSRKRlpqN2krQjJ4MWZqaUtaMD85M0tmblYKekZibHIwaHN0RjkpJlIrflNkd1E2
eFFWfExzbHopUVF8PkF1OENpfDZrWXUzK1dAdEUlSlRgVmFzOW9WRjxKMjBQCnpzbDg8WDhlKjY0
K2d5OzE0R2dKLStAYWtOK2krcEJzaVl0M2BKdSlRIzdeZ0ZAbW9mI2ZTZWN8cS1jRlBONTRxNgp6
KUdTdCs3V3FGT09TWkE/eV84cHVAZkE5M3lSZ2sxPkVYU3QlfTFLTmhmY2VpQ2shMkJhYiYqP2U1
IyhOYj8hfEsKeil7MXhgKG4laC1eYCNQdjJyNXlwTHlkZTJJejIqMVAheWU3bHd9bSg/ciY5O1kx
OyhvJnNCfH0+MT5WeGtsUzVLCnpqSV5yT2VRT21CRW16d30jZjE9TlQxVyZJIWhWYmNBVEVNX0k4
bTdee2w3RnF7aGF7NncyMzhZRStzUChERjFpMQp6O2Z2clZ8MCF8bXBBeDc0RFJKaCVpSz1mfW8/
Q1ZQM2kwYmYqRzZJTD18Yn4mQ0U8Vll7IWVFNzU4ZyFQWHdXTD0KemgmTnhYekhGOyQzcTQ0OHt3
bVAxPmR1aiZpYDBAT0l6NDRGcFQmSTwqPl5FdUdWfk98Yz45JjZPb3JlQGhxRWJXCnpMUXlGS1Z8
Q0JsVm1FPkRIO1hORiZXOTJEWUFGdz5hc1dMblk2fXxmcnw/MncjNTA1Pnl+Y21Vdj8/RUxieVhD
Jgp6RFEjbW02SjQyP21jTERyUjcxMlo8cEZnMXNKQ1cqPVJRYD1ieyhIVG4+cTJgZjxEYUtmTjcm
Zl9TZk8qRFdrV0QKekpQSDVaQ21zK1E5WkgmM1dAITh3KlFncUpHTk1JckNkb3V7cj90b35kaWNn
dnY5bTA0Ym9mPU5RMDNqMjszfVB0Cno7VUMmTW14Qnhxcm57e2kyZGNIQyNAd281OCEzJip3alRI
Y0B3MU9OP3RoenpnfH5aej4pQ3ZCeCo9YEdve3kpOQp6ayo2Ml5GKWcwVUhAQllKXlZLYV5nQnZE
eEo5dllsTyVAWlo9IVF9eDU5ZHZQOGE7WUxvPTVveFBwQDliIUpSJSEKei1uN009Z2gkLTYlVz83
VUhxTXleSnlSUDZ3YENUYVY/YSEwSCZjSDdNVDFTQipKam5meTR8bWFDISVVPEhUVTM7CnoyPCpV
M1JfYFRTVHxRYCs5cGVpYypycDI3YnZuOzlXIU5mdCM7fUQ9ZSpSNTlRbDImQVAkVGZ6NDgrRzJr
STA1YQp6XzJod0U/cyUmNCZfKFApc1QzKmE4c3JzNHlCdjxxVz47b29tfEBaRkR6YCQ7QjlGRzQ/
Y0h2d1lqRDV9cyV+UiQKekJFT0lCWWFQRkgtfDlaPUJ4dWkqcmVPUGBlelpXakI9NXkpdXlULU1J
JntBKjslPVNVOCNkaW9RT25UbmstST87CnoqZmRJTFVKUTUyRlVEMCZ6fFVzbDErcVZ7RUxpbmFg
Q0N1emR6R2peSkJzd0pFIWRGKSUxeFR7c3ZnN1pWVTBCRAp6TDIkUmpZMWhJLXU2TylJUj9ZSH5B
Mk4heFdXTz5FLVFQKzVxJnYlWT9fa3pQYTh3bWotfFJhUHc9bV5sYT1gRnkKekUjOWZXKlZRMWw9
IVRDYHFEfn42I3BRKitPcjMwdSRoLX5vVGlEQkc4O3xTSWZBZXxxVWdlYF8zRFRpIS1ORmo2CnpU
P0BOZzE/VTV8ZlV1NCVQa1VxZDQqMUxMJEJtWSEhSTFnbXlTbCRzWjB9TVZ0WiEkayolTjZ5cWw1
ZDVEVEgqMwp6VHZ6MzhuOD58K1NPaktNe2xLZ012RjM7Tk1ZO2pLVHEzZHBLVyF3X0BPaHJ9e2tX
XmsrYUAzO2t0akNjKnQ2UFkKelorYSZSe01uUXNrXkYzQjxVKn48RWtYcDc5SjxtbVQpVV8mM1pj
Ri1JbzBuditlPWx7TGRTV1liKk8hd2IkelkzCnpgcUt6ZXJsX1hXP290I3NfKnJaMHo4b1ArQml7
QCg2diZLdlRPKVNOc2JNV35POSEtYWl7fExmXypHakY4ODFwbQp6e3BMQGg1PUlNTihJS1pYd3Uk
RzdaZkZ1RDxmTnNPSD07cSVQe1dXZ3tRKW1QQXQ4T3g2Unt0SnpaKDwjVDYqb2YKemwjPGZiPjMl
PTdGfmxkLVpSTGAkbyFPJl9gPnphMTtNPjx6TUVvRXFjTCpKbU9+N31aZDFGX2pzPW5CZVZGZk8+
CnoxdEZZPTNmPGo9RytsM2J5TSgqRlo/NlM1QUxiZkwjb1dDNiMtXkImSXomMTE8JjkqQUN5Zi01
UHgyJEprRmdKTQp6MDNFXjZ6MmkmaT0jWjdkd0AxPCtUS1lCYi1oPi1UXjg9dylKdHE4XigwQlly
IUVPI3J0RmExc1gjQDlmZFk/a1cKejVNaDgyc3RzU3hATyFBIWxlQ15nb151USNIZzdOSiZFIzQr
MDsyNWU2fmE2fVFYb1lNbzw4QSlsdm5nPWpXK0phCnpDK1JSaCk8Pz8+KlN6UUdYPnZFQnU8N2dt
RmdMVE1uJktISzspRj9BYk4za2YwVF5WKHFqT29IUE55WX1sVjA3cQp6d2t6dkc+Q0w/bGRGPHdt
PE9RJDYkOCtVQUdHIyRObmgldiM8ampDMmVtaVBKT15VQ2lSP30hOzc1bFVvRlB5bFkKejNDVU0m
QjUrZVJDJl4mPmlVPz45azt9MjEjVCtCKHNublhvV1h7JjRxXld8dyNmI31TVmp3JG91fEdTK3Z5
aCtLCnpNcikqfmdHYTQhUU8oI2pnVCpvNiVeYjMtWDU3b2NeR3RpQ2wwaVR+YS1uKkN5UE5YJndl
WVV3Pj1pZktsT0AmMQp6bnNKfXIhP2YpPW4rYWxOSSZweEtUVHNhb0Z0ezY1bktSaGAwWSlxNyNG
Mk0lKkZzPUIxZFlpc0ErV0VkM0QxSjUKektidEtPUGpqIWpZJDstbW1GYj59SmNIRj90U2tuRFU3
fDlZQnswS2JfN1c0dEkkezFtJV4tVmQmZGU4KG1mYGhICnpSKmRQeSQ3KjA5aXo5VCV4XkJvdyF7
dXV0R0F9VjcyV1h+az9LbGdmWSRpTUxNX2A3V28ldzRTVHhESFMzZSNrewp6Y19xWG49QlZZPEo1
R1g1YDtxTjt1ZENDYS1HVk9SbEJYSXluelQ+MnpzSFh9Q2t5WCg9aFc5aWwrUSV5P2RROGIKejBv
OHNDZEU+RHNrI2lPRnh3S3dwI0g9LS1AT3xiKFpNSll5Wj1VJWZgOGFuVTRwSWZqcXMoZzBtajI/
QUVVfF8pCnpkIWdyND9gfiRjZHNxMCRTX35TKT0/LWo1MWZ8TlNPWWhkOD4tfm5BNis/bEhWbCpL
PlpnJW5SYnlXUiQ3eWVnegp6V0FuVStnamdpXnNQST9oc3pUamF1cmRHcyNnQF98fDBSKUM5M1Ru
WnpLTWs9MldiZkBsXlo5dT9ib0d6UzR4KTsKejdfRmIyN1JWfCE3YSNrS3ZKMlFXbW5UO0NSeTRO
RWNocCtie0haUzN5cXwyKTMxOHt7YUgjTEkpVk5nWUlzWUJDCnpCemstc1ppbG8pIXQ3I0FTX3hs
dytoY1VeKjRYZnNPT0xZQkV7WnhPdFBUXm9UaFklb3A4WVcwek9RQlpxK0RZWgp6RD8rN2krcUhB
YCM0QEtwP0swRT42TjdhTlVOPCQrcTFoeE1EY2JaWHg4fVBweyZZIzxnNkU3SCEpSWEwPlY9OEQK
enltZ2AwLShXRn1BYFlMIXJrJm9GaT9KeGFASEpIQ0JHd3NpQWJ4WikpemJeazM1c2VIbiRERj42
X145X1lYNHduCnpZNCFHeUxCWih8KylQV0Y0eTNLamd7fDRNU01NUCpsKCtIKz1iQTBOeDliZDA2
NzI7NlB4Ti1wQl9pMFhDSkw1Swp6YG85WFUlQDVLK3k4RkdobTNhLVVeZSlJOTlqVkVxeVJiX2s/
NW9SXzUhem9OKG1gKVcwKyslUERraElGd3s2bnYKelBtZitNLT9DUXBLIW4rMmdgcXFOdWtPZDAy
MGZiXkBveXdCMkcqbGVEc3hReXtaLXlTZEZaIypLUm9DTm4pQ0ctCnowWHFxJDkxRUpuUzFqOWFo
OUs5LUxeSVRYelVhe3o8eXJpZzZfTjxMVmkmNlZXfjtJJjJSWlF6T00tISF0WiVAJgp6eSVfNmUl
YyYoP2wkMiFMMjZCY2UmUjxXdkBpfXJhbXRgWVkkVyVLY2FNUlVAPFZEXip3XkojKGx2ZTU2b3dv
MG8KeiQ3JFgyWEMycVIlPVR7YG9KK251VTBpPXhEfj0kfGohI3F3ZXNfMWdyVCYlUGAqd1lJRSor
KTdodjR6KkhuIWVYCnpZeGlsdElvRHEyVCZ0UEtOcFp2P0piRWZjRFZhbT5rPV8ofEIrdWoqVGdm
OVIpJCg4NHFlX2ZnZUJwdE42cGBMMgp6e1pGb0Z2TWwjOVhSJUk/TjI5fnAqKT87VDFEbXQlRWJY
SEJSSygmd2dHODtlMz9PSStod0V4WllsSn0hTXl0WSgKejZWZiZCMH00ZG01aSUtWVMzSF8xSX57
VXxCNFNIeTRCeW5NUGAkVldhO0k/JDNVQXcxbndeKmhsZy1QfEprfDVjCno+JGhCSDg/Y2lRI3lZ
VlAqVU5fTkdCQ0xNO3Y8cEJAeDNpSlktWllhR0FpfWtAYnB1KktGMldySGp2LSpSZEs5YQp6dG8q
fVRYPHAlUjJXcDF6b0wkSX49JElAeF5ZeDl3TTJfX1hlRllWQD9AOEQ4IUBnUmpwem0jcjVZIyRJ
cHwtJm0KelhmN3tRQTY2UytzWGNofVdkdHFKK2sqSTZHWF4wPT9hJDdwMU0lREJsXmVpRFJQNXBW
UkcxN0goWXElTCpTRHNXCnpENGBkJk4zVk0qTz9neXREYU9WQ2J0PTBrb2RMVC1RcT9yMT43OyQ/
eit1fERBRSZnSFkqdClORHc2MmRHPzhMUgp6KktXa2tqdSRLRiVaa0FiNDNzSFVXPnxPeXdDfW1M
Nm5KRG89X1g8NTUzMENtRWNxfkooRHJDZWBNUz48bTF5KDUKekFLfHBGclJ5cTYxcSNAc15wV3BR
IyNATGRrdnxpNnRjWmpZVUMqREM0NF84TWVwaz4xPDRGKUd1TT80bW93JExoCnpvRjBHNGE9PTJF
bzZofCtSdiNDUEozQXA5bnRXdGEyaGxpeV5CM0tkPEZ8cFhEJStjWFdnejM/ITdhVGYpU3Z4WAp6
ZXdzO0VNSFAoTmJzXzN8K2x0NTY0QnRBXjdGdm9iMlJaWVl5S2dmMTB0SXhrTUgpRFl4UlpZOFZo
PExkMCRZLUoKeiZxcjA1Qyhneno5WUVWJjllclZ+ZiNMdXZKRzx3JD1Bb1N+JDReemM7RSgqKFZ1
bHlYS3gmfEpeUU5OI0cmRW9wCnpPKTgrYjs2RnlVWT92LXpMc3B5Vl5MIXQkKz9MUD43eTZGZm11
SihRbWVaR0FvM3FoTmBfZGk7ezNfSmckMEkrVwp6PWlPZUAteipLXmxBSD1YJi1Hd29abHF8Xk47
PUItJTI3JHU8YCRXKFdqIVZudDZWUXQ8U2Ztc3Z1amQhQG1RfS0KemVUTnsydnJBRmxQa2l0b3U1
Zj1IOXNUMXtpRCprSE8lOUdLWGI4TWA0MFZsaGAwVXI1KkgrJX1fUzFJbXJPRF85CmcwaGZ4cjdn
S3gjNUZ2O2ZCUFVlUW9DUldPTUg1blIwTm1XYTA0MmxWeGN+cUYKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFscy9leGlmLW9yaWVudGF0
aW9uLXRlc3QtOC05MC1jdy5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5hbHMvZXhpZi1vcmll
bnRhdGlvbi10ZXN0LTgtOTAtY3cuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZTc1ZmFjN2QwMGQ4N2FjMTlj
YWE4NThjZjMwZDhlNzNjNWZmNzUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ4NDAKemNtYSk4
Y1FqbVleSXMqMlVaTXEyUnU+a2x2dWMhUkEmOSFzMXlOJX43Ykk5XnFzTk0jNVFPTmc1PTBPIWRX
fG0xCnpzKjRjND9RZyZCZVpUS0h6ZHRmKD9tNXJCcFU+UXhKSV55Uzdkd2ZhMGZZbmFlcVpxYUQr
Sz9NenM+UlNATmcqWgp6YFZhOEMzK3g8IzVJfXw5MFo9STBkKVBoKCpuYV40MEM/Q2gwQlJ5WUM/
SiNvS249ajcjPjF6XiErcihDMHFfOSQKejFVUSNDJUhLanZhKVhIVStJMiRRR28xNSgwUlVvPktZ
JHlBUX48eVk5MDw1Wkt1R1lINWd0QVBBcjJ2O0NjYTVTCnozIzZrNUdqTVAhYkxvNUhKUTNwSzVm
SXxJZV5LIVB4VnZsRHNjK2xfNjRCNnRJaDJYJTgxIXY4TWVpb2tkJjAyTwp6MDVhU1FAdT1+czBn
OFoleTEzYnlPZWJrY1N4byZQYH18eHY8MW4zTD94WSola1pKZWtQZyNrdVRlQj5BMWAtYzkKejtE
e2hPYDFfaVRuKCpaTlR2czheOTFqKHEtQlROYHdxV2YqWEJiYS0kdkFle1hHNWh0JG8peCRTI18y
Mzw1T2EwCnoxPDU3d2lJdlY3OHYhOC1uclQwKk1ob3U7Y3ZLdVBrWX42Rj5rWTBoa2YhPlZ1ODBE
Uz9GS3NEeXohaURfX31OMgp6R35GckVXLVcjMS1yYUcyJTN+WWYwPF5MSDcjUS1QWSkhTDdvI1Q0
akdgJVA3VjZsO2IlVG57ZiZHZ2VkLWRJMz0KelI0UDstKmsoUmRiJjs+MCVxYl9kV25wMClafHAt
TjNvJnVpeWA5LT1fRXpZYFR0c018USVKakIjJk1nNipVXkp4CnpYSkJBJmNhcyZGNjF4PlE4bkBB
Rj84ZkBwKV43c15eTG1rc3p3SG9wamAlRmVCUSM8UTxre3oxIXRCQiRRX0M1Wgp6UjAkdS1HSmx7
ZXBgIUxVWnJoVVNNOXE4dVl9eVUoZCthaz8pbm1hZUJ8VFJZVTBINDMqbkpUZUI3N3w/YF9tTmEK
ek5UfUkrJFpvdFZXfFJgUmhPUXJWST9BVkpsQDYlOzx7QHBSMmNeJn1xfkNja3YqZkhXbz9nTiY/
fXk7bGFxQTxxCnp3ZUZ7cnMoP2A9cVNTZlIrRFJLPkNzZF84PUlyJHhNaGxJSiFpQitZK2E5K1Ns
Tkt7Qk5fdGs7NT5FVWxkeGg5TQp6ZjQqTHhDLXBZbGFUS3JnUFclWHxnP15ZQXM8dktVNVkkO1Bz
NWNhTkthJEg/SWQrIUkkakBncllTTmN7SVE7M3gKenNON2BgMjZgen15P1BjPSpnNSplPSRwPntt
PlhoWVFmUFVpaEdUME9qcjl9ZU5ZNVIybVdER31EdS1Xb2t6SFBxCnolfUtDZFZzcik7cG8jX1A5
VWtPOWJHVzs7UEwjanl7MU04UksjaipSX3Y/MFRwdk1yNWs9KGVhRUhIYWB6VUBRSgp6dzB6bnlD
TmF5X0J9WXZSM3ZnWm1QSHlaQD08KU9FSTAtXzQ8OXlNP1ZyKUw1ckdYN1omZ04rIXpiOHk7Pjkh
fFYKejx7VkVrJWNOb2Y5MFIqJjdBQWZKPSkraFEmV2F6TmBFUG5oaWVWbDFPVEhIejVpI2RAcHJP
KVJPMCUkQyFCc0ZxCnp0YnMtfSNyPyVrRVp8M3paKVo4Xm5CdTZId1FmU0RQRykoIU1Bdj1jI1ZQ
bWxjJiNpP1NHVFUpaV5AcUUoc0p+Xgp6TD9CNTxJYGFsPHlIKyMjen5YODRUfT0oe3lzO2BLM1Iy
MmFiWG9JQVR9cjhDTCszU1BeeGZGXmIhMitIXiFWVGUKejRVTEc1e2x4fDN7JXF+Rk9ALTM0QC1j
VlJ2dlpTcHZxO00hRlNFPk1Yc3p2X085cjZ7TUslRnZ1PFI+OGdmWTVFCnpQXl5ffjx4JHI+PVhQ
Pl5hJiFvR3NQWl9AenFkM3BLOCtCKUgqRj9FVS0/YHokRU1jfEVpUT9ZdVFzaWtzSjtQWgp6dEZZ
KlhLU1I5V19rP1BaazB+OyNJWmsoSSF7NlZgXj9FbGNTMmo1OFlRMSZSeEs+SWJBVjVCPXVfVnc+
O2o/X3YKejh1dyRoa298fk4ldWcrJSZwdC0wZ3wkOC0waiFKIzZ0WnxwKVNtXmskQ2JpK2RPcE9f
TkxUXkdacXUxPFZOd14/CnpVWVdGOFM5eEFJI0BxfE5XdlFJUlNRTW17JEMmX0Q4NG84O0Y8ZGo2
P0RTIVlhQlVGYntwem5NRnpsZT4/fT05VAp6Uj9KRDZVfnwqZDU2SmBHSSh7PFVeKGQ5aWszXnRD
T1RZV3RrSSpsZkl1PFNVJHE+Y1UjfW99RDQ0eCl5OVY+UXgKekZ1RFRpezh0JC1pOCotKkBJOGkh
I1NuR0prNTlWI0s4cTc3c2owbUNedW9McWp9fiNrUXdKSUYrOVRaQ0hSKEozCnpePDQxQHREZT99
a0tJXitKfiVUeUZjSjAwX3VYUyphc01tQ1A/Xl9jVXMpcjBQR2dGe0hiPkEmPzQ5WGEkUDtmMAp6
NVEoN2VWTV9Ue3FoZGpTRGtXK3Fodm8lKTl2M3AwdHxTVTwocW1Yak9KaCgtSjVnZD5DJDJ3TUwp
OEo0QEpJOUYKelF+THh2U3xYamlzQ29jX05tbn1rdiVuKzUwZ05nfWFBe3lndUY+RFlrYm16U0oj
WHpUQilvKExCdGJzWT8tPDZ4CnpLN2taVzQ2Qjs9XiU5TjtsNWNub0tOfW5HalZ7cz85a01kaXxG
dXlrZVhRc3ZYNlRxfUU0dEVpc3MyIU5VemV9Nwp6ZTZoWG1uViRaOT9MMmE4aEc9JFBqR24jSHZj
XjtuJHFfeDRQZ3V9bHdXZE49SEc4WTFaYXsjX0srR0RrKUZKUGIKensmPWVQTUFUUzcqfmhmZU1T
V21FazU5d21EYHF+PlZrJEU2IVZrOGJ5NXItIVghSm5tPH5xQFRPT1pBPE5icSE1CnpXNmE7YnVU
RXx4SWRnTm57dDZsU00zYCtUSyolbWpLI3hpN3JCZm1TQ3EhcE0wJUZ9aCFGM3M2X1Q7YntSRkVh
awp6JFVBKC10RyMjMTQwVXN2OTRaJkFTeiU8QWFVY3F1VEJ3VmZ5O15iaXIobTNtUENHR20rcDZ7
JDZ8djByM2FIKDcKejVtUkJTR3t9QWY/T01qSEZqYk5UcFpCOzVOQzYrREVBJiM+PDlwSkVlalRg
eVZxNXg9NihZVjhFQ24rZEloYzxgCnpSRjU1OShwWSVab1JXc15VUDR1ekJtSiMqZ2dra1VHanZt
cHZfcnEkY2RyZTZmY35fVj8zVnJUck1xbjJuYnAoSAp6dUhNY2kmJmVFRWY2UVowQC1ZUylHcSE1
QT8lUmVZdCQoRi04USFNNXFrY0l7PjU9SnEjVUA7fih8bVZNSHVSdnYKej8+VW0+bWljYVV5VVRI
ZmJuemJLdjRWb0NiJDYoPyNKU1J1SEdlTUVFJDdnLUhMPzQrNk5Wa0cqb2B3SVFgTUNqCno2aGAl
SyhWJXBmJnIoWTE9P2h6c15nSGA2KGpYQ3l5c3YtTmBfazNJKjRiaHJiQzlVc20jfTt1bXdZREk1
S0pQSwp6SmpIfiE/M19yT2dRVXNpPkxoe0BuZl9VVTEjdWQ1QnY1SlBFMnU4YzZKdURXKVd0Uk1P
S0pieCNDcz1AJTg0R3EKej1TPVpTKTxYNWUqYHMtPT4kJCRvdWpLS0xSdW1RPlEwQEZTYCtvT04o
PHFGSmMhfnktclh4cG9eJnJGfDwpY09VCnppRGBeTG4jayVTXldITGRzS2tDcnA9TX0qY3VzVG5t
PXN6VFc0eHd3a2tnMlMoPFhUQHMyJFIpbW1oS0ZAeWtRYQp6QWQqaDZeMFlLcF8mVj9JQ1dnayZH
TzZzJXk5KUtHd2ZpeSVwWCk9P3RGPX5iPWxZKVotOHl5cz0xRXEjcVhrWSgKekIrJXhLaHA5Ni1o
JUdpRWt9a19kZj1GWmtIM1NgWVp3Rj58I21hdnFvJU5jR3ZsfWojeG9DdXZXSmNRYzFmUSkqCnpp
ZWJFdCNgTj5vTUkmdkQ1eCN0eEM7PWpWPStfeHp1Jk1WR1BkPkA8cEA0VXpvQU04Yl9FezhyUnp4
UzhmO0JqYQp6MSh5WWJ3Qk8+MWRyYEk5Um8jb3RjZStmb2g/c3FzcXtQNiQxM1c4Ji1qUkdjTUNm
Mk1OYWkqeCt6YXZkeFY8K0IKengtdnM8b1FDWl4tN29CcVY7QnRiKikpPlYyS0p2JHp9dk8pREgr
aC1Pe0g1P00+SFRvM2R4czMwaUYtO3F8MHJvCnpCc3tRZzRXbTFLMXMxeD9gZXd3UWw0dzBPX2JV
RT87ZShrJSFLUnF3JmJFd0pEXyp1Q3laYGtsZkV+clVtaTJNLQp6Y2NPRm9zbURtPXMxLU58NSY4
MD9ZO0RfPypCQHcwIzhtKV9pbEhLMiRIIWY5YStoTGFVaE9UeVh0a2ZjTXk+MXwKenNxY3pRVTJ9
MDZHckplIyFfcEZlMl8+Q3M9PShyKilPMikrKnB2YyZ3NEY3UStqNDdVZFB1NiheVGJlMHo7JGF5
CnpwN0RWQy1RZkdwU1hBdklfWTxeOEx0czV3M0Y5ai1naGlSRiU1MnxWVHFDei1JSmI1NTJgT0I+
ZkdBU1RGJSZoKwp6UFJRMjFNRik1XishSVdudXphVHNRM0krN2gmNTk2KDdzI1lpY3UhITRCP3o3
cFhYc3xKSSgwTTVrOSFPWWhOak0KemAxeEx8dj15WG4tNWJKJDtmPGRaeFVKd2I9dlduJlVFRGxq
Ump7UjNUM3l1YG9DbXRqTDNhJFE4Z3A4QTEwQC19CnopQnsmK1B4ejF8RUtsYz9OU3w9WUZ4e3o/
dm9fSDkhVlVEajlsby1KND59ZFlpND1VZnt8dkcqYjdPPWhqSkdiawp6ejE5czlYUGpqWXZtOUtB
K20wJDRoMV9nNHBtYWNLPGJeKiokLVNTU1YkPWpPR0IrP05Wbi1ePTw3Jik3IW0kcX0KeiR4ISp+
QEgpIXpjUHB+dTB9Pmd2Zj0xJUxLQmF3Y2RrLTckNlV4dlQ4SXotY1ZiSUZ7MlAtPU1ORj08d1Mr
IWdoCnolLUQzU3lmR0skUVJfXm1gLXRDdWtsNUhHNEE4dFBkbms1dTNMbm5UbT49N3s+PGlhaWk0
bW84U1Ihd2hgQjV2TQp6RilCfE00b3I0fipIU2BRNn5SMT54P1RJelUoOSV0QF40PXBFbGFiZnpA
ME1STjYkQStAVncrQ255UWNWeWo2U34Kel9uJCpXe2IxZXd0I0ppelp+c3M9VkhHM3VEYj4mQEJB
bThoTV5nczgoUUY0WlN6dHNsK0hefnhgYHwxKyt8MzslCnpWVVJDOXBGZms3ZlhRNVBYWEApWW1v
flgkUX5VaylqSnsrXyQ/RnllQDNqJG0rQCR7VE55KWk+K219SlheditCfgp6YEYmOGVsIzdSPVNC
Z1ZnYWpMeW5sZFVqPSVUWTlxM35ia15FR3I9WUQqYSR4eXVgUSZVWSF9MndZaTtDRFplYmAKeihx
WSNXbXRvM3VaQGFeMDM2SmopT1FfQ2RlQ3FRRHdebDE8YUd+U1RRTlRCXnhlKSN0eCs8WjtmckxA
JVltR2xiCno0QEY/ZHJpWURDVENlfjV0aU5ZNiZJRzVsJkUhVGRrOGszJGJLbiNeeytxbXMte2dK
JkhfcmhgeU5Mei1uTjNfJgp6NE1uNXwwdzRjJGkhWTJGYGQjQWk/LUVDVG1wSjxXNW5KNFg3KWxE
bmgkQlFJdHQ0KkphailGN2swbW1Ve01FRlcKelBiOGRqVns3VjQ/PGJeT3c/PVQjdXVmSzFzMEJu
TSN6Kzh1d1BPfk9XI2hNJFdQOXY3cGhCeSYlcVleMzN9JWohCnpOXiVIRXBabDwzQXxQNVJYVldE
cHhOPkVZKEpxeUdaaDJXSXh0ZExyakx5N3YmdDx6bSM3I2ppbH57RH1PNzwjNAp6T1g5aGQjJH49
JFl3OE1JXzBWSU82OFpfMFhTVGB1IX43ekJUTXhjfUF5fSRpTz1Rb0twODJgJmBhUjV+PDQla3YK
emdpTWhnI3dITmB1RjRLM1hgVWJBVF9DZ3IzNXtyPkplQ3FaX24zS0picWJDVyRXYz0zKkR6MUNG
I0JXc3NpO0gjCnpfaSs1UE56SHYycjsjIXNOfV55TT95UnEme3E0O1JEPjZjSWEyJHFyJEFCMT8+
QmZKbWMqaV5gPVNZNWVSSzJvegp6eVpLNG1sMm95YGAtWT1udFNkK31Ge2I+Yz5lR3FpKXZ3VzN1
azQjYThuITJ4NHA2akJTazdWNG9ffF9sN3o8WlEKejZ1Z1VrZGclKiNAbD1ST3VqN1FDSCNqJmcz
ayVRJnheYik5KjZMalVSeERsekVtRGM/NjdYNUBgUEFUMVpOZDBxCnpmP057JGRBTTNRWWNPUG08
NFNROzwybFVEeXQ4P2Z0V2JCSUFgZFl1V2Mpb2hvZ31QTSNXX2ZVTiEkRDluOUZkVgp6TmZpNSk2
KjF8Y0h6RmdIezBsZjNJNDFGZDJlfVJ2NCUkTHwhPVNnTlltIThvIXFMbnZeMUJDJGQlanBlKF9M
VSUKejAyOThEXldDd1MmRjtUVD16bUolcERhflQkflU7emNCPUI7ZzYwKEUjfXtuRG1mSXo+IWFX
cHtKVTZUc3dSTzRHCnpnRChANE12e2RHXloxI3NtQGhwIzR8PEV0SytOM2dmdDA5ZyNfK0ZaQiEx
dF42fkd2Q0pZQGY+YkV+RGszfn4xPgp6RT5lKihYX2YrTz45ZT9uU1YmRDxIO3EpflQoMzBzZSVG
XjFuX3M8dG1rXiVAdVZyTTJwfXomXiFEYlAkY2JCYl8KejQpT3tXRzBPfWt6TFVueXlHP09WemtV
a0B4fUxLPEF8SkJiVnRVMHNDcGleVDVEP2Q4aU94dDVabHMkdUFGeS1tCnpTb183RyZGUlBYaU5C
YistP3JKR2xoMUdhWGlLQ35pZnx1dEEpRFZGWjJ6O3FWbHQpVUIjdEhxakE1SCRmY3JZRwp6b3dy
O0hLSTghVmVrRlZ+N0V3ZXVwNzNXSVZaaT1ST1pYPjAmNigjRlp8Y0pqNXM1UzU1d2FkLTQ9S2tj
eGhgKkwKemFARiZ3PiFsO0BISUdsVVVjQy1eJHZVJnEzKG9yP0l+dnlLJkNAQWNtUGxCZyhqZEgp
QSE4Sl9XTk9VX2J7fis4CnpMTyYla08+MUx9a3MxNk17aGN7QXVDSVE+dUF0TXtBX0VuRW5UcktA
SiFpWXtiR05fKDhldDJsZ0w3dENRYSVaOAp6TGtWcGtqYHdlV05hJUx4QE5JdWFOaVRRMWcobmZP
OEhXZFE3PEJqa3gtNylSMyZee0FuflppbjZxaT59aCtwSCoKejBsfD9Od2RuRlBxd2ptSzd3aD1A
Q0VoRitsUVd4RGF2MyMjPCptNiVEVm5Jdjg+SDV7XiVeIS1ZOG4pLUd1KypGCnB3Y0tackNTNkIx
Zkw/PDszSj5pYXFVKmltempfSkhoOWM0dlAjbUFDeyUpXlJ7fDczcSRDbSZBCgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi1vcmlnaW5hbHMvZXhpZi1v
cmllbnRhdGlvbi10ZXN0LnBzZCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLW9yaWdpbmFscy9leGlmLW9yaWVu
dGF0aW9uLXRlc3QucHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NzY1NTYyNGJkN2ZjOTExZGFkZDRmN2M4YjQ0
M2U1Mjc1OTdhZDMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDg1OTc1CnpjbWVHXzMxQ3gyKTA/
RkMxd0ZWeUxUU3NQWkM7eitUKWo5ZDZpUXA1VHc8RH1aRF5YKkImN3ZKS29KbHs2Z2ZvZAp6MGlw
O2hzR2tCX1BkdzFpZFgmUXB0MCpHa1E5LSQoeW5rbGprKSV5YTNpJG4+ZWxQOE5ae09faD9DJExC
P0MkTEIKenpUfU1EZD9GKjxQWFVod156dEYtaFRyNlg8YyNiYms0WEJgaz1gOXspR3E9N3Nab1E2
UmFhPVZXcU87a05NQit3Cno0R0k2Zl9LazMqS3txNlBRYkc9c1E8MTRKSEg/fkwoZFcrQFRjRGom
cmNLZD40OyQoP3hIYDRFeXJOdWgoPHJPVQp6alY1YnFeXmtDbCZSbkVWMXZpM0s7WXUzQlJ5SEkm
OVgqdFZJbDBQQXZxaTU9akE1ZCszPV5rSk57TlkwakVfJWIKelpjeFRDYWcyJmRQe3FiWSQwbnZT
QHV7JiVPOHlyPClESypQRXhPez15c1F5P2FffX1KeXdxbF5OTDh0LXM7WGtECnopRz1tRGk3R1pG
Qn1LKT1zcDhfSUF3O3h3dyNsWmNqeTc1UWEhM1JgUyRlRDFWeUxoZyVxQXRgKWZBYTRaOX5HdAp6
RihMOENtI2UlJk92cSU3cD1GSEduIyl6eW5oSTVINDVNLXRzaU0/dUdoMGl8dHdhXlFUU2NKTGlp
dVdLVDh5LTgKekk7fjE/KVIqZmBIWT4hN2IodHtLTmx1TyEpbiRJbSVVI0JfK0o/XnA2N1ZFLThQ
aSVZeUYjelooXzc3ejdPajV4CnpFWGF3U3UwWGNJa2F9dlNNWCN9JEVkXiQ/YVZTXnN4ZEpoaWFq
YExSJUtrWVR0LSp4azg4QkdZSmNoamo/OHgrNAp6OGs+RzdHRHRMJjkzMn4xNUY0QVNQRUwoYWpB
b0tqOE84dyM3cVNfUzlBSE1CIy0/IXhpJk5PPGMrNUlPQG9jeFMKeipoNHp0NUd5XmtLd29WZXFu
V0xAU1NlP1YzYGJjIUxzUX1tTVp6TUY4ViFfSEQ+TjNYOXhHeDx4S0ktIVo7T35QCnpqeSprXik+
dXVzZXJTUVlWekExVWhkck1ual4rcTMqRGV1SWtMQ3lsdEdHUD5iIUV2ZytpZDNZdDFDX2BJUjJr
WAp6Ryk3LSt5U25uWSNQSSlBbm1qe0U9fldpVEhIdm5XaHZQISRDZ24oQk1BZjF0SXh2MncqPVYt
cG4wNU4wWVI3MUgKenUkfUU0VnI2RyQ9MzMwZjJCVXRjSEUoMndHSkFNdFZyKXVjVnN1PGd0Um90
U2ExTUJNK1NGcFJyQ2VoaHM7UV9qCno4bmhiaHJCdCZfST09NF9vOXwkaUoqWSFgKzZBTyRvMilq
Q052cUchOFZaMElnRiUtWHIhN3Y9Qjx0MURZSkV8Qgp6Ymk3V2xpIU1xa057KV8/RW1DV1c8MjF6
I3FvS2t5QyZ3eyozKUVSPVo2KT9YSlpmRCNROURGJGZxSTw5MDdEUnMKeihJRWB4elAoQWZLK19f
clEzZms/UT9zNHI2QlZAaWBkZ2YjUzFOJk5tenR7NFZnKE0+ViF4PUA0T1RmcD9iKSkrCnpUYHF2
KE4tTUJNXnchZztEJUczWD5SMzVjRypzKEl0bWF9e21CeWteRjlEdSNxcyEtekk+JX5gLUY1SDVM
N2w1ZAp6VkF5OFckcHYqNz1GdUFFcGZIR3BAdkJONHpfekd0dV9+Xm1xaj9kcEMya1J5bCEhPFFj
TmBNQStAWD5mTWsxRjsKejNVP2U1eCFqP1c3KUJ6T05ENmx4NjFtKT1re0N1Sm1xLWVDOTFeK1Fw
Xl9MekI5fS1DY05gTUErQFg+Zk1rMUY7CnozVT9lNXghaj9XNylCek9ORDZseDYxbSk9a3tDdUpt
cS1lQzkxXitRcF5fTHpCOX0tQ2NOYE1BK0BYPmZNazFGOwp6M1U/ZTV4IWo/VzcpQnpPTkQ2bHg2
MW0pPWt7Q3VKbXEtZUM5MV4rUXBeX0x6Qjl9LUNjTmBNQStAWD5mTWsxRjsKejNVP2U1eCFqP1c3
KUJ6T05ENmx4NjFtKT1re0N1Sm1xLWVDOTFeK1FwXl9MekI5fS1DY05gTUErQFg+Zk1rMUY7Cnoz
VT9lNXghaj9XNylCek9ORDZseDYxbSk9a3tDdUptcS1lQzlCcT16JiVQeThaLVJaR1JqfWNjP2lm
dl9UUyQrPAp6OWUwIyt5SEVXcUVVPXF6VCYxbXwoZ3J8SjQzY1pMPHJsI1FLcEc8M1dZZzxTbUY0
SnhaaFU0TUUlQEduIz8zY1cKelZ+N2xjNGRiOVVoZntDQ0ohPUtTM2t2fG1DQntYNyV7QXVZZTcm
dSpWcURRb0VxRGZ5VHcpPCtfJHd3I2wyNyErCnpNayt9S3E5VDQzVnJZMXlYZmxqODZRODRpcURx
NiZXLXc4ZDtPfFJBWFhaPkVPPXlWK0Fxc2drLTBVUnxhVllVUAp6eGApJlh7I2BJK1dgKWZwNmFv
cmFXRCNIVE5+fTVKT1F5dz9YQDQ9PD5AUT1BajhAVFNZPjkxX18lZ2lRbT9nZGQKejlxcCh5dn1H
a2NBdmhgIyptUlQkeHVJS3VeSz9xMyZSa2lQVzxHPkRxYCMzQ1F3dnl6djFQYW5pPl9kVCR1Xj5J
CnpvKVBPLXtBQ3oqTj59aGF0STxaYHh6KXpCSlRiVzZFV0gtPytROE9IKmt7WGdNUSV5MVJwMUpB
Vl88azx3aDhXSAp6YkE9dnVGUzwtTlV1KSN4eGZYNU9XVysjITlrbXY3I1UkOWBsOFlRX0ZxSGA4
M3FwQFAkUD41eSZ1Qks0QEtGSzsKekFJeVJTSld6bnM5Y2QwOHsoPVlPTyN+ejdEMVBKZUt0e24r
MjdtbU1hI2EtZDMqci1uJEZLIzI8RmBOeF5NTHlsCno4blQ9Q2VqVWE3Q3c9IyZjZXUlRHRiV303
WmE8RUA1bHE5THFNPTMrUmRGJSs3fiQ/a0F1PUFhVmNrT19CI3Q3Ugp6MChUKXkwKS0md15BTCpq
RVc4dEpTKioqUzt3U1dXPkJVfStBRWdETmhRPiVkPSRvOXJgTyFQUVE3QSo1by0rSiMKejZ2WXg/
OEwoLTEoPWF8MSFuYkY2OGxaJVdyfmheNkIxbkhPYzZXM3N2ZjsqMjBiaGxeXzg/b3gxWSFiTlZ9
USNECnpRYiRMa05pNnZEJjUodV9aalBgODBMMDdiPU5MZm47NF9KQHJiOzhxTWw3fSQ+e2Q3RnRq
KmZJKWBtJmJ0WWJxRgp6eGU8V1B4UzM/WSMjIUVmMGVGKTwqczFDOD9xITgtaGtFTm87fX5wfkdO
Kkpyc1VMdHQ7UFIjfio7eCowZDYhdHMKemxAKDRQRkVpY01Dckk0a2BHfXB7cTZhdHZISSs4PU5X
RHBLIVI+SlhBaEB9aTVBNFNVTWhOPDNtek9CdkBtSDUkCnowWHkhVXgqYlk8WEdvNTwjSk93byhp
bSs4bmk4aV9MMFl9aGg8aS00dCltS1ojdDZkQ00qdXFvX0FOREE9QTtgOQp6QnxfaVNmaCt0ZDBT
cVBnKjZFOGlsfmZxfSZlQl9LRWBtPUt6fE8oX2klUklPUlJgaCpiTkRreGlYSVMhajVWOCgKeiox
azQjMSQ2M0d5fSVnZz1WdGA1KmE4fCpNMGFBaGZjcnpXbW9eVmhUVlFgZzJFOGAwXlJWTzgmOSR9
OzZiekN3CnpWQUwzYyR0KHg8Rk5kQkVfc3x3am99JT5yN30oenpTfFR2SU1yKkNlJHNkNzMwfE5W
Tm1BS0tDISRqfVVtYDtEagp6d1puYlVxakhyPjJTMGI1IVAqSzdiYX1FfDImfnFAWCVYT0YxYTQh
TXRwZWVnPiMoOVNianp7SGc7XmtqO08+ZzwKejYzJUBDNGEyJDkoNSkqczBmV21pJmxTM0k5bEdC
RV90SUlGJG9Qc2U7OWZrLXBzeGI9ZXNEKF5FNldZd013dUh7Cnp1R2NfZ15neDxMKiEwPmBhNUxa
enVvVUQkcFhvN301VEFlJjJYflEhK1hmczZWTShVQlZtN1Q0V3E8N2VCXjtISgp6dFFAN1VHVXsh
JT12KzdmTH1Tc3hgNWZnSDhxO2gteEg0bGI2NEdLNUdYLTxFSGEjN313ZEtVUjxeMkJ+UHdQejkK
enh5fXg9JEYjJUQ4JG11cHxFOVJsNGw3em0kaiY8bj5IM3UmN1YjSmlHOFlsRDt9ZUpTYlZoITBJ
NkIwaipUeGAwCnojb3VLRWgjXn5kSUhWVlk+NF9WX20wNFU5Unc3cXhWU2puME1RTWN0U29GJjE9
MWhGVzVnb0dTa2RHVmtedT5DTQp6OXlXejVDanl0amZDI0dGcSUrVntQeil4Z1pSIXBmdH12UGQy
NlM/SzRVVylGbXFeJSo3fUR7UkZyeFVhaihDTG4KejZVRFNneigqJDUrWmYtOEZycGA5UXR6VzIt
LTg/Yz5EfW9qVWplVWp0QVRiNEJyfnItc2phbGs7KH5iSyF4UUBHCno0a1YwcEJpRTY+cShBaH1h
VV9XaEI1N25leHNpK2AxIU9ZMGlEKmVGRFRmKEU2fWdveEIjWCkyPFVYPlJKVllLUAp6bzUmV2pq
bDRqMWwyXiVGPFVSNXNgSUg8VzJneENGZyMxRXxsaGZuXmo1Tkd1ZndFOXBIKDc2NHIwalpHb0dl
KjMKelI1bn5UTXdUYT1FVzI0JkF+VlM8V3cqLWlrbGlnP0RTSnFeTEFGS3F5ekZKIVRlMSZpXnxD
S3otXnFeMnsqYXhRCnpFOTMkNEZuS1J8bHcyaUdtWiFAeyVNMFl3PHQ2ZjQ8YTZZVTxvQylTbHk4
KGpCaXx1Xk9hN3QhZmMlakI3eF5nIwp6UVRRdTVFQll2KzcwSFRCI1c9K2pNWHwhN3hKfEs0dXx9
fmB1fSQlY1Z2a348OypqRTMjV0Bjems1Q1YjTjNfUXYKems1THtJSmhVRlNjLS1jM2tIPHFFUGtI
UntjKmtSKCQ5RXBiSnVaMCRkaU0wWi1aUnhSK3EyTksjSXdxQ3ZGOTRrCnpDcH07Q2VBbn1VPU1t
NC1VUzN8RXo1MDEyZDUhWCM+XjBNQ3VHYytZNHx7RipkZWZgaz4jKX07WipUOHotcSg4JQp6QGdD
PWBAd1J5e19GbWB4alExUGZkJWNmJXBZYCRnPkZwRWVHczAoemtJQ25EcEVXKlBlT353Mz52UG9T
Zl5TRlAKek5aKFo3YWxTZz0qfWZ9JEh+R0hlYC0kJW4td1NAaGUqT0gwXyFhb2deanFsbnB4LXZY
Y20yTmhgX3Rkd0tpb2dYCnpmNHNsSmV9VnNsez9HWnBAQmZ8dXhxeSY+ZmRRRVQoKmkwMz9oVikr
QE1nZjUwZT1QdDIxVyZAMXheWEgxPlBJRAp6Q0doUlFadnhLLWckQmgwV2U0ZWs8X0UxMCs3WXhq
c0lofUBoc1h9OzlkN0N7cl5Be0t8TFg4YmhoSURUYzh1em4KeiotX0srd3ZPdk56VEVOaWo7RGV7
Z0pYbG8xKHlmazZUQ0l9Z1cjVit5aEVad2hLSn12N0tKPD5AXjtBS1AoXjZwCnooOUJTNj1wQ1Yo
TGY7S042Nk9gd0ZEeUgzWDR1X2YmeFU7KmNEeiRhcn0kMTJKNV9nRC18NGtaaGRMYGRNfElCYgp6
WjB4K0VeOSE5bj53TGFUdVAqNmJeaitAaXZhUVNCRUAhJi09JGg3NS0qczhuP09oTGFKPk5+KVpG
c2tgWnVmV0YKeip7enx3TkI0bzwkOUojbHt6JihDeVpfb0Z0akN9cCs4KWIjeXdLeVRwN05kcGQq
PTA9K3c8fEJidjtrQHh+fHZBCnpVS1BGOF4/Sk00dWgoX0hGNzNMUipSOHRsXzNNdUg0KCZhKHgx
c2x7LWYjNSZTPW1YTXR+NHFpUktCQTstbHUxdQp6UUdGYD1aMFBmR3A5fHNyIVk3Ml45PTwpaXB8
NC14PGk1cHlTTX1aOV9qcDlfaEA2TzlCYzZgPEQkK01ISWtHZnoKelpSRFFGR2cxQWJDUGdpWSs4
T216enBua1ZgXzFZMWJpYzNyMmxnTTx8Q2F0NmB8bHMlSDZWRkYqP0AtIWReJTcqCnpGa3hXbiEx
ViheeG42I0s7YE41PkFIS2YrMkcxSyhaWk9AakByS1clMUVTTlRYR0szOXthc0F3bUB6VDgkTHgl
MAp6UjdJJCFzUDAkb1FDKHNaNyRkV1pJVCN4ZmR0PmJGdjlIQWI1alFZUzhARTFnemRCR29MT294
LU9NTjIjYGduYygKekJrXkEoZ2VLJTlFSkBnJSgzRl56WGk0MGJjcX1PKj5FQClHcXxjTVhsNT47
cU5xI0BZR2JKTnNlIyl5VT1UWnw+CnpaSypHJHt5ciNyUH0haVpnTUojXlo/Snl3cm9vNFlnYiZk
UyopWmhMUTAzNUBoZHdzKyg2QnprR3taSXlgIyFDMgp6bmxBMGh3ND48KihyMmJXbGlyeFlXTFBw
QCR+Y3Btbm1JND8lYDhSTSRnRXtxOX1mPjFLNEpKbiFAbjYzS0I4cEEKeig8Nj9MT2MqKEw8ZVFe
Qk1+eG5KfEVTTmlkdTQwMHdgM29gRzNteTZIQC03RVYwOFpJaGVtJXRYNWJqaG17KVMtCnpJWEM3
IWtue0R9JGchcmVKSTlmNisyYkE8Kk8xI1VfbTxxK0BtfUx8JEZDcCVWX3QwRHQkQk8kTC1TfGta
X1BobAp6a1dzTHI7TlhQKjZEbFh7cDRlZ0h3MjUwTG98JSsyWTJ+Q3Rne3MxTmcmJDd0S0dgc04q
QSh3NTZRP3ttPDwhKlMKelEmJiR0R0EmYCs7JVQydj8+RGBBYFVmfDR6c1kjaFljbzJgKDlIUFAm
N0w8O3hfUnIoN2Q3S0Y4I1NranZXc2VwCnpqJXpjdVlxaGBWKHNaa0kkTWkkPUVBPlo8aFpMX1l7
OzZiMCRwYTxGTns1eE1EZ0QpdVg/VnpSViY8cnNrSXA8KAp6SG0rPVE4RWMkbSsrT1plZXNsVERy
VnZ3Xj1eZ1dSPTR4fCYjcXx9N0QtUFh+ZGR1b3RqJDF9c3AwdnVXKTIrS34KelZLQTdndEwkSFNY
WFNVWmhSI3wpPnVsQTtzKCkxblNEVUtxVylHWncqWCpObk0kQ0MpdUUkKk0rfSplS3hwbT5LCnot
XzEqKHg4WEx+WkFHezNwNUolPXFXTVBfajlsPjRMY2ZKJjNxUUpAeHFhcEJDLTBiYSQxOTZeRW4y
WVhAU1AqPwp6ZTBwKXZWJDAmc21rZTYrPXUoZlJoTlUwaHJNXyQzVTYrPldtaV94fj1JJTlqVSVX
P3EmJWMrKUVgTS0yZHZFYyoKekFGb0pVQHlMQiVfbkdlZD9FWWMqS2VhTT08KCFwPUFJTiFOJDEz
SGpXdmZvRXAwV0NhSFN1ZDZVRil+RGFfeWw5CnokMl89ZVVCdFRrKT9JdzRecX5YbUd1Q2dmPX47
N0UmNiRVRjVBU14+P1U4TWRfSW1YME42JFpJYzxoU31CUkF+Vwp6N2AxV0Q8NmUpP2RpPSp0NkYy
UjdCS2U2ZVBqLUx1P2tBZnpuPkhWTUQofFV4d2peIVl2YkU+ZDY7STJidTYrOH4Kekd0LXs9Xngz
UnVjV3NOX3dxYmtjP1JQJiVvfndOQj1qVSZKezw5Wkd6cChwWCReWTgrViZzYzhGTk1DZVk9Pjtl
Cno+PmJCPG1oTD5YWXgxdThtdjRNfF9iWT41ZDhzejBjSnIlIVVTMG9NcmBKfXo/KVVubCpWI0Fi
eW05S3lpWl8zSwp6dEtfWjJ5SnplXl87JXNqYGA7UD0mZDJZTGUpcytOTSFmZy1wN2NGJHlnJWdx
UzNnTW87Tl5jT3w5al8kaTY4RSQKek9RP0o0cWxBeE1gWikzOTlpSnE5dmdefjdQaFk3WVQ+dHZz
VlNDQCZtJG1QYHtuYDZKSlRVZV57YnYoQ2B7TUl5CnpwQzlAe19yKl9OOG94YTgpdlR7Qjk5OzBW
PWh3PmBJeVM4TnJzcD5zemE4LUhfQ3R3PlVpJldWeVNuZjV6ZHZ8Ygp6ZC0jX2h0VXB7bHZncFVh
QUotaTFlUlJ1RGFYLUMhWXthb29mMWRqRGt6WG8peCR4YGEtLTNVdVkzJCRsO19xcHsKeipCdmlC
ZSZtR1oxcENLNWV8R3pHXlUzJj15SERrd2BzUUBgPT9pQztvJFlxXnNkTEhhX01EJHx7Xio2T2l7
Mkw+CnpZI1B3PyVCOWhsekdsbD1tZC1XOD14NnszMU9EX0tONl5HKUd+OTRKdjRGY3xATyVAVEp9
VDBjJGs7RX4tJCgjRwp6eWxoNWg0IWsjI0FvQG1oNUR3bENsMF91SSRIJkxsQyYxUz9BbFRvfUtl
JHRlZlBmQzJ4YHV7ITNKdldWOTYqMmsKemdMYFJ5bWooTCEyTD1VcDM8fk5QNzhEY3xoUFIrRkU9
c1VGMi1yN0N1biFicWZrR0JlPGlScFV1IzlhVzk+ai16CnpNPlkmeyR0Z2pFTDZkXlc8UXxAMC1h
ZnY1ey1CTz5fTExGMUxoJFRKV0Y5aHcrKFlpXj9kOVhDMnZDRCh1KT9FSAp6TlVVZjJjdWk+ZEVl
cXFrIXRVU2pkYDkxaFBJKyQ/c3BCb1QqSnBaMXVGT0NGLTNoSFZxNFVOVT91ZzJJcGc9YyMKel92
NXoyRV8pfEB1bTlzO2l7OVE+ZEhCeH17Wj8oZF5UcE5nP0VtNTk2RUQ0YztLLT9vI2pfVCNkMit7
bHBaJDBgCnpZMj43bXN3SGJUQDcoa0coS0VxQkV7RUtEJl4mcDJjX3o+LV5vYjRlZkU/VHM5X2tz
bEBjdUImIUNRSXQkSkclPAp6LSZ0OzduVkh7N1ltR2s8PjRoMmFqIU18UTdjJWo5N3YxbSlpOGxU
QlZpc0RAS3xneUkqc24te2Z+Rlp2aDdyQGsKeiheRnE1RjQ9TyZeMilRWEZXcWBEXk4wMH48PSZy
dFN2S1VFQDwlPmUtKVpmPHl4cH00dE08KSVNbHM7Kj4+akA7Cnp6V002Y19mTiZIZkJFMitycTE4
YUlyMyM/LUx0M1NfOVdKKGIkJXxTYD1OY1cpZ0MtfFZTM3x+dXo1djRBSkEpJAp6T3JIQ35ecmIj
ZXRXRWoyXnlfYCZfZ1V2QmRea3tqWFYjNUw2VkFQTStCOWloPW0mJGxSYWMrZzZyT1lid08jTV4K
ejlAY2FJIS1yWVlZcjZKSD9STiozSmgxRlM/LUF2dXhsXnJ+SHlFX2IkQTEwVStOODRBQUx2eyhe
ZHszeTwqKUNVCnp7PmtmfkRsKSRyZVEqOFNtMSpQT3p1Z3dyPDNWbG1WTVdCUXF0OENOZWJhMyNL
SX1hJVdNeV9sdz1sUnA1d1M5Ugp6S3o3OCs4fXMwezNJTG5nUG1oTFZNPW0+V2Z0T1hBUiVTO0lm
RkwpNVo9Tkd5OTl3QGhxfGk1ZGA/KEcqU15lJFYKekoodTI/KUJCdjNDOUNHMkojKj5ocz1iQjJr
dTIlTWwwUngkKHY+Qmp8SUNzIyFfSkxsJCVeXkV0ZXFGUlZDOVRJCnpkYjh5RUglX2MqeEB+KHFC
S35AcGllYnN2YEFATkEmIytTbXQxZ1hhJCZxMX4yQy16QHFkbF9jaEcpOztKWiU1YAp6ITtoWi1a
Tj91ZlNUY1ltQyUkZDZvJjlSYG1tI0JAUVo3QnRsQWUmOG5WOFhZPDUrU3BPTWNuPi1yayR1VXBl
RjAKekMjUU8hSiRrOGooblNkTEBBKCgyU1RjUFd5WjZ1aVlyWllgPkJXNl8qOVIkWWRILWpkYE1I
I0BkSWFBNCNRT1FTCnpKaVRFek9TKktAOXt0enBaQnZjIVhyb1c5Rk1NST1vWW0/QkMlLXNhKDZz
LXpaJj5uVD80eVUpWnVzSHM2NGt4KAp6e1FKQT9kQXN8fEFBVUpGXnZUQi1zPVFXeWRIejhDXlFs
UkIjVzlnYiE9TFdJdD84WVBCY0RuI289SlM7cWNiZXwKenY4LUYreURMKn0qJVA1IXRYLUN2Smxg
WEQxWE5NSzRPbX5kLUh7ISF3cj1jUlN9RkdyeE93aTxAUzgoSmR4bSRICnpvZSVkN157REgxP31T
JGVGRSlQaCs4NShINTErSF53Y2R4MHYqZUM8VVZMOU1lQX4rODRYPjtgKjczSm5jaSgrMQp6UCtL
IVNCRGxCd3A0V1RUejJ7WmpjYWZzK0ZOXkN9eW5OeD9DcHhVMnJlWEt9dT5SRUomK2hia1JXfHB3
UHgxcFIKejYqLVo9OFYwPkZeMWhpREdLWU04ekleQUwxZVEjRHJSa0gtSilZazcoZX08bVV6dXJt
P3UmMG45OEBpMU5weyZVCnpyKytXSk9FcWZuX0whVXQkLW4zU0c0a1o0YDZuS19iPnokQ2x8aD55
LXY3K2p4YFJVfD9hTUVIX1RaRiMkNmxEMQp6U2k3JCo+OT5aSC08fV5uQSE2MEBfWWBAK1V0KH1y
TV98TkckY1c9VUhBSmpEY2heXldLIWRlcWNOWSZASSF3TVAKenhfVikxVkJkZjEoPDM5KWBYd0t2
akopdGQtKzc7PTRHRW9tLSUlZmhTXmUjNU1jTW54aFhjbGFrUkJPemxYY3lQCnplRnElNUtkI2Zq
IU5HbCgtMHtQYiV8R05XP2JWeXp8TDZYLVBpQC05a3tfMHs8ZE5ULVVTYFI2QkBhNkErS35AYgp6
PEZpIzQ/fDxYWjJBMXBgY0pZU29DeSQ8QWFuVEJWXjdeIXVyQH5nVTxieGg4OFM/RH4wUFgmX2Rv
Zj5JSWVLfmEKej49aj9uLV9EWEdtU21XS19xSmJyMD1ScXJzZU5CWT9BcEtiIWlyUEMzb1FCUk1y
ZGc+JlcrfW9fSiE8UXduVSFrCnp7Uj5NelYjJWtnU3UqZ0FLaH1iajBQWV5BVFh7SGRibU9xa1Mr
YnJiOD9MYEpWZzM7bipGQExAdWRtRkdpVD84ZAp6KDkpXmhJfCtoRSswUTtWa052b15jV0hUdGdi
fXxUOG52KXQ2NHx4KiNxM20pNSgjSSlfNEdVT3tMVXt2ST1UMTkKekErXl8pdVFpPU1wcXJDKEtL
c2w0JSltfVZjQnVFMlo4XkVNKH1pRVk4dT9ZdG5ldk4yb2AxQ0Y8clN9ZDdhbWNwCnpOWWcoUGQ0
Qk1XMUQ2aSh4bytJcmExVSRuaWNRX1YtWX4yX3IwSiYkJG5KTWRYRlRpWHJvfFhhPDdEQWNMcyNs
dwp6Wit2MSYkJjtWb3dFT2g+KH1PPm9fMGxLbTtxUjU1an4rSzt7SVModiMjbm5jOXFAbXEoQCRy
RU9xcE4pZE9qd3oKekB4a3E1UEFHRTViIWE/cyt4ZWt+N3VgUnQmY245PF8tI2tLb2NyWFAqKFg7
d1poMnQme1hlQ3leIzV4MiFOaUBXCno0U1B6OEZCTlRrVERTQ2BkJEpiMl9zRTl0X2tBZXllZWtg
RW48dEVfekJkd3hiazl1U3Z9VTYzT0hPeSQyU3hePAp6dkIyPkdfUEhITUl4R2o2TmY5Z3lDXyRN
fjNUXykqUl9keU41TWhASXAjKVYwTG9YYnYoNkxLNkw/ZzFlb0UkT2AKejk2clFiN0Q1O0thRDlv
JHkzQHMxT3VSX2VMdit1U18yPExMQXh0Yj9LPEVRdUVWNE4yI19gYnVPQUloQHorP3p7CnozYTxV
Y0A4U1lOVXxvclNVaFdgUWZ+VHtsR1JkajJhWjJISVI9fWZwT2xIc0RXM1h9cUZpY34/Vit5Kykt
dHAlcAp6MTchdzBXdVZgNkQycHVJVUtaSXYkRmomfTB1RVc2Kz5WPGZnQnhnKFg8R2RBWEhmN3hV
KEdFfl5GYkVDYXsqMTAKeiRjciM2KzxgeyZCQlpxbWokbVgjKiRoYXNgMClMNFd5X3QqRjlXb3h4
REVwOVVjX2FyRz1VeCRNd1lsQGx0REQwCnpaej59dGJqNys3KXtrXkZqTEIqTmV+K1JQNlpieWJw
dT1+Iz14VXpVU1kqVV5CcC0lMW4yTWA7ZkJJZiNEbDxGMgp6OD82PF57Q2duOXVRZWltQUdxaWJW
Yjs9ZU9vTEpnLT9mIWlzd1cwbUpYe14mIXNIK3A5X1dsYD08Kk8+QmM1SmMKelU/fHQpJTV3Vlc5
fGVBVnRZO0Y8TXslX1VuSCVGYXt+PDEqRlkkKmZqQ2RkfCRxdSooU3dob1VMVmNIRFBCYGpnCnpX
KFEyOEFxZVIxK0AhdCZSPSpITyFSLTd9aF44Ym1WVTI7dUJ0OFdBRm0/anwzZXYoZXchLWdlWG1w
T0hDazU0Rwp6TUF7V3ArbSFzV2pSJEJDJkFnUkMwUDVJQlNgMGNKczh4bFBFPUwkOSR9Zz51YVRZ
THg7NExFMWplZXNuYjQ+VjUKekhgJnEhempQRGxtdXx8JF5qJDRgQGk2ZDNQTy0wPz1XO08taENm
Xm88UUM+bHdtMTk0RXVjV1M7bGlIKVBtNWg2CnohZn1DNmdvaDNoZzhTMmpNPGAqMnghUCR9KDly
X3x5UHVieTBfdFhZVmRsSWtfJkRXNzBLeChsVH57O2Red2tjbAp6a0FBflZhREZIcjFGZjs/a1g8
OWtgfXF3WD9CfWNFSnElaSNwRHpMYzAtQTVMMXpoeWlTQjNiTHtWJWI2dHAqTU4KenVjMVJSV1Vq
YGREWTBsT083a2pCX1ZCek9BN0dkcXo8RVJ0O3F5IU5kUHZYaTwqVlhqPD1iVyhfMChJKiY7U3El
CnpqMXBrJiZZLXQpMDRgZzY5PmorI1R7amImRExuPDs4RlBCSSFLJDM5Z2RAcTczfCNufSZaOTF6
Mz8yeD9pdiFZPAp6YXBtKD5LXmY5NTdSX3dzUkUpcVVZJWpLcFZ4Vk9YQl5IVl5EPWRJKDNIRVh0
NU5hQUsrQkRFR058QSl7eU1qWGQKenMmMGYqOGpBVmpadmBVeHN6dytyUnZSbzE+YShIaE8qU2tN
bXghK18tPT93SFQ3cmswYlM7N1R4Wjt3YmhsNihZCnpQQUN3WlVUbzdfOUhIczNMT3A3QjF6M3s2
NjFCMmVXMz1qcEcpMXMobEcmb21IX1U8ND9GR01GaT1PalYjKSUtYQp6KXoleWFZY04qNXckZiZw
I1JzPTRsWkVoOFVAPXl5aFYkfFQwOElybGlIa1E9bGArWSpucXk8c1lONCl1UmJ5YTEKelBqQTVq
YSlFPzt4N1IoPyRWZWxVI351Y21NWXdwVEBsfDI1JExLWEUoWkV3STB9c041V1A3IVkocU98WWFW
QWJpCnpyQTFAYWx4UXBsWFpVRDErdHlyR0luSlUoSXR4WEVeVy1oRnYxVn0lKHJnN1UyVEY3NyVK
VkJeP2I8ZzJUNU4weQp6V0F2c0hUUGZjamw8XiM0Um9UYFgmMlRidGt4e1JWZyZjRSZmd3AyZGdA
VjFzKCpnXnY4QE5gRzFjRGU1VGNBKX0KekhgPU5saX5IRTJGYDJPaTJeRH5FbCFJZCg4cjI5Kldw
IyFiPzdiVysxMG4pNitvbDBTNHJqT3slaClXSFZseHJoCnpEOStCeFZBbyluMTQoTChgQzFLPCkk
V0JoNEFBbWhkSzZlLVdRQll0VypTbyp0KyR3M0ZyTlN2THVQMktkTHl0YAp6ZXlPM0BOcDRgZEdj
XkBmSjVxIVEhUl5vcUFhTnsrIU1WKSZIajRxaW8+MjxweV4+T0F1UTclYWpqaHQ2dzw7WnAKemsh
MSV2NW1pVnIlVX1XOUgyZ0ZMYXZCdyYxeShxNStmZ0o1b0pTMm51cnNqQm1AJns0RD5XcSFqZFFG
eTB9aGBxCnpiSSNpY2dWOUowS2xuNVJoNkxlMm8zQGEpdVdGKmtTUDRib3gpd283OzhUemtlQio/
ZUtucnNqRys7UDJ5P3RuMQp6MmBNfDskIyY4VSo7MCklenwhXkQlSkwla2pEbUI/TXIqOTQyQXhL
cjkqQFNjNWVZcTwpTX10OUlrS2tJWGhkLSMKekg1IW1TaipYXzM0bC04QmszQWZfTkV8SEN4R0ow
eld0KW80ME5gMzMyZUZQYiomRDRZenRtaVgwVWJkMiU1X0dgCnpUKSNsJDNIP1lNLTtZcUJDfmt5
aT9JNkdHIXBsKkBoe0I2MnBDZjd+djNTSkBzYVZGYiVxVHREeiFqTFdJM3RYagp6NjElQTQkT0Y/
bzB8ZUdzc2tCbH11PEEhWjdsKj1NVzI5cldOZH0jKlJPfjxDPDIlPzE+Mi1FO0xTSmJXYHdGMD4K
enJoPVA1MnpqNG0wUnRhWGlNPjxkSTkhIWtZQjFgKzhpKlY3M3hqP1Q7ZlRSO2FFQjhVdW0rYHhA
VTI2SU1RYilxCnpAbH5+dzVfQWpwdzFocmBCUnFQVSYxRDlEb1dOJXBwdC1eKWdJZXw/RSVKeEtW
UTVBPj49eDQ7OzkoV150MmBkRAp6bTxWQCkzSG07WiMkPzZzWiV+e0otfEhkczIpIU18YlBnMkRy
eiZ6NGNHPUFYI2t0Q3dLbX1vLUNwPnZMT185M3MKemhMYHk5cjdWWXVFSSp1djRIMnwxSVYhNWU4
Q3B4LTw3aysjblBBcHQxfnBWQXNERShRcmxXSDspbVNyfk1kOCRyCnprdWg+TWZES3xVdS0ofW5Z
O1JWXlRtLTk7WnB2UClGVmwkfiFjSiM9OEdqfl8+QShhdFAwU19jVmRmRldsU3lZWAp6bmM+VnhD
WSNZUmNRQUp7T1BHNl40YjA9cjZVPTYyMy1kTn1tXnMyNldnM31OJXhQdmxRdihaWmVhTiV7V0lD
QmcKelpYaHV2bD8+e209O0tRXnZZdHZ0JFAtTkFGaHxPKyVBVHdiNlVHaT1yIXFjXzl9fmE/RiYp
WFl7JHdoZCVOfTdwCnokbTZWJVktVTFPMXM4TClVU0J+WWMyWSlpNU1pRmVtayQhVzBYLTtAK2Ve
NTdBWWRgRTM3S3F6YUYtKlJmVEdRRQp6YSlIYGNCOys3ZmooTWhHRz88YiRWLVZiblYqeFNLMkJS
ZEI5NE87VlYzKk9yRENPfHZfU1ZFVXJgYzhEaW8xcm0KeilZbE1LeW9pZXV2N2w1eDdRZjE0dzJ2
OS0lcz9mMmgqfjFNVEJuJWByQzl9dGdkWW47d2c3b0d1ISVyUF4ya1YlCnpmcis9T0gpKkNTNSt1
RFZqWStIZTV8YFElKDJfT1JtOGV7NE47c2dpb2BrOWtNMEpSTFJIK2hTJX5kMiYzfSohaQp6JG5q
P0M1JEdPVFFJNHBiUlVAailETXM4LWkoRm5ROyEtNjduNW1BJHEwZHdhViNZcWRRQEs9enM5ZE4q
UkJiM2kKeiNMbUUlR05xanQrcyNfYHNEaiEtVT9adiY7SXV0ZExCTmZ8Z28hKHlgWnJTdXhLOy1e
NWxmdDgyLUZmTXYjUXFnCnowNG1wNzBQSzduYnBTTE9WY3VkLU11NzA2OWJzPG1KbyVeUGJDfitt
Y09mVzBAbUphQm8oe0Z5K04yKndNbEdpTgp6RHdoKn1JeEluTGZfLUdoNld3e1QmbmJ2ZEx5S0VP
OUgjb0pXKXBxcnlQSHEqcTRoZ1heNyRIZXA1V1VAJFQpcysKejkzfDc/aGNGfipGfTElY1dTQjE7
NG0qZW1QSVcrbTRzQG1nUVJWOXB2Vn1INDF6UyYkbDYwJnI+WEJnNzMzX2BpCnpiYUhrSV5XNHlp
P20qP05JWiRPOEgxTCZCJl9zYjs7YEElYys4QD1Kd0tENykxcTs3TUdLPW0tTWZKRF9ZfGtANQp6
Jj5NeEpSekNkI0RhVTEkQCRBelVSWCUqVHZ7VmwlUSpXMX02WmBVVkhWbyF3TEVtZzhCTEZ8X044
PnNWKlozJn4KeitgKnFpVzwjZkJmUEN2ZnY1JmlKcW9IZmtnTDF6VCReYipnREB1aEVUYX5jVCFG
XzwwM1lWQ0tXSGs7e142aFktCnpJSllrV1JOSzU/aztAbzd2fUpoY3MqVFhKeGRmODw7ansydklw
TkVoRm8mVWhFWGQqMyNIY2llVz98P3JqaUlHNgp6R15+JWRZeihjPDZRblVUNCZ5PHZ4bWF6SyM/
VEpTaW8mUSs4YmRvVHNZenBLZWhwQz9MeUg8bkl2TkNfQjh7T3oKenV1NWEtM1UxQipLUSlGUEkr
V1YjKj0rK287TT4xd0AjaEpiRlNAQl9majQyWjFIamhAZVRDeCUmYGxTWChTcCEhCnopa1FqPk09
bmVjRHNUO2E3QncoKkBENkx7SnIxVHhtUyFtWUZpZjVxT3UmUj1CJmZ3NVZpQnpEOTU2YXNYeVY9
PQp6ZzwjYyhIaVNtckRpaFg4bnA8VmtRJUo3RER3OWsxdWVRcFp2Qyt2WV5HJm90aDJOWD5QSCh0
ZDhaOSZEIXhoMDwKeld5KDB+JXt3VWs0ci1Ob2hxRn4/UjVGZCo0eSNOcj95TWJ9OF9xSF87LW5q
dm5aST5NaV9HV0pXLU04YUNZbytxCnpXX3JfXnd2OEhHbSghZzc2WU1rN1orbnhjSXo3UFVUSDBw
e21hdkg1JHlUJkFgXj5hXjkmP28hMFMzPCZfTDwwSgp6RSRsUEhkJC0+ezZTWEtwLUFZIVAmZFV5
VHo5RmpTIzEjZ35OfFE2KllgejJtIT5IenE1RDAzJTM8MG9LN2IzdlYKemNfeyhfbXNeYTBBZDsy
bDZgM2tpb3BlaHAlX1BaNl5LV0NORFghNSNEe3grPTBmNGFoOz1FMSs5K0h0SllMVyFXCno0Z3w1
VTdFbCRfS2hIP2h7aVpIaW81OU1VV05rKnJLRn41R1ljcmM8WjY7WnB3UThjckUhPlZaT1YoeH1F
VXY8Rwp6T3xtdj96Q1RhMEhzaF4/LUkoNDwpQEYzdkRwe0x4eVY0fFVHZGc/fDdQcCNqQm9paCtQ
U1lORFAxbUhBR0hJb1oKekUpK2BFWDN+eGdYfnpaJStOJkEmTjtAYCl2fTEjfVJkMkNXKCl2UDR2
dF5SWUV8TiVOWHk/czkodkEoM1RnfSExCnpxI1lhNWp0JT0rNTdMZn1mN3AoVmYzJnEzVDNMQkhT
fUkrfTs+OzhNfExaTnozQFRAZkd1fFg5ams3N2tIfmZrcQp6OFV3KzFZZSo9NjQmV3dtIXxgPCNL
ODlNSGpkOFgoOC1PUGo7P00xSzA2cC1sUn1jYTVATWklPXhNNlgye0NsKUcKemRuUFR7aXFFWlhU
QVg9OC11MVd9b2FYVkxVfkx2eHV6OzJZWmNab2dVNHpwQStpaCl6PVB+aj4kR2l3SWMoJC1NCnoh
LUZQVVNlciVXeDhLQEtzOGA5LU90TGdYald2dXhyU2t5KWNoM1Yla1N4dnFIa019Z2VkTiQrQn52
czBARnJndQp6Mkw8NTcrVWNsKHwxREU5ZXN6Z0VZUWU+Nnc9R3BLNCltY2EyIThwRlM1UjxBWDI4
cmBGaUhBNW91Vm4oWEZAR0QKeko2aSlGRWw9MEBBOCQwUipre0pOSXg8KFgoM0M3Uk8/RFk2UyFo
WlluJG1mSXRza04mUyFtKlM3cjBUYCl2USFZCno3TWhaVUNZJjxqPk8lP0E+YXcpRDNgZlF9Pz16
RURtdGp1aHczQUYpVTZ4anR4ZXh0Rj1LK0VhSz18clclT2xYRgp6R3FyXj8hPSpFfHI4QmkjSVg3
SDc1MEVOXnJTa3lza1h+VntsO2J5fWd3S3FAPXYrRWUrcj1sZ3IxSm8hXjhvRksKemJXO3R5Y3RF
JGIlU3FiaF5xPTQ1XnBDZEMjUGF8PjFrMWs1U1o4fHVFdnojd0UxYXp9QGV8QU5PQUYoa2E3WEoq
CnpKelFDRS1Oc3ZJVUlhRyorZVduN3Z7Q0MhbzNuTGhSNkdzUTQobStNSnAzQDBxamhHKUB5bENo
cmNHQVNheyR3Rgp6RSU9PTFyZ2YkbG9McH4hbGp9P1dMSDN5YF93WGVERlI7JXtObT9MZSM/ZH1B
TyNyJkUmJXtyP3gzSkYpQDZ+PyQKek9uYzJyN01oWlVyZXZXaGQ/SGJwTn0ofUppXiZ1S1RZalBs
ZkckNSQxYUtGaERGU0Y0QTFWPyk5VncxWnw4cmsjCnpQTHdQKHwyN3R5bEMycHVCZ3hrNnZMOUAy
I24jTTRRPHA1d0J1Z3tOKCMtSzJ3JGZSRShwaUFnUyU1Q1NWa0Awdgp6QkFzS3hlYiYqJWs/K3p1
Q1Q2U05xNz03S0hUJnxWZU1kfWRwRzw3XmgjWSVWPkMzWWZSXmkrfkpsOH14ezlKJVoKelUhSkFn
WktibVNmZWcqc0FGQGtwRWw+TEx0Z0crYTt1TztIMyR4TiRmWU1vaihwaTlMazkwTFZFVGwyQ0c9
YFNPCnomPXdzR21IQlZXeDNNVkZ0UGkmamdqPyYkcjc8KlRGRFZSK3JRSTRSdHt1UHBCa2s3RTdf
RUFhT0dZfl9CUz5jZgp6TkBvRjUyQDhmTXxOVVF7I25iVVQ5aiVsdVZ7UFhCeDNEJncrdnNGJUNS
bXhKTDFGMW4yRFc2Xl9SajxDXzVSQWcKellueG03TGlYREp5K3ooKXxJWEohYSY3Oz5WKH1XKypr
OChCJGhwQHp6dEAoWTMoNFBeeUQ7ejl3IUpONkJAVm1oCno5UUw9Q1V+Z1N4M0FQWUFOXzdfZ2c4
NURwQUdJdzAmX3Z0KnQ2fldXdUJybHtUQWZ1RDRqdXBydTR9QWdpJUQlYAp6VHwqOykwOC0zYGxY
VlRHd3Q8QVJSVFAyfDtpfDFBZ29qTEVDans1bEw5RX5qNUUodG1JK2tyekwjIyUmUERvT1gKelMq
b29LY2dfYUkxM19kfFFVO0wjNSgyMEUyOU99KU40KENucndMdnhmJFduZXhHbjsyZD9WeG55KlQk
SikoY19xCnplfkNUPFgkVEdpJmdLeX5HPkdhdmpldit4TEFXTDw4JGJ5c1lXUj5+NStWTmVnXkNH
byR8QXUoZldkemdEe0JsdAp6UGR0RXlpaT1OPkBHTX1rVkJpU0tSQkNwZXh+P3ZxZ2pXRzsxIXNq
PCFNX15BdGdCa2VXXnJyPVR2LU1HPmMpbksKek1zKmZqKlQ0ZTVnaFFDUitQY09HSm1VZEU7NTZW
cyh5JEl2JFlMa0pvdSk8VllJIz1WIVhRSnwqM3ZLIzQ4djRxCnpPPXcpbEdiZyhhU1R1WW87QlE8
aWhRVUpnc3R4QTN3VHtoTiUyb3h9djIwemk4MDBMRzFMS3x7WX1SUnhJfDR7bwp6PXlYSGo/Z2NG
QmNZKnhAU29Bel9qfnVRT3opeXI7T35fcXY7cXgzXi0+XyNgJTliMkEha3dJRWt6MH02RWI5anMK
ent9MXEhO1FLMyEoVUQxaVd6UGFpJE81emsrREBiXzA4MlRAd3tVIWM4V1NXOTMyJFZKdDJpZDFM
TXxMK1FXZ0FqCnpWUypiUXBzRzxLZj1yfmJzKGBCK3d1Kkk1V25wYj90O2lAPFN5fTMwNU9QKDtH
entRQFVvREROV1pXIUJQRHEqeAp6SXFwUzlkPzxAfSFRQmczMkpUcGtTbSYzWk1sVjNeSCZPT0wq
Q2xldz5IYSY1XjZmTng0I0ordFRMMTZGMXVZdFcKekt4M2dnTUNsR0tuYElsWTlkWHBhcmI8OEBn
cmg/WiU/eDUtOVIqamhZTEZuYmUkV0ZjVG1eeXY/O3NKdjBTaVN7CnppeHUzczQqRGJUZlBNeT5j
b3AyJnV+LThqMHE4czRJUzIybVlzbEopMGw4UDswWmFvJGhgTkRZQ3dNczJBTXs+Wgp6NWhzXnZy
QE9rMlpHO3xCe0stSFZgYXdUTSNRPSV8dGxeOGFifXY5JUp4fFdDXy13KSYyUG9GKDhNd0gmVXVw
ZWYKej5wc1B2Zjsra3smflNlP2JEYVZCUyNrektvSXlWTC0kKWFQajJlcXZqZzZqPWtNNHFNOD1V
SyZfQGgjbGxCXnMmCnpTZ0IlXk55PyFeQHJpRy1KWnZpZUx8OTZTNjZ8dSFNJH59UDRAZEgwODlh
TX13NipUN1JLK1B7NWoqJEtDM2t0MAp6PXxvNCZxekU+fFdmSyNiMSlJcE1XQ1REPSM1TXA/R1ZN
b3NgRXlqUjVPRCRJdHtpZXxnJXY0MXNSQ3ReOFF3TEoKeipJYmVoMlFuMVU5Nkp6VUk7RDE7M3Ah
Sko0JmNpKzlxVTQ8MXpLUChxUG4kK2tYfFhJWkcrMjdUQEBzOylkTH12Cnpzc3RWbnFnMUp0YWpw
bztSaj5QNClsZ0M9dG50P1pZZ31gej5UN3tEd21EWFozYkohNE19ZiZ1bmBOWERZODUlcQp6Mz1F
SThUZ0V9I2ZvQ0x7NFk4M29ZKjBnJHErTkwxRER+eT1QNjU3YkhOUzF0UVM8ekBpTn1HMVQ1Pksm
UUElUlkKek5rZWxeU31AS0BeVEloM3UjITF2cVROWGE3MXM+blRXdG9vZFNAYmZobCY5eTEjaHRe
dD43OFFLaF52Ki1uQlNzCnpqcigxbklBckkxNnA0TXZ2O3BKPklGVG9uMz9qcUdiVFdAQFJFODxM
RFNJaUlLOGlsUmpFcz5wbyh4KW9fJVIpcgp6VjVTcTMmU1d5Zm5VUEYzcWg7PTM/cXJyUV9jSDY1
OHM9Zjw1b1FEUElPRlF2JklgOyVyaXI9NCUyLWQ8bWtuVHAKeip6Umwod2xfUDNvaTNEQE96VGdr
bERYdEB2UlQ8eCpefXtzMU91MkxyWHYlPWdzfT9OZ1l7dlI+PnplM2RxZn0mCnpXSGVHNDEjZ3I8
bXttaiNAQTBsaHhxRjFsaGd3MHE0PHx3KU1PQEdWJVkxPF5TdTVwZ1IrdW0tMXtBYExBfl42Vgp6
JDZubD4+JlBfM0xVaGhxezltbGd8SDhWdUkrPzxXNDU0b2xJI3Fra3lJU3k5c3VGbi02Tmo9UkhW
JSU/MG9nJDwKemJGcHBraig4PCpyYkRqQUd5NVA4OTxpZko7dlVIJFQydntWUGJfelVoJDxGdjBZ
Vihhc0FBUmhqdUo9fTNtRCpACnpOYmdCfW9NYXcqWT5KUng5MyM0N01WRllaSTVBJndAdUZ7bj10
PmtfTnVuIVJiY3QhR0EqKWJDNXgtaSp1Tkx2RQp6TWZ+YW43KFNAZmtafi16SSpHb35sQj1RVUFV
NER0JEgkXnlKU30+PkZwaTAjcUZ4bXJQeUh5YV8oVHx6c15Xbk4KemFIcDghUTxUd151bkNPZGgo
K0g3Rj1xKUpKeytwJThfRnc7YGRwMntXRGBjVTQ1Y3s/cngxekw7Zm5sVkxZMlVFCnpDfDRlejwx
VHlyNDVRd0pfOS1+RFBEbThFTTVLRnlQXytwbiolTClWQ0RPdHJRYkh4RkliS1NQU0hARWc2RjRt
cQp6aVVaOWVGXlBYdExNMmo/QygjTl8hWllEak5xfmoyQj04ITJpV1FlNkdEZWNmNyllUWRQTHFX
RUM4Zn0yVUB1dGYKemdoaz5DMWcxPzYlYnFOakR3Jm9sSVptbUBkP2MmK3I8azgpKzUoY2ZXQGs/
P3Yoam9hbXlnaEVZP1QmMEMxKX07CnpGTlBLLW5hP0ZSeSUye0MmTWpMUTNfemszdy1+cmhwfkFA
d0s/Yi1oR1h4bX1YK2RlUm9JTHE/Pk8pZ1VwaXFhJQp6bU1BTnJTQDUhZ2xPYFo2NSY7OGtGQ1oj
VjB0dW8qb3JubFBUSlJ3Z21DJUF6dkIoODYkJn4hREcwO3IwWXs+d18KejxiKEBoREY3NGQzNy1I
MWtwaFh1aU9vSFpAKlJqMEUoTVN6U1BXVkBhbkxTSjF8eihSOTIxdTtmSjg8SGAyalY2CnpsQEJ0
NiVQKXUhMFluUHw7c2EyRD1tNjlwSXlqXnRKTWRNTU5UVTJgcXRuaVM7anxUfFV8S2o9SHk3TCV4
SnV9fgp6ZnxOUlI8dyZ6RHN0e2h6fDNobThYN2IyZmVgKXRkRTFCPXUxZ1laR3E0OWo/JGJkWjZ1
VzVnbGZVT088M3N+WCoKenlTR1RCeGQxVlo/Y2IlQz03a3xRNVRIJVR2RThgV1ZuRXlwbmk0bGVv
dUNiSjZtXmBJMCglPFR7bjh0djs8UUJaCnowN2QhNVJoQjRMIU5DYiZ5I0pqc2E5c2VgfDFtJVZk
I1NpTlBaPnhZM3J3emNhMjEwTGZ7cTU8VzJ2ZUA0P1paQgp6Iz16WVE2YUlYLVcpbVpYQ19vN1hr
X20+MntOVGVxeWMwK1R7Ml5XflY2Y0tLOXFAc2FnU1dPKTVybjZFc2Y+WW4KelRHYlYjQklxYUZP
UW1JNT59b1RQZXI9VVYmez8+YlI/OEIjQ29NV1ViPmlyQD5PS1NOLWJpY04pQEdlaG9kI2ZTCnp2
c3JTKnF0KFliK2ZiRT0hITFGNz5xcn1EcTteI3omVUJUKWVwRFNvS28yR3M0dClZZXBUdVQ5ek0+
RH4/NHo3RQp6Sz1ldipfOUJZYmQ+QTc3R3wkNGJxN050KERVSU5Vb2lfPi05M1F9ZDJMX0x6aih+
OXZKUU1oTDd6b2sjQnhNVz8KekVyZ0IrJDIlTT89bS1HSHNPJCp8UCRpSkU3cjNhRkwpakh2QHUo
MHxjNV41S0JeJn1WVkRsJnQmX3h2NW48NkVqCno3TlU/XmFKN3tSbCEyPVpfb0trTG88Pm4jQyF8
NzQjaWkwKyVvdm5QdFgmKT0oZ00wNDEmNSMqI2JzR2kjOGdycAp6UVVTX3lza2wjTTcoY2UyaXRC
b1ROblUlUyExJTQqSWZISmx7YyF7YVhiK25TOU1CRnZpeHBZR2VNLVptcTViNiUKem40bXAqeTg8
cU4keDhke15hfVVAQ09iUzArOzBha0hFTXF4a3FfRkRqPnJmMElGfVBxRmd0NkpIK3ZrckN+eT5P
CnpGcWRuQyl+KntpTyEpWTgrfityKEV3KSEwO0I9Q1U8QkE1WSRYdE9CNypTMyQ1TCo7fEZkeVlg
RzY5MFBXVDJ6Nwp6YD9wIVl1MDs/YFh4bSpqPzUmIVk0WE4zZCpvS0tSN3NzVSNaWTZJKntrQjV9
O1V2Nz5jQHlmbEokWjljem43KGYKelBgfEZ5QSVsZ0VoenhiOFFfd29MeUY4JHVZQE9EdnI2Y2x6
b25KM2s5PypVQWRCYyMrI30lJlk2IWZGNT1TfUlsCnomQm5LajR7JDZoc0lSY285fGREczZVO01r
JkgtYXVOP1gpVjNrbmZiKV5IOztWVDhxdnZvTE19JXB4bDJVe2IqNwp6OUVRJChwZ2VSVy08R0NM
TDx4a1ZkSVVpc04yQG9NKlJiKGY1fHpfLXI5N3YkWiRtM2pobUBqbjRZOWhidGBKa1oKenRnNDtZ
Wi17IVdJN2R3eEJ6WU40SkV5bTNSbGp+a0kmZnpkQVhGcFA8a2psSG93T1JmLVpQMDtlQTw9R1BN
UXJCCnpYbUZkVTUxaVM4c3N2JjEjeFZqayZeUyZsJCFBJVo/ZztGfjglalZaNHVXZHIrKVI7bz83
JElGKF5OfU5SfiU1bwp6ZmhsMHtKZS08NHl8eEg0MXxveTxCUk03XkJebVZkJFRSVVYkeEtRRDZe
TllEUnJFejM2P356TUlwV1R6UU1zWikKemA9LTFvRENNejI5SygpO3UjaGRwQ1pkaV9mfmluYWEq
OEFWMVBHTG5wYWVCTFlTP2p4RFg0K2xqRTNfaEMpe3l5CnpGfGpGMFAoMlFMN3dkcnw0XyZnTTNs
NVoma1lsbHlUNip6UVR+RylecDBJRSp5NT8yYmFyUDNTbz9BIXw3MU1VWgp6N2FGUDZvMHZBMjFD
JjctQWNKaTFoYjkqfHQhLU5wSWhZbSpCOERyWno8TUhMTmZMMi1ecC0xcXwzRkZQeiFvQyYKelVz
ZWR3LVZPTk9PKDZ2TVQxYzR4Q217cyN0S0M5SzlVcWdEIWhvaDtYdHoqdTZoZ29zRDFfazdJaGE8
WWsqb01FCnpxPih4JENYciFhV3kmRnV6Z21FZGZxQFUwdGhnYU9zRkZ8YCMpdTB6RSk1MyRfbDdZ
Sll8K2tQM3wwRU5GRnt9cQp6XjR9c3NWOUw+TTJAO3pPbnA9aSg4ZnVeZjBTZ2VZVVZzcktOUlU9
V0dBPzRha1IzM1JOcmA4ZUw/X3VIYm45MCQKemw4T0hoamJ0M1p3USN2ezN8KDF9TTNFJGxzSHFH
TGl8SjRzM19SZTt2NCM4Tjdgb28lejcmRnEoMF97KjAlY2FhCnpyQkdaI09oU0MzXk1yPl5ycW9L
WGs0Z2ZBNl97MUVDV3VAYFpYdC0mT2lYTS1Be2FSUmdAWUpjVUVFeFNZTmpOKwp6TUpyZm1OX0xB
NVc/KHFZcj1rRXcxRT5tK1RrUGdgbEhEUkZHeWhYfGk9aDRJbmsmXzRWJT96ViFVd044bFN+R28K
el4mJmEwI0FKfSR8Mjg3V1NfV0k7O0piM0xmc3AmZihVV2AoQ2ZIeyRkan4qeDUpZ2k4NFN1RmRx
WSlteT0kPmU/CnpuI0w4KSlQbUY1N2VBIXNTKzFGQndpd04oNjVpWGgrK1kjYDcoIThPc09KNlFq
cmRrckMrYU8kZ1Z7fS1vZ2pgQQp6UFBzRXElI3khT1o+OFRLMWdyKGEza3Z8bTw8IWZmKkkxanUk
WiU3TU5wR3F3aGZ2ZkY0PERfJHlkdStWIUxRRSsKej19bnA8cWR0PnxARkJmOERFTkM5Yjdye1U0
MGFBV0dJdjUtcCpza1A8WDJXeW1AUElURVNFPD49V0ZGWGJucEApCnpnYSlqd01kLWsxQ0NneU5F
YkV9dSpaMiQ8ZFhtRUJQQnJRUD1QWXl+VlglIUl8R0wyTCl5dWBPYChJNmRlSWVaXwp6KHZTYSgw
XlVZIXhPK0I/Ym1JVFE9JnNyO1BzTl9vKT9OUSE8IyUxR3w5dHM3a3NkQHpkYyZXUntzbHIhdmAj
SCYKekFKPTdZNTkqQCt1a3slXypYcW42MSZKeilJeiF8Y1dsPytLQz9Fd1hXNlJERyZ5MTdvQHx1
a08wO0d4Zk1iKj9+CnprUSVsSXt6ZFI1O3UmQEZTT1omamZwdmlTKlJiPS1qPWMrcjtOSmwqdDY/
d0lkdV9HRExtO3U1dmEtVkU/N1hPJgp6PHJHZUYlU2MlaDgmRlRgU0B2V2hmRlUhODIyUUNjRVF8
VUdULVUxYmooRCEtJFF+SnFZQVBkOU9GXyYqJlNmVnYKejtLWSFjR09+UjZZNyZrRkJ+ZmUqMFJv
bmhMVXZiU0xxaTcxS3gjJm5XekBpYjtVPn0tTGhZKkElOWNlbm9OUXAxCnpMJjBte3p3cVItVkBR
QzhWe0hBZ2xObkZZVT04JlJDKzk2XkdzdiFFMWhDZkVxa3xtVk1hZWYwP3AhZUZRWEFAUAp6cGhK
YT0za0QkfUchMkZvIXYoNztufEVeOEpmTUdsMTdVWjtKITkrMWpFc3xmQ0RDQkNPdWchKCRTJGw3
MD0yIUIKenQlKylZZ0Fid3trTzIhcDwtcXdKV2U/SFFlanckLWkle0BvYUZQd0ZobkBkciVTYU9t
IVc+YVRraXg+VW52N0tkCno+aXtzVypyZmhzMUMoPCQ1OUFBM2V+ZV9YSDNBUzN6PWVnZTFOajJm
cE55S3YwP3FrIXhjbWE7Km9JWilFYilRLQp6QXE2dFo5dzJgYncqTE9CSUYtbmVhandRS3dMWlF6
VXUqSFc1WlVnWiV6KVFTMjdWM1MlNTVyUmk1JldZM3ErT3kKeigqRz9NZkhoNjUkMSFaLTBJWSFu
SzBHbyZWb3xUfCphaXpoMjAoailQTkZRVGhBamxxMXwwK0UtLStgX2ZuRWNHCnozLTJKb0dWbnxv
MGR1RSU2cEpUIWs+JShNdHJqSmNoYHA/QTdtSVFxNUs8Zz9jbDBNYnB5NjJBeUJNRSk8eH1UIwp1
aG14QEg3YHNkR2hkdT1IPzxKbCE/O2Byc151P3BGZmp3RHMzZnghSWlkKTgmSStKVkluZnhDcXNZ
NFYxCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10
ZXN0LTEtbm9ybWFsLmpwZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLXRlc3QtMS1ub3JtYWwuanBnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgwMGY5OTNiNTZjZjZjNDM3NTcwOTQwMTllZmI1YmZjMmM5MmQ3N2MKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDQ3ODkKemNtYSk4MlQrc1N5OFM1djApaUImcGAoWmcyb1I3U2oofnxt
MEk1bjxTYGVnMmtRT25CTik+ezFyQWlrTkwxYGpFCnpJc3QtST1ANjdJTyVnZzFeMEBjaHgjenc2
P3dtUV90VWFANXVsNFAzQDdYaV5UaHVZP0I9OEtOYFRJZnBYVkNwUwp6eypfS2tMdnpCT2pESGg8
Y1M0Ozg9eis3OzRTPzs2diR2eFE7TUBjTjAxZFNYOzl2cUMxQ1F3ZDR1RlAoaEwoZWQKeis2S2Vg
R3l1KTFsYWVRcmY1bUN+USV1WShqMHwpcWl+bTZ9b25sfS0lfW1jaWNOUEVgUHVQPGEoYk41ck1u
ZytTCnpmNUl8eGFCYGpJN0NYbm8lUGdVQU1POyR4cSEjX2pIUnctM19zPTQ8Q3V0ezI0bypmVUUt
P2plQGhoaiNAaEQyQAp6bV5lQDswTT9WdVhnRnYmMEJ4WGZRPmZSYWlqPnx0dk1ucVYqeDNKeG8l
MSRyK35hOUswazhheyhwQ0d0YDlqeSEKekYpRENEPigkRHV2QzNqIXJCQ2hMPl9iaT8+ZGtPQjw0
ZjFpeVBAZHNkZEprNElhX3l0YEpLY0pOWT5Jd3teYHkjCnpUYytFQEFGN1pAKjZlWl5xbkJXMURu
WilAXkh3KXQxVUZmakJAcztZNWVWLWNwS1hObVV6VWU0UmFoQCVXUTBzdwp6X3NUV1hrMDlSPXNs
YUBmdis+bUJOUVplX3R4b31pSD17aXQkfSZpdDhDS3N3T0ImMGRNV1V2Q19pb0ErN2RVQTIKeilT
akYxaGdEQk9zfDZsZj9TYTFSJClpTCZrWTklVFI2cGN1OG1rKVJjdjwkZl5WIXJ6e3hHVGJsSnxJ
OTxAeXROCnp7eEhZaE10QXxhVlJXT2hZUFFGRnZZMmljVj5RRCFlRWl4VEYlczxVP0sqS15lVFRx
I215YzQpd09eLShsKitwWQp6KFBpNiNwdFNEaE1NJW5gKSNsWShgWDljKDYqc3wxZHA1UWxlQmBv
cDFlY3dRRnF1RVpNZztaWjsrRHt8Vk01eHIKelU2eWxiQlAwZ208UD9RLSskYyV1QzEhUylNcFpE
b0lJVGZIXylGd3RtYmxofWRWRmZ7bmFkfnBqM2RseipvRVRYCnpwX3V2djtxc2EmUDNKYW9KKzE0
TDYmZjAzQEtHKD5taE1udmRkKkwlcjJzQTdraTNZfWszVXtUPz98T3tjXlNOMQp6UmhUTGc4ZT18
PCM3ZHsjKHQoRn1eMENDXlFVUVJIJDEyOFNueitwTElQKEFFSWtpOTF4LTh7JGMhV2lBLW1zZj0K
enJRbi1rYFEzeD1RaUElNVA+ZW5jNjh0ODJyRmQyISp7Q2EhTGpLTG5RUVhHK2Y+Tz1rbVVBa256
VS1+NXNIdzlDCnptWnpQV2hicFFiT0NsOEk2VkpZWHVGY1NiWHA9ITRhWTFVPyRAUjAxV3ZnfHpX
dnNpVlZaVypNbX49bVFZZH4qbQp6ajk3fCVvbCgtYE5XTGxrVDBHbnxHSVR5TjhpSGM8NUJ9Nmoo
WmZ9Qz9afk1PWillX3drOXFFRTh0bUs3WHBjUCoKelhoNTF+SFY4dX1Ja2F8fkI2MTVwXyV7YE00
ekgofTRvRGoqaiZ7eik9Rk00KiEjaSM0NUN4aUw+ODc/UiYkKURYCnpTbSRZZV4yMl8lQC09RTFR
MGYmPlVrTFJvPzd9czFhN15+cjtSWEViPy1mZWJKKHk4UiNgeVA8PCg2ZnxTcSZmRwp6Yjt5ZDFy
ZF5JQk0lNntsMkVIXmhkZHklcURSPztRdykkd3ZvSCRweD9IT1MtUWZYfEw5VCFyQyVZNWo+NlA9
JCkKemYjd1BoV2pARm1oNVBJRjFzaWduRW9SNCZCZDNHZi0lUyZjc1BXMCQ+OTVgXnIrY3VubnNP
eXAjUCEhfEJjfCMlCnpYRiZDaGxsN2xuTm1MK0teVS1WdSVnVjhHdDVYSH47OHNITzYoaXRAVndT
eURtdGtsKz9wWGBYUkdvaX1MfkxlVwp6NDFJOCQqfTJYQ2U4eHpvTShSS35NflVDZUVVbD5jZSp1
Xn1ffUJFJVUoO1dRRzZNRTx5Wl91LXU1SW9jVGd9VHEKejVBdktrezVMY3NQclJqJDYhNEJnMGZR
XjkwJH5CKiFsMlN0diUoUiomOzJtZXlPOFRPPiUyIXgoMDF1QU17ZTY0CnpHdHlrVXI8Pm4hUDRl
TiNmX09BYFB9NlY7dkd+eDdKVEtVaistbHl4JWtFZ0dkcy08SnJzPUdMM197bD40TUxLaAp6XkB7
aGRIJnJ5WVVgSSp1P1dZKnVfSElvKVBoQnxIUTJTVWJ2T2xCbXEmbC1iPnIkNTsme3c8Ml8rdEV2
M1VeKi0KemZFNDtYbHFiNyUlTUw9aGlTXnl0SVBkSmNKOERaWGJiOHA2U3JxSCRuQ2EodEZCYWtX
MVlzI2JTPX02cVhIdG48CnoyfV8rZzNVYkN0eWAzb2pKWFJtPVphU0dOZkBaK2FaKHVIdHI+VTB6
JlNDR3klcEBZRHZ9UGpJUyYocXNRRWVXKAp6UCojOUhSZGMpYHBLUXNzKjN0bzxWeXREfDBDJG9J
ZCZxOzh3SihIOU99UihyIUFjOWxZKFd4Zl5HRHZyeXttbGQKei1seWpxR1Y3bVRURDNrJUxaTT8z
Z2J2XkVkWEV1e1V3cWRLNWU3YCZsb0dwTmYoJGxFaEs2MVVlXj1MaDVqOEw5CnpZZlQkKDZ3IXl7
ZHUzNyQyJip0aDd0PipxQmlnbl8wYDJtI096KCokWTJpaXV4aGBnV3lPXil4cSNhV3B7WWlRQwp6
OFgwQ25MdGRpLUxnYHNodDQ2SFFYSn1eSyE5dHBIVGFtZFF7cUhCWkkraFZrR2N0NlJnWFMjOUJZ
VH5+XlgqQSoKeiRtNnoyM1Q2JiFBSisrOT5eKD04Z0VlWDl3V2Z1Nklxakc7P3FLKDg2eXJARFRl
UU9GYW8lRn5nQHgrcj93QTkwCnpSZjtZK0RMbWhiJDtUS3UlPj1YRj42NXNfI19XVWVVaGhLcz9C
M3pyRTEmPyRqRTxlUkBUT1N6YDZqcmRKbkZ2aAp6aXNYPy1nJGtSfGpLPiE7NikrXlB1STdLd1JZ
eWlEV1gzNjQ9dmYpSSNOVWxWVHVIcSF7QXRtIWwmPk9McHVIJXsKenpUYFQ4RmYhemozZWNPV0Fo
KzN6a2RsYEtnZjleXzA9aj1CZiFrd2hHcURzfmQhMWJqTlpJaXpMfDVRSnJTaDc+CnpVVyNhZiR7
UmdCdiZPcVFmQHE9S0hxVktIczFYKT1JVll8dEsyfkVmVXclUHV1TmxOZi15e2ApUFg3Pmg1Uj0q
PAp6I2BfNEhPWH5LRWFheV9DaH09XzhRI1lANXpGWlRGPVdgaT9DfDxjWmxDVDViVERIWEdQXyFR
ZVlTJUFhSFhJVTQKejhFfE0+QypsMzhfP2E2K2xTZndRNlolbTZxU0RBPlltfW51WUU9UH1YPjJ3
aWh6fnlDPG9AQSE+YyooKjhaTFJkCnpFclg+M1ZicyZJY0JHJlkwPi1tWjBkNCZtdy17dCQpPTJa
RHAwK3I1VEdkdDBMT1RPZz9sfDZFKlE9QmBrWnZTawp6UysxanVmaHdicTRXUz5HMispWjhTKSFY
WWxrPHEwYVJ5ei08Xl8zXntfdXUtRy1uUmdLRTFGQl91VWY8YzticSsKeiU1YWk/NjtfTkd5bC1h
Vl9VT1Q3RUFhZkNWaTRRZVpxN1E1ZFd8VFVrPXpWQmQ4I3RfPG5LYnhFcXxucmo7N1ZGCnpnZV5g
UnZ2bWpsVUAzN2lCaXMrSDM7eDktMDYjP3tWcGNnKSgkKVFQWFhvbCFrND5hMTdTezV0JEYobFdD
SjhSQAp6LVlCQDM2KD81OTg3NVVqdXVzNC0yNlhhalc7KElePzVAUjw+TzNPQVkwTjJhbmRtKCVl
UjV1YUpSZV9kYSFOU3UKejQmdjxTPCVIP3pePz97UWtfN1V1PVpvTkpSPHVkQEZgSio/NGcqe2w0
cVAyd1RAVUAxZjVwOXgkUURjd3Z7dn45CnpxZjtvUGE2TDNEOEpKYS1Wa0p5SD0lVD1SbU5iP0gq
KXFpJHdmMVdzWDNFSjl8OERVJT19YH1DcUBZYzhxdTQ7Pgp6SHFDT3RQKiRUcCFacnw+akpyOCtt
Vm8yPWFCej1mZlNEKDRVSHZRSGhPY0VsJiNPWkJaeHFRMyRYRUZjNCZGcSYKelJJcyF7LVEldWkk
VmFAT24hai1WIXJeaC05RW9zTE9LTkVxSzU7WEJvQERHVl9CUnsjN2khZ297UmxvJlBFdVowCnp3
biNAMGQqOD4xVTl3VVFjRndvJT1oUmpTLXZfX2tzdyhONHo2ISZ0P0lKOyFxJilTJm5SYSNGTllY
ZWZKbnJzaQp6WlQ9Kn1jLUw0UVM9USpoe31RfVgjdU1xKkBIb0U3ZlZCRntxVWpmKG8rTlNzUUhM
SmhJeFU7KCVRVktuJnFJTyMKeiRQVmBrVHZ8VH1JWCtTbVc+WFg9fElzU2AqSDwzPjBkI1F4b1My
RXdLR3MlRVVRKjxKRSVhSyM8YkoqfjwqUTYwCnpTKEt2SHdRVWxUQ2w+VT5VVDUrczBJSmBjPkFT
ZnxgMGgzOSo7cX5nY3wlKSpzfk9lRWdfblQ7KVoyaXJBLU0zegp6MUpfUUdhbDdzfVlubnpGRTgo
SkArSHpCVCtUdjd6WkVCTVd3MzdSZERvYiZPN0Veaks3dFdyIXQxZDUjb3p0KXIKelNQMk4xPlB1
LVI9WHtDZG1QZ2x9JWozMHxEY1c/M0taeCZ3Unx8KlE5aSRocFJlTS1tK05QfS1FI2lQZUtWTVZL
CnpHa0ZLTWRaK2pFelFDMUEoN0hRIzJrWEZhJDkkQyE8bmx5flNeSjxUQmNvMT1HNm1BYEwjPEdP
UXF1NWJESFZfQAp6dWRQMypESERxeyhTS2o5O3lqaDdCMDtjQ1Mrfnx6T2FvdDJ1eSRlZ2xzYj9V
RVg+O3pwYiFnI3M2WmJUXy1Zbk4KekNKS1l0VnghTDNoQDIxcHM/dTNsXmRlPFZaQ1JvVyEhVVBG
aGp7PWJpWGcqbiVlZlFJSl5mQEItfXdNJVN6IUd2CnpQV0ZgKyopPG1iRWlgTzR6JGF1K0QhP19R
MiFtNCozakNoRkI+QlV1NVNHWT5Yel5GN2BCcDFkOE96JHhSVkc9Owp6VGtWRVR0fH5ONTBIZS1h
dmNobTlWVkwqblphWV8oM2BaQHktRTNlVW9+ISg2YHlWfTklemF1bjs5K04zeXt9OFcKejtUJT19
TSQwYmk4Kk1gfkNYPit1WXJwbEJDOGtXKERqWnF+VGIhbERlVj9aUzclTWBBWXJzOzNEPkNGQUZT
WSt+CnpiblN0XnAmOUhSPSRAREBJT3pAbDEtI1V1em94KGJIOVpgRShPJTJ7bXk5VnxIVUs8aysk
UShfU0pLX0A8Xyh0YAp6RUtKTi1vWDVeMWcwVXIlQSkoMEdFQC0zPGNpIzRPeyMwZVpWQ2pZUWlC
Zk5Gem9VJGFeaWs9RlA5MztsM3VyZ34KejZQZHpUdGl9dDFLb1UyNUhsYHY1d0BGSyZscTRieT8+
XyFxS3g1PiRHYm1OMiorN351dGZrTDxtaSZzKil6TUg2CnphbT1hQSQ8QUU4UkgqSVV2bDc/Uilq
aCU7YnQ1PVpCPytsPTIybmBPeTk0OTtNMnpsRm5IU0dRVit+Qj1JcnZ8OAp6UkZ+ZVdiNXdzWXJ7
PngxMm1vPzBxKjAzfnQ8MWNoLWRjLUhANVY7WW0rbSZAT0UjVDAoUDIjYVM9KGUqQTNSQE8Kem10
Xj53Q192bCQ1MyN0K2hTNkcyPz8kUVh6X2JOS3pfMzg4eiQ1NWdVKS02NDlyRWB8Kn40T09TN2VX
P3Yoa2khCnpmNmVYUFk8PD9SZ2x5OTcrKHg9I1UjP3tRUm5QKFJpMEJqMzdyKkRuRyRDXjI1K2R0
WjZnMSg3KlMtKSFGJEp3aAp6VjVCWiVkUnl6Y2l+PGRkKHE3YXY3YTNFU0F+KWxEdVA5OFc/TUJ6
M2UjLV9hZG5LNStySjVPQ0BjUkZgTi0lWH4KeiVxQmdFdEdWKU1FKyYoUj1YO0xoNmBnUn13dW9N
T0JvSn5sJk04RjFMWn0yTSshZWpRa0E3eGcqczhicyFPa3lGCnplez5+M0pFekR2NFY7ZUMzTEJf
KUNBY1VVcm5LSHVEWWw5dCl1fTFZb2UhOyU8JCo0REQyWHxfZ35sdkUqZyNhawp6MFY3bGVwMVc7
PUlXPnkmRjhKJlgzRypQKjhGJFhEeDlyRVgpJUI8Syt0V1BkanB4KGx4NjhpPWJvaGNvbis0VGEK
ekhzfGdhbDZre2kjMnZ0XilxeExPUj1xWFJ6Uy1ZJHdxVm0hQz4yUVVJb1dgRld3Tjxqb1ZNQCVI
XlRoJGQlfUBsCno2MiVUWT4oNT5FT1R1Qk1abH5kTi07Sn5geDtndXREUjFfKzRmZlltQFl2aHp2
a3RWOykrKUJvKEphPnJzMiUpMAp6RTY2JEZQQ2A5dkpadCVsUiZAOSN0a3tlJDh9Q3d+VFJQSEU0
MyoqKT02XjJyXz4ldWAqYTc2KSZ1Y2AtTntnUWwKemVje05TITdmS05fZWNZIzl4Q3Y1TXEtfkJB
OU45Tmg/VFFqUD9gfVI+JHlGUzNoSz01eTBAcURLfUpuUUNzUD1DCnpEeDU3THd7QkVJYkZedEl3
KEFrNldRUGZhRVZXJmBxfExpekFaV1ZTOUd4Z0BYX3c/YW1kWS0xdiZmKEZCI31NZwp6Z3xWPjJu
bDR1b09uQ2VTTERXIV9aNkg4b1dVcEF7ajdMT2RVV2kpQEEpXjNGUjRPd0pPKWx5MGJZMkkyMVhi
bCsKenhDa2Vld3A/WTZ8N0ZWZTw+SVolVFdLUXEtUVZEJU51fG9VWm1UUzdTfTk+QGR1OF4jZCo4
e2EmU3N3YU1KbGdMCnpTSkJaLXAway09cEchdmNJQGVgaCM8QShPYjU2Uz9kU1olfStrelVLX0Nh
Rj18SFRXekxvK1E1TSQzKyUqOX5qSwp6bHt9OHFfdWJfTis3Jj18M18mLXBMKjhIS19CdXM0dGd6
NDFmfjshcjhOTyhJVDNQWWcqZSpgdE1JMWZjPUtUS2wKemRVSk16PkUoe1p0TXA1ZkNXJStpMWlq
UyZScF5raSFPd14kK3hDOGdBPDw8JS1iMDxaR1E3M2ZgYzBGUjBHVVp0Cno/I2pEITg4S185IW9z
SkpeLTRMb3U5dGwzWTF3ISZfcjNoaStfKlBkR3VNY1hjJDlrYXV4MXJzb2RhKDNEPnxsdwp6WEEj
e3B3fDBlcHItVVMqPFlDS0JkdiFjQmpwTUxANDk0UDtrRU4zYnVeRiRyJEp8IXV2bD0qYWRtUFpN
TCR2SnAKbGFfJnJOWmdEOXRMM3MjR3Mqa19ONFVSOCpeWnp1P2Y3c2BMSUI0cWx7e1kkV3B3OXBS
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0
LTItbWlycm9yLWhvcml6b250YWwuanBnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24tdGVzdC0yLW1pcnJvci1o
b3Jpem9udGFsLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGNlMTViMTYxMjM4MGU0YjkxNmEzM2JjNTIwZWRm
OWE1NTMzMTk5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0ODQ1CnpjbWEpOzJRKngzKlQrWVRF
PXNnOEw9Q3woTW1ObHJBa2k8UGoqPWpRNy1kTTU1S0BSeUxKKy0wQiM0XlBKQmMjTgp6QW99UTBo
VWlSMDMrOGpiX2tRPVQ/fHQ4VSpacl5Pb1ZDfmE/WSo5VCZWSFdmWSFhUns0Xll3YWNTUWdJMV9w
cEAKejAwNGpuS3RhWHxwZzZiNDBPYVI0dXxJOGN3JT17Q2I5eWUpNmQpOHBfUm1IQnJ6cmw9QDhS
VFJXYXNxIWBVQ3ReCnpnRVJ4NjFUZDRmMDhBUUFvKH1mX1BPYXl1ayYjKmZFSHI+OGZGfjNINzYy
SXc4OTU2WHNUfmtgeyEoT0E9VHJXYwp6ez1ZOytNTkxhYlBrRGpqe05jWUxJO3NvUUdfO2lUNndD
a3NeKktHeWkwYiE5R0k5I2Etelc8ITh8QF9sYmBETkQKektfUmUpQGNDNGY8WVd8LVdSdypEYXdJ
PkdJKEtCRFdAViRmQm1mcXFXdFl8OTVIaHxfbmdsU01lYDdLaGF1eHMjCnomXytYMCR6Q0E4QktV
NzNlZkVsZkA0ISFBYy1MOShtXl9kdkhxKEU7fDliO3tQdz50N2w4RmJJYTtJNkg0USQjUwp6QjQo
cVJUQjs5a2V8T0k0UmgpWkZJaWVrWCtMdTUzLUxFdmE8ayFCQEVgbkAxcDIxaDhfU093YmNpflJy
dC0mYW8KeklHWCphN0YwdW5tKC1+dVghNnNWUHwxe15LQk9LSV5+U2h1YUByNXQ1JjZtPnNZVjMp
Jn1EVHZldUR1MGg/TnxXCnp7S1J2XjU8dUh5O2B1eG5LT3A9dUlLSSk4ZVpxNT5DK294YjFGKj1F
O3tlb2ZEV29ka3B9e2NTPzB4QEk+VD1jNgp6RSV1X31RS1M1MnE7Z35JMXdId2d3Kmd2RlFpfW9R
dTVPK307a3EpRjZ8NSNyX290czZTciZZbjAzLXckSGt3MHwKejtFZ3RTSnRnUXJzJmN4ZEExRT95
elRhPjg2X2tnWlFUJE1gaDZnXiVNREg9WTcpPzVgUW9idmlZWEojaThrTEVjCnpjWGRuYEhxaDJ0
UjJBRl94TDN4SG9eQ2huSUAoIzA/S3RkUE9iOCRXSUgyfGBQMU16OCZEZ29FeGAmRDs0cll2SAp6
bHRmZDUtdTBIfisyTXg8bW5gTSNAN3UpZGhPOE5IJW1scXQkdXJ9NjlhXkl+JElxPjJqZz0zd2xX
bzRmVUdJNz8KeilZK019JFpPdjdWJGQ+OTZudGo4O2M/Ujk3VGN5XnhSPTR4KyZlYllNZnx6Xkok
WGRfTVFiOVJ2TjkkVih2ZGtYCno7azB6eFVGNUpIKkp0aEtgRWBIRG9PJD1URjJ1XylnIUpYRjNT
VCMhVD19RCF2Q3MkQXNpTSU5dlRtMTs4UiU7MQp6bV5GTmhOel82YjFtX3Jvemt3PUVDRWxyV0Nw
VFohYW5YT2w5VXlGMkp+P1JHelUrO2N1c2RMTXhJWj97JWJSPFoKejZENXJhUi1aVUBvPENEWWdq
NzRiQGZRSClSdTlaUk4pYFEoVjJ0VF5UWGF5UnB6MCNgQEFSK1I/T3tOayM/IU5lCnpgfG9VWGNr
P3UwMXRONDl1X0pvRFlSKURia0w/dmw5fFMjYFl0KCFiSFV2MmQpRnxwRWZPel5IKkhGeS1uelUm
Vwp6TVdWJF9OamQ3UCZRamotaX5UMWEzWF5BWSgtIXElUlp+NFNKITRmTyVBUFducEtTVk5Ld1he
KiFNeG9eb0JWYG4KekxUP0tiP25IcldeYn5qOygoMDE3ezUtWEYyKX0jJEUrST4kKTI8MF9vKWdH
SFh0PmgmKVEpUXdDUmYmT3peMXZ0CnphX31fZXBpISU4IWZtXzJ5QUl4Rzk9YCQoZCtDMFdDOE1n
YjArV04pWV5lQEQtVXBkeSsyant9QTFvfnNRQnwtTwp6Uk9vVClNSHdtU3FPQH0+MzNWUitmPEA0
QnBiSi07ak5ueCtkXy0zWSkhWStAdEtPbTw5eSY4fiR3elNkOH1NPEkKejc1ciQhbWQ+bXEpZkJ5
amtFRkBYbipZVDdpT2YyTT5mT2cqVFpJXzMjQ2ZwSChSVVVZYUM0LT16cENTSmAmcFZhCnpeIUly
OUBBMWVxXmNPflYqKn1qNGtTZkxZUDk1UzJuJiRUck1IPkFGSzRVV3FXbjZ0I1lHJSpQKEdIcHUz
aDM4VQp6I3IxZyQ5bU8jbDtYb3RJVFNYaDs5UUFqKUNucGhtQy1GXiFCMTRgeFk3Tld3OzNqTExT
Q1A7OEcwdzg3YDBYfV8KenNePjRsY3R2ekpgO2AzV293RT16Vm03KGxuR3ZPKjJaX0g8eD5Tc3dD
aDJsPnVqeD1eZkdHX0B7a1NDKUhoUlYwCno2R2FkUzAxWTc9e3A3cFB5N01ZPUtsV3lBRUM9aVMl
OWxFNmNffFgwS0dPJU5kam02ZEx2cy1jVTFmPXJqQ2F2Rgp6Jk9ZOVF6TnxVUnU3e0VVbUNvYF8h
QCE2XiNPRjFaWmVKV1h5JlZaNFFHUSFsRmU/TXhEJSltKVRjQmpZeUZeeTkKekQpKCZjKStXYXtr
S1N2SEdxNzFJQUZ9amlAIzZhdW53bDlnYkxmcFlvNjUzblJ2I31feEdiYzdFMGNTSU8+amlfCnpe
Xih7PUk8a0VOUmJvQD5LWjhsNjFzQTBgQzlKKHAmRipydHBFPks9V18xM2RvKkRraSNXU1RTMDY1
MjxYV3Mmbgp6JkdTYFpfZkRsI0tLZU1POGBPOD1WJHg8JmBmMlhjUDJwSCU9cStjRGlNIUkhRFhq
PmVgVlZNeFJkVUlEWTtrfX4KejIzS351KHFHNHIwRVFjVlF6VT9UWDdmI1pRYFcyPU4mbzBsU15m
YFk4QjJhNUhMQ04kcmlkREF7cCRGbmNMRyh4Cnp3NjQ8ayhNQF9namB+ZmA0Pz5LOyl0STdHdyRp
bk8/KHgzSkxIOEojKm59IXVsejV6b05KWS1hbTZCMCk8dFhmOAp6NW9BMDRMZCNKKlU8OzsoU0Qz
aT4hZWd9MiYpVDF+eDZWJXNvPE00MHB6flVJMz1ycHhoYG9kaHhyTX52N1N7aDsKelFzdV5icjh+
b34xRiVhbSRxRDwwYEtrJHY8dStHS2VFbVFZWlk0LWpJfn5IUCVyOyo/PnphPnN7KDg9fVJGZSUr
Cnoqblhra2hURSkleFQ8e0Q7T3VDdSNmPG0jVzd1QUc5d0ZDMzIpNj4tUH0qP1JjSUlOWjVxdiEm
ZT9leSpsYm5vWQp6JnsoPWwjOEY5dlFiPDA5dz5uQT9KUTQkQ3B7UXU+cGJGVDRuLThgUF9NXjgy
SX1HRThMWThDOExrdmFYZDQ3KjYKemc4N2RhR2pPfGx4TnRfbCU7QnZNJDFTP1U7TCQqU25EenFi
cmlReTd1MGxjMXJuQGplLXVLJEw8eWlISWc3aVgxCnpGbC1oQk1qdjB6SnU5JCFZP199S1JnJV9N
NnUyMiFYV2smQ2dXOV9qNmZDPF5CX1ZeQVRLeDxreEgzVERuM0xJSwp6bmxGanp7VGZkelQoX31g
OGdNNTgrKjdvUig3cVVPIWE+U2AqVmdDaGlAZFBGOG10ZWJNc2ZyMXYtYFlfKkxOIVUKenVgJEJl
KGdMTzg5QStiTGptKiNtUVg8eUFLMWo8TilhZHViKkRLKStxSCtveXBiLVcrUVl0Uy1UNWhzZE5O
WTVsCnpUQ0x+I1B9RHEjVlo1eG5Rc3xqWntwXnpnRWlfelAtKWExPWU/dFp4SD9VTElQcndoY1dD
SklfWi1lN3tzU2U4Zgp6aGV4QjU9RmUxOUBiPWxxYjhlKlo+MmlnbkhDfnI1aX42RnVualN1PURY
fWpEbGoodmNoQFZMWFl3Kkg9WXFBSEQKekJrd3JwTUshZm5YQEt4aVBGdU1XSU9xSE9OMDwtQWNa
JiFEQTd9PSNvSDVXWkROWVNiQGoxUEJIcHBKZFJXbigrCnpnfWF6NVg9O1EhSWUlVzE/RHN7KSox
UGlaWDRqdEMhUkZoKlViejEwOVVOfV5weXlhYz5TUXU2c1U4MHdGJHBqNgp6NUtvOSgwNmB1YU5U
cm5VN2pxanhMI3lBT3F8cHU7MlN4O00tO2hmRU0haEU5XyNvazswKEMoOWl7YVJxV3slNjAKejVM
MFpnRS13U0NjQEQrKiRRRylVWEtXbTwhbGpCWVpnc1pXYTw+YzlzYXUkbzFaeVclV3w4fkZeP3JS
QkxHYmtzCnpTcUFsUSZGUDt1IWhudDUxSnshYTg8SFg8T1Jaa0o+Tm0wTHJ5RVpqWWQmKHc9Yjt1
cldgdk9kLXorezlqfWolJAp6dmglOypWWkBGTyohbz15dW8xeV5HbkZMMWNYJkU+WkkyKnwjZHFg
RkU+IUU1UTB1bFc8PkBrYSVHfWdEYVl9aFEKeiYyR3w2JjI5NWNCbGgmR3pQP1JERnA+Y3tRKjJ2
dVNPWUFjRExJdldyPUphYWx2QGFJNXBOSF9PekU/KUZvJElvCnozYzJMbChqTG0lRVhTRSZYSUJW
Mk0jems8azRVdT9CckdEZzZ4RWpTKE5kQklIK01CU3F4ZlNZLXNJYihnPGloZgp6WH4oSHNTKnwx
Oz0/TnRGNnBWZWElakwxKTg7aWdHc0BlN2s2MENEKGRxXk13XjUpWno1cTRtTl4hNU1Qd1BqY1UK
eihZZ0F0P3M0c2lTNG8xVWAkYTg2MTBUNCEyM2lVK1Fte34tJWNGUi1XP2tjSkhGSSRAVnI7e19h
JlhlQHdGSDdvCnpAaU1+SHleJn1VYX53QzZObmV6KjVpQ0AyK2c+MkxnUnQoampAXj5fTWFWWmhh
NGJvP0x7OG83QmAjX1RQYUtEQQp6TGVPWTM/Nn4yTiFWQktGTDJYTFl6KGRYeHowTEhiVkNCV2wr
S0B2TUtwTk5JY0lwSEBZPWlkPVJ0KDhwZXlzUXsKejx5dUIqdG1oe3MjTXtOeDBScTFJWGJ5KD07
YnVHOT91ZWRWIzwrYDt5RV9WUC1LITJRd2QjNShaZ3I9VDFqdn4pCno0NVNqPF4+IWVkZiRiS1Ns
Q0JnYl9nY2o0KmpGQlNtXlhqJk5qSk0leGVYYXQrPSRNYzxjSjEjdGY3IX57dDxvQQp6YmNSJV5K
eFZqISUwTW1iP3VrekxWJHhCX2NBfCU1YkFnQHZsLUgoeE92MGwpR248LSNzRUMwWTxKPXY0Ozgm
MDgKekJOeCoqbFkkYFokNXNNTTFKbTBjZ0F6eUNfZzAzQGFyWUVWM3wzaXJRRjxuJms8SWItKU9y
UCVqeCs1cXFOK0NACno2Nj0xQWwxQGBlTF5BVndtfF5sP054Rk0rO2N7YlczTXBCJUgmezlhMV5X
Jjt7S1UrMzZTfng9djZVXzN7M3lrXwp6P3RRLW87JmVsdVlRdCRnPkJ+UihYJUdHYnBQfElKNjhH
N357O3dQT3FiPk1mcWxHbTVfanUmKkAjdFVSJFJoSFgKendiNH1CYD5VSWh4dTFQMDE3Y2d0bEVF
cGxsaWZkNkktTUdUYE9JekFDTH09blhMRzBnakkpdFBNTFg5bj9KQzx1CnpuOzZCR0lRUj5Td2Y4
OUQrVVhvTiZecW41VkZjTGNeUGFHR20oUENRNDE1VGt3ZE9gSHRXSCtnUUp7c3otb3xUMAp6PWZp
bChveWEjdDxnIUVjNEY/M3kxaUZLeUZWKTY+KWtgMWBhJUlsSHslVEw+NmBfMnw2KCFQJSgoaWdI
c0BpPTYKemNrQXhiV3Nhfm9hWEtMKEwwTFl5ZTZjQTtMXlVxTWRfazZpZnxIR2M2TGtlRj5jR25D
PzcpZmVKcn1gJGJFR0Q9CnpNdjh0e2h3N1dLKml3diFTRytSV3ZfMW9FJTlHYUFfUiFQfStzdz89
M0VQUWdIUShjRGxYfElHWTVYdGtmfCNocAp6Wl82VzE5OEt+anVaSjhoI2Y/cnBAYFBoRUZISDhT
TV9uSSFgJEghI09TZnYhdXl9Q1Atb0w0QVg/fHB+d3R3R3sKem0xZEd7dkhJckx7Nz9FPzhAKDd7
Vzw7SHtiNU43dEZ4Q2NEWn5COHJzMGJuUFpQT0J8KV92dGwjMlpCcFRIREBkCnpFKDdQVEhQMlhD
Sit2bX5OTXJ4NEVSaHo2YiVPIXAzVEl8amxRMUpiVmxVOWJEQUttc1lEVWpQSD9jNl5KTypPaQp6
cFNIe1p0SFZfWkZleDN3TUhDUkI2MD5pR0BCPkVhJjJldUBmSClgTCsoS15HVURPUyY8JTBiUSt+
KChmdD8qQ0sKenlFQTYqOW1LZjtfJSF3RUNiRSVfcjU8d1Qrc2RESlVfRCM7aEVQST05USRzV0x4
aTAocXsoJio1TUcxMV5teTtaCnpVN15JTThOZ1FoIz8mbjI+PUZCLWQ5dnBFPW1HeEc0NHF0NDYy
SX58anNVe3ViK0FgXiFZc1B3SWRgVHo8WXZPbQp6WmxrPn5ZcnkhTihEJnQzejYoI1A+QTk3a2RW
Vyg2UjReSDtpK0M8S3t7MyFyeT87MkQqaXFxRilKMmIwSDRhejcKeiZ9WUFKI0VVUDVPKjx0aWtQ
JktwUk0jTkc+VjIzRHtMZSNgRFNEQFV2N0lBWThCS09mXkZybj04UDFaPCEkSD9PCnpQWnBFRnU2
SHI9ZXFLcmIpLXJefmtCemE1MGFmZEZUR3kwbmxhbkRxNDsrbWA7TjJeckQwbz8kOXJvazg4WGJl
Ygp6S1BVZDAtbE9JOD13NXBZa2dgWnYqR3EyVWdSVXwpIUA5aXxOfj4kSF9aZTtueFM2Y3F4WmlG
V3p9TTdVRGFudTsKentufit4JFdKKmEoQHdUWEY3QnhPPTRxTjhrdlJCNlhzYHJIKztlZVB2YUNw
VTk9V2h0OzNlQXhLVnJEfENScl5CCnpFITRzTSh+VE0zI3YzZSMlUl9JTjdmVUk9WUxVbm1ASGEw
Ti04I2NzZ3hsSG1lREFWUXhqXlNFPVUjJWZAekZ2ZAp6JDckPlB0Y0FlYkp1OXdhIzx6YGJKd2wz
dT1nXkRnQGlsZyk5WStMfShJSEBEd0lqcSYyPm0hWEZweV5ud0d4R0IKek5lelZIQFUmfF5xZmB0
MjU+PHZyTyNVSjx3KyFfZE9tdDBaMiZxMzl6cX5CWDN4dmg+LWlmbFAyeV9wczJJKWhYCnpqTU9i
OEVyRTdAOyorblNCR3lJNUw8NW51VkoocFdrOzwhKjlUM3hGcWN8diFNIXphfTIjSmJubT9ialUh
QmoxPwp6ezA4NFY0QihKc0EhMjVWV3w3JXRhcDUoWmE+TWxvc0AhOH4hYTAxQSM+WiltQE5zeShU
SDBXQmF5dFFSbCFSTkMKemIyWDJeKUZ9fU9CQiVtc2pfYSUxdz8qJWA3KDd7IVZkOD1iMkhVUWw+
aSojVFZqR19LR2p8QE1XWU0+PmNqQng1CmxQNzAwRiUyWH40Vi19TjVXZXdkO3h+eCEmcV45bFVy
R2M9KEs9ITFHe3tmNm11WX57cgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2V4
aWYtb3JpZW50YXRpb24tdGVzdC0zLXJvdGF0ZS0xODAuanBnIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24tdGVz
dC0zLXJvdGF0ZS0xODAuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZTczMTk4MWJmODE4MzM4ZjQ2NmYwM2Zh
NWZkM2EzOThjNTEwOWYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ4NTIKemNtYSk4MlVMXlV2
O1hLdGRQajxNTTRBdk9RbClvVEt9ODU0KG1ONyo1bHtpOE9ZYzwkWChCYGp5K2FgTS1VMHsjCnpM
NWZOITN6Q3EzZH5lVjBKTVg+U3YlaG9pY2prUCpuUzFBIW5MREB6KyZaQTM3M0FzITA3Z2NANEZD
WWgwVWBuaAp6ZkN3KVV7UTQ0SHwzZkFPMDdBdztXQ0E+azJXfWFOMHRvJisyPiR9bnBaTFJea2Ju
VHM7YF5WKHpaR3lSMDVMI14KemB2JWFjSWU2UFMwdUVoeCo5ZFQzMDZqU24yfUJZQl5aKUBwMFU8
cEJ0YENVQUZOJU4hS2prbT97flAyYVdFN05GCnpoKUlkP0ttUWorTmtVM1NQQzxOeWh6PGJBQEdS
YVZsMFBnNzIjSlYpdkdmZCM2aW1GI0VVYzcjezhETkhfXkY4VAp6c357JSlIUFd4fjNHcjVWTVMy
REBhejxWJENPJE9eVyl8dFl7T1koUmZhPSVvKGk3NEhzejY0bXMybFRqXjJrXkoKenFzNXRASElG
c1Y+c3tXalQjXz4zTCZMYnRlZDRxXy1YV28kaTFeQks8MEohOW5sSElqPEJjUUR5azQ/RF45MzVV
CnpLTUFqPE4tdkM/PFo3cTFOMkomezdGUHpsTmNrOVBse0tFUUN5NGpWPkJYLS0ya3FWOGcwT1Fv
YXFIP3BMNSZNUAp6RWY0M0QrQT1ROTw1dHgzYX1XeklWKW1CKDg+SihVTHQzcSpSMG5JQjNQaE90
KUl7QGNnMGc5U29MIS16c008dH0KejhwaTdSaVNfK1lxRW58OWBQO21wRG4tNkx4Qkl1LXU7bHs3
WWFfbUhkO1RYNj5WPFV1TmluWT1MZjJuVWs4YCptCnpEfU5ZMSk5NTxtVC00R3A2YmhTTzghZVBo
KitMZSNANlhtcWFLQyNJSXlUdWEjVGc/aEBLRiErNWlYV1EoKTthOAp6O0ItO2hRKWhkNXBXfllX
MGp4diZyakhOTiZib1VKbyFrWF9LYlNsUiYtcS02XkVXZnFmfUx0KlVmUlk1N2xQST8KekFLUlh3
TGJVZHJ5MCNYWTFKa0YmezMxLSR6O25XVUBxKUY7UmUwXjUoa2EhZSZAWEhYYGY9T2YpWnRGV0Yq
KDUjCnpjJXE9QF8mfH1lMzI5S0xmYHpFeDNGY21vVG03RHZUYm83Zilwa1lMSzI+bW5oWFhzb0g5
TkxeTjIxQFVWa35JYgp6Z2FoSj4mc34wY3tnQGpKNHhOJGw1TmslNT9VRHBrLX5NVkBMbHQ4QHA7
ZyR8PWQtMDVha1doVnEkQXdRbj1uLW4KekdOKUheM1AoMnw/bk9LRGRGX1pudmklKFF5cF5LOGlA
bHh2OGRzMUlJU2BDeD5fQEtFdG1RNFZSYjlaaFhuKmJGCnp6IUlaMC1nN1MqNW5jWmI+NC13Sm8o
fHI1Y2MrezRKX3xBUHBKOD40SXl9TUpwPVp1RE81PjV3dEJwSmclP24jKwp6ek8jMkwpJDIqWTl9
bm9wMzFncnRnPDxyU19yYDZkPEA0IXdQaWo0REc3KSs/YzAtPmozKnQkdD1IM3htJVZrJjMKemhO
eF54S1ktcTxmMCF6JiQ8WHMjeVh4RHNnS2o3VzEhV2RlV1ElV088Pn11Q0hNO0g7VCNZYkt3dlZf
YiVEWmd6CnpNZHBKMUVGe1huc0pDcVRabSQwdXttR3M1cTYqPnVfOF5fITEjMXBoNGBXSERNR3Ns
MV9KSiF7RmZDMCZgcip8bQp6XnJpXlkzdzBMUj80UUpVOXswWjdsXm04KTlrTUE8eD42Z289STBe
QUxBbHNRVDloPCtGUUApSSowKTVheFlTWF8KempNSSEleD5hfE14e0heQj1zNkFYcXMoaSNpVF5L
UEBXQiZUTVRwKzUkZFJpMkNONjN9OGJCUElhT1l6ZGImbUl9CnotVVJ+d3d0O0pJOy1hQSoyT3hT
ZndhY3Q3SCR6MHhIPC18aVIoX154JHh1NlQhUnZ6cXgyY0VgNEJ6UClETHs7VQp6NXA3PFdDZjBv
PVJZYXh6UUJJcW9eanRyKCFMbl9lZW8pRmx6QEdPYF8kSUwoQHJWe3hRSmI7aGNsT0tmP3l5Pj4K
elgyfHclbm8zdj5xcUVXTDxLe0hNdyNeKkspe3V7aFprbXQ9MHo1d1diU3JuUkEqYUYoZ2E8Y1Iq
MkFoIWE1JEItCnphWjRIbTY2T2E5TC0/aElBJCl2KzVhR2FJKmF8dldoUHtTflUhYUdTeml4Xk1x
XmtSLT5RTiZUTXV6YWNWRE1EfAp6dlMwLWQ+JXxXQigrZUB2PUdvLW03RUptaT5mIyk/Z19mMFh3
Qk5zYlp8YVNDZyhOMWFRWHR8UEBlO01vRHxMcHsKelY/QkJue2V+fXtWeW0te2JsTntVZTNAQm8+
Ti1pWGxWN0RuUmVMWEk/ST4kUzErVjkxZ0pZYldoVWNHWm9XbGoqCnpzVXxAYmpxTGBLUEdWWjhR
ejd6JmZYfGNJZz1YT2RnP1JHUSZ6aFJ4WEhISkkkLWc8M3xIXjhleFQkfXByfmpGcgp6S2BQeSRf
TExeJTtycFhXQz16fUQoZF9oQiZXeSore3RLTnNXV0I4MHU3a0BvemxOfkFmdFBPelFzbXxeR0l6
P2YKej9CYUM9MXo2dXYxYXctUmBZdmxyemA9MmtvQ2BlbHkrRjx5JS1YVmhyVXQ4YWFeRGlGeFZa
fGFaUlRiJkx8ZGEkCno3WXdaU0JJIVJwQVFiVCtHcGxCI0FqJXZaJm1ETT56aEArREAjY3gwU05S
V2dMXih9d0ZTUFk9U1BgbmFjNGNTaAp6QmNyRCFfe2Zwai1wIzlGQFUwTyV2c3J4VTZSZmwpOTlz
R2IhTCglWCEoR2x1PVJoRXxvJjQwZj4pTGN9NVBGcnsKejxNYiQjOGhsTUtPbCpldWFyeGBhe282
WU5RMSFyVlFGWTJtUDlCTkxBPV9HfVJPJTtoJjBjSCFnPyg3SWo3bnM3CnohSj9nMDt5MGZ+WnZA
elI5fTVSTU0+S2wxJHRnRSZFayNSOzJHVFJ3U1pUO2xUNztNdSVHbyEqY3tTM25DTzQrQQp6RG5n
Q31DVzx1RiR+UjUwa3x1Kik5TGFDSjZ+MkIjSEA5Wm5pRyFLLWA7WTEkaTFlOHgqUVA0bjEmMlRe
KyoxXmgKeldDPk16TTMoV2B3XjNeT3YhKSVQPzYlTFAocnwjVTVEUGEyNGhTU3dZMG5Qbit7Syhh
QDhXPTc5NipeT1AyNUQ4CnpsO2F0dUJmO3I8SUp+LUNCJXRTc3Nhd0dUNDBDJHRibTFNZEE9Zio8
KClFSUNsTEslNypMWSUwKD1fSUd7aDZoTwp6VGpJQkYkPTJrLXpVaz9ANWVEN0tpJUNWKzJHT1dQ
OThne05FYks8MnlaPUY1SjdqLXlATlFOd2pGaCVwWmRndTkKejZeKEBBMEdobzR2SHFQcW4jNmFz
O0k+YU1TO1ojazNGem52bjlufFFnOTZzQmV9fVAkR2JnKEhtVFgoVz49I2NtCnokU01iJWchO0dU
aU14RVF7VTZLP1laUEx+Ni13ZlQzS1V3UGNeKChVc09vOzdNaktQOXdOI349bEF2VSs8bCVHNQp6
QmgrRHpWWWBROHVxeVk9aFBoWHUrb2JNRU4hfGhsQ3dULVB5dXBoMEohaCNsbH0oR0U9T2EqM0Ak
V1lpTjAoRSkKelhUbiNTMUdiYUdeUmpTMjt0ITFCelVwTT5jO2FYcTV+Wnw4a1VicTlgQDlqY0Vz
T21nPE0+VSU7cXB6cWNkMEtYCnpMTW1DY0JuKyVQbWNfRWBUdmpRNGBHd3pJVW9idUpVT00tY0B0
KyZWK3FGfjRCMF4/QC1wdUUke0JfRCErTG5FTwp6PmUxIXpBZnZ4aWhScyV4bG0qI3ohfUtUJClg
SlExYklWeTh2ZU5VfTBFZkBrKj40bGBUV0tGWiMmKzhJb1VlQykKeiYpMzI2bEpDQ2ZgNzBAIVoo
Nk9JWFBBaDBaKjJIKyYxN1R1O0szS3crTGooV0dBPGMpczBvRighcnJYPE0wYll+Cnppfkc+YF9L
V0syWj01cyhrb3JAM3JMfFIkMnYqUH1zJS1Oa1IhPntgIXp5TU5ga2JEPnQwRS1oUHhNR1ohOHZS
eAp6WjtKMzJpYUhiNUt7KzlHdVVqdWtvK0dHRFRNbTteaypBVmF7KGJRaUd9aT9ialp1X2BMYjNJ
QGA0IW4ociVAeTIKemA9UiQ7IVprJT88SV8+SzNZbEE0KDRfc3F0MHJ+UnZpWX1hUkxiLSlWWG51
Uis7JSZgNFI1UTVDVWlreSk1QkZeCnp2bHFOfHcmPEtpJHgqd30kUVVmPWlyJWdmNWJDU2c0VDZo
X25Ob0BNJSM7TTNpUFJgSD9fTT90VmlIYV8zd3FlcQp6Zzs8PU5lWGJBMTdIeEhhR2I1NUJldWpz
P2pFaWJWM1NpJHplTUtSblVJbXxnMEY0ZFhBMl4lb25Fb35zTmNYaH4Kek1iK1k8PWBNNDElSTQp
SSlffnM9MmgzZDJkMnlqbDMhWFkkXmttX2JDPXAxbjkpRGVSIyV9RlowJXYwU2tfNT9nCnolUDhs
ZU9ZS0VHdXViZkY1U1RJO21UPn0+e0FNOFlCNThRJmFkdmNNRHs8ZjBIXllOb00lV01KbGtiUGU/
TElJbQp6RUBgVzs2N1paR3JUNUgqOzhtSnNKaX0+alRrKEFkZWlmQzhjR0c+ZW4ocWZZSys+ME1y
O2I3SERqbTE+YCg4d1oKekEocjdAPWhvNiMzVykjQnlLN2JQZ0VyJSVJclg2UitSZGEpcn1ofD82
biZxODZZP2wrdklEVys/TDZ+MzQqeUMqCnp8TDB3NDFvfDc9TTJ5LT54OypfSHV3fCY/REd1bH4h
fnkpWmpqPXdDRVNmcjVmPmloQnlDRTdXOTUwU2tuVn1qVgp6JUp9dW8/b01vVTNQY3EoMiF1elVA
c2A7QCtxJlBNbWslYCsjMmRBJTckPlJ6KUBTenhDWldQPHdnXiphaTBoQXAKem59ZVJgbntpeUUl
dGZ8bTZTcnF+LWVHPlMqTDE8UVlwUC1Va2JHYSlMKEo9YFc+S2NJLTFeWSsqT2tqaDJiYjFpCnoj
V1Zna3wwaytoXmk/dWU5bnJ+VE4tMHcoTmtoWkp7c3tyRnNGTSNqeDBGMi1Zcit0Pm05QCpiSUZf
V2ZqSShaRgp6NjlsRyh0aXVMV3pEaSZkVXlOelZtY2chU0RBZXM8YmhqcUlyKThPJF9WWns5XjRK
bzgkKDgweCNWP2lhcUhGcXoKemJCSDh7QGJ7PDlySytDcmxfPTUmQHt8dzlWMzktZntubnheX1FD
d3U2WGN5RWwxQWFHRzs0NCU5SDQ1OTNIeCE3Cnp0MV5WdTNIRVljSWk/QVVLI2xudF48UEpHJTZ0
ZylYPSZRVSU7VUg2Sn1NdX03U3dWO1ZrQnVhe2MhYjIqY0VrdQp6VVg8VjcwY0ZOazk0flR5RWQm
R0tiU1heNk48dUNrQzV6SkwkLTNXe1RWe3BTMkhaJW98OSlveVEhdExXRik8fDAKek1rcVNVWW9o
NHpfKm9vKHYpSkFLZUh+JlM8WX1QcD1TQ2Nge0Z0RyNocyFGenwwNDJhWWNja21UaXo9UDJQaip0
CnpvQ2dOPjdBMF55K3QoP3o/IzkjQmtHNXRfRTZ1Sn5qJTtwQ1lAPT9RdEctPGhoQChqaSQ0K1g4
R2crT085aWs5RQp6bCY8ZEBHayhnWih9eiY2cH5zJmU8czd2M2BSK3s0UT00ZmxDfD9sVz5ZRX5B
SjRgYztGNU1xNig7ZDRUVSZwOGoKejZXR0s3SDxuNyRsQ0RjT1dDYSReU2prWnpFez97WTxGbnNz
Q3ZNX2p5eHg9bExUOVIlZGBxRWQ8Rjg4TCZ5b1F6CnpOYUNqZG5WJEopZGlMKz1XQEp7cGY1JWEh
RllVblh2RUZpYml9SmImLVF4YnF2RyUlbkVtTmNMNV50JCZhZlJSWgp6LW44OyZoTU9DYS0rUV59
RENFXykjQT8+SlVjYjJmQ18xS0FDZU1TJGkjfFQ+V0FkV3ZIQTVzNmYmKH5QPCg4cSEKeiQoeXUt
WEJZa1FFSzVvbUlkSXooYlJDeVo7cFJIQXFmKjwyNF5iWDBtP0NQdDc9Nkh8I31DekVlPzNHRXBO
MCk5Cno2YEFnYnleJXdGZEskQyNxT1VrXz5LMTNIWVNvO2gkbnFwPUh7YmBHPTZUSyVTbEVMeWI0
Nnc2QnxTcXJOJkA1QQp6dzR8YkNXIUBJckZvVXFfZV40Ymo8bnBsJVpiZnM0YCFGRV4qPnZTLXJn
T2ZFUlNXfXlMZUF7WFBoITh+WitFR0MKei1sPzspZmZmNyFWJDhPQzk/STt0bChWOy1uSTNmKjlz
OS13eUhnWnZYJnhKZWBleTRtU3R8WlA/dmFLQCM7bEVfCnpVOzFMPWpKcz1nQjNCSnBmamBaRkFQ
TXdYdUQlfHx1bU9Fa2w0dWFqeWtJJns0Xk8pYWM2MDFDaGBwNmpGMFN9UQp6amsjanV3V3g5NVZH
aE8zITUoOVEmJkVnJjNRKCtrPmtxP3lqQjN3PEM1S1JKMjRieWk8TkZqZXpuQGJycHZ8bWIKejtD
TCkzQ1d2JX4kM3pnNE9VUGN6dUYwK1klN0soOEFQX2hBY0wkbGIkYGRSemV3Rzl0eXRKTl4jP2wt
VzFZYTlGCnpZUHVMcyh5NkgjSUw7cnpJMVJMVllHVmEhVyp5clZHdDMhbklUZEJFSiRCZ0ZGPkw9
SnlnSG9xO1o2TlMmOzd2LQp6YmxwUngwUFFBaUUjZ0dadUVXOHBFM3RJMVBsVWI3Iz5OTGJAbTB3
bCs1MlNqZ0hAQlV1WCVJTkxUU3g/cmE+Jj8Kei04N2JPdiF2JGlufm45JjUpTCY0JXgtOypOfGRv
RFZyQUZyUTJSTl5GOEpjYVo2bldTSTBBLTVjZUVEOUc3ZlZHCnpaemMwJXQ3aEM+OX52S3RfZGlr
Y0w/JUN9eDNRYWgzSXt6TTtTOFIjc2RuYHA2UllzWmxWR2dVJGwrOX5qYygwTwp6Sj1rcVRrc3xz
LVh3cUs2VDlgTCM0O0k2dHd5czxsOGg+N0NOcjlQZkVncEJ3QTdqeEBQKmgwbkt1ektOaGxnbyoK
ejJIbCN5NWQjS04ke1pHWD1QfElUI09pKnwrcX57bVlIU3VsRklNOCgzVX1sd05LJWcwSX4rZTk9
RH4kUW11Nj8zCno2RF9uMWtEako8X01yQyktKHNydlk8fU0/JVhARGchNDU2azNTTkwjX30qJmkl
ZzRXdlp5elhoPi1kWTY9P1BMbwp6Vm1vQXx6Y25PPG9FdGhPTGB4IXE/VmAjOWA1SztsQHBmKGwj
KDFRfFNDQ3Z5O25rMDUmSzBNOHpXdG9mMyo7SHoKeDJfNTdBWkU+MEttWlpiXzBDX2pkNnwwKHJ3
MlFQayM2ekNraz1iaHQ3Pz1JbmklNHwzUVdfYTxAanBOfTsyIWAwCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTQtbWlycm9yLXZlcnRpY2Fs
LmpwZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291
cmNlcy9leGlmLW9yaWVudGF0aW9uLXRlc3QtNC1taXJyb3ItdmVydGljYWwuanBnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMyYjYyNmE3ODYwMzYxZGVjNTM1YmZkN2QzN2ExMDJiZTFkMDAzNTAKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDQ4NTMKemNtYSk5Y3w0U0JgK28rNzdUS35TV1h+UVdXQ2xlQDhBMV5nIXF+
PGpDUykoISpIRzNgI34hbHAlfihSbEdTOyFMCnpTdz5gdUF3YCZYJmlrSTxJcSZjTjw5eUVkYktU
RzlgKzJfQ3tvTDM2SmtSSTR1WnVFSG5GbXl+bzt1a0IwMU82NQp6MDA2KU0oMUtWMlN9RnFwYmt4
aGBLUjY4bCg2SWYlS34kOXIkYGxYK2ZjYG1Ye3NRZnZfK3ZUXjJ0LXc+PDRAdEEKejYzUHJVUEct
c2B6O3B4UVdAODUrVEJ4Q2NDQGxhQjFNbSFaTWhtYjJBUWxofTN5OUpWIzg1V3tJemU2WF93Zkcl
CnpNIUZMV3IldXpLcUB+e2NBQm98X05xV1hwYmY7O1YwZjMmV1FYYGBLe2whb0xxTUBhdXN0aGN3
WT5leXo9USVofQp6M0NaME02cWN2MU1NbmRvcks5ZUpfVFApcFBeVkVuUz9GMlc3fXkybTFhQzBQ
cFhVKExGdG55ajAleGNYMUZfSnMKejBQNFV2Sm1jeGMkTGZvVkZ8VEpLVC1lNU1tbkttUENkaWV7
My1xUTV3bTEwaTNsIV98VTUjZXNAX1Y4UWdKYGNBCnpuTEIwUT1LVDdhS1RGYWVVR31FMFlXaVN9
ZVVIdHlLezg9WXNkVkJzKi1WKkM1Xj1BRSQqOF5UeWVJbXxRND1RdQp6Rm1YYDspPEV1RVMpIUdH
PTgxNyV4NGNAbnYhVlg4Sz9hPm0odTk1Z2J+OXI3SjQ/QkBvTj9Vbyt9MWhCJiZ6Q2QKeiktNyla
NGNnQVBYNWRURDdlfEt0UkAhWW5tUXNuXlVUcTMkMz9HX3VifDFTcWAweVRmcnRuRlBHcUo7P1Zl
JlMrCnpkNH05WD1xV3cjMTt5ZH0ocW9CVGUobk0xU0Q4TSsmeFBnMXdXfkYmSG84fCMwTnIzS0xT
eCN6e348QFZwVXBQKAp6e054PE1udk5BT0VXcW42RjJhP2I2fUchRzVMPXAwNH5sRjU5Qm8/VlhO
MXg+Zzd6Pk9zRl9OY05AdiVNXlF9TmQKeiUhQDZ6K2p4O2dFcz5gU01MSlMjcnZ0MH1BMjBnVUVh
bXI7I19MbTMhMlohZWF5UlRvI2JsITRXbz8kN1dsUGgwCnpQYS1xRWo3IXx7VUIpRXRHKCUqcmlH
PTdSaTN0RGJDPnhzN1JJdih7YT4xcV9PRihOMXleTS0yQUdYSV5rfHNHJAp6TERkdkJwd0dfKkpF
ckQ9JHNxUU01Tzgwd3RhVl5ycXRYKitJODx4eHBxNHw1R19nbXtHZVBaXm5IKzAhSjEoPj0Keipq
PHkpUmh3KVZHfWFZTTI4KEIoK0N4UmQ3QTE7Z2RIczw/RTl2JkY7cGdDNCs5fFBtRC0jUj5YNStp
Iyp8b2haCnooa2lvLSFNMSlUOFJiUHEyfjNiO01QYT4hdilaKzNQY3c5fmVDMnFWU0plQ3o8dHoj
IVVucT1pZyh1fjVkdmpnaAp6RlBjYl5HaXM8PWJgbEg7MjgrZCtFcm18IUx9YFFPOHowRSgyZDNA
MCMwWWZXe1d2LWY3YzE+YiNwNSRDbUJqdkYKei17Xm12VzJEYDZgVkpsYU1JKkxQUzBqdERuN2V2
fDtiJWk7NFI9YUNkeisoKkRwMUNGVHFXTjhwXktxbXB8e2FnCnpWamktVDRVQFBZK3xjbWkrJExJ
RDJrdWd5LXZ2dlBjS1kjLXVuXy1GUnB7MVcoM3R6PXlaZExWZT5UfFQyQiFRXwp6JVU7WEtjRzh6
T1MybHxWbTFBNj9AcFBLZ284SzZZakNSKXdFVXI/M2QhTCtjPXREXnVnKnx6ZzwraH4qeFk0PlcK
empsYUh2Snp6SkNse3hZd2hCcFJ9JWJhN1VMbU9UTEZ8KykpMXlLZVBFP2E4czlaVmJmakNrSzJ6
dXFvYmFlIzBUCnpmVTl5ZVVOdzY0SEZxcGUlSEs2I0k2ZjF4ei1TcSpGYFY+V0g7dzxRcnw7TkV4
PU9MKnVHYmxpTmB+cD4zKn53QAp6Y3JeVGZYd1RyKHQtYVpwY2lPN3pvMjU0VUl8RjN6OT1VZ3sh
aVgzelZycDRWalpOd0JBfF9iJCopKFJzb3t1cHsKelpOWXxibGlebkFLQnJmWlY1SDFMTSkhaTJC
dGlCU0JrbUw/Z2JwVEZNITNGRFdRQTtkJWtHdj48UVp0TkltWmhUCnpmdCVYZStMeytldDg2a09I
alE1eylVaVo5ZjNCUiRnPUoxPCN4bFE1MCFNPFlzO1ZJQmxGWSsoWnYzdjJ5Q1I5Rgp6Mlg0dmgy
cVdmJkohbVVIJiFlZFclPXs5b2pITm5PbWJ+QHhMPXFmRlEjZ19oPU9KbzA2filIeXEhTSZDNUoj
a3AKeiFTdDdGNSFPQFVLe0VsajFkYVFHeCZuKDE8TD90e09ALUpXQmMjVVBGaHBzOTU7ZiYkUW40
ZmY4IT5BaWdQbndfCnphUVZhTmx6bUc9NytOVmdPaygwcl44Mng4QjteaD4jN2tUOHs7cTM0OGlX
eGhfQyshcCshPlRXd3ZyZVl8Qzs8UAp6ZzVpSXhuS0ladCpnZChCX3V0PkBGVjBDQmBnQHU5X3dx
MGk8TlkoY285Mj8+QTEyZWpfP2Y5VF57KihSRElAPkQKelhMS3lSWnE7dmpyakR1R2h4N0RuKCl9
THEpUD9+MSkxb0BRK3B7T3YrPiUzOEprM2VBXn1FTXFKbXBgZGF3a1ZzCnpJaXloK3hIKmpOZ3d4
YEFAJDRiUndMTys0elZ2dEFhak13YiVETENCZHV8dD9iWGR8PVVaYUBsVmlZfVkjN250Ngp6PHt9
XnhlT3k5VnZeUEMmMj99cHFxKEFYV0JGOGdfLV8+P25vdmJxcmBAWTN7dzBUJX1oOUkqXjByVlJB
LUZNd34KejdTRm4hUntvKlg7PFApTD9kRFFyTSRxd19QbWhqc1AqMVUkVWRnMjhDKzQpUVNhRT5T
PjdTfCN6Wk5Bbkh6Wkg4CnpNfSFJdDdvS3FidG1eS0k5djlicjYpJkR4ODE7akZ1fXQ7N3dtSHJf
XyRXVjV6bjVPY2YzaUB1enxwKSMzNHZKTwp6ZmooTHtffDtRbHc7KU9uaCUxWUVhU002IzRRYDZj
X0gydnR6dV9sUWZRUnFwejghPFQ8flVgYF9YRjJyb3pHXmkKejtPY2xNJGV0JlBJLUhpZnpkJn5U
KEwkYiVxZV99dE0tP2hGUURZVm9Tanx2VytzVWFpRXRrNDlxbiFmU0t9blY7CnpuKWhZVD8ldkxs
VHE+PitWOzhCfl8+UnQleGI3XmN5PU5XWCRJPWstRTklJk1JaVE2IzBhUSt1Rnw0YFgzYjdxYAp6
O05lamNxeVVpdGtnYWNjWG5eYFQzZWNiWTx6dlQ5JWJScjlzaXJsS0BkdTMofEQ2I2BHQHJ9KD04
NmhnaU1OTX4KemBVbjUwb3hgJlYxeGJZbWVXKyRfUXM2QUJRN2NtNClzfEoyRVdpZENpZ2xSfjN4
OVEwYUtSZyNUfVoqUTlPfUdtCnp7VF9JNTdteDBJQm5EQEF0elliVzZqKE8mT088UCpIaHNCOGlT
UEBxTGtRWGFAVSVhOHlYU1o9JXgkVT8rdWw5WAp6YkpIUCN4bXpMTT57VXdTX356d29SazxzPTxo
YnhTNEdPUj5JcSpfPHxOTDxAa3FubH1UOyhhbnpKezgoelRwWnQKej1eaVRjbXhfKEBOVX5pPXlr
SitII0NUYVFtNSFhd3hpSHdXbXY9bmFkVkwrNFh7I0Rqcz43e0kwaEhPSTxMVHh5CnpYeTNZXzxE
Q1BnYF9hd0xmcGZjTWJAaHhqRm9COyZRTjdpNWheMWBCI3JCOHhVKCs+KkdHJXAjKHRRfFJiYmc4
Pwp6PCEwfXR0SXA8e1FHaFpFZlZiUXAodH0+eDtGMDNkUzV3KDlFUXsxTTtGckdxXz09QUc7WU5x
YUElX2l2VWdsejQKeiVQaEIkI0Z0d1JZJSRfYk9LTk5PYDZUNmpHUmBYVUNufTEpbyhYT0s0R1h+
clY3O351ZjRIfGJfdiFYcFh2VF5uCnpRVzMrQnVeJkEmISRyQSY4NiRNPiRzKllWP3N5dUEremNG
TWVIREU4RStYUGNOUmhiZVU3QnVFQEBtRV89RjslIQp6bTYyXlVKaGpYPThxZW89ZVktSU1rME88
TzBxd0lBXkhNYyFfM0kmbXFLZ2srVCNjenhIVk07VCV8JTxnNjhFMXsKemZNJUorSFphNyEyTWNa
PGxjYkNWeU5NbjQ7YXdXTWhyYVMoJG5hKiVlfG8+b0lCb1AhUS02blJEWk9zdDJJbW92CnorTDU/
IUFqO3liRzBUI2NKSkteKEc0RyVAbSlrZFBOQ2heNFRjJnNZeTdZX1MqPyhfTkB0bXJBbjJpcnBP
bHFmLQp6LXEybi15RjRUJm0+fDVfYCV6QSpIRXhYVC1nRHlRYCVVNlZiVTNMQWt+KkNjZjg+QFlo
akJaSUJoUEBiVSM1M3gKekB0OT9ZQ2AkdyskJTF3OXdFTV9gTm1eWC1gMk44YnhufC1acWNrSX1C
Nn1IVCsqTXR3dWw9RWBIbWYyPylSPE42CnpkeFJUNGdhXk92bW9sUV9nWVhyckdPdWVJISQkY1Uh
bFVgTT5HNnYpZXB3fDczNUZPRTlRaDFlbGVYaTxKUWE1Pgp6Vk18N194STQrVXN+N2pDNHFwamdl
UTQwfGlTUVBPdVM8M2l7cnJASzx2eGFGUFZDIXpoNHZUNHJ9Xmpmc1NCZW0KelktN24/KHtGaGI9
YjxTdk4oT2VlJmVybHwxRFYxIT9ZQHtubSVJXm0zJndsaGt5ZEJwS052VUxUSnxLeVBMJTR0Cnor
K0UqJkYpKUtDUWgrLXl0SnBxRVhySVNzVFM2RF44T3lWRnI2cTFsQ2ZpXnZ3fnYzKT9MYjktc1Nk
ZC0qWDZXMQp6SSljUWtCJWgjNlZpI2o8ZmNjcVlLWF9jQTF2UF8he2cxJXRvZ1NRWHIyZjFBOTJM
PE8lMEZwS144Y05gNHspSz8KenhCYk04TH4hKztmJSZiY0okTkZmemxIOUBeM0pOZml6fTRBckhN
UkRYQWN9PEAjWCpBVWNZTlFkUjhaVTJHKWF1Cnp6aDIjYjwjOGQqaXR9dUojVExvMzJEPXE9ZjFP
WHxWK2Z+VSRXKWh6USV7PzZlMyheQipJaDVFZlNCMEpeUUJTPAp6NGswQkBDOGx7IShuTV43eVoz
PkVUazxjcldHZjNYRyl2Q2FrQlJHJTJ9cj9EdUJmUExFZ013Klh2dWdiJXYzOHEKemIpOzhiY2hA
SyllbzNDMWV0dj99dXU1Z0lrYUdmNzFMUnNWcSlBZFFPRzdGWCROb2Z1QityaUNUNlI5ZWgyKn1K
Cno3Z2xFUnFTOCNgOHM3dlg8TW8qZUooRkZQI3o+eXAwUnxIWW9qJEUoMD5FeS1qVFdHTjYtTlAz
ZUgmQk1wQnB1dAp6cCFFM2w0XihHQ0pPfUlpM1AlSjFEQF80RFdUSlYrO1lKdFh4ci0/MURtVjlV
THlvISFvSWslcSliQWMmdWxBdDsKekopaWVydmI+UmxfTl5PYW8haXk+ciE2VWZXYVR7dVF0O0F7
ekk+WXpWWnB9M15sNE56Pnk/ez8/RiFFOWokJThVCnpOODYqTiR7fHcrIUFFPXBBKDwxTygmfDB6
a0pPPTl8RClvN3tONDx0cFpPMnVLem4yKmFfb0deOCZCQSRYZnhoLQp6OGBXaWd4dnVyUDhqV1gm
YH1ebkRfSnQyQC1ASEZxWCFRKXJvXnNQQ1Boei1ecU9aT0JzSD1oOEx0UnczSlRHeT4KemkwZlB6
N2BtaDJ1R2MxQHVAM1djTko8UFZ7PE19PXFOXiElcVclank/OSVKViVyczF0aEtLaTB3PW1NdztA
ZzhkCnplIUc2a3omfCotMm1nVzNQIzg7Kj1pSV95Umw9WDswK3E7OGg8YDUrfEdoakNWZ0JCPT1e
KkBtUUJMPSY0NFVofgp6MnczcXpyM2VES2FQaTVWVS1wK0JzZGNpVG1UJEFfZ3xCNGV5Vil9RW4w
Jm9EKSpreDtjM3NzNlRLZHlsY2FSTFoKekRnIyQ9VlNAVHs2PkpPKk5sSE13ZXlmY0JiVylYKT49
dCZSeHpmNCplYVJVbnFhJXE0TFNaKzFhU3puNnxNQk9ECnowdH5WaEc0JFpfQmkzfW8yLXNyOFpC
NlR3LWx6fDRNLWN6MlFCUnBgLTNwanU5ZWx+Sl9CO0V5eGZ8bz8xS2I7PAp6ZEVCenZsJCZhM2V8
WUFITkBVOV9eODd9R0EqWit1YmdYbUFyRUNje3A7TGdoen53PmpyJmsmJEAzNkljMGdFKjIKekZ9
WXIoWEsmdk85eWdYZyNDajA9ZHZyPjJNI1R5YVBleFhKOCVLU1lqXns3WjFyV3spUXVrfCtvRTVH
VGhEcTk5CnowPG51YngyTDx3KSVwVHIpQGt2IWkkVWZLR2oxPUM4RXQhaz08O1FpdkJJQCNtS0RX
VT15JmghNEI+M2UxeWdQSQp6WGMmOTxEcFFCZyt0KWVmWXkjbkZoRHE9MUwqTlo0TWZlSGwzNDc7
V15RamorYmlvVW9CRD04dURScmpsST1zfXoKelVTRHQ4TEN8cDFUVGVMNkZDNz9LZDQwSl9RTWxC
WWghS2wlaD5qUTV7YF9zP1FVeiNfbFc3fnswZnVeakk4Jm8rCnpuKk0rNUBPd0dSTmcyKUc7JSV+
di1wPVM4UXtYZkgrMSY0WSZjJXUqO2FUZjxvO1NKZU1MZD5fT1pnNyg5Izg7TAp6YTJtPD9hPUZ1
ITtSY2I1PVpGWmk1QnM7QVdKVHF+ayo7KShFLWByfTIrSXkqWll1JXJOdH5nY2FhSDh+ZE4lY3AK
ek4/TG4xWU9+RlVSfDxxVGdwO085bm9ZIzg+eTBpJU9fcj4wKjgoJmpwdGp+M1c1VCZLcD1MODRl
ZSZ3dFdlKHlHCno8QiZ3U258ZWNCZDNlbU1WOChPWHoxMkNCUXRfenVZOTQ8aiQrWnQkaUg4Kntm
ZSpnLSZzYj5adVpGcl5nXztJKgp6T209U2w2MUpCcEFucXQkb1Z9SUZ5ezREfCZIZmI4QnxvN01x
NkFrZm9fRGVyIWZLWl5mWEoxelo9MmpqJChjVVIKektpQVlCKXdqLT9pbFhnaDIyWENkYSVYVWo5
SU59TFJYdiVWdCpISnxeVkxnZUs8PVBhWTtzV35CdDc8RkAwcXIjCnotaXwlSEk4PyRfdUZvJGUq
Kj1ueit1czxZMShoZXM2cmlnI1hzVThuKjw7Zm5XI3goZzhsSzVKOCRVU2grM1Z1awp6bGU9MjV6
TlpMciMmMiNvSVpLRjc2JX1NYXZxckQ5Rl5GYT5YbD1OdGItP2pGVU9rI2hybzdSZ3Y+d1RnZkJu
TXMKemltWl50KDxSaVllXlhGc1FzKEc0TFReam1ZUTIzclUqPl5PLUlGIyohI0RXUnhAcmo/Tykj
eTREeUp0Sjw0eGkrCnFsfj1EeyhOYWh4a08/ZmZROVN9Q1BpJFhsXld8MkUqPT5YMHs7eUheR1g9
O31DakpHMjlJbmEkCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1vcmll
bnRhdGlvbi10ZXN0LTUtbWlycm9yLWhvcml6b250YWwtOTAtY2N3LmpwZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0
aW9uLXRlc3QtNS1taXJyb3ItaG9yaXpvbnRhbC05MC1jY3cuanBnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MWEw
ZjlhNzhjYjUzZDI1ZjU0NDEyMzQ3ZTQzOTk0ZDUxNDk3YmEKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDQ5MDQKemNtYSk4MlQpVWN2cD1ET0FPLXxQTD9vYW4ob3NQfG0hZWRXLWxaaTVFPF9NUTJN
Zkk8NWIwSEVOLXEoUjhtYTs1CnpMQkxSQHN4K2xhJnpKa1hgYCEyTW4+VE9WKj5oJms/QytmMnto
aSZOS2x3OXg3TFpmLUxCSWUmUn5IWmwwRHU5WQp6MkMpSXU2Ymw1PFFmXm9PdlooLW9pdjJHZU1E
YkZESk9QOU5weCttJnt9JEBNPCooUE5LcD17amF7Y1oyVTR1TFkKeiY7ViExPiVlSWhOMkkrSTtN
aFYqNE1jN016em8xczszK2kjMjAmbUM2Jk9WQjBNTH04Qz9XcEp8SVpvI01rZX1HCnpHXyh3S3Aj
UV9lYUVnfFdwNV9ieSZ7TGNNRWo3KWJ2YF8+QE1OTEVURm59NF4qdzZCRmE3dURQMVhLaEsrJG9X
MAp6czZmOy02enFSTnNRfTZvRWdoSmlqaH0pMnRSekgqayVQOz9QQyFhRXAzfmlmSlB0NVpKX3JJ
K2ZkTTY4XzZacFgKekNqKyNySGFDNlotQERZOVpSJUFMZUZ5QURUeWI2KFNpOG1mVTI3eUlyJlQ+
T1NXdkMrdHpMK2k2JSMlVS15ZHUlCnpjZ05gPE9JQmM7TH0mOS1BNkNyWldBailmeUh7REZQSEVj
aVkzMXtecTZ4OVFidlgjeEdCIyM9MnQ7ZktCUX1Ybwp6VVItT2Nee1pYUj4tbWoqOzxlRipAcko5
a0V4Ql9iJSMjKCRUczkxJERhPkJgIW5ZVUtqRktqQ2B0cmsoUGxPJk8KeipOQy09MnlpR3NNWUIz
UWQ0dWo7dVgxP30kMGcmT2c/RDM/SmJnWXJOKHVRb1dKQ3RXPi1XNkl7Yjx2PkE4PyQxCnohZzNk
SlBzLXZoQSElV0dFSSUkUy0jbzM7cj8xMHRSclpqQzU1IThKQkxrWnt7V0h+QlheUChCeGFEKGU7
Uj4tTAp6aVoqTmFsUHIrMUNQSkNVPFlCUHo+dXc5d2RecUJ2UjdAKFZCUXY+O0g1OFJjcXBXQD0q
RXdnanslTXExQlY/MTAKem03ZCRPe3JkQDloSlN4bkZ7dGxpbDFZXj05UUEzM04wX1VHJEEyKzdl
WCo5Jj4xPUFBd3pIaEFqO2RoKHFsMmpaCnoxZT4yVDwoYmswcFprMDhRITkkZEh9d0lyR31LbSg5
Yj5ROUM3P21sR3R0PjdaI0VoRl88Zll2PXhqRStITSkqbgp6WkE2b293fUdXK3N7XmUhYkhIX2dF
WUEtK3htd3FNR2smWVE5YDFBNjtkPG1eViRvN30hR30zVi1Jcit9WlNGM2QKeldBdlh+cjZ1V0JS
M2VzYlVPPFRRMT0rcXhOenF6TStrQztVaEpuMThmfn5hZW9wUSRtak45VUl2cXtyQj4wTylqCno9
TGlvfHkxV2w5bXJmSWhveGdHZTYmYTIrQHxEdX56QVVEcCNlNjF2MHFYYElAQndgRjs/aD5ub3xy
aXFgMXE1ZAp6WXAzSDlyMT5oYnhoVSZ0MU9yWVNiSENFVzhsT0RvWCo0UGhSPGJpWnI0Z014IWRZ
bSVuUlVSVjg8SjJAbkNMSnAKejZISjtkV2wjdyslREttI3tNUGU5UytSZXkrJWZOTGFyMnY3ZFN8
TUpsTzRzbWxhWHYoMF49N055eEN0JCVWMUczCnpaek9EY0x0Q3JjaShvP1Y7eDFPaUk3cmZYcEtw
fl8tcno8eFhhJTtEY3dTPU1aITwqdUxoUnRFSURMcTN0P2E7MAp6KkkzZDxtZGYpNjRlODd4b0h9
TSk2SkxvTGBNVH1BZCZeOSZDVT8xdlU2U0xSJnc5NVA1ck1kc1g+ZkV4YmolbzkKekt9Rn08YDYo
cHlEMytHWVJgb0BGWGYjM0NAVVdlPihhQ1Z8PTN7NTZPQnB7OzwmanplTVI1bE9NQzB5aXpITHQx
CnpwMFc4UjJFVFArbGxgPT5oVT83RjNCclF2cmBGNzVOcm5hWSN8JDxWI0czJlJGTVJsZVcodnoq
eGhkOTg5XyRLYwp6Kmpfb1g3MS0zb1crZk1GXjsqTjtMX0VxfDM5Iyg0O3NjZ1JFNTsyWU5eVjti
VkArMil3VGVzViUzUDhScl4zT2IKejhLSGxDYm1afmk1RmtuKl5UPmVzPDticU56QEQ0bVcyIU1U
PCEte2JYVGp5OVEpbTB6NDB3TE1qQSlRZV9rTF9XCnpFdmtLX2w1SV9fNTYjfko2K1liSjUhc2VE
bz91VE1gdkk+c2Z4dFNDVmpALTApSlolJEQjZ211VDM0aXZyOSNvMQp6O24pcEFyKnpoSzNfZHdp
PF9Zb3A/ZndUNzYkb1RheXlWZWcmWFN4azR4SWEwSVAmcSRWVnFke2VIM2V4NzRxfXQKenI0Jm96
bG93SGp0JSp5MklaUjJ3KURgRDEkVDYzKzVHdFR+d3BHU0tkVXIhMHsxYipDKUZXTDcjaCgmclZx
ODBiCnpjQE91cW4tRT1MJG9aWXxgLVZfbz1ELVlwYXxtVnpBeHVqZC1jJEVUKS01cnJ7NHAwWUN3
ZV9GUDspRyQjZDZOTgp6OGQ7M3AyVjBiWFZlRHlhUyF9ZlokU1V8YUx2K2dhIWc3TG5PcXIjVmBh
KEFVbSV1Qml1YkdING13MHhPdG5eb30KejNtVSU7bVo0WnE3R2RLOWF2Z351Vmg9bkVwVWpeJVY4
d1UleU00PT1ZSTMjfntmcSo/WHwhOV94OT56ZV83IVA1CnpROzFAU3tZWXBITClnREpGYlJIY3tI
NlhPTEh1SkI2UzEpZXprSjVBY3I8SSh6fXFBfkg2YHRTT2hmMllxYz5DPAp6Yjl2dW1ldD4wc2VY
VDdGQTEoSVBjY31TTm1hNmpzVG9JWSNEdEs/SG5scUplYEhGUE9mWkh1b153d25sTVUyWGoKej9e
PUkyY2hRKkpsa0lxPFNlfG1XWHhAYlJVMDEhKjRwR2dGPTIpKnxaP2tQdXNvanB3JWYkKV5Sfn53
eHRyfF4jCnpvJT8jeTw+JSozQXo+cWFCVWg1TjU+KzROM1lGOFN3TG56K01wNHxiYmpjZXAhKXdM
b2BsczUwbHx9aiYjT0JzQAp6ZGV6KFUkekh0RkxaLX01cXhOI080dlBHIUU8dSh8VFQpI1ZTKiQo
YkZmKClRU1NsSX4hen40Mk0/KEJYNSFsUFUKenttajUkWXpmSlModE50WXM0NXU8VlRkWWVidS01
Tz5BcnlVbHsxe2tiK3kmTDZZSWN+MTFedStGUC16YipReipTCnozXl81RCp4UTB2MDElUHtoTXRv
Nzx0NVJxMFQtKTBRRkl4OE9GJWR7VDZiOzwyTHl9eUNrJjFsWjdBNUU2NntfMwp6MUtvTkxWbURQ
NWtmLUgoU0lGY2psezQ3b25yTkVJeV9lfHNVcERJcj5ReFJFX0NMYmpuVXhzYnNKdDllJk1iUjkK
el9VOHhmKDZwelI4REV3SEU+MDx8eG9DaHQpb0g8WU50QGoyLXFGbk9ELXV2VzktKWdsVzsmdClM
Q2g3IzU2ZXF1CnprV1p5JTZyTlhoWmB6b2pmOSNINng+d00hQTxGRF9ySlgkVmxZcE1Le2VJLSU/
T0x+emZxQ3cmPVVxUnpTYVZCTwp6fEklWDxYdmBYSGZRU0IkdjNraVhVOXMlVGE3JEZETXVEZSNA
dyUxTVhDbWkjYGkoLWh4NUh5S0R7e3k4RHR8bCgKelRAQmN6IUVuNklRc3gkTDBMU18zTiFpOzth
VUVyNVc9PiRsYD07d1Z6ZmFKUXRpOWxfNFFzRClvPEl2ezdQKEtpCnoqckYzNzV0RE04MH1xMXpz
Xjh+QDxRTFFBT24qLTRLOWBhJWkjWjNjLXNRIXxAbWhNMz5Ua1NkenR6T0ZiR1NrZgp6Y0NqQkdr
eT9xWkp9PCZsLXhhQVh2RXApbFVZYXxFeUwyRnJzTjRCfHckT1FZJWlPPjJzQU5BVEkobitZTz98
dTwKekdFLXAzZDArPkZBIX16Rjh9TVEkQHh4LTdGMSYoKz8kJEVING9NMHc7UUo0czw7Tjh5a318
dlVrXzxPSndEflYhCnptRjUoZGotUHxaMSl7P184O0YjcWk3PT0oYUlzY2F6cEJVPVU/cEdwR2Rw
eCFvVlUoWnBLV1hfREVmNmRhcDEtSAp6WkVLe0ZVc1BiZyN8RW17P0M5NFNve1I8WWF3VH5leENp
MHRfNnxSSyZ8eHNTTFRhfTlpRXNHYVc0fm9pPkIwdDIKeih0KUwoU1ktPStia3t8TmR9P20kZGl4
TkNBNzBQKDIyamBSPDhsfmc2VlNrO0Y9KmBQXjB7U1I7V2UtX2EkdCEkCnpBVGFSQkpjZHVOZXt5
ckplY3dpODZJd1V2RD5gMGxPfUc9V0IpX3kzRUxQTXUhQjNFfnRAUTJsSlhrJX1KKTchIwp6XnhE
aDxeMTVlQzd+U1NeZjFfcUM9Rk9DPHJCP1NsZjR1ZlZwa31fYE1XcmA7eTx3S3VGZHNzbUBuJlJW
bDA5M04KenV5KSlmRDI+ZTx4PFdZaV9xWjZ6ND5Tdk4zc3oxT1BKVG48NTs0cXNpX2FSPS1AfWtC
VShyNWBXVDI8TU8jbTtSCnoyOyRoI05aY3tucldfbmQhfXIyWiZsT29tZHJYJXtKSklSdngtMStn
e0lhWE9fUXB3dTR4UyZGUzZ6fEZ1NkxrUgp6ZlYmKzBgcSRqb1ZwQWNEelMpRkFPP2p0RkFGUSNt
akpSfS1BYip6NSUjaW0lIzkxPCtqY3BfND5xfGFaUWlJNnsKem5BcVJlNVpHUDMrUitpNF5Lemg4
QVF9cSNkN1IlR2x1KStNNlc1X1ZwTHpOYShwKlZ6R14mJnxLMFdLJnU8dXMoCno/YzJxZDtnJTJs
WU40c19QSD90bzV5ZWg+KFEwKUImSWhtTSsrUzsrYlp2QHtAeGwjcCFfM25UN0orRXEyPXxvSwp6
NXtJU0ZfIU5EY2hEM1Ylb19SZmw2VnUjakhyMkhvS2hCbiRYZyk3ZDNTc005Uj87NkArZVg/Q0lN
ZGQmUi1mamgKelMxN1NNd0I2RmE9P3RFfnBidzN9Yl97RDhzbXYhKWFqIVBBSChqJS03QTZDcyFE
TTA+YDBPJG5oK3Y+Ql9AYDApCno4WUFrWlVaNkFKS2xOYDQpbzJYQzMmeHokSHxMRmFVaTJZTVVz
dHRucnVkITJ2Y3wlZXdPd0BpQ2stRWV5VUZXVAp6dHxGeWdZVjdZdWMkb0NiIT5JY1YkIVZrJXJ7
dileZFpkQSo5YHNMaztgeCE1JV5xPjhQTkt+P3tId0NRYHR6cDcKejRpbFklczlRZHtfNigjWUVX
PXp9MW4rKnpqNnNTaCMoYUFxbXx3emkjdCEkUVJXcSh2dnV3RWg9d29IbCZEPXROCnpDRUJ7dkpg
bnFgRF83Xj5se2JBSkNpS2UkMShTej1zfVAmPVpfTmZ8O0RQVihVVzFKPnkwa0d+S2syUV9YeDZZ
WAp6cj1qYSZYMkkzPDVCPFdrbGZCNXNQQFNYO3VIZiE+RlFZNk51V3ZpV3J7bXUkOWopOXxGY20x
OWBfald9NSFkdzEKenNmTW80O0xEbk8kKERrXzQ+Vm0mWHdJNzM5NndCcXd+RncjeGlHbFVUMkE1
bV4mLTFzeFpvUiZoSzFxKkFDfE84CnopNzQ3X3lHKEtaQHVyVnJHJnQhVDFuQWdqQyYtX0VEfHV5
Z14ycU4zTX1IU01fQ0pCcVBMR1BsXlIrMDg9MSYjdwp6azJFdSlSI3V+LXM0YVEkY1kjQnszO2Fq
I3tlUGtWQG8pYkY2ZllfSUZnZEJ9N0k1Y2olS0M5QD9tQzxoR2g0dDwKejJEKXNBejB9R0poUGJN
KT8/SH1JZGUqVWl7NDNyVHAzWU51aEk/IT0qMG95fiNuVGZEd2R8U3c4PzJIXjg2QyVJCnp0NWRg
dCFiQUU2SC1XeytUKVI0TWF5XzNhKkJqZD4xfEVUQnpNaE9POyprZilUNUgtNnU0MCUxPEJta0Yq
JHdPbgp6X3JoSnJ6RExAam9BUlc+UXhMNzVuY080M0ZBbFdebysxTX0tcTNOZVIjQz5TYjZjUmVA
MSY/amR0VjZKWm52YUcKentjSzc1ckFrQCRpdTV4fEBoQ1Rve0l+MDRKZCU8KC1+LUckYjBAcUxK
eFdPalJ7WD9kOz9wUXhqdEtgYWAwcWpGCnpgZSVScWhYOWVMPXRTOz0meDAzKTMjRz4wTkchRk5O
KyQhMFJ5WnA5ViZEI0BAOCt4ellyME19NzA1c2dXeyhXaQp6ckViZXF5WVI1O05DclppPDxOJFkt
Jm9wM29mQWNPLWgzO3VwREp3SEo1O0kzWUk4cShLTG55ckowXnlCaFFHQTkKem0hMClUZylZWiVq
cENsRVB+O1MwK3xGMFAtbHNjQygrJGVFOG9hUFoyRiFrYHBUQSlsOExOdEB2QlAyd2gjdzFOCnoz
Mz5kWVAxX2srX1kkaHEzTVJGaGdGbClpM0xQXns/fShROypDJCYlRl5sRVF3NkhNSzx9cVRiYSYj
KjBhSHFLeQp6NytLWE92dkJUKngqSz1VbyFqZDYqSXM9Kz1IdGIpK31ON1cjZGQ/dVcpQ3dgJk5i
byVkTmxXSEEjLWJsMzg+UFYKenIkZyk1KSZFNylLYz9ldm51PWVQI1VGVDtndiFrdTJvKj5OVFFz
azs3Pjc5QiFSR0dQM1NQfVhCJTQmfVorczZUCnoxNiFaISROKzByYFhCZ1ZnJDlSOGszSXpAYD18
dFFJNGZATUN3RylPeClDYGdHVEsqQVpxdEVmbVBafDsldT0obAp6azAkKnRqKFBCPCh1anpkS3M8
czNMbCRFaTI7MSRtUT5rPyk2bmIyV3puT31YJW1eVjlyO3l0bl8jSXZrRThubWMKem9Obj9iLTZw
T2hWWl4mVSVuVk4yQV8yYT8zdHUxdTlXUDR2clZEbmleVy1gXzhuRThFfDhDZVVuT3xSVVNFIyRt
CnpVcWpNN1hUV1R3Z1AmV0hGKFZ4MjAqNXlDIS1ifmFJX009elMyKyYrKiF8ZntiM3d2RyhYNFV2
QnZAeXZNQlptTQp6b3NWSWB4KD50dlMxUzwpejU0ZV5pPEFHYzgyO3d5ODU7TWhedS1AMCEkI3B3
TU4mLUU/XloyVTwwZWpOJDJRaT8Keis8UF5SYUl3dn5jX3sqfkcjTTA7Mk9tOzA0d1UhQS08Y0Z4
cTRPfTRCQmRoS1dZZjx0VEVGMS1JRkFoKEJ3PX0hCnpIPTVFbXdjITxkZXlgN01UdXM8U3NWUWhX
PFImI1pIX1hxJChZSih0b3d0d1o/MCUxZV5UfFVjUE5LOFJTJGZKLQp6MkJEMEhrPiNlaGRBcWE/
SFFNR3tqd041ezQ/YXFgYCY+PH1IUSYqKCsmMSlUdG9vajBSOGExZF5OUFd4d3xmYj8KekJAVSRz
Xzh5UUNIdGJyM216Q21XbHE4MDt4ODNOdWk5fjg+JTlSd3kzPylZTUNuKnVEbyMtZk5qRHU2XlZH
M3FTCm17RmY0bWEheUVeb2o4PFhJazEtNHhaSGdTUXR+WV5SUWJsQWk7bDhuTiZmOzMhMDYhcwoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24tdGVzdC02
LTkwLWNjdy5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTYtOTAtY2N3LmpwZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mOGM5YTZiMGNjODAzOTZiMDc3NzIwM2RhY2NhY2Q0NWY5YjU5ZWNmCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCA0OTAxCnpjbWEpOTJUKVZuKTs9X1dEQGFGPi1sRnM+QjFJSHdmYElmNihofEFg
MiVzUUFuZ1NzZEFAbXwwPjRhVl9HJTM9MQp6R1hmJGRBU0VDKkZMJk9aX3kyZHNfdldyeT1nZDB1
ZWYjWFN6Zz1jK3s0XmN8JGdCQ2dmQmBeOTJNX2BQZkMzO1AKenE2YklfNWZOflNAVmZDPU9iaF9U
NDFkSyQxZTlSLUlVbyFtYHNZVWNlQDV+amA+USFJNWZLMztKcFRkeVhARms8CnpOQzhePkhnTSZo
O31kJSkhMHxtSEg2cnxiZlF8d1AyNypaZEkpSTNkaD90SEQtdzdaSWdDY2JDU04/eUYwaWdWWQp6
ezR5eVMjVS1OT0FRWUYkRXxIVmMwc3VKeTFqdEI4fENFSmJNOHFWZDFjWlcpbEFlSylobHlHOERs
Z3dYZXRqc1IKekNzSll9NT5mKjktJkE2TkBJYGlzait+eHtmYEwoel9afXRGUmVkYD9EVjJDO3My
Nj9+cGQkUWBoPm47SlB6RUNDCno3JnF8MVlsPmlrTT57I2NuPVF+SDdJfSMqJWMlKTxfWj8xYnVv
c2YqM3V2RytgaVB2eyliXi1wO0xfKkxmO3JwZgp6JCY/e0Z4TXFWOEUwN1VvdHV7czJ7cm1JJG8w
cVBiP0BoYjdYeCg7VzxGSk9hPmF1eC1ObFlmVnNnS205KTJsKE0KemtlQmFxQDZzYVplWUxETDlO
Skk/dH1QQyRWNUI8ZWFGI3l0YjYxbGVtYGhQdz94SDhRTCRxSCFXJXdwI2JZJDdvCnpFc2pQX0wp
RE1HTCszZ25kYyk0KyZLY15DJDBjQkpyRU9VOHB1akpsc0d6KjNDd0VCN1p4MU56bHJGenByX34w
PQp6a3JCcXxCKHBtTGVwMGJGekFRVDxPe0cpMj02Tz1gZ093PiN5O0NBWmBqSnVFTkdHUzYoflF0
ckBnd0RGY3V4Yy0KentqYERSKUxMUiE7ND9SRypeaXt+eUUzR0FSWX51djtmSF4jUC0kcCZ7MFhj
S0NiTH00NFUqMVFaJT8ydTRALUtPCnprYjYrUyFhb2x+cCtaZGUqRXVgKD1iUHtWTzstTF4kQ3kl
IVJraU5tcHQ1eVRWeD1XYm5mP0I4YlV9UXAkRER9bAp6aHdzJWt0P2BLWXFYMVpuYEJJNGclbjlk
fEU+fGspeihaTDlGSGdzbVotQFokZ0puJFMlJiZfYkptNk9QISlTMUYKengraVV9LXkwez5meEc2
Iz8rK2ZVaWF7fVlwcyRfQHheeHl0UHZ1SGs3LTx8SXM7JUlHJmReK3ojWjtJdVRrRy1ACnpKLWZy
NCtJYGJ4RjE+NUd3UWk7N2g1OURCU1RvX2k+bnY1VE5uZTg1Pj1hfU0/Nj8rKzlnJGUrR1cpP1Qt
PUFCSwp6ZnpeOTlSO18hQmFMPEpiTVNzaV43c1pObzZBPT9jd00+WDhobkpYfW1zbEo+QD5ffThx
Tjc9KHJwTTt4aSRAbmMKelhGUXM/djIhbkdIJiZ9fmgtQW05PTI/cVZePz9pWmI5aHx6RiYtI01K
LUdGNV5WLW92JHJxfmE3RCh9QE9fcHtqCnpSeEdORXk1IzNDN2FfQk8jcChiV2QreU5WS3o8I3Y+
enRsfEdOfGpBSmopJERDXn1Zcj1YbU9CV2FnX2BzMCtXbgp6YjYxM1ZQezdodyQyV3Boe3pxeWNu
Ykp0KU1fOXcjdjtecFFBNlR9aDtIe1hfTDMpO0pWdSkxe3lGb2o9NF48JDEKensoMkU3al4xY19W
JlFINmZfY0BsKn1SYF5UKXVrNnpPKngqYm4/WSh1VElsdFImaX1sbSFTTEErVjx1fSVqZFJBCno5
bkA0bTlyQlI5YW5xUjdsbm5NKFdzPzQkVW1lNkIyWWJlKFo+ez97ZTMtZnM5RUh2YFZGSEhmaC1t
NEV1SHJ8Mwp6cjs+UXR5QlZ2b2tEakN8IU51NFlBTmFOKFliMFBtPTZJbDJWO2x5bUVMYFUqeGMq
RChqSFExJjtyWmdHcElXVyEKemc1cD9AP0hsV297Y0dhc1E2O3sxUkd9Xk4oVGY9cj1qbH1FSEM7
bj91ZkRuOCQyYDQ/WXhQdmBwUjMtaz9WMX5NCnppRUZASU9rcH1hUFQ9KntXTU9NJWctU09NcyRT
WDNxPlpzQVlCPEpGWGdscG0lP01ENEN6MClwMW5LUWImSzArOAp6THJVZnt2NzMqaCFkTVk2VXVy
VUxzXzltPkxOekUoamRTUnRLdjBCTDNSeX1fQDZ1PDU0cEQ8THBWQW9UajRYK0AKelNKJURaVm1x
ciN7cFNfNT4pUHZnKXl6a1B7fEkqZV91K3ljYDwoIVUxdz9TNkZPZzxPQiE2eD1SWj82MF8mKzYx
Cnp7OFFyT0tQNjg2ZV98QW1gaDszSj85Yl5WSU1jM3I2MyohMGNnTXAyQkt+YzJ7NGU2KSoyak0o
K0VvNSU3bFozRwp6amgkLVNscDw/ZFdBI3VDSGJQbUkjektaTThgZ3ojU29NKjJuUG1nbj15MCMo
Y189K345ZlBZMXdmMkVWZTBvUkcKeihBaVpAckJjM1hgP1k+RGkjSkx2X1ZyK18kNSpVZiZDZmM2
RXU/UTtXQzFwNGwrSTYjYis0em05bzEzVENhKkxsCnpUISQlSjwxMTRDd0N3aTVle2dvIWJjP25U
KkJ5VGZIRkozdzBVPnxQUDBva097YD1KYSpXMzsxUipiaSF3VT49Pwp6MGJrYmotPEUmY09ISTQq
cm02WGtqYl9yfW1eWH51IUxjVilEcW00RUhWKmFCMiNneUtITS01ZmBmUXgxTSVlJjEKemREaXwh
WCplTFVLcDJ9QSVKNXBEQCVgWExgcSVnM1k5RzU9Nl4oPTZNeVdnSitmajAwNjh1LT1SOVN6ZUVh
fDUlCnojRFdpbzs5UWFgYjlVdlNBMEVWZz5adnhZS0M3PXt6UGEyR0t0IWhiZytqbkMhaH5oanVr
eis9TkZ1UnBrVFFQIQp6WEFnM2IrdlAwbXZxdipTcmd6QkdjRTlsOSkjXiF3NHNPNEN4ajx+emtR
NGNSSD89bzgjJHBiWjVHVVZyYnFrLW0KekI1Yi0tQHlPKTI0RV9UM2woREhnSFUrVz1IOGheIz8x
QSo4UGVlOz5CbjBeI2NufD85RHFjfEg+dTJWdnNZfV4zCnpVNW18Szhgc0g0SVlMPkJGU1hUc0M/
SEtUT1hFbDBLU0UrKG15RjVwPlVxTVM0e0dMeElufE0+VHdxdXFhMGlEcgp6KGExc1NjQ2o2Pz1h
I1ZVPVEzdXJocG1VVzZTblJSX3VQNDcjWjhZb2tqUDFrVCRHYC11PjBuVXZfTjwmJnJ0cngKemdI
Qm5EQVNHdHNFVl99Wj57bnApVyRPeDBmIVFxO0pXdms+byFVYm5QbF87U1hsMFNiXyVYNUVPJUJV
cHNJfSZwCnpCVEMwansxTjJrRCZsUVk+T3lCOGlmQGx6alhUNVpSe1JlNjdUPVo4S3I2WXIjVypA
NU13T1UlKEgweFRnNzwhJgp6VnpeZkkoJUhxfEs0YStqWGhodmwtIUc+UWF0KylibkdrK3ZJZmRR
PThCWmw8b1J3NDI9TlFYOG4rI2BQKTZLamoKenl3NEtFNHtNVncmfHBjTFQoYVFjYFhUPFBJI1gp
eT9hOyFrUn0lNm1tNXQmYUg3KEhsMCE/KiZDIW03dj11fUAjCnpCJFRkNENZUDI/dnVXUDUxdXBu
I2QmKWxvMnZVfVF5dGNXUyZIbjd2NTQ/dSp3RWVnWGlKekJSPyNgTk0jPntlYgp6TmRCMTB4VWU+
VVFRdmBkZ1RMQGpYRmFAcWwwRzlUZU50MGRzQDlVSVltcGhhJTlHJHglMkhWeUV8PHM8YnJoNzAK
enlBKjNJcVg+VF9uUX5TeSZYcXVVTVNleWU1NzdTcmJvaEE8Tz9UcCNUYFpLSmdTYEIxSTNobFdm
OX58fXVscGs9Cno/O1Y2UzE9PTVhYmFgKiFmfiFaLWB4NzJPIU5OM3hZPXd4MHpyX2V8bD44dFJT
P0khO0ReNldUK0UpZTh3bkJZVwp6RTwyeyhyISgwNUw1NGI3VVIyNjFyJWxkd1RDITx9dykmMF9A
UE5aayo5VmhILTgjM2Y4PjAjUy03MUtIbUIpUEcKelRMP3dKXnZmLTtle0dBZzlYNSVHeHwmS2Uz
OWV7OD8mJHx9Qys1PDQ9XzMlVGkjTl4hNStxdDAkd2xYX1hzfXY0CnpAeSV6ZHkwP2RhYy1gMSFz
TUIzT19BdVZ3bTx3aVItcmpxZUQoNz5QdDw+ajFCQ2cpKzJVaz50KzNQVVg1VSZDZAp6ZzlnWVF6
N3gtVDR4T28hVXl2Qlk7MG1YfFBlLSN4TXMleHFfI0ZveDNSZ2JAdiR0enZxNntuVWVxYXxGZSF0
ZkAKejtxVk41fDlEOG1DaHYldnZxPTM9PFZ1YyRgPkRSJiYhLWxCZGhnKUVYeEUlOSR1UX1yWFRx
T2trfkZXJDw8TnpvCnpoWkdEVnctemRvcnx9Y0xhMDtCO2FTYDkxTW1lV2o7ZW4hY1I/JXlTXi02
fGlQWjx8e1cwdVdHVk01dlN6PD1CdAp6TUFpSng+WEx6Kj88MDs+eCsxR3xfZFNSN196QUFycEhL
NGZmSCslWj9gbTdBdFlCaFk9eWF1bHV3ZzJeYXo+aEoKejtGfjFMUUZJKS1pUzJNdHNvZ3tTPnxW
T3shdD9OZ2dZJH43S1RreSVyQV5wR1E+Vm9yTHlmPXJjQVgpaGRQb1ZCCnordV9TaVU1VVFDNSk7
SSFBPmowdnlGRmRmWismN2trfjQybms4VTQtc2hFcGhlXkwjVldrMWFYLXlXXnEle0xSbQp6ZEU8
dD9NSHZrMXNnJiY5JT4+dE1FdjA1Kngja0hrdmhfQTE/KD9+TXBmJmhtdEVofXt3Zy0kbkd5d2Bu
LWhBWnEKekYrPTQyRSFFTnUhaENJJThgcj4+JEckTVFqSmtlemJ+cUd6V0Y/PFU2YG0xbCFWXjJ+
eXVwI1lCRStEdldGMzUwCnptbHJXX3pTUVh6dDYtaSREQnA3I0omWWAtOT9AQTtleCkxX2U3fDkz
K2VnRHpse3FxQiNKPWlkOSVFdzNyblVePgp6Kn50VzVTPDc5b2FNdT9Yc1l1VW1GVShzVF5NcW5B
Ui1lekpSWGQkTiRESF8+eTsoX29PVmlPQXAjTEspdWclcmsKelU+YiZMWTZYa3YqPnQ2UHI7NGFD
bHhSYEI/QyR4SCNfSDU0WCR9diR4dDAoOUFsYD8xS0I2ZXh2Qjl1WFd8RWE/CnphNXgjMEkmSHhu
KkFsc0s8fG1EJjtYQyV+PkpnbkMqeSlTdGghJGdlXzljaXJPVHxlWmFfPm5JbWhiY1Rgb3B4SAp6
XitvQTdkUzBAbiRvJk90UFZha1BueXw2fnRWdlVMPXAoNH1jSGFBIWJPbnxzeS0qI1Z1NXk4bF84
NERrS2dodk0KeklyISM3d3tLN1J1alV+ZTJKN040Ml58WTN0IUErYDImN0YhT0A1RWtoVXZPRWYr
YGhOeD5iMDBDVmcyN1VyRVklCnpYRSV2fCtkanxiZE1xflpQMn1Tamt1OEJ3d0BAJCtsSXh+YSFC
TX5SdmAqZVZDKTZiME9AfnNBP0AkLWBCLT40IQp6XnZCI0d0dkI5bFZ8S2gxJm50cFRJekcweEl+
Pmk9SzlTPG01a14le0AlSExWTVF6YXw7IX1RY09NdGpSQE5ORDkKej8xbE1AbCt6PXE+RE5Bb3sy
TnxPZ19RUGp3anE+IUFQR3RNMiZGV0dAe3lCN3lTbnBzSj85O19pUT8mWCN9JGpOCnplUElPTEFm
V1dvP0QqbEplTHclZlJ3N2RRMFZuSUk3LT5OdFIydmpgPUU5VD42ViR6aWEoI25yVCQ1XjFSO3pL
VQp6YXVVeX5sYEF0RXVqeHZ6bCh7X0BgP0Y4V0RMblo4d0V5N3U+bVpeOEw3fXJ+UWN1LVlOdD9X
UyNtVkxNTyRrZH4KeiRhUFN6KyhTYEIme0szQnFfVn5xOSY5a0k2allfTG48ZEVVP2Q5QzkyYDw+
Zkc5dU1pQHNrKkQhdTYxeFlgT2lXCnpmQlktQSRaMUBBXjxkTUdUXzNoS2lEVW4+SUE/a0ZpMG1C
fHBHPSZ1UWQ0V0ZldGhZKShmc2d8TilffnpRRmlXVAp6TUJsajl5fCpraHV9ZjhFRlA8PHdDfUM8
WGNSZUomJnRAdmI9cG9RbDtDeCZHTVREclI9O0RGb0RgKDBtT25GPHcKemJJcHdve3BOe3JqJEVC
SWoofmZFVT9fOG1OaXM9PUpEcnVoS05YQnB3OSNvfTR3WVh1TF5AMmQlakY7MkREdiYwCno4azNU
T1ZiPElNTV5KfXdqOWI9UHRzbU5CVzdtRFhIaD4+dW1iTngmTTYrT1ZqRkp6KXozRFRVMEN7aXMh
bkM5PAp6NUl2fEJ0WjdTSitKYyF5K2NXQjNobj9GQnRhIWtCUGF6ZTRwdTNGKz5heD1BVG94fkxX
eCluMEM1VXZ9QnQ0MzwKempKMFVIUmRzaGhBZSVXeSF7WDklZ21Wck4hYU96MUpvekl7eE5rbjsj
ej5wem5tZ0dYOUEoelp5U3ElSXotbD0hCnpjcCh9WEBXSGNHWF5fKl5Me30lPHc7eShHbWY0KlJA
O3kwIXdSWGVGQyhUSUpSbUpRZlQwbnJ9Qj1SYEhyZlI3Jgp6XldvNmNtO01+PEFLZyFpRWRvN0Ft
bWZRSFBVbT5iRE9eYXtDVElKU15PRTArWTRqN0QhWXBOZGglUkYyb1A1UXsKenAtc35kOVk4IT5J
JVBoQWNocDUoKy1TYVl2dHF4cCp9M3Nid3M4Rl9PNnotSDtmJWUqVWAqUD9xUShqZk1mdzZHCnpz
a3VzSkhFZ3BZbHlnK0kka3ZIUVMrdks+dyhpRWo9fTxueFc8VUdAU0xxLWhZcF9iKTRyPCQ7dG8+
IzxefTVGTgp6azleUXFiKmQ0PT1OT2lrYSQpd3dpVzJCc2dJViZVUDZoSWcwQGtQZ0pTVG96b05O
MV5qPlc5O0s7S1ZfVVIpPFAKelp+S2tXX0lGdT9WK3QpRVlYfilOPnF3cUhGZ0Q/JUJlNjVRclFV
Kks1LVBkNVlqZCg7OU9oVnkyaiozXiVrdzheCnotYTRCSEZ9YF9fJTJuKVJGaj1abUR1MGZ9WX1P
WkQoUGdPRmp8filNeCN9bEhMcElOal9QWlI3WlV9KXVlQnQxTwp6VHxjZEVUI3JkRmomKU51KT5l
YDxuZSU8cWB3PTJQZys3amdCe2x8e3I7VHhNe0NTeyRrVF5adz1YIUYoUGQjRkkKejRuNk8rd2Ip
MiE3TlFrbXlMeGh9PDByb1F4RT51Xl9CQS1IeHtPZ1h8OVc8JTg8cT5CMWZ9VCpXe3JjKE1tQndN
CnpkRWpRSCNMbzd5dmhROSlRUWZ1MUNIbUwpbX45akBvY3dxZ1ZsPlVKeHNwT3pCKzxTXkxGe2lA
ZE5xcE0zdylPQgp6ZXV6T1JQN0FaTTJpdmRHNHYrVU5obWBlWE1vVXNVZGQxUHxTQiVzbD5AcS05
XzZ6WkVCKW9LMkBpWUdkIXMrdEMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9l
eGlmLW9yaWVudGF0aW9uLXRlc3QtNy1taXJyb3ItaG9yaXpvbnRhbC05MC1jdy5qcGcgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZXhpZi1v
cmllbnRhdGlvbi10ZXN0LTctbWlycm9yLWhvcml6b250YWwtOTAtY3cuanBnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQzNTljMzgzNGMzNzY1ZGMwYmQ5YTA1YTMyYzcyNDEwN2QzN2U4MTAKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDQ4OTcKemNtYSk4MXltZiMpXjJRcE1TXlBySz9WczkhN1lKNmFDWiRKb1dZcTho
flBIMzEmSU1jMk9sSXJhMnBebl95OW95CnpMKG1YaCFvMTFiSiNYTHRwRlF2RmNkR2xgPyhnZmFz
JDJLZ0V6QiV0MSZ+bipjNjl+LVpFZkhWMDAyWSk5dTVfTgp6aHFaNzNMaE95X1BhNzhpYUg7PmFh
ait+RjchKGl6O1FWdm97c3B9TTtMcCEtYWQ1Q0tfV0JSO1BZdWk+ZkRjZSQKel81a3d4al42Zjhm
YTUzWiZ+UHhIMDdAZEA4U280YnBhZ0l6YWQwVmRGZy12TGMyYy1fKmUtdCF7fF54VlBEbiZUCnpA
RWJuJTlrJW9UQV5fc3dlLVZXRTZhWVlvQj5ANkZ7OWtVdDB0WGlsQUlsST81PnJ2cnUraD9xKDZl
Kmc9aE8jZAp6ZCYwLVghTmJSRHxCJkpXKmU4UERDPCY/OWheVDJxKnpYaDUoKEJ1Q2gkXk1mZnFn
T2EwNGVyfElGemBRZkZkd0kKelpycUBlaihfZ357eWkwRUhrdklBNUpTfEtjZDF2ezZmcUpIVVdq
T3IoUzIpIzBndyFMZS1kaFFIVE9BY0ZffURZCnpKdn1wc05lekY9ZzhEWG07fm58fWBMZz8ldDZn
Un5NWG9OZlhAQXw0KDcxY20lIWdNclgtOFpRXmhuQW98QWxMbQp6KVEjXk1HdDYxMzIoeGRGI1R5
ZGx1TnIjZkNvcThEUV5Lb2VGTE1rfj1aZ1Z+anhMI29leERXUkhZOFJIdzBLe0UKelp0JkA/PU93
RmRrWFlqWk0+M0laV1kjfHMpZ1gjTF99UlpSJXFRPlJVeWtoOEpkIyg/ZmlBRFY2dilaa0Rhd1Ne
CnpPd0VkOXY2Yj82aSRDNWReSmJvZGFXPUZMKyVCVnBpY3BNa2hyYTlGJlo/ZDlIMW1rNElPeXdJ
TFVyamdHKXdhRAp6XmBmSmxoMzVRRFNES3VsSiRgfTwmKkYyRjhgeFdGYWN7RkA4fEwlaGQ4emg+
ZTZpUDEtLTgoeiVrV3xsdj18QkkKekt1QjhXZEpDdDRiOEpAKHdUcmxIKzhBPnVRLSNMZk47NitH
fERAPFVtTWs/RkshWUhWe2p4fllzRT1rQkE+MV96CnorQj9SJG5HSS0yellRQlBMQz4/VnZTTE89
ajJrfTBHRCUtaldzSkoyTmZiTDRobnRncUl5LX5HaHI/JC0+akc+MQp6KjBRX31MbVc3Y3dteTd3
P1IlQE1tOEZtdiQ7bmhzRyF6WDJlSXg1dm1xSDN3ST5YUXRLUVh7USU8VEkxcVdXQlQKekYoaiRr
Q087UHYpPU44UShkYn4teURVWiVlPUNAfGs7ZV5CK29tbStsZWM7QVdUIT9KJk4oNGBCfnY2Nz02
RVBBCnpWaXchbW9hQiV4eTNkTnJpVmsjTXlNK0piSCkwbkY+Y097fmo0WSp7Tn5YbDJwdjBsYWpR
XmQzKzdMVjA8NmRtNwp6Oz9yfGM4dXxsPGdWfTI9JCZwZkhRKGlkNTI3Xj91SmtgJD9jYFhjSk5B
aGIoKXY+WklZdUIjeilBOV5nUzM3PkYKeiRMXzxGT2MtVTRwVUxTO1B4NjshaGM7VUV3YFk2bnZA
dmZBcCt9K01rWmhPMlRidXpBYXM2Y1RVQ1hgZVhNIXhjCnp6MExHb1ZQU0tOOXF3JE4/MHNSNFN8
XzdyVDgqenRFdDRMfjJDPSVlXm0/fmhnR3dkSG8zZ0BvWWxaU1ZZfVl1aAp6IX1ydmxgbnQ5QmJ0
NmVqXm0qdnNyNyFTSyZsS2ZDQjVTbldORU10bDFCR1lHbWs/JkArfUN6UUB3KTJLeHNOPE0Kem81
TFBYaWtFSzBaNWohTUB9JihTZFV1NkNyY35GelNZd3ZGMXdGRjs1cl9kUWwtUDEwT3Redz5OfFNN
MDE0UGVhCnpoQFFuYENqUVB6OWlFfSthJVZCfGgtJGMqSTFARH1VQ25YaXY3eVVoP0Z1Z215VDtm
fD9HQHxTQWUoJmU9N1FgIQp6fERlalNKSmNIQDglXypYbTkjQFdLVTZxRGQoKEx1eXlqNiNVPFow
VDMySlpsKEokZ0hISCVmb01aUzs2bEJ9JEkKenVWZlhZeSM8Y2lGMENfMGRibj9FQCg/SE9xZilR
dUBxPFUxPnsraztwUUAmNlR6RkRLR3tScDliJnwkemVXfjFvCnoyYjhHUkF4QXoxb0VAWFckJUBY
KiVGPkgoX3FXUFJ3UVR+cmI1JGNLOG1raV4+fkB5fEorLW9CLSYjZE8laz8ldwp6ZWokakZJeEt1
SWpQKFFxeiVLKVNJOGN9PntKJTZweyskRFVgNmg7X3hzPTMhdWwoUUhoQVZgYntITWFIZT0zfioK
enJeMT40N0FuN0tkMlo0OUU1eHlscmo1K2wtSEdiJnd1SndvYCMraVNLWGVscnFYRGJ2V0ExI0Jg
bShMMkV6fV4qCnojVmRkTnN5b059UDcrSnpzST10Q2Q/d2RMTUJuOXIoYT0qa3txMHhrUXRBOD85
Z2ZFNjMzLUtadzhjRzd2KXk/NQp6LV57ajlJVWghN3QwbWxeaWhpYDJrejNHRUFHc0kwTGhlQ0NY
KklxaCMjUStjaXxabylPLVU9MG5XKU9WKWNrRi0KeiMyU0tTMnsofCNOMVpqKEpOTmZndGstZFF2
bCRjYUUkQyk/Pk0/QjhOZEtCVkVxVC15ZmpqPWM+JTs/bWdDbFh7CnolNT0zcTt+SDU1T008dVgm
bTxhJkAzYT0jTD1FNFZEdDQ0Y2oxSXBsNnt4JSQ5YXlFK0c1a1lRPnVRaiQhRmFjbwp6P05HVXYq
cE8yPldGeHJ8KGJmWmRBYlM0cyN7RiotRnxjO0dQI3ZwcDRtVHVDU28za0AoWHpDe0tjKz08ZEZJ
d3IKemRjTH5rcyZRdEQreiM5elltLUk/JURXKXROa2g1UW88QHp7a21YWG0hUFRxTmFkQFpDb0k3
PiNDaksjfV5tMSZSCnp0Q2VGJExDQDRpIUVMRjw9NGRjTyswRW8ldEVqaT5fMWRLUlNHRF85QFB3
MyZFI0BCbDVyR3w7JD9FK2lpPm45aQp6KHFsWFUxS1NoPCs3MV5QIyZsYUgmKi0tSGxBZUUpamdW
emRLVGA4UUYjKz4xI0tFJk9CWVgwfFBJdWZAeE07JW4KenAlbjd1YX1CY2MhZC1TSkNiS0tFKFR0
Zjw/TWs8VCZMZlZ1bns4Y2dzO2FTTj5RJnVGLSRaO0xKPHZGTD1lcEg+CnotaWc8cUNyUVRnTWZH
QHJkYFpAV1MjUllxKj84IUZTQF8qTGxRJTVkRn5hNy0rYXFAYTk8WnBEUGB3IUxsd0ZMaQp6bjFH
JG4jUE1aK1VSa2l7c3EoZClJYEFrX2VSZHEtVTBianQwZ3s8Qzx5Sm17KW5fKFJyM0p1VGo7NVVw
azJ2MSgKejU/RDBMaWhvRWkodmJlakZtISg+PCYqWC0lZX0pe0ZhQSt3YmJZaDtNQ2AocG82I1pO
eDN4SGp7JDZMam40JWtBCnoxX0BkYkVNYH1pekVYQTQoTChjOSZ+RzZ4bSN5NWVxNXRPZDs9Umc4
JipDTTYqU1pEZUdJen52WldXKm9TXlBwZQp6dmZPUEFWTE9tN3ZtWkJGbyg2YF5wV01+e3R6dnRa
UWczfWJMJmNVcigtOVRlWEdrV1hVRjV0ZmJIaG1IPC07TmYKeml9RDlYeGlDdiFYa1VhMiRpcGMt
JW0zM3g1KjNnOFkyU34jK1Qzaz9CNFA8NTFOSj91VUFEJHxBfGFvUkBlKVlTCnpTNEoqWG5xMHoj
JmBINTc5bUJQWWlvIykoKkc2WiRVRlo4TEAqMWRFX3d4PncmJEdfMmJ5an5Hent9KVM2eHlBTgp6
TEl5dTtqTk87UE4yPXdVZlFTNFVrI0IyNlBUMThmI2NwWVZTOGg9cXpadCk3M24xWX0zYUgtdkRO
c1VoI3d8U0wKekZ2Yz9SSmkhRztnYXx1cj5Fc1M/O01aNXYkNGA1fTRhbWkoNFo2YiowJnNWdVZf
citIZVYwJkJ4SVIxUmhjKlV6CnoxLXE8VkB3NzkjSEY1cnhBQE12MUlgWiV6YzskQSVXNzZAcyZO
RlhwWUxyek04YDNReCNueGNCPDR+Y2lpLTVaRwp6RWw7T1ZtLXA/cHB5czFvZVRuRnNjaSZoUShe
Q2QxWDF1KFNXY1E/ekVhRkxpZ3lxVEowfVA8V0tlflQlQl5lZDgKelF1eXsqQDxVNiVgclZyXzE0
JipHKVN9MFQ3YWpiTHc8eXJYaiR0KU1FLSFXOXshUHlfWGIzejYyJV5+VlcpSG9HCnpKVWRQOElw
VnJOPEx+OXwyZlVlRkR+RT9FZFYyJmgmV3t2R2tWQj9WeHg+bVVgWlB1eGNqRlNaNyQ1N1JxPXN3
Vwp6di1MRSY4anhBX2IkXihmKi19bitfWk08TkMkRzc+NGdDTkhuUT5eRzdBVnVHaURNO0tjZClw
JkVSQHtifEIlT08KeitES2FQOGdlcE0/aj08ZztIQ2FoUUF4JUdSTn1MdkxlTTF0TkA2dllEem9C
JWB0cFNYcnoxWTtzI1EyPHNeJkJhCnpCM2xzLSVeYDMpa3VqVTIyUzFmcXZ6eUc+bmlNeWQoPX5m
Qi05YHZ2ZylhN0kyZX12V1FkKChANm1AV142ZlVZNQp6STtTKClgQE5ZJVJNbWBvKnR3cjt1Mmo8
VEByZkB+dVd4c2d8R3BPNW02V35XTFZkY1Z7OCZCcSlCOCtLVGxRd1cKejdeek1TUDt2X0BVSUt4
MVhJQUQ2X0o3RXY3SSRGRnlTWnp8dztoQityeUpxZik+NElMV3ZWYCNFZjd0MHQtNUx7CnpWdmRw
T297QmludFYzSXY0Rik8enJaPGJCaGVLP3xDV15IfWRfbjJ+dyRQbEpGSktMUT5gN0xIO25kNHdV
P0didwp6Yyp3R0QkVXgyTVlYVHhLQXMrKVlRQDNgVTJhcT9Eb2NoQWlMeW5IVHdSRnpYUFJXSS0o
d3k5NHFUekZ0dlN9VHMKejBjWlYpX1Bmfks+Q2I5RzZNd34zalQlaW56KDNnTU1PPWBDY0R1NmNZ
UVcyOSFnVVZ2b3U3YmZLTCkqVitaVzVaCno0KXxQSkZFd0opPlIwJGE8RG4pP0Q2dUVre0UlI3tz
fX4hd29jKGJ8d1I9bHtAa298UCE8d3pZYkJjRjJHdWt+WAp6ZTVCMD00UGk4ZykrUEtCPDxxNWlZ
ZiR3KiE7SkY1QWJKdDFBVEpsMklNK0lnZXc8NitZbmAhcT9qIXM/MW1+I1cKelNIIUFaLUZjdVBA
NEBBayFYd2AkcDtaaSFoLSU7NWdDenhNMnE9XnJDYmt7YUM0V34pbGwyPnxwUGM1KURtNGB5Cnpg
OzRebCtjY0ZXUlA+WkxHfCN1IVNYMk0wJUhNcERxfUtecz5IY3R9PiRUTGxSTyZ3ZTlsMGNZYXZO
cllGaF53Qwp6IzJCXld6d1drMFl1fk4wO3doSUxXdXsmZmM4RmdjQ1VDVyZvb2hWKlZaNDFgIX45
OVArVVRBVGd7cFBlJmgtPVgKem9jYDNTVV57ZzVvPWYxbXY3USN5Q0p8QjVyZHpvczR8ZW1YTmV0
emBwalI2ezQ/JEVmT3poe2EzJCpeMDhCSCVfCnpfYz4oUjtjZEFIbGwlKkJlTUpzSnQ/PnJKTjAo
RFF5XnglTSRUb3JMVD01alhJUzlBcjRAUmF8UGQ2emZqMFZvaAp6dSV2RUIreyMka25tdjJ7SzFf
PUlSe3IyenZ6aDAxb2dQeEd5fTw4QCZhU0NnSUJWNUohTG17UlNOXnM2TDdLNGMKemV2ZlRNWmFv
V35PSHpBI080NnZWeWA+PTUpI2JgPyY5N21TMGRHaEFtcU93ekNRcSltdDx2aHhqJGJhe3ZYcG0m
CnpodUgyM0xiPjghLUgkYTZjczRjUytsWGZmc3opWVE8ezBfPEQhcVU1Jn1YWkVjK2VnXj1qfUVF
YVMldjg7V3Z0Xwp6U2huMl5MYWRQcHI+cCphKFc1b1d3ZkhlQkM7QCFVRHAyKiFUNF8teD85P1lE
RiUhYUljX1h2aWdUOExJb0tubjUKekt8I3U4QVpNOEQ7YE91KGszOSF0U3ZGI1lNN2M4QEdoR2Mm
VEk5fWlJZ15re1prND48WTVrNklvWjJPUylfKDJGCnpaMiM4Ymg0ezt9I3IxYyFxSHlCdXhDRlZ0
Y1ghOEk+UjspK1pgWENAJntGViEycE8rI1c5ZVBCYmU7QkBiTUFHXwp6d1V+TEY3KXZPYHJLNDFv
b0g2dHM7WW8lPV5ofGNLbHtCMU9DSTdXOHZjI2FwOHxGXz43VTdCMXtwNUB5JCNOfW8KejZ6T3oo
RyYtRH1Ue0VYWHVzUTM+KUdteG1LYDgxcU5ZRS14MlpuYUFJaj5mPGhVP1ghSDdhYl8hQEIwWiEy
WENrCnowdFYmbF4yWlpwWEc1K35jdWF8dnsrbjdRaVdnVFAmUXh9TyFFTmhHbFQodkdsNmwjZ3Ij
Yz5he3BRT28xMiRyVQp6ZGshcHdfMG1EUmJhYysleENqSmRlMUQ1JkZDJXEzMzdQVjNjPXs8enBN
M34jOGAkVWhzXzMzZWpPQGMmTnA4ViQKeko0KDltPnxLYkZzT1QmaEJsYmpMQipYbEh3dHxBdmA/
UEVPVlBDQzYhMXAlI0Z5dU58dUN+RCVXR1g5QUE1IWFRCnp0fnEkfldqSG0jK2smYFI2RkxFVCZD
aWE7MTk5Nz1sXmRXJldYI2R+bHVSaUl5bXd6M3JmVyRxUnpmUmlpJn1TNgp6bX55TSlrZEtLNVg7
cFRTSXw5MWA2NGd9MVh+Y2MxcGtlQnxBN3w4K0VFWEoxTzUmKjJSSDVScXVIRXBQOVdQYzsKelJ+
M1VCWGVkTGwpVWU8Ul9gclFfJF5ZMWwrKGteXjdoR31LU25ePmB1a0YjQUJEVCZObHhYdDJBN1F0
d3JSZ2U0CnowckEtKWJySjdRJDZFKnw1a0NgbEVDPlY+b0crZX4zP041TWV3V2pSO0UzVFZ0YGlX
NG9WdEsxOTNGcWt2ZkIkfAp6WWBYQUdVd3ZGSz8mdHV3WXgwcyM4QU0/SyQxbUVhQ3ZXfG9tOXt0
ayUwVCtYISZeRX1DX25vJHtXS0E7aVl5cWwKej40TWt5d2lTPUI+QSR0N0U7SldiM349TiFiPXs9
JTJKdlpTM3BLRDZhVkd4RyE1U3ohMXUtWWBvUjYkOU9fK15TCnpJRTEjbkl7dzAzMUh9TUpKRyZS
d3Jvbyp+Q3JfMCpWMl54TnFLNm1EeiQpTiEpMjhEQTZ4NDRPTWEtd087NSRhTQp6dGUrLVpMc0Zh
Sl81MSk+WmowfU8zNEdyPmtZIVB5bWVHfTdvM3FrTXtuOCErYFlPPWEkMGErVTxKbiUqLXoqOCsK
ejV9eWpiJGFRMDRZJFIqYU5JY0g+JFdjbnY8UEA1JFdqLU1oc2EhOVdYRGBqRHZ1UlJ3YSRCIVdj
P1R6anV9WUJOCnpQazhWa3cod3ZiNzRfcHZmblpBXlJSKUdFWHo7JiQ0MFZwU2B8USk0KkgrJX1f
UzFJbW1DQCkxOSoyXncyU1ohfgpZMitvZmpCZ0wwZnA5U3F2MyYkczgwTDxMSzBBcXlabD5oKCQK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9leGlmLW9yaWVudGF0aW9uLXRlc3Qt
OC05MC1jdy5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTgtOTAtY3cuanBnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5NGM4NmZmNGUyMzZlOGU3N2ZkODQ4YzQ2OWQ4YTU0ZjE5YWJiMjgKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDQ5MDAKemNtYSk4Y1FqbUdfcjZMSnlfWD0kPSkmbEkpRnt6SDVPdHlwcVE7MFdO
SEVHbzUyN2FvQXYmVzM1ayFrI3FsKz9uCnozRE1qOUNod2N+YGAmTUAteWVDX3pIOUEhcFhjMVk/
Pl5gM2JJfXYlMXdkTkc9ZG0zQytgOStkMV5Ac0x6YD4jYgp6YTQ7U2cjc3sjdGZCVjx+ZktCPF4k
SEs0fXByP1VRMFBEfHp7YUBoeDJmdjQ3Vl97KWYlPUk3UVBhWDZ1ZkQ0ZUoKemNLe01hVFF9PVJm
YkN+WVlGT3ljMDY4OEkzPFRvPDxOeXtxN0IpRStgVT88KWA2ejUwT3ZxcDl7fCRWQzgrZTQqCnp1
SCN+IVZTQGpRMFBxUVo1alN3ajBOQDZPMWdfIVd7d2ZPd1NsQnFZN3pVM1ZwTXNKS0xgQD9eJWdV
ejZ1SXJBOAp6Z299LVpnTnhEckV5Vl5mY2h8MHktPUZ+RFFCbiE5RCZrWXE+UlBjMC0tKU1qaG9Q
cWNCRnFjMSRnIy0qZDchKkQKeldAYjlXS35ofEx0OFJkMFpubGhXaH11NDkhaTg8bnhOR0J3dns9
Wl44T0JeYXU/T3BMTTFUelpVRztpKFh5UUhnCnpzfnxfIzJYYXNFc3RpP2BGfTApODRhWXNDP0F2
WCNwYn5EeHpKdmx5K0tQRnhObGBPPSNBNFheM2c+aFVLIy1oegp6PlVXRWdmX3J7JDxwO0ZIPWBJ
Mn4xMXN9e0RaVkFrIVhRSk57YFN8ZS02IWg1Pj40PnRicUthdk4/Xkhtd1YkN0kKelRFe2tudGdK
dXkyaS00U1JXRFgkejF9KVM8NCFlRFdUNUE/Km1PWFZjNiE/cjRiKC1YS3leV19yaH1DaWQ4JnpR
CnpHVz9ybldgP25iVUlmdypCTnkjazg3KEduXylrbSlgUkNhOUhTNDc4dz5pMSYtQkA/fWB9Y00/
bjM5dkNIKUJSKAp6KV9WK0htX0F3aXRSckNfJnZVVDE/SU8rKnBUcyUmaHBqPUpgfE9LYnlZVFJv
R0NCb2kreX5NT0AyUUspJGxaPXgKekg+RW18YkRscE1jTFJHTGRDZ1JJbntofTsmUT9jT1JHQnQo
VTQjUylUKzdWKklFZyZzWn1KP3A4UzlLMUFxQjBYCno+UDglbl4ybkphe2M2OXVObX1TWU5wdVFt
Y0o1Q3ZJPzljdTY/NGU/QVVMI0tkV296cGA9fSsjVmRSSmlSWmYqUQp6IVVvdDBTcVl+cE9DNzdo
ZF8lbElMMTYyKStiI0tvaDRoUSE/dj5USjZXQHMqZXJFUnt1YUBRckp4ekEoTUpxaHgKektSe31y
QDVjd0xFU0tpX3dDNDVkXm0qUzY9ZGV8YnA1QFQtYTlmTlJeKEd6O2VZYE91YX5aRyZ6MnZXMklT
VlczCno4Mk4xUVJxSX5WNFVySERscV9FVHVfY1ZzQC1haVdgO0lHUHtUVkVVKWhEYWFDYiFWKUIr
d141RzkzKmxxWENgNgp6Z1BmOyFjUSk3WF40MShiSylLX3t2MW4oMS1tMzk7OC0mcGo4K01vYVhB
UkFAek9TQj1PJiF7YiYkTT5SUnVNcjEKemo/MThsXzEkcUQ5JlJsTUpfdS14SX0lQG4qLU47QHph
RyFnSDEpJWB4Q3NzSXcjMTY7PDRGZG82ZzBydnprNm44Cno8a09Famo4PFlSfEwmZ214QFdpdSlf
JCt9VG1CSXFMJChfVkQhSGpKMUtaX1c1a2lSNlF3a0AhS0wzRlJ6QmhWegp6bCExPilqKFY3QyRF
OWtlbVpwbGVVRlY7bGF4OUoyTk9Oe31YfWRoSG4yO2hZTCt5K0M2UXJqeHRSdUg7KURzV1AKem9A
Q3VvU0w0Vlh0KXdSKkJyUVJlSFZ4TSVtNitGZVRyKSk3aUdFajBxe0JzbkVmbEF3N004eGhGclUw
WFEqJilZCnp1SD53MilEYCprKyRoIzArPGVmKEIlPXZoVj9FJU1qJSE0Y2d+SnZve243X3ZoJGBl
MFgoM3ZFKmc0MHhvbWlJYAp6OEg2NkpJRjlre0RHODVGI1lPRStuTWwhOEpRTDVoPk09b3lpWCZ5
S2o0UXtoWmF8c0smQVEtRTV6bCR0cCZHPWEKel43SmI5UXwrNFljTjk0dVp6cDYqMlpvJDJIJX1U
P09HdFFtaUQlUm5kSFlEYm1NJlVpek9OTHA5NUlSYnNEJDt9CnpNcmt4Til1cVA/RFdaVl9NaH4m
TkdyelcmNV9vc19geHJfdzNzQUB7WUxtXmFsPTs8e01zMWRyP2ljbl5jWXwtNQp6RDw7cXQyNTk4
NiNSKH5taDJrZ2F1TnE4cmNya2BLKjkmcmVAcztOdHZRelNQTjJ6K3NYRDV2X3lRdTMxPCRgVj0K
ektjNEQqbjhOSHN6KzB9TitqWkBHQGFHSUl2KngtKWkyVWd6bDZuR0tjY2F6eldnQmk3Yi1yWlkl
ayZyY1krTnxsCnpaYlNHWWh9ej52QyFNe1lMfiN7VmwtXz1QWnJYeEhnfUM2WGg0ZyN1O3FMN2te
YDhFR0NqWGQ4Tjh8bTZFO09Kawp6bCMlOGlrOV9GO19LfD83Py1nUk8pTUtLencxR0lnQTwwKmhI
USolcl9FWmh6dV9wPGJmWTE2Y3NjZkBCS0VFJTgKejZ1RiNEYEo1JH1Kdm9yTkk2fXklVGZjJmVR
bT1xJnl4NmMtUkNselJ0UXtvZ2l7aXAyX1hATihQaj5KaT5qd04yCnp1Qyk0UUt1NVUhVGdxRX1p
flkrbzRaZTJ6SmJVTTtJWklEfGZraVpzMFFwMy1xYU9xTjIkbk9fdVdaYGFpOTdDMwp6eXh9cVFi
YWJwSXZRUzVPJl9aQUw9WCROPXZBbTBqekl+M2hATilPMT5JM3pDWlNJemBnfF56S0k9WFc7YklG
XzIKemNyJFklRyVPWTcpeTZXKHRkWE82eGNUaUN0NGMoYkdkR0tDYCszUnFMQFdgRD9YbkpPazB4
dFFnYmpIV3leSV4yCnpSUXZtTnhZZitRWXxaKGJPQF94YF9gc0dAY0QlZTc0RE1ARHRsfEI0RF5m
KVZAU1gwZWpyI2liKjIpWWdXXjhRTgp6VF91TTw3R05JcTxHMEQ9KXVDNTs7U2k2KjJHTHA8Z0lL
bld2dFJtfEpVKi1mPVZ5eDJhU2ZldVkzYGplS3dYP0IKejJGdilXbSs2P0s/Q3xfMj1XOFFvdTlq
VldOJDYlSFEle1V0SG1scjUxa0pOTntBI3dITTNrNS1ecy0oPEpEMFlXCno9X2BsPSYlMiNAQnwh
Sm48YSRWS3ZFOFlIend9PjhGZlZAMzM9Ji1xbHp7MENBSXlhI3N6IzQ0RGIzdWZQWUZZSQp6RlFI
MH47bDM2LXtPKzhgPkRubTxuISNXMXh6X21LTX02RShiamY8fiFje3U9JTtMI0xYSFVuWGAkUlVa
Rlh8Q0UKekBwdWF3SE0oTjQ9R31AU3RiM18mOFFRQTdxazFfKj5Yell0I1ZrO3woe3lLNkl7Mlg2
PVVGbnJQMURgVEhtQm9xCnokKVl7VEJSTSVgJWRUS2V2MiVxWk9QKENFbn51Uyl0ME1PPkQtMW5V
ejhobWdxXnZEOUFiey1JcShve2pvaDZtZgp6Jj1mUSQpOW1hJlBsYmR2YUp+OWo9U15KJFRWc3cy
JnJVfTZ5bnk5I0lfMSRqMldgY1okJiFxRk8zdzxtK0tDJVkKenRWfCYybEc4clBGKE9VX2ooOTY5
eSFsaWBJaXZKVDYqfTRiZT02Kk05ZT9LbFJ5eHRhYElJNGckeUFfdklDQ0B5CnpidzFhJWBrNlNe
LWh4Qn15ajZ+R3ZoSD5MRnBrKCM1PX5PMFNHUS0pc3YzWnBDNERkfUoyOCZwTyUrXnVYeGRaaQp6
M0tpUWdFPkk4ZDMoYW9JOGtJbXZaeUJ5PzliYDhvIT5KTkg9VCMxQVJMaFJvYShRSC1DSj1GbG0k
QDQxJWlKQXoKemNIQEppWFh1c289QThMXlJvYzkxMTxyTExYO202NCowYTQmZFQqWE9lfDBBKyp3
R00qa0hedkVpaU40dCtLRFZRCnpBUUNSaTFPb2A4fDgpcjM/Y1Zhdz8yTU5FS3NlKHU1bzBxe0NV
d3lPQ0NDVzM9PyordzYmS21eSTJ6VD5UTjRocQp6R0RMV0RYQ1FnO2MlV2FWNFRYJDdBRz5wbGp9
N3wwOW9kazVGdTJicy1AUG42KEhOLTRoUj9VZTdvaG5ET1ZvcGAKeiY4RzVoYmVfWHlzIyh+fitY
TXcjVDI5YmVBQHNLUmkkUHBGc3t0YUg4RyM7JXVpTEc/MHF+VmNeNz83Vy1qbkA7Cnp6OEtucDBJ
di1MOEJJeyU9e1VTaTZQdUo0PD1JJVdJZUExMDx8N2UqIVNDbU98OHw8cHJjJkh9JWEjITgpMGFh
MAp6Y2JIeGUrbWhtfnJRfUAyOT8tcndrO35yQHZFU0wyKHJDZlQocjU5IzlzJF5wdFo3JnRIK3tv
OW16e2krdFFmSGoKelhUPjk0ZFlHa1ktVGRsM1JrNWZOQVRKKio9eTgxOTg2JEhrQkk0MjNFUHp0
XihQUGxVIWtZNTdzS2h4M1EhJGdmCnpRQ15KQXY2b1E3JEA8PitXSmlyaGhsbVhjQENXTXwxRFE+
aTJLb250OHJfZmVNUj1Wem11Mlk9JGxuZ1UrbFdUaQp6RU8welYzRCoxOTVmIyhEXmd4KUVJeEVm
ZS1vWjMtWXVhO2JkI3w4Xmckc3kwJHQtUFFsa35XQj9IaVB6VG00PFcKenZ+bHlkaVZ6aSQ2MGIt
RFN2Uz8mVyVlalZlNn1GQUlwUjReI0A1c0h1NTV2V3QyPyQ4R0taaDt3biRuKVRHdT13Cnpeamxv
OTZURytOeWF3em1MJFpwUiN4MyRVYnhOdSM4dj04fCpJQjhMIUloJjlZY0FqZnklI3p7PD1mKzQx
YVY3Swp6Yz82T3Q+ezlmJURgWUo3KUlNezd5bDtnckZKZ21GTUtGK25GWkc+NCl+OWFfR2xwPjBY
MF9HMEt3PUN0Tz0wRSgKel5EKX5JZyhERCg3Q2xsc3EqYHcxQmMjbGB4ayk7ODVGSkIzdHZxX1Rx
QWFHYDZmNiteSyU1QWZyd1hxbjllY1loCnpFIXI9WlVjK1l+PmdgcTFgPTtseDtVMkNPd1NnZnE1
KT1aaD0pMXFIPChyJWc/YGwjbVF4PjlZSlhUenZqY31gUgp6QitgRCFWPl5Jdj1vU0pydHc8az1Q
KXVVT2RGYitAeU96QSs+ZFI1V1dPaj9oTztYPSRXWWI0dmk5JGglRjdPJnMKejIkUUBKWE09WDx7
P3VtXiZWOztNN2VgQnlFSjwqT2pDWVo5anBManoqemhMbiFyZ0JjLU5POW1rZGZiQ2JBNGwyCnpq
K3h0RXJYcndaVV49TkI5RCM/aVg3b3I+emJBX01VXi1JPlFHX3p5PG4xfipPQUI+ejEmaXRCTnpV
YT5DJlg9Swp6RVZ8UDdjQXJaYy1MfFV2YzU3TiFKZ045cXZ6X1BhdXFAYEp7e0IoSHYyTlImUj9o
aExiWGVJdmFGdjlVbzRpTW8KelUyMEtedHcqRF4wSWt6ZUImOEg9KlB0fWhGWWhZdFVgQDJ4dW49
Q0E1dEYmR29scWdXQjtuTDwoLUBPKE9uLU5+CnotRChrd2B5cGVuKTxrVHx2LT53IUR4QCV9Vl5O
ZDlIP0JHMXsqfTVpdUhKIXxMQ0d0JVUjU05wKDQkakIyMXQhcAp6ZX1DNVJHWmB9a1ZebUdWMjJQ
SkN1dnU2IWg5M0p2LVN7OHN6V3JOZzJjcF9RMUFrUSRsVTAyb3Amc3Z0enJ0YioKenBhPWd7SVB8
QiY7WGY2UXtDfm5gbWpLJTBkPWRPRyFFZyZQM1RscSF5U0NBSWByJHR0N3hNNH5sNVQ4SFVnYFhS
CnpseGJKPDRkflpPT1k9OF9Aa0hvd2drSjhMTH1nbX1FR0FlVkpOR001WClWelMpK1kpdkxgV3Bx
MSpPZnRVcEx8dgp6dTheX248bHxldUdEfmxoTkk1c1pFRVFrTHFEKHwoVClYU0UtNTJCe0N6RkNO
SmE4cF9tOThRN09oV0I0JiFRenwKejhMb1dqSGJlXmoyK2xSeFZFUyUpayshVl4tQG84MShYN0k9
V2xZUVgpTy1FeilgYX58bHNTWSpvKDBDdDh+TGA8CnoxfTFLcjd2ITFHelhKJmxZYkhJRzVJQT82
ZXBZIVo2djNPVnB3ZyNpOGdGTHVZeD5FXmdaXzdNezQrXlN5O31+JAp6cjY4bk97djZ5PFM1NVFs
PnVJTHNGITZ5Zzd9amspZHt+QUgmI0Mtdih9ZTZKKmAqUUhpbFhoTiRFfU1KTVZfd2YKel9JJU9L
VkQ8UUBHNzlBPDxIc3ZzQX13Q3BIaTZad1BxeH5Aa3lhdHVoWEglT3NSYmQ3PmA0KnVQVTVNPiYh
fmt7CnpldE1udTZCQDMtenw+NE1wYjJ1fVBfP2VueThnOUR2PSY7WjZ5Mz98SFNoSlktbVNgdj8p
XkJpYz1EJkFEdUsqXwp6cGs+eDhgMzwjYUZjO0h+clYqazc/S1A1SSMwPGFUeDEyUEJrUDBRbzA2
QlYxJm1XXnNMJWx7M0VMUnJ6Z2FlKzQKel5rQ3g4TFY9KUJ2RzwoR1lmeW9KT35sdE4pVjVAR2Y/
IzdQaWxKRntfZHRIbjh4MXR4MGoydVVXQWkpUzhJOVdMCnpgbmBxelhLVmFackFrdVNkZUBvYFd2
LWpoPzgzYSp7N3UrV258Tmxabl9Qblh5MlhOfkhpdjU5V3FpVkxxUUYyZAp6NTVwRDFyQ1l+QVBv
Vzh6ZmtWfXc2blZgTXs+Nm1BPVViVmEoM1VBeWFeSCQkaUBCfjhlJURLT0xjdmk8IyhZYzMKenZ6
WW00Tk9meCRyOXtQU2swa2tpPWpSaXZwRktYODVVK1pWclF7JWVVbypDWWpZNTNTUEhQM048U1Mm
QDM8REpaCnpifTkkZ0hweU14eD1rP25kaUsoPVl8dzdBQGZGTGdfKyhKTlVyZVZ0RG1eVypmcUtI
VS1eUlh1XihVPCtuLUI5eAp6bys1QG0+bjJ8fFpsQ1I9T35EMlUrPG5NfWJZNTRXP1RAPGhpS088
RTd8Sk4yRSNfJWp4VlFjNGRHalVUMTZDcEwKekZTcmohIXdSWCM7e0l3UXdDTWs3M0lFaW1EZFc4
U2J6U0hvQjdRbkZPeG1zVjBxTilqYHtmT0ZfQnV7Z293UV9JCnpfMlV6Ym0jPjBlRmlvJWIyPDNq
NDl0cjk3PG1gfHhqbU5EQHN1eCZIbW9mLWhHYDZHQGFfdHc3S3N+YFRQSG0tJgp6a3tiOUNgSGRr
WnJuaGUwQ2NuZWJFRkJxb25TJXlBby10cWV4U0ZBWDJHfjZFO0c5OTRrWHd2SFVyZmBCXzEmQkEK
elYlcUltK31vZCFsMXA3S3AkWWhfaE4xcWZkUjt2fkZBS0l9ZDFha0ZqWWN7amh8MD56I2piSz5n
VzxfckR2QFFTCnoySCpCeEUhNlYjaU0/SlpCNCNrRFVeaSZeIWN8UXtEamN1SzZgPDB4YDNnMiNW
akt7dkhQcUY1d2JaTVpEcF5hXgpoazZNTT4zaz5jWnFVdDxqemoqTV4xUzhWb2tnT2pvZjRBNGt7
e3hCIyV5YSslCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZmxvYXRVbmlmb3Jt
U2hhZGVyLnZlcnQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5OTFiNDc0
MTY0ZjNjZTk3Y2RmZGQwMjU5YmI3NmEwNjY0ZWU3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9mbG9hdFVu
aWZvcm1TaGFkZXIudmVydApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiBBUyBJUyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK3VuaWZvcm0gZmxvYXQgZnZhbDsK
K3VuaWZvcm0gdmVjMiBmdmFsMjsKK3VuaWZvcm0gdmVjMyBmdmFsMzsKK3VuaWZvcm0gdmVjNCBm
dmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBmbG9hdCBzdW0gPSBmdmFsCisgICAgICAgICAg
ICArIGZ2YWwyWzBdICsgZnZhbDJbMV0KKyAgICAgICAgICAgICsgZnZhbDNbMF0gKyBmdmFsM1sx
XSArIGZ2YWwzWzJdCisgICAgICAgICAgICArIGZ2YWw0WzBdICsgZnZhbDRbMV0gKyBmdmFsNFsy
XSArIGZ2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAxLjAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL2ZyYWdtZW50U2hhZGVyLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wODU5NmVkNWRiMTIyMDZkMWM4MTQ2YzA1NmIyMjgzYmRlY2I3Y2Q4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvcmVzb3VyY2VzL2ZyYWdtZW50U2hhZGVyLmZyYWcKQEAgLTAsMCArMSwzMiBAQAorLyoKK0Nv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gQVMgSVMgQU5EIEFOWQorRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCitDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKK0VYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1BS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisvLyBXb3JrYXJvdW5kIGZvciBub24tY29tcGxpYW50IFdlYkdMIGltcGxlbWVudGF0aW9ucyAo
RklYTUUpCit2YXJ5aW5nIG1lZGl1bXAgdmVjMyB2X25vcm1hbDsKKwordm9pZCBtYWluKCkKK3sK
KyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfbm9ybWFsLzIuMCt2ZWMzKDAuNSksIDEpOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
cmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jODA2M2Q5MmIyYTU5MWRmMzc5NDA5NDRjZTAzZjM5ZmVlZjhkYzUzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MKQEAgLTAsMCArMSwyOSBAQAorY2Fu
dmFzIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCgwLCByZ2JhKDIwMCwgMjAwLCAyMDAsIC41KSA1MCUsIHRyYW5zcGFyZW50
IDUwJSksIGxpbmVhci1ncmFkaWVudChyZ2JhKDIwMCwgMjAwLCAyMDAsIC41KSA1MCUsIHRyYW5z
cGFyZW50IDUwJSk7CisgIGJhY2tncm91bmQtc2l6ZTogOHB4IDhweDsKK30KKworLnNoYWRlci1z
b3VyY2UgeworICBib3JkZXI6IDFweCBkYXNoZWQgYmxhY2s7CisgIHBhZGRpbmc6IDFlbTsKK30K
KworLnNoYWRlci1zb3VyY2UgbGk6bnRoLWNoaWxkKG9kZCkgeyBiYWNrZ3JvdW5kOiAjZjhmOGY4
OyB9Cisuc2hhZGVyLXNvdXJjZSBsaTpudGgtY2hpbGQoZXZlbikgeyBiYWNrZ3JvdW5kOiAjZjBm
MGYwOyB9CisKKy50ZXN0aW1hZ2VzIHsKK30KKworLnRlc3RpbWFnZXMgYnIgeworICBjbGVhcjog
Ym90aDsKK30KKworLnRlc3RpbWFnZXMgPiBkaXYgeworICBmbG9hdDogbGVmdDsKKyAgbWFyZ2lu
OiAxZW07Cit9CisKK0lNRyB7CisgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3Vy
Y2VzL2dsc2wtZ2VuZXJhdG9yLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dsc2wtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYjY1
YmNiNGI4NzAxNWNiMTE0YjlmYjI2OTMyMGM3ZWE1ODVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ2xz
bC1nZW5lcmF0b3IuanMKQEAgLTAsMCArMSwxMjM0IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElD
RU5TRS50eHQgZmlsZS4KKyovCitHTFNMR2VuZXJhdG9yID0gKGZ1bmN0aW9uKCkgeworCit2YXIg
dmVydGV4U2hhZGVyVGVtcGxhdGUgPSBbCisgICJhdHRyaWJ1dGUgdmVjNCBhUG9zaXRpb247IiwK
KyAgIiIsCisgICJ2YXJ5aW5nIHZlYzQgdkNvbG9yOyIsCisgICIiLAorICAiJChleHRyYSkiLAor
ICAiJChlbXUpIiwKKyAgIiIsCisgICJ2b2lkIG1haW4oKSIsCisgICJ7IiwKKyAgIiAgIGdsX1Bv
c2l0aW9uID0gYVBvc2l0aW9uOyIsCisgICIgICB2ZWMyIHRleGNvb3JkID0gdmVjMihhUG9zaXRp
b24ueHkgKiAwLjUgKyB2ZWMyKDAuNSwgMC41KSk7IiwKKyAgIiAgIHZlYzQgY29sb3IgPSB2ZWM0
KCIsCisgICIgICAgICAgdGV4Y29vcmQsIiwKKyAgIiAgICAgICB0ZXhjb29yZC54ICogdGV4Y29v
cmQueSwiLAorICAiICAgICAgICgxLjAgLSB0ZXhjb29yZC54KSAqIHRleGNvb3JkLnkgKiAwLjUg
KyAwLjUpOyIsCisgICIgICAkKHRlc3QpIiwKKyAgIn0iCitdLmpvaW4oIlxuIik7CisKK3ZhciBm
cmFnbWVudFNoYWRlclRlbXBsYXRlID0gWworICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IiwK
KyAgIiIsCisgICJ2YXJ5aW5nIHZlYzQgdkNvbG9yOyIsCisgICIiLAorICAiJChleHRyYSkiLAor
ICAiJChlbXUpIiwKKyAgIiIsCisgICJ2b2lkIG1haW4oKSIsCisgICJ7IiwKKyAgIiAgICQodGVz
dCkiLAorICAifSIKK10uam9pbigiXG4iKTsKKwordmFyIGJhc2VWZXJ0ZXhTaGFkZXIgPSBbCisg
ICJhdHRyaWJ1dGUgdmVjNCBhUG9zaXRpb247IiwKKyAgIiIsCisgICJ2YXJ5aW5nIHZlYzQgdkNv
bG9yOyIsCisgICIiLAorICAidm9pZCBtYWluKCkiLAorICAieyIsCisgICIgICBnbF9Qb3NpdGlv
biA9IGFQb3NpdGlvbjsiLAorICAiICAgdmVjMiB0ZXhjb29yZCA9IHZlYzIoYVBvc2l0aW9uLnh5
ICogMC41ICsgdmVjMigwLjUsIDAuNSkpOyIsCisgICIgICB2Q29sb3IgPSB2ZWM0KCIsCisgICIg
ICAgICAgdGV4Y29vcmQsIiwKKyAgIiAgICAgICB0ZXhjb29yZC54ICogdGV4Y29vcmQueSwiLAor
ICAiICAgICAgICgxLjAgLSB0ZXhjb29yZC54KSAqIHRleGNvb3JkLnkgKiAwLjUgKyAwLjUpOyIs
CisgICJ9IgorXS5qb2luKCJcbiIpOworCit2YXIgYmFzZVZlcnRleFNoYWRlcldpdGhDb2xvciA9
IFsKKyAgImF0dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsiLAorICAiYXR0cmlidXRlIHZlYzQgYUNv
bG9yOyIsCisgICIiLAorICAidmFyeWluZyB2ZWM0IHZDb2xvcjsiLAorICAiIiwKKyAgInZvaWQg
bWFpbigpIiwKKyAgInsiLAorICAiICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247IiwKKyAgIiAg
IHZDb2xvciA9IGFDb2xvcjsiLAorICAifSIKK10uam9pbigiXG4iKTsKKwordmFyIGJhc2VGcmFn
bWVudFNoYWRlciA9IFsKKyAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIsCisgICJ2YXJ5aW5n
IHZlYzQgdkNvbG9yOyIsCisgICIiLAorICAidm9pZCBtYWluKCkiLAorICAieyIsCisgICIgICBn
bF9GcmFnQ29sb3IgPSB2Q29sb3I7IiwKKyAgIn0iCitdLmpvaW4oIlxuIik7CisKK3ZhciB0eXBl
cyA9IFsKKyAgeyB0eXBlOiAiZmxvYXQiLAorICAgIGNvZGU6IFsKKyAgICAgICJmbG9hdCAkKGZ1
bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAgICIgIHJldHVybiAkKGZ1bmMpX2Jhc2UoJChiYXNl
QXJncykpOyIsCisgICAgICAifSJdLmpvaW4oIlxuIikKKyAgfSwKKyAgeyB0eXBlOiAidmVjMiIs
CisgICAgY29kZTogWworICAgICAgInZlYzIgJChmdW5jKV9lbXUoJChhcmdzKSkgeyIsCisgICAg
ICAiICByZXR1cm4gdmVjMigiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdz
WCkpLCIsCisgICAgICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NZKSkpOyIsCisgICAg
ICAifSJdLmpvaW4oIlxuIikKKyAgfSwKKyAgeyB0eXBlOiAidmVjMyIsCisgICAgY29kZTogWwor
ICAgICAgInZlYzMgJChmdW5jKV9lbXUoJChhcmdzKSkgeyIsCisgICAgICAiICByZXR1cm4gdmVj
MygiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWCkpLCIsCisgICAgICAi
ICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NZKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMp
X2Jhc2UoJChiYXNlQXJnc1opKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4iKQorICB9LAorICB7
IHR5cGU6ICJ2ZWM0IiwKKyAgICBjb2RlOiBbCisgICAgICAidmVjNCAkKGZ1bmMpX2VtdSgkKGFy
Z3MpKSB7IiwKKyAgICAgICIgIHJldHVybiB2ZWM0KCIsCisgICAgICAiICAgICAgJChmdW5jKV9i
YXNlKCQoYmFzZUFyZ3NYKSksIiwKKyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJn
c1kpKSwiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWikpLCIsCisgICAg
ICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NXKSkpOyIsCisgICAgICAifSJdLmpvaW4o
IlxuIikKKyAgfQorXTsKKwordmFyIGJ2ZWNUeXBlcyA9IFsKKyAgeyB0eXBlOiAiYnZlYzIiLAor
ICAgIGNvZGU6IFsKKyAgICAgICJidmVjMiAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAg
ICIgIHJldHVybiBidmVjMigiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdz
WCkpLCIsCisgICAgICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NZKSkpOyIsCisgICAg
ICAifSJdLmpvaW4oIlxuIikKKyAgfSwKKyAgeyB0eXBlOiAiYnZlYzMiLAorICAgIGNvZGU6IFsK
KyAgICAgICJidmVjMyAkKGZ1bmMpX2VtdSgkKGFyZ3MpKSB7IiwKKyAgICAgICIgIHJldHVybiBi
dmVjMygiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJhc2VBcmdzWCkpLCIsCisgICAg
ICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NZKSksIiwKKyAgICAgICIgICAgICAkKGZ1
bmMpX2Jhc2UoJChiYXNlQXJnc1opKSk7IiwKKyAgICAgICJ9Il0uam9pbigiXG4iKQorICB9LAor
ICB7IHR5cGU6ICJidmVjNCIsCisgICAgY29kZTogWworICAgICAgInZlYzQgJChmdW5jKV9lbXUo
JChhcmdzKSkgeyIsCisgICAgICAiICByZXR1cm4gYnZlYzQoIiwKKyAgICAgICIgICAgICAkKGZ1
bmMpX2Jhc2UoJChiYXNlQXJnc1gpKSwiLAorICAgICAgIiAgICAgICQoZnVuYylfYmFzZSgkKGJh
c2VBcmdzWSkpLCIsCisgICAgICAiICAgICAgJChmdW5jKV9iYXNlKCQoYmFzZUFyZ3NaKSksIiwK
KyAgICAgICIgICAgICAkKGZ1bmMpX2Jhc2UoJChiYXNlQXJnc1cpKSk7IiwKKyAgICAgICJ9Il0u
am9pbigiXG4iKQorICB9CitdOworCit2YXIgcmVwbGFjZVJFID0gL1wkXCgoXHcrKVwpL2c7CisK
K3ZhciByZXBsYWNlUGFyYW1zID0gZnVuY3Rpb24oc3RyKSB7CisgIHZhciBhcmdzID0gYXJndW1l
bnRzOworICByZXR1cm4gc3RyLnJlcGxhY2UocmVwbGFjZVJFLCBmdW5jdGlvbihzdHIsIHAxLCBv
ZmZzZXQsIHMpIHsKKyAgICBmb3IgKHZhciBpaSA9IDE7IGlpIDwgYXJncy5sZW5ndGg7ICsraWkp
IHsKKyAgICAgIGlmIChhcmdzW2lpXVtwMV0gIT09IHVuZGVmaW5lZCkgeworICAgICAgICByZXR1
cm4gYXJnc1tpaV1bcDFdOworICAgICAgfQorICAgIH0KKyAgICB0aHJvdyAidW5rbm93biBzdHJp
bmcgcGFyYW0gJyIgKyBwMSArICInIjsKKyAgfSk7Cit9OworCit2YXIgZ2VuZXJhdGVSZWZlcmVu
Y2VTaGFkZXIgPSBmdW5jdGlvbigKKyAgICBzaGFkZXJJbmZvLCB0ZW1wbGF0ZSwgcGFyYW1zLCB0
eXBlSW5mbywgdGVzdCkgeworICB2YXIgaW5wdXQgPSBzaGFkZXJJbmZvLmlucHV0OworICB2YXIg
b3V0cHV0ID0gc2hhZGVySW5mby5vdXRwdXQ7CisgIHZhciBmZWF0dXJlID0gcGFyYW1zLmZlYXR1
cmU7CisgIHZhciB0ZXN0RnVuYyA9IHBhcmFtcy50ZXN0RnVuYzsKKyAgdmFyIGVtdUZ1bmMgPSBw
YXJhbXMuZW11RnVuYyB8fCAiIjsKKyAgdmFyIGV4dHJhID0gcGFyYW1zLmV4dHJhIHx8ICcnOwor
ICB2YXIgYXJncyA9IHBhcmFtcy5hcmdzIHx8ICIkKHR5cGUpIHZhbHVlIjsKKyAgdmFyIHR5cGUg
PSB0eXBlSW5mby50eXBlOworICB2YXIgdHlwZUNvZGUgPSB0eXBlSW5mby5jb2RlOworCisgIHZh
ciBiYXNlQXJncyA9IHBhcmFtcy5iYXNlQXJncyB8fCAidmFsdWUkKGZpZWxkKSI7CisgIHZhciBi
YXNlQXJnc1ggPSByZXBsYWNlUGFyYW1zKGJhc2VBcmdzLCB7ZmllbGQ6ICIueCJ9KTsKKyAgdmFy
IGJhc2VBcmdzWSA9IHJlcGxhY2VQYXJhbXMoYmFzZUFyZ3MsIHtmaWVsZDogIi55In0pOworICB2
YXIgYmFzZUFyZ3NaID0gcmVwbGFjZVBhcmFtcyhiYXNlQXJncywge2ZpZWxkOiAiLnoifSk7Cisg
IHZhciBiYXNlQXJnc1cgPSByZXBsYWNlUGFyYW1zKGJhc2VBcmdzLCB7ZmllbGQ6ICIudyJ9KTsK
KyAgdmFyIGJhc2VBcmdzID0gcmVwbGFjZVBhcmFtcyhiYXNlQXJncywge2ZpZWxkOiAiIn0pOwor
CisgIHRlc3QgPSByZXBsYWNlUGFyYW1zKHRlc3QsIHsKKyAgICBpbnB1dDogaW5wdXQsCisgICAg
b3V0cHV0OiBvdXRwdXQsCisgICAgZnVuYzogZmVhdHVyZSArICJfZW11IgorICB9KTsKKyAgZW11
RnVuYyA9IHJlcGxhY2VQYXJhbXMoZW11RnVuYywgeworICAgIGZ1bmM6IGZlYXR1cmUKKyAgfSk7
CisgIGFyZ3MgPSByZXBsYWNlUGFyYW1zKGFyZ3MsIHsKKyAgICB0eXBlOiB0eXBlCisgIH0pOwor
ICB0eXBlQ29kZSA9IHJlcGxhY2VQYXJhbXModHlwZUNvZGUsIHsKKyAgICBmdW5jOiBmZWF0dXJl
LAorICAgIHR5cGU6IHR5cGUsCisgICAgYXJnczogYXJncywKKyAgICBiYXNlQXJnczogYmFzZUFy
Z3MsCisgICAgYmFzZUFyZ3NYOiBiYXNlQXJnc1gsCisgICAgYmFzZUFyZ3NZOiBiYXNlQXJnc1ks
CisgICAgYmFzZUFyZ3NaOiBiYXNlQXJnc1osCisgICAgYmFzZUFyZ3NXOiBiYXNlQXJnc1cKKyAg
fSk7CisgIHZhciBzaGFkZXIgPSByZXBsYWNlUGFyYW1zKHRlbXBsYXRlLCB7CisgICAgZXh0cmE6
IGV4dHJhLAorICAgIGVtdTogZW11RnVuYyArICJcblxuIiArIHR5cGVDb2RlLAorICAgIHRlc3Q6
IHRlc3QKKyAgfSk7CisgIHJldHVybiBzaGFkZXI7Cit9OworCit2YXIgZ2VuZXJhdGVUZXN0U2hh
ZGVyID0gZnVuY3Rpb24oCisgICAgc2hhZGVySW5mbywgdGVtcGxhdGUsIHBhcmFtcywgdGVzdCkg
eworICB2YXIgaW5wdXQgPSBzaGFkZXJJbmZvLmlucHV0OworICB2YXIgb3V0cHV0ID0gc2hhZGVy
SW5mby5vdXRwdXQ7CisgIHZhciBmZWF0dXJlID0gcGFyYW1zLmZlYXR1cmU7CisgIHZhciB0ZXN0
RnVuYyA9IHBhcmFtcy50ZXN0RnVuYzsKKyAgdmFyIGV4dHJhID0gcGFyYW1zLmV4dHJhIHx8ICcn
OworCisgIHRlc3QgPSByZXBsYWNlUGFyYW1zKHRlc3QsIHsKKyAgICBpbnB1dDogaW5wdXQsCisg
ICAgb3V0cHV0OiBvdXRwdXQsCisgICAgZnVuYzogZmVhdHVyZQorICB9KTsKKyAgdmFyIHNoYWRl
ciA9IHJlcGxhY2VQYXJhbXModGVtcGxhdGUsIHsKKyAgICBleHRyYTogZXh0cmEsCisgICAgZW11
OiAnJywKKyAgICB0ZXN0OiB0ZXN0CisgIH0pOworICByZXR1cm4gc2hhZGVyOworfTsKKworZnVu
Y3Rpb24gX3JlcG9ydFJlc3VsdHMocmVmRGF0YSwgcmVmSW1nLCB0ZXN0RGF0YSwgdGVzdEltZywg
dG9sZXJhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgY3R4LCBp
bWdEYXRhLCB3dHUsIGNhbnZhczJkLCBjb25zb2xlRGl2KSB7CisgIHZhciBzYW1lID0gdHJ1ZTsK
KyAgdmFyIGZpcnN0RmFpbHVyZSA9IG51bGw7CisgIGZvciAodmFyIHl5ID0gMDsgeXkgPCBoZWln
aHQ7ICsreXkpIHsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgd2lkdGg7ICsreHgpIHsKKyAg
ICAgIHZhciBvZmZzZXQgPSAoeXkgKiB3aWR0aCArIHh4KSAqIDQ7CisgICAgICB2YXIgaW1nT2Zm
c2V0ID0gKChoZWlnaHQgLSB5eSAtIDEpICogd2lkdGggKyB4eCkgKiA0OworICAgICAgaW1nRGF0
YS5kYXRhW2ltZ09mZnNldCArIDBdID0gMDsKKyAgICAgIGltZ0RhdGEuZGF0YVtpbWdPZmZzZXQg
KyAxXSA9IDA7CisgICAgICBpbWdEYXRhLmRhdGFbaW1nT2Zmc2V0ICsgMl0gPSAwOworICAgICAg
aW1nRGF0YS5kYXRhW2ltZ09mZnNldCArIDNdID0gMjU1OworICAgICAgaWYgKE1hdGguYWJzKHJl
ZkRhdGFbb2Zmc2V0ICsgMF0gLSB0ZXN0RGF0YVtvZmZzZXQgKyAwXSkgPiB0b2xlcmFuY2UgfHwK
KyAgICAgICAgICBNYXRoLmFicyhyZWZEYXRhW29mZnNldCArIDFdIC0gdGVzdERhdGFbb2Zmc2V0
ICsgMV0pID4gdG9sZXJhbmNlIHx8CisgICAgICAgICAgTWF0aC5hYnMocmVmRGF0YVtvZmZzZXQg
KyAyXSAtIHRlc3REYXRhW29mZnNldCArIDJdKSA+IHRvbGVyYW5jZSB8fAorICAgICAgICAgIE1h
dGguYWJzKHJlZkRhdGFbb2Zmc2V0ICsgM10gLSB0ZXN0RGF0YVtvZmZzZXQgKyAzXSkgPiB0b2xl
cmFuY2UpIHsKKyAgICAgICAgdmFyIGRldGFpbCA9ICdhdCAoJyArIHh4ICsgJywnICsgeXkgKyAn
KTogcmVmPSgnICsKKyAgICAgICAgICAgIHJlZkRhdGFbb2Zmc2V0ICsgMF0gKyAnLCcgKworICAg
ICAgICAgICAgcmVmRGF0YVtvZmZzZXQgKyAxXSArICcsJyArCisgICAgICAgICAgICByZWZEYXRh
W29mZnNldCArIDJdICsgJywnICsKKyAgICAgICAgICAgIHJlZkRhdGFbb2Zmc2V0ICsgM10gKyAn
KSAgdGVzdD0oJyArCisgICAgICAgICAgICB0ZXN0RGF0YVtvZmZzZXQgKyAwXSArICcsJyArCisg
ICAgICAgICAgICB0ZXN0RGF0YVtvZmZzZXQgKyAxXSArICcsJyArCisgICAgICAgICAgICB0ZXN0
RGF0YVtvZmZzZXQgKyAyXSArICcsJyArCisgICAgICAgICAgICB0ZXN0RGF0YVtvZmZzZXQgKyAz
XSArICcpIHRvbGVyYW5jZT0nICsgdG9sZXJhbmNlOworICAgICAgICBjb25zb2xlRGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRldGFpbCkpOworICAgICAgICBjb25zb2xl
RGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworICAgICAgICBp
ZiAoIWZpcnN0RmFpbHVyZSkgeworICAgICAgICAgIGZpcnN0RmFpbHVyZSA9ICI6ICIgKyBkZXRh
aWw7CisgICAgICAgIH0KKyAgICAgICAgaW1nRGF0YS5kYXRhW2ltZ09mZnNldF0gPSAyNTU7Cisg
ICAgICAgIHNhbWUgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB2YXIgZGlmZklt
ZyA9IG51bGw7CisgIGlmICghc2FtZSkgeworICAgIGN0eC5wdXRJbWFnZURhdGEoaW1nRGF0YSwg
MCwgMCk7CisgICAgZGlmZkltZyA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGNhbnZhczJkKTsK
KyAgfQorCisgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgZGl2
LmNsYXNzTmFtZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgd3R1Lmluc2VydEltYWdlKGRpdiwgInJlZiIs
IHJlZkltZyk7CisgIHd0dS5pbnNlcnRJbWFnZShkaXYsICJ0ZXN0IiwgdGVzdEltZyk7CisgIGlm
IChkaWZmSW1nKSB7CisgICAgd3R1Lmluc2VydEltYWdlKGRpdiwgImRpZmYiLCBkaWZmSW1nKTsK
KyAgfQorICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisK
KyAgY29uc29sZURpdi5hcHBlbmRDaGlsZChkaXYpOworCisgIGlmICghc2FtZSkgeworICAgIHRl
c3RGYWlsZWQoImltYWdlcyBhcmUgZGlmZmVyZW50IiArIChmaXJzdEZhaWx1cmUgPyBmaXJzdEZh
aWx1cmUgOiAiIikpOworICB9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImltYWdlcyBhcmUgdGhl
IHNhbWUiKTsKKyAgfQorCisgIGNvbnNvbGVEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaHInKSk7Cit9CisKK3ZhciBydW5GZWF0dXJlVGVzdCA9IGZ1bmN0aW9uKHBhcmFt
cykgeworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgIHZhciBncmlkUmVzID0gcGFyYW1z
LmdyaWRSZXM7CisgIHZhciB2ZXJ0ZXhUb2xlcmFuY2UgPSBwYXJhbXMudG9sZXJhbmNlIHx8IDA7
CisgIHZhciBmcmFnbWVudFRvbGVyYW5jZSA9IHBhcmFtcy50b2xlcmFuY2UgfHwgMTsKKyAgaWYg
KCdmcmFnbWVudFRvbGVyYW5jZScgaW4gcGFyYW1zKQorICAgIGZyYWdtZW50VG9sZXJhbmNlID0g
cGFyYW1zLmZyYWdtZW50VG9sZXJhbmNlOworCisgIGRlc2NyaXB0aW9uKCJUZXN0aW5nIEdMU0wg
ZmVhdHVyZTogIiArIHBhcmFtcy5mZWF0dXJlKTsKKworICB2YXIgd2lkdGggPSAzMjsKKyAgdmFy
IGhlaWdodCA9IDMyOworCisgIHZhciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKTsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpOworICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgY2FudmFzLmhlaWdodCA9IGhlaWdo
dDsKKyAgdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgcHJlbXVsdGlwbGll
ZEFscGhhOiBmYWxzZSB9KTsKKyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoImNvbnRleHQg
ZG9lcyBub3QgZXhpc3QiKTsKKyAgICBmaW5pc2hUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisK
KyAgdmFyIGNhbnZhczJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgIGNh
bnZhczJkLndpZHRoID0gd2lkdGg7CisgIGNhbnZhczJkLmhlaWdodCA9IGhlaWdodDsKKyAgdmFy
IGN0eCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CisgIHZhciBpbWdEYXRhID0gY3R4Lmdl
dEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICB2YXIgc2hhZGVySW5mb3MgPSBb
CisgICAgeyB0eXBlOiAidmVydGV4IiwKKyAgICAgIGlucHV0OiAiY29sb3IiLAorICAgICAgb3V0
cHV0OiAidkNvbG9yIiwKKyAgICAgIHZlcnRleFNoYWRlclRlbXBsYXRlOiB2ZXJ0ZXhTaGFkZXJU
ZW1wbGF0ZSwKKyAgICAgIGZyYWdtZW50U2hhZGVyVGVtcGxhdGU6IGJhc2VGcmFnbWVudFNoYWRl
ciwKKyAgICAgIHRvbGVyYW5jZTogdmVydGV4VG9sZXJhbmNlCisgICAgfSwKKyAgICB7IHR5cGU6
ICJmcmFnbWVudCIsCisgICAgICBpbnB1dDogInZDb2xvciIsCisgICAgICBvdXRwdXQ6ICJnbF9G
cmFnQ29sb3IiLAorICAgICAgdmVydGV4U2hhZGVyVGVtcGxhdGU6IGJhc2VWZXJ0ZXhTaGFkZXIs
CisgICAgICBmcmFnbWVudFNoYWRlclRlbXBsYXRlOiBmcmFnbWVudFNoYWRlclRlbXBsYXRlLAor
ICAgICAgdG9sZXJhbmNlOiBmcmFnbWVudFRvbGVyYW5jZQorICAgIH0KKyAgXTsKKyAgZm9yICh2
YXIgc3MgPSAwOyBzcyA8IHNoYWRlckluZm9zLmxlbmd0aDsgKytzcykgeworICAgIHZhciBzaGFk
ZXJJbmZvID0gc2hhZGVySW5mb3Nbc3NdOworICAgIHZhciB0ZXN0cyA9IHBhcmFtcy50ZXN0czsK
KyAgICB2YXIgdGVzdFR5cGVzID0gcGFyYW1zLmVtdUZ1bmNzIHx8IChwYXJhbXMuYnZlY1Rlc3Qg
PyBidmVjVHlwZXMgOiB0eXBlcyk7CisgICAgLy8gVGVzdCB2ZXJ0ZXggc2hhZGVycworICAgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIHZhciB0eXBl
ID0gdGVzdFR5cGVzW2lpXTsKKyAgICAgIGlmIChwYXJhbXMuc2ltcGxlRW11KSB7CisgICAgICAg
IHR5cGUgPSB7CisgICAgICAgICAgdHlwZTogdHlwZS50eXBlLAorICAgICAgICAgIGNvZGU6IHBh
cmFtcy5zaW1wbGVFbXUKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgIHZhciBzdHIgPSByZXBsYWNlUGFyYW1zKHBhcmFtcy50ZXN0RnVuYywgeworICAgICAgICBm
dW5jOiBwYXJhbXMuZmVhdHVyZSwKKyAgICAgICAgdHlwZTogdHlwZS50eXBlLAorICAgICAgICBh
cmcwOiB0eXBlLnR5cGUKKyAgICAgIH0pOworICAgICAgdmFyIHBhc3NNc2cgPSAiVGVzdGluZzog
IiArIHN0ciArICIgaW4gIiArIHNoYWRlckluZm8udHlwZSArICIgc2hhZGVyIjsKKyAgICAgIGRl
YnVnKHBhc3NNc2cpOworCisgICAgICB2YXIgcmVmZXJlbmNlVmVydGV4U2hhZGVyU291cmNlID0g
Z2VuZXJhdGVSZWZlcmVuY2VTaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAgICAg
ICBzaGFkZXJJbmZvLnZlcnRleFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywKKyAg
ICAgICAgICB0eXBlLAorICAgICAgICAgIHRlc3RzW2lpXSk7CisgICAgICB2YXIgcmVmZXJlbmNl
RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBnZW5lcmF0ZVJlZmVyZW5jZVNoYWRlcigKKyAgICAgICAg
ICBzaGFkZXJJbmZvLAorICAgICAgICAgIHNoYWRlckluZm8uZnJhZ21lbnRTaGFkZXJUZW1wbGF0
ZSwKKyAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgdHlwZSwKKyAgICAgICAgICB0ZXN0c1tp
aV0pOworICAgICAgdmFyIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBnZW5lcmF0ZVRlc3RTaGFk
ZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAgICAgICBzaGFkZXJJbmZvLnZlcnRleFNo
YWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICB0ZXN0c1tpaV0pOwor
ICAgICAgdmFyIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IGdlbmVyYXRlVGVzdFNoYWRlcigK
KyAgICAgICAgICBzaGFkZXJJbmZvLAorICAgICAgICAgIHNoYWRlckluZm8uZnJhZ21lbnRTaGFk
ZXJUZW1wbGF0ZSwKKyAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgdGVzdHNbaWldKTsKKwor
CisgICAgICBkZWJ1ZygiIik7CisgICAgICB2YXIgcmVmZXJlbmNlVmVydGV4U2hhZGVyID0gd3R1
LmxvYWRTaGFkZXIoZ2wsIHJlZmVyZW5jZVZlcnRleFNoYWRlclNvdXJjZSwgZ2wuVkVSVEVYX1NI
QURFUiwgdGVzdEZhaWxlZCwgdHJ1ZSwgJ3JlZmVyZW5jZScpOworICAgICAgdmFyIHJlZmVyZW5j
ZUZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHJlZmVyZW5jZUZyYWdtZW50U2hh
ZGVyU291cmNlLCBnbC5GUkFHTUVOVF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUsICdyZWZlcmVu
Y2UnKTsKKyAgICAgIHZhciB0ZXN0VmVydGV4U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRl
c3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIGdsLlZFUlRFWF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUs
ICd0ZXN0Jyk7CisgICAgICB2YXIgdGVzdEZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIo
Z2wsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSwgZ2wuRlJBR01FTlRfU0hBREVSLCB0ZXN0RmFp
bGVkLCB0cnVlLCAndGVzdCcpOworICAgICAgZGVidWcoIiIpOworCisgICAgICBpZiAocGFyc2VJ
bnQod3R1LmdldFVybE9wdGlvbnMoKS5kdW1wU2hhZGVycykpIHsKKyAgICAgICAgdmFyIHZSZWZJ
bmZvID0geworICAgICAgICAgIHNoYWRlcjogcmVmZXJlbmNlVmVydGV4U2hhZGVyLAorICAgICAg
ICAgIHNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJyZWZlcmVuY2UgdmVy
dGV4IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiByZWZlcmVuY2VWZXJ0ZXhTaGFkZXJTb3Vy
Y2UKKyAgICAgICAgfTsKKyAgICAgICAgdmFyIGZSZWZJbmZvID0geworICAgICAgICAgIHNoYWRl
cjogcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1
ZSwKKyAgICAgICAgICBsYWJlbDogInJlZmVyZW5jZSBmcmFnbWVudCBzaGFkZXIiLAorICAgICAg
ICAgIHNvdXJjZTogcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXJTb3VyY2UKKyAgICAgICAgfTsKKyAg
ICAgICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhnbCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBw
YXNzTXNnLCB2UmVmSW5mbywgZlJlZkluZm8pOworCisgICAgICAgIHZhciB2VGVzdEluZm8gPSB7
CisgICAgICAgICAgc2hhZGVyOiB0ZXN0VmVydGV4U2hhZGVyLAorICAgICAgICAgIHNoYWRlclN1
Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJ0ZXN0IHZlcnRleCBzaGFkZXIiLAorICAg
ICAgICAgIHNvdXJjZTogdGVzdFZlcnRleFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAg
ICB2YXIgZlRlc3RJbmZvID0geworICAgICAgICAgIHNoYWRlcjogdGVzdEZyYWdtZW50U2hhZGVy
LAorICAgICAgICAgIHNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJ0ZXN0
IGZyYWdtZW50IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiB0ZXN0RnJhZ21lbnRTaGFkZXJT
b3VyY2UKKyAgICAgICAgfTsKKyAgICAgICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhnbCwgd2luZG93
LmxvY2F0aW9uLnBhdGhuYW1lLCBwYXNzTXNnLCB2VGVzdEluZm8sIGZUZXN0SW5mbyk7CisgICAg
ICB9CisKKyAgICAgIHZhciByZWZEYXRhID0gZHJhdygKKyAgICAgICAgICByZWZlcmVuY2VWZXJ0
ZXhTaGFkZXIsIHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyKTsKKyAgICAgIHZhciByZWZJbWcgPSB3
dHUubWFrZUltYWdlRnJvbUNhbnZhcyhjYW52YXMpOworICAgICAgaWYgKHNzID09IDApIHsKKyAg
ICAgICAgdmFyIHRlc3REYXRhID0gZHJhdygKKyAgICAgICAgICAgIHRlc3RWZXJ0ZXhTaGFkZXIs
IHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciB0
ZXN0RGF0YSA9IGRyYXcoCisgICAgICAgICAgICByZWZlcmVuY2VWZXJ0ZXhTaGFkZXIsIHRlc3RG
cmFnbWVudFNoYWRlcik7CisgICAgICB9CisgICAgICB2YXIgdGVzdEltZyA9IHd0dS5tYWtlSW1h
Z2VGcm9tQ2FudmFzKGNhbnZhcyk7CisKKyAgICAgIF9yZXBvcnRSZXN1bHRzKHJlZkRhdGEsIHJl
ZkltZywgdGVzdERhdGEsIHRlc3RJbWcsIHNoYWRlckluZm8udG9sZXJhbmNlLAorICAgICAgICAg
ICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgY3R4LCBpbWdEYXRhLCB3dHUsIGNhbnZhczJkLCBj
b25zb2xlRGl2KTsKKyAgICB9CisgIH0KKworICBmaW5pc2hUZXN0KCk7CisKKyAgZnVuY3Rpb24g
ZHJhdyh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSB7CisgICAgdmFyIHByb2dyYW0gPSB3
dHUuY3JlYXRlUHJvZ3JhbShnbCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgdGVzdEZh
aWxlZCk7CisKKyAgICB2YXIgcG9zTG9jID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwg
ImFQb3NpdGlvbiIpOworICAgIHd0dS5zZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlkUmVzLCBwb3NM
b2MpOworCisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3
SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMsIFswLCAwLCAyNTUsIDI1NV0pOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisg
ICAgdmFyIGltZyA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wu
cmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LCBpbWcpOworICAgIHJldHVybiBpbWc7CisgIH0KKworfTsKKwordmFyIHJ1bkJhc2ljVGVzdCA9
IGZ1bmN0aW9uKHBhcmFtcykgeworICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgIHZhciBn
cmlkUmVzID0gcGFyYW1zLmdyaWRSZXM7CisgIHZhciB2ZXJ0ZXhUb2xlcmFuY2UgPSBwYXJhbXMu
dG9sZXJhbmNlIHx8IDA7CisgIHZhciBmcmFnbWVudFRvbGVyYW5jZSA9IHZlcnRleFRvbGVyYW5j
ZTsKKyAgaWYgKCdmcmFnbWVudFRvbGVyYW5jZScgaW4gcGFyYW1zKQorICAgIGZyYWdtZW50VG9s
ZXJhbmNlID0gcGFyYW1zLmZyYWdtZW50VG9sZXJhbmNlIHx8IDA7CisKKyAgZGVzY3JpcHRpb24o
IlRlc3RpbmcgOiAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRpdGxlIilbMF0u
aW5uZXJUZXh0KTsKKworICB2YXIgd2lkdGggPSAzMjsKKyAgdmFyIGhlaWdodCA9IDMyOworCisg
IHZhciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52YXMu
d2lkdGggPSB3aWR0aDsKKyAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgdmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICBpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgi
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47
CisgIH0KKworICB2YXIgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKKyAgY2FudmFzMmQud2lkdGggPSB3aWR0aDsKKyAgY2FudmFzMmQuaGVpZ2h0ID0gaGVpZ2h0
OworICB2YXIgY3R4ID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgdmFyIGltZ0RhdGEg
PSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisgIHZhciBzaGFkZXJJ
bmZvcyA9IFsKKyAgICB7IHR5cGU6ICJ2ZXJ0ZXgiLAorICAgICAgaW5wdXQ6ICJjb2xvciIsCisg
ICAgICBvdXRwdXQ6ICJ2Q29sb3IiLAorICAgICAgdmVydGV4U2hhZGVyVGVtcGxhdGU6IHZlcnRl
eFNoYWRlclRlbXBsYXRlLAorICAgICAgZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZTogYmFzZUZyYWdt
ZW50U2hhZGVyLAorICAgICAgdG9sZXJhbmNlOiB2ZXJ0ZXhUb2xlcmFuY2UKKyAgICB9LAorICAg
IHsgdHlwZTogImZyYWdtZW50IiwKKyAgICAgIGlucHV0OiAidkNvbG9yIiwKKyAgICAgIG91dHB1
dDogImdsX0ZyYWdDb2xvciIsCisgICAgICB2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZTogYmFzZVZlcnRl
eFNoYWRlciwKKyAgICAgIGZyYWdtZW50U2hhZGVyVGVtcGxhdGU6IGZyYWdtZW50U2hhZGVyVGVt
cGxhdGUsCisgICAgICB0b2xlcmFuY2U6IGZyYWdtZW50VG9sZXJhbmNlCisgICAgfQorICBdOwor
ICBmb3IgKHZhciBzcyA9IDA7IHNzIDwgc2hhZGVySW5mb3MubGVuZ3RoOyArK3NzKSB7CisgICAg
dmFyIHNoYWRlckluZm8gPSBzaGFkZXJJbmZvc1tzc107CisgICAgdmFyIHRlc3RzID0gcGFyYW1z
LnRlc3RzOworLy8gICAgdmFyIHRlc3RUeXBlcyA9IHBhcmFtcy5lbXVGdW5jcyB8fCAocGFyYW1z
LmJ2ZWNUZXN0ID8gYnZlY1R5cGVzIDogdHlwZXMpOworICAgIC8vIFRlc3QgdmVydGV4IHNoYWRl
cnMKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3RoOyArK2lpKSB7CisgICAg
ICB2YXIgdGVzdCA9IHRlc3RzW2lpXTsKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHZhciBwYXNz
TXNnID0gIlRlc3Rpbmc6ICIgKyB0ZXN0Lm5hbWUgKyAiIGluICIgKyBzaGFkZXJJbmZvLnR5cGUg
KyAiIHNoYWRlciI7CisgICAgICBkZWJ1ZyhwYXNzTXNnKTsKKworICAgICAgZnVuY3Rpb24gZ2Vu
U2hhZGVyKHNoYWRlckluZm8sIHRlbXBsYXRlLCBzaGFkZXIsIHN1YnMpIHsKKyAgICAgICAgc2hh
ZGVyID0gcmVwbGFjZVBhcmFtcyhzaGFkZXIsIHN1YnMsIHsKKyAgICAgICAgICAgIGlucHV0OiBz
aGFkZXJJbmZvLmlucHV0LAorICAgICAgICAgICAgb3V0cHV0OiBzaGFkZXJJbmZvLm91dHB1dAor
ICAgICAgICAgIH0pOworICAgICAgICBzaGFkZXIgPSByZXBsYWNlUGFyYW1zKHRlbXBsYXRlLCBz
dWJzLCB7CisgICAgICAgICAgICB0ZXN0OiBzaGFkZXIsCisgICAgICAgICAgICBlbXU6ICIiLAor
ICAgICAgICAgICAgZXh0cmE6ICIiCisgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzaGFk
ZXI7CisgICAgICB9CisKKyAgICAgIHZhciByZWZlcmVuY2VWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBn
ZW5TaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAgICAgICBzaGFkZXJJbmZvLnZl
cnRleFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHRlc3QucmVmZXJlbmNlLnNoYWRlciwKKyAg
ICAgICAgICB0ZXN0LnJlZmVyZW5jZS5zdWJzKTsKKyAgICAgIHZhciByZWZlcmVuY2VGcmFnbWVu
dFNoYWRlclNvdXJjZSA9IGdlblNoYWRlcigKKyAgICAgICAgICBzaGFkZXJJbmZvLAorICAgICAg
ICAgIHNoYWRlckluZm8uZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSwKKyAgICAgICAgICB0ZXN0LnJl
ZmVyZW5jZS5zaGFkZXIsCisgICAgICAgICAgdGVzdC5yZWZlcmVuY2Uuc3Vicyk7CisgICAgICB2
YXIgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IGdlblNoYWRlcigKKyAgICAgICAgICBzaGFkZXJJ
bmZvLAorICAgICAgICAgIHNoYWRlckluZm8udmVydGV4U2hhZGVyVGVtcGxhdGUsCisgICAgICAg
ICAgdGVzdC50ZXN0LnNoYWRlciwKKyAgICAgICAgICB0ZXN0LnRlc3Quc3Vicyk7CisgICAgICB2
YXIgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlID0gZ2VuU2hhZGVyKAorICAgICAgICAgIHNoYWRl
ckluZm8sCisgICAgICAgICAgc2hhZGVySW5mby5mcmFnbWVudFNoYWRlclRlbXBsYXRlLAorICAg
ICAgICAgIHRlc3QudGVzdC5zaGFkZXIsCisgICAgICAgICAgdGVzdC50ZXN0LnN1YnMpOworCisg
ICAgICBkZWJ1ZygiIik7CisgICAgICB2YXIgcmVmZXJlbmNlVmVydGV4U2hhZGVyID0gd3R1Lmxv
YWRTaGFkZXIoZ2wsIHJlZmVyZW5jZVZlcnRleFNoYWRlclNvdXJjZSwgZ2wuVkVSVEVYX1NIQURF
UiwgdGVzdEZhaWxlZCwgdHJ1ZSwgJ3JlZmVyZW5jZScpOworICAgICAgdmFyIHJlZmVyZW5jZUZy
YWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHJlZmVyZW5jZUZyYWdtZW50U2hhZGVy
U291cmNlLCBnbC5GUkFHTUVOVF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUsICdyZWZlcmVuY2Un
KTsKKyAgICAgIHZhciB0ZXN0VmVydGV4U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRlc3RW
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGdsLlZFUlRFWF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUsICd0
ZXN0Jyk7CisgICAgICB2YXIgdGVzdEZyYWdtZW50U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2ws
IHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSwgZ2wuRlJBR01FTlRfU0hBREVSLCB0ZXN0RmFpbGVk
LCB0cnVlLCAndGVzdCcpOworICAgICAgZGVidWcoIiIpOworCisgICAgICBpZiAocGFyc2VJbnQo
d3R1LmdldFVybE9wdGlvbnMoKS5kdW1wU2hhZGVycykpIHsKKyAgICAgICAgdmFyIHZSZWZJbmZv
ID0geworICAgICAgICAgIHNoYWRlcjogcmVmZXJlbmNlVmVydGV4U2hhZGVyLAorICAgICAgICAg
IHNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJyZWZlcmVuY2UgdmVydGV4
IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiByZWZlcmVuY2VWZXJ0ZXhTaGFkZXJTb3VyY2UK
KyAgICAgICAgfTsKKyAgICAgICAgdmFyIGZSZWZJbmZvID0geworICAgICAgICAgIHNoYWRlcjog
cmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgc2hhZGVyU3VjY2VzczogdHJ1ZSwK
KyAgICAgICAgICBsYWJlbDogInJlZmVyZW5jZSBmcmFnbWVudCBzaGFkZXIiLAorICAgICAgICAg
IHNvdXJjZTogcmVmZXJlbmNlRnJhZ21lbnRTaGFkZXJTb3VyY2UKKyAgICAgICAgfTsKKyAgICAg
ICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhnbCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBwYXNz
TXNnLCB2UmVmSW5mbywgZlJlZkluZm8pOworCisgICAgICAgIHZhciB2VGVzdEluZm8gPSB7Cisg
ICAgICAgICAgc2hhZGVyOiB0ZXN0VmVydGV4U2hhZGVyLAorICAgICAgICAgIHNoYWRlclN1Y2Nl
c3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJ0ZXN0IHZlcnRleCBzaGFkZXIiLAorICAgICAg
ICAgIHNvdXJjZTogdGVzdFZlcnRleFNoYWRlclNvdXJjZQorICAgICAgICB9OworICAgICAgICB2
YXIgZlRlc3RJbmZvID0geworICAgICAgICAgIHNoYWRlcjogdGVzdEZyYWdtZW50U2hhZGVyLAor
ICAgICAgICAgIHNoYWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJ0ZXN0IGZy
YWdtZW50IHNoYWRlciIsCisgICAgICAgICAgc291cmNlOiB0ZXN0RnJhZ21lbnRTaGFkZXJTb3Vy
Y2UKKyAgICAgICAgfTsKKyAgICAgICAgd3R1LmR1bXBTaGFkZXJzSW5mbyhnbCwgd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lLCBwYXNzTXNnLCB2VGVzdEluZm8sIGZUZXN0SW5mbyk7CisgICAgICB9
CisKKyAgICAgIHZhciByZWZEYXRhID0gZHJhdyhyZWZlcmVuY2VWZXJ0ZXhTaGFkZXIsIHJlZmVy
ZW5jZUZyYWdtZW50U2hhZGVyKTsKKyAgICAgIHZhciByZWZJbWcgPSB3dHUubWFrZUltYWdlRnJv
bUNhbnZhcyhjYW52YXMpOworICAgICAgaWYgKHNzID09IDApIHsKKyAgICAgICAgdmFyIHRlc3RE
YXRhID0gZHJhdyh0ZXN0VmVydGV4U2hhZGVyLCByZWZlcmVuY2VGcmFnbWVudFNoYWRlcik7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB2YXIgdGVzdERhdGEgPSBkcmF3KHJlZmVyZW5jZVZlcnRl
eFNoYWRlciwgdGVzdEZyYWdtZW50U2hhZGVyKTsKKyAgICAgIH0KKyAgICAgIHZhciB0ZXN0SW1n
ID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMoY2FudmFzKTsKKworICAgICAgX3JlcG9ydFJlc3Vs
dHMocmVmRGF0YSwgcmVmSW1nLCB0ZXN0RGF0YSwgdGVzdEltZywgc2hhZGVySW5mby50b2xlcmFu
Y2UsCisgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBjdHgsIGltZ0RhdGEsIHd0
dSwgY2FudmFzMmQsIGNvbnNvbGVEaXYpOworICAgIH0KKyAgfQorCisgIGZpbmlzaFRlc3QoKTsK
KworICBmdW5jdGlvbiBkcmF3KHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpIHsKKyAgICB2
YXIgcHJvZ3JhbSA9IHd0dS5jcmVhdGVQcm9ncmFtKGdsLCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50
U2hhZGVyLCB0ZXN0RmFpbGVkKTsKKworICAgIHZhciBwb3NMb2MgPSBnbC5nZXRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCAiYVBvc2l0aW9uIik7CisgICAgd3R1LnNldHVwSW5kZXhlZFF1YWQoZ2ws
IGdyaWRSZXMsIHBvc0xvYyk7CisKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIHd0
dS5jbGVhckFuZERyYXdJbmRleGVkUXVhZChnbCwgZ3JpZFJlcywgWzAsIDAsIDI1NSwgMjU1XSk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJubyBlcnJvcnMgZnJv
bSBkcmF3Iik7CisKKyAgICB2YXIgaW1nID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQg
KiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGds
LlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAgcmV0dXJuIGltZzsKKyAgfQorCit9OworCit2YXIg
cnVuUmVmZXJlbmNlSW1hZ2VUZXN0ID0gZnVuY3Rpb24ocGFyYW1zKSB7CisgIHZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKKyAgdmFyIGdyaWRSZXMgPSBwYXJhbXMuZ3JpZFJlczsKKyAgdmFyIHZl
cnRleFRvbGVyYW5jZSA9IHBhcmFtcy50b2xlcmFuY2UgfHwgMDsKKyAgdmFyIGZyYWdtZW50VG9s
ZXJhbmNlID0gdmVydGV4VG9sZXJhbmNlOworICBpZiAoJ2ZyYWdtZW50VG9sZXJhbmNlJyBpbiBw
YXJhbXMpCisgICAgZnJhZ21lbnRUb2xlcmFuY2UgPSBwYXJhbXMuZnJhZ21lbnRUb2xlcmFuY2Ug
fHwgMDsKKworICBkZXNjcmlwdGlvbigiVGVzdGluZyBHTFNMIGZlYXR1cmU6ICIgKyBwYXJhbXMu
ZmVhdHVyZSk7CisKKyAgdmFyIHdpZHRoID0gMzI7CisgIHZhciBoZWlnaHQgPSAzMjsKKworICB2
YXIgY29uc29sZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgIHZh
ciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgY2FudmFzLndp
ZHRoID0gd2lkdGg7CisgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CisgIHZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoY2FudmFzLCB7IGFudGlhbGlhczogZmFsc2UsIHByZW11bHRpcGxpZWRB
bHBoYTogZmFsc2UgfSk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRv
ZXMgbm90IGV4aXN0Iik7CisgICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisg
IHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52
YXMyZC53aWR0aCA9IHdpZHRoOworICBjYW52YXMyZC5oZWlnaHQgPSBoZWlnaHQ7CisgIHZhciBj
dHggPSBjYW52YXMyZC5nZXRDb250ZXh0KCIyZCIpOworICB2YXIgaW1nRGF0YSA9IGN0eC5nZXRJ
bWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisKKyAgLy8gU3RhdGUgZm9yIHJlZmVyZW5j
ZSBpbWFnZXMgZm9yIHZlcnRleCBzaGFkZXIgdGVzdHMuCisgIC8vIFRoZXNlIGFyZSBkcmF3biB3
aXRoIHRoZSBzYW1lIHRlc3NlbGxhdGVkIGdyaWQgYXMgdGhlIHRlc3QgdmVydGV4CisgIC8vIHNo
YWRlciBzbyB0aGF0IHRoZSBpbnRlcnBvbGF0aW9uIGlzIGlkZW50aWNhbC4gVGhlIGdyaWQgaXMg
cmV1c2VkCisgIC8vIGZyb20gdGVzdCB0byB0ZXN0OyB0aGUgY29sb3JzIGFyZSBjaGFuZ2VkLgor
CisgIHZhciBpbmRleGVkUXVhZEZvclJlZmVyZW5jZVZlcnRleFNoYWRlciA9CisgICAgd3R1LnNl
dHVwSW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMsIDApOworICB2YXIgcmVmZXJlbmNlVmVydGV4U2hh
ZGVyUHJvZ3JhbSA9CisgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwgWyBiYXNlVmVydGV4U2hhZGVy
V2l0aENvbG9yLCBiYXNlRnJhZ21lbnRTaGFkZXIgXSwKKyAgICAgICAgICAgICAgICAgICAgIFsi
YVBvc2l0aW9uIiwgImFDb2xvciJdKTsKKyAgdmFyIHJlZmVyZW5jZVZlcnRleFNoYWRlckNvbG9y
QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisKKyAgdmFyIHNoYWRlckluZm9zID0gWworICAg
IHsgdHlwZTogInZlcnRleCIsCisgICAgICBpbnB1dDogImNvbG9yIiwKKyAgICAgIG91dHB1dDog
InZDb2xvciIsCisgICAgICB2ZXJ0ZXhTaGFkZXJUZW1wbGF0ZTogdmVydGV4U2hhZGVyVGVtcGxh
dGUsCisgICAgICBmcmFnbWVudFNoYWRlclRlbXBsYXRlOiBiYXNlRnJhZ21lbnRTaGFkZXIsCisg
ICAgICB0b2xlcmFuY2U6IHZlcnRleFRvbGVyYW5jZQorICAgIH0sCisgICAgeyB0eXBlOiAiZnJh
Z21lbnQiLAorICAgICAgaW5wdXQ6ICJ2Q29sb3IiLAorICAgICAgb3V0cHV0OiAiZ2xfRnJhZ0Nv
bG9yIiwKKyAgICAgIHZlcnRleFNoYWRlclRlbXBsYXRlOiBiYXNlVmVydGV4U2hhZGVyLAorICAg
ICAgZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZTogZnJhZ21lbnRTaGFkZXJUZW1wbGF0ZSwKKyAgICAg
IHRvbGVyYW5jZTogZnJhZ21lbnRUb2xlcmFuY2UKKyAgICB9CisgIF07CisgIGZvciAodmFyIHNz
ID0gMDsgc3MgPCBzaGFkZXJJbmZvcy5sZW5ndGg7ICsrc3MpIHsKKyAgICB2YXIgc2hhZGVySW5m
byA9IHNoYWRlckluZm9zW3NzXTsKKyAgICB2YXIgdGVzdHMgPSBwYXJhbXMudGVzdHM7CisgICAg
dmFyIHRlc3RUeXBlcyA9IHBhcmFtcy5lbXVGdW5jcyB8fCAocGFyYW1zLmJ2ZWNUZXN0ID8gYnZl
Y1R5cGVzIDogdHlwZXMpOworICAgIC8vIFRlc3QgdmVydGV4IHNoYWRlcnMKKyAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3RoOyArK2lpKSB7CisgICAgICB2YXIgdHlwZSA9IHRl
c3RUeXBlc1tpaV07CisgICAgICB2YXIgaXNWZXJ0ZXggPSAoc3MgPT0gMCk7CisgICAgICBkZWJ1
ZygiIik7CisgICAgICB2YXIgc3RyID0gcmVwbGFjZVBhcmFtcyhwYXJhbXMudGVzdEZ1bmMsIHsK
KyAgICAgICAgZnVuYzogcGFyYW1zLmZlYXR1cmUsCisgICAgICAgIHR5cGU6IHR5cGUudHlwZSwK
KyAgICAgICAgYXJnMDogdHlwZS50eXBlCisgICAgICB9KTsKKyAgICAgIHZhciBwYXNzTXNnID0g
IlRlc3Rpbmc6ICIgKyBzdHIgKyAiIGluICIgKyBzaGFkZXJJbmZvLnR5cGUgKyAiIHNoYWRlciI7
CisgICAgICBkZWJ1ZyhwYXNzTXNnKTsKKworICAgICAgdmFyIHJlZmVyZW5jZVZlcnRleFNoYWRl
clNvdXJjZSA9IGdlbmVyYXRlUmVmZXJlbmNlU2hhZGVyKAorICAgICAgICAgIHNoYWRlckluZm8s
CisgICAgICAgICAgc2hhZGVySW5mby52ZXJ0ZXhTaGFkZXJUZW1wbGF0ZSwKKyAgICAgICAgICBw
YXJhbXMsCisgICAgICAgICAgdHlwZSwKKyAgICAgICAgICB0ZXN0c1tpaV0uc291cmNlKTsKKyAg
ICAgIHZhciByZWZlcmVuY2VGcmFnbWVudFNoYWRlclNvdXJjZSA9IGdlbmVyYXRlUmVmZXJlbmNl
U2hhZGVyKAorICAgICAgICAgIHNoYWRlckluZm8sCisgICAgICAgICAgc2hhZGVySW5mby5mcmFn
bWVudFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICB0eXBlLAor
ICAgICAgICAgIHRlc3RzW2lpXS5zb3VyY2UpOworICAgICAgdmFyIHRlc3RWZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBnZW5lcmF0ZVRlc3RTaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAgICAg
ICAgICBzaGFkZXJJbmZvLnZlcnRleFNoYWRlclRlbXBsYXRlLAorICAgICAgICAgIHBhcmFtcywK
KyAgICAgICAgICB0ZXN0c1tpaV0uc291cmNlKTsKKyAgICAgIHZhciB0ZXN0RnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBnZW5lcmF0ZVRlc3RTaGFkZXIoCisgICAgICAgICAgc2hhZGVySW5mbywKKyAg
ICAgICAgICBzaGFkZXJJbmZvLmZyYWdtZW50U2hhZGVyVGVtcGxhdGUsCisgICAgICAgICAgcGFy
YW1zLAorICAgICAgICAgIHRlc3RzW2lpXS5zb3VyY2UpOworICAgICAgdmFyIHJlZmVyZW5jZVRl
eHR1cmVPckFycmF5ID0gZ2VuZXJhdGVSZWZlcmVuY2VJbWFnZSgKKyAgICAgICAgICBnbCwKKyAg
ICAgICAgICB0ZXN0c1tpaV0uZ2VuZXJhdG9yLAorICAgICAgICAgIGlzVmVydGV4ID8gZ3JpZFJl
cyA6IHdpZHRoLAorICAgICAgICAgIGlzVmVydGV4ID8gZ3JpZFJlcyA6IGhlaWdodCwKKyAgICAg
ICAgICBpc1ZlcnRleCk7CisKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIHZhciB0ZXN0VmVydGV4
U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIGdsLlZF
UlRFWF9TSEFERVIsIHRlc3RGYWlsZWQsIHRydWUpOworICAgICAgdmFyIHRlc3RGcmFnbWVudFNo
YWRlciA9IHd0dS5sb2FkU2hhZGVyKGdsLCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UsIGdsLkZS
QUdNRU5UX1NIQURFUiwgdGVzdEZhaWxlZCwgdHJ1ZSk7CisgICAgICBkZWJ1ZygiIik7CisKKwor
ICAgICAgaWYgKHBhcnNlSW50KHd0dS5nZXRVcmxPcHRpb25zKCkuZHVtcFNoYWRlcnMpKSB7Cisg
ICAgICAgIHZhciB2UmVmSW5mbyA9IHsKKyAgICAgICAgICBzaGFkZXI6IHJlZmVyZW5jZVZlcnRl
eFNoYWRlciwKKyAgICAgICAgICBzaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgIGxhYmVs
OiAicmVmZXJlbmNlIHZlcnRleCBzaGFkZXIiLAorICAgICAgICAgIHNvdXJjZTogcmVmZXJlbmNl
VmVydGV4U2hhZGVyU291cmNlCisgICAgICAgIH07CisgICAgICAgIHZhciBmUmVmSW5mbyA9IHsK
KyAgICAgICAgICBzaGFkZXI6IHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyLAorICAgICAgICAgIHNo
YWRlclN1Y2Nlc3M6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICJyZWZlcmVuY2UgZnJhZ21lbnQg
c2hhZGVyIiwKKyAgICAgICAgICBzb3VyY2U6IHJlZmVyZW5jZUZyYWdtZW50U2hhZGVyU291cmNl
CisgICAgICAgIH07CisgICAgICAgIHd0dS5kdW1wU2hhZGVyc0luZm8oZ2wsIHdpbmRvdy5sb2Nh
dGlvbi5wYXRobmFtZSwgcGFzc01zZywgdlJlZkluZm8sIGZSZWZJbmZvKTsKKworICAgICAgICB2
YXIgdlRlc3RJbmZvID0geworICAgICAgICAgIHNoYWRlcjogdGVzdFZlcnRleFNoYWRlciwKKyAg
ICAgICAgICBzaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAidGVzdCB2ZXJ0
ZXggc2hhZGVyIiwKKyAgICAgICAgICBzb3VyY2U6IHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UKKyAg
ICAgICAgfTsKKyAgICAgICAgdmFyIGZUZXN0SW5mbyA9IHsKKyAgICAgICAgICBzaGFkZXI6IHRl
c3RGcmFnbWVudFNoYWRlciwKKyAgICAgICAgICBzaGFkZXJTdWNjZXNzOiB0cnVlLAorICAgICAg
ICAgIGxhYmVsOiAidGVzdCBmcmFnbWVudCBzaGFkZXIiLAorICAgICAgICAgIHNvdXJjZTogdGVz
dEZyYWdtZW50U2hhZGVyU291cmNlCisgICAgICAgIH07CisgICAgICAgIHd0dS5kdW1wU2hhZGVy
c0luZm8oZ2wsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgcGFzc01zZywgdlRlc3RJbmZvLCBm
VGVzdEluZm8pOworICAgICAgfQorCisgICAgICB2YXIgcmVmRGF0YTsKKyAgICAgIGlmIChpc1Zl
cnRleCkgeworICAgICAgICByZWZEYXRhID0gZHJhd1ZlcnRleFJlZmVyZW5jZUltYWdlKHJlZmVy
ZW5jZVRleHR1cmVPckFycmF5KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJlZkRhdGEgPSBk
cmF3RnJhZ21lbnRSZWZlcmVuY2VJbWFnZShyZWZlcmVuY2VUZXh0dXJlT3JBcnJheSk7CisgICAg
ICB9CisgICAgICB2YXIgcmVmSW1nID0gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMoY2FudmFzKTsK
KyAgICAgIHZhciB0ZXN0RGF0YTsKKyAgICAgIGlmIChpc1ZlcnRleCkgeworICAgICAgICB2YXIg
cmVmZXJlbmNlRnJhZ21lbnRTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgcmVmZXJlbmNlRnJh
Z21lbnRTaGFkZXJTb3VyY2UsIGdsLkZSQUdNRU5UX1NIQURFUiwgdGVzdEZhaWxlZCk7CisgICAg
ICAgIHRlc3REYXRhID0gZHJhdygKKyAgICAgICAgICB0ZXN0VmVydGV4U2hhZGVyLCByZWZlcmVu
Y2VGcmFnbWVudFNoYWRlcik7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgcmVmZXJlbmNl
VmVydGV4U2hhZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIHJlZmVyZW5jZVZlcnRleFNoYWRlclNv
dXJjZSwgZ2wuVkVSVEVYX1NIQURFUiwgdGVzdEZhaWxlZCk7CisgICAgICAgIHRlc3REYXRhID0g
ZHJhdygKKyAgICAgICAgICByZWZlcmVuY2VWZXJ0ZXhTaGFkZXIsIHRlc3RGcmFnbWVudFNoYWRl
cik7CisgICAgICB9CisgICAgICB2YXIgdGVzdEltZyA9IHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFz
KGNhbnZhcyk7CisgICAgICB2YXIgdGVzdFRvbGVyYW5jZSA9IHNoYWRlckluZm8udG9sZXJhbmNl
OworICAgICAgLy8gUHJvdmlkZSBwZXItdGVzdCB0b2xlcmFuY2Ugc28gdGhhdCB3ZSBjYW4gaW5j
cmVhc2UgaXQgb25seSBmb3IgdGhvc2UgZGVzaXJlZC4KKyAgICAgIGlmICgndG9sZXJhbmNlJyBp
biB0ZXN0c1tpaV0pCisgICAgICAgIHRlc3RUb2xlcmFuY2UgPSB0ZXN0c1tpaV0udG9sZXJhbmNl
IHx8IDA7CisgICAgICBfcmVwb3J0UmVzdWx0cyhyZWZEYXRhLCByZWZJbWcsIHRlc3REYXRhLCB0
ZXN0SW1nLCB0ZXN0VG9sZXJhbmNlLAorICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdo
dCwgY3R4LCBpbWdEYXRhLCB3dHUsIGNhbnZhczJkLCBjb25zb2xlRGl2KTsKKyAgICB9CisgIH0K
KworICBmaW5pc2hUZXN0KCk7CisKKyAgZnVuY3Rpb24gZHJhdyh2ZXJ0ZXhTaGFkZXIsIGZyYWdt
ZW50U2hhZGVyKSB7CisgICAgdmFyIHByb2dyYW0gPSB3dHUuY3JlYXRlUHJvZ3JhbShnbCwgdmVy
dGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgdGVzdEZhaWxlZCk7CisKKyAgICB2YXIgcG9zTG9j
ID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFQb3NpdGlvbiIpOworICAgIHd0dS5z
ZXR1cEluZGV4ZWRRdWFkKGdsLCBncmlkUmVzLCBwb3NMb2MpOworCisgICAgZ2wudXNlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQoZ2wsIGdyaWRSZXMs
IFswLCAwLCAyNTUsIDI1NV0pOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAibm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAgdmFyIGltZyA9IG5ldyBVaW50OEFy
cmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwg
aGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWcpOworICAgIHJldHVybiBpbWc7
CisgIH0KKworICBmdW5jdGlvbiBkcmF3VmVydGV4UmVmZXJlbmNlSW1hZ2UoY29sb3JzKSB7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGluZGV4ZWRRdWFkRm9yUmVmZXJlbmNl
VmVydGV4U2hhZGVyWzBdKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Cisg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHJlZmVyZW5jZVZlcnRleFNoYWRlckNv
bG9yQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JzLCBn
bC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCAw
KTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleGVkUXVh
ZEZvclJlZmVyZW5jZVZlcnRleFNoYWRlclsxXSk7CisgICAgZ2wudXNlUHJvZ3JhbShyZWZlcmVu
Y2VWZXJ0ZXhTaGFkZXJQcm9ncmFtKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3SW5kZXhlZFF1YWQo
Z2wsIGdyaWRSZXMpOworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBn
bC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJubyBlcnJvcnMgZnJvbSBkcmF3Iik7CisKKyAgICB2YXIgaW1nID0g
bmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAs
IDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltZyk7CisgICAg
cmV0dXJuIGltZzsKKyAgfQorCisgIGZ1bmN0aW9uIGRyYXdGcmFnbWVudFJlZmVyZW5jZUltYWdl
KHRleHR1cmUpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7
CisKKyAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwKTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICB2YXIgdGV4TG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgiKTsKKyAgICBnbC51bmlmb3JtMWkodGV4TG9jLCAwKTsK
KyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAibm8gZXJyb3JzIGZyb20gZHJhdyIpOworCisgICAgdmFyIGlt
ZyA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVs
cygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWcpOwor
ICAgIHJldHVybiBpbWc7CisgIH0KKworICAvKioKKyAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyBl
aXRoZXIgYSBVaW50OEFycmF5IChmb3IgdmVydGV4IHNoYWRlcnMpIG9yCisgICAqIFdlYkdMVGV4
dHVyZSAoZm9yIGZyYWdtZW50IHNoYWRlcnMpIGNvbnRhaW5pbmcgdGhlIHJlZmVyZW5jZQorICAg
KiBpbWFnZSBmb3IgdGhlIGZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4gRXhhY3RseSBob3cgdGhlIGZ1
bmN0aW9uIGlzCisgICAqIGV2YWx1YXRlZCwgYW5kIHRoZSBzaXplIG9mIHRoZSByZXR1cm5lZCB0
ZXh0dXJlIG9yIGFycmF5LCBkZXBlbmRzIG9uCisgICAqIHdoZXRoZXIgd2UgYXJlIHRlc3Rpbmcg
YSB2ZXJ0ZXggb3IgZnJhZ21lbnQgc2hhZGVyLiBJZiBhIGZyYWdtZW50CisgICAqIHNoYWRlciwg
dGhlIGZ1bmN0aW9uIGlzIGV2YWx1YXRlZCBhdCB0aGUgcGl4ZWwgY2VudGVycy4gSWYgYQorICAg
KiB2ZXJ0ZXggc2hhZGVyLCB0aGUgZnVuY3Rpb24gaXMgZXZhbHVhdGVkIGF0IHRoZSB0cmlhbmds
ZSdzCisgICAqIHZlcnRpY2VzLgorICAgKgorICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0Nv
bnRleHR9IGdsIFRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gdXNlIHRvIGdlbmVyYXRlIHRl
eHR1cmUgb2JqZWN0cy4KKyAgICogQHBhcmFtIHshZnVuY3Rpb24obnVtYmVyLG51bWJlcixudW1i
ZXIsbnVtYmVyKTogIUFycmF5LjxudW1iZXI+fSBnZW5lcmF0b3IgVGhlIHJlZmVyZW5jZSBpbWFn
ZSBnZW5lcmF0b3IgZnVuY3Rpb24uCisgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCBUaGUgd2lk
dGggb2YgdGhlIHRleHR1cmUgdG8gZ2VuZXJhdGUgaWYgdGVzdGluZyBhIGZyYWdtZW50IHNoYWRl
cjsgdGhlIGdyaWQgcmVzb2x1dGlvbiBpZiB0ZXN0aW5nIGEgdmVydGV4IHNoYWRlci4KKyAgICog
QHBhcmFtIHtudW1iZXJ9IGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSB0ZXh0dXJlIHRvIGdlbmVy
YXRlIGlmIHRlc3RpbmcgYSBmcmFnbWVudCBzaGFkZXI7IHRoZSBncmlkIHJlc29sdXRpb24gaWYg
dGVzdGluZyBhIHZlcnRleCBzaGFkZXIuCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWZXJ0ZXgg
VHJ1ZSBpZiBnZW5lcmF0aW5nIGEgcmVmZXJlbmNlIGltYWdlIGZvciBhIHZlcnRleCBzaGFkZXI7
IGZhbHNlIGlmIGZvciBhIGZyYWdtZW50IHNoYWRlci4KKyAgICogQHJldHVybiB7IVdlYkdMVGV4
dHVyZXwhVWludDhBcnJheX0gVGhlIHRleHR1cmUgb2JqZWN0IG9yIGFycmF5IHRoYXQgd2FzIGdl
bmVyYXRlZC4KKyAgICovCisgIGZ1bmN0aW9uIGdlbmVyYXRlUmVmZXJlbmNlSW1hZ2UoCisgICAg
Z2wsCisgICAgZ2VuZXJhdG9yLAorICAgIHdpZHRoLAorICAgIGhlaWdodCwKKyAgICBpc1ZlcnRl
eCkgeworCisgICAgLy8gTm90ZTogdGhlIG1hdGggaW4gdGhpcyBmdW5jdGlvbiBtdXN0IG1hdGNo
IHRoYXQgaW4gdGhlIHZlcnRleCBhbmQKKyAgICAvLyBmcmFnbWVudCBzaGFkZXIgdGVtcGxhdGVz
IGFib3ZlLgorICAgIGZ1bmN0aW9uIGNvbXB1dGVUZXhDb29yZCh4KSB7CisgICAgICByZXR1cm4g
eCAqIDAuNSArIDAuNTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wdXRlVmVydGV4Q29sb3Io
dGV4Q29vcmRYLCB0ZXhDb29yZFkpIHsKKyAgICAgIHJldHVybiBbIHRleENvb3JkWCwKKyAgICAg
ICAgICAgICAgIHRleENvb3JkWSwKKyAgICAgICAgICAgICAgIHRleENvb3JkWCAqIHRleENvb3Jk
WSwKKyAgICAgICAgICAgICAgICgxLjAgLSB0ZXhDb29yZFgpICogdGV4Q29vcmRZICogMC41ICsg
MC41IF07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZXMgZnJhZ21lbnQgY29sb3Ig
YWNjb3JkaW5nIHRvIHRoZSBhbGdvcml0aG0gdXNlZCBmb3IgaW50ZXJwb2xhdGlvbgorICAgICAq
IGluIE9wZW5HTCAoR0xFUyAyLjAgc3BlYyAzLjUuMSwgT3BlbkdMIDQuMyBzcGVjIDE0LjYuMSku
CisgICAgICovCisgICAgZnVuY3Rpb24gY29tcHV0ZUludGVycG9sYXRlZENvbG9yKHRleENvb3Jk
WCwgdGV4Q29vcmRZKSB7CisgICAgICAvLyBDYWxjdWxhdGUgZ3JpZCBsaW5lIGluZGV4ZXMgYmVs
b3cgYW5kIHRvIHRoZSBsZWZ0IGZyb20gdGV4Q29vcmQuCisgICAgICB2YXIgZ3JpZEJvdHRvbSA9
IE1hdGguZmxvb3IodGV4Q29vcmRZICogZ3JpZFJlcyk7CisgICAgICBpZiAoZ3JpZEJvdHRvbSA9
PSBncmlkUmVzKSB7CisgICAgICAgIC0tZ3JpZEJvdHRvbTsKKyAgICAgIH0KKyAgICAgIHZhciBn
cmlkTGVmdCA9IE1hdGguZmxvb3IodGV4Q29vcmRYICogZ3JpZFJlcyk7CisgICAgICBpZiAoZ3Jp
ZExlZnQgPT0gZ3JpZFJlcykgeworICAgICAgICAtLWdyaWRMZWZ0OworICAgICAgfQorCisgICAg
ICAvLyBDYWxjdWxhdGUgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIGdyaWQgY2VsbC4KKyAg
ICAgIHZhciBjZWxsWCA9IHRleENvb3JkWCAqIGdyaWRSZXMgLSBncmlkTGVmdDsKKyAgICAgIHZh
ciBjZWxsWSA9IHRleENvb3JkWSAqIGdyaWRSZXMgLSBncmlkQm90dG9tOworCisgICAgICAvLyBC
YXJ5Y2VudHJpYyBjb29yZGluYXRlcyBpbnNpZGUgZWl0aGVyIHRyaWFuZ2xlIEFDRCBvciBBQkMK
KyAgICAgIC8vIGFyZSB1c2VkIGFzIHdlaWdodHMgZm9yIHRoZSB2ZXJ0ZXggY29sb3JzIGluIHRo
ZSBjb3JuZXJzOgorICAgICAgLy8gQS0tQgorICAgICAgLy8gfFwgfAorICAgICAgLy8gfCBcfAor
ICAgICAgLy8gRC0tQworCisgICAgICB2YXIgYUNvbG9yID0gY29tcHV0ZVZlcnRleENvbG9yKGdy
aWRMZWZ0IC8gZ3JpZFJlcywgKGdyaWRCb3R0b20gKyAxKSAvIGdyaWRSZXMpOworICAgICAgdmFy
IGJDb2xvciA9IGNvbXB1dGVWZXJ0ZXhDb2xvcigoZ3JpZExlZnQgKyAxKSAvIGdyaWRSZXMsIChn
cmlkQm90dG9tICsgMSkgLyBncmlkUmVzKTsKKyAgICAgIHZhciBjQ29sb3IgPSBjb21wdXRlVmVy
dGV4Q29sb3IoKGdyaWRMZWZ0ICsgMSkgLyBncmlkUmVzLCBncmlkQm90dG9tIC8gZ3JpZFJlcyk7
CisgICAgICB2YXIgZENvbG9yID0gY29tcHV0ZVZlcnRleENvbG9yKGdyaWRMZWZ0IC8gZ3JpZFJl
cywgZ3JpZEJvdHRvbSAvIGdyaWRSZXMpOworCisgICAgICAvLyBDYWxjdWxhdGUgd2VpZ2h0cy4K
KyAgICAgIHZhciBhLCBiLCBjLCBkOworCisgICAgICBpZiAoY2VsbFggKyBjZWxsWSA8IDEpIHsK
KyAgICAgICAgLy8gSW4gYm90dG9tIHRyaWFuZ2xlIEFDRC4KKyAgICAgICAgYSA9IGNlbGxZOyAv
LyBhcmVhIG9mIHRyaWFuZ2xlIEMtRC0oY2VsbFgsIGNlbGxZKSByZWxhdGl2ZSB0byBBQ0QKKyAg
ICAgICAgYyA9IGNlbGxYOyAvLyBhcmVhIG9mIHRyaWFuZ2xlIEQtQS0oY2VsbFgsIGNlbGxZKSBy
ZWxhdGl2ZSB0byBBQ0QKKyAgICAgICAgZCA9IDEgLSBhIC0gYzsKKyAgICAgICAgYiA9IDA7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICAvLyBJbiB0b3AgdHJpYW5nbGUgQUJDLgorICAgICAgICBh
ID0gMSAtIGNlbGxYOyAvLyBhcmVhIG9mIHRoZSB0cmlhbmdsZSBCLUMtKGNlbGxYLCBjZWxsWSkg
cmVsYXRpdmUgdG8gQUJDCisgICAgICAgIGMgPSAxIC0gY2VsbFk7IC8vIGFyZWEgb2YgdGhlIHRy
aWFuZ2xlIEEtQi0oY2VsbFgsIGNlbGxZKSByZWxhdGl2ZSB0byBBQkMKKyAgICAgICAgYiA9IDEg
LSBhIC0gYzsKKyAgICAgICAgZCA9IDA7CisgICAgICB9CisKKyAgICAgIHZhciBpbnRlcnBvbGF0
ZWQgPSBbXTsKKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBhQ29sb3IubGVuZ3RoOyArK2lp
KSB7CisgICAgICAgIGludGVycG9sYXRlZC5wdXNoKGEgKiBhQ29sb3JbaWldICsgYiAqIGJDb2xv
cltpaV0gKyBjICogY0NvbG9yW2lpXSArIGQgKiBkQ29sb3JbaWldKTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiBpbnRlcnBvbGF0ZWQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2xhbXAodmFsdWUs
IG1pblZhbCwgbWF4VmFsKSB7CisgICAgICByZXR1cm4gTWF0aC5tYXgobWluVmFsLCBNYXRoLm1p
bih2YWx1ZSwgbWF4VmFsKSk7CisgICAgfQorCisgICAgLy8gRXZhbHVhdGVzIHRoZSBmdW5jdGlv
biBhdCBjbGlwIGNvb3JkaW5hdGVzIChweCxweSksIHN0b3JpbmcgdGhlCisgICAgLy8gcmVzdWx0
IGluIHRoZSBhcnJheSAicGl4ZWwiLiBFYWNoIGNoYW5uZWwncyByZXN1bHQgaXMgY2xhbXBlZAor
ICAgIC8vIGJldHdlZW4gMCBhbmQgMjU1LgorICAgIGZ1bmN0aW9uIGV2YWx1YXRlQXRDbGlwQ29v
cmRzKHB4LCBweSwgcGl4ZWwsIGNvbG9yRnVuYykgeworICAgICAgdmFyIHRjeCA9IGNvbXB1dGVU
ZXhDb29yZChweCk7CisgICAgICB2YXIgdGN5ID0gY29tcHV0ZVRleENvb3JkKHB5KTsKKworICAg
ICAgdmFyIGNvbG9yID0gY29sb3JGdW5jKHRjeCwgdGN5KTsKKworICAgICAgdmFyIG91dHB1dCA9
IGdlbmVyYXRvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBjb2xvclszXSk7CisKKyAg
ICAgIC8vIE11bHRpcGx5IGJ5IDI1NiB0byBnZXQgZXZlbiBkaXN0cmlidXRpb24gZm9yIGFsbCB2
YWx1ZXMgYmV0d2VlbiAwIGFuZCAxLgorICAgICAgLy8gVXNlIHJvdW5kaW5nIHJhdGhlciB0aGFu
IHRydW5jYXRpb24gdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBHUFUncyBiZWhhdmlvci4KKyAg
ICAgIHBpeGVsWzBdID0gY2xhbXAoTWF0aC5yb3VuZCgyNTYgKiBvdXRwdXRbMF0pLCAwLCAyNTUp
OworICAgICAgcGl4ZWxbMV0gPSBjbGFtcChNYXRoLnJvdW5kKDI1NiAqIG91dHB1dFsxXSksIDAs
IDI1NSk7CisgICAgICBwaXhlbFsyXSA9IGNsYW1wKE1hdGgucm91bmQoMjU2ICogb3V0cHV0WzJd
KSwgMCwgMjU1KTsKKyAgICAgIHBpeGVsWzNdID0gY2xhbXAoTWF0aC5yb3VuZCgyNTYgKiBvdXRw
dXRbM10pLCAwLCAyNTUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdlbmVyYXRlRnJhZ21lbnRS
ZWZlcmVuY2UoKSB7CisgICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KDQgKiB3aWR0aCAq
IGhlaWdodCk7CisKKyAgICAgIHZhciBob3JpelRleGVsID0gMS4wIC8gd2lkdGg7CisgICAgICB2
YXIgdmVydFRleGVsID0gMS4wIC8gaGVpZ2h0OworICAgICAgdmFyIGhhbGZIb3JpelRleGVsID0g
MC41ICogaG9yaXpUZXhlbDsKKyAgICAgIHZhciBoYWxmVmVydFRleGVsID0gMC41ICogdmVydFRl
eGVsOworCisgICAgICB2YXIgcGl4ZWwgPSBuZXcgQXJyYXkoNCk7CisKKyAgICAgIGZvciAodmFy
IHlpID0gMDsgeWkgPCBoZWlnaHQ7ICsreWkpIHsKKyAgICAgICAgZm9yICh2YXIgeGkgPSAwOyB4
aSA8IHdpZHRoOyArK3hpKSB7CisgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIG11c3QgYmUgZXZh
bHVhdGVkIGF0IHBpeGVsIGNlbnRlcnMuCisKKyAgICAgICAgICAvLyBDb21wdXRlIGRlc2lyZWQg
cG9zaXRpb24gaW4gY2xpcCBzcGFjZQorICAgICAgICAgIHZhciBweCA9IC0xLjAgKyAyLjAgKiAo
aGFsZkhvcml6VGV4ZWwgKyB4aSAqIGhvcml6VGV4ZWwpOworICAgICAgICAgIHZhciBweSA9IC0x
LjAgKyAyLjAgKiAoaGFsZlZlcnRUZXhlbCArIHlpICogdmVydFRleGVsKTsKKworICAgICAgICAg
IGV2YWx1YXRlQXRDbGlwQ29vcmRzKHB4LCBweSwgcGl4ZWwsIGNvbXB1dGVJbnRlcnBvbGF0ZWRD
b2xvcik7CisgICAgICAgICAgdmFyIGluZGV4ID0gNCAqICh3aWR0aCAqIHlpICsgeGkpOworICAg
ICAgICAgIGRhdGFbaW5kZXggKyAwXSA9IHBpeGVsWzBdOworICAgICAgICAgIGRhdGFbaW5kZXgg
KyAxXSA9IHBpeGVsWzFdOworICAgICAgICAgIGRhdGFbaW5kZXggKyAyXSA9IHBpeGVsWzJdOwor
ICAgICAgICAgIGRhdGFbaW5kZXggKyAzXSA9IHBpeGVsWzNdOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBn
bC5MSU5FQVIpOworICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAg
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgd2lkdGgsIGhlaWdodCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgZGF0YSk7
CisgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZW5lcmF0ZVZl
cnRleFJlZmVyZW5jZSgpIHsKKyAgICAgIC8vIFdlIGdlbmVyYXRlIGEgVWludDhBcnJheSB3aGlj
aCBjb250YWlucyB0aGUgZXZhbHVhdGlvbiBvZiB0aGUKKyAgICAgIC8vIGZ1bmN0aW9uIGF0IHRo
ZSB2ZXJ0aWNlcyBvZiB0aGUgdHJpYW5nbGUgbWVzaC4gSXQgaXMgZXhwZWN0ZWQKKyAgICAgIC8v
IHRoYXQgdGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IGFyZSBpZGVudGljYWwsIGFuZCBlcXVpdmFs
ZW50CisgICAgICAvLyB0byB0aGUgZ3JpZCByZXNvbHV0aW9uLgorICAgICAgaWYgKHdpZHRoICE9
IGhlaWdodCkgeworICAgICAgICB0aHJvdyAid2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGVxdWFs
IjsKKyAgICAgIH0KKworICAgICAgdmFyIHRleFNpemUgPSAxICsgd2lkdGg7CisgICAgICB2YXIg
ZGF0YSA9IG5ldyBVaW50OEFycmF5KDQgKiB0ZXhTaXplICogdGV4U2l6ZSk7CisKKyAgICAgIHZh
ciBzdGVwID0gMi4wIC8gd2lkdGg7CisKKyAgICAgIHZhciBwaXhlbCA9IG5ldyBBcnJheSg0KTsK
KworICAgICAgZm9yICh2YXIgeWkgPSAwOyB5aSA8IHRleFNpemU7ICsreWkpIHsKKyAgICAgICAg
Zm9yICh2YXIgeGkgPSAwOyB4aSA8IHRleFNpemU7ICsreGkpIHsKKyAgICAgICAgICAvLyBUaGUg
ZnVuY3Rpb24gaXMgZXZhbHVhdGVkIGF0IHRoZSB0cmlhbmdsZXMnIHZlcnRpY2VzLgorCisgICAg
ICAgICAgLy8gQ29tcHV0ZSBkZXNpcmVkIHBvc2l0aW9uIGluIGNsaXAgc3BhY2UKKyAgICAgICAg
ICB2YXIgcHggPSAtMS4wICsgKHhpICogc3RlcCk7CisgICAgICAgICAgdmFyIHB5ID0gLTEuMCAr
ICh5aSAqIHN0ZXApOworCisgICAgICAgICAgZXZhbHVhdGVBdENsaXBDb29yZHMocHgsIHB5LCBw
aXhlbCwgY29tcHV0ZVZlcnRleENvbG9yKTsKKyAgICAgICAgICB2YXIgaW5kZXggPSA0ICogKHRl
eFNpemUgKiB5aSArIHhpKTsKKyAgICAgICAgICBkYXRhW2luZGV4ICsgMF0gPSBwaXhlbFswXTsK
KyAgICAgICAgICBkYXRhW2luZGV4ICsgMV0gPSBwaXhlbFsxXTsKKyAgICAgICAgICBkYXRhW2lu
ZGV4ICsgMl0gPSBwaXhlbFsyXTsKKyAgICAgICAgICBkYXRhW2luZGV4ICsgM10gPSBwaXhlbFsz
XTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAg
ICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBCb2R5IG9mIGdlbmVyYXRlUmVmZXJlbmNlSW1hZ2UK
KyAgICAvLworCisgICAgaWYgKGlzVmVydGV4KSB7CisgICAgICByZXR1cm4gZ2VuZXJhdGVWZXJ0
ZXhSZWZlcmVuY2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGdlbmVyYXRlRnJhZ21l
bnRSZWZlcmVuY2UoKTsKKyAgICB9CisgIH0KK307CisKK3JldHVybiB7CisgIC8qKgorICAgKiBy
dW5zIGEgYnVuY2ggb2YgR0xTTCB0ZXN0cyB1c2luZyB0aGUgcGFzc2VkIGluIHBhcmFtZXRlcnMK
KyAgICogVGhlIHBhcmFtZXRlcnMgYXJlOgorICAgKgorICAgKiBmZWF0dXJlOgorICAgKiAgICB0
aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgdGVzdGVkIChlZywgc2luLCBkb3QsCisgICAq
ICAgIG5vcm1hbGl6ZSkKKyAgICoKKyAgICogdGVzdEZ1bmM6CisgICAqICAgIFRoZSBwcm90b3R5
cGUgb2YgZnVuY3Rpb24gdG8gYmUgdGVzdGVkIG5vdCBpbmNsdWRpbmcgdGhlCisgICAqICAgIHJl
dHVybiB0eXBlLgorICAgKgorICAgKiBlbXVGdW5jOgorICAgKiAgICBBIGJhc2UgZnVuY3Rpb24g
dGhhdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBlbXVsYXRpb24KKyAgICogICAgZnVuY3Rpb25z
LiBFeGFtcGxlIGZvciAnY2VpbCcKKyAgICoKKyAgICogICAgICBmbG9hdCAkKGZ1bmMpX2Jhc2Uo
ZmxvYXQgdmFsdWUpIHsKKyAgICogICAgICAgIGZsb2F0IG0gPSBtb2QodmFsdWUsIDEuMCk7Cisg
ICAqICAgICAgICByZXR1cm4gbSAhPSAwLjAgPyAodmFsdWUgKyAxLjAgLSBtKSA6IHZhbHVlOwor
ICAgKiAgICAgIH0KKyAgICoKKyAgICogYXJnczoKKyAgICogICAgVGhlIGFyZ3VtZW50cyB0byB0
aGUgZnVuY3Rpb24KKyAgICoKKyAgICogYmFzZUFyZ3M6IChvcHRpb25hbCkKKyAgICogICAgVGhl
IGFyZ3VtZW50cyB3aGVuIGEgYmFzZSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBhbgorICAg
KiAgICBlbXVsYXRpb24gZnVuY3Rpb24uIEZvciBleGFtcGxlICdmbG9hdCBzaWduX2Jhc2UoZmxv
YXQgdiknCisgICAqICAgIGlzIHVzZWQgdG8gaW1wbGVtZW5lbnQgdmVjMiBzaWduX2VtdSh2ZWMy
IHYpLgorICAgKgorICAgKiBzaW1wbGVFbXU6CisgICAqICAgIGlmIHN1cHBsaWVkLCB0aGUgY29k
ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGFsbAorICAgKiAgICBmdW5jdGlvbnMgZm9y
IGFsbCB0eXBlcy4KKyAgICoKKyAgICogICAgRXhhbXBsZSBmb3IgJ25vcm1hbGl6ZSc6CisgICAq
CisgICAqICAgICAgICAkKHR5cGUpICQoZnVuYylfZW11KCQoYXJncykpIHsKKyAgICogICAgICAg
ICAgIHJldHVybiB2YWx1ZSAvIGxlbmd0aCh2YWx1ZSk7CisgICAqICAgICAgICB9CisgICAqCisg
ICAqIGdyaWRSZXM6IChvcHRpb25hbCkKKyAgICogICAgVGhlIHJlc29sdXRpb24gb2YgdGhlIG1l
c2ggdG8gZ2VuZXJhdGUuIFRoZSBkZWZhdWx0IGlzIGEKKyAgICogICAgMXgxIGdyaWQgYnV0IG1h
bnkgdmVydGV4IHNoYWRlcnMgbmVlZCBhIGhpZ2hlciByZXNvbHV0aW9uCisgICAqICAgIG90aGVy
d2lzZSB0aGUgb25seSB2YWx1ZXMgcGFzc2VkIGluIGFyZSB0aGUgNCBjb3JuZXJzCisgICAqICAg
IHdoaWNoIG9mdGVuIGhhdmUgdGhlIHNhbWUgdmFsdWUuCisgICAqCisgICAqIHRlc3RzOgorICAg
KiAgICBUaGUgY29kZSBmb3IgZWFjaCB0ZXN0LiBJdCBpcyBhc3N1bWVkIHRoZSB0ZXN0cyBhcmUg
Zm9yCisgICAqICAgIGZsb2F0LCB2ZWMyLCB2ZWMzLCB2ZWM0IGluIHRoYXQgb3JkZXIuCisgICAq
CisgICAqIHRvbGVyYW5jZTogKG9wdGlvbmFsKQorICAgKiAgICBBbGxvdyBzb21lIHRvbGVyYW5j
ZSBpbiB0aGUgY29tcGFyaXNvbnMuIFRoZSB0b2xlcmFuY2UgaXMgYXBwbGllZCB0bworICAgKiAg
ICBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4gVGhlIGRlZmF1bHQgdG9sZXJhbmNl
IGlzIDAsIG1lYW5pbmcKKyAgICogICAgdGhlIHZhbHVlcyBoYXZlIHRvIGJlIGlkZW50aWNhbC4K
KyAgICoKKyAgICogZnJhZ21lbnRUb2xlcmFuY2U6IChvcHRpb25hbCkKKyAgICogICAgU3BlY2lm
eSBhIHRvbGVyYW5jZSB3aGljaCBvbmx5IGFwcGxpZXMgdG8gZnJhZ21lbnQgc2hhZGVycy4gVGhl
CisgICAqICAgIGZyYWdtZW50LW9ubHkgdG9sZXJhbmNlIHdpbGwgb3ZlcnJpZGUgdGhlIHNoYXJl
ZCB0b2xlcmFuY2UgZm9yCisgICAqICAgIGZyYWdtZW50IHNoYWRlcnMgaWYgYm90aCBhcmUgc3Bl
Y2lmaWVkLiBGcmFnbWVudCBzaGFkZXJzIHVzdWFsbHkKKyAgICogICAgdXNlIG1lZGl1bXAgZmxv
YXQgcHJlY2lzaW9uIHNvIHRoZXkgc29tZXRpbWVzIHJlcXVpcmUgaGlnaGVyIHRvbGVyYW5jZQor
ICAgKiAgICB0aGFuIHZlcnRleCBzaGFkZXJzIHdoaWNoIHVzZSBoaWdocCBieSBkZWZhdWx0Lgor
ICAgKi8KKyAgcnVuRmVhdHVyZVRlc3Q6IHJ1bkZlYXR1cmVUZXN0LAorCisgIC8qCisgICAqIFJ1
bnMgYSBidW5jaCBvZiBHTFNMIHRlc3RzIHVzaW5nIHRoZSBwYXNzZWQgaW4gcGFyYW1ldGVycwor
ICAgKgorICAgKiBUaGUgcGFyYW1ldGVycyBhcmU6CisgICAqCisgICAqIHRlc3RzOgorICAgKiAg
ICBBcnJheSBvZiB0ZXN0cy4gRm9yIGVhY2ggdGVzdCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMg
YXJlIGV4cGVjdGVkCisgICAqCisgICAqICAgIG5hbWU6CisgICAqICAgICAgIHNvbWUgZGVzY3Jp
cHRpb24gb2YgdGhlIHRlc3QKKyAgICogICAgcmVmZXJlbmNlOgorICAgKiAgICAgICBwYXJhbWV0
ZXJzIGZvciB0aGUgcmVmZXJlbmNlIHNoYWRlciAoc2VlIGJlbG93KQorICAgKiAgICB0ZXN0Ogor
ICAgKiAgICAgICBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdCBzaGFkZXIgKHNlZSBiZWxvdykKKyAg
ICoKKyAgICogICAgVGhlIHBhcmFtZXRlciBmb3IgdGhlIHJlZmVyZW5jZSBhbmQgdGVzdCBzaGFk
ZXJzIGFyZQorICAgKgorICAgKiAgICBzaGFkZXI6IHRoZSBHTFNMIGZvciB0aGUgc2hhZGVyCisg
ICAqICAgIHN1YnM6IGFueSBzdWJzdGl0dXRpb25zIHlvdSB3aXNoIHRvIGRlZmluZSBmb3IgdGhl
IHNoYWRlci4KKyAgICoKKyAgICogICAgRWFjaCBzaGFkZXIgaXMgY3JlYXRlZCBmcm9tIGEgYmFz
aWMgdGVtcGxhdGUgdGhhdAorICAgKiAgICBkZWZpbmVzIGFuIGlucHV0IGFuZCBhbiBvdXRwdXQu
IFlvdSBjYW4gc2VlIHRoZQorICAgKiAgICB0ZW1wbGF0ZXMgYXQgdGhlIHRvcCBvZiB0aGlzIGZp
bGUuIFRoZSBpbnB1dCBhbmQgb3V0cHV0CisgICAqICAgIGNoYW5nZSBkZXBlbmRpbmcgb24gd2hl
dGhlciBvciBub3Qgd2UgYXJlIGdlbmVyYXRpbmcKKyAgICogICAgYSB2ZXJ0ZXggb3IgZnJhZ21l
bnQgc2hhZGVyLgorICAgKgorICAgKiAgICBBbGwgdGhpcyBjb2RlIGZ1bmN0aW9uIGRvZXMgaXMg
YSBidW5jaCBvZiBzdHJpbmcgc3Vic3RpdHV0aW9ucy4KKyAgICogICAgQSBzdWJzdGl0dXRpb24g
aXMgZGVmaW5lZCBieSAkKG5hbWUpLiBJZiBuYW1lIGlzIGZvdW5kIGluCisgICAqICAgIHRoZSAn
c3VicycgcGFyYW1ldGVyIGl0IGlzIHJlcGxhY2VkLiA0IHNwZWNpYWwgbmFtZXMgZXhpc3QuCisg
ICAqCisgICAqICAgICdpbnB1dCcgdGhlIGlucHV0IHRvIHlvdXIgR0xTTC4gQWx3YXlzIGEgdmVj
NC4gQWxsIGNoYW5nZQorICAgKiAgICBmcm9tIDAgdG8gMSBvdmVyIHRoZSBxdWFkIHRvIGJlIGRy
YXduLgorICAgKgorICAgKiAgICAnb3V0cHV0JyB0aGUgb3V0cHV0IGNvbG9yLiBBbHNvIGEgdmVj
NAorICAgKgorICAgKiAgICAnZW11JyBhIHBsYWNlIHRvIGluc2VydCBleHRyYSBzdHVmZgorICAg
KiAgICAnZXh0cmEnIGEgcGxhY2UgdG8gaW5zZXJ0IGV4dHJhIHN0dWZmLgorICAgKgorICAgKiAg
ICBZb3UgY2FuIHRoaW5rIG9mIHRoZSB0ZW1wbGF0ZXMgbGlrZSB0aGlzCisgICAqCisgICAqICAg
ICAgICQoZXh0cmEpCisgICAqICAgICAgICQoZW11KQorICAgKgorICAgKiAgICAgICB2b2lkIG1h
aW4oKSB7CisgICAqICAgICAgICAgIC8vIGRvIG1hdGggdG8gY2FsY3VsYXRlIGlucHV0CisgICAq
ICAgICAgICAgIC4uLgorICAgKgorICAgKiAgICAgICAgICAkKHNoYWRlcikKKyAgICogICAgICAg
fQorICAgKgorICAgKiAgICBZb3VyIHNoYWRlciBmaXJzdCBoYXMgYW55IHN1YnMgeW91IHByb3Zp
ZGVkIGFwcGxpZWQgYXMgd2VsbAorICAgKiAgICBhcyAnaW5wdXQnIGFuZCAnb3V0cHV0JworICAg
KgorICAgKiAgICBJdCBpcyB0aGVuIGluc2VydGVkIGludG8gdGhlIHRlbXBsYXRlIHdoaWNoIGlz
IGFsc28gcHJvdmlkZWQKKyAgICogICAgd2l0aCB5b3VyIHN1YnMuCisgICAqCisgICAqIGdyaWRS
ZXM6IChvcHRpb25hbCkKKyAgICogICAgVGhlIHJlc29sdXRpb24gb2YgdGhlIG1lc2ggdG8gZ2Vu
ZXJhdGUuIFRoZSBkZWZhdWx0IGlzIGEKKyAgICogICAgMXgxIGdyaWQgYnV0IG1hbnkgdmVydGV4
IHNoYWRlcnMgbmVlZCBhIGhpZ2hlciByZXNvbHV0aW9uCisgICAqICAgIG90aGVyd2lzZSB0aGUg
b25seSB2YWx1ZXMgcGFzc2VkIGluIGFyZSB0aGUgNCBjb3JuZXJzCisgICAqICAgIHdoaWNoIG9m
dGVuIGhhdmUgdGhlIHNhbWUgdmFsdWUuCisgICAqCisgICAqIHRvbGVyYW5jZTogKG9wdGlvbmFs
KQorICAgKiAgICBBbGxvdyBzb21lIHRvbGVyYW5jZSBpbiB0aGUgY29tcGFyaXNvbnMuIFRoZSB0
b2xlcmFuY2UgaXMgYXBwbGllZCB0bworICAgKiAgICBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQg
c2hhZGVycy4gVGhlIGRlZmF1bHQgdG9sZXJhbmNlIGlzIDAsIG1lYW5pbmcKKyAgICogICAgdGhl
IHZhbHVlcyBoYXZlIHRvIGJlIGlkZW50aWNhbC4KKyAgICoKKyAgICogZnJhZ21lbnRUb2xlcmFu
Y2U6IChvcHRpb25hbCkKKyAgICogICAgU3BlY2lmeSBhIHRvbGVyYW5jZSB3aGljaCBvbmx5IGFw
cGxpZXMgdG8gZnJhZ21lbnQgc2hhZGVycy4gVGhlCisgICAqICAgIGZyYWdtZW50LW9ubHkgdG9s
ZXJhbmNlIHdpbGwgb3ZlcnJpZGUgdGhlIHNoYXJlZCB0b2xlcmFuY2UgZm9yCisgICAqICAgIGZy
YWdtZW50IHNoYWRlcnMgaWYgYm90aCBhcmUgc3BlY2lmaWVkLiBGcmFnbWVudCBzaGFkZXJzIHVz
dWFsbHkKKyAgICogICAgdXNlIG1lZGl1bXAgZmxvYXQgcHJlY2lzaW9uIHNvIHRoZXkgc29tZXRp
bWVzIHJlcXVpcmUgaGlnaGVyIHRvbGVyYW5jZQorICAgKiAgICB0aGFuIHZlcnRleCBzaGFkZXJz
IHdoaWNoIHVzZSBoaWdocC4KKyAgICovCisgIHJ1bkJhc2ljVGVzdDogcnVuQmFzaWNUZXN0LAor
CisgIC8qKgorICAgKiBSdW5zIGEgYnVuY2ggb2YgR0xTTCB0ZXN0cyB1c2luZyB0aGUgcGFzc2Vk
IGluIHBhcmFtZXRlcnMuIFRoZQorICAgKiBleHBlY3RlZCByZXN1bHRzIGFyZSBjb21wdXRlZCBh
cyBhIHJlZmVyZW5jZSBpbWFnZSBpbiBKYXZhU2NyaXB0CisgICAqIGluc3RlYWQgb2Ygb24gdGhl
IEdQVS4gVGhlIHBhcmFtZXRlcnMgYXJlOgorICAgKgorICAgKiBmZWF0dXJlOgorICAgKiAgICB0
aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgdGVzdGVkIChlZywgc2luLCBkb3QsCisgICAq
ICAgIG5vcm1hbGl6ZSkKKyAgICoKKyAgICogdGVzdEZ1bmM6CisgICAqICAgIFRoZSBwcm90b3R5
cGUgb2YgZnVuY3Rpb24gdG8gYmUgdGVzdGVkIG5vdCBpbmNsdWRpbmcgdGhlCisgICAqICAgIHJl
dHVybiB0eXBlLgorICAgKgorICAgKiBhcmdzOgorICAgKiAgICBUaGUgYXJndW1lbnRzIHRvIHRo
ZSBmdW5jdGlvbgorICAgKgorICAgKiBncmlkUmVzOiAob3B0aW9uYWwpCisgICAqICAgIFRoZSBy
ZXNvbHV0aW9uIG9mIHRoZSBtZXNoIHRvIGdlbmVyYXRlLiBUaGUgZGVmYXVsdCBpcyBhCisgICAq
ICAgIDF4MSBncmlkIGJ1dCBtYW55IHZlcnRleCBzaGFkZXJzIG5lZWQgYSBoaWdoZXIgcmVzb2x1
dGlvbgorICAgKiAgICBvdGhlcndpc2UgdGhlIG9ubHkgdmFsdWVzIHBhc3NlZCBpbiBhcmUgdGhl
IDQgY29ybmVycworICAgKiAgICB3aGljaCBvZnRlbiBoYXZlIHRoZSBzYW1lIHZhbHVlLgorICAg
KgorICAgKiB0ZXN0czoKKyAgICogICAgQXJyYXkgb2YgdGVzdHMuIEl0IGlzIGFzc3VtZWQgdGhl
IHRlc3RzIGFyZSBmb3IgZmxvYXQsIHZlYzIsCisgICAqICAgIHZlYzMsIHZlYzQgaW4gdGhhdCBv
cmRlci4gRm9yIGVhY2ggdGVzdCB0aGUgZm9sbG93aW5nCisgICAqICAgIHBhcmFtZXRlcnMgYXJl
IGV4cGVjdGVkOgorICAgKgorICAgKiAgICAgICBzb3VyY2U6IHRoZSBHTFNMIHNvdXJjZSBjb2Rl
IGZvciB0aGUgdGVzdHMKKyAgICoKKyAgICogICAgICAgZ2VuZXJhdG9yOiBhIEphdmFTY3JpcHQg
ZnVuY3Rpb24gdGFraW5nIGZvdXIgcGFyYW1ldGVycworICAgKiAgICAgICB3aGljaCBldmFsdWF0
ZXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEdMU0wgc291cmNlLAorICAgKiAgICAgICByZXR1
cm5pbmcgaXRzIHJlc3VsdCBhcyBhIG5ld2x5IGFsbG9jYXRlZCBhcnJheS4KKyAgICoKKyAgICog
ICAgICAgdG9sZXJhbmNlOiAob3B0aW9uYWwpIGEgcGVyLXRlc3QgdG9sZXJhbmNlLgorICAgKgor
ICAgKiBleHRyYTogKG9wdGlvbmFsKQorICAgKiAgICBFeHRyYSBHTFNMIGNvZGUgaW5zZXJ0ZWQg
YXQgdGhlIHRvcCBvZiBlYWNoIHRlc3QncyBzaGFkZXIuCisgICAqCisgICAqIHRvbGVyYW5jZTog
KG9wdGlvbmFsKQorICAgKiAgICBBbGxvdyBzb21lIHRvbGVyYW5jZSBpbiB0aGUgY29tcGFyaXNv
bnMuIFRoZSB0b2xlcmFuY2UgaXMgYXBwbGllZCB0bworICAgKiAgICBib3RoIHZlcnRleCBhbmQg
ZnJhZ21lbnQgc2hhZGVycy4gVGhlIGRlZmF1bHQgdG9sZXJhbmNlIGlzIDAsIG1lYW5pbmcKKyAg
ICogICAgdGhlIHZhbHVlcyBoYXZlIHRvIGJlIGlkZW50aWNhbC4KKyAgICoKKyAgICogZnJhZ21l
bnRUb2xlcmFuY2U6IChvcHRpb25hbCkKKyAgICogICAgU3BlY2lmeSBhIHRvbGVyYW5jZSB3aGlj
aCBvbmx5IGFwcGxpZXMgdG8gZnJhZ21lbnQgc2hhZGVycy4gVGhlCisgICAqICAgIGZyYWdtZW50
LW9ubHkgdG9sZXJhbmNlIHdpbGwgb3ZlcnJpZGUgdGhlIHNoYXJlZCB0b2xlcmFuY2UgZm9yCisg
ICAqICAgIGZyYWdtZW50IHNoYWRlcnMgaWYgYm90aCBhcmUgc3BlY2lmaWVkLiBGcmFnbWVudCBz
aGFkZXJzIHVzdWFsbHkKKyAgICogICAgdXNlIG1lZGl1bXAgZmxvYXQgcHJlY2lzaW9uIHNvIHRo
ZXkgc29tZXRpbWVzIHJlcXVpcmUgaGlnaGVyIHRvbGVyYW5jZQorICAgKiAgICB0aGFuIHZlcnRl
eCBzaGFkZXJzIHdoaWNoIHVzZSBoaWdocC4KKyAgICovCisgIHJ1blJlZmVyZW5jZUltYWdlVGVz
dDogcnVuUmVmZXJlbmNlSW1hZ2VUZXN0LAorCisgIG5vbmU6IGZhbHNlCit9OworCit9KCkpOwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvZ3JheS0xMDI0eDEwMjQuanBnIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dyYXktMTAyNHgxMDI0LmpwZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMDZlN2Y1ZWVmN2UwOWE2MmM3ZmY2NjMxYzMwOWVmMjQwODNlMTc4CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAxMDMxNAp6Y21lSE5UV31qITg5cG1udlRWeTJgOWVhUURJM01QRl9vcCYj
a05GVSRDN052Qn0kQ3NULXEwQXdZIW94Uz96OWkKelNHTTlBWDN8cEgyWTg/K3ojQjMyMCM5V01y
OTNiTEchNSsmMTQpfStWMzxoPzFzKHtidzlweCpHdllzSUZQM2JGCnopPzZOI1lCanMoS21ZJW98
TlFeST1scHhsdUlqSlhaK0sybSpUZlAreGc3Yz1MZGJ7dzZoZHlHczVYM3w4ZlhgeAp6RzVaXm8q
V0BEclF+ZUZ9a1ZPTkV4JndLejNPSnZsP3NWdjxzUklfcTF3c2JGNkAzRUU9Y3AqNTJaNnIhc0VB
MVMKeks+ckMpIShmO0I+d056X0xpX3VXUlpqNnJRSzA3KzYrX1YlNl93NnA9bVI7SDZKPWFLaEB1
ZkRrJjQ3cCVzOT1BCnpybFFHSUVDQ3UzWVdwJW0/WU45WXFzKkcrVzQoXmhuIz1DRDRYd0c/WTA/
VElGWGdzdV9jcj1SWTN1JGBEfjxsUwp6Q3xke2hranY1U3pIYUZ8Mz8rXmFEZUpHLVp6NGJPPShD
dnxhQFlUaWRQb2lOPVB8RFNZeEZTa2ArVTkqcFRERVMKekFMIzFyM0ptcjd7az1tdzJMXkApMjZo
Smc8Z2Z+fXZoaGxGY1hmNjVib2NmMl5iUGooXmJGIWwmIUV7UEBMPzN4CnplfkpQPXY8QV9rZzIp
eDEreVNjbzgqczktZXdtc0NEP0pvQnoraW0xNSM/KDBjLXdzKW9uNiNNQSUkRlNUaTZIVgp6amRI
dSVUJUxCWCYqUyNUS3AxZWg/ZTFxaFE9ZWY2ZkBkRiRkSXVsLTx9PkwlISRiTSFpP08pJigzTVI0
LXFwZ2IKejgqZylaOyR6P1gtc2tzYXpwfXRqVXdZZ2EtRXNCIW81RWtlfExfWWhTQVlBPyU+RH5j
ZUJzJXpVVmkwdz8+X20xCnpwSXYrRlp6b0RpazlfVF49VSNtRV9rU09vSnl+OVVeeX1hTDtZK1ht
O2teS0l4eG1ec1ZwRkA8bE9RSlNYOFBOfQp6ZzBzTl5QeFFnWjJDKVV0PWRhdn40SHNgezUzT2Jq
TCEySWVkI0BLOCg3ckVtPV8obFVfenImaF9eMlZnPjZtYlAKejMtKyZAUTIhUDN5R2ZxYEc+Sjtn
bSQqfGVLSnZfKF9nTnE2YzBiQFVSX0VAVTgoeig/JkpBQzlWcyZvcyFRdEM1CnozaVYkQz8hRykr
RSYldlJ6I1k2VDw2YH5GWkRwSFVVI3dyPDQqMkVtZk0zfVRffVheQnVXa3FZK0lHTyhpdGApdwp6
b0JveWNPY2ZpNnB6LXV2dF98bG9nbkQ7VDQ8UHJRZHVNaytLRXhASiRvM0xoLV9MKlhrSSNNUXI1
fF5BKVRPN3QKej52YGNRayk/PzJFeDdpPGlMKGVvVTgpQUQ/XnhBUHN8SGtZYGJHMSlRNzlea0w9
YmJiQXFhQXtmKDRreVdrJTkpCnp5X2Q4dGgmN0J6aXcxNmsjaW1Ye0pJWXBzaDNRaVp6JW5+Qzhf
YThwUVlye1dSWHRXYiY0Skw1PTg9WEpfPn5aaQp6M1A/WihzdjtHdUxZPUNFaDhqX21tSkhkbCRY
fjNBa3xEfU9DQ0VEbkkrTUhxKGBHYjJnO2xzaGE5UWBienJve1UKenN2Izx9NClQcnNuTmJiZGJe
QEYlWUVDNnopXmtvSnFzZmB8aWZwVmBqdWEpYGtzS2A+T0hPNkZCNHdRbCNCcDc5CnpubWJkcjAl
MWw4PCE5M3d1bShSO1FKJHgxVWExeGpEYzVuODlKODlkaUk8aSg8SSk8eGE5bFFLX1QoamVaPUVB
OAp6QCRePnd5ZT03cEtWT3AkPHNFcUVsRTR7P21TcWhWZHE5a3dGVkV9dHNLN0peTHk2NXNNfSg1
OFc8JDNOQFUtMmsKeitYNSQ8e0NTTiNiVSlUV2p5X0lQKVJUKD4rKn14O3FGbERhKk1rTGx1cW13
PWhFa0NmeG9rREArWSlSLTFIYXFtCno9ZigxM3FvQihjZk5jJlEmbFVHZygrMlo3Myoqanc/b3du
UD9JV0B0dDVZWkAmcygjdm9BQmBieW8oP3wtZHVPVAp6TCtUeW0zS3hvdVFkcGJkcXRsdXN6JE87
Rk9TdF9BdVJrYiskMXRvUUZpb1dJNXFjTHdeKF96Z0ExI1l+MVpSelkKeipDQ2g8YTlYbXZGaHkx
eT00YG5HU0tTNDttXzZZdDV0RD98aV4/IWRTIyVFUmg9V3BzY15VJGBpZXhDRzBKVmxNCnpYPVl5
PGN2eT4+eEA7alg4dnFWX2VYPTZDRCZkQGheUDlKKlJBcFlARmpxSygwVTZQWTJiZ21nZndeSDZw
dExodQp6T2YmTSVVPzZwYEV7VTk9cE9COD07WT5DNDt+X0YmX3J1dnZEcyRPfXpTXyYwUWRPSCtV
UFRranFMWm5uM3QwT3gKeiFVRy1NWX1IVV4xekZIb0wqUmpkN1M1QDVxVXwpbm4xZHlBbGA7Kip8
SnJ8ZFJnOz8xSDNAeipDI1JSMlFAV1J4CnpqMEx2Ymd6RGkwTm0+d1UjKy1oNUEkUD0xOGF8dWQx
bnlXPXczUjdJRVpkUmxISnZ8ZnYlJkxyVU1SNnVsRWdaZQp6MWtLbjJlIV54cSFARyoqajNPeW9M
dlJEOHtgOU9QZkZ8Z3VCSTgoaDc+V3VITHRTWGg1fWd2SGxUQlFJaykpcVoKens0VGh+aXlQcjI4
eXZ0TCFQNT9nXlctZjtvQVdMfVh4S09yKUY3JGg1b3Ute2o3UlNHYVVJU3peUTVqTD5UViQyCnoq
VT9UYD1lUEMmdCRqZGlBRnlmbnY1OWY5eyhyZC1BYkRYb09tX3NVVzVAJEk1JWkpZCNLViVnMiM7
WUo3U019OAp6OCp1N2BRVVRIYjBTRnBwO0ReJSsoUWlLVStkKF5ReUQzel4oZiEzbSElJFA8dSZq
QDtfXnJ0WnImUGk8UnQrO0YKemt1YlZ2dlprYCE4TnJ+NzB6QnM/ZmA5cVpQbEJ8X1BYdGRVYSo+
Png1ZjtWNkUxRlBQSWw5MkRvWipzdWFQblVJCnpvPzVDX1E3ZU1NKHpTe3Q+IzVwQWtTST85am9J
TktPKDRkWmk2RDhHTDcmUmEoLX1uKj0pXzFPIzZfWUVKKGU2ewp6NjdlTCUrKWN5I25wbHtMZ3Jt
dDIhPSZQNERRMSttanYofT1AdWdIZ0o3ZV8pd1RZblIpYmpIMyRafjglKGFLPmEKem5Ne1R3KFFx
Xngwel5uWkNtVT1uQjxwKUA0T3Ywd0c/REJUWHNpKnwhQnR9LTIkcV5JUk1jRn5RTV9mZURpIVAo
CnpMRj5sITU7WG8tdkROWThEeDRRfHJLKWtsXnBZU09kK2c+cz1kQE1mZmxWQ1h4dihHITZAY2sq
WnkyWDUpcWN6Ngp6Ry0pITw1dEFFZ2NMMjklWXEpKnFGJVRTMVdmaVc5YDwlOzgxaz40UWEocFQ9
bGE3ejRyP2I7Y2RWRCQ/QUR4TTMKeld8JndxJVZne31iRnl4KkdBSDBScGsraTlgNGtncGA5dn1x
NH4+PGdAbGJwYG5GdTlJckRQfkVUMTx7N219RHRkCno2enVscWBpWWdjKkVpM2xOe1V1dEE/I3Y+
RWVxayhzISRIbmp7aG1MNnYhI09GY0QtKFNFLUM5emBfam5KaXg7NQp6MVZmUW5oIzZuTj8qdzYo
amZXeSpzWXR8eExPWmNeWmM4WUJlYkB3cjBuV29kPlZ2PnxveyQoSDdJb05xb3dHKUEKekt7I3Rz
bDFQKHJsd3Z1JmdQalFLPzJeQy1FdkMzZGxzUlVNRkN+Z3hYcEJwOHA/RXg2Mz43MSNOR0xNTyQ1
XjI+CnptVz1SOHladGlreDtEOTtYbUghP1RVU2NQR09HendXZiVxYVlATjVxKz1lJSt3cip+Ym1D
RktUaUV1RmRaIyhuaAp6aEt5PERtZC1UWm5FIyRMVlZvU3luLXQhN3xBPyQxayR+QG4xPSRJY1BG
bFJ6UEc3Q0U2QGdYK1NgbGJQcGNSMnUKejFVXkMkU2w/SSlHT1V4OVZjUF5CYzZUPj8qbzk5NmVm
VD5tWX5HdiR6ViZBUTw4UXQ3T1FfNCYyNShhLUR1QypqCnooZkg9cXZ3ZTg7Kj8zJEpZfnNMb05n
dil1d3ZKVz1TYGxiUHBjUjJ1MVg+YUpDYFEwczNCY2REOzVEPGdEKThkfQpJZUFWQ2hDd2Z2Y2xt
R3cjCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLTI1Ni13aXRo
LTEyOC1hbHBoYS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLTI1Ni13aXRoLTEyOC1hbHBoYS5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgzZTU1ZGUyMTkwYmI2MjYxMjUxM2MzZTZkZGU2NzRkZjAwMmI3OQpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgODEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVPDVLNTcmK0wwcSt3KTFJ
Z3BhQGJhNCFePXVKKlpOWFNTP05sQjQ3CmV5MH04NS0tZF9iPz5weERWQ21iQUFSVjVyZWxGe3I1
fUUqb2dBPTZ5CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLTI1
Ni5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNv
dXJjZXMvZ3JheS1yYW1wLTI1Ni5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFlNDg2YjVhOTJlNDA1MTU4Y2Yz
OGY2ZGZiYjQ0NDQwZmRmYmQ2ZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzgKemNtZUFTQE4/
KG9sSHlgdVZCcSFpYTB5fnlVPDVLNTcmK0wwcSt3KTFJZ2s/ZGJhNCFePXVKKlowMEo0LSNSKCFr
CmI5dDtlPjNZcV9YT24lUz9SS1Zjcj5nVGV+RFdNNGZLU2RKOAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL2dyYXktcmFtcC1kZWZhdWx0LWdhbW1hLnBuZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ncmF5LXJhbXAtZGVm
YXVsdC1nYW1tYS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVhODliZWI3MDliNGYwYzg3ODc3MjY2ZGFmMjg0
MTY1YjIxZWExZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIzCnpjbWVBU0BOPyhvbEh5YHVW
QnEhaWEweX55VTw1SzU3JitMMHErdykxSWdvUGxiYTQhK24zSjU2MDBiIzFESm18KQp6TGVBO0po
bVdoZV5+bCZWM0lvQjtQZEE+ZCZ+KGVTK2swazdOUk5iTih2ejMwOT1efClKVyk7aHRZSyEhQE0k
OVIKVUtqVnVtJnA+OC15ODV9U2I0cTllMEQ3Yik/KklTKgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvcmVzb3VyY2VzL2dyYXktcmFtcC1nYW1tYTAuMS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLWdhbW1hMC4xLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MzdjNzkyZGEwM2JhNjMzYjcwOGEzYTgwODYwMTdmZTkxZTFlYjQzCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMzMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVPDVL
NTcmK0wwcSt3KTFJZ255V2NsMzIrVXtEd0UyfHdmbTxsQV88CnpJRUdsOVBFS0s5YSNLKW41ZipZ
ejdlMEprKXZaVXltUWgkPmZfQUBlLT5qcjcmbn08I0BqQUxmKEVKT19sNFpwfgpncE0qQTZpcC1X
X18leENFLS07PHVMRk9gZXk4NX1TYjRxOWUwSlNrRENqYkJkCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLWdhbW1hMS4wLnBuZyBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2FtbWExLjAu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQwY2VlYjA0NjUxNjhkMWFlMzIxOTA3MjBmZDg0NGIzYTFiZDliMGIK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEzMwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVU8
NUs1NyYrTDBxK3cpMUlnbnlXY2wzMitVfkY0cF8rblota1o8R1oKejt1dkNhSXlyQGIkeFQ3UU1P
ZXI9VUhJXkVSa3QxKVRTajRsM0VLVT5lWTI5VEppQzBfJExyX3tMR3YjeE9PX1B9CmdlRz1NT0RL
Y0F6O25QSXNlPURYdTEpMG0+PkZWZFEmTUJiQDA0U0Z5Yk5+UFYKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2FtbWEyLjAucG5nIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dyYXktcmFtcC1nYW1tYTIu
MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzNmY2Y3YjQxYjZiNDNkMjczNTQ5ZjZiMTAzMDAyZGFhMjI2ZTRl
NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55
VTw1SzU3JitMMHErdykxSWdueVdjbDMyK1ZDSHIzNWAxX1AkaFl4eQp6YVNYOUlvdChuSjxmZnFE
QX1yKmJFYDBkN3MjfWtZRXUqbCYxbnF2YHpGQTNFbz9TbGU8OF5kfXAhcFk7Q0NpRn4KZ0pfJjhD
NnF6bDxATSQ5UnpaRnhTZzNNKmBib0Z5dD1ha1J7ME5GbiNsbUd3IwoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL2dyYXktcmFtcC1nYW1tYTQuMC5wbmcgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLWdhbW1h
NC4wLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kODc4ZjFlOTY3ZGM0ZGQyNmQ4ZTNlMmI1ZDZjZDllM2JkMmVm
MDBmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMzMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVPDVLNTcmK0wwcSt3KTFJZ255V2NsMzIrVjNUVU5XU2h6WTxsQV88CnpJRUdsOVBFS0s5YSNL
KW41ZipZejdlMEprKXZaVXltUWgkPmZfQUBlLT5qcjcmbn08I0BqQUxmKEVKT19sNFpwfgpncE0q
QTZpcC1XX18leENFLS07PHVMRk9gZXk4NX1TYjRxOWUwTFI1OVJ7I0oyCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9yZXNvdXJjZXMvZ3JheS1yYW1wLWdhbW1hOS4wLnBuZyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ncmF5LXJhbXAtZ2Ft
bWE5LjAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNjllZDFmM2QzMTY4Y2UzNDYyZDE5MzIzNGVjMzA5ZDc2
ZTA3YzEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEzMwp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVU8NUs1NyYrTDBxK3cpMUlnbnlXY2wzMis7Tjg2LU5KX21HJGhZeHkKemFTWDlJb3Qobko8
ZmZxREF9cipiRWAwZDdzI31rWUV1KmwmMW5xdmB6RkEzRW8/U2xlPDheZH1wIXBZO0NDaUZ+CmdK
XyY4QzZxemw8QE0kOVJ6WkZ4U2czTSpgYm9GeXQ9YWtSezBQR2toeldATEwKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ncmF5LXJhbXAucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dyYXktcmFtcC5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTVhODliZWI3MDliNGYwYzg3ODc3MjY2ZGFmMjg0MTY1YjIxZWExZQpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTIzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VTw1SzU3JitMMHEr
dykxSWdvUGxiYTQhK24zSjU2MDBiIzFESm18KQp6TGVBO0pobVdoZV5+bCZWM0lvQjtQZEE+ZCZ+
KGVTK2swazdOUk5iTih2ejMwOT1efClKVyk7aHRZSyEhQE0kOVIKVUtqVnVtJnA+OC15ODV9U2I0
cTllMEQ3Yik/KklTKgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dyZWVuLTJ4
Mi0xNmJpdC5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvZ3JlZW4tMngyLTE2Yml0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmNiOTY5NjBlMTQy
Y2NjYTQ5ZjQ0NzU1ZDYyOTQzNTJjYWYwZTQyCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMzQK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5PZHU9KEJHPGFPODJ+QkgwKn1hSUFuZ0loWllRKHRL
IVJsampfRSllCnp0ZVBROXI+KzZXUVRCOWs0QkB6Kns2dThNLVF4IWllMzw9Xm90YXRxYlloPUI0
Xkt7NmVWc0FUeEpWeztjbTlHRApRRFdHeCZQZ2cmZWJ4c0xRMEdVRF9GI3JHbgoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2ludEFycmF5VW5pZm9ybVNoYWRlci52ZXJ0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2ludEFy
cmF5VW5pZm9ybVNoYWRlci52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MjA3NGU0NzM3MDExZTM4MjAyYTYz
YzRhYzk2NmMyMzEwZWEwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvaW50QXJyYXlVbmlmb3JtU2hhZGVy
LnZlcnQKQEAgLTAsMCArMSw4IEBACit1bmlmb3JtIGludCBpdmFsOwordW5pZm9ybSBpbnQgaXZh
bDJbMl07CisKK3ZvaWQgbWFpbigpCit7CisgICAgaW50IHN1bSA9IGl2YWwgKyBpdmFsMlswXSAr
IGl2YWwyWzFdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAxLjApOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDUxYzA1ZTJiODU4MTA0MGQyM2VjMGFlZGM2ODMyZGMxMzk4Njc1YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogQVMgSVMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCit1
bmlmb3JtIGludCBpdmFsOwordW5pZm9ybSBpdmVjMiBpdmFsMjsKK3VuaWZvcm0gaXZlYzMgaXZh
bDM7Cit1bmlmb3JtIGl2ZWM0IGl2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGludCBzdW0g
PSBpdmFsCisgICAgICAgICAgICArIGl2YWwyWzBdICsgaXZhbDJbMV0KKyAgICAgICAgICAgICsg
aXZhbDNbMF0gKyBpdmFsM1sxXSArIGl2YWwzWzJdCisgICAgICAgICAgICArIGl2YWw0WzBdICsg
aXZhbDRbMV0gKyBpdmFsNFsyXSArIGl2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChz
dW0sIDAuMCwgMC4wLCAxLjApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL21hdEZvcldlYkdMMlVuaWZvcm1TaGFk
ZXIudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jl
c291cmNlcy9tYXRGb3JXZWJHTDJVbmlmb3JtU2hhZGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdmNzdj
MGNlMzc3Njg1NGJjOGRmOGZjMjI5Mzc1MzEyMjFlYzcwYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9tYXRG
b3JXZWJHTDJVbmlmb3JtU2hhZGVyLnZlcnQKQEAgLTAsMCArMSwyNSBAQAorI3ZlcnNpb24gMzAw
IGVzCisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KKwordW5pZm9y
bSBtYXQyeDMgbXZhbDJ4MzsKK3VuaWZvcm0gbWF0Mng0IG12YWwyeDQ7Cit1bmlmb3JtIG1hdDN4
MiBtdmFsM3gyOwordW5pZm9ybSBtYXQzeDQgbXZhbDN4NDsKK3VuaWZvcm0gbWF0NHgyIG12YWw0
eDI7Cit1bmlmb3JtIG1hdDR4MyBtdmFsNHgzOworCit2b2lkIG1haW4oKQoreworCisgIGdsX1Bv
c2l0aW9uID0gdmVjNChtdmFsMngzICogdmVjMigxLjAsIDIuMCksIDAuMCkgKworICAgICAgbXZh
bDJ4NCAqIHZlYzIoMS4wLCAyLjApICsKKyAgICAgIHZlYzQobXZhbDN4MiAqIHZlYzMoMS4wLCAy
LjAsIDMuMCksIDAuMCwgMC4wKSArCisgICAgICBtdmFsM3g0ICogdmVjMygxLjAsIDIuMCwgMy4w
KSArCisgICAgICB2ZWM0KG12YWw0eDIgKiB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCksIDAuMCwg
MC4wKSArCisgICAgICB2ZWM0KG12YWw0eDMgKiB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCksIDAu
MCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIu
dmVydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMjNhNGJlMDNiYzgwNTgzMjg4OWQ3NGZlZTFmZGU3OTcxODQxNzMx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydApAQCAtMCwwICsxLDQwIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiBBUyBJUyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCit1bmlmb3JtIG1hdDIgbXZhbDI7Cit1bmlmb3JtIG1hdDMgbXZhbDM7Cit1bmlmb3JtIG1h
dDQgbXZhbDQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KG12YWwy
ICogdmVjMigxLjAsIDIuMCksIDAuMCwgMC4wKQorICAgICAgICAgICAgKyB2ZWM0KG12YWwzICog
dmVjMygxLjAsIDIuMCwgMy4wKSwgMC4wKQorICAgICAgICAgICAgKyBtdmFsNCAqIHZlYzQoMS4w
LCAyLjAsIDMuMCwgNC4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL25v
b3BVbmlmb3JtU2hhZGVyLmZyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkZmM5ZjFkNGVkODM3NGMxMzA1MDFh
NTJhYjI1OTlhMzc5ZjUyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFn
CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqIEFTIElTIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIu
dmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291
cmNlcy9ub29wVW5pZm9ybVNoYWRlci52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMWU0NDBkNGMyNjM3NDQ0
YWZlM2NiNTg3YWEzYjhiZGZiYWMwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFk
ZXIudmVydApAQCAtMCwwICsxLDQgQEAKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFk
ZXJFUzMuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlckVTMy5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwYWY4Mzdh
NWY2Y2FmZWRmN2UyYWY1MTEwNjRiYjQ1NGRlOTc4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvbm9vcFVu
aWZvcm1TaGFkZXJFUzMuZnJhZwpAQCAtMCwwICsxLDQwIEBACisjdmVyc2lvbiAzMDAgZXMKKwor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogQVMgSVMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworb3V0IHZlYzQgZnJhZ0NvbG9yOworCit2b2lk
IG1haW4oKQoreworICAgIGZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlckVTMy52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyRVMz
LnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTIxM2E0YmIzYjMxYWYyMWI4M2M1NmQ0YTg0NjY1NDIzNjAxYTY5
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlckVTMy52ZXJ0CkBAIC0wLDAgKzEs
NiBAQAorI3ZlcnNpb24gMzAwIGVzCisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvbnBvdC12aWRlby0xOTIw
eDEwODAubXA0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
cmVzb3VyY2VzL25wb3QtdmlkZW8tMTkyMHgxMDgwLm1wNApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2U1YmFhZWU4
NTA4ZGJjOWFmYzhmMjExMmVhNjc5MTdjNTYyNjFhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3
ODY2NQp6Y21lSTUzdFVyV197WDt+eGhNKU1xN2RwLSNNRSZXT18zIWk7JShrOWN0SyNXQT9SU1o0
UDw0Qk8wXkl4REs5YFcKekdCVStzc0hyTDdySTVecVMoPXMjLXRkeTRzQS1hPntOTU5OSndfelN6
dnJkQHs8TTlWZHcwJmUtKzc8c2VCYkFzCnp2JiZCb2hhLXFxWVo3OHJpWn45MyRIOTsyP2p1UXhA
e1VYSl8yekltKjNuOXRqS2w1WjckPXBlUUoteT10P0tGdQp6JldgLTQ8alJrdWNkcnJ0QW8jSkAm
NjtHTkxCMFphTDZreCU2THxYJDUtNUVKNGozJShfVkZHdFdLYX1aRzE+IWwKekBFa3ZCPFMySnZM
RXd4THNIYXFoU0J5fDNYeW1lSndaTztBWWs8M3RtLWolbEZoO0ZUQGJtT3N2fWxuPlFtajtfCnpr
VzFuezZ2fXk/Y3E8Kzs+TnEqLXFleEs0RCZrZHNmKyRJKEJ1ZUJoUHxCaTMtaCV7RVMpXlBNd0xz
K1U9akc9bQp6a2k8Km04a0oxc2x7fj1ERTdeTyUwNzBCZ2xvJUh5UCRmcDltYmFINkw4VT0yTSpv
SEByNk8rK0ZaMyQoazAzNUsKelN0Ym88R3xAfUttNkdeKkdMZXQzQVN5PHdoPzlpbCo5ejIxbk9x
Kkw2OFEpUUNsOGlKc25NZFNnPmZQO0d6TitFCnpCfUZgWGZ3JDF4VE0jVyNzbHlYZzN0fCYrNTJM
YHNnbTZXNHZgVkhIeCUmdnpGLXI2Ym1CYHlpQVhnfEJOTWd7bAp6YUNWYE9LcVpmakxXNXghY25S
V18ldG9TTzwwTlc0a2wxKiZPZXZTM1BIMV9nSlcobXBnaHdnajUrckskSlBLdD0KenQoMyZaQk1I
PHxEWnpjQm02QUFfTjtGc3k4Sj9nKT9OfSpfQX5JWWVsX2FRe1IlRVAxZypPdGJsJWM9fDJvfWo9
Cno9ZiRXYShaJj1CdmlSX01pVWhSUXhHKHt8VjFaMTd2XyhEeHkrfGBXRTtiJUw2e3c8UUB2Xjh5
d2FDe0M0XnRfQAp6SWFTSjNHM2UjV3NQSEdAaVUjNTVxOXxwd0FUQU9tN0tlcU5oPHBaa2NuS0Vi
VV9AUlhzTCNSI0VYK0pnbDB9MXQKenBhbSttRUo1VGVoKXFDeTJ7RDBvQkhFVEBBdENfcFBFSERr
IV9TZ3dtdlhHPzleYTRBQHZgVEtqWkxYcVUzJSl3Cnp3JjBxNT5wbkBqbGVCajIkX15KVXAxVjhB
P2UzK1QlIXVMMi0zeWhjVW1BTDlTTD5+NnlSJmNYSigpNDwpNkpHOwp6Uy07c0d2M0VWOGF+fTko
X1RLQjtBTH5Se3txbkFfNkhKVGY7fjhEI3diRW5zcTF3dGg5KSVvXjFeS2dHVEt3RFEKejxwKiFJ
eVhnMURxdzl3MCVlTTc7Yj9JdiVGKm55LUl+dWxxJEltVzFFMDVqJWt6WikjKEVYaFVtdldBOWc9
TEgxCnpZVHkyb1EpNEQ2cyZrMSo3cHBzTyZleSVva05IYTUrVkwxKCRRJGZEVmApfmVzRjE+S3VN
OWxWPk47TT16MTdwPgp6cCNOfUorX3NxMi0oXm95SSZTanNlSyo1MThuLXkxVSZXQCo0IX0pazh7
aDYqOEt2JlpVeHYzcThNNUZFVFEyRH4KemgzUilIYXBXcnd4TWpLZnFNWiUlZn44NGlBPFZpcXQ7
RXdjeEljSCQldlolNGNWP35xWEQ9TUZKQWxeQGNqK2Q2CnoyUkUjeiRoRD1vITheMlRWbUk5Mlkp
ZjQwWW1aeVBDfX45eVpuU1psSEFsajlEb1k5I0dFJj50dU0xKzdgaDRnJQp6aU8rTyQpVUh+Rjg/
OUVQaEpNVFJLNko2aU0lPl92aEtQNnErP3JXRHZhTH0mdGUyJTBGTENzMnpyKG5aJmV7dGIKekBS
Qys1TkB1ZEs1MWhCZiQ4fkZJTnhyd1o9ZE9yfXFKPThsZ1paOylKTXomJVVINj56cFB1SCpVVX5R
RTVuZjhoCno/VW1jVW1pV3B9bHQ9OFg+Uz8od0wkMl4jVlZlKnleMGZRU2NqfGxfOD1kc20/Nkdy
eCYqXz07JlhBaiVjXn08UQp6PFJ3MXp2eVFNbWApSX1SNFZTNzk+bFVUd2t9WGBRUU5PSHVfeHEy
LU82S218e09NY09pd2Q/Ulg3X2l9e3k0U2YKenoyJnZxSiopYyRiWHs9UXtpVDQ4OyVRXlRtdiFo
PFMpRCRfUT1MJiFTV3NwYzsoaHpiPXhkNlpfWntFcWFEMnczCnpOJWw4KTRxYkVJWnExRmlANDZo
QncoO0NESkdWQSViM0Y0XldkamJiekZ6eGxodWNCU2J9IUNVWmR+d0NSRDMqYAp6Y2s1XyRnd15T
LWJ2LTQ/dD1oIXktanRjO1MzTFQ/bThGRntNeUR1fUR0VipNc0Q5ekQzWCRKRDgqeFhYdXA2QGIK
emV6RXF6K01iLWZeSCszU1o3QTV4X2dHb0BAe3NAJSU/czhVOCNeOEFIOFYpVlo1ekR6TFRhP1hh
Um9QSSNOISo/CnpLS25WZyR+T1RXSFBGNzJtJFl2eV4+aCMmenxaWFpePDE7bmBraX5Fdi1yMjZn
VDgwPlV1JGpOTUZxMTF4JHBKJQp6S09raX5vTjBTSWdyU09TYkhKekxkeUhJVyNKaVNKJXFVdl9u
RWhAWih7RzR0eik9UXpacnF2Z1FrVl8zY2AhcEMKeiVkQ3ZOZFFiS3xadC1ueVdOTEduV3RVeTZq
fkMqV1JqMiMkcEU4U3ZPZylwdGJtTnZFSWtTc2QpYjU/TnBOQkg3CnorbnBFcFgxM3tJSiRHK0RV
Yz9QcGVXcE53VE1qbEFkdyhAOURtWVdmPXNVRVR5U0l2MnF9fHhJbH5FJTE8MXlSVAp6ZjJudUdp
I2RNRFRVVCo3b0NBU2JIdHlPYmImb2YlO3JPaVgrLWwtcl91JWBKWDF6QX5AZWh9NmRmd31GLXNo
MygKej4oWERHbzxGfHheV1FVKUJnUU5xdkxwRz9EfkZ2SVpzSkx1VDt9JkwzaSpFOXl3R2kqZUUj
Km1XemlkWSYkUlRiCnpUUWIqWVh1JWl6a19QdFpIX2czZnxId0NPYjYyWmV5QUM/a0RKb0UwQG5Y
PXpGUmk9fV8pbmNRKEs5fkZafng4cQp6VStmSzh7TUZVcHp5NF80cGxSZFVPfFcxMWUoPnhgTX1G
R2RBdHErSSVrVkd6XihAX0V5WXlEbHB1fl9EIzVaRmUKelNGWEMwXz07eEd3ezYzSlMoaFk3Rl5C
X20+XzR7R0Y9M0lKXnB2KG1aaEt5Qy1sTEdJc3xIdVR4JWlYazUzU0BjCno5UUkreT1kUENqPlQp
PVNCY0ZMdnlDdnVBOGwqUnlvNzJUakpGKUk1QX48dSNLZFgrPzM2WmxwMypZTTU9bDVLegp6dUZH
PylLQWJNVDh5RUtTO3x5dSpTcig9NW93ZDNpODFCN2JeV1kxWXs5a1YkSiNCZElQO21mSjR7akZx
SyVfbmkKempYbkJWPlpuVFZ3KTw/Sl5sMThvXyQ5WElXPjQ8RENIQyRAP1EtOTw/TX1EdF96Nz81
QHdkTT9fbnFxLXA9PFZHCnomNTIwIWIhd1crbW08a1BCdzBUQzg3WTJ9PiVUVWghPjVOPjxPVzI8
M3lCMUNiRFl7QGsha0w/NWxueUc2dGpmdQp6e0B1M2BXVVgtOGhLcyMtRnE2eUplTjNNeyR3KX5h
bkJfY1hBZG1PMCZwTGJLZHxHPWJGNWhjempqZExrbUojZVYKel5+SnNramNtWG57Nj08PDkmZ3hC
KyZzcD8qKHh0PD5GT1djOSRLJjBqQSZufERBM2U8UVRkI2M0cUtGbUpHSUIqCnoyaj11UlJOQ2s3
Rj5ORnNKbi1qbV9gfHQ1ZU1mSFNTalhYaXxNOVB2SGwpPHMqNUFDZS1ZVntLcTlPeVVwIzlsKgp6
QzAxIXtGRmEjODNxe2BvOFkweWhmUlcoVHFIeX16KGh3MHNNRFJxSjZQVlJNYnw7VF84bGxPeFc3
dkV+RCQhdncKenE7Pm1pVTJSdUNvRCklMnYrVjdjX0pqPVdlenhfaSkqckVtNm4tKUt7KCFxQGFp
RD1ZS0dvWjd7YHIwKis0N1RiCnpPOHdefHEkMnBHTHF5bi09cGlFUE5ETEgyaFQ0N3kkOGV8K0Iw
fEMkRHUjJlEjTGYtT140RzJtTlpHYVBRfUlSKQp6ZTs4RXxEfnVvcCsxPl8jTkoxVCNlaG1PM1ZR
OEc1aEtLPG8haUd9fjVoM0EtZytZTHZrZGNWUjVEfDdIYSk8flgKek5teVhrXylQXkVNMjFBcGh+
Xi0xeD09aVAzR2A0RnN2cH45NytBeXI1Z31PKnQpP0l7KkFebHxBZXQrbDF8WDR5CnpHZ25TU0Jw
bzd4IS0pdlkzT2lpUmtaNDQpZDglVHhJMjZ1ZW9NQVNBTVV3WnBZNj5GcHdoJDQ1UU0/YyRMYylv
Ywp6T1dgY1dyJGE+OGFQJHhuOThQM2xtZzNxQ0JhMjJERXQ7bj9FfFNhUEdgP0NyQTVQO0VUWmpu
QnsxUEVWZ24rYX0KejM9dl5SbENCMk8kY3BHOEI1WEpZczdPPmBtY313U1U9RE1lP0tUeDMxYk4t
NUFFPClAYjVoYjU9UHY2Q05GMGUtCnpPOUxoPzRWYmh2VkE5R2Q1VUI7aE0yT1VhVX04bjhERy1f
RiN1N1FGUyV9MH0ofT43YmBvKzB2NUYkeTtuS1dSXgp6MWk/aCtNa1dvSUdTZXYjbk1uaHRPZlhG
NyY3bXc/M1BmZkhIIXFSK3ZLa1MmITJsJFphRjk7fXJoRlBPPCUze2kKeiFfaVk5RzlMc0puZCkx
PkZkLXRoMnE4cWBrKVdmdEtEdjJ7QnNGcUpISVBWPnhGUS1iNzE0bUgybX0pJHZkQlB6CnokWUw1
VzZAeV95TD43eDdNQjx6dkIxPkx4VUxyfTJKWS05VU5DT0JhZzAlcXo2RHRDT2k0YlkxaDdkX2El
NHh0PAp6NHUlTzRTdVVxUTxrNX0pM1h2eTtiY24yPTBhRkRIbT9+KCVSQX56I2xGV0B0OFpjRllW
TTBWIXJiQ0Z0O2gtOU0KenVCPl45QnVETTVWbWRfTDFpP2doO1l9SmEpekU7Y01oR0YyKVd7a1RP
ZTd+WVYzLWgqSEZeazw8ZndoXiVEK1A3CnpFamIrYD51QTdLTzlRNF84Wmd6MEF3JnxHWUg3ZSEz
eGJJcWkyKl8rN0N8LWdmI3R0SnE+aF5vQiteKDliVCQtVgp6KCVEZGVOb05Dc2k0OHt6Q3NKb2Ew
VmJVZDdeWG4zJlpaaGRxX0lZM3d7aVBkaTBxSURCK0B0d2I8VkRrVH1VYF4KejR4JUFLMTE5SEc4
WTdfcmxRUmU9dlVpQGRyOWgtaGFQdHlyeXc9d0JEZ19jclZDb05vaTZwSys0VmUxVmZUQDJUCnox
dFI7P2ZKcTMzM0Ryb1U1SklIIXNHYVF8LU1tQl51V1dSX1JYYCNNTyNVPXJAKDAxaGpzeWV+RF5m
fjxORCZRfgp6THx+V0Brcz5qS05PSUpFQCU0WCYkWTRHbEJGRUUhWCo+Oz4jP3lkbGQ9JipFQyh3
WHQwdklNbDxPRGVkQX00TmEKelVMd2crSkghPThCc3BxXyhTUnVvMVFSSzVWS2lWMD1SPTRqQk1H
TWdRI2M0RmJ8bVEjQkMkd1JWRGAraTx8VUZHCnp3SWhQKTVVSFI2bFkkMEpGKklPYGFmSntgV0Ah
dSFtfTA7JXAmQSpaciRBKXZtRjZYcSlYMFRXSXolU1pmSnM5Rwp6Q0poYWtHKGktSSlYOyFRMUJN
OV5zV0RJPkBAMzJCQzZkKDBXdk8oQ09ycnIpOFYjN3pYdXk7dmclQy1PbTEhV0QKek5URSN3IS1S
LVR0RU5DP3k0JH0oPGh5eDVCMSFoTVh+MntYZns3Z280VmJjMUF3JnxHdk96R2hCNEMmaGs/LTM9
Cnpoe1BqNz1hSzchbzBtdigpWHBtZjU9aiFMcnZhMG0yMjZTb09heUN2OSl3NiUxT3lYRll5bFcx
TH1ZO3dMTD8zYwp6NXhGKEdkNUkpUD9WVk0waCVCSzJRd2FeMk5AJjFUUVZKb0d6X2dEQk8jOHF2
QXRMdlFBdz1TRTxfMmMofEkxT2sKelc4SV9NUDU5TlJAOGZ4PUVBdWFfP3hjcmA5VCZfbHtvXkhF
X3hLU0BTfSpmSjh3ZCoybHxpY2BzUlR6czc/R1dLCnpsbTxwZXQwOCRPO2R9JGRoPGA8PE8tYlJi
TWRvNCE9YSFFRGBtfTdwLVZrQCEtUGJ+KkdDSk1jYGpnK1ZZWmlnTwp6Km1+Y1hlZH1QWmN6TitI
aG0reT1VOU9EVVlXUyZKUWV7SD1AV3Nva0Y3Rys7YElMO1YkOXR7NGE1bHBLJjZVZHEKem52RS1P
ZGskI3JkMipfPVh4R008Y2UmTHFkY0lFYTslXlZjWkR4ZzU/fClOZ3V8dCRHPkdoMH44SU8hNk1U
e0U9CnpjVy1kZF4pdUlleH4qRHg7fWZlPGxkYnlBNT9VT3dKNWUqX2dCQCRXXzhYOHJiPlFYTCZV
S3tecnJ1V2NucUNzZgp6VEBtJm11JkRnWHhgRH1+M05MVG48OFg2XypZS3pnaTgteiUrRyMoe1Vp
MEZtSHVKe342T2BPSTlZTF5LPGY+VFMKemB9PXp6VUFsQj88JDFpIWRQazRtWnVjJEwxbUd1QT9Y
T2YjK3huUjRUUD5hYiFqMmpOWmhJTComczFqfHopZlk1Cnp3JTBlS2FtI1lxZDBFQks2eHtyLSU/
SEl0Nz1oXn1nPFJ2eW0jQXxLdG5wZ3pmT2hHdyh7TUxfPU5uR0RiOCpXKQp6ZXNZZzR4V1NxNSFr
ZXVSO3VkZT1wb2d2ciUqc1MteEJrcV5HWihYbTZ5akRKTkFIKSRHbjt5Qy1ud0ZEaW5RcjYKej4r
NTY4SG4qK1JsPnstcG9LQ2xVLW5lTX1gYldsSWpARWA4eXBBakNEKztqMkVrfT5gKHtKR2gmKjlH
RTh9XyYqCno0RDAyeTRtYkZCRkkoXmd4SFlxUWJaOy0qdT0oayR0RGhRMGxRV0opOzYpdmV6azkr
TVRJNmt5VWs9fX42RFczSAp6SVc+NF4me3BwYFZYfTNsJWFFSDNGP1g/T2ArVGRqQmZjNFJZdCso
al4wc35Felc+SSNQOEoxUSM8WiFiJGhteUkKeiVCZ2hNbklYeDB6ZXI1R0lAeiY8P3p2bCRuT2tR
Sm8zO0pJI1FUUlFSYHhrRD4pIXAzRD5aI2V1YjtLemlgUSV+CnpgQEwtbmNnJisjUHkyVHRialdK
d3QlK1Jhb3MleUpFYz9DVHdFS2hKbGJJMGtfPEVqdD5AOzZrdmkqI0JfS0A8Mwp6UTVXeSQtd3pu
Sng2N3lFazc1Y2h0UDdnPlRCTzZUdCt0bXJUSDc4RF98MCpDQGNwWkAkREo+S1RoaHR0e05SKGgK
el9qWD1YYDM4M0FvJE5GPU0mRUg/PVc1NWt5WUlIYDlkVUVqYjRBfn43ayhUeUc8d1U1LVFTRX5j
PS02cjU3djA0CnpNLWByMGVgbTdxeUgwfiFqWHVaOFQpa15oeUVNeVZafVNCJWs+aCYwSXBiV2st
U0U9RFByUiZxe0Z2OShfMXcmawp6bFJVMyglMVBZJUxndDt9ditRem9fcGZ5TVFDWlNNWnh8YzB8
ODBIQjswfiF7M3RmKitkYXQ3K3xHe1A3aCZJWTIKejEpYVk/e2xTQF5GVFYzNnZBaktMQUhMZFop
S2BpVjJUJCZhWENtaWI5NTgwZXJycyZJJitnZDdtdUU5QU17QyNVCnpzbUpnI249NHRMe21rc1o0
b012emU5eD8xYUd9M00mSy1MMGc+SFZoM3Qjb3tmclJPN2VNQllHMmpGR2hYTk09ZQp6aCNPcHxo
bzN0Z3peISl1U0M2ZzY0YklPNmJHKF5lVHxZUT1fIT9laEB6dWdzTSNEMUFTMERIPTg/cDB1bjVN
Py0KemM+SnwqdCFHe3JrYT1meTFhNFYodFE+bStIQExqRno2eGo3MzhwIzsyamRwTV5AYHFhRnBI
Sz5tS0w3SkUmRzFMCnpINz5acFljKD9DM3IwTykpQXBHT2MjKEF7JDhxZyZnVWoxKzxiMWN5Ykdv
MCVhRjhDck9Fe1BHWEUrPj1xTWxDfgp6WnxkI3poZHlvPFZ8T29SZFJZSGo/JTlRN0AkO010VSo8
VW0qa2IrMD16QVklQ2lqPEZ5bD5VXytiUTI5Xk9IcyYKens9dmlUIWlXM0FTQigrQkIjWnFwPSFC
fl52eWJzK21fTSF8Zld2V29VVWg4fStUX1M0K0tTbyNlNlUrYFkrQVR5Cnp8Rk9tcXZ1YTRRMEdu
Tm5NbXwtfl5iPXp8eHE0alFyI2lLeilsfWkrWmNpZFg0VzdWUCRyKWpSXzY/KTtPIXUlUgp6WHZI
OGNXUFF+e3VkcWhPZ353Pj1QbjRTRzVjWVJVQkJYQEFKcWp9aF5DQlczVj0mX1puaXp2VXEycXRv
VkM9UEsKekhTYDIpM2NEUU0hREg1eXk8QEN+Wi0yT2FlTnZmVU5fYGxaX0tPI0FtezA+UzV+azRy
P0FnKF5wUH5FWkZDKCUxCnokZThmSGpRPHhAPFRaJE03dW9lTmAhN31tV2RCN0hZWGJJUElHa3lK
d2Z8fW9oRz1Lbk4ySXZNP1ZOKDxjKWc7QQp6K0UlWF9gR2ZnPmt1PGR3LSFGb1dVa21hNUJIX1Ml
endqPWVAaWdCckZvQ0g/MCFfZzFpKHFVdntROUZ2dXZVeVAKeiEhTUZwRzA1LT5WO3U1UyEhS0cw
bnQ7PDZuWDkyN3IhU0szbWc0azkhaHR6YHVfOW9uRkxXbU9SSHJYbTVXKzBKCnoydFAyM0ZPbi1k
N0dIY0M/cCZAQTVmVG99OylAa0E0VH4+aTFseCRrN2NDNElOb2phe1JsKG4rJnNvQiFBPnMtVgp6
QXY9RmI1SlpHYiVfWnNaY2JzI1U9eEstO0FSOylOKDhqJkp6I1FUVzZLdnwwTzNCbTxMPWdjJU9N
QGFVNFRgaTwKejNNZ3U2UHl7cGVCOWxUfTRNN3BfOWZWP0lyZTB0YUBmOFlvXlU0RSQ1PSR0YHEo
TTw4aCQ0MCpBY3xPI1IwPTQ8CnorYElAeUZnR3N9NCYyUVBxMWMkNDdjQ1N3KERAKVhDIVlwSWA3
fGlYciRKR0U5dDlOaCFMPG16X2lYfDtVZ1FBWAp6bjJpQDBNUklgTlEzYjR1V2J6aSNwcntCJDV2
YyUwRyQ8LTZnYGh9QVFmdiEzRVJ3XykzbjMheE5XQFNQUjIzV1oKej8qZ01wNCR6MUFiV2srVnB2
WFhqQV9FUEkzez87bTJ9UntKQ0BLZTJnaTAmU3hDYEApUDtBViYzeWRQRWlZSHleCnpwamJoSnE2
ISltUm5WWlFsMX5BfU4qV1laJUFvfWZwJEs+RUxNUyVvKmFiJEJSSz1AN2JXcHJXZ1FBLT5ENXt9
Qgp6UUg/N0VNUkhpSTBafkxzc3xpP2prKmU2M1JUbkszWiVLaERsQzs7K3Bye3JeNWdBRD40VEBA
bUFTZT13WVNTU0YKempUTztETUEpMWRBUj40cXM0NnoqKEZJMSljITFWJVEtTFROR3A0aGxLI3xV
ZDAhMkMtNUprcClyP1pobFAtSTB3Cno2dFJmflEtcj0mND5SWSY7ZS1ZQFlSJn5sKFJoSD9mbkIq
cyMrKyRUPFY9R2lYQnJmbGZHWmM5KmxJe1lCYTtIfAp6JTdzdkQlJDE4NGlvSHNLUmduYlNBNEN5
SmR3JmBmIVIpeCRhUGxCa2txdzZpTU03SCRpZXd+MEF3K34hI200Tm8KenokbFVmR313b1cxblVv
P2ghc2hOMDYtfTZyJExjX0RUUkBVWGl5e3FRLWx1Q0Zkcl8wVnEtcEJ2YHtuKzExXkglCnpjcDRP
cXIkTiM5RGhQQHNvQ3pSYFNQP09fcGRsMHwkZXwrVzBOdDFZN2NDU2AhK0RGT0omWG9MVktnV1Q9
VGtzMgp6b0NaYlZBY3t6MCFfejZDKnFITWNFZm1kYFRZcjJfOHZVcShke2JIJTt8ZjhNb0dRUjl3
K0tac0FjfE5LSnB+alMKenYpbHJzTlVvczRVUnh5WCR1dyRfMjJfajROSGpEayhnYWFKUTNJbGc0
Rl5PS0tAc00pZys8VC14LXFYVUZwQWB8CnojV1lOfE5YRjc9UD9TYzRxQkpRNTZ3XyE+bHhCYndH
JlpyLTVEYDJuNVE+ZU5ZPUtjRVJUMXAyTVNfTDdZbW98Jgp6NFdmdTAyQFEmfVF6QFhCT0BwRnJG
aCVJSDwkWVRTaWE0PGQjbTN5VnokbFdjMik1TkM2djFxQDJ0X2JrRW1uakUKek1meUFsaXRJPmVQ
KmViPjIlJVVZZ3JHPk9WcT47aXZgX141WCVRNG56KXk8K1AocCpFbDJRbllCcXRgfHIkdXRJCnpQ
WWd3SUk+MWxNZzdhTVcwWE8wZ0gyayVfbipeMkhtZ1M+R0BAKm5NVDk7K29yNXMrayorJEUzcWgr
P3lHVFVlIQp6IXYobS0qPVVfYzJhJGktTXIkKEtCbyFPMjZlTUpkSGRAJHslV1J8N0BPKns1IU9m
YjBJSkYlO3Y5NkltZjNfOSsKeig+dnFGUmc2ZnAqPVVfZGB3d2lSV2p2UzNGIyNLYEpSQS07ciFV
QXglWG1fciheNzEtTkkzbjM4NjlCfG55aWYkCno7U1hrYCNmcWVGTmA8OGZAI20rOWhfRTk4Kj1Q
fXdwfDstdl9je3Rec0V+JDs3JUYxSUhkLVh4PEk9Q2U7Vn1VbAp6RWpGQkwzZ0wpX0w0Y2Ypayho
dnU3QX5WXjg/N2RzI2pzflJGZEhwJClTN0VNdyNUcTBaMWt6OFFIJXBBcyRYLSgKeik4R2kyZlE9
VE80OSNZdmcrRm1YWE0hIW9NdkwkaDUzPG8+TWdIJD92YDhJezJpYShgQjY9eGNJXmRqYHh7VmVJ
Cnped2xjKGQtRmdXRWtlKXxSfmpQO2Z7Mml1ei0rV3c1azIlJTAjdWNrNyQ3MmVCPFNhRThjWCYr
bGJQKXs2KDEqZgp6LVJtQjJVYyYpQD5TZz5jME5oNTQwSEVibCptcWhRNnYxcT8qbD9zWSFsNk9Z
ZjUxa3xfKzA/RmpUVmBfbklNVy0KemtzdF5GZ3JaQ3U2bEpFOzd6d3gqcEBMPXRIZDs4YnM0Nnlf
alRTLUNHO0ZqOGl1cDdzZzR0KmhvPXcwO2l7dTFtCnpxZWE1bUI3X3tFMzV4Iz44IWVMZEF7dz0q
Qz1YSzUqcFpZezVHbDVXMClWUHdGXkQxKFBPJXN8NT55cU4lfD9xPAp6TVlFMDhwRlh9fi12QCUo
WHB2ZX1QSjwkdGpUUy1Ddn45Rz1XZWVDd2k9QDRSTWxDVns4IVp3fUJfQzIxU3JLcTgKekxSR08r
NGs+NV5NVk81aTdDfXw5Kj0pMihSV3VEN0V0MFhEUlRLYiMqPVB9cFQ4ZlBwTm88V0MhWlhlWkxl
Yj1ICnp2YERhWkckXlZDKWdtJklUMn40QCEpJncmJiRhMGcwTjhOQTZyc3t1WWstYWZwPWswcFRF
P15rWk0yTU8yaWo8ewp6QjArRXpmaV95fk5HTVJHdmpKMHRlJU44IUhkQDk1R343bXVwbEFYJVNf
QS1SREZqN1VCbyFqVT03YWBDJmVoT0AKemhFUm1yWHlJX3MmKXU1TU12SWA+Zl40KTFNSj5mZmkt
YVN6Z2BofCMxPFhiWmp8OEQ7QC18dXxTYnJMfCRlJV9uCnpeM1FgNUd5O0dMKmwzWiZpaThqcE5q
TllZRXJPIVMraH56cyRKM3l3clB5Y0BpZU5UY3RjVnpiQX1iPD9oITdOOwp6JXw/cUBCWTx0Uk5V
Jml2WUVmN3pnQFA3VjFyWl9QZyE1XkwoNFooQk9jNlIpZ3hQMmo2I3BBR1RCTmlwWGl5WGIKenFL
SiRuIyszcSFGZEhwMERQcSMwMXI0RFhxbGJ2I2spVShNfEF2aGdOeE95eU1IJiFBMVZ2MnsxciMr
akRBSXJfCnpMTVorPllfdGVQWCZ7UE41ZkRZSjIjNndyVnd4MCFBfWQwSnFCSH1mcHNeI1ZoS2l1
NypsYWRoPGpvd2dqVFFsKgp6clB5ZVplYi1XS3ZgOUdiK2RAI3B5Qk1MXlkmS2Z0dmMpdVB2PFN+
Ozg/OFVTQ1BjbT9xPVZVTGs7RTFWQXQrKj0KejVzSi1icWVXME80STM+b2N9cjN1aGVlWTFsMDFr
QUpDYWd9MnBJez9NdkR+elFOKVVmQXQrKnpYMGckVksqQlVeCnp3OCYwN04mfXl4SDFMN2hYcHdO
ZmZnWn5FUzdoM2g2d2NaQHZ5WWI5TjZZTV5XJWtpSmhKVFVSOyhXQnVwcmVTewp6TXs5JmQ0OVd4
YzxPPGU0KTd7Qkp4NHA7WmVYM0ppVDFeI0I/cEVLPWZHNi0oYXo8RX5xS31xOGlWdUNDdTFoKTgK
enkkWHhtZlFUM20mXmFkVHFqZHIyRGxuKFZxMCZEOCsmemVkWTQqfGolTFFVaS0pZXxeNi1qSkFU
Til4Sj43I3xPCnpFKWpufCkhU19USWUqNUJtejxYM3FzNHs7XjNmdDlDZzd0KkFSWT94KFpWOWw8
RC1TJl4rZn4qKzE+XmFOTWVOZgp6WHQ1JUMzaHFfbzNeWVZxaD5zUll0WEt8bF51aU8kbHpwXkZr
ZkhqcTBPS2lBSDlgIyM1cTJjaTVEX3ZHbjIjMUsKelYpb0hgYSVOJjVrPlZQK2F8JHt+ezxITyU2
eyYrVEExI3ZiSUt5bEpnb0t+Q1k2PkRJO0c7I3RpSStwJnRJKnwwCnolbEZZRDclcX5eaGM5VyFY
YWkmJGVhaWxWYF8oRz1vQVc+KUV3Yn1ySzNjM3U1Ukd1c0FAQV9CQmhrfGtGK2ZDYwp6cjlyPVVZ
Yz9NKDxDZyhpbDgrWUljUCsoN2l3eUAlNWh8PE5ZNnl5V0JuWlZjSGBkWl40cVp6KGc1cypZI2tw
eCsKemZld2YkKmkyVlE4NmohVXEqMDRuaWpOaks+dyk9Yms7Rz0lUWI1dDxlWThsaGA3fGlYbXJ+
JV8xYm5tek1mc3B3CnpMX3whJE1+aFUmWDdrWjllbEkwd00tYG9fU1ZWJiZuMiMyajZmaHF4MHpn
cUlXS3N+M1ZvKXQmTVRGM1RoS15ZPAp6QTEjOTdmNVMoTVAtTXVYMER1OFI1aiZEOTNMX344UUFB
S0k3Z0luSD94UXNgRnple1hyPUtlfWRQKTFfJjY9JGIKektYMlBoZXRtaztgRyF9PTlUTCFhWGkj
OHxYP1NSbmx2bUlvcn4qVX4hTyNSZXdBaGl6QXNDWHghYWNPbSQwPzBACnpYZ3dRNDNyPzhtZzV8
MSk0MDFnMTJnKFJTdXpNQj5eQ3BOTlJzX1RrNXJNZzlrekVnUyZ0Z1NyQEtjaXhmc2hARQp6OXg4
JCR7SHVGYlNIPXB4WCVMcD83TjwwJWE0Pj1KbVh5eDlWSTIqQVlXYX1FQVczK3dELURxI2h6T1l1
d0tWdnQKejFAblc+NFBtfW5JR3AmV2BEUXVRSjxoUmpOTEU4OFRhVmdOSjYoQyteYHEhYjZTdiZm
eXdja3plJFNjeDhTU1IxCnpNZGRES2VpSnJhJilDfGorcD9SIyNSdUUkZjgoVWo3STlldGA5ZUs2
bD4oZC1reWxnR3hhd1pBJUZiaU88QD1UYQp6d2Mranc/WT4hOF41VVhUKVl+I2VEPHwzSV4xWkN6
O3FBNFc4O0Z2REM3VldCbE96TD5CPkVBZTRGJT59akxWakIKejNJU2NWYTc5MzB3cl5lNUBKekJ9
LUp7I2o7KzhwYFl+PXJ9anpHZEExOWNzaztgIVImZT1EYXx5VnA3bVlHaDtXCnooSjFoKWNXeFJA
NFgyanpqRjxkWk5JR1g0ezVWc25TdnFHPiV8ZzRyVGJucUFBXz9WMjkrd20mTVVWQXY3U31rTwp6
IzM+dnUybWskWGBfbUomeFdWJilLWUJpYCNwN19nNHBiezgzKCgzP14jVyNfRDcjTj9MPUExWDtq
T2BUcDAtYDkKekczdlNlIU9STz9XbTJeWXdPbkwhbTZ9SykxKzI+X1Z8RlFzbGczS1dJemdQWVZl
SUg1WHsqK3BQRzImd2JkUW5CCnpsfCtNKzZmMmRuWlR2VWBKeShwRCM3cEhlK3thflJUeEAoYVlC
KGd0RnsxVHs/SjZ+e2JDRGAjeERVU0pefHB5aAp6eHhtPFY+N3I2YyUyQiZlckI8OyExb3ozNkJ0
X3g1aWZ7RWJuRlVyVUREMlV3aVNQTEttbWJFJl81U1RyaGhgSlUKejUyPXBlTjt3MVNFXnZDeEx5
dmtUS09tWGM9V15ZRmVnfWpvUXgtVH43TXhyRDVvUFVEeEUjeHZZYWB3a3UwWEd9CnpQbXJoKihC
bD8jRkdQMVZaWUpUVmlNTVduSn01eEBuIV4jR0lQaXxaSHpkVzM+Pit4JWh0fTdpKDJxcXVjXiFB
MQp6YVhzI2FgI0YldSo3JVdHaCNuQ3ZqSU1kVElYYEFUbjBmTH49U01xfEtUR19gT2UqNmVKSE8y
SDVhcSpNWFV1ZzUKeiZrd31HS2I+ZEtJKnlzPXA/Ukt9PiYqWkNgSlE8bW4mKTl0PUhjSVI7KTFT
c3FWTkYmLU93PXUtfEA4JmVyKSRWCnpUSzV1T1ZaN254Ul9IKDY8ZG1aT0J5PGxXX2k1LTZGQ1Io
blc2PmtOKjIyJCYkKD56U3wxcTVPc2xUallUaGZGKwp6a3hsMyRaOSpTPmpvV2JoNFdHfExlZWhM
bCF7em0jb0JOcGFRPWY8V1pCdF9kJiMkTk8lKWdHNzxNJTx2cHUzcGQKekB3fj9PYHRpKGRAVngj
eXdtcXs2ZVAlYkkmenZVb1kwN3ctUWc8VEl3d3t1Z0tnRGtEXkpmOz17bW5qX15KNjtzCnpuZX12
QGA5R29NPTZQOzlgXmh8SyU9PzBecEE4P0khYlc1Qis8WkwkfDkzbk9lUnxGUSg+Vnd9WitnfndO
PmxwYQp6NCtGNmR6SypNWkVteG1HJW9hVyR0aUtHbTlhUVFsMSR4OWNibHU0RExpZmwtc1QhWUsm
V0A4WWtFcUclUVU4TlUKd15rSnFfbDh9SHVKQTg2O2syUVkhKj9ZNUVmZCN1dENDclBsQ2BUK3dp
WEokflZ9T14zeDBsIWQwM00kLW1IKz8lCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJj
ZXMvbnBvdC12aWRlby5tcDQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvbnBvdC12aWRlby5tcDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI2M2EyYmJhODAz
YjFiN2ExYjQ3ODI5NzU4YjQ4ZWM5YjA3Mjc0MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDE0
MzAKemNtZUkqM3coQHN6UV4oM09lUWdqZ2I2YEojN3RJNTJ0clUmWChrZnU2NWAmWFgoZl4lVlRk
RmApbiVnVVRDRTxmCnptYTtCWWk/Jk1qczl0RFZzPGQ+ZXdwNnV9PlRSKnp1LSMmLSZHfGV0I0FH
X0piSGI5PnQ5JDxRQDszOSNHeFBpPgp6LXs9MihGOHw0N004ckowQFBXTFhmezhXfXk9ZDN5a1dy
TWAtaj4mfnlAKGhgPVZ4YiY2bnx7WCR8JlM5QCE5azMKelJ2OTwoTjwhSmpINDxHPTl4OF5HQkd3
XmQqamdmZWI3SlI8SzF7XiZ5aCNrSEJGUiZ7PkB2R3RqRHplbGNrPSFgCnpHMkpnWnpYNCtVQEhK
LTRWZm1CbnZZP1lUISFFaXlGJXNCZlhhNTZrbXJKdkxeKCpabiMjRm81SDtRa0Qka05TWQp6Jldq
fU43NEozY0w+QkI5fDQzYDhuMEpkbFhwTEFfN3R8NGI/TllKeTVxO3h9Ris5XzFtd0NaclR6WWEz
alQpVmUKeiN2a2dvKChTUzt7dWJWcWEzIUkxeVJKbTZtdD44RTQtV2QhRVhIPCg1b0RFbWhlWCVm
cEJISWgxeHlnVl9jMDVQCnp2eF5+c3RKbDl+TXQhcXtobDsrPDluOSNTQzU5eHNed0BDdno4OS1y
dyF+Q2lYOzRDVDJAKXlCQ3EoQTk4dU8wbQp6XmoweT01RkhDUT9LaVNlayhBP04yckg0NElhLUAk
WFBYeWVOVVhjKWVZaEd+OzYqU2NWd0Ara3NLLUdQPm5rIXAKelBtSGdtOWQlbjcyTSEjKT5BT25s
UGAtJlBeeHBQOyN7KGpyNjkhKnZgeUYwPW9EKTYpPX5wTkc1PzJAbCZIZ3N+CnpNfFM1ZHphWlY+
dHN3KVA2YUsrMjZMbXNlQ1FOM1JpRihhbENXMGJlQ0teViZPYSNaY09vVmlGbkYjSVRHNzs5egp6
V3h7TkFuRnZwSW5QfWUyV3VpcjJteDsmJEUpJVZXeEoqUDNiRDN6SGM2Q0MzN3NZMGxrazJkWFVk
b00+K00hbyEKemlPI25+T2J0WEE5VjdLYWBoRiFjJm8wSz95YHJtY20leWVhdGpqbEBNWClOTCU0
fXFwP29Xc3pjOGlzMjViQEg3CnpyYn5EflpIfTRwY3w7N294NzVGb1UtZEd4UztnI35Te0dhKz0y
b0h+V3xpaD1tUzNTdW9mcUJNTlZ8bVJpPGg1Pwp6RTwkSTFtfko7bEUyYE8tb0Z6V3ZBa1E/SiNq
O1FJJjl4cTgoVGsoZXtzc004eD9sUj0lRGMhWVN9VFJTOUhzRUMKendqRSo8VjFBaEcmfn5meisy
ZHVHVm0zRVR4Tj5aViUlYnorO2NYcTtxNWFPRC0lcn5QRWY8fXNSMDRCJDl2a08mCnpjX2c5MkpD
RSRAbWlVUTJMZDNGZ2RBVkp6T1ReSTNEdjJWNzR0Zj8hZEgqRTNUM2UtRm5ic3ktOD9EVjVUMlps
JAp6RThaIV9Na2gtTUNQd3NANSh6KHxaTEkyeHYpbWhYYllDMCFnK0pjeFU2LTctcU48SGVQSWFw
LU1wY2A4bUEzUiQKenJtRVZpWlp6YD9Sa2RCO0p5KW1OdjsjPyNgMFN8SV5KfmFMKFo4M1Y8NDdr
QDRCbDJyQGZYOXNyQ3NifERIVk9sCnpIald9byNuM1pQK3ZTTEpteTxTNmJsIzw2ZFFOb3lYT31S
OyU4b0ZZMTNZYnBrPmo0enFOX0o8JkswLWd5VmRoNQp6TzFGNCVyMVFOUHtwXztMQikpTVFYMGVD
cFd8YXxzOUd8VlUlUkFhSigpRUshYnxJQlZtRCk0ZW9OR3N7QCFJQ1IKekB+SEJyNH5WTXdMP1dz
a3F3Uk8+K0oyfEt3JTZEOHgwWWxNMH1lflF0dEdyanRNZnFhSzVnR2wwTT9VWXNPe002CnpjV359
emolcVZuU1M3aU83KURJIWJpKGEmeF5CaFdYJmhhNm1GeE5HdFlSRnNWWSpwTiZEb0oxN0wlMmo/
ZDw2ZQp6aSghe3Q2Mz5aWXI8RkQ8NDwxU0VgY1dtcFIzMUY7YVhHNUltNTFBUnNhOyM7djJiO1pF
bDNyY2A+QmtsR1p8SEUKelpYMzsyc0BRSVAmbGFxVE8lKz59TGFPSDJrfTk/dkZTYnhzWV52Qil2
MFgybUBZXl5aWCV5WHlaPFNaZlUxeWhWCnpmNilmcVIqRnRISzxlIWdVSGtSZzgyNDAkcDxsMntV
PkRIXnA0ODV6Tn1MMW4rOEI0QFI1MyhaQmBIb0Q8MkgkTgp6bXs2UDFvemIle0M2Y19ORVd2Jkpw
eyhMa1lrUjMhO3pYfXNCTjF+JXBTbyFeMUQ8dEYocmBBVGRAYW9xdikwUlgKejIkRDA5JUNYNTNv
PkA1cnNXb2M4SXlRTUxON182TChOJmFKJXMhfXtQP2MmWVJEQjA/SG1qWFQ4VjhEYGJRSHIyCnor
UGV9MjsxfnxuUEZuU3h3QkVzJDw3fkZDLTh1TXZre1B+QkIoUlI/OGF9aFFYaCtxeyZPSF83X3Zt
PVg7RUpxfgp6QEJ5TF4tbjUkR2VxV0txQUh+NEpsZ3ltTGJyZkJAYlRLX0J5MCtTJlpSSFQ7OT55
WG8kMGlBO2F0S2x6dzU9U1EKenlwPCFnYzZIS3JMbm0kOD0pYlMzSG4pS2BqfDFZVytUNkZBe1or
TUgteWM/SWgoeFA0S1VIbjIrTnhIUHIjQy01Cno+PWFlQy1GVVV0UkBKN2VPO3d4QVorX2cpXkVR
N35aS35RLXdiZjl5MSptRk0pdXlWZ2hOX002RipQUHh3Y2I0YQp6K01wVUdzYWxhT1RkR2tLbWtP
PSFDYG55YVpCPVY2VXlWdDY3IXZWdG1sYEZ4QGxnXiEjaTJmSlF7fk93bTdhYzsKekxWZW9pSEBe
WjxEKGNmVipGRz4qLUY9JXVlWVVNP3QqdW5tUj1yPStSQEhWQmAhPjdVeDREJkArUEFzeSQyQC1D
CnpSOGB3ZVI5bEl2SGRTcF4lRkVMU0FVeTJ1UkpHbEJ3UngtYUhuKENeTjBKXiYlZm5yJitIUnVT
KU9uayN3a28/ZQp6a0I1el8rVzE9dHxOaEAzQG1BKztzQGhid3h4OUNGSkFaU19UYjtNNVlFI3Uj
TClHU14mZjhTQXNjTmdLWUUkUUoKenNAaGJ3KWx7e3FeRU9wJnNAaUkqK1NHWlFzeTA8XkhCQGMy
KU9uayNIZFNwa1JjLTNMTzt3dyF3d2tJb2I+NjBgCnpPO3VZPlJodjMqUWBNJWJ0cD0oc2Z4byVN
QTNqdUhhUHluYkM0MmJycjI1Sll3QD0td3VpUzdjKGR2QV8lfjVWOQp6UmNgTHByb1Eza2Y/SHtN
ezZNPzxoTU9Ednk8fHRac2pxTUl1cSpSJG0pZzZ6bTd2PFktT1MhaWVTZSNXK1ZYSWgKekRtUFZi
fEs4XlM5RDZzYkkrIz1rbFR8Q3AoO3B1NUBjanR0VkRjc29DSV9mO1F7fEAwJkU+JUdjNzUpfnYz
RTtYCno8KStIKktlT0MpZWo/M0kqZHxVYTV8UXo/cU9uPEElaytxP2JgOVNZfEdtaU0wP349fkBB
ez82MWI0ZWxUZHpPVAp6KD1DU2pvN0YxSiZsdHpkdzhDK1lIdFN3Kl5WLXNBKlp0encmYjNFZ2R6
aDZReCl9YzM+YlIkUWMyPVJiakxfYHkKejElLX0jOUl3PXxUJUdmfFZZNiZtSVRfM3wrcF5xJGJf
d0k+cFdFTykkMX5mRSVeSUo3YnMxOFdsYStuI3dzdzZ0CnooLVY3VE92b0NhdHZ4MkpsYFV0Jlhs
P2AqKiZHWFhlYzg+a29ieTduXjBUJGFYY3VrMXxLJEFmWDZObXVYOUB+Twp6anB6MT9nMkRwRjNV
U15xM3AwdWArakNwSHhHdkxxTStgcjlGSyVrSSVXb2R4eXhabWY7RUQ+U0k8bkx4VUg4KFUKemla
Vz9Ccm5eMDgqPGsmc3BZLWQ0Z0J1Zm93aXF3endyWHduNFIpT3YjdmFIViNCK2lSM0xWakUzKTNE
aipMZmApCnpkQnhYT1RaXm1ydUB1bz5iI0crZzBYJlhQY3BJUExKZDVFQXQ4XkIwI1gjaHM3fFhF
QDJUK0V+QktrbD9BclpxZAp6MkA5fG11aSomKCVJbmdoRzF7WHlHVmxRSDEhc0RHe2hfQDZPeStB
QnA2allrSDFubzg8fmFWLWVyQnpHMzI7JXoKejwra2huSCtmc25fbzRsK213JnRTUU9tRXxLaXZB
K0A0bzsxLXV1Nkx7aT1WdSludHxKYFRzRmIpdnckQiZuKypOCnprSUxzcD5kRjFGc3tqMGxfbiMh
VXBZSyo1cFI0OG5AQjg9dmtOTk55QUx+Ukc2bFBBTz97UlVROCM1XjNJN2dreQp6XiYmaXQ0Y0x3
bjlLczJGaGFZKGs9Ym0ybFJqKCQ5TD8+YDg+RDM9OyROQHQoVUpxZGpSKjg2QCFafTxQQCRvP3IK
ekVORns2IU1LM1dQPmNldiYxWDZ8WFpCZiFYVGhMfSZufj09V0IzfjlAdkJJIStXWk9tZWkocjxV
XnZCaEhYZyVECnpZe0N4ZyFDYCFYR3FAPD9YRnduclBWc0F2RjZhVHE1JlRBaWtxJHIzJF5CbWtn
RHc2YXFZUXQ/Nn1wISU4c1pOaQp6JEFFYkIhOThHZkJ3IU5BSEdvX0wkVGk/T3lvfFNTNVREXiZ6
RS07PkkpWmFYUSEyPk9NMjtxTUc/QWw7OThLaEMKeitLZ0FSN2YwfFYmVnNrOTAkSTAjXzBTQl89
ISFwTHV0QHpVdW9oZUoxYGdtO29KS2kqVkwtP2FqbkV3SmFUaWlCCno0QjUhWEVJZmtjcHBPTDZN
fXBgaGpkWSstR0A/JjVxRTlzSGozZi1lZWFPV1clKSNVTTZRMExUeW8tLTszZz5Xewp6QXJTZ1Zh
REFCM2hUcCFXUGxWN1hMS2F7ZCk/KnVYO3t6UFdIQEpXYmt0WTZWajI0SzY3NChyTl5wUGc/a3RY
eiEKekNkR0laJnhrYnIwJXZmTTVpJGVuZmdIb2dGe35AZEZebjk7KHFZM2klbWNaR2shdSphaExM
TzdldGQkaktwelJDCnprMklyP1NqZj5yanV2dlg8aW4xfFNiO3l8Nn0qaVBAajFUN0tTamR6c0Vi
ZlVmbjNBTW0yWG0pYUI+WU4qS2wlZQp6e3U9aC1DYCQxSWVpbiVecTU7Q3U0JkJmamNPdyZkbjFP
fE8zZ2o5PXRgWCFLTDlQK3g4YlBqK152fXFTTkpKe3EKemtiQCNUZ2U2I28mM0Z9aWFSZ3VERUd+
JmVkNHBWfCRUZjt3cXNUUmlUJSpYZl5eO2hLbSsmVXUkMSF9M15ZflJICnp4O0JDbGZldUpPVWt0
fSs2bzZjIyR1Kmk+cXNjWHpUJSphZ29ma31LaWROYD85dkZtPzc+QEBxN2ZaMVFGWERCKQp6aG1U
UFBhJjFTaEcyfExVdH0pfnFMI2BiclZJfiZnWD43b0RsOzk5Zjs1KzslNjAxV1VHKGpYZnAqI0E2
VHd9PksKem1Sd2BXSElgZ3MkK2dvZG9Xb18yJk9RaSYxI05MQmRTTkk9VklybnUwaFp4ZVl7ZjIr
WWlEeHBPczx7RHdLS1dpCnpMOVNpPFZGYnBZNVZQP1pSJD4hJlU9SSVDMyFLNDRrdkliYTVyKTx2
KkVuKkdCaUFAYGpVKDRNYV8jbThfVHYrTAp6Zz53OE42N1BwYlhwWil7M24+X2VZfio3Vzk+SD51
WWRwRWVsV1JQPSMqPUcyeG11JnA4QSV2YGAhTm52QGk2YGkKenRNTEx9ISMqNUVEZ0s2a2k2cXRu
eGg5ZnBCRHA0I1lhK1FPbDU1Z2FTZFZTa2pmNDBNLXtLITQkJHxpY3BkfnNZCno1dmpOclY9KT16
bm9PP0E8ZUUmYiQ+Zj8kdTA2ZGA1NnV2YklQfUMyV01CZHcjQyR4N2IkQUpIO3M4RnlYXj9BQQp6
YV92UX55fndvfXglTUwwSl9XRjJGOy13Qnt1fVMkRkYxKzY7d088NUZQUDkydCNBa1UwYUZIb1R2
TnozZzxNbX0KekhIQlBMJGhCVj9lISRObnNZVyEhOX10NmhedWF5SSFYKFZaQjBQPWZAR3s7NHh1
JWs5RCFIYlRZa3pYPlBwJCpHCnpGKSQ0fEQ4ZHsoano4Z2Y/OExrSDImWnJrbXFpQm9wZ3pvSzE5
QlppdTdrKlI1VjtOXypGb2V1V0ViQVlGP0B7Kwp6czFPPElrSCU8JFNYant5QlFPU3FEOHszQjJJ
TS1GVCEpaERQO3duZ3UwelJuU1pqMWE0LTcmJlk/eXw1Y21pdiYKejEjZShLS0VZU2BKRmJXZl9Y
VzhRQyllVFJJLUZkR2xrMEdEeT5+ZV9VXmAwaUF3SXxWXyRUalY9fXtNPGgoYyMxCnpWRjJ6IUV+
YkU3KTV0WkFUK18la2phPHtuYiEwNkIhR2dCdmhUZ2F2bmFJTm9FV31lLWs4UmtFNHsjamNmTHVx
Qwp6WWRYMjZsV1JKO3JqelRhJChXN0R1bzljYEQpITxDelFrRXY2M08mTkp2MmkheTVmJSo0MDZw
UipHektGQi1jIUcKeiVfUF9DKDxzTDtCQlQ4Zmowa2k8MHtVViZNeHl8QkVYRTRfOEwhfU5rbjNv
MjlaanlJJCNvMzVqdj8yYWZ3Jip6CnpGY292TDZsP0d6VWRNYSo3LWplWUthMW9WKEUjQ1MyWGY2
TipJYVZWQ0QmWVglX1owSUJ7K2w9X3p0dmZxaXF7KQp6K2dQVkkpflN0a1lEKXNeKVckbHM8JGBy
O1cxWlNxciM5QjlqZGcwPDNEJjlZQmI+ckhrdiFWWXF3UEd9JlpGKFQKekVLSV5vRVcqPXg0bG07
XjlLPmglN1hKfDhwKXg0fEEhdno/TkpKe2A2KUIrWTBAXk8xP0U9fl5JRXFzSTRnVjQ7Cnp0YzQo
MEs+c1NkNlRMN0xxYzlRRXU+aX5QRVZnMTctV1FvZCtmIShKM1Q7b0o/SjM+U0E4RSl6NWd4KTR0
aW9vewp6em95Vz9yWDBiU0lFemFuUUB1Z3xubzlxZzhWJmxfR31AajwrdFgtIThme1A4aFRacjgk
TUZwPXBoRHo5ZT42cjUKeiNLTVl4Nz1iWTtMQF4lNEd1UzlIZ1NLYlRfRHRISU4hdjVjWG9FUVAj
MUxkKTB2XlBDSmMpSTkzMikqNktFLUwyCno7fT8teGVyUDA4T3h3a0BUfTwxPnZ8YW9kUiQ+ISZV
PUklQzMhSzQ0Ul9Nc2RTJXRKSV90PiU+Klc0Nn4+cyFzZAp1SilOSkNtcDVMVWFxWkc3JE43R0Nf
QD1eJXRUWU05JTVYZWNyIyt4PU0kemFfdjI4b0lqcmt3PiU0R2NqCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvbnBvdC12aWRlby50aGVvcmEub2d2IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL25wb3QtdmlkZW8udGhlb3Jh
Lm9ndgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NDU4Njc4ZmJmZDgxOTk3ZWU1ZWZmNTRmOGI1ZTdmYmQ4NTUyNjRh
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyNDYzMAp6Y21lSTRjfDRSfHxIbG9vJWgobFJuNmVn
d0VKYiNNKDlCcHVwfXw8dkZxU00pY0crNXArQGZTalFyc3ktQz0/PH4KelQyeFl6dHh9WGtjUFk9
Z1c+bk10Kz5jKHI9bFNkUmEoIVJweVBma251OS17aypFeUcwd3QwRzVHY1luTitGRXtFCno7JXVT
amdWNkt2NCloYHMtNUhwXjR9PHVVelc5ZmxaWXNtSlUpRU4zcW04WCYkdF58NU0rSkcyYH5yd2Zq
MGdzUAp6MjJLV3FHNlRhIT5iTi1ZMng+PDR3O0hMZCg0QGRhUnxwTlR6TWs8JTtKXzhTYHVVTz02
aFF9Q0FHJGJiMG14e0oKeihETHR8MXRmLWt6Q2s0NHAhR0lrNncpVGlVfmhNbHBBemsyeEgqM1BV
ZUpvckQlO2shUHBeeiFwdEdhVkc9JX5mCnp3ZkNsWVpQKnN6RFk/aG5tRFpLU1lge3BXQ0BYNnpZ
cFNTNyVHIUFDNGZHfUxhVk4/X3BSK1hoR1BXfEBXQEpwegp6QCRldjFOUy1QKilxM1IoRChWVj4h
TSslRUVmcUVCVTA4M2tCXlZtSllfbTRpdz5IKCRCQl5NKXhvY2AqR199LS0Kem5pfDl5bihTSmE+
fEFZXms0Vil5R2puOE0/aWVQT2tXcXdVIT0kPCo8NHxtUlU+VGI2bEZPfDwoe0loJkB5Jjs3Cno/
YnRJV3xJekVialYhKyQrN2JDSk9lXlAqaGMkY1hDMG5eO04kOGtXWSFUWFA0em0+TU43ZFdPMyRR
YzBxQ2k4OAp6RH1re3xGSHV1YXNERCZGT3p9dHlRSz5DOXYlMV4kUHJLd1FnSl9qPjw5d2QrVzcj
ISpCO35BPndTO1dWYldfeVAKemdFeUtVNGVuTUc7Y1JpdSpFP3o9ZyM/WXBUZX1ubSprWXNnRjI0
STt0K0RZdk4/I3YkPWd0cj4zWGoodDkwVm1FCnpqfmhicFZuRDxyY3A7Qytxb0BAZ1BwaGFjcyQq
IVpLPEtBY0d5KiplLV8mJCp1b3Nqfk9ecmhjNDYmbE93fX1ANgp6cy1kQT97cGdDT1VKIXU/MFZL
ZW56O0gxaTVmaUk9cj9HSmVRJkBPfDBgeEpsOFAtdWx5dV5ET19jOUhrVCY7XnQKemBodDM2UkQp
SXM5VGRERnomc2lwbDlnWistIWQhMVZpSnRgVWshIUFye3gxZj1AWCVsazAoO2dlNDN9V21VTyUq
Cno7PFNOKmZqJnc8TWhjMz03KE5nVF5yeFpmX29tTl9pa1ZlY1NJNDA2TWVDcCNVNj1yWnkyPWJ4
e29YSj9ANUZ6WAp6cH0rXj1BRHZkUTdAQkJSUSFsaiU/aURsIUxob1cycUUkbWYpRiF4cnl1N15u
e2B0KWFUM3wjYERAR3xpKU1TKCoKejtBdyQ/ciZhXyk4cV8yWihoQyt0Sl8zUXprOFdtK3JpSXdX
eilXcSVHQllFPDd6b1M9VDN9KE1SeEU2YmZzRy07CnpkMXVnbT1ZY282TzYzPDxkJm9xQGkjOSNy
NC1lPXh6SXNAckB4VW1iUUExTmpgc1c3KHdhKVVFTXsoQDhuJT1JbAp6JG0lOW1vIyMkMUNEZVpq
O2M0SFQ9JC1BOVFvKmQwaER8dCsrdjhxO0FZanNVSkdMQFJoSkRWflI2bHZfOTA9dkQKekZ7JkFO
V0JhdXlZRWd8SGVRdGlheTI8YkFgOTU1a21zd0xSLWFBZShZR3IpZz1WNldXeHdkTE8zT2dJVVB2
Q3Q7CnpYUHZhKEJyWTYjRzlaVD5hJmh8I2BCYilSPSFGI0gzanNWZU13QGU3Q1E7c15UckhXV0hM
VDE+YUMzZn0obSZjewp6dlZHOUIlRG5Kc2dHTXMxUSo9PnVgLV84aGQhSH0zd0B5RWpXNCt2MUlr
RVkkcU1hTDBSTDViSExxPlBvc319QmAKenNlTFNGQTBaKmJlN0MoYWJwND59Pno2YHklI0xwRG5h
fmg+blJ4dmhtaXh2Rk9wcEhCJnQ0biU9SlNxU1d0NFR0CnpFclZKUlZeJmtQcmN2bUo2OVd4YT4j
fXhwY1Y4eSotUGhuJDtNUSNzI356QFJyZjAwXko/VmI0Jj9QPUlyTT4tMwp6S2xXcnpBbzhJOTxR
fER2V01mJmphIVNqRGdLXzImdzlBdGFsPX1Wc2YyN3tYKlp1NVh5KmUydTlwflYxXn19MVUKenU+
PHthTXp0NFRJPWF0VWFzS2ZzdCFKK3dMR2dsJT9FYX4hey1sTTYjaTFyck1AY3NYMktxTl96OEFX
U2JIYnF7Cno+YjFDTiNNT0smZyZuNT9mKWkmbGpxWU9xRG1MTEM2WWVmPUpvdz9QS1JKMik0IyNl
OUZVcUtocjl3YVkhX0hLVgp6JmVnUkV2JlMrWXdHSylAblBjXjVec0wrfWJKRklscz80NEIjMlRL
Pj5LeUI0OWkpNz8tO09KXmM8ZFV6enQ2cDkKejtZamoxJDdZN2x2JiNHPDEzdnY1YSs/KikwdWUo
QnUxTzgpSS1DeUloaXMqP1p1KUpXS2lUU35DXit5bVlQU1UkCnpkI1JuQEQjYng3dUp2PWdPPXw2
P1p2SmBTbUFyOCsrKlB3cW49NzEoTTY8ZzIhaHxIKTxPd0VJb1FBVjwrR1REQAp6WjVzKjwxMVgp
V2FaZy00dkp9MXYpYTFIJDZgPFlZPyFHTisoPlZFTUBiaVBybV8qOGdlLV9TMHpHJC0tYDxaQEEK
enVkJChBam05bU5eQj17Vz9DcndoLWdaX0Q1fk9oNCNhUncmQHNVezgrUih9eSpSWHZHNypCfjJf
RE1nU2dPaG0oCnpgPW01O1M1PW1vTl88bn53VXpPIWhXZWkkd3M4SDF1JDdVcl9gX3w0V3M9OVdh
X19Xb1V9NldOYG0qPGlrbipvMgp6KkhUbHZoUChoKW88aXtyVXJDPEUpND9PZUxeYmstI35wPlRA
aXRjd0lWU3oxc2FOKjFHYVpiN0JWaFJ7eHk1XykKekNkYipKaCh2azk7NjlBIz8pS3MhVnF+eXJ6
Rm4yaE98UHJzVFAxVEFZRlQrVUtHaGtNTDBndDJ1PFQ4ZHZyUCokCnpKV0V1JjZmUUNUJFdhM00q
QTNDbUU0ckpwZjJ5Vl4/RFRxdFQka21vUV48SENiK0ZSJDhxPkpNbTBXSENLRUNRNAp6bXgkJjt0
Wj5BcjFJZ1V9QD9OJXgrWj90TVJ9JkN7Oy1ZO0gtbDJUTzxPP1VUY2B9RTRicVhrLVUpemRaOylZ
dE0KelRFRCN1UEJKO0xoUz5hc1c2Oy0pPmppN2lVKUghUHVIbm81RU4qNXdLOG8zIXUzYygqQ01H
aE50a1hLT1AoSGZDCnpTa2hobmZ2VXg1e14yIU9sUH0lVzZfP2dZcEEkTkNyJWJxSG0wSVZNbyVX
V3hVVkBMVGFWZiordj9TOE0xbz4kUwp6NTtrM3I4eHh0e1FpJj9PZXV0fTxyTjc4PkwpeiNvNjZ1
KyorYHh6VT5qKXYtUSQpd1JxbX5OZnBsKXI2SXlaZmkKemBfI1M/IVk1WiNeIz0tT21wYy03KWEt
cUVmVmYmPWUqM1B4JT0yfm54TXlkU1MkenJ5dWJoM0J4VjQ/RHRJR1dECnpvPER7YjQkOXAoeG0z
fCRqKGYqRGdMWkM4S348a1M7aT5la1FPb0xUJT03YzE2fmI7RXd3aD1xXkc1UXlqNHN2SQp6az1h
Q2lBajhNJEJZayF6USlPK0xhemJDRl5HdU4hRX5FK3tRfU5EV0JLeX5VRF9DPU9EXkBoSSt1Jjc3
PVBGbjQKejlKMUd5JEFXcjxPX01GJlcoJUw8Wig3YV45M2lSfG1hc3BmTH11THhQaiZkPHUqPUJR
eXIxa2diLVZBcmR7TkVxCno+eHwwSzgjfF9FPE1Rc24jNnZFT2VsMG9xUiM+akJzZm5xJXc8PFpY
VWB+O09gWTsmV3E0WlkjVzl5NlgzKT5rdQp6RnhPfTE4O2tSSVBhen5iP3xTcyNLRiV2Vyo8N2kj
UHhGZ14/VlgkTG18fThPclV8PGV3Jk8lMSZ6MWBwXlI4U0cKemRLVzFtP1hSN3VtMUspJStaSWBR
c3AyYGxoSiVVaHB3PVZBdVhLRWhXcTQqSDhweEZNazg1PEh5O2cxYGVkYTRRCnorUDEhb188U2NE
cEpxbVVgQF5yM3dxXylFZ1RTSGNRVzU4eCtkfG8yUkJ5WW5JPT9xUitaUGlCLUhEPVo/Sig0fQp6
NXVUP1BOeXhuMGZ8R0xSbT01Qk9ASzJYRnh+ekc9OT1GU010djlCK2J+TSVVUz4zIWZaZmV9RlFB
YXVAR3hMPE0KeiFGKz0+aSFfPEUmaW1BTXtAejloMlZ2Wn42NnVKVmRYPzxyZkowU24+fCRqRk9r
S344ajg4PSE+Y0hPblQkKjxNCnpDXjkzMnc8V29HPGF9IyhfNUVmS2B2cEohZGdxdmozbjZYc25L
OENFNmRnVXRyNT9nUFNoLUQtU2RMUDJkYHtoSwp6RE1xWjJWQ2BEWVZxKVlsKmBtVGJ1UzJNMz0q
Pm4hTFI2fVF7cVRZSW9rPHkxPG5zIyZfTFpHaWAtREhmOyVgU0cKendXfT1reHd8N31sK3BhKSRK
WmdDdCZVQGtMKXRqOWQoRk87KlI0I3N0RHNBKVgjUEBhJkc1ZGJJazlZQHFPRyloCnpJTDtjK2JF
Znsybz1IQVI3V2AwSHRSbyRvXk9jeHVOcEFuUDdpb2V4ekZybWxCaktGUG5wcF9BUkpEO1VCSSty
aAp6dX19a0xxVCpHJSFNKHA/c1RWJmMtMUY/RXlqPHZ1PThlQVReWUg/KXEzeCl8RDlSPS1pZjd1
TWlBanIzNTN5ZVkKejNhQFdmMiRMXjBkN29+YCVQPCV1R1QwO2FffkFoSWB8PX5ScXUydy0/V1Mj
UTRoXkZkcSE1aVNGLUBuOEZhS0dxCnpJX3hDencmVTx1I2o9c29iQWtqKVVJfktsb3k5Iz5HTzVF
dik5Xih7T1p+TU9yXmptfkNPTz5fJk01Nz9lJWZJdAp6WWZnTVNtcT09e2NYc3VxPWVuJHNRWklT
TiQyKThsRkclMnAlWkJ0UXJwXzdRT2AydTkjWGx8RmFtVEAtPEtld2UKekNQT21odWFYOHEyUXJr
aWsxS1NrbEZSTko2JkQ9NDYrSlQoSmUrNHhDbXJSeFVVIXgySnJ4aCg5R3s+REdqMFFjCnpaRmJ3
dWk8clgxNSEwa090NGcyM3VjO0t6alFUb0NWYVk5SUEpNEt8P196em4oZkVHZCZuPiYyWX1XPV9v
ditodAp6WjhEZCpkKGB0MV5ZPGVMYlQpJklJQUwyNlZGPXBra0hLem41SVJkaVY/dGEkJDM+eCYp
Y2Z6TVUhJSV7SCFrNSoKemA9PVZfdUZYQ0JeOEJBdXt3YXhZbShWWiRVKXF8cD1aXmVvelVCUWF3
P3J0a3E4e3RZZXghMihYVkZJNGlIcUY+Cnp7RXZ4RHAlJVdpRCgrPXViMz8tNkk8QVIyTWFjbFcj
ZkZndCNkcH1hO18qWWAwTDg3MU1KTHhTUiRMU0ZXPmAkKgp6ZWJXKDdrLUBnWlQ7WkIrRVpQKmUk
RX0pfTthS3IqT3ckb0RreS0hNFQlbSgpRThXV2lvTEFRMGN7Zl4reWpyJGcKelpLcWQ0T3xPMztE
VU4mVztIbW9GdSEwWVVKJnY7WjE8QXc0dCUqS3xnamNLRT5way1kbzlHZmdwYEBuJHVeXmR+Cnor
TE5VQWMpSSNlT0deNWI/cV47aE0ramlLb2JyLXdSbHIlbnpURTlqeGU4XlA8I24zZDlzUWt4RGRt
K2Z1SEgpKAp6TDckTiVid292SFppIUNkNUA5R2B4Nj92VFBwPkIxQUcwTjkjbU1kVXRZYj4rQnpJ
Y1dgPlJTeWRVb2VKJm9zUCoKeiskJkdjWElUeVdEWm5XWGgyTmJrQENXV3B1Rl5pfDg3ciM4eE11
Jms0ayk2Y1BsQTtkP1cxclpZdWZ5dWg5P0FBCnpZaiYlcXBLUzlWMnlxX0QmRkVINTlYVDZOdSk+
SFZRT1NxVlQxemhYYmhKTEJFaHEoJUB7JGNMJTxNS3VTeEtCOwp6Q1ozVHQkc2RkfGJGY3tAKlZe
Y25NOWFyOG0kR2R7b3dxQn1AT0BmRzVhM3dCQnhhdEVFQWMmeihtVEJjQiQyNEUKelUqYHtBMFg4
a0xkIXdrQmQ3MGgkYVF4OWllNGdFVCtwR1R2aXt9dUsjcE42UEYwXjRmMUk3T0NHO0cqcWA3b1Yo
Cno4T0BuOUshIXR+SHElUndVaStXUnkkX3doRTN5WiZtSVluTnY/Q1U2dzspSG5LfGJ6JWlIJHN6
eT90X0omKlJHOwp6aSh6NiVgMkhObEgqYk54MHJvUyNjPn5WIzs4M3BAJjFqVWdHTWJTJmk0U2Q+
Q2RKSCNMPm5kWHh3anZjR0Q9YyQKelolR2tTdzZBZGVVSEkkNmN1KEd6aH5JPT5hNE1xT3MhbyVA
KztPZSQ/QHBLY2B+JWNeUTFocmhHWk1WOyNzWVhGCnowcFJWUGtnTEI7VThESTlIOHNDRkgjYjlJ
Wm9xeTxIX3dwWiR0ZV9AeHBqI0ZVcTx5NGFeKmNzYj98eVpSPWEwZQp6e2d7eFBWTi1CTVExK2Ek
eGpnPkFGUih4RnJlY1NPd011cUlYRTYhO0dnWHojdylvTmk9T1hqeGBfe1U1N1FDIVoKelpWR3h1
QUh3Uyh0NypsZ3hge3hhKEpKN15KZTswVnpsO1Mzezk2UkBTZ3t9OHpiRmsyeV5fJUI+QmVYP0di
dXxPCnojPkdjbDxWNkMwZX1HalF2VGFRR1MxU0lmWGItNTJraEJKKmZhcUhwXlUrPU8kREFMQDU2
cj8pZ2BvO1ZeKmRaKQp6c1F4I0V7ZUs0NDlkdzlYMGY9Wl5USXNrblIwSFN+KEMtUTRvUnR0dUU2
Z05tc0QmYGgzZXU2VEZZM1F5X3k+V2gKejZKWlIpNz18JG5WfFc/dVpGa1dqa198dm1leiU5Oyhv
aFlkUT9MV1kxJEU1OChoNGhPRmJ4PWxWR2E8cllZSDhJCnpWRTkpOFF8R31MaEF8OWQ3ez41MiFa
Mypyayg+YTZDRmZRP1NzSlBsYlA2dEA3K0ElRFRVdWVRTjJNemohYHZZSwp6Xz9DPUBGI0hiJHJj
USkwM31ZQ15GcFN9NGd5RyRLUlBzPn54ZX14PTEpQkNPNE9NO0lQWCFOMWdLRj1he01nJmwKemg4
OF55dm9LVSlzS1FXJXB9TEhxWUVPcXFCIUZTUnt+eEpLTClESz8hM3p7LXZaZm9CUisjTGZRNUpm
e3p6NVFlCnpSX3gqYmhHRHZtRXt0SXEhIVUrbjNAOy1MSkpCSCRgZD50Sy1DR1lXNGI+bnpnI2J7
YmchcjZYVEN0U15yVThSNgp6RUN9TEEwKHlvWCEqbTN1JlZ3LXdWO0lJVGpOeFUzVk9LZ3QzSVBi
TmV7bXN2WHtkKExEV0k5Mz5zMk9+Ul5YemoKemJmc2NnMWY9R0wqWV89QWAwb1UhUEp9VEdWO0lJ
VGpOeFUzVk5XX2x0XnlGO1QpYk9vWHthOGNRPitGR3t2OGtjCnptUjhzdjE9RH4qeUl9fndKTGNu
fk1FflFqK1pZJk40OHNfUEYkYG1QOERWJTI5VXtkNUJEV150UGI+e3AhXyMwSQp6RmJKd15Lcz96
c2dgfEpQS3BoMGBgJGlYckRoeVFec3hWWlM1bVgmZCg7eF5UNjhiWW1xTkxKQ09HRE00UDlYc2wK
emk3THE3Pn1eZGl7YD8tMkFmNWRkbmVqSWFlPHZfP0I4KmBlISFVK24zQDstTHlVLXlMMXQ2JSM3
VCYheWhKKSE4CnpRYjF1cEtiWDArIW1eUHtTTCR3OThsO1dlVkByUXhfIWswR0MmQ3pwRiRgbEUj
XyUlMnVzYTxoKEV4KCEpbX1fWAp6THA3WEV1QCklQ1UjdHZTVDB5dTJyVThSPy0wTUpPK3xrb1Mj
cWhycW1edSV9RnBPYXMhIVUtSTVyKTAjNUdleTcKeklKX1QyU3NKUShnSCU+aHAoK2N+VCU8TU0m
JUdeZVl8JkZPM3F1dSNEaHlRXnM+PXRlJXRuSlcwN0NtdElnbXkmCkx5MFRGSitUKl9mNSpVOG8K
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9ucG90LXZpZGVvLndlYm12cDgud2Vi
bSBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNl
cy9ucG90LXZpZGVvLndlYm12cDgud2VibQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzI3N2JkYWFjMWY0N2Y4MDNi
YmU2OTY5MTNhNTNmYTI4NTQ4ZjU5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1MTI0MAp6Y21l
STU0TncmNDhPTHt6bExNcFNwbFVFbUxEWjJkNXRSNTxzVD4lcENMbHlLQVZ0OV9lbndeZDAoQzY2
MmRGaWUKeig5eHN7aH1VM1pqSHJoTWwwciE2aGhVdihAVDF5QjRmcXVyS1M1Q2BNWHROPUYwJHxC
ZWN5MmtiZVljTU9ycm4hCnp4dHk7NUljfFQ/YjkqbV8qNXZhWGByI1J9Uz5RdCtpfnJwaF5kUyFm
cnd+aGVhXmpvSUwkKE9Ja1BKY1I5JVd1Ngp6fEpKR28qWUtQKnJpdE5ZWiR9K1c/PnBfbCFsKGtG
Q2NHP0RPI05tYVVLVWtnO2VGKmVGc2UrN2YyeCtGYmV0SGcKek90K04+ZU5UU3VadVdvYXVjWjZ8
Z05JKXpPbWhoX2dgM3xGbzQwUF5uOShFMGp2d2hDOWpzMlBfaGxVb0p1fmpECnpiR2shQV5LKHZC
Y3tYMnA8dV9ZUm0mNEZzT0ZBUlU3WWpZQ3szN3N6el5eX2dAVk5yI1U3VllpeE1JPWZqNXAlbgp6
aCNhM0xAUG5fVnJTbVA7UysmYVZIUUZxXmYybS1iRGc4V0N7RHRTX2xDPzUzSzM2QWpgTjhvNSRD
PE8teGpwPUYKemY4TkclMkIoYVN0cl9XQ0ltPntXY2RtVUxSRlRUOV5HJEs3Yi1DRmlDZGxoNnpK
PnFKZXJqTj1MejY/Y0x5TXV3CnpyUVVPOD55WmNOOTR7RmZfK1JfM0pKaGhDR0NBdCZGWHJ5SmN4
JFp2MmVXbXwpeTdqZCpTe0ItPGk1VWlRXmU/bwp6NFU0OCRuY1lMej9vS0hXRDl4QHA9I3Qqa0ZZ
TkNBLTZfZEsxZz4oOzFIVHRPTn1qJjBJZEFlUU9YJWkqVDtie18Kek9kUyVse1FjNG9tVSMkK1BY
JnhGLUU7MnpxWDhhZ0NtIzVJdUhVUkF4ND4ld0JNd31TKmNaRGxJO3UxO0BvTXZSCnp1R01aWTl1
QHo2bloyZkBYNFVEUCpNX1Yodn1lVEJtKE0oR0sza21xWkooeUNXPmN6dHVIRjlLPENVdzFSb3dn
WQp6QHl5QGJVaSQwRypzMT1OKV8xJWZhTChTbCVWKnZgODl3ckYkQnZ9NzlAOCg1OGcrQl42P2VC
P0N3cjl+JFQwWCsKenA4c2djXitUMXI/VD0yPl5GT2JmSkxDNDh0Q1ErV2BOQ0tFIVhmKm9SUFU/
IXF3fU1wLTxgQy17X1pYPVU7SmtwCnojUWojc0lUfGw8P3dvcyFVbkEjYSoyaG4rRWpxeT1JKzts
cUZsbU5ORTY4N1l6ZjU8TD4yYUJeQT00alpzXyZEKQp6JX1lO0luKUJ2ZEh4MElZPEFlVXB7QnRz
bUJPYzU5JUc1LXI7V0c2aCkwSHc2Jih4MzNtRHA4MjMlYzUrVUY4ZDwKel5Vb1FiMjxKYW47THBs
YlBvfEE1c19WPDc8Q3J2dE4hS2ZzKml+SCleVmx6I15mSHMkPX5WMmhnQk50UU9TfGUyCnpPaDVt
KmcyUXwhTz1yPiVuWTQ7WXxILTB5WE4zfkdzdnA1VEhqR0peR3dIaUBEdDErR2dSWFhJU017Z3E9
UmE0Xwp6S1ZaPXdlVkI5JWxTVlVYM1h8P3VENnkrTyU5ekpxViR2cnA+Z1krUVZwa25hKEE2Jk9z
XmRLUmBPZyZgKTBsSzAKemxPQUt6SXU8b0pHM24wfk82O29QSFJpRXpHM2o8REp3bTVxUn1JekIp
aF9MLXBARHc+YXxOZkxGekwlb0kqVW5ACnpuUkZNRXt6MEx7dH55PDA5XjFtQSZLXnR9TTVRViUo
NXVla29CJj9uZjkzQF5CbCY4SUx0Y1BOa3Ikdis8T1Flewp6Yz55WCNVVnV1RzdaNTQyeVJzTGM5
Vj5lUURuKHZeTnw2XkpRfUtCZ3lnKE5fdFRyenw/a2FjendiOWRvN3Rxd1YKemYpYE0/UTRlMEE4
X3gjNzMjaHg9MUgzPnQ/a2FjemJ5cDRHMS1meHAhMyhJbis2aTkzd1ctZUhSc21pQnlafnxiCnol
UlBlXjtFbSZuJEk0IVNOfDZfIVFzZjI1RyZsJShmcXFZU1RlY3s+RWU7bDQ8SEMkNG0jYXRTSGFJ
ajFHaEJ9UQp6UmlxayYlPWhlZG9TaT94d35DdUI3d2lYSENJcF4kY3tJI0Q/fHkzaigmNCFteFk+
dkpqV09TREpNdW52JmlkMUIKeikyfklXND8wfmBkRWU5V180YmNIYEIjRVIrXmV3LWVZd1h3byh6
YWNGfnttMjYmQ2w2X3ZIQCstTyY0OERzTD5BCnp8N0gwY3g3diRVbj5LdnY8a2tPPEgjKXchX3cy
Z14oY3p4MSk/eGlrenFvRm5xVGQ7fTxsZUM2dV4tJHF4N3U0OQp6cmszQmNLa1N7bilfJmkyPTsy
IzZge09ecS0pfkZuIz9ac3JIUm4oNCRnfHZmdlpifWJ7JHpPQzw8eXAoJkN6RVAKejt8ZXhwQTY+
a0VRTTZ5KSpgaU5BWn5iQGJ4VV5RenoyXj0wUUtNJH4yNH5rcSpuaFFsUmBabStgTD9zbTxFSS11
CnpiOEU1PVUrSTcxP0RMTW8hX1VJQFNgJm0hRkwkZjdvZyFjTj51Q1JTWGRpJHwoTFI5QTcpYm5B
bS1oanY2enYwMAp6RGNUMzFRblV9Q3FjfCNnQUFvdSsrNlNPZ3Y9MmF+PSg/WHcjViQodzBNTndf
Yld5JnBDIWdROGN8Vm4rY3xWbisKemN8Vm4rY3xWbitjfFZRSF5MfDx2PCN8OCNTVHlnYVFnbUhV
ckQpenlyZVlWUmN8VVpxMTZgRF8rc1dzKlpKd18pCnpsRDYxIzEkbXc/YzdwaTQqYU9ZO3NUOXJn
c1Q5cmdzVDlyZ01NYHd7QDtzazxFU2wkMkRZfFpfUUYpJEVyZVlWUgp6Y3xMVHAxNmBEXyVnTmBy
WkMrMk1Ya0pnSFhrSmdIWGtKZ0ZeMVBsKChZIyl5IzRnSjdkZ2AlZ1VRZWF5eHx+WVUKenlxLStP
RT11IXk9d2IpREN8YEd6JnVgbTJvPVZYP289Vlg/bz1WWD9vPVZYP289Vlg/VVpsaD4lSlg+WXYx
bEdvCnpxdztrKG03O2soblRsTz5QSmt8VT0tUzB1a29Gek89UW1leSZTJW9VRnpGMno/UCp8QUEx
MGxxUCt9SypFQEt7Pgp6JCl0eXZeY3lOfC13a3A3ZCE1Q0BtTT9ad2Rkfjx2UGo9dldRaHJZZXQo
KUBoMmJINFQ0PVAyd0E1QEJWS2QyUCMKemVvIWZMSlImN19Re01mYzlWPEg/RG4qV21OfEVDc1E/
Wk5FP2d3PFMxNl4hJEptbCpVZEFFYW5fQy1JV0kzRHRgCnpaSHxYUjZ+e3hOaXNQWnNYTDNCMFYt
PzNrcF5EPzdQe3J8KHNNdGt0SlJTNm5aSHxYQGUlbD1uZyh7QVJMS1ZrRAp6cF5EPzdQe3J8KD45
YVc9JUNVOyRwLXshflBeald+TkwxYDFJR3pyNnZDWisyJlRxVHBBeWFUWD9lajttaXtOLVYKeipo
TyRXP1MwQT48bFBJfVlaMyFFby1VbVVnNXl6bDVnZDx9XkojRUE+TXIpfDlMTThoMTteNn55QSRB
ZSlaT0k0CnpAcE9ZZDlgZS0rSTM5SVY8QGZLOVV0Tk9aPkcpMD1JMzlKfDxvRDswK2FfOERhNkRh
bEVkITI2LTlgRVJIPyVJbwp6OSM3WnErSmZVemNNJStxbWU8d2JjK18xNCREP0h6IVNTZk8qaCE4
akFQWEUxSTNEVn5VMV9mWVZVTVQjemdHKCEKemtNenpwOXFqUkY9b2BXRHNKfn19PEkoYzxCUkMj
KTdzMnNwKitwPFg+TW54ZyhYeHgrYytfMTQkRD9IeiFTU2ZPCnoqaCE5T2t7S0tpSTM5MzN8QStW
RTBtbFE1TjklaC1mI1hxcyZqIWIlPD9CYXFKbkFsajxJJUU8O0NSJHMxam5PZwp6N3MydFV5OWth
KSVQeFpCUUZwUEU5TTd+UWE2STY2ITB+fE5rdzJMbT8jSmA9dihAM2ZUSlQ9MkFBZmR6K2RZQGIK
ejIyfklEPEJASjwtITFQJjR+fEZ1YFZrekRtZShAaWMrXzE0JEQ/SHohU1NmTzIjIWF+RWBzQXhj
ZD9UayZyST8yCnp4WiQ0NTlzVnBNeEYzKFluPl5mKU41bDhXeiYpNE1VNC17KVk1NkBIX0lUNz9n
Z3FXRHk5a2EpLTk+T2JUNlBmfQp6a0doTkNjKG0qeUkzOUh1IVNRST5NUX1Yb0VfUmFSaUhgKXcx
QTlFTSN7K3ZqdSpWYlEqVF59d0tnWXJ6NUE1OzQKejk/eVY/Nm16V1pRREpmNGN3aGNOJjwoeGNy
U2lzLWBDcGRMYWpVJnB3UTBrclBHMEAqY3dkV0hBOVQ5N193MmdeCnp5WUdGPCExMSZ7d34zenk1
MSpaYDtUIzRXa0doTkNjKGxCKDJGSWlCQX4rcmB5OWthKS1OakNGSldFYUJjKTs8MQp6O3tuRzVq
dDNsMU9VfngjR2xfOHA4P3Vpcy1vTDA1byk9K3tOQnVuO19JUns+e1JvYW4tOT5PYlQ2UGZ9a0do
TkMKemMobSp5STM5SHUhU1FJPk1RfVhvRjg8ZSFYSkF5PkdNPHh1PW9nZV83NzUmRVRPSkYxZ041
SHp3IU8mMFhKT0k3CnozeVhSaTc5Q0FrRypufkpJWUVpOEpFZ0RPdm1UNFIldmdOaGgoI0FHN0cz
P1o9dkpZYEs/VHhSP2h9Y3t6T2A2PAp6QXFrODlJVmBASWd+ZnFoU29FK2RGfkJCMGtmI1pZVWUj
RmlQUWM+ZWRNcGsjVnt3PWZpI31FKmhONSNkKyNpYzAKekR6TnhjQm87XjNWJG5ZZGk9I08jMjRw
RVFJens+JGpxJD9iU1F7M3tvM0o+YzhqQk1YdW96ZzYjWXR1KkV7VCZLCnokWWpKfnVvYTd3e2p2
Qjsxcn5vOWlOel9rU2UleG0jRW1CRGZuTVhWNz95Pl8+MFZmanV3bjZhNkJjSndWe3ZBSgp6NjFO
WUw5JXhvUTdOZ0Jyb05kSG50UUN1S3sjY3ctZnlNWXBDR0teUzl3P3l9aSpGYGphUkc8TCM0SWM+
XjF8WGAKejh5MShFbHhWdnhKPHpnaEVHfCNMOyk7NEtDWWlDZyU4MTMpKX5DQG1KWkZ2a2U4WVZo
VVh+ZWtGeF8pPCQ9YXZfCnFAZCpjdXR+Oz9mcn5yIXJIWXxxWHpkMVN1cWY2cWp4WTJ+Zz9MKUEq
KjluV1oreTRRcUhRPF42CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvb2dsZXMt
dGVzdHMuY3NzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
cmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjI2OWM4YjYwNDE5OTMyMGRi
NGEwZTE2NTlmNzE5MmY0NWM3MTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL29nbGVzLXRlc3RzLmNzcwpA
QCAtMCwwICsxLDMwIEBACitjYW52YXMgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAg
YmFja2dyb3VuZC1zaXplOiA4cHggOHB4OworfQorCisuc2hhZGVyLXNvdXJjZSB7CisgIGJvcmRl
cjogMXB4IGRhc2hlZCBibGFjazsKKyAgcGFkZGluZzogMWVtOworfQorCisuc2hhZGVyLXNvdXJj
ZSBsaTpudGgtY2hpbGQob2RkKSB7IGJhY2tncm91bmQ6ICNmOGY4Zjg7IH0KKy5zaGFkZXItc291
cmNlIGxpOm50aC1jaGlsZChldmVuKSB7IGJhY2tncm91bmQ6ICNmMGYwZjA7IH0KKworLnRlc3Rp
bWFnZXMgeworfQorCisudGVzdGltYWdlcyBiciB7CisgIGNsZWFyOiBib3RoOworfQorCisudGVz
dGltYWdlcyA+IGRpdiB7CisgIGZsb2F0OiBsZWZ0OworICBtYXJnaW46IDFlbTsKK30KKworSU1H
IHsKKyAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgIHdpZHRoOiAyNTBweDsKKyAgaGVpZ2h0
OiAyNTBweDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9vcGVuZ2xfbG9nby5qcGcgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvb3BlbmdsX2xvZ28uanBnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzYjcwYmVmM2YyYzc4NzM2YzcyZTI2M2I2M2FjZWE4ZDlhOTQ2N2EKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDU4MjcKemNtYSlmY1Rme2Z3e3t7T2ZrPjYhTFF6NUtPfVpleGdF
Unc1P19INElkb0xtb2d3UDJzYlY1Z0k1ZkJqfWJkVX1LCnpnTExVIWUoIXpme2wwSSRgXlNDdW9T
Ql9IZCFEbml2JTltOz9hYnttO0RNVHdzdUJRcjQqOztmWWs9RnwwQ0dpZAp6RDw/a3k1UCVCKzBI
cDRRXzVmdF4pXjMoSTBQRHxwQmYjNXZLcUxTazdaKD1+N2F0RH5wOXVmWD8tU3pWNlclOHcKekNj
YU5oTyE5IV9Vd0EtNTI2X01AQmNZX0VxTjFjXldNRSltV2NkJCgxT3g9NkImNCh0OT87VExsVCp8
R0MtQUBSCnorPHBkLTY5T3klM3BoWT56JiZ5eDRtdDMpOXt7fnVBMSk1P1praGk5RSo/R3NARSM1
ITVEMzd6Xlp5ST9hQnpXbQp6NCo+VW9JUU1YSWEwck5UYVM4NkNjWEkqY2NTJnBsNmFAMFJsb2xU
QlZRR2MrZi1rN1heKDtOcDheQSk7Z2tNKGwKekFNUElyKC1pZThXRTY5Ny1QUWpHfEZIa05eY0BF
fEV9TVdaZyotZGU5ZlAxQV87d0NKYXU+V3VqemJRUjEpT0xDCnpibnBQP3Ajd0xMSUpxUEFlRU1+
LW4wWnx3Q1V5KWVjOVVXczdlMkZ+TXoha3k+WVR1ZVlGLUtVVUA3P0VAM1J5bQp6R1k3JnxYTUFD
aXVnMXxLb1B6VHlwSFhRYDMhQzhtR25NV21mOVJDQytSe0EzYHJoN19tLXEzYy1AQjl7Sj0zcVgK
ekN0dFUyY0o/fm5weWZrcylYJFZaVXNEYDxDJHdKe0tBay0xPllOMEA0TUw7e2J9WTk4MjVSX0Ax
ZDV6fDR7KXstCnohUz82ZTdhUGwtMUFudzZSeC1tNCZafms9WWopMUtUQ1AkcStgTFgoRURSaVNu
Wl9hYFYhbDVDblpGI0xOI0pPTwp6PUkzUkgpZUN+Tm5QcVlBMXZ7MXc2cm5pPWYqP0dSO1V9TU0r
d1gtd2BoUlR6bD9Vd082Sm5zQzZqZTsxdldsfV4Kej1CYSR6UDF3Zksjd3I9bkxGPkR5Z0dzd1VO
RFRrN1pCfT9hMVJYN0Q9Tld6RHlXNV5DMERGODlCMCFxOFU4NVVtCnpYX2JsNGM+Qj4oUmdCey0h
O25MTUNEIWl5VX15JCFlRSFKNmNfcHtOdkwtWDQ1dmZIYyl1I007RmZ2KVReaCs9Xwp6ckNreTJu
Y0JgST45YytkOzA3cDRaS2VnNmJ7VT5wP0kjI0VDd2lifUM4czxObmdtWEtwRVNaTTlEQWwmQFR5
ZD0Kej5PRm50ZU9xcTwpJUItfXBjX1omOT5QQ3N3KmJ1KXJAdHxhcWlnR3lHfWsqQHlTRCY+KW13
bTtwd0NlTllKe0IqCnpsJWNlSDs7bnlET0NaYmVWNl40XmNRSEV0OyFsNDRyP09YSmp2RWMjRCQ9
VHFnO09GfWJ7bUtLIX5KWkFsUEYkVAp6UXgtTCF5PGo7fWU/Qig8KDU2PHkjNXQjS3BHaHU3SGBy
QX42TTdLeig1UFlCekRaYm13c2BsRT8weD18S25xdlUKenEySEExPFo0b0N2JW51WEdiR1J2RldP
Q3gzaXlCUVZTeFp6UEdIWHJVMmJuMnR2Vno4TypSSSEjOHF5bF8wckleCnpOYmZTP3lgJXIrQDF0
UXUzZkkmTVJebnB8KHtRUXRuYSFgNHFvfXk1PVpfU0VnRGMybmB2eXYrWGdGODNUUmxZSwp6byMz
amNgI3V2Yi1KNFMtT3pMTms4MjVGYVotOTN5P2ZsSz9jUEIkUUY1UF9lc3Fpd2BMNTZhQ0pKdW84
LUJ2YyQKemphYGpxe15NYjlGXmlvTzB6ZHBDc3hxZ2VUM18rO0hpS0h7TG9+d3xgRDtOODl0QVlZ
RzBDNWJib1p6dkdkdzhCCno8YURnWlVpaiUpZX5BT31sYWV3MUJCMFQzcmh1aH56RHo/MzRARCkp
PkFKdD9GZnpxNUZIR0pTTjQ/QiFRKUBBaQp6YiNUJHd4QTgmPFZqbT1fd0A4LTElJE9lY29VPSla
TStzbSZFKmR9dyljJigwZUxgSklgSWV9Pjs+RVYqdV41SEwKeilEfHZDQXsqK2ZjUzlvKlBrKm88
Q2I5eV9kdDYpYlhrbzJDIUIpJmo/KCtoKHFNP0RxYkJOIXhvT3ZqcG9LPEQkCno9cyZrdGhhTCpk
QE9HNjd5MDdWKyl1Xl8+bVVzcWpmQ21VeHgjK3k0dGFkIzImJHJHbyhLMSZTISNQcTt0eUwzSAp6
YkAlaGliI19jdzclY2YoJGteejRkUWtYPGkpYGlSeVBVO3E1dHM7VUUlbV9TX2V3QTx5e2g/VCEk
bXBnY2NTak8KektVfHsxVlB0dnRlVH5mXm1rNG9hQGUlakx2KTYpVk1heSM/eTl4X0JsPF95OGM2
JjcoI1FEIzhnbSprZFVaQn1FCnpCd3BFNms4YS0hOW87NjtwKGBLOylEO04weGhUPiU2dys5RD07
NEJjSDU9WDhSaHdUYTRKa35ndSY2aXleK1Rlcwp6RCg5Kil3IygrTnNHfTlNMUllRG1eNElrI21X
T0BGeXwhI1o9PnwzbUJrOWk9bzBjeHR2UitOcnNUQ3AoUVc7WEUKekU8aFhiRjxuRzx0KFd2aV5V
UHw4SVJ2OSREPHdpbl87ZEVVZzFnKkI3MSgkcypCfUV6ZFJnbD1mWlclQVdeaDhDCnpUVjcmKjZ8
IU9ZPlAtaW1PYTctc053SWVFKyFUWEpjUCM8YjY/cjVXZl96Zyszaj5rR1c2fU9YQUxqUlJxO157
SQp6RTFuN2NiRFpyNXIrWXdkNk4tWW1sN0hRWUR0R3BQdk40ZnFeayp6amp2YkBQSHtNOG5qVHcx
cnVFVVk4Wj4zUHwKem9Wd3hJby1kUEBoXjcxQnlgazNtbGUrb3FYfXVgNVM+czh2ST1wSTBeSWBC
O3RXUkUyMWxAeWJeNyY5KlRaPklwCnpQT1llKF5ZSSMwOFhHI200QjFSI01POVpOQ0xGODxnNFEp
eCg2eDVQJCphSW11JDBFTCg0SktSKng1YFg2VVJEZAp6QklIPTRNez0tPnU9JnZ+cGdoO29kbkVq
NWp2PD1WTyRxZnFhekImJF5DMWJKVFlCZVRNJl44ZnRCbkUwWkhTVEoKenlefGtJM081cGckTjJz
T1pGOFl4TSZ+LSNENG1VOVZmXlE8OV9MTzslYlBtJHR0YXF6TDEzX3FfQkZMTT5zaFhRCnpNWCRg
YSNJMm5NS08+Sl98TDwkbD45aSU/Sl5ASHxCeX5MYkRmSEo8ZV5SKElLYHQmZmdTKjQ3elRMLU1h
M3E1PAp6aGl0P3ItX00jP2QjQ0QyM2JnSlBWQyFiVTttfm51SXNYUk9PbHl7JEFMKlkpVlpHaDlH
VnZ8VjZ5QyNeQXYhPHsKekFxPGYxT2VWdSpzRTVycVVDbiUzJHt7R19ke0ckTk8wIzNRYVU7VT9x
NDkoRXRMX31UenV8SzhKX1AzNFBZJXZXCnptNW14KzJUXytoZl5Hb35sUXJpdnJgSTE1U2Y1elRA
dDZ8IzRELSVjWFIqNnVTaXM8b2ZpaDkqPGNMZjg5eVZPfAp6UWt1b0RONERHTDkrdklDNF9Na25A
OCUyblN3MUcrIyUqQXghcyY3MUh7JGwpPmQ1XjdAZVAlUXMjNn12X2FYVHIKemVvVUcqUEdwYnM+
VG95PiR5SnkySE4lUGpjRmVzSys9aih0WnJKKHRsIVpLPCUmV0hXckpMJjBkdUFuTCNJJiZwCnpe
fGh+aCNfSXdjO21kR31oVyt8T1lFQz5KIVZVcGJPV0peeHA1fHtWJEpnWV9FQnJCcXFKPmg0XmhT
KGx2KVN8Qwp6KEw7fEV4U2I0RD5CfjtgbDstbGRNbDJVX2B+QGpGREIhWFdhMVlGPj9XJiE1eXo8
PWc2VXRyeGJhOSlgdDBNK2kKeipwNWQhb3I1YFRUNVYpRFNCd2Ahb0VmZ081Tmh1c2QjKj18JiYj
dyM3bjFhRz0pU3E3YVV7X3t5aDBRQ2E1YWgwCnpVIzxffDAhbDZmQkhCNjxrakI+RUEoXlhoWjNX
a2MzcTBOPSNLWExgXyFHdz1kOHhpT1glJkNBUGhAXnxCVEZVWAp6T341cCh1OEZSTXFSM2d0cVJO
e3k7biNLKG9FOE0wJFNHdjBMVyNabFJJQldsWnxEWGF3JGZBejZgQnFmcDFFPW4KeiFqV3xOPHRT
bXY7Xk0lWlM2Tnt1YyFAXzxSS2hsJHNFRVpMRm9paWFNV19pU3Bsbjx7NXMraSFwck04Um9sNkV2
Cno5YGNeM29DKGZPPWkhbmRaPjVJKjlNYHFyMVUkMyhLPGVSTmJRJWsqc0F2Jl9WUClRXz5qV2Jv
Nz1pRz8mPD9HbAp6dkcyWCFSbkQla1F9WUlkdWMrOWVmPyE4ZzN2M2RWTiV3KUcjKiREfVg2SHc8
JjgjdmVNUylDb2R1OXhRSVpIJEYKenQlfWZASzNaPk8xRjJAanU/RCorOEhrS1hsRSR7d04mTk51
ZiZGRzQ7ZUE0dDVaRWtqSzc0dz9sbD0ydyR1d0BDCnpIMDgzIVowPH49ZF90TlRfQk5vM3QjMFhg
QUJITT9ISkFzN285WnkxSk5fMWNYZWsxN2UlWEw7KiU9eCEyQFlaegp6O2VKKHhuNzJXTEMlPXtS
d2R2SksoNnolY1dYQFNxXzVgbEtZfDMpRmJ4V2xNOTNPIVZyMnJxblEkNkJWQ018MSYKem4kUS17
YVpEPSpoKio0O0lLbWh0aGU2QXwlS04oQGVpMG0rSnh+SylHNmMqRzdxOWVtUlQoeUhhWG9HRzJ1
RyV7CnphQkVfWCVHUWVmJGp3bGdgZSh9RChSMGtVdm07WmlZMnY/cTstYV9+Q2hWK24zQ1lpY0hk
cCZFTkEycDdVPmhmTAp6VzZxJFRLbCNoJXlvTkF2ZGxOSDRuITR1TF5VNmBYemZXZlM7PyNjRUQ2
b2xZd1okaikzU19hdm5TcSk5LTUqNnQKemAkWHlWTCV3UF57IzkmT3FBJHhTdyUrS2s8KkRBS3Yk
M14zT1gwJj1RPG9Oc3t5cl45dXxnck8reSpgTUEoX2QqCno0JFYpIzIlQlUwen5TfHAlJHJjRHgh
MWI8NTljdTU+SDZKc2BESSQ1Vkw2TFZtSz9rYEBDZjQ/JjZZQ2M+MCtrNgp6cj07dE1QXz12OFIx
SGIkaVF8WnlSN28zPjtrOTt4aihBLSVKVndEK3U2dE1JblA7XiU/X0dpVjEyY1VaZXZoQEIKekRU
WHtHKjY1elo+O1d4T3NGOyskKHVUSTN6a0QzeEJURDFNZSMhR3h4TW52WUxqWj9HMEFDVXItbEpv
RTtycHNYCnpXTTgrK21OUjApa01fWHZ4azJ7OEVGfkExTENVVzUhfUdadkMqcWEkVzlhWX55Xil6
fkEmXjhQPWcwX3pSJFgwNAp6VURsfCNBWVRrOD8rd0hKXjRMPipEXyg/YSZ0Sm82dDRyfFgzbl83
YkgmYUIySzNCdSNhPGdSNFYrTCg0KyN7ITcKeml3MkdlUDA2NEshOVRrR013ZXM3dVVnT2UlTz0p
MFZNNz15YURtNXViI3p+RkJAUj10YSFla3U4Q1hGQGtsJXI5Cno7aDRYeVghY0YoRFJGV2BnTXNA
NCopbCgyKTs7ekNQUFNiemxBfXx7ekczIVc2cyleTmglUGx0Nz1JfT1mV21vTAp6MFNzeT9WT1RL
byR8dXxVXnMjSm11ZiV2SkYwUnNLai1OYFMxdmhNeUFqdld4ZDg0Xk1jZEBBdS1MezBTRHE5dGYK
ejlwI3Y2PVBAejdJVHxjemV2X3s0eiF6U21UbCpnNWZ2VlcqJENPcnd0dEwlWWU1eiVBKnZvbjA9
JWV9NDt6MWN3Cno/NHhEfXRUYyhvKSlLcmdEM3MmJmBAU3czbzQwXkBuez1BaG1NIVRJYG4td3Jq
N1p2ZGtJPzg8TmNAek9Teng4bAp6Jnl1NmBfRjh2aUUwazlVc0AmMXY9LTdwaEtKWiUrSFFWY2w5
RVZLYyE9TFJSQjszO1ZuYGU4S01EaERhJX1VZHYKem96SWhOZ2c7JUZ6anJPdTNHQnVpQVRIT3RD
VDs7XkVNVFEhYlc+Z3JPYUBqbENgLWFMfDA2WHJveSpEeFNNMHVGCnorK0BrMlpMUCloaUc5ZFkq
VSNCKGRQdTdNZ0J1Pj5wKkxFRHgoY2JVYCsrQkRrP0hOamsjY2AlRllTYGwwYHNoZgp6aChtOyhu
I20hVFB0Tzc4aistV3QpQ1lJTyZtLVFublRSTHszSyhgZHFKe3JUS0l3UFJBJUZGJFk8KkdmTVNN
dFcKek1VaUdSZU1lPHVSaXZKP19Be2R6YG1zalF4b3dqPFVkRilkdzNOOGlKYT1vMC1zRi1xK1Vj
RTIjPHBSUjc0Yz1uCnpgPDVUeT1TPmRGM15ZWVFWU1QrYHE8NnthejVaUVNnTkJzVWpmb0MzR1Y1
JDFDMlFkcjxFb1VpJSYlYnR6M0dEVwp6SUshSipOVHh2UVlsP1ZzKlpqVFIlV09uU3NTPH1FS1Nq
eCM1IzNkcmpMIWo4QHZWTDdBd0xiUE5odGpKLUpVWXcKemVvRyZ0K0NtZmhRQndLX2pIPUNZbFdX
a3xIQXB0WFM1fm59b1NzfU4yQDkzPSZEVXJ4Z3A5aEZTMGM0ZlQhO0hICnpXVD9VWSZ7ODhWey1q
T0g4RF9VendmVWgjYTlUcFNMflo0ZEQqYFc5VXdlKzRXejlxK0Q3KiZMM0VsSS1QSSN+bgp6bjti
MGhNKjlNQnI0cTttcUdmT0BFODNmPlE4dHNXQUZKb2JGKCp7LXJhT3hKJHRGUktwdVh3Y2UlVmIm
UkQpTkYKenBkPT8mcXJoWVlmS3xJKW5LNjJHdCQtTDw/Q0ZBKWIrPHBLSCFMS35kZFRNN0g9dzt9
QlpLUH56dkp0dDI9U1dUCnojRztWaVgxTnUyZEkhei0zXiEyO3p1YnU8Vll6YD5tOTx1QCR7PnE3
KlBEeiR5dGkoTDBNMEBfVHomVEZiMUMmcAp6dmJSJUFMSkFIbEJjYjl9SzJpI0FYNV5gZnN5fEwh
ODxBNEYpWCYlQyFVZX03LXdPVlU/LV5pK3Yycn4xfDYrSFgKelZwcHRRK3hwUWJybHw9bCVtZCN8
ZVo5S0JHUTNiKFlvKis5I0BlJFckIy0zIU5aT2hNQWN6UytLZE8wTilrcnFDCnpvWnxEIyFhZ19H
JllAVSRQJkxRSFlUTkVqdGNmMiF3TU5OTmdkKiFGZWRgaEItJUR8JkJqX1gmb2l8dzg9ezQ0eQp6
dl44QiU3c15ELWR8bH5AY2IoMjg5d2JpeWpBTUM8Nz19ZiY9SzAqSCM1VWhGc2gpaEopdD1AVU48
RHIxJE80IVoKemJIOzRhZUdTLVRLUG5vWkoyNGcrNVp1LVElMT9JTCpHNH42d0tXX1c3aUB4SSZX
K1FvYCtgZVZpO2FNdEg+YG9YCnpYfkE4TFBUYk9zUDVlI04jfE4qaDY4NG5vcWpkWjg2QEtadUBv
flJpKUB9MWFCKHdAZChrRkEhbkxSdikrVyZsIQp6d0thaEAoe21+a2pKSDZ4KztCejNURTxvPztl
N3hfeSRFfE42VkxIfGdXUE8lO1ZCNGdsO0RjZGN+K1prcXJIPEAKemVoYThnTihvOFkkb2hSVXxH
UVNtNWJsMz8jJCkmX2VQfVJ2K351aj4/QmdpQlBybms/V0oyKV8lWjR0TEtXYFBFCnpjQm85bSRG
MyFAPiR8NV8hZEVye1lwU0JFOTVLQTNGfiE+SGpuemE5Nj5UPUphQTZfTzE3eVAwQ0MocGl4enh5
dAp6MHI/TnZSQjElbT0qRXB9dTQ7I0tFSn1XSDFZQjRBOzB0Km5jfmNhdTdORHxLMnw2djh5OUs8
RW96V2hHb1RtMFoKenc+KDhENGQmUzxiMTBpQHp6YjQ3NU5CbEE4UiNrMnZTPHkyWWE1RE4oYyEt
OVQjQHQ5VHtmTVRzJD9+aXFyeHhJCnpBJSFrMk9eOCR6eHFDREU5PG9CTzlvUUZHemB0ZTIyVE13
UkkwKGlzR0YyPURJMnNOQWg7ViN2SGdyWHFKNCR+Twp6YXAqNEhCR1M7NkVGb1owd1ZiZiNXYzsl
fVQ0KDBgYWolTXZVVW02Z2lGd21OYEp0NXE7eiNNYTUoYG5RNDgqQksKekxtP3xPZypCYXNVUUZO
SlU+LXhZYV9TKSg3YVhAKGc5QGRRYGJkfFNhXmozUzRJe3UqQTVRQkRfY0B2cTxUPF9uCno/WG5p
ZHtIJnc9Tio2THtsOVE/S2dfTTh1cXtlQ0otSDJobyVeWEp1Y31xKUhZLV83VEorRTNKZC02NCMh
Rn1LJAp6VDUmaHM3T299IU1PMzN4Y3tLeGtuTjQzYWFLPUBWKytCMVl6ZXpoUkZ4a3pHREY7NnFL
bEk0SjRrIUcxJWhNVysKenVWXkJmcG4hVXFEfSU+XjA4TUpEekF6Xlg3emordngmQWlTU31ATiZC
fl9nJUtGKGdAezNTNTtJLXRqeCkmc2UrCnpPemEwJUByOExOej17eTJMcTU3cyVsQmlvNEJIbVc0
anc1KFVBUj8hKShhNGQ1a245Nkt1I1d+MjlUbjUtYmZxUwp6T0Ikcz9ZfEZGVTcpQj87YTZELW5p
QUgzPypRP28tbVBYWVUkM3oydlVmO0pXST9BKmRgQyY4X1NAUkU/ZzhUbzcKelZaNWsrWDx8SHBZ
M1N5RE55NSheVDBlU3gxKkROdiVoYS1ZXihUVzkpSiU0dUFtMns9WWAyJTV6RWNxeXYwMGAkCnph
QEs2THZATTgxYXlyKDdfRlYzb2Z9NzxecT5SQj5OTHgzTW9hQ0Y/TH1AKyEkRiUxSyVlSW1KQERT
VjArTjErcAp6NlFAejRxNks9Wl5qaHcrelU8VUB1eHhhXj5RJCEyOE9AaVJEREslelEjOSszbWQ5
dzc/YlEzODd9KldRLWRqSyMKeiNJKGlQWTJVajJHQ013QTE9Yi1ablBESiozeEtSRzllZFp9VCZT
JGJVPy1gVnlXfklxRHU/TEE+WmhWSkk+JUsmCnpAUSpVYE4hfU5RSWlKYGtQbER1WSFYaCM9TCVS
RFdRbnJHajNDLStrSVYjPjByX2NVTyZJYjd6a0AwbT0tUVNWTAp6QjcwPlZpKFdJNkA9cUxVcENX
QXoxV0doPXRhZCohdn1wWTUmc3crTEk1YWRkY15uOFdIbjFBRSNrQEFzb1MwcnQKejZ1Tm0mQUhn
TFJnfGw4RCtXaFpMe01VfkRjT09eLTJiMiFQX0g+NlRxIWx+TnZXIU5sOXdGQ0BYY2gzdz1ZdS1u
CnpfcVlhPTxyYzBMampvc05PVTRIPyZlK2VwQklnPj90QEBMUVpVTmRBdmhVJj5GViUrI0deOXU9
WnZrI3xfQlhtWQp6KGk1XzBPQzhzPEVNdVUxUnheWncrOz1NRSpEY15sKV49OTdFRU5DWGw7R2hY
O2p1cUNWYCNePFpwSGpnb2VxWE4KemY3O2JFSTB7dmhjTUlAS1FvZHNwKE5IREpuSW9rSG94Mlko
d0grJX0yOFpjLUlZVyYoakJ+a18hfjRya21feVBGCnpLTTtIaGxCOHE9UWR6aFJfcU9CRjZvfiQj
MXBqQWFsJGEpQkkzdmM7STRERyl7SUdYUSshMTk9QV9CfDI2TCp3PQpQR0ttI197e1FsRFpmRX1z
JmB0T2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4tMTI4eDEy
OC1saW5lYXItcHJvZmlsZS5qcGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLTEyOHgxMjgtbGluZWFyLXByb2ZpbGUuanBn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYxODE2MDQxY2Y1YWUyNTJmOTFhNWY4MDBlZWJkMjc1NjgzNjkxMGIKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwODkKemNtYnU3S1MmITw5TEstIUF+Z3xkP0BGPGJaKlgq
dyg0a3cyciE5ZHtMKmskPWE9OUYtUTE2YSsyZCRHMWc1Y3ktCnp4ezAjfEhAZ05BWEVpYllxZjJw
Y0RxVUstejVaVE9iRSQ2JF89OSklO3EoNjdfd0lNe0xWaD5XZER+dHJtUyRlKAp6Myk1Zj5WMUlI
YGxoY0w/RWM+eDJ5X3d7NV45eXxOMjlJRmtJYlB0WTwzP2V3U1MqMGI0fTRHRWR5M0JaLTJ6PksK
eiM8KTdHWFJhVTJ4U0B6PztaR1hic3UjSkdYXmREMTNQU3Z1Xyp0I1BVbGRuNVR2ei1kNHJ3b0lE
aSpVUG9Be1I0Cnp0bzNsRWhoeSlmZEtUOztUb0ZzUGNRTWFTV0c4czg4ZE4tOVVXc0NGSXBUVFc0
TVozU0MtJG5ld3YkUWkhc3g2UQp6I2t7Y09keWUzQ0BJRFp7OTZJaihQdHNvZHBvezgzPVlVYGJj
PS0hUlo2JlZxM0haN31hanBfS3doY1U0MmxmdlYKem0tSG9jZ3dxV355Xl9+aHJ9cDw8TXBDSjZ7
bzhGWU16YmAhNmE5a3hoNT94SjJPaFRAZk5Hc0dHRmdYfSN2MGFBCnp1KXIqNFNXRihgdCV9PXln
KkshIUQjOEQ1Q31aOTtmVGJDRWgyYSFFJH0langhcUdeMVB5S3kmd0pNS3diKXVfTgpxVHtVI28p
WVh9O1REbSZsRSR3ZV4tR3gjZz0yJFopbm1OQD5Mby1keW9OMTx8bmFqV0x2QUJOIwoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi0xMjh4MTI4LWxpbmVhci1wcm9m
aWxlLnBzZCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jl
c291cmNlcy9yZWQtZ3JlZW4tMTI4eDEyOC1saW5lYXItcHJvZmlsZS5wc2QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjhjMWQwN2E4MGI1NTg2Mzg5NzcxMzVhMjMzNmE3Y2M2MTc4ZjBkNgpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjEwOTgKemNtZUhQVFdsUUY4OXc5bi1Ic2hRUEQhYlJIWERiVlNudGo4V3BTSyUq
TihrM28wIzxgMGJaKXZuWH5JaldAbTwoCnpTemw2QmEjfnVYSzl6ODVgJSk8TUA9I1VrNFcjeT1L
eHpCUkJ8dUE2c1pjMD1wJCgtX1I4P35TfElCNH4kSWpwdQp6NUQoMChYM3FKcT1SZT1NJlByentH
SykpdUJpMHB5V1B7ekUxb0xwc3w4T0ZjJWVOazYjQlRPJWNyZSo4R0EzQEcKekk8bHRtIVp+ViZP
U0I+PmhhLVJnI1Y7ZGFOand9bWIwe0NyWWd4SzFFdTdjcygpa2xiO3J1eWFRajhwIz93KHBwCnp1
VGB9d0hUbSNiUmFUN2orVGpRPHN3SjkrSmhFZXZGakZ6bDlnZlZQQWJlWVhGYFFMKDhYZztvTX0+
R2k4NktZOwp6TnNOdUEjXk5gSGxrc0ZjN0VpXyFzYzFacmoqcTk0JCpfR3pybkAwR3JIa2NzVmZM
Nl45OGlaTiVjaU5OVzNrb00KeilzZlpJaF5raiZpT0k9SGJkeVgqS19oQ2NEPDsxZFJnNDNjNlVX
YWlIM1ZKS09pNU0zPSQ5fDRIUz0mSmYoNXlrCnpVOVlPPDdOaSY+dGQxanNUOCp2b1N9WlhWazhO
aXAzYSpWLShgNlEjRDgjNXR0NWgpIXV1RSlmMmF4OVR1SWFZTAp6UmpiPXQ4c14qeilXQWskVFQ3
JDN1RitWNThmcn0hPS1kaUthJHZqUXdQbj4qamItJTtePilRcD9PRWVrbWB5P1cKej44d3Q5UWBM
KkFEbzxQT3pVY1QxQyF5WnE+K2AlSURPa2J7USElZWF5I2VhWj1xenYyWTN2fTtfKmdWQ1Ihb2Vn
CnpNXm91fEFgMENrOSZkMUJYP2xGKnApLW9TJHYxbCRNPSRZLUc8YTxBKHhtSjRxbCF7X2VNZXNF
bmhpY2dBemZEVwp6RHNOOG5ua0d2RWtHKElwcUtJfiVhJmV1QyltMG5wUz5IKEs2dk5+ZGYjem5Y
ZmlXVVVWbWRXOEhqeH1IQzhPbjMKemlqUihfcHg7bDchdkdra0RQYn0oa3hDYCRDPDdePFojM1dI
ZFI3JWAqZ2I5NkJEZndhOX53XzIwVjgzMmF3MG1LCnpwa3ZYQSlJPlF0Sn1Tfmd5Z1pvQGdAb2d9
IUYtR0JsZXo+YDNva2U1VkQkZk01ITwtZ1FxK1FFSz0pZzM9JDZucQp6KzJwWkE/YC1CZTAkRX57
ZlgzP3YjVzhYPzt0VWRaKV5IflV2fChjeyU/c0ZvKCpwSylEbyh8a3hiPzdIT1dSRF4KeitKSE1s
KzRBM0RlJnNTJm0jTn02VUBUV20+Jml8SHdRUjJQSS1STE5wVit9cnd3eUx3ZEEoMT9hSkg0RGtE
d2g0CnplJnZJOyFwP0AjfEpAMihDIUNNMTczekloU211PXE2e2xsUF9qTVJNWWRFVnBvNXooaTlj
JiRrUXw9NngmWkBHaQp6PVQodFRyPjBgdHZGcWhHU21tPFdNT2BnUkdNejNgIXdlc242dzIkY3J2
UFcrQ0RfRSFNclJHJHdsXiE+aFA5dHsKekx5SFNMMylzfWUrK0VGPDlfbyhjND5NRCo9NztJazww
fmt7MUJnRXZ6fnpzUk07Z0g4MG1QcFM7UFNgRUJNc3A0CnowT0MmdWFRV2xva3BeJmkwUCFhU3hj
dT8pTkNVViRmY1RSRVQ+a2lZcXlieldLPlchN0VgTk1IKGZ9P0dBcFQ/awp6bXA/dXBYI2tmODVQ
dmQmJU80KylHPVIka2goOCY/PCZUZD84bz1jTiNHZWV7XjJmJmA0ZEMoczshZyV9YFF6aH0KejI1
QC0qQGgxYmd7UEZRZjFHcWVaXz4lISN7YGgjTDBiQ3dIe0spXz1lfCRYQjA0QCg4eyR2MWBLUnpD
NTBHOV80CnplPT5sfUEwTGwyZlhmNGpLTi1OfmtCPihoen51cU5wQTZ2ZyRIeVpMO1BMP0NQWD0p
TDxLdk1BYUNyZG5Ddzx9Uwp6dUFkWDYzTEZreGc7Umlwb2crLU1nTjNpZDZWRGwxWEEqbGY5bk5e
MnRlSU5QMVpFcW1FRT91ZzM2Nnleamh0ZHEKenM/QDN8eiZ4ZnxTeDM1YCopQjxJc0Y5SU92X1l9
dWxqPGs8RGxOfDRSc0B6K219TE0qMUp2Pm9IRVlfKihwZHE3Cnp5PTBOLU0xXjBPZ3ZrPTIjM1ZK
TXApMW1AeCFPUTZIeVBQZj8xKnx4SEF5eGxnfURUSTd0X3c+Wn52QFM8RDFiJQp6T0I1ZFU4VkAk
cV8jYGA3WG5fMUcpWFp3ODsjMn1FUzwrcGlQJS1pQGs9MiFLb2x3aj1hbDlsT3VIOzA7VHljckgK
enN5eW93Zk1lWnRNbVNmb2Z2YHtfaDUxWXRxRzFPXzN0fjdkczxxTmxeLW1aZnlYSkxlM29qI1kp
eXdFJkBzd2c3CnpKNVozWlpRVXkpaXtiNn4xdyVGJmV7b0dkVDUjMzdTRXY5ZHdjdFA8b1c4VnMj
YlJhQWFDIXlpUTVqTVVuO2ZUUQp6JVo7YmxxTjs2TT8yO2ZgezYkP2pkT0xieCpLUj5xd0tIJSlZ
N3UqPXEqTlVFYGNQMVNtQD13cXMjUkg0RHotX2wKekJmJF9GX2A0aV9MOD5lXzNWSXY/I09DVmJT
UDh2cCNYdUd5PD18KGhZI2QkN1dQTnNfa1F+ezdeU09BNmNOZ1FlCnohdClNQmY3KyQ1VlA0OzZi
UWdRVmdKVnxMUypMIXh0PV40bnJ1ej1sU3xHNzw4Nit9MStabChtSVMrczFuPVU4Rwp6b1pTSVdO
OVBkWlY5JlFYJTskU1I2QzdFYStnX28rcUlnQDs8X0QyNkVJUUcqR1koc2ghbmxPbiNfYngrNXla
e0gKekBvTFA0JmNNVHA5IWNscUckOHtwVFRtakJENTxhPEI/e3lkQnVPVTdud3tFbmc9T2VJP0Ul
Szw0UzM/K2JUdWtDCnpnOEl9IWwkd2spVG5wVW9hMXZQJjRiUjlHJW1tMC1NWDxaT2VGflZLSzFu
azV6UGtacFFtQSlMcX12VFJkUDxHYwp6QF5LdG9Udkl1MU9hfDtoeEh9aztuezZub3FvUylkdCU9
cEh2WGg8OHlnOWRvLW1QUHI7QTBuR0d1MyZqUCN1cCoKejApeWMzTj9XPHhRYnJDK2FAOSYwbDg/
SW5BdmxpUncwSlBebj5sJS0oITlYNV5SaWp3REB8SGAwK3I8PVR7Q21XCnpMTlJ+Ym5aaTA5YzlV
fH52WnxrLWspP3tXIXRgNX1VdlN0Xl5BM0BnYDVLIzJ5SD09ZlpsaXdNVks9TXlscSYyRAp6VG0h
ZlJtakJHV0Qqekw2TFJBcCFFPnFRRFgqT3Ulb1lnSkU8aEYmfFRWaipwN0pkJmpgPzZQXmptUFY7
QVhzfiQKekowSDJzXjQ4ZXYkMjxvITFeMz59WS1YK254Xz1lY0RfRTRteDd+aDZ4Wl5iI2xlPU5Q
OTNfTGlVfSFVb2ledEpJCnp1fG1lSWJIUU1HX2VFPH5kO1RXJDxwXzN8Yl90cX0zbH5QMDZ5Wncl
NVlzVF5ic1lrTXtNUjhyUkkmMHV6PGtOZAp6S1l7c0dRditNPjY2Vzx7MGFoanNYU2R5emhKMnxa
WiRifE5JbXhRcEk+VV44PV4kKktqOSokZU9qPFI8SVltJSkKek8/NV96NiUkJktlT0VaPiRiPXV9
MUtZc3pyIz1qYEM5RCNtdWhuXl8yTUJybVpWMmIpSSZiKH11dk5RQGtqSXs/CnpeWGx5YWhwQmx0
SzQ+eDRILTtEb3IhbHFgd1BHKEpwJVQoP1omKWA2PUBYQyo5VjdiKXhCMHV4SCVUdnA+dlAjVwp6
KDA/TytqM09mRjBzUk1aN3dQVG4/Q2szNz9kc3xzPTtgaG0qeFRSUityTXw7bztgY18/QWJUYSVQ
dT55Mj05fkkKeil6aD05WmBiYT16VEhFOGVTSmd0PW9fKzMyNnAwTF45ZUgwMl5IN35hU19yb3o9
YTA1JXxEVj4oeipGR2NMYnRyCno8SmJpTzt9cyVZT0tWJHVNYHVAZTR7UVJPZyZiKUtJbHxxOVl2
bj5NdHUxWEc/Vlc5Ki1WX0syTGFxQTs2S3lsTQp6QF9RbjhVUCFoTi1TaEJ8RzYjbkQ3TT83bk0p
Zlp+bzkjR3dhcTAzYVp3YmJzUGtzQnhVJUdiby1sOTE3KUZiQkQKelJuTUp6bUh5KT1jbTMtNStN
bk0oY0hNb0NlKSpeT0tZaSk3ZX0zbUB6a2NFTWNUU2dBelZnNiNBTiRSVmV8ZEwmCnp7IUNAez9n
emozXy18aSY8NmlAJHIzSXBHV2lmVE13O2ZfMz5geDR+TElpaDRfT3ZCMCsldHBgSlh2YDVhJSNC
cgp6aXZHb20qYD5YTEc1WGZRYl99NTcrQ3h1MDJTR2U/bHtqfjUlJXJjbkF6VjN2PipedEZ6RCM7
VXRqcXkmZ3VGNEIKekpOVlVxPmxic3dfZFIrc2NrcVZjaUA5NUoheHN5VWpGWCRzPmBkKzFvdkEm
eUdxdlpSJHFoZF5iaCtDYlBFJmtHCnpIWlNjPT9TLUFHeXxePkEtP1AhVHBMSVVte2N0JGtgcEZE
emMyclY9Ty1+cUptNmpvSSFmbWplMXt5PX1xWTtMIQp6UUptZDRmTFIkNEVRM3F0Xlc7WHpiZG5C
a2tpQnI9VVlCckp2bGxAdXl1XkxSJjdiQTJ3ez42eCMzazReWGd9IWEKelQkMUgrKjB9ZD4zNUY5
RUwmKjJ4ekNebkp2cTE+I2FxYVp8Sn5jd3tgeXVlUGs5MS1APzBvcUh7RGRDanRnPCZaCnozMztm
K0VvMC1NUCgyVE5jKHJwT0o1SmE9KjZZR1c+VUg2NlleK05RPWxJfX5FcF58UEgpOE1vLUwmO1NN
fVNCawp6JU55cl9oOFlxZ1ZePFJTQGFkRT9sPlJodVU8R0EoS3dAdG8qJkQhVi1CNm1nYiZmT3lp
ZnZXP3RnNzM0SXN+KD0KekRrJn1sSD12PWl3QVFmYT4oVUleYnJ8cmFpPUZ4MD4tQzkrSDJCMElk
VEBjV0tmbHdvTz1eZDRYJjk9fiMzT1R4Cnp5Szc+M2FMQF9nLV9oXz5MWGh2SDNTV3xHKjU9cm8l
WFcoa0B7VGZtcFFGWjkyYnh2cTdmPDxWX2RBNncpaWhYfQp6Ty1JKj81aj1NcHdtPH04KDlzNjNT
MkYwZ0x6JEhmM3xZa1hnemJSPlRjIUtLI24kI2o+O35aVDhAUFd+YkAqPXMKei0mWn5GMWBZMkha
U1hDVUQhKit6cHtMZmZGMUIxZGA4PGlSO1Y7PCNqRj8xJV9uaXQxe3xIR2xEVFRLbDRKSEh+Cnpy
VW1RWTZHejk8Q15LbzVAU3VVYjIpUDkmbDZncFBnNCthMzkoKT8kZz1jUzZpbWl1fDhjYUs9V2V+
S047WVdkYwp6NDVHanNkTWgpJlZlNmQqRkJOaHQqckIhcnA0T1JHMDtadDI/TVl4ViVSMGUkMF9Z
b3t0M29NUmtTYiZhbyg0R3MKejl6QF9UR2FtfFFWRlZiQGxgSXdANGhiU3l3KEhQbmdZUyg3X15t
PldQVl5DJlNTOUFvTkB0KTlELUp7cEJeRjltCnp1cjxMfWdkNVlYSDVWWHlqMnJQV05mRD9lUVVI
YFErdnJrPTBWaX0zWU82dmwqbX5CI1V9WSVOaU9zP1Azan18Nwp5Yjs8bFgpcihTPDs9ZSpPRmE3
LVZvM25IR3Bhajw1OzE/azkkd2xEOD1Fd1hhN2UzaikwUk5BKntyP004RkVhSDIKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4tNDgweDI3Mi1zYXItMTM2eDEzNS1k
YXItMTZ4OS5tcDQgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvcmVkLWdyZWVuLTQ4MHgyNzItc2FyLTEzNngxMzUtZGFyLTE2eDkubXA0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4NDNhNDM2ZWI1NjhmNzQ0ZGM3Y2I4MDBkYmQ0YmM1ZGNkOGE5ZWIKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE1ODUKemNtWnV4VTEoZkk2clJufXZgRTAjUiphSHxYfHgoKnZi
bEc2bFdyQytCKmJiRUVmc0JqNWlmSl5vdHdTdntoNz42CnpIb0hNRXBrU1gwUXQkXnNwTShiZEwo
cWFDMkJ7QT1BY3pWe3V+O289dERwfSlfI243YHZ6dEZ0aGRYbj1iSXkwcAp6bktOX21DNHxzV3c/
dzN9Z3BlTCRCeGFFe2ReLV9rbi1GcCFsJDtaaUE1SD9NIUZqaUxVJVMyWHtmVjJPez02fUoKekBz
Kkt2eF5lSUNlPjk1fFdqYWR6T21iP01EXiE7M2FxM01UWFdXe0FlWU9EcSp5RT44SlRoOVEoYFJO
dDQ3ZC0rCnpPZVJffTQ+Y2BYUiV4X28qQGopeVQyI2x6NzhlJV9qVlJ6KiUrZis4PWYrSHRMUU4r
eklHTkI8bVp+Y0NuYTZ5YAp6cmptekZpM1okQEdyI1dHUmpYPUltYUAyfHhNTVgtUmpYOytDN04p
aiMreV92Y3RGUmdQJVZVRmIhRmgjMXEocX4KelhjOUdmO0ZecCFCMyNNUklxcU88ZW9iWnhhfWpE
JkVxTlNBM2FIWW8xaWw5Rj1NJUBtN0ZlKjlyUTlqbkJlcVJMCnpybkQ8bUpyYWh8Tyl4THFFRFJP
YiZTO1Y5bm5aK2hEbTJjckk7JWwod2A/fDVhcFlxIVRMejEhdlF4djQ1fmpeUQp6cUV2R2tHbXYy
Uztzd2NDdUFlMT5ZM00kVk5KfCFfTkNCY2BoNyhHYmFEfkoyVCtzckswO2RTZjB3em9zcDZmK1MK
em5JZShvb3hUPSVHKntDZWUze14+SkNfTX55R0RWfkkmVUdqUXlqTjhwX0BjMFJIfVRRYShfV1BX
eUA/K0dJT01vCnpzflc8az97MnFpe0wqKVA4UGRlVnh0Z30xSUtAKUlxVnVMMSQwfCQhM1hgfWFT
PHspQWdoNlI4b0hDNkJFKHRGTAp6P2h2YHlKbnJBekNSeFN7b2JhPFJrX1glV3RwRD1vJG9XXjdG
NVcwI2RGYk82QCQxXnYmKT8ySmVDbiVqekZjfTgKenlnVlU/S0RxcXR3XnQ4OD9AcDIyRzFCK01w
fjtnXi03JDJZKDZ6ZTtadWA1WnBSVHxCLWUwZXM8allAUUJFdF9uCnpgcXxDPDRAXnp2X2tVTTti
OUxFJExzVVB5dXp3JUVrUk9zUFlvS3RQRy0/NFBkRzZROyVWd2c7NFg4c1RONmZQYAp6ey1lT1dO
MXhoWnt2WVo9JXw0dU45bk5RVHk7Smt7b3RvUihoSGVTb1EpaXBHTnR9WXJUfFphSjlXO2pBZyhR
ZD0KejA4TjZ1ZVVaQmo7cSljTEJjcnQtbUt9dH1lODV9UyRUUX1Ib0BIcWViSG05IWk3TzJPang+
QF4oJW9DU0ZYO0xQCnowPXpkUzd7bURjN0d6QWpJQ29mU0Y5dj5KWTFLTEd1QVJKUGVxcTM3PzlT
T1dUdGlFPGZNJUw7MyFgaF53ZjQ4JAp6Jj9iPn1DS3IlOStkbVJJMmw+diVedEUmQylqQExmJF94
MkNITG5xdC1zenZkXzs1OHhkVFlPM1VtSUxTOzZjSFoKemZJTiUmNUB4XkJUMHhwJmlmXyNVd0Jk
S0dKR0wjfjUlYHc2eldtXjMzfllZM2kqRXREM3hRXmtQYmEpMWpyLXtDCnFKSGI2bENXSlkqP0oq
cTEzY3EoVXhTfShZQEUtaV9PJWhYX0pqTlF+YyZSV151PkoqaFk+Q3RXCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLTQ4MHgyNzIucG5nIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi00ODB4
MjcyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTNiYWZlYWFhZTlmZmM5NzExMDFjMzBmOWQwN2M4MDEzZWMx
Mjg0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1MDcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlWMC18PzAqdVQraylSSUteRldTd1c9S1J5Z3MrY1BhKD1FfVZvSDhlCnpzJE5CSTBaXldTIU4k
SSNBVGM+UndMfkUpSDlhJVdSX1hvantZbmElRFlpPUNyb0lOZzE8dDclbkkyVXxzbGlvIwp6QTww
JFEkKEFXZl9JNngwNjs/bjRhI0txWjYpSkxiQGB8bDBZP1oqflNeP1EwVlNPYjl1IyVFJlRPfikz
ZyRmYkEKejBTZUNmTVgzcz1kUzwlR2hRPH5PPTlZU2ZyamB+KUNPUWc2MjhMJCgyQTJBVUNifFpP
UnRBPDwyOElleXBrJjlUCnpVe2pRbVcpPFkoMkRKPnh2c0tDe0RKaWhoKkRvKEcqREUqSCVQJmdU
SD8qfDApSGc4Rkgheyklcz9hVTIlcXZOKAp6KDlKN1cxe25ieyF6SHlpeGhTKXNCcmB1eDBjMilr
UWhzVFB0Jik7SCRQI18xRWtOKC0hfkY7M3ooWGlDNDtVOygKeks+c1V2dUNvRyQ5WlJ+U3VPa0Qp
Iyh3VFVpTDV8QVZ7d3FYNlRgWjVHQjFHfndnOF9IKlopQXFlfStyIz8rYndwCno4JjRPPGtjd014
UGpCUjlWQmxiMEBiQ1lZZUhWQGQtdFl2PGZxX0BDIXMkJnFTa1J9e2R2ZjAlezNRRkBfY2xuTwpN
cj5tZEtJO1ZzdDBJN25YUVVDd3wKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9y
ZWQtZ3JlZW4tYmx1ZS1jeWFuLTR4NC5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLWJsdWUtY3lhbi00eDQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwYjJkMWQ0MjMwZGVhMjI0OWRhMTc1MDc1YzliZDZhNjdhZTQzOTMKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDQ2OQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXkVGakZwMz8j
NDJGTUc/dCEwNFNCNT5YUTI+dG1JaXBSMVJjbEFuflMKelNDTHgpbHhKWUR2OUJtZE93TFglUUFr
UW4mJjt6YGRjUytXbDBzJlJ0eH53RHVZcXJZYjgxR1dNXiNhM2FGdCgzCnphI2VQK1dyfnUkOWhY
Z283MGBnKClSSUpuaXJrI01WeWc7VUM5dF94S3NIRU5VcjdQMXEkSnhgJHF7NnNMV0ZPQwp6Zl4m
WFJzKURKV25RcFM3djR3KVVySmtYd3JHPTQrailJWWFwXyNzY3JNe3R3dTdSUElmdSlzIXAjbF5y
Kj5OZUAKejZzNHFEMS1aQ0VFZCVtd2xgPXw3M2FzPz8lZ2Y5NCU4bTglaV8tTkNFaUVuZTRVRmBT
akM2cjJiYy13Vk4panR7CnpeTk4qME1uS0dQTmk5dzskfUF8ISUrRkgqblZGY0JVc19fVHFAKWtC
TD8zRGsoMGxyRHt7Y0RoNUs3R2gyMV5tcAp6e3xjViN0YmskMWxKNG0xJGlUMyVwWmlaREUwRTd2
OU9VbEF1PG80OU9DWDBReiRlNiZmI0U7SHxOc0FpLTJWKlgKdSM9bCt4ODNMWHpqdipZXmxPeFY9
bkFiUzlRSXZycmZIQ3ZUak5yZE9JUjtOeEtiTGgqMn43WWQhaXZFRgoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi1ibHVlLWN5YW4tNHg0LnBzZCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4t
Ymx1ZS1jeWFuLTR4NC5wc2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmMjZmOTQxMzg0YjI2MDE2NTc3Yzg0ZjE4
NzI4YTQwNDJkNGIwNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjAzODAKemNtZUhQZDNZMDUq
U3xCXyh7eGBiZCVCaztQMUMpaGQlOGtIT0l5ayEzVFpNO0wkaUBnK0plWD9xNV9JK1dtUSV8CnpL
dFdMIWFiWHUxMVZKX2h3VEtsXiMzQkw7WHhAOGd2UF97R1UlJlZKRlZpUDg9YnJuIT1icm4hPWla
c2xeUEleagp6c0hfR1VwYnIranUmRXkoQVE+Sk4oSFJBME5fR3JZMiV5ZjQ2SUI8RDZscFdFYSRD
JFFidDZIRj5qPHNSbT52MV4Keko5e0k9SSEkKXVoKlZ7dyh5U21GYmZ1RmxNRD9WaEhSPyU/PlAk
XiFaakxha01jIWdDOHdnUypaWllWTVIoVlR5CnpxKUtDfEJqaXY8WUg2Z0hmez1+YmtAPWBYSlde
UkhSK3ViPUk1aTxucUx3OVJofEBDQFdUfX1NTmh0JXhOcnwjRgp6WD0we1NtTGZAJSRyQ2Y+aTg4
VXtofENjfURhKWQlbXNiQFFKR3o2Vj84cFheR3xRI1o9SH0qdj1IdnZFTUp0dE0KeldAYnRnbGNZ
Jlc1e1Fza0NtS21yaV5PUCtxSyFFMTZjU2RvTVEweztDWmliSFJuP2huV09pZ0U+ZDE5QyMkXzxP
CnpJeDw9bHM0KnN9TyRLUjskfUUqN0J1Y3cjcSoxJXRtfjlxNDwoZnQ8Q0c+PVdGcF5mLVBTI35S
TlUyaWtZVDlMWQp6MjFBIUV0ej1PWDlEIyQ4RT9aaF9DWWxMcDY9NX5tRU5ZXnQzMz9MTW1Ha0JY
NktTJEduRXFuaXU0O1BwKWExfmQKeldrTDdsM0pha2tPX215eU51Tld7ZCFeSCFTZk4xa29HeS02
cz88Nm8+WkQobV51YjIlSWRJen0zUk5WTGdKTUo/CnpsU3ZaT1loKVNuUkdEMHNFSkA2ZUNuaHFD
KDh2ZERDfUJLbVJIVyprU219ZykoMmh4P3REcEZmdGhrWDM4eWRCfAp6LWVmVlQkUStmfnRrPGJr
QzsrOFJNdld0XlQtMFZzLUIzbipEbT4oNk1rfWNAcylAM345SD5hcD1gYHxgJSNANUkKekIwV3Uj
bz0je2FETVllSGw5OEkwRGp8flYoJFo1aUhKWT9rSEFSd0EkIXp8Uj18WXAqaDljQnFUSnY5O1c7
QjF1CnpiY0lDK2NOZGtPZmtFRT93X1M4JD1Bb2BpYnlnVUc2QiZeUzxDRUd5cyktNG13YXlCP2pA
ayN6RHZPbXMlT3BGfQp6eGxVWGdoaWhMelpLJmxZU0U8bmk9QlFEfjZQaGUoQyN+QnBTNCY0VC1N
XmhjK0NIUUNVLSF9NktwNmpTIU8qNUMKeilMJEYxbihFMUJtNChSSCFrR0FIdENfYWp4IzVFeVdK
JUdVdEppZyYzUj5IRmhNWTBgQFFofTspezB6Vih3aSh3CnpsWk1EaSZYUlZlY0s2UntSaTtvPlQx
QHBpSiZ8THJEayVfYDYpRG5XblEzV35xeSFuJDM8S3d8THAjZDJnOzMrNQp6d2VTVzc/flBLfCY5
VTxrVTRpZ0Y3VGcyOzl+KSt4XkxEfnkhPXZuXyVPZ2NoZlJgPk44eTttWlRePWM3MD0jckYKeisz
K1pQPkdEVnM2WDJ6YiQlYVNTT1A1RUFtO2YoYk9nMjJxVWI7THwhfn1UaFZ6U3s7X1J7NSVBfH04
fjduMlEtCnp2WD9IODZmcHJfeHxuUXVsKVpGJHE9KlVkKCMyJU1xd0o7MkJTbFBybW82cTc5JVYw
Rzl3fWwxeW1UP3lARjt1Zgp6QDw8VUE7SDhWbmhEWF47bXEmYDIwNTRya0hheUIreDsjP0UxYkZG
VXZmKXdvKCZkcE5DY3NNPGxNUm91bW9BU0sKekYjJXE+bX40Mkl5PnhrYGh6YW8wI2JtPnk/NGA+
aU1ORUt+RSshaXVXaU1TR0RQalY9YlRRZlJEMH1KaE5EJmpACnpySGpkaU5CTTgqNjF2bVAycVZs
ZllsZ3tXUjVxSE5OPjZLdFhPeWkqWFNWczZFaWdAfSFiWH5IQnZmKGBxfCE9Twp6KlRMaT4zUT1Z
eDNCcVZJcGI4fFR0M3EhPFdxK3p8d1hPdnIzVW5sRGdRe3RwZ2tgQThLLTNoQ3Ricj1KR3I5ckgK
ejJ7NkBINlFzPnRROCEpPERAQzlaU2J6IXMpZE1sODFfVTYxNFZhTkJBVCt6c3V0Yj9EKDMzYG9O
MXs1TFBFWUVMCnpsdTF9R3B3SjVDczNDd0ZAZ1FVWm0leCpJIzZnU15TNVd6QlIjQEsrQXIpclE9
b3x6YldTenhUc00xPU11N2JqMQp6UkphUjkocEBPOChfMzlOTCR6ZCt0NTlVbjdyRnxOTjRNeiRi
KShpbjFrRG5GeGVeTks0VjdrQ3I0ZnJZQ1I8JmUKenNTU0JaOVZIZ3lMJUlVfSE/KiZBcmU/VTJF
UkwkdXFxJWgqMSR2RlJEfTl3IVBnNDVJN0pYaW8zb2RMVClHKmx4Cno9NDhQZksxV25rWUFkYklz
NmE5VCF6KiRkbG9SIXxuRnFTOUZgMnZVd3B5KkheXzNRTi1ZOF4mSXMoKWRsWChRcAp6djhoQjZz
eHhZeF4hY0hSRChGKnppNmwpMXl+KElgRyFaIyNrUDhnR3VUeCo4KD41P0dlNEdgfkh5MGo3NChs
aHsKejJUJSZIODJvY3dzaT15aj5paXM/IWJ8UW5LKnlVZXI5Kms1cWJYIX1TR2Y7bV4oSXZvUC1s
MztzOChAdz94PktDCnpabHRFTHc8dUk4a2s7NDM4YStJN0RHbGIodFhhMClyQWVaVWpmUTZAQ1k5
MmwkYWlRY280PiZfS3I3NE08LXhqdwp6cz1LVlJ8Nmw0VEY4SWl7YX48TSZhOXpUbWdTUzNOcVZq
OEw5KCRsNzN5cCNIOXU9TVd4M3VoN0RzO2hkWDZvbyUKei1BPmh4P2MpS1JkdCg0Ym47enw3SVEo
Jjh3eUlITWVQQ1V4TmcxcHxyVTQzT1NIIV5iMH0lJWIrPnVHKXRLNU55CnolM0xlVk8oZCtmYGZ7
eyV1dWxET3M1KzwpZjxHUXJDQFc8MiNuVzAkSGdoS3gqRj5mTUlke2RQWUdqP3g8QVhNUQp6Uld7
TzhMS3ExUCVBdGJfZmIjRGdVP0J9ZzhkT3RlKDJDKlp8OWt1X242bGdIKTxCV3BTKTtVU0pLc0xJ
RG1fYEYKeihzbn1tc1JfTmxoRy0kbnRmZSl8YV8wdWNjZDkjcTFxfis0cTxwPGo+JTQjWCh9T1F7
c15RM2E4bHFsaHFjJSlJCno2SmE1e2ZZJjxKbyM4JXBTfUlTREwyZSp6em81aWIwaEByS0NMYGlu
SyReXygjJW0+KkpDYVpqeDJ9aEBxQj80Owp6ZHIwcENyQGk0cElKTWcxUUFoQzMzZDE/S2dPY2Yk
PHhpPk1aWUMtJSpCTVBYNDFXVz44PT5eUGspdVk3ZEI8UyoKejMqZjRRZnYhP3AmQzJSeGJvJk17
YngofFBfLUlTaThMcWI1WFhyaWFiNGg4WFNqPyNWQ3R7JTVZPU81V3RQK0JnCnpIODVLbyR9XiM/
WnpqITFrR3V9NFllWGBSbVEwOFJJdGItKEJ4YEFUQWNkampKUzF4ak1pfTVZXjRZOTBYcG5wZQp6
JUZpXn1QfmZ4NXAqKldlTT5JcUU2cUtYJkhpSGh6WGtRRjU1R3VHQipAJn1mbDJBODVJVDZZdE9I
Q0VMdWQlWkwKejtFU3tqeHNELXxGYWpZS0NgeyZ3KVNRVXApJjBhVVJYIyZwTjtLO1VsOVdgIUY5
NGA0OGtuRE5Gc3FDYzBpZWY+CnpUN2pVNEAqXm9WZWZyeDwySllgZkdgRHA5JjAqQT5WUFF3ekko
SkxBJmFAV3AmRn4oP2RjbSEkVEwhP2Nydk0yNQp6KHlmYkw0SWN6JjA8aU5xVj8xRmZVS3BQYSY9
S2tjTTV5Y1YyeWh8KVQ0M34tZmNrVWdtV203TUJgaWkhdCVqK3EKekhqQ0hfS2Zwa1VCQFlKaXpp
IUJJaXtaej5EeCNqUzVITkZHVG5uUU5LRDVCO0hmblUjUn1nZkBQOHFOYTM7KGhpCnohdllmTnhR
MFVUYGFlTykqYVElOEpPcj9RSXR0anFLN2NqbUMwSypHPUItPiUzIWwwSDd9NTdLOXJzWCVfMCts
Mwp6MzctZHh4SyY1cDdKI0N2TXkkNDNuckh8Y1R7dTdwezZQcmw0Kkd5NzVEejNFMzhhSFRBUCpG
USFKcT12ZktsS3YKenBhdT1WMEg1LWshREtLVSVtUT0zM3QleD00cHhFblU9IUYxd3U0PlpVOWNa
fjA2cWJxZnoja1RYYW51d042LU9vCnpnTEBjO0BpMVIzODAoSnAjYlU0bFNRM19qPHpQaXZJYVk7
QCFwMzEqJSF0e3IkPUgrRjlCY3UkOTl4NUohcnM4JQp6I2BhPyRWSkVPSnUjNERMPj0qMVYmY2Ex
XzI7TGl5I2llKSNve3Rafll3JDtMRWp8SUNnd01wRSRDdSkzQG1LTWsKel88c0JvezUwTiV8QV5t
VzBoU0xkajF8Rj51cmdRKlJ0ME1gdERhP0hPPH5QdXdYKVctd3pCckhqPDd5d3dYdj9UCnplckkj
cCFFNztHIVhDc2ZXZTtibyolUjFQKm1LIy0qe2BzN3ZKYkk4WEoyR0B1PmEpdmEoWnpGYU85amEm
UGF9eQp6KTZBTDBZMnxGLT9CRT5jb2FWSDFaZ2FXWkZtNDwtb208S3MjVTBPbW9JOThNQjZrfmlB
TktfSjY4OUY1JExyMTsKenp7fT1VQEtpaktIO2NFN19iUDhNPzxCOUNfWiMxYi08T31uRlhvVHQ4
fkhRJXReQ2RXX3hVSUptLStWdTBmSEVUCnpUdT5wPDJxcF5WM0R5aHQyI3lRZDFeMHgzIVo9fkp1
dHFwdUk5PDNAeEsoJnFjdExwNiRIeW5xQyh+emBrSXJZQgp6JnIrWSllTG5RTD08flpNTllyMVg1
UkRQcE05KyZoaXVRQFY1Wigwa15eTnQtXkJ3ST1gYWJXdyRAaWV8KlNeMmAKejFeWHJWbUhCRD5y
dXdiJCt2I2BHQDRDT2hLZ0tgYnwxdGtiezttRlJgWEJlZDc5YT9TNE53SEEwO1VBNDJ6V2MtCnpZ
ezBGKzs2UGJtTVc3KllaczZ2P2p7PmcqQHElSzVpaD92akdsU0x6OVNwaEAlbkZWUVJzXmVxcEEy
M2ZkXm9zMAp6Z2N9a1VRV2kya1dLUEl5QTsmXkdMVzRxNkxUZmA/TFJXO283dXB1YTNYMlVaMyk2
P3EzKT4hY0NoVHN2LXJlJU0KejUjNjVjd3piPklaZzt8YWhVYk03O2pfY0hnYFc8OytnO3Fmc0Mj
NGdgUTNNUXxFZFNPTkI8dGZkTmxXVnNtSXxTCnoqTHNIWjlNbl9ZYjlUP3xKLV9VUV92K3VQc0BM
UGEqN1o4dD5zSWVSeS1Sd1Zkb1N5S3U9bGstVlNWIVlqUEo5awp6Ji07Q0BfNl9jdihedURiUVF5
Nk5lLU1YP15UbTRjUXQ9XmlNP3xsUChnPDZgbnV1YyZfYWZzV2hleXRjKyFweSYKemxyU25Jc3k9
RV8pUGJtdT0pVGQpPSppSnJxUTh0MCNBTClZIzRMJDk1XzJhdUVfT3VoKTNMaV51ZiZETm1CbWVw
CnorWSl5bi1ad3JzZW5SfShfKjREM3tXQUpCX0l0NzRYWmBYMXNyPylKdWpxZSMwNnJqWGZOc0V4
MTVPTyY0OXB5OAp6OUpxR2lTJjJ4SkZLTG8ma3o3bSZPRElwNmsrM1ZfeC0/b2tTfl8yUE1FWWw5
WU45QEllZDJqcGtaaURRaEhRYFEKem0hJHFsPlpCRChyOz5lPmk8NzQmP0BxcHZHOVpPV2NgNDt3
WUgrR0RfMzZ8RHNlaCFVciYtZHJyZD5ec1A5Sy1QCnpHV34ydU5KZUdHKz44JTFJaGg1U1EjMFNx
ezlUP1ZDKnxBYUtNI0AmWTg8cUEoM1B5WEVGeD10KX1gI29ZKnFHfQp6PzZ3P24mYlhZX0ljPlFT
eHZKYz94IT5rUjwhU09aPFh6NzFtcD94TCklQCFQaTNPSHw5Uit0M2E+V3loZVRBJlQKemxFVEBB
JEJLZkFoOEhhX2Bub3U+U1g7Y014VDdTczxuZll5ckpUfHNyU25WQW1ofj1FbXUpS1I3QFIpJWlO
U300CnpoPXg9VFN3N18zXjhWJFBAO3lwaUlhcysrZDB9WUdQfipeRDZgLVE1VnF3S3NtMnM2NUQm
SEIjOWFjR1AjangrSQp6V0wxLV5qI0xMJWtGRE5aZVk+V2hXP3MkdDtxays1IXc9TkAqTiY7KFJD
e01jO2ZNdHorRDF4OEp+OHI+UTlWWksKek0ock5XOChsa2she31SJjZneyV8a0BoakVWYGh5eF5K
dl9vRXN1V21TZFlpX2tHKGg2ZjI/WmtvOHZnK012VTckCno/IUt4KndOYGJqdUI+aWxVNThxc1Va
VmF7bGMhbXZ4a19YYzN5OTEwKzRUJFJ1Vn1OaTMkPDRwYXZORzN1SVV1SQp6PCs+Wj1PVUpKb2Yy
WG1jYWJ1JWhLU0lDRnomRElEeWxvNkpIWDA5XmBqfWN3QyhIeFB2Jj9OMTxQI1E4PSYlZzIKellf
TVkxTjNGWmI1Y257NClEfn1oJTY3M1NyKWZwZ1pfVHlNWj8qKXM3K2ExYD5fNzNAaUkqbzhQa1Et
cl9UJWN1Cno0QHsxakpibSlUQy1SP0lHWDxNY0h8NDw4c0hyb2p3b2ZhV19SNGhPXnYzQyomUGJm
R1Y4KlhjaihCcDwlLSVEbgp6JkFqd2YkeH5acWBPVUotSXtXbVhyJm00MGVuJDdxdjFnTj9VSDBz
c3ZvKjZub3w4REliPFh7ez5iVzAzQ3dwJGAKemJOMSkhcEZjSilaUWVeU2E5PVJLYUF0bil7OHR0
UEV8fDM3KG45Nkpvcn1iYVctdDE2QHp9KjV3V2hTTFN8Vkl4CnpUaGd8KWVDaDZHKGFUO35jN0op
cF4zeTh7UiV+MEBZdnI+bUA0VHBhQCNJVCtGS3UxYmQpMXMoY1VTOUhwSWNNMQp6WDZNQDJ3WE4m
OD56ZFltenJKPztrKFY9Ry1uNX58aEIrSmwqbDY2P19EYTwmaGM9fmUrTylhWD02UEgyRXcoTEoK
elVtZiU2WFJqNSR3dEs1Jj56WncwK3ZkQ3VVYm5zZSF5RHQ/SUoxNG9fNSpLYnl0KHpRbjczQiQy
O01QIUMkQDlxCnomVz5GVHlWYGItK0lgfmYhRVliZkdpYzlfY017JiZfLUAzekU4WXV6WntHWERf
aC1JdS0jY21WdCRwVHcqWTwxbwp6VXBnQE0hMTtxQzUxdStTPzlqMnBMa0ByVkxHY0Yla0tgWk9g
KGdIbj98dmx6PTxTYSlLSGx8Nys5eH1ZclhKbiMKelkzaXB0ai0/JmpjfDg2Mj8kMHRtK2pBbzgj
UVBfNlB3eE1gQGJlRSZtN1YoSl53ODVNJkl+X3U/KENTZVpSYSVTCnp1NiZ7WTs+TVJ2VSowPUU/
RT5lKj81X2c4WVc9I2AqSzVEJl9zekRwdzZeeXk3RzZDMVpTfVkzRlIzczZfP2A4Owp6YHxVSG9f
eC07MGFeSzZGdHxWUH5faUZMZyZ3aEMxaHhRLU1LaTwxRz4hLWs8UiRoPDR7P15aVktPZ05GKzBs
TigKemE+TUAxKz8oQlJadX5Ybio4e2dJWisoNSthUW9oISp9cnhGP1VtbSVlbWA8fCNORXNIbih5
PU9GYTR3NkFBOX5CCnpeNStHKyFFVUdpKjlmN1cyR0dMKl8yejxsZihHfn5SRTlzS00/ZHNqNFdG
bStZIUQ3R2AjSmtoS3R6NEtYc2tqQgp6JWghUClSUldyNjVRb3slZ1BCMFk9a289OGt3NzJ7XmJ6
XzVoV2Qqe3stTlEpIUopeXk7ZWpJUmE5cnJaZ0o7YXcKeiRIJip0SF45Iz9BakhxbEY5ZTxaTGcq
JWV8SE9jTzl8K19fPWgtWVE2NXhSdEQtZzRQMTxSUUk1Uzl6UTxpSDBMCnpjdEQ1SSEyJWYwPTVU
cEBmelN1T0dVe0IzMGk1Tm0zOy1BI1c4ckxeIXtoUWZFS3hHNzN9bXEqZkBHWmhWWEVOQgp6M0Rj
OWZBQGtSflE0a2QhVEQ4OX1JbUkmTGdufTJkcHR8R1k0WWY1alowK19aViskQTdYbz9RM0JoJEtf
OVI0bHcKeiViUE9+ZXJ+JlR2cDg8aWBsc0duZUNYNzd6ck1XVkBhZ3Rqd2U/TjJTfnUrYztMUHs4
KEBSRVpvMWIyP2FvM1R2CnptK3U0dTlFYVlyRFc3OztQQWNVPmdlLV4rSih2Jn4ldEBMKUtMbU5P
enZASXNhJitCQSVadnF6PlFKPmM8d2d0Xwp6SWx6bGVKI1oyX3Y5Nm5AWG19YillQ3UtSXVSVngh
eUl9dGtoKihzZ2ZnbCZXZTdFQkZDM2VzfVckYVp1Xy1YST0KekNtJUJ8U1ktei14ITFwR3d9VlFI
OW8kKUcyUD9ZJFZoMHp0KnVTOXZsWn5LQWUteGduOFNuQEJLbSVWUCpUTDd2CnpWKSRzPTBBJipY
dGR3TWl1eD1nQFZ4V00zVikqISkyPjw7fU1+M08xQjJpQ1JubzxlK0x4QiU/U1A9RGM3UUdoKQp6
U1AkeEBJZ34maCozJWBBJEtvOXI5QWFlRE9RbVJ0djB6RCpqTWh4Kyg+aUtwcHRpNVYtI0grPktN
ZXIqS0cxUmYKejJPc3dXPSE7ISk4VF83R3k0ZC19RUAlcHtSJTMxLVNMM2RKKnNFRD84M0V6SiNv
JDlPeWtoOFdufG5OMXRiMDZJCnowJl9lIz1DcHlPO2NuWk1GP2ZQKzdaNVk5c35GMUVmcCZ7eHJM
Xz9qO0JIe0lKSmomKUM2WmxiTzZ9QSp1UWI7QQpHWnRfM2JWYVY3MwoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi1oYXJkLmhkciBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4taGFyZC5oZHIK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmYyNmYyODQyYmU2NzRmNzEzZDk3MjI1ZTZiNzMyODkwOTZiMDBkZQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMzAzCnpjbVkkazR7fih6Ym82c308eCpEZ08teEJ1RDk8ZChQ
O2dBaVBmQXE/JGpDM3JGVjRzPjtCeGExQF51V2NIOCM+cwp6JH1FWDUlMU1uY04+NTdWOz9qKiZG
Zj4hcGpzVEtlT2lUO3t7cj8jbWBXWURpUGhnblAwT0Mmb3ZCK2Ule2NtQXQKa2BgXmFVMD5tJmdA
UVQlZylVYEZWR2AzTX1IP3E1ZEtLanIyemFRKWQwTnAlZG5FKEkpCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLWhhcmQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi1oYXJkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMzNkOTMwMWY0NGIyNzZlOWVkN2M1YmVkNzhkMTRlNThjOGQzYTUzCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTY2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYx
fDtQX3w0IyVgWSlSaGtFKTQlY2FLWVo/bFl0X2YxczsqYgp6Mz1HYERBazRAeFltTmpea2lFcHkq
T21QTnc8dGZtbUIlI3dZWVlyNSh3OzdrQXJedisweGEpO0d5WjEpbm17SDEKelh7Tntra2lBU35T
YE9EWDM9Q2pfZGpeZEczU0RJSXBBbmdkVT1NczRqSFpKQGsoQUxCMz9oalQjfHIkO0NEb2RLClFj
MFdrOXI+bWRLSTtWc3QwNiNKKVp+eT1SCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJj
ZXMvcmVkLWdyZWVuLXNlbWktdHJhbnNwYXJlbnQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi1zZW1pLXRyYW5zcGFy
ZW50LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMWYyOTI4YWUyYzkzODI5ZThkMzUyZmMwNjk4MTZjOWQ1YmMy
MTMyCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMDEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2
cF5PZCFtYDF8KkJOQHV+blJfN1lFRFNNfj9ZaktYP3lyPUdOYTFQViFkCnh4O1RiIyV3Iz4tJGpp
WE0hSzg0Zj5kdDlpcXFhQ1U4KkxOaik/JHtRRk14XnxKWURAPCk7VDNLMFJaZjs3eTFBSQoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi5idDYwMS52cDkud2VibSBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9y
ZWQtZ3JlZW4uYnQ2MDEudnA5LndlYm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkwZTE5MTFjNjJlNTMzNmU4NmI1
YmY0NTYzMjIyNDc5ZDhhNmY4NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDAxNQp6Y21hKTxl
TmE/WTc+NXNeeTk+bmJmKDluKWw4Z3h7MFY7a0I9Q1l5PSY9U2RxSSVPZFVPcmZIZ0t4QTxiQUIm
RW0Kem1jUzVAJGdEWF8qYUImeGtqP0l0Qi1Kb3t7REJpQ3FAJWBVaExTaWk2YGw3a0VYJHR2a0M8
Nno/c0k8by1nRDErCno/entJc3dQe2Rhcl9vVWQmMTNkP05TIXNLUkhgV34mUGA5PHQwfD85bmlB
XmhuOz5MNTVjcmM5RDc3X2pVRG1jQQp6T0syPmY4e0xxUmFHdmg3OTZnejYld2s3KyVoOTVaVW1q
dmRvIWEqSVM8KXx8b3NBWEJfdWV5I1cmWmErSTdNPyUKemVAbF5FcW1EWFN5czB7I1hvVkFkVVFk
UFRFZXtDfTNsMHFxKiVuIXJ2cCs5PVV6I2M+RzxhMlQyK1hBM1NsM1MtCno0cWgjTjw9Kk07P0Yt
Nl9zRHJLfmBMKlF1d0xgalE4c0EwKm40I3NPSmdlP2ZxRWAhKTVUUCktTlRZSGRrJktadwp6MGUt
JTBvfkRBO0ooQ01nWmMkKElBbW5oQHZWKCF8LTdmN3ZfZUZ1PCk3cT4qenhnQTItRys/TkBieHxL
MWlWelUKemBQVDJ0dmQxUT42SE9OJXNTTWRhRHglJnp6QzFLez9CYSVkcns+KiFWfGB9entNLSpG
ZGVoSXxfd1BQd3RvKm9zCnpaYm5MZlQtNU49ej5ZQ1BIXzttP0BoOFBaaD5qQ2ZndXZ2SUxSMzFV
dUI7YElEYTQ1fWM1R0hDJT0mVWxHe2stYwp6PXgmc2pwITZJe3VjMzRwcVlpRTtVNH5MRU8wIVhW
NX5WRkQ/TCtCYjc8SFZCKCR5JjRqPyVZTFQ3JU5CUDxqS1UKemxTSm8wKmdtVT1ydVNMak5aRjFU
NkxyYXE0ZU1nbUZBNiNtPjFpN0BkeTdJaWZlXkR0bT1JMkJDQG5AUTIqRnFRCno0eTdPam12c2dx
Yz17fCNLP3B2KDUyWXRpM1BTSnxkUW0heFE1TyhgdEticmpRVl94fVRSfmt3MndOSTxwcVZZWgp6
T1NLJmlRMl8tYll7TTQlM3JoY0dsKExQRUJ2dkN2czRFeVQpZ040aGYtT0JvPk1KPTExbEFiYjdq
QkdlR1I5X2AKenZQTCRtIVU4XlpiZDJrND1eODNAc2BhVDRQQFM1V2BTTzVJKUF2NHVqZyRHJG5U
VGlLPVdSY2d1WChyaUAtMDhGCnpTRmZ9dGBtKGMkZWEzbj1eTDl9eSpHTyhlVXF4TTA/UCRgWUVg
dVY0VTg1X2dITTxoZlBmIVlLQCE4KW5Edl9aUwp6KVohe2dVTz8keWwhOTcoZz1VXnNRVkZQS25+
ZlhaTzdzO30wJj5+JXdZTEZGPU9EUDhOPGxCJXZ9bDJKOCVweX4KejNVPWBvK0VNeTVOfHt8Xnpw
PTVhb3lyIT9eYyFhKENQSjNIem9VVjx3ZDJGSSpvbm47VXNwfiUkeyMjcVFGIUt5Cno9RWI1WUc3
dHNpbyo3fGxBT2xmc1gmZkQ0S0ZFc2Z1KCQ+P3UqNWNPcCZjbF9pJX5iUWdzYjJkZ3dqfSlmK2Mp
fgp6PDB1NzdfLXFlS0E3YSFVNnlZa2t1Uj5gdU8ySDdtIWJkMHRMLTtIaCFxYX5rckwodXdLc34/
Xl4hYTNfWiY7cEIKekprOyNfb1RERFFQenBCaSp8UjlVaWMrd0Z0TUcmcnJDPFl9MXNpeX0yYz0q
R3BLVV5FSCVoPzx1N2FtR04+YCMzCnpZflU7OHE3LWM0dnUhOUhLcTw0cXpGKCpkc0M/bWMhJXpe
WlExRU8xJmhmZXghK0Q9d0hfYWMtR20mSnNUfHBQWgp6JEZCWUd7S1heSiQ1KkNpLShPTzZgcEJ4
ZmlnQyRmfEQtdmduJSEtRTRmUXVKRSRMMFc4RjVIPCQ3Z0hGO3N+aisKenJ1RGNjVjxAcGlRVHht
YXxIQmd2JHgraWs9YCpkeG9HQ1VQYDM1I3lhTSRMIXNockJlR0xmM0J6bnpSMFBTWjExCnpUMCFN
dG5WNmxUbUlmc1UlfHQ5JSE+cSllWF97Z342YCt9elJvbGApbCpVWGBse0gmUzZgK3x8ZmU8SG4/
QkMmTQp6YTZNVypYZlA0aEVFUSNKbCtMfnQmcl5rUV9OfTxIYVheYDRlVmtAPnJkfTgzaHpxNGFI
Qj54Y2x7cW4jaD12dFoKelh8SkpXcF9FQnozRGlTbjZgSCtfUXEpN2AtJm9kYjBaUEZRPyY3PnNQ
enJBRlN2Xlg+TUpjR2tScSZSZWJTWC1pClk4Z307PnlmPkclQUc8KEZ0QiQ+JUtjSm9lMHBlamVs
bUd3IwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi5tcDQgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVk
LWdyZWVuLm1wNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWU4MTBiZTgxZWMyOTdmODZhNTliMDQxMDY4N2M1Zjli
YTBmYWI3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MzUwNgp6Y21lSTUzM0w9eSoybk1iRSRN
WDlOZ3lGMVZHRH5PQU93WFZBUzQxSklzX2Rmbjw1Zk8wIVRzdjJ8QE0tODVUdUUKelE5JXwzV0U5
WkJ1IXRiMmRAUTFUMm5leldmKHNEXlhIYlM2bTMrNG5uYStFNHQmPV92SU52I1E+KEhlOFUpOXkh
Cnp8Tkg5eWUqTFB0M0lKK2w2XnpVcWwlSmFlVTwyYlgtZm1BWD9CNlVXdVghXjcyK2tVb25GKnFJ
ITw+eHQwKEArOQp6Tjh0WnFFXnI/IzI4Z340O1A5Y35icU9+dlR6NFJWOWZZQip0VCl2YyhkSjZw
dUk7XihybCs8V0pFaDhGXl9+ZlQKemNsd3g3OyF1Nlo5VCh6YD8+TjE3K1YtcGk1MW81KiVDdT0m
amh7TW1ZNWomdHA2U1E0RjElSlV4YTtCTE9JanF+CnpeTGUtYXkrVnVQeUVZd3Q9RlZRKFpfUXI1
Pzl8eTdLX0A/N3gyYX4mRSlDQiVLaHRFLXVLT0dOUENRVU90Yks8cwp6TSFIVkNWZWN7RW91MSFa
OWg3OWhITT9mayhXRnNfcnJkaWpaZzVWazxTVHMrfEZGWShGPUVUMTNCUmB9WHhZMj0KemkhR35F
b3hkWXhRcGI7eW1kQ3hoNCZTdVJvcHxsVHE/Rz9Ld0chcSthaHQydCpCdEQhWmUodHBYVT59WkJn
WX5kCno2bVIoY3YjS017OVJLVz5nYXtgcmo0Iz1RJip0ZTUyVV5iMnZ0a3NSWUJzUnQ5R19WWEw+
WjA/bXV1I31eM0Erdgp6IWR3d04wLU8ySHE0cHo1Q29VaH0xKzd3UXdgc2RTWlB2bF96Y3FmNjN1
MU8heDBVQ3lzVy1xPnhzaCpEOH5JZGoKejxZdjw/bDxTOzJMTHZvQjlVR15QaDVOKVRQOTRHJlR9
anV9dkdAbDNVOHw0PyhyRHpJSSlQUDRKOVBAPmZ+YyV4Cno9aE8rYkFifkJmRTxLRHtOM3tlJUgr
QXhIbUV9QExXZ1I9R2pAZmY3TUxUdW1aJileIWJzVV5KUmAjM2NYPlRCJAp6SUBqT1Nha3hyPD5l
eTcpYWQ3SUdKLTFTe1EtPz4oMnp6eS1WfSN0d1JlKkdJbG9PXn5OVkBlSENEJWhgOVZlJWIKemg1
NXVSUDk0RyZaQXJKNCVjKX5tMG4peyg2SWg5Sz4rdk1Nb1MkezxEKGtwN2Jwb3gyRlImLTVPQlhX
SHRDcn1HCnpCZ2tKez9KRGE4YXE1Xm93XkRSZE4yIU8oSXpnTnxSXz5lVVh8cWx+cnctKytTcW5z
d2h2KiREPmpaUF4xbWRRQwp6RkVFLUx4IUd7LT0jYURBcCVQPjtYU3Z5UURAQ18mbUIkZXJEKGtw
OGIqJFZzJihwMlBOS1BIZlJHKFE0THtVO2wKekJ9Z30/UDlTZFRfcE4jT2F7aDR5cl4tNFpvSHtx
Ujl3UnQpJSFYXlQmUVE2UHRFPn5rc2JlPFhPNDAzRyRIP19pCnpTO3hidlc5N2Jpb15DeWNiTHZw
MGBwalk9aW9ET25zamBsVFF6c0JOXjt1XiR6TVArUlRxXjU/YV9aZE5kV2A0UAp6RiZuUFVJJiRD
WVFkdVhJUV4jeiZtNz8zWEAmVSQjeVNrPnohdzQ9RkFqM0d5M0RZZWs/Yk1Odl87I3RSNlVNMXkK
ejtYV30tY0xOIzZlWEg0M1R+cDtEYFhDaGB5X2BCYCYjamN9b0h7YCY+diViSnRuND8+KTc/T0xe
d1I5OV9LJkcjCnpwYnRgNkMhQUE8RnheN1pQOTFxJUNyRCtUYTg0WnlfbGE0JHNsJXRNeERscX1J
e2t4WCE3QSVTYU94MUlUUyhmZQp6ISN9MVgrfGBXXmN9T0B8MTtffUZhPjheQU53KiV1YU5Ycm5N
YGZLelA4fCNMaUNObUkhI2BedlRfd1otcT47RjYKenhtSzxNV0YpNmYwQX1LJXh+VV83ISpaKnZR
O0FiMigwY2QrZHhFKyZ2eVNRcktHdHBKYV9ZRU0pflVwKUx6ciRNCno+REVKTDlrPEZsbHtzfVIl
cU0xUHZyWWw7R2NudCQrc2VufEQqZGVFUiN+U3FyO2dja0RAQ14rQDtCWlBtMzUqeAp6YiokVnMm
KGxzRjk9JFoxcz85cGBYKWktbSlge1pPQXh5V0JiVz98UzM9LXoqTStkSWQtP3hVUzFSMmQpUFBs
RiUKej45K0UraSYwIz1UdGtTO0k/PGR1N1VtUFBibjd2ZWYhXiRAY0l3RWROQVJjd1MlcClfWWBU
QEErc2MpQ3NIe19rCnpRXig0RV5FfTtwQFMmR3hQWjgqU2djXlYoQTlVa1VTdG97NUNqY3tYUVFj
TjlmNVk7cXRQe2hqYjkzdiNzWUNkIQp6b2pVVCo4YlZkcGlSSUtHVCheKlBRLT1yMzJ5PUIhUlR7
WXBrZyopKWd5fE5OY0l3Q3t2Slh7UnJ6KXE4aDVOKVQKei0zXjNLMSQ2XlZSWj5SPCRmfSQ9Z3l8
Tk5jSXdGRTJ3XkpnI0J1NmF4S0dUfE8mdztQOCheeF4kV18qZjxKMktjCnp3fih8YE07PUVBUSZ9
Z1RRXiYlNlZ3UF58ak55R0lXPj5YTSNafiV1KVB8fDc2Vkl0Kl9Te08qUE14OUwlRlhgagp6d3NR
SDxHT3I0ZClpfXp7bz85dXBeXmd5fV5zMX49alo/P1VlZSpvKylac0NEdiNIdVVxVTBhJWN2WE9g
JlokRn4KelpYeE5XankhbmpSYXZKeHI7ZGdCIzRQUjk7bWM9YHRgY0daUXJVVWFCayZudkVecj8j
MjhnfjQ7UDljfmJxUk5QCnpkSDR9QV5gYG9ReShMJURjNVRueCtPcFE4TVZFZURkQCphPWI0ZUdI
Pko7eXJtWURFYihaTCEkM0xKJjtzcWY4Owp6bnE2dHo9QTRyPSQwZihLJSRxUURlKWgyeXNwQlde
Xn0wQFZlfTJMYnVgNTNDaFI0bXdUYEAxQyZrOWV8QlZ1ezwKej1fX3EhT2BoR0w+Vn4pTy1nRGFI
WjUrM00qUV88cEMyTG1adUFhWDApK1owJHtfNWZFXkZga3J8SyNmdiVsbUVeCno3RkFTSWF7aUB+
bEZyRWBZcmlnZVZmXm5HTXhURCtZUShxNmIoWld8KER9cGY5dHpyZVJ8aStPcUlRRjArTVZyRAp6
WXJBTFJtNFU7WmYxTXNXXlpmMntRRSNUeVRqSUlAISgqcEhZUm95N0B5aFJxUE9hYm5NZjNrJXtu
QVImWl8/aVQKejUpdi1vSkB2JGNvJldhUDMpe34zWjJIXnJCaDVCYEkoSlYwX0pkal4/d3kkWWE7
TH10QHBqQUVLa2RxQkp3Rzt6CnomO048N01WKWx4U0gzVkhOWUdhJlZKO042eGpLRjIjRHUpbSFq
KVVQUFlaZUxAT1MlO0lUcFFnYz1mRWRgSDJ0UQp6ZXZIMnVzVEREZm1HUE95S29wSyghWSRwRkUr
MV9UNjhPYT4lb1BVc3QhJlZ+WEVYYSNGUlotdCUtSGlFNDY4S2EKeihqeyktPTMzfk1MTFM1Z2lU
UjlEN3xoM3xGI0FwQCtGOFRyOHp4O1Ahfmk3dXhBVVNyLTJwYW04KXI/MCZENn5yCno5ei1GbSk9
bXhpQE08QXBxdFU9USEzbyFDTnc8Tl5tKmYmRSpWczkwWHh8QXt3LW5yJGxCVzZ5SDJfSUkyMUJU
ewp6WHk+ZXt1JGo2SVRwbGczc2EpZ1d0aHM1Vzs3ZlRFUiU+Jk95aWVNdWEqY3p0aEgjeWhiaEFj
fGVWZldQUFI8KEkKemNTNi1JMSM9QilzKmd8dWttTXVVWjdTQ3xJY3E5eHJmdmkwPEdUb31ieG9C
PWRGPzdKeDtWZkkoYGlZWVl2ZkIyCnoqO1RHX2Fue2hyNlJQZkohTjFlRTBqNFZMVFpQM1MmS2tt
V1RHR3hNYEdfdk4kfjhmcEhNSEBCcyslPUBxMyM9Qwp6cyhjYFVMKjwlYSZLa21XVERzMHo8NTBP
S242cmo5bz18bk9oUG1jT24yUEs0e31SbGhhKmRtX2hBXkYkdzZqTHUKeihkdG1TIz80dG44Jjlh
WlM7R1U4SF41WVI9YmxzTG5oPyQhIWdOfkYmS2Y9Zm1Acm01SEVeQiYmZVc7R1ZoOUh+CnpWTEMx
OG1PPyYkJSZCc1hocUgkRW9sdiMyaE9nTzJ4PU0ldk5IUSFzUmFvP0opPlBPYC1LPiR2QlY4KWpn
bVRzZAp6UHpxbSNtbjllRVF8dUdBPXIoWTlLKz5naE8oPHMjVkxDMThtT31wRmhmQyN9RndQcDxj
UzY8WG5rVl9FZHVDZzgKejhATFNhRXxxSi1JQlUkRnxCMGVvM2NsKHNWWFNzKSRQR001ckEwMyVJ
Tj5AaT17OWlyaW5sPjMqTFhRPVh4fEF7Cnp3LW5yJGxCVzZ5SDJfSUlZQUh5aSNjPEE9M1kpM2h6
PXpeMWBOeEtYUklVbDx0aHM1VztHS0pmKSFKTW1wWjZ8VQp6PChkZjI4cDNzMigjO3hxa1JWdilu
aDRHcytJSz9MRWQ/TDZNNElYJilCcSVUS3ImZTZubj0hPzNZKTNoITE/Xl8Kemd3P3ZIJTRiUnJS
JCghYzFEcjZPbWFhM2B4Syp5SCM5MmNkUHBHPF4xXj9STTJBQz8zTjRpeTV0aSlNRW1gK1JECnpT
dEYwdnhLKnlIJXZuUGxQcEc8Q0dsRjtTbk8pVTJSVVVBNnQ2V289diZRV0NwRDVae0JPaT8mcUg7
fFhYVSg1RAp6WjxjajgzKk9PY19FaF5pOVApc0Joe2BvbG9IY34kdzR8TGlhXyl6eVRvY1YlTG1O
LTF4Pj57SEg4O1JpZEI4bkgKejwoZz5EOHAzcDEoI3skbGFWTHpgTyR+WCMtSmAtezYlS0kxYlh3
OWFnfWs1RHFqRjZaJktsWnhMZTxWMXpHNHZSCnpEal4wU0RHZ2tPI1RkPy0zWSkyJEhOKXxoezBB
KzBSSVo4UHRPPWtMejZ2aShGMzNrbjYxTTB6YVFQSUhwKEB3Sgp6YUBHKjAofkBvfTxvIV5nRCVa
cXYqM2lCYXN5NWUqPGVlWDhUWGg/X3tFT3tTbTIwWVUpfGZzMjZHZ1dhZUQpSzwKelNuYnIxUHBC
V04ocWRJa2FLZCQzKHJ3XiEpYFkyQzZVU0xZYCViOTNyUW9hflA0eTlLMEZxM0xWSmE9Z2FuQEFX
CnpPeCpAOUFHOCN2YSFvdkUlfXB4PkEwU0NzdDw1emBYUjJ+ZEpaQkJ6SXhYcERqYSYrXiR+RHpF
WWlRcElSa3N3Sgp6SEtlSU5MSmRHdDhvMF9lKWlgU15ZXkg3bG0mYjteRCVWdSF0aHM1Vzs0P0BQ
UiU+Jk9ke214UzwobGY4SEg3UTUKenE/PEstdX5vdVhUfm97VVVQc2BYISg4QSNTUFQkLThObEh+
IVJyJDRhRVRyZCl0bC1JXl9FO28rcUZHJllzKkBYCno3RzMmckB4YG9kJm1+PCpzI0NtZ1Q0S1Uk
TUYoczJDfnk/VXJAbDhZWUlkYjxueyFVaTlHNHVeR0g9NHJgUHMpLQp6cDFwY3QhTW9jI0tRWm9e
I21oZmxSa2QlQHs1fWBJJVVrdGprRVkkeV9NZG5uZUJiTHNlZUhfb2JVVj4/PyhCZ0IKej5RemF9
dVJtaypxSiNyP0ooYkB0clRWJHJTeGJsWFReTCQ/dyhxWT1DcyFaWCtCJGpSek9Ib19Cc3tacGFm
ZEZnCnpDYm16RklJe2J6d3U1aE52aVcpRShObGRjWkphcClabj1OYFo2YENnNnQtR0RhN1N7LSNR
ZSkyfDZJQUBeRzdiTwp6XiF+aT15e19ZeTQxMEN3I0FUOz5SfVIpJm5ZNSEqek8qSnRuQVIjYEUp
PSk5SSheTi1GNiYwLSMoQ3pmJHY8KXwKekI2MDB3RWdvcXhae0UqOGd9JEFkYE9CKihVVDxCaXtl
K1A4ZjM1PVAqQiZBI2lFdXVlTkdYJT9QJldqfGFyLXlCCnpzJXhxfDxPZFFPLTwyPnw3LSttXj1U
UTVScSFYNzk/fUFuLXdjRVRGbUVVJnYteUB0fFlBMHtgdlFFXlBEbkJwVQp6d0orcyhnUU1Hemg7
MnVZSChHaGlyYllHbU18YjkwO1RHVHspQnElVHRRO2lIdEJLVnpJOFVpbyt4PTs/NHhhejUKekYm
fWg5X15pRzRhM3E7cylpeERaPXw1Q2FOTms2VisodHdhSCojfHN7LWEjeSlEYVJRODNwMGdgSCRC
WHh9Jj4rCnphRmkxXj56WFBiQCoqUzwhYldjQSlGRGlfa2hEe1dfZXYxJT5iNyRFWDg9TTROSU9T
NFZZLUUrVE12MmshS1Npfgp6Z0h5LUNkfTVZJT5oUyZ2KHA1cVhLcEt0OWBpYjdBMDtHZGVDamN7
WFFRZyMkZGpYcnVJITtjVks8bldQPjxRfTkKemVBKmIqNXF6eE0lSD5seippX2JXYV9TSktUUyZV
fmtXPEk1dld8O1ckSElKS21OeDZ+YDg3eWEyezhhazktX0NhCnp0bUVSOzNCWEtUUjV4e29AKHto
KmFQOD1qJitLNFYye01TWSstJG0pcVQ5LXF6RXgkTkFXamBDX3MjUWs+JXFJZgp6JjdTSi17Kzdv
UDk0Ykt1Ykx0U1RUUyZVQ1QpdyEwTHVIKntQOHwjTGlDTWIhOzQ/eSFydXFtcTA3KlckK00lK0oK
em5eUHdNR2pVUGZSeFkhU0x1RE58cl9SbC0yT3NmSF9edGc3WWFGaUJ6dDY7fXZRN3g2NCZsMG1x
PzxiT2Z3RTRPCnpid1c2R0VYKmZuPkRHZiZoY3dra3J+eWR3PSVySS05U141WTBBfUsleH4tZ3Zw
NzJ9T1JIYyF0ME97YzxDcnIxSAp6dnteXn5za30+Tm9sczY0My1eZ3h4KkdgWjdgeT9kJF5odzcw
V3k/UmhjTWtqKG9QK0RHfSkhSFA4Zz8taDVOKVQKei1QOVN6ZHVxK0Q+WTZKNXRpaCRTUDhnPy0q
PmZ2Sko5WHJ2KHQ9ZGhAcDlAfCo+OWV3eU1nZEdFVkhORFV0NDk/CnoyfnRfZCVjKDx7Wlh4Tlg0
KT84UWR2JjcmY01MfVNsOVFXal5zKDdGZyMkQjttbCN2OCRZPE9EPl59bGpfSklLNwp6cE1SMWJw
c1lNakBoP2Y7dmpZVDA3N1ItdGo1Qil8M0AmfW1hUXx5d1RVK0k5KTAzNmd4d2hvQjx4LTQwNTh9
O2QKeis9MDU4ODNvM1ZsZDVIQT1OcCN7R2JVVnZ2MG5TaHZnZip7PHp4Jj5ONC1gfmhXZ291Q3hX
ZmhnNlFwfiYlMTQ0CnpNeiptTndSOT5SbCN6TXV6Vld2XktGO2wmSnxyVk0oXiRzVUpaSTM1RVc4
c3tte1lwYUBeOEN0TSVsYi04TilKLQp6V3NKI35BM0Eoa2NDRTdlJlU1KCV7ZnJPNEdgfUZmdj47
X1YldDxmby13Zns/UX43bjRERyVidT91PlZobj16U30KekRBV0RfJENpfWZnWjgtQTRrOSVMTzFf
MGdeOzEocTdwJn5xI2tuKndAcGdja29ncFlxZUN9KVZPLXc9NStYRlluCno8YXlvPz4wVyl8KVEq
I1UwdnJ1YSY4VVRJc0ZoeihZQmImajh7Uz9qSFE0X1NzXlJBXzNTbXJHe0wqKlU3WEtPPwp6NSE+
SllUO208VHtLcz5SPWsmK04jJEBRX1paPDR1ejdmeVlDVlVQWSFgb2VXWXhDYzY2Q0xxJENnVXlY
enZDdkgKel8mS31idHRafVlWdlRKQl45JWF0OyVnZHsoYXNYRkRTRU11cDJ6THtGaERTZG08Sjsj
XmptPU5qe3pjaztBVzVRCnpGczMjKD9OdEVyYXsjSjB6KWJ8N2xraDVMKGo8V1RQWElLeTA/X0Np
ZlpLNH5GdEl5OHZsOVQjY1ZhbnYxR0grNwp6T31SY20ralJnYjN2ZEglMCZxYGRmS0UjUT93YmJD
MT5hOTlabitQQjVBWUJrTnptPDRqRyYoWWRWTFA/WGdXWmoKemRqWm1LIXhLNHUwRmUxUXo8QGdk
b35RfmljcDFRdT1LekxjODBNcCYhJXFRPnohOEt8ZUV+K0YwVF8xeFY4VFgjCnpyQDg9NCMqS2Y8
V2BMKWMwejcqK3p8Mk1mJiN3aHxhVz1xZ3lqYkB1eEU7P2MyM1VhYVdnJms0TU1uVVo7QigpYwp6
NTNtZUJAN3V1dXw5QkNnMnd3fHJmSG5BOCpKN3J2JDh+U1NfeDFzUHdvUmA5WV8xRWk0ZDJWaEdY
WHh1aXpNJVMKejI7ajQkMERDP0oqbjF6cXspUFl0LVVhdil6NWw4WkgqP0lGWkB2VGdaVjE1bFQ+
KHlENE5rcmZAS1l5JSkzKlNlCnoyP0ZAezNqcFVhWiFUTn54Y29LMXVqdSNIemttPnBMRD0yezto
WH5eczFBcV8yTUV0fFNrNjJVO2xGflleYzlIYwp6alVaeFVLKlUhOFFFZS1UbiMoe1d2PDZZUENX
IWhANURpYGUoUCVWPytkTHFlbyZuS3AwKkt9VksodEgrYXB6R0cKelpNSn1Ebis3N0s2Xk9lKDE8
fjt4NVNAfWkrKmMxb21rPCFDXkZUYzQxTXlIS2g9KHRMPXNwRVJGWjlKN1lTQUkkCnpYRXJBNmh8
NWh6QWVOP0xJWmJfPlFocHU7RmE3aCpaaTVmKE9NJlhfQF5nb3kqWndJREE3fVZHeVdxNHhJPWhK
Ywp6dmQtPz5rYD9JYWZAQSpaPW1zYnFVNX1pKz1HYyUrcl8jP15kZH4oQyMkU0FeIyZreiFlZytt
OUgkfFYlUn4hMnMKejJtWHlwaThkczB1SnE8YSNUR2YhZ0AxKE1WUWpnNiUyK003ZX19UVNNUEZt
enNQcn1YOU1LSkwtVChOQF9zamZYCnpBSn5XZ1hLbGN+dTNYPTNZYDZDI3AxeXxMZD9KQUpafT1y
Nzh2RX16Rm5mUStLS3ZPeEZLMEQ4Nih7eVY1dHQyOwp6Km9SZDUwc0hiMWMlSUpCdXM/cWM8S3Rm
ZGFVSE52LS1tclZ2VDJSPSpzbyhCbUdDNyVvdT01Z2UqfHojNiEhMGIKejJlYEViSypPZzI4cG1U
Rnt9dXF3aFEjTHFaY283RSFoV207X0VTbU5tJHYqVF9WOzR9VEpPYV56YVJHYlhBJGM8CnpXNTBo
MGB+NSl4OWszc34ybTg1QlVuQUh6JE5xbVN6K2Q4ITBoUi1GWjRLfU1fTTNtTGcmYUA+QFVSUDYw
UTw9dgp6KmJudmAxTW87RkAmTlk3ejVrNiZGY0lNS2dVQUh+a3FhJlhXVFlZKzk3OHQxWSMrRDxg
UVR5WDFNSlVwU3xLQ3MKejBMWkl9b2JWMkVMSkJ+Xk84fHhTa1FMUzx2VWB2aD1IWFl3I3NGZ3sw
RX5+c1ooOVM5OCFqUkBPYVlqTGVmUSlYCnpXUVg0WXJsa1FxZ1AtcU5BSGErUSRQbnFzNWNxZ2pk
KmxmOF55UypmNS1YNDtASE9ZbzBHTi1UWVhOJXE+Sj87KQp6JHBETFMtTEdkTVNLI305PDZkTTde
a2BXaGZhUi1eRldNbnI7UU0/Qi0pOWtldV9fNSpIUC1PbUQjI2cmMHA3IysKenZtUVY1YHs/NkZ0
a25tbjBZMik4JSZ7QXA7fUwpQD0tME0zJFE+VThlMWRpVl5pNjtyemFmODIxPXYqP1VebmAtCnoy
WVpwZDt7bz00ZmdJOG9JcGltUkwrSG5zSXt9Vmg5bHZAVGRFYCFqdWImMEBIV3J5PTNCZDhvJFIo
MmlldXgxMAp6RiUjTTM3aTFIeCNYbW5zS0lza2NeRDFQTncjWD0tMEd6OVZvVSNueUJHJmNOKCpS
ZW5KXnMyNztJfDlORTloOz4KejBjNGhiJFNuVD87YkBRQ3ZKMUpUN2xffiQkUyVrdm9eMnEpOypl
azcwMT9wKU1DND07bGBEYVdMTFJCfEtnY29KCnpBZ2JjdV8jd3pMQl9MYCVqNjcyZUI0SWQpK0I9
WUc5c3lDVzIpUU4meG4+V0RoUE5Rd3RWT296MWZ0MSY1USlmMwp6JjUoIWd6OyFsWDQ1R3pGPGVh
Rz5URSY4Qm9yQTElNjxLRW5oPDMtM2NNM3FYTjFwMHtAMn0lMldTJnRWPyVqPnQKeigtJHxwY2Fl
U1dMSDVEVl5GU2x5cEFFPUFUfGxIUSFwT3c7LUYtOE5wMiVGaS1VUlVvd2l8ZVNjdCEhWDczaCha
CnpTXjV8NkxQR2czO0sodDwoKTA0TmpUelViaEoodCE8PTArVGtlaUVRVHQ8NTdsWkNOQm0tTkR7
N0khcEJZTGZWVwpES01ZfEcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQt
Z3JlZW4ucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
cmVzb3VyY2VzL3JlZC1ncmVlbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA1YWM5YmExYmI4NDQ0YjA0OTVi
MzQ2NTRmMGViNGJkNDNiNWE0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ0CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEwdnBeajZscjkhMn40NTl4RTFyMWQ0OylvZnlgZ2xYKGZgdSV0V3NJeDtZ
OQp6P0MxV0kkT19+dUJ6cHc7R0I4eEJGKSVjPUZmalpBM05eZjdVPz8/VVYwZXxseitnM2xma0Ng
ciZhT1prcGFoPyUKbGkoYG1IYz1DXykzQHJhODg5NHFre3hgZHtMSU5ubTtPWGs7dmQkQD8yPj8l
cEI1ZVF3CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLnN2ZyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9y
ZWQtZ3JlZW4uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNGQyMDcxOGY4ODA5YzkwNzllNmM0ZTdmNWQzNjk0
NmQ2YmFhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLnN2ZwpAQCAtMCwwICsxLDYgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IURPQ1RZUEUgc3ZnIFBV
QkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGlj
cy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPgorICA8cmVjdCBmaWxsPSIjZjAwIiB3aWR0
aD0iMiIgaGVpZ2h0PSIxIi8+CisgIDxyZWN0IGZpbGw9IiMwZjAiIHk9IjEiIHdpZHRoPSIyIiBo
ZWlnaHQ9IjEiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi50aGVvcmEub2d2IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1n
cmVlbi50aGVvcmEub2d2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NDM5MTVhMTA4MGM4YmFjNWRlZDhiMTY1NTRi
YWVjMjkwZDFjODEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwMjkyCnpjbWVHP2N8Nm8+X3Vz
TE9IT3R0PTN7I0F5M0BYSEpPeDd0SCE+Q2NKIU5pYn5MQWg7WDRNe2NHc3FBSUtqUyNKdAp6aXxq
azRqUzdgZ20mJn5AKllFa3g9dzk5VHtAKFpmXnVCLW5LRUx5TUptKSMqSmtMNExJblZ3Ym58eXM7
QXB2THMKenNgdX48elo1aUZNLVgtflMkKyg8NDx6X2k0RGo+QyNOV2Axc3pSSC0oSmslRW15T2xq
eFFFYlZoeGpxfTJHYSF2Cno1UmZwMGdkajJtdjAtX3I1ZDthbztNR0p4a2h2Yj5GSXYqKkpRPFhk
Xl4kPGxLIW9pTF9GfVNObUhfKVkxa0Q0MAp6LVhWQ24yRW50PnVNVHE5SD1xKEtGQnM0akFkYFZ9
VVZIYTJBT3BhSHk5V0RaNmJkb2BGYUZ7ciVtYU9kKjYtYUQKeiFxXmpIPW9US3R1dDB8fmVIZVJK
XjhKdCFVI3QpQUImLTdONSk4MX0jcWMlVy18Q30+YFlgdmQ8YTtDfnslejtzCno5PlE4KUk2Qk5v
TjVPNz5nO05weTlfUno8N0d7diZpY1BgMz0tb14mSntPSCZma3p0fjhKUWNJODVeVEAtVFhwWAp6
ZGw8V1k9czM2dytUaFJEZEhwNkVUWit9TFU0Y09pVXRAa05MISVZT3RNeXI3ZCtAOHhqWkhOYEhQ
PW00JTZpKSEKem5fTH5OVF4rMjxTRFR1ekdSRkhEbmZSRX4qQkJjfEB8KWYyKVNhdkMze2I4cmJ8
bEhMdk0yQ35sO2k+bzV9KVdMCno2T0JPPGZFcXI/Mjl+K3thXylSfm0tfkZjZUN6SEJ6NHZ+WCs7
cnR9U1B6LXMhX0JpIT5+YS01UChqNj1pTns4Jgp6QVAtcUNPJWxuc1g1Vm52THh+QV9WRXt2MkdG
RzZUNU5EPktJNU5JRSt+OHlyZVB2NWpOX0NnbFB3b2otIzBYPUsKelpTSW9FR1p7NVE0NVBIOyVQ
MUxVOTAkeSlWfnpFOU5CdkVlQzdRZikzOChDfFdCe1k/JlExZHFHQWU+X2BSI3VTCnpiIz1kQnRn
WHBDSiE3Jk03Wjx8bEM/SCoyJFlUZ3VKaXNtcFN2WXJiIVNFOy03ZTIqZkBpTTVjOUFTT0J5YmlS
LQp6eFlYQlE5XzxCV2VTT14rMCM3Z1I/WDghXjE4UXVuKkUqdVN6ODdHUzB8V3tIVTw2JnhNTU9y
S153aWFqO3EmdHcKemdGeVNwc0FPMDZtQEtgMlJqQSs/Iz49KDlaWVpRVChqLUohQHQ4cypOQHpU
NmVfRV90T3ckSik1eFgkX2UrbjNrCnolanNNSTc7OEY9YSRWPj1HTUF0OFNwUEpXI241TW5NNH5t
dUkjTFY5Xmhofj9ofUpWT157PkhONzhDaGxfM0c3bAp6ajchMEM3KVJ2QzA8X3hyOVpkYWUhMmRa
Qy0mZXdiMFBLcjZVQX08b2BCWiVganxzKkttSTJoZWZYNFhMKmNndXEKejIyZlUzKV9QeFYxQT5u
UEZnIXs/JUxRZiVYaTs0Rmh+bVBkRDNzR01sUzFMLUV1ZFRrMCUwQXxBUH5WdlE0Ml9qCnokQllz
WkxJND4rTEleJCo1I1VpRyRPVkxpNHNHOFNhKE1mTFNMO0BtVH5eKHRiMHxpd2VvKzJrYUVJLStx
JjBPJQp6I15yMm8pfFljVzRwS316JTlgIyppYH1Wenk+dyQqN3JwOXxSM2V2aDxKMH5udCF2fCQ4
SkA/Pmc7dClua0cofFIKej9RYFF1QFUrKXZgXnM8fnV7by1QYjszazNLeE5JNUNkcXdLQmJIT09u
N1h6aEA0ZWFVNjVpZ0JvNHh2M1hLOWZ9Cno/PEI+aFM+V1orRT8wOEVFZnF0SXtmQ0dqUU5OVVRU
LVBRe2xNbVhUNGJCU09lfGZYOFVMeGBxY0sqMCtOJGA+eQp6bzMmWHhyWkclNCQpPVE/SE97MUc8
aGl7VG9jQ0BpJFhQU3psIzt0RSkrRVMhTWlmTX1Kfj8oaF56cG47XlVQaEcKej0jeyQ0c2tLUTQ/
JXFxLVpBbz9+WjJEVE88XzhMRUAyUEomcV5UcCsqSUllTmFNYX1HYjQ3T3s1QVc2I1NSX2BlCnph
cFJUOWZiRzJDLVFOejIpa2VTaXhPSGJ+KERHRUxrUzReMF5CYnhJOCNfR3A7SExCUEc9SGhDRHxF
U21INF4kIwp6PnpYdnxqfDZjISQtPSM3ZVNYZzA1dERNZndZNn0+eyVqM1A9R2VhSi1JXn1+WkZQ
fWxLfX1PTSttd15vOXJ5UVIKelJ1M0ZiUGkpTHhfdEI/WEhHIS1oT2B+MCNlZUYxTFdGKj9BX1ZS
Tk5wRStsVl5qfVlSaGJtQUVOX09aVGUjMEojCnpwQzJ3ZFY1ZkQ4KFRJOTV2U014amZ0P2FsdzJT
UFE4ZnU1Rzx2UXpjSnJeN25fYiRieiY7R1h9Sk5YSHZ1Q2xzZwp6dmxzUlNDUVNCLWAhb0g1Iys5
QSlOM2dUbzY0IUw3KjJhRH5sWEFDdFJRdnYlPXNwNDgkXytZYS03Yzh1XmNkMT4Kem1hSlZaeldm
N0NEP3NZP3E8KyhgbyNPKlBgcWEjeU9lcHFmZklmYU9sN0lGZlV9UXloZ0Z6X15Ge2JZb2YwSlYr
CnpMQXlPaClrXnokQDdtOTJvQmEkRjl6MTBHWnckMXJYcTkoOVBCVntne3V0d3lTWm1RR3w5T3dK
WTs9PVUpZCRiRAp6PCg+czxYPGMmUmlrZTcwaXJwS0ReJmZEU3JRWSFeRUFyTn1mO3Y+bV9qbHx7
KUJoYitsa0xAK2h4TGk+ZHRLVkgKej1JcDFAa0FvP1phWTZJQCgjVVJsMSNBN3AzUCtzJENkUlZZ
KWNzS1RgTXRYNTdXZVN6KkIjfWY2ZkxxO1E1d3hPCno9QlR9Qj9TYWIxVGxQY3hjd2Z6RFYkKnhj
Ryo4bGd2MXg2ZyZaO3k9PEN5eFJ4MT9pSyN6cjB8WlM/dmJMRGtYUAp6bkN8XmRXT3w4TFckMjYm
RTNPU3VlVEJKVmY3dXM/N3VVaTQ9SnthSkNIV2RGekEkYGtYVHFNKjw0Z2xmP3pRRlgKeiM8KlFZ
V1o4fDNDdGZgKUNVYDk3NzBUKD9nZUstJTN5JSpXaHZNYG9xZCglK3s5QjdjPXRzbFVhXjAofWUp
aFlqCnp1PnFZbVVue3l+KWtDV1o5ancjRVNkcX08SU89S0VgVWBaXmlpNFZ5Y1JlJl5lcnJfZ3hW
bW53e1pBJnhefCQlRwp6a1hmRl93OHxJQU9kUEhCeEZ0Qkxje04pS0JffiYld2N9OTNzSitzbWFU
PGZQPHdfez5QYGZ4KV5JOXh8ckoqKU4KelY7K3p6M018UkFLZCtQMlluMiFEQGctSGdMSkRTYFl5
U09oU2lJZWxyU3lqVDstaD1LQzcrMFB8Sz5gcmw2LW4pCnpNOHctTUU1SVBiOyNOaHxCWCNBYDFn
cXZ9XkpVfTB3ckhRI2dDLWx0YkNaQHtPUWBzSG9yYm0qWEhNfSVQcFEmSAp6NzFOSVUrcU84Wl5I
YUYlTjxSTHkqaiR0SURQKnNpMD4kRVhebn4pdjUwI2t3K2RZIUtBfG5NKEReOEVVVUAjdS0KeiE5
QUZieHM2YUhLU1o+Pko+e2V5N304fl9kRU1LWjtxJklsaTxEb3o5OTlxTko2PnN2K2djTyl7MExv
RHxNVFhaCno9VGswU3c8YlItRyFoTlM4QCtuclFRVUBCJDw4V0wtfHFDV2BEM15OeU5kRmdCPVRG
P2NpOFJxJDEmQiNuWjdIMwp6dVFQWVA3V3ckbmZwUjc5SG1WdFJDODtqM0lKd2lMYFBxaiE3WiZ0
Pj1IIXNPLUo4O3U2ckFFMD9laCpZQl8pWVUKelhOO0x5ZmBSKzR8REx6PiFVbFZfeEd2KDA7fmdx
cSUmYjdhdE0/UUw2cFFJNXJzTXB0RitWJGZNeENVYT0zZi1NCno4KzBfU0BuOWx0bWJUTnpmaXgy
NntpYzBySyhDO3R7a0RKKz9BUkdvdztnWWZPYnR1b3QhbzFsP3UySms5cWIlUAp6T3BgIVgta2Q9
WVdfQzJKWlJLbD9fc3ZmWm1UWlFeQHdlWjd0fUR2KmV9aDFHXno5bUhQbkZmNFptMy1PcXVIbEAK
endMTCQjOyk/PlNRdFpUNStQN3VLRSV+QTNeNypTKjcyaDYzWTQ1VzxaeXJ5QEF+emthdFNFbyVR
WD8pSE5IZ3RMCnpsd1g8cE0mIytjc1IrPV9DXnZPWUMpUTdUNlhUO0MqSmhKcERnRSZfcT99b0RP
elpITVh7c1pgaHNZWU08fD1RbQp6WDs7a25XWVg+fXk4UmNAZ2ByM2BKUTQrNm1mQElOJnozeUEl
I2I8WHR9dS0mN0NjNWlETCskSXdgMXZKTC1KMEMKeldsVmZeP1JjV29xd0FrdCQhe2p6PiNWZW9y
PSo8UUw7UVNHVFNQbU12N0M4c3Z3VXdJaml5OHt6Tm1ldT03dz1iCnpRU2diWDdCVGhHSmkqUktD
bncqcVBxZitoZjg/SU5lTSU7SXppZC1OIT9SMXg4UHgqfnlTQntsd1o1QEVhKEk0IQp6T0g0ezZ3
YjgoMVMwSHpuUW54K00wJk9xT0NBbmw+ZjJrIzR1YyVQRk9yblQ+Xmw5TTZhXzBGcSNxUDBKc312
fmcKek1CMHw4TV9SWVZDcCFtVG52ZE81Kj5QPTE+SFExJlIqWn5nbTZOcXAqSElsS3RVUT4kd0JW
Tk87JmJCS3dud3tgCnp7d1JJaCorSHJiP3FZZXZDJDF+Pk9McyREPjRXa1hacjlValNDPUopSC0w
Nzk8empUZnF9YUhlYWJqK2Q9M0ctawp6PitoajVjOEY5JTZSPTFtcnFrWmQyVWs/QkxMT3AybChT
WDU4OGxWP3FMdFlIVE5KUEo2SDQ4V3A2bFRiSlpWXzkKemh4MGlHNj9MRSQ2VVBwK2tQUHhZeT9i
aFU8RkNXXnBNdnZtWl9wM2Q8SiRlZ1N1WUVYaEE1QUFZdXlgdWtudX58CnokcShjOU1eZkVxc0JS
fm9WcT4pc2I8Z3FqPVdNVjFSQlE2b1F9Y0NPKGllbCRYV1V7MU8zP1g+MilWWiNgJU1CRgp6WkZY
a3NwUl9nSXhiQEVTLWNycUozR2RqI21EX0lUKDYpKFkjazVLKUNsKWE/c3cqQ142RnNXK2U5N2N3
OGBZcGgKeig/ekx0ajFjNm9Kc0NMWm5CZzdzRm4/PGdqbisyWXxFdH1ZUFQmX2JHMn0/SFFBVm5N
ciU3UHhmSzVAfW5MODJoCnotaTE5cVByUjxwLWViNTwjakQ/Vm1yXzxoJFcyRW5CNUlUU1c+U0cq
eENVWnxHM1EodmtwQ3F5JFQjYE1eYFFLVgp6Y1Z6T2hWenh0PFopRGdeOSR4cGNZM0tkVG1ZfVdH
bXppYTVEZ1J7anpJYHZqRkVJR01SRjJuUyU3JVM/RH1CWCsKens3MlNPUCt7P3QkKHtGQExfNnt5
T2x5cUh8RXJIQWdmUVBLaj0wXygwWTR8JVN7cyNyWDdgKztMWFpwdTwmPjtSCnpKJFVFbCtAcGdM
N3d1Njg8S1dXTTY4b01YPDd6PV5gc019SWdZQUlGTFl3KzFLIyZsYCN2d0M8TX5OP1EmU3xKagp6
JGh4VE53Wk5zQWMleCpNN157PktrMTVRVjJnSHxGbE52fVZubEo+T195aTstOGJ4dXkjQyorZ2gz
UUBpeFQxOGcKekhyeGV1UnRMVFg5VktuP3l4PEkoRDI2S19sa3whVWt8YHZeQXJJRXtQMEAjfUhg
YyRScWgqTGQkPThoTTJPOUpSCnpGbnhHVFNUa1FBLXpfeCVQNDlSYiluMmFOKntrMDlpK1o+MEc4
ZWdKeX5jKzlsdlM9S1IjWjNKS3t4N1ZzO0I0dgp6emA/TTwhUExORWNWNTlna1g5WGR8SiVmSzln
VG87dzlQciVJRjEmTV5WRXpaNmRoWTQwUXRabiQ8YS1DWUxAaU8KekEhISt0dm54RStIJEwtWE0m
fFM0Yks8LXpVX0o9KC1rK2xmNSspQk1gRyN8TmRGQk9YWDNAVyEyITQwO0FPZVZHCnolUlk1fXZK
YnxKQCo7Yyh7ek8yYVV8V0k+PnsrSFFFS0I8a28wZ0RgdDt1ZSFSb2YpSzRnJmxZMGZHcWYyRFl4
Mgp6RW9Vc2Q8eVVxMG58OGBPeHRLY2p7fk81XzZ+VVY/eiFBKlpVOCgrVHF7JTVkRkR6YEpSeWh+
QlVYcEpLUkVXIWMKemhSKkVDb2I1RTEmSyVEdk1ySE5hJEdjX2UpRTF7X3ZBV0RCdnYrcj9KazRm
eDtvMzVxYXghYHtTelY1am5UN21QCnp4TGxUS1g+bExtc1ozQHxIPj1QPUohVzV+WHp7JSpwZT9O
QGJLK3R4M1k2bEx2dmpJei1UMy09Tj9CZFMrcTFqcwp6JkJzOENfPnJ1RFN9eypoYHBxWU14PkY0
MTBsTiNDNztwTHp6X2ApeERtUn52TD8yRVBAal92V0ZsUkpFUEQtRTIKeiFRYTZaWHEtczBCTmEh
SERKblhKQSgxQEsoR1YwWnZ2P0xgVndKdChGYy0zZSNxfTswYTEhKnxiZ3koNnc7UkEmCnpObkBB
QSlhNkUqXl4qOT9LOWEkekwzaSZIUlRKa31XIyRlNmc7aGZ5YGh7U0U7fGxwSjNKZmFSPWFqWEcz
VTdWSAp6clUhI25rck9HdGM7TWIqeUplVTVFPXR8TXNEc0pPcFU9Rj5PeCt3N05KfFU3ZT5LTVFa
c19DVCE7Z25nPmA7bmoKeiZ7RHJpZUFqXnw1V0pqdCVRNHcyNSNOIz48eENYZzVBZWR1dkVQU2tJ
aiFEJDhvUXdhPihwbl5JYip0TSowZmpOCno3RUJqYzE8emlFKDApYVI+dVMmYlJnOFdyVj0jPHl1
YlEjLT5TMD4tO20zMX0oczFiRmw+P1RJbVUrQHNoaV9MLQp6KGk1e0paQVQ4NCMjem89SW1IPzBV
S0hwM1cjIzFmQzBzflB4RGJ+eDhKRENScFVSQlM8a3NmeFpZIUkqX0FrPlAKekQrZXFYa1pkVmYr
aXpBKjliU0RzU1VlUjVQUDJSO3QkTS1rNU1yeWVjbU49JT92JiZQY3FfcldQeihudHN8RzJDCnpS
NXZUP3prKSR7WEBTNnxLIyZScUhDOF9CMytfSVY8RGgzPkhOPGZsJDJPXn1DZ2VvQXYhb1BFO35i
QTt5dT5sZgp6QHV8YGxNY0QoWXR+ZUV6OCo0WWxFelZLT3FLSllNRitfclNpLWRBakFuNnRhd3B7
P2I7cD98VCQ5fH1EN0hYZGIKeiF3TGhUJiRNcEZsclU/X0M7emg/Pm0rRX00V3xWKXp8YlpYMHdn
fE5IKUJ+UlomZkY2YD00M2l3XnNqKUUjTUlfCnopR2ZiWTN3USghe2ctVjBIflJia0l7cl5iMDhC
ZkNIMjZ+Xz0zP3soKmslYW03fWxERGNJK2BfYF9PdCF7WnUhfgp6cWlLcSFRa2YkQ3tObyp0MjRN
eVdPcmBSV3IlYWIqaWExNS1lKk5NT0wxLW9yV1F3PjVJbHpKPD4jdTdGd0NkUj8KenBORGpiVyhy
dkxOOXooJV52dTV4RUV8SEAydkxYKSQrcj55PXVfU25NRj13RWMrKChnKVFyUEdLeF9zcjUxalU/
CnpoNEVUe3VqYiQ5ez4zMUl0cVZjTmZXYVgzYzdZXnM4aThYVnY2QlhNM2lfIU1QemJvUDBOZ3RA
KGBBYUh4fjR3TQp6QVFAcTNsI0ZXY0dqKH1wbVJpV255S354TEwlKz53MX5ZUnFXNFVTUD5fKndW
JD96aHY/cGZlQkdhLSpGMEZEPEIKemM0MFd8dE5sbUAocXo5b0JuWFgjPmMtNGMkSFZpVWh2KWZh
YUArUDl3OW5lT3BxeU4oKVJkPXdzZ3Y8fXh8dX4+Cnp0e3lQZCV7IXV+UjhQT20xQF5UU21mWmBy
SihiUSloVWUpZjZjdXlKQndTRm87TmstfEBMXiR+NnRLODJ1TXVEIwp6VjBrTFZAbH0+aDJgcDRm
QG5rYyhUck4wbzFsJk17O1pUTjM0JjA8bnphMUo1XiZDIU4mX3FVb3c1PGFDdH18TVAKemZZNWJG
aWBJKTNOSHdSTHctOEZUTEpOdW1iMEx2ViFXVCs8JU1yek09XktkLTcjfDhuNF83RW8pTFdLOXYz
NGpkCnpwY3M9MzNzV2g9bT1xNEY3K3BaMjtEak9lUVp3K2sxc019dEFfVUVWK256VWtYaXM4XkI+
WTQrT0FiQDAzfm5+WAp6Q354P1ZsZ3o8YGk7Z3F0TUxPVz02IzhAay1XaUdvZUVEKDI2XjRLKztC
SE5QdHt3dkpBN0AkOEw8Ql9PTT59RCsKenZ5cSR8RldkQEgtNiVYPD1YNFRebjJ3eUhATjwqI01P
PVNRMGdxRzZ7VWVeUmZFVEE9JnhMMyVZdFFxOCFeQFJgCnpGT19jODtUWlVXJWpIZnJSS3NCJTR5
RTQqSz9HNSUxMGUkO3lhT05LMWAtZ29ERn1rfUY0SUchJipZV1lmckN4fQp6Sn07eTNORjJDeC05
Wjx+NUZLemFyQG8jMzIofXd3JE9NI3Yzc3IhV0heQExxWm42WD5kQSRFPjxfQDk1VmcmMSkKenFv
cG9zWFFOSUNFMj50PUt9YjxCcVNrVHY9VTh4YGk7P2x9YWRhckdRcjNARmp2fHZ0ckImJmNsal9r
RjR9Wmh2CnpYWGNhV2YmcV8ye1BKUG9Obnh0akAkd28pcThfZWwkZzhBUElmZGVIU2dqb0p5Nkl2
dlgjPjdsSWwhb1MwPEp2ZAp6YVU1QFBSYz1FZnpTJCNNd3opfnN5UUZHWkReYSRoc240VWRPMmoq
e3l0ZUFEZWBsPy1jNEM9Zm0zdSZeRnFDZC0KejFgKEZzSEVTZ0coWj45T3olR0djS0xDI35GaUVg
T3hkNFY3U3hpWVoyT1I/c3JgJSk7ZypTVl5aSURkRjYmNTdvCnpDd0t6KmUjKm8jST9RMUt4VHot
aFFLcXQ0cGF0Klp4fnk7al9gP0BhTkYrbWBOKkFidD53JGNzMXQ1ekhsTlZabQp6V2BLXjcwWEJI
YDNYO0Z4ZmRUMWdTZH5vQzxxTUtJOXpZRkc3MDdAZzNUWig9QSNES3FVPmlJc0ZMenJZYWZKaEwK
ekdyclUjMDBmdyMkRkVtODsxS31TXlhvQjdmZ3V0dWd8OGxMeUFnc0FmaTBWJj15Z0c1dnFwcnJ4
WFNWei1yVnpuCnpBaiRrPmlsZD16cSprR0ZLYEw+WDAqZyNaJn1CKGVOe1dlSD1tfjV9MHpOdTkl
RlMzYmgwPFh5aiR2JVhpSWs9Jgp6VFFzTlZyfkIqV2RQezttKSo2QiRQS2dQTD1oUDhJQWF5aj4w
UmhEYiQ0Ymo7NWZUTGlwRlpnbWZ6WmcpRHE2RFQKeiVHbCpAZzBAV3woQishQ1ElZktmUlcrdVBR
VilZSWFqajtHZlY0JnVXc1ZFI3E3a0F4NThuUSlifWxHTkp8dXkoCnpsPXEkXjJ0d2VOaGdCb2sq
cUV9Xm11aElERjxSUSNXeE92RTMlNGMrZzE8PD5yO3FgWElFQW9XdUVSZiljOFdsbgp6NWFjSz5C
UC1qZlpoeCNyKUZKSzsobE5lT2owOD85dSQyUXFxOU8zPjRxUmZ4OEdgP193aCZ4fjBzZEpWKjhC
Y3AKelF7S1hsPCk5S3ojUVIrdm1XMnp3PW9GbHY/X0RQI0Z9JWluUGpLVjVAIUl3KSVqWFFJdyop
LTZTe3VrcG9pdGUwCnpzaD9kdmVRIThxWTB2eFZ0cSg0VHpTZShHVTZhNGhQVzghJkNnbFY1UTZq
NGs/NXNjRHdrRGJXbGtPdnpzd1RBcgp6cWhadEAtQit6UV4yNjteWEhKWihITFF1PUAjYk47cHwh
UjE5JVJqSGlnTVVSQnZTUnxTK251UlB+N0gobThlfD0KeiFaUD1Pe2dvNEFjSXQrfitvI1QlM0pG
T2I9KVk5OWY3fHFpaU96SV41MDhsIUpka18wejBYYSprWChgTE54VlEqCnooQzU8SiU4SCFgOSNu
K0N6PH1faENwbEh0eyppO2k3YjhleyFaelp1K29NQjVedz9DMGkqVkh8ZSNnQnF4UVRvSQp6Vylu
KFc3ZSZfMUczbDdLP0ItPXRRJlU7c0AyOCoyakA8ZUt1QjRFSWJIPVM3OXpOezVhdDl4MTFFRVhw
VUVze14Kem9ROCYrdmNFdkd1JiVoI158Z0chekl5ZDR5Jmh5e0taNEcjM2YkcDdTUSk1aypQSDMj
O2pzbGs9PDk+cWhlQlNqCnpiPyNkKVkxOVoocThVaS1YKTZlfCFPdFlwUiYxKmM5ey1tNUdffDlA
UTVoZmdIUWohRV97LUpwISZNVktxdGVqVgp6QiheYD9Jd0IlTW0/bURLO0c9aGtkZz5DIW9tZ149
aGl5RH4kYVg5KUxVSkBoS3VFVlktfG5uTSRUKkl+JHtxcFQKelFybyg5dEo/a2hfZVRKPHJNZ3VW
NChyaDxaRTBKSTg1YGdOJXQ8a1RpTEhlJnFlcD45RUopcjkyKXBUVzt7UW1XCnpKSEZpQ3heO2l4
MHplMm9sJihXQCV0ayVCdDlaSXdMeT59IXRQZjQ7bFkkWjhKPUMmNHlZQ3JONDs7fiN4TlF8Qgp6
bSRafTJvK1JqVVlwSEV6KWMwR3NQNDBSbEM0Oyp6dClnKlhafXpgVmVNSjR1byVfUnNZZ0FGXmZ1
K3ZnJUZYeF8KejU9bXkkN2lVdkd5eShCV0MqJERJKXRkbmFgd2s5Tj08eHFEMVJ9V2VDcCl+cjtQ
KCt7KENkczZTVFRQR2todHtVCnowc3FfS2wwflpxUnV0TExWN0VreXVsI0YlYlNCKGNRJFhYYFck
aHFTR2B8XzRmLWkqYSE+aUlQUjUwaiZ2O1RMLQp6MGd0YXBkeSMhdWsqXnpoNCl4WFdWIVU4aW5x
TUViM3FKNWNiQmBwZ3pSUnhSQkQ9N24mK2kpPSNzOVImeDMqP2MKekJAck16R0tWPyM1MCR7Pm9D
b2xLdEFIflpgalJXN2AqbHd1YDE2SHVjVlB2LUlvMHshKW1gJk5NJlJ2TjZxXnQzCnpQWVc/PXs/
aUVEZm0ra2VqUEVrQ1ZVWkNycGVVPzEmX3hie1dJPUg7ZmEjIWpPWFQ/SVJFX0tASFdhK2AwS1hn
NQp6TVhsaT0qflFsMXxBJTBLa0g5PkRnOVdaJFA7a3NaKzg9JnMhUF8/ZigxM2toRGIxbU1tbWl4
SzhHJXAzLUp1Z04KenwxZmdvUGIwOTh6M3lvVHpzbUA3a3I4O2t0VzJOSzFpfF8lQE1GVlRSMmUp
bHB5fmIyc0RGcUpWZFQlUSE5dnhMCnoyS3NrKEVvNzBrQnx5PU9KMVImMkBQOVNgYXwlMm87UWBw
UHc+UjstajJ2NUoxYm9TZGR9X3p2JUw2UDhZaDQ3cQp6KiZfNlZ1Vih+R013SlhHXkZ6QWYmeTdT
RUhqPmtlKVc4JCU7Yis0YHt9PnQwcFBoeVdsd3xLZV9kVDUhO3ctV1QKZjU3eFUrNV8xY1k1clBX
LUd5KUlrNHkmaURnbjljWlp2Kj11UDd8dHgKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291
cmNlcy9yZWQtZ3JlZW4ud2VibXZwOC53ZWJtIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi53ZWJtdnA4LndlYm0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmRlNTlhMThiNGRkZTlhMTNmMzdjM2Y0NjJhZjg4YWQ0YjBmM2MzYQpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTA5NzkKemNtZUhOM3NlKT0pO15OfU5kUz9qZjx7ZGMzVz5wTUZpQGFT
aGFlU0BwYWd0P1FwK1JDIXh0ZDV3QVlebTB0NTwoCno3eS1raHluPSNBNi03bUJNT3J8PzJaJEVp
K0tRcn1aTXt7b1NGT0x+S1FqcWRGbXQ+OXp3Mk0/eTRJYUY4RF5qRgp6PzBzX2ZLSHI9QG82UFhP
UUcpPmRuOFZNTUFwOXJyXkdLcUBBQyp3flkwP2l4NXU1bH41KXdae0xiNDFKWiV9dC0Kekg8fTFh
eDFzTHtQSlNBK1V1eGw3emRvb0BhemspMzdmUkVEbzhwMlIoLTRrWXF6OWVFTUFpfHRpME1JKm8l
Vn1uCnooQjB+PnxJTSEwbHImJF5sUmE9S2VKVVJuaChHbFlQaFJpaklOI1oyeyhARFd1UyR1djEq
IUBvNTRTMTFYMS1JYAp6Ky1kUHVlOEoqdThHNSkwcEJDbTN3SzA9Vm5seDczMXwmI2doWGc1OzBQ
QntyYmtYSnduSGVrQnR6N1BzRTx4ckYKenJBdl8pKTtXV2t6RDVUbiVUR3dlIVNHS297SHJseF4w
eHNBMzdSMGlWblhKKlpzanJ8LSF+ey1MYnxFWkh1KzNLCnpZTFRITVRrLURfNWhYRT50WEA3IW5q
TUhGWiVLJVZOeU01LTsqJFdWLX5yLUVffX05UVMmZ3pHeDtrY1NeISNOQgp6OHlGajdCMzl4JDN9
MSVoMGA3dFozbXUmcF9USV4mZ3A/MVhNRn1EbkhsIUsraCZEJVZpNHJBdkshLSZfaHJQWFUKentz
S2YtWklIJEhUOFJLRT84Tm5GYmNsTmtSc2RpT3p5fiVncWgwSExTeFJ9OGVNKlZrMmZPUTdrWDw2
cj95IXVeCno8I3Z1PTdgIU04MENhJVpvfGEhVD4+R1IwYiVVaXtlbk8+ZE9ufVE/MXw9dE8oM1JI
eStncCpGPnlGZ0xaTkE4fAp6ckFgVWFnJWJwKjQ+UUFEaCtRSU4ldUd2byQpWUVtVyRyQ1kmfVor
Zk93KUhmJVNpV2t5alF5YCEwcTA/bnRacFAKej8ycSpGNElHWUtfVmVkblReWlNRTi15bTFpNUZj
KiR9fEBtSmBWPWBFX14rIUN9VGJxR2NSTStsX1dxQD5TLX42Cno3KX0hYCo9Zz4zJGhfd2V7WChE
M3ZQWWFpR3BEfFYtYSl+Rjc0UyQzVGFfI3ROS1A2Xi1YMm50dkY3O3BrbURJXgp6dTRSTmgkcTJY
MSlTT1NaLSp8JFpffHpFKXNHUkZzR3ttYTVvPjZfdndWRXU9WSRTbXclcTB3M3AqNT9wIzx5O0wK
elkqUzM+KGRoazBIfXkxZ2RZVFJLRSZ6ZER1JWp8WVFUTilwS0JQJFc9Ty1Ge21KTHdvJWRVOE9T
RzxrNCg1NVNhCnpMJX1fSzdRbVJJTFFZMmxaJUhEckU3MlhFT1NVYU9DLT1ZYipuakdINVV7V1Zm
TzY+X0AkX0BoOCR5VHYxZ0JNcgp6OXNgTWowcTY/TUJtZXI0O09obFdnanY0NkN7fDJlU1AraThN
R1ZiYVIjQ2tTKWchP1V2Wn50Kk1Yekc/Zn4lM0AKelBHIUEkWTUkcSo7OE1IUmBqUyNTZipVVmQ0
WiZFbHk3elFjPyYoenxVaTM5b0RBamk8cmxwaHZeX085cilrdjk5CnpyJlQhWTdqcyFic3NEQzAp
RDd1WDREVnwtaGotY1hRb0VNY1Y2e0VYdlojTio/QldeTW5AfVZCeVZBSDtTe1NeMAp6N0ZHNi0z
cEF7NF43MjdwK2BfTH1jOXkzeHcmJnxibV4xNWB5Sm0wT1ZZSTd+ZHpNdUBKMV9xfHp4d3AkTE11
RHYKendsc1heMzs/OVlfJG5VMTs3ZUooaWZhcFYqeG1NciZwWTtUdXVKMXQ3dXxrN18/NUFqQXM0
UDxqdVR3UGNgZF5nCnppQX1DUGFtdG8mTGd5KnZMTysmTCVfdGFETXBTe1BvKXUxIyUjd3N8KT9V
YnBSfEVJSj05MDsqekV7cG01OXh1WAp6dygjdDhiTz43THVfQWNJc15tPX0jWXh7RSVMdSFjYllv
IXFqZSkjJSg9I1Y4dGU0Q0lrVGc9OWxrJGpNWmRYfSkKejBIM0F+QEhsaGcmQVdFZSYrVzhYK0g1
MVolKD9LMHdgYFF4WFhZS3E2OWlkPV47c25LUFpJPz5oeEkjJmBkNWdxCnpDWDJwM0RxM0BGZCZw
NEBWYnJ2X0ZfODJNYjE7Zm55WEZ1MTZ6Y3JKb0ojeHJUUTIhP2VHNj91M2cxZDgrS3tjTgp6LSYx
an56RkwxMGJFMCRobWdNWX08JjRQaz9YIXp3dkswLWopZj5CO2VtP1ExPVMkYCtOdzkkQFdSNz0m
JWA0MWwKejxJPXEjbzA+VS1RU31APmBrK0klY341XmUwMDZXVjclcykxQll7R1B0M3MhJUxXZFE+
OXstdiM1V1VKMV56KSEmCno7Wnx6fSEwcDwpRDwyen5NaWpWYWRxemB6em92SnJiLVB6cXZvPCVZ
VkQ1WHFfbkFUR2pkZlp8ZFZNcEB1aU9mYQp6b3N9NTtZMkpZLUE1VnYpb2tIZkZlSDhmRXFrPHxj
VkFPQHMxIVZlQ0dHcmNoYDFTKlZJZFp7RnYrSzA9QGxaMWwKeilYWkNyezxTTHtoIT5+PlBtTEtr
UCt1XzgkSjJ9ak1gPkg9anE+MTVeNEFZN1YrQUBQJVUmNF48cTZQVyFDeFFnCnpLTmtNdWZqeypD
VDtobGt7N21DbEczU3hRRShwalBMSkp3YjR8dzlwa08lR2AmRzB1SFRzX1R3cylFdSMmSk1XMgp6
S0hffmUra0kqc3QkO1ZSZl5zUTZoVipoQU1oWE5mVX1xbDs3JiRZKHUzPzc8eyRfUXdLNH5uO3k8
WnlCJklAbU4KenNXam42NDFnRyswNUxHQE1xaHJYOFhyPnRUbmVLP1YxRDZLQ187Yyg2akRJfXBp
cT1EZHhHfT1MNnxma0JETSEwCnp0OXRkY3RASXZKZXE7eiokVDlkSjFQSTY8JXxPaSZ0VFBHd2J+
QWFsKDx0YDVDfGg4eDNrSjhFX2d2LSQtZ1lUYwp6IyNFbjs9UGQxQ3lpKXt8cGxvWCV5ZnZ2OU52
V2U8OGluKD0mIzhfZiFSLWFRVF5Ebl5iRj80RlhuRkttS2Z0ZzcKelo4dSR0P3hhLVA9Zk0xX3Aq
eDxfR3JCbT9Ub0FNKHRheGEzKE1XYyt5YHJ3KyNDJGw9QzQ3czUkejhQS1dpd0E7Cno0eGhzQ1gm
ZzNQRmBTS0FYbFE2TWZJYShwMEAhbXZ3Pm54O1NLazE0NSl8KXZIN1JWbTN+T3RFeTkpe0h2PzZS
Xgp6d0A0ZlZeLWVUIyRpWnNhczxOVHNyeFEpe2RIX3RJelRHVmYoSHEzMVcpMSpAWjN0a3JRUWdr
JVlvXlc9OURlfUoKelhFYSpfOEMobXc7ZUs0RFZXY1R2emJmM0hANTc3fDNmVX5CS0EmeTdUaj1T
ZHRROSk/SVZnKlN5M0V+JGUpV3U2CnpwXiY4dSNJcyFCWEVpaz12cnp7O2c0dGZBSm1TM1RoejtN
NUo2eDclJTJabXlecnFmQzYzY1BxZzxPfj8ybCQ7VQp6Zm8qb21EQT0hVG0oVUhpOE5xfk84fCtk
bTd4TTN4Q0Jwb3A5Q2txZnNgaHJ5IygpSzshTU05RUstKFl8dF9uTm8Kelpye1NYbG5PaFR4NWdJ
TXMjX0g5bW8obF9zbkdhMUFxKytYYkNoaWw3TmgheDI3TV4/THF9eWBgRUVuUSYrU0pzCnp7fF9Y
RWV+JnI7PU0henY/QDEhNzxKazdpRiN1cDBkYERzKjN7UjVvc3lAXlBIIyFvd1VyTT1EN1I8VHlu
NjxgeQp6QTY3PWUjTzA1T3BebiZDXk0+TV84P0wjRipNSWVgPCZYRTV8SWZRP3A+WVJWUnN6ZTU4
RHVtPm56eWpncnJhVzUKelp+QmE4USRWR2BzQyZ3fGNXdlpfZXRzN0dUdnZQQi05QDF9Mmx6NUJS
YXR1X2JSJjEjQzA5eVN0dm9iYGJAVWJ0Cno1TnZ9fTMwLVR6UkxWbT9idlNCU3h7KFFeNzY7b1I3
eTdscEhhTHx5aiRiUW1KSmV3cm0qO0k/eCZ9a3o0bWgjeQp6QnJaTDRIOGlyWjwqbDBCTGFlUV48
cnswYyg2UTR6MjtNMkEzcCRAek1tQk9zTFUpPEFLYjstcTA2V0xRd0o8ai0KenVmOClCRSp6UkRI
X3pkIUpuXkN+S3N7VWxZSFI2ZlhTSEhsY254aihZJXZ+flJgP0RIbXRINWYhbXhFRXRoRyNwCnol
WndxIy1vJEZESU4lQT5PQmdlJiRaPz1iU301Iz44VztlRnZzR1NFWXVJQyV1d1ZVNEtxOzNDYWF9
NSZCRXdmdgp6RUtAYXdZZ2FDV2RLcXZHYj95dXVxN1RRdzBZQ1c0WVI7I3IwZUs8cHJfPXkmQVpU
OSR6PTVDe3dGYlB3UXQ7aGEKelUrZjBJKT87XjJSQTFHQTUpSzMjKWxKd3lQfUpETjJhKmZmWTdz
dHUkPUs2eEY1QlZqZlEzISZxJFRFI3t3VTVfCnpfPWFYb0lkdFRrKEVZZ3ktTStwRHl4eUJKVHY+
YX5tJT9tV3k7UXtUP0RxOTVQb3VLKj5OOWZMJTkzNDB7R0prXwp6Vlo9UHt3cHtLSypFXy1kRT0m
MEFQNkwyITslRylTTTxvKE47RFkpVGtidTV7O2pGS2BRRksxRHJtYj9UemwmWUQKekdYUzJsXlR5
ZS00aEZZc2hDUkVFRWJoP0Z7NXY/P2QoRyRNYXEpY2UrVE07WjNaS2UxUEZxYiE1dEB0MyV9bCE9
CnpBNHE0R1JSI3RCZ3UtekVwbzJtOWAxJSVEVFVZTkh5OEdaTXBxV0BQU3pLMzc2QzhGMVBYWGB8
aWU8OXNWSFk+fAp6Y1R4VzBfazheUDFEMzxiOC1ua0lDX3QhR14kUkJeUT5rO2pqd1kheU1xe0BU
aUJ9RVVEIzU1cjFMWCpOSXJKSHoKelAlfD1ROEIhVFlCZnB6dUBPMHsrUU9UVVBJbFdkfT41TXNw
QDd7UDRkJTlPZ3dASjNSPVp5QyQ/RFg4fV5XRDd7CnpkLW5OQVNCMVptYUR1ZUtJTH5xQDhqUHZo
SzJ4Y1ZXIV44aFlJOH0qNnN5b0pEJUl3bT97MDkjaTZTRT5tRm9Ccgp6KXRHeSNZVEdLK1NvR2NZ
MSp1PDc8SnghM3QycTdaNjAxYX5kOHlycD8qMWV4RzFqbTlGNnJeUWhuJT15Y0UmeUwKeko4UUhp
PWVCPkRvNzNZalBFJGNtdT4+JXxMajtoRlJ8ODk2eCV6TDkwYWYtP2owMWMlO1Frc0FyM1AkWDEy
V1dyCnpgRD8mbEg5Jm4wSUk5TTlVSVhyRjBQX3ooX3k/elpmJVYqNTBRKiptMGY3ZD5BcCEoTXoh
dDNsK0FLaXwyKlBQPQp6aS0pc2cybEMmQDMjMXJuTjU7dGFSbXVCYmZPbmo3X3F8ezd7TkMxMiU2
QUJWQGFQfi1KJCptSj09JUE/V2YhO2EKejJ6cSF1V3g7cWpsXi1kVm1wUXNHYFhOVzl5OG1zQXAh
Tlk8WExwd0JNYU4jJSF5KG80PmVIJnhDRW8zSTledG9eCnotYW5DYTw0SHwhdDBNTntzaFglJHEt
UyF8QDJoVW89SDZubkpiejApTUhrO1d6UiFSOSFBPXgmT2Z4bmNWRW1kWgp6ayR4aUpGIyRsRE1n
K1Z+MWdzX2tLR3B6fTw0N3RjKClmWjFfPmwtdVgkND4kJDs+d3xqJTF2NlRIOzhLKUg9OyMKejJe
cHVJSGpPJFdqVj5ZcHI9MXA0SXtGJW8kI0srfk1fQF9ecj0yIWFufjV8RXY7cmBXSSl+bzhJTzwm
MUktNnBOCno0aVc4aUVlSkdwb3J3UzwrVWNlY1heaGl1YXZYSnVYczchRmt0eXg4RTAqWG52fShY
Tz5VcTktYW52S0NvdHsrZAp6R354Vn1MO3ctKF56SVU5UHt3SURkNEhzZyh7NkdjRGdII0poLWdS
SUw4Tmd8RH1jNjNEM2A/eHc1Ql9QKlV9d2wKel56R2tNcEM2emVKTlFVOHllS0M1OVNpcSp1aXpW
WEojJE84PV9YNDdGZC1aNmFRWSZDKFhPcVU0S2kheWZ4ez19Cno/RUNzKllMeSpLZjdaeztlPkJF
JEA5O21aZFMwNVA4dFBJI0BsSTZAPWcqNEN8MSNPWnZnPk81Rk47cG02Jn5CRwp6Y2J4dk1HNU9L
REFwND5qTXkpQE9KeCV+QSQrQ2d6N0NMTF9yJjQlentua2BrbiZ8eTcqMSVYQislR0FrVDR6QCoK
enBfJnJgTF5QelhCR01xREF5cS03YVomP0pqd19YamhTVl92UT94bG1mVHZhZkp0M2gqaD9pQFB0
RzZ6bV93NClwCnptQW9nNG9WcilsVEc0TUxeUDBjcGxqVjtjTj5XJGxKUn4zOStNVHNJQ0lFbmBy
Y19Uc0IlZD5USmR3PTt2QWckNgp6Mll5TlkmT0BkOHt4RCM2Zz5+e01EJUlIVlAxVnpmc3V6OWhS
TF5SfWs7ZSp1LXtiOE45eWsrNUYjNU5EV347YFUKek0kMGQpMntSN3RqTjE5KT9ycmVzekRZSTlG
MHNxYCE3cUthdyV6az00cX1OUmpmanBrQjBBREt3ZlheP0JCRy17CnpqWCo9Nk8kM2I3YWRKSE1I
eFgmJTY5TC1rU1MtPSspMmFkRXNYek1XIz95ZF5oNllZcnImfXlCQWZsbmNNP0BOWAp6aD02ZSNQ
SlpxaFQtUnQhajtGeTMwI2stV0cmRHFzRyRPUERGckozI1oqRHZkWXFpZCpTWWsqLUwmRmdRalZW
K2oKemZRV2B1bUooQDwoe09TO3J4NExfJUk4Rjt3OX5MeUdVYnNyalgkYWdkWV9NXjhMZ349QHI3
bENIfT80cHRoTFAmCnpLQTM/UTVyRWVidzdlbUpPZDxgdWotWEJCOUZmTFA4ZW5wSylwWjBkclZz
fUxRJUM/MmZZJVhUR2xnRTNBVWdALQp6ZDdaTVFvUy1vRFV3UmlGQU8zbzAjK2gkTSpSe1g8VkQ5
NnImd2d6QHgyPXwoXiF9Y1hVVXE1YnM+PDwxaTVXTEcKejt3JWlYTmoqQEVCfSZZfEZUSV82MD5W
fFFlPmZ+cz9VPHdiITl0fXt4SCshcWB0Vihucj0tKVQ8O0M1aGBSZn5oCnplTzNeX0BialIxSG5e
WGp2MTV5QT1hKy1PcForbClPfU1fd2RQN19NPVc3ISNVWFpWdil3WUsxb0lTOVRUeiphQQp6ZCE1
N1NheG8mfDEoXlNSbyM4aEUjfVVeVlQhPUo2aHljUG1MbTgzQURJJFFWJkgoPkl0KnlkPnAyWEA1
VGVhcCoKelpZPjEkQjJ4UXstZUk9JGBQT3JubUF9cUE7fnxTSlJpNUFVezl8Y3NiUjZlTzhDezFW
cmF2N3xvSEIyX0ApdEBFCnp4diN0SGk8T0wwTkstak8jekZnNFc0SFFXQ1FlR352IUhkJFoxZEps
ISYyWSk7KVFgJSZkSko5YE51QmxpX1dmJQp6XzR2WnVvMnsjUVFkMi1iVzxrc1JwP1l9Sml9I3J9
U1V8fXt7M0h8Y2xlcGtPIzd7Q189WDtHSmFCI3djMTc3RVkKejhrMzJ1Z1YqYEFtP0FEWFh5KyQ8
NkRLRypvUnNKXnpyZ3wzQXU5TTBTMDBFOGUhNXg8ZSVNYmopZGdfU2VscXY0CnojT3FrcjZBQUoj
JkdoaWV5dSljb3t7KWQ3SDleI1FKVkRmeFA3dFhVNkdXUEZmQHQ3OEt7VmB+QVI0WElofU9Acgpv
dVE3RkdmQHQjTDFrc0g4UXBBMnFzK3JBZl4+MGhEdHJgQmQpYiNLSyhmWmx7MDNxOUB4JlF6RwoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1pbmRleGVkLnBuZyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtaW5k
ZXhlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE4OGQyZDc1YjQ3MGRiOGY3Mzg2MWNhNzE1OWY3ZjRkOGU4
MjEyMQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTY4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
dnBeajNDVSYzP3gtPWhuKWdhJW1GP2p1S3lWckJwLTJfMUckXzk5K0FaaQp6NEJXeVglKlpmbmpz
I0Zwc2wrdisjNXE0VkgjTSg+IU1QfGt1X1FHYHAqKnVCTCY0cUNIJFdqalBhI3BrSCEtPD0Kek1Z
JUlqSEc3R3R1UGdnKU1qMF9IKFpqSngtOVJCT1BaITQhal9iKEBLc0ZOdDwwSGpBI3l9UT5yPm1k
S0k7VnN0CkUwRlg1JXtRdip9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvc2Ft
cGxlckZvcldlYkdMMlVuaWZvcm1TaGFkZXIuZnJhZyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9zYW1wbGVyRm9yV2ViR0wyVW5pZm9ybVNo
YWRlci5mcmFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOWE5MDA3OWFiMzVlZjY2Njc2Yjg3OGYyNjdhNTQ2MTcx
OGE5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvc2FtcGxlckZvcldlYkdMMlVuaWZvcm1TaGFkZXIuZnJh
ZwpAQCAtMCwwICsxLDE3IEBACisjdmVyc2lvbiAzMDAgZXMKKworLyoKK0NvcHlyaWdodCAoYykg
MjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhl
IExJQ0VOU0UudHh0IGZpbGUuCisqLworCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZv
cm0gbWVkaXVtcCBzYW1wbGVyM0QgczNEOwordW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyREFycmF5
IHMyREFycmF5Oworb3V0IHZlYzQgZnJhZ0NvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgZnJhZ0Nv
bG9yID0gdGV4dHVyZShzM0QsIHZlYzMoMC41LCAwLjUsIDAuNSkpICsKKyAgICAgIHRleHR1cmUo
czJEQXJyYXksIHZlYzMoMC41LCAwLjUsIDAuNSkpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3NhbXBsZXJVbmlm
b3JtU2hhZGVyLmZyYWcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9yZXNvdXJjZXMvc2FtcGxlclVuaWZvcm1TaGFkZXIuZnJhZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWNi
YTEyNzQ2MGY2MDg4NmI2YmI4NjA3NjRkODk4ZWJhOWEwNjdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3Nh
bXBsZXJVbmlmb3JtU2hhZGVyLmZyYWcKQEAgLTAsMCArMSw4IEBACitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHMyRDsKK3VuaWZvcm0gc2FtcGxlckN1YmUgc0N1
YmU7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzMkQsIHZl
YzIoMC41LCAwLjUpKSArCisgICAgICAgICAgICAgICAgICAgdGV4dHVyZUN1YmUoc0N1YmUsIHZl
YzMoMC41LCAwLjUsIDAuNSkpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNpZS1y
Z2ItcHJvZmlsZS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY2llLXJnYi1wcm9maWxlLnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYThiZjM3NzE3OWViOWFiYjQ0MzUxNGM3M2UxYzFmYjAyZWM3MWU1CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCA4NjgKemNtVi1xMURwSmJQKTxoOzNLfExrMDAwZTFOSkxUcTAwMWlo
MDAxSGcwc3NJMk5pZXJ4MDAwMDlhN2JCbTAwMXJ7CnowMDFyezBlR2M5Yl5yaFlHSEY5WVAqNy1a
Ylo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtcE96emU+WVU2bzxiWAp6MWRCb3V5Ym99ZmZ9bGRF
WmNhJkNOPHBNVmhhXzgqaEE3ZWArKzY8QGQ8QF5mI2xfWGgqLTIwK0lRYTw5UENefUcKenR4aDhO
IUdaN21oUXJ8O3UtMlRtK3AkKClsb3s9SFVGOFIlVDcwNiRHT0tLfUdsPEs9Pkd5WDV2T0cpcGlH
YTZmCnoxaSltfFh9Y1olIyFfNXAxSDEjeFZOJTgqWSM9JV9nI21GMSRtcUIqQWclJGE1NDt3TEpE
e0Zje3M3ZFklM3B4Rwp6X0phX19EPEQlcDIqQ283UVJOYmxDT0owJXQtS2lQcXg4X0lyZnU4RzhS
ayk8X1EkMTNNeTJYeWFqdUo4NEBAIXkKenN7SF97d1IjPXBielN9JktNMitBdlkjY3R2VHd2RWBn
SGFLWXdQIVpLSTdzRkhnMmNXPkNIVWI4Xk5SajMqa0lsCnp6WHV4ZCohVGQrKmlOa3R7ckM/NjAw
MUNrTksjRHowRD5fOTBEPl85MFVzT3kwQjNeJDBCWjtVMFQ+ZWkwNnt3ZAp6MDBWQEY8cmA3fTAw
RkU/TF90KHwrTyRfa21jPWojbFglfEV7alkxeTB3LX14YXJ4ZSl5Y2pTTmZ7PWQjQWZaPz4KenlC
N2RaeElUO05maWZ1cUppakdDbDd9QENDSUtNbWp7eEx2TkR9fVVNd1hpKG5aTnQ4QGpSZ0Z2eU1j
dHZlJCFYCnotMihfP1JzPSpoTHVeeyVEUGAzP1I1Jko3ZV4zRSohOT9nVGcxMVooQWZQTE1nJTVV
Smp4Rm5aP0p9XlQ2NXxGRwp6Pj5VTGlCc0JKenAmdnhocUNnJlhuNUE4Tm19c0E+Nz8mdCpVKlJQ
SWI7NWJjTGEhRW5mV2pMX2R1cEwzNlo/OVQKem9GeldXTiYzdmg2RjZsP2UzXzsrdjJgIzMhVnhy
d0JoViUkcmQoPkEyaSgqT0I8MHZHRjtRR2chKWtadFdHKG9YCnpOQyotWGhFUHpgSFlaZzFvUk5I
UlRGUVo4RzZ3fDs+UWhYOENSI0JhPXY1Q0khcX5DSnUzOHY2TCleb31jfnZIfQp6X1EqWGdhIVFl
Nk9yYUJgRXNoOU5pc1VUYkJ2NEAjMTszPFlZcn44KmdAVXcpZ2NTO31nPFZ2bTMhP1QjQFo/QHUK
ejtZRSp3SzM2PkYlNmpxPWlGYFF0aDVgIzteM2hwK0hBc3M0SjBAbCk7K05rNDxAYXtESk0rc1Na
TlA5P3JfJE1HCnUmZE1DQiZ+Vj8wQDIzKEt6cCN9Z05FJksze3tzTWBsKUh0ZD1AWHk7MDAwMDxN
TlVNbkxTVFklKU5wP1EKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9zbWFsbC1z
cXVhcmUtd2l0aC1jb2xvcm1hdGNoLXByb2ZpbGUucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNvbG9y
bWF0Y2gtcHJvZmlsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0NTRlYzBkZDdjZWQ4OGQ4MmM4MmFlN2E3
MmM4Njk5M2RhNDM0MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgODcxCnpjbVYtdDFETzFZUCk8
aDszS3xMazAwMGUxTkpMVHEwMDFpaDAwMUhnMHNzSTJOaWVyeDAwMDA5YTdiQm0wMDFyewp6MDAx
cnswZUdjOWJecmhZSEVCYWJQKjctWmJaPktMWipVKzxMcWl+TmEmS203WS1Jb2RjLXBPenplPllV
Nm88Y0MKenBeOElQJGZtPFphVEtiOVBgOU01Ulp1OT1BPDVSSHApSXchO3BZME10SXkjQklPO3BO
aWk0dHlxbUxrKzkyfXdxCnpDbFVPbkBCRF90O3J5VWRiREQwZXZJeWhVWHNfKWBLTTNYUTE2NWBL
cGQwNnopOUQtbHEkKkFMaUdiLWQwXm83Twp6WH1UQGAjKGJQPDFBRzhteShFdTgpUFVpKyRxYX1x
ej5ZP2wwZFdKXmBxKm9MeEM1K3k7Wkp9Uzc1KVpUKzdDaHkKej98fEwrZ0FnaW5mRV5YUzBAeDxH
RmFRbWVQNHV1b0Zta2hBdVM9KD1xQ180fGErOGQ2eHUzPkxYRyhXWChnVFk3CnowOWFfSzZRdktr
Q0xUenk/ZWcjVktgMEJHekpDMzhyXzQmP1ErQFdgZ31ERUhFX1lteFVeajs5Y0Ewcj1hNk4oTAp6
bW9pKTNnUWEhMm03aHZRUWJZczlkU3c2cjAzYyZYUWNWQj1oWUExeWoweWslXzcoc0Rnd0ZyfmIy
fFY0Pns5PiQKekkrcCtkOVpVTjJXdFJXfDBqeDx4S34jOSF2e3klIyNWYG55Yzszelp1V1FXJEN2
aSkwYFFEX3c3JSZvb2tiZVJvCnpwOyQ0eTdYVlBXSzh4dnJHQVJOKXphPkREaGN5eD0wVStwKTBP
VzUtNjk1PVNtWVgxJXp4JVRCSmZQfmNqenFBcwp6Kk1uJT8wfDtZUTFWbEdPWStCKGRXentgWUkz
YHFvUHl1d29NQ2RNcHdAZVpzcGV1aWM0fFpMU0UkZSZqR08oYyUKejt8M0okOVIoZEVIMT9SR0E0
SmZpS3B1Nk5yQ29jTlhySFBXbW5keXQ7VXhpZSFnPEw7dU5Ib1EhVyV8PVlNfnwqCnpgK0Fke0J8
Z2VZYHBtPT1JQXVuQm5XaStjYnVhPEs1ajJNKiY/WTlQVHh5JkwrfCZ2cjw9OERUUUN2JklZSW8q
agp6RSU9czUyb2U7QVAqQnIwQ3NnXklrJGlBayU3SX1yMkwlZjFRJXJwKFN9YDV5UlN6MSUqczta
flN7T1AqK3s0NnEKelJWSzZjJFVRQWBOfDlucnAlYkpuanRFblY8U2dES1ArPTRXem9jVnAhO0Ni
QWcwelEoNiQtQ35UfnduQnFWYDRiCno8WCYwZk1VUjYlUzNLditkaCF5OWRecUBxMHQ7WEEoT0c+
cE5RKFBBQ1QxdCVtKWAmN19qYjVEXlVFUF56O0labgp4KCVFTHQke2VjRGFObWpWcnhGI3Z1JDNm
ODhmckhHMHwyNnd5TT9DZDZRQlM5MDAyb3ZQREhMa1YxZ1d8YzhDQX4KCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4tcHJvZmlsZS5q
cGcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJj
ZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUuanBnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5
MTg2OTY4ZmJkMDMzODVmZGUzZDI3OGNhODBhNWIxZDgxNjZhYzMKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDkxNDUKemNtZUc+WWp7JnR3KS1TKWwwSWsmRW1GS1FPYnBNRnc4PVNuWFF0TFBOdWYl
aHF+K3lSZC1GSStRPEkhREljWkRQCnpLQGIoNGBENmY8KFEmODxzUEspU2p9Y010OVhrcnJuZlll
ITJvdzxneWErbUM7Y0B9N1NXITU0P1MxbTlxVlViVgp6R2s+TiMtKEZ8IXdib3ZIP1h9bF9XTith
ZTtSN2BHaEs5eGxMYGYpMEx1bjhhaiEyKHliJSVvcHghdmVtZ3BkTnMKenNjfWRPN3pJQj5VNXlG
fWoqeVN+bW5ffislfUMyZ0shISNEKGYxJUhEMkN2YmZJb08mNyF7PUpaaWVzTXNDeEhuCnoydSZa
R2BQdWBWazV4NmJhWGdvNzxLaWt1dnE3fmU5MUN6PU55Ty1Bb3NGaCN2e14rUFk8aXV8WGFwNVZg
VUVBbQp6RCttWlpBPDYyV2BHaG8hdEZhJj84NnsySUQ5aTUkSDdWQipZRmQ2akJ2ZUtSUlVec2pt
YjhvTiZ9e2dFTjVycD8Kej9ATFNydTVjMlNsMExPTSs9dnFYMmJHWiQzZnpUajNoJHduczhwZCk2
ZSZ1SmlifEN3I1U7d3w8KXgrTjxFdHR2CnojI2RCU0ROOUw4ZjVnSnFBdkxDP1dLN3dadjFNZ3JF
NmQ4dERsc1VsNnNzdCZNMWstLXEqTmRebmtsOCFOVFFecQp6Tj1rU2l4LUF1VVFGVU50QXc/MXhq
RlNgc3JKenRJUn0+WU9Lc2J6S1FiOzFyRnZsWFFmUmFpSUIhek9CcUVLM0AKejJjfVk1YUxxV24m
XzNUPXEzJjREJFNUKXRlNCYyd2w8fVQ3ZTBvRC0jVTYpej5lfVloTjZ6P0AjO2N4dUAkUEJQCnpi
dTl0Y28xMXZrZ3VNJW52WS1CRDw8NVBuNTY/RENlYHhiUEZGbXwjO0dAc0JZPTNNMlV4eVkzSk1W
cXVzaDQqagp6YDFxVzgpfW0wP2VlMGp6KFNQdlI9U24xemZWQm4wQ2JfSzhOS0NrZjkjO1NzYmZf
eHxuZE5JTHU/MjU8X01GeUYKekBmfUk1U25Gc1c/QHQ9ZU9xRjIrPGtPNkE/Z2IrQE8kZkxhbjBX
U1IpYFZ9alYwejkzO2F5WkpDMmNCRTlYalN8CnpvY2R0dlR1PFlhJERYPT0+eD42MCpZIU1tVHRM
RnhgMyQjYmUqMFEoIUVhbElKO3l2WmApPlQrPnlNdm5KWHAyMQp6ZVomNTNIP0M/bFp+TCQzZ2hS
cWZnKWNXcF5mZndVc2MmPV9PZUYmfW1jVHJLZEQ0PzJrRDRoUSFtfktAQ0gxQmUKelVSa2I2LUNh
bzNJRUsqaGpHYVV6Q3lwI2omeXNReGZkRDh7M3VaRzsjYmpuK09oUE9lIVlJck1aNz5MJjJ0YiZG
CnprZj0wZTxELXZkREdaX0MxVFo2bXIjZ2tJYX09VTs3fElDNlZWKyR3Tms3NXRPUnxMajN5PTZo
ZnBzST9TNkJmZwp6Kk5adnJ3QEUtbldhU1kzY3JgOWNad0RhdTJOd31jSWZRMEhve1creGlvN1RT
emlQbGNQenAqMyM2cWJIZyVPWTEKejBQYGFiXyNEdWEoQm0rUTBXQShDNGg1a1UwY20waHo+eHtC
UG5tPlUlZENZTjhhRHFNRGN2bmhrRUozSl9+N01TCno9SHBWYUt5c2UxLTRDVTdKJiZLS3BAZjQz
d1pNYGM7Ykl8LTwxfmoyXjctWEBve09mLSMwKmNVRXlLc0EkJiEoPAp6cEdfYHwldD1DdDhxclE2
O1FASVpXSH43YElgZWVQTGtUVndBMz42RmlFdDwhVmBIZigpRzJpfVc5ezxANGEjR0AKekRXMDNm
I0BLfEhYOUdZJEVsY0JVVERWdmcjdVV0SGpEfVMzYEZyPFlubzJ9a1QjSCt2c2tDI2teRzh6TCRx
K2smCnpCSilRMDdIPzwtdDwyOXRKK18tfk93TWpgJismMHcxUz9jeiRSbVZ7K1BGbElKcldMT0pY
SjFzZXMrY29IUlM7fAp6PXVKZzxLI014cjFiKyRmZyZGY2xAZSpJaSE5fT00b156Rj17YHkmMjIy
Pz9GeGZ1MyE1em9jdnJUOFM5MkBLM0QKemp6QSFOZ0llbjJjbkdMKCZgViY1K3JCUE49SWppdDQz
JEViKVNWYHtJNnZ7KEw9MGh5JFlCWDJ4ZmNMLVRWfmQqCnpMYGI7YD08VFFxX1VfVCRlc3M3MF99
bzhXdzxpJks0VVJ+KDA1WExgdksta18wRzU2cUVjK19kMVJEZWcrWE0kJgp6MUlBIU9MPX41alAk
MzZ1TWgyYDxvQ0Qme0IhfDtKWCt0PW95cllmaDwySjF9bWFPc09iOXMlUWkpeT5RYVY9ZT0Keikx
bntPYjtySF8rZ00pWlZffXU4UmlGQ3pLRDg8d3M4dWdBeF4/Y2pnS1oxWD9uJHVDSiMkPDlKLTdM
LTBkP0pWCnpzdm1kVHh9KShaJVg/TWIoTVQrNT4ja0szPHU8QEVTKnVuTjUmcEpYSDkwRyo3UTM1
TjRsY299M15oeSpRfDtIOAp6XmVVc2lNc0grSGo2dEpmYlVLU3hYViZVPCl3SVAlR2Q5fHlOKyZo
Nm1rMCFIOSVuPGtIN00xcCk3fFJvPlo8OXwKeipLbW9EbWJPfjBTezxXaG19LSF5UEEta3stdE92
SGEma3Q0bFRHPik7VyFgV1ZrKWZCM3AqaVNzfEgpZVBESkJiCnp3VV9pKE1saiZkJUVlKV5DeWZY
RVN+a0spKiUrUyQmKGhjZEx9QChwRkRQNE9nejdBdDNgZUZDSU0/bUliY017dwp6TVdmaiFsRHct
RXk3Njcob1d1KmEqMjU7YlJLbX0/ST5GNHpuYTIyVkZ6M3pAIyRuQ355SUEtYGRGaDVRQ28zQWEK
eklURWF3aHdURWt0VntzcGo9RmgmMmVBIWxZMVJvbGMmIUAkS2RoJGRZVERkRj51cEE+JjB3aDNT
IV9DO0RDKl97Cno7byNENWlsK1pjanUzQDc0MHc2KFdyWUtOVGFaZ2N6MkwpZSlFaT44P1F1NHdS
JU02QU1zXyU4OE8rbj8oO0ZSKgp6clVWeFpNfVI/T24mYVVadkQ1OWdITzcqPkh8QSM+b3dhSntX
S0IzNnVzTXg3diZtdip0Zm1JVyorQTN2Y0dfVnYKeiohMzJqd1Z0dS1LeyorRG8wSWRXYTQyUSEy
NT89Jm1ETHJHTSY4S1pyVU1WVDRPQnFtVU9aMX4pd0VoZ2g+TE9iCnpMe2NKPWZ2SU0tOG5tPHlR
ZChmaTxwZ3M0MStnJFZuQEx4azNvVWlCJlR4b0xWeWUta1ZUQCtUN1JYaSZ0UGRLLQp6WT04X2pp
JFA9NT5tYnZCMUtwejZmSE82RTlqKCNSN1JYa09rJTZwZGZDaFRaST47YnYjJF9ZJEE/cG8jPTBg
ZUwKenoyMEUzbjs2RG12S3BOX2xpNSkzYXh0e3M9YHVKP0c+aW19WGpAYWJufmZ9WGhHOCgwIzJi
YllvRiNjMnkmK3ZFCno5U0w0UE0xeyN7KUVtP0VrPUBqckVHQzEtcHRHOEUxVlJWUUckVFRXUCgt
Syl4eyglVDM+c1heT2R4YT9Jc3oxYwp6S3J2WDFJcyYxaWZJfkx7ZkA5MmphMnRqbzU3M0lDMXRi
Q0R3KUVnYzN+PylaYTR2Plc3YSp3JXR+Sm1HOzk+flkKejB1KDdgZj9GYE9mfUg/fmpNV0lablph
fjMzPEUkSUVDWCE/b2Z6Vn1SdHY2Y3dPfD5tMTxQMmlNOC0tSjlCWj1ACnpaNGg0c0N2fndVdXIh
ITdGclhSOzAqeSZ5KT50JUY0WS1EO0g4aTg0XiV+bHNmZEt7fitOXjxTVV9jZ1AxVlJMJgp6I3xW
SzBhUjRDJGs/PHBuLUNXT0Q+eTVQQ1dIdmtYXi1jIUQhfHJnXitaX2hsVllUMkxMITY0VSElMH1r
bVp0WmgKelgwe2BaTVp6a3c/JUtTNWFaMzJ7bEUoKHJYPiN+ZClCbXpsU1g5fjcjPV53UVVrU2dx
eW9xOC1GMzVMejZSYlQxCnp2LVBgfFM/I3g0JkJnRlBmdD1sT1peOD5aSUdhZTtzKUdxR3N1R3ZQ
Y3Iydml4cGFaN2tLZHs/PkZ2eV55UUNXfgp6eTkpbGorPmpte2YxNVdKViZST1ZScFZaMEBtVzl8
Uz8kKmNvJCZJYDRIPERiajlAZi00IVNPTFN7ZVAwZFNLSzgKenFhR09iel5EZ0NKQDhORGYhc3xC
OC10QG83dT1Id04yJWxSQUY7S2BHcTBnPmoqREZTUTE3fiU4KEppQUg2TS1mCnozRDJ5MCkjND5M
c3BSfE5yRFl0dkwlezIjKlBvMnJvMHtncDRHeE5sKlFwcklCKUIqX2NSOypaLWx4STNHSz8keQp6
N1d2fXxkO15TY1BOeE9uTWclVTNzc0lta0BvfUoyY0t9fFEwSFhsXkltU2FHejhUe181cjJpcXcw
SW1LXkMhVHwKekxWMzZeNTlpX2I4dS1ZOyNnfiUlVHp0YEVSTHkyJWlMZ0pGUkpweU9TUEdzQUxf
NHF+RCRmM3NDZEwwaGZjLTNMCnpKTEA2LXFwdGM+al48bUIoMm5+TXN5ZFhUUDF5aTxiWn1xJV4z
RUtNK1gkfmlAQ3FqVnhqJldZT2p9MSRmNmpYcQp6ejg8TEp0RlpYeWRQUHVAT1ZWdTB0QkshMEMw
V0xtQjYrWEVAUWoqITZfJnhQQFJNTXNPYWQ+UCooNnVVM0paIykKeiNxZUdadWZqK3NoNCE7ZFVg
Z2M/MXl6S0tPQ1V9dURaQzN5dXwqUERRSHB7V1ZgYnF1Kil7U0NIQiEpKGM0cVNVCnpxV1NlI2Q4
ZzxuY3NpQz5gUE5Lelk8JUpMRygpMHo7djBMNih+bVRwUi05UztxX1pYSVlCMTA4JnNlWjwoYlhA
JAp6eCVjUiZmeEcjMkU3P3VJKn0zbi1BNmtORVFgY0g7dm0wKiFfbE1mVD9WVmxTT01DOVFfcjZ2
NEtrKDRRa0Y1WDIKenFtT09nXjM+RE1ZfkErS19McTBPXjZHMjUtckMqJmAjPTB+VkU9KUc/O0x2
ZnFyWk45PzMyT2NwQURWK2VFNXM9CnooMCUtbFRfN3ppQ0A3SDAzWnIxTTY1Zz4zWCZGKmkqeXFh
YFopSnl+ZSk7NHo8MkBVRlNMdXNobkRXTFJOODxFXgp6QlAkSD5vTCVMMm9fWEBjWH51fnlDUmJw
M2Fxe2tVNExyN1kwaD9OQVVVPzVPYDBOal9lcldTY18oQSgmQGtNKmEKenRWS2FmX0U5X2NxQ0k8
WVRsY0Q4Sm9DISQtfXorTitQRWFWXiFgVjt6V1JxbGdJYD4weVd5dHhvKENTPV9TenJjCnpKJGA9
ViF9R3djXkcrXiVSelMqQXJ8IUFxd1ZpOHJyNmtTVj1MWkU7KFEkRmRfTCtPMWBSYVZBY1NIQWkw
cXFkYgp6emgzQ3U5XlNkQj5PY0N8LXxSb0g5cXR8ZTwrNUczemlAVWlhJngpSWImfjZVeCV9eWQr
amVmOUdfKzRacFVHUT0KencrQytkViprWjIyU0l0cSt+K14pX2BaR0peOFI0fnQ9P1lKemgoWkpU
SyY4V2IrKl8wUDZ9dyFmJDMjR15LSVN3Cno+NF52S29OIV47YUJ0XyhVfVE8Wj1iPjgjXndWWCNg
P21oejtDb35HSHlNdXtTa15QUmFDUHMpSGV0YGVFeUw5cAp6YHd0JmhTbWVMOU9ua2EyYURMaEEw
KHhMfGAtSWd1ZTBjT0h8TX0/Z3kxTCMpMUI+NH5hZ29AcT09K3VKZ0k8P18KelN9I3QyfDNYaHx4
JEBqbGI9fjEqSkVVTFRgRiFfPXBBRyFtJkBiUWJTK0gzXjZWeyghLTc0JUkyLT03MDRoWk8hCnpe
emRRSD1AVmxQcDhvOWNebkRsbHpDODdwP0tBdGdiVSs2Tkhnd2w1dGg9bDN4ZXNuJXtKNGVwRThk
IVNeVzt9Ywp6YHE3MURAQVAoRmNjPUY1UmJUY3pAXzZzKGhnWCFwYm5PMDVfU0R3KXtRMT1UR2Z4
UW4ySE5LaEtpQnUkcHxkQigKel5pJXV6VVRGOCVjVyU0MmNJTjclZ0IhVTBVdEV8cUlQfSRwK0dw
b31mOHR4ZThgQHBoZkFIKihmTnB1Y0A1NTd9Cml6aWZIX2p2RUpGeCFDdkw8ekY1cWRNKGVyY2NB
cXJnUlFOP3E1bE9LVWJZYmMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9zbWFs
bC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4tcHJvZmlsZS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29s
b3JzcGluLXByb2ZpbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MjI2MjczNzY4ZTUwOTVmMjMwYTM5ZGNi
YzM1ZGY5NzNiZGVjMWEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDg0MQp6Y21WLVAxR2ZCJFAp
PGg7M0t8TGswMDBlMU5KTFRxMDAxaWgwMDFIZzBzc0kyTmllcngwMDAwOWE3YkJtMDAxcnsKejAw
MXJ7MGVHYzliXnJoWTdpbUw3UCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1wT3p5LUxH
UzA3bFFQCnpnNGpXZTFuR0RPYWRJZXY7SHJWQFY0eCUhbDU5O0hWbkNCe2JLPyY8M2E7SlUxaUAh
ZWNoQD9KZjxBPkhJeShlTwp6OVI8JkhJTVc5b2gmUmpXeVI4bCFXP0k9aCt0VHZgSXJtSlBCfDVh
MjlZJHJiSDVsdnhXTyl8ejh2JFEwMiFOK0cKeiVqdnVQanJwaWg4aDhnKk17eVp9PW1NaS1VMSQo
emZUMjc7MDVKeFByMWwlWTJ5NEZ3NENVRztoellRZU9uRXJ2CnpJekdfPVc/cjFDR30rZzN6MVEy
MnlLJHp7czRBczNPdFB3a2RJdGIpR2U1fGNRPX1SSGl7fVRqd2h0UXRofi1Kcwp6IWJgWmpmYk1K
NFI8MjwyOUJ2PCltUzRsPkMoTWthTiooPXRBfEFnMUsmd1pgVUEtWGkwMDAwV1ZAT2c+MDA0Uj0K
ejAwNGw0MDA0Q2AwMDhQPTAwMjZkMDAwK24wMDg7ezAwNG1LcGx9OSowMDA1M05rbDxaYy1wakFO
MCFBZjIkT2k7CnomSGIteSU+cE5KT0w2KCRxYFZqfjVgdklfMHdBR1NGfW9LNFBgRXllPjQ3cFMw
ekFKWkskMz93NSsoczQ9I0sjOAp6WiU3alc3KUYreEFlcTFXdmhoNWk+YSZoU3UoSD5LWHgjJHtW
XiMhMkgkIVklO1ZFVStKeWJYKlJEVnpiYmlxWEUKekVgcW1BNStJLX1lfXhaclU1K2o1ZCtqbz9w
JVVXOzZ6bS1aOVY5Z05uNHVwOyg0cyZkYihwMUhkemZnU3N1LTZqCnpaQ35MZjBkPk44JHdJRmRl
dF5Pb010Zj9aQ0tMTzVsYmpfISUxUWRuIzFsQVdNdHFzM0dfaUZzMG0yYjloYT1EPwp6Q1o9MyFv
Q248MDNNQSMmRWlxQUNPVCVoKz00MzdTbVBpTl42b3lieCg+NW5tYEo5bl9hOVlaTlZLTjU9M2hH
bCMKemVJe0JsOXEzZ0w4cDdESSNqYVd5SXoheVUjQ2NVRnYtWmU2RXBrZWNWb2FlRXElRHBKUTtP
cyktWHVfQTZhfk1lCnpWezV+Vkc9K2sraGxDWGh1WjNNeXFZSSs7TWV5V2FTPloqR2dGYVYwPWdO
Qlc1e1l+YF89Vy10VS1IcGVlS2ttbQp6YCNVQ1BDKnFnaHxLO35+eEk2UjlBI0syTFNmfHEyWDNv
a1NzP2MhWGlTTVRwNn5DflJCdUUtK0h2YTx2cUxqT1oKVHJzKSUpMDAwMDBOa3ZYWHUwbWpmMmRH
OyQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1l
LXNyZ2ItcHJvZmlsZS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtZS1zcmdiLXByb2ZpbGUucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3OTJiMGFjNTcwM2YzMDY4NTZkMjI4ZjEzNWY0YWM5MmZmOTczNzEKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE5ODUKemNtVjt5MlJgX1RQKTxoOzNLfExrMDAwZTFOSkxUcTAw
MWloMDAxSGcwc3NJMk5pZXJ4MDAwMDlhN2JCbTAwMXJ7CnowMDFyezBlR2M5Yl5yaGNrNyt8Z1Aq
Ny1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtcm1QWWMhTzM5MCYwNAp6N2BLV2ptbEMkZ0J9
SXhNbW9YUjVGc05pQlFMP29SUVZpM35OVlptNkMjVEQ1bFA9cUJCaHJQb2kpPXwzPjR1VU0Kekhr
R1ZQdjIwM0dSSEZhQj08SmJwK3dEYz9ZJWlZUXRLYWBRJit+aUVeRXt2UHxERmRoSGx5NXlCNHEl
UTc9X0h3CnpRXj1ZPEN5MXExaU5Wa1UwM2J2eG1yXnJrYztsYW8wZCFZYDBSVUNqbClGJm1tJTYx
WFB8MGBMejNabXV3UjQ2eQp6O29vYkJTU25LaDQwUWw4VmN+S3l6KnFga1QpYVo2MDJ0ezJiVkgt
MDNWQExaS3Z4X1k1KFkzejA4RjZSTEt9ZWIKejk4bGQodjQhaytkUnNzfThCcENXV0slWVBtS21U
MUEpOHtxKTd0fDJXYEcoYihRKUdiPVlkOWUlJmVJSmB+Vm9pCno0WTgwUzBXdkphMHpeVXE3VEI8
WDRjSzZUTEt0RVppZzIobjZBNiQqZnBBRDUyTWJkVzEySk1EZ0F9b2xBcHtEOQp6Qk1jdzlwOVRP
VWd1QHpnX2B3c3gqPmkkZVolXnhnJE5rNWNgVCl9b1B9KFB0dXclY1NyWGNgU1k2KkVaN0VudDgK
emBjZXNieV9iLV80MWllK1R2I2xqZ2UoQUhHNjRXQTBQWC0zZXwtPmZvTlVRfF59c2pmSz1jd3xv
SHhNVjUwcEx6CnpoVW95emhrIylxUF52Pm47WjghJU8odndJclQ8ejYwN2pIanJMdnQkaWZYR21Y
VkJXZzYmbWBRdnhjVDxVRDU2eQp6Wm1LZz9TRTg0IXBFYVVqPGFMQUZxdntNQmpwfmk+ZW87UVVr
ZC1yTHZxYCpaZlNJa2l4X1FtbWdCRyVKUFVDdlUKenBSJHglamtVVHhWWVJpamI+JjMpQjwpR3JI
VWdVcCtqK0xGPj1eYl9KRT5pcGVXLW8pV1JKLXc5RT09UklXIyVDCnpJcXFAbmNBRG4mbFQofHNn
TDkodUM1fCUzamtBSzImdU1vVjxLcFgqPXlKJVYhbGojUXo7KSZaYSVKM1BaVSotaAp6eDBITDIr
cypAVElNMG1kITFMay1AdUdRJnlqMCNIVUo8WEJfbGpAOGNqMz9IdWkrbygqOWtOUTApYXdzU2tV
NVgKej9pJTVtP2I9Q2tzZFpHMWFIMjN0Kng8JUBPTEpGdGs5Tk4hQCk4d3oqbX5yNmpgeiY9dmhn
fVNNS3E7KT5ZezFQCnpYPSZhOT8rNFNyX2leLVRgRXU2YGVfdzZpbnxAbm8maHhrT0AwKFFfYTUh
LU5Zez93fEFpPjs4IUtQbXMlYD0hawp6PlQ2YnJSVllYNzZTZzNIYjtTTSFXc3hyeVN3c2EjWjxT
UVY+UHpQPiZYTSZoWDJ1PGZBRyViWVBgN09RQH1ma30Keml1eyRfUmhMKSRCe2kqQ3pScUMlbmRI
elB2XkhNWTZ1O1NpT1ZfcnUrdD08NCtISmM+R3AmOF50O355QWM/V1YxCno5bjh1OElybkpjQHla
aXpDa04kUTdYK001SSlEMVl2ckJlWTV7ZlRoKDxfVEVGUjhHc08wQzhuTWF8PmlCPXcjNQp6emls
NGNsSiF2ZHNPaWF1UFZWIUw3ZGJ1QWVRWksjMyR6OD0wJlVAYTMhZiZKNV57bTRXcT9JSHp9RXZ4
Mztedm0KemZZfUhianMlSitMVy1zbmF7ZCh8Kk1leih2X0U8O3FBayFDWGJUX0FCX1p7cFQtcHd4
X00+dTFpQlU0KHVVQ210Cnp7TkIyUjVNb0xRRihRUHhlYXVXSEM4ZEVRMDdQXnxiVlBMY3lvfXRH
XlcldEBtc2lmYzA5LVhxazBpdj1Wb19ZSAp6bnA0Uzlxdkw4QF41PV9vWGwpRDFkXkZKY1hJbTIp
am0ka041bygtNGhDPkV4cyV6O0ZiSUA2K21wZjgtUkVufFgKej1vWFZRXlpNfnQ2VkJNQStqbHVQ
Mj97KC17TiZMQU9JPXBuTlhsUlQlU041ZSp0VF4/Xlh8VTE9OFN6PSlQY2ZtCnpsZiNsRDhPSlc9
Ul4/VG1FWHZPO1NiQTE/anVmNkszY2xFVGRDT0pQO19PbihZbmYkd0gmJk1hZSQlNU95fFV8OQp6
KFhFWnUpcHRoUl57PzQqP18ldzxJIyZJWmhTPGhVX200ZCZZaWUlcFkwKyNvez1AUjJlSC1AP18x
TFo1e1IhMjwKemQrTnw+e21rVUtaa0l+ZV5YYFRoKkkod24rU1QqallqTGxyJi1ATVpPIz9ZWUtD
N1pGJj16UDV3MXhOVSk4d0NPCnohb2FabGA8anM2MjEwci02NEt7Uz1PNjh5LXQlWSt2PDJHMnw2
UDlxK2k3SUNNSSNpeTAwMDBXVkBPZz4wMDRSPwp6MDA0bDYwMDAwMDAwNFpuMDAwM18wMEQoajAw
MDAwMDAwMEFTMDxpczAwMDUzTmtsPFpjLXBqQU4wIUFmMiRPaTsKeiZIYi15JT5wTkpPTDYoJHFg
Vmp+NWB2SV8wd0FHU0Z9b0s0UGBFeWU+NDdwUzB6QUpaSyQzP3c1KyhzND0jSyM4CnpaJTdqVzcp
Rit4QWVxMVd2aGg1aT5hJmhTdShIPktYeCMke1ZeIyEySCQhWSU7VkVVK0p5YlgqUkRWemJiaXFY
RQp6RWBxbUE1K0ktfWV9eFpyVTUrajVkK2pvP3AlVVc7NnptLVo5VjlnTm40dXA7KDRzJmRiKHAx
SGR6ZmdTc3UtNmoKelpDfkxmMGQ+Tjgkd0lGZGV0Xk9vTXRmP1pDS0xPNWxial8hJTFRZG4jMWxB
V010cXMzR19pRnMwbTJiOWhhPUQ/CnpDWj0zIW9DbjwwM01BIyZFaXFBQ09UJWgrPTQzN1NtUGlO
XjZveWJ4KD41bm1gSjluX2E5WVpOVktONT0zaEdsIwp6ZUl7Qmw5cTNnTDhwN0RJI2phV3lJeiF5
VSNDY1VGdi1aZTZFcGtlY1ZvYWVFcSVEcEpRO09zKS1YdV9BNmF+TWUKelZ7NX5WRz0raytobENY
aHVaM015cVlJKztNZXlXYVM+WipHZ0ZhVjA9Z05CVzV7WX5gXz1XLXRVLUhwZWVLa21tCnpgI1VD
UEMqcWdofEs7fn54STZSOUEjSzJMU2Z8cTJYM29rU3M/YyFYaVNNVHA2fkN+UkJ1RS0rSHZhPHZx
TGpPWgpUcnMpJSkwMDAwME5rdlhYdTBtamZjZXxwXwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
cmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNtcHRlLWMtcHJvZmlsZS5wbmcgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvc21hbGwtc3F1
YXJlLXdpdGgtc21wdGUtYy1wcm9maWxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTA0ZTg5NTIzNWM4ODVh
MmZkYWFiMjQ2OTc1MWU4NzNhOWRmMjQzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA4NzEKemNt
Vi10MURPMVlQKTxoOzNLfExrMDAwZTFOSkxUcTAwMWloMDAxSGcwc3NJMk5pZXJ4MDAwMDlhN2JC
bTAwMXJ7CnowMDFyezBlR2M5Yl5yaFlIRUJhYlAqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlv
ZGMtcE96SjQ/ZjA2aE99eAp6MlRPJEBIMGIobXgpZWZ7OytqNFhMOFoxR2w1RVhgYGsrYnBeNy1o
fUEwY2wzMG9AJU85USordDFpe0lsOzNoYVoKekkwT2shQjZ5fkEmdjNiTCFCfUBYdCopXlFsU0hm
amMxeWFSRkJoTXZ1dGJkfW8xLXcjb0wrQWlBVzQmJHA5dUpQCnpLPiQ0MG9sZExFLT44T30oIWVM
c2h+aGoxVkZTVXImTlBUQ3p6Uis+NGRNb3spVWUrTUBjQHxQIXNtYik2I2ZkQgp6JUpxQkBaLTZ5
K0pzJTdKRD02Rm9FRkU4SGZPZVdxKXpTRCslWjY+Kyh1dlhfbVY7QG88NEc9ZWt9eT9Tc3p5NEYK
emZaeyM/RHVjYj11dj41US0/Kk1IM3d1OTYwQWdpY3d2ekJ2b3Foa24qIVg9ZWNOfH5CKSp+Izsk
YDsraVRAX1lHCnpXbX4oM1NgK1R+eld7bDdQM2htPFNlcE88MDNjJlhRY1ZCPWRMO2s9ZlAoLTRf
ODAmRmd3WCYxY15Mb3o9eGhLMAp6SmN8R1Q4KDZ6TWlrPClmMGp4PHhLfiM5IXZ7eSUjI1Zgbnlj
OzN6WnVXUVckQ3ZpKTBgUURfdzclJm9va2JlUm8KenA7JDR5N1hWUFdLOHh2ckdBUk4pemE+RERo
Y3l4PTBVK3ApME9XNS02OTU9U21ZWDElenglVEJKZlB+Y2p6cUFzCnoqTW4lPzB8O1lRMVZsR09Z
K0IoZFd6e2BZSTNgcW9QeXV3b01DZE1wd0BlWnNwZXVpYzR8WkxTRSRlJmpHTyhjJQp6O3wzSiQ5
UihkRUgxP1JHQTRKZmlLcHU2TnJDb2NOWHJIUFdtbmR5dDtVeGllIWc8TDt1TkhvUSFXJXw9WU1+
fCoKemArQWR7QnxnZVlgcG09PUlBdW5CbldpK2NidWE8SzVqMk0qJj9ZOVBUeHkmTCt8JnZyPD04
RFRRQ3YmSVlJbypqCnpFJT1zNTJvZTtBUCpCcjBDc2deSWskaUFrJTdJfXIyTCVmMVElcnAoU31g
NXlSU3oxJSpzO1p+U3tPUCorezQ2cQp6UlZLNmMkVVFBYE58OW5ycCViSm5qdEVuVjxTZ0RLUCs9
NFd6b2NWcCE7Q2JBZzB6USg2JC1DflR+d25CcVZgNGIKejxYJjBmTVVSNiVTM0t2K2RoIXk5ZF5x
QHEwdDtYQShPRz5wTlEoUEFDVDF0JW0pYCY3X2piNUReVUVQXno7SVpuCngoJUVMdCR7ZWNEYU5t
alZyeEYjdnUkM2Y4OGZySEcwfDI2d3lNP0NkNlFCUzkwMDJvdlBESExrVjFnP1Jafl8xVAoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNyZ2ItaWVj
NjE5NjYtMi4xLXByb2ZpbGUucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNyZ2ItaWVjNjE5NjYtMi4x
LXByb2ZpbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMjAxZjExM2ZkYzhlOTcxZmFhMTdkYmZmODk1NDE5
MmVhODY2ZmQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMyMDEKemNtVi17NDFWKjhQKTxoOzNL
fExrMDAwZTFOSkxUcTAwMWloMDAxSGcwc3NJMk5pZXJ4MDAwMDlhN2JCbTAwMXJ7CnowMDFyezBl
R2M5Yl5yaGhQaWFGI1AqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtb3kpWEgtK143Q3Jh
Zwp6Xmc+SUJmUnN5YlFXWGR3UWJMUD42cDx6PkFxZnlsaCN7ZmI2O1oodk1NVlN+JGVAUz1qKmZ0
ZzY7VWg8aVZEflYKejxSUE10Z1FKTHclS1BEYXFpZmNAX3ZYJDF3YndyOXRuOzAtJmotSz00Mzxi
VVE4aj1Kc1hgdFI7RGc3KyNeS35ICnpLIUZNKlp+emJwdnQlSzJ7VVpTWV88bFMqRDxaJUx6NW9H
dSgrZGF5eiloUkxGZFQ+ZjU5JmdoVG1nV0QwbDsqVAp6STc8a0M2YVlZYWp6WHBZS3Q9KDhvdFAk
NTBINmNfVjlSNC07e1pAQzBBTUc3PUY8UnhvJW9yMTBSVVQrQXIlM2oKemtwTGhRV3IjIW9YZ2RJ
YCZzS14+MDlZXnA2bFAxcklSTXgjMDVDfmNXPUhfQXcqYkotNURUJloybit4KVFIWF5wCnowMGVz
Z1Y4fG1RY21SWiUwMkReQFMzTDE2dGBPJWMwMDROSXZPS3ZZSVlvaDYyclkzM1M2NDBgRDklWTJE
LTw/aQp6MCU0aiFGMlpANDg4VSUxNTgoNjYwMDV3bzYlcFdyXlpqX3Y0ekFBNUhqY0lxVW9HbXQy
TEI+clYmbmVoJiNRMWkKejAwN34xZSRvQ2NGUzhuZUl8aEpsey1QIUIxWlo5aHBtcTApWDBpYEp3
RSY+JCtFPz4lXzxsUypNV0srbisxY2dmCno8ayg4WUxSKD9WU0FHNnghZTc4d3tjUVB1SnBBfGQ7
SilHe2ZpaGl6TStFcmIhcCF0Y3I1dythMzR+KFk9OHM0Rwp6dytzTEw5biZKak5uKktKRGlxXlU1
XjtgMW52Qy1AcjZQJCFrfTFVeygqST1RLXpAdEJLSG9JfXV4ZFU1ZHl5QHUKelUxSjBHT0Q3T21i
aW1eRzAwOHA0Wl42X2sybV5wPGdXPUQyfEw7SGpOMSFERGZNIVhPYVIyfmJMP2tYJCVDa1NtCnoy
bWs7P3BuKW98S155ZUo3JWFkQjlLaStMITMrRmdIaVNZWCNLSi1sTEpETW45Q0JiT3RiIyUpaFJ2
YFlEcXRfdgp6S3BpeHxRRH15ZmExSmlRUmsjajRhMVopbjIlZjx4eW56Vj5MQzZSYlZJa1V4MGIr
XytCYVIzY25UN1p2IUFKeFcKeml6RmIpaCFqeUdPT1o4NUY7YT9EQVhQe21AOyEwX0lmcTxFeHsq
N2AwNVhGN2hQKzJIbCEzQlFKPTZAZkwlRkNvCno4aVlvbzMoI2JBRmBBRFNwcXRRZ3Y+SDgoSGxn
Unh0N3MzfWszS2BrRnU+Pi0yUSRRTUZmUFchTGF7aDMzNm8+WAp6dV9DTXR0SHY2elI7JlpOaVM9
WDh2M0NSI2ZrblV4SFV4SjxBWW1Sc05MV2wqUFN7QU9BUkh0IzUhd2tpMj9LO3QKeiFZM2s9czd0
Z2F4KUolcjctQkxwaGdlN35CaTBnKzZFNl5aaChwOVRCb2N7M0dBRnJeMCFndT9STUhhQ00kJkZs
CnpCazMldW4+MHVvQmFfTTZXTldlcUlnfjZRRTY5YzlvI2V5aEd2cGlPQUBXLWFvbms8N3IxKD9m
Q3tvSTVOKlUhNAp6PHV2NjZXdGNLU1JpbTB4LUtlMmQ1akJybUxhbXs7UW07e21zMXIxR25tTnNi
N0QtRWB0KWk5RjhmWGAyX2kzLV8KemJoOzdVbF4jeCkme3h2Uz18fHw3PW1ZZTMzPU1gQWdVNSh4
Qz5mZz0yTi03PWNObmpqT3J7eXJpeTZtTUZnRyNsCnpuQ0Y9Zm5RdjhDRHorK282X0xzY2x9ZVEr
bF5aSEFSSD4/X3NAfCMjUnI2S0xSRkExJVErPSpSUldub0xzUmA3VQp6dDV2RjxRMHI0MFEpajY9
c0U0WCZzQmN0MXE8JmZiaTNWQjJPdjZ0QHEqMCk7VSpvKlNBUFp2fHZ2QDJhWVluVDAKemIlOGEr
Q2I3LWdlMEQwa25FZjVRaSNAOFRwKmNle047NmxwUXVDQiVLTF9LT2FybTVjUDZfOElyPGUxN2ly
eTZPCnpEZEgmYHJaaH5zRj1icTlzK08wUVNnU35AUUw5Sm15Kjk0eHI9Nnl+TVl+ITFmZXR+KE4r
KDw9TWB3QEQxKWIrcAp6KjtDITgzYTF1TEp2I05TRX47eSM4PTw+SWNmVzNAP3dGcHdVVnhyVlo+
UWRRejMyS0llSn1rfntjWlpFXit5YT8KejJEMXojMkhPbkk3KEIlX2FjP3t3RlVRO1FRQTF0Qkt0
cldybTBfM1JncHMrP0pmcWJ7alliY1FYfnRhUkI7IyR5CnpaTntTfTF8fWdVT0hKeGM/d1YzZnh1
eittSjRgIUYkSVo7bXFSck5zSEpkIyMqRH5qdT1iUDc/LT92fnxjdj52Qgp6c0o2SWVOd1ZaeHJk
alRgeWwjYkJJYSNHeFJhI3hNTXk7SyNDRHl5R3lRZE1TeGxXVCN0RGU/cCE/NXdUJCtvR3QKejhM
O0twMkhVUS1aTUo9M1hKUXY7eDVjaSo/dnVUZmVZJDsoe1hHV19odUlGUjlhPGZKYkZefDRJI3hR
fm4kRGM9CnpLWWhqWW1nejVOU2tEbTgqZlptezZVITtZWGBORz4oP0AzKVhTczhPXk41UnlPTT1U
VG1wKDM9OF4renB6MnIpQwp6Xj5KT3tkZVpmc28zb3EzP1dvKFk/bCRnZT91WG87JXJ1YFZvPj88
PCg4SV8+OzhFcSNLTVM5Z0ZsKm5lZW9zU0IKemZvSFluQlFJa3dreW93UHUoemRtc2Bwezw3ZTRr
cmEtWldxPDIqT3NHVHZFViVzMFRkJGhYVCshKjhCbmgyS01lCnpCbVpSb2RqSFY/citfNV5YOUow
V0w0aktXYH1sZiVBLXw0NElAQExUdmYxckhqRyh6ZTYrd0BKdCVCdmp0cyFYMAp6PzJ4Uz9fdmVf
LWs8TXVqZzswTHoqM2J1Rz0zJEcmZWhlcHRobE4qJEthT3lTU1FebldtbzwwTSsoVUVVTUVYUlEK
ek1CYlpjRjs2K0tFbE0+aUtCX0tpSmxaJDlHYGNePUVAb05HKW1XV2FOby0zVElXOCkkSGcwVWIt
fjg/S2h2Sj4kCnozKiZuaW1AbWooYUN4RTUhdHtsdzdPNV4wRUlPN3pPbyZjNmw8K3xpRHlTQldD
R3J6QEM1e1N0IVgzaEFBfWBUNAp6KFRMYlhUcSsoO0A8PUw4ZFhuc3N5ZnR8dyNXU1RXPCsrMz5z
Z1MlKDROVHBlSS1WQXFifDdzc0p2ek5IZ09aVnUKemFZQ3ZnT19SMX4+U3lMPWNGVXx+Z3xoeXxa
aX19czkrZH5sWXFPQjcxejlaJHduQz1wUjlZejREaElNPldtamd1CnomNTZvNm1hQ3BDJkYjI3kl
RzsxUG9iUjlpP0duTmc7Z1l0Y2hEJXAxOWEhZVF0WkYmM0phS3YzM2daPDhEfjQ3RQp6dFVTMWl3
a21EYVBwaj0kbSMlKWpDVkVZNGZuTEdOZzJBLWBZd0hWRDNndn07PiloQXZUfkFtcVM+THJgYGk3
a3cKekp7NV9JdGB5ckJtbGMyNURCTzdFODs1Vm96blI+V3c1aEFheG4kMn4ocWAlQS1ZdVM2NHdr
Qnk9OWRtYDRjWGVYCno0Y31JQD9lK0ZXK2JAXlJEQkhWKHduTXEyemRYM1NXdjl1YCV7eEMtcSpV
fSZgY3lYViglclJUKlo2TUg/aStpJgp6X0I4QygrZ3JUJXtYV1VRK2ZATm9QMVI9QVcmMjZ7di1k
eClpS14tTm1pdWo4dHhqIW0/WipTczFOe2RoNHp9MDEKeilZVG8qSnljU1UpK181cjQjeXc5eys7
aTRFZSRwZVJnSWorO3Y7WkdkRjFLJDNFJWV+NExhSShqQy11JTJoJCZSCno5Y0xYY1lDQFh3bm5z
JmJuKV9RflRlP3JvS0dEfGQtZ144OythQ3t7RygxXihPN20zN1kxLSs2KTAxY04meTFhdwp6b3Fj
e1RgUF5YSnFQQmJJVzZzfWQ0e3pfZjVPbT92TWdOUUVKRz92MlQ9S1lkXjBNM0k2SVp4Ym55KSV2
WlImTEQKekpwUGxAUHNoOFF5UEJAS1R4K0BSZGNDIUtYN31rRW87U3xqXnUybFU3WFF9T287Znw7
ejRMbCtfcj5AMS14bDN8Cnphd3EtSCVlJmNrQytAQWhQclA2Qks8ej08TCowa2ZLVUBDWCp6ZXFi
WVFUNCheVT5UI19YZFQ3JjtGNzFqfUpveQp6a0N+NmxoN0VANm87V0BeSXBSTlp7cHRMdEwoZ1Et
Q1l+NG1xVztVUzdaeHZtX3xAeXomZTUzQnBfbFRQbGZQfHoKenJUeXhfPmx2QHgjPV4hUHpSN3Fx
RjwkZ21gfFpKWis7PClDcXUmb3Q8YXs4MURGMH5ydkdyNVhyfjh1YGxhdjFoCnoxRE55dFY+Mno9
MDAwMFdWQE9nPjAwNFI9MDA0bDQwMDg7XzAwNG1MMDA0Q2AwMDhQPjAwMjZlMDAwK25sMyZGfQp6
MDAwNTNOa2w8WmMtcGpBTjAhQWYyJE9pOyZIYi15JT5wTkpPTDYoJHFgVmp+NWB2SV8wd0FHU0Z9
b0s0UGBFeWUKej40N3BTMHpBSlpLJDM/dzUrKHM0PSNLIzhaJTdqVzcpRit4QWVxMVd2aGg1aT5h
JmhTdShIPktYeCMke1ZeIyEyCnpIJCFZJTtWRVUrSnliWCpSRFZ6YmJpcVhFRWBxbUE1K0ktfWV9
eFpyVTUrajVkK2pvP3AlVVc7NnptLVo5VjlnTgp6bjR1cDsoNHMmZGIocDFIZHpmZ1NzdS02alpD
fkxmMGQ+Tjgkd0lGZGV0Xk9vTXRmP1pDS0xPNWxial8hJTFRZG4KeiMxbEFXTXRxczNHX2lGczBt
MmI5aGE9RD9DWj0zIW9DbjwwM01BIyZFaXFBQ09UJWgrPTQzN1NtUGlOXjZveWJ4CnooPjVubWBK
OW5fYTlZWk5WS041PTNoR2wjZUl7Qmw5cTNnTDhwN0RJI2phV3lJeiF5VSNDY1VGdi1aZTZFcGtl
Ywp6Vm9hZUVxJURwSlE7T3MpLVh1X0E2YX5NZVZ7NX5WRz0raytobENYaHVaM015cVlJKztNZXlX
YVM+WipHZ0ZhVjAKej1nTkJXNXtZfmBfPVctdFUtSHBlZUtrbW1gI1VDUEMqcWdofEs7fn54STZS
OUEjSzJMU2Z8cTJYM29rU3M/YyFYCm5pU01UcDZ+Q35SQnVFLStIdmE8dnFMak9acnMpJSkwMDAw
ME5rdlhYdTBtamY+RCVZYgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3N0cnVj
dFVuaWZvcm1TaGFkZXIudmVydCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL3Jlc291cmNlcy9zdHJ1Y3RVbmlmb3JtU2hhZGVyLnZlcnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTljNzE5YTAwMTRhMDQ1NWUwNzE0MTAzYWMyYTY3MGVkNDAwZjA5MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNl
cy9zdHJ1Y3RVbmlmb3JtU2hhZGVyLnZlcnQKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogQVMgSVMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworYXR0cmlidXRl
IHZlYzQgYV92ZXJ0ZXg7CithdHRyaWJ1dGUgdmVjMyBhX25vcm1hbDsKKwordW5pZm9ybSBtYXQ0
IHVfbW9kZWxWaWV3UHJvak1hdHJpeDsKKworc3RydWN0IE15U3RydWN0Cit7CisgIGludCB4Owor
ICBpbnQgeTsKK307CisKK3VuaWZvcm0gTXlTdHJ1Y3QgdV9zdHJ1Y3Q7Cit1bmlmb3JtIGZsb2F0
IHVfYXJyYXlbNF07CisKK3ZhcnlpbmcgdmVjMyB2X25vcm1hbDsKKwordm9pZCBtYWluKCkKK3sg
CisgICAgdl9ub3JtYWwgPSBhX25vcm1hbDsKKyAgICBnbF9Qb3NpdGlvbiA9IHVfbW9kZWxWaWV3
UHJvak1hdHJpeCAqIGFfdmVydGV4ICsKKyAgICAgICAgdmVjNCh1X3N0cnVjdC54LCB1X3N0cnVj
dC55LCAwLCAxKSArCisgICAgICAgIHZlYzQodV9hcnJheVswXSwgdV9hcnJheVsxXSwgdV9hcnJh
eVsyXSwgdV9hcnJheVszXSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvdGh1bmRlcmJpcmQtbG9nby02NHg2NC5w
bmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJj
ZXMvdGh1bmRlcmJpcmQtbG9nby02NHg2NC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIzMjZmNTUxMGEwZDJm
ODk2MDFjNjI0NTkwMzJiZTlkNjQ1ODVkYQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjM4NDMK
emNtYSVpV202blgpOSZLIzR2VntNa2wtNGUwS3dmTXhJMnEkYUNaeG07MVZGJUJFZXk/MWIyNV5V
fiU2MnNxK1dVCnpyPG9lKnh+OGtBdWRlQnl4WDxkSnUrWWlUMFJSQSZsQUBkejAwOCUyN1k9fW17
OWp9MlFFZHdWSmhDYXROcV9OTQp6SVNXUTlGdE4jZl5LPmFUPHp3cy0haz8+N1dnQ0pJWEwmRyNx
aUYxNF5OQ3ZqI2k+djE/T2FtZFFQVU9RTmZUZXoKejhqN259dCl6SUYlUD0zPCNveWxVMzMoNlJ5
ZSNtWD8jVl4jTldpcXxlUX4pY0cqVy12STFKdSthPnhPdVRYfVJfCnojMGJ1IUBRNSZ0P0IjVXVx
NT1MbDZnSSpEUCkhPVVNeTUmIXtCTVRCUFpocHpGOSt6bF81WlY9cDtZdDZTTXF4Qgp6d24pQUd5
bH5XSmt1TFdee1UkWV5EKDdmNzU3QEImcE54aHUmNnx6KTQqV19WcU1vM3R3V2IxV3p3VU9yRkhl
UGcKejRWI2pEdm0tKHhyZD9MfTBNbS17Qyl4TFB6K20/KiZ0eUw0ZTU2d1F4QiE0KDQxa0dNUGBM
Sz1ZUkJ8TSR+QHUtCnpgVlU9PWxZbDkjMkhFfiNzPyVrbyYoZjZ+ODhhRDJmZUVYcDJrRlVFMUVO
OGVaXi1seyVzZ154Xn1vZ1RsVyN8Xgp6ejItVD9icXI5TkRVQlRzXjNCc0lzem14OE0rJn1Za2Yw
PWpyYDd9VyRiPXZoKz9FYXhhbWRMPGl8VHhMYzRWKlMKemslVXJqPXt6V2V4X1BpJVFTNHA3dmhJ
Q2VAJHkjVnduO3J7YVdNeG02cGQ7XjBAayhhSFRXUUs4bzJPTVgmKnV5CnpBfmAyK0F5KlV4S2ll
QjxKRXp5aF5yWmhFNCVoIzFBU1Y4TV9xcjZyaG1JKG5QTHAmXzgqVTBqSnZtQTx6Nj5UaQp6T01R
bjRMNjEqSURxaXAyLTQ9PEtsaUh2eUZ8YylWJCh3d29re2xxbnxOcilYb0EzNDVCd3sjJTlZaHJn
ZkVpekMKendsJihZJUhGcH1ARjt0SShOWX1BVH1BbU5kYE8lfTkmOVJHVEV6SGc5IXJuMXNOY1Zx
Tyo/eVp3KyVBQHgoOVlBCnpqVnsyO0pjJmo/cXZGVTdvKTMhT3hWTDFSZ35FJVRzWVZwdnQ/VXJp
dClpYzdPPDxjPzhfajhmU25GYjw/cEhNVQp6TSNhND5jPlh1M2FUNHVnKkREbjFmR2hNUXM3dnFf
KkUmeXdSPm1lNGZKcUVhNTxlS3ZZd2Ewdl9OfWdYcCRRc2UKejwhbSp9e0M9cVg1YWRlezlYKG9F
TjRveFViVnFqZiliUmhMMFJKWj92SGZrZV5IQXd3YWxxckFFVVFKTWAmOXltCnpGT0RQV0VrSW1o
KSRHOV5KNn0/NEtgO3crKEpzal5SJj1VMUE1blVqJihqVXZydG1yZ01AWmFzXj0xWUM3YGVeZQp6
MWFEMX4xe2V0MSo8I1ZfKWc5dUYmUiFxPVFTY0JrMFZ1eWdudHFoZyttVnZaMysoKV5SY00lYyZe
OE1oUVEyN0IKel5ZY3pwMHo2UDhDLWdvbXt1KEo0bXAyVE5aKSh3eWUtZ2lXeClQdFpGb3p3Ozhp
QDZfYGNXX2tva0A7fFhhM1UyCnpySjdje2RZRk03Rj0wOWYtIWRDR3kkanpBYTFSSz4odFNmM2VM
Pm9HVXRoc0s+VjxDJHh6dFolO0s8VSlZJCsldwp6RSNUe25ua1E4bEIqQD02PVI+RTk2dG1vJSFP
WEYrK301JTlWMVVOa2ZpKitPYEJQRS0+Qn5wZTstTzx2JlJmJnMKekJMMWhiPyZIYioyaU5qK05L
M2B0PUJESXZNaTVjKnt7U2FWeFJ7dyRJdCoqM1doPDxYOVU9cCQzfTw0PlZWNj1QCnpQailIJnlO
T0tyTktKMyl1SDd7JjFuM3t+WFRIV2htNGdQa3lqPUJSVWY5emB5S2Z1ZWp4SnBUZFhtdTFQc3kh
OQp6a2heYT8tektKYGcrOWxkJWx9eztScmJSZzN+KitWVWNgdTghNDE8Sm44d2tVYW4lUiYqSWdQ
R3VZITNBKTA7TUAKejRPYVBVcjttRGcjTXxhdyt2bzR3UDchZnVDU31KMENITT9SYz40ZGwlNVR4
VG1sdTlKRU5CQmtgUysoQnVXam9aCnpJSWczfl49ZWJYZSQlXzdIYzdecntSXjkmQW4ta2dafUFh
WSo0ZyQpZld9TzZRNUFOWHxHS01hNyQ+e0whPmBNUQp6MD4yWWgqSi00bVQ8Y2RkaGJ1ezgpQG9k
YEBhO0FmXilEfEtFY3ErM1VUaEpAZzZ1TFhLeCRpY3dBUStAZ2tSbkQKejZrS3BaJCM4S3B7U2VU
SVRjaVhJRmRCb3dzanRaWkBtYUxBVVlAI1ZNV3VteVI8KU1kK0RZbDwqZWJvYEtVNG1uCnpRV0kt
SFpRSzVOeU47UmRuX2RPTWUzd2VOVnprdEJDZ24+e3lEX1B4RXs1NnQoRnlCZCQ9emE1aXx9Vm5A
N1RDLQp6QXlUUExoflJEZ1lIWWlTdWdsPldOd0k7aENQNkozeCFVZ1VMWClHVElPUGl8U2h9ZUQk
KChYUUBIJTVgbCRHKWAKemN+JkxsbnQkKUlwa21mSlkrOXRqQnlXUypqUko3Z3s9NDgjKVJDZz9e
UXBnQFluVEZXKlhTaCpGfC1OTD1mN3xSCnp4LTMyWGJhWEF5XkMtOVRtT1I0eldaR053cFVaeTE4
dlh6ZGRnOCpydWhFfVJMPDR2JjhfMnI2Sn1UVXZGR1VNYgp6ZDkyNSVrWj1wYnsteig4MSZ5ITJt
fmI5M21jKktHZitSdjYhMnp1NVUxdmFSZUFaVTRCPWctWUFHc1plaGdWYlUKemJkZyloNG1gYihX
MFVIPDQrS0JfbnF6LWIqVVVPXmQjJTEySX5jMjhwS29AQjRPWUkyOVFxI2N1NXV6SCZKKzdsCnpT
KXFnOCNQMkJtKkh4IXxiRTRaTTkhRSFmUmQwS09kbEhvWmV6X3d0QW40aFkwTDt+MEReTn00M0pF
fCteUHV0fgp6K35MQX56WG9NazVBRHJ8KlF4b2EjdmlRMWxgOGBOLXFzIVRffExBeVFuJjdmRFNO
aFF7fnBFdEFnYmtoISQ+MDEKek9Ec3h1RCNFV3cwMz5LUGFRTkBMeHhLanQjVytmKmB3LXtsQyVQ
PkJ1ISltI2VgZG9UREdLKHkzd3dgdDUlYXlNCnprS0J7fihPWnBoajtrKCREVF49dUJeRlk9YXR8
Z2xrY2hYMUhGel5qXyYkOWFKbWhAeiVFJEV3dEt0PjBTPWlHWgp6JnduSWYxRWxWPG5fcEczVWxp
ZERRTW4+UXQlaiU4bjJETGF6O2srbEw/fFpUX3Y7eUlfPFVTR3ZUbiVNJjk9TmwKemZ5a3tsQUFq
SEh6bHclbUA/TTBfMW13QlR5U2hlNz5XN1A/MVU4K1RnQzdWNClXJXxudVN6YCFPKCVafXk3Z21T
CnpEdEhOKDlyYzxqSzZ8JXdOPHtOZEMmODBxdEFzTUhTO0BtMHQ0bGRiTSRfTHVQN2hzPUZ+NGdH
Zk15Un1LRj1ncwp6QW02fndkOUkpaj5CU3FPdiNfXmNBTzhvSXl0dm5RTE0kKFJOKlVTfSo/YVZo
ZHZDOzNHN3ZweChOJj9PbVQpVyoKemh2Kit8IUZ8PyN3WVcyITdrbjVITyVsYClYdmdnSHd1dGNY
N2kxYnlWT0trRlokaTFXRSYkK0c9fHlKI0RKMXw5Cno9TFFhY0Z+ZEs2OExXcyt7RjgrREg9Nykz
Q1pZUEpMbFp6IXs8KHpMaHAtUEF2RVhSc0BGS0pGejhFZ1lFV1JtfAp6eV5xc2BSYjEjcl9lUyhU
R094VVRseXA5Mmx5PiM5ZUJsNXp7KE8kYUIyfSkyYFJxMmlOezBGYzBaUWtQM2omd0YKejhoZX1A
IzcyZk1kMEdQazFXfjRUQHNKemU5NkB+fG0mVCM2a298fXk9PmMlRCNHK1c5ZVRifkRKZHdUUmJ0
JFR0CnozOG5DMUZiUTR5KnNMdH4/TiRQRGoxNCQ+X25iT25Ub2cwWj82Q0hkK3pQYX5wI1VMYHhI
bFNqUE99RzcoZ254Uwp6JmBNZERwPjhwSUhNUzJJeX1ucSNee2JIbiQzVDRGS3EyLWM7OVE/bXVJ
I048WV5peVY1Snl1U3NePCtleDEtO2oKemB1PE9SIypmUHJac1l6NT9qXnliYE16SDlaY3dORD9D
N2gzaDlZXnRYe3ctVzlIQ083dWE+WWtzXjNOJmchbEt9CnpEeGQjQXN0JTFtTXg2WV8mJlpEWEVN
cDQ/K01LPUxtNG19WCE9c1chSCY/VlJMOG0yMFk2WUZLXiFjQGReYFdaPQp6Y3hRRy00PGxCbl94
QS1uV2tkTXBhMk9ta0RKJHF1bSpoeytUNCNeYjhpSm9pQXBlQ01ANEY4dDFjQjRqd3pxZGYKemtZ
MVQtRnEmJiRhKn14QSEoakkxa087fXRQQC09VHVzO29lLUh2SUFmITAyMGhXN1ojPEt+NSQ5UV44
SDlDI3xxCno+dl51VSlZSyk1N0F1RVNPSzNAN3RlP0ArVDk+VH4jfm9aI2AmVDE1KVFLbmkqfDd8
O2ArIWApKFFqMV89dj0qTQp6WnhoV0xVZl90U3s7PitNPXU9VDB4ckVOTkFYQUhAcHRpbio7RG1j
Jjw/TjYwLSF3eXRsPzNfKWdHOzBzKGtKXiUKenBzS0BqaXA8U0IhdSE+VlQhcClAPm9zPVlLITAm
VS0wQEx8fEVHMms+SE9qUEx6QU5gXz1ZKkdJbUtTej0heXR+CnoyZyh1SmQmK0Q5eDx4cntkZm1v
KSphJDhqSXVVQSs0cVV9RzY8JiVfKWtTZSYmamI/UT9wfEw/ZXEoYmIpQzBZagp6RmEyKSs2c2Qw
eSZiMT5KPGI9JnwtbEJBfkZqfUJSMmhwaiVnYX1UXns1VSorQlQwbE9iaUNtJDE3UCFmcWVnUFcK
ej15ZUUmM3szQTBmNU5RSm1ATDdFdWw5aGkyMmlAakNnbWVaO0AtfnEzWlVARSQzJWc/dTlFTHtp
OCY0VCVOQ1R+Cno9MUo0d1Awe2U/JHByflZFcSNWUnd0c0BgKXIlTHl6MWh1dSs5TG4mTlAwPSpv
Zj84T2xWRHkhVkF0YCREV28zPgp6MVJ7PXdpPUM+OHEqe20rJGgwJCNUIzE/OCgwc1dgMk1AbzxT
M0luVTdrP1ZRdks7OSpqa0lFUUtqRSNwMytPcWoKemdpKmNVVXRhWVphbVYtYDBPYmFGOERGQnNt
JDUha1dafil+RG4wWjcoWjlvbCYkMV52cCUwdnctU3BwR1ZoV0VSCno1SFBiVGlAaHUwRFNYKTZy
MUByPk1Cb2hJPXRyZzUmZyZ5TEZCaiF6KnBEO35AWnxqRTZfZklsdnd3anRSVWVKZgp6MCZfLTZM
ajVQNyR4UjR0YVZDTFlMYiZlVnFoX0xFe1kqcT0keGR1QmlYZFJ6SFVuU05CdiM/Nk9OVWsyO2NT
aH4KemU/aDFVRm1xbEtNRTdHUy15eW4obkx4djA8dDU8MTBKY0ZQXno2Pio8MDshIWxYZnVOeWRf
LTdUITBidlFxKGlwCnptcy1MREQoZCNneXFWfTZfO0UmKkZuakU0SzJgeUJCbEx9dVJNP0h3XzRo
SGw5R3llJXYmY2p+V1RnPFA9bSlQeAp6JFEjRj9qTUI7NF4tU3txR0l1O1lWZjBCNzBne18yb1hM
K3FFMU80TjtZUXE7N20xOV9NQD5FTGAxbChkV3RFX14Kek5BSEJUKSRrJF4pcTdxKDFvWT8mSlBv
SWNxXilNdER9aVN9OHowR01Jd0A4Xi1DQHsyVyZha3xKTmN8Q0tZI1RrCnpLMUVmMCRVblVpdmBp
N0FuZlZgS3JFMm4/N0JBUld4e0ZSLXdUUlJWTyYqTilQSHlHN251WXl5SEhjblApYXRjYwp6VEE2
Tn1IKXRfdj5yN18zcG1xJkxNRz9CX15RQyZoP0RvREJVaSowVCp8YlUjd0UhbjIpN2MqJFpsIXsy
cjhyN18KemlAQ29GI2RRO3tlZzc3fClKckMpe3NBUGh6OERXYj5nJU5eSmRGZXQlPUFWMDFmZktk
bDBhMCU1IyQjcGlfNzMtCnpuP1Q2WEdLdFVvaUt+b3lDNkd7bXMhLX5LdktIPTQrez9AQDtKIUR1
WH1GeSUhMldWZmdyJV88UyZ2flN7V1ZMZQp6a0cjMHA7Tlk9OVNjTlpaUkc2bVJWM1FZJWhecXU8
Yj0jNUl4WlE8Xz5eZUdrcGFkWWJ2JWVGbmJJMzcjRD5VV3sKemhLdHp+KmQ3I05oKXBYRnhKRWFZ
QkB+eTxReEdzcSlyS2ZOe3lPdWZifnJOJmQ0cktrMWR6NmktT0FzN3Z6Qll6Cno1PUoqc21zTjJT
Tkh9UU9ubH5tPE5TKnI0KG5hOXVPU0V4UkthZGE0KTV6TG8xM1NiVkRSN0dxQCsheTAxJHZlVwp6
diZLcnJge1lmWEFnWT87SnEpd2p1K1pPXjlkKUdvQjc3X0RGK2xDMWBmJT1+e1JpS2RhalNtUXpa
K00oenctOEYKemgyNyRfKzZJQngzYFokISYmK1hRISFpenRKUSgtRiFFSCVWYEhWJGl3cyFsPUhg
dWY2YUdoUDgzOWlLYzMpbE93CnpXIVp5ZCEleXImNk44SVNwakJLfCZFVzZPKzc3ZUIjamxTYWFz
cWR9ez19KjA5cTIxYk1nZ3tIUzM/JGVRQnNtZAp6OGMpanBTIVQxYjx0R3k9QF8oLVVXdHhvSW5g
fGVMRnwmK2chcCtofE4kPCZSd3Y7fS09SU1DJXBDMVJCTnpHbXcKellsZFE/Tmd6LX5YYXpnN2V5
dmZDK3p9MU5PNV95P241N09uO1BfcmFUZkZ9ZWlOdGMhO1VfRXdAVFBRQEpfSXF8Cnppb1M3eiQz
fSorenBTSCstclJlZzJKbnNZbmtVZ2V0M1JZe1BTNXEmeEhhaWQrIV4mPVVrSXRqUjQ0JSY2XjJl
Kwp6XzJ6M0k8Qkc7aWhYfGJSeVVCMGNGd0ktSldlQnI+SjdIaDxsV3pFJmxSYSRkWk57LVVXSGxL
RT1HdHomYFJjPHQKelpfMkxCRiRDbCoqJTkqU3JAfDl8RUx3QTdlaHlPWlFnU0xuTit4aHMlfDlz
VHEyOFB1Um81dmxIUyZqWHgkJF9oCno+bjBESk4lRiNORFdBQ09vUVg3ZVc2MDR8RG51aEB5eTlz
OGwkRSgjMkJ6OWF4O1hsciU2eWF0YyZnZUp5X3k7Kgp6MG00RUA9MnFBU2Bley1hMng2bUZRWHd6
NGA9Qj15cUZqbT4oZlJReGkxbV4wRn48Jj8mUW1TeG5PRXFiR0FgVFMKemhkbFZMPUZmbkE4I3Y1
Vil7JHBoZi13REkrTlcoREJrPVhiVih8NFcxN04wRkE5fGtldSZgTSsmJWoyWEN9PH4qCnpoMXE8
VUA5UnRWPkFxSjF4dS19cTBlYTV2YHlZcHAyK31Db08xbm9TIXZveE87MGBEd3FCaVhxVUEydkts
cG9OSwp6QUtYdV8/c3l7P3BDRylnOzRSLUZmbFpjcF5kKEgwVG9OKmZEZyo2TCMtR3prOz5jbF5U
X0h9TmlaQjM5NmVpay0KejZlWjMpPkcqeyVeTF9+ZiZ8V0p2QnpVVTMod1VJQS1lU09AaExpR3R0
fWZWKjxFY1J2NSV+dlgxOWd0ZjxjJGhpCno5aU5vJSVXREB2V1VKOTJydmJ0PTNEKjJKJXktZnV3
c0l+Q184K29pM0o3YFE5SEFmd2pCQzZAaTFMIVU+PWpUagp6QCEhJSlOSVZZflhST1FQNmhYZSE9
YnlaMm5DP0x5MCFheENBXyQ5WEZZMTMzKCQjfURMbGZZWkNqN31CalJFYTUKekRoMHF3dEQyazdt
IzF2PWtVfTMoVTkkUyFvXzV3aTN3WlQ2VSM9OWxyQkYtNHVPUnR3KD5eWjMqalI4X2g/KD9DCnpU
TT1UaEwyQjFgfDVeKzFDOStgaFQ9aDtYYm1fazkhKWVBbW11cHdQWmRTUF55YUBCO0FzJTx7UT1K
dnxtOCYocQp6VGZMUlQ0N1h3TFohMUsheHF+M0YkeSlUSnJYJXltY1ZPN21jdHhWSE1MIWAheGBA
fWp4YSVwRXtKVUhEUkNDVnMKejwhYHFVcCQwel9VRnUkMXhSUkdNWUpyKHI9NilnVzhHWTJia0de
fXYrYz5GTnYtfjMwb2VtNStLbElUPlk+e24zCnpqTmt1RkBZb208JjhaVDduN1VwUUJ7eitmUDUp
fiEmJlZPanZxVnkwQ013VSopJHJQcz4zZ3lBQjFTUGZ8MFlKVwp6SHtua2RKWjw9K3RGZXp8SHdW
S09qJClNTGFnUUthS2ZRVkRwSSl7aU9MQjU8bV41a287NUFmeE05d3RsT3BYRH4KekRCa0JAQTBq
cWtAQ258NWdudjJRJHUkYjhzS0owQ1BlQ2wjSX1ObCVKd1UjPitaM2tWUWc1P3kqZElEJV4qSGN4
CnooeTNOVCROe1E4Y011X1d6ST1LSzRiYUBQJH5jRkxjJmA2SiEjSFVTYUVKKEVmdkIjeTclajVn
USZTUXVOUjhZTgp6dC1zJEZFZiVJPFZXOXhfNF9+JmQxU1VjVHpHXyVLWFAkalpKVWJLZGJRfnFW
UnBDd2dIP0xlSUV9KCoraVV7ZlMKekwqamJzJVRLWFEyYUlhXz1jREN0MzJzJXN4NVpHJGxLfX1w
ekslfmo8NlJeYnVUaCR6MV5jQ2tvNlJYWXNlOU1nCnp1bk45ZGc2aUMxO2JsO3BpMX0rPCoqRG4k
TW1wNEpfaXdaa205bENAcypIYn0qcVEqUlk1biVrZDtjMUxicmQkXgp6b09XSj8ycGgheTYwUn1u
ZUhyc2c1QF9aXzVsOWZNSzlZR3U2JG5Ja15rK1VwYXkqUExyYztBOHlSc3pGSjZtOHoKejY2cDRY
OWpzQjxHTTtAWWtQZEN+R09aSTlJPThZV3BpP3ZxbkBUMFFfYk0rYCNvJmBIeThuNzB6WTR4OVQy
I3Z9Cno2VCQ+IW1fQyN2Jm1EbzdPM2YwMGM4ZmZLbHQjUUtqZU9JdiZRQVBfTjBSfldUeFdyfUNF
TTRsWV84JGtXb15haAp6ISFPfjwybWx8ZjFQYVcqaG4pdGJqd0R+dDtRQG98TmowJSlocVZSMWFx
V2pVdEVgbztaRlItLW5RZ0ZuUFI9YGoKeiV9O0ZuYEdTcC1SRyRXKENKUFZFb00wXn15IUwrXjdu
bEt8NlNAQUFKWW52JjAxKzc1USF2WE9eSGk9dns4RX1jCnpDR2RWTDV8el5pQV9GWFFHKil0b1ZD
fHdAZyF2S1duOyZpezNmTlQwYjxJYVgkSyhXQWJvSFgkNClTdCRDYmxefQp6Pmo5ZkZTckFSUUBY
JF5Ba3hEK28qWHAwQlY9WDU3YCNHI3MtazVPVTxUbHFXU1RZcnpVfX1uXj5gMkdgb2g1IVoKekV1
aUdBUE9eTE0/Xkt0O21BRl85Q3hBIWshTXwqaEBuam1mX05CbXhHPnF3PUJsMThgeHFrMnBhTG87
QnFkM2Y7CnoxbHhjRWJPPn1hLXA9V2E1U3dOPEY2UytfWkxZVjFJMFZmSlhXai1CRDE2RV9Iaj1Y
NnV2MlU/SlN1Nj5MSn5gOQp6NntMUU5XPWY/PXopMEVEezNlXnQyS1RvYyp6ZytwRjxWOXZpaU9O
b3YoSnFtV1V3U0lhMj45UFNNVlB0bjBGZWwKenpVRE9fP3N0Q20tdm9lMTl1ZTE7NmBQKUF6PD53
PHNFN3ZGekFCSjVHbnE+PUB+Xj4rcGdzPnBXcm9HdUhAMXdkCnpocX54ZjxyMVJqYUFCMGtwbztz
eHN2dnhJRnVXdCF2UlBQMzkjXitkQjVaUkZPITdNRHt1aSZzSk92R0BOQUxWKQp6QXV1RmlAeGpq
b0xGIW80Ni1LfD9sT1hVS3NEQzh1I1hvOzdwdSNFdSR6Xl8kYlBmPDlDIWhGcEpWTVl2U2tkdFAK
eipVfi1wSW1NOXEyKEhXUHJLOV4zNTtLaGdmZE1kM3UmJikrbEIwaUdBSExZeld9ZTd6JDMkSlFO
MEkoOy1oSW1JCnpKY0swVHZxfHZyMmZNQT1PfUsmRCY8X15EdztfcjN3OH4jWGVBIXFCOFdRbzQ4
cjhsUEBaaUhzJiY4aFkrdEdmZwp6KSRiTngzeH1qZkEhV3N8RFRaNjM+bURTWi0mKDFlbngzPV57
UWV+NDY9OUxkT1YmeVVhN3lRJih1Sj1BI3lxT18KemMxTF9FSWAkaFpjTmphWHEybXVyJk99T1lB
MmYpV3EqX3Vreig9b15WXysjcGEyP3RlcmpnISttaTkybWF8VSpQCnpwMmBEcnV3PHNjMVI/fEQr
PlkzSTxORTI4T1hrLX1oOUQ4YXZCTl8rR3tySVlYNU4xPz8yRnNhVU4xSS15fl8/Qwp6LSkqe0c7
N1ZAaWlWTWBXZWs7dWVBeipwMElXV2d1bkhOTUJzRWJ0e2k4RFh7NzBUI21LcmN8b3dQNmdEQnZZ
RjYKeiNCYlZXUTVVZy0+amw5K21DUmMycDkjNWQ4NHdnbmhmK1F9O0ZucGU2QWNOc1p0Z3FyNTJP
OUlGfGlPR29JK2xVCno2N3U8MkZJPyotTFZfYyV6WjlHI3NWPEFnOClgVG9BcT07KUFPfmN7ZG1D
Xnd2dj4jSGA3KXh4MXdKYFRjQEZDegp6Y1lPfW12RENUcDd0aXk/UVoycGFuNWl9QiR2UndiZ09M
ZGMzbCRmNztGbSNKJSYrYER1KCNtY3RuM1FJMW1KWEcKekFDV2ozJnoyOVo+WH5xPmNqWHg3eyt4
Wl5JfWhhND9aKitNLSY7Q14mU2JFckQldilBbntuc0Q0PU8oITlhYCV2CnokemtIZ0dxVHxCITdM
ZGImSj1ILVopT3E0RjFgbzxVMzg8JWMhI2BoMjN+JDM1WmA9bi19T2NWUjl0ck1NaExLOQp6VElX
cCpOPnUmeWtUK2FTbUJ5blgjI0NkUlA7bWlROV99clYrUXlPWE1MeDtPZlk4PndQV0s9Qm43TzM8
Z2J4VkkKek1zR188WUF0cWVVdDMpO2RSNUdedk9nISFHcXlLMjQqeD1wIUo/YFUzUTc4c0A/fiVr
bzBwdz9xY3lUQmpSbGw9Cnp6Xz1+YyM3e1AyJnhNailQaEA/JlRxP0tXcW1jRT1DJEheXj9peUIo
dm4lP0ROJUQlKmg+I2RFdkVTMWw4aF5hbgp6R0E1dnpAdn15WENVZGcleDhxLVVPa3RYenJvPlNz
WUpgNjBqJStIOFV6SEZCNUdTM2NKPiQ3QUJnZz1Zdl4/akIKemJDd0dTOUhaVDROdG9YfGN3KzA5
ZEMrK0M+MFhLbyloOG53NX1aOXFpQnAhSl9ZVjxzd0dhbTV0UFYmbzZUOyNXCnpRazcrVD9feWxL
WlUqOXRWRElfWW9kfV82NlBGTFVtQWU2cUZDc0Y+ZTNMbmJWV3hRazsqfDdQRXhMNDFQQ3A1Uwp6
RVp+NUxJOFUqaXkyejwmbTNXa35xdEZjMmlpZT95VihJbjIlQ25lYVVyd3NTVz52RXkmR2Z3MT1F
NnRIVSU0MGYKekJgQGg0MmZXV0p3e0c/Q0RAUiVebkA2WGI1bW9IRG4yJURuXnpneEleUDtReFhw
elNxMHlVVndPTmpmfWtqSXQoCno3MHAjIWtGYiRuN0xYMFlaZUBxPU1hSXAyPXw2QylqYmBNOE1O
WHRJa0okI0VXaFBJQFp3QXR3bD8yaXhhWTU8ewp6QTw0WUh5NHxpRElFVG1yX3o3S0dZTXd8ZVBj
aXR5cyhJYnoleWloUSRmVGs+SjZ8WVF7MUY8Vl8qKjZEQWMoNSUKelJ9K3lXcEdja0F0anEjeVFU
RTNVRzdiQEhESTJHc3lXNXcxVFJhRzRyMFFqelk8OzxAYFBsRFFDcWluc0ZZa15jCnpyXm89QV9z
Znh4c2F0fTVBcX1rbypPR2RzTlFiKzlkfl55KilzaDxMTlAoVzR3LSRiJEVpMEBZY19kQmNyMXpN
Pgp6UGRyT3gjT0FTPl42dms8P1kzKiRPJW5hK19XI19fQmVHZEVKSXYxa3skJThVWFExSmpWIXE0
SHJoVWw8KHA0US0KeiF8KChiKyRuTGtEZkNZY21FS2tIUSVRdl9sZ1ApdkglP2BMajNmWHghX1Zj
T1FSYjglcCE7MT5ORF9qRF4+a0N6Cno0Qkt7NnEjN18xKE1OckFWVmYtSCVXWHw+QHZ9WTNJfXJ3
TFpiQk1lc2EwJmx3JV5tcmZFI15fUERGPmpSN0dASQp6ZGUpYyNsQ3lUanIqcF4lOExQejJSdk1I
elpuMDx6XlVkWmBOfG42QT1UQE9Fb09Zcn40K3RoalNiQko+SEN6Y0AKelBSI1ZQUkd+bH5QIWpQ
T2lFUWVmSGN5e0F0fWo2SD1FQVVEOU9Yd2FSTVNERC1uPWlEPzBuamIlWmRXcWM1P3dyCnpaVik3
a1F6dTlSNj5BcFZvWG5VQEV0c2RpSkBMNmBeKjZgeEU0NHhTPUw4ZD9pbDt0OG8+WFFkJnM/YWF5
bTt1Owp6ck1UV0tuNzJTMVApKn45QnBwJnByTz4rZkgjdV44Mko2bSRGbTV8fU03YShSYENvVFBQ
QmhAeT09ODl8dlI1dFQKek4lRz04TXYqKilKU3FqbE9uNjZLZU5+cSVCNnk1Y0hwaT5mO2slIVJ4
JEQ9NkUzcip9d0txbXg9QSp+fVpOMXRrCnoqa0JVM2s1NW1JNUxuO3U/Ml5CdngkPXpTVExSQjJN
M0JtZEhmaDhyOFJ9fV9XJnE0aDsodChldGZ1KXFSZyZHLQp6LXhQdzNIb3ZiYlV8ZG9ySDktRlhi
JUpFVWludks2KTNDTjRXajxKOUw+dikqXiZXTipoRWB2KGMjY1NpZl9NWHcKengwUEQjNFU5NVFN
PTI1dVhSOypIVERHXnRvdHNgLVE+XmUlN3ZhT3stQmRZSEA2WDc/d31mKzc2OHApPktYaHZ6Cnp4
QyNiZWVuNWI0QENXMlAhTkE2ez5HcTtfcDFpKm5rQUo3UlkheGBAO0V4RC10fGNlXkVCamhLTSN+
Rl9OTmdmPQp6eDRvZnhgd09kSShaO3tmUk9nMDUkXjNkcFZYZnopZ3s2VjVBfShKKHpJVC1gUFlQ
MUBCKkleO1lxV0w2anQpIUEKek9tXilFNFRvY3A5VmxXclBZMD9pUUh4RnlRKCsrcXZRaHs5bz0k
S0cxQjdLV21BMSQtSmZOVGZvTDA8Njw8PiRfCnpXbzJ5STR5S2RFYTlQWWtAc0Q8RE1XfiE0OGZp
USNEWnZLfWBCKFBpWHMxZGFpbzhQdnR2czAzdGA4SGZiPX1wJQp6ZzBlNXZycCs7QiVhIW5+Zjg1
QVF3Mm18ZEFiPE9hLSVPNnleQjZoUXAmZW4rTlM0eVVjQWV7N3hZWFRjMWMmViQKek5zc3JeR2kj
ckJRNDBTaGBJRHpXQWNVPnNYeyQ+O0xzZCVNR35vOHdfV0hAd09EWmdzTm5TPTFvYGJpejdXKHRN
Cno8SmNWbnU8VWpvd2xZYz5IKj8zKmZLSDE2ZVM/VGZ4R2w+fjQ2QmVlSH4/fTIyVkVmPW0zTWJR
Tjg5bWZ3Iy0jVQp6TlU7SEBJQEA1YF5UNnpKVCRxJHdWV0lFJGU8KztfeFJtajYzeF9ldnF0bXFI
TiF1JlExcXFrMDQtclJ7TndqTUMKemdNYi1nQntuUDwhQDduPG5INyp+IUR+KmxrdG41fTE4dGs1
bTk/M3x2KmxjeWE/OCQhVGZGc19AU15AaCY1THlsCnphPlEyVHVoN01XdFN7dFVXJHNHZUFCSnph
X3hOI0NoN0AzaVc4elY9PG5lfnM5fj9NYF9rUztaNDI4JlRHWm5WKAp6RHA9fkFKKyVCMTZDTGRj
alpWKHJKVmJHdz0hdVB1I0hwKGxDOEdMciRkWFpMPlUqcDNNfHg1NSUjd1YwWj1QYSYKekQ1eDwl
TTdZb0w7Rk0rVTE5RHI3YCtQbEApNUB9Wj12Sm5lSjtjX3l0PWphNCFZfDJmaCZ1MzJLQlpKOTRJ
XiV0CnpKNkF8UFkxWn1KYVRudjwmbzsxMVNte3lwe19VKDl7eFpFR2luN2dgPVlHeD1obCl7TnJa
VGFMdVRMVVpIMUtVVgp6Vm98bUFUbGJSUjZucjBBQCRjc3NMXk0jTzNreWstbnw/Qjc7Q3hrdlFn
Z0tPdjV3NjIlSXZ9JFRHe2lVYnhSXykKelR0QVcmUmRleCZudkcmPUFSWn5AeDFCfU0zbkM8Tkw+
VXdKXkhwTHBwNz49ZjZReTBUdyFodyY3JkJDTztvKCkrCno5UTVSfUAwPCNxPCUqeTl7cmkwI2dR
aEFUa0RxQEBPSUJ0ZyViU3l+SnNzeD1DQ2YjdzxhYlY3MiUqRUsoaENjTgp6KH0yNVdIeTBMbTJU
ZylqUyQoWHRyWWM3c1NwYUF4PmBePWtgQSo7ZVdsfDxPN081M0s9akpXZjshOVN7Y2s2N34KekQx
MUNYMGxyRERtK21+YVFLKzk4ciVDeklOcGllWjU+bCNjYURrZkBqTD0lejhhYnJfQn48dUd6YT1K
NCtBWCN6CnohTUBgb3QrcyZoR2EwOz54KGRtSDwje3w9amB9MnstNXBobTNAeldnd1RWM1RXIT9w
JElyb0M9KkZrTVdMYCp0KAp6ISF0Uj0rTz89NFpUeUQpRSRmLT4jKX40OF8zSDEoZ3hwWCU9UkM4
c192SU1WZXxIRUNOJngtR1dOPz4ycnJeY2wKejd3clhmLWhoTEc1Y09DQ2ZocS0/e050WkIqIStO
bmBaY30pWW5tfDlXelBVNmM1PF9Nb29zMyQwN0w5U2dZZ0ZmCnotO0g8SHlnTGE0Pmo+XzdUISs7
UWVQeSgoNGklZ0l0e2I1Mkd2fXBPMGw+YnxpdHhKc2QkVWM/VkBnSWt2c3VaYgp6K1RSJVg5OCs/
d0Ykbj5AXnhLUDtLfEZXRzlhNSQ9QSRrM0QmakJwYU9Ze2x6NSVzK2ZiemZ8VzF1OGNSPT0tKyUK
ejJpPkNmb3duUHhlYU02Wjs+THgxbFowM0MmXjVxeih6ZHA9dnY3Ty1wJSVXRU9APXwmKDIlKjNH
eE9HR2dzVkkyCnpgT3FJQzIobU5FT1BWOEElRTxLamNKY2p3Z2ZAI0FWNXxQeHVlPUVVYTVgX3w3
fXNVTGY5ZH5mKXFGd1NNfnVaeAp6R0ZXI1pQcVE8ci1TIThBUDE+bmZWUnk8OUlDZGZsV1NeJiVG
X2xPM1BucHZDRzkhIXB6KXcoIT5FRjNhbHlMSH0Keig2XiR9X3MkQygwIzUkaiM2PSpXOzRNPVVf
Z3JXSkR6fmpQRjckM2MoUDswPi1CWXl1Uz13WDV8TFAtT1QmP3huCnpraXkoO0teVE93UXRWVUNn
PFo/Zm8kMGRJcFN2Mi1zO0M2LXsrQTxlYkdacSlXTkhLMHVELSkqTjZoNGA+VEQqeQp6NGxnP2ps
dihYMmJPPTg/cUp7Y0NBUjspXmxRUHgwcmtIeX47QzY4PXB5P1UjZjFjMENpTWA1MzxaWXEqaiZI
ez8Keil4cnZ0d3hkJSFiUUdiKDU7eG4pcExuTUFZZWNyZXM/YWgkdU11dkcwZ35VODNQYG13bzkr
SUw1M1N7PSR5aTAtCnp7RWNuR0IpUXQobUgoc15ueDUxJCpTZDNwVSZEPE50REVKc0hOWVZEbXw+
T3hwPzFNMz8rTkBuQ1RSVT5INGZ1Ywp6US18ISZ5cGJzNGVeMFg4ZkUpeG0tOXM4WldZNF81P2Vg
dk0qMjt5PG9xN35sTFBKPTgzSzw1O0l8blV+elQkWFUKelhgM3FJdmJ1YSppeD9TVCRAKmNWJj91
N0RPLTsoZ1RYOFp5XmRJSnNwY09EWmxGS1U7MEY3RS09anBPVSYzdT9xCno1bl4/KlR+cSpGWnxt
OGRfY0B7aUFhNShobj8oQFAofUN+dXslTih3YkQ+eXJ8RHQyP3Vie2NzWUNvPjVYbjJrKQp6JHNB
O2Y5O183IT1COUdCRENoI0hCY3c1REcjPFRDMENjYkE5b3k5MDFCYylAdUU7XzZuKWJyQHYzN1pV
KCoxI34KenJqcntpVXFYUVQoRyg8Jjt2fSlgKHc9bjgtZi1OKXhvKjRpKGZfPlJpMSlwfGh+PlRE
cjxTNyM0O0psekZeKGVVCnpeUVQ9SjZhNkpUTVEtRWZkfDFRTnQtfWJ6UWIqQ1NBREQ7MVBIKEV8
byhMTD5tPWxicVQxWkNZcXpybDkrIVErIQp6ZSgjN31OV3h2KEBVIUsxVil4dl5KO1pGaDsjdTlJ
WnBeYTFZRTs4czI3NjtRXm1fZXZnNyVLJkBzTypIeCNrUmEKejE7ZS05d0BxaSM2TTl6YT48cGhT
akpzWUtfeVBqNGFiakkqdiRkMHlCfWYpN1VWNDdxKmAhZ0Y7XiEwMlorK3tSCnpsPU5SUkpjWmpx
d05AQ0VzMnVMKDZUei1SM0FhSDxMfU5pZDdBcCNAQ3haNWIkaSshdnJUQ0RPb15YdTNuKSgwSgp6
IVJ4Z0pZej8/ZHZAJko+WWo2M0t7Yk16a2NgRDstNStQWWdObmgwbExKRW9DMlk5a2woJm85JUEw
dS1jZXU7cigKeihFYF8zJWdLWTl1VTd2UzdvfVRvUE1kdj5GJXkzdyVoMVc3JCg8RGI3a21afjxI
SUxXRjYxdWR7NXBJYjUzazZeCnpOPVkjUDNhT055ZUc+RCNTdUpIfmtDPCtZSjc0NUAoWUUpMUdf
ZE1uMmBvIzBUQitlbzlxXlE7fDlLZ3IkP0VFIQp6JEV7JXJOel4rPENHQDVMeXhZT35KS15LdTYx
aHAxNWJVUSpjTD1sRzUyZG0lQHU4VyZjR3ImbyNvfEx4c0o+MFMKeklwd2RMekQtPHxfZyM5RHJY
OzZ8elBmUyQqJV5gK010VDF1ZkF7ZUJTdEZIKzUrKUlWVFghMlk5eWdFWndIITlPCno4fntXYkgj
RXNPbW9AQTk4cj14IUJgKX1NNzVIPk16YmQqJUR6MUNfcH1pI3dKZmElJk4qUlBEYXlvTkMtKUdt
aQp6XmB9JklMKGtiZSZJXkFoUngjPn08V3BAVntsRHhoLV97MGxFdmZtSmtYdUxPcl94S1otX1Qx
dl47UkhKQCoqT0AKel8rfnhFbWNpNElTcHp3d1IpNncoT0JwRXFGKmFzVnNER3NIZCZRM2VteEBS
RGVfcTxRa21gWWZERFBfOGxsIXlYCno3PFdHbjk5fXFgZWRhY0ItSylkU0FIX2NLJVFeZDFLTHNT
YylyfEVQdVBhK1htPTwodUZHS1hZcX4yMj9Tfn11fQp6PyZIXihhX2NLVSk3QylFYHE2YTYteGUo
YTBpTmxgeiUlTyM+aHR3QGlEWGVufEpwclBpSjs9T19MM3MyR2kyJjcKekl6PjM0SCg8eFBDMksq
OCl4Tll1eGJadTA+PmttPmtgPCQ8MDJVR1l1WWVxcDJYak1PJiQ8IzlBdjNgSzY9SnNiCnpZfkBY
RD94fnxuVi1BYTtfRUZuS3RndTdSaFMrTURPe2JkLVBULWI1TVp4R0dsSSs+e2lObTdeI0VGQ2lo
KyhLdQp6VEBtZi1SelQ+Y3F7cnZaSClBaElQKGlvVCYmQylEJWRpNC1ZWGt0cyhaS1JRX352bzF0
SnVlem5QR1pBXkZjZiQKemMlTmpyUXxxJk9eKX5Qem1zJVR+ZF5WPDNhUnpoQ3lIZWYhKjVGXihp
dDF1NXJjJmo1Jlp7UDtqcmx+fVMzaD9lCno3TkAheENZJDEtbykzQHRJM1MwentWe1JWSkhYWSY+
Y1pvRXJ5eCpjZV9XKEVrWlFLIUgtOE5TWnZAX2ROcWgrfQp6LV41cylQXjJpVSRwVSpWNiZXK3hU
UTBHYnpGfXthKzRZYSMwTTlNQWJtdG8yaUluP2RVaUxfe3dSZSMoc1M5ZGoKekdTcHc/JjVFUik4
RDFpK0pAYygxQDdGQShoOzdeTWpQQ0RCdDhEYSVNanlAd05QKHdrMjxXNzZtbntZTWAhXyM2Cno7
SjtaKVc5a2RTcVRoSHJjVWJZcCFgcnMldVpvP1lEU1JsVW5HcENoQlpjdEZQWTFtYnpZQF9NTCRy
MCNIVDtwZgp6YnI9fElfRD12RU9hbXZCZWE4YnhnVVZPZT8oJlErSDNnYm03PiViZHhvR2FxeFQ0
IWpVUiUjemt4cWc0JWhsbXwKekwxe1NQb3NXc3lPOEs2bVQqUWpeWWF7Nm5rSnVPLXQ0QmZISFgh
NThPVDd9bSNmYXhkY1NqVW0rYGkmPUE4ZDZ+CnozN3I9clIhNXpeZmA3YkFReXZmOXp0PGo8dChD
PUl7JVRnQ2VgZGM0Q2Q4Mk1qWXdnSXBEcy1NXyp7OyFXbz9FVwp6S14hM3dmZ1hWQCUzT2gmYDsz
SlFaX2h4U1N+fFUmMnQ7bGshP0BpSGQ1TWU1VmhgKi1mIWl7WDN+JjsxTkZsMEsKej4hN2lJRU12
dWd2S2FhSEN0RjBhKEItM3Nhb20obGk9bVlOaklfK2QrRVkweFN1QzNINj1GTHBuQ1k9Z1BJNU9t
CnpIVlM4WnUoJTZmRENCZ1BsPH5aUVp7PHNNdGRScHtCYGh0c0s+amo7YylKbFhyM1VGISs+UE0q
UU5KUWM2Pi1SQwp6V2h7em5hSXBCJndUZ3A7Xz5HQUY+dHtOUSZ9IW1zTXowV344MlRrPzlIIWhN
MztCTyYha2d2e3J8Uk5Acyo3YS0Kei1SVEA7aHRATFJxRHZEb1dmSEplTXl6fWtwSDVFamF6clJM
bylyQVRZNWlucXxOViQ1dGYqWUNyX2MlPjJfSDYzCnpJanxYUkBreHkydnRrP1hYemxvVzspWW98
Z1E9KWlYRUY4eTRLTmt9SnBSSGFvfi1RYHNoUyl7Z0h8Y0pDIVopKQp6cDlQdXBGLWh1Rmx2WDNW
VXBUTD1hQX40ZT9wOEpBTH0jaXtGdTJGUTUoR0s8KWJJcXhNeD9nK3VRcyZyO08wZzsKendLKGRv
Z1p+MVRhYFAxfEVLOzF8dWUmVj9WbTN3QUBVcDFGZUdzJnx1PXsoZih3Znh7eUhjYnw8bWw1PUxn
ditCCno9RTQkN3ZDblRtS3hILTxld2hlO2Z0UCthbzlXQUlTT3cwKm8rOzJhZ0s5YjFGNVN7aGR+
RUhaZVNmfHlYbTg+QQp6KHd6Km0kOTFpclV1SFJYUlJFbHVRU300T1o3USpLK0IqSz0+dmdmcTtF
R1VqeFQ0Jm4heD5faGJoQ31vZmN3OCsKeml9ZSR9MSk8K3dAPSFzKFAjJGRPUTwtUmlxVXF2QWot
azlfb3NLUyZBe051aSZoTnsqa1htXmdDN01tcTstbmhVCnold2U8NlhsdXw8PyotQ1UmXk1sdj1K
czwoTD07cDNtemp8YkhWRX03WlZlZTNlQ0xXZV9NSF5QeG45JWprTk5GbAp6LWs3NFFlbzV6I1Ej
JmFoMmVUamMxUlRfbGUkWT0lcTZ6a2dxNyVmQVlAUiRoSSU8ZzsrYURmejx9fUN9SV97XiMKekpN
fWsqU3RCPEl3T3dZWCtQY3lwK2h5T2FFVXBqcFpAN2o+VVpWS0FOS1o/eFUyRV9OYX5nZSlzWCUw
YSM8S0RhCnpuc1lpbz4tK0pqKi1eWjFmUHI2MSNidEB1R0hZQlVKdmhpfWgoNUJEY2plPiNSfnp+
MDZ2QnQ8VUwxaWlDNDE4Jgp6KTx9ZGNRRGZNZDNgSXJNN3NyfF9hRzBvRVY3ej1BOVV8Wn50NT4t
PnBgZDx2OUE/KXhjeSghZVR5OFRHc0x+fWEKekg+Y3BTdEZUYEFeKmN7cSFgfjdzSiFgcWBIKVVO
K2pHUj9+NHd3WkFwZiZ6ITModGpWK3FIN0RHUE0kR3ZRVVZgCnpTS15MOzRta3dCIzVnMXM9Z0hU
TENFODZaPmZKK355a1JAP05rMXp1P25jUEA1fjNZNHIzUXNjaDBAcy1xWUBFKgp6dS1TSHtpTUct
PWlGaD5qaHohOC0ja1FuTFpNdTAkKjQ4QFhMLWA5JkRMPiNFSEhNeWJqI21YfXpxLVR3TjRyOWEK
ekhGKUx7SFMzPEM4YmJ4SStpYj5PKihZUjAzPWJ2bFMyNXFCXzNUJXlWJDJ2NWZ5YWF8ej9ufHNY
fj4qKyl0ZyZCCnpXRSshTXVybkdKcT5CNUZ2RXM4VHUrQ2FDeyRzKEUheWZhQXBNcVZ9MVRPYDRD
SzA2dHJvUD9YNDAjaTR5UygleQp6Vz1WeGUmUz9TWllSe0k3N2R+XlQkJGRUZ0sjajZgSWVtRX4y
TkV0X3V4Z0FmcVJjT04mfUplXylnMl82S2k5dC0Kel5LVlltJXVTYEBITXBsRllYIUtUe2hxQXNH
bG1jUypyMExuTVJja2tAP3xHcj9LdXczRU9idT80WTJzP3VgNmJvCnpKKytxTkV9V0pARitkKlh0
WUxzUStebnNXT3xFdCU0bSswZ0UxYGImXmBeJWdPRjZITjxEWTRKdFJTPHRCbi1JWgp6JHtDWSo+
U0lvcXY+Q28kbkJlWWo1NHEtNjlMNygmZzB8NWdWYDM4a19FIUNWWVh5YCNUfmAqMCtpJVFRPHIo
PXcKejJWN1QyTXdYdUlWTlUrV3lqe3BHVW5ndWZzY04yYFcwe3V1ZGpeKzhOSGNkQnxJNDZjJnZQ
SDQ3b1pAYWtveFAzCnp2ZnV7QVYzaCFYZjhoZUgja21yNXI5bWlnKGdjJVhLMlA2SHgwTjAkUmlq
KUZqMWhec3FwSTR9P1pHe1VfKEhkfQp6akJ2WFoxSWwlbDxWdG5rUTk+JDtwfkJOZUtpYTREbWct
bG5JRF5Ld3clUip5UnRgdERSYkE4fDE3bD4tMXJEUHoKenFDQThuN2xXX09KZzdMOFokTClOTTJe
WXZPNlVjPyNwIyEyeGtmIT0rdExGUnB8P0dsemk5Vks+UTc7VCFic307CnoqYDxHcD0jZkViMFBr
NFJFazglUnJPR35oT0QpPGJfNHVTP0hAPkxVeyhBK253Pnp7Q05UIShweEFWZWpPbEl3Ngp6QCsz
eDJWVGItJl41M2okdnIhYipIO2hEZiNIKiNPV25Ze3YmTmYjZyFZKXtYVUw9YjNidzlrTXBrUlEk
O3s/RWIKemErWDx3azlfWWxgSyZyRmhMZDtGLSNzV1Q1ZTRyZnc9dzJyK0NYTDtqOV8yYjkpR1BO
dj9xVD57c0JQJVozKGxICnpmMzJYYmlQdXo9QmxPJX5PSFpYeiRCSzczPDZlZSNaWkJMdyg/fXJC
K1pqUmt2fkgoZiMkUnd0NU17WFJIRSZuVAp6X2FxP00wdlUyeFh7bjlQWmF5eWw3bys3SUZ4amo3
bHJ1JC1rOFh6YTsoMGctXzlOQElYMWhXY3xKVmRTSEopdzwKekZiYHc8I1JySWh2JDY5O09fY1I3
JGV3T3BHeDw4bnR5ZXQ1ZzZabHlBOV9NXmJTSGV1eF4jZEEoJlVWKHphVV5mCnpUVCUma1pgKXsl
PTZlKUIoezVFc1RFN1QjNndWSFBHaXZJUEp9fWd0WGF3P1MheXBCUXY/bFMreTAlckVmbnBhSQp6
dmdpKiZtbllLSCVvSWQkNnQjaVZBeFh6QGxEMEBYYEZDTVgqcV9xbD92Xih9UEJJajYtNncjcGEk
aipAQmZkSU4Kei1WYWJASFRrTjZXMG8zR1R9bzt0QGFHM1RZaz8/aW5HTUAhX0x4IVJKd3cxbnRt
N1JkNExzRE1LKEdMR2BCZC03Cnp1NGFHbmBJTFJoWjJhMzZ5WDIjdUAhTU1oOSRCMHJnbkdfalA4
dkp5LXNZbzImVl54IXd6NjA5I3FyUl87bVM2fgp6OXsoKm0oKDYpcDI8KSlDN1M9dENVUnp7QHZv
RilLZk1uZ2tfeGRfZy1YciVxcDlUdDFaM3ozWDIrbkh1JX1VXiUKeilIZHdkYXwoI1NLI0VFI0g1
aVBEXyNCSlpJPWV8JD9WYSpeMTw2QnNrNUF0IWwrYWRSVkYrK0VNQUcpcnZqN3U4Cnp0aU44aVNp
VHwrWDVLJmhrYCZVWTJANSRuV1Y0QT9VVHsze3kyTSswcEcwfDY3RnRiN1RBWkpkQHdxMG87JFMk
RQp6I0BSKl4jV3N4QTcrXjBBSUk7QVM2aWBqWipAJEFfbWV2VVUpQyFhfTwmfEJFTTIkVFQzJV41
aTtAUWZKIU9LZk4Kek9aalYoQ35Le01aSmtjeVV0eShoWGMmJF5wPSpDfGRvejBfP3tfdSlpQWow
R1IwbllOVl5iVXkhc2J8U3d7NkYxCno1ZHA5PmBIYFFpQWk0YVgyfShhYlRQbktJVnBUWj0pVlpg
NilhKjlZMmZYbzUzODVJSm9HeE1oJFlJM35wPD93VQp6Kzxja0J4bjVBMm1TekJJdGB2dT9QLXw/
WCZWdDZxSnkqUWhyekdXYEgobkllKlBPYXxobm9JVWJNO1IlemcoRzEKenlEKXFWZUEtYzlVdk41
MWNWeE1IekVZaiREWX5TfXh7eDAtMzBod1UtUzUhOEpGYns8eXpHVns7dnwxPE5pMjBDCnpicSst
UkI1SG4hOzNnel8kemgzRHFhSX48ZzZZV24mc2JVfXhzY1ByUU4wY29AajtfXihOKX0yMHdVPzBs
KDh1Qgp6QCl2SW1ZcFZkPikqTDhyLVpHPV5uUlZfYmFNLWNEMyUxbmtgSHBpYnl1X1V1dVg2QVlK
O20qcUZOUkxVcW0pPnIKekRUe3VXZnl0N0lVdWowZWdqY08/aWc5U0wpeSNzcEFWVkcmLX0xaE1R
VzN5ZlFpQXJnQ21OdGZQYktgM1ZWMzNhCnp5SkRGQ15Wbl5IMiRIYzVVKl5ULVQzVSR7am5hc0Yk
fFBqejV7eXJpPzxrWVM0QU96P1YtOUl3LXVzU1NnaihSIwp6fDA1Z2R4Yk08ZmE2VXhIU0A+N31E
RU1xaTxGdUw/M3ktLWdIOXlvbz5IYVk4Rz1nXnh4eU59dkN2VEdxNlJgUHEKemNpeiM1MVExS1lF
aiVUOERxaWYxLVdPVlp2KiFQcGhtNjslYEA8VlUjTDt+VUsxeWFCWEJINz8lVH5UdzdgVEkoCno1
JVg2fCpDK1lvaDJmZyk7bWImK2k/dzMmUkN0P1pvNyQ9MnNCQW15eVN4NFNiPnp4KklTPlFZZjRi
b0dnWDx+PAp6WmdLcHdYSEtaTyhCdiZrYU5sNytgQTVWfUgxO2hNZkFyUWxLQ0w+a09sKVZDT0VD
bklQMSFjNiV7SCF5WnpUO1YKeio7OUJVPFF7JnFOU0FoN21VdH0mNjtVe0heY0FxWUpYKFclTy1F
aCgmcF42U1lFP35BcSNvP14mcjd3QUpHKUstCnpUdG81N0BLQlglP3JETH5QTlhoJHV6QjtjIXko
c08zSCshMzV2LTFBeWhQcGVKXjxuSml9VV90VSo8bWpOc3Y/SQp6eEJiUjl3alhUUDtLPXBNbG1f
ZzRRS3Q+RGQjNDBeantGO1UjUT5xSEw0VH43bm1EQnllPWNfSiV6K1FLYzt7bVIKemhJSGxhSjgj
cGZpczNVZyROLTd3N3whPmlhWjtoaTcrckU2e3FTaSgtKzMrPjtoZ1JTeUVXIW1xZnR8PGJXVDVY
Cnp5N2wxc1JWNjFtc2B5QUIrTENudU9YQE5jZ3pKNStTLW08P25PM2tDLXRoeSQ/dnJTO0FSP15v
WHsjRFNQRn0pRQp6aGc0I1M1eCkjbD9fdjB6aGpWMSNrdzJ2LUYle34jIWBza2lFYShqQT0/KTtI
S307M1dHbm4jU19QUCQyNEQ0VygKejd5WXd0WWFUQkt0Jig7bGNadU9eNSFySWpYN0w5anErayhi
by09MTdsQjYmaVgoc0l2N2dCTEdoIT55cWVYdEVlCnpjVTJNNl54NU9qT1MmZEZwWmNhT2xpcTZl
JkpSdWUrMHJ5QDdLWGAkSz0pNkQ5KihLbHl+Sm1raGxiQjZMUjlAdwp6KGF4cUlfZCo4Sll1TE9Q
Tj1GMyM2Y01yeDR5fnQtJlMmcF5VYlA4Z3EzYjJqeTBwfCRvelF8ZCQ0emNxM0Awc1IKeipTP2de
SUlnOCZvQiVaSTBOLTBXd2FZc3slbz0xbDZGX35NNkFlJGtYcGVHMWt5OXJSenduWSs8ZWByamFa
Ym9mCnpATWhLXmp8MjhtJjRDaSozMClxRkhheSMwcFYrYXZLJHpSKj9CbWtJZDZ1NXhnKChyPkRq
QnJtTEMxT31LQzc/Ygp6IW5TRnlGZHYpd01BNEUxNUU+SEBfQU15VkZjUDY7WllZUWp5aitqNDs2
d1pLbVlyIThkO2NqcSNXNWlLTytCJloKekB3XnshKSFfUkVJNWhLVTt7byl0dmFZPG5aRD15STVD
aW5GUyR1OU8qWHhgPjd5Zm87KHNCSXJhKjNAbCtNdmkqCnpxNG0lMHc0PHc2JGdrQ0E1LTZAPEtQ
PSlqOGJ1Kyk8YiMqQ1olcGdoVyRgJGEkMyl3VVNiRDNDO2VYMShZNF4jRgp6JnRUTVo1R3pmOzJv
azBQZi17ZHtKRjgkSHdyPWB6RWxDazBgP2YmfkYpRUAzRjImWGRSTjskV0tsTTZ9O1czfGYKejR0
fCRDJUVJVk80ZjYmfVU/Vlo9PiNrS3lxa3xwdTBwdXJieWN4NXx2cmlXZnZRRn1ea1A/Z2VLejYt
UXdQK0x9CnpVPyRAKkAjSyRHXnVDbHw0ezt7ZUhZMVBjKXJxeUE2d018NjAqQU1AWEA0QUhxfDtz
TlM4K1B4PFM2P3NaSTgqegp6aXxQQ0MjfE5OejtDTmtmWD8rZzEqeFRyYTdsOXY4U2gpe0VNbnE8
TmE9fkZ1Sld6QkJ6VkZyTy1vZnRJTGp0VmIKejl5KzdNP1FuMUpVP2k8Sj88VFhpMy01QlhhblB1
Jig5IVNyKDNWOVhfQmRkeDh9VEN+emczeys3ZGFBaThFRWFPCno8e14kVGMqR1FpclVJRXYyKShw
S1pQTjZvRlA7WWhadTI8M0BlPjtgcEZhdjtQQT5AXnMoUXJmNj5Zc25GczI0Wgp6MGdkfiFeaGQ0
flZjYzYmY0s9bCRVPHI5IUtBM2tRTXU/a3NNUV53PypvPnBNY0gzXm1OUDxgXik1UypfaGtSUDUK
elkzJUF8Pz1SUVpsaSlzQEhDWFF4Kld2SFEhJm0/NVpXNTNqI3RuZU1aYX5RQCYmZHxwUiEmXzxv
PHFvVkdlKyRMCnpuQztSc3dIXmwhX1RLeUBKOyg2JkFGejElUyRgKjtkMEYrX0J+RVVldl42WTQr
N2peMjAmUzsxM25tSD0hS3o/cQp6UWcjfCZSTitoIUdiUkVVbmY/P08zRnd0JEFBWFNRcUlSR3B1
QTtOXjx4NHpkQz5gJGZfPkB5OWhQNXsoKCQoMXoKej1xbmxoVHk3NX5tKk0kVU10dEo0SyFhMTlO
JlJgb0hIQDdHJEV6PX1remlTeWdrR295Sk07R2JXP2Fpbzk0VWg5CnpzKCUoU2Ble3tuWXN+ZDVu
OTteezBCI0VkI35HWTx3Nj9BYUdnJFFgQ1RTMWMyKTM3NjB5dWBha1lxQSE3ZmFUbQp6OX5LQndL
PHlVSS1gXnpHVXslM2FpWk4hfC10UUspNGd0dGRpdE1AZChnblowRzZaN2Q3VCQyX2woQHJVTiNZ
N24KemhfZk9IVCtsNHQqNDN5LVZrODFUPn1kVzl3VnMwdUUkfERgbk9FMW9jYDBVb0R5RV54PlJB
QCttZko1bz87JjBDCnp7LVg4Tzl+dCtEeWNVZjlKRm9iXjYxJCU3aUZ8KVZ3ZiZ5RUd6UjZmaTw3
PzRvJlUrMEt2a3UzQ0ZfZkJnSlgzUgp6XndMWTx0PWdJNGxOfX57YkJ9RCV6Y1Nse0hhV2E2KFAj
bnF7PEw8Q2p2dVhJXnc/NEZOaUU7PCYzfSlOM24maVkKejsmSF9AaU5ITHwrVk5UQ1A1UTBEKyFj
Sl5zeXhZTD0takB1TG48bnx3MWdScEU0c0o7eTkwbFFgMWJjYWQoJF5uCnpia29nZyh8fm0+TD8y
SV9CcFVJQEFvZWBObjhGUSY3SkR2VWBtTjA5ZzE/KChhLThaWEpKQyVoc3shODt2fmdtSgp6RXpt
bUwmeTB6dXJmMWRHa3BRTGBmVkB1ZyQoLTs+QkBEYz5TTUNPdU96NGlRTjUqJk4lPkhkUj4lYT8q
Vm4yQ2AKemN5KGRHM3A4U049ejhTMSpTTmE+X3RxTksqVERuOUFGUEtSSmV6JFY8akN+NmVyQTdi
Km1ncSl6cHJ6Uko/JXpQCnpVbSoxVG93cnx4RC1SVWFWKEleeCVXRTdjb2pnNyFEMWRMdntpTl5g
JUsoMndhYzR5JWxST0pwaVJTbFA0ZGZuQwp6K2s2eUF5Wit1aHB9NkdaZ1Qrb0FURVkwQm9RVGNY
YlQ+T1ZJYGBaPmBOOG8qQTN2QklfKGRGOTVqdDtSLWRqY0QKelNkLXQ+JFF5MzExTCNxfXE3b05G
Y3tZUj5lbE9lYWMldFRGZlF0T0VYS056Q2hQYF58PHFIPzwjfT4lVHRlcD5lCnpAcT8ybmFXc1NQ
O1ZITmk/O1dqelR7X3hlaSUtYjQpNmlaeHdLQW1QJitOQnRvTE9rWmpqSGZaWEx+S0JvRil9bwp6
JV9iQC1geTZkbno5PjckR3xpVCYpK0I3RGQjQ2A+K3ExMG8lMkdoJkYtKWZQe3VleHU+QmolWFg4
QGMzemNkS3EKejEqbDlaKkNVUDBNVlY+Vypwa31RX0tRK3RMPFh3U0U5SUg4RzxRPlN7ZCNjaHQt
YEZkN0J3I3NzJkhsc21xQilICnpCb15TX2B4bF9rdm8qVVZJWXE9OVBzVGVfVSRZZExscVRDPmFw
O0FJTGphe2JhZz9PYzJ6a3hiUSt7SjIxb1NxJAp6Sld1X29efldkfDY+PkliI3RYRHU3N2M2Xz1j
dWR0b2lKSER0aF41I1haO0Q9OGJvT1h4aSk7M2pmMXQyMVhOUXoKemgyNGNDKjtxJTF5ekhuOGRg
VnFTWHtvdFpiKk1hc3stajdCYkhAPXZDZzM5Xj9rMDFUZUFQWjglUzhQezVNWlpBCnpZRWNnbSZ7
PzJfLW5gdndvJl99PHBpeW49VSE7Tj9xRFpCdiNUWjZgRSlvKzxGfGJBRjtXODEyJCgmUjlBdXNM
fAp6SkF+JmxleiYpRiRlO0xAZ2BLP1FxNjllKCNgTUNlWXt8M0JmbDNKTkhEKmAzPjYjLShqdXE7
Yk84RzAtSGJ9KGIKentoQm0zeUg5dXlxaTBfUHt4SUBwNVk/TUQpYWFWWXtOTTIhZihmSFRxR213
MDhKZnN1KEh7czAyYkd7PV5BJmZJCnprVVN9M0tCfE85JFB8MjY+RFZSSjNPQUQramR7TlAmemFj
czJRdUM2VmdpVVRvQjJkVE9wZlhNd2dzakQ3TTwqfgp6cSV2bC03MEc+U2h4OVZuSWRPRDMzN25L
P0wjJmFIMyZPYURWSkx4JD8zX1d+cChZenBfUDwoRiZ1c3g5SWpaYVEKej50bEtZRE1rKHQ7OTxC
dGUqKnV2Nm8pIV8oSTgoQ2VmQXR5WW9XPVU/KWFBcGVXZVJZQXQjISF6enxQU0s/IWR7CnpYX3Zv
IVIzUDxNYjtndWNDYGtZbkJOcChfZWlpMXtPUXl2aT9jS240PVRHVWotP3dUQ1Z7K2Yhej4hNzUw
eilnaQp6UzVrPVFnUz5WISY3Nnk/PGlrWitvTlFQYmg8WHxvdio1ZVhUNlIpcURGWSpkO283JnJE
fHBKNV9QLUo3YzdFNSMKekxNVG52TyhnJDNuPihKYEpiQT5SPGk/TDFgX301I1V4cWdvO29wMWU8
YmxAZXplPFZ0K3NncSt0KCRxZHw5dF4oCnpeTFJDemNfWD5RQWBGKGVjaEM4YERhRDdgPElPKyQ8
dlQ4Nzc5T0JocUVOTFIqdH1mdW1IKGJANVY4YSVXTGA2Pgp6cztKTjk4a25xa29uLUl+VS1mbTVa
I0VxTCgrQi1PMEIlNSR6dVVTYkFEfGRXPl5hOWtBPGFtdUxLMmQhOzctYlAKelkoczQkTlF8VzVy
K3A2Xkl5IW1qd0hHXkhKNEVYUzA4YThNM3RgcDt0MXp2cVI0RW9fOVc7TkFKaDJPTiZwaT1gCnpO
Z2pxZV9NTD1oZjNWfH5raSFXQmZTVnVQXkBVVk16bSt9eE8jZk4pJiE4S3xuUmx7KU1sTjZTJF9M
NWI8R3AwfQp6dVkyXjYydEtkJnF2SEt1Nz43MiY9LSY/I0RKLTZ2I1B0XztpQkghcyNAbzlsRTh6
LWE+cUpqT1JoYVNxcFFDS3IKekdOU2lNMGYjT1UlPjZ3aHMtWG5tRDRIfXFobGpCNXNhOF5PTyNn
akk0VUotR1hPbFAhJnBCQHllKUUmfVZzRzt2Cnp5eXR6X0JHVFYwZHBkMkY1QkdoJTlNaE1pQHNY
ZHRuUVk7SSFmOSkyQiNnKlNCITlXUjYrNmg+MnkqZHt0R0xIcgp6TllvcmR4TD1nXnk4dUh3al98
JUx3RXZqek8yY3ptVGFoUWNuSCtgRHdpUmFETzJITm8kaWg2fmJYMSpuNCQxLT0Kekl4TV4xPm0+
Q1E0eW5UcnM+TWgtQXx6KE83fmtWelVxMn5EbWhRcjtmTXtTT0RiO3ZSeC1gYnhqfEtLdFVPXlFC
CnpeISM4QF4mV0ooQXA8UkI/dUUmV0BvTDhyQTQ5UEsqNl5OIzc2N28pJG1GcDIhcXVwclR+QVhf
Un53YHFAQTw+Qwp6bjZxWDlRdU98ai1sNnJtMlM1RmFMPEEtVDBLV2RAYzdHPUEmRGNwbGR7YTUh
cFVXe2h1X0twcnViXlkxbHkzZiEKej0zelhyP2pXKitraTA2Y14hcTNLKChHeDBlc0ZgaFhQN25v
e3JUTkVWTk1jPilFSzl4KntQdG1sU29aQyFeb29rCnpvIT47d24jKy1pa0lJYzVBZDBATlpBZkpU
dlEwPXItP3BhQDJjR0xkdSo0QDB6anoxUGhEU09QQzQycm0tQE9WcQp6ZSpXI1VvM3FZMzMocjNM
dGgzd3l4fjJAKlUxSCRJYD5zVVlkN21UR0JxIVNjMnItTzFIWFR0RClec2lBWD9ncXwKeiZGfDlh
PEk/XnlaMjZiMGBCNE5FVn10QDwpYlhlO0IpIUdhbjRDT0ooKHAzRGkyPjtDZCYleUtUUjltRlkt
OXFnCnpKe0txYnpsKHIkOGF3diY2Nm9udFg7KFpYJCVraztjbEFBWldLZ0tIdjxAQElLPjw1Ryp0
Jk5tUHw9byoqSl5wPgp6QnVJQFQ2a2Q8cWhiZVJ7dnFNNFdAfmRiUFI1MUA3diN1UlNmVUVeKlB6
KFVYYzxMOT0jUWR8RCR4MlhtKVp4RyoKeit2RmIxenZ5Sl8/SGZnO1pPNDNVYDtWNXR1XyNVcTBO
bkR9dHtjLT88MnpBcSlnNFU+MT8xTEhKT1MrSG5tTWNHCno3Tj1NcVo0VHBzTS1MIUZmV2RhTUgy
PnQzeWleam9vc1ktXzxCO0Q+UFk+UipxemcrPHMqJX5SMWp0PWA/e1Zlbwp6ZG1Jb2prYGFgal4+
SXUmfDhwPkNUUmRrNnFBOSU0SV9OYUtXVCMpcCEydWozME5+RUEzOz9tVjk+aUxFa2smblQKej1k
NGEjZWRgQyUrfWUoPmVFQk8jQ1g+JGplKmRaZks3MzkmelRmKkAldl5tWXloYyh5enJXYnBmKX5q
ND1iblorCnoqSUlzdFA1YSR+aH52PEhfazxxTDthNmw5OTdGcEhHWDlSVXBZZWBFOG1RIXk9NyVO
eDB0VUpZPzIrJnJVNTd+Ngp6NkRweWUtWTI2NnApPWwhM3FKRz95NiNEQSt0VnYre24tbkNJRDtj
RiNJbnZeSjRiVHZjT0t8Tk52VTY5bDBHaVkKelEte29EIURRTzszZCRYUEphKkJSVkhTR3AtTlVE
ZmtZQFMpWGJBZFlIRmtDYDRhZT5+JF43ZGZRXjRtcmp0SD9zCnppWEQtTUAmTGZoRklaV0U2RH5k
KEp9VmlCPWlzNWc+X0RfOWpPRmgqOEdSKXNYemw1fTllP0A5Jnd3M1ZPcXU+aAp6Vj9xR25VbW8y
Uk97ODw+MzteOFdtK1EzVyY4bjhUemJ0MHFzYF9IWWV7fXN9cTsyOG55Q0V5KGBlN1YtMFk+TGUK
ejxUTmdgRztuJl45ezRnekVMYyYyaDBEcSVhVlh6fFBxVCFja0hDe1IwaHIhcDYzYGFEMXIzK31z
fFcpKDxuOVY1Cnp1KE0tV252SUFGOzkpMT0ybzYybkNhPH5hTjF9VFcoSVh1JntHflgxX3xKRzYl
XjBpZz56ezdgN095JVY0K25wUQp6eEB1aVlMJUdTdz9OMSthSDQtJWkwQ2x9az0jUSg+an1odTNo
dWBzcCtCT2whaX48fUJDfVYxVjkpe2BJX05KaioKekxaOGpRSG5OSHBGeGc3U1ZSanU+NG5QU0o9
RD5+RTh7WWsxeXpQb0pCfTkwKmJxRUxPbzx8flN3R00pbkE8Mm42Cno9ZX10ITdTVE1wfEtTNHw8
e0EqWThIdGs7ZWVBNX14MHFHVEJaZkZndzAjSWhLOVhSWVJLLWxmTkI1anBtPGszawp6Z3xqPTBP
YT16MTFQU3NYNGpjUEM3fXBaOEl2SUpJSV5qOW0ya31DaXMkS2t8XkgqWlp5aGRSR29XI2BmJW1N
VzUKellzSCtDN292TDJMaFNBdExoNmF7bW1fK1ZGNHBTXjBLV2QldUQ3Umk8fnFCPEN1ZEpfKihH
O3dObjhFZ1dJK3ROCnpETyt9UjxKcnlhKCVDbF4lVUpQI29gaUhFIXZvMGV7KT5jXlFuY09vVXB4
aD9ZUDt+elp9Kl9JVCpKdntPK2pzYQp6UD8mX2g2Y3NuZWJZNSM3Mk49QWh0eGAzTVFHZlhsNURi
LXo3SGJgZlZLNFVAZ3pXQFdRR2xqcitFalJuU0Nrb3YKelZQd3d7cTx0bTBCSm1oYUBPfTdnKGZN
OV8wYFJNa1ByPHMlcENWbmdPMCstTSNzNy01fEFyJWQoKH0oKjlvWTh2CnprNE83T1h6ZzMzamFs
Tld4b1pSTGItPjFgN216SSsyU2k/eSFfVDRwRV5UaypFRTdPP3U+aml+ZkZ1bD1lVnJDbAp6VXt1
SDtRJk5qMSpJJGI+JnNaZUEzcHIyIVhqPlN+MWk7fnVsIVJSP3Q0aT9wSCFyfCtuayFBKXhgezNI
VjhvQW4Kekk9MU5vMHs2c2JveCF+Iz4zLUxuJThRQDFSYCkzd19QSlNeZlUqdUZaRj9hJVJVSmMy
bTwxZG0wMnQwPkJeb3FsCnpIeE1mdkM/LUpyMEVhVDw/T1p5R1gpRVZxJlN7RytLTElJKD1NU044
WiExYmBEek5PNVEqZStOWG4jLXBfMU8zfAp6Wld7NzhWKiMlPzBObkRJLU1mP04rekt9VWFLI29F
aT9IVHJibWUmTyN3e0ojdiVlUk8pdWt2NGBxMCVtTzEzYCgKemZGPWBCLX01QlFwJSY2UjBhVFpK
YXI7K3o9X2Z5YXxJPn13X2QrK08mSTtqX3YrSWJlWWElcTcpJGxefCpvOFZDCnokMFhwP3BqNUM5
LWl2PkwjKWohTVUkWiNXN2VRMCtzTUE9MlV4ZlNQWGQodXt3M0FIJHU2aTNLMDcjQHdvU2Zaewp6
dENIKCtzRGtLUmZWTFlUTWwhPzFeJXFzNGRGZU9NVHloYkRUMCpUSkduJk0ka01FTz1MKH1FIUZw
SVM/RVROTUMKenhuSTQ8b3FLck12dDBJQTBEeFZUV1ZRWFdBNiZfMkRxKiFCdlM4e00+Qk04dmV5
NnpUbjFtcEc5TktUTzBjOGopCnoyRVlZYmRQYVJgY28ydzFvcGZvX0J2V3FjUW1uckllSz0pI2dJ
byh+eHN9UmNhNXkxLTFVT2whdUNfI2UhPX5XZwp6NEszKTNyTz9ONWQyZi0qY2JpMU1lNEZ1dzl6
V3V3ZVk+Kyt4K0k/UVRsbH5eYjw4Z2IzSmNJKEVQI0stZXhlfX4KenstZEpfbUExXj1Ee2NzNHdX
e34tWEAlQjVCS2BuNUxAc0A8RUcwQUdSQ3VqazJgJGVhSz53am1gRiFibEUwSnVoCnohUXF+UEo9
dXBwJWROeTs5e30pO14qaVVLdlJYNXpefk5qIVU+XlhkZ3p7U0pvYzdEKmwrU01PbChPRnZ4flIr
TQp6KXVGRjlmPFkyS3VjPk8jJkU4aCVgX198T2A7ZXZ5YU1qellAc1RUUWtzKHswKD44em0hXmJm
KWwpfHojKW1WMVkKejZrP1hyKCFzTCVKXjUja2FfaVc9X2B+UGxoSzJLJihwPTQ4VXNvNntnUX1t
dVpuWCFDaGZgdCM9I21JVHp+Uz5ECnotcU05PT1Ldzt2SUlkMHE1MCtKJHNHUzI7Jm4tcGUkIURO
ekAlODkwSnluRkNaJEdiR2VFMFROK18kU2sod2MzJQp6VShGMStMcitzSnltQHYrTm94LUZhd1pi
WShQMD9UREQtIyZoSDYjZXkyQVhzMDhOKkc8bGxSUEEkWkIyXm9CfkgKeihjY0tydiE3cHc9c1A3
KVN1MVY7YUJhcS1fUXlJTXQ9QSZweD1kekNecyUrUFZMSmZuSnU9NlRPfk4zJVUoMks8Cno2PDdl
USpiOHEoNClqJVQjI3ZXaWdjSWppMl4qOXl6RSpRcHlQVE51JXVobm92YTFKT2B2KSpVKlB4R0Jw
azBBRQp6LWpMcFdeeTMqR0ZPSEQ/cDVwWjNmRVBIOUMhZ207NzJWXi1yNkszQypoQktxPSRRN0NE
Vk1kPHk1JnUpQzdpVloKelMoTGBSeTlMQCUhfnA9aWtZTVRDUGVEYVByTSVVKTx1SDE3eDYxM2Zg
Qk8yUU9vWilpe1liVnh4NUMpPEtiIyk/CnpIdnhmSDZhYz5aKnpUS0M4VH1SeHtsJXJxUGt7aHVg
fDtIYzZZYiRlOSNoR2ojNzIzVXVVWWlpeHdBYDNmN0skTgp6Ylh8ODQtNSUrWmwtdSU8MmpCbX5H
fFptdk4xOE5vczRSI2JXTHJQez5sZXJyQEw9cilHZn41KTA2UHZYdD93K3MKejwrMSpUbihzJFhg
eFpgRWJPSiZpOWF+IW0oWiRVYEVndHxvZ3xhQ2YyUkY3TiF6PXUtP1o9Jkkybi1fYUoqWG08CnpH
UGYqXiNaXiUoVHJtPzNEXkB8UFRMe3d8ZlpzQHttUkJeSDxNalFUKlg+NHNCeHg7OVFBR1Jzd080
Z0YjdnBnJgp6WEBiJCFoRm1JNmxiOT5ZZU55MzI1ajJTej45a0dLQ1Ujd3QjYzBePCQ8cTBiIzcj
c3Bud1VyYEtpXk41dSNlMGEKenp0ayUqNU5NJU4wUj1FOWNtbmlaaU56ZHZeOz0pd2U2U0B6OStx
YjM1VVFTNSYpS0E7SS04dlJNfWx1a3FMMDt1CnpuT1RCOC1MIUVjPSlAOFhLaGY+O0ZVUSN6b1FV
Tk1ZTmNZWnhRQykwLXM4NCF5RWluOFE+YDxka0AkUnA8RkkpMQp6UCFgQXtBRitVfWYlYkctaDRL
OHlYOUUxWXJEWXxrPFEwZERTT0RMQEJnNm8+WFFTZmB2fTEpYnNVVH1yY3djQ08Kem1RMU9CWmBS
LXQ7T3RXdVYlQTl1MWwrbV5CLStSZlV9b3RMYG15fHlRXyk3cCswb3MzRTF2d3ltKypRM2ZQWjso
CnpTMn5mKjEqRldeNjg7IzYwIWc0YTg3UCpfTlptajhfYlZycT1MSkF3a3Uoays9JERtJEhJNV4q
X1RSZitDVE5Pbwp6JFVEeGcjRXNZMms9PllZNjJVM0RfeTZ9KCp1QUw+dmxvO1MyK1laIXV0JS09
dH00TjdLdjJUN2RGajdrPkI2TyQKek1rZDhtT30hK2ZzZSo8ZTJDclg3MEtmfS1heFE/fihZTGZM
ZlJEVXE0Vz5fPDAlPSsjOGRSND03cTNUYGg4ZVAwCnpDVnw4K0hYWCZFTiY1JTlzKlAyRmNJRTBp
MXxfMSU9N0hfZEpEUU9wcChoPVBzcFVHQk87MkokZUZCWUA4Qn4+IQp6VH0rU0MwT3UyIVI7LSU0
Nlp4ZTZBV0xqMG9iWTJIN0Q4ey1od2ZwMWNyWHowVm1RaTlFU15vOCNVTkImZ2pMJUkKemhlQCM2
MGhpYDRvLU58JiVVQjwxTVBHNn5ZY0Z3e25RMGkpbWNWbzdnKmJneEJpMWFSPUNvKllkSjk/d0o2
dE0hCnpVfj5vaFQxSlJRZHZHTEAwR0Qha2VCKi12ISUhbiM8RWl2R29KYzdhRmRsdWtlPyRBODhW
cTI1WHtaMUljPStpegp6VHtMZjdCa3t0VjBRK2trYW97eF53O1dQbjtROSp0MGpBN3YjRkRxSDVw
ZTY7Kl5KZ3JodXxhTyYhI2UxJTlWcSYKej5UJDRoQWU+JEluT1owUztQSkE4eiQqcC1VO0UzPihA
RlZsaVlDJWhxUkRtT1E0MHRoRnlReS1iMXdIPyUzWGt+CnpPVkhYbmpFP3FFYypQZD16fVdxUzxl
RDJhS0BFP0laK350byktMjxHZiUkTHtRXmNYWlFRWSZSI31OJUBhTUQ+Ygp6dXcrJWU2IVlXKCEx
ZjJeYXtgYE9feXRVekp8OEY0bXRnJllaajJfZm1lKkYlYms1dUUqeHJNMStsVC1GWi0qLXYKekZU
WmRKJk8zRkU8U0B3Zz47KXE9d2ReO3lgQ3t0LSpyNlckXnl3ejJVJXpRblpDUEtNMVRIY1I5TmRq
dWF9JnxhCnpCJVByVEMoVExYPzhQSGtIWjRLSSZmU21iU1klfSZ0S31qMEUzX1Bpclh7USVQcmtG
VF55bFpeZFpnWGN4KHx1MAp6NTMhNkZUPzdjZEJZcHd9Rlp4SHdve2Y0aTY3d1F5SSFVZ29BdHZC
ZFFJMHUlVWFEfXZscClONXVKZkJOZzVFZUEKenI9RDFrd0l8UCVGdEpsK1loYGU5SFJlRmFERTUj
XiN5Un5GVWNRWmNJeD4wamtEVndhNWRyJUJWcXpMMmJnd3YrCno9Tkp5YEVBWGsjI3FPNDZFY0Im
eHtnempoMn1Ucn0wVUFjPXt4PVApRHBKazhCT2M3TWBvcis8WkgzYiske0poXgp6VDJmaHQ2RH5k
bHB7aTFKWmFkLXQwT3R6U2xKTCpEYTVaKnlhSFEjKGxkJGhEJkoyOW5TLT5qPjA1P0NuPnpCIWwK
ent2bDVNO1QzKHRxfWZMIU82JUpJcGc8c2x4bD0yTXsjUWFMYiRZbUkwQVhIR2cwPDBMNUE8RCtp
U1E4RiNMRD80CnpfX3UkV1lFXlI7P2tganR6fTY9WjtMKkZicXJBJEdiMXFxb3MjP253dSZLWXQp
c0JuKS1aPUxyXyRzSTRxIXxAPgp6bml4UGRYI3MkaHBrdlZZMmFnUClaJUBCP2V6e3Q0I2k5bVdi
Sj5jNTdHUVNJSUJEP31AUlJufXV4PypCZSkwU2YKeil4NSV7aGNZQW0kfVQ+PDU1fEdyMVJfeHFk
bXEtJFB2VUpXTXNVSlpWakNXPVB9Qjw4eFUhcEZHdFNKdiZjQWRVCnpfQlFMMGYoV1UxPUx1QD9m
KSFhV2ZnTGV9NyUoKklMRHdKYFBTSnh2Vmw9XkBiRHUmNTN+V2V2VV47YUNXZ287Uwp6d0NaVn44
JUF1KCNEYU0+SVFOWFg7c24lbFlWODJjWUJTRGpGems1cEN7blNrMFA+KyZRaEc+OFlqKiRHT25A
KUAKelQpTzd2O097Mz9LMFpgUGtVS1BhMzBRe04kSFZzITNaSSRZRkQpLWNnfGpOSzhoanJVKyZm
fTBZQXRHN2dnVkA/CnpscF9HR2VORl94ZWFrbztjO2NtfXFHb21qK1A1PyowMDskQ3t8TmYrJTFj
aGNrKSkyRXA3dllKamtrUTJlcE48fgp6bW8rVC1pVUdpdio2cDxEZUBhJks9Xj4lIWUqYkkmRDJI
SExLJXVyV2goJEFOTTU4NExFRHI0SkJfTHAtQHNvZiYKejJjdygpQXdkRUYxRTBSQzR3dHtKbDc0
JF5HS2dqK2xpY144OD9rP0Q0O0MhMSMraCRoPjxDZF9fPzB1ekJ1JTx1Cno9NFgqOVh+NDNeR1ZK
YWNNcUdSb3JxZ19yODk9TnJoS14wMGwzLUYrNjJQYjRlPTRUY2x9VX1lKD01YDxvcWNebQp6NSEq
KU14Tm0wJW87dXY7V1JqVUt4e3I8KW4wdlAoNzRHM3gxK2FRbjR3dFBTIUsmRndgQ2RBd3N1PitZ
YzRmSTAKenpofVE/eTFqWU1PVCY2Y1goRX1mPzFQWEZ6Kz9jPkB0RT5WWT1QVC1eOXQlWVcoOXVx
aDVmYDVkfSF+fSZfaVpLCnpCPD97aFlleGBPZ3Y5fWRtdCNoODNHdkV2OzlJJXw8PUtvWiVZRGl6
dm9MTDV0cVJkdXdJWkFjdXd6M0RgYTRJWgp6PyFQSVhscUtBSm9QZ3VBc0omSGtvQT05XnNRM0Ej
UGskQFQjUX56KlVkc3R3TEhCSEZUP0t9N0lkcWReTl4qVU0KemI8ZFdRd3lwe0kzO2g1ZCltZG5G
X2JAVnNDZlRBKzFqM2Bqd0JCdXBwPmN6bEc1aXhieTE1SV5TJSNVYj1jOWU9Cno1d3ZWPjUoWGZD
OUFXe0Imc1lrfnNtR3E5LUd9dFlaZD9KZSVVKiozYVB1U0VQbyM2KnFxX1RLclBgezBJRjdFfgp6
NyFwTEd4RHlhMzFvOFV8WEg/NiZfazNYZWVOaStZOS08cFdSNE5nTnpVXlVCNURCVTBGQUhrOyhh
cUQqRnZWeEoKejNPe3ltKlBoPD9WY2RQJlZAUmlVb09BSkYldnNWdjNPOHEmMEE2ZVEoIT8jRGc3
eCorQlRCa3FNcjhuOUx2KEJ6CnpTQW1ZVDdDQFJuc2NUYWdCNlBnKHlXflYldXkoRjZmcSstX25m
Rl8zMUdMbG1KPEIhemhrRyRaelhANmB1RE5ONgp6WCNMUjxWOXlxMFRBTCZ6WmchMV4lVEpFcj4/
SH1CRCtaWXN3dGEzSmtOSz49TEpiZSt2I34rSmJick5xayFKPVQKejRgKCRKTzlfPzBVczQ4N3Bh
ZU4kVFAjQ3FKeDdjc0x6KmB5JDYqKj1CdlBheUJPMUJ+PkhaS0g0MzV4YTZ6Q2w/CnprUnFtI3dS
JGJzVX1yeXk4MVY1Mkl9T1hLZiVEJnUjITkqJD8wfTxmSHFOZlg/ND1FO1goKTVuRGNyakwyPlFy
Rwp6RVR5XkFsMSF0VVpTSVUoJXx+e35BaSh8cXQmQlU/X19iYVZia2VqI1g8bUZIcFJ2akpYTClA
azhpK2x7TlUoPSEKelppWXpeSWE2fl5TcVIwWTNaZyp0RVZnWlcwb2lPTncxeWcod2RLay08RTdL
dmB7Q0smY0M3WmQyMj1nMUMoTSRoCnpweW98WT0tbDA9MDA1OCVHRT9VX1ZDcmQkdSZhRiNAbEFL
ayRLWEMqTG0qQFF7QUJAd1J8RWpRXnphVmx7a1E3LQp6eHdNei0wMWg8fChQVDxWVSQrbm0+LTQm
RURlXklNJUp3e1h1cGM4czNBJXJOJHNwNFlaan04MDZsdF5iUEFiUGcKemYzKTdwcSNKK1ZZempS
MEBOVFVDIXlZdXVFWDlTRnVSPyhBYW5gREtNOEw+cEY9cjlrVFFqZjQxQTdOaDlyVmdsCnoqSThG
SFBDRjk3MnxJMEB5UmZqYjZyYTJIRzt2MDtOZlY8PDdvaURyY3AhQEhvbmJUJk1sYy1Ec0txXkQ8
cjEoTgp6ITtaN1ZgKGNwUVBwNn16YnVLdzZnXk8zbVAqYldDPXg4dzklKU1DZlReaChON0lOIXp2
Kj5zRUtiNyF7YUZQfWIKem02VntPdklaNFopdV5hZSZ3KmZ4PFBHcXVMPHpFeWhhd1JTamZ7fEtG
aFY5PDFnU0kmajg1IVV2I0taQUpNS2R3Cno9fGVjP0xvV2VDKjhuZzt6JVY+WUhnZTJGTGJzPXlD
YVgyUUJvbCZJZlZTZG43fFlqUzdFT2xmQnwoVl91PGMqVgp6aURSPj5XS0dEbjB8VE5oZDNvYF5i
T3VMQnQ5ektmTmEkRGpfVTJUVUFWR2YoKHx5WClgOE57YVAzSF9oZGFyM1QKemZuPzViIWd9K25P
RUhAc2U2TmBxPFAjcTQ+I0Y3ZCpBJER8e2ApXjdPKHQ1ditXPSEkRXNWTTxYdkYteU40Z3ttCnpG
a1h+X09gM31PRHkrS1ZPKnJ5dzZNN0gjMj0ld2BueEJxd2BQKXthRFYjdUclaWltO180WiVrV283
fWQybXQpXgp6MUtXPSMoeipGO3xGZjUkOCRHWjw0Mn5vKkskPztyRzJDMDc2S3ZTcSZsZiUoUDI9
R0hLSmYjMUpPTEhAOCpaWnUKekwpd1k3KFB1d1VrSU9Fb0FVYjtkVHlWfTU8TCY8Ymp3akspWnhF
LVBId1AhM3ZsIVg1RV9PZkRASnVwPilue0ZYCnpoSTJvT2tOeHIpQGt7VW94MGBYZ3lZWGc3VkA4
ZSk7bkVXdVE4U31mTFdSNzNBU2ReOShxIVZNOXkhYS1jYjQmJQp6e2dDa1ljTFRkT0JpWSp+bTtV
dG16fTA4UXV5fFVRMEVkbnY9YVQjYTA1SjE8enZ6QUVFZipNPT8oYVlXZyp8UDMKek0xOU4zJTI3
JGVVUTxfKHN3d3AtRXYtTng2ZUlAWVJ8fEk3Nk9Afjc1Q3hCP1FXJVghKEtqP0NrTik4eWA4JUNy
CnpQbUNlVmhuTDk7YDJGJC0obXJ5IWtKejQ5TzBzKGZIM0FTWEl7UXN9WkhOaHhBY204MWA2bT1H
c0o7eTx2eWJMPwp6U3VNMTtVZHwycmE2KHhTbTgyYypfR3FAeGclez9+Qj5Eam48WHN+JXdNa0Fa
PVl9Q24+I05KO3R0XjNCbnl2LTYKelRsWlV6LV9CP2ZlYVhCVFAqKW5uKHVSdEgwLSo3UGhNbFky
ckYhQDg/bmYlcGY/KVh5I3FoalZjKnR7bkNuPWpVCnpwXjZmJGVEXytrP1FCRXVrdl40R1h0JDUy
XklVUHg2Nzx0S3c2PUhOWioyVlhXcTZ0VzBEcDQ7YDBCJlltcW9MSQp6U1VpIXpEN1NHWTBwWGYh
RX1fbEhCUFQrYCo8UkF0JWFGUTBiYXNyT3FjdSQwcFhxOzs9Pkg9JEMqcE1HcXlmc2oKel9gI1Ff
cH15ODlMaSVET0s8dUp9Rjc3PSlkX28qVlpAY25URyklOG1lRmpXYlp2NTgye3wqfUd1RWJNXmRV
NWp+Cnp3PERUVCtNOSpSdTE/SS0lYEcjTm1fMis1MzRifkVgc1BVYUZxPEhAcjx+Ynt2JSlPQG1T
Z0Z1cjFJfFgrZUtPPwp6ZnJiaHstdXRGQkU7eTBiJFRSOE9aNSFXb0pvIyN2RX1QeVFwQXtWUVNz
b2JkJmNReWBfQCFtMnQjM2VtPDF8IU4KeipQXjcxMWZOJWB1fGxFNjQ4dUx4VlVeMFR1T15PeGFG
fkUjNUlxOX03I3RvWj9hJFhCdDV+LWN1amxARlQqJD44CnpiMip1Wm93KTRCJHIqa0UwNTVIVyU/
SihzVkdxM3FaT1pfNlZQfEtmP041LXVQUTRKaCNtaTdiK2gxQiE/cFE8aQp6IVlqNkUhNnBHfl5q
KlUtcSRTZ2xmSUZHUDkxXmV3NV44cWp2WERvKXI4I31TK0Bsc0tWVGEkKjV3JlZEWXh4cDcKej9s
dFUjJUl7X2pEWTNjKihPaWxSI0lXemRqWXk1YGZ4bHUySmkkNnVWKHVRfWxeXnBse2VTQS0xNVUy
OUl2OytmCnptITBqczd3dXxTdEtLQ2B2SkopPFF3IykxMHtJZik0PHhpTkBCdDxlTkZXSSUqa0Na
bDI4O29sVmd0NXVtMkJEUwp6eV9lTlcrazVZYEpINmZpSXF4bFZYTGVRJT4tJmlkWWZaZyMlWF47
bG9LQ3tNPFNuWikpRz59cFZ2WnQ9c3BQNWYKejBHIUpEQkRtXmAoYlBGRzhockgmNFR1Wj0+akRC
ZDkwMCFiIWxeZH4hbShaSWtQb2krJms+RDNCZkByTyFTQEhFCnp2U1VZdGBpTiF8RmtFYU5NVVpS
MU4mOEMhWjMqOyQ/UDNTTV5UaV9pP3Y7Z0stUGpiXl5YSnBwX3h2VClFelFOOQp6ZjRmOys8TiQl
bzsmcEdzbWlLJT9gfE99cyF1T3MjaThJfSEhcFh5bkleN2dTVWV0fEBpQjNvcEp2ZVYkZ2RXI1kK
ejdeNlltcHc5U2M/a0VZcXAjNlFfa2pAYFJ6KWtkeSp2cCtPQj5lcj41SzZMUnEjWF40VW0pMiZS
fn5DP017bjBsCnpJJVhlI0ooPjJhLSFsPF9JQDN0LV45cW4jSz15TlAwWD10I2VnXjh5MCFnfl5i
eU9SKWgrY2wtRmZxOVJuUXZ8awp6a0J0ZGRGZ2B0bm5ZbWQ0X3o9e3dVSGIyO2xYTXN1NyFWdyEm
N0VZMnYtdUUtNyljPm0xWT45KWtnKXhiTVdrMW8KelhwSX40RGAwcnorbDYtS2pKIWYoan1hLWNp
S3FNPEc2Km9HQU5JPmhKfmx+QzskZiNWOX1ubTZfWExCbShlb21VCnpNTy1SQihlUEdmQnNfMS1D
e35uYWkldzFZSTdfT3tMVypWaCFUe1Ikb2tyQXE1aGlDNSUmdFhwN05vbEFpPzxUKQp6NXRKLVMz
SDVpWiMyX2lXU3UhN3VyWkBtX3ZRUT9PI2RWdSZhaGxlbV92e21FcWB8eyM1QjkkZjBRa2FsQyUp
K3EKek0qcDIxZVZoUXFEVzJRYEhWfXtqZlBzS3Q2R2M5QjZGQjVER35oOzBfbXJUOEJLRl5ROUk/
U0JJJEUwbWZSRFUwCnoybWtRU3RjMk1BbHtRV2UzS0dAKCE7ZkNZUTE9fH1jPChBS1MrX2BwbEhU
JnM/OylwbmtAKCNBelZ9Xj40RUUjRwp6VTtHY1dQS01GY0pCRn58T0Z9O1lQayM/YWRmRzVIKWBR
e2Y8cnBkNE1wVjxBSUhIPzBvcnV3bzY1VmU7am8/NzEKek5aRzl8d0JSM2FpKD5RUXM0eHFJQXha
Nyprcj17RD5BWHQ+ZmNTY3Z6cXF0fDAjMjUoK0tgPS1pXkFlazY4PUpACnp4bTx6PzBFVmopYGpp
VnNBMHJwNkFQQmR8Z1ZCaXpeYkhTVFdQRX52VjI7MiFzSDhaeyZOcmI9clRIUXluc3pFSgp6eTk2
LVVqZDxkZlkjaEFnZkVgTFQtNXV7bHRlfVk0Un0zcTEobHV3Qzl0MzctRW9CcF51PCpCI1MqQUFK
JXFLelMKemQzK29jVkN+PUgzKCN7YjNhdThvQl5aNSgwbCp1TSRqTF9ab3UkUUAkWl4/fVpvaF5G
dUxHd054OXohcmt0US10CnohKS04X3R1U1hUbGZSP2h0Q2FUJVRKbCNVNmhgSFNJIXNRSnNXdDE1
Jm9OWCEhWXBJP21QUDJFM3QrSk07UU1qbQp6KkRwWk0yakRjLW47IXJeYF5Ab0VLN1ZBNSVtNn4t
cUd6KVNwZkNVfl96KmVYVHM2aD9uUXBgLXZpPCNZQXo9I2UKejZya3dZb3Nje2VrUElmXyNKVD9x
TU9mNDVmY0Z7emZII31OZzB7MUxjPjNYayRqVyElP2hrQjY/ZG5AXyt4ITFwCnorfGEoaEp+VDht
aCs2KGwraXRfUkE5KWZ6cWY7MmBANWR9QF4xOz9+NyMhP15BP2stR1YtZFBhLVhjbV5NVmA5Qgp6
RDNXcF9sajk8dUE4dTxRTzZvX3AhLXspMDhnUzQwNyY0cF5YPz1NPyMwN1hoZU5VJEtpSip8bzd+
LSQxQXg8JjEKeio1Tj1OMn5BT1hDMzE0fFdVODwzT0h6eyVVWXx8MGBYKkt8R2RxaEJHN1Nic01s
ZGlzaWZPbC03KyotTWRCNVZ1CnpfQmshPihNYm0kZjJCLXJFWD1MTj4oOz1xYDM7QiFkPy0ofDNr
UGdXMlBTO0otNlQ5XkYxdUp1WENgS35XKnNjeAp6b1d7JFFlYmMxdmVGT3JGOUNxWEBBdzMzKSko
SD0kKmJrdWU1dih1REw8dVJXaH10aGVjailSdiozPTtxLXQjWT4KekxVN1dIaGAkdzUpQys2PTJI
RD8oU3A0NFRZYmY7cEB+M0ZNeU5ZdVdHfX53P01kSF48TnFQIzBWXzNldjA8IzJVCnp0PEM0fSRJ
MCg8SzdnN0teY1M7JDh4OD5TeEcjMGlVcjFhS3A3WlZ4JUVIZyNJa3I+VF9HZ09MLSQlQVRfdWMx
JQp6V0FDeGdnVUlRWkx8IT82eUQteT9gQFRkQUpJXmRAKFE3PGc4KT1FMVBhZWJKUzM5d0NWLVlA
aXt7dlhNP2Z2NUkKekMhVGwkQU5hcnJAVkQ9S0ZQNSVZaDNzWTk1SG1ZNCk3XzVGUX5OUjAteXU3
a00xaTNaVTQ/Z0hJPXZFeHBidWZ2CnpldiRUemg7KC0jNnEkcEsqdmd5TW5ERXxQMz4/WnVBUz87
WkE3MiF6MishOU5eVFQteTM0SjBzaHkpVURldnpHeAp6ZUE0PHdDMXR8MSYhSWxla3RuQWg+VD4j
JWUqYnpHNT5yO1hocnYpdEkwKllraFM1N1hofmJIRyV6MzxZT3xFdkcKek59YHFmYXxjUnJ0fll+
TktvQ2dGaFZpYnlmbj45YkRNUXVpUFdwMypRWWhCaUVZd1hUIzdsYFQrYWtkRTg0dWklCnpjKzBN
cyFsSH17NlJDRkNQQG5eVkVAQkwkV1MkejhSJCVvLTg3UncxNkFuamg7VUYkNyFiNEJtZXtnVWI/
Yn1hQAp6Rm09P15pQVpvcjBEIUBrQzJBWXVfWWQ+Nnp4cHFtT0xTZ19ebUhWSU13RVhVJn0hLWt6
emJZQi1ffjw5eThvK3AKekx5aVA2MUd1Plg7QiF3T0Ulaz9fZm12XlMjdmgraEw5U0I+S1o1YHg5
TiFAcGM9cjVYeC09JXt7RTQxX2tfcG1TCnpBRUtBYFl1U0hufDl8V0FNYXJuR1lkPEU9Zk1jcmxg
ditkZV5tcVYyKiE/UCZaPFg3eGVkYVR0ZnpMYUtNfUZ+Mwp6OU88Nk1za1I9PjRoYFZxZiRiUlhY
KDd9JVlsJVleViswOzQ2VjNpYkBid05NSyZBbUxlfVpOVVpkcSE+LWByeHQKekAreU9IMX5YN2VH
Nno9SmNfSUpeT3tkaHszYTZiUj8pY05FX15SS35VUT1JR19RaiNTPzdUZGJSbzVYbXpmaUQlCnp4
USNEcTNyK3hsbjNeN296b3h4K3tYbjI8RlNjI2pWS193JHByNj00X3JMJUtNQE5ZTF8oY2xybTlt
QkcpK29BJAp6VHpGenZuWTwybyt9TiU2MDJTM2x3UGhBcjxnfXFDKDwkO1JFPV9xY0xlemVCZWc8
NW1gaUJBYGJvbCYycChKbS0KeldVQUBBZyZlNzEwTl9xZlpYWDUrMWNXMXp3MD49MjJLfVdZbCs8
bFZicW9yaXBmenlqV0gtRUx4P3JNeE1Mb1RVCnpfPENUQFNxNCpqbk9xZUtUcGo/IzBUR1BSX21Q
PTdQeCNmfGdnR1FIV2VvKnI+S1k3clVpb3w+Oy1Oc2J8SUJyUgp6enpxZH1QeU8tZWRxfjRTQ0N+
WWowZX1VKnEjJXVHYzA/WSQhNyo0Iz8jan5BSXUxQVlld1hDVktSbzZ1KjMoM1AKekMkLXxBd3tP
a0J6eHtKUVhfQEh0OVRmZVJKPFc9PDJpdmdZY1BIQDMkdEZ9VVRfJE1rY2ZSdyNfYENRMjFFeCRG
CnpJTSsybzA1T0wxSkQpKisrZ1NuKm5eQHB4QnxKRGY5NzEyYTdjPD1BM1E9VSpHcUg3PDRSXjBL
Vk0oUHRkRGEoNQp6JmZaJTwrdl4xe2ZkU352ZmFLVFc1ZChnWT5tTT9TPlglbTRxSlQ4TmctZTFw
cF53RU1CVD85OzZ0Qkg1VTtzSm0KeiZQUEplUFF2entaVVRacU93WVE3eHAxWkxhJitZUHVhdSlf
IWJ6KiQ1NXVDQiFWRDBETUlhYUgqaUV1MEtmdXUoCnpMZDdNLTQwNT95RTNLVm9WalheLS1raHw7
TVU2a3RfT25eIzhWWSkkWitzVFJBfXArb1o3KWQybDlFakVJOF8qYwp6JENZKFhjK3F2VjloVDgp
Rit4NCZBMz1FYjU9PEYyRnl9MjV5JHxBUlBGZmZNKUpDY1YrO1NERD8wMytucEZeSCYKenV5ayEx
bnREZXRgTkMpRz1gM2F0Klp6TUkzJUg+R0BHcmtWQD1lbjZ8MmArQ3s+YTVZOVFHXkQ9a0M4VGQ5
ckl2CnpqPmAoXy16UVVsRzJAUzJ5KypvOEVyJD5yeSt7fHJDZ1IyKWVfc3klP3laXmRfXnZ8enN+
dWpGSGhIV3hAYmQzWgp6OzQ4bTdnIzZOQzV6NS1QY09Qb2pZIU0jVXNhWT5oS0wxO0VwRjBZUi02
O2d4TThaRWs5emsxKzRedT5RTz5raC0Kej5QbyFqX0h3SyRvdWtEIUVXKF9qdSVzbU9xKXk2N3U8
N1Q4YFNoPnA3bU1DK2ZWY29OZG09aVVsVjYwQXN2NmBMCno2YnBNbEw5aURQe2BycSVJelVQYDZS
cmFjKnJfSC1nOHArZFFEPVdZK0l4RjNHQkdaa2dxUGNGKSk+eVZXI1Jkdwp6TWRIckdsfHlGMGRy
MTBCU3xnTzBheT1MWElFa2wkMDNoRWNyYk1FTDcodV4zbjM0cjdifiV0bSpOaktIZDR7SVoKeil6
a3VpT19mTjE7JCkqNSgqOEB6dlNhe0ErU3A7cTMwYE5xQ3hNb0ptXmdNeDAzWmI+NXQ9IztxcTc5
JmtffmJMCnpscTVrbkItfkhrVioqNCZQQnNpcWhYdyVwJXQ9LX1qVnBgTVBvXz1KelRlKTEoZiFC
cCo4bCg/YE9VJVkxT1J0KQp6Pz5gdjs8Vi0rcnxIVSsjR3I0JU8mamdgcWQpdEs0PVUpPFl7KUdK
PkdhYDByQTdXRW8wc3dlPGUmeW9AKnRWVisKek1CczcmenpiRmBlaTVPVDZlIU1KLSVRcWctMlE+
QCFSQWNFb0lpdy1ES3xQTntUUGBHO25iX287bGwzY1U/eVFRCnpuZEdYJD8jPSpPSkVtYklvJURm
c3VmPk55djxZd0FSKlVHfDd9fTI9eig3fjBKbn52Zy1Be0p2Qj8mVnB5fkdxQAp6SCRkeGhZdFRn
bFI0czIlb3FXbj80S2FEWVoxZCs5bVl9cXo0JXp0eU50JDEwX2FfVXpfRlFkNzY4OHM0bEcxbn4K
endnNkNFMlElUWdkPiplNHkoN2JEPkY3WkI7Ml87WXxBS29tbl9gJnJTQDhKRjY/QVdtTFhlSHkt
YiFYYmclRnRKCnpqUjlhVzBZSVRtOT1Yb0IwMmhlYmh0IWZeLVBWfCVDSks4RCtAMHhjRjl1SEBM
OFBHdUQ2Sz0tQUhic0c0QWhxcgp6MHw+YC1gYUAxUzt7MjZVVTZiKEF6SFF3anFUdlZFYng1SUVn
dlhBT3todEdLYDZqK0lAb091dFp6Nzs0ZkJ+SjQKemk2PStyPUZva09MUGBwNkApQk9lclNVfFNG
Q08wVU53aCF0MVlSZFV6enFkfTVCfTt2M2tpSnZvSEY7MT5pfWo1CnozXiktZWtKQnliMCNBfHMq
M350SWEzQkpjKG4/dmh7MSNvTkIobmVhS3luWH5ATE5QWiNlLWloTXBjPHJYeFdzVAp6QiRzYnc3
TCszYHN7bTYmOXFAYW08el5ZV0VmeChVSipOY1F7X2VZXjJePClob0QrPmVgPXxZQUkmfTwzcE1G
JWQKendYJXJ2T2JPQEMld21pX15NKnw7QFVeZUw0WSQzaVVoYUdFX0c0eWo1SXR1T1Zge2l4SUh7
QmFOeDAjOWBZJERFCnpmeik5Pl58MylZQ3hoLWFoKmlOaGVAMXBMRChWfU5NPEJxTmRfczZOcGBJ
YEpRaTlOQDApUUs5Q2F+cm85Mj4pIwp6T0JjeGA9b2ljQClnSShBLTcmbXl1IXNhTTgrS2FqaEs1
XlVTaEpETkp2OHJVKig5anFwJkpnSDtAbVQwZkVZbU0Kem9MPnl8UTExd0BmPmx9UnUhK3ZVcXtN
ZmUhRUVuJiNQYVBodGgtYkFDPmx1a3RNYiFETFlGRnRFY19nPEtHUVhVCnpYKTw0fUpsZF55T2xr
NkE2aUk1fjtscloyaW4oRzdlWmQqYDFMKVI0IWVmPTgobHoxeTJ1b1M5KHJHRX5QbSN4JQp6I1pY
PkZ6PjtPaGkzN1g4aDJ9QEBOMWA5IzxeekR3SmJnVEVlOUF4Tl5AcHNZK0sqPyFsWW1WUiZMRXVP
S3NKWUwKej16QC1vJW5CZWRER2ZobWBZJHxHOz0pOFA1Ji14bklOPW1fbipsJW5NayVyfk9iY1dI
TjwhbWo9MnV8Sm1Vb2hYCno3Wlppd019Sz1yR2x2c0VLeDY+WV5FKkhNMnomKz9kUGIlJk5XJEZO
SDs3ayVeI0h0NjxIUVc/MiN+MzleYnBTbgp6dTtJVnw7fnNxT15LWFhIVkY5QElUeVlaM08kPyM/
Pj04UCpVWHNncl9adnlDXl49KV5PYVZrSFo5LVB4eWVJKjUKemZ+Sn1XRjtSK15OeTEtTHdGcEoh
UlJtUF94SXBXKnlZfkEhMG9ROz9DO1NQJnlPNWNuUjF8OHohX1NmYz1QSCg1CnpGaHFqYy0tb2o7
RSRBQj42cEAyZS0/VW55WHp4JFEofGIkN1l1IXsoNGEzR2UkUS1hRCojcGJ+UCklQzIleFJPOAp6
a2QjY3BYMTVwOSFMYWM1XkFieFYhQyNoezF9bThXR2xQPzgtUE1Hc2V+M1ZTNUpwLXZ2OXY1S0RO
UlJaZXVmcVcKelVgSFZ7KlJ2JTJ0aVVXKlZ1VjkoN2BUMn5YKU1FWTVXXz5xTHxaZy1eO1Ffeyot
Q3BmTWFZdnB8TUFOfj8tNFVICnpObTFBclJjSjVpe1EkaHFeMnNjNShjaUlTI356RUZkZjx5bCVt
dWheN0k0RD07UXVeIWFJd2MxWVVPZllQNkZ+TQp6ZUU9czxiczxvZUZJc2pSUjBtKkd2SDdENHtU
QmVCalFWY2JFazthblJ6T3Z1Um4tNWRJZ1FGUip1OyQmclpZMVMKendRSnNsaXBFPlNIUyRkTjxI
RWtERmZxXj9aeDYwfm1aeztvY1loTjtUUjgjMUIhPGFNKzRJIW5YZyN6TyZJfWopCnp6OTxndkFI
KDhCbUg2YyZBSGs7RW13OzUzSlAxXmA7TzhiciZ+dUlmcGore0JMcWBEZ19JP1U7QWVFbVckdUUh
JAp6QiltRCZHZi1Tdmk9djgzSTl3U30hRVp0UGV1M0FkNmFxZmEyY1FSJFJJSzFTJW1rMG1oeFJA
SzBiJjl9VzIwbm0Kek45SFg/U15GOUEqcDVtfWN9eFEyNEJPclhXVis8I3Vsb3MzKXZoN2l6QVZr
QW1GI2pEJl9uQyMhaS1tIzB0XmhMCnojMUpALXp7cV9DNF8oNGdRJFBMZ0IlOzF7Vmk7UnR0WHFL
PDw+QEZPaFJWQlBDTldOUXpxdjspNTliMFh6N0VFfAp6REgxem45akV7Pk5UendqMTlSMUZGcipq
Qmo9Oyt+fEowNHZ4cnhqbk17T21ISG1sZ2JvJmhqJFdufGNwVSFJTW8Kej04TDxnX2s4X2hOWXdy
fTl7X3lkay1iflZ7eSFqXmVSeVIwJihuNkBoZ3VMUSYwe1oqTmItQFh6TX1RbjJmJGpECnpBOUot
SDVCX01+cVg5cmVnJD57UWQ/N0pgYDJZfGo+U1N9Y1BgJmJ2czl2IVJXfiZRbyNyan58MzB5ay1K
T1o5Ngp6UTM5O28wWjRSJU80an0oakZvUmk/PkszTHdsPSk+PT4yNT1NbnJuKj9tZVM7XktHbH1g
YD4qVXh1clJAWVEwTTgKelpkXzNLMCh6IUsoUj1PfnJVclYxWGAjZzRsI2w0YHt6TmNIZD49YURR
YStRPzt+eF9oZHhhRz5ENStWREc+I3VACnpYMkw+KGVIRnIqLX5gbT0yU35CMmB1Pz89M0gte08k
QWl8TVplandMTHxzOTBoPiN5eSVyVSVycTV3eCliSUErewp6IT9eaXZGeXN+P1c7ZXUjZF9lWEFF
RnNOYT82aXU8PmMkezJPQGk3cz5sMT8xbkNWMG9mazQwKUs9WD95NSNyPnUKeiRkfntDRFoydTtF
cE5tNng7JkFyIykpZFpCWGo1KWJfOytKZWdGNzM9e3A4YE8qPT0/ODs7aEBARn5SbnFjQihBCnoz
TTFfYzV1S3dtSVVLMHxELVMoQFZSeztfaEg5QTgpOHd3cm5pRHwmaGEmLXspajRTRz5nZ0pLPjVF
KHg8VkQ7RQp6YU5UQ1c0RmlEcEotcXVwZm5layplVyN4fTktP2B5OWJ2bC1EOWh0XkR2M2ZMaTll
UXllZytVfUJMRTBZQlMzYzYKenR0LSsqMmB+KGEze1ZvU3ApRHdEKm9lakotdlYxMihKIXJAJVNm
aCU3aFB4ZnB5Jkw0MU9weTlGXjBidkB4eFpJCno5T2hPM08xOGZiTV8mOGBFKipGWVIhMTVSP1Zy
SGljV2xKKHtgZVUoMSswKn5LMUh4JjNCdD1ILVp3TGV6TlFuSAp6P0NUXmQ4UGE4cEJuIVd1ZXlk
YGoqWWU0KUE/WjdPb0BRal83b3gwdzhNMVFvPHJaaTI9elRJMVB8U3VAbnRtYUYKenohaVpjQHBI
KylFblYoK2wjUmkzWDRXa0w7OVA0ZlcoZzNJUTxPTztwcnRQelBtdmo1cUJVKz52SShlSkw3RiY8
CnpzS2N5dk9KSUdsRUdyRnBjRlZqJDlfKyNtQz05XkNwK2xub3FuRzs4elcwSn5APHhMcjFPUSEj
bmUxQGd7d3szVQp6KVFFfHhJZGwtcz1lRzV0OyF2JVlWIytgNmZuaEc3JkduTntDUG5+bzhacGw+
JTtnKGslJihQO2YpPXY8SDM/KXUKenE0T1JhTHFfOHdTbzU7dUdaUEgpWmoxYyRSckxrdj5LX2Jz
Sl5kTj5HSUEqSjxeX092fEw4UigxU29nPTUmaXgrCnpefHlIZDdAOV9HWkxSRDxXbm91cnw5Sm9x
Qm1pak5EO05OYD1pSXRINFBYOTV6VUNSI3R9QV5mcj0kanIrdW5tTAp6dko+T3x3JHhLSiFhcH5U
KT8rVWI4I296SE89VClhcEIqZHZLYlVqWVY5emhWRSRzTy1yQGRJIXhFTVFqe2Z9dFgKekNsTEBP
KnZMQVlvY0hkWm95SWAoTnNSWmo1IWkmMUQoZ30/e316NU5mJHI7cExYdG41bU88M054Km1tOUg2
cXR2Cnppc14ocExITG1iMz0wVktsfn09by1faVJHbDdSeVhvNnZuZSkkYlZPaU4yZzlibj9PbEc2
e087ZyRHNER3NGUjVQp6ZEFSfnBVSjE2YzIxSGxoaEtoN0VHT2BARk5QLSVvWW1qQyhWTzNzK1h4
QD9CeXB1UGg7dTg9cVZ6VXQheDFZanYKei0jQVBmMFFBcmlNY2BiMjd0JDZyVnNnU1EmTzQjZ0Z5
Q3g4VGdOPGR4dnpHUTRaX30haiRBLSZaVjJYKjx1RGYzCnppYFV8WnE5Si1CMEJ+YSgoKkR4S0k5
eX1gcT9IJWFkWDZVZzBUaENfaHliOHhjbnF5aWVxdE5GSSozSCFQY0BZNAp6aXJXblhmVlk0RG03
bitua3gkTWs/WXsqQjtLSDkjSCFPUmI1bkVQP1NTYmxKX3VXJjRVSVQpZDIjQGpXazxKNTwKej0l
Tk0pfDVFX34tejJsZWluP2BvcWh8RlI8KF93bEJeYH0/NnttKlVhcS1aZkYqRFl1VTB8eSpqRDBP
UjItbXl+Cno5UzQ0a3JuM19tPTsqO21aX1VSOEZGIzJkIVlRfTlVVnNKKkMkNHU2QmR1cEsoczI8
WEdGdnBDdnFzKyQ3YmYrdwp6UFROY0s3UkcjWWYmYShubk98MGdWeHM9OCVxO0NZUWM1QWJ2WV5r
YD96JX1yJCQwP1VhcUU2QkNFSGx3eEFoQE8KentxPSpLRVkjbEhnRUpTSzJARk9OPGhaIWI2dExU
KF98dlgzVHBYfiRtUXc9YmhQJHoobHo9ZVBmaVloWTFONnU3CnpmNmZqfUNIKHIwYjAqeHdsZWo/
aVV0b31sJEdpX0I+Z1M7eDV1a2gtKiRKRDRRJTx9NytBPDx4Qn1RT3kyamdhKgp6VmdqJV5YJjQo
c1dWUSNVeWklQ1VSdGluN0ZZbElnfElyU1UwYnFPIygmUUFKNn4pTH1UcEBmcD5pU2UhME48O00K
ej5SZ1A+JSViVj5mNHpnYG9leCt3MUZxVy1hS2l4THVLUlohQXBxRGtyfGJYazJ9QlReNFp3MSFT
ekwoZHMjP0NnCnpxVmIqVDB9eEByYTc8QysyMUw2TEE/N0J7MFB7UW1rZCghbVEmTnAoeEJlfE1A
KyMkPG1+dTBVbzdDNUc5UEtBfAp6NUY/bHR6NDVJVTFHOypCY3g7eXdGQHB5fj9LNDx5eU5JZDU4
R1AqUHBUYStWP09VfFZzUmF7amdpQGRkSmw1SGEKejtrTlMjZGdrSWtzZkdDVDAqYHMtS3FCMnc/
KSlQUURwVU9vcVdvb2JPT1ooP2ZLaFFxI2YzRn5UdnhRbTdaQjJUCnpMXyRwdyk7fmA1OXJedWhg
YVMofExMTk5BLT1DJUhjQ28heG07K297czI1e1MzT2FFcTghdzs4Z35kcilwNnY5TQp6XzJxQ188
Uzl8QWxsQEE8JmxgOCM+RFlHeGdYZW9pSVdHKFowUkEyVmZuaXg3KHNOK2teb3w1U2p3VUpHPDZ9
QT8KekQ9OCRzUHVrdXZIajBTNWl2WFlpbWh6UUsrakp6e1B1KHEjdWFWJnFOVjlYVzdpMSVFKW5h
KlpZazI/JFdwMElwCnpeMiUmWGRIZ3V9dEl5dyEqbXhJaVcmbjhPd19oUnYyeWFxLTBRfjA8TW4j
SnheTztUPE11XygwV2deeTRDNkF2SAp6LTdnXm5mV2lXfTJXXzxmMVklUkkxT09JbkJMTWk0OXNz
ejIkWXd8RitCY0l+Y3BGaFdKTFlTRHtib2NzSUVTfDUKekpKOCNGU2hORDtzeEJAO3tvWEd8dkho
P1ktQFVnUzhQTzVeez5PKTVjaThhWT9xXlc5Vy1BQG52O1pWMkE/eV9zCnp2QCNrQVZ6UmRiITxX
dG9iMEFUTzxKdlFJRWBVeCRzS1RzWUZwN1pLb2xYPX5FaDZlKTJkbXdvdiNUWVkpfFBheQp6QlN8
bipjPSorRyhWSTYzJXBtRSNoMEs3Mj89QUVAbWpNSn0zUGRuQUllfDBITypyNCRmJmlPYzNKWUxJ
O0stQzYKems4TGojbTNGUk0tK3tHajg7Q0ozMW9qS3VlWSkzeUlYfSlsZHJiNys3dX1CJTBEeFBs
VFZZdnlIPUB+RHhAIVp1CnpFWklsdiNUJHt3R2JZPyljfGpVUiN9Uz9GaEIzPHBUaCR1YjQ0TWI+
PlFqWHxrTz5zKUEwI3VFUihNN2xOO1dUcAp6K040SG5kTHJDQjY3bVooNUZ9PURfXz8yZDU8YDE7
QXh7MFRKMGErWDBsP1AoZDcrO0dwaUopczxQSW43a1RFcUEKejFAOWV8Rjk0eGx0ZzF4VGBlOEsq
TkM1IXUxdSVMTShYazd7M0FrbGg4dmd5MGRIeyRidEZRe29afnVEe2AmVExUCno8dV4wdHJ1eFZm
Y247JmVtcWZPcCluWXtkTkVsNW0wbz9QWk9yOVQkbW1XV2VMd2tGJF8wRHk7Wn5GXiF0NyRPOwp6
REBvaChCZUwwTU18dkBRQGlnV3BNJilwdmNDIS1gZU5xRGg1YHs9eEI/P1daZ18+RGRqRlE/Vk5O
Mn5OIThvN2wKenI9Oz9fPzduJEkyd1lZJF49dTtMPz0wbHRpJFJUNiU9P2B5RmF5cEg9cGEreiRm
QEhaR15tYkRWP1JKM1dXdGxMCnptU007WjxaUVZJPiRrMiRFRXI1I3M9THN9OG8mRV5DO2hkUElp
LSQ4R3dBPzhac19WKk9uX2dxMnRqakgrcCNHdQp6IVF1QG9yeTlATWtVP0ZeSTJ7PjdiWiFzXm1s
NGp8NFR3aW8pWE5pSm84bG9TbDlBdj94X2YwKW1lX0V+PUF8JiUKejxRUypnY1RpP0hUeWt6ZVgw
e0R5Y1Jne2h1a0ZSPmFXZXpKcnZIM1M1Kj5lKUVJPVJHYG13TWFkcENCRXp7ckNUCnpuWnxPOXJz
NnpFTUZvTiNofHIpZzJjcShZb2dHNGlTVWB7I1FBMzRZUjA0OEJQKmx1YEdvZlBYRW9kT2hYMHwk
VQp6ZEZgKW12aFdPZG9rUSFmN3ZZXjU2UExrNDN4Yj1zYStlYDR0ZUt0bTtgYX17Zn12cVF6Vnpe
YTtoaTc8SH5RUzkKej8oVjR6N3leeGFRe3h6RklTdXp2RkVOWF9XfEVTR0o9SlNjKG1vVCswczct
cTwpVEZtJFM8I15eUnorcHZ8cDhtCnp6bD5tQ0J+PyVER2Ywc15jb31lNkZtRktUUTAxPzw9aUU1
bWJPel5JRXtnc0YhWEQ9OE9IJk5iQTF1YiU5dmlZJgp6LSt9ZGFZPWJFbHo5UVVmY2ImOTlZeUdu
P288K2RwbS19PUlBQXx7RV9lSTEpNlFiYVoyYm5xLVpHXjNDRE1BR0oKejVneml3QTs2RzRSOF44
b0g4blA7IThOfShHJUNgPDRIPHh8Y0Fie215YFVkfWRxXy05QlFpODFfUkhvOz5FPWRRCnopMUJI
e1FCNDNRRD8+QVdxYDluXj5OdDQrI0t+WCVMaXVVNkZ6Qzd9MTgqMXJ0b19PfTUoflpSMH14WXJx
SF52Iwp6NEB4diQ9dkpvVTgwMXspb0o+ZVd5OX4tYUhGPlVGT2U5bDt5WjBoUUdgcChNaFZPcDQ3
KjI7bFIyQUJzPX4lTXEKejkrWXV0RDFMZGJXO3F9ZEB9Y3x1S0ordmxLKiZGKiVNWHdATjE2PyVf
RmNtQmp+KylzU3E+Z1BAKyRKbllMVmI8Cnopb0pTeEUhQCR6XkpFSU5CTjdaR2opX3JkdmM2eHg2
cTZGKUhfVSVjUW5Xd0ArNUR2cUU4eG5gUmFjdSUmfjtgPgp6ZzB8SXY/ckg9WU5rWGs7VkBncFoz
dzdNUHVsdjJyRzdJJmJecHNkaUdDJDxXS01edl5gVWQtUHtPbD1vXj52ZGUKejVFTl5+WF5VZTJ4
amVqZkhVbnZrKkpKZnZjT3VobmoxTn01IXAxNHhKP0h3K2Q3QGklN1NeVURsU3ZWdEpWJEl8CnpM
WU09UjZvUnZBOVVMYGxBJSo7TW17RWUoOyFNJkR6aD0oS1p1O29KMm0helpuRSp4dGZZbXluKW07
VzxDJktiRQp6bi1UMnBMdTdoWkhaaDIwbVRnKUJDei19bEc/cmlqYUk9IVpESWJGTGRTSy0yRkpA
MnV7QztJYFVmbXlXSHdPVCQKel9fd0R0MEFUdmh7bXFPQHkwM3hyez9EfF9XM0lVY2o3YkBpO2Mh
NG9iSU1uV3dKMndZYW9AUFVWK2dzMiMyfTdHCnp6RkNHMG1xfUM9VykpT29gS3w5R2RkIzd9WWJf
NXBBPmZAeCRFbHNAemojQ3pIZUlTUFlhT2x7ZUQ7dyZJQ1gzZwp6QEJZdnxffG1WcUUzK1QtZnJj
MGZFdFd9Yzd1TUQhcTVfJjFKSzZTRVM1Ym1MS3ZeTUIoe2x9KWZTYXYkPFg2X0IKenV4MnFXVnEw
OGp1UXFwb0EmczZ3bFY0U0tVeTllUiRWMylNTmx4dXAxdzVXdlR4ZTs9bkcwdHpIWmRzKmlMQi1y
CnorNlA+Q1deVyMlTU44NTYqMUoodjsxb1JAdWUyR0pETUZgcmt9MnM0JGYzUGh7RnVVSHJ5Jkpy
MU90ZGtlbUZ+NAp6QS0hPnt4VGgpKiQ4VldWXkdqK2A3bEFPWDwjNnZIVipYaGV2clJ+XlU5SiV1
alJ6enc4LXJrcXs8ZCFWP1UxfD0KemRiTW1yMTJRWX0+QWglekFBcEM9M3tDbmxHVUowWmFxYnNe
MyVeUFJmYT9rYy1ZQGBJXjBffXFvSWxOM2ZaWD9BCnpqYDImZlJfN01eJXs/JTxKd29Xa1dFIShQ
c3RXdXNnTSNRMTZvbi0jMUNoWmRgMSgpNVlfI0t0VW5AZ1pzYTEzbQp6RHFnZS1PU2lyWXdsdm1e
KjlyaH5lISRGVjduJTx+MU5WNDtkfnpea25yPGJuITd+UGJiS2dzRiZ4RztxWENKfHEKemNsPHh9
PykxRVV1fEh5VmJPNTYqWEdJO3N5aWowKmtTRCpGWCFweDYlZTR5NSV4bzBaSDZvKzE3eldpOUV0
dTJRCnozODx0T2JlJCVLQCpESG1mLTJQNDFPIyFSbW9CJCZ7cjhqM0t+aTZYQjxUNkhkbENuYUFJ
NzswQiglWVJTUT1peAp6M0JQezYxaXJrTCRoK2xNdGdnK2BYSS1iPGMpIzNWenZLSj54fClXQnNU
VCk5aF9jPHRASlo3NFpwOCEkIT9rRHcKelk0RWlLMDBIJjFib1R8P3taYnZZcUh6WlNLJlhxJXpr
bmE2OTFBaVJIX35heGsxbD9UPF44WjxDcDB3IVV1VkNQCnolcTVCREFMU2VDaytZfm8+YCR5TChJ
KHZ9MEhBTiZnSkVJO2hQbG9pZnp2PHdFYVpZOVVYMGZyM0FrWVpRMllOcgp6QUBTZiRaVW4rKnpY
cjkmS1ByMzk0Z0YmPGJgSnhZV0g0RStWa3tNT0FpIzc7Rz5qeUdoKShya3cmXnUrcFYrVGAKengm
JkwrcWBARElwPSFtZ1NpSXBhRnFzez1Je1FDKUdsfndiejBGNjYzQX5ETSg1dWBHYkBBfXpVbUZo
WklFeHA1CnpjTTcjaiVraChneVdxO29xanYpSF9VM21fVlZvR2kldXRgRT1ATUBJZzhsJHlzVjMy
SjZGMm9OdHZ+XjNmMUFANAp6KlV+QTRAcDJoYCZeaEk8QWs8ZjdfZz9gLWFFKDMmJGk1K04rek1p
T0EpPl5HX01PRHV5JDNOOTc9dDZ6dFdETl8Kej8xZkBYSjY2S0RZIWo5YzBGKV9YKiVzUV5je31H
MDtPeE9KKFNURGMheGV3cmJrOWMkPTlzQUZsS34peCVxNiN3Cno4TCQrd1AqNnduKWwqTT1FYyph
UzBub2shcXxJYUQ1WGB3WTApVTFEPm5ISkVMb2ktJU07fTVIKUFYfSklUXA2Rgp6UlMqRT1IPFp6
RE4xJWBreGRBRG1WJnsrPjZTSzdMPTZaSnBQSlJFQXhTMFc8QClOJWs0MWo5XjxSbCpAKEAjfEsK
ejVkY2lqIVB3amR4WThoSFdYTDd9MUF5NWlZVFd0OEB4VGNsbHdjKExhTyhKckBjRjBrRlloVkFL
ZkUmPUtEcktkCno+K2VTTyVHKlRlcHo4d3dhVkxsIyZZfG48WlZhQFhBcDZ9ZmdNaCpXbV9HNmlf
YGAhUTtvUjlWZUU4bEU7fWlFaQp6Z2o2aG16c3FMOFdMRiNBJSNlRTViK2xpbF9pQzEkZXNTcnZ3
c0s/YXRfPFhwQE1qZzNpUEdPPiFJUzAqOSZqYlEKenxNQ0wqN2k5TmMmRntfb29TZ0crUFAyPWVf
PnNPNT9Bdik5ZHRXKDxfTGMhVWYxdDQxaitgPChuTGoybV80dVh6Cnp4b0RZTDBtc19nVlE/Qztw
fE1ERz0heHBgfEZ0YCEleE9HI1ZnTXQ5WlpWPT1xeTlwM2xMR0tmQmhyNlZ1SDU3Mgp6KElfJC1I
ekI9eElobjBOanBpcCV7djwjVUV4aTNmXyUzekk0TztULSRabmBkLTFubnclNl4yZSF8UjhlKk1C
VHQKent9Mmc7UGAwaVhXb3pyaWAwISpDcHJ2O1RsYm5QISpSdn5kPF9EaXVfVWNzQDxJTSNDI1VK
fCgwZjZsTUdpcGdiCnpre3NeaVlzUFdkbUw1QDJCXjRDVllQU216VUBnRkh4QTxSXmpzPmB6X0c3
WnxFWihzSWszZXcwdHE1UUtMPWlsRwp6disofHhIKk4mM05DZEJSMj8ma2RCamBCIURuYDFfWCpX
c1R0SWNqamZCUF9nX3F+X0pUKjRwamVnO2M2eXBpNTwKekMrdFV4TSZLVWwkOVZmaTFiclN8Kktl
SSpzZiRKdmJpSmJ9P2chdnsxeV9DJVk1I2dTdiRCPEptIXQlcGc9bG9MCnpjQFJxeUpTLSVqU0sm
eForR20yUHAjSFhZNDcmNEhVSzN0QGRUd151I0s2cGAqTjBPXyZTVEZAaGpJTWk4QkMxJQp6TUY1
RDA3cElkZ3k9WmsyR0skemE3JERzYyFUd1dPSTZTWnAxJDZ6I05rZit1eFVoMEBmanF1Rlgka1B5
dypLQn0KenZeRVdFJXVaNXxOZUNgIXtKQnY/ZEpmQ09URSokY2toQTwyeEdFWSVVNURPVzZEYERt
Z2l2NWlTdTJxbDU0YE8/Cnowc3QpZTQmKkdVN3VWRHZEVUNAWHc/IThsb3d1aUo1V2I7dFNeRiNa
b30mfk0+KzRYbFA2aHlWZDh6PCNyZ2ZBUQp6RGdvNzhIdnp6ZDM7LU4yPFM0KysyTFNtV3s8U2F4
QjBTa1E1PnRvU0RAaV53e1c1aDgwMjVPe1J1LWhmTGVhbFgKeilCRnFxM0tPdXtaM3NeZHFVWWVW
U2gqK3pfeClTQnNFQXY8PV5tNlVVVz5tQjBPRlRuYTxCfi00P1BkaCUkT0xjCnpxMGgjJDUodztu
e3k0Vig7UzR0MXdnTH5seGBXdD5IU3V+JmlXJCZ4TiUjU3puOWVyVklrXiZUZWZlNVFZVzskOwp6
TlYpVmlyPWw5ITYqV3EmZX5PVHZ3MiZ8X1B+Vj5fZ3MwYztSflpnV2VsNXtvdXk5Uis9JldTNTIk
blpXdyhvKEwKejRgYzg0MThCZTAzJElzTGc1cW9XclJpOV9zcz45cClXZT0+TFFtSHZPcEZlYnJW
cnA7WVpfai1hMHwrfSt5UEd7CnpmQHh3N3dkTDdwc0xsfTtxQUhsT0BYciRVS1l3YX5PaSsxcEd4
dlJ6bG56WWRVIXhma25VfDNzVmdQMkZjQ1loUgp6LXdIPXpnLThAaihEPSRkT1pFd3tLbkYqcztP
KiljJnVzKXNJZ05Ha09RanxiM0N1QilfNzdsK3c3PkI1PnZ8MWAKemlBN1h4czYhPk9mTiZ0SjlG
Tj8+anYzQ2BPSmliK21OZVZCRHslSGxfYk9qaGktTjh6N3ZQMmdLO31PX0l1e0I/CnpVMip5IWxp
UGVMVjhGI2JoSDxpZ2BpRiQoSCYmRnZvYkRuSmtRNHhyd1o4eGFwMGlIJHVWPzNUTlE7ZihgKExq
YAp6V215SmwqMWE3aWIqfjJpJGRgaGZkMnEjR0g/ZlVxRmVvQWNOKUtPZzk2WGNtY2xaQXA3Y1dp
V15ZPyFkZkFAdnwKemZ0RE1mPj8wYmFuPil9QV9ZZl90ZlgreyM0K0FEZTJJM0l7TiVJdnJHUDg7
UCpDUmNAUCEzVUUmaStwK2M9M0l1Cno2elVZOHoyZiYwS0RUaCVhSDUkSTZaIVdialVSVDtxV1Eh
SHkhUU1hOU4le3VMaiFaZD5mPUxxV2YpT2hSZnZeYQp6bSFmV0U0WUNXZU5PP3J5Q3VIZEY/WjUj
Mk1aPDElNGNQR1h1fmpJKHtYTEBqI3NvMSlwNWswciRzbXZtSEVudSYKeitKfk9qYXJuNCYqQ2Zh
OCp+dW07dDw9UTdKWkVDfkJCSH5XI05id2ItQUpITnU+SzlPPU0tcjk5R2JIYU5DRWA7Cnp1Q1cm
UGJQdkhsRmR8LWVScGNZUHpEbnVPZlEwWXlYUSRmdztVQWxVIUVCME9KOWJDLUwjVzxSaXxUYlgy
blFwWQp6M0JWeWhFfmhgK0dBYkozTk9RZlh7YiM9YVFEdFNfb0ItZl98MDc0Rk5Oa2ZxWTVOVm02
SHVATHU3ZUszKndyZzEKejBKKXM3RlJHTFUtZWdFJTBCak9pb29TZUVKQk9hKnVpKDMxc0tiXkcx
Kmxse1JzdylFY3pwblhIIX1qPk5wemxtCnpqWkE/SHEpfGUwV0koeHJjQmMpVSYzKlhJe29DUDRQ
czJrOFVxblNjMUNTZVAhNFhGVEptYUk3Pyhhcm0mWWVLLQp6Nk5PJTk0an1Pe1FALT9xViZvQTMq
d1p1T0RAYS0oVSo4WipQNGk8NTI9ckJIYGsybXFRTG45emgzSD80Jkh0XyMKeko7dSF+aDxUNTlf
VGtfdzJlRSgwTDBtbDNCRDZqR15mOyN9R3VNRzc+Kn4/Q1paVGNVUWRrSHFjci1RLWg+PiZQCnpX
MD5USUUxajIhbkdJdWorJn09WjlOQWt3Syp9TzI5RHc2UW9kZmlwI1pAX3xEJFRfM0BFcGJsWFRf
amRTQFgtcwp6QzVETl9wZ0hwUk4oWn03NXhlWGNgMmVFJmtCKyVgPERJYSRHSzQ9TWUhQz55WlAw
LU0wfWswTT8mZU1lIy1fI1IKeig8PShlMWdNbVUtS3dqVEs0JkM+X2Y1PVZxSFNRbEBVYU8lMDhx
MkI3QiVaQDFPcmViUVhJTE1uRHBadTBSWFNaCnptflVqamNqRFZUQTMqSTJxJVJHPUlSTD0lP3VT
cCZLV2xeeUIkfDlHKUwqVW9RKykhMm5nK0w5d3piUGtVQDZSbAp6LUQ9UlpLbVdeVm4+XkNXQWNi
K31QZnlAT1o/KWlLfDUkXkhtM1AwNjM/UDB2KyspNHlJUTFHUGhyMUYmZ1VyV3gKeiNeNVd6K2xR
QipZcjxSS19lT21FNF5QcHtBP1RmdUErSEJCMUhHNz03ISU8Zld4NDJ0T3RtMUJmSSMoIzZZeW8x
Cno1JmZAUkJ4KVRscnxCMUxgZ3ZKbFB0cEIxbEBsLShxcXhqKCRUP2prXyUxdFEoezN+IUpCUXNi
PyFtRiRNPXsoeAp6cWk4YzgpKFRXQ0YyJUJxT0hqOVo1d2kyTSNRQkdWO1cpMTc/dWZAYml+Z1Fn
ajFHMlVYMnlARmo7QDQjO3xGMGoKeiRTdD9IbTtiQzc9UG5gTFBKJkV+S3BwS1ojVXlTMXFGP30k
NmJBdE1eRVU1QyM2SyVvbUtkeUp4MTtqKng2KlU3CnpGczFhR1VPUWR3OT9CYmtafFluLSFtfVJu
SUQydDl2Z151NGdBKX1qeGJBPSUmRklCbWduYzF9VD58PE80aU55PAp6WkNyIyEzSU0zKHomdGpz
dDhXXzMjQXZNQyZmR2daOzUrJjRkejchSzBCfko+MGQ1IW9xfV9Ka2JFTkk+ayNhTC0KejRYK0Js
bWhVZStORE1ReHp8Z1NWUj49Xj07eH0hO2wtfiVPUyZFd2czSn09Um9XdVoqQllXWmk5e1NFSWwm
YG9HCno8JkIkUmMtO1UleGc+UHNNfHpxP1hmUUIwRXRoTzZ6cmZSNmdXZSMxXlBRKkEtUlp7SGV0
a2RnYHJ4T09kbXdMbwp6PEdxdlBXQ2pjJSNMWFRPczZYUHUxNkE8RkJoN1pWJj8zeU9zenJLSHV+
Pi1uJnV3OExPZjFOYFR5RnE9OGxQU3gKej18Zy04RUNXYWxCOWl0ITV2Sm53Ulc5Z1paTkdDcl9Q
PytqN2Z4SjROYT5HYUNTOEA0PVJtYG4jYU96ajBhWG5aCnpeY3JqWHU7PlhPP0JqJm5waWJqNEFS
R3h8WV5XYy1VQ28lQzhPTldGRVFlfEJNYDFDQjw2JHtUOXV5Tih3NX0lUAp6dkFEcD8zP1Eha2RE
UGhLZyMqTUMhbEdkU2Y3aWlIUj0zPWRyMEcrSHs/dSM1ZzYjYG47IUdRdmU8OFZsLXx9aT8Keilv
PzY3c3lpMTZWe09DNDQmOHpZQnB7dmdtO3FxJXJkcmdrdU5HailuXjc1Sy1iQzhKcElEOEJ1MzV9
R0d+aGUrCnp6b2BKPW52O1FVb0MpeWVAODQkfXAxd0Mkbyk2TEFGQjtXMzBifXdnYUpCWS1YYjU0
Q0E2MW8ze1A8X0AjdXQ4Zwp6M0VyQG8ldGt7MzBCfH5JaTBFR0xfVFM+WiYqdEZgP3xjVko4bnox
aGNLdTwlUkdVZTM1I294JHsrOG4rd1UtZkcKenk9Qz9eSjZjYjU7UEx4a0w9bTBlTHgqMlFQRW5P
fD9kM312X1c5cio5KXgjZExVYW1fdmpBWWVMb28zKmR3TSFACnp0ODN4TiVETWJ1PmRncyNHUzFh
ajtVJkc2WCFvWk9lJSloe3B1KGx4SlZrZVE0cmg7XiFUI3JWO14yPEc3JCp1SQp6UTlTdWZeSTYr
QnRYKyk4XzRVWHAlb2Y3Tl9mYmp9eD1VVj8lMlo8YSVtbGpJRkpOfUU2TXNEMWkwRiFzISlneDQK
ejF6TTduVlYpXiRlSHxGWVJOeHxENFU3LUwtRml3QldWWlA7JWQxZWJXfXt7eyV1b0FHZTlZbGx8
Slc0OTI+e3JeCno3YlYtaGJuX0NWbSp0RGNWbGBQejgxRWcmV2JjR0x7VEk1M2ZPYW4+MClRfjtI
YFNuaUxwNUVXdTtLdFRpbE1VeQp6a00rYW5sZEQmd0dpXnV4PVlPSngwWFlKMjY5VHx7ZkEkNV94
dHt4RDF6Qjx2TTstemFsezd6cW9ELWxkdmV7WEwKejIxaWk0eEVMP31aWE4ja3s2WU5rKUtiWG4l
T0ZldWw/flheKCRJR0IyPTF2a2hjRXItZHkhdnZgIXk1LVVDVSteCnpKcHxpTnpsUU9pT1dJPFR8
Qjw1dEZGbSNzSjZ+K1pkcTRDSmVDYiFlcis0SGpMQmdSKExocVpKQWBsb05pc3skMQp6bDUpM284
YXdgNipva3pXJllXQ2koP1ZwdyRKSHwlTUo9VUJfPm5Gbl5iMEBNXiN8MVhGfnN5KmhoNDBrdkNi
WUcKemVSKGZsYHtONX1KNVJRfk1eNTc4dWpDY0dQX3cpV0R7Zmd2MDhqPnAlT055ZUdgaTR6KCk5
dX4lend9Q15Qc1EwCno2PU1WRUB4cUJwXz9DVmFXKnF+Tl54OW5vZ0ppOFFzcEk0JTtxO3NCWmhA
T3ZnXn1xQS0jRyQrZmAmI0VFP3BAewp6MENZYGZRdXpZSjN1SFJESXxlWV8rN0UrODQoWEx8U3Fm
KTxyZUZZa0tjfFA/ODB7TDxEKklBdGY4SDFYbWZrYEQKenUmem5+MEJfdGJkfWBXPCFeaXZOa1JU
VGpPfThFSkgkOXxBMGQ3KE5jO0M8OFZtakhyTHlTJFRGWCFvKWFpTGVjCnowN3ZBNDM9YUg7aGVs
Q2VrY1AofHRiJSN3MiVjJUsjWT4kdmFNfm8ldzhOLXwxZyhWSiE1R3JvcFUxYTgqTjckQwp6LVVY
fEpkak1ZTnNJVihzbnlIfnFiZWBGUnh5ZDBwbWFNJFQkS2pwejtuRHdvNTw+JkN4Yk9LI2FtKEFe
dWlPdVgKejFeNUcpOVR8YiZKdVB5KEhEVDdZdCQzblFTT3pnOE5zdWVRMEdZKWx2X0BeWGRIX2g7
bDd2fSlQMGRiPmB5dnVlCnpnTX5CdzNAcjJ7REE3NXg/R0s7Q1lmbkNsPEdUKUhxPD08YnhKYih8
cHJvYzQlUXI3WUp5SEY8OyNAKEFCakpiJAp6ITdYJSs3cmckdXAmWEcmMnFTfk44MDxXTzlwXzNn
UX5SJGw4XllRSXJrR0NDXk01I09Xe343MkFxaXxpV2VNQzEKenhjTDtrcVhQczBSYEQ5UWJFe2Fs
NWppIXJOKUFBcj9rNzlgUlFjeSk4IyNGaXspdClmekxedzU8Km16TCZ2MSVNCnpIJEY2aihlODBN
dWYoWGtvazxgZE9jYzZTdDhUNEJSYiNSNjd3fjRZVFgzI3Y3X0R0JUJEQmRuQXFKMlAwTX1nKQp6
YUtpdz17eDUmblh4Vnd7c0ExTk49Kmx8VGp0OzQlekRpdkgza0NvMmM8REpHRHpuWGFATG1JNCMk
aXM8I2dpOHMKemFBMj8hOElHdTYwLVBMVkc7dWAwMFooNUNLNmwkRi10X0xqZmkxSFB1UmozRG14
c0lqNHpgfmAmLW52bm0tKiE7Cno2NiFnVURSQk4hR2FtY3lifVV8QUw4aWJpKHNXR1FnSFImXnt1
d3ZmZWRDMWd7JkBAXz9oZ1JlRmR5Nmg+NGlsfAp6JWdZclpzbFZLfXA/cDYhVSR+YChkPDJSVSg3
QF9rMiF8MkZ0cnV+MGAhNEt6P3EjJWBKYFprdSNRS2h2WEN+UzkKemkmeGh2K1Apa1B4LVJVK1J+
TkRWZFp0PSZpTC1ZUnVaMj5NcEw1fF5jKVlXZD14c1RNOVQmMU9Tb20/XzFtcXx8CnorX1FmZjFe
XnVaN2BRUF4wSytFXik0eDhnMiNmYD1YM0pKJm1Yc2hJM01CfTdEZ2E9aTRzJVBnTGwrUmApTHIl
PQp6PGhaY3RqQDgxK0hffCZ2akFjZWs9VXF0aXN8dGI3Vzk9TDI9byVJWiZ9OC0/KFNHK0k9KSMw
MjM9NC1kNFQ9ZlMKel5wTV5KeGNMQ1VgbzlPTlpJNXA2RzdPOShNdkZxcSZ5bDxTPSR3RTtfQG5Z
NFhGZz4pMj4/RFpoMm9zQkt5V1V6CnplNVFRflBMRyR0WF9zVVdGY30wYmlvbEg5aSN6ZUxjaChg
amJkfEV1VW9TX1hlbHYrS0xjSkdgVjdUKn5ORG95UAp6NEJ1MFcmNUNEI3t2dmsyYXRSLX5fcnYp
M2VMc081N0w8PUE1KThwUkg3JFQzRG4/ckFvcXBRdGY/RTEoYVhPSnYKelIwcyNCTTttVXk/WVRu
a3pXN05GO2xZS0ZjTFd5Pzltbj9Ie3QwTEg5TDZ2JFgwdzhTNHpmOzRZZjcrVT5rMkdoCnpSZzMo
UmU0KnZUcCllQTEtc0xOR25QPHU/MXwpbj45PmkqZmpUc1RLazJKQ2V4dWJLXz5BbT5GYVdsRnlL
T3syJQp6RXdMeGoqNEc/PXV8IX1IcXYobVlkbmQqKmFQbytwVl99ZSFnZS1Pa1lQVzVMSj40WjMr
ZF83fj5hI0lnJSRWc08KeiFSVk98QUBFJUJucDBEVjtgSSZhQmg1Y2MqVUthJm9wMWA8cFNQRzg/
UVgjNEgjZVpMRUtBZXthMDhSa21PPD4+CnopZG9YUjl0QCZZN3kqRjA/S0E8dkN6VTtAc2xlQSY1
YDRufCExU2xpRVhQK0w5V0BTM1RJdWN+UiN5cVJfIyYkRgp6MTRKfGM7SjwoYGY9QlE1cHRoOTlP
VmFgeyU5Pzc9S3JReDwpYDEoUCplc0c8Ryhza1UheFk4O19vZ1VUdVYoO0kKelg1IXREJT9TVk8x
aUhAYyQ5UjckPG5XQXE+OX1JaDxNIWdHVTtRO0VONDxEcD1Nen0tTXQwRTdLdmlXeXVPQmBGCnpm
dVBxWFNiPzRmI3pSVlNrKDRkTjF5QDB5WGFhSSRIel5TYTFsd1I9TiZ3P01vbitWbDhIYitSZnJ9
QGEhQV40aQp6cT5iYkRkMStYKHdqTjcySGxsaUlsP1kzNStAOEpwYVppMz9QeTU4cEZ6K31kI3I0
TX5tV0ElQ2pSZWNkTFFqOEEKemBjWnopS0E/YyNobyY/OEBhdjt5VHJ8SDY3Rz9tK2cwRSl6WF4q
OE9HWFgreWhudCEoKzB+KWd7e35fSXJ7IWQkCnp7YFBJK0lIYWlsLWF3PTJgcXg8SzJhbVBELTlJ
aihMbjQ3SS1HTkFFMkstcj5GbmRGP3FQdlhVdVJkcT8hRjJ6Jgp6dz5LZ3Erbz1HTzE7P0tfakU/
P1VuNSM7KHB7UzlHR2RsdlVrQUYrfnd3ZWxqVD9JaW1iVChsNmxDTzNlTXlHMW4KejBWdElmNSh+
KGM4LVF4YFVrM3A2SU9MRHdOMXlkJGQ1c0pKeW00bHIkciMxU2lBd0FsWkE4UktjdyZgPWtfeUk1
CnpTV188SC11RzZMP1pzVmtVdkVjWDskYEFnO2ZfPGc7ckduTVhBOTdLT25KezlKZGE9Ql9Xfk1N
U0w1TCRgLXZIXwp6MDR3RkIre0Q0LWc+VHZ8M08rUWFvVVhJMW4hKUN2I2dtcW9QMFpWUkJYNW5l
QGl9bXcwU29hTVBWUmdTZDthdTEKelBWRDN5MihQJUIham4lUXNqUlFTaVk/MzB1JngxX0lUP2JV
MktfLXJZY0pINyVQe3tYS3hhUWdYa1ErXldoV3FVCnpsOW8+K0Uka3BXK0RAOFo5P0JZemt9IWtu
WUNETV4/ejVwcXgqYitpU1FCYX4xPVV2e3ZtZH5xdW1MJmFHbHRHWAp6aHY8SUhYYndPSXUtd1dy
KU5rNz9hYEtiNGVlej4qezxBKUc/TEheTXpOJGp0RG44X0E2Rm4rYCFMSXsqZWN9S3gKejQtbldu
biZ6X011SjxlI3dteD9Vbmktekt1N19WbSRtTjJlcUZEM1VnaCE0JTUkdC0zSXxBezYtbjs8ZFRK
Pk1BCno4MyFsczA1PzEhaUglajJrekh3KD1LKH1AMEtrbnU9cjJHUT4+RDJvO2tNTmhkfEc+V3ZI
PERzUyZiMyZkdmtHVQp6ZEk8KFhoMlpRYCZKX3M3NEVYVHYqPzd+TUJEe1ZITDgmJGwje0BDaGRK
NnE1QyY9ZDBuRjF1WjkyTk19a0RrV2YKelMxO2t5fE1oOG5ASVVXXkp+eDBoT257Z3xWOXJhQXFm
aXJWXnIxSjc0P0Q2bDtHe25oRTUyYkhZa1F0MzxWU3pvCnoxPyshakpON15RR31fTHppYCF3NmVO
RChLUFJFalVPTjhLO0VHbUorPUAzRyVoUkVoYGhKfk4lKTwwaF83SjNKUAp6b1AmaGtYPWlQM2dP
JTJaJCFPND1pVX5DaGtQQ14lMlYzeDh1ViRoPnZLKTMoV0ZGbTUkb05hYTA5ZkU+TUBHP3AKej14
QlZkQTJXYngxUWpiOVFQeDs1en5EO1JlPU1MUSYzemE/LXlfMCZud2BMPTFEUWpUIXl5bTU8QEso
OVNObzZyCnpLenw5RE1kY1R8YU0jfX42VVdLUz5jfTZEcGs/MUJTYy1FWVJnYEV1MiMrM25EJWtu
UWhqRnQ1Sy13KyR7bHdKWAp6fDRBYEpqcU1rKnQpIUEtclQyZCVmZExwNDZYNCRXTkFhJVBDM3Br
I1NDRVpCQVM5Vl8keTE1O1U/cGFlJHdSKTgKenBLaWllLSYrb3NeR2FRVHxJJHFeOXF6a3U2bDEt
WU05SHQ5aTt+PU9ZSTx4MktsfCEwO2hoV1Boa0xuVkBEQXVKCnoyM2g8Mj1YP25KMHNgPzNzYGdo
XzFxKGUzemRoNEFaPF9KemFxTWlAXlg4aXk1KVFvc2V8YD9mY2thYThiV0dPdgp6XmJ1ITw1bWdQ
PFNmK1VMYXwmZm9LSEsoVTc7NGghRjZmXm4zQjJ8WCRGdTJ0eEd7JT1IOWdVS3J1UG47T19jSmcK
emojV3ViTllhSEpeX2h6Tik5IzVyZUNEfTRqRyQ1bTA0V3MhQWhsMGB1TDdaNEA0MVRAWTtKe18k
SjQycm82Yz4/Cnp0czlZRFFYcCprZEM1UEIzJXt1VXJ9Zjt2dU5uU251anBNNzJMTClJK0p7SyE7
JVV1eGQ7QzJsZ0ZybVEkYilpZwp6bWxXV1pIYEU5ZFd2cHVxSkFiLU1iUSZfR3J3UWUkUiltSzdV
d0o0ckBhb2dKPT5neWs1QntzRXJUYWxxeXN4eksKem1CYEtsbSR4Iz8+SCZiQmArWUhkXy0hJSNe
THFeTmBzZVNERkZaI0ZtPDxHRFIoUFV6XyNgS0NpXntRYSg/JlNjCnpHSTMqfjBzNn5qen0oYUBk
TV9OdF5obDRVTDNyYT5fd208Rzs1UUd2aH1FfCYhNExOQUJuN35CYnhedDRGIz5Adwp6Zn1XdERu
WCFseG1RKHVnYWohYU9tSjMje2tBR2JwZkZrMV9HUitVNV8yZGEwZShAI2pgUXVYPD4+TDYhVTdL
MHsKenNlLWE+cVdBUyF4cGdIPHMhTCFhMFN5SSRWbD1oazNid3JkZVo1dV9qeSQmTU56bD9yQmVG
QShITktUZ3kkI3lMCnozciZhPHFZJShOaGdrVG1YIzBqSUB4XzwoRmwjRCsjU2wlZl80Tl5lUkpq
NFh2Mzc1ST9HVHd7S0d9PkBvYnowOwp6d0RRaWF1I3lySEdZYVJ+e18pNEdAaEFIeCgwIXMpT1lH
NXZvWVF7YGEkdW5TVGU3cHxkSSoqNkFeQUdSUThFeVMKelZEb0o/U2hsdVE5Ukk2NytsQWlxe2xx
TFNWcz1LWHJiM2FTRDF0ckQtWDkpMF5mR1JHMEohcmZUYUUzIzJNa2tnCnpYZjBoQjFoVTlwPWJA
R2cyIzc0Zkt0U05jSit9ZzFgSXJlRnBMJjMpPDM+aXYqPVQlbVUwRFVGVDV+NWReMCtubAp6alJY
TW9sMVoyeD5fcXB1e2pgd1dUMV9gRUQ2VSs1Oyg7ZnllfElaQl58ZXBvIShacHRaU2tsOEZHUzd8
PEQ/RzsKemdKPmspYmtqbzhYd09PYCYxQyl5azVTZTNGLShwMDtASGJPdkhRdENwIXZ2MiUrMUNg
X2hUa3huS0BSfUVVVSl5CnolX35zNXZLSEMyYTlQdks4Y0AlcXRgTShSJlB6MTVHe3tqSm83RjBg
SlBTVkNfY3JlRyM1NEFFPjl2WEQjPz5mfQp6bCo5bnkmbipAUz1RfTw0dWwrQGMqKWx8PG4xdHxP
RHN3Oz1CSUdlKDFMdkMxZSkxQU13cmpeOHJTK0Zub1I3d0IKellYeFk8KUxzV1YyOVJLfilCQmVX
Y2ZkUkNrXjJra1FscktDJlVDPno/U3szWTYhT0teb3dJSiFoZFJULURESGVgCnpCV2psdzxKMyFN
YXF4K3d1LU1KPTV3aUpRUzAmMyhFQ1Q8ZnBXaHBHY1UrKSVKaCsodyExM3x0M2UwOz9qdjU5Pgp6
V3k0WmA9NG9rPW9PMWhQMUlKdndVVSkoI1krR2YoZ0l9Xj9IWXU4RU5QM2Bwal4hI1ZHYiRUNXB8
cE9qcUxGV3UKekEwVTFaQjByJEA2b3h2XkRjeWhNLT9pQVNCeT59Rl97KSFDWnFBUCU/fFRrUSow
VSl2MS0tRHUhWkRIVTZgPm0rCnppXl91X0VEa2VsWCpRV3NVZEopWFVWSHxSUylBRUAyPllMWE10
SmhhMmQ3MSZXIUB7IzZlKzZBQyk+VWUlV3FrTQp6KG5WISpwJFkqcCREV31HYSFUazs+MCZYNkAz
WVhgTngpbyshMUpGcUxGbn5lZnVROSpYekt4MiEyc3lrX25yO24Kejg7NlVMcFBNRUdIXks5LWk+
R1NeSyQwNSFIO0MlSyk2YyR5bk9WNjl6azItUFU8ZyQhN05jKE01YF5mbmEyUDdiCno2P1p8endm
eylaMWlIPS1ENWleRV8kOWc4aUc8V2Q/OChrcitpMWBMQnluYkorXmtAOChCWkopOVVvVz8tPyRz
awp6ZVEkQGo3YmRsNGZCflNrTiZeN3puUXdlajNlOSVvVyhOUz8od0cwWVdFZEZNeD95UD5MJGlm
IUJ3OTJ+fEN0VD0KenE4MlF6MFVyN2ZoeFU8cWhudkZCI00meWlXRHlwdmM+fUJ0RX15LVRlZ05L
dEhBJmlrOGhzYSFWUVJRcjdHbE0yCnp4MDVNd2NIZTB7XjM2WUMmRE4hJmQ1RzF7IVdsfX4xJFZL
RGgzR0ZMRk01O0JCeVJmRW9Cc2tmQVg5dWB1JW5yNQp6YHxhNUNyPkQ/S2NKQXlQbk09d1YlRmVm
O2RnJnNwekk2PjJFdnJSKFBQJHhuOCZzem04IXEhSllLdjFme3cxZlIKemEtN35GSm9rMUh3aTgw
bkF2LW5hQ0FuPnhkZzVBNHtjPUotcDl4cyg1fXJCfCNlLSlgUUMofms9MUR4Xk17VnsyCnpWVnxv
aHpqOXB3Z3VvQS1KQSpTal9RNnVmJXt0X2laOGVJcVl9K2FuUjJGSlFJUD5FRUFgUkx8M0BMKjFN
fCUrUAp6MklhSjlERzJ9PXlyLXJGNlNRbHpKK1VucXBhVH0jeFdSNHA7I19STHdIaHljWiN5T2ly
VWVfKzR1c1ozWSo4Z1EKenI0WVJmZVBfUCRRN0liYTtoP0pFLStYeGg+Z0hPMS0rNSMyejtiWVpj
VnA3WlBCYSkxakc5cWlEQjsxY3EjLVpjCnoxWCZAOzEwKWotUUE1JmgydG1eX1BgUHw3XjIrTXNT
TjJBMW56b1czJnJTQFpwT31Efnt4enQ1LTA2VyRMPFJuYwp6b2tadDhefGVvdURlenRCT0BZTVNO
eTtUS1Q7KDAlNHs/fiQ0OWBxSVBWTCU8eShJTUs0OztiUiY+WW1SKko8ZW4Keigob2xqQG1IYTdM
bjhfK2lvfn15aHUmckxiPmRJZE5XSEEtJkJDVWFKQD5MQiYlem0rYW8yczRVP1dOUl4oTWZUCnpY
bip7NShNRjdIeyVebHgjISppTnZSd3d6cGs8KnYwRFdQUT83QWBHJmAlJTZeYytFRTtVYWwtdz9X
PkFFek9QJQp6Y1c7RSVZN3gmPjBvNmMySWVibjxaQClOLXs7c0t7PyF2bWA9Y0l7fFFDTT1iO0gp
bXczQlF6cGFxO152aUIzbEsKenQ0YzdARl5IfWA3aHJTUTstOFVaUnZ9ZkVLX2REbDF0eXNSYTVF
NFUwQis3cUt5YEMlZCstTl9vYEtJOCtfVW9tCnpBWlpJbjRNPXhOX30tVEB1KFp3IWdDJGVNWSsy
SV5vWXQkeF96WjRZQUpjbjwpczNpSnhgfTktOVhBRjleZnoxOQp6OUd1dVFJbmFxLTApZGQ8T1VH
ZG5ONWxYeUh7LSNCcEwtQ35sUm9AdCYobTFDYE9WTjBnc3lxaFEreXZUOXleWGgKeiYlWiFfRlFL
b3NVaiRuQzZQIU1mUXtZMTUjJHtOI1gqcF5kWWhaV1UxPGhuX3BKO3xFTGFQOW1yMDRqYEtiLTdo
CnpIZCo5MnleQF42UkcmNWQhYXw9KWAxUmQhXnJncGA0K1FnR21qTkl+RWIoOFNhelpNc2hBfGVf
TFZVXjJLR2g2Ugp6ZnglM0khKTReaHBMIUNPZkBMdEs9Z1pEI0ZeRDlCcUtaUFN4X3k9SyN8V15L
PFhRcCFYZkdFMmk3X3VPb2dMRHcKekJ6XjZIXzlBeVg4NW59Q3ZJdUVhQigma01tWlBmbjJiMmB7
cWg0KFcpKiRgWD9BZGwkOEpQNVBrXmxmcyNKcXpjCnotfShETE0oXi1RdEdAO1NffkFicCN3SCMh
NDNBekIwUWhFeGYpZWlrUVU9fnwzKD9CRjI0b2pqVjZeOFYrfldpQwp6dW1vS31qe1lvfF9CcXFE
UU40MDJHN0hNRmZXZG5HK2RfMkp6ezg2fDgxQkFeO2pSbV4yVSVlJmp4O0NFOVh4fWQKemVlSmlY
VXM7MlBrTTFFO2ZLMyR0UnNOe1Ilakc/Uk9eJV9pV31KSFVScVRFRzhNS319a0UhVnBZKVRqTnY8
eEZFCno4Piklb3VTTlp1ZEooP2tFJDkhO1B0NyZWZCFSY2YqX3B9M1BJandKMikmYTgkWSEkJGtH
eyF4SVplTlNAYXFJUQp6TEhMdHVCUUVDeUZkSFJ8UERrKzNLail5ZHdwMT4kand1V1BkSXc7bEx5
JUtfeGVqQ1o0PENZaVk3KH14SEduT2gKemdpKkZoKzImdENXP0kjZmF4cldzKzUwYkY0KzhASkZx
K1F9IXstZiY9Z0V5bFIzfDlpNmlCMEVhTXFOO05zS0VOCnpOKil1Wm93MiVuNUdMZ3tKMWAyPCg1
VVB+Tk0zaDMwRW9JZjJtQllzT2FQVm8tPDtLZT5YeUZrJEV6e3BLNVpCbgp6UktefUpAUlEyeHZv
bGZyYD0+TVRfaXJiOW5PbCRRNjxjVyRkb1YoYWY0c2o8bHhlfistJDVtRXYkPnlKUlJoWkUKeipE
OUhLdWFocXpjX0FrK2N2PXVWN1FDPEpHLWsjSjEjNk0zellNVUcwUjghPWY1TE5ySmMxOEBfODsp
K0BCYjlDCnpAOCl2ZyNBb0xjfDhtVSEpTkF7KEA5QyM7WDc1M2E0JGNXUGxObWh3UHolY1F2NVlB
R14zQlZJTHl3em0ydjVGOQp6SGopemVJcSVZfDxYKSF0OUgkckZkKWhIbWU3bnNlK09vfmxedlN8
ezc1MkwlRSUzUXsqRUtaKnUtR0tMYTRke1IKekpFfkF4bVp8MEgkTDQ4JjlWNExnRzgwPWxAI05F
SktDfXh+YjJpTjdZdmNrYSNiPzBoeEF8PnJraWtCWVAmNlVjCnpTRlJoN3FYTWw+QmdFdnE7YDBm
PXFjfEhTQnxqa0FQWWh2aDRqSmBUdW5gRExreDJZYj4mY2F4bSUjR0BXX3xGcgp6YjtCNW0mWCo0
cjA0ZkxvOUJHSjVvO0A5Q2B4VTFGfDgpUVdafFNTPWxNSkp5Sm85TmozeUAydDxSfTNOaiVQTkUK
ejU4Ulc2JndlTmtYfUp9c1VVZUk2and9UnkoLWBoLTVfQ0puMTNZeGBfeEticCZjKTZ+PCs5Q1VZ
fW80KTU/cHxtCno+S0M+X1p0JWM8ZldlTG5NRXhmZTUzeGIrQW1rNj87Vj1JWDloYilOb282MSN3
cyhKby1rVjdKOXNXRjFlMiRqKgp6JGV1cmxxdVkxaj0jRSM9ZCRBWW5vOG5KIVZwJkdFOVMhVDNW
JWE3Ui1fXnNGQT1lR2ErQ0pJYWlnfTcmZHMkQFUKemFoJT9rQW9OeE81cDVsJmFeemk7X0QtU3N1
THV9PXxBaFJXZy1wWiR7ITxLMTx8UWJ9dms8YFBITk17U3VYRzBECnpZJnYzS3tidylXd1YoYzZv
JiN2ZmhOWElnRzZUUk0yRztRMCRJV2s5clQ3ekt5MkZyJW1HSX1mVEV7UmxHJCRJPAp6PXhLaWY9
PHRefjwtNUlHJShjdjNSdHJtM3h8fG4pYDAxJlVFN196fm53Pk92QT8lKXV3K0smSWV2JipudEQ7
bysKejBLJnJ1Y0xhTiU8fTUlS19QLUpVU2FXfTtWUD5XVmxhcTBRbSlvN2xlPH1jUXk2a0tLOCZ9
IU00OUclU1J2cyE+CnpZKHNpPmt5cj9rcGJ3TTdKKCVjZ2dOS0FubDQ0MDJiODxkP1ZmOWl9Rzth
OUlMeE5YV3cyN1U0QWlfK09CWWhhXgp6WSheKiQyUHNGSTEwN0I2X3xYQENMZyhiZGtOMGp6YFFw
eyFhR21WTVg4e2hQX3RKU0JkKndBOHtQVk51SU08OT4KemNOQSl0c2wjUEpXcWw9OVkqflopd1Qm
biZGQkRtQUw0UUNqX1M4MnIoVUIqST48bDc5amZHeU9falc8PUVnWjdyCnopTDNQOyM7I0padVNS
PiVaJk1Dajg5M3RDLSl4ZEZIeTZnfGNWeG0/VUkoV3w9bG9sc0JNPkx7Y3VBO1V7TFQtRQp6bTVt
YTNUN3tNbVdpNXdmYWYqRzFOI2liR1VyUSFhd2NNZGRgKn0lYmFDR19seVFlWUtLT0B0QTwrTFBT
VHdlP0UKemFmRTw9RlZOWDExVVlZUUp4bVVwQ0BQOXlobEhnSDB8ODI0KHY2dj5qP31gaGV1PXw/
KWZHWmtMakJ0eDNrfm4pCnpFSV9eWXxLe3Juc05kMzhlRVNDb2hkKk4mQUQ3SmxRRXNZcWh9MUl4
WlZja35xQT1IbCRHQEE4XnNGP0wpfmBvPwp6Y14lWCZKa30wZ19YTmd6VFFOUHtMJG9jSiZfOWtf
ZCVMbT12MXMrSnUpREh4LURiY1FYbiFqRVMxdCgrVlFqRHEKelZ8XlY2aWBMP0RLU0F5eXtNd1R7
QFleNTFmSGoqTUB0cWd7akV2azgwPD9BPGRHUiRJZXxaTntgfiNTb2lhP0RuCnpAaWVmIWw2PFYl
d3BJdnpXa1ohSEtqc2x2NWhZITl6VDtqP2wrYSNkTz1jbGBvPG54eGp+I2pSKyReUlojbWBxaQp6
dXB+QTNVN0h8RjN3P0olMjlPI0FuRHZ9JjRkTHIyczwzS0o4M0xsNm40YW9HWXhsK2ZhJHsyViNj
Y29uJmo/aFQKej0kQm4rRDRJZFpxQzZid1VrI0hoUS1DI3hUeUtCSkQhNE04YTtHOW1ifUk2OVZI
MnZpWVlPOGQ5K0F0U1VKREl1CnpibFA5TU9aVkI9S0xVVTY1Rz82VjZtREReP2B4bkZ7Q0g8Kmgh
JGQjPVE8RmFQK0VraVQhJTZNTkh0YVRtPXQ4IQp6QDl6JiFvai07fD9YUHdPekRXVUsqKkQpcGxE
V2djQ0lBVkFUeTB7QVlrJHRDUzRATjApSEpNeTc9SE5tMDwzSXcKekJELXVVTzZ5azkjWnNHTkRC
WDVRITtUTWhVfX5UWEtGXkdKUHFhKnFhYXBBa1JWIXttUiQpY3IpeFgqOzwpVnh3CnpFbz1aT0cj
PypiREIjMFRjTUdPUTJEUGchTFRGP1RKb2ZFSnV4SUNhLTFlcm1iWTY4aE1paFUxVjQ5MDBNSl8m
SAp6bnlpOH0obl5nKUBtRkg7PklTNGB4YTJTP1NLcD1SdGZUamNzSz4/e2d8I3wrPj5WN1pjZ2hK
bTlMQ2NjKCNCI2IKeiZtblAhO3FfPjVEUU9AMkAyMSNhR1ZSeGU0ZG8lTkc1bG53MG1xRVhRQmgx
WkkyPXYxXj5xeHVCemxzOFgjZUFBCnpJPCVpMng9QCVOIVV5bF8jRFJnJEk2MVRvSFVlVyNiRlFj
QCNPNkMxI2hRc0pXeEhhYTIoaSRQbVRAc3JtfX5TRwp6cjJSVGFwYGh9WXgpQ0JfYmA8NUhVeyMm
UU5ZciFHVFF3fjMhNUklRyZiR19ibDlDJlM9K2AweEt5QHtKJklqTHgKejJtVT00bnJfMjwwSnlv
QGc2cF5SI3tWZ3h0MS0mU0p8Z1ErKGZYMU8wS15+TEkrSWd+Yz5NVXZyfU9hTXgxPHdWCnpteSU3
dDMwNmxzNjE2IUc+SWxJeklme3YpRjNlNjIoKyU/ckpCJW14bHNCJExMMWhFM0VnRiFAKT15bHRz
VGNOcQp6NWIoSUNGeFlqOCp2Z0ZOX3V2WEkmJihfeXtfPXo5eEhLWW4pR15FQjtXQmNxc0JUPEA8
eSUmaCZAVnhMTnI2fXQKelRGSUBaWVViWkVISlFicmJMMlQzNHpsWklwKkx5WGQtPDUtQWQpRF5R
Y0JJN2M+WShtLSFKRnpPVHtGVHVZMk9MCno4SF5ITGdFMFF9cjk5Kj1aelNhcVAzckYtZjZQVFJU
dk1fMHB+ckQ8fDg2MXQxP2dlRF94MXNsPTZkan08OURHcQp6dl9kcDA8JVMhWj9gU352O3pFUmlW
RkEhZ145UENVcEVAfUpoc30oPHlmbkdYYTRNbktKczA2YihIWGNFRzFeeH4KemJ1bkBxdEtfKT9p
NUwoVUpvPkhpM3FBMFNQMEk7SWB0X3YkQW0xeXhtcl9McXF+SjY+PWxfUnUwTXpXaXpZWU40CnpF
cShFU2M5TCtgWHBzUUR7alVRNlpWKT14SkMxKlBVb083LT4wQVYmWH5MZSpFR1VhRmpISlZsZyM0
SHpBYUc5JQp6IU92fkhpM3Q/ZkVGJVVgajtqe18laTZYNHxBalB7P3oxV1k3LVk+ZkwmcjRTK2xp
cGhEPzVDXndCQ3V7bU07QUMKekQ/ZiZoK25fYStXOTdEV3M5bzhCXjRmQT8qSy07dXxIJXxUKWgm
djk/QGROfGF1VkQwRWM5R3kkM1ZsKkp1T29XCnphY3tOT2BiJDBqUlFgPERoNHg/R3UxXmlOaUp1
WUwteXp9RTZKYjApejU/fTJeNXNsRG8lV0FQR0x4fHElaTtINAp6ZSZ7aFdyU15jTUQxe2tleXl2
ei02eV45WjdqV1NCJEcyal96NzhmU2heKlcrLTB7djhXTH11V3lfcUFlZkFQV3kKeklAPjJqaWc3
S08zbDYoUT19ZWBJK2JmSkNoV0lnWEQqODw0QWwmckZMU0x9NTdNV0ZyVDNje1ExNWFodSghS0dI
CnpQR2hYT0NxOG9gU0BfaypGKikyTG02anNyOEd5SXRgeVlmWD80eVg9fDJOLWt6fm43YChOYGEj
bGxkcm4lU0RNfgp6a19qTH1kej1SQTRgOG1YNThGMW5AVzVBIzEjUWwmVCNCTmEjc3p4aHNsRVk7
Z2VISzFjVFFZMWR3TGRxX2lDR0oKelVhaldXZXxCTnwzJm57UGpmNjJWR0p4QCtlJGpBSjw9IV4z
IX41SE41IyhXemkhMCRFUCsoMEg8WlF7NWhwU3M4CnpOfXFWdl5tZTtMUFFldzlKZ2RtYTZPS288
YERhWF8qNGxYPyNqKSNxNkpGKz03R3d3NEw7RWkkezM7LWNpVkspeAp6NXEjfnszYDgyJUE+QWdB
JmAkOUIpMkhsZFBFN088PEFvblFpdVV2OHpgfGRaPWZedj8zP1o5OWZFJSltYH02UkoKejxMZU59
VDFDJnAqbVFkPm1haXx6PGRfRT9aNClIOzZZJEloZ3tQbSpmYTtvREYtPSZGM31ffDYrRlN1QzBr
NEtuCnp3andZaWhqJlhpa2w5dzR0JkkzcUtMam84JEhpN2RYRjNxXzFtcG9CJHdJSGNjQVFzfGt1
R0x1TSNzLWhgKzZRJQp6YXt3M3NSUEYhUTAwM1drQlZFbTEySlJWMG51Xz0tbCUjVW1gKW9BR3Fx
c1RxdWQ1JkY8fWlOIXtZc1AtU3oqZzQKekxWM2VsKmhJUFNtREBfa3dgJm1vMU9XJDkoKkFgc3p5
Mzl5YUVLKDJQIVF3OHtnQG1iNjFvNHt4RkBTemkhTig9Cno8K29CJWRgOys7KzxQSkx2Yk1MV25x
RzwxQyZ1VSMmdFcwJEVpQ3xHKlEmaVFlfm04eC1HJW1Md0cqOGBJKXx0SQp6OD9ibjN2OGJUYjd5
aHVQcFNBQ1dKOyQ7QSRCJCFqWTZMOSZ0RSUwJllyYDA5NzlKaE9MdVNKMDhxZGVtTz5jbWQKelEt
P0h7OEVkdndrP194PHd8a25qemJ5RmI3X3N6cDg+KHRAV1koNzRRJjB+RWt9Py0/Yk93V2BKNDdo
aFlfcChqCnpMcF5OaWNGbGF5dVFnX1BxcGdGTz93PTZaZz0oZVhmKChHb2kwbXZOQ2x9JVYtQSNk
ITdkWiFqZzxKKUk+bjtSWgp6Tk5SNF9tUW5ke2xIM0tEUE9LbWdNIUpEfihLRzx5S2hrV1d7dmt+
RGpOXy1AdUV1U2ZVNUgzX2xyM0lgRUhRbEoKemJ1OUVyVWhvTzhUXnNHNjQrQGc3TV9DflUkT0lW
Yj9aJXZZTXgxQkxya0xAQVFuMHxGdzk3SUgjPXRgRjxWcml6CnpfR1RxeXJ+WkR6R0AjNGNAMzsh
dXpjOHl3ejVpPlZ7ZypZZjt6R3NHU3ZJQzt5IWdoRTY2OV56MilpKk5ZayZHNQp6TT95P3kzeCsl
VHU8TXNrPE1mX0dCNlpoQW4pfXZPNklmUzJPLXFjeEhMN0d9VEVqVG9VNUlCfT99RHEwKXtzJFYK
ejV+NCRwTmdoTHxaWDhgSEQjPGApYnErbV9CP2BSOzAmJipGen0kREg2U0c2cEIzOz4kP0x5X0lk
TzVYUDEybFF4CnpUOyh9Qzs+SipPemZ5M1NSN3x1RzBPYU04OFE/Jm0/YUFsRW8tPEVDN0kteGsq
byo1ZDFXSTBjSCs7KHx6anJeVwp6IUVIUColSUhkaXh3dWVWRyErMHVHPmB4dzstMTZVeGkwK2sy
TVh9e2U9ZnFESC1fQk9ZTHdObHE4bnozRlFVSV8KenlZa3tzVUNETWkwbnhwIy13KXJOKiVeIXVf
UVVVc1BZKzV3OTdYSXw9bW91KHNsN3VmdVFsbGxacDB6UTdCfiltCnpvKzRvPD1eUnFpeyVoQ1ht
dntLaDJjN3hYVGVtTF9Rfnwzd2goRGZvO0MkWSNDQEhXREQkZTBPMUt0MEBqc2N1Xwp6e3h1d1pi
fmsxe2xibVVSaEVnQUhVcDxiKCsjckc+Vn1qPGprP0M7Z1RuPV4qLUhvKSQ4Z012bXAoVmopTWFg
bUkKejZjdU5QKjUtK2h6ZUU2RklgNWhDcHpFMEkkPiV3Yysyd2dDVSVOPHwzS1h5VTxOTjNMMkdN
aTI3dHVneWVrR3kpCnpJX2FQRGVhPGdIJW4oQUx7bnJtZzB6QyhpOFVVXzIyPytUQTh2c2Zfe31I
O3Z6WXZ7KDJuMXt1ckxiQFZNTTYwTgp6MHRVcWxwYW5PMHRRQmg7RU9gNn13ZVdaJldZY0cmdlQr
QHA4TSpPPWJscURqK01nJjRRb0A0OSFhe0hiYjNqdFIKekxwTzRrN3tLSnsyIVZpNGNMeGtnIUhy
b3M/XnhpNChBI2JFPSlINiRmeFN4WXtnPX56VF9jWmNWbispZnN+JCkhCnpyMHAtY0dxQnNUMT9s
LSYxZkRAbVB0Mmpld0k4UTw5d0V4VnBNOzVMTjJILTVLWipAWXJtKG8mQk5Sd0RsR0xiNwp6PFV2
VC1la2QwZ0I2cWAxaWJQWmJyZGt6fUpkYms0PlFYcUk3RXpAS295ajNWMkxfTmNgOHJRQFZ0UX58
OXZASGEKend4cUVQYDg5PH5Eel5NTlcqTmFpMVU+RUoyI243cDNPfUg9aEQjfkA+PnRaM0skT25j
LX5RMEkkVXRzX08jTXxTCno7OW41fkRFVndEcVNBbjlvSmIoUkpAOHgmSEwkb0dWbz9iSXBjNkoo
T18qI01mT1RkSnprMDklbThEaj92N0YpOAp6ZmMlUERga1gxZ3Bzc2JoZzBNKGVCTHRWRntxZkk5
eTY9aDxyZFNsU0d0KEYhOVZQcT0zOVZxWXM/P3FaLXpLIWIKek56MSpEM3QzOXhVeXpvXjdDZVZ9
d0V2MyFqMT1iJkspTmM+KFo3eHEqSn1SMHhhZW9YMU4+cEE0KEE3Zl9OSEQ4CnpicSU4WFRuaSU4
LVFkPHs8KFYxU3g7Xyh5U3duRXkyMXNhUXFeJTh0Xzl0JmpDcCFIMHJEOUFMeSR6T31xNkduZgp6
ZUtlVUY0eTs7VkY4bmZEZSpzQT8zMDRiQFZ1R25vXmlRR2ZjJkR0cSNBVE9JY2d0Y3B2eihmXyFo
ak89aDB4VjgKejNJQUxHfEZedzJmc1coNiZQMmMzZE88aCNqVWQxazFiMCMtd05iS1VNVXBNY21N
ejx7O3dBQk8jdUhFU013MXNFCnpKSVJ9UU4+MFlKKno/WnVvMCgrQjxDJmNKb1V4dEVJRWskfHdr
MW9KTUo9USNpNHcmUCshdWZaTDRYOVl1ZjB+aQp6ZDtoPHh5U2gtbFY0K0JnZUpLZHRqcWEtSXM9
RDkoPylxIVZNMUhIIUVgfEdiNGdtN1pqUVUyVDJUeCU3IWU4LWYKekspa2xOMHt7eXUwJj8hbF9m
KUV5e0Bea0pLKGlRfkx8QFJUakckKUE4WmwqK1UqblU+azdHb3dGNj0jbFp+Zl5DCnplRU9wZTdA
dFRaUWQ1dUNqOyNucXQxJitTRDFQKExIe2o+SnYyIVQ0Xk8lN0BtQmhzT0lBU3Z+MWxZRzF0K2o+
Iwp6SzlONG11Pnw/RDUzfjF8diE0YWl7KFJRa1l4ekNMRi1Pe09gRnNadklKRm0keTRYOThtdE1i
IV5BfEBeNW1LO1gKelN1TTcjdEhyOU5LQDUqdnojSCVHTClWM1YoUyh5dkd5O143aTIjMV5eQ2Q5
WEpfQGEtU3B0QzE/Wlg4fHQyLUxkCnp2QSMoUjh7dU9UaitXQ3wyPGFsbzQzQ0s7dWJzeF4kZHNg
RDc4eH5PNlFFO2Z5TGBAVWYpQEBRbj9gcU1GUXljNwp6PDlHOzNKZHR+VHtKO1A8RGA0YWIxWWt1
Z2s/UHgqbT5HRDYra2tsazQqZyRINFM/OXNKaFcmKlFkUiV0fDNoYz4Kem82WjtJNjxOZE4xfmhE
NEJTJkVpVXIhTl9QcmxUTiZwc0ghcE03bldTUHppdFAoJGwjVmdWZkAyc0Fla0N+VW47Cnp2aSMw
I3Z1PURLU05YbUIkPXdGMHc/cUtTeDY5NWFeKkIlVyF+Tk5MMV5qI2ZYM24lZjR9ZSgoMDhHUyVn
IVFFNwp6SmttKEZEWUlCJi1iOCRJOGkkU18kRDBUQzxNUUN1WSVia0xmYCpDQ2I1OzJIOH0kZ1Jl
RlNRQ3ZvOFk+bjx1NWQKejxEVFZNKHByVD9KUHFIfUFMTUwrdnhoRj57UDh8ZkhxMlZZRF9icEQt
SDRUMmk5T0pFSU4mJGhLWmYlTXlBY1B1CnpheTM7RExtTmA1LTIwK1g1S3o8ck04dVMjI0pRaUhp
Y2hgdWI8QSE4eTE0KSNUSyZhVXMjNGtJZXZOfUNrKExIRAp6WmU1SylCcS0zN1Mte21ae219YV47
Nzh4UmpWekBxUCZyJiNnX2liQiMwREJzYXo8Yi1PKzluPHVZTFZrJndKZSQKelQwUmpzeG8+TjJH
Mzc3T3tjdHtPMGtna1BLSVR5SGRqaitBPDxIQkdPOGdHbFpPRmtPKTY+JjllRFdDSElkVHdKCnpo
bGRMU0txUXBIRld6anlvMlIwUHU2cjB0ck4wWHg9SkhocEBQUCs7ZlFwZj1IP1daTm5gO0RrTERh
KjAmazQkKAp6ODROPDdAN1BZQChjWHdTUVRAS04xTCErKlNyaHxscjJJVmtFOzl1P2JHfXtZITRD
dSYwTGMxViR3fGFjZURDPWIKemRWaGYyNnlTbnQwOWY5MDBBUSlBYDlGYCl1RDdeZjt7Wnlpd2h+
UVNSLXROMXRyKSZJR2RfKjhGQ01fUnxJS1JMCnpjWHU2S19fUWRkc2F2dVAlYDRhMHRHWDBwMG1Y
MHJxUU4hc3hjSlIpbTJtVVZJdTQpeFdvZHVEbEcpTyZjUyt6agp6WFdDelkxPzlFO0BVV3gmPzRW
SEtrI0VAWGkzdUR5YntPdi0/Wm9LI1NZODBvR3o8Tk1BLXJ+PTVuV2V4TUFtKT8Kek58Z2Z1eCVV
bVgyRGglTEFwbHJ8Y3N5elFgbVZzQTctNlltYXkqOCZVT0o1I142UT1RWVFBP1hxQ3NyQXc7ZERZ
Cno2Ny16QmpFTztSQjlkSyNoKF8mIW9+Q0QhUj1AS08qclNZUDBIZE4zPTEzUTJFYDBBVk9pVWpA
Kjd+eT47TFpUdAp6Sk9FSHh7WDJpNEQxcEU1elJvOS0zbmVPQj5RTFFRRkJXYiVgVEEqbUAjOGk0
Y21IeDdNI3F4ayMyQUY4alZuNCgKeik3Ki1Kd2Y9SnNfIVVyc2ReZGF7K0NMQkx5PlF4fWVja2Q9
PGhmYUlBSW8yfCVQeypwU2laLWFYSXB1PFBqfjxMCnpEQmVERmZMT3FCT2lvU3QwKVg/PCtzQTle
cncoeXFuU3IkKkNJSWxiMEc3T2tjb0BpP19wUVJ9YnF4WHh5YTIhZgp6VFclU0NeWDBQYHgtdWJg
PmJCMSV6Yl9PdjVSTD5lTTZ7bkApMTFrdS0wYX5qNCZwOFFic24yTypUeXR1WD8hU3gKel51OyRa
ZWYzOGkwQ2FxUnpaQnJqMHwyNFdlS21wNW1Kej9kaUxOZXReY1A+KW5WNXgqPm5pWlN7PnZ1T1Mw
N0t4CnopbmxVN2IhYl8kOSlYYVllP05PZT1JcUN3bj9GQmdfdnVXX3s2QH1hYXp8VWMyVSpQQmRp
el5gOXxnfComVHFZfgp6NXteQnVfMDluaV9oKEpkWj1kYldgVlIyMXtHUUx2YGtWanhjY0F8MiY+
O0UkQDhiQmApMG1GVV95UGNEMkY0fT0Kel98LWVqSU5La0FmZikzVE1gaTxuZWI0YiZeRzgwbGty
PW19SGtedDR2b2FnSFh6a3YmYCNnRnRqM04rbEVkfVBCCnpAM2RVdFE7YjB1VSVAX1o5PFVHeSRA
XksmOVZwXm44YDc1JVhtVVR2XkRpTWJgM2tRRj9EK2xPS19LKFcwRW9regp6JnhhTzZEeSNxNVBa
ZFJmeXg5QnJUKk1PPWUpOHZheGJNeXlqTGNMWnBAZDstNSFBSj1MVmUzSmQhZiNCP3VVdzQKekBB
PWJ5elk8fTF3bFIwPj9LXmJgZDBzMDVEQXRAbWkmQDgzUXVlfDd5Xjh0I3JNTXE/S35LSkJUNTBy
TXpLcCY1CnotQCkwUTN2X1M5ZUYxPWplLXtUVEB4eCFXQVpfeEJRYmdIVC1VcWRRPHR6Wjt3JV8q
a2preGNfOVlUcHNYS18oQgp6OzZZdWk/ITVRIWV0fUM8NEc4amo3QzlFJXh5UVdjTHhHaTs2OEVK
TnRydSt8czs9aDU2a3RFaklqXyFobFNlPyYKemVWdiM9e00/VF82WHtidFJAeUhFYUJ+N2N3RE82
RVJJUERXRGVvUGh3RDVhUlgheXFPaFkqWFlndmJOe1k4WG5tCno5K2o8fDVOVFJZPW8qMHBmclJJ
IzxTb3Alc21KciY8KWQwVCtkeklMRDRGJmIwSEYqcyQrdGhaI1YhUFh4I3l4Vgp6Nlk8e0FleExS
RS1vQ1dJIzk8KHJeRSheQjxkaHpjcW92VihAZDkzZF9ae14xX2FUezFgRjJkIVJ+elUmKk16QCoK
enNSOTlvXlhvfXklWGRPO1h3THh2WERzKUZBNjx0djg9Si1PUHVMMnxvcXs3SE4kbWRuN2pnTj5B
dzspKyp6T2xGCnpHaGZ+RUQhJWloPmFmUTkhSEduKlc7cm5vUUBGUHw/Wm8hfXZwOHBlUj8qMXM/
fTF2PzAoMHlWVm0mfGphVCpnbQp6MSF6JC0wNCYhSDA5ZE1PZXM2LSNSSjdScHhKaG54OH1RZlB1
dXY3ezwmdHkrRyokTXdZWEpuU21tdTdAM1B4b00KemJmJE87dVpQRHNVMFRrNmJDamNtbzhSQloy
bUk0Pmc+VXx4KlhFPmJeUndQX083K2QhcEFVJFglNWReblo+IUw7Cnptakd0JiZzdVUmSChDNHlQ
SWFCYjh3ZDh8M2JfTEFEYWBnQjVERW0pek57SX56RnZqRGU9VXhYcHhPaWdPU2VOXgp6dk1+biRJ
TkQhYlNBa0ZkPH5HcH5CIS1JRWpYXy19dVZVWnA3Y3FRcjdYb0RZZ1JBYk1WQFBFTmVQalRANCt2
T14KenVOO1JHc1Y0QG9ndURQJVJEND15N1VXRGpnVyVqKyZSaHJYUiFtPCQzOVZAWih3RnZRWDgw
ZXpOIVJ1aWErUUJVCnpPK2IhWkY5NnsxZVhfRnB4Qm9+e0QheF9oJT8hOWFVSE9+O1J9N0VjWEpJ
QzgyJW5BMVhUPVpxNVlQX340R0JjKgp6NVVOeyZWQks9NDtjQ0t5TntISFRHbkgrUndUaiQ7P2g3
Zjh6e2dxeDEjZXBNeFVsc3VZV1pgSCYyTjg+YSMoWnYKejRzKW1kI2JPZSgwbVVsJEl9fD5UPyhA
eGhLMFB5eSF6WWVvLXtDX1RvZncwJj9ndEQxPUtoSWdPUGFCdnkjcyZ4CnpvZX1JaEk2P3JSTiZz
bHUyKEApdmohfkdJUFU3QiYrT2hOMytMMWA0aDFIKUppe2FoOT1XKjt7cFA+OEo9QCsyMgp6WShS
TCRaS1J5PiV3aXZZMDNlQHw1K2BTbnpWSjQqKSpWbm81c19NaUpwfE53ZX0pTlVGdX4keDdeSlV1
QXc0ayEKenQkN29ZWFB6U2l4Uj9FWmNtNG1PMU9UMExjSFA3WHRaeGNlSmE5JE15RGNufVF3a3Bh
enpxSzZwSDB3MzNDTSp3CnpTXjBUUWRDZFU+Nn1sPmE0OHVTbStKSTBeRCswQWQhTj9DJmN5VCRw
OExZR2Znd2huKnhqSDQjeyhOKXZHSXZKeQp6aEEmPTkzKWxZaEUwOHRvSTB9NCtRZlItZ3JBQ3FP
PjE4NTc+OXBUe1pnT0F1clhIRTxiSn1tO2slS3J5QVRUYD4KeiVpSkcpQlVlU0RTaFp7IUhnfks+
V3V5YEplKShNdGpMWm4qeih6bytTcVhqUlBXIyRSPig3ZSRgUU49OE8tbXs8CnpJeXs0dU5CVkgh
JV5yKm5QOWVhOUlMM1JDPlY1O2tiLSN2Qyg9dClYPV5SQHdtQ3UzIWg/T1Mkaj1+KTVoUEwqQAp6
QWB1WGQyNkdrTzlTMTttZUV8bEUqcyZMKClVU28yaG1oI3skRjc4Uis4RzF4P2c1emhCdyk4KFBY
TGZDcHo1RmUKem03LVJCQzM3PzY1ZjA+M2d3cHVkU0ZhR2xeWllrbUd8UkIhT0lKWEdmJTYqQSF7
ZUhJb3Focz01RGExbXBfKmtkCnpZRmxCQCY3bE08dldoSiVmfWdkey1uZHFZSF4yWFRraDR2emdx
eSMoMSRPR3Z0WGJldiU0ZlotcXxfQzkzLTdQZwp6O1VhJFRuZjwqaiUpVGE5dTNwN25xVz5xejRN
LS1YR097czxSKW8+OWF1cWhPPXxLRFBYMXNvSTV9KXwkZSZIZz4Kej8/d08rWEBjSklrUE5XI3E5
Q3lwPyExMiQ/c3tNfmo9dE5BPEE/Zml3U1FkRGYxYXwkRyhPJCk0JGA5KzUhdjwkCnoxUz1+dStz
bDM+JnhgPGpNV05XeTdtMUVrTHRBemlMUDEzPV92SXxkV0BUOEwza2RpTDBZX0BeMCVsSVY0dD9F
Kwp6VlU2YDYqOGpLVXw0O0UhO0VPZn0lcWBhJjAxeWFuWVlUO1VjOW43e1EhXl5RQGFQYyEkdFNQ
VTxEanRnVHlMJEAKejRXTVJOSyRhT2U7OSVJVl5QKmpiNWhQQDxCNmlTN1pvJiVhPFQ5d2lOfUN4
Wlo2TF5Qd2Fyekk1Xm5JS0skMV92Cnp5cjFSQXsmOT0+KHwlOG91N25gdiFmQWdBVzVzO2dRVERV
NG5KUl91T1RFfiRlP0tsPHg8cDFIRXQraj1EeXkpbgp6WjVnKCVUWmZqME1wUU9OQGM7ZWc4VGB2
e3BGfkprV1NxY0Mzd0thb2A7WjlHSXMyQHYzNSZHZjJ3OG1IJl9vPFMKejIpaG1HMWQ9RDhyPD00
QVJYYVd8bU03PW9wO3FRdngpczw0MG9yelFxI3Y7cHpsN2Q7N3U1UThMQExRMzEmeTMjCnokRnJg
MHtoMDRSYXlPPDl8M1kqVThmelh6PmNVPmNDU01AYEE2ei0+WjIoJE8xKXc5Pjh2cjwzSCZ0MnY8
KTExXwp6YDAtKmFBUW80I3RSO3FqX2hkSiowZ0VvMkNSZVV1QVcmVXdLJFIxNUg1V3MwMEQtfG13
LT59UF8kTzN9VXt3PjAKeiR8ZU09VGdYal8kTyoqa2B8PGo3TVVfOH4jZGNuczZZYkIjMDJhTk1l
e3F8N1ctRCFwNDQ/JHM/fGZFRlRUVWMhCno/Q2ZkbUojLUxQaGxZakEqSVp3WndQZzklRU1JfTlo
SSQwYV4pbzZve01QP3s1ZFpzRW1yek1RSiFjTWg0TSQhUAp6Tk1IM3FDPjFxdzUtVmcwRnotXiYz
PGFAfGtLU3R6YnM9P2VGWjlNdXNNJm08PTswN3VmfDxrNF82VEhAblNBKV4KejZNTSojcENCY0U2
azRQSyllUk1KNnlOIWRaZylXWmp8fGh5ZyhIfGd3K0NBTlcmKH41QnYxYllhVTZYTFM/bGpxCnp8
MUMtWWttYjZAMEFSWlRxM3tRYDJaQ0Q7bHlXJUpGJT9oISkmTCY0Y2JJTW4mZTx3cm5KbStrQWl6
VTExc2hPcAp6dERnWWBCTEApcHhuSys4R2p0JHkhM31aP2Z7fVV4ZitmKDJBKmtVUlgkZWZHZVFD
UzZWfTkwcWFjSTlNNGx5Nj0KekohamhRZUkydkBIbUJmVzBualFJVjRhd24jUXZqNGFwM3Fka3F1
enctP0RiQ1EydUo3PVhfbSpoSndNNzFSbllRCnp7VyN0PUEpYnJEOTwxPCsxJTNIRlAtPlA3Pnot
Y31rJUxjbmtzP28/TjRXaUEpVTxDOSVoRnttSCN8VyslTXlrbwp6Sn41OHohIU84dnQkcS19PlN8
UWdnKV9eVHlYT2l4VXlhdTxPaWhocj83Knwrb2xMPTRAaitPejNCPDN3KnFPcDUKenU5IyY3X1hf
fmRZWCpTbG5fZ0dSdlZme0R8M1hwMkExJWZMYyszK0lkZmM/S2s3IT5DOCY7PlZxeWNtVFNSeng5
CnpPditWK2Q2aXhQMiU0Rz03fXxnIXpgLTNucXtvS0M0KHZkcDVzSHdqUHohXjdlUHZ1IVpfeElf
RT0jUiszZHF2awp6QVJ2dmIoaGJzJE5Pd3NyQSsyO3UzNmNfMDVgeWZ+NEdJY0tFaCpneyVSYzx5
X3hiI3NaenE0fS0xblMmPTk7LT8KekNKYjVPNjBOR1B6e0lFI3JvYkw9V3xtU0Qze3diPSpII0xA
PDNudEVNXipkRiZSR2Y/WlE8bEI/MztMRilkZUA5Cno9cThUblY/QCtlaEpUVlFOcWY8MzFfPX11
bTRXSHpVWnRFe1lUVSE0N0xEPC1KczU2QC1ZPjZrcHUmcXJUdHh1Tgp6WUskP1JjMmQ5cGVUYyNl
XlMrdlR1QUNvYTVSQ1k7cFRzbmBrY3QmWEtZV017b1lFQnZ5YSVQcXY9PHJITTYyQDQKemBgWVRD
O2c+TEFQLXNhdFA1KnlKSnd9Xyh2RjRIcm1yZ2ltN2N0MlBhPE56SXdUQjtMNW01XmVXYnJrSVNE
WE9BCnpzI3B9ezJVMllMVlgmN2hMNilhKD9CZ31BKmVCNmwxanVYdyg5TGtwYntmTk95KG17YyR3
V25vSlQxITtYNj0mQwp6QCZ1MFVeM3pDS0tfZztgWHoodFhWeSY3QUQocXtsOXc0UE1FVGY3SlV5
I0pkdE5CbFUmRTEySmxEPT09STVue1YKelllTk1rOXA+Y0owI2dpVFoyKlIzUzZ3ZiF5Xnx0K3I0
JEMyZUN3KDY5Vyk4RS0xcC10OX5eSm12PipPMDJ0ZmR0Cno/ViFjMFMxOCNKKytIfVhaKD1lOHhA
dVl0JCgrdHItOzVrOFhgVUNuIXJQaChpQWl9UGptXzJ5ZEwkK0hWKmIlUQp6bVY2UitKSlFPREgr
cHR4MjJjOSFyPjhFRnpySXVZaiMmJD52eCU1ZDk4NWU8enR5eThpLT9QeW43V0w4VVNzeTYKemtu
SU0oViY2TCFYQCl1RXs0dE0jcVgyK30xZjFhUW0rX0I3aWZJVCpVe3JCVHRtV2ZLR0ZaViQpalAz
SUhPNzdXCnpyYW1xZjx1LXFXRFpsLVo/Zys8S19ZaFFgd3BBblgwRUFeTWtmPH4xeTs9cVhOJHF+
YHdfPXIzK3JMbHtqRXNOdwp6Iz8xTHM0NkJSLXc2NEp5PmBpI0owWUFLWmdPRFJKM1JMfH05ZG5V
JjVHc017USFNZlooRSlnaUYoTU1FaHZxazAKeil7ZUhvYHB5XmkwTSY4VkVeJUd1OXVDQT81YGlC
d0A4VW1rbSkmYHM8JUB1O2sqZX0wTSZtNztYOTsjc2lAbSglCnpqNGBpYjZPKjduVFMtNm9odjBx
NTdfTlQjKDgxfjJ5YmJCIyMybWhUcFArMHglaE8hZHljQm1kPV9sSCgpVk5GWQp6OWpUfWJyeGVs
U2RoY0AoQnt1M1NkKThKcXp2VDt6OHhoRDtFemE2VHRlcHkmMEZ5OEMlLXVaIVZkPjdrJkpyZ3AK
emRWI3l4M3liPEBYPTErZHtGQilMNVMzcX0/eTZgaTFfcmxPd1d8Qn15ZjQzSDh5bTlZT3hjQU96
P29vMVcocD9wCno5ckw3aWRIcmJ6bmBCYFc9fWB+RmhuXmdVWW01MlZmTEBlZm5OLUJqK0c/djtx
KnhgdDI7QzRFYHd6c2V5SCMySgp6dFdFY2A3P298NyZYbDhgVUglSmFCS2YjRFlMe19pPzZKcEBT
VS1kPkJ2YmpaU3s2NXVadzYoSVUyPz9IVVVxYysKem03I21raHxIQEtmJn54JnNvcGNTVkBxcXZU
bHpBbHp0TGtTJHRHUVRWaGxncztWUiowcjA2ZW9MWmpjeilANFhYCnoyZT0oZyRkKl4lKWVsTHFN
P1Y7Tkp8eD99cm5LS1h6MlJZJEgrS2VkSk0oeE1RYis4MVNLb2M2N0dQNFRqZWJiawp6NlBTLVhg
OyhAdWp5VWNTV3BDQUElRWtDJmMkS2ZDUlFZXj4yfloteShQNT9YaEl7YnlzbUdXQURuYnVLOyNE
dnsKemU/SnR+dGpuVVRTJiYrPmY2V2E2JEJqT3ZzRDdoY0E3I3xGcFgqeX5VUTtZdzlKXzJPJjg0
OTU0SClhUFohbV8xCnpWe1M8UTx6fXkjQzJ8b1lsY3dfJTl8Q0ZNZkFNWXNeY3V8YzhtdGdCQ2Eo
ODErMnthamdYTkQ1e2xQa0MzRE1TOAp6em91NWNKO2dHeip6b14jcFNudFFhYzsqdyhSaWlMKlBm
cEZHUXQ0ZGNgOG5RNmF4PjltUkl6ZmwhUVFFMEdOVEUKelQqYjR5TWMtV1Y4RXtFfXBzRFVsYXFf
aEAoYnpLTCg4bnA/T0B3QjliaUZET3BZTG9WKCp6eVpsYjwxU248YXN6Cno0VWNZNF40fU82eSE+
UGJoMjZkfjEwWmo2WGJaY0p7eTNKckJ9UDckODQjQzkqUko4alhqbStLWCFSWWB6KTtJegp6M2Fe
ST03bT5ePVYzMUZVcWJ1eUpwOHE9NHt3cXR4YUs8fVlmS05fd3EmWkd6LWF+OEojZWlzPl58V192
SVNPSVQKekdpSyQ+ZWx8R3MpNlFFKXJOeS0tcjN0K25PITFyJldDPFA7QH1IaW05YFprSHB0Ul9D
P0xhUEVpflYodTkyJG5GCnpLckE4eDZ+dDVlMVlURjxZKUJnJmVOQXopYUNnbXpROGU1LT1ndm50
cStES2lJRHgmd3g9UWNaYUE0bDBLZT59Vwp6OGc8VGhRKUJqTUxmaE95bHZ1RlFMKSpDdHB8RVlv
Y0JofUppZ0NROHl3SVJXZHV6V1YxWV9FaiZAdT84LSVVMXUKenpsTDxuX0FXMyMwVDw9T054YX1z
QWBfJWh3dj5mPFo+MzkqX3M/cyR6Mio2c149Z3hzbXc3ZWglc3UhYHM9ViN2Cno/UVFGOVlLdHRG
bHg9dHFfKlohe3tvaUBtOFMzaztgPiNwKGYlalhNKmp5WXw5JWU9fiE9ZSF2Wm5URyVDe0lXPAp6
KStga0hgSX5MVy1jKVFYUFAocTxYIW5iVWFLcjskJmRSdGsrODJjRkBBQihjcnlALTYyZVhOfHR0
VStCalI5OzcKek05Mm8xNn5qJUdmfGBMZjFoTUBnVUhKeHIqdyRNYG9MR3RzPS1TaiNkNVheXj1B
IWBxall+WnUmJEdUN3xEakEmCnpWP09ydXs2fUFVb045bHJPb1k7JDk1cF5UX1AoJk5gP0Q0VW1H
aWA0V3ZBRFdoZWdCKFRLUnczU0ttRWs8U1c/cQp6c0NjSi1hRnUtYj99PDtFTFo+SiNNJkpId0lf
R2I9ZX5OeE5lV0kweSF9d2o0YCslOF47clcrY0Y9cHppanktezwKempaNXBIWHJmfF9me3EmYF92
Q2FmV25fKHBGXj9uJSs8M140eSsqdylRcGBAfFdLVEYrUyoyVjs0ND4mTzVrVWAoCnowalUwOXM0
YXR2PSF7cn1fRH5TKWdfKyFuPllHVjcqYXg/SURRUkotbTFJS2ZpMyRTKXJPMzNCcHJFOGxJIS17
fQp6RjF6Un11R3dhbDl6ej9qPjlrYC1XdlV6WSM3NzR8V0ZfcCtmI1JxPSplfCtFJm5HPk9abnAw
d2F+YmorN1gkX2AKejJBZm9uZWJHc0Fib2ZSdUtTLUJOeyZMXmUpak9tOU9yYHJzcihAeUw9bUEw
Qz9vVWk4QzEraHN6X1JiKng0NF9mCnpVbEg/PiU3WWVEVDdhOykkfDJlbW9JKEVIb1Vwa0xOfFV1
NDdZRkY9ZVBzRGlEa0I5Y0Q+JS1jSU1rI0JHYTJfegp6cnI3Zjc+SDhHeUJuI1RDUEg2ezdFamA7
VmR7UT5+Kn1FQjsqb3xGTlB9eUx9dm9ONnVTfSQ3dGYtfFlteEdsX2wKekw2RzYrSEhQd19sZFkt
Yk9qT2RuS21gV0heUHRyMFQ4LXRRRyN3JHtnMjRtKWxMNHtzLTBiWlN5akRBaXE+fn5hCnopM1NW
Z2Q3bC1GIUBJeyolMWd2LTt6TFV6WVJKPi1gWjx+KipYT30lezwlO1EtfDFRVnlwRmU/LUBSLWNg
M1RSPQp6WjwmSkxlbURob29Lb091R3puemQ9SnRSLWJjQmg5K0tCK0MlSlNHJW47Kk98c0x3dVo8
KG16TUlZRyNZTCpNKGEKelNJbmlTbDsoUUx0UkZGZCVhY35kIyNPS1p1JmE5cmZKPk4hZGApazQm
aTtGSjgqbGM2V1BSQV5ZUXJ8ajckYWk/CnpDfDl7YTZuOCRWZFU2ZEI8XmlVaWFNKkd8RXxZQTYx
NjFGWmBTMW05O1dtUDR3Vjs1blcqOyoxaUhqVF5PSXhFbQp6bnl4KUNHeyRJXkVgYV9ASCsjeDZ0
eXxVaWcjRk9vTUJDRF9DN3tZI0YhZG84K0FfUER4M2QqMSVvd1IoYS14VSYKeio7SnwocFBSeF91
VyRKSjtVRUNiaU8lWG5oVXIlbXpQQHcxYyppZmw7RCRYaWA4SHojXmcheUtgbGFCZVgjT0Y+CnpO
fUpUMUtxOEZ1My1PLT9eQHN4PypzVm5ZT2VzZEk+fD14OVJjOGZ5VE5odWdsLT5ELXpaX1N9R2cx
PWc/JSEoZQp6TTV2YStvVGI7eiYoYj4+bWRpYV5fMFF2ckIyd3cmR3lJQEB4djlocyhgPUBqMnwl
KXhuRFQrMWIzNCVLLTBONjYKenEpcEduR203Xis8OyFfPE0jWX1+YDVfK1ZTbDQ9TjsqPUFQcD8h
VFpzamJtSjUkRzdKTF9ocTs2QT1GMl9YXmRXCnpyJSFibGcleD9qZiQjOGRNT0kxbHI3USUhYFVf
MDA2SSRLVlZzbWpqVlJkfjhAQm10NUBmM1d5OX4rUXFfRm8qSwp6NGZgY1VES29kKmE1VDh5QEgt
SEAhIUx8MXB7djZ1PWs2O1BEfkh3fm90YmdSUzl7fFZteXdUcklGRUYyYTtIX08KenQ+P2p5SzBG
ZUJqZyhKVDk/dGxuPGVmP2Z4dkNFZTRKUmFsWGs3a2dSMktaMSZFUnBBM3tXN3trTStgX1JrP1Vn
Cnp6V2xycTRaIUJDdURFWFE2VWNuP0JMckQpbGBfSDFEZCl+aV5YSz53R2F6fDQ7e2V0K1ZEaVFr
cENzRDN4TTBgawp6XnpQTUwoP2hDVnFCYCNeajZ7MHVRWUApeTBURCMrcyt7VUMkT3xKJmFmQjNu
M01tN2ZmPSRmZWVNOW9lJSUpUzMKeiVJM2o2VkJJOygzTDs3ZE1rUFZBPyUhTUtNc01eTnpDZFUr
PDJfRz1DeDV0eVF6IWJPJUpYaXVhd0EjcmNUMSpqCnpjS09sZlhJdD5zaD1neE5GZnN1YHNPNTY9
P2VtcDxJZmAwOWxEPiYqci0yfXBEMzlaN2dIMCh2RjtxdDQxI2RPKwp6X0d9LV84dGVNcU9xdWZC
XncpWV8lN2Q8UFNLKTg3JX1RV3FhPDBVU2t2Jio2cjk/KC1aQ0xTQz1VeS1JZCZxT2EKenRAPXpw
QmpFQGUkWVRkYFE1alpoPCFeU1FOWHUpcnkxVWdQZ3g5IWFmRHlzSWZEYigoTiNlYTA+RGNgaEJn
NHhICnpgTnZwYCEmZXd9T2lXQ19sOEFRYXVhJXBJcHV4dzVrJj5QJk14SW1nTVEmc0o2Pz82OEVh
Pk80OFV1YUpgZU9gcwp6blp2bXxmb2J4fkBzUVBIV0o8cUFhU30/RVVIVUw0em12VWU/aTgkcGk4
RGhMRjNNc1RtaVg/KElLSUVpeFZJcGAKemFmaGVUWTB7SSMmZFNCYjU4NygmX1EhTWQ2JSZ2KSNF
ekltb2UqaipCJWUrQGpHS2l+PHw9c0lxJShacjxLcSN1Cnp0bWlmTVMjUU9FcX5rQDcyYTxVMEtf
Pip7ZjNfOz8hVChJUGxwK1QpdHh0eiVjaVhWU3tuOVVzWTRlUHU2KzVuMgp6UXl+bTFKWiRfcCh4
YUtSNElxKllNXjR+XmY+QzwwR0RiS1Q/SD40c0l8Mld3KE57YjBBRiY/VkNVWj9QanFYbFAKelYz
d1hXOTRleXZjV2VfM003RH5+WlRTbWhoTVpeTC1OJiU3PkxoKUx3IT5MO1E9KXUxZXA9alB7ZCZl
cmZMdmZjCnpmTUopWTlVPyNPTyg+eF5QKjZ5d3koWkwrVlB5ZmFjNi1aKjJ+b29lPiVqKCojfk94
c1dfPllpQCUoTSpUSyUlbAp6SE99YXZ4fX08NnBmNzAzSk9vdG9uVkR4PCRyOG4qVm5SZzJTd1lB
JXN8YzwwV2U4Vm5rS1J5byNVJE8qcSFOaUYKemJIUSopOHRRPmsmZFp1Mko4cGlUK0olWHU/TGNw
bjBjQFB2O3JVdzBzJDJQbnJoQEktVkhlYVZeRF5fcHgjMzIzCnpCTk5RO2RDfTY+bjFaZztMLWl1
ej5SNzhuTX1jWX5ePGc8bEYrU2I0Syg7a3VaZWE8VVlXOXw4cGJnZXpSMCY5Jgp6cGxASSheKVEx
TDZ0c31kZEdHalJEd01DcUNXRF9XeWlYeypyYCRWM2otezhxbmxNT3IzblMja2dRNUN5MGx6NDQK
elMzaG41SlF2VGJBJCUzUT9oc0UjNT1DQ0xwKz5zO1JLQXZ8YWZYYXU/JD9LX3BBdjFAR0o8UWJZ
QWJuP1Urbj5rCnoqVnVvallSekAzX3ZOcCV5QnVpJFFndUBsYH4+YXFOem5MWEtgTlE2YGRqfWB0
LU96fnp8UHlVV2xtfjUkYjZ8Ygp6OF9pSj9sUjN5aDREXzUjYmI8RnQ2T1JkPmspbzUocTNEWTly
I29KU2hPM3RvPmRXNDZ6WlpmYDNUUXJqZlowWFIKeiMpLUR1OERpXyhUM2ZoaihSNTlISVhKTWRk
SHNqYHtCS2t6cU1HOFlJbG1hbXgjYFVla1JLMm1idCMlRUwjdkxYCnowK0JWMjhWJTxoRDNuazd7
bGBEfEtecmV7IXwxNjxBZ0kkUXRFMSt4QllebSpIdjxJazl5e2FVOXBSUCNVS2ZvZgp6TnxWZFZE
O25Vfj5Rb3pAcU98ST5IcCV8PChrcl9zbjAxJFpATnFOdSU/c3lPJmE/ZzdlUGZTNT9pbEY1cXh7
dTkKemBWRE5ObklFMitZaVFTeEd6Tn1NNil5QTNILXN5RmAtfDB4ZWIzaWBAQUc4Kz9ZcCtXP19r
Pi1FdmsrP1QlSFVBCnpsRkRfZTFCS3s1PEdiWlBQa29yKFd9ISZFem1KZE42LUtwa1BKa1YzNVNJ
LUk3P1BhWTQzT05FXlQ/eVBRRjxDTgp6QHdzMm9tcE1Db2psRXVDNz1CSXozSjZIKk85WW1URSY7
akRmKkJpY0A0dT1YJFplOFBwfSs3Sk5ETFNEZlZoaHAKekcyZCRpO0NhLXhgb1BDZEUhN0hqV25g
Kyk5Pzk1UW90WChkR3pndFNLWWYzOCkrUn1mWXArRmtvak1JTDdpcC1kCnpYdHBkUUIjR3RzeUJZ
WHBgfjBxaSpXZnA4b2dodEo1UngpQmNsdH1XTXNsP3Q+QkZ4fTszLVYtdT9xQ3BCYTVabwp6MkZJ
bEFYbUJ1NWUjLTh0Oz5NMXNjPl58PkxNTmEldnE5VSpvdjVwKXhDdEgobE1OLXF0N3ZeaiowWHRr
IyhTZnAKejUlR1FNaWlQQG8+IyZfV0l7SGlMVzU1QXZnJGE/eSYjTm4hdmhHbGZrLSVnWUAlb0ZT
WkV1clB6Wl59VVk2UGN3CnpgNlkzSSglWWt3NChpfmY9Y0FIfXFkUndtbGRjQCtvN0MzYF9BYGBa
MWY5WDFRNWZMZW4/SVlPKW42WER2Unw5Tgp6VjEzezMlN0NZRGgofGMhOExzQmVAR3tzMXtDYyQ7
K1lCcCU7Kz5pekY4U2pmPntBQDkxT1QkdkJQJjk/Q0lUNyoKei1kPnU3JlMjZ317STFMV1MhUDM1
QTJHKThJUCtVWXRXclFoSTIkX3lTQTM/YztWPjN9UHJQUH1UelhVKHRXZ0k1Cno2QnVNTEJ6MElN
SV5rQ0VBX0JxJUBCbH1qKFM0S2U2YUpIRSU8YlJNeUNGKysxIz1EVShPK3ImMEt3PCtzUUk4aQp6
fEV9YWE8fEd+R1MkVGY+Xzg7PSk0NU1yNWpPN0ZaYClSNU5HP2RuOD1lVD1SbnQ9ej1GZDB5Yzw4
QTU1JGxRd1kKej9QP1FhVlNEPURuVmp4R2l9TS0kZC1LeDtnc0dieSEwTmFrK3YhU0BPSU5TeT0y
VDhFeSZgKihFSD03K0o8JTYkCnpNeVVeKTlNe1FvKSl8PHAqJF90fFBGUHlMKiMpfSNVOXgyPGhr
aT1We25ySF9UaTV6dTE0QmFDSkxFZFIpYzBEbwp6UERTQzxodE1yez11OHczYT9rJmluYVZraWNB
P29+VDxuYzJJfHBtXkBIYk1qXyR7VXhlR2N6c2hAPlpXK31tK3AKekM1fVdTYlVCZWwha2RJYmlp
UyV5azgtUnNaVWp0WHtCTG10KFIkeCQ4WmFrOTNfXzI9eXtYRD84PlojPkdNNVk9CnpJXldScnUt
S05HVm4jRGtEWUk9amFnI1FQbHdkZEdBSFQ9enFlNS1LTFJsd2BIczFacXs1Q3xjc2JWRm9mKmlO
agp6aTU2ak9iSDUrMDh3Z3BhdWcyISFCNENVY3s1UkpITSkyaS1TTzk4NT9aTkY5JGY4anZvN3Iq
RUEqWDg4bmB1MEsKeippWE85d0BRenpLKSModkgjK1l2WG8+fFMhcTxPcTJnMSM1MDZzaGU+fS08
NkZYSkFgYjkrXmF4QUA+cF9GYGBsCnooU0V+WFduJEt9R29qYzVmeEdfUGlLI0ZRP1E0c21AaE4/
aHMqVTtTR007eyZzKjhWZStUP1UjV2NTKzJMPX12ZQp6Q3ZRX0ckdS1xaz9hKXBzQ0liWFZHclpD
a3Y5aHsrQ2RpNUIyM2BDVit5QEprMClET0VhS0x9QHNINjNrO1FtUEoKejYkdF5ZcUdTSEItMXYz
ajEydSpAWFpTcm5rSExDX1dvQyF5VGIhbnloZ2lIcGNUN3ZGVVltTlZkR3daVSVCX1ErCnptOE5C
c3E/al9iZ05lbmRCS1Z+cChiZHc5VHQ/SGxscyUmUT47UT1wOCRvWjw0fnctYUNoJUJMQSkocW00
dVR9Sgp6Y09EaDFPSjdlLXYrLSRHcGRWWVJtRig1e3hHKF5JI19oNlFELXNWJiNrWFkrUGlnX31T
Wk97KjRASH1WNnhzN3gKekVqdFppZUEmWmxUcFIyVFJMTGMtbysmWUBPNEFTTU9wIW1SbCUhRThv
Mz9zMjFKZEU5bjBfQDdVcktOPVM3eXItCnotbGhCMiFHSURpZ1l+T3xickRwISFYRWU8YG03Y1Jq
SWlGS1ckKCZ4YCtgVH4pZV5+RiZEVTtfTj1yZUBeUiZ2ewp6Pk5zbG1VZTlqN0BYbkJXTiFCJilK
S1dHRDw+cz8zISgpMXdCP181V2dQM2pScEUqYzd5fWZEfHsjLX0tSD5yUjMKenE2eEtMZik0cSVz
Xjk/byRJc3tkKm1MREpwI2M+ZmczJnhtK1FgSE9QP0hEKDFqeitTQSZjbEp0MmVpPXVHVVIrCnpI
Vns/PDExPnl8VSU2QCZ1JDJpKXlkPzJoMiYrbUg/JjhAVVcjWUE/IzhSTSRZWDl4czAjbERMNThu
KkAqTXVGRQp6WUR8VFBvb05UZzhoWk52REwoa1k/R2VUKUxjan09Kns+M0hkQmZwWG15eFpJOD9Q
TTJgI3pxZGZpbWBjbiZIYH4KemVCTlQoYXklVlBiSmNRS2NyNXUoY2VRM01vQE90ZUsqRV5YNTM1
cFM1YShJezAxQ3R7PEU7KVlLSGw2ISk8UDM1CnorJFZvRy19R3BMRWotS2BERX0tP0JnfWskZy0z
SEdWP3pHcFR9d0V4cHtnPFU2N3l2JF8xJjJYPUNiIzRmYDB0bAp6KyExcF5GMyMpJDAwPyp8TU04
a1dXWE85PXRwJWRKRlY7cGBRXmA0NFZZenpKVmR6dVJ4Z0d0bHltYTMwez50TjIKelQ0Y2w/c2Q0
JDhIZkJqRylYTHd6PjJGdiEhIUE7YVVXbXVmckIha2p3YFBGKjhaXkVDdk13fDFBTjU5TEIodEpl
CnokSSV1eWlgfV5iWilCJjNVUjxHc3Y9TzxTJFleSmQ2RXZCa20kPiZhZnxZfWgyT0ZVT2tLT0RF
UGopeWV3JDdSNQp6e3BKaGh6RT5EO2FmXk17VH1HdnstNlZ5QXN7OFQ2ISg1U2I+UX57aTxkQzYw
REhgUjtYMGBnTz8kUG1+K3NNbDIKel8wNSk8IWhsKFhqSEFLfGZnbE9nPzA4eDRoMUZVUUVuTXtV
NW9KKD9HUWNwSFZufUNGIz0xfUs4X0E/czhyQEhyCnpwUCZPbERIfl84NkE3TVpSazZqVmJPMk07
YDQjXy0zXlBpQUtZU1A0SDJUS31jYEF9VUgra3I9OCNkWjhnUDxVbQp6c3wkKmdHZjZudll9b3Z6
O1hgMCFIMDQ9cV51anhSKW9JJEpkb0wlKi1vVzw/VDVYM2M3TzZkWHt+TDA8O1BBZzAKelBGYn0w
dWRQbDdkR3dAVDs1JTQjS0gjJUQlbkBGfW9kNklJb1AlMiQpJGxQQlJNX1lzVkItPzNfKi11amNE
Ml5RCnp0U3Z8fUR2MG0hQHUpWj10blF3aloySXF9MjRyOE1kMXJ6Rjs0XipHVWU8KmVXaWxXNkFr
YzdDaE5Ic2UlIWhAWQp6TnQhNXFHNyRaJW8mfGBWYztkfHgmOTR3UEJ+cUVQKT56ZCpLKV5HNTZk
VG5tJnJmTE8kP0lEZVhOSWstRXZ5QyQKemh4WE0rOVZRSHVhbU1gfU5GZjl5bnAodlRVXyhHOGw1
V0BuamwtMW9qdHYqJWlgXik8ZUY2PUFNbU9XSF9Tc21zCnpLazxjZGJ3KUpCQ2x8czUraWl0XzFt
Nj1GdyUpJDNfK3J6SjdlNTRyaEN8ODRqWTwrRzlNYmNQPG5Bd0U5Zn55TAp6X0s1TDNgNmJOazdP
UTR7cnhtV2lDVlRhSSpRYW84PD8lelVjfGRaNVVQMXlCe2J5MnhjcDg8flhaUHtmX2NRdn0KemVW
KnBLNDc/M2pJR301QkFmT3pOZ180cG5SRiZBcmg0az5CeT47NmN3WkBuQEZZekt4PmNBX30oVWRl
Vlo/PDJzCnpXP3d4JlpVSjA/M3RMbzhjSlAjVXI8XldOSTgtRnVXfHw2THtkPXImaGRlRn1TfCZs
c2l0bXV5JXFOejI3M1Ihewp6KXNreTkhMElCLVJIc1E9OWBuWiVIcml+X2B8O1BwQ2p2dHgtez9Z
QGt6UCRhZnMhOTdANj99TUQra2hzc0Z5RncKekpja3k0eXM/eyUqV0ElKjV5NVg1ajE4QTNBQysl
LTdsbjs9ZHlrdSN4WihfIzxXPGRZcWhEd20zQyY1IWxVPEF+CnpPM35SbTwtRGAkZCN8TH1UWnZz
OWBPXzF0bSgkYW02Z25ENVlVRWpiS1koenpqKmh7NyNzRUtYTHRMXys2bmVqegp6ZDVmRkNEfnFL
dEt1SDJjOSl1fHpBayR1MHBeMSpxMTNyPUBRTEs1fGowWT0+TChDK3h5fDJfKSV2PSo9XikxUnIK
ek55bHtlLWU+ckllNHxZMk96fCQ0amltTU9MO1N2JkY1Qz1qTih7VnNENnVlJmRJWXd5cV93Syst
TCprVXtzaiRhCnpDPTxyT09nMFNFTTYyQ2opcUEob1hOPzBqMUJPWClOaEFYQHc+M3pQdXs1LXUj
eHxiM2BJeEVtKX01fUErKX5AKwp6XilldkxzV0l8ZTVhQFJPMmspZmRvKUkwZVBoKT1jc1QkflVk
KFdaZUgoJWwmZEppfTcpdndGKDBSdHdwYjV1cjsKemx+NERQTTBaNy1eMjBsOChUcypKbWwyR0tK
ai1RaGQleiR8QVU4O29sVCNRNzBoZ1JnIUtGeSV7MURvKiNyfXFACnpIdG9QSzl5cWdYJWFSQkdt
YnVkVktAd3ImSVoqYUd0eT1DYj5YJUJmPUNiWUVaezdhRlhDTzhZOW5Rd29yeTlIRAp6czA8ZiE0
d1Y3ZzN7PWExLVROUGYoRStNUSpVWVN2em4xNTNAKFUqYTF4ZSFTNUZHa1NPN2Jzc2o+XiVecX4/
O08KemRRPDd6NUVYeHtXRkNEQCszLWo7KURnRFdOMGlySzUybGJMJkFMI0R1Z1cmO0h7Zkt5T1Zs
PiUlWj0kakU9THVUCnorXiRPRUo/SVRfJmw0cl89OylXNWQkJFN1USgmNilvdD4oRXpeNzViNWsj
U1leYFlBQSY8fEclb282bUs1eTY8eAp6biMmWFFIOzBhWTNKK0kpUClvSWVTSk5vTjlzJX5xajVO
OzNAdVNffnFCST83PnRpWkBuIyMoUU1pOSY7dGZFRlUKejdJbiY+M2dvYjNNSilHYUsybHVvKipg
dj5IXjJYVyt2WGp3TEhHQ1h0NCgzTE5UUFJLP1llNjchTz1AblI9NlBaCnpkMCFGbWh5IUQkPnA0
MCplMnJhI1NIVEFjM29RSlNLemslaD94ekp2R0JRPyRGRSR4STw/KmY3a0Q1bzRgX2JaTQp6R2dX
LVNPZ2IlWCU+R0RBZyFCeEtzX1hCIUNCYCN3e0xINHpfRkRpbj8kPk0keXdiUV5ZNUJUKmd1XzZv
el9hJCoKekozZylJS0N5Nz88RXVIWEpsTEUmJk0oWilqX1VrbzdDPXlqXjB7PEBrcHYqdEopYFYy
Y3JTKiVaMUp9b3M7U1dWCnokQFMldiNXQnVuR2J+KVpZQERNPmZ1QTJQWmhLYTQzenk+K18mPH18
X0h8cFE9Jmx8LWI3UnJXMyEqejc4UThYPQp6X1FuT0pVWngle1JtSzlJY299OVU2TDNBakYmb0de
S0Zva0xSR0FzUmttTFQqQDF2d0tpPSs0eXomVyhBWmVfVUwKekk2cnt7WSleI1owQGhKcDMhcWtE
PzNvdSZ4UHBGajMzb0I7LXpLY2BaeCgkd2U7eXh2KlB1U1kpPjN7N2Z4VERUCnorKlV1eCRYWjA+
SHx8MjNNZ3tlcyo4ej49dyQ3ZG9XKlhUNlcxazQockppSHs8YkoqKW1XeGsyYWtkJSRJKDBHOQp6
TkpqaWJUSVRCQGZ+RGd9XnYmYVVhV19ZSjApQmluUnVVRDFaYiV6fEpPUTxvLWdLI3JCPDZEQVg1
QDJ3VT5gQmEKenNSND9WPENmOUY3NSFvVlFzUW96VEojJGdsQF4oayg+cF53RX1NNHswUVh8SGh7
SUN2UypmaVpJaVYwJXNFa1UwCno/MWN5bjFrNzA5dm1GSzxWSn1VbjArdUsweH5vKzEyX1dGXm58
Wih8XzYrSVU8Xn5zfWp2R3xtNmhNY1VYUGF7Xwp6ZSR8UShpand9OXo2akQzQSNncW5LbV94Uyoo
ZiQ3PyRhNXB1PlVzWD5LMENqKHgzZGgxUjZgRVVUPyo5YXl0Xl8Kek5WQnE9RzROT2JRRX03XjB6
KDc3OUwoSCVmbj1VYiVse2V1PkNAQDxMKnx2b28qaXtwKjMrKi0kcT9xP0pUO1JZCno5MSlkTC1S
eyFadjBrQzRQbVN4cTZ7MEp1bGNXdno5RWhsSDlyKGk8SmBCKUtaSmktSWlvLT92SnljMzZhVVN8
RQp6WmxMcmVOT3ZrVDslb0peZWlBWWpFY3EpZGkpN1FsTTV7QT1DP1VUZ3F5PHBRTzYzdCZZbWZ6
RD1QV29jJjE+KDYKempOYVEjY2RQOWQ4b2JUTGtzbkdZQWdwaTFVZlAjUjV7XklVU1R6V1UkcTJ7
fXItcUVtUT5tWGxtSXxZWkBefmQkCnpxNkFQJlJDQkwyczAqeWdPWVpRPlZPe189ciZnQTVFNTZT
PUBYOW5lPHU0WH5QLUIweSF8NGxhPVlhK3JQZyQmUwp6O0hMfE1fY0xGfkQpNnshTCpaJmFQdG11
RHckR2otelF9bnA7TSowYTVRcXY/UWxIODM4RGhRLS1lXzVTSVhOeE8KelhCNVpacV9xMDNPWmhj
dyRwU3BlQDBScC1DJWk7fWZDUFU5UW1yWk5lbTFCLWwrU2BWTzcxRXJ0VWdxMSk9bUV2Cnp2P0k4
M2krIUNnayFQYm41Zk44aytxMnNMPmcyLTFvN1pZSkZxVXUmMW99WjRHSmI0dGdIPW5vWVomX0wq
NDs5PQp6YDk2bXh0ViY8UEEtREVRdkM/WH1WYGh2PG90ZyQyPlhIUUhtfWEke3VwPHYlZTgob3tD
RnlzZEhRViYhYFNZNUcKelJzQW1yXiRifFA8MXIyQ0g0X2hLZH1UPHApdDErZEtvX1JQdmI3UWpu
UCZIZGc7Yng/ZS1HbUNHRDgwNSZ9MzsmCnpLNnp5Yk9JOXojWDtkYTdGPUw+cSRCaTVKQTR4PlB7
e0BuTnpTVkMxeVpOMDk7YXd1JDkjOTJaUjhXWHspSD9ZdAp6KDs3NT0wRXpOakJDYUNpelJwTjc7
RU5UViE4YUthLWBVeSooKEVucDFnKU4yV2VXUXxKcjs+MnRlZ3cmTk1gay0KeigyMz0tZmJ3N3s9
MnNvZXY0MkBGMUw5NndxJUhyfXRkRCFRMlRmNHA8eX02TUVSdUdDUWJRVVhWS0tDSXhnO2ojCnp2
I14oJHJTYkkrbm1PdmBJQm9kM3FWLUc2eE1hQz5ie1lWR3t4U14lQkRSJitZPlNQZDVnKiZiMm9P
fXo4N1JmaQp6cWFUfUxBc25KX15aM1NCRStJc1R0TlM0QFZOX09+dmR7RUZBfXtKflU8dEYpSz5v
RWdKKTdIOEUpRzkpT1U+KGkKelJwWEZFbDt0cFVwKl9HVFkjcEVBUy02NVktcUJpOTVxRkJnTl88
U0FfQlRVP2p2bF5tNzBnaClLbDxAK3VacVV+CnpKKzZPTiE0fE48O29GLWtrTkFndDNVI30yZGAk
Z2Y0aFI4dEhTbThOST5EeHltITMlVV9neEltQklyS1BmQzZILQp6ZkYhR2coVFpyaGllcUpGaXMw
NTRzZGx7fWx+MEdnUkxncTl5ZndUd0RIJkVWMmg+I0oheEhEO0p9Q1g7cVpEXzsKenhLRlVeWmRw
cilsUSMmdXgweytVYkAjRkhEMWdaJm1laCFUZTdwLW5aPGg5eTIzWiMpLTBgTUZMPG0xJiUpQzgp
CnpnJnAoSmhsQnJhUGZQRD10SWl6KTVmNXwoTSFiTj5GP2tWODhLSnRYaGg1N1RGfkJhQFU5MEcj
Q3tkO1AkMFgqdQp6Rjwoal8oTVVIbHs8eVdeU3x5NCNsTVI+dVphUzJIQGxXY1Q8fDRmUmQ7NEFK
PUFqIXtra1BYbzsleVA+ZFd9WFIKelcjTE9NNWYhZTNRQFA4NnBrRWN+PG5ybDImMj5NeiZ0Qz9h
VUZJdW5kbWRBJkp2TWtaUkpnaEhQSmQybkxGeEhWCnpaQml9cChkUnsxbmpFTyVyQDwhcitmOH49
WTBxTjF7REZ4RiRQMWZMU2B4OS1PMClQO185Mm10YjR6WmR4MGl6ZAp6b1FNfkNHTkZMYkRaYnxq
dXJAVnhMJWM0ZWR2Ul5OcXk8MDw8RlheNiRna3hQNFFIYz1HTnE/PVd6N29YS19hQkMKemw+P0xl
M15lPClAZEB0YWN0KXhne19AWDJfMnh9QXBXYGNKIz9ObHNaR1o9UUgzNXJRNkRYPitoVilmLWlQ
ZHAtCnp5T0VGSGl5Jk1gcDZrY3g0NmFiR2M2PGY/bXFkZmI5QTR6Uz9lXzZuUGViMDBmWk49PEdr
dnw3REJHNkh4RXR7QQp6QiRUOWdZU09BYV9Ze0U7SzFWJmMrSFYoI0lZWnhXNUstSjR2Pzh7VDN3
cWI3c0B9PUJEKks3Y1Rvcz1BVVIlVSoKeispJHZLRGRvbTB7X2dyRUE4UmI+TGprR0BGMkh4RDNJ
eG1IT01uI0AwOShAcUFvaDFoVkYtKkpKfCtlMStUWWMkCnowbHlZemloZSlNPil5UTspdEY1eTM0
PG97JiNKMFotdmlLbCU8THJmQlNDNVJST1koeW5RcmF6THp3UlUtPE8jKAp6MHgpMUt6aFFFa2tv
XjVLO1BvdDc2MEEkODlpTHZfZy10JElJNUhLZW5NfmBVT1A4YFhkQUwtWSY7fWtjb3hTMWsKeis/
bXd2MnptUT91KXc+b1ArdD1VK1BMV08wfDB3XjJucGB1U2xGe3soQkJPenM9dnJIR25NbiFvb31p
citBI2Y7Cno2YW1tNFlaPkxzSE8tdSNDUnxCdmJrMnpGOUE7Y1RAYWw5Jjg5V15Eb3c2UyNHc09T
d2AlRVhrS21rRXtCMW54KQp6MzMqckBkT2ZjbG95YVA0UFMxaW1sc1Qtd2o0MGpGeyhaTEJiby0z
VEc5cDVGX2N5ZntVMlQrK3BaMjdBUldjVHMKenJLTkkpUDkqdjNeI0coSHNjez4yVSg/PXpBOGxv
PGw5ajhpO3QreTxZXyp5QXhGViVwQFkjQFcrPm0rOzt7WDlzCnpNLWJVZHRwYW5CMlk0QSUxTld0
emJ+b2NQK3xCNWNCaXxncXV6ND5wcFdBcnV1I3djYmZ5djNKSXJIWX0oQSRNUwp6Kk1ZeFdgVSpo
bTsoLT9BcCtAMSUxeXZ5SUpicmIkRkQ1N3wkYk52NHhNQSRDV3FNIztIN0ZiKUBKdHgwVyZaRT0K
ejNaM0xVd29CYVB5YWFBfDhGVih4R1JpWDErMmFFKm9NfFlJNng4dWBqMGlnSnF8PU9BITNGU15K
dDlsWWdAWE93CnpFYFc/M05GM0MobEFaKV5TdjBrWHJ4XyVzWk0zKi0leih0O3pMJWwoSVorJGA/
MDRLeHxNfV85RDhZV254aEgrVAp6Y2JHOEdEP2l9filJZS0lczJfY2IoflNzNDJBTGgwRGxaKVpr
ZzMkNWZWc3BCSiV0S0VsMzJ1RmQ2Sihee2Jsa1YKenlKISN5My0lJE5UajdhVkt8dmQ2QiMoLXZl
e2w2UUYzO30hPyZJUz17O3M2JE9ldj94dT42MUNnJV83fEMpQkJKCnp0QHhjKlJ4Pm5xbzc0ZX1y
blFNR3BgKDFHYiFVZFVKekshYnJPMkIzWTMzJmheRlQ/dlBpfVUwXno5YUo+QyZifAp6MjsqLVc+
KDFSQnN8VFZyX0xXKUZ4PSp+WDR9WDIkPzRfeDEhdll9MFJSJE5vNEt6ZylUbHhLKiRsWE8pLS1X
ZzsKejtRMjNvcW1YO1pmUkhGfFVCI3ctdF5HTitwRWgqI0ooTVpKPUh1TSYqUHY8RlgmX0lvPE99
NUtpZTl9JSF9JSo1Cno1b01tfEQyfmVfIXtfVGQjIU9wKzUmOWhBTG40MFAxKEckKzxFRyQxdGd1
JWQzY1kqSWphfD9sPXo9PUg3YCUpRgp6Rz4re3Bua29eP1l+MzhrSncpNmR2PXtGc2N7ZGUwTl5Z
K0ZKO2VNO2E5XjNzMio9VGI+IXFXPXc1fXo3aCpqI0QKenlkZypXNnQ9JTN7REI3WGQqQFRDR14z
dGY4YXxFOytNYH1IIzYmOzN4ZWlHKVJwPllmTHp7WmlncCg2eyRVfldQCnowSipfPCZ9NXhNMzFa
LWZIKlphSU5uS0ZZal57YyYzQGp1eENBckAmPHNYdj13UEd3YDYmYXhpOU1DdTghVnpiZQp6RG9t
T35ELTQ9dU5QKmBicEgtTmtCJCRheFE2Q3hwVkYrMnQ5b0BgUV5WKU1feG1GWDwmRSZURlhKVmUr
ck54K14KelpGciRfWVRjP2ZpI3IpeE1sRnpmQlNsV2soTkJwKWRQJHktQHY2amtMJVRXTUYjZlla
dFZZNVJgVkVBZSUpTklDCnotU3hQc2kpVDZ0Si1iZl5HSUsjJW0xY1FqYj4zIV4zZ1U0XytoazNW
KFhpX09lc1A5dVZEQlRDeyNhU0g9d3RmYwp6QlRuZjBuX20zWiNZNCM7UVhANn1PWTBAc2tSM2tr
KVR8OFNWUilsaWJXfVBeeUlLbG1XSUUkV1g2PjhYLSlsKVMKekUrQnxkTktETTBGdTtScEl2bVkk
KUlUNU5YblBZT2J0MTk8aXVTe0RMNkNjNlpnJSM9YTxqYXNOMFhuTzlxRnYyCnplfm9eRmtsTW1j
JDZFZmJEd35DKjYrZnMwJXlfPkI+UiE3LTE/ez8kbyp6JHtePU5TaktQRX09UH1ERlkxTVBXUAp6
ezwmfU9DcTRSQjAkMm5BU08lOzRiSjhCUUVeUnN4dD5TfEomZDloYVlGYThUSlhVLTlge35uPWdU
fSVlTWJfQEYKelI7QVkoYXtMI1BxMUEtI2UqMC1VWCpnaUMoITV+KWJpVGo0IWZFTz1ZcVohZUg0
aUZ0bkdrUGZ1NGluVz1wUzZXCnotNjl0V09KUmtVQTI3YiNDcC1waldtMGJTeUBjNH53ei1jdXA4
JUY4WENNSGo2Ml4lZHIwYGY0NGxzV3o1KzRTYwp6T2FBNCRTc3o/RGgwUUN3YHZ2PW1oXnAtYHpz
a0shZ2NnPzwpSj1vIU9MNUJKcnJkMk0kMWFeeWlhTSlFTXlQYzkKej5COFRIdExxOD5ncWVSJkc3
OTxCKEs5VnlkI0NyRVEoYCVrRG1eRXpMK0tAYTZzclRaQUdkcD9WQHtOWnBKQVRjCnpRRmRnWEFV
MSlyfEczNUg3bmAkbiF5YSsreDUoZFRzdFQtUGc7JGV9NEN3eHstXmdYMnA3bmtLan5sQEhpe3xK
TAp6e2NFKVhrUzlYN0JuPVNhaDRPV1lIPmBWO15ZJktMN0BKWEkmUEVERHpFYCRjZkw3UFAkVHx2
JVpERGkkXlBWezkKeipYTTBzd3FlWDw8JH5MfkA7d1FAKGl7UzkyfVp7WjlRN307Ylo+QmVGZHk3
YT5FR1p7Kn1YJENTTiQmSyM1fiUqCnpvVmZSRXNjbHQyMXxIeShhbm92UktRTyRwMDlYVz5XN3JN
VDEtRD9JZmczdE1iJH4zdURocEN8ZmJRdkpqVmlWZgp6JEVVR2QxS2ZSaFVBK3gqNz12JCk2a15e
d0oyel59Nldze3k2TjcqQHV0SkJTNlJxKTRrYDBzQWxTYjZVcjwwPEcKekgxTjRPWld8Z2RiKitL
PStkdXc3IWFeIzV3MjRGaTdFN3MyJXkzNWZwTThWU09MaDNCbkRfPV9CP0U8YWJAdkB3CnpxdkN2
VjtORTtPP2ozVk8yPSVEJHY7KVJKc2pIRTUoSDJhbl9nNEB+U0lfd0xjdSlxK21iXks4dytfWXlS
d0BaTwp6ZjJeKkZgV2slZ3R0RFhFJCVAPlRvbDNtSWVVOWJoZjQ7KGpJVDl7PVU4VypMe3A2Vlg3
P2o8NTIlTjdrdiZ9SyQKek8jajxvRmhmLUF7eitSazwqU00rI2JwSXZXSUspU21RK1Q9K3gpT1gr
bSVKMll6RyExX3JhKGMxfDsqfmdoOSFoCnpMfEQoTWhuKmg9QjV+clk2eDM9OGpzO2s0YDU0Rldo
OUNTMVdNKE0wWXpeP25pUUxgZVVyIyk8Nkw7d1VuN3Z4Rwp6Z2p1fXxKPjlLdyl4Z1R4JkR2O0RY
dDtCanhMOVFqP0kyOTYtLWZBTiMpU2ZsQEJMbHAtIWJedFFyQzJMJGhrMjsKejNvNjFAVV8pKXxe
al83YmAoRT1JUkdPNip3ZExIUSVeZX0wRGExU3RRcnxZcXVmKzNETSU+TSo8Y19AYEM2ezdXCnp8
TX5xMkVXMDVabzNaRH1UTWZmUEVNZnUxMkVTdXpuaVgqWjA7cmdlV3lXcDFffmc0QkVXK3Nrdm5S
d0ZWIXhtTQp6M0VmVVcrQEdgWUo/YlZhKkswVj48YiFWKE88aTRrMk1KMzRrUWttSVloMGNFe2Zx
eER3M2MlblUrKExuWT8kOFcKeitidWlDej0rVkN6YWkzJUBMXmZZI0g1Szt6TVp5aEpfTChCZlJr
ND9RKH4+WHttWUdMP2ojKSVWUkUobkwlMTRACno9VWE0aWE7VkE5KUJ7LVgjRCQ3ZVZORDN9Zn15
Kyg+cWVuTXE7Y3Urcm5kVDtaVTQ/WUk/SiFfNiklX3pNdEt8VQp6S3xYdSVUWiNLKWo7fn14bmdY
aUdxXkp6fCpvbDM+bkpwdHByUj4yZTNPKEV8O2E4PnhjI2p6eWV+OE4xd2xpJF8KenJfVjA3V29k
MUBKOGR7ezBwJVQ2NFMxOHpzaURpZHEyfDlxJFY5QFU2NitCbjNlYFM7ZEI5VF5rOTNScl4wT04l
Cnp6UDJRbTJXZzVvektIXzdsaTMqIWlacEYzPSZNbTxrI2NNSUE4YG1wdnVHV1VxRCQpVCUkN2Vo
IUlKIWNHIVk5Ugp6bmtgRktzN3ozWSRfdUppZVVudGRkLWI7QEhQc3xvaCM4QU8tMkMhIUNlRV5G
KlFUTHV4YCs2Pl92dE1MR2Rja2UKek15dkBPTDYzUTR4fX5RKzM9czc5T2grYkx4VXRWbjVFT1dy
MHE2akd5a1FgcTZ4KjlkSztMVlVGRlpkdmBENXErCnpDKmtyIVBuWE5MNjg2QUdQcElWO0NSTE5p
ZXUkbkFNaXpFclNkeH01RE9vQlVgZHlEI2JKdU0zdTcqVXVFLSNNVAp6YFVyTzZqNHFCKUhzNmg4
SDchcFMyOWspMFdpYkRfOU45JG09QTJSfG5BfEBRTUZ5eUpmckgjbHJiQjJYKWJhfikKej5yaUBP
REZsJGYlbCFxeTBzTXApZEJFOU9LK2RaRitCbyEyc0MxUzVQfGVYMnE2cTJUWTlUO0QmKVpLQj82
JmolCnpQZkpYVypHS28lQzJAKUtBakBrc3l3aVNVRjZQPnxWNCg7ODJuNU5LUyZVP3FZYjJCakw2
X1dnO2l4YjhHVDw9MAp6JGgpc2BhXyVkS3FuVXBIY355aiZnb1lqYCU9fXNtIWU/VUpJXzI3SyZZ
QHdTZ1lVRXQ4dGVxMEUhfCN+NFZfWV8KejI/SUtDaStRU0dnNCp9NzVscFhNRDZ8cXNAckhCYF9n
I08tSXJSYSlvNGo0eDY1OCFuX08lUCNlfSVadkxlJT4+Cno+Zzg1eyk1NW91JVdwb0t0R1lkSUVK
UT5iMl5ZTk4rVm1Fcyh6JkUqY0FYN05mfWNjSWRgVnBIe3BCV294JHAkPwp6S0pqUGgtSTM8Pk5x
SjNwM2hRQHhZJkNZKUQoZCQ3TSFhVWp6YzhodEJaZkA3Y348cSU0azllOyhPSnhqNyNQMzMKek9H
bCh6RiRGS0phZzR7Rk8yXkEtNVAwfmtlQD9uUEtxck4raHIxNzctJVJkXlkjZVU0eUAlZm9Aa25e
QWdTcmElCnpCU0h1KkluQWk5UytgTD97OVZZMEMkQFdNRjZueShFQ2F8emhLdmdJMytiMHFVYnM2
OWZBN0Y7T0dtWFVDYXItZgp6eGNBeiZHeWE+UjhEcXVhI1ZCVFVRfnxaX25jfWVBZktnYj51YX41
ZmNNeylVOHNYbHJUY1lSWG9HY3F9QGF2blgKenhacUdeREV3cGZlZiFuNm1TeHhNOEhuYCRDJG5+
Xzt9Nk0haVNWQUo7Ql5iPm9CQU4zWFRzcVFnXlE2UGhkI3FmCnp5VmFrSE9ZWjNSKUp6czlhPGlw
ZkYtNiohMSUoXjlPQnt4JUFpclRSVUBZemZkZWlaY28zckdrVEYkX1JBZ2l1NAp6NE53d1h5X0o+
M2ElWCt7TnBrbklnKT1pVnpmWUVsRVJMUypQfF9kbmIhJWFjNGReOFU8OEFLPGQzU3g/Q1ltYnQK
eil8QkN7Tztte1V6OWoyYHtvUC1JPighamgtKyFWVTF9SG1QOG1zcnp0VVh4bWVOVVBCdVhUZUNw
NHs4YEZhe0tJCnpCNW9tQjh7a3kzRSt9ZEBEKT9TOzhrTW0rMD1aVjZgYGpeJERqT0ozd3N4Qjl5
dWo3TT9BRG1oenwtfUR0OT81Mwp6VSU0THczZ0NWTTc5ck9ScSMyZ2tVa3tDMzN6KCE4R0lMaXJW
am5wX0oxUndtTGUzd0Yxc3JTITlXbT9OWFhoTGgKei04QzRQbnhHVGYpISprZ1YzeG1LXi1Uc0xa
LTRGdFA1Mm5RYz8+LWBjWGRaNkN4cUN0am1oUWpHPj08RmQ+U1R5CnpoYVFOKXVZVWl5SlAyQGRi
U0I0TVVwd2A5V08hJVVjPzdtIzg8dSt9XmdAYm93REUmQFZgZkJsTG9SIWp0RmEhNwp6PExfI3Np
Ym54PTxpeUtxZ2B4ODRNM156K2Z9WGE1Q3hzIUJOVEtIZ0EqQ1c4TE1eZjtXTVplKEUpJk1+Zj43
TEAKeng5PkFIKnZUMkFrLXsoSTNyezdiRyZuT00pQj51KkE9O2MxPE1WUXU+ejhzRE5kS3A5RjJ0
Z3UoQDt7YXFWXzZrCnojOUwyQml9P2AxYktBJnVJUE8yNFV6PihFTz80TkomSmBtZHR5Zk5TU2Zh
bWNPJmd6Qi1ifnVRYWRicUEkaTJtSAp6dytOLUgqVSE2Pk41WlpkNSs8eX5kVnh9WU9zNCYmNigx
KyZ5RVgqQG84SEo8cXc5UGc/YWEmWWJ1NjRydmRHWX4KekFNMDYpQGQhKUs/cjFTYSM5O3p2ZkNE
a0xSM0VKNz85QjRJWSkhKUpPNEs0V1B8Z0FzTGI2dXhzVD0mOVZtX1R9CnooVnRrTVVQLV44PTND
cWBrNm5HekJ0TEgwNXgzUiR4YmhxUCg2dTw/bTY8MFU9R0ZLfG0rKHR3ZXF3Vzk7fUckSAp6LXF1
VjZrTng9cDZWI0tadnB1ZXlWaT5NdzZ3Pmx3ci10ejNnbXRrPVM0YUE7SE1NUmR1MExSPW58eEh9
O20kNSEKemZ8JSl2Uj1xR0o3WTghJFhPeGUlQEAyST9sNSlUeEglYmQ9KX5YOE8+QDI4I2V0fkZC
JTJmNSRuT1Z+YEgobXtNCno2LUVjPUptOUo7PTsoTXJIdGVgdzwhJXd4OEVmaz5LOHBxR2BTdjRT
O35lKiojUGVIUF5Nb2J4YFhTKkVqKFQtQQp6X1VnZyRPMnFgZk1xIXEmeTReIWNfVj4xeiVFN247
Zyp5a3xTem4ock5PK0xORVhoUjBeQDU8UElSd3tOWnVTbUIKemB8P1lwQzJeSCo8ZXdNSSMzWmRT
ellMIyEhPj5SVFIpQHxyJShwRHRHUFl8fnYpKitSeD83PntITFgjTmohTHdRCnooQiY7dlRQc0df
cyhFaCF7PGBqVUZsOShmM0Y0NkJLQCVxPWY2bWBMeFpnZEx4dCo+Zy1+MkNKIWhiPHojVnlIbgp6
UFgpeXBPYEk2XkE1b1VHRiE/dTJObHNwXztyI3lZK0VNckU2bi15azR8UT5SNkJFdVI8PiU3Jj11
KW5aZnBSNjgKemIxUUpJcmwoajx1O2tyeDdAbGtTT3okNVZOOVhEKzNwJDE3JENFbTVUWkFgeFI/
ZiRGeWwtej8ocFJOKSFDPylwCnpDMk1yK2sjYnt5Oz1hPmN0cjlmRlFIR0ZGc3E0eUBZOXdCMWBs
Y0t9bEF7akFZSTNsMloqPDtEK3JXXykhRTc4UAp6ankjcnFpeno+JmxXTDlzZ2ZxMGJobjRYSlow
NF4/MW47cFBNb05QQiNae2BVWjVYLWt4THkrdFVXaTx8eEtGI2sKelkrR3pZMmViVmNfajZOdShE
fXcqejFuanUrfXo/KkhUOXx7bUtJJE9aPXY/KktFfUZRTSkta296ODBjPT9RXk44CnpZdmNqei0k
LV4wVXV9KGFIZHZwJjVTXmErKVhEWH08JH1KYVpSeUYpdHo4eG9JPSVGTHt5JWo8MUhxMkxUZFVA
Ywp6M3ZSZnF5fSNEaGtCJEdnM2ZwdEJVa3N+XkthTzh3bnttKUUwREVEe2JBRjB7XkM3LTg+R1hq
d2I+S0dkZVh8Z14Kenc2dF9lLUAxbGw2bC1rc3hmVHMwcHgwdkJ4VXxLeHc/dUBjVn0wVGNVMlJH
S1h1N2g5STZZXlJTVCFfaUw3QSZvCnpIV1VXJW9aVjRLN2p8YzVwI0hPfTUoKXp7PUJrZHl5JD9J
RUhfPmk1citOPldKJFFJendXejNVZEQlWVA7by12bgp6ZTtJe3wkKWRabCp5YXhsb0oqNGg4JGh5
cW5MLTJkO3d9dHwzTDBLYjVlQjVRNnxVPUREQmpEZSR2V3BJZy0rTykKelNxbE49ISNDfVp8TXcp
RndDKT5hTjErWFdnbHIqPXliem0hOSRIZUI3QkgtPHRqZUlZbmhgdSlzQzZQSDlHRFNNCnp5STBI
JER9ZXdXIy1SYFZmZyk5eHZMVzQtM09sMT1id2NrIWBaSU0pXih9dTtCcGhid2hRTURBNkNqbFRs
WmpEUwp6WlBhPDtofkcjJlYoYEVIXmJNKjk4Yk52flolZl5PcWhhM2BeYFBKRXhrbVZTQUhHYDYq
djxPQzJfNXojUlF2QUAKbUdFSSZDZHZMPS1feTJ0Pk0oK0YxU0ZCUjtDVnY0Qm4raS0qc2FEWXs7
KHF8e0Y/RVVuCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvdHJhbnNwYXJlbnQt
MmZyYW1lcy53ZWJtIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvcmVzb3VyY2VzL3RyYW5zcGFyZW50LTJmcmFtZXMud2VibQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWY4YWFh
ZWVjNDk3MzQ4ODgwYmMyZDZiZDk0ZmUyMWVjYzM1MGEwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA5NjAKemNtYjFneX15YHwwU3g0dys4UDwxejYwXjZNaSFeZmpUfXgqRSM7fDZ4bFpqc1pmaGZ4
TH51aG9MQDlIcHB6ckp3CnoyVyNLbS1OQ0N7TF9KcmcxK1FzKj5idHVLJFApYCRtbVIjT2lCVEVD
NiQmfD00Jm9MPHhIN0BKTDkpeV9aPWphVwp6aFMpdFFOc3p+JiZOUn14ek9rOSMkLSVkdypDKCtv
JkQzMWEhZFRESHojIVphbUc5RW87Wld9WV82O1o/cHRfeWIKekteZDBVOHlTbV9IWnNtPldLaH5W
ckAxc1FyTDhxQUp9a2haeHNnJSVhZFFqYnZyUD5UcGxXJEhHJUQ8QlJHOEpzCno2bnZuTzVmcU00
aVFDMStQP2xjdTBWczxoe1JFVUg8K2B9dCl6OGBBI1dsI0s5bzJEZ2VXN3JERVhoRkUhMVc1Ywp6
Rjc5JmwzR2lAP19YWDtBWD5ULXlPRFEyNkl+NW9QJC1wbyRHeXFgKGdgQ1chdlZzYkBAbTRzRDJi
JDYwNSpwK2YKejtfMl9fKG11dCZ6elU0P09id3ViZmtFRFJUUGVnTmoyekQhODVUZjIpdzF3dEJR
UV97bT5LM1dZQUctJUZmaDF0Cnp3Nj1EJXdzYkh0Rl9yRjhYe2N3WWNXYHZEfEp1bSM/XyZ9RmUt
JlpkdWcoODhvZDNUJEh8SmAke0JQcz98SlJtbQp6bkFLM2E1TmU/REdBS2pxVF9mWXRyMiRNPjN9
KWFJSlU/KjwhQHZLIytOfVRJLUVzbHVuRVp2Qzh5Uzh2ZH1MJWAKejZjQXZMVjkqTnghbyNwI0FP
eHMjYnAlKTV8N3FiOEdxPjlSKTZ4RmxeP1V0TntrNlpvelExLWc7JiZxaCs7Jn08Cno/SjZNSz1V
K3JJTm8pYm9weHNSTnxLSTtTZGl3dkpGOSQkKjJJXllELVRncWp3fDQ8RT5CbENmaCEyZy0wRHtU
JgpBcnZMeHwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy90cmFuc3BhcmVudC1v
bi1sZWZ0LWluZGV4ZWQucG5nIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvcmVzb3VyY2VzL3RyYW5zcGFyZW50LW9uLWxlZnQtaW5kZXhlZC5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmJlMzEyNzQ0MDQwM2U2MDE2ODg4ZGJiMzY2N2MyYmVmMjE1ZWY4MwpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgOTcyCnpjbWFKPXppLW4oNmdDWSlzOFVvMDI0THlRV2U1YGZuWiF3fm1A
MmckWU4/SypCb1oweCpxNnA/PkApVS1JR0xhdQp6OC1FRHtEKzRxOTB8K0drMX4kWTc/fioyRVhn
UyZVPyV1dWNkKjl1P2Qpd19pRllaM3Q8djZiQjk5dW9HX3Q8fjgKejBEVmM9Pnd8ZW4/SUc9eEZg
YXVVPTJgKDZWZE87SzhTWV4oU2lKbTxuO2NobzkxZXpiPSRgMDRpQTBhWmg8VEklCnpuJlg7PmRF
KXUhbjQlRnIzdUEtLWBTQkJ2IW9jOFBSOSlGa09nc3NYbW5yVHFJfEZ9dD9sJUpkQEVMMDZJdUp5
ZAp6ZE1KO2thaS1ANnp2OShsJS1qLT5SdzRBPDtNYnl0WldveSgjaSVObDF6JVBhcS1tbTNzY00/
PzZzZllKTi19KCEKenBqN20jcm1IbnsqPzdwNzI0bFR2d0omcVElLXw9S0NifWZlPVd9c2g3RDsr
MERVQypoYWoyPlE1a2pfenNoMTBKCnpjQ2NadmFPUzZCTFBIV0cjXnthNmoyYipCVTJoPnV3elAz
fWN9I0YlUXRsO15CRmJ6X24/VHE3ZWBwa0txY2hzVwp6UzktNHsmSVhHRk9GZipDUz9hXlpqU3BD
PUxebzZIUUlaWV9uUWwoOEowWDswNk90Z2F1YzRDYmBDLWYpUGdWJW0Keil0eHdfVWhIR1hHSS16
KyEhWGQqZFpsaktzJUY7OW1aSTNAUjt6WW9zJUU5dVh4RDdKdTVQZHZAbjtjXj0+ezhJCnpWUVYq
SFN1c1FqV1ZVYmB6UVJFfUJAdFJ9U2BWKyRWcGJjbkJHPWt4UmxQeVc4WEhgcldzUi1OSCkxNmFC
ZUFSZgp6PWMrZEBzMj9gbTdBe1AtckheQiVfWT9+SSpZeCNtY29jaXhsWXRIUDQ+Wj1YaGNmXjBJ
fDVVbnktcHVJVSV3UHYKcUZ1bV9zdHdIe01iYjdIZkV9Y0kzdyFfYEohfWElZi1ueyFedXl4THtK
SiRRNyh+R308cjcwYyYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy91aW50VW5p
Zm9ybVNoYWRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL3VpbnRVbmlmb3JtU2hhZGVyLnZlcnQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM4NWFj
OWJjNGM3OWNhNjdiNTc2MzMzMTEyY2M0NzljYjk1NjZhNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy91aW50
VW5pZm9ybVNoYWRlci52ZXJ0CkBAIC0wLDAgKzEsMjEgQEAKKyN2ZXJzaW9uIDMwMCBlcworCisv
KgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyovCisKK3VuaWZvcm0gdWludCB1
dmFsOwordW5pZm9ybSB1dmVjMiB1dmFsMjsKK3VuaWZvcm0gdXZlYzMgdXZhbDM7Cit1bmlmb3Jt
IHV2ZWM0IHV2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIHVpbnQgc3VtID0gdXZhbAorICAg
ICAgICAgICAgKyB1dmFsMlswXSArIHV2YWwyWzFdCisgICAgICAgICAgICArIHV2YWwzWzBdICsg
dXZhbDNbMV0gKyB1dmFsM1syXQorICAgICAgICAgICAgKyB1dmFsNFswXSArIHV2YWw0WzFdICsg
dXZhbDRbMl0gKyB1dmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoc3VtLCAwLjAsIDAu
MCwgMS4wKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy91bmlmb3JtQmxvY2tTaGFkZXIuZnJhZyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy91bmlmb3JtQmxv
Y2tTaGFkZXIuZnJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGEwOTg0MjFkMzU5MTI3ZjIyYTMzNTY4NmYxYjA4
MWM5NTJiMmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3VuaWZvcm1CbG9ja1NoYWRlci5mcmFnCkBAIC0w
LDAgKzEsMTkgQEAKKyN2ZXJzaW9uIDMwMCBlcworCisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5T
RS50eHQgZmlsZS4KKyovCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCitpbiB2ZWMzIG5v
cm1hbDsKK2luIHZlYzQgZWNQb3NpdGlvbjsKKworb3V0IHZlYzQgZnJhZ0NvbG9yOworCit2b2lk
IG1haW4oKQoreworICAgIGZyYWdDb2xvciA9IHZlYzQobm9ybWFsLzIuMCt2ZWMzKDAuNSksIDEp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL3VuaWZvcm1CbG9ja1NoYWRlci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3VuaWZvcm1CbG9ja1NoYWRl
ci52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5ODE0YjcxMjgyYzgzMDg1M2I1NzVlNjE5NWVjMDExOTg2MDAx
NzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9yZXNvdXJjZXMvdW5pZm9ybUJsb2NrU2hhZGVyLnZlcnQKQEAgLTAsMCArMSwy
NiBAQAorI3ZlcnNpb24gMzAwIGVzCisKKy8qCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9u
b3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBm
aWxlLgorKi8KKworaW4gdmVjNCBhX3ZlcnRleDsKK2luIHZlYzMgYV9ub3JtYWw7CisKK3VuaWZv
cm0gVHJhbnNmb3JtIHsKKyAgICBtYXQ0IHVfbW9kZWxWaWV3TWF0cml4OworICAgIG1hdDQgdV9w
cm9qZWN0aW9uTWF0cml4OworICAgIG1hdDMgdV9ub3JtYWxNYXRyaXg7Cit9OworCitvdXQgdmVj
MyBub3JtYWw7CitvdXQgdmVjNCBlY1Bvc2l0aW9uOworCit2b2lkIG1haW4oKQoreworICAgIG5v
cm1hbCA9IG5vcm1hbGl6ZSh1X25vcm1hbE1hdHJpeCAqIGFfbm9ybWFsKTsKKyAgICBlY1Bvc2l0
aW9uID0gdV9tb2RlbFZpZXdNYXRyaXggKiBhX3ZlcnRleDsKKyAgICBnbF9Qb3NpdGlvbiA9ICB1
X3Byb2plY3Rpb25NYXRyaXggKiBlY1Bvc2l0aW9uOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3ZlcnRleFNoYWRl
ci52ZXJ0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVz
b3VyY2VzL3ZlcnRleFNoYWRlci52ZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjY0MGI3NWJhZWFjYmQzMDQx
ZDNiMjY5N2U4ZDA3Nzk1MGRiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvdmVydGV4U2hhZGVyLnZlcnQK
QEAgLTAsMCArMSwzNiBAQAorLyoKK0NvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBt
ZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gQVMgSVMgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCitDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKK0VYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKK1BST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CithdHRyaWJ1
dGUgdmVjMyBhX25vcm1hbDsKKwordW5pZm9ybSBtZWRpdW1wIG1hdDQgdV9tb2RlbFZpZXdQcm9q
TWF0cml4OworCit2YXJ5aW5nIHZlYzMgdl9ub3JtYWw7CisKK3ZvaWQgbWFpbigpCit7CisgICAg
dl9ub3JtYWwgPSBhX25vcm1hbDsKKyAgICBnbF9Qb3NpdGlvbiA9ICB1X21vZGVsVmlld1Byb2pN
YXRyaXggKiBhX3ZlcnRleDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0wLm1wNCBiL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRl
by1yb3RhdGlvbi0wLm1wNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTdlZWYxMjVhY2Q4MzJmZmU5ZWRhZjA3MTU5
NDA5ZTRmYTExNTYwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMTM1CnpjbVp1eDNzNGtTN0pi
N25EMmo+QCRFPT89ayhBa3pyaDZEck5tfXI/TjtEfHpMWnd7RUBUVTY+R253d2Bybj95IQp6akZH
NFRWeEBNb055P08hNUJQfkREcmwpOERUeEtLYlh8ZUNlekZvKUVpcT1yZ3pRUlVsNXp7UWJLaV9h
VnNkTlYKenlYWEZJLWBtcCZBO3gyZEdAcWQ9MnReXnY7VyUobTxRMmB5Z1lKJV5zekhSMXRPVUlo
QEw/MnY5ZlRSa2hVbzdlCnp7WHppc2VSQSRTJiktNShQOy1XPFY/UCpJb0JuWGs9d1hnUyo9N3ZX
TWN8TlMkWigmV09aQy12ND9AJDRXRXZuJQp6QkM9cnVyJGkkbmRCZEBgMjFXOD0mQHFhMXxGYihs
OWZiO3kwWWZPd0U2SThvITQ+cExXQyZBVTFoVHBXMlBCekwKekFLT3lKN3dgWmA0bDNjSyFgcXhM
TVFvRUtvbHFaMilJTz9RbXpmQipCXmFoIzJFNUJLamlINTVwRXV+emZLd1d0CnpHb3E9Nk1fJlN2
OSFrSVZpMEpSI2NGT2BHNFlEcTwmMkxNdnVBcjFzO040TCUtZHUjRDVuUTctOTNUMHI0YUlzcAp6
SGdxdUhvYXtGQiRTaDt4O31KYXcqJHAjMVhNb3xOUCM5SldiQkZkdDNWPiljISVzNVVzPV5pJmBg
QkZAPXRNUTUKenFyVEJCVjBYRD5WJkpQMzY2VnhBWlRLIT1lPiZEUUk8Qjg3JUA8akM+aWVjajZI
YjxKSUc4cW9tZkBmJGIyZ2hmCnpodmhqQTxhbSF4VjRKYkwwJCRLTGoqR1JkOyl7I0VJJiFVaCQl
bVV+ZSRJNDFeMW1DRWp3fm1XIyl6czs3KFI7dwp6eFAlMiZgY28/d0VselZYXk5KUkxPKEclfjdO
fVpDQ0xXVjxhOWw+M2dMNj1DdVc0JTg+RkVefTYpYiZ3UjJjX1kKelJXRDdhZDBEVGkkbCMtRHJj
VnRSKl5HJFlTUUkhMC1WaDshayUoSlhNWmRzamJKLWsmMTZVM2pNQnBreHVIPD4xCnpRSGJDcm01
ZnBEMX5pTSZqRjc8NytvZWthJnZGbjE3byskcGlSN1hnWEBwRDFmbD95eVMmWm5fUlJ5fnNseEl3
eAp6JGc8QT5HYG4pUEIlMDhJU2Y7PSY1aUNgeTBVfGl+bk5aUCM0YiFDPWV4Qy1lY04zSXBGNGZ+
UGgkKkJ3N31Lam0Kemdkc1E/U3lsYm0zeGFEJSQxe2ZQNlFQJE8xOysmUmExR0k/VjNZUlkzeiRU
Z0YqdCRWRXRsJiE8UHVkeSF7THIjCnpNRFgkTzF0MH1EPlhgYT9iZ1UycVB6Q1hvZFFBPEdwTT0w
SFdERnF9ezMmNlloRFpXTEVIPyF3TjkqWEEmT3w0TQp6N2VhSz1ePmU+OFAhfFBKX2I+eyleTXYq
Vmc1Ynp0SWlgJHVCWEJJZDJ4U2AwOHxKdUQkZUlIUiF6M0MheD0oe0MKeiEkeDVWUHojc0EwX2km
RjJQJiRLKU5NPzc0bVk8Pkw0fUpKWiNsSlIrbFM3amhiRiRSSXhhbUZ2WSkje3U2fj88CnpCSWRS
SXhBTEEmRHBhSj4pTFhBQ2NIT3UtWUUjfihFcVB4fk8+YUZgSnZ1SkI4cygxYz9STGc1UGYhYkFl
NnhTLQp6R3VPJXZ4dT58VTlDJiRQVX5XJWVUZnYhKC1GeTB5eWw9Rlc0cmNZfUMxYDAmIVJMUW9U
YD1iMj97MlRieT4mSW0KenFzS2l2ZVJEcEx5bURNWWU5O0h2aV81IUtwWi0lS2luVkZFWHpYfHRH
YXRVRkNGclpoeXtvJFJTIzNFYiVgPyFICnpaeFB5YDU+TmwrRE5ebUprOU44ODRfbnRLd0A8RX4q
bS11VV8oWENIQG9ZYnhQQDg/fGxjPk9IYzFKPmVORXFHdgp6LX1VcHt5KjdUd1o5eyRHJD5JeEU8
Sj9idFdwU01vZShXIVFfM2BGIWUhdVF5UVhPfT53YEwpRiExa3o9UmA9NTAKemBMfHhZXlZueDRu
ZnBHbHZQWWF5dF5NX2h3YzkmeEE3d0pfZGwwJGFvY1A0Vm1Ud1oqNEV+RWRZej9xJTYjTG80Cnoj
O0krWT9GKkg2Y1VeaFU+T1dIKl5JazgxTWkzYCZmOF9lUD1YPXU2dEB4dCFyTjRJV1VpUXhOKGJ1
ZHxWfChoUgp6SFNMX1VHSm8yfG9XVUd4e2VjVWAoUV4tcUhgZzhBRSZrPT1QM3N6N3YkRkdlKXo8
bmh0RCRJMD9ifmI7ZC1URXwKenpaX2ApfEx3WDxnX2ZHSUVwR2F8dCpKVHZoeC16e2xEfDlIQD5h
elMlZWk3VWlqUyl2dV4jNU9BSGtHalVwUkNBCnpLWUxmKl5iaDcjbXJQMVlYMylIYStyfmJlYWRK
JHJZdF9GJDlrWXBWdiVreyM7Q1ZgMmVIKVEyJmxVNEArKlB0Kwp6K0I1MmlkY1Z7QlZnN09UeXVK
Sk56eUkrNGs1TG5GYCN7Z1dFI302aU8+NElmSzc4cmZgZEpNbkY7WDB8K2g9d2gKel5Sc2B1eGZ0
NllFb2d0b0d2UHBJT3xaRT5jYCo5ZTl+IT5UKl9tNFdjMm9JQjw3P0tuOUM8bC1DKj99aG56ZmZ9
CnpTe0owRnVSQig+dTYtXm14VEE1X0tNJlNeUUZXdiV7cWlsVjxXTktZUSRvP2U8XjBmems1aExm
byY4NT1hcGt6cApOPitgQj1gPGYyLXt7KjU8aFpnXzwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0xODAubXA0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTE4MC5tcDQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWE0ZDZlNTRmZjQ5OTE0NjM5MGM5OTk2MmZkYThkZGZlZDE3YjhjMwpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjEwNgp6Y21adXkyVCZBTzcrejRaTWBIK1JnMVUkckdtJkhX
P20pX0hSRVFKb2lWXkVAP0Nya2UqNHVXd09GNXo9I3hoblUKeiM7JURxanpvIVp1d2VyVyMpdU5m
NjIldzsqMkpMMz1vbE1ieyZ4cFRPI1pwfHtfbjV2ejVqcHJtTExleVZSJSRRCnpTMHNXNkJydTB6
WDB0ZTJRbXImVzVHQD1VTElsdylUO2Y+K2U2fEhPXkxuPmo5YE81dG5ebm9YbS1mQyRSej0qcwp6
bXQmNXhsOTQyKlhvI2ReQ3tuWGZHKEQ4JGNvZklSUy1fSFAwKnxQbkJMO2pOWChqdW9DVj94REk0
fnFCc3oqYykKemdFVWk9Q0RLZnBETnM1TUx5ZUQkJUZmTzxXZUdlfEx7PkhfVDFGSUojXmZ8NDVx
dVFZNUVOT0RDcHAmNmF0dXZzCnokaVl9aDlAI35PYjFgJjA2O0Z8QCUhKGN6Rjt0RXZwMzAkVjNu
P01TaUU+Q2koKztRKXNwPWpHaDFzVUAzfml6eQp6MnFzYnphdTlGQjhFSl5IWHs/LXE3Jj9hSm9T
R3VCSFZDQ2pMcW5uez16d0IjVnRMTDB6X30lY2YtU0lvdHxCQUcKek8hdVp+KCF1SjZQMVJrM2lh
cT1aK15TNytJQ053JWshSTN4WTduNl9SI0g/SDd3WkpVKX1XKEZUQCpPak9NYCtVCnpXekR3K0Ny
R1M7X2FWcHoobko9Vkt5TWNfSFAmT302aUg8YmtVMSFrcHxPR3REWm8pPHY1IU16QzhSXks+XjlX
ewp6U2x9NW1WM3VjOWQ8d2hHRjBlWFlNOWA0JFQtaXYtYTJqXjdESnFnfThIeCY0emZ5JXo3eEYt
RSN2RCE2THpeVlgKekFkKShWV1c7M31qRnJPTSlMMnxuNGUzcUAqRXJrRDw2XnRVRmBWV2dCfEZw
PTl9NUo9WSV4KSE4eXwrRE9tTUItCnpEbypVPFl6YDk+Mk1YT2xEcFhFVHAtRkhkcG9mcilid21H
Z0g7RnZCdlVXNmsyQkV3LWthMlUmQ25YVy02e2pYeQp6WXAlN3A8bFckVSptTThueWRsbCFvJUds
fUUxeEIjZ3VXUF98MGAzfFhKQUQzX1JUPlI8QVN6enhtNDBLViZuOSMKekJaS0Z+UmpiUmRNRExp
S0FKSWV9PjNZKCVaflZ8eDFNfEFoWCErSFc7fEpTfitCMUplKmVMZ2BATUVSLVNGZXcqCnpaOTZx
JGEyST5zb24oPCopfllJWlBEMXNlWD0hZ0NFZFNuZVlhJnRuIUVuOSghbXlNQCY0UHhVLUNNQ05x
K2wmYQp6UmFQSWNnanJUS1BtaTc4VVVJRzJUaUVNQ2R2RW9mZzM2TjYrM2NEUT55SGNgUj1IP1gk
bGlTJm1VSnVKR18kQ1gKekUtUzgjeD9vZlhiP2g4PlhlU3wjJGpAKUpjNk5CcEFYYHdfI08zdEIo
X2BnamNnVG1eKTRESHFVTjMqc3tacmolCnp3LVVVMDwyPl9ZVFJ3Vkgrd1I4d1c3Q0IoMyNJZWxE
V3lIZUEwfTRzUEFJcj55NUB3dj87WjFua1d1STQtY1BJRgp6Jm5sZjh5UjV2OUdBRmhoNXE2K0dP
LSZ3b0lOb0NgRW58ajA0VjFlVlpjUHQzX19Rbz5oTE83Uz08ZHdSbSlvWUYKentjR3pQYk1ZXnc4
KmFLNW8qZEl7VTlmeSt7cnZ2a3FBNktMUSRyV3p7UVNvNCtFdmVsWn0rV1B4TThZb1g0JCFgCnpj
WEpEbHg3cGplWVZZRXpPJW8hITlCbHF6Szx5RUl5ZzRwJj8jMHVWZSRDZXw5KFpaVipXdlJmYmxM
TVQ8O1NhfAp6aG4qakxiOUpUT2B0T2NjOTxCPiR2M0M3QVB0ciRQPmJPVnloQ2whR2BKfFpKdkhT
WmNyd2xySkZZSEtGVWR3PlkKejw0ZXkqVXloZyhHVjZLLXpjX0htdUpeN2kkU287WXdgPVAoPWE0
dHJQV3BVditxOXpjSnlEallLTWFtdShXIUk3CnpIP14ld1F5KjtKeFp9aFl3UEg+R1k0NlAwSGA8
PEp5Pjs3ZEkjbntKc1BabEFePnYmMkNjM0tBRWBJNlY9dH0jdQp6KUM7JWx6TjlFd0BMLUJrbVhp
bkdoP0BLY0xONmtLemBzfVlGOUZvQSReQms9e3ZRZzJIUSRCNWxuYWEjNFZRMXQKekNYRX4kdmhg
fUReRmM0e3dsVGRmX3J1MSNgYXV4ZzVwVT1xZyZ8Umc0fWd6d1podjBpRGdqP2V5dWdCdmw9Iz1y
CnpaVSVLQUc1Vi00RjREPTFuaChLKlUta3ghY2BBUENsVWJQOzUldmxBNWRQfjkwS3IrM0ZLTlNw
dXkxJFhad3VxJAp6TEJSP2pZO1RqUGlEVyV+cCZORClASmlqIzh5YlJyPUhqbSNhNz5NSmBaYWxR
XmtqZnxWRVY2elU7az9FPXFzUVYKenZMKiVhTH5DeWk1dDsjZllnSi1YWEZxfnlMY3I4IWRVLTM5
N2VFOSN8Rn5Bc3QqcXx4Vjt0WDZIKy1lVjdfUzJaCnp4KGNPKzlkajR9KSQzcEtWNmYlLVAwYyNo
K2Q7PUVleDEqYzAmTElaNEhvISMzSGRsU2hjXy1pdmBrfUY2PDZwYgppTUdGMk5fYjQ8Sm9Vayl8
XktsWnEzMVNHRjwlb19vUykpeGZNZzBSX3QlO2NjCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9y
ZXNvdXJjZXMvdmlkZW8tcm90YXRpb24tMjcwLm1wNCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0yNzAubXA0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxMzQxOGM0YTNiYmRkMTVhNGY2NmNjNzY3MTdmYzMyODViMTZjZWIKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDIxMTIKemNtWnV5M3M2KjU3KFBIP0JaUUFJcCl7YD1YKGBMUyVS
fEFyaH5rNExAaTdYJChCPHNDWExxbU15WjNWTVducjAwCnpHelMmTkNQZEh9NE5PZ2d2YX1rdEB+
eFN2VyUoIV5AcjRvQ09oJTFLNThWRTwzcXBAR2QoUXY7LX5UeDB7Tzlicwp6MnFESHtkTnMqVjZA
LUVqbUMmdSZCWEVrQSRSVUw4Y2okeTU2Z294YHU/YXIhZ0B5V2pqaENqaz9gdighKys4I04KekpF
bSMkUHEmSiMkJSN4SEJkOXVJeE1ZXm02SWhQUlZnISstO0ZKV2dXTG0lQEs1T3B1blFAOENsJDtF
MzZeUV9iCnoze35eVyM5PWE0bVE5R1d2UWAjSW11WUlMQCRwNFBNSFlgRjU+PmAtaT5mPjA9YDxG
WHNtUzE/WU5uKlJqWntYIQp6Yn1hQjVxWjA/OHo9Kl55dDNwMXtyTHc2a2dXWHY2OGlaJHk2SD9o
P2ohUiReIW47VEBWLShyfU88KipgMyF5T0QKemJkbCNRRUNqKjhDe2kmSVo4UmVYNWpHdldvckxG
LThOc0VpM2JzS2ckQ3heaVd5dF9FdjNRfj1tO2koVmc9YisyCnpTUyhUOWd0djB6SWdXOCkhP2JC
ZXpOQXIpSyFPNnpyYUJ4M0c1SSh2VzRkJlJGISk0OVJASHAkMD4jJERhZn41TAp6MDw1S25VPlVk
V3BGQHhvWXw/Y3xaajxPVDF9RVV7YS1vakJIYkdUMVk9U084aUEpXyFaYiQpK0k7SzdqOVZeNnUK
elYlY3EpN3FCR3FSPWAtcThyX0I2V3x5ISpDeXtqRy0mWVpsb0cjTjJIZFB+VG5eVj1tOFh6P1kl
X207UyYwQ1kkCnpaZkh7Xkg+aXZ1NUh9R0RPK0p5TyVoV0x+c1pJPFJnekpMcy1nYz43N2tFSztG
cDNAT08xQXxIWiV3ZVVPYWF7dAp6JnN5TUc2PSpjRVUqY2p1SVJ5eUFCcE9zcyglX0tiTGNrZTlF
P2ZaVFBmcnQtIWoqTkFtQ0tRT2NifktNKig8fSQKek49STdWJH5FdXJHLXM1S083Ul58OGgha3k2
PGE2MjZ8RDVEJFVZWnlnPk9DY00oNUlQRDw1akZPZ2d1SSpTb1BKCnpmKE1wVkYyIWNtcGBva04+
KFYqfnpkcjVDNXE2YXY1cVk4X2JsTFJSJDlmWkZja1ZBdVpTNCgmU0AhYmdqKzxkUQp6eVR1UHsl
UClsLUkjPEAlKjd+enFySXA0JShZek9oZDUpfFlLKkNZcyhkfC0yUz1wVnJvN29yaElgPUtNeXUx
NiQKejU2OFRAR3ctbCgoM0gtZEJsZmNTdz0mU0BrQ1o4cz5PLUUkNCo2ISNfezhBY2FxRkRZYX5Y
ST5nWW9FKzE/PV91CnpyUig9czlQYipKVnBjVmZBenZOSHNhYmNUZGgoVDl3KzlTNSp8PjRmKjkr
IzJpX0ZfR3xLUD1uKWJ5bUhhTC0zNgp6WFFTdFFEeGNpa3lrKypoUShaJjlqSHokRkowJjlYIVJa
SWlfSjN7aTRhZVp3PHNVP1BZdXlkR0VuND01T1pjNzMKelB4ZnpJRzJII2h6LWtlWDhDODhgJGo+
b2h4MVUqKEc/d3dXYVpPJEohbHB7Y2xFM0RxcHtlbVBwNCE8dnZZMypiCnpMcCE2Xj9pbSp+cCk5
T3UlS3E1SEl8Pyh4bWx3Uy1ZaShxRSUmdUZHeVVRbVhYbyZuTUJ7c2ltK25xSTZGWFQhYwp6KWQl
STR6Z25EfCU4anEpezY9IWY+UThiOHFpcikrU3kwX1R2VD4xWl9eKz08KWNiREVTZXRwaVpSJSY2
X1A1ayoKelRGO2k7Rl4tPTh3KjBCQHVQPEdiNzRfLXFfa083VlcwYGl+Tk9NSC0xST1HRkswWnle
XjZ+WW42VjVESSo1MnxrCnpfb3lKYE91RW9DYD8tIW1ySGRuR1Jxd2V1XjZCdDdeVFQoWSZNVih3
OFF3YWVhPklqWSliPi11JSs7SD5NcVlhewp6OGI2N0FuPSpic3BMT1c9JGZqMzFYQkolQjc7emFa
PCVKSiRlPWMkIT4tWUF7K3E/QWo9VzhkMnErUHRSQFRJZkEKelQtPl5TUXJxdHhhTXdCJVJyU0VM
REp2ZUEyKG5LTFgjLV59M1BTWVAreTA+ZHtWelNlKllwMlNGd0ZTfntJVC1FCnptfX08eT1NM3JO
KnBxRStBRmRhNlRZYko+c3QyVzBQfTwhUWRXP3ZzMG9wSms4fUokTUh5Unp0PigzS1pySEIjKwp6
aiMwI2FANylTP0Z2PnBha0JmN092aEdKUChEJUl1UTwrMkdgJUxUPldrUCp8KCU+S08wMSlMLXs3
SmkpT2tMNHEKelYhJD5gZ2xFT2kxai1qdHNMS3JLKWMzQW8rR1VXbmhIM08xMjw2TV5IeDQ5aWVS
QnF3UXJMUFhLLXl7aHVTYkNJCno5aSNuNE9vWGYlS19Vd0dUfCt+aUFtM0A0ZFk+eURwJTRUXiM0
RUA4bGhQbSo9SzhWYTxmd3lQb3QtcDMrQSNnNAp6cklea0c5Wm5UVzRKI0hYZlkjMDVsVGx6UjM3
QTRoYmxaVXcpQnh4QVYqJVI+TUg3UjNVTGslLSVfSUFrQUM2NE4Kbm5ubypodWY8NyRHbWRAUlJC
NktEQGEzbVQ9cHhXOD5+U1Bidj9MfjNJRnxoejg3WUUzCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvdmlkZW8tcm90YXRpb24tOTAubXA0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTkwLm1wNApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzlmMDliODM3Y2Q4ZWQ2NDE0YjYxMDYzZDIyMGQ4M2VjNzNkYmQ4CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMTI4CnpjbVp1ejNzZStVN0BrJHBMUV52bE8zTSk9RXE5bGhX
IVZMNE5KV2chaTkmcVJZclEqam1tUWVkOEQ8OTlyR3J1Uwp6RmNuM2skbiskZFYpIWNTb1htXyk0
PXN2QWROZVVZXkZlN347M0Z9dFoyUnZuQVUqIUdfeHw3aXkhWmI5LU1kUnMKejZ6d3FycztEYjZN
R2M/YGhoYWxTSlMoZXFtWkdRfEpRfkluNzIlV3hXUHMxeGdDbH4kWk83OHY+ZHJLMD8wKGghCno5
bzs7IV5Tc35ZdSt0V3JTMlJxczR1O2tlNz8jYlhjPnlQKjxPSHh9U2l2SmNHYntaOGk9Q2J9RkFa
RDslITQ2Swp6UTNEZTg3X15PSDUtY3t4Iyg+Z203LX52PGR+dEVId01aMU9BfGFudShRQE8tR0ZH
bzRPVz5vWmhOJEBUNnEta0YKeiNCKGdJVkdveDszKW4zd2RfS3BmRmV3YTtkYEpyRG19QzQyRFU2
P0c2S0VOOFVoSnAhTE5fMk10P0JeP2gxc1BFCno5QlhBRDJxc3o8e2FBMzNqNFZYQkd+fjwwOVA2
Tll1Y3BZejEpKGYkWGpxYSY5Wi1AI04jRzN0ZTFYZ3t1bXZRUAp6Q19jPkRTVG9EZzk7NiNDUm5I
ZXk7dEBfenB0PS1+TjU9K2R2QylRQ2c5eDNvKH5fZChCUUZUOVVMOHk4bEV9a2UKemRLQz1xKD9W
PFRxS3BpKDU3QjJ9Tyt3JVZkYmQ9bHBANTU1V0VCfTheSDNyfkwhdTgtZlRNPHBrNEhsPyl9ZEgj
CnptbF47cDNZLWx2NXxCeng7ZFolMnE/MUtONFRzS0VqS3k1OTtSYyhjVnhLRWxRTmJFa3N0fXJ3
MUNYMXVCe0R0Rwp6QzV0YH5YYFJQRCVvaUcqb2d2JVE1R2twS2J1V1ojeXNQaUgjSUVyaXVYJCtN
NFJzflEwKWV3N1NRKXkyOUVNfTgKemFJRmVka35xWVhwS35PR0xOfkFxbEBuRUg1P2whQUE+PXtA
KDB8ZlJzdG01SUExYF4xaVZHZntSXzw/WnpuRjd4CnpgPGJrNWNVO0l6UyhXIX5VaCZZPVBaPylf
P019VHF5OFpBb25YX1g/byRYdlBebDskJm96dHJ9b2c3e35zaWgpYQp6T1RVTSVgRnZYMmBQVFl8
PW1scGt3VHpFQXZndkcre2tQTiEpU31wdCF3KXNxPD1JTUlaTz1NcTZ+RUImUmVGbmEKeip6O0c5
Jnk8JUJ0e0dPaztMPEheXkcjUDxzby0lWDJRX3ApPTk/VylFbU45aWwrVjMhYk08b3tKVGI7cCkl
ZncrCnpJZlh5MXxNWXtfXzkwSlh8SEtUYntjYCswdDhUSlhlVkRjR3dhUEV7ZSU0aXhRKDVnYSpS
NH5RP1FVRFMjb2NKegp6WmpRKkZgRmAhUD1zJE1zSjNvSkkrP3VZfjZXV0dMWWItKzdIKDYoMGxl
PWVrcmFjK0NZKy1Hfj5OOF5eRjJfR3kKenV0Y3I/KFh5KyZlc2lVN2wzSDshKzEkRENgMCYzMS1e
X1YlWH5oY2VYMXE5ZE82bENGX2tQWCVxeUY8cC1ySyVeCnooRUp1VENEfnY4YHhafl8jX3B6IXkm
UnQlSjhTMkNieHJUUUtjX2lTJnB2JSVYb3FuNW9XSTA9JWopXytLWWE3Iwp6YGxkR2BfdCZRJXM1
bHdsQFoqdCN5S1pIcD55TWZgJH1hMlg/dTsyRD1QbHRAUytrP2U+OWNGVD5AY2x+JUZDfkQKenQ8
XyNFP2EySW5kZFlCeWBBV0tKTUM4VlM+Jmx7VWtCTTJHVkw3JXhAKn5ISCN0ejVqLTVkOSpaO2Va
RmorJktLCnp2fldedG50YiY1Q1FvKExgMyt4QlQofjBjKXIhVjM0QEAoXnlSOVpUX0o+bXxQYWdi
Yj88O1llUVBSMV5WO3AoNgp6P1RTNnI3V3ZNIzRYPHhhJS1QcXVDb31mcSVMZzRoeHtwO3t4Xmsj
eEw2JFJFVXNeUzIhdXxTfEEoT1VnYnl3X18KeiM7Q2laPGZiVztKNXZ7SmVYQ0BBVCRnamtpUiQq
YXI9IXNOTyRWd3JLNmJkSWIkUTMjdjE/ek4paX1MbG9fdVhqCnpUViR0bXY4bjEyeW1abVR1RVd5
S2R3MGc9dW5uRklaekgmUzdpQzIkZkBmNWNpQFhCeGVsK2xCNUdHUzVpaFFvcQp6S0xrKyFPUCtl
Jl5aKEVRU2FVM1YoZWxDZ3hSRD1QYjZgS20tZldabT5IMShXKmFMZ0xgWWFTUm1FZnxUS35aO04K
eiFPJWUoaGIwfDs3RDdhIyFnKWpTcms3PHdNNCtRKDtvb1BzZnFEUW5jVjgmWjt1Uno8Z2tVMT9l
Sj5fXzkobiZXCnprV1l7PkBpQz5zMypaNFR4PTBRcz9aNEdLZ3xLYSQwTTg1dzF8cyVoZ189Yjc7
SjxYa0VkaFJBSH11fHk1VEIqdwp6SHhEP1d7eUQ+JUdCfG4kS3Ijc1oqQ1ZYSUtGNVRMWEB7KDdD
Vj82bkpWaXo0MF5pO3xlVU51NU1HWWhjOWt6SVgKekJyWT5pZ1QzY2s4KTg0WCo0PDZ3Vnt7YF9U
N3Q8c0ZyY2VZWVM9TVAwOG8jPGtCPGdoTiFTei0tKHY/SXVZYDNXCnpLTClWN1Alc2VpTWBheDEj
NXwjWWBKclZSUWRMcitLQysxNjk+PiloM1EyZjd7MVlIYSRSPzxWUD8wQXckIWJydQpIdkpDUyNS
S0FvVAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3dlYmdsLWxvZ28ucG5nIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3dl
YmdsLWxvZ28ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YjIyZTFhYjQ1ZTkzNDBhNWYyZTViNzJkOGJkZjc5
YzlkOTc5OTQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwNzcKemNtYUtTXjs2VzNeWilhWEBh
VTc0SzAyazU8fHlnI2ZFT1NqTkYmYEwhWDQ1YjJqYkRuZmdzWUloYWVwYU49T1JRCno5biMzaF9h
RV42JmR4cXxjN05LTG8hUTtsJEhwMXpZbWdCJDVDWkB9cmxxTmRfLUFBUHNVZHskQUFYKXpmY2BV
dAp6d21LU1d6fV4zKHUlazVOVXhkZ0ApNyUjVE5UfmomQU9NcH58MVdzWVBmSmh6LVUxTn5BeXwr
VU5CSWxAKlo/Z3gKelcjZ2NxZCN7NGdSJHBHTm8wPGQkVSUlYClOTy16e1ghYHpDblpDRF4tVlBf
RkZNezc2SzxTakRtNzZPYXp8RTVwCno9Y0xhKSN3bnhFNE8zalRtcHwmfDtaOWNWPiFuV3d5JXdj
KXtGV1RATTVwNyFrTCU7SndNckFvQGNIWHZrOGhNaAp6Q31ySUJTYTJ6SkA/Zz1UWTVVe1NAb21f
LWwlWDtLanEoMnIrQ2l6cSFDckglWkNYfitpNU1IR3ctdH01eF5nVCsKemc3RWU0VSl7PCNMN30t
NWE1eEJGajg9SXsrWkRMO3BTUVp9TV9tbEpQeDk7QlJXPXVsbV51SVJHVUx5YGNQbENjCnp1akxa
aT0wWlg9MUtvdllwQmJxcD4rNXx4QWc5cDR5bSt6ZyU4fU9oKTleelhIQCNiOz5yKytaQypgVz56
U3JvLQp6NXM2VX0+T31tQVo3M01MVCM1Y34mfDVuaXN7Wj1LYT9EI1NjLWwlSXZ1O14jaklqXyl5
ZmlNVlA5MHklSUBtYn4Kek04bzBhcklXfEZQM0lfeTRiKlhmckMqP0BAV1J8VDwlfShmPm4wUzZB
dTNnbWJXP2FYO0JOSE9yJnM1VjRHbDU2CnpiPGV+VHA/c09rQj94RjFmZF4pfWs/ZEQxSDF7UGRZ
JUtTVVNvRGlOX3lhcj5ZRi1Sc2BIbD89dTsmQ2ZtR252YQp6RFpETjViRForbCZ6RE02Q1hsOSRg
d3xgZ1lPLVhLKV4wNCNTZXEkM0MmUkpHNUhAUHpxUCFvdmJackxMVU9UZXUKelV1bHotMy1vayNZ
WSVYaFhsK3VEYl5qSUdzbjN+Rm92eEtWRD02NTU2eVRCdVQ1SnA3aD8ldmxGcGI8ZiRBZzhLCnpx
RkVBOVVzaWU1Kn11czJNZmJhMUZXWWRSV1Q9dm1UcjE1a0M8T25rLVE5Mz40MEBRNk1pWCZFVUgh
aTRqbFpjMAp6cDg8PjllfVMoJjVBO2tRTmlEWGhLay1QIUIxWD9mTlFxQlFjJlFWLXskbztJaWEt
dGVoVmNWX0NoRUtfRjtBX00KejViU0E7VD1zWH1EITxDO0hyRGV5eVdYJCVyZGZgS2d0Pzc7Zzh0
VVNAcHlFYT8tMGtWcnNUOzdGVF9aPlUlajt8Cnp6dl5DfHg2fSlCQlc/TWpwNnlCYjs2dkFkZUcr
NShQUDBwSmE7Q1hmd3dGayhwJXJybGhRVCRwPTlROUdEUWo0OAp6KngkMDh4dTVJIzF2enlTdmxT
SzQtfFhKfmAzazdwX3dWJXJKKHZGYUhockpeWXdPRDJ6ISFjYW8kbCpme2h1SXoKek9RZHBea15y
M3Zsd0YzKzY3SGlDaUtscmxIM0ItdzdYQCY+cCMlZGt7RTtyampDMnVMRUhSWFRPO2BKWDJoSW5O
CnpNSGghQWlRQnVsc254Y0lvTX1XS1JUKyRyRUJXY3p0JHhrJF48QjQ+NzI/TWFYNVFVOHB3SmI1
N19pdTYqSXpZSAp6bnt4TH5RVEQwMGwwOzs/YClmLXUtK3o9VXo7ZEp9LTcrRHBVNlc3UEBQIWoo
KDItQVhveWRJWGV5dF4xJXA1RXgKemxgNClFWSgtIVkrOFRmKjVDSypCZktDSy1WUVNPN1daUTVG
cGpRPm5QVylaMXhGU2kqb1FtJDlFWCtZZEZwYG9vCnpxNntITVRyR2xCdnRsMFVkJVBNdiN1e2Vw
ZWV9X0VkV3QzMyY5TmtWYyo3eHpaRytOb25EKT09VCUjbVFfUz8lcAp6RFVUIz94ZiRzLU42MERP
fEd4TTdsdXtEfUpjTHlQSk8qVk0jPypIQ3NrNmJfe2o/QzdHKWh9UjthKio+U1QwQiEKejNRQ35x
MGA+eUQzWEM+RmwxX3FvUUBTRVdHfE9IP25HQENOdXxKK2BHZzZAZ3pFanJMSlE+b3slTUpZRGA7
MFp2CnpOKW9qQj1TYlE9Q3VlfmJhJTdNcUVFcFE+RTNiSUVgQDdnMjdNcFQrKmlBOCZ8MVk3Iyh3
OEJCS1h8KVVvU2Rkewp6QExxRGl3UGZKNDJVV2tKeypzTUEmdVZGPj1ue0RjWH5sdmp7ZHIoJmxu
NGYzeEF3VT8kQ0ZfM2ptUWdtUSlMKFkKeiMyKj9EPTRNN19rXn1ndkhtZlYjXkhqZE8+dkZPT3lu
Nk5QZSRUfjZDcHgrPTQxe24pempYM09LX18pOz5PVHt6CnpjTCM1KG5wYVkpMVRxIUg4YSFEaXZJ
emNBIz07PVZMfCpHT1NtX2Q4RGp3ZDJLPChJOUdXYCFDY2dGQnxMMCtiMgp6KFprTz5zU08jcDUq
d3hraFcwJlI5YGpzbHFqRlNuU3k3dHklTkIxKD0oWm9jVCkoSEk2THJwe1RzaFl1UTEwe2gKeipa
QTM0U2xyJnlRcVQrQWxAWH5uZFJzNCopUk9QbmhVbmotPmEmNUN1ezt5V2IqejxnX2kkIylAeCNw
MmsmIzhiCnpSKHB+MkwzbmwpWlUmckUzTENBfnVNeyZiM2prVkBXUjR7JntMN2k3TV5naz09U0Bt
Xm5tMkZXdmZjbj8zRHBkMQp6QEp5LSoyV18yeE4ld1VxSGliRUdMOEhaO0xTXlZDb18tfmRte3s5
Jm8zQ1QtTyFOMW9KayVfZEtqKVQyQnRZSnIKelNOaDtaTUNrVUVNYX5QUEBaemQ7bSZFYlNpSTtI
cTN3d0lzWGN+dVl1RC12bzJLLXMwLUM2RyQrTTtER1YqQFArCno0UyYhT0ZIQW5NPk5zK2l5N252
ITRafTZYQTFGcUlwOGotWWwhe1RJU1dGdzdlXmVpU19yU0lLbkhNfTRmZ1Z3YAp6eTZZQ0d5Ymky
JVVfUTE+NU8zU3d7fklRaUgpdVRXUjN7M0hxfFF4ZmNXQEJvdERfQF5BTUVaViRtV2B8PUg7MmgK
enE5XkpGXjgqKShmcHx9ITwmWmUzcn5wJVNfUGowMmVSXmI2QWlNSEl2eD5IYHteVl8xbGlPN2Fg
P188b3tVd1RrCnpIMDE9YTRRaz9aNlYyTHpoVGUmP1NINXsjUkJwRlYlfWp1dShJbFBjPTEhWX13
SUQ7Myt0Zyo+VWBGXnx4X2tKUgp6M1dAdmRTdC1scj1FV2AjMUIyZld8NGkwPWBRVEhGO288T1hK
bzBDPmJwcEt+VHJsRSNIVDAlRSZ3cEI1dnc5P2AKek1MYmNWLWZHb2toISlRdSU8aisxaXIrJFBg
TSpCQVFqMClCNEhSZz5CYClrdjxgKnM9KEk9Rn1wSVQoVHZKbF4lCnpiPiFhdHszPWpZaztDTSls
SGAtbTgjJGB5T05fZ0BPY3ZGXz5YfDwxJVg3MH5EPkEzdTJJQCg/PVoxMDlZcno1ZQp6RUQmQWAt
ajFUK3BkZFNzRnFVK0x1NVZaflYyTDw4TDx3MD9UQTcmMDNlaiUpX05VT0w8VCM/Ymh+N0BwRUcq
bkMKemM2UDNaRCtZTlA7SzUkNUJ1YFNJWW9FNDBZfkZlSjJxQndKaFgzckZeYilIZkklPzM/VGg5
fj9BKyhVe3dLZGZtCnohdmRWWWEpb31MKl49e0d7QkJCUyg+MmswRElZZG5ZRkJkP3ZORmdzWktX
azdQKFk0TkNqdD9yOy19NilFSmM0RQp6dHhIbD4/I087SkxWeFBFNiYzWlEyYXImdFcxJFNXK2dO
VDRUVjlRc01aPURpQk1BWXp4TDBoJGhnekJ3eHV4P3EKem1qMUJxTWBjXmFPazxfaUJ8ZnFXR3wt
VlljPjd4SnopZVh9O1o7SFU9LS1LZyNzK3Vxamc5Qn0yMGItYGFQMUVtCnpMUF9jZjZOPzE5cWw8
KGteUVR1cz9BVmtDRCNoYXApOVlydD4lIzdmSHdJdHFEYm8+fWxmNHtLcExNSlchcD8rdgp6SDEj
QllVY1N9Sz44d0JlWnNiK25TKDRgU1ladntfVWNZUVJqIzFFKz8hSmwlMnVuMFdUMWJtcWFyTWcj
WUFASEIKejQmPXZEX1F0elAwLXVzX2ppaVMrUHA2R2dgeXF1VUdtUlRWTk1sPDEyKWJ9ZktmJVVI
fEFVfDYzTFFCY0swI2peCnplZW9+ZUpXQCN8Qk97WjBTOTFCTGl6O2JSX0hIRlgrRlk8US1FJWxo
eGZvI3h4RGlFRiZRaXgmcDE4eVFvKmZ+IQp6eTUxbk1uSHpOcD5MVj1ETlZsSj4kdnxwZklwMGZI
MnhVcnQhQFdrJnlOLSl4bn5tbkBAUSZEd1FFXkI0bDUmZEMKeilfdGwyQlhvRzh0aURqTzhzMWxH
S25tanU/WEI1czlCdTlGITR3R0pZdyFZJEt9VWBAe29lMzxXOGJnRkM8VU9LCnpha0JhdXU1KGE4
QUNJUk53fjM5fmp4Nj9SYDh+NDItVkVncEB6X3FrNFJPYGVUY1NKTDRnVFFtPzdVTlI8WlRGRwp6
M2lfeCl7ckdOUkhWRlJiRnFMTFlld1pRdUZERWMraTRxOyUkPGdhJSNueHE7Mip4eU91bTNVTlRT
N3pfLStPJn4KejtJI1h1UjZ9RTBQbWowfFVLWFQzbmFeMGdyPENHYm5Ma3praT8qKmEoMzAqNHlu
PCooNEFkVTlVejYwQFMpKDVOCno/N2d1SEYpdXl4bzBnYCNuZjModkRJWXdCQi1jI1IqI3cmdVVu
Xi1TTlNKezU0Mlh+PW4hVlk0MXxZPkFYUDFNcwp6MihBZFZwPmxJYHN9IWZGQC1yZ1ImSGpHMlYy
cU5JNHBJUn5PYWFBQTs3Q0QrNm4+fDhGUnhKSyUhUmFvMyNLX1UKendMcG9TaTNSYGZeanUhanJ4
b05vbXQ3NzhnfDI7YTNmRys8dk99UCkhZ0JweHMrQjYtQzBhLUdxOE5JOGp0Sj8lCnpoa3xUeztD
SD4tQGReeC1MfEJ2UUtzOGQ7YVhmbUV6UGBCQnkhTD5HIzU3cUd6KVN7VDhqLT1EUDFYR1YxSkEw
cgp6aWsxZnl4YWNjOT0tV0AxezgmcTZhI0wzPFNkXlhWekpPWlcmK1FsQnY2fVd8bVEtMSp5VVRe
UUJrbWptMUVNN0sKekRjfmk9T2AoaEcxSHZfTHdyYldIfDNgOzB0b1I8THEweyUlI2t8QjF3Xm5n
WUc5clBxUHxrYFN2WH1KTiZPUU1GCnozczNLWFF0ZH0oYGUhJS0lSVlhdFk3KUtxUVd6cE5pSntE
MjhCeCFLWTFKQS0tQ2oha29XUSFZKzRCPlM7SFg3Sgp6IThhbTAxQjxmU0pxOz1ubDMrUFVxPXFU
d008SiZETn02e2orMSM7Qnp+bHApO0AkWDB6a3V6NnBOKmVaMmZseGcKekU7QkNZYGZPRyQ0am1B
cEMwPUNeazspeiZ2KSZBSSFgKDs2LXZ2eHQ8dGZRfStoKX03TnFPbUtROUE/fSRTWW9MCnpqKk9A
Yylqb1RsT2VwYmIrYiRgb0FuJnxSayhkcWR1cGYyNmpRX1hwKFJZKUd3fDJtfDYxamFGWUNqS2Qr
TzFTYwp6SGUqSUhGTXNkbSM2ZE9Ib3M0VytnTytaYFhOUzZIJFVqckd1U0ExczwybFppYzM2dXE5
WUhQKDRDfHElaCt0cHcKej5vNTBMZWpGY31fYytmeyRMJmhfJG92TCVMUCYqNGp5Py13Y3xzc3Rp
NkN3OT5PSDYtN3N+aWpkaG9KRFIoc0JVCnpJQVprKz4tJTdCMH5KWDkpTzM/KVF2WlJ8KjZBJXBx
KUo7NG5zUTZwM3NnKU14MF87QWMwZmI2ZFNFYm5NJmVxUQp6THkwVkxJZ1lOWmUzfEtYKTthITJW
IW9KJFNhKEoke0BWdzYxVFdMKGtOUFUlPUtaRVZZM3BhZlpxfENFeyR5S3oKej1NQF96WSM8cWta
VV57QVFlTE9wa3lycnZzfXZkajYqK0RYRGhsSDZpdntRVE1qQzRKSnRUPjZPWnJtVCNLUis4Cnom
VHFscURedGxeclApTE9eaW9jQlhxSVQla2pJWC1JdWNIMVhoTHkxZFdCRSlnMkJjM01geV5pYCZp
NHZFRUhEVgp6VyszZ2pIeGtgbjNIdSRlRnNIVGZ5cyE7dTJMcVYkVDVfd1UyYTxfcS02WHVDV0sw
YDRYQTlNeT0ldHkpejN6XloKejs2TyhrQW1KXmsmIVM0NDJ6KWlOU0JXVl89X3xKVVchSCp5IVEw
ZzE+amBVI3QoLXRjK0A3VDUlUm5pcXpxTCNjCnpWNVJIcEhlZHZ2Q04tTyFZTFVXUk03UDQtdmBD
MEpqeEhWZDdWWU9HY295ZEx7OHlyJjRmcUNmTlF5KmQ0anNBcgp6dkVkWFRwfXhAVVE+ekAje0dF
SWJCendwNmokMz5lUC1GSnhqciFJcGZyQHIxSGsxSFNOJT12TFB5QnJAWWtPMTsKejEkNFpMNk5D
SXo9VX5rbypERk5gWnU/PC1LZjA7SWFXWCQ9Y0BvaXkhRzVuS3RtaUkjZX02YDVvNjZvLVB0U0Ay
CnordEokeT51OF9OI2R7WEY4TTB7X143M3dGWG0rLShLUlZpcnAqazlzPTMqMHg9ZzlvRVErNFFY
bVRyazc2XiF7RAp6dSlibU5sM2woMzl+Zzx3cjw9M25iJGM3VUZUKGByci0xUmVRPEs0UWlaO1hS
MnA4MzY8SW53a3c8OGlGWTUxTUgKekMtRHRid0ZgJEVEWmxfO1hkaCRLUTN5cj1Oa28teCM/a2x3
KnZESGBibFFDLXh6NkpXRFR7Sk5KPUQlTTZlfEppCno/VXR9PilRX2JfaSsjcztMbHJkMlI/Zntj
TFVzZV89JDsmfXE8SFRlZTBfKUpAV25ZWitnWkdqdTZoOXVOVz8xIwp6YUBQJT0/TEkrMmQ2ZU89
bHJ8O2NKX2RUc1UlPG5+ZzhMYHBzSERtMFF9OXhEJm0lcz0hcHxRXkJVNF42VUVDSTsKemgxeVZp
KlR7bEBaNGttSXcxUTJ5MFQ3cStgMl43Z3orY1hURWZFPURUTDVTQiYqPisoayl3KjNDa3glaktQ
KUM5CnpNUUhia19QaDkqaiN6YGRqJldQUVI+TmRAZDRsaERfRUAqfkpxQnJyPHJ5SThxLT1jUEZg
b19RX29iPXpyfitDeQp6QTImQmNRV3d1d3o4Vj9YNChYJT4kM1hXci12O2FEO2lxY1pZKkxIVj0x
c1dNWmE5TndYO2h3Q0AlMy19Y2YyPT0KentlKHBqbkhPJWg8JnklJVNiMGV6KG16SjZUcTgxMWsm
NFhEUXBtd340KD02M0tjdUViWShWc1EkPD1XOXpUPlh5CnooMUA9Nm5FdyZlO2NuUCtmfStlMlp6
M3JDbnlScFk9d2VUbnQoeHAmbmU4d3xKdGNkQlpkcnQyVypuZWNNOytLawp6KFdWalBVeXd1aElE
WCRqYFE5X2JlRmVPUmN8fElxbCpYMmklbzxnQz9YWVhFND9mYkcoWG9HTSt4TDd0eG48cXAKekUw
Ylc8JTE9bGMyXyZtcFAwOW55UjZ5MkpyQyVWOEAmJVZmbFpYbEAqRzcjRDskYWY4eEFQPEg5UjA9
enljZXNICnplcTJ+NFJ9I1gmVVUjezZVTV5iSHJPZEtkRmdyOGY4KlokO0JoO3NBe1JAb29HeUR4
bXgzUFNDejBoNGw1MCo7cwp6bzckXmJoUS1yT2toO35yQ1JQU1YmLXdlbHJjQ2AqWUJVfjdCUj5B
UD00c0UmKlNeYXN3eSE0bWBrI3p0Vm8rNFUKeiVXRG5Cdm82YW9QZiluQmhyYD1XfENTQmhic3dA
eW5+eTd5c203Oz4yQU4pV3IoamBQPElkMnk3aE9fUkxfY1p8CnplLShrQVRqdkV9VHotNldAS3x5
X1ZHMjRVcElqOSowJCNFN0UtS1BjQzd4MnJwdmw5LUlKUEoyLTM9SG82YCpXVAp6QCFMPT5WKVox
KTU2Q2JraiY4RFppcEwjXngzSUZVN2wlcX1ZMVU+PVU+P0pzP2pSUzdFNHlZISVwVFBWTGFNSHMK
eitEUz9HWSU0XmE+SFZWfWwkfFI0UjhAUVNSaXJEI1ZYXjQrTzBVeiRvWVhIIVheMjVEOVNLY3hX
NTk0Wks8XjR3Cnp3NnBmXl8yOzw7UzNSfW9HVzdEWkooc2w0PVBHezZEUSopI3IqJl5MPiMoaGgx
Y1ZeSDw0TzhGK0ZZfF8oai18Pwp6PmNJQmAmbE8+YTA7OTtyTHhDYmV6RnRjYnRpXyVgdl5RbE5P
MnoobFY1V3JudSowYDJCWWglSFE+S359eSR2Q1gKeiFYfCNsPnV8QUpgaWJTMGB7WUpUQWVfbnc3
TzZYKVgtOUp5O2Z8IVZ0TW5qNnJnJEIzaFImdSFVLUA0fT07SEJeCnoqJERGWUk8Qnw9TnsyY2Rw
KXBwTkdlIzV+SUxeSWhpd3UlWGJmY31AVlBBPDBCSX40bElNbWgqNXNXM2wmJm4heQp6JXptZllN
Tlo4UUh3M29TaGNWbTVlZ2UmPEhDKF9hQD1lOTJMU01Fd3RGJX1SVmlrRUt1cjNpSzU4QTVucjEy
Y2AKeiZDJXlzcW9lMF8mITNNRnZGR01eWjRjVldfT0NEbm9KYk1xSG8rUEJsUGQ/djVlRHhCUzJs
QFlhVzZTIyRuPjI4CnpQSEZzYXFoLWUpUThWQTtXMFBFTWQxRkY/S3AmcTxpIXxTQm1JNFppSG9m
c3M3VmxMZ2UwcT8tMnRNJERNdENiMwp6SVYqP2hrQFkqUnJUVGdOdEAtTU91OEhRXzJDa2A7aEVA
aDV8TlRkfW1+Nl9kUDw1PHJMUV9hUkxIRmFQJSola2oKenVqbklEJVh8NHBGcj4jbGp8WF52MUk7
PTNvZmBXaUZaeDg2Pz1HenlCLVA3YVN6RjkwWkIwKFA2THk4bDNZKkB5CnpBQ0wkP3pPUjFDWSZP
K09edHNyJChJOyN6MUJHan1FJVVwV0trKHUrOykjK0RDQnNmNWVjZE1oPGdZdFo3YUpxPQp6I2BR
KmM2IUw2biMxT09fI3F0PVEtWj0wSjNhckIzRkUzN2ViSUZHcm54TF9GUFFqJTgtYnwodDdTTU4p
JkUrLWoKelE1fXgrazY0TkNpUGtoZzNXQVY5OThtODg+N3otbFpNYDlha0VBdjVMVHpIQE5WO2Iz
VmM5UHFFM2JSTip0PEF6Cnp5bDMwWTU4Tk1OYU1TcTk3bCVYalFWcXdzJXRzZGB8N0tpPU9WQHFO
TzVlWHI2U2ZQSCYpWCVhaCh7Iz1wKT1XZwp6eWpabl8pcHw9LTtAaSpYM09keW9IbkBrJTVDQD9o
OHo0KlhgYjRqOCVJdyswZXBhZVZDISVLLSUoUyolYVchUVMKem5BS2tWTH1pWDYkPjReNlYxcXts
K1U0TmBHJVkyWCY8fEVHdnBtYXJOSXhhXkVwaEFpKTJCeXxPJlNgfXk2Y2x+CnpONj5mNkctO2h4
VyVxdmEhbCEtZUJNfVhmTyM4SVNzelJQanN9NkRERUhtTW52MlFCekRnfDsxMkA5e041XnVqdgp6
NkZzb0BTd0o9SGA/P3chPj9ydkE3bnBNTWFBY3ZzUFN0RjhybWlvT29tRSY7RTBhIz0xKjF8dW1F
Yz5SdnBifjUKejFiYGw3a0dzRitUJEEmN0dxbVYlU0VlJGU2aj87VF81LWZ6S1BYfjZHRkcxSmB4
fihQSW9DYmRGcVRKYT56N3toCnpEK3dMSVNOVTxVTU1pVEJDVTJYeCo4WmpZb2phPl9pQz54aSZg
PHJzUjt1UW9KT2klbCE3cDhSN01HVHFrQjBwKAp6THBPZnVfRmQ+S3w1ZGxLMVMya30hbndUbU5a
QFU0ZWEhKj5lKUlGfXlAYW9RWXctdE1tSjNnYippcE13eFRQfloKelEqfmhVbjVJNHR7Y01tdXQ/
TjROb3hHV2FpR1I+JWk0MDhuUC1TY0QjYVZScFhqd34oZnQzYVNFNThzJk09UDRzCnpWP0JSREZ4
a3RVP2Z1ZzdSI01uaHNBQ2RCeVYjfCtXXkZDYWRgPll3ITdjeTRGKWZgaEJxZihnNzdeVkJVbFA3
dAp6Z3VNTElmX0FSblRmZGdycXYpY0E8bm1eKG0pRX0zQUtLRjVPWXN2NCZ7XzB7JDs1MXo2KDt6
eUN7TmtIMk1PazgKemBRVkM5QUZmRE96c2VOYVBfTzR7d3FDU09faUBmWEZfbEFnTFhaPzkwb0hv
YnBAKEliYClNWXg3KUQyUCFZVilSCnpfIWgxOXc7OSNkMT5LaV5kLU4yaEYyaHoyb1B5aX5vcXN4
fElSOWkjcTlNKiRUUm12TStDSDFKdDVMI3J6bE9vXgp6bFI8ZHE8MWd8Pm5AZHNzb3BfPFFWYXVs
ZWNYVjlTVXVZVSU/WDdGdF9ZO2otWjw5dT9lfFJeTD9lSWZ0V1h6KlcKenRpVXIqRjY8YEpBKmth
SzZgSUYyPWlSOWxQMjNJSHE9WmxCaD4tJitFbz97JGRmWl5Yb0p9Vk1LRC1LT1RYd0h5CnoxdWh6
Qj9pOW43Rz1+fX5sJGV0Z1ByYkZuZHMtakBwUUc1PyRXfXxEb0tIem92QGQwUFlSNGVEaH1pR2hQ
PnJoNgp6UWArc09gXn01Jjw3PWh+PHt5YFZ7YWlHanhlQnFVSGlzb2RxXmp3Jis0MDBtZytjS08y
fk8hOF52SW8lQSVKcCUKejNoX2Z9amZ8e2dQZnQmeWpnZXV1K3FnV35pVCFBQmFjZ1VpbjFxQkw3
PHEkPWFqUDJDakRTTUJVfW9TOGJDWCtwCnpEYF9UfCp2RzckQzJjUSV7Vio8bihOcjEhcVVaWn15
fD96MWItKitIUEZWWXt0QW53NTI8P1J9d1IwUERHc29faAp6dFJgSW9nI05MO2ZrYTNTMU5temEh
cyVLWWQkSF5XX2h4X19YXzx8digte2lzbk48OSh7VWpYYFFzTyhWKEBaa0wKeiV0SFJtblpzQTxE
aUZ6d0JtPyVsWFJwMjtUbypTfTswaTgoSDtYODxNVntEQS1WQld5WllGb0M2dUVZY0NObHhQCnpP
ZClNOWU8SyhaZ2JZNHo3aigkVzwtRkYyVU99VnIkbElUTVBXa0hDSzRaNzd2WFNAWl8oRHUlaz1R
TVVtMTZ7Qwp6Nm18cHE0YE9FVWl0Wnd3RnRsPml8TlUqcj8zfWdMWkR8NV9CMF5IcVZTeEAoUHgk
IXA9RVQ7ZEd7R1NjKG8rYTkKeiRqVV5KTDgzIWZedWJ1RTk+QFpBaHFhQG9lRWFQQ0AkdGw+U014
KExhakl3WiV3T2JAe1V7QWJSRGFGbWpDejIoCnppekhPPm99ZC1VezREcjhldXJNOXBBXmE0KFJ7
d21Dd0dfXylLTXdYPCY8ODA/SllsUzl9e1R4IUtzdWE5JGh7cgp6R3ZhJlkqU2xrdWR3bFJ9PT4m
PyoxTTxPIzg7WioxcCszZGRPSkM0Tk1zcUJvVytyelI7O254KEJPTTZIRHVpSzgKekFiZThRSGt+
Sm1jZDkwMj5wTUdsdyQ5JChWP2VMT012biRedkhATzQ3RThiO3gjdz9oVH1gNkUoUj1YYG0tWWRE
Cnp0MWlySXEhMDhIPDY4YyhwMEZLMDs9OzkoVWomKWZHLUYlTT80UzJCczZeVGZgbHNRMDVsYzV2
MWxpKHI2byRKKwp6dHchdDx6NTdLSWtYSTZpJlpXPmlJaW9UR01uc3VjV19oJTRAQHZ0UVNZS2dh
b0MlLWhSN3puPV90TWhsQFdKeD0KelYtKCM+bHcxaCVsUnNSQzlgZlB1eVNHUzdmSG5yempmWj5t
MjZnYnI+dTx0IUAlJnJ4YH53QH0mYVpFejVecXg2Cnp1Wl9SeWo4RXNhaCM8WD9DRzcjQHswOH52
UVFrbilGWnE9Qy0wJWV4JClNTWpjWjFePVF3Sn1TQGtuK3wtTkJLXwp6S0hESGclRjgjVWRNOHh8
VHA3WW04dGt3cXl6XkNmajFaaDJUTmlMTWFIUSQ4JFhFakMwOExZJVg8dTkjdktHUUwKemlaYEFn
XkN0d3F4c3RnViVkJHhaXzY5Km9jdVA9YWxlbDQqV2Z8Y3VYKTN1Nz96bnoxb0RPczx4LTNLRSly
TEJNCnoxa0N4ZFozRnQwKiUtbno7U2pFeUUjTFlpbEE7ZGM9NjhmTWwhTz5PeEVpPD9RaztjS0JV
bEVJRnQ5WWtTMU0yPwp6NmJNQT1FP1A5SmxXaXNmcm88STtCK3Bzfk0oYGNVcyZlKlJmb0YkOG5s
R1piRWAwJmhpK3g5Q2Q9USkoYCojZSEKenRhRU5RI2JaKnl4JHtGcTB7OWxoXnVBezE8MkNpI2Ex
VkNrUTltNm1AbHoyXnc7dFh1Z0U3ekxSLTE8Tyt5em82CnpaakM9ZUNzRmZOPFcoN3BBJm0tbjR8
MFhfPDk7eEg4cXEqMm5CUnh2aEN9WkVzbWVVazNOR194Rz9jJDMjVkJ6UAp6Y2FlQURJc35lRzN3
RzNITGJXUHAlK31aJVp0QXdAXiNYcjI4b31iSjVHPUg8aSEpcGY7ZkFzUFlub3huPGlvWEoKem96
Mk58Qj0lXnpwZmsmbkp6Rml0K3RnIzdPUktpNndPYF4+K0w4JVk2ZHo+Vzh1YWxES0p7cDAlRT1s
KCRvKWUtCno1YUtQR3s/fDdDUGpYOUJTKCY9bmwjU1ZjbWpzVkteUWFIcm5lOWtWPWFfNUBUUlVO
WT1vRmt4VEsxQFNqQlEyXgp6Qjt2KHJWYCR4Wj58Zl5rd213Vk8xaF9aODUpKnQlc2JPWVJFcGx6
RFoqMjUqYXA3YWlGRFU0MXF0NDA2cTU4LTgKekUhNFNUPFIrN2khfl9MYEA5JUhjZXJ7ISVwdiFn
WSFeKT1gbzBSNikyPkl2Nk9zVHJwZXZVRFZNcXY8VENGWmRtCnppNmBmaCg/OHRGY189OzdZUnYx
NUxybU1CYEo4NzdOZnZBIWJTY0BJY0xqXihkQnxyREdlNzAwUFFJRUxsezxDXwp6cSUjI05tUlM2
PkwoJEg5azwhTk9eYitTa0tDfURoM1BKJHFnZCExRU5seylHelg2eXEqNiVpRVNtb3lUWTxHOEIK
ejswbVhyKlVxUTVAMWNMIUFIbyNUQld2NXErITt6P0dNUUpjVHgtOGg5QXBta0JROCs/V21ZYkUo
YiNvYDtCQnlhCnopYXw5RlFsNj5mUV9aSntzYlVCZlNUcSF3I2BMJFltaHJKTUIkJDUoVihIYDRp
O0xLUzRQbCsoaVRROCRYV0cxMQp6ciphcT0xMFJsISV6dzRQbV9GJjV4dFctbEs+ZWQhPyE0bnEh
cTRsOTE4KVN4Z2o8JTd5eEsyUS1pNGtyWG9xXz0KenR5KV5gRExxfCZSOyslK3M7dEp3SyM9ZV9q
Zl5tWjFTMkotdiZFYUJtSytEU0lXIWF0X09UQlJfNlpKSzQzZ3Q2Cnp0TlNSPippY3NIWWlqcHpQ
R1Bafmp5NnNpNCp1I1NRRE0oOUxqckZ7RjJ1Sl5JZUp1WEtBISR8K2dYNG9LVD9CUQp6fDI1JCM0
e0BOZFZ7SVhCWmQ+d2g8aERFP1M7Z0RRRUFrPWsySm1eS1hvKnFrPj4/N1FxbmxUNVBiTUEzJVZv
dVIKemRldH43V3czLWBAenRvJEhAYj5TVTFxJCs2SkttUXYkWj5sWTZKQypHTT5gSnNXSUJ0VjNM
RXt6M3RlKU53aFQyCnpQLWdoMzNSTT5rYDc/NXEldnc1T00oZDN+Qk9iPTZNdGdAOHhHUEQ1THJj
e0xoRXY2JjA/JUNRN3dzYyppVHVxNAp6eUp0K1MoMkYkKnNkSjU5byR0cFEkQThEJnVuIXtraG1B
cWI8LXxodF8rKjRJZWBjPH1jbWoyO0laUmZLdjgyJkUKejJ+UmBKTCRDfHAwN0dUWSFHfCl3JE5t
ZHEjcXxXKE1QS2VuQ19CQ2hwR29AXzt3Yj10JjtJdWR1ITFSfWNxb1lQCnotY0otbXBBZ05maG1X
bHcyR3Q7VTleK0xxbmhKZzdmMmZ3fVZKPDdHUzc7WGJNOXtYK1V2eXc1anN0Zj42KUImWQp6PUEk
SEMmfjAoWl9EQWp3bl5SblJ0YSMpNSUhITw5cTg2N3JzSHMkJmh4RzQyJkNKMnRNWV4ySW5gYlFe
TVMhNlIKempxVzUpZj10YXNuVk8pR1RJQzVGZVZ2ZEJsWkNiXjx3fUdvc0ghYmQ2OXhnJVhDakU2
bD1HezZQPWg+e2pgNmNYCnpgZkFRYVJ8YFVoQm1BdFMhLVE8fnBYXmVoUyhyO3NxZz0pYyN2JEpI
eCNPMzgkNXoqaVg5ZkQ+OU4xcmdVQ3V1JAp6PnN7dT1NPTZrTGZjSypIY25pYnRvNVdQXj5aXnU8
WDNkRlpyc0o8UFdzKmw5PngkPnExbE1ObUkrV24yN35mQiEKemZpVk8mPHxme2xud3BHQUNLa0d0
SDN0fVpXK1oqfGAyaEN5SVN8JldSfSgyPl8+Pmh9VW1CZ2RDeHFWTDx9QntBCnppWEEwVz5FKTst
RiZQcktuaCVYaT07bmV0ZUcwRT9BSXY7Sm1JXjNORzxtNDJjVD9KKGt6KEl4OzB9d1M4YiZIaQp6
IWBkP0ooZ2tNKUVUSU9zZClaQnV0ezVtOGRNY1Z8RUI1fGBtN2FeV0k3fnE9KCM8V2tfV2plPz9R
QUgtaShHeGsKejFXenVvWTFuXn1UNHYpbGphb2dnZGNKNWV1YUY9QFJgUTxpMjtTPGpPNzRKblNT
XnJDbkxCPWM7SSRUJXZhO3YkCnprdFpARG02eE1mTj0/JSFIWkBCR3lHTnV3U0J9YyFGQkFvUkBC
ZGU2bEtUfGtjeTRAU1NtOHlBMXw8d1cjWkMhSgp6TVNuaGVoMUI4R2p4MUV1Z2xUQlg+SjBjMFhC
KigxeFdHeiQ1Yy0qcyo8d2Y7alVman1TYC0/NGo9P3MhTHV6VEMKekJpVlMjIzhwO2dRQDxpI0Im
RzZhcm9QQmE0VDhwUSFGNzIhaT96IUhCMHJFQ1pxN08tTnVVMyVFP1J9ISZMTitKCnoyI2tpPmA1
ZE1RQ21QVyU3RE0jfSNtcyEtc2JVbS1JJEBKTzFhRXx0QTQyeWRwZnBIQTYkeVlKcnBBVGZrQSE5
aAp6ckFUR2o+RnstUWtAYXZiNUJiTztwXmN1cFprbUhqIX41P2RpMXxNaHt7SkI4LW1nMm4xTnw+
c1UoZUche3lvUzUKTlRJJXwwbGAxdzd7fDdOIyghfkcoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvemVyby1hbHBoYS5wbmcgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvemVyby1hbHBoYS5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU1
NjMwYzExNjAzOGY5MGVmNzJjZGQwMmI2NjRmOGYwZGFhMDZlMwpHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgODkKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4lcGxDYzF8LThZdyhiV34zWjU+R0Fy
KjV9UGoyTDhGeUxTfHhQMUVJCm1yOy15SGx9dzJyXjBvXn05Yzc+RXopPiQpYUIzRyZFclh9NHBV
WE9AZ2VDeG0mbHN1egoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvd2ViZ2wtY29uZm9ybWFuY2Ut
dGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L3dlYmdsLWNvbmZvcm1hbmNlLXRlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYyNjU5MjI3ZTliNWQ0
MmIxNzZlM2MxYjAzNDRkYmU3NzZiNjRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3dlYmdsLWNvbmZvcm1hbmNlLXRlc3Rz
Lmh0bWwKQEAgLTAsMCArMSwxMzA1IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4
dCBmaWxlLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8IS0tIFByZXZlbnRzIENocm9tZSBmcm9tIG9mZmVyaW5nIHRvIHRyYW5z
bGF0ZSB0ZXN0cyB3aGljaCBnZW5lcmF0ZQorICAgICByYW5kb20gY2hhcmFjdGVycyBmb3IgdGhp
bmdzIGxpa2UgYXR0cmlidXRlIG5hbWVzIC0tPgorPG1ldGEgbmFtZT0iZ29vZ2xlIiB2YWx1ZT0i
bm90cmFuc2xhdGUiPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPHN0eWxl
PgorICAqIHsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICB9CisKKyAgYm9keSB7Cisg
ICAgYm9yZGVyOiAwOworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGhlaWdo
dDogMTAwJTsKKyAgICBtYXgtaGVpZ2h0OjEwMCU7CisgICAgZm9udC1mYW1pbHk6IFZlcmRhbmEs
IEFyaWFsLCBzYW5zLXNlcmlmOworICAgIGZvbnQtc2l6ZTogMC44ZW07CisgIH0KKworICBpbnB1
dFt0eXBlPWJ1dHRvbl0sIHNlbGVjdCB7CisgICAgcGFkZGluZzogMnB4IDZweCAycHggNnB4Owor
ICAgIG1hcmdpbjogMDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OworICAgIGJvcmRlci1y
YWRpdXM6IDJweDsKKyAgICBiYWNrZ3JvdW5kOiAjZjRmNGY0OworICB9CisKKyAgYSB7CisgICAg
Y29sb3I6ICM4OEY7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICB9CisKKyAgYTpob3Zl
ciB7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2NkQ7CisgIH0KKworICBsYWJlbCB7
CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgfQorCisgICN0ZXN0bGlzdCB7CisgICAgcG9z
aXRpb246Zml4ZWQ7CisgICAgdG9wOjE4MHB4OworICAgIGxlZnQ6MDsKKyAgICByaWdodDogY2Fs
YygxMCUgKyA1MHB4KTsKKyAgICBib3R0b206MHB4OworICAgIG92ZXJmbG93OmF1dG87CisgICAg
bWluLWhlaWdodDogMjAwcHg7CisgIH0KKworICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRo
OiA1MDBweCkgeworICAgICN0ZXN0bGlzdCB7CisgICAgICBmb250LXNpemU6IDgwJTsKKyAgICB9
CisgIH0KKworICAjaGVhZGVyIHsKKyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICB0b3A6MDsK
KyAgICBsZWZ0OjA7CisgICAgd2lkdGg6MTAwJTsKKyAgICBoZWlnaHQ6IDE2MHB4OworICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQ0M7CisgIH0K
KworICAjaW5mbyB7CisgICAgbWFyZ2luOiAwIGF1dG87CisgICAgbWF4LXdpZHRoOiAyODBweDsK
KyAgfQorICAjbG9nbyB7CisgICAgd2lkdGg6IDY4cHg7CisgICAgaGVpZ2h0OiA0MHB4OworICB9
CisKKyAgI2lmcmFtZS1jb250YWluZXIgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBkaXNwbGF5
OiBibG9jazsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgd2lkdGg6IDkwJTsKKyAgICBoZWln
aHQ6IGNhbGMoMTAwJSAtIDE3MHB4KTsKKyAgICBib3R0b206IDBweDsKKyAgICBsZWZ0OiBjYWxj
KDkwJSAtIDUwcHgpOworICAgIHRyYW5zaXRpb246IGxlZnQgMC4xNXM7CisgIH0KKyAgI2lmcmFt
ZS1jb250YWluZXIuaWZyYW1lLXNob3duIHsKKyAgICBsZWZ0OiAxMCU7CisgIH0KKyAgI2lmcmFt
ZS10b2dnbGUgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGln
bjogbWlkZGxlOworICAgIHdpZHRoOiAyMHB4OworICAgIGhlaWdodDogMTAwJTsKKyAgICBwYWRk
aW5nOiAwOworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgfQorICAjdGVzdC1pZnJh
bWUgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogbWlk
ZGxlOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4
KTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgIH0K
KworICAuZm9sZGVyIHsKKyAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTsKKyAgfQorCisgIC5mb2xk
ZXJIZWFkZXIgeworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgcG9zaXRpb246IHN0aWNr
eTsKKyAgICB0b3A6IDA7CisgIH0KKyAgLmZvbGRlckhlYWRlcklubmVyIHsKKyAgICBiYWNrZ3Jv
dW5kOiB3aGl0ZTsKKyAgICAvKiB0byBoaWRlIGNoZWNrYm94ZXMgZnJvbSBwYXJlbnQgaGVhZGVy
cyAqLworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBsZWZ0OiAtMmVtOworICAgIHBhZGRp
bmctbGVmdDogMmVtOworICB9CisKKyAgLmZvbGRlck5hbWUgeworICAgIGZvbnQtd2VpZ2h0OiBi
b2xkOworICB9CisKKyAgLmZvbGRlck1lc3NhZ2UgeworICAgIG1hcmdpbi1sZWZ0OiAxZW07Cisg
ICAgZm9udC1zaXplOiAwLjllbTsKKyAgfQorCisgIC5wYWdlSGVhZGVyIHsKKyAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOworICB9CisKKyAgLnRlc3RwYWdlIHsKKyAgICBib3JkZXItc3R5bGU6IHNv
bGlkOworICAgIGJvcmRlci1jb2xvcjogI0NDQzsKKyAgICBib3JkZXItd2lkdGg6IDBweCAwIDFw
eCAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7CisgICAgcGFkZGluZzogNHB4IDAgNHB4
IDA7CisKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXM7Cisg
ICAgLW1vei10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzOworICAgIHRyYW5zaXRp
b246IGJhY2tncm91bmQtY29sb3IgMC4yNXM7CisgIH0KKworICAudGVzdHBhZ2U6Zmlyc3QtY2hp
bGQgeworICAgIGJvcmRlci13aWR0aDogMXB4IDAgMXB4IDA7CisgIH0KKworICAudGltZW91dCB7
IH0KKyAgLnN1Y2Nlc3MgeyB9CisgIC5mYWlsIHsgfQorICAudGVzdHBhZ2VzdWNjZXNzIHsgYmFj
a2dyb3VuZC1jb2xvcjogIzhGODsgfQorICAudGVzdHBhZ2VmYWlsIHsgYmFja2dyb3VuZC1jb2xv
cjogI0Y4ODsgfQorICAudGVzdHBhZ2Vza2lwcGVkIHsgYmFja2dyb3VuZC1jb2xvcjogIzg4ODsg
fQorICAudGVzdHBhZ2V0aW1lb3V0IHsgYmFja2dyb3VuZC1jb2xvcjogI0ZDODsgfQorICAubm93
ZWJnbCB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogcmVkOyB9CisgICNlcnJvci13cmFwIHsK
KyAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgbGVm
dDogNTAlOworICB9CisgICNlcnJvciB7CisgICAgIGNvbG9yOiByZWQ7CisgICAgIGZsb2F0OiBs
ZWZ0OworICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgIGxlZnQ6IC01MCU7CisgICAgIHRl
eHQtYWxpZ246IGxlZnQ7CisgIH0KKyAgdWwgeworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAg
cGFkZGluZy1sZWZ0OiAxZW07CisgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIHNyYz0ianMvd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3dpbmRvdy5vbmJlZm9yZXVubG9hZCA9IGZ1bmN0
aW9uKCkgeworICAvLyBQcm9tcHQgdXNlciBiZWZvcmUgcmVsb2FkaW5nCisgIHJldHVybiBmYWxz
ZTsKK30KKwordmFyIERFRkFVTFRfQ09ORk9STUFOQ0VfVEVTVF9WRVJTSU9OID0gIjIuMC4xIChi
ZXRhKSI7CisKK3ZhciBPUFRJT05TID0geworICB2ZXJzaW9uOiBERUZBVUxUX0NPTkZPUk1BTkNF
X1RFU1RfVkVSU0lPTiwKKyAgZnJhbWVzOiAxLAorICBhbGxvd1NraXA6IDAsCisgIHJvb3Q6IG51
bGwsCisgIHF1aWV0OiAwCit9OworCit2YXIgdGVzdFZlcnNpb25zID0gWworICAiMS4wLjQgKGJl
dGEpIiwKKyAgIjIuMC4xIChiZXRhKSIKK107CisKK2Z1bmN0aW9uIHN0YXJ0KCkgeworCisgIGZ1
bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBpZiAod2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNv
bGUubG9nKSB7CisgICAgICB3aW5kb3cuY29uc29sZS5sb2cobXNnKTsKKyAgICB9CisgIH0KKwor
ICBmdW5jdGlvbiBjcmVhdGVTdHlsZXNoZWV0KCkgeworICAgIHZhciBzdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIiIpKTsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxl
KTsKKyAgICByZXR1cm4gc3R5bGUuc2hlZXQ7CisgIH0KKworICBmdW5jdGlvbiBjcmVhdGUzRENv
bnRleHQoY2FudmFzLCBhdHRycywgdmVyc2lvbikgeworICAgIGlmICghY2FudmFzKSB7CisgICAg
ICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICB9CisgICAg
dmFyIGNvbnRleHQgPSBudWxsOworICAgIHZhciBuYW1lczsKKyAgICBzd2l0Y2ggKHZlcnNpb24p
IHsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgbmFtZXMgPSBbIndlYmdsMiJdOyBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIG5hbWVzID0gWyJ3ZWJnbCIsICJleHBlcmltZW50YWwtd2Vi
Z2wiXTsgYnJlYWs7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dChuYW1lc1tpXSwgYXR0cnMpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgfQorICAgICAg
aWYgKGNvbnRleHQpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBjb250ZXh0OworICB9CisKKyAgdmFyIHJlcG9ydFR5cGUgPSBXZWJHTFRlc3RIYXJuZXNzTW9k
dWxlLlRlc3RIYXJuZXNzLnJlcG9ydFR5cGU7CisgIHZhciBwYWdlQ291bnQgPSAwOworICB2YXIg
Zm9sZGVyQ291bnQgPSAwOworICB2YXIgYXV0b1Njcm9sbEVuYWJsZWQgPSB0cnVlOyAvLyBXaGV0
aGVyIHRoZSB1c2VyIHByZWZlcnMgdG8gYXV0byBzY3JvbGwKKyAgdmFyIGF1dG9TY3JvbGwgPSB0
cnVlOyAvLyBXaGV0aGVyIGF1dG8gc2Nyb2xsIGlzIGFjdHVhbGx5IHBlcmZvcm1lZAorICBsZXQg
cXVpY2tUZXN0TW9kZSA9IHRydWU7CisKKyAgdmFyIFBhZ2UgPSBmdW5jdGlvbihyZXBvcnRlciwg
Zm9sZGVyLCB0ZXN0SW5kZXgsIHVybCkgeworICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjsK
KyAgICB0aGlzLmZvbGRlciA9IGZvbGRlcjsKKyAgICB0aGlzLnVybCA9IHVybDsKKyAgICB0aGlz
LnRvdGFsVGVzdHMgPSAwOworICAgIHRoaXMudG90YWxTdWNjZXNzZnVsID0gMDsKKyAgICB0aGlz
LnRvdGFsVGltZW91dHMgPSAwOworICAgIHRoaXMudG90YWxTa2lwcGVkID0gMDsKKyAgICB0aGlz
LnRvdGFsRmFpbGVkID0gMDsKKyAgICB0aGlzLnRlc3RJbmRleCA9IHRlc3RJbmRleDsKKyAgICB0
aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7CisgICAgdGhpcy50b3RhbFRpbWUgPSAwOworICAg
IHZhciB0aGF0ID0gdGhpczsKKworICAgIHRoaXMuZWxlbWVudElkID0gInBhZ2UiICsgcGFnZUNv
dW50Kys7CisgICAgdmFyIGxpID0gcmVwb3J0ZXIubG9jYWxEb2MuY3JlYXRlRWxlbWVudCgnbGkn
KTsKKyAgICBsaS5pZCA9IHRoaXMuZWxlbWVudElkOworICAgIHZhciBkaXYgPSByZXBvcnRlci5s
b2NhbERvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuY2xhc3NMaXN0LmFkZCgncGFn
ZUhlYWRlcicpOworICAgIHZhciBjaGVjayA9IHJlcG9ydGVyLmxvY2FsRG9jLmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CisgICAgY2hlY2sudHlwZSA9ICdjaGVja2JveCc7CisgICAgY2hlY2suY2hl
Y2tlZCA9IHRydWU7CisgICAgY2hlY2sub25jbGljayA9IGZ1bmN0aW9uKCkgeworICAgICAgaWYg
KHRoaXMuY2hlY2tlZCkgeworICAgICAgICB0aGF0LmZvbGRlci5lbmFibGVVcF8oKTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aGF0LmZvbGRlci5kaXNhYmxlVXBfKCk7CisgICAg
ICB9CisgICAgfTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoY2hlY2spOworICAgIHZhciBidXR0b24g
PSByZXBvcnRlci5sb2NhbERvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGJ1dHRvbi50
eXBlID0gJ2J1dHRvbic7CisgICAgYnV0dG9uLmlkID0gdGhpcy5lbGVtZW50SWQgKyAiLWJ1dHRv
biI7CisgICAgYnV0dG9uLnZhbHVlID0gJ3J1bic7CisgICAgYnV0dG9uLm9uY2xpY2sgPSBmdW5j
dGlvbigpIHsKKyAgICAgIGF1dG9TY3JvbGwgPSBmYWxzZTsKKyAgICAgIHJlcG9ydGVyLnJ1blRl
c3QodXJsKTsKKyAgICB9OworICAgIGlmIChyZXBvcnRlci5ub1NlbGVjdGVkV2ViR0xWZXJzaW9u
KSB7CisgICAgICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgIH0KKyAgICBkaXYuYXBwZW5k
Q2hpbGQoYnV0dG9uKTsKKyAgICB2YXIgYSA9IHJlcG9ydGVyLmxvY2FsRG9jLmNyZWF0ZUVsZW1l
bnQoJ2EnKTsKKyAgICBhLmhyZWYgPSBXZWJHTFRlc3RIYXJuZXNzTW9kdWxlLmdldFVSTFdpdGhP
cHRpb25zKHVybCwgeworICAgICAgd2ViZ2xWZXJzaW9uOiByZXBvcnRlci5zZWxlY3RlZFdlYkdM
VmVyc2lvbiwKKyAgICAgIHF1aWV0OiBPUFRJT05TLnF1aWV0LAorICAgICAgcXVpY2s6IHF1aWNr
VGVzdE1vZGUgPyAxIDogMCwKKyAgICB9KTsKKyAgICBhLnRhcmdldCA9ICJfYmxhbmsiOworICAg
IGNvbnN0IGZvbGRlck5hbWUgPSB0aGF0LmZvbGRlci5kaXNwbGF5TmFtZTsKKyAgICBjb25zb2xl
LmFzc2VydChmb2xkZXJOYW1lLnN0YXJ0c1dpdGgoImFsbC8iKSk7CisgICAgY29uc29sZS5hc3Nl
cnQodXJsLnN0YXJ0c1dpdGgoZm9sZGVyTmFtZS5zdWJzdHJpbmcoNCkgKyAiLyIpKTsKKyAgICBj
b25zdCB1cmxXaXRob3V0Rm9sZGVyID0gdXJsLnN1YnN0cmluZyhmb2xkZXJOYW1lLmxlbmd0aCAt
IDQgKyAxKTsKKyAgICB2YXIgbm9kZSA9IHJlcG9ydGVyLmxvY2FsRG9jLmNyZWF0ZVRleHROb2Rl
KHVybFdpdGhvdXRGb2xkZXIpOworICAgIGEuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgZGl2LmFw
cGVuZENoaWxkKGEpOworICAgIGxpLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndGVzdHBhZ2UnKTsK
KyAgICBsaS5hcHBlbmRDaGlsZChkaXYpOworICAgIHZhciB1bCA9IHJlcG9ydGVyLmxvY2FsRG9j
LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7CisgICAgdmFyIG5vZGUgPSByZXBvcnRlci5sb2NhbERvYy5j
cmVhdGVUZXh0Tm9kZSgnJyk7CisgICAgbGkuYXBwZW5kQ2hpbGQodWwpOworICAgIGRpdi5hcHBl
bmRDaGlsZChub2RlKTsKKyAgICB0aGlzLnRvdGFsc0VsZW0gPSBub2RlOworICAgIHRoaXMucmVz
dWx0RWxlbSA9IHVsOworICAgIHRoaXMuZWxlbSA9IGxpOworICAgIHRoaXMuY2hlY2sgPSBjaGVj
azsKKyAgfTsKKworICBQYWdlLnByb3RvdHlwZS5jaGVja2VkID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHRoaXMuY2hlY2suY2hlY2tlZDsKKyAgfQorCisgIFBhZ2UucHJvdG90eXBlLmFkZFJl
c3VsdCA9IGZ1bmN0aW9uKG1zZywgc3VjY2Vzcywgc2tpcHBlZCkgeworICAgICsrdGhpcy50b3Rh
bFRlc3RzOworICAgIGlmIChzdWNjZXNzID09PSB1bmRlZmluZWQpIHsKKyAgICAgICsrdGhpcy50
b3RhbFRpbWVvdXRzOworICAgICAgdmFyIHJlc3VsdCA9ICJ0aW1lb3V0IjsKKyAgICAgIHZhciBj
c3MgPSAidGltZW91dCI7CisgICAgfSBlbHNlIGlmIChzdWNjZXNzKSB7CisgICAgICArK3RoaXMu
dG90YWxTdWNjZXNzZnVsOworICAgICAgLy8gZG9uJ3QgcmVwb3J0IHN1Y2Nlc3MuCisgICAgICBy
ZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICsrdGhpcy50b3RhbEZhaWxlZDsKKyAgICAgIGlm
IChza2lwcGVkKSB7CisgICAgICAgIC8vIFNraXBwZWQgdGVzdHMgYXJlIGNvdW50ZWQgYXMgYm90
aCBza2lwcyBhbmQgZmFpbHVyZXMgKGJlY2F1c2Ugd2UKKyAgICAgICAgLy8gZG9uJ3Qgd2FudCB0
byBhY2NpZGVudGFsbHkgYWNjZXB0IGEgY29uZm9ybWFuY2Ugc3VibWlzc2lvbiB3aXRoCisgICAg
ICAgIC8vIHNraXBwZWQgdGVzdHMpLgorICAgICAgICArK3RoaXMudG90YWxTa2lwcGVkOworICAg
ICAgfQorICAgICAgdmFyIHJlc3VsdCA9ICJmYWlsZWQiOworICAgICAgdmFyIGNzcyA9ICJmYWls
IjsKKyAgICB9CisKKyAgICB2YXIgbm9kZSA9IHRoaXMucmVwb3J0ZXIubG9jYWxEb2MuY3JlYXRl
VGV4dE5vZGUocmVzdWx0ICsgJzogJyArIG1zZyk7CisgICAgdmFyIGxpID0gdGhpcy5yZXBvcnRl
ci5sb2NhbERvYy5jcmVhdGVFbGVtZW50KCdsaScpOworICAgIGxpLmFwcGVuZENoaWxkKG5vZGUp
OworICAgIGxpLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjc3MpOworICAgIHRoaXMucmVzdWx0RWxl
bS5hcHBlbmRDaGlsZChsaSk7CisgIH07CisKKyAgUGFnZS5wcm90b3R5cGUuc3RhcnRQYWdlID0g
ZnVuY3Rpb24oKSB7CisgICAgaWYgKGF1dG9TY3JvbGwgJiYgdGhpcy5lbGVtLnNjcm9sbEludG9W
aWV3KSB7CisgICAgICB0aGlzLmVsZW0uc2Nyb2xsSW50b1ZpZXcoZmFsc2UpOworICAgIH0KKyAg
ICB0aGlzLnRvdGFsVGVzdHMgPSAwOworICAgIHRoaXMudG90YWxTdWNjZXNzZnVsID0gMDsKKyAg
ICB0aGlzLnRvdGFsU2tpcHBlZCA9IDA7CisgICAgdGhpcy50b3RhbEZhaWxlZCA9IDA7CisgICAg
dGhpcy50b3RhbFRpbWVvdXRzID0gMDsKKyAgICB0aGlzLnRvdGFsVGltZSA9IDA7CisgICAgLy8g
cmVtb3ZlIHByZXZpb3VzIHJlc3VsdHMuCisgICAgd2hpbGUgKHRoaXMucmVzdWx0RWxlbS5oYXND
aGlsZE5vZGVzKCkpIHsKKyAgICAgIHRoaXMucmVzdWx0RWxlbS5yZW1vdmVDaGlsZCh0aGlzLnJl
c3VsdEVsZW0uY2hpbGROb2Rlc1swXSk7CisgICAgfQorICAgIHRoaXMudG90YWxzRWxlbS50ZXh0
Q29udGVudCA9ICcnOworCisgICAgdmFyIHNob3VsZFJ1biA9IHRoaXMuY2hlY2suY2hlY2tlZCAm
JiB0aGlzLmZvbGRlci5jaGVja2VkKCk7CisKKyAgICBpZiAoc2hvdWxkUnVuKSB7CisgICAgICB0
aGlzLmVsZW0uY2xhc3NMaXN0LnJlbW92ZSgndGVzdHBhZ2V0aW1lb3V0Jyk7CisgICAgICB0aGlz
LmVsZW0uY2xhc3NMaXN0LnJlbW92ZSgndGVzdHBhZ2Vza2lwcGVkJyk7CisgICAgICB0aGlzLmVs
ZW0uY2xhc3NMaXN0LnJlbW92ZSgndGVzdHBhZ2VmYWlsJyk7CisgICAgICB0aGlzLmVsZW0uY2xh
c3NMaXN0LnJlbW92ZSgndGVzdHBhZ2VzdWNjZXNzJyk7CisgICAgICB0aGlzLnN0YXJ0VGltZSA9
IERhdGUubm93KCk7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXMuY2hlY2suY2hlY2tlZCAmJiB0
aGlzLmZvbGRlci5jaGVja2VkKCk7CisgIH07CisKKyAgUGFnZS5wcm90b3R5cGUuZmlyc3RUZXN0
SW5kZXggPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy50ZXN0SW5kZXg7CisgIH07CisK
KyAgUGFnZS5wcm90b3R5cGUuZmluaXNoUGFnZSA9IGZ1bmN0aW9uKHN1Y2Nlc3MpIHsKKyAgICB2
YXIgc2hvdWxkUnVuID0gdGhpcy5jaGVjay5jaGVja2VkICYmIHRoaXMuZm9sZGVyLmNoZWNrZWQo
KTsKKyAgICBpZiAoc2hvdWxkUnVuKSB7CisgICAgICB0aGlzLnRvdGFsVGltZSA9IERhdGUubm93
KCkgLSB0aGlzLnN0YXJ0VGltZTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy50b3RhbFRpbWUg
PSAwOworICAgIH0KKworICAgIHZhciBwYXNzZWRNc2cgPSAnIChQYXNzZWQ6ICcgKyB0aGlzLnRv
dGFsU3VjY2Vzc2Z1bCArICcvJyArIHRoaXMudG90YWxUZXN0czsKKyAgICB2YXIgc2tpcHBlZE1z
ZyA9ICcnOworICAgIGlmICh0aGlzLnRvdGFsU2tpcHBlZCA+IDApIHsKKyAgICAgIHNraXBwZWRN
c2cgPSAnIFNraXBwZWQ6ICcgKyB0aGlzLnRvdGFsU2tpcHBlZCArICcvJyArIHRoaXMudG90YWxU
ZXN0czsKKyAgICB9CisgICAgdmFyIGZhaWxlZE1zZyA9ICcnOworICAgIGlmICh0aGlzLnRvdGFs
RmFpbGVkID4gMCkgeworICAgICAgZmFpbGVkTXNnID0gJyBGYWlsZWQ6ICcgKyB0aGlzLnRvdGFs
RmFpbGVkICsgJy8nICsgdGhpcy50b3RhbFRlc3RzOworICAgIH0KKyAgICB2YXIgdGltZW91dE1z
ZyA9ICcnOworICAgIGlmICh0aGlzLnRvdGFsVGltZW91dHMgPiAwKSB7CisgICAgICB0aW1lb3V0
TXNnID0gJyBUaW1lb3V0OiAnICsgdGhpcy50b3RhbFRpbWVvdXRzICsgJy8nICsgdGhpcy50b3Rh
bFRlc3RzOworICAgIH0KKyAgICB2YXIgbXNnID0gcGFzc2VkTXNnICsgc2tpcHBlZE1zZyArIGZh
aWxlZE1zZyArIHRpbWVvdXRNc2cgKyAnIGluICcgKyB0aGlzLnRvdGFsVGltZS50b0ZpeGVkKDEp
ICsgJyBtcyknOworCisgICAgaWYgKHN1Y2Nlc3MgPT09IHVuZGVmaW5lZCkgeworICAgICAgdmFy
IGNzcyA9ICd0ZXN0cGFnZXRpbWVvdXQnOworICAgICAgbXNnID0gJygqdGltZW91dCopJzsKKyAg
ICAgICsrdGhpcy50b3RhbFRlc3RzOworICAgICAgKyt0aGlzLnRvdGFsVGltZW91dHM7CisgICAg
fSBlbHNlIGlmICh0aGlzLnRvdGFsU2tpcHBlZCkgeworICAgICAgdmFyIGNzcyA9ICd0ZXN0cGFn
ZXNraXBwZWQnOworICAgIH0gZWxzZSBpZiAodGhpcy50b3RhbFN1Y2Nlc3NmdWwgIT0gdGhpcy50
b3RhbFRlc3RzKSB7CisgICAgICB2YXIgY3NzID0gJ3Rlc3RwYWdlZmFpbCc7CisgICAgfSBlbHNl
IHsKKyAgICAgIHZhciBjc3MgPSAndGVzdHBhZ2VzdWNjZXNzJzsKKyAgICB9CisgICAgdGhpcy5l
bGVtLmNsYXNzTGlzdC5hZGQoY3NzKTsKKyAgICB0aGlzLnRvdGFsc0VsZW0udGV4dENvbnRlbnQg
PSBtc2c7CisgICAgdGhpcy5mb2xkZXIucGFnZUZpbmlzaGVkKHRoaXMsIHN1Y2Nlc3MpOworICB9
OworCisgIFBhZ2UucHJvdG90eXBlLmVuYWJsZVRlc3QgPSBmdW5jdGlvbihyZSkgeworICAgIGlm
ICh0aGlzLnVybC5tYXRjaChyZSkpIHsKKyAgICAgIHRoaXMuY2hlY2suY2hlY2tlZCA9IHRydWU7
CisgICAgICB0aGlzLmZvbGRlci5lbmFibGVVcF8oKTsKKyAgICB9CisgIH07CisKKyAgUGFnZS5w
cm90b3R5cGUuZGlzYWJsZVRlc3QgPSBmdW5jdGlvbihyZSkgeworICAgIGlmICh0aGlzLnVybC5t
YXRjaChyZSkpIHsKKyAgICAgIHRoaXMuY2hlY2suY2hlY2tlZCA9IGZhbHNlOworICAgIH0KKyAg
fTsKKworICBQYWdlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
eworICAgICAgJ3N1YnRlc3RzJzogdGhpcy50b3RhbFRlc3RzLAorICAgICAgJ3N1Y2Nlc3NmdWwn
OiB0aGlzLnRvdGFsU3VjY2Vzc2Z1bCwKKyAgICAgICdza2lwcGVkJzogdGhpcy50b3RhbFNraXBw
ZWQsCisgICAgICAnZmFpbGVkJzogdGhpcy50b3RhbEZhaWxlZCwKKyAgICAgICd0aW1lZE91dCc6
IHRoaXMudG90YWxUaW1lb3V0cywKKyAgICAgICd0b3RhbFRpbWUnOiB0aGlzLnRvdGFsVGltZSwK
KyAgICB9OworICB9OworCisKKyAgdmFyIEZvbGRlciA9IGZ1bmN0aW9uKHJlcG9ydGVyLCBmb2xk
ZXIsIGRlcHRoLCBvcHRfbmFtZSkgeworICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjsKKyAg
ICB0aGlzLmRlcHRoID0gZGVwdGg7CisgICAgdGhpcy5uYW1lID0gb3B0X25hbWUgfHwgIiI7Cisg
ICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMubmFtZTsKKyAgICBpZiAoZm9sZGVyICYmIGZvbGRl
ci5kaXNwbGF5TmFtZSkgeworICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGZvbGRlci5kaXNwbGF5
TmFtZSArICcvJyArIHRoaXMuZGlzcGxheU5hbWU7CisgICAgfQorICAgIHRoaXMuc3ViRm9sZGVy
cyA9IHt9OworICAgIHRoaXMucGFnZXMgPSBbXTsKKyAgICB0aGlzLml0ZW1zID0gW107CisgICAg
dGhpcy5mb2xkZXIgPSBmb2xkZXI7CisgICAgdGhpcy5jYWNoZWRUb3RhbFRpbWUgPSAwOworICAg
IHRoaXMuY2FjaGVkVG90YWxTdWNjZXNzZnVsID0gMDsKKyAgICB0aGlzLmNhY2hlZFRvdGFsU2tp
cHBlZCA9IDA7CisgICAgdGhpcy5jYWNoZWRUb3RhbFRpbWVvdXRzID0gMDsKKyAgICB0aGlzLmNh
Y2hlZFRvdGFsVGVzdHMgPSAwOworICAgIHZhciB0aGF0ID0gdGhpczsKKworICAgIHZhciBkb2Mg
PSByZXBvcnRlci5sb2NhbERvYzsKKyAgICB0aGlzLmVsZW1lbnRJZCA9ICJmb2xkZXIiICsgZm9s
ZGVyQ291bnQrKzsKKyAgICB2YXIgbGkgPSBkb2MuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgICBs
aS5pZCA9IHRoaXMuZWxlbWVudElkOworICAgIGxpLmNsYXNzTGlzdC5hZGQoImZvbGRlciIpOwor
ICAgIHZhciBmb2xkZXJIZWFkZXIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZm9s
ZGVySGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2ZvbGRlckhlYWRlcicpOworICAgIHZhciBmb2xkZXJI
ZWFkZXJJbm5lciA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBmb2xkZXJIZWFkZXJJ
bm5lci5jbGFzc0xpc3QuYWRkKCdmb2xkZXJIZWFkZXJJbm5lcicpOworICAgIGZvbGRlckhlYWRl
ci5hcHBlbmRDaGlsZChmb2xkZXJIZWFkZXJJbm5lcik7CisgICAgdmFyIGNoZWNrID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgY2hlY2sudHlwZSA9ICdjaGVja2JveCc7CisgICAg
Y2hlY2suY2hlY2tlZCA9IHRydWU7CisgICAgY2hlY2sub25jbGljayA9IGZ1bmN0aW9uKCkgewor
ICAgICAgaWYgKHRoaXMuY2hlY2tlZCkgeworICAgICAgICB0aGF0LmVuYWJsZVRlc3QoIi4qIik7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhhdC5kaXNhYmxlVGVzdCgiLioiLCB0
cnVlKTsKKyAgICAgIH0KKyAgICB9OworICAgIGZvbGRlckhlYWRlcklubmVyLmFwcGVuZENoaWxk
KGNoZWNrKTsKKyAgICB2YXIgYnV0dG9uID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7Cisg
ICAgYnV0dG9uLnR5cGUgPSAnYnV0dG9uJzsKKyAgICBidXR0b24udmFsdWUgPSAncnVuJzsKKyAg
ICBidXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkgeworICAgICAgYXV0b1Njcm9sbCA9IGF1dG9T
Y3JvbGxFbmFibGVkOworICAgICAgdGhhdC5ydW4oKTsKKyAgICB9OworICAgIGlmIChyZXBvcnRl
ci5ub1NlbGVjdGVkV2ViR0xWZXJzaW9uKSB7CisgICAgICBidXR0b24uZGlzYWJsZWQgPSB0cnVl
OworICAgIH0KKyAgICBmb2xkZXJIZWFkZXJJbm5lci5hcHBlbmRDaGlsZChidXR0b24pOworICAg
IHZhciBoID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBoLmNsYXNzTGlzdC5hZGQo
J2ZvbGRlck5hbWUnKTsKKyAgICBoLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSh0aGlz
LmRpc3BsYXlOYW1lKSk7CisgICAgZm9sZGVySGVhZGVySW5uZXIuYXBwZW5kQ2hpbGQoaCk7Cisg
ICAgdmFyIG0gPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIG0uY2xhc3NMaXN0LmFk
ZCgnZm9sZGVyTWVzc2FnZScpOworICAgIHRoaXMubXNnTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9k
ZSgnJyk7CisgICAgbS5hcHBlbmRDaGlsZCh0aGlzLm1zZ05vZGUpOworICAgIGZvbGRlckhlYWRl
cklubmVyLmFwcGVuZENoaWxkKG0pOworICAgIHZhciB1bCA9IGRvYy5jcmVhdGVFbGVtZW50KCd1
bCcpOworICAgIGxpLmFwcGVuZENoaWxkKGZvbGRlckhlYWRlcik7CisgICAgbGkuYXBwZW5kQ2hp
bGQodWwpOworICAgIHRoaXMuY2hpbGRVTCA9IHVsOworICAgIHRoaXMuZWxlbSA9IGxpOworICAg
IHRoaXMuY2hlY2sgPSBjaGVjazsKKyAgICB0aGlzLmZvbGRlckhlYWRlciA9IGZvbGRlckhlYWRl
cjsKKyAgfTsKKworICBGb2xkZXIucHJvdG90eXBlLmNoZWNrZWQgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4gdGhpcy5jaGVjay5jaGVja2VkICYmCisgICAgICAgICh0aGlzLmZvbGRlciA/IHRo
aXMuZm9sZGVyLmNoZWNrZWQoKSA6IHRydWUpOworICB9OworCisgIEZvbGRlci5wcm90b3R5cGUu
Zmlyc3RUZXN0SW5kZXggPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5pdGVtc1swXS5m
aXJzdFRlc3RJbmRleCgpOworICB9OworCisgIEZvbGRlci5wcm90b3R5cGUubnVtQ2hpbGRyZW4g
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbnVtQ2hpbGRyZW4gPSAwOworICAgIGZvciAodmFyIG5h
bWUgaW4gdGhpcy5zdWJGb2xkZXJzKSB7CisgICAgICBudW1DaGlsZHJlbiArPSB0aGlzLnN1YkZv
bGRlcnNbbmFtZV0ubnVtQ2hpbGRyZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIG51bUNoaWxkcmVu
ICsgdGhpcy5wYWdlcy5sZW5ndGg7CisgIH07CisKKyAgRm9sZGVyLnByb3RvdHlwZS50b3RhbFRp
bWUgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNhY2hlZCB0b3Rh
bCB0aW1lIG5lZWRzIHRvIGJlIHJlY29tcHV0ZWQKKyAgICBpZiAodGhpcy5jYWNoZWRUb3RhbFRp
bWUgPT0gLTEpIHsKKyAgICAgIHRoaXMuY2FjaGVkVG90YWxUaW1lID0gMDsKKyAgICAgIGZvciAo
dmFyIG5hbWUgaW4gdGhpcy5zdWJGb2xkZXJzKSB7CisgICAgICAgIHRoaXMuY2FjaGVkVG90YWxU
aW1lICs9IHRoaXMuc3ViRm9sZGVyc1tuYW1lXS50b3RhbFRpbWUoKTsKKyAgICAgIH0KKyAgICAg
IGZvciAodmFyIGlpID0gMDsgaWkgPCB0aGlzLnBhZ2VzLmxlbmd0aDsgKytpaSkgeworICAgICAg
ICB0aGlzLmNhY2hlZFRvdGFsVGltZSArPSB0aGlzLnBhZ2VzW2lpXS50b3RhbFRpbWU7CisgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB0aGlzLmNhY2hlZFRvdGFsVGltZTsKKyAgfTsKKworICBG
b2xkZXIucHJvdG90eXBlLnRvdGFsU3VjY2Vzc2Z1bCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0
aGlzLmNhY2hlZFRvdGFsU3VjY2Vzc2Z1bCA9PSAtMSkgeworICAgICAgdGhpcy5jYWNoZWRUb3Rh
bFN1Y2Nlc3NmdWwgPSAwOworICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLnN1YkZvbGRlcnMp
IHsKKyAgICAgICAgdGhpcy5jYWNoZWRUb3RhbFN1Y2Nlc3NmdWwgKz0gdGhpcy5zdWJGb2xkZXJz
W25hbWVdLnRvdGFsU3VjY2Vzc2Z1bCgpOworICAgICAgfQorICAgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IHRoaXMucGFnZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHRoaXMuY2FjaGVkVG90
YWxTdWNjZXNzZnVsICs9IHRoaXMucGFnZXNbaWldLnRvdGFsU3VjY2Vzc2Z1bDsKKyAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIHRoaXMuY2FjaGVkVG90YWxTdWNjZXNzZnVsOworICB9OworCisg
IEZvbGRlci5wcm90b3R5cGUudG90YWxTa2lwcGVkID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRo
aXMuY2FjaGVkVG90YWxTa2lwcGVkID09IC0xKSB7CisgICAgICB0aGlzLmNhY2hlZFRvdGFsU2tp
cHBlZCA9IDA7CisgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMuc3ViRm9sZGVycykgeworICAg
ICAgICB0aGlzLmNhY2hlZFRvdGFsU2tpcHBlZCArPSB0aGlzLnN1YkZvbGRlcnNbbmFtZV0udG90
YWxTa2lwcGVkKCk7CisgICAgICB9CisgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGhpcy5w
YWdlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdGhpcy5jYWNoZWRUb3RhbFNraXBwZWQgKz0g
dGhpcy5wYWdlc1tpaV0udG90YWxTa2lwcGVkOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dGhpcy5jYWNoZWRUb3RhbFNraXBwZWQ7CisgIH07CisKKyAgRm9sZGVyLnByb3RvdHlwZS50b3Rh
bEZhaWxlZCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNhY2hlZFRvdGFsRmFpbGVkID09
IC0xKSB7CisgICAgICB0aGlzLmNhY2hlZFRvdGFsRmFpbGVkID0gMDsKKyAgICAgIGZvciAodmFy
IG5hbWUgaW4gdGhpcy5zdWJGb2xkZXJzKSB7CisgICAgICAgIHRoaXMuY2FjaGVkVG90YWxGYWls
ZWQgKz0gdGhpcy5zdWJGb2xkZXJzW25hbWVdLnRvdGFsRmFpbGVkKCk7CisgICAgICB9CisgICAg
ICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGhpcy5wYWdlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAg
ICAgdGhpcy5jYWNoZWRUb3RhbEZhaWxlZCArPSB0aGlzLnBhZ2VzW2lpXS50b3RhbEZhaWxlZDsK
KyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRoaXMuY2FjaGVkVG90YWxGYWlsZWQ7CisgIH07
CisKKyAgRm9sZGVyLnByb3RvdHlwZS50b3RhbFRpbWVvdXRzID0gZnVuY3Rpb24oKSB7CisgICAg
aWYgKHRoaXMuY2FjaGVkVG90YWxUaW1lb3V0cyA9PSAtMSkgeworICAgICAgdGhpcy5jYWNoZWRU
b3RhbFRpbWVvdXRzID0gMDsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5zdWJGb2xkZXJz
KSB7CisgICAgICAgIHRoaXMuY2FjaGVkVG90YWxUaW1lb3V0cyArPSB0aGlzLnN1YkZvbGRlcnNb
bmFtZV0udG90YWxUaW1lb3V0cygpOworICAgICAgfQorICAgICAgZm9yICh2YXIgaWkgPSAwOyBp
aSA8IHRoaXMucGFnZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHRoaXMuY2FjaGVkVG90YWxU
aW1lb3V0cyArPSB0aGlzLnBhZ2VzW2lpXS50b3RhbFRpbWVvdXRzOworICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdGhpcy5jYWNoZWRUb3RhbFRpbWVvdXRzOworICB9OworCisgIEZvbGRlci5w
cm90b3R5cGUudG90YWxUZXN0cyA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNhY2hlZFRv
dGFsVGVzdHMgPT0gLTEpIHsKKyAgICAgIHRoaXMuY2FjaGVkVG90YWxUZXN0cyA9IDA7CisgICAg
ICBmb3IgKHZhciBuYW1lIGluIHRoaXMuc3ViRm9sZGVycykgeworICAgICAgICB0aGlzLmNhY2hl
ZFRvdGFsVGVzdHMgKz0gdGhpcy5zdWJGb2xkZXJzW25hbWVdLnRvdGFsVGVzdHMoKTsKKyAgICAg
IH0KKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0aGlzLnBhZ2VzLmxlbmd0aDsgKytpaSkg
eworICAgICAgICB0aGlzLmNhY2hlZFRvdGFsVGVzdHMgKz0gdGhpcy5wYWdlc1tpaV0udG90YWxU
ZXN0czsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRoaXMuY2FjaGVkVG90YWxUZXN0czsK
KyAgfTsKKworICBGb2xkZXIucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMu
bXNnTm9kZS50ZXh0Q29udGVudCA9ICcnOworICAgIHZhciBmaXJzdFRlc3RJbmRleCA9IHRoaXMu
Zmlyc3RUZXN0SW5kZXgoKTsKKyAgICB2YXIgY291bnQgPSB0aGlzLm51bUNoaWxkcmVuKCk7Cisg
ICAgbG9nKCJydW4gdGVzdHM6ICIgKyBmaXJzdFRlc3RJbmRleCArICIgdG8gIiArIChmaXJzdFRl
c3RJbmRleCArIGNvdW50IC0gMSkpCisgICAgdGVzdEhhcm5lc3MucnVuVGVzdHMoe3N0YXJ0OiBm
aXJzdFRlc3RJbmRleCwgY291bnQ6IGNvdW50fSk7CisgIH07CisKKyAgRm9sZGVyLnByb3RvdHlw
ZS5wYWdlRmluaXNoZWQgPSBmdW5jdGlvbihwYWdlLCBzdWNjZXNzKSB7CisgICAgdGhpcy5jYWNo
ZWRUb3RhbFRpbWUgPSAtMTsKKyAgICB0aGlzLmNhY2hlZFRvdGFsU3VjY2Vzc2Z1bCA9IC0xOwor
ICAgIHRoaXMuY2FjaGVkVG90YWxTa2lwcGVkID0gLTE7CisgICAgdGhpcy5jYWNoZWRUb3RhbEZh
aWxlZCA9IC0xOworICAgIHRoaXMuY2FjaGVkVG90YWxUaW1lb3V0cyA9IC0xOworICAgIHRoaXMu
Y2FjaGVkVG90YWxUZXN0cyA9IC0xOworICAgIHZhciBwYXNzZWRNc2cgPSAnIChQYXNzZWQ6ICcg
KyB0aGlzLnRvdGFsU3VjY2Vzc2Z1bCgpICsgJy8nICsgdGhpcy50b3RhbFRlc3RzKCk7CisgICAg
dmFyIHNraXBwZWRNc2cgPSAnJzsKKyAgICBpZiAodGhpcy50b3RhbFNraXBwZWQoKSA+IDApIHsK
KyAgICAgIHNraXBwZWRNc2cgPSAnIFNraXBwZWQ6ICcgKyB0aGlzLnRvdGFsU2tpcHBlZCgpICsg
Jy8nICsgdGhpcy50b3RhbFRlc3RzKCk7CisgICAgfQorICAgIHZhciBmYWlsZWRNc2cgPSAnJzsK
KyAgICBpZiAodGhpcy50b3RhbEZhaWxlZCgpID4gMCkgeworICAgICAgZmFpbGVkTXNnID0gJyBG
YWlsZWQ6ICcgKyB0aGlzLnRvdGFsRmFpbGVkKCkgKyAnLycgKyB0aGlzLnRvdGFsVGVzdHMoKTsK
KyAgICB9CisgICAgdmFyIHRpbWVvdXRNc2cgPSAnJzsKKyAgICBpZiAodGhpcy50b3RhbFRpbWVv
dXRzKCkgPiAwKSB7CisgICAgICB0aW1lb3V0TXNnID0gJyBUaW1lb3V0OiAnICsgdGhpcy50b3Rh
bFRpbWVvdXRzKCkgKyAnLycgKyB0aGlzLnRvdGFsVGVzdHMoKTsKKyAgICB9CisgICAgdGhpcy5t
c2dOb2RlLnRleHRDb250ZW50ID0gcGFzc2VkTXNnICsgc2tpcHBlZE1zZyArIGZhaWxlZE1zZyAr
IHRpbWVvdXRNc2cgKyAnIGluICcgKyAodGhpcy50b3RhbFRpbWUoKSAvIDEwMDApLnRvRml4ZWQo
MikgKyAnIHNlY29uZHMpJzsKKyAgICBpZiAodGhpcy5mb2xkZXIpIHsKKyAgICAgIHRoaXMuZm9s
ZGVyLnBhZ2VGaW5pc2hlZChwYWdlLCBzdWNjZXNzKTsKKyAgICB9CisgIH07CisKKyAgRm9sZGVy
LnByb3RvdHlwZS5nZXRTdWJGb2xkZXIgPSBmdW5jdGlvbihuYW1lKSB7CisgICAgdmFyIHN1YkZv
bGRlciA9IHRoaXMuc3ViRm9sZGVyc1tuYW1lXTsKKyAgICBpZiAoc3ViRm9sZGVyID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHN1YkZvbGRlciA9IG5ldyBGb2xkZXIodGhpcy5yZXBvcnRlciwgdGhp
cywgdGhpcy5kZXB0aCArIDEsIG5hbWUpOworICAgICAgdGhpcy5zdWJGb2xkZXJzW25hbWVdID0g
c3ViRm9sZGVyOworICAgICAgdGhpcy5pdGVtcy5wdXNoKHN1YkZvbGRlcik7CisgICAgICB0aGlz
LmNoaWxkVUwuYXBwZW5kQ2hpbGQoc3ViRm9sZGVyLmVsZW0pOworICAgIH0KKyAgICByZXR1cm4g
c3ViRm9sZGVyOworICB9OworCisgIEZvbGRlci5wcm90b3R5cGUuZ2V0T3JDcmVhdGVGb2xkZXIg
PSBmdW5jdGlvbih1cmwpIHsKKyAgICB2YXIgcGFydHMgPSB1cmwuc3BsaXQoJy8nKTsKKyAgICB2
YXIgZm9sZGVyID0gdGhpczsKKyAgICBmb3IgKHZhciBwcCA9IDA7IHBwIDwgcGFydHMubGVuZ3Ro
IC0gMTsgKytwcCkgeworICAgICAgZm9sZGVyID0gZm9sZGVyLmdldFN1YkZvbGRlcihwYXJ0c1tw
cF0pOworICAgIH0KKyAgICByZXR1cm4gZm9sZGVyOworICB9OworCisgIEZvbGRlci5wcm90b3R5
cGUuYWRkUGFnZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKKyAgICB0aGlzLnBhZ2VzLnB1c2gocGFnZSk7
CisgICAgdGhpcy5pdGVtcy5wdXNoKHBhZ2UpOworICAgIHRoaXMuY2hpbGRVTC5hcHBlbmRDaGls
ZChwYWdlLmVsZW0pOworICAgIHRoaXMuZm9sZGVySGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2hhc1Bh
Z2VzJyk7CisgIH07CisKKyAgRm9sZGVyLnByb3RvdHlwZS5kaXNhYmxlVGVzdCA9IGZ1bmN0aW9u
KHJlLCBvcHRfZm9yY2VSZWN1cnNlKSB7CisgICAgdmFyIHJlY3Vyc2UgPSB0cnVlOworICAgIGlm
ICh0aGlzLm5hbWUubWF0Y2gocmUpKSB7CisgICAgICB0aGlzLmNoZWNrLmNoZWNrZWQgPSBmYWxz
ZTsKKyAgICAgIHJlY3Vyc2UgPSBvcHRfZm9yY2VSZWN1cnNlOworICAgIH0KKyAgICBpZiAocmVj
dXJzZSkgeworICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLnN1YkZvbGRlcnMpIHsKKyAgICAg
ICAgdGhpcy5zdWJGb2xkZXJzW25hbWVdLmRpc2FibGVUZXN0KHJlLCBvcHRfZm9yY2VSZWN1cnNl
KTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0aGlzLnBhZ2VzLmxlbmd0
aDsgKytpaSkgeworICAgICAgICB0aGlzLnBhZ2VzW2lpXS5kaXNhYmxlVGVzdChyZSk7CisgICAg
ICB9CisgICAgfQorICB9OworCisgIEZvbGRlci5wcm90b3R5cGUuZW5hYmxlVXBfID0gZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5jaGVjay5jaGVja2VkID0gdHJ1ZTsKKyAgICB2YXIgcGFyZW50ID0g
dGhpcy5mb2xkZXI7CisgICAgaWYgKHBhcmVudCkgeworICAgICAgcGFyZW50LmVuYWJsZVVwXygp
OworICAgIH0KKyAgfQorCisgIEZvbGRlci5wcm90b3R5cGUuZGlzYWJsZVVwXyA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBjaGVja2VkID0gZmFsc2U7CisgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlz
LnN1YkZvbGRlcnMpIHsKKyAgICAgIGNoZWNrZWQgPSB0aGlzLnN1YkZvbGRlcnNbbmFtZV0uY2hl
Y2tlZCgpOworICAgICAgaWYgKGNoZWNrZWQpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgfQorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0aGlzLnBhZ2VzLmxlbmd0aCAmJiBjaGVj
a2VkID09IGZhbHNlOyArK2lpKSB7CisgICAgICBjaGVja2VkID0gdGhpcy5wYWdlc1tpaV0uY2hl
Y2tlZCgpOworICAgIH0KKyAgICB0aGlzLmNoZWNrLmNoZWNrZWQgPSBjaGVja2VkOworICAgIHZh
ciBwYXJlbnQgPSB0aGlzLmZvbGRlcjsKKyAgICBpZiAocGFyZW50KSB7CisgICAgICBwYXJlbnQu
ZGlzYWJsZVVwXygpOworICAgIH0KKyAgfQorCisgIEZvbGRlci5wcm90b3R5cGUuZW5hYmxlVGVz
dCA9IGZ1bmN0aW9uKHJlKSB7CisgICAgaWYgKHRoaXMubmFtZS5tYXRjaChyZSkpIHsKKyAgICAg
IHRoaXMuZW5hYmxlVXBfKCk7CisgICAgfQorICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5zdWJG
b2xkZXJzKSB7CisgICAgICB0aGlzLnN1YkZvbGRlcnNbbmFtZV0uZW5hYmxlVGVzdChyZSk7Cisg
ICAgfQorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0aGlzLnBhZ2VzLmxlbmd0aDsgKytpaSkg
eworICAgICAgdGhpcy5wYWdlc1tpaV0uZW5hYmxlVGVzdChyZSk7CisgICAgfQorICB9OworCisg
IHZhciBSZXBvcnRlciA9IGZ1bmN0aW9uKGlmcmFtZXMpIHsKKyAgICB0aGlzLmxvY2FsRG9jID0g
ZG9jdW1lbnQ7CisgICAgdGhpcy5yZXN1bHRFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdHMiKTsKKyAgICB0aGlzLmZ1bGxSZXN1bHRzRWxlbSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmdWxscmVzdWx0cyIpOworICAgIHZhciBub2RlID0gdGhpcy5sb2NhbERvYy5jcmVh
dGVUZXh0Tm9kZSgnJyk7CisgICAgdGhpcy5mdWxsUmVzdWx0c0VsZW0uYXBwZW5kQ2hpbGQobm9k
ZSk7CisgICAgdGhpcy5mdWxsUmVzdWx0c05vZGUgPSBub2RlOworICAgIHRoaXMuaWZyYW1lcyA9
IGlmcmFtZXM7CisgICAgdGhpcy5jdXJyZW50UGFnZUVsZW0gPSBudWxsOworICAgIHRoaXMudG90
YWxQYWdlcyA9IDA7CisgICAgdGhpcy5wYWdlc0J5VVJMID0ge307CisKKyAgICAvLyBDaGVjayB0
byBzZWUgaWYgV2ViR0wgaXMgc3VwcG9ydGVkCisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHZhciBjdHggPSBjcmVhdGUzRENvbnRleHQoY2Fu
dmFzLCBudWxsLCAxKTsKKworICAgIC8vIENoZWNrIHRvIHNlZSBpZiBXZWJHTDIgaXMgc3VwcG9y
dGVkCisgICAgdmFyIGNhbnZhczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
KyAgICB2YXIgY3R4MiA9IGNyZWF0ZTNEQ29udGV4dChjYW52YXMyLCBudWxsLCAyKTsKKworICAg
IHRoaXMubm9TZWxlY3RlZFdlYkdMVmVyc2lvbiA9IGZhbHNlOworICAgIHRoaXMuc2VsZWN0ZWRX
ZWJHTFZlcnNpb24gPSBXZWJHTFRlc3RIYXJuZXNzTW9kdWxlLmdldE1ham9yVmVyc2lvbihPUFRJ
T05TLnZlcnNpb24pOworICAgIGlmICh0aGlzLnNlbGVjdGVkV2ViR0xWZXJzaW9uID09IDIgJiYg
IWN0eDIpIHsKKyAgICAgICAgdGhpcy5ub1NlbGVjdGVkV2ViR0xWZXJzaW9uID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRXZWJHTFZlcnNpb24gPT0gMSAmJiAhY3R4KSB7Cisg
ICAgICAgIHRoaXMubm9TZWxlY3RlZFdlYkdMVmVyc2lvbiA9IHRydWU7CisgICAgfQorCisgICAg
Ly8gSWYgdGhlIFdlYkdMMiBjb250ZXh0IGNvdWxkIGJlIGNyZWF0ZWQgdXNlIGl0IHRvIGdldCBj
b250ZXh0IGluZm8KKyAgICBpZiAoY3R4MikgeworICAgICAgY3R4ID0gY3R4MjsKKyAgICB9CisK
KyAgICB0aGlzLm5vV2ViR0wgPSAhY3R4OworCisgICAgdGhpcy5jb250ZXh0SW5mbyA9IHt9Owor
ICAgIHRoaXMucm9vdCA9IG5ldyBGb2xkZXIodGhpcywgbnVsbCwgMCwgImFsbCIpOworICAgIHRo
aXMucmVzdWx0RWxlbS5hcHBlbmRDaGlsZCh0aGlzLnJvb3QuZWxlbSk7CisgICAgdGhpcy5jYWxs
YmFja3MgPSB7IH07CisgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpOworCisgICAgaWYg
KGN0eCkgeworICAgICAgdGhpcy5jb250ZXh0SW5mb1siVkVORE9SIl0gPSBjdHguZ2V0UGFyYW1l
dGVyKGN0eC5WRU5ET1IpOworICAgICAgdGhpcy5jb250ZXh0SW5mb1siVkVSU0lPTiJdID0gY3R4
LmdldFBhcmFtZXRlcihjdHguVkVSU0lPTik7CisgICAgICB0aGlzLmNvbnRleHRJbmZvWyJSRU5E
RVJFUiJdID0gY3R4LmdldFBhcmFtZXRlcihjdHguUkVOREVSRVIpOworICAgICAgdGhpcy5jb250
ZXh0SW5mb1siUkVEX0JJVFMiXSA9IGN0eC5nZXRQYXJhbWV0ZXIoY3R4LlJFRF9CSVRTKTsKKyAg
ICAgIHRoaXMuY29udGV4dEluZm9bIkdSRUVOX0JJVFMiXSA9IGN0eC5nZXRQYXJhbWV0ZXIoY3R4
LkdSRUVOX0JJVFMpOworICAgICAgdGhpcy5jb250ZXh0SW5mb1siQkxVRV9CSVRTIl0gPSBjdHgu
Z2V0UGFyYW1ldGVyKGN0eC5CTFVFX0JJVFMpOworICAgICAgdGhpcy5jb250ZXh0SW5mb1siQUxQ
SEFfQklUUyJdID0gY3R4LmdldFBhcmFtZXRlcihjdHguQUxQSEFfQklUUyk7CisgICAgICB0aGlz
LmNvbnRleHRJbmZvWyJERVBUSF9CSVRTIl0gPSBjdHguZ2V0UGFyYW1ldGVyKGN0eC5ERVBUSF9C
SVRTKTsKKyAgICAgIHRoaXMuY29udGV4dEluZm9bIlNURU5DSUxfQklUUyJdID0gY3R4LmdldFBh
cmFtZXRlcihjdHguU1RFTkNJTF9CSVRTKTsKKworICAgICAgdmFyIGV4dCA9IGN0eC5nZXRFeHRl
bnNpb24oIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKKyAgICAgIGlmIChleHQpIHsKKyAg
ICAgICAgdGhpcy5jb250ZXh0SW5mb1siVU5NQVNLRURfVkVORE9SIl0gPSBjdHguZ2V0UGFyYW1l
dGVyKGV4dC5VTk1BU0tFRF9WRU5ET1JfV0VCR0wpOworICAgICAgICB0aGlzLmNvbnRleHRJbmZv
WyJVTk1BU0tFRF9SRU5ERVJFUiJdID0gY3R4LmdldFBhcmFtZXRlcihleHQuVU5NQVNLRURfUkVO
REVSRVJfV0VCR0wpOworICAgICAgfQorICAgIH0KKyAgfTsKKworICBSZXBvcnRlci5wcm90b3R5
cGUuZW5hYmxlVGVzdCA9IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICB0aGlzLnJvb3QuZW5hYmxlVGVz
dChuYW1lKTsKKyAgfTsKKworICBSZXBvcnRlci5wcm90b3R5cGUuZGlzYWJsZVRlc3QgPSBmdW5j
dGlvbihuYW1lKSB7CisgICAgdGhpcy5yb290LmRpc2FibGVUZXN0KG5hbWUpOworICB9OworCisg
IFJlcG9ydGVyLnByb3RvdHlwZS5kaXNhYmxlQWxsVGVzdHMgPSBmdW5jdGlvbigpIHsKKyAgICB0
aGlzLnJvb3QuZGlzYWJsZVRlc3QoIi4qIiwgdHJ1ZSk7CisgIH07CisKKyAgUmVwb3J0ZXIucHJv
dG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBmdW5jKSB7CisgICAgaWYg
KCF0aGlzLmNhbGxiYWNrc1t0eXBlXSkgeworICAgICAgdGhpcy5jYWxsYmFja3NbdHlwZV0gPSBb
XTsKKyAgICB9CisgICAgdGhpcy5jYWxsYmFja3NbdHlwZV0ucHVzaChmdW5jKTsKKyAgfTsKKwor
ICBSZXBvcnRlci5wcm90b3R5cGUuZXhlY3V0ZUxpc3RlbmVyRXZlbnRzXyA9IGZ1bmN0aW9uKHR5
cGUpIHsKKyAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5jYWxsYmFja3NbdHlwZV0uc2xpY2UoMCk7
CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNhbGxiYWNrcy5sZW5ndGg7ICsraWkpIHsKKyAg
ICAgIHNldFRpbWVvdXQoY2FsbGJhY2tzW2lpXSwgMCk7CisgICAgfQorICB9OworCisgIFJlcG9y
dGVyLnByb3RvdHlwZS5ydW5UZXN0ID0gZnVuY3Rpb24odXJsKSB7CisgICAgdmFyIHBhZ2UgPSB0
aGlzLnBhZ2VzQnlVUkxbdXJsXTsKKyAgICB0ZXN0SGFybmVzcy5ydW5UZXN0cyh7c3RhcnQ6IHBh
Z2UuZmlyc3RUZXN0SW5kZXgoKSwgY291bnQ6IDF9KTsKKyAgfTsKKworICBSZXBvcnRlci5wcm90
b3R5cGUuZ2V0Rm9sZGVyID0gZnVuY3Rpb24odXJsKSB7CisgICAgcmV0dXJuIHRoaXMucm9vdC5n
ZXRPckNyZWF0ZUZvbGRlcih1cmwpOworICB9OworCisgIFJlcG9ydGVyLnByb3RvdHlwZS5hZGRQ
YWdlID0gZnVuY3Rpb24odXJsKSB7CisgICAgdmFyIGZvbGRlciA9IHRoaXMuZ2V0Rm9sZGVyKHVy
bCk7CisgICAgdmFyIHBhZ2UgPSBuZXcgUGFnZSh0aGlzLCBmb2xkZXIsIHRoaXMudG90YWxQYWdl
cywgdXJsKTsKKyAgICBmb2xkZXIuYWRkUGFnZShwYWdlKTsKKyAgICArK3RoaXMudG90YWxQYWdl
czsKKyAgICB0aGlzLnBhZ2VzQnlVUkxbdXJsXSA9IHBhZ2U7CisgIH07CisKKyAgUmVwb3J0ZXIu
cHJvdG90eXBlLnN0YXJ0UGFnZSA9IGZ1bmN0aW9uKHVybCkgeworICAgIHZhciBwYWdlID0gdGhp
cy5wYWdlc0J5VVJMW3VybF07CisgICAgcmV0dXJuIHBhZ2Uuc3RhcnRQYWdlKCk7CisgIH07CisK
KyAgUmVwb3J0ZXIucHJvdG90eXBlLmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHVybCwgbXNnLCBzdWNj
ZXNzLCBza2lwcGVkKSB7CisgICAgdmFyIHBhZ2UgPSB0aGlzLnBhZ2VzQnlVUkxbdXJsXTsKKyAg
ICBwYWdlLmFkZFJlc3VsdChtc2csIHN1Y2Nlc3MsIHNraXBwZWQpOworICB9OworCisgIFJlcG9y
dGVyLnByb3RvdHlwZS5maW5pc2hQYWdlID0gZnVuY3Rpb24odXJsLCBzdWNjZXNzKSB7CisgICAg
dmFyIHBhZ2UgPSB0aGlzLnBhZ2VzQnlVUkxbdXJsXTsKKyAgICBwYWdlLmZpbmlzaFBhZ2Uoc3Vj
Y2Vzcyk7CisgICAgaWYgKE9QVElPTlMuZHVtcFNoYWRlcnMgPT0gMSkgeworICAgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAiL2Zpbmlz
aEluZGl2aWR1YWxUZXN0IiwgdHJ1ZSk7CisgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICB9Cisg
IH07CisKKyAgUmVwb3J0ZXIucHJvdG90eXBlLmRpc3BsYXlGaW5hbFJlc3VsdHMgPSBmdW5jdGlv
bihtc2csIHN1Y2Nlc3MpIHsKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgdmFyIHRvdGFsVGVz
dHMgPSAwOworICAgICAgdmFyIHRlc3RzU3VjY2VlZGVkID0gMDsKKyAgICAgIHZhciB0ZXN0c0Zh
aWxlZCA9IDA7CisgICAgICB2YXIgdGVzdHNTa2lwcGVkID0gMDsKKyAgICAgIHZhciB0ZXN0c1Rp
bWVkT3V0ID0gMDsKKworICAgICAgdmFyIHN1YnRlc3RzSGl0ID0gMDsKKyAgICAgIHZhciBzdWJ0
ZXN0c1N1Y2NlZWRlZCA9IDA7CisgICAgICB2YXIgc3VidGVzdHNUaW1lZE91dCA9IDA7CisgICAg
ICB2YXIgc3VidGVzdHNTa2lwcGVkID0gMDsKKyAgICAgIHZhciBzdWJ0ZXN0c0ZhaWxlZCA9IDA7
CisKKyAgICAgIHZhciB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWU7CisK
KyAgICAgIGZvciAodmFyIHVybCBpbiB0aGlzLnBhZ2VzQnlVUkwpIHsKKyAgICAgICAgdmFyIHBh
Z2UgPSB0aGlzLnBhZ2VzQnlVUkxbdXJsXTsKKyAgICAgICAgdG90YWxUZXN0cyArPSAxOworICAg
ICAgICBpZiAocGFnZS50b3RhbFNraXBwZWQpIHsKKyAgICAgICAgICB0ZXN0c1NraXBwZWQgKz0g
MTsKKyAgICAgICAgfQorICAgICAgICBpZiAocGFnZS50b3RhbEZhaWxlZCkgeworICAgICAgICAg
IHRlc3RzRmFpbGVkICs9IDE7CisgICAgICAgIH0gZWxzZSBpZiAocGFnZS50b3RhbFRpbWVvdXRz
KSB7CisgICAgICAgICAgdGVzdHNUaW1lZE91dCArPSAxOworICAgICAgICB9IGVsc2UgaWYgKHBh
Z2UudG90YWxTdWNjZXNzZnVsKSB7CisgICAgICAgICAgaWYgKHBhZ2UudG90YWxTdWNjZXNzZnVs
ICE9IHBhZ2UudG90YWxUZXN0cykKKyAgICAgICAgICAgIHRocm93IHN1Y2Nlc3Nlc19ub3RfZXF1
YWxfdG90YWw7CisgICAgICAgICAgdGVzdHNTdWNjZWVkZWQgKz0gMTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN1YnRlc3RzSGl0ICs9IHBhZ2UudG90YWxUZXN0czsKKyAgICAgICAgc3VidGVzdHNT
dWNjZWVkZWQgKz0gcGFnZS50b3RhbFN1Y2Nlc3NmdWw7CisgICAgICAgIHN1YnRlc3RzVGltZWRP
dXQgKz0gcGFnZS50b3RhbFRpbWVvdXRzOworICAgICAgICBzdWJ0ZXN0c1NraXBwZWQgKz0gcGFn
ZS50b3RhbFNraXBwZWQ7CisgICAgICAgIHN1YnRlc3RzRmFpbGVkICs9IHBhZ2UudG90YWxGYWls
ZWQ7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJhdGlvX3N0cih4LCB5LCBuYW1lKSB7Cisg
ICAgICAgIHJldHVybiB4ICsgJy8nICsgeSArICcgJyArIG5hbWUgKyAnICgnICsgKHggLyB5ICog
MTAwKS50b0ZpeGVkKDIpICsgJyUpJzsKKyAgICAgIH0KKyAgICAgIHZhciB0ZXN0c1N1Y2NlZWRl
ZFJhdGlvID0gcmF0aW9fc3RyKHRlc3RzU3VjY2VlZGVkLCB0b3RhbFRlc3RzLCAndGVzdHMnKTsK
KyAgICAgIHZhciBwYXNzZWRNc2cgPSAnUGFzc2VkICcgKyB0ZXN0c1N1Y2NlZWRlZFJhdGlvICsg
JywgJyArCisgICAgICAgICAgICAgICAgICAgICAgcmF0aW9fc3RyKHN1YnRlc3RzU3VjY2VlZGVk
LCBzdWJ0ZXN0c0hpdCwgJ3N1YnRlc3RzJyk7CisgICAgICB2YXIgc2tpcHBlZE1zZyA9ICcnOwor
ICAgICAgaWYgKHRlc3RzU2tpcHBlZCA+IDApIHsKKyAgICAgICAgc2tpcHBlZE1zZyA9ICcgU2tp
cHBlZCAnICsgcmF0aW9fc3RyKHRlc3RzU2tpcHBlZCwgdG90YWxUZXN0cywgJ3Rlc3RzJyk7Cisg
ICAgICB9CisgICAgICB2YXIgZmFpbGVkTXNnID0gJyc7CisgICAgICBpZiAodGVzdHNGYWlsZWQg
PiAwKSB7CisgICAgICAgIGZhaWxlZE1zZyA9ICcgRmFpbGVkICcgKyByYXRpb19zdHIodGVzdHNG
YWlsZWQsIHRvdGFsVGVzdHMsICd0ZXN0cycpICsgJywgJyArCisgICAgICAgICAgICAgICAgICAg
IHJhdGlvX3N0cihzdWJ0ZXN0c0ZhaWxlZCwgc3VidGVzdHNIaXQsICdzdWJ0ZXN0cycpOworICAg
ICAgfQorICAgICAgdmFyIHRpbWVvdXRNc2cgPSAnJzsKKyAgICAgIGlmICh0ZXN0c1RpbWVkT3V0
ID4gMCkgeworICAgICAgICB0aW1lb3V0TXNnID0gJyBUaW1lb3V0ICcgKyByYXRpb19zdHIodGVz
dHNUaW1lZE91dCwgdG90YWxUZXN0cywgJ3Rlc3RzJyk7CisgICAgICB9CisgICAgICB2YXIgbXNn
ID0gcGFzc2VkTXNnICsgc2tpcHBlZE1zZyArIGZhaWxlZE1zZyArIHRpbWVvdXRNc2c7CisgICAg
ICB0aGlzLmZ1bGxSZXN1bHRzTm9kZS50ZXh0Q29udGVudCA9IG1zZzsKKworICAgICAgLy8gZ2Vu
ZXJhdGUgYSB0ZXh0IHN1bW1hcnkKKyAgICAgIHZhciB0eCA9ICIiOworICAgICAgdHggKz0gIldl
YkdMIENvbmZvcm1hbmNlIFRlc3QgUmVzdWx0c1xuIjsKKyAgICAgIHR4ICs9ICJWZXJzaW9uICIg
KyBPUFRJT05TLnZlcnNpb24gKyAiXG4iOworICAgICAgdHggKz0gIkdlbmVyYXRlZCBvbjogIiAr
IChuZXcgRGF0ZSgpKS50b1N0cmluZygpICsgIlxuIjsKKyAgICAgIHR4ICs9ICJcbiI7CisgICAg
ICB0eCArPSAiLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOworICAgICAgdHggKz0gIlVzZXIgQWdl
bnQ6ICIgKyAobmF2aWdhdG9yLnVzZXJBZ2VudCA/IG5hdmlnYXRvci51c2VyQWdlbnQgOiAiKG5h
dmlnYXRvci51c2VyQWdlbnQgaXMgbnVsbCkiKSArICJcbiI7CisgICAgICB0eCArPSAiV2ViR0wg
VkVORE9SOiAiICsgdGhpcy5jb250ZXh0SW5mb1siVkVORE9SIl0gKyAiXG4iOworICAgICAgdHgg
Kz0gIldlYkdMIFZFUlNJT046ICIgKyB0aGlzLmNvbnRleHRJbmZvWyJWRVJTSU9OIl0gKyAiXG4i
OworICAgICAgdHggKz0gIldlYkdMIFJFTkRFUkVSOiAiICsgdGhpcy5jb250ZXh0SW5mb1siUkVO
REVSRVIiXSArICJcbiI7CisgICAgICB0eCArPSAiVW5tYXNrZWQgVkVORE9SOiAiICsgdGhpcy5j
b250ZXh0SW5mb1siVU5NQVNLRURfVkVORE9SIl0gKyAiXG4iOworICAgICAgdHggKz0gIlVubWFz
a2VkIFJFTkRFUkVSOiAiICsgdGhpcy5jb250ZXh0SW5mb1siVU5NQVNLRURfUkVOREVSRVIiXSAr
ICJcbiI7CisgICAgICB0eCArPSAiV2ViR0wgUi9HL0IvQS9EZXB0aC9TdGVuY2lsIGJpdHMgKGRl
ZmF1bHQgY29uZmlnKTogIiArIHRoaXMuY29udGV4dEluZm9bIlJFRF9CSVRTIl0gKyAiLyIgKyB0
aGlzLmNvbnRleHRJbmZvWyJHUkVFTl9CSVRTIl0gKyAiLyIgKyB0aGlzLmNvbnRleHRJbmZvWyJC
TFVFX0JJVFMiXSArICIvIiArIHRoaXMuY29udGV4dEluZm9bIkFMUEhBX0JJVFMiXSArICIvIiAr
IHRoaXMuY29udGV4dEluZm9bIkRFUFRIX0JJVFMiXSArICIvIiArIHRoaXMuY29udGV4dEluZm9b
IlNURU5DSUxfQklUUyJdICsgIlxuIjsKKyAgICAgIHR4ICs9ICJcbi0tLS0tLS0tLS0tLS0tLS0t
LS1cblxuIjsKKworICAgICAgdmFyIHJlc3VsdDsKKyAgICAgIGlmICh0b3RhbFRlc3RzICYmIHRl
c3RzU3VjY2VlZGVkID09IHRvdGFsVGVzdHMpIHsKKyAgICAgICAgcmVzdWx0ID0gJ1BBU1MnOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gJ0ZBSUwnOworICAgICAgfQorICAgICAg
dHggKz0gIlRlc3QgU3VtbWFyeTogIiArIHJlc3VsdCArICIgKCIgKyB0b3RhbFRlc3RzICsgIiB0
ZXN0cyk6XG4iOworICAgICAgdHggKz0gc3VidGVzdHNIaXQgKyAiIHN1YnRlc3RzIHJhbiBpbiAi
ICsgKHRvdGFsVGltZSAvIDEwMDAuMCkudG9GaXhlZCgyKSArICIgc2Vjb25kc1xuIjsKKyAgICAg
IGZ1bmN0aW9uIHJlY29yZCh3aGF0LCB0ZXN0cywgc3VidGVzdHMpIHsKKyAgICAgICAgdHggKz0g
d2hhdCArICI6ICIgKyB0ZXN0cyArICIgdGVzdHMsICIgKyBzdWJ0ZXN0cyArICIgc3VidGVzdHNc
biI7CisgICAgICB9CisgICAgICByZWNvcmQoJ1BBU1NFRCcsIHRlc3RzU3VjY2VlZGVkLCBzdWJ0
ZXN0c1N1Y2NlZWRlZCk7CisgICAgICByZWNvcmQoJ05PVCBQQVNTRUQnLCB0b3RhbFRlc3RzIC0g
dGVzdHNTdWNjZWVkZWQsIHN1YnRlc3RzSGl0IC0gc3VidGVzdHNTdWNjZWVkZWQpOworCisgICAg
ICByZWNvcmQoJ0ZBSUxFRCcsIHRlc3RzRmFpbGVkLCBzdWJ0ZXN0c0ZhaWxlZCk7CisgICAgICBy
ZWNvcmQoJ1RJTUVEIE9VVCcsIHRlc3RzVGltZWRPdXQsIHN1YnRlc3RzVGltZWRPdXQpOworICAg
ICAgcmVjb3JkKCdTS0lQUEVEJywgdGVzdHNTa2lwcGVkLCBzdWJ0ZXN0c1NraXBwZWQpOworCisg
ICAgICB0eCArPSAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiI7CisKKyAgICAgIGNvbnN0IGZh
aWx1cmVMaW5lcyA9IFtdOworICAgICAgY29uc3QgdGltZW91dExpbmVzID0gW107CisgICAgICBj
b25zdCByZXN1bHRMaW5lcyA9IFtdOworCisgICAgICBmb3IgKHZhciB1cmwgaW4gdGhpcy5wYWdl
c0J5VVJMKSB7CisgICAgICAgIHZhciBwYWdlID0gdGhpcy5wYWdlc0J5VVJMW3VybF07CisgICAg
ICAgIHJlc3VsdExpbmVzLnB1c2goJyAgICAiJyArIHVybCArICciOicgKyBKU09OLnN0cmluZ2lm
eShwYWdlLnRvSlNPTigpKSk7CisKKyAgICAgICAgaWYgKHBhZ2UudG90YWxGYWlsZWQpIHsKKyAg
ICAgICAgICBmYWlsdXJlTGluZXMucHVzaCgnICAgICInICsgdXJsICsgJyIsJyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHBhZ2UudG90YWxUaW1lb3V0cykgeworICAgICAgICAgIHRpbWVvdXRM
aW5lcy5wdXNoKCcgICAgIicgKyB1cmwgKyAnIiwnKTsKKyAgICAgICAgfQorICAgICAgfQorCisg
ICAgICBjb25zdCBsaW5lcyA9IFtdLmNvbmNhdCgKKyAgICAgICAgWworICAgICAgICAgICd7JywK
KyAgICAgICAgICAnICAiZmFpbHVyZXMiOiBbJywKKyAgICAgICAgXSwKKyAgICAgICAgZmFpbHVy
ZUxpbmVzLAorICAgICAgICBbCisgICAgICAgICAgJyAgXSwnLAorICAgICAgICAgICcgICJ0aW1l
b3V0cyI6IFsnLAorICAgICAgICBdLAorICAgICAgICB0aW1lb3V0TGluZXMsCisgICAgICAgIFsK
KyAgICAgICAgICAnICBdLCcsCisgICAgICAgICAgJyAgInJlc3VsdHMiOiB7JywKKyAgICAgICAg
XSwKKyAgICAgICAgcmVzdWx0TGluZXMsCisgICAgICAgIFsKKyAgICAgICAgJyAgfSwnLAorICAg
ICAgICAnfScsCisgICAgICAgIF0KKyAgICAgICk7CisKKyAgICAgIHR4ICs9IGxpbmVzLmpvaW4o
J1xuJyk7CisKKyAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RSZXN1
bHRzQXNUZXh0Iik7CisgICAgICB3aGlsZSAoci5maXJzdENoaWxkKSByLnJlbW92ZUNoaWxkKHIu
Zmlyc3RDaGlsZCk7CisgICAgICByLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHR4KSk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hvd1RleHRTdW1tYXJ5Iiku
ZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkbFRleHRT
dW1tYXJ5IikuZGlzYWJsZWQgPSBmYWxzZTsKKworICAgICAgdGhpcy5wb3N0UmVzdWx0c1RvU2Vy
dmVyKHR4KTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZXJyb3IiKTsKKyAgICAgIGUuaW5uZXJIVE1MID0gbXNnOworICAgICAgdGhpcy5wb3N0
UmVzdWx0c1RvU2VydmVyKG1zZyk7CisgICAgfQorICB9OworCisgIFJlcG9ydGVyLnByb3RvdHlw
ZS5wb3N0VGVzdFN0YXJ0VG9TZXJ2ZXIgPSBmdW5jdGlvbihyZXN1bHRUZXh0KSB7CisgICAgdGhp
cy5zdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgIGlmKE9QVElPTlMucG9zdFJlc3VsdHMgPT0g
dW5kZWZpbmVkIHx8IE9QVElPTlMucG9zdFJlc3VsdHMgPT0gMCkgeworICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3Bl
bignUE9TVCcsICIvc3RhcnQiLCB0cnVlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgfTsKKwor
ICBSZXBvcnRlci5wcm90b3R5cGUucG9zdFJlc3VsdHNUb1NlcnZlciA9IGZ1bmN0aW9uKHJlc3Vs
dFRleHQpIHsKKyAgICBpZihPUFRJT05TLnBvc3RSZXN1bHRzID09IHVuZGVmaW5lZCB8fCBPUFRJ
T05TLnBvc3RSZXN1bHRzID09IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oJ1BPU1QnLCAiL2Zpbmlz
aCIsIHRydWUpOworICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAidGV4
dC9wbGFpbiIpOworICAgIHhoci5zZW5kKHJlc3VsdFRleHQpOworICB9OworCisgIFJlcG9ydGVy
LnByb3RvdHlwZS5yZWFkeSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBsb2FkaW5nID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmciKTsKKyAgICBsb2FkaW5nLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CisgICAgaWYgKCF0aGlzLm5vU2VsZWN0ZWRXZWJHTFZlcnNpb24pIHsKKyAgICAg
IHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnVuVGVzdHNCdXR0b24iKTsK
KyAgICAgIGJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgdGhpcy5leGVjdXRlTGlzdGVu
ZXJFdmVudHNfKCJyZWFkeSIpOworICAgIH0KKyAgfTsKKworICBSZXBvcnRlci5wcm90b3R5cGUu
cmVwb3J0RnVuYyA9IGZ1bmN0aW9uKHR5cGUsIHVybCwgbXNnLCBzdWNjZXNzLCBza2lwcGVkKSB7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICBjYXNlIHJlcG9ydFR5cGUuQUREX1BBR0U6Cisg
ICAgICAgIHJldHVybiB0aGlzLmFkZFBhZ2UobXNnKTsKKyAgICAgIGNhc2UgcmVwb3J0VHlwZS5S
RUFEWToKKyAgICAgICAgcmV0dXJuIHRoaXMucmVhZHkoKTsKKyAgICAgIGNhc2UgcmVwb3J0VHlw
ZS5TVEFSVF9QQUdFOgorICAgICAgICByZXR1cm4gdGhpcy5zdGFydFBhZ2UodXJsKTsKKyAgICAg
IGNhc2UgcmVwb3J0VHlwZS5URVNUX1JFU1VMVDoKKyAgICAgICAgcmV0dXJuIHRoaXMuYWRkUmVz
dWx0KHVybCwgbXNnLCBzdWNjZXNzLCBza2lwcGVkKTsKKyAgICAgIGNhc2UgcmVwb3J0VHlwZS5G
SU5JU0hfUEFHRToKKyAgICAgICAgcmV0dXJuIHRoaXMuZmluaXNoUGFnZSh1cmwsIHN1Y2Nlc3Mp
OworICAgICAgY2FzZSByZXBvcnRUeXBlLkZJTklTSEVEX0FMTF9URVNUUzoKKyAgICAgICAgcmV0
dXJuIHRoaXMuZGlzcGxheUZpbmFsUmVzdWx0cyhtc2csIHN1Y2Nlc3MpOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgdGhyb3cgJ3VuaGFuZGxlZCc7CisgICAgICAgIGJyZWFrOworICAgIH07Cisg
IH07CisKKyAgdmFyIGdldFVSTE9wdGlvbnMgPSBmdW5jdGlvbihvYmopIHsKKyAgICB2YXIgcyA9
IHdpbmRvdy5sb2NhdGlvbi5ocmVmOworICAgIHZhciBxID0gcy5pbmRleE9mKCI/Iik7CisgICAg
dmFyIGUgPSBzLmluZGV4T2YoIiMiKTsKKyAgICBpZiAoZSA8IDApIHsKKyAgICAgIGUgPSBzLmxl
bmd0aDsKKyAgICB9CisgICAgdmFyIHF1ZXJ5ID0gcy5zdWJzdHJpbmcocSArIDEsIGUpOworICAg
IHZhciBwYWlycyA9IHF1ZXJ5LnNwbGl0KCImIik7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8
IHBhaXJzLmxlbmd0aDsgKytpaSkgeworICAgICAgdmFyIGtleVZhbHVlID0gcGFpcnNbaWldLnNw
bGl0KCI9Iik7CisgICAgICB2YXIga2V5ID0ga2V5VmFsdWVbMF07CisgICAgICB2YXIgdmFsdWUg
PSBkZWNvZGVVUklDb21wb25lbnQoa2V5VmFsdWVbMV0pOworICAgICAgb2JqW2tleV0gPSB2YWx1
ZTsKKyAgICB9CisgIH07CisKKyAgZ2V0VVJMT3B0aW9ucyhPUFRJT05TKTsKKworICB2YXIgbWFr
ZVZlcnNpb25TZWxlY3QgPSBmdW5jdGlvbihjdXJyZW50VmVyc2lvbikgeworICAgIHZhciB2ZXJz
aW9uU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RWZXJzaW9uIik7CisgICAg
dmFyIGZvdW5kQ3VycmVudFZlcnNpb24gPSBmYWxzZTsKKyAgICB2YXIgbnVtZXJpY0N1cnJlbnRW
ZXJzaW9uID0gY3VycmVudFZlcnNpb24ucmVwbGFjZSgvW15cZC5dL2csICcnKTsKKworICAgIGZv
ciAodmFyIGkgaW4gdGVzdFZlcnNpb25zKSB7CisgICAgICB2YXIgdmVyc2lvbiA9IHRlc3RWZXJz
aW9uc1tpXTsKKyAgICAgIHZhciBudW1lcmljVmVyc2lvbiA9IHZlcnNpb24ucmVwbGFjZSgvW15c
ZC5dL2csICcnKTsKKyAgICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
cHRpb24iKTsKKyAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgbnVtZXJpY1ZlcnNp
b24pOworICAgICAgb3B0aW9uLmlubmVySFRNTCA9IHZlcnNpb247CisKKyAgICAgIGlmIChudW1l
cmljVmVyc2lvbiA9PSBudW1lcmljQ3VycmVudFZlcnNpb24pIHsKKyAgICAgICAgZm91bmRDdXJy
ZW50VmVyc2lvbiA9IHRydWU7CisgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7CisgICAg
ICB9CisKKyAgICAgIHZlcnNpb25TZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKKyAgICB9CisK
KyAgICAvLyBJZiB0aGUgdmVyc2lvbiByZXF1ZXN0ZWQgYnkgdGhlIHF1ZXJ5IHN0cmluZyBpc24n
dCBpbiB0aGUgbGlzdCBhZGQgaXQuCisgICAgaWYgKCFmb3VuZEN1cnJlbnRWZXJzaW9uKSB7Cisg
ICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAg
ICBvcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIG51bWVyaWNDdXJyZW50VmVyc2lvbik7Cisg
ICAgICBvcHRpb24uaW5uZXJIVE1MID0gY3VycmVudFZlcnNpb24gKyAiICh1bmtub3duKSI7Cisg
ICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlOworCisgICAgICB2ZXJzaW9uU2VsZWN0LmFwcGVu
ZENoaWxkKG9wdGlvbik7CisgICAgfQorCisgICAgdmVyc2lvblNlbGVjdC5hZGRFdmVudExpc3Rl
bmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihldikgeworICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYg
PSAiP3ZlcnNpb249IiArIHZlcnNpb25TZWxlY3QudmFsdWU7CisgICAgfSwgZmFsc2UpOworICB9
CisKKyAgbWFrZVZlcnNpb25TZWxlY3QoT1BUSU9OUy52ZXJzaW9uKTsKKworICAvLyBNYWtlIGlm
cmFtZXMKKyAgdmFyIGlmcmFtZXMgPSBbZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtaWZy
YW1lIildOworCisgIHZhciB0ZXN0UGF0aCA9ICIwMF90ZXN0X2xpc3QudHh0IjsKKyAgaWYgKE9Q
VElPTlMucm9vdCkgeworICAgIHRlc3RQYXRoID0gT1BUSU9OUy5yb290ICsgIi8iICsgdGVzdFBh
dGg7CisgIH0KKworICB2YXIgcmVwb3J0ZXIgPSBuZXcgUmVwb3J0ZXIoaWZyYW1lcyk7CisgIHZh
ciB0ZXN0SGFybmVzcyA9IG5ldyBXZWJHTFRlc3RIYXJuZXNzTW9kdWxlLlRlc3RIYXJuZXNzKAor
ICAgICAgaWZyYW1lcywKKyAgICAgIHRlc3RQYXRoLAorICAgICAgZnVuY3Rpb24odHlwZSwgdXJs
LCBtc2csIHN1Y2Nlc3MsIHNraXBwZWQpIHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydGVyLnJlcG9y
dEZ1bmModHlwZSwgdXJsLCBtc2csIHN1Y2Nlc3MsIHNraXBwZWQpOworICAgICAgfSwKKyAgICAg
IE9QVElPTlMpOworICByZXBvcnRlci5hZGRFdmVudExpc3RlbmVyKCJyZWFkeSIsIGZ1bmN0aW9u
KCkgeworICAgIC8vIFNldCB3aGljaCB0ZXN0cyB0byBpbmNsdWRlLgorICAgIGlmIChPUFRJT05T
LmluY2x1ZGUpIHsKKyAgICAgIHJlcG9ydGVyLmRpc2FibGVBbGxUZXN0cygpOworICAgICAgdmFy
IGluY2x1ZGVzID0gT1BUSU9OUy5pbmNsdWRlLnNwbGl0KCIsIikKKyAgICAgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCBpbmNsdWRlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgcmVwb3J0ZXIuZW5h
YmxlVGVzdChuZXcgUmVnRXhwKGluY2x1ZGVzW2lpXSkpOworICAgICAgfQorICAgIH0KKyAgICAv
LyBSZW1vdmUgdGVzdHMgYmFzZWQgb24gc2tpcD1yZTEscmUyIGluIFVSTC4KKyAgICBpZiAoT1BU
SU9OUy5za2lwKSB7CisgICAgICB2YXIgc2tpcHMgPSBPUFRJT05TLnNraXAuc3BsaXQoIiwiKQor
ICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNraXBzLmxlbmd0aDsgKytpaSkgeworICAgICAg
ICByZXBvcnRlci5kaXNhYmxlVGVzdChuZXcgUmVnRXhwKHNraXBzW2lpXSkpOworICAgICAgfQor
ICAgIH0KKyAgICAvLyBBdXRvIHJ1biB0aGUgdGVzdHMgaWYgdGhlIHJ1bj0xIGluIFVSTAorICAg
IGlmIChPUFRJT05TLnJ1biAhPSB1bmRlZmluZWQgJiYgT1BUSU9OUy5ydW4gIT0gMCkgeworICAg
ICAgcmVwb3J0ZXIucG9zdFRlc3RTdGFydFRvU2VydmVyKCk7CisgICAgICB0ZXN0SGFybmVzcy5y
dW5UZXN0cygpOworICAgIH0KKyAgfSk7CisgIHdpbmRvdy53ZWJnbFRlc3RIYXJuZXNzID0gdGVz
dEhhcm5lc3M7CisgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnVuVGVz
dHNCdXR0b24iKTsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgYnV0dG9uLm9uY2xpY2sg
PSBmdW5jdGlvbigpIHsKKyAgICBhdXRvU2Nyb2xsID0gYXV0b1Njcm9sbEVuYWJsZWQ7CisgICAg
cmVwb3J0ZXIucG9zdFRlc3RTdGFydFRvU2VydmVyKCk7CisgICAgdGVzdEhhcm5lc3MucnVuVGVz
dHMoKTsKKyAgfTsKKyAgdmFyIGF1dG9TY3JvbGxDaGVja2JveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJhdXRvU2Nyb2xsQ2hlY2tib3giKTsKKyAgYXV0b1Njcm9sbENoZWNrYm94LmNoZWNr
ZWQgPSBhdXRvU2Nyb2xsRW5hYmxlZDsKKyAgYXV0b1Njcm9sbENoZWNrYm94Lm9uY2xpY2sgPSBm
dW5jdGlvbigpIHsKKyAgICBhdXRvU2Nyb2xsRW5hYmxlZCA9IGF1dG9TY3JvbGxDaGVja2JveC5j
aGVja2VkOworICAgIGF1dG9TY3JvbGwgPSBhdXRvU2Nyb2xsRW5hYmxlZDsKKyAgfTsKKworICB2
YXIgaGlkZVBhc3NlZFNoZWV0ID0gY3JlYXRlU3R5bGVzaGVldCgpOworICB2YXIgaGlkZVBhc3Nl
ZENoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhpZGVQYXNzZWRDaGVja2JveCIp
OworICBoaWRlUGFzc2VkQ2hlY2tib3guY2hlY2tlZCA9IGZhbHNlOworICBoaWRlUGFzc2VkQ2hl
Y2tib3gub25jbGljayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBoaWRlUGFzc2VkVGVzdHMgPSBo
aWRlUGFzc2VkQ2hlY2tib3guY2hlY2tlZDsKKyAgICBpZiAoaGlkZVBhc3NlZFRlc3RzKSB7Cisg
ICAgICAgIGhpZGVQYXNzZWRTaGVldC5pbnNlcnRSdWxlKCIudGVzdHBhZ2VzdWNjZXNzIHsgZGlz
cGxheTogbm9uZTsgfSIsIDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGhpZGVQYXNzZWRTaGVl
dC5kZWxldGVSdWxlKDApOworICAgIH0KKyAgfTsKKworICB2YXIgcXVpY2tUZXN0TW9kZUNoZWNr
Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1aWNrVGVzdE1vZGVDaGVja2JveCIpOwor
ICBxdWlja1Rlc3RNb2RlQ2hlY2tib3guY2hlY2tlZCA9IHF1aWNrVGVzdE1vZGU7CisgIHF1aWNr
VGVzdE1vZGVDaGVja2JveC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CisgICAgcXVpY2tUZXN0TW9k
ZSA9IHF1aWNrVGVzdE1vZGVDaGVja2JveC5jaGVja2VkOworICB9OworCisgIHZhciB0ZXh0YnV0
dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNob3dUZXh0U3VtbWFyeSIpOworICB0ZXh0
YnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKKyAgICBsb2coImNsaWNrIik7CisgICAgdmFy
IGh0bWxkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFJlc3VsdHNIVE1MIik7Cisg
ICAgdmFyIHRleHRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFJlc3VsdHNUZXh0
Iik7CisgICAgaWYgKHRleHRkaXYuc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKKyAgICAgIHRl
eHRkaXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisgICAgICBodG1sZGl2LnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CisgICAgICB0ZXh0YnV0dG9uLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiZGlz
cGxheSBodG1sIHN1bW1hcnkiKTsKKyAgICB9IGVsc2UgeworICAgICAgdGV4dGRpdi5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOworICAgICAgaHRtbGRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
KyAgICAgIHRleHRidXR0b24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJkaXNwbGF5IHRleHQgc3Vt
bWFyeSIpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBkb3dubG9hZChmaWxlbmFtZSwgdGV4
dCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOworICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKCJocmVmIiwgImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04LCIgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCkpOworICAgIGVsZW1lbnQuc2V0QXR0cmli
dXRlKCJkb3dubG9hZCIsIGZpbGVuYW1lKTsKKyAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBlbGVt
ZW50LmNsaWNrKCk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTsKKyAg
fQorICB2YXIgZGx0ZXh0YnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRsVGV4dFN1
bW1hcnkiKTsKKyAgZGx0ZXh0YnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
dGV4dGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0c1RleHQiKTsKKyAg
ICBkb3dubG9hZCgid2ViZ2wtY29uZm9ybWFuY2UtIiArIE9QVElPTlMudmVyc2lvbiArICIudHh0
IiwgdGV4dGRpdi5pbm5lclRleHQudHJpbSgpKTsKKyAgfTsKKworICBpZiAocmVwb3J0ZXIubm9T
ZWxlY3RlZFdlYkdMVmVyc2lvbikgeworICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgIH0K
KyAgaWYgKHJlcG9ydGVyLm5vV2ViR0wpIHsKKyAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJub3dlYmdsIik7CisgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAg
cmVwb3J0ZXIucG9zdFJlc3VsdHNUb1NlcnZlcigiQnJvd3NlciBkb2VzIG5vdCBhcHBlYXIgdG8g
c3VwcG9ydCBXZWJHTCIpOworICB9IGVsc2UgaWYgKHJlcG9ydGVyLm5vU2VsZWN0ZWRXZWJHTFZl
cnNpb24pIHsKKyAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub3NlbGVj
dGVkd2ViZ2wiKTsKKyAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICByZXBvcnRlci5w
b3N0UmVzdWx0c1RvU2VydmVyKCJCcm93c2VyIGRvZXMgbm90IGFwcGVhciB0byBzdXBwb3J0IHRo
ZSBzZWxlY3RlZCB2ZXJzaW9uIG9mIFdlYkdMIik7CisgIH0KKworICBjb25zdCBpZnJhbWVDb250
YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lLWNvbnRhaW5lciIpOworICBj
b25zdCBpZnJhbWVUb2dnbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lLXRvZ2ds
ZSIpOworICBpZnJhbWVUb2dnbGUudmFsdWUgPSBpZnJhbWVUb2dnbGUuZ2V0QXR0cmlidXRlKCJk
YXRhLXZhbHVlLWhpZGRlbiIpOworICBpZnJhbWVUb2dnbGUub25jbGljayA9IGZ1bmN0aW9uKCkg
eworICAgIGNvbnN0IGV4cGFuZGVkID0gaWZyYW1lVG9nZ2xlLm15RXhwYW5kZWQgPSAhaWZyYW1l
VG9nZ2xlLm15RXhwYW5kZWQ7CisgICAgaWYgKGV4cGFuZGVkKSB7CisgICAgICBpZnJhbWVDb250
YWluZXIuY2xhc3NMaXN0LmFkZCgiaWZyYW1lLXNob3duIik7CisgICAgICBpZnJhbWVUb2dnbGUu
dmFsdWUgPSBpZnJhbWVUb2dnbGUuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbHVlLXNob3duIik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIGlmcmFtZUNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJpZnJh
bWUtc2hvd24iKTsKKyAgICAgIGlmcmFtZVRvZ2dsZS52YWx1ZSA9IGlmcmFtZVRvZ2dsZS5nZXRB
dHRyaWJ1dGUoImRhdGEtdmFsdWUtaGlkZGVuIik7CisgICAgfQorICB9OworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorCis8ZGl2IGlkPSJ0ZXN0bGlzdCI+
CisgIDxkaXYgaWQ9InRlc3RSZXN1bHRzSFRNTCI+CisgICAgPHVsIGlkPSJyZXN1bHRzIj4KKyAg
ICA8L3VsPgorICA8L2Rpdj4KKyAgPGRpdiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGlkPSJ0ZXN0
UmVzdWx0c1RleHQiPgorICAgIDxwcmUgaWQ9InRlc3RSZXN1bHRzQXNUZXh0Ij48L3ByZT4KKyAg
PC9kaXY+Cis8L2Rpdj4gPCEtLSBlbmQgb2YgY29udGFpbmVyIC0tPgorCis8ZGl2IGlkPSJpZnJh
bWUtY29udGFpbmVyIj4KKyAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgZGF0YS12YWx1ZS1oaWRkZW49
IuKXhCIgZGF0YS12YWx1ZS1zaG93bj0i4pa6IiBpZD0iaWZyYW1lLXRvZ2dsZSIgYXJpYS1oaWRk
ZW49InRydWUiCisgID48aWZyYW1lIGlkPSJ0ZXN0LWlmcmFtZSI+PC9pZnJhbWU+Cis8L2Rpdj4K
KworPGRpdiBpZD0iaGVhZGVyIj4KKyAgPGRpdiBpZD0iaW5mbyI+CisgICAgPGRpdiBzdHlsZT0i
dGV4dC1hbGlnbjpjZW50ZXIiPgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy93ZWJnbC1sb2dv
LnBuZyIgYWx0PSJXZWJHTCIgaWQ9ImxvZ28iLz4KKyAgICAgIDxici8+CisgICAgICBDb25mb3Jt
YW5jZSBUZXN0IFJ1bm5lcgorICAgIDwvZGl2PgorICAgIFZlcnNpb24KKyAgICA8c2VsZWN0IGlk
PSJ0ZXN0VmVyc2lvbiI+CisgICAgPC9zZWxlY3Q+CisgICAgPGEgaHJlZj0iLi4vLi4vY29uZm9y
bWFuY2Utc3VpdGVzLyI+KG9sZGVyIHZlcnNpb25zPyk8L2E+CisgICAgPGJyLz4KKyAgICA8aW5w
dXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icnVuIHRlc3RzIiBpZD0icnVuVGVzdHNCdXR0b24iLz4K
KyAgICA8bGFiZWwgZm9yPSJhdXRvU2Nyb2xsQ2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2Jv
eCIgaWQ9ImF1dG9TY3JvbGxDaGVja2JveCIvPmF1dG8gc2Nyb2xsPC9sYWJlbD4KKyAgICA8bGFi
ZWwgZm9yPSJoaWRlUGFzc2VkQ2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Imhp
ZGVQYXNzZWRDaGVja2JveCIvPmhpZGUgcGFzc2VkPC9sYWJlbD4KKyAgICA8bGFiZWwgZm9yPSJx
dWlja1Rlc3RNb2RlQ2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InF1aWNrVGVz
dE1vZGVDaGVja2JveCIvPnF1aWNrIHRlc3QgbW9kZTwvbGFiZWw+CisgICAgPGJyLz4KKyAgICA8
aW5wdXQgdHlwZT0iYnV0dG9uIiBkaXNhYmxlZCB2YWx1ZT0ic2hvdyB0ZXh0IHN1bW1hcnkiIGlk
PSJzaG93VGV4dFN1bW1hcnkiLz4KKyAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBkaXNhYmxlZCB2
YWx1ZT0iZG93bmxvYWQgdGV4dCIgaWQ9ImRsVGV4dFN1bW1hcnkiLz4KKyAgICA8ZGl2IGlkPSJu
b3dlYmdsIiBjbGFzcz0ibm93ZWJnbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KKyAgICAgIFRo
aXMgYnJvd3NlciBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBXZWJHTAorICAgIDwvZGl2Pgor
ICAgIDxkaXYgaWQ9Im5vc2VsZWN0ZWR3ZWJnbCIgY2xhc3M9Im5vd2ViZ2wiIHN0eWxlPSJkaXNw
bGF5OiBub25lOyI+CisgICAgICBUaGlzIGJyb3dzZXIgZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBv
cnQgdGhlIHNlbGVjdGVkIHZlcnNpb24gb2YgV2ViR0wKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlk
PSJsb2FkaW5nIj4KKyAgICAgIExvYWRpbmcgVGVzdHMuLi4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGlkPSJmdWxscmVzdWx0cyI+CisgICAgPC9kaXY+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJlcnJv
ci13cmFwIj4KKyAgICA8cHJlIGlkPSJlcnJvciI+PC9wcmU+CisgIDwvZGl2PgorPC9kaXY+IDwh
LS0gZW5kIG9mIGhlYWRlciAtLT4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="443177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>